From a65c77add5bfae79e8d94421bd6ae4ee86883b2f Mon Sep 17 00:00:00 2001 From: johnman Date: Tue, 31 Oct 2023 10:27:53 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20built-on?= =?UTF-8?q?-openfin/workspace-starter@5132e9db20a6c6e221c07d4a3a40f94581a6?= =?UTF-8?q?a49f=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workspace-platform-starter/js/provider.bundle.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/workspace/v14.0.0/workspace-platform-starter/js/provider.bundle.js b/workspace/v14.0.0/workspace-platform-starter/js/provider.bundle.js index d172e59291..29bd1c8b42 100644 --- a/workspace/v14.0.0/workspace-platform-starter/js/provider.bundle.js +++ b/workspace/v14.0.0/workspace-platform-starter/js/provider.bundle.js @@ -12461,6 +12461,14 @@ function overrideCallback(WorkspacePlatformProvider, platformProviderSettings, v * Create a class which overrides the platform provider. */ class Override extends WorkspacePlatformProvider { + /** + * Supports launching a manifest into a platform. + * @param payload The manifest to load into the platform + * @returns nothing. + */ + async launchIntoPlatform(payload) { + logger.warn("launchIntoPlatform called. Please use the initOptionsProvider for loading content into the platform.", payload); + } /** * Gets the current state of windows and their views and returns a snapshot object containing that info. * @param payload Undefined unless you've defined a custom `getSnapshot` protocol. @@ -16927,4 +16935,4 @@ async function init() { var __webpack_exports__init = __webpack_exports__.init; export { __webpack_exports__init as init }; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJO0FBQ0o7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTtBQUNKO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixrREFBa0Q7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxvQ0FBb0M7O0FBRXJDO0FBQ0E7QUFDQSxjQUFjLDBMQUEwTDtBQUN4TTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxzQkFBc0I7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixPQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0VBQXNFLGFBQWE7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7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QUFDLENBQUM7cUJBQ0QsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQ2xCLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0RBQXNELEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQzlFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxrRUFBa0UsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDekYsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxDQUFDO1lBRUosbUZBQW1GO1lBQ25GLHNDQUFzQztZQUN0QyxrRUFBa0IsRUFBRTtpQkFDbEIsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0NBQW9DLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNqQjtnQkFDRCxPQUFPLE9BQU8sQ0FBQztZQUNoQixDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ2xCLE1BQU0sQ0FBQyxLQUFLLENBQUMscURBQXFELEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzdFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0tBQ0g7WUFBUztRQUNULE1BQU0sc0VBQTRCLEVBQUUsQ0FBQztLQUNyQztBQUNGLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi4vLi4vbm9kZV9tb2R1bGVzL0BmaW5vcy9mZGMzL2Rpc3QvZmRjMy5lc20uanMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4uLy4uL25vZGVfbW9kdWxlcy9Ab3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4uLy4uL25vZGVfbW9kdWxlcy9Ab3BlbmZpbi93b3Jrc3BhY2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4uLy4uL25vZGVfbW9kdWxlcy9Ab3BlbmZpbi93b3Jrc3BhY2Uvbm90aWZpY2F0aW9ucy5qcyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9hY3Rpb25zLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL2FuYWx5dGljcy50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9hcHBzLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL2F1dGgtZmxvdy50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9hdXRoLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL2Jvb3RzdHJhcHBlci50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9idXR0b25zLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL2NvbmRpdGlvbnMudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvY29ubmVjdGlvbnMudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvZGVmYXVsdC1wYWxldHRlcy50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9kaXJlY3RvcnkudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvZW5kcG9pbnQudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvZmF2b3JpdGUudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvZmRjMy8xLjIvbWFwcGVyLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL2ZkYzMvMi4wL21hcHBlci50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9pbml0LW9wdGlvbnMudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvaW50ZWdyYXRpb25zLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL2xhdW5jaC50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9saWZlY3ljbGUudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvbG9nZ2VyLXByb3ZpZGVyLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL21hbmlmZXN0LXR5cGVzLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL21lbnUudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvbW9kdWxlcy50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9wbGF0Zm9ybS9icm93c2VyLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3BsYXRmb3JtL2ludGVyb3Bicm9rZXIudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvcGxhdGZvcm0vcGxhdGZvcm0tbWFwcGVyLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3BsYXRmb3JtL3BsYXRmb3JtLW92ZXJyaWRlLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3BsYXRmb3JtL3BsYXRmb3JtLXNwbGFzaC50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9wbGF0Zm9ybS9wbGF0Zm9ybS12ZXJzaW9uLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3BsYXRmb3JtL3BsYXRmb3JtLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3NldHRpbmdzLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3NoYXBlcy9mYXZvcml0ZS1zaGFwZXMudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvc2hhcGVzL3RoZW1lLXNoYXBlcy50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9zaGFyZS50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9zbmFwc2hvdC1zb3VyY2UudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvdGVtcGxhdGVzLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3RoZW1lcy50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay90cmF5LnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3V0aWxzLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3ZlcnNpb24udHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvd29ya3NwYWNlL2RvY2sudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvd29ya3NwYWNlL2hvbWUudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvd29ya3NwYWNlL2xvdy1jb2RlLWludGVncmF0aW9ucy50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay93b3Jrc3BhY2Uvbm90aWZpY2F0aW9ucy50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay93b3Jrc3BhY2Uvc3RvcmUudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvcHJvdmlkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXHJcbiAqIENvcHlyaWdodCBGSU5PUyBGREMzIGNvbnRyaWJ1dG9ycyAtIHNlZSBOT1RJQ0UgZmlsZVxyXG4gKi9cbi8qKiBDb25zdGFudHMgcmVwcmVzZW50aW5nIHRoZSBlcnJvcnMgdGhhdCBjYW4gYmUgZW5jb3VudGVyZWQgd2hlbiBjYWxsaW5nIHRoZSBgb3BlbmAgbWV0aG9kIG9uIHRoZSBEZXNrdG9wQWdlbnQgb2JqZWN0IChgZmRjM2ApLiAqL1xudmFyIE9wZW5FcnJvcjtcbihmdW5jdGlvbiAoT3BlbkVycm9yKSB7XG4gIC8qKiBSZXR1cm5lZCBpZiB0aGUgc3BlY2lmaWVkIGFwcGxpY2F0aW9uIGlzIG5vdCBmb3VuZC4qL1xuICBPcGVuRXJyb3JbXCJBcHBOb3RGb3VuZFwiXSA9IFwiQXBwTm90Rm91bmRcIjtcbiAgLyoqIFJldHVybmVkIGlmIHRoZSBzcGVjaWZpZWQgYXBwbGljYXRpb24gZmFpbHMgdG8gbGF1bmNoIGNvcnJlY3RseS4qL1xuICBPcGVuRXJyb3JbXCJFcnJvck9uTGF1bmNoXCJdID0gXCJFcnJvck9uTGF1bmNoXCI7XG4gIC8qKiBSZXR1cm5lZCBpZiB0aGUgc3BlY2lmaWVkIGFwcGxpY2F0aW9uIGxhdW5jaGVzIGJ1dCBmYWlscyB0byBhZGQgYSBjb250ZXh0IGxpc3RlbmVyIGluIG9yZGVyIHRvIHJlY2VpdmUgdGhlIGNvbnRleHQgcGFzc2VkIHRvIHRoZSBgZmRjMy5vcGVuYCBjYWxsLiovXG4gIE9wZW5FcnJvcltcIkFwcFRpbWVvdXRcIl0gPSBcIkFwcFRpbWVvdXRcIjtcbiAgLyoqIFJldHVybmVkIGlmIHRoZSBGREMzIGRlc2t0b3AgYWdlbnQgaW1wbGVtZW50YXRpb24gaXMgbm90IGN1cnJlbnRseSBhYmxlIHRvIGhhbmRsZSB0aGUgcmVxdWVzdC4qL1xuICBPcGVuRXJyb3JbXCJSZXNvbHZlclVuYXZhaWxhYmxlXCJdID0gXCJSZXNvbHZlclVuYXZhaWxhYmxlXCI7XG4gIC8qKiBSZXR1cm5lZCBpZiBhIGNhbGwgdG8gdGhlIGBvcGVuYCBmdW5jdGlvbiBpcyBtYWRlIHdpdGggYW4gaW52YWxpZCBjb250ZXh0IGFyZ3VtZW50LiBDb250ZXh0cyBzaG91bGQgYmUgT2JqZWN0cyB3aXRoIGF0IGxlYXN0IGEgYHR5cGVgIGZpZWxkIHRoYXQgaGFzIGEgYHN0cmluZ2AgdmFsdWUuKi9cbiAgT3BlbkVycm9yW1wiTWFsZm9ybWVkQ29udGV4dFwiXSA9IFwiTWFsZm9ybWVkQ29udGV4dFwiO1xufSkoT3BlbkVycm9yIHx8IChPcGVuRXJyb3IgPSB7fSkpO1xuLyoqIENvbnN0YW50cyByZXByZXNlbnRpbmcgdGhlIGVycm9ycyB0aGF0IGNhbiBiZSBlbmNvdW50ZXJlZCB3aGVuIGNhbGxpbmcgdGhlIGBmaW5kSW50ZW50YCwgYGZpbmRJbnRlbnRzQnlDb250ZXh0YCwgYHJhaXNlSW50ZW50YCBvciBgcmFpc2VJbnRlbnRGb3JDb250ZXh0YCBtZXRob2RzIG9uIHRoZSBEZXNrdG9wQWdlbnQgKGBmZGMzYCkuICovXG52YXIgUmVzb2x2ZUVycm9yO1xuKGZ1bmN0aW9uIChSZXNvbHZlRXJyb3IpIHtcbiAgLyoqIFNIT1VMRCBiZSByZXR1cm5lZCBpZiBubyBhcHBzIGFyZSBhdmFpbGFibGUgdGhhdCBjYW4gcmVzb2x2ZSB0aGUgaW50ZW50IGFuZCBjb250ZXh0IGNvbWJpbmF0aW9uLiovXG4gIFJlc29sdmVFcnJvcltcIk5vQXBwc0ZvdW5kXCJdID0gXCJOb0FwcHNGb3VuZFwiO1xuICAvKiogUmV0dXJuZWQgaWYgdGhlIEZEQzMgZGVza3RvcCBhZ2VudCBpbXBsZW1lbnRhdGlvbiBpcyBub3QgY3VycmVudGx5IGFibGUgdG8gaGFuZGxlIHRoZSByZXF1ZXN0LiovXG4gIFJlc29sdmVFcnJvcltcIlJlc29sdmVyVW5hdmFpbGFibGVcIl0gPSBcIlJlc29sdmVyVW5hdmFpbGFibGVcIjtcbiAgLyoqIFJldHVybmVkIGlmIHRoZSB1c2VyIGNhbmNlbGxlZCB0aGUgcmVzb2x1dGlvbiByZXF1ZXN0LCBmb3IgZXhhbXBsZSBieSBjbG9zaW5nIG9yIGNhbmNlbGxpbmcgYSByZXNvbHZlciBVSS4qL1xuICBSZXNvbHZlRXJyb3JbXCJVc2VyQ2FuY2VsbGVkXCJdID0gXCJVc2VyQ2FuY2VsbGVkUmVzb2x1dGlvblwiO1xuICAvKiogU0hPVUxEIGJlIHJldHVybmVkIGlmIGEgdGltZW91dCBjYW5jZWxzIGFuIGludGVudCByZXNvbHV0aW9uIHRoYXQgcmVxdWlyZWQgdXNlciBpbnRlcmFjdGlvbi4gUGxlYXNlIHVzZSBgUmVzb2x2ZXJVbmF2YWlsYWJsZWAgaW5zdGVhZCBmb3Igc2l0dWF0aW9ucyB3aGVyZSBhIHJlc29sdmVyIFVJIG9yIHNpbWlsYXIgZmFpbHMuKi9cbiAgUmVzb2x2ZUVycm9yW1wiUmVzb2x2ZXJUaW1lb3V0XCJdID0gXCJSZXNvbHZlclRpbWVvdXRcIjtcbiAgLyoqIFJldHVybmVkIGlmIGEgc3BlY2lmaWVkIHRhcmdldCBhcHBsaWNhdGlvbiBpcyBub3QgYXZhaWxhYmxlIG9yIGEgbmV3IGluc3RhbmNlIG9mIGl0IGNhbm5vdCBiZSBvcGVuZWQuICovXG4gIFJlc29sdmVFcnJvcltcIlRhcmdldEFwcFVuYXZhaWxhYmxlXCJdID0gXCJUYXJnZXRBcHBVbmF2YWlsYWJsZVwiO1xuICAvKiogUmV0dXJuZWQgaWYgYSBzcGVjaWZpZWQgdGFyZ2V0IGFwcGxpY2F0aW9uIGluc3RhbmNlIGlzIG5vdCBhdmFpbGFibGUsIGZvciBleGFtcGxlIGJlY2F1c2UgaXQgaGFzIGJlZW4gY2xvc2VkLiAqL1xuICBSZXNvbHZlRXJyb3JbXCJUYXJnZXRJbnN0YW5jZVVuYXZhaWxhYmxlXCJdID0gXCJUYXJnZXRJbnN0YW5jZVVuYXZhaWxhYmxlXCI7XG4gIC8qKiBSZXR1cm5lZCBpZiB0aGUgaW50ZW50IGFuZCBjb250ZXh0IGNvdWxkIG5vdCBiZSBkZWxpdmVyZWQgdG8gdGhlIHNlbGVjdGVkIGFwcGxpY2F0aW9uIG9yIGluc3RhbmNlLCBmb3IgZXhhbXBsZSBiZWNhdXNlIGl0IGhhcyBub3QgYWRkZWQgYW4gaW50ZW50IGhhbmRsZXIgd2l0aGluIGEgdGltZW91dC4qL1xuICBSZXNvbHZlRXJyb3JbXCJJbnRlbnREZWxpdmVyeUZhaWxlZFwiXSA9IFwiSW50ZW50RGVsaXZlcnlGYWlsZWRcIjtcbiAgLyoqIFJldHVybmVkIGlmIGEgY2FsbCB0byBvbmUgb2YgdGhlIGByYWlzZUludGVudGAgZnVuY3Rpb25zIGlzIG1hZGUgd2l0aCBhbiBpbnZhbGlkIGNvbnRleHQgYXJndW1lbnQuIENvbnRleHRzIHNob3VsZCBiZSBPYmplY3RzIHdpdGggYXQgbGVhc3QgYSBgdHlwZWAgZmllbGQgdGhhdCBoYXMgYSBgc3RyaW5nYCB2YWx1ZS4qL1xuICBSZXNvbHZlRXJyb3JbXCJNYWxmb3JtZWRDb250ZXh0XCJdID0gXCJNYWxmb3JtZWRDb250ZXh0XCI7XG59KShSZXNvbHZlRXJyb3IgfHwgKFJlc29sdmVFcnJvciA9IHt9KSk7XG52YXIgUmVzdWx0RXJyb3I7XG4oZnVuY3Rpb24gKFJlc3VsdEVycm9yKSB7XG4gIC8qKiBSZXR1cm5lZCBpZiB0aGUgaW50ZW50IGhhbmRsZXIgZXhpdGVkIHdpdGhvdXQgcmV0dXJuaW5nIGEgdmFsaWQgcmVzdWx0IChhIHByb21pc2UgcmVzb2x2aW5nIHRvIGEgQ29udGV4dCwgQ2hhbm5lbCBvYmplY3Qgb3Igdm9pZCkuICovXG4gIFJlc3VsdEVycm9yW1wiTm9SZXN1bHRSZXR1cm5lZFwiXSA9IFwiTm9SZXN1bHRSZXR1cm5lZFwiO1xuICAvKiogUmV0dXJuZWQgaWYgdGhlIEludGVudCBoYW5kbGVyIGZ1bmN0aW9uIHByb2Nlc3NpbmcgdGhlIHJhaXNlZCBpbnRlbnQgdGhyb3dzIGFuIGVycm9yIG9yIHJlamVjdHMgdGhlIFByb21pc2UgaXQgcmV0dXJuZWQuICovXG4gIFJlc3VsdEVycm9yW1wiSW50ZW50SGFuZGxlclJlamVjdGVkXCJdID0gXCJJbnRlbnRIYW5kbGVyUmVqZWN0ZWRcIjtcbn0pKFJlc3VsdEVycm9yIHx8IChSZXN1bHRFcnJvciA9IHt9KSk7XG52YXIgQ2hhbm5lbEVycm9yO1xuKGZ1bmN0aW9uIChDaGFubmVsRXJyb3IpIHtcbiAgLyoqIFJldHVybmVkIGlmIHRoZSBzcGVjaWZpZWQgY2hhbm5lbCBpcyBub3QgZm91bmQgd2hlbiBhdHRlbXB0aW5nIHRvIGpvaW4gYSBjaGFubmVsIHZpYSB0aGUgYGpvaW5Vc2VyQ2hhbm5lbGAgZnVuY3Rpb24gIG9mIHRoZSBEZXNrdG9wQWdlbnQgKGBmZGMzYCkuKi9cbiAgQ2hhbm5lbEVycm9yW1wiTm9DaGFubmVsRm91bmRcIl0gPSBcIk5vQ2hhbm5lbEZvdW5kXCI7XG4gIC8qKiBTSE9VTEQgYmUgcmV0dXJuZWQgd2hlbiBhIHJlcXVlc3QgdG8gam9pbiBhIHVzZXIgY2hhbm5lbCBvciB0byBhIHJldHJpZXZlIGEgQ2hhbm5lbCBvYmplY3QgdmlhIHRoZSBgam9pblVzZXJDaGFubmVsYCBvciBgZ2V0T3JDcmVhdGVDaGFubmVsYCBtZXRob2RzIG9mIHRoZSBEZXNrdG9wQWdlbnQgKGBmZGMzYCkgb2JqZWN0IGlzIGRlbmllZC4gKi9cbiAgQ2hhbm5lbEVycm9yW1wiQWNjZXNzRGVuaWVkXCJdID0gXCJBY2Nlc3NEZW5pZWRcIjtcbiAgLyoqIFNIT1VMRCBiZSByZXR1cm5lZCB3aGVuIGEgY2hhbm5lbCBjYW5ub3QgYmUgY3JlYXRlZCBvciByZXRyaWV2ZWQgdmlhIHRoZSBgZ2V0T3JDcmVhdGVDaGFubmVsYCBtZXRob2Qgb2YgdGhlIERlc2t0b3BBZ2VudCAoYGZkYzNgKS4qL1xuICBDaGFubmVsRXJyb3JbXCJDcmVhdGlvbkZhaWxlZFwiXSA9IFwiQ3JlYXRpb25GYWlsZWRcIjtcbiAgLyoqIFJldHVybmVkIGlmIGEgY2FsbCB0byB0aGUgYGJyb2FkY2FzdGAgZnVuY3Rpb25zIGlzIG1hZGUgd2l0aCBhbiBpbnZhbGlkIGNvbnRleHQgYXJndW1lbnQuIENvbnRleHRzIHNob3VsZCBiZSBPYmplY3RzIHdpdGggYXQgbGVhc3QgYSBgdHlwZWAgZmllbGQgdGhhdCBoYXMgYSBgc3RyaW5nYCB2YWx1ZS4qL1xuICBDaGFubmVsRXJyb3JbXCJNYWxmb3JtZWRDb250ZXh0XCJdID0gXCJNYWxmb3JtZWRDb250ZXh0XCI7XG59KShDaGFubmVsRXJyb3IgfHwgKENoYW5uZWxFcnJvciA9IHt9KSk7XG5cbmZ1bmN0aW9uIF9yZWdlbmVyYXRvclJ1bnRpbWUoKSB7XG4gIF9yZWdlbmVyYXRvclJ1bnRpbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGV4cG9ydHM7XG4gIH07XG4gIHZhciBleHBvcnRzID0ge30sXG4gICAgT3AgPSBPYmplY3QucHJvdG90eXBlLFxuICAgIGhhc093biA9IE9wLmhhc093blByb3BlcnR5LFxuICAgIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5IHx8IGZ1bmN0aW9uIChvYmosIGtleSwgZGVzYykge1xuICAgICAgb2JqW2tleV0gPSBkZXNjLnZhbHVlO1xuICAgIH0sXG4gICAgJFN5bWJvbCA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sID8gU3ltYm9sIDoge30sXG4gICAgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiLFxuICAgIGFzeW5jSXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLmFzeW5jSXRlcmF0b3IgfHwgXCJAQGFzeW5jSXRlcmF0b3JcIixcbiAgICB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG4gIGZ1bmN0aW9uIGRlZmluZShvYmosIGtleSwgdmFsdWUpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgICB3cml0YWJsZTogITBcbiAgICB9KSwgb2JqW2tleV07XG4gIH1cbiAgdHJ5IHtcbiAgICBkZWZpbmUoe30sIFwiXCIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBkZWZpbmUgPSBmdW5jdGlvbiAob2JqLCBrZXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gb2JqW2tleV0gPSB2YWx1ZTtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICB2YXIgcHJvdG9HZW5lcmF0b3IgPSBvdXRlckZuICYmIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gb3V0ZXJGbiA6IEdlbmVyYXRvcixcbiAgICAgIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKSxcbiAgICAgIGNvbnRleHQgPSBuZXcgQ29udGV4dCh0cnlMb2NzTGlzdCB8fCBbXSk7XG4gICAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGdlbmVyYXRvciwgXCJfaW52b2tlXCIsIHtcbiAgICAgIHZhbHVlOiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpXG4gICAgfSksIGdlbmVyYXRvcjtcbiAgfVxuICBmdW5jdGlvbiB0cnlDYXRjaChmbiwgb2JqLCBhcmcpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJub3JtYWxcIixcbiAgICAgICAgYXJnOiBmbi5jYWxsKG9iaiwgYXJnKVxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwidGhyb3dcIixcbiAgICAgICAgYXJnOiBlcnJcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIGV4cG9ydHMud3JhcCA9IHdyYXA7XG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG4gIGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fVxuICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbiAgZGVmaW5lKEl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mLFxuICAgIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG8gJiYgZ2V0UHJvdG8oZ2V0UHJvdG8odmFsdWVzKFtdKSkpO1xuICBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJiBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAhPT0gT3AgJiYgaGFzT3duLmNhbGwoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUsIGl0ZXJhdG9yU3ltYm9sKSAmJiAoSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSk7XG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9IEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHByb3RvdHlwZSkge1xuICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgIGRlZmluZShwcm90b3R5cGUsIG1ldGhvZCwgZnVuY3Rpb24gKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yLCBQcm9taXNlSW1wbCkge1xuICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgIGlmIChcInRocm93XCIgIT09IHJlY29yZC50eXBlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWNvcmQuYXJnLFxuICAgICAgICAgIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWUgJiYgXCJvYmplY3RcIiA9PSB0eXBlb2YgdmFsdWUgJiYgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSA/IFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpbnZva2UoXCJuZXh0XCIsIHZhbHVlLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgaW52b2tlKFwidGhyb3dcIiwgZXJyLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KSA6IFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24gKHVud3JhcHBlZCkge1xuICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZCwgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gaW52b2tlKFwidGhyb3dcIiwgZXJyb3IsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgIH1cbiAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuICAgIGRlZmluZVByb3BlcnR5KHRoaXMsIFwiX2ludm9rZVwiLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb24gKG1ldGhvZCwgYXJnKSB7XG4gICAgICAgIGZ1bmN0aW9uIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCkge1xuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUltcGwoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcmV2aW91c1Byb21pc2UgPSBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbihjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZywgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcpIDogY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICB2YXIgc3RhdGUgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChtZXRob2QsIGFyZykge1xuICAgICAgaWYgKFwiZXhlY3V0aW5nXCIgPT09IHN0YXRlKSB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgaWYgKFwiY29tcGxldGVkXCIgPT09IHN0YXRlKSB7XG4gICAgICAgIGlmIChcInRocm93XCIgPT09IG1ldGhvZCkgdGhyb3cgYXJnO1xuICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuICAgICAgfVxuICAgICAgZm9yIChjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZCwgY29udGV4dC5hcmcgPSBhcmc7Oykge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbCkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChcIm5leHRcIiA9PT0gY29udGV4dC5tZXRob2QpIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztlbHNlIGlmIChcInRocm93XCIgPT09IGNvbnRleHQubWV0aG9kKSB7XG4gICAgICAgICAgaWYgKFwic3VzcGVuZGVkU3RhcnRcIiA9PT0gc3RhdGUpIHRocm93IHN0YXRlID0gXCJjb21wbGV0ZWRcIiwgY29udGV4dC5hcmc7XG4gICAgICAgICAgY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZyk7XG4gICAgICAgIH0gZWxzZSBcInJldHVyblwiID09PSBjb250ZXh0Lm1ldGhvZCAmJiBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIHN0YXRlID0gXCJleGVjdXRpbmdcIjtcbiAgICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuICAgICAgICBpZiAoXCJub3JtYWxcIiA9PT0gcmVjb3JkLnR5cGUpIHtcbiAgICAgICAgICBpZiAoc3RhdGUgPSBjb250ZXh0LmRvbmUgPyBcImNvbXBsZXRlZFwiIDogXCJzdXNwZW5kZWRZaWVsZFwiLCByZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSBjb250aW51ZTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIFwidGhyb3dcIiA9PT0gcmVjb3JkLnR5cGUgJiYgKHN0YXRlID0gXCJjb21wbGV0ZWRcIiwgY29udGV4dC5tZXRob2QgPSBcInRocm93XCIsIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZE5hbWUgPSBjb250ZXh0Lm1ldGhvZCxcbiAgICAgIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW21ldGhvZE5hbWVdO1xuICAgIGlmICh1bmRlZmluZWQgPT09IG1ldGhvZCkgcmV0dXJuIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsLCBcInRocm93XCIgPT09IG1ldGhvZE5hbWUgJiYgZGVsZWdhdGUuaXRlcmF0b3IucmV0dXJuICYmIChjb250ZXh0Lm1ldGhvZCA9IFwicmV0dXJuXCIsIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkLCBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSwgXCJ0aHJvd1wiID09PSBjb250ZXh0Lm1ldGhvZCkgfHwgXCJyZXR1cm5cIiAhPT0gbWV0aG9kTmFtZSAmJiAoY29udGV4dC5tZXRob2QgPSBcInRocm93XCIsIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ1wiICsgbWV0aG9kTmFtZSArIFwiJyBtZXRob2RcIikpLCBDb250aW51ZVNlbnRpbmVsO1xuICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChtZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBjb250ZXh0LmFyZyk7XG4gICAgaWYgKFwidGhyb3dcIiA9PT0gcmVjb3JkLnR5cGUpIHJldHVybiBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIiwgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnLCBjb250ZXh0LmRlbGVnYXRlID0gbnVsbCwgQ29udGludWVTZW50aW5lbDtcbiAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7XG4gICAgcmV0dXJuIGluZm8gPyBpbmZvLmRvbmUgPyAoY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWUsIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2MsIFwicmV0dXJuXCIgIT09IGNvbnRleHQubWV0aG9kICYmIChjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiLCBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZCksIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsLCBDb250aW51ZVNlbnRpbmVsKSA6IGluZm8gOiAoY29udGV4dC5tZXRob2QgPSBcInRocm93XCIsIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpLCBjb250ZXh0LmRlbGVnYXRlID0gbnVsbCwgQ29udGludWVTZW50aW5lbCk7XG4gIH1cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7XG4gICAgICB0cnlMb2M6IGxvY3NbMF1cbiAgICB9O1xuICAgIDEgaW4gbG9jcyAmJiAoZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdKSwgMiBpbiBsb2NzICYmIChlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXSwgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdKSwgdGhpcy50cnlFbnRyaWVzLnB1c2goZW50cnkpO1xuICB9XG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCIsIGRlbGV0ZSByZWNvcmQuYXJnLCBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuICB9XG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbe1xuICAgICAgdHJ5TG9jOiBcInJvb3RcIlxuICAgIH1dLCB0cnlMb2NzTGlzdC5mb3JFYWNoKHB1c2hUcnlFbnRyeSwgdGhpcyksIHRoaXMucmVzZXQoITApO1xuICB9XG4gIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbaXRlcmF0b3JTeW1ib2xdO1xuICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSByZXR1cm4gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG4gICAgICBpZiAoXCJmdW5jdGlvblwiID09IHR5cGVvZiBpdGVyYWJsZS5uZXh0KSByZXR1cm4gaXRlcmFibGU7XG4gICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcbiAgICAgICAgdmFyIGkgPSAtMSxcbiAgICAgICAgICBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICAgIGZvciAoOyArK2kgPCBpdGVyYWJsZS5sZW5ndGg7KSBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSByZXR1cm4gbmV4dC52YWx1ZSA9IGl0ZXJhYmxlW2ldLCBuZXh0LmRvbmUgPSAhMSwgbmV4dDtcbiAgICAgICAgICAgIHJldHVybiBuZXh0LnZhbHVlID0gdW5kZWZpbmVkLCBuZXh0LmRvbmUgPSAhMCwgbmV4dDtcbiAgICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG5leHQ6IGRvbmVSZXN1bHRcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGRvbmVSZXN1bHQoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBkb25lOiAhMFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBkZWZpbmVQcm9wZXJ0eShHcCwgXCJjb25zdHJ1Y3RvclwiLCB7XG4gICAgdmFsdWU6IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLFxuICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgfSksIGRlZmluZVByb3BlcnR5KEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBcImNvbnN0cnVjdG9yXCIsIHtcbiAgICB2YWx1ZTogR2VuZXJhdG9yRnVuY3Rpb24sXG4gICAgY29uZmlndXJhYmxlOiAhMFxuICB9KSwgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBkZWZpbmUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvckZ1bmN0aW9uXCIpLCBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbiAoZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGdlbkZ1biAmJiBnZW5GdW4uY29uc3RydWN0b3I7XG4gICAgcmV0dXJuICEhY3RvciAmJiAoY3RvciA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHwgXCJHZW5lcmF0b3JGdW5jdGlvblwiID09PSAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpKTtcbiAgfSwgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24gKGdlbkZ1bikge1xuICAgIHJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgOiAoZ2VuRnVuLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBkZWZpbmUoZ2VuRnVuLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKSksIGdlbkZ1bi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEdwKSwgZ2VuRnVuO1xuICB9LCBleHBvcnRzLmF3cmFwID0gZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiB7XG4gICAgICBfX2F3YWl0OiBhcmdcbiAgICB9O1xuICB9LCBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpLCBkZWZpbmUoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUsIGFzeW5jSXRlcmF0b3JTeW1ib2wsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSksIGV4cG9ydHMuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3IsIGV4cG9ydHMuYXN5bmMgPSBmdW5jdGlvbiAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QsIFByb21pc2VJbXBsKSB7XG4gICAgdm9pZCAwID09PSBQcm9taXNlSW1wbCAmJiAoUHJvbWlzZUltcGwgPSBQcm9taXNlKTtcbiAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpLCBQcm9taXNlSW1wbCk7XG4gICAgcmV0dXJuIGV4cG9ydHMuaXNHZW5lcmF0b3JGdW5jdGlvbihvdXRlckZuKSA/IGl0ZXIgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgIH0pO1xuICB9LCBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApLCBkZWZpbmUoR3AsIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvclwiKSwgZGVmaW5lKEdwLCBpdGVyYXRvclN5bWJvbCwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KSwgZGVmaW5lKEdwLCBcInRvU3RyaW5nXCIsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IEdlbmVyYXRvcl1cIjtcbiAgfSksIGV4cG9ydHMua2V5cyA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICB2YXIgb2JqZWN0ID0gT2JqZWN0KHZhbCksXG4gICAgICBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkga2V5cy5wdXNoKGtleSk7XG4gICAgcmV0dXJuIGtleXMucmV2ZXJzZSgpLCBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgZm9yICg7IGtleXMubGVuZ3RoOykge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHJldHVybiBuZXh0LnZhbHVlID0ga2V5LCBuZXh0LmRvbmUgPSAhMSwgbmV4dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0LmRvbmUgPSAhMCwgbmV4dDtcbiAgICB9O1xuICB9LCBleHBvcnRzLnZhbHVlcyA9IHZhbHVlcywgQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IENvbnRleHQsXG4gICAgcmVzZXQ6IGZ1bmN0aW9uIChza2lwVGVtcFJlc2V0KSB7XG4gICAgICBpZiAodGhpcy5wcmV2ID0gMCwgdGhpcy5uZXh0ID0gMCwgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZCwgdGhpcy5kb25lID0gITEsIHRoaXMuZGVsZWdhdGUgPSBudWxsLCB0aGlzLm1ldGhvZCA9IFwibmV4dFwiLCB0aGlzLmFyZyA9IHVuZGVmaW5lZCwgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSksICFza2lwVGVtcFJlc2V0KSBmb3IgKHZhciBuYW1lIGluIHRoaXMpIFwidFwiID09PSBuYW1lLmNoYXJBdCgwKSAmJiBoYXNPd24uY2FsbCh0aGlzLCBuYW1lKSAmJiAhaXNOYU4oK25hbWUuc2xpY2UoMSkpICYmICh0aGlzW25hbWVdID0gdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIHN0b3A6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuZG9uZSA9ICEwO1xuICAgICAgdmFyIHJvb3RSZWNvcmQgPSB0aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtcbiAgICAgIGlmIChcInRocm93XCIgPT09IHJvb3RSZWNvcmQudHlwZSkgdGhyb3cgcm9vdFJlY29yZC5hcmc7XG4gICAgICByZXR1cm4gdGhpcy5ydmFsO1xuICAgIH0sXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uIChleGNlcHRpb24pIHtcbiAgICAgIGlmICh0aGlzLmRvbmUpIHRocm93IGV4Y2VwdGlvbjtcbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICByZXR1cm4gcmVjb3JkLnR5cGUgPSBcInRocm93XCIsIHJlY29yZC5hcmcgPSBleGNlcHRpb24sIGNvbnRleHQubmV4dCA9IGxvYywgY2F1Z2h0ICYmIChjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiLCBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZCksICEhY2F1Z2h0O1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV0sXG4gICAgICAgICAgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgaWYgKFwicm9vdFwiID09PSBlbnRyeS50cnlMb2MpIHJldHVybiBoYW5kbGUoXCJlbmRcIik7XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG4gICAgICAgICAgdmFyIGhhc0NhdGNoID0gaGFzT3duLmNhbGwoZW50cnksIFwiY2F0Y2hMb2NcIiksXG4gICAgICAgICAgICBoYXNGaW5hbGx5ID0gaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKTtcbiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCAhMCk7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsICEwKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNGaW5hbGx5KSB0aHJvdyBuZXcgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgYWJydXB0OiBmdW5jdGlvbiAodHlwZSwgYXJnKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiYgaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKSAmJiB0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmaW5hbGx5RW50cnkgJiYgKFwiYnJlYWtcIiA9PT0gdHlwZSB8fCBcImNvbnRpbnVlXCIgPT09IHR5cGUpICYmIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYyAmJiAoZmluYWxseUVudHJ5ID0gbnVsbCk7XG4gICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJldHVybiByZWNvcmQudHlwZSA9IHR5cGUsIHJlY29yZC5hcmcgPSBhcmcsIGZpbmFsbHlFbnRyeSA/ICh0aGlzLm1ldGhvZCA9IFwibmV4dFwiLCB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYywgQ29udGludWVTZW50aW5lbCkgOiB0aGlzLmNvbXBsZXRlKHJlY29yZCk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gKHJlY29yZCwgYWZ0ZXJMb2MpIHtcbiAgICAgIGlmIChcInRocm93XCIgPT09IHJlY29yZC50eXBlKSB0aHJvdyByZWNvcmQuYXJnO1xuICAgICAgcmV0dXJuIFwiYnJlYWtcIiA9PT0gcmVjb3JkLnR5cGUgfHwgXCJjb250aW51ZVwiID09PSByZWNvcmQudHlwZSA/IHRoaXMubmV4dCA9IHJlY29yZC5hcmcgOiBcInJldHVyblwiID09PSByZWNvcmQudHlwZSA/ICh0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29yZC5hcmcsIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIiwgdGhpcy5uZXh0ID0gXCJlbmRcIikgOiBcIm5vcm1hbFwiID09PSByZWNvcmQudHlwZSAmJiBhZnRlckxvYyAmJiAodGhpcy5uZXh0ID0gYWZ0ZXJMb2MpLCBDb250aW51ZVNlbnRpbmVsO1xuICAgIH0sXG4gICAgZmluaXNoOiBmdW5jdGlvbiAoZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSByZXR1cm4gdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyksIHJlc2V0VHJ5RW50cnkoZW50cnkpLCBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2F0Y2g6IGZ1bmN0aW9uICh0cnlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcbiAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAoXCJ0aHJvd1wiID09PSByZWNvcmQudHlwZSkge1xuICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuICAgIH0sXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24gKGl0ZXJhYmxlLCByZXN1bHROYW1lLCBuZXh0TG9jKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZSA9IHtcbiAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG4gICAgICAgIHJlc3VsdE5hbWU6IHJlc3VsdE5hbWUsXG4gICAgICAgIG5leHRMb2M6IG5leHRMb2NcbiAgICAgIH0sIFwibmV4dFwiID09PSB0aGlzLm1ldGhvZCAmJiAodGhpcy5hcmcgPSB1bmRlZmluZWQpLCBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cbiAgfSwgZXhwb3J0cztcbn1cbmZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywga2V5LCBhcmcpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7XG4gICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZWplY3QoZXJyb3IpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoaW5mby5kb25lKSB7XG4gICAgcmVzb2x2ZSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICB9XG59XG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcyxcbiAgICAgIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF90aHJvdyhlcnIpIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIGVycik7XG4gICAgICB9XG4gICAgICBfbmV4dCh1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9O1xufVxuXG52YXIgREVGQVVMVF9USU1FT1VUID0gNTAwMDtcbnZhciBVbmF2YWlsYWJsZUVycm9yID0gLyojX19QVVJFX18qL25ldyBFcnJvcignRkRDMyBEZXNrdG9wQWdlbnQgbm90IGF2YWlsYWJsZSBhdCBgd2luZG93LmZkYzNgLicpO1xudmFyIFRpbWVvdXRFcnJvciA9IC8qI19fUFVSRV9fKi9uZXcgRXJyb3IoJ1RpbWVkIG91dCB3YWl0aW5nIGZvciBgZmRjM1JlYWR5YCBldmVudC4nKTtcbnZhciBVbmV4cGVjdGVkRXJyb3IgPSAvKiNfX1BVUkVfXyovbmV3IEVycm9yKCdgZmRjM1JlYWR5YCBldmVudCBmaXJlZCwgYnV0IGB3aW5kb3cuZmRjM2Agbm90IHNldCB0byBEZXNrdG9wQWdlbnQuJyk7XG5mdW5jdGlvbiByZWplY3RJZk5vR2xvYmFsKGYpIHtcbiAgcmV0dXJuIHdpbmRvdy5mZGMzID8gZigpIDogUHJvbWlzZS5yZWplY3QoVW5hdmFpbGFibGVFcnJvcik7XG59XG4vKipcclxuICogVXRpbGl0eSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBwcm9taXNlIHRoYXQgd2lsbCByZXNvbHZlIGltbWVhZGlhdGVseVxyXG4gKiBpZiB0aGUgZGVza3RvcCBhZ2VudCBBUEkgaXMgZm91bmQgYXQgYHdpbmRvdy5mZGMzYC4gSWYgdGhlIEFQSSBpcyBmb3VuZCxcclxuICogdGhlIHByb21pc2Ugd2lsbCByZXNvbHZlIHdoZW4gdGhlIGBmZGMzUmVhZHlgIGV2ZW50IGlzIHJlY2VpdmVkIG9yIGlmIGl0XHJcbiAqIGlzIGZvdW5kIGF0IHRoZSBlbmQgb2YgdGhlIHNwZWNpZmllZCB0aW1lb3V0LiBJZiB0aGUgQVBJIGlzIG5vdCBmb3VuZCwgaXRcclxuICogd2lsbCByZWplY3Qgd2l0aCBhbiBlcnJvci5cclxuICpcclxuICogYGBgamF2YXNjcmlwdFxyXG4gKiBhd2FpdCBmZGMzUmVhZHkoKTtcclxuICogY29uc3QgaW50ZW50TGlzdGVuZXIgPSBhd2FpdCBhZGRJbnRlbnRMaXN0ZW5lcihcIlZpZXdDaGFydFwiLCBpbnRlbnRIYW5kbGVyRm4pO1xyXG4gKiBgYGBcclxuICpcclxuICogQHBhcmFtIHdhaXRGb3JNcyBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciB0aGUgRkRDMyBBUEkgdG8gYmVcclxuICogcmVhZHkuIERlZmF1bHRzIHRvIDUgc2Vjb25kcy5cclxuICovXG52YXIgZmRjM1JlYWR5ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgdmFyIF9yZWYgPSAvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKHdhaXRGb3JNcykge1xuICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIGlmICh3YWl0Rm9yTXMgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgd2FpdEZvck1zID0gREVGQVVMVF9USU1FT1VUO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIC8vIGlmIHRoZSBnbG9iYWwgaXMgYWxyZWFkeSBhdmFpbGFibGUgcmVzb2x2ZSBpbW1lZGlhdGVseVxuICAgICAgICAgICAgaWYgKHdpbmRvdy5mZGMzKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIGlmIGl0cyBub3QgYXZhaWxhYmxlIHNldHVwIGEgdGltZW91dCB0byByZXR1cm4gYSByZWplY3RlZCBwcm9taXNlXG4gICAgICAgICAgICAgIHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5mZGMzID8gcmVzb2x2ZSgpIDogcmVqZWN0KFRpbWVvdXRFcnJvcik7XG4gICAgICAgICAgICAgIH0sIHdhaXRGb3JNcyk7XG4gICAgICAgICAgICAgIC8vIGxpc3RlbiBmb3IgdGhlIGZkYzNSZWFkeSBldmVudFxuICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignZmRjM1JlYWR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICAgICAgICB3aW5kb3cuZmRjMyA/IHJlc29sdmUoKSA6IHJlamVjdChVbmV4cGVjdGVkRXJyb3IpO1xuICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSk7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICB9XG4gICAgfSwgX2NhbGxlZSk7XG4gIH0pKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZkYzNSZWFkeShfeCkge1xuICAgIHJldHVybiBfcmVmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG59KCk7XG5mdW5jdGlvbiBpc1N0cmluZyhhcHApIHtcbiAgcmV0dXJuICEhYXBwICYmIHR5cGVvZiBhcHAgPT09ICdzdHJpbmcnO1xufVxuZnVuY3Rpb24gb3BlbihhcHAsIGNvbnRleHQpIHtcbiAgaWYgKGlzU3RyaW5nKGFwcCkpIHtcbiAgICByZXR1cm4gcmVqZWN0SWZOb0dsb2JhbChmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gd2luZG93LmZkYzMub3BlbihhcHAsIGNvbnRleHQpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB3aW5kb3cuZmRjMy5vcGVuKGFwcCwgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGZpbmRJbnRlbnQoaW50ZW50LCBjb250ZXh0LCByZXN1bHRUeXBlKSB7XG4gIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gd2luZG93LmZkYzMuZmluZEludGVudChpbnRlbnQsIGNvbnRleHQsIHJlc3VsdFR5cGUpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGZpbmRJbnRlbnRzQnlDb250ZXh0KGNvbnRleHQsIHJlc3VsdFR5cGUpIHtcbiAgcmV0dXJuIHJlamVjdElmTm9HbG9iYWwoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB3aW5kb3cuZmRjMy5maW5kSW50ZW50c0J5Q29udGV4dChjb250ZXh0LCByZXN1bHRUeXBlKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBicm9hZGNhc3QoY29udGV4dCkge1xuICByZXR1cm4gcmVqZWN0SWZOb0dsb2JhbChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5mZGMzLmJyb2FkY2FzdChjb250ZXh0KTtcbiAgfSk7XG59XG5mdW5jdGlvbiByYWlzZUludGVudChpbnRlbnQsIGNvbnRleHQsIGFwcCkge1xuICBpZiAoaXNTdHJpbmcoYXBwKSkge1xuICAgIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB3aW5kb3cuZmRjMy5yYWlzZUludGVudChpbnRlbnQsIGNvbnRleHQsIGFwcCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlamVjdElmTm9HbG9iYWwoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHdpbmRvdy5mZGMzLnJhaXNlSW50ZW50KGludGVudCwgY29udGV4dCwgYXBwKTtcbiAgICB9KTtcbiAgfVxufVxuZnVuY3Rpb24gcmFpc2VJbnRlbnRGb3JDb250ZXh0KGNvbnRleHQsIGFwcCkge1xuICBpZiAoaXNTdHJpbmcoYXBwKSkge1xuICAgIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB3aW5kb3cuZmRjMy5yYWlzZUludGVudEZvckNvbnRleHQoY29udGV4dCwgYXBwKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVqZWN0SWZOb0dsb2JhbChmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gd2luZG93LmZkYzMucmFpc2VJbnRlbnRGb3JDb250ZXh0KGNvbnRleHQsIGFwcCk7XG4gICAgfSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGFkZEludGVudExpc3RlbmVyKGludGVudCwgaGFuZGxlcikge1xuICByZXR1cm4gcmVqZWN0SWZOb0dsb2JhbChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5mZGMzLmFkZEludGVudExpc3RlbmVyKGludGVudCwgaGFuZGxlcik7XG4gIH0pO1xufVxuZnVuY3Rpb24gYWRkQ29udGV4dExpc3RlbmVyKGNvbnRleHRUeXBlT3JIYW5kbGVyLCBoYW5kbGVyKSB7XG4gIC8vSGFuZGxlIChkZXByZWNhdGVkKSBmdW5jdGlvbiBzaWduYXR1cmUgdGhhdCBhbGxvd2VkIGNvbnRleHRUeXBlIGFyZ3VtZW50IHRvIGJlIG9taXR0ZWRcbiAgaWYgKHR5cGVvZiBjb250ZXh0VHlwZU9ySGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB3aW5kb3cuZmRjMy5hZGRDb250ZXh0TGlzdGVuZXIoY29udGV4dFR5cGVPckhhbmRsZXIsIGhhbmRsZXIpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB3aW5kb3cuZmRjMy5hZGRDb250ZXh0TGlzdGVuZXIobnVsbCwgY29udGV4dFR5cGVPckhhbmRsZXIpO1xuICAgIH0pO1xuICB9XG59XG5mdW5jdGlvbiBnZXRVc2VyQ2hhbm5lbHMoKSB7XG4gIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICAvL2ZhbGxiYWNrIHRvIGdldFN5c3RlbUNoYW5uZWxzIGZvciBGREMzIDwyLjAgaW1wbGVtZW50YXRpb25zXG4gICAgaWYgKHdpbmRvdy5mZGMzLmdldFVzZXJDaGFubmVscykge1xuICAgICAgcmV0dXJuIHdpbmRvdy5mZGMzLmdldFVzZXJDaGFubmVscygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gd2luZG93LmZkYzMuZ2V0U3lzdGVtQ2hhbm5lbHMoKTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gZ2V0U3lzdGVtQ2hhbm5lbHMoKSB7XG4gIC8vZmFsbGZvcndhcmQgdG8gZ2V0VXNlckNoYW5uZWxzIGZvciBGREMzIDIuMCsgaW1wbGVtZW50YXRpb25zXG4gIHJldHVybiBnZXRVc2VyQ2hhbm5lbHMoKTtcbn1cbmZ1bmN0aW9uIGpvaW5Vc2VyQ2hhbm5lbChjaGFubmVsSWQpIHtcbiAgcmV0dXJuIHJlamVjdElmTm9HbG9iYWwoZnVuY3Rpb24gKCkge1xuICAgIC8vZmFsbGJhY2sgdG8gam9pbkNoYW5uZWwgZm9yIEZEQzMgPDIuMCBpbXBsZW1lbnRhdGlvbnNcbiAgICBpZiAod2luZG93LmZkYzMuam9pblVzZXJDaGFubmVsKSB7XG4gICAgICByZXR1cm4gd2luZG93LmZkYzMuam9pblVzZXJDaGFubmVsKGNoYW5uZWxJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB3aW5kb3cuZmRjMy5qb2luQ2hhbm5lbChjaGFubmVsSWQpO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBqb2luQ2hhbm5lbChjaGFubmVsSWQpIHtcbiAgLy9mYWxsZm9yd2FyZCB0byBqb2luVXNlckNoYW5uZWwgZm9yIEZEQzMgMi4wKyBpbXBsZW1lbnRhdGlvbnNcbiAgcmV0dXJuIGpvaW5Vc2VyQ2hhbm5lbChjaGFubmVsSWQpO1xufVxuZnVuY3Rpb24gZ2V0T3JDcmVhdGVDaGFubmVsKGNoYW5uZWxJZCkge1xuICByZXR1cm4gcmVqZWN0SWZOb0dsb2JhbChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5mZGMzLmdldE9yQ3JlYXRlQ2hhbm5lbChjaGFubmVsSWQpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGdldEN1cnJlbnRDaGFubmVsKCkge1xuICByZXR1cm4gcmVqZWN0SWZOb0dsb2JhbChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5mZGMzLmdldEN1cnJlbnRDaGFubmVsKCk7XG4gIH0pO1xufVxuZnVuY3Rpb24gbGVhdmVDdXJyZW50Q2hhbm5lbCgpIHtcbiAgcmV0dXJuIHJlamVjdElmTm9HbG9iYWwoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB3aW5kb3cuZmRjMy5sZWF2ZUN1cnJlbnRDaGFubmVsKCk7XG4gIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlUHJpdmF0ZUNoYW5uZWwoKSB7XG4gIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gd2luZG93LmZkYzMuY3JlYXRlUHJpdmF0ZUNoYW5uZWwoKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBnZXRJbmZvKCkge1xuICByZXR1cm4gcmVqZWN0SWZOb0dsb2JhbChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5mZGMzLmdldEluZm8oKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBnZXRBcHBNZXRhZGF0YShhcHApIHtcbiAgcmV0dXJuIHJlamVjdElmTm9HbG9iYWwoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB3aW5kb3cuZmRjMy5nZXRBcHBNZXRhZGF0YShhcHApO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGZpbmRJbnN0YW5jZXMoYXBwKSB7XG4gIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gd2luZG93LmZkYzMuZmluZEluc3RhbmNlcyhhcHApO1xuICB9KTtcbn1cbi8qKlxyXG4gKiBDb21wYXJlIG51bWVyaWMgc2VtdmVyIHZlcnNpb24gbnVtYmVyIHN0cmluZ3MgKGluIHRoZSBmb3JtIGAxLjIuM2ApLlxyXG4gKlxyXG4gKiBSZXR1cm5zIGAtMWAgaWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgbG93ZXIgdmVyc2lvbiBudW1iZXIgdGhhbiB0aGUgc2Vjb25kLFxyXG4gKiBgMWAgaWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGdyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kLCAwIGlmIHRoZSBhcmd1bWVudHMgYXJlXHJcbiAqIGVxdWFsIGFuZCBgbnVsbGAgaWYgYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZSBjb21wYXJpc29uLlxyXG4gKlxyXG4gKiBAcGFyYW0gYVxyXG4gKiBAcGFyYW0gYlxyXG4gKi9cbnZhciBjb21wYXJlVmVyc2lvbk51bWJlcnMgPSBmdW5jdGlvbiBjb21wYXJlVmVyc2lvbk51bWJlcnMoYSwgYikge1xuICB0cnkge1xuICAgIHZhciBhVmVyQXJyID0gYS5zcGxpdCgnLicpLm1hcChOdW1iZXIpO1xuICAgIHZhciBiVmVyQXJyID0gYi5zcGxpdCgnLicpLm1hcChOdW1iZXIpO1xuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBNYXRoLm1heChhVmVyQXJyLmxlbmd0aCwgYlZlckFyci5sZW5ndGgpOyBpbmRleCsrKSB7XG4gICAgICAvKiBJZiBvbmUgdmVyc2lvbiBudW1iZXIgaGFzIG1vcmUgZGlnaXRzIGFuZCB0aGUgb3RoZXIgZG9lcyBub3QsIGFuZCB0aGV5IGFyZSBvdGhlcndpc2UgZXF1YWwsXHJcbiAgICAgICAgIGFzc3VtZSB0aGUgbG9uZ2VyIGlzIGdyZWF0ZXIuIEUuZy4gMS4xLjEgPiAxLjEgKi9cbiAgICAgIGlmIChpbmRleCA9PT0gYVZlckFyci5sZW5ndGggfHwgYVZlckFycltpbmRleF0gPCBiVmVyQXJyW2luZGV4XSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9IGVsc2UgaWYgKGluZGV4ID09PSBiVmVyQXJyLmxlbmd0aCB8fCBhVmVyQXJyW2luZGV4XSA+IGJWZXJBcnJbaW5kZXhdKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBjb21wYXJlIHZlcnNpb24gc3RyaW5ncycsIGUpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuLyoqXHJcbiAqIENoZWNrIGlmIHRoZSBGREMzIHZlcnNpb24gaW4gYW4gSW1wbGVtZW50YXRpb25NZXRhZGF0YSBvYmplY3QgaXMgZ3JlYXRlciB0aGFuXHJcbiAqIG9yIGVxdWFsIHRvIHRoZSBzdXBwbGllZCBudW1lcmljIHNlbXZlciB2ZXJzaW9uIG51bWJlciBzdHJpbmcgKGluIHRoZSBmb3JtIGAxLjIuM2ApLlxyXG4gKlxyXG4gKiBSZXR1cm5zIGEgYm9vbGVhbiBvciBudWxsIGlmIGFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGNvbXBhcmluZyB0aGUgdmVyc2lvbiBudW1iZXJzLlxyXG4gKlxyXG4gKiBAcGFyYW0gbWV0YWRhdGFcclxuICogQHBhcmFtIHZlcnNpb25cclxuICovXG52YXIgdmVyc2lvbklzQXRMZWFzdCA9IGZ1bmN0aW9uIHZlcnNpb25Jc0F0TGVhc3QobWV0YWRhdGEsIHZlcnNpb24pIHtcbiAgdmFyIGNvbXBhcmlzb24gPSBjb21wYXJlVmVyc2lvbk51bWJlcnMobWV0YWRhdGEuZmRjM1ZlcnNpb24sIHZlcnNpb24pO1xuICByZXR1cm4gY29tcGFyaXNvbiA9PT0gbnVsbCA/IG51bGwgOiBjb21wYXJpc29uID49IDAgPyB0cnVlIDogZmFsc2U7XG59O1xuXG52YXIgQ29udGV4dFR5cGVzO1xuKGZ1bmN0aW9uIChDb250ZXh0VHlwZXMpIHtcbiAgQ29udGV4dFR5cGVzW1wiQ2hhcnRcIl0gPSBcImZkYzMuY2hhcnRcIjtcbiAgQ29udGV4dFR5cGVzW1wiQ2hhdEluaXRTZXR0aW5nc1wiXSA9IFwiZmRjMy5jaGF0LmluaXRTZXR0aW5nc1wiO1xuICBDb250ZXh0VHlwZXNbXCJDb250YWN0XCJdID0gXCJmZGMzLmNvbnRhY3RcIjtcbiAgQ29udGV4dFR5cGVzW1wiQ29udGFjdExpc3RcIl0gPSBcImZkYzMuY29udGFjdExpc3RcIjtcbiAgQ29udGV4dFR5cGVzW1wiQ291bnRyeVwiXSA9IFwiZmRjMy5jb3VudHJ5XCI7XG4gIENvbnRleHRUeXBlc1tcIkN1cnJlbmN5XCJdID0gXCJmZGMzLmN1cnJlbmN5XCI7XG4gIENvbnRleHRUeXBlc1tcIkVtYWlsXCJdID0gXCJmZGMzLmVtYWlsXCI7XG4gIENvbnRleHRUeXBlc1tcIkluc3RydW1lbnRcIl0gPSBcImZkYzMuaW5zdHJ1bWVudFwiO1xuICBDb250ZXh0VHlwZXNbXCJJbnN0cnVtZW50TGlzdFwiXSA9IFwiZmRjMy5pbnN0cnVtZW50TGlzdFwiO1xuICBDb250ZXh0VHlwZXNbXCJPcmdhbml6YXRpb25cIl0gPSBcImZkYzMub3JnYW5pemF0aW9uXCI7XG4gIENvbnRleHRUeXBlc1tcIlBvcnRmb2xpb1wiXSA9IFwiZmRjMy5wb3J0Zm9saW9cIjtcbiAgQ29udGV4dFR5cGVzW1wiUG9zaXRpb25cIl0gPSBcImZkYzMucG9zaXRpb25cIjtcbiAgQ29udGV4dFR5cGVzW1wiTm90aGluZ1wiXSA9IFwiZmRjMy5ub3RoaW5nXCI7XG4gIENvbnRleHRUeXBlc1tcIlRpbWVSYW5nZVwiXSA9IFwiZmRjMy50aW1lcmFuZ2VcIjtcbiAgQ29udGV4dFR5cGVzW1wiVmFsdWF0aW9uXCJdID0gXCJmZGMzLnZhbHVhdGlvblwiO1xufSkoQ29udGV4dFR5cGVzIHx8IChDb250ZXh0VHlwZXMgPSB7fSkpO1xuXG4vLyBUbyBwYXJzZSB0aGlzIGRhdGE6XG4vL1xuLy8gICBpbXBvcnQgeyBDb252ZXJ0LCBDaGFydCwgQ2hhdEluaXRTZXR0aW5ncywgQ29udGFjdCwgQ29udGFjdExpc3QsIENvbnRleHQsIENvdW50cnksIEN1cnJlbmN5LCBFbWFpbCwgSW5zdHJ1bWVudCwgSW5zdHJ1bWVudExpc3QsIE5vdGhpbmcsIE9yZ2FuaXphdGlvbiwgUG9ydGZvbGlvLCBQb3NpdGlvbiwgVGltZVJhbmdlLCBWYWx1YXRpb24gfSBmcm9tIFwiLi9maWxlXCI7XG4vL1xuLy8gICBjb25zdCBjaGFydCA9IENvbnZlcnQudG9DaGFydChqc29uKTtcbi8vICAgY29uc3QgY2hhdEluaXRTZXR0aW5ncyA9IENvbnZlcnQudG9DaGF0SW5pdFNldHRpbmdzKGpzb24pO1xuLy8gICBjb25zdCBjb250YWN0ID0gQ29udmVydC50b0NvbnRhY3QoanNvbik7XG4vLyAgIGNvbnN0IGNvbnRhY3RMaXN0ID0gQ29udmVydC50b0NvbnRhY3RMaXN0KGpzb24pO1xuLy8gICBjb25zdCBjb250ZXh0ID0gQ29udmVydC50b0NvbnRleHQoanNvbik7XG4vLyAgIGNvbnN0IGNvdW50cnkgPSBDb252ZXJ0LnRvQ291bnRyeShqc29uKTtcbi8vICAgY29uc3QgY3VycmVuY3kgPSBDb252ZXJ0LnRvQ3VycmVuY3koanNvbik7XG4vLyAgIGNvbnN0IGVtYWlsID0gQ29udmVydC50b0VtYWlsKGpzb24pO1xuLy8gICBjb25zdCBpbnN0cnVtZW50ID0gQ29udmVydC50b0luc3RydW1lbnQoanNvbik7XG4vLyAgIGNvbnN0IGluc3RydW1lbnRMaXN0ID0gQ29udmVydC50b0luc3RydW1lbnRMaXN0KGpzb24pO1xuLy8gICBjb25zdCBub3RoaW5nID0gQ29udmVydC50b05vdGhpbmcoanNvbik7XG4vLyAgIGNvbnN0IG9yZ2FuaXphdGlvbiA9IENvbnZlcnQudG9Pcmdhbml6YXRpb24oanNvbik7XG4vLyAgIGNvbnN0IHBvcnRmb2xpbyA9IENvbnZlcnQudG9Qb3J0Zm9saW8oanNvbik7XG4vLyAgIGNvbnN0IHBvc2l0aW9uID0gQ29udmVydC50b1Bvc2l0aW9uKGpzb24pO1xuLy8gICBjb25zdCB0aW1lUmFuZ2UgPSBDb252ZXJ0LnRvVGltZVJhbmdlKGpzb24pO1xuLy8gICBjb25zdCB2YWx1YXRpb24gPSBDb252ZXJ0LnRvVmFsdWF0aW9uKGpzb24pO1xuLy9cbi8vIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBKU09OIGRvZXNuJ3Rcbi8vIG1hdGNoIHRoZSBleHBlY3RlZCBpbnRlcmZhY2UsIGV2ZW4gaWYgdGhlIEpTT04gaXMgdmFsaWQuXG52YXIgU3R5bGU7XG4oZnVuY3Rpb24gKFN0eWxlKSB7XG4gIFN0eWxlW1wiQmFyXCJdID0gXCJiYXJcIjtcbiAgU3R5bGVbXCJDYW5kbGVcIl0gPSBcImNhbmRsZVwiO1xuICBTdHlsZVtcIkN1c3RvbVwiXSA9IFwiY3VzdG9tXCI7XG4gIFN0eWxlW1wiSGVhdG1hcFwiXSA9IFwiaGVhdG1hcFwiO1xuICBTdHlsZVtcIkhpc3RvZ3JhbVwiXSA9IFwiaGlzdG9ncmFtXCI7XG4gIFN0eWxlW1wiTGluZVwiXSA9IFwibGluZVwiO1xuICBTdHlsZVtcIk1vdW50YWluXCJdID0gXCJtb3VudGFpblwiO1xuICBTdHlsZVtcIlBpZVwiXSA9IFwicGllXCI7XG4gIFN0eWxlW1wiU2NhdHRlclwiXSA9IFwic2NhdHRlclwiO1xuICBTdHlsZVtcIlN0YWNrZWRCYXJcIl0gPSBcInN0YWNrZWQtYmFyXCI7XG59KShTdHlsZSB8fCAoU3R5bGUgPSB7fSkpO1xuLy8gQ29udmVydHMgSlNPTiBzdHJpbmdzIHRvL2Zyb20geW91ciB0eXBlc1xuLy8gYW5kIGFzc2VydHMgdGhlIHJlc3VsdHMgb2YgSlNPTi5wYXJzZSBhdCBydW50aW1lXG52YXIgQ29udmVydCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIENvbnZlcnQoKSB7fVxuICBDb252ZXJ0LnRvQ2hhcnQgPSBmdW5jdGlvbiB0b0NoYXJ0KGpzb24pIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKCdDaGFydCcpKTtcbiAgfTtcbiAgQ29udmVydC5jaGFydFRvSnNvbiA9IGZ1bmN0aW9uIGNoYXJ0VG9Kc29uKHZhbHVlKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcignQ2hhcnQnKSksIG51bGwsIDIpO1xuICB9O1xuICBDb252ZXJ0LnRvQ2hhdEluaXRTZXR0aW5ncyA9IGZ1bmN0aW9uIHRvQ2hhdEluaXRTZXR0aW5ncyhqc29uKSB7XG4gICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcignQ2hhdEluaXRTZXR0aW5ncycpKTtcbiAgfTtcbiAgQ29udmVydC5jaGF0SW5pdFNldHRpbmdzVG9Kc29uID0gZnVuY3Rpb24gY2hhdEluaXRTZXR0aW5nc1RvSnNvbih2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoJ0NoYXRJbml0U2V0dGluZ3MnKSksIG51bGwsIDIpO1xuICB9O1xuICBDb252ZXJ0LnRvQ29udGFjdCA9IGZ1bmN0aW9uIHRvQ29udGFjdChqc29uKSB7XG4gICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcignQ29udGFjdCcpKTtcbiAgfTtcbiAgQ29udmVydC5jb250YWN0VG9Kc29uID0gZnVuY3Rpb24gY29udGFjdFRvSnNvbih2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoJ0NvbnRhY3QnKSksIG51bGwsIDIpO1xuICB9O1xuICBDb252ZXJ0LnRvQ29udGFjdExpc3QgPSBmdW5jdGlvbiB0b0NvbnRhY3RMaXN0KGpzb24pIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKCdDb250YWN0TGlzdCcpKTtcbiAgfTtcbiAgQ29udmVydC5jb250YWN0TGlzdFRvSnNvbiA9IGZ1bmN0aW9uIGNvbnRhY3RMaXN0VG9Kc29uKHZhbHVlKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcignQ29udGFjdExpc3QnKSksIG51bGwsIDIpO1xuICB9O1xuICBDb252ZXJ0LnRvQ29udGV4dCA9IGZ1bmN0aW9uIHRvQ29udGV4dChqc29uKSB7XG4gICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcignQ29udGV4dCcpKTtcbiAgfTtcbiAgQ29udmVydC5jb250ZXh0VG9Kc29uID0gZnVuY3Rpb24gY29udGV4dFRvSnNvbih2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoJ0NvbnRleHQnKSksIG51bGwsIDIpO1xuICB9O1xuICBDb252ZXJ0LnRvQ291bnRyeSA9IGZ1bmN0aW9uIHRvQ291bnRyeShqc29uKSB7XG4gICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcignQ291bnRyeScpKTtcbiAgfTtcbiAgQ29udmVydC5jb3VudHJ5VG9Kc29uID0gZnVuY3Rpb24gY291bnRyeVRvSnNvbih2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoJ0NvdW50cnknKSksIG51bGwsIDIpO1xuICB9O1xuICBDb252ZXJ0LnRvQ3VycmVuY3kgPSBmdW5jdGlvbiB0b0N1cnJlbmN5KGpzb24pIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKCdDdXJyZW5jeScpKTtcbiAgfTtcbiAgQ29udmVydC5jdXJyZW5jeVRvSnNvbiA9IGZ1bmN0aW9uIGN1cnJlbmN5VG9Kc29uKHZhbHVlKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcignQ3VycmVuY3knKSksIG51bGwsIDIpO1xuICB9O1xuICBDb252ZXJ0LnRvRW1haWwgPSBmdW5jdGlvbiB0b0VtYWlsKGpzb24pIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKCdFbWFpbCcpKTtcbiAgfTtcbiAgQ29udmVydC5lbWFpbFRvSnNvbiA9IGZ1bmN0aW9uIGVtYWlsVG9Kc29uKHZhbHVlKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcignRW1haWwnKSksIG51bGwsIDIpO1xuICB9O1xuICBDb252ZXJ0LnRvSW5zdHJ1bWVudCA9IGZ1bmN0aW9uIHRvSW5zdHJ1bWVudChqc29uKSB7XG4gICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcignSW5zdHJ1bWVudCcpKTtcbiAgfTtcbiAgQ29udmVydC5pbnN0cnVtZW50VG9Kc29uID0gZnVuY3Rpb24gaW5zdHJ1bWVudFRvSnNvbih2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoJ0luc3RydW1lbnQnKSksIG51bGwsIDIpO1xuICB9O1xuICBDb252ZXJ0LnRvSW5zdHJ1bWVudExpc3QgPSBmdW5jdGlvbiB0b0luc3RydW1lbnRMaXN0KGpzb24pIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKCdJbnN0cnVtZW50TGlzdCcpKTtcbiAgfTtcbiAgQ29udmVydC5pbnN0cnVtZW50TGlzdFRvSnNvbiA9IGZ1bmN0aW9uIGluc3RydW1lbnRMaXN0VG9Kc29uKHZhbHVlKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcignSW5zdHJ1bWVudExpc3QnKSksIG51bGwsIDIpO1xuICB9O1xuICBDb252ZXJ0LnRvTm90aGluZyA9IGZ1bmN0aW9uIHRvTm90aGluZyhqc29uKSB7XG4gICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcignTm90aGluZycpKTtcbiAgfTtcbiAgQ29udmVydC5ub3RoaW5nVG9Kc29uID0gZnVuY3Rpb24gbm90aGluZ1RvSnNvbih2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoJ05vdGhpbmcnKSksIG51bGwsIDIpO1xuICB9O1xuICBDb252ZXJ0LnRvT3JnYW5pemF0aW9uID0gZnVuY3Rpb24gdG9Pcmdhbml6YXRpb24oanNvbikge1xuICAgIHJldHVybiBjYXN0KEpTT04ucGFyc2UoanNvbiksIHIoJ09yZ2FuaXphdGlvbicpKTtcbiAgfTtcbiAgQ29udmVydC5vcmdhbml6YXRpb25Ub0pzb24gPSBmdW5jdGlvbiBvcmdhbml6YXRpb25Ub0pzb24odmFsdWUpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodW5jYXN0KHZhbHVlLCByKCdPcmdhbml6YXRpb24nKSksIG51bGwsIDIpO1xuICB9O1xuICBDb252ZXJ0LnRvUG9ydGZvbGlvID0gZnVuY3Rpb24gdG9Qb3J0Zm9saW8oanNvbikge1xuICAgIHJldHVybiBjYXN0KEpTT04ucGFyc2UoanNvbiksIHIoJ1BvcnRmb2xpbycpKTtcbiAgfTtcbiAgQ29udmVydC5wb3J0Zm9saW9Ub0pzb24gPSBmdW5jdGlvbiBwb3J0Zm9saW9Ub0pzb24odmFsdWUpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodW5jYXN0KHZhbHVlLCByKCdQb3J0Zm9saW8nKSksIG51bGwsIDIpO1xuICB9O1xuICBDb252ZXJ0LnRvUG9zaXRpb24gPSBmdW5jdGlvbiB0b1Bvc2l0aW9uKGpzb24pIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKCdQb3NpdGlvbicpKTtcbiAgfTtcbiAgQ29udmVydC5wb3NpdGlvblRvSnNvbiA9IGZ1bmN0aW9uIHBvc2l0aW9uVG9Kc29uKHZhbHVlKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcignUG9zaXRpb24nKSksIG51bGwsIDIpO1xuICB9O1xuICBDb252ZXJ0LnRvVGltZVJhbmdlID0gZnVuY3Rpb24gdG9UaW1lUmFuZ2UoanNvbikge1xuICAgIHJldHVybiBjYXN0KEpTT04ucGFyc2UoanNvbiksIHIoJ1RpbWVSYW5nZScpKTtcbiAgfTtcbiAgQ29udmVydC50aW1lUmFuZ2VUb0pzb24gPSBmdW5jdGlvbiB0aW1lUmFuZ2VUb0pzb24odmFsdWUpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodW5jYXN0KHZhbHVlLCByKCdUaW1lUmFuZ2UnKSksIG51bGwsIDIpO1xuICB9O1xuICBDb252ZXJ0LnRvVmFsdWF0aW9uID0gZnVuY3Rpb24gdG9WYWx1YXRpb24oanNvbikge1xuICAgIHJldHVybiBjYXN0KEpTT04ucGFyc2UoanNvbiksIHIoJ1ZhbHVhdGlvbicpKTtcbiAgfTtcbiAgQ29udmVydC52YWx1YXRpb25Ub0pzb24gPSBmdW5jdGlvbiB2YWx1YXRpb25Ub0pzb24odmFsdWUpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodW5jYXN0KHZhbHVlLCByKCdWYWx1YXRpb24nKSksIG51bGwsIDIpO1xuICB9O1xuICByZXR1cm4gQ29udmVydDtcbn0oKTtcbmZ1bmN0aW9uIGludmFsaWRWYWx1ZSh0eXAsIHZhbCwga2V5LCBwYXJlbnQpIHtcbiAgaWYgKHBhcmVudCA9PT0gdm9pZCAwKSB7XG4gICAgcGFyZW50ID0gJyc7XG4gIH1cbiAgdmFyIHByZXR0eVR5cCA9IHByZXR0eVR5cGVOYW1lKHR5cCk7XG4gIHZhciBwYXJlbnRUZXh0ID0gcGFyZW50ID8gXCIgb24gXCIgKyBwYXJlbnQgOiAnJztcbiAgdmFyIGtleVRleHQgPSBrZXkgPyBcIiBmb3Iga2V5IFxcXCJcIiArIGtleSArIFwiXFxcIlwiIDogJyc7XG4gIHRocm93IEVycm9yKFwiSW52YWxpZCB2YWx1ZVwiICsga2V5VGV4dCArIHBhcmVudFRleHQgKyBcIi4gRXhwZWN0ZWQgXCIgKyBwcmV0dHlUeXAgKyBcIiBidXQgZ290IFwiICsgSlNPTi5zdHJpbmdpZnkodmFsKSk7XG59XG5mdW5jdGlvbiBwcmV0dHlUeXBlTmFtZSh0eXApIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodHlwKSkge1xuICAgIGlmICh0eXAubGVuZ3RoID09PSAyICYmIHR5cFswXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gXCJhbiBvcHRpb25hbCBcIiArIHByZXR0eVR5cGVOYW1lKHR5cFsxXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBcIm9uZSBvZiBbXCIgKyB0eXAubWFwKGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHJldHVybiBwcmV0dHlUeXBlTmFtZShhKTtcbiAgICAgIH0pLmpvaW4oJywgJykgKyBcIl1cIjtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHR5cCA9PT0gJ29iamVjdCcgJiYgdHlwLmxpdGVyYWwgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0eXAubGl0ZXJhbDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdHlwZW9mIHR5cDtcbiAgfVxufVxuZnVuY3Rpb24ganNvblRvSlNQcm9wcyh0eXApIHtcbiAgaWYgKHR5cC5qc29uVG9KUyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIG1hcCA9IHt9O1xuICAgIHR5cC5wcm9wcy5mb3JFYWNoKGZ1bmN0aW9uIChwKSB7XG4gICAgICByZXR1cm4gbWFwW3AuanNvbl0gPSB7XG4gICAgICAgIGtleTogcC5qcyxcbiAgICAgICAgdHlwOiBwLnR5cFxuICAgICAgfTtcbiAgICB9KTtcbiAgICB0eXAuanNvblRvSlMgPSBtYXA7XG4gIH1cbiAgcmV0dXJuIHR5cC5qc29uVG9KUztcbn1cbmZ1bmN0aW9uIGpzVG9KU09OUHJvcHModHlwKSB7XG4gIGlmICh0eXAuanNUb0pTT04gPT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBtYXAgPSB7fTtcbiAgICB0eXAucHJvcHMuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgcmV0dXJuIG1hcFtwLmpzXSA9IHtcbiAgICAgICAga2V5OiBwLmpzb24sXG4gICAgICAgIHR5cDogcC50eXBcbiAgICAgIH07XG4gICAgfSk7XG4gICAgdHlwLmpzVG9KU09OID0gbWFwO1xuICB9XG4gIHJldHVybiB0eXAuanNUb0pTT047XG59XG5mdW5jdGlvbiB0cmFuc2Zvcm0odmFsLCB0eXAsIGdldFByb3BzLCBrZXksIHBhcmVudCkge1xuICBpZiAoa2V5ID09PSB2b2lkIDApIHtcbiAgICBrZXkgPSAnJztcbiAgfVxuICBpZiAocGFyZW50ID09PSB2b2lkIDApIHtcbiAgICBwYXJlbnQgPSAnJztcbiAgfVxuICBmdW5jdGlvbiB0cmFuc2Zvcm1QcmltaXRpdmUodHlwLCB2YWwpIHtcbiAgICBpZiAodHlwZW9mIHR5cCA9PT0gdHlwZW9mIHZhbCkgcmV0dXJuIHZhbDtcbiAgICByZXR1cm4gaW52YWxpZFZhbHVlKHR5cCwgdmFsLCBrZXksIHBhcmVudCk7XG4gIH1cbiAgZnVuY3Rpb24gdHJhbnNmb3JtVW5pb24odHlwcywgdmFsKSB7XG4gICAgLy8gdmFsIG11c3QgdmFsaWRhdGUgYWdhaW5zdCBvbmUgdHlwIGluIHR5cHNcbiAgICB2YXIgbCA9IHR5cHMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgX3R5cCA9IHR5cHNbaV07XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdHJhbnNmb3JtKHZhbCwgX3R5cCwgZ2V0UHJvcHMpO1xuICAgICAgfSBjYXRjaCAoXykge31cbiAgICB9XG4gICAgcmV0dXJuIGludmFsaWRWYWx1ZSh0eXBzLCB2YWwsIGtleSwgcGFyZW50KTtcbiAgfVxuICBmdW5jdGlvbiB0cmFuc2Zvcm1FbnVtKGNhc2VzLCB2YWwpIHtcbiAgICBpZiAoY2FzZXMuaW5kZXhPZih2YWwpICE9PSAtMSkgcmV0dXJuIHZhbDtcbiAgICByZXR1cm4gaW52YWxpZFZhbHVlKGNhc2VzLm1hcChmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGwoYSk7XG4gICAgfSksIHZhbCwga2V5LCBwYXJlbnQpO1xuICB9XG4gIGZ1bmN0aW9uIHRyYW5zZm9ybUFycmF5KHR5cCwgdmFsKSB7XG4gICAgLy8gdmFsIG11c3QgYmUgYW4gYXJyYXkgd2l0aCBubyBpbnZhbGlkIGVsZW1lbnRzXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbCkpIHJldHVybiBpbnZhbGlkVmFsdWUobCgnYXJyYXknKSwgdmFsLCBrZXksIHBhcmVudCk7XG4gICAgcmV0dXJuIHZhbC5tYXAoZnVuY3Rpb24gKGVsKSB7XG4gICAgICByZXR1cm4gdHJhbnNmb3JtKGVsLCB0eXAsIGdldFByb3BzKTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRlKHZhbCkge1xuICAgIGlmICh2YWwgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgZCA9IG5ldyBEYXRlKHZhbCk7XG4gICAgaWYgKGlzTmFOKGQudmFsdWVPZigpKSkge1xuICAgICAgcmV0dXJuIGludmFsaWRWYWx1ZShsKCdEYXRlJyksIHZhbCwga2V5LCBwYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gZDtcbiAgfVxuICBmdW5jdGlvbiB0cmFuc2Zvcm1PYmplY3QocHJvcHMsIGFkZGl0aW9uYWwsIHZhbCkge1xuICAgIGlmICh2YWwgPT09IG51bGwgfHwgdHlwZW9mIHZhbCAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICByZXR1cm4gaW52YWxpZFZhbHVlKGwocmVmIHx8ICdvYmplY3QnKSwgdmFsLCBrZXksIHBhcmVudCk7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm9wcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgcHJvcCA9IHByb3BzW2tleV07XG4gICAgICB2YXIgdiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWwsIGtleSkgPyB2YWxba2V5XSA6IHVuZGVmaW5lZDtcbiAgICAgIHJlc3VsdFtwcm9wLmtleV0gPSB0cmFuc2Zvcm0odiwgcHJvcC50eXAsIGdldFByb3BzLCBrZXksIHJlZik7XG4gICAgfSk7XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModmFsKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBrZXkpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdHJhbnNmb3JtKHZhbFtrZXldLCBhZGRpdGlvbmFsLCBnZXRQcm9wcywga2V5LCByZWYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgaWYgKHR5cCA9PT0gJ2FueScpIHJldHVybiB2YWw7XG4gIGlmICh0eXAgPT09IG51bGwpIHtcbiAgICBpZiAodmFsID09PSBudWxsKSByZXR1cm4gdmFsO1xuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwsIGtleSwgcGFyZW50KTtcbiAgfVxuICBpZiAodHlwID09PSBmYWxzZSkgcmV0dXJuIGludmFsaWRWYWx1ZSh0eXAsIHZhbCwga2V5LCBwYXJlbnQpO1xuICB2YXIgcmVmID0gdW5kZWZpbmVkO1xuICB3aGlsZSAodHlwZW9mIHR5cCA9PT0gJ29iamVjdCcgJiYgdHlwLnJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmVmID0gdHlwLnJlZjtcbiAgICB0eXAgPSB0eXBlTWFwW3R5cC5yZWZdO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KHR5cCkpIHJldHVybiB0cmFuc2Zvcm1FbnVtKHR5cCwgdmFsKTtcbiAgaWYgKHR5cGVvZiB0eXAgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHR5cC5oYXNPd25Qcm9wZXJ0eSgndW5pb25NZW1iZXJzJykgPyB0cmFuc2Zvcm1Vbmlvbih0eXAudW5pb25NZW1iZXJzLCB2YWwpIDogdHlwLmhhc093blByb3BlcnR5KCdhcnJheUl0ZW1zJykgPyB0cmFuc2Zvcm1BcnJheSh0eXAuYXJyYXlJdGVtcywgdmFsKSA6IHR5cC5oYXNPd25Qcm9wZXJ0eSgncHJvcHMnKSA/IHRyYW5zZm9ybU9iamVjdChnZXRQcm9wcyh0eXApLCB0eXAuYWRkaXRpb25hbCwgdmFsKSA6IGludmFsaWRWYWx1ZSh0eXAsIHZhbCwga2V5LCBwYXJlbnQpO1xuICB9XG4gIC8vIE51bWJlcnMgY2FuIGJlIHBhcnNlZCBieSBEYXRlIGJ1dCBzaG91bGRuJ3QgYmUuXG4gIGlmICh0eXAgPT09IERhdGUgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicpIHJldHVybiB0cmFuc2Zvcm1EYXRlKHZhbCk7XG4gIHJldHVybiB0cmFuc2Zvcm1QcmltaXRpdmUodHlwLCB2YWwpO1xufVxuZnVuY3Rpb24gY2FzdCh2YWwsIHR5cCkge1xuICByZXR1cm4gdHJhbnNmb3JtKHZhbCwgdHlwLCBqc29uVG9KU1Byb3BzKTtcbn1cbmZ1bmN0aW9uIHVuY2FzdCh2YWwsIHR5cCkge1xuICByZXR1cm4gdHJhbnNmb3JtKHZhbCwgdHlwLCBqc1RvSlNPTlByb3BzKTtcbn1cbmZ1bmN0aW9uIGwodHlwKSB7XG4gIHJldHVybiB7XG4gICAgbGl0ZXJhbDogdHlwXG4gIH07XG59XG5mdW5jdGlvbiBhKHR5cCkge1xuICByZXR1cm4ge1xuICAgIGFycmF5SXRlbXM6IHR5cFxuICB9O1xufVxuZnVuY3Rpb24gdSgpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHR5cHMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgdHlwc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHVuaW9uTWVtYmVyczogdHlwc1xuICB9O1xufVxuZnVuY3Rpb24gbyhwcm9wcywgYWRkaXRpb25hbCkge1xuICByZXR1cm4ge1xuICAgIHByb3BzOiBwcm9wcyxcbiAgICBhZGRpdGlvbmFsOiBhZGRpdGlvbmFsXG4gIH07XG59XG5mdW5jdGlvbiBtKGFkZGl0aW9uYWwpIHtcbiAgcmV0dXJuIHtcbiAgICBwcm9wczogW10sXG4gICAgYWRkaXRpb25hbDogYWRkaXRpb25hbFxuICB9O1xufVxuZnVuY3Rpb24gcihuYW1lKSB7XG4gIHJldHVybiB7XG4gICAgcmVmOiBuYW1lXG4gIH07XG59XG52YXIgdHlwZU1hcCA9IHtcbiAgQ2hhcnQ6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ2luc3RydW1lbnRzJyxcbiAgICBqczogJ2luc3RydW1lbnRzJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi9hKCAvKiNfX1BVUkVfXyovcignSW5zdHJ1bWVudEVsZW1lbnQnKSlcbiAgfSwge1xuICAgIGpzb246ICdvdGhlckNvbmZpZycsXG4gICAganM6ICdvdGhlckNvbmZpZycsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIC8qI19fUFVSRV9fKi9tKCdhbnknKSlcbiAgfSwge1xuICAgIGpzb246ICdyYW5nZScsXG4gICAganM6ICdyYW5nZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIC8qI19fUFVSRV9fKi9yKCdUaW1lUmFuZ2VPYmplY3QnKSlcbiAgfSwge1xuICAgIGpzb246ICdzdHlsZScsXG4gICAganM6ICdzdHlsZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIC8qI19fUFVSRV9fKi9yKCdTdHlsZScpKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ2lkJyxcbiAgICBqczogJ2lkJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL20oJ2FueScpKVxuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBJbnN0cnVtZW50RWxlbWVudDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnaWQnLFxuICAgIGpzOiAnaWQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3IoJ1B1cnBsZUlEJylcbiAgfSwge1xuICAgIGpzb246ICdtYXJrZXQnLFxuICAgIGpzOiAnbWFya2V0JyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL3IoJ1B1cnBsZU1hcmtldCcpKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBQdXJwbGVJRDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnQkJHJyxcbiAgICBqczogJ0JCRycsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ0NVU0lQJyxcbiAgICBqczogJ0NVU0lQJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnRkRTX0lEJyxcbiAgICBqczogJ0ZEU19JRCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ0ZJR0knLFxuICAgIGpzOiAnRklHSScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ0lTSU4nLFxuICAgIGpzOiAnSVNJTicsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ1BFUk1JRCcsXG4gICAganM6ICdQRVJNSUQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdSSUMnLFxuICAgIGpzOiAnUklDJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnU0VET0wnLFxuICAgIGpzOiAnU0VET0wnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICd0aWNrZXInLFxuICAgIGpzOiAndGlja2VyJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIFB1cnBsZU1hcmtldDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnQkJHJyxcbiAgICBqczogJ0JCRycsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ0NPVU5UUllfSVNPQUxQSEEyJyxcbiAgICBqczogJ0NPVU5UUllfSVNPQUxQSEEyJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnTUlDJyxcbiAgICBqczogJ01JQycsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBUaW1lUmFuZ2VPYmplY3Q6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ2VuZFRpbWUnLFxuICAgIGpzOiAnZW5kVGltZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIERhdGUpXG4gIH0sIHtcbiAgICBqc29uOiAnc3RhcnRUaW1lJyxcbiAgICBqczogJ3N0YXJ0VGltZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIERhdGUpXG4gIH0sIHtcbiAgICBqc29uOiAndHlwZScsXG4gICAganM6ICd0eXBlJyxcbiAgICB0eXA6ICcnXG4gIH0sIHtcbiAgICBqc29uOiAnaWQnLFxuICAgIGpzOiAnaWQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAvKiNfX1BVUkVfXyovbSgnYW55JykpXG4gIH0sIHtcbiAgICBqc29uOiAnbmFtZScsXG4gICAganM6ICduYW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIENoYXRJbml0U2V0dGluZ3M6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ2NoYXROYW1lJyxcbiAgICBqczogJ2NoYXROYW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnaW5pdE1lc3NhZ2UnLFxuICAgIGpzOiAnaW5pdE1lc3NhZ2UnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdtZW1iZXJzJyxcbiAgICBqczogJ21lbWJlcnMnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAvKiNfX1BVUkVfXyovcignQ29udGFjdExpc3RPYmplY3QnKSlcbiAgfSwge1xuICAgIGpzb246ICdvcHRpb25zJyxcbiAgICBqczogJ29wdGlvbnMnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnYW55JylcbiAgfSwge1xuICAgIGpzb246ICd0eXBlJyxcbiAgICBqczogJ3R5cGUnLFxuICAgIHR5cDogJ2FueSdcbiAgfV0sICdhbnknKSxcbiAgQ29udGFjdExpc3RPYmplY3Q6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ2NvbnRhY3RzJyxcbiAgICBqczogJ2NvbnRhY3RzJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi9hKCAvKiNfX1BVUkVfXyovcignQ29udGFjdEVsZW1lbnQnKSlcbiAgfSwge1xuICAgIGpzb246ICd0eXBlJyxcbiAgICBqczogJ3R5cGUnLFxuICAgIHR5cDogJydcbiAgfSwge1xuICAgIGpzb246ICdpZCcsXG4gICAganM6ICdpZCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIC8qI19fUFVSRV9fKi9tKCdhbnknKSlcbiAgfSwge1xuICAgIGpzb246ICduYW1lJyxcbiAgICBqczogJ25hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgQ29udGFjdEVsZW1lbnQ6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ2lkJyxcbiAgICBqczogJ2lkJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi9yKCdGbHVmZnlJRCcpXG4gIH0sIHtcbiAgICBqc29uOiAndHlwZScsXG4gICAganM6ICd0eXBlJyxcbiAgICB0eXA6ICcnXG4gIH0sIHtcbiAgICBqc29uOiAnbmFtZScsXG4gICAganM6ICduYW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIEZsdWZmeUlEOiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdlbWFpbCcsXG4gICAganM6ICdlbWFpbCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ0ZEU19JRCcsXG4gICAganM6ICdGRFNfSUQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgQ29udGFjdDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnaWQnLFxuICAgIGpzOiAnaWQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3IoJ1RlbnRhY2xlZElEJylcbiAgfSwge1xuICAgIGpzb246ICd0eXBlJyxcbiAgICBqczogJ3R5cGUnLFxuICAgIHR5cDogJydcbiAgfSwge1xuICAgIGpzb246ICduYW1lJyxcbiAgICBqczogJ25hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgVGVudGFjbGVkSUQ6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ2VtYWlsJyxcbiAgICBqczogJ2VtYWlsJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnRkRTX0lEJyxcbiAgICBqczogJ0ZEU19JRCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBDb250YWN0TGlzdDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnY29udGFjdHMnLFxuICAgIGpzOiAnY29udGFjdHMnLFxuICAgIHR5cDogLyojX19QVVJFX18qL2EoIC8qI19fUFVSRV9fKi9yKCdDb250YWN0RWxlbWVudCcpKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ2lkJyxcbiAgICBqczogJ2lkJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL20oJ2FueScpKVxuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBDb250ZXh0OiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdpZCcsXG4gICAganM6ICdpZCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIC8qI19fUFVSRV9fKi9tKCdhbnknKSlcbiAgfSwge1xuICAgIGpzb246ICduYW1lJyxcbiAgICBqczogJ25hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICd0eXBlJyxcbiAgICBqczogJ3R5cGUnLFxuICAgIHR5cDogJydcbiAgfV0sICdhbnknKSxcbiAgQ291bnRyeTogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnaWQnLFxuICAgIGpzOiAnaWQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3IoJ0NvdW50cnlJRCcpXG4gIH0sIHtcbiAgICBqc29uOiAndHlwZScsXG4gICAganM6ICd0eXBlJyxcbiAgICB0eXA6ICcnXG4gIH0sIHtcbiAgICBqc29uOiAnbmFtZScsXG4gICAganM6ICduYW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIENvdW50cnlJRDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnQ09VTlRSWV9JU09BTFBIQTInLFxuICAgIGpzOiAnQ09VTlRSWV9JU09BTFBIQTInLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdDT1VOVFJZX0lTT0FMUEhBMycsXG4gICAganM6ICdDT1VOVFJZX0lTT0FMUEhBMycsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ0lTT0FMUEhBMicsXG4gICAganM6ICdJU09BTFBIQTInLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdJU09BTFBIQTMnLFxuICAgIGpzOiAnSVNPQUxQSEEzJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIEN1cnJlbmN5OiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdpZCcsXG4gICAganM6ICdpZCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovcignQ3VycmVuY3lJRCcpXG4gIH0sIHtcbiAgICBqc29uOiAnbmFtZScsXG4gICAganM6ICduYW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAndHlwZScsXG4gICAganM6ICd0eXBlJyxcbiAgICB0eXA6ICcnXG4gIH1dLCAnYW55JyksXG4gIEN1cnJlbmN5SUQ6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ0NVUlJFTkNZX0lTT0NPREUnLFxuICAgIGpzOiAnQ1VSUkVOQ1lfSVNPQ09ERScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBFbWFpbDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAncmVjaXBpZW50cycsXG4gICAganM6ICdyZWNpcGllbnRzJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi9yKCdSZWNpcGllbnRzT2JqZWN0JylcbiAgfSwge1xuICAgIGpzb246ICdzdWJqZWN0JyxcbiAgICBqczogJ3N1YmplY3QnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICd0ZXh0Qm9keScsXG4gICAganM6ICd0ZXh0Qm9keScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ2lkJyxcbiAgICBqczogJ2lkJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL20oJ2FueScpKVxuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBSZWNpcGllbnRzT2JqZWN0OiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdpZCcsXG4gICAganM6ICdpZCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIC8qI19fUFVSRV9fKi9yKCdSZWNpcGllbnRzSUQnKSlcbiAgfSwge1xuICAgIGpzb246ICd0eXBlJyxcbiAgICBqczogJ3R5cGUnLFxuICAgIHR5cDogJydcbiAgfSwge1xuICAgIGpzb246ICduYW1lJyxcbiAgICBqczogJ25hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdjb250YWN0cycsXG4gICAganM6ICdjb250YWN0cycsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIC8qI19fUFVSRV9fKi9hKCAvKiNfX1BVUkVfXyovcignQ29udGFjdEVsZW1lbnQnKSkpXG4gIH1dLCAnYW55JyksXG4gIFJlY2lwaWVudHNJRDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnZW1haWwnLFxuICAgIGpzOiAnZW1haWwnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdGRFNfSUQnLFxuICAgIGpzOiAnRkRTX0lEJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIEluc3RydW1lbnQ6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ2lkJyxcbiAgICBqczogJ2lkJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi9yKCdTdGlja3lJRCcpXG4gIH0sIHtcbiAgICBqc29uOiAnbWFya2V0JyxcbiAgICBqczogJ21hcmtldCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIC8qI19fUFVSRV9fKi9yKCdGbHVmZnlNYXJrZXQnKSlcbiAgfSwge1xuICAgIGpzb246ICd0eXBlJyxcbiAgICBqczogJ3R5cGUnLFxuICAgIHR5cDogJydcbiAgfSwge1xuICAgIGpzb246ICduYW1lJyxcbiAgICBqczogJ25hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgU3RpY2t5SUQ6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ0JCRycsXG4gICAganM6ICdCQkcnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdDVVNJUCcsXG4gICAganM6ICdDVVNJUCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ0ZEU19JRCcsXG4gICAganM6ICdGRFNfSUQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdGSUdJJyxcbiAgICBqczogJ0ZJR0knLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdJU0lOJyxcbiAgICBqczogJ0lTSU4nLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdQRVJNSUQnLFxuICAgIGpzOiAnUEVSTUlEJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnUklDJyxcbiAgICBqczogJ1JJQycsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ1NFRE9MJyxcbiAgICBqczogJ1NFRE9MJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAndGlja2VyJyxcbiAgICBqczogJ3RpY2tlcicsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBGbHVmZnlNYXJrZXQ6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ0JCRycsXG4gICAganM6ICdCQkcnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdDT1VOVFJZX0lTT0FMUEhBMicsXG4gICAganM6ICdDT1VOVFJZX0lTT0FMUEhBMicsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ01JQycsXG4gICAganM6ICdNSUMnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICduYW1lJyxcbiAgICBqczogJ25hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgSW5zdHJ1bWVudExpc3Q6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ2luc3RydW1lbnRzJyxcbiAgICBqczogJ2luc3RydW1lbnRzJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi9hKCAvKiNfX1BVUkVfXyovcignSW5zdHJ1bWVudEVsZW1lbnQnKSlcbiAgfSwge1xuICAgIGpzb246ICd0eXBlJyxcbiAgICBqczogJ3R5cGUnLFxuICAgIHR5cDogJydcbiAgfSwge1xuICAgIGpzb246ICdpZCcsXG4gICAganM6ICdpZCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIC8qI19fUFVSRV9fKi9tKCdhbnknKSlcbiAgfSwge1xuICAgIGpzb246ICduYW1lJyxcbiAgICBqczogJ25hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgTm90aGluZzogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAndHlwZScsXG4gICAganM6ICd0eXBlJyxcbiAgICB0eXA6ICcnXG4gIH0sIHtcbiAgICBqc29uOiAnaWQnLFxuICAgIGpzOiAnaWQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAvKiNfX1BVUkVfXyovbSgnYW55JykpXG4gIH0sIHtcbiAgICBqc29uOiAnbmFtZScsXG4gICAganM6ICduYW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIE9yZ2FuaXphdGlvbjogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnaWQnLFxuICAgIGpzOiAnaWQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3IoJ09yZ2FuaXphdGlvbklEJylcbiAgfSwge1xuICAgIGpzb246ICd0eXBlJyxcbiAgICBqczogJ3R5cGUnLFxuICAgIHR5cDogJydcbiAgfSwge1xuICAgIGpzb246ICduYW1lJyxcbiAgICBqczogJ25hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgT3JnYW5pemF0aW9uSUQ6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ0ZEU19JRCcsXG4gICAganM6ICdGRFNfSUQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdMRUknLFxuICAgIGpzOiAnTEVJJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnUEVSTUlEJyxcbiAgICBqczogJ1BFUk1JRCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBQb3J0Zm9saW86IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ3Bvc2l0aW9ucycsXG4gICAganM6ICdwb3NpdGlvbnMnLFxuICAgIHR5cDogLyojX19QVVJFX18qL2EoIC8qI19fUFVSRV9fKi9yKCdQb3NpdGlvbkVsZW1lbnQnKSlcbiAgfSwge1xuICAgIGpzb246ICd0eXBlJyxcbiAgICBqczogJ3R5cGUnLFxuICAgIHR5cDogJydcbiAgfSwge1xuICAgIGpzb246ICdpZCcsXG4gICAganM6ICdpZCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIC8qI19fUFVSRV9fKi9tKCdhbnknKSlcbiAgfSwge1xuICAgIGpzb246ICduYW1lJyxcbiAgICBqczogJ25hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgUG9zaXRpb25FbGVtZW50OiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdob2xkaW5nJyxcbiAgICBqczogJ2hvbGRpbmcnLFxuICAgIHR5cDogMy4xNFxuICB9LCB7XG4gICAganNvbjogJ2luc3RydW1lbnQnLFxuICAgIGpzOiAnaW5zdHJ1bWVudCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovcignSW5zdHJ1bWVudEVsZW1lbnQnKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ2lkJyxcbiAgICBqczogJ2lkJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL20oJ2FueScpKVxuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBQb3NpdGlvbjogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnaG9sZGluZycsXG4gICAganM6ICdob2xkaW5nJyxcbiAgICB0eXA6IDMuMTRcbiAgfSwge1xuICAgIGpzb246ICdpbnN0cnVtZW50JyxcbiAgICBqczogJ2luc3RydW1lbnQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3IoJ0luc3RydW1lbnRFbGVtZW50JylcbiAgfSwge1xuICAgIGpzb246ICd0eXBlJyxcbiAgICBqczogJ3R5cGUnLFxuICAgIHR5cDogJydcbiAgfSwge1xuICAgIGpzb246ICdpZCcsXG4gICAganM6ICdpZCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIC8qI19fUFVSRV9fKi9tKCdhbnknKSlcbiAgfSwge1xuICAgIGpzb246ICduYW1lJyxcbiAgICBqczogJ25hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgVGltZVJhbmdlOiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdlbmRUaW1lJyxcbiAgICBqczogJ2VuZFRpbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCBEYXRlKVxuICB9LCB7XG4gICAganNvbjogJ3N0YXJ0VGltZScsXG4gICAganM6ICdzdGFydFRpbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCBEYXRlKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ2lkJyxcbiAgICBqczogJ2lkJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL20oJ2FueScpKVxuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBWYWx1YXRpb246IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ0NVUlJFTkNZX0lTT0NPREUnLFxuICAgIGpzOiAnQ1VSUkVOQ1lfSVNPQ09ERScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ2V4cGlyeVRpbWUnLFxuICAgIGpzOiAnZXhwaXJ5VGltZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIERhdGUpXG4gIH0sIHtcbiAgICBqc29uOiAncHJpY2UnLFxuICAgIGpzOiAncHJpY2UnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAzLjE0KVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ3ZhbHVhdGlvblRpbWUnLFxuICAgIGpzOiAndmFsdWF0aW9uVGltZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIERhdGUpXG4gIH0sIHtcbiAgICBqc29uOiAndmFsdWUnLFxuICAgIGpzOiAndmFsdWUnLFxuICAgIHR5cDogMy4xNFxuICB9LCB7XG4gICAganNvbjogJ2lkJyxcbiAgICBqczogJ2lkJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL20oJ2FueScpKVxuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBTdHlsZTogWydiYXInLCAnY2FuZGxlJywgJ2N1c3RvbScsICdoZWF0bWFwJywgJ2hpc3RvZ3JhbScsICdsaW5lJywgJ21vdW50YWluJywgJ3BpZScsICdzY2F0dGVyJywgJ3N0YWNrZWQtYmFyJ11cbn07XG5cbnZhciBJbnRlbnRzO1xuKGZ1bmN0aW9uIChJbnRlbnRzKSB7XG4gIEludGVudHNbXCJTdGFydENhbGxcIl0gPSBcIlN0YXJ0Q2FsbFwiO1xuICBJbnRlbnRzW1wiU3RhcnRDaGF0XCJdID0gXCJTdGFydENoYXRcIjtcbiAgSW50ZW50c1tcIlN0YXJ0RW1haWxcIl0gPSBcIlN0YXJ0RW1haWxcIjtcbiAgSW50ZW50c1tcIlZpZXdBbmFseXNpc1wiXSA9IFwiVmlld0FuYWx5c2lzXCI7XG4gIEludGVudHNbXCJWaWV3Q2hhcnRcIl0gPSBcIlZpZXdDaGFydFwiO1xuICBJbnRlbnRzW1wiVmlld0NvbnRhY3RcIl0gPSBcIlZpZXdDb250YWN0XCI7XG4gIEludGVudHNbXCJWaWV3SG9sZGluZ3NcIl0gPSBcIlZpZXdIb2xkaW5nc1wiO1xuICBJbnRlbnRzW1wiVmlld0luc3RydW1lbnRcIl0gPSBcIlZpZXdJbnN0cnVtZW50XCI7XG4gIEludGVudHNbXCJWaWV3SW50ZXJhY3Rpb25zXCJdID0gXCJWaWV3SW50ZXJhY3Rpb25zXCI7XG4gIEludGVudHNbXCJWaWV3TmV3c1wiXSA9IFwiVmlld05ld3NcIjtcbiAgSW50ZW50c1tcIlZpZXdPcmRlcnNcIl0gPSBcIlZpZXdPcmRlcnNcIjtcbiAgSW50ZW50c1tcIlZpZXdQcm9maWxlXCJdID0gXCJWaWV3UHJvZmlsZVwiO1xuICBJbnRlbnRzW1wiVmlld1F1b3RlXCJdID0gXCJWaWV3UXVvdGVcIjtcbiAgSW50ZW50c1tcIlZpZXdSZXNlYXJjaFwiXSA9IFwiVmlld1Jlc2VhcmNoXCI7XG59KShJbnRlbnRzIHx8IChJbnRlbnRzID0ge30pKTtcblxuZXhwb3J0IHsgQ2hhbm5lbEVycm9yLCBDb250ZXh0VHlwZXMsIENvbnZlcnQsIEludGVudHMsIE9wZW5FcnJvciwgUmVzb2x2ZUVycm9yLCBSZXN1bHRFcnJvciwgU3R5bGUsIGFkZENvbnRleHRMaXN0ZW5lciwgYWRkSW50ZW50TGlzdGVuZXIsIGJyb2FkY2FzdCwgY29tcGFyZVZlcnNpb25OdW1iZXJzLCBjcmVhdGVQcml2YXRlQ2hhbm5lbCwgZmRjM1JlYWR5LCBmaW5kSW5zdGFuY2VzLCBmaW5kSW50ZW50LCBmaW5kSW50ZW50c0J5Q29udGV4dCwgZ2V0QXBwTWV0YWRhdGEsIGdldEN1cnJlbnRDaGFubmVsLCBnZXRJbmZvLCBnZXRPckNyZWF0ZUNoYW5uZWwsIGdldFN5c3RlbUNoYW5uZWxzLCBnZXRVc2VyQ2hhbm5lbHMsIGpvaW5DaGFubmVsLCBqb2luVXNlckNoYW5uZWwsIGxlYXZlQ3VycmVudENoYW5uZWwsIG9wZW4sIHJhaXNlSW50ZW50LCByYWlzZUludGVudEZvckNvbnRleHQsIHZlcnNpb25Jc0F0TGVhc3QgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZkYzMuZXNtLmpzLm1hcFxuIiwiLyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgaW5kZXguanMuTElDRU5TRS50eHQgKi9cbigoKT0+e3ZhciBlPXszMDQ6KGUsdCxuKT0+e3ZhciByPXs4NTk0OihlLHQsbik9PntuLmQodCx7WjooKT0+b30pO3ZhciByPS9eKChjaGlsZHJlbnxkYW5nZXJvdXNseVNldElubmVySFRNTHxrZXl8cmVmfGF1dG9Gb2N1c3xkZWZhdWx0VmFsdWV8ZGVmYXVsdENoZWNrZWR8aW5uZXJIVE1MfHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ3xzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmd8dmFsdWVMaW5rfGFjY2VwdHxhY2NlcHRDaGFyc2V0fGFjY2Vzc0tleXxhY3Rpb258YWxsb3d8YWxsb3dVc2VyTWVkaWF8YWxsb3dQYXltZW50UmVxdWVzdHxhbGxvd0Z1bGxTY3JlZW58YWxsb3dUcmFuc3BhcmVuY3l8YWx0fGFzeW5jfGF1dG9Db21wbGV0ZXxhdXRvUGxheXxjYXB0dXJlfGNlbGxQYWRkaW5nfGNlbGxTcGFjaW5nfGNoYWxsZW5nZXxjaGFyU2V0fGNoZWNrZWR8Y2l0ZXxjbGFzc0lEfGNsYXNzTmFtZXxjb2xzfGNvbFNwYW58Y29udGVudHxjb250ZW50RWRpdGFibGV8Y29udGV4dE1lbnV8Y29udHJvbHN8Y29udHJvbHNMaXN0fGNvb3Jkc3xjcm9zc09yaWdpbnxkYXRhfGRhdGVUaW1lfGRlY29kaW5nfGRlZmF1bHR8ZGVmZXJ8ZGlyfGRpc2FibGVkfGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlfGRvd25sb2FkfGRyYWdnYWJsZXxlbmNUeXBlfGZvcm18Zm9ybUFjdGlvbnxmb3JtRW5jVHlwZXxmb3JtTWV0aG9kfGZvcm1Ob1ZhbGlkYXRlfGZvcm1UYXJnZXR8ZnJhbWVCb3JkZXJ8aGVhZGVyc3xoZWlnaHR8aGlkZGVufGhpZ2h8aHJlZnxocmVmTGFuZ3xodG1sRm9yfGh0dHBFcXVpdnxpZHxpbnB1dE1vZGV8aW50ZWdyaXR5fGlzfGtleVBhcmFtc3xrZXlUeXBlfGtpbmR8bGFiZWx8bGFuZ3xsaXN0fGxvYWRpbmd8bG9vcHxsb3d8bWFyZ2luSGVpZ2h0fG1hcmdpbldpZHRofG1heHxtYXhMZW5ndGh8bWVkaWF8bWVkaWFHcm91cHxtZXRob2R8bWlufG1pbkxlbmd0aHxtdWx0aXBsZXxtdXRlZHxuYW1lfG5vbmNlfG5vVmFsaWRhdGV8b3BlbnxvcHRpbXVtfHBhdHRlcm58cGxhY2Vob2xkZXJ8cGxheXNJbmxpbmV8cG9zdGVyfHByZWxvYWR8cHJvZmlsZXxyYWRpb0dyb3VwfHJlYWRPbmx5fHJlZmVycmVyUG9saWN5fHJlbHxyZXF1aXJlZHxyZXZlcnNlZHxyb2xlfHJvd3N8cm93U3BhbnxzYW5kYm94fHNjb3BlfHNjb3BlZHxzY3JvbGxpbmd8c2VhbWxlc3N8c2VsZWN0ZWR8c2hhcGV8c2l6ZXxzaXplc3xzbG90fHNwYW58c3BlbGxDaGVja3xzcmN8c3JjRG9jfHNyY0xhbmd8c3JjU2V0fHN0YXJ0fHN0ZXB8c3R5bGV8c3VtbWFyeXx0YWJJbmRleHx0YXJnZXR8dGl0bGV8dHlwZXx1c2VNYXB8dmFsdWV8d2lkdGh8d21vZGV8d3JhcHxhYm91dHxkYXRhdHlwZXxpbmxpc3R8cHJlZml4fHByb3BlcnR5fHJlc291cmNlfHR5cGVvZnx2b2NhYnxhdXRvQ2FwaXRhbGl6ZXxhdXRvQ29ycmVjdHxhdXRvU2F2ZXxjb2xvcnxpbmVydHxpdGVtUHJvcHxpdGVtU2NvcGV8aXRlbVR5cGV8aXRlbUlEfGl0ZW1SZWZ8b258cmVzdWx0c3xzZWN1cml0eXx1bnNlbGVjdGFibGV8YWNjZW50SGVpZ2h0fGFjY3VtdWxhdGV8YWRkaXRpdmV8YWxpZ25tZW50QmFzZWxpbmV8YWxsb3dSZW9yZGVyfGFscGhhYmV0aWN8YW1wbGl0dWRlfGFyYWJpY0Zvcm18YXNjZW50fGF0dHJpYnV0ZU5hbWV8YXR0cmlidXRlVHlwZXxhdXRvUmV2ZXJzZXxhemltdXRofGJhc2VGcmVxdWVuY3l8YmFzZWxpbmVTaGlmdHxiYXNlUHJvZmlsZXxiYm94fGJlZ2lufGJpYXN8Ynl8Y2FsY01vZGV8Y2FwSGVpZ2h0fGNsaXB8Y2xpcFBhdGhVbml0c3xjbGlwUGF0aHxjbGlwUnVsZXxjb2xvckludGVycG9sYXRpb258Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyc3xjb2xvclByb2ZpbGV8Y29sb3JSZW5kZXJpbmd8Y29udGVudFNjcmlwdFR5cGV8Y29udGVudFN0eWxlVHlwZXxjdXJzb3J8Y3h8Y3l8ZHxkZWNlbGVyYXRlfGRlc2NlbnR8ZGlmZnVzZUNvbnN0YW50fGRpcmVjdGlvbnxkaXNwbGF5fGRpdmlzb3J8ZG9taW5hbnRCYXNlbGluZXxkdXJ8ZHh8ZHl8ZWRnZU1vZGV8ZWxldmF0aW9ufGVuYWJsZUJhY2tncm91bmR8ZW5kfGV4cG9uZW50fGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWR8ZmlsbHxmaWxsT3BhY2l0eXxmaWxsUnVsZXxmaWx0ZXJ8ZmlsdGVyUmVzfGZpbHRlclVuaXRzfGZsb29kQ29sb3J8Zmxvb2RPcGFjaXR5fGZvY3VzYWJsZXxmb250RmFtaWx5fGZvbnRTaXplfGZvbnRTaXplQWRqdXN0fGZvbnRTdHJldGNofGZvbnRTdHlsZXxmb250VmFyaWFudHxmb250V2VpZ2h0fGZvcm1hdHxmcm9tfGZyfGZ4fGZ5fGcxfGcyfGdseXBoTmFtZXxnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbHxnbHlwaE9yaWVudGF0aW9uVmVydGljYWx8Z2x5cGhSZWZ8Z3JhZGllbnRUcmFuc2Zvcm18Z3JhZGllbnRVbml0c3xoYW5naW5nfGhvcml6QWR2WHxob3Jpek9yaWdpblh8aWRlb2dyYXBoaWN8aW1hZ2VSZW5kZXJpbmd8aW58aW4yfGludGVyY2VwdHxrfGsxfGsyfGszfGs0fGtlcm5lbE1hdHJpeHxrZXJuZWxVbml0TGVuZ3RofGtlcm5pbmd8a2V5UG9pbnRzfGtleVNwbGluZXN8a2V5VGltZXN8bGVuZ3RoQWRqdXN0fGxldHRlclNwYWNpbmd8bGlnaHRpbmdDb2xvcnxsaW1pdGluZ0NvbmVBbmdsZXxsb2NhbHxtYXJrZXJFbmR8bWFya2VyTWlkfG1hcmtlclN0YXJ0fG1hcmtlckhlaWdodHxtYXJrZXJVbml0c3xtYXJrZXJXaWR0aHxtYXNrfG1hc2tDb250ZW50VW5pdHN8bWFza1VuaXRzfG1hdGhlbWF0aWNhbHxtb2RlfG51bU9jdGF2ZXN8b2Zmc2V0fG9wYWNpdHl8b3BlcmF0b3J8b3JkZXJ8b3JpZW50fG9yaWVudGF0aW9ufG9yaWdpbnxvdmVyZmxvd3xvdmVybGluZVBvc2l0aW9ufG92ZXJsaW5lVGhpY2tuZXNzfHBhbm9zZTF8cGFpbnRPcmRlcnxwYXRoTGVuZ3RofHBhdHRlcm5Db250ZW50VW5pdHN8cGF0dGVyblRyYW5zZm9ybXxwYXR0ZXJuVW5pdHN8cG9pbnRlckV2ZW50c3xwb2ludHN8cG9pbnRzQXRYfHBvaW50c0F0WXxwb2ludHNBdFp8cHJlc2VydmVBbHBoYXxwcmVzZXJ2ZUFzcGVjdFJhdGlvfHByaW1pdGl2ZVVuaXRzfHJ8cmFkaXVzfHJlZlh8cmVmWXxyZW5kZXJpbmdJbnRlbnR8cmVwZWF0Q291bnR8cmVwZWF0RHVyfHJlcXVpcmVkRXh0ZW5zaW9uc3xyZXF1aXJlZEZlYXR1cmVzfHJlc3RhcnR8cmVzdWx0fHJvdGF0ZXxyeHxyeXxzY2FsZXxzZWVkfHNoYXBlUmVuZGVyaW5nfHNsb3BlfHNwYWNpbmd8c3BlY3VsYXJDb25zdGFudHxzcGVjdWxhckV4cG9uZW50fHNwZWVkfHNwcmVhZE1ldGhvZHxzdGFydE9mZnNldHxzdGREZXZpYXRpb258c3RlbWh8c3RlbXZ8c3RpdGNoVGlsZXN8c3RvcENvbG9yfHN0b3BPcGFjaXR5fHN0cmlrZXRocm91Z2hQb3NpdGlvbnxzdHJpa2V0aHJvdWdoVGhpY2tuZXNzfHN0cmluZ3xzdHJva2V8c3Ryb2tlRGFzaGFycmF5fHN0cm9rZURhc2hvZmZzZXR8c3Ryb2tlTGluZWNhcHxzdHJva2VMaW5lam9pbnxzdHJva2VNaXRlcmxpbWl0fHN0cm9rZU9wYWNpdHl8c3Ryb2tlV2lkdGh8c3VyZmFjZVNjYWxlfHN5c3RlbUxhbmd1YWdlfHRhYmxlVmFsdWVzfHRhcmdldFh8dGFyZ2V0WXx0ZXh0QW5jaG9yfHRleHREZWNvcmF0aW9ufHRleHRSZW5kZXJpbmd8dGV4dExlbmd0aHx0b3x0cmFuc2Zvcm18dTF8dTJ8dW5kZXJsaW5lUG9zaXRpb258dW5kZXJsaW5lVGhpY2tuZXNzfHVuaWNvZGV8dW5pY29kZUJpZGl8dW5pY29kZVJhbmdlfHVuaXRzUGVyRW18dkFscGhhYmV0aWN8dkhhbmdpbmd8dklkZW9ncmFwaGljfHZNYXRoZW1hdGljYWx8dmFsdWVzfHZlY3RvckVmZmVjdHx2ZXJzaW9ufHZlcnRBZHZZfHZlcnRPcmlnaW5YfHZlcnRPcmlnaW5ZfHZpZXdCb3h8dmlld1RhcmdldHx2aXNpYmlsaXR5fHdpZHRoc3x3b3JkU3BhY2luZ3x3cml0aW5nTW9kZXx4fHhIZWlnaHR8eDF8eDJ8eENoYW5uZWxTZWxlY3Rvcnx4bGlua0FjdHVhdGV8eGxpbmtBcmNyb2xlfHhsaW5rSHJlZnx4bGlua1JvbGV8eGxpbmtTaG93fHhsaW5rVGl0bGV8eGxpbmtUeXBlfHhtbEJhc2V8eG1sbnN8eG1sbnNYbGlua3x4bWxMYW5nfHhtbFNwYWNlfHl8eTF8eTJ8eUNoYW5uZWxTZWxlY3Rvcnx6fHpvb21BbmRQYW58Zm9yfGNsYXNzfGF1dG9mb2N1cyl8KChbRGRdW0FhXVtUdF1bQWFdfFtBYV1bUnJdW0lpXVtBYV18eCktLiopKSQvO2NvbnN0IG89KGE9e30sZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWFbZV0mJihhW2VdPSh0PWUsci50ZXN0KHQpfHwxMTE9PT10LmNoYXJDb2RlQXQoMCkmJjExMD09PXQuY2hhckNvZGVBdCgxKSYmdC5jaGFyQ29kZUF0KDIpPDkxKSksYVtlXTt2YXIgdH0pO3ZhciBhfSwxNTIxOihlLHQsbik9PntuLnIodCksbi5kKHQse0FjdGl2aXR5TG9nSWNvbjooKT0+YSxBbGlnbkJhc2VsaW5lSWNvbjooKT0+aSxBbGlnbkJvdHRvbUljb246KCk9PmwsQWxpZ25DZW50ZXJIb3Jpem9udGFsbHlJY29uOigpPT5jLEFsaWduQ2VudGVyVmVydGljYWxseUljb246KCk9PnMsQWxpZ25MZWZ0SWNvbjooKT0+dSxBbGlnblJpZ2h0SWNvbjooKT0+ZCxBbGlnblRvcEljb246KCk9PmYsQWxsU2lkZXNJY29uOigpPT5wLEFuZ2xlSWNvbjooKT0+aCxBcmNoaXZlSWNvbjooKT0+QyxBcnJvd0JvdHRvbUxlZnRJY29uOigpPT52LEFycm93Qm90dG9tUmlnaHRJY29uOigpPT5nLEFycm93RG93bkljb246KCk9Pm0sQXJyb3dMZWZ0SWNvbjooKT0+dyxBcnJvd1JpZ2h0SWNvbjooKT0+eSxBcnJvd1RvcExlZnRJY29uOigpPT5iLEFycm93VG9wUmlnaHRJY29uOigpPT54LEFycm93VXBJY29uOigpPT5PLEFzcGVjdFJhdGlvSWNvbjooKT0+TCxBdmF0YXJJY29uOigpPT5NLEJhY2twYWNrSWNvbjooKT0+UyxCYWRnZUljb246KCk9Pl8sQmFyQ2hhcnRJY29uOigpPT5qLEJlbGxJY29uOigpPT5FLEJsZW5kaW5nTW9kZUljb246KCk9PlAsQm9va21hcmtJY29uOigpPT5rLEJvcmRlckFsbEljb246KCk9PkgsQm9yZGVyQm90dG9tSWNvbjooKT0+VixCb3JkZXJEYXNoZWRJY29uOigpPT5SLEJvcmRlckRvdHRlZEljb246KCk9PkksQm9yZGVyTGVmdEljb246KCk9PlosQm9yZGVyTm9uZUljb246KCk9PkEsQm9yZGVyUmlnaHRJY29uOigpPT5ELEJvcmRlclNvbGlkSWNvbjooKT0+QixCb3JkZXJTcGxpdEljb246KCk9PlQsQm9yZGVyU3R5bGVJY29uOigpPT4kLEJvcmRlclRvcEljb246KCk9PkYsQm94SWNvbjooKT0+VyxCb3hNb2RlbEljb246KCk9Pk4sQnV0dG9uSWNvbjooKT0+eixDYWxlbmRhckljb246KCk9PlUsQ2FtZXJhSWNvbjooKT0+RyxDYXJkU3RhY2tJY29uOigpPT5xLENhcmRTdGFja01pbnVzSWNvbjooKT0+WSxDYXJkU3RhY2tQbHVzSWNvbjooKT0+SyxDYXJldERvd25JY29uOigpPT5YLENhcmV0TGVmdEljb246KCk9PlEsQ2FyZXRSaWdodEljb246KCk9PkosQ2FyZXRTb3J0SWNvbjooKT0+ZWUsQ2FyZXRVcEljb246KCk9PnRlLENoYXRCdWJibGVJY29uOigpPT5uZSxDaGVja0NpcmNsZWRJY29uOigpPT5vZSxDaGVja0ljb246KCk9PnJlLENoZWNrYm94SWNvbjooKT0+YWUsQ2hldnJvbkRvd25JY29uOigpPT5pZSxDaGV2cm9uTGVmdEljb246KCk9PmxlLENoZXZyb25SaWdodEljb246KCk9PmNlLENoZXZyb25VcEljb246KCk9PnNlLENpcmNsZUJhY2tzbGFzaEljb246KCk9PmRlLENpcmNsZUljb246KCk9PnVlLENsaXBib2FyZENvcHlJY29uOigpPT5wZSxDbGlwYm9hcmRJY29uOigpPT5mZSxDbG9ja0ljb246KCk9PmhlLENvZGVJY29uOigpPT5DZSxDb2RlU2FuZGJveExvZ29JY29uOigpPT52ZSxDb2x1bW5TcGFjaW5nSWNvbjooKT0+Z2UsQ29sdW1uc0ljb246KCk9Pm1lLENvbW1pdEljb246KCk9PndlLENvbXBvbmVudDFJY29uOigpPT55ZSxDb21wb25lbnQySWNvbjooKT0+YmUsQ29tcG9uZW50Qm9vbGVhbkljb246KCk9PnhlLENvbXBvbmVudEluc3RhbmNlSWNvbjooKT0+T2UsQ29tcG9uZW50Tm9uZUljb246KCk9PkxlLENvbXBvbmVudFBsYWNlaG9sZGVySWNvbjooKT0+TWUsQ29udGFpbmVySWNvbjooKT0+U2UsQ29va2llSWNvbjooKT0+X2UsQ29weUljb246KCk9PmplLENvcm5lckJvdHRvbUxlZnRJY29uOigpPT5FZSxDb3JuZXJCb3R0b21SaWdodEljb246KCk9PlBlLENvcm5lclRvcExlZnRJY29uOigpPT5rZSxDb3JuZXJUb3BSaWdodEljb246KCk9PkhlLENvcm5lcnNJY29uOigpPT5WZSxDb3VudGRvd25UaW1lckljb246KCk9PlJlLENvdW50ZXJDbG9ja3dpc2VDbG9ja0ljb246KCk9PkllLENyb3BJY29uOigpPT5aZSxDcm9zczFJY29uOigpPT5BZSxDcm9zczJJY29uOigpPT5EZSxDcm9zc0NpcmNsZWRJY29uOigpPT5CZSxDcm9zc2hhaXIxSWNvbjooKT0+VGUsQ3Jvc3NoYWlyMkljb246KCk9PiRlLENydW1wbGVkUGFwZXJJY29uOigpPT5GZSxDdWJlSWNvbjooKT0+V2UsQ3Vyc29yQXJyb3dJY29uOigpPT5OZSxDdXJzb3JUZXh0SWNvbjooKT0+emUsRGFzaEljb246KCk9PlVlLERhc2hib2FyZEljb246KCk9PkdlLERpbWVuc2lvbnNJY29uOigpPT5xZSxEaXNjSWNvbjooKT0+WWUsRGl2aWRlckhvcml6b250YWxJY29uOigpPT5LZSxEaXZpZGVyVmVydGljYWxJY29uOigpPT5YZSxEb3RGaWxsZWRJY29uOigpPT5KZSxEb3RJY29uOigpPT5RZSxEb3RzSG9yaXpvbnRhbEljb246KCk9PmV0LERvdHNWZXJ0aWNhbEljb246KCk9PnR0LERvdWJsZUFycm93RG93bkljb246KCk9Pm50LERvdWJsZUFycm93TGVmdEljb246KCk9PnJ0LERvdWJsZUFycm93UmlnaHRJY29uOigpPT5vdCxEb3VibGVBcnJvd1VwSWNvbjooKT0+YXQsRG93bmxvYWRJY29uOigpPT5pdCxEcmFnSGFuZGxlRG90czFJY29uOigpPT5sdCxEcmFnSGFuZGxlRG90czJJY29uOigpPT5jdCxEcmFnSGFuZGxlSG9yaXpvbnRhbEljb246KCk9PnN0LERyYWdIYW5kbGVWZXJ0aWNhbEljb246KCk9PnV0LERyYXdpbmdQaW5GaWxsZWRJY29uOigpPT5mdCxEcmF3aW5nUGluSWNvbjooKT0+ZHQsRHJvcGRvd25NZW51SWNvbjooKT0+cHQsRW50ZXJGdWxsU2NyZWVuSWNvbjooKT0+Q3QsRW50ZXJJY29uOigpPT5odCxFbnZlbG9wZUNsb3NlZEljb246KCk9PnZ0LEVudmVsb3BlT3Blbkljb246KCk9Pmd0LEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uOigpPT5tdCxFeGl0RnVsbFNjcmVlbkljb246KCk9Pnl0LEV4aXRJY29uOigpPT53dCxFeHRlcm5hbExpbmtJY29uOigpPT5idCxFeWVDbG9zZWRJY29uOigpPT54dCxFeWVOb25lSWNvbjooKT0+T3QsRXllT3Blbkljb246KCk9Pkx0LEZhY2VJY29uOigpPT5NdCxGaWdtYUxvZ29JY29uOigpPT5TdCxGaWxlSWNvbjooKT0+X3QsRmlsZU1pbnVzSWNvbjooKT0+anQsRmlsZVBsdXNJY29uOigpPT5FdCxGaWxlVGV4dEljb246KCk9PlB0LEZvbnRCb2xkSWNvbjooKT0+a3QsRm9udEZhbWlseUljb246KCk9Pkh0LEZvbnRJdGFsaWNJY29uOigpPT5WdCxGb250Um9tYW5JY29uOigpPT5SdCxGb250U2l6ZUljb246KCk9Pkl0LEZvbnRTdHlsZUljb246KCk9Plp0LEZyYW1lSWNvbjooKT0+QXQsRnJhbWVyTG9nb0ljb246KCk9PkR0LEdlYXJJY29uOigpPT5CdCxHaXRIdWJMb2dvSWNvbjooKT0+VHQsR2xvYmVJY29uOigpPT4kdCxHcmlkSWNvbjooKT0+RnQsR3JvdXBJY29uOigpPT5XdCxIYWxmMUljb246KCk9Pk50LEhhbGYySWNvbjooKT0+enQsSGFtYnVyZ2VyTWVudUljb246KCk9PlV0LEhhbmRJY29uOigpPT5HdCxIZWFkaW5nSWNvbjooKT0+cXQsSGVpZ2h0SWNvbjooKT0+WXQsSG9tZUljb246KCk9Pkt0LEljb25KYXJMb2dvSWNvbjooKT0+WHQsSWRDYXJkSWNvbjooKT0+UXQsSW1hZ2VJY29uOigpPT5KdCxJbmZvQ2lyY2xlZEljb246KCk9PmVuLElucHV0SWNvbjooKT0+dG4sTGFwVGltZXJJY29uOigpPT5ubixMYXllcnNJY29uOigpPT5ybixMYXlvdXRJY29uOigpPT5vbixMZXR0ZXJDYXNlQ2FwaXRhbGl6ZUljb246KCk9PmFuLExldHRlckNhc2VMb3dlcmNhc2VJY29uOigpPT5sbixMZXR0ZXJDYXNlVG9nZ2xlSWNvbjooKT0+Y24sTGV0dGVyQ2FzZVVwcGVyY2FzZUljb246KCk9PnNuLExldHRlclNwYWNpbmdJY29uOigpPT51bixMaWdodG5pbmdCb2x0SWNvbjooKT0+ZG4sTGluZUhlaWdodEljb246KCk9PmZuLExpbmsxSWNvbjooKT0+cG4sTGluazJJY29uOigpPT5obixMaW5rQnJlYWsxSWNvbjooKT0+Q24sTGlua0JyZWFrMkljb246KCk9PnZuLExpbmtOb25lMUljb246KCk9PmduLExpbmtOb25lMkljb246KCk9Pm1uLExpc3RCdWxsZXRJY29uOigpPT53bixMb2NrQ2xvc2VkSWNvbjooKT0+eW4sTG9ja09wZW4xSWNvbjooKT0+Ym4sTG9ja09wZW4ySWNvbjooKT0+eG4sTG9vcEljb246KCk9Pk9uLE1hZ2ljV2FuZEljb246KCk9PkxuLE1hZ25pZnlpbmdHbGFzc0ljb246KCk9Pk1uLE1hcmdpbkljb246KCk9PlNuLE1hc2tPZmZJY29uOigpPT5fbixNYXNrT25JY29uOigpPT5qbixNaW51c0NpcmNsZWRJY29uOigpPT5QbixNaW51c0ljb246KCk9PkVuLE1peEljb246KCk9PmtuLE1peGVySG9yaXpvbnRhbEljb246KCk9PkhuLE1peGVyVmVydGljYWxJY29uOigpPT5WbixNb2R1bHpMb2dvSWNvbjooKT0+Um4sTW9vbkljb246KCk9PkluLE1vdmVJY29uOigpPT5abixOb3Rpb25Mb2dvSWNvbjooKT0+QW4sT3BhY2l0eUljb246KCk9PkRuLE92ZXJsaW5lSWNvbjooKT0+Qm4sUGFkZGluZ0ljb246KCk9PlRuLFBhcGVyUGxhbmVJY29uOigpPT4kbixQYXVzZUljb246KCk9PkZuLFBlbmNpbDFJY29uOigpPT5XbixQZW5jaWwySWNvbjooKT0+Tm4sUGVyc29uSWNvbjooKT0+em4sUGllQ2hhcnRJY29uOigpPT5VbixQaWxjcm93SWNvbjooKT0+R24sUGluQm90dG9tSWNvbjooKT0+cW4sUGluTGVmdEljb246KCk9PlluLFBpblJpZ2h0SWNvbjooKT0+S24sUGluVG9wSWNvbjooKT0+WG4sUGxheUljb246KCk9PlFuLFBsdXNDaXJjbGVkSWNvbjooKT0+ZXIsUGx1c0ljb246KCk9PkpuLFF1ZXN0aW9uTWFya0NpcmNsZWRJY29uOigpPT5ucixRdWVzdGlvbk1hcmtJY29uOigpPT50cixRdW90ZUljb246KCk9PnJyLFJhZGlvYnV0dG9uSWNvbjooKT0+b3IsUmVhZGVySWNvbjooKT0+YXIsUmVsb2FkSWNvbjooKT0+aXIsUmVzZXRJY29uOigpPT5scixSZXN1bWVJY29uOigpPT5jcixSb2NrZXRJY29uOigpPT5zcixSb3RhdGVDb3VudGVyQ2xvY2t3aXNlSWNvbjooKT0+dXIsUm93U3BhY2luZ0ljb246KCk9PmRyLFJvd3NJY29uOigpPT5mcixSdWxlckhvcml6b250YWxJY29uOigpPT5wcixSdWxlclNxdWFyZUljb246KCk9PmhyLFNlY3Rpb25JY29uOigpPT5DcixTZXdpbmdQaW5GaWxsZWRJY29uOigpPT5ncixTZXdpbmdQaW5JY29uOigpPT52cixTaGFkb3dJY29uOigpPT5tcixTaGFkb3dJbm5lckljb246KCk9PndyLFNoYWRvd05vbmVJY29uOigpPT55cixTaGFkb3dPdXRlckljb246KCk9PmJyLFNoYXJlMUljb246KCk9PnhyLFNoYXJlMkljb246KCk9Pk9yLFNodWZmbGVJY29uOigpPT5McixTaXplSWNvbjooKT0+TXIsU2tldGNoTG9nb0ljb246KCk9PlNyLFNsYXNoSWNvbjooKT0+X3IsU2xpZGVySWNvbjooKT0+anIsU3BhY2VCZXR3ZWVuSG9yaXpvbnRhbGx5SWNvbjooKT0+RXIsU3BhY2VCZXR3ZWVuVmVydGljYWxseUljb246KCk9PlByLFNwYWNlRXZlbmx5SG9yaXpvbnRhbGx5SWNvbjooKT0+a3IsU3BhY2VFdmVubHlWZXJ0aWNhbGx5SWNvbjooKT0+SHIsU3BlYWtlckxvdWRJY29uOigpPT5WcixTcGVha2VyTW9kZXJhdGVJY29uOigpPT5ScixTcGVha2VyT2ZmSWNvbjooKT0+SXIsU3BlYWtlclF1aWV0SWNvbjooKT0+WnIsU3F1YXJlSWNvbjooKT0+QXIsU3RhY2tJY29uOigpPT5EcixTdGFyRmlsbGVkSWNvbjooKT0+VHIsU3Rhckljb246KCk9PkJyLFN0aXRjaGVzTG9nb0ljb246KCk9PiRyLFN0b3BJY29uOigpPT5GcixTdG9wd2F0Y2hJY29uOigpPT5XcixTdHJldGNoSG9yaXpvbnRhbGx5SWNvbjooKT0+TnIsU3RyZXRjaFZlcnRpY2FsbHlJY29uOigpPT56cixTdHJpa2V0aHJvdWdoSWNvbjooKT0+VXIsU3VuSWNvbjooKT0+R3IsU3dpdGNoSWNvbjooKT0+cXIsU3ltYm9sSWNvbjooKT0+WXIsVGFibGVJY29uOigpPT5LcixUYXJnZXRJY29uOigpPT5YcixUZXh0QWxpZ25DZW50ZXJJY29uOigpPT5KcixUZXh0QWxpZ25KdXN0aWZ5SWNvbjooKT0+ZW8sVGV4dEFsaWduTGVmdEljb246KCk9PnRvLFRleHRBbGlnblJpZ2h0SWNvbjooKT0+bm8sVGV4dEljb246KCk9PlFyLFRleHROb25lSWNvbjooKT0+cm8sVGhpY2tBcnJvd0Rvd25JY29uOigpPT5vbyxUaGlja0Fycm93TGVmdEljb246KCk9PmFvLFRoaWNrQXJyb3dSaWdodEljb246KCk9PmlvLFRoaWNrQXJyb3dVcEljb246KCk9PmxvLFRpbWVySWNvbjooKT0+Y28sVG9rZW5zSWNvbjooKT0+c28sVHJhY2tOZXh0SWNvbjooKT0+dW8sVHJhY2tQcmV2aW91c0ljb246KCk9PmZvLFRyYW5zcGFyZW5jeUdyaWRJY29uOigpPT5wbyxUcmFzaEljb246KCk9PmhvLFRyaWFuZ2xlRG93bkljb246KCk9PkNvLFRyaWFuZ2xlTGVmdEljb246KCk9PnZvLFRyaWFuZ2xlUmlnaHRJY29uOigpPT5nbyxUcmlhbmdsZVVwSWNvbjooKT0+bW8sVHdpdHRlckxvZ29JY29uOigpPT53byxVbmRlcmxpbmVJY29uOigpPT55byxVcGRhdGVJY29uOigpPT5ibyxVcGxvYWRJY29uOigpPT54byxWYWx1ZUljb246KCk9Pk9vLFZhbHVlTm9uZUljb246KCk9PkxvLFZlcmNlbExvZ29JY29uOigpPT5NbyxWaWRlb0ljb246KCk9PlNvLFZpZXdHcmlkSWNvbjooKT0+X28sVmlld0hvcml6b250YWxJY29uOigpPT5qbyxWaWV3Tm9uZUljb246KCk9PkVvLFZpZXdWZXJ0aWNhbEljb246KCk9PlBvLFdpZHRoSWNvbjooKT0+a28sWm9vbUluSWNvbjooKT0+SG8sWm9vbU91dEljb246KCk9PlZvfSk7dmFyIHI9big2Njg5KTtmdW5jdGlvbiBvKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfXZhciBhPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wIDEuNUMwIDEuMjIzODYgMC4yMjM4NTggMSAwLjUgMUgyLjVDMi43NzYxNCAxIDMgMS4yMjM4NiAzIDEuNUMzIDEuNzc2MTQgMi43NzYxNCAyIDIuNSAySDAuNUMwLjIyMzg1OCAyIDAgMS43NzYxNCAwIDEuNVpNNCAxLjVDNCAxLjIyMzg2IDQuMjIzODYgMSA0LjUgMUgxNC41QzE0Ljc3NjEgMSAxNSAxLjIyMzg2IDE1IDEuNUMxNSAxLjc3NjE0IDE0Ljc3NjEgMiAxNC41IDJINC41QzQuMjIzODYgMiA0IDEuNzc2MTQgNCAxLjVaTTQgNC41QzQgNC4yMjM4NiA0LjIyMzg2IDQgNC41IDRIMTEuNUMxMS43NzYxIDQgMTIgNC4yMjM4NiAxMiA0LjVDMTIgNC43NzYxNCAxMS43NzYxIDUgMTEuNSA1SDQuNUM0LjIyMzg2IDUgNCA0Ljc3NjE0IDQgNC41Wk0wIDcuNUMwIDcuMjIzODYgMC4yMjM4NTggNyAwLjUgN0gyLjVDMi43NzYxNCA3IDMgNy4yMjM4NiAzIDcuNUMzIDcuNzc2MTQgMi43NzYxNCA4IDIuNSA4SDAuNUMwLjIyMzg1OCA4IDAgNy43NzYxNCAwIDcuNVpNNCA3LjVDNCA3LjIyMzg2IDQuMjIzODYgNyA0LjUgN0gxNC41QzE0Ljc3NjEgNyAxNSA3LjIyMzg2IDE1IDcuNUMxNSA3Ljc3NjE0IDE0Ljc3NjEgOCAxNC41IDhINC41QzQuMjIzODYgOCA0IDcuNzc2MTQgNCA3LjVaTTQgMTAuNUM0IDEwLjIyMzkgNC4yMjM4NiAxMCA0LjUgMTBIMTEuNUMxMS43NzYxIDEwIDEyIDEwLjIyMzkgMTIgMTAuNUMxMiAxMC43NzYxIDExLjc3NjEgMTEgMTEuNSAxMUg0LjVDNC4yMjM4NiAxMSA0IDEwLjc3NjEgNCAxMC41Wk0wIDEzLjVDMCAxMy4yMjM5IDAuMjIzODU4IDEzIDAuNSAxM0gyLjVDMi43NzYxNCAxMyAzIDEzLjIyMzkgMyAxMy41QzMgMTMuNzc2MSAyLjc3NjE0IDE0IDIuNSAxNEgwLjVDMC4yMjM4NTggMTQgMCAxMy43NzYxIDAgMTMuNVpNNCAxMy41QzQgMTMuMjIzOSA0LjIyMzg2IDEzIDQuNSAxM0gxNC41QzE0Ljc3NjEgMTMgMTUgMTMuMjIzOSAxNSAxMy41QzE1IDEzLjc3NjEgMTQuNzc2MSAxNCAxNC41IDE0SDQuNUM0LjIyMzg2IDE0IDQgMTMuNzc2MSA0IDEzLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxpPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMC41IDEuNzUwMDNDMTAuNzEwNyAxLjc1MDAzIDEwLjg5ODggMS44ODIxNyAxMC45NzAzIDIuMDgwNDJMMTMuOTcwMyAxMC40QzE0LjA2NCAxMC42NTk4IDEzLjkyOTMgMTAuOTQ2MyAxMy42Njk2IDExLjA0QzEzLjQwOTggMTEuMTMzNiAxMy4xMjMzIDEwLjk5OSAxMy4wMjk2IDEwLjczOTJMMTIuMDQ3NyA4LjAxNjA2SDguOTUyMjdMNy45NzAzMSAxMC43MzkyQzcuODc2NjQgMTAuOTk5IDcuNTkwMTIgMTEuMTMzNiA3LjMzMDM1IDExLjA0QzcuMDcwNTggMTAuOTQ2MyA2LjkzNTkzIDEwLjY1OTggNy4wMjk2IDEwLjRMMTAuMDI5NiAyLjA4MDQyQzEwLjEwMTEgMS44ODIxNyAxMC4yODkyIDEuNzUwMDMgMTAuNSAxLjc1MDAzWk0xMC41IDMuNzI0MDJMMTEuNzQxMSA3LjE2NjA2SDkuMjU4NzdMMTAuNSAzLjcyNDAyWk0yLjQ5OTQ5IDIuMDk5OTdDMi43MjA0IDIuMDk5OTcgMi44OTk0OSAyLjI3OTA2IDIuODk5NDkgMi40OTk5N0wyLjg5OTQ5IDkuNTM0MjhMNC4yMTY2NCA4LjIxNzEzQzQuMzcyODUgOC4wNjA5MiA0LjYyNjEyIDguMDYwOTIgNC43ODIzMyA4LjIxNzEzQzQuOTM4NTQgOC4zNzMzNCA0LjkzODU0IDguNjI2NiA0Ljc4MjMzIDguNzgyODFMMi43ODIzMyAxMC43ODI4QzIuNzA3MzIgMTAuODU3OCAyLjYwNTU3IDEwLjkgMi40OTk0OSAxMC45QzIuMzkzNCAxMC45IDIuMjkxNjYgMTAuODU3OCAyLjIxNjY0IDEwLjc4MjhMMC4yMTY2NDUgOC43ODI4MUMwLjA2MDQzNDkgOC42MjY2IDAuMDYwNDM0OSA4LjM3MzM0IDAuMjE2NjQ1IDguMjE3MTNDMC4zNzI4NTQgOC4wNjA5MiAwLjYyNjEyIDguMDYwOTIgMC43ODIzMyA4LjIxNzEzTDIuMDk5NDkgOS41MzQyOEwyLjA5OTQ5IDIuNDk5OTdDMi4wOTk0OSAyLjI3OTA2IDIuMjc4NTcgMi4wOTk5NyAyLjQ5OTQ5IDIuMDk5OTdaTTAuMDk5OTY5NSAxMy41MDAxQzAuMDk5OTY5NSAxMy4yNzkxIDAuMjc5MDU2IDEzLjEwMDEgMC40OTk5NjkgMTMuMTAwMUgxNC41QzE0LjcyMDkgMTMuMTAwMSAxNC45IDEzLjI3OTEgMTQuOSAxMy41MDAxQzE0LjkgMTMuNzIxIDE0LjcyMDkgMTMuOTAwMSAxNC41IDEzLjkwMDFIMC40OTk5NjlDMC4yNzkwNTYgMTMuOTAwMSAwLjA5OTk2OTUgMTMuNzIxIDAuMDk5OTY5NSAxMy41MDAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOSAzQzkgMi40NDc3MiA4LjU1MjI5IDIgOCAySDdDNi40NDc3MiAyIDYgMi40NDc3MiA2IDNMNiAxNEgxLjVDMS4yMjM4NiAxNCAxIDE0LjIyMzkgMSAxNC41QzEgMTQuNzc2MSAxLjIyMzg2IDE1IDEuNSAxNUw2IDE1SDlIMTMuNUMxMy43NzYxIDE1IDE0IDE0Ljc3NjEgMTQgMTQuNUMxNCAxNC4yMjM5IDEzLjc3NjEgMTQgMTMuNSAxNEg5VjNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxjPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02Ljk5OTg4IDFDNi40NDc1OSAxIDUuOTk5ODggMS40NDc3MiA1Ljk5OTg4IDJWN0gxLjQ5OTg4QzEuMjIzNzQgNyAwLjk5OTg3OCA3LjIyMzg2IDAuOTk5ODc4IDcuNUMwLjk5OTg3OCA3Ljc3NjE0IDEuMjIzNzQgOCAxLjQ5OTg4IDhINS45OTk4OFYxM0M1Ljk5OTg4IDEzLjU1MjMgNi40NDc1OSAxNCA2Ljk5OTg4IDE0SDcuOTk5ODhDOC41NTIxNiAxNCA4Ljk5OTg4IDEzLjU1MjMgOC45OTk4OCAxM1Y4SDEzLjQ5OTlDMTMuNzc2IDggMTMuOTk5OSA3Ljc3NjE0IDEzLjk5OTkgNy41QzEzLjk5OTkgNy4yMjM4NiAxMy43NzYgNyAxMy40OTk5IDdIOC45OTk4OFYyQzguOTk5ODggMS40NDc3MiA4LjU1MjE2IDEgNy45OTk4OCAxTDYuOTk5ODggMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuOTk5ODggNkMxLjQ0NzU5IDYgMC45OTk4NzcgNi40NDc3MiAwLjk5OTg3NyA3TDAuOTk5ODc3IDhDMC45OTk4NzcgOC41NTIyOCAxLjQ0NzU5IDkgMS45OTk4OCA5TDYuOTk5ODggOUw2Ljk5OTg4IDEzLjVDNi45OTk4OCAxMy43NzYxIDcuMjIzNzQgMTQgNy40OTk4OCAxNEM3Ljc3NjAyIDE0IDcuOTk5ODggMTMuNzc2MSA3Ljk5OTg4IDEzLjVMNy45OTk4OCA5TDEyLjk5OTkgOUMxMy41NTIyIDkgMTMuOTk5OSA4LjU1MjI4IDEzLjk5OTkgOEwxMy45OTk5IDdDMTMuOTk5OSA2LjQ0NzcyIDEzLjU1MjIgNiAxMi45OTk5IDZMNy45OTk4OCA2TDcuOTk5ODggMS41QzcuOTk5ODggMS4yMjM4NiA3Ljc3NjAyIDEgNy40OTk4OCAxQzcuMjIzNzMgMSA2Ljk5OTg4IDEuMjIzODYgNi45OTk4OCAxLjVMNi45OTk4OCA2TDEuOTk5ODggNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuNDk5OTk1IDAuOTk5OTk1QzAuMjIzODU1IDAuOTk5OTk1IC01LjU4NDU4ZS0wNyAxLjIyMzg1IC01LjQ2Mzg4ZS0wNyAxLjQ5OTk5TC0yLjE4NTU0ZS0wOCAxMy40OTk5Qy05Ljc4NDkyZS0wOSAxMy43NzYgMC4yMjM4NTUgMTMuOTk5OSAwLjQ5OTk5NSAxMy45OTk5QzAuNzc2MTM2IDEzLjk5OTkgMC45OTk5OTEgMTMuNzc2IDAuOTk5OTkxIDEzLjQ5OTlMMC45OTk5OTEgOC45OTk5M0wxMiA4Ljk5OTkzQzEyLjU1MjMgOC45OTk5MyAxMyA4LjU1MjIyIDEzIDcuOTk5OTNMMTMgNi45OTk5NEMxMyA2LjQ0NzY2IDEyLjU1MjMgNS45OTk5NSAxMiA1Ljk5OTk1TDAuOTk5OTkxIDUuOTk5OTVMMC45OTk5OTEgMS40OTk5OUMwLjk5OTk5MSAxLjIyMzg1IDAuNzc2MTM1IDAuOTk5OTk1IDAuNDk5OTk1IDAuOTk5OTk1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTQuNDk5OSAxQzE0LjIyMzcgMSAxMy45OTk5IDEuMjIzODYgMTMuOTk5OSAxLjVMMTMuOTk5OSA2TDIuOTk5ODggNkMyLjQ0NzU5IDYgMS45OTk4OCA2LjQ0NzcyIDEuOTk5ODggN0wxLjk5OTg4IDhDMS45OTk4OCA4LjU1MjI4IDIuNDQ3NTkgOSAyLjk5OTg4IDlMMTMuOTk5OSA5TDEzLjk5OTkgMTMuNUMxMy45OTk5IDEzLjc3NjEgMTQuMjIzNyAxNCAxNC40OTk5IDE0QzE0Ljc3NiAxNCAxNC45OTk5IDEzLjc3NjEgMTQuOTk5OSAxMy41TDE0Ljk5OTkgOUwxNC45OTk5IDZMMTQuOTk5OSAxLjVDMTQuOTk5OSAxLjIyMzg2IDE0Ljc3NiAxIDE0LjQ5OTkgMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNSAwQzEuMjIzODYgMCAxIDAuMjIzODU4IDEgMC41QzEgMC43NzYxNDIgMS4yMjM4NiAxIDEuNSAxSDZWMTJDNiAxMi41NTIzIDYuNDQ3NzIgMTMgNyAxM0g4QzguNTUyMjggMTMgOSAxMi41NTIzIDkgMTJWMUgxMy41QzEzLjc3NjEgMSAxNCAwLjc3NjE0MiAxNCAwLjVDMTQgMC4yMjM4NTggMTMuNzc2MSAwIDEzLjUgMEg5SDZIMS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDAuNzVMOS43NSAzSDUuMjVMNy41IDAuNzVaTTcuNSAxNC4yNUw5Ljc1IDEySDUuMjVMNy41IDE0LjI1Wk0zIDUuMjVMMC43NSA3LjVMMyA5Ljc1VjUuMjVaTTE0LjI1IDcuNUwxMiA1LjI1VjkuNzVMMTQuMjUgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC44OTE0IDIuMTkzN0M5LjExNTggMi4zNTQ2NCA5LjE2NzI1IDIuNjY3MDEgOS4wMDYzMSAyLjg5MTQxTDIuNDczODggMTJIMTMuNUMxMy43NzYxIDEyIDE0IDEyLjIyMzkgMTQgMTIuNUMxNCAxMi43NzYyIDEzLjc3NjEgMTMgMTMuNSAxM0gxLjVDMS4zMTI1NCAxMyAxLjE0MDgyIDEyLjg5NTIgMS4wNTUyIDEyLjcyODRDMC45Njk1NzggMTIuNTYxNiAwLjk4NDQzOCAxMi4zNjEgMS4wOTM2OSAxMi4yMDg2TDguMTkzNjkgMi4zMDg2MkM4LjM1NDYyIDIuMDg0MjIgOC42NjcgMi4wMzI3NyA4Ljg5MTQgMi4xOTM3Wk0xMS4xIDYuNTAwMDFDMTEuMSA2LjIyMzg3IDExLjMyMzggNi4wMDAwMSAxMS42IDYuMDAwMDFDMTEuODc2MSA2LjAwMDAxIDEyLjEgNi4yMjM4NyAxMi4xIDYuNTAwMDFDMTIuMSA2Ljc3NjE1IDExLjg3NjEgNy4wMDAwMSAxMS42IDcuMDAwMDFDMTEuMzIzOCA3LjAwMDAxIDExLjEgNi43NzYxNSAxMS4xIDYuNTAwMDFaTTEwLjQgNC4wMDAwMUMxMC4xMjM5IDQuMDAwMDEgOS45MDAwMyA0LjIyMzg3IDkuOTAwMDMgNC41MDAwMUM5LjkwMDAzIDQuNzc2MTUgMTAuMTIzOSA1LjAwMDAxIDEwLjQgNS4wMDAwMUMxMC42NzYyIDUuMDAwMDEgMTAuOSA0Ljc3NjE1IDEwLjkgNC41MDAwMUMxMC45IDQuMjIzODcgMTAuNjc2MiA0LjAwMDAxIDEwLjQgNC4wMDAwMVpNMTIuMSA4LjUwMDAxQzEyLjEgOC4yMjM4NyAxMi4zMjM4IDguMDAwMDEgMTIuNiA4LjAwMDAxQzEyLjg3NjEgOC4wMDAwMSAxMy4xIDguMjIzODcgMTMuMSA4LjUwMDAxQzEzLjEgOC43NzYxNSAxMi44NzYxIDkuMDAwMDEgMTIuNiA5LjAwMDAxQzEyLjMyMzggOS4wMDAwMSAxMi4xIDguNzc2MTUgMTIuMSA4LjUwMDAxWk0xMy40IDEwQzEzLjEyMzkgMTAgMTIuOSAxMC4yMjM5IDEyLjkgMTAuNUMxMi45IDEwLjc3NjEgMTMuMTIzOSAxMSAxMy40IDExQzEzLjY3NjIgMTEgMTMuOSAxMC43NzYxIDEzLjkgMTAuNUMxMy45IDEwLjIyMzkgMTMuNjc2MiAxMCAxMy40IDEwWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4zMDkwMiAxQzIuOTMwMjUgMSAyLjU4Mzk4IDEuMjE0IDIuNDE0NTkgMS41NTI3OUwxLjA1Mjc5IDQuMjc2MzlDMS4wMTgwNyA0LjM0NTgyIDEgNC40MjIzOCAxIDQuNVYxM0MxIDEzLjU1MjMgMS40NDc3MiAxNCAyIDE0SDEzQzEzLjU1MjMgMTQgMTQgMTMuNTUyMyAxNCAxM1Y0LjVDMTQgNC40MjIzOCAxMy45ODE5IDQuMzQ1ODIgMTMuOTQ3MiA0LjI3NjM5TDEyLjU4NTQgMS41NTI4MUMxMi40MTYgMS4yMTQwMyAxMi4wNjk4IDEuMDAwMDMgMTEuNjkxIDEuMDAwMDNMNy41IDEuMDAwMDFMMy4zMDkwMiAxWk0zLjMwOTAyIDJMNyAyLjAwMDAxVjRIMi4zMDkwMkwzLjMwOTAyIDJaTTggNFYyLjAwMDAyTDExLjY5MSAyLjAwMDAzTDEyLjY5MSA0SDhaTTcuNSA1SDEzVjEzSDJWNUg3LjVaTTUuNSA3QzUuMjIzODYgNyA1IDcuMjIzODYgNSA3LjVDNSA3Ljc3NjE0IDUuMjIzODYgOCA1LjUgOEg5LjVDOS43NzYxNCA4IDEwIDcuNzc2MTQgMTAgNy41QzEwIDcuMjIzODYgOS43NzYxNCA3IDkuNSA3SDUuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjM1MzYgMy42NDY0NEMxMS41NDg4IDMuODQxNyAxMS41NDg4IDQuMTU4MjggMTEuMzUzNiA0LjM1MzU0TDQuNzA3MTEgMTFMOSAxMUM5LjI3NjE0IDExIDkuNSAxMS4yMjM5IDkuNSAxMS41QzkuNSAxMS43NzYxIDkuMjc2MTQgMTIgOSAxMkwzLjUgMTJDMy4zNjczOSAxMiAzLjI0MDIxIDExLjk0NzMgMy4xNDY0NSAxMS44NTM2QzMuMDUyNjggMTEuNzU5OCAzIDExLjYzMjYgMyAxMS41TDMgNS45OTk5OUMzIDUuNzIzODUgMy4yMjM4NiA1LjQ5OTk5IDMuNSA1LjQ5OTk5QzMuNzc2MTQgNS40OTk5OSA0IDUuNzIzODUgNCA1Ljk5OTk5VjEwLjI5MjlMMTAuNjQ2NCAzLjY0NjQzQzEwLjg0MTcgMy40NTExNyAxMS4xNTgzIDMuNDUxMTcgMTEuMzUzNiAzLjY0NjQ0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy42NDY0NSAzLjY0NjQ0QzMuNDUxMTggMy44NDE3IDMuNDUxMTggNC4xNTgyOCAzLjY0NjQ1IDQuMzUzNTRMMTAuMjkyOSAxMUw2IDExQzUuNzIzODYgMTEgNS41IDExLjIyMzkgNS41IDExLjVDNS41IDExLjc3NjEgNS43MjM4NiAxMiA2IDEyTDExLjUgMTJDMTEuNjMyNiAxMiAxMS43NTk4IDExLjk0NzMgMTEuODUzNiAxMS44NTM2QzExLjk0NzMgMTEuNzU5OCAxMiAxMS42MzI2IDEyIDExLjVMMTIgNS45OTk5OUMxMiA1LjcyMzg1IDExLjc3NjEgNS40OTk5OSAxMS41IDUuNDk5OTlDMTEuMjIzOSA1LjQ5OTk5IDExIDUuNzIzODUgMTEgNS45OTk5OVYxMC4yOTI5TDQuMzUzNTUgMy42NDY0M0M0LjE1ODI5IDMuNDUxMTcgMy44NDE3MSAzLjQ1MTE3IDMuNjQ2NDUgMy42NDY0NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG09ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAyQzcuNzc2MTQgMiA4IDIuMjIzODYgOCAyLjVMOCAxMS4yOTI5TDExLjE0NjQgOC4xNDY0NUMxMS4zNDE3IDcuOTUxMTggMTEuNjU4MyA3Ljk1MTE4IDExLjg1MzYgOC4xNDY0NUMxMi4wNDg4IDguMzQxNzEgMTIuMDQ4OCA4LjY1ODI5IDExLjg1MzYgOC44NTM1NUw3Ljg1MzU1IDEyLjg1MzZDNy43NTk3OSAxMi45NDczIDcuNjMyNjEgMTMgNy41IDEzQzcuMzY3MzkgMTMgNy4yNDAyMSAxMi45NDczIDcuMTQ2NDUgMTIuODUzNkwzLjE0NjQ1IDguODUzNTVDMi45NTExOCA4LjY1ODI5IDIuOTUxMTggOC4zNDE3MSAzLjE0NjQ1IDguMTQ2NDVDMy4zNDE3MSA3Ljk1MTE4IDMuNjU4MjkgNy45NTExOCAzLjg1MzU1IDguMTQ2NDVMNyAxMS4yOTI5TDcgMi41QzcgMi4yMjM4NiA3LjIyMzg2IDIgNy41IDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx3PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02Ljg1MzU1IDMuMTQ2NDVDNy4wNDg4MiAzLjM0MTcxIDcuMDQ4ODIgMy42NTgyOSA2Ljg1MzU1IDMuODUzNTVMMy43MDcxMSA3SDEyLjVDMTIuNzc2MSA3IDEzIDcuMjIzODYgMTMgNy41QzEzIDcuNzc2MTQgMTIuNzc2MSA4IDEyLjUgOEgzLjcwNzExTDYuODUzNTUgMTEuMTQ2NEM3LjA0ODgyIDExLjM0MTcgNy4wNDg4MiAxMS42NTgzIDYuODUzNTUgMTEuODUzNkM2LjY1ODI5IDEyLjA0ODggNi4zNDE3MSAxMi4wNDg4IDYuMTQ2NDUgMTEuODUzNkwyLjE0NjQ1IDcuODUzNTVDMS45NTExOCA3LjY1ODI5IDEuOTUxMTggNy4zNDE3MSAyLjE0NjQ1IDcuMTQ2NDVMNi4xNDY0NSAzLjE0NjQ1QzYuMzQxNzEgMi45NTExOCA2LjY1ODI5IDIuOTUxMTggNi44NTM1NSAzLjE0NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC4xNDY0NSAzLjE0NjQ1QzguMzQxNzEgMi45NTExOCA4LjY1ODI5IDIuOTUxMTggOC44NTM1NSAzLjE0NjQ1TDEyLjg1MzYgNy4xNDY0NUMxMy4wNDg4IDcuMzQxNzEgMTMuMDQ4OCA3LjY1ODI5IDEyLjg1MzYgNy44NTM1NUw4Ljg1MzU1IDExLjg1MzZDOC42NTgyOSAxMi4wNDg4IDguMzQxNzEgMTIuMDQ4OCA4LjE0NjQ1IDExLjg1MzZDNy45NTExOCAxMS42NTgzIDcuOTUxMTggMTEuMzQxNyA4LjE0NjQ1IDExLjE0NjRMMTEuMjkyOSA4SDIuNUMyLjIyMzg2IDggMiA3Ljc3NjE0IDIgNy41QzIgNy4yMjM4NiAyLjIyMzg2IDcgMi41IDdIMTEuMjkyOUw4LjE0NjQ1IDMuODUzNTVDNy45NTExOCAzLjY1ODI5IDcuOTUxMTggMy4zNDE3MSA4LjE0NjQ1IDMuMTQ2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxiPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS4zNTM2IDExLjM1MzZDMTEuNTQ4OCAxMS4xNTgzIDExLjU0ODggMTAuODQxNyAxMS4zNTM2IDEwLjY0NjVMNC43MDcxMSA0TDkgNEM5LjI3NjE0IDQgOS41IDMuNzc2MTQgOS41IDMuNUM5LjUgMy4yMjM4NiA5LjI3NjE0IDMgOSAzTDMuNSAzQzMuMzY3MzkgMyAzLjI0MDIxIDMuMDUyNjggMy4xNDY0NSAzLjE0NjQ1QzMuMDUyNjggMy4yNDAyMiAzIDMuMzY3MzkgMyAzLjVMMyA5LjAwMDAxQzMgOS4yNzYxNSAzLjIyMzg2IDkuNTAwMDEgMy41IDkuNTAwMDFDMy43NzYxNCA5LjUwMDAxIDQgOS4yNzYxNSA0IDkuMDAwMDFWNC43MDcxMUwxMC42NDY0IDExLjM1MzZDMTAuODQxNyAxMS41NDg4IDExLjE1ODMgMTEuNTQ4OCAxMS4zNTM2IDExLjM1MzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx4PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjY0NjQ1IDExLjM1MzZDMy40NTExOCAxMS4xNTgzIDMuNDUxMTggMTAuODQxNyAzLjY0NjQ1IDEwLjY0NjVMMTAuMjkyOSA0TDYgNEM1LjcyMzg2IDQgNS41IDMuNzc2MTQgNS41IDMuNUM1LjUgMy4yMjM4NiA1LjcyMzg2IDMgNiAzTDExLjUgM0MxMS42MzI2IDMgMTEuNzU5OCAzLjA1MjY4IDExLjg1MzYgMy4xNDY0NUMxMS45NDczIDMuMjQwMjIgMTIgMy4zNjczOSAxMiAzLjVMMTIgOS4wMDAwMUMxMiA5LjI3NjE1IDExLjc3NjEgOS41MDAwMSAxMS41IDkuNTAwMDFDMTEuMjIzOSA5LjUwMDAxIDExIDkuMjc2MTUgMTEgOS4wMDAwMVY0LjcwNzExTDQuMzUzNTUgMTEuMzUzNkM0LjE1ODI5IDExLjU0ODggMy44NDE3MSAxMS41NDg4IDMuNjQ2NDUgMTEuMzUzNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMTQ2NDUgMi4xNDY0NUM3LjM0MTcxIDEuOTUxMTggNy42NTgyOSAxLjk1MTE4IDcuODUzNTUgMi4xNDY0NUwxMS44NTM2IDYuMTQ2NDVDMTIuMDQ4OCA2LjM0MTcxIDEyLjA0ODggNi42NTgyOSAxMS44NTM2IDYuODUzNTVDMTEuNjU4MyA3LjA0ODgyIDExLjM0MTcgNy4wNDg4MiAxMS4xNDY0IDYuODUzNTVMOCAzLjcwNzExTDggMTIuNUM4IDEyLjc3NjEgNy43NzYxNCAxMyA3LjUgMTNDNy4yMjM4NiAxMyA3IDEyLjc3NjEgNyAxMi41TDcgMy43MDcxMUwzLjg1MzU1IDYuODUzNTVDMy42NTgyOSA3LjA0ODgyIDMuMzQxNzEgNy4wNDg4MiAzLjE0NjQ1IDYuODUzNTVDMi45NTExOCA2LjY1ODI5IDIuOTUxMTggNi4zNDE3MSAzLjE0NjQ1IDYuMTQ2NDVMNy4xNDY0NSAyLjE0NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi41IDJIMTIuNUMxMi43NzYxIDIgMTMgMi4yMjM4NiAxMyAyLjVWMTIuNUMxMyAxMi43NzYxIDEyLjc3NjEgMTMgMTIuNSAxM0gyLjVDMi4yMjM4NiAxMyAyIDEyLjc3NjEgMiAxMi41VjIuNUMyIDIuMjIzODYgMi4yMjM4NiAyIDIuNSAyWk0xIDIuNUMxIDEuNjcxNTcgMS42NzE1NyAxIDIuNSAxSDEyLjVDMTMuMzI4NCAxIDE0IDEuNjcxNTcgMTQgMi41VjEyLjVDMTQgMTMuMzI4NCAxMy4zMjg0IDE0IDEyLjUgMTRIMi41QzEuNjcxNTcgMTQgMSAxMy4zMjg0IDEgMTIuNVYyLjVaTTcuNSA0QzcuNzc2MTQgNCA4IDMuNzc2MTQgOCAzLjVDOCAzLjIyMzg2IDcuNzc2MTQgMyA3LjUgM0M3LjIyMzg2IDMgNyAzLjIyMzg2IDcgMy41QzcgMy43NzYxNCA3LjIyMzg2IDQgNy41IDRaTTggNS41QzggNS43NzYxNCA3Ljc3NjE0IDYgNy41IDZDNy4yMjM4NiA2IDcgNS43NzYxNCA3IDUuNUM3IDUuMjIzODYgNy4yMjM4NiA1IDcuNSA1QzcuNzc2MTQgNSA4IDUuMjIzODYgOCA1LjVaTTcuNSA4QzcuNzc2MTQgOCA4IDcuNzc2MTQgOCA3LjVDOCA3LjIyMzg2IDcuNzc2MTQgNyA3LjUgN0M3LjIyMzg2IDcgNyA3LjIyMzg2IDcgNy41QzcgNy43NzYxNCA3LjIyMzg2IDggNy41IDhaTTEwIDcuNUMxMCA3Ljc3NjE0IDkuNzc2MTQgOCA5LjUgOEM5LjIyMzg2IDggOSA3Ljc3NjE0IDkgNy41QzkgNy4yMjM4NiA5LjIyMzg2IDcgOS41IDdDOS43NzYxNCA3IDEwIDcuMjIzODYgMTAgNy41Wk0xMS41IDhDMTEuNzc2MSA4IDEyIDcuNzc2MTQgMTIgNy41QzEyIDcuMjIzODYgMTEuNzc2MSA3IDExLjUgN0MxMS4yMjM5IDcgMTEgNy4yMjM4NiAxMSA3LjVDMTEgNy43NzYxNCAxMS4yMjM5IDggMTEuNSA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwMTQgNy40OTk4OEMwLjg3NzAxNCAzLjg0MjE5IDMuODQyMTYgMC44NzcwNDUgNy40OTk4NSAwLjg3NzA0NUMxMS4xNTc1IDAuODc3MDQ1IDE0LjEyMjcgMy44NDIxOSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAxMS4xNTc1IDExLjE1NzUgMTQuMTIyNyA3LjQ5OTg1IDE0LjEyMjdDMy44NDIxNiAxNC4xMjI3IDAuODc3MDE0IDExLjE1NzUgMC44NzcwMTQgNy40OTk4OFpNNy40OTk4NSAxLjgyNzA0QzQuMzY2ODMgMS44MjcwNCAxLjgyNzAxIDQuMzY2ODYgMS44MjcwMSA3LjQ5OTg4QzEuODI3MDEgOC45NzE5NiAyLjM4Nzc0IDEwLjMxMzEgMy4zMDcyNyAxMS4zMjEzQzQuMTkwNzQgOS45NDExOSA1LjczODE4IDkuMDI0OTkgNy41MDAyMyA5LjAyNDk5QzkuMjYyMDYgOS4wMjQ5OSAxMC44MDkzIDkuOTQwOTcgMTEuNjkyOSAxMS4zMjA4QzEyLjYxMjEgMTAuMzEyNyAxMy4xNzI3IDguOTcxNzIgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNC4zNjY4NiAxMC42MzI4IDEuODI3MDQgNy40OTk4NSAxLjgyNzA0Wk0xMC45ODE4IDExLjk3ODdDMTAuMjgzOSAxMC43Nzk1IDguOTg1NyA5Ljk3NDk5IDcuNTAwMjMgOS45NzQ5OUM2LjAxNDU4IDkuOTc0OTkgNC43MTYyNCAxMC43Nzk3IDQuMDE4NDUgMTEuOTc5MUM0Ljk3OTUyIDEyLjcyNzIgNi4xODc2NSAxMy4xNzI3IDcuNDk5ODUgMTMuMTcyN0M4LjgxMjI3IDEzLjE3MjcgMTAuMDIwNiAxMi43MjcgMTAuOTgxOCAxMS45Nzg3Wk01LjE0OTk5IDYuNTA0ODdDNS4xNDk5OSA1LjIwNyA2LjIwMjEyIDQuMTU0ODcgNy40OTk5OSA0LjE1NDg3QzguNzk3ODYgNC4xNTQ4NyA5Ljg0OTk5IDUuMjA3IDkuODQ5OTkgNi41MDQ4N0M5Ljg0OTk5IDcuODAyNzQgOC43OTc4NiA4Ljg1NDg3IDcuNDk5OTkgOC44NTQ4N0M2LjIwMjEyIDguODU0ODcgNS4xNDk5OSA3LjgwMjc0IDUuMTQ5OTkgNi41MDQ4N1pNNy40OTk5OSA1LjEwNDg3QzYuNzI2NzkgNS4xMDQ4NyA2LjA5OTk5IDUuNzMxNjcgNi4wOTk5OSA2LjUwNDg3QzYuMDk5OTkgNy4yNzgwNyA2LjcyNjc5IDcuOTA0ODcgNy40OTk5OSA3LjkwNDg3QzguMjczMTkgNy45MDQ4NyA4Ljg5OTk5IDcuMjc4MDcgOC44OTk5OSA2LjUwNDg3QzguODk5OTkgNS43MzE2NyA4LjI3MzE5IDUuMTA0ODcgNy40OTk5OSA1LjEwNDg3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSAxQzUgMC40NDc3MTUgNS40NDc3MiAwIDYgMEg5QzkuNTUyMjggMCAxMCAwLjQ0NzcxNSAxMCAxVjJIMTRDMTQuNTUyMyAyIDE1IDIuNDQ3NzIgMTUgM1Y2QzE1IDYuODg4OCAxNC42MTMxIDcuNjg3MzQgMTQgOC4yMzYwOFYxMS41QzE0IDEyLjMyODQgMTMuMzI4NCAxMyAxMi41IDEzSDIuNUMxLjY3MTU3IDEzIDEgMTIuMzI4NCAxIDExLjVWOC4yMzU5QzAuMzg2OTcgNy42ODcyMSAwIDYuODg4ODMgMCA2VjNDMCAyLjQ0NzcyIDAuNDQ3NzE2IDIgMSAySDVWMVpNOSAxVjJINlYxSDlaTTEgM0g1SDUuNUg5LjVIMTBIMTRWNkMxNCA2LjY1NCAxMy42ODY2IDcuMjM0NjcgMTMuMTk5NyA3LjYwMDRDMTIuODY1NSA3Ljg1MTQ0IDEyLjQ1MDggOCAxMiA4SDhWNy41QzggNy4yMjM4NiA3Ljc3NjE0IDcgNy41IDdDNy4yMjM4NiA3IDcgNy4yMjM4NiA3IDcuNVY4SDNDMi41NDkzIDggMi4xMzQ2IDcuODUxMzMgMS44MDAyOSA3LjYwMDIyQzEuMzEzMzUgNy4yMzQ0NiAxIDYuNjUzOTYgMSA2VjNaTTcgOUgzQzIuNjQ5NjEgOSAyLjMxMjkyIDguOTM5NzIgMiA4LjgyOTA1VjExLjVDMiAxMS43NzYxIDIuMjIzODYgMTIgMi41IDEySDEyLjVDMTIuNzc2MSAxMiAxMyAxMS43NzYxIDEzIDExLjVWOC44MjkxNUMxMi42ODcxIDguOTM5NzggMTIuMzUwNCA5IDEyIDlIOFY5LjVDOCA5Ljc3NjE0IDcuNzc2MTQgMTAgNy41IDEwQzcuMjIzODYgMTAgNyA5Ljc3NjE0IDcgOS41VjlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxfPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjUgNkgxMS41QzEyLjMyODQgNiAxMyA2LjY3MTU3IDEzIDcuNUMxMyA4LjMyODQzIDEyLjMyODQgOSAxMS41IDlIMy41QzIuNjcxNTcgOSAyIDguMzI4NDMgMiA3LjVDMiA2LjY3MTU3IDIuNjcxNTcgNiAzLjUgNlpNMSA3LjVDMSA2LjExOTI5IDIuMTE5MjkgNSAzLjUgNUgxMS41QzEyLjg4MDcgNSAxNCA2LjExOTI5IDE0IDcuNUMxNCA4Ljg4MDcxIDEyLjg4MDcgMTAgMTEuNSAxMEgzLjVDMi4xMTkyOSAxMCAxIDguODgwNzEgMSA3LjVaTTQuNSA3QzQuMjIzODYgNyA0IDcuMjIzODYgNCA3LjVDNCA3Ljc3NjE0IDQuMjIzODYgOCA0LjUgOEgxMC41QzEwLjc3NjEgOCAxMSA3Ljc3NjE0IDExIDcuNUMxMSA3LjIyMzg2IDEwLjc3NjEgNyAxMC41IDdINC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEuNSAxQzExLjc3NjEgMSAxMiAxLjIyMzg2IDEyIDEuNVYxMy41QzEyIDEzLjc3NjEgMTEuNzc2MSAxNCAxMS41IDE0QzExLjIyMzkgMTQgMTEgMTMuNzc2MSAxMSAxMy41VjEuNUMxMSAxLjIyMzg2IDExLjIyMzkgMSAxMS41IDFaTTkuNSAzQzkuNzc2MTQgMyAxMCAzLjIyMzg2IDEwIDMuNVYxMy41QzEwIDEzLjc3NjEgOS43NzYxNCAxNCA5LjUgMTRDOS4yMjM4NiAxNCA5IDEzLjc3NjEgOSAxMy41VjMuNUM5IDMuMjIzODYgOS4yMjM4NiAzIDkuNSAzWk0xMy41IDNDMTMuNzc2MSAzIDE0IDMuMjIzODYgMTQgMy41VjEzLjVDMTQgMTMuNzc2MSAxMy43NzYxIDE0IDEzLjUgMTRDMTMuMjIzOSAxNCAxMyAxMy43NzYxIDEzIDEzLjVWMy41QzEzIDMuMjIzODYgMTMuMjIzOSAzIDEzLjUgM1pNNS41IDRDNS43NzYxNCA0IDYgNC4yMjM4NiA2IDQuNVYxMy41QzYgMTMuNzc2MSA1Ljc3NjE0IDE0IDUuNSAxNEM1LjIyMzg2IDE0IDUgMTMuNzc2MSA1IDEzLjVWNC41QzUgNC4yMjM4NiA1LjIyMzg2IDQgNS41IDRaTTEuNSA1QzEuNzc2MTQgNSAyIDUuMjIzODYgMiA1LjVWMTMuNUMyIDEzLjc3NjEgMS43NzYxNCAxNCAxLjUgMTRDMS4yMjM4NiAxNCAxIDEzLjc3NjEgMSAxMy41VjUuNUMxIDUuMjIzODYgMS4yMjM4NiA1IDEuNSA1Wk03LjUgNUM3Ljc3NjE0IDUgOCA1LjIyMzg2IDggNS41VjEzLjVDOCAxMy43NzYxIDcuNzc2MTQgMTQgNy41IDE0QzcuMjIzODYgMTQgNyAxMy43NzYxIDcgMTMuNVY1LjVDNyA1LjIyMzg2IDcuMjIzODYgNSA3LjUgNVpNMy41IDdDMy43NzYxNCA3IDQgNy4yMjM4NiA0IDcuNVYxMy41QzQgMTMuNzc2MSAzLjc3NjE0IDE0IDMuNSAxNEMzLjIyMzg2IDE0IDMgMTMuNzc2MSAzIDEzLjVWNy41QzMgNy4yMjM4NiAzLjIyMzg2IDcgMy41IDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxFPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjYwMTI0IDEuMjUwODZDOC42MDEyNCAxLjc1NDU5IDguMjYyNzggMi4xNzkyNyA3LjgwMDg3IDIuMzA5ODlDMTAuMTQ1OSAyLjQ2NDcgMTIgNC40MTU4MiAxMiA2Ljc5OTk5VjEwLjI1QzEyIDExLjA1NjMgMTIuMDMyOSAxMS43MDc0IDEyLjcyMzYgMTIuMDUyOEMxMi45MzEgMTIuMTU2NSAxMy4wMzk5IDEyLjM4OTIgMTIuOTg2NiAxMi42MTQ5QzEyLjkzMzMgMTIuODQwNiAxMi43MzE5IDEzIDEyLjUgMTNIOC4xNjE0NEM4LjM2OTA0IDEzLjE4MzIgOC40OTk5NyAxMy40NTEzIDguNDk5OTcgMTMuNzVDOC40OTk5NyAxNC4zMDIzIDguMDUyMjYgMTQuNzUgNy40OTk5NyAxNC43NUM2Ljk0NzY5IDE0Ljc1IDYuNDk5OTcgMTQuMzAyMyA2LjQ5OTk3IDEzLjc1QzYuNDk5OTcgMTMuNDUxMyA2LjYzMDkxIDEzLjE4MzIgNi44Mzg1MSAxM0gyLjQ5OTk5QzIuMjY4MSAxMyAyLjA2NjY0IDEyLjg0MDYgMi4wMTMzNiAxMi42MTQ5QzEuOTYwMDkgMTIuMzg5MiAyLjA2ODk3IDEyLjE1NjUgMi4yNzYzOCAxMi4wNTI4QzIuOTY3MDggMTEuNzA3NCAyLjk5OTk5IDExLjA1NjMgMi45OTk5OSAxMC4yNVY2Ljc5OTk5QzIuOTk5OTkgNC40MTUzNyA0Ljg1NDgxIDIuNDYzOTYgNy4yMDA0MiAyLjMwOThDNi43Mzg2NyAyLjE3OTA4IDYuNDAwMzYgMS43NTQ0OCA2LjQwMDM2IDEuMjUwODZDNi40MDAzNiAwLjY0MzEwNCA2Ljg5MzA0IDAuMTUwNDIxIDcuNTAwOCAwLjE1MDQyMUM4LjEwODU1IDAuMTUwNDIxIDguNjAxMjQgMC42NDMxMDQgOC42MDEyNCAxLjI1MDg2Wk03LjQ5OTk5IDMuMjk5OTlDNS41NjY5OSAzLjI5OTk5IDMuOTk5OTkgNC44NjY5OSAzLjk5OTk5IDYuNzk5OTlWMTAuMjVMNC4wMDAwMiAxMC4zMDA5QzQuMDAwNSAxMC43NDYzIDQuMDAxMjEgMTEuNDA4NCAzLjY5OTI5IDEySDExLjMwMDdDMTAuOTk4OCAxMS40MDg0IDEwLjk5OTUgMTAuNzQ2MyAxMSAxMC4zMDA5TDExIDEwLjI1VjYuNzk5OTlDMTEgNC44NjY5OSA5LjQzMjk5IDMuMjk5OTkgNy40OTk5OSAzLjI5OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyA5QzMgNi41IDQuNSA0LjI1IDcuNSAxLjVDMTAuNSA0LjI1IDEyIDYuNSAxMiA5QzEyIDExLjQ4NTMgOS45ODUyOCAxMy41IDcuNSAxMy41QzUuMDE0NzIgMTMuNSAzIDExLjQ4NTMgMyA5Wk0xMC45NTI0IDguMzAzMDdDOS42NzM0NyA3LjgyMTIxIDguMjg3OSA4LjQ2MjA4IDYuOTg5NTYgOS4wNjI1OUM1LjkzMjcgOS41NTE0MiA0LjkzMzY1IDEwLjAxMzUgNC4wOTY5NSA5LjgyMTUzQzQuMDMzNTcgOS41NTgwNCA0IDkuMjgyOTQgNCA5QzQgNy4xMTIwMyA1LjAyNjg2IDUuMjcxOTUgNy41IDIuODczNTdDOS42NjgzNyA0Ljk3NjM5IDEwLjcyNSA2LjY1MDA0IDEwLjk1MjQgOC4zMDMwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGs9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgMi41QzMgMi4yMjM4NiAzLjIyMzg2IDIgMy41IDJIMTEuNUMxMS43NzYxIDIgMTIgMi4yMjM4NiAxMiAyLjVWMTMuNUMxMiAxMy42ODE4IDExLjkwMTQgMTMuODQ5MiAxMS43NDI0IDEzLjkzNzNDMTEuNTgzNCAxNC4wMjU0IDExLjM4OTEgMTQuMDIwMyAxMS4yMzUgMTMuOTI0TDcuNSAxMS41ODk2TDMuNzY1IDEzLjkyNEMzLjYxMDg3IDE0LjAyMDMgMy40MTY1OSAxNC4wMjU0IDMuMjU3NjIgMTMuOTM3M0MzLjA5ODY0IDEzLjg0OTIgMyAxMy42ODE4IDMgMTMuNVYyLjVaTTQgM1YxMi41OTc5TDYuOTcgMTAuNzQxNkM3LjI5NDI3IDEwLjUzOSA3LjcwNTczIDEwLjUzOSA4LjAzIDEwLjc0MTZMMTEgMTIuNTk3OVYzSDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxIPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjI1IDFDMC4yNSAwLjU4NTc4NiAwLjU4NTc4NiAwLjI1IDEgMC4yNUgxNEMxNC40MTQyIDAuMjUgMTQuNzUgMC41ODU3ODYgMTQuNzUgMVYxNEMxNC43NSAxNC40MTQyIDE0LjQxNDIgMTQuNzUgMTQgMTQuNzVIMUMwLjU4NTc4NiAxNC43NSAwLjI1IDE0LjQxNDIgMC4yNSAxNFYxWk0xLjc1IDEuNzVWMTMuMjVIMTMuMjVWMS43NUgxLjc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI5XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI5XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSkpfSxWPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDEzLjI1TDE0IDEzLjI1VjE0Ljc1TDEgMTQuNzVWMTMuMjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCIzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI5XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI5XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTFcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiOVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjlcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjExXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiMTFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjlcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjExXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSl9LFI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAgNy41QzAgNy4yMjM4NiAwLjIyMzg1OCA3IDAuNSA3SDNDMy4yNzYxNCA3IDMuNSA3LjIyMzg2IDMuNSA3LjVDMy41IDcuNzc2MTQgMy4yNzYxNCA4IDMgOEgwLjVDMC4yMjM4NTggOCAwIDcuNzc2MTQgMCA3LjVaTTUuNzUgNy41QzUuNzUgNy4yMjM4NiA1Ljk3Mzg2IDcgNi4yNSA3SDguNzVDOS4wMjYxNCA3IDkuMjUgNy4yMjM4NiA5LjI1IDcuNUM5LjI1IDcuNzc2MTQgOS4wMjYxNCA4IDguNzUgOEg2LjI1QzUuOTczODYgOCA1Ljc1IDcuNzc2MTQgNS43NSA3LjVaTTEyIDdDMTEuNzIzOSA3IDExLjUgNy4yMjM4NiAxMS41IDcuNUMxMS41IDcuNzc2MTQgMTEuNzIzOSA4IDEyIDhIMTQuNUMxNC43NzYxIDggMTUgNy43NzYxNCAxNSA3LjVDMTUgNy4yMjM4NiAxNC43NzYxIDcgMTQuNSA3SDEyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sST1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41IDYuNjI1QzEuMDE2NzUgNi42MjUgMC42MjUgNy4wMTY3NSAwLjYyNSA3LjVDMC42MjUgNy45ODMyNSAxLjAxNjc1IDguMzc1IDEuNSA4LjM3NUMxLjk4MzI1IDguMzc1IDIuMzc1IDcuOTgzMjUgMi4zNzUgNy41QzIuMzc1IDcuMDE2NzUgMS45ODMyNSA2LjYyNSAxLjUgNi42MjVaTTUuNSA2LjYyNUM1LjAxNjc1IDYuNjI1IDQuNjI1IDcuMDE2NzUgNC42MjUgNy41QzQuNjI1IDcuOTgzMjUgNS4wMTY3NSA4LjM3NSA1LjUgOC4zNzVDNS45ODMyNSA4LjM3NSA2LjM3NSA3Ljk4MzI1IDYuMzc1IDcuNUM2LjM3NSA3LjAxNjc1IDUuOTgzMjUgNi42MjUgNS41IDYuNjI1Wk05LjUgNi42MjVDOS4wMTY3NSA2LjYyNSA4LjYyNSA3LjAxNjc1IDguNjI1IDcuNUM4LjYyNSA3Ljk4MzI1IDkuMDE2NzUgOC4zNzUgOS41IDguMzc1QzkuOTgzMjUgOC4zNzUgMTAuMzc1IDcuOTgzMjUgMTAuMzc1IDcuNUMxMC4zNzUgNy4wMTY3NSA5Ljk4MzI1IDYuNjI1IDkuNSA2LjYyNVpNMTIuNjI1IDcuNUMxMi42MjUgNy4wMTY3NSAxMy4wMTY4IDYuNjI1IDEzLjUgNi42MjVDMTMuOTgzMiA2LjYyNSAxNC4zNzUgNy4wMTY3NSAxNC4zNzUgNy41QzE0LjM3NSA3Ljk4MzI1IDEzLjk4MzIgOC4zNzUgMTMuNSA4LjM3NUMxMy4wMTY4IDguMzc1IDEyLjYyNSA3Ljk4MzI1IDEyLjYyNSA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxaPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjc1IDFMMS43NSAxNEwwLjI0OTk5OSAxNEwwLjI1IDFMMS43NSAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMFwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTAgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTBcIix5OlwiMTNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxMCAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTJcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDEyIDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEyXCIseTpcIjEzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTIgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDggNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiMTNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCIxM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDUpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCA1KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCAzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjlcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDkpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjlcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCA5KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjExXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgOCAxMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiMTFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCAxMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNlwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgNiA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI2XCIseTpcIjEzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgNiAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNFwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgNCA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI0XCIseTpcIjEzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgNCAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTBcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDEwIDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEyXCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxMiAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI2XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA2IDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjRcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDQgMSlcIixmaWxsOm59KSl9LEE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI1LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjUuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNVwiLHk6XCIxMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiM1wiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjNcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiM1wiLHk6XCIxLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI5XCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjExXCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjExXCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI5LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjkuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCIxMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjUuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCIzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjkuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCIxMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pKX0sRD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMjUgMUwxMy4yNSAxNEwxNC43NSAxNEwxNC43NSAxTDEzLjI1IDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA1IDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA1IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMyA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMyAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDcgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDEgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDcgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxIDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyA1KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSA1KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyAzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSAzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyA5KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSA5KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyAxMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDEgMTEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA5IDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA5IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMTEgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDExIDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNSAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMyAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgOSAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMTEgMSlcIixmaWxsOm59KSl9LEI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuMjUgNy41QzEuMjUgNy4yMjM4NiAxLjQ3Mzg2IDcgMS43NSA3SDEzLjI1QzEzLjUyNjEgNyAxMy43NSA3LjIyMzg2IDEzLjc1IDcuNUMxMy43NSA3Ljc3NjE0IDEzLjUyNjEgOCAxMy4yNSA4SDEuNzVDMS40NzM4NiA4IDEuMjUgNy43NzYxNCAxLjI1IDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI1LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiM1wiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiOS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjExLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMSAxLjQ5OTk0QzEgMS4yMjM4IDEuMjIzODYgMC45OTk5MzkgMS41IDAuOTk5OTM5SDZWMS45OTk5NEgyVjUuOTk5OTRIMVYxLjQ5OTk0Wk0xMyAxLjk5OTk0SDlWMC45OTk5MzlIMTMuNUMxMy43NzYxIDAuOTk5OTM5IDE0IDEuMjIzOCAxNCAxLjQ5OTk0VjUuOTk5OTRIMTNWMS45OTk5NFpNMSAxMy40OTk5VjguOTk5OTRIMlYxMi45OTk5SDZWMTMuOTk5OUgxLjVDMS4yMjM4NiAxMy45OTk5IDEgMTMuNzc2MSAxIDEzLjQ5OTlaTTEzIDEyLjk5OTlWOC45OTk5NEgxNFYxMy40OTk5QzE0IDEzLjc3NjEgMTMuNzc2MSAxMy45OTk5IDEzLjUgMTMuOTk5OUg5LjVWMTIuOTk5OUgxM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LCQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNSAzQzEuMjIzODYgMyAxIDMuMjIzODYgMSAzLjVDMSAzLjc3NjE0IDEuMjIzODYgNCAxLjUgNEgxMy41QzEzLjc3NjEgNCAxNCAzLjc3NjE0IDE0IDMuNUMxNCAzLjIyMzg2IDEzLjc3NjEgMyAxMy41IDNIMS41Wk0xIDcuNUMxIDcuMjIzODYgMS4yMjM4NiA3IDEuNSA3SDMuNUMzLjc3NjE0IDcgNCA3LjIyMzg2IDQgNy41QzQgNy43NzYxNCAzLjc3NjE0IDggMy41IDhIMS41QzEuMjIzODYgOCAxIDcuNzc2MTQgMSA3LjVaTTEgMTEuNUMxIDExLjIyMzkgMS4yMjM4NiAxMSAxLjUgMTFDMS43NzYxNCAxMSAyIDExLjIyMzkgMiAxMS41QzIgMTEuNzc2MSAxLjc3NjE0IDEyIDEuNSAxMkMxLjIyMzg2IDEyIDEgMTEuNzc2MSAxIDExLjVaTTMgMTEuNUMzIDExLjIyMzkgMy4yMjM4NiAxMSAzLjUgMTFDMy43NzYxNCAxMSA0IDExLjIyMzkgNCAxMS41QzQgMTEuNzc2MSAzLjc3NjE0IDEyIDMuNSAxMkMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVaTTUuNSAxMUM1LjIyMzg2IDExIDUgMTEuMjIzOSA1IDExLjVDNSAxMS43NzYxIDUuMjIzODYgMTIgNS41IDEyQzUuNzc2MTQgMTIgNiAxMS43NzYxIDYgMTEuNUM2IDExLjIyMzkgNS43NzYxNCAxMSA1LjUgMTFaTTcgMTEuNUM3IDExLjIyMzkgNy4yMjM4NiAxMSA3LjUgMTFDNy43NzYxNCAxMSA4IDExLjIyMzkgOCAxMS41QzggMTEuNzc2MSA3Ljc3NjE0IDEyIDcuNSAxMkM3LjIyMzg2IDEyIDcgMTEuNzc2MSA3IDExLjVaTTkuNSAxMUM5LjIyMzg2IDExIDkgMTEuMjIzOSA5IDExLjVDOSAxMS43NzYxIDkuMjIzODYgMTIgOS41IDEyQzkuNzc2MTQgMTIgMTAgMTEuNzc2MSAxMCAxMS41QzEwIDExLjIyMzkgOS43NzYxNCAxMSA5LjUgMTFaTTExIDExLjVDMTEgMTEuMjIzOSAxMS4yMjM5IDExIDExLjUgMTFDMTEuNzc2MSAxMSAxMiAxMS4yMjM5IDEyIDExLjVDMTIgMTEuNzc2MSAxMS43NzYxIDEyIDExLjUgMTJDMTEuMjIzOSAxMiAxMSAxMS43NzYxIDExIDExLjVaTTEzLjUgMTFDMTMuMjIzOSAxMSAxMyAxMS4yMjM5IDEzIDExLjVDMTMgMTEuNzc2MSAxMy4yMjM5IDEyIDEzLjUgMTJDMTMuNzc2MSAxMiAxNCAxMS43NzYxIDE0IDExLjVDMTQgMTEuMjIzOSAxMy43NzYxIDExIDEzLjUgMTFaTTYuNSA3QzYuMjIzODYgNyA2IDcuMjIzODYgNiA3LjVDNiA3Ljc3NjE0IDYuMjIzODYgOCA2LjUgOEg4LjVDOC43NzYxNCA4IDkgNy43NzYxNCA5IDcuNUM5IDcuMjIzODYgOC43NzYxNCA3IDguNSA3SDYuNVpNMTEgNy41QzExIDcuMjIzODYgMTEuMjIzOSA3IDExLjUgN0gxMy41QzEzLjc3NjEgNyAxNCA3LjIyMzg2IDE0IDcuNUMxNCA3Ljc3NjE0IDEzLjc3NjEgOCAxMy41IDhIMTEuNUMxMS4yMjM5IDggMTEgNy43NzYxNCAxMSA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxGPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNCAxLjc1TDEgMS43NUwxIDAuMjQ5OTk5TDE0IDAuMjVMMTQgMS43NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCIxMFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgOCAxMClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMlwiLHk6XCIxMFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMiAxMClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCIxMlwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgOCAxMilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMlwiLHk6XCIxMlwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMiAxMilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCI4XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA4IDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiMTRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDggMTQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjJcIix5OlwiOFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMiA4KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIyXCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAyIDE0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMFwiLHk6XCI4XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxMCA4KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMFwiLHk6XCIxNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTAgMTQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEyXCIseTpcIjhcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDEyIDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEyXCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxMiAxNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNlwiLHk6XCI4XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA2IDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjZcIix5OlwiMTRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDYgMTQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjRcIix5OlwiOFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgNCA4KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI0XCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA0IDE0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjZcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDggNilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMlwiLHk6XCI2XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAyIDYpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgOCA0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIyXCIseTpcIjRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDIgNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiMTBcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDE0IDEwKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCIxMlwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTQgMTIpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjhcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDE0IDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxNCAxNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiNlwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTQgNilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTQgNClcIixmaWxsOm59KSl9LFc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjUgMkgyLjVDMi4yMjM4NiAyIDIgMi4yMjM4NiAyIDIuNVYxMi41QzIgMTIuNzc2MSAyLjIyMzg2IDEzIDIuNSAxM0gxMi41QzEyLjc3NjEgMTMgMTMgMTIuNzc2MSAxMyAxMi41VjIuNUMxMyAyLjIyMzg2IDEyLjc3NjEgMiAxMi41IDJaTTIuNSAxQzEuNjcxNTcgMSAxIDEuNjcxNTcgMSAyLjVWMTIuNUMxIDEzLjMyODQgMS42NzE1NyAxNCAyLjUgMTRIMTIuNUMxMy4zMjg0IDE0IDE0IDEzLjMyODQgMTQgMTIuNVYyLjVDMTQgMS42NzE1NyAxMy4zMjg0IDEgMTIuNSAxSDIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuOTk5OTggMC45OTk5NzZDMS40NDc2OSAwLjk5OTk3NiAwLjk5OTk3NiAxLjQ0NzY5IDAuOTk5OTc2IDEuOTk5OThWMTNDMC45OTk5NzYgMTMuNTUyMyAxLjQ0NzY5IDE0IDEuOTk5OTggMTRIMTNDMTMuNTUyMyAxNCAxNCAxMy41NTIzIDE0IDEzVjEuOTk5OThDMTQgMS40NDc2OSAxMy41NTIzIDAuOTk5OTc2IDEzIDAuOTk5OTc2SDEuOTk5OThaTTEuOTk5OTggMS45OTk5OEwxMyAxLjk5OTk4VjEzSDEuOTk5OThWMS45OTk5OFpNNC40OTk5NiAzLjk5OTk2QzQuMjIzODIgMy45OTk5NiAzLjk5OTk2IDQuMjIzODIgMy45OTk5NiA0LjQ5OTk2VjEwLjVDMy45OTk5NiAxMC43NzYxIDQuMjIzODIgMTEgNC40OTk5NiAxMUgxMC41QzEwLjc3NjEgMTEgMTEgMTAuNzc2MSAxMSAxMC41VjQuNDk5OTZDMTEgNC4yMjM4MiAxMC43NzYxIDMuOTk5OTYgMTAuNSAzLjk5OTk2SDQuNDk5OTZaTTQuOTk5OTYgOS45OTk5NlY0Ljk5OTk2SDkuOTk5OTZWOS45OTk5Nkg0Ljk5OTk2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sej1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiA1SDEzQzEzLjU1MjMgNSAxNCA1LjQ0NzcyIDE0IDZWOUMxNCA5LjU1MjI4IDEzLjU1MjMgMTAgMTMgMTBIMkMxLjQ0NzcyIDEwIDEgOS41NTIyOCAxIDlWNkMxIDUuNDQ3NzIgMS40NDc3MiA1IDIgNVpNMCA2QzAgNC44OTU0MyAwLjg5NTQzMSA0IDIgNEgxM0MxNC4xMDQ2IDQgMTUgNC44OTU0MyAxNSA2VjlDMTUgMTAuMTA0NiAxNC4xMDQ2IDExIDEzIDExSDJDMC44OTU0MyAxMSAwIDEwLjEwNDYgMCA5VjZaTTQuNSA2Ljc1QzQuMDg1NzkgNi43NSAzLjc1IDcuMDg1NzkgMy43NSA3LjVDMy43NSA3LjkxNDIxIDQuMDg1NzkgOC4yNSA0LjUgOC4yNUM0LjkxNDIxIDguMjUgNS4yNSA3LjkxNDIxIDUuMjUgNy41QzUuMjUgNy4wODU3OSA0LjkxNDIxIDYuNzUgNC41IDYuNzVaTTYuNzUgNy41QzYuNzUgNy4wODU3OSA3LjA4NTc5IDYuNzUgNy41IDYuNzVDNy45MTQyMSA2Ljc1IDguMjUgNy4wODU3OSA4LjI1IDcuNUM4LjI1IDcuOTE0MjEgNy45MTQyMSA4LjI1IDcuNSA4LjI1QzcuMDg1NzkgOC4yNSA2Ljc1IDcuOTE0MjEgNi43NSA3LjVaTTEwLjUgNi43NUMxMC4wODU4IDYuNzUgOS43NSA3LjA4NTc5IDkuNzUgNy41QzkuNzUgNy45MTQyMSAxMC4wODU4IDguMjUgMTAuNSA4LjI1QzEwLjkxNDIgOC4yNSAxMS4yNSA3LjkxNDIxIDExLjI1IDcuNUMxMS4yNSA3LjA4NTc5IDEwLjkxNDIgNi43NSAxMC41IDYuNzVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxVPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjUgMUM0Ljc3NjE0IDEgNSAxLjIyMzg2IDUgMS41VjJIMTBWMS41QzEwIDEuMjIzODYgMTAuMjIzOSAxIDEwLjUgMUMxMC43NzYxIDEgMTEgMS4yMjM4NiAxMSAxLjVWMkgxMi41QzEzLjMyODQgMiAxNCAyLjY3MTU3IDE0IDMuNVYxMi41QzE0IDEzLjMyODQgMTMuMzI4NCAxNCAxMi41IDE0SDIuNUMxLjY3MTU3IDE0IDEgMTMuMzI4NCAxIDEyLjVWMy41QzEgMi42NzE1NyAxLjY3MTU3IDIgMi41IDJINFYxLjVDNCAxLjIyMzg2IDQuMjIzODYgMSA0LjUgMVpNMTAgM1YzLjVDMTAgMy43NzYxNCAxMC4yMjM5IDQgMTAuNSA0QzEwLjc3NjEgNCAxMSAzLjc3NjE0IDExIDMuNVYzSDEyLjVDMTIuNzc2MSAzIDEzIDMuMjIzODYgMTMgMy41VjVIMlYzLjVDMiAzLjIyMzg2IDIuMjIzODYgMyAyLjUgM0g0VjMuNUM0IDMuNzc2MTQgNC4yMjM4NiA0IDQuNSA0QzQuNzc2MTQgNCA1IDMuNzc2MTQgNSAzLjVWM0gxMFpNMiA2VjEyLjVDMiAxMi43NzYxIDIuMjIzODYgMTMgMi41IDEzSDEyLjVDMTIuNzc2MSAxMyAxMyAxMi43NzYxIDEzIDEyLjVWNkgyWk03IDcuNUM3IDcuMjIzODYgNy4yMjM4NiA3IDcuNSA3QzcuNzc2MTQgNyA4IDcuMjIzODYgOCA3LjVDOCA3Ljc3NjE0IDcuNzc2MTQgOCA3LjUgOEM3LjIyMzg2IDggNyA3Ljc3NjE0IDcgNy41Wk05LjUgN0M5LjIyMzg2IDcgOSA3LjIyMzg2IDkgNy41QzkgNy43NzYxNCA5LjIyMzg2IDggOS41IDhDOS43NzYxNCA4IDEwIDcuNzc2MTQgMTAgNy41QzEwIDcuMjIzODYgOS43NzYxNCA3IDkuNSA3Wk0xMSA3LjVDMTEgNy4yMjM4NiAxMS4yMjM5IDcgMTEuNSA3QzExLjc3NjEgNyAxMiA3LjIyMzg2IDEyIDcuNUMxMiA3Ljc3NjE0IDExLjc3NjEgOCAxMS41IDhDMTEuMjIzOSA4IDExIDcuNzc2MTQgMTEgNy41Wk0xMS41IDlDMTEuMjIzOSA5IDExIDkuMjIzODYgMTEgOS41QzExIDkuNzc2MTQgMTEuMjIzOSAxMCAxMS41IDEwQzExLjc3NjEgMTAgMTIgOS43NzYxNCAxMiA5LjVDMTIgOS4yMjM4NiAxMS43NzYxIDkgMTEuNSA5Wk05IDkuNUM5IDkuMjIzODYgOS4yMjM4NiA5IDkuNSA5QzkuNzc2MTQgOSAxMCA5LjIyMzg2IDEwIDkuNUMxMCA5Ljc3NjE0IDkuNzc2MTQgMTAgOS41IDEwQzkuMjIzODYgMTAgOSA5Ljc3NjE0IDkgOS41Wk03LjUgOUM3LjIyMzg2IDkgNyA5LjIyMzg2IDcgOS41QzcgOS43NzYxNCA3LjIyMzg2IDEwIDcuNSAxMEM3Ljc3NjE0IDEwIDggOS43NzYxNCA4IDkuNUM4IDkuMjIzODYgNy43NzYxNCA5IDcuNSA5Wk01IDkuNUM1IDkuMjIzODYgNS4yMjM4NiA5IDUuNSA5QzUuNzc2MTQgOSA2IDkuMjIzODYgNiA5LjVDNiA5Ljc3NjE0IDUuNzc2MTQgMTAgNS41IDEwQzUuMjIzODYgMTAgNSA5Ljc3NjE0IDUgOS41Wk0zLjUgOUMzLjIyMzg2IDkgMyA5LjIyMzg2IDMgOS41QzMgOS43NzYxNCAzLjIyMzg2IDEwIDMuNSAxMEMzLjc3NjE0IDEwIDQgOS43NzYxNCA0IDkuNUM0IDkuMjIzODYgMy43NzYxNCA5IDMuNSA5Wk0zIDExLjVDMyAxMS4yMjM5IDMuMjIzODYgMTEgMy41IDExQzMuNzc2MTQgMTEgNCAxMS4yMjM5IDQgMTEuNUM0IDExLjc3NjEgMy43NzYxNCAxMiAzLjUgMTJDMy4yMjM4NiAxMiAzIDExLjc3NjEgMyAxMS41Wk01LjUgMTFDNS4yMjM4NiAxMSA1IDExLjIyMzkgNSAxMS41QzUgMTEuNzc2MSA1LjIyMzg2IDEyIDUuNSAxMkM1Ljc3NjE0IDEyIDYgMTEuNzc2MSA2IDExLjVDNiAxMS4yMjM5IDUuNzc2MTQgMTEgNS41IDExWk03IDExLjVDNyAxMS4yMjM5IDcuMjIzODYgMTEgNy41IDExQzcuNzc2MTQgMTEgOCAxMS4yMjM5IDggMTEuNUM4IDExLjc3NjEgNy43NzYxNCAxMiA3LjUgMTJDNy4yMjM4NiAxMiA3IDExLjc3NjEgNyAxMS41Wk05LjUgMTFDOS4yMjM4NiAxMSA5IDExLjIyMzkgOSAxMS41QzkgMTEuNzc2MSA5LjIyMzg2IDEyIDkuNSAxMkM5Ljc3NjE0IDEyIDEwIDExLjc3NjEgMTAgMTEuNUMxMCAxMS4yMjM5IDkuNzc2MTQgMTEgOS41IDExWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiAzQzEuNDQ3NzIgMyAxIDMuNDQ3NzIgMSA0VjExQzEgMTEuNTUyMyAxLjQ0NzcyIDEyIDIgMTJIMTNDMTMuNTUyMyAxMiAxNCAxMS41NTIzIDE0IDExVjRDMTQgMy40NDc3MiAxMy41NTIzIDMgMTMgM0gyWk0wIDRDMCAyLjg5NTQzIDAuODk1NDMxIDIgMiAySDEzQzE0LjEwNDYgMiAxNSAyLjg5NTQzIDE1IDRWMTFDMTUgMTIuMTA0NiAxNC4xMDQ2IDEzIDEzIDEzSDJDMC44OTU0MzEgMTMgMCAxMi4xMDQ2IDAgMTFWNFpNMiA0LjI1QzIgNC4xMTE5MyAyLjExMTkzIDQgMi4yNSA0SDQuNzVDNC44ODgwNyA0IDUgNC4xMTE5MyA1IDQuMjVWNS43NTQ1NEM1IDUuODkyNjEgNC44ODgwNyA2LjAwNDU0IDQuNzUgNi4wMDQ1NEgyLjI1QzIuMTExOTMgNi4wMDQ1NCAyIDUuODkyNjEgMiA1Ljc1NDU0VjQuMjVaTTEyLjEwMSA3LjU4NDIxQzEyLjEwMSA5LjAyMDczIDEwLjkzNjUgMTAuMTg1MyA5LjQ5OTk4IDEwLjE4NTNDOC4wNjM0NiAxMC4xODUzIDYuODk4OTMgOS4wMjA3MyA2Ljg5ODkzIDcuNTg0MjFDNi44OTg5MyA2LjE0NzY5IDguMDYzNDYgNC45ODMxNSA5LjQ5OTk4IDQuOTgzMTVDMTAuOTM2NSA0Ljk4MzE1IDEyLjEwMSA2LjE0NzY5IDEyLjEwMSA3LjU4NDIxWk0xMy4xMDEgNy41ODQyMUMxMy4xMDEgOS41NzMwMiAxMS40ODg4IDExLjE4NTMgOS40OTk5OCAxMS4xODUzQzcuNTExMTcgMTEuMTg1MyA1Ljg5ODkzIDkuNTczMDIgNS44OTg5MyA3LjU4NDIxQzUuODk4OTMgNS41OTU0IDcuNTExMTcgMy45ODMxNSA5LjQ5OTk4IDMuOTgzMTVDMTEuNDg4OCAzLjk4MzE1IDEzLjEwMSA1LjU5NTQgMTMuMTAxIDcuNTg0MjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxxPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDMuNUMyIDMuMjIzODYgMi4yMjM4NiAzIDIuNSAzSDEyLjVDMTIuNzc2MSAzIDEzIDMuMjIzODYgMTMgMy41VjkuNUMxMyA5Ljc3NjE0IDEyLjc3NjEgMTAgMTIuNSAxMEgyLjVDMi4yMjM4NiAxMCAyIDkuNzc2MTQgMiA5LjVWMy41Wk0yIDEwLjkxNDZDMS40MTc0IDEwLjcwODcgMSAxMC4xNTMxIDEgOS41VjMuNUMxIDIuNjcxNTcgMS42NzE1NyAyIDIuNSAySDEyLjVDMTMuMzI4NCAyIDE0IDIuNjcxNTcgMTQgMy41VjkuNUMxNCAxMC4xNTMxIDEzLjU4MjYgMTAuNzA4NyAxMyAxMC45MTQ2VjExLjVDMTMgMTIuMzI4NCAxMi4zMjg0IDEzIDExLjUgMTNIMy41QzIuNjcxNTcgMTMgMiAxMi4zMjg0IDIgMTEuNVYxMC45MTQ2Wk0xMiAxMVYxMS41QzEyIDExLjc3NjEgMTEuNzc2MSAxMiAxMS41IDEySDMuNUMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVWMTFIMTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxZPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjUgM0MyLjIyMzg2IDMgMiAzLjIyMzg2IDIgMy41VjkuNUMyIDkuNzc2MTQgMi4yMjM4NiAxMCAyLjUgMTBIMTIuNUMxMi43NzYxIDEwIDEzIDkuNzc2MTQgMTMgOS41VjMuNUMxMyAzLjIyMzg2IDEyLjc3NjEgMyAxMi41IDNIMi41Wk0xIDkuNUMxIDEwLjE1MzEgMS40MTc0IDEwLjcwODcgMiAxMC45MTQ2VjExLjVDMiAxMi4zMjg0IDIuNjcxNTcgMTMgMy41IDEzSDExLjVDMTIuMzI4NCAxMyAxMyAxMi4zMjg0IDEzIDExLjVWMTAuOTE0NkMxMy41ODI2IDEwLjcwODcgMTQgMTAuMTUzMSAxNCA5LjVWMy41QzE0IDIuNjcxNTcgMTMuMzI4NCAyIDEyLjUgMkgyLjVDMS42NzE1NyAyIDEgMi42NzE1NyAxIDMuNVY5LjVaTTEyIDExLjVWMTFIM1YxMS41QzMgMTEuNzc2MSAzLjIyMzg2IDEyIDMuNSAxMkgxMS41QzExLjc3NjEgMTIgMTIgMTEuNzc2MSAxMiAxMS41Wk01LjUgNkM1LjIyMzg2IDYgNSA2LjIyMzg2IDUgNi41QzUgNi43NzYxNCA1LjIyMzg2IDcgNS41IDdIOS41QzkuNzc2MTQgNyAxMCA2Ljc3NjE0IDEwIDYuNUMxMCA2LjIyMzg2IDkuNzc2MTQgNiA5LjUgNkg1LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxLPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDMuNUMyIDMuMjIzODYgMi4yMjM4NiAzIDIuNSAzSDEyLjVDMTIuNzc2MSAzIDEzIDMuMjIzODYgMTMgMy41VjkuNUMxMyA5Ljc3NjE0IDEyLjc3NjEgMTAgMTIuNSAxMEgyLjVDMi4yMjM4NiAxMCAyIDkuNzc2MTQgMiA5LjVWMy41Wk0yIDEwLjkxNDZDMS40MTc0IDEwLjcwODcgMSAxMC4xNTMxIDEgOS41VjMuNUMxIDIuNjcxNTcgMS42NzE1NyAyIDIuNSAySDEyLjVDMTMuMzI4NCAyIDE0IDIuNjcxNTcgMTQgMy41VjkuNUMxNCAxMC4xNTMxIDEzLjU4MjYgMTAuNzA4NyAxMyAxMC45MTQ2VjExLjVDMTMgMTIuMzI4NCAxMi4zMjg0IDEzIDExLjUgMTNIMy41QzIuNjcxNTcgMTMgMiAxMi4zMjg0IDIgMTEuNVYxMC45MTQ2Wk0xMiAxMVYxMS41QzEyIDExLjc3NjEgMTEuNzc2MSAxMiAxMS41IDEySDMuNUMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVWMTFIMTJaTTUgNi41QzUgNi4yMjM4NiA1LjIyMzg2IDYgNS41IDZIN1Y0LjVDNyA0LjIyMzg2IDcuMjIzODYgNCA3LjUgNEM3Ljc3NjE0IDQgOCA0LjIyMzg2IDggNC41VjZIOS41QzkuNzc2MTQgNiAxMCA2LjIyMzg2IDEwIDYuNUMxMCA2Ljc3NjE0IDkuNzc2MTQgNyA5LjUgN0g4VjguNUM4IDguNzc2MTQgNy43NzYxNCA5IDcuNSA5QzcuMjIzODYgOSA3IDguNzc2MTQgNyA4LjVWN0g1LjVDNS4yMjM4NiA3IDUgNi43NzYxNCA1IDYuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFg9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuMTgxNzkgNi4xODE4MUM0LjM1NzUzIDYuMDA2MDggNC42NDI0NSA2LjAwNjA4IDQuODE4MTkgNi4xODE4MUw3LjQ5OTk5IDguODYzNjJMMTAuMTgxOCA2LjE4MTgxQzEwLjM1NzUgNi4wMDYwOCAxMC42NDI0IDYuMDA2MDggMTAuODE4MiA2LjE4MTgxQzEwLjk5MzkgNi4zNTc1NSAxMC45OTM5IDYuNjQyNDcgMTAuODE4MiA2LjgxODIxTDcuODE4MTkgOS44MTgyMUM3LjczMzc5IDkuOTAyNiA3LjYxOTM0IDkuOTUwMDEgNy40OTk5OSA5Ljk1MDAxQzcuMzgwNjQgOS45NTAwMSA3LjI2NjE4IDkuOTAyNiA3LjE4MTc5IDkuODE4MjFMNC4xODE3OSA2LjgxODIxQzQuMDA2MDUgNi42NDI0NyA0LjAwNjA1IDYuMzU3NTUgNC4xODE3OSA2LjE4MTgxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC44MTgwOSA0LjE4MTc5QzguOTkzODMgNC4zNTc1MyA4Ljk5MzgzIDQuNjQyNDUgOC44MTgwOSA0LjgxODE5TDYuMTM2MjkgNy40OTk5OUw4LjgxODA5IDEwLjE4MThDOC45OTM4MyAxMC4zNTc1IDguOTkzODMgMTAuNjQyNCA4LjgxODA5IDEwLjgxODJDOC42NDIzNiAxMC45OTM5IDguMzU3NDMgMTAuOTkzOSA4LjE4MTcgMTAuODE4Mkw1LjE4MTcgNy44MTgxOUM1LjA5NzMxIDcuNzMzNzkgNS4wNDk5IDcuNjE5MzMgNS4wNDk5IDcuNDk5OTlDNS4wNDk5IDcuMzgwNjQgNS4wOTczMSA3LjI2NjE4IDUuMTgxNyA3LjE4MTc5TDguMTgxNyA0LjE4MTc5QzguMzU3NDMgNC4wMDYwNSA4LjY0MjM2IDQuMDA2MDUgOC44MTgwOSA0LjE4MTc5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi4xODE5NCA0LjE4MTg1QzYuMzU3NjcgNC4wMDYxMSA2LjY0MjYgNC4wMDYxMSA2LjgxODMzIDQuMTgxODVMOS44MTgzMyA3LjE4MTg1QzkuOTAyNzIgNy4yNjYyNCA5Ljk1MDEzIDcuMzgwNyA5Ljk1MDEzIDcuNTAwMDVDOS45NTAxMyA3LjYxOTQgOS45MDI3MiA3LjczMzg2IDkuODE4MzMgNy44MTgyNUw2LjgxODMzIDEwLjgxODJDNi42NDI2IDEwLjk5NCA2LjM1NzY3IDEwLjk5NCA2LjE4MTk0IDEwLjgxODJDNi4wMDYyIDEwLjY0MjUgNi4wMDYyIDEwLjM1NzYgNi4xODE5NCAxMC4xODE5TDguODYzNzQgNy41MDAwNUw2LjE4MTk0IDQuODE4MjVDNi4wMDYyIDQuNjQyNTEgNi4wMDYyIDQuMzU3NTkgNi4xODE5NCA0LjE4MTg1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuOTMxNzkgNS40MzE3OUM0Ljc1NjA1IDUuNjA3NTMgNC43NTYwNSA1Ljg5MjQ1IDQuOTMxNzkgNi4wNjgxOUM1LjEwNzUzIDYuMjQzOTIgNS4zOTI0NSA2LjI0MzkyIDUuNTY4MTkgNi4wNjgxOUw3LjQ5OTk5IDQuMTM2MzhMOS40MzE3OSA2LjA2ODE5QzkuNjA3NTMgNi4yNDM5MiA5Ljg5MjQ1IDYuMjQzOTIgMTAuMDY4MiA2LjA2ODE5QzEwLjI0MzkgNS44OTI0NSAxMC4yNDM5IDUuNjA3NTMgMTAuMDY4MiA1LjQzMTc5TDcuODE4MTkgMy4xODE3OUM3LjczMzc5IDMuMDk3NCA3LjYxOTMzIDMuMDQ5OTkgNy40OTk5OSAzLjA0OTk5QzcuMzgwNjQgMy4wNDk5OSA3LjI2NjE4IDMuMDk3NCA3LjE4MTc5IDMuMTgxNzlMNC45MzE3OSA1LjQzMTc5Wk0xMC4wNjgyIDkuNTY4MTlDMTAuMjQzOSA5LjM5MjQ1IDEwLjI0MzkgOS4xMDc1MyAxMC4wNjgyIDguOTMxNzlDOS44OTI0NSA4Ljc1NjA2IDkuNjA3NTMgOC43NTYwNiA5LjQzMTc5IDguOTMxNzlMNy40OTk5OSAxMC44NjM2TDUuNTY4MTkgOC45MzE3OUM1LjM5MjQ1IDguNzU2MDYgNS4xMDc1MyA4Ljc1NjA2IDQuOTMxNzkgOC45MzE3OUM0Ljc1NjA1IDkuMTA3NTMgNC43NTYwNSA5LjM5MjQ1IDQuOTMxNzkgOS41NjgxOUw3LjE4MTc5IDExLjgxODJDNy4zNTc1MyAxMS45OTM5IDcuNjQyNDUgMTEuOTkzOSA3LjgxODE5IDExLjgxODJMMTAuMDY4MiA5LjU2ODE5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuMTgxNzkgOC44MTgxOUM0LjAwNjA1IDguNjQyNDUgNC4wMDYwNSA4LjM1NzUzIDQuMTgxNzkgOC4xODE3OUw3LjE4MTc5IDUuMTgxNzlDNy4yNjYxOCA1LjA5NzQgNy4zODA2NCA1LjA0OTk5IDcuNDk5OTkgNS4wNDk5OUM3LjYxOTMzIDUuMDQ5OTkgNy43MzM3OSA1LjA5NzQgNy44MTgxOSA1LjE4MTc5TDEwLjgxODIgOC4xODE3OUMxMC45OTM5IDguMzU3NTMgMTAuOTkzOSA4LjY0MjQ1IDEwLjgxODIgOC44MTgxOUMxMC42NDI0IDguOTkzOTIgMTAuMzU3NSA4Ljk5MzkyIDEwLjE4MTggOC44MTgxOUw3LjQ5OTk5IDYuMTM2MzhMNC44MTgxOSA4LjgxODE5QzQuNjQyNDUgOC45OTM5MiA0LjM1NzUzIDguOTkzOTIgNC4xODE3OSA4LjgxODE5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjUgM0wyLjQ5OTk5IDMuMDAwMDJDMS42NzE1NyAzLjAwMDAyIDAuOTk5OTk5IDMuNjcxNTkgMC45OTk5OTkgNC41MDAwMlY5LjUwMDAyQzAuOTk5OTk5IDEwLjMyODQgMS42NzE1NyAxMSAyLjUgMTFINy41MDAwMkM3LjYzMjYzIDExIDcuNzU5ODEgMTEuMDUyNyA3Ljg1MzU4IDExLjE0NjVMOS45OTk5OSAxMy4yOTI5VjExLjVDOS45OTk5OSAxMS4yMjM5IDEwLjIyMzkgMTEgMTAuNSAxMUgxMi41QzEzLjMyODQgMTEgMTQgMTAuMzI4NCAxNCA5LjUwMDAyVjQuNUMxNCAzLjY3MTU3IDEzLjMyODQgMyAxMi41IDNaTTIuNDk5OTkgMi4wMDAwMkwxMi41IDJDMTMuODgwNyAyIDE1IDMuMTE5MjggMTUgNC41VjkuNTAwMDJDMTUgMTAuODgwNyAxMy44ODA3IDEyIDEyLjUgMTJIMTFWMTQuNUMxMSAxNC43MDIyIDEwLjg3ODIgMTQuODg0NSAxMC42OTEzIDE0Ljk2MTlDMTAuNTA0NSAxNS4wMzkzIDEwLjI4OTQgMTQuOTk2NSAxMC4xNDY0IDE0Ljg1MzVMNy4yOTI5MiAxMkgyLjVDMS4xMTkyOSAxMiAwIDEwLjg4MDcgMCA5LjUwMDAyVjQuNTAwMDJDMCAzLjExOTMxIDEuMTE5MjggMi4wMDAwMiAyLjQ5OTk5IDIuMDAwMDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxyZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEuNDY2OSAzLjcyNjg0QzExLjc1NTggMy45MTU3NCAxMS44MzY5IDQuMzAzMDggMTEuNjQ4IDQuNTkxOThMNy4zOTc5OSAxMS4wOTJDNy4yOTc4MyAxMS4yNDUyIDcuMTM1NTYgMTEuMzQ2NyA2Ljk1NDAyIDExLjM2OTlDNi43NzI0NyAxMS4zOTMxIDYuNTg5ODkgMTEuMzM1NSA2LjQ1NDQ2IDExLjIxMjRMMy43MDQ0NiA4LjcxMjQxQzMuNDQ5MDUgOC40ODAyMiAzLjQzMDIzIDguMDg0OTQgMy42NjI0MiA3LjgyOTUzQzMuODk0NjEgNy41NzQxMiA0LjI4OTg5IDcuNTU1MjkgNC41NDUzIDcuNzg3NDlMNi43NTI5MiA5Ljc5NDQxTDEwLjYwMTggMy45MDc5MkMxMC43OTA3IDMuNjE5MDIgMTEuMTc4IDMuNTM3OTUgMTEuNDY2OSAzLjcyNjg0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sb2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzcwNDVDMy44NDIyMiAwLjg3NzA0NSAwLjg3NzA3NSAzLjg0MjE5IDAuODc3MDc1IDcuNDk5ODhDMC44NzcwNzUgMTEuMTU3NSAzLjg0MjIyIDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzExLjE1NzYgMTQuMTIyNyAxNC4xMjI3IDExLjE1NzUgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgMy44NDIxOSAxMS4xNTc2IDAuODc3MDQ1IDcuNDk5OTEgMC44NzcwNDVaTTEuODI3MDggNy40OTk4OEMxLjgyNzA4IDQuMzY2ODYgNC4zNjY4OSAxLjgyNzA0IDcuNDk5OTEgMS44MjcwNEMxMC42MzI5IDEuODI3MDQgMTMuMTcyNyA0LjM2Njg2IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDEwLjYzMjkgMTAuNjMyOSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0M0LjM2Njg5IDEzLjE3MjcgMS44MjcwOCAxMC42MzI5IDEuODI3MDggNy40OTk4OFpNMTAuMTU4OSA1LjUzNzc0QzEwLjMxNzggNS4zMTE5MSAxMC4yNjM2IDUuMDAwMDEgMTAuMDM3OCA0Ljg0MTA5QzkuODExOTQgNC42ODIxNyA5LjUwMDA0IDQuNzM2NDIgOS4zNDExMiA0Ljk2MjI1TDYuNTE5NzcgOC45NzE1NEw1LjM1NjgxIDcuNzg3MDZDNS4xNjMzNCA3LjU5MDAyIDQuODQ2NzcgNy41ODcxMSA0LjY0OTczIDcuNzgwNThDNC40NTI2OCA3Ljk3NDA0IDQuNDQ5NzggOC4yOTA2MSA0LjY0MzI1IDguNDg3NjVMNi4yMjY1OCAxMC4xMDAzQzYuMzMwNTQgMTAuMjA2MiA2LjQ3NjE3IDEwLjI2MDQgNi42MjQwNyAxMC4yNDgzQzYuNzcxOTcgMTAuMjM2MyA2LjkwNjg2IDEwLjE1OTEgNi45OTIyNiAxMC4wMzc3TDEwLjE1ODkgNS41Mzc3NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGFlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zIDNIMTJWMTJIM0wzIDNaTTIgM0MyIDIuNDQ3NzEgMi40NDc3MiAyIDMgMkgxMkMxMi41NTIzIDIgMTMgMi40NDc3MiAxMyAzVjEyQzEzIDEyLjU1MjMgMTIuNTUyMyAxMyAxMiAxM0gzQzIuNDQ3NzEgMTMgMiAxMi41NTIzIDIgMTJWM1pNMTAuMzQ5OCA1LjUxMTA1QzEwLjUwNiA1LjI4MzM3IDEwLjQ0ODEgNC45NzIxMiAxMC4yMjA0IDQuODE1ODdDOS45OTI3NSA0LjY1OTYxIDkuNjgxNSA0LjcxNzUxIDkuNTI1MjUgNC45NDUxOUw2LjY0MDQ4IDkuMTQ4NTdMNS4xOTczMyA3LjQwODg5QzUuMDIxMDIgNy4xOTYzNSA0LjcwNTggNy4xNjY5OSA0LjQ5MzI3IDcuMzQzMjlDNC4yODA3MyA3LjUxOTYgNC4yNTEzNyA3LjgzNDgyIDQuNDI3NjcgOC4wNDczNUw2LjI5MzQgMTAuMjk2NEM2LjM5MzQ4IDEwLjQxNzEgNi41NDQzNyAxMC40ODM4IDYuNzAwOTcgMTAuNDc2N0M2Ljg1NzU3IDEwLjQ2OTUgNy4wMDE3NyAxMC4zODk0IDcuMDkwNDcgMTAuMjYwMUwxMC4zNDk4IDUuNTExMDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxpZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4xMzUyMyA2LjE1ODAzQzMuMzI0MSA1Ljk1NjU3IDMuNjQwNTIgNS45NDYzNyAzLjg0MTk3IDYuMTM1MjNMNy41IDkuNTY0NjRMMTEuMTU4IDYuMTM1MjNDMTEuMzU5NSA1Ljk0NjM3IDExLjY3NTkgNS45NTY1NyAxMS44NjQ4IDYuMTU4MDNDMTIuMDUzNiA2LjM1OTQ5IDEyLjA0MzQgNi42NzU5MSAxMS44NDIgNi44NjQ3N0w3Ljg0MTk3IDEwLjYxNDhDNy42NDk2NCAxMC43OTUxIDcuMzUwMzYgMTAuNzk1MSA3LjE1ODAzIDEwLjYxNDhMMy4xNTgwMyA2Ljg2NDc3QzIuOTU2NTcgNi42NzU5MSAyLjk0NjM3IDYuMzU5NDkgMy4xMzUyMyA2LjE1ODAzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguODQxODIgMy4xMzUxNEM5LjA0MzI3IDMuMzI0MDEgOS4wNTM0OCAzLjY0MDQyIDguODY0NjIgMy44NDE4OEw1LjQzNTIxIDcuNDk5OTFMOC44NjQ2MiAxMS4xNTc5QzkuMDUzNDggMTEuMzU5NCA5LjA0MzI3IDExLjY3NTggOC44NDE4MiAxMS44NjQ3QzguNjQwMzYgMTIuMDUzNSA4LjMyMzk0IDEyLjA0MzMgOC4xMzUwOCAxMS44NDE5TDQuMzg1MDggNy44NDE4OEM0LjIwNDc3IDcuNjQ5NTUgNC4yMDQ3NyA3LjM1MDI3IDQuMzg1MDggNy4xNTc5NEw4LjEzNTA4IDMuMTU3OTRDOC4zMjM5NCAyLjk1NjQ4IDguNjQwMzYgMi45NDYyOCA4Ljg0MTgyIDMuMTM1MTRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxjZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi4xNTg0IDMuMTM1MDhDNi4zNTk4NSAyLjk0NjIxIDYuNjc2MjcgMi45NTY0MiA2Ljg2NTE0IDMuMTU3ODhMMTAuNjE1MSA3LjE1Nzg4QzEwLjc5NTQgNy4zNTAyIDEwLjc5NTQgNy42NDk0OSAxMC42MTUxIDcuODQxODJMNi44NjUxNCAxMS44NDE4QzYuNjc2MjcgMTIuMDQzMyA2LjM1OTg1IDEyLjA1MzUgNi4xNTg0IDExLjg2NDZDNS45NTY5NCAxMS42NzU3IDUuOTQ2NzMgMTEuMzU5MyA2LjEzNTYgMTEuMTU3OUw5LjU2NSA3LjQ5OTg1TDYuMTM1NiAzLjg0MTgyQzUuOTQ2NzMgMy42NDAzNiA1Ljk1Njk0IDMuMzIzOTQgNi4xNTg0IDMuMTM1MDhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxzZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4xMzUyMyA4Ljg0MTk3QzMuMzI0MSA5LjA0MzQzIDMuNjQwNTIgOS4wNTM2MyAzLjg0MTk3IDguODY0NzdMNy41IDUuNDM1MzZMMTEuMTU4IDguODY0NzdDMTEuMzU5NSA5LjA1MzYzIDExLjY3NTkgOS4wNDM0MyAxMS44NjQ4IDguODQxOTdDMTIuMDUzNiA4LjY0MDUxIDEyLjA0MzQgOC4zMjQwOSAxMS44NDIgOC4xMzUyM0w3Ljg0MTk3IDQuMzg1MjNDNy42NDk2NCA0LjIwNDkyIDcuMzUwMzYgNC4yMDQ5MiA3LjE1ODAzIDQuMzg1MjNMMy4xNTgwMyA4LjEzNTIzQzIuOTU2NTcgOC4zMjQwOSAyLjk0NjM3IDguNjQwNTEgMy4xMzUyMyA4Ljg0MTk3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuODc3MDc1IDcuNDk5OTFDMC44NzcwNzUgMy44NDIyMiAzLjg0MjIyIDAuODc3MDc1IDcuNDk5OTEgMC44NzcwNzVDMTEuMTU3NiAwLjg3NzA3NSAxNC4xMjI3IDMuODQyMjIgMTQuMTIyNyA3LjQ5OTkxQzE0LjEyMjcgMTEuMTU3NiAxMS4xNTc2IDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzMuODQyMjIgMTQuMTIyNyAwLjg3NzA3NSAxMS4xNTc2IDAuODc3MDc1IDcuNDk5OTFaTTcuNDk5OTEgMS44MjcwOEM0LjM2Njg5IDEuODI3MDggMS44MjcwOCA0LjM2Njg5IDEuODI3MDggNy40OTk5MUMxLjgyNzA4IDEwLjYzMjkgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0MxMC42MzI5IDEzLjE3MjcgMTMuMTcyNyAxMC42MzI5IDEzLjE3MjcgNy40OTk5MUMxMy4xNzI3IDQuMzY2ODkgMTAuNjMyOSAxLjgyNzA4IDcuNDk5OTEgMS44MjcwOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc3MDc1QzMuODQyMjIgMC44NzcwNzUgMC44NzcwNzUgMy44NDIyMiAwLjg3NzA3NSA3LjQ5OTkxQzAuODc3MDc1IDExLjE1NzYgMy44NDIyMiAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MxMS4xNTc2IDE0LjEyMjcgMTQuMTIyNyAxMS4xNTc2IDE0LjEyMjcgNy40OTk5MUMxNC4xMjI3IDMuODQyMjIgMTEuMTU3NiAwLjg3NzA3NSA3LjQ5OTkxIDAuODc3MDc1Wk0zLjg1NzY4IDMuMTUwNTdDNC44NDMxMSAyLjMyNDQ4IDYuMTEzNDIgMS44MjcwOCA3LjQ5OTkxIDEuODI3MDhDMTAuNjMyOSAxLjgyNzA4IDEzLjE3MjcgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTFDMTMuMTcyNyA4Ljg4NjM4IDEyLjY3NTMgMTAuMTU2NyAxMS44NDkyIDExLjE0MjFMMy44NTc2OCAzLjE1MDU3Wk0zLjE1MDU3IDMuODU3NjhDMi4zMjQ0OCA0Ljg0MzExIDEuODI3MDggNi4xMTM0MiAxLjgyNzA4IDcuNDk5OTFDMS44MjcwOCAxMC42MzI5IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDOC44ODYzOCAxMy4xNzI3IDEwLjE1NjcgMTIuNjc1MyAxMS4xNDIxIDExLjg0OTJMMy4xNTA1NyAzLjg1NzY4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUgMlYxSDEwVjJINVpNNC43NSAwQzQuMzM1NzkgMCA0IDAuMzM1Nzg2IDQgMC43NVYxSDMuNUMyLjY3MTU3IDEgMiAxLjY3MTU3IDIgMi41VjEyLjVDMiAxMy4zMjg0IDIuNjcxNTcgMTQgMy41IDE0SDExLjVDMTIuMzI4NCAxNCAxMyAxMy4zMjg0IDEzIDEyLjVWMi41QzEzIDEuNjcxNTcgMTIuMzI4NCAxIDExLjUgMUgxMVYwLjc1QzExIDAuMzM1Nzg2IDEwLjY2NDIgMCAxMC4yNSAwSDQuNzVaTTExIDJWMi4yNUMxMSAyLjY2NDIxIDEwLjY2NDIgMyAxMC4yNSAzSDQuNzVDNC4zMzU3OSAzIDQgMi42NjQyMSA0IDIuMjVWMkgzLjVDMy4yMjM4NiAyIDMgMi4yMjM4NiAzIDIuNVYxMi41QzMgMTIuNzc2MSAzLjIyMzg2IDEzIDMuNSAxM0gxMS41QzExLjc3NjEgMTMgMTIgMTIuNzc2MSAxMiAxMi41VjIuNUMxMiAyLjIyMzg2IDExLjc3NjEgMiAxMS41IDJIMTFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxwZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSAyVjFIMTBWMkg1Wk00Ljc1IDBDNC4zMzU3OSAwIDQgMC4zMzU3ODYgNCAwLjc1VjFIMy41QzIuNjcxNTcgMSAyIDEuNjcxNTcgMiAyLjVWMTIuNUMyIDEzLjMyODQgMi42NzE1NyAxNCAzLjUgMTRIN1YxM0gzLjVDMy4yMjM4NiAxMyAzIDEyLjc3NjEgMyAxMi41VjIuNUMzIDIuMjIzODYgMy4yMjM4NiAyIDMuNSAySDRWMi4yNUM0IDIuNjY0MjEgNC4zMzU3OSAzIDQuNzUgM0gxMC4yNUMxMC42NjQyIDMgMTEgMi42NjQyMSAxMSAyLjI1VjJIMTEuNUMxMS43NzYxIDIgMTIgMi4yMjM4NiAxMiAyLjVWN0gxM1YyLjVDMTMgMS42NzE1NyAxMi4zMjg0IDEgMTEuNSAxSDExVjAuNzVDMTEgMC4zMzU3ODYgMTAuNjY0MiAwIDEwLjI1IDBINC43NVpNOSA4LjVDOSA4Ljc3NjE0IDguNzc2MTQgOSA4LjUgOUM4LjIyMzg2IDkgOCA4Ljc3NjE0IDggOC41QzggOC4yMjM4NiA4LjIyMzg2IDggOC41IDhDOC43NzYxNCA4IDkgOC4yMjM4NiA5IDguNVpNMTAuNSA5QzEwLjc3NjEgOSAxMSA4Ljc3NjE0IDExIDguNUMxMSA4LjIyMzg2IDEwLjc3NjEgOCAxMC41IDhDMTAuMjIzOSA4IDEwIDguMjIzODYgMTAgOC41QzEwIDguNzc2MTQgMTAuMjIzOSA5IDEwLjUgOVpNMTMgOC41QzEzIDguNzc2MTQgMTIuNzc2MSA5IDEyLjUgOUMxMi4yMjM5IDkgMTIgOC43NzYxNCAxMiA4LjVDMTIgOC4yMjM4NiAxMi4yMjM5IDggMTIuNSA4QzEyLjc3NjEgOCAxMyA4LjIyMzg2IDEzIDguNVpNMTQuNSA5QzE0Ljc3NjEgOSAxNSA4Ljc3NjE0IDE1IDguNUMxNSA4LjIyMzg2IDE0Ljc3NjEgOCAxNC41IDhDMTQuMjIzOSA4IDE0IDguMjIzODYgMTQgOC41QzE0IDguNzc2MTQgMTQuMjIzOSA5IDE0LjUgOVpNMTUgMTAuNUMxNSAxMC43NzYxIDE0Ljc3NjEgMTEgMTQuNSAxMUMxNC4yMjM5IDExIDE0IDEwLjc3NjEgMTQgMTAuNUMxNCAxMC4yMjM5IDE0LjIyMzkgMTAgMTQuNSAxMEMxNC43NzYxIDEwIDE1IDEwLjIyMzkgMTUgMTAuNVpNMTQuNSAxM0MxNC43NzYxIDEzIDE1IDEyLjc3NjEgMTUgMTIuNUMxNSAxMi4yMjM5IDE0Ljc3NjEgMTIgMTQuNSAxMkMxNC4yMjM5IDEyIDE0IDEyLjIyMzkgMTQgMTIuNUMxNCAxMi43NzYxIDE0LjIyMzkgMTMgMTQuNSAxM1pNMTQuNSAxNUMxNC43NzYxIDE1IDE1IDE0Ljc3NjEgMTUgMTQuNUMxNSAxNC4yMjM5IDE0Ljc3NjEgMTQgMTQuNSAxNEMxNC4yMjM5IDE0IDE0IDE0LjIyMzkgMTQgMTQuNUMxNCAxNC43NzYxIDE0LjIyMzkgMTUgMTQuNSAxNVpNOC41IDExQzguNzc2MTQgMTEgOSAxMC43NzYxIDkgMTAuNUM5IDEwLjIyMzkgOC43NzYxNCAxMCA4LjUgMTBDOC4yMjM4NiAxMCA4IDEwLjIyMzkgOCAxMC41QzggMTAuNzc2MSA4LjIyMzg2IDExIDguNSAxMVpNOSAxMi41QzkgMTIuNzc2MSA4Ljc3NjE0IDEzIDguNSAxM0M4LjIyMzg2IDEzIDggMTIuNzc2MSA4IDEyLjVDOCAxMi4yMjM5IDguMjIzODYgMTIgOC41IDEyQzguNzc2MTQgMTIgOSAxMi4yMjM5IDkgMTIuNVpNOC41IDE1QzguNzc2MTQgMTUgOSAxNC43NzYxIDkgMTQuNUM5IDE0LjIyMzkgOC43NzYxNCAxNCA4LjUgMTRDOC4yMjM4NiAxNCA4IDE0LjIyMzkgOCAxNC41QzggMTQuNzc2MSA4LjIyMzg2IDE1IDguNSAxNVpNMTEgMTQuNUMxMSAxNC43NzYxIDEwLjc3NjEgMTUgMTAuNSAxNUMxMC4yMjM5IDE1IDEwIDE0Ljc3NjEgMTAgMTQuNUMxMCAxNC4yMjM5IDEwLjIyMzkgMTQgMTAuNSAxNEMxMC43NzYxIDE0IDExIDE0LjIyMzkgMTEgMTQuNVpNMTIuNSAxNUMxMi43NzYxIDE1IDEzIDE0Ljc3NjEgMTMgMTQuNUMxMyAxNC4yMjM5IDEyLjc3NjEgMTQgMTIuNSAxNEMxMi4yMjM5IDE0IDEyIDE0LjIyMzkgMTIgMTQuNUMxMiAxNC43NzYxIDEyLjIyMzkgMTUgMTIuNSAxNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGhlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUwMDA5IDAuODc3MDE0QzMuODQyNDEgMC44NzcwMTQgMC44NzcyNTggMy44NDIxNiAwLjg3NzI1OCA3LjQ5OTg0QzAuODc3MjU4IDExLjE1NzUgMy44NDI0IDE0LjEyMjcgNy41MDAwOSAxNC4xMjI3QzExLjE1NzggMTQuMTIyNyAxNC4xMjI5IDExLjE1NzUgMTQuMTIyOSA3LjQ5OTg0QzE0LjEyMjkgMy44NDIxNiAxMS4xNTc3IDAuODc3MDE0IDcuNTAwMDkgMC44NzcwMTRaTTEuODI3MjYgNy40OTk4NEMxLjgyNzI2IDQuMzY2ODMgNC4zNjcwOCAxLjgyNzAxIDcuNTAwMDkgMS44MjcwMUMxMC42MzMxIDEuODI3MDEgMTMuMTcyOSA0LjM2NjgzIDEzLjE3MjkgNy40OTk4NEMxMy4xNzI5IDEwLjYzMjggMTAuNjMzMSAxMy4xNzI3IDcuNTAwMDkgMTMuMTcyN0M0LjM2NzA4IDEzLjE3MjcgMS44MjcyNiAxMC42MzI4IDEuODI3MjYgNy40OTk4NFpNOCA0LjUwMDAxQzggNC4yMjM4NyA3Ljc3NjE0IDQuMDAwMDEgNy41IDQuMDAwMDFDNy4yMjM4NiA0LjAwMDAxIDcgNC4yMjM4NyA3IDQuNTAwMDFWNy41MDAwMUM3IDcuNjMyNjIgNy4wNTI2OCA3Ljc1OTggNy4xNDY0NSA3Ljg1MzU3TDkuMTQ2NDUgOS44NTM1N0M5LjM0MTcxIDEwLjA0ODggOS42NTgyOSAxMC4wNDg4IDkuODUzNTUgOS44NTM1N0MxMC4wNDg4IDkuNjU4MzEgMTAuMDQ4OCA5LjM0MTcyIDkuODUzNTUgOS4xNDY0Nkw4IDcuMjkyOTFWNC41MDAwMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LENlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05Ljk2NDI0IDIuNjg1NzFDMTAuMDY2OCAyLjQyOTMxIDkuOTQyMDkgMi4xMzgzMyA5LjY4NTcgMi4wMzU3N0M5LjQyOTMgMS45MzMyMiA5LjEzODMyIDIuMDU3OTIgOS4wMzU3NiAyLjMxNDMyTDUuMDM1NzYgMTIuMzE0M0M0LjkzMzIgMTIuNTcwNyA1LjA1NzkxIDEyLjg2MTcgNS4zMTQzIDEyLjk2NDJDNS41NzA3IDEzLjA2NjggNS44NjE2OCAxMi45NDIxIDUuOTY0MjQgMTIuNjg1N0w5Ljk2NDI0IDIuNjg1NzFaTTMuODUzNTUgNS4xNDY0NkM0LjA0ODgyIDUuMzQxNzIgNC4wNDg4MiA1LjY1ODMgMy44NTM1NSA1Ljg1MzU2TDIuMjA3MTEgNy41MDAwMUwzLjg1MzU1IDkuMTQ2NDZDNC4wNDg4MiA5LjM0MTcyIDQuMDQ4ODIgOS42NTgzIDMuODUzNTUgOS44NTM1NkMzLjY1ODI5IDEwLjA0ODggMy4zNDE3MSAxMC4wNDg4IDMuMTQ2NDUgOS44NTM1NkwxLjE0NjQ1IDcuODUzNTZDMC45NTExODQgNy42NTgzIDAuOTUxMTg0IDcuMzQxNzIgMS4xNDY0NSA3LjE0NjQ2TDMuMTQ2NDUgNS4xNDY0NkMzLjM0MTcxIDQuOTUxMiAzLjY1ODI5IDQuOTUxMiAzLjg1MzU1IDUuMTQ2NDZaTTExLjE0NjQgNS4xNDY0NkMxMS4zNDE3IDQuOTUxMiAxMS42NTgzIDQuOTUxMiAxMS44NTM2IDUuMTQ2NDZMMTMuODUzNiA3LjE0NjQ2QzE0LjA0ODggNy4zNDE3MiAxNC4wNDg4IDcuNjU4MyAxMy44NTM2IDcuODUzNTZMMTEuODUzNiA5Ljg1MzU2QzExLjY1ODMgMTAuMDQ4OCAxMS4zNDE3IDEwLjA0ODggMTEuMTQ2NCA5Ljg1MzU2QzEwLjk1MTIgOS42NTgzIDEwLjk1MTIgOS4zNDE3MiAxMS4xNDY0IDkuMTQ2NDZMMTIuNzkyOSA3LjUwMDAxTDExLjE0NjQgNS44NTM1NkMxMC45NTEyIDUuNjU4MyAxMC45NTEyIDUuMzQxNzIgMTEuMTQ2NCA1LjE0NjQ2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNzExNDQgMC43OTY5MDJDNy41Nzc0MSAwLjczNDM1NyA3LjQyMjU3IDAuNzM0MzU3IDcuMjg4NTUgMC43OTY5MDJMMS4yODg1NSAzLjU5NjlDMS4xMTI1MSAzLjY3OTA1IDAuOTk5OTkzIDMuODU1NzMgMC45OTk5OTMgNC4wNDk5OVYxMC45NUMwLjk5OTk5MyAxMS4xNDQzIDEuMTEyNTEgMTEuMzIwOSAxLjI4ODU1IDExLjQwMzFMNy4yODg1NSAxNC4yMDMxQzcuNDIyNTcgMTQuMjY1NiA3LjU3NzQxIDE0LjI2NTYgNy43MTE0NCAxNC4yMDMxTDEzLjcxMTQgMTEuNDAzMUMxMy44ODc1IDExLjMyMDkgMTQgMTEuMTQ0MyAxNCAxMC45NVY0LjA0OTk5QzE0IDMuODU1NzMgMTMuODg3NSAzLjY3OTA1IDEzLjcxMTQgMy41OTY5TDcuNzExNDQgMC43OTY5MDJaTTcuNDk5OTkgMy4xNTY3NEw1Ljk4MDM5IDIuNTEwOTFMNy40OTk5OSAxLjgwMTc2TDkuMDE5NTkgMi41MTA5MUw3LjQ5OTk5IDMuMTU2NzRaTTcuNjk1NTYgNC4xNjAxOEwxMC4yMzgyIDMuMDc5NThMMTIuMjcxOSA0LjAyODY1TDcuNDk5OTkgNi4wNTY3MUwyLjcyODA4IDQuMDI4NjVMNC43NjE4MSAzLjA3OTU4TDcuMzA0NDIgNC4xNjAxOEM3LjQyOTM5IDQuMjEzMyA3LjU3MDU5IDQuMjEzMyA3LjY5NTU2IDQuMTYwMThaTTcuOTk5OTkgNi45MzA3OEwxMyA0LjgwNTc4VjcuOTI5NjZMMTEuMDgyMSA4LjgxMTlDMTAuNzI3MyA4Ljk3NTA5IDEwLjUgOS4zMjk4OCAxMC41IDkuNzIwMzlWMTEuNzk4Mkw3Ljk5OTk5IDEyLjk2NDlWNi45MzA3OFpNMTEuNSAxMS4zMzE2TDEzIDEwLjYzMTZWOS4wMzAzOUwxMS41IDkuNzIwMzlWMTEuMzMxNlpNNi45OTk5OSA2LjkzMDc4VjEyLjk2NDlMNC41MDIzMSAxMS43OTkzVjkuNzIwMzZDNC41MDIzMSA5LjMyOTg1IDQuMjc0OTkgOC45NzUwNiAzLjkyMDIyIDguODExODdMMS45OTk5OSA3LjkyODU2VjQuODA1NzhMNi45OTk5OSA2LjkzMDc4Wk0xLjk5OTk5IDEwLjYzMTZMMy41MDIzMSAxMS4zMzI2TDMuNTAyMzEgOS43MjAzNkwxLjk5OTk5IDkuMDI5MjlWMTAuNjMxNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjAwMDEyIDEuNUM4LjAwMDEyIDEuMjIzODYgNy43NzYyNiAxIDcuNTAwMTIgMUM3LjIyMzk4IDEgNy4wMDAxMiAxLjIyMzg2IDcuMDAwMTIgMS41VjEzLjVDNy4wMDAxMiAxMy43NzYxIDcuMjIzOTggMTQgNy41MDAxMiAxNEM3Ljc3NjI2IDE0IDguMDAwMTIgMTMuNzc2MSA4LjAwMDEyIDEzLjVWMS41Wk0zLjMxODEyIDUuODE4QzMuNDkzODYgNS42NDIyNyAzLjQ5Mzg2IDUuMzU3MzQgMy4zMTgxMiA1LjE4MTYxQzMuMTQyMzkgNS4wMDU4NyAyLjg1NzQ2IDUuMDA1ODcgMi42ODE3MyA1LjE4MTYxTDAuNjgxNzI5IDcuMTgxNjFDMC41MDU5OTMgNy4zNTczNCAwLjUwNTk5MyA3LjY0MjI3IDAuNjgxNzI5IDcuODE4TDIuNjgxNzMgOS44MThDMi44NTc0NiA5Ljk5Mzc0IDMuMTQyMzkgOS45OTM3NCAzLjMxODEyIDkuODE4QzMuNDkzODYgOS42NDIyNyAzLjQ5Mzg2IDkuMzU3MzQgMy4zMTgxMiA5LjE4MTYxTDIuMDg2MzIgNy45NDk4SDUuNTAwMTdDNS43NDg3IDcuOTQ5OCA1Ljk1MDE3IDcuNzQ4MzMgNS45NTAxNyA3LjQ5OThDNS45NTAxNyA3LjI1MTI4IDUuNzQ4NyA3LjA0OTggNS41MDAxNyA3LjA0OThIMi4wODYzMkwzLjMxODEyIDUuODE4Wk0xMi4zMTgxIDUuMTgxNjFDMTIuMTQyNCA1LjAwNTg3IDExLjg1NzUgNS4wMDU4NyAxMS42ODE3IDUuMTgxNjFDMTEuNTA2IDUuMzU3MzQgMTEuNTA2IDUuNjQyMjcgMTEuNjgxNyA1LjgxOEwxMi45MTM1IDcuMDQ5OEg5LjUwMDE3QzkuMjUxNjQgNy4wNDk4IDkuMDUwMTcgNy4yNTEyOCA5LjA1MDE3IDcuNDk5OEM5LjA1MDE3IDcuNzQ4MzMgOS4yNTE2NCA3Ljk0OTggOS41MDAxNyA3Ljk0OThIMTIuOTEzNUwxMS42ODE3IDkuMTgxNjFDMTEuNTA2IDkuMzU3MzQgMTEuNTA2IDkuNjQyMjcgMTEuNjgxNyA5LjgxOEMxMS44NTc1IDkuOTkzNzQgMTIuMTQyNCA5Ljk5Mzc0IDEyLjMxODEgOS44MThMMTQuMzE4MSA3LjgxOEMxNC40OTM5IDcuNjQyMjcgMTQuNDkzOSA3LjM1NzM0IDE0LjMxODEgNy4xODE2MUwxMi4zMTgxIDUuMTgxNjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxtZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi4xNDk5OCAxNFYxSDAuODQ5OTc2VjE0SDIuMTQ5OThaTTYuMTQ5OTggMTRWMUg0Ljg0OTk4VjE0SDYuMTQ5OThaTTEwLjE1IDFWMTRIOC44NDk5OFYxSDEwLjE1Wk0xNC4xNSAxNFYxSDEyLjg1VjE0SDE0LjE1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sd2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuOTQ5NjkgNy40OTk4OUM5Ljk0OTY5IDguODUyODggOC44NTI4OCA5Ljk0OTY5IDcuNDk5ODkgOS45NDk2OUM2LjE0NjkxIDkuOTQ5NjkgNS4wNTAxIDguODUyODggNS4wNTAxIDcuNDk5ODlDNS4wNTAxIDYuMTQ2OTEgNi4xNDY5MSA1LjA1MDEgNy40OTk4OSA1LjA1MDFDOC44NTI4OCA1LjA1MDEgOS45NDk2OSA2LjE0NjkxIDkuOTQ5NjkgNy40OTk4OVpNMTAuODYzMiA4QzEwLjYyMTMgOS42NDA1NSA5LjIwNzY0IDEwLjg5OTcgNy40OTk4OSAxMC44OTk3QzUuNzkyMTQgMTAuODk5NyA0LjM3ODQ3IDkuNjQwNTUgNC4xMzY2MiA4SDAuNUMwLjIyMzg1OCA4IDAgNy43NzYxNCAwIDcuNUMwIDcuMjIzODYgMC4yMjM4NTggNyAwLjUgN0g0LjEzNjU5QzQuMzc4MzUgNS4zNTkzNSA1Ljc5MjA2IDQuMTAwMSA3LjQ5OTg5IDQuMTAwMUM5LjIwNzcyIDQuMTAwMSAxMC42MjE0IDUuMzU5MzUgMTAuODYzMiA3SDE0LjVDMTQuNzc2MSA3IDE1IDcuMjIzODYgMTUgNy41QzE1IDcuNzc2MTQgMTQuNzc2MSA4IDE0LjUgOEgxMC44NjMyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNjcxMjkgMy4xNDYzNEM0LjQ3NjAzIDMuMzQxNjEgNC40NzYwMyAzLjY1ODE5IDQuNjcxMjkgMy44NTM0NUw3LjE0NjE2IDYuMzI4MzNDNy4zNDE0MiA2LjUyMzU5IDcuNjU4MDEgNi41MjM1OSA3Ljg1MzI3IDYuMzI4MzNMMTAuMzI4MSAzLjg1MzQ1QzEwLjUyMzQgMy42NTgxOSAxMC41MjM0IDMuMzQxNjEgMTAuMzI4MSAzLjE0NjM0TDcuODUzMjcgMC42NzE0NzFDNy42NTgwMSAwLjQ3NjIwOSA3LjM0MTQyIDAuNDc2MjA5IDcuMTQ2MTYgMC42NzE0NzFMNC42NzEyOSAzLjE0NjM0Wk03LjQ5OTcxIDUuMjY3NjZMNS43MzE5NSAzLjQ5OTlMNy40OTk3MSAxLjczMjEzTDkuMjY3NDggMy40OTk5TDcuNDk5NzEgNS4yNjc2NlpNOC42NzEyOSA3LjE0NjM0QzguNDc2MDMgNy4zNDE2MSA4LjQ3NjAzIDcuNjU4MTkgOC42NzEyOSA3Ljg1MzQ1TDExLjE0NjIgMTAuMzI4M0MxMS4zNDE0IDEwLjUyMzYgMTEuNjU4IDEwLjUyMzYgMTEuODUzMyAxMC4zMjgzTDE0LjMyODEgNy44NTM0NUMxNC41MjM0IDcuNjU4MTkgMTQuNTIzNCA3LjM0MTYxIDE0LjMyODEgNy4xNDYzNEwxMS44NTMzIDQuNjcxNDdDMTEuNjU4IDQuNDc2MjEgMTEuMzQxNCA0LjQ3NjIxIDExLjE0NjIgNC42NzE0N0w4LjY3MTI5IDcuMTQ2MzRaTTExLjQ5OTcgOS4yNjc2Nkw5LjczMTk1IDcuNDk5OUwxMS40OTk3IDUuNzMyMTNMMTMuMjY3NSA3LjQ5OTlMMTEuNDk5NyA5LjI2NzY2Wk00LjY3MTI5IDExLjg1MzVDNC40NzYwMyAxMS42NTgyIDQuNDc2MDMgMTEuMzQxNiA0LjY3MTI5IDExLjE0NjNMNy4xNDYxNiA4LjY3MTQ3QzcuMzQxNDIgOC40NzYyMSA3LjY1ODAxIDguNDc2MjEgNy44NTMyNyA4LjY3MTQ3TDEwLjMyODEgMTEuMTQ2M0MxMC41MjM0IDExLjM0MTYgMTAuNTIzNCAxMS42NTgyIDEwLjMyODEgMTEuODUzNUw3Ljg1MzI3IDE0LjMyODNDNy42NTgwMSAxNC41MjM2IDcuMzQxNDIgMTQuNTIzNiA3LjE0NjE2IDE0LjMyODNMNC42NzEyOSAxMS44NTM1Wk01LjczMTk1IDExLjQ5OTlMNy40OTk3MSAxMy4yNjc3TDkuMjY3NDggMTEuNDk5OUw3LjQ5OTcxIDkuNzMyMTNMNS43MzE5NSAxMS40OTk5Wk0wLjY3MTI4OCA3LjE0NjQ5QzAuNDc2MDI2IDcuMzQxNzUgMC40NzYwMjYgNy42NTgzNCAwLjY3MTI4OCA3Ljg1MzZMMy4xNDYxNiAxMC4zMjg1QzMuMzQxNDIgMTAuNTIzNyAzLjY1ODAxIDEwLjUyMzcgMy44NTMyNyAxMC4zMjg1TDYuMzI4MTQgNy44NTM2QzYuNTIzNCA3LjY1ODM0IDYuNTIzNCA3LjM0MTc1IDYuMzI4MTQgNy4xNDY0OUwzLjg1MzI3IDQuNjcxNjJDMy42NTgwMSA0LjQ3NjM2IDMuMzQxNDIgNC40NzYzNiAzLjE0NjE2IDQuNjcxNjJMMC42NzEyODggNy4xNDY0OVpNMy40OTk3MiA5LjI2NzgxTDEuNzMxOTUgNy41MDAwNUwzLjQ5OTcyIDUuNzMyMjhMNS4yNjc0OCA3LjUwMDA1TDMuNDk5NzIgOS4yNjc4MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGJlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjg3OTM1IDFIMy45SDExLjFIMTEuMTIwN0MxMS41MjMxIDAuOTk5OTk0IDExLjg1NTMgMC45OTk5ODkgMTIuMTI1OSAxLjAyMjFDMTIuNDA3IDEuMDQ1MDYgMTIuNjY1MyAxLjA5NDM0IDEyLjkwOCAxLjIxNzk5QzEzLjI4NDMgMS40MDk3MyAxMy41OTAzIDEuNzE1NyAxMy43ODIgMi4wOTIwMkMxMy45MDU3IDIuMzM0NjkgMTMuOTU0OSAyLjU5MzA0IDEzLjk3NzkgMi44NzQwOUMxNCAzLjE0NDY4IDE0IDMuNDc2ODYgMTQgMy44NzkzNFYzLjlWMTEuMVYxMS4xMjA3QzE0IDExLjUyMzEgMTQgMTEuODU1MyAxMy45Nzc5IDEyLjEyNTlDMTMuOTU0OSAxMi40MDcgMTMuOTA1NyAxMi42NjUzIDEzLjc4MiAxMi45MDhDMTMuNTkwMyAxMy4yODQzIDEzLjI4NDMgMTMuNTkwMyAxMi45MDggMTMuNzgyQzEyLjY2NTMgMTMuOTA1NyAxMi40MDcgMTMuOTU0OSAxMi4xMjU5IDEzLjk3NzlDMTEuODU1MyAxNCAxMS41MjMxIDE0IDExLjEyMDcgMTRIMTEuMUgzLjlIMy44NzkzNEMzLjQ3Njg2IDE0IDMuMTQ0NjggMTQgMi44NzQwOSAxMy45Nzc5QzIuNTkzMDQgMTMuOTU0OSAyLjMzNDY5IDEzLjkwNTcgMi4wOTIwMiAxMy43ODJDMS43MTU3IDEzLjU5MDMgMS40MDk3MyAxMy4yODQzIDEuMjE3OTkgMTIuOTA4QzEuMDk0MzQgMTIuNjY1MyAxLjA0NTA2IDEyLjQwNyAxLjAyMjEgMTIuMTI1OUMwLjk5OTk4OSAxMS44NTUzIDAuOTk5OTk0IDExLjUyMzEgMSAxMS4xMjA3VjExLjEyMDdWMTEuMVYzLjlWMy44NzkzNVYzLjg3OTM0QzAuOTk5OTk0IDMuNDc2ODYgMC45OTk5ODkgMy4xNDQ2OCAxLjAyMjEgMi44NzQwOUMxLjA0NTA2IDIuNTkzMDQgMS4wOTQzNCAyLjMzNDY5IDEuMjE3OTkgMi4wOTIwMkMxLjQwOTczIDEuNzE1NyAxLjcxNTcgMS40MDk3MyAyLjA5MjAyIDEuMjE3OTlDMi4zMzQ2OSAxLjA5NDM0IDIuNTkzMDQgMS4wNDUwNiAyLjg3NDA5IDEuMDIyMUMzLjE0NDY5IDAuOTk5OTg5IDMuNDc2ODcgMC45OTk5OTQgMy44NzkzNSAxWk0yLjk1NTUyIDIuMDE4NzhDMi43MzYzMSAyLjAzNjY5IDIuNjI0MjEgMi4wNjkxNSAyLjU0NjAxIDIuMTA4OTlDMi4zNTc4NSAyLjIwNDg3IDIuMjA0ODcgMi4zNTc4NSAyLjEwODk5IDIuNTQ2MDFDMi4wNjkxNSAyLjYyNDIxIDIuMDM2NjkgMi43MzYzMSAyLjAxODc4IDIuOTU1NTJDMi4wMDAzOSAzLjE4MDU2IDIgMy40NzE3MSAyIDMuOVY3SDdWMkgzLjlDMy40NzE3MSAyIDMuMTgwNTYgMi4wMDAzOSAyLjk1NTUyIDIuMDE4NzhaTTcgOEgyVjExLjFDMiAxMS41MjgzIDIuMDAwMzkgMTEuODE5NCAyLjAxODc4IDEyLjA0NDVDMi4wMzY2OSAxMi4yNjM3IDIuMDY5MTUgMTIuMzc1OCAyLjEwODk5IDEyLjQ1NEMyLjIwNDg3IDEyLjY0MjIgMi4zNTc4NSAxMi43OTUxIDIuNTQ2MDEgMTIuODkxQzIuNjI0MjEgMTIuOTMwOSAyLjczNjMxIDEyLjk2MzMgMi45NTU1MiAxMi45ODEyQzMuMTgwNTYgMTIuOTk5NiAzLjQ3MTcxIDEzIDMuOSAxM0g3VjhaTTggOEgxM1YxMS4xQzEzIDExLjUyODMgMTIuOTk5NiAxMS44MTk0IDEyLjk4MTIgMTIuMDQ0NUMxMi45NjMzIDEyLjI2MzcgMTIuOTMwOSAxMi4zNzU4IDEyLjg5MSAxMi40NTRDMTIuNzk1MSAxMi42NDIyIDEyLjY0MjIgMTIuNzk1MSAxMi40NTQgMTIuODkxQzEyLjM3NTggMTIuOTMwOSAxMi4yNjM3IDEyLjk2MzMgMTIuMDQ0NSAxMi45ODEyQzExLjgxOTQgMTIuOTk5NiAxMS41MjgzIDEzIDExLjEgMTNIOFY4Wk0xMyA3SDhWMkgxMS4xQzExLjUyODMgMiAxMS44MTk0IDIuMDAwMzkgMTIuMDQ0NSAyLjAxODc4QzEyLjI2MzcgMi4wMzY2OSAxMi4zNzU4IDIuMDY5MTUgMTIuNDU0IDIuMTA4OTlDMTIuNjQyMiAyLjIwNDg3IDEyLjc5NTEgMi4zNTc4NSAxMi44OTEgMi41NDYwMUMxMi45MzA5IDIuNjI0MjEgMTIuOTYzMyAyLjczNjMxIDEyLjk4MTIgMi45NTU1MkMxMi45OTk2IDMuMTgwNTYgMTMgMy40NzE3MSAxMyAzLjlWN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHhlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03Ljg1MzY3IDEuNDg5NTZDNy42NTg0MSAxLjI5NDI5IDcuMzQxODIgMS4yOTQyOSA3LjE0NjU2IDEuNDg5NTZMMS40ODk3MSA3LjE0NjQxQzEuMjk0NDUgNy4zNDE2NyAxLjI5NDQ1IDcuNjU4MjUgMS40ODk3MSA3Ljg1MzUyTDcuMTQ2NTYgMTMuNTEwNEM3LjM0MTgyIDEzLjcwNTYgNy42NTg0MSAxMy43MDU2IDcuODUzNjcgMTMuNTEwNEwxMy41MTA1IDcuODUzNTJDMTMuNzA1OCA3LjY1ODI1IDEzLjcwNTggNy4zNDE2NyAxMy41MTA1IDcuMTQ2NDFMNy44NTM2NyAxLjQ4OTU2Wk03LjUgMi41NTAzM0wyLjU1MDM3IDcuNDk5OTZMNy41IDEyLjQ0OTZWMi41NTAzM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE9lPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjE0NjUgMS40ODk1OUM3LjM0MTc2IDEuMjk0MzIgNy42NTgzNSAxLjI5NDMyIDcuODUzNjEgMS40ODk1OUwxMy41MTA1IDcuMTQ2NDRDMTMuNzA1NyA3LjM0MTcgMTMuNzA1NyA3LjY1ODI5IDEzLjUxMDUgNy44NTM1NUw3Ljg1MzYxIDEzLjUxMDRDNy42NTgzNSAxMy43MDU3IDcuMzQxNzYgMTMuNzA1NyA3LjE0NjUgMTMuNTEwNEwxLjQ4OTY1IDcuODUzNTVDMS4yOTQzOSA3LjY1ODI5IDEuMjk0MzkgNy4zNDE3IDEuNDg5NjUgNy4xNDY0NEw3LjE0NjUgMS40ODk1OVpNNy41MDAwNSAyLjU1MDI1TDIuNTUwMzEgNy40OTk5OUw3LjUwMDA1IDEyLjQ0OTdMMTIuNDQ5OCA3LjQ5OTk5TDcuNTAwMDUgMi41NTAyNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LExlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03Ljg1MzYxIDEuNDg5NTlDNy42NTgzNSAxLjI5NDMyIDcuMzQxNzYgMS4yOTQzMiA3LjE0NjUgMS40ODk1OUwxLjQ4OTY1IDcuMTQ2NDRDMS4yOTQzOSA3LjM0MTcgMS4yOTQzOSA3LjY1ODI5IDEuNDg5NjUgNy44NTM1NUwzLjk2NDUgMTAuMzI4NEwxLjY0NjQ0IDEyLjY0NjRDMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTMuMTU4MyAxLjY0NjQ0IDEzLjM1MzZDMS44NDE3MSAxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAyLjM1MzU1IDEzLjM1MzZMNC42NzE2IDExLjAzNTVMNy4xNDY1IDEzLjUxMDRDNy4zNDE3NiAxMy43MDU3IDcuNjU4MzUgMTMuNzA1NyA3Ljg1MzYxIDEzLjUxMDRMMTMuNTEwNSA3Ljg1MzU1QzEzLjcwNTcgNy42NTgyOSAxMy43MDU3IDcuMzQxNyAxMy41MTA1IDcuMTQ2NDRMMTEuMDM1NiA0LjY3MTU0TDEzLjM1MzUgMi4zNTM1NUMxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAxLjg0MTcxIDEzLjM1MzUgMS42NDY0NUMxMy4xNTgzIDEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEyLjY0NjQgMS42NDY0NUwxMC4zMjg1IDMuOTY0NDNMNy44NTM2MSAxLjQ4OTU5Wk05LjYyMTM1IDQuNjcxNTRMNy41MDAwNSAyLjU1MDI1TDIuNTUwMzEgNy40OTk5OUw0LjY3MTYgOS42MjEyOUw5LjYyMTM1IDQuNjcxNTRaTTUuMzc4NzEgMTAuMzI4NEw3LjUwMDA1IDEyLjQ0OTdMMTIuNDQ5OCA3LjQ5OTk5TDEwLjMyODUgNS4zNzg2NUw1LjM3ODcxIDEwLjMyODRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxNZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTIuODAzNCA3LjE0NjQ0QzEyLjk5ODYgNi45NTExOCAxMy4zMTUyIDYuOTUxMTggMTMuNTEwNSA3LjE0NjQ0QzEzLjcwNTcgNy4zNDE3IDEzLjcwNTcgNy42NTgyOSAxMy41MTA1IDcuODUzNTVDMTMuMzE1MiA4LjA0ODgxIDEyLjk5ODYgOC4wNDg4MSAxMi44MDM0IDcuODUzNTVDMTIuNjA4MSA3LjY1ODI4IDEyLjYwODEgNy4zNDE3IDEyLjgwMzQgNy4xNDY0NFpNMTIuMDk2MiA4LjU2MDY1QzEyLjI5MTUgOC43NTU5MiAxMi4yOTE1IDkuMDcyNSAxMi4wOTYyIDkuMjY3NzZDMTEuOTAxIDkuNDYzMDIgMTEuNTg0NCA5LjQ2MzAyIDExLjM4OTEgOS4yNjc3NkMxMS4xOTM5IDkuMDcyNSAxMS4xOTM5IDguNzU1OTIgMTEuMzg5MSA4LjU2MDY1QzExLjU4NDQgOC4zNjUzOSAxMS45MDEgOC4zNjUzOSAxMi4wOTYyIDguNTYwNjVaTTEwLjY4MiA5Ljk3NDg3QzEwLjg3NzMgMTAuMTcwMSAxMC44NzczIDEwLjQ4NjcgMTAuNjgyIDEwLjY4MkMxMC40ODY4IDEwLjg3NzIgMTAuMTcwMiAxMC44NzcyIDkuOTc0OTMgMTAuNjgyQzkuNzc5NjcgMTAuNDg2NyA5Ljc3OTY3IDEwLjE3MDEgOS45NzQ5MyA5Ljk3NDg3QzEwLjE3MDIgOS43Nzk2IDEwLjQ4NjggOS43Nzk2IDEwLjY4MiA5Ljk3NDg3Wk05LjI2NzgyIDExLjM4OTFDOS40NjMwOCAxMS41ODQzIDkuNDYzMDggMTEuOTAwOSA5LjI2NzgyIDEyLjA5NjJDOS4wNzI1NiAxMi4yOTE1IDguNzU1OTggMTIuMjkxNSA4LjU2MDcxIDEyLjA5NjJDOC4zNjU0NSAxMS45MDA5IDguMzY1NDUgMTEuNTg0MyA4LjU2MDcyIDExLjM4OTFDOC43NTU5OCAxMS4xOTM4IDkuMDcyNTYgMTEuMTkzOCA5LjI2NzgyIDExLjM4OTFaTTcuMTQ2NSAxMy41MTA0QzYuOTUxMjQgMTMuMzE1MSA2Ljk1MTI0IDEyLjk5ODYgNy4xNDY1IDEyLjgwMzNDNy4xNzA5MSAxMi43Nzg5IDcuMTk3MjEgMTIuNzU3NSA3LjIyNDk0IDEyLjczOTJDNy40MTkwMSAxMi42MTExIDcuNjgyNzUgMTIuNjMyNCA3Ljg1MzYxIDEyLjgwMzNDOC4wNDg4NyAxMi45OTg2IDguMDQ4ODcgMTMuMzE1MSA3Ljg1MzYxIDEzLjUxMDRDNy42NTgzNSAxMy43MDU3IDcuMzQxNzYgMTMuNzA1NyA3LjE0NjUgMTMuNTEwNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuOTAzODYgOC41NjA2NUMyLjcwODYgOC43NTU5MiAyLjcwODYgOS4wNzI1IDIuOTAzODYgOS4yNjc3NiAzLjA5OTEyIDkuNDYzMDIgMy40MTU3MSA5LjQ2MzAyIDMuNjEwOTcgOS4yNjc3NiAzLjgwNjIzIDkuMDcyNSAzLjgwNjIzIDguNzU1OTIgMy42MTA5NyA4LjU2MDY1IDMuNDE1NzEgOC4zNjUzOSAzLjA5OTEyIDguMzY1MzkgMi45MDM4NiA4LjU2MDY1ek00LjMxODA3IDkuOTc0ODdDNC4xMjI4MSAxMC4xNzAxIDQuMTIyODEgMTAuNDg2NyA0LjMxODA3IDEwLjY4MiA0LjUxMzM0IDEwLjg3NzIgNC44Mjk5MiAxMC44NzcyIDUuMDI1MTggMTAuNjgyIDUuMjIwNDQgMTAuNDg2NyA1LjIyMDQ0IDEwLjE3MDEgNS4wMjUxOCA5Ljk3NDg3IDQuODI5OTIgOS43Nzk2IDQuNTEzMzQgOS43Nzk2IDQuMzE4MDcgOS45NzQ4N3pNNS43MzIyOSAxMS4zODkxQzUuNTM3MDMgMTEuNTg0MyA1LjUzNzAzIDExLjkwMDkgNS43MzIyOSAxMi4wOTYyIDUuOTI3NTUgMTIuMjkxNCA2LjI0NDEzIDEyLjI5MTUgNi40MzkzOSAxMi4wOTYyIDYuNjM0NjYgMTEuOTAwOSA2LjYzNDY2IDExLjU4NDMgNi40MzkzOSAxMS4zODkxIDYuMjQ0MTMgMTEuMTkzOCA1LjkyNzU1IDExLjE5MzggNS43MzIyOSAxMS4zODkxek0yLjE5Njc1IDcuODUzNTVDMi4zNjc2MSA3LjY4MjY5IDIuMzg4OTcgNy40MTg5NSAyLjI2MDgyIDcuMjI0ODggMi4wOTA0NiA2Ljk2Njg0IDEuNzEwNjMgNi45MjU0NiAxLjQ4OTY1IDcuMTQ2NDQgMS4yOTQzOSA3LjM0MTcgMS4yOTQzOSA3LjY1ODI5IDEuNDg5NjUgNy44NTM1NSAxLjY4NDkxIDguMDQ4ODEgMi4wMDE0OSA4LjA0ODgxIDIuMTk2NzUgNy44NTM1NXpNMy42MTA5NyA1LjczMjIzQzMuNDE1NzEgNS41MzY5NiAzLjA5OTEyIDUuNTM2OTYgMi45MDM4NiA1LjczMjIzIDIuNzA4NiA1LjkyNzQ5IDIuNzA4NiA2LjI0NDA3IDIuOTAzODYgNi40MzkzMyAzLjA5OTEyIDYuNjM0NiAzLjQxNTcxIDYuNjM0NiAzLjYxMDk3IDYuNDM5MzMgMy44MDYyMyA2LjI0NDA3IDMuODA2MjMgNS45Mjc0OSAzLjYxMDk3IDUuNzMyMjN6TTUuMDI1MTggNC4zMTgwMUM0LjgyOTkyIDQuMTIyNzUgNC41MTMzNCA0LjEyMjc1IDQuMzE4MDcgNC4zMTgwMSA0LjEyMjgxIDQuNTEzMjggNC4xMjI4MSA0LjgyOTg2IDQuMzE4MDcgNS4wMjUxMiA0LjUxMzM0IDUuMjIwMzggNC44Mjk5MiA1LjIyMDM4IDUuMDI1MTggNS4wMjUxMiA1LjIyMDQ0IDQuODI5ODYgNS4yMjA0NCA0LjUxMzI4IDUuMDI1MTggNC4zMTgwMXpNNi40MzkzOSAyLjkwMzhDNi4yNDQxMyAyLjcwODU0IDUuOTI3NTUgMi43MDg1NCA1LjczMjI5IDIuOTAzOCA1LjUzNzAzIDMuMDk5MDYgNS41MzcwMyAzLjQxNTY0IDUuNzMyMjkgMy42MTA5MSA1LjkyNzU1IDMuODA2MTcgNi4yNDQxMyAzLjgwNjE3IDYuNDM5MzkgMy42MTA5MSA2LjYzNDY2IDMuNDE1NjQgNi42MzQ2NiAzLjA5OTA2IDYuNDM5MzkgMi45MDM4ek03Ljg1MzYxIDEuNDg5NTlDNy42NTgzNSAxLjI5NDMyIDcuMzQxNzYgMS4yOTQzMiA3LjE0NjUgMS40ODk1OSA2Ljk1MTI0IDEuNjg0ODUgNi45NTEyNCAyLjAwMTQzIDcuMTQ2NSAyLjE5NjY5IDcuMzQxNzYgMi4zOTE5NiA3LjY1ODM1IDIuMzkxOTYgNy44NTM2MSAyLjE5NjY5IDguMDQ4ODcgMi4wMDE0MyA4LjA0ODg3IDEuNjg0ODUgNy44NTM2MSAxLjQ4OTU5ek05LjI2NzgyIDIuOTAzOEM5LjA3MjU2IDIuNzA4NTQgOC43NTU5OCAyLjcwODU0IDguNTYwNzEgMi45MDM4IDguMzY1NDUgMy4wOTkwNiA4LjM2NTQ1IDMuNDE1NjQgOC41NjA3MSAzLjYxMDkxIDguNzU1OTggMy44MDYxNyA5LjA3MjU2IDMuODA2MTcgOS4yNjc4MiAzLjYxMDkxIDkuNDYzMDggMy40MTU2NCA5LjQ2MzA4IDMuMDk5MDYgOS4yNjc4MiAyLjkwMzh6TTEwLjY4MiA0LjMxODAxQzEwLjQ4NjggNC4xMjI3NSAxMC4xNzAyIDQuMTIyNzUgOS45NzQ5MyA0LjMxODAxIDkuNzc5NjcgNC41MTMyOCA5Ljc3OTY3IDQuODI5ODYgOS45NzQ5MyA1LjAyNTEyIDEwLjE3MDIgNS4yMjAzOCAxMC40ODY4IDUuMjIwMzggMTAuNjgyIDUuMDI1MTIgMTAuODc3MyA0LjgyOTg2IDEwLjg3NzMgNC41MTMyOCAxMC42ODIgNC4zMTgwMXpNMTIuMDk2MiA1LjczMjIzQzExLjkwMSA1LjUzNjk2IDExLjU4NDQgNS41MzY5NiAxMS4zODkxIDUuNzMyMjMgMTEuMTkzOSA1LjkyNzQ5IDExLjE5MzkgNi4yNDQwNyAxMS4zODkxIDYuNDM5MzMgMTEuNTg0NCA2LjYzNDYgMTEuOTAxIDYuNjM0NiAxMi4wOTYyIDYuNDM5MzMgMTIuMjkxNSA2LjI0NDA3IDEyLjI5MTUgNS45Mjc0OSAxMi4wOTYyIDUuNzMyMjN6XCIsZmlsbDpufSkpfSxTZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiAxLjVDMiAxLjc3NjE0IDEuNzc2MTQgMiAxLjUgMkMxLjIyMzg2IDIgMSAxLjc3NjE0IDEgMS41QzEgMS4yMjM4NiAxLjIyMzg2IDEgMS41IDFDMS43NzYxNCAxIDIgMS4yMjM4NiAyIDEuNVpNNSAxM0gxMFYyTDUgMkw1IDEzWk00IDEzQzQgMTMuNTUyMyA0LjQ0NzcyIDE0IDUgMTRIMTBDMTAuNTUyMyAxNCAxMSAxMy41NTIzIDExIDEzVjJDMTEgMS40NDc3MiAxMC41NTIzIDEgMTAgMUg1QzQuNDQ3NzIgMSA0IDEuNDQ3NzEgNCAyVjEzWk0xMy41IDJDMTMuNzc2MSAyIDE0IDEuNzc2MTQgMTQgMS41QzE0IDEuMjIzODYgMTMuNzc2MSAxIDEzLjUgMUMxMy4yMjM5IDEgMTMgMS4yMjM4NiAxMyAxLjVDMTMgMS43NzYxNCAxMy4yMjM5IDIgMTMuNSAyWk0yIDMuNUMyIDMuNzc2MTQgMS43NzYxNCA0IDEuNSA0QzEuMjIzODYgNCAxIDMuNzc2MTQgMSAzLjVDMSAzLjIyMzg2IDEuMjIzODYgMyAxLjUgM0MxLjc3NjE0IDMgMiAzLjIyMzg2IDIgMy41Wk0xMy41IDRDMTMuNzc2MSA0IDE0IDMuNzc2MTQgMTQgMy41QzE0IDMuMjIzODYgMTMuNzc2MSAzIDEzLjUgM0MxMy4yMjM5IDMgMTMgMy4yMjM4NiAxMyAzLjVDMTMgMy43NzYxNCAxMy4yMjM5IDQgMTMuNSA0Wk0yIDUuNUMyIDUuNzc2MTQgMS43NzYxNCA2IDEuNSA2QzEuMjIzODYgNiAxIDUuNzc2MTQgMSA1LjVDMSA1LjIyMzg2IDEuMjIzODYgNSAxLjUgNUMxLjc3NjE0IDUgMiA1LjIyMzg2IDIgNS41Wk0xMy41IDZDMTMuNzc2MSA2IDE0IDUuNzc2MTQgMTQgNS41QzE0IDUuMjIzODYgMTMuNzc2MSA1IDEzLjUgNUMxMy4yMjM5IDUgMTMgNS4yMjM4NiAxMyA1LjVDMTMgNS43NzYxNCAxMy4yMjM5IDYgMTMuNSA2Wk0yIDcuNUMyIDcuNzc2MTQgMS43NzYxNCA4IDEuNSA4QzEuMjIzODYgOCAxIDcuNzc2MTQgMSA3LjVDMSA3LjIyMzg2IDEuMjIzODYgNyAxLjUgN0MxLjc3NjE0IDcgMiA3LjIyMzg2IDIgNy41Wk0xMy41IDhDMTMuNzc2MSA4IDE0IDcuNzc2MTQgMTQgNy41QzE0IDcuMjIzODYgMTMuNzc2MSA3IDEzLjUgN0MxMy4yMjM5IDcgMTMgNy4yMjM4NiAxMyA3LjVDMTMgNy43NzYxNCAxMy4yMjM5IDggMTMuNSA4Wk0yIDkuNUMyIDkuNzc2MTQgMS43NzYxNCAxMCAxLjUgMTBDMS4yMjM4NiAxMCAxIDkuNzc2MTQgMSA5LjVDMSA5LjIyMzg2IDEuMjIzODYgOSAxLjUgOUMxLjc3NjE0IDkgMiA5LjIyMzg2IDIgOS41Wk0xMy41IDEwQzEzLjc3NjEgMTAgMTQgOS43NzYxNCAxNCA5LjVDMTQgOS4yMjM4NiAxMy43NzYxIDkgMTMuNSA5QzEzLjIyMzkgOSAxMyA5LjIyMzg2IDEzIDkuNUMxMyA5Ljc3NjE0IDEzLjIyMzkgMTAgMTMuNSAxMFpNMiAxMS41QzIgMTEuNzc2MSAxLjc3NjE0IDEyIDEuNSAxMkMxLjIyMzg2IDEyIDEgMTEuNzc2MSAxIDExLjVDMSAxMS4yMjM5IDEuMjIzODYgMTEgMS41IDExQzEuNzc2MTQgMTEgMiAxMS4yMjM5IDIgMTEuNVpNMTMuNSAxMkMxMy43NzYxIDEyIDE0IDExLjc3NjEgMTQgMTEuNUMxNCAxMS4yMjM5IDEzLjc3NjEgMTEgMTMuNSAxMUMxMy4yMjM5IDExIDEzIDExLjIyMzkgMTMgMTEuNUMxMyAxMS43NzYxIDEzLjIyMzkgMTIgMTMuNSAxMlpNMiAxMy41QzIgMTMuNzc2MSAxLjc3NjE0IDE0IDEuNSAxNEMxLjIyMzg2IDE0IDEgMTMuNzc2MSAxIDEzLjVDMSAxMy4yMjM5IDEuMjIzODYgMTMgMS41IDEzQzEuNzc2MTQgMTMgMiAxMy4yMjM5IDIgMTMuNVpNMTMuNSAxNEMxMy43NzYxIDE0IDE0IDEzLjc3NjEgMTQgMTMuNUMxNCAxMy4yMjM5IDEzLjc3NjEgMTMgMTMuNSAxM0MxMy4yMjM5IDEzIDEzIDEzLjIyMzkgMTMgMTMuNUMxMyAxMy43NzYxIDEzLjIyMzkgMTQgMTMuNSAxNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LF9lPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi4wNjk3IDEuNzY3NDZDMTIuNDgwNyAxLjIxOTQ3IDExLjQ2MDUgMC40NTQzMTEgMTEuMDQ5NSAxLjAwMjNDMTAuNjM4NSAxLjU1MDI4IDExLjY1ODggMi4zMTU0NCAxMi4wNjk3IDEuNzY3NDZaTTguMzkyNjMgMS4wNzgxMUM3LjE1NTg1IDAuOTUwNjAyIDUuNzgyMyAxLjE2MzQ4IDQuNTg0MzMgMS43MDkzN0MzLjM4NTUyIDIuMjU1NjMgMi4zMjczNSAzLjE1MzA5IDEuNzg4NDQgNC40MTgzMkMxLjM3NTc0IDUuMzg3MjQgMS4wMTcxNSA2LjI4MTEzIDEuMDAwODggNy40NDM1NEMwLjk4NDcyNCA4LjU5ODQ0IDEuMzA1MjIgOS45Njg5OCAyLjEzMTc0IDExLjkyOEMyLjYxMTQyIDEzLjA2NDkgNC4wMzk2MyAxMy41NDQ2IDUuMTM4OTUgMTMuODA3OUM2LjQwODM2IDE0LjExMTkgNy44MDg1NyAxNC4xOTE0IDguNjY0NCAxNC4wNzQyQzkuMzY1MTUgMTMuOTc4MiAxMC4xNDQ4IDEzLjgyODQgMTAuNzk4NyAxMy4yOTdDMTEuODk3NyAxMi40MDM5IDEyLjkwMDkgMTEuMzk1NSAxMy40OTk0IDEwLjMzOTNDMTQuMTA0IDkuMjcyMjEgMTQuMzI1NiA4LjA5MjA3IDEzLjcyMTYgNi45NTMyNEMxMy41NjI4IDYuNjUzNzMgMTMuMzE2IDYuNTc3MzQgMTMuMDQxMiA2LjQ5MjNDMTIuOTM3NCA2LjQ2MDE2IDEyLjgyOTUgNi40MjY3OCAxMi43MjA5IDYuMzc5NjZDMTEuNjIxMSA1LjkwMjM0IDEwLjk2NDYgNS4zNDk2MyAxMC45MTM1IDUuMDI4NzZDMTAuODY1NiA0LjcyODA4IDEwLjkyMjEgNC41MTQ2MyAxMC45ODExIDQuMjkxODFDMTEuMDEyOSA0LjE3MTk5IDExLjA0NTMgNC4wNDk0NyAxMS4wNjI2IDMuOTA5MjJDMTEuMDgzOCAzLjczNzM3IDExLjA4MTQgMy4zMzMxOSAxMC42OTk2IDMuMTI3NjFDMTAuNDA0OCAyLjk2ODg4IDEwLjIxNjQgMi42NTg0MyAxMC4wNDA3IDIuMzY5MDRDOS45OTc0MiAyLjI5Nzc1IDkuOTU0OTIgMi4yMjc3MyA5LjkxMTggMi4xNjE1OEM5LjYyNjM0IDEuNzIzNjcgOS4yMDc2OSAxLjE2MjEzIDguMzkyNjMgMS4wNzgxMVpNNC45OTg5OSAyLjYxOTM1QzMuOTY0ODMgMy4wOTA1OCAzLjEyNTU0IDMuODMwOTcgMi43MDg0NiA0LjgxMDE4QzIuMjk4MDggNS43NzM2OCAyLjAxNDA2IDYuNTA4NzMgMi4wMDA3OSA3LjQ1NzUzQzEuOTg3NDEgOC40MTM4NSAyLjI1MDQzIDkuNjM2OCAzLjA1MzEgMTEuNTM5M0MzLjM5MTgxIDEyLjM0MjEgNC42MjE2NyAxMi42NTU3IDUuMzcxODYgMTIuODM1NEM2LjU0OTMgMTMuMTE3NCA3LjgyMiAxMy4xODAyIDguNTI4NjggMTMuMDgzNEM5LjIxMjcxIDEyLjk4OTcgOS43NDU2OCAxMi44NjQyIDEwLjE2ODEgMTIuNTIwOUMxMS4yMjkgMTEuNjU4NyAxMi4xMjEgMTAuNzQzNSAxMi42MjkzIDkuODQ2MzVDMTIuOTM0OSA5LjMwNzA5IDEzLjUxNDEgNy43MDI4IDEyLjYyOTIgNy4zODczQzEwLjc1MzkgNi43MTg3NSAxMC4yNjIgNi4wNjY2OSA5Ljk5MDExIDUuNDEyNjhDOS44MDkxNSA0Ljk3NzQ0IDkuODI4NjggNC41MjI4MiA5Ljk1NzQxIDQuMDc4ODVMOS45NTc0MSA0LjA3ODg0QzkuOTc2NjIgNC4wMTI2IDkuOTk1MzggMy45NDc5MSAxMC4wMzM0IDMuODg4ODJDOS44MTg1NyAzLjczNjc2IDkuNjUxNSAzLjU1MTk1IDkuNTE0NjQgMy4zNzE1QzkuNDI4NzYgMy4yNTgyOCA5LjM0NjkgMy4xMjA5OSA5LjI2MTk3IDIuOTc4NTZDOS4wMTg2NiAyLjU3MDUyIDguNzUwMTggMi4xMjAyNyA4LjI5MDA4IDIuMDcyODNDNy4yMjg4OSAxLjk2MzQzIDYuMDMzOTggMi4xNDc3MiA0Ljk5ODk5IDIuNjE5MzVaTTEzLjIwODEgMy43NzQ3MUMxMy40NDEgMy4yMjY3MSAxMi40NTQ3IDIuNjM2MDYgMTIuMDgyMiAzLjEwMTYzQzExLjU4MTcgMy43MjczMiAxMi45MDI5IDQuNDkyODEgMTMuMjA4MSAzLjc3NDcxWk0xNC4zNjcyIDIuMjYwMzFDMTQuOTY2OCAyLjI3NDkzIDE1LjE1NTEgMS4xMTYwMyAxNC41NzE4IDAuOTQ5MzcxQzEzLjgwNzYgMC43MzEwMjYgMTMuNTkxOCAyLjI0MTM5IDE0LjM2NzIgMi4yNjAzMVpNMTQuMjg1NyA1LjA5MDk4QzE0Ljg2NDQgNS4xMDAwNCAxNS4wNDYyIDQuMzgyMjIgMTQuNDgzMiA0LjI3ODk5QzEzLjc0NTUgNC4xNDM3NSAxMy41MzczIDUuMDc5MjcgMTQuMjg1NyA1LjA5MDk4Wk02LjkwNzUgNC4yODY3MkM2LjQ2ODk4IDQuNjY3NTQgNi4wNTIyIDQuMTUxODUgNS45Nzk4MyAzLjczNjVDNS44Njg0OCAzLjA5NzQ0IDYuMzM2OTYgMi41Njg1NiA2Ljk0ODIzIDIuOTExNTZDNy40MzM0NCAzLjE4MzgyIDcuMjY2NzggMy45NzQ3MSA2LjkwNzUgNC4yODY3MlpNNC45NDQ1NSA1Ljg4MTg0QzUuNDA4ODUgNS40MTc1NCA0LjU5NTY3IDQuNTcwMTMgNC4xMTQyNSA1LjA1MTU0QzMuODMzMzggNS4zMzI0MiA0LjAwOTM2IDUuNjUzNzYgNC4yMzc0NCA1Ljg4MTg0QzQuNDMyNzEgNi4wNzcxIDQuNzQ5MjkgNi4wNzcxIDQuOTQ0NTUgNS44ODE4NFpNNi45NzcxNiA2LjcxOTg0QzcuMzExODEgNy4zODkxNCA4LjQ4ODA0IDYuNzkxNTkgNy45OTQxMyA2LjE0Nzg4QzcuODY1MTkgNS45Nzk4MyA3LjY4NjU3IDUuOTQ5NCA3LjYyMTQ1IDUuOTQyMDdDNy4yMTIxNyA1Ljg5NjAxIDYuNzYzNDkgNi4yOTI1IDYuOTc3MTYgNi43MTk4NFpNNi45ODc5OCA4LjcyNDYxQzcuMTQwNjYgOS4xMTg4IDcuNTExMjIgOS4zMTg3IDcuOTE5MTUgOS4xNjMzQzguMjc0MzQgOS4wMjc5OSA4LjMzMTg2IDguMzk2ODkgOC4xNzE3NSA4LjA3NDI3QzguMDIzMzEgNy43NzUxNCA3LjYzOTU2IDcuNjc3OTMgNy4zMzc0NyA3Ljc5NDE3QzYuOTg1MTIgNy45Mjk3NiA2Ljg1NjcyIDguMzg3MDggNi45ODU3NiA4LjcxODg5TDYuOTg3OTggOC43MjQ2MVpNMTAuMzg4NSA4Ljg0MDgxQzEwLjc1NzUgOC42NTY2IDExLjQ2MTcgOC44Mjc3MSAxMS40NjE3IDkuMzExOTlDMTEuNDYxNyA5LjcxMjg2IDEwLjk1ODcgMTAuMjE2NSAxMC41NjM0IDEwLjI4MjZDMTAuMTgxMyAxMC4zNDY1IDkuNzA1MTUgOS45NzU4MSA5Ljc2NjQ4IDkuNTc3MThDOS44MTQ0NSA5LjI2NTM5IDEwLjEyMTcgOC45NzQwMSAxMC4zODg1IDguODQwODFaTTcuNTY3MDQgMTAuODQzMkM3LjMzNDYxIDEwLjc1MDIgNy4xNDM1MyAxMC44NjAxIDcuMTE0MzcgMTAuODc2OUw3LjExMjc5IDEwLjg3NzhDNi45MDc4MiAxMC45OTQ5IDYuNzEzODMgMTEuMjQzOSA2LjY3NDcgMTEuNDg0MkM2LjU5MDE4IDEyLjAwMzQgNy4xMzE5OSAxMi4xMjM5IDcuNTI2NjEgMTIuMDk4N0M4LjIwNzQgMTIuMDU1MyA4LjA2NTQ3IDExLjA0MjYgNy41NjcwNCAxMC44NDMyWk00Ljg4MDUgMTAuODkzMkM1LjA2NzQgMTAuNzcyMyA1LjE1NjU4IDEwLjUzNjMgNS4wODI5MyAxMC4zMTUzQzQuOTMwNDYgOS43OTY4NyA0LjMyNDYgOS43MTI1MiAzLjk2NTYxIDEwLjEyOTdDMy43OTMzNiAxMC4zMjk5IDMuODA3NDkgMTAuNjI3NCAzLjk5MjE0IDEwLjgxMDVMMy45OTQ5NSAxMC44MTRMMy45OTc5IDEwLjgxNzZDNC4yMjAyNSAxMS4wOTQyIDQuNjM2MjQgMTEuMTg1NyA0Ljg4MDUgMTAuODkzMlpNMy4wNDY5NSA3LjgxMzE4QzMuMzMxNDcgOC4wOTc3IDMuNjAwNzcgOC4xNTA2NyAzLjk4NDQzIDguMDU4NTlDNC42MDgyNiA3LjkwODg3IDQuMTM4MTQgNi4yNDI5OSAzLjA0NyA2Ljg3Mjk2QzIuNzA5MzkgNy4wNjc4OCAyLjg2NzE2IDcuNjMzMzkgMy4wNDY5NSA3LjgxMzE4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0samU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgOS41MDAwNkMxIDEwLjMyODUgMS42NzE1NyAxMS4wMDAxIDIuNSAxMS4wMDAxSDRMNCAxMC4wMDAxSDIuNUMyLjIyMzg2IDEwLjAwMDEgMiA5Ljc3NjIgMiA5LjUwMDA2TDIgMi41MDAwNkMyIDIuMjIzOTIgMi4yMjM4NiAyLjAwMDA2IDIuNSAyLjAwMDA2TDkuNSAyLjAwMDA2QzkuNzc2MTQgMi4wMDAwNiAxMCAyLjIyMzkyIDEwIDIuNTAwMDZWNC4wMDAwMkg1LjVDNC42NzE1OCA0LjAwMDAyIDQgNC42NzE1OSA0IDUuNTAwMDJWMTIuNUM0IDEzLjMyODQgNC42NzE1OCAxNCA1LjUgMTRIMTIuNUMxMy4zMjg0IDE0IDE0IDEzLjMyODQgMTQgMTIuNVY1LjUwMDAyQzE0IDQuNjcxNTkgMTMuMzI4NCA0LjAwMDAyIDEyLjUgNC4wMDAwMkgxMVYyLjUwMDA2QzExIDEuNjcxNjMgMTAuMzI4NCAxLjAwMDA2IDkuNSAxLjAwMDA2SDIuNUMxLjY3MTU3IDEuMDAwMDYgMSAxLjY3MTYzIDEgMi41MDAwNlY5LjUwMDA2Wk01IDUuNTAwMDJDNSA1LjIyMzg4IDUuMjIzODYgNS4wMDAwMiA1LjUgNS4wMDAwMkgxMi41QzEyLjc3NjEgNS4wMDAwMiAxMyA1LjIyMzg4IDEzIDUuNTAwMDJWMTIuNUMxMyAxMi43NzYyIDEyLjc3NjEgMTMgMTIuNSAxM0g1LjVDNS4yMjM4NiAxMyA1IDEyLjc3NjIgNSAxMi41VjUuNTAwMDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxFZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOS44NzczNyAxMkg5LjlIMTEuNUMxMS43NzYxIDEyIDEyIDExLjc3NjEgMTIgMTEuNUMxMiAxMS4yMjM5IDExLjc3NjEgMTEgMTEuNSAxMUg5LjlDOC43NzE2NCAxMSA3Ljk1NTQ1IDEwLjk5OTYgNy4zMTM1MiAxMC45NDcyQzYuNjc3NDQgMTAuODk1MiA2LjI1NjYyIDEwLjc5NDYgNS45MTEwMyAxMC42MTg1QzUuMjUyNDcgMTAuMjgzIDQuNzE3MDMgOS43NDc1MyA0LjM4MTQ4IDkuMDg4OTdDNC4yMDUzOSA4Ljc0MzM4IDQuMTA0ODEgOC4zMjI1NiA0LjA1Mjg0IDcuNjg2NDhDNC4wMDAzOSA3LjA0NDU1IDQgNi4yMjgzNiA0IDUuMVYzLjVDNCAzLjIyMzg2IDMuNzc2MTQgMyAzLjUgM0MzLjIyMzg2IDMgMyAzLjIyMzg2IDMgMy41VjUuMVY1LjEyMjYzQzMgNi4yMjM1OSAzIDcuMDgwNTIgMy4wNTYxNiA3Ljc2NzkxQzMuMTEzMTggOC40NjU4NCAzLjIzMDU4IDkuMDMyOSAzLjQ5MDQ3IDkuNTQyOTZDMy45MjE5IDEwLjM4OTcgNC42MTAzMSAxMS4wNzgxIDUuNDU3MDQgMTEuNTA5NUM1Ljk2NzEgMTEuNzY5NCA2LjUzNDE2IDExLjg4NjggNy4yMzIwOSAxMS45NDM4QzcuOTE5NDggMTIgOC43NzY0MSAxMiA5Ljg3NzM3IDEyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuMTIyNjMgMTJINS4xSDMuNUMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVDMyAxMS4yMjM5IDMuMjIzODYgMTEgMy41IDExSDUuMUM2LjIyODM2IDExIDcuMDQ0NTUgMTAuOTk5NiA3LjY4NjQ4IDEwLjk0NzJDOC4zMjI1NiAxMC44OTUyIDguNzQzMzggMTAuNzk0NiA5LjA4ODk3IDEwLjYxODVDOS43NDc1MyAxMC4yODMgMTAuMjgzIDkuNzQ3NTMgMTAuNjE4NSA5LjA4ODk3QzEwLjc5NDYgOC43NDMzOCAxMC44OTUyIDguMzIyNTYgMTAuOTQ3MiA3LjY4NjQ4QzEwLjk5OTYgNy4wNDQ1NSAxMSA2LjIyODM2IDExIDUuMVYzLjVDMTEgMy4yMjM4NiAxMS4yMjM5IDMgMTEuNSAzQzExLjc3NjEgMyAxMiAzLjIyMzg2IDEyIDMuNVY1LjFWNS4xMjI2M0MxMiA2LjIyMzU5IDEyIDcuMDgwNTIgMTEuOTQzOCA3Ljc2NzkxQzExLjg4NjggOC40NjU4NCAxMS43Njk0IDkuMDMyOSAxMS41MDk1IDkuNTQyOTZDMTEuMDc4MSAxMC4zODk3IDEwLjM4OTcgMTEuMDc4MSA5LjU0Mjk2IDExLjUwOTVDOS4wMzI5IDExLjc2OTQgOC40NjU4NCAxMS44ODY4IDcuNzY3OTEgMTEuOTQzOEM3LjA4MDUyIDEyIDYuMjIzNTkgMTIgNS4xMjI2MyAxMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGtlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05Ljg3NzM3IDNIOS45SDExLjVDMTEuNzc2MSAzIDEyIDMuMjIzODYgMTIgMy41QzEyIDMuNzc2MTQgMTEuNzc2MSA0IDExLjUgNEg5LjlDOC43NzE2NCA0IDcuOTU1NDUgNC4wMDAzOSA3LjMxMzUyIDQuMDUyODRDNi42Nzc0NCA0LjEwNDgxIDYuMjU2NjIgNC4yMDUzOSA1LjkxMTAzIDQuMzgxNDhDNS4yNTI0NyA0LjcxNzAzIDQuNzE3MDMgNS4yNTI0NyA0LjM4MTQ4IDUuOTExMDNDNC4yMDUzOSA2LjI1NjYyIDQuMTA0ODEgNi42Nzc0NCA0LjA1Mjg0IDcuMzEzNTJDNC4wMDAzOSA3Ljk1NTQ1IDQgOC43NzE2NCA0IDkuOVYxMS41QzQgMTEuNzc2MSAzLjc3NjE0IDEyIDMuNSAxMkMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVWOS45VjkuODc3MzdDMyA4Ljc3NjQxIDMgNy45MTk0OCAzLjA1NjE2IDcuMjMyMDlDMy4xMTMxOCA2LjUzNDE2IDMuMjMwNTggNS45NjcxIDMuNDkwNDcgNS40NTcwNEMzLjkyMTkgNC42MTAzMSA0LjYxMDMxIDMuOTIxOSA1LjQ1NzA0IDMuNDkwNDdDNS45NjcxIDMuMjMwNTggNi41MzQxNiAzLjExMzE4IDcuMjMyMDkgMy4wNTYxNkM3LjkxOTQ4IDMgOC43NzY0MSAzIDkuODc3MzcgM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEhlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjEyMjYzIDNINS4xSDMuNUMzLjIyMzg2IDMgMyAzLjIyMzg2IDMgMy41QzMgMy43NzYxNCAzLjIyMzg2IDQgMy41IDRINS4xQzYuMjI4MzYgNCA3LjA0NDU1IDQuMDAwMzkgNy42ODY0OCA0LjA1Mjg0QzguMzIyNTYgNC4xMDQ4MSA4Ljc0MzM4IDQuMjA1MzkgOS4wODg5NyA0LjM4MTQ4QzkuNzQ3NTMgNC43MTcwMyAxMC4yODMgNS4yNTI0NyAxMC42MTg1IDUuOTExMDNDMTAuNzk0NiA2LjI1NjYyIDEwLjg5NTIgNi42Nzc0NCAxMC45NDcyIDcuMzEzNTJDMTAuOTk5NiA3Ljk1NTQ1IDExIDguNzcxNjQgMTEgOS45VjExLjVDMTEgMTEuNzc2MSAxMS4yMjM5IDEyIDExLjUgMTJDMTEuNzc2MSAxMiAxMiAxMS43NzYxIDEyIDExLjVWOS45VjkuODc3MzdDMTIgOC43NzY0MSAxMiA3LjkxOTQ4IDExLjk0MzggNy4yMzIwOUMxMS44ODY4IDYuNTM0MTYgMTEuNzY5NCA1Ljk2NzEgMTEuNTA5NSA1LjQ1NzA0QzExLjA3ODEgNC42MTAzMSAxMC4zODk3IDMuOTIxOSA5LjU0Mjk2IDMuNDkwNDdDOS4wMzI5IDMuMjMwNTggOC40NjU4NCAzLjExMzE4IDcuNzY3OTEgMy4wNTYxNkM3LjA4MDUyIDMgNi4yMjM1OSAzIDUuMTIyNjMgM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFZlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMC4xIDNDMTAuNTI4MyAzIDEwLjgxOTQgMy4wMDAzOSAxMS4wNDQ1IDMuMDE4NzhDMTEuMjYzNyAzLjAzNjY5IDExLjM3NTggMy4wNjkxNSAxMS40NTQgMy4xMDg5OUMxMS42NDIyIDMuMjA0ODcgMTEuNzk1MSAzLjM1Nzg1IDExLjg5MSAzLjU0NjAxQzExLjkzMDkgMy42MjQyMSAxMS45NjMzIDMuNzM2MzEgMTEuOTgxMiAzLjk1NTUyQzExLjk5OTYgNC4xODA1NiAxMiA0LjQ3MTcxIDEyIDQuOVY1LjVDMTIgNS43NzYxNCAxMi4yMjM5IDYgMTIuNSA2QzEyLjc3NjEgNiAxMyA1Ljc3NjE0IDEzIDUuNVY0Ljg3OTM1QzEzIDQuNDc2ODcgMTMgNC4xNDQ2OSAxMi45Nzc5IDMuODc0MDlDMTIuOTU0OSAzLjU5MzA0IDEyLjkwNTcgMy4zMzQ2OSAxMi43ODIgMy4wOTIwMkMxMi41OTAzIDIuNzE1NyAxMi4yODQzIDIuNDA5NzMgMTEuOTA4IDIuMjE3OTlDMTEuNjY1MyAyLjA5NDM0IDExLjQwNyAyLjA0NTA2IDExLjEyNTkgMi4wMjIxQzEwLjg1NTMgMS45OTk5OSAxMC41MjMxIDEuOTk5OTkgMTAuMTIwNyAySDEwLjEyMDZIMTAuMUg5LjVDOS4yMjM4NiAyIDkgMi4yMjM4NiA5IDIuNUM5IDIuNzc2MTQgOS4yMjM4NiAzIDkuNSAzSDEwLjFaTTUuNSAySDQuODc5MzVINC44NzkzNEM0LjQ3Njg2IDEuOTk5OTkgNC4xNDQ2OCAxLjk5OTk5IDMuODc0MDkgMi4wMjIxQzMuNTkzMDQgMi4wNDUwNiAzLjMzNDY5IDIuMDk0MzQgMy4wOTIwMiAyLjIxNzk5QzIuNzE1NyAyLjQwOTczIDIuNDA5NzMgMi43MTU3IDIuMjE3OTkgMy4wOTIwMkMyLjA5NDM0IDMuMzM0NjkgMi4wNDUwNiAzLjU5MzA0IDIuMDIyMSAzLjg3NDA5QzEuOTk5OTkgNC4xNDQ2OCAxLjk5OTk5IDQuNDc2ODYgMiA0Ljg3OTM0VjQuODc5MzVWNS41QzIgNS43NzYxNCAyLjIyMzg2IDYgMi41IDZDMi43NzYxNCA2IDMgNS43NzYxNCAzIDUuNVY0LjlDMyA0LjQ3MTcxIDMuMDAwMzkgNC4xODA1NiAzLjAxODc4IDMuOTU1NTJDMy4wMzY2OSAzLjczNjMxIDMuMDY5MTUgMy42MjQyMSAzLjEwODk5IDMuNTQ2MDFDMy4yMDQ4NyAzLjM1Nzg1IDMuMzU3ODUgMy4yMDQ4NyAzLjU0NjAxIDMuMTA4OTlDMy42MjQyMSAzLjA2OTE1IDMuNzM2MzEgMy4wMzY2OSAzLjk1NTUyIDMuMDE4NzhDNC4xODA1NiAzLjAwMDM5IDQuNDcxNzEgMyA0LjkgM0g1LjVDNS43NzYxNCAzIDYgMi43NzYxNCA2IDIuNUM2IDIuMjIzODYgNS43NzYxNCAyIDUuNSAyWk0xMyA5LjVDMTMgOS4yMjM4NiAxMi43NzYxIDkgMTIuNSA5QzEyLjIyMzkgOSAxMiA5LjIyMzg2IDEyIDkuNVYxMC4xQzEyIDEwLjUyODMgMTEuOTk5NiAxMC44MTk0IDExLjk4MTIgMTEuMDQ0NUMxMS45NjMzIDExLjI2MzcgMTEuOTMwOSAxMS4zNzU4IDExLjg5MSAxMS40NTRDMTEuNzk1MSAxMS42NDIyIDExLjY0MjIgMTEuNzk1MSAxMS40NTQgMTEuODkxQzExLjM3NTggMTEuOTMwOSAxMS4yNjM3IDExLjk2MzMgMTEuMDQ0NSAxMS45ODEyQzEwLjgxOTQgMTEuOTk5NiAxMC41MjgzIDEyIDEwLjEgMTJIOS41QzkuMjIzODYgMTIgOSAxMi4yMjM5IDkgMTIuNUM5IDEyLjc3NjEgOS4yMjM4NiAxMyA5LjUgMTNIMTAuMTIwNkMxMC41MjMxIDEzIDEwLjg1NTMgMTMgMTEuMTI1OSAxMi45Nzc5QzExLjQwNyAxMi45NTQ5IDExLjY2NTMgMTIuOTA1NyAxMS45MDggMTIuNzgyQzEyLjI4NDMgMTIuNTkwMyAxMi41OTAzIDEyLjI4NDMgMTIuNzgyIDExLjkwOEMxMi45MDU3IDExLjY2NTMgMTIuOTU0OSAxMS40MDcgMTIuOTc3OSAxMS4xMjU5QzEzIDEwLjg1NTMgMTMgMTAuNTIzMSAxMyAxMC4xMjA2VjkuNVpNMi41IDlDMi43NzYxNCA5IDMgOS4yMjM4NiAzIDkuNVYxMC4xQzMgMTAuNTI4MyAzLjAwMDM5IDEwLjgxOTQgMy4wMTg3OCAxMS4wNDQ1QzMuMDM2NjkgMTEuMjYzNyAzLjA2OTE1IDExLjM3NTggMy4xMDg5OSAxMS40NTRDMy4yMDQ4NyAxMS42NDIyIDMuMzU3ODUgMTEuNzk1MSAzLjU0NjAxIDExLjg5MUMzLjYyNDIxIDExLjkzMDkgMy43MzYzMSAxMS45NjMzIDMuOTU1NTIgMTEuOTgxMkM0LjE4MDU2IDExLjk5OTYgNC40NzE3MSAxMiA0LjkgMTJINS41QzUuNzc2MTQgMTIgNiAxMi4yMjM5IDYgMTIuNUM2IDEyLjc3NjEgNS43NzYxNCAxMyA1LjUgMTNINC44NzkzNUM0LjQ3Njg3IDEzIDQuMTQ0NjkgMTMgMy44NzQwOSAxMi45Nzc5QzMuNTkzMDQgMTIuOTU0OSAzLjMzNDY5IDEyLjkwNTcgMy4wOTIwMiAxMi43ODJDMi43MTU3IDEyLjU5MDMgMi40MDk3MyAxMi4yODQzIDIuMjE3OTkgMTEuOTA4QzIuMDk0MzQgMTEuNjY1MyAyLjA0NTA2IDExLjQwNyAyLjAyMjEgMTEuMTI1OUMxLjk5OTk5IDEwLjg1NTMgMS45OTk5OSAxMC41MjMxIDIgMTAuMTIwN1YxMC4xMjA2VjEwLjFWOS41QzIgOS4yMjM4NiAyLjIyMzg2IDkgMi41IDlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxSZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMTUgNy40OTk5OEMxMy4xNSA0LjY2NDU4IDEwLjk0MDIgMS44NDk5OCA3LjUwMDAyIDEuODQ5OThDNC43MjE3IDEuODQ5OTggMy4zNDg1MSAzLjkwNjM2IDIuNzYzMzYgNC45OTk5N0g0LjVDNC43NzYxNCA0Ljk5OTk3IDUgNS4yMjM4MyA1IDUuNDk5OTdDNSA1Ljc3NjExIDQuNzc2MTQgNS45OTk5NyA0LjUgNS45OTk5N0gxLjVDMS4yMjM4NiA1Ljk5OTk3IDEgNS43NzYxMSAxIDUuNDk5OTdWMi40OTk5N0MxIDIuMjIzODMgMS4yMjM4NiAxLjk5OTk3IDEuNSAxLjk5OTk3QzEuNzc2MTQgMS45OTk5NyAyIDIuMjIzODMgMiAyLjQ5OTk3VjQuMzEzMThDMi43MDQ1MyAzLjA3MTI2IDQuMzM0MDYgMC44NDk5NzYgNy41MDAwMiAwLjg0OTk3NkMxMS41NjI4IDAuODQ5OTc2IDE0LjE1IDQuMTg1MzcgMTQuMTUgNy40OTk5OEMxNC4xNSAxMC44MTQ2IDExLjU2MjggMTQuMTUgNy41MDAwMiAxNC4xNUM1LjU1NjE4IDE0LjE1IDMuOTM3NzggMTMuMzgwOCAyLjc4NTQ4IDEyLjIwODRDMi4xNjg1MiAxMS41ODA2IDEuNjg2NjggMTAuODM5IDEuMzU4MTYgMTAuMDQwN0MxLjI1MzA2IDkuNzg1MzYgMS4zNzQ4OCA5LjQ5MzE1IDEuNjMwMjQgOS4zODgwNkMxLjg4NTYgOS4yODI5NiAyLjE3NzgxIDkuNDA0NzggMi4yODI5IDkuNjYwMTRDMi41NjM3NCAxMC4zNDI1IDIuOTc0OTUgMTAuOTc0NSAzLjQ5ODcgMTEuNTA3NEM0LjQ3MDUyIDEyLjQ5NjMgNS44MzQ5NiAxMy4xNSA3LjUwMDAyIDEzLjE1QzEwLjk0MDIgMTMuMTUgMTMuMTUgMTAuMzM1NCAxMy4xNSA3LjQ5OTk4Wk03IDEwVjUuMDAwMDFIOFYxMEg3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjE1IDcuNDk5OThDMTMuMTUgNC42NjQ1OCAxMC45NDAyIDEuODQ5OTggNy41MDAwMiAxLjg0OTk4QzQuNzIxNjcgMS44NDk5OCAzLjM0ODQ5IDMuOTA2NCAyLjc2MzM1IDVINC41QzQuNzc2MTQgNSA1IDUuMjIzODYgNSA1LjVDNSA1Ljc3NjE0IDQuNzc2MTQgNiA0LjUgNkgxLjVDMS4yMjM4NiA2IDEgNS43NzYxNCAxIDUuNVYyLjVDMSAyLjIyMzg2IDEuMjIzODYgMiAxLjUgMkMxLjc3NjE0IDIgMiAyLjIyMzg2IDIgMi41VjQuMzEzMThDMi43MDQ1MyAzLjA3MTI2IDQuMzM0MDYgMC44NDk5NzYgNy41MDAwMiAwLjg0OTk3NkMxMS41NjI4IDAuODQ5OTc2IDE0LjE1IDQuMTg1MzcgMTQuMTUgNy40OTk5OEMxNC4xNSAxMC44MTQ2IDExLjU2MjggMTQuMTUgNy41MDAwMiAxNC4xNUM1LjU1NjE4IDE0LjE1IDMuOTM3NzggMTMuMzgwOCAyLjc4NTQ4IDEyLjIwODRDMi4xNjg1MiAxMS41ODA2IDEuNjg2NjggMTAuODM5IDEuMzU4MTYgMTAuMDQwN0MxLjI1MzA2IDkuNzg1MzYgMS4zNzQ4OCA5LjQ5MzE1IDEuNjMwMjQgOS4zODgwNkMxLjg4NTYgOS4yODI5NiAyLjE3NzgxIDkuNDA0NzggMi4yODI5IDkuNjYwMTRDMi41NjM3NCAxMC4zNDI1IDIuOTc0OTUgMTAuOTc0NSAzLjQ5ODcgMTEuNTA3NEM0LjQ3MDUyIDEyLjQ5NjMgNS44MzQ5NiAxMy4xNSA3LjUwMDAyIDEzLjE1QzEwLjk0MDIgMTMuMTUgMTMuMTUgMTAuMzM1NCAxMy4xNSA3LjQ5OTk4Wk03LjUgNC4wMDAwMUM3Ljc3NjE0IDQuMDAwMDEgOCA0LjIyMzg3IDggNC41MDAwMVY3LjI5MjkxTDkuODUzNTUgOS4xNDY0NkMxMC4wNDg4IDkuMzQxNzIgMTAuMDQ4OCA5LjY1ODMxIDkuODUzNTUgOS44NTM1N0M5LjY1ODI5IDEwLjA0ODggOS4zNDE3MSAxMC4wNDg4IDkuMTQ2NDUgOS44NTM1N0w3LjE0NjQ1IDcuODUzNTdDNy4wNTI2OCA3Ljc1OTggNyA3LjYzMjYyIDcgNy41MDAwMVY0LjUwMDAxQzcgNC4yMjM4NyA3LjIyMzg2IDQuMDAwMDEgNy41IDQuMDAwMDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxaZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy41IDguMDA2ODRlLTA3QzMuNzc2MTQgNy44ODYxNGUtMDcgNCAwLjIyMzg1OSA0IDAuNTAwMDAxTDQgMy4wMDAwNkwxMS41IDMuMDAwMDZDMTEuNzc2MSAzLjAwMDA2IDEyIDMuMjIzOTIgMTIgMy41MDAwNkwxMiAxMS4wMDAxTDE0LjUgMTFDMTQuNzc2MSAxMSAxNSAxMS4yMjM4IDE1IDExLjVDMTUgMTEuNzc2MSAxNC43NzYyIDEyIDE0LjUgMTJMMTIgMTIuMDAwMUwxMiAxNC41QzEyIDE0Ljc3NjEgMTEuNzc2MSAxNSAxMS41IDE1QzExLjIyMzkgMTUgMTEgMTQuNzc2MSAxMSAxNC41TDExIDEyLjAwMDFMMy41IDEyLjAwMDFDMy4yMjM4NiAxMi4wMDAxIDMgMTEuNzc2MiAzIDExLjUwMDFMMyA0LjAwMDA1TDAuNDk5OTg5IDRDMC4yMjM4NDcgNCAtNi4xMDU0MWUtMDYgMy43NzYxMyAtNS4wMjU3NmUtMDcgMy40OTk5OUM1LjEzMDA2ZS0wNiAzLjIyMzg1IDAuMjIzODY3IDMgMC41MDAwMSAzTDMgMy4wMDAwNUwzIDAuNTAwMDAxQzMgMC4yMjM4NTkgMy4yMjM4NiA4LjEyNzU1ZS0wNyAzLjUgOC4wMDY4NGUtMDdaTTQgNC4wMDAwNkw0IDExLjAwMDFMMTEgMTEuMDAwMUwxMSA0LjAwMDA2TDQgNC4wMDAwNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEFlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi44NTM2IDIuODUzNTVDMTMuMDQ4OCAyLjY1ODI5IDEzLjA0ODggMi4zNDE3MSAxMi44NTM2IDIuMTQ2NDVDMTIuNjU4MyAxLjk1MTE4IDEyLjM0MTcgMS45NTExOCAxMi4xNDY0IDIuMTQ2NDVMNy41IDYuNzkyODlMMi44NTM1NSAyLjE0NjQ1QzIuNjU4MjkgMS45NTExOCAyLjM0MTcxIDEuOTUxMTggMi4xNDY0NSAyLjE0NjQ1QzEuOTUxMTggMi4zNDE3MSAxLjk1MTE4IDIuNjU4MjkgMi4xNDY0NSAyLjg1MzU1TDYuNzkyODkgNy41TDIuMTQ2NDUgMTIuMTQ2NEMxLjk1MTE4IDEyLjM0MTcgMS45NTExOCAxMi42NTgzIDIuMTQ2NDUgMTIuODUzNkMyLjM0MTcxIDEzLjA0ODggMi42NTgyOSAxMy4wNDg4IDIuODUzNTUgMTIuODUzNkw3LjUgOC4yMDcxMUwxMi4xNDY0IDEyLjg1MzZDMTIuMzQxNyAxMy4wNDg4IDEyLjY1ODMgMTMuMDQ4OCAxMi44NTM2IDEyLjg1MzZDMTMuMDQ4OCAxMi42NTgzIDEzLjA0ODggMTIuMzQxNyAxMi44NTM2IDEyLjE0NjRMOC4yMDcxMSA3LjVMMTIuODUzNiAyLjg1MzU1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjc4MTYgNC4wMzE1N0MxMi4wMDYyIDMuODA3MDIgMTIuMDA2MiAzLjQ0Mjk1IDExLjc4MTYgMy4yMTg0QzExLjU1NzEgMi45OTM4NSAxMS4xOTMgMi45OTM4NSAxMC45Njg1IDMuMjE4NEw3LjUwMDA1IDYuNjg2ODJMNC4wMzE2NCAzLjIxODRDMy44MDcwOCAyLjk5Mzg1IDMuNDQzMDEgMi45OTM4NSAzLjIxODQ2IDMuMjE4NEMyLjk5MzkxIDMuNDQyOTUgMi45OTM5MSAzLjgwNzAyIDMuMjE4NDYgNC4wMzE1N0w2LjY4Njg4IDcuNDk5OTlMMy4yMTg0NiAxMC45Njg0QzIuOTkzOTEgMTEuMTkzIDIuOTkzOTEgMTEuNTU3IDMuMjE4NDYgMTEuNzgxNkMzLjQ0MzAxIDEyLjAwNjEgMy44MDcwOCAxMi4wMDYxIDQuMDMxNjQgMTEuNzgxNkw3LjUwMDA1IDguMzEzMTZMMTAuOTY4NSAxMS43ODE2QzExLjE5MyAxMi4wMDYxIDExLjU1NzEgMTIuMDA2MSAxMS43ODE2IDExLjc4MTZDMTIuMDA2MiAxMS41NTcgMTIuMDA2MiAxMS4xOTMgMTEuNzgxNiAxMC45Njg0TDguMzEzMjIgNy40OTk5OUwxMS43ODE2IDQuMDMxNTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxCZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwNzUgNy40OTk4OEMwLjg3NzA3NSAzLjg0MjE5IDMuODQyMjIgMC44NzcwNDUgNy40OTk5MSAwLjg3NzA0NUMxMS4xNTc2IDAuODc3MDQ1IDE0LjEyMjcgMy44NDIxOSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAxMS4xNTc1IDExLjE1NzYgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMy44NDIyMiAxNC4xMjI3IDAuODc3MDc1IDExLjE1NzUgMC44NzcwNzUgNy40OTk4OFpNNy40OTk5MSAxLjgyNzA0QzQuMzY2ODkgMS44MjcwNCAxLjgyNzA4IDQuMzY2ODYgMS44MjcwOCA3LjQ5OTg4QzEuODI3MDggMTAuNjMyOSA0LjM2Njg5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzEwLjYzMjkgMTMuMTcyNyAxMy4xNzI3IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNC4zNjY4NiAxMC42MzI5IDEuODI3MDQgNy40OTk5MSAxLjgyNzA0Wk05Ljg1MzU4IDUuMTQ2NDRDMTAuMDQ4OCA1LjM0MTcgMTAuMDQ4OCA1LjY1ODI5IDkuODUzNTggNS44NTM1NUw4LjIwNzEzIDcuNDk5OTlMOS44NTM1OCA5LjE0NjQ0QzEwLjA0ODggOS4zNDE3IDEwLjA0ODggOS42NTgyOSA5Ljg1MzU4IDkuODUzNTVDOS42NTgzMiAxMC4wNDg4IDkuMzQxNzMgMTAuMDQ4OCA5LjE0NjQ3IDkuODUzNTVMNy41MDAwMiA4LjIwNzFMNS44NTM1OCA5Ljg1MzU1QzUuNjU4MzIgMTAuMDQ4OCA1LjM0MTczIDEwLjA0ODggNS4xNDY0NyA5Ljg1MzU1QzQuOTUxMjEgOS42NTgyOSA0Ljk1MTIxIDkuMzQxNyA1LjE0NjQ3IDkuMTQ2NDRMNi43OTI5MiA3LjQ5OTk5TDUuMTQ2NDcgNS44NTM1NUM0Ljk1MTIxIDUuNjU4MjkgNC45NTEyMSA1LjM0MTcgNS4xNDY0NyA1LjE0NjQ0QzUuMzQxNzMgNC45NTExOCA1LjY1ODMyIDQuOTUxMTggNS44NTM1OCA1LjE0NjQ0TDcuNTAwMDIgNi43OTI4OUw5LjE0NjQ3IDUuMTQ2NDRDOS4zNDE3MyA0Ljk1MTE4IDkuNjU4MzIgNC45NTExOCA5Ljg1MzU4IDUuMTQ2NDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxUZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwNzUgNy41MDIwN0MwLjg3NzA3NSAzLjg0MzE5IDMuODQzMTkgMC44NzcwNzUgNy41MDIwOCAwLjg3NzA3NUMxMS4xNjA5IDAuODc3MDc1IDE0LjEyNzEgMy44NDMxOSAxNC4xMjcxIDcuNTAyMDdDMTQuMTI3MSAxMS4xNjA5IDExLjE2MDkgMTQuMTI3MSA3LjUwMjA4IDE0LjEyNzFDMy44NDMxOSAxNC4xMjcxIDAuODc3MDc1IDExLjE2MDkgMC44NzcwNzUgNy41MDIwN1pNMS44NDg5OCA3LjAwMDAzQzIuMDg4NiA0LjI2NjM5IDQuMjY2MzkgMi4wODg2IDcuMDAwMDMgMS44NDg5OFY0LjUwMDAzQzcuMDAwMDMgNC43NzYxNyA3LjIyMzg4IDUuMDAwMDMgNy41MDAwMyA1LjAwMDAzQzcuNzc2MTcgNS4wMDAwMyA4LjAwMDAzIDQuNzc2MTcgOC4wMDAwMyA0LjUwMDAzVjEuODQ4NjJDMTAuNzM1NiAyLjA4NjQzIDEyLjkxNTQgNC4yNjUwMiAxMy4xNTUyIDcuMDAwMDNIMTAuNUMxMC4yMjM5IDcuMDAwMDMgMTAgNy4yMjM4OCAxMCA3LjUwMDAzQzEwIDcuNzc2MTcgMTAuMjIzOSA4LjAwMDAzIDEwLjUgOC4wMDAwM0gxMy4xNTU1QzEyLjkxNzYgMTAuNzM2OSAxMC43MzY5IDEyLjkxNzYgOC4wMDAwMyAxMy4xNTU1VjEwLjVDOC4wMDAwMyAxMC4yMjM5IDcuNzc2MTcgMTAgNy41MDAwMyAxMEM3LjIyMzg4IDEwIDcuMDAwMDMgMTAuMjIzOSA3LjAwMDAzIDEwLjVWMTMuMTU1MkM0LjI2NTAyIDEyLjkxNTQgMi4wODY0MyAxMC43MzU2IDEuODQ4NjIgOC4wMDAwM0g0LjUwMDAzQzQuNzc2MTcgOC4wMDAwMyA1LjAwMDAzIDcuNzc2MTcgNS4wMDAwMyA3LjUwMDAzQzUuMDAwMDMgNy4yMjM4OCA0Ljc3NjE3IDcuMDAwMDMgNC41MDAwMyA3LjAwMDAzSDEuODQ4OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSwkZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDBDNy43NzYxNCAwIDggMC4yMjM4NTggOCAwLjVWMS44MDY4N0MxMC42OTIyIDIuMDkzNSAxMi44MTY3IDQuMjgwMTIgMTMuMDA2OCA3SDE0LjVDMTQuNzc2MSA3IDE1IDcuMjIzODYgMTUgNy41QzE1IDcuNzc2MTQgMTQuNzc2MSA4IDE0LjUgOEgxMi45ODg4QzEyLjcwOTQgMTAuNjI0NCAxMC42MjQ0IDEyLjcwOTQgOCAxMi45ODg4VjE0LjVDOCAxNC43NzYxIDcuNzc2MTQgMTUgNy41IDE1QzcuMjIzODYgMTUgNyAxNC43NzYxIDcgMTQuNVYxMy4wMDY4QzQuMjgwMTIgMTIuODE2NyAyLjA5MzUgMTAuNjkyMiAxLjgwNjg3IDhIMC41QzAuMjIzODU4IDggMCA3Ljc3NjE0IDAgNy41QzAgNy4yMjM4NiAwLjIyMzg1OCA3IDAuNSA3SDEuNzg4ODZDMS45ODM3NiA0LjIxMTY2IDQuMjExNjYgMS45ODM3NiA3IDEuNzg4ODZWMC41QzcgMC4yMjM4NTggNy4yMjM4NiAwIDcuNSAwWk04IDEyLjAzMjJWOS41QzggOS4yMjM4NiA3Ljc3NjE0IDkgNy41IDlDNy4yMjM4NiA5IDcgOS4yMjM4NiA3IDkuNVYxMi4wNTRDNC44MDUxNyAxMS44Njg5IDMuMDQyMjIgMTAuMTY2OCAyLjc2MzQ0IDhINS41QzUuNzc2MTQgOCA2IDcuNzc2MTQgNiA3LjVDNiA3LjIyMzg2IDUuNzc2MTQgNyA1LjUgN0gyLjc0MTdDMi45MzI1MiA0LjczNjYyIDQuNzM2NjIgMi45MzI1MiA3IDIuNzQxN1Y1LjVDNyA1Ljc3NjE0IDcuMjIzODYgNiA3LjUgNkM3Ljc3NjE0IDYgOCA1Ljc3NjE0IDggNS41VjIuNzYzNDRDMTAuMTY2OCAzLjA0MjIyIDExLjg2ODkgNC44MDUxNyAxMi4wNTQgN0g5LjVDOS4yMjM4NiA3IDkgNy4yMjM4NiA5IDcuNUM5IDcuNzc2MTQgOS4yMjM4NiA4IDkuNSA4SDEyLjAzMjJDMTEuNzYyMSAxMC4wOTkxIDEwLjA5OTEgMTEuNzYyMSA4IDEyLjAzMjJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxGZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC42MDkxMyAwLjA2MzQyODdDNC4zOTA4MiAwLjAwODg1MDUgNC4xNjU3NSAwLjEyMzkzIDQuMDgyMTggMC4zMzI4NjdMMy4xNTM4IDIuNjUzOEwwLjgzMjg2NiAzLjU4MjE4QzAuNzAyODg0IDMuNjM0MTcgMC42MDQ1MDQgMy43NDM3IDAuNTY2NzA1IDMuODc4NDlDMC41Mjg5MDYgNC4wMTMyOSAwLjU1NTk5NCA0LjE1OCAwLjYzOTk5MiA0LjI2OTk5TDIuMDExNDggNi4wOTg2NEwxLjA2MzQzIDkuODkwODVDMS4wMDk0NCAxMC4xMDY4IDEuMTIxNDUgMTAuMzI5OCAxLjMyNjkxIDEwLjQxNTRMNC4yMDExNSAxMS42MTNMNS42MjU1NyAxMy43NDk2QzUuNzM0MTIgMTMuOTEyNCA1LjkzNTQ1IDEzLjk4NjQgNi4xMjM2MiAxMy45MzI3TDkuNjIzNjIgMTIuOTMyN0M5LjYyOTg4IDEyLjkzMDkgOS42MzYxMSAxMi45MjkgOS42NDIyOSAxMi45MjY5TDEyLjY0MjMgMTEuOTI2OUMxMi43OTIzIDExLjg3NjkgMTIuOTA1IDExLjc1MTkgMTIuOTM5MyAxMS41OTc2TDEzLjkzOTMgNy4wOTc2MUMxMy45Nzc2IDYuOTI1MDYgMTMuOTExNCA2Ljc0NjA1IDEzLjc3IDYuNjM5OTlMMTEuOTUgNS4yNzQ5OVYyLjk5OTk5QzExLjk1IDIuODI5NTUgMTEuODUzNyAyLjY3MzczIDExLjcwMTIgMi41OTc1TDguNzAxMjQgMS4wOTc1QzguNjcxODcgMS4wODI4MiA4LjY0MDk4IDEuMDcxMzkgOC42MDkxMyAxLjA2MzQzTDQuNjA5MTMgMC4wNjM0Mjg3Wk0xMS40MzIzIDYuMDExNzNMMTIuNzc0OCA3LjAxODU4TDEwLjIxMTkgOS4xNTQyOUMxMC4xNDc2IDkuMjA3ODYgMTAuMDk5NSA5LjI3ODMgMTAuMDczMSA5LjM1NzY5TDkuMjUzODIgMTEuODE1NUw3LjczODQ5IDEwLjg2ODRDNy41Mjc3NCAxMC43MzY3IDcuMjUwMTEgMTAuODAwNyA3LjExODM5IDExLjAxMTVDNi45ODY2NyAxMS4yMjIyIDcuMDUwNzQgMTEuNDk5OSA3LjI2MTQ5IDExLjYzMTZMOC40MDM0MSAxMi4zNDUzTDYuMTkyMjEgMTIuOTc3MUw0Ljg3NDQxIDExLjAwMDRDNC44MjUxMyAxMC45MjY1IDQuNzU1MDggMTAuODY4OCA0LjY3MzA3IDEwLjgzNDZMMi4wMzA0NiA5LjczMzUyTDIuODUxMzQgNi40NDk5OUg0Ljk5OTk5QzUuMjQ4NTIgNi40NDk5OSA1LjQ0OTk5IDYuMjQ4NTIgNS40NDk5OSA1Ljk5OTk5QzUuNDQ5OTkgNS43NTE0NiA1LjI0ODUyIDUuNTQ5OTkgNC45OTk5OSA1LjU0OTk5SDIuNzI0OTlMMS43MTIzIDQuMTk5NzRMMy41MTQwNyAzLjQ3OTAzTDYuMzU3NjkgNC40MjY5QzYuNTM2NTUgNC40ODY1MiA2LjczMzYxIDQuNDI4MzIgNi44NTEzOCA0LjI4MTExTDguNjI0MTMgMi4wNjUxOEwxMS4wNSAzLjI3ODExVjUuMTk1MzNMOC44MzI4NyA2LjA4MjE4QzguNzA5OTYgNi4xMzEzNCA4LjYxNDk0IDYuMjMyMTIgOC41NzMwOCA2LjM1NzY5TDguMDczMDggNy44NTc2OUM3Ljk5NDQ5IDguMDkzNDYgOC4xMjE5MSA4LjM0ODMxIDguMzU3NjkgOC40MjY5QzguNTkzNDYgOC41MDU0OSA4Ljg0ODMxIDguMzc4MDcgOC45MjY5IDguMTQyMjlMOS4zNjA5IDYuODQwMjlMMTEuNDMyMyA2LjAxMTczWk03LjcxMDUyIDEuNzY2NDhMNi4zNDQ2MiAzLjQ3Mzg2TDQuMDk1MDUgMi43MjRMNC43NzE5MiAxLjAzMTgzTDcuNzEwNTIgMS43NjY0OFpNMTAuMjExNSAxMS43ODg1TDEyLjExNiAxMS4xNTM3TDEyLjc3NDUgOC4xOTAzNEwxMC44ODY0IDkuNzYzNzRMMTAuMjExNSAxMS43ODg1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sV2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMjg4NTYgMC43OTY5MDhDNy40MjI1OCAwLjczNDM2NCA3LjU3NzQyIDAuNzM0MzY0IDcuNzExNDQgMC43OTY5MDhMMTMuNzExNCAzLjU5NjkxQzEzLjg4NzUgMy42NzkwNiAxNCAzLjg1NTc0IDE0IDQuMDVWMTAuOTVDMTQgMTEuMTQ0MyAxMy44ODc1IDExLjMyMDkgMTMuNzExNCAxMS40MDMxTDcuNzExNDQgMTQuMjAzMUM3LjU3NzQyIDE0LjI2NTYgNy40MjI1OCAxNC4yNjU2IDcuMjg4NTYgMTQuMjAzMUwxLjI4ODU2IDExLjQwMzFDMS4xMTI1MiAxMS4zMjA5IDEgMTEuMTQ0MyAxIDEwLjk1VjQuMDVDMSAzLjg1NTc0IDEuMTEyNTIgMy42NzkwNiAxLjI4ODU2IDMuNTk2OTFMNy4yODg1NiAwLjc5NjkwOFpNMiA0LjgwNTc4TDcgNi45MzA3OFYxMi45NjQ5TDIgMTAuNjMxNlY0LjgwNTc4Wk04IDEyLjk2NDlMMTMgMTAuNjMxNlY0LjgwNTc4TDggNi45MzA3OFYxMi45NjQ5Wk03LjUgNi4wNTY3MkwxMi4yNzE5IDQuMDI4NjZMNy41IDEuODAxNzZMMi43MjgwOSA0LjAyODY2TDcuNSA2LjA1NjcyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMjkyMjcgMC4wNDg5ODRDMy40NzAzMyAtMC4wMzIzMzggMy42Nzk0NiAtMC4wMDIyODIxNCAzLjgyNzQgMC4xMjU4OTFMMTIuODU4NyA3Ljk1MDI2QzEzLjAxMzQgOC4wODQzMiAxMy4wNzA4IDguMjk5MTYgMTMuMDAzNSA4LjQ5MjUxQzEyLjkzNjIgOC42ODU4NiAxMi43NTc4IDguODE4NjYgMTIuNTUzMyA4LjgyNzY4TDkuMjE4ODcgOC45NzQ3NEwxMS4xNTA0IDEzLjIxODdDMTEuMjY0OCAxMy40NyAxMS4xNTM4IDEzLjc2NjQgMTAuOTAyNiAxMy44ODA4TDguNzUwMjQgMTQuODYxM0M4LjQ5OSAxNC45NzU4IDguMjAyNTUgMTQuODY0OSA4LjA4ODAyIDE0LjYxMzdMNi4xNTMzOSAxMC4zNzAzTDMuODYyNzkgMTIuNzg1NUMzLjcyMTk2IDEyLjkzNCAzLjUwNDg3IDEyLjk4MTcgMy4zMTQ3OSAxMi45MDU5QzMuMTI0NyAxMi44MzAxIDMgMTIuNjQ2MSAzIDEyLjQ0MTRWMC41MDM3OTJDMyAwLjMwODA0OCAzLjExNDIyIDAuMTMwMzA2IDMuMjkyMjcgMC4wNDg5ODRaTTQgMS41OTg1MlYxMS4xODc3TDUuOTM3OTkgOS4xNDQyNUM2LjA1MjM4IDkuMDIzNjMgNi4yMTkyNCA4Ljk2Nzc2IDYuMzgzMTkgOC45OTUxNkM2LjU0NzE1IDkuMDIyNTYgNi42ODY3NyA5LjEyOTY1IDYuNzU1NzMgOS4yODA5TDguNzkwNTYgMTMuNzQ0MUwxMC4wMzMyIDEzLjE3OEw4LjAwMTk1IDguNzE0OTdDNy45MzMxMyA4LjU2Mzc2IDcuOTQzOTEgOC4zODgyNCA4LjAzMDcyIDguMjQ2NTlDOC4xMTc1MyA4LjEwNDk0IDguMjY5MDMgOC4wMTU2NiA4LjQzNSA4LjAwODM0TDExLjI1NDkgNy44ODM5N0w0IDEuNTk4NTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx6ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC41IDFDNC4yMjM4NiAxIDQgMS4yMjM4NiA0IDEuNUM0IDEuNzc2MTQgNC4yMjM4NiAyIDQuNSAyQzUuNDIyMTUgMiA2LjAzOTkgMi4yMzA1NCA2LjQyMDc1IDIuNTYzNzlDNi43OTI4NiAyLjg4OTM5IDcgMy4zNjYyNiA3IDRWN0g1Ljc1QzUuNDczODYgNyA1LjI1IDcuMjIzODYgNS4yNSA3LjVDNS4yNSA3Ljc3NjE0IDUuNDczODYgOCA1Ljc1IDhIN1YxMUM3IDExLjYzMzcgNi43OTI4NiAxMi4xMTA2IDYuNDIwNzUgMTIuNDM2MkM2LjAzOTkgMTIuNzY5NSA1LjQyMjE1IDEzIDQuNSAxM0M0LjIyMzg2IDEzIDQgMTMuMjIzOSA0IDEzLjVDNCAxMy43NzYxIDQuMjIzODYgMTQgNC41IDE0QzUuNTc3ODUgMTQgNi40NjAxIDEzLjczMDUgNy4wNzkyNSAxMy4xODg4QzcuMjQxNjggMTMuMDQ2NyA3LjM4MTY5IDEyLjg4OTYgNy41IDEyLjcxOThDNy42MTgzMiAxMi44ODk2IDcuNzU4MzIgMTMuMDQ2NyA3LjkyMDc1IDEzLjE4ODhDOC41Mzk5IDEzLjczMDUgOS40MjIxNSAxNCAxMC41IDE0QzEwLjc3NjEgMTQgMTEgMTMuNzc2MSAxMSAxMy41QzExIDEzLjIyMzkgMTAuNzc2MSAxMyAxMC41IDEzQzkuNTc3ODUgMTMgOC45NjAxIDEyLjc2OTUgOC41NzkyNSAxMi40MzYyQzguMjA3MTQgMTIuMTEwNiA4IDExLjYzMzcgOCAxMVY4SDkuMjVDOS41MjYxNCA4IDkuNzUgNy43NzYxNCA5Ljc1IDcuNUM5Ljc1IDcuMjIzODYgOS41MjYxNCA3IDkuMjUgN0g4VjRDOCAzLjM2NjI2IDguMjA3MTQgMi44ODkzOSA4LjU3OTI1IDIuNTYzNzlDOC45NjAxIDIuMjMwNTQgOS41Nzc4NSAyIDEwLjUgMkMxMC43NzYxIDIgMTEgMS43NzYxNCAxMSAxLjVDMTEgMS4yMjM4NiAxMC43NzYxIDEgMTAuNSAxQzkuNDIyMTUgMSA4LjUzOTkgMS4yNjk0NiA3LjkyMDc1IDEuODExMjFDNy43NTgzMiAxLjk1MzMzIDcuNjE4MzIgMi4xMTA0MyA3LjUgMi4yODAyM0M3LjM4MTY4IDIuMTEwNDMgNy4yNDE2OCAxLjk1MzMzIDcuMDc5MjUgMS44MTEyMUM2LjQ2MDEgMS4yNjk0NiA1LjU3Nzg1IDEgNC41IDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxVZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSA3LjVDNSA3LjIyMzg2IDUuMjIzODYgNyA1LjUgN0g5LjVDOS43NzYxNCA3IDEwIDcuMjIzODYgMTAgNy41QzEwIDcuNzc2MTQgOS43NzYxNCA4IDkuNSA4SDUuNUM1LjIyMzg2IDggNSA3Ljc3NjE0IDUgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sR2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuOCAxTDIuNzQ5NjcgMC45OTk5N0MyLjUyMTIyIDAuOTk5NzUyIDIuMzI0MjkgMC45OTk1NjQgMi4xNDk4MyAxLjA0MTQ1QzEuNjAxMzYgMS4xNzMxMiAxLjE3MzEyIDEuNjAxMzYgMS4wNDE0NSAyLjE0OTgzQzAuOTk5NTY0IDIuMzI0MjkgMC45OTk3NTIgMi41MjEyMiAwLjk5OTk3IDIuNzQ5NjdMMSAyLjhWNS4yTDAuOTk5OTcgNS4yNTAzM0MwLjk5OTc1MiA1LjQ3ODc4IDAuOTk5NTY0IDUuNjc1NzIgMS4wNDE0NSA1Ljg1MDE3QzEuMTczMTIgNi4zOTg2NCAxLjYwMTM2IDYuODI2ODggMi4xNDk4MyA2Ljk1ODU2QzIuMzI0MjkgNy4wMDA0NCAyLjUyMTIyIDcuMDAwMjUgMi43NDk2NyA3LjAwMDAzTDIuOCA3SDUuMkw1LjI1MDMzIDcuMDAwMDNDNS40Nzg3OCA3LjAwMDI1IDUuNjc1NzIgNy4wMDA0NCA1Ljg1MDE3IDYuOTU4NTZDNi4zOTg2NCA2LjgyNjg4IDYuODI2ODggNi4zOTg2NCA2Ljk1ODU2IDUuODUwMTdDNy4wMDA0NCA1LjY3NTcyIDcuMDAwMjUgNS40Nzg3OCA3LjAwMDAzIDUuMjUwMzNMNyA1LjJWMi44TDcuMDAwMDMgMi43NDk2N0M3LjAwMDI1IDIuNTIxMjIgNy4wMDA0NCAyLjMyNDI5IDYuOTU4NTYgMi4xNDk4M0M2LjgyNjg4IDEuNjAxMzYgNi4zOTg2NCAxLjE3MzEyIDUuODUwMTcgMS4wNDE0NUM1LjY3NTcyIDAuOTk5NTY0IDUuNDc4NzggMC45OTk3NTIgNS4yNTAzMyAwLjk5OTk3TDUuMiAxSDIuOFpNMi4zODMyOCAyLjAxMzgyQzIuNDI2MzIgMi4wMDM0OCAyLjQ5MjIyIDIgMi44IDJINS4yQzUuNTA3NzkgMiA1LjU3MzY5IDIuMDAzNDggNS42MTY3MiAyLjAxMzgyQzUuNzk5NTUgMi4wNTc3MSA1Ljk0MjI5IDIuMjAwNDUgNS45ODYxOSAyLjM4MzI4QzUuOTk2NTIgMi40MjYzMiA2IDIuNDkyMjIgNiAyLjhWNS4yQzYgNS41MDc3OSA1Ljk5NjUyIDUuNTczNjkgNS45ODYxOSA1LjYxNjcyQzUuOTQyMjkgNS43OTk1NSA1Ljc5OTU1IDUuOTQyMjkgNS42MTY3MiA1Ljk4NjE5QzUuNTczNjkgNS45OTY1MiA1LjUwNzc5IDYgNS4yIDZIMi44QzIuNDkyMjIgNiAyLjQyNjMyIDUuOTk2NTIgMi4zODMyOCA1Ljk4NjE5QzIuMjAwNDUgNS45NDIyOSAyLjA1NzcxIDUuNzk5NTUgMi4wMTM4MiA1LjYxNjcyQzIuMDAzNDggNS41NzM2OSAyIDUuNTA3NzkgMiA1LjJWMi44QzIgMi40OTIyMiAyLjAwMzQ4IDIuNDI2MzIgMi4wMTM4MiAyLjM4MzI4QzIuMDU3NzEgMi4yMDA0NSAyLjIwMDQ1IDIuMDU3NzEgMi4zODMyOCAyLjAxMzgyWk05LjggMUw5Ljc0OTY3IDAuOTk5OTdDOS41MjEyMiAwLjk5OTc1MiA5LjMyNDI5IDAuOTk5NTY0IDkuMTQ5ODMgMS4wNDE0NUM4LjYwMTM2IDEuMTczMTIgOC4xNzMxMiAxLjYwMTM2IDguMDQxNDUgMi4xNDk4M0M3Ljk5OTU2IDIuMzI0MjkgNy45OTk3NSAyLjUyMTIyIDcuOTk5OTcgMi43NDk2N0w4IDIuOFY1LjJMNy45OTk5NyA1LjI1MDMzQzcuOTk5NzUgNS40Nzg3OCA3Ljk5OTU2IDUuNjc1NzIgOC4wNDE0NSA1Ljg1MDE3QzguMTczMTIgNi4zOTg2NCA4LjYwMTM2IDYuODI2ODggOS4xNDk4MyA2Ljk1ODU2QzkuMzI0MjkgNy4wMDA0NCA5LjUyMTIyIDcuMDAwMjUgOS43NDk2NyA3LjAwMDAzTDkuOCA3SDEyLjJMMTIuMjUwMyA3LjAwMDAzQzEyLjQ3ODggNy4wMDAyNSAxMi42NzU3IDcuMDAwNDQgMTIuODUwMiA2Ljk1ODU2QzEzLjM5ODYgNi44MjY4OCAxMy44MjY5IDYuMzk4NjQgMTMuOTU4NiA1Ljg1MDE3QzE0LjAwMDQgNS42NzU3MiAxNC4wMDAzIDUuNDc4NzggMTQgNS4yNTAzM0wxNCA1LjJWMi44TDE0IDIuNzQ5NjdDMTQuMDAwMyAyLjUyMTIyIDE0LjAwMDQgMi4zMjQyOSAxMy45NTg2IDIuMTQ5ODNDMTMuODI2OSAxLjYwMTM2IDEzLjM5ODYgMS4xNzMxMiAxMi44NTAyIDEuMDQxNDVDMTIuNjc1NyAwLjk5OTU2NCAxMi40Nzg4IDAuOTk5NzUyIDEyLjI1MDMgMC45OTk5N0wxMi4yIDFIOS44Wk05LjM4MzI4IDIuMDEzODJDOS40MjYzMiAyLjAwMzQ4IDkuNDkyMjIgMiA5LjggMkgxMi4yQzEyLjUwNzggMiAxMi41NzM3IDIuMDAzNDggMTIuNjE2NyAyLjAxMzgyQzEyLjc5OTUgMi4wNTc3MSAxMi45NDIzIDIuMjAwNDUgMTIuOTg2MiAyLjM4MzI4QzEyLjk5NjUgMi40MjYzMiAxMyAyLjQ5MjIyIDEzIDIuOFY1LjJDMTMgNS41MDc3OSAxMi45OTY1IDUuNTczNjkgMTIuOTg2MiA1LjYxNjcyQzEyLjk0MjMgNS43OTk1NSAxMi43OTk1IDUuOTQyMjkgMTIuNjE2NyA1Ljk4NjE5QzEyLjU3MzcgNS45OTY1MiAxMi41MDc4IDYgMTIuMiA2SDkuOEM5LjQ5MjIyIDYgOS40MjYzMiA1Ljk5NjUyIDkuMzgzMjggNS45ODYxOUM5LjIwMDQ1IDUuOTQyMjkgOS4wNTc3MSA1Ljc5OTU1IDkuMDEzODIgNS42MTY3MkM5LjAwMzQ4IDUuNTczNjkgOSA1LjUwNzc5IDkgNS4yVjIuOEM5IDIuNDkyMjIgOS4wMDM0OCAyLjQyNjMyIDkuMDEzODIgMi4zODMyOEM5LjA1NzcxIDIuMjAwNDUgOS4yMDA0NSAyLjA1NzcxIDkuMzgzMjggMi4wMTM4MlpNMi43NDk2NyA3Ljk5OTk3TDIuOCA4SDUuMkw1LjI1MDMzIDcuOTk5OTdDNS40Nzg3OCA3Ljk5OTc1IDUuNjc1NzIgNy45OTk1NiA1Ljg1MDE3IDguMDQxNDVDNi4zOTg2NCA4LjE3MzEyIDYuODI2ODggOC42MDEzNiA2Ljk1ODU2IDkuMTQ5ODNDNy4wMDA0NCA5LjMyNDI5IDcuMDAwMjUgOS41MjEyMiA3LjAwMDAzIDkuNzQ5NjdMNyA5LjhWMTIuMkw3LjAwMDAzIDEyLjI1MDNDNy4wMDAyNSAxMi40Nzg4IDcuMDAwNDQgMTIuNjc1NyA2Ljk1ODU2IDEyLjg1MDJDNi44MjY4OCAxMy4zOTg2IDYuMzk4NjQgMTMuODI2OSA1Ljg1MDE3IDEzLjk1ODZDNS42NzU3MiAxNC4wMDA0IDUuNDc4NzggMTQuMDAwMyA1LjI1MDMzIDE0TDUuMiAxNEgyLjhMMi43NDk2NyAxNEMyLjUyMTIyIDE0LjAwMDMgMi4zMjQyOSAxNC4wMDA0IDIuMTQ5ODMgMTMuOTU4NkMxLjYwMTM2IDEzLjgyNjkgMS4xNzMxMiAxMy4zOTg2IDEuMDQxNDUgMTIuODUwMkMwLjk5OTU2NCAxMi42NzU3IDAuOTk5NzUyIDEyLjQ3ODggMC45OTk5NyAxMi4yNTAzTDEgMTIuMlY5LjhMMC45OTk5NyA5Ljc0OTY3QzAuOTk5NzUyIDkuNTIxMjIgMC45OTk1NjQgOS4zMjQyOSAxLjA0MTQ1IDkuMTQ5ODNDMS4xNzMxMiA4LjYwMTM2IDEuNjAxMzYgOC4xNzMxMiAyLjE0OTgzIDguMDQxNDVDMi4zMjQyOSA3Ljk5OTU2IDIuNTIxMjIgNy45OTk3NSAyLjc0OTY3IDcuOTk5OTdaTTIuOCA5QzIuNDkyMjIgOSAyLjQyNjMyIDkuMDAzNDggMi4zODMyOCA5LjAxMzgyQzIuMjAwNDUgOS4wNTc3MSAyLjA1NzcxIDkuMjAwNDUgMi4wMTM4MiA5LjM4MzI4QzIuMDAzNDggOS40MjYzMiAyIDkuNDkyMjIgMiA5LjhWMTIuMkMyIDEyLjUwNzggMi4wMDM0OCAxMi41NzM3IDIuMDEzODIgMTIuNjE2N0MyLjA1NzcxIDEyLjc5OTUgMi4yMDA0NSAxMi45NDIzIDIuMzgzMjggMTIuOTg2MkMyLjQyNjMyIDEyLjk5NjUgMi40OTIyMiAxMyAyLjggMTNINS4yQzUuNTA3NzkgMTMgNS41NzM2OSAxMi45OTY1IDUuNjE2NzIgMTIuOTg2MkM1Ljc5OTU1IDEyLjk0MjMgNS45NDIyOSAxMi43OTk1IDUuOTg2MTkgMTIuNjE2N0M1Ljk5NjUyIDEyLjU3MzcgNiAxMi41MDc4IDYgMTIuMlY5LjhDNiA5LjQ5MjIyIDUuOTk2NTIgOS40MjYzMiA1Ljk4NjE5IDkuMzgzMjhDNS45NDIyOSA5LjIwMDQ1IDUuNzk5NTUgOS4wNTc3MSA1LjYxNjcyIDkuMDEzODJDNS41NzM2OSA5LjAwMzQ4IDUuNTA3NzkgOSA1LjIgOUgyLjhaTTkuOCA4TDkuNzQ5NjcgNy45OTk5N0M5LjUyMTIyIDcuOTk5NzUgOS4zMjQyOSA3Ljk5OTU2IDkuMTQ5ODMgOC4wNDE0NUM4LjYwMTM2IDguMTczMTIgOC4xNzMxMiA4LjYwMTM2IDguMDQxNDUgOS4xNDk4M0M3Ljk5OTU2IDkuMzI0MjkgNy45OTk3NSA5LjUyMTIyIDcuOTk5OTcgOS43NDk2N0w4IDkuOFYxMi4yTDcuOTk5OTcgMTIuMjUwM0M3Ljk5OTc1IDEyLjQ3ODggNy45OTk1NiAxMi42NzU3IDguMDQxNDUgMTIuODUwMkM4LjE3MzEyIDEzLjM5ODYgOC42MDEzNiAxMy44MjY5IDkuMTQ5ODMgMTMuOTU4NkM5LjMyNDI5IDE0LjAwMDQgOS41MjEyMiAxNC4wMDAzIDkuNzQ5NjcgMTRMOS44IDE0SDEyLjJMMTIuMjUwMyAxNEMxMi40Nzg4IDE0LjAwMDMgMTIuNjc1NyAxNC4wMDA0IDEyLjg1MDIgMTMuOTU4NkMxMy4zOTg2IDEzLjgyNjkgMTMuODI2OSAxMy4zOTg2IDEzLjk1ODYgMTIuODUwMkMxNC4wMDA0IDEyLjY3NTcgMTQuMDAwMyAxMi40Nzg4IDE0IDEyLjI1MDNMMTQgMTIuMlY5LjhMMTQgOS43NDk2N0MxNC4wMDAzIDkuNTIxMjIgMTQuMDAwNCA5LjMyNDI5IDEzLjk1ODYgOS4xNDk4M0MxMy44MjY5IDguNjAxMzYgMTMuMzk4NiA4LjE3MzEyIDEyLjg1MDIgOC4wNDE0NUMxMi42NzU3IDcuOTk5NTYgMTIuNDc4OCA3Ljk5OTc1IDEyLjI1MDMgNy45OTk5N0wxMi4yIDhIOS44Wk05LjM4MzI4IDkuMDEzODJDOS40MjYzMiA5LjAwMzQ4IDkuNDkyMjIgOSA5LjggOUgxMi4yQzEyLjUwNzggOSAxMi41NzM3IDkuMDAzNDggMTIuNjE2NyA5LjAxMzgyQzEyLjc5OTUgOS4wNTc3MSAxMi45NDIzIDkuMjAwNDUgMTIuOTg2MiA5LjM4MzI4QzEyLjk5NjUgOS40MjYzMiAxMyA5LjQ5MjIyIDEzIDkuOFYxMi4yQzEzIDEyLjUwNzggMTIuOTk2NSAxMi41NzM3IDEyLjk4NjIgMTIuNjE2N0MxMi45NDIzIDEyLjc5OTUgMTIuNzk5NSAxMi45NDIzIDEyLjYxNjcgMTIuOTg2MkMxMi41NzM3IDEyLjk5NjUgMTIuNTA3OCAxMyAxMi4yIDEzSDkuOEM5LjQ5MjIyIDEzIDkuNDI2MzIgMTIuOTk2NSA5LjM4MzI4IDEyLjk4NjJDOS4yMDA0NSAxMi45NDIzIDkuMDU3NzEgMTIuNzk5NSA5LjAxMzgyIDEyLjYxNjdDOS4wMDM0OCAxMi41NzM3IDkgMTIuNTA3OCA5IDEyLjJWOS44QzkgOS40OTIyMiA5LjAwMzQ4IDkuNDI2MzIgOS4wMTM4MiA5LjM4MzI4QzkuMDU3NzEgOS4yMDA0NSA5LjIwMDQ1IDkuMDU3NzEgOS4zODMyOCA5LjAxMzgyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMDAwMTQgMi43Mzg5NUMzLjAwMDE0IDIuOTQ2OTggMi43NjA4NyAzLjA2NDAxIDIuNTk2NjYgMi45MzYyOEwxLjAwMzg2IDEuNjk3NDRDMC44NzUxNzcgMS41OTczNSAwLjg3NTE3NyAxLjQwMjg2IDEuMDAzODYgMS4zMDI3N0wyLjU5NjY2IDAuMDYzOTI4QzIuNzYwODcgLTAuMDYzNzk0NCAzLjAwMDE0IDAuMDUzMjI5MyAzLjAwMDE0IDAuMjYxMjY2VjEuMDAwMTJIOS4wMDAwOVYwLjI2MTI5NkM5LjAwMDA5IDAuMDUzMjU5MSA5LjIzOTM2IC0wLjA2Mzc2NDYgOS40MDM1OCAwLjA2Mzk1NzhMMTAuOTk2NCAxLjMwMjhDMTEuMTI1MSAxLjQwMjg5IDExLjEyNTEgMS41OTczOCAxMC45OTY0IDEuNjk3NDdMOS40MDM1OCAyLjkzNjMxQzkuMjM5MzYgMy4wNjQwNCA5LjAwMDA5IDIuOTQ3MDEgOS4wMDAwOSAyLjczODk4VjIuMDAwMTJIMy4wMDAxNFYyLjczODk1Wk05LjUwMDAyIDQuOTk5OThIMi41MDAwMkMyLjIyMzg4IDQuOTk5OTggMi4wMDAwMiA1LjIyMzg0IDIuMDAwMDIgNS40OTk5OFYxMi41QzIuMDAwMDIgMTIuNzc2MSAyLjIyMzg4IDEzIDIuNTAwMDIgMTNIOS41MDAwMkM5Ljc3NjE2IDEzIDEwIDEyLjc3NjEgMTAgMTIuNVY1LjQ5OTk4QzEwIDUuMjIzODQgOS43NzYxNiA0Ljk5OTk4IDkuNTAwMDIgNC45OTk5OFpNMi41MDAwMiAzLjk5OTk4QzEuNjcxNTkgMy45OTk5OCAxLjAwMDAyIDQuNjcxNTYgMS4wMDAwMiA1LjQ5OTk4VjEyLjVDMS4wMDAwMiAxMy4zMjg0IDEuNjcxNTkgMTQgMi41MDAwMiAxNEg5LjUwMDAyQzEwLjMyODQgMTQgMTEgMTMuMzI4NCAxMSAxMi41VjUuNDk5OThDMTEgNC42NzE1NiAxMC4zMjg0IDMuOTk5OTggOS41MDAwMiAzLjk5OTk4SDIuNTAwMDJaTTE0LjczODkgNi4wMDAwMUgxNFYxMkgxNC43Mzg5QzE0Ljk0NjkgMTIgMTUuMDY0IDEyLjIzOTMgMTQuOTM2MiAxMi40MDM1TDEzLjY5NzQgMTMuOTk2M0MxMy41OTczIDE0LjEyNSAxMy40MDI4IDE0LjEyNSAxMy4zMDI3IDEzLjk5NjNMMTIuMDYzOSAxMi40MDM1QzExLjkzNjIgMTIuMjM5MyAxMi4wNTMyIDEyIDEyLjI2MTIgMTJIMTNWNi4wMDAwMUgxMi4yNjEyQzEyLjA1MzIgNi4wMDAwMSAxMS45MzYxIDUuNzYwNzQgMTIuMDYzOSA1LjU5NjUzTDEzLjMwMjcgNC4wMDM3M0MxMy40MDI4IDMuODc1MDUgMTMuNTk3MyAzLjg3NTA1IDEzLjY5NzQgNC4wMDM3NEwxNC45MzYyIDUuNTk2NTNDMTUuMDYzOSA1Ljc2MDc0IDE0Ljk0NjkgNi4wMDAwMSAxNC43Mzg5IDYuMDAwMDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxZZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3NzA3NUMzLjg0MjIyIDAuODc3MDc1IDAuODc3MDc1IDMuODQyMjIgMC44NzcwNzUgNy40OTk5MUMwLjg3NzA3NSAxMS4xNTc2IDMuODQyMjIgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMTEuMTU3NiAxNC4xMjI3IDE0LjEyMjcgMTEuMTU3NiAxNC4xMjI3IDcuNDk5OTFDMTQuMTIyNyAzLjg0MjIyIDExLjE1NzYgMC44NzcwNzUgNy40OTk5MSAwLjg3NzA3NVpNMS44MjcwOCA3LjQ5OTkxQzEuODI3MDggNC4zNjY4OSA0LjM2Njg5IDEuODI3MDcgNy40OTk5MSAxLjgyNzA3QzEwLjYzMjkgMS44MjcwNyAxMy4xNzI3IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxQzEzLjE3MjcgMTAuNjMyOSAxMC42MzI5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzQuMzY2ODkgMTMuMTcyNyAxLjgyNzA4IDEwLjYzMjkgMS44MjcwOCA3LjQ5OTkxWk04LjM3Mjg3IDcuNTAwMDZDOC4zNzI4NyA3Ljk4MTk2IDcuOTgyMjEgOC4zNzI2MyA3LjUwMDMgOC4zNzI2M0M3LjAxODM5IDguMzcyNjMgNi42Mjc3MyA3Ljk4MTk2IDYuNjI3NzMgNy41MDAwNkM2LjYyNzczIDcuMDE4MTUgNy4wMTgzOSA2LjYyNzQ4IDcuNTAwMyA2LjYyNzQ4QzcuOTgyMjEgNi42Mjc0OCA4LjM3Mjg3IDcuMDE4MTUgOC4zNzI4NyA3LjUwMDA2Wk05LjMyMjg3IDcuNTAwMDZDOS4zMjI4NyA4LjUwNjY0IDguNTA2ODggOS4zMjI2MyA3LjUwMDMgOS4zMjI2M0M2LjQ5MzcyIDkuMzIyNjMgNS42Nzc3MyA4LjUwNjY0IDUuNjc3NzMgNy41MDAwNkM1LjY3NzczIDYuNDkzNDggNi40OTM3MiA1LjY3NzQ4IDcuNTAwMyA1LjY3NzQ4QzguNTA2ODggNS42Nzc0OCA5LjMyMjg3IDYuNDkzNDggOS4zMjI4NyA3LjUwMDA2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sS2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgNy41QzIgNy4yMjM4NiAyLjIyMzg2IDcgMi41IDdIMTIuNUMxMi43NzYxIDcgMTMgNy4yMjM4NiAxMyA3LjVDMTMgNy43NzYxNCAxMi43NzYxIDggMTIuNSA4SDIuNUMyLjIyMzg2IDggMiA3Ljc3NjE0IDIgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAyQzcuNzc2MTQgMiA4IDIuMjIzODYgOCAyLjVMOCAxMi41QzggMTIuNzc2MSA3Ljc3NjE0IDEzIDcuNSAxM0M3LjIyMzg2IDEzIDcgMTIuNzc2MSA3IDEyLjVMNyAyLjVDNyAyLjIyMzg2IDcuMjIzODYgMiA3LjUgMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFFlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgOS4xMjVDOC4zOTc0NiA5LjEyNSA5LjEyNSA4LjM5NzQ2IDkuMTI1IDcuNUM5LjEyNSA2LjYwMjU0IDguMzk3NDYgNS44NzUgNy41IDUuODc1QzYuNjAyNTQgNS44NzUgNS44NzUgNi42MDI1NCA1Ljg3NSA3LjVDNS44NzUgOC4zOTc0NiA2LjYwMjU0IDkuMTI1IDcuNSA5LjEyNVpNNy41IDEwLjEyNUM4Ljk0OTc1IDEwLjEyNSAxMC4xMjUgOC45NDk3NSAxMC4xMjUgNy41QzEwLjEyNSA2LjA1MDI1IDguOTQ5NzUgNC44NzUgNy41IDQuODc1QzYuMDUwMjUgNC44NzUgNC44NzUgNi4wNTAyNSA0Ljg3NSA3LjVDNC44NzUgOC45NDk3NSA2LjA1MDI1IDEwLjEyNSA3LjUgMTAuMTI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuODc1IDcuNUM5Ljg3NSA4LjgxMTY4IDguODExNjggOS44NzUgNy41IDkuODc1QzYuMTg4MzIgOS44NzUgNS4xMjUgOC44MTE2OCA1LjEyNSA3LjVDNS4xMjUgNi4xODgzMiA2LjE4ODMyIDUuMTI1IDcuNSA1LjEyNUM4LjgxMTY4IDUuMTI1IDkuODc1IDYuMTg4MzIgOS44NzUgNy41WlwiLGZpbGw6bn0pKX0sZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNjI1IDcuNUMzLjYyNSA4LjEyMTMyIDMuMTIxMzIgOC42MjUgMi41IDguNjI1QzEuODc4NjggOC42MjUgMS4zNzUgOC4xMjEzMiAxLjM3NSA3LjVDMS4zNzUgNi44Nzg2OCAxLjg3ODY4IDYuMzc1IDIuNSA2LjM3NUMzLjEyMTMyIDYuMzc1IDMuNjI1IDYuODc4NjggMy42MjUgNy41Wk04LjYyNSA3LjVDOC42MjUgOC4xMjEzMiA4LjEyMTMyIDguNjI1IDcuNSA4LjYyNUM2Ljg3ODY4IDguNjI1IDYuMzc1IDguMTIxMzIgNi4zNzUgNy41QzYuMzc1IDYuODc4NjggNi44Nzg2OCA2LjM3NSA3LjUgNi4zNzVDOC4xMjEzMiA2LjM3NSA4LjYyNSA2Ljg3ODY4IDguNjI1IDcuNVpNMTIuNSA4LjYyNUMxMy4xMjEzIDguNjI1IDEzLjYyNSA4LjEyMTMyIDEzLjYyNSA3LjVDMTMuNjI1IDYuODc4NjggMTMuMTIxMyA2LjM3NSAxMi41IDYuMzc1QzExLjg3ODcgNi4zNzUgMTEuMzc1IDYuODc4NjggMTEuMzc1IDcuNUMxMS4zNzUgOC4xMjEzMiAxMS44Nzg3IDguNjI1IDEyLjUgOC42MjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx0dD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC42MjUgMi41QzguNjI1IDMuMTIxMzIgOC4xMjEzMiAzLjYyNSA3LjUgMy42MjVDNi44Nzg2OCAzLjYyNSA2LjM3NSAzLjEyMTMyIDYuMzc1IDIuNUM2LjM3NSAxLjg3ODY4IDYuODc4NjggMS4zNzUgNy41IDEuMzc1QzguMTIxMzIgMS4zNzUgOC42MjUgMS44Nzg2OCA4LjYyNSAyLjVaTTguNjI1IDcuNUM4LjYyNSA4LjEyMTMyIDguMTIxMzIgOC42MjUgNy41IDguNjI1QzYuODc4NjggOC42MjUgNi4zNzUgOC4xMjEzMiA2LjM3NSA3LjVDNi4zNzUgNi44Nzg2OCA2Ljg3ODY4IDYuMzc1IDcuNSA2LjM3NUM4LjEyMTMyIDYuMzc1IDguNjI1IDYuODc4NjggOC42MjUgNy41Wk03LjUgMTMuNjI1QzguMTIxMzIgMTMuNjI1IDguNjI1IDEzLjEyMTMgOC42MjUgMTIuNUM4LjYyNSAxMS44Nzg3IDguMTIxMzIgMTEuMzc1IDcuNSAxMS4zNzVDNi44Nzg2OCAxMS4zNzUgNi4zNzUgMTEuODc4NyA2LjM3NSAxMi41QzYuMzc1IDEzLjEyMTMgNi44Nzg2OCAxMy42MjUgNy41IDEzLjYyNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG50PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjg1MzU1IDIuMTQ2NDVDMy42NTgyOSAxLjk1MTE4IDMuMzQxNzEgMS45NTExOCAzLjE0NjQ1IDIuMTQ2NDVDMi45NTExOCAyLjM0MTcxIDIuOTUxMTggMi42NTgyOSAzLjE0NjQ1IDIuODUzNTVMNy4xNDY0NSA2Ljg1MzU1QzcuMzQxNzEgNy4wNDg4MiA3LjY1ODI5IDcuMDQ4ODIgNy44NTM1NSA2Ljg1MzU1TDExLjg1MzYgMi44NTM1NUMxMi4wNDg4IDIuNjU4MjkgMTIuMDQ4OCAyLjM0MTcxIDExLjg1MzYgMi4xNDY0NUMxMS42NTgzIDEuOTUxMTggMTEuMzQxNyAxLjk1MTE4IDExLjE0NjQgMi4xNDY0NUw3LjUgNS43OTI4OUwzLjg1MzU1IDIuMTQ2NDVaTTMuODUzNTUgOC4xNDY0NUMzLjY1ODI5IDcuOTUxMTggMy4zNDE3MSA3Ljk1MTE4IDMuMTQ2NDUgOC4xNDY0NUMyLjk1MTE4IDguMzQxNzEgMi45NTExOCA4LjY1ODI5IDMuMTQ2NDUgOC44NTM1NUw3LjE0NjQ1IDEyLjg1MzZDNy4zNDE3MSAxMy4wNDg4IDcuNjU4MjkgMTMuMDQ4OCA3Ljg1MzU1IDEyLjg1MzZMMTEuODUzNiA4Ljg1MzU1QzEyLjA0ODggOC42NTgyOSAxMi4wNDg4IDguMzQxNzEgMTEuODUzNiA4LjE0NjQ1QzExLjY1ODMgNy45NTExOCAxMS4zNDE3IDcuOTUxMTggMTEuMTQ2NCA4LjE0NjQ1TDcuNSAxMS43OTI5TDMuODUzNTUgOC4xNDY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHJ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02Ljg1MzU1IDMuODUzNTVDNy4wNDg4MiAzLjY1ODI5IDcuMDQ4ODIgMy4zNDE3MSA2Ljg1MzU1IDMuMTQ2NDVDNi42NTgyOSAyLjk1MTE4IDYuMzQxNzEgMi45NTExOCA2LjE0NjQ1IDMuMTQ2NDVMMi4xNDY0NSA3LjE0NjQ1QzEuOTUxMTggNy4zNDE3MSAxLjk1MTE4IDcuNjU4MjkgMi4xNDY0NSA3Ljg1MzU1TDYuMTQ2NDUgMTEuODUzNkM2LjM0MTcxIDEyLjA0ODggNi42NTgyOSAxMi4wNDg4IDYuODUzNTUgMTEuODUzNkM3LjA0ODgyIDExLjY1ODMgNy4wNDg4MiAxMS4zNDE3IDYuODUzNTUgMTEuMTQ2NEwzLjIwNzExIDcuNUw2Ljg1MzU1IDMuODUzNTVaTTEyLjg1MzYgMy44NTM1NUMxMy4wNDg4IDMuNjU4MjkgMTMuMDQ4OCAzLjM0MTcxIDEyLjg1MzYgMy4xNDY0NUMxMi42NTgzIDIuOTUxMTggMTIuMzQxNyAyLjk1MTE4IDEyLjE0NjQgMy4xNDY0NUw4LjE0NjQ1IDcuMTQ2NDVDNy45NTExOCA3LjM0MTcxIDcuOTUxMTggNy42NTgyOSA4LjE0NjQ1IDcuODUzNTVMMTIuMTQ2NCAxMS44NTM2QzEyLjM0MTcgMTIuMDQ4OCAxMi42NTgzIDEyLjA0ODggMTIuODUzNiAxMS44NTM2QzEzLjA0ODggMTEuNjU4MyAxMy4wNDg4IDExLjM0MTcgMTIuODUzNiAxMS4xNDY0TDkuMjA3MTEgNy41TDEyLjg1MzYgMy44NTM1NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG90PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjE0NjQ1IDExLjE0NjRDMS45NTExOCAxMS4zNDE3IDEuOTUxMTggMTEuNjU4MyAyLjE0NjQ1IDExLjg1MzZDMi4zNDE3MSAxMi4wNDg4IDIuNjU4MjkgMTIuMDQ4OCAyLjg1MzU1IDExLjg1MzZMNi44NTM1NSA3Ljg1MzU1QzcuMDQ4ODIgNy42NTgyOSA3LjA0ODgyIDcuMzQxNzEgNi44NTM1NSA3LjE0NjQ1TDIuODUzNTUgMy4xNDY0NUMyLjY1ODI5IDIuOTUxMTggMi4zNDE3MSAyLjk1MTE4IDIuMTQ2NDUgMy4xNDY0NUMxLjk1MTE4IDMuMzQxNzEgMS45NTExOCAzLjY1ODI5IDIuMTQ2NDUgMy44NTM1NUw1Ljc5Mjg5IDcuNUwyLjE0NjQ1IDExLjE0NjRaTTguMTQ2NDUgMTEuMTQ2NEM3Ljk1MTE4IDExLjM0MTcgNy45NTExOCAxMS42NTgzIDguMTQ2NDUgMTEuODUzNkM4LjM0MTcxIDEyLjA0ODggOC42NTgyOSAxMi4wNDg4IDguODUzNTUgMTEuODUzNkwxMi44NTM2IDcuODUzNTVDMTMuMDQ4OCA3LjY1ODI5IDEzLjA0ODggNy4zNDE3MSAxMi44NTM2IDcuMTQ2NDVMOC44NTM1NSAzLjE0NjQ1QzguNjU4MjkgMi45NTExOCA4LjM0MTcxIDIuOTUxMTggOC4xNDY0NSAzLjE0NjQ1QzcuOTUxMTggMy4zNDE3MSA3Ljk1MTE4IDMuNjU4MjkgOC4xNDY0NSAzLjg1MzU1TDExLjc5MjkgNy41TDguMTQ2NDUgMTEuMTQ2NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGF0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS4xNDY0IDYuODUzNTVDMTEuMzQxNyA3LjA0ODgyIDExLjY1ODMgNy4wNDg4MiAxMS44NTM2IDYuODUzNTVDMTIuMDQ4OCA2LjY1ODI5IDEyLjA0ODggNi4zNDE3MSAxMS44NTM2IDYuMTQ2NDVMNy44NTM1NSAyLjE0NjQ1QzcuNjU4MjkgMS45NTExOCA3LjM0MTcxIDEuOTUxMTggNy4xNDY0NSAyLjE0NjQ1TDMuMTQ2NDUgNi4xNDY0NUMyLjk1MTE4IDYuMzQxNzEgMi45NTExOCA2LjY1ODI5IDMuMTQ2NDUgNi44NTM1NUMzLjM0MTcxIDcuMDQ4ODIgMy42NTgyOSA3LjA0ODgyIDMuODUzNTUgNi44NTM1NUw3LjUgMy4yMDcxMUwxMS4xNDY0IDYuODUzNTVaTTExLjE0NjQgMTIuODUzNkMxMS4zNDE3IDEzLjA0ODggMTEuNjU4MyAxMy4wNDg4IDExLjg1MzYgMTIuODUzNkMxMi4wNDg4IDEyLjY1ODMgMTIuMDQ4OCAxMi4zNDE3IDExLjg1MzYgMTIuMTQ2NEw3Ljg1MzU1IDguMTQ2NDVDNy42NTgyOSA3Ljk1MTE4IDcuMzQxNzEgNy45NTExOCA3LjE0NjQ1IDguMTQ2NDVMMy4xNDY0NSAxMi4xNDY0QzIuOTUxMTggMTIuMzQxNyAyLjk1MTE4IDEyLjY1ODMgMy4xNDY0NSAxMi44NTM2QzMuMzQxNzEgMTMuMDQ4OCAzLjY1ODI5IDEzLjA0ODggMy44NTM1NSAxMi44NTM2TDcuNSA5LjIwNzExTDExLjE0NjQgMTIuODUzNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGl0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUwMDA1IDEuMDQ5OTlDNy43NDg1OCAxLjA0OTk5IDcuOTUwMDUgMS4yNTE0NiA3Ljk1MDA1IDEuNDk5OTlWOC40MTM1OUwxMC4xODE5IDYuMTgxNzlDMTAuMzU3NiA2LjAwNjA1IDEwLjY0MjUgNi4wMDYwNSAxMC44MTgyIDYuMTgxNzlDMTAuOTk0IDYuMzU3NTMgMTAuOTk0IDYuNjQyNDUgMTAuODE4MiA2LjgxODE5TDcuODE4MjUgOS44MTgxOUM3LjY0MjUxIDkuOTkzOTIgNy4zNTc1OSA5Ljk5MzkyIDcuMTgxODUgOS44MTgxOUw0LjE4MTg1IDYuODE4MTlDNC4wMDYxMSA2LjY0MjQ1IDQuMDA2MTEgNi4zNTc1MyA0LjE4MTg1IDYuMTgxNzlDNC4zNTc1OSA2LjAwNjA1IDQuNjQyNTEgNi4wMDYwNSA0LjgxODI1IDYuMTgxNzlMNy4wNTAwNSA4LjQxMzU5VjEuNDk5OTlDNy4wNTAwNSAxLjI1MTQ2IDcuMjUxNTIgMS4wNDk5OSA3LjUwMDA1IDEuMDQ5OTlaTTIuNSAxMEMyLjc3NjE0IDEwIDMgMTAuMjIzOSAzIDEwLjVWMTJDMyAxMi41NTM5IDMuNDQ1NjUgMTMgMy45OTYzNSAxM0gxMS4wMDEyQzExLjU1MjkgMTMgMTIgMTIuNTUyOCAxMiAxMlYxMC41QzEyIDEwLjIyMzkgMTIuMjIzOSAxMCAxMi41IDEwQzEyLjc3NjEgMTAgMTMgMTAuMjIzOSAxMyAxMC41VjEyQzEzIDEzLjEwNDEgMTIuMTA2MiAxNCAxMS4wMDEyIDE0SDMuOTk2MzVDMi44OTAxOSAxNCAyIDEzLjEwMyAyIDEyVjEwLjVDMiAxMC4yMjM5IDIuMjIzODYgMTAgMi41IDEwWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNC41XCIsY3k6XCIyLjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNC41XCIsY3k6XCI0LjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNC41XCIsY3k6XCI2LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI0LjVcIixjeTpcIjguNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjQuNVwiLGN5OlwiMTAuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjQuNVwiLGN5OlwiMTIuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjYuNVwiLGN5OlwiMi41XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjYuNVwiLGN5OlwiNC41XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjYuNVwiLGN5OlwiNi40OTlcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNi41XCIsY3k6XCI4LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI2LjVcIixjeTpcIjEwLjQ5OFwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI2LjVcIixjeTpcIjEyLjQ5OFwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI4LjQ5OVwiLGN5OlwiMi41XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjguNDk5XCIsY3k6XCI0LjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiOC40OTlcIixjeTpcIjYuNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjguNDk5XCIsY3k6XCI4LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI4LjQ5OVwiLGN5OlwiMTAuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjguNDk5XCIsY3k6XCIxMi40OThcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiMTAuNDk5XCIsY3k6XCIyLjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiMTAuNDk5XCIsY3k6XCI0LjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiMTAuNDk5XCIsY3k6XCI2LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCIxMC40OTlcIixjeTpcIjguNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjEwLjQ5OVwiLGN5OlwiMTAuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjEwLjQ5OVwiLGN5OlwiMTIuNDk4XCIscjpcIi42XCIsZmlsbDpufSkpfSxjdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS41IDQuNjI1QzYuMTIxMzIgNC42MjUgNi42MjUgNC4xMjEzMiA2LjYyNSAzLjVDNi42MjUgMi44Nzg2OCA2LjEyMTMyIDIuMzc1IDUuNSAyLjM3NUM0Ljg3ODY4IDIuMzc1IDQuMzc1IDIuODc4NjggNC4zNzUgMy41QzQuMzc1IDQuMTIxMzIgNC44Nzg2OCA0LjYyNSA1LjUgNC42MjVaTTkuNSA0LjYyNUMxMC4xMjEzIDQuNjI1IDEwLjYyNSA0LjEyMTMyIDEwLjYyNSAzLjVDMTAuNjI1IDIuODc4NjggMTAuMTIxMyAyLjM3NSA5LjUgMi4zNzVDOC44Nzg2OCAyLjM3NSA4LjM3NSAyLjg3ODY4IDguMzc1IDMuNUM4LjM3NSA0LjEyMTMyIDguODc4NjggNC42MjUgOS41IDQuNjI1Wk0xMC42MjUgNy41QzEwLjYyNSA4LjEyMTMyIDEwLjEyMTMgOC42MjUgOS41IDguNjI1QzguODc4NjggOC42MjUgOC4zNzUgOC4xMjEzMiA4LjM3NSA3LjVDOC4zNzUgNi44Nzg2OCA4Ljg3ODY4IDYuMzc1IDkuNSA2LjM3NUMxMC4xMjEzIDYuMzc1IDEwLjYyNSA2Ljg3ODY4IDEwLjYyNSA3LjVaTTUuNSA4LjYyNUM2LjEyMTMyIDguNjI1IDYuNjI1IDguMTIxMzIgNi42MjUgNy41QzYuNjI1IDYuODc4NjggNi4xMjEzMiA2LjM3NSA1LjUgNi4zNzVDNC44Nzg2OCA2LjM3NSA0LjM3NSA2Ljg3ODY4IDQuMzc1IDcuNUM0LjM3NSA4LjEyMTMyIDQuODc4NjggOC42MjUgNS41IDguNjI1Wk0xMC42MjUgMTEuNUMxMC42MjUgMTIuMTIxMyAxMC4xMjEzIDEyLjYyNSA5LjUgMTIuNjI1QzguODc4NjggMTIuNjI1IDguMzc1IDEyLjEyMTMgOC4zNzUgMTEuNUM4LjM3NSAxMC44Nzg3IDguODc4NjggMTAuMzc1IDkuNSAxMC4zNzVDMTAuMTIxMyAxMC4zNzUgMTAuNjI1IDEwLjg3ODcgMTAuNjI1IDExLjVaTTUuNSAxMi42MjVDNi4xMjEzMiAxMi42MjUgNi42MjUgMTIuMTIxMyA2LjYyNSAxMS41QzYuNjI1IDEwLjg3ODcgNi4xMjEzMiAxMC4zNzUgNS41IDEwLjM3NUM0Ljg3ODY4IDEwLjM3NSA0LjM3NSAxMC44Nzg3IDQuMzc1IDExLjVDNC4zNzUgMTIuMTIxMyA0Ljg3ODY4IDEyLjYyNSA1LjUgMTIuNjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sc3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuNDk5OTggNC4wOTk5OEMyLjI3OTA2IDQuMDk5OTggMi4wOTk5OCA0LjI3OTA2IDIuMDk5OTggNC40OTk5OEMyLjA5OTk4IDQuNzIwODkgMi4yNzkwNiA0Ljg5OTk4IDIuNDk5OTggNC44OTk5OEgxMi41QzEyLjcyMDkgNC44OTk5OCAxMi45IDQuNzIwODkgMTIuOSA0LjQ5OTk4QzEyLjkgNC4yNzkwNiAxMi43MjA5IDQuMDk5OTggMTIuNSA0LjA5OTk4SDIuNDk5OThaTTIuNDk5OTggNi4wOTk5OEMyLjI3OTA2IDYuMDk5OTggMi4wOTk5OCA2LjI3OTA2IDIuMDk5OTggNi40OTk5OEMyLjA5OTk4IDYuNzIwODkgMi4yNzkwNiA2Ljg5OTk4IDIuNDk5OTggNi44OTk5OEgxMi41QzEyLjcyMDkgNi44OTk5OCAxMi45IDYuNzIwODkgMTIuOSA2LjQ5OTk4QzEyLjkgNi4yNzkwNiAxMi43MjA5IDYuMDk5OTggMTIuNSA2LjA5OTk4SDIuNDk5OThaTTIuMDk5OTggOC40OTk5OEMyLjA5OTk4IDguMjc5MDYgMi4yNzkwNiA4LjA5OTk4IDIuNDk5OTggOC4wOTk5OEgxMi41QzEyLjcyMDkgOC4wOTk5OCAxMi45IDguMjc5MDYgMTIuOSA4LjQ5OTk4QzEyLjkgOC43MjA4OSAxMi43MjA5IDguODk5OTggMTIuNSA4Ljg5OTk4SDIuNDk5OThDMi4yNzkwNiA4Ljg5OTk4IDIuMDk5OTggOC43MjA4OSAyLjA5OTk4IDguNDk5OThaTTIuNDk5OTggMTAuMUMyLjI3OTA2IDEwLjEgMi4wOTk5OCAxMC4yNzkxIDIuMDk5OTggMTAuNUMyLjA5OTk4IDEwLjcyMDkgMi4yNzkwNiAxMC45IDIuNDk5OTggMTAuOUgxMi41QzEyLjcyMDkgMTAuOSAxMi45IDEwLjcyMDkgMTIuOSAxMC41QzEyLjkgMTAuMjc5MSAxMi43MjA5IDEwLjEgMTIuNSAxMC4xSDIuNDk5OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx1dD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC4wOTk5OCAxMi41QzQuMDk5OTggMTIuNzIwOSA0LjI3OTA2IDEyLjkgNC40OTk5OCAxMi45QzQuNzIwODkgMTIuOSA0Ljg5OTk4IDEyLjcyMDkgNC44OTk5OCAxMi41TDQuODk5OTggMi41MDAwMkM0Ljg5OTk4IDIuMjc5MTEgNC43MjA4OSAyLjEwMDAzIDQuNDk5OTggMi4xMDAwM0M0LjI3OTA2IDIuMTAwMDMgNC4wOTk5OCAyLjI3OTExIDQuMDk5OTggMi41MDAwMkw0LjA5OTk4IDEyLjVaTTYuMDk5OTggMTIuNUM2LjA5OTk4IDEyLjcyMDkgNi4yNzkwNiAxMi45IDYuNDk5OTggMTIuOUM2LjcyMDg5IDEyLjkgNi44OTk5OCAxMi43MjA5IDYuODk5OTggMTIuNUw2Ljg5OTk4IDIuNTAwMDJDNi44OTk5OCAyLjI3OTExIDYuNzIwODkgMi4xMDAwMyA2LjQ5OTk4IDIuMTAwMDNDNi4yNzkwNiAyLjEwMDAzIDYuMDk5OTggMi4yNzkxMSA2LjA5OTk4IDIuNTAwMDJMNi4wOTk5OCAxMi41Wk04LjQ5OTk4IDEyLjlDOC4yNzkwNiAxMi45IDguMDk5OTggMTIuNzIwOSA4LjA5OTk4IDEyLjVMOC4wOTk5OCAyLjUwMDAyQzguMDk5OTggMi4yNzkxMSA4LjI3OTA2IDIuMTAwMDIgOC40OTk5OCAyLjEwMDAyQzguNzIwODkgMi4xMDAwMiA4Ljg5OTk4IDIuMjc5MTEgOC44OTk5OCAyLjUwMDAyTDguODk5OTggMTIuNUM4Ljg5OTk4IDEyLjcyMDkgOC43MjA4OSAxMi45IDguNDk5OTggMTIuOVpNMTAuMSAxMi41QzEwLjEgMTIuNzIwOSAxMC4yNzkxIDEyLjkgMTAuNSAxMi45QzEwLjcyMDkgMTIuOSAxMC45IDEyLjcyMDkgMTAuOSAxMi41TDEwLjkgMi41MDAwMkMxMC45IDIuMjc5MTEgMTAuNzIwOSAyLjEwMDAyIDEwLjUgMi4xMDAwMkMxMC4yNzkxIDIuMTAwMDIgMTAuMSAyLjI3OTExIDEwLjEgMi41MDAwMkwxMC4xIDEyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxkdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAuMzI4NSAxLjEzNjA3QzEwLjEzMzIgMC45NDA4MDkgOS44MTY2MiAwLjk0MDgwOCA5LjYyMTM2IDEuMTM2MDdDOS40MjYwOSAxLjMzMTMzIDkuNDI2MDkgMS42NDc5MiA5LjYyMTM2IDEuODQzMThMMTAuMjc0NCAyLjQ5NjE5TDUuNDI1NjMgNi4xMzI3NEw0LjMxODA1IDUuMDI1MTZDNC4xMjI3OSA0LjgyOTkgMy44MDYyMSA0LjgyOTkgMy42MTA5NSA1LjAyNTE2QzMuNDE1NjkgNS4yMjA0MiAzLjQxNTY5IDUuNTM3IDMuNjEwOTUgNS43MzIyNkw1LjAyNTE2IDcuMTQ2NDhMNi4wODU4MiA4LjIwNzE0TDIuODE1NDUgMTEuNDc3NUMyLjYyMDE5IDExLjY3MjggMi42MjAxOSAxMS45ODk0IDIuODE1NDUgMTIuMTg0NkMzLjAxMDcyIDEyLjM3OTkgMy4zMjczIDEyLjM3OTkgMy41MjI1NiAxMi4xODQ2TDYuNzkyOTMgOC45MTQyNUw3Ljg1MzU5IDkuOTc0OTFMOS4yNjc4IDExLjM4OTFDOS40NjMwNiAxMS41ODQ0IDkuNzc5NjUgMTEuNTg0NCA5Ljk3NDkxIDExLjM4OTFDMTAuMTcwMiAxMS4xOTM5IDEwLjE3MDIgMTAuODc3MyA5Ljk3NDkxIDEwLjY4Mkw4Ljg2NzMzIDkuNTc0NDNMMTIuNTAzOSA0LjcyNTdMMTMuMTU2OSA1LjM3ODcxQzEzLjM1MjIgNS41NzM5NyAxMy42Njg3IDUuNTczOTcgMTMuODY0IDUuMzc4NzFDMTQuMDU5MyA1LjE4MzQ1IDE0LjA1OTMgNC44NjY4NyAxMy44NjQgNC42NzE2TDEyLjgwMzMgMy42MTA5NEwxMS4zODkxIDIuMTk2NzNMMTAuMzI4NSAxLjEzNjA3Wk02LjEzOTkyIDYuODQ3MDJMMTAuOTg4NyAzLjIxMDQ3TDExLjc4OTYgNC4wMTE0Mkw4LjE1MzA1IDguODYwMTVMNi4xMzk5MiA2Ljg0NzAyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuNjIxMjkgMS4xMzYwN0M5LjgxNjU2IDAuOTQwODA4IDEwLjEzMzEgMC45NDA4MDkgMTAuMzI4NCAxLjEzNjA3TDExLjM4OTEgMi4xOTY3M0wxMi44MDMzIDMuNjEwOTRMMTMuODYzOSA0LjY3MTZDMTQuMDU5MiA0Ljg2Njg3IDE0LjA1OTIgNS4xODM0NSAxMy44NjM5IDUuMzc4NzFDMTMuNjY4NyA1LjU3Mzk3IDEzLjM1MjEgNS41NzM5NyAxMy4xNTY4IDUuMzc4NzFMMTIuNTAzOCA0LjcyNTdMOC44NjcyNyA5LjU3NDQzTDkuOTc0ODUgMTAuNjgyQzEwLjE3MDEgMTAuODc3MyAxMC4xNzAxIDExLjE5MzkgOS45NzQ4NSAxMS4zODkxQzkuNzc5NTkgMTEuNTg0NCA5LjQ2MyAxMS41ODQ0IDkuMjY3NzQgMTEuMzg5MUw3Ljg1MzUzIDkuOTc0OTFMNi43OTI4NyA4LjkxNDI1TDMuNTIyNSAxMi4xODQ2QzMuMzI3MjQgMTIuMzc5OSAzLjAxMDY1IDEyLjM3OTkgMi44MTUzOSAxMi4xODQ2QzIuNjIwMTMgMTEuOTg5NCAyLjYyMDEzIDExLjY3MjggMi44MTUzOSAxMS40Nzc1TDYuMDg1NzYgOC4yMDcxNEw1LjAyNTEgNy4xNDY0OEwzLjYxMDg5IDUuNzMyMjZDMy40MTU2MyA1LjUzNyAzLjQxNTYyIDUuMjIwNDIgMy42MTA4OSA1LjAyNTE2QzMuODA2MTUgNC44Mjk5IDQuMTIyNzMgNC44Mjk5IDQuMzE3OTkgNS4wMjUxNkw1LjQyNTU3IDYuMTMyNzRMMTAuMjc0MyAyLjQ5NjE5TDkuNjIxMjkgMS44NDMxOEM5LjQyNjAzIDEuNjQ3OTIgOS40MjYwMyAxLjMzMTMzIDkuNjIxMjkgMS4xMzYwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuNjIxMjkgMS4xMzYwN0M5LjgxNjU2IDAuOTQwODA4IDEwLjEzMzEgMC45NDA4MDkgMTAuMzI4NCAxLjEzNjA3TDExLjM4OTEgMi4xOTY3M0wxMi44MDMzIDMuNjEwOTRMMTMuODYzOSA0LjY3MTZDMTQuMDU5MiA0Ljg2Njg3IDE0LjA1OTIgNS4xODM0NSAxMy44NjM5IDUuMzc4NzFDMTMuNjY4NyA1LjU3Mzk3IDEzLjM1MjEgNS41NzM5NyAxMy4xNTY4IDUuMzc4NzFMMTIuNTAzOCA0LjcyNTdMOC44NjcyNyA5LjU3NDQzTDkuOTc0ODUgMTAuNjgyQzEwLjE3MDEgMTAuODc3MyAxMC4xNzAxIDExLjE5MzkgOS45NzQ4NSAxMS4zODkxQzkuNzc5NTkgMTEuNTg0NCA5LjQ2MyAxMS41ODQ0IDkuMjY3NzQgMTEuMzg5MUw3Ljg1MzUzIDkuOTc0OTFMNi43OTI4NyA4LjkxNDI1TDMuNTIyNSAxMi4xODQ2QzMuMzI3MjQgMTIuMzc5OSAzLjAxMDY1IDEyLjM3OTkgMi44MTUzOSAxMi4xODQ2QzIuNjIwMTMgMTEuOTg5NCAyLjYyMDEzIDExLjY3MjggMi44MTUzOSAxMS40Nzc1TDYuMDg1NzYgOC4yMDcxNEw1LjAyNTEgNy4xNDY0OEwzLjYxMDg5IDUuNzMyMjZDMy40MTU2MyA1LjUzNyAzLjQxNTYyIDUuMjIwNDIgMy42MTA4OSA1LjAyNTE2QzMuODA2MTUgNC44Mjk5IDQuMTIyNzMgNC44Mjk5IDQuMzE3OTkgNS4wMjUxNkw1LjQyNTU3IDYuMTMyNzRMMTAuMjc0MyAyLjQ5NjE5TDkuNjIxMjkgMS44NDMxOEM5LjQyNjAzIDEuNjQ3OTIgOS40MjYwMyAxLjMzMTMzIDkuNjIxMjkgMS4xMzYwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHB0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTk5IDMuMDk5OThDNy4yNzkwNyAzLjA5OTk4IDcuMDk5OTkgMy4yNzkwNiA3LjA5OTk5IDMuNDk5OThDNy4wOTk5OSAzLjcyMDg5IDcuMjc5MDcgMy44OTk5OCA3LjQ5OTk5IDMuODk5OThIMTQuNUMxNC43MjA5IDMuODk5OTggMTQuOSAzLjcyMDg5IDE0LjkgMy40OTk5OEMxNC45IDMuMjc5MDYgMTQuNzIwOSAzLjA5OTk4IDE0LjUgMy4wOTk5OEg3LjQ5OTk5Wk03LjQ5OTk4IDUuMUM3LjI3OTA3IDUuMSA3LjA5OTk4IDUuMjc5MDggNy4wOTk5OCA1LjVDNy4wOTk5OCA1LjcyMDkxIDcuMjc5MDcgNS45IDcuNDk5OTggNS45SDE0LjVDMTQuNzIwOSA1LjkgMTQuOSA1LjcyMDkxIDE0LjkgNS41QzE0LjkgNS4yNzkwOCAxNC43MjA5IDUuMSAxNC41IDUuMUg3LjQ5OTk4Wk03LjEgNy41QzcuMSA3LjI3OTA4IDcuMjc5MDkgNy4xIDcuNSA3LjFIMTQuNUMxNC43MjA5IDcuMSAxNC45IDcuMjc5MDggMTQuOSA3LjVDMTQuOSA3LjcyMDkxIDE0LjcyMDkgNy45IDE0LjUgNy45SDcuNUM3LjI3OTA5IDcuOSA3LjEgNy43MjA5MSA3LjEgNy41Wk03LjQ5OTk4IDkuMUM3LjI3OTA3IDkuMSA3LjA5OTk4IDkuMjc5MDggNy4wOTk5OCA5LjVDNy4wOTk5OCA5LjcyMDkxIDcuMjc5MDcgOS45IDcuNDk5OTggOS45SDE0LjVDMTQuNzIwOSA5LjkgMTQuOSA5LjcyMDkxIDE0LjkgOS41QzE0LjkgOS4yNzkwOCAxNC43MjA5IDkuMSAxNC41IDkuMUg3LjQ5OTk4Wk03LjA5OTk4IDExLjVDNy4wOTk5OCAxMS4yNzkxIDcuMjc5MDcgMTEuMSA3LjQ5OTk4IDExLjFIMTQuNUMxNC43MjA5IDExLjEgMTQuOSAxMS4yNzkxIDE0LjkgMTEuNUMxNC45IDExLjcyMDkgMTQuNzIwOSAxMS45IDE0LjUgMTEuOUg3LjQ5OTk4QzcuMjc5MDcgMTEuOSA3LjA5OTk4IDExLjcyMDkgNy4wOTk5OCAxMS41Wk0yLjUgOS4yNTAwM0w1IDYuMDAwMDNIMEwyLjUgOS4yNTAwM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGh0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjUgMUM0LjIyMzg2IDEgNCAxLjIyMzg2IDQgMS41QzQgMS43NzYxNCA0LjIyMzg2IDIgNC41IDJIMTJWMTNINC41QzQuMjIzODYgMTMgNCAxMy4yMjM5IDQgMTMuNUM0IDEzLjc3NjEgNC4yMjM4NiAxNCA0LjUgMTRIMTJDMTIuNTUyMyAxNCAxMyAxMy41NTIzIDEzIDEzVjJDMTMgMS40NDc3MiAxMi41NTIzIDEgMTIgMUg0LjVaTTYuNjAzNTUgNC44OTY0NUM2LjQwODI5IDQuNzAxMTggNi4wOTE3MSA0LjcwMTE4IDUuODk2NDUgNC44OTY0NUM1LjcwMTE4IDUuMDkxNzEgNS43MDExOCA1LjQwODI5IDUuODk2NDUgNS42MDM1NUw3LjI5Mjg5IDdIMC41QzAuMjIzODU4IDcgMCA3LjIyMzg2IDAgNy41QzAgNy43NzYxNCAwLjIyMzg1OCA4IDAuNSA4SDcuMjkyODlMNS44OTY0NSA5LjM5NjQ1QzUuNzAxMTggOS41OTE3MSA1LjcwMTE4IDkuOTA4MjkgNS44OTY0NSAxMC4xMDM2QzYuMDkxNzEgMTAuMjk4OCA2LjQwODI5IDEwLjI5ODggNi42MDM1NSAxMC4xMDM2TDguODUzNTUgNy44NTM1NUM5LjA0ODgyIDcuNjU4MjkgOS4wNDg4MiA3LjM0MTcxIDguODUzNTUgNy4xNDY0NUw2LjYwMzU1IDQuODk2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxDdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiAyLjVDMiAyLjIyMzg2IDIuMjIzODYgMiAyLjUgMkg1LjVDNS43NzYxNCAyIDYgMi4yMjM4NiA2IDIuNUM2IDIuNzc2MTQgNS43NzYxNCAzIDUuNSAzSDNWNS41QzMgNS43NzYxNCAyLjc3NjE0IDYgMi41IDZDMi4yMjM4NiA2IDIgNS43NzYxNCAyIDUuNVYyLjVaTTkgMi41QzkgMi4yMjM4NiA5LjIyMzg2IDIgOS41IDJIMTIuNUMxMi43NzYxIDIgMTMgMi4yMjM4NiAxMyAyLjVWNS41QzEzIDUuNzc2MTQgMTIuNzc2MSA2IDEyLjUgNkMxMi4yMjM5IDYgMTIgNS43NzYxNCAxMiA1LjVWM0g5LjVDOS4yMjM4NiAzIDkgMi43NzYxNCA5IDIuNVpNMi41IDlDMi43NzYxNCA5IDMgOS4yMjM4NiAzIDkuNVYxMkg1LjVDNS43NzYxNCAxMiA2IDEyLjIyMzkgNiAxMi41QzYgMTIuNzc2MSA1Ljc3NjE0IDEzIDUuNSAxM0gyLjVDMi4yMjM4NiAxMyAyIDEyLjc3NjEgMiAxMi41VjkuNUMyIDkuMjIzODYgMi4yMjM4NiA5IDIuNSA5Wk0xMi41IDlDMTIuNzc2MSA5IDEzIDkuMjIzODYgMTMgOS41VjEyLjVDMTMgMTIuNzc2MSAxMi43NzYxIDEzIDEyLjUgMTNIOS41QzkuMjIzODYgMTMgOSAxMi43NzYxIDkgMTIuNUM5IDEyLjIyMzkgOS4yMjM4NiAxMiA5LjUgMTJIMTJWOS41QzEyIDkuMjIzODYgMTIuMjIzOSA5IDEyLjUgOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHZ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDJDMC40NDc3MTUgMiAwIDIuNDQ3NzIgMCAzVjEyQzAgMTIuNTUyMyAwLjQ0NzcxNSAxMyAxIDEzSDE0QzE0LjU1MjMgMTMgMTUgMTIuNTUyMyAxNSAxMlYzQzE1IDIuNDQ3NzIgMTQuNTUyMyAyIDE0IDJIMVpNMSAzTDE0IDNWMy45MjQ5NEMxMy45MTc0IDMuOTI0ODYgMTMuODMzOCAzLjk0NzUxIDEzLjc1ODkgMy45OTUwNUw3LjUgNy45NjcwM0wxLjI0MTEyIDMuOTk1MDVDMS4xNjYyMSAzLjk0NzUxIDEuMDgyNiAzLjkyNDg2IDEgMy45MjQ5NFYzWk0xIDQuOTA3OTdWMTJIMTRWNC45MDc5N0w3Ljc0MTEyIDguODc5OTVDNy41OTM5NCA4Ljk3MzM1IDcuNDA2MDYgOC45NzMzNSA3LjI1ODg4IDguODc5OTVMMSA0LjkwNzk3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZ3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuOTQ3MjEgMC4xNjQ1OTRDNy42NjU2OSAwLjAyMzgyOTkgNy4zMzQzMSAwLjAyMzgzMDIgNy4wNTI3OSAwLjE2NDU5NEwwLjU1Mjc4NiAzLjQxNDU5QzAuMjE0MDAyIDMuNTgzOTkgMCAzLjkzMDI1IDAgNC4zMDkwMlYxMkMwIDEyLjU1MjMgMC40NDc3MTUgMTMgMSAxM0gxNEMxNC41NTIzIDEzIDE1IDEyLjU1MjMgMTUgMTJWNC4zMDkwMkMxNSAzLjkzMDI1IDE0Ljc4NiAzLjU4Mzk5IDE0LjQ0NzIgMy40MTQ1OUw3Ljk0NzIxIDAuMTY0NTk0Wk0xMy41Njg5IDQuMDkzNDlMNy41IDEuMDU5MDJMMS40MzEwNSA0LjA5MzQ5TDcuNSA3LjI5MTM2TDEzLjU2ODkgNC4wOTM0OVpNMSA0Ljg4MzY2VjEySDE0VjQuODgzNjZMNy43MDk3NyA4LjE5ODEzQzcuNTc4NDggOC4yNjczMSA3LjQyMTUyIDguMjY3MzEgNy4yOTAyMyA4LjE5ODEzTDEgNC44ODM2NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG10PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjQ0NDkgMC42MDg3NjVDOC4wMTgzIC0wLjEwNzAxNSA2Ljk4MTcgLTAuMTA3MDE1IDYuNTU1MDkgMC42MDg3NjZMMC4xNjExNzggMTEuMzM2OEMtMC4yNzU4MjQgMTIuMDcgMC4yNTI1MDMgMTMgMS4xMDYwOCAxM0gxMy44OTM5QzE0Ljc0NzUgMTMgMTUuMjc1OCAxMi4wNyAxNC44Mzg4IDExLjMzNjhMOC40NDQ5IDAuNjA4NzY1Wk03LjQxNDEgMS4xMjA3M0M3LjQ1Mjg4IDEuMDU1NjYgNy41NDcxMiAxLjA1NTY2IDcuNTg1OSAxLjEyMDczTDEzLjk3OTggMTEuODQ4OEMxNC4wMTk2IDExLjkxNTQgMTMuOTcxNSAxMiAxMy44OTM5IDEySDEuMTA2MDhDMS4wMjg0OSAxMiAwLjk4MDQ1NCAxMS45MTU0IDEuMDIwMTggMTEuODQ4OEw3LjQxNDEgMS4xMjA3M1pNNi44MjY5IDQuNDg2MTFDNi44MTIyMSA0LjEwNDIzIDcuMTE3ODMgMy43ODY2MyA3LjUgMy43ODY2M0M3Ljg4MjE3IDMuNzg2NjMgOC4xODc3OCA0LjEwNDIzIDguMTczMSA0LjQ4NjEyTDguMDE5MjEgOC40ODcwMUM4LjAwODQ4IDguNzY2IDcuNzc5MiA4Ljk4NjY0IDcuNSA4Ljk4NjY0QzcuMjIwOCA4Ljk4NjY0IDYuOTkxNTEgOC43NjYgNi45ODA3OCA4LjQ4NzAxTDYuODI2OSA0LjQ4NjExWk04LjI0OTg5IDEwLjQ3NkM4LjI0OTg5IDEwLjg5MDIgNy45MTQxIDExLjIyNiA3LjQ5OTg5IDExLjIyNkM3LjA4NTY3IDExLjIyNiA2Ljc0OTg5IDEwLjg5MDIgNi43NDk4OSAxMC40NzZDNi43NDk4OSAxMC4wNjE4IDcuMDg1NjcgOS43MjU5OSA3LjQ5OTg5IDkuNzI1OTlDNy45MTQxIDkuNzI1OTkgOC4yNDk4OSAxMC4wNjE4IDguMjQ5ODkgMTAuNDc2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sd3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgMUMyLjQ0NzcxIDEgMiAxLjQ0NzcyIDIgMlYxM0MyIDEzLjU1MjMgMi40NDc3MiAxNCAzIDE0SDEwLjVDMTAuNzc2MSAxNCAxMSAxMy43NzYxIDExIDEzLjVDMTEgMTMuMjIzOSAxMC43NzYxIDEzIDEwLjUgMTNIM1YyTDEwLjUgMkMxMC43NzYxIDIgMTEgMS43NzYxNCAxMSAxLjVDMTEgMS4yMjM4NiAxMC43NzYxIDEgMTAuNSAxSDNaTTEyLjYwMzYgNC44OTY0NUMxMi40MDgzIDQuNzAxMTggMTIuMDkxNyA0LjcwMTE4IDExLjg5NjQgNC44OTY0NUMxMS43MDEyIDUuMDkxNzEgMTEuNzAxMiA1LjQwODI5IDExLjg5NjQgNS42MDM1NUwxMy4yOTI5IDdINi41QzYuMjIzODYgNyA2IDcuMjIzODYgNiA3LjVDNiA3Ljc3NjE0IDYuMjIzODYgOCA2LjUgOEgxMy4yOTI5TDExLjg5NjQgOS4zOTY0NUMxMS43MDEyIDkuNTkxNzEgMTEuNzAxMiA5LjkwODI5IDExLjg5NjQgMTAuMTAzNkMxMi4wOTE3IDEwLjI5ODggMTIuNDA4MyAxMC4yOTg4IDEyLjYwMzYgMTAuMTAzNkwxNC44NTM2IDcuODUzNTVDMTUuMDQ4OCA3LjY1ODI5IDE1LjA0ODggNy4zNDE3MSAxNC44NTM2IDcuMTQ2NDVMMTIuNjAzNiA0Ljg5NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNSAyQzUuNzc2MTQgMiA2IDIuMjIzODYgNiAyLjVWNS41QzYgNS43NzYxNCA1Ljc3NjE0IDYgNS41IDZIMi41QzIuMjIzODYgNiAyIDUuNzc2MTQgMiA1LjVDMiA1LjIyMzg2IDIuMjIzODYgNSAyLjUgNUg1VjIuNUM1IDIuMjIzODYgNS4yMjM4NiAyIDUuNSAyWk05LjUgMkM5Ljc3NjE0IDIgMTAgMi4yMjM4NiAxMCAyLjVWNUgxMi41QzEyLjc3NjEgNSAxMyA1LjIyMzg2IDEzIDUuNUMxMyA1Ljc3NjE0IDEyLjc3NjEgNiAxMi41IDZIOS41QzkuMjIzODYgNiA5IDUuNzc2MTQgOSA1LjVWMi41QzkgMi4yMjM4NiA5LjIyMzg2IDIgOS41IDJaTTIgOS41QzIgOS4yMjM4NiAyLjIyMzg2IDkgMi41IDlINS41QzUuNzc2MTQgOSA2IDkuMjIzODYgNiA5LjVWMTIuNUM2IDEyLjc3NjEgNS43NzYxNCAxMyA1LjUgMTNDNS4yMjM4NiAxMyA1IDEyLjc3NjEgNSAxMi41VjEwSDIuNUMyLjIyMzg2IDEwIDIgOS43NzYxNCAyIDkuNVpNOSA5LjVDOSA5LjIyMzg2IDkuMjIzODYgOSA5LjUgOUgxMi41QzEyLjc3NjEgOSAxMyA5LjIyMzg2IDEzIDkuNUMxMyA5Ljc3NjE0IDEyLjc3NjEgMTAgMTIuNSAxMEgxMFYxMi41QzEwIDEyLjc3NjEgOS43NzYxNCAxMyA5LjUgMTNDOS4yMjM4NiAxMyA5IDEyLjc3NjEgOSAxMi41VjkuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGJ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zIDJDMi40NDc3MiAyIDIgMi40NDc3MiAyIDNWMTJDMiAxMi41NTIzIDIuNDQ3NzIgMTMgMyAxM0gxMkMxMi41NTIzIDEzIDEzIDEyLjU1MjMgMTMgMTJWOC41QzEzIDguMjIzODYgMTIuNzc2MSA4IDEyLjUgOEMxMi4yMjM5IDggMTIgOC4yMjM4NiAxMiA4LjVWMTJIM1YzTDYuNSAzQzYuNzc2MTQgMyA3IDIuNzc2MTQgNyAyLjVDNyAyLjIyMzg2IDYuNzc2MTQgMiA2LjUgMkgzWk0xMi44NTM2IDIuMTQ2NDVDMTIuOTAxNSAyLjE5NDM5IDEyLjkzNzcgMi4yNDk2NCAxMi45NjIxIDIuMzA4NjFDMTIuOTg2MSAyLjM2NjY5IDEyLjk5OTYgMi40MzAzIDEzIDIuNDk3TDEzIDIuNVYyLjUwMDQ5VjUuNUMxMyA1Ljc3NjE0IDEyLjc3NjEgNiAxMi41IDZDMTIuMjIzOSA2IDEyIDUuNzc2MTQgMTIgNS41VjMuNzA3MTFMNi44NTM1NSA4Ljg1MzU1QzYuNjU4MjkgOS4wNDg4MiA2LjM0MTcxIDkuMDQ4ODIgNi4xNDY0NSA4Ljg1MzU1QzUuOTUxMTggOC42NTgyOSA1Ljk1MTE4IDguMzQxNzEgNi4xNDY0NSA4LjE0NjQ1TDExLjI5MjkgM0g5LjVDOS4yMjM4NiAzIDkgMi43NzYxNCA5IDIuNUM5IDIuMjIzODYgOS4yMjM4NiAyIDkuNSAySDEyLjQ5OTlIMTIuNUMxMi41Njc4IDIgMTIuNjMyNCAyLjAxMzQ5IDEyLjY5MTQgMi4wMzc5NEMxMi43NTA0IDIuMDYyMzQgMTIuODA1NiAyLjA5ODUxIDEyLjg1MzYgMi4xNDY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHh0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNC43NjQ5IDYuMDc1OTVDMTQuOTk5MSA2LjIyMjMxIDE1LjA3MDMgNi41MzA3OCAxNC45MjM5IDYuNzY0OTVDMTQuNDg0OSA3LjQ2NzQyIDEzLjk2MzIgOC4xMDY0NCAxMy4zNzAyIDguNjYzMDRMMTQuNTcxMiA5Ljg2NDA1QzE0Ljc2NjQgMTAuMDU5MyAxNC43NjY0IDEwLjM3NTkgMTQuNTcxMiAxMC41NzEyQzE0LjM3NTkgMTAuNzY2NCAxNC4wNTkzIDEwLjc2NjQgMTMuODY0MSAxMC41NzEyTDEyLjYwMTEgOS4zMDgxNkMxMS44MDQ5IDkuOTAyODIgMTAuOTA4OSAxMC4zNjIxIDkuOTMzNzQgMTAuNjUxTDEwLjM4MyAxMi4zMjc2QzEwLjQ1NDQgMTIuNTk0NCAxMC4yOTYxIDEyLjg2ODUgMTAuMDI5NCAxMi45NEM5Ljc2MjY2IDEzLjAxMTUgOS40ODg1IDEyLjg1MzIgOS40MTcwMyAxMi41ODY0TDguOTU5MTYgMTAuODc3NUM4LjQ4NzQyIDEwLjk1OCA4LjAwMDM1IDEwLjk5OTkgNy41IDEwLjk5OTlDNi45OTk2NCAxMC45OTk5IDYuNTEyNTcgMTAuOTU4IDYuMDQwODIgMTAuODc3NUw1LjU4Mjk5IDEyLjU4NjRDNS41MTE1MyAxMi44NTMyIDUuMjM3MzcgMTMuMDExNSA0Ljk3MDYzIDEyLjk0QzQuNzAzOSAxMi44Njg1IDQuNTQ1NiAxMi41OTQ0IDQuNjE3MDYgMTIuMzI3N0w1LjA2NjI0IDEwLjY1MUM0LjA5MTExIDEwLjM2MjEgMy4xOTUwMyA5LjkwMjgxIDIuMzk4OSA5LjMwODE0TDEuMTM1OSAxMC41NzExQzAuOTQwNjM4IDEwLjc2NjQgMC42MjQwNTggMTAuNzY2NCAwLjQyODc5NyAxMC41NzExQzAuMjMzNTM3IDEwLjM3NTkgMC4yMzM1MzcgMTAuMDU5MyAwLjQyODc5NyA5Ljg2NDA0TDEuNjI5ODIgOC42NjMwMkMxLjAzNjgyIDguMTA2NDMgMC41MTUxMTMgNy40Njc0MiAwLjA3NjA2NzcgNi43NjQ5NUMtMC4wNzAyODY3IDYuNTMwNzggMC4wMDA4OTg1NDQgNi4yMjIzMSAwLjIzNTA2NCA2LjA3NTk1QzAuNDY5MjMgNS45Mjk2IDAuNzc3NzAzIDYuMDAwNzggMC45MjQwNTcgNi4yMzQ5NUMxLjQwMzU0IDcuMDAyMTIgMS45ODkgNy42ODA1NiAyLjY2MjMzIDguMjQyN0MyLjY3MzE1IDguMjUwOTYgMi42ODM3IDguMjU5NzEgMi42OTM5NyA4LjI2ODk3QzQuMDA4OTcgOS4zNTUyNyA1LjY1NTM2IDkuOTk5OSA3LjUgOS45OTk5QzEwLjMwNzggOS45OTk5IDEyLjY1NjMgOC41MDYyOSAxNC4wNzU5IDYuMjM0OTVDMTQuMjIyMyA2LjAwMDc4IDE0LjUzMDggNS45Mjk2IDE0Ljc2NDkgNi4wNzU5NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE90PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy4zNTM2IDIuMzUzNTVDMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMS44NDE3MSAxMy4zNTM2IDEuNjQ2NDVDMTMuMTU4MyAxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMi42NDY0IDEuNjQ2NDVMMTAuNjgyOCAzLjYxMDEyQzkuNzA2NTIgMy4yMTY3MSA4LjYzNzU5IDMgNy41IDNDNC4zMDc4NiAzIDEuNjU2MzkgNC43MDYzOCAwLjA3NjAwMDIgNy4yMzUwMUMtMC4wMjUzMzM4IDcuMzk3MTUgLTAuMDI1MzMzNCA3LjYwMjg4IDAuMDc2MDAxNCA3Ljc2NTAxQzAuOTAyOTQ1IDkuMDg4MTIgMi4wMjMxNCAxMC4xODYxIDMuMzYwNjEgMTAuOTMyM0wxLjY0NjQ1IDEyLjY0NjRDMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTMuMTU4MyAxLjY0NjQ1IDEzLjM1MzZDMS44NDE3MSAxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAyLjM1MzU1IDEzLjM1MzZMNC4zMTcyMyAxMS4zODk5QzUuMjkzNDggMTEuNzgzMyA2LjM2MjQxIDEyIDcuNSAxMkMxMC42OTIxIDEyIDEzLjM0MzYgMTAuMjkzNiAxNC45MjQgNy43NjUwMUMxNS4wMjUzIDcuNjAyODggMTUuMDI1MyA3LjM5NzE1IDE0LjkyNCA3LjIzNTAxQzE0LjA5NzEgNS45MTE5IDEyLjk3NjkgNC44MTM5MSAxMS42Mzk0IDQuMDY3NzFMMTMuMzUzNiAyLjM1MzU1Wk05LjkwNDI4IDQuMzg4NjFDOS4xNTMzMiA0LjEzNjEgOC4zNDc1OSA0IDcuNSA0QzQuODAyODUgNCAyLjUyOTUyIDUuMzc4MTYgMS4wOTYyMiA3LjUwMDAxQzEuODcyODQgOC42NDk3IDIuODk2MDkgOS41ODEwNiA0LjA5OTc0IDEwLjE5MzFMOS45MDQyOCA0LjM4ODYxWk01LjA5NTcyIDEwLjYxMTRMMTAuOTAwMyA0LjgwNjg1QzEyLjEwMzkgNS40MTg5NCAxMy4xMjcyIDYuMzUwMzEgMTMuOTAzOCA3LjUwMDAxQzEyLjQ3MDUgOS42MjE4MyAxMC4xOTcxIDExIDcuNSAxMUM2LjY1MjQxIDExIDUuODQ2NjggMTAuODYzOSA1LjA5NTcyIDEwLjYxMTRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxMdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDExQzQuODAyODUgMTEgMi41Mjk1MiA5LjYyMTg0IDEuMDk2MjIgNy41MDAwMUMyLjUyOTUyIDUuMzc4MTYgNC44MDI4NSA0IDcuNSA0QzEwLjE5NzEgNCAxMi40NzA1IDUuMzc4MTYgMTMuOTAzOCA3LjUwMDAxQzEyLjQ3MDUgOS42MjE4MyAxMC4xOTcxIDExIDcuNSAxMVpNNy41IDNDNC4zMDc4NiAzIDEuNjU2MzkgNC43MDYzOCAwLjA3NjAwMDIgNy4yMzUwMUMtMC4wMjUzMzM4IDcuMzk3MTUgLTAuMDI1MzMzNCA3LjYwMjg4IDAuMDc2MDAxNCA3Ljc2NTAxQzEuNjU2MzkgMTAuMjkzNiA0LjMwNzg2IDEyIDcuNSAxMkMxMC42OTIxIDEyIDEzLjM0MzYgMTAuMjkzNiAxNC45MjQgNy43NjUwMUMxNS4wMjUzIDcuNjAyODggMTUuMDI1MyA3LjM5NzE1IDE0LjkyNCA3LjIzNTAxQzEzLjM0MzYgNC43MDYzOCAxMC42OTIxIDMgNy41IDNaTTcuNSA5LjVDOC42MDQ1NyA5LjUgOS41IDguNjA0NTcgOS41IDcuNUM5LjUgNi4zOTU0MyA4LjYwNDU3IDUuNSA3LjUgNS41QzYuMzk1NDMgNS41IDUuNSA2LjM5NTQzIDUuNSA3LjVDNS41IDguNjA0NTcgNi4zOTU0MyA5LjUgNy41IDkuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE10PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc2ODkyQzMuODQyMjIgMC44NzY4OTIgMC44NzcwNzUgMy44NDIwNCAwLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDExLjE1NzQgMy44NDIyMiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMxMS4xNTc2IDE0LjEyMjYgMTQuMTIyNyAxMS4xNTc0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDMuODQyMDQgMTEuMTU3NiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyWk0xLjgyNzA4IDcuNDk5NzJDMS44MjcwOCA0LjM2NjcxIDQuMzY2ODkgMS44MjY4OSA3LjQ5OTkxIDEuODI2ODlDMTAuNjMyOSAxLjgyNjg5IDEzLjE3MjcgNC4zNjY3MSAxMy4xNzI3IDcuNDk5NzJDMTMuMTcyNyAxMC42MzI3IDEwLjYzMjkgMTMuMTcyNiA3LjQ5OTkxIDEzLjE3MjZDNC4zNjY4OSAxMy4xNzI2IDEuODI3MDggMTAuNjMyNyAxLjgyNzA4IDcuNDk5NzJaTTUuMDM3NDcgOS4yMTM5NUM0Ljg3OTQ5IDguOTg3NDYgNC41Njc4MiA4LjkzMTkzIDQuMzQxMzMgOS4wODk5MUM0LjExNDg0IDkuMjQ3ODkgNC4wNTkzMSA5LjU1OTU2IDQuMjE3MjkgOS43ODYwNUM0LjkzOTI2IDEwLjgyMTEgNi4xNDAzMyAxMS41IDcuNTAwMDQgMTEuNUM4Ljg1OTc0IDExLjUgMTAuMDYwOCAxMC44MjExIDEwLjc4MjggOS43ODYwNUMxMC45NDA4IDkuNTU5NTYgMTAuODg1MiA5LjI0Nzg5IDEwLjY1ODcgOS4wODk5MUMxMC40MzIzIDguOTMxOTMgMTAuMTIwNiA4Ljk4NzQ2IDkuOTYyNiA5LjIxMzk1QzkuNDE5NjMgOS45OTIzOCA4LjUxOTA3IDEwLjUgNy41MDAwNCAxMC41QzYuNDgxIDEwLjUgNS41ODA0NCA5Ljk5MjM4IDUuMDM3NDcgOS4yMTM5NVpNNS4zNzUwMyA2Ljg0OTk4QzUuODU4MjggNi44NDk5OCA2LjI1MDAzIDYuNDU4MTUgNi4yNTAwMyA1Ljk3NDk4QzYuMjUwMDMgNS40OTE4IDUuODU4MjggNS4wOTk5OCA1LjM3NTAzIDUuMDk5OThDNC44OTE3OSA1LjA5OTk4IDQuNTAwMDMgNS40OTE4IDQuNTAwMDMgNS45NzQ5OEM0LjUwMDAzIDYuNDU4MTUgNC44OTE3OSA2Ljg0OTk4IDUuMzc1MDMgNi44NDk5OFpNMTAuNSA1Ljk3NDk4QzEwLjUgNi40NTgxNSAxMC4xMDgzIDYuODQ5OTggOS42MjUwMyA2Ljg0OTk4QzkuMTQxNzkgNi44NDk5OCA4Ljc1MDAzIDYuNDU4MTUgOC43NTAwMyA1Ljk3NDk4QzguNzUwMDMgNS40OTE4IDkuMTQxNzkgNS4wOTk5OCA5LjYyNTAzIDUuMDk5OThDMTAuMTA4MyA1LjA5OTk4IDEwLjUgNS40OTE4IDEwLjUgNS45NzQ5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFN0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjAwMDA1IDIuMDQ5OTlINS41MjUwNUM0LjcxMDQzIDIuMDQ5OTkgNC4wNTAwNSAyLjcxMDM3IDQuMDUwMDUgMy41MjQ5OUM0LjA1MDA1IDQuMzM5NjEgNC43MTA0MyA0Ljk5OTk5IDUuNTI1MDUgNC45OTk5OUg3LjAwMDA1VjIuMDQ5OTlaTTcuMDAwMDUgMS4wNDk5OUg4LjAwMDA1SDkuNDc1MDVDMTAuODQyIDEuMDQ5OTkgMTEuOTUgMi4xNTgwOCAxMS45NSAzLjUyNDk5QzExLjk1IDQuMzMxNjMgMTEuNTY0MiA1LjA0ODE1IDEwLjk2NjkgNS40OTk5OUMxMS41NjQyIDUuOTUxODQgMTEuOTUgNi42NjgzNiAxMS45NSA3LjQ3NUMxMS45NSA4Ljg0MTkgMTAuODQyIDkuOTUgOS40NzUwNSA5Ljk1QzguOTIyMzYgOS45NSA4LjQxMTk4IDkuNzY4ODQgOC4wMDAwNSA5LjQ2MjY2VjkuOTVMOC4wMDAwNSAxMS40MjVDOC4wMDAwNSAxMi43OTE5IDYuODkxOTUgMTMuOSA1LjUyNTA1IDEzLjlDNC4xNTgxNCAxMy45IDMuMDUwMDUgMTIuNzkxOSAzLjA1MDA1IDExLjQyNUMzLjA1MDA1IDEwLjYxODMgMy40MzU5MyA5LjkwMTg0IDQuMDMzMTcgOS40NDk5OUMzLjQzNTkzIDguOTk4MTQgMy4wNTAwNSA4LjI4MTYzIDMuMDUwMDUgNy40NzVDMy4wNTAwNSA2LjY2ODM2IDMuNDM1OTQgNS45NTE4NCA0LjAzMzE5IDUuNUMzLjQzNTk0IDUuMDQ4MTUgMy4wNTAwNSA0LjMzMTYzIDMuMDUwMDUgMy41MjQ5OUMzLjA1MDA1IDIuMTU4MDggNC4xNTgxNCAxLjA0OTk5IDUuNTI1MDUgMS4wNDk5OUg3LjAwMDA1Wk04LjAwMDA1IDIuMDQ5OTlWNC45OTk5OUg5LjQ3NTA1QzEwLjI4OTcgNC45OTk5OSAxMC45NSA0LjMzOTYxIDEwLjk1IDMuNTI0OTlDMTAuOTUgMi43MTAzNyAxMC4yODk3IDIuMDQ5OTkgOS40NzUwNSAyLjA0OTk5SDguMDAwMDVaTTUuNTI1MDUgOC45NDk5OEg3LjAwMDA1TDcuMDAwMDUgNy40Nzg4TDcuMDAwMDUgNy40NzVMNy4wMDAwNSA3LjQ3MTJWNkg1LjUyNTA1QzQuNzEwNDMgNiA0LjA1MDA1IDYuNjYwMzggNC4wNTAwNSA3LjQ3NUM0LjA1MDA1IDguMjg3NjcgNC43MDcyNyA4Ljk0Njg0IDUuNTE5MiA4Ljk0OTk5TDUuNTI1MDUgOC45NDk5OFpNNC4wNTAwNSAxMS40MjVDNC4wNTAwNSAxMC42MTIzIDQuNzA3MjcgOS45NTMxNSA1LjUxOTIgOS45NDk5OUw1LjUyNTA1IDkuOTVINy4wMDAwNUw3LjAwMDA1IDExLjQyNUM3LjAwMDA1IDEyLjIzOTYgNi4zMzk2NyAxMi45IDUuNTI1MDUgMTIuOUM0LjcxMDQzIDEyLjkgNC4wNTAwNSAxMi4yMzk2IDQuMDUwMDUgMTEuNDI1Wk04LjAwMDA1IDcuNDcyMDZDOC4wMDE2NCA2LjY1ODc5IDguNjYxNDEgNiA5LjQ3NTA1IDZDMTAuMjg5NyA2IDEwLjk1IDYuNjYwMzggMTAuOTUgNy40NzVDMTAuOTUgOC4yODk2MiAxMC4yODk3IDguOTUgOS40NzUwNSA4Ljk1QzguNjYxNDEgOC45NSA4LjAwMTY0IDguMjkxMjEgOC4wMDAwNSA3LjQ3Nzk0VjcuNDcyMDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxfdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy41IDJDMy4yMjM4NiAyIDMgMi4yMjM4NiAzIDIuNVYxMi41QzMgMTIuNzc2MSAzLjIyMzg2IDEzIDMuNSAxM0gxMS41QzExLjc3NjEgMTMgMTIgMTIuNzc2MSAxMiAxMi41VjZIOC41QzguMjIzODYgNiA4IDUuNzc2MTQgOCA1LjVWMkgzLjVaTTkgMi43MDcxMUwxMS4yOTI5IDVIOVYyLjcwNzExWk0yIDIuNUMyIDEuNjcxNTcgMi42NzE1NyAxIDMuNSAxSDguNUM4LjYzMjYxIDEgOC43NTk3OSAxLjA1MjY4IDguODUzNTUgMS4xNDY0NUwxMi44NTM2IDUuMTQ2NDVDMTIuOTQ3MyA1LjI0MDIxIDEzIDUuMzY3MzkgMTMgNS41VjEyLjVDMTMgMTMuMzI4NCAxMi4zMjg0IDE0IDExLjUgMTRIMy41QzIuNjcxNTcgMTQgMiAxMy4zMjg0IDIgMTIuNVYyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxqdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyAyLjVDMyAyLjIyMzg2IDMuMjIzODYgMiAzLjUgMkg5LjI5Mjg5TDEyIDQuNzA3MTFWMTIuNUMxMiAxMi43NzYxIDExLjc3NjEgMTMgMTEuNSAxM0gzLjVDMy4yMjM4NiAxMyAzIDEyLjc3NjEgMyAxMi41VjIuNVpNMy41IDFDMi42NzE1NyAxIDIgMS42NzE1NyAyIDIuNVYxMi41QzIgMTMuMzI4NCAyLjY3MTU3IDE0IDMuNSAxNEgxMS41QzEyLjMyODQgMTQgMTMgMTMuMzI4NCAxMyAxMi41VjQuNjAzNTVDMTMgNC40MDQ2NCAxMi45MjEgNC4yMTM4OCAxMi43ODAzIDQuMDczMjJMOS44NTM1NSAxLjE0NjQ1QzkuNzU5NzkgMS4wNTI2OCA5LjYzMjYxIDEgOS41IDFIMy41Wk01LjI1IDdDNC45NzM4NiA3IDQuNzUgNy4yMjM4NiA0Ljc1IDcuNUM0Ljc1IDcuNzc2MTQgNC45NzM4NiA4IDUuMjUgOEg5Ljc1QzEwLjAyNjEgOCAxMC4yNSA3Ljc3NjE0IDEwLjI1IDcuNUMxMC4yNSA3LjIyMzg2IDEwLjAyNjEgNyA5Ljc1IDdINS4yNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEV0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjUgMkMzLjIyMzg2IDIgMyAyLjIyMzg2IDMgMi41VjEyLjVDMyAxMi43NzYxIDMuMjIzODYgMTMgMy41IDEzSDExLjVDMTEuNzc2MSAxMyAxMiAxMi43NzYxIDEyIDEyLjVWNC43MDcxMUw5LjI5Mjg5IDJIMy41Wk0yIDIuNUMyIDEuNjcxNTcgMi42NzE1NyAxIDMuNSAxSDkuNUM5LjYzMjYxIDEgOS43NTk3OSAxLjA1MjY4IDkuODUzNTUgMS4xNDY0NUwxMi43ODAzIDQuMDczMjJDMTIuOTIxIDQuMjEzODggMTMgNC40MDQ2NCAxMyA0LjYwMzU1VjEyLjVDMTMgMTMuMzI4NCAxMi4zMjg0IDE0IDExLjUgMTRIMy41QzIuNjcxNTcgMTQgMiAxMy4zMjg0IDIgMTIuNVYyLjVaTTQuNzUgNy41QzQuNzUgNy4yMjM4NiA0Ljk3Mzg2IDcgNS4yNSA3SDdWNS4yNUM3IDQuOTczODYgNy4yMjM4NiA0Ljc1IDcuNSA0Ljc1QzcuNzc2MTQgNC43NSA4IDQuOTczODYgOCA1LjI1VjdIOS43NUMxMC4wMjYxIDcgMTAuMjUgNy4yMjM4NiAxMC4yNSA3LjVDMTAuMjUgNy43NzYxNCAxMC4wMjYxIDggOS43NSA4SDhWOS43NUM4IDEwLjAyNjEgNy43NzYxNCAxMC4yNSA3LjUgMTAuMjVDNy4yMjM4NiAxMC4yNSA3IDEwLjAyNjEgNyA5Ljc1VjhINS4yNUM0Ljk3Mzg2IDggNC43NSA3Ljc3NjE0IDQuNzUgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgMi41QzMgMi4yMjM4NiAzLjIyMzg2IDIgMy41IDJIOS4wODU3OUM5LjIxODM5IDIgOS4zNDU1NyAyLjA1MjY4IDkuNDM5MzQgMi4xNDY0NUwxMS44NTM2IDQuNTYwNjZDMTEuOTQ3MyA0LjY1NDQzIDEyIDQuNzgxNjEgMTIgNC45MTQyMVYxMi41QzEyIDEyLjc3NjEgMTEuNzc2MSAxMyAxMS41IDEzSDMuNUMzLjIyMzg2IDEzIDMgMTIuNzc2MSAzIDEyLjVWMi41Wk0zLjUgMUMyLjY3MTU3IDEgMiAxLjY3MTU3IDIgMi41VjEyLjVDMiAxMy4zMjg0IDIuNjcxNTcgMTQgMy41IDE0SDExLjVDMTIuMzI4NCAxNCAxMyAxMy4zMjg0IDEzIDEyLjVWNC45MTQyMUMxMyA0LjUxNjM5IDEyLjg0MiA0LjEzNDg2IDEyLjU2MDcgMy44NTM1NUwxMC4xNDY0IDEuNDM5MzRDOS44NjUxNCAxLjE1ODA0IDkuNDgzNjEgMSA5LjA4NTc5IDFIMy41Wk00LjUgNEM0LjIyMzg2IDQgNCA0LjIyMzg2IDQgNC41QzQgNC43NzYxNCA0LjIyMzg2IDUgNC41IDVINy41QzcuNzc2MTQgNSA4IDQuNzc2MTQgOCA0LjVDOCA0LjIyMzg2IDcuNzc2MTQgNCA3LjUgNEg0LjVaTTQuNSA3QzQuMjIzODYgNyA0IDcuMjIzODYgNCA3LjVDNCA3Ljc3NjE0IDQuMjIzODYgOCA0LjUgOEgxMC41QzEwLjc3NjEgOCAxMSA3Ljc3NjE0IDExIDcuNUMxMSA3LjIyMzg2IDEwLjc3NjEgNyAxMC41IDdINC41Wk00LjUgMTBDNC4yMjM4NiAxMCA0IDEwLjIyMzkgNCAxMC41QzQgMTAuNzc2MSA0LjIyMzg2IDExIDQuNSAxMUgxMC41QzEwLjc3NjEgMTEgMTEgMTAuNzc2MSAxMSAxMC41QzExIDEwLjIyMzkgMTAuNzc2MSAxMCAxMC41IDEwSDQuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGt0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjEwNTA1IDEyQzQuNzA4MDUgMTIgNC40MjM2IDExLjkxMiA0LjI1MTcxIDExLjczNkM0LjA4MzkgMTEuNTU1OSA0IDExLjI3MTUgNCAxMC44ODI3VjQuMTE3MzNDNCAzLjcyMDMzIDQuMDg1OTUgMy40MzU4OCA0LjI1Nzg0IDMuMjYzOThDNC40MzM4MyAzLjA4Nzk5IDQuNzE2MjMgMyA1LjEwNTA1IDNDNi40Mjc0MSAzIDguMjU1OTEgMyA5LjAyODUyIDNDMTAuMTM3MyAzIDExLjA1MzkgMy45ODE1MyAxMS4wNTM5IDUuMTg0NkMxMS4wNTM5IDYuMDg1MDEgMTAuNjAzNyA2LjgxODU1IDkuNzAzMjcgNy4yMzYwMkMxMC44NjU3IDcuNDQ4NTEgMTEuNTE3NiA4LjYyNzg3IDExLjUxNzYgOS40ODEyOEMxMS41MTc2IDEwLjUxMjUgMTAuOTkwMiAxMiA5LjI3NzM0IDEyQzguNzc3NDIgMTIgNi40MjYyNiAxMiA1LjEwNTA1IDEyWk04LjM3ODkxIDguMDAzNDFINS44VjEwLjYzMUg4LjM3ODkxQzguOSAxMC42MzEgOS42Mjk2IDEwLjEyMTEgOS42Mjk2IDkuMjk4NzdDOS42Mjk2IDguNDc2NDMgOC45IDguMDAzNDEgOC4zNzg5MSA4LjAwMzQxWk01LjggNC4zNjkwM1Y2LjY5NTc3SDguMTc5NjlDOC41MzkwNiA2LjY5NTc3IDkuMjc3MzQgNi4zNTkzOSA5LjI3NzM0IDUuNTAwMDJDOS4yNzczNCA0LjY0MDY0IDguNDgwNDcgNC4zNjkwMyA4LjE3OTY5IDQuMzY5MDNINS44WlwiLGZpbGw6bn0pKX0sSHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuNSA0LjVDMi41IDMuMDk4ODYgMy41OTg4NiAyIDUgMkgxMi40OTlDMTIuNzc1MiAyIDEzIDIuMjIzODYgMTMgMi41QzEzIDIuNzc2MTQgMTIuNzc2MSAzIDEyLjUgM0g4LjY5MjQ0TDguNDA1MDkgMy44NTQ1OEM4LjE4ODY5IDQuNDk3NTIgNy44OTQwMSA1LjM3MTk3IDcuNTgwOTEgNi4yOTc5NEM3LjUwMjU5IDYuNTI5NTYgNy40MjMwOCA2Ljc2NDUzIDcuMzQzMzIgN0g4LjVDOC43NzYxNCA3IDkgNy4yMjM4NiA5IDcuNUM5IDcuNzc2MTQgOC43NzYxNCA4IDguNSA4SDcuMDA0MDdDNi41NjcyNCA5LjI4NTQzIDYuMTY0MzUgMTAuNDYxMyA1Ljk1Nzk5IDExLjAzODZDNS42MzYyNyAxMS45Mzg2IDUuMjA3MTIgMTIuNDg1NyA0LjY2NzQxIDEyLjc3NzhDNC4xNjMzNSAxMy4wNTA3IDMuNjQxNTQgMTMuMDUwMyAzLjI4Mzc4IDEzLjA1TDMuMjUgMTMuMDVDMi45NDYyNCAxMy4wNSAyLjcgMTIuODAzNyAyLjcgMTIuNUMyLjcgMTIuMTk2MiAyLjk0NjI0IDExLjk1IDMuMjUgMTEuOTVDMy42NDE4MiAxMS45NSAzLjkwMzUgMTEuOTQwNSA0LjE0Mzc0IDExLjgxMDVDNC4zNjQ0MyAxMS42OTEgNC42NTUzMiAxMS40MTQ4IDQuOTIyMTcgMTAuNjY4M0M1LjEwNjk1IDEwLjE1MTQgNS40NTM3NSA5LjE0MTM0IDUuODQyMiA4SDQuNUM0LjIyMzg2IDggNCA3Ljc3NjE0IDQgNy41QzQgNy4yMjM4NiA0LjIyMzg2IDcgNC41IDdINi4xODE4N0M2LjMwMTI3IDYuNjQ3ODUgNi40MjEzMiA2LjI5MzIzIDYuNTM4ODcgNS45NDU1OUM2Ljg1MTc1IDUuMDIwMjUgNy4xNDYyNyA0LjE0NjMxIDcuMzYyNTYgMy41MDM2OEw3LjUzMTkyIDNINUM0LjE1MTE0IDMgMy41IDMuNjUxMTQgMy41IDQuNUMzLjUgNC43NzYxNCAzLjI3NjE0IDUgMyA1QzIuNzIzODYgNSAyLjUgNC43NzYxNCAyLjUgNC41WlwiLGZpbGw6bn0pKX0sVnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNjc0OTQgMy41MDAxN0M1LjY3NDk0IDMuMjUxNjQgNS44NzY0MSAzLjA1MDE3IDYuMTI0OTQgMy4wNTAxN0gxMC42MjQ5QzEwLjg3MzUgMy4wNTAxNyAxMS4wNzQ5IDMuMjUxNjQgMTEuMDc0OSAzLjUwMDE3QzExLjA3NDkgMy43NDg3IDEwLjg3MzUgMy45NTAxNyAxMC42MjQ5IDMuOTUwMTdIOS4wMDU4N0w3LjIzMDkgMTEuMDVIOC44NzQ5M0M5LjEyMzQ1IDExLjA1IDkuMzI0OTMgMTEuMjUxNSA5LjMyNDkzIDExLjVDOS4zMjQ5MyAxMS43NDg2IDkuMTIzNDUgMTEuOTUgOC44NzQ5MyAxMS45NUg0LjM3NDkzQzQuMTI2NCAxMS45NSAzLjkyNDkzIDExLjc0ODYgMy45MjQ5MyAxMS41QzMuOTI0OTMgMTEuMjUxNSA0LjEyNjQgMTEuMDUgNC4zNzQ5MyAxMS4wNUg1Ljk5Mzk3TDcuNzY4OTQgMy45NTAxN0g2LjEyNDk0QzUuODc2NDEgMy45NTAxNyA1LjY3NDk0IDMuNzQ4NyA1LjY3NDk0IDMuNTAwMTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxSdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC43OTk5MyAzLjUwMDE3QzQuNzk5OTMgMy4yNTE2NCA1LjAwMTQgMy4wNTAxNyA1LjI0OTkzIDMuMDUwMTdIOS43NDk5M0M5Ljk5ODQ1IDMuMDUwMTcgMTAuMTk5OSAzLjI1MTY0IDEwLjE5OTkgMy41MDAxN0MxMC4xOTk5IDMuNzQ4NyA5Ljk5ODQ1IDMuOTUwMTcgOS43NDk5MyAzLjk1MDE3SDguMDk5OTNWMTEuMDVIOS43NDk5NEM5Ljk5ODQ3IDExLjA1IDEwLjE5OTkgMTEuMjUxNSAxMC4xOTk5IDExLjVDMTAuMTk5OSAxMS43NDg2IDkuOTk4NDcgMTEuOTUgOS43NDk5NCAxMS45NUg1LjI0OTk0QzUuMDAxNDEgMTEuOTUgNC43OTk5NCAxMS43NDg2IDQuNzk5OTQgMTEuNUM0Ljc5OTk0IDExLjI1MTUgNS4wMDE0MSAxMS4wNSA1LjI0OTk0IDExLjA1SDYuODk5OTNWMy45NTAxN0g1LjI0OTkzQzUuMDAxNCAzLjk1MDE3IDQuNzk5OTMgMy43NDg3IDQuNzk5OTMgMy41MDAxN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEl0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjc4MjMzIDIuMjE3MDdDMi43MDczMiAyLjE0MjA2IDIuNjA1NTcgMi4wOTk5MSAyLjQ5OTQ5IDIuMDk5OTFDMi4zOTM0IDIuMDk5OTEgMi4yOTE2NiAyLjE0MjA2IDIuMjE2NjQgMi4yMTcwN0wwLjIxNjY0NSA0LjIxNzA3QzAuMDYwNDM1MSA0LjM3MzI4IDAuMDYwNDM1MSA0LjYyNjU1IDAuMjE2NjQ1IDQuNzgyNzZDMC4zNzI4NTUgNC45Mzg5NyAwLjYyNjEyMSA0LjkzODk3IDAuNzgyMzMgNC43ODI3NkwyLjA5OTQ5IDMuNDY1NkwyLjA5OTQ5IDExLjUzNDJMMC43ODIzMyAxMC4yMTcxQzAuNjI2MTIgMTAuMDYwOSAwLjM3Mjg1NCAxMC4wNjA5IDAuMjE2NjQ1IDEwLjIxNzFDMC4wNjA0MzQ5IDEwLjM3MzMgMC4wNjA0MzQ5IDEwLjYyNjUgMC4yMTY2NDUgMTAuNzgyOEwyLjIxNjY0IDEyLjc4MjhDMi4yOTE2NiAxMi44NTc4IDIuMzkzNCAxMi44OTk5IDIuNDk5NDkgMTIuODk5OUMyLjYwNTU3IDEyLjg5OTkgMi43MDczMSAxMi44NTc4IDIuNzgyMzMgMTIuNzgyOEw0Ljc4MjMzIDEwLjc4MjhDNC45Mzg1NCAxMC42MjY1IDQuOTM4NTQgMTAuMzczMyA0Ljc4MjMzIDEwLjIxNzFDNC42MjYxMiAxMC4wNjA5IDQuMzcyODUgMTAuMDYwOSA0LjIxNjY0IDEwLjIxNzFMMi44OTk0OSAxMS41MzQyTDIuODk5NDkgMy40NjU2TDQuMjE2NjQgNC43ODI3NkM0LjM3Mjg1IDQuOTM4OTcgNC42MjYxMiA0LjkzODk3IDQuNzgyMzMgNC43ODI3NkM0LjkzODU0IDQuNjI2NTUgNC45Mzg1NCA0LjM3MzI4IDQuNzgyMzMgNC4yMTcwN0wyLjc4MjMzIDIuMjE3MDdaTTEwLjUgMi43NDk5N0MxMC43MTA3IDIuNzQ5OTcgMTAuODk4OCAyLjg4MjExIDEwLjk3MDMgMy4wODAzNkwxMy45NzAzIDExLjM5OTlDMTQuMDY0IDExLjY1OTcgMTMuOTI5MyAxMS45NDYyIDEzLjY2OTYgMTIuMDM5OUMxMy40MDk4IDEyLjEzMzYgMTMuMTIzMyAxMS45OTg5IDEzLjAyOTYgMTEuNzM5MkwxMi4wNDc3IDkuMDE2SDguOTUyMjhMNy45NzAzMyAxMS43MzkyQzcuODc2NjYgMTEuOTk4OSA3LjU5MDEzIDEyLjEzMzYgNy4zMzAzNiAxMi4wMzk5QzcuMDcwNTkgMTEuOTQ2MiA2LjkzNTk1IDExLjY1OTcgNy4wMjk2MiAxMS4zOTk5TDEwLjAyOTYgMy4wODAzNkMxMC4xMDExIDIuODgyMTEgMTAuMjg5MiAyLjc0OTk3IDEwLjUgMi43NDk5N1pNMTAuNSA0LjcyMzk2TDExLjc0MTIgOC4xNjZIOS4yNTg3OUwxMC41IDQuNzIzOTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxadD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS4wMzc5MSA5Ljk4MDc1QzAuOTM0Nzc3IDkuNjU4MyAxLjExNjAzIDkuMzc3MTkgMS40MDAwNSA5LjI0ODcxQzEuNjg0MDggOS4xMjAyMiAyLjA5NDYzIDkuMTM0MTIgMi4yNzA3MSA5LjQ1NDI2QzIuODUzOTMgMTAuNTE0NyAzLjY0NTk5IDEwLjcyODIgNC40ODY2NSAxMC43MjgyQzUuNTI3MjEgMTAuNzI4MiA2LjI5NjU5IDEwLjI2MTUgNi4yOTY1OSA5LjQ1NDI2QzYuMjk2NTkgOC44MDQ3IDUuOTExOSA4LjQ2NDE2IDQuODcxMzQgOC4xNDI1M0w0LjE1ODcyIDcuOTIxODFDMi42NDUxOCA3LjQ0ODgzIDEuODg4NDIgNi42OTIwNiAxLjg4ODQyIDUuNDU2MDFDMS44ODg0MiAzLjc5NzQzIDMuMjc1ODMgMi42ODc1IDUuMjQzNDIgMi42ODc1QzYuOTE3MzMgMi42ODc1IDcuOTc0MDkgMy4zMzUzNiA4LjQzODMzIDQuMzEwNjVDOC41NzA4NyA0LjU4OTA5IDguNTc2MTQgNC45MTI5NCA4LjIyNzk0IDUuMTkxMTRDNy44Nzk3NCA1LjQ2OTM0IDcuNTIzNTEgNS4zNDc5OSA3LjIzMzI3IDUuMDM4MzlDNi40NzIxNSA0LjIyNjUzIDUuOTk1NDUgNC4wNDk2OCA1LjI1NjA0IDQuMDQ5NjhDNC4xMzk4IDQuMDQ5NjggMy41NDcgNC42MzYxOCAzLjU0NyA1LjI3OTQzQzMuNTQ3IDUuODY1OTIgMy45NjMyMiA2LjIzMTY5IDQuOTQ3MDIgNi41MzQ0TDUuNjc4NTYgNi43NjE0M0M3LjIyOTk0IDcuMjM0NDEgNy45NzQwOSA3Ljk1OTY0IDcuOTc0MDkgOS4xNzA0N0M3Ljk3NDA5IDEwLjc3MjMgNi42OTM4OSAxMi4wOTAzIDQuNDYxNDMgMTIuMDkwM0MyLjg2NjEyIDEyLjA5MDMgMS40MDAwNSAxMS4xMTMxIDEuMDM3OTEgOS45ODA3NVpNMTEuODQ5MSA4Ljc3OTg1QzEwLjY2MSA4LjM5NTQzIDEwLjE2NDkgNy44NjExNCAxMC4xNjQ5IDYuOTg4MDVDMTAuMTY0OSA1Ljg2NzM2IDExLjE2MzYgNS4wNDYzOSAxMi42MTI4IDUuMDQ2MzlDMTMuODU0NiA1LjA0NjM5IDE0LjY2MjkgNS42MzM0NSAxNC45Nzc4IDYuNjM0NkMxNS4wNDQzIDYuODQ1OTkgMTQuOTU5MyA2Ljk4MDA2IDE0Ljc0NzUgNy4wNDkxQzE0LjUzOTQgNy4xMTY5NyAxNC4zMTc2IDcuMDk5NzQgMTQuMjM4IDYuODk2MTFDMTMuOTM1NiA2LjEyMjczIDEzLjM1MiA1Ljc2MzExIDEyLjU5OTggNS43NjMxMUMxMS42NDY3IDUuNzYzMTEgMTEuMDEzNSA2LjI1MTc4IDExLjAxMzUgNi45MTYzOEMxMS4wMTM1IDcuNDUwNjYgMTEuMzQ2NCA3Ljc1MDM4IDEyLjI0NzMgOC4wNDM1OEwxMi44MzQ4IDguMjMyNTRDMTQuMDYyIDguNjI5OTkgMTQuNTUxNiA5LjEzODIxIDE0LjU1MTYgMTAuMDE3OEMxNC41NTE2IDExLjE5NzIgMTMuNDgxIDEyLjA0NDIgMTEuOTkyNyAxMi4wNDQyQzEwLjY0MzkgMTIuMDQ0MiA5LjY1NjQ0IDExLjI4MDkgOS40MTk3OSAxMC4zMzYxQzkuMzY1MzUgMTAuMTE4OCA5LjQxMTkyIDEwLjAyODcgOS43MDAzOSA5Ljk2MTg0QzkuOTg4ODYgOS44OTQ5OSAxMC4wNzE0IDkuODk5MTggMTAuMTcxNSAxMC4xMzY5QzEwLjQ1NTUgMTAuODExNCAxMS4xNTMxIDExLjMyNzUgMTIuMDMxOCAxMS4zMjc1QzEyLjk5MTQgMTEuMzI3NSAxMy42ODM0IDEwLjc4MDIgMTMuNjgzNCAxMC4wNjM0QzEzLjY4MzQgOS41MzU2NyAxMy4zOTYxIDkuMjg4MDcgMTIuNDM2NiA4Ljk3NTMyTDExLjg0OTEgOC43Nzk4NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEF0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMSAxLjVDMTEgMS4yMjM4NiAxMC43NzYxIDEgMTAuNSAxQzEwLjIyMzkgMSAxMCAxLjIyMzg2IDEwIDEuNVY0SDVWMS41QzUgMS4yMjM4NiA0Ljc3NjE0IDEgNC41IDFDNC4yMjM4NiAxIDQgMS4yMjM4NiA0IDEuNVY0SDEuNUMxLjIyMzg2IDQgMSA0LjIyMzg2IDEgNC41QzEgNC43NzYxNCAxLjIyMzg2IDUgMS41IDVINFYxMEgxLjVDMS4yMjM4NiAxMCAxIDEwLjIyMzkgMSAxMC41QzEgMTAuNzc2MSAxLjIyMzg2IDExIDEuNSAxMUg0VjEzLjVDNCAxMy43NzYxIDQuMjIzODYgMTQgNC41IDE0QzQuNzc2MTQgMTQgNSAxMy43NzYxIDUgMTMuNVYxMUgxMFYxMy41QzEwIDEzLjc3NjEgMTAuMjIzOSAxNCAxMC41IDE0QzEwLjc3NjEgMTQgMTEgMTMuNzc2MSAxMSAxMy41VjExSDEzLjVDMTMuNzc2MSAxMSAxNCAxMC43NzYxIDE0IDEwLjVDMTQgMTAuMjIzOSAxMy43NzYxIDEwIDEzLjUgMTBIMTFWNUgxMy41QzEzLjc3NjEgNSAxNCA0Ljc3NjE0IDE0IDQuNUMxNCA0LjIyMzg2IDEzLjc3NjEgNCAxMy41IDRIMTFWMS41Wk0xMCAxMFY1SDVWMTBIMTBaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxEdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4zODI1IDEuMjk1NjdDMy40NjI0MSAxLjExNDMyIDMuNjQxODggMC45OTcyODQgMy44NDAwNSAwLjk5NzI4NEgxMS41QzExLjc3NjEgMC45OTcyODQgMTIgMS4yMjExNCAxMiAxLjQ5NzI4VjUuNUMxMiA1Ljc3NjE0IDExLjc3NjEgNiAxMS41IDZIOC42MzUyMUwxMS41Mjg4IDkuMTYyNDdDMTEuNjYyNiA5LjMwODcgMTEuNjk3NCA5LjUyMDE1IDExLjYxNzUgOS43MDE1NEMxMS41Mzc2IDkuODgyOTMgMTEuMzU4MiAxMCAxMS4xNiAxMEg4VjEzLjVDOCAxMy43MDIyIDcuODc4MTggMTMuODg0NSA3LjY5MTM0IDEzLjk2MTlDNy41MDQ1IDE0LjAzOTMgNy4yODk0NSAxMy45OTY2IDcuMTQ2NDUgMTMuODUzNkwzLjE0NjQ1IDkuODUzNTVDMy4wNTI2OCA5Ljc1OTc5IDMgOS42MzI2MSAzIDkuNVY1LjVDMyA1LjIyMzg2IDMuMjIzODYgNSAzLjUgNUg2LjM2NTMxTDMuNDcxMDUgMS44MzQ2OEMzLjMzNzMyIDEuNjg4NDQgMy4zMDI1OSAxLjQ3NzAxIDMuMzgyNSAxLjI5NTY3Wk03LjcyMDMyIDVMNC45NzQ3NCAxLjk5NzI4SDExVjVINy43MjAzMlpNNy4yNzk3OCA2SDRWOUg3LjVIMTAuMDI0N0w3LjI3OTc4IDZaTTQuNzA3MTEgMTBMNyAxMi4yOTI5VjEwSDQuNzA3MTFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxCdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4wNzA5NSAwLjY1MDIzOEM2LjY3MzkxIDAuNjUwMjM4IDYuMzI5NzcgMC45MjUwOTYgNi4yNDE5OCAxLjMxMjMxTDYuMDAzOSAyLjM2MjQ3QzUuNjI0OSAyLjQ3MjY5IDUuMjYzMzUgMi42MjM2MyA0LjkyNDM2IDIuODEwMTNMNC4wMTMzNSAyLjIzNTg1QzMuNjc3NDggMi4wMjQxMyAzLjIzOTc4IDIuMDczMTIgMi45NTkwMyAyLjM1Mzg2TDIuMzUyOTQgMi45NTk5NkMyLjA3MjIgMy4yNDA3IDIuMDIzMiAzLjY3ODQgMi4yMzQ5MyA0LjAxNDI3TDIuODA5NDIgNC45MjU2MUMyLjYyMzA3IDUuMjY0NSAyLjQ3MjI3IDUuNjI1OTQgMi4zNjIxNiA2LjAwNDgxTDEuMzEyMDkgNi4yNDI4N0MwLjkyNDg4MyA2LjMzMDY1IDAuNjUwMDI0IDYuNjc0OCAwLjY1MDAyNCA3LjA3MTgzVjcuOTI4OTdDMC42NTAwMjQgOC4zMjYwMSAwLjkyNDg4MyA4LjY3MDE1IDEuMzEyMDkgOC43NTc5NEwyLjM2MjI4IDguOTk2MDNDMi40NzI0NiA5LjM3NSAyLjYyMzM1IDkuNzM2NTIgMi44MDk3OSAxMC4wNzU1TDIuMjM1NCAxMC45ODY3QzIuMDIzNjcgMTEuMzIyNSAyLjA3MjY3IDExLjc2MDIgMi4zNTM0MSAxMi4wNDFMMi45NTk1MSAxMi42NDcxQzMuMjQwMjUgMTIuOTI3OCAzLjY3Nzk1IDEyLjk3NjggNC4wMTM4MiAxMi43NjUxTDQuOTI1MDYgMTIuMTkwN0M1LjI2Mzg0IDEyLjM3NyA1LjYyNTE2IDEyLjUyNzggNi4wMDM5IDEyLjYzNzlMNi4yNDE5OCAxMy42ODgxQzYuMzI5NzcgMTQuMDc1MyA2LjY3MzkxIDE0LjM1MDIgNy4wNzA5NSAxNC4zNTAySDcuOTI4MDlDOC4zMjUxMiAxNC4zNTAyIDguNjY5MjcgMTQuMDc1MyA4Ljc1NzA1IDEzLjY4ODFMOC45OTUwNSAxMi42MzgzQzkuMzc0MTEgMTIuNTI4MiA5LjczNTczIDEyLjM3NzMgMTAuMDc0OCAxMi4xOTA5TDEwLjk4NiAxMi43NjUzQzExLjMyMTggMTIuOTc3IDExLjc1OTUgMTIuOTI4IDEyLjA0MDMgMTIuNjQ3M0wxMi42NDY0IDEyLjA0MTJDMTIuOTI3MSAxMS43NjA0IDEyLjk3NjEgMTEuMzIyNyAxMi43NjQ0IDEwLjk4NjlMMTIuMTkwMiAxMC4wNzZDMTIuMzc2OCA5LjczNjg4IDEyLjUyNzggOS4zNzUxNSAxMi42MzggOC45OTU5NkwxMy42ODc5IDguNzU3OTRDMTQuMDc1MSA4LjY3MDE1IDE0LjM1IDguMzI2MDEgMTQuMzUgNy45Mjg5N1Y3LjA3MTgzQzE0LjM1IDYuNjc0OCAxNC4wNzUxIDYuMzMwNjUgMTMuNjg3OSA2LjI0Mjg3TDEyLjYzODEgNi4wMDQ4OEMxMi41MjggNS42MjU3OCAxMi4zNzcxIDUuMjY0MTQgMTIuMTkwNiA0LjkyNTA3TDEyLjc2NDggNC4wMTQwN0MxMi45NzY2IDMuNjc4MiAxMi45Mjc2IDMuMjQwNSAxMi42NDY4IDIuOTU5NzVMMTIuMDQwNyAyLjM1MzY2QzExLjc2IDIuMDcyOTIgMTEuMzIyMyAyLjAyMzkyIDEwLjk4NjQgMi4yMzU2NUwxMC4wNzU1IDIuODA5ODlDOS43MzYyMiAyLjYyMzI4IDkuMzc0MzcgMi40NzIyOSA4Ljk5NTA1IDIuMzYyMDlMOC43NTcwNSAxLjMxMjMxQzguNjY5MjcgMC45MjUwOTYgOC4zMjUxMiAwLjY1MDIzOCA3LjkyODA5IDAuNjUwMjM4SDcuMDcwOTVaTTQuOTIwNTMgMy44MTI1MUM1LjQ0NzI0IDMuNDQzMzkgNi4wNTY2NSAzLjE4NDI0IDYuNzE1NDMgMy4wNjgzOUw3LjA3MDk1IDEuNTAwMjRINy45MjgwOUw4LjI4MzU1IDMuMDY4MTZDOC45NDI2NyAzLjE4Mzg3IDkuNTUyNCAzLjQ0MzAyIDEwLjA3OTQgMy44MTIyNEwxMS40Mzk3IDIuOTU0N0wxMi4wNDU4IDMuNTYwNzlMMTEuMTg4MiA0LjkyMTE3QzExLjU1NzMgNS40NDc5OCAxMS44MTY0IDYuMDU3NSAxMS45MzIxIDYuNzE2MzhMMTMuNSA3LjA3MTgzVjcuOTI4OTdMMTEuOTMyIDguMjg0NDRDMTEuODE2MiA4Ljk0MzQyIDExLjU1NyA5LjU1MzAxIDExLjE4NzggMTAuMDc5OEwxMi4wNDUzIDExLjQ0MDJMMTEuNDM5MiAxMi4wNDYyTDEwLjA3ODcgMTEuMTg4NkM5LjU1MTkyIDExLjU1NzYgOC45NDI0MSAxMS44MTY2IDguMjgzNTUgMTEuOTMyM0w3LjkyODA5IDEzLjUwMDJINy4wNzA5NUw2LjcxNTQzIDExLjkzMkM2LjA1NjkgMTEuODE2MiA1LjQ0NzcyIDExLjU1NzIgNC45MjExNiAxMS4xODgzTDMuNTYwNTUgMTIuMDQ2TDIuOTU0NDUgMTEuNDM5OUwzLjgxMjEzIDEwLjA3OTRDMy40NDMxIDkuNTUyNjYgMy4xODQwMyA4Ljk0MzI2IDMuMDY4MjUgOC4yODQ1TDEuNTAwMDIgNy45Mjg5N1Y3LjA3MTgzTDMuMDY4MTggNi43MTYzMkMzLjE4Mzg4IDYuMDU3NjUgMy40NDI4MyA1LjQ0ODMzIDMuODExNzEgNC45MjE2NUwyLjk1Mzk4IDMuNTYxTDMuNTYwMDggMi45NTQ5MUw0LjkyMDUzIDMuODEyNTFaTTkuMDI0OTYgNy41MDAwOEM5LjAyNDk2IDguMzQyMjYgOC4zNDIyMyA5LjAyNDk5IDcuNTAwMDUgOS4wMjQ5OUM2LjY1Nzg2IDkuMDI0OTkgNS45NzUxMyA4LjM0MjI2IDUuOTc1MTMgNy41MDAwOEM1Ljk3NTEzIDYuNjU3ODkgNi42NTc4NiA1Ljk3NTE2IDcuNTAwMDUgNS45NzUxNkM4LjM0MjIzIDUuOTc1MTYgOS4wMjQ5NiA2LjY1Nzg5IDkuMDI0OTYgNy41MDAwOFpNOS45MjQ5NiA3LjUwMDA4QzkuOTI0OTYgOC44MzkzMiA4LjgzOTI5IDkuOTI0OTkgNy41MDAwNSA5LjkyNDk5QzYuMTYwOCA5LjkyNDk5IDUuMDc1MTMgOC44MzkzMiA1LjA3NTEzIDcuNTAwMDhDNS4wNzUxMyA2LjE2MDg0IDYuMTYwOCA1LjA3NTE2IDcuNTAwMDUgNS4wNzUxNkM4LjgzOTI5IDUuMDc1MTYgOS45MjQ5NiA2LjE2MDg0IDkuOTI0OTYgNy41MDAwOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFR0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTM2IDAuODUwMDA2QzMuODI3NjcgMC44NTAwMDYgMC44NDk5NzYgMy44MjczIDAuODQ5OTc2IDcuNTAwMjNDMC44NDk5NzYgMTAuNDM3OSAyLjc1NTIzIDEyLjkzMDYgNS4zOTc3NSAxMy44MTA0QzUuNzMwNDcgMTMuODcxMiA1Ljg1MTcxIDEzLjY2NTggNS44NTE3MSAxMy40ODk1QzUuODUxNzEgMTMuMzMxNSA1Ljg0NiAxMi45MTM1IDUuODQyNzMgMTIuMzU4N0MzLjk5MzAxIDEyLjc2MDQgMy42MDI3MyAxMS40NjcxIDMuNjAyNzMgMTEuNDY3MUMzLjMwMDIyIDEwLjY5ODggMi44NjQyMyAxMC40OTQyIDIuODY0MjMgMTAuNDk0MkMyLjI2MDQ0IDEwLjA4MTkgMi45MDk5NSAxMC4wOTAxIDIuOTA5OTUgMTAuMDkwMUMzLjU3NzQyIDEwLjEzNyAzLjkyODUgMTAuNzc1NSAzLjkyODUgMTAuNzc1NUM0LjUyMTY3IDExLjc5MTYgNS40ODUxMiAxMS40OTgxIDUuODYzOTYgMTEuMzI3OUM1LjkyNDM4IDEwLjg5ODQgNi4wOTYyNSAxMC42MDUzIDYuMjg2MDggMTAuNDM5MUM0LjgwOTQ4IDEwLjI3MDkgMy4yNTY5NSA5LjcwMDYzIDMuMjU2OTUgNy4xNTI0MUMzLjI1Njk1IDYuNDI2MTUgMy41MTYxOCA1LjgzMjk4IDMuOTQxNTcgNS4zNjhDMy44NzI5OSA1LjE5OTggMy42NDQ3OCA0LjUyMzc1IDQuMDA2ODkgMy42MDgwN0M0LjAwNjg5IDMuNjA4MDcgNC41NjQ5NCAzLjQyOTI2IDUuODM1MzggNC4yODk0MUM2LjM2NTY4IDQuMTQyMDQgNi45MzQ3NyA0LjA2ODU2IDcuNTAwMTggNC4wNjU3QzguMDY1MTggNC4wNjg1NiA4LjYzMzg2IDQuMTQyMDQgOS4xNjQ5OCA0LjI4OTQxQzEwLjQzNDYgMy40MjkyNiAxMC45OTE4IDMuNjA4MDcgMTAuOTkxOCAzLjYwODA3QzExLjM1NDggNC41MjM3NSAxMS4xMjY2IDUuMTk5OCAxMS4wNTg0IDUuMzY4QzExLjQ4NDYgNS44MzI5OCAxMS43NDE4IDYuNDI2MTUgMTEuNzQxOCA3LjE1MjQxQzExLjc0MTggOS43MDcxNiAxMC4xODY4IDEwLjI2OTMgOC43MDU3MSAxMC40MzM4QzguOTQ0MTIgMTAuNjM5MiA5LjE1NjgxIDExLjA0NSA5LjE1NjgxIDExLjY2NTVDOS4xNTY4MSAxMi41NTQyIDkuMTQ4NjUgMTMuMjcxNSA5LjE0ODY1IDEzLjQ4OTVDOS4xNDg2NSAxMy42Njc1IDkuMjY4NjcgMTMuODc0NSA5LjYwNTg4IDEzLjgwOTVDMTIuMjQ2NCAxMi45MjgyIDE0LjE1IDEwLjQzNzUgMTQuMTUgNy41MDAyM0MxNC4xNSAzLjgyNzMgMTEuMTcyMyAwLjg1MDAwNiA3LjQ5OTM2IDAuODUwMDA2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sJHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTYgMS44MDAwMkM0LjM1MTk0IDEuODAwMDIgMS43OTk5NiA0LjM1MiAxLjc5OTk2IDcuNTAwMDJDMS43OTk5NiAxMC42NDggNC4zNTE5NCAxMy4yIDcuNDk5OTYgMTMuMkMxMC42NDggMTMuMiAxMy4yIDEwLjY0OCAxMy4yIDcuNTAwMDJDMTMuMiA0LjM1MiAxMC42NDggMS44MDAwMiA3LjQ5OTk2IDEuODAwMDJaTTAuODk5OTYzIDcuNTAwMDJDMC44OTk5NjMgMy44NTQ5NCAzLjg1NDg4IDAuOTAwMDI0IDcuNDk5OTYgMC45MDAwMjRDMTEuMTQ1IDAuOTAwMDI0IDE0LjEgMy44NTQ5NCAxNC4xIDcuNTAwMDJDMTQuMSAxMS4xNDUxIDExLjE0NSAxNC4xIDcuNDk5OTYgMTQuMUMzLjg1NDg4IDE0LjEgMC44OTk5NjMgMTEuMTQ1MSAwLjg5OTk2MyA3LjUwMDAyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuNDk5OSA3Ljg5OTk4SDEuNDk5OTRWNy4wOTk5OEgxMy40OTk5VjcuODk5OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjA5OTkxIDEzLjVWMS41SDcuODk5OTFWMTMuNUg3LjA5OTkxek0xMC4zNzUgNy40OTk5OEMxMC4zNzUgNS4zMjcyNCA5LjU5MzY0IDMuMTc3NzggOC4wNjE4MyAxLjc1NjU2TDguNTM3OTMgMS4yNDM0MUMxMC4yMzk2IDIuODIyMTggMTEuMDc1IDUuMTcyNzMgMTEuMDc1IDcuNDk5OTggMTEuMDc1IDkuODI3MjQgMTAuMjM5NiAxMi4xNzc4IDguNTM3OTMgMTMuNzU2Nkw4LjA2MTgzIDEzLjI0MzRDOS41OTM2NCAxMS44MjIyIDEwLjM3NSA5LjY3MjczIDEwLjM3NSA3LjQ5OTk4ek0zLjk5OTY5IDcuNUMzLjk5OTY5IDUuMTc2MTEgNC44MDc4NiAyLjgyNjc4IDYuNDU3NjggMS4yNDcxOUw2Ljk0MTc3IDEuNzUyODFDNS40NTgyIDMuMTczMjMgNC42OTk2OSA1LjMyMzg5IDQuNjk5NjkgNy41IDQuNjk5NyA5LjY3NjExIDUuNDU4MjIgMTEuODI2OCA2Ljk0MTc5IDEzLjI0NzJMNi40NTc2OSAxMy43NTI4QzQuODA3ODggMTIuMTczMiAzLjk5OTcgOS44MjM5IDMuOTk5NjkgNy41elwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5NiAzLjk1ODAxQzkuNjY5MjggMy45NTgwMSAxMS44NzUzIDQuMzU5MTUgMTMuMzcwNiA1LjE5NDQ4IDEzLjUzOTQgNS4yODg3NSAxMy41OTk4IDUuNTAxOTcgMTMuNTA1NSA1LjY3MDczIDEzLjQxMTMgNS44Mzk0OCAxMy4xOTggNS44OTk4NyAxMy4wMjkzIDUuODA1NiAxMS42Nzk0IDUuMDUxNTUgOS42MDc5OSA0LjY1ODAxIDcuNDk5OTYgNC42NTgwMSA1LjM5MTkyIDQuNjU4MDEgMy4zMjA1MiA1LjA1MTU1IDEuOTcwNjQgNS44MDU2IDEuODAxODggNS44OTk4NyAxLjU4ODY2IDUuODM5NDggMS40OTQzOSA1LjY3MDczIDEuNDAwMTMgNS41MDE5NyAxLjQ2MDUxIDUuMjg4NzUgMS42MjkyNyA1LjE5NDQ4IDMuMTI0NjYgNC4zNTkxNSA1LjMzMDYzIDMuOTU4MDEgNy40OTk5NiAzLjk1ODAxek03LjQ5OTk2IDEwLjg1QzkuNjY5MjggMTAuODUgMTEuODc1MyAxMC40NDg4IDEzLjM3MDYgOS42MTM1IDEzLjUzOTQgOS41MTkyNCAxMy41OTk4IDkuMzA2MDEgMTMuNTA1NSA5LjEzNzI2IDEzLjQxMTMgOC45Njg1IDEzLjE5OCA4LjkwODEyIDEzLjAyOTMgOS4wMDIzOCAxMS42Nzk0IDkuNzU2NDMgOS42MDc5OSAxMC4xNSA3LjQ5OTk2IDEwLjE1IDUuMzkxOTIgMTAuMTUgMy4zMjA1MiA5Ljc1NjQzIDEuOTcwNjQgOS4wMDIzOSAxLjgwMTg4IDguOTA4MTIgMS41ODg2NiA4Ljk2ODUgMS40OTQzOSA5LjEzNzI2IDEuNDAwMTMgOS4zMDYwMSAxLjQ2MDUxIDkuNTE5MjQgMS42MjkyNyA5LjYxMzUgMy4xMjQ2NiAxMC40NDg4IDUuMzMwNjMgMTAuODUgNy40OTk5NiAxMC44NXpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEZ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi41IDJIOFY3SDEzVjIuNUMxMyAyLjIyMzg2IDEyLjc3NjEgMiAxMi41IDJaTTEzIDhIOFYxM0gxMi41QzEyLjc3NjEgMTMgMTMgMTIuNzc2MSAxMyAxMi41VjhaTTcgN1YySDIuNUMyLjIyMzg2IDIgMiAyLjIyMzg2IDIgMi41VjdIN1pNMiA4VjEyLjVDMiAxMi43NzYxIDIuMjIzODYgMTMgMi41IDEzSDdWOEgyWk0yLjUgMUMxLjY3MTU3IDEgMSAxLjY3MTU3IDEgMi41VjEyLjVDMSAxMy4zMjg0IDEuNjcxNTcgMTQgMi41IDE0SDEyLjVDMTMuMzI4NCAxNCAxNCAxMy4zMjg0IDE0IDEyLjVWMi41QzE0IDEuNjcxNTcgMTMuMzI4NCAxIDEyLjUgMUgyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxXdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS40NDk5NSAwLjk0OTk1MUMxLjMxNzM0IDAuOTQ5OTUxIDEuMTkwMTYgMS4wMDI2MyAxLjA5NjQgMS4wOTY0QzEuMDAyNjMgMS4xOTAxNyAwLjk0OTk1MSAxLjMxNzM1IDAuOTQ5OTUxIDEuNDQ5OTVMMC45NDk5NjYgMy40NDk5NUMwLjk0OTk2OSAzLjcyNjEgMS4xNzM4MyAzLjk0OTk1IDEuNDQ5OTcgMy45NDk5NUMxLjcyNjExIDMuOTQ5OTUgMS45NDk5NyAzLjcyNjA5IDEuOTQ5OTcgMy40NDk5NUwxLjk0OTk1IDEuOTQ5OTVIMy40NDk5N0MzLjcyNjExIDEuOTQ5OTUgMy45NDk5NyAxLjcyNjA5IDMuOTQ5OTcgMS40NDk5NUMzLjk0OTk3IDEuMTczODEgMy43MjYxMSAwLjk0OTk1MSAzLjQ0OTk3IDAuOTQ5OTUxSDEuNDQ5OTVaTTUuOTQ5OTUgMC45NDk5NTFDNS42NzM4MSAwLjk0OTk1MSA1LjQ0OTk1IDEuMTczODEgNS40NDk5NSAxLjQ0OTk1QzUuNDQ5OTUgMS43MjYwOSA1LjY3MzgxIDEuOTQ5OTUgNS45NDk5NSAxLjk0OTk1SDguOTQ5OTVDOS4yMjYwOSAxLjk0OTk1IDkuNDQ5OTUgMS43MjYwOSA5LjQ0OTk1IDEuNDQ5OTVDOS40NDk5NSAxLjE3MzgxIDkuMjI2MDkgMC45NDk5NTEgOC45NDk5NSAwLjk0OTk1MUg1Ljk0OTk1Wk01LjQ0OTk1IDEzLjQ1QzUuNDQ5OTUgMTMuMTczOCA1LjY3MzgxIDEyLjk1IDUuOTQ5OTUgMTIuOTVIOC45NDk5NUM5LjIyNjA5IDEyLjk1IDkuNDQ5OTUgMTMuMTczOCA5LjQ0OTk1IDEzLjQ1QzkuNDQ5OTUgMTMuNzI2MSA5LjIyNjA5IDEzLjk1IDguOTQ5OTUgMTMuOTVINS45NDk5NUM1LjY3MzgxIDEzLjk1IDUuNDQ5OTUgMTMuNzI2MSA1LjQ0OTk1IDEzLjQ1Wk0xLjk0OTk1IDUuOTQ5OTVDMS45NDk5NSA1LjY3MzgxIDEuNzI2MDkgNS40NDk5NSAxLjQ0OTk1IDUuNDQ5OTVDMS4xNzM4MSA1LjQ0OTk1IDAuOTQ5OTUxIDUuNjczODEgMC45NDk5NTEgNS45NDk5NVY4Ljk0OTk1QzAuOTQ5OTUxIDkuMjI2MDkgMS4xNzM4MSA5LjQ0OTk1IDEuNDQ5OTUgOS40NDk5NUMxLjcyNjA5IDkuNDQ5OTUgMS45NDk5NSA5LjIyNjA5IDEuOTQ5OTUgOC45NDk5NVY1Ljk0OTk1Wk0xMy40NSA1LjQ0OTk1QzEzLjcyNjEgNS40NDk5NSAxMy45NSA1LjY3MzgxIDEzLjk1IDUuOTQ5OTVWOC45NDk5NUMxMy45NSA5LjIyNjA5IDEzLjcyNjEgOS40NDk5NSAxMy40NSA5LjQ0OTk1QzEzLjE3MzggOS40NDk5NSAxMi45NSA5LjIyNjA5IDEyLjk1IDguOTQ5OTVWNS45NDk5NUMxMi45NSA1LjY3MzgxIDEzLjE3MzggNS40NDk5NSAxMy40NSA1LjQ0OTk1Wk0xMS40NSAwLjk0OTk1MUMxMS4xNzM4IDAuOTQ5OTUxIDEwLjk1IDEuMTczODEgMTAuOTUgMS40NDk5NUMxMC45NSAxLjcyNjA5IDExLjE3MzggMS45NDk5NSAxMS40NSAxLjk0OTk1SDEyLjk0OTlWMy40NDk5NUMxMi45NDk5IDMuNzI2MDkgMTMuMTczOCAzLjk0OTk1IDEzLjQ0OTkgMy45NDk5NUMxMy43MjYxIDMuOTQ5OTUgMTMuOTQ5OSAzLjcyNjA5IDEzLjk0OTkgMy40NDk5NVYxLjQ0OTk1QzEzLjk0OTkgMS4xNzM4MSAxMy43MjUyIDAuOTQ5OTUxIDEzLjQ0OSAwLjk0OTk1MUgxMS40NVpNMS40NDk5NSAxMC45NUMxLjcyNjA5IDEwLjk1IDEuOTQ5OTUgMTEuMTczOCAxLjk0OTk1IDExLjQ1VjEyLjk1SDMuNDQ5OTdDMy43MjYxMSAxMi45NSAzLjk0OTk3IDEzLjE3MzggMy45NDk5NyAxMy40NUMzLjk0OTk3IDEzLjcyNjEgMy43MjYxMSAxMy45NSAzLjQ0OTk3IDEzLjk1SDEuNDQ5OTVDMS4xNzM4MSAxMy45NSAwLjk0OTk1MSAxMy43MjYxIDAuOTQ5OTUxIDEzLjQ1VjExLjQ1QzAuOTQ5OTUxIDExLjE3MzggMS4xNzM4MSAxMC45NSAxLjQ0OTk1IDEwLjk1Wk0xMy45NSAxMS40NUMxMy45NSAxMS4xNzM4IDEzLjcyNjEgMTAuOTUgMTMuNDUgMTAuOTVDMTMuMTczOCAxMC45NDk5IDEyLjk1IDExLjE3MzggMTIuOTUgMTEuNDQ5OUwxMi45NDkxIDEyLjk1SDExLjQ1QzExLjE3MzggMTIuOTUgMTAuOTUgMTMuMTczOCAxMC45NSAxMy40NUMxMC45NSAxMy43MjYxIDExLjE3MzggMTMuOTUgMTEuNDUgMTMuOTVIMTMuNDQ5OUMxMy43MjYxIDEzLjk1IDEzLjk0OTkgMTMuNzI2MSAxMy45NDk5IDEzLjQ1TDEzLjk1IDExLjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzY4OTJDMy44NDIyMiAwLjg3Njg5MiAwLjg3NzA3NSAzLjg0MjA0IDAuODc3MDc1IDcuNDk5NzJDMC44NzcwNzUgMTEuMTU3NCAzLjg0MjIyIDE0LjEyMjYgNy40OTk5MSAxNC4xMjI2QzExLjE1NzYgMTQuMTIyNiAxNC4xMjI3IDExLjE1NzQgMTQuMTIyNyA3LjQ5OTcyQzE0LjEyMjcgMy44NDIwNCAxMS4xNTc2IDAuODc2ODkyIDcuNDk5OTEgMC44NzY4OTJaTTcuMDAwMDMgMS44NDg2MUM0LjEwMTE0IDIuMTAxNyAxLjgyNzA3IDQuNTM1MTUgMS44MjcwNyA3LjQ5OTcyQzEuODI3MDcgMTAuNDY0MyA0LjEwMTE0IDEyLjg5NzcgNy4wMDAwMyAxMy4xNTA4VjEuODQ4NjFaTTguMDAwMDMgMTMuMTUwOEMxMC44OTg4IDEyLjg5NzYgMTMuMTcyNyAxMC40NjQyIDEzLjE3MjcgNy40OTk3MkMxMy4xNzI3IDQuNTM1MjQgMTAuODk4OCAyLjEwMTg1IDguMDAwMDMgMS44NDg2NFYxMy4xNTA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0senQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzY4OTJDMy44NDIyMiAwLjg3Njg5MiAwLjg3NzA3NSAzLjg0MjA0IDAuODc3MDc1IDcuNDk5NzJDMC44NzcwNzUgMTEuMTU3NCAzLjg0MjIyIDE0LjEyMjYgNy40OTk5MSAxNC4xMjI2QzExLjE1NzYgMTQuMTIyNiAxNC4xMjI3IDExLjE1NzQgMTQuMTIyNyA3LjQ5OTcyQzE0LjEyMjcgMy44NDIwNCAxMS4xNTc2IDAuODc2ODkyIDcuNDk5OTEgMC44NzY4OTJaTTcuNDk5ODggMS44MjY4OUM0LjM2Njg4IDEuODI2OSAxLjgyNzA3IDQuMzY2NzIgMS44MjcwNyA3LjQ5OTcyQzEuODI3MDcgMTAuNjMyNyA0LjM2Njg4IDEzLjE3MjUgNy40OTk4OCAxMy4xNzI2VjEuODI2ODlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxVdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41IDNDMS4yMjM4NiAzIDEgMy4yMjM4NiAxIDMuNUMxIDMuNzc2MTQgMS4yMjM4NiA0IDEuNSA0SDEzLjVDMTMuNzc2MSA0IDE0IDMuNzc2MTQgMTQgMy41QzE0IDMuMjIzODYgMTMuNzc2MSAzIDEzLjUgM0gxLjVaTTEgNy41QzEgNy4yMjM4NiAxLjIyMzg2IDcgMS41IDdIMTMuNUMxMy43NzYxIDcgMTQgNy4yMjM4NiAxNCA3LjVDMTQgNy43NzYxNCAxMy43NzYxIDggMTMuNSA4SDEuNUMxLjIyMzg2IDggMSA3Ljc3NjE0IDEgNy41Wk0xIDExLjVDMSAxMS4yMjM5IDEuMjIzODYgMTEgMS41IDExSDEzLjVDMTMuNzc2MSAxMSAxNCAxMS4yMjM5IDE0IDExLjVDMTQgMTEuNzc2MSAxMy43NzYxIDEyIDEzLjUgMTJIMS41QzEuMjIzODYgMTIgMSAxMS43NzYxIDEgMTEuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEd0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02LjgxMTMgMS42NDcwNkM2LjYyMTg4IDIuODc5MTggNi42ODI2OCAzLjg4NTIzIDYuNzY4NDggNS4zMDQ5OUM2Ljc4NDE1IDUuNTY0MjYgNi44MDA2NSA1LjgzNzMyIDYuODE2NjEgNi4xMjgwOEM2LjgzMTExIDYuMzkyMDggNi42Mzc1OCA2LjYyMTcyIDYuMzc0OTUgNi42NTIxN0M2LjExMjMyIDYuNjgyNjIgNS44NzEzOCA2LjUwMzM0IDUuODI1MDkgNi4yNDMwNEw1Ljc0NzU0IDUuODA2OThDNS42NDQwMiA1LjE2NTI5IDUuNDgzNTUgNC4yNTQ4MSA1LjE3ODA3IDMuNDQ3NDFDNC44NjI0MSAyLjYxMzEyIDQuNDQ4NiAyLjA0MTIxIDMuOTM0MzYgMS44NjA0NEMzLjY0OTk0IDEuNzYxMDQgMy40MTkwMSAxLjg0Mjc5IDMuMjU4NjggMi4wMTA1MkMzLjA4NzQ2IDIuMTg5NjIgMi45OTc2IDIuNDcwNjUgMy4wNjI3IDIuNzUzOTlDMy4yMTQ2IDMuMzQ0MjQgMy40NDYyNyAzLjkxNjcgMy42OTgzNiA0LjUxODAyQzMuNzIwODIgNC41NzE1OCAzLjc0MzQ2IDQuNjI1NDMgMy43NjYyMSA0LjY3OTU0QzMuOTk1NCA1LjIyNDU3IDQuMjM2MTkgNS43OTcyIDQuNDE2NDQgNi4zOTA4MUw0LjQxNjkxIDYuMzkyMzhDNC41NjIgNi44NzU4NiA0LjY1NjQ2IDcuMjU5NSA0LjczMDg2IDcuNTYxNjVDNC43NjAzNCA3LjY4MTM4IDQuNzg2NjcgNy43ODgzMSA0LjgxMTc1IDcuODgzNTlDNC44Njc2OCA4LjA5NjA2IDQuNzc4MzYgOC4zMjAxNCA0LjU5MTYxIDguNDM1ODhDNC40MDQ4NiA4LjU1MTYxIDQuMTY0NDUgOC41MzE4OCAzLjk5OTA3IDguMzg3MjVDMy43Mzc0OSA4LjE1ODQ4IDMuNTE1IDcuOTI3ODQgMy4zMTgxNyA3LjcxODAyQzMuMjc2MjcgNy42NzMzNSAzLjIzNjAyIDcuNjMwMTggMy4xOTcwNSA3LjU4ODM4QzMuMDQ3NzcgNy40MjgyNiAyLjkxNzEyIDcuMjg4MTIgMi43ODMzNCA3LjE2MDI5QzIuNDU5ODkgNi44NTEyMiAyLjE4Mzk4IDYuNjgwMDQgMS44MDU4NSA2LjY0MzY5TDEuODAzMjQgNi42NDM0M0MxLjU2MTE3IDYuNjE4ODggMS40MTQwMiA2LjY2NDQxIDEuMzE3NTYgNi43MjYyN0MxLjIxODk5IDYuNzg5NDcgMS4xMTk4OCA2LjkwNDE0IDEuMDM3ODQgNy4xMTIzQzAuOTc2NTc2IDcuMjg0OTIgMS4wMTUxNSA3LjYyOTg3IDEuMTkyOSA3Ljk2OTExTDEuMTk3MjggNy45Nzc0N0MxLjQwMDg2IDguMzg0NTIgMS43NDQ3NSA4LjgxNTg3IDIuMTgxNDEgOS4yOTI5OUMyLjM5NzM5IDkuNTI4OTggMi42Mjg3MiA5Ljc2ODQ5IDIuODY5MzQgMTAuMDE3NEwyLjg3OTY2IDEwLjAyODFDMy4xMTU0NiAxMC4yNzIxIDMuMzU5NjIgMTAuNTI0NyAzLjU5NzEzIDEwLjc4MjdDNC40Mjg4IDExLjY4NjMgNS4yNzcwNiAxMi43NTM4IDUuNDYyNyAxNEgxMS41MDg3QzExLjU2MzYgMTIuNDM1MyAxMS44NzU2IDExLjI2OCAxMi4yODc1IDEwLjEzNDZDMTIuNDQ1NCA5LjcwMDQxIDEyLjYxMjEgOS4yODQxMiAxMi43ODI2IDguODU4MjlDMTMuMTA5NyA4LjA0MTM5IDEzLjQ1MDkgNy4xODkzNyAxMy43NzA1IDYuMTA4MjRDMTQuMDk4OSA0Ljk5NzM3IDE0LjAwOTcgNC4zNzAzMyAxMy44NjEzIDQuMDM5ODRDMTMuNzE3IDMuNzE4NTggMTMuNDkxNCAzLjYxNzg2IDEzLjM4MTYgMy41OTYwNkMxMy4xMzgxIDMuNTQ3NzQgMTMuMDM4NCAzLjYwOTQ3IDEyLjk2OTggMy42NzkwMUMxMi44NjcgMy43ODMxNiAxMi43Njk4IDMuOTgyNzMgMTIuNjkyMSA0LjMwMjY5QzEyLjYxNjYgNC42MTM0NSAxMi41NzUyIDQuOTY1MTcgMTIuNTMzIDUuMzI1MDFMMTIuNTI5OCA1LjM1Mjg1QzEyLjQ5MjQgNS42NzI0MiAxMi40NTA1IDYuMDMwMTYgMTIuMzY2NSA2LjMwMDk4QzEyLjMzODMgNi40MDY5OSAxMi4yODE5IDYuNTA0MDcgMTIuMTk3OSA2LjU3NTM5QzEyLjEzODIgNi42MjYxIDEyLjAxMDQgNi43MDgxOCAxMS44MzA5IDYuNjkzMTJDMTEuNTQyNCA2LjY2ODkxIDExLjM3MTIgNi40MjE0MyAxMS4zNjUgNi4xNDc4M0MxMS4zNTYgNS43NTQ1NCAxMS4zODgzIDUuMzU4NjQgMTEuNDA3NCA0Ljk2NjA4QzExLjQ0MjggNC4yMzY0NiAxMS40NzcgMy41MzM3IDExLjQyNDUgMi44MzQyTDExLjQyNDIgMi44MjkzNEMxMS4zOTE2IDIuMzI5OTcgMTEuMDQ5MyAyLjAwMjI4IDEwLjcwMDcgMS45MjI4QzEwLjUzMDUgMS44ODQwMSAxMC4zNjkgMS45MDYwMSAxMC4yMzQ3IDEuOTgzNUMxMC4xMDMgMi4wNTk0NiA5Ljk1NTM1IDIuMjEzMTggOS44NTc0IDIuNTEzOTRMOS44NTYzMSAyLjUxNzI2QzkuODE1MjUgMi42NDA0IDkuNzcyOTggMi44Nzc1MyA5LjczNjA2IDMuMjEyNEM5LjcwMDQ0IDMuNTM1NDIgOS42NzMzNyAzLjkxMjc5IDkuNjUxNTYgNC4yOTQxOEM5LjYzMjkgNC42MjAzMyA5LjYxNzg1IDQuOTU4NCA5LjYwNDM0IDUuMjYxOTRDOS41ODcyOCA1LjY0NTI5IDkuNTcyNjcgNS45NzM1NyA5LjU1NjMzIDYuMTUzMkM5LjU0OTgzIDYuMjI0NTkgOS41MjkzOSA2LjI5NDkzIDkuNDk1MDEgNi4zNTc4NUM5LjQ3MzU2IDYuMzk3MTEgOS4zNjExNSA2LjYwOTQ3IDkuMDcxMDYgNi42MTg0M0M4Ljc3OTE3IDYuNjI3NDQgOC42Mzk3NSA2LjQwMDU3IDguNjE2OTggNi4zNTkxOUM4LjU1NjM0IDYuMjQ4OTkgOC41NTA2NiA2LjExODA3IDguNTQ3NTQgNS45OTI4M0M4LjU0NDc0IDUuODgwNjQgOC41NDI5NCA1LjcxNzk4IDguNTQxNzQgNS41NDc2N0M4LjUzOTM1IDUuMjA1ODIgOC41MzkzNSA0LjgxOTE5IDguNTM5MzUgNC43MDk1MkM4LjUzOTM1IDMuNjY1NyA4LjUzODM4IDIuNjUzNzIgOC40NDcxNCAxLjY0MzcyQzguMzkxODMgMS4yNDEyNyA4LjA2Mjc4IDEuMDA0NTUgNy42NDM2IDEuMDAwMDVDNy4yMjM5OSAwLjk5NTU1MiA2Ljg3OTE4IDEuMjI3MDQgNi44MTEzIDEuNjQ3MDZaTTkuNDEyMTkgMS4zNjE3QzkuMjE0NjkgMC40NDg0ODQgOC4zOTkxMyAwLjAwODEwMzI0IDcuNjU0MzMgMC4wMDAxMTE1NEM2Ljg2NDUyIC0wLjAwODM2MzA4IDUuOTg3NjEgMC40NjU4ODEgNS44MjM2NSAxLjQ5MDM3TDUuODIzMTggMS40OTMzNEM1Ljc4MjM5IDEuNzU4NCA1Ljc1MjI5IDIuMDE0ODEgNS43MzA5IDIuMjY2NTJDNS4zOTQyMyAxLjY3MzY0IDQuOTI2MjIgMS4xNDg5NCA0LjI2NTUgMC45MTY4NTlDMy41ODY2MSAwLjY3OTMxMiAyLjk0OTIgMC44ODcwODcgMi41MzU4MiAxLjMxOTUyQzIuMTM0MTUgMS43Mzk3MSAxLjk0NDM4IDIuMzY3NDIgMi4wOTAzMSAyLjk4NzQ2TDIuMDkyNjkgMi45OTcxM0MyLjI2NDc4IDMuNjY4MDggMi41MjM5NiA0LjMwMzE2IDIuNzc2MTMgNC45MDQ2NUMyLjc5ODE0IDQuOTU3MTcgMi44MjAxIDUuMDA5NDEgMi44NDE5NCA1LjA2MTM5QzMuMDIxMzkgNS40ODg0MiAzLjE5Mzc4IDUuODk4NjYgMy4zMzg3MSA2LjMxMjU2QzIuOTY0MDQgNS45ODE0MiAyLjUxOTI1IDUuNzA3OTYgMS45MDI3NiA1LjY0ODRDMS40ODg2NSA1LjYwNjYzIDEuMTAzOTEgNS42NzUzNiAwLjc3NzgwNSA1Ljg4NDQ0QzAuNDU0MjM5IDYuMDkxOSAwLjI0MDY3MSA2LjQwNDA1IDAuMTA0MTg3IDYuNzU0MDZMMC4xMDA4NjggNi43NjI4MUMtMC4xMDE4NCA3LjMxMjg2IDAuMDY2MzMxMiA3Ljk3MTU3IDAuMzA0ODk1IDguNDI4OTdDMC41NzM3MDQgOC45NjQ3NCAwLjk5NjEwNCA5LjQ3OTA0IDEuNDQzNzIgOS45NjgxM0MxLjY3MDQ2IDEwLjIxNTkgMS45MTEzNiAxMC40NjUyIDIuMTUwMzMgMTAuNzEyNEwyLjE1NjgyIDEwLjcxOTFDMi4zOTUyNCAxMC45NjU4IDIuNjMyMTcgMTEuMjEwOSAyLjg2MTM0IDExLjQ1OTlDMy44MDkzNyAxMi40OSA0LjUwMDAyIDEzLjQ2MzIgNC41MDAwMiAxNC41QzQuNTAwMDIgMTQuNzc2MSA0LjcyMzg4IDE1IDUuMDAwMDIgMTVIMTJDMTIuMjc2MiAxNSAxMi41IDE0Ljc3NjEgMTIuNSAxNC41QzEyLjUgMTIuODIxMiAxMi44MDIxIDExLjY0NjIgMTMuMjI3NCAxMC40NzYyQzEzLjM2NTMgMTAuMDk2OCAxMy41MjE2IDkuNzA1NzkgMTMuNjg2OCA5LjI5MjQ3QzE0LjAyMzggOC40NDkyMiAxNC4zOTggNy41MTI5OCAxNC43Mjk1IDYuMzkxNzVDMTUuMDk1NiA1LjE1MzI0IDE1LjA1NTkgNC4yNTkwNCAxNC43NzM1IDMuNjMwMTdDMTQuNDg3IDIuOTkyMDggMTMuOTc5OCAyLjY5NTMgMTMuNTc2MyAyLjYxNTJDMTMuMTI3NiAyLjUyNjE0IDEyLjczNjcgMi42MDQ3NSAxMi40MjY4IDIuODMwODFDMTIuNDI1MyAyLjgwNzczIDEyLjQyMzYgMi43ODQ2OCAxMi40MjE5IDIuNzYxNjdDMTIuMzU4NyAxLjgxMDUgMTEuNjkwNyAxLjEyMjg1IDEwLjkyMyAwLjk0NzgyMUMxMC41MzQ2IDAuODU5Mjg3IDEwLjExMTEgMC45MDAzOTMgOS43MzUwOSAxLjExNzI0QzkuNjE4NTIgMS4xODQ0NiA5LjUxMDU1IDEuMjY2MjMgOS40MTIxOSAxLjM2MTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxxdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC43NTQzMiAyLjA1MDJDOC41MDU3OSAyLjA1MDIgOC4zMDQzMiAyLjI1MTY3IDguMzA0MzIgMi41MDAyQzguMzA0MzIgMi43NDg3MyA4LjUwNTc5IDIuOTUwMiA4Ljc1NDMyIDIuOTUwMkg5Ljk0OTk3VjcuMDUwMDRINS4wNDk5N1YyLjk1MDJINi4yNTQzMkM2LjUwMjg1IDIuOTUwMiA2LjcwNDMyIDIuNzQ4NzMgNi43MDQzMiAyLjUwMDJDNi43MDQzMiAyLjI1MTY3IDYuNTAyODUgMi4wNTAyIDYuMjU0MzIgMi4wNTAySDIuNzU0MzJDMi41MDU3OSAyLjA1MDIgMi4zMDQzMiAyLjI1MTY3IDIuMzA0MzIgMi41MDAyQzIuMzA0MzIgMi43NDg3MyAyLjUwNTc5IDIuOTUwMiAyLjc1NDMyIDIuOTUwMkgzLjk0OTk3VjEyLjA1MDJIMi43NTQzMkMyLjUwNTc5IDEyLjA1MDIgMi4zMDQzMiAxMi4yNTE3IDIuMzA0MzIgMTIuNTAwMkMyLjMwNDMyIDEyLjc0ODcgMi41MDU3OSAxMi45NTAyIDIuNzU0MzIgMTIuOTUwMkg2LjI1NDMyQzYuNTAyODUgMTIuOTUwMiA2LjcwNDMyIDEyLjc0ODcgNi43MDQzMiAxMi41MDAyQzYuNzA0MzIgMTIuMjUxNyA2LjUwMjg1IDEyLjA1MDIgNi4yNTQzMiAxMi4wNTAySDUuMDQ5OTdWNy45NTAwNEg5Ljk0OTk3VjEyLjA1MDJIOC43NTQzMkM4LjUwNTc5IDEyLjA1MDIgOC4zMDQzMiAxMi4yNTE3IDguMzA0MzIgMTIuNTAwMkM4LjMwNDMyIDEyLjc0ODcgOC41MDU3OSAxMi45NTAyIDguNzU0MzIgMTIuOTUwMkgxMi4yNTQzQzEyLjUwMjggMTIuOTUwMiAxMi43MDQzIDEyLjc0ODcgMTIuNzA0MyAxMi41MDAyQzEyLjcwNDMgMTIuMjUxNyAxMi41MDI4IDEyLjA1MDIgMTIuMjU0MyAxMi4wNTAySDExLjA1VjIuOTUwMkgxMi4yNTQzQzEyLjUwMjggMi45NTAyIDEyLjcwNDMgMi43NDg3MyAxMi43MDQzIDIuNTAwMkMxMi43MDQzIDIuMjUxNjcgMTIuNTAyOCAyLjA1MDIgMTIuMjU0MyAyLjA1MDJIOC43NTQzMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFl0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjE4MTMgMS42ODE3OUM3LjM1NzA0IDEuNTA2MDUgNy42NDE5NiAxLjUwNjA1IDcuODE3NyAxLjY4MTc5TDEwLjMxNzcgNC4xODE3OUMxMC40OTM0IDQuMzU3NTMgMTAuNDkzNCA0LjY0MjQ1IDEwLjMxNzcgNC44MTgxOUMxMC4xNDIgNC45OTM5MiA5Ljg1NzA0IDQuOTkzOTIgOS42ODEzIDQuODE4MTlMNy45NDk1IDMuMDg2MzhMNy45NDk1IDExLjkxMzZMOS42ODEzIDEwLjE4MThDOS44NTcwNCAxMC4wMDYxIDEwLjE0MiAxMC4wMDYxIDEwLjMxNzcgMTAuMTgxOEMxMC40OTM0IDEwLjM1NzUgMTAuNDkzNCAxMC42NDI0IDEwLjMxNzcgMTAuODE4Mkw3LjgxNzcgMTMuMzE4MkM3LjczMzMxIDEzLjQwMjYgNy42MTg4NSAxMy40NSA3LjQ5OTUgMTMuNDVDNy4zODAxNSAxMy40NSA3LjI2NTY5IDEzLjQwMjYgNy4xODEzIDEzLjMxODJMNC42ODEzIDEwLjgxODJDNC41MDU1NyAxMC42NDI0IDQuNTA1NTcgMTAuMzU3NSA0LjY4MTMgMTAuMTgxOEM0Ljg1NzA0IDEwLjAwNjEgNS4xNDE5NiAxMC4wMDYxIDUuMzE3NyAxMC4xODE4TDcuMDQ5NSAxMS45MTM2TDcuMDQ5NSAzLjA4NjM4TDUuMzE3NyA0LjgxODE5QzUuMTQxOTYgNC45OTM5MiA0Ljg1NzA0IDQuOTkzOTIgNC42ODEzIDQuODE4MTlDNC41MDU1NyA0LjY0MjQ1IDQuNTA1NTcgNC4zNTc1MyA0LjY4MTMgNC4xODE3OUw3LjE4MTMgMS42ODE3OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEt0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjA3OTI2IDAuMjIyMjUzQzcuMzEyNzUgLTAuMDA3NDM0IDcuNjg3MyAtMC4wMDc0MzQgNy45MjA3OSAwLjIyMjI1M0wxNC42NzA4IDYuODYyMjdDMTQuOTA3IDcuMDk0NjUgMTQuOTEwMSA3LjQ3NDUzIDE0LjY3NzggNy43MTA3NkMxNC40NDU0IDcuOTQ3IDE0LjA2NTUgNy45NTAxMiAxMy44MjkzIDcuNzE3NzNMMTMgNi45MDIwMVYxMi41QzEzIDEyLjc3NjEgMTIuNzc2MiAxMyAxMi41IDEzSDIuNTAwMDJDMi4yMjM4OCAxMyAyLjAwMDAyIDEyLjc3NjEgMi4wMDAwMiAxMi41VjYuOTAyMDFMMS4xNzA3OSA3LjcxNzczQzAuOTM0NTU4IDcuOTUwMTIgMC41NTQ2NzIgNy45NDcgMC4zMjIyOSA3LjcxMDc2QzAuMDg5OTA3OSA3LjQ3NDUzIDAuMDkzMDI4MyA3LjA5NDY1IDAuMzI5MjYgNi44NjIyN0w3LjA3OTI2IDAuMjIyMjUzWk03LjUwMDAyIDEuNDkxNjNMMTIgNS45MTgzMVYxMkgxMFY4LjQ5OTk5QzEwIDguMjIzODUgOS43NzYxNyA3Ljk5OTk5IDkuNTAwMDIgNy45OTk5OUg2LjUwMDAyQzYuMjIzODggNy45OTk5OSA2LjAwMDAyIDguMjIzODUgNi4wMDAwMiA4LjQ5OTk5VjEySDMuMDAwMDJWNS45MTgzMUw3LjUwMDAyIDEuNDkxNjNaTTcuMDAwMDIgMTJIOS4wMDAwMlY4Ljk5OTk5SDcuMDAwMDJWMTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxYdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDAuMDAzMjk1OUM2LjgwNDczIDAuMDAzMjk1OSA2LjI0OTUzIDAuMjgxMTA2IDYuMjUgMC43NDk5OTVDNi4yNSAwLjk5NzI1OCA2LjQyNDQ2IDEuMTIwMTQgNi41NzY4NyAxLjIyNzQ5QzYuNjk1MDcgMS4zMTA3NCA2LjggMS4zODQ2NSA2LjggMS41QzYuOCAxLjcwNzEgNi4wNjIyNCAxLjc0MjY0IDUuMTk3ODkgMS43ODQyN0MzLjk3NTUzIDEuODQzMTQgMi41IDEuOTE0MjEgMi41IDIuNUMyLjUgMi43NzYxNCAyLjcyMzg2IDMgMyAzSDEyQzEyLjI3NjEgMyAxMi41IDIuNzc2MTQgMTIuNSAyLjVDMTIuNSAxLjkxNDIxIDExLjAyNDUgMS44NDMxNCA5LjgwMjExIDEuNzg0MjdDOC45Mzc3NiAxLjc0MjY0IDguMiAxLjcwNzEgOC4yIDEuNUM4LjIgMS4zODQ2NSA4LjMwNDkzIDEuMzEwNzQgOC40MjMxMyAxLjIyNzQ5QzguNTc1NTQgMS4xMjAxNCA4Ljc1IDAuOTk3MjU4IDguNzUgMC43NDk5OTVDOC43NTA0NyAwLjI4MTEwNiA4LjE5NTI3IDAuMDAzMjk1OSA3LjUgMC4wMDMyOTU5Wk0yLjg5NDUxIDYuMTIyNjZDMi4yNTgwNiA2LjUyNDcxIDEuOTA0MTcgNy4zMTExOCAyLjAyNDczIDguMDU1NkwyLjgzNTg4IDEyLjQ3NzJDMy4wMDk5MyAxMy4zNTYyIDMuNzYyOSAxNCA0LjY2MDYxIDE0SDEwLjMzNzNDMTEuMjM1NCAxNCAxMS45ODg0IDEzLjM1NjIgMTIuMTYyNSAxMi40NzcyTDEyLjk3MzYgOC4wNTYwN0MxMy4wODkgNy4zMjM1OCAxMi44Mjg0IDYuNTMyNzYgMTIuMTMzMSA2LjA5MzczQzExLjcyODMgNS44MzAxMyAxMS42NDEyIDUuMzMyMzEgMTIuMTMzMSA1LjEyNzk2QzEyLjgyODQgNC44NjQzNSAxMi42OTQ4IDQgMTIgNEgxMC4zMDAxSDYuODAwMDVIMi45OTk5NkMyLjMwNDY5IDQgMi4xOTg3OCA0Ljg5MzI4IDIuODk0NTEgNS4xNTY4OUMzLjM4NjQyIDUuMzMyMzEgMy4yOTkzOSA1LjgzMDEzIDIuODk0NTEgNi4xMjI2NlpNOC4yMDAwNiA2LjI1QzguMjAwMDYgNS44MTc2OSA4LjA4NTcyIDUuMzc2MTUgNy45MDYzNSA1TDQuMTEwOTMgNUM0LjIwNjI2IDUuMjEzMTIgNC4yNDE5IDUuNDM4ODkgNC4yMjkwNCA1LjY1NTIxQzQuMTk1MjIgNi4yMjQxMiAzLjg0NTg3IDYuNjY4OTkgMy40ODAxNiA2LjkzMzIyTDMuNDU0OTIgNi45NTE0NkwzLjQyODU4IDYuOTY4MUMzLjEzNDA3IDcuMTU0MTQgMi45NTgwMSA3LjUzOTg5IDMuMDEwNTggNy44ODc0OUwzLjgxNzk3IDEyLjI4ODZDMy45MDUxMyAxMi43MTU0IDQuMjYxNDggMTMgNC42NjA2MSAxM0gxMC4zMzczQzEwLjczNyAxMyAxMS4wOTMyIDEyLjcxNTMgMTEuMTgwNCAxMi4yODg2TDExLjk4NzQgNy44ODk4QzEyLjA0OCA3LjQ4MjQ3IDExLjg5NTQgNy4xMjYzMSAxMS41OTkyIDYuOTM5MjdMMTEuNTg3NSA2LjkzMTg0TDExLjU4NzUgNi45MzE3NkMxMS4xOTQ3IDYuNjc2MDIgMTAuODMzMSA2LjIyNzg1IDEwLjc5ODYgNS42NDc5OEMxMC43ODQ2IDUuNDEyIDEwLjgyNjQgNS4xOTM5NyAxMC45MTEyIDVIOS4wNTUxN0M5LjAxOTg3IDUuMTQ2MTEgOS4wMDAwNiA1LjMxMjAxIDkuMDAwMDYgNS41QzkuMDAwMDYgNS45NzQ1IDkuMjE2NzkgNi4zNzEyNyA5LjQ0MzY3IDYuNzg2NjJDOS42OTI4NCA3LjI0Mjc4IDkuOTU0MjUgNy43MjEzNiA5Ljk1NDI1IDguMzQ5OTNDOS45NTQyNSA5LjI2OTggOS40OTg2OCA5Ljg0MjA1IDguNjIxODkgOS44NDIwNUM4LjEzMjA2IDkuODQyMDUgNy41NzgxOCA5LjQ2MDk3IDcuNTc4MTggOC43NTc4MUM3LjU3ODE4IDguMzUyNzkgNy43MTU1OCA4LjAxNjQ2IDcuODYxMjEgNy42NTk5OEM4LjAyNTQgNy4yNTgwNiA4LjIwMDA2IDYuODMwNTEgOC4yMDAwNiA2LjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0IDExLjAwMDFWNC4wMDAwNkwxIDQuMDAwMDZMMSAxMS4wMDAxSDE0Wk0xNSA0LjAwMDA2VjExLjAwMDFDMTUgMTEuNTUyMyAxNC41NTIzIDEyLjAwMDEgMTQgMTIuMDAwMUgxQzAuNDQ3NzE1IDEyLjAwMDEgMCAxMS41NTIzIDAgMTEuMDAwMVY0LjAwMDA2QzAgMy40NDc3OCAwLjQ0NzcxNSAzLjAwMDA2IDEgMy4wMDAwNkgxNEMxNC41NTIzIDMuMDAwMDYgMTUgMy40NDc3OCAxNSA0LjAwMDA2Wk0yIDUuMjVDMiA1LjExMTkzIDIuMTExOTMgNSAyLjI1IDVINS43NUM1Ljg4ODA3IDUgNiA1LjExMTkzIDYgNS4yNVY5Ljc1QzYgOS44ODgwNyA1Ljg4ODA3IDEwIDUuNzUgMTBIMi4yNUMyLjExMTkzIDEwIDIgOS44ODgwNyAyIDkuNzVWNS4yNVpNNy41IDdDNy4yMjM4NiA3IDcgNy4yMjM4NiA3IDcuNUM3IDcuNzc2MTQgNy4yMjM4NiA4IDcuNSA4SDEwLjVDMTAuNzc2MSA4IDExIDcuNzc2MTQgMTEgNy41QzExIDcuMjIzODYgMTAuNzc2MSA3IDEwLjUgN0g3LjVaTTcgOS41QzcgOS4yMjM4NiA3LjIyMzg2IDkgNy41IDlIMTIuNUMxMi43NzYxIDkgMTMgOS4yMjM4NiAxMyA5LjVDMTMgOS43NzYxNCAxMi43NzYxIDEwIDEyLjUgMTBINy41QzcuMjIzODYgMTAgNyA5Ljc3NjE0IDcgOS41Wk03LjUgNUM3LjIyMzg2IDUgNyA1LjIyMzg2IDcgNS41QzcgNS43NzYxNCA3LjIyMzg2IDYgNy41IDZIMTEuNUMxMS43NzYxIDYgMTIgNS43NzYxNCAxMiA1LjVDMTIgNS4yMjM4NiAxMS43NzYxIDUgMTEuNSA1SDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEp0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjUgMUgxMi41QzEzLjMyODQgMSAxNCAxLjY3MTU3IDE0IDIuNVYxMi41QzE0IDEzLjMyODQgMTMuMzI4NCAxNCAxMi41IDE0SDIuNUMxLjY3MTU3IDE0IDEgMTMuMzI4NCAxIDEyLjVWMi41QzEgMS42NzE1NyAxLjY3MTU3IDEgMi41IDFaTTIuNSAyQzIuMjIzODYgMiAyIDIuMjIzODYgMiAyLjVWOC4zNjM2TDMuNjgxOCA2LjY4MThDMy43NjgwOSA2LjU5NTUxIDMuODg1NzIgNi41NDc5NyA0LjAwNzc0IDYuNTUwMDdDNC4xMjk3NSA2LjU1MjE2IDQuMjQ1NjggNi42MDM3MiA0LjMyODk1IDYuNjkyOTNMNy44NzM1NSAxMC40OTAxTDEwLjY4MTggNy42ODE4QzEwLjg1NzUgNy41MDYwNyAxMS4xNDI1IDcuNTA2MDcgMTEuMzE4MiA3LjY4MThMMTMgOS4zNjM2VjIuNUMxMyAyLjIyMzg2IDEyLjc3NjEgMiAxMi41IDJIMi41Wk0yIDEyLjVWOS42MzY0TDMuOTg4ODcgNy42NDc1M0w3LjUzMTEgMTEuNDQyMUw4Ljk0MTEzIDEzSDIuNUMyLjIyMzg2IDEzIDIgMTIuNzc2MSAyIDEyLjVaTTEyLjUgMTNIMTAuMTU1TDguNDgzMzYgMTEuMTUzTDExIDguNjM2NEwxMyAxMC42MzY0VjEyLjVDMTMgMTIuNzc2MSAxMi43NzYxIDEzIDEyLjUgMTNaTTYuNjQ5MjIgNS41QzYuNjQ5MjIgNS4wMzAxMyA3LjAzMDEzIDQuNjQ5MjIgNy41IDQuNjQ5MjJDNy45Njk4NyA0LjY0OTIyIDguMzUwNzggNS4wMzAxMyA4LjM1MDc4IDUuNUM4LjM1MDc4IDUuOTY5ODcgNy45Njk4NyA2LjM1MDc4IDcuNSA2LjM1MDc4QzcuMDMwMTMgNi4zNTA3OCA2LjY0OTIyIDUuOTY5ODcgNi42NDkyMiA1LjVaTTcuNSAzLjc0OTIyQzYuNTMzMDcgMy43NDkyMiA1Ljc0OTIyIDQuNTMzMDcgNS43NDkyMiA1LjVDNS43NDkyMiA2LjQ2NjkzIDYuNTMzMDcgNy4yNTA3OCA3LjUgNy4yNTA3OEM4LjQ2NjkzIDcuMjUwNzggOS4yNTA3OCA2LjQ2NjkzIDkuMjUwNzggNS41QzkuMjUwNzggNC41MzMwNyA4LjQ2NjkzIDMuNzQ5MjIgNy41IDMuNzQ5MjJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxlbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3Njg5MkMzLjg0MjIyIDAuODc2ODkyIDAuODc3MDc1IDMuODQyMDQgMC44NzcwNzUgNy40OTk3MkMwLjg3NzA3NSAxMS4xNTc0IDMuODQyMjIgMTQuMTIyNiA3LjQ5OTkxIDE0LjEyMjZDMTEuMTU3NiAxNC4xMjI2IDE0LjEyMjcgMTEuMTU3NCAxNC4xMjI3IDcuNDk5NzJDMTQuMTIyNyAzLjg0MjA0IDExLjE1NzYgMC44NzY4OTIgNy40OTk5MSAwLjg3Njg5MlpNMS44MjcwNyA3LjQ5OTcyQzEuODI3MDcgNC4zNjY3MSA0LjM2Njg5IDEuODI2ODkgNy40OTk5MSAxLjgyNjg5QzEwLjYzMjkgMS44MjY4OSAxMy4xNzI3IDQuMzY2NzEgMTMuMTcyNyA3LjQ5OTcyQzEzLjE3MjcgMTAuNjMyNyAxMC42MzI5IDEzLjE3MjYgNy40OTk5MSAxMy4xNzI2QzQuMzY2ODkgMTMuMTcyNiAxLjgyNzA3IDEwLjYzMjcgMS44MjcwNyA3LjQ5OTcyWk04LjI0OTkyIDQuNDk5OTlDOC4yNDk5MiA0LjkxNDIgNy45MTQxMyA1LjI0OTk5IDcuNDk5OTIgNS4yNDk5OUM3LjA4NTcxIDUuMjQ5OTkgNi43NDk5MiA0LjkxNDIgNi43NDk5MiA0LjQ5OTk5QzYuNzQ5OTIgNC4wODU3NyA3LjA4NTcxIDMuNzQ5OTkgNy40OTk5MiAzLjc0OTk5QzcuOTE0MTMgMy43NDk5OSA4LjI0OTkyIDQuMDg1NzcgOC4yNDk5MiA0LjQ5OTk5Wk02LjAwMDAzIDUuOTk5OTlINi41MDAwM0g3LjUwMDAzQzcuNzc2MTggNS45OTk5OSA4LjAwMDAzIDYuMjIzODQgOC4wMDAwMyA2LjQ5OTk5VjkuOTk5OTlIOC41MDAwM0g5LjAwMDAzVjExSDguNTAwMDNINy41MDAwM0g2LjUwMDAzSDYuMDAwMDNWOS45OTk5OUg2LjUwMDAzSDcuMDAwMDNWNi45OTk5OUg2LjUwMDAzSDYuMDAwMDNWNS45OTk5OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHRuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02LjUgMUM2LjIyMzg2IDEgNiAxLjIyMzg2IDYgMS41QzYgMS43NzYxNCA2LjIyMzg2IDIgNi41IDJDNy4xMjY3MSAyIDcuNDU3MTggMi4yMDAyOCA3LjY1NTYzIDIuNDc4MTJDNy44NzgxIDIuNzg5NTcgOCAzLjI4ODM3IDggNFYxMUM4IDExLjcxMTYgNy44NzgxIDEyLjIxMDQgNy42NTU2MyAxMi41MjE5QzcuNDU3MTggMTIuNzk5NyA3LjEyNjcxIDEzIDYuNSAxM0M2LjIyMzg2IDEzIDYgMTMuMjIzOSA2IDEzLjVDNiAxMy43NzYxIDYuMjIzODYgMTQgNi41IDE0QzcuMzczMjkgMTQgOC4wNDI4MiAxMy43MDAzIDguNDY5MzcgMTMuMTAzMUM4LjQ3OTc2IDEzLjA4ODYgOC40ODk5NyAxMy4wNzM5IDguNSAxMy4wNTkxQzguNTEwMDMgMTMuMDczOSA4LjUyMDI0IDEzLjA4ODYgOC41MzA2MyAxMy4xMDMxQzguOTU3MTggMTMuNzAwMyA5LjYyNjcxIDE0IDEwLjUgMTRDMTAuNzc2MSAxNCAxMSAxMy43NzYxIDExIDEzLjVDMTEgMTMuMjIzOSAxMC43NzYxIDEzIDEwLjUgMTNDOS44NzMyOSAxMyA5LjU0MjgyIDEyLjc5OTcgOS4zNDQzNyAxMi41MjE5QzkuMTIxOSAxMi4yMTA0IDkgMTEuNzExNiA5IDExVjRDOSAzLjI4ODM3IDkuMTIxOSAyLjc4OTU3IDkuMzQ0MzcgMi40NzgxMkM5LjU0MjgyIDIuMjAwMjggOS44NzMyOSAyIDEwLjUgMkMxMC43NzYxIDIgMTEgMS43NzYxNCAxMSAxLjVDMTEgMS4yMjM4NiAxMC43NzYxIDEgMTAuNSAxQzkuNjI2NzEgMSA4Ljk1NzE4IDEuMjk5NzIgOC41MzA2MyAxLjg5Njg4QzguNTIwMjQgMS45MTE0MyA4LjUxMDAzIDEuOTI2MTEgOC41IDEuOTQwOUM4LjQ4OTk3IDEuOTI2MTEgOC40Nzk3NiAxLjkxMTQzIDguNDY5MzcgMS44OTY4OEM4LjA0MjgyIDEuMjk5NzIgNy4zNzMyOSAxIDYuNSAxWk0xNCA1SDExVjRIMTRDMTQuNTUyMyA0IDE1IDQuNDQ3NzIgMTUgNVYxMEMxNSAxMC41NTIzIDE0LjU1MjMgMTEgMTQgMTFIMTFWMTBIMTRWNVpNNiA0VjVIMUwxIDEwSDZWMTFIMUMwLjQ0NzcxNSAxMSAwIDEwLjU1MjMgMCAxMFY1QzAgNC40NDc3MiAwLjQ0NzcxNSA0IDEgNEg2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNDk5OTggMC41QzUuNDk5OTggMC4yMjM4NTggNS43MjM4MyAwIDUuOTk5OTggMEg3LjQ5OTk4SDguOTk5OThDOS4yNzYxMiAwIDkuNDk5OTggMC4yMjM4NTggOS40OTk5OCAwLjVDOS40OTk5OCAwLjc3NjE0MiA5LjI3NjEyIDEgOC45OTk5OCAxSDcuOTk5OThWMi4xMTkyMkM5LjA5ODMyIDIuMjA0MDkgMTAuMTE5IDIuNTY2MjIgMTAuOTkyIDMuMTM1NzJDMTEuMDExNiAzLjEwODUxIDExLjAzMzYgMy4wODI1MiAxMS4wNTggMy4wNTgwNkwxMi4wNTggMi4wNTgwNkMxMi4zMDIxIDEuODEzOTggMTIuNjk3OCAxLjgxMzk4IDEyLjk0MTkgMi4wNTgwNkMxMy4xODYgMi4zMDIxNCAxMy4xODYgMi42OTc4NiAxMi45NDE5IDIuOTQxOTRMMTEuOTY3IDMuOTE2ODJDMTMuMTU5NSA1LjA3OTI1IDEzLjkgNi43MDMxNCAxMy45IDguNDk5OThDMTMuOSAxMi4wMzQ2IDExLjAzNDYgMTQuOSA3LjQ5OTk4IDE0LjlDMy45NjUzNSAxNC45IDEuMDk5OTggMTIuMDM0NiAxLjA5OTk4IDguNDk5OThDMS4wOTk5OCA1LjEzMzYxIDMuNjk5MDQgMi4zNzQzIDYuOTk5OTggMi4xMTkyMlYxSDUuOTk5OThDNS43MjM4MyAxIDUuNDk5OTggMC43NzYxNDIgNS40OTk5OCAwLjVaTTIuMDk5OTggOC40OTk5OEMyLjA5OTk4IDUuNTE3NjQgNC41MTc2NCAzLjA5OTk4IDcuNDk5OTggMy4wOTk5OEMxMC40ODIzIDMuMDk5OTggMTIuOSA1LjUxNzY0IDEyLjkgOC40OTk5OEMxMi45IDExLjQ4MjMgMTAuNDgyMyAxMy45IDcuNDk5OTggMTMuOUM0LjUxNzY0IDEzLjkgMi4wOTk5OCAxMS40ODIzIDIuMDk5OTggOC40OTk5OFpNNy40OTk5OCA4LjQ5OTk4VjQuMDk5OThDNS4wNjk5MiA0LjA5OTk4IDMuMDk5OTggNi4wNjk5MiAzLjA5OTk4IDguNDk5OThDMy4wOTk5OCAxMC45MyA1LjA2OTkyIDEyLjkgNy40OTk5OCAxMi45QzguNzE1IDEyLjkgOS44MTUgMTIuNDA3NSAxMC42MTEyIDExLjYxMTJMNy40OTk5OCA4LjQ5OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNzU0MzIgMC44MTk1MzdDNy41OTc0MiAwLjcyNjgyMSA3LjQwMjUgMC43MjY4MjEgNy4yNDU1OSAwLjgxOTUzN0wxLjc0NTU5IDQuMDY5NTRDMS41OTMzNiA0LjE1OTQ5IDEuNDk5OTYgNC4zMjMxNyAxLjQ5OTk2IDQuNUMxLjQ5OTk2IDQuNjc2ODMgMS41OTMzNiA0Ljg0MDUxIDEuNzQ1NTkgNC45MzA0Nkw3LjI0NTU5IDguMTgwNDZDNy40MDI1IDguMjczMTggNy41OTc0MiA4LjI3MzE4IDcuNzU0MzIgOC4xODA0NkwxMy4yNTQzIDQuOTMwNDZDMTMuNDA2NiA0Ljg0MDUxIDEzLjUgNC42NzY4MyAxMy41IDQuNUMxMy41IDQuMzIzMTcgMTMuNDA2NiA0LjE1OTQ5IDEzLjI1NDMgNC4wNjk1NEw3Ljc1NDMyIDAuODE5NTM3Wk03LjQ5OTk2IDcuMTY5MjNMMi45ODI4IDQuNUw3LjQ5OTk2IDEuODMwNzdMMTIuMDE3MSA0LjVMNy40OTk5NiA3LjE2OTIzWk0xLjU2OTUgNy40OTU2NEMxLjcwOTk4IDcuMjU3OSAyLjAxNjU5IDcuMTc5MDYgMi4yNTQzMiA3LjMxOTU0TDcuNDk5OTYgMTAuNDE5MkwxMi43NDU2IDcuMzE5NTRDMTIuOTgzMyA3LjE3OTA2IDEzLjI4OTkgNy4yNTc5IDEzLjQzMDQgNy40OTU2NEMxMy41NzA5IDcuNzMzMzcgMTMuNDkyMSA4LjAzOTk4IDEzLjI1NDMgOC4xODA0Nkw3Ljc1NDMyIDExLjQzMDVDNy41OTc0MiAxMS41MjMyIDcuNDAyNSAxMS41MjMyIDcuMjQ1NTkgMTEuNDMwNUwxLjc0NTU5IDguMTgwNDZDMS41MDc4NiA4LjAzOTk4IDEuNDI5MDEgNy43MzMzNyAxLjU2OTUgNy40OTU2NFpNMS41Njk0OSAxMC40OTU2QzEuNzA5OTggMTAuMjU3OSAyLjAxNjU4IDEwLjE3OTEgMi4yNTQzMiAxMC4zMTk1TDcuNDk5OTYgMTMuNDE5MkwxMi43NDU2IDEwLjMxOTVDMTIuOTgzMyAxMC4xNzkxIDEzLjI4OTkgMTAuMjU3OSAxMy40MzA0IDEwLjQ5NTZDMTMuNTcwOSAxMC43MzM0IDEzLjQ5MjEgMTEuMDQgMTMuMjU0MyAxMS4xODA1TDcuNzU0MzIgMTQuNDMwNUM3LjU5NzQyIDE0LjUyMzIgNy40MDI1IDE0LjUyMzIgNy4yNDU1OSAxNC40MzA1TDEuNzQ1NTkgMTEuMTgwNUMxLjUwNzg1IDExLjA0IDEuNDI5MDEgMTAuNzMzNCAxLjU2OTQ5IDEwLjQ5NTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxvbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOSAySDZWMTNIOVYyWk0xMCAyVjEzSDEyLjVDMTIuNzc2MSAxMyAxMyAxMi43NzYxIDEzIDEyLjVWMi41QzEzIDIuMjIzODYgMTIuNzc2MSAyIDEyLjUgMkgxMFpNMi41IDJINVYxM0gyLjVDMi4yMjM4NiAxMyAyIDEyLjc3NjEgMiAxMi41VjIuNUMyIDIuMjIzODYgMi4yMjM4NiAyIDIuNSAyWk0yLjUgMUMxLjY3MTU3IDEgMSAxLjY3MTU3IDEgMi41VjEyLjVDMSAxMy4zMjg0IDEuNjcxNTcgMTQgMi41IDE0SDEyLjVDMTMuMzI4NCAxNCAxNCAxMy4zMjg0IDE0IDEyLjVWMi41QzE0IDEuNjcxNTcgMTMuMzI4NCAxIDEyLjUgMUgyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxhbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy42ODk3OSAyLjc1QzMuODk2NjcgMi43NDk3OSA0LjA4MjMyIDIuODc3MDEgNC4xNTY3OSAzLjA3MDAzTDcuMzY2NjIgMTEuMzlDNy40NjYwMiAxMS42NDc3IDcuMzM3NzQgMTEuOTM3MSA3LjA4MDEgMTIuMDM2NUM2LjgyMjQ3IDEyLjEzNTkgNi41MzMwNCAxMi4wMDc2IDYuNDMzNjUgMTEuNzVMNS4zODI1IDkuMDI1MzdIMi4wMTEzM0wwLjk2Njk5MiAxMS43NDlDMC44NjgxMjggMTIuMDA2OCAwLjU3ODk2NCAxMi4xMzU3IDAuMzIxMTI2IDEyLjAzNjlDMC4wNjMyODc4IDExLjkzOCAtMC4wNjU1ODY0IDExLjY0ODggMC4wMzMyNzc0IDExLjM5MUwzLjIyMzQ0IDMuMDcwOTlDMy4yOTc1MSAyLjg3NzgyIDMuNDgyOSAyLjc1MDIxIDMuNjg5NzkgMi43NVpNMy42OTE3NCA0LjY0Mjg0TDUuMDU0NTggOC4xNzUzN0gyLjMzNzI0TDMuNjkxNzQgNC42NDI4NFpNMTAuODk4OSA1LjIwNzAzQzkuMjU4MTggNS4yMDcwMyA4LjAwOTE1IDYuNjg1NjkgOC4wMDkxNSA4LjYwOTcyQzguMDA5MTUgMTAuNjMzNyA5LjM1ODE4IDEyLjAxMjQgMTAuODk4OSAxMi4wMTI0QzExLjcyMTQgMTIuMDEyNCAxMi41NzQ0IDExLjY2OTIgMTMuMTU0MyAxMS4wMjE5VjExLjUzQzEzLjE1NDMgMTEuNzc4NSAxMy4zNTU3IDExLjk4IDEzLjYwNDMgMTEuOThDMTMuODUyOCAxMS45OCAxNC4wNTQzIDExLjc3ODUgMTQuMDU0MyAxMS41M1Y1LjcyQzE0LjA1NDMgNS40NzE0NyAxMy44NTI4IDUuMjcgMTMuNjA0MyA1LjI3QzEzLjM1NTcgNS4yNyAxMy4xNTQzIDUuNDcxNDcgMTMuMTU0MyA1LjcyVjYuMjIzMTdDMTIuNjA1NCA1LjYwMDk1IDExLjc5MjQgNS4yMDcwMyAxMC44OTg5IDUuMjA3MDNaTTEzLjE1NDMgOS43OTgyM1Y3LjMwMTk1QzEyLjc2MzkgNi41ODEwMSAxMS45NDE0IDYuMDU3NTcgMTEuMDg2OCA2LjA1NzU3QzEwLjEwODggNi4wNTc1NyA5LjAzNTAzIDYuOTY1ODEgOS4wMzUwMyA4LjYwOTU1QzkuMDM1MDMgMTAuMTUzMyAxMC4wMDg4IDExLjE2MTUgMTEuMDg2OCAxMS4xNjE1QzExLjk3MDEgMTEuMTYxNSAxMi43NzE5IDEwLjQ5NTIgMTMuMTU0MyA5Ljc5ODIzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNjk4OTkgNS4yMDcwM0MyLjA1ODIzIDUuMjA3MDMgMC44MDkyMDQgNi42ODU2OSAwLjgwOTIwNCA4LjYwOTcyQzAuODA5MjA0IDEwLjYzMzcgMi4xNTgyMyAxMi4wMTI0IDMuNjk4OTkgMTIuMDEyNEM0LjUyMTI2IDEyLjAxMjQgNS4zNzQwMiAxMS42NjkzIDUuOTUzOSAxMS4wMjIzVjExLjUzQzUuOTUzOSAxMS43Nzg1IDYuMTU1MzcgMTEuOTggNi40MDM5IDExLjk4QzYuNjUyNDMgMTEuOTggNi44NTM5IDExLjc3ODUgNi44NTM5IDExLjUzVjUuNzIwMDFDNi44NTM5IDUuNDcxNDkgNi42NTI0MyA1LjI3MDAxIDYuNDAzOSA1LjI3MDAxQzYuMTU1MzcgNS4yNzAwMSA1Ljk1MzkgNS40NzE0OSA1Ljk1MzkgNS43MjAwMVY2LjIyMjY5QzUuNDA1MDYgNS42MDA3NSA0LjU5MjE4IDUuMjA3MDMgMy42OTg5OSA1LjIwNzAzWk01Ljk1MzkgOS43OTlWNy4zMDExN0M1LjU2MzM5IDYuNTgwNjQgNC43NDExOCA2LjA1NzU3IDMuODg2OCA2LjA1NzU3QzIuOTA4OSA2LjA1NzU3IDEuODM1MDggNi45NjU4MSAxLjgzNTA4IDguNjA5NTVDMS44MzUwOCAxMC4xNTMzIDIuODA4ODkgMTEuMTYxNSAzLjg4NjggMTEuMTYxNUM0Ljc2OTg0IDExLjE2MTUgNS41NzE0MSAxMC40OTU3IDUuOTUzOSA5Ljc5OVpNMTAuNzk5IDUuMjA3MDNDOS4xNTgyMyA1LjIwNzAzIDcuOTA5MiA2LjY4NTY5IDcuOTA5MiA4LjYwOTcyQzcuOTA5MiAxMC42MzM3IDkuMjU4MjMgMTIuMDEyNCAxMC43OTkgMTIuMDEyNEMxMS42MjE1IDEyLjAxMjQgMTIuNDc0NCAxMS42NjkyIDEzLjA1NDMgMTEuMDIxOFYxMS41M0MxMy4wNTQzIDExLjc3ODUgMTMuMjU1OCAxMS45OCAxMy41MDQzIDExLjk4QzEzLjc1MjkgMTEuOTggMTMuOTU0MyAxMS43Nzg1IDEzLjk1NDMgMTEuNTNWNS43MkMxMy45NTQzIDUuNDcxNDcgMTMuNzUyOSA1LjI3IDEzLjUwNDMgNS4yN0MxMy4yNTU4IDUuMjcgMTMuMDU0MyA1LjQ3MTQ3IDEzLjA1NDMgNS43MlY2LjIyMzE4QzEyLjUwNTUgNS42MDA5NSAxMS42OTI0IDUuMjA3MDMgMTAuNzk5IDUuMjA3MDNaTTEzLjA1NDMgOS43OTgyMlY3LjMwMTk2QzEyLjY2NCA2LjU4MTAyIDExLjg0MTUgNi4wNTc1NyAxMC45ODY4IDYuMDU3NTdDMTAuMDA4OSA2LjA1NzU3IDguOTM1MDggNi45NjU4MSA4LjkzNTA4IDguNjA5NTVDOC45MzUwOCAxMC4xNTMzIDkuOTA4ODkgMTEuMTYxNSAxMC45ODY4IDExLjE2MTVDMTEuODcwMiAxMS4xNjE1IDEyLjY3MiAxMC40OTUyIDEzLjA1NDMgOS43OTgyMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGNuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS4yODk1IDIuNzVDMTEuNDk2NCAyLjc0OTc5IDExLjY4MjEgMi44NzcwMSAxMS43NTY1IDMuMDcwMDNMMTQuOTY2NCAxMS4zOUMxNS4wNjU3IDExLjY0NzcgMTQuOTM3NSAxMS45MzcxIDE0LjY3OTggMTIuMDM2NUMxNC40MjIyIDEyLjEzNTkgMTQuMTMyOCAxMi4wMDc2IDE0LjAzMzQgMTEuNzVMMTIuOTgyMiA5LjAyNTM3SDkuNjExMDZMOC41NjY3MiAxMS43NDlDOC40Njc4NiAxMi4wMDY4IDguMTc4NyAxMi4xMzU3IDcuOTIwODYgMTIuMDM2OUM3LjY2MzAyIDExLjkzOCA3LjUzNDE0IDExLjY0ODggNy42MzMwMSAxMS4zOTFMMTAuODIzMiAzLjA3MDk5QzEwLjg5NzIgMi44Nzc4MiAxMS4wODI2IDIuNzUwMjEgMTEuMjg5NSAyLjc1Wk0xMS4yOTE1IDQuNjQyODRMMTIuNjU0MyA4LjE3NTM3SDkuOTM2OThMMTEuMjkxNSA0LjY0Mjg0Wk0yLjg5ODk1IDUuMjA3MDNDMS4yNTgxOCA1LjIwNzAzIDAuMDA5MTU1MjcgNi42ODU2OSAwLjAwOTE1NTI3IDguNjA5NzJDMC4wMDkxNTUyNyAxMC42MzM3IDEuMzU4MTggMTIuMDEyNCAyLjg5ODk1IDEyLjAxMjRDMy43MjE0MSAxMi4wMTI0IDQuNTc0MzggMTEuNjY5MiA1LjE1NDI3IDExLjAyMTlWMTEuNTNDNS4xNTQyNyAxMS43Nzg1IDUuMzU1NzQgMTEuOTggNS42MDQyNyAxMS45OEM1Ljg1MjggMTEuOTggNi4wNTQyNyAxMS43Nzg1IDYuMDU0MjcgMTEuNTNWNS43MkM2LjA1NDI3IDUuNDcxNDcgNS44NTI4IDUuMjcgNS42MDQyNyA1LjI3QzUuMzU1NzQgNS4yNyA1LjE1NDI3IDUuNDcxNDcgNS4xNTQyNyA1LjcyVjYuMjIzMTdDNC42MDU0MyA1LjYwMDk1IDMuNzkyMzYgNS4yMDcwMyAyLjg5ODk1IDUuMjA3MDNaTTUuMTU0MjcgOS43OTgyM1Y3LjMwMTk1QzQuNzYzOTMgNi41ODEwMSAzLjk0MTQ0IDYuMDU3NTcgMy4wODY3NSA2LjA1NzU3QzIuMTA4ODUgNi4wNTc1NyAxLjAzNTAzIDYuOTY1ODEgMS4wMzUwMyA4LjYwOTU1QzEuMDM1MDMgMTAuMTUzMyAyLjAwODg1IDExLjE2MTUgMy4wODY3NSAxMS4xNjE1QzMuOTcwMTEgMTEuMTYxNSA0Ljc3MTk1IDEwLjQ5NTIgNS4xNTQyNyA5Ljc5ODIzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sc249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNjI1NSAyLjc1QzMuODM0NzggMi43NSA0LjAyMTkyIDIuODgwMzQgNC4wOTQ0OCAzLjA3NjY0TDcuMTY5ODUgMTEuMzk2MkM3LjI2NTYgMTEuNjU1MiA3LjEzMzI0IDExLjk0MjggNi44NzQyMyAxMi4wMzg2QzYuNjE1MjIgMTIuMTM0MyA2LjMyNzYzIDEyLjAwMiA2LjIzMTg4IDExLjc0MjlMNS4yMjM4NyA5LjAxNjAzSDIuMDI3MTJMMS4wMTkxMSAxMS43NDI5QzAuOTIzMzYyIDEyLjAwMiAwLjYzNTc3NCAxMi4xMzQzIDAuMzc2NzYyIDEyLjAzODZDMC4xMTc3NDkgMTEuOTQyOCAtMC4wMTQ2MDUyIDExLjY1NTIgMC4wODExNDAxIDExLjM5NjJMMy4xNTY1MSAzLjA3NjY0QzMuMjI5MDggMi44ODAzNCAzLjQxNjIxIDIuNzUgMy42MjU1IDIuNzVaTTMuNjI1NSA0LjY5MjA3TDQuOTA5NjYgOC4xNjYwM0gyLjM0MTMzTDMuNjI1NSA0LjY5MjA3Wk0xMS4zNzE5IDIuNzVDMTEuNTgxMSAyLjc1IDExLjc2ODMgMi44ODAzNCAxMS44NDA4IDMuMDc2NjRMMTQuOTE2MiAxMS4zOTYyQzE1LjAxMiAxMS42NTUyIDE0Ljg3OTYgMTEuOTQyOCAxNC42MjA2IDEyLjAzODZDMTQuMzYxNiAxMi4xMzQzIDE0LjA3NCAxMi4wMDIgMTMuOTc4MiAxMS43NDI5TDEyLjk3MDIgOS4wMTYwM0g5Ljc3MzQ4TDguNzY1NDcgMTEuNzQyOUM4LjY2OTcyIDEyLjAwMiA4LjM4MjEzIDEyLjEzNDMgOC4xMjMxMiAxMi4wMzg2QzcuODY0MTEgMTEuOTQyOCA3LjczMTc1IDExLjY1NTIgNy44Mjc1IDExLjM5NjJMMTAuOTAyOSAzLjA3NjY0QzEwLjk3NTQgMi44ODAzNCAxMS4xNjI2IDIuNzUgMTEuMzcxOSAyLjc1Wk0xMS4zNzE5IDQuNjkyMDdMMTIuNjU2IDguMTY2MDNIMTAuMDg3N0wxMS4zNzE5IDQuNjkyMDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx1bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC41NTI5MyAwLjk5OTk2OUM0Ljc1Mjk1IDAuOTk5OTY5IDQuOTMzNzIgMS4xMTkxNyA1LjAxMjUgMS4zMDMwMUw4LjAxMTA2IDguMjk5ODJDOC4xMTk4NCA4LjU1MzYzIDguMDAyMjYgOC44NDc1NyA3Ljc0ODQ0IDguOTU2MzVDNy40OTQ2MyA5LjA2NTEyIDcuMjAwNjkgOC45NDc1NCA3LjA5MTkxIDguNjkzNzNMNi4xMTYxMyA2LjQxNjg1SDIuOTg5NzNMMi4wMTM5NSA4LjY5MzczQzEuOTA1MTcgOC45NDc1NCAxLjYxMTIzIDkuMDY1MTIgMS4zNTc0MiA4Ljk1NjM1QzEuMTAzNiA4Ljg0NzU3IDAuOTg2MDIzIDguNTUzNjMgMS4wOTQ4IDguMjk5ODJMNC4wOTMzNiAxLjMwMzAxQzQuMTcyMTQgMS4xMTkxNyA0LjM1MjkxIDAuOTk5OTY5IDQuNTUyOTMgMC45OTk5NjlaTTQuNTUyOTMgMi43NjkyOUw1Ljc1MTg2IDUuNTY2ODVIMy4zNTRMNC41NTI5MyAyLjc2OTI5Wk0xMS4wNTYyIDkuMDAyMTRDMTEuMjYxNyA5LjAwMjE0IDExLjQ0NjMgOC44NzYzMyAxMS41MjE1IDguNjg1MDJMMTQuMjczMyAxLjY4Mjk5QzE0LjM3NDMgMS40MjU5OCAxNC4yNDc4IDEuMTM1NzUgMTMuOTkwOCAxLjAzNDc1QzEzLjczMzggMC45MzM3NDcgMTMuNDQzNiAxLjA2MDIxIDEzLjM0MjYgMS4zMTcyMkwxMS4wNTYyIDcuMTM1MTRMOC43Njk3MyAxLjMxNzIyQzguNjY4NzMgMS4wNjAyMSA4LjM3ODUgMC45MzM3NDcgOC4xMjE1IDEuMDM0NzVDNy44NjQ0OSAxLjEzNTc1IDcuNzM4MDIgMS40MjU5OCA3LjgzOTAyIDEuNjgyOTlMMTAuNTkwOCA4LjY4NTAyQzEwLjY2NiA4Ljg3NjMzIDEwLjg1MDYgOS4wMDIxNCAxMS4wNTYyIDkuMDAyMTRaTTE0Ljk1MzcgMTIuNDk5OUMxNC45NTM3IDEyLjYwNiAxNC45MTE1IDEyLjcwNzcgMTQuODM2NSAxMi43ODI4TDEyLjgzNjUgMTQuNzgyOEMxMi42ODAzIDE0LjkzOSAxMi40MjcxIDE0LjkzOSAxMi4yNzA4IDE0Ljc4MjhDMTIuMTE0NiAxNC42MjY1IDEyLjExNDYgMTQuMzczMyAxMi4yNzA4IDE0LjIxNzFMMTMuNTg4IDEyLjg5OTlIMS41MTkzN0wyLjgzNjUzIDE0LjIxNzFDMi45OTI3NCAxNC4zNzMzIDIuOTkyNzQgMTQuNjI2NSAyLjgzNjUzIDE0Ljc4MjhDMi42ODAzMiAxNC45MzkgMi40MjcwNSAxNC45MzkgMi4yNzA4NCAxNC43ODI4TDAuMjcwODQzIDEyLjc4MjhDMC4xOTU4MjggMTIuNzA3NyAwLjE1MzY4NyAxMi42MDYgMC4xNTM2ODcgMTIuNDk5OUMwLjE1MzY4NyAxMi4zOTM4IDAuMTk1ODI4IDEyLjI5MjEgMC4yNzA4NDMgMTIuMjE3MUwyLjI3MDg0IDEwLjIxNzFDMi40MjcwNSAxMC4wNjA5IDIuNjgwMzIgMTAuMDYwOSAyLjgzNjUzIDEwLjIxNzFDMi45OTI3NCAxMC4zNzMzIDIuOTkyNzQgMTAuNjI2NSAyLjgzNjUzIDEwLjc4MjhMMS41MTkzNyAxMi4wOTk5TDEzLjU4OCAxMi4wOTk5TDEyLjI3MDggMTAuNzgyOEMxMi4xMTQ2IDEwLjYyNjUgMTIuMTE0NiAxMC4zNzMzIDEyLjI3MDggMTAuMjE3MUMxMi40MjcxIDEwLjA2MDkgMTIuNjgwMyAxMC4wNjA5IDEyLjgzNjUgMTAuMjE3MUwxNC44MzY1IDEyLjIxNzFDMTQuOTExNSAxMi4yOTIxIDE0Ljk1MzcgMTIuMzkzOCAxNC45NTM3IDEyLjQ5OTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxkbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC42OTY2NiAwLjA0MDM1NEM4LjkwODU5IDAuMTMxMDM4IDkuMDMxMDUgMC4zNTQ4NTYgOC45OTMxNSAwLjU4MjIzNUw4LjA5MDE5IDYuMDAwMDFIMTIuNDk5OUMxMi42ODkzIDYuMDAwMDEgMTIuODYyNSA2LjEwNzAxIDEyLjk0NzIgNi4yNzY0QzEzLjAzMTggNi40NDU3OSAxMy4wMTM2IDYuNjQ4NSAxMi44OTk5IDYuOEw2Ljg5OTk3IDE0LjhDNi43NjE2NiAxNC45ODQ0IDYuNTE1MiAxNS4wNTAzIDYuMzAzMjcgMTQuOTU5NkM2LjA5MTM0IDE0Ljg2OSA1Ljk2ODg4IDE0LjY0NTEgNi4wMDY3OCAxNC40MTc4TDYuOTA5NzQgOC45OTk5OUgyLjQ5OTk5QzIuMzEwNjEgOC45OTk5OSAyLjEzNzQ3IDguODkyOTkgMi4wNTI3OCA4LjcyMzZDMS45NjgwOCA4LjU1NDIxIDEuOTg2MzYgOC4zNTE1IDIuMDk5OTkgOC4yTDguMDk5OTYgMC4yMDAwMzdDOC4yMzgyNyAwLjAxNTYyNTUgOC40ODQ3MyAtMC4wNTAzMzAxIDguNjk2NjYgMC4wNDAzNTRaTTMuNDk5OTkgOEg3LjQ5OTk2QzcuNjQ2OTQgOCA3Ljc4NjQ3IDguMDY0NjYgNy44ODE0NyA4LjE3NjgxQzcuOTc2NDcgOC4yODg5NSA4LjAxNzMyIDguNDM3MjIgNy45OTMxNiA4LjU4MjE5TDcuMzMwMjYgMTIuNTU5NkwxMS40OTk5IDdINy40OTk5NkM3LjM1Mjk5IDcgNy4yMTM0NiA2LjkzNTM0IDcuMTE4NDYgNi44MjMxOUM3LjAyMzQ2IDYuNzExMDUgNi45ODI2MSA2LjU2Mjc4IDcuMDA2NzcgNi40MTc4MUw3LjY2OTY3IDIuNDQwNDJMMy40OTk5OSA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNzgyMzMgMi4yMTcxM0MzLjcwNzMyIDIuMTQyMTIgMy42MDU1NyAyLjA5OTk4IDMuNDk5NDkgMi4wOTk5OEMzLjM5MzQgMi4wOTk5OCAzLjI5MTY2IDIuMTQyMTIgMy4yMTY2NCAyLjIxNzEzTDEuMjE2NjQgNC4yMTcxM0MxLjA2MDQ0IDQuMzczMzQgMS4wNjA0NCA0LjYyNjYxIDEuMjE2NjQgNC43ODI4MkMxLjM3Mjg1IDQuOTM5MDMgMS42MjYxMiA0LjkzOTAzIDEuNzgyMzMgNC43ODI4MkwzLjA5OTQ5IDMuNDY1NjZMMy4wOTk0OSAxMS41MzQzTDEuNzgyMzMgMTAuMjE3MUMxLjYyNjEyIDEwLjA2MDkgMS4zNzI4NSAxMC4wNjA5IDEuMjE2NjQgMTAuMjE3MUMxLjA2MDQzIDEwLjM3MzMgMS4wNjA0MyAxMC42MjY2IDEuMjE2NjQgMTAuNzgyOEwzLjIxNjY0IDEyLjc4MjhDMy4yOTE2NiAxMi44NTc4IDMuMzkzNCAxMi45IDMuNDk5NDkgMTIuOUMzLjYwNTU3IDEyLjkgMy43MDczMSAxMi44NTc4IDMuNzgyMzMgMTIuNzgyOEw1Ljc4MjMzIDEwLjc4MjhDNS45Mzg1NCAxMC42MjY2IDUuOTM4NTQgMTAuMzczMyA1Ljc4MjMzIDEwLjIxNzFDNS42MjYxMiAxMC4wNjA5IDUuMzcyODUgMTAuMDYwOSA1LjIxNjY0IDEwLjIxNzFMMy44OTk0OSAxMS41MzQzTDMuODk5NDkgMy40NjU2Nkw1LjIxNjY0IDQuNzgyODJDNS4zNzI4NSA0LjkzOTAzIDUuNjI2MTIgNC45MzkwMyA1Ljc4MjMzIDQuNzgyODJDNS45Mzg1NCA0LjYyNjYxIDUuOTM4NTQgNC4zNzMzNCA1Ljc4MjMzIDQuMjE3MTNMMy43ODIzMyAyLjIxNzEzWk04LjQ5OTk4IDMuOTk5OTdDOC4yMjM4MyAzLjk5OTk3IDcuOTk5OTggNC4yMjM4MiA3Ljk5OTk4IDQuNDk5OTdDNy45OTk5OCA0Ljc3NjExIDguMjIzODMgNC45OTk5NyA4LjQ5OTk4IDQuOTk5OTdIMTQuNUMxNC43NzYxIDQuOTk5OTcgMTUgNC43NzYxMSAxNSA0LjQ5OTk3QzE1IDQuMjIzODIgMTQuNzc2MSAzLjk5OTk3IDE0LjUgMy45OTk5N0g4LjQ5OTk4Wk03Ljk5OTk4IDcuNDk5OTdDNy45OTk5OCA3LjIyMzgyIDguMjIzODMgNi45OTk5NyA4LjQ5OTk4IDYuOTk5OTdIMTQuNUMxNC43NzYxIDYuOTk5OTcgMTUgNy4yMjM4MiAxNSA3LjQ5OTk3QzE1IDcuNzc2MTEgMTQuNzc2MSA3Ljk5OTk3IDE0LjUgNy45OTk5N0g4LjQ5OTk4QzguMjIzODMgNy45OTk5NyA3Ljk5OTk4IDcuNzc2MTEgNy45OTk5OCA3LjQ5OTk3Wk04LjQ5OTk4IDkuOTk5OTdDOC4yMjM4MyA5Ljk5OTk3IDcuOTk5OTggMTAuMjIzOCA3Ljk5OTk4IDEwLjVDNy45OTk5OCAxMC43NzYxIDguMjIzODMgMTEgOC40OTk5OCAxMUgxNC41QzE0Ljc3NjEgMTEgMTUgMTAuNzc2MSAxNSAxMC41QzE1IDEwLjIyMzggMTQuNzc2MSA5Ljk5OTk3IDE0LjUgOS45OTk5N0g4LjQ5OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNjI0NzEgNC4wMDAwMUw0LjU2NDAyIDQuMDAwMDFDNC4wNDEzNCAzLjk5OTkzIDMuNzA2ODcgMy45OTk4OCAzLjQxODIgNC4wNTVDMi4yMzc5IDQuMjgwMzkgMS4yOTg0NiA1LjE3MDUzIDEuMDU4MTUgNi4zMzAzNUMwLjk5OTUzOCA2LjYxMzIxIDAuOTk5NjA0IDYuOTM5OTggMC45OTk3MDMgNy40MzY4OUwwLjk5OTcxMSA3LjUwMDAxTDAuOTk5NzAzIDcuNTYzMTNDMC45OTk2MDQgOC4wNjAwNCAwLjk5OTUzOCA4LjM4NjgxIDEuMDU4MTUgOC42Njk2N0MxLjI5ODQ2IDkuODI5NSAyLjIzNzkgMTAuNzE5NiAzLjQxODIgMTAuOTQ1QzMuNzA2ODggMTEuMDAwMSA0LjA0MTM1IDExLjAwMDEgNC41NjQwMyAxMUw0LjYyNDcxIDExSDUuNDk5NzFDNS43NzU4NSAxMSA1Ljk5OTcxIDEwLjc3NjIgNS45OTk3MSAxMC41QzUuOTk5NzEgMTAuMjIzOSA1Ljc3NTg1IDEwIDUuNDk5NzEgMTBINC42MjQ3MUM0LjAyMDg0IDEwIDMuNzg5MDcgOS45OTc3NyAzLjYwNTc3IDkuOTYyNzdDMi44MDI2MiA5LjgwOTQgMi4xOTE1NyA5LjIxMTA4IDIuMDM3MzUgOC40NjY3OEMyLjAwMjMzIDguMjk3NzggMS45OTk3MSA4LjA4MjUxIDEuOTk5NzEgNy41MDAwMUMxLjk5OTcxIDYuOTE3NTIgMi4wMDIzMyA2LjcwMjI1IDIuMDM3MzUgNi41MzMyNEMyLjE5MTU3IDUuNzg4OTUgMi44MDI2MiA1LjE5MDYyIDMuNjA1NzcgNS4wMzcyNUMzLjc4OTA3IDUuMDAyMjUgNC4wMjA4NCA1LjAwMDAxIDQuNjI0NzEgNS4wMDAwMUg1LjQ5OTcxQzUuNzc1ODUgNS4wMDAwMSA1Ljk5OTcxIDQuNzc2MTUgNS45OTk3MSA0LjUwMDAxQzUuOTk5NzEgNC4yMjM4NyA1Ljc3NTg1IDQuMDAwMDEgNS40OTk3MSA0LjAwMDAxSDQuNjI0NzFaTTEwLjM3NDcgNS4wMDAwMUMxMC45Nzg2IDUuMDAwMDEgMTEuMjEwNCA1LjAwMjI1IDExLjM5MzcgNS4wMzcyNUMxMi4xOTY4IDUuMTkwNjIgMTIuODA3OSA1Ljc4ODk1IDEyLjk2MjEgNi41MzMyNEMxMi45OTcxIDYuNzAyMjUgMTIuOTk5NyA2LjkxNzUyIDEyLjk5OTcgNy41MDAwMUMxMi45OTk3IDguMDgyNTEgMTIuOTk3MSA4LjI5Nzc4IDEyLjk2MjEgOC40NjY3OEMxMi44MDc5IDkuMjExMDggMTIuMTk2OCA5LjgwOTQgMTEuMzkzNyA5Ljk2Mjc3QzExLjIxMDQgOS45OTc3NyAxMC45Nzg2IDEwIDEwLjM3NDcgMTBIOS40OTk3MUM5LjIyMzU3IDEwIDguOTk5NzEgMTAuMjIzOSA4Ljk5OTcxIDEwLjVDOC45OTk3MSAxMC43NzYyIDkuMjIzNTcgMTEgOS40OTk3MSAxMUgxMC4zNzQ3TDEwLjQzNTQgMTFDMTAuOTU4MSAxMS4wMDAxIDExLjI5MjUgMTEuMDAwMSAxMS41ODEyIDEwLjk0NUMxMi43NjE1IDEwLjcxOTYgMTMuNzAxIDkuODI5NSAxMy45NDEzIDguNjY5NjdDMTMuOTk5OSA4LjM4NjgxIDEzLjk5OTggOC4wNjAwNSAxMy45OTk3IDcuNTYzMTRMMTMuOTk5NyA3LjUwMDAxTDEzLjk5OTcgNy40MzY4OEMxMy45OTk4IDYuOTM5OTggMTMuOTk5OSA2LjYxMzIxIDEzLjk0MTMgNi4zMzAzNUMxMy43MDEgNS4xNzA1MyAxMi43NjE1IDQuMjgwMzkgMTEuNTgxMiA0LjA1NUMxMS4yOTI1IDMuOTk5ODggMTAuOTU4MSAzLjk5OTkzIDEwLjQzNTQgNC4wMDAwMUwxMC4zNzQ3IDQuMDAwMDFIOS40OTk3MUM5LjIyMzU3IDQuMDAwMDEgOC45OTk3MSA0LjIyMzg3IDguOTk5NzEgNC41MDAwMUM4Ljk5OTcxIDQuNzc2MTUgOS4yMjM1NyA1LjAwMDAxIDkuNDk5NzEgNS4wMDAwMUgxMC4zNzQ3Wk01LjAwMDM4IDdDNC43MjQyNCA3IDQuNTAwMzggNy4yMjM4NiA0LjUwMDM4IDcuNUM0LjUwMDM4IDcuNzc2MTQgNC43MjQyNCA4IDUuMDAwMzggOEgxMC4wMDA0QzEwLjI3NjUgOCAxMC41MDA0IDcuNzc2MTQgMTAuNTAwNCA3LjVDMTAuNTAwNCA3LjIyMzg2IDEwLjI3NjUgNyAxMC4wMDA0IDdINS4wMDAzOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGhuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjUxMTk0IDMuMDA1NDFDOS4xODgyOSAyLjU0NTk0IDEwLjA0MzUgMi41MzY5NCAxMC42Nzg4IDIuOTU0MTlDMTAuODIzMSAzLjA0ODkzIDEwLjk3NzEgMy4xOTkzIDExLjM4OSAzLjYxMTE5QzExLjgwMDkgNC4wMjMwNyAxMS45NTEzIDQuMTc3MTQgMTIuMDQ2IDQuMzIxNDFDMTIuNDYzMyA0Ljk1Njc1IDEyLjQ1NDMgNS44MTE5MiAxMS45OTQ4IDYuNDg4MjdDMTEuODg5OSA2LjY0MjY0IDExLjcyNzYgNi44MDgxMSAxMS4zMDA2IDcuMjM1MTFMMTAuNjgxOSA3Ljg1MzgzQzEwLjQ4NjcgOC4wNDkwOSAxMC40ODY3IDguMzY1NjcgMTAuNjgxOSA4LjU2MDkzQzEwLjg3NzIgOC43NTYyIDExLjE5MzggOC43NTYyIDExLjM4OSA4LjU2MDkzTDEyLjAwNzcgNy45NDIyMUwxMi4wNTA3IDcuODk5MjlDMTIuNDIwMyA3LjUyOTc2IDEyLjY1NjggNy4yOTMzIDEyLjgyMiA3LjA1MDJDMTMuNDk3MiA2LjA1NjIzIDEzLjUzMjEgNC43NjI1MiAxMi44ODE5IDMuNzcyNDhDMTIuNzIzMyAzLjUzMTAyIDEyLjQ5MjIgMy4zMDAwMSAxMi4xNDA4IDIuOTQ4NzFMMTIuMDk2MSAyLjkwNDA4TDEyLjA1MTUgMi44NTk0MkMxMS43MDAyIDIuNTA4IDExLjQ2OTIgMi4yNzY4OSAxMS4yMjc3IDIuMTE4MzJDMTAuMjM3NyAxLjQ2ODEzIDguOTQzOTggMS41MDI5OSA3Ljk1MDAxIDIuMTc4MjJDNy43MDY5MSAyLjM0MzM2IDcuNDcwNDQgMi41Nzk5MSA3LjEwMDkgMi45NDk1NUw3LjA1OCAyLjk5MjQ3TDYuNDM5MjggMy42MTExOUM2LjI0NDAxIDMuODA2NDUgNi4yNDQwMSA0LjEyMzAzIDYuNDM5MjggNC4zMTgyOUM2LjYzNDU0IDQuNTEzNTUgNi45NTExMiA0LjUxMzU1IDcuMTQ2MzggNC4zMTgyOUw3Ljc2NTEgMy42OTk1N0M4LjE5MjEgMy4yNzI1NyA4LjM1NzU3IDMuMTEwMjcgOC41MTE5NCAzLjAwNTQxWk00LjMxNzk2IDcuMTQ2NzJDNC41MTMyMiA2Ljk1MTQ2IDQuNTEzMjIgNi42MzQ4NyA0LjMxNzk2IDYuNDM5NjFDNC4xMjI2OSA2LjI0NDM1IDMuODA2MTEgNi4yNDQzNSAzLjYxMDg1IDYuNDM5NjFMMi45OTIxMyA3LjA1ODMzTDIuOTQ5MjIgNy4xMDEyNEMyLjU3OTU3IDcuNDcwNzcgMi4zNDMwMyA3LjcwNzI0IDIuMTc3ODggNy45NTAzNUMxLjUwMjY1IDguOTQ0MzIgMS40Njc4IDEwLjIzOCAyLjExNzk5IDExLjIyODFDMi4yNzY1NiAxMS40Njk1IDIuNTA3NjYgMTEuNzAwNSAyLjg1OTEgMTIuMDUxOEwyLjkwMzc0IDEyLjA5NjVMMi45NDgzNyAxMi4xNDExQzMuMjk5NjcgMTIuNDkyNSAzLjUzMDY4IDEyLjcyMzcgMy43NzIxNCAxMi44ODIyQzQuNzYyMTkgMTMuNTMyNCA2LjA1NTg5IDEzLjQ5NzYgNy4wNDk4NiAxMi44MjIzQzcuMjkyOTYgMTIuNjU3MiA3LjUyOTQzIDEyLjQyMDYgNy44OTg5NiAxMi4wNTFMNy44OTg5NyAxMi4wNTFMNy45NDE4OCAxMi4wMDgxTDguNTYwNiAxMS4zODk0QzguNzU1ODYgMTEuMTk0MSA4Ljc1NTg2IDEwLjg3NzUgOC41NjA2IDEwLjY4MjNDOC4zNjUzMyAxMC40ODcgOC4wNDg3NSAxMC40ODcgNy44NTM0OSAxMC42ODIzTDcuMjM0NzcgMTEuMzAxQzYuODA3NzcgMTEuNzI4IDYuNjQyMyAxMS44OTAzIDYuNDg3OTQgMTEuOTk1MUM1LjgxMTU4IDEyLjQ1NDYgNC45NTY0MiAxMi40NjM2IDQuMzIxMDcgMTIuMDQ2NEM0LjE3NjgxIDExLjk1MTYgNC4wMjI3NCAxMS44MDEyIDMuNjEwODUgMTEuMzg5NEMzLjE5ODk2IDEwLjk3NzUgMy4wNDg2IDEwLjgyMzQgMi45NTM4NSAxMC42NzkxQzIuNTM2NjEgMTAuMDQzOCAyLjU0NTYxIDkuMTg4NjMgMy4wMDUwNyA4LjUxMjI3QzMuMTA5OTMgOC4zNTc5MSAzLjI3MjI0IDguMTkyNDQgMy42OTkyNCA3Ljc2NTQ0TDQuMzE3OTYgNy4xNDY3MlpNOS42MjE3MiA2LjA4NTU4QzkuODE2OTggNS44OTAzMiA5LjgxNjk4IDUuNTczNzMgOS42MjE3MiA1LjM3ODQ3QzkuNDI2NDYgNS4xODMyMSA5LjEwOTg4IDUuMTgzMjEgOC45MTQ2MSA1LjM3ODQ3TDUuMzc5MDggOC45MTQwMUM1LjE4MzgyIDkuMTA5MjcgNS4xODM4MiA5LjQyNTg1IDUuMzc5MDggOS42MjExMUM1LjU3NDM0IDkuODE2MzcgNS44OTA5MiA5LjgxNjM3IDYuMDg2MTkgOS42MjExMUw5LjYyMTcyIDYuMDg1NThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxDbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMzUzNiAyLjM1MzU1QzEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDEuODQxNzEgMTMuMzUzNiAxLjY0NjQ1QzEzLjE1ODMgMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTIuNjQ2NCAxLjY0NjQ1TDEuNjQ2NDUgMTIuNjQ2NEMxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMy4xNTgzIDEuNjQ2NDUgMTMuMzUzNkMxLjg0MTcxIDEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDIuMzUzNTUgMTMuMzUzNkwxMy4zNTM2IDIuMzUzNTVaTTIuMDM3MzUgOC40NjY3OEMyLjE3Mzk4IDkuMTI2MTkgMi42NjkxOCA5LjY3MTAzIDMuMzM4ODYgOS44OTMzOEwyLjU3ODMzIDEwLjY1MzlDMS44MDg0MyAxMC4yNTM0IDEuMjM3ODQgOS41MzY5MyAxLjA1ODE1IDguNjY5NjdDMC45OTk1MzggOC4zODY4MSAwLjk5OTYwNCA4LjA2MDA0IDAuOTk5NzAzIDcuNTYzMTNMMC45OTk3MTEgNy41MDAwMUwwLjk5OTcwMyA3LjQzNjg5QzAuOTk5NjA0IDYuOTM5OTggMC45OTk1MzggNi42MTMyMSAxLjA1ODE1IDYuMzMwMzVDMS4yOTg0NiA1LjE3MDUzIDIuMjM3OSA0LjI4MDM5IDMuNDE4MiA0LjA1NUMzLjcwNjg3IDMuOTk5ODggNC4wNDEzNCAzLjk5OTkzIDQuNTY0MDIgNC4wMDAwMUw0LjYyNDcxIDQuMDAwMDFINS40OTk3MUM1Ljc3NTg1IDQuMDAwMDEgNS45OTk3MSA0LjIyMzg3IDUuOTk5NzEgNC41MDAwMUM1Ljk5OTcxIDQuNzc2MTUgNS43NzU4NSA1LjAwMDAxIDUuNDk5NzEgNS4wMDAwMUg0LjYyNDcxQzQuMDIwODQgNS4wMDAwMSAzLjc4OTA3IDUuMDAyMjUgMy42MDU3NyA1LjAzNzI1QzIuODAyNjIgNS4xOTA2MiAyLjE5MTU3IDUuNzg4OTUgMi4wMzczNSA2LjUzMzI0QzIuMDAyMzMgNi43MDIyNSAxLjk5OTcxIDYuOTE3NTIgMS45OTk3MSA3LjUwMDAxQzEuOTk5NzEgOC4wODI1MSAyLjAwMjMzIDguMjk3NzggMi4wMzczNSA4LjQ2Njc4Wk0xMi45NjIxIDYuNTMzMjRDMTIuODI1NSA1Ljg3Mzk3IDEyLjMzMDQgNS4zMjkyMiAxMS42NjEgNS4xMDY3OUwxMi40MjE1IDQuMzQ2MzFDMTMuMTkxMiA0Ljc0Njg2IDEzLjc2MTYgNS40NjMyMyAxMy45NDEzIDYuMzMwMzVDMTMuOTk5OSA2LjYxMzIxIDEzLjk5OTggNi45Mzk5OCAxMy45OTk3IDcuNDM2ODhMMTMuOTk5NyA3LjUwMDAxTDEzLjk5OTcgNy41NjMxNEMxMy45OTk4IDguMDYwMDUgMTMuOTk5OSA4LjM4NjgxIDEzLjk0MTMgOC42Njk2N0MxMy43MDEgOS44Mjk1IDEyLjc2MTUgMTAuNzE5NiAxMS41ODEyIDEwLjk0NUMxMS4yOTI1IDExLjAwMDEgMTAuOTU4MSAxMS4wMDAxIDEwLjQzNTQgMTFMMTAuMzc0NyAxMUg5LjQ5OTcxQzkuMjIzNTcgMTEgOC45OTk3MSAxMC43NzYyIDguOTk5NzEgMTAuNUM4Ljk5OTcxIDEwLjIyMzkgOS4yMjM1NyAxMCA5LjQ5OTcxIDEwSDEwLjM3NDdDMTAuOTc4NiAxMCAxMS4yMTA0IDkuOTk3NzcgMTEuMzkzNyA5Ljk2Mjc3QzEyLjE5NjggOS44MDk0IDEyLjgwNzkgOS4yMTEwOCAxMi45NjIxIDguNDY2NzhDMTIuOTk3MSA4LjI5Nzc4IDEyLjk5OTcgOC4wODI1MSAxMi45OTk3IDcuNTAwMDFDMTIuOTk5NyA2LjkxNzUyIDEyLjk5NzEgNi43MDIyNSAxMi45NjIxIDYuNTMzMjRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx2bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC41MDAyMSAwQzQuNzc2MzUgMCA1LjAwMDIgMC4yMjM4NTMgNS4wMDAyIDAuNDk5OTlWMi40OTk5NUM1LjAwMDIgMi43NzYwOSA0Ljc3NjM1IDIuOTk5OTQgNC41MDAyMSAyLjk5OTk0QzQuMjI0MDggMi45OTk5NCA0LjAwMDIyIDIuNzc2MDkgNC4wMDAyMiAyLjQ5OTk1VjAuNDk5OTlDNC4wMDAyMiAwLjIyMzg1MyA0LjIyNDA4IDAgNC41MDAyMSAwWk0wLjY0NjQ1MSAwLjY0NjQ3QzAuODQxNzEgMC40NTEyMTIgMS4xNTgyOSAwLjQ1MTIxMiAxLjM1MzU0IDAuNjQ2NDdMMi44NTM1MSAyLjE0NjQ0QzMuMDQ4NzcgMi4zNDE3IDMuMDQ4NzcgMi42NTgyNyAyLjg1MzUxIDIuODUzNTNDMi42NTgyNiAzLjA0ODc5IDIuMzQxNjggMy4wNDg3OSAyLjE0NjQyIDIuODUzNTNMMC42NDY0NTIgMS4zNTM1NkMwLjQ1MTE5MyAxLjE1ODMgMC40NTExOTMgMC44NDE3MjggMC42NDY0NTEgMC42NDY0N1pNMC4wMDAzMDUxNyA0LjQ5OTkxQzAuMDAwMzA1MTcgNC4yMjM3NyAwLjIyNDE1OCAzLjk5OTkyIDAuNTAwMjk1IDMuOTk5OTJIMi41MDAyNUMyLjc3NjM5IDMuOTk5OTIgMy4wMDAyNCA0LjIyMzc3IDMuMDAwMjQgNC40OTk5MUMzLjAwMDI0IDQuNzc2MDUgMi43NzYzOSA0Ljk5OTkgMi41MDAyNSA0Ljk5OTlIMC41MDAyOTVDMC4yMjQxNTggNC45OTk5IDAuMDAwMzA1MTcgNC43NzYwNSAwLjAwMDMwNTE3IDQuNDk5OTFaTTEyLjAwMDEgMTAuNDk5OEMxMi4wMDAxIDEwLjIyMzYgMTIuMjIzOSA5Ljk5OTggMTIuNTAwMSA5Ljk5OThIMTQuNUMxNC43NzYxIDkuOTk5OCAxNSAxMC4yMjM2IDE1IDEwLjQ5OThDMTUgMTAuNzc1OSAxNC43NzYxIDEwLjk5OTggMTQuNSAxMC45OTk4SDEyLjUwMDFDMTIuMjIzOSAxMC45OTk4IDEyLjAwMDEgMTAuNzc1OSAxMi4wMDAxIDEwLjQ5OThaTTEwLjUwMDEgMTEuOTk5OEMxMC43NzYyIDExLjk5OTggMTEuMDAwMSAxMi4yMjM2IDExLjAwMDEgMTIuNDk5N1YxNC40OTk3QzExLjAwMDEgMTQuNzc1OCAxMC43NzYyIDE0Ljk5OTcgMTAuNTAwMSAxNC45OTk3QzEwLjIyNCAxNC45OTk3IDEwLjAwMDEgMTQuNzc1OCAxMC4wMDAxIDE0LjQ5OTdWMTIuNDk5N0MxMC4wMDAxIDEyLjIyMzYgMTAuMjI0IDExLjk5OTggMTAuNTAwMSAxMS45OTk4Wk0xMi4xNDYyIDEyLjE0NjJDMTIuMzQxNSAxMS45NTEgMTIuNjU4IDExLjk1MSAxMi44NTMzIDEyLjE0NjJMMTQuMzUzMyAxMy42NDYyQzE0LjU0ODUgMTMuODQxNSAxNC41NDg1IDE0LjE1OCAxNC4zNTMzIDE0LjM1MzNDMTQuMTU4IDE0LjU0ODUgMTMuODQxNCAxNC41NDg1IDEzLjY0NjIgMTQuMzUzM0wxMi4xNDYyIDEyLjg1MzNDMTEuOTUxIDEyLjY1ODEgMTEuOTUxIDEyLjM0MTUgMTIuMTQ2MiAxMi4xNDYyWk03Ljc2NDc4IDMuNjk5MzhDOC4xOTE3NyAzLjI3MjM4IDguMzU3MjQgMy4xMTAwOCA4LjUxMTYgMy4wMDUyMkM5LjE4Nzk0IDIuNTQ1NzcgMTAuMDQzMSAyLjUzNjc3IDEwLjY3ODQgMi45NTQwMUMxMC44MjI3IDMuMDQ4NzUgMTAuOTc2NyAzLjE5OTExIDExLjM4ODYgMy42MTA5OUMxMS44MDA1IDQuMDIyODcgMTEuOTUwOSA0LjE3Njk0IDEyLjA0NTYgNC4zMjEyQzEyLjQ2MjggNC45NTY1MyAxMi40NTM5IDUuODExNjggMTEuOTk0NCA2LjQ4ODAyQzExLjg4OTUgNi42NDIzOCAxMS43MjcyIDYuODA3ODUgMTEuMzAwMiA3LjIzNDg0TDEwLjY4MTUgNy44NTM1NEMxMC40ODYzIDguMDQ4OCAxMC40ODYzIDguMzY1MzggMTAuNjgxNSA4LjU2MDY0QzEwLjg3NjggOC43NTU4OSAxMS4xOTM0IDguNzU1ODkgMTEuMzg4NiA4LjU2MDY0TDEyLjAwNzMgNy45NDE5M0wxMi4wNTAyIDcuODk5MDNDMTIuNDE5OSA3LjUyOTUgMTIuNjU2NCA3LjI5MzAzIDEyLjgyMTYgNy4wNDk5M0MxMy40OTY4IDYuMDU1OTggMTMuNTMxNiA0Ljc2MjMgMTIuODgxNSAzLjc3MjI4QzEyLjcyMjkgMy41MzA4MyAxMi40OTE4IDMuMjk5ODIgMTIuMTQwNCAyLjk0ODUzTDEyLjA5NTcgMi45MDM5TDEyLjA1MTEgMi44NTkyNUMxMS42OTk4IDIuNTA3ODIgMTEuNDY4OCAyLjI3NjcyIDExLjIyNzMgMi4xMTgxNkMxMC4yMzczIDEuNDY3OTggOC45NDM2NCAxLjUwMjg0IDcuOTQ5NjggMi4xNzgwNUM3LjcwNjU5IDIuMzQzMTkgNy40NzAxMiAyLjU3OTczIDcuMTAwNiAyLjk0OTM2TDcuMTAwNiAyLjk0OTM3TDcuMDU3NjkgMi45OTIyOEw2LjQzODk4IDMuNjEwOTlDNi4yNDM3MiAzLjgwNjI1IDYuMjQzNzIgNC4xMjI4MiA2LjQzODk4IDQuMzE4MDhDNi42MzQyNCA0LjUxMzM0IDYuOTUwODEgNC41MTMzNCA3LjE0NjA3IDQuMzE4MDhMNy43NjQ3OCAzLjY5OTM4Wk0yLjk5MTkxIDcuMDU4MDdMMi45NDg5OSA3LjEwMDk3QzIuNTc5MzUgNy40NzA1IDIuMzQyODIgNy43MDY5NyAyLjE3NzY3IDcuOTUwMDZDMS41MDI0NiA4Ljk0NDAxIDEuNDY3NiAxMC4yMzc3IDIuMTE3NzggMTEuMjI3N0MyLjI3NjM0IDExLjQ2OTIgMi41MDc0NCAxMS43MDAyIDIuODU4ODYgMTIuMDUxNUwyLjg1ODg4IDEyLjA1MTVMMi45MDM1MiAxMi4wOTYxTDIuOTQ4MTUgMTIuMTQwN0wyLjk0ODE1IDEyLjE0MDdMMi45NDgxNyAxMi4xNDA4QzMuMjk5NDUgMTIuNDkyMiAzLjUzMDQ1IDEyLjcyMzMgMy43NzE5IDEyLjg4MThDNC43NjE5MyAxMy41MzIgNi4wNTU2IDEzLjQ5NzIgNy4wNDk1NiAxMi44MjE5QzcuMjkyNjUgMTIuNjU2OCA3LjUyOTEyIDEyLjQyMDMgNy44OTg2NSAxMi4wNTA2TDcuOTQxNTUgMTIuMDA3N0w4LjU2MDI2IDExLjM4OUM4Ljc1NTUyIDExLjE5MzcgOC43NTU1MiAxMC44NzcyIDguNTYwMjYgMTAuNjgxOUM4LjM2NSAxMC40ODY3IDguMDQ4NDIgMTAuNDg2NyA3Ljg1MzE3IDEwLjY4MTlMNy4yMzQ0NiAxMS4zMDA2QzYuODA3NDcgMTEuNzI3NiA2LjY0MiAxMS44ODk5IDYuNDg3NjQgMTEuOTk0OEM1LjgxMTMgMTIuNDU0MiA0Ljk1NjE1IDEyLjQ2MzIgNC4zMjA4MiAxMi4wNDZDNC4xNzY1NiAxMS45NTEyIDQuMDIyNDkgMTEuODAwOSAzLjYxMDYxIDExLjM4OUMzLjE5ODczIDEwLjk3NzEgMy4wNDgzNyAxMC44MjMxIDIuOTUzNjMgMTAuNjc4OEMyLjUzNjM5IDEwLjA0MzUgMi41NDUzOSA5LjE4ODMyIDMuMDA0ODQgOC41MTE5OEMzLjEwOTcxIDguMzU3NjEgMy4yNzIwMSA4LjE5MjE1IDMuNjk5IDcuNzY1MTZMNC4zMTc3IDcuMTQ2NDVDNC41MTI5NiA2Ljk1MTE5IDQuNTEyOTYgNi42MzQ2MiA0LjMxNzcgNi40MzkzNkM0LjEyMjQ1IDYuMjQ0MSAzLjgwNTg3IDYuMjQ0MSAzLjYxMDYxIDYuNDM5MzZMMi45OTE5MSA3LjA1ODA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZ249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNTY0MjcgMy45OTk4OEM0LjU4NDIyIDMuOTk5ODkgNC42MDQ0NSAzLjk5OTg5IDQuNjI0OTYgMy45OTk4OUg1LjQ5OTk2QzUuNzc2MSAzLjk5OTg5IDUuOTk5OTYgNC4yMjM3NSA1Ljk5OTk2IDQuNDk5ODlDNS45OTk5NiA0Ljc3NjAzIDUuNzc2MSA0Ljk5OTg5IDUuNDk5OTYgNC45OTk4OUg0LjYyNDk2QzQuMDIxMDggNC45OTk4OSAzLjc4OTMyIDUuMDAyMTMgMy42MDYwMSA1LjAzNzEzQzIuODAyODcgNS4xOTA1IDIuMTkxODEgNS43ODg4MyAyLjAzNzU5IDYuNTMzMTJDMi4wMDI1NyA2LjcwMjEyIDEuOTk5OTYgNi45MTczOSAxLjk5OTk2IDcuNDk5ODlDMS45OTk5NiA4LjA4MjM5IDIuMDAyNTcgOC4yOTc2NiAyLjAzNzU5IDguNDY2NjZDMi4xOTE4MSA5LjIxMDk1IDIuODAyODcgOS44MDkyOCAzLjYwNjAxIDkuOTYyNjVDMy43ODkzMiA5Ljk5NzY1IDQuMDIxMDggOS45OTk4OSA0LjYyNDk2IDkuOTk5ODlINS40OTk5NkM1Ljc3NjEgOS45OTk4OSA1Ljk5OTk2IDEwLjIyMzcgNS45OTk5NiAxMC40OTk5QzUuOTk5OTYgMTAuNzc2IDUuNzc2MSAxMC45OTk5IDUuNDk5OTYgMTAuOTk5OUg0LjYyNDk2QzQuNjA0NDUgMTAuOTk5OSA0LjU4NDIyIDEwLjk5OTkgNC41NjQyNyAxMC45OTk5QzQuMDQxNTkgMTEgMy43MDcxMiAxMSAzLjQxODQ1IDEwLjk0NDlDMi4yMzgxNCAxMC43MTk1IDEuMjk4NzEgOS44MjkzNyAxLjA1ODM5IDguNjY5NTVDMC45OTk3ODIgOC4zODY2OSAwLjk5OTg0OCA4LjA1OTkyIDAuOTk5OTQ3IDcuNTYzMDFDMC45OTk5NTEgNy41NDIyNyAwLjk5OTk1NSA3LjUyMTIzIDAuOTk5OTU1IDcuNDk5ODlDMC45OTk5NTUgNy40Nzg1NSAwLjk5OTk1MSA3LjQ1NzUxIDAuOTk5OTQ3IDcuNDM2NzdDMC45OTk4NDggNi45Mzk4NiAwLjk5OTc4MiA2LjYxMzA5IDEuMDU4MzkgNi4zMzAyM0MxLjI5ODcxIDUuMTcwNDEgMi4yMzgxNCA0LjI4MDI3IDMuNDE4NDUgNC4wNTQ4OEMzLjcwNzEyIDMuOTk5NzYgNC4wNDE1OSAzLjk5OTgxIDQuNTY0MjcgMy45OTk4OFpNMTEuMzkzOSA1LjAzNzEzQzExLjIxMDYgNS4wMDIxMyAxMC45Nzg4IDQuOTk5ODkgMTAuMzc1IDQuOTk5ODlIOS40OTk5NkM5LjIyMzgxIDQuOTk5ODkgOC45OTk5NiA0Ljc3NjAzIDguOTk5OTYgNC40OTk4OUM4Ljk5OTk2IDQuMjIzNzUgOS4yMjM4MSAzLjk5OTg5IDkuNDk5OTYgMy45OTk4OUgxMC4zNzVDMTAuMzk1NSAzLjk5OTg5IDEwLjQxNTcgMy45OTk4OSAxMC40MzU2IDMuOTk5ODhDMTAuOTU4MyAzLjk5OTgxIDExLjI5MjggMy45OTk3NiAxMS41ODE1IDQuMDU0ODhDMTIuNzYxOCA0LjI4MDI3IDEzLjcwMTIgNS4xNzA0MSAxMy45NDE1IDYuMzMwMjNDMTQuMDAwMSA2LjYxMzA5IDE0LjAwMDEgNi45Mzk4NSAxNCA3LjQzNjc2QzE0IDcuNDU3NSAxNCA3LjQ3ODU0IDE0IDcuNDk5ODlDMTQgNy41MjEyNCAxNCA3LjU0MjI4IDE0IDcuNTYzMDJDMTQuMDAwMSA4LjA1OTkyIDE0LjAwMDEgOC4zODY2OSAxMy45NDE1IDguNjY5NTVDMTMuNzAxMiA5LjgyOTM3IDEyLjc2MTggMTAuNzE5NSAxMS41ODE1IDEwLjk0NDlDMTEuMjkyOCAxMSAxMC45NTgzIDExIDEwLjQzNTYgMTAuOTk5OUMxMC40MTU3IDEwLjk5OTkgMTAuMzk1NSAxMC45OTk5IDEwLjM3NSAxMC45OTk5SDkuNDk5OTZDOS4yMjM4MSAxMC45OTk5IDguOTk5OTYgMTAuNzc2IDguOTk5OTYgMTAuNDk5OUM4Ljk5OTk2IDEwLjIyMzcgOS4yMjM4MSA5Ljk5OTg5IDkuNDk5OTYgOS45OTk4OUgxMC4zNzVDMTAuOTc4OCA5Ljk5OTg5IDExLjIxMDYgOS45OTc2NSAxMS4zOTM5IDkuOTYyNjVDMTIuMTk3IDkuODA5MjggMTIuODA4MSA5LjIxMDk1IDEyLjk2MjMgOC40NjY2NkMxMi45OTczIDguMjk3NjYgMTMgOC4wODIzOSAxMyA3LjQ5OTg5QzEzIDYuOTE3MzkgMTIuOTk3MyA2LjcwMjEyIDEyLjk2MjMgNi41MzMxMkMxMi44MDgxIDUuNzg4ODMgMTIuMTk3IDUuMTkwNSAxMS4zOTM5IDUuMDM3MTNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxtbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAuNjc4OCAyLjk1NDE5QzEwLjA0MzUgMi41MzY5NCA5LjE4ODI5IDIuNTQ1OTQgOC41MTE5NCAzLjAwNTQxQzguMzU3NTcgMy4xMTAyNyA4LjE5MjEgMy4yNzI1NyA3Ljc2NTEgMy42OTk1N0w3LjE0NjM4IDQuMzE4MjlDNi45NTExMiA0LjUxMzU1IDYuNjM0NTQgNC41MTM1NSA2LjQzOTI4IDQuMzE4MjlDNi4yNDQwMSA0LjEyMzAzIDYuMjQ0MDEgMy44MDY0NSA2LjQzOTI4IDMuNjExMTlMNy4wNTggMi45OTI0N0M3LjA3MjUgMi45Nzc5NyA3LjA4Njc5IDIuOTYzNjYgNy4xMDA5IDIuOTQ5NTVDNy40NzA0NCAyLjU3OTkxIDcuNzA2OTEgMi4zNDMzNiA3Ljk1MDAxIDIuMTc4MjJDOC45NDM5OCAxLjUwMjk5IDEwLjIzNzcgMS40NjgxMyAxMS4yMjc3IDIuMTE4MzJDMTEuNDY5MiAyLjI3Njg5IDExLjcwMDIgMi41MDggMTIuMDUxNSAyLjg1OTQyQzEyLjA2NjIgMi44NzQxIDEyLjA4MSAyLjg4ODk4IDEyLjA5NjEgMi45MDQwOEMxMi4xMTEyIDIuOTE5MTcgMTIuMTI2MSAyLjkzNDA1IDEyLjE0MDggMi45NDg3MUMxMi40OTIyIDMuMzAwMDEgMTIuNzIzMyAzLjUzMTAyIDEyLjg4MTkgMy43NzI0OEMxMy41MzIxIDQuNzYyNTIgMTMuNDk3MiA2LjA1NjIzIDEyLjgyMiA3LjA1MDJDMTIuNjU2OCA3LjI5MzMgMTIuNDIwMyA3LjUyOTc2IDEyLjA1MDcgNy44OTkyOUMxMi4wMzY2IDcuOTEzNCAxMi4wMjIyIDcuOTI3NzEgMTIuMDA3NyA3Ljk0MjIxTDExLjM4OSA4LjU2MDkzQzExLjE5MzggOC43NTYyIDEwLjg3NzIgOC43NTYyIDEwLjY4MTkgOC41NjA5M0MxMC40ODY3IDguMzY1NjcgMTAuNDg2NyA4LjA0OTA5IDEwLjY4MTkgNy44NTM4M0wxMS4zMDA2IDcuMjM1MTFDMTEuNzI3NiA2LjgwODExIDExLjg4OTkgNi42NDI2NCAxMS45OTQ4IDYuNDg4MjdDMTIuNDU0MyA1LjgxMTkyIDEyLjQ2MzMgNC45NTY3NSAxMi4wNDYgNC4zMjE0MUMxMS45NTEzIDQuMTc3MTQgMTEuODAwOSA0LjAyMzA3IDExLjM4OSAzLjYxMTE5QzEwLjk3NzEgMy4xOTkzIDEwLjgyMzEgMy4wNDg5MyAxMC42Nzg4IDIuOTU0MTlaTTQuMzE3OTYgNi40Mzk2MUM0LjUxMzIyIDYuNjM0ODcgNC41MTMyMiA2Ljk1MTQ2IDQuMzE3OTYgNy4xNDY3MkwzLjY5OTI0IDcuNzY1NDRDMy4yNzIyNCA4LjE5MjQ0IDMuMTA5OTMgOC4zNTc5MSAzLjAwNTA3IDguNTEyMjdDMi41NDU2MSA5LjE4ODYzIDIuNTM2NjEgMTAuMDQzOCAyLjk1Mzg1IDEwLjY3OTFDMy4wNDg2IDEwLjgyMzQgMy4xOTg5NiAxMC45Nzc1IDMuNjEwODUgMTEuMzg5NEM0LjAyMjc0IDExLjgwMTIgNC4xNzY4MSAxMS45NTE2IDQuMzIxMDcgMTIuMDQ2NEM0Ljk1NjQyIDEyLjQ2MzYgNS44MTE1OCAxMi40NTQ2IDYuNDg3OTQgMTEuOTk1MUM2LjY0MjMgMTEuODkwMyA2LjgwNzc3IDExLjcyOCA3LjIzNDc3IDExLjMwMUw3Ljg1MzQ5IDEwLjY4MjNDOC4wNDg3NSAxMC40ODcgOC4zNjUzMyAxMC40ODcgOC41NjA2IDEwLjY4MjNDOC43NTU4NiAxMC44Nzc1IDguNzU1ODYgMTEuMTk0MSA4LjU2MDYgMTEuMzg5NEw3Ljk0MTg4IDEyLjAwODFDNy45MjczOCAxMi4wMjI2IDcuOTEzMDcgMTIuMDM2OSA3Ljg5ODk3IDEyLjA1MUM3LjUyOTQzIDEyLjQyMDYgNy4yOTI5NiAxMi42NTcyIDcuMDQ5ODYgMTIuODIyM0M2LjA1NTg5IDEzLjQ5NzYgNC43NjIxOSAxMy41MzI0IDMuNzcyMTQgMTIuODgyMkMzLjUzMDY4IDEyLjcyMzcgMy4yOTk2NyAxMi40OTI1IDIuOTQ4MzcgMTIuMTQxMUMyLjkzMzcxIDEyLjEyNjQgMi45MTg4MyAxMi4xMTE2IDIuOTAzNzQgMTIuMDk2NUMyLjg4ODY1IDEyLjA4MTQgMi44NzM3NyAxMi4wNjY1IDIuODU5MSAxMi4wNTE4QzIuNTA3NjYgMTEuNzAwNSAyLjI3NjU2IDExLjQ2OTUgMi4xMTc5OSAxMS4yMjgxQzEuNDY3OCAxMC4yMzggMS41MDI2NSA4Ljk0NDMyIDIuMTc3ODggNy45NTAzNUMyLjM0MzAzIDcuNzA3MjQgMi41Nzk1NyA3LjQ3MDc3IDIuOTQ5MjIgNy4xMDEyNEMyLjk2MzMzIDcuMDg3MTMgMi45Nzc2MyA3LjA3MjgzIDIuOTkyMTMgNy4wNTgzM0wzLjYxMDg1IDYuNDM5NjFDMy44MDYxMSA2LjI0NDM1IDQuMTIyNjkgNi4yNDQzNSA0LjMxNzk2IDYuNDM5NjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx3bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41IDUuMjVDMS45MTQyMSA1LjI1IDIuMjUgNC45MTQyMSAyLjI1IDQuNUMyLjI1IDQuMDg1NzkgMS45MTQyMSAzLjc1IDEuNSAzLjc1QzEuMDg1NzkgMy43NSAwLjc1IDQuMDg1NzkgMC43NSA0LjVDMC43NSA0LjkxNDIxIDEuMDg1NzkgNS4yNSAxLjUgNS4yNVpNNCA0LjVDNCA0LjIyMzg2IDQuMjIzODYgNCA0LjUgNEgxMy41QzEzLjc3NjEgNCAxNCA0LjIyMzg2IDE0IDQuNUMxNCA0Ljc3NjE0IDEzLjc3NjEgNSAxMy41IDVINC41QzQuMjIzODYgNSA0IDQuNzc2MTQgNCA0LjVaTTQuNSA3QzQuMjIzODYgNyA0IDcuMjIzODYgNCA3LjVDNCA3Ljc3NjE0IDQuMjIzODYgOCA0LjUgOEgxMy41QzEzLjc3NjEgOCAxNCA3Ljc3NjE0IDE0IDcuNUMxNCA3LjIyMzg2IDEzLjc3NjEgNyAxMy41IDdINC41Wk00LjUgMTBDNC4yMjM4NiAxMCA0IDEwLjIyMzkgNCAxMC41QzQgMTAuNzc2MSA0LjIyMzg2IDExIDQuNSAxMUgxMy41QzEzLjc3NjEgMTEgMTQgMTAuNzc2MSAxNCAxMC41QzE0IDEwLjIyMzkgMTMuNzc2MSAxMCAxMy41IDEwSDQuNVpNMi4yNSA3LjVDMi4yNSA3LjkxNDIxIDEuOTE0MjEgOC4yNSAxLjUgOC4yNUMxLjA4NTc5IDguMjUgMC43NSA3LjkxNDIxIDAuNzUgNy41QzAuNzUgNy4wODU3OSAxLjA4NTc5IDYuNzUgMS41IDYuNzVDMS45MTQyMSA2Ljc1IDIuMjUgNy4wODU3OSAyLjI1IDcuNVpNMS41IDExLjI1QzEuOTE0MjEgMTEuMjUgMi4yNSAxMC45MTQyIDIuMjUgMTAuNUMyLjI1IDEwLjA4NTggMS45MTQyMSA5Ljc1IDEuNSA5Ljc1QzEuMDg1NzkgOS43NSAwLjc1IDEwLjA4NTggMC43NSAxMC41QzAuNzUgMTAuOTE0MiAxLjA4NTc5IDExLjI1IDEuNSAxMS4yNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHluPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDQuNjM2MDFDNSAzLjc2MDMxIDUuMjQyMTkgMy4xMDU0IDUuNjQzMjMgMi42NzM1N0M2LjAzOTM0IDIuMjQ3MDUgNi42NDU4MiAxLjk3ODMgNy41MDE0IDEuOTc4M0M4LjM1NzQ1IDEuOTc4MyA4Ljk2MzA2IDIuMjQ2NTIgOS4zNTgyMyAyLjY3MjA4QzkuNzU4MzggMy4xMDI5OSAxMCAzLjc1NzA4IDEwIDQuNjMzMjVWNS45OTk5OUg1VjQuNjM2MDFaTTQgNS45OTk5OVY0LjYzNjAxQzQgMy41ODE0OCA0LjI5MzM5IDIuNjU3NTQgNC45MTA0OSAxLjk5MzA3QzUuNTMyNTIgMS4zMjMyOSA2LjQyNjc1IDAuOTc4MzAyIDcuNTAxNCAwLjk3ODMwMkM4LjU3NTgzIDAuOTc4MzAyIDkuNDY5NTIgMS4zMjIzMyAxMC4wOTEgMS45OTE2MkMxMC43MDc2IDIuNjU1NTcgMTEgMy41Nzg5NiAxMSA0LjYzMzI1VjUuOTk5OTlIMTJDMTIuNTUyMyA1Ljk5OTk5IDEzIDYuNDQ3NzEgMTMgNi45OTk5OVYxM0MxMyAxMy41NTIzIDEyLjU1MjMgMTQgMTIgMTRIM0MyLjQ0NzcyIDE0IDIgMTMuNTUyMyAyIDEzVjYuOTk5OTlDMiA2LjQ0NzcxIDIuNDQ3NzIgNS45OTk5OSAzIDUuOTk5OTlINFpNMyA2Ljk5OTk5SDEyVjEzSDNWNi45OTk5OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGJuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5ODYgMEM2LjMyNTcgMCA1LjM2MTA3IDAuMzg5NDMgNC43Mzc1MyAxLjE5MzYxQzQuMjM3NDUgMS44Mzg1NiA0IDIuNjgyNDIgNCAzLjYzMzI1SDVDNSAyLjg0MzEzIDUuMTk2OTEgMi4yMzMxMiA1LjUyNzggMS44MDYzNkM1LjkxNjE1IDEuMzA1NTIgNi41NTE1MiAxIDcuNDk4NiAxQzguMzU2ODMgMSA4Ljk2MzM2IDEuMjY1MDIgOS4zNTg0NiAxLjY4NjIzQzkuNzU3OTMgMi4xMTIxMSAxMCAyLjc2MDQ0IDEwIDMuNjM2MDFWNkgzQzIuNDQ3NzIgNiAyIDYuNDQ3NzIgMiA3VjEzQzIgMTMuNTUyMyAyLjQ0NzcyIDE0IDMgMTRIMTJDMTIuNTUyMyAxNCAxMyAxMy41NTIzIDEzIDEzVjdDMTMgNi40NDc3MSAxMi41NTIzIDYgMTIgNkgxMVYzLjYzNjAxQzExIDIuNTgxMzUgMTAuNzA2NSAxLjY2MTY3IDEwLjA4NzggMS4wMDIxQzkuNDY0NzcgMC4zMzc4NzEgOC41NzA2MSAwIDcuNDk4NiAwWk0zIDdIMTJWMTNIM1Y3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkgMy42MzYwMUM5IDIuNzYwNDQgOS4yNDIwNyAyLjExMjExIDkuNjQxNTQgMS42ODYyM0MxMC4wMzY2IDEuMjY1MDIgMTAuNjQzMiAxIDExLjUwMTQgMUMxMi40NDg1IDEgMTMuMDgzOSAxLjMwNTUyIDEzLjQ3MjIgMS44MDYzNkMxMy44MDMxIDIuMjMzMTIgMTQgMi44NDMxMyAxNCAzLjYzMzI1SDE1QzE1IDIuNjgyNDIgMTQuNzYyNiAxLjgzODU2IDE0LjI2MjUgMS4xOTM2MUMxMy42Mzg5IDAuMzg5NDMgMTIuNjc0MyAwIDExLjUwMTQgMEMxMC40Mjk0IDAgOS41MzUyMyAwLjMzNzg3MSA4LjkxMjE4IDEuMDAyMUM4LjI5MzUxIDEuNjYxNjcgOCAyLjU4MTM1IDggMy42MzYwMVY2SDFDMC40NDc3MTUgNiAwIDYuNDQ3NzIgMCA3VjEzQzAgMTMuNTUyMyAwLjQ0NzcxNSAxNCAxIDE0SDEwQzEwLjU1MjMgMTQgMTEgMTMuNTUyMyAxMSAxM1Y3QzExIDYuNDQ3NzIgMTAuNTUyMyA2IDEwIDZIOVYzLjYzNjAxWk0xIDdIMTBWMTNIMVY3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sT249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMzUzNTUgMS44NTM1NUMzLjU0ODgyIDEuNjU4MjkgMy41NDg4MiAxLjM0MTcxIDMuMzUzNTUgMS4xNDY0NUMzLjE1ODI5IDAuOTUxMTg0IDIuODQxNzEgMC45NTExODQgMi42NDY0NSAxLjE0NjQ1TDAuNjQ2NDQ3IDMuMTQ2NDVDMC40NTExODQgMy4zNDE3MSAwLjQ1MTE4NCAzLjY1ODI5IDAuNjQ2NDQ3IDMuODUzNTVMMi42NDY0NSA1Ljg1MzU1QzIuODQxNzEgNi4wNDg4MiAzLjE1ODI5IDYuMDQ4ODIgMy4zNTM1NSA1Ljg1MzU1QzMuNTQ4ODIgNS42NTgyOSAzLjU0ODgyIDUuMzQxNzEgMy4zNTM1NSA1LjE0NjQ1TDIuMjA3MTEgNEg5LjVDMTEuNDMzIDQgMTMgNS41NjcgMTMgNy41QzEzIDcuNzc2MTQgMTMuMjIzOSA4IDEzLjUgOEMxMy43NzYxIDggMTQgNy43NzYxNCAxNCA3LjVDMTQgNS4wMTQ3MiAxMS45ODUzIDMgOS41IDNIMi4yMDcxMUwzLjM1MzU1IDEuODUzNTVaTTIgNy41QzIgNy4yMjM4NiAxLjc3NjE0IDcgMS41IDdDMS4yMjM4NiA3IDEgNy4yMjM4NiAxIDcuNUMxIDkuOTg1MjggMy4wMTQ3MiAxMiA1LjUgMTJIMTIuNzkyOUwxMS42NDY0IDEzLjE0NjRDMTEuNDUxMiAxMy4zNDE3IDExLjQ1MTIgMTMuNjU4MyAxMS42NDY0IDEzLjg1MzZDMTEuODQxNyAxNC4wNDg4IDEyLjE1ODMgMTQuMDQ4OCAxMi4zNTM2IDEzLjg1MzZMMTQuMzUzNiAxMS44NTM2QzE0LjU0ODggMTEuNjU4MyAxNC41NDg4IDExLjM0MTcgMTQuMzUzNiAxMS4xNDY0TDEyLjM1MzYgOS4xNDY0NUMxMi4xNTgzIDguOTUxMTggMTEuODQxNyA4Ljk1MTE4IDExLjY0NjQgOS4xNDY0NUMxMS40NTEyIDkuMzQxNzEgMTEuNDUxMiA5LjY1ODI5IDExLjY0NjQgOS44NTM1NUwxMi43OTI5IDExSDUuNUMzLjU2NyAxMSAyIDkuNDMzIDIgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjkgMC40OTk5NzZDMTMuOSAwLjI3OTA2MiAxMy43MjA5IDAuMDk5OTc1NiAxMy41IDAuMDk5OTc1NkMxMy4yNzkxIDAuMDk5OTc1NiAxMy4xIDAuMjc5MDYyIDEzLjEgMC40OTk5NzZWMS4wOTk5OEgxMi41QzEyLjI3OTEgMS4wOTk5OCAxMi4xIDEuMjc5MDYgMTIuMSAxLjQ5OTk4QzEyLjEgMS43MjA4OSAxMi4yNzkxIDEuODk5OTggMTIuNSAxLjg5OTk4SDEzLjFWMi40OTk5OEMxMy4xIDIuNzIwODkgMTMuMjc5MSAyLjg5OTk4IDEzLjUgMi44OTk5OEMxMy43MjA5IDIuODk5OTggMTMuOSAyLjcyMDg5IDEzLjkgMi40OTk5OFYxLjg5OTk4SDE0LjVDMTQuNzIwOSAxLjg5OTk4IDE0LjkgMS43MjA4OSAxNC45IDEuNDk5OThDMTQuOSAxLjI3OTA2IDE0LjcyMDkgMS4wOTk5OCAxNC41IDEuMDk5OThIMTMuOVYwLjQ5OTk3NlpNMTEuODUzNiAzLjE0NjQyQzEyLjA0ODggMy4zNDE2OCAxMi4wNDg4IDMuNjU4MjYgMTEuODUzNiAzLjg1MzUzTDEwLjg1MzYgNC44NTM1M0MxMC42NTgzIDUuMDQ4NzkgMTAuMzQxNyA1LjA0ODc5IDEwLjE0NjUgNC44NTM1M0M5Ljk1MTIgNC42NTgyNyA5Ljk1MTIgNC4zNDE2OSAxMC4xNDY1IDQuMTQ2NDJMMTEuMTQ2NCAzLjE0NjQzQzExLjM0MTcgMi45NTExNiAxMS42NTgzIDIuOTUxMTYgMTEuODUzNiAzLjE0NjQyWk05Ljg1MzU3IDUuMTQ2NDJDMTAuMDQ4OCA1LjM0MTY4IDEwLjA0ODggNS42NTgyNyA5Ljg1MzU3IDUuODUzNTNMMi44NTM1NSAxMi44NTM1QzIuNjU4MjkgMTMuMDQ4OCAyLjM0MTcxIDEzLjA0ODggMi4xNDY0NSAxMi44NTM1QzEuOTUxMTggMTIuNjU4MyAxLjk1MTE4IDEyLjM0MTcgMi4xNDY0NSAxMi4xNDY0TDkuMTQ2NDYgNS4xNDY0MkM5LjM0MTcyIDQuOTUxMTYgOS42NTgzMSA0Ljk1MTE2IDkuODUzNTcgNS4xNDY0MlpNMTMuNSA1LjA5OTk4QzEzLjcyMDkgNS4wOTk5OCAxMy45IDUuMjc5MDYgMTMuOSA1LjQ5OTk4VjYuMDk5OThIMTQuNUMxNC43MjA5IDYuMDk5OTggMTQuOSA2LjI3OTA2IDE0LjkgNi40OTk5OEMxNC45IDYuNzIwODkgMTQuNzIwOSA2Ljg5OTk4IDE0LjUgNi44OTk5OEgxMy45VjcuNDk5OThDMTMuOSA3LjcyMDg5IDEzLjcyMDkgNy44OTk5OCAxMy41IDcuODk5OThDMTMuMjc5MSA3Ljg5OTk4IDEzLjEgNy43MjA4OSAxMy4xIDcuNDk5OThWNi44OTk5OEgxMi41QzEyLjI3OTEgNi44OTk5OCAxMi4xIDYuNzIwODkgMTIuMSA2LjQ5OTk4QzEyLjEgNi4yNzkwNiAxMi4yNzkxIDYuMDk5OTggMTIuNSA2LjA5OTk4SDEzLjFWNS40OTk5OEMxMy4xIDUuMjc5MDYgMTMuMjc5MSA1LjA5OTk4IDEzLjUgNS4wOTk5OFpNOC45MDAwMiAwLjQ5OTk3NkM4LjkwMDAyIDAuMjc5MDYyIDguNzIwOTMgMC4wOTk5NzU2IDguNTAwMDIgMC4wOTk5NzU2QzguMjc5MSAwLjA5OTk3NTYgOC4xMDAwMiAwLjI3OTA2MiA4LjEwMDAyIDAuNDk5OTc2VjEuMDk5OThINy41MDAwMkM3LjI3OTEgMS4wOTk5OCA3LjEwMDAyIDEuMjc5MDYgNy4xMDAwMiAxLjQ5OTk4QzcuMTAwMDIgMS43MjA4OSA3LjI3OTEgMS44OTk5OCA3LjUwMDAyIDEuODk5OThIOC4xMDAwMlYyLjQ5OTk4QzguMTAwMDIgMi43MjA4OSA4LjI3OTEgMi44OTk5OCA4LjUwMDAyIDIuODk5OThDOC43MjA5MyAyLjg5OTk4IDguOTAwMDIgMi43MjA4OSA4LjkwMDAyIDIuNDk5OThWMS44OTk5OEg5LjUwMDAyQzkuNzIwOTMgMS44OTk5OCA5LjkwMDAyIDEuNzIwODkgOS45MDAwMiAxLjQ5OTk4QzkuOTAwMDIgMS4yNzkwNiA5LjcyMDkzIDEuMDk5OTggOS41MDAwMiAxLjA5OTk4SDguOTAwMDJWMC40OTk5NzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxNbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAgNi41QzEwIDguNDMzIDguNDMzIDEwIDYuNSAxMEM0LjU2NyAxMCAzIDguNDMzIDMgNi41QzMgNC41NjcgNC41NjcgMyA2LjUgM0M4LjQzMyAzIDEwIDQuNTY3IDEwIDYuNVpNOS4zMDg4NCAxMC4wMTU5QzguNTM5MDEgMTAuNjMxOCA3LjU2MjUxIDExIDYuNSAxMUM0LjAxNDcyIDExIDIgOC45ODUyOCAyIDYuNUMyIDQuMDE0NzIgNC4wMTQ3MiAyIDYuNSAyQzguOTg1MjggMiAxMSA0LjAxNDcyIDExIDYuNUMxMSA3LjU2MjUxIDEwLjYzMTggOC41MzkwMSAxMC4wMTU5IDkuMzA4ODRMMTIuODUzNiAxMi4xNDY0QzEzLjA0ODggMTIuMzQxNyAxMy4wNDg4IDEyLjY1ODMgMTIuODUzNiAxMi44NTM2QzEyLjY1ODMgMTMuMDQ4OCAxMi4zNDE3IDEzLjA0ODggMTIuMTQ2NCAxMi44NTM2TDkuMzA4ODQgMTAuMDE1OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFNuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjQ5OTg4IDIuMDAwMTJDMS43NzYwMiAyLjAwMDEyIDEuOTk5ODggMS43NzYyNiAxLjk5OTg4IDEuNTAwMTJDMS45OTk4OCAxLjIyMzk4IDEuNzc2MDIgMS4wMDAxMiAxLjQ5OTg4IDEuMDAwMTJDMS4yMjM3NCAxLjAwMDEyIDAuOTk5ODc4IDEuMjIzOTggMC45OTk4NzggMS41MDAxMkMwLjk5OTg3OCAxLjc3NjI2IDEuMjIzNzQgMi4wMDAxMiAxLjQ5OTg4IDIuMDAwMTJaTTQuNDk5ODggMi4wMDAxMkM0Ljc3NjAyIDIuMDAwMTIgNC45OTk4OCAxLjc3NjI2IDQuOTk5ODggMS41MDAxMkM0Ljk5OTg4IDEuMjIzOTggNC43NzYwMiAxLjAwMDEyIDQuNDk5ODggMS4wMDAxMkM0LjIyMzc0IDEuMDAwMTIgMy45OTk4OCAxLjIyMzk4IDMuOTk5ODggMS41MDAxMkMzLjk5OTg4IDEuNzc2MjYgNC4yMjM3NCAyLjAwMDEyIDQuNDk5ODggMi4wMDAxMlpNNy45OTk4OCAxLjUwMDEyQzcuOTk5ODggMS43NzYyNiA3Ljc3NjAyIDIuMDAwMTIgNy40OTk4OCAyLjAwMDEyQzcuMjIzNzQgMi4wMDAxMiA2Ljk5OTg4IDEuNzc2MjYgNi45OTk4OCAxLjUwMDEyQzYuOTk5ODggMS4yMjM5OCA3LjIyMzc0IDEuMDAwMTIgNy40OTk4OCAxLjAwMDEyQzcuNzc2MDIgMS4wMDAxMiA3Ljk5OTg4IDEuMjIzOTggNy45OTk4OCAxLjUwMDEyWk0xMC40OTk5IDIuMDAwMTJDMTAuNzc2IDIuMDAwMTIgMTAuOTk5OSAxLjc3NjI2IDEwLjk5OTkgMS41MDAxMkMxMC45OTk5IDEuMjIzOTggMTAuNzc2IDEuMDAwMTIgMTAuNDk5OSAxLjAwMDEyQzEwLjIyMzcgMS4wMDAxMiA5Ljk5OTg4IDEuMjIzOTggOS45OTk4OCAxLjUwMDEyQzkuOTk5ODggMS43NzYyNiAxMC4yMjM3IDIuMDAwMTIgMTAuNDk5OSAyLjAwMDEyWk0xMy45OTk5IDEuNTAwMTJDMTMuOTk5OSAxLjc3NjI2IDEzLjc3NiAyLjAwMDEyIDEzLjQ5OTkgMi4wMDAxMkMxMy4yMjM3IDIuMDAwMTIgMTIuOTk5OSAxLjc3NjI2IDEyLjk5OTkgMS41MDAxMkMxMi45OTk5IDEuMjIzOTggMTMuMjIzNyAxLjAwMDEyIDEzLjQ5OTkgMS4wMDAxMkMxMy43NzYgMS4wMDAxMiAxMy45OTk5IDEuMjIzOTggMTMuOTk5OSAxLjUwMDEyWk0xLjQ5OTg4IDE0LjAwMDFDMS43NzYwMiAxNC4wMDAxIDEuOTk5ODggMTMuNzc2MyAxLjk5OTg4IDEzLjUwMDFDMS45OTk4OCAxMy4yMjQgMS43NzYwMiAxMy4wMDAxIDEuNDk5ODggMTMuMDAwMUMxLjIyMzc0IDEzLjAwMDEgMC45OTk4NzggMTMuMjI0IDAuOTk5ODc4IDEzLjUwMDFDMC45OTk4NzggMTMuNzc2MyAxLjIyMzc0IDE0LjAwMDEgMS40OTk4OCAxNC4wMDAxWk0xLjk5OTg4IDEwLjUwMDFDMS45OTk4OCAxMC43NzYzIDEuNzc2MDIgMTEuMDAwMSAxLjQ5OTg4IDExLjAwMDFDMS4yMjM3NCAxMS4wMDAxIDAuOTk5ODc4IDEwLjc3NjMgMC45OTk4NzggMTAuNTAwMUMwLjk5OTg3OCAxMC4yMjQgMS4yMjM3NCAxMC4wMDAxIDEuNDk5ODggMTAuMDAwMUMxLjc3NjAyIDEwLjAwMDEgMS45OTk4OCAxMC4yMjQgMS45OTk4OCAxMC41MDAxWk0xLjQ5OTg4IDguMDAwMTJDMS43NzYwMiA4LjAwMDEyIDEuOTk5ODggNy43NzYyNiAxLjk5OTg4IDcuNTAwMTJDMS45OTk4OCA3LjIyMzk4IDEuNzc2MDIgNy4wMDAxMiAxLjQ5OTg4IDcuMDAwMTJDMS4yMjM3NCA3LjAwMDEyIDAuOTk5ODc4IDcuMjIzOTggMC45OTk4NzggNy41MDAxMkMwLjk5OTg3OCA3Ljc3NjI2IDEuMjIzNzQgOC4wMDAxMiAxLjQ5OTg4IDguMDAwMTJaTTEuOTk5ODggNC41MDAxMkMxLjk5OTg4IDQuNzc2MjYgMS43NzYwMiA1LjAwMDEyIDEuNDk5ODggNS4wMDAxMkMxLjIyMzc0IDUuMDAwMTIgMC45OTk4NzggNC43NzYyNiAwLjk5OTg3OCA0LjUwMDEyQzAuOTk5ODc4IDQuMjIzOTggMS4yMjM3NCA0LjAwMDEyIDEuNDk5ODggNC4wMDAxMkMxLjc3NjAyIDQuMDAwMTIgMS45OTk4OCA0LjIyMzk4IDEuOTk5ODggNC41MDAxMlpNMTMuNDk5OSAxMS4wMDAxQzEzLjc3NiAxMS4wMDAxIDEzLjk5OTkgMTAuNzc2MyAxMy45OTk5IDEwLjUwMDFDMTMuOTk5OSAxMC4yMjQgMTMuNzc2IDEwLjAwMDEgMTMuNDk5OSAxMC4wMDAxQzEzLjIyMzcgMTAuMDAwMSAxMi45OTk5IDEwLjIyNCAxMi45OTk5IDEwLjUwMDFDMTIuOTk5OSAxMC43NzYzIDEzLjIyMzcgMTEuMDAwMSAxMy40OTk5IDExLjAwMDFaTTEzLjk5OTkgNy41MDAxMkMxMy45OTk5IDcuNzc2MjYgMTMuNzc2IDguMDAwMTIgMTMuNDk5OSA4LjAwMDEyQzEzLjIyMzcgOC4wMDAxMiAxMi45OTk5IDcuNzc2MjYgMTIuOTk5OSA3LjUwMDEyQzEyLjk5OTkgNy4yMjM5OCAxMy4yMjM3IDcuMDAwMTIgMTMuNDk5OSA3LjAwMDEyQzEzLjc3NiA3LjAwMDEyIDEzLjk5OTkgNy4yMjM5OCAxMy45OTk5IDcuNTAwMTJaTTEzLjQ5OTkgNS4wMDAxMkMxMy43NzYgNS4wMDAxMiAxMy45OTk5IDQuNzc2MjYgMTMuOTk5OSA0LjUwMDEyQzEzLjk5OTkgNC4yMjM5OCAxMy43NzYgNC4wMDAxMiAxMy40OTk5IDQuMDAwMTJDMTMuMjIzNyA0LjAwMDEyIDEyLjk5OTkgNC4yMjM5OCAxMi45OTk5IDQuNTAwMTJDMTIuOTk5OSA0Ljc3NjI2IDEzLjIyMzcgNS4wMDAxMiAxMy40OTk5IDUuMDAwMTJaTTQuOTk5ODggMTMuNTAwMUM0Ljk5OTg4IDEzLjc3NjMgNC43NzYwMiAxNC4wMDAxIDQuNDk5ODggMTQuMDAwMUM0LjIyMzc0IDE0LjAwMDEgMy45OTk4OCAxMy43NzYzIDMuOTk5ODggMTMuNTAwMUMzLjk5OTg4IDEzLjIyNCA0LjIyMzc0IDEzLjAwMDEgNC40OTk4OCAxMy4wMDAxQzQuNzc2MDIgMTMuMDAwMSA0Ljk5OTg4IDEzLjIyNCA0Ljk5OTg4IDEzLjUwMDFaTTcuNDk5ODggMTQuMDAwMUM3Ljc3NjAyIDE0LjAwMDEgNy45OTk4OCAxMy43NzYzIDcuOTk5ODggMTMuNTAwMUM3Ljk5OTg4IDEzLjIyNCA3Ljc3NjAyIDEzLjAwMDEgNy40OTk4OCAxMy4wMDAxQzcuMjIzNzQgMTMuMDAwMSA2Ljk5OTg4IDEzLjIyNCA2Ljk5OTg4IDEzLjUwMDFDNi45OTk4OCAxMy43NzYzIDcuMjIzNzQgMTQuMDAwMSA3LjQ5OTg4IDE0LjAwMDFaTTEwLjk5OTkgMTMuNTAwMUMxMC45OTk5IDEzLjc3NjMgMTAuNzc2IDE0LjAwMDEgMTAuNDk5OSAxNC4wMDAxQzEwLjIyMzcgMTQuMDAwMSA5Ljk5OTg4IDEzLjc3NjMgOS45OTk4OCAxMy41MDAxQzkuOTk5ODggMTMuMjI0IDEwLjIyMzcgMTMuMDAwMSAxMC40OTk5IDEzLjAwMDFDMTAuNzc2IDEzLjAwMDEgMTAuOTk5OSAxMy4yMjQgMTAuOTk5OSAxMy41MDAxWk0xMy40OTk5IDE0LjAwMDFDMTMuNzc2IDE0LjAwMDEgMTMuOTk5OSAxMy43NzYzIDEzLjk5OTkgMTMuNTAwMUMxMy45OTk5IDEzLjIyNCAxMy43NzYgMTMuMDAwMSAxMy40OTk5IDEzLjAwMDFDMTMuMjIzNyAxMy4wMDAxIDEyLjk5OTkgMTMuMjI0IDEyLjk5OTkgMTMuNTAwMUMxMi45OTk5IDEzLjc3NjMgMTMuMjIzNyAxNC4wMDAxIDEzLjQ5OTkgMTQuMDAwMVpNMy45OTk4OCA1LjAwMDEyQzMuOTk5ODggNC40NDc4NCA0LjQ0NzU5IDQuMDAwMTIgNC45OTk4OCA0LjAwMDEySDkuOTk5ODhDMTAuNTUyMiA0LjAwMDEyIDEwLjk5OTkgNC40NDc4NCAxMC45OTk5IDUuMDAwMTJWMTAuMDAwMUMxMC45OTk5IDEwLjU1MjQgMTAuNTUyMiAxMS4wMDAxIDkuOTk5ODggMTEuMDAwMUg0Ljk5OTg4QzQuNDQ3NTkgMTEuMDAwMSAzLjk5OTg4IDEwLjU1MjQgMy45OTk4OCAxMC4wMDAxVjUuMDAwMTJaTTQuOTk5ODggNS4wMDAxMkg5Ljk5OTg4VjEwLjAwMDFINC45OTk4OFY1LjAwMDEyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sX249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgMkgxNFYxM0gxTDEgMlpNMCAyQzAgMS40NDc3MiAwLjQ0NzcxNSAxIDEgMUgxNEMxNC41NTIzIDEgMTUgMS40NDc3MiAxNSAyVjEzQzE1IDEzLjU1MjMgMTQuNTUyMyAxNCAxNCAxNEgxQzAuNDQ3NzE1IDE0IDAgMTMuNTUyMyAwIDEzVjJaTTQuODc1IDcuNUM0Ljg3NSA2LjA1MDI1IDYuMDUwMjUgNC44NzUgNy41IDQuODc1QzguOTQ5NzUgNC44NzUgMTAuMTI1IDYuMDUwMjUgMTAuMTI1IDcuNUMxMC4xMjUgOC45NDk3NSA4Ljk0OTc1IDEwLjEyNSA3LjUgMTAuMTI1QzYuMDUwMjUgMTAuMTI1IDQuODc1IDguOTQ5NzUgNC44NzUgNy41Wk03LjUgMy44NzVDNS40OTc5NyAzLjg3NSAzLjg3NSA1LjQ5Nzk3IDMuODc1IDcuNUMzLjg3NSA5LjUwMjAzIDUuNDk3OTcgMTEuMTI1IDcuNSAxMS4xMjVDOS41MDIwMyAxMS4xMjUgMTEuMTI1IDkuNTAyMDMgMTEuMTI1IDcuNUMxMS4xMjUgNS40OTc5NyA5LjUwMjAzIDMuODc1IDcuNSAzLjg3NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGpuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDFDMC40NDc3MTUgMSAwIDEuNDQ3NzIgMCAyVjEzQzAgMTMuNTUyMyAwLjQ0NzcxNSAxNCAxIDE0SDE0QzE0LjU1MjMgMTQgMTUgMTMuNTUyMyAxNSAxM1YyQzE1IDEuNDQ3NzIgMTQuNTUyMyAxIDE0IDFIMVpNNy41IDEwLjYyNUM5LjIyNTg5IDEwLjYyNSAxMC42MjUgOS4yMjU4OSAxMC42MjUgNy41QzEwLjYyNSA1Ljc3NDExIDkuMjI1ODkgNC4zNzUgNy41IDQuMzc1QzUuNzc0MTEgNC4zNzUgNC4zNzUgNS43NzQxMSA0LjM3NSA3LjVDNC4zNzUgOS4yMjU4OSA1Ljc3NDExIDEwLjYyNSA3LjUgMTAuNjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuMjUgNy41QzIuMjUgNy4yMjM4NiAyLjQ3Mzg2IDcgMi43NSA3SDEyLjI1QzEyLjUyNjEgNyAxMi43NSA3LjIyMzg2IDEyLjc1IDcuNUMxMi43NSA3Ljc3NjE0IDEyLjUyNjEgOCAxMi4yNSA4SDIuNzVDMi40NzM4NiA4IDIuMjUgNy43NzYxNCAyLjI1IDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFBuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc2ODkyQzMuODQyMjIgMC44NzY4OTIgMC44NzcwNzUgMy44NDIwNCAwLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDExLjE1NzQgMy44NDIyMiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMxMS4xNTc2IDE0LjEyMjYgMTQuMTIyNyAxMS4xNTc0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDMuODQyMDQgMTEuMTU3NiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyWk0xLjgyNzA3IDcuNDk5NzJDMS44MjcwNyA0LjM2NjcxIDQuMzY2ODkgMS44MjY4OSA3LjQ5OTkxIDEuODI2ODlDMTAuNjMyOSAxLjgyNjg5IDEzLjE3MjcgNC4zNjY3MSAxMy4xNzI3IDcuNDk5NzJDMTMuMTcyNyAxMC42MzI3IDEwLjYzMjkgMTMuMTcyNiA3LjQ5OTkxIDEzLjE3MjZDNC4zNjY4OSAxMy4xNzI2IDEuODI3MDcgMTAuNjMyNyAxLjgyNzA3IDcuNDk5NzJaTTQuNTAwMDMgN0M0LjIyMzg5IDcgNC4wMDAwMyA3LjIyMzg2IDQuMDAwMDMgNy41QzQuMDAwMDMgNy43NzYxNCA0LjIyMzg5IDggNC41MDAwMyA4SDEwLjVDMTAuNzc2MiA4IDExIDcuNzc2MTQgMTEgNy41QzExIDcuMjIzODYgMTAuNzc2MiA3IDEwLjUgN0g0LjUwMDAzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sa249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuMTQ5MjEgMy45OTk5NkMyLjE0OTIxIDIuOTc3NzggMi45Nzc4NCAyLjE0OTE1IDQuMDAwMDIgMi4xNDkxNUM1LjAyMjE5IDIuMTQ5MTUgNS44NTA4MyAyLjk3Nzc4IDUuODUwODMgMy45OTk5NkM1Ljg1MDgzIDUuMDIyMTMgNS4wMjIxOSA1Ljg1MDc3IDQuMDAwMDIgNS44NTA3N0MyLjk3Nzg0IDUuODUwNzcgMi4xNDkyMSA1LjAyMjEzIDIuMTQ5MjEgMy45OTk5NlpNNC4wMDAwMiAxLjI0OTE1QzIuNDgwNzkgMS4yNDkxNSAxLjI0OTIxIDIuNDgwNzMgMS4yNDkyMSAzLjk5OTk2QzEuMjQ5MjEgNS41MTkxOSAyLjQ4MDc5IDYuNzUwNzcgNC4wMDAwMiA2Ljc1MDc3QzUuNTE5MjUgNi43NTA3NyA2Ljc1MDgzIDUuNTE5MTkgNi43NTA4MyAzLjk5OTk2QzYuNzUwODMgMi40ODA3MyA1LjUxOTI1IDEuMjQ5MTUgNC4wMDAwMiAxLjI0OTE1Wk01LjgyMDM0IDExLjAwMDFMMi40OTk5OCAxMi44MzY5VjkuMTYzMzFMNS44MjAzNCAxMS4wMDAxWk0yLjYzODgzIDguMjExNTlDMi4xNzIyOCA3Ljk1MzUgMS41OTk5OCA4LjI5MDkzIDEuNTk5OTggOC44MjQxMVYxMy4xNzYxQzEuNTk5OTggMTMuNzA5MyAyLjE3MjI4IDE0LjA0NjcgMi42Mzg4MyAxMy43ODg2TDYuNTcyMzUgMTEuNjEyNkM3LjA1Mzg5IDExLjM0NjIgNy4wNTM4OSAxMC42NTQgNi41NzIzNSAxMC4zODc2TDIuNjM4ODMgOC4yMTE1OVpNOC4zMDAwMSA5LjAwMDAzQzguMzAwMDEgOC42MTM0MyA4LjYxMzQxIDguMzAwMDMgOS4wMDAwMSA4LjMwMDAzSDEzQzEzLjM4NjYgOC4zMDAwMyAxMy43IDguNjEzNDMgMTMuNyA5LjAwMDAzVjEzQzEzLjcgMTMuMzg2NiAxMy4zODY2IDEzLjcgMTMgMTMuN0g5LjAwMDAxQzguNjEzNDEgMTMuNyA4LjMwMDAxIDEzLjM4NjYgOC4zMDAwMSAxM1Y5LjAwMDAzWk05LjIwMDAxIDkuMjAwMDNWMTIuOEgxMi44VjkuMjAwMDNIOS4yMDAwMVpNMTMuNDQzMiAyLjE5MzExQzEzLjYxODkgMi4wMTczNyAxMy42MTg5IDEuNzMyNDUgMTMuNDQzMiAxLjU1NjcxQzEzLjI2NzUgMS4zODA5OCAxMi45ODI2IDEuMzgwOTggMTIuODA2OCAxLjU1NjcxTDExIDMuMzYzNTNMOS4xOTMyMSAxLjU1Njc0QzkuMDE3NDggMS4zODEgOC43MzI1NSAxLjM4MSA4LjU1NjgyIDEuNTU2NzRDOC4zODEwOCAxLjczMjQ3IDguMzgxMDggMi4wMTc0IDguNTU2ODIgMi4xOTMxM0wxMC4zNjM2IDMuOTk5OTJMOC41NTY4MiA1LjgwNjcxQzguMzgxMDggNS45ODI0NSA4LjM4MTA4IDYuMjY3MzcgOC41NTY4MiA2LjQ0MzExQzguNzMyNTUgNi42MTg4NSA5LjAxNzQ4IDYuNjE4ODUgOS4xOTMyMSA2LjQ0MzExTDExIDQuNjM2MzJMMTIuODA2OCA2LjQ0MzE0QzEyLjk4MjYgNi42MTg4NyAxMy4yNjc1IDYuNjE4ODcgMTMuNDQzMiA2LjQ0MzE0QzEzLjYxODkgNi4yNjc0IDEzLjYxODkgNS45ODI0NyAxMy40NDMyIDUuODA2NzRMMTEuNjM2NCAzLjk5OTkyTDEzLjQ0MzIgMi4xOTMxMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEhuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjUgM0M0LjY3MTU3IDMgNCAzLjY3MTU3IDQgNC41QzQgNS4zMjg0MyA0LjY3MTU3IDYgNS41IDZDNi4zMjg0MyA2IDcgNS4zMjg0MyA3IDQuNUM3IDMuNjcxNTcgNi4zMjg0MyAzIDUuNSAzWk0zIDVDMy4wMTY3MSA1IDMuMDMzMjMgNC45OTkxOCAzLjA0OTUyIDQuOTk3NThDMy4yODAyMiA2LjEzOTkgNC4yODk2NyA3IDUuNSA3QzYuNzEwMzMgNyA3LjcxOTc4IDYuMTM5OSA3Ljk1MDQ4IDQuOTk3NThDNy45NjY3NyA0Ljk5OTE4IDcuOTgzMjkgNSA4IDVIMTMuNUMxMy43NzYxIDUgMTQgNC43NzYxNCAxNCA0LjVDMTQgNC4yMjM4NiAxMy43NzYxIDQgMTMuNSA0SDhDNy45ODMyOSA0IDcuOTY2NzcgNC4wMDA4MiA3Ljk1MDQ4IDQuMDAyNDJDNy43MTk3OCAyLjg2MDA5IDYuNzEwMzMgMiA1LjUgMkM0LjI4OTY3IDIgMy4yODAyMiAyLjg2MDA5IDMuMDQ5NTIgNC4wMDI0MkMzLjAzMzIzIDQuMDAwODIgMy4wMTY3MSA0IDMgNEgxLjVDMS4yMjM4NiA0IDEgNC4yMjM4NiAxIDQuNUMxIDQuNzc2MTQgMS4yMjM4NiA1IDEuNSA1SDNaTTExLjk1MDUgMTAuOTk3NkMxMS43MTk4IDEyLjEzOTkgMTAuNzEwMyAxMyA5LjUgMTNDOC4yODk2NyAxMyA3LjI4MDIyIDEyLjEzOTkgNy4wNDk1MiAxMC45OTc2QzcuMDMzMjMgMTAuOTk5MiA3LjAxNjcxIDExIDcgMTFIMS41QzEuMjIzODYgMTEgMSAxMC43NzYxIDEgMTAuNUMxIDEwLjIyMzkgMS4yMjM4NiAxMCAxLjUgMTBIN0M3LjAxNjcxIDEwIDcuMDMzMjMgMTAuMDAwOCA3LjA0OTUyIDEwLjAwMjRDNy4yODAyMiA4Ljg2MDEgOC4yODk2NyA4IDkuNSA4QzEwLjcxMDMgOCAxMS43MTk4IDguODYwMSAxMS45NTA1IDEwLjAwMjRDMTEuOTY2OCAxMC4wMDA4IDExLjk4MzMgMTAgMTIgMTBIMTMuNUMxMy43NzYxIDEwIDE0IDEwLjIyMzkgMTQgMTAuNUMxNCAxMC43NzYxIDEzLjc3NjEgMTEgMTMuNSAxMUgxMkMxMS45ODMzIDExIDExLjk2NjggMTAuOTk5MiAxMS45NTA1IDEwLjk5NzZaTTggMTAuNUM4IDkuNjcxNTcgOC42NzE1NyA5IDkuNSA5QzEwLjMyODQgOSAxMSA5LjY3MTU3IDExIDEwLjVDMTEgMTEuMzI4NCAxMC4zMjg0IDEyIDkuNSAxMkM4LjY3MTU3IDEyIDggMTEuMzI4NCA4IDEwLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxWbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSAxLjVDNSAxLjIyMzg2IDQuNzc2MTQgMSA0LjUgMUM0LjIyMzg2IDEgNCAxLjIyMzg2IDQgMS41TDQgN0M0IDcuMDE2NzEgNC4wMDA4MiA3LjAzMzIzIDQuMDAyNDIgNy4wNDk1MkMyLjg2MDA5IDcuMjgwMjIgMiA4LjI4OTY3IDIgOS41QzIgMTAuNzEwMyAyLjg2MDA5IDExLjcxOTggNC4wMDI0MiAxMS45NTA1QzQuMDAwODIgMTEuOTY2OCA0IDExLjk4MzMgNCAxMlYxMy41QzQgMTMuNzc2MSA0LjIyMzg2IDE0IDQuNSAxNEM0Ljc3NjE0IDE0IDUgMTMuNzc2MSA1IDEzLjVWMTJDNSAxMS45ODMzIDQuOTk5MTggMTEuOTY2OCA0Ljk5NzU4IDExLjk1MDVDNi4xMzk5IDExLjcxOTggNyAxMC43MTAzIDcgOS41QzcgOC4yODk2NyA2LjEzOTkgNy4yODAyMiA0Ljk5NzU4IDcuMDQ5NTJDNC45OTkxOCA3LjAzMzIzIDUgNy4wMTY3MSA1IDdMNSAxLjVaTTExIDEuNUMxMSAxLjIyMzg2IDEwLjc3NjEgMSAxMC41IDFDMTAuMjIzOSAxIDEwIDEuMjIzODYgMTAgMS41VjNDMTAgMy4wMTY3MSAxMC4wMDA4IDMuMDMzMjMgMTAuMDAyNCAzLjA0OTUyQzguODYwMSAzLjI4MDIyIDggNC4yODk2NyA4IDUuNUM4IDYuNzEwMzMgOC44NjAxIDcuNzE5NzggMTAuMDAyNCA3Ljk1MDQ4QzEwLjAwMDggNy45NjY3NyAxMCA3Ljk4MzI5IDEwIDhWMTMuNUMxMCAxMy43NzYxIDEwLjIyMzkgMTQgMTAuNSAxNEMxMC43NzYxIDE0IDExIDEzLjc3NjEgMTEgMTMuNVY4QzExIDcuOTgzMjkgMTAuOTk5MiA3Ljk2Njc3IDEwLjk5NzYgNy45NTA0OEMxMi4xMzk5IDcuNzE5NzggMTMgNi43MTAzMyAxMyA1LjVDMTMgNC4yODk2NyAxMi4xMzk5IDMuMjgwMjIgMTAuOTk3NiAzLjA0OTUyQzEwLjk5OTIgMy4wMzMyMyAxMSAzLjAxNjcxIDExIDNWMS41Wk00LjUgOEMzLjY3MTU3IDggMyA4LjY3MTU3IDMgOS41QzMgMTAuMzI4NCAzLjY3MTU3IDExIDQuNSAxMUM1LjMyODQzIDExIDYgMTAuMzI4NCA2IDkuNUM2IDguNjcxNTcgNS4zMjg0MyA4IDQuNSA4Wk05IDUuNUM5IDQuNjcxNTcgOS42NzE1NyA0IDEwLjUgNEMxMS4zMjg0IDQgMTIgNC42NzE1NyAxMiA1LjVDMTIgNi4zMjg0MyAxMS4zMjg0IDcgMTAuNSA3QzkuNjcxNTcgNyA5IDYuMzI4NDMgOSA1LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxSbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4yNTkyNSAzLjE2NjY3TDQuMzcwMzYgNS4zMzMzM1YxTDcuMjU5MjUgMy4xNjY2N1pNMSA4LjIyMjIyTDMuODg4ODkgNi4wNTU1NUwxIDMuODg4ODlWOC4yMjIyMlpNMSAxNEwzLjg4ODg5IDExLjgzMzNMMSA5LjY2NjY2VjE0Wk03Ljc0MDcyIDguMjIyMjJMMTAuNjI5NiA2LjA1NTU1TDcuNzQwNzIgMy44ODg4OVY4LjIyMjIyWk0xNCAzLjE2NjY3TDExLjExMTEgNS4zMzMzM1YxTDE0IDMuMTY2NjdaTTExLjExMTEgMTEuMTExMUwxNCA4Ljk0NDQ0TDExLjExMTEgNi43Nzc3N1YxMS4xMTExWk0zLjg4ODg5IDExLjExMTFMMSA4Ljk0NDQ0TDMuODg4ODkgNi43Nzc3N1YxMS4xMTExWk00LjM3MDM2IDYuMDU1NTVMNy4yNTkyNSA4LjIyMjIyVjMuODg4ODlMNC4zNzAzNiA2LjA1NTU1Wk0zLjg4ODg5IDUuMzMzMzNMMSAzLjE2NjY3TDMuODg4ODkgMVY1LjMzMzMzWk03Ljc0MDcyIDMuMTY2NjdMMTAuNjI5NiA1LjMzMzMzVjFMNy43NDA3MiAzLjE2NjY3Wk0xNCA4LjIyMjIyTDExLjExMTEgNi4wNTU1NUwxNCAzLjg4ODg5VjguMjIyMjJaTTExLjExMTEgMTEuODMzM0wxNCAxNFY5LjY2NjY2TDExLjExMTEgMTEuODMzM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEluPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjg5OTk4IDAuNDk5OTc2QzIuODk5OTggMC4yNzkwNjIgMi43MjA4OSAwLjA5OTk3NTYgMi40OTk5OCAwLjA5OTk3NTZDMi4yNzkwNiAwLjA5OTk3NTYgMi4wOTk5OCAwLjI3OTA2MiAyLjA5OTk4IDAuNDk5OTc2VjEuMDk5OThIMS40OTk5OEMxLjI3OTA2IDEuMDk5OTggMS4wOTk5OCAxLjI3OTA2IDEuMDk5OTggMS40OTk5OEMxLjA5OTk4IDEuNzIwODkgMS4yNzkwNiAxLjg5OTk4IDEuNDk5OTggMS44OTk5OEgyLjA5OTk4VjIuNDk5OThDMi4wOTk5OCAyLjcyMDg5IDIuMjc5MDYgMi44OTk5OCAyLjQ5OTk4IDIuODk5OThDMi43MjA4OSAyLjg5OTk4IDIuODk5OTggMi43MjA4OSAyLjg5OTk4IDIuNDk5OThWMS44OTk5OEgzLjQ5OTk4QzMuNzIwODkgMS44OTk5OCAzLjg5OTk4IDEuNzIwODkgMy44OTk5OCAxLjQ5OTk4QzMuODk5OTggMS4yNzkwNiAzLjcyMDg5IDEuMDk5OTggMy40OTk5OCAxLjA5OTk4SDIuODk5OThWMC40OTk5NzZaTTUuODk5OTggMy40OTk5OEM1Ljg5OTk4IDMuMjc5MDYgNS43MjA4OSAzLjA5OTk4IDUuNDk5OTggMy4wOTk5OEM1LjI3OTA2IDMuMDk5OTggNS4wOTk5OCAzLjI3OTA2IDUuMDk5OTggMy40OTk5OFY0LjA5OTk4SDQuNDk5OThDNC4yNzkwNiA0LjA5OTk4IDQuMDk5OTggNC4yNzkwNiA0LjA5OTk4IDQuNDk5OThDNC4wOTk5OCA0LjcyMDg5IDQuMjc5MDYgNC44OTk5OCA0LjQ5OTk4IDQuODk5OThINS4wOTk5OFY1LjQ5OTk4QzUuMDk5OTggNS43MjA4OSA1LjI3OTA2IDUuODk5OTggNS40OTk5OCA1Ljg5OTk4QzUuNzIwODkgNS44OTk5OCA1Ljg5OTk4IDUuNzIwODkgNS44OTk5OCA1LjQ5OTk4VjQuODk5OThINi40OTk5OEM2LjcyMDg5IDQuODk5OTggNi44OTk5OCA0LjcyMDg5IDYuODk5OTggNC40OTk5OEM2Ljg5OTk4IDQuMjc5MDYgNi43MjA4OSA0LjA5OTk4IDYuNDk5OTggNC4wOTk5OEg1Ljg5OTk4VjMuNDk5OThaTTEuODk5OTggNi40OTk5OEMxLjg5OTk4IDYuMjc5MDYgMS43MjA4OSA2LjA5OTk4IDEuNDk5OTggNi4wOTk5OEMxLjI3OTA2IDYuMDk5OTggMS4wOTk5OCA2LjI3OTA2IDEuMDk5OTggNi40OTk5OFY3LjA5OTk4SDAuNDk5OTc2QzAuMjc5MDYyIDcuMDk5OTggMC4wOTk5NzU2IDcuMjc5MDYgMC4wOTk5NzU2IDcuNDk5OThDMC4wOTk5NzU2IDcuNzIwODkgMC4yNzkwNjIgNy44OTk5OCAwLjQ5OTk3NiA3Ljg5OTk4SDEuMDk5OThWOC40OTk5OEMxLjA5OTk4IDguNzIwODkgMS4yNzkwNiA4Ljg5OTk3IDEuNDk5OTggOC44OTk5N0MxLjcyMDg5IDguODk5OTcgMS44OTk5OCA4LjcyMDg5IDEuODk5OTggOC40OTk5OFY3Ljg5OTk4SDIuNDk5OThDMi43MjA4OSA3Ljg5OTk4IDIuODk5OTggNy43MjA4OSAyLjg5OTk4IDcuNDk5OThDMi44OTk5OCA3LjI3OTA2IDIuNzIwODkgNy4wOTk5OCAyLjQ5OTk4IDcuMDk5OThIMS44OTk5OFY2LjQ5OTk4Wk04LjU0NDA2IDAuOTgxODRMOC4yNDYxOCAwLjk0MTU4NkM4LjAzMjc1IDAuOTE3Njc2IDcuOTA2OTIgMS4xNjU1IDguMDI5MzYgMS4zNDE5NEM4LjE3MDEzIDEuNTQ0NzkgOC4yOTk4MSAxLjc1NTkyIDguNDE3NTQgMS45NzQ0NUM4LjkxODc4IDIuOTA0ODUgOS4yMDMyMiAzLjk2OTMyIDkuMjAzMjIgNS4xMDAyMkM5LjIwMzIyIDguMzcyMDEgNi44MjI0NyAxMS4wODc4IDMuNjk4ODcgMTEuNjA5N0MzLjQ1NzM2IDExLjY1IDMuMjA5ODggMTEuNjc3MiAyLjk2MDA4IDExLjY5MDZDMi43NDU2MyAxMS43MDIgMi42MjcyOSAxMS45NTM1IDIuNzc3MjEgMTIuMTA3MkMyLjg0NTUxIDEyLjE3NzMgMi45MTUzNSAxMi4yNDU4IDIuOTg2NjcgMTIuMzEyOEwzLjA1ODgzIDEyLjM3OTVMMy4zMTg4MyAxMi42MDQ1TDMuNTA2ODQgMTIuNzUzMkwzLjYyNzk2IDEyLjg0MzNMMy44MTQ5MSAxMi45NzQyTDMuOTkwNzkgMTMuMDg5QzQuMTExNzUgMTMuMTY1MSA0LjIzNTM2IDEzLjIzNzUgNC4zNjE1NyAxMy4zMDU5TDQuNjI0OTYgMTMuNDQxMkw0Ljg4NTUzIDEzLjU2MDdMNS4xODgzNyAxMy42ODI4TDUuNDMxNjkgMTMuNzY4NkM1LjU2NTY0IDEzLjgxMjggNS43MDE0OSAxMy44NTI5IDUuODM4NTcgMTMuODg4NUM1Ljk0MjYyIDEzLjkxNTUgNi4wNDc2NyAxMy45NDAxIDYuMTU0MDUgMTMuOTYyMkM2LjI3OTkzIDEzLjk4ODMgNi40MDcxMyAxNC4wMTA5IDYuNTM1NDQgMTQuMDI5OEw2Ljg1MjQxIDE0LjA2ODVMNy4xMTkzNCAxNC4wODkyQzcuMjQ2MzcgMTQuMDk2NSA3LjM3NDM2IDE0LjEwMDIgNy41MDMyMiAxNC4xMDAyQzExLjE0ODMgMTQuMTAwMiAxNC4xMDMyIDExLjE0NTMgMTQuMTAzMiA3LjUwMDIzQzE0LjEwMzIgNy4yNTA0NCAxNC4wODkzIDcuMDAzODkgMTQuMDYyMyA2Ljc2MTMxTDE0LjAyNTUgNi40ODQwN0MxMy45OTEgNi4yNjA4MyAxMy45NDUzIDYuMDQxMjkgMTMuODg5MSA1LjgyNjQyQzEzLjgyMTMgNS41NjcwOSAxMy43MzgyIDUuMzEzOTggMTMuNjQwOSA1LjA2ODgxTDEzLjUyNzkgNC44MDEzMkwxMy40NTA3IDQuNjM1NDJMMTMuMzc2NiA0LjQ4NjY2QzEzLjIxNzggNC4xNzc3MyAxMy4wMzUzIDMuODgyOTUgMTIuODMxMiAzLjYwNDIzTDEyLjY3ODIgMy40MDM1MkwxMi40NzkzIDMuMTY0MzJMMTIuMzE1NyAyLjk4MzYxTDEyLjE5NjEgMi44NTk1MUwxMi4wMzU1IDIuNzAyNDZMMTEuODEzNCAyLjUwMTg0TDExLjQ5MjUgMi4yNDE5MUwxMS4yNDgzIDIuMDY0OThMMTAuOTU2MiAxLjg3NDQ2TDEwLjYzNDYgMS42ODg5NEwxMC4zMDczIDEuNTIzNzhMMTAuMTkzOCAxLjQ3MTc2TDkuOTU0ODggMS4zNzA2TDkuNjc3OTEgMS4yNjY5TDkuNDI1NjYgMS4xODQ2TDkuMTAwNzUgMS4wOTQ4OUw4LjgzNTk5IDEuMDM0ODZMOC41NDQwNiAwLjk4MTg0Wk0xMC40MDMyIDUuMzAwMjNDMTAuNDAzMiA0LjI3NTg4IDEwLjIwMDIgMy4yOTgyOSA5LjgzMjQ0IDIuNDA2MDRDMTEuNzYyMyAzLjI4OTk1IDEzLjEwMzIgNS4yMzg2MiAxMy4xMDMyIDcuNTAwMjNDMTMuMTAzMiAxMC41OTMgMTAuNTk2IDEzLjEwMDIgNy41MDMyMiAxMy4xMDAyQzYuNjM2NDYgMTMuMTAwMiA1LjgxNTk3IDEyLjkwMzYgNS4wODM1NSAxMi41NTIyQzYuNTQxOSAxMi4wOTQxIDcuODEwODEgMTEuMjA4MiA4Ljc0MzIyIDEwLjA0MTZDOC44Nzk2MyAxMC4yMjg0IDkuMTAwMjggMTAuMzQ5NyA5LjM0OTI4IDEwLjM0OTdDOS43NjM0OSAxMC4zNDk3IDEwLjA5OTMgMTAuMDEzOSAxMC4wOTkzIDkuNTk5NzFDMTAuMDk5MyA5LjI0MjU2IDkuODQ5NjUgOC45NDM3MyA5LjUxNTM1IDguODY4MTZDOS41Nzc0MSA4Ljc1MTY1IDkuNjM2NTMgOC42MzMzNCA5LjY5MjYgOC41MTMzMkM5Ljg4MzU4IDguNjMxNjMgMTAuMTA4OCA4LjY5OTkzIDEwLjM1IDguNjk5OTNDMTEuMDQwMyA4LjY5OTkzIDExLjYgOC4xNDAyOCAxMS42IDcuNDQ5OTNDMTEuNiA2Ljc1OTc2IDExLjA0MDYgNi4yMDAyNCAxMC4zNTA1IDYuMTk5OTNDMTAuMzg1MyA1LjkwNDg3IDEwLjQwMzIgNS42MDQ2NCAxMC40MDMyIDUuMzAwMjNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxabj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy44MTgxOSAwLjkzMTc5QzcuNjQyNDUgMC43NTYwNTQgNy4zNTc1MyAwLjc1NjA1NCA3LjE4MTc5IDAuOTMxNzlMNS40MzE3OSAyLjY4MTc5QzUuMjU2MDUgMi44NTc1MyA1LjI1NjA1IDMuMTQyNDUgNS40MzE3OSAzLjMxODE5QzUuNjA3NTMgMy40OTM5MiA1Ljg5MjQ1IDMuNDkzOTIgNi4wNjgxOSAzLjMxODE5TDYuOTk5OTkgMi4zODYzOFY1LjQ5OTk5QzYuOTk5OTkgNS43NzYxMyA3LjIyMzg1IDUuOTk5OTkgNy40OTk5OSA1Ljk5OTk5QzcuNzc2MTMgNS45OTk5OSA3Ljk5OTk5IDUuNzc2MTMgNy45OTk5OSA1LjQ5OTk5VjIuMzg2MzhMOC45MzE3OSAzLjMxODE5QzkuMTA3NTMgMy40OTM5MiA5LjM5MjQ1IDMuNDkzOTIgOS41NjgxOSAzLjMxODE5QzkuNzQzOTIgMy4xNDI0NSA5Ljc0MzkyIDIuODU3NTMgOS41NjgxOSAyLjY4MTc5TDcuODE4MTkgMC45MzE3OVpNNy45OTk5OSA5LjQ5OTk5QzcuOTk5OTkgOS4yMjM4NSA3Ljc3NjEzIDguOTk5OTkgNy40OTk5OSA4Ljk5OTk5QzcuMjIzODUgOC45OTk5OSA2Ljk5OTk5IDkuMjIzODUgNi45OTk5OSA5LjQ5OTk5VjEyLjYxMzZMNi4wNjgxOSAxMS42ODE4QzUuODkyNDUgMTEuNTA2MSA1LjYwNzUzIDExLjUwNjEgNS40MzE3OSAxMS42ODE4QzUuMjU2MDUgMTEuODU3NSA1LjI1NjA1IDEyLjE0MjQgNS40MzE3OSAxMi4zMTgyTDcuMTgxNzkgMTQuMDY4MkM3LjM1NzUzIDE0LjI0MzkgNy42NDI0NSAxNC4yNDM5IDcuODE4MTkgMTQuMDY4Mkw5LjU2ODE5IDEyLjMxODJDOS43NDM5MiAxMi4xNDI0IDkuNzQzOTIgMTEuODU3NSA5LjU2ODE5IDExLjY4MThDOS4zOTI0NSAxMS41MDYxIDkuMTA3NTMgMTEuNTA2MSA4LjkzMTc5IDExLjY4MThMNy45OTk5OSAxMi42MTM2VjkuNDk5OTlaTTguOTk5OTkgNy40OTk5OUM4Ljk5OTk5IDcuMjIzODUgOS4yMjM4NSA2Ljk5OTk5IDkuNDk5OTkgNi45OTk5OUgxMi42MTM2TDExLjY4MTggNi4wNjgxOUMxMS41MDYxIDUuODkyNDUgMTEuNTA2MSA1LjYwNzUzIDExLjY4MTggNS40MzE3OUMxMS44NTc1IDUuMjU2MDUgMTIuMTQyNCA1LjI1NjA1IDEyLjMxODIgNS40MzE3OUwxNC4wNjgyIDcuMTgxNzlDMTQuMjQzOSA3LjM1NzUzIDE0LjI0MzkgNy42NDI0NSAxNC4wNjgyIDcuODE4MTlMMTIuMzE4MiA5LjU2ODE5QzEyLjE0MjQgOS43NDM5MiAxMS44NTc1IDkuNzQzOTIgMTEuNjgxOCA5LjU2ODE5QzExLjUwNjEgOS4zOTI0NSAxMS41MDYxIDkuMTA3NTMgMTEuNjgxOCA4LjkzMTc5TDEyLjYxMzYgNy45OTk5OUg5LjQ5OTk5QzkuMjIzODUgNy45OTk5OSA4Ljk5OTk5IDcuNzc2MTMgOC45OTk5OSA3LjQ5OTk5Wk0zLjMxODE5IDYuMDY4MTlMMi4zODYzOCA2Ljk5OTk5SDUuNDk5OTlDNS43NzYxMyA2Ljk5OTk5IDUuOTk5OTkgNy4yMjM4NSA1Ljk5OTk5IDcuNDk5OTlDNS45OTk5OSA3Ljc3NjEzIDUuNzc2MTMgNy45OTk5OSA1LjQ5OTk5IDcuOTk5OTlIMi4zODYzOEwzLjMxODE5IDguOTMxNzlDMy40OTM5MiA5LjEwNzUzIDMuNDkzOTIgOS4zOTI0NSAzLjMxODE5IDkuNTY4MTlDMy4xNDI0NSA5Ljc0MzkyIDIuODU3NTMgOS43NDM5MiAyLjY4MTc5IDkuNTY4MTlMMC45MzE3OSA3LjgxODE5QzAuNzU2MDU0IDcuNjQyNDUgMC43NTYwNTQgNy4zNTc1MyAwLjkzMTc5IDcuMTgxNzlMMi42ODE3OSA1LjQzMTc5QzIuODU3NTMgNS4yNTYwNSAzLjE0MjQ1IDUuMjU2MDUgMy4zMTgxOSA1LjQzMTc5QzMuNDkzOTIgNS42MDc1MyAzLjQ5MzkyIDUuODkyNDUgMy4zMTgxOSA2LjA2ODE5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMjU3ODEgMy4xMTY4NEMzLjY3NzcxIDMuNDU3OTYgMy44MzUyMyAzLjQzMTkzIDQuNjIzNjkgMy4zNzkzM0wxMi4wNTcxIDIuOTMyOTlDMTIuMjE0NyAyLjkzMjk5IDEyLjA4MzYgMi43NzU3MSAxMi4wMzExIDIuNzQ5NTdMMTAuNzk2NSAxLjg1NzExQzEwLjU2IDEuNjczNDcgMTAuMjQ0OCAxLjQ2MzE1IDkuNjQwODMgMS41MTU3NkwyLjQ0MzA4IDIuMDQwNzRDMi4xODA1OSAyLjA2Njc3IDIuMTI4MTUgMi4xOTgwMSAyLjIzMjcgMi4zMDMyMkwzLjI1NzgxIDMuMTE2ODRaTTMuNzA0MSA0Ljg0OTE3VjEyLjY3MDRDMy43MDQxIDEzLjA5MDcgMy45MTQxNSAxMy4yNDggNC4zODY5MyAxMy4yMjJMMTIuNTU2MiAxMi43NDkzQzEzLjAyOTIgMTIuNzIzMyAxMy4wODE5IDEyLjQzNDEgMTMuMDgxOSAxMi4wOTI3VjQuMzIzOTdDMTMuMDgxOSAzLjk4MzA2IDEyLjk1MDggMy43OTkyMSAxMi42NjEyIDMuODI1NDVMNC4xMjQyMiA0LjMyMzk3QzMuODA5MTggNC4zNTA0NCAzLjcwNDEgNC41MDgwMyAzLjcwNDEgNC44NDkxN1pNMTEuNzY4OCA1LjI2ODcyQzExLjgyMTIgNS41MDUxOCAxMS43Njg4IDUuNzQxNDIgMTEuNTMxOSA1Ljc2Nzk5TDExLjEzODMgNS44NDY0MVYxMS42MjA1QzEwLjc5NjUgMTEuODA0MiAxMC40ODE0IDExLjkwOTIgMTAuMjE4OCAxMS45MDkyQzkuNzk4MzUgMTEuOTA5MiA5LjY5MzA1IDExLjc3NzkgOS4zNzgxMiAxMS4zODQ0TDYuODAzNDUgNy4zNDI0OVYxMS4yNTMyTDcuNjE4MTYgMTEuNDM3QzcuNjE4MTYgMTEuNDM3IDcuNjE4MTYgMTEuOTA5MiA2Ljk2MDg2IDExLjkwOTJMNS4xNDg3OSAxMi4wMTQzQzUuMDk2MTUgMTEuOTA5MiA1LjE0ODc5IDExLjY0NyA1LjMzMjU5IDExLjU5NDRMNS44MDU0NiAxMS40NjM0VjYuMjkyNzZMNS4xNDg5IDYuMjQwMTVDNS4wOTYyNSA2LjAwMzY5IDUuMjI3MzkgNS42NjI3OCA1LjU5NTQgNS42MzYzMUw3LjUzOTM1IDUuNTA1MjhMMTAuMjE4OCA5LjU5OThWNS45Nzc2NUw5LjUzNTY0IDUuODk5MjRDOS40ODMyIDUuNjEwMTggOS42OTMwNSA1LjQwMDI4IDkuOTU1NzYgNS4zNzQyNUwxMS43Njg4IDUuMjY4NzJaTTEuODM4NzQgMS4zMzIxMkw5LjMyNTU3IDAuNzgwNzg3QzEwLjI0NSAwLjcwMTkzMiAxMC40ODE1IDAuNzU0NzUzIDExLjA1OTQgMS4xNzQ1MkwxMy40NDkyIDIuODU0MjRDMTMuODQzNiAzLjE0MzA5IDEzLjk3NSAzLjIyMTczIDEzLjk3NSAzLjUzNjYxVjEyLjc0OTNDMTMuOTc1IDEzLjMyNjYgMTMuNzY0NyAxMy42NjgxIDEzLjAyOTMgMTMuNzIwM0w0LjMzNDkyIDE0LjI0NTRDMy43ODI5MSAxNC4yNzE3IDMuNTIwMTkgMTQuMTkzIDMuMjMxMTEgMTMuODI1M0wxLjQ3MTE2IDExLjU0MTlDMS4xNTU4IDExLjEyMTYgMS4wMjQ2NiAxMC44MDcxIDEuMDI0NjYgMTAuNDM5MlYyLjI1MDQxQzEuMDI0NjYgMS43NzgyNSAxLjIzNTA0IDEuMzg0NDEgMS44Mzg3NCAxLjMzMjEyWlwiLGZpbGw6bn0pKX0sRG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAxLjVDNC41IDQuMjUgMyA2LjUgMyA5QzMgMTEuNDg1MyA1LjAxNDcyIDEzLjUgNy41IDEzLjVDOS45ODUyOCAxMy41IDEyIDExLjQ4NTMgMTIgOUMxMiA2LjUgMTAuNSA0LjI1IDcuNSAxLjVaTTExIDlDMTEgNy4xMTIwMyA5Ljk3MzE1IDUuMjcxOTUgNy41IDIuODczNTdDNS4wMjY4NiA1LjI3MTk1IDQgNy4xMTIwMyA0IDlDNCAxMC45MzMgNS41NjcgMTIuNSA3LjUgMTIuNUM5LjQzMyAxMi41IDExIDEwLjkzMyAxMSA5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNDk5ODUgMS4xMDAwMUMzLjI3ODk0IDEuMTAwMDEgMy4wOTk4NSAxLjI3OTA5IDMuMDk5ODUgMS41MDAwMUMzLjA5OTg1IDEuNzIwOTIgMy4yNzg5NCAxLjkwMDAxIDMuNDk5ODUgMS45MDAwMUgxMS40OTk5QzExLjcyMDggMS45MDAwMSAxMS44OTk5IDEuNzIwOTIgMTEuODk5OSAxLjUwMDAxQzExLjg5OTkgMS4yNzkwOSAxMS43MjA4IDEuMTAwMDEgMTEuNDk5OSAxLjEwMDAxSDMuNDk5ODVaTTQuOTk5OTUgNC4yNTAwMUM0Ljk5OTk1IDMuOTczODcgNC43NzYwOSAzLjc1MDAxIDQuNDk5OTUgMy43NTAwMUM0LjIyMzgxIDMuNzUwMDEgMy45OTk5NSAzLjk3Mzg3IDMuOTk5OTUgNC4yNTAwMVY5LjU1MDAxQzMuOTk5OTUgMTEuNDgzIDUuNTY2OTUgMTMuMDUgNy40OTk5NSAxMy4wNUM5LjQzMjk1IDEzLjA1IDExIDExLjQ4MyAxMSA5LjU1MDAxVjQuMjUwMDFDMTEgMy45NzM4NyAxMC43NzYxIDMuNzUwMDEgMTAuNSAzLjc1MDAxQzEwLjIyMzggMy43NTAwMSA5Ljk5OTk1IDMuOTczODcgOS45OTk5NSA0LjI1MDAxVjkuNTUwMDFDOS45OTk5NSAxMC45MzA3IDguODgwNjYgMTIuMDUgNy40OTk5NSAxMi4wNUM2LjExOTI0IDEyLjA1IDQuOTk5OTUgMTAuOTMwNyA0Ljk5OTk1IDkuNTUwMDFWNC4yNTAwMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFRuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjg1NzE0IDJIMTIuMTQyOUMxMi42MTYyIDIgMTMgMi4zODM3NiAxMyAyLjg1NzE0VjEyLjE0MjlDMTMgMTIuNjE2MiAxMi42MTYyIDEzIDEyLjE0MjkgMTNIMi44NTcxNEMyLjM4Mzc2IDEzIDIgMTIuNjE2MiAyIDEyLjE0MjlWMi44NTcxNEMyIDIuMzgzNzYgMi4zODM3NiAyIDIuODU3MTQgMlpNMSAyLjg1NzE0QzEgMS44MzE0NyAxLjgzMTQ3IDEgMi44NTcxNCAxSDEyLjE0MjlDMTMuMTY4NSAxIDE0IDEuODMxNDcgMTQgMi44NTcxNFYxMi4xNDI5QzE0IDEzLjE2ODUgMTMuMTY4NSAxNCAxMi4xNDI5IDE0SDIuODU3MTRDMS44MzE0NyAxNCAxIDEzLjE2ODUgMSAxMi4xNDI5VjIuODU3MTRaTTcuNDk5ODggNS4wMDAxMkM3Ljc3NjAyIDUuMDAwMTIgNy45OTk4OCA0Ljc3NjI2IDcuOTk5ODggNC41MDAxMkM3Ljk5OTg4IDQuMjIzOTggNy43NzYwMiA0LjAwMDEyIDcuNDk5ODggNC4wMDAxMkM3LjIyMzc0IDQuMDAwMTIgNi45OTk4OCA0LjIyMzk4IDYuOTk5ODggNC41MDAxMkM2Ljk5OTg4IDQuNzc2MjYgNy4yMjM3NCA1LjAwMDEyIDcuNDk5ODggNS4wMDAxMlpNNC40OTk4OCAxMS4wMDAxQzQuNzc2MDIgMTEuMDAwMSA0Ljk5OTg4IDEwLjc3NjMgNC45OTk4OCAxMC41MDAxQzQuOTk5ODggMTAuMjI0IDQuNzc2MDIgMTAuMDAwMSA0LjQ5OTg4IDEwLjAwMDFDNC4yMjM3NCAxMC4wMDAxIDMuOTk5ODggMTAuMjI0IDMuOTk5ODggMTAuNTAwMUMzLjk5OTg4IDEwLjc3NjMgNC4yMjM3NCAxMS4wMDAxIDQuNDk5ODggMTEuMDAwMVpNNC45OTk4OCA3LjUwMDEyQzQuOTk5ODggNy43NzYyNiA0Ljc3NjAyIDguMDAwMTIgNC40OTk4OCA4LjAwMDEyQzQuMjIzNzQgOC4wMDAxMiAzLjk5OTg4IDcuNzc2MjYgMy45OTk4OCA3LjUwMDEyQzMuOTk5ODggNy4yMjM5OCA0LjIyMzc0IDcuMDAwMTIgNC40OTk4OCA3LjAwMDEyQzQuNzc2MDIgNy4wMDAxMiA0Ljk5OTg4IDcuMjIzOTggNC45OTk4OCA3LjUwMDEyWk00LjQ5OTg4IDUuMDAwMTJDNC43NzYwMiA1LjAwMDEyIDQuOTk5ODggNC43NzYyNiA0Ljk5OTg4IDQuNTAwMTJDNC45OTk4OCA0LjIyMzk4IDQuNzc2MDIgNC4wMDAxMiA0LjQ5OTg4IDQuMDAwMTJDNC4yMjM3NCA0LjAwMDEyIDMuOTk5ODggNC4yMjM5OCAzLjk5OTg4IDQuNTAwMTJDMy45OTk4OCA0Ljc3NjI2IDQuMjIzNzQgNS4wMDAxMiA0LjQ5OTg4IDUuMDAwMTJaTTEwLjk5OTkgMTAuNTAwMUMxMC45OTk5IDEwLjc3NjMgMTAuNzc2IDExLjAwMDEgMTAuNDk5OSAxMS4wMDAxQzEwLjIyMzcgMTEuMDAwMSA5Ljk5OTg4IDEwLjc3NjMgOS45OTk4OCAxMC41MDAxQzkuOTk5ODggMTAuMjI0IDEwLjIyMzcgMTAuMDAwMSAxMC40OTk5IDEwLjAwMDFDMTAuNzc2IDEwLjAwMDEgMTAuOTk5OSAxMC4yMjQgMTAuOTk5OSAxMC41MDAxWk0xMC40OTk5IDguMDAwMTJDMTAuNzc2IDguMDAwMTIgMTAuOTk5OSA3Ljc3NjI2IDEwLjk5OTkgNy41MDAxMkMxMC45OTk5IDcuMjIzOTggMTAuNzc2IDcuMDAwMTIgMTAuNDk5OSA3LjAwMDEyQzEwLjIyMzcgNy4wMDAxMiA5Ljk5OTg4IDcuMjIzOTggOS45OTk4OCA3LjUwMDEyQzkuOTk5ODggNy43NzYyNiAxMC4yMjM3IDguMDAwMTIgMTAuNDk5OSA4LjAwMDEyWk0xMC45OTk5IDQuNTAwMTJDMTAuOTk5OSA0Ljc3NjI2IDEwLjc3NiA1LjAwMDEyIDEwLjQ5OTkgNS4wMDAxMkMxMC4yMjM3IDUuMDAwMTIgOS45OTk4OCA0Ljc3NjI2IDkuOTk5ODggNC41MDAxMkM5Ljk5OTg4IDQuMjIzOTggMTAuMjIzNyA0LjAwMDEyIDEwLjQ5OTkgNC4wMDAxMkMxMC43NzYgNC4wMDAxMiAxMC45OTk5IDQuMjIzOTggMTAuOTk5OSA0LjUwMDEyWk03LjQ5OTg4IDExLjAwMDFDNy43NzYwMiAxMS4wMDAxIDcuOTk5ODggMTAuNzc2MyA3Ljk5OTg4IDEwLjUwMDFDNy45OTk4OCAxMC4yMjQgNy43NzYwMiAxMC4wMDAxIDcuNDk5ODggMTAuMDAwMUM3LjIyMzc0IDEwLjAwMDEgNi45OTk4OCAxMC4yMjQgNi45OTk4OCAxMC41MDAxQzYuOTk5ODggMTAuNzc2MyA3LjIyMzc0IDExLjAwMDEgNy40OTk4OCAxMS4wMDAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sJG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuMjAzMDcgMS4wNDMxMkMxLjAwNDgxIDAuOTU0OTk4IDAuNzcyMzQgMS4wMDQ4IDAuNjI3NTc3IDEuMTY2NDFDMC40ODI4MTMgMS4zMjgwMiAwLjQ1ODc5NCAxLjU2NDU1IDAuNTY4MTE2IDEuNzUxOTZMMy45MjExNSA3LjUwMDAyTDAuNTY4MTE2IDEzLjI0ODFDMC40NTg3OTQgMTMuNDM1NSAwLjQ4MjgxMyAxMy42NzIgMC42Mjc1NzcgMTMuODMzNkMwLjc3MjM0IDEzLjk5NTIgMS4wMDQ4MSAxNC4wNDUgMS4yMDMwNyAxMy45NTY5TDE0LjcwMzEgNy45NTY5MkMxNC44ODM2IDcuODc2NjcgMTUgNy42OTc2MSAxNSA3LjUwMDAyQzE1IDcuMzAyNDIgMTQuODgzNiA3LjEyMzM2IDE0LjcwMzEgNy4wNDMxMUwxLjIwMzA3IDEuMDQzMTJaTTQuODQ1NTIgNy4xMDAwMkwyLjIxMjM0IDIuNTg2TDEzLjI2ODkgNy41MDAwMkwyLjIxMjM0IDEyLjQxNEw0Ljg0NTUyIDcuOTAwMDJIOUM5LjIyMDkxIDcuOTAwMDIgOS40IDcuNzIwOTQgOS40IDcuNTAwMDJDOS40IDcuMjc5MTEgOS4yMjA5MSA3LjEwMDAyIDkgNy4xMDAwMkg0Ljg0NTUyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuMDQ5OTUgMi43NDk5OEM2LjA0OTk1IDIuNDQ2MjMgNS44MDM3MSAyLjE5OTk4IDUuNDk5OTUgMi4xOTk5OEM1LjE5NjE5IDIuMTk5OTggNC45NDk5NSAyLjQ0NjIzIDQuOTQ5OTUgMi43NDk5OFYxMi4yNUM0Ljk0OTk1IDEyLjU1MzcgNS4xOTYxOSAxMi44IDUuNDk5OTUgMTIuOEM1LjgwMzcxIDEyLjggNi4wNDk5NSAxMi41NTM3IDYuMDQ5OTUgMTIuMjVWMi43NDk5OFpNMTAuMDUgMi43NDk5OEMxMC4wNSAyLjQ0NjIzIDkuODAzNzEgMi4xOTk5OCA5LjQ5OTk1IDIuMTk5OThDOS4xOTYxOSAyLjE5OTk4IDguOTQ5OTUgMi40NDYyMyA4Ljk0OTk1IDIuNzQ5OThWMTIuMjVDOC45NDk5NSAxMi41NTM3IDkuMTk2MTkgMTIuOCA5LjQ5OTk1IDEyLjhDOS44MDM3MSAxMi44IDEwLjA1IDEyLjU1MzcgMTAuMDUgMTIuMjVWMi43NDk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFduPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS44NTM2IDEuMTQ2NDVDMTEuNjU4MyAwLjk1MTE4NCAxMS4zNDE3IDAuOTUxMTg0IDExLjE0NjUgMS4xNDY0NUwzLjcxNDU1IDguNTc4MzZDMy42MjQ1OSA4LjY2ODMyIDMuNTUyNjMgOC43NzQ2MSAzLjUwMjUxIDguODkxNTVMMi4wNDA0NCAxMi4zMDNDMS45NTk5IDEyLjQ5MSAyLjAwMTg5IDEyLjcwOSAyLjE0NjQ2IDEyLjg1MzZDMi4yOTEwMyAxMi45OTgxIDIuNTA5MDUgMTMuMDQwMSAyLjY5Njk3IDEyLjk1OTZMNi4xMDg0NyAxMS40OTc1QzYuMjI1NCAxMS40NDc0IDYuMzMxNyAxMS4zNzU0IDYuNDIxNjYgMTEuMjg1NUwxMy44NTM2IDMuODUzNTVDMTQuMDQ4OCAzLjY1ODI5IDE0LjA0ODggMy4zNDE3MSAxMy44NTM2IDMuMTQ2NDVMMTEuODUzNiAxLjE0NjQ1Wk00LjQyMTY2IDkuMjg1NDdMMTEuNSAyLjIwNzExTDEyLjc5MjkgMy41TDUuNzE0NTUgMTAuNTc4NEw0LjIxOTI0IDExLjIxOTJMMy43ODA4MSAxMC43ODA4TDQuNDIxNjYgOS4yODU0N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi4xNDY0IDEuMTQ2NDVDMTIuMzQxNyAwLjk1MTE4NCAxMi42NTgzIDAuOTUxMTg0IDEyLjg1MzUgMS4xNDY0NUwxNC44NTM1IDMuMTQ2NDVDMTUuMDQ4OCAzLjM0MTcxIDE1LjA0ODggMy42NTgyOSAxNC44NTM1IDMuODUzNTVMMTAuOTEwOSA3Ljc5NjE4QzEwLjgzNDkgNy44NzIxOCAxMC43NDcxIDcuOTM1NDMgMTAuNjUxIDcuOTgzNUw2LjcyMzU5IDkuOTQ3MjFDNi41MzEwOSAxMC4wNDM1IDYuMjk4NjEgMTAuMDA1NyA2LjE0NjQzIDkuODUzNTVDNS45OTQyNSA5LjcwMTM3IDUuOTU2NTIgOS40Njg4OSA2LjA1Mjc3IDkuMjc2MzlMOC4wMTY0OCA1LjM0ODk3QzguMDY0NTUgNS4yNTI4MyA4LjEyNzggNS4xNjUwNyA4LjIwMzggNS4wODkwN0wxMi4xNDY0IDEuMTQ2NDVaTTEyLjUgMi4yMDcxMUw4LjkxMDkxIDUuNzk2MThMNy44NzI2NiA3Ljg3MjY3TDguMTI3MzEgOC4xMjczMkwxMC4yMDM4IDcuMDg5MDdMMTMuNzkyOSAzLjVMMTIuNSAyLjIwNzExWk05Ljk5OTk4IDJMOC45OTk5OCAzSDQuOUM0LjQ3MTcxIDMgNC4xODA1NiAzLjAwMDM5IDMuOTU1NTIgMy4wMTg3N0MzLjczNjMxIDMuMDM2NjggMy42MjQyMSAzLjA2OTE1IDMuNTQ2MDEgMy4xMDg5OUMzLjM1Nzg1IDMuMjA0ODcgMy4yMDQ4NyAzLjM1Nzg1IDMuMTA4OTkgMy41NDYwMUMzLjA2OTE1IDMuNjI0MjEgMy4wMzY2OSAzLjczNjMxIDMuMDE4NzggMy45NTU1MkMzLjAwMDM5IDQuMTgwNTYgMyA0LjQ3MTcxIDMgNC45VjExLjFDMyAxMS41MjgzIDMuMDAwMzkgMTEuODE5NCAzLjAxODc4IDEyLjA0NDVDMy4wMzY2OSAxMi4yNjM3IDMuMDY5MTUgMTIuMzc1OCAzLjEwODk5IDEyLjQ1NEMzLjIwNDg3IDEyLjY0MjIgMy4zNTc4NSAxMi43OTUxIDMuNTQ2MDEgMTIuODkxQzMuNjI0MjEgMTIuOTMwOSAzLjczNjMxIDEyLjk2MzMgMy45NTU1MiAxMi45ODEyQzQuMTgwNTYgMTIuOTk5NiA0LjQ3MTcxIDEzIDQuOSAxM0gxMS4xQzExLjUyODMgMTMgMTEuODE5NCAxMi45OTk2IDEyLjA0NDUgMTIuOTgxMkMxMi4yNjM3IDEyLjk2MzMgMTIuMzc1OCAxMi45MzA5IDEyLjQ1NCAxMi44OTFDMTIuNjQyMiAxMi43OTUxIDEyLjc5NTEgMTIuNjQyMiAxMi44OTEgMTIuNDU0QzEyLjkzMDkgMTIuMzc1OCAxMi45NjMzIDEyLjI2MzcgMTIuOTgxMiAxMi4wNDQ1QzEyLjk5OTYgMTEuODE5NCAxMyAxMS41MjgzIDEzIDExLjFWNi45OTk5OEwxNCA1Ljk5OTk4VjExLjFWMTEuMTIwN0MxNCAxMS41MjMxIDE0IDExLjg1NTMgMTMuOTc3OSAxMi4xMjU5QzEzLjk1NDkgMTIuNDA3IDEzLjkwNTcgMTIuNjY1MyAxMy43ODIgMTIuOTA4QzEzLjU5MDMgMTMuMjg0MyAxMy4yODQzIDEzLjU5MDMgMTIuOTA4IDEzLjc4MkMxMi42NjUzIDEzLjkwNTcgMTIuNDA3IDEzLjk1NDkgMTIuMTI1OSAxMy45Nzc5QzExLjg1NTMgMTQgMTEuNTIzMSAxNCAxMS4xMjA3IDE0SDExLjFINC45SDQuODc5MzRDNC40NzY4NiAxNCA0LjE0NDY4IDE0IDMuODc0MDkgMTMuOTc3OUMzLjU5MzA0IDEzLjk1NDkgMy4zMzQ2OSAxMy45MDU3IDMuMDkyMDIgMTMuNzgyQzIuNzE1NyAxMy41OTAzIDIuNDA5NzMgMTMuMjg0MyAyLjIxNzk5IDEyLjkwOEMyLjA5NDM0IDEyLjY2NTMgMi4wNDUwNiAxMi40MDcgMi4wMjIxIDEyLjEyNTlDMS45OTk5OSAxMS44NTUzIDEuOTk5OTkgMTEuNTIzMSAyIDExLjEyMDdWMTEuMTIwNlYxMS4xVjQuOVY0Ljg3OTM1VjQuODc5MzJWNC44NzkzMUMxLjk5OTk5IDQuNDc2ODUgMS45OTk5OSA0LjE0NDY4IDIuMDIyMSAzLjg3NDA5QzIuMDQ1MDYgMy41OTMwNCAyLjA5NDM0IDMuMzM0NjkgMi4yMTc5OSAzLjA5MjAyQzIuNDA5NzMgMi43MTU2OSAyLjcxNTcgMi40MDk3MyAzLjA5MjAyIDIuMjE3OTlDMy4zMzQ2OSAyLjA5NDM0IDMuNTkzMDQgMi4wNDUwNiAzLjg3NDA5IDIuMDIyMUM0LjE0NDY4IDEuOTk5OTkgNC40NzY4NSAxLjk5OTk5IDQuODc5MzIgMkg0Ljg3OTM1SDQuOUg5Ljk5OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sem49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAwLjg3NUM1LjQ5Nzk3IDAuODc1IDMuODc1IDIuNDk3OTcgMy44NzUgNC41QzMuODc1IDYuMTUyODggNC45ODEyNCA3LjU0NzM4IDYuNDkzNzMgNy45ODM1MUM1LjI5OTcgOC4xMjkwMSA0LjI3NTU3IDguNTUxMzQgMy41MDQwNyA5LjMxMTY3QzIuNTIyMTYgMTAuMjc5NCAyLjAyNTAyIDExLjcyIDIuMDI1MDIgMTMuNTk5OUMyLjAyNTAyIDEzLjg2MjMgMi4yMzc2OSAxNC4wNzQ5IDIuNTAwMDIgMTQuMDc0OUMyLjc2MjM2IDE0LjA3NDkgMi45NzUwMiAxMy44NjIzIDIuOTc1MDIgMTMuNTk5OUMyLjk3NTAyIDExLjg3OTkgMy40Mjc4NiAxMC43MjA2IDQuMTcwOTEgOS45ODgzQzQuOTE1MzYgOS4yNTQ2MyA2LjAyNjc0IDguODc0OTkgNy40OTk5NSA4Ljg3NDk5QzguOTczMTcgOC44NzQ5OSAxMC4wODQ2IDkuMjU0NjMgMTAuODI5MSA5Ljk4ODMxQzExLjU3MjEgMTAuNzIwNiAxMi4wMjUgMTEuODc5OSAxMi4wMjUgMTMuNTk5OUMxMi4wMjUgMTMuODYyMyAxMi4yMzc2IDE0LjA3NDkgMTIuNSAxNC4wNzQ5QzEyLjc2MjMgMTQuMDc1IDEyLjk3NSAxMy44NjIzIDEyLjk3NSAxMy42QzEyLjk3NSAxMS43MiAxMi40Nzc4IDEwLjI3OTQgMTEuNDk1OSA5LjMxMTY2QzEwLjcyNDQgOC41NTEzNSA5LjcwMDI1IDguMTI5MDMgOC41MDYyNSA3Ljk4MzUyQzEwLjAxODcgNy41NDc0IDExLjEyNSA2LjE1Mjg5IDExLjEyNSA0LjVDMTEuMTI1IDIuNDk3OTcgOS41MDIwMyAwLjg3NSA3LjUgMC44NzVaTTQuODI1IDQuNUM0LjgyNSAzLjAyMjY0IDYuMDIyNjQgMS44MjUgNy41IDEuODI1QzguOTc3MzYgMS44MjUgMTAuMTc1IDMuMDIyNjQgMTAuMTc1IDQuNUMxMC4xNzUgNS45NzczNiA4Ljk3NzM2IDcuMTc1IDcuNSA3LjE3NUM2LjAyMjY0IDcuMTc1IDQuODI1IDUuOTc3MzYgNC44MjUgNC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuODUwMDEgNy41MDA0M0MxLjg1MDAxIDQuMzc5NzUgNC4zNzk2MyAxLjg1MDAxIDcuNTAwMDEgMS44NTAwMUMxMC42MjA0IDEuODUwMDEgMTMuMTUgNC4zNzk3NSAxMy4xNSA3LjUwMDQzQzEzLjE1IDEwLjYyMTEgMTAuNjIwNCAxMy4xNTA5IDcuNTAwMDEgMTMuMTUwOUM0LjM3OTYzIDEzLjE1MDkgMS44NTAwMSAxMC42MjExIDEuODUwMDEgNy41MDA0M1pNNy41MDAwMSAwLjg1MDAwNkMzLjgyNzI4IDAuODUwMDA2IDAuODUwMDA2IDMuODI3NTMgMC44NTAwMDYgNy41MDA0M0MwLjg1MDAwNiAxMS4xNzMzIDMuODI3MjggMTQuMTUwOSA3LjUwMDAxIDE0LjE1MDlDMTEuMTcyNyAxNC4xNTA5IDE0LjE1IDExLjE3MzMgMTQuMTUgNy41MDA0M0MxNC4xNSAzLjgyNzUzIDExLjE3MjcgMC44NTAwMDYgNy41MDAwMSAwLjg1MDAwNlpNNy4wMDAwMSA4LjAwMDAxVjMuMTI4MTFDNy4xNjQxMSAzLjEwOTU0IDcuMzMwOTQgMy4xMDAwMSA3LjUwMDAxIDMuMTAwMDFDOS45MzAwNiAzLjEwMDAxIDExLjkgNS4wNzAxNCAxMS45IDcuNTAwNDNDMTEuOSA3LjY2OTM1IDExLjg5MDUgNy44MzYwNCAxMS44NzIgOC4wMDAwMUg3LjAwMDAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sR249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgNS41QzMgNy45ODMgNC45OTE2OSA5IDcgOVYxMi41QzcgMTIuNzc2MSA3LjIyMzg2IDEzIDcuNSAxM0M3Ljc3NjE0IDEzIDggMTIuNzc2MSA4IDEyLjVWOVYzLjFIOVYxMi41QzkgMTIuNzc2MSA5LjIyMzg2IDEzIDkuNSAxM0M5Ljc3NjE0IDEzIDEwIDEyLjc3NjEgMTAgMTIuNVYzLjFIMTEuNUMxMS44MDM4IDMuMSAxMi4wNSAyLjg1Mzc2IDEyLjA1IDIuNTVDMTIuMDUgMi4yNDYyNCAxMS44MDM4IDIgMTEuNSAySDkuNUg4SDcuNUg3QzQuOTkxNjkgMiAzIDMuMDE3IDMgNS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjUgMTMuOTVDMTMuNzQ4NSAxMy45NSAxMy45NSAxMy43NDg1IDEzLjk1IDEzLjVDMTMuOTUgMTMuMjUxNCAxMy43NDg1IDEzLjA1IDEzLjUgMTMuMDVMMS40OTk5NSAxMy4wNUMxLjI1MTQyIDEzLjA1IDEuMDQ5OTUgMTMuMjUxNCAxLjA0OTk1IDEzLjVDMS4wNDk5NSAxMy43NDg1IDEuMjUxNDIgMTMuOTUgMS40OTk5NSAxMy45NUwxMy41IDEzLjk1Wk0xMS4wNjgxIDcuNTY4M0MxMS4yNDM5IDcuMzkyNTcgMTEuMjQzOSA3LjEwNzY0IDExLjA2ODEgNi45MzE5MUMxMC44OTI0IDYuNzU2MTcgMTAuNjA3NSA2Ljc1NjE3IDEwLjQzMTcgNi45MzE5MUw3Ljk0OTkzIDkuNDEzNzFMNy45NDk5MyAxLjQ5OTk4QzcuOTQ5OTMgMS4yNTE0NiA3Ljc0ODQ2IDEuMDQ5OTggNy40OTk5MyAxLjA0OTk4QzcuMjUxNCAxLjA0OTk4IDcuMDQ5OTMgMS4yNTE0NiA3LjA0OTkzIDEuNDk5OThMNy4wNDk5MyA5LjQxMzcxTDQuNTY4MTMgNi45MzE5MUM0LjM5MjM5IDYuNzU2MTcgNC4xMDc0NiA2Ljc1NjE3IDMuOTMxNzMgNi45MzE5MUMzLjc1NTk5IDcuMTA3NjQgMy43NTU5OSA3LjM5MjU3IDMuOTMxNzMgNy41NjgzTDcuMTgxNzMgMTAuODE4M0M3LjM1NzQ2IDEwLjk5NCA3LjY0MjM5IDEwLjk5NCA3LjgxODEyIDEwLjgxODNMMTEuMDY4MSA3LjU2ODNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxZbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi4wNTAwNSAxMy41QzIuMDUwMDUgMTMuNzQ4NSAyLjI1MTUyIDEzLjk1IDIuNTAwMDUgMTMuOTVDMi43NDg1OCAxMy45NSAyLjk1MDA1IDEzLjc0ODUgMi45NTAwNSAxMy41TDIuOTUwMDUgMS40OTk5NUMyLjk1MDA1IDEuMjUxNDIgMi43NDg1OCAxLjA0OTk1IDIuNTAwMDUgMS4wNDk5NUMyLjI1MTUyIDEuMDQ5OTUgMi4wNTAwNSAxLjI1MTQyIDIuMDUwMDUgMS40OTk5NUwyLjA1MDA1IDEzLjVaTTguNDMxNyAxMS4wNjgxQzguNjA3NDMgMTEuMjQzOSA4Ljg5MjM2IDExLjI0MzkgOS4wNjgwOSAxMS4wNjgxQzkuMjQzODMgMTAuODkyNCA5LjI0MzgzIDEwLjYwNzUgOS4wNjgwOSAxMC40MzE3TDYuNTg2MjkgNy45NDk5M0wxNC41IDcuOTQ5OTNDMTQuNzQ4NSA3Ljk0OTkzIDE0Ljk1IDcuNzQ4NDYgMTQuOTUgNy40OTk5M0MxNC45NSA3LjI1MTQgMTQuNzQ4NSA3LjA0OTkzIDE0LjUgNy4wNDk5M0w2LjU4NjI5IDcuMDQ5OTNMOS4wNjgwOSA0LjU2ODEzQzkuMjQzODMgNC4zOTIzOSA5LjI0MzgzIDQuMTA3NDYgOS4wNjgwOSAzLjkzMTczQzguODkyMzYgMy43NTU5OSA4LjYwNzQzIDMuNzU1OTkgOC40MzE3IDMuOTMxNzNMNS4xODE3IDcuMTgxNzNDNS4wMDU5NiA3LjM1NzQ2IDUuMDA1OTYgNy42NDIzOSA1LjE4MTcgNy44MTgxMkw4LjQzMTcgMTEuMDY4MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEtuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi45NSAxLjUwMDA1QzEyLjk1IDEuMjUxNTIgMTIuNzQ4NSAxLjA1MDA1IDEyLjUgMS4wNTAwNUMxMi4yNTE0IDEuMDUwMDUgMTIuMDUgMS4yNTE1MiAxMi4wNSAxLjUwMDA1TDEyLjA1IDEzLjVDMTIuMDUgMTMuNzQ4NiAxMi4yNTE0IDEzLjk1IDEyLjUgMTMuOTVDMTIuNzQ4NSAxMy45NSAxMi45NSAxMy43NDg2IDEyLjk1IDEzLjVMMTIuOTUgMS41MDAwNVpNNi41NjgzIDMuOTMxODhDNi4zOTI1NyAzLjc1NjE0IDYuMTA3NjQgMy43NTYxNCA1LjkzMTkxIDMuOTMxODhDNS43NTYxNyA0LjEwNzYxIDUuNzU2MTcgNC4zOTI1NCA1LjkzMTkxIDQuNTY4MjdMOC40MTM3MSA3LjA1MDA3TDAuNDk5OTg0IDcuMDUwMDdDMC4yNTE0NTYgNy4wNTAwNyAwLjA0OTk4NDcgNy4yNTE1NSAwLjA0OTk4NDcgNy41MDAwN0MwLjA0OTk4NDYgNy43NDg2IDAuMjUxNDU3IDcuOTUwMDcgMC40OTk5ODQgNy45NTAwN0w4LjQxMzcxIDcuOTUwMDdMNS45MzE5MSAxMC40MzE5QzUuNzU2MTcgMTAuNjA3NiA1Ljc1NjE3IDEwLjg5MjUgNS45MzE5MSAxMS4wNjgzQzYuMTA3NjQgMTEuMjQ0IDYuMzkyNTcgMTEuMjQ0IDYuNTY4MzEgMTEuMDY4M0w5LjgxODMgNy44MTgyN0M5Ljk5NDA0IDcuNjQyNTQgOS45OTQwNCA3LjM1NzYxIDkuODE4MyA3LjE4MTg4TDYuNTY4MyAzLjkzMTg4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNTAwMDUgMS4wNTAwNUMxLjI1MTUyIDEuMDUwMDUgMS4wNTAwNSAxLjI1MTUyIDEuMDUwMDUgMS41MDAwNUMxLjA1MDA1IDEuNzQ4NTggMS4yNTE1MiAxLjk1MDA1IDEuNTAwMDUgMS45NTAwNUwxMy41IDEuOTUwMDVDMTMuNzQ4NiAxLjk1MDA1IDEzLjk1IDEuNzQ4NTggMTMuOTUgMS41MDAwNUMxMy45NSAxLjI1MTUyIDEzLjc0ODYgMS4wNTAwNSAxMy41IDEuMDUwMDVIMS41MDAwNVpNMy45MzE4OCA3LjQzMTY5QzMuNzU2MTQgNy42MDc0MyAzLjc1NjE0IDcuODkyMzYgMy45MzE4OCA4LjA2ODA5QzQuMTA3NjEgOC4yNDM4MyA0LjM5MjU0IDguMjQzODMgNC41NjgyNyA4LjA2ODA5TDcuMDUwMDcgNS41ODYyOVYxMy41QzcuMDUwMDcgMTMuNzQ4NSA3LjI1MTU1IDEzLjk1IDcuNTAwMDcgMTMuOTVDNy43NDg2IDEzLjk1IDcuOTUwMDcgMTMuNzQ4NSA3Ljk1MDA3IDEzLjVMNy45NTAwNyA1LjU4NjI5TDEwLjQzMTkgOC4wNjgwOUMxMC42MDc2IDguMjQzODMgMTAuODkyNSA4LjI0MzgzIDExLjA2ODMgOC4wNjgwOUMxMS4yNDQgNy44OTIzNSAxMS4yNDQgNy42MDc0MyAxMS4wNjgzIDcuNDMxNjlMNy44MTgyNyA0LjE4MTY5QzcuNjQyNTQgNC4wMDU5NiA3LjM1NzYxIDQuMDA1OTYgNy4xODE4OCA0LjE4MTY5TDMuOTMxODggNy40MzE2OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFFuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjI0MTgyIDIuMzIxODFDMy4zOTE5IDIuMjMxMzIgMy41Nzg0IDIuMjI2MDEgMy43MzMzOCAyLjMwNzgxTDEyLjczMzQgNy4wNTc4MUMxMi44OTc0IDcuMTQ0MzYgMTMgNy4zMTQ1NyAxMyA3LjVDMTMgNy42ODU0MyAxMi44OTc0IDcuODU1NjQgMTIuNzMzNCA3Ljk0MjE5TDMuNzMzMzggMTIuNjkyMkMzLjU3ODQgMTIuNzc0IDMuMzkxOSAxMi43Njg3IDMuMjQxODIgMTIuNjc4MkMzLjA5MTc1IDEyLjU4NzcgMyAxMi40MjUyIDMgMTIuMjVWMi43NUMzIDIuNTc0NzYgMy4wOTE3NSAyLjQxMjMgMy4yNDE4MiAyLjMyMTgxWk00IDMuNTc5MjVWMTEuNDIwN0wxMS40Mjg4IDcuNUw0IDMuNTc5MjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxKbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOCAyLjc1QzggMi40NzM4NiA3Ljc3NjE0IDIuMjUgNy41IDIuMjVDNy4yMjM4NiAyLjI1IDcgMi40NzM4NiA3IDIuNzVWN0gyLjc1QzIuNDczODYgNyAyLjI1IDcuMjIzODYgMi4yNSA3LjVDMi4yNSA3Ljc3NjE0IDIuNDczODYgOCAyLjc1IDhIN1YxMi4yNUM3IDEyLjUyNjEgNy4yMjM4NiAxMi43NSA3LjUgMTIuNzVDNy43NzYxNCAxMi43NSA4IDEyLjUyNjEgOCAxMi4yNVY4SDEyLjI1QzEyLjUyNjEgOCAxMi43NSA3Ljc3NjE0IDEyLjc1IDcuNUMxMi43NSA3LjIyMzg2IDEyLjUyNjEgNyAxMi4yNSA3SDhWMi43NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGVyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc2ODkyQzMuODQyMjIgMC44NzY4OTIgMC44NzcwNzUgMy44NDIwNCAwLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDExLjE1NzQgMy44NDIyMiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMxMS4xNTc2IDE0LjEyMjYgMTQuMTIyNyAxMS4xNTc0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDMuODQyMDQgMTEuMTU3NiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyWk0xLjgyNzA3IDcuNDk5NzJDMS44MjcwNyA0LjM2NjcxIDQuMzY2ODkgMS44MjY4OSA3LjQ5OTkxIDEuODI2ODlDMTAuNjMyOSAxLjgyNjg5IDEzLjE3MjcgNC4zNjY3MSAxMy4xNzI3IDcuNDk5NzJDMTMuMTcyNyAxMC42MzI3IDEwLjYzMjkgMTMuMTcyNiA3LjQ5OTkxIDEzLjE3MjZDNC4zNjY4OSAxMy4xNzI2IDEuODI3MDcgMTAuNjMyNyAxLjgyNzA3IDcuNDk5NzJaTTcuNTAwMDMgNEM3Ljc3NjE3IDQgOC4wMDAwMyA0LjIyMzg2IDguMDAwMDMgNC41VjdIMTAuNUMxMC43NzYyIDcgMTEgNy4yMjM4NiAxMSA3LjVDMTEgNy43NzYxNCAxMC43NzYyIDggMTAuNSA4SDguMDAwMDNWMTAuNUM4LjAwMDAzIDEwLjc3NjEgNy43NzYxNyAxMSA3LjUwMDAzIDExQzcuMjIzODkgMTEgNy4wMDAwMyAxMC43NzYxIDcuMDAwMDMgMTAuNVY4SDQuNTAwMDNDNC4yMjM4OSA4IDQuMDAwMDMgNy43NzYxNCA0LjAwMDAzIDcuNUM0LjAwMDAzIDcuMjIzODYgNC4yMjM4OSA3IDQuNTAwMDMgN0g3LjAwMDAzVjQuNUM3LjAwMDAzIDQuMjIzODYgNy4yMjM4OSA0IDcuNTAwMDMgNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHRyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjA3NTA1IDQuMTAwMDFDNS4wNzUwNSAyLjkxMTAzIDYuMjU3MjcgMS45MjUwMiA3LjUwMDA1IDEuOTI1MDJDOC43NDI4MyAxLjkyNTAyIDkuOTI1MDUgMi45MTEwMyA5LjkyNTA1IDQuMTAwMDFDOS45MjUwNSA1LjE5ODYxIDkuMzY3ODIgNS43MTQzNiA4LjYxODU0IDYuMzc4ODRMOC41ODc1NyA2LjQwNjNDNy44NDQ4MSA3LjA2NDY3IDYuOTI1MDUgNy44Nzk5NSA2LjkyNTA1IDkuNUM2LjkyNTA1IDkuODE3NTcgNy4xODI0OCAxMC4wNzUgNy41MDAwNSAxMC4wNzVDNy44MTc2MSAxMC4wNzUgOC4wNzUwNSA5LjgxNzU3IDguMDc1MDUgOS41QzguMDc1MDUgOC40MTUxNyA4LjYyOTQ1IDcuOTA2MjMgOS4zODE1NiA3LjIzOTI1TDkuNDAyMzggNy4yMjA3OUMxMC4xNDk2IDYuNTU4MjkgMTEuMDc1IDUuNzM3NzUgMTEuMDc1IDQuMTAwMDFDMTEuMDc1IDIuMTI3NTcgOS4yMTg2OSAwLjc3NTAyNCA3LjUwMDA1IDAuNzc1MDI0QzUuNzgxNCAwLjc3NTAyNCAzLjkyNTA1IDIuMTI3NTcgMy45MjUwNSA0LjEwMDAxQzMuOTI1MDUgNC40MTc1OCA0LjE4MjQ5IDQuNjc1MDEgNC41MDAwNSA0LjY3NTAxQzQuODE3NjEgNC42NzUwMSA1LjA3NTA1IDQuNDE3NTggNS4wNzUwNSA0LjEwMDAxWk03LjUwMDA1IDEzLjM1NzVDNy45ODMzIDEzLjM1NzUgOC4zNzUwNSAxMi45NjU3IDguMzc1MDUgMTIuNDgyNUM4LjM3NTA1IDExLjk5OTIgNy45ODMzIDExLjYwNzUgNy41MDAwNSAxMS42MDc1QzcuMDE2OCAxMS42MDc1IDYuNjI1MDUgMTEuOTk5MiA2LjYyNTA1IDEyLjQ4MjVDNi42MjUwNSAxMi45NjU3IDcuMDE2OCAxMy4zNTc1IDcuNTAwMDUgMTMuMzU3NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG5yPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDMuODQyMDQgMy44NDIyMiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyQzExLjE1NzYgMC44NzY4OTIgMTQuMTIyNyAzLjg0MjA0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDExLjE1NzQgMTEuMTU3NiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMzLjg0MjIyIDE0LjEyMjYgMC44NzcwNzUgMTEuMTU3NCAwLjg3NzA3NSA3LjQ5OTcyWk03LjQ5OTkxIDEuODI2ODlDNC4zNjY4OSAxLjgyNjg5IDEuODI3MDggNC4zNjY3MSAxLjgyNzA4IDcuNDk5NzJDMS44MjcwOCAxMC42MzI3IDQuMzY2ODkgMTMuMTcyNiA3LjQ5OTkxIDEzLjE3MjZDMTAuNjMyOSAxMy4xNzI2IDEzLjE3MjcgMTAuNjMyNyAxMy4xNzI3IDcuNDk5NzJDMTMuMTcyNyA0LjM2NjcxIDEwLjYzMjkgMS44MjY4OSA3LjQ5OTkxIDEuODI2ODlaTTguMjQ5OTMgMTAuNUM4LjI0OTkzIDEwLjkxNDIgNy45MTQxNCAxMS4yNSA3LjQ5OTkzIDExLjI1QzcuMDg1NzEgMTEuMjUgNi43NDk5MyAxMC45MTQyIDYuNzQ5OTMgMTAuNUM2Ljc0OTkzIDEwLjA4NTggNy4wODU3MSA5Ljc1IDcuNDk5OTMgOS43NUM3LjkxNDE0IDkuNzUgOC4yNDk5MyAxMC4wODU4IDguMjQ5OTMgMTAuNVpNNi4wNTAwMyA2LjI1QzYuMDUwMDMgNS41NzIxMSA2LjYzNTExIDQuOTI1IDcuNTAwMDMgNC45MjVDOC4zNjQ5NiA0LjkyNSA4Ljk1MDAzIDUuNTcyMTEgOC45NTAwMyA2LjI1QzguOTUwMDMgNi43NDExOCA4LjY4MDAyIDYuOTkyMTIgOC4yMTQ0NyA3LjI3NDk0QzguMTYyNTEgNy4zMDY1MSA4LjEwMjU4IDcuMzQxMzEgOC4wMzg0NyA3LjM3ODU0TDguMDM4NDEgNy4zNzg1OEM3Ljg1NTIxIDcuNDg0OTcgNy42Mzc4OCA3LjYxMTE5IDcuNDc0NDkgNy43Mzg0OUM3LjIzMjE0IDcuOTI3MzIgNi45NTAwMyA4LjIzMTk4IDYuOTUwMDMgOC43QzYuOTUwMDQgOS4wMDM3NiA3LjE5NjI4IDkuMjUgNy41MDAwNCA5LjI1QzcuODAyNCA5LjI1IDguMDQ3NzggOS4wMDYwMSA4LjA1MDAyIDguNzA0MTdMOC4wNTA1NiA4LjcwMzNDOC4wNTkyNCA4LjY4OTYgOC4wODQ5MyA4LjY1NzM1IDguMTUwNTggOC42MDYyQzguMjUyMDcgOC41MjcxMiA4LjM2NTA4IDguNDYxNjMgOC41MTU2NyA4LjM3NDM2TDguNTE1NzEgOC4zNzQzM0M4LjU5NDIyIDguMzI4ODMgOC42ODI5NiA4LjI3NzQxIDguNzg1NTkgOC4yMTUwNkM5LjMyMDA0IDcuODkwMzggMTAuMDUgNy4zNTM4MiAxMC4wNSA2LjI1QzEwLjA1IDQuOTI3ODkgOC45MzUxMSAzLjgyNSA3LjUwMDAzIDMuODI1QzYuMDY0OTYgMy44MjUgNC45NTAwMyA0LjkyNzg5IDQuOTUwMDMgNi4yNUM0Ljk1MDAzIDYuNTUzNzYgNS4xOTYyOCA2LjggNS41MDAwMyA2LjhDNS44MDM3OSA2LjggNi4wNTAwMyA2LjU1Mzc2IDYuMDUwMDMgNi4yNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHJyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05LjQyNTAzIDMuNDQxMzZDMTAuMDU2MSAzLjIzNjU0IDEwLjc4MzcgMy4yNDAyIDExLjM3OTIgMy41NDYyM0MxMi43NTMyIDQuMjUyMjQgMTMuMzQ3NyA2LjA3MTkxIDEyLjc5NDYgOEMxMi41NDY1IDguODY0OSAxMi4xMTAyIDkuNzA0NzIgMTEuMTg2MSAxMC41NTI0QzEwLjI2MiAxMS40IDguOTgwMzQgMTEuOSA4LjM4NTcxIDExLjlDOC4xNzI2OSAxMS45IDggMTEuNzMyMSA4IDExLjUyNUM4IDExLjMxNzkgOC4xNzY0NCAxMS4xNSA4LjM4NTcxIDExLjE1QzkuMDY0OTcgMTEuMTUgOS42NzE4OSAxMC43ODA0IDEwLjM5MDYgMTAuMjM2QzEwLjk0MDYgOS44MTkzIDExLjM3MDEgOS4yODYzMyAxMS42MDggOC44MjE5MUMxMi4wNjI4IDcuOTMzNjcgMTIuMDc4MiA2LjY4MTc0IDExLjM0MzMgNi4zNDkwMUMxMC45OTA0IDYuNzM0NTUgMTAuNTI5NSA2Ljk1OTQ2IDkuOTc3MjUgNi45NTk0NkM4Ljc3NzMgNi45NTk0NiA4LjA3MDEgNS45OTQxMiA4LjEwMDUxIDUuMTIwMDlDOC4xMjk1NyA0LjI4NDc0IDguNjYwMzIgMy42ODk1NCA5LjQyNTAzIDMuNDQxMzZaTTMuNDI1MDMgMy40NDEzNkM0LjA1NjE0IDMuMjM2NTQgNC43ODM2NiAzLjI0MDIgNS4zNzkyMyAzLjU0NjIzQzYuNzUzMiA0LjI1MjI0IDcuMzQ3NjYgNi4wNzE5MSA2Ljc5NDYyIDhDNi41NDY1NCA4Ljg2NDkgNi4xMTAxOSA5LjcwNDcyIDUuMTg2MSAxMC41NTI0QzQuMjYyMDEgMTEuNCAyLjk4MDM0IDExLjkgMi4zODU3MSAxMS45QzIuMTcyNjkgMTEuOSAyIDExLjczMjEgMiAxMS41MjVDMiAxMS4zMTc5IDIuMTc2NDQgMTEuMTUgMi4zODU3MSAxMS4xNUMzLjA2NDk3IDExLjE1IDMuNjcxODkgMTAuNzgwNCA0LjM5MDU4IDEwLjIzNkM0Ljk0MDY1IDkuODE5MyA1LjM3MDE0IDkuMjg2MzMgNS42MDc5NyA4LjgyMTkxQzYuMDYyODIgNy45MzM2NyA2LjA3ODIxIDYuNjgxNzQgNS4zNDMzIDYuMzQ5MDFDNC45OTAzNyA2LjczNDU1IDQuNTI5NDggNi45NTk0NiAzLjk3NzI1IDYuOTU5NDZDMi43NzczIDYuOTU5NDYgMi4wNzAxIDUuOTk0MTIgMi4xMDA1MSA1LjEyMDA5QzIuMTI5NTcgNC4yODQ3NCAyLjY2MDMyIDMuNjg5NTQgMy40MjUwMyAzLjQ0MTM2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sb3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5ODUgMC44NzcwNDVDMy44NDIxNiAwLjg3NzA0NSAwLjg3NzAxNCAzLjg0MjE5IDAuODc3MDE0IDcuNDk5ODhDMC44NzcwMTQgMTEuMTU3NSAzLjg0MjE2IDE0LjEyMjcgNy40OTk4NSAxNC4xMjI3QzExLjE1NzUgMTQuMTIyNyAxNC4xMjI3IDExLjE1NzUgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgMy44NDIxOSAxMS4xNTc1IDAuODc3MDQ1IDcuNDk5ODUgMC44NzcwNDVaTTEuODI3MDEgNy40OTk4OEMxLjgyNzAxIDQuMzY2ODYgNC4zNjY4MyAxLjgyNzA0IDcuNDk5ODUgMS44MjcwNEMxMC42MzI4IDEuODI3MDQgMTMuMTcyNyA0LjM2Njg2IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDEwLjYzMjkgMTAuNjMyOCAxMy4xNzI3IDcuNDk5ODUgMTMuMTcyN0M0LjM2NjgzIDEzLjE3MjcgMS44MjcwMSAxMC42MzI5IDEuODI3MDEgNy40OTk4OFpNNy40OTk5OSA5LjQ5OTk5QzguNjA0NTYgOS40OTk5OSA5LjQ5OTk5IDguNjA0NTYgOS40OTk5OSA3LjQ5OTk5QzkuNDk5OTkgNi4zOTU0MiA4LjYwNDU2IDUuNDk5OTkgNy40OTk5OSA1LjQ5OTk5QzYuMzk1NDIgNS40OTk5OSA1LjQ5OTk5IDYuMzk1NDIgNS40OTk5OSA3LjQ5OTk5QzUuNDk5OTkgOC42MDQ1NiA2LjM5NTQyIDkuNDk5OTkgNy40OTk5OSA5LjQ5OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuMiAxSDQuMTc3NDFINC4xNzc0QzMuODY5MzYgMC45OTk5ODggMy42MDM2OCAwLjk5OTk3OCAzLjM4NjA5IDEuMDIwNjdDMy4xNTU3NiAxLjA0MjU3IDIuOTI4MjUgMS4wOTExMyAyLjcxNjI1IDEuMjIxMDRDMi41MTQ0MiAxLjM0NDcyIDIuMzQ0NzMgMS41MTQ0MiAyLjIyMTA0IDEuNzE2MjVDMi4wOTExMyAxLjkyODI1IDIuMDQyNTcgMi4xNTU3NiAyLjAyMDY3IDIuMzg2MDlDMS45OTk5OCAyLjYwMzY3IDEuOTk5OTkgMi44NjkzNSAyIDMuMTc3MzhWMy4xNzc0VjMuMlYxMS44VjExLjgyMjZWMTEuODIyNkMxLjk5OTk5IDEyLjEzMDcgMS45OTk5OCAxMi4zOTYzIDIuMDIwNjcgMTIuNjEzOUMyLjA0MjU3IDEyLjg0NDIgMi4wOTExMyAxMy4wNzE3IDIuMjIxMDQgMTMuMjgzN0MyLjM0NDczIDEzLjQ4NTYgMi41MTQ0MiAxMy42NTUzIDIuNzE2MjUgMTMuNzc5QzIuOTI4MjUgMTMuOTA4OSAzLjE1NTc2IDEzLjk1NzQgMy4zODYwOSAxMy45NzkzQzMuNjAzNjggMTQgMy44NjkzNyAxNCA0LjE3NzQxIDE0SDQuMkgxMC44SDEwLjgyMjZDMTEuMTMwNiAxNCAxMS4zOTYzIDE0IDExLjYxMzkgMTMuOTc5M0MxMS44NDQyIDEzLjk1NzQgMTIuMDcxNyAxMy45MDg5IDEyLjI4MzcgMTMuNzc5QzEyLjQ4NTYgMTMuNjU1MyAxMi42NTUzIDEzLjQ4NTYgMTIuNzc5IDEzLjI4MzdDMTIuOTA4OSAxMy4wNzE3IDEyLjk1NzQgMTIuODQ0MiAxMi45NzkzIDEyLjYxMzlDMTMgMTIuMzk2MyAxMyAxMi4xMzA2IDEzIDExLjgyMjZWMTEuOFYzLjJWMy4xNzc0MUMxMyAyLjg2OTM2IDEzIDIuNjAzNjggMTIuOTc5MyAyLjM4NjA5QzEyLjk1NzQgMi4xNTU3NiAxMi45MDg5IDEuOTI4MjUgMTIuNzc5IDEuNzE2MjVDMTIuNjU1MyAxLjUxNDQyIDEyLjQ4NTYgMS4zNDQ3MiAxMi4yODM3IDEuMjIxMDRDMTIuMDcxNyAxLjA5MTEzIDExLjg0NDIgMS4wNDI1NyAxMS42MTM5IDEuMDIwNjdDMTEuMzk2MyAwLjk5OTk3OCAxMS4xMzA2IDAuOTk5OTg4IDEwLjgyMjYgMUgxMC44SDQuMlpNMy4yMzg3NSAyLjA3MzY4QzMuMjY3MjIgMi4wNTYyMyAzLjMyMzYyIDIuMDMxMTIgMy40ODA3NSAyLjAxNjE4QzMuNjQ1MzIgMi4wMDA1MyAzLjg2Mjk4IDIgNC4yIDJIMTAuOEMxMS4xMzcgMiAxMS4zNTQ3IDIuMDAwNTMgMTEuNTE5MyAyLjAxNjE4QzExLjY3NjQgMi4wMzExMiAxMS43MzI4IDIuMDU2MjMgMTEuNzYxMyAyLjA3MzY4QzExLjgyODUgMi4xMTQ5MSAxMS44ODUxIDIuMTcxNDcgMTEuOTI2MyAyLjIzODc1QzExLjk0MzggMi4yNjcyMiAxMS45Njg5IDIuMzIzNjIgMTEuOTgzOCAyLjQ4MDc1QzExLjk5OTUgMi42NDUzMiAxMiAyLjg2Mjk4IDEyIDMuMlYxMS44QzEyIDEyLjEzNyAxMS45OTk1IDEyLjM1NDcgMTEuOTgzOCAxMi41MTkzQzExLjk2ODkgMTIuNjc2NCAxMS45NDM4IDEyLjczMjggMTEuOTI2MyAxMi43NjEzQzExLjg4NTEgMTIuODI4NSAxMS44Mjg1IDEyLjg4NTEgMTEuNzYxMyAxMi45MjYzQzExLjczMjggMTIuOTQzOCAxMS42NzY0IDEyLjk2ODkgMTEuNTE5MyAxMi45ODM4QzExLjM1NDcgMTIuOTk5NSAxMS4xMzcgMTMgMTAuOCAxM0g0LjJDMy44NjI5OCAxMyAzLjY0NTMyIDEyLjk5OTUgMy40ODA3NSAxMi45ODM4QzMuMzIzNjIgMTIuOTY4OSAzLjI2NzIyIDEyLjk0MzggMy4yMzg3NSAxMi45MjYzQzMuMTcxNDcgMTIuODg1MSAzLjExNDkxIDEyLjgyODUgMy4wNzM2OCAxMi43NjEzQzMuMDU2MjQgMTIuNzMyOCAzLjAzMTEyIDEyLjY3NjQgMy4wMTYxOCAxMi41MTkzQzMuMDAwNTMgMTIuMzU0NyAzIDEyLjEzNyAzIDExLjhWMy4yQzMgMi44NjI5OCAzLjAwMDUzIDIuNjQ1MzIgMy4wMTYxOCAyLjQ4MDc1QzMuMDMxMTIgMi4zMjM2MiAzLjA1NjI0IDIuMjY3MjIgMy4wNzM2OCAyLjIzODc1QzMuMTE0OTEgMi4xNzE0NyAzLjE3MTQ3IDIuMTE0OTEgMy4yMzg3NSAyLjA3MzY4Wk01IDEwQzQuNzIzODYgMTAgNC41IDEwLjIyMzkgNC41IDEwLjVDNC41IDEwLjc3NjEgNC43MjM4NiAxMSA1IDExSDhDOC4yNzYxNCAxMSA4LjUgMTAuNzc2MSA4LjUgMTAuNUM4LjUgMTAuMjIzOSA4LjI3NjE0IDEwIDggMTBINVpNNC41IDcuNUM0LjUgNy4yMjM4NiA0LjcyMzg2IDcgNSA3SDEwQzEwLjI3NjEgNyAxMC41IDcuMjIzODYgMTAuNSA3LjVDMTAuNSA3Ljc3NjE0IDEwLjI3NjEgOCAxMCA4SDVDNC43MjM4NiA4IDQuNSA3Ljc3NjE0IDQuNSA3LjVaTTUgNEM0LjcyMzg2IDQgNC41IDQuMjIzODYgNC41IDQuNUM0LjUgNC43NzYxNCA0LjcyMzg2IDUgNSA1SDEwQzEwLjI3NjEgNSAxMC41IDQuNzc2MTQgMTAuNSA0LjVDMTAuNSA0LjIyMzg2IDEwLjI3NjEgNCAxMCA0SDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxpcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS44NDk5OCA3LjQ5OTk4QzEuODQ5OTggNC42NjQ1OCA0LjA1OTc5IDEuODQ5OTggNy40OTk5OCAxLjg0OTk4QzEwLjI3ODMgMS44NDk5OCAxMS42NTE1IDMuOTA2NCAxMi4yMzY3IDVIMTAuNUMxMC4yMjM5IDUgMTAgNS4yMjM4NiAxMCA1LjVDMTAgNS43NzYxNCAxMC4yMjM5IDYgMTAuNSA2SDEzLjVDMTMuNzc2MSA2IDE0IDUuNzc2MTQgMTQgNS41VjIuNUMxNCAyLjIyMzg2IDEzLjc3NjEgMiAxMy41IDJDMTMuMjIzOSAyIDEzIDIuMjIzODYgMTMgMi41VjQuMzEzMThDMTIuMjk1NSAzLjA3MTI2IDEwLjY2NTkgMC44NDk5NzYgNy40OTk5OCAwLjg0OTk3NkMzLjQzNzE2IDAuODQ5OTc2IDAuODQ5OTc2IDQuMTg1MzcgMC44NDk5NzYgNy40OTk5OEMwLjg0OTk3NiAxMC44MTQ2IDMuNDM3MTYgMTQuMTUgNy40OTk5OCAxNC4xNUM5LjQ0MzgyIDE0LjE1IDExLjA2MjIgMTMuMzgwOCAxMi4yMTQ1IDEyLjIwODRDMTIuODMxNSAxMS41ODA2IDEzLjMxMzMgMTAuODM5IDEzLjY0MTggMTAuMDQwN0MxMy43NDY5IDkuNzg1MzYgMTMuNjI1MSA5LjQ5MzE1IDEzLjM2OTggOS4zODgwNkMxMy4xMTQ0IDkuMjgyOTYgMTIuODIyMiA5LjQwNDc4IDEyLjcxNzEgOS42NjAxNEMxMi40MzYzIDEwLjM0MjUgMTIuMDI1MSAxMC45NzQ1IDExLjUwMTMgMTEuNTA3NEMxMC41Mjk1IDEyLjQ5NjMgOS4xNjUwNCAxMy4xNSA3LjQ5OTk4IDEzLjE1QzQuMDU5NzkgMTMuMTUgMS44NDk5OCAxMC4zMzU0IDEuODQ5OTggNy40OTk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGxyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00Ljg1MzU1IDIuMTQ2NDVDNS4wNDg4MiAyLjM0MTcxIDUuMDQ4ODIgMi42NTgyOSA0Ljg1MzU1IDIuODUzNTVMMy43MDcxMSA0SDlDMTEuNDg1MyA0IDEzLjUgNi4wMTQ3MiAxMy41IDguNUMxMy41IDEwLjk4NTMgMTEuNDg1MyAxMyA5IDEzSDVDNC43MjM4NiAxMyA0LjUgMTIuNzc2MSA0LjUgMTIuNUM0LjUgMTIuMjIzOSA0LjcyMzg2IDEyIDUgMTJIOUMxMC45MzMgMTIgMTIuNSAxMC40MzMgMTIuNSA4LjVDMTIuNSA2LjU2NyAxMC45MzMgNSA5IDVIMy43MDcxMUw0Ljg1MzU1IDYuMTQ2NDVDNS4wNDg4MiA2LjM0MTcxIDUuMDQ4ODIgNi42NTgyOSA0Ljg1MzU1IDYuODUzNTVDNC42NTgyOSA3LjA0ODgyIDQuMzQxNzEgNy4wNDg4MiA0LjE0NjQ1IDYuODUzNTVMMi4xNDY0NSA0Ljg1MzU1QzEuOTUxMTggNC42NTgyOSAxLjk1MTE4IDQuMzQxNzEgMi4xNDY0NSA0LjE0NjQ1TDQuMTQ2NDUgMi4xNDY0NUM0LjM0MTcxIDEuOTUxMTggNC42NTgyOSAxLjk1MTE4IDQuODUzNTUgMi4xNDY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGNyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjA0OTk1IDIuNzQ5OTVDMy4wNDk5NSAyLjQ0NjE5IDIuODAzNzEgMi4xOTk5NSAyLjQ5OTk1IDIuMTk5OTVDMi4xOTYxOSAyLjE5OTk1IDEuOTQ5OTUgMi40NDYxOSAxLjk0OTk1IDIuNzQ5OTVWMTIuMjVDMS45NDk5NSAxMi41NTM3IDIuMTk2MTkgMTIuOCAyLjQ5OTk1IDEyLjhDMi44MDM3MSAxMi44IDMuMDQ5OTUgMTIuNTUzNyAzLjA0OTk1IDEyLjI1VjIuNzQ5OTVaTTUuNzMzMzMgMi4zMDc3NkM1LjU3ODM1IDIuMjI1OTYgNS4zOTE4NSAyLjIzMTI3IDUuMjQxNzcgMi4zMjE3NkM1LjA5MTcgMi40MTIyNSA0Ljk5OTk1IDIuNTc0NzEgNC45OTk5NSAyLjc0OTk1VjEyLjI1QzQuOTk5OTUgMTIuNDI1MiA1LjA5MTcgMTIuNTg3NyA1LjI0MTc3IDEyLjY3ODFDNS4zOTE4NSAxMi43Njg2IDUuNTc4MzUgMTIuNzczOSA1LjczMzMzIDEyLjY5MjFMMTQuNzMzMyA3Ljk0MjE0QzE0Ljg5NzMgNy44NTU1OSAxNSA3LjY4NTM5IDE1IDcuNDk5OTVDMTUgNy4zMTQ1MiAxNC44OTczIDcuMTQ0MzEgMTQuNzMzMyA3LjA1Nzc2TDUuNzMzMzMgMi4zMDc3NlpNNS45OTk5NSAxMS40MjA3VjMuNTc5MkwxMy40Mjg3IDcuNDk5OTVMNS45OTk5NSAxMS40MjA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sc3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuODUzNTcgMy44NTM1NUw3LjY1MzU1IDMuMDUzNTNDOC4yOTgxIDIuNDA5MDEgOS40Mjg1OCAxLjk2MTcyIDEwLjU1MiAxLjgwMTI1QzExLjEwNTYgMS43MjIxNyAxMS42MjkxIDEuNzE3MjUgMTIuMDU2NCAxLjc4MTI0QzEyLjQ5ODcgMS44NDc0OCAxMi43Njk4IDEuOTc2OTYgMTIuODk2NSAyLjEwMzU3QzEzLjAyMzEgMi4yMzAxOCAxMy4xNTI2IDIuNTAxMjUgMTMuMjE4OCAyLjk0MzU3QzEzLjI4MjggMy4zNzA4NiAxMy4yNzc5IDMuODk0MzkgMTMuMTk4OCA0LjQ0ODAxQzEzLjAzODMgNS41NzEzOSAxMi41OTEgNi43MDE4OCAxMS45NDY0IDcuMzQ2NDVMNy40OTk5OSAxMS43OTI5TDYuMzUzNTQgMTAuNjQ2NUM2LjE1ODI3IDEwLjQ1MTIgNS44NDE2OSAxMC40NTEyIDUuNjQ2NDMgMTAuNjQ2NUM1LjQ1MTE3IDEwLjg0MTcgNS40NTExNyAxMS4xNTgzIDUuNjQ2NDMgMTEuMzUzNkw3LjE0NjQ0IDEyLjg1MzZDNy4zNDE3MSAxMy4wNDg4IDcuNjU4MjkgMTMuMDQ4OCA3Ljg1MzU1IDEyLjg1MzZMOC40MDA3MyAxMi4zMDY0TDkuNTcxMjQgMTQuMjU3MkM5LjY1MDQ2IDE0LjM4OTMgOS43ODYwOCAxNC40Nzc0IDkuOTM4OSAxNC40OTYzQzEwLjA5MTcgMTQuNTE1MSAxMC4yNDQ3IDE0LjQ2MjQgMTAuMzUzNSAxNC4zNTM2TDEyLjM1MzUgMTIuMzUzNkMxMi40NjQ4IDEyLjI0MjMgMTIuNTE3MiAxMi4wODUxIDEyLjQ5NSAxMS45MjkzTDEyLjAzMDMgOC42NzY3OUwxMi42NTM2IDguMDUzNTVDMTMuNTA5IDcuMTk4MDggMTQuMDExNyA1LjgyODU1IDE0LjE4ODcgNC41ODk0M0MxNC4yNzg0IDMuOTYxOCAxNC4yODkxIDMuMzM4NDcgMTQuMjA3OCAyLjc5NTQ2QzE0LjEyODcgMi4yNjc0OCAxMy45NTE5IDEuNzQ0ODIgMTMuNjAzNSAxLjM5NjQ1QzEzLjI1NTIgMS4wNDgwOSAxMi43MzI1IDAuODcxMzMyIDEyLjIwNDUgMC43OTIyNjRDMTEuNjYxNSAwLjcxMDk0NSAxMS4wMzgyIDAuNzIxNjQ0IDEwLjQxMDUgMC44MTEzQzkuMTcxNDMgMC45ODgzMDYgNy44MDE4OSAxLjQ5MSA2Ljk0NjQ0IDIuMzQ2NDJMNi4zMjMyMiAyLjk2OTY4TDMuMDcwNzEgMi41MDUwNEMyLjkxNDkyIDIuNDgyNzggMi43NTc3MyAyLjUzNTE3IDIuNjQ2NDUgMi42NDY0NkwwLjY0NjQ1MSA0LjY0NjQ1QzAuNTM3NTc5IDQuNzU1MzMgMC40ODQ5MzggNC45MDgyOSAwLjUwMzc1IDUuMDYxMUMwLjUyMjU2MyA1LjIxMzkxIDAuNjEwNzMgNS4zNDk1NCAwLjc0Mjc1NyA1LjQyODc2TDIuNjkzNjQgNi41OTkyOEwyLjE0NjQ2IDcuMTQ2NDVDMi4wNTI3IDcuMjQwMjIgMi4wMDAwMiA3LjM2NzQgMi4wMDAwMiA3LjUwMDAxQzIuMDAwMDIgNy42MzI2MSAyLjA1MjcgNy43NTk3OSAyLjE0NjQ2IDcuODUzNTZMMy42NDY0NyA5LjM1MzU2QzMuODQxNzMgOS41NDg4MyA0LjE1ODMxIDkuNTQ4ODMgNC4zNTM1NyA5LjM1MzU2QzQuNTQ4ODQgOS4xNTgzIDQuNTQ4ODQgOC44NDE3MiA0LjM1MzU3IDguNjQ2NDZMMy4yMDcxMiA3LjUwMDAxTDMuODUzNTcgNi44NTM1Nkw2Ljg1MzU3IDMuODUzNTVaTTEwLjA5OTMgMTMuMTkzNkw5LjEyOTU5IDExLjU3NzVMMTEuMTQ2NCA5LjU2MDY3TDExLjQ2OTcgMTEuODIzMkwxMC4wOTkzIDEzLjE5MzZaTTMuNDIyNTEgNS44NzA0MUw1LjQzOTM1IDMuODUzNTZMMy4xNzY3OCAzLjUzMDM0TDEuODA2MzggNC45MDA3NEwzLjQyMjUxIDUuODcwNDFaTTIuMzUzNTYgMTAuMzUzNUMyLjU0ODgyIDEwLjE1ODMgMi41NDg4MiA5Ljg0MTcgMi4zNTM1NiA5LjY0NjQ0QzIuMTU4MyA5LjQ1MTE4IDEuODQxNzEgOS40NTExOCAxLjY0NjQ1IDkuNjQ2NDRMMC42NDY0NTEgMTAuNjQ2NEMwLjQ1MTE4OCAxMC44NDE3IDAuNDUxMTg4IDExLjE1ODMgMC42NDY0NTEgMTEuMzUzNUMwLjg0MTcxMyAxMS41NDg4IDEuMTU4MyAxMS41NDg4IDEuMzUzNTYgMTEuMzUzNUwyLjM1MzU2IDEwLjM1MzVaTTMuODUzNTggMTEuODUzNkM0LjA0ODg0IDExLjY1ODMgNC4wNDg4NSAxMS4zNDE3IDMuODUzNTkgMTEuMTQ2NUMzLjY1ODMzIDEwLjk1MTIgMy4zNDE3NSAxMC45NTEyIDMuMTQ2NDggMTEuMTQ2NUwxLjE0NjQ1IDEzLjE0NjRDMC45NTExOSAxMy4zNDE3IDAuOTUxMTg3IDEzLjY1ODMgMS4xNDY0NSAxMy44NTM1QzEuMzQxNzEgMTQuMDQ4OCAxLjY1ODI5IDE0LjA0ODggMS44NTM1NSAxMy44NTM2TDMuODUzNTggMTEuODUzNlpNNS4zNTM1NiAxMy4zNTM1QzUuNTQ4ODIgMTMuMTU4MyA1LjU0ODgyIDEyLjg0MTcgNS4zNTM1NiAxMi42NDY0QzUuMTU4MyAxMi40NTEyIDQuODQxNzEgMTIuNDUxMiA0LjY0NjQ1IDEyLjY0NjRMMy42NDY0NSAxMy42NDY0QzMuNDUxMTkgMTMuODQxNyAzLjQ1MTE5IDE0LjE1ODMgMy42NDY0NSAxNC4zNTM1QzMuODQxNzEgMTQuNTQ4OCA0LjE1ODMgMTQuNTQ4OCA0LjM1MzU2IDE0LjM1MzVMNS4zNTM1NiAxMy4zNTM1Wk05LjQ5OTk3IDYuNzQ4ODFDMTAuMTg5NyA2Ljc0ODgxIDEwLjc0ODggNi4xODk3IDEwLjc0ODggNS41QzEwLjc0ODggNC44MTAzIDEwLjE4OTcgNC4yNTExOCA5LjQ5OTk3IDQuMjUxMThDOC44MTAyNiA0LjI1MTE4IDguMjUxMTUgNC44MTAzIDguMjUxMTUgNS41QzguMjUxMTUgNi4xODk3IDguODEwMjYgNi43NDg4MSA5LjQ5OTk3IDYuNzQ4ODFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx1cj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41OTY2NCAyLjkzNjI4QzcuNzYwODUgMy4wNjQwMSA4LjAwMDEyIDIuOTQ2OTggOC4wMDAxMiAyLjczODk1VjEuOTk5OThDOS45ODE0MyAyIDExLjE4NDggMi4zNjM3IDExLjkxMDUgMy4wODk0NUMxMi42MzYzIDMuODE1MjIgMTMgNS4wMTg2IDEzIDYuOTk5OThDMTMgNy4yNzYxMyAxMy4yMjM5IDcuNDk5OTggMTMuNSA3LjQ5OTk4QzEzLjc3NjEgNy40OTk5OCAxNCA3LjI3NjEzIDE0IDYuOTk5OThDMTQgNC45NDM4IDEzLjYzMjUgMy4zOTcxOSAxMi42MTc2IDIuMzgyMzRDMTEuNjAyOCAxLjM2NzUyIDEwLjA1NjIgMC45OTk5OTkgOC4wMDAxMiAwLjk5OTk4NFYwLjI2MTI2NkM4LjAwMDEyIDAuMDUzMjI5MyA3Ljc2MDg1IC0wLjA2Mzc5NDQgNy41OTY2NCAwLjA2MzkyOEw2LjAwMzg0IDEuMzAyNzdDNS44NzUxNiAxLjQwMjg2IDUuODc1MTYgMS41OTczNSA2LjAwMzg0IDEuNjk3NDRMNy41OTY2NCAyLjkzNjI4Wk05LjUgNUgyLjVDMi4yMjM4NiA1IDIgNS4yMjM4NiAyIDUuNVYxMi41QzIgMTIuNzc2MSAyLjIyMzg2IDEzIDIuNSAxM0g5LjVDOS43NzYxNCAxMyAxMCAxMi43NzYxIDEwIDEyLjVWNS41QzEwIDUuMjIzODYgOS43NzYxNCA1IDkuNSA1Wk0yLjUgNEMxLjY3MTU3IDQgMSA0LjY3MTU3IDEgNS41VjEyLjVDMSAxMy4zMjg0IDEuNjcxNTcgMTQgMi41IDE0SDkuNUMxMC4zMjg0IDE0IDExIDEzLjMyODQgMTEgMTIuNVY1LjVDMTEgNC42NzE1NyAxMC4zMjg0IDQgOS41IDRIMi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuODE4MzIgMC42ODE3OUM3LjY0MjU4IDAuNTA2MDU0IDcuMzU3NjYgMC41MDYwNTQgNy4xODE5MiAwLjY4MTc5TDUuMTgxOTIgMi42ODE3OUM1LjAwNjE5IDIuODU3NTMgNS4wMDYxOSAzLjE0MjQ1IDUuMTgxOTIgMy4zMTgxOUM1LjM1NzY2IDMuNDkzOTIgNS42NDI1OCAzLjQ5MzkyIDUuODE4MzIgMy4zMTgxOUw3LjA1MDEyIDIuMDg2MzhMNy4wNTAxMiA1LjUwMDIzQzcuMDUwMTIgNS43NDg3NiA3LjI1MTU5IDUuOTUwMjMgNy41MDAxMiA1Ljk1MDIzQzcuNzQ4NjUgNS45NTAyMyA3Ljk1MDEyIDUuNzQ4NzYgNy45NTAxMiA1LjUwMDIzTDcuOTUwMTIgMi4wODYzOEw5LjE4MTkyIDMuMzE4MTlDOS4zNTc2NiAzLjQ5MzkyIDkuNjQyNTggMy40OTM5MiA5LjgxODMyIDMuMzE4MTlDOS45OTQwNiAzLjE0MjQ1IDkuOTk0MDYgMi44NTc1MyA5LjgxODMyIDIuNjgxNzlMNy44MTgzMiAwLjY4MTc5Wk03Ljk1MDEyIDEyLjkxMzZWOS41MDAyM0M3Ljk1MDEyIDkuMjUxNyA3Ljc0ODY1IDkuMDUwMjMgNy41MDAxMiA5LjA1MDIzQzcuMjUxNTkgOS4wNTAyMyA3LjA1MDEyIDkuMjUxNyA3LjA1MDEyIDkuNTAwMjNWMTIuOTEzNkw1LjgxODMyIDExLjY4MThDNS42NDI1OCAxMS41MDYxIDUuMzU3NjYgMTEuNTA2MSA1LjE4MTkyIDExLjY4MThDNS4wMDYxOSAxMS44NTc1IDUuMDA2MTkgMTIuMTQyNCA1LjE4MTkyIDEyLjMxODJMNy4xODE5MiAxNC4zMTgyQzcuMjY2MzIgMTQuNDAyNiA3LjM4MDc3IDE0LjQ1IDcuNTAwMTIgMTQuNDVDNy42MTk0NyAxNC40NSA3LjczMzkzIDE0LjQwMjYgNy44MTgzMiAxNC4zMTgyTDkuODE4MzIgMTIuMzE4MkM5Ljk5NDA2IDEyLjE0MjQgOS45OTQwNiAxMS44NTc1IDkuODE4MzIgMTEuNjgxOEM5LjY0MjU4IDExLjUwNjEgOS4zNTc2NiAxMS41MDYxIDkuMTgxOTIgMTEuNjgxOEw3Ljk1MDEyIDEyLjkxMzZaTTEuNDk5OTQgNy4wMDAxN0MxLjIyMzggNy4wMDAxNyAwLjk5OTkzOSA3LjIyNDAzIDAuOTk5OTM5IDcuNTAwMTdDMC45OTk5MzkgNy43NzYzMSAxLjIyMzggOC4wMDAxNyAxLjQ5OTk0IDguMDAwMTdMMTMuNDk5OSA4LjAwMDE3QzEzLjc3NjEgOC4wMDAxNyAxMy45OTk5IDcuNzc2MzEgMTMuOTk5OSA3LjUwMDE3QzEzLjk5OTkgNy4yMjQwMyAxMy43NzYxIDcuMDAwMTcgMTMuNDk5OSA3LjAwMDE3TDEuNDk5OTQgNy4wMDAxN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGZyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNCAxMi44NUwxIDEyLjg1TDEgMTQuMTVMMTQgMTQuMTVMMTQgMTIuODVaTTE0IDguODUwMDJMMSA4Ljg1MDAyTDEgMTAuMTVMMTQgMTAuMTVMMTQgOC44NTAwMlpNMSA0Ljg1MDAzTDE0IDQuODUwMDNMMTQgNi4xNTAwM0wxIDYuMTUwMDJMMSA0Ljg1MDAzWk0xNCAwLjg1MDAyNUwxIDAuODUwMDI1TDEgMi4xNTAwMkwxNCAyLjE1MDAyTDE0IDAuODUwMDI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuNSA0QzAuMjIzODU4IDQgMCA0LjIyMzg2IDAgNC41VjEwLjVDMCAxMC43NzYxIDAuMjIzODU4IDExIDAuNSAxMUgxNC41QzE0Ljc3NjEgMTEgMTUgMTAuNzc2MSAxNSAxMC41VjQuNUMxNSA0LjIyMzg2IDE0Ljc3NjEgNCAxNC41IDRIMC41Wk0xIDEwVjVIMi4wNzVWNy41QzIuMDc1IDcuNzM0NzIgMi4yNjUyOCA3LjkyNSAyLjUgNy45MjVDMi43MzQ3MiA3LjkyNSAyLjkyNSA3LjczNDcyIDIuOTI1IDcuNVY1SDQuMDc1VjYuNUM0LjA3NSA2LjczNDcyIDQuMjY1MjggNi45MjUgNC41IDYuOTI1QzQuNzM0NzIgNi45MjUgNC45MjUgNi43MzQ3MiA0LjkyNSA2LjVWNUg2LjA3NVY2LjVDNi4wNzUgNi43MzQ3MiA2LjI2NTI4IDYuOTI1IDYuNSA2LjkyNUM2LjczNDcyIDYuOTI1IDYuOTI1IDYuNzM0NzIgNi45MjUgNi41VjVIOC4wNzVWNy41QzguMDc1IDcuNzM0NzIgOC4yNjUyOCA3LjkyNSA4LjUgNy45MjVDOC43MzQ3MiA3LjkyNSA4LjkyNSA3LjczNDcyIDguOTI1IDcuNVY1SDEwLjA3NVY2LjVDMTAuMDc1IDYuNzM0NzIgMTAuMjY1MyA2LjkyNSAxMC41IDYuOTI1QzEwLjczNDcgNi45MjUgMTAuOTI1IDYuNzM0NzIgMTAuOTI1IDYuNVY1SDEyLjA3NVY2LjVDMTIuMDc1IDYuNzM0NzIgMTIuMjY1MyA2LjkyNSAxMi41IDYuOTI1QzEyLjczNDcgNi45MjUgMTIuOTI1IDYuNzM0NzIgMTIuOTI1IDYuNVY1SDE0VjEwSDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxocj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC41IDBDMC4yMjM4NTggMCAwIDAuMjIzODU4IDAgMC41VjE0LjVDMCAxNC43NzYxIDAuMjIzODU4IDE1IDAuNSAxNUg0LjVDNC43NzYxNCAxNSA1IDE0Ljc3NjEgNSAxNC41VjVIMTQuNUMxNC43NzYxIDUgMTUgNC43NzYxNCAxNSA0LjVWMC41QzE1IDAuMjIzODU4IDE0Ljc3NjEgMCAxNC41IDBIMC41Wk0xIDQuMDc1MDVMMSAxSDQuMDc1MDJDNC4wNzUwMiAxIDQuMDc1MDIgMSA0LjA3NTAyIDFMNC4wNzUwNSA0LjA3NTA3TDEgNC4wNzUwNVpNMC45OTk5OTcgNC45MjUwNUwxIDE0SDRWMTIuOTI1SDIuNzUwMDJDMi41MTUzIDEyLjkyNSAyLjMyNTAyIDEyLjczNDggMi4zMjUwMiAxMi41QzIuMzI1MDIgMTIuMjY1MyAyLjUxNTMgMTIuMDc1IDIuNzUwMDIgMTIuMDc1SDRWMTAuOTI1SDIuMjUwMDJDMi4wMTUzIDEwLjkyNSAxLjgyNTAyIDEwLjczNDcgMS44MjUwMiAxMC41QzEuODI1MDIgMTAuMjY1MyAyLjAxNTMgMTAuMDc1IDIuMjUwMDIgMTAuMDc1SDRWOC45MjUwNEwyLjc1MDAyIDguOTI1MDJDMi41MTUzIDguOTI1MDIgMi4zMjUwMiA4LjczNDc0IDIuMzI1MDIgOC41MDAwMkMyLjMyNTAzIDguMjY1MjkgMi41MTUzMSA4LjA3NTAyIDIuNzUwMDMgOC4wNzUwMkw0IDguMDc1MDRWNi45MjUwMkwyLjc0OTk5IDYuOTI1QzIuNTE1MjcgNi45MjUgMi4zMjUgNi43MzQ3MiAyLjMyNSA2LjVDMi4zMjUgNi4yNjUyOCAyLjUxNTI5IDYuMDc1IDIuNzUwMDEgNi4wNzVMNCA2LjA3NTAyVjQuOTI1MDdMMC45OTk5OTcgNC45MjUwNVpNNC45MjUwNSA0SDYuMDc1VjIuNzUwMDZDNi4wNzUgMi41MTUzNCA2LjI2NTI4IDIuMzI1MDYgNi41IDIuMzI1MDZDNi43MzQ3MiAyLjMyNTA2IDYuOTI1IDIuNTE1MzQgNi45MjUgMi43NTAwNlY0SDguMDc1MDJWMi43NTAwNUM4LjA3NTAyIDIuNTE1MzMgOC4yNjUzIDIuMzI1MDUgOC41MDAwMiAyLjMyNTA1QzguNzM0NzQgMi4zMjUwNSA4LjkyNTAyIDIuNTE1MzMgOC45MjUwMiAyLjc1MDA1VjRIMTAuMDc1MVYyLjI1MDA1QzEwLjA3NTEgMi4wMTUzMyAxMC4yNjUzIDEuODI1MDUgMTAuNTAwMSAxLjgyNTA1QzEwLjczNDggMS44MjUwNSAxMC45MjUxIDIuMDE1MzMgMTAuOTI1MSAyLjI1MDA1VjRIMTIuMDc1MVYyLjc1MDA1QzEyLjA3NTEgMi41MTUzMyAxMi4yNjU0IDIuMzI1MDUgMTIuNTAwMSAyLjMyNTA1QzEyLjczNDggMi4zMjUwNSAxMi45MjUxIDIuNTE1MzMgMTIuOTI1MSAyLjc1MDA1VjRIMTRWMUg0LjkyNTAyTDQuOTI1MDUgNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LENyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDEuNUMyIDEuNzc2MTQgMS43NzYxNCAyIDEuNSAyQzEuMjIzODYgMiAxIDEuNzc2MTQgMSAxLjVDMSAxLjIyMzg2IDEuMjIzODYgMSAxLjUgMUMxLjc3NjE0IDEgMiAxLjIyMzg2IDIgMS41Wk0yIDVMMiAxMEgxM1Y1SDJaTTIgNEMxLjQ0NzcyIDQgMSA0LjQ0NzcyIDEgNVYxMEMxIDEwLjU1MjMgMS40NDc3MiAxMSAyIDExSDEzQzEzLjU1MjMgMTEgMTQgMTAuNTUyMyAxNCAxMFY1QzE0IDQuNDQ3NzIgMTMuNTUyMyA0IDEzIDRIMlpNMS41IDE0QzEuNzc2MTQgMTQgMiAxMy43NzYxIDIgMTMuNUMyIDEzLjIyMzkgMS43NzYxNCAxMyAxLjUgMTNDMS4yMjM4NiAxMyAxIDEzLjIyMzkgMSAxMy41QzEgMTMuNzc2MSAxLjIyMzg2IDE0IDEuNSAxNFpNNCAxLjVDNCAxLjc3NjE0IDMuNzc2MTQgMiAzLjUgMkMzLjIyMzg2IDIgMyAxLjc3NjE0IDMgMS41QzMgMS4yMjM4NiAzLjIyMzg2IDEgMy41IDFDMy43NzYxNCAxIDQgMS4yMjM4NiA0IDEuNVpNMy41IDE0QzMuNzc2MTQgMTQgNCAxMy43NzYxIDQgMTMuNUM0IDEzLjIyMzkgMy43NzYxNCAxMyAzLjUgMTNDMy4yMjM4NiAxMyAzIDEzLjIyMzkgMyAxMy41QzMgMTMuNzc2MSAzLjIyMzg2IDE0IDMuNSAxNFpNNiAxLjVDNiAxLjc3NjE0IDUuNzc2MTQgMiA1LjUgMkM1LjIyMzg2IDIgNSAxLjc3NjE0IDUgMS41QzUgMS4yMjM4NiA1LjIyMzg2IDEgNS41IDFDNS43NzYxNCAxIDYgMS4yMjM4NiA2IDEuNVpNNS41IDE0QzUuNzc2MTQgMTQgNiAxMy43NzYxIDYgMTMuNUM2IDEzLjIyMzkgNS43NzYxNCAxMyA1LjUgMTNDNS4yMjM4NiAxMyA1IDEzLjIyMzkgNSAxMy41QzUgMTMuNzc2MSA1LjIyMzg2IDE0IDUuNSAxNFpNOCAxLjVDOCAxLjc3NjE0IDcuNzc2MTQgMiA3LjUgMkM3LjIyMzg2IDIgNyAxLjc3NjE0IDcgMS41QzcgMS4yMjM4NiA3LjIyMzg2IDEgNy41IDFDNy43NzYxNCAxIDggMS4yMjM4NiA4IDEuNVpNNy41IDE0QzcuNzc2MTQgMTQgOCAxMy43NzYxIDggMTMuNUM4IDEzLjIyMzkgNy43NzYxNCAxMyA3LjUgMTNDNy4yMjM4NiAxMyA3IDEzLjIyMzkgNyAxMy41QzcgMTMuNzc2MSA3LjIyMzg2IDE0IDcuNSAxNFpNMTAgMS41QzEwIDEuNzc2MTQgOS43NzYxNCAyIDkuNSAyQzkuMjIzODYgMiA5IDEuNzc2MTQgOSAxLjVDOSAxLjIyMzg2IDkuMjIzODYgMSA5LjUgMUM5Ljc3NjE0IDEgMTAgMS4yMjM4NiAxMCAxLjVaTTkuNSAxNEM5Ljc3NjE0IDE0IDEwIDEzLjc3NjEgMTAgMTMuNUMxMCAxMy4yMjM5IDkuNzc2MTQgMTMgOS41IDEzQzkuMjIzODYgMTMgOSAxMy4yMjM5IDkgMTMuNUM5IDEzLjc3NjEgOS4yMjM4NiAxNCA5LjUgMTRaTTEyIDEuNUMxMiAxLjc3NjE0IDExLjc3NjEgMiAxMS41IDJDMTEuMjIzOSAyIDExIDEuNzc2MTQgMTEgMS41QzExIDEuMjIzODYgMTEuMjIzOSAxIDExLjUgMUMxMS43NzYxIDEgMTIgMS4yMjM4NiAxMiAxLjVaTTExLjUgMTRDMTEuNzc2MSAxNCAxMiAxMy43NzYxIDEyIDEzLjVDMTIgMTMuMjIzOSAxMS43NzYxIDEzIDExLjUgMTNDMTEuMjIzOSAxMyAxMSAxMy4yMjM5IDExIDEzLjVDMTEgMTMuNzc2MSAxMS4yMjM5IDE0IDExLjUgMTRaTTE0IDEuNUMxNCAxLjc3NjE0IDEzLjc3NjEgMiAxMy41IDJDMTMuMjIzOSAyIDEzIDEuNzc2MTQgMTMgMS41QzEzIDEuMjIzODYgMTMuMjIzOSAxIDEzLjUgMUMxMy43NzYxIDEgMTQgMS4yMjM4NiAxNCAxLjVaTTEzLjUgMTRDMTMuNzc2MSAxNCAxNCAxMy43NzYxIDE0IDEzLjVDMTQgMTMuMjIzOSAxMy43NzYxIDEzIDEzLjUgMTNDMTMuMjIzOSAxMyAxMyAxMy4yMjM5IDEzIDEzLjVDMTMgMTMuNzc2MSAxMy4yMjM5IDE0IDEzLjUgMTRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx2cj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNiAzLjVDNiAyLjY3MTU3IDYuNjcxNTcgMiA3LjUgMkM4LjMyODQzIDIgOSAyLjY3MTU3IDkgMy41QzkgNC4zMjg0MyA4LjMyODQzIDUgNy41IDVDNi42NzE1NyA1IDYgNC4zMjg0MyA2IDMuNVpNOCA1Ljk0OTk5QzkuMTQxMTIgNS43MTgzNiAxMCA0LjcwOTQ4IDEwIDMuNUMxMCAyLjExOTI5IDguODgwNzEgMSA3LjUgMUM2LjExOTI5IDEgNSAyLjExOTI5IDUgMy41QzUgNC43MDk0OCA1Ljg1ODg4IDUuNzE4MzYgNyA1Ljk0OTk5VjEzLjVDNyAxMy43NzYxIDcuMjIzODYgMTQgNy41IDE0QzcuNzc2MTQgMTQgOCAxMy43NzYxIDggMTMuNVY1Ljk0OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZ3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwIDMuNUMxMCA0LjcwOTQ4IDkuMTQxMTIgNS43MTgzNiA4IDUuOTQ5OTlWMTMuNUM4IDEzLjc3NjEgNy43NzYxNCAxNCA3LjUgMTRDNy4yMjM4NiAxNCA3IDEzLjc3NjEgNyAxMy41VjUuOTQ5OTlDNS44NTg4OCA1LjcxODM2IDUgNC43MDk0OCA1IDMuNUM1IDIuMTE5MjkgNi4xMTkyOSAxIDcuNSAxQzguODgwNzEgMSAxMCAyLjExOTI5IDEwIDMuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG1yPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzA3NSA3LjQ5OTg4QzAuODc3MDc1IDMuODQyMTkgMy44NDIyMiAwLjg3NzA0NSA3LjQ5OTkxIDAuODc3MDQ1QzExLjE1NzYgMC44NzcwNDUgMTQuMTIyNyAzLjg0MjE5IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDExLjE1NzUgMTEuMTU3NiAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MzLjg0MjIyIDE0LjEyMjcgMC44NzcwNzUgMTEuMTU3NSAwLjg3NzA3NSA3LjQ5OTg4Wk03LjQ5OTkxIDEuODI3MDRDNC4zNjY4OSAxLjgyNzA0IDEuODI3MDggNC4zNjY4NiAxLjgyNzA4IDcuNDk5ODhDMS44MjcwOCAxMC42MzI5IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDMTAuNjMyOSAxMy4xNzI3IDEzLjE3MjcgMTAuNjMyOSAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyA0LjM2Njg2IDEwLjYzMjkgMS44MjcwNCA3LjQ5OTkxIDEuODI3MDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4wNVwiLGQ6XCJNNi43ODI5NiAxMy4zNzZDOC43MzkwNCA5Ljk1Mjg0IDguNzM5MDQgNS4wNDcxOSA2Ljc4Mjk2IDEuNjI0MDVMNy4yMTcwOCAxLjM3NTk4QzkuMjYxIDQuOTUyODMgOS4yNjEgMTAuMDQ3MiA3LjIxNzA4IDEzLjYyNEw2Ljc4Mjk2IDEzLjM3NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjFcIixkOlwiTTcuMjgyMDQgMTMuNDc3NUM5LjIzOTI5IDkuOTk1MjMgOS4yMzkyOSA1LjAwNDc1IDcuMjgyMDQgMS41MjI0OEw3LjcxNzkxIDEuMjc3NUM5Ljc2MDY3IDQuOTExOSA5Ljc2MDY3IDEwLjA4ODEgNy43MTc5MSAxMy43MjI1TDcuMjgyMDQgMTMuNDc3NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjE1XCIsZDpcIk03LjgyMDk4IDEzLjUwNjRDOS43MjUwMiA5Ljk5NTIzIDkuNzI2MzYgNS4wMTQxMSA3LjgyNDkyIDEuNTAwODRMOC4yNjQ2NSAxLjI2Mjg1QzEwLjI0NjUgNC45MjQ2NiAxMC4yNDUxIDEwLjA4NSA4LjI2MDUyIDEzLjc0NDhMNy44MjA5OCAxMy41MDY0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMlwiLGQ6XCJNOC40MTI4NCAxMy40MjlDMTAuMTk1MiA5LjkyODQyIDEwLjE5NTcgNS4wNzUzNyA4LjQxNDM1IDEuNTc0MDJMOC44NTk5OSAxLjM0NzI5QzEwLjcxMzkgNC45OTExMyAxMC43MTMzIDEwLjAxMjggOC44NTg0MSAxMy42NTU5TDguNDEyODQgMTMuNDI5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMjVcIixkOlwiTTkuMDI0NDEgMTMuMjk1NkMxMC42NTY3IDkuODM3OSAxMC42NTg2IDUuMTc3MTUgOS4wMzAwNSAxLjcxNjU2TDkuNDgyNDUgMS41MDM2NkMxMS4xNzQ1IDUuMDk5MTkgMTEuMTcyNiA5LjkxNjI5IDkuNDc2NTcgMTMuNTA5MUw5LjAyNDQxIDEzLjI5NTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4zXCIsZDpcIk05LjY2ODA5IDEzLjA2NTVDMTEuMTA5NyA5LjY5NTcyIDExLjExMDcgNS4zMTIxIDkuNjcwODggMS45NDA5NUwxMC4xMzA3IDEuNzQ0NTdDMTEuNjI0MSA1LjI0MTIxIDExLjYyMzEgOS43NjY4MyAxMC4xMjc4IDEzLjI2MjJMOS42NjgwOSAxMy4wNjU1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMzVcIixkOlwiTTEwLjMzMSAxMi43NDU2QzExLjU1NTEgOS41MjA3MyAxMS41NTY0IDUuNDkxMDMgMTAuMzM0NyAyLjI2NDQ0TDEwLjgwMjQgMi4wODc0QzEyLjA2NzIgNS40MjgxNSAxMi4wNjU5IDkuNTgzOTQgMTAuNzk4NSAxMi45MjMxTDEwLjMzMSAxMi43NDU2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNFwiLGQ6XCJNMTEuMDE1NSAxMi4yOTg2QzExLjk5MzggOS4yOTc0NCAxMS45OTQ4IDUuNzEyOTYgMTEuMDE4NCAyLjcxMDY3TDExLjQ5MzkgMi41NTYwM0MxMi41MDMgNS42NTg5IDEyLjUwMiA5LjM1MTc4IDExLjQ5MDkgMTIuNDUzNUwxMS4wMTU1IDEyLjI5ODZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi40NVwiLGQ6XCJNMTEuNzIxNCAxMS42NjhDMTIuNDI1NCA5LjAxMzAzIDEyLjQyNjIgNS45OTY5MSAxMS43MjM3IDMuMzQxMTZMMTIuMjA3MSAzLjIxMzI5QzEyLjkzMTggNS45NTI5MiAxMi45MzEgOS4wNTcyOCAxMi4yMDQ3IDExLjc5NjFMMTEuNzIxNCAxMS42NjhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi41XCIsZDpcIk0xMi40NDMyIDEwLjc1MkMxMi44NTI0IDguNjM3NjIgMTIuODUyMyA2LjM2MDg5IDEyLjQ0MjkgNC4yNDY2TDEyLjkzMzggNC4xNTE1NUMxMy4zNTUzIDYuMzI4NjEgMTMuMzU1NCA4LjY2OTg1IDEyLjkzNDEgMTAuODQ3TDEyLjQ0MzIgMTAuNzUyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sd3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuODc3MDc1IDcuNDk5ODhDMC44NzcwNzUgMy44NDIxOSAzLjg0MjIyIDAuODc3MDQ1IDcuNDk5OTEgMC44NzcwNDVDMTEuMTU3NiAwLjg3NzA0NSAxNC4xMjI3IDMuODQyMTkgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgMTEuMTU3NSAxMS4xNTc2IDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzMuODQyMjIgMTQuMTIyNyAwLjg3NzA3NSAxMS4xNTc1IDAuODc3MDc1IDcuNDk5ODhaTTcuNDk5OTEgMS44MjcwNEM0LjM2Njg5IDEuODI3MDQgMS44MjcwOCA0LjM2Njg2IDEuODI3MDggNy40OTk4OEMxLjgyNzA4IDEwLjYzMjkgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0MxMC42MzI5IDEzLjE3MjcgMTMuMTcyNyAxMC42MzI5IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDQuMzY2ODYgMTAuNjMyOSAxLjgyNzA0IDcuNDk5OTEgMS44MjcwNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjA1XCIsZDpcIk0xMi4xNjE5IDMuODUxODJDOC4zNTgxNyA0Ljg4OTE4IDQuODg5MzYgOC4zNTggMy44NTE5OSAxMi4xNjE3TDMuMzY5NiAxMi4wMzAxQzQuNDUzNTYgOC4wNTU2NCA4LjA1NTgxIDQuNDUzMzkgMTIuMDMwMyAzLjM2OTQzTDEyLjE2MTkgMy44NTE4MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjFcIixkOlwiTTExLjg4MDcgMy40MjcwN0M4LjAzNDQxIDQuNTA1NDIgNC41MDU2MSA4LjAzNDIyIDMuNDI3MjYgMTEuODgwNUwyLjk0NTgyIDExLjc0NTZDNC4wNzEyOSA3LjczMTIxIDcuNzMxNCA0LjA3MTEgMTEuNzQ1OCAyLjk0NTYzTDExLjg4MDcgMy40MjcwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjE1XCIsZDpcIk0xMS41MjAxIDMuMDI1NTZDNy42OTA5MiA0LjE2MTk5IDQuMTY3NzkgNy42ODMyMyAzLjAyODA1IDExLjUxMkwyLjU0ODgzIDExLjM2OTRDMy43MzY3NiA3LjM3ODY5IDcuMzg2NTkgMy43MzA3NiAxMS4zNzc4IDIuNTQ2MjNMMTEuNTIwMSAzLjAyNTU2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMlwiLGQ6XCJNMTEuMDQ2OCAyLjY2MTY5QzcuMzExMTcgMy44NzY2NCAzLjg3OTE4IDcuMzA3OSAyLjY2Mjk4IDExLjA0MzRMMi4xODc1NCAxMC44ODg2QzMuNDUzMjQgNy4wMDEwOSA3LjAwNDQ1IDMuNDUwNjIgMTAuODkyMSAyLjE4NjIxTDExLjA0NjggMi42NjE2OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjI1XCIsZDpcIk0xMC41MjAxIDIuMzIzNjVDNi45MjA5MSAzLjYxNDQ3IDMuNjIzOTEgNi45MDg3NiAyLjMyODQ1IDEwLjUwNzNMMS44NTggMTAuMzM4QzMuMjAzOTggNi41OTkwOSA2LjYxMTU1IDMuMTk0MjQgMTAuMzUxMyAxLjg1MzAxTDEwLjUyMDEgMi4zMjM2NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjNcIixkOlwiTTkuOTAyMjIgMi4wMzEyMkM2LjUwMDAzIDMuMzk0NjUgMy4zOTk2OCA2LjQ5MzY3IDIuMDMzOTkgOS44OTU1MUwxLjU2OTk4IDkuNzA5MjRDMi45ODY1MSA2LjE4MDc2IDYuMTg3MjggMi45ODEzMyA5LjcxNjIyIDEuNTY3MUw5LjkwMjIyIDIuMDMxMjJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4zNVwiLGQ6XCJNOS4yMDcyNyAxLjc4ODczQzYuMDYxMzYgMy4yMDM0OSAzLjIxMTAzIDYuMDUyMDMgMS43OTMzMSA5LjE5NzM4TDEuMzM3NDcgOC45OTE5MkMyLjgwNTM2IDUuNzM1MjggNS43NDQ4NSAyLjc5NzYgOS4wMDIyIDEuMzMyNzJMOS4yMDcyNyAxLjc4ODczWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNFwiLGQ6XCJNOC40MDcxMyAxLjYyMDg1QzUuNTkzMjMgMy4wNTExNyAzLjA1Nzk0IDUuNTg1MDkgMS42MjU0NCA4LjM5ODQ3TDEuMTc5ODcgOC4xNzE2QzIuNjYwMzYgNS4yNjM5NyA1LjI3MjMyIDIuNjUzNCA4LjE4MDU3IDEuMTc1MTNMOC40MDcxMyAxLjYyMDg1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNDVcIixkOlwiTTcuNDYyMDcgMS41Njc0N0M1LjA4Njg5IDIuOTQ2OTUgMi45NTM2MiA1LjA3OTEyIDEuNTcyNDkgNy40NTM3OUwxLjE0MDI4IDcuMjAyNDFDMi41NjUwMyA0Ljc1MjczIDQuNzYwNyAyLjU1ODE4IDcuMjEwOTYgMS4xMzUxTDcuNDYyMDcgMS41Njc0N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjVcIixkOlwiTTYuMzA0MDcgMS43MDQ4N0M0LjUxOTY0IDIuOTEwNjMgMi45MDk4MyA0LjUyMDYxIDEuNzA0MyA2LjMwNTEzTDEuMjg5OTggNi4wMjUyNEMyLjUzMTMgNC4xODc3MyA0LjE4NjczIDIuNTMyMTQgNi4wMjQxMyAxLjI5MDU5TDYuMzA0MDcgMS43MDQ4N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHlyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc3MDQ1QzMuODQyMjIgMC44NzcwNDUgMC44NzcwNzUgMy44NDIxOSAwLjg3NzA3NSA3LjQ5OTg4QzAuODc3MDc1IDkuMTQ4OCAxLjQ3OTY5IDEwLjY1NyAyLjQ3NjcgMTEuODE2MkwxLjY0NjQ3IDEyLjY0NjRDMS40NTEyMSAxMi44NDE3IDEuNDUxMjEgMTMuMTU4MyAxLjY0NjQ3IDEzLjM1MzVDMS44NDE3MyAxMy41NDg4IDIuMTU4MzIgMTMuNTQ4OCAyLjM1MzU4IDEzLjM1MzVMMy4xODM4MyAxMi41MjMzQzQuMzQzMDIgMTMuNTIwMiA1Ljg1MTEgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMTEuMTU3NiAxNC4xMjI3IDE0LjEyMjcgMTEuMTU3NSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyA1Ljg1MTA3IDEzLjUyMDIgNC4zNDI5OCAxMi41MjMzIDMuMTgzOEwxMy4zNTM2IDIuMzUzNTVDMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMS44NDE3IDEzLjM1MzYgMS42NDY0NEMxMy4xNTgzIDEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEyLjY0NjUgMS42NDY0NEwxMS44MTYyIDIuNDc2NjdDMTAuNjU3IDEuNDc5NjYgOS4xNDg4MyAwLjg3NzA0NSA3LjQ5OTkxIDAuODc3MDQ1Wk0xMS4xNDIzIDMuMTUwNjVDMTAuMTU2OCAyLjMyNDQ5IDguODg2NDQgMS44MjcwNCA3LjQ5OTkxIDEuODI3MDRDNC4zNjY4OSAxLjgyNzA0IDEuODI3MDggNC4zNjY4NiAxLjgyNzA4IDcuNDk5ODhDMS44MjcwOCA4Ljg4NjQxIDIuMzI0NTIgMTAuMTU2OCAzLjE1MDY5IDExLjE0MjJMMTEuMTQyMyAzLjE1MDY1Wk0zLjg1NzgxIDExLjg0OTNDNC44NDMyMiAxMi42NzUzIDYuMTEzNDggMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDMTAuNjMyOSAxMy4xNzI3IDEzLjE3MjcgMTAuNjMyOSAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyA2LjExMzQ1IDEyLjY3NTQgNC44NDMxOSAxMS44NDkzIDMuODU3NzhMMy44NTc4MSAxMS44NDkzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMDVcIixkOlwiTTYuNzgyOTYgMTMuMzc2QzguNzM5MDQgOS45NTI4NCA4LjczOTA0IDUuMDQ3MTkgNi43ODI5NiAxLjYyNDA1TDcuMjE3MDggMS4zNzU5OEM5LjI2MSA0Ljk1MjgzIDkuMjYxIDEwLjA0NzIgNy4yMTcwOCAxMy42MjRMNi43ODI5NiAxMy4zNzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4xXCIsZDpcIk03LjI4MjA0IDEzLjQ3NzVDOS4yMzkyOSA5Ljk5NTIzIDkuMjM5MjkgNS4wMDQ3NSA3LjI4MjA0IDEuNTIyNDhMNy43MTc5MSAxLjI3NzVDOS43NjA2NyA0LjkxMTkgOS43NjA2NyAxMC4wODgxIDcuNzE3OTEgMTMuNzIyNUw3LjI4MjA0IDEzLjQ3NzVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4xNVwiLGQ6XCJNNy44MjA5OCAxMy41MDY0QzkuNzI1MDIgOS45OTUyMyA5LjcyNjM2IDUuMDE0MTEgNy44MjQ5MiAxLjUwMDg0TDguMjY0NjUgMS4yNjI4NUMxMC4yNDY1IDQuOTI0NjYgMTAuMjQ1MSAxMC4wODUgOC4yNjA1MiAxMy43NDQ4TDcuODIwOTggMTMuNTA2NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjJcIixkOlwiTTguNDEyODQgMTMuNDI5QzEwLjE5NTIgOS45Mjg0MiAxMC4xOTU3IDUuMDc1MzcgOC40MTQzNSAxLjU3NDAyTDguODU5OTkgMS4zNDcyOUMxMC43MTM5IDQuOTkxMTMgMTAuNzEzMyAxMC4wMTI4IDguODU4NDEgMTMuNjU1OUw4LjQxMjg0IDEzLjQyOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjI1XCIsZDpcIk05LjAyNDQxIDEzLjI5NTZDMTAuNjU2NyA5LjgzNzkgMTAuNjU4NiA1LjE3NzE1IDkuMDMwMDUgMS43MTY1Nkw5LjQ4MjQ1IDEuNTAzNjZDMTEuMTc0NSA1LjA5OTE5IDExLjE3MjYgOS45MTYyOSA5LjQ3NjU3IDEzLjUwOTFMOS4wMjQ0MSAxMy4yOTU2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuM1wiLGQ6XCJNOS42NjgwOSAxMy4wNjU1QzExLjEwOTcgOS42OTU3MiAxMS4xMTA3IDUuMzEyMSA5LjY3MDg4IDEuOTQwOTVMMTAuMTMwNyAxLjc0NDU3QzExLjYyNDEgNS4yNDEyMSAxMS42MjMxIDkuNzY2ODMgMTAuMTI3OCAxMy4yNjIyTDkuNjY4MDkgMTMuMDY1NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjM1XCIsZDpcIk0xMC4zMzEgMTIuNzQ1NkMxMS41NTUxIDkuNTIwNzMgMTEuNTU2NCA1LjQ5MTAzIDEwLjMzNDcgMi4yNjQ0NEwxMC44MDI0IDIuMDg3NEMxMi4wNjcyIDUuNDI4MTUgMTIuMDY1OSA5LjU4Mzk0IDEwLjc5ODUgMTIuOTIzMUwxMC4zMzEgMTIuNzQ1NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjRcIixkOlwiTTExLjAxNTUgMTIuMjk4NkMxMS45OTM4IDkuMjk3NDQgMTEuOTk0OCA1LjcxMjk2IDExLjAxODQgMi43MTA2N0wxMS40OTM5IDIuNTU2MDNDMTIuNTAzIDUuNjU4OSAxMi41MDIgOS4zNTE3OCAxMS40OTA5IDEyLjQ1MzVMMTEuMDE1NSAxMi4yOTg2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNDVcIixkOlwiTTExLjcyMTQgMTEuNjY4QzEyLjQyNTQgOS4wMTMwMyAxMi40MjYyIDUuOTk2OTEgMTEuNzIzNyAzLjM0MTE2TDEyLjIwNzEgMy4yMTMyOUMxMi45MzE4IDUuOTUyOTIgMTIuOTMxIDkuMDU3MjggMTIuMjA0NyAxMS43OTYxTDExLjcyMTQgMTEuNjY4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNVwiLGQ6XCJNMTIuNDQzMiAxMC43NTJDMTIuODUyNCA4LjYzNzYyIDEyLjg1MjMgNi4zNjA4OSAxMi40NDI5IDQuMjQ2NkwxMi45MzM4IDQuMTUxNTVDMTMuMzU1MyA2LjMyODYxIDEzLjM1NTQgOC42Njk4NSAxMi45MzQxIDEwLjg0N0wxMi40NDMyIDEwLjc1MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGJyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4wNVwiLGQ6XCJNMTIuMTM5OCAzLjg4NjE2QzEzLjg1NTMgNC45NDE1OSAxNSA2LjgzNyAxNSA4Ljk5OTk5QzE1IDEyLjMxMzcgMTIuMzEzNyAxNSA5LjAwMDAxIDE1QzYuODQzNSAxNSA0Ljk1Mjk1IDEzLjg2MjEgMy44OTU2OSAxMi4xNTUyTDQuMzIwNzUgMTEuODkxOUM1LjI5MDY5IDEzLjQ1NzggNy4wMjM3NSAxNC41IDkuMDAwMDEgMTQuNUMxMi4wMzc1IDE0LjUgMTQuNSAxMi4wMzc1IDE0LjUgOC45OTk5OUMxNC41IDcuMDE3OCAxMy40NTE2IDUuMjgwMjYgMTEuODc3OCA0LjMxMjAyTDEyLjEzOTggMy44ODYxNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjJcIixkOlwiTTEyLjg1MSA1LjA3MzJDMTMuODY4NCA2LjA3MTA1IDE0LjUgNy40NjE5OCAxNC41IDguOTk5OTlDMTQuNSAxMi4wMzc1IDEyLjAzNzYgMTQuNSA5LjAwMDAyIDE0LjVDNy40NjIxNCAxNC41IDYuMDcxMzEgMTMuODY4NSA1LjA3MzQ4IDEyLjg1MTJMNS40MzA0MiAxMi41MDExQzYuMzM4MDkgMTMuNDI2NCA3LjYwMTg1IDE0IDkuMDAwMDIgMTRDMTEuNzYxNCAxNCAxNCAxMS43NjE0IDE0IDguOTk5OTlDMTQgNy42MDE3IDEzLjQyNjQgNi4zMzc4NSAxMi41MDA5IDUuNDMwMTdMMTIuODUxIDUuMDczMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjM1XCIsZDpcIk0xMy4zMDIxIDYuNDUwNzFDMTMuNzQ1NSA3LjE5NzM3IDE0IDguMDY5MzQgMTQgOUMxNCAxMS43NjE0IDExLjc2MTQgMTQgOS4wMDAwMSAxNEM4LjA0ODY3IDE0IDcuMTU4NjcgMTMuNzM0MSA2LjQwMTE4IDEzLjI3MjNMNi42NjE0MSAxMi44NDU0QzcuMzQyNzQgMTMuMjYwNyA4LjE0MzA1IDEzLjUgOS4wMDAwMSAxMy41QzExLjQ4NTMgMTMuNSAxMy41IDExLjQ4NTMgMTMuNSA5QzEzLjUgOC4xNjE2NCAxMy4yNzEgNy4zNzc1MyAxMi44NzIyIDYuNzA1OThMMTMuMzAyMSA2LjQ1MDcxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNVwiLGQ6XCJNMTMuMzc0NCA3Ljk0MDIxQzEzLjQ1NjYgOC4yODAzIDEzLjUgOC42MzUyNCAxMy41IDlDMTMuNSAxMS40ODUzIDExLjQ4NTMgMTMuNSA5LjAwMDAyIDEzLjVDOC42MTEwMyAxMy41IDguMjMzMjEgMTMuNDUwNiA3Ljg3MjY3IDEzLjM1NzZMNy45OTc1OCAxMi44NzM0QzguMzE3NjcgMTIuOTU2IDguNjUzNTIgMTMgOS4wMDAwMiAxM0MxMS4yMDkxIDEzIDEzIDExLjIwOTEgMTMgOUMxMyA4LjY3NTA3IDEyLjk2MTMgOC4zNTk1MiAxMi44ODg0IDguMDU3NTZMMTMuMzc0NCA3Ljk0MDIxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNjVcIixkOlwiTTEyLjkxNTUgOS44MjEzMkMxMi41ODk4IDExLjM4MTMgMTEuMzU2MiAxMi42MDcyIDkuNzkyMDMgMTIuOTIxNUw5LjY5MzUzIDEyLjQzMTNDMTEuMDYxMyAxMi4xNTY1IDEyLjE0MTMgMTEuMDgzMyAxMi40MjYxIDkuNzE5MTNMMTIuOTE1NSA5LjgyMTMyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS4yNzcxIDcuNTAyNTJDMS4yNzcxIDQuMDY0NTUgNC4wNjQxMyAxLjI3NzUzIDcuNTAyMDkgMS4yNzc1M0MxMC45NCAxLjI3NzUzIDEzLjcyNzEgNC4wNjQ1NSAxMy43MjcxIDcuNTAyNTJDMTMuNzI3MSAxMC45NDA1IDEwLjk0IDEzLjcyNzUgNy41MDIwOSAxMy43Mjc1QzQuMDY0MTIgMTMuNzI3NSAxLjI3NzEgMTAuOTQwNSAxLjI3NzEgNy41MDI1MlpNNy41MDIwOSAyLjIyNzUyQzQuNTg4OCAyLjIyNzUyIDIuMjI3MSA0LjU4OTIyIDIuMjI3MSA3LjUwMjUyQzIuMjI3MSAxMC40MTU4IDQuNTg4OCAxMi43Nzc1IDcuNTAyMDkgMTIuNzc3NUMxMC40MTU0IDEyLjc3NzUgMTIuNzc3MSAxMC40MTU4IDEyLjc3NzEgNy41MDI1MkMxMi43NzcxIDQuNTg5MjIgMTAuNDE1NCAyLjIyNzUyIDcuNTAyMDkgMi4yMjc1MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHhyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDcuNTAwMDNDNSA4LjMyODQ1IDQuMzI4NDMgOS4wMDAwMyAzLjUgOS4wMDAwM0MyLjY3MTU3IDkuMDAwMDMgMiA4LjMyODQ1IDIgNy41MDAwM0MyIDYuNjcxNiAyLjY3MTU3IDYuMDAwMDMgMy41IDYuMDAwMDNDNC4zMjg0MyA2LjAwMDAzIDUgNi42NzE2IDUgNy41MDAwM1pNNS43MTMxMyA4LjY2Mzg4QzUuMjk0NDUgOS40NTgzOCA0LjQ2MDQ4IDEwIDMuNSAxMEMyLjExOTI5IDEwIDEgOC44ODA3NCAxIDcuNTAwMDNDMSA2LjExOTMxIDIuMTE5MjkgNS4wMDAwMyAzLjUgNS4wMDAwM0M0LjQ2MDQ4IDUuMDAwMDMgNS4yOTQ0NSA1LjU0MTY3IDUuNzEzMTMgNi4zMzYxNkw5LjEwNDI0IDQuMjE2NzFDOS4wMzY0MyAzLjk4OTY4IDkgMy43NDkxMSA5IDMuNTAwMDNDOSAyLjExOTMyIDEwLjExOTMgMS4wMDAwMyAxMS41IDEuMDAwMDNDMTIuODgwNyAxLjAwMDAzIDE0IDIuMTE5MzIgMTQgMy41MDAwM0MxNCA0Ljg4MDc0IDEyLjg4MDcgNi4wMDAwMyAxMS41IDYuMDAwMDNDMTAuNjkxNSA2LjAwMDAzIDkuOTcyNjQgNS42MTYyNCA5LjUxNTY2IDUuMDIwOUw1Ljk4NTMgNy4yMjczOEM1Ljk5NTAyIDcuMzE2OTIgNiA3LjQwNzg5IDYgNy41MDAwM0M2IDcuNTkyMTYgNS45OTUwMiA3LjY4MzEyIDUuOTg1MyA3Ljc3MjY3TDkuNTE1NjcgOS45NzkxNUM5Ljk3MjY1IDkuMzgzODIgMTAuNjkxNSA5LjAwMDAzIDExLjUgOS4wMDAwM0MxMi44ODA3IDkuMDAwMDMgMTQgMTAuMTE5MyAxNCAxMS41QzE0IDEyLjg4MDcgMTIuODgwNyAxNCAxMS41IDE0QzEwLjExOTMgMTQgOSAxMi44ODA3IDkgMTEuNUM5IDExLjI1MDkgOS4wMzY0MyAxMS4wMTA0IDkuMTA0MjUgMTAuNzgzM0w1LjcxMzEzIDguNjYzODhaTTExLjUgNS4wMDAwM0MxMi4zMjg0IDUuMDAwMDMgMTMgNC4zMjg0NiAxMyAzLjUwMDAzQzEzIDIuNjcxNiAxMi4zMjg0IDIuMDAwMDMgMTEuNSAyLjAwMDAzQzEwLjY3MTYgMi4wMDAwMyAxMCAyLjY3MTYgMTAgMy41MDAwM0MxMCA0LjMyODQ2IDEwLjY3MTYgNS4wMDAwMyAxMS41IDUuMDAwMDNaTTEzIDExLjVDMTMgMTIuMzI4NSAxMi4zMjg0IDEzIDExLjUgMTNDMTAuNjcxNiAxMyAxMCAxMi4zMjg1IDEwIDExLjVDMTAgMTAuNjcxNiAxMC42NzE2IDEwIDExLjUgMTBDMTIuMzI4NCAxMCAxMyAxMC42NzE2IDEzIDExLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxPcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy41IDUuMDAwMDZDMy4yMjM4NiA1LjAwMDA2IDMgNS4yMjM5MiAzIDUuNTAwMDZMMyAxMS41MDAxQzMgMTEuNzc2MiAzLjIyMzg2IDEyLjAwMDEgMy41IDEyLjAwMDFMMTEuNSAxMi4wMDAxQzExLjc3NjEgMTIuMDAwMSAxMiAxMS43NzYyIDEyIDExLjUwMDFMMTIgNS41MDAwNkMxMiA1LjIyMzkyIDExLjc3NjEgNS4wMDAwNiAxMS41IDUuMDAwMDZMMTAuMjUgNS4wMDAwNkM5Ljk3Mzg2IDUuMDAwMDYgOS43NSA0Ljc3NjIgOS43NSA0LjUwMDA2QzkuNzUgNC4yMjM5MiA5Ljk3Mzg2IDQuMDAwMDYgMTAuMjUgNC4wMDAwNkwxMS41IDQuMDAwMDZDMTIuMzI4NCA0LjAwMDA2IDEzIDQuNjcxNjMgMTMgNS41MDAwNkwxMyAxMS41MDAxQzEzIDEyLjMyODUgMTIuMzI4NCAxMy4wMDAxIDExLjUgMTMuMDAwMUwzLjUgMTMuMDAwMUMyLjY3MTU3IDEzLjAwMDEgMiAxMi4zMjg1IDIgMTEuNTAwMUwyIDUuNTAwMDZDMiA0LjY3MTYzIDIuNjcxNTcgNC4wMDAwNiAzLjUgNC4wMDAwNkw0Ljc1IDQuMDAwMDZDNS4wMjYxNCA0LjAwMDA2IDUuMjUgNC4yMjM5MiA1LjI1IDQuNTAwMDZDNS4yNSA0Ljc3NjIgNS4wMjYxNCA1LjAwMDA2IDQuNzUgNS4wMDAwNkwzLjUgNS4wMDAwNlpNNyAxLjYzNjRMNS41NjgyIDMuMDY4MkM1LjM5MjQ2IDMuMjQzOTMgNS4xMDc1NCAzLjI0MzkzIDQuOTMxOCAzLjA2ODJDNC43NTYwNyAyLjg5MjQ2IDQuNzU2MDcgMi42MDc1NCA0LjkzMTggMi40MzE4TDcuMTgxOCAwLjE4MTgwMkM3LjI2NjE5IDAuMDk3NDEgNy4zODA2NSAwLjA0OTk5OSA3LjUgMC4wNDk5OTlDNy42MTkzNSAwLjA0OTk5OSA3LjczMzgxIDAuMDk3NDEgNy44MTgyIDAuMTgxODAyTDEwLjA2ODIgMi40MzE4QzEwLjI0MzkgMi42MDc1NCAxMC4yNDM5IDIuODkyNDYgMTAuMDY4MiAzLjA2ODJDOS44OTI0NiAzLjI0MzkzIDkuNjA3NTQgMy4yNDM5MyA5LjQzMTggMy4wNjgyTDggMS42MzY0TDggOC41QzggOC43NzYxNCA3Ljc3NjE0IDkgNy41IDlDNy4yMjM4NiA5IDcgOC43NzYxNCA3IDguNUw3IDEuNjM2NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LExyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi4zNTM2IDEuMTQ2NDVDMTIuMTU4MyAwLjk1MTE4NCAxMS44NDE3IDAuOTUxMTg0IDExLjY0NjQgMS4xNDY0NUMxMS40NTEyIDEuMzQxNzEgMTEuNDUxMiAxLjY1ODI5IDExLjY0NjQgMS44NTM1NUwxMi43OTI5IDNIMTJDMTAuNzAzNyAzIDkuNzExMTEgMy41ODQyMyA4Ljg3MjQ4IDQuMzg5MzFDOC4yMDA2NSA1LjAzNDI3IDcuNTkzNDkgNS44NTY4NCA2Ljk5NDYxIDYuNjY4MkM2Ljg2Mjg3IDYuODQ2NjggNi43MzE1NCA3LjAyNDYyIDYuNiA3LjJDNS4xMDg3NCA5LjE4ODM1IDMuNDkwMzcgMTEgMC41IDExQzAuMjIzODU4IDExIDAgMTEuMjIzOSAwIDExLjVDMCAxMS43NzYxIDAuMjIzODU4IDEyIDAuNSAxMkM0LjAwOTYzIDEyIDUuODkxMjYgOS44MTE2NSA3LjQgNy44QzcuNTQzNjcgNy42MDg0NSA3LjY4MzIgNy40MTk2MiA3LjgxOTk2IDcuMjM0NTRMNy44MjAwNSA3LjIzNDQzTDcuODIwMDYgNy4yMzQ0MUM4LjQxNjc0IDYuNDI2OTUgOC45NjA2OSA1LjY5MDg1IDkuNTY1MDIgNS4xMTA2OUMxMC4yODg5IDQuNDE1NzcgMTEuMDQ2MyA0IDEyIDRIMTIuNzkyOUwxMS42NDY0IDUuMTQ2NDVDMTEuNDUxMiA1LjM0MTcxIDExLjQ1MTIgNS42NTgyOSAxMS42NDY0IDUuODUzNTVDMTEuODQxNyA2LjA0ODgyIDEyLjE1ODMgNi4wNDg4MiAxMi4zNTM2IDUuODUzNTVMMTQuMzUzNiAzLjg1MzU1QzE0LjU0ODggMy42NTgyOSAxNC41NDg4IDMuMzQxNzEgMTQuMzUzNiAzLjE0NjQ1TDEyLjM1MzYgMS4xNDY0NVpNMC41IDNDMy4zNTI3OCAzIDUuMTI5OTIgNC40NDU4OCA2LjUwNTQ4IDYuMDY3NDZMNi4zNzYyIDYuMjQyNjZDNi4yNDgzIDYuNDE2MSA2LjEyMjkzIDYuNTg2MDkgNiA2Ljc1QzUuOTYzOTcgNi43OTgwNCA1LjkyNzk4IDYuODQ1ODEgNS44OTIgNi44OTMzMUM0LjU3MzQ4IDUuMjkzMDYgMy4wMjYzNyA0IDAuNSA0QzAuMjIzODU4IDQgMCAzLjc3NjE0IDAgMy41QzAgMy4yMjM4NiAwLjIyMzg1OCAzIDAuNSAzWk04Ljg3MjQ4IDEwLjYxMDdDOC4zNzI4NCAxMC4xMzEgNy45MDg5NyA5LjU1MzE0IDcuNDU3NjcgOC45NTQ2OEM3LjY0Njg4IDguNzE2OTMgNy44MjcwNCA4LjQ4MDYxIDggOC4yNUw4LjA4OTg3IDguMTI5ODdDOC41ODQxMiA4Ljc5NDAyIDkuMDUyODggOS4zOTc2NiA5LjU2NTAyIDkuODg5MzFDMTAuMjg4OSAxMC41ODQyIDExLjA0NjMgMTEgMTIgMTFIMTIuNzkyOUwxMS42NDY0IDkuODUzNTVDMTEuNDUxMiA5LjY1ODI5IDExLjQ1MTIgOS4zNDE3MSAxMS42NDY0IDkuMTQ2NDVDMTEuODQxNyA4Ljk1MTE4IDEyLjE1ODMgOC45NTExOCAxMi4zNTM2IDkuMTQ2NDVMMTQuMzUzNiAxMS4xNDY0QzE0LjU0ODggMTEuMzQxNyAxNC41NDg4IDExLjY1ODMgMTQuMzUzNiAxMS44NTM2TDEyLjM1MzYgMTMuODUzNkMxMi4xNTgzIDE0LjA0ODggMTEuODQxNyAxNC4wNDg4IDExLjY0NjQgMTMuODUzNkMxMS40NTEyIDEzLjY1ODMgMTEuNDUxMiAxMy4zNDE3IDExLjY0NjQgMTMuMTQ2NEwxMi43OTI5IDEySDEyQzEwLjcwMzcgMTIgOS43MTExMSAxMS40MTU4IDguODcyNDggMTAuNjEwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE1yPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS41IDMuMDQ5OTlDMTEuNzQ4NSAzLjA0OTk5IDExLjk1IDMuMjUxNDYgMTEuOTUgMy40OTk5OVY3LjQ5OTk5QzExLjk1IDcuNzQ4NTIgMTEuNzQ4NSA3Ljk0OTk5IDExLjUgNy45NDk5OUMxMS4yNTE1IDcuOTQ5OTkgMTEuMDUgNy43NDg1MiAxMS4wNSA3LjQ5OTk5VjQuNTg2MzlMNC41ODYzOCAxMS4wNUg3LjQ5OTk5QzcuNzQ4NTIgMTEuMDUgNy45NDk5OSAxMS4yNTE1IDcuOTQ5OTkgMTEuNUM3Ljk0OTk5IDExLjc0ODUgNy43NDg1MiAxMS45NSA3LjQ5OTk5IDExLjk1TDMuNDk5OTkgMTEuOTVDMy4zODA2NCAxMS45NSAzLjI2NjE4IDExLjkwMjYgMy4xODE3OSAxMS44MTgyQzMuMDk3NCAxMS43MzM4IDMuMDQ5OTkgMTEuNjE5MyAzLjA0OTk5IDExLjVMMy4wNDk5OSA3LjQ5OTk5QzMuMDQ5OTkgNy4yNTE0NiAzLjI1MTQ2IDcuMDQ5OTkgMy40OTk5OSA3LjA0OTk5QzMuNzQ4NTIgNy4wNDk5OSAzLjk0OTk5IDcuMjUxNDYgMy45NDk5OSA3LjQ5OTk5TDMuOTQ5OTkgMTAuNDEzNkwxMC40MTM2IDMuOTQ5OTlMNy40OTk5OSAzLjk0OTk5QzcuMjUxNDYgMy45NDk5OSA3LjA0OTk5IDMuNzQ4NTIgNy4wNDk5OSAzLjQ5OTk5QzcuMDQ5OTkgMy4yNTE0NiA3LjI1MTQ2IDMuMDQ5OTkgNy40OTk5OSAzLjA0OTk5TDExLjUgMy4wNDk5OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFNyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUzNzMxIDAuODI2ODczQzcuNTEyNSAwLjgyNDM5MiA3LjQ4NzUgMC44MjQzOTIgNy40NjI2OSAwLjgyNjg3M0wzLjk2MjY5IDEuMTc2ODdDMy44NTY3MiAxLjE4NzQ3IDMuNzYwMjUgMS4yNDI2MiAzLjY5NzM2IDEuMzI4NTdMMC42OTk3NzEgNS40MjUyOEMwLjY1NDA0NiA1LjQ4NjI3IDAuNjI2NDcgNS41NjE2NSAwLjYyNTA1NyA1LjY0MzRDMC42MjUwMTkgNS42NDU2IDAuNjI1IDUuNjQ3ODEgMC42MjUgNS42NTAwMUMwLjYyNSA1LjY1MDUyIDAuNjI1MDAxIDUuNjUxMDMgMC42MjUwMDMgNS42NTE1M0MwLjYyNTM2MyA1Ljc0MjM3IDAuNjU4MDIxIDUuODI1NTkgMC43MTIwODcgNS44OTAzTDcuMjEwNDIgMTMuNzg4M0M3LjI4MTY1IDEzLjg3NDkgNy4zODc4OSAxMy45MjUgNy41IDEzLjkyNUM3LjYxMjExIDEzLjkyNSA3LjcxODM1IDEzLjg3NDkgNy43ODk1OCAxMy43ODgzTDE0LjI4NzkgNS44OTAzMUMxNC4zNDIgNS44MjU2IDE0LjM3NDYgNS43NDIzNyAxNC4zNzUgNS42NTE1M0MxNC4zNzUgNS42NTEwMyAxNC4zNzUgNS42NTA1MiAxNC4zNzUgNS42NTAwMUMxNC4zNzUgNS42NDg0OSAxNC4zNzUgNS42NDY5NyAxNC4zNzUgNS42NDU0NUMxNC4zNzQ5IDUuNjM5NjMgMTQuMzc0NyA1LjYzMzgyIDE0LjM3NDQgNS42MjgwMUMxNC4zNyA1LjU1MjE5IDE0LjM0MzEgNS40ODI0MiAxNC4zMDAyIDUuNDI1MjdMMTEuMzAyNiAxLjMyODU3QzExLjIzOTcgMS4yNDI2MiAxMS4xNDMzIDEuMTg3NDcgMTEuMDM3MyAxLjE3Njg3TDcuNTM3MzEgMC44MjY4NzNaTTEwLjkyNSA1LjI3NTAxVjUuMjUyMzZMMTAuOTIyMyA1LjI3NTAxSDEwLjkyNVpNMTAuOTM0MiA1LjE3NDk4SDEzLjE4NzdMMTEuMjQ5NSAyLjUyNjFMMTAuOTM0MiA1LjE3NDk4Wk0xMC41NzA3IDEuODgzOTVMOC4wNDQzMiAxLjYzMTMxTDEwLjE3NDcgNS4yMTAzNEwxMC41NzA3IDEuODgzOTVaTTYuOTU1NjggMS42MzEzMUw0LjQyOTMxIDEuODgzOTVMNC44MjUzMSA1LjIxMDM0TDYuOTU1NjggMS42MzEzMVpNMy43NTA0NiAyLjUyNjFMMS44MTIyNiA1LjE3NDk4SDQuMDY1OEwzLjc1MDQ2IDIuNTI2MVpNMS43OTQxNiA2LjAyNTAxTDYuNzU4NjEgMTIuMDU4N0w0LjIyMzcxIDYuMDY2OUM0LjIxNzg3IDYuMDUzMSA0LjIxMzE0IDYuMDM5MSA0LjIwOTQ5IDYuMDI1MDFIMS43OTQxNlpNNS4xNTA1NSA2LjAyNTAxTDcuNDk5OTkgMTIuMTA4NUw5Ljg0OTQzIDYuMDI1MDFIOS43ODY4MUg1LjIxMzE5SDUuMTUwNTVaTTEwLjc5MDUgNi4wMjUwMUMxMC43ODY5IDYuMDM5MSAxMC43ODIxIDYuMDUzMSAxMC43NzYzIDYuMDY2OUw4LjI0MTM5IDEyLjA1ODdMMTMuMjA1OCA2LjAyNTAxSDEwLjc5MDVaTTcuNSAyLjE4MzE3TDkuMzQwMzggNS4yNzUwMUg1LjY1OTYyTDcuNSAyLjE4MzE3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sX3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuMTA4NzYgMTRMOS40NjU4MiAxSDEwLjgxNzhMNS40NjA3NCAxNEg0LjEwODc2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sanI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwLjMwMDQgNy40OTk5MUMxMC4zMDA0IDguNDk0MyA5LjQ5NDI2IDkuMzAwNDEgOC40OTk4OCA5LjMwMDQxQzcuNTA1NDkgOS4zMDA0MSA2LjY5OTM4IDguNDk0MyA2LjY5OTM4IDcuNDk5OTFDNi42OTkzOCA2LjUwNTUzIDcuNTA1NDkgNS42OTk0MiA4LjQ5OTg4IDUuNjk5NDJDOS40OTQyNiA1LjY5OTQyIDEwLjMwMDQgNi41MDU1MyAxMC4zMDA0IDcuNDk5OTFaTTExLjIwNSA4QzEwLjk2OTkgOS4yODAyOSA5Ljg0ODE2IDEwLjI1MDQgOC40OTk4OCAxMC4yNTA0QzcuMTUxNiAxMC4yNTA0IDYuMDI5OSA5LjI4MDI5IDUuNzk0NzMgOEgwLjVDMC4yMjM4NTggOCAwIDcuNzc2MTQgMCA3LjVDMCA3LjIyMzg2IDAuMjIzODU4IDcgMC41IDdINS43OTQ3QzYuMDI5OCA1LjcxOTYyIDcuMTUxNTQgNC43NDk0MiA4LjQ5OTg4IDQuNzQ5NDJDOS44NDgyMiA0Ljc0OTQyIDEwLjk2OTkgNS43MTk2MiAxMS4yMDUxIDdIMTQuNUMxNC43NzYxIDcgMTUgNy4yMjM4NiAxNSA3LjVDMTUgNy43NzYxNCAxNC43NzYxIDggMTQuNSA4SDExLjIwNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEVyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNC40OTk5IDAuOTk5OTk0QzE0LjIyMzcgMC45OTk5OTQgMTMuOTk5OSAxLjIyMzg1IDEzLjk5OTkgMS40OTk5OUwxMy45OTk5IDUuOTk5OTVMOS45OTk5MiA1Ljk5OTk1QzkuNDQ3NjQgNS45OTk5NSA4Ljk5OTkzIDYuNDQ3NjYgOC45OTk5MyA2Ljk5OTk0TDguOTk5OTMgNy45OTk5NEM4Ljk5OTkzIDguNTUyMjIgOS40NDc2NCA4Ljk5OTkzIDkuOTk5OTIgOC45OTk5M0wxMy45OTk5IDguOTk5OTNMMTMuOTk5OSAxMy40OTk5QzEzLjk5OTkgMTMuNzc2IDE0LjIyMzcgMTMuOTk5OSAxNC40OTk5IDEzLjk5OTlDMTQuNzc2IDEzLjk5OTkgMTQuOTk5OSAxMy43NzYgMTQuOTk5OSAxMy40OTk5TDE0Ljk5OTkgMS40OTk5OUMxNC45OTk5IDEuMjIzODUgMTQuNzc2IDAuOTk5OTk0IDE0LjQ5OTkgMC45OTk5OTRaTTQuOTk5OTYgNS45OTk5NUwwLjk5OTk5MiA1Ljk5OTk1TDAuOTk5OTkyIDEuNDk5OTlDMC45OTk5OTIgMS4yMjM4NSAwLjc3NjEzNiAwLjk5OTk5NCAwLjQ5OTk5NiAwLjk5OTk5NEMwLjIyMzg1NiAwLjk5OTk5NCAtOS43ODUyZS0wOSAxLjIyMzg1IC0yLjE4NTU3ZS0wOCAxLjQ5OTk5TDQuMDcyNzllLTA3IDEzLjQ5OTlDMy45NTIwOGUtMDcgMTMuNzc2IDAuMjIzODU1IDEzLjk5OTkgMC40OTk5OTYgMTMuOTk5OUMwLjc3NjEzNiAxMy45OTk5IDAuOTk5OTkyIDEzLjc3NiAwLjk5OTk5MiAxMy40OTk5TDAuOTk5OTkyIDguOTk5OTNMNC45OTk5NiA4Ljk5OTkzQzUuNTUyMjQgOC45OTk5MyA1Ljk5OTk1IDguNTUyMjIgNS45OTk5NSA3Ljk5OTkzTDUuOTk5OTUgNi45OTk5NEM1Ljk5OTk1IDYuNDQ3NjYgNS41NTIyNCA1Ljk5OTk1IDQuOTk5OTYgNS45OTk5NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFByPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjk5OTg3OCAwLjVDMC45OTk4NzggMC4yMjM4NTggMS4yMjM3NCAwIDEuNDk5ODggMEgxMy40OTk5QzEzLjc3NiAwIDEzLjk5OTkgMC4yMjM4NTggMTMuOTk5OSAwLjVDMTMuOTk5OSAwLjc3NjE0MiAxMy43NzYgMSAxMy40OTk5IDFMOSAxVjVDOSA1LjU1MjI4IDguNTUyMjggNiA4IDZIN0M2LjQ0NzcyIDYgNiA1LjU1MjI4IDYgNVYxSDEuNDk5ODhDMS4yMjM3NCAxIDAuOTk5ODc4IDAuNzc2MTQyIDAuOTk5ODc4IDAuNVpNNyA5QzYuNDQ3NzIgOSA2IDkuNDQ3NzEgNiAxMFYxNEgxLjQ5OTg4QzEuMjIzNzQgMTQgMC45OTk4NzggMTQuMjIzOSAwLjk5OTg3OCAxNC41QzAuOTk5ODc4IDE0Ljc3NjEgMS4yMjM3NCAxNSAxLjQ5OTg4IDE1SDEzLjQ5OTlDMTMuNzc2IDE1IDEzLjk5OTkgMTQuNzc2MSAxMy45OTk5IDE0LjVDMTMuOTk5OSAxNC4yMjM5IDEzLjc3NiAxNCAxMy40OTk5IDE0SDlWMTBDOSA5LjQ0NzcyIDguNTUyMjggOSA4IDlIN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGtyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNC40OTk5IDAuOTk5OTkyQzE0LjIyMzcgMC45OTk5OTIgMTMuOTk5OSAxLjIyMzg1IDEzLjk5OTkgMS40OTk5OUwxMy45OTk5IDEzLjQ5OTlDMTMuOTk5OSAxMy43NzYgMTQuMjIzNyAxMy45OTk5IDE0LjQ5OTkgMTMuOTk5OUMxNC43NzYgMTMuOTk5OSAxNC45OTk5IDEzLjc3NiAxNC45OTk5IDEzLjQ5OTlMMTQuOTk5OSAxLjQ5OTk5QzE0Ljk5OTkgMS4yMjM4NSAxNC43NzYgMC45OTk5OTIgMTQuNDk5OSAwLjk5OTk5MlpNMC40OTk5OTYgMC45OTk5OTJDMC4yMjM4NTYgMC45OTk5OTIgLTkuNzg1MDllLTA5IDEuMjIzODUgLTIuMTg1NTZlLTA4IDEuNDk5OTlMNC4wNzI3OWUtMDcgMTMuNDk5OUMzLjk1MjA4ZS0wNyAxMy43NzYgMC4yMjM4NTUgMTMuOTk5OSAwLjQ5OTk5NiAxMy45OTk5QzAuNzc2MTM2IDEzLjk5OTkgMC45OTk5OTIgMTMuNzc2IDAuOTk5OTkyIDEzLjQ5OTlMMC45OTk5OTIgMS40OTk5OUMwLjk5OTk5MiAxLjIyMzg1IDAuNzc2MTM2IDAuOTk5OTkyIDAuNDk5OTk2IDAuOTk5OTkyWk0xLjk5OTk4IDYuOTk5OTRDMS45OTk5OCA2LjQ0NzY2IDIuNDQ3NjkgNS45OTk5NSAyLjk5OTk4IDUuOTk5OTVMNS45OTk5NSA1Ljk5OTk1QzYuNTUyMjMgNS45OTk5NSA2Ljk5OTk0IDYuNDQ3NjYgNi45OTk5NCA2Ljk5OTk0TDYuOTk5OTQgNy45OTk5M0M2Ljk5OTk0IDguNTUyMjEgNi41NTIyMyA4Ljk5OTkyIDUuOTk5OTUgOC45OTk5MkwyLjk5OTk4IDguOTk5OTJDMi40NDc3IDguOTk5OTIgMS45OTk5OCA4LjU1MjIxIDEuOTk5OTggNy45OTk5M0wxLjk5OTk4IDYuOTk5OTRaTTguOTk5OTMgNS45OTk5NUM4LjQ0NzY1IDUuOTk5OTUgNy45OTk5MyA2LjQ0NzY2IDcuOTk5OTMgNi45OTk5NEw3Ljk5OTkzIDcuOTk5OTNDNy45OTk5MyA4LjU1MjIxIDguNDQ3NjUgOC45OTk5MiA4Ljk5OTkzIDguOTk5OTJMMTEuOTk5OSA4Ljk5OTkyQzEyLjU1MjIgOC45OTk5MiAxMi45OTk5IDguNTUyMjEgMTIuOTk5OSA3Ljk5OTkzTDEyLjk5OTkgNi45OTk5NEMxMi45OTk5IDYuNDQ3NjYgMTIuNTUyMiA1Ljk5OTk1IDExLjk5OTkgNS45OTk5NUw4Ljk5OTkzIDUuOTk5OTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxIcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC45OTk4NzggMC41QzAuOTk5ODc4IDAuMjIzODU4IDEuMjIzNzQgMCAxLjQ5OTg4IDBIMTMuNDk5OUMxMy43NzYgMCAxMy45OTk5IDAuMjIzODU4IDEzLjk5OTkgMC41QzEzLjk5OTkgMC43NzYxNDIgMTMuNzc2IDEgMTMuNDk5OSAxSDEuNDk5ODhDMS4yMjM3NCAxIDAuOTk5ODc4IDAuNzc2MTQyIDAuOTk5ODc4IDAuNVpNNyAyQzYuNDQ3NzIgMiA2IDIuNDQ3NzIgNiAzVjZDNiA2LjU1MjI4IDYuNDQ3NzIgNyA3IDdIOEM4LjU1MjI4IDcgOSA2LjU1MjI4IDkgNlYzQzkgMi40NDc3MiA4LjU1MjI4IDIgOCAySDdaTTcgOEM2LjQ0NzcyIDggNiA4LjQ0NzcxIDYgOVYxMkM2IDEyLjU1MjMgNi40NDc3MiAxMyA3IDEzSDhDOC41NTIyOCAxMyA5IDEyLjU1MjMgOSAxMlY5QzkgOC40NDc3MiA4LjU1MjI4IDggOCA4SDdaTTEuNDk5ODggMTRDMS4yMjM3NCAxNCAwLjk5OTg3OCAxNC4yMjM5IDAuOTk5ODc4IDE0LjVDMC45OTk4NzggMTQuNzc2MSAxLjIyMzc0IDE1IDEuNDk5ODggMTVIMTMuNDk5OUMxMy43NzYgMTUgMTMuOTk5OSAxNC43NzYxIDEzLjk5OTkgMTQuNUMxMy45OTk5IDE0LjIyMzkgMTMuNzc2IDE0IDEzLjQ5OTkgMTRIMS40OTk4OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFZyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ2OTY4IDEuMDUwODVDNy42NDEyMiAxLjEzNDc1IDcuNzUgMS4zMDkwNCA3Ljc1IDEuNVYxMy41QzcuNzUgMTMuNjkxIDcuNjQxMjIgMTMuODY1MyA3LjQ2OTY4IDEzLjk0OTJDNy4yOTgxMyAxNC4wMzMxIDcuMDkzNzcgMTQuMDExOSA2Ljk0MzAzIDEzLjg5NDdMMy4yMjEzIDExSDEuNUMwLjY3MTU3MSAxMSAwIDEwLjMyODQgMCA5LjVWNS41QzAgNC42NzE1OCAwLjY3MTU3MyA0IDEuNSA0SDMuMjIxM0w2Ljk0MzAzIDEuMTA1MzNDNy4wOTM3NyAwLjk4ODA4NSA3LjI5ODEzIDAuOTY2OTQ1IDcuNDY5NjggMS4wNTA4NVpNNi43NSAyLjUyMjMyTDMuNjk5ODMgNC44OTQ2OEMzLjYxMjA2IDQuOTYyOTQgMy41MDQwNSA1IDMuMzkyODYgNUgxLjVDMS4yMjM4NiA1IDEgNS4yMjM4NiAxIDUuNVY5LjVDMSA5Ljc3NjE1IDEuMjIzODYgMTAgMS41IDEwSDMuMzkyODZDMy41MDQwNSAxMCAzLjYxMjA2IDEwLjAzNzEgMy42OTk4MyAxMC4xMDUzTDYuNzUgMTIuNDc3N1YyLjUyMjMyWk0xMC4yNzg0IDMuODQ4MDRDMTAuNDYyMyAzLjcyNTY3IDEwLjcxMDYgMy43NzU1NyAxMC44MzMgMy45NTk0OUMxMi4yNTU4IDYuMDk3OTggMTIuMjU1OCA4LjkwMTk5IDEwLjgzMyAxMS4wNDA1QzEwLjcxMDYgMTEuMjI0NCAxMC40NjIzIDExLjI3NDMgMTAuMjc4NCAxMS4xNTE5QzEwLjA5NDQgMTEuMDI5NiAxMC4wNDQ1IDEwLjc4MTMgMTAuMTY2OSAxMC41OTczQzExLjQxMTEgOC43MjcyOCAxMS40MTExIDYuMjcyNjkgMTAuMTY2OSA0LjQwMjY0QzEwLjA0NDUgNC4yMTg3MSAxMC4wOTQ0IDMuOTcwNDEgMTAuMjc4NCAzLjg0ODA0Wk0xMi42Nzg1IDEuNDMwNDRDMTIuNTM1NiAxLjI2MTkgMTIuMjgzMiAxLjI0MTA0IDEyLjExNDcgMS4zODM4NkMxMS45NDYyIDEuNTI2NjcgMTEuOTI1MyAxLjc3OTA4IDEyLjA2ODEgMS45NDc2MkMxNC43NzczIDUuMTQ0ODggMTQuNzc3MyA5Ljg1NTEzIDEyLjA2ODEgMTMuMDUyNEMxMS45MjUzIDEzLjIyMDkgMTEuOTQ2MiAxMy40NzMzIDEyLjExNDcgMTMuNjE2MUMxMi4yODMyIDEzLjc1OSAxMi41MzU2IDEzLjczODEgMTIuNjc4NSAxMy41Njk2QzE1LjY0MDYgMTAuMDczOSAxNS42NDA2IDQuOTI2MTIgMTIuNjc4NSAxLjQzMDQ0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTggMS41QzggMS4zMTA2MiA3Ljg5MyAxLjEzNzQ5IDcuNzIzNjEgMS4wNTI3OUM3LjU1NDIxIDAuOTY4MDkzIDcuMzUxNTEgMC45ODYzNzEgNy4yIDEuMUwzLjMzMzMzIDRIMS41QzAuNjcxNTczIDQgMCA0LjY3MTU4IDAgNS41VjkuNUMwIDEwLjMyODQgMC42NzE1NzMgMTEgMS41IDExSDMuMzMzMzNMNy4yIDEzLjlDNy4zNTE1MSAxNC4wMTM2IDcuNTU0MjEgMTQuMDMxOSA3LjcyMzYxIDEzLjk0NzJDNy44OTMgMTMuODYyNSA4IDEzLjY4OTQgOCAxMy41VjEuNVpNMy44IDQuOUw3IDIuNVYxMi41TDMuOCAxMC4xQzMuNzEzNDUgMTAuMDM1MSAzLjYwODE5IDEwIDMuNSAxMEgxLjVDMS4yMjM4NiAxMCAxIDkuNzc2MTQgMSA5LjVWNS41QzEgNS4yMjM4NiAxLjIyMzg2IDUgMS41IDVIMy41QzMuNjA4MTkgNSAzLjcxMzQ1IDQuOTY0OTEgMy44IDQuOVpNMTAuODMzIDMuOTU5NDlDMTAuNzEwNiAzLjc3NTU3IDEwLjQ2MjMgMy43MjU2NyAxMC4yNzg0IDMuODQ4MDRDMTAuMDk0NCAzLjk3MDQxIDEwLjA0NDUgNC4yMTg3MSAxMC4xNjY5IDQuNDAyNjRDMTEuNDExMSA2LjI3MjY4IDExLjQxMTEgOC43MjcyOCAxMC4xNjY5IDEwLjU5NzNDMTAuMDQ0NSAxMC43ODEzIDEwLjA5NDQgMTEuMDI5NiAxMC4yNzg0IDExLjE1MTlDMTAuNDYyMyAxMS4yNzQzIDEwLjcxMDYgMTEuMjI0NCAxMC44MzMgMTEuMDQwNUMxMi4yNTU4IDguOTAxOTkgMTIuMjU1OCA2LjA5Nzk4IDEwLjgzMyAzLjk1OTQ5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNzIzNjEgMS4wNTI3OUM3Ljg5MyAxLjEzNzQ5IDggMS4zMTA2MiA4IDEuNVYxMy41QzggMTMuNjg5NCA3Ljg5MyAxMy44NjI1IDcuNzIzNjEgMTMuOTQ3MkM3LjU1NDIxIDE0LjAzMTkgNy4zNTE1MSAxNC4wMTM2IDcuMiAxMy45TDMuMzMzMzMgMTFIMS41QzAuNjcxNTczIDExIDAgMTAuMzI4NCAwIDkuNVY1LjVDMCA0LjY3MTU4IDAuNjcxNTczIDQgMS41IDRIMy4zMzMzM0w3LjIgMS4xQzcuMzUxNTEgMC45ODYzNzEgNy41NTQyMSAwLjk2ODA5MyA3LjcyMzYxIDEuMDUyNzlaTTcgMi41TDMuOCA0LjlDMy43MTM0NSA0Ljk2NDkxIDMuNjA4MTkgNSAzLjUgNUgxLjVDMS4yMjM4NiA1IDEgNS4yMjM4NiAxIDUuNVY5LjVDMSA5Ljc3NjE0IDEuMjIzODYgMTAgMS41IDEwSDMuNUMzLjYwODE5IDEwIDMuNzEzNDUgMTAuMDM1MSAzLjggMTAuMUw3IDEyLjVWMi41Wk0xNC44NTM2IDUuMTQ2NDVDMTUuMDQ4OCA1LjM0MTcxIDE1LjA0ODggNS42NTgyOSAxNC44NTM2IDUuODUzNTVMMTMuMjA3MSA3LjVMMTQuODUzNiA5LjE0NjQ1QzE1LjA0ODggOS4zNDE3MSAxNS4wNDg4IDkuNjU4MjkgMTQuODUzNiA5Ljg1MzU1QzE0LjY1ODMgMTAuMDQ4OCAxNC4zNDE3IDEwLjA0ODggMTQuMTQ2NCA5Ljg1MzU1TDEyLjUgOC4yMDcxMUwxMC44NTM2IDkuODUzNTVDMTAuNjU4MyAxMC4wNDg4IDEwLjM0MTcgMTAuMDQ4OCAxMC4xNDY0IDkuODUzNTVDOS45NTExOCA5LjY1ODI5IDkuOTUxMTggOS4zNDE3MSAxMC4xNDY0IDkuMTQ2NDVMMTEuNzkyOSA3LjVMMTAuMTQ2NCA1Ljg1MzU1QzkuOTUxMTggNS42NTgyOSA5Ljk1MTE4IDUuMzQxNzEgMTAuMTQ2NCA1LjE0NjQ1QzEwLjM0MTcgNC45NTExOCAxMC42NTgzIDQuOTUxMTggMTAuODUzNiA1LjE0NjQ1TDEyLjUgNi43OTI4OUwxNC4xNDY0IDUuMTQ2NDVDMTQuMzQxNyA0Ljk1MTE4IDE0LjY1ODMgNC45NTExOCAxNC44NTM2IDUuMTQ2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxacj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOCAxLjVDOCAxLjMxMDYyIDcuODkzIDEuMTM3NDkgNy43MjM2MSAxLjA1Mjc5QzcuNTU0MjEgMC45NjgwOTMgNy4zNTE1MSAwLjk4NjM3MSA3LjIgMS4xTDMuMzMzMzMgNEgxLjVDMC42NzE1NzMgNCAwIDQuNjcxNTggMCA1LjVWOS41QzAgMTAuMzI4NCAwLjY3MTU3MyAxMSAxLjUgMTFIMy4zMzMzM0w3LjIgMTMuOUM3LjM1MTUxIDE0LjAxMzYgNy41NTQyMSAxNC4wMzE5IDcuNzIzNjEgMTMuOTQ3MkM3Ljg5MyAxMy44NjI1IDggMTMuNjg5NCA4IDEzLjVWMS41Wk0zLjggNC45TDcgMi41VjEyLjVMMy44IDEwLjFDMy43MTM0NSAxMC4wMzUxIDMuNjA4MTkgMTAgMy41IDEwSDEuNUMxLjIyMzg2IDEwIDEgOS43NzYxNCAxIDkuNVY1LjVDMSA1LjIyMzg2IDEuMjIzODYgNSAxLjUgNUgzLjVDMy42MDgxOSA1IDMuNzEzNDUgNC45NjQ5MSAzLjggNC45Wk0xMC4wODMgNS4wNTU3N0M5Ljk2MDY2IDQuODcxODUgOS43MTIzNSA0LjgyMTk1IDkuNTI4NDMgNC45NDQzMkM5LjM0NDUgNS4wNjY2OSA5LjI5NDYgNS4zMTQ5OSA5LjQxNjk3IDUuNDk4OTJDMTAuMjIwNyA2LjcwNjkzIDEwLjIyMDcgOC4yOTMwMyA5LjQxNjk3IDkuNTAxMDRDOS4yOTQ2IDkuNjg0OTYgOS4zNDQ1IDkuOTMzMjYgOS41Mjg0MyAxMC4wNTU2QzkuNzEyMzUgMTAuMTc4IDkuOTYwNjYgMTAuMTI4MSAxMC4wODMgOS45NDQxOEMxMS4wNjUzIDguNDY3NzMgMTEuMDY1MyA2LjUzMjIyIDEwLjA4MyA1LjA1NTc3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgMUgxLjVIMTMuNUgxNFYxLjVWMTMuNVYxNEgxMy41SDEuNUgxVjEzLjVWMS41VjFaTTIgMlYxM0gxM1YySDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxEcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy43NTQzMiAxLjgxOTU0QzcuNTk3NDIgMS43MjY4MiA3LjQwMjUgMS43MjY4MiA3LjI0NTU5IDEuODE5NTRMMS43NDU1OSA1LjA2OTU0QzEuNTkzMzYgNS4xNTk0OSAxLjQ5OTk2IDUuMzIzMTcgMS40OTk5NiA1LjVDMS40OTk5NiA1LjY3NjgzIDEuNTkzMzYgNS44NDA1MSAxLjc0NTU5IDUuOTMwNDZMNy4yNDU1OSA5LjE4MDQ2QzcuNDAyNSA5LjI3MzE4IDcuNTk3NDIgOS4yNzMxOCA3Ljc1NDMyIDkuMTgwNDZMMTMuMjU0MyA1LjkzMDQ2QzEzLjQwNjYgNS44NDA1MSAxMy41IDUuNjc2ODMgMTMuNSA1LjVDMTMuNSA1LjMyMzE3IDEzLjQwNjYgNS4xNTk0OSAxMy4yNTQzIDUuMDY5NTRMNy43NTQzMiAxLjgxOTU0Wk03LjQ5OTk2IDguMTY5MjNMMi45ODI4IDUuNUw3LjQ5OTk2IDIuODMwNzdMMTIuMDE3MSA1LjVMNy40OTk5NiA4LjE2OTIzWk0yLjI1NDMyIDguMzE5NTRDMi4wMTY1OCA4LjE3OTA2IDEuNzA5OTggOC4yNTc5IDEuNTY5NDkgOC40OTU2NEMxLjQyOTAxIDguNzMzMzcgMS41MDc4NSA5LjAzOTk4IDEuNzQ1NTkgOS4xODA0Nkw3LjI0NTU5IDEyLjQzMDVDNy40MDI1IDEyLjUyMzIgNy41OTc0MiAxMi41MjMyIDcuNzU0MzIgMTIuNDMwNUwxMy4yNTQzIDkuMTgwNDZDMTMuNDkyMSA5LjAzOTk4IDEzLjU3MDkgOC43MzMzNyAxMy40MzA0IDguNDk1NjRDMTMuMjg5OSA4LjI1NzkgMTIuOTgzMyA4LjE3OTA2IDEyLjc0NTYgOC4zMTk1NEw3LjQ5OTk2IDExLjQxOTJMMi4yNTQzMiA4LjMxOTU0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuOTc5NDIgMS4yNTE3MUw2Ljk1ODUgMS4zMDE5OUw1LjU4NjYyIDQuNjAwMzlDNS41NDM0MiA0LjcwNDI2IDUuNDQ1NzMgNC43NzUyMyA1LjMzMzYgNC43ODQyMkwxLjc3MjcgNS4wNjk3TDEuNzE4NDEgNS4wNzQwNUwxLjM4Njg3IDUuMTAwNjNMMS4wODYwOCA1LjEyNDc1QzAuODIwMDg1IDUuMTQ2MDcgMC43MTIyMjggNS40NzgwMiAwLjkxNDg4OSA1LjY1MTYyTDEuMTQ0MDYgNS44NDc5M0wxLjM5NjY2IDYuMDY0MzFMMS40MzgwMiA2LjA5OTc0TDQuMTUxMDUgOC40MjM3NEM0LjIzNjQ4IDguNDk2OTIgNC4yNzM4IDguNjExNzYgNC4yNDc2OSA4LjcyMTE4TDMuNDE4ODIgMTIuMTk2TDMuNDA2MTggMTIuMjQ5TDMuMzI5MDEgMTIuNTcyNUwzLjI1ODk5IDEyLjg2NkMzLjE5NzA4IDEzLjEyNTYgMy40Nzk0NSAxMy4zMzA4IDMuNzA3MTggMTMuMTkxN0wzLjk2NDcgMTMuMDM0NEw0LjI0ODU0IDEyLjg2MUw0LjI5NTAyIDEyLjgzMjZMNy4zNDM2NSAxMC45NzA1QzcuNDM5NjUgMTAuOTExOSA3LjU2MDQgMTAuOTExOSA3LjY1NjQgMTAuOTcwNUwxMC43MDUgMTIuODMyNkwxMC43NTE1IDEyLjg2MUwxMS4wMzU0IDEzLjAzNDRMMTEuMjkyOSAxMy4xOTE3QzExLjUyMDYgMTMuMzMwOCAxMS44MDMgMTMuMTI1NiAxMS43NDExIDEyLjg2NkwxMS42NzEgMTIuNTcyNUwxMS41OTM5IDEyLjI0OUwxMS41ODEyIDEyLjE5NkwxMC43NTI0IDguNzIxMThDMTAuNzI2MyA4LjYxMTc2IDEwLjc2MzYgOC40OTY5MiAxMC44NDkgOC40MjM3NEwxMy41NjIgNi4wOTk3NEwxMy42MDM0IDYuMDY0MzFMMTMuODU2IDUuODQ3OTNMMTQuMDg1MiA1LjY1MTYyQzE0LjI4NzggNS40NzgwMiAxNC4xOCA1LjE0NjA3IDEzLjkxNCA1LjEyNDc1TDEzLjYxMzIgNS4xMDA2M0wxMy4yODE2IDUuMDc0MDVMMTMuMjI3NCA1LjA2OTdMOS42NjY0NSA0Ljc4NDIyQzkuNTU0MzIgNC43NzUyMyA5LjQ1NjYzIDQuNzA0MjYgOS40MTM0MyA0LjYwMDM5TDguMDQxNTUgMS4zMDE5OUw4LjAyMDY0IDEuMjUxNzFMNy44OTI5MSAwLjk0NDYwOUw3Ljc3NzAyIDAuNjY1OTkyQzcuNjc0NTQgMC40MTk2MDQgNy4zMjU1MSAwLjQxOTYwNCA3LjIyMzAzIDAuNjY1OTkyTDcuMTA3MTUgMC45NDQ2MDlMNi45Nzk0MiAxLjI1MTcxWk03LjUwMDAzIDIuNjAzOTdMNi41MDk5NCA0Ljk4NDQyQzYuMzIyNzMgNS40MzQ1MyA1Ljg5OTQ0IDUuNzQyMDcgNS40MTM1MSA1Ljc4MTAzTDIuODQzNjEgNS45ODcwNUw0LjgwMTYgNy42NjQyOEM1LjE3MTgzIDcuOTgxNDIgNS4zMzM1MSA4LjQ3OTAzIDUuMjIwNCA4Ljk1MzIxTDQuNjIyMjEgMTEuNDYxTDYuODIyNCAxMC4xMTcxQzcuMjM4NDIgOS44NjMwMiA3Ljc2MTY0IDkuODYzMDIgOC4xNzc2NiAxMC4xMTcxTDEwLjM3NzggMTEuNDYxTDkuNzc5NjUgOC45NTMyMUM5LjY2NjU0IDguNDc5MDMgOS44MjgyMiA3Ljk4MTQyIDEwLjE5ODQgNy42NjQyOEwxMi4xNTY0IDUuOTg3MDVMOS41ODY1NCA1Ljc4MTAzQzkuMTAwNjEgNS43NDIwNyA4LjY3NzMyIDUuNDM0NTMgOC40OTAxMSA0Ljk4NDQyTDcuNTAwMDMgMi42MDM5N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFRyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjIyMzAzIDAuNjY1OTkyQzcuMzI1NTEgMC40MTk2MDQgNy42NzQ1NCAwLjQxOTYwNCA3Ljc3NzAyIDAuNjY1OTkyTDkuNDEzNDMgNC42MDAzOUM5LjQ1NjYzIDQuNzA0MjYgOS41NTQzMiA0Ljc3NTIzIDkuNjY2NDUgNC43ODQyMkwxMy45MTQgNS4xMjQ3NUMxNC4xOCA1LjE0NjA3IDE0LjI4NzggNS40NzgwMiAxNC4wODUyIDUuNjUxNjJMMTAuODQ5IDguNDIzNzRDMTAuNzYzNiA4LjQ5NjkyIDEwLjcyNjMgOC42MTE3NiAxMC43NTI0IDguNzIxMThMMTEuNzQxMSAxMi44NjZDMTEuODAzIDEzLjEyNTYgMTEuNTIwNiAxMy4zMzA4IDExLjI5MjkgMTMuMTkxN0w3LjY1NjQgMTAuOTcwNUM3LjU2MDQgMTAuOTExOSA3LjQzOTY1IDEwLjkxMTkgNy4zNDM2NSAxMC45NzA1TDMuNzA3MTggMTMuMTkxN0MzLjQ3OTQ1IDEzLjMzMDggMy4xOTcwOCAxMy4xMjU2IDMuMjU4OTkgMTIuODY2TDQuMjQ3NjkgOC43MjExOEM0LjI3MzggOC42MTE3NiA0LjIzNjQ4IDguNDk2OTIgNC4xNTEwNSA4LjQyMzc0TDAuOTE0ODg5IDUuNjUxNjJDMC43MTIyMjggNS40NzgwMiAwLjgyMDA4NiA1LjE0NjA3IDEuMDg2MDggNS4xMjQ3NUw1LjMzMzYgNC43ODQyMkM1LjQ0NTczIDQuNzc1MjMgNS41NDM0MiA0LjcwNDI2IDUuNTg2NjIgNC42MDAzOUw3LjIyMzAzIDAuNjY1OTkyWlwiLGZpbGw6bn0pKX0sJHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuODQ5OTggNy40OTk5OEMxLjg0OTk4IDcuMjEzMjEgMS44NzEzNCA2LjkzMTQzIDEuOTEyNTYgNi42NTYxNUw5LjU2Mzc0IDIuMjM4NzVDOS44NjMxMSAyLjM1NjI3IDEwLjE1IDIuNDk4NjEgMTAuNDIxOSAyLjY2MzIyTDMuNzcwNjUgNi41MDMzMkMzLjczNjY5IDYuNTIxODMgMy43MDQ4MiA2LjU0NDkgMy42NzYwMiA2LjU3MjM4QzMuNTkxMSA2LjY1MzA4IDMuNTQyNDUgNi43NjI4NiAzLjUzNjgyIDYuODc2NThDMy41MzM1OSA2Ljk0MTggMy41NDQ1MSA3LjAwODMxIDMuNTcwODYgNy4wNzEzN0MzLjU4OTI3IDcuMTE1NyAzLjYxNDkgNy4xNTc0MiAzLjY0NzQ0IDcuMTk0NThDMy42NzMwNiA3LjIyMzk2IDMuNzAyIDcuMjQ5NDEgMy43MzMzNyA3LjI3MDY5TDcuMzI1MzMgOS44MzgxM0wzLjg3MjMyIDExLjgzMTdDMi42MzYwNCAxMC43OTUzIDEuODQ5OTggOS4yMzk0NCAxLjg0OTk4IDcuNDk5OThaTTguMzY4NDMgMTAuMjc1MUM4LjM3NjgyIDEwLjI3MDYgOC4zODUwOSAxMC4yNjU5IDguMzkzMjIgMTAuMjYwOEw5Ljg0MDkxIDkuNDI0OTlDOS44NDcwNiA5LjQyMTYzIDkuODUzMTQgOS40MTgxMiA5Ljg1OTE1IDkuNDE0NDZMMTEuMzEwMSA4LjU3Njc3QzExLjM2NTUgOC41NDY0OSAxMS40MTU0IDguNTA0IDExLjQ1NTQgOC40NDk5NUMxMS42MDM0IDguMjUwMzEgMTEuNTYxNiA3Ljk2ODQ4IDExLjM2MiA3LjgyMDQ2TDcuODI3NzkgNS4yMDAxN0wxMS4yMTYxIDMuMjQzOTNDMTIuNDAxMyA0LjI3OTYzIDEzLjE1IDUuODAyMzcgMTMuMTUgNy40OTk5OEMxMy4xNSA3LjgzNTQ2IDEzLjEyMDcgOC4xNjQxMSAxMy4wNjQ3IDguNDgzNTNMNS41Njg3NSAxMi44MTEzQzUuMjYxMzggMTIuNjk5NSA0Ljk2NjQ2IDEyLjU2MTggNC42ODY2MiAxMi40MDA4TDguMzY4NDMgMTAuMjc1MVpNOC4xODE0OSA5LjM0MzgzTDQuODE2NTkgNi45Mzg2OEw1LjUwOTE4IDYuNTM4ODFMOC44MDYwNCA4Ljk4MzI0TDguMTgxNDkgOS4zNDM4M1pNNi4zNTg3NSA2LjA0ODMyTDYuOTc4MjIgNS42OTA2N0wxMC4yNzUxIDguMTM1MDZMOS42NTU2IDguNDkyNzVMNi4zNTg3NSA2LjA0ODMyWk04LjMzMTggMS45MTA3OEwyLjI0MjYzIDUuNDI2MzZDMy4wNjk0MSAzLjMzMTg4IDUuMTExNjQgMS44NDk5OCA3LjQ5OTk4IDEuODQ5OThDNy43ODI1OCAxLjg0OTk4IDguMDYwMzMgMS44NzA3MiA4LjMzMTggMS45MTA3OFpNNi44NDY4NCAxMy4xMTI2QzcuMDYxMTQgMTMuMTM3MyA3LjI3OTA4IDEzLjE1IDcuNDk5OTggMTMuMTVDOS44MjQ2IDEzLjE1IDExLjgyMTMgMTEuNzQ2MSAxMi42ODg2IDkuNzM5OUw2Ljg0Njg0IDEzLjExMjZaTTcuNDk5OTggMC44NDk5NzZDMy44MjcyOCAwLjg0OTk3NiAwLjg0OTk3NiAzLjgyNzI4IDAuODQ5OTc2IDcuNDk5OThDMC44NDk5NzYgMTEuMTcyNyAzLjgyNzI4IDE0LjE1IDcuNDk5OTggMTQuMTVDMTEuMTcyNyAxNC4xNSAxNC4xNSAxMS4xNzI3IDE0LjE1IDcuNDk5OThDMTQuMTUgMy44MjcyOCAxMS4xNzI3IDAuODQ5OTc2IDcuNDk5OTggMC44NDk5NzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxGcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiAzQzIgMi40NDc3MiAyLjQ0NzcyIDIgMyAySDEyQzEyLjU1MjMgMiAxMyAyLjQ0NzcyIDEzIDNWMTJDMTMgMTIuNTUyMyAxMi41NTIzIDEzIDEyIDEzSDNDMi40NDc3MiAxMyAyIDEyLjU1MjMgMiAxMlYzWk0xMiAzSDNWMTJIMTJWM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFdyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjQ5OTk4IDAuNUM1LjQ5OTk4IDAuMjIzODU4IDUuNzIzODMgMCA1Ljk5OTk4IDBINy40OTk5OEg4Ljk5OTk4QzkuMjc2MTIgMCA5LjQ5OTk4IDAuMjIzODU4IDkuNDk5OTggMC41QzkuNDk5OTggMC43NzYxNDIgOS4yNzYxMiAxIDguOTk5OTggMUg3Ljk5OTk4VjIuMTE5MjJDOS4wOTgzMiAyLjIwNDA5IDEwLjExOSAyLjU2NjIyIDEwLjk5MiAzLjEzNTcyQzExLjAxMTYgMy4xMDg1MSAxMS4wMzM2IDMuMDgyNTIgMTEuMDU4IDMuMDU4MDZMMTEuODU4IDIuMjU4MDZDMTIuMTAyMSAyLjAxMzk4IDEyLjQ5NzggMi4wMTM5OCAxMi43NDE5IDIuMjU4MDZDMTIuOTg2IDIuNTAyMTQgMTIuOTg2IDIuODk3ODYgMTIuNzQxOSAzLjE0MTk0TDExLjk2NyAzLjkxNjgyQzEzLjE1OTUgNS4wNzkyNSAxMy45IDYuNzAzMTQgMTMuOSA4LjQ5OTk4QzEzLjkgMTIuMDM0NiAxMS4wMzQ2IDE0LjkgNy40OTk5OCAxNC45QzMuOTY1MzUgMTQuOSAxLjA5OTk4IDEyLjAzNDYgMS4wOTk5OCA4LjQ5OTk4QzEuMDk5OTggNS4xMzM2MiAzLjY5OTA0IDIuMzc0MyA2Ljk5OTk4IDIuMTE5MjJWMUg1Ljk5OTk4QzUuNzIzODMgMSA1LjQ5OTk4IDAuNzc2MTQyIDUuNDk5OTggMC41Wk0yLjA5OTk4IDguNDk5OThDMi4wOTk5OCA1LjUxNzY0IDQuNTE3NjQgMy4wOTk5OCA3LjQ5OTk4IDMuMDk5OThDMTAuNDgyMyAzLjA5OTk4IDEyLjkgNS41MTc2NCAxMi45IDguNDk5OThDMTIuOSAxMS40ODIzIDEwLjQ4MjMgMTMuOSA3LjQ5OTk4IDEzLjlDNC41MTc2NCAxMy45IDIuMDk5OTggMTEuNDgyMyAyLjA5OTk4IDguNDk5OThaTTcuOTk5OTggNC41QzcuOTk5OTggNC4yMjM4NiA3Ljc3NjEyIDQgNy40OTk5OCA0QzcuMjIzODMgNCA2Ljk5OTk4IDQuMjIzODYgNi45OTk5OCA0LjVWOS41QzYuOTk5OTggOS43NzYxNCA3LjIyMzgzIDEwIDcuNDk5OTggMTBDNy43NzYxMiAxMCA3Ljk5OTk4IDkuNzc2MTQgNy45OTk5OCA5LjVWNC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0LjQ5OTkgMC45OTk5OTJDMTQuMjIzNyAwLjk5OTk5MiAxMy45OTk5IDEuMjIzODUgMTMuOTk5OSAxLjQ5OTk5TDEzLjk5OTkgNS45OTk5NUwwLjk5OTk5MiA1Ljk5OTk1TDAuOTk5OTkyIDEuNDk5OTlDMC45OTk5OTIgMS4yMjM4NSAwLjc3NjEzNiAwLjk5OTk5MiAwLjQ5OTk5NiAwLjk5OTk5MkMwLjIyMzg1NiAwLjk5OTk5MiAtOS43ODUwOWUtMDkgMS4yMjM4NSAtMi4xODU1NmUtMDggMS40OTk5OUw0LjA3Mjc5ZS0wNyAxMy40OTk5QzMuOTUyMDhlLTA3IDEzLjc3NiAwLjIyMzg1NSAxMy45OTk5IDAuNDk5OTk2IDEzLjk5OTlDMC43NzYxMzYgMTMuOTk5OSAwLjk5OTk5MiAxMy43NzYgMC45OTk5OTIgMTMuNDk5OUwwLjk5OTk5MiA4Ljk5OTkyTDEzLjk5OTkgOC45OTk5MkwxMy45OTk5IDEzLjQ5OTlDMTMuOTk5OSAxMy43NzYgMTQuMjIzNyAxMy45OTk5IDE0LjQ5OTkgMTMuOTk5OUMxNC43NzYgMTMuOTk5OSAxNC45OTk5IDEzLjc3NiAxNC45OTk5IDEzLjQ5OTlMMTQuOTk5OSAxLjQ5OTk5QzE0Ljk5OTkgMS4yMjM4NSAxNC43NzYgMC45OTk5OTIgMTQuNDk5OSAwLjk5OTk5MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHpyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjk5OTg3OCAwLjVDMC45OTk4NzggMC4yMjM4NTggMS4yMjM3NCAwIDEuNDk5ODggMEgxMy40OTk5QzEzLjc3NiAwIDEzLjk5OTkgMC4yMjM4NTggMTMuOTk5OSAwLjVDMTMuOTk5OSAwLjc3NjE0MiAxMy43NzYgMSAxMy40OTk5IDFINkgxLjQ5OTg4QzEuMjIzNzQgMSAwLjk5OTg3OCAwLjc3NjE0MiAwLjk5OTg3OCAwLjVaTTkgMTRWMUw2IDFWMTRIMS40OTk4OEMxLjIyMzc0IDE0IDAuOTk5ODc4IDE0LjIyMzkgMC45OTk4NzggMTQuNUMwLjk5OTg3OCAxNC43NzYxIDEuMjIzNzQgMTUgMS40OTk4OCAxNUgxMy40OTk5QzEzLjc3NiAxNSAxMy45OTk5IDE0Ljc3NjEgMTMuOTk5OSAxNC41QzEzLjk5OTkgMTQuMjIzOSAxMy43NzYgMTQgMTMuNDk5OSAxNEg5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuMDAwMDMgMy4yNUM1LjAwMDAzIDIuOTczODYgNC43NzYxNyAyLjc1IDQuNTAwMDMgMi43NUM0LjIyMzg5IDIuNzUgNC4wMDAwMyAyLjk3Mzg2IDQuMDAwMDMgMy4yNVY3LjEwMDAzSDIuNDk5OThDMi4yNzkwNiA3LjEwMDAzIDIuMDk5OTggNy4yNzkxMiAyLjA5OTk4IDcuNTAwMDNDMi4wOTk5OCA3LjcyMDk0IDIuMjc5MDYgNy45MDAwMyAyLjQ5OTk4IDcuOTAwMDNINC4wMDAwM1Y4LjU1QzQuMDAwMDMgMTAuNDgzIDUuNTY3MDMgMTIuMDUgNy41MDAwMyAxMi4wNUM5LjQzMzAzIDEyLjA1IDExIDEwLjQ4MyAxMSA4LjU1VjcuOTAwMDNIMTIuNUMxMi43MjA5IDcuOTAwMDMgMTIuOSA3LjcyMDk0IDEyLjkgNy41MDAwM0MxMi45IDcuMjc5MTIgMTIuNzIwOSA3LjEwMDAzIDEyLjUgNy4xMDAwM0gxMVYzLjI1QzExIDIuOTczODYgMTAuNzc2MiAyLjc1IDEwLjUgMi43NUMxMC4yMjM5IDIuNzUgMTAgMi45NzM4NiAxMCAzLjI1VjcuMTAwMDNINS4wMDAwM1YzLjI1Wk01LjAwMDAzIDcuOTAwMDNWOC41NUM1LjAwMDAzIDkuOTMwNzEgNi4xMTkzMiAxMS4wNSA3LjUwMDAzIDExLjA1QzguODgwNzQgMTEuMDUgMTAgOS45MzA3MSAxMCA4LjU1VjcuOTAwMDNINS4wMDAwM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEdyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMEM3Ljc3NjE0IDAgOCAwLjIyMzg1OCA4IDAuNVYyLjVDOCAyLjc3NjE0IDcuNzc2MTQgMyA3LjUgM0M3LjIyMzg2IDMgNyAyLjc3NjE0IDcgMi41VjAuNUM3IDAuMjIzODU4IDcuMjIzODYgMCA3LjUgMFpNMi4xOTY3IDIuMTk2N0MyLjM5MTk2IDIuMDAxNDQgMi43MDg1NCAyLjAwMTQ0IDIuOTAzODEgMi4xOTY3TDQuMzE4MDIgMy42MTA5MUM0LjUxMzI4IDMuODA2MTcgNC41MTMyOCA0LjEyMjc2IDQuMzE4MDIgNC4zMTgwMkM0LjEyMjc2IDQuNTEzMjggMy44MDYxNyA0LjUxMzI4IDMuNjEwOTEgNC4zMTgwMkwyLjE5NjcgMi45MDM4MUMyLjAwMTQ0IDIuNzA4NTQgMi4wMDE0NCAyLjM5MTk2IDIuMTk2NyAyLjE5NjdaTTAuNSA3QzAuMjIzODU4IDcgMCA3LjIyMzg2IDAgNy41QzAgNy43NzYxNCAwLjIyMzg1OCA4IDAuNSA4SDIuNUMyLjc3NjE0IDggMyA3Ljc3NjE0IDMgNy41QzMgNy4yMjM4NiAyLjc3NjE0IDcgMi41IDdIMC41Wk0yLjE5NjcgMTIuODAzM0MyLjAwMTQ0IDEyLjYwOCAyLjAwMTQ0IDEyLjI5MTUgMi4xOTY3IDEyLjA5NjJMMy42MTA5MSAxMC42ODJDMy44MDYxNyAxMC40ODY3IDQuMTIyNzYgMTAuNDg2NyA0LjMxODAyIDEwLjY4MkM0LjUxMzI4IDEwLjg3NzIgNC41MTMyOCAxMS4xOTM4IDQuMzE4MDIgMTEuMzg5MUwyLjkwMzgxIDEyLjgwMzNDMi43MDg1NCAxMi45OTg2IDIuMzkxOTYgMTIuOTk4NiAyLjE5NjcgMTIuODAzM1pNMTIuNSA3QzEyLjIyMzkgNyAxMiA3LjIyMzg2IDEyIDcuNUMxMiA3Ljc3NjE0IDEyLjIyMzkgOCAxMi41IDhIMTQuNUMxNC43NzYxIDggMTUgNy43NzYxNCAxNSA3LjVDMTUgNy4yMjM4NiAxNC43NzYxIDcgMTQuNSA3SDEyLjVaTTEwLjY4MiA0LjMxODAyQzEwLjQ4NjcgNC4xMjI3NiAxMC40ODY3IDMuODA2MTcgMTAuNjgyIDMuNjEwOTFMMTIuMDk2MiAyLjE5NjdDMTIuMjkxNSAyLjAwMTQ0IDEyLjYwOCAyLjAwMTQ0IDEyLjgwMzMgMi4xOTY3QzEyLjk5ODYgMi4zOTE5NiAxMi45OTg2IDIuNzA4NTQgMTIuODAzMyAyLjkwMzgxTDExLjM4OTEgNC4zMTgwMkMxMS4xOTM4IDQuNTEzMjggMTAuODc3MiA0LjUxMzI4IDEwLjY4MiA0LjMxODAyWk04IDEyLjVDOCAxMi4yMjM5IDcuNzc2MTQgMTIgNy41IDEyQzcuMjIzODYgMTIgNyAxMi4yMjM5IDcgMTIuNVYxNC41QzcgMTQuNzc2MSA3LjIyMzg2IDE1IDcuNSAxNUM3Ljc3NjE0IDE1IDggMTQuNzc2MSA4IDE0LjVWMTIuNVpNMTAuNjgyIDEwLjY4MkMxMC44NzcyIDEwLjQ4NjcgMTEuMTkzOCAxMC40ODY3IDExLjM4OTEgMTAuNjgyTDEyLjgwMzMgMTIuMDk2MkMxMi45OTg2IDEyLjI5MTUgMTIuOTk4NiAxMi42MDggMTIuODAzMyAxMi44MDMzQzEyLjYwOCAxMi45OTg2IDEyLjI5MTUgMTIuOTk4NiAxMi4wOTYyIDEyLjgwMzNMMTAuNjgyIDExLjM4OTFDMTAuNDg2NyAxMS4xOTM4IDEwLjQ4NjcgMTAuODc3MiAxMC42ODIgMTAuNjgyWk01LjUgNy41QzUuNSA2LjM5NTQzIDYuMzk1NDMgNS41IDcuNSA1LjVDOC42MDQ1NyA1LjUgOS41IDYuMzk1NDMgOS41IDcuNUM5LjUgOC42MDQ1NyA4LjYwNDU3IDkuNSA3LjUgOS41QzYuMzk1NDMgOS41IDUuNSA4LjYwNDU3IDUuNSA3LjVaTTcuNSA0LjVDNS44NDMxNSA0LjUgNC41IDUuODQzMTUgNC41IDcuNUM0LjUgOS4xNTY4NSA1Ljg0MzE1IDEwLjUgNy41IDEwLjVDOS4xNTY4NSAxMC41IDEwLjUgOS4xNTY4NSAxMC41IDcuNUMxMC41IDUuODQzMTUgOS4xNTY4NSA0LjUgNy41IDQuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHFyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMC41IDRDOC41NjcgNCA3IDUuNTY3IDcgNy41QzcgOS40MzMgOC41NjcgMTEgMTAuNSAxMUMxMi40MzMgMTEgMTQgOS40MzMgMTQgNy41QzE0IDUuNTY3IDEyLjQzMyA0IDEwLjUgNFpNNy42NzEzMyAxMUM2LjY1MTgzIDEwLjE3NSA2IDguOTEzNjMgNiA3LjVDNiA2LjA4NjM3IDYuNjUxODMgNC44MjQ5OCA3LjY3MTMzIDRINC41QzIuNTY3IDQgMSA1LjU2NyAxIDcuNUMxIDkuNDMzIDIuNTY3IDExIDQuNSAxMUg3LjY3MTMzWk0wIDcuNUMwIDUuMDE0NzIgMi4wMTQ3MiAzIDQuNSAzSDEwLjVDMTIuOTg1MyAzIDE1IDUuMDE0NzIgMTUgNy41QzE1IDkuOTg1MjggMTIuOTg1MyAxMiAxMC41IDEySDQuNUMyLjAxNDcyIDEyIDAgOS45ODUyOCAwIDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFlyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjkwMzIxIDcuMjk2NzdDMS45MDMyMSAxMC4zNDEgNC4xMTA0MSAxMi40MTQ3IDYuNTg4OTMgMTIuODQzOUM2Ljg3MjU1IDEyLjg5MyA3LjA2MjY2IDEzLjE2MjcgNy4wMTM1NSAxMy40NDY0QzYuOTY0NDQgMTMuNzMgNi42OTQ3MSAxMy45MjAxIDYuNDExMDkgMTMuODcxQzMuNDk5NDIgMTMuMzY2OCAwLjg2MDg0IDEwLjkxMjcgMC44NjA4NCA3LjI5Njc3QzAuODYwODM5IDUuNzYwMDkgMS41NTk5NiA0LjU1MjQ1IDIuMzc2MzkgMy42MzM3N0MyLjk2MTI0IDIuOTc1NjggMy42MzAzNCAyLjQ0MTM1IDQuMTY4NDYgMi4wMzIwMkwyLjUzMjA1IDIuMDMyMDJDMi4yNTU5MSAyLjAzMjAyIDIuMDMyMDUgMS44MDgxNiAyLjAzMjA1IDEuNTMyMDJDMi4wMzIwNSAxLjI1NTg4IDIuMjU1OTEgMS4wMzIwMiAyLjUzMjA1IDEuMDMyMDJMNS41MzIwNSAxLjAzMjAyQzUuODA4MTkgMS4wMzIwMiA2LjAzMjA1IDEuMjU1ODggNi4wMzIwNSAxLjUzMjAyTDYuMDMyMDUgNC41MzIwMkM2LjAzMjA1IDQuODA4MTYgNS44MDgxOSA1LjAzMjAyIDUuNTMyMDUgNS4wMzIwMkM1LjI1NTkxIDUuMDMyMDIgNS4wMzIwNSA0LjgwODE2IDUuMDMyMDUgNC41MzIwMkw1LjAzMjA1IDIuNjg2NDVMNS4wMzA1NCAyLjY4NzU5TDUuMDMwNDUgMi42ODc2Nkw1LjAzMDQ0IDIuNjg3NjdMNS4wMzA0MyAyLjY4NzY3QzQuNDU4OTYgMy4xMTg2OCAzLjc2MDU5IDMuNjQ1MzggMy4xNTU1NCA0LjMyNjJDMi40NDEwMiA1LjEzMDIxIDEuOTAzMjEgNi4xMDE1NCAxLjkwMzIxIDcuMjk2NzdaTTEzLjAxMDkgNy43MDMyMUMxMy4wMTA5IDQuNjkxMTUgMTAuODUwNSAyLjYyOTYgOC40MDM4NCAyLjE3MDI5QzguMTIwOTMgMi4xMTcxOCA3LjkzNDY1IDEuODQ0NzkgNy45ODc3NiAxLjU2MTg4QzguMDQwODcgMS4yNzg5OCA4LjMxMzI2IDEuMDkyNyA4LjU5NjE2IDEuMTQ1ODFDMTEuNDcwNCAxLjY4NTQxIDE0LjA1MzIgNC4xMjYwNSAxNC4wNTMyIDcuNzAzMjFDMTQuMDUzMiA5LjIzOTg4IDEzLjM1NDEgMTAuNDQ3NSAxMi41Mzc3IDExLjM2NjJDMTEuOTUyOCAxMi4wMjQzIDExLjI4MzcgMTIuNTU4NiAxMC43NDU2IDEyLjk2OEwxMi4zODIxIDEyLjk2OEMxMi42NTgyIDEyLjk2OCAxMi44ODIxIDEzLjE5MTggMTIuODgyMSAxMy40NjhDMTIuODgyMSAxMy43NDQxIDEyLjY1ODIgMTMuOTY4IDEyLjM4MjEgMTMuOTY4TDkuMzgyMDUgMTMuOTY4QzkuMTA1OTEgMTMuOTY4IDguODgyMDUgMTMuNzQ0MSA4Ljg4MjA1IDEzLjQ2OEw4Ljg4MjA1IDEwLjQ2OEM4Ljg4MjA1IDEwLjE5MTggOS4xMDU5MSA5Ljk2Nzk2IDkuMzgyMDUgOS45Njc5NkM5LjY1ODE5IDkuOTY3OTYgOS44ODIwNSAxMC4xOTE4IDkuODgyMDUgMTAuNDY4TDkuODgyMDUgMTIuMzEzNUw5Ljg4MzYyIDEyLjMxMjNDMTAuNDU1MSAxMS44ODEzIDExLjE1MzUgMTEuMzU0NiAxMS43NTg1IDEwLjY3MzhDMTIuNDczMSA5Ljg2OTc2IDEzLjAxMDkgOC44OTg0NCAxMy4wMTA5IDcuNzAzMjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxLcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOCAySDEyLjVDMTIuNzc2MSAyIDEzIDIuMjIzODYgMTMgMi41VjVIOFYyWk03IDVWMkgyLjVDMi4yMjM4NiAyIDIgMi4yMjM4NiAyIDIuNVY1SDdaTTIgNlY5SDdWNkgyWk04IDZIMTNWOUg4VjZaTTggMTBIMTNWMTIuNUMxMyAxMi43NzYxIDEyLjc3NjEgMTMgMTIuNSAxM0g4VjEwWk0yIDEyLjVWMTBIN1YxM0gyLjVDMi4yMjM4NiAxMyAyIDEyLjc3NjEgMiAxMi41Wk0xIDIuNUMxIDEuNjcxNTcgMS42NzE1NyAxIDIuNSAxSDEyLjVDMTMuMzI4NCAxIDE0IDEuNjcxNTcgMTQgMi41VjEyLjVDMTQgMTMuMzI4NCAxMy4zMjg0IDE0IDEyLjUgMTRIMi41QzEuNjcxNTcgMTQgMSAxMy4zMjg0IDEgMTIuNVYyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxYcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC45MDAwMjQgNy41MDAwMkMwLjkwMDAyNCAzLjg1NDk1IDMuODU0OTUgMC45MDAwMjQgNy41MDAwMiAwLjkwMDAyNEMxMS4xNDUxIDAuOTAwMDI0IDE0LjEgMy44NTQ5NSAxNC4xIDcuNTAwMDJDMTQuMSAxMS4xNDUxIDExLjE0NTEgMTQuMSA3LjUwMDAyIDE0LjFDMy44NTQ5NSAxNC4xIDAuOTAwMDI0IDExLjE0NTEgMC45MDAwMjQgNy41MDAwMlpNNy41MDAwMiAxLjgwMDAyQzQuMzUyMDEgMS44MDAwMiAxLjgwMDAyIDQuMzUyMDEgMS44MDAwMiA3LjUwMDAyQzEuODAwMDIgMTAuNjQ4IDQuMzUyMDEgMTMuMiA3LjUwMDAyIDEzLjJDMTAuNjQ4IDEzLjIgMTMuMiAxMC42NDggMTMuMiA3LjUwMDAyQzEzLjIgNC4zNTIwMSAxMC42NDggMS44MDAwMiA3LjUwMDAyIDEuODAwMDJaTTMuMDc1MDQgNy41MDAwMkMzLjA3NTA0IDUuMDU2MTcgNS4wNTYxOCAzLjA3NTAyIDcuNTAwMDQgMy4wNzUwMkM5Ljk0Mzg4IDMuMDc1MDIgMTEuOTI1IDUuMDU2MTcgMTEuOTI1IDcuNTAwMDJDMTEuOTI1IDkuOTQzODYgOS45NDM4OCAxMS45MjUgNy41MDAwNCAxMS45MjVDNS4wNTYxOCAxMS45MjUgMy4wNzUwNCA5Ljk0Mzg2IDMuMDc1MDQgNy41MDAwMlpNNy41MDAwNCAzLjkyNTAyQzUuNTI1NjIgMy45MjUwMiAzLjkyNTA0IDUuNTI1NjEgMy45MjUwNCA3LjUwMDAyQzMuOTI1MDQgOS40NzQ0MiA1LjUyNTYzIDExLjA3NSA3LjUwMDA0IDExLjA3NUM5LjQ3NDQ0IDExLjA3NSAxMS4wNzUgOS40NzQ0MiAxMS4wNzUgNy41MDAwMkMxMS4wNzUgNS41MjU2MSA5LjQ3NDQ0IDMuOTI1MDIgNy41MDAwNCAzLjkyNTAyWk03LjUwMDA0IDUuMjUwMDJDNi4yNTc0IDUuMjUwMDIgNS4yNTAwNCA2LjI1NzM5IDUuMjUwMDQgNy41MDAwMkM1LjI1MDA0IDguNzQyNjYgNi4yNTc0IDkuNzUwMDIgNy41MDAwNCA5Ljc1MDAyQzguNzQyNjcgOS43NTAwMiA5Ljc1MDA0IDguNzQyNjYgOS43NTAwNCA3LjUwMDAyQzkuNzUwMDQgNi4yNTczOCA4Ljc0MjY3IDUuMjUwMDIgNy41MDAwNCA1LjI1MDAyWk02LjA1MDA0IDcuNTAwMDJDNi4wNTAwNCA2LjY5OTIxIDYuNjk5MjMgNi4wNTAwMiA3LjUwMDA0IDYuMDUwMDJDOC4zMDA4NCA2LjA1MDAyIDguOTUwMDQgNi42OTkyMSA4Ljk1MDA0IDcuNTAwMDJDOC45NTAwNCA4LjMwMDgzIDguMzAwODQgOC45NTAwMiA3LjUwMDA0IDguOTUwMDJDNi42OTkyMyA4Ljk1MDAyIDYuMDUwMDQgOC4zMDA4MyA2LjA1MDA0IDcuNTAwMDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxRcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy45NDk5MyAyLjk1MDAyTDMuOTQ5OTMgNC40OTk5OEMzLjk0OTkzIDQuNzQ4NTEgMy43NDg0NSA0Ljk0OTk4IDMuNDk5OTMgNC45NDk5OEMzLjI1MTQgNC45NDk5OCAzLjA0OTkzIDQuNzQ4NTEgMy4wNDk5MyA0LjQ5OTk4VjIuNTAwMDRDMy4wNDk5MyAyLjQ1MjQ2IDMuMDU3MzEgMi40MDY2MSAzLjA3MDk5IDIuMzYzNTdDMy4xMjg3OCAyLjE4MTc1IDMuMjk4OTcgMi4wNTAwMiAzLjQ5OTkzIDIuMDUwMDJIMTEuNDk5OUMxMS42NTUzIDIuMDUwMDIgMTEuNzkyMiAyLjEyODcyIDExLjg3MzEgMi4yNDg0MkMxMS45MjE2IDIuMzIwMjQgMTEuOTQ5OSAyLjQwNjgyIDExLjk0OTkgMi41MDAwMkwxMS45NDk5IDIuNTAwMDRWNC40OTk5OEMxMS45NDk5IDQuNzQ4NTEgMTEuNzQ4NSA0Ljk0OTk4IDExLjQ5OTkgNC45NDk5OEMxMS4yNTE0IDQuOTQ5OTggMTEuMDQ5OSA0Ljc0ODUxIDExLjA0OTkgNC40OTk5OFYyLjk1MDAySDguMDQ5OTNWMTIuMDVIOS4yNTQyOEM5LjUwMjgxIDEyLjA1IDkuNzA0MjggMTIuMjUxNSA5LjcwNDI4IDEyLjVDOS43MDQyOCAxMi43NDg2IDkuNTAyODEgMTIuOTUgOS4yNTQyOCAxMi45NUg1Ljc1NDI4QzUuNTA1NzUgMTIuOTUgNS4zMDQyOCAxMi43NDg2IDUuMzA0MjggMTIuNUM1LjMwNDI4IDEyLjI1MTUgNS41MDU3NSAxMi4wNSA1Ljc1NDI4IDEyLjA1SDYuOTQ5OTNWMi45NTAwMkgzLjk0OTkzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgNC41QzIgNC4yMjM4NiAyLjIyMzg2IDQgMi41IDRIMTIuNUMxMi43NzYxIDQgMTMgNC4yMjM4NiAxMyA0LjVDMTMgNC43NzYxNCAxMi43NzYxIDUgMTIuNSA1SDIuNUMyLjIyMzg2IDUgMiA0Ljc3NjE0IDIgNC41Wk00IDcuNUM0IDcuMjIzODYgNC4yMjM4NiA3IDQuNSA3SDEwLjVDMTAuNzc2MSA3IDExIDcuMjIzODYgMTEgNy41QzExIDcuNzc2MTQgMTAuNzc2MSA4IDEwLjUgOEg0LjVDNC4yMjM4NiA4IDQgNy43NzYxNCA0IDcuNVpNMyAxMC41QzMgMTAuMjIzOSAzLjIyMzg2IDEwIDMuNSAxMEgxMS41QzExLjc3NjEgMTAgMTIgMTAuMjIzOSAxMiAxMC41QzEyIDEwLjc3NjEgMTEuNzc2MSAxMSAxMS41IDExSDMuNUMzLjIyMzg2IDExIDMgMTAuNzc2MSAzIDEwLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxlbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi41IDRDMi4yMjM4NiA0IDIgNC4yMjM4NiAyIDQuNUMyIDQuNzc2MTQgMi4yMjM4NiA1IDIuNSA1SDEyLjVDMTIuNzc2MSA1IDEzIDQuNzc2MTQgMTMgNC41QzEzIDQuMjIzODYgMTIuNzc2MSA0IDEyLjUgNEgyLjVaTTIgNy41QzIgNy4yMjM4NiAyLjIyMzg2IDcgMi41IDdIMTIuNUMxMi43NzYxIDcgMTMgNy4yMjM4NiAxMyA3LjVDMTMgNy43NzYxNCAxMi43NzYxIDggMTIuNSA4SDIuNUMyLjIyMzg2IDggMiA3Ljc3NjE0IDIgNy41Wk0yIDEwLjVDMiAxMC4yMjM5IDIuMjIzODYgMTAgMi41IDEwSDEyLjVDMTIuNzc2MSAxMCAxMyAxMC4yMjM5IDEzIDEwLjVDMTMgMTAuNzc2MSAxMi43NzYxIDExIDEyLjUgMTFIMi41QzIuMjIzODYgMTEgMiAxMC43NzYxIDIgMTAuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHRvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDQuNUMyIDQuMjIzODYgMi4yMjM4NiA0IDIuNSA0SDEyLjVDMTIuNzc2MSA0IDEzIDQuMjIzODYgMTMgNC41QzEzIDQuNzc2MTQgMTIuNzc2MSA1IDEyLjUgNUgyLjVDMi4yMjM4NiA1IDIgNC43NzYxNCAyIDQuNVpNMiA3LjVDMiA3LjIyMzg2IDIuMjIzODYgNyAyLjUgN0g3LjVDNy43NzYxNCA3IDggNy4yMjM4NiA4IDcuNUM4IDcuNzc2MTQgNy43NzYxNCA4IDcuNSA4SDIuNUMyLjIyMzg2IDggMiA3Ljc3NjE0IDIgNy41Wk0yIDEwLjVDMiAxMC4yMjM5IDIuMjIzODYgMTAgMi41IDEwSDEwLjVDMTAuNzc2MSAxMCAxMSAxMC4yMjM5IDExIDEwLjVDMTEgMTAuNzc2MSAxMC43NzYxIDExIDEwLjUgMTFIMi41QzIuMjIzODYgMTEgMiAxMC43NzYxIDIgMTAuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG5vPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDQuNUMyIDQuMjIzODYgMi4yMjM4NiA0IDIuNSA0SDEyLjVDMTIuNzc2MSA0IDEzIDQuMjIzODYgMTMgNC41QzEzIDQuNzc2MTQgMTIuNzc2MSA1IDEyLjUgNUgyLjVDMi4yMjM4NiA1IDIgNC43NzYxNCAyIDQuNVpNNyA3LjVDNyA3LjIyMzg2IDcuMjIzODYgNyA3LjUgN0gxMi41QzEyLjc3NjEgNyAxMyA3LjIyMzg2IDEzIDcuNUMxMyA3Ljc3NjE0IDEyLjc3NjEgOCAxMi41IDhINy41QzcuMjIzODYgOCA3IDcuNzc2MTQgNyA3LjVaTTQgMTAuNUM0IDEwLjIyMzkgNC4yMjM4NiAxMCA0LjUgMTBIMTIuNUMxMi43NzYxIDEwIDEzIDEwLjIyMzkgMTMgMTAuNUMxMyAxMC43NzYxIDEyLjc3NjEgMTEgMTIuNSAxMUg0LjVDNC4yMjM4NiAxMSA0IDEwLjc3NjEgNCAxMC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scm89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjM1MzYgMi4zNTM1NUMxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAxLjg0MTcxIDEzLjM1MzYgMS42NDY0NUMxMy4xNTgzIDEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEyLjY0NjQgMS42NDY0NUwxMS45MjkxIDIuMzYzODNDMTEuOTE1OSAyLjMyMjQ2IDExLjg5NyAyLjI4MzY4IDExLjg3MzIgMi4yNDg0NUMxMS43OTIzIDIuMTI4NzUgMTEuNjU1NCAyLjA1MDA1IDExLjUwMDEgMi4wNTAwNUgzLjUwMDA1QzMuMjk5MDkgMi4wNTAwNSAzLjEyODkgMi4xODE3OCAzLjA3MTExIDIuMzYzNkMzLjA1NzQzIDIuNDA2NjUgMy4wNTAwNSAyLjQ1MjQ5IDMuMDUwMDUgMi41MDAwN1Y0LjUwMDAxQzMuMDUwMDUgNC43NDg1NCAzLjI1MTUyIDQuOTUwMDEgMy41MDAwNSA0Ljk1MDAxQzMuNzQ4NTggNC45NTAwMSAzLjk1MDA1IDQuNzQ4NTQgMy45NTAwNSA0LjUwMDAxVjIuOTUwMDVINi45NTAwNlY3LjM0Mjg0TDEuNjQ2NDUgMTIuNjQ2NEMxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMy4xNTgzIDEuNjQ2NDUgMTMuMzUzNkMxLjg0MTcxIDEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDIuMzUzNTUgMTMuMzUzNkw2Ljk1MDA2IDguNzU3MDVWMTIuMDUwMUg1Ljc1NDRDNS41MDU4NyAxMi4wNTAxIDUuMzA0NCAxMi4yNTE1IDUuMzA0NCAxMi41MDAxQzUuMzA0NCAxMi43NDg2IDUuNTA1ODcgMTIuOTUwMSA1Ljc1NDQgMTIuOTUwMUg5LjI1NDRDOS41MDI5MyAxMi45NTAxIDkuNzA0NCAxMi43NDg2IDkuNzA0NCAxMi41MDAxQzkuNzA0NCAxMi4yNTE1IDkuNTAyOTMgMTIuMDUwMSA5LjI1NDQgMTIuMDUwMUg4LjA1MDA2VjcuNjU3MDVMMTMuMzUzNiAyLjM1MzU1Wk04LjA1MDA2IDYuMjQyODRMMTEuMDUwMSAzLjI0MjgzVjIuOTUwMDVIOC4wNTAwNlY2LjI0Mjg0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sb289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUgMy41QzUgMy4yMjM4NiA1LjIyMzg2IDMgNS41IDNIOS41QzkuNzc2MTQgMyAxMCAzLjIyMzg2IDEwIDMuNVY2SDEyLjVDMTIuNjg3MyA2IDEyLjg1ODkgNi4xMDQ2NyAxMi45NDQ2IDYuMjcxMjFDMTMuMDMwMyA2LjQzNzc0IDEzLjAxNTcgNi42MzgyMSAxMi45MDY5IDYuNzkwNjJMNy45MDY4NyAxMy43OTA2QzcuODEzMDEgMTMuOTIyIDcuNjYxNDggMTQgNy41IDE0QzcuMzM4NTMgMTQgNy4xODY5OSAxMy45MjIgNy4wOTMxNCAxMy43OTA2TDIuMDkzMTQgNi43OTA2MkMxLjk4NDI3IDYuNjM4MjEgMS45Njk3MiA2LjQzNzc0IDIuMDU1NDIgNi4yNzEyMUMyLjE0MTEyIDYuMTA0NjcgMi4zMTI3MSA2IDIuNSA2SDVWMy41Wk02IDRWNi41QzYgNi43NzYxNCA1Ljc3NjE0IDcgNS41IDdIMy40NzE2TDcuNSAxMi42Mzk4TDExLjUyODQgN0g5LjVDOS4yMjM4NiA3IDkgNi43NzYxNCA5IDYuNVY0SDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxhbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMSA3LjVDMSA3LjY2MTQ4IDEuMDc3OTggNy44MTMwMSAxLjIwOTM4IDcuOTA2ODdMOC4yMDkzOCAxMi45MDY5QzguMzYxNzkgMTMuMDE1NyA4LjU2MjI2IDEzLjAzMDMgOC43Mjg3OSAxMi45NDQ2QzguODk1MzMgMTIuODU4OSA5IDEyLjY4NzMgOSAxMi41TDkgMTBMMTEuNSAxMEMxMS43NzYxIDEwIDEyIDkuNzc2MTQgMTIgOS41TDEyIDUuNUMxMiA1LjIyMzg2IDExLjc3NjEgNSAxMS41IDVMOSA1TDkgMi41QzkgMi4zMTI3MSA4Ljg5NTMzIDIuMTQxMTIgOC43Mjg3OSAyLjA1NTQyQzguNTYyMjYgMS45Njk3MiA4LjM2MTc5IDEuOTg0MjcgOC4yMDkzOCAyLjA5MzEzTDEuMjA5MzggNy4wOTMxNEMxLjA3Nzk4IDcuMTg2OTkgMSA3LjMzODUzIDEgNy41Wk04IDMuNDcxNkw4IDUuNUM4IDUuNzc2MTQgOC4yMjM4NiA2IDguNSA2TDExIDZMMTEgOUw4LjUgOUM4LjIyMzg2IDkgOCA5LjIyMzg2IDggOS41TDggMTEuNTI4NEwyLjM2MDIzIDcuNUw4IDMuNDcxNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGlvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNCA3LjVDMTQgNy42NjE0OCAxMy45MjIgNy44MTMwMSAxMy43OTA2IDcuOTA2ODdMNi43OTA2MiAxMi45MDY5QzYuNjM4MjEgMTMuMDE1NyA2LjQzNzc0IDEzLjAzMDMgNi4yNzEyMSAxMi45NDQ2QzYuMTA0NjcgMTIuODU4OSA2IDEyLjY4NzMgNiAxMi41TDYgMTBMMy41IDEwQzMuMjIzODYgMTAgMyA5Ljc3NjE0IDMgOS41TDMgNS41QzMgNS4yMjM4NiAzLjIyMzg2IDUgMy41IDVMNiA1TDYgMi41QzYgMi4zMTI3MSA2LjEwNDY3IDIuMTQxMTIgNi4yNzEyMSAyLjA1NTQyQzYuNDM3NzQgMS45Njk3MiA2LjYzODIxIDEuOTg0MjcgNi43OTA2MiAyLjA5MzEzTDEzLjc5MDYgNy4wOTMxNEMxMy45MjIgNy4xODY5OSAxNCA3LjMzODUzIDE0IDcuNVpNNyAzLjQ3MTZMNyA1LjVDNyA1Ljc3NjE0IDYuNzc2MTQgNiA2LjUgNkw0IDZMNCA5TDYuNSA5QzYuNzc2MTQgOSA3IDkuMjIzODYgNyA5LjVMNyAxMS41Mjg0TDEyLjYzOTggNy41TDcgMy40NzE2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAxQzcuNjYxNDggMSA3LjgxMzAxIDEuMDc3OTggNy45MDY4NyAxLjIwOTM4TDEyLjkwNjkgOC4yMDkzOEMxMy4wMTU3IDguMzYxNzkgMTMuMDMwMyA4LjU2MjI2IDEyLjk0NDYgOC43Mjg3OUMxMi44NTg5IDguODk1MzMgMTIuNjg3MyA5IDEyLjUgOUgxMFYxMS41QzEwIDExLjc3NjEgOS43NzYxNCAxMiA5LjUgMTJINS41QzUuMjIzODYgMTIgNSAxMS43NzYxIDUgMTEuNVY5SDIuNUMyLjMxMjcxIDkgMi4xNDExMiA4Ljg5NTMzIDIuMDU1NDIgOC43Mjg3OUMxLjk2OTcyIDguNTYyMjYgMS45ODQyNyA4LjM2MTc5IDIuMDkzMTQgOC4yMDkzOEw3LjA5MzE0IDEuMjA5MzhDNy4xODY5OSAxLjA3Nzk4IDcuMzM4NTMgMSA3LjUgMVpNMy40NzE2IDhINS41QzUuNzc2MTQgOCA2IDguMjIzODYgNiA4LjVWMTFIOVY4LjVDOSA4LjIyMzg2IDkuMjIzODYgOCA5LjUgOEgxMS41Mjg0TDcuNSAyLjM2MDIzTDMuNDcxNiA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sY289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTggMC44NDk5NzZDNy4yMjM4MyAwLjg0OTk3NiA2Ljk5OTk4IDEuMDczODMgNi45OTk5OCAxLjM0OTk4VjMuNTIyMzRDNi45OTk5OCAzLjc5ODQ4IDcuMjIzODMgNC4wMjIzNCA3LjQ5OTk4IDQuMDIyMzRDNy43NzYxMiA0LjAyMjM0IDcuOTk5OTggMy43OTg0OCA3Ljk5OTk4IDMuNTIyMzRWMS44NzE4QzEwLjg4NjIgMi4xMjQ4OCAxMy4xNSA0LjU0ODA2IDEzLjE1IDcuNDk5OThDMTMuMTUgMTAuNjIwNCAxMC42MjA0IDEzLjE1IDcuNDk5OTggMTMuMTVDNC4zNzk1NyAxMy4xNSAxLjg0OTk4IDEwLjYyMDQgMS44NDk5OCA3LjQ5OTk4QzEuODQ5OTggNi4xMDYxMiAyLjM1NDA3IDQuODMxMjggMy4xOTA0OSAzLjg0NTlDMy4zNjkxOSAzLjYzNTM4IDMuMzQzMzkgMy4zMTk4NSAzLjEzMjg2IDMuMTQxMTVDMi45MjIzNCAyLjk2MjQ1IDIuNjA2ODEgMi45ODgyNSAyLjQyODExIDMuMTk4NzdDMS40NDQwNSA0LjM1ODA4IDAuODQ5OTc2IDUuODYwMjkgMC44NDk5NzYgNy40OTk5OEMwLjg0OTk3NiAxMS4xNzI3IDMuODI3MjggMTQuMTUgNy40OTk5OCAxNC4xNUMxMS4xNzI3IDE0LjE1IDE0LjE1IDExLjE3MjcgMTQuMTUgNy40OTk5OEMxNC4xNSAzLjgyNzI4IDExLjE3MjcgMC44NDk5NzYgNy40OTk5OCAwLjg0OTk3NlpNNi43NDA0OSA4LjA4MDcyTDQuMjIzNjMgNC41NzIzN0M0LjE1MjMxIDQuNDcyOTUgNC4xNjM0NiA0LjMzNjUyIDQuMjQ5OTggNC4yNUM0LjMzNjQ5IDQuMTYzNDggNC40NzI5MyA0LjE1MjMzIDQuNTcyMzQgNC4yMjM2NUw4LjA4MDY5IDYuNzQwNTFDOC41NjIyNyA3LjA4NTk5IDguNjE5MDYgNy43ODA5MSA4LjE5OTk4IDguMkM3Ljc4MDg5IDguNjE5MDkgNy4wODU5NyA4LjU2MjI5IDYuNzQwNDkgOC4wODA3MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHNvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjUgMkMzLjExOTI5IDIgMiAzLjExOTI5IDIgNC41QzIgNS44ODA3MiAzLjExOTI5IDcgNC41IDdDNS44ODA3MiA3IDcgNS44ODA3MiA3IDQuNUM3IDMuMTE5MjkgNS44ODA3MiAyIDQuNSAyWk0zIDQuNUMzIDMuNjcxNTcgMy42NzE1NyAzIDQuNSAzQzUuMzI4NDMgMyA2IDMuNjcxNTcgNiA0LjVDNiA1LjMyODQzIDUuMzI4NDMgNiA0LjUgNkMzLjY3MTU3IDYgMyA1LjMyODQzIDMgNC41Wk0xMC41IDJDOS4xMTkyOSAyIDggMy4xMTkyOSA4IDQuNUM4IDUuODgwNzIgOS4xMTkyOSA3IDEwLjUgN0MxMS44ODA3IDcgMTMgNS44ODA3MiAxMyA0LjVDMTMgMy4xMTkyOSAxMS44ODA3IDIgMTAuNSAyWk05IDQuNUM5IDMuNjcxNTcgOS42NzE1NyAzIDEwLjUgM0MxMS4zMjg0IDMgMTIgMy42NzE1NyAxMiA0LjVDMTIgNS4zMjg0MyAxMS4zMjg0IDYgMTAuNSA2QzkuNjcxNTcgNiA5IDUuMzI4NDMgOSA0LjVaTTIgMTAuNUMyIDkuMTE5MjkgMy4xMTkyOSA4IDQuNSA4QzUuODgwNzIgOCA3IDkuMTE5MjkgNyAxMC41QzcgMTEuODgwNyA1Ljg4MDcyIDEzIDQuNSAxM0MzLjExOTI5IDEzIDIgMTEuODgwNyAyIDEwLjVaTTQuNSA5QzMuNjcxNTcgOSAzIDkuNjcxNTcgMyAxMC41QzMgMTEuMzI4NCAzLjY3MTU3IDEyIDQuNSAxMkM1LjMyODQzIDEyIDYgMTEuMzI4NCA2IDEwLjVDNiA5LjY3MTU3IDUuMzI4NDMgOSA0LjUgOVpNMTAuNSA4QzkuMTE5MjkgOCA4IDkuMTE5MjkgOCAxMC41QzggMTEuODgwNyA5LjExOTI5IDEzIDEwLjUgMTNDMTEuODgwNyAxMyAxMyAxMS44ODA3IDEzIDEwLjVDMTMgOS4xMTkyOSAxMS44ODA3IDggMTAuNSA4Wk05IDEwLjVDOSA5LjY3MTU3IDkuNjcxNTcgOSAxMC41IDlDMTEuMzI4NCA5IDEyIDkuNjcxNTcgMTIgMTAuNUMxMiAxMS4zMjg0IDExLjMyODQgMTIgMTAuNSAxMkM5LjY3MTU3IDEyIDkgMTEuMzI4NCA5IDEwLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx1bz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMDUwMiAyLjc0OTg5QzEzLjA1MDIgMi40NDYxMyAxMi44MDQgMi4xOTk4OSAxMi41MDAyIDIuMTk5ODlDMTIuMTk2NSAyLjE5OTg5IDExLjk1MDIgMi40NDYxMyAxMS45NTAyIDIuNzQ5ODlWNy4yODI1QzExLjkwNDYgNy4xODgwMiAxMS44Mjk1IDcuMTA4NTEgMTEuNzMzNCA3LjA1Nzc2TDIuNzMzMzggMi4zMDc3NkMyLjU3ODQgMi4yMjU5NiAyLjM5MTkgMi4yMzEyNyAyLjI0MTgyIDIuMzIxNzZDMi4wOTE3NSAyLjQxMjI1IDIgMi41NzQ3MSAyIDIuNzQ5OTVWMTIuMjVDMiAxMi40MjUyIDIuMDkxNzUgMTIuNTg3NyAyLjI0MTgyIDEyLjY3ODFDMi4zOTE5IDEyLjc2ODYgMi41Nzg0IDEyLjc3MzkgMi43MzMzOCAxMi42OTIxTDExLjczMzQgNy45NDIxNEMxMS44Mjk1IDcuODkxMzkgMTEuOTA0NiA3LjgxMTg4IDExLjk1MDIgNy43MTc0VjEyLjI0OTlDMTEuOTUwMiAxMi41NTM2IDEyLjE5NjUgMTIuNzk5OSAxMi41MDAyIDEyLjc5OTlDMTIuODA0IDEyLjc5OTkgMTMuMDUwMiAxMi41NTM2IDEzLjA1MDIgMTIuMjQ5OVYyLjc0OTg5Wk0zIDExLjQyMDdWMy41NzkyTDEwLjQyODggNy40OTk5NUwzIDExLjQyMDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxmbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS45NDk3NiAyLjc0OTg5QzEuOTQ5NzYgMi40NDYxMyAyLjE5NiAyLjE5OTg5IDIuNDk5NzYgMi4xOTk4OUMyLjgwMzUxIDIuMTk5ODkgMy4wNDk3NiAyLjQ0NjEzIDMuMDQ5NzYgMi43NDk4OVY3LjI4MjVDMy4wOTU0IDcuMTg4MDIgMy4xNzA0NiA3LjEwODUxIDMuMjY2NjIgNy4wNTc3NkwxMi4yNjY2IDIuMzA3NzZDMTIuNDIxNiAyLjIyNTk2IDEyLjYwODEgMi4yMzEyNyAxMi43NTgyIDIuMzIxNzZDMTIuOTA4MyAyLjQxMjI1IDEzIDIuNTc0NzEgMTMgMi43NDk5NVYxMi4yNUMxMyAxMi40MjUyIDEyLjkwODMgMTIuNTg3NyAxMi43NTgyIDEyLjY3ODFDMTIuNjA4MSAxMi43Njg2IDEyLjQyMTYgMTIuNzczOSAxMi4yNjY2IDEyLjY5MjFMMy4yNjY2MiA3Ljk0MjE0QzMuMTcwNDYgNy44OTEzOSAzLjA5NTQgNy44MTE4OCAzLjA0OTc2IDcuNzE3NFYxMi4yNDk5QzMuMDQ5NzYgMTIuNTUzNiAyLjgwMzUxIDEyLjc5OTkgMi40OTk3NiAxMi43OTk5QzIuMTk2IDEyLjc5OTkgMS45NDk3NiAxMi41NTM2IDEuOTQ5NzYgMTIuMjQ5OVYyLjc0OTg5Wk00LjU3MTIyIDcuNDk5OTVMMTIgMTEuNDIwN1YzLjU3OTJMNC41NzEyMiA3LjQ5OTk1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjI1XCIsZDpcIk0wIDBIM1YzSDBWMFpNNiAzSDNWNkgwVjlIM1YxMkgwVjE1SDNWMTJINlYxNUg5VjEySDEyVjE1SDE1VjEySDEyVjlIMTVWNkgxMlYzSDE1VjBIMTJWM0g5VjBINlYzWk02IDZWM0g5VjZINlpNNiA5SDNWNkg2VjlaTTkgOVY2SDEyVjlIOVpNOSA5SDZWMTJIOVY5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNSAxQzUuMjIzODYgMSA1IDEuMjIzODYgNSAxLjVDNSAxLjc3NjE0IDUuMjIzODYgMiA1LjUgMkg5LjVDOS43NzYxNCAyIDEwIDEuNzc2MTQgMTAgMS41QzEwIDEuMjIzODYgOS43NzYxNCAxIDkuNSAxSDUuNVpNMyAzLjVDMyAzLjIyMzg2IDMuMjIzODYgMyAzLjUgM0g1SDEwSDExLjVDMTEuNzc2MSAzIDEyIDMuMjIzODYgMTIgMy41QzEyIDMuNzc2MTQgMTEuNzc2MSA0IDExLjUgNEgxMVYxMkMxMSAxMi41NTIzIDEwLjU1MjMgMTMgMTAgMTNINUM0LjQ0NzcyIDEzIDQgMTIuNTUyMyA0IDEyVjRMMy41IDRDMy4yMjM4NiA0IDMgMy43NzYxNCAzIDMuNVpNNSA0SDEwVjEySDVWNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LENvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00IDZIMTFMNy41IDEwLjVMNCA2WlwiLGZpbGw6bn0pKX0sdm89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkgNEw5IDExTDQuNSA3LjVMOSA0WlwiLGZpbGw6bn0pKX0sZ289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYgMTFMNiA0TDEwLjUgNy41TDYgMTFaXCIsZmlsbDpufSkpfSxtbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNCA5SDExTDcuNSA0LjVMNCA5WlwiLGZpbGw6bn0pKX0sd289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMjMzMzYgNC42OTYyOUM3LjIzMzM2IDIuOTY4ODQgOC42MzMzNSAxLjU2ODU3IDEwLjM2IDEuNTY4NTdDMTEuMzczNiAxLjU2ODU3IDEyLjE4MyAyLjA0ODA0IDEyLjcyNTQgMi43NDM4NUMxMy4zMDc5IDIuNjI0NjcgMTMuODU1NyAyLjQwOTEzIDE0LjM1MTMgMi4xMTUwOEMxNC4xNTU5IDIuNzI1OTggMTMuNzQyNCAzLjIzOTYgMTMuMjAzMyAzLjU2NDYzQzEzLjIwMzggMy41NjU2OCAxMy4yMDQyIDMuNTY2NzQgMTMuMjA0NyAzLjU2Nzc5QzEzLjczMzQgMy41MDM2MSAxNC4yMzY0IDMuMzYzMDIgMTQuNzA0OCAzLjE1NTQ2TDE0LjcwMzcgMy4xNTcxNUMxNC4zNjY3IDMuNjYxODMgMTMuOTQzMSA0LjEwNzM2IDEzLjQ1NjEgNC40NzAzNEMxMy40ODIzIDQuNjQ2NzIgMTMuNDk1NiA0LjgyNDI3IDEzLjQ5NTYgNS4wMDA3OUMxMy40OTU2IDguNjg3MSAxMC42ODczIDEyLjk3NDYgNS41MjEyMiAxMi45NzQ2QzMuOTM5MDYgMTIuOTc0NiAyLjQ2NTQ0IDEyLjUxMSAxLjIyNTA1IDExLjcxNTJDMC45OTI2MzIgMTEuNTY2MSAwLjkyNTEwOCAxMS4yNTY4IDEuMDc0MjMgMTEuMDI0NEMxLjA4NzQgMTEuMDAzOCAxLjEwMTgzIDEwLjk4NDYgMS4xMTczNCAxMC45NjY2QzEuMjA1ODIgMTAuODIwMiAxLjM3NDM4IDEwLjczMDkgMS41NTU0IDEwLjc1MjJDMi40NzA2NiAxMC44NjAxIDMuMzg1NjggMTAuNzQ4NSA0LjE5MjE5IDEwLjM5NjJDMy4zOTIyNiAxMC4wNDM0IDIuNzcxMjkgOS4zNTk3NSAyLjUwMjA0IDguNTE5NzRDMi40NTM1OSA4LjM2ODYgMi40ODgzNSA4LjIwMzExIDIuNTkzNTEgOC4wODQyMkMyLjU5NzE2IDguMDgwMSAyLjYwMDg3IDguMDc2MDYgMi42MDQ2NCA4LjA3MjFDMS45NjM5MSA3LjUwODE5IDEuNTU5NzMgNi42ODIwOCAxLjU1OTczIDUuNzYxNDNWNS43Mjc1OUMxLjU1OTczIDUuNTY4MTQgMS42NDQxMSA1LjQyMDU5IDEuNzgxNTUgNS4zMzk3NEMxLjgyNjcxIDUuMzEzMTcgMS44NzUzNyA1LjI5NTExIDEuOTI1MzIgNS4yODU1OEMxLjcwNTQ5IDQuODYxNTQgMS41ODExNiA0LjM3OTg0IDEuNTgxMTYgMy44Njk1OEMxLjU4MTE2IDMuNDAxNjUgMS41ODM4NCAyLjgxMTkyIDEuOTEzMzIgMi4yODA4MUMxLjk4NzE4IDIuMTYxNzUgMi4xMDc1OCAyLjA4OTE1IDIuMjM2NCAyLjA3MTk1QzIuNDI1ODggMi4wMTIzNyAyLjY0MDg3IDIuMDY5NjkgMi43NzQwNiAyLjIzMzAyQzMuODY1MzYgMy41NzEyNiA1LjQ0MDY2IDQuNDk1ODMgNy4yMzM2NiA0LjczOTYxTDcuMjMzMzYgNC42OTYyOVpNNS41MjEyMiAxMS45NzQ2QzQuNzMzODcgMTEuOTc0NiAzLjk3NzgxIDExLjg0MzUgMy4yNzI0OCAxMS42MDIzQzQuMTMwMTIgMTEuNDUzOCA0Ljk1MzA3IDExLjExNTkgNS42NjIxOCAxMC41NjAyQzUuODEyMTEgMTAuNDQyNyA1Ljg3MTgyIDEwLjI0MzUgNS44MTEyNiAxMC4wNjI5QzUuNzUwNyA5Ljg4MjM0IDUuNTgzIDkuNzU5NDMgNS4zOTI1NSA5Ljc1NjA3QzQuNjg5NjggOS43NDM2NiA0LjA2NzEyIDkuMzk3MTYgMy42Nzc5MyA4Ljg2ODQ1QzMuODY4MjggOC44NTMwNiA0LjA1NDI4IDguODIwMzkgNC4yMzQ0NSA4Ljc3MTY3QzQuNDM2MDMgOC43MTcxNiA0LjU3MzYzIDguNTMxMTQgNC41NjY3NCA4LjMyMjQzQzQuNTU5ODUgOC4xMTM3MiA0LjQxMDI5IDcuOTM3MTggNC4yMDU1NSA3Ljg5NjA3QzMuNDI2OTQgNy43Mzk3NyAyLjc5ODgzIDcuMTY3NjQgMi41NjE2OSA2LjQyMTc0QzIuNzYyNTUgNi40NzAyNSAyLjk3MTAyIDYuNDk5MSAzLjE4NDgyIDYuNTA2MUMzLjM4NTYzIDYuNTEyNjcgMy41NjY0NiA2LjM4NTMzIDMuNjI3OTUgNi4xOTQwNUMzLjY4OTQzIDYuMDAyNzcgMy42MTY2NiA1Ljc5MzkxIDMuNDQ5NjMgNS42ODIyNEMyLjg2NTIzIDUuMjkxNTUgMi40ODExNiA0LjYyNDY0IDIuNDgxMTYgMy44Njk1OEMyLjQ4MTE2IDMuNzAyMTMgMi40ODM1MiAzLjU1MjY4IDIuNDkzNTUgMy40MTcxOUMzLjg1MTE1IDQuNzk5MTMgNS43MDg3MyA1LjY4OTMxIDcuNzc1ODggNS43OTMzOEM3LjkzMjI1IDUuODAxMjYgOC4wODMyOCA1LjczNTQzIDguMTgzOTUgNS42MTU1M0M4LjI4NDYzIDUuNDk1NjIgOC4zMjMzMiA1LjMzNTQ4IDguMjg4NTEgNS4xODI4NEM4LjI1MjU1IDUuMDI1MTcgOC4yMzMzNiA0Ljg2Mjg0IDguMjMzMzYgNC42OTYyOUM4LjIzMzM2IDMuNTIwODUgOS4xODU5MSAyLjU2ODU3IDEwLjM2IDIuNTY4NTdDMTEuNTk0MyAyLjU2ODU3IDEyLjQ5NTYgMy43MTIwOCAxMi40OTU2IDUuMDAwNzlDMTIuNDk1NiA4LjI1NzA5IDEwLjAyMDIgMTEuOTc0NiA1LjUyMTIyIDExLjk3NDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx5bz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS4wMDAwMSAyLjc1QzUuMDAwMDEgMi40NzM4NiA0Ljc3NjE1IDIuMjUgNC41MDAwMSAyLjI1QzQuMjIzODcgMi4yNSA0LjAwMDAxIDIuNDczODYgNC4wMDAwMSAyLjc1VjguMDVDNC4wMDAwMSA5Ljk4MyA1LjU2NzAyIDExLjU1IDcuNTAwMDEgMTEuNTVDOS40MzMwMSAxMS41NSAxMSA5Ljk4MyAxMSA4LjA1VjIuNzVDMTEgMi40NzM4NiAxMC43NzYyIDIuMjUgMTAuNSAyLjI1QzEwLjIyMzkgMi4yNSAxMCAyLjQ3Mzg2IDEwIDIuNzVWOC4wNUMxMCA5LjQzMDcxIDguODgwNzIgMTAuNTUgNy41MDAwMSAxMC41NUM2LjExOTMgMTAuNTUgNS4wMDAwMSA5LjQzMDcxIDUuMDAwMDEgOC4wNVYyLjc1Wk0zLjQ5OTk4IDEzLjEwMDFDMy4yNzkwNiAxMy4xMDAxIDMuMDk5OTggMTMuMjc5MSAzLjA5OTk4IDEzLjUwMDFDMy4wOTk5OCAxMy43MjEgMy4yNzkwNiAxMy45MDAxIDMuNDk5OTggMTMuOTAwMUgxMS41QzExLjcyMDkgMTMuOTAwMSAxMS45IDEzLjcyMSAxMS45IDEzLjUwMDFDMTEuOSAxMy4yNzkxIDExLjcyMDkgMTMuMTAwMSAxMS41IDEzLjEwMDFIMy40OTk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGJvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjkwMzIxIDcuMjk2NzdDMS45MDMyMSAxMC4zNDEgNC4xMTA0MSAxMi40MTQ3IDYuNTg4OTMgMTIuODQzOUM2Ljg3MjU1IDEyLjg5MyA3LjA2MjY2IDEzLjE2MjcgNy4wMTM1NSAxMy40NDY0QzYuOTY0NDQgMTMuNzMgNi42OTQ3MSAxMy45MjAxIDYuNDExMDkgMTMuODcxQzMuNDk5NDIgMTMuMzY2OCAwLjg2MDg0IDEwLjkxMjcgMC44NjA4NCA3LjI5Njc3QzAuODYwODM5IDUuNzYwMDkgMS41NTk5NiA0LjU1MjQ1IDIuMzc2MzkgMy42MzM3N0MyLjk2MTI0IDIuOTc1NjggMy42MzAzNCAyLjQ0MTM1IDQuMTY4NDYgMi4wMzIwMkwyLjUzMjA1IDIuMDMyMDJDMi4yNTU5MSAyLjAzMjAyIDIuMDMyMDUgMS44MDgxNiAyLjAzMjA1IDEuNTMyMDJDMi4wMzIwNSAxLjI1NTg4IDIuMjU1OTEgMS4wMzIwMiAyLjUzMjA1IDEuMDMyMDJMNS41MzIwNSAxLjAzMjAyQzUuODA4MTkgMS4wMzIwMiA2LjAzMjA1IDEuMjU1ODggNi4wMzIwNSAxLjUzMjAyTDYuMDMyMDUgNC41MzIwMkM2LjAzMjA1IDQuODA4MTYgNS44MDgxOSA1LjAzMjAyIDUuNTMyMDUgNS4wMzIwMkM1LjI1NTkxIDUuMDMyMDIgNS4wMzIwNSA0LjgwODE2IDUuMDMyMDUgNC41MzIwMkw1LjAzMjA1IDIuNjg2NDVMNS4wMzA1NCAyLjY4NzU5TDUuMDMwNDUgMi42ODc2Nkw1LjAzMDQ0IDIuNjg3NjdMNS4wMzA0MyAyLjY4NzY3QzQuNDU4OTYgMy4xMTg2OCAzLjc2MDU5IDMuNjQ1MzggMy4xNTU1NCA0LjMyNjJDMi40NDEwMiA1LjEzMDIxIDEuOTAzMjEgNi4xMDE1NCAxLjkwMzIxIDcuMjk2NzdaTTEzLjAxMDkgNy43MDMyMUMxMy4wMTA5IDQuNjkxMTUgMTAuODUwNSAyLjYyOTYgOC40MDM4NCAyLjE3MDI5QzguMTIwOTMgMi4xMTcxOCA3LjkzNDY1IDEuODQ0NzkgNy45ODc3NiAxLjU2MTg4QzguMDQwODcgMS4yNzg5OCA4LjMxMzI2IDEuMDkyNyA4LjU5NjE2IDEuMTQ1ODFDMTEuNDcwNCAxLjY4NTQxIDE0LjA1MzIgNC4xMjYwNSAxNC4wNTMyIDcuNzAzMjFDMTQuMDUzMiA5LjIzOTg4IDEzLjM1NDEgMTAuNDQ3NSAxMi41Mzc3IDExLjM2NjJDMTEuOTUyOCAxMi4wMjQzIDExLjI4MzcgMTIuNTU4NiAxMC43NDU2IDEyLjk2OEwxMi4zODIxIDEyLjk2OEMxMi42NTgyIDEyLjk2OCAxMi44ODIxIDEzLjE5MTggMTIuODgyMSAxMy40NjhDMTIuODgyMSAxMy43NDQxIDEyLjY1ODIgMTMuOTY4IDEyLjM4MjEgMTMuOTY4TDkuMzgyMDUgMTMuOTY4QzkuMTA1OTEgMTMuOTY4IDguODgyMDUgMTMuNzQ0MSA4Ljg4MjA1IDEzLjQ2OEw4Ljg4MjA1IDEwLjQ2OEM4Ljg4MjA1IDEwLjE5MTggOS4xMDU5MSA5Ljk2Nzk2IDkuMzgyMDUgOS45Njc5NkM5LjY1ODE5IDkuOTY3OTYgOS44ODIwNSAxMC4xOTE4IDkuODgyMDUgMTAuNDY4TDkuODgyMDUgMTIuMzEzNUw5Ljg4MzYyIDEyLjMxMjNDMTAuNDU1MSAxMS44ODEzIDExLjE1MzUgMTEuMzU0NiAxMS43NTg1IDEwLjY3MzhDMTIuNDczMSA5Ljg2OTc2IDEzLjAxMDkgOC44OTg0NCAxMy4wMTA5IDcuNzAzMjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx4bz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy44MTgyNSAxLjE4MTg4QzcuNjQyNTEgMS4wMDYxNSA3LjM1NzU5IDEuMDA2MTUgNy4xODE4NSAxLjE4MTg4TDQuMTgxODUgNC4xODE4OEM0LjAwNjExIDQuMzU3NjIgNC4wMDYxMSA0LjY0MjU0IDQuMTgxODUgNC44MTgyOEM0LjM1NzU5IDQuOTk0MDEgNC42NDI1MSA0Ljk5NDAxIDQuODE4MjUgNC44MTgyOEw3LjA1MDA1IDIuNTg2NDhWOS40OTk5NkM3LjA1MDA1IDkuNzQ4NDkgNy4yNTE1MiA5Ljk0OTk2IDcuNTAwMDUgOS45NDk5NkM3Ljc0ODU4IDkuOTQ5OTYgNy45NTAwNSA5Ljc0ODQ5IDcuOTUwMDUgOS40OTk5NlYyLjU4NjQ4TDEwLjE4MTkgNC44MTgyOEMxMC4zNTc2IDQuOTk0MDEgMTAuNjQyNSA0Ljk5NDAxIDEwLjgxODIgNC44MTgyOEMxMC45OTQgNC42NDI1NCAxMC45OTQgNC4zNTc2MiAxMC44MTgyIDQuMTgxODhMNy44MTgyNSAxLjE4MTg4Wk0yLjUgOS45OTk5N0MyLjc3NjE0IDkuOTk5OTcgMyAxMC4yMjM4IDMgMTAuNVYxMkMzIDEyLjU1MzggMy40NDU2NSAxMyAzLjk5NjM1IDEzSDExLjAwMTJDMTEuNTUyOSAxMyAxMiAxMi41NTI4IDEyIDEyVjEwLjVDMTIgMTAuMjIzOCAxMi4yMjM5IDkuOTk5OTcgMTIuNSA5Ljk5OTk3QzEyLjc3NjEgOS45OTk5NyAxMyAxMC4yMjM4IDEzIDEwLjVWMTJDMTMgMTMuMTA0IDEyLjEwNjIgMTQgMTEuMDAxMiAxNEgzLjk5NjM1QzIuODkwMTkgMTQgMiAxMy4xMDMgMiAxMlYxMC41QzIgMTAuMjIzOCAyLjIyMzg2IDkuOTk5OTcgMi41IDkuOTk5OTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxPbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwNzUgNy40OTk4OEMwLjg3NzA3NSAzLjg0MjE5IDMuODQyMjIgMC44NzcwNDUgNy40OTk5MSAwLjg3NzA0NUMxMS4xNTc2IDAuODc3MDQ1IDE0LjEyMjcgMy44NDIxOSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAxMS4xNTc1IDExLjE1NzYgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMy44NDIyMiAxNC4xMjI3IDAuODc3MDc1IDExLjE1NzUgMC44NzcwNzUgNy40OTk4OFpNNy40OTk5MSAxLjgyNzA0QzQuMzY2ODkgMS44MjcwNCAxLjgyNzA4IDQuMzY2ODYgMS44MjcwOCA3LjQ5OTg4QzEuODI3MDggMTAuNjMyOSA0LjM2Njg5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzEwLjYzMjkgMTMuMTcyNyAxMy4xNzI3IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNC4zNjY4NiAxMC42MzI5IDEuODI3MDQgNy40OTk5MSAxLjgyNzA0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5ODUgMC44NzcwNDVDMy44NDIxNiAwLjg3NzA0NSAwLjg3NzAxNCAzLjg0MjE5IDAuODc3MDE0IDcuNDk5ODhDMC44NzcwMTQgOS4xNDg4IDEuNDc5NjMgMTAuNjU3IDIuNDc2NjUgMTEuODE2MkwxLjY0NjQzIDEyLjY0NjRDMS40NTExNyAxMi44NDE3IDEuNDUxMTcgMTMuMTU4MyAxLjY0NjQzIDEzLjM1MzVDMS44NDE3IDEzLjU0ODggMi4xNTgyOCAxMy41NDg4IDIuMzUzNTQgMTMuMzUzNUwzLjE4Mzc3IDEyLjUyMzNDNC4zNDI5NiAxMy41MjAyIDUuODUxMDQgMTQuMTIyNyA3LjQ5OTg1IDE0LjEyMjdDMTEuMTU3NSAxNC4xMjI3IDE0LjEyMjcgMTEuMTU3NSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyA1Ljg1MTA3IDEzLjUyMDIgNC4zNDI5OSAxMi41MjMzIDMuMTgzOEwxMy4zNTM1IDIuMzUzNTRDMTMuNTQ4OCAyLjE1ODI3IDEzLjU0ODggMS44NDE2OSAxMy4zNTM1IDEuNjQ2NDNDMTMuMTU4MyAxLjQ1MTE3IDEyLjg0MTcgMS40NTExNyAxMi42NDY0IDEuNjQ2NDNMMTEuODE2MiAyLjQ3NjY4QzEwLjY1NyAxLjQ3OTY2IDkuMTQ4NzcgMC44NzcwNDUgNy40OTk4NSAwLjg3NzA0NVpNMTEuMTQyMiAzLjE1MDY2QzEwLjE1NjcgMi4zMjQ0OSA4Ljg4NjM5IDEuODI3MDQgNy40OTk4NSAxLjgyNzA0QzQuMzY2ODMgMS44MjcwNCAxLjgyNzAxIDQuMzY2ODYgMS44MjcwMSA3LjQ5OTg4QzEuODI3MDEgOC44ODY0MiAyLjMyNDQ2IDEwLjE1NjggMy4xNTA2MyAxMS4xNDIyTDExLjE0MjIgMy4xNTA2NlpNMy44NTc3NiAxMS44NDkzQzQuODQzMTcgMTIuNjc1MyA2LjExMzQzIDEzLjE3MjcgNy40OTk4NSAxMy4xNzI3QzEwLjYzMjggMTMuMTcyNyAxMy4xNzI3IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNi4xMTM0NiAxMi42NzUzIDQuODQzMiAxMS44NDkzIDMuODU3NzlMMy44NTc3NiAxMS44NDkzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTggMUw2LjkyMzIxIDIuMDAzMDdMMS4xNzQ5OCAxMkwwLjU5OTk3NiAxM0gxLjc1MzVIMTMuMjQ2NEgxNC40TDEzLjgyNSAxMkw4LjA3Njc0IDIuMDAzMDdMNy40OTk5OCAxWk03LjQ5OTk4IDMuMDA2MTNMMi4zMjg1IDEySDEyLjY3MTRMNy40OTk5OCAzLjAwNjEzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sU289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNzY0NDcgMy4xMjE5OUM1LjYzMTUxIDMuMDQ4NTkgNi41NjA4MiAzIDcuNSAzQzguNDM5MTggMyA5LjM2ODQ5IDMuMDQ4NTkgMTAuMjM1NSAzLjEyMTk5QzExLjI3OTYgMy4yMTAzNyAxMS45NTUzIDMuMjcwMDggMTIuNDcyIDMuMzkyMDNDMTIuOTQyNSAzLjUwMzA0IDEzLjIwNDggMy42NDk3NiAxMy40MzA2IDMuODgwODZDMTMuNDU1MyAzLjkwNjE4IDEzLjQ5MDIgMy45NDQxNCAxMy41MTMzIDMuOTcwOTJDMTMuNzEyNiA0LjIwMTQ5IDEzLjg0MzUgNC40ODg3IDEzLjkxOCA1LjAzMjgzQzEzLjk5NzggNS42MTU2IDE0IDYuMzc2NDQgMTQgNy41MjQ5M0MxNCA4LjY2MDI2IDEzLjk5NzggOS40MTAxOSAxMy45MTgxIDkuOTg1MzhDMTMuODQzOSAxMC41MjA2IDEzLjcxMzcgMTAuODA2MSAxMy41MTI1IDExLjAzODdDMTMuNDg5NiAxMS4wNjUxIDEzLjQ1NDEgMTEuMTAzOCAxMy40Mjk2IDExLjEyODdDMTMuMjAwOSAxMS4zNjI1IDEyLjk0MDYgMTEuNTA3NiAxMi40ODE4IDExLjYxNjRDMTEuOTc1MiAxMS43MzY1IDExLjMxNDMgMTEuNzk0MiAxMC4yODc4IDExLjg3OTdDOS40MTk0OCAxMS45NTIxIDguNDc1NjYgMTIgNy41IDEyQzYuNTI0MzQgMTIgNS41ODA1MiAxMS45NTIxIDQuNzEyMiAxMS44Nzk3QzMuNjg1NzIgMTEuNzk0MiAzLjAyNDc3IDExLjczNjUgMi41MTgxNiAxMS42MTY0QzIuMDU5MzYgMTEuNTA3NiAxLjc5OTEgMTEuMzYyNSAxLjU3MDM3IDExLjEyODdDMS41NDU5MyAxMS4xMDM4IDEuNTEwMzUgMTEuMDY1MSAxLjQ4NzQ4IDExLjAzODdDMS4yODYyOCAxMC44MDYxIDEuMTU2MTIgMTAuNTIwNiAxLjA4MTkzIDkuOTg1MzhDMS4wMDIyMSA5LjQxMDE5IDEgOC42NjAyNiAxIDcuNTI0OTNDMSA2LjM3NjQ0IDEuMDAyMTYgNS42MTU2IDEuMDgyIDUuMDMyODNDMS4xNTY1NCA0LjQ4ODcgMS4yODc0NCA0LjIwMTQ5IDEuNDg2NjYgMy45NzA5MkMxLjUwOTggMy45NDQxNCAxLjU0NDY4IDMuOTA2MTggMS41Njk0MiAzLjg4MDg2QzEuNzk1MiAzLjY0OTc2IDIuMDU3NTIgMy41MDMwNCAyLjUyNzk2IDMuMzkyMDNDMy4wNDQ3MyAzLjI3MDA4IDMuNzIwNCAzLjIxMDM3IDQuNzY0NDcgMy4xMjE5OVpNMCA3LjUyNDkzQzAgNS4yODI5NiAwIDQuMTYxOTggMC43Mjk5ODUgMy4zMTcxM0MwLjc2NjQ1NyAzLjI3NDkxIDAuODE1MTM5IDMuMjIxOTQgMC44NTQxMjMgMy4xODIwNEMxLjYzNDM5IDIuMzgzMzkgMi42NDk2MyAyLjI5NzQ0IDQuNjgwMTIgMi4xMjU1NUM1LjU2OTIzIDIuMDUwMjggNi41MjcyNCAyIDcuNSAyQzguNDcyNzYgMiA5LjQzMDc3IDIuMDUwMjggMTAuMzE5OSAyLjEyNTU1QzEyLjM1MDQgMi4yOTc0NCAxMy4zNjU2IDIuMzgzMzkgMTQuMTQ1OSAzLjE4MjA0QzE0LjE4NDkgMy4yMjE5NCAxNC4yMzM1IDMuMjc0OTEgMTQuMjcgMy4zMTcxM0MxNSA0LjE2MTk4IDE1IDUuMjgyOTYgMTUgNy41MjQ5M0MxNSA5Ljc0MDEyIDE1IDEwLjg0NzcgMTQuMjY4OCAxMS42OTI5QzE0LjIzMjYgMTEuNzM0OCAxNC4xODMyIDExLjc4ODUgMTQuMTQ0NCAxMS44MjgxQzEzLjM2MjkgMTIuNjI2OSAxMi4zNjU1IDEyLjcxIDEwLjM3MDkgMTIuODc2M0M5LjQ3OTcxIDEyLjk1MDUgOC41MDc4MiAxMyA3LjUgMTNDNi40OTIxOCAxMyA1LjUyMDI4IDEyLjk1MDUgNC42MjkxNSAxMi44NzYzQzIuNjM0NDYgMTIuNzEgMS42MzcxMiAxMi42MjY5IDAuODU1NTU4IDExLjgyODFDMC44MTY4NDQgMTEuNzg4NSAwLjc2NzQ0MiAxMS43MzQ4IDAuNzMxMjIxIDExLjY5MjlDMCAxMC44NDc3IDAgOS43NDAxMiAwIDcuNTI0OTNaTTUuMjUgNS4zODI2NEM1LjI1IDUuMjAyMjUgNS40MzUyMiA1LjA4MTI0IDUuNjAwNDEgNS4xNTM2OUwxMC40MjggNy4yNzEwNUMxMC42Mjc0IDcuMzU4NTMgMTAuNjI3NCA3LjY0MTQ3IDEwLjQyOCA3LjcyODk1TDUuNjAwNDEgOS44NDYzMUM1LjQzNTIyIDkuOTE4NzYgNS4yNSA5Ljc5Nzc1IDUuMjUgOS42MTczNlY1LjM4MjY0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sX289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcgMkgxLjVDMS4yMjM4NiAyIDEgMi4yMjM4NiAxIDIuNVY3SDdWMlpNOCAyVjdIMTRWMi41QzE0IDIuMjIzODYgMTMuNzc2MSAyIDEzLjUgMkg4Wk03IDhIMVYxMi41QzEgMTIuNzc2MSAxLjIyMzg2IDEzIDEuNSAxM0g3VjhaTTggMTNWOEgxNFYxMi41QzE0IDEyLjc3NjEgMTMuNzc2MSAxMyAxMy41IDEzSDhaTTEuNSAxQzAuNjcxNTczIDEgMCAxLjY3MTU3IDAgMi41VjEyLjVDMCAxMy4zMjg0IDAuNjcxNTczIDE0IDEuNSAxNEgxMy41QzE0LjMyODQgMTQgMTUgMTMuMzI4NCAxNSAxMi41VjIuNUMxNSAxLjY3MTU3IDE0LjMyODQgMSAxMy41IDFIMS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sam89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNSAySDEzLjVDMTMuNzc2MSAyIDE0IDIuMjIzODYgMTQgMi41VjdIMVYyLjVDMSAyLjIyMzg2IDEuMjIzODYgMiAxLjUgMlpNMSA4VjEyLjVDMSAxMi43NzYxIDEuMjIzODYgMTMgMS41IDEzSDEzLjVDMTMuNzc2MSAxMyAxNCAxMi43NzYxIDE0IDEyLjVWOEgxWk0wIDIuNUMwIDEuNjcxNTcgMC42NzE1NzMgMSAxLjUgMUgxMy41QzE0LjMyODQgMSAxNSAxLjY3MTU3IDE1IDIuNVYxMi41QzE1IDEzLjMyODQgMTQuMzI4NCAxNCAxMy41IDE0SDEuNUMwLjY3MTU3MyAxNCAwIDEzLjMyODQgMCAxMi41VjIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEVvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNCAyLjU4NzExTDEuODUxNjMgMTNIMTMuNUMxMy43NzYxIDEzIDE0IDEyLjc3NjEgMTQgMTIuNVYyLjU4NzExWk0wLjc2Mjg3OSAxMy44MDY3TDAuODI1Mzk2IDEzLjg3OTZMMC44NTQ3MTcgMTMuODU0NUMxLjA1MDE3IDEzLjk0NzggMS4yNjg5OSAxNCAxLjUgMTRIMTMuNUMxNC4zMjg0IDE0IDE1IDEzLjMyODQgMTUgMTIuNVYyLjVDMTUgMS45Mzk0OSAxNC42OTI2IDEuNDUwNzggMTQuMjM3MSAxLjE5MzMxTDE0LjE3NDYgMS4xMjAzN0wxNC4xNDUzIDEuMTQ1NUMxMy45NDk4IDEuMDUyMjIgMTMuNzMxIDEgMTMuNSAxSDEuNUMwLjY3MTU3MyAxIDAgMS42NzE1NyAwIDIuNVYxMi41QzAgMTMuMDYwNSAwLjMwNzQzNSAxMy41NDkyIDAuNzYyODc5IDEzLjgwNjdaTTEgMTIuNDEyOUwxMy4xNDg0IDJIMS41QzEuMjIzODYgMiAxIDIuMjIzODYgMSAyLjVWMTIuNDEyOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFBvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04IDJIMTMuNUMxMy43NzYxIDIgMTQgMi4yMjM4NiAxNCAyLjVWMTIuNUMxNCAxMi43NzYxIDEzLjc3NjEgMTMgMTMuNSAxM0g4VjJaTTcgMkgxLjVDMS4yMjM4NiAyIDEgMi4yMjM4NiAxIDIuNVYxMi41QzEgMTIuNzc2MSAxLjIyMzg2IDEzIDEuNSAxM0g3VjJaTTAgMi41QzAgMS42NzE1NyAwLjY3MTU3MyAxIDEuNSAxSDEzLjVDMTQuMzI4NCAxIDE1IDEuNjcxNTcgMTUgMi41VjEyLjVDMTUgMTMuMzI4NCAxNC4zMjg0IDE0IDEzLjUgMTRIMS41QzAuNjcxNTczIDE0IDAgMTMuMzI4NCAwIDEyLjVWMi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sa289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuODE4MTIgNC42ODE2MUM0Ljk5Mzg2IDQuODU3MzQgNC45OTM4NiA1LjE0MjI3IDQuODE4MTIgNS4zMThMMy4wODYzMiA3LjA0OThIMTEuOTEzNUwxMC4xODE3IDUuMzE4QzEwLjAwNiA1LjE0MjI3IDEwLjAwNiA0Ljg1NzM0IDEwLjE4MTcgNC42ODE2MUMxMC4zNTc1IDQuNTA1ODcgMTAuNjQyNCA0LjUwNTg3IDEwLjgxODEgNC42ODE2MUwxMy4zMTgxIDcuMTgxNjFDMTMuNDkzOSA3LjM1NzM0IDEzLjQ5MzkgNy42NDIyNyAxMy4zMTgxIDcuODE4TDEwLjgxODEgMTAuMzE4QzEwLjY0MjQgMTAuNDkzNyAxMC4zNTc1IDEwLjQ5MzcgMTAuMTgxNyAxMC4zMThDMTAuMDA2IDEwLjE0MjMgMTAuMDA2IDkuODU3MzQgMTAuMTgxNyA5LjY4MTYxTDExLjkxMzUgNy45NDk4SDMuMDg2MzJMNC44MTgxMiA5LjY4MTYxQzQuOTkzODYgOS44NTczNCA0Ljk5Mzg2IDEwLjE0MjMgNC44MTgxMiAxMC4zMThDNC42NDIzOSAxMC40OTM3IDQuMzU3NDYgMTAuNDkzNyA0LjE4MTczIDEwLjMxOEwxLjY4MTczIDcuODE4QzEuNTA1OTkgNy42NDIyNyAxLjUwNTk5IDcuMzU3MzQgMS42ODE3MyA3LjE4MTYxTDQuMTgxNzMgNC42ODE2MUM0LjM1NzQ2IDQuNTA1ODcgNC42NDIzOSA0LjUwNTg3IDQuODE4MTIgNC42ODE2MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEhvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMCA2LjVDMTAgOC40MzMgOC40MzMgMTAgNi41IDEwQzQuNTY3IDEwIDMgOC40MzMgMyA2LjVDMyA0LjU2NyA0LjU2NyAzIDYuNSAzQzguNDMzIDMgMTAgNC41NjcgMTAgNi41Wk05LjMwODg0IDEwLjAxNTlDOC41MzkwMSAxMC42MzE4IDcuNTYyNTEgMTEgNi41IDExQzQuMDE0NzIgMTEgMiA4Ljk4NTI4IDIgNi41QzIgNC4wMTQ3MiA0LjAxNDcyIDIgNi41IDJDOC45ODUyOCAyIDExIDQuMDE0NzIgMTEgNi41QzExIDcuNTYyNTEgMTAuNjMxOCA4LjUzOTAxIDEwLjAxNTkgOS4zMDg4NEwxMi44NTM2IDEyLjE0NjRDMTMuMDQ4OCAxMi4zNDE3IDEzLjA0ODggMTIuNjU4MyAxMi44NTM2IDEyLjg1MzZDMTIuNjU4MyAxMy4wNDg4IDEyLjM0MTcgMTMuMDQ4OCAxMi4xNDY0IDEyLjg1MzZMOS4zMDg4NCAxMC4wMTU5Wk00LjI1IDYuNUM0LjI1IDYuMjIzODYgNC40NzM4NiA2IDQuNzUgNkg2VjQuNzVDNiA0LjQ3Mzg2IDYuMjIzODYgNC4yNSA2LjUgNC4yNUM2Ljc3NjE0IDQuMjUgNyA0LjQ3Mzg2IDcgNC43NVY2SDguMjVDOC41MjYxNCA2IDguNzUgNi4yMjM4NiA4Ljc1IDYuNUM4Ljc1IDYuNzc2MTQgOC41MjYxNCA3IDguMjUgN0g3VjguMjVDNyA4LjUyNjE0IDYuNzc2MTQgOC43NSA2LjUgOC43NUM2LjIyMzg2IDguNzUgNiA4LjUyNjE0IDYgOC4yNVY3SDQuNzVDNC40NzM4NiA3IDQuMjUgNi43NzYxNCA0LjI1IDYuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFZvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02LjUgMTBDOC40MzMgMTAgMTAgOC40MzMgMTAgNi41QzEwIDQuNTY3IDguNDMzIDMgNi41IDNDNC41NjcgMyAzIDQuNTY3IDMgNi41QzMgOC40MzMgNC41NjcgMTAgNi41IDEwWk02LjUgMTFDNy41NjI1MSAxMSA4LjUzOTAxIDEwLjYzMTggOS4zMDg4NCAxMC4wMTU5TDEyLjE0NjQgMTIuODUzNkMxMi4zNDE3IDEzLjA0ODggMTIuNjU4MyAxMy4wNDg4IDEyLjg1MzYgMTIuODUzNkMxMy4wNDg4IDEyLjY1ODMgMTMuMDQ4OCAxMi4zNDE3IDEyLjg1MzYgMTIuMTQ2NEwxMC4wMTU5IDkuMzA4ODRDMTAuNjMxOCA4LjUzOTAxIDExIDcuNTYyNTEgMTEgNi41QzExIDQuMDE0NzIgOC45ODUyOCAyIDYuNSAyQzQuMDE0NzIgMiAyIDQuMDE0NzIgMiA2LjVDMiA4Ljk4NTI4IDQuMDE0NzIgMTEgNi41IDExWk00Ljc1IDZDNC40NzM4NiA2IDQuMjUgNi4yMjM4NiA0LjI1IDYuNUM0LjI1IDYuNzc2MTQgNC40NzM4NiA3IDQuNzUgN0g4LjI1QzguNTI2MTQgNyA4Ljc1IDYuNzc2MTQgOC43NSA2LjVDOC43NSA2LjIyMzg2IDguNTI2MTQgNiA4LjI1IDZINC43NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9fSw1Mjk5OihlLHQsbik9PntuLnIodCksbi5kKHQse2RlZmF1bHQ6KCk9Pmx9KTt2YXIgcj1uKDgwODEpLG89bi5uKHIpLGE9bigzNjQ1KSxpPW4ubihhKSgpKG8oKSk7aS5wdXNoKFtlLmlkLFwiLnJlYWN0LWNhbGVuZGFyIHtcXG4gIHdpZHRoOiAzNTBweDtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2EwYTA5NjtcXG4gIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xcbiAgbGluZS1oZWlnaHQ6IDEuMTI1ZW07XFxufVxcbi5yZWFjdC1jYWxlbmRhci0tZG91YmxlVmlldyB7XFxuICB3aWR0aDogNzAwcHg7XFxufVxcbi5yZWFjdC1jYWxlbmRhci0tZG91YmxlVmlldyAucmVhY3QtY2FsZW5kYXJfX3ZpZXdDb250YWluZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIG1hcmdpbjogLTAuNWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXItLWRvdWJsZVZpZXcgLnJlYWN0LWNhbGVuZGFyX192aWV3Q29udGFpbmVyID4gKiB7XFxuICB3aWR0aDogNTAlO1xcbiAgbWFyZ2luOiAwLjVlbTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyLFxcbi5yZWFjdC1jYWxlbmRhciAqLFxcbi5yZWFjdC1jYWxlbmRhciAqOmJlZm9yZSxcXG4ucmVhY3QtY2FsZW5kYXIgKjphZnRlciB7XFxuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXIgYnV0dG9uIHtcXG4gIG1hcmdpbjogMDtcXG4gIGJvcmRlcjogMDtcXG4gIG91dGxpbmU6IG5vbmU7XFxufVxcbi5yZWFjdC1jYWxlbmRhciBidXR0b246ZW5hYmxlZDpob3ZlciB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgaGVpZ2h0OiA0NHB4O1xcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb24gYnV0dG9uIHtcXG4gIG1pbi13aWR0aDogNDRweDtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiBidXR0b246ZGlzYWJsZWQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uIGJ1dHRvbjplbmFibGVkOmhvdmVyLFxcbi5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiBidXR0b246ZW5hYmxlZDpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzIHtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIGZvbnQtc2l6ZTogMC43NWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzX193ZWVrZGF5IHtcXG4gIHBhZGRpbmc6IDAuNWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtOdW1iZXJzIC5yZWFjdC1jYWxlbmRhcl9fdGlsZSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZm9udC1zaXplOiAwLjc1ZW07XFxuICBmb250LXdlaWdodDogYm9sZDtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzX19kYXktLXdlZWtlbmQge1xcbiAgY29sb3I6ICNkMTAwMDA7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fZGF5c19fZGF5LS1uZWlnaGJvcmluZ01vbnRoIHtcXG4gIGNvbG9yOiAjNzU3NTc1O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3llYXItdmlldyAucmVhY3QtY2FsZW5kYXJfX3RpbGUsXFxuLnJlYWN0LWNhbGVuZGFyX19kZWNhZGUtdmlldyAucmVhY3QtY2FsZW5kYXJfX3RpbGUsXFxuLnJlYWN0LWNhbGVuZGFyX19jZW50dXJ5LXZpZXcgLnJlYWN0LWNhbGVuZGFyX190aWxlIHtcXG4gIHBhZGRpbmc6IDJlbSAwLjVlbTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlIHtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIHBhZGRpbmc6IDEwcHggNi42NjY3cHg7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZTpkaXNhYmxlZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGU6ZW5hYmxlZDpob3ZlcixcXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGU6ZW5hYmxlZDpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLW5vdyB7XFxuICBiYWNrZ3JvdW5kOiAjZmZmZjc2O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLW5vdzplbmFibGVkOmhvdmVyLFxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tbm93OmVuYWJsZWQ6Zm9jdXMge1xcbiAgYmFja2dyb3VuZDogI2ZmZmZhOTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1oYXNBY3RpdmUge1xcbiAgYmFja2dyb3VuZDogIzc2YmFmZjtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1oYXNBY3RpdmU6ZW5hYmxlZDpob3ZlcixcXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWhhc0FjdGl2ZTplbmFibGVkOmZvY3VzIHtcXG4gIGJhY2tncm91bmQ6ICNhOWQ0ZmY7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tYWN0aXZlIHtcXG4gIGJhY2tncm91bmQ6ICMwMDZlZGM7XFxuICBjb2xvcjogd2hpdGU7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tYWN0aXZlOmVuYWJsZWQ6aG92ZXIsXFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1hY3RpdmU6ZW5hYmxlZDpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kOiAjMTA4N2ZmO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXItLXNlbGVjdFJhbmdlIC5yZWFjdC1jYWxlbmRhcl9fdGlsZS0taG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcXG59XFxuXCIsXCJcIl0pO2NvbnN0IGw9aX0sMzY0NTplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiB0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKChmdW5jdGlvbih0KXt2YXIgbj1cIlwiLHI9dm9pZCAwIT09dFs1XTtyZXR1cm4gdFs0XSYmKG4rPVwiQHN1cHBvcnRzIChcIi5jb25jYXQodFs0XSxcIikge1wiKSksdFsyXSYmKG4rPVwiQG1lZGlhIFwiLmNvbmNhdCh0WzJdLFwiIHtcIikpLHImJihuKz1cIkBsYXllclwiLmNvbmNhdCh0WzVdLmxlbmd0aD4wP1wiIFwiLmNvbmNhdCh0WzVdKTpcIlwiLFwiIHtcIikpLG4rPWUodCksciYmKG4rPVwifVwiKSx0WzJdJiYobis9XCJ9XCIpLHRbNF0mJihuKz1cIn1cIiksbn0pKS5qb2luKFwiXCIpfSx0Lmk9ZnVuY3Rpb24oZSxuLHIsbyxhKXtcInN0cmluZ1wiPT10eXBlb2YgZSYmKGU9W1tudWxsLGUsdm9pZCAwXV0pO3ZhciBpPXt9O2lmKHIpZm9yKHZhciBsPTA7bDx0aGlzLmxlbmd0aDtsKyspe3ZhciBjPXRoaXNbbF1bMF07bnVsbCE9YyYmKGlbY109ITApfWZvcih2YXIgcz0wO3M8ZS5sZW5ndGg7cysrKXt2YXIgdT1bXS5jb25jYXQoZVtzXSk7ciYmaVt1WzBdXXx8KHZvaWQgMCE9PWEmJih2b2lkIDA9PT11WzVdfHwodVsxXT1cIkBsYXllclwiLmNvbmNhdCh1WzVdLmxlbmd0aD4wP1wiIFwiLmNvbmNhdCh1WzVdKTpcIlwiLFwiIHtcIikuY29uY2F0KHVbMV0sXCJ9XCIpKSx1WzVdPWEpLG4mJih1WzJdPyh1WzFdPVwiQG1lZGlhIFwiLmNvbmNhdCh1WzJdLFwiIHtcIikuY29uY2F0KHVbMV0sXCJ9XCIpLHVbMl09bik6dVsyXT1uKSxvJiYodVs0XT8odVsxXT1cIkBzdXBwb3J0cyAoXCIuY29uY2F0KHVbNF0sXCIpIHtcIikuY29uY2F0KHVbMV0sXCJ9XCIpLHVbNF09byk6dVs0XT1cIlwiLmNvbmNhdChvKSksdC5wdXNoKHUpKX19LHR9fSw4MDgxOmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV19fSw0NDgzOihlLHQsbik9PntmdW5jdGlvbiByKGUpe3JldHVybiByPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LHIoZSl9ZnVuY3Rpb24gbyhlLHQpe3JldHVybiBvPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sbyhlLHQpfWZ1bmN0aW9uIGEoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIGV9ZnVuY3Rpb24gaShlKXtyZXR1cm4gaT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0saShlKX1mdW5jdGlvbiBsKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7aWYoXCJvYmplY3RcIiE9PXIoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgbz1uLmNhbGwoZSxcInN0cmluZ1wiKTtpZihcIm9iamVjdFwiIT09cihvKSlyZXR1cm4gbzt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIil9cmV0dXJuIFN0cmluZyhlKX0oZSk7cmV0dXJuXCJzeW1ib2xcIj09PXIodCk/dDpTdHJpbmcodCl9dmFyIGM9big2Njg5KSxzPW4oNTY5NyksdT1uKDUzMDMpLmNyZWF0ZUZvY3VzVHJhcCxkPW4oODM4OCkuaXNGb2N1c2FibGUsZj1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksdCYmbyhlLHQpfShwLGUpO3ZhciB0LG4scyx1LGY9KHM9cCx1PWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZnVuY3Rpb24oKXt2YXIgZSx0PWkocyk7aWYodSl7dmFyIG49aSh0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KHQsYXJndW1lbnRzLG4pfWVsc2UgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZih0JiYoXCJvYmplY3RcIj09PXIodCl8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBhKGUpfSh0aGlzLGUpfSk7ZnVuY3Rpb24gcChlKXt2YXIgdCxuLHIsbzshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLHApLG49YSh0PWYuY2FsbCh0aGlzLGUpKSxvPWZ1bmN0aW9uKGUpe3ZhciB0LG49bnVsbCE9PSh0PXRoaXMuaW50ZXJuYWxPcHRpb25zW2VdKSYmdm9pZCAwIT09dD90OnRoaXMub3JpZ2luYWxPcHRpb25zW2VdO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4pe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KHI+MT9yLTE6MCksYT0xO2E8cjthKyspb1thLTFdPWFyZ3VtZW50c1thXTtuPW4uYXBwbHkodm9pZCAwLG8pfWlmKCEwPT09biYmKG49dm9pZCAwKSwhbil7aWYodm9pZCAwPT09bnx8ITE9PT1uKXJldHVybiBuO3Rocm93IG5ldyBFcnJvcihcImBcIi5jb25jYXQoZSxcImAgd2FzIHNwZWNpZmllZCBidXQgd2FzIG5vdCBhIG5vZGUsIG9yIGRpZCBub3QgcmV0dXJuIGEgbm9kZVwiKSl9dmFyIGksbD1uO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBuJiYhKGw9bnVsbD09PShpPXRoaXMuZ2V0RG9jdW1lbnQoKSl8fHZvaWQgMD09PWk/dm9pZCAwOmkucXVlcnlTZWxlY3RvcihuKSkpdGhyb3cgbmV3IEVycm9yKFwiYFwiLmNvbmNhdChlLFwiYCBhcyBzZWxlY3RvciByZWZlcnMgdG8gbm8ga25vd24gbm9kZVwiKSk7cmV0dXJuIGx9LChyPWwocj1cImdldE5vZGVGb3JPcHRpb25cIikpaW4gbj9PYmplY3QuZGVmaW5lUHJvcGVydHkobixyLHt2YWx1ZTpvLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bltyXT1vLHQuaGFuZGxlRGVhY3RpdmF0ZT10LmhhbmRsZURlYWN0aXZhdGUuYmluZChhKHQpKSx0LmhhbmRsZVBvc3REZWFjdGl2YXRlPXQuaGFuZGxlUG9zdERlYWN0aXZhdGUuYmluZChhKHQpKSx0LmhhbmRsZUNsaWNrT3V0c2lkZURlYWN0aXZhdGVzPXQuaGFuZGxlQ2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXMuYmluZChhKHQpKSx0LmludGVybmFsT3B0aW9ucz17cmV0dXJuRm9jdXNPbkRlYWN0aXZhdGU6ITEsY2hlY2tDYW5SZXR1cm5Gb2N1czpudWxsLG9uRGVhY3RpdmF0ZTp0LmhhbmRsZURlYWN0aXZhdGUsb25Qb3N0RGVhY3RpdmF0ZTp0LmhhbmRsZVBvc3REZWFjdGl2YXRlLGNsaWNrT3V0c2lkZURlYWN0aXZhdGVzOnQuaGFuZGxlQ2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXN9LHQub3JpZ2luYWxPcHRpb25zPXtyZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZTohMCxvbkRlYWN0aXZhdGU6bnVsbCxvblBvc3REZWFjdGl2YXRlOm51bGwsY2hlY2tDYW5SZXR1cm5Gb2N1czpudWxsLGNsaWNrT3V0c2lkZURlYWN0aXZhdGVzOiExfTt2YXIgaT1lLmZvY3VzVHJhcE9wdGlvbnM7Zm9yKHZhciBjIGluIGkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGksYykmJihcInJldHVybkZvY3VzT25EZWFjdGl2YXRlXCIhPT1jJiZcIm9uRGVhY3RpdmF0ZVwiIT09YyYmXCJvblBvc3REZWFjdGl2YXRlXCIhPT1jJiZcImNoZWNrQ2FuUmV0dXJuRm9jdXNcIiE9PWMmJlwiY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXNcIiE9PWM/dC5pbnRlcm5hbE9wdGlvbnNbY109aVtjXTp0Lm9yaWdpbmFsT3B0aW9uc1tjXT1pW2NdKTtyZXR1cm4gdC5vdXRzaWRlQ2xpY2s9bnVsbCx0LmZvY3VzVHJhcEVsZW1lbnRzPWUuY29udGFpbmVyRWxlbWVudHN8fFtdLHQudXBkYXRlUHJldmlvdXNFbGVtZW50KCksdH1yZXR1cm4gdD1wLChuPVt7a2V5OlwiZ2V0RG9jdW1lbnRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3BzLmZvY3VzVHJhcE9wdGlvbnMuZG9jdW1lbnR8fChcInVuZGVmaW5lZFwiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKX19LHtrZXk6XCJnZXRSZXR1cm5Gb2N1c05vZGVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0Tm9kZUZvck9wdGlvbihcInNldFJldHVybkZvY3VzXCIsdGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpO3JldHVybiBlfHwhMSE9PWUmJnRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50fX0se2tleTpcInVwZGF0ZVByZXZpb3VzRWxlbWVudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXREb2N1bWVudCgpO2UmJih0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudD1lLmFjdGl2ZUVsZW1lbnQpfX0se2tleTpcImRlYWN0aXZhdGVUcmFwXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmZvY3VzVHJhcCYmdGhpcy5mb2N1c1RyYXAuYWN0aXZlJiZ0aGlzLmZvY3VzVHJhcC5kZWFjdGl2YXRlKHtyZXR1cm5Gb2N1czohMSxjaGVja0NhblJldHVybkZvY3VzOm51bGwsb25EZWFjdGl2YXRlOnRoaXMub3JpZ2luYWxPcHRpb25zLm9uRGVhY3RpdmF0ZX0pfX0se2tleTpcImhhbmRsZUNsaWNrT3V0c2lkZURlYWN0aXZhdGVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5vcmlnaW5hbE9wdGlvbnMuY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM/dGhpcy5vcmlnaW5hbE9wdGlvbnMuY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXMuY2FsbChudWxsLGUpOnRoaXMub3JpZ2luYWxPcHRpb25zLmNsaWNrT3V0c2lkZURlYWN0aXZhdGVzO3JldHVybiB0JiYodGhpcy5vdXRzaWRlQ2xpY2s9e3RhcmdldDplLnRhcmdldCxhbGxvd0RlYWN0aXZhdGlvbjp0fSksdH19LHtrZXk6XCJoYW5kbGVEZWFjdGl2YXRlXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm9yaWdpbmFsT3B0aW9ucy5vbkRlYWN0aXZhdGUmJnRoaXMub3JpZ2luYWxPcHRpb25zLm9uRGVhY3RpdmF0ZS5jYWxsKG51bGwpLHRoaXMuZGVhY3RpdmF0ZVRyYXAoKX19LHtrZXk6XCJoYW5kbGVQb3N0RGVhY3RpdmF0ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWZ1bmN0aW9uKCl7dmFyIHQ9ZS5nZXRSZXR1cm5Gb2N1c05vZGUoKSxuPSEoIWUub3JpZ2luYWxPcHRpb25zLnJldHVybkZvY3VzT25EZWFjdGl2YXRlfHxudWxsPT10fHwhdC5mb2N1c3x8ZS5vdXRzaWRlQ2xpY2smJighZS5vdXRzaWRlQ2xpY2suYWxsb3dEZWFjdGl2YXRpb258fGQoZS5vdXRzaWRlQ2xpY2sudGFyZ2V0LGUuaW50ZXJuYWxPcHRpb25zLnRhYmJhYmxlT3B0aW9ucykpKSxyPWUuaW50ZXJuYWxPcHRpb25zLnByZXZlbnRTY3JvbGwsbz12b2lkIDAhPT1yJiZyO24mJnQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6b30pLGUub3JpZ2luYWxPcHRpb25zLm9uUG9zdERlYWN0aXZhdGUmJmUub3JpZ2luYWxPcHRpb25zLm9uUG9zdERlYWN0aXZhdGUuY2FsbChudWxsKSxlLm91dHNpZGVDbGljaz1udWxsfTt0aGlzLm9yaWdpbmFsT3B0aW9ucy5jaGVja0NhblJldHVybkZvY3VzP3RoaXMub3JpZ2luYWxPcHRpb25zLmNoZWNrQ2FuUmV0dXJuRm9jdXMuY2FsbChudWxsLHRoaXMuZ2V0UmV0dXJuRm9jdXNOb2RlKCkpLnRoZW4odCx0KTp0KCl9fSx7a2V5Olwic2V0dXBGb2N1c1RyYXBcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZm9jdXNUcmFwP3RoaXMucHJvcHMuYWN0aXZlJiYhdGhpcy5mb2N1c1RyYXAuYWN0aXZlJiYodGhpcy5mb2N1c1RyYXAuYWN0aXZhdGUoKSx0aGlzLnByb3BzLnBhdXNlZCYmdGhpcy5mb2N1c1RyYXAucGF1c2UoKSk6dGhpcy5mb2N1c1RyYXBFbGVtZW50cy5zb21lKEJvb2xlYW4pJiYodGhpcy5mb2N1c1RyYXA9dGhpcy5wcm9wcy5fY3JlYXRlRm9jdXNUcmFwKHRoaXMuZm9jdXNUcmFwRWxlbWVudHMsdGhpcy5pbnRlcm5hbE9wdGlvbnMpLHRoaXMucHJvcHMuYWN0aXZlJiZ0aGlzLmZvY3VzVHJhcC5hY3RpdmF0ZSgpLHRoaXMucHJvcHMucGF1c2VkJiZ0aGlzLmZvY3VzVHJhcC5wYXVzZSgpKX19LHtrZXk6XCJjb21wb25lbnREaWRNb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5wcm9wcy5hY3RpdmUmJnRoaXMuc2V0dXBGb2N1c1RyYXAoKX19LHtrZXk6XCJjb21wb25lbnREaWRVcGRhdGVcIix2YWx1ZTpmdW5jdGlvbihlKXtpZih0aGlzLmZvY3VzVHJhcCl7ZS5jb250YWluZXJFbGVtZW50cyE9PXRoaXMucHJvcHMuY29udGFpbmVyRWxlbWVudHMmJnRoaXMuZm9jdXNUcmFwLnVwZGF0ZUNvbnRhaW5lckVsZW1lbnRzKHRoaXMucHJvcHMuY29udGFpbmVyRWxlbWVudHMpO3ZhciB0PSFlLmFjdGl2ZSYmdGhpcy5wcm9wcy5hY3RpdmUsbj1lLmFjdGl2ZSYmIXRoaXMucHJvcHMuYWN0aXZlLHI9IWUucGF1c2VkJiZ0aGlzLnByb3BzLnBhdXNlZCxvPWUucGF1c2VkJiYhdGhpcy5wcm9wcy5wYXVzZWQ7aWYodCYmKHRoaXMudXBkYXRlUHJldmlvdXNFbGVtZW50KCksdGhpcy5mb2N1c1RyYXAuYWN0aXZhdGUoKSksbilyZXR1cm4gdm9pZCB0aGlzLmRlYWN0aXZhdGVUcmFwKCk7ciYmdGhpcy5mb2N1c1RyYXAucGF1c2UoKSxvJiZ0aGlzLmZvY3VzVHJhcC51bnBhdXNlKCl9ZWxzZSBlLmNvbnRhaW5lckVsZW1lbnRzIT09dGhpcy5wcm9wcy5jb250YWluZXJFbGVtZW50cyYmKHRoaXMuZm9jdXNUcmFwRWxlbWVudHM9dGhpcy5wcm9wcy5jb250YWluZXJFbGVtZW50cyksdGhpcy5wcm9wcy5hY3RpdmUmJih0aGlzLnVwZGF0ZVByZXZpb3VzRWxlbWVudCgpLHRoaXMuc2V0dXBGb2N1c1RyYXAoKSl9fSx7a2V5OlwiY29tcG9uZW50V2lsbFVubW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGVhY3RpdmF0ZVRyYXAoKX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLmNoaWxkcmVuP2MuQ2hpbGRyZW4ub25seSh0aGlzLnByb3BzLmNoaWxkcmVuKTp2b2lkIDA7aWYodCl7aWYodC50eXBlJiZ0LnR5cGU9PT1jLkZyYWdtZW50KXRocm93IG5ldyBFcnJvcihcIkEgZm9jdXMtdHJhcCBjYW5ub3QgdXNlIGEgRnJhZ21lbnQgYXMgaXRzIGNoaWxkIGNvbnRhaW5lci4gVHJ5IHJlcGxhY2luZyBpdCB3aXRoIGEgPGRpdj4gZWxlbWVudC5cIik7cmV0dXJuIGMuY2xvbmVFbGVtZW50KHQse3JlZjpmdW5jdGlvbihuKXt2YXIgcj1lLnByb3BzLmNvbnRhaW5lckVsZW1lbnRzO3QmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnJlZj90LnJlZihuKTp0LnJlZiYmKHQucmVmLmN1cnJlbnQ9bikpLGUuZm9jdXNUcmFwRWxlbWVudHM9cnx8W25dfX0pfXJldHVybiBudWxsfX1dKSYmZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbChyLmtleSkscil9fSh0LnByb3RvdHlwZSxuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInByb3RvdHlwZVwiLHt3cml0YWJsZTohMX0pLHB9KGMuQ29tcG9uZW50KSxwPVwidW5kZWZpbmVkXCI9PXR5cGVvZiBFbGVtZW50P0Z1bmN0aW9uOkVsZW1lbnQ7Zi5wcm9wVHlwZXM9e2FjdGl2ZTpzLmJvb2wscGF1c2VkOnMuYm9vbCxmb2N1c1RyYXBPcHRpb25zOnMuc2hhcGUoe2RvY3VtZW50OnMub2JqZWN0LG9uQWN0aXZhdGU6cy5mdW5jLG9uUG9zdEFjdGl2YXRlOnMuZnVuYyxjaGVja0NhbkZvY3VzVHJhcDpzLmZ1bmMsb25EZWFjdGl2YXRlOnMuZnVuYyxvblBvc3REZWFjdGl2YXRlOnMuZnVuYyxjaGVja0NhblJldHVybkZvY3VzOnMuZnVuYyxpbml0aWFsRm9jdXM6cy5vbmVPZlR5cGUoW3MuaW5zdGFuY2VPZihwKSxzLnN0cmluZyxzLmJvb2wscy5mdW5jXSksZmFsbGJhY2tGb2N1czpzLm9uZU9mVHlwZShbcy5pbnN0YW5jZU9mKHApLHMuc3RyaW5nLHMuZnVuY10pLGVzY2FwZURlYWN0aXZhdGVzOnMub25lT2ZUeXBlKFtzLmJvb2wscy5mdW5jXSksY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM6cy5vbmVPZlR5cGUoW3MuYm9vbCxzLmZ1bmNdKSxyZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZTpzLmJvb2wsc2V0UmV0dXJuRm9jdXM6cy5vbmVPZlR5cGUoW3MuaW5zdGFuY2VPZihwKSxzLnN0cmluZyxzLmJvb2wscy5mdW5jXSksYWxsb3dPdXRzaWRlQ2xpY2s6cy5vbmVPZlR5cGUoW3MuYm9vbCxzLmZ1bmNdKSxwcmV2ZW50U2Nyb2xsOnMuYm9vbCx0YWJiYWJsZU9wdGlvbnM6cy5zaGFwZSh7ZGlzcGxheUNoZWNrOnMub25lT2YoW1wiZnVsbFwiLFwibGVnYWN5LWZ1bGxcIixcIm5vbi16ZXJvLWFyZWFcIixcIm5vbmVcIl0pLGdldFNoYWRvd1Jvb3Q6cy5vbmVPZlR5cGUoW3MuYm9vbCxzLmZ1bmNdKX0pLHRyYXBTdGFjazpzLmFycmF5LGlzS2V5Rm9yd2FyZDpzLmZ1bmMsaXNLZXlCYWNrd2FyZDpzLmZ1bmN9KSxjb250YWluZXJFbGVtZW50czpzLmFycmF5T2Yocy5pbnN0YW5jZU9mKHApKSxjaGlsZHJlbjpzLm9uZU9mVHlwZShbcy5lbGVtZW50LHMuaW5zdGFuY2VPZihwKV0pfSxmLmRlZmF1bHRQcm9wcz17YWN0aXZlOiEwLHBhdXNlZDohMSxmb2N1c1RyYXBPcHRpb25zOnt9LF9jcmVhdGVGb2N1c1RyYXA6dX0sZS5leHBvcnRzPWZ9LDUzMDM6KGUsdCxuKT0+e24ucih0KSxuLmQodCx7Y3JlYXRlRm9jdXNUcmFwOigpPT5DfSk7dmFyIHI9big4Mzg4KTtmdW5jdGlvbiBvKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBhKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP28oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtpKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpvKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybih0PWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGV8fG51bGw9PT1lKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgcj1uLmNhbGwoZSxcInN0cmluZ1wiKTtpZihcIm9iamVjdFwiIT10eXBlb2YgcilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIil9cmV0dXJuIFN0cmluZyhlKX0oZSk7cmV0dXJuXCJzeW1ib2xcIj09dHlwZW9mIHQ/dDpTdHJpbmcodCl9KHQpKWluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBsPWZ1bmN0aW9uKGUpe3JldHVyblwiVGFiXCI9PT1lLmtleXx8OT09PWUua2V5Q29kZX0sYz1mdW5jdGlvbihlKXtyZXR1cm4gbChlKSYmIWUuc2hpZnRLZXl9LHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSkmJmUuc2hpZnRLZXl9LHU9ZnVuY3Rpb24oZSl7cmV0dXJuIHNldFRpbWVvdXQoZSwwKX0sZD1mdW5jdGlvbihlLHQpe3ZhciBuPS0xO3JldHVybiBlLmV2ZXJ5KChmdW5jdGlvbihlLHIpe3JldHVybiF0KGUpfHwobj1yLCExKX0pKSxufSxmPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2UuYXBwbHkodm9pZCAwLG4pOmV9LHA9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFyZ2V0LnNoYWRvd1Jvb3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29tcG9zZWRQYXRoP2UuY29tcG9zZWRQYXRoKClbMF06ZS50YXJnZXR9LGg9W10sQz1mdW5jdGlvbihlLHQpe3ZhciBuLG89KG51bGw9PXQ/dm9pZCAwOnQuZG9jdW1lbnQpfHxkb2N1bWVudCxpPShudWxsPT10P3ZvaWQgMDp0LnRyYXBTdGFjayl8fGgsQz1hKHtyZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZTohMCxlc2NhcGVEZWFjdGl2YXRlczohMCxkZWxheUluaXRpYWxGb2N1czohMCxpc0tleUZvcndhcmQ6Yyxpc0tleUJhY2t3YXJkOnN9LHQpLHY9e2NvbnRhaW5lcnM6W10sY29udGFpbmVyR3JvdXBzOltdLHRhYmJhYmxlR3JvdXBzOltdLG5vZGVGb2N1c2VkQmVmb3JlQWN0aXZhdGlvbjpudWxsLG1vc3RSZWNlbnRseUZvY3VzZWROb2RlOm51bGwsYWN0aXZlOiExLHBhdXNlZDohMSxkZWxheUluaXRpYWxGb2N1c1RpbWVyOnZvaWQgMH0sZz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGUmJnZvaWQgMCE9PWVbdF0/ZVt0XTpDW258fHRdfSxtPWZ1bmN0aW9uKGUpe3JldHVybiB2LmNvbnRhaW5lckdyb3Vwcy5maW5kSW5kZXgoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuY29udGFpbmVyLHI9dC50YWJiYWJsZU5vZGVzO3JldHVybiBuLmNvbnRhaW5zKGUpfHxyLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0PT09ZX0pKX0pKX0sdz1mdW5jdGlvbihlKXt2YXIgdD1DW2VdO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4+MT9uLTE6MCksYT0xO2E8bjthKyspclthLTFdPWFyZ3VtZW50c1thXTt0PXQuYXBwbHkodm9pZCAwLHIpfWlmKCEwPT09dCYmKHQ9dm9pZCAwKSwhdCl7aWYodm9pZCAwPT09dHx8ITE9PT10KXJldHVybiB0O3Rocm93IG5ldyBFcnJvcihcImBcIi5jb25jYXQoZSxcImAgd2FzIHNwZWNpZmllZCBidXQgd2FzIG5vdCBhIG5vZGUsIG9yIGRpZCBub3QgcmV0dXJuIGEgbm9kZVwiKSl9dmFyIGk9dDtpZihcInN0cmluZ1wiPT10eXBlb2YgdCYmIShpPW8ucXVlcnlTZWxlY3Rvcih0KSkpdGhyb3cgbmV3IEVycm9yKFwiYFwiLmNvbmNhdChlLFwiYCBhcyBzZWxlY3RvciByZWZlcnMgdG8gbm8ga25vd24gbm9kZVwiKSk7cmV0dXJuIGl9LHk9ZnVuY3Rpb24oKXt2YXIgZT13KFwiaW5pdGlhbEZvY3VzXCIpO2lmKCExPT09ZSlyZXR1cm4hMTtpZih2b2lkIDA9PT1lKWlmKG0oby5hY3RpdmVFbGVtZW50KT49MCllPW8uYWN0aXZlRWxlbWVudDtlbHNle3ZhciB0PXYudGFiYmFibGVHcm91cHNbMF07ZT10JiZ0LmZpcnN0VGFiYmFibGVOb2RlfHx3KFwiZmFsbGJhY2tGb2N1c1wiKX1pZighZSl0aHJvdyBuZXcgRXJyb3IoXCJZb3VyIGZvY3VzLXRyYXAgbmVlZHMgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgZm9jdXNhYmxlIGVsZW1lbnRcIik7cmV0dXJuIGV9LGI9ZnVuY3Rpb24oKXtpZih2LmNvbnRhaW5lckdyb3Vwcz12LmNvbnRhaW5lcnMubWFwKChmdW5jdGlvbihlKXt2YXIgdD0oMCxyLnRhYmJhYmxlKShlLEMudGFiYmFibGVPcHRpb25zKSxuPSgwLHIuZm9jdXNhYmxlKShlLEMudGFiYmFibGVPcHRpb25zKTtyZXR1cm57Y29udGFpbmVyOmUsdGFiYmFibGVOb2Rlczp0LGZvY3VzYWJsZU5vZGVzOm4sZmlyc3RUYWJiYWJsZU5vZGU6dC5sZW5ndGg+MD90WzBdOm51bGwsbGFzdFRhYmJhYmxlTm9kZTp0Lmxlbmd0aD4wP3RbdC5sZW5ndGgtMV06bnVsbCxuZXh0VGFiYmFibGVOb2RlOmZ1bmN0aW9uKGUpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sbz1uLmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1lfSkpO2lmKCEobzwwKSlyZXR1cm4gdD9uLnNsaWNlKG8rMSkuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuKDAsci5pc1RhYmJhYmxlKShlLEMudGFiYmFibGVPcHRpb25zKX0pKTpuLnNsaWNlKDAsbykucmV2ZXJzZSgpLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybigwLHIuaXNUYWJiYWJsZSkoZSxDLnRhYmJhYmxlT3B0aW9ucyl9KSl9fX0pKSx2LnRhYmJhYmxlR3JvdXBzPXYuY29udGFpbmVyR3JvdXBzLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFiYmFibGVOb2Rlcy5sZW5ndGg+MH0pKSx2LnRhYmJhYmxlR3JvdXBzLmxlbmd0aDw9MCYmIXcoXCJmYWxsYmFja0ZvY3VzXCIpKXRocm93IG5ldyBFcnJvcihcIllvdXIgZm9jdXMtdHJhcCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGNvbnRhaW5lciB3aXRoIGF0IGxlYXN0IG9uZSB0YWJiYWJsZSBub2RlIGluIGl0IGF0IGFsbCB0aW1lc1wiKX0seD1mdW5jdGlvbiBlKHQpeyExIT09dCYmdCE9PW8uYWN0aXZlRWxlbWVudCYmKHQmJnQuZm9jdXM/KHQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ISFDLnByZXZlbnRTY3JvbGx9KSx2Lm1vc3RSZWNlbnRseUZvY3VzZWROb2RlPXQsZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFnTmFtZSYmXCJpbnB1dFwiPT09ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuc2VsZWN0fSh0KSYmdC5zZWxlY3QoKSk6ZSh5KCkpKX0sTz1mdW5jdGlvbihlKXt2YXIgdD13KFwic2V0UmV0dXJuRm9jdXNcIixlKTtyZXR1cm4gdHx8ITEhPT10JiZlfSxMPWZ1bmN0aW9uKGUpe3ZhciB0PXAoZSk7bSh0KT49MHx8KGYoQy5jbGlja091dHNpZGVEZWFjdGl2YXRlcyxlKT9uLmRlYWN0aXZhdGUoe3JldHVybkZvY3VzOkMucmV0dXJuRm9jdXNPbkRlYWN0aXZhdGV9KTpmKEMuYWxsb3dPdXRzaWRlQ2xpY2ssZSl8fGUucHJldmVudERlZmF1bHQoKSl9LE09ZnVuY3Rpb24oZSl7dmFyIHQ9cChlKSxuPW0odCk+PTA7bnx8dCBpbnN0YW5jZW9mIERvY3VtZW50P24mJih2Lm1vc3RSZWNlbnRseUZvY3VzZWROb2RlPXQpOihlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHgodi5tb3N0UmVjZW50bHlGb2N1c2VkTm9kZXx8eSgpKSl9LFM9ZnVuY3Rpb24oZSl7aWYoKFwiRXNjYXBlXCI9PT0odD1lKS5rZXl8fFwiRXNjXCI9PT10LmtleXx8Mjc9PT10LmtleUNvZGUpJiYhMSE9PWYoQy5lc2NhcGVEZWFjdGl2YXRlcyxlKSlyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpLHZvaWQgbi5kZWFjdGl2YXRlKCk7dmFyIHQ7KEMuaXNLZXlGb3J3YXJkKGUpfHxDLmlzS2V5QmFja3dhcmQoZSkpJiZmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLG49cChlKTtiKCk7dmFyIG89bnVsbDtpZih2LnRhYmJhYmxlR3JvdXBzLmxlbmd0aD4wKXt2YXIgYT1tKG4pLGk9YT49MD92LmNvbnRhaW5lckdyb3Vwc1thXTp2b2lkIDA7aWYoYTwwKW89dD92LnRhYmJhYmxlR3JvdXBzW3YudGFiYmFibGVHcm91cHMubGVuZ3RoLTFdLmxhc3RUYWJiYWJsZU5vZGU6di50YWJiYWJsZUdyb3Vwc1swXS5maXJzdFRhYmJhYmxlTm9kZTtlbHNlIGlmKHQpe3ZhciBjPWQodi50YWJiYWJsZUdyb3VwcywoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5maXJzdFRhYmJhYmxlTm9kZTtyZXR1cm4gbj09PXR9KSk7aWYoYzwwJiYoaS5jb250YWluZXI9PT1ufHwoMCxyLmlzRm9jdXNhYmxlKShuLEMudGFiYmFibGVPcHRpb25zKSYmISgwLHIuaXNUYWJiYWJsZSkobixDLnRhYmJhYmxlT3B0aW9ucykmJiFpLm5leHRUYWJiYWJsZU5vZGUobiwhMSkpJiYoYz1hKSxjPj0wKXt2YXIgcz0wPT09Yz92LnRhYmJhYmxlR3JvdXBzLmxlbmd0aC0xOmMtMTtvPXYudGFiYmFibGVHcm91cHNbc10ubGFzdFRhYmJhYmxlTm9kZX1lbHNlIGwoZSl8fChvPWkubmV4dFRhYmJhYmxlTm9kZShuLCExKSl9ZWxzZXt2YXIgdT1kKHYudGFiYmFibGVHcm91cHMsKGZ1bmN0aW9uKGUpe3ZhciB0PWUubGFzdFRhYmJhYmxlTm9kZTtyZXR1cm4gbj09PXR9KSk7aWYodTwwJiYoaS5jb250YWluZXI9PT1ufHwoMCxyLmlzRm9jdXNhYmxlKShuLEMudGFiYmFibGVPcHRpb25zKSYmISgwLHIuaXNUYWJiYWJsZSkobixDLnRhYmJhYmxlT3B0aW9ucykmJiFpLm5leHRUYWJiYWJsZU5vZGUobikpJiYodT1hKSx1Pj0wKXt2YXIgZj11PT09di50YWJiYWJsZUdyb3Vwcy5sZW5ndGgtMT8wOnUrMTtvPXYudGFiYmFibGVHcm91cHNbZl0uZmlyc3RUYWJiYWJsZU5vZGV9ZWxzZSBsKGUpfHwobz1pLm5leHRUYWJiYWJsZU5vZGUobikpfX1lbHNlIG89dyhcImZhbGxiYWNrRm9jdXNcIik7byYmKGwoZSkmJmUucHJldmVudERlZmF1bHQoKSx4KG8pKX0oZSxDLmlzS2V5QmFja3dhcmQoZSkpfSxfPWZ1bmN0aW9uKGUpe3ZhciB0PXAoZSk7bSh0KT49MHx8ZihDLmNsaWNrT3V0c2lkZURlYWN0aXZhdGVzLGUpfHxmKEMuYWxsb3dPdXRzaWRlQ2xpY2ssZSl8fChlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSl9LGo9ZnVuY3Rpb24oKXtpZih2LmFjdGl2ZSlyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihlLmxlbmd0aD4wKXt2YXIgbj1lW2UubGVuZ3RoLTFdO24hPT10JiZuLnBhdXNlKCl9dmFyIHI9ZS5pbmRleE9mKHQpOy0xPT09cnx8ZS5zcGxpY2UociwxKSxlLnB1c2godCl9KGksbiksdi5kZWxheUluaXRpYWxGb2N1c1RpbWVyPUMuZGVsYXlJbml0aWFsRm9jdXM/dSgoZnVuY3Rpb24oKXt4KHkoKSl9KSk6eCh5KCkpLG8uYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzaW5cIixNLCEwKSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixMLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9KSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsTCx7Y2FwdHVyZTohMCxwYXNzaXZlOiExfSksby5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixfLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9KSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsUyx7Y2FwdHVyZTohMCxwYXNzaXZlOiExfSksbn0sRT1mdW5jdGlvbigpe2lmKHYuYWN0aXZlKXJldHVybiBvLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsTSwhMCksby5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsTCwhMCksby5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLEwsITApLG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsXywhMCksby5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLFMsITApLG59O3JldHVybihuPXtnZXQgYWN0aXZlKCl7cmV0dXJuIHYuYWN0aXZlfSxnZXQgcGF1c2VkKCl7cmV0dXJuIHYucGF1c2VkfSxhY3RpdmF0ZTpmdW5jdGlvbihlKXtpZih2LmFjdGl2ZSlyZXR1cm4gdGhpczt2YXIgdD1nKGUsXCJvbkFjdGl2YXRlXCIpLG49ZyhlLFwib25Qb3N0QWN0aXZhdGVcIikscj1nKGUsXCJjaGVja0NhbkZvY3VzVHJhcFwiKTtyfHxiKCksdi5hY3RpdmU9ITAsdi5wYXVzZWQ9ITEsdi5ub2RlRm9jdXNlZEJlZm9yZUFjdGl2YXRpb249by5hY3RpdmVFbGVtZW50LHQmJnQoKTt2YXIgYT1mdW5jdGlvbigpe3ImJmIoKSxqKCksbiYmbigpfTtyZXR1cm4gcj8ocih2LmNvbnRhaW5lcnMuY29uY2F0KCkpLnRoZW4oYSxhKSx0aGlzKTooYSgpLHRoaXMpfSxkZWFjdGl2YXRlOmZ1bmN0aW9uKGUpe2lmKCF2LmFjdGl2ZSlyZXR1cm4gdGhpczt2YXIgdD1hKHtvbkRlYWN0aXZhdGU6Qy5vbkRlYWN0aXZhdGUsb25Qb3N0RGVhY3RpdmF0ZTpDLm9uUG9zdERlYWN0aXZhdGUsY2hlY2tDYW5SZXR1cm5Gb2N1czpDLmNoZWNrQ2FuUmV0dXJuRm9jdXN9LGUpO2NsZWFyVGltZW91dCh2LmRlbGF5SW5pdGlhbEZvY3VzVGltZXIpLHYuZGVsYXlJbml0aWFsRm9jdXNUaW1lcj12b2lkIDAsRSgpLHYuYWN0aXZlPSExLHYucGF1c2VkPSExLGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5pbmRleE9mKHQpOy0xIT09biYmZS5zcGxpY2UobiwxKSxlLmxlbmd0aD4wJiZlW2UubGVuZ3RoLTFdLnVucGF1c2UoKX0oaSxuKTt2YXIgcj1nKHQsXCJvbkRlYWN0aXZhdGVcIiksbz1nKHQsXCJvblBvc3REZWFjdGl2YXRlXCIpLGw9Zyh0LFwiY2hlY2tDYW5SZXR1cm5Gb2N1c1wiKSxjPWcodCxcInJldHVybkZvY3VzXCIsXCJyZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZVwiKTtyJiZyKCk7dmFyIHM9ZnVuY3Rpb24oKXt1KChmdW5jdGlvbigpe2MmJngoTyh2Lm5vZGVGb2N1c2VkQmVmb3JlQWN0aXZhdGlvbikpLG8mJm8oKX0pKX07cmV0dXJuIGMmJmw/KGwoTyh2Lm5vZGVGb2N1c2VkQmVmb3JlQWN0aXZhdGlvbikpLnRoZW4ocyxzKSx0aGlzKToocygpLHRoaXMpfSxwYXVzZTpmdW5jdGlvbigpe3JldHVybiB2LnBhdXNlZHx8IXYuYWN0aXZlfHwodi5wYXVzZWQ9ITAsRSgpKSx0aGlzfSx1bnBhdXNlOmZ1bmN0aW9uKCl7cmV0dXJuIHYucGF1c2VkJiZ2LmFjdGl2ZT8odi5wYXVzZWQ9ITEsYigpLGooKSx0aGlzKTp0aGlzfSx1cGRhdGVDb250YWluZXJFbGVtZW50czpmdW5jdGlvbihlKXt2YXIgdD1bXS5jb25jYXQoZSkuZmlsdGVyKEJvb2xlYW4pO3JldHVybiB2LmNvbnRhaW5lcnM9dC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP28ucXVlcnlTZWxlY3RvcihlKTplfSkpLHYuYWN0aXZlJiZiKCksdGhpc319KS51cGRhdGVDb250YWluZXJFbGVtZW50cyhlKSxufX0sOTE0MTooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9big2NTUpLG89big2Njg5KSxhPW4oNDM5NCksaT1uKDM1NzMpLGw9big5Mjk0KSxjPW4oNDgzOSk7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJlwiZGVmYXVsdFwiaW4gZT9lOntkZWZhdWx0OmV9fXZhciB1PWZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBlJiZPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihuKXtpZihcImRlZmF1bHRcIiE9PW4pe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHIuZ2V0P3I6e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVbbl19fSl9fSkpLHQuZGVmYXVsdD1lLE9iamVjdC5mcmVlemUodCl9KG8pLGQ9cyhvKSxmPXMoYykscD1mdW5jdGlvbihlKXtyZXR1cm57aXNFbmFibGVkOmZ1bmN0aW9uKHQpe3JldHVybiBlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiEhdFtlXX0pKX19fSxoPXttZWFzdXJlTGF5b3V0OnAoW1wibGF5b3V0XCIsXCJsYXlvdXRJZFwiLFwiZHJhZ1wiLFwiX2xheW91dFJlc2V0VHJhbnNmb3JtXCJdKSxhbmltYXRpb246cChbXCJhbmltYXRlXCIsXCJleGl0XCIsXCJ2YXJpYW50c1wiLFwid2hpbGVIb3ZlclwiLFwid2hpbGVUYXBcIixcIndoaWxlRm9jdXNcIixcIndoaWxlRHJhZ1wiXSksZXhpdDpwKFtcImV4aXRcIl0pLGRyYWc6cChbXCJkcmFnXCIsXCJkcmFnQ29udHJvbHNcIl0pLGZvY3VzOnAoW1wid2hpbGVGb2N1c1wiXSksaG92ZXI6cChbXCJ3aGlsZUhvdmVyXCIsXCJvbkhvdmVyU3RhcnRcIixcIm9uSG92ZXJFbmRcIl0pLHRhcDpwKFtcIndoaWxlVGFwXCIsXCJvblRhcFwiLFwib25UYXBTdGFydFwiLFwib25UYXBDYW5jZWxcIl0pLHBhbjpwKFtcIm9uUGFuXCIsXCJvblBhblN0YXJ0XCIsXCJvblBhblNlc3Npb25TdGFydFwiLFwib25QYW5FbmRcIl0pLGxheW91dEFuaW1hdGlvbjpwKFtcImxheW91dFwiLFwibGF5b3V0SWRcIl0pfTtmdW5jdGlvbiBDKGUpe2Zvcih2YXIgdCBpbiBlKXt2YXIgbj1lW3RdO251bGwhPT1uJiYoaFt0XS5Db21wb25lbnQ9bil9fXZhciB2PW8uY3JlYXRlQ29udGV4dCh7c3RyaWN0OiExfSksZz1PYmplY3Qua2V5cyhoKSxtPWcubGVuZ3RoLHc9by5jcmVhdGVDb250ZXh0KHt0cmFuc2Zvcm1QYWdlUG9pbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGlzU3RhdGljOiExfSkseT1vLmNyZWF0ZUNvbnRleHQoe30pO2Z1bmN0aW9uIGIoKXtyZXR1cm4gby51c2VDb250ZXh0KHkpLnZpc3VhbEVsZW1lbnR9dmFyIHg9by5jcmVhdGVDb250ZXh0KG51bGwpO2Z1bmN0aW9uIE8oZSl7dmFyIHQ9by51c2VSZWYobnVsbCk7cmV0dXJuIG51bGw9PT10LmN1cnJlbnQmJih0LmN1cnJlbnQ9ZSgpKSx0LmN1cnJlbnR9ZnVuY3Rpb24gTCgpe3ZhciBlPW8udXNlQ29udGV4dCh4KTtpZihudWxsPT09ZSlyZXR1cm5bITAsbnVsbF07dmFyIHQ9ZS5pc1ByZXNlbnQsbj1lLm9uRXhpdENvbXBsZXRlLHI9ZS5yZWdpc3RlcixhPWooKTtyZXR1cm4gby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHIoYSl9KSxbXSksIXQmJm4/WyExLGZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PW4/dm9pZCAwOm4oYSl9XTpbITBdfWZ1bmN0aW9uIE0oZSl7cmV0dXJuIG51bGw9PT1lfHxlLmlzUHJlc2VudH12YXIgUz0wLF89ZnVuY3Rpb24oKXtyZXR1cm4gUysrfSxqPWZ1bmN0aW9uKCl7cmV0dXJuIE8oXyl9LEU9by5jcmVhdGVDb250ZXh0KG51bGwpLFA9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyxrPVA/by51c2VMYXlvdXRFZmZlY3Q6by51c2VFZmZlY3Q7ZnVuY3Rpb24gSChlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsXCJjdXJyZW50XCIpfWZ1bmN0aW9uIFYoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl9ZnVuY3Rpb24gUihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZXx8VihlKX1mdW5jdGlvbiBJKGUsdCxuLHIsbyl7dmFyIGE7cmV0dXJuIHZvaWQgMD09PXImJihyPXt9KSx2b2lkIDA9PT1vJiYobz17fSksXCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PW51bGw9PT0oYT1lLnZhcmlhbnRzKXx8dm9pZCAwPT09YT92b2lkIDA6YVt0XSksXCJmdW5jdGlvblwiPT10eXBlb2YgdD90KG51bGwhPW4/bjplLmN1c3RvbSxyLG8pOnR9ZnVuY3Rpb24gWihlLHQsbil7dmFyIHI9ZS5nZXRQcm9wcygpO3JldHVybiBJKHIsdCxudWxsIT1uP246ci5jdXN0b20sZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGUuZm9yRWFjaFZhbHVlKChmdW5jdGlvbihlLG4pe3JldHVybiB0W25dPWUuZ2V0KCl9KSksdH0oZSksZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGUuZm9yRWFjaFZhbHVlKChmdW5jdGlvbihlLG4pe3JldHVybiB0W25dPWUuZ2V0VmVsb2NpdHkoKX0pKSx0fShlKSl9ZnVuY3Rpb24gQShlKXt2YXIgdDtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZihudWxsPT09KHQ9ZS5hbmltYXRlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5zdGFydCl8fFIoZS5pbml0aWFsKXx8UihlLmFuaW1hdGUpfHxSKGUud2hpbGVIb3Zlcil8fFIoZS53aGlsZURyYWcpfHxSKGUud2hpbGVUYXApfHxSKGUud2hpbGVGb2N1cyl8fFIoZS5leGl0KX1mdW5jdGlvbiBEKGUpe3JldHVybiBCb29sZWFuKEEoZSl8fGUudmFyaWFudHMpfWZ1bmN0aW9uIEIoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5qb2luKFwiIFwiKTplfWZ1bmN0aW9uIFQoZSl7dmFyIHQ9ZS5wcmVsb2FkZWRGZWF0dXJlcyxuPWUuY3JlYXRlVmlzdWFsRWxlbWVudCxhPWUudXNlUmVuZGVyLGk9ZS51c2VWaXN1YWxTdGF0ZSxsPWUuQ29tcG9uZW50O3JldHVybiB0JiZDKHQpLG8uZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgYz1vLnVzZUNvbnRleHQodykuaXNTdGF0aWMscz1udWxsLGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1mdW5jdGlvbihlLHQpe2lmKEEoZSkpe3ZhciBuPWUuaW5pdGlhbCxyPWUuYW5pbWF0ZTtyZXR1cm57aW5pdGlhbDohMT09PW58fFIobik/bjp2b2lkIDAsYW5pbWF0ZTpSKHIpP3I6dm9pZCAwfX1yZXR1cm4hMSE9PWUuaW5oZXJpdD90Ont9fShlLG8udXNlQ29udGV4dCh5KSkscj1uLmluaXRpYWwsYT1uLmFuaW1hdGU7cmV0dXJuIG8udXNlTWVtbygoZnVuY3Rpb24oKXtyZXR1cm57aW5pdGlhbDpyLGFuaW1hdGU6YX19KSx0P1tCKHIpLEIoYSldOltdKX0oZSxjKSxmPWkoZSxjKTtyZXR1cm4hYyYmUCYmKGQudmlzdWFsRWxlbWVudD1mdW5jdGlvbihlLHQsbixhKXt2YXIgaT1vLnVzZUNvbnRleHQodyksbD1vLnVzZUNvbnRleHQodiksYz1iKCkscz1vLnVzZUNvbnRleHQoeCksdT1mdW5jdGlvbihlKXt2YXIgdD1lLmxheW91dElkLG49by51c2VDb250ZXh0KEUpO3JldHVybiBuJiZ2b2lkIDAhPT10P24rXCItXCIrdDp0fShuKSxkPW8udXNlUmVmKHZvaWQgMCk7YXx8KGE9bC5yZW5kZXJlciksIWQuY3VycmVudCYmYSYmKGQuY3VycmVudD1hKGUse3Zpc3VhbFN0YXRlOnQscGFyZW50OmMscHJvcHM6ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG4pLHtsYXlvdXRJZDp1fSkscHJlc2VuY2VJZDpudWxsPT1zP3ZvaWQgMDpzLmlkLGJsb2NrSW5pdGlhbEFuaW1hdGlvbjohMT09PShudWxsPT1zP3ZvaWQgMDpzLmluaXRpYWwpfSkpO3ZhciBmPWQuY3VycmVudDtyZXR1cm4gaygoZnVuY3Rpb24oKXtmJiYoZi5zZXRQcm9wcyhyLl9fYXNzaWduKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxpKSxuKSx7bGF5b3V0SWQ6dX0pKSxmLmlzUHJlc2VudD1NKHMpLGYuaXNQcmVzZW5jZVJvb3Q9IWN8fGMucHJlc2VuY2VJZCE9PShudWxsPT1zP3ZvaWQgMDpzLmlkKSxmLnN5bmNSZW5kZXIoKSl9KSksby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7dmFyIGU7ZiYmKG51bGw9PT0oZT1mLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09ZXx8ZS5hbmltYXRlQ2hhbmdlcygpKX0pKSxrKChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBudWxsPT1mP3ZvaWQgMDpmLm5vdGlmeVVubW91bnQoKX19KSxbXSksZn0obCxmLGUsbikscz1mdW5jdGlvbihlLHQsbil7dmFyIGE9W107aWYoby51c2VDb250ZXh0KHYpLCF0KXJldHVybiBudWxsO2Zvcih2YXIgaT0wO2k8bTtpKyspe3ZhciBsPWdbaV0sYz1oW2xdLHM9Yy5pc0VuYWJsZWQsZD1jLkNvbXBvbmVudDtzKGUpJiZkJiZhLnB1c2godS5jcmVhdGVFbGVtZW50KGQsci5fX2Fzc2lnbih7a2V5Omx9LGUse3Zpc3VhbEVsZW1lbnQ6dH0pKSl9cmV0dXJuIGF9KGUsZC52aXN1YWxFbGVtZW50KSksdS5jcmVhdGVFbGVtZW50KHUuRnJhZ21lbnQsbnVsbCx1LmNyZWF0ZUVsZW1lbnQoeS5Qcm92aWRlcix7dmFsdWU6ZH0sYShsLGUsZnVuY3Rpb24oZSx0LG4pe3JldHVybiBvLnVzZUNhbGxiYWNrKChmdW5jdGlvbihyKXt2YXIgbztyJiYobnVsbD09PShvPWUubW91bnQpfHx2b2lkIDA9PT1vfHxvLmNhbGwoZSxyKSksdCYmKHI/dC5tb3VudChyKTp0LnVubW91bnQoKSksbiYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4/bihyKTpIKG4pJiYobi5jdXJyZW50PXIpKX0pLFt0XSl9KGYsZC52aXN1YWxFbGVtZW50LHQpLGYsYykpLHMpfSkpfWZ1bmN0aW9uICQoZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj17fSksVChlKHQsbikpfXZhciBuPW5ldyBNYXA7cmV0dXJuIG5ldyBQcm94eSh0LHtnZXQ6ZnVuY3Rpb24oZSxyKXtyZXR1cm4gbi5oYXMocil8fG4uc2V0KHIsdChyKSksbi5nZXQocil9fSl9dmFyIEY9W1wiYW5pbWF0ZVwiLFwiY2lyY2xlXCIsXCJkZWZzXCIsXCJkZXNjXCIsXCJlbGxpcHNlXCIsXCJnXCIsXCJpbWFnZVwiLFwibGluZVwiLFwiZmlsdGVyXCIsXCJtYXJrZXJcIixcIm1hc2tcIixcIm1ldGFkYXRhXCIsXCJwYXRoXCIsXCJwYXR0ZXJuXCIsXCJwb2x5Z29uXCIsXCJwb2x5bGluZVwiLFwicmVjdFwiLFwic3RvcFwiLFwic3ZnXCIsXCJzd2l0Y2hcIixcInN5bWJvbFwiLFwidGV4dFwiLFwidHNwYW5cIixcInVzZVwiLFwidmlld1wiXTtmdW5jdGlvbiBXKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiYhZS5pbmNsdWRlcyhcIi1cIikmJiEhKEYuaW5kZXhPZihlKT4tMXx8L1tBLVpdLy50ZXN0KGUpKX12YXIgTj17fTtmdW5jdGlvbiB6KGUpe2Zvcih2YXIgdCBpbiBlKU5bdF09ZVt0XX12YXIgVT1bXCJcIixcIlhcIixcIllcIixcIlpcIl0sRz1bXCJ0cmFuc2Zvcm1QZXJzcGVjdGl2ZVwiLFwieFwiLFwieVwiLFwielwiXTtmdW5jdGlvbiBxKGUsdCl7cmV0dXJuIEcuaW5kZXhPZihlKS1HLmluZGV4T2YodCl9W1widHJhbnNsYXRlXCIsXCJzY2FsZVwiLFwicm90YXRlXCIsXCJza2V3XCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBVLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBHLnB1c2goZSt0KX0pKX0pKTt2YXIgWT1uZXcgU2V0KEcpO2Z1bmN0aW9uIEsoZSl7cmV0dXJuIFkuaGFzKGUpfXZhciBYPW5ldyBTZXQoW1wib3JpZ2luWFwiLFwib3JpZ2luWVwiLFwib3JpZ2luWlwiXSk7ZnVuY3Rpb24gUShlKXtyZXR1cm4gWC5oYXMoZSl9ZnVuY3Rpb24gSihlLHQpe3ZhciBuPXQubGF5b3V0LHI9dC5sYXlvdXRJZDtyZXR1cm4gSyhlKXx8UShlKXx8KG58fHZvaWQgMCE9PXIpJiYoISFOW2VdfHxcIm9wYWNpdHlcIj09PWUpfXZhciBlZT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZlLmdldFZlbG9jaXR5fSx0ZT17eDpcInRyYW5zbGF0ZVhcIix5OlwidHJhbnNsYXRlWVwiLHo6XCJ0cmFuc2xhdGVaXCIsdHJhbnNmb3JtUGVyc3BlY3RpdmU6XCJwZXJzcGVjdGl2ZVwifTtmdW5jdGlvbiBuZShlKXtyZXR1cm4gZS5zdGFydHNXaXRoKFwiLS1cIil9dmFyIHJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQmJlwibnVtYmVyXCI9PXR5cGVvZiBlP3QudHJhbnNmb3JtKGUpOmV9LG9lPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxpLm51bWJlcikse3RyYW5zZm9ybTpNYXRoLnJvdW5kfSksYWU9e2JvcmRlcldpZHRoOmkucHgsYm9yZGVyVG9wV2lkdGg6aS5weCxib3JkZXJSaWdodFdpZHRoOmkucHgsYm9yZGVyQm90dG9tV2lkdGg6aS5weCxib3JkZXJMZWZ0V2lkdGg6aS5weCxib3JkZXJSYWRpdXM6aS5weCxyYWRpdXM6aS5weCxib3JkZXJUb3BMZWZ0UmFkaXVzOmkucHgsYm9yZGVyVG9wUmlnaHRSYWRpdXM6aS5weCxib3JkZXJCb3R0b21SaWdodFJhZGl1czppLnB4LGJvcmRlckJvdHRvbUxlZnRSYWRpdXM6aS5weCx3aWR0aDppLnB4LG1heFdpZHRoOmkucHgsaGVpZ2h0OmkucHgsbWF4SGVpZ2h0OmkucHgsc2l6ZTppLnB4LHRvcDppLnB4LHJpZ2h0OmkucHgsYm90dG9tOmkucHgsbGVmdDppLnB4LHBhZGRpbmc6aS5weCxwYWRkaW5nVG9wOmkucHgscGFkZGluZ1JpZ2h0OmkucHgscGFkZGluZ0JvdHRvbTppLnB4LHBhZGRpbmdMZWZ0OmkucHgsbWFyZ2luOmkucHgsbWFyZ2luVG9wOmkucHgsbWFyZ2luUmlnaHQ6aS5weCxtYXJnaW5Cb3R0b206aS5weCxtYXJnaW5MZWZ0OmkucHgscm90YXRlOmkuZGVncmVlcyxyb3RhdGVYOmkuZGVncmVlcyxyb3RhdGVZOmkuZGVncmVlcyxyb3RhdGVaOmkuZGVncmVlcyxzY2FsZTppLnNjYWxlLHNjYWxlWDppLnNjYWxlLHNjYWxlWTppLnNjYWxlLHNjYWxlWjppLnNjYWxlLHNrZXc6aS5kZWdyZWVzLHNrZXdYOmkuZGVncmVlcyxza2V3WTppLmRlZ3JlZXMsZGlzdGFuY2U6aS5weCx0cmFuc2xhdGVYOmkucHgsdHJhbnNsYXRlWTppLnB4LHRyYW5zbGF0ZVo6aS5weCx4OmkucHgseTppLnB4LHo6aS5weCxwZXJzcGVjdGl2ZTppLnB4LHRyYW5zZm9ybVBlcnNwZWN0aXZlOmkucHgsb3BhY2l0eTppLmFscGhhLG9yaWdpblg6aS5wcm9ncmVzc1BlcmNlbnRhZ2Usb3JpZ2luWTppLnByb2dyZXNzUGVyY2VudGFnZSxvcmlnaW5aOmkucHgsekluZGV4Om9lLGZpbGxPcGFjaXR5OmkuYWxwaGEsc3Ryb2tlT3BhY2l0eTppLmFscGhhLG51bU9jdGF2ZXM6b2V9O2Z1bmN0aW9uIGllKGUsdCxuLHIsbyxhLGksbCl7dmFyIGMscz1lLnN0eWxlLHU9ZS52YXJzLGQ9ZS50cmFuc2Zvcm0sZj1lLnRyYW5zZm9ybUtleXMscD1lLnRyYW5zZm9ybU9yaWdpbjtmLmxlbmd0aD0wO3ZhciBoPSExLEM9ITEsdj0hMDtmb3IodmFyIGcgaW4gdCl7dmFyIG09dFtnXTtpZihuZShnKSl1W2ddPW07ZWxzZXt2YXIgdz1hZVtnXSx5PXJlKG0sdyk7aWYoSyhnKSl7aWYoaD0hMCxkW2ddPXksZi5wdXNoKGcpLCF2KWNvbnRpbnVlO20hPT0obnVsbCE9PShjPXcuZGVmYXVsdCkmJnZvaWQgMCE9PWM/YzowKSYmKHY9ITEpfWVsc2UgaWYoUShnKSlwW2ddPXksQz0hMDtlbHNlIGlmKChudWxsPT1uP3ZvaWQgMDpuLmlzSHlkcmF0ZWQpJiYobnVsbD09cj92b2lkIDA6ci5pc0h5ZHJhdGVkKSYmTltnXSl7dmFyIGI9TltnXS5wcm9jZXNzKG0scixuKSx4PU5bZ10uYXBwbHlUbztpZih4KWZvcih2YXIgTz14Lmxlbmd0aCxMPTA7TDxPO0wrKylzW3hbTF1dPWI7ZWxzZSBzW2ddPWJ9ZWxzZSBzW2ddPXl9fXImJm4mJmkmJmw/KHMudHJhbnNmb3JtPWkoci5kZWx0YUZpbmFsLHIudHJlZVNjYWxlLGg/ZDp2b2lkIDApLGEmJihzLnRyYW5zZm9ybT1hKGQscy50cmFuc2Zvcm0pKSxzLnRyYW5zZm9ybU9yaWdpbj1sKHIpKTooaCYmKHMudHJhbnNmb3JtPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPWUudHJhbnNmb3JtLGE9ZS50cmFuc2Zvcm1LZXlzLGk9dC5lbmFibGVIYXJkd2FyZUFjY2VsZXJhdGlvbixsPXZvaWQgMD09PWl8fGksYz10LmFsbG93VHJhbnNmb3JtTm9uZSxzPXZvaWQgMD09PWN8fGMsdT1cIlwiO2Euc29ydChxKTtmb3IodmFyIGQ9ITEsZj1hLmxlbmd0aCxwPTA7cDxmO3ArKyl7dmFyIGg9YVtwXTt1Kz0odGVbaF18fGgpK1wiKFwiK29baF0rXCIpIFwiLFwielwiPT09aCYmKGQ9ITApfXJldHVybiFkJiZsP3UrPVwidHJhbnNsYXRlWigwKVwiOnU9dS50cmltKCkscj91PXIobyxuP1wiXCI6dSk6cyYmbiYmKHU9XCJub25lXCIpLHV9KGUsbyx2LGEpKSxDJiYocy50cmFuc2Zvcm1PcmlnaW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcmlnaW5YLG49dm9pZCAwPT09dD9cIjUwJVwiOnQscj1lLm9yaWdpblksbz12b2lkIDA9PT1yP1wiNTAlXCI6cixhPWUub3JpZ2luWjtyZXR1cm4gbitcIiBcIitvK1wiIFwiKyh2b2lkIDA9PT1hPzA6YSl9KHApKSl9dmFyIGxlPWZ1bmN0aW9uKCl7cmV0dXJue3N0eWxlOnt9LHRyYW5zZm9ybTp7fSx0cmFuc2Zvcm1LZXlzOltdLHRyYW5zZm9ybU9yaWdpbjp7fSx2YXJzOnt9fX07ZnVuY3Rpb24gY2UoZSx0LG4pe2Zvcih2YXIgciBpbiB0KWVlKHRbcl0pfHxKKHIsbil8fChlW3JdPXRbcl0pfWZ1bmN0aW9uIHNlKGUsdCxuKXt2YXIgYT17fSxpPWZ1bmN0aW9uKGUsdCxuKXt2YXIgYT17fTtyZXR1cm4gY2UoYSxlLnN0eWxlfHx7fSxlKSxPYmplY3QuYXNzaWduKGEsZnVuY3Rpb24oZSx0LG4pe3ZhciBhPWUudHJhbnNmb3JtVGVtcGxhdGU7cmV0dXJuIG8udXNlTWVtbygoZnVuY3Rpb24oKXt2YXIgZT1sZSgpO2llKGUsdCx2b2lkIDAsdm9pZCAwLHtlbmFibGVIYXJkd2FyZUFjY2VsZXJhdGlvbjohbn0sYSk7dmFyIG89ZS52YXJzLGk9ZS5zdHlsZTtyZXR1cm4gci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG8pLGkpfSksW3RdKX0oZSx0LG4pKSxlLnRyYW5zZm9ybVZhbHVlcyYmKGE9ZS50cmFuc2Zvcm1WYWx1ZXMoYSkpLGF9KGUsdCxuKTtyZXR1cm4gQm9vbGVhbihlLmRyYWcpJiYoYS5kcmFnZ2FibGU9ITEsaS51c2VyU2VsZWN0PWkuV2Via2l0VXNlclNlbGVjdD1pLldlYmtpdFRvdWNoQ2FsbG91dD1cIm5vbmVcIixpLnRvdWNoQWN0aW9uPSEwPT09ZS5kcmFnP1wibm9uZVwiOlwicGFuLVwiKyhcInhcIj09PWUuZHJhZz9cInlcIjpcInhcIikpLGEuc3R5bGU9aSxhfXZhciB1ZT1uZXcgU2V0KFtcImluaXRpYWxcIixcImFuaW1hdGVcIixcImV4aXRcIixcInN0eWxlXCIsXCJ2YXJpYW50c1wiLFwidHJhbnNpdGlvblwiLFwidHJhbnNmb3JtVGVtcGxhdGVcIixcInRyYW5zZm9ybVZhbHVlc1wiLFwiY3VzdG9tXCIsXCJpbmhlcml0XCIsXCJsYXlvdXRcIixcImxheW91dElkXCIsXCJfbGF5b3V0UmVzZXRUcmFuc2Zvcm1cIixcIm9uTGF5b3V0QW5pbWF0aW9uQ29tcGxldGVcIixcIm9uVmlld3BvcnRCb3hVcGRhdGVcIixcIm9uTGF5b3V0TWVhc3VyZVwiLFwib25CZWZvcmVMYXlvdXRNZWFzdXJlXCIsXCJvbkFuaW1hdGlvblN0YXJ0XCIsXCJvbkFuaW1hdGlvbkNvbXBsZXRlXCIsXCJvblVwZGF0ZVwiLFwib25EcmFnU3RhcnRcIixcIm9uRHJhZ1wiLFwib25EcmFnRW5kXCIsXCJvbk1lYXN1cmVEcmFnQ29uc3RyYWludHNcIixcIm9uRGlyZWN0aW9uTG9ja1wiLFwib25EcmFnVHJhbnNpdGlvbkVuZFwiLFwiZHJhZ1wiLFwiZHJhZ0NvbnRyb2xzXCIsXCJkcmFnTGlzdGVuZXJcIixcImRyYWdDb25zdHJhaW50c1wiLFwiZHJhZ0RpcmVjdGlvbkxvY2tcIixcIl9kcmFnWFwiLFwiX2RyYWdZXCIsXCJkcmFnRWxhc3RpY1wiLFwiZHJhZ01vbWVudHVtXCIsXCJkcmFnUHJvcGFnYXRpb25cIixcImRyYWdUcmFuc2l0aW9uXCIsXCJ3aGlsZURyYWdcIixcIm9uUGFuXCIsXCJvblBhblN0YXJ0XCIsXCJvblBhbkVuZFwiLFwib25QYW5TZXNzaW9uU3RhcnRcIixcIm9uVGFwXCIsXCJvblRhcFN0YXJ0XCIsXCJvblRhcENhbmNlbFwiLFwib25Ib3ZlclN0YXJ0XCIsXCJvbkhvdmVyRW5kXCIsXCJ3aGlsZUZvY3VzXCIsXCJ3aGlsZVRhcFwiLFwid2hpbGVIb3ZlclwiXSk7ZnVuY3Rpb24gZGUoZSl7cmV0dXJuIHVlLmhhcyhlKX12YXIgZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIWRlKGUpfTt0cnl7dmFyIHBlPW4oODU5NCkuWjtmZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zdGFydHNXaXRoKFwib25cIik/IWRlKGUpOnBlKGUpfX1jYXRjaChlKXt9ZnVuY3Rpb24gaGUoZSx0LG4pe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP2U6aS5weC50cmFuc2Zvcm0odCtuKmUpfXZhciBDZT1mdW5jdGlvbihlLHQpe3JldHVybiBpLnB4LnRyYW5zZm9ybShlKnQpfSx2ZT17b2Zmc2V0Olwic3Ryb2tlLWRhc2hvZmZzZXRcIixhcnJheTpcInN0cm9rZS1kYXNoYXJyYXlcIn0sZ2U9e29mZnNldDpcInN0cm9rZURhc2hvZmZzZXRcIixhcnJheTpcInN0cm9rZURhc2hhcnJheVwifTtmdW5jdGlvbiBtZShlLHQsbixvLGEsaSxsLGMpe3ZhciBzPXQuYXR0clgsdT10LmF0dHJZLGQ9dC5vcmlnaW5YLGY9dC5vcmlnaW5ZLHA9dC5wYXRoTGVuZ3RoLGg9dC5wYXRoU3BhY2luZyxDPXZvaWQgMD09PWg/MTpoLHY9dC5wYXRoT2Zmc2V0LGc9dm9pZCAwPT09dj8wOnY7aWUoZSxyLl9fcmVzdCh0LFtcImF0dHJYXCIsXCJhdHRyWVwiLFwib3JpZ2luWFwiLFwib3JpZ2luWVwiLFwicGF0aExlbmd0aFwiLFwicGF0aFNwYWNpbmdcIixcInBhdGhPZmZzZXRcIl0pLG4sbyxhLGksbCxjKSxlLmF0dHJzPWUuc3R5bGUsZS5zdHlsZT17fTt2YXIgbT1lLmF0dHJzLHc9ZS5zdHlsZSx5PWUuZGltZW5zaW9ucyxiPWUudG90YWxQYXRoTGVuZ3RoO20udHJhbnNmb3JtJiYoeSYmKHcudHJhbnNmb3JtPW0udHJhbnNmb3JtKSxkZWxldGUgbS50cmFuc2Zvcm0pLHkmJih2b2lkIDAhPT1kfHx2b2lkIDAhPT1mfHx3LnRyYW5zZm9ybSkmJih3LnRyYW5zZm9ybU9yaWdpbj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGhlKHQsZS54LGUud2lkdGgpK1wiIFwiK2hlKG4sZS55LGUuaGVpZ2h0KX0oeSx2b2lkIDAhPT1kP2Q6LjUsdm9pZCAwIT09Zj9mOi41KSksdm9pZCAwIT09cyYmKG0ueD1zKSx2b2lkIDAhPT11JiYobS55PXUpLHZvaWQgMCE9PWImJnZvaWQgMCE9PXAmJmZ1bmN0aW9uKGUsdCxuLHIsbyxhKXt2b2lkIDA9PT1yJiYocj0xKSx2b2lkIDA9PT1vJiYobz0wKSx2b2lkIDA9PT1hJiYoYT0hMCk7dmFyIGk9YT92ZTpnZTtlW2kub2Zmc2V0XT1DZSgtbyx0KTt2YXIgbD1DZShuLHQpLGM9Q2Uocix0KTtlW2kuYXJyYXldPWwrXCIgXCIrY30obSxiLHAsQyxnLCExKX12YXIgd2U9ZnVuY3Rpb24oKXtyZXR1cm4gci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGxlKCkpLHthdHRyczp7fX0pfTtmdW5jdGlvbiB5ZShlLHQpe3ZhciBuPW8udXNlTWVtbygoZnVuY3Rpb24oKXt2YXIgbj13ZSgpO3JldHVybiBtZShuLHQsdm9pZCAwLHZvaWQgMCx7ZW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRpb246ITF9LGUudHJhbnNmb3JtVGVtcGxhdGUpLHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxuLmF0dHJzKSx7c3R5bGU6ci5fX2Fzc2lnbih7fSxuLnN0eWxlKX0pfSksW3RdKTtpZihlLnN0eWxlKXt2YXIgYT17fTtjZShhLGUuc3R5bGUsZSksbi5zdHlsZT1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sYSksbi5zdHlsZSl9cmV0dXJuIG59ZnVuY3Rpb24gYmUoZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSxmdW5jdGlvbih0LG4sYSxpLGwpe3ZhciBjPWkubGF0ZXN0VmFsdWVzLHM9KFcodCk/eWU6c2UpKG4sYyxsKSx1PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17fTtmb3IodmFyIG8gaW4gZSkoZmUobyl8fCEwPT09biYmZGUobyl8fCF0JiYhZGUobykpJiYocltvXT1lW29dKTtyZXR1cm4gcn0obixcInN0cmluZ1wiPT10eXBlb2YgdCxlKSxkPXIuX19hc3NpZ24oci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHUpLHMpLHtyZWY6YX0pO3JldHVybiBvLmNyZWF0ZUVsZW1lbnQodCxkKX19dmFyIHhlPS8oW2Etel0pKFtBLVpdKS9nLE9lPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoeGUsXCIkMS0kMlwiKS50b0xvd2VyQ2FzZSgpfTtmdW5jdGlvbiBMZShlLHQpe3ZhciBuPXQuc3R5bGUscj10LnZhcnM7Zm9yKHZhciBvIGluIE9iamVjdC5hc3NpZ24oZS5zdHlsZSxuKSxyKWUuc3R5bGUuc2V0UHJvcGVydHkobyxyW29dKX12YXIgTWU9bmV3IFNldChbXCJiYXNlRnJlcXVlbmN5XCIsXCJkaWZmdXNlQ29uc3RhbnRcIixcImtlcm5lbE1hdHJpeFwiLFwia2VybmVsVW5pdExlbmd0aFwiLFwia2V5U3BsaW5lc1wiLFwia2V5VGltZXNcIixcImxpbWl0aW5nQ29uZUFuZ2xlXCIsXCJtYXJrZXJIZWlnaHRcIixcIm1hcmtlcldpZHRoXCIsXCJudW1PY3RhdmVzXCIsXCJ0YXJnZXRYXCIsXCJ0YXJnZXRZXCIsXCJzdXJmYWNlU2NhbGVcIixcInNwZWN1bGFyQ29uc3RhbnRcIixcInNwZWN1bGFyRXhwb25lbnRcIixcInN0ZERldmlhdGlvblwiLFwidGFibGVWYWx1ZXNcIixcInZpZXdCb3hcIixcImdyYWRpZW50VHJhbnNmb3JtXCJdKTtmdW5jdGlvbiBTZShlLHQpe2Zvcih2YXIgbiBpbiBMZShlLHQpLHQuYXR0cnMpZS5zZXRBdHRyaWJ1dGUoTWUuaGFzKG4pP246T2UobiksdC5hdHRyc1tuXSl9ZnVuY3Rpb24gX2UoZSl7dmFyIHQ9ZS5zdHlsZSxuPXt9O2Zvcih2YXIgciBpbiB0KShlZSh0W3JdKXx8SihyLGUpKSYmKG5bcl09dFtyXSk7cmV0dXJuIG59ZnVuY3Rpb24gamUoZSl7dmFyIHQ9X2UoZSk7Zm9yKHZhciBuIGluIGUpZWUoZVtuXSkmJih0W1wieFwiPT09bnx8XCJ5XCI9PT1uP1wiYXR0clwiK24udG9VcHBlckNhc2UoKTpuXT1lW25dKTtyZXR1cm4gdH1mdW5jdGlvbiBFZShlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5zdGFydH12YXIgUGU9ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl9LGtlPWZ1bmN0aW9uKGUpe3JldHVybiBCb29sZWFuKGUmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZlLm1peCYmZS50b1ZhbHVlKX0sSGU9ZnVuY3Rpb24oZSl7cmV0dXJuIFBlKGUpP2VbZS5sZW5ndGgtMV18fDA6ZX07ZnVuY3Rpb24gVmUoZSl7dmFyIHQ9ZWUoZSk/ZS5nZXQoKTplO3JldHVybiBrZSh0KT90LnRvVmFsdWUoKTp0fWZ1bmN0aW9uIFJlKGUsdCxuLHIpe3ZhciBvPWUuc2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzLGE9ZS5jcmVhdGVSZW5kZXJTdGF0ZSxpPWUub25Nb3VudCxsPXtsYXRlc3RWYWx1ZXM6WmUodCxuLHIsbykscmVuZGVyU3RhdGU6YSgpfTtyZXR1cm4gaSYmKGwubW91bnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGkodCxlLGwpfSksbH12YXIgSWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIHI9by51c2VDb250ZXh0KHkpLGE9by51c2VDb250ZXh0KHgpO3JldHVybiBuP1JlKGUsdCxyLGEpOk8oKGZ1bmN0aW9uKCl7cmV0dXJuIFJlKGUsdCxyLGEpfSkpfX07ZnVuY3Rpb24gWmUoZSx0LG4sbyl7dmFyIGE9e30saT0hMT09PShudWxsPT1uP3ZvaWQgMDpuLmluaXRpYWwpLGw9byhlKTtmb3IodmFyIGMgaW4gbClhW2NdPVZlKGxbY10pO3ZhciBzPWUuaW5pdGlhbCx1PWUuYW5pbWF0ZSxkPUEoZSksZj1EKGUpO3QmJmYmJiFkJiYhMSE9PWUuaW5oZXJpdCYmKG51bGwhPXN8fChzPXQuaW5pdGlhbCksbnVsbCE9dXx8KHU9dC5hbmltYXRlKSk7dmFyIHA9aXx8ITE9PT1zP3U6cztyZXR1cm4gcCYmXCJib29sZWFuXCIhPXR5cGVvZiBwJiYhRWUocCkmJihBcnJheS5pc0FycmF5KHApP3A6W3BdKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj1JKGUsdCk7aWYobil7dmFyIG89bi50cmFuc2l0aW9uRW5kO24udHJhbnNpdGlvbjt2YXIgaT1yLl9fcmVzdChuLFtcInRyYW5zaXRpb25FbmRcIixcInRyYW5zaXRpb25cIl0pO2Zvcih2YXIgbCBpbiBpKWFbbF09aVtsXTtmb3IodmFyIGwgaW4gbylhW2xdPW9bbF19fSkpLGF9dmFyIEFlLERlPXt1c2VWaXN1YWxTdGF0ZTpJZSh7c2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzOmplLGNyZWF0ZVJlbmRlclN0YXRlOndlLG9uTW91bnQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4ucmVuZGVyU3RhdGUsbz1uLmxhdGVzdFZhbHVlczt0cnl7ci5kaW1lbnNpb25zPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZ2V0QkJveD90LmdldEJCb3goKTp0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWNhdGNoKGUpe3IuZGltZW5zaW9ucz17eDowLHk6MCx3aWR0aDowLGhlaWdodDowfX1cInBhdGhcIj09PXQudGFnTmFtZSYmKHIudG90YWxQYXRoTGVuZ3RoPXQuZ2V0VG90YWxMZW5ndGgoKSksbWUocixvLHZvaWQgMCx2b2lkIDAse2VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0aW9uOiExfSxlLnRyYW5zZm9ybVRlbXBsYXRlKSxTZSh0LHIpfX0pfSxCZT17dXNlVmlzdWFsU3RhdGU6SWUoe3NjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczpfZSxjcmVhdGVSZW5kZXJTdGF0ZTpsZX0pfTtmdW5jdGlvbiBUZShlLHQsbixvKXt2YXIgYT10LmZvcndhcmRNb3Rpb25Qcm9wcyxpPXZvaWQgMCE9PWEmJmEsbD1XKGUpP0RlOkJlO3JldHVybiByLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbCkse3ByZWxvYWRlZEZlYXR1cmVzOm4sdXNlUmVuZGVyOmJlKGkpLGNyZWF0ZVZpc3VhbEVsZW1lbnQ6byxDb21wb25lbnQ6ZX0pfWZ1bmN0aW9uICRlKGUsdCxuLHIpe3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIodCxuLHIpLGZ1bmN0aW9uKCl7cmV0dXJuIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4scil9fWZ1bmN0aW9uIEZlKGUsdCxuLHIpe28udXNlRWZmZWN0KChmdW5jdGlvbigpe3ZhciBvPWUuY3VycmVudDtpZihuJiZvKXJldHVybiAkZShvLHQsbixyKX0pLFtlLHQsbixyXSl9ZnVuY3Rpb24gV2UoZSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFBvaW50ZXJFdmVudCYmZSBpbnN0YW5jZW9mIFBvaW50ZXJFdmVudD8hKFwibW91c2VcIiE9PWUucG9pbnRlclR5cGUpOmUgaW5zdGFuY2VvZiBNb3VzZUV2ZW50fWZ1bmN0aW9uIE5lKGUpe3JldHVybiEhZS50b3VjaGVzfSFmdW5jdGlvbihlKXtlLkFuaW1hdGU9XCJhbmltYXRlXCIsZS5Ib3Zlcj1cIndoaWxlSG92ZXJcIixlLlRhcD1cIndoaWxlVGFwXCIsZS5EcmFnPVwid2hpbGVEcmFnXCIsZS5Gb2N1cz1cIndoaWxlRm9jdXNcIixlLkV4aXQ9XCJleGl0XCJ9KEFlfHwoQWU9e30pKTt2YXIgemU9e3BhZ2VYOjAscGFnZVk6MH07ZnVuY3Rpb24gVWUoZSx0KXt2b2lkIDA9PT10JiYodD1cInBhZ2VcIik7dmFyIG49ZS50b3VjaGVzWzBdfHxlLmNoYW5nZWRUb3VjaGVzWzBdfHx6ZTtyZXR1cm57eDpuW3QrXCJYXCJdLHk6blt0K1wiWVwiXX19ZnVuY3Rpb24gR2UoZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9XCJwYWdlXCIpLHt4OmVbdCtcIlhcIl0seTplW3QrXCJZXCJdfX1mdW5jdGlvbiBxZShlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1cInBhZ2VcIikse3BvaW50Ok5lKGUpP1VlKGUsdCk6R2UoZSx0KX19dmFyIFllPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBuLHI9ZnVuY3Rpb24odCl7cmV0dXJuIGUodCxxZSh0KSl9O3JldHVybiB0PyhuPXIsZnVuY3Rpb24oZSl7dmFyIHQ9ZSBpbnN0YW5jZW9mIE1vdXNlRXZlbnQ7KCF0fHx0JiYwPT09ZS5idXR0b24pJiZuKGUpfSk6cn0sS2U9ZnVuY3Rpb24oKXtyZXR1cm4gUCYmbnVsbD09PXdpbmRvdy5vbnBvaW50ZXJkb3dufSxYZT1mdW5jdGlvbigpe3JldHVybiBQJiZudWxsPT09d2luZG93Lm9udG91Y2hzdGFydH0sUWU9ZnVuY3Rpb24oKXtyZXR1cm4gUCYmbnVsbD09PXdpbmRvdy5vbm1vdXNlZG93bn0sSmU9e3BvaW50ZXJkb3duOlwibW91c2Vkb3duXCIscG9pbnRlcm1vdmU6XCJtb3VzZW1vdmVcIixwb2ludGVydXA6XCJtb3VzZXVwXCIscG9pbnRlcmNhbmNlbDpcIm1vdXNlY2FuY2VsXCIscG9pbnRlcm92ZXI6XCJtb3VzZW92ZXJcIixwb2ludGVyb3V0OlwibW91c2VvdXRcIixwb2ludGVyZW50ZXI6XCJtb3VzZWVudGVyXCIscG9pbnRlcmxlYXZlOlwibW91c2VsZWF2ZVwifSxldD17cG9pbnRlcmRvd246XCJ0b3VjaHN0YXJ0XCIscG9pbnRlcm1vdmU6XCJ0b3VjaG1vdmVcIixwb2ludGVydXA6XCJ0b3VjaGVuZFwiLHBvaW50ZXJjYW5jZWw6XCJ0b3VjaGNhbmNlbFwifTtmdW5jdGlvbiB0dChlKXtyZXR1cm4gS2UoKT9lOlhlKCk/ZXRbZV06UWUoKT9KZVtlXTplfWZ1bmN0aW9uIG50KGUsdCxuLHIpe3JldHVybiAkZShlLHR0KHQpLFllKG4sXCJwb2ludGVyZG93blwiPT09dCkscil9ZnVuY3Rpb24gcnQoZSx0LG4scil7cmV0dXJuIEZlKGUsdHQodCksbiYmWWUobixcInBvaW50ZXJkb3duXCI9PT10KSxyKX1mdW5jdGlvbiBvdChlKXt2YXIgdD1udWxsO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBudWxsPT09dCYmKHQ9ZSxmdW5jdGlvbigpe3Q9bnVsbH0pfX12YXIgYXQ9b3QoXCJkcmFnSG9yaXpvbnRhbFwiKSxpdD1vdChcImRyYWdWZXJ0aWNhbFwiKTtmdW5jdGlvbiBsdChlKXt2YXIgdD0hMTtpZihcInlcIj09PWUpdD1pdCgpO2Vsc2UgaWYoXCJ4XCI9PT1lKXQ9YXQoKTtlbHNle3ZhciBuPWF0KCkscj1pdCgpO24mJnI/dD1mdW5jdGlvbigpe24oKSxyKCl9OihuJiZuKCksciYmcigpKX1yZXR1cm4gdH1mdW5jdGlvbiBjdCgpe3ZhciBlPWx0KCEwKTtyZXR1cm4hZXx8KGUoKSwhMSl9ZnVuY3Rpb24gc3QoZSx0LG4pe3JldHVybiBmdW5jdGlvbihyLG8pe3ZhciBhO1dlKHIpJiYhY3QoKSYmKG51bGw9PW58fG4ocixvKSxudWxsPT09KGE9ZS5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PWF8fGEuc2V0QWN0aXZlKEFlLkhvdmVyLHQpKX19dmFyIHV0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuISF0JiYoZT09PXR8fHV0KGUsdC5wYXJlbnRFbGVtZW50KSl9O2Z1bmN0aW9uIGR0KGUpe3JldHVybiBvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSgpfX0pLFtdKX12YXIgZnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpLG51bGx9fSxwdD17dGFwOmZ0KChmdW5jdGlvbihlKXt2YXIgdD1lLm9uVGFwLG49ZS5vblRhcFN0YXJ0LHI9ZS5vblRhcENhbmNlbCxhPWUud2hpbGVUYXAsaT1lLnZpc3VhbEVsZW1lbnQsYz10fHxufHxyfHxhLHM9by51c2VSZWYoITEpLHU9by51c2VSZWYobnVsbCk7ZnVuY3Rpb24gZCgpe3ZhciBlO251bGw9PT0oZT11LmN1cnJlbnQpfHx2b2lkIDA9PT1lfHxlLmNhbGwodSksdS5jdXJyZW50PW51bGx9ZnVuY3Rpb24gZigpe3ZhciBlO3JldHVybiBkKCkscy5jdXJyZW50PSExLG51bGw9PT0oZT1pLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09ZXx8ZS5zZXRBY3RpdmUoQWUuVGFwLCExKSwhY3QoKX1mdW5jdGlvbiBwKGUsbil7ZigpJiYodXQoaS5nZXRJbnN0YW5jZSgpLGUudGFyZ2V0KT9udWxsPT10fHx0KGUsbik6bnVsbD09cnx8cihlLG4pKX1mdW5jdGlvbiBoKGUsdCl7ZigpJiYobnVsbD09cnx8cihlLHQpKX1ydChpLFwicG9pbnRlcmRvd25cIixjP2Z1bmN0aW9uKGUsdCl7dmFyIHI7ZCgpLHMuY3VycmVudHx8KHMuY3VycmVudD0hMCx1LmN1cnJlbnQ9bC5waXBlKG50KHdpbmRvdyxcInBvaW50ZXJ1cFwiLHApLG50KHdpbmRvdyxcInBvaW50ZXJjYW5jZWxcIixoKSksbnVsbD09bnx8bihlLHQpLG51bGw9PT0ocj1pLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09cnx8ci5zZXRBY3RpdmUoQWUuVGFwLCEwKSl9OnZvaWQgMCksZHQoZCl9KSksZm9jdXM6ZnQoKGZ1bmN0aW9uKGUpe3ZhciB0PWUud2hpbGVGb2N1cyxuPWUudmlzdWFsRWxlbWVudDtGZShuLFwiZm9jdXNcIix0P2Z1bmN0aW9uKCl7dmFyIGU7bnVsbD09PShlPW4uYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1lfHxlLnNldEFjdGl2ZShBZS5Gb2N1cywhMCl9OnZvaWQgMCksRmUobixcImJsdXJcIix0P2Z1bmN0aW9uKCl7dmFyIGU7bnVsbD09PShlPW4uYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1lfHxlLnNldEFjdGl2ZShBZS5Gb2N1cywhMSl9OnZvaWQgMCl9KSksaG92ZXI6ZnQoKGZ1bmN0aW9uKGUpe3ZhciB0PWUub25Ib3ZlclN0YXJ0LG49ZS5vbkhvdmVyRW5kLHI9ZS53aGlsZUhvdmVyLG89ZS52aXN1YWxFbGVtZW50O3J0KG8sXCJwb2ludGVyZW50ZXJcIix0fHxyP3N0KG8sITAsdCk6dm9pZCAwKSxydChvLFwicG9pbnRlcmxlYXZlXCIsbnx8cj9zdChvLCExLG4pOnZvaWQgMCl9KSl9O2Z1bmN0aW9uIGh0KGUsdCl7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuITE7dmFyIG49dC5sZW5ndGg7aWYobiE9PWUubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgcj0wO3I8bjtyKyspaWYodFtyXSE9PWVbcl0pcmV0dXJuITE7cmV0dXJuITB9dmFyIEN0PWZ1bmN0aW9uKGUpe3JldHVybiAxZTMqZX0sdnQ9e2xpbmVhcjpsLmxpbmVhcixlYXNlSW46bC5lYXNlSW4sZWFzZUluT3V0OmwuZWFzZUluT3V0LGVhc2VPdXQ6bC5lYXNlT3V0LGNpcmNJbjpsLmNpcmNJbixjaXJjSW5PdXQ6bC5jaXJjSW5PdXQsY2lyY091dDpsLmNpcmNPdXQsYmFja0luOmwuYmFja0luLGJhY2tJbk91dDpsLmJhY2tJbk91dCxiYWNrT3V0OmwuYmFja091dCxhbnRpY2lwYXRlOmwuYW50aWNpcGF0ZSxib3VuY2VJbjpsLmJvdW5jZUluLGJvdW5jZUluT3V0OmwuYm91bmNlSW5PdXQsYm91bmNlT3V0OmwuYm91bmNlT3V0fSxndD1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXthLmludmFyaWFudCg0PT09ZS5sZW5ndGgsXCJDdWJpYyBiZXppZXIgYXJyYXlzIG11c3QgY29udGFpbiBmb3VyIG51bWVyaWNhbCB2YWx1ZXMuXCIpO3ZhciB0PXIuX19yZWFkKGUsNCksbj10WzBdLG89dFsxXSxpPXRbMl0sYz10WzNdO3JldHVybiBsLmN1YmljQmV6aWVyKG4sbyxpLGMpfXJldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlPyhhLmludmFyaWFudCh2b2lkIDAhPT12dFtlXSxcIkludmFsaWQgZWFzaW5nIHR5cGUgJ1wiK2UrXCInXCIpLHZ0W2VdKTplfSxtdD1mdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmXCJudW1iZXJcIiE9dHlwZW9mIGVbMF19LHd0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIShcInpJbmRleFwiPT09ZXx8XCJudW1iZXJcIiE9dHlwZW9mIHQmJiFBcnJheS5pc0FycmF5KHQpJiYoXCJzdHJpbmdcIiE9dHlwZW9mIHR8fCFpLmNvbXBsZXgudGVzdCh0KXx8dC5zdGFydHNXaXRoKFwidXJsKFwiKSkpfSx5dD1mdW5jdGlvbigpe3JldHVybnt0eXBlOlwic3ByaW5nXCIsc3RpZmZuZXNzOjUwMCxkYW1waW5nOjI1LHJlc3REZWx0YTouNSxyZXN0U3BlZWQ6MTB9fSxidD1mdW5jdGlvbihlKXtyZXR1cm57dHlwZTpcInNwcmluZ1wiLHN0aWZmbmVzczo1NTAsZGFtcGluZzowPT09ZT8yKk1hdGguc3FydCg1NTApOjMwLHJlc3REZWx0YTouMDEscmVzdFNwZWVkOjEwfX0seHQ9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpcImtleWZyYW1lc1wiLGVhc2U6XCJsaW5lYXJcIixkdXJhdGlvbjouM319LE90PWZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOlwia2V5ZnJhbWVzXCIsZHVyYXRpb246LjgsdmFsdWVzOmV9fSxMdD17eDp5dCx5Onl0LHo6eXQscm90YXRlOnl0LHJvdGF0ZVg6eXQscm90YXRlWTp5dCxyb3RhdGVaOnl0LHNjYWxlWDpidCxzY2FsZVk6YnQsc2NhbGU6YnQsb3BhY2l0eTp4dCxiYWNrZ3JvdW5kQ29sb3I6eHQsY29sb3I6eHQsZGVmYXVsdDpidH0sTXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gbj1QZSh0KT9PdDpMdFtlXXx8THQuZGVmYXVsdCxyLl9fYXNzaWduKHt0bzp0fSxuKHQpKX0sU3Q9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGFlKSx7Y29sb3I6aS5jb2xvcixiYWNrZ3JvdW5kQ29sb3I6aS5jb2xvcixvdXRsaW5lQ29sb3I6aS5jb2xvcixmaWxsOmkuY29sb3Isc3Ryb2tlOmkuY29sb3IsYm9yZGVyQ29sb3I6aS5jb2xvcixib3JkZXJUb3BDb2xvcjppLmNvbG9yLGJvcmRlclJpZ2h0Q29sb3I6aS5jb2xvcixib3JkZXJCb3R0b21Db2xvcjppLmNvbG9yLGJvcmRlckxlZnRDb2xvcjppLmNvbG9yLGZpbHRlcjppLmZpbHRlcixXZWJraXRGaWx0ZXI6aS5maWx0ZXJ9KSxfdD1mdW5jdGlvbihlKXtyZXR1cm4gU3RbZV19O2Z1bmN0aW9uIGp0KGUsdCl7dmFyIG4scj1fdChlKTtyZXR1cm4gciE9PWkuZmlsdGVyJiYocj1pLmNvbXBsZXgpLG51bGw9PT0obj1yLmdldEFuaW1hdGFibGVOb25lKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jYWxsKHIsdCl9dmFyIEV0PSExO2Z1bmN0aW9uIFB0KGUpe3JldHVybiAwPT09ZXx8XCJzdHJpbmdcIj09dHlwZW9mIGUmJjA9PT1wYXJzZUZsb2F0KGUpJiYtMT09PWUuaW5kZXhPZihcIiBcIil9ZnVuY3Rpb24ga3QoZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGU/MDpqdChcIlwiLGUpfWZ1bmN0aW9uIEh0KGUsdCl7cmV0dXJuIGVbdF18fGUuZGVmYXVsdHx8ZX1mdW5jdGlvbiBWdChlLHQsbixvKXtyZXR1cm4gdm9pZCAwPT09byYmKG89e30pLHQuc3RhcnQoKGZ1bmN0aW9uKGkpe3ZhciBjLHMsdT1mdW5jdGlvbihlLHQsbixvLGkpe3ZhciBjLHM9SHQobyxlKSx1PW51bGwhPT0oYz1zLmZyb20pJiZ2b2lkIDAhPT1jP2M6dC5nZXQoKSxkPXd0KGUsbik7XCJub25lXCI9PT11JiZkJiZcInN0cmluZ1wiPT10eXBlb2Ygbj91PWp0KGUsbik6UHQodSkmJlwic3RyaW5nXCI9PXR5cGVvZiBuP3U9a3Qobik6IUFycmF5LmlzQXJyYXkobikmJlB0KG4pJiZcInN0cmluZ1wiPT10eXBlb2YgdSYmKG49a3QodSkpO3ZhciBmPXd0KGUsdSk7cmV0dXJuIGEud2FybmluZyhmPT09ZCxcIllvdSBhcmUgdHJ5aW5nIHRvIGFuaW1hdGUgXCIrZSsnIGZyb20gXCInK3UrJ1wiIHRvIFwiJytuKydcIi4gJyt1K1wiIGlzIG5vdCBhbiBhbmltYXRhYmxlIHZhbHVlIC0gdG8gZW5hYmxlIHRoaXMgYW5pbWF0aW9uIHNldCBcIit1K1wiIHRvIGEgdmFsdWUgYW5pbWF0YWJsZSB0byBcIituK1wiIHZpYSB0aGUgYHN0eWxlYCBwcm9wZXJ0eS5cIiksZiYmZCYmITEhPT1zLnR5cGU/ZnVuY3Rpb24oKXt2YXIgbz17ZnJvbTp1LHRvOm4sdmVsb2NpdHk6dC5nZXRWZWxvY2l0eSgpLG9uQ29tcGxldGU6aSxvblVwZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5zZXQoZSl9fTtyZXR1cm5cImluZXJ0aWFcIj09PXMudHlwZXx8XCJkZWNheVwiPT09cy50eXBlP2wuaW5lcnRpYShyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbykscykpOmwuYW5pbWF0ZShyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sZnVuY3Rpb24oZSx0LG4pe3ZhciBvO3JldHVybiBBcnJheS5pc0FycmF5KHQudG8pJiYobnVsbCE9PShvPWUuZHVyYXRpb24pJiZ2b2lkIDAhPT1vfHwoZS5kdXJhdGlvbj0uOCkpLGZ1bmN0aW9uKGUpe0FycmF5LmlzQXJyYXkoZS50bykmJm51bGw9PT1lLnRvWzBdJiYoZS50bz1yLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQoZS50bykpLGUudG9bMF09ZS5mcm9tKX0odCksZnVuY3Rpb24oZSl7ZS53aGVuLGUuZGVsYXksZS5kZWxheUNoaWxkcmVuLGUuc3RhZ2dlckNoaWxkcmVuLGUuc3RhZ2dlckRpcmVjdGlvbixlLnJlcGVhdCxlLnJlcGVhdFR5cGUsZS5yZXBlYXREZWxheSxlLmZyb207dmFyIHQ9ci5fX3Jlc3QoZSxbXCJ3aGVuXCIsXCJkZWxheVwiLFwiZGVsYXlDaGlsZHJlblwiLFwic3RhZ2dlckNoaWxkcmVuXCIsXCJzdGFnZ2VyRGlyZWN0aW9uXCIsXCJyZXBlYXRcIixcInJlcGVhdFR5cGVcIixcInJlcGVhdERlbGF5XCIsXCJmcm9tXCJdKTtyZXR1cm4hIU9iamVjdC5rZXlzKHQpLmxlbmd0aH0oZSl8fChlPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxlKSxNdChuLHQudG8pKSksci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHQpLGZ1bmN0aW9uKGUpe3ZhciB0PWUuZWFzZSxuPWUudGltZXMsbz1lLnlveW8saT1lLmZsaXAsbD1lLmxvb3AsYz1yLl9fcmVzdChlLFtcImVhc2VcIixcInRpbWVzXCIsXCJ5b3lvXCIsXCJmbGlwXCIsXCJsb29wXCJdKSxzPXIuX19hc3NpZ24oe30sYyk7cmV0dXJuIG4mJihzLm9mZnNldD1uKSxjLmR1cmF0aW9uJiYocy5kdXJhdGlvbj1DdChjLmR1cmF0aW9uKSksYy5yZXBlYXREZWxheSYmKHMucmVwZWF0RGVsYXk9Q3QoYy5yZXBlYXREZWxheSkpLHQmJihzLmVhc2U9bXQodCk/dC5tYXAoZ3QpOmd0KHQpKSxcInR3ZWVuXCI9PT1jLnR5cGUmJihzLnR5cGU9XCJrZXlmcmFtZXNcIiksKG98fGx8fGkpJiYoYS53YXJuaW5nKCFFdCxcInlveW8sIGxvb3AgYW5kIGZsaXAgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgQVBJLiBSZXBsYWNlIHdpdGggcmVwZWF0IGFuZCByZXBlYXRUeXBlIG9wdGlvbnMuXCIpLEV0PSEwLG8/cy5yZXBlYXRUeXBlPVwicmV2ZXJzZVwiOmw/cy5yZXBlYXRUeXBlPVwibG9vcFwiOmkmJihzLnJlcGVhdFR5cGU9XCJtaXJyb3JcIikscy5yZXBlYXQ9bHx8b3x8aXx8Yy5yZXBlYXQpLFwic3ByaW5nXCIhPT1jLnR5cGUmJihzLnR5cGU9XCJrZXlmcmFtZXNcIiksc30oZSkpfShzLG8sZSkpLHtvblVwZGF0ZTpmdW5jdGlvbihlKXt2YXIgdDtvLm9uVXBkYXRlKGUpLG51bGw9PT0odD1zLm9uVXBkYXRlKXx8dm9pZCAwPT09dHx8dC5jYWxsKHMsZSl9LG9uQ29tcGxldGU6ZnVuY3Rpb24oKXt2YXIgZTtvLm9uQ29tcGxldGUoKSxudWxsPT09KGU9cy5vbkNvbXBsZXRlKXx8dm9pZCAwPT09ZXx8ZS5jYWxsKHMpfX0pKX06ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gdC5zZXQobiksaSgpLG51bGw9PT0oZT1udWxsPT1zP3ZvaWQgMDpzLm9uQ29tcGxldGUpfHx2b2lkIDA9PT1lfHxlLmNhbGwocykse3N0b3A6ZnVuY3Rpb24oKXt9fX19KGUsdCxuLG8saSksZD1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBudWxsIT09KG49KEh0KGUsdCl8fHt9KS5kZWxheSkmJnZvaWQgMCE9PW4/bjowfShvLGUpLGY9ZnVuY3Rpb24oKXtyZXR1cm4gcz11KCl9O3JldHVybiBkP2M9c2V0VGltZW91dChmLEN0KGQpKTpmKCksZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYyksbnVsbD09c3x8cy5zdG9wKCl9fSkpfWZ1bmN0aW9uIFJ0KGUsdCl7LTE9PT1lLmluZGV4T2YodCkmJmUucHVzaCh0KX1mdW5jdGlvbiBJdChlLHQpe3ZhciBuPWUuaW5kZXhPZih0KTtuPi0xJiZlLnNwbGljZShuLDEpfXZhciBadD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLnN1YnNjcmlwdGlvbnM9W119cmV0dXJuIGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBSdCh0aGlzLnN1YnNjcmlwdGlvbnMsZSksZnVuY3Rpb24oKXtyZXR1cm4gSXQodC5zdWJzY3JpcHRpb25zLGUpfX0sZS5wcm90b3R5cGUubm90aWZ5PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLnN1YnNjcmlwdGlvbnMubGVuZ3RoO2lmKHIpaWYoMT09PXIpdGhpcy5zdWJzY3JpcHRpb25zWzBdKGUsdCxuKTtlbHNlIGZvcih2YXIgbz0wO288cjtvKyspe3ZhciBhPXRoaXMuc3Vic2NyaXB0aW9uc1tvXTthJiZhKGUsdCxuKX19LGUucHJvdG90eXBlLmdldFNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdWJzY3JpcHRpb25zLmxlbmd0aH0sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnN1YnNjcmlwdGlvbnMubGVuZ3RoPTB9LGV9KCksQXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciB0LG49dGhpczt0aGlzLnRpbWVEZWx0YT0wLHRoaXMubGFzdFVwZGF0ZWQ9MCx0aGlzLnVwZGF0ZVN1YnNjcmliZXJzPW5ldyBadCx0aGlzLnZlbG9jaXR5VXBkYXRlU3Vic2NyaWJlcnM9bmV3IFp0LHRoaXMucmVuZGVyU3Vic2NyaWJlcnM9bmV3IFp0LHRoaXMuY2FuVHJhY2tWZWxvY2l0eT0hMSx0aGlzLnVwZGF0ZUFuZE5vdGlmeT1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PSEwKSxuLnByZXY9bi5jdXJyZW50LG4uY3VycmVudD1lO3ZhciByPWMuZ2V0RnJhbWVEYXRhKCksbz1yLmRlbHRhLGE9ci50aW1lc3RhbXA7bi5sYXN0VXBkYXRlZCE9PWEmJihuLnRpbWVEZWx0YT1vLG4ubGFzdFVwZGF0ZWQ9YSxmLmRlZmF1bHQucG9zdFJlbmRlcihuLnNjaGVkdWxlVmVsb2NpdHlDaGVjaykpLG4ucHJldiE9PW4uY3VycmVudCYmbi51cGRhdGVTdWJzY3JpYmVycy5ub3RpZnkobi5jdXJyZW50KSxuLnZlbG9jaXR5VXBkYXRlU3Vic2NyaWJlcnMuZ2V0U2l6ZSgpJiZuLnZlbG9jaXR5VXBkYXRlU3Vic2NyaWJlcnMubm90aWZ5KG4uZ2V0VmVsb2NpdHkoKSksdCYmbi5yZW5kZXJTdWJzY3JpYmVycy5ub3RpZnkobi5jdXJyZW50KX0sdGhpcy5zY2hlZHVsZVZlbG9jaXR5Q2hlY2s9ZnVuY3Rpb24oKXtyZXR1cm4gZi5kZWZhdWx0LnBvc3RSZW5kZXIobi52ZWxvY2l0eUNoZWNrKX0sdGhpcy52ZWxvY2l0eUNoZWNrPWZ1bmN0aW9uKGUpe2UudGltZXN0YW1wIT09bi5sYXN0VXBkYXRlZCYmKG4ucHJldj1uLmN1cnJlbnQsbi52ZWxvY2l0eVVwZGF0ZVN1YnNjcmliZXJzLm5vdGlmeShuLmdldFZlbG9jaXR5KCkpKX0sdGhpcy5oYXNBbmltYXRlZD0hMSx0aGlzLnByZXY9dGhpcy5jdXJyZW50PWUsdGhpcy5jYW5UcmFja1ZlbG9jaXR5PSh0PXRoaXMuY3VycmVudCwhaXNOYU4ocGFyc2VGbG9hdCh0KSkpfXJldHVybiBlLnByb3RvdHlwZS5vbkNoYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy51cGRhdGVTdWJzY3JpYmVycy5hZGQoZSl9LGUucHJvdG90eXBlLmNsZWFyTGlzdGVuZXJzPWZ1bmN0aW9uKCl7dGhpcy51cGRhdGVTdWJzY3JpYmVycy5jbGVhcigpfSxlLnByb3RvdHlwZS5vblJlbmRlclJlcXVlc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGUodGhpcy5nZXQoKSksdGhpcy5yZW5kZXJTdWJzY3JpYmVycy5hZGQoZSl9LGUucHJvdG90eXBlLmF0dGFjaD1mdW5jdGlvbihlKXt0aGlzLnBhc3NpdmVFZmZlY3Q9ZX0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITApLHQmJnRoaXMucGFzc2l2ZUVmZmVjdD90aGlzLnBhc3NpdmVFZmZlY3QoZSx0aGlzLnVwZGF0ZUFuZE5vdGlmeSk6dGhpcy51cGRhdGVBbmROb3RpZnkoZSx0KX0sZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudH0sZS5wcm90b3R5cGUuZ2V0UHJldmlvdXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2fSxlLnByb3RvdHlwZS5nZXRWZWxvY2l0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhblRyYWNrVmVsb2NpdHk/bC52ZWxvY2l0eVBlclNlY29uZChwYXJzZUZsb2F0KHRoaXMuY3VycmVudCktcGFyc2VGbG9hdCh0aGlzLnByZXYpLHRoaXMudGltZURlbHRhKTowfSxlLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLnN0b3AoKSxuZXcgUHJvbWlzZSgoZnVuY3Rpb24obil7dC5oYXNBbmltYXRlZD0hMCx0LnN0b3BBbmltYXRpb249ZShuKX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiB0LmNsZWFyQW5pbWF0aW9uKCl9KSl9LGUucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLnN0b3BBbmltYXRpb24mJnRoaXMuc3RvcEFuaW1hdGlvbigpLHRoaXMuY2xlYXJBbmltYXRpb24oKX0sZS5wcm90b3R5cGUuaXNBbmltYXRpbmc9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuc3RvcEFuaW1hdGlvbn0sZS5wcm90b3R5cGUuY2xlYXJBbmltYXRpb249ZnVuY3Rpb24oKXt0aGlzLnN0b3BBbmltYXRpb249bnVsbH0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMudXBkYXRlU3Vic2NyaWJlcnMuY2xlYXIoKSx0aGlzLnJlbmRlclN1YnNjcmliZXJzLmNsZWFyKCksdGhpcy5zdG9wKCl9LGV9KCk7ZnVuY3Rpb24gRHQoZSl7cmV0dXJuIG5ldyBBdChlKX12YXIgQnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LnRlc3QoZSl9fSxUdD1baS5udW1iZXIsaS5weCxpLnBlcmNlbnQsaS5kZWdyZWVzLGkudncsaS52aCx7dGVzdDpmdW5jdGlvbihlKXtyZXR1cm5cImF1dG9cIj09PWV9LHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybiBlfX1dLCR0PWZ1bmN0aW9uKGUpe3JldHVybiBUdC5maW5kKEJ0KGUpKX0sRnQ9ci5fX3NwcmVhZEFycmF5KHIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZChUdCkpLFtpLmNvbG9yLGkuY29tcGxleF0pO2Z1bmN0aW9uIFd0KGUsdCxuKXtlLmhhc1ZhbHVlKHQpP2UuZ2V0VmFsdWUodCkuc2V0KG4pOmUuYWRkVmFsdWUodCxEdChuKSl9ZnVuY3Rpb24gTnQoZSx0KXt2YXIgbj1aKGUsdCksbz1uP2UubWFrZVRhcmdldEFuaW1hdGFibGUobiwhMSk6e30sYT1vLnRyYW5zaXRpb25FbmQsaT12b2lkIDA9PT1hP3t9OmE7by50cmFuc2l0aW9uO3ZhciBsPXIuX19yZXN0KG8sW1widHJhbnNpdGlvbkVuZFwiLFwidHJhbnNpdGlvblwiXSk7Zm9yKHZhciBjIGluIGw9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGwpLGkpKVd0KGUsYyxIZShsW2NdKSl9ZnVuY3Rpb24genQoZSx0KXtyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQodCkpLnJldmVyc2UoKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcixvPWUuZ2V0VmFyaWFudChuKTtvJiZOdChlLG8pLG51bGw9PT0ocj1lLnZhcmlhbnRDaGlsZHJlbil8fHZvaWQgMD09PXJ8fHIuZm9yRWFjaCgoZnVuY3Rpb24oZSl7enQoZSx0KX0pKX0pKX1mdW5jdGlvbiBVdChlLHQsbil7dmFyIHIsbyxhLGwsYyxzPU9iamVjdC5rZXlzKHQpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIWUuaGFzVmFsdWUodCl9KSksdT1zLmxlbmd0aDtpZih1KWZvcih2YXIgZD0wO2Q8dTtkKyspe3ZhciBmPXNbZF0scD10W2ZdLGg9bnVsbDtBcnJheS5pc0FycmF5KHApJiYoaD1wWzBdKSxudWxsPT09aCYmKGg9bnVsbCE9PShvPW51bGwhPT0ocj1uW2ZdKSYmdm9pZCAwIT09cj9yOmUucmVhZFZhbHVlKGYpKSYmdm9pZCAwIT09bz9vOnRbZl0pLG51bGwhPWgmJihcInN0cmluZ1wiPT10eXBlb2YgaCYmL15cXC0/XFxkKlxcLj9cXGQrJC8udGVzdChoKT9oPXBhcnNlRmxvYXQoaCk6KGM9aCwhRnQuZmluZChCdChjKSkmJmkuY29tcGxleC50ZXN0KHApJiYoaD1qdChmLHApKSksZS5hZGRWYWx1ZShmLER0KGgpKSxudWxsIT09KGE9KGw9bilbZl0pJiZ2b2lkIDAhPT1hfHwobFtmXT1oKSxlLnNldEJhc2VUYXJnZXQoZixoKSl9fWZ1bmN0aW9uIEd0KGUsdCl7aWYodClyZXR1cm4odFtlXXx8dC5kZWZhdWx0fHx0KS5mcm9tfWZ1bmN0aW9uIHF0KGUsdCxuKXt2YXIgcixvLGE9e307Zm9yKHZhciBpIGluIGUpYVtpXT1udWxsIT09KHI9R3QoaSx0KSkmJnZvaWQgMCE9PXI/cjpudWxsPT09KG89bi5nZXRWYWx1ZShpKSl8fHZvaWQgMD09PW8/dm9pZCAwOm8uZ2V0KCk7cmV0dXJuIGF9ZnVuY3Rpb24gWXQoZSx0LG4pe3ZhciByO2lmKHZvaWQgMD09PW4mJihuPXt9KSxlLm5vdGlmeUFuaW1hdGlvblN0YXJ0KCksQXJyYXkuaXNBcnJheSh0KSl7dmFyIG89dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBLdChlLHQsbil9KSk7cj1Qcm9taXNlLmFsbChvKX1lbHNlIGlmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXI9S3QoZSx0LG4pO2Vsc2V7dmFyIGE9XCJmdW5jdGlvblwiPT10eXBlb2YgdD9aKGUsdCxuLmN1c3RvbSk6dDtyPVh0KGUsYSxuKX1yZXR1cm4gci50aGVuKChmdW5jdGlvbigpe3JldHVybiBlLm5vdGlmeUFuaW1hdGlvbkNvbXBsZXRlKHQpfSkpfWZ1bmN0aW9uIEt0KGUsdCxuKXt2YXIgbzt2b2lkIDA9PT1uJiYobj17fSk7dmFyIGE9WihlLHQsbi5jdXN0b20pLGk9KGF8fHt9KS50cmFuc2l0aW9uLGw9dm9pZCAwPT09aT9lLmdldERlZmF1bHRUcmFuc2l0aW9uKCl8fHt9Omk7bi50cmFuc2l0aW9uT3ZlcnJpZGUmJihsPW4udHJhbnNpdGlvbk92ZXJyaWRlKTt2YXIgYz1hP2Z1bmN0aW9uKCl7cmV0dXJuIFh0KGUsYSxuKX06ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LHM9KG51bGw9PT0obz1lLnZhcmlhbnRDaGlsZHJlbil8fHZvaWQgMD09PW8/dm9pZCAwOm8uc2l6ZSk/ZnVuY3Rpb24obyl7dm9pZCAwPT09byYmKG89MCk7dmFyIGE9bC5kZWxheUNoaWxkcmVuLGk9dm9pZCAwPT09YT8wOmEsYz1sLnN0YWdnZXJDaGlsZHJlbixzPWwuc3RhZ2dlckRpcmVjdGlvbjtyZXR1cm4gZnVuY3Rpb24oZSx0LG4sbyxhLGkpe3ZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PW8mJihvPTApLHZvaWQgMD09PWEmJihhPTEpO3ZhciBsPVtdLGM9KGUudmFyaWFudENoaWxkcmVuLnNpemUtMSkqbyxzPTE9PT1hP2Z1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0wKSxlKm99OmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0wKSxjLWUqb307cmV0dXJuIEFycmF5LmZyb20oZS52YXJpYW50Q2hpbGRyZW4pLnNvcnQoUXQpLmZvckVhY2goKGZ1bmN0aW9uKGUsbyl7bC5wdXNoKEt0KGUsdCxyLl9fYXNzaWduKHIuX19hc3NpZ24oe30saSkse2RlbGF5Om4rcyhvKX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBlLm5vdGlmeUFuaW1hdGlvbkNvbXBsZXRlKHQpfSkpKX0pKSxQcm9taXNlLmFsbChsKX0oZSx0LGkrbyxjLHMsbil9OmZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSx1PWwud2hlbjtpZih1KXt2YXIgZD1yLl9fcmVhZChcImJlZm9yZUNoaWxkcmVuXCI9PT11P1tjLHNdOltzLGNdLDIpLGY9ZFswXSxwPWRbMV07cmV0dXJuIGYoKS50aGVuKHApfXJldHVybiBQcm9taXNlLmFsbChbYygpLHMobi5kZWxheSldKX1mdW5jdGlvbiBYdChlLHQsbil7dmFyIG8sYT12b2lkIDA9PT1uP3t9Om4saT1hLmRlbGF5LGw9dm9pZCAwPT09aT8wOmksYz1hLnRyYW5zaXRpb25PdmVycmlkZSxzPWEudHlwZSx1PWUubWFrZVRhcmdldEFuaW1hdGFibGUodCksZD11LnRyYW5zaXRpb24sZj12b2lkIDA9PT1kP2UuZ2V0RGVmYXVsdFRyYW5zaXRpb24oKTpkLHA9dS50cmFuc2l0aW9uRW5kLGg9ci5fX3Jlc3QodSxbXCJ0cmFuc2l0aW9uXCIsXCJ0cmFuc2l0aW9uRW5kXCJdKTtjJiYoZj1jKTt2YXIgQz1bXSx2PXMmJihudWxsPT09KG89ZS5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PW8/dm9pZCAwOm8uZ2V0U3RhdGUoKVtzXSk7Zm9yKHZhciBnIGluIGgpe3ZhciBtPWUuZ2V0VmFsdWUoZyksdz1oW2ddO2lmKCEoIW18fHZvaWQgMD09PXd8fHYmJkp0KHYsZykpKXt2YXIgeT1WdChnLG0sdyxyLl9fYXNzaWduKHtkZWxheTpsfSxmKSk7Qy5wdXNoKHkpfX1yZXR1cm4gUHJvbWlzZS5hbGwoQykudGhlbigoZnVuY3Rpb24oKXtwJiZOdChlLHApfSkpfWZ1bmN0aW9uIFF0KGUsdCl7cmV0dXJuIGUuc29ydE5vZGVQb3NpdGlvbih0KX1mdW5jdGlvbiBKdChlLHQpe3ZhciBuPWUucHJvdGVjdGVkS2V5cyxyPWUubmVlZHNBbmltYXRpbmcsbz1uLmhhc093blByb3BlcnR5KHQpJiYhMCE9PXJbdF07cmV0dXJuIHJbdF09ITEsb312YXIgZW49W0FlLkFuaW1hdGUsQWUuSG92ZXIsQWUuVGFwLEFlLkRyYWcsQWUuRm9jdXMsQWUuRXhpdF0sdG49ci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKGVuKSkucmV2ZXJzZSgpLG5uPWVuLmxlbmd0aDtmdW5jdGlvbiBybihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLHtpc0FjdGl2ZTplLHByb3RlY3RlZEtleXM6e30sbmVlZHNBbmltYXRpbmc6e30scHJldlJlc29sdmVkVmFsdWVzOnt9fX12YXIgb249e2FuaW1hdGlvbjpmdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS52aXN1YWxFbGVtZW50LG49ZS5hbmltYXRlO3QuYW5pbWF0aW9uU3RhdGV8fCh0LmFuaW1hdGlvblN0YXRlPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBQcm9taXNlLmFsbCh0Lm1hcCgoZnVuY3Rpb24odCl7dmFyIG49dC5hbmltYXRpb24scj10Lm9wdGlvbnM7cmV0dXJuIFl0KGUsbixyKX0pKSl9fShlKSxvPSgodD17fSlbQWUuQW5pbWF0ZV09cm4oITApLHRbQWUuSG92ZXJdPXJuKCksdFtBZS5UYXBdPXJuKCksdFtBZS5EcmFnXT1ybigpLHRbQWUuRm9jdXNdPXJuKCksdFtBZS5FeGl0XT1ybigpLHQpLGE9e30saT0hMCxsPWZ1bmN0aW9uKHQsbil7dmFyIG89WihlLG4pO2lmKG8pe28udHJhbnNpdGlvbjt2YXIgYT1vLnRyYW5zaXRpb25FbmQsaT1yLl9fcmVzdChvLFtcInRyYW5zaXRpb25cIixcInRyYW5zaXRpb25FbmRcIl0pO3Q9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdCksaSksYSl9cmV0dXJuIHR9O2Z1bmN0aW9uIGModCxjKXtmb3IodmFyIHMsdT1lLmdldFByb3BzKCksZD1lLmdldFZhcmlhbnRDb250ZXh0KCEwKXx8e30sZj1bXSxwPW5ldyBTZXQsaD17fSxDPTEvMCx2PWZ1bmN0aW9uKG4pe3ZhciBhPXRuW25dLHY9b1thXSxnPW51bGwhPT0ocz11W2FdKSYmdm9pZCAwIT09cz9zOmRbYV0sbT1SKGcpLHc9YT09PWM/di5pc0FjdGl2ZTpudWxsOyExPT09dyYmKEM9bik7dmFyIHk9Zz09PWRbYV0mJmchPT11W2FdJiZtO2lmKHkmJmkmJmUubWFudWFsbHlBbmltYXRlT25Nb3VudCYmKHk9ITEpLHYucHJvdGVjdGVkS2V5cz1yLl9fYXNzaWduKHt9LGgpLCF2LmlzQWN0aXZlJiZudWxsPT09d3x8IWcmJiF2LnByZXZQcm9wfHxFZShnKXx8XCJib29sZWFuXCI9PXR5cGVvZiBnKXJldHVyblwiY29udGludWVcIjt2YXIgYj1mdW5jdGlvbihlLHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0P3QhPT1lOiEhVih0KSYmIWh0KHQsZSl9KHYucHJldlByb3AsZyl8fGE9PT1jJiZ2LmlzQWN0aXZlJiYheSYmbXx8bj5DJiZtLHg9QXJyYXkuaXNBcnJheShnKT9nOltnXSxPPXgucmVkdWNlKGwse30pOyExPT09dyYmKE89e30pO3ZhciBMPXYucHJldlJlc29sdmVkVmFsdWVzLE09dm9pZCAwPT09TD97fTpMLFM9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LE0pLE8pLF89ZnVuY3Rpb24oZSl7Yj0hMCxwLmRlbGV0ZShlKSx2Lm5lZWRzQW5pbWF0aW5nW2VdPSEwfTtmb3IodmFyIGogaW4gUyl7dmFyIEU9T1tqXSxQPU1bal07aC5oYXNPd25Qcm9wZXJ0eShqKXx8KEUhPT1QP1BlKEUpJiZQZShQKT9odChFLFApP3YucHJvdGVjdGVkS2V5c1tqXT0hMDpfKGopOnZvaWQgMCE9PUU/XyhqKTpwLmFkZChqKTp2b2lkIDAhPT1FJiZwLmhhcyhqKT9fKGopOnYucHJvdGVjdGVkS2V5c1tqXT0hMCl9di5wcmV2UHJvcD1nLHYucHJldlJlc29sdmVkVmFsdWVzPU8sdi5pc0FjdGl2ZSYmKGg9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGgpLE8pKSxpJiZlLmJsb2NrSW5pdGlhbEFuaW1hdGlvbiYmKGI9ITEpLGImJiF5JiZmLnB1c2guYXBwbHkoZixyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQoeC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybnthbmltYXRpb246ZSxvcHRpb25zOnIuX19hc3NpZ24oe3R5cGU6YX0sdCl9fSkpKSkpfSxnPTA7ZzxubjtnKyspdihnKTtpZihhPXIuX19hc3NpZ24oe30saCkscC5zaXplKXt2YXIgbT17fTtwLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWUuZ2V0QmFzZVRhcmdldCh0KTt2b2lkIDAhPT1uJiYobVt0XT1uKX0pKSxmLnB1c2goe2FuaW1hdGlvbjptfSl9dmFyIHc9Qm9vbGVhbihmLmxlbmd0aCk7cmV0dXJuIGkmJiExPT09dS5pbml0aWFsJiYhZS5tYW51YWxseUFuaW1hdGVPbk1vdW50JiYodz0hMSksaT0hMSx3P24oZik6UHJvbWlzZS5yZXNvbHZlKCl9cmV0dXJue2lzQW5pbWF0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWFbZV19LGFuaW1hdGVDaGFuZ2VzOmMsc2V0QWN0aXZlOmZ1bmN0aW9uKHQsbixyKXt2YXIgYTtyZXR1cm4gb1t0XS5pc0FjdGl2ZT09PW4/UHJvbWlzZS5yZXNvbHZlKCk6KG51bGw9PT0oYT1lLnZhcmlhbnRDaGlsZHJlbil8fHZvaWQgMD09PWF8fGEuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI7cmV0dXJuIG51bGw9PT0ocj1lLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zZXRBY3RpdmUodCxuKX0pKSxvW3RdLmlzQWN0aXZlPW4sYyhyLHQpKX0sc2V0QW5pbWF0ZUZ1bmN0aW9uOmZ1bmN0aW9uKHQpe249dChlKX0sZ2V0U3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gb319fSh0KSksRWUobikmJm8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiBuLnN1YnNjcmliZSh0KX0pLFtuXSl9KSksZXhpdDpmdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jdXN0b20sbj1lLnZpc3VhbEVsZW1lbnQsYT1yLl9fcmVhZChMKCksMiksaT1hWzBdLGw9YVsxXSxjPW8udXNlQ29udGV4dCh4KTtvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXt2YXIgZSxyLG89bnVsbD09PShlPW4uYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnNldEFjdGl2ZShBZS5FeGl0LCFpLHtjdXN0b206bnVsbCE9PShyPW51bGw9PWM/dm9pZCAwOmMuY3VzdG9tKSYmdm9pZCAwIT09cj9yOnR9KTshaSYmKG51bGw9PW98fG8udGhlbihsKSl9KSxbaV0pfSkpfSxhbj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4pe3ZhciBvPXRoaXMsYT0odm9pZCAwPT09bj97fTpuKS50cmFuc2Zvcm1QYWdlUG9pbnQ7aWYodGhpcy5zdGFydEV2ZW50PW51bGwsdGhpcy5sYXN0TW92ZUV2ZW50PW51bGwsdGhpcy5sYXN0TW92ZUV2ZW50SW5mbz1udWxsLHRoaXMuaGFuZGxlcnM9e30sdGhpcy51cGRhdGVQb2ludD1mdW5jdGlvbigpe2lmKG8ubGFzdE1vdmVFdmVudCYmby5sYXN0TW92ZUV2ZW50SW5mbyl7dmFyIGU9c24oby5sYXN0TW92ZUV2ZW50SW5mbyxvLmhpc3RvcnkpLHQ9bnVsbCE9PW8uc3RhcnRFdmVudCxuPWwuZGlzdGFuY2UoZS5vZmZzZXQse3g6MCx5OjB9KT49MztpZih0fHxuKXt2YXIgYT1lLnBvaW50LGk9Yy5nZXRGcmFtZURhdGEoKS50aW1lc3RhbXA7by5oaXN0b3J5LnB1c2goci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGEpLHt0aW1lc3RhbXA6aX0pKTt2YXIgcz1vLmhhbmRsZXJzLHU9cy5vblN0YXJ0LGQ9cy5vbk1vdmU7dHx8KHUmJnUoby5sYXN0TW92ZUV2ZW50LGUpLG8uc3RhcnRFdmVudD1vLmxhc3RNb3ZlRXZlbnQpLGQmJmQoby5sYXN0TW92ZUV2ZW50LGUpfX19LHRoaXMuaGFuZGxlUG9pbnRlck1vdmU9ZnVuY3Rpb24oZSx0KXtvLmxhc3RNb3ZlRXZlbnQ9ZSxvLmxhc3RNb3ZlRXZlbnRJbmZvPWxuKHQsby50cmFuc2Zvcm1QYWdlUG9pbnQpLFdlKGUpJiYwPT09ZS5idXR0b25zP28uaGFuZGxlUG9pbnRlclVwKGUsdCk6Zi5kZWZhdWx0LnVwZGF0ZShvLnVwZGF0ZVBvaW50LCEwKX0sdGhpcy5oYW5kbGVQb2ludGVyVXA9ZnVuY3Rpb24oZSx0KXtvLmVuZCgpO3ZhciBuPW8uaGFuZGxlcnMscj1uLm9uRW5kLGE9bi5vblNlc3Npb25FbmQsaT1zbihsbih0LG8udHJhbnNmb3JtUGFnZVBvaW50KSxvLmhpc3RvcnkpO28uc3RhcnRFdmVudCYmciYmcihlLGkpLGEmJmEoZSxpKX0sIShOZShlKSYmZS50b3VjaGVzLmxlbmd0aD4xKSl7dGhpcy5oYW5kbGVycz10LHRoaXMudHJhbnNmb3JtUGFnZVBvaW50PWE7dmFyIGk9bG4ocWUoZSksdGhpcy50cmFuc2Zvcm1QYWdlUG9pbnQpLHM9aS5wb2ludCx1PWMuZ2V0RnJhbWVEYXRhKCkudGltZXN0YW1wO3RoaXMuaGlzdG9yeT1bci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHMpLHt0aW1lc3RhbXA6dX0pXTt2YXIgZD10Lm9uU2Vzc2lvblN0YXJ0O2QmJmQoZSxzbihpLHRoaXMuaGlzdG9yeSkpLHRoaXMucmVtb3ZlTGlzdGVuZXJzPWwucGlwZShudCh3aW5kb3csXCJwb2ludGVybW92ZVwiLHRoaXMuaGFuZGxlUG9pbnRlck1vdmUpLG50KHdpbmRvdyxcInBvaW50ZXJ1cFwiLHRoaXMuaGFuZGxlUG9pbnRlclVwKSxudCh3aW5kb3csXCJwb2ludGVyY2FuY2VsXCIsdGhpcy5oYW5kbGVQb2ludGVyVXApKX19cmV0dXJuIGUucHJvdG90eXBlLnVwZGF0ZUhhbmRsZXJzPWZ1bmN0aW9uKGUpe3RoaXMuaGFuZGxlcnM9ZX0sZS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVMaXN0ZW5lcnMmJnRoaXMucmVtb3ZlTGlzdGVuZXJzKCksYy5jYW5jZWxTeW5jLnVwZGF0ZSh0aGlzLnVwZGF0ZVBvaW50KX0sZX0oKTtmdW5jdGlvbiBsbihlLHQpe3JldHVybiB0P3twb2ludDp0KGUucG9pbnQpfTplfWZ1bmN0aW9uIGNuKGUsdCl7cmV0dXJue3g6ZS54LXQueCx5OmUueS10Lnl9fWZ1bmN0aW9uIHNuKGUsdCl7dmFyIG49ZS5wb2ludDtyZXR1cm57cG9pbnQ6bixkZWx0YTpjbihuLGRuKHQpKSxvZmZzZXQ6Y24obix1bih0KSksdmVsb2NpdHk6Zm4odCwuMSl9fWZ1bmN0aW9uIHVuKGUpe3JldHVybiBlWzBdfWZ1bmN0aW9uIGRuKGUpe3JldHVybiBlW2UubGVuZ3RoLTFdfWZ1bmN0aW9uIGZuKGUsdCl7aWYoZS5sZW5ndGg8MilyZXR1cm57eDowLHk6MH07Zm9yKHZhciBuPWUubGVuZ3RoLTEscj1udWxsLG89ZG4oZSk7bj49MCYmKHI9ZVtuXSwhKG8udGltZXN0YW1wLXIudGltZXN0YW1wPkN0KHQpKSk7KW4tLTtpZighcilyZXR1cm57eDowLHk6MH07dmFyIGE9KG8udGltZXN0YW1wLXIudGltZXN0YW1wKS8xZTM7aWYoMD09PWEpcmV0dXJue3g6MCx5OjB9O3ZhciBpPXt4OihvLngtci54KS9hLHk6KG8ueS1yLnkpL2F9O3JldHVybiBpLng9PT0xLzAmJihpLng9MCksaS55PT09MS8wJiYoaS55PTApLGl9ZnVuY3Rpb24gcG4oZSl7cmV0dXJuIGV9ZnVuY3Rpb24gaG4oZSl7dmFyIHQ9ZS50b3A7cmV0dXJue3g6e21pbjplLmxlZnQsbWF4OmUucmlnaHR9LHk6e21pbjp0LG1heDplLmJvdHRvbX19fXZhciBDbj17dHJhbnNsYXRlOjAsc2NhbGU6MSxvcmlnaW46MCxvcmlnaW5Qb2ludDowfTtmdW5jdGlvbiB2bigpe3JldHVybnt4OnIuX19hc3NpZ24oe30sQ24pLHk6ci5fX2Fzc2lnbih7fSxDbil9fWZ1bmN0aW9uIGduKGUpe3JldHVybltlKFwieFwiKSxlKFwieVwiKV19ZnVuY3Rpb24gbW4oZSx0LG4pe3JldHVybiB2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1uJiYobj0uMDEpLGwuZGlzdGFuY2UoZSx0KTxufWZ1bmN0aW9uIHduKGUpe3JldHVybiBlLm1heC1lLm1pbn1mdW5jdGlvbiB5bihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj0uNSksZS5vcmlnaW49cixlLm9yaWdpblBvaW50PWwubWl4KHQubWluLHQubWF4LGUub3JpZ2luKSxlLnNjYWxlPXduKG4pL3duKHQpLG1uKGUuc2NhbGUsMSwxZS00KSYmKGUuc2NhbGU9MSksZS50cmFuc2xhdGU9bC5taXgobi5taW4sbi5tYXgsZS5vcmlnaW4pLWUub3JpZ2luUG9pbnQsbW4oZS50cmFuc2xhdGUpJiYoZS50cmFuc2xhdGU9MCl9ZnVuY3Rpb24gYm4oZSx0LG4scil7eW4oZS54LHQueCxuLngseG4oci5vcmlnaW5YKSkseW4oZS55LHQueSxuLnkseG4oci5vcmlnaW5ZKSl9ZnVuY3Rpb24geG4oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGU/ZTouNX1mdW5jdGlvbiBPbihlLHQsbil7ZS5taW49bi5taW4rdC5taW4sZS5tYXg9ZS5taW4rd24odCl9ZnVuY3Rpb24gTG4oZSx0LG4pe3ZhciByPXQubWluLG89dC5tYXg7cmV0dXJuIHZvaWQgMCE9PXImJmU8cj9lPW4/bC5taXgocixlLG4ubWluKTpNYXRoLm1heChlLHIpOnZvaWQgMCE9PW8mJmU+byYmKGU9bj9sLm1peChvLGUsbi5tYXgpOk1hdGgubWluKGUsbykpLGV9ZnVuY3Rpb24gTW4oZSx0LG4pe3JldHVybnttaW46dm9pZCAwIT09dD9lLm1pbit0OnZvaWQgMCxtYXg6dm9pZCAwIT09bj9lLm1heCtuLShlLm1heC1lLm1pbik6dm9pZCAwfX1mdW5jdGlvbiBTbihlLHQpe3ZhciBuLG89dC5taW4tZS5taW4sYT10Lm1heC1lLm1heDtyZXR1cm4gdC5tYXgtdC5taW48ZS5tYXgtZS5taW4mJihvPShuPXIuX19yZWFkKFthLG9dLDIpKVswXSxhPW5bMV0pLHttaW46ZS5taW4rbyxtYXg6ZS5taW4rYX19ZnVuY3Rpb24gX24oZSx0LG4pe3JldHVybnttaW46am4oZSx0KSxtYXg6am4oZSxuKX19ZnVuY3Rpb24gam4oZSx0KXt2YXIgbjtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT9lOm51bGwhPT0obj1lW3RdKSYmdm9pZCAwIT09bj9uOjB9ZnVuY3Rpb24gRW4oZSx0KXtyZXR1cm4gaG4oZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnRvcCxyPWUubGVmdCxvPWUuYm90dG9tLGE9ZS5yaWdodDt2b2lkIDA9PT10JiYodD1wbik7dmFyIGk9dCh7eDpyLHk6bn0pLGw9dCh7eDphLHk6b30pO3JldHVybnt0b3A6aS55LGxlZnQ6aS54LGJvdHRvbTpsLnkscmlnaHQ6bC54fX0oZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0KSl9dmFyIFBuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZGVwdGgtdC5kZXB0aH07ZnVuY3Rpb24ga24oZSl7cmV0dXJuIGUucHJvamVjdGlvbi5pc0VuYWJsZWR8fGUuc2hvdWxkUmVzZXRUcmFuc2Zvcm0oKX1mdW5jdGlvbiBIbihlLHQpe3ZvaWQgMD09PXQmJih0PVtdKTt2YXIgbj1lLnBhcmVudDtyZXR1cm4gbiYmSG4obix0KSxrbihlKSYmdC5wdXNoKGUpLHR9ZnVuY3Rpb24gVm4oZSl7aWYoIWUuc2hvdWxkUmVzZXRUcmFuc2Zvcm0oKSl7dmFyIHQsbj1lLmdldExheW91dFN0YXRlKCk7ZS5ub3RpZnlCZWZvcmVMYXlvdXRNZWFzdXJlKG4ubGF5b3V0KSxuLmlzSHlkcmF0ZWQ9ITAsbi5sYXlvdXQ9ZS5tZWFzdXJlVmlld3BvcnRCb3goKSxuLmxheW91dENvcnJlY3RlZD0odD1uLmxheW91dCx7eDpyLl9fYXNzaWduKHt9LHQueCkseTpyLl9fYXNzaWduKHt9LHQueSl9KSxlLm5vdGlmeUxheW91dE1lYXN1cmUobi5sYXlvdXQsZS5wcmV2Vmlld3BvcnRCb3h8fG4ubGF5b3V0KSxmLmRlZmF1bHQudXBkYXRlKChmdW5jdGlvbigpe3JldHVybiBlLnJlYmFzZVByb2plY3Rpb25UYXJnZXQoKX0pKX19ZnVuY3Rpb24gUm4oZSl7ZS5zaG91bGRSZXNldFRyYW5zZm9ybSgpfHwoZS5wcmV2Vmlld3BvcnRCb3g9ZS5tZWFzdXJlVmlld3BvcnRCb3goITEpLGUucmViYXNlUHJvamVjdGlvblRhcmdldCghMSxlLnByZXZWaWV3cG9ydEJveCkpfWZ1bmN0aW9uIEluKGUsdCl7cmV0dXJue21pbjp0Lm1pbi1lLm1pbixtYXg6dC5tYXgtZS5taW59fWZ1bmN0aW9uIFpuKGUsdCl7cmV0dXJue3g6SW4oZS54LHQueCkseTpJbihlLnksdC55KX19ZnVuY3Rpb24gQW4oZSl7dmFyIHQ9ZS5nZXRQcm9wcygpLG49dC5kcmFnLHI9dC5fZHJhZ1g7cmV0dXJuIG4mJiFyfWZ1bmN0aW9uIERuKGUsdCl7ZS5taW49dC5taW4sZS5tYXg9dC5tYXh9ZnVuY3Rpb24gQm4oZSx0LG4pe3JldHVybiBuK3QqKGUtbil9ZnVuY3Rpb24gVG4oZSx0LG4scixvKXtyZXR1cm4gdm9pZCAwIT09byYmKGU9Qm4oZSxvLHIpKSxCbihlLG4scikrdH1mdW5jdGlvbiAkbihlLHQsbixyLG8pe3ZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PW4mJihuPTEpLGUubWluPVRuKGUubWluLHQsbixyLG8pLGUubWF4PVRuKGUubWF4LHQsbixyLG8pfWZ1bmN0aW9uIEZuKGUsdCl7dmFyIG49dC54LHI9dC55OyRuKGUueCxuLnRyYW5zbGF0ZSxuLnNjYWxlLG4ub3JpZ2luUG9pbnQpLCRuKGUueSxyLnRyYW5zbGF0ZSxyLnNjYWxlLHIub3JpZ2luUG9pbnQpfWZ1bmN0aW9uIFduKGUsdCxuLG8pe3ZhciBhPXIuX19yZWFkKG8sMyksaT1hWzBdLGM9YVsxXSxzPWFbMl07ZS5taW49dC5taW4sZS5tYXg9dC5tYXg7dmFyIHU9dm9pZCAwIT09bltzXT9uW3NdOi41LGQ9bC5taXgodC5taW4sdC5tYXgsdSk7JG4oZSxuW2ldLG5bY10sZCxuLnNjYWxlKX12YXIgTm49W1wieFwiLFwic2NhbGVYXCIsXCJvcmlnaW5YXCJdLHpuPVtcInlcIixcInNjYWxlWVwiLFwib3JpZ2luWVwiXTtmdW5jdGlvbiBVbihlLHQsbil7V24oZS54LHQueCxuLE5uKSxXbihlLnksdC55LG4sem4pfWZ1bmN0aW9uIEduKGUsdCxuLHIsbyl7cmV0dXJuIGU9Qm4oZS09dCwxL24sciksdm9pZCAwIT09byYmKGU9Qm4oZSwxL28scikpLGV9ZnVuY3Rpb24gcW4oZSx0LG4pe3ZhciBvPXIuX19yZWFkKG4sMyksYT1vWzBdLGk9b1sxXSxjPW9bMl07IWZ1bmN0aW9uKGUsdCxuLHIsbyl7dm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09biYmKG49MSksdm9pZCAwPT09ciYmKHI9LjUpO3ZhciBhPWwubWl4KGUubWluLGUubWF4LHIpLXQ7ZS5taW49R24oZS5taW4sdCxuLGEsbyksZS5tYXg9R24oZS5tYXgsdCxuLGEsbyl9KGUsdFthXSx0W2ldLHRbY10sdC5zY2FsZSl9ZnVuY3Rpb24gWW4oZSx0KXtxbihlLngsdCxObikscW4oZS55LHQsem4pfXZhciBLbj1uZXcgU2V0O2Z1bmN0aW9uIFhuKGUsdCxuKXtlW25dfHwoZVtuXT1bXSksZVtuXS5wdXNoKHQpfWZ1bmN0aW9uIFFuKGUpe3JldHVybiBLbi5hZGQoZSksZnVuY3Rpb24oKXtyZXR1cm4gS24uZGVsZXRlKGUpfX1mdW5jdGlvbiBKbigpe2lmKEtuLnNpemUpe3ZhciBlPTAsdD1bW11dLG49W10scj1mdW5jdGlvbihuKXtyZXR1cm4gWG4odCxuLGUpfSxvPWZ1bmN0aW9uKHQpe1huKG4sdCxlKSxlKyt9O0tuLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QocixvKSxlPTB9KSksS24uY2xlYXIoKTtmb3IodmFyIGE9bi5sZW5ndGgsaT0wO2k8PWE7aSsrKXRbaV0mJnRbaV0uZm9yRWFjaCh0ciksbltpXSYmbltpXS5mb3JFYWNoKHRyKX19dmFyIGVyLHRyPWZ1bmN0aW9uKGUpe3JldHVybiBlKCl9LG5yPW5ldyBXZWFrTWFwLHJyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgdD1lLnZpc3VhbEVsZW1lbnQ7dGhpcy5pc0RyYWdnaW5nPSExLHRoaXMuY3VycmVudERpcmVjdGlvbj1udWxsLHRoaXMuY29uc3RyYWludHM9ITEsdGhpcy5lbGFzdGljPXt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fSx0aGlzLnByb3BzPXt9LHRoaXMuaGFzTXV0YXRlZENvbnN0cmFpbnRzPSExLHRoaXMuY3Vyc29yUHJvZ3Jlc3M9e3g6LjUseTouNX0sdGhpcy5vcmlnaW5Qb2ludD17fSx0aGlzLm9wZW5HbG9iYWxMb2NrPW51bGwsdGhpcy5wYW5TZXNzaW9uPW51bGwsdGhpcy52aXN1YWxFbGVtZW50PXQsdGhpcy52aXN1YWxFbGVtZW50LmVuYWJsZUxheW91dFByb2plY3Rpb24oKSxuci5zZXQodCx0aGlzKX1yZXR1cm4gZS5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLG89dm9pZCAwPT09dD97fTp0LGE9by5zbmFwVG9DdXJzb3IsaT12b2lkIDAhPT1hJiZhLHM9by5jdXJzb3JQcm9ncmVzcyx1PXRoaXMucHJvcHMudHJhbnNmb3JtUGFnZVBvaW50O3RoaXMucGFuU2Vzc2lvbj1uZXcgYW4oZSx7b25TZXNzaW9uU3RhcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ7bi5zdG9wTW90aW9uKCk7dmFyIG89ZnVuY3Rpb24oZSl7cmV0dXJuIHFlKGUsXCJjbGllbnRcIil9KGUpLnBvaW50O251bGw9PT0odD1uLmNhbmNlbExheW91dCl8fHZvaWQgMD09PXR8fHQuY2FsbChuKSxuLmNhbmNlbExheW91dD1RbigoZnVuY3Rpb24oZSx0KXt2YXIgYT1IbihuLnZpc3VhbEVsZW1lbnQpLHU9ZnVuY3Rpb24oZSl7dmFyIHQ9W10sbj1mdW5jdGlvbihlKXtrbihlKSYmdC5wdXNoKGUpLGUuY2hpbGRyZW4uZm9yRWFjaChuKX07cmV0dXJuIGUuY2hpbGRyZW4uZm9yRWFjaChuKSx0LnNvcnQoUG4pfShuLnZpc3VhbEVsZW1lbnQpLGQ9ci5fX3NwcmVhZEFycmF5KHIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZChhKSksci5fX3JlYWQodSkpLGY9ITE7bi5pc0xheW91dERyYWcoKSYmbi52aXN1YWxFbGVtZW50LmxvY2tQcm9qZWN0aW9uVGFyZ2V0KCksdCgoZnVuY3Rpb24oKXtkLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc2V0VHJhbnNmb3JtKCl9KSl9KSksZSgoZnVuY3Rpb24oKXtWbihuLnZpc3VhbEVsZW1lbnQpLHUuZm9yRWFjaChWbil9KSksdCgoZnVuY3Rpb24oKXtkLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc3RvcmVUcmFuc2Zvcm0oKX0pKSxpJiYoZj1uLnNuYXBUb0N1cnNvcihvKSl9KSksZSgoZnVuY3Rpb24oKXtCb29sZWFuKG4uZ2V0QXhpc01vdGlvblZhbHVlKFwieFwiKSYmIW4uaXNFeHRlcm5hbERyYWcoKSl8fG4udmlzdWFsRWxlbWVudC5yZWJhc2VQcm9qZWN0aW9uVGFyZ2V0KCEwLG4udmlzdWFsRWxlbWVudC5tZWFzdXJlVmlld3BvcnRCb3goITEpKSxuLnZpc3VhbEVsZW1lbnQuc2NoZWR1bGVVcGRhdGVMYXlvdXRQcm9qZWN0aW9uKCk7dmFyIGU9bi52aXN1YWxFbGVtZW50LnByb2plY3Rpb247Z24oKGZ1bmN0aW9uKHQpe2lmKCFmKXt2YXIgcj1lLnRhcmdldFt0XSxhPXIubWluLGk9ci5tYXg7bi5jdXJzb3JQcm9ncmVzc1t0XT1zP3NbdF06bC5wcm9ncmVzcyhhLGksb1t0XSl9dmFyIGM9bi5nZXRBeGlzTW90aW9uVmFsdWUodCk7YyYmKG4ub3JpZ2luUG9pbnRbdF09Yy5nZXQoKSl9KSl9KSksdCgoZnVuY3Rpb24oKXtjLmZsdXNoU3luYy51cGRhdGUoKSxjLmZsdXNoU3luYy5wcmVSZW5kZXIoKSxjLmZsdXNoU3luYy5yZW5kZXIoKSxjLmZsdXNoU3luYy5wb3N0UmVuZGVyKCl9KSksZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5yZXNvbHZlRHJhZ0NvbnN0cmFpbnRzKCl9KSl9KSl9LG9uU3RhcnQ6ZnVuY3Rpb24oZSx0KXt2YXIgcixvLGEsaT1uLnByb3BzLGw9aS5kcmFnLGM9aS5kcmFnUHJvcGFnYXRpb247KCFsfHxjfHwobi5vcGVuR2xvYmFsTG9jayYmbi5vcGVuR2xvYmFsTG9jaygpLG4ub3Blbkdsb2JhbExvY2s9bHQobCksbi5vcGVuR2xvYmFsTG9jaykpJiYoSm4oKSxuLmlzRHJhZ2dpbmc9ITAsbi5jdXJyZW50RGlyZWN0aW9uPW51bGwsbnVsbD09PShvPShyPW4ucHJvcHMpLm9uRHJhZ1N0YXJ0KXx8dm9pZCAwPT09b3x8by5jYWxsKHIsZSx0KSxudWxsPT09KGE9bi52aXN1YWxFbGVtZW50LmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09YXx8YS5zZXRBY3RpdmUoQWUuRHJhZywhMCkpfSxvbk1vdmU6ZnVuY3Rpb24oZSx0KXt2YXIgcixvLGEsaSxsPW4ucHJvcHMsYz1sLmRyYWdQcm9wYWdhdGlvbixzPWwuZHJhZ0RpcmVjdGlvbkxvY2s7aWYoY3x8bi5vcGVuR2xvYmFsTG9jayl7dmFyIHU9dC5vZmZzZXQ7aWYocyYmbnVsbD09PW4uY3VycmVudERpcmVjdGlvbilyZXR1cm4gbi5jdXJyZW50RGlyZWN0aW9uPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9MTApO3ZhciBuPW51bGw7cmV0dXJuIE1hdGguYWJzKGUueSk+dD9uPVwieVwiOk1hdGguYWJzKGUueCk+dCYmKG49XCJ4XCIpLG59KHUpLHZvaWQobnVsbCE9PW4uY3VycmVudERpcmVjdGlvbiYmKG51bGw9PT0obz0ocj1uLnByb3BzKS5vbkRpcmVjdGlvbkxvY2spfHx2b2lkIDA9PT1vfHxvLmNhbGwocixuLmN1cnJlbnREaXJlY3Rpb24pKSk7bi51cGRhdGVBeGlzKFwieFwiLHQucG9pbnQsdSksbi51cGRhdGVBeGlzKFwieVwiLHQucG9pbnQsdSksbnVsbD09PShpPShhPW4ucHJvcHMpLm9uRHJhZyl8fHZvaWQgMD09PWl8fGkuY2FsbChhLGUsdCksZXI9ZX19LG9uU2Vzc2lvbkVuZDpmdW5jdGlvbihlLHQpe3JldHVybiBuLnN0b3AoZSx0KX19LHt0cmFuc2Zvcm1QYWdlUG9pbnQ6dX0pfSxlLnByb3RvdHlwZS5yZXNvbHZlRHJhZ0NvbnN0cmFpbnRzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LmRyYWdDb25zdHJhaW50cyxyPXQuZHJhZ0VsYXN0aWMsbz10aGlzLnZpc3VhbEVsZW1lbnQuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXRDb3JyZWN0ZWQ7dGhpcy5jb25zdHJhaW50cz0hIW4mJihIKG4pP3RoaXMucmVzb2x2ZVJlZkNvbnN0cmFpbnRzKG8sbik6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnRvcCxyPXQubGVmdCxvPXQuYm90dG9tLGE9dC5yaWdodDtyZXR1cm57eDpNbihlLngscixhKSx5Ok1uKGUueSxuLG8pfX0obyxuKSksdGhpcy5lbGFzdGljPWZ1bmN0aW9uKGUpe3JldHVybiExPT09ZT9lPTA6ITA9PT1lJiYoZT0uMzUpLHt4Ol9uKGUsXCJsZWZ0XCIsXCJyaWdodFwiKSx5Ol9uKGUsXCJ0b3BcIixcImJvdHRvbVwiKX19KHIpLHRoaXMuY29uc3RyYWludHMmJiF0aGlzLmhhc011dGF0ZWRDb25zdHJhaW50cyYmZ24oKGZ1bmN0aW9uKHQpe2UuZ2V0QXhpc01vdGlvblZhbHVlKHQpJiYoZS5jb25zdHJhaW50c1t0XT1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O3JldHVybiB2b2lkIDAhPT10Lm1pbiYmKG4ubWluPXQubWluLWUubWluKSx2b2lkIDAhPT10Lm1heCYmKG4ubWF4PXQubWF4LWUubWluKSxufShvW3RdLGUuY29uc3RyYWludHNbdF0pKX0pKX0sZS5wcm90b3R5cGUucmVzb2x2ZVJlZkNvbnN0cmFpbnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5wcm9wcyxyPW4ub25NZWFzdXJlRHJhZ0NvbnN0cmFpbnRzLG89bi50cmFuc2Zvcm1QYWdlUG9pbnQsaT10LmN1cnJlbnQ7YS5pbnZhcmlhbnQobnVsbCE9PWksXCJJZiBgZHJhZ0NvbnN0cmFpbnRzYCBpcyBzZXQgYXMgYSBSZWFjdCByZWYsIHRoYXQgcmVmIG11c3QgYmUgcGFzc2VkIHRvIGFub3RoZXIgY29tcG9uZW50J3MgYHJlZmAgcHJvcC5cIiksdGhpcy5jb25zdHJhaW50c0JveD1FbihpLG8pO3ZhciBsPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3g6U24oZS54LHQueCkseTpTbihlLnksdC55KX19KGUsdGhpcy5jb25zdHJhaW50c0JveCk7aWYocil7dmFyIGM9cihmdW5jdGlvbihlKXt2YXIgdD1lLngsbj1lLnk7cmV0dXJue3RvcDpuLm1pbixib3R0b206bi5tYXgsbGVmdDp0Lm1pbixyaWdodDp0Lm1heH19KGwpKTt0aGlzLmhhc011dGF0ZWRDb25zdHJhaW50cz0hIWMsYyYmKGw9aG4oYykpfXJldHVybiBsfSxlLnByb3RvdHlwZS5jYW5jZWxEcmFnPWZ1bmN0aW9uKCl7dmFyIGUsdDt0aGlzLnZpc3VhbEVsZW1lbnQudW5sb2NrUHJvamVjdGlvblRhcmdldCgpLG51bGw9PT0oZT10aGlzLmNhbmNlbExheW91dCl8fHZvaWQgMD09PWV8fGUuY2FsbCh0aGlzKSx0aGlzLmlzRHJhZ2dpbmc9ITEsdGhpcy5wYW5TZXNzaW9uJiZ0aGlzLnBhblNlc3Npb24uZW5kKCksdGhpcy5wYW5TZXNzaW9uPW51bGwsIXRoaXMucHJvcHMuZHJhZ1Byb3BhZ2F0aW9uJiZ0aGlzLm9wZW5HbG9iYWxMb2NrJiYodGhpcy5vcGVuR2xvYmFsTG9jaygpLHRoaXMub3Blbkdsb2JhbExvY2s9bnVsbCksbnVsbD09PSh0PXRoaXMudmlzdWFsRWxlbWVudC5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PXR8fHQuc2V0QWN0aXZlKEFlLkRyYWcsITEpfSxlLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvO251bGw9PT0obj10aGlzLnBhblNlc3Npb24pfHx2b2lkIDA9PT1ufHxuLmVuZCgpLHRoaXMucGFuU2Vzc2lvbj1udWxsO3ZhciBhPXRoaXMuaXNEcmFnZ2luZztpZih0aGlzLmNhbmNlbERyYWcoKSxhKXt2YXIgaT10LnZlbG9jaXR5O3RoaXMuYW5pbWF0ZURyYWdFbmQoaSksbnVsbD09PShvPShyPXRoaXMucHJvcHMpLm9uRHJhZ0VuZCl8fHZvaWQgMD09PW98fG8uY2FsbChyLGUsdCl9fSxlLnByb3RvdHlwZS5zbmFwVG9DdXJzb3I9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gZ24oKGZ1bmN0aW9uKG4pe2lmKG9yKG4sdC5wcm9wcy5kcmFnLHQuY3VycmVudERpcmVjdGlvbikpe3ZhciByPXQuZ2V0QXhpc01vdGlvblZhbHVlKG4pO2lmKCFyKXJldHVybiB0LmN1cnNvclByb2dyZXNzW25dPS41LCEwO3ZhciBvPXQudmlzdWFsRWxlbWVudC5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dCxhPW9bbl0ubWF4LW9bbl0ubWluLGk9b1tuXS5taW4rYS8yLGw9ZVtuXS1pO3Qub3JpZ2luUG9pbnRbbl09ZVtuXSxyLnNldChsKX19KSkuaW5jbHVkZXMoITApfSxlLnByb3RvdHlwZS51cGRhdGVBeGlzPWZ1bmN0aW9uKGUsdCxuKXtpZihvcihlLHRoaXMucHJvcHMuZHJhZyx0aGlzLmN1cnJlbnREaXJlY3Rpb24pKXJldHVybiB0aGlzLmdldEF4aXNNb3Rpb25WYWx1ZShlKT90aGlzLnVwZGF0ZUF4aXNNb3Rpb25WYWx1ZShlLG4pOnRoaXMudXBkYXRlVmlzdWFsRWxlbWVudEF4aXMoZSx0KX0sZS5wcm90b3R5cGUudXBkYXRlQXhpc01vdGlvblZhbHVlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRBeGlzTW90aW9uVmFsdWUoZSk7aWYodCYmbil7dmFyIHI9dGhpcy5vcmlnaW5Qb2ludFtlXSt0W2VdLG89dGhpcy5jb25zdHJhaW50cz9MbihyLHRoaXMuY29uc3RyYWludHNbZV0sdGhpcy5lbGFzdGljW2VdKTpyO24uc2V0KG8pfX0sZS5wcm90b3R5cGUudXBkYXRlVmlzdWFsRWxlbWVudEF4aXM9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPXRoaXMudmlzdWFsRWxlbWVudC5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dFtlXSxvPXIubWF4LXIubWluLGE9dGhpcy5jdXJzb3JQcm9ncmVzc1tlXSxpPWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGE9ZS10Km47cmV0dXJuIHI/TG4oYSxyLG8pOmF9KHRbZV0sbyxhLG51bGw9PT0obj10aGlzLmNvbnN0cmFpbnRzKXx8dm9pZCAwPT09bj92b2lkIDA6bltlXSx0aGlzLmVsYXN0aWNbZV0pO3RoaXMudmlzdWFsRWxlbWVudC5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyhlLGksaStvKX0sZS5wcm90b3R5cGUuc2V0UHJvcHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kcmFnLG49dm9pZCAwIT09dCYmdCxvPWUuZHJhZ0RpcmVjdGlvbkxvY2ssYT12b2lkIDAhPT1vJiZvLGk9ZS5kcmFnUHJvcGFnYXRpb24sbD12b2lkIDAhPT1pJiZpLGM9ZS5kcmFnQ29uc3RyYWludHMscz12b2lkIDAhPT1jJiZjLHU9ZS5kcmFnRWxhc3RpYyxkPXZvaWQgMD09PXU/LjM1OnUsZj1lLmRyYWdNb21lbnR1bSxwPXZvaWQgMD09PWZ8fGYsaD1yLl9fcmVzdChlLFtcImRyYWdcIixcImRyYWdEaXJlY3Rpb25Mb2NrXCIsXCJkcmFnUHJvcGFnYXRpb25cIixcImRyYWdDb25zdHJhaW50c1wiLFwiZHJhZ0VsYXN0aWNcIixcImRyYWdNb21lbnR1bVwiXSk7dGhpcy5wcm9wcz1yLl9fYXNzaWduKHtkcmFnOm4sZHJhZ0RpcmVjdGlvbkxvY2s6YSxkcmFnUHJvcGFnYXRpb246bCxkcmFnQ29uc3RyYWludHM6cyxkcmFnRWxhc3RpYzpkLGRyYWdNb21lbnR1bTpwfSxoKX0sZS5wcm90b3R5cGUuZ2V0QXhpc01vdGlvblZhbHVlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10LmxheW91dCxyPXQubGF5b3V0SWQsbz1cIl9kcmFnXCIrZS50b1VwcGVyQ2FzZSgpO3JldHVybiB0aGlzLnByb3BzW29dP3RoaXMucHJvcHNbb106bnx8dm9pZCAwIT09cj92b2lkIDA6dGhpcy52aXN1YWxFbGVtZW50LmdldFZhbHVlKGUsMCl9LGUucHJvdG90eXBlLmlzTGF5b3V0RHJhZz1mdW5jdGlvbigpe3JldHVybiF0aGlzLmdldEF4aXNNb3Rpb25WYWx1ZShcInhcIil9LGUucHJvdG90eXBlLmlzRXh0ZXJuYWxEcmFnPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuX2RyYWdYLG49ZS5fZHJhZ1k7cmV0dXJuIHR8fG59LGUucHJvdG90eXBlLmFuaW1hdGVEcmFnRW5kPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLnByb3BzLG89bi5kcmFnLGE9bi5kcmFnTW9tZW50dW0saT1uLmRyYWdFbGFzdGljLGw9bi5kcmFnVHJhbnNpdGlvbixjPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITApO3ZhciBuLHI9ZS5nZXRQcm9qZWN0aW9uUGFyZW50KCk7cmV0dXJuISFyJiYodD9ZbihuPVpuKHIucHJvamVjdGlvbi50YXJnZXQsZS5wcm9qZWN0aW9uLnRhcmdldCksci5nZXRMYXRlc3RWYWx1ZXMoKSk6bj1abihyLmdldExheW91dFN0YXRlKCkubGF5b3V0LGUuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXQpLGduKChmdW5jdGlvbih0KXtyZXR1cm4gZS5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyh0LG5bdF0ubWluLG5bdF0ubWF4LCEwKX0pKSwhMCl9KHRoaXMudmlzdWFsRWxlbWVudCx0aGlzLmlzTGF5b3V0RHJhZygpJiYhdGhpcy5pc0V4dGVybmFsRHJhZygpKSxzPXRoaXMuY29uc3RyYWludHN8fHt9O2lmKGMmJk9iamVjdC5rZXlzKHMpLmxlbmd0aCYmdGhpcy5pc0xheW91dERyYWcoKSl7dmFyIHU9dGhpcy52aXN1YWxFbGVtZW50LmdldFByb2plY3Rpb25QYXJlbnQoKTtpZih1KXt2YXIgZD1abih1LnByb2plY3Rpb24udGFyZ2V0RmluYWwscyk7Z24oKGZ1bmN0aW9uKGUpe3ZhciB0PWRbZV0sbj10Lm1pbixyPXQubWF4O3NbZV09e21pbjppc05hTihuKT92b2lkIDA6bixtYXg6aXNOYU4ocik/dm9pZCAwOnJ9fSkpfX12YXIgZj1nbigoZnVuY3Rpb24obil7dmFyIHU7aWYob3IobixvLHQuY3VycmVudERpcmVjdGlvbikpe3ZhciBkPW51bGwhPT0odT1udWxsPT1zP3ZvaWQgMDpzW25dKSYmdm9pZCAwIT09dT91Ont9LGY9aT8yMDA6MWU2LHA9aT80MDoxZTcsaD1yLl9fYXNzaWduKHIuX19hc3NpZ24oe3R5cGU6XCJpbmVydGlhXCIsdmVsb2NpdHk6YT9lW25dOjAsYm91bmNlU3RpZmZuZXNzOmYsYm91bmNlRGFtcGluZzpwLHRpbWVDb25zdGFudDo3NTAscmVzdERlbHRhOjEscmVzdFNwZWVkOjEwfSxsKSxkKTtyZXR1cm4gdC5nZXRBeGlzTW90aW9uVmFsdWUobik/dC5zdGFydEF4aXNWYWx1ZUFuaW1hdGlvbihuLGgpOnQudmlzdWFsRWxlbWVudC5zdGFydExheW91dEFuaW1hdGlvbihuLGgsYyl9fSkpO3JldHVybiBQcm9taXNlLmFsbChmKS50aGVuKChmdW5jdGlvbigpe3ZhciBlLG47bnVsbD09PShuPShlPXQucHJvcHMpLm9uRHJhZ1RyYW5zaXRpb25FbmQpfHx2b2lkIDA9PT1ufHxuLmNhbGwoZSl9KSl9LGUucHJvdG90eXBlLnN0b3BNb3Rpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2duKChmdW5jdGlvbih0KXt2YXIgbj1lLmdldEF4aXNNb3Rpb25WYWx1ZSh0KTtuP24uc3RvcCgpOmUudmlzdWFsRWxlbWVudC5zdG9wTGF5b3V0QW5pbWF0aW9uKCl9KSl9LGUucHJvdG90eXBlLnN0YXJ0QXhpc1ZhbHVlQW5pbWF0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRBeGlzTW90aW9uVmFsdWUoZSk7aWYobil7dmFyIHI9bi5nZXQoKTtyZXR1cm4gbi5zZXQociksbi5zZXQociksVnQoZSxuLDAsdCl9fSxlLnByb3RvdHlwZS5zY2FsZVBvaW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LmRyYWc7aWYoSCh0LmRyYWdDb25zdHJhaW50cykmJnRoaXMuY29uc3RyYWludHNCb3gpe3RoaXMuc3RvcE1vdGlvbigpO3ZhciByPXt4OjAseTowfTtnbigoZnVuY3Rpb24odCl7dmFyIG4sbyxhLGksYyxzO3JbdF09KG49ZS52aXN1YWxFbGVtZW50LnByb2plY3Rpb24udGFyZ2V0W3RdLG89ZS5jb25zdHJhaW50c0JveFt0XSxpPS41LGM9d24obiksKHM9d24obykpPmM/aT1sLnByb2dyZXNzKG8ubWluLG8ubWF4LWMsbi5taW4pOmM+cyYmKGk9bC5wcm9ncmVzcyhuLm1pbixuLm1heC1zLG8ubWluKSksYT1pLGwuY2xhbXAoMCwxLGEpKX0pKSx0aGlzLnVwZGF0ZUNvbnN0cmFpbnRzKChmdW5jdGlvbigpe2duKChmdW5jdGlvbih0KXtpZihvcih0LG4sbnVsbCkpe3ZhciBvPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLm1heC1lLm1pbixvPWwubWl4KHQubWluLHQubWF4LXIsbik7cmV0dXJue21pbjpvLG1heDpvK3J9fShlLnZpc3VhbEVsZW1lbnQucHJvamVjdGlvbi50YXJnZXRbdF0sZS5jb25zdHJhaW50c0JveFt0XSxyW3RdKSxhPW8ubWluLGk9by5tYXg7ZS52aXN1YWxFbGVtZW50LnNldFByb2plY3Rpb25UYXJnZXRBeGlzKHQsYSxpKX19KSl9KSksc2V0VGltZW91dChKbiwxKX19LGUucHJvdG90eXBlLnVwZGF0ZUNvbnN0cmFpbnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dGhpcy5jYW5jZWxMYXlvdXQ9UW4oKGZ1bmN0aW9uKG4scil7dmFyIG89SG4odC52aXN1YWxFbGVtZW50KTtyKChmdW5jdGlvbigpe3JldHVybiBvLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc2V0VHJhbnNmb3JtKCl9KSl9KSksbigoZnVuY3Rpb24oKXtyZXR1cm4gVm4odC52aXN1YWxFbGVtZW50KX0pKSxyKChmdW5jdGlvbigpe3JldHVybiBvLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc3RvcmVUcmFuc2Zvcm0oKX0pKX0pKSxuKChmdW5jdGlvbigpe3QucmVzb2x2ZURyYWdDb25zdHJhaW50cygpfSkpLGUmJnIoZSl9KSl9LGUucHJvdG90eXBlLm1vdW50PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj1udChlLmdldEluc3RhbmNlKCksXCJwb2ludGVyZG93blwiLChmdW5jdGlvbihlKXt2YXIgbj10LnByb3BzLHI9bi5kcmFnLG89bi5kcmFnTGlzdGVuZXI7ciYmKHZvaWQgMD09PW98fG8pJiZ0LnN0YXJ0KGUpfSkpLHI9JGUod2luZG93LFwicmVzaXplXCIsKGZ1bmN0aW9uKCl7dC5zY2FsZVBvaW50KCl9KSksbz1lLm9uTGF5b3V0VXBkYXRlKChmdW5jdGlvbigpe3QuaXNEcmFnZ2luZyYmdC5yZXNvbHZlRHJhZ0NvbnN0cmFpbnRzKCl9KSksYT1lLnByZXZEcmFnQ3Vyc29yO3JldHVybiBhJiZ0aGlzLnN0YXJ0KGVyLHtjdXJzb3JQcm9ncmVzczphfSksZnVuY3Rpb24oKXtudWxsPT1ufHxuKCksbnVsbD09cnx8cigpLG51bGw9PW98fG8oKSx0LmNhbmNlbERyYWcoKX19LGV9KCk7ZnVuY3Rpb24gb3IoZSx0LG4pe3JldHVybiEoITAhPT10JiZ0IT09ZXx8bnVsbCE9PW4mJm4hPT1lKX12YXIgYXIsaXIsbHI9e3BhbjpmdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vblBhbixuPWUub25QYW5TdGFydCxyPWUub25QYW5FbmQsYT1lLm9uUGFuU2Vzc2lvblN0YXJ0LGk9ZS52aXN1YWxFbGVtZW50LGw9dHx8bnx8cnx8YSxjPW8udXNlUmVmKG51bGwpLHM9by51c2VDb250ZXh0KHcpLnRyYW5zZm9ybVBhZ2VQb2ludCx1PXtvblNlc3Npb25TdGFydDphLG9uU3RhcnQ6bixvbk1vdmU6dCxvbkVuZDpmdW5jdGlvbihlLHQpe2MuY3VycmVudD1udWxsLHImJnIoZSx0KX19O28udXNlRWZmZWN0KChmdW5jdGlvbigpe251bGwhPT1jLmN1cnJlbnQmJmMuY3VycmVudC51cGRhdGVIYW5kbGVycyh1KX0pKSxydChpLFwicG9pbnRlcmRvd25cIixsJiZmdW5jdGlvbihlKXtjLmN1cnJlbnQ9bmV3IGFuKGUsdSx7dHJhbnNmb3JtUGFnZVBvaW50OnN9KX0pLGR0KChmdW5jdGlvbigpe3JldHVybiBjLmN1cnJlbnQmJmMuY3VycmVudC5lbmQoKX0pKX0pKSxkcmFnOmZ0KChmdW5jdGlvbihlKXt2YXIgdD1lLmRyYWdDb250cm9scyxuPWUudmlzdWFsRWxlbWVudCxhPW8udXNlQ29udGV4dCh3KS50cmFuc2Zvcm1QYWdlUG9pbnQsaT1PKChmdW5jdGlvbigpe3JldHVybiBuZXcgcnIoe3Zpc3VhbEVsZW1lbnQ6bn0pfSkpO2kuc2V0UHJvcHMoci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGUpLHt0cmFuc2Zvcm1QYWdlUG9pbnQ6YX0pKSxvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdCYmdC5zdWJzY3JpYmUoaSl9KSxbaV0pLG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiBpLm1vdW50KG4pfSksW10pfSkpfTtmdW5jdGlvbiBjcihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmZS5zdGFydHNXaXRoKFwidmFyKC0tXCIpfSFmdW5jdGlvbihlKXtlW2UuRW50ZXJpbmc9MF09XCJFbnRlcmluZ1wiLGVbZS5QcmVzZW50PTFdPVwiUHJlc2VudFwiLGVbZS5FeGl0aW5nPTJdPVwiRXhpdGluZ1wifShhcnx8KGFyPXt9KSksdC5WaXNpYmlsaXR5QWN0aW9uPXZvaWQgMCwoaXI9dC5WaXNpYmlsaXR5QWN0aW9ufHwodC5WaXNpYmlsaXR5QWN0aW9uPXt9KSlbaXIuSGlkZT0wXT1cIkhpZGVcIixpcltpci5TaG93PTFdPVwiU2hvd1wiO3ZhciBzcj0vdmFyXFwoKC0tW2EtekEtWjAtOS1fXSspLD8gPyhbYS16QS1aMC05ICgpJSMuLC1dKyk/XFwpLztmdW5jdGlvbiB1cihlLHQsbil7dm9pZCAwPT09biYmKG49MSksYS5pbnZhcmlhbnQobjw9NCwnTWF4IENTUyB2YXJpYWJsZSBmYWxsYmFjayBkZXB0aCBkZXRlY3RlZCBpbiBwcm9wZXJ0eSBcIicrZSsnXCIuIFRoaXMgbWF5IGluZGljYXRlIGEgY2lyY3VsYXIgZmFsbGJhY2sgZGVwZW5kZW5jeS4nKTt2YXIgbz1yLl9fcmVhZChmdW5jdGlvbihlKXt2YXIgdD1zci5leGVjKGUpO2lmKCF0KXJldHVyblssXTt2YXIgbj1yLl9fcmVhZCh0LDMpO3JldHVybltuWzFdLG5bMl1dfShlKSwyKSxpPW9bMF0sbD1vWzFdO2lmKGkpe3ZhciBjPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmdldFByb3BlcnR5VmFsdWUoaSk7cmV0dXJuIGM/Yy50cmltKCk6Y3IobCk/dXIobCx0LG4rMSk6bH19ZnVuY3Rpb24gZHIoZSx0KXtyZXR1cm4gZS8odC5tYXgtdC5taW4pKjEwMH12YXIgZnI9XCJfJGNzc1wiLHByPXtwcm9jZXNzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uLnRhcmdldDtpZihcInN0cmluZ1wiPT10eXBlb2YgZSl7aWYoIWkucHgudGVzdChlKSlyZXR1cm4gZTtlPXBhcnNlRmxvYXQoZSl9cmV0dXJuIGRyKGUsci54KStcIiUgXCIrZHIoZSxyLnkpK1wiJVwifX0saHI9e2JvcmRlclJhZGl1czpyLl9fYXNzaWduKHIuX19hc3NpZ24oe30scHIpLHthcHBseVRvOltcImJvcmRlclRvcExlZnRSYWRpdXNcIixcImJvcmRlclRvcFJpZ2h0UmFkaXVzXCIsXCJib3JkZXJCb3R0b21MZWZ0UmFkaXVzXCIsXCJib3JkZXJCb3R0b21SaWdodFJhZGl1c1wiXX0pLGJvcmRlclRvcExlZnRSYWRpdXM6cHIsYm9yZGVyVG9wUmlnaHRSYWRpdXM6cHIsYm9yZGVyQm90dG9tTGVmdFJhZGl1czpwcixib3JkZXJCb3R0b21SaWdodFJhZGl1czpwcixib3hTaGFkb3c6e3Byb2Nlc3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRlbHRhLHI9dC50cmVlU2NhbGUsbz1lLGE9ZS5pbmNsdWRlcyhcInZhcihcIiksYz1bXTthJiYoZT1lLnJlcGxhY2Uoc3IsKGZ1bmN0aW9uKGUpe3JldHVybiBjLnB1c2goZSksZnJ9KSkpO3ZhciBzPWkuY29tcGxleC5wYXJzZShlKTtpZihzLmxlbmd0aD41KXJldHVybiBvO3ZhciB1PWkuY29tcGxleC5jcmVhdGVUcmFuc2Zvcm1lcihlKSxkPVwibnVtYmVyXCIhPXR5cGVvZiBzWzBdPzE6MCxmPW4ueC5zY2FsZSpyLngscD1uLnkuc2NhbGUqci55O3NbMCtkXS89ZixzWzErZF0vPXA7dmFyIGg9bC5taXgoZixwLC41KTtcIm51bWJlclwiPT10eXBlb2Ygc1syK2RdJiYoc1syK2RdLz1oKSxcIm51bWJlclwiPT10eXBlb2Ygc1szK2RdJiYoc1szK2RdLz1oKTt2YXIgQz11KHMpO2lmKGEpe3ZhciB2PTA7Qz1DLnJlcGxhY2UoZnIsKGZ1bmN0aW9uKCl7dmFyIGU9Y1t2XTtyZXR1cm4gdisrLGV9KSl9cmV0dXJuIEN9fX0sQ3I9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe3ZhciBuPW51bGwhPT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gbi5mcmFtZVRhcmdldD17eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX0sbi5jdXJyZW50QW5pbWF0aW9uVGFyZ2V0PXt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fSxuLmlzQW5pbWF0aW5nPXt4OiExLHk6ITF9LG4uc3RvcEF4aXNBbmltYXRpb249e3g6dm9pZCAwLHk6dm9pZCAwfSxuLmlzQW5pbWF0aW5nVHJlZT0hMSxuLmFuaW1hdGU9ZnVuY3Rpb24oZSxvLGEpe3ZvaWQgMD09PWEmJihhPXt9KTt2YXIgaT1hLm9yaWdpbkJveCxsPWEudGFyZ2V0Qm94LGM9YS52aXNpYmlsaXR5QWN0aW9uLHM9YS5zaG91bGRTdGFja0FuaW1hdGUsdT1hLm9uQ29tcGxldGUsZD1hLnByZXZQYXJlbnQsZj1yLl9fcmVzdChhLFtcIm9yaWdpbkJveFwiLFwidGFyZ2V0Qm94XCIsXCJ2aXNpYmlsaXR5QWN0aW9uXCIsXCJzaG91bGRTdGFja0FuaW1hdGVcIixcIm9uQ29tcGxldGVcIixcInByZXZQYXJlbnRcIl0pLHA9bi5wcm9wcyxoPXAudmlzdWFsRWxlbWVudCxDPXAubGF5b3V0O2lmKCExPT09cylyZXR1cm4gbi5pc0FuaW1hdGluZ1RyZWU9ITEsbi5zYWZlVG9SZW1vdmUoKTtpZighbi5pc0FuaW1hdGluZ1RyZWV8fCEwPT09cyl7cyYmKG4uaXNBbmltYXRpbmdUcmVlPSEwKSxvPWl8fG8sZT1sfHxlO3ZhciB2LGcsbSx3PSExLHk9aC5nZXRQcm9qZWN0aW9uUGFyZW50KCk7aWYoeSl7dmFyIGI9eS5wcmV2Vmlld3BvcnRCb3gseD15LmdldExheW91dFN0YXRlKCkubGF5b3V0O2QmJihsJiYoeD1kLmdldExheW91dFN0YXRlKCkubGF5b3V0KSxpJiYoZz15LCh2PWQpLmdldExheW91dElkKCk9PT0obT1nLmdldExheW91dElkKCkpJiYodm9pZCAwIT09bXx8dj09PWcpKSYmZC5wcmV2Vmlld3BvcnRCb3gmJihiPWQucHJldlZpZXdwb3J0Qm94KSksYiYmZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlfHwhZSYmISh0fHxuKX0oZCxpLGwpJiYodz0hMCxvPVpuKGIsbyksZT1abih4LGUpKX12YXIgTyxMLE09KEw9ZSwhKGdyKE89byl8fGdyKEwpfHxtcihPLngsTC54KSYmbXIoTy55LEwueSkpKSxTPWduKChmdW5jdGlvbihhKXt2YXIgaSxsO2lmKFwicG9zaXRpb25cIj09PUMpe3ZhciBzPWVbYV0ubWF4LWVbYV0ubWluO29bYV0ubWF4PW9bYV0ubWluK3N9aWYoIWgucHJvamVjdGlvbi5pc1RhcmdldExvY2tlZClyZXR1cm4gdm9pZCAwPT09Yz9NP24uYW5pbWF0ZUF4aXMoYSxlW2FdLG9bYV0sci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGYpLHtpc1JlbGF0aXZlOnd9KSk6KG51bGw9PT0obD0oaT1uLnN0b3BBeGlzQW5pbWF0aW9uKVthXSl8fHZvaWQgMD09PWx8fGwuY2FsbChpKSxoLnNldFByb2plY3Rpb25UYXJnZXRBeGlzKGEsZVthXS5taW4sZVthXS5tYXgsdykpOnZvaWQgaC5zZXRWaXNpYmlsaXR5KGM9PT10LlZpc2liaWxpdHlBY3Rpb24uU2hvdyl9KSk7cmV0dXJuIGguc3luY1JlbmRlcigpLFByb21pc2UuYWxsKFMpLnRoZW4oKGZ1bmN0aW9uKCl7bi5pc0FuaW1hdGluZ1RyZWU9ITEsdSYmdSgpLGgubm90aWZ5TGF5b3V0QW5pbWF0aW9uQ29tcGxldGUoKX0pKX19LG59cmV0dXJuIHIuX19leHRlbmRzKG4sZSksbi5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcy52aXN1YWxFbGVtZW50O3QuYW5pbWF0ZU1vdGlvblZhbHVlPVZ0LHQuZW5hYmxlTGF5b3V0UHJvamVjdGlvbigpLHRoaXMudW5zdWJMYXlvdXRSZWFkeT10Lm9uTGF5b3V0VXBkYXRlKHRoaXMuYW5pbWF0ZSksdC5sYXlvdXRTYWZlVG9SZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gZS5zYWZlVG9SZW1vdmUoKX0seihocil9LG4ucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLnVuc3ViTGF5b3V0UmVhZHkoKSxnbigoZnVuY3Rpb24odCl7dmFyIG4scjtyZXR1cm4gbnVsbD09PShyPShuPWUuc3RvcEF4aXNBbmltYXRpb24pW3RdKXx8dm9pZCAwPT09cj92b2lkIDA6ci5jYWxsKG4pfSkpfSxuLnByb3RvdHlwZS5hbmltYXRlQXhpcz1mdW5jdGlvbihlLHQsbixyKXt2YXIgbyxhLGk9dGhpcyxjPXZvaWQgMD09PXI/e306cixzPWMudHJhbnNpdGlvbix1PWMuaXNSZWxhdGl2ZTtpZighdGhpcy5pc0FuaW1hdGluZ1tlXXx8IW1yKHQsdGhpcy5jdXJyZW50QW5pbWF0aW9uVGFyZ2V0W2VdKSl7bnVsbD09PShhPShvPXRoaXMuc3RvcEF4aXNBbmltYXRpb24pW2VdKXx8dm9pZCAwPT09YXx8YS5jYWxsKG8pLHRoaXMuaXNBbmltYXRpbmdbZV09ITA7dmFyIGQ9dGhpcy5wcm9wcy52aXN1YWxFbGVtZW50LGY9dGhpcy5mcmFtZVRhcmdldFtlXSxwPWQuZ2V0UHJvamVjdGlvbkFuaW1hdGlvblByb2dyZXNzKClbZV07cC5jbGVhckxpc3RlbmVycygpLHAuc2V0KDApLHAuc2V0KDApO3ZhciBoPWZ1bmN0aW9uKCl7dmFyIHI9cC5nZXQoKS8xZTM7IWZ1bmN0aW9uKGUsdCxuLHIpe2UubWluPWwubWl4KHQubWluLG4ubWluLHIpLGUubWF4PWwubWl4KHQubWF4LG4ubWF4LHIpfShmLG4sdCxyKSxkLnNldFByb2plY3Rpb25UYXJnZXRBeGlzKGUsZi5taW4sZi5tYXgsdSl9O2goKTt2YXIgQz1wLm9uQ2hhbmdlKGgpO3RoaXMuc3RvcEF4aXNBbmltYXRpb25bZV09ZnVuY3Rpb24oKXtpLmlzQW5pbWF0aW5nW2VdPSExLHAuc3RvcCgpLEMoKX0sdGhpcy5jdXJyZW50QW5pbWF0aW9uVGFyZ2V0W2VdPXQ7dmFyIHY9c3x8ZC5nZXREZWZhdWx0VHJhbnNpdGlvbigpfHx3cjtyZXR1cm4gVnQoXCJ4XCI9PT1lP1wibGF5b3V0WFwiOlwibGF5b3V0WVwiLHAsMWUzLHYmJkh0KHYsXCJsYXlvdXRcIikpLnRoZW4odGhpcy5zdG9wQXhpc0FuaW1hdGlvbltlXSl9fSxuLnByb3RvdHlwZS5zYWZlVG9SZW1vdmU9ZnVuY3Rpb24oKXt2YXIgZSx0O251bGw9PT0odD0oZT10aGlzLnByb3BzKS5zYWZlVG9SZW1vdmUpfHx2b2lkIDA9PT10fHx0LmNhbGwoZSl9LG4ucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiBudWxsfSxufSh1LkNvbXBvbmVudCksdnI9e21pbjowLG1heDowfTtmdW5jdGlvbiBncihlKXtyZXR1cm4gbXIoZS54LHZyKSYmbXIoZS55LHZyKX1mdW5jdGlvbiBtcihlLHQpe3JldHVybiBlLm1pbj09PXQubWluJiZlLm1heD09PXQubWF4fXZhciB3cj17ZHVyYXRpb246LjQ1LGVhc2U6Wy40LDAsLjEsMV19LHlyPXtsYXlvdXRSZWFkeTpmdW5jdGlvbihlKXtyZXR1cm4gZS5ub3RpZnlMYXlvdXRSZWFkeSgpfX07ZnVuY3Rpb24gYnIoKXt2YXIgZT1uZXcgU2V0O3JldHVybnthZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIGUuYWRkKHQpfSxmbHVzaDpmdW5jdGlvbih0KXt2YXIgbj12b2lkIDA9PT10P3lyOnQsbz1uLmxheW91dFJlYWR5LGE9bi5wYXJlbnQ7UW4oKGZ1bmN0aW9uKHQsbil7dmFyIGk9QXJyYXkuZnJvbShlKS5zb3J0KFBuKSxsPWE/SG4oYSk6W107bigoZnVuY3Rpb24oKXtyLl9fc3ByZWFkQXJyYXkoci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKGwpKSxyLl9fcmVhZChpKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVzZXRUcmFuc2Zvcm0oKX0pKX0pKSx0KChmdW5jdGlvbigpe2kuZm9yRWFjaChWbil9KSksbigoZnVuY3Rpb24oKXtsLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc3RvcmVUcmFuc2Zvcm0oKX0pKSxpLmZvckVhY2gobyl9KSksdCgoZnVuY3Rpb24oKXtpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuaXNQcmVzZW50JiYoZS5wcmVzZW5jZT1hci5QcmVzZW50KX0pKX0pKSxuKChmdW5jdGlvbigpe2MuZmx1c2hTeW5jLnByZVJlbmRlcigpLGMuZmx1c2hTeW5jLnJlbmRlcigpfSkpLHQoKGZ1bmN0aW9uKCl7Zi5kZWZhdWx0LnBvc3RSZW5kZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIGkuZm9yRWFjaCh4cil9KSksZS5jbGVhcigpfSkpfSkpLEpuKCl9fX1mdW5jdGlvbiB4cihlKXtlLnByZXZWaWV3cG9ydEJveD1lLnByb2plY3Rpb24udGFyZ2V0fXZhciBPcj1vLmNyZWF0ZUNvbnRleHQoYnIoKSksTHI9by5jcmVhdGVDb250ZXh0KGJyKCkpO2Z1bmN0aW9uIE1yKGUpe3JldHVybiEhZS5mb3JjZVVwZGF0ZX12YXIgU3I9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBudWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIHIuX19leHRlbmRzKHQsZSksdC5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5zeW5jTGF5b3V0LG49ZS5mcmFtZXJTeW5jTGF5b3V0LHI9ZS52aXN1YWxFbGVtZW50O01yKHQpJiZ0LnJlZ2lzdGVyKHIpLE1yKG4pJiZuLnJlZ2lzdGVyKHIpLHIub25Vbm1vdW50KChmdW5jdGlvbigpe01yKHQpJiZ0LnJlbW92ZShyKSxNcihuKSYmbi5yZW1vdmUocil9KSl9LHQucHJvdG90eXBlLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuc3luY0xheW91dCxuPWUudmlzdWFsRWxlbWVudDtyZXR1cm4gTXIodCk/dC5zeW5jVXBkYXRlKCk6KFJuKG4pLHQuYWRkKG4pKSxudWxsfSx0LnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLnN5bmNMYXlvdXQ7TXIoZSl8fGUuZmx1c2goKX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHR9KGQuZGVmYXVsdC5Db21wb25lbnQpLF9yPXttZWFzdXJlTGF5b3V0OmZ1bmN0aW9uKGUpe3ZhciB0PW8udXNlQ29udGV4dChPciksbj1vLnVzZUNvbnRleHQoTHIpO3JldHVybiBkLmRlZmF1bHQuY3JlYXRlRWxlbWVudChTcixyLl9fYXNzaWduKHt9LGUse3N5bmNMYXlvdXQ6dCxmcmFtZXJTeW5jTGF5b3V0Om59KSl9LGxheW91dEFuaW1hdGlvbjpmdW5jdGlvbihlKXt2YXIgdD1yLl9fcmVhZChMKCksMilbMV07cmV0dXJuIHUuY3JlYXRlRWxlbWVudChDcixyLl9fYXNzaWduKHt9LGUse3NhZmVUb1JlbW92ZTp0fSkpfX07ZnVuY3Rpb24ganIoKXtyZXR1cm57aXNIeWRyYXRlZDohMSxsYXlvdXQ6e3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19LGxheW91dENvcnJlY3RlZDp7eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX0sdHJlZVNjYWxlOnt4OjEseToxfSxkZWx0YTp2bigpLGRlbHRhRmluYWw6dm4oKSxkZWx0YVRyYW5zZm9ybTpcIlwifX12YXIgRXI9anIoKTtmdW5jdGlvbiBQcihlLHQsbil7dmFyIHI9ZS54LG89ZS55LGE9XCJ0cmFuc2xhdGUzZChcIityLnRyYW5zbGF0ZS90LngrXCJweCwgXCIrby50cmFuc2xhdGUvdC55K1wicHgsIDApIFwiO2lmKG4pe3ZhciBpPW4ucm90YXRlLGw9bi5yb3RhdGVYLGM9bi5yb3RhdGVZO2kmJihhKz1cInJvdGF0ZShcIitpK1wiKSBcIiksbCYmKGErPVwicm90YXRlWChcIitsK1wiKSBcIiksYyYmKGErPVwicm90YXRlWShcIitjK1wiKSBcIil9cmV0dXJuIGErPVwic2NhbGUoXCIrci5zY2FsZStcIiwgXCIrby5zY2FsZStcIilcIixufHxhIT09SHI/YTpcIlwifWZ1bmN0aW9uIGtyKGUpe3ZhciB0PWUuZGVsdGFGaW5hbDtyZXR1cm4gMTAwKnQueC5vcmlnaW4rXCIlIFwiKzEwMCp0Lnkub3JpZ2luK1wiJSAwXCJ9dmFyIEhyPVByKEVyLmRlbHRhLEVyLnRyZWVTY2FsZSx7eDoxLHk6MX0pLFZyPVtcIkxheW91dE1lYXN1cmVcIixcIkJlZm9yZUxheW91dE1lYXN1cmVcIixcIkxheW91dFVwZGF0ZVwiLFwiVmlld3BvcnRCb3hVcGRhdGVcIixcIlVwZGF0ZVwiLFwiUmVuZGVyXCIsXCJBbmltYXRpb25Db21wbGV0ZVwiLFwiTGF5b3V0QW5pbWF0aW9uQ29tcGxldGVcIixcIkFuaW1hdGlvblN0YXJ0XCIsXCJTZXRBeGlzVGFyZ2V0XCIsXCJVbm1vdW50XCJdLFJyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuY2hpbGRyZW49W10sdGhpcy5pc0RpcnR5PSExfXJldHVybiBlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7UnQodGhpcy5jaGlsZHJlbixlKSx0aGlzLmlzRGlydHk9ITB9LGUucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihlKXtJdCh0aGlzLmNoaWxkcmVuLGUpLHRoaXMuaXNEaXJ0eT0hMH0sZS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlKXt0aGlzLmlzRGlydHkmJnRoaXMuY2hpbGRyZW4uc29ydChQbiksdGhpcy5pc0RpcnR5PSExLHRoaXMuY2hpbGRyZW4uZm9yRWFjaChlKX0sZX0oKSxJcj1mdW5jdGlvbihlKXt2YXIgdD1lLnRyZWVUeXBlLG49dm9pZCAwPT09dD9cIlwiOnQsbz1lLmJ1aWxkLGE9ZS5nZXRCYXNlVGFyZ2V0LGk9ZS5tYWtlVGFyZ2V0QW5pbWF0YWJsZSxzPWUubWVhc3VyZVZpZXdwb3J0Qm94LHU9ZS5yZW5kZXIsZD1lLnJlYWRWYWx1ZUZyb21JbnN0YW5jZSxwPWUucmVzZXRUcmFuc2Zvcm0saD1lLnJlc3RvcmVUcmFuc2Zvcm0sQz1lLnJlbW92ZVZhbHVlRnJvbVJlbmRlclN0YXRlLHY9ZS5zb3J0Tm9kZVBvc2l0aW9uLGc9ZS5zY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG09ZS5wYXJlbnQsdz1lLnByb3BzLHk9ZS5wcmVzZW5jZUlkLGI9ZS5ibG9ja0luaXRpYWxBbmltYXRpb24seD1lLnZpc3VhbFN0YXRlO3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgTyxMLE0sUyxfLGosRT14LmxhdGVzdFZhbHVlcyxQPXgucmVuZGVyU3RhdGUsaz1mdW5jdGlvbigpe3ZhciBlPVZyLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFp0fSkpLHQ9e30sbj17Y2xlYXJBbGxMaXN0ZW5lcnM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5jbGVhcigpfSkpfSx1cGRhdGVQcm9wTGlzdGVuZXJzOmZ1bmN0aW9uKGUpe3JldHVybiBWci5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgbztudWxsPT09KG89dFtyXSl8fHZvaWQgMD09PW98fG8uY2FsbCh0KTt2YXIgYT1cIm9uXCIrcixpPWVbYV07aSYmKHRbcl09blthXShpKSl9KSl9fTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe25bXCJvblwiK1ZyW3RdXT1mdW5jdGlvbih0KXtyZXR1cm4gZS5hZGQodCl9LG5bXCJub3RpZnlcIitWclt0XV09ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIGUubm90aWZ5LmFwcGx5KGUsci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKHQpKSl9fSkpLG59KCksSD17aXNFbmFibGVkOiExLGlzSHlkcmF0ZWQ6ITEsaXNUYXJnZXRMb2NrZWQ6ITEsdGFyZ2V0Ont4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fSx0YXJnZXRGaW5hbDp7eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX19LFY9SCxJPUUsWj1qcigpLEI9ITEsVD1uZXcgTWFwLCQ9bmV3IE1hcCxGPXt9LFc9ci5fX2Fzc2lnbih7fSxFKTtmdW5jdGlvbiBOKCl7TyYmKEouaXNQcm9qZWN0aW9uUmVhZHkoKSYmKFVuKFYudGFyZ2V0RmluYWwsVi50YXJnZXQsSSksYm4oWi5kZWx0YUZpbmFsLFoubGF5b3V0Q29ycmVjdGVkLFYudGFyZ2V0RmluYWwsRSkpLHooKSx1KE8sUCkpfWZ1bmN0aW9uIHooKXt2YXIgZT1FO2lmKFMmJlMuaXNBY3RpdmUoKSl7dmFyIG49Uy5nZXRDcm9zc2ZhZGVTdGF0ZShKKTtuJiYoZT1uKX1vKEosUCxlLFYsWix0LHcpfWZ1bmN0aW9uIFUoKXtrLm5vdGlmeVVwZGF0ZShFKX1mdW5jdGlvbiBHKCl7Si5sYXlvdXRUcmVlLmZvckVhY2goQXIpfXZhciBxPWcodyk7Zm9yKHZhciBZIGluIHEpe3ZhciBLPXFbWV07dm9pZCAwIT09RVtZXSYmZWUoSykmJksuc2V0KEVbWV0sITEpfXZhciBYPUEodyksUT1EKHcpLEo9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt0cmVlVHlwZTpuLGN1cnJlbnQ6bnVsbCxkZXB0aDptP20uZGVwdGgrMTowLHBhcmVudDptLGNoaWxkcmVuOm5ldyBTZXQscGF0aDptP3IuX19zcHJlYWRBcnJheShyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQobS5wYXRoKSksW21dKTpbXSxsYXlvdXRUcmVlOm0/bS5sYXlvdXRUcmVlOm5ldyBScixwcmVzZW5jZUlkOnkscHJvamVjdGlvbjpILHZhcmlhbnRDaGlsZHJlbjpRP25ldyBTZXQ6dm9pZCAwLGlzVmlzaWJsZTp2b2lkIDAsbWFudWFsbHlBbmltYXRlT25Nb3VudDpCb29sZWFuKG51bGw9PW0/dm9pZCAwOm0uaXNNb3VudGVkKCkpLGJsb2NrSW5pdGlhbEFuaW1hdGlvbjpiLGlzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKE8pfSxtb3VudDpmdW5jdGlvbihlKXtPPUouY3VycmVudD1lLEoucG9pbnRUbyhKKSxRJiZtJiYhWCYmKGo9bnVsbD09bT92b2lkIDA6bS5hZGRWYXJpYW50Q2hpbGQoSikpLG51bGw9PW18fG0uY2hpbGRyZW4uYWRkKEopfSx1bm1vdW50OmZ1bmN0aW9uKCl7Yy5jYW5jZWxTeW5jLnVwZGF0ZShVKSxjLmNhbmNlbFN5bmMucmVuZGVyKE4pLGMuY2FuY2VsU3luYy5wcmVSZW5kZXIoSi51cGRhdGVMYXlvdXRQcm9qZWN0aW9uKSwkLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9KSksSi5zdG9wTGF5b3V0QW5pbWF0aW9uKCksSi5sYXlvdXRUcmVlLnJlbW92ZShKKSxudWxsPT1qfHxqKCksbnVsbD09bXx8bS5jaGlsZHJlbi5kZWxldGUoSiksbnVsbD09TXx8TSgpLGsuY2xlYXJBbGxMaXN0ZW5lcnMoKX0sYWRkVmFyaWFudENoaWxkOmZ1bmN0aW9uKGUpe3ZhciB0LG49Si5nZXRDbG9zZXN0VmFyaWFudE5vZGUoKTtpZihuKXJldHVybiBudWxsPT09KHQ9bi52YXJpYW50Q2hpbGRyZW4pfHx2b2lkIDA9PT10fHx0LmFkZChlKSxmdW5jdGlvbigpe3JldHVybiBuLnZhcmlhbnRDaGlsZHJlbi5kZWxldGUoZSl9fSxzb3J0Tm9kZVBvc2l0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiB2JiZuPT09ZS50cmVlVHlwZT92KEouZ2V0SW5zdGFuY2UoKSxlLmdldEluc3RhbmNlKCkpOjB9LGdldENsb3Nlc3RWYXJpYW50Tm9kZTpmdW5jdGlvbigpe3JldHVybiBRP0o6bnVsbD09bT92b2lkIDA6bS5nZXRDbG9zZXN0VmFyaWFudE5vZGUoKX0sc2NoZWR1bGVVcGRhdGVMYXlvdXRQcm9qZWN0aW9uOm0/bS5zY2hlZHVsZVVwZGF0ZUxheW91dFByb2plY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gZi5kZWZhdWx0LnByZVJlbmRlcihKLnVwZGF0ZVRyZWVMYXlvdXRQcm9qZWN0aW9uLCExLCEwKX0sZ2V0TGF5b3V0SWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5sYXlvdXRJZH0sZ2V0SW5zdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gT30sZ2V0U3RhdGljVmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEVbZV19LHNldFN0YXRpY1ZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEVbZV09dH0sZ2V0TGF0ZXN0VmFsdWVzOmZ1bmN0aW9uKCl7cmV0dXJuIEV9LHNldFZpc2liaWxpdHk6ZnVuY3Rpb24oZSl7Si5pc1Zpc2libGUhPT1lJiYoSi5pc1Zpc2libGU9ZSxKLnNjaGVkdWxlUmVuZGVyKCkpfSxtYWtlVGFyZ2V0QW5pbWF0YWJsZTpmdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0hMCksaShKLGUsdyx0KX0sYWRkVmFsdWU6ZnVuY3Rpb24oZSx0KXtKLmhhc1ZhbHVlKGUpJiZKLnJlbW92ZVZhbHVlKGUpLFQuc2V0KGUsdCksRVtlXT10LmdldCgpLGZ1bmN0aW9uKGUsdCl7dmFyIG49dC5vbkNoYW5nZSgoZnVuY3Rpb24odCl7RVtlXT10LHcub25VcGRhdGUmJmYuZGVmYXVsdC51cGRhdGUoVSwhMSwhMCl9KSkscj10Lm9uUmVuZGVyUmVxdWVzdChKLnNjaGVkdWxlUmVuZGVyKTskLnNldChlLChmdW5jdGlvbigpe24oKSxyKCl9KSl9KGUsdCl9LHJlbW92ZVZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O1QuZGVsZXRlKGUpLG51bGw9PT0odD0kLmdldChlKSl8fHZvaWQgMD09PXR8fHQoKSwkLmRlbGV0ZShlKSxkZWxldGUgRVtlXSxDKGUsUCl9LGhhc1ZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBULmhhcyhlKX0sZ2V0VmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1ULmdldChlKTtyZXR1cm4gdm9pZCAwPT09biYmdm9pZCAwIT09dCYmKG49RHQodCksSi5hZGRWYWx1ZShlLG4pKSxufSxmb3JFYWNoVmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFQuZm9yRWFjaChlKX0scmVhZFZhbHVlOmZ1bmN0aW9uKGUpe3ZhciBuO3JldHVybiBudWxsIT09KG49RVtlXSkmJnZvaWQgMCE9PW4/bjpkKE8sZSx0KX0sc2V0QmFzZVRhcmdldDpmdW5jdGlvbihlLHQpe1dbZV09dH0sZ2V0QmFzZVRhcmdldDpmdW5jdGlvbihlKXtpZihhKXt2YXIgdD1hKHcsZSk7aWYodm9pZCAwIT09dCYmIWVlKHQpKXJldHVybiB0fXJldHVybiBXW2VdfX0saykse2J1aWxkOmZ1bmN0aW9uKCl7cmV0dXJuIHooKSxQfSxzY2hlZHVsZVJlbmRlcjpmdW5jdGlvbigpe2YuZGVmYXVsdC5yZW5kZXIoTiwhMSwhMCl9LHN5bmNSZW5kZXI6TixzZXRQcm9wczpmdW5jdGlvbihlKXt3PWUsay51cGRhdGVQcm9wTGlzdGVuZXJzKGUpLEY9ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2Zvcih2YXIgbyBpbiB0KXt2YXIgYT10W29dLGk9bltvXTtpZihlZShhKSllLmFkZFZhbHVlKG8sYSk7ZWxzZSBpZihlZShpKSllLmFkZFZhbHVlKG8sRHQoYSkpO2Vsc2UgaWYoaSE9PWEpaWYoZS5oYXNWYWx1ZShvKSl7dmFyIGw9ZS5nZXRWYWx1ZShvKTshbC5oYXNBbmltYXRlZCYmbC5zZXQoYSl9ZWxzZSBlLmFkZFZhbHVlKG8sRHQobnVsbCE9PShyPWUuZ2V0U3RhdGljVmFsdWUobykpJiZ2b2lkIDAhPT1yP3I6YSkpfWZvcih2YXIgbyBpbiBuKXZvaWQgMD09PXRbb10mJmUucmVtb3ZlVmFsdWUobyk7cmV0dXJuIHR9KEosZyh3KSxGKX0sZ2V0UHJvcHM6ZnVuY3Rpb24oKXtyZXR1cm4gd30sZ2V0VmFyaWFudDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gbnVsbD09PSh0PXcudmFyaWFudHMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0W2VdfSxnZXREZWZhdWx0VHJhbnNpdGlvbjpmdW5jdGlvbigpe3JldHVybiB3LnRyYW5zaXRpb259LGdldFZhcmlhbnRDb250ZXh0OmZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUmJihlPSExKSxlKXJldHVybiBudWxsPT1tP3ZvaWQgMDptLmdldFZhcmlhbnRDb250ZXh0KCk7aWYoIVgpe3ZhciB0PShudWxsPT1tP3ZvaWQgMDptLmdldFZhcmlhbnRDb250ZXh0KCkpfHx7fTtyZXR1cm4gdm9pZCAwIT09dy5pbml0aWFsJiYodC5pbml0aWFsPXcuaW5pdGlhbCksdH1mb3IodmFyIG49e30scj0wO3I8VHI7cisrKXt2YXIgbz1CcltyXSxhPXdbb107KFIoYSl8fCExPT09YSkmJihuW29dPWEpfXJldHVybiBufSxlbmFibGVMYXlvdXRQcm9qZWN0aW9uOmZ1bmN0aW9uKCl7SC5pc0VuYWJsZWQ9ITAsSi5sYXlvdXRUcmVlLmFkZChKKX0sbG9ja1Byb2plY3Rpb25UYXJnZXQ6ZnVuY3Rpb24oKXtILmlzVGFyZ2V0TG9ja2VkPSEwfSx1bmxvY2tQcm9qZWN0aW9uVGFyZ2V0OmZ1bmN0aW9uKCl7Si5zdG9wTGF5b3V0QW5pbWF0aW9uKCksSC5pc1RhcmdldExvY2tlZD0hMX0sZ2V0TGF5b3V0U3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gWn0sc2V0Q3Jvc3NmYWRlcjpmdW5jdGlvbihlKXtTPWV9LGlzUHJvamVjdGlvblJlYWR5OmZ1bmN0aW9uKCl7cmV0dXJuIEguaXNFbmFibGVkJiZILmlzSHlkcmF0ZWQmJlouaXNIeWRyYXRlZH0sc3RhcnRMYXlvdXRBbmltYXRpb246ZnVuY3Rpb24oZSx0LG4pe3ZvaWQgMD09PW4mJihuPSExKTt2YXIgcj1KLmdldFByb2plY3Rpb25BbmltYXRpb25Qcm9ncmVzcygpW2VdLG89bj9ILnJlbGF0aXZlVGFyZ2V0W2VdOkgudGFyZ2V0W2VdLGE9by5taW4saT1vLm1heC1hO3JldHVybiByLmNsZWFyTGlzdGVuZXJzKCksci5zZXQoYSksci5zZXQoYSksci5vbkNoYW5nZSgoZnVuY3Rpb24odCl7Si5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyhlLHQsdCtpLG4pfSkpLEouYW5pbWF0ZU1vdGlvblZhbHVlKGUsciwwLHQpfSxzdG9wTGF5b3V0QW5pbWF0aW9uOmZ1bmN0aW9uKCl7Z24oKGZ1bmN0aW9uKGUpe3JldHVybiBKLmdldFByb2plY3Rpb25BbmltYXRpb25Qcm9ncmVzcygpW2VdLnN0b3AoKX0pKX0sbWVhc3VyZVZpZXdwb3J0Qm94OmZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSEwKTt2YXIgbj1zKE8sdCk7cmV0dXJuIGV8fFluKG4sRSksbn0sZ2V0UHJvamVjdGlvbkFuaW1hdGlvblByb2dyZXNzOmZ1bmN0aW9uKCl7cmV0dXJuIF98fChfPXt4OkR0KDApLHk6RHQoMCl9KSxffSxzZXRQcm9qZWN0aW9uVGFyZ2V0QXhpczpmdW5jdGlvbihlLHQsbixyKXt2YXIgbzt2b2lkIDA9PT1yJiYocj0hMSkscj8oSC5yZWxhdGl2ZVRhcmdldHx8KEgucmVsYXRpdmVUYXJnZXQ9e3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19KSxvPUgucmVsYXRpdmVUYXJnZXRbZV0pOihILnJlbGF0aXZlVGFyZ2V0PXZvaWQgMCxvPUgudGFyZ2V0W2VdKSxILmlzSHlkcmF0ZWQ9ITAsby5taW49dCxvLm1heD1uLEI9ITAsay5ub3RpZnlTZXRBeGlzVGFyZ2V0KCl9LHJlYmFzZVByb2plY3Rpb25UYXJnZXQ6ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD1aLmxheW91dCk7dmFyIG49Si5nZXRQcm9qZWN0aW9uQW5pbWF0aW9uUHJvZ3Jlc3MoKSxyPW4ueCxvPW4ueSxhPSEoSC5yZWxhdGl2ZVRhcmdldHx8SC5pc1RhcmdldExvY2tlZHx8ci5pc0FuaW1hdGluZygpfHxvLmlzQW5pbWF0aW5nKCkpOyhlfHxhKSYmZ24oKGZ1bmN0aW9uKGUpe3ZhciBuPXRbZV0scj1uLm1pbixvPW4ubWF4O0ouc2V0UHJvamVjdGlvblRhcmdldEF4aXMoZSxyLG8pfSkpfSxub3RpZnlMYXlvdXRSZWFkeTpmdW5jdGlvbihlKXshZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRQcm9qZWN0aW9uUGFyZW50KCk7aWYodCl7dmFyIG49Wm4odC5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dCxlLmdldExheW91dFN0YXRlKCkubGF5b3V0KTtnbigoZnVuY3Rpb24odCl7ZS5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyh0LG5bdF0ubWluLG5bdF0ubWF4LCEwKX0pKX1lbHNlIGUucmViYXNlUHJvamVjdGlvblRhcmdldCgpfShKKSxKLm5vdGlmeUxheW91dFVwZGF0ZShaLmxheW91dCxKLnByZXZWaWV3cG9ydEJveHx8Wi5sYXlvdXQsZSl9LHJlc2V0VHJhbnNmb3JtOmZ1bmN0aW9uKCl7cmV0dXJuIHAoSixPLHcpfSxyZXN0b3JlVHJhbnNmb3JtOmZ1bmN0aW9uKCl7cmV0dXJuIGgoTyxQKX0sdXBkYXRlTGF5b3V0UHJvamVjdGlvbjpmdW5jdGlvbigpe2lmKEouaXNQcm9qZWN0aW9uUmVhZHkoKSl7dmFyIGU9Wi5kZWx0YSx0PVoudHJlZVNjYWxlLG49dC54LHI9dC55LG89Wi5kZWx0YVRyYW5zZm9ybTsoZnVuY3Rpb24oZSx0LG4scil7dmFyIG8sYSxpPWUuZGVsdGEsbD1lLmxheW91dCxjPWUubGF5b3V0Q29ycmVjdGVkLHM9ZS50cmVlU2NhbGUsdT10LnRhcmdldDthPWwsRG4oKG89YykueCxhLngpLERuKG8ueSxhLnkpLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uLmxlbmd0aDtpZihyKXt2YXIgbyxhO3QueD10Lnk9MTtmb3IodmFyIGk9MDtpPHI7aSsrKWE9KG89bltpXSkuZ2V0TGF5b3V0U3RhdGUoKS5kZWx0YSx0LngqPWEueC5zY2FsZSx0LnkqPWEueS5zY2FsZSxGbihlLGEpLEFuKG8pJiZVbihlLGUsby5nZXRMYXRlc3RWYWx1ZXMoKSl9fShjLHMsbiksYm4oaSxjLHUscil9KShaLFYsSi5wYXRoLEUpLEImJkoubm90aWZ5Vmlld3BvcnRCb3hVcGRhdGUoVi50YXJnZXQsZSksQj0hMTt2YXIgYT1QcihlLHQpO2E9PT1vJiZuPT09dC54JiZyPT09dC55fHxKLnNjaGVkdWxlUmVuZGVyKCksWi5kZWx0YVRyYW5zZm9ybT1hfX0sdXBkYXRlVHJlZUxheW91dFByb2plY3Rpb246ZnVuY3Rpb24oKXtKLmxheW91dFRyZWUuZm9yRWFjaChaciksZi5kZWZhdWx0LnByZVJlbmRlcihHLCExLCEwKX0sZ2V0UHJvamVjdGlvblBhcmVudDpmdW5jdGlvbigpe2lmKHZvaWQgMD09PUwpe2Zvcih2YXIgZT0hMSx0PUoucGF0aC5sZW5ndGgtMTt0Pj0wO3QtLSl7dmFyIG49Si5wYXRoW3RdO2lmKG4ucHJvamVjdGlvbi5pc0VuYWJsZWQpe2U9bjticmVha319TD1lfXJldHVybiBMfSxyZXNvbHZlUmVsYXRpdmVUYXJnZXRCb3g6ZnVuY3Rpb24oKXt2YXIgZT1KLmdldFByb2plY3Rpb25QYXJlbnQoKTtpZihILnJlbGF0aXZlVGFyZ2V0JiZlJiYoZnVuY3Rpb24oZSx0KXtPbihlLnRhcmdldC54LGUucmVsYXRpdmVUYXJnZXQueCx0LnRhcmdldC54KSxPbihlLnRhcmdldC55LGUucmVsYXRpdmVUYXJnZXQueSx0LnRhcmdldC55KX0oSCxlLnByb2plY3Rpb24pLEFuKGUpKSl7dmFyIHQ9SC50YXJnZXQ7VW4odCx0LGUuZ2V0TGF0ZXN0VmFsdWVzKCkpfX0sc2hvdWxkUmVzZXRUcmFuc2Zvcm06ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbih3Ll9sYXlvdXRSZXNldFRyYW5zZm9ybSl9LHBvaW50VG86ZnVuY3Rpb24oZSl7Vj1lLnByb2plY3Rpb24sST1lLmdldExhdGVzdFZhbHVlcygpLG51bGw9PU18fE0oKSxNPWwucGlwZShlLm9uU2V0QXhpc1RhcmdldChKLnNjaGVkdWxlVXBkYXRlTGF5b3V0UHJvamVjdGlvbiksZS5vbkxheW91dEFuaW1hdGlvbkNvbXBsZXRlKChmdW5jdGlvbigpe3ZhciBlO0ouaXNQcmVzZW50P0oucHJlc2VuY2U9YXIuUHJlc2VudDpudWxsPT09KGU9Si5sYXlvdXRTYWZlVG9SZW1vdmUpfHx2b2lkIDA9PT1lfHxlLmNhbGwoSil9KSkpfSxpc1ByZXNlbnQ6ITAscHJlc2VuY2U6YXIuRW50ZXJpbmd9KTtyZXR1cm4gSn19O2Z1bmN0aW9uIFpyKGUpe2UucmVzb2x2ZVJlbGF0aXZlVGFyZ2V0Qm94KCl9ZnVuY3Rpb24gQXIoZSl7ZS51cGRhdGVMYXlvdXRQcm9qZWN0aW9uKCl9dmFyIERyLEJyPXIuX19zcHJlYWRBcnJheShbXCJpbml0aWFsXCJdLHIuX19yZWFkKGVuKSksVHI9QnIubGVuZ3RoLCRyPW5ldyBTZXQoW1wid2lkdGhcIixcImhlaWdodFwiLFwidG9wXCIsXCJsZWZ0XCIsXCJyaWdodFwiLFwiYm90dG9tXCIsXCJ4XCIsXCJ5XCJdKSxGcj1mdW5jdGlvbihlKXtyZXR1cm4gJHIuaGFzKGUpfSxXcj1mdW5jdGlvbihlLHQpe2Uuc2V0KHQsITEpLGUuc2V0KHQpfSxOcj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PWkubnVtYmVyfHxlPT09aS5weH07IWZ1bmN0aW9uKGUpe2Uud2lkdGg9XCJ3aWR0aFwiLGUuaGVpZ2h0PVwiaGVpZ2h0XCIsZS5sZWZ0PVwibGVmdFwiLGUucmlnaHQ9XCJyaWdodFwiLGUudG9wPVwidG9wXCIsZS5ib3R0b209XCJib3R0b21cIn0oRHJ8fChEcj17fSkpO3ZhciB6cj1mdW5jdGlvbihlLHQpe3JldHVybiBwYXJzZUZsb2F0KGUuc3BsaXQoXCIsIFwiKVt0XSl9LFVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dmFyIG89ci50cmFuc2Zvcm07aWYoXCJub25lXCI9PT1vfHwhbylyZXR1cm4gMDt2YXIgYT1vLm1hdGNoKC9ebWF0cml4M2RcXCgoLispXFwpJC8pO2lmKGEpcmV0dXJuIHpyKGFbMV0sdCk7dmFyIGk9by5tYXRjaCgvXm1hdHJpeFxcKCguKylcXCkkLyk7cmV0dXJuIGk/enIoaVsxXSxlKTowfX0sR3I9bmV3IFNldChbXCJ4XCIsXCJ5XCIsXCJ6XCJdKSxxcj1HLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIUdyLmhhcyhlKX0pKSxZcj17d2lkdGg6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS54O3JldHVybiB0Lm1heC10Lm1pbn0saGVpZ2h0OmZ1bmN0aW9uKGUpe3ZhciB0PWUueTtyZXR1cm4gdC5tYXgtdC5taW59LHRvcDpmdW5jdGlvbihlLHQpe3ZhciBuPXQudG9wO3JldHVybiBwYXJzZUZsb2F0KG4pfSxsZWZ0OmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5sZWZ0O3JldHVybiBwYXJzZUZsb2F0KG4pfSxib3R0b206ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnkscj10LnRvcDtyZXR1cm4gcGFyc2VGbG9hdChyKSsobi5tYXgtbi5taW4pfSxyaWdodDpmdW5jdGlvbihlLHQpe3ZhciBuPWUueCxyPXQubGVmdDtyZXR1cm4gcGFyc2VGbG9hdChyKSsobi5tYXgtbi5taW4pfSx4OlVyKDQsMTMpLHk6VXIoNSwxNCl9O2Z1bmN0aW9uIEtyKGUsdCxuLG8pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkuc29tZShGcil9KHQpP2Z1bmN0aW9uKGUsdCxuLG8pe3ZvaWQgMD09PW4mJihuPXt9KSx2b2lkIDA9PT1vJiYobz17fSksdD1yLl9fYXNzaWduKHt9LHQpLG89ci5fX2Fzc2lnbih7fSxvKTt2YXIgbD1PYmplY3Qua2V5cyh0KS5maWx0ZXIoRnIpLGM9W10scz0hMSx1PVtdO2lmKGwuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIGw9ZS5nZXRWYWx1ZShyKTtpZihlLmhhc1ZhbHVlKHIpKXt2YXIgZCxmPW5bcl0scD10W3JdLGg9JHQoZik7aWYoUGUocCkpZm9yKHZhciBDPXAubGVuZ3RoLHY9bnVsbD09PXBbMF0/MTowO3Y8Qzt2KyspZD9hLmludmFyaWFudCgkdChwW3ZdKT09PWQsXCJBbGwga2V5ZnJhbWVzIG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZVwiKTooZD0kdChwW3ZdKSxhLmludmFyaWFudChkPT09aHx8TnIoaCkmJk5yKGQpLFwiS2V5ZnJhbWVzIG11c3QgYmUgb2YgdGhlIHNhbWUgZGltZW5zaW9uIGFzIHRoZSBjdXJyZW50IHZhbHVlXCIpKTtlbHNlIGQ9JHQocCk7aWYoaCE9PWQpaWYoTnIoaCkmJk5yKGQpKXt2YXIgZz1sLmdldCgpO1wic3RyaW5nXCI9PXR5cGVvZiBnJiZsLnNldChwYXJzZUZsb2F0KGcpKSxcInN0cmluZ1wiPT10eXBlb2YgcD90W3JdPXBhcnNlRmxvYXQocCk6QXJyYXkuaXNBcnJheShwKSYmZD09PWkucHgmJih0W3JdPXAubWFwKHBhcnNlRmxvYXQpKX1lbHNlKG51bGw9PWg/dm9pZCAwOmgudHJhbnNmb3JtKSYmKG51bGw9PWQ/dm9pZCAwOmQudHJhbnNmb3JtKSYmKDA9PT1mfHwwPT09cCk/MD09PWY/bC5zZXQoZC50cmFuc2Zvcm0oZikpOnRbcl09aC50cmFuc2Zvcm0ocCk6KHN8fChjPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiBxci5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcj1lLmdldFZhbHVlKG4pO3ZvaWQgMCE9PXImJih0LnB1c2goW24sci5nZXQoKV0pLHIuc2V0KG4uc3RhcnRzV2l0aChcInNjYWxlXCIpPzE6MCkpfSkpLHQubGVuZ3RoJiZlLnN5bmNSZW5kZXIoKSx0fShlKSxzPSEwKSx1LnB1c2gociksb1tyXT12b2lkIDAhPT1vW3JdP29bcl06dFtyXSxXcihsLHApKX19KSksdS5sZW5ndGgpe3ZhciBkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10Lm1lYXN1cmVWaWV3cG9ydEJveCgpLG89dC5nZXRJbnN0YW5jZSgpLGE9Z2V0Q29tcHV0ZWRTdHlsZShvKSxpPWEuZGlzcGxheSxsPXt0b3A6YS50b3AsbGVmdDphLmxlZnQsYm90dG9tOmEuYm90dG9tLHJpZ2h0OmEucmlnaHQsdHJhbnNmb3JtOmEudHJhbnNmb3JtfTtcIm5vbmVcIj09PWkmJnQuc2V0U3RhdGljVmFsdWUoXCJkaXNwbGF5XCIsZS5kaXNwbGF5fHxcImJsb2NrXCIpLHQuc3luY1JlbmRlcigpO3ZhciBjPXQubWVhc3VyZVZpZXdwb3J0Qm94KCk7cmV0dXJuIG4uZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIG89dC5nZXRWYWx1ZShuKTtXcihvLFlyW25dKHIsbCkpLGVbbl09WXJbbl0oYyxhKX0pKSxlfSh0LGUsdSk7cmV0dXJuIGMubGVuZ3RoJiZjLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPXIuX19yZWFkKHQsMiksbz1uWzBdLGE9blsxXTtlLmdldFZhbHVlKG8pLnNldChhKX0pKSxlLnN5bmNSZW5kZXIoKSx7dGFyZ2V0OmQsdHJhbnNpdGlvbkVuZDpvfX1yZXR1cm57dGFyZ2V0OnQsdHJhbnNpdGlvbkVuZDpvfX0oZSx0LG4sbyk6e3RhcmdldDp0LHRyYW5zaXRpb25FbmQ6b319dmFyIFhyPXt0cmVlVHlwZTpcImRvbVwiLHJlYWRWYWx1ZUZyb21JbnN0YW5jZTpmdW5jdGlvbihlLHQpe2lmKEsodCkpe3ZhciBuPV90KHQpO3JldHVybiBuJiZuLmRlZmF1bHR8fDB9dmFyIHIsbz0ocj1lLHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHIpKTtyZXR1cm4obmUodCk/by5nZXRQcm9wZXJ0eVZhbHVlKHQpOm9bdF0pfHwwfSxzb3J0Tm9kZVBvc2l0aW9uOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIDImZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KT8xOi0xfSxnZXRCYXNlVGFyZ2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIG51bGw9PT0obj1lLnN0eWxlKXx8dm9pZCAwPT09bj92b2lkIDA6blt0XX0sbWVhc3VyZVZpZXdwb3J0Qm94OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEVuKGUsdC50cmFuc2Zvcm1QYWdlUG9pbnQpfSxyZXNldFRyYW5zZm9ybTpmdW5jdGlvbihlLHQsbil7dmFyIHI9bi50cmFuc2Zvcm1UZW1wbGF0ZTt0LnN0eWxlLnRyYW5zZm9ybT1yP3Ioe30sXCJcIik6XCJub25lXCIsZS5zY2hlZHVsZVJlbmRlcigpfSxyZXN0b3JlVHJhbnNmb3JtOmZ1bmN0aW9uKGUsdCl7ZS5zdHlsZS50cmFuc2Zvcm09dC5zdHlsZS50cmFuc2Zvcm19LHJlbW92ZVZhbHVlRnJvbVJlbmRlclN0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC52YXJzLHI9dC5zdHlsZTtkZWxldGUgbltlXSxkZWxldGUgcltlXX0sbWFrZVRhcmdldEFuaW1hdGFibGU6ZnVuY3Rpb24oZSx0LG4sbyl7dmFyIGE9bi50cmFuc2Zvcm1WYWx1ZXM7dm9pZCAwPT09byYmKG89ITApO3ZhciBpPXQudHJhbnNpdGlvbixsPXQudHJhbnNpdGlvbkVuZCxjPXIuX19yZXN0KHQsW1widHJhbnNpdGlvblwiLFwidHJhbnNpdGlvbkVuZFwiXSkscz1xdChjLGl8fHt9LGUpO2lmKGEmJihsJiYobD1hKGwpKSxjJiYoYz1hKGMpKSxzJiYocz1hKHMpKSksbyl7VXQoZSxjLHMpO3ZhciB1PWZ1bmN0aW9uKGUsdCxuLG8pe3ZhciBhPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbyxhPXIuX19yZXN0KHQsW10pLGk9ZS5nZXRJbnN0YW5jZSgpO2lmKCEoaSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSlyZXR1cm57dGFyZ2V0OmEsdHJhbnNpdGlvbkVuZDpufTtmb3IodmFyIGwgaW4gbiYmKG49ci5fX2Fzc2lnbih7fSxuKSksZS5mb3JFYWNoVmFsdWUoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0KCk7aWYoY3IodCkpe3ZhciBuPXVyKHQsaSk7biYmZS5zZXQobil9fSkpLGEpe3ZhciBjPWFbbF07aWYoY3IoYykpe3ZhciBzPXVyKGMsaSk7cyYmKGFbbF09cyxuJiYobnVsbCE9PShvPW5bbF0pJiZ2b2lkIDAhPT1vfHwobltsXT1jKSkpfX1yZXR1cm57dGFyZ2V0OmEsdHJhbnNpdGlvbkVuZDpufX0oZSx0LG8pO3JldHVybiBLcihlLHQ9YS50YXJnZXQsbixvPWEudHJhbnNpdGlvbkVuZCl9KGUsYyxzLGwpO2w9dS50cmFuc2l0aW9uRW5kLGM9dS50YXJnZXR9cmV0dXJuIHIuX19hc3NpZ24oe3RyYW5zaXRpb246aSx0cmFuc2l0aW9uRW5kOmx9LGMpfSxzY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM6X2UsYnVpbGQ6ZnVuY3Rpb24oZSx0LG4scixvLGEsaSl7dm9pZCAwIT09ZS5pc1Zpc2libGUmJih0LnN0eWxlLnZpc2liaWxpdHk9ZS5pc1Zpc2libGU/XCJ2aXNpYmxlXCI6XCJoaWRkZW5cIik7dmFyIGw9ci5pc0VuYWJsZWQmJm8uaXNIeWRyYXRlZDtpZSh0LG4scixvLGEsaS50cmFuc2Zvcm1UZW1wbGF0ZSxsP1ByOnZvaWQgMCxsP2tyOnZvaWQgMCl9LHJlbmRlcjpMZX0sUXI9SXIoWHIpLEpyPUlyKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxYcikse2dldEJhc2VUYXJnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XX0scmVhZFZhbHVlRnJvbUluc3RhbmNlOmZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIEsodCk/KG51bGw9PT0obj1fdCh0KSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZGVmYXVsdCl8fDA6KHQ9TWUuaGFzKHQpP3Q6T2UodCksZS5nZXRBdHRyaWJ1dGUodCkpfSxzY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM6amUsYnVpbGQ6ZnVuY3Rpb24oZSx0LG4scixvLGEsaSl7dmFyIGw9ci5pc0VuYWJsZWQmJm8uaXNIeWRyYXRlZDttZSh0LG4scixvLGEsaS50cmFuc2Zvcm1UZW1wbGF0ZSxsP1ByOnZvaWQgMCxsP2tyOnZvaWQgMCl9LHJlbmRlcjpTZX0pKSxlbz1mdW5jdGlvbihlLHQpe3JldHVybiBXKGUpP0pyKHQse2VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0aW9uOiExfSk6UXIodCx7ZW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRpb246ITB9KX0sdG89ci5fX2Fzc2lnbihyLl9fYXNzaWduKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxvbikscHQpLGxyKSxfciksbm89JCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gVGUoZSx0LHRvLGVvKX0pKSxybz0kKFRlKSxvbz0wO2Z1bmN0aW9uIGFvKCl7dmFyIGU9b287cmV0dXJuIG9vKyssZX12YXIgaW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuaW5pdGlhbCxyPWUuaXNQcmVzZW50LGE9ZS5vbkV4aXRDb21wbGV0ZSxpPWUuY3VzdG9tLGw9ZS5wcmVzZW5jZUFmZmVjdHNMYXlvdXQsYz1PKGxvKSxzPU8oYW8pLGQ9by51c2VNZW1vKChmdW5jdGlvbigpe3JldHVybntpZDpzLGluaXRpYWw6bixpc1ByZXNlbnQ6cixjdXN0b206aSxvbkV4aXRDb21wbGV0ZTpmdW5jdGlvbihlKXtjLnNldChlLCEwKTt2YXIgdD0hMDtjLmZvckVhY2goKGZ1bmN0aW9uKGUpe2V8fCh0PSExKX0pKSx0JiYobnVsbD09YXx8YSgpKX0scmVnaXN0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGMuc2V0KGUsITEpLGZ1bmN0aW9uKCl7cmV0dXJuIGMuZGVsZXRlKGUpfX19fSksbD92b2lkIDA6W3JdKTtyZXR1cm4gby51c2VNZW1vKChmdW5jdGlvbigpe2MuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYy5zZXQodCwhMSl9KSl9KSxbcl0pLHUudXNlRWZmZWN0KChmdW5jdGlvbigpeyFyJiYhYy5zaXplJiYobnVsbD09YXx8YSgpKX0pLFtyXSksdS5jcmVhdGVFbGVtZW50KHguUHJvdmlkZXIse3ZhbHVlOmR9LHQpfTtmdW5jdGlvbiBsbygpe3JldHVybiBuZXcgTWFwfWZ1bmN0aW9uIGNvKGUpe3JldHVybiBlLmtleXx8XCJcIn1mdW5jdGlvbiBzbyhlLHQsbil7dm9pZCAwPT09biYmKG49e30pO3ZhciByPWVlKGUpP2U6RHQoZSk7cmV0dXJuIFZ0KFwiXCIscix0LG4pLHtzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHIuc3RvcCgpfX19ZnVuY3Rpb24gdW8oKXt2YXIgZT1EdCgxKSx0PXtsZWFkOnZvaWQgMCxmb2xsb3c6dm9pZCAwLGNyb3NzZmFkZU9wYWNpdHk6ITEscHJlc2VydmVGb2xsb3dPcGFjaXR5OiExfSxuPXIuX19hc3NpZ24oe30sdCksbz17fSxhPXt9LGk9ITEscz1udWxsLHU9MDtmdW5jdGlvbiBkKG4sbyl7dmFyIGE9dC5sZWFkLGw9dC5mb2xsb3c7aT0hMCxzPW51bGw7dmFyIHU9ITEsZD1mdW5jdGlvbigpe3U9ITAsYSYmYS5zY2hlZHVsZVJlbmRlcigpLGwmJmwuc2NoZWR1bGVSZW5kZXIoKX0scD1mdW5jdGlvbigpe2k9ITEscz1jLmdldEZyYW1lRGF0YSgpLnRpbWVzdGFtcH07cmV0dXJuIG89byYmSHQobyxcImNyb3NzZmFkZVwiKSxzbyhlLG4sci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG8pLHtvblVwZGF0ZTpkLG9uQ29tcGxldGU6ZnVuY3Rpb24oKXt1P3AoKTooZS5zZXQobiksZi5kZWZhdWx0LnJlYWQocCkpLGQoKX19KSl9cmV0dXJue2lzQWN0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIG8mJihpfHxjLmdldEZyYW1lRGF0YSgpLnRpbWVzdGFtcD09PXMpfSxmcm9tTGVhZDpmdW5jdGlvbihlKXtyZXR1cm4gZCgwLGUpfSx0b0xlYWQ6ZnVuY3Rpb24ocil7dmFyIG89MDtyZXR1cm4gdC5wcmV2VmFsdWVzfHx0LmZvbGxvdz9uLmxlYWQ9PT10LmZvbGxvdyYmbi5mb2xsb3c9PT10LmxlYWQmJihvPTEtZS5nZXQoKSk6bz0xLGUuc2V0KG8pLGQoMSxyKX0scmVzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5zZXQoMSl9LHN0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gZS5zdG9wKCl9LGdldENyb3NzZmFkZVN0YXRlOmZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBuLHIsaT1jLmdldEZyYW1lRGF0YSgpLnRpbWVzdGFtcCxzPXQubGVhZCxkPXQuZm9sbG93O2lmKGkhPT11JiZzKXt1PWk7dmFyIGY9cy5nZXRMYXRlc3RWYWx1ZXMoKTtPYmplY3QuYXNzaWduKG8sZik7dmFyIHA9ZD9kLmdldExhdGVzdFZhbHVlcygpOnQucHJldlZhbHVlcztPYmplY3QuYXNzaWduKGEscCk7dmFyIGg9ZS5nZXQoKSxDPW51bGwhPT0obj1mLm9wYWNpdHkpJiZ2b2lkIDAhPT1uP246MSx2PW51bGwhPT0ocj1udWxsPT1wP3ZvaWQgMDpwLm9wYWNpdHkpJiZ2b2lkIDAhPT1yP3I6MTt0LmNyb3NzZmFkZU9wYWNpdHkmJmQ/KG8ub3BhY2l0eT1sLm1peCghMSE9PWQuaXNWaXNpYmxlPzA6dixDLGZvKGgpKSxhLm9wYWNpdHk9dC5wcmVzZXJ2ZUZvbGxvd09wYWNpdHk/djpsLm1peCh2LDAscG8oaCkpKTpkfHwoby5vcGFjaXR5PWwubWl4KHYsQyxoKSksZnVuY3Rpb24oZSx0LG4scixvLGEpe2Zvcih2YXIgaT0wO2k8dm87aSsrKXt2YXIgYz1cImJvcmRlclwiK0NvW2ldK1wiUmFkaXVzXCIscz1nbyhyLGMpLHU9Z28obixjKTtpZigodm9pZCAwIT09c3x8dm9pZCAwIT09dSkmJihzfHwocz0wKSx1fHwodT0wKSxcIm51bWJlclwiPT10eXBlb2YgcyYmXCJudW1iZXJcIj09dHlwZW9mIHUpKXt2YXIgZD1NYXRoLm1heChsLm1peChzLHUsYSksMCk7ZVtjXT10W2NdPWR9fWlmKHIucm90YXRlfHxuLnJvdGF0ZSl7dmFyIGY9bC5taXgoci5yb3RhdGV8fDAsbi5yb3RhdGV8fDAsYSk7ZS5yb3RhdGU9dC5yb3RhdGU9Zn0hbyYmbi5iYWNrZ3JvdW5kQ29sb3ImJnIuYmFja2dyb3VuZENvbG9yJiYoZS5iYWNrZ3JvdW5kQ29sb3I9dC5iYWNrZ3JvdW5kQ29sb3I9bC5taXhDb2xvcihyLmJhY2tncm91bmRDb2xvcixuLmJhY2tncm91bmRDb2xvcikoYSkpfShvLGEsZixwfHx7fSxCb29sZWFuKGQpLGgpfX0oKSxuPT09dC5sZWFkP286bj09PXQuZm9sbG93P2E6dm9pZCAwfSxzZXRPcHRpb25zOmZ1bmN0aW9uKGUpe249dCx0PWUsbz17fSxhPXt9fSxnZXRMYXRlc3RWYWx1ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gb319fXZhciBmbz1obygwLC41LGwuY2lyY091dCkscG89aG8oLjUsLjk1LGwubGluZWFyKTtmdW5jdGlvbiBobyhlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiByPGU/MDpyPnQ/MTpuKGwucHJvZ3Jlc3MoZSx0LHIpKX19dmFyIENvPVtcIlRvcExlZnRcIixcIlRvcFJpZ2h0XCIsXCJCb3R0b21MZWZ0XCIsXCJCb3R0b21SaWdodFwiXSx2bz1Dby5sZW5ndGg7ZnVuY3Rpb24gZ28oZSx0KXt2YXIgbjtyZXR1cm4gbnVsbCE9PShuPWVbdF0pJiZ2b2lkIDAhPT1uP246ZS5ib3JkZXJSYWRpdXN9dmFyIG1vPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgdD1udWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIHQuY2hpbGRyZW49bmV3IFNldCx0LnN0YWNrcz1uZXcgTWFwLHQuaGFzTW91bnRlZD0hMSx0LnVwZGF0ZVNjaGVkdWxlZD0hMSx0LnJlbmRlclNjaGVkdWxlZD0hMSx0LnN5bmNDb250ZXh0PXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxicigpKSx7c3luY1VwZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5zY2hlZHVsZVVwZGF0ZShlKX0sZm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt0LnN5bmNDb250ZXh0PXIuX19hc3NpZ24oe30sdC5zeW5jQ29udGV4dCksdC5zY2hlZHVsZVVwZGF0ZSghMCl9LHJlZ2lzdGVyOmZ1bmN0aW9uKGUpe3JldHVybiB0LmFkZENoaWxkKGUpfSxyZW1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQucmVtb3ZlQ2hpbGQoZSl9fSksdH1yZXR1cm4gci5fX2V4dGVuZHModCxlKSx0LnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3RoaXMuaGFzTW91bnRlZD0hMH0sdC5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5zdGFydExheW91dEFuaW1hdGlvbigpfSx0LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJTY2hlZHVsZWQ9ITAsITB9LHQucHJvdG90eXBlLnN0YXJ0TGF5b3V0QW5pbWF0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLnJlbmRlclNjaGVkdWxlZD10aGlzLnVwZGF0ZVNjaGVkdWxlZD0hMTt2YXIgdD10aGlzLnByb3BzLnR5cGU7dGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmlzUHJlc2VudD9lLnByZXNlbmNlIT09YXIuRW50ZXJpbmcmJihlLnByZXNlbmNlPWUucHJlc2VuY2U9PT1hci5FeGl0aW5nP2FyLkVudGVyaW5nOmFyLlByZXNlbnQpOmUucHJlc2VuY2U9YXIuRXhpdGluZ30pKSx0aGlzLnVwZGF0ZVN0YWNrcygpO3ZhciBuPXtsYXlvdXRSZWFkeTpmdW5jdGlvbihuKXt2b2lkIDAhPT1uLmdldExheW91dElkKCk/ZS5nZXRTdGFjayhuKS5hbmltYXRlKG4sXCJjcm9zc2ZhZGVcIj09PXQpOm4ubm90aWZ5TGF5b3V0UmVhZHkoKX0scGFyZW50OnRoaXMuY29udGV4dC52aXN1YWxFbGVtZW50fTt0aGlzLmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLnN5bmNDb250ZXh0LmFkZCh0KX0pKSx0aGlzLnN5bmNDb250ZXh0LmZsdXNoKG4pLHRoaXMuc3RhY2tzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsZWFyU25hcHNob3QoKX0pKX0sdC5wcm90b3R5cGUudXBkYXRlU3RhY2tzPWZ1bmN0aW9uKCl7dGhpcy5zdGFja3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudXBkYXRlTGVhZEFuZEZvbGxvdygpfSkpfSx0LnByb3RvdHlwZS5zY2hlZHVsZVVwZGF0ZT1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT0hMSksIWUmJnRoaXMudXBkYXRlU2NoZWR1bGVkfHwodGhpcy51cGRhdGVTY2hlZHVsZWQ9ITAsdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKXshZnVuY3Rpb24oZSl7Zm9yKHZhciB0PSExLG49e30scj0wO3I8VS5sZW5ndGg7cisrKXt2YXIgbz1cInJvdGF0ZVwiK1Vbcl07ZS5oYXNWYWx1ZShvKSYmMCE9PWUuZ2V0U3RhdGljVmFsdWUobykmJih0PSEwLG5bb109ZS5nZXRTdGF0aWNWYWx1ZShvKSxlLnNldFN0YXRpY1ZhbHVlKG8sMCkpfWlmKHQpe2Zvcih2YXIgbyBpbiBlLnN5bmNSZW5kZXIoKSxuKWUuc2V0U3RhdGljVmFsdWUobyxuW29dKTtlLnNjaGVkdWxlUmVuZGVyKCl9fShlKSxlLnNob3VsZFJlc2V0VHJhbnNmb3JtKCkmJmUucmVzZXRUcmFuc2Zvcm0oKX0pKSx0aGlzLmNoaWxkcmVuLmZvckVhY2goUm4pLHRoaXMuc3RhY2tzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnVwZGF0ZVNuYXBzaG90KCl9KSksIWUmJnRoaXMucmVuZGVyU2NoZWR1bGVkfHwodGhpcy5yZW5kZXJTY2hlZHVsZWQ9ITAsdGhpcy5mb3JjZVVwZGF0ZSgpKSl9LHQucHJvdG90eXBlLmFkZENoaWxkPWZ1bmN0aW9uKGUpe3RoaXMuY2hpbGRyZW4uYWRkKGUpLHRoaXMuYWRkVG9TdGFjayhlKSxlLnByZXNlbmNlPXRoaXMuaGFzTW91bnRlZD9hci5FbnRlcmluZzphci5QcmVzZW50fSx0LnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbihlKXt0aGlzLnNjaGVkdWxlVXBkYXRlKCksdGhpcy5jaGlsZHJlbi5kZWxldGUoZSksdGhpcy5yZW1vdmVGcm9tU3RhY2soZSl9LHQucHJvdG90eXBlLmFkZFRvU3RhY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRTdGFjayhlKTtudWxsPT10fHx0LmFkZChlKX0sdC5wcm90b3R5cGUucmVtb3ZlRnJvbVN0YWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0U3RhY2soZSk7bnVsbD09dHx8dC5yZW1vdmUoZSl9LHQucHJvdG90eXBlLmdldFN0YWNrPWZ1bmN0aW9uKGUpe3ZhciB0LG4sbyxhLGksbCxjLHMsdT1lLmdldExheW91dElkKCk7aWYodm9pZCAwIT09dSlyZXR1cm4hdGhpcy5zdGFja3MuaGFzKHUpJiZ0aGlzLnN0YWNrcy5zZXQodSwoYT1uZXcgU2V0LGk9e2xlYWRJc0V4aXRpbmc6ITF9LGw9ci5fX2Fzc2lnbih7fSxpKSxjPXVvKCkscz0hMSx7YWRkOmZ1bmN0aW9uKGUpe2Uuc2V0Q3Jvc3NmYWRlcihjKSxhLmFkZChlKSxvJiYoZS5wcmV2RHJhZ0N1cnNvcj1vKSxpLmxlYWR8fChpLmxlYWQ9ZSl9LHJlbW92ZTpmdW5jdGlvbihlKXthLmRlbGV0ZShlKX0sZ2V0TGVhZDpmdW5jdGlvbigpe3JldHVybiBpLmxlYWR9LHVwZGF0ZVNuYXBzaG90OmZ1bmN0aW9uKCl7aWYoaS5sZWFkKXt0PWMuaXNBY3RpdmUoKT9jLmdldExhdGVzdFZhbHVlcygpOmkubGVhZC5nZXRMYXRlc3RWYWx1ZXMoKSxuPWkubGVhZC5wcmV2Vmlld3BvcnRCb3g7dmFyIGU9bnIuZ2V0KGkubGVhZCk7ZSYmZS5pc0RyYWdnaW5nJiYobz1lLmN1cnNvclByb2dyZXNzKX19LGNsZWFyU25hcHNob3Q6ZnVuY3Rpb24oKXtvPW49dm9pZCAwfSx1cGRhdGVMZWFkQW5kRm9sbG93OmZ1bmN0aW9uKCl7dmFyIGUsbixvO2w9ci5fX2Fzc2lnbih7fSxpKTtmb3IodmFyIHU9QXJyYXkuZnJvbShhKSxkPXUubGVuZ3RoO2QtLTtkPj0wKXt2YXIgZj11W2RdO2lmKG4mJihudWxsIT1vfHwobz1mKSksbnVsbCE9bnx8KG49ZiksbiYmbylicmVha31pLmxlYWQ9bixpLmZvbGxvdz1vLGkubGVhZElzRXhpdGluZz0obnVsbD09PShlPWkubGVhZCl8fHZvaWQgMD09PWU/dm9pZCAwOmUucHJlc2VuY2UpPT09YXIuRXhpdGluZyxjLnNldE9wdGlvbnMoe2xlYWQ6bixmb2xsb3c6byxwcmV2VmFsdWVzOnQsY3Jvc3NmYWRlT3BhY2l0eToobnVsbD09bz92b2lkIDA6by5pc1ByZXNlbmNlUm9vdCl8fChudWxsPT1uP3ZvaWQgMDpuLmlzUHJlc2VuY2VSb290KX0pLGkubGVhZD09PWwuZm9sbG93fHxsLmxlYWQ9PT1pLmxlYWQmJmwubGVhZElzRXhpdGluZz09PWkubGVhZElzRXhpdGluZ3x8KHM9ITApfSxhbmltYXRlOmZ1bmN0aW9uKGUsdCl7dmFyIHI7aWYodm9pZCAwPT09dCYmKHQ9ITEpLGU9PT1pLmxlYWQpe3Q/ZS5wb2ludFRvKGkubGVhZCk6ZS5zZXRWaXNpYmlsaXR5KCEwKTt2YXIgbz17fSxhPW51bGw9PT0ocj1pLmZvbGxvdyl8fHZvaWQgMD09PXI/dm9pZCAwOnIuZ2V0UHJvamVjdGlvblBhcmVudCgpO2lmKGEmJihvLnByZXZQYXJlbnQ9YSksZS5wcmVzZW5jZT09PWFyLkVudGVyaW5nP28ub3JpZ2luQm94PWkuZm9sbG93P2kuZm9sbG93LnByZXZWaWV3cG9ydEJveDpuOmUucHJlc2VuY2U9PT1hci5FeGl0aW5nJiYoby50YXJnZXRCb3g9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gbnVsbD09PShlPWkuZm9sbG93KXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dH0oKSkscyl7cz0hMTt2YXIgbD1lLmdldERlZmF1bHRUcmFuc2l0aW9uKCk7ZS5wcmVzZW5jZT09PWFyLkVudGVyaW5nP2MudG9MZWFkKGwpOmMuZnJvbUxlYWQobCl9ZS5ub3RpZnlMYXlvdXRSZWFkeShvKX1lbHNlIHQ/aS5sZWFkJiZlLnBvaW50VG8oaS5sZWFkKTplLnNldFZpc2liaWxpdHkoITEpfX0pKSx0aGlzLnN0YWNrcy5nZXQodSl9LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB1LmNyZWF0ZUVsZW1lbnQoT3IuUHJvdmlkZXIse3ZhbHVlOnRoaXMuc3luY0NvbnRleHR9LHRoaXMucHJvcHMuY2hpbGRyZW4pfSx0LmNvbnRleHRUeXBlPXksdH0odS5Db21wb25lbnQpO2Z1bmN0aW9uIHdvKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9dmFyIHlvPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7cmVuZGVyZXI6ZW99LG9uKSxwdCksYm89ci5fX2Fzc2lnbihyLl9fYXNzaWduKHIuX19hc3NpZ24oe30seW8pLGxyKSxfcik7ZnVuY3Rpb24geG8oZSl7dmFyIHQ9TygoZnVuY3Rpb24oKXtyZXR1cm4gRHQoZSl9KSk7aWYoby51c2VDb250ZXh0KHcpLmlzU3RhdGljKXt2YXIgbj1yLl9fcmVhZChvLnVzZVN0YXRlKGUpLDIpWzFdO28udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiB0Lm9uQ2hhbmdlKG4pfSksW10pfXJldHVybiB0fWZ1bmN0aW9uIE9vKGUsdCl7by51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7aWYoZWUoZSkpcmV0dXJuIGUub25DaGFuZ2UodCl9KSxbdF0pfWZ1bmN0aW9uIExvKGUsdCl7dmFyIG49eG8odCgpKSxyPWZ1bmN0aW9uKCl7cmV0dXJuIG4uc2V0KHQoKSl9O3JldHVybiByKCksZnVuY3Rpb24oZSx0KXtvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXt2YXIgbj1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUub25DaGFuZ2UodCl9KSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pKX19KSl9KGUsKGZ1bmN0aW9uKCl7cmV0dXJuIGYuZGVmYXVsdC51cGRhdGUociwhMSwhMCl9KSksbn12YXIgTW8sU289ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZlLm1peH0oZSk/ZS5taXg6dm9pZCAwfTtmdW5jdGlvbiBfbygpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTt2YXIgbj0hQXJyYXkuaXNBcnJheShlWzBdKSxvPW4/MDotMSxhPWVbMCtvXSxpPWVbMStvXSxjPWVbMitvXSxzPWVbMytvXSx1PWwuaW50ZXJwb2xhdGUoaSxjLHIuX19hc3NpZ24oe21peGVyOlNvKGNbMF0pfSxzKSk7cmV0dXJuIG4/dShhKTp1fWZ1bmN0aW9uIGpvKGUsdCxuLG8pe3ZhciBhPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dDpfbyh0LG4sbyk7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/RW8oZSxhKTpFbyhbZV0sKGZ1bmN0aW9uKGUpe3ZhciB0PXIuX19yZWFkKGUsMSlbMF07cmV0dXJuIGEodCl9KSl9ZnVuY3Rpb24gRW8oZSx0KXt2YXIgbj1PKChmdW5jdGlvbigpe3JldHVybltdfSkpO3JldHVybiBMbyhlLChmdW5jdGlvbigpe24ubGVuZ3RoPTA7Zm9yKHZhciByPWUubGVuZ3RoLG89MDtvPHI7bysrKW5bb109ZVtvXS5nZXQoKTtyZXR1cm4gdChuKX0pKX1mdW5jdGlvbiBQbygpe3JldHVybntzY3JvbGxYOkR0KDApLHNjcm9sbFk6RHQoMCksc2Nyb2xsWFByb2dyZXNzOkR0KDApLHNjcm9sbFlQcm9ncmVzczpEdCgwKX19ZnVuY3Rpb24ga28oZSx0LG4pe24uc2V0KGUmJnQ/ZS90OjApfWZ1bmN0aW9uIEhvKGUsdCl7dmFyIG49ZnVuY3Rpb24oKXt2YXIgbj10KCkscj1uLnhPZmZzZXQsbz1uLnlPZmZzZXQsYT1uLnhNYXhPZmZzZXQsaT1uLnlNYXhPZmZzZXQ7ZS5zY3JvbGxYLnNldChyKSxlLnNjcm9sbFkuc2V0KG8pLGtvKHIsYSxlLnNjcm9sbFhQcm9ncmVzcyksa28obyxpLGUuc2Nyb2xsWVByb2dyZXNzKX07cmV0dXJuIG4oKSxufWZ1bmN0aW9uIFZvKCl7cmV0dXJue3hPZmZzZXQ6d2luZG93LnBhZ2VYT2Zmc2V0LHlPZmZzZXQ6d2luZG93LnBhZ2VZT2Zmc2V0LHhNYXhPZmZzZXQ6ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aC13aW5kb3cuaW5uZXJXaWR0aCx5TWF4T2Zmc2V0OmRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0LXdpbmRvdy5pbm5lckhlaWdodH19dmFyIFJvLElvPSExO2Z1bmN0aW9uIFpvKCl7dmFyIGU9ITEsdD1bXSxuPW5ldyBTZXQsbz17c3Vic2NyaWJlOmZ1bmN0aW9uKGUpe3JldHVybiBuLmFkZChlKSxmdW5jdGlvbigpe24uZGVsZXRlKGUpfX0sc3RhcnQ6ZnVuY3Rpb24ocixvKXtpZihlKXt2YXIgYT1bXTtyZXR1cm4gbi5mb3JFYWNoKChmdW5jdGlvbihlKXthLnB1c2goWXQoZSxyLHt0cmFuc2l0aW9uT3ZlcnJpZGU6b30pKX0pKSxQcm9taXNlLmFsbChhKX1yZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3QucHVzaCh7YW5pbWF0aW9uOltyLG9dLHJlc29sdmU6ZX0pfSkpfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGEuaW52YXJpYW50KGUsXCJjb250cm9scy5zZXQoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYSBjb21wb25lbnQgaGFzIG1vdW50ZWQuIENvbnNpZGVyIGNhbGxpbmcgd2l0aGluIGEgdXNlRWZmZWN0IGhvb2suXCIpLG4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7QXJyYXkuaXNBcnJheSh0KT96dChlLHQpOlwic3RyaW5nXCI9PXR5cGVvZiB0P3p0KGUsW3RdKTpOdChlLHQpfShlLHQpfSkpfSxzdG9wOmZ1bmN0aW9uKCl7bi5mb3JFYWNoKChmdW5jdGlvbihlKXshZnVuY3Rpb24oZSl7ZS5mb3JFYWNoVmFsdWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0b3AoKX0pKX0oZSl9KSl9LG1vdW50OmZ1bmN0aW9uKCl7cmV0dXJuIGU9ITAsdC5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1lLmFuaW1hdGlvbixuPWUucmVzb2x2ZTtvLnN0YXJ0LmFwcGx5KG8sci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKHQpKSkudGhlbihuKX0pKSxmdW5jdGlvbigpe2U9ITEsby5zdG9wKCl9fX07cmV0dXJuIG99dmFyIEFvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuY29tcG9uZW50Q29udHJvbHM9bmV3IFNldH1yZXR1cm4gZS5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuY29tcG9uZW50Q29udHJvbHMuYWRkKGUpLGZ1bmN0aW9uKCl7cmV0dXJuIHQuY29tcG9uZW50Q29udHJvbHMuZGVsZXRlKGUpfX0sZS5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmNvbXBvbmVudENvbnRyb2xzLmZvckVhY2goKGZ1bmN0aW9uKG4pe24uc3RhcnQoZS5uYXRpdmVFdmVudHx8ZSx0KX0pKX0sZS5wcm90b3R5cGUudXBkYXRlQ29uc3RyYWludHM9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9ITApLHRoaXMuY29tcG9uZW50Q29udHJvbHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS51cGRhdGVDb25zdHJhaW50cygpfSkpLGUmJkpuKCl9LGV9KCksRG89ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFvfSxCbz1mdW5jdGlvbigpe3JldHVybnt9fSxUbz1Jcih7YnVpbGQ6ZnVuY3Rpb24oKXt9LG1lYXN1cmVWaWV3cG9ydEJveDpmdW5jdGlvbigpe3JldHVybnt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fX0scmVzZXRUcmFuc2Zvcm06ZnVuY3Rpb24oKXt9LHJlc3RvcmVUcmFuc2Zvcm06ZnVuY3Rpb24oKXt9LHJlbW92ZVZhbHVlRnJvbVJlbmRlclN0YXRlOmZ1bmN0aW9uKCl7fSxyZW5kZXI6ZnVuY3Rpb24oKXt9LHNjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczpCbyxyZWFkVmFsdWVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuLmluaXRpYWxTdGF0ZVt0XXx8MH0sbWFrZVRhcmdldEFuaW1hdGFibGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnRyYW5zaXRpb24sbz10LnRyYW5zaXRpb25FbmQsYT1yLl9fcmVzdCh0LFtcInRyYW5zaXRpb25cIixcInRyYW5zaXRpb25FbmRcIl0pO3JldHVybiBVdChlLGEscXQoYSxufHx7fSxlKSksci5fX2Fzc2lnbih7dHJhbnNpdGlvbjpuLHRyYW5zaXRpb25FbmQ6b30sYSl9fSksJG89SWUoe3NjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczpCbyxjcmVhdGVSZW5kZXJTdGF0ZTpCb30pLEZvPWZ1bmN0aW9uKGUpe3JldHVybiBlPi4wMDE/MS9lOjFlNX0sV289ITE7dC5BbmltYXRlUHJlc2VuY2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuY3VzdG9tLGE9ZS5pbml0aWFsLGk9dm9pZCAwPT09YXx8YSxsPWUub25FeGl0Q29tcGxldGUsYz1lLmV4aXRCZWZvcmVFbnRlcixzPWUucHJlc2VuY2VBZmZlY3RzTGF5b3V0LGQ9dm9pZCAwPT09c3x8cyxmPWZ1bmN0aW9uKCl7dmFyIGU9by51c2VSZWYoITEpLHQ9ci5fX3JlYWQoby51c2VTdGF0ZSgwKSwyKSxuPXRbMF0sYT10WzFdO3JldHVybiBkdCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5jdXJyZW50PSEwfSkpLG8udXNlQ2FsbGJhY2soKGZ1bmN0aW9uKCl7IWUuY3VycmVudCYmYShuKzEpfSksW25dKX0oKSxwPW8udXNlQ29udGV4dChPcik7TXIocCkmJihmPXAuZm9yY2VVcGRhdGUpO3ZhciBoPW8udXNlUmVmKCEwKSxDPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiBvLkNoaWxkcmVuLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7by5pc1ZhbGlkRWxlbWVudChlKSYmdC5wdXNoKGUpfSkpLHR9KHQpLHY9by51c2VSZWYoQyksZz1vLnVzZVJlZihuZXcgTWFwKS5jdXJyZW50LG09by51c2VSZWYobmV3IFNldCkuY3VycmVudDtpZihmdW5jdGlvbihlLHQpe2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49Y28oZSk7dC5zZXQobixlKX0pKX0oQyxnKSxoLmN1cnJlbnQpcmV0dXJuIGguY3VycmVudD0hMSx1LmNyZWF0ZUVsZW1lbnQodS5GcmFnbWVudCxudWxsLEMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdS5jcmVhdGVFbGVtZW50KGlvLHtrZXk6Y28oZSksaXNQcmVzZW50OiEwLGluaXRpYWw6ISFpJiZ2b2lkIDAscHJlc2VuY2VBZmZlY3RzTGF5b3V0OmR9LGUpfSkpKTtmb3IodmFyIHc9ci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKEMpKSx5PXYuY3VycmVudC5tYXAoY28pLGI9Qy5tYXAoY28pLHg9eS5sZW5ndGgsTz0wO088eDtPKyspe3ZhciBMPXlbT107LTE9PT1iLmluZGV4T2YoTCk/bS5hZGQoTCk6bS5kZWxldGUoTCl9cmV0dXJuIGMmJm0uc2l6ZSYmKHc9W10pLG0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoLTE9PT1iLmluZGV4T2YoZSkpe3ZhciB0PWcuZ2V0KGUpO2lmKHQpe3ZhciByPXkuaW5kZXhPZihlKTt3LnNwbGljZShyLDAsdS5jcmVhdGVFbGVtZW50KGlvLHtrZXk6Y28odCksaXNQcmVzZW50OiExLG9uRXhpdENvbXBsZXRlOmZ1bmN0aW9uKCl7Zy5kZWxldGUoZSksbS5kZWxldGUoZSk7dmFyIHQ9di5jdXJyZW50LmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5PT09ZX0pKTt2LmN1cnJlbnQuc3BsaWNlKHQsMSksbS5zaXplfHwodi5jdXJyZW50PUMsZigpLGwmJmwoKSl9LGN1c3RvbTpuLHByZXNlbmNlQWZmZWN0c0xheW91dDpkfSx0KSl9fX0pKSx3PXcubWFwKChmdW5jdGlvbihlKXt2YXIgdD1lLmtleTtyZXR1cm4gbS5oYXModCk/ZTp1LmNyZWF0ZUVsZW1lbnQoaW8se2tleTpjbyhlKSxpc1ByZXNlbnQ6ITAscHJlc2VuY2VBZmZlY3RzTGF5b3V0OmR9LGUpfSkpLHYuY3VycmVudD13LHUuY3JlYXRlRWxlbWVudCh1LkZyYWdtZW50LG51bGwsbS5zaXplP3c6dy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBvLmNsb25lRWxlbWVudChlKX0pKSl9LHQuQW5pbWF0ZVNoYXJlZExheW91dD1tbyx0LkRyYWdDb250cm9scz1Bbyx0LkZsYXRUcmVlPVJyLHQuRnJhbWVyVHJlZUxheW91dENvbnRleHQ9THIsdC5MYXlvdXRHcm91cENvbnRleHQ9RSx0LkxhenlNb3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuZmVhdHVyZXMsYT1lLnN0cmljdCxpPXZvaWQgMCE9PWEmJmEsbD1yLl9fcmVhZChvLnVzZVN0YXRlKCF3byhuKSksMilbMV0sYz1vLnVzZVJlZih2b2lkIDApO2lmKCF3byhuKSl7dmFyIHM9bi5yZW5kZXJlcixkPXIuX19yZXN0KG4sW1wicmVuZGVyZXJcIl0pO2MuY3VycmVudD1zLEMoZCl9cmV0dXJuIG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3dvKG4pJiZuKCkudGhlbigoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZW5kZXJlcjtDKHIuX19yZXN0KGUsW1wicmVuZGVyZXJcIl0pKSxjLmN1cnJlbnQ9dCxsKCEwKX0pKX0pLFtdKSx1LmNyZWF0ZUVsZW1lbnQodi5Qcm92aWRlcix7dmFsdWU6e3JlbmRlcmVyOmMuY3VycmVudCxzdHJpY3Q6aX19LHQpfSx0Lk1vdGlvbkNvbmZpZz1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ci5fX3Jlc3QoZSxbXCJjaGlsZHJlblwiXSk7KG49ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG8udXNlQ29udGV4dCh3KSksbikpLmlzU3RhdGljPU8oKGZ1bmN0aW9uKCl7cmV0dXJuIG4uaXNTdGF0aWN9KSk7dmFyIGE9XCJvYmplY3RcIj09dHlwZW9mIG4udHJhbnNpdGlvbj9uLnRyYW5zaXRpb24udG9TdHJpbmcoKTpcIlwiLGk9by51c2VNZW1vKChmdW5jdGlvbigpe3JldHVybiBufSksW2Esbi50cmFuc2Zvcm1QYWdlUG9pbnRdKTtyZXR1cm4gdS5jcmVhdGVFbGVtZW50KHcuUHJvdmlkZXIse3ZhbHVlOml9LHQpfSx0Lk1vdGlvbkNvbmZpZ0NvbnRleHQ9dyx0Lk1vdGlvblZhbHVlPUF0LHQuUHJlc2VuY2VDb250ZXh0PXgsdC5TaGFyZWRMYXlvdXRDb250ZXh0PU9yLHQuYWRkU2NhbGVDb3JyZWN0aW9uPXosdC5hbmltYXRlPXNvLHQuYW5pbWF0ZVZpc3VhbEVsZW1lbnQ9WXQsdC5hbmltYXRpb25Db250cm9scz1abyx0LmJhdGNoTGF5b3V0PVFuLHQuY3JlYXRlQmF0Y2hlcj1icix0LmNyZWF0ZUNyb3NzZmFkZXI9dW8sdC5jcmVhdGVEb21Nb3Rpb25Db21wb25lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFQoVGUoZSx7Zm9yd2FyZE1vdGlvblByb3BzOiExfSx0byxlbykpfSx0LmNyZWF0ZU1vdGlvbkNvbXBvbmVudD1ULHQuZG9tQW5pbWF0aW9uPXlvLHQuZG9tTWF4PWJvLHQuZmx1c2hMYXlvdXQ9Sm4sdC5pc1ZhbGlkTW90aW9uUHJvcD1kZSx0Lm09cm8sdC5tb3Rpb249bm8sdC5tb3Rpb25WYWx1ZT1EdCx0LnJlc29sdmVNb3Rpb25WYWx1ZT1WZSx0LnNuYXBzaG90Vmlld3BvcnRCb3g9Um4sdC50cmFuc2Zvcm09X28sdC51c2VBbmltYXRpb249ZnVuY3Rpb24oKXt2YXIgZT1PKFpvKTtyZXR1cm4gby51c2VFZmZlY3QoZS5tb3VudCxbXSksZX0sdC51c2VDeWNsZT1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTt2YXIgbj1vLnVzZVJlZigwKSxhPXIuX19yZWFkKG8udXNlU3RhdGUoZVtuLmN1cnJlbnRdKSwyKSxpPWFbMF0sYz1hWzFdO3JldHVybltpLGZ1bmN0aW9uKHQpe24uY3VycmVudD1cIm51bWJlclwiIT10eXBlb2YgdD9sLndyYXAoMCxlLmxlbmd0aCxuLmN1cnJlbnQrMSk6dCxjKGVbbi5jdXJyZW50XSl9XX0sdC51c2VEZXByZWNhdGVkQW5pbWF0ZWRTdGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1yLl9fcmVhZChvLnVzZVN0YXRlKGUpLDIpLG49dFswXSxhPXRbMV0saT0kbyh7fSwhMSksbD1PKChmdW5jdGlvbigpe3JldHVybiBUbyh7cHJvcHM6e30sdmlzdWFsU3RhdGU6aX0se2luaXRpYWxTdGF0ZTplfSl9KSk7cmV0dXJuIG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiBsLm1vdW50KHt9KSxsLnVubW91bnQoKX0pLFtdKSxvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtsLnNldFByb3BzKHtvblVwZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gYShyLl9fYXNzaWduKHt9LGUpKX19KX0pKSxbbixPKChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gWXQobCxlKX19KSldfSx0LnVzZURlcHJlY2F0ZWRJbnZlcnRlZFNjYWxlPWZ1bmN0aW9uKGUpe3ZhciB0PXhvKDEpLG49eG8oMSkscj1iKCk7cmV0dXJuIGEuaW52YXJpYW50KCEoIWUmJiFyKSxcIklmIG5vIHNjYWxlIHZhbHVlcyBhcmUgcHJvdmlkZWQsIHVzZUludmVydGVkU2NhbGUgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGNoaWxkIG9mIGFub3RoZXIgbW90aW9uIGNvbXBvbmVudC5cIiksYS53YXJuaW5nKFdvLFwidXNlSW52ZXJ0ZWRTY2FsZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy4wLiBVc2UgdGhlIGxheW91dCBwcm9wIGluc3RlYWQuXCIpLFdvPSEwLGU/KHQ9ZS5zY2FsZVh8fHQsbj1lLnNjYWxlWXx8bik6ciYmKHQ9ci5nZXRWYWx1ZShcInNjYWxlWFwiLDEpLG49ci5nZXRWYWx1ZShcInNjYWxlWVwiLDEpKSx7c2NhbGVYOmpvKHQsRm8pLHNjYWxlWTpqbyhuLEZvKX19LHQudXNlRG9tRXZlbnQ9RmUsdC51c2VEcmFnQ29udHJvbHM9ZnVuY3Rpb24oKXtyZXR1cm4gTyhEbyl9LHQudXNlRWxlbWVudFNjcm9sbD1mdW5jdGlvbihlKXt2YXIgdD1PKFBvKTtyZXR1cm4gaygoZnVuY3Rpb24oKXt2YXIgbj1lLmN1cnJlbnQ7aWYoYS5pbnZhcmlhbnQoISFuLFwicmVmIHByb3ZpZGVkIHRvIHVzZVNjcm9sbCBtdXN0IGJlIHBhc3NlZCBpbnRvIGEgSFRNTCBlbGVtZW50LlwiKSxuKXt2YXIgcj1Ibyh0LGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybnt4T2Zmc2V0OmUuc2Nyb2xsTGVmdCx5T2Zmc2V0OmUuc2Nyb2xsVG9wLHhNYXhPZmZzZXQ6ZS5zY3JvbGxXaWR0aC1lLm9mZnNldFdpZHRoLHlNYXhPZmZzZXQ6ZS5zY3JvbGxIZWlnaHQtZS5vZmZzZXRIZWlnaHR9fX0obikpLG89JGUobixcInNjcm9sbFwiLHIse3Bhc3NpdmU6ITB9KSxpPSRlKG4sXCJyZXNpemVcIixyKTtyZXR1cm4gZnVuY3Rpb24oKXtvJiZvKCksaSYmaSgpfX19KSxbXSksdH0sdC51c2VJc1ByZXNlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gTShvLnVzZUNvbnRleHQoeCkpfSx0LnVzZU1vdGlvblRlbXBsYXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3ZhciByPWUubGVuZ3RoO3JldHVybiBMbyh0LChmdW5jdGlvbigpe2Zvcih2YXIgbj1cIlwiLG89MDtvPHI7bysrKW4rPWVbb10sdFtvXSYmKG4rPXRbb10uZ2V0KCkpO3JldHVybiBufSkpfSx0LnVzZU1vdGlvblZhbHVlPXhvLHQudXNlUHJlc2VuY2U9TCx0LnVzZVJlZHVjZWRNb3Rpb249ZnVuY3Rpb24oKXshUm8mJmZ1bmN0aW9uKCl7aWYoUm89RHQobnVsbCksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdylpZih3aW5kb3cubWF0Y2hNZWRpYSl7dmFyIGU9d2luZG93Lm1hdGNoTWVkaWEoXCIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbilcIiksdD1mdW5jdGlvbigpe3JldHVybiBSby5zZXQoZS5tYXRjaGVzKX07ZS5hZGRMaXN0ZW5lcih0KSx0KCl9ZWxzZSBSby5zZXQoITEpfSgpO3ZhciBlPXIuX19yZWFkKG8udXNlU3RhdGUoUm8uZ2V0KCkpLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIE9vKFJvLG4pLHR9LHQudXNlU3ByaW5nPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBuPW8udXNlQ29udGV4dCh3KS5pc1N0YXRpYyxhPW8udXNlUmVmKG51bGwpLGk9eG8oZWUoZSk/ZS5nZXQoKTplKTtyZXR1cm4gby51c2VNZW1vKChmdW5jdGlvbigpe3JldHVybiBpLmF0dGFjaCgoZnVuY3Rpb24oZSxvKXtyZXR1cm4gbj9vKGUpOihhLmN1cnJlbnQmJmEuY3VycmVudC5zdG9wKCksYS5jdXJyZW50PWwuYW5pbWF0ZShyLl9fYXNzaWduKHIuX19hc3NpZ24oe2Zyb206aS5nZXQoKSx0bzplLHZlbG9jaXR5OmkuZ2V0VmVsb2NpdHkoKX0sdCkse29uVXBkYXRlOm99KSksaS5nZXQoKSl9KSl9KSxPYmplY3QudmFsdWVzKHQpKSxPbyhlLChmdW5jdGlvbihlKXtyZXR1cm4gaS5zZXQocGFyc2VGbG9hdChlKSl9KSksaX0sdC51c2VUcmFuc2Zvcm09am8sdC51c2VWZWxvY2l0eT1mdW5jdGlvbihlKXt2YXIgdD14byhlLmdldFZlbG9jaXR5KCkpO3JldHVybiBvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gZS52ZWxvY2l0eVVwZGF0ZVN1YnNjcmliZXJzLmFkZCgoZnVuY3Rpb24oZSl7dC5zZXQoZSl9KSl9KSxbZV0pLHR9LHQudXNlVmlld3BvcnRTY3JvbGw9ZnVuY3Rpb24oKXtyZXR1cm4gTW98fChNbz1QbygpKSxrKChmdW5jdGlvbigpeyFJbyYmZnVuY3Rpb24oKXtpZihJbz0hMCxcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93KXt2YXIgZT1IbyhNbyxWbyk7JGUod2luZG93LFwic2Nyb2xsXCIsZSx7cGFzc2l2ZTohMH0pLCRlKHdpbmRvdyxcInJlc2l6ZVwiLGUpfX0oKX0pLFtdKSxNb30sdC52aXN1YWxFbGVtZW50PUlyfSw0ODM5OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIG49MS82MCoxZTMscj1cInVuZGVmaW5lZFwiIT10eXBlb2YgcGVyZm9ybWFuY2U/ZnVuY3Rpb24oKXtyZXR1cm4gcGVyZm9ybWFuY2Uubm93KCl9OmZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93KCl9LG89XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz9mdW5jdGlvbihlKXtyZXR1cm4gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShlKX06ZnVuY3Rpb24oZSl7cmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUocigpKX0pLG4pfSxhPSEwLGk9ITEsbD0hMSxjPXtkZWx0YTowLHRpbWVzdGFtcDowfSxzPVtcInJlYWRcIixcInVwZGF0ZVwiLFwicHJlUmVuZGVyXCIsXCJyZW5kZXJcIixcInBvc3RSZW5kZXJcIl0sdT1zLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XT1mdW5jdGlvbihlKXt2YXIgdD1bXSxuPVtdLHI9MCxvPSExLGE9bmV3IFdlYWtTZXQsaT17c2NoZWR1bGU6ZnVuY3Rpb24oZSxpLGwpe3ZvaWQgMD09PWkmJihpPSExKSx2b2lkIDA9PT1sJiYobD0hMSk7dmFyIGM9bCYmbyxzPWM/dDpuO3JldHVybiBpJiZhLmFkZChlKSwtMT09PXMuaW5kZXhPZihlKSYmKHMucHVzaChlKSxjJiZvJiYocj10Lmxlbmd0aCkpLGV9LGNhbmNlbDpmdW5jdGlvbihlKXt2YXIgdD1uLmluZGV4T2YoZSk7LTEhPT10JiZuLnNwbGljZSh0LDEpLGEuZGVsZXRlKGUpfSxwcm9jZXNzOmZ1bmN0aW9uKGwpe3ZhciBjO2lmKG89ITAsdD0oYz1bbix0XSlbMF0sKG49Y1sxXSkubGVuZ3RoPTAscj10Lmxlbmd0aClmb3IodmFyIHM9MDtzPHI7cysrKXt2YXIgdT10W3NdO3UobCksYS5oYXModSkmJihpLnNjaGVkdWxlKHUpLGUoKSl9bz0hMX19O3JldHVybiBpfSgoZnVuY3Rpb24oKXtyZXR1cm4gaT0hMH0pKSxlfSkse30pLGQ9cy5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7dmFyIG49dVt0XTtyZXR1cm4gZVt0XT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHZvaWQgMD09PXQmJih0PSExKSx2b2lkIDA9PT1yJiYocj0hMSksaXx8digpLG4uc2NoZWR1bGUoZSx0LHIpfSxlfSkse30pLGY9cy5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF09dVt0XS5jYW5jZWwsZX0pLHt9KSxwPXMucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIHVbdF0ucHJvY2VzcyhjKX0sZX0pLHt9KSxoPWZ1bmN0aW9uKGUpe3JldHVybiB1W2VdLnByb2Nlc3MoYyl9LEM9ZnVuY3Rpb24oZSl7aT0hMSxjLmRlbHRhPWE/bjpNYXRoLm1heChNYXRoLm1pbihlLWMudGltZXN0YW1wLDQwKSwxKSxjLnRpbWVzdGFtcD1lLGw9ITAscy5mb3JFYWNoKGgpLGw9ITEsaSYmKGE9ITEsbyhDKSl9LHY9ZnVuY3Rpb24oKXtpPSEwLGE9ITAsbHx8byhDKX07dC5jYW5jZWxTeW5jPWYsdC5kZWZhdWx0PWQsdC5mbHVzaFN5bmM9cCx0LmdldEZyYW1lRGF0YT1mdW5jdGlvbigpe3JldHVybiBjfX0sNDM5NDooZSx0LG4pPT57bi5yKHQpLG4uZCh0LHtpbnZhcmlhbnQ6KCk9Pm8sd2FybmluZzooKT0+cn0pO3ZhciByPWZ1bmN0aW9uKCl7fSxvPWZ1bmN0aW9uKCl7fX0sNzczOihlLHQsbik9Pnt2YXIgcixvPVwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfX1wiLGE9L15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLyxpPVwib2JqZWN0XCI9PXR5cGVvZiBuLmcmJm4uZyYmbi5nLk9iamVjdD09PU9iamVjdCYmbi5nLGw9XCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGM9aXx8bHx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpLHM9QXJyYXkucHJvdG90eXBlLHU9RnVuY3Rpb24ucHJvdG90eXBlLGQ9T2JqZWN0LnByb3RvdHlwZSxmPWNbXCJfX2NvcmUtanNfc2hhcmVkX19cIl0scD0ocj0vW14uXSskLy5leGVjKGYmJmYua2V5cyYmZi5rZXlzLklFX1BST1RPfHxcIlwiKSk/XCJTeW1ib2woc3JjKV8xLlwiK3I6XCJcIixoPXUudG9TdHJpbmcsQz1kLmhhc093blByb3BlcnR5LHY9ZC50b1N0cmluZyxnPVJlZ0V4cChcIl5cIitoLmNhbGwoQykucmVwbGFjZSgvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2csXCJcXFxcJCZcIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZyxcIiQxLio/XCIpK1wiJFwiKSxtPXMuc3BsaWNlLHc9UyhjLFwiTWFwXCIpLHk9UyhPYmplY3QsXCJjcmVhdGVcIik7ZnVuY3Rpb24gYihlKXt2YXIgdD0tMSxuPWU/ZS5sZW5ndGg6MDtmb3IodGhpcy5jbGVhcigpOysrdDxuOyl7dmFyIHI9ZVt0XTt0aGlzLnNldChyWzBdLHJbMV0pfX1mdW5jdGlvbiB4KGUpe3ZhciB0PS0xLG49ZT9lLmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PG47KXt2YXIgcj1lW3RdO3RoaXMuc2V0KHJbMF0sclsxXSl9fWZ1bmN0aW9uIE8oZSl7dmFyIHQ9LTEsbj1lP2UubGVuZ3RoOjA7Zm9yKHRoaXMuY2xlYXIoKTsrK3Q8bjspe3ZhciByPWVbdF07dGhpcy5zZXQoclswXSxyWzFdKX19ZnVuY3Rpb24gTChlLHQpe2Zvcih2YXIgbixyLG89ZS5sZW5ndGg7by0tOylpZigobj1lW29dWzBdKT09PShyPXQpfHxuIT1uJiZyIT1yKXJldHVybiBvO3JldHVybi0xfWZ1bmN0aW9uIE0oZSx0KXt2YXIgbixyLG89ZS5fX2RhdGFfXztyZXR1cm4oXCJzdHJpbmdcIj09KHI9dHlwZW9mKG49dCkpfHxcIm51bWJlclwiPT1yfHxcInN5bWJvbFwiPT1yfHxcImJvb2xlYW5cIj09cj9cIl9fcHJvdG9fX1wiIT09bjpudWxsPT09bik/b1tcInN0cmluZ1wiPT10eXBlb2YgdD9cInN0cmluZ1wiOlwiaGFzaFwiXTpvLm1hcH1mdW5jdGlvbiBTKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZT92b2lkIDA6ZVt0XX0oZSx0KTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoIWooZSl8fHAmJnAgaW4gZSlyZXR1cm4hMTt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdD1qKGUpP3YuY2FsbChlKTpcIlwiO3JldHVyblwiW29iamVjdCBGdW5jdGlvbl1cIj09dHx8XCJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXVwiPT10fShlKXx8ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZS50b1N0cmluZyl0cnl7dD0hIShlK1wiXCIpfWNhdGNoKGUpe31yZXR1cm4gdH0oZSk/ZzphO3JldHVybiB0LnRlc3QoZnVuY3Rpb24oZSl7aWYobnVsbCE9ZSl7dHJ5e3JldHVybiBoLmNhbGwoZSl9Y2F0Y2goZSl7fXRyeXtyZXR1cm4gZStcIlwifWNhdGNoKGUpe319cmV0dXJuXCJcIn0oZSkpfShuKT9uOnZvaWQgMH1mdW5jdGlvbiBfKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZXx8dCYmXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBmdW5jdGlvblwiKTt2YXIgbj1mdW5jdGlvbigpe3ZhciByPWFyZ3VtZW50cyxvPXQ/dC5hcHBseSh0aGlzLHIpOnJbMF0sYT1uLmNhY2hlO2lmKGEuaGFzKG8pKXJldHVybiBhLmdldChvKTt2YXIgaT1lLmFwcGx5KHRoaXMscik7cmV0dXJuIG4uY2FjaGU9YS5zZXQobyxpKSxpfTtyZXR1cm4gbi5jYWNoZT1uZXcoXy5DYWNoZXx8Tyksbn1mdW5jdGlvbiBqKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiEhZSYmKFwib2JqZWN0XCI9PXR8fFwiZnVuY3Rpb25cIj09dCl9Yi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPXk/eShudWxsKTp7fX0sYi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmhhcyhlKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bZV19LGIucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO2lmKHkpe3ZhciBuPXRbZV07cmV0dXJuIG49PT1vP3ZvaWQgMDpufXJldHVybiBDLmNhbGwodCxlKT90W2VdOnZvaWQgMH0sYi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX187cmV0dXJuIHk/dm9pZCAwIT09dFtlXTpDLmNhbGwodCxlKX0sYi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX19kYXRhX19bZV09eSYmdm9pZCAwPT09dD9vOnQsdGhpc30seC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdfSx4LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxuPUwodCxlKTtyZXR1cm4hKG48MHx8KG49PXQubGVuZ3RoLTE/dC5wb3AoKTptLmNhbGwodCxuLDEpLDApKX0seC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18sbj1MKHQsZSk7cmV0dXJuIG48MD92b2lkIDA6dFtuXVsxXX0seC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiBMKHRoaXMuX19kYXRhX18sZSk+LTF9LHgucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19kYXRhX18scj1MKG4sZSk7cmV0dXJuIHI8MD9uLnB1c2goW2UsdF0pOm5bcl1bMV09dCx0aGlzfSxPLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189e2hhc2g6bmV3IGIsbWFwOm5ldyh3fHx4KSxzdHJpbmc6bmV3IGJ9fSxPLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7cmV0dXJuIE0odGhpcyxlKS5kZWxldGUoZSl9LE8ucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gTSh0aGlzLGUpLmdldChlKX0sTy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiBNKHRoaXMsZSkuaGFzKGUpfSxPLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTSh0aGlzLGUpLnNldChlLHQpLHRoaXN9LF8uQ2FjaGU9TyxlLmV4cG9ydHM9X30sNzQxODplPT57dmFyIHQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscj1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO2UuZXhwb3J0cz1mdW5jdGlvbigpe3RyeXtpZighT2JqZWN0LmFzc2lnbilyZXR1cm4hMTt2YXIgZT1uZXcgU3RyaW5nKFwiYWJjXCIpO2lmKGVbNV09XCJkZVwiLFwiNVwiPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSlbMF0pcmV0dXJuITE7Zm9yKHZhciB0PXt9LG49MDtuPDEwO24rKyl0W1wiX1wiK1N0cmluZy5mcm9tQ2hhckNvZGUobildPW47aWYoXCIwMTIzNDU2Nzg5XCIhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkpLmpvaW4oXCJcIikpcmV0dXJuITE7dmFyIHI9e307cmV0dXJuXCJhYmNkZWZnaGlqa2xtbm9wcXJzdFwiLnNwbGl0KFwiXCIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JbZV09ZX0pKSxcImFiY2RlZmdoaWprbG1ub3BxcnN0XCI9PT1PYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LHIpKS5qb2luKFwiXCIpfWNhdGNoKGUpe3JldHVybiExfX0oKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGUsbyl7Zm9yKHZhciBhLGksbD1mdW5jdGlvbihlKXtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4gT2JqZWN0KGUpfShlKSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7Zm9yKHZhciBzIGluIGE9T2JqZWN0KGFyZ3VtZW50c1tjXSkpbi5jYWxsKGEscykmJihsW3NdPWFbc10pO2lmKHQpe2k9dChhKTtmb3IodmFyIHU9MDt1PGkubGVuZ3RoO3UrKylyLmNhbGwoYSxpW3VdKSYmKGxbaVt1XV09YVtpW3VdXSl9fXJldHVybiBsfX0sOTI5NDooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9big2NTUpLG89big0Mzk0KSxhPW4oMzU3MyksaT1uKDQ4MzkpO3ZhciBsPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmXCJkZWZhdWx0XCJpbiBlP2U6e2RlZmF1bHQ6ZX19KGkpLGM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBNYXRoLm1pbihNYXRoLm1heChuLGUpLHQpfSxzPS4wMDEsdT0uMDEsZD0xMCxmPS4wNSxwPTEsaD0xMjtmdW5jdGlvbiBDKGUsdCl7cmV0dXJuIGUqTWF0aC5zcXJ0KDEtdCp0KX12YXIgdj1bXCJkdXJhdGlvblwiLFwiYm91bmNlXCJdLGc9W1wic3RpZmZuZXNzXCIsXCJkYW1waW5nXCIsXCJtYXNzXCJdO2Z1bmN0aW9uIG0oZSx0KXtyZXR1cm4gdC5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09ZVt0XX0pKX1mdW5jdGlvbiB3KGUpe3ZhciB0PWUuZnJvbSxuPXZvaWQgMD09PXQ/MDp0LGE9ZS50byxpPXZvaWQgMD09PWE/MTphLGw9ZS5yZXN0U3BlZWQsdz12b2lkIDA9PT1sPzI6bCxiPWUucmVzdERlbHRhLHg9ci5fX3Jlc3QoZSxbXCJmcm9tXCIsXCJ0b1wiLFwicmVzdFNwZWVkXCIsXCJyZXN0RGVsdGFcIl0pLE89e2RvbmU6ITEsdmFsdWU6bn0sTD1mdW5jdGlvbihlKXt2YXIgdD1yLl9fYXNzaWduKHt2ZWxvY2l0eTowLHN0aWZmbmVzczoxMDAsZGFtcGluZzoxMCxtYXNzOjEsaXNSZXNvbHZlZEZyb21EdXJhdGlvbjohMX0sZSk7aWYoIW0oZSxnKSYmbShlLHYpKXt2YXIgbj1mdW5jdGlvbihlKXt2YXIgdCxuLHI9ZS5kdXJhdGlvbixhPXZvaWQgMD09PXI/ODAwOnIsaT1lLmJvdW5jZSxsPXZvaWQgMD09PWk/LjI1Omksdj1lLnZlbG9jaXR5LGc9dm9pZCAwPT09dj8wOnYsbT1lLm1hc3Msdz12b2lkIDA9PT1tPzE6bTtvLndhcm5pbmcoYTw9MWUzKmQsXCJTcHJpbmcgZHVyYXRpb24gbXVzdCBiZSAxMCBzZWNvbmRzIG9yIGxlc3NcIik7dmFyIHk9MS1sO3k9YyhmLHAseSksYT1jKHUsZCxhLzFlMykseTwxPyh0PWZ1bmN0aW9uKGUpe3ZhciB0PWUqeSxuPXQqYSxyPXQtZyxvPUMoZSx5KSxpPU1hdGguZXhwKC1uKTtyZXR1cm4gcy1yL28qaX0sbj1mdW5jdGlvbihlKXt2YXIgbj1lKnkqYSxyPW4qZytnLG89TWF0aC5wb3coeSwyKSpNYXRoLnBvdyhlLDIpKmEsaT1NYXRoLmV4cCgtbiksbD1DKE1hdGgucG93KGUsMikseSk7cmV0dXJuKC10KGUpK3M+MD8tMToxKSooKHItbykqaSkvbH0pOih0PWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmV4cCgtZSphKSooKGUtZykqYSsxKS1zfSxuPWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmV4cCgtZSphKSooYSphKihnLWUpKX0pO3ZhciBiPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bixvPTE7bzxoO28rKylyLT1lKHIpL3Qocik7cmV0dXJuIHJ9KHQsbiw1L2EpO2lmKGEqPTFlMyxpc05hTihiKSlyZXR1cm57c3RpZmZuZXNzOjEwMCxkYW1waW5nOjEwLGR1cmF0aW9uOmF9O3ZhciB4PU1hdGgucG93KGIsMikqdztyZXR1cm57c3RpZmZuZXNzOngsZGFtcGluZzoyKnkqTWF0aC5zcXJ0KHcqeCksZHVyYXRpb246YX19KGUpOyh0PXIuX19hc3NpZ24oci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHQpLG4pLHt2ZWxvY2l0eTowLG1hc3M6MX0pKS5pc1Jlc29sdmVkRnJvbUR1cmF0aW9uPSEwfXJldHVybiB0fSh4KSxNPUwuc3RpZmZuZXNzLFM9TC5kYW1waW5nLF89TC5tYXNzLGo9TC52ZWxvY2l0eSxFPUwuZHVyYXRpb24sUD1MLmlzUmVzb2x2ZWRGcm9tRHVyYXRpb24saz15LEg9eTtmdW5jdGlvbiBWKCl7dmFyIGU9aj8tai8xZTM6MCx0PWktbixyPVMvKDIqTWF0aC5zcXJ0KE0qXykpLG89TWF0aC5zcXJ0KE0vXykvMWUzO2lmKG51bGwhPWJ8fChiPU1hdGguYWJzKGktbik8PTE/LjAxOi40KSxyPDEpe3ZhciBhPUMobyxyKTtrPWZ1bmN0aW9uKG4pe3ZhciBsPU1hdGguZXhwKC1yKm8qbik7cmV0dXJuIGktbCooKGUrcipvKnQpL2EqTWF0aC5zaW4oYSpuKSt0Kk1hdGguY29zKGEqbikpfSxIPWZ1bmN0aW9uKG4pe3ZhciBpPU1hdGguZXhwKC1yKm8qbik7cmV0dXJuIHIqbyppKihNYXRoLnNpbihhKm4pKihlK3Iqbyp0KS9hK3QqTWF0aC5jb3MoYSpuKSktaSooTWF0aC5jb3MoYSpuKSooZStyKm8qdCktYSp0Kk1hdGguc2luKGEqbikpfX1lbHNlIGlmKDE9PT1yKWs9ZnVuY3Rpb24obil7cmV0dXJuIGktTWF0aC5leHAoLW8qbikqKHQrKGUrbyp0KSpuKX07ZWxzZXt2YXIgbD1vKk1hdGguc3FydChyKnItMSk7az1mdW5jdGlvbihuKXt2YXIgYT1NYXRoLmV4cCgtcipvKm4pLGM9TWF0aC5taW4obCpuLDMwMCk7cmV0dXJuIGktYSooKGUrcipvKnQpKk1hdGguc2luaChjKStsKnQqTWF0aC5jb3NoKGMpKS9sfX19cmV0dXJuIFYoKSx7bmV4dDpmdW5jdGlvbihlKXt2YXIgdD1rKGUpO2lmKFApTy5kb25lPWU+PUU7ZWxzZXt2YXIgbj0xZTMqSChlKSxyPU1hdGguYWJzKG4pPD13LG89TWF0aC5hYnMoaS10KTw9YjtPLmRvbmU9ciYmb31yZXR1cm4gTy52YWx1ZT1PLmRvbmU/aTp0LE99LGZsaXBUYXJnZXQ6ZnVuY3Rpb24oKXt2YXIgZTtqPS1qLG49KGU9W2ksbl0pWzBdLGk9ZVsxXSxWKCl9fX13Lm5lZWRzSW50ZXJwb2xhdGlvbj1mdW5jdGlvbihlLHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlfHxcInN0cmluZ1wiPT10eXBlb2YgdH07dmFyIHk9ZnVuY3Rpb24oZSl7cmV0dXJuIDB9LGI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQtZTtyZXR1cm4gMD09PXI/MToobi1lKS9yfSx4PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4tbiplK24qdCtlfSxPPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKmUsbz10KnQ7cmV0dXJuIE1hdGguc3FydChNYXRoLm1heCgwLG4qKG8tcikrcikpfSxMPVthLmhleCxhLnJnYmEsYS5oc2xhXSxNPWZ1bmN0aW9uKGUpe3JldHVybiBMLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRlc3QoZSl9KSl9LFM9ZnVuY3Rpb24oZSl7cmV0dXJuXCInXCIrZStcIicgaXMgbm90IGFuIGFuaW1hdGFibGUgY29sb3IuIFVzZSB0aGUgZXF1aXZhbGVudCBjb2xvciBjb2RlIGluc3RlYWQuXCJ9LF89ZnVuY3Rpb24oZSx0KXt2YXIgbj1NKGUpLGk9TSh0KTtvLmludmFyaWFudCghIW4sUyhlKSksby5pbnZhcmlhbnQoISFpLFModCkpLG8uaW52YXJpYW50KG4udHJhbnNmb3JtPT09aS50cmFuc2Zvcm0sXCJCb3RoIGNvbG9ycyBtdXN0IGJlIGhleC9SR0JBLCBPUiBib3RoIG11c3QgYmUgSFNMQS5cIik7dmFyIGw9bi5wYXJzZShlKSxjPWkucGFyc2UodCkscz1yLl9fYXNzaWduKHt9LGwpLHU9bj09PWEuaHNsYT94Ok87cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBzKVwiYWxwaGFcIiE9PXQmJihzW3RdPXUobFt0XSxjW3RdLGUpKTtyZXR1cm4gcy5hbHBoYT14KGwuYWxwaGEsYy5hbHBoYSxlKSxuLnRyYW5zZm9ybShzKX19LGo9e3g6MCx5OjAsejowfSxFPWZ1bmN0aW9uKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlfSxQPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0KGUobikpfX0saz1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gZS5yZWR1Y2UoUCl9O2Z1bmN0aW9uIEgoZSx0KXtyZXR1cm4gRShlKT9mdW5jdGlvbihuKXtyZXR1cm4geChlLHQsbil9OmEuY29sb3IudGVzdChlKT9fKGUsdCk6WihlLHQpfXZhciBWPWZ1bmN0aW9uKGUsdCl7dmFyIG49ci5fX3NwcmVhZEFycmF5KFtdLGUpLG89bi5sZW5ndGgsYT1lLm1hcCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gSChlLHRbbl0pfSkpO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PG87dCsrKW5bdF09YVt0XShlKTtyZXR1cm4gbn19LFI9ZnVuY3Rpb24oZSx0KXt2YXIgbj1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sZSksdCksbz17fTtmb3IodmFyIGEgaW4gbil2b2lkIDAhPT1lW2FdJiZ2b2lkIDAhPT10W2FdJiYob1thXT1IKGVbYV0sdFthXSkpO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gbyluW3RdPW9bdF0oZSk7cmV0dXJuIG59fTtmdW5jdGlvbiBJKGUpe2Zvcih2YXIgdD1hLmNvbXBsZXgucGFyc2UoZSksbj10Lmxlbmd0aCxyPTAsbz0wLGk9MCxsPTA7bDxuO2wrKylyfHxcIm51bWJlclwiPT10eXBlb2YgdFtsXT9yKys6dm9pZCAwIT09dFtsXS5odWU/aSsrOm8rKztyZXR1cm57cGFyc2VkOnQsbnVtTnVtYmVyczpyLG51bVJHQjpvLG51bUhTTDppfX12YXIgWj1mdW5jdGlvbihlLHQpe3ZhciBuPWEuY29tcGxleC5jcmVhdGVUcmFuc2Zvcm1lcih0KSxyPUkoZSksaT1JKHQpO3JldHVybiBvLmludmFyaWFudChyLm51bUhTTD09PWkubnVtSFNMJiZyLm51bVJHQj09PWkubnVtUkdCJiZyLm51bU51bWJlcnM+PWkubnVtTnVtYmVycyxcIkNvbXBsZXggdmFsdWVzICdcIitlK1wiJyBhbmQgJ1wiK3QrXCInIHRvbyBkaWZmZXJlbnQgdG8gbWl4LiBFbnN1cmUgYWxsIGNvbG9ycyBhcmUgb2YgdGhlIHNhbWUgdHlwZS5cIiksayhWKHIucGFyc2VkLGkucGFyc2VkKSxuKX0sQT1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4geChlLHQsbil9fTtmdW5jdGlvbiBEKGUsdCxuKXt2YXIgcj12b2lkIDA9PT1uP3t9Om4saT1yLmNsYW1wLGw9dm9pZCAwPT09aXx8aSxzPXIuZWFzZSx1PXIubWl4ZXIsZD1lLmxlbmd0aDtvLmludmFyaWFudChkPT09dC5sZW5ndGgsXCJCb3RoIGlucHV0IGFuZCBvdXRwdXQgcmFuZ2VzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoXCIpLG8uaW52YXJpYW50KCFzfHwhQXJyYXkuaXNBcnJheShzKXx8cy5sZW5ndGg9PT1kLTEsXCJBcnJheSBvZiBlYXNpbmcgZnVuY3Rpb25zIG11c3QgYmUgb2YgbGVuZ3RoIGBpbnB1dC5sZW5ndGggLSAxYCwgYXMgaXQgYXBwbGllcyB0byB0aGUgdHJhbnNpdGlvbnMgKipiZXR3ZWVuKiogdGhlIGRlZmluZWQgdmFsdWVzLlwiKSxlWzBdPmVbZC0xXSYmKGU9W10uY29uY2F0KGUpLHQ9W10uY29uY2F0KHQpLGUucmV2ZXJzZSgpLHQucmV2ZXJzZSgpKTt2YXIgZj1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByLG89W10saT1ufHwoXCJudW1iZXJcIj09dHlwZW9mKHI9ZVswXSk/QTpcInN0cmluZ1wiPT10eXBlb2Ygcj9hLmNvbG9yLnRlc3Qocik/XzpaOkFycmF5LmlzQXJyYXkocik/VjpcIm9iamVjdFwiPT10eXBlb2Ygcj9SOnZvaWQgMCksbD1lLmxlbmd0aC0xLGM9MDtjPGw7YysrKXt2YXIgcz1pKGVbY10sZVtjKzFdKTtpZih0KXt2YXIgdT1BcnJheS5pc0FycmF5KHQpP3RbY106dDtzPWsodSxzKX1vLnB1c2gocyl9cmV0dXJuIG99KHQscyx1KSxwPTI9PT1kP2Z1bmN0aW9uKGUsdCl7dmFyIG49ZVswXSxyPWVbMV0sbz10WzBdO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbyhiKG4scixlKSl9fShlLGYpOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5sZW5ndGgscj1uLTE7cmV0dXJuIGZ1bmN0aW9uKG8pe3ZhciBhPTAsaT0hMTtpZihvPD1lWzBdP2k9ITA6bz49ZVtyXSYmKGE9ci0xLGk9ITApLCFpKXtmb3IodmFyIGw9MTtsPG4mJiEoZVtsXT5vfHxsPT09cik7bCsrKTthPWwtMX12YXIgYz1iKGVbYV0sZVthKzFdLG8pO3JldHVybiB0W2FdKGMpfX0oZSxmKTtyZXR1cm4gbD9mdW5jdGlvbih0KXtyZXR1cm4gcChjKGVbMF0sZVtkLTFdLHQpKX06cH12YXIgQj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIDEtZSgxLXQpfX0sVD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ8PS41P2UoMip0KS8yOigyLWUoMiooMS10KSkpLzJ9fSwkPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5wb3codCxlKX19LEY9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0KnQqKChlKzEpKnQtZSl9fSxXPWZ1bmN0aW9uKGUpe3ZhciB0PUYoZSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihlKj0yKTwxPy41KnQoZSk6LjUqKDItTWF0aC5wb3coMiwtMTAqKGUtMSkpKX19LE49ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHo9JCgyKSxVPUIoeiksRz1UKHopLHE9ZnVuY3Rpb24oZSl7cmV0dXJuIDEtTWF0aC5zaW4oTWF0aC5hY29zKGUpKX0sWT1CKHEpLEs9VChZKSxYPUYoMS41MjUpLFE9QihYKSxKPVQoWCksZWU9VygxLjUyNSksdGU9ZnVuY3Rpb24oZSl7aWYoMT09PWV8fDA9PT1lKXJldHVybiBlO3ZhciB0PWUqZTtyZXR1cm4gZTwuMzYzNjM2MzYzNjM2MzYzNjU/Ny41NjI1KnQ6ZTwuNzI3MjcyNzI3MjcyNzI3Mz85LjA3NSp0LTkuOSplKzMuNDplPC45PzEyLjA2NjQ4MTk5NDQ1OTgzMyp0LTE5LjYzNTQ1NzA2MzcxMTkxKmUrOC44OTgwNjA5NDE4MjgyNTU6MTAuOCplKmUtMjAuNTIqZSsxMC43Mn0sbmU9Qih0ZSk7ZnVuY3Rpb24gcmUoZSx0KXtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIHR8fEd9KSkuc3BsaWNlKDAsZS5sZW5ndGgtMSl9ZnVuY3Rpb24gb2UoZSl7dmFyIHQ9ZS5mcm9tLG49dm9pZCAwPT09dD8wOnQscj1lLnRvLG89dm9pZCAwPT09cj8xOnIsYT1lLmVhc2UsaT1lLm9mZnNldCxsPWUuZHVyYXRpb24sYz12b2lkIDA9PT1sPzMwMDpsLHM9e2RvbmU6ITEsdmFsdWU6bn0sdT1BcnJheS5pc0FycmF5KG8pP286W24sb10sZD1mdW5jdGlvbihlLHQpe3JldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUqdH0pKX0oaSYmaS5sZW5ndGg9PT11Lmxlbmd0aD9pOmZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO3JldHVybiBlLm1hcCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gMCE9PW4/bi8odC0xKTowfSkpfSh1KSxjKTtmdW5jdGlvbiBmKCl7cmV0dXJuIEQoZCx1LHtlYXNlOkFycmF5LmlzQXJyYXkoYSk/YTpyZSh1LGEpfSl9dmFyIHA9ZigpO3JldHVybntuZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBzLnZhbHVlPXAoZSkscy5kb25lPWU+PWMsc30sZmxpcFRhcmdldDpmdW5jdGlvbigpe3UucmV2ZXJzZSgpLHA9ZigpfX19ZnVuY3Rpb24gYWUoZSl7dmFyIHQ9ZS52ZWxvY2l0eSxuPXZvaWQgMD09PXQ/MDp0LHI9ZS5mcm9tLG89dm9pZCAwPT09cj8wOnIsYT1lLnBvd2VyLGk9dm9pZCAwPT09YT8uODphLGw9ZS50aW1lQ29uc3RhbnQsYz12b2lkIDA9PT1sPzM1MDpsLHM9ZS5yZXN0RGVsdGEsdT12b2lkIDA9PT1zPy41OnMsZD1lLm1vZGlmeVRhcmdldCxmPXtkb25lOiExLHZhbHVlOm99LHA9aSpuLGg9bytwLEM9dm9pZCAwPT09ZD9oOmQoaCk7cmV0dXJuIEMhPT1oJiYocD1DLW8pLHtuZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PS1wKk1hdGguZXhwKC1lL2MpO3JldHVybiBmLmRvbmU9ISh0PnV8fHQ8LXUpLGYudmFsdWU9Zi5kb25lP0M6Qyt0LGZ9LGZsaXBUYXJnZXQ6ZnVuY3Rpb24oKXt9fX12YXIgaWU9e2tleWZyYW1lczpvZSxzcHJpbmc6dyxkZWNheTphZX07ZnVuY3Rpb24gbGUoZSx0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0wKSxlLXQtbn12YXIgY2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24odCl7dmFyIG49dC5kZWx0YTtyZXR1cm4gZShuKX07cmV0dXJue3N0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGwuZGVmYXVsdC51cGRhdGUodCwhMCl9LHN0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gaS5jYW5jZWxTeW5jLnVwZGF0ZSh0KX19fTtmdW5jdGlvbiBzZShlKXt2YXIgdCxuLG8sYSxpLGw9ZS5mcm9tLGM9ZS5hdXRvcGxheSxzPXZvaWQgMD09PWN8fGMsdT1lLmRyaXZlcixkPXZvaWQgMD09PXU/Y2U6dSxmPWUuZWxhcHNlZCxwPXZvaWQgMD09PWY/MDpmLGg9ZS5yZXBlYXQsQz12b2lkIDA9PT1oPzA6aCx2PWUucmVwZWF0VHlwZSxnPXZvaWQgMD09PXY/XCJsb29wXCI6dixtPWUucmVwZWF0RGVsYXkseT12b2lkIDA9PT1tPzA6bSxiPWUub25QbGF5LHg9ZS5vblN0b3AsTz1lLm9uQ29tcGxldGUsTD1lLm9uUmVwZWF0LE09ZS5vblVwZGF0ZSxTPXIuX19yZXN0KGUsW1wiZnJvbVwiLFwiYXV0b3BsYXlcIixcImRyaXZlclwiLFwiZWxhcHNlZFwiLFwicmVwZWF0XCIsXCJyZXBlYXRUeXBlXCIsXCJyZXBlYXREZWxheVwiLFwib25QbGF5XCIsXCJvblN0b3BcIixcIm9uQ29tcGxldGVcIixcIm9uUmVwZWF0XCIsXCJvblVwZGF0ZVwiXSksXz1TLnRvLGo9MCxFPVMuZHVyYXRpb24sUD0hMSxrPSEwLEg9ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlLnRvKSlyZXR1cm4gb2U7aWYoaWVbZS50eXBlXSlyZXR1cm4gaWVbZS50eXBlXTt2YXIgdD1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKTtyZXR1cm4gdC5oYXMoXCJlYXNlXCIpfHx0LmhhcyhcImR1cmF0aW9uXCIpJiYhdC5oYXMoXCJkYW1waW5nUmF0aW9cIik/b2U6dC5oYXMoXCJkYW1waW5nUmF0aW9cIil8fHQuaGFzKFwic3RpZmZuZXNzXCIpfHx0LmhhcyhcIm1hc3NcIil8fHQuaGFzKFwiZGFtcGluZ1wiKXx8dC5oYXMoXCJyZXN0U3BlZWRcIil8fHQuaGFzKFwicmVzdERlbHRhXCIpP3c6b2V9KFMpOyhudWxsPT09KG49KHQ9SCkubmVlZHNJbnRlcnBvbGF0aW9uKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jYWxsKHQsbCxfKSkmJihpPUQoWzAsMTAwXSxbbCxfXSx7Y2xhbXA6ITF9KSxsPTAsXz0xMDApO3ZhciBWPUgoci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LFMpLHtmcm9tOmwsdG86X30pKTtyZXR1cm4gcyYmKG51bGw9PWJ8fGIoKSwobz1kKChmdW5jdGlvbihlKXtpZihrfHwoZT0tZSkscCs9ZSwhUCl7dmFyIHQ9Vi5uZXh0KE1hdGgubWF4KDAscCkpO2E9dC52YWx1ZSxpJiYoYT1pKGEpKSxQPWs/dC5kb25lOnA8PTB9bnVsbD09TXx8TShhKSxQJiYoMD09PWomJihudWxsIT1FfHwoRT1wKSksajxDP2Z1bmN0aW9uKGUsdCxuLHIpe3JldHVybiByP2U+PXQrbjplPD0tbn0ocCxFLHksaykmJihqKyssXCJyZXZlcnNlXCI9PT1nP3A9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PXImJihyPSEwKSxyP2xlKHQrLWUsdCxuKTp0LShlLXQpK259KHAsRSx5LGs9aiUyPT0wKToocD1sZShwLEUseSksXCJtaXJyb3JcIj09PWcmJlYuZmxpcFRhcmdldCgpKSxQPSExLEwmJkwoKSk6KG8uc3RvcCgpLE8mJk8oKSkpfSkpKS5zdGFydCgpKSx7c3RvcDpmdW5jdGlvbigpe251bGw9PXh8fHgoKSxvLnN0b3AoKX19fWZ1bmN0aW9uIHVlKGUsdCl7cmV0dXJuIHQ/ZSooMWUzL3QpOjB9dmFyIGRlPWZ1bmN0aW9uKGUpe3JldHVybiAxODAqZS9NYXRoLlBJfSxmZT1mdW5jdGlvbihlKXtyZXR1cm4gZX0scGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPWZlKSxmdW5jdGlvbih0LG4scil7dmFyIG89bi1yLGE9LSgwLXQrMSkqKDAtZShNYXRoLmFicyhvKSkpO3JldHVybiBvPD0wP24rYTpuLWF9fSxoZT1wZSgpLENlPXBlKE1hdGguc3FydCksdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUqTWF0aC5QSS8xODB9LGdlPWZ1bmN0aW9uKGUpe3JldHVybiBlLmhhc093blByb3BlcnR5KFwieFwiKSYmZS5oYXNPd25Qcm9wZXJ0eShcInlcIil9LG1lPWZ1bmN0aW9uKGUpe3JldHVybiBnZShlKSYmZS5oYXNPd25Qcm9wZXJ0eShcInpcIil9LHdlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGguYWJzKGUtdCl9LHllPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PTIpLHQ9TWF0aC5wb3coMTAsdCksTWF0aC5yb3VuZChlKnQpL3R9LGJlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB2b2lkIDA9PT1yJiYocj0wKSx5ZShlK24qKHQtZSkvTWF0aC5tYXgocixuKSl9LHhlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDEtMyp0KzMqZX0sT2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMyp0LTYqZX0sTGU9ZnVuY3Rpb24oZSl7cmV0dXJuIDMqZX0sTWU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybigoeGUodCxuKSplK09lKHQsbikpKmUrTGUodCkpKmV9LFNlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gMyp4ZSh0LG4pKmUqZSsyKk9lKHQsbikqZStMZSh0KX0sX2U9LjE7dC5hbmdsZT1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1qKSxkZShNYXRoLmF0YW4yKHQueS1lLnksdC54LWUueCkpfSx0LmFuaW1hdGU9c2UsdC5hbnRpY2lwYXRlPWVlLHQuYXBwbHlPZmZzZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj0hMDtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ZSxuPSExKSxmdW5jdGlvbihyKXtyZXR1cm4gbj9yLWUrdDooZT1yLG49ITAsdCl9fSx0LmF0dHJhY3Q9aGUsdC5hdHRyYWN0RXhwbz1DZSx0LmJhY2tJbj1YLHQuYmFja0luT3V0PUosdC5iYWNrT3V0PVEsdC5ib3VuY2VJbj1uZSx0LmJvdW5jZUluT3V0PWZ1bmN0aW9uKGUpe3JldHVybiBlPC41Py41KigxLXRlKDEtMiplKSk6LjUqdGUoMiplLTEpKy41fSx0LmJvdW5jZU91dD10ZSx0LmNpcmNJbj1xLHQuY2lyY0luT3V0PUssdC5jaXJjT3V0PVksdC5jbGFtcD1jLHQuY3JlYXRlQW50aWNpcGF0ZT1XLHQuY3JlYXRlQXR0cmFjdG9yPXBlLHQuY3JlYXRlQmFja0luPUYsdC5jcmVhdGVFeHBvSW49JCx0LmN1YmljQmV6aWVyPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9PT10JiZuPT09cilyZXR1cm4gTjtmb3IodmFyIG89bmV3IEZsb2F0MzJBcnJheSgxMSksYT0wO2E8MTE7KythKW9bYV09TWUoYSpfZSxlLG4pO3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gMD09PWF8fDE9PT1hP2E6TWUoZnVuY3Rpb24odCl7Zm9yKHZhciByPTAsYT0xOzEwIT09YSYmb1thXTw9dDsrK2Epcis9X2U7LS1hO3ZhciBpPXIrKHQtb1thXSkvKG9bYSsxXS1vW2FdKSpfZSxsPVNlKGksZSxuKTtyZXR1cm4gbD49LjAwMT9mdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIG89MDtvPDg7KytvKXt2YXIgYT1TZSh0LG4scik7aWYoMD09PWEpcmV0dXJuIHQ7dC09KE1lKHQsbixyKS1lKS9hfXJldHVybiB0fSh0LGksZSxuKTowPT09bD9pOmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGEsaSxsPTA7ZG97KGE9TWUoaT10KyhuLXQpLzIscixvKS1lKT4wP249aTp0PWl9d2hpbGUoTWF0aC5hYnMoYSk+MWUtNyYmKytsPDEwKTtyZXR1cm4gaX0odCxyLHIrX2UsZSxuKX0oYSksdCxyKX19LHQuZGVjYXk9YWUsdC5kZWdyZWVzVG9SYWRpYW5zPXZlLHQuZGlzdGFuY2U9ZnVuY3Rpb24oZSx0KXtpZihFKGUpJiZFKHQpKXJldHVybiB3ZShlLHQpO2lmKGdlKGUpJiZnZSh0KSl7dmFyIG49d2UoZS54LHQueCkscj13ZShlLnksdC55KSxvPW1lKGUpJiZtZSh0KT93ZShlLnosdC56KTowO3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3cobiwyKStNYXRoLnBvdyhyLDIpK01hdGgucG93KG8sMikpfX0sdC5lYXNlSW49eix0LmVhc2VJbk91dD1HLHQuZWFzZU91dD1VLHQuaW5lcnRpYT1mdW5jdGlvbihlKXt2YXIgdCxuPWUuZnJvbSxvPXZvaWQgMD09PW4/MDpuLGE9ZS52ZWxvY2l0eSxsPXZvaWQgMD09PWE/MDphLGM9ZS5taW4scz1lLm1heCx1PWUucG93ZXIsZD12b2lkIDA9PT11Py44OnUsZj1lLnRpbWVDb25zdGFudCxwPXZvaWQgMD09PWY/NzUwOmYsaD1lLmJvdW5jZVN0aWZmbmVzcyxDPXZvaWQgMD09PWg/NTAwOmgsdj1lLmJvdW5jZURhbXBpbmcsZz12b2lkIDA9PT12PzEwOnYsbT1lLnJlc3REZWx0YSx3PXZvaWQgMD09PW0/MTptLHk9ZS5tb2RpZnlUYXJnZXQsYj1lLmRyaXZlcix4PWUub25VcGRhdGUsTz1lLm9uQ29tcGxldGU7ZnVuY3Rpb24gTChlKXtyZXR1cm4gdm9pZCAwIT09YyYmZTxjfHx2b2lkIDAhPT1zJiZlPnN9ZnVuY3Rpb24gTShlKXtyZXR1cm4gdm9pZCAwPT09Yz9zOnZvaWQgMD09PXN8fE1hdGguYWJzKGMtZSk8TWF0aC5hYnMocy1lKT9jOnN9ZnVuY3Rpb24gUyhlKXtudWxsPT10fHx0LnN0b3AoKSx0PXNlKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxlKSx7ZHJpdmVyOmIsb25VcGRhdGU6ZnVuY3Rpb24odCl7dmFyIG47bnVsbD09eHx8eCh0KSxudWxsPT09KG49ZS5vblVwZGF0ZSl8fHZvaWQgMD09PW58fG4uY2FsbChlLHQpfSxvbkNvbXBsZXRlOk99KSl9ZnVuY3Rpb24gXyhlKXtTKHIuX19hc3NpZ24oe3R5cGU6XCJzcHJpbmdcIixzdGlmZm5lc3M6QyxkYW1waW5nOmcscmVzdERlbHRhOnd9LGUpKX1pZihMKG8pKV8oe2Zyb206byx2ZWxvY2l0eTpsLHRvOk0obyl9KTtlbHNle3ZhciBqPWQqbCtvO3ZvaWQgMCE9PXkmJihqPXkoaikpO3ZhciBFLFAsaz1NKGopLEg9az09PWM/LTE6MTtTKHt0eXBlOlwiZGVjYXlcIixmcm9tOm8sdmVsb2NpdHk6bCx0aW1lQ29uc3RhbnQ6cCxwb3dlcjpkLHJlc3REZWx0YTp3LG1vZGlmeVRhcmdldDp5LG9uVXBkYXRlOkwoaik/ZnVuY3Rpb24oZSl7RT1QLFA9ZSxsPXVlKGUtRSxpLmdldEZyYW1lRGF0YSgpLmRlbHRhKSwoMT09PUgmJmU+a3x8LTE9PT1IJiZlPGspJiZfKHtmcm9tOmUsdG86ayx2ZWxvY2l0eTpsfSl9OnZvaWQgMH0pfXJldHVybntzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnQuc3RvcCgpfX19LHQuaW50ZXJwb2xhdGU9RCx0LmlzUG9pbnQ9Z2UsdC5pc1BvaW50M0Q9bWUsdC5rZXlmcmFtZXM9b2UsdC5saW5lYXI9Tix0Lm1pcnJvckVhc2luZz1ULHQubWl4PXgsdC5taXhDb2xvcj1fLHQubWl4Q29tcGxleD1aLHQucGlwZT1rLHQucG9pbnRGcm9tVmVjdG9yPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD12ZSh0KSx7eDpuKk1hdGguY29zKHQpK2UueCx5Om4qTWF0aC5zaW4odCkrZS55fX0sdC5wcm9ncmVzcz1iLHQucmFkaWFuc1RvRGVncmVlcz1kZSx0LnJldmVyc2VFYXNpbmc9Qix0LnNtb290aD1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT01MCk7dmFyIHQ9MCxuPTA7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBvPWkuZ2V0RnJhbWVEYXRhKCkudGltZXN0YW1wLGE9byE9PW4/by1uOjAsbD1hP2JlKHQscixhLGUpOnQ7cmV0dXJuIG49byx0PWwsbH19LHQuc21vb3RoRnJhbWU9YmUsdC5zbmFwPWZ1bmN0aW9uKGUpe2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0L2UpKmV9O3ZhciB0PTAsbj1lLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG89TWF0aC5hYnMoZVswXS1yKTtmb3IodD0xO3Q8bjt0Kyspe3ZhciBhPWVbdF0saT1NYXRoLmFicyhhLXIpO2lmKDA9PT1pKXJldHVybiBhO2lmKGk+bylyZXR1cm4gZVt0LTFdO2lmKHQ9PT1uLTEpcmV0dXJuIGE7bz1pfX19LHQuc3ByaW5nPXcsdC5zdGVwcz1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1cImVuZFwiKSxmdW5jdGlvbihuKXt2YXIgcj0obj1cImVuZFwiPT09dD9NYXRoLm1pbihuLC45OTkpOk1hdGgubWF4KG4sLjAwMSkpKmUsbz1cImVuZFwiPT09dD9NYXRoLmZsb29yKHIpOk1hdGguY2VpbChyKTtyZXR1cm4gYygwLDEsby9lKX19LHQudG9EZWNpbWFsPXllLHQudmVsb2NpdHlQZXJGcmFtZT1mdW5jdGlvbihlLHQpe3JldHVybiBlLygxZTMvdCl9LHQudmVsb2NpdHlQZXJTZWNvbmQ9dWUsdC53cmFwPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LWU7cmV0dXJuKChuLWUpJXIrciklcitlfX0sMjcwMzooZSx0LG4pPT57dmFyIHI9big0MTQpO2Z1bmN0aW9uIG8oKXt9ZnVuY3Rpb24gYSgpe31hLnJlc2V0V2FybmluZ0NhY2hlPW8sZS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixvLGEsaSl7aWYoaSE9PXIpe3ZhciBsPW5ldyBFcnJvcihcIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXNcIik7dGhyb3cgbC5uYW1lPVwiSW52YXJpYW50IFZpb2xhdGlvblwiLGx9fWZ1bmN0aW9uIHQoKXtyZXR1cm4gZX1lLmlzUmVxdWlyZWQ9ZTt2YXIgbj17YXJyYXk6ZSxiaWdpbnQ6ZSxib29sOmUsZnVuYzplLG51bWJlcjplLG9iamVjdDplLHN0cmluZzplLHN5bWJvbDplLGFueTplLGFycmF5T2Y6dCxlbGVtZW50OmUsZWxlbWVudFR5cGU6ZSxpbnN0YW5jZU9mOnQsbm9kZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0LGV4YWN0OnQsY2hlY2tQcm9wVHlwZXM6YSxyZXNldFdhcm5pbmdDYWNoZTpvfTtyZXR1cm4gbi5Qcm9wVHlwZXM9bixufX0sNTY5NzooZSx0LG4pPT57ZS5leHBvcnRzPW4oMjcwMykoKX0sNDE0OmU9PntlLmV4cG9ydHM9XCJTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRFwifSw3MjkyOihlLHQsbik9PntuLnIodCksbi5kKHQse0NhbGVuZGFyOigpPT5RbixDZW50dXJ5VmlldzooKT0+UHQsRGVjYWRlVmlldzooKT0+RnQsTW9udGhWaWV3OigpPT5fbixOYXZpZ2F0aW9uOigpPT5GZSxZZWFyVmlldzooKT0+dG4sZGVmYXVsdDooKT0+dHJ9KTt2YXIgcj1uKDY2ODkpLG89bi5uKHIpLGE9big1Njk3KSxpPW4ubihhKTtmdW5jdGlvbiBsKGUpe3ZhciB0LG4scj1cIlwiO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlfHxcIm51bWJlclwiPT10eXBlb2YgZSlyKz1lO2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIGUpaWYoQXJyYXkuaXNBcnJheShlKSlmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0mJihuPWwoZVt0XSkpJiYociYmKHIrPVwiIFwiKSxyKz1uKTtlbHNlIGZvcih0IGluIGUpZVt0XSYmKHImJihyKz1cIiBcIikscis9dCk7cmV0dXJuIHJ9Y29uc3QgYz1mdW5jdGlvbigpe2Zvcih2YXIgZSx0LG49MCxyPVwiXCI7bjxhcmd1bWVudHMubGVuZ3RoOykoZT1hcmd1bWVudHNbbisrXSkmJih0PWwoZSkpJiYociYmKHIrPVwiIFwiKSxyKz10KTtyZXR1cm4gcn07dmFyIHM9big3NzMpLHU9bi5uKHMpO2Z1bmN0aW9uIGQoZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfXZhciBmPXUoKSgoZnVuY3Rpb24oZSl7dmFyIHQsbj12b2lkIDA9PT1lP3t9OmUscj1uLnVzZUZhbGxiYWNrTG9jYWxlLG89dm9pZCAwPT09cnx8cixhPW4uZmFsbGJhY2tMb2NhbGUsaT12b2lkIDA9PT1hP1wiZW4tVVNcIjphLGw9W107aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyl7dmFyIGM9d2luZG93Lm5hdmlnYXRvcjtsPWwuY29uY2F0KGMubGFuZ3VhZ2VzLGMubGFuZ3VhZ2UsYy51c2VyTGFuZ3VhZ2UsYy5icm93c2VyTGFuZ3VhZ2UsYy5zeXN0ZW1MYW5ndWFnZSl9cmV0dXJuIG8mJmwucHVzaChpKSxmdW5jdGlvbihlKXtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe2lmKCFlfHwtMT09PWUuaW5kZXhPZihcIi1cIil8fGUudG9Mb3dlckNhc2UoKSE9PWUpcmV0dXJuIGU7dmFyIHQ9ZS5zcGxpdChcIi1cIik7cmV0dXJuIHRbMF0rXCItXCIrdFsxXS50b1VwcGVyQ2FzZSgpfSkpfSgodD1sKS5maWx0ZXIoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUmJnQuaW5kZXhPZihlKT09PW59KSkpfSksZCkscD11KCkoKGZ1bmN0aW9uKGUpe3JldHVybiBmKGUpWzBdfHxudWxsfSksZCk7Y29uc3QgaD1wO2Z1bmN0aW9uIEMoZSx0LG4pe3JldHVybiBmdW5jdGlvbihyLG8pe3ZvaWQgMD09PW8mJihvPW4pO3ZhciBhPWUocikrbztyZXR1cm4gdChhKX19ZnVuY3Rpb24gdihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEYXRlKGUodCkuZ2V0VGltZSgpLTEpfX1mdW5jdGlvbiBnKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybltlKG4pLHQobildfX1mdW5jdGlvbiBtKGUpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBlLmdldEZ1bGxZZWFyKCk7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpcmV0dXJuIGU7dmFyIHQ9cGFyc2VJbnQoZSwxMCk7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJiFpc05hTih0KSlyZXR1cm4gdDt0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZ2V0IHllYXIgZnJvbSBkYXRlOiBcIi5jb25jYXQoZSxcIi5cIikpfWZ1bmN0aW9uIHcoZSl7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIGUuZ2V0TW9udGgoKTt0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZ2V0IG1vbnRoIGZyb20gZGF0ZTogXCIuY29uY2F0KGUsXCIuXCIpKX1mdW5jdGlvbiB5KGUpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBlLmdldERhdGUoKTt0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZ2V0IHllYXIgZnJvbSBkYXRlOiBcIi5jb25jYXQoZSxcIi5cIikpfWZ1bmN0aW9uIGIoZSl7dmFyIHQ9bShlKSxuPXQrKDEtdCklMTAwLHI9bmV3IERhdGU7cmV0dXJuIHIuc2V0RnVsbFllYXIobiwwLDEpLHIuc2V0SG91cnMoMCwwLDAsMCkscn12YXIgeD1DKG0sYiwtMTAwKSxPPUMobSxiLDEwMCksTD12KE8pLE09QyhtLEwsLTEwMCksUz0oQyhtLEwsMTAwKSxnKGIsTCkpO2Z1bmN0aW9uIF8oZSl7dmFyIHQ9bShlKSxuPXQrKDEtdCklMTAscj1uZXcgRGF0ZTtyZXR1cm4gci5zZXRGdWxsWWVhcihuLDAsMSksci5zZXRIb3VycygwLDAsMCwwKSxyfXZhciBqPUMobSxfLC0xMCksRT1DKG0sXywxMCksUD12KEUpLGs9QyhtLFAsLTEwKSxIPShDKG0sUCwxMCksZyhfLFApKTtmdW5jdGlvbiBWKGUpe3ZhciB0PW0oZSksbj1uZXcgRGF0ZTtyZXR1cm4gbi5zZXRGdWxsWWVhcih0LDAsMSksbi5zZXRIb3VycygwLDAsMCwwKSxufXZhciBSPUMobSxWLC0xKSxJPUMobSxWLDEpLFo9dihJKSxBPUMobSxaLC0xKSxEPShDKG0sWiwxKSxnKFYsWikpO2Z1bmN0aW9uIEIoZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXt2b2lkIDA9PT1yJiYocj10KTt2YXIgbz1tKG4pLGE9dyhuKStyLGk9bmV3IERhdGU7cmV0dXJuIGkuc2V0RnVsbFllYXIobyxhLDEpLGkuc2V0SG91cnMoMCwwLDAsMCksZShpKX19ZnVuY3Rpb24gVChlKXt2YXIgdD1tKGUpLG49dyhlKSxyPW5ldyBEYXRlO3JldHVybiByLnNldEZ1bGxZZWFyKHQsbiwxKSxyLnNldEhvdXJzKDAsMCwwLDApLHJ9dmFyICQ9QihULC0xKSxGPUIoVCwxKSxXPXYoRiksTj1CKFcsLTEpLHo9KEIoVywxKSxnKFQsVykpO2Z1bmN0aW9uIFUoZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXt2b2lkIDA9PT1yJiYocj10KTt2YXIgbz1tKG4pLGE9dyhuKSxpPXkobikrcixsPW5ldyBEYXRlO3JldHVybiBsLnNldEZ1bGxZZWFyKG8sYSxpKSxsLnNldEhvdXJzKDAsMCwwLDApLGUobCl9fWZ1bmN0aW9uIEcoZSl7dmFyIHQ9bShlKSxuPXcoZSkscj15KGUpLG89bmV3IERhdGU7cmV0dXJuIG8uc2V0RnVsbFllYXIodCxuLHIpLG8uc2V0SG91cnMoMCwwLDAsMCksb31VKEcsLTEpO3ZhciBxLFk9dihVKEcsMSkpLEs9KFUoWSwtMSksVShZLDEpLGcoRyxZKSk7ZnVuY3Rpb24gWChlKXtyZXR1cm4geShXKGUpKX1mdW5jdGlvbiBRKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gSihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGVlLHRlPXtBUkFCSUM6XCJBcmFiaWNcIixIRUJSRVc6XCJIZWJyZXdcIixJU09fODYwMTpcIklTTyA4NjAxXCIsVVM6XCJVU1wifSxuZT0oSihxPXt9LHRlLlVTLFtcImVuLUNBXCIsXCJlbi1VU1wiLFwiZXMtQVJcIixcImVzLUJPXCIsXCJlcy1DTFwiLFwiZXMtQ09cIixcImVzLUNSXCIsXCJlcy1ET1wiLFwiZXMtRUNcIixcImVzLUdUXCIsXCJlcy1ITlwiLFwiZXMtTVhcIixcImVzLU5JXCIsXCJlcy1QQVwiLFwiZXMtUEVcIixcImVzLVBSXCIsXCJlcy1TVlwiLFwiZXMtVkVcIixcInB0LUJSXCJdKSxKKHEsdGUuQVJBQklDLFtcImFyXCIsXCJhci1BRVwiLFwiYXItQkhcIixcImFyLURaXCIsXCJhci1FR1wiLFwiYXItSVFcIixcImFyLUpPXCIsXCJhci1LV1wiLFwiYXItTFlcIixcImFyLU9NXCIsXCJhci1RQVwiLFwiYXItU0FcIixcImFyLVNEXCIsXCJhci1TWVwiLFwiYXItWUVcIixcImR2XCIsXCJkdi1NVlwiLFwicHNcIixcInBzLUFSXCJdKSxKKHEsdGUuSEVCUkVXLFtcImhlXCIsXCJoZS1JTFwiXSkscSkscmU9KGVlPUFycmF5KDcpLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIFEoZSl9KGVlKXx8ZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lW1wiQEBpdGVyYXRvclwiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZWUpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBRKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVyblwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bj9BcnJheS5mcm9tKGUpOlwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9RKGUsdCk6dm9pZCAwfX0oZWUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKS5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9KSksb2U9bmV3IE1hcDtmdW5jdGlvbiBhZShlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIHI9dHx8aCgpO29lLmhhcyhyKXx8b2Uuc2V0KHIsbmV3IE1hcCk7dmFyIG89b2UuZ2V0KHIpO3JldHVybiBvLmhhcyhlKXx8by5zZXQoZSxuZXcgSW50bC5EYXRlVGltZUZvcm1hdChyLGUpLmZvcm1hdCksby5nZXQoZSkobil9fShlKSh0LGZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlKGUpO3JldHVybiBuZXcgRGF0ZSh0LnNldEhvdXJzKDEyKSl9KG4pKX19YWUoe2RheTpcIm51bWVyaWNcIixtb250aDpcIm51bWVyaWNcIix5ZWFyOlwibnVtZXJpY1wifSk7dmFyIGllPWFlKHtkYXk6XCJudW1lcmljXCJ9KSxsZT1hZSh7ZGF5OlwibnVtZXJpY1wiLG1vbnRoOlwibG9uZ1wiLHllYXI6XCJudW1lcmljXCJ9KSxjZT1hZSh7bW9udGg6XCJsb25nXCJ9KSxzZT1hZSh7bW9udGg6XCJsb25nXCIseWVhcjpcIm51bWVyaWNcIn0pLHVlPWFlKHt3ZWVrZGF5Olwic2hvcnRcIn0pLGRlPWFlKHt3ZWVrZGF5OlwibG9uZ1wifSksZmU9YWUoe3llYXI6XCJudW1lcmljXCJ9KSxwZT1yZVswXSxoZT1yZVs1XSxDZT1yZVs2XTtmdW5jdGlvbiB2ZShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGUuSVNPXzg2MDEsbj1lLmdldERheSgpO3N3aXRjaCh0KXtjYXNlIHRlLklTT184NjAxOnJldHVybihuKzYpJTc7Y2FzZSB0ZS5BUkFCSUM6cmV0dXJuKG4rMSklNztjYXNlIHRlLkhFQlJFVzpjYXNlIHRlLlVTOnJldHVybiBuO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgY2FsZW5kYXIgdHlwZS5cIil9fWZ1bmN0aW9uIGdlKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0ZS5JU09fODYwMSxuPW0oZSkscj13KGUpLG89ZS5nZXREYXRlKCktdmUoZSx0KTtyZXR1cm4gbmV3IERhdGUobixyLG8pfWZ1bmN0aW9uIG1lKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4gYih0KTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gXyh0KTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIFYodCk7Y2FzZVwibW9udGhcIjpyZXR1cm4gVCh0KTtjYXNlXCJkYXlcIjpyZXR1cm4gRyh0KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX1mdW5jdGlvbiB3ZShlLHQpe3N3aXRjaChlKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIE8odCk7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIEUodCk7Y2FzZVwieWVhclwiOnJldHVybiBJKHQpO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIEYodCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19dmFyIHllPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImRlY2FkZVwiOnJldHVybiBqKHQsLTEwMCk7Y2FzZVwieWVhclwiOnJldHVybiBSKHQsLTEwKTtjYXNlXCJtb250aFwiOnJldHVybiAkKHQsLTEyKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX0sYmU9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIEUodCwxMDApO2Nhc2VcInllYXJcIjpyZXR1cm4gSSh0LDEwKTtjYXNlXCJtb250aFwiOnJldHVybiBGKHQsMTIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fTtmdW5jdGlvbiB4ZShlLHQpe3N3aXRjaChlKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIEwodCk7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIFAodCk7Y2FzZVwieWVhclwiOnJldHVybiBaKHQpO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIFcodCk7Y2FzZVwiZGF5XCI6cmV0dXJuIFkodCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19dmFyIE9lPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImRlY2FkZVwiOnJldHVybiBrKHQsLTEwMCk7Y2FzZVwieWVhclwiOnJldHVybiBBKHQsLTEwKTtjYXNlXCJtb250aFwiOnJldHVybiBOKHQsLTEyKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX07ZnVuY3Rpb24gTGUoZSx0KXtzd2l0Y2goZSl7Y2FzZVwiY2VudHVyeVwiOnJldHVybiBTKHQpO2Nhc2VcImRlY2FkZVwiOnJldHVybiBIKHQpO2Nhc2VcInllYXJcIjpyZXR1cm4gRCh0KTtjYXNlXCJtb250aFwiOnJldHVybiB6KHQpO2Nhc2VcImRheVwiOnJldHVybiBLKHQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fWZ1bmN0aW9uIE1lKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpmZTtyZXR1cm4oYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0pKS5qb2luKFwiIOKAkyBcIil9ZnVuY3Rpb24gU2UoZSx0LG4pe3JldHVybiBNZShlLHQsSChuKSl9ZnVuY3Rpb24gX2UoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRlLklTT184NjAxLG49ZS5nZXREYXkoKTtzd2l0Y2godCl7Y2FzZSB0ZS5BUkFCSUM6Y2FzZSB0ZS5IRUJSRVc6cmV0dXJuIG49PT1oZXx8bj09PUNlO2Nhc2UgdGUuSVNPXzg2MDE6Y2FzZSB0ZS5VUzpyZXR1cm4gbj09PUNlfHxuPT09cGU7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBjYWxlbmRhciB0eXBlLlwiKX19ZnVuY3Rpb24gamUoZSl7cmV0dXJuIGplPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LGplKGUpfXZhciBFZT1PYmplY3QudmFsdWVzKHRlKSxQZT1bXCJjZW50dXJ5XCIsXCJkZWNhZGVcIixcInllYXJcIixcIm1vbnRoXCJdLGtlPWkoKS5vbmVPZihFZSksSGU9aSgpLm9uZU9mVHlwZShbaSgpLnN0cmluZyxpKCkuYXJyYXlPZihpKCkuc3RyaW5nKV0pLFZlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lW3RdO2lmKCFyKXJldHVybiBudWxsO2lmKCEociBpbnN0YW5jZW9mIERhdGUpKXJldHVybiBuZXcgRXJyb3IoXCJJbnZhbGlkIHByb3AgYFwiLmNvbmNhdCh0LFwiYCBvZiB0eXBlIGBcIikuY29uY2F0KGplKHIpLFwiYCBzdXBwbGllZCB0byBgXCIpLmNvbmNhdChuLFwiYCwgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgYERhdGVgLlwiKSk7dmFyIG89ZS5tYXhEYXRlO3JldHVybiBvJiZyPm8/bmV3IEVycm9yKFwiSW52YWxpZCBwcm9wIGBcIi5jb25jYXQodCxcImAgb2YgdHlwZSBgXCIpLmNvbmNhdChqZShyKSxcImAgc3VwcGxpZWQgdG8gYFwiKS5jb25jYXQobixcImAsIG1pbkRhdGUgY2Fubm90IGJlIGxhcmdlciB0aGFuIG1heERhdGUuXCIpKTpudWxsfSxSZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZVt0XTtpZighcilyZXR1cm4gbnVsbDtpZighKHIgaW5zdGFuY2VvZiBEYXRlKSlyZXR1cm4gbmV3IEVycm9yKFwiSW52YWxpZCBwcm9wIGBcIi5jb25jYXQodCxcImAgb2YgdHlwZSBgXCIpLmNvbmNhdChqZShyKSxcImAgc3VwcGxpZWQgdG8gYFwiKS5jb25jYXQobixcImAsIGV4cGVjdGVkIGluc3RhbmNlIG9mIGBEYXRlYC5cIikpO3ZhciBvPWUubWluRGF0ZTtyZXR1cm4gbyYmcjxvP25ldyBFcnJvcihcIkludmFsaWQgcHJvcCBgXCIuY29uY2F0KHQsXCJgIG9mIHR5cGUgYFwiKS5jb25jYXQoamUociksXCJgIHN1cHBsaWVkIHRvIGBcIikuY29uY2F0KG4sXCJgLCBtYXhEYXRlIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gbWluRGF0ZS5cIikpOm51bGx9LEllPWkoKS5vbmVPZlR5cGUoW2koKS5mdW5jLGkoKS5zaGFwZSh7Y3VycmVudDppKCkuYW55fSldKSxaZT1pKCkub25lT2ZUeXBlKFtpKCkuaW5zdGFuY2VPZihEYXRlKSxpKCkuYXJyYXlPZihpKCkuaW5zdGFuY2VPZihEYXRlKSldKSxBZT1pKCkuYXJyYXlPZihpKCkub25lT2YoUGUpKSxEZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZVt0XSxvPWUudmlld3N8fFBlO3JldHVybiB2b2lkIDAhPT1yJiYtMT09PW8uaW5kZXhPZihyKT9uZXcgRXJyb3IoXCJJbnZhbGlkIHByb3AgYFwiLmNvbmNhdCh0LFwiYCBvZiB2YWx1ZSBgXCIpLmNvbmNhdChyLFwiYCBzdXBwbGllZCB0byBgXCIpLmNvbmNhdChuLFwiYCwgZXhwZWN0ZWQgb25lIG9mIFtcIikuY29uY2F0KG8ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4nXCInLmNvbmNhdChlLCdcIicpfSkpLmpvaW4oXCIsIFwiKSxcIl0uXCIpKTpudWxsfTtEZS5pc1JlcXVpcmVkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lW3RdO3JldHVybiByP0RlKGUsdCxuKTpuZXcgRXJyb3IoXCJUaGUgcHJvcCBgXCIuY29uY2F0KHQsXCJgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCBpbiBgXCIpLmNvbmNhdChuLFwiYCwgYnV0IGl0cyB2YWx1ZSBpcyBgXCIpLmNvbmNhdChyLFwiYC5cIikpfTt2YXIgQmU9e2FjdGl2ZVN0YXJ0RGF0ZTppKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLGhvdmVyOmkoKS5pbnN0YW5jZU9mKERhdGUpLGxvY2FsZTppKCkuc3RyaW5nLG1heERhdGU6UmUsbWluRGF0ZTpWZSxvbkNsaWNrOmkoKS5mdW5jLG9uTW91c2VPdmVyOmkoKS5mdW5jLHRpbGVDbGFzc05hbWU6aSgpLm9uZU9mVHlwZShbaSgpLmZ1bmMsSGVdKSx0aWxlQ29udGVudDppKCkub25lT2ZUeXBlKFtpKCkuZnVuYyxpKCkubm9kZV0pLHZhbHVlOlplLHZhbHVlVHlwZTppKCkuc3RyaW5nfSxUZT17YWN0aXZlU3RhcnREYXRlOmkoKS5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsY2xhc3NlczppKCkuYXJyYXlPZihpKCkuc3RyaW5nKS5pc1JlcXVpcmVkLGRhdGU6aSgpLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxsb2NhbGU6aSgpLnN0cmluZyxtYXhEYXRlOlJlLG1pbkRhdGU6VmUsb25DbGljazppKCkuZnVuYyxvbk1vdXNlT3ZlcjppKCkuZnVuYyxzdHlsZTppKCkub2JqZWN0T2YoaSgpLm9uZU9mVHlwZShbaSgpLnN0cmluZyxpKCkubnVtYmVyXSkpLHRpbGVDbGFzc05hbWU6aSgpLm9uZU9mVHlwZShbaSgpLmZ1bmMsSGVdKSx0aWxlQ29udGVudDppKCkub25lT2ZUeXBlKFtpKCkuZnVuYyxpKCkubm9kZV0pLHRpbGVEaXNhYmxlZDppKCkuZnVuY30sJGU9XCJyZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvblwiO2Z1bmN0aW9uIEZlKGUpe3ZhciB0LG49ZS5hY3RpdmVTdGFydERhdGUscj1lLmRyaWxsVXAsYT1lLmZvcm1hdE1vbnRoWWVhcixpPXZvaWQgMD09PWE/c2U6YSxsPWUuZm9ybWF0WWVhcixjPXZvaWQgMD09PWw/ZmU6bCxzPWUubG9jYWxlLHU9ZS5tYXhEYXRlLGQ9ZS5taW5EYXRlLGY9ZS5uYXZpZ2F0aW9uQXJpYUxhYmVsLGg9dm9pZCAwPT09Zj9cIlwiOmYsQz1lLm5hdmlnYXRpb25BcmlhTGl2ZSx2PWUubmF2aWdhdGlvbkxhYmVsLGc9ZS5uZXh0MkFyaWFMYWJlbCxtPXZvaWQgMD09PWc/XCJcIjpnLHc9ZS5uZXh0MkxhYmVsLHk9dm9pZCAwPT09dz9cIsK7XCI6dyxiPWUubmV4dEFyaWFMYWJlbCxPPXZvaWQgMD09PWI/XCJcIjpiLEw9ZS5uZXh0TGFiZWwsXz12b2lkIDA9PT1MP1wi4oC6XCI6TCxFPWUucHJldjJBcmlhTGFiZWwsUD12b2lkIDA9PT1FP1wiXCI6RSxIPWUucHJldjJMYWJlbCxWPXZvaWQgMD09PUg/XCLCq1wiOkgsST1lLnByZXZBcmlhTGFiZWwsWj12b2lkIDA9PT1JP1wiXCI6SSxEPWUucHJldkxhYmVsLEI9dm9pZCAwPT09RD9cIuKAuVwiOkQsVD1lLnNldEFjdGl2ZVN0YXJ0RGF0ZSxGPWUuc2hvd0RvdWJsZVZpZXcsVz1lLnZpZXcsej1lLnZpZXdzLmluZGV4T2YoVyk+MCxVPVwiY2VudHVyeVwiIT09VyxHPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4geCh0KTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gaih0KTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIFIodCk7Y2FzZVwibW9udGhcIjpyZXR1cm4gJCh0KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX0oVyxuKSxxPVUmJnllKFcsbiksWT13ZShXLG4pLEs9VSYmYmUoVyxuKSxYPWZ1bmN0aW9uKCl7aWYoRy5nZXRGdWxsWWVhcigpPDApcmV0dXJuITA7dmFyIGU9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZVwiY2VudHVyeVwiOnJldHVybiBNKHQpO2Nhc2VcImRlY2FkZVwiOnJldHVybiBrKHQpO2Nhc2VcInllYXJcIjpyZXR1cm4gQSh0KTtjYXNlXCJtb250aFwiOnJldHVybiBOKHQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fShXLG4pO3JldHVybiBkJiZkPj1lfSgpLFE9VSYmZnVuY3Rpb24oKXtpZihxLmdldEZ1bGxZZWFyKCk8MClyZXR1cm4hMDt2YXIgZT1PZShXLG4pO3JldHVybiBkJiZkPj1lfSgpLEo9dSYmdTxZLGVlPVUmJnUmJnU8SztmdW5jdGlvbiB0ZShlKXt2YXIgdD1mdW5jdGlvbigpe3N3aXRjaChXKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gTWUoZSx0LFMobikpfShzLGMsZSk7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIFNlKHMsYyxlKTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIGMocyxlKTtjYXNlXCJtb250aFwiOnJldHVybiBpKHMsZSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHZpZXc6IFwiLmNvbmNhdChXLFwiLlwiKSl9fSgpO3JldHVybiB2P3Yoe2RhdGU6ZSxsYWJlbDp0LGxvY2FsZTpzfHxwKCksdmlldzpXfSk6dH1yZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOiRlfSxudWxsIT09ViYmVSYmbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6UCxjbGFzc05hbWU6XCJcIi5jb25jYXQoJGUsXCJfX2Fycm93IFwiKS5jb25jYXQoJGUsXCJfX3ByZXYyLWJ1dHRvblwiKSxkaXNhYmxlZDpRLG9uQ2xpY2s6ZnVuY3Rpb24oKXtUKHEsXCJwcmV2MlwiKX0sdHlwZTpcImJ1dHRvblwifSxWKSxudWxsIT09QiYmbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6WixjbGFzc05hbWU6XCJcIi5jb25jYXQoJGUsXCJfX2Fycm93IFwiKS5jb25jYXQoJGUsXCJfX3ByZXYtYnV0dG9uXCIpLGRpc2FibGVkOlgsb25DbGljazpmdW5jdGlvbigpe1QoRyxcInByZXZcIil9LHR5cGU6XCJidXR0b25cIn0sQiksKHQ9XCJcIi5jb25jYXQoJGUsXCJfX2xhYmVsXCIpLG8oKS5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse1wiYXJpYS1sYWJlbFwiOmgsXCJhcmlhLWxpdmVcIjpDLGNsYXNzTmFtZTp0LGRpc2FibGVkOiF6LG9uQ2xpY2s6cixzdHlsZTp7ZmxleEdyb3c6MX0sdHlwZTpcImJ1dHRvblwifSxvKCkuY3JlYXRlRWxlbWVudChcInNwYW5cIix7Y2xhc3NOYW1lOlwiXCIuY29uY2F0KHQsXCJfX2xhYmVsVGV4dCBcIikuY29uY2F0KHQsXCJfX2xhYmVsVGV4dC0tZnJvbVwiKX0sdGUobikpLEYmJm8oKS5jcmVhdGVFbGVtZW50KG8oKS5GcmFnbWVudCxudWxsLG8oKS5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtjbGFzc05hbWU6XCJcIi5jb25jYXQodCxcIl9fZGl2aWRlclwiKX0sXCIg4oCTIFwiKSxvKCkuY3JlYXRlRWxlbWVudChcInNwYW5cIix7Y2xhc3NOYW1lOlwiXCIuY29uY2F0KHQsXCJfX2xhYmVsVGV4dCBcIikuY29uY2F0KHQsXCJfX2xhYmVsVGV4dC0tdG9cIil9LHRlKFkpKSkpKSxudWxsIT09XyYmbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6TyxjbGFzc05hbWU6XCJcIi5jb25jYXQoJGUsXCJfX2Fycm93IFwiKS5jb25jYXQoJGUsXCJfX25leHQtYnV0dG9uXCIpLGRpc2FibGVkOkosb25DbGljazpmdW5jdGlvbigpe1QoWSxcIm5leHRcIil9LHR5cGU6XCJidXR0b25cIn0sXyksbnVsbCE9PXkmJlUmJm8oKS5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse1wiYXJpYS1sYWJlbFwiOm0sY2xhc3NOYW1lOlwiXCIuY29uY2F0KCRlLFwiX19hcnJvdyBcIikuY29uY2F0KCRlLFwiX19uZXh0Mi1idXR0b25cIiksZGlzYWJsZWQ6ZWUsb25DbGljazpmdW5jdGlvbigpe1QoSyxcIm5leHQyXCIpfSx0eXBlOlwiYnV0dG9uXCJ9LHkpKX1GZS5wcm9wVHlwZXM9e2FjdGl2ZVN0YXJ0RGF0ZTppKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLGRyaWxsVXA6aSgpLmZ1bmMuaXNSZXF1aXJlZCxmb3JtYXRNb250aFllYXI6aSgpLmZ1bmMsZm9ybWF0WWVhcjppKCkuZnVuYyxsb2NhbGU6aSgpLnN0cmluZyxtYXhEYXRlOmkoKS5pbnN0YW5jZU9mKERhdGUpLG1pbkRhdGU6aSgpLmluc3RhbmNlT2YoRGF0ZSksbmF2aWdhdGlvbkFyaWFMYWJlbDppKCkuc3RyaW5nLG5hdmlnYXRpb25BcmlhTGl2ZTppKCkuc3RyaW5nLG5hdmlnYXRpb25MYWJlbDppKCkuZnVuYyxuZXh0MkFyaWFMYWJlbDppKCkuc3RyaW5nLG5leHQyTGFiZWw6aSgpLm5vZGUsbmV4dEFyaWFMYWJlbDppKCkuc3RyaW5nLG5leHRMYWJlbDppKCkubm9kZSxwcmV2MkFyaWFMYWJlbDppKCkuc3RyaW5nLHByZXYyTGFiZWw6aSgpLm5vZGUscHJldkFyaWFMYWJlbDppKCkuc3RyaW5nLHByZXZMYWJlbDppKCkubm9kZSxzZXRBY3RpdmVTdGFydERhdGU6aSgpLmZ1bmMuaXNSZXF1aXJlZCxzaG93RG91YmxlVmlldzppKCkuYm9vbCx2aWV3OkRlLmlzUmVxdWlyZWQsdmlld3M6QWUuaXNSZXF1aXJlZH07dmFyIFdlPVtcImNoaWxkcmVuXCIsXCJjbGFzc05hbWVcIixcImRpcmVjdGlvblwiLFwiY291bnRcIixcIm9mZnNldFwiLFwic3R5bGVcIixcIndyYXBcIl07ZnVuY3Rpb24gTmUoKXtyZXR1cm4gTmU9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxOZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gemUoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFVlKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3plKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7R2UoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnplKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIEdlKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBxZShlKXtyZXR1cm5cIlwiLmNvbmNhdChlLFwiJVwiKX1mdW5jdGlvbiBZZShlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5jbGFzc05hbWUscj1lLmRpcmVjdGlvbixhPWUuY291bnQsaT1lLm9mZnNldCxsPWUuc3R5bGUsYz1lLndyYXAscz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsV2UpO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLE5lKHtjbGFzc05hbWU6bixzdHlsZTpVZSh7ZGlzcGxheTpcImZsZXhcIixmbGV4RGlyZWN0aW9uOnIsZmxleFdyYXA6Yz9cIndyYXBcIjpcIm5vLXdyYXBcIn0sbCl9LHMpLG8oKS5DaGlsZHJlbi5tYXAodCwoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbygpLmNsb25lRWxlbWVudChlLFVlKFVlKHt9LGUucHJvcHMpLHt9LHtzdHlsZTp7ZmxleEJhc2lzOnFlKDEwMC9hKSxmbGV4U2hyaW5rOjAsZmxleEdyb3c6MCxvdmVyZmxvdzpcImhpZGRlblwiLG1hcmdpbkxlZnQ6aSYmMD09PXQ/cWUoMTAwKmkvYSk6bnVsbH19KSl9KSkpfWZ1bmN0aW9uIEtlKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBYZShlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVtcIkBAaXRlcmF0b3JcIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBYZShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm5cIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4/QXJyYXkuZnJvbShlKTpcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/WGUoZSx0KTp2b2lkIDB9fShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBYZShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIFFlKGUsdCl7cmV0dXJuIHRbMF08PWUmJnRbMV0+PWV9ZnVuY3Rpb24gSmUoZSx0KXtyZXR1cm4gUWUoZVswXSx0KXx8UWUoZVsxXSx0KX1mdW5jdGlvbiBldChlLHQsbil7dmFyIHI9W107aWYoSmUodCxlKSl7ci5wdXNoKG4pO3ZhciBvPVFlKGVbMF0sdCksYT1RZShlWzFdLHQpO28mJnIucHVzaChcIlwiLmNvbmNhdChuLFwiU3RhcnRcIikpLGEmJnIucHVzaChcIlwiLmNvbmNhdChuLFwiRW5kXCIpKSxvJiZhJiZyLnB1c2goXCJcIi5jb25jYXQobixcIkJvdGhFbmRzXCIpKX1yZXR1cm4gcn1mdW5jdGlvbiB0dCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSx0PWUudmFsdWUsbj1lLnZhbHVlVHlwZSxyPWUuZGF0ZSxvPWUuZGF0ZVR5cGUsYT1lLmhvdmVyLGk9XCJyZWFjdC1jYWxlbmRhcl9fdGlsZVwiLGw9W2ldO2lmKCFyKXJldHVybiBsO2lmKCFBcnJheS5pc0FycmF5KHIpJiYhbyl0aHJvdyBuZXcgRXJyb3IoXCJnZXRUaWxlQ2xhc3NlcygpOiBVbmFibGUgdG8gZ2V0IHRpbGUgYWN0aXZpdHkgY2xhc3NlcyBiZWNhdXNlIG9uZSBvciBtb3JlIHJlcXVpcmVkIGFyZ3VtZW50cyB3ZXJlIG5vdCBwYXNzZWQuXCIpO3ZhciBjPW5ldyBEYXRlLHM9QXJyYXkuaXNBcnJheShyKT9yOkxlKG8scik7aWYoUWUoYyxzKSYmbC5wdXNoKFwiXCIuY29uY2F0KGksXCItLW5vd1wiKSksIXQpcmV0dXJuIGw7aWYoIUFycmF5LmlzQXJyYXkodCkmJiFuKXRocm93IG5ldyBFcnJvcihcImdldFRpbGVDbGFzc2VzKCk6IFVuYWJsZSB0byBnZXQgdGlsZSBhY3Rpdml0eSBjbGFzc2VzIGJlY2F1c2Ugb25lIG9yIG1vcmUgcmVxdWlyZWQgYXJndW1lbnRzIHdlcmUgbm90IHBhc3NlZC5cIik7dmFyIHUsZCxmPUFycmF5LmlzQXJyYXkodCk/dDpMZShuLHQpO2Q9cywodT1mKVswXTw9ZFswXSYmdVsxXT49ZFsxXT9sLnB1c2goXCJcIi5jb25jYXQoaSxcIi0tYWN0aXZlXCIpKTpKZShmLHMpJiZsLnB1c2goXCJcIi5jb25jYXQoaSxcIi0taGFzQWN0aXZlXCIpKTt2YXIgcD1ldChmLHMsXCJcIi5jb25jYXQoaSxcIi0tcmFuZ2VcIikpO2wucHVzaC5hcHBseShsLEtlKHApKTt2YXIgaD1bXS5jb25jYXQodCk7aWYoYSYmMT09PWgubGVuZ3RoKXt2YXIgQz1ldChhPmZbMF0/W2ZbMF0sYV06W2EsZlswXV0scyxcIlwiLmNvbmNhdChpLFwiLS1ob3ZlclwiKSk7bC5wdXNoLmFwcGx5KGwsS2UoQykpfXJldHVybiBsfVllLnByb3BUeXBlcz17Y2hpbGRyZW46aSgpLm5vZGUsY2xhc3NOYW1lOmkoKS5zdHJpbmcsY291bnQ6aSgpLm51bWJlci5pc1JlcXVpcmVkLGRpcmVjdGlvbjppKCkuc3RyaW5nLG9mZnNldDppKCkubnVtYmVyLHN0eWxlOmkoKS5vYmplY3RPZihpKCkub25lT2ZUeXBlKFtpKCkuc3RyaW5nLGkoKS5udW1iZXJdKSksd3JhcDppKCkuYm9vbH07dmFyIG50PVtcImNsYXNzTmFtZVwiLFwiY291bnRcIixcImRhdGVUcmFuc2Zvcm1cIixcImRhdGVUeXBlXCIsXCJlbmRcIixcImhvdmVyXCIsXCJvZmZzZXRcIixcInN0YXJ0XCIsXCJzdGVwXCIsXCJ0aWxlXCIsXCJ2YWx1ZVwiLFwidmFsdWVUeXBlXCJdO2Z1bmN0aW9uIHJ0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBvdChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9ydChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2F0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpydChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBhdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gaXQoKXtyZXR1cm4gaXQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxpdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbHQoZSl7Zm9yKHZhciB0PWUuY2xhc3NOYW1lLG49ZS5jb3VudCxyPXZvaWQgMD09PW4/MzpuLGE9ZS5kYXRlVHJhbnNmb3JtLGk9ZS5kYXRlVHlwZSxsPWUuZW5kLGM9ZS5ob3ZlcixzPWUub2Zmc2V0LHU9ZS5zdGFydCxkPWUuc3RlcCxmPXZvaWQgMD09PWQ/MTpkLHA9ZS50aWxlLGg9ZS52YWx1ZSxDPWUudmFsdWVUeXBlLHY9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLG50KSxnPVtdLG09dTttPD1sO20rPWYpe3ZhciB3PWEobSk7Zy5wdXNoKG8oKS5jcmVhdGVFbGVtZW50KHAsaXQoe2tleTp3LmdldFRpbWUoKSxjbGFzc2VzOnR0KHt2YWx1ZTpoLHZhbHVlVHlwZTpDLGRhdGU6dyxkYXRlVHlwZTppLGhvdmVyOmN9KSxkYXRlOncscG9pbnQ6bX0sdikpKX1yZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoWWUse2NsYXNzTmFtZTp0LGNvdW50OnIsb2Zmc2V0OnMsd3JhcDohMH0sZyl9ZnVuY3Rpb24gY3QoZSl7cmV0dXJuIGN0PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LGN0KGUpfWZ1bmN0aW9uIHN0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiB1dChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9zdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe0N0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpzdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBkdChlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24gZnQoZSx0KXtyZXR1cm4gZnQ9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxmdChlLHQpfWZ1bmN0aW9uIHB0KGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiBlfWZ1bmN0aW9uIGh0KGUpe3JldHVybiBodD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0saHQoZSl9ZnVuY3Rpb24gQ3QoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHZ0KGUsdCl7cmV0dXJuIGUmJiF0fHwhZSYmdHx8ZSYmdCYmZS5nZXRUaW1lKCkhPT10LmdldFRpbWUoKX1mdW5jdGlvbiBndChlLHQpe3ZhciBuPWUuYWN0aXZlU3RhcnREYXRlLHI9ZS5kYXRlLG89ZS52aWV3O3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dCh7YWN0aXZlU3RhcnREYXRlOm4sZGF0ZTpyLHZpZXc6b30pOnR9bHQucHJvcFR5cGVzPW90KG90KHt9LEJlKSx7fSx7YWN0aXZlU3RhcnREYXRlOmkoKS5pbnN0YW5jZU9mKERhdGUpLGNvdW50OmkoKS5udW1iZXIsZGF0ZVRyYW5zZm9ybTppKCkuZnVuYy5pc1JlcXVpcmVkLGRhdGVUeXBlOmkoKS5zdHJpbmcsb2Zmc2V0OmkoKS5udW1iZXIsc3RlcDppKCkubnVtYmVyLHRpbGU6aSgpLmZ1bmMuaXNSZXF1aXJlZH0pO3ZhciBtdD1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksdCYmZnQoZSx0KX0ocyxlKTt2YXIgdCxuLHIsYSxpLGw9KGE9cyxpPWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZnVuY3Rpb24oKXt2YXIgZSx0PWh0KGEpO2lmKGkpe3ZhciBuPWh0KHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QodCxhcmd1bWVudHMsbil9ZWxzZSBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJihcIm9iamVjdFwiPT09Y3QodCl8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBwdChlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIHMoKXt2YXIgZTshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLHMpO2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09YXJndW1lbnRzW3JdO3JldHVybiBDdChwdChlPWwuY2FsbC5hcHBseShsLFt0aGlzXS5jb25jYXQobikpKSxcInN0YXRlXCIse30pLGV9cmV0dXJuIHQ9cyxyPVt7a2V5OlwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmFjdGl2ZVN0YXJ0RGF0ZSxyPWUudGlsZUNsYXNzTmFtZSxvPWUudGlsZUNvbnRlbnQsYT17fTtyZXR1cm4ociE9PXQudGlsZUNsYXNzTmFtZVByb3BzfHx2dChuLHQuYWN0aXZlU3RhcnREYXRlUHJvcHMpKSYmKGEudGlsZUNsYXNzTmFtZT1ndChlLHIpLGEudGlsZUNsYXNzTmFtZVByb3BzPXIpLChvIT09dC50aWxlQ29udGVudFByb3BzfHx2dChuLHQuYWN0aXZlU3RhcnREYXRlUHJvcHMpKSYmKGEudGlsZUNvbnRlbnQ9Z3QoZSxvKSxhLnRpbGVDb250ZW50UHJvcHM9byksYS5hY3RpdmVTdGFydERhdGVQcm9wcz1uLGF9fV0sKG49W3trZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmFjdGl2ZVN0YXJ0RGF0ZSxuPWUuY2hpbGRyZW4scj1lLmNsYXNzZXMsYT1lLmRhdGUsaT1lLmZvcm1hdEFiYnIsbD1lLmxvY2FsZSxzPWUubWF4RGF0ZSx1PWUubWF4RGF0ZVRyYW5zZm9ybSxkPWUubWluRGF0ZSxmPWUubWluRGF0ZVRyYW5zZm9ybSxwPWUub25DbGljayxoPWUub25Nb3VzZU92ZXIsQz1lLnN0eWxlLHY9ZS50aWxlRGlzYWJsZWQsZz1lLnZpZXcsbT10aGlzLnN0YXRlLHc9bS50aWxlQ2xhc3NOYW1lLHk9bS50aWxlQ29udGVudDtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7Y2xhc3NOYW1lOmMocix3KSxkaXNhYmxlZDpkJiZmKGQpPmF8fHMmJnUocyk8YXx8diYmdih7YWN0aXZlU3RhcnREYXRlOnQsZGF0ZTphLHZpZXc6Z30pLG9uQ2xpY2s6cCYmZnVuY3Rpb24oZSl7cmV0dXJuIHAoYSxlKX0sb25Gb2N1czpoJiZmdW5jdGlvbigpe3JldHVybiBoKGEpfSxvbk1vdXNlT3ZlcjpoJiZmdW5jdGlvbigpe3JldHVybiBoKGEpfSxzdHlsZTpDLHR5cGU6XCJidXR0b25cIn0saT9vKCkuY3JlYXRlRWxlbWVudChcImFiYnJcIix7XCJhcmlhLWxhYmVsXCI6aShsLGEpfSxuKTpuLHkpfX1dKSYmZHQodC5wcm90b3R5cGUsbiksciYmZHQodCxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInByb3RvdHlwZVwiLHt3cml0YWJsZTohMX0pLHN9KHIuQ29tcG9uZW50KTttdC5wcm9wVHlwZXM9dXQodXQoe30sVGUpLHt9LHtjaGlsZHJlbjppKCkubm9kZS5pc1JlcXVpcmVkLGZvcm1hdEFiYnI6aSgpLmZ1bmMsbWF4RGF0ZVRyYW5zZm9ybTppKCkuZnVuYy5pc1JlcXVpcmVkLG1pbkRhdGVUcmFuc2Zvcm06aSgpLmZ1bmMuaXNSZXF1aXJlZH0pO3ZhciB3dD1bXCJjbGFzc2VzXCIsXCJmb3JtYXRZZWFyXCJdO2Z1bmN0aW9uIHl0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBidChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj95dChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3h0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTp5dChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiB4dChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gT3QoKXtyZXR1cm4gT3Q9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxPdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIEx0PVwicmVhY3QtY2FsZW5kYXJfX2NlbnR1cnktdmlld19fZGVjYWRlc19fZGVjYWRlXCI7ZnVuY3Rpb24gTXQoZSl7dmFyIHQ9ZS5jbGFzc2VzLG49ZS5mb3JtYXRZZWFyLHI9dm9pZCAwPT09bj9mZTpuLGE9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLHd0KSxpPWEuZGF0ZSxsPWEubG9jYWxlO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChtdCxPdCh7fSxhLHtjbGFzc2VzOltdLmNvbmNhdCh0LEx0KSxtYXhEYXRlVHJhbnNmb3JtOlAsbWluRGF0ZVRyYW5zZm9ybTpfLHZpZXc6XCJjZW50dXJ5XCJ9KSxTZShsLHIsaSkpfWZ1bmN0aW9uIFN0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBfdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24ganQoKXtyZXR1cm4ganQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxqdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gRXQoZSl7dmFyIHQ9bShiKGUuYWN0aXZlU3RhcnREYXRlKSksbj10Kzk5O3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChsdCxqdCh7fSxlLHtjbGFzc05hbWU6XCJyZWFjdC1jYWxlbmRhcl9fY2VudHVyeS12aWV3X19kZWNhZGVzXCIsZGF0ZVRyYW5zZm9ybTpfLGRhdGVUeXBlOlwiZGVjYWRlXCIsZW5kOm4sc3RhcnQ6dCxzdGVwOjEwLHRpbGU6TXR9KSl9ZnVuY3Rpb24gUHQoZSl7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX19jZW50dXJ5LXZpZXdcIn0sbygpLmNyZWF0ZUVsZW1lbnQoRXQsZSkpfU10LnByb3BUeXBlcz1idChidCh7fSxUZSkse30se2Zvcm1hdFllYXI6aSgpLmZ1bmN9KSxFdC5wcm9wVHlwZXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/U3QoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtfdChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6U3QoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9KHt9LEJlKTt2YXIga3Q9W1wiY2xhc3Nlc1wiLFwiZm9ybWF0WWVhclwiXTtmdW5jdGlvbiBIdChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gVnQoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/SHQoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtSdChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6SHQoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gUnQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIEl0KCl7cmV0dXJuIEl0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sSXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBadD1cInJlYWN0LWNhbGVuZGFyX19kZWNhZGUtdmlld19feWVhcnNfX3llYXJcIjtmdW5jdGlvbiBBdChlKXt2YXIgdD1lLmNsYXNzZXMsbj1lLmZvcm1hdFllYXIscj12b2lkIDA9PT1uP2ZlOm4sYT1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsa3QpLGk9YS5kYXRlLGw9YS5sb2NhbGU7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KG10LEl0KHt9LGEse2NsYXNzZXM6W10uY29uY2F0KHQsWnQpLG1heERhdGVUcmFuc2Zvcm06WixtaW5EYXRlVHJhbnNmb3JtOlYsdmlldzpcImRlY2FkZVwifSkscihsLGkpKX1mdW5jdGlvbiBEdChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gQnQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFR0KCl7cmV0dXJuIFR0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sVHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uICR0KGUpe3ZhciB0PW0oXyhlLmFjdGl2ZVN0YXJ0RGF0ZSkpLG49dCs5O3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChsdCxUdCh7fSxlLHtjbGFzc05hbWU6XCJyZWFjdC1jYWxlbmRhcl9fZGVjYWRlLXZpZXdfX3llYXJzXCIsZGF0ZVRyYW5zZm9ybTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgRGF0ZTtyZXR1cm4gdC5zZXRGdWxsWWVhcihlLDAsMSksdC5zZXRIb3VycygwLDAsMCwwKSx0fSxkYXRlVHlwZTpcInllYXJcIixlbmQ6bixzdGFydDp0LHRpbGU6QXR9KSl9ZnVuY3Rpb24gRnQoZSl7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX19kZWNhZGUtdmlld1wifSxvKCkuY3JlYXRlRWxlbWVudCgkdCxlKSl9QXQucHJvcFR5cGVzPVZ0KFZ0KHt9LFRlKSx7fSx7Zm9ybWF0WWVhcjppKCkuZnVuY30pLCR0LnByb3BUeXBlcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9EdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe0J0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpEdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX0oe30sQmUpO3ZhciBXdD1bXCJjbGFzc2VzXCIsXCJmb3JtYXRNb250aFwiLFwiZm9ybWF0TW9udGhZZWFyXCJdO2Z1bmN0aW9uIE50KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiB6dChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9OdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe1V0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpOdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBVdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gR3QoKXtyZXR1cm4gR3Q9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxHdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIHF0PVwicmVhY3QtY2FsZW5kYXJfX3llYXItdmlld19fbW9udGhzX19tb250aFwiO2Z1bmN0aW9uIFl0KGUpe3ZhciB0PWUuY2xhc3NlcyxuPWUuZm9ybWF0TW9udGgscj12b2lkIDA9PT1uP2NlOm4sYT1lLmZvcm1hdE1vbnRoWWVhcixpPXZvaWQgMD09PWE/c2U6YSxsPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxXdCksYz1sLmRhdGUscz1sLmxvY2FsZTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQobXQsR3Qoe30sbCx7Y2xhc3NlczpbXS5jb25jYXQodCxxdCksZm9ybWF0QWJicjppLG1heERhdGVUcmFuc2Zvcm06VyxtaW5EYXRlVHJhbnNmb3JtOlQsdmlldzpcInllYXJcIn0pLHIocyxjKSl9ZnVuY3Rpb24gS3QoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFh0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP0t0KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7UXQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOkt0KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIFF0KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBKdCgpe3JldHVybiBKdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LEp0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBlbihlKXt2YXIgdD1tKGUuYWN0aXZlU3RhcnREYXRlKTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQobHQsSnQoe30sZSx7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX3llYXItdmlld19fbW9udGhzXCIsZGF0ZVRyYW5zZm9ybTpmdW5jdGlvbihlKXt2YXIgbj1uZXcgRGF0ZTtyZXR1cm4gbi5zZXRGdWxsWWVhcih0LGUsMSksbi5zZXRIb3VycygwLDAsMCwwKSxufSxkYXRlVHlwZTpcIm1vbnRoXCIsZW5kOjExLHN0YXJ0OjAsdGlsZTpZdH0pKX1mdW5jdGlvbiB0bihlKXtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX3llYXItdmlld1wifSxvKCkuY3JlYXRlRWxlbWVudChlbixlKSl9WXQucHJvcFR5cGVzPXp0KHp0KHt9LFRlKSx7fSx7Zm9ybWF0TW9udGg6aSgpLmZ1bmMsZm9ybWF0TW9udGhZZWFyOmkoKS5mdW5jfSksZW4ucHJvcFR5cGVzPVh0KFh0KHt9LEJlKSx7fSx7bG9jYWxlOmkoKS5zdHJpbmd9KTt2YXIgbm49W1wiZm9ybWF0RGF5XCIsXCJmb3JtYXRMb25nRGF0ZVwiLFwiY2FsZW5kYXJUeXBlXCIsXCJjbGFzc2VzXCIsXCJjdXJyZW50TW9udGhJbmRleFwiXTtmdW5jdGlvbiBybihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/cm4oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXthbihlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6cm4oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gYW4oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIGxuKCl7cmV0dXJuIGxuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBjbj1cInJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzX19kYXlcIjtmdW5jdGlvbiBzbihlKXt2YXIgdD1lLmZvcm1hdERheSxuPXZvaWQgMD09PXQ/aWU6dCxyPWUuZm9ybWF0TG9uZ0RhdGUsYT12b2lkIDA9PT1yP2xlOnIsaT1lLmNhbGVuZGFyVHlwZSxsPWUuY2xhc3NlcyxjPWUuY3VycmVudE1vbnRoSW5kZXgscz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsbm4pLHU9cy5kYXRlLGQ9cy5sb2NhbGU7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KG10LGxuKHt9LHMse2NsYXNzZXM6W10uY29uY2F0KGwsY24sX2UodSxpKT9cIlwiLmNvbmNhdChjbixcIi0td2Vla2VuZFwiKTpudWxsLHUuZ2V0TW9udGgoKSE9PWM/XCJcIi5jb25jYXQoY24sXCItLW5laWdoYm9yaW5nTW9udGhcIik6bnVsbCksZm9ybWF0QWJicjphLG1heERhdGVUcmFuc2Zvcm06WSxtaW5EYXRlVHJhbnNmb3JtOkcsdmlldzpcIm1vbnRoXCJ9KSxuKGQsdSkpfXNuLnByb3BUeXBlcz1vbihvbih7fSxUZSkse30se2N1cnJlbnRNb250aEluZGV4OmkoKS5udW1iZXIuaXNSZXF1aXJlZCxmb3JtYXREYXk6aSgpLmZ1bmMsZm9ybWF0TG9uZ0RhdGU6aSgpLmZ1bmN9KTt2YXIgdW49W1wic2hvd0ZpeGVkTnVtYmVyT2ZXZWVrc1wiLFwic2hvd05laWdoYm9yaW5nTW9udGhcIl07ZnVuY3Rpb24gZG4oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGZuKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBwbigpe3JldHVybiBwbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LHBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBobihlKXt2YXIgdD1lLmFjdGl2ZVN0YXJ0RGF0ZSxuPWUuY2FsZW5kYXJUeXBlLHI9ZS5zaG93Rml4ZWROdW1iZXJPZldlZWtzLGE9ZS5zaG93TmVpZ2hib3JpbmdNb250aCxpPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSx1biksbD1tKHQpLGM9dyh0KSxzPXJ8fGEsdT12ZSh0LG4pLGQ9cz8wOnUsZj0xKyhzPy11OjApLHA9ZnVuY3Rpb24oKXtpZihyKXJldHVybiBmKzQyLTE7dmFyIGU9WCh0KTtpZihhKXt2YXIgbz1uZXcgRGF0ZTtyZXR1cm4gby5zZXRGdWxsWWVhcihsLGMsZSksby5zZXRIb3VycygwLDAsMCwwKSxlKyg3LXZlKG8sbiktMSl9cmV0dXJuIGV9KCk7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KGx0LHBuKHt9LGkse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzXCIsY291bnQ6NyxjdXJyZW50TW9udGhJbmRleDpjLGRhdGVUcmFuc2Zvcm06ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IERhdGU7cmV0dXJuIHQuc2V0RnVsbFllYXIobCxjLGUpLHQuc2V0SG91cnMoMCwwLDAsMCksdH0sZGF0ZVR5cGU6XCJkYXlcIixlbmQ6cCxvZmZzZXQ6ZCxzdGFydDpmLHRpbGU6c259KSl9aG4ucHJvcFR5cGVzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2RuKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm4oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmRuKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfSh7Y2FsZW5kYXJUeXBlOmtlLmlzUmVxdWlyZWQsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczppKCkuYm9vbCxzaG93TmVpZ2hib3JpbmdNb250aDppKCkuYm9vbH0sQmUpO3ZhciBDbj1cInJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X193ZWVrZGF5c1wiLHZuPVwiXCIuY29uY2F0KENuLFwiX193ZWVrZGF5XCIpO2Z1bmN0aW9uIGduKGUpe2Zvcih2YXIgdD1lLmNhbGVuZGFyVHlwZSxuPWUuZm9ybWF0U2hvcnRXZWVrZGF5LHI9dm9pZCAwPT09bj91ZTpuLGE9ZS5mb3JtYXRXZWVrZGF5LGk9dm9pZCAwPT09YT9kZTphLGw9ZS5sb2NhbGUscz1lLm9uTW91c2VMZWF2ZSx1PVQobmV3IERhdGUpLGQ9bSh1KSxmPXcodSkscD1bXSxoPTE7aDw9NztoKz0xKXt2YXIgQz1uZXcgRGF0ZShkLGYsaC12ZSh1LHQpKSx2PWkobCxDKTtwLnB1c2gobygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7a2V5OmgsY2xhc3NOYW1lOmModm4sX2UoQyx0KSYmXCJcIi5jb25jYXQodm4sXCItLXdlZWtlbmRcIikpfSxvKCkuY3JlYXRlRWxlbWVudChcImFiYnJcIix7XCJhcmlhLWxhYmVsXCI6dix0aXRsZTp2fSxyKGwsQykucmVwbGFjZShcIi5cIixcIlwiKSkpKX1yZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoWWUse2NsYXNzTmFtZTpDbixjb3VudDo3LG9uRm9jdXM6cyxvbk1vdXNlT3ZlcjpzfSxwKX1nbi5wcm9wVHlwZXM9e2NhbGVuZGFyVHlwZTprZS5pc1JlcXVpcmVkLGZvcm1hdFNob3J0V2Vla2RheTppKCkuZnVuYyxmb3JtYXRXZWVrZGF5OmkoKS5mdW5jLGxvY2FsZTppKCkuc3RyaW5nLG9uTW91c2VMZWF2ZTppKCkuZnVuY307dmFyIG1uPVtcImRhdGVcIixcIm9uQ2xpY2tXZWVrTnVtYmVyXCIsXCJ3ZWVrTnVtYmVyXCJdO2Z1bmN0aW9uIHduKCl7cmV0dXJuIHduPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sd24uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHluKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBibihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIHhuPVwicmVhY3QtY2FsZW5kYXJfX3RpbGVcIjtmdW5jdGlvbiBPbihlKXt2YXIgdD1lLmRhdGUsbj1lLm9uQ2xpY2tXZWVrTnVtYmVyLHI9ZS53ZWVrTnVtYmVyLGE9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLG1uKSxpPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3luKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7Ym4oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnluKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfSh7Y2xhc3NOYW1lOnhufSxhKSxsPW8oKS5jcmVhdGVFbGVtZW50KFwic3BhblwiLG51bGwscik7cmV0dXJuIG4/bygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix3bih7fSxpLHtvbkNsaWNrOmZ1bmN0aW9uKGUpe3JldHVybiBuKHIsdCxlKX0sdHlwZTpcImJ1dHRvblwifSksbCk6bygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIixpLGwpfWZ1bmN0aW9uIExuKGUpe3ZhciB0PWUuYWN0aXZlU3RhcnREYXRlLG49ZS5jYWxlbmRhclR5cGUscj1lLm9uQ2xpY2tXZWVrTnVtYmVyLGE9ZS5vbk1vdXNlTGVhdmUsaT1lLnNob3dGaXhlZE51bWJlck9mV2Vla3MsbD1mdW5jdGlvbigpe2lmKGkpcmV0dXJuIDY7dmFyIGU9WCh0KS0oNy12ZSh0LG4pKTtyZXR1cm4gMStNYXRoLmNlaWwoZS83KX0oKSxjPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPW0odCkscj13KHQpLG89eSh0KSxhPVtdLGk9MDtpPGw7aSs9MSlhLnB1c2goZ2UobmV3IERhdGUoZSxyLG8rNyppKSxuKSk7cmV0dXJuIGF9KCkscz1jLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0LG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRlLklTT184NjAxLHI9bj09PXRlLlVTP3RlLlVTOnRlLklTT184NjAxLG89Z2UoZSxuKSxhPW0oZSkrMTtkb3t0PWdlKG5ldyBEYXRlKGEsMCxyPT09dGUuSVNPXzg2MDE/NDoxKSxuKSxhLT0xfXdoaWxlKGU8dCk7cmV0dXJuIE1hdGgucm91bmQoKG8tdCkvNjA0OGU1KSsxfShlLG4pfSkpO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChZZSx7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtOdW1iZXJzXCIsY291bnQ6bCxkaXJlY3Rpb246XCJjb2x1bW5cIixvbkZvY3VzOmEsb25Nb3VzZU92ZXI6YSxzdHlsZTp7ZmxleEJhc2lzOlwiY2FsYygxMDAlICogKDEgLyA4KVwiLGZsZXhTaHJpbms6MH19LHMubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChPbix7a2V5OmUsZGF0ZTpjW3RdLG9uQ2xpY2tXZWVrTnVtYmVyOnIsd2Vla051bWJlcjplfSl9KSkpfU9uLnByb3BUeXBlcz17ZGF0ZTppKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLG9uQ2xpY2tXZWVrTnVtYmVyOmkoKS5mdW5jLHdlZWtOdW1iZXI6aSgpLm5vZGUuaXNSZXF1aXJlZH0sTG4ucHJvcFR5cGVzPXthY3RpdmVTdGFydERhdGU6aSgpLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxjYWxlbmRhclR5cGU6a2UuaXNSZXF1aXJlZCxvbkNsaWNrV2Vla051bWJlcjppKCkuZnVuYyxvbk1vdXNlTGVhdmU6aSgpLmZ1bmMsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczppKCkuYm9vbH07dmFyIE1uPVtcImNhbGVuZGFyVHlwZVwiLFwiZm9ybWF0U2hvcnRXZWVrZGF5XCIsXCJmb3JtYXRXZWVrZGF5XCIsXCJvbkNsaWNrV2Vla051bWJlclwiLFwic2hvd1dlZWtOdW1iZXJzXCJdO2Z1bmN0aW9uIFNuKCl7cmV0dXJuIFNuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sU24uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIF9uKGUpe3ZhciB0PWUuYWN0aXZlU3RhcnREYXRlLG49ZS5sb2NhbGUscj1lLm9uTW91c2VMZWF2ZSxhPWUuc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrcyxpPWUuY2FsZW5kYXJUeXBlLGw9dm9pZCAwPT09aT9mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmtleXMobmUpLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiBuZVt0XS5pbmNsdWRlcyhlKX0pKXx8dGUuSVNPXzg2MDF9KG4pOmkscz1lLmZvcm1hdFNob3J0V2Vla2RheSx1PWUuZm9ybWF0V2Vla2RheSxkPWUub25DbGlja1dlZWtOdW1iZXIsZj1lLnNob3dXZWVrTnVtYmVycyxwPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxNbiksaD1cInJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3XCI7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpjKGgsZj9cIlwiLmNvbmNhdChoLFwiLS13ZWVrTnVtYmVyc1wiKTpcIlwiKX0sbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3R5bGU6e2Rpc3BsYXk6XCJmbGV4XCIsYWxpZ25JdGVtczpcImZsZXgtZW5kXCJ9fSxmP28oKS5jcmVhdGVFbGVtZW50KExuLHthY3RpdmVTdGFydERhdGU6dCxjYWxlbmRhclR5cGU6bCxvbkNsaWNrV2Vla051bWJlcjpkLG9uTW91c2VMZWF2ZTpyLHNob3dGaXhlZE51bWJlck9mV2Vla3M6YX0pOm51bGwsbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3R5bGU6e2ZsZXhHcm93OjEsd2lkdGg6XCIxMDAlXCJ9fSxvKCkuY3JlYXRlRWxlbWVudChnbix7Y2FsZW5kYXJUeXBlOmwsZm9ybWF0U2hvcnRXZWVrZGF5OnMsZm9ybWF0V2Vla2RheTp1LGxvY2FsZTpuLG9uTW91c2VMZWF2ZTpyfSksbygpLmNyZWF0ZUVsZW1lbnQoaG4sU24oe2NhbGVuZGFyVHlwZTpsfSxwKSkpKSl9X24ucHJvcFR5cGVzPXthY3RpdmVTdGFydERhdGU6aSgpLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxjYWxlbmRhclR5cGU6a2UsZm9ybWF0U2hvcnRXZWVrZGF5OmkoKS5mdW5jLGZvcm1hdFdlZWtkYXk6aSgpLmZ1bmMsbG9jYWxlOmkoKS5zdHJpbmcsb25DbGlja1dlZWtOdW1iZXI6aSgpLmZ1bmMsb25Nb3VzZUxlYXZlOmkoKS5mdW5jLHNob3dGaXhlZE51bWJlck9mV2Vla3M6aSgpLmJvb2wsc2hvd1dlZWtOdW1iZXJzOmkoKS5ib29sfTt2YXIgam49W1wiYWN0aXZlU3RhcnREYXRlXCIsXCJkZWZhdWx0QWN0aXZlU3RhcnREYXRlXCIsXCJkZWZhdWx0VmFsdWVcIixcImRlZmF1bHRWaWV3XCIsXCJtYXhEZXRhaWxcIixcIm1pbkRldGFpbFwiLFwidmFsdWVcIixcInZpZXdcIl07ZnVuY3Rpb24gRW4oKXtyZXR1cm4gRW49T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxFbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUG4oZSl7cmV0dXJuIFBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LFBuKGUpfWZ1bmN0aW9uIGtuKGUsdCl7cmV0dXJuIGtuPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sa24oZSx0KX1mdW5jdGlvbiBIbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gZX1mdW5jdGlvbiBWbihlKXtyZXR1cm4gVm49T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LFZuKGUpfWZ1bmN0aW9uIFJuKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBJbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9SbihPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe1puKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpSbihPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBabihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gQW4oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgRG49bmV3IERhdGU7RG4uc2V0RnVsbFllYXIoMSwwLDEpLERuLnNldEhvdXJzKDAsMCwwLDApO3ZhciBCbj1uZXcgRGF0ZSg4NjRlMTMpLFRuPVwicmVhY3QtY2FsZW5kYXJcIiwkbj1bXCJjZW50dXJ5XCIsXCJkZWNhZGVcIixcInllYXJcIixcIm1vbnRoXCJdLEZuPVtdLmNvbmNhdChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gQW4oZSl9KGUpfHxmdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbXCJAQGl0ZXJhdG9yXCJdKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gQW4oZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uP0FycmF5LmZyb20oZSk6XCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP0FuKGUsdCk6dm9pZCAwfX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9KCRuLnNsaWNlKDEpKSxbXCJkYXlcIl0pO2Z1bmN0aW9uIFduKGUsdCl7cmV0dXJuICRuLnNsaWNlKCRuLmluZGV4T2YoZSksJG4uaW5kZXhPZih0KSsxKX1mdW5jdGlvbiBObihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4tMSE9PVduKHQsbikuaW5kZXhPZihlKX0oZSx0LG4pP2U6bn1mdW5jdGlvbiB6bihlKXtyZXR1cm4gRm5bJG4uaW5kZXhPZihlKV19ZnVuY3Rpb24gVW4oZSx0KXt2YXIgbj1lLnZhbHVlLHI9ZS5taW5EYXRlLG89ZS5tYXhEYXRlLGE9ZS5tYXhEZXRhaWwsaT1mdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybiBudWxsO3ZhciBuPUFycmF5LmlzQXJyYXkoZSkmJjI9PT1lLmxlbmd0aD9lW3RdOmU7aWYoIW4pcmV0dXJuIG51bGw7dmFyIHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEYXRlP2U6bmV3IERhdGUoZSl9KG4pO2lmKGlzTmFOKHIuZ2V0VGltZSgpKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGRhdGU6IFwiLmNvbmNhdChlKSk7cmV0dXJuIHJ9KG4sdCk7aWYoIWkpcmV0dXJuIG51bGw7dmFyIGw9em4oYSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCYmdD5lP3Q6biYmbjxlP246ZX0oW21lLHhlXVt0XShsLGkpLHIsbyl9dmFyIEduPWZ1bmN0aW9uKGUpe3JldHVybiBVbihlLDApfSxxbj1mdW5jdGlvbihlKXtyZXR1cm4gVW4oZSwxKX0sWW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS52YWx1ZTtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90OltHbixxbl0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdChlKX0pKX07ZnVuY3Rpb24gS24oZSl7dmFyIHQ9ZS5tYXhEYXRlLG49ZS5tYXhEZXRhaWwscj1lLm1pbkRhdGUsbz1lLm1pbkRldGFpbCxhPWUudmFsdWU7cmV0dXJuIG1lKE5uKGUudmlldyxvLG4pLEduKHt2YWx1ZTphLG1pbkRhdGU6cixtYXhEYXRlOnQsbWF4RGV0YWlsOm59KXx8bmV3IERhdGUpfXZhciBYbj1mdW5jdGlvbihlKXtyZXR1cm4gZSYmMT09PVtdLmNvbmNhdChlKS5sZW5ndGh9LFFuPWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSx0JiZrbihlLHQpfShsLGUpO3ZhciB0LG4scixhLGk9KHI9bCxhPWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZnVuY3Rpb24oKXt2YXIgZSx0PVZuKHIpO2lmKGEpe3ZhciBuPVZuKHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QodCxhcmd1bWVudHMsbil9ZWxzZSBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJihcIm9iamVjdFwiPT09UG4odCl8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBIbihlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIGwoKXt2YXIgZTshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGwpO2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09YXJndW1lbnRzW3JdO3JldHVybiBabihIbihlPWkuY2FsbC5hcHBseShpLFt0aGlzXS5jb25jYXQobikpKSxcInN0YXRlXCIse2FjdGl2ZVN0YXJ0RGF0ZTplLnByb3BzLmRlZmF1bHRBY3RpdmVTdGFydERhdGUsdmFsdWU6ZS5wcm9wcy5kZWZhdWx0VmFsdWUsdmlldzplLnByb3BzLmRlZmF1bHRWaWV3fSksWm4oSG4oZSksXCJzZXRTdGF0ZUFuZENhbGxDYWxsYmFja3NcIiwoZnVuY3Rpb24odCxuLHIpe3ZhciBvPUhuKGUpLGE9by5hY3RpdmVTdGFydERhdGUsaT1vLnZpZXcsbD1lLnByb3BzLGM9bC5hbGxvd1BhcnRpYWxSYW5nZSxzPWwub25BY3RpdmVTdGFydERhdGVDaGFuZ2UsdT1sLm9uQ2hhbmdlLGQ9bC5vblZpZXdDaGFuZ2UsZj1sLnNlbGVjdFJhbmdlLHA9e2FjdGl2ZVN0YXJ0RGF0ZTphLHZpZXc6aX07ZS5zZXRTdGF0ZSh0LChmdW5jdGlvbigpe3ZhciBvPXthY3Rpb246dC5hY3Rpb24sYWN0aXZlU3RhcnREYXRlOnQuYWN0aXZlU3RhcnREYXRlfHxlLmFjdGl2ZVN0YXJ0RGF0ZSx2YWx1ZTp0LnZhbHVlfHxlLnZhbHVlLHZpZXc6dC52aWV3fHxlLnZpZXd9O2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUgaW4gdCYmKFBuKHRbZV0pIT09UG4ocFtlXSl8fCh0W2VdaW5zdGFuY2VvZiBEYXRlP3RbZV0uZ2V0VGltZSgpIT09cFtlXS5nZXRUaW1lKCk6dFtlXSE9PXBbZV0pKX1hKFwiYWN0aXZlU3RhcnREYXRlXCIpJiZzJiZzKG8pLGEoXCJ2aWV3XCIpJiZkJiZkKG8pLGEoXCJ2YWx1ZVwiKSYmdSYmKGYmJlhuKHQudmFsdWUpP2MmJnUoW3QudmFsdWVdLG4pOnUodC52YWx1ZSxuKSksciYmcihvKX0pKX0pKSxabihIbihlKSxcInNldEFjdGl2ZVN0YXJ0RGF0ZVwiLChmdW5jdGlvbih0LG4pe2Uuc2V0U3RhdGVBbmRDYWxsQ2FsbGJhY2tzKHthY3Rpb246bixhY3RpdmVTdGFydERhdGU6dH0pfSkpLFpuKEhuKGUpLFwiZHJpbGxEb3duXCIsKGZ1bmN0aW9uKHQsbil7aWYoZS5kcmlsbERvd25BdmFpbGFibGUpe2Uub25DbGlja1RpbGUodCxuKTt2YXIgcj1IbihlKSxvPXIudmlldyxhPXIudmlld3MsaT1lLnByb3BzLm9uRHJpbGxEb3duLGw9YVthLmluZGV4T2YobykrMV07ZS5zZXRTdGF0ZUFuZENhbGxDYWxsYmFja3Moe2FjdGlvbjpcImRyaWxsRG93blwiLGFjdGl2ZVN0YXJ0RGF0ZTp0LHZpZXc6bH0sdm9pZCAwLGkpfX0pKSxabihIbihlKSxcImRyaWxsVXBcIiwoZnVuY3Rpb24oKXtpZihlLmRyaWxsVXBBdmFpbGFibGUpe3ZhciB0PUhuKGUpLG49dC5hY3RpdmVTdGFydERhdGUscj10LnZpZXcsbz10LnZpZXdzLGE9ZS5wcm9wcy5vbkRyaWxsVXAsaT1vW28uaW5kZXhPZihyKS0xXSxsPW1lKGksbik7ZS5zZXRTdGF0ZUFuZENhbGxDYWxsYmFja3Moe2FjdGlvbjpcImRyaWxsVXBcIixhY3RpdmVTdGFydERhdGU6bCx2aWV3Oml9LHZvaWQgMCxhKX19KSksWm4oSG4oZSksXCJvbkNoYW5nZVwiLChmdW5jdGlvbih0LG4pe3ZhciByPUhuKGUpLnZhbHVlLG89ZS5wcm9wcyxhPW8uZ29Ub1JhbmdlU3RhcnRPblNlbGVjdCxpPW8uc2VsZWN0UmFuZ2U7ZS5vbkNsaWNrVGlsZSh0LG4pO3ZhciBsLGMscyx1PWkmJiFYbihyKTtpZihpKXt2YXIgZD1IbihlKS52YWx1ZVR5cGU7bD11P21lKGQsdCk6W21lKGM9ZCwocz1bcix0XS5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSkpWzBdKSx4ZShjLHNbMV0pXX1lbHNlIGw9ZS5nZXRQcm9jZXNzZWRWYWx1ZSh0KTt2YXIgZj0haXx8dXx8YT9LbihJbihJbih7fSxlLnByb3BzKSx7fSx7dmFsdWU6bH0pKTpudWxsO24ucGVyc2lzdCgpLGUuc2V0U3RhdGVBbmRDYWxsQ2FsbGJhY2tzKHthY3Rpb246XCJvbkNoYW5nZVwiLGFjdGl2ZVN0YXJ0RGF0ZTpmLHZhbHVlOmx9LG4pfSkpLFpuKEhuKGUpLFwib25DbGlja1RpbGVcIiwoZnVuY3Rpb24odCxuKXt2YXIgcj1IbihlKS52aWV3LG89ZS5wcm9wcyxhPW8ub25DbGlja0RheSxpPW8ub25DbGlja0RlY2FkZSxsPW8ub25DbGlja01vbnRoLGM9by5vbkNsaWNrWWVhcixzPWZ1bmN0aW9uKCl7c3dpdGNoKHIpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4gaTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gYztjYXNlXCJ5ZWFyXCI6cmV0dXJuIGw7Y2FzZVwibW9udGhcIjpyZXR1cm4gYTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdmlldzogXCIuY29uY2F0KHIsXCIuXCIpKX19KCk7cyYmcyh0LG4pfSkpLFpuKEhuKGUpLFwib25Nb3VzZU92ZXJcIiwoZnVuY3Rpb24odCl7ZS5zZXRTdGF0ZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaG92ZXImJmUuaG92ZXIuZ2V0VGltZSgpPT09dC5nZXRUaW1lKCk/bnVsbDp7aG92ZXI6dH19KSl9KSksWm4oSG4oZSksXCJvbk1vdXNlTGVhdmVcIiwoZnVuY3Rpb24oKXtlLnNldFN0YXRlKHtob3ZlcjpudWxsfSl9KSksZX1yZXR1cm4gdD1sLG49W3trZXk6XCJhY3RpdmVTdGFydERhdGVcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixvLGEsaSxsLGMscyx1LGQsZj10aGlzLnByb3BzLmFjdGl2ZVN0YXJ0RGF0ZSxwPXRoaXMuc3RhdGUuYWN0aXZlU3RhcnREYXRlO3JldHVybiBmfHxwfHwodD0oZT10aGlzLnByb3BzKS5hY3RpdmVTdGFydERhdGUsbj1lLmRlZmF1bHRBY3RpdmVTdGFydERhdGUscj1lLmRlZmF1bHRWYWx1ZSxvPWUuZGVmYXVsdFZpZXcsYT1lLm1heERldGFpbCxpPWUubWluRGV0YWlsLGw9ZS52YWx1ZSxjPWUudmlldyxzPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxqbiksdT1ObihjLGksYSksKGQ9dHx8bik/bWUodSxkKTpLbihJbih7bWF4RGV0YWlsOmEsbWluRGV0YWlsOmksdmFsdWU6bHx8cix2aWV3OmN8fG99LHMpKSl9fSx7a2V5OlwidmFsdWVcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5zZWxlY3RSYW5nZSxuPWUudmFsdWUscj10aGlzLnN0YXRlLnZhbHVlO3JldHVybiB0JiZYbihyKT9yOnZvaWQgMCE9PW4/bjpyfX0se2tleTpcInZhbHVlVHlwZVwiLGdldDpmdW5jdGlvbigpe3JldHVybiB6bih0aGlzLnByb3BzLm1heERldGFpbCl9fSx7a2V5Olwidmlld1wiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLm1pbkRldGFpbCxuPWUubWF4RGV0YWlsLHI9ZS52aWV3LG89dGhpcy5zdGF0ZS52aWV3O3JldHVybiBObihyfHxvLHQsbil9fSx7a2V5Olwidmlld3NcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzO3JldHVybiBXbihlLm1pbkRldGFpbCxlLm1heERldGFpbCl9fSx7a2V5OlwiaG92ZXJcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLnNlbGVjdFJhbmdlLHQ9dGhpcy5zdGF0ZS5ob3ZlcjtyZXR1cm4gZT90Om51bGx9fSx7a2V5OlwiZHJpbGxEb3duQXZhaWxhYmxlXCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy52aWV3LHQ9dGhpcy52aWV3cztyZXR1cm4gdC5pbmRleE9mKGUpPHQubGVuZ3RoLTF9fSx7a2V5OlwiZHJpbGxVcEF2YWlsYWJsZVwiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMudmlldztyZXR1cm4gdGhpcy52aWV3cy5pbmRleE9mKGUpPjB9fSx7a2V5OlwiZ2V0UHJvY2Vzc2VkVmFsdWVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLG49dC5taW5EYXRlLHI9dC5tYXhEYXRlLG89dC5tYXhEZXRhaWwsYT10LnJldHVyblZhbHVlO3JldHVybiBmdW5jdGlvbigpe3N3aXRjaChhKXtjYXNlXCJzdGFydFwiOnJldHVybiBHbjtjYXNlXCJlbmRcIjpyZXR1cm4gcW47Y2FzZVwicmFuZ2VcIjpyZXR1cm4gWW47ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJldHVyblZhbHVlLlwiKX19KCkoe3ZhbHVlOmUsbWluRGF0ZTpuLG1heERhdGU6cixtYXhEZXRhaWw6b30pfX0se2tleTpcInJlbmRlckNvbnRlbnRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmFjdGl2ZVN0YXJ0RGF0ZSxuPXRoaXMub25Nb3VzZU92ZXIscj10aGlzLnZhbHVlVHlwZSxhPXRoaXMudmFsdWUsaT10aGlzLnZpZXcsbD10aGlzLnByb3BzLGM9bC5jYWxlbmRhclR5cGUscz1sLmxvY2FsZSx1PWwubWF4RGF0ZSxkPWwubWluRGF0ZSxmPWwuc2VsZWN0UmFuZ2UscD1sLnRpbGVDbGFzc05hbWUsaD1sLnRpbGVDb250ZW50LEM9bC50aWxlRGlzYWJsZWQsdj10aGlzLmhvdmVyLGc9e2FjdGl2ZVN0YXJ0RGF0ZTplP3dlKGksdCk6bWUoaSx0KSxob3Zlcjp2LGxvY2FsZTpzLG1heERhdGU6dSxtaW5EYXRlOmQsb25DbGljazp0aGlzLmRyaWxsRG93bkF2YWlsYWJsZT90aGlzLmRyaWxsRG93bjp0aGlzLm9uQ2hhbmdlLG9uTW91c2VPdmVyOmY/bjpudWxsLHRpbGVDbGFzc05hbWU6cCx0aWxlQ29udGVudDpoLHRpbGVEaXNhYmxlZDpDLHZhbHVlOmEsdmFsdWVUeXBlOnJ9O3N3aXRjaChpKXtjYXNlXCJjZW50dXJ5XCI6dmFyIG09dGhpcy5wcm9wcy5mb3JtYXRZZWFyO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChQdCxFbih7Zm9ybWF0WWVhcjptfSxnKSk7Y2FzZVwiZGVjYWRlXCI6dmFyIHc9dGhpcy5wcm9wcy5mb3JtYXRZZWFyO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChGdCxFbih7Zm9ybWF0WWVhcjp3fSxnKSk7Y2FzZVwieWVhclwiOnZhciB5PXRoaXMucHJvcHMsYj15LmZvcm1hdE1vbnRoLHg9eS5mb3JtYXRNb250aFllYXI7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KHRuLEVuKHtmb3JtYXRNb250aDpiLGZvcm1hdE1vbnRoWWVhcjp4fSxnKSk7Y2FzZVwibW9udGhcIjp2YXIgTz10aGlzLnByb3BzLEw9Ty5mb3JtYXREYXksTT1PLmZvcm1hdExvbmdEYXRlLFM9Ty5mb3JtYXRTaG9ydFdlZWtkYXksXz1PLmZvcm1hdFdlZWtkYXksaj1PLm9uQ2xpY2tXZWVrTnVtYmVyLEU9Ty5zaG93RG91YmxlVmlldyxQPU8uc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrcyxrPU8uc2hvd05laWdoYm9yaW5nTW9udGgsSD1PLnNob3dXZWVrTnVtYmVycyxWPXRoaXMub25Nb3VzZUxlYXZlO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChfbixFbih7Y2FsZW5kYXJUeXBlOmMsZm9ybWF0RGF5OkwsZm9ybWF0TG9uZ0RhdGU6TSxmb3JtYXRTaG9ydFdlZWtkYXk6Uyxmb3JtYXRXZWVrZGF5Ol8sb25DbGlja1dlZWtOdW1iZXI6aixvbk1vdXNlTGVhdmU6Zj9WOm51bGwsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczp2b2lkIDAhPT1QP1A6RSxzaG93TmVpZ2hib3JpbmdNb250aDprLHNob3dXZWVrTnVtYmVyczpIfSxnKSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHZpZXc6IFwiLmNvbmNhdChpLFwiLlwiKSl9fX0se2tleTpcInJlbmRlck5hdmlnYXRpb25cIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLnByb3BzLnNob3dOYXZpZ2F0aW9uKXJldHVybiBudWxsO3ZhciBlPXRoaXMuYWN0aXZlU3RhcnREYXRlLHQ9dGhpcy52aWV3LG49dGhpcy52aWV3cyxyPXRoaXMucHJvcHMsYT1yLmZvcm1hdE1vbnRoWWVhcixpPXIuZm9ybWF0WWVhcixsPXIubG9jYWxlLGM9ci5tYXhEYXRlLHM9ci5taW5EYXRlLHU9ci5uYXZpZ2F0aW9uQXJpYUxhYmVsLGQ9ci5uYXZpZ2F0aW9uQXJpYUxpdmUsZj1yLm5hdmlnYXRpb25MYWJlbCxwPXIubmV4dDJBcmlhTGFiZWwsaD1yLm5leHQyTGFiZWwsQz1yLm5leHRBcmlhTGFiZWwsdj1yLm5leHRMYWJlbCxnPXIucHJldjJBcmlhTGFiZWwsbT1yLnByZXYyTGFiZWwsdz1yLnByZXZBcmlhTGFiZWwseT1yLnByZXZMYWJlbCxiPXIuc2hvd0RvdWJsZVZpZXc7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KEZlLHthY3RpdmVTdGFydERhdGU6ZSxkcmlsbFVwOnRoaXMuZHJpbGxVcCxmb3JtYXRNb250aFllYXI6YSxmb3JtYXRZZWFyOmksbG9jYWxlOmwsbWF4RGF0ZTpjLG1pbkRhdGU6cyxuYXZpZ2F0aW9uQXJpYUxhYmVsOnUsbmF2aWdhdGlvbkFyaWFMaXZlOmQsbmF2aWdhdGlvbkxhYmVsOmYsbmV4dDJBcmlhTGFiZWw6cCxuZXh0MkxhYmVsOmgsbmV4dEFyaWFMYWJlbDpDLG5leHRMYWJlbDp2LHByZXYyQXJpYUxhYmVsOmcscHJldjJMYWJlbDptLHByZXZBcmlhTGFiZWw6dyxwcmV2TGFiZWw6eSxzZXRBY3RpdmVTdGFydERhdGU6dGhpcy5zZXRBY3RpdmVTdGFydERhdGUsc2hvd0RvdWJsZVZpZXc6Yix2aWV3OnQsdmlld3M6bn0pfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuY2xhc3NOYW1lLG49ZS5pbnB1dFJlZixyPWUuc2VsZWN0UmFuZ2UsYT1lLnNob3dEb3VibGVWaWV3LGk9dGhpcy5vbk1vdXNlTGVhdmUsbD10aGlzLnZhbHVlLHM9W10uY29uY2F0KGwpO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6YyhUbixyJiYxPT09cy5sZW5ndGgmJlwiXCIuY29uY2F0KFRuLFwiLS1zZWxlY3RSYW5nZVwiKSxhJiZcIlwiLmNvbmNhdChUbixcIi0tZG91YmxlVmlld1wiKSx0KSxyZWY6bn0sdGhpcy5yZW5kZXJOYXZpZ2F0aW9uKCksbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOlwiXCIuY29uY2F0KFRuLFwiX192aWV3Q29udGFpbmVyXCIpLG9uQmx1cjpyP2k6bnVsbCxvbk1vdXNlTGVhdmU6cj9pOm51bGx9LHRoaXMucmVuZGVyQ29udGVudCgpLGEmJnRoaXMucmVuZGVyQ29udGVudCghMCkpKX19XSxuJiZmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19KHQucHJvdG90eXBlLG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksbH0oci5Db21wb25lbnQpO1FuLmRlZmF1bHRQcm9wcz17Z29Ub1JhbmdlU3RhcnRPblNlbGVjdDohMCxtYXhEYXRlOkJuLG1heERldGFpbDpcIm1vbnRoXCIsbWluRGF0ZTpEbixtaW5EZXRhaWw6XCJjZW50dXJ5XCIscmV0dXJuVmFsdWU6XCJzdGFydFwiLHNob3dOYXZpZ2F0aW9uOiEwLHNob3dOZWlnaGJvcmluZ01vbnRoOiEwfTt2YXIgSm49aSgpLmluc3RhbmNlT2YoRGF0ZSksZXI9aSgpLm9uZU9mVHlwZShbaSgpLnN0cmluZyxaZV0pO1FuLnByb3BUeXBlcz17YWN0aXZlU3RhcnREYXRlOkpuLGFsbG93UGFydGlhbFJhbmdlOmkoKS5ib29sLGNhbGVuZGFyVHlwZTprZSxjbGFzc05hbWU6SGUsZGVmYXVsdEFjdGl2ZVN0YXJ0RGF0ZTpKbixkZWZhdWx0VmFsdWU6ZXIsZGVmYXVsdFZpZXc6RGUsZm9ybWF0RGF5OmkoKS5mdW5jLGZvcm1hdExvbmdEYXRlOmkoKS5mdW5jLGZvcm1hdE1vbnRoOmkoKS5mdW5jLGZvcm1hdE1vbnRoWWVhcjppKCkuZnVuYyxmb3JtYXRTaG9ydFdlZWtkYXk6aSgpLmZ1bmMsZm9ybWF0V2Vla2RheTppKCkuZnVuYyxmb3JtYXRZZWFyOmkoKS5mdW5jLGdvVG9SYW5nZVN0YXJ0T25TZWxlY3Q6aSgpLmJvb2wsaW5wdXRSZWY6SWUsbG9jYWxlOmkoKS5zdHJpbmcsbWF4RGF0ZTpSZSxtYXhEZXRhaWw6aSgpLm9uZU9mKCRuKSxtaW5EYXRlOlZlLG1pbkRldGFpbDppKCkub25lT2YoJG4pLG5hdmlnYXRpb25BcmlhTGFiZWw6aSgpLnN0cmluZyxuYXZpZ2F0aW9uQXJpYUxpdmU6aSgpLm9uZU9mKFtcIm9mZlwiLFwicG9saXRlXCIsXCJhc3NlcnRpdmVcIl0pLG5hdmlnYXRpb25MYWJlbDppKCkuZnVuYyxuZXh0MkFyaWFMYWJlbDppKCkuc3RyaW5nLG5leHQyTGFiZWw6aSgpLm5vZGUsbmV4dEFyaWFMYWJlbDppKCkuc3RyaW5nLG5leHRMYWJlbDppKCkubm9kZSxvbkFjdGl2ZVN0YXJ0RGF0ZUNoYW5nZTppKCkuZnVuYyxvbkNoYW5nZTppKCkuZnVuYyxvbkNsaWNrRGF5OmkoKS5mdW5jLG9uQ2xpY2tEZWNhZGU6aSgpLmZ1bmMsb25DbGlja01vbnRoOmkoKS5mdW5jLG9uQ2xpY2tXZWVrTnVtYmVyOmkoKS5mdW5jLG9uQ2xpY2tZZWFyOmkoKS5mdW5jLG9uRHJpbGxEb3duOmkoKS5mdW5jLG9uRHJpbGxVcDppKCkuZnVuYyxvblZpZXdDaGFuZ2U6aSgpLmZ1bmMscHJldjJBcmlhTGFiZWw6aSgpLnN0cmluZyxwcmV2MkxhYmVsOmkoKS5ub2RlLHByZXZBcmlhTGFiZWw6aSgpLnN0cmluZyxwcmV2TGFiZWw6aSgpLm5vZGUscmV0dXJuVmFsdWU6aSgpLm9uZU9mKFtcInN0YXJ0XCIsXCJlbmRcIixcInJhbmdlXCJdKSxzZWxlY3RSYW5nZTppKCkuYm9vbCxzaG93RG91YmxlVmlldzppKCkuYm9vbCxzaG93Rml4ZWROdW1iZXJPZldlZWtzOmkoKS5ib29sLHNob3dOYXZpZ2F0aW9uOmkoKS5ib29sLHNob3dOZWlnaGJvcmluZ01vbnRoOmkoKS5ib29sLHNob3dXZWVrTnVtYmVyczppKCkuYm9vbCx0aWxlQ2xhc3NOYW1lOmkoKS5vbmVPZlR5cGUoW2koKS5mdW5jLEhlXSksdGlsZUNvbnRlbnQ6aSgpLm9uZU9mVHlwZShbaSgpLmZ1bmMsaSgpLm5vZGVdKSx0aWxlRGlzYWJsZWQ6aSgpLmZ1bmMsdmFsdWU6ZXIsdmlldzpEZX07Y29uc3QgdHI9UW59LDUyNTE6KGUsdCxuKT0+e24oNzQxOCk7dmFyIHI9big2Njg5KSxvPTYwMTAzO2lmKHQuRnJhZ21lbnQ9NjAxMDcsXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yKXt2YXIgYT1TeW1ib2wuZm9yO289YShcInJlYWN0LmVsZW1lbnRcIiksdC5GcmFnbWVudD1hKFwicmVhY3QuZnJhZ21lbnRcIil9dmFyIGk9ci5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixsPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYz17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIHMoZSx0LG4pe3ZhciByLGE9e30scz1udWxsLHU9bnVsbDtmb3IociBpbiB2b2lkIDAhPT1uJiYocz1cIlwiK24pLHZvaWQgMCE9PXQua2V5JiYocz1cIlwiK3Qua2V5KSx2b2lkIDAhPT10LnJlZiYmKHU9dC5yZWYpLHQpbC5jYWxsKHQscikmJiFjLmhhc093blByb3BlcnR5KHIpJiYoYVtyXT10W3JdKTtpZihlJiZlLmRlZmF1bHRQcm9wcylmb3IociBpbiB0PWUuZGVmYXVsdFByb3BzKXZvaWQgMD09PWFbcl0mJihhW3JdPXRbcl0pO3JldHVybnskJHR5cGVvZjpvLHR5cGU6ZSxrZXk6cyxyZWY6dSxwcm9wczphLF9vd25lcjppLmN1cnJlbnR9fXQuanN4PXMsdC5qc3hzPXN9LDU4OTM6KGUsdCxuKT0+e2UuZXhwb3J0cz1uKDUyNTEpfSwzNTczOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1uKDY1NSksbz1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4obix0KSxlKX19LGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUlMT9OdW1iZXIoZS50b0ZpeGVkKDUpKTplfSxpPS8oLSk/KFtcXGRdKlxcLj9bXFxkXSkrL2csbD0vKCNbMC05YS1mXXs2fXwjWzAtOWEtZl17M318Iyg/OlswLTlhLWZdezJ9KXsyLDR9fChyZ2J8aHNsKWE/XFwoKC0/W1xcZFxcLl0rJT9bLFxcc10rKXsyLDN9XFxzKlxcLypcXHMqW1xcZFxcLl0rJT9cXCkpL2dpLGM9L14oI1swLTlhLWZdezN9fCMoPzpbMC05YS1mXXsyfSl7Miw0fXwocmdifGhzbClhP1xcKCgtP1tcXGRcXC5dKyU/WyxcXHNdKyl7MiwzfVxccypcXC8qXFxzKltcXGRcXC5dKyU/XFwpKSQvaTtmdW5jdGlvbiBzKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlfXZhciB1PXt0ZXN0OmZ1bmN0aW9uKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlfSxwYXJzZTpwYXJzZUZsb2F0LHRyYW5zZm9ybTpmdW5jdGlvbihlKXtyZXR1cm4gZX19LGQ9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHUpLHt0cmFuc2Zvcm06bygwLDEpfSksZj1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdSkse2RlZmF1bHQ6MX0pLHA9ZnVuY3Rpb24oZSl7cmV0dXJue3Rlc3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHModCkmJnQuZW5kc1dpdGgoZSkmJjE9PT10LnNwbGl0KFwiIFwiKS5sZW5ndGh9LHBhcnNlOnBhcnNlRmxvYXQsdHJhbnNmb3JtOmZ1bmN0aW9uKHQpe3JldHVyblwiXCIrdCtlfX19LGg9cChcImRlZ1wiKSxDPXAoXCIlXCIpLHY9cChcInB4XCIpLGc9cChcInZoXCIpLG09cChcInZ3XCIpLHc9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LEMpLHtwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm4gQy5wYXJzZShlKS8xMDB9LHRyYW5zZm9ybTpmdW5jdGlvbihlKXtyZXR1cm4gQy50cmFuc2Zvcm0oMTAwKmUpfX0pLHk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIEJvb2xlYW4ocyhuKSYmYy50ZXN0KG4pJiZuLnN0YXJ0c1dpdGgoZSl8fHQmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHQpKX19LGI9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmdW5jdGlvbihyKXt2YXIgbztpZighcyhyKSlyZXR1cm4gcjt2YXIgYT1yLm1hdGNoKGkpLGw9YVswXSxjPWFbMV0sdT1hWzJdLGQ9YVszXTtyZXR1cm4obz17fSlbZV09cGFyc2VGbG9hdChsKSxvW3RdPXBhcnNlRmxvYXQoYyksb1tuXT1wYXJzZUZsb2F0KHUpLG8uYWxwaGE9dm9pZCAwIT09ZD9wYXJzZUZsb2F0KGQpOjEsb319LHg9e3Rlc3Q6eShcImhzbFwiLFwiaHVlXCIpLHBhcnNlOmIoXCJodWVcIixcInNhdHVyYXRpb25cIixcImxpZ2h0bmVzc1wiKSx0cmFuc2Zvcm06ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5odWUsbj1lLnNhdHVyYXRpb24scj1lLmxpZ2h0bmVzcyxvPWUuYWxwaGEsaT12b2lkIDA9PT1vPzE6bztyZXR1cm5cImhzbGEoXCIrTWF0aC5yb3VuZCh0KStcIiwgXCIrQy50cmFuc2Zvcm0oYShuKSkrXCIsIFwiK0MudHJhbnNmb3JtKGEocikpK1wiLCBcIithKGQudHJhbnNmb3JtKGkpKStcIilcIn19LE89bygwLDI1NSksTD1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdSkse3RyYW5zZm9ybTpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChPKGUpKX19KSxNPXt0ZXN0OnkoXCJyZ2JcIixcInJlZFwiKSxwYXJzZTpiKFwicmVkXCIsXCJncmVlblwiLFwiYmx1ZVwiKSx0cmFuc2Zvcm06ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZWQsbj1lLmdyZWVuLHI9ZS5ibHVlLG89ZS5hbHBoYSxpPXZvaWQgMD09PW8/MTpvO3JldHVyblwicmdiYShcIitMLnRyYW5zZm9ybSh0KStcIiwgXCIrTC50cmFuc2Zvcm0obikrXCIsIFwiK0wudHJhbnNmb3JtKHIpK1wiLCBcIithKGQudHJhbnNmb3JtKGkpKStcIilcIn19LFM9e3Rlc3Q6eShcIiNcIikscGFyc2U6ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIixuPVwiXCIscj1cIlwiLG89XCJcIjtyZXR1cm4gZS5sZW5ndGg+NT8odD1lLnN1YnN0cigxLDIpLG49ZS5zdWJzdHIoMywyKSxyPWUuc3Vic3RyKDUsMiksbz1lLnN1YnN0cig3LDIpKToodD1lLnN1YnN0cigxLDEpLG49ZS5zdWJzdHIoMiwxKSxyPWUuc3Vic3RyKDMsMSksbz1lLnN1YnN0cig0LDEpLHQrPXQsbis9bixyKz1yLG8rPW8pLHtyZWQ6cGFyc2VJbnQodCwxNiksZ3JlZW46cGFyc2VJbnQobiwxNiksYmx1ZTpwYXJzZUludChyLDE2KSxhbHBoYTpvP3BhcnNlSW50KG8sMTYpLzI1NToxfX0sdHJhbnNmb3JtOk0udHJhbnNmb3JtfSxfPXt0ZXN0OmZ1bmN0aW9uKGUpe3JldHVybiBNLnRlc3QoZSl8fFMudGVzdChlKXx8eC50ZXN0KGUpfSxwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm4gTS50ZXN0KGUpP00ucGFyc2UoZSk6eC50ZXN0KGUpP3gucGFyc2UoZSk6Uy5wYXJzZShlKX0sdHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3JldHVybiBzKGUpP2U6ZS5oYXNPd25Qcm9wZXJ0eShcInJlZFwiKT9NLnRyYW5zZm9ybShlKTp4LnRyYW5zZm9ybShlKX19LGo9XCIke2N9XCIsRT1cIiR7bn1cIjtmdW5jdGlvbiBQKGUpe3ZhciB0PVtdLG49MCxyPWUubWF0Y2gobCk7ciYmKG49ci5sZW5ndGgsZT1lLnJlcGxhY2UobCxqKSx0LnB1c2guYXBwbHkodCxyLm1hcChfLnBhcnNlKSkpO3ZhciBvPWUubWF0Y2goaSk7cmV0dXJuIG8mJihlPWUucmVwbGFjZShpLEUpLHQucHVzaC5hcHBseSh0LG8ubWFwKHUucGFyc2UpKSkse3ZhbHVlczp0LG51bUNvbG9yczpuLHRva2VuaXNlZDplfX1mdW5jdGlvbiBrKGUpe3JldHVybiBQKGUpLnZhbHVlc31mdW5jdGlvbiBIKGUpe3ZhciB0PVAoZSksbj10LnZhbHVlcyxyPXQubnVtQ29sb3JzLG89dC50b2tlbmlzZWQsaT1uLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW8sbj0wO248aTtuKyspdD10LnJlcGxhY2UobjxyP2o6RSxuPHI/Xy50cmFuc2Zvcm0oZVtuXSk6YShlW25dKSk7cmV0dXJuIHR9fXZhciBWPWZ1bmN0aW9uKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlPzA6ZX0sUj17dGVzdDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsbztyZXR1cm4gaXNOYU4oZSkmJnMoZSkmJihudWxsIT09KG49bnVsbD09PSh0PWUubWF0Y2goaSkpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lmxlbmd0aCkmJnZvaWQgMCE9PW4/bjowKSsobnVsbCE9PShvPW51bGw9PT0ocj1lLm1hdGNoKGwpKXx8dm9pZCAwPT09cj92b2lkIDA6ci5sZW5ndGgpJiZ2b2lkIDAhPT1vP286MCk+MH0scGFyc2U6ayxjcmVhdGVUcmFuc2Zvcm1lcjpILGdldEFuaW1hdGFibGVOb25lOmZ1bmN0aW9uKGUpe3ZhciB0PWsoZSk7cmV0dXJuIEgoZSkodC5tYXAoVikpfX0sST1uZXcgU2V0KFtcImJyaWdodG5lc3NcIixcImNvbnRyYXN0XCIsXCJzYXR1cmF0ZVwiLFwib3BhY2l0eVwiXSk7ZnVuY3Rpb24gWihlKXt2YXIgdD1lLnNsaWNlKDAsLTEpLnNwbGl0KFwiKFwiKSxuPXRbMF0scj10WzFdO2lmKFwiZHJvcC1zaGFkb3dcIj09PW4pcmV0dXJuIGU7dmFyIG89KHIubWF0Y2goaSl8fFtdKVswXTtpZighbylyZXR1cm4gZTt2YXIgYT1yLnJlcGxhY2UobyxcIlwiKSxsPUkuaGFzKG4pPzE6MDtyZXR1cm4gbyE9PXImJihsKj0xMDApLG4rXCIoXCIrbCthK1wiKVwifXZhciBBPS8oW2Etei1dKilcXCguKj9cXCkvZyxEPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxSKSx7Z2V0QW5pbWF0YWJsZU5vbmU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaChBKTtyZXR1cm4gdD90Lm1hcChaKS5qb2luKFwiIFwiKTplfX0pO3QuYWxwaGE9ZCx0LmNvbG9yPV8sdC5jb21wbGV4PVIsdC5kZWdyZWVzPWgsdC5maWx0ZXI9RCx0LmhleD1TLHQuaHNsYT14LHQubnVtYmVyPXUsdC5wZXJjZW50PUMsdC5wcm9ncmVzc1BlcmNlbnRhZ2U9dyx0LnB4PXYsdC5yZ2JVbml0PUwsdC5yZ2JhPU0sdC5zY2FsZT1mLHQudmg9Zyx0LnZ3PW19LDgzODg6KGUsdCxuKT0+e24ucih0KSxuLmQodCx7Zm9jdXNhYmxlOigpPT55LGlzRm9jdXNhYmxlOigpPT5PLGlzVGFiYmFibGU6KCk9PmIsdGFiYmFibGU6KCk9Pnd9KTt2YXIgcj1bXCJpbnB1dDpub3QoW2luZXJ0XSlcIixcInNlbGVjdDpub3QoW2luZXJ0XSlcIixcInRleHRhcmVhOm5vdChbaW5lcnRdKVwiLFwiYVtocmVmXTpub3QoW2luZXJ0XSlcIixcImJ1dHRvbjpub3QoW2luZXJ0XSlcIixcIlt0YWJpbmRleF06bm90KHNsb3QpOm5vdChbaW5lcnRdKVwiLFwiYXVkaW9bY29udHJvbHNdOm5vdChbaW5lcnRdKVwiLFwidmlkZW9bY29udHJvbHNdOm5vdChbaW5lcnRdKVwiLCdbY29udGVudGVkaXRhYmxlXTpub3QoW2NvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJdKTpub3QoW2luZXJ0XSknLFwiZGV0YWlscz5zdW1tYXJ5OmZpcnN0LW9mLXR5cGU6bm90KFtpbmVydF0pXCIsXCJkZXRhaWxzOm5vdChbaW5lcnRdKVwiXSxvPXIuam9pbihcIixcIiksYT1cInVuZGVmaW5lZFwiPT10eXBlb2YgRWxlbWVudCxpPWE/ZnVuY3Rpb24oKXt9OkVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXN8fEVsZW1lbnQucHJvdG90eXBlLm1zTWF0Y2hlc1NlbGVjdG9yfHxFbGVtZW50LnByb3RvdHlwZS53ZWJraXRNYXRjaGVzU2VsZWN0b3IsbD0hYSYmRWxlbWVudC5wcm90b3R5cGUuZ2V0Um9vdE5vZGU/ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIG51bGw9PWV8fG51bGw9PT0odD1lLmdldFJvb3ROb2RlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5jYWxsKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT92b2lkIDA6ZS5vd25lckRvY3VtZW50fSxjPWZ1bmN0aW9uIGUodCxuKXt2YXIgcjt2b2lkIDA9PT1uJiYobj0hMCk7dmFyIG89bnVsbD09dHx8bnVsbD09PShyPXQuZ2V0QXR0cmlidXRlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5jYWxsKHQsXCJpbmVydFwiKTtyZXR1cm5cIlwiPT09b3x8XCJ0cnVlXCI9PT1vfHxuJiZ0JiZlKHQucGFyZW50Tm9kZSl9LHM9ZnVuY3Rpb24oZSx0LG4pe2lmKGMoZSkpcmV0dXJuW107dmFyIHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGUucXVlcnlTZWxlY3RvckFsbChvKSk7cmV0dXJuIHQmJmkuY2FsbChlLG8pJiZyLnVuc2hpZnQoZSksci5maWx0ZXIobil9LHU9ZnVuY3Rpb24gZSh0LG4scil7Zm9yKHZhciBhPVtdLGw9QXJyYXkuZnJvbSh0KTtsLmxlbmd0aDspe3ZhciBzPWwuc2hpZnQoKTtpZighYyhzLCExKSlpZihcIlNMT1RcIj09PXMudGFnTmFtZSl7dmFyIHU9cy5hc3NpZ25lZEVsZW1lbnRzKCksZD1lKHUubGVuZ3RoP3U6cy5jaGlsZHJlbiwhMCxyKTtyLmZsYXR0ZW4/YS5wdXNoLmFwcGx5KGEsZCk6YS5wdXNoKHtzY29wZVBhcmVudDpzLGNhbmRpZGF0ZXM6ZH0pfWVsc2V7aS5jYWxsKHMsbykmJnIuZmlsdGVyKHMpJiYobnx8IXQuaW5jbHVkZXMocykpJiZhLnB1c2gocyk7dmFyIGY9cy5zaGFkb3dSb290fHxcImZ1bmN0aW9uXCI9PXR5cGVvZiByLmdldFNoYWRvd1Jvb3QmJnIuZ2V0U2hhZG93Um9vdChzKSxwPSFjKGYsITEpJiYoIXIuc2hhZG93Um9vdEZpbHRlcnx8ci5zaGFkb3dSb290RmlsdGVyKHMpKTtpZihmJiZwKXt2YXIgaD1lKCEwPT09Zj9zLmNoaWxkcmVuOmYuY2hpbGRyZW4sITAscik7ci5mbGF0dGVuP2EucHVzaC5hcHBseShhLGgpOmEucHVzaCh7c2NvcGVQYXJlbnQ6cyxjYW5kaWRhdGVzOmh9KX1lbHNlIGwudW5zaGlmdC5hcHBseShsLHMuY2hpbGRyZW4pfX1yZXR1cm4gYX0sZD1mdW5jdGlvbihlLHQpe3JldHVybiBlLnRhYkluZGV4PDAmJih0fHwvXihBVURJT3xWSURFT3xERVRBSUxTKSQvLnRlc3QoZS50YWdOYW1lKXx8ZnVuY3Rpb24oZSl7dmFyIHQsbj1udWxsPT1lfHxudWxsPT09KHQ9ZS5nZXRBdHRyaWJ1dGUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmNhbGwoZSxcImNvbnRlbnRlZGl0YWJsZVwiKTtyZXR1cm5cIlwiPT09bnx8XCJ0cnVlXCI9PT1ufShlKSkmJmlzTmFOKHBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIiksMTApKT8wOmUudGFiSW5kZXh9LGY9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50YWJJbmRleD09PXQudGFiSW5kZXg/ZS5kb2N1bWVudE9yZGVyLXQuZG9jdW1lbnRPcmRlcjplLnRhYkluZGV4LXQudGFiSW5kZXh9LHA9ZnVuY3Rpb24oZSl7cmV0dXJuXCJJTlBVVFwiPT09ZS50YWdOYW1lfSxoPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10LndpZHRoLHI9dC5oZWlnaHQ7cmV0dXJuIDA9PT1uJiYwPT09cn0sQz1mdW5jdGlvbihlLHQpe3JldHVybiEodC5kaXNhYmxlZHx8Yyh0KXx8ZnVuY3Rpb24oZSl7cmV0dXJuIHAoZSkmJlwiaGlkZGVuXCI9PT1lLnR5cGV9KHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuPXQuZGlzcGxheUNoZWNrLHI9dC5nZXRTaGFkb3dSb290O2lmKFwiaGlkZGVuXCI9PT1nZXRDb21wdXRlZFN0eWxlKGUpLnZpc2liaWxpdHkpcmV0dXJuITA7dmFyIG89aS5jYWxsKGUsXCJkZXRhaWxzPnN1bW1hcnk6Zmlyc3Qtb2YtdHlwZVwiKT9lLnBhcmVudEVsZW1lbnQ6ZTtpZihpLmNhbGwobyxcImRldGFpbHM6bm90KFtvcGVuXSkgKlwiKSlyZXR1cm4hMDtpZihuJiZcImZ1bGxcIiE9PW4mJlwibGVnYWN5LWZ1bGxcIiE9PW4pe2lmKFwibm9uLXplcm8tYXJlYVwiPT09bilyZXR1cm4gaChlKX1lbHNle2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpe2Zvcih2YXIgYT1lO2U7KXt2YXIgYz1lLnBhcmVudEVsZW1lbnQscz1sKGUpO2lmKGMmJiFjLnNoYWRvd1Jvb3QmJiEwPT09cihjKSlyZXR1cm4gaChlKTtlPWUuYXNzaWduZWRTbG90P2UuYXNzaWduZWRTbG90OmN8fHM9PT1lLm93bmVyRG9jdW1lbnQ/YzpzLmhvc3R9ZT1hfWlmKGZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGE9ZSYmbChlKSxpPW51bGw9PT0odD1hKXx8dm9pZCAwPT09dD92b2lkIDA6dC5ob3N0LGM9ITE7aWYoYSYmYSE9PWUpZm9yKGM9ISEobnVsbCE9PShuPWkpJiZ2b2lkIDAhPT1uJiZudWxsIT09KHI9bi5vd25lckRvY3VtZW50KSYmdm9pZCAwIT09ciYmci5jb250YWlucyhpKXx8bnVsbCE9ZSYmbnVsbCE9PShvPWUub3duZXJEb2N1bWVudCkmJnZvaWQgMCE9PW8mJm8uY29udGFpbnMoZSkpOyFjJiZpOyl7dmFyIHMsdSxkO2M9IShudWxsPT09KHU9aT1udWxsPT09KHM9YT1sKGkpKXx8dm9pZCAwPT09cz92b2lkIDA6cy5ob3N0KXx8dm9pZCAwPT09dXx8bnVsbD09PShkPXUub3duZXJEb2N1bWVudCl8fHZvaWQgMD09PWR8fCFkLmNvbnRhaW5zKGkpKX1yZXR1cm4gY30oZSkpcmV0dXJuIWUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg7aWYoXCJsZWdhY3ktZnVsbFwiIT09bilyZXR1cm4hMH1yZXR1cm4hMX0odCxlKXx8ZnVuY3Rpb24oZSl7cmV0dXJuXCJERVRBSUxTXCI9PT1lLnRhZ05hbWUmJkFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShlLmNoaWxkcmVuKS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm5cIlNVTU1BUllcIj09PWUudGFnTmFtZX0pKX0odCl8fGZ1bmN0aW9uKGUpe2lmKC9eKElOUFVUfEJVVFRPTnxTRUxFQ1R8VEVYVEFSRUEpJC8udGVzdChlLnRhZ05hbWUpKWZvcih2YXIgdD1lLnBhcmVudEVsZW1lbnQ7dDspe2lmKFwiRklFTERTRVRcIj09PXQudGFnTmFtZSYmdC5kaXNhYmxlZCl7Zm9yKHZhciBuPTA7bjx0LmNoaWxkcmVuLmxlbmd0aDtuKyspe3ZhciByPXQuY2hpbGRyZW4uaXRlbShuKTtpZihcIkxFR0VORFwiPT09ci50YWdOYW1lKXJldHVybiEhaS5jYWxsKHQsXCJmaWVsZHNldFtkaXNhYmxlZF0gKlwiKXx8IXIuY29udGFpbnMoZSl9cmV0dXJuITB9dD10LnBhcmVudEVsZW1lbnR9cmV0dXJuITF9KHQpKX0sdj1mdW5jdGlvbihlLHQpe3JldHVybiEoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBwKGUpJiZcInJhZGlvXCI9PT1lLnR5cGV9KGUpJiYhZnVuY3Rpb24oZSl7aWYoIWUubmFtZSlyZXR1cm4hMDt2YXIgdCxuPWUuZm9ybXx8bChlKSxyPWZ1bmN0aW9uKGUpe3JldHVybiBuLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W3R5cGU9XCJyYWRpb1wiXVtuYW1lPVwiJytlKydcIl0nKX07aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LkNTUyYmXCJmdW5jdGlvblwiPT10eXBlb2Ygd2luZG93LkNTUy5lc2NhcGUpdD1yKHdpbmRvdy5DU1MuZXNjYXBlKGUubmFtZSkpO2Vsc2UgdHJ5e3Q9cihlLm5hbWUpfWNhdGNoKGUpe3JldHVybiBjb25zb2xlLmVycm9yKFwiTG9va3MgbGlrZSB5b3UgaGF2ZSBhIHJhZGlvIGJ1dHRvbiB3aXRoIGEgbmFtZSBhdHRyaWJ1dGUgY29udGFpbmluZyBpbnZhbGlkIENTUyBzZWxlY3RvciBjaGFyYWN0ZXJzIGFuZCBuZWVkIHRoZSBDU1MuZXNjYXBlIHBvbHlmaWxsOiAlc1wiLGUubWVzc2FnZSksITF9dmFyIG89ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihlW25dLmNoZWNrZWQmJmVbbl0uZm9ybT09PXQpcmV0dXJuIGVbbl19KHQsZS5mb3JtKTtyZXR1cm4hb3x8bz09PWV9KGUpfSh0KXx8ZCh0KTwwfHwhQyhlLHQpKX0sZz1mdW5jdGlvbihlKXt2YXIgdD1wYXJzZUludChlLmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpLDEwKTtyZXR1cm4hIShpc05hTih0KXx8dD49MCl9LG09ZnVuY3Rpb24gZSh0KXt2YXIgbj1bXSxyPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQsbyl7dmFyIGE9ISF0LnNjb3BlUGFyZW50LGk9YT90LnNjb3BlUGFyZW50OnQsbD1kKGksYSksYz1hP2UodC5jYW5kaWRhdGVzKTppOzA9PT1sP2E/bi5wdXNoLmFwcGx5KG4sYyk6bi5wdXNoKGkpOnIucHVzaCh7ZG9jdW1lbnRPcmRlcjpvLHRhYkluZGV4OmwsaXRlbTp0LGlzU2NvcGU6YSxjb250ZW50OmN9KX0pKSxyLnNvcnQoZikucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiB0LmlzU2NvcGU/ZS5wdXNoLmFwcGx5KGUsdC5jb250ZW50KTplLnB1c2godC5jb250ZW50KSxlfSksW10pLmNvbmNhdChuKX0sdz1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBuPSh0PXR8fHt9KS5nZXRTaGFkb3dSb290P3UoW2VdLHQuaW5jbHVkZUNvbnRhaW5lcix7ZmlsdGVyOnYuYmluZChudWxsLHQpLGZsYXR0ZW46ITEsZ2V0U2hhZG93Um9vdDp0LmdldFNoYWRvd1Jvb3Qsc2hhZG93Um9vdEZpbHRlcjpnfSk6cyhlLHQuaW5jbHVkZUNvbnRhaW5lcix2LmJpbmQobnVsbCx0KSksbShuKX0seT1mdW5jdGlvbihlLHQpe3JldHVybih0PXR8fHt9KS5nZXRTaGFkb3dSb290P3UoW2VdLHQuaW5jbHVkZUNvbnRhaW5lcix7ZmlsdGVyOkMuYmluZChudWxsLHQpLGZsYXR0ZW46ITAsZ2V0U2hhZG93Um9vdDp0LmdldFNoYWRvd1Jvb3R9KTpzKGUsdC5pbmNsdWRlQ29udGFpbmVyLEMuYmluZChudWxsLHQpKX0sYj1mdW5jdGlvbihlLHQpe2lmKHQ9dHx8e30sIWUpdGhyb3cgbmV3IEVycm9yKFwiTm8gbm9kZSBwcm92aWRlZFwiKTtyZXR1cm4hMSE9PWkuY2FsbChlLG8pJiZ2KHQsZSl9LHg9ci5jb25jYXQoXCJpZnJhbWVcIikuam9pbihcIixcIiksTz1mdW5jdGlvbihlLHQpe2lmKHQ9dHx8e30sIWUpdGhyb3cgbmV3IEVycm9yKFwiTm8gbm9kZSBwcm92aWRlZFwiKTtyZXR1cm4hMSE9PWkuY2FsbChlLHgpJiZDKHQsZSl9fSw0MjQ5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQnV0dG9uVGV4dE9ubHk9dC5CdXR0b25TZWNvbmRhcnk9dC5CdXR0b25QcmltYXJ5PXQuQnV0dG9uPXZvaWQgMDtjb25zdCBhPW4oNTg5MyksaT1vKG4oNzUxOCkpLGw9bigxMzM1KSxjPW4oOTUwNykscz1uKDYxMjYpO3QuQnV0dG9uPWU9Pnt2YXJ7bGFiZWw6dCxjaGlsZHJlbjpuLHNpemU6bz1cImJhc2VcIixzaGFwZTppPVwic3F1YXJlXCIsa2luZDpsPVwicHJpbWFyeVwiLGxheW91dDpjPVwiZml0XCIsaHJlZjpzfT1lLGY9cihlLFtcImxhYmVsXCIsXCJjaGlsZHJlblwiLFwic2l6ZVwiLFwic2hhcGVcIixcImtpbmRcIixcImxheW91dFwiLFwiaHJlZlwiXSk7cmV0dXJuKDAsYS5qc3gpKHUsT2JqZWN0LmFzc2lnbih7YXM6cz9cImFcIjpcImJ1dHRvblwiLHNpemU6byxzaGFwZTppLGtpbmQ6bCxsYXlvdXQ6Y30sZix7Y2hpbGRyZW46dD8oMCxhLmpzeCkoZCxPYmplY3QuYXNzaWduKHthbGlnbkl0ZW1zOlwiY2VudGVyXCIsanVzdGlmeUNvbnRlbnQ6XCJjZW50ZXJcIn0se2NoaWxkcmVuOnR9KSk6bn0pKX07Y29uc3QgdT1pLmRlZmF1bHQuYnV0dG9uYFxuICAvKiBEZWZhdWx0IHZhbHVlcyB0aGF0IGdldCBvdmVycmlkZGVuIGJ5IHZhcmlhbnRzICovXG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEJhY2tncm91bmR9O1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kfTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnlUZXh0fTtcblxuICAvKiBJbmplY3QgdmFyaWFudHMgKi9cbiAgJHsoMCxjLmdldFZhcmlhbnRDU1MpKHMudmFyaWFudHMscy5WYXJpYW50LnNpemUpfVxuICAkeygwLGMuZ2V0VmFyaWFudENTUykocy52YXJpYW50cyxzLlZhcmlhbnQuc2hhcGUpfVxuICAkeygwLGMuZ2V0VmFyaWFudENTUykocy52YXJpYW50cyxzLlZhcmlhbnQua2luZCl9XG4gICR7KDAsYy5nZXRWYXJpYW50Q1NTKShzLnZhcmlhbnRzLHMuVmFyaWFudC5sYXlvdXQpfVxuXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICBvdXRsaW5lOiBub25lO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmxpbmVIZWlnaHQudWl9O1xuICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0LmJvbGR9O1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKTtcblxuICAmOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAmOmRpc2FibGVkLFxuICAmOmFjdGl2ZTpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcn07XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgfVxuYCxkPSgwLGkuZGVmYXVsdCkobC5Cb3gpYFxuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gMCAke2UucHgueHNtYWxsfWB9O1xuYDt0LkJ1dHRvblByaW1hcnk9ZT0+KDAsYS5qc3gpKHQuQnV0dG9uLE9iamVjdC5hc3NpZ24oe30sZSx7a2luZDpcInByaW1hcnlcIn0pKSx0LkJ1dHRvblNlY29uZGFyeT1lPT4oMCxhLmpzeCkodC5CdXR0b24sT2JqZWN0LmFzc2lnbih7fSxlLHtraW5kOlwic2Vjb25kYXJ5XCJ9KSksdC5CdXR0b25UZXh0T25seT1lPT4oMCxhLmpzeCkodC5CdXR0b24sT2JqZWN0LmFzc2lnbih7fSxlLHtraW5kOlwidGV4dE9ubHlcIn0pKX0sNjEyNjooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC52YXJpYW50cz10LkJ1dHRvblNoYXBlPXQuQnV0dG9uTGF5b3V0PXQuQnV0dG9uU2l6ZT10LkJ1dHRvbktpbmQ9dC5WYXJpYW50PXZvaWQgMDtjb25zdCByPW4oNzUxOCk7dC5WYXJpYW50PXtzaGFwZTpcInNoYXBlXCIsc2l6ZTpcInNpemVcIixraW5kOlwia2luZFwiLGxheW91dDpcImxheW91dFwifSx0LkJ1dHRvbktpbmQ9e3ByaW1hcnk6XCJwcmltYXJ5XCIsc2Vjb25kYXJ5Olwic2Vjb25kYXJ5XCIsdGV4dE9ubHk6XCJ0ZXh0T25seVwifSx0LkJ1dHRvblNpemU9e3NtYWxsOlwic21hbGxcIixiYXNlOlwiYmFzZVwiLGxhcmdlOlwibGFyZ2VcIn0sdC5CdXR0b25MYXlvdXQ9e2ZpdDpcImZpdFwiLGZ1bGw6XCJmdWxsXCJ9LHQuQnV0dG9uU2hhcGU9e3NxdWFyZTpcInNxdWFyZVwiLHBpbGw6XCJwaWxsXCJ9LHQudmFyaWFudHM9e1t0LlZhcmlhbnQuc2l6ZV06e1t0LkJ1dHRvblNpemUuYmFzZV06ci5jc3NgXG4gICAgICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfSAke2UucHgubGFyZ2V9YH07XG4gICAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gICAgYCxbdC5CdXR0b25TaXplLnNtYWxsXTpyLmNzc2BcbiAgICAgIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHgueHNtYWxsfSAke2UucHguYmFzZX1gfTtcbiAgICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5zbWFsbH07XG4gICAgYCxbdC5CdXR0b25TaXplLmxhcmdlXTpyLmNzc2BcbiAgICAgIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguYmFzZX0gJHtlLnB4LnhsYXJnZX1gfTtcbiAgICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5sYXJnZX07XG4gICAgYH0sW3QuVmFyaWFudC5zaGFwZV06e1t0LkJ1dHRvblNoYXBlLnNxdWFyZV06ci5jc3NgXG4gICAgICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gICAgYCxbdC5CdXR0b25TaGFwZS5waWxsXTpyLmNzc2BcbiAgICAgIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnBpbGx9O1xuICAgIGB9LFt0LlZhcmlhbnQubGF5b3V0XTp7W3QuQnV0dG9uTGF5b3V0LmZpdF06ci5jc3NgXG4gICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgYCxbdC5CdXR0b25MYXlvdXQuZnVsbF06ci5jc3NgXG4gICAgICB3aWR0aDogMTAwJTtcbiAgICBgfSxbdC5WYXJpYW50LmtpbmRdOntbdC5CdXR0b25LaW5kLnByaW1hcnldOnIuY3NzYFxuICAgICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX07XG4gICAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeUhvdmVyfTtcbiAgICAgIH1cblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5QWN0aXZlfTtcbiAgICAgIH1cblxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeUZvY3VzZWR9O1xuICAgICAgfVxuICAgIGAsW3QuQnV0dG9uS2luZC5zZWNvbmRhcnldOnIuY3NzYFxuICAgICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kU2Vjb25kYXJ5fTtcbiAgICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kU2Vjb25kYXJ5fTtcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnlUZXh0fTtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFNlY29uZGFyeUhvdmVyfTtcbiAgICAgIH1cblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnlBY3RpdmV9O1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnlGb2N1c2VkfTtcbiAgICAgIH1cbiAgICBgLFt0LkJ1dHRvbktpbmQudGV4dE9ubHldOnIuY3NzYFxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG5cbiAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRGb2N1c2VkfTtcbiAgICAgIH1cbiAgICBgfX19LDQxMzA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDQyNDkpLHQpLG8obig2MTI2KSx0KX0sMzkxMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DYXJkQ29udGFpbmVyPXZvaWQgMDtjb25zdCBvPW4oNTg5MyksYT1yKG4oNzUxOCkpLGk9big5NTA3KSxsPW4oMTMzNSk7dC5DYXJkQ29udGFpbmVyPWU9PigwLG8uanN4KShjLE9iamVjdC5hc3NpZ24oe3N0eWxlOnttYXhIZWlnaHQ6ZS5tYXhIZWlnaHQsb3ZlcmZsb3dZOlwiYXV0b1wifSxpZDpcImNhcmQtY29udGFpbmVyXCIsXCJkYXRhLXRlc3RpZFwiOlwiY2FyZC1jb250YWluZXJcIn0se2NoaWxkcmVuOigwLG8uanN4KShzLHtjaGlsZHJlbjplLmNoaWxkcmVufSl9KSk7Y29uc3QgYz0oMCxhLmRlZmF1bHQpKGwuQm94KWBcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQzfTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNX07XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfSAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH1cbiAgICAkeyh7dGhlbWU6ZX0pPT5lLnB4LmxhcmdlfSAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICAke2kuTWl4aW5zLnNjcm9sbGJhci5iYXNlfTtcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuYCxzPWEuZGVmYXVsdC5kaXZgXG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9IDBweFxuICAgICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIHdpZHRoOiAxMDAlO1xuYH0sMTI0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNvbGxhcHNpYmxlQ2FyZD12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpLGE9big2Njg5KSxpPXIobig3NTE4KSksbD1uKDMxMzYpLGM9big5NjM0KSxzPW4oMTMzNSksdT1uKDM5MTEpLGQ9big3NzY5KSxmPW4oOTUwNyk7dC5Db2xsYXBzaWJsZUNhcmQ9ZT0+e2NvbnN0W3Qsbl09KDAsYS51c2VTdGF0ZSkoZS5leHBhbmRlZHx8ITEpLHI9ZT0+e24obnVsbCE9ZT9lOiF0KX07cmV0dXJuKDAsby5qc3hzKShwLE9iamVjdC5hc3NpZ24oe1wiZGF0YS10ZXN0aWRcIjpcImNvbGxhcHNpYmxlLWNhcmRcIn0se2NoaWxkcmVuOlsoMCxvLmpzeHMpKEMsT2JqZWN0LmFzc2lnbih7XCJhcmlhLWV4cGFuZGVkXCI6dCxcImRhdGEtdGVzdGlkXCI6XCJoZWFkaW5nLWNvbnRhaW5lclwiLHN0eWxlOntwb3NpdGlvbjplLmZpeGVkSGVhZGVyP1wic3RpY2t5XCI6dm9pZCAwLHRvcDowfSxvbkNsaWNrOigpPT5yKCksdGFiSW5kZXg6MCxvbktleURvd246ZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2VcIkVudGVyXCI6Y2FzZVwiU3BhY2VcIjplLnByZXZlbnREZWZhdWx0KCkscigpfX19LHtjaGlsZHJlbjpbKDAsby5qc3gpKGgse2NoaWxkcmVuOmUudGl0bGV9KSwoMCxvLmpzeHMpKFwiZGl2XCIsT2JqZWN0LmFzc2lnbih7aWQ6XCJpY29uLWNvbnRhaW5lclwifSx7Y2hpbGRyZW46W3ZvaWQgMCE9PWUuYmFkZ2VUZXh0JiYoMCxvLmpzeCkobC5CYWRnZSx7Y291bnQ6ZS5iYWRnZVRleHQsaWQ6XCJjb2xsYXBzaWJsZS1jYXJkLWhlYWRpbmctYmFkZ2VcIixcImRhdGEtdGVzdGlkXCI6XCJjb2xsYXBzaWJsZS1jYXJkLWhlYWRpbmctYmFkZ2VcIn0pLCgwLG8uanN4KShjLkljb24se2ljb246dD9cIkNoZXZyb25VcEljb25cIjpcIkNoZXZyb25Eb3duSWNvblwifSldfSkpXX0pKSx0JiYoMCxvLmpzeCkodS5DYXJkQ29udGFpbmVyLE9iamVjdC5hc3NpZ24oe21heEhlaWdodDplLm1heEhlaWdodHx8XCJub25lXCJ9LHtjaGlsZHJlbjooMCxvLmpzeCkoXCJkaXZcIix7Y2hpbGRyZW46ZS5jaGlsZHJlbn0pfSkpXX0pKX07Y29uc3QgcD1pLmRlZmF1bHQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEwMCU7XG5gLGg9KDAsaS5kZWZhdWx0KShkLlRleHQpYFxuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgJHtmLk1peGlucy50ZXh0T3ZlcmZsb3d9O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuYCxDPSgwLGkuZGVmYXVsdCkocy5Cb3gpYFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDN9O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ1fTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNX07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGdhcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUubGluZUhlaWdodC5oZWFkaW5nfTtcbiAgb3V0bGluZTogbm9uZTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKTtcbiAgd2lkdGg6IDEwMCU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgI2ljb24tY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIH1cblxuICAjY29sbGFwc2libGUtY2FyZC1oZWFkaW5nLWJhZGdlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5fTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDJ9O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDV9O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDV9O1xuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5ib3JkZXJOZXV0cmFsfTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJvcmRlck5ldXRyYWx9O1xuICB9XG5gfSw3NDAxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigxMjQpLHQpfSw5NjQ0OihlLHQpPT57dmFyIG47T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5FeHBhbmREaXJlY3Rpb249dm9pZCAwLChuPXQuRXhwYW5kRGlyZWN0aW9ufHwodC5FeHBhbmREaXJlY3Rpb249e30pKVtuLlVwPTBdPVwiVXBcIixuW24uRG93bj0xXT1cIkRvd25cIn0sNDAyMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5FeHBhbmRhYmxlQnV0dG9uPXZvaWQgMDtjb25zdCBvPW4oNTg5MyksYT1uKDY2ODkpLGk9big0MTMwKSxsPXIobig3NTE4KSksYz1uKDk2MzQpLHM9big5MTQxKSx1PW4oMzAzMCksZD1uKDEzMzUpLGY9big5NjQ0KTt0LkV4cGFuZGFibGVCdXR0b249ZT0+e3ZhciB0LG4scixsLGMscDtjb25zdFt5LGJdPSgwLGEudXNlU3RhdGUpKHtzaG93OiExLHJlcXVlc3RlZEJ5Q29sbGFwc2U6ITF9KSx4PXtzaXplOmUuc2l6ZSxraW5kOmUua2luZCxkaXNhYmxlZDplLmRpc2FibGVkfSxPPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7c2hhcGU6aS5CdXR0b25TaGFwZS5zcXVhcmUsXCJhcmlhLWxhYmVsXCI6bnVsbCE9PSh0PWVbXCJhcmlhLWxhYmVsXCJdKSYmdm9pZCAwIT09dD90OmBQcmltYXJ5IEJ1dHRvbiAke2UudGl0bGV9YH0pLEw9bnVsbCE9PShuPWUuZXhwYW5kRGlyZWN0aW9uKSYmdm9pZCAwIT09bj9uOmYuRXhwYW5kRGlyZWN0aW9uLkRvd247cmV0dXJuKDAsYS51c2VFZmZlY3QpKCgoKT0+e2lmKCF5LnJlcXVlc3RlZEJ5Q29sbGFwc2UpcmV0dXJuO2NvbnN0IGU9c2V0VGltZW91dCgoKCk9PmIoe3JlcXVlc3RlZEJ5Q29sbGFwc2U6ITEsc2hvdzohMX0pKSwyMDApO3JldHVybigpPT5jbGVhclRpbWVvdXQoZSl9KSxbeS5yZXF1ZXN0ZWRCeUNvbGxhcHNlXSksKDAsby5qc3hzKSh3LHtjaGlsZHJlbjpbKDAsby5qc3hzKShtLHtjaGlsZHJlbjpbKDAsby5qc3gpKEMsT2JqZWN0LmFzc2lnbih7fSxPLHtjaGlsZHJlbjooMCxvLmpzeCkodix7Y2hpbGRyZW46bnVsbCE9PShyPWUuY2hpbGRyZW4pJiZ2b2lkIDAhPT1yP3I6Ty50aXRsZX0pfSkpLGUuc2Vjb25kYXJ5QnV0dG9ucyYmZS5zZWNvbmRhcnlCdXR0b25zLmxlbmd0aD4wJiYoMCxvLmpzeCkoZC5Cb3gsT2JqZWN0LmFzc2lnbih7aWQ6XCJkcm9wZG93bi1jb250YWluZXJcIn0se2NoaWxkcmVuOigwLG8uanN4cykoZyxPYmplY3QuYXNzaWduKHt9LHgse3JvbGU6XCJjb21ib2JveFwiLG9uQ2xpY2s6KCk9Pnt5LnJlcXVlc3RlZEJ5Q29sbGFwc2V8fGIoe3JlcXVlc3RlZEJ5Q29sbGFwc2U6ITEsc2hvdzoheS5zaG93fSl9LFwiYXJpYS1sYWJlbFwiOlwiRXhwYW5kIFNlY29uZGFyeSBCdXR0b25zIFBhbmVsXCIsXCJhcmlhLWV4cGFuZGVkXCI6eS5zaG93fSx7Y2hpbGRyZW46W0w9PT1mLkV4cGFuZERpcmVjdGlvbi5Eb3duJiYoMCxvLmpzeCkoaCx7a2luZDpudWxsIT09KGw9ZS5raW5kKSYmdm9pZCAwIT09bD9sOmkuQnV0dG9uS2luZC5wcmltYXJ5LGljb246XCJDYXJldERvd25JY29uXCJ9KSxMPT09Zi5FeHBhbmREaXJlY3Rpb24uVXAmJigwLG8uanN4KShoLHtraW5kOm51bGwhPT0oYz1lLmtpbmQpJiZ2b2lkIDAhPT1jP2M6aS5CdXR0b25LaW5kLnByaW1hcnksaWNvbjpcIkNhcmV0VXBJY29uXCJ9KV19KSl9KSldfSksZS5zZWNvbmRhcnlCdXR0b25zJiZlLnNlY29uZGFyeUJ1dHRvbnMubGVuZ3RoPjAmJigwLG8uanN4KShzLkFuaW1hdGVQcmVzZW5jZSx7Y2hpbGRyZW46eS5zaG93JiYoMCxvLmpzeCkodS5FeHBhbmRhYmxlUGFuZWwse2V4cGFuZERpcmVjdGlvbjpMLHNlY29uZGFyeUJ1dHRvbnM6bnVsbCE9PShwPWUuc2Vjb25kYXJ5QnV0dG9ucykmJnZvaWQgMCE9PXA/cDpbXSxzdHJldGNoOmUuc3RyZXRjaEV4cGFuZGFibGVQYW5lbCxjbG9zZVBhbmVsT25TZWNvbmRhcnlCdXR0b25DbGljazplLmNsb3NlUGFuZWxPblNlY29uZGFyeUJ1dHRvbkNsaWNrLG9uQ29sbGFwc2VSZXF1ZXN0OigpPT5iKHtzaG93OiExLHJlcXVlc3RlZEJ5Q29sbGFwc2U6ITB9KSxidXR0b25TaXplOmUuc2l6ZSxkb2N1bWVudDplLmRvY3VtZW50fSl9KV19KX07Y29uc3QgcD17W2kuQnV0dG9uS2luZC5wcmltYXJ5XTplPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5VGV4dCxbaS5CdXR0b25LaW5kLnNlY29uZGFyeV06ZT0+ZS5wYWxldHRlLmJyYW5kU2Vjb25kYXJ5VGV4dCxbaS5CdXR0b25LaW5kLnRleHRPbmx5XTplPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9LGg9KDAsbC5kZWZhdWx0KShjLkljb24pYFxuICBzdmcgcGF0aCB7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplLGtpbmQ6dH0pPT5wW3RdKGUpfTtcbiAgfVxuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5saW5lSGVpZ2h0LnVpfTtcbiAgZm9udC13ZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuZm9udFdlaWdodC5ib2xkfTtcbmAsQz0oMCxsLmRlZmF1bHQpKGkuQnV0dG9uKWBcbiAgbWFyZ2luLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG5gLHY9KDAsbC5kZWZhdWx0KShkLkJveClgXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbmAsZz0oMCxsLmRlZmF1bHQpKGkuQnV0dG9uKWBcbiAgd2lkdGg6ICR7ZT0+ZS50aGVtZS5weC54eGxhcmdlfTtcbiAgcGFkZGluZzogMDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gLG09bC5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmAsdz1sLmRlZmF1bHQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbmB9LDIxMjg6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuc2V0dXBFeHBhbmRhYmxlUGFuZWw9dm9pZCAwO2NvbnN0IHI9big5NjQ0KTt0LnNldHVwRXhwYW5kYWJsZVBhbmVsPShlLHQsbj0hMSk9PntpZighZXx8MD09PWUuY2hpbGROb2Rlcy5sZW5ndGgpcmV0dXJuO2NvbnN0IG89ZS5wYXJlbnRFbGVtZW50LGE9bnVsbD09bz92b2lkIDA6by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoIWEpcmV0dXJuO2NvbnN0IGw9aS5oZWlnaHQsYz1pLndpZHRoPD1hLndpZHRofHxuP2kud2lkdGg6YS53aWR0aCxzPWEueCtjPmRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGh8fGM8YS53aWR0aDtlLnN0eWxlLndpZHRoPWAke2N9cHhgLGUuc3R5bGUub3BhY2l0eT1cIjFcIixzP2Uuc3R5bGUucmlnaHQ9XCIwcHhcIjplLnN0eWxlLmxlZnQ9XCIwcHhcIix0PT09ci5FeHBhbmREaXJlY3Rpb24uRG93biYmKGUuc3R5bGUudG9wPWAke2EuaGVpZ2h0fXB4YCksdD09PXIuRXhwYW5kRGlyZWN0aW9uLlVwJiYoZS5zdHlsZS50b3A9LTEqbCtcInB4XCIpfX0sMzAzMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5FeHBhbmRhYmxlUGFuZWw9dm9pZCAwO2NvbnN0IG89big1ODkzKSxhPXIobig3NTE4KSksaT1uKDkxNDEpLGw9big0MTMwKSxjPW4oMTMzNSkscz1uKDIxMjgpLHU9cihuKDQ0ODMpKSxkPXt0eXBlOlwic3ByaW5nXCIsZHVyYXRpb246LjIsYm91bmNlOi4yNX07dC5FeHBhbmRhYmxlUGFuZWw9ZT0+e3ZhciB0O2NvbnN0IG49YCR7ZS5wYW5lbElkfS1leHBhbmRhYmxlLXBhbmVsYDtyZXR1cm4oMCxvLmpzeCkodS5kZWZhdWx0LE9iamVjdC5hc3NpZ24oe2ZvY3VzVHJhcE9wdGlvbnM6e2ZhbGxiYWNrRm9jdXM6YCMke259YCxjbGlja091dHNpZGVEZWFjdGl2YXRlczohMCxvbkRlYWN0aXZhdGU6ZS5vbkNvbGxhcHNlUmVxdWVzdCxpbml0aWFsRm9jdXM6ITEsZG9jdW1lbnQ6ZS5kb2N1bWVudH19LHtjaGlsZHJlbjooMCxvLmpzeCkoaCxPYmplY3QuYXNzaWduKHtyZWY6dD0+KDAscy5zZXR1cEV4cGFuZGFibGVQYW5lbCkodCxlLmV4cGFuZERpcmVjdGlvbixlLnN0cmV0Y2gpLHRhYkluZGV4OjAsaWQ6bixpbml0aWFsOlwiaW5pdGlhbFwiLGV4aXQ6XCJoaWRkZW5cIixidXR0b25TaXplOm51bGwhPT0odD1lLmJ1dHRvblNpemUpJiZ2b2lkIDAhPT10P3Q6bC5CdXR0b25TaXplLmJhc2UsYW5pbWF0ZTpcInZpc2libGVcIixyb2xlOlwibWVudVwiLHRyYW5zaXRpb246ZCxvbk1vdXNlT3ZlcjooKT0+e3ZhciBlO3JldHVybiBudWxsPT09KGU9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCl8fHZvaWQgMD09PWU/dm9pZCAwOmUuYmx1cigpfX0se2NoaWxkcmVuOmUuc2Vjb25kYXJ5QnV0dG9ucy5tYXAoKCh0LG4pPT4oMCxvLmpzeCkobC5CdXR0b24sT2JqZWN0LmFzc2lnbih7Y2xhc3NOYW1lOlwibWVudS1pdGVtXCIsdGFiSW5kZXg6bisxLHRpdGxlOnQudGl0bGUscm9sZTpcIm1lbnVpdGVtXCIsc2l6ZTplLmJ1dHRvblNpemUsZGlzYWJsZWQ6dC5kaXNhYmxlZCxraW5kOlwidGV4dE9ubHlcIixvbkNsaWNrOm49PigodCxuKT0+e2UuY2xvc2VQYW5lbE9uU2Vjb25kYXJ5QnV0dG9uQ2xpY2s/KG4ub25DbGljayh0KSxlLm9uQ29sbGFwc2VSZXF1ZXN0KCkpOm4ub25DbGljayh0LCgoKT0+ZS5vbkNvbGxhcHNlUmVxdWVzdCgpKSl9KShuLHQpLFwiYXJpYS1sYWJlbFwiOnQudGl0bGV9LHtjaGlsZHJlbjooMCxvLmpzeCkoZixPYmplY3QuYXNzaWduKHtcImFyaWEtbGFiZWxcIjp0LnRpdGxlfSx7Y2hpbGRyZW46dC50aXRsZX0pKX0pLG4pKSl9KSxcImV4cGFuZGFibGVQYW5lbFwiKX0pKX07Y29uc3QgZj0oMCxhLmRlZmF1bHQpKGMuQm94KWBcbiAgcGFkZGluZy1ib3R0b206IDFweDtcbiAgcGFkZGluZy10b3A6IDFweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuYCxwPXtbbC5CdXR0b25TaXplLnNtYWxsXTplPT5lLnB4LnNtYWxsLFtsLkJ1dHRvblNpemUuYmFzZV06ZT0+ZS5weC5iYXNlLFtsLkJ1dHRvblNpemUubGFyZ2VdOmU9PmUucHgubGFyZ2V9LGg9KDAsYS5kZWZhdWx0KShpLm1vdGlvbi5kaXYpYFxuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gIG9wYWNpdHk6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAke2U9PmUudGhlbWUucHgueHh4bGFyZ2V9O1xuICBtYXgtd2lkdGg6IG1heC1jb250ZW50O1xuICBtaW4td2lkdGg6IDgwcHg7XG4gIGJhY2tncm91bmQ6ICR7ZT0+ZS50aGVtZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgYm94LXNoYWRvdzogJHtlPT5lLnRoZW1lLnNoYWRvdy5iYXNlfTtcbiAgaGVpZ2h0OiBtYXgtY29udGVudDtcbiAgei1pbmRleDogMTAwO1xuXG4gIC5tZW51LWl0ZW0ge1xuICAgIGJvcmRlci1yYWRpdXM6IHVuc2V0O1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm9yZGVyOiB0cmFuc3BhcmVudDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBvdmVyZmxvdzogY2xpcDtcbiAgICAmID4gKiB7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIH1cbiAgICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0Lm5vcm1hbH07XG4gICAgcGFkZGluZy10b3A6ICR7KHt0aGVtZTplLGJ1dHRvblNpemU6dH0pPT5wW3RdKGUpfTtcbiAgICBwYWRkaW5nLWJvdHRvbTogJHsoe3RoZW1lOmUsYnV0dG9uU2l6ZTp0fSk9PnBbdF0oZSl9O1xuICAgIHBhZGRpbmctbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gICAgcGFkZGluZy1yaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG5cbiAgICA6Zmlyc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgICB9XG5cbiAgICA6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICAgIH1cblxuICAgICY6Zm9jdXMsXG4gICAgJjpob3ZlciB7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tncm91bmQ6ICR7ZT0+ZS50aGVtZS5wYWxldHRlLmJhY2tncm91bmQyfTtcbiAgICB9XG5cbiAgICAmOmRpc2FibGVkLFxuICAgICY6YWN0aXZlOmRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dEluYWN0aXZlfTtcbiAgICAgIGJhY2tncm91bmQ6ICR7ZT0+ZS50aGVtZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgICAgIG9wYWNpdHk6IHVuc2V0O1xuICAgIH1cbiAgfVxuYH0sNDkyNTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNDAyMSksdCksbyhuKDk2NDQpLHQpfSwyNjA5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig1OTcxKSx0KX0sNTk3MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRvZ2dsZT12b2lkIDA7Y29uc3QgYT1uKDU4OTMpLGk9big2Njg5KSxsPW8obig3NTE4KSksYz1uKDg1MTApLHM9bigxMzM1KTt0LlRvZ2dsZT1lPT57dmFye2lkOnQsbGFiZWw6bixvbkNoYW5nZTpvLGxhYmVsU2lkZTpsPVwicmlnaHRcIix0eXBlOmM9XCJjaGVja2JveFwifT1lLHM9cihlLFtcImlkXCIsXCJsYWJlbFwiLFwib25DaGFuZ2VcIixcImxhYmVsU2lkZVwiLFwidHlwZVwiXSk7Y29uc3RbQyx2XT0oMCxpLnVzZVN0YXRlKShzLmNoZWNrZWQpO3JldHVybigwLGkudXNlRWZmZWN0KSgoKCk9Pnt2KHMuY2hlY2tlZCl9KSxbcy5jaGVja2VkXSksKDAsYS5qc3hzKSh1LE9iamVjdC5hc3NpZ24oe2xhYmVsU2lkZTpsfSx7Y2hpbGRyZW46W24/KDAsYS5qc3gpKGgsT2JqZWN0LmFzc2lnbih7aHRtbEZvcjp0fSx7Y2hpbGRyZW46bn0pKTp2b2lkIDAsKDAsYS5qc3hzKShkLE9iamVjdC5hc3NpZ24oe2lzQ2hlY2tlZDpDfSx7Y2hpbGRyZW46WygwLGEuanN4KShwLE9iamVjdC5hc3NpZ24oe30scyx7aWQ6dCx0eXBlOmMsb25DaGFuZ2U6ZT0+e3YoZS50YXJnZXQuY2hlY2tlZCksbnVsbD09b3x8byhlKX19KSksKDAsYS5qc3gpKGYse3RhYkluZGV4Oi0xLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIixpc0NoZWNrZWQ6Q30pXX0pKV19KSl9O2NvbnN0IHU9bC5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhsYXJnZX07XG4gIGZsZXgtZGlyZWN0aW9uOiAkeyh7bGFiZWxTaWRlOmV9KT0+XCJsZWZ0XCI9PT1lP1wicm93XCI6XCJyb3ctcmV2ZXJzZVwifTtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgueGxhcmdlfTtcbmAsZD0oMCxsLmRlZmF1bHQpKHMuQm94KWBcbiAgLS1weC10b2dnbGU6ICR7KHt0aGVtZTplfSk9PmUucHgueGxhcmdlfTtcbiAgLS1weC1rbm9iOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiB2YXIoLS1weC10b2dnbGUpO1xuICB3aWR0aDogY2FsYygyICogdmFyKC0tcHgtdG9nZ2xlKSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkXG4gICAgJHsoe2lzQ2hlY2tlZDplLHRoZW1lOnR9KT0+ZT90LnBhbGV0dGUuYnJhbmRQcmltYXJ5OnQucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIGJvcmRlci1yYWRpdXM6IGNhbGMoMC41ICogdmFyKC0tcHgtdG9nZ2xlKSk7XG5cbiAgYmFja2dyb3VuZDogJHsoe2lzQ2hlY2tlZDplLHRoZW1lOnR9KT0+ZT90LnBhbGV0dGUuYnJhbmRQcmltYXJ5OnQucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKSxcbiAgICBib3JkZXItY29sb3IgdmFyKC0tLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbik7XG5cbiAgJjpmb2N1cy13aXRoaW4ge1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Rm9jdXNlZH07XG4gIH1cbmAsZj1sLmRlZmF1bHQuYnV0dG9uYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiB2YXIoLS1weC1rbm9iKTtcbiAgaGVpZ2h0OiB2YXIoLS1weC1rbm9iKTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQ6ICR7KHtpc0NoZWNrZWQ6ZSx0aGVtZTp0fSk9PmU/dC5wYWxldHRlLmJyYW5kUHJpbWFyeVRleHQ6dC5wYWxldHRlLmlucHV0Q29sb3J9O1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHRyYW5zaXRpb246IGxlZnQgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKSwgYmFja2dyb3VuZCB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTsgLyogQWxsb3cgcGFzcy10aHJ1IGZvciBuYXRpdmUgaW5wdXQgKi9cbmAscD0oMCxsLmRlZmF1bHQpKGMuUmF3SW5wdXQpYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3BhY2l0eTogMDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBkaXNwbGF5OiBibG9jaztcblxuICAmOmNoZWNrZWQgKyAke2Z9IHtcbiAgICBsZWZ0OiBjYWxjKDEwMCUgLSAkeyh7dGhlbWU6ZX0pPT5lLnB4LmxhcmdlfSk7XG4gIH1cbiAgJjpkaXNhYmxlZCArICR7Zn0ge1xuICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgfVxuICAmOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbmAsaD1sLmRlZmF1bHQubGFiZWxgYH0sNTMwMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJhZGdlPXZvaWQgMDtjb25zdCBhPW4oNTg5MyksaT1vKG4oNzUxOCkpLGw9bigxMzM1KTt0LkJhZGdlPWU9Pnt2YXJ7Y291bnQ6dD0wLG1heDpufT1lLG89cihlLFtcImNvdW50XCIsXCJtYXhcIl0pO2xldCBpPXQudG9TdHJpbmcoKTtyZXR1cm4gbiYmdD5uJiYoaT1gJHtufStgKSwoMCxhLmpzeCkoYyxPYmplY3QuYXNzaWduKHt9LG8se2NoaWxkcmVuOml9KSl9O2NvbnN0IGM9KDAsaS5kZWZhdWx0KShsLkJveClgXG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5zdGF0dXNDcml0aWNhbH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnBpbGx9O1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5fY29sb3Iud2hpdGV9O1xuICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuc21hbGx9O1xuICBtaW4td2lkdGg6ICR7KHt0aGVtZTplfSk9PmUucHgueGxhcmdlfTtcbiAgcGFkZGluZzogMnB4IDZweDtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBib3gtc2hhZG93OiAkeyh7dGhlbWU6ZX0pPT5lLnNoYWRvdy5iYXNlfTtcbmB9LDMxMzY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDUzMDApLHQpfSw2ODk1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fSxpPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2FsZW5kYXI9dm9pZCAwO2NvbnN0IGw9big1ODkzKSxjPW4oNjY4OSkscz1pKG4oNzUxOCkpLHU9big3MjkyKSxkPW4oNDEzMCksZj1uKDEzMzUpLHA9big5NTA3KSxoPWEobig1Mjk5KSk7dC5DYWxlbmRhcj0oe3ZhbHVlOmUsb25DaGFuZ2U6dCxvbkRpc21pc3M6bn0pPT57Y29uc3Rbcl09KDAsYy51c2VTdGF0ZSkoZSksW28sYV09KDAsYy51c2VTdGF0ZSkoZSksaT0oMCxjLnVzZUNhbGxiYWNrKSgoZT0+e2EoZSksbnVsbD09dHx8dChlKX0pLFtdKSxzPSgwLGMudXNlQ2FsbGJhY2spKCgoKT0+e2kociksbnVsbD09bnx8bigpfSksW10pO3JldHVybigwLGwuanN4cykoZyxPYmplY3QuYXNzaWduKHtcImRhdGEtdGVzdGlkXCI6XCJyZWFjdC1jYWxlbmRhclwifSx7Y2hpbGRyZW46WygwLGwuanN4KSh1LkNhbGVuZGFyLHt2YWx1ZTpvLG9uQ2hhbmdlOmksY2FsZW5kYXJUeXBlOlwiVVNcIixkZWZhdWx0VmlldzpcIm1vbnRoXCIsbWluRGV0YWlsOlwieWVhclwiLG5leHQyTGFiZWw6bnVsbCxwcmV2MkxhYmVsOm51bGwsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczohMCxtaW5EYXRlOm5ldyBEYXRlfSksKDAsbC5qc3hzKShDLHtjaGlsZHJlbjpbKDAsbC5qc3gpKHYse1wiZGF0YS10ZXN0aWRcIjpcImNhbGVuZGFyLWNhbmNlbC1idXR0b25cIixcImFyaWEtbGFiZWxcIjpcImNhbmNlbC1idXR0b25cIixsYWJlbDpcIkNhbmNlbFwiLHNpemU6XCJiYXNlXCIsa2luZDpcInRleHRPbmx5XCIsb25DbGljazpzfSksKDAsbC5qc3gpKHYse1wiZGF0YS10ZXN0aWRcIjpcImNhbGVuZGFyLWFwcGx5LWJ1dHRvblwiLFwiYXJpYS1sYWJlbFwiOlwiYXBwbHktYnV0dG9uXCIsbGFiZWw6XCJBcHBseVwiLHNpemU6XCJiYXNlXCIsa2luZDpcInByaW1hcnlcIixvbkNsaWNrOm59KV19KV19KSl9O2NvbnN0IEM9KDAscy5kZWZhdWx0KShmLkJveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfSAwcHhgfTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgbWFyZ2luLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfWB9O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9O1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDZ9O1xuICBib3JkZXItdG9wOiBub25lO1xuYCx2PSgwLHMuZGVmYXVsdCkoZC5CdXR0b24pYFxuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfSAke2UucHguc21hbGx9YH07XG4gIG1hcmdpbi1yaWdodDogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH1gfTtcbmAsZz0oMCxzLmRlZmF1bHQpKGYuQm94KWBcbiAgJHtofVxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmb250LWZhbWlseTogJHtwLkZvbnRTdGFja307XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgLnJlYWN0LWNhbGVuZGFyIHtcbiAgICBtaW4td2lkdGg6IDIzMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH07XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb25fX2Fycm93IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmxhcmdlfTtcbiAgICA6ZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgICB9XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uX19sYWJlbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX3ZpZXdDb250YWluZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH0gIWltcG9ydGFudDtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Q29sb3J9O1xuICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gICAgYWJiciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fdGlsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH0gIWltcG9ydGFudDtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgICBhc3BlY3QtcmF0aW86IDEvMTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgOmRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dEluYWN0aXZlfTtcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICA6aG92ZXIge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICAgIDpob3ZlciB7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5fTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgIH1cbiAgICA6Zm9jdXMge1xuICAgICAgYm9yZGVyOiAycHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX07XG4gICAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgICB9XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX190aWxlLS1ub3cge1xuICAgIGJvcmRlcjogMnB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9ICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX190aWxlLS1hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnlUZXh0fTtcbiAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgICA6Zm9jdXMge1xuICAgICAgYm9yZGVyOiAycHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX07XG4gICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgIH1cbiAgfVxuYH0sOTczNDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNjg5NSksdCl9LDYwNjI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRHJvcGRvd25NZW51PXZvaWQgMDtjb25zdCBvPW4oNTg5MyksYT1uKDY2ODkpLGk9bigxMzM1KSxsPW4oOTYzNCksYz1yKG4oNzUxOCkpLHM9big3MjYxKSx1PW4oMjc5KSxkPW4oMzQ3KTt0LkRyb3Bkb3duTWVudT0oe2xhYmVsOmUsb3B0aW9uczp0PVtbXV0scGxhY2Vob2xkZXI6bj1cIlNlbGVjdCBhbiBvcHRpb25cIixzZWxlY3RlZDpyLG9uT3B0aW9uSG92ZXI6YyxvbkNoYW5nZTpDLHJlbmRlckxhYmVsOnYsZml0Q29udGVudDpnfSk9Pnt2YXIgbSx3O2NvbnN0W3ksYl09KDAsYS51c2VTdGF0ZSkoITEpOygwLGEudXNlRWZmZWN0KSgoKCk9PnsxPT09dFswXS5sZW5ndGgmJngoITEpfSksW3RdKTtjb25zdCB4PWU9PntiKG51bGwhPWU/ZToheSl9LHtmb2N1c2VkT3B0aW9uOk8saGFuZGxlS2V5RG93bjpMfT0oMCxkLnVzZURyb3Bkb3duS2V5Ym9hcmROYXZpZ2F0aW9uKSh0LHIseSx4LEMpO3JldHVybigwLG8uanN4KShmLE9iamVjdC5hc3NpZ24oe2ZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixvbkJsdXI6ZT0+e2UuY3VycmVudFRhcmdldC5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpfHxiKCExKX0sb25LZXlEb3duOkx9LHtjaGlsZHJlbjooMCxvLmpzeHMpKGkuQm94LE9iamVjdC5hc3NpZ24oe2dhcDpcImJhc2VcIixmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsc3R5bGU6e3dpZHRoOlwiMTAwJVwifX0se2NoaWxkcmVuOltlJiYoMCxvLmpzeCkoXCJsYWJlbFwiLE9iamVjdC5hc3NpZ24oe2h0bWxGb3I6XCJkcm9wZG93bi1idXR0b25cIn0se2NoaWxkcmVuOigwLG8uanN4KShzLk9wdGlvblRpdGxlLHtjaGlsZHJlbjplfSl9KSksKDAsby5qc3hzKShwLHtjaGlsZHJlbjpbdj92KHJ8fHt0aXRsZTpuLHZhbHVlOm51bGx9LHkseCxPKTooMCxvLmpzeHMpKGgsT2JqZWN0LmFzc2lnbih7cm9sZTpcImNvbWJveGJveFwiLHRhYkluZGV4OjAsXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjpgbWVudS1vcHRpb24tJHtudWxsPT1PP3ZvaWQgMDpPLnZhbHVlfWAsXCJhcmlhLWV4cGFuZGVkXCI6eSxcImFyaWEtaGFzcG9wdXBcIjpcImxpc3Rib3hcIixcImFyaWEtY29udHJvbHNcIjpcImRyb3Bkb3duLWxpc3Rib3hcIixvbkNsaWNrOigpPT54KCksYXM6XCJidXR0b25cIixcImRhdGEtdGVzdGlkXCI6XCJkcm9wZG93bi1idXR0b25cIix0aXRsZTpudWxsIT09KG09bnVsbD09cj92b2lkIDA6ci50aXRsZSkmJnZvaWQgMCE9PW0/bTpufSx7Y2hpbGRyZW46WyhudWxsPT1yP3ZvaWQgMDpyLmljb25VcmwpJiYoMCxvLmpzeCkodS5CdXR0b25JbWFnZSx7c3JjOnIuaWNvblVybH0pLCgwLG8uanN4KShzLk9wdGlvblRpdGxlLE9iamVjdC5hc3NpZ24oe1wiYXJpYS1saXZlXCI6XCJwb2xpdGVcIixcImRhdGEtdGVzdGlkXCI6XCJzZWxlY3RlZC1vcHRpb25cIn0se2NoaWxkcmVuOm51bGwhPT0odz1udWxsPT1yP3ZvaWQgMDpyLnRpdGxlKSYmdm9pZCAwIT09dz93Om59KSksKDAsby5qc3gpKGwuSWNvbix7aWNvbjp5JiZ0WzBdLmxlbmd0aD4xP1wiQ2hldnJvblVwSWNvblwiOlwiQ2hldnJvbkRvd25JY29uXCJ9KV19KSksdC5sZW5ndGgmJnRbMF0ubGVuZ3RoPjEmJnkmJigwLG8uanN4KSh1Lk1lbnUse21lbnVJZDpcImRyb3Bkb3duLWxpc3Rib3hcIixvcHRpb25zOnQsc2VsZWN0ZWQ6cixoYW5kbGVFeHBhbmRNZW51Ongsb25PcHRpb25Ib3ZlcjpjLG9uQ2hhbmdlOkMsZml0Q29udGVudDpnLGZvY3VzZWRPcHRpb246TyxhYnNvbHV0ZVBvc2l0aW9uOiEwfSldfSldfSkpfSkpfTtjb25zdCBmPSgwLGMuZGVmYXVsdCkoaS5Cb3gpYFxuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYCxwPSgwLGMuZGVmYXVsdCkoaS5Cb3gpYGAsaD0oMCxjLmRlZmF1bHQpKGkuQm94KWBcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgYm9yZGVyOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0QmFja2dyb3VuZH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRXZWlnaHQuYm9sZH07XG4gIGdhcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUubGluZUhlaWdodC51aX07XG4gIG91dGxpbmU6IG5vbmU7XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5zbWFsbH1gfTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pO1xuICB3aWR0aDogMTAwJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAke2wuSWNvbn0ge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICB9XG5cbiAgJjpmb2N1cy13aXRoaW4ge1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Rm9jdXNlZH07XG4gIH1cbmB9LDYwMjY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDYwNjIpLHQpLG8obigyNzkpLHQpfSwyNzk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQnV0dG9uSW1hZ2U9dC5NZW51PXZvaWQgMDtjb25zdCBvPW4oNTg5MyksYT1yKG4oNjY4OSkpLGk9cihuKDc1MTgpKSxsPW4oOTYzNCksYz1uKDEzMzUpLHM9big3MjYxKTt0Lk1lbnU9KHtvcHRpb25zOmUsc2VsZWN0ZWQ6bixtZW51SWQ6cixoYW5kbGVFeHBhbmRNZW51Omksb25PcHRpb25Ib3ZlcjpsLG9uQ2hhbmdlOmMsd2lkdGg6QyxoZWlnaHQ6dixoZWFkZXI6Zyxmb2N1c2VkT3B0aW9uOm0sYWJzb2x1dGVQb3NpdGlvbjp3fSk9Pntjb25zdCB5PWU9PntudWxsPT1sfHxsKGUpfTtyZXR1cm4oMCxvLmpzeHMpKHUsT2JqZWN0LmFzc2lnbih7cm9sZTpcImxpc3Rib3hcIixmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsb25Nb3VzZUxlYXZlOigpPT57eShudWxsKX0sXCJkYXRhLXRlc3RpZFwiOlwibWVudVwiLGlkOnIsd2lkdGg6QyxoZWlnaHQ6dixhYnNvbHV0ZVBvc2l0aW9uOnd9LHtjaGlsZHJlbjpbZyYmKDAsby5qc3hzKShhLmRlZmF1bHQuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxvLmpzeCkoZix7Y2hpbGRyZW46KDAsby5qc3gpKHMuT3B0aW9uVGl0bGUse2NoaWxkcmVuOmd9KX0pLCgwLG8uanN4KShoLHt9KV19KSxlLm1hcCgoKGUscik9PigwLG8uanN4cykoYS5kZWZhdWx0LkZyYWdtZW50LHtjaGlsZHJlbjpbMCE9PXImJigwLG8uanN4KShoLHt9KSxlLm1hcCgoKGUscik9PigwLG8uanN4cykoZCxPYmplY3QuYXNzaWduKHtyb2xlOlwib3B0aW9uXCIsaXNGb2N1c2VkOihudWxsPT1tP3ZvaWQgMDptLnZhbHVlKT09PWUudmFsdWUsXCJhcmlhLXNlbGVjdGVkXCI6KG51bGw9PW4/dm9pZCAwOm4udmFsdWUpPT09ZS52YWx1ZSxhbGlnbkl0ZW1zOlwiY2VudGVyXCIsYXM6XCJidXR0b25cIixcImRhdGEtdGVzdGlkXCI6YG1lbnUtb3B0aW9uLSR7cn1gLGlkOmBtZW51LW9wdGlvbi0ke2UudmFsdWV9YCx0aXRsZTplLnRpdGxlLG9uQ2xpY2s6KCk9PntlLm92ZXJyaWRlT25DbGljaz9lLm92ZXJyaWRlT25DbGljayhlKTpjKGUpLG51bGw9PWl8fGkoKX0sb25Nb3VzZU92ZXI6KCk9PnkoZS52YWx1ZSl9LHtjaGlsZHJlbjpbKG51bGw9PWU/dm9pZCAwOmUuaWNvblVybCkmJigwLG8uanN4KSh0LkJ1dHRvbkltYWdlLHtzcmM6ZS5pY29uVXJsLHN0eWxlOnttYXJnaW5SaWdodDpcIjhweFwifX0pLCgwLG8uanN4KShzLk9wdGlvblRpdGxlLHtjaGlsZHJlbjplLnRpdGxlfSksKG51bGw9PW4/dm9pZCAwOm4udmFsdWUpPT09ZS52YWx1ZT8oMCxvLmpzeCkocCx7aWNvbjpcIkNoZWNrSWNvblwifSk6KDAsby5qc3gpKHAse2NoaWxkcmVuOigwLG8uanN4KShvLkZyYWdtZW50LHt9KX0pXX0pLHIpKSldfSxyKSkpXX0pKX07Y29uc3QgdT0oMCxpLmRlZmF1bHQpKGMuQm94KWBcbiAgd2lkdGg6ICR7KHt3aWR0aDplLGZpdENvbnRlbnQ6dH0pPT5lfHwodD9cImZpdC1jb250ZW50XCI6XCIxMDAlXCIpfTtcbiAgbWF4LWhlaWdodDogJHsoe2hlaWdodDplfSk9Pm51bGwhPWU/ZTpcImZpdC1jb250ZW50XCJ9O1xuICB0b3A6ICR7KHt0aGVtZTplfSk9PmBjYWxjKDEwMCUgKyAke2UucHgueHNtYWxsfSlgfTtcbiAgcmlnaHQ6IDA7XG4gIGJveC1zaGFkb3c6IDBweCA0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH07XG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICB6LWluZGV4OiAxMDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgYm9yZGVyOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0QmFja2dyb3VuZH07XG4gIHBvc2l0aW9uOiAkeyh7YWJzb2x1dGVQb3NpdGlvbjplfSk9PmU/XCJhYnNvbHV0ZVwiOlwiaW5pdGlhbFwifTtcbmAsZD0oMCxpLmRlZmF1bHQpKGMuQm94KWBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYm9yZGVyOiAkeyh7aXNGb2N1c2VkOmUsdGhlbWU6dH0pPT5lP2AxcHggc29saWQgJHt0LnBhbGV0dGUuYm9yZGVyTmV1dHJhbH1gOlwiMXB4IHNvbGlkIHRyYW5zcGFyZW50XCJ9O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgb3V0bGluZTogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5zbWFsbH1gfTtcbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQyfTtcbiAgfVxuYCxmPSgwLGkuZGVmYXVsdCkoYy5Cb3gpYFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0SGVscH07XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5zbWFsbH1gfTtcbmAscD0oMCxpLmRlZmF1bHQpKGwuSWNvbilgXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuYCxoPSgwLGkuZGVmYXVsdCkoYy5Cb3gpYFxuICBib3JkZXItdG9wOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0QmFja2dyb3VuZH07XG5gO3QuQnV0dG9uSW1hZ2U9aS5kZWZhdWx0LmltZ2BcbiAgaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnhsYXJnZX07XG4gIHdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnhsYXJnZX07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbmB9LDcyNjE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC51c2VUb29sdGlwPXQuaXNFbGVtZW50T3ZlcmZsb3duPXQuT3B0aW9uVGl0bGU9dm9pZCAwO2NvbnN0IGE9big1ODkzKSxpPW4oNjY4OSksbD1uKDc3NjkpLGM9big5NTA3KSxzPW8obig3NTE4KSk7dC5PcHRpb25UaXRsZT1lPT57dmFye2NoaWxkcmVuOm59PWUsbz1yKGUsW1wiY2hpbGRyZW5cIl0pO3JldHVybigwLGEuanN4KSh1LE9iamVjdC5hc3NpZ24oe3JlZjooMCx0LnVzZVRvb2x0aXApKG4pfSxvLHtjaGlsZHJlbjpufSkpfTtjb25zdCB1PSgwLHMuZGVmYXVsdCkobC5UZXh0KWBcbiAgJHtjLk1peGlucy50ZXh0T3ZlcmZsb3d9O1xuICBtYXJnaW4tbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuYDtmdW5jdGlvbiBkKGUpe3JldHVybiBlLnNjcm9sbEhlaWdodD5lLmNsaWVudEhlaWdodHx8ZS5zY3JvbGxXaWR0aD5lLmNsaWVudFdpZHRofXQuaXNFbGVtZW50T3ZlcmZsb3duPWQsdC51c2VUb29sdGlwPWU9PigwLGkudXNlQ2FsbGJhY2spKCh0PT57dCYmZSYmZCh0KSYmKHQudGl0bGU9ZSl9KSxbXSl9LDcwMDY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5JY29uPXZvaWQgMDtjb25zdCBhPW4oNTg5MyksaT1vKG4oNzUxOCkpLGw9bigxMzM1KSxjPW4oOTUwNykscz1uKDM0NzEpLHU9big5NjY5KTt0Lkljb249KDAsaS5kZWZhdWx0KSgoZT0+e3ZhcntpY29uOnQsY2hpbGRyZW46bixzaXplOm89XCJiYXNlXCIsY29udGFpbmVyU2l6ZTppLFwiZGF0YS10ZXN0aWRcIjpsfT1lLGM9cihlLFtcImljb25cIixcImNoaWxkcmVuXCIsXCJzaXplXCIsXCJjb250YWluZXJTaXplXCIsXCJkYXRhLXRlc3RpZFwiXSk7cmV0dXJuKDAsYS5qc3gpKGYsT2JqZWN0LmFzc2lnbih7fSxjLHtpY29uU2l6ZTpvLGNvbnRhaW5lclNpemU6aXx8byxqdXN0aWZ5Q29udGVudDpcImNlbnRlclwiLGFsaWduSXRlbXM6XCJjZW50ZXJcIixcImRhdGEtdGVzdGlkXCI6bH0se2NoaWxkcmVuOnQ/KDAsYS5qc3gpKGQsT2JqZWN0LmFzc2lnbih7YXJpYUxhYmVsOmNbXCJhcmlhLWxhYmVsXCJdLGljb246dH0sYykpOm59KSl9KSlgYDtjb25zdCBkPSgwLGkuZGVmYXVsdCkoKGU9Pnt2YXJ7aWNvbjp0LGFyaWFMYWJlbDpufT1lLG89cihlLFtcImljb25cIixcImFyaWFMYWJlbFwiXSk7Y29uc3QgaT1zLkljb25TZXRbdF07cmV0dXJuKDAsYS5qc3gpKGksT2JqZWN0LmFzc2lnbih7cm9sZTpcImltZ1wiLFwiYXJpYS1sYWJlbFwiOm59LG8pKX0pKWBgLGY9KDAsaS5kZWZhdWx0KShsLkJveClgXG4gIC8qKlxuICAgKiAxLiBJbml0aWFsaXplIGxvY2FsIHZhcmlhYmxlcyB3aXRoIHJlYXNvbmFibGUgZGVmYXVsdHNcbiAgICovXG4gIC0tcHgtZGVmYXVsdDogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5iYXNlfTtcblxuICAvKipcbiAgICogMi4gSW5qZWN0IHZhcmlhbnRzIC0tID8gV2hhdCBhcmUgVmFyaWFudHNcbiAgICovXG4gICR7KDAsYy5nZXRWYXJpYW50Q1NTKSh1LnZhcmlhbnRzLHUuVmFyaWFudC5jb250YWluZXJTaXplKX1cbiAgJHsoMCxjLmdldFZhcmlhbnRDU1MpKHUudmFyaWFudHMsdS5WYXJpYW50Lmljb25TaXplKX1cblxuICB3aWR0aDogdmFyKC0tcHgtY29udGFpbmVyLCB2YXIoLS1weC1kZWZhdWx0KSk7XG4gIGhlaWdodDogdmFyKC0tcHgtY29udGFpbmVyLCB2YXIoLS1weC1kZWZhdWx0KSk7XG5cbiAgLyogU1ZHIEFzc2V0ICovXG4gICYgPiAqLFxuICAke2R9IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogdmFyKC0tcHgtaWNvbiwgdmFyKC0tcHgtZGVmYXVsdCkpO1xuICAgIGhlaWdodDogdmFyKC0tcHgtaWNvbiwgdmFyKC0tcHgtZGVmYXVsdCkpO1xuICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gIH1cbmB9LDk2Njk6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudmFyaWFudHM9dC5WYXJpYW50PXZvaWQgMDtjb25zdCByPW4oNzUxOCk7dC5WYXJpYW50PXtpY29uU2l6ZTpcImljb25TaXplXCIsY29udGFpbmVyU2l6ZTpcImNvbnRhaW5lclNpemVcIn0sdC52YXJpYW50cz17W3QuVmFyaWFudC5pY29uU2l6ZV06e3hzbWFsbDpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54c21hbGx9O1xuICAgIGAsc21hbGw6ci5jc3NgXG4gICAgICAtLXB4LWljb246ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUuc21hbGx9O1xuICAgIGAsYmFzZTpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5iYXNlfTtcbiAgICBgLGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1pY29uOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLmxhcmdlfTtcbiAgICBgLHhsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54bGFyZ2V9O1xuICAgIGAseHhsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54eGxhcmdlfTtcbiAgICBgLHh4eGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1pY29uOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnh4eGxhcmdlfTtcbiAgICBgfSxbdC5WYXJpYW50LmNvbnRhaW5lclNpemVdOnt4c21hbGw6ci5jc3NgXG4gICAgICAtLXB4LWNvbnRhaW5lcjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54c21hbGx9O1xuICAgIGAsc21hbGw6ci5jc3NgXG4gICAgICAtLXB4LWNvbnRhaW5lcjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5zbWFsbH07XG4gICAgYCxiYXNlOnIuY3NzYFxuICAgICAgLS1weC1jb250YWluZXI6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUuYmFzZX07XG4gICAgYCxsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtY29udGFpbmVyOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLmxhcmdlfTtcbiAgICBgLHhsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtY29udGFpbmVyOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnhsYXJnZX07XG4gICAgYCx4eGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1jb250YWluZXI6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueHhsYXJnZX07XG4gICAgYCx4eHhsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtY29udGFpbmVyOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnh4eGxhcmdlfTtcbiAgICBgfX19LDk2MzQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDcwMDYpLHQpfSw5Mjg1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJlbGxGaWxsZWRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5CZWxsRmlsbGVkSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3hzKShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMjBcIixoZWlnaHQ6XCIyMFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46WygwLG8uanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0xMiAyQzExLjIyOTYgMiAxMC41ODQ1IDIuNTgzNzkgMTAuNTA3OCAzLjM1MDQxQzEwLjQ5NTIgMy40NzY3NyAxMC40MDU3IDMuNTgxNTcgMTAuMjg0NiAzLjYxOTcxQzguMDY1NTQgNC4zMTg1MSA2LjQyMjM4IDYuMzM3OTYgNi4zMDAzMyA4Ljc3ODkzTDYuMTIzODIgMTIuMzA5MUM2LjA5OTM2IDEyLjc5ODIgNS44MTMzMSAxMy4yMzYyIDUuMzc1MyAxMy40NTUyTDQuNjA3MzkgMTMuODM5MkM0LjE0NzYxIDE0LjA2OTEgMy44NTcxOCAxNC41MzkgMy44NTcxOCAxNS4wNTMxVjE2LjI1QzMuODU3MTggMTYuNjI0OCA0LjE2MDk4IDE2LjkyODYgNC41MzU3NSAxNi45Mjg2SDE5LjQ2NDNDMTkuODM5MSAxNi45Mjg2IDIwLjE0MjkgMTYuNjI0OCAyMC4xNDI5IDE2LjI1VjE1LjA1MzFDMjAuMTQyOSAxNC41MzkgMTkuODUyNSAxNC4wNjkxIDE5LjM5MjcgMTMuODM5MkwxOC42MjQ3IDEzLjQ1NTJDMTguMTg2NyAxMy4yMzYyIDE3LjkwMDYgMTIuNzk4MiAxNy44NzYyIDEyLjMwOTFMMTcuNjk5NyA4Ljc3ODkzQzE3LjU3NzYgNi4zMzc5NiAxNS45MzQ0IDQuMzE4NTEgMTMuNzE1NCAzLjYxOTcyQzEzLjU5NDIgMy41ODE1NyAxMy41MDQ4IDMuNDc2NzggMTMuNDkyMiAzLjM1MDQxQzEzLjQxNTUgMi41ODM4IDEyLjc3MDQgMiAxMiAyWlwiLGZpbGw6dH0pLCgwLG8uanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk05LjI4NTcxIDE4LjI4NTdDOS4yODU3MSAxOS43ODQ4IDEwLjUwMDkgMjEgMTIgMjFDMTMuNDk5MSAyMSAxNC43MTQzIDE5Ljc4NDggMTQuNzE0MyAxOC4yODU3TDkuMjg1NzEgMTguMjg1N1pcIixmaWxsOnR9KV19KSl9fSw0NzE4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJlbGxJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5CZWxsSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNy40NzMwNiAxLjIyOTQzQzYuNTE5MyAxLjIyOTQzIDUuODcyOTEgMS45ODM5OSA1LjY1MzcxIDIuNzI2OTdDNS42NTIwNyAyLjcyOTMyIDUuNjQ5MjEgMi43MzMwMyA1LjY0NDg1IDIuNzM3NTZDNS42MzkyIDIuNzQzNDIgNS42MzI2NCAyLjc0ODk2IDUuNjI1OTkgMi43NTM1NUM1LjYxOTI2IDIuNzU4MTkgNS42MTQ1MiAyLjc2MDQgNS42MTMgMi43NjEwMkw1LjYxMjY1IDIuNzYxMTdDNS4wNTA4OCAyLjk5MjUxIDQuMzkxOTMgMy4zNjAyMiAzLjg3Njk3IDQuMDMzNTdDMy4zNTgxNSA0LjcxMTk2IDMuMDE5NDkgNS42NTU3MSAzLjAxOTQ1IDYuOTc3NDlMNS42NTM3MSAyLjcyNjk3TDMuMDE5NDUgNi45Nzc3NkMzLjAxODY2IDguMzAxNjUgMi44Nzg3MSA5LjAzMTMgMi42NzA5MSA5LjUzNDM5QzIuNDg4NzkgOS45NzUzMSAyLjI0ODg5IDEwLjI2NTggMS45MTIgMTAuNjczOEwxLjkxMTg1IDEwLjY3NEMxLjg2MjYzIDEwLjczMzYgMS44MTEzNSAxMC43OTU3IDEuNzU3ODcgMTAuODYxMkMxLjE0OTIzIDExLjYwNiAxLjcyNzI5IDEyLjY0MTkgMi42NTk4NiAxMi42NDE5SDUuMDkwMTlDNS4yMTE5MSAxMi45OCA1LjQwNzI2IDEzLjI5MDYgNS42NjYxOCAxMy41NDk1QzYuMTI4MjcgMTQuMDExNiA2Ljc1NDk5IDE0LjI3MTIgNy40MDg0OCAxNC4yNzEyQzguMDYxOTcgMTQuMjcxMiA4LjY4ODcgMTQuMDExNiA5LjE1MDc4IDEzLjU0OTVDOS40MDk3MSAxMy4yOTA2IDkuNjA1MDUgMTIuOTggOS43MjY3OCAxMi42NDE5SDEyLjI4OTRDMTMuMjIzNCAxMi42NDE5IDEzLjc5MiAxMS42MDA4IDEzLjE4ODQgMTAuODYxM0wxMy4xODgzIDEwLjg2MTJDMTMuMTM0OCAxMC43OTU3IDEzLjA4MzUgMTAuNzMzNiAxMy4wMzQyIDEwLjY3NEMxMi42OTczIDEwLjI2NTkgMTIuNDU3NCA5Ljk3NTQgMTIuMjc1NSA5LjUzNDUxQzEyLjA2NzggOS4wMzE0NyAxMS45MjgyIDguMzAxODIgMTEuOTI4MiA2Ljk3Nzc2QzExLjkyODIgNS42NTY4OCAxMS41ODkxIDQuNzEyOTkgMTEuMDcwMyA0LjAzNDMzQzEwLjU1NTMgMy4zNjA3NSA5Ljg5NjUyIDIuOTkyMzQgOS4zMzQ5OSAyLjc2MTE1TDkuMzM0NjcgMi43NjEwMkM5LjMzNDA5IDIuNzYwNzkgOS4zMjk4MiAyLjc1ODg4IDkuMzIzMTMgMi43NTQyNEM5LjMxNjU1IDIuNzQ5NjcgOS4zMDk4MSAyLjc0Mzk0IDkuMzAzODIgMi43Mzc3QzkuMjk4NzUgMi43MzI0MSA5LjI5NTQ1IDIuNzI4MDMgOS4yOTM2MyAyLjcyNTMxQzkuMDcyNjQgMS45ODM3OCA4LjQyNjkxIDEuMjI5NDMgNy40NzMwNiAxLjIyOTQzWk04LjY4NjU0IDEyLjY0MTlINi4xMzA0MkM2LjE4NzYgMTIuNzI5NSA2LjI1NDAzIDEyLjgxMTUgNi4zMjkxIDEyLjg4NjZDNi42MTUzNyAxMy4xNzI5IDcuMDAzNjMgMTMuMzMzNyA3LjQwODQ4IDEzLjMzMzdDNy44MTMzMyAxMy4zMzM3IDguMjAxNiAxMy4xNzI5IDguNDg3ODcgMTIuODg2NkM4LjU2MjkzIDEyLjgxMTUgOC42MjkzNyAxMi43Mjk1IDguNjg2NTQgMTIuNjQxOVpNNi41NTE0NSAyLjk5NzE2QzYuNjk1NzEgMi41MDA4NSA3LjA3MTIxIDIuMTY2OTMgNy40NzMwNiAyLjE2NjkzQzcuODc0OTIgMi4xNjY5MyA4LjI1MDUgMi41MDA2MSA4LjM5NjYgMi45OTc4NUw4LjM5Njk1IDIuOTk5MDRDOC40ODQ5OSAzLjI5NTc1IDguNzI4NDMgMy41MjUzOCA4Ljk3ODA5IDMuNjI4MDZDOS40NTYyNSAzLjgyNDkyIDkuOTQ4OTQgNC4xMTExOSAxMC4zMjU1IDQuNjAzNzNDMTAuNjk4MiA1LjA5MTE5IDEwLjk5MDcgNS44MjQ4NiAxMC45OTA3IDYuOTc3NzZDMTAuOTkwNyA4LjM1NTA2IDExLjEzMzcgOS4yMjU1IDExLjQwODkgOS44OTIxN0MxMS42NDgzIDEwLjQ3MjMgMTEuOTgyMyAxMC44NzQ5IDEyLjMxNjcgMTEuMjc4QzEyLjM2NTMgMTEuMzM2NiAxMi40MTM5IDExLjM5NTEgMTIuNDYyMiAxMS40NTQyQzEyLjUwMTYgMTEuNTAyNSAxMi41MDQ2IDExLjU1NTIgMTIuNDc5MyAxMS42MDVDMTIuNDU1MyAxMS42NTI0IDEyLjM5OTYgMTEuNzA0NCAxMi4yODk0IDExLjcwNDRIMi42NTk4NkMyLjU0NjA0IDExLjcwNDQgMi40ODk1NSAxMS42NTA5IDIuNDY1ODggMTEuNjA0NUMyLjQ0MTE5IDExLjU1NjIgMi40NDMyNSAxMS41MDQgMi40ODM4IDExLjQ1NDRMMi40ODM4MyAxMS40NTQ0QzIuNTMyMTUgMTEuMzk1MiAyLjU4MDc1IDExLjMzNjYgMi42MjkzNCAxMS4yNzgxTDIuNjI5NDYgMTEuMjc3OUMyLjk2Mzg5IDEwLjg3NDggMy4yOTc4NSAxMC40NzIzIDMuNTM3NCA5Ljg5MjI5QzMuODEyNzMgOS4yMjU3MSAzLjk1NjE1IDguMzU1MzMgMy45NTY5NSA2Ljk3ODAzVjYuOTc3NzZDMy45NTY5NSA1LjgyMzQxIDQuMjQ5MjggNS4wODk5OSA0LjYyMTY1IDQuNjAzMDlDNC45OTc5MiA0LjExMTEgNS40OTA0NCAzLjgyNTM3IDUuOTY5NjMgMy42MjgwNUM2LjIxNjYxIDMuNTI2NDUgNi40NjI1NyAzLjMwMDAyIDYuNTUxMTEgMi45OTgzM0w2LjU1MTQ1IDIuOTk3MTZaXCIsZmlsbDp0LHJvbGU6XCJpbWdcIn0pfSkpfX0sODI2NTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Ccm9rZW5MaW5rSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuQnJva2VuTGlua0ljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4cykoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjMyXCIsaGVpZ2h0OlwiMzJcIix2aWV3Qm94OlwiMCAwIDMyIDMyXCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOlsoMCxvLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNi4zMzM1IDMuNzAwMkM2LjA1NzM1IDMuNzAwMiA1LjgzMzUgMy45MjQwNSA1LjgzMzUgNC4yMDAyVjI3LjgwMDJDNS44MzM1IDI4LjA3NjMgNi4wNTczNSAyOC4zMDAyIDYuMzMzNSAyOC4zMDAySDI1LjY2NjhDMjUuOTQzIDI4LjMwMDIgMjYuMTY2OCAyOC4wNzYzIDI2LjE2NjggMjcuODAwMlYxMi4yMzM1SDE4LjEzMzVDMTcuODU3NCAxMi4yMzM1IDE3LjYzMzUgMTIuMDA5NyAxNy42MzM1IDExLjczMzVWMy43MDAySDYuMzMzNVpNMTguNjMzNSA0LjQwNzNMMjUuNDU5NyAxMS4yMzM1SDE4LjYzMzVWNC40MDczWk00LjgzMzUgNC4yMDAyQzQuODMzNSAzLjM3MTc3IDUuNTA1MDcgMi43MDAyIDYuMzMzNSAyLjcwMDJIMTguMTMzNUMxOC4yNjYxIDIuNzAwMiAxOC4zOTMzIDIuNzUyODcgMTguNDg3IDIuODQ2NjRMMjcuMDIwNCAxMS4zOEMyNy4xMTQxIDExLjQ3MzcgMjcuMTY2OCAxMS42MDA5IDI3LjE2NjggMTEuNzMzNVYyNy44MDAyQzI3LjE2NjggMjguNjI4NiAyNi40OTUzIDI5LjMwMDIgMjUuNjY2OCAyOS4zMDAySDYuMzMzNUM1LjUwNTA3IDI5LjMwMDIgNC44MzM1IDI4LjYyODYgNC44MzM1IDI3LjgwMDJWNC4yMDAyWlwiLGZpbGw6dH0pLCgwLG8uanN4KShcInBhdGhcIix7ZDpcIk0xNC4yNDggMjEuOTA4NFYyMS44NDA5QzE0LjI1MjggMjEuNDAwNiAxNC4yOTY2IDIxLjA1MDIgMTQuMzc5NCAyMC43ODk4QzE0LjQ2NDcgMjAuNTI5NCAxNC41ODU0IDIwLjMxODcgMTQuNzQxNyAyMC4xNTc3QzE0Ljg5NzkgMTkuOTk2NyAxNS4wODYxIDE5Ljg0OTkgMTUuMzA2MyAxOS43MTczQzE1LjQ0ODMgMTkuNjI3NCAxNS41NzYyIDE5LjUyNjggMTUuNjg5OCAxOS40MTU1QzE1LjgwMzQgMTkuMzA0MiAxNS44OTM0IDE5LjE3NjQgMTUuOTU5NyAxOS4wMzJDMTYuMDI2IDE4Ljg4NzUgMTYuMDU5MSAxOC43Mjc3IDE2LjA1OTEgMTguNTUyNkMxNi4wNTkxIDE4LjM0MTkgMTYuMDA5NCAxOC4xNTk2IDE1LjkxIDE4LjAwNTdDMTUuODEwNSAxNy44NTE4IDE1LjY3OCAxNy43MzM0IDE1LjUxMjMgMTcuNjUwNkMxNS4zNDg5IDE3LjU2NTMgMTUuMTY2NiAxNy41MjI3IDE0Ljk2NTQgMTcuNTIyN0MxNC43ODMxIDE3LjUyMjcgMTQuNjA5MSAxNy41NjA2IDE0LjQ0MzQgMTcuNjM2NEMxNC4yNzc2IDE3LjcxMjEgMTQuMTQwMyAxNy44MzA1IDE0LjAzMTQgMTcuOTkxNUMxMy45MjI1IDE4LjE1MDEgMTMuODU5OCAxOC4zNTQ5IDEzLjg0MzIgMTguNjA1OEgxMi43NjM3QzEyLjc4MDIgMTguMTc5NyAxMi44ODggMTcuODE5OCAxMy4wODY4IDE3LjUyNjNDMTMuMjg1NyAxNy4yMzA0IDEzLjU0ODUgMTcuMDA2NiAxMy44NzUyIDE2Ljg1NTFDMTQuMjA0MiAxNi43MDM2IDE0LjU2NzYgMTYuNjI3OCAxNC45NjU0IDE2LjYyNzhDMTUuNDAxIDE2LjYyNzggMTUuNzgyMSAxNi43MDk1IDE2LjEwODggMTYuODcyOUMxNi40MzU1IDE3LjAzMzkgMTYuNjg4OSAxNy4yNTk5IDE2Ljg2ODggMTcuNTUxMUMxNy4wNTExIDE3Ljg0IDE3LjE0MjIgMTguMTc3MyAxNy4xNDIyIDE4LjU2MzJDMTcuMTQyMiAxOC44Mjg0IDE3LjEwMDggMTkuMDY3NSAxNy4wMTc5IDE5LjI4MDVDMTYuOTM1MSAxOS40OTEyIDE2LjgxNjcgMTkuNjc5NSAxNi42NjI4IDE5Ljg0NTJDMTYuNTExMyAyMC4wMTA5IDE2LjMyOSAyMC4xNTc3IDE2LjExNTkgMjAuMjg1NUMxNS45MTQ3IDIwLjQxMSAxNS43NTE0IDIwLjU0MTIgMTUuNjI1OSAyMC42NzYxQzE1LjUwMjggMjAuODExMSAxNS40MTI4IDIwLjk3MDkgMTUuMzU2IDIxLjE1NTVDMTUuMjk5MiAyMS4zNDAyIDE1LjI2ODQgMjEuNTY4NyAxNS4yNjM3IDIxLjg0MDlWMjEuOTA4NEgxNC4yNDhaTTE0Ljc4NDMgMjQuMDY3NUMxNC41OTAxIDI0LjA2NzUgMTQuNDIzMiAyMy45OTg4IDE0LjI4MzYgMjMuODYxNUMxNC4xNDM5IDIzLjcyMTggMTQuMDc0IDIzLjU1MzcgMTQuMDc0IDIzLjM1NzJDMTQuMDc0IDIzLjE2MzEgMTQuMTQzOSAyMi45OTc0IDE0LjI4MzYgMjIuODYwMUMxNC40MjMyIDIyLjcyMDQgMTQuNTkwMSAyMi42NTA2IDE0Ljc4NDMgMjIuNjUwNkMxNC45NzYgMjIuNjUwNiAxNS4xNDE3IDIyLjcyMDQgMTUuMjgxNCAyMi44NjAxQzE1LjQyMzUgMjIuOTk3NCAxNS40OTQ1IDIzLjE2MzEgMTUuNDk0NSAyMy4zNTcyQzE1LjQ5NDUgMjMuNDg3NSAxNS40NjE0IDIzLjYwNyAxNS4zOTUxIDIzLjcxNTlDMTUuMzMxMSAyMy44MjI0IDE1LjI0NTkgMjMuOTA3NyAxNS4xMzk0IDIzLjk3MTZDMTUuMDMyOCAyNC4wMzU1IDE0LjkxNDUgMjQuMDY3NSAxNC43ODQzIDI0LjA2NzVaXCIsZmlsbDp0fSldfSkpfX0sNjQ0NzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DaGV2cm9uRG93bkljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkNoZXZyb25Eb3duSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMjRcIixoZWlnaHQ6XCIyNFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwifSx7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLE9iamVjdC5hc3NpZ24oe2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNS4wNTI4MiA5Ljg4NzA3QzUuMzM2MTIgOS41ODQ4OSA1LjgxMDc1IDkuNTY5NTggNi4xMTI5MyA5Ljg1Mjg3TDEyIDE1LjM3MkwxNy44ODcgOS44NTI4N0MxOC4xODkyIDkuNTY5NTggMTguNjYzOCA5LjU4NDg5IDE4Ljk0NzEgOS44ODcwN0MxOS4yMzA0IDEwLjE4OTMgMTkuMjE1MSAxMC42NjM5IDE4LjkxMjkgMTAuOTQ3MkwxMi41MTI5IDE2Ljk0NzJDMTIuMjI0NCAxNy4yMTc2IDExLjc3NTUgMTcuMjE3NiAxMS40ODcgMTYuOTQ3Mkw1LjA4NzAyIDEwLjk0NzJDNC43ODQ4NCAxMC42NjM5IDQuNzY5NTIgMTAuMTg5MyA1LjA1MjgyIDkuODg3MDdaXCIsZmlsbDp0fSxuKSl9KSl9fSwyMTQ3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoZXZyb25MZWZ0SWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuQ2hldnJvbkxlZnRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIyNFwiLGhlaWdodDpcIjI0XCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCJ9LHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIsT2JqZWN0LmFzc2lnbih7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0xNC4xMTI3IDUuMDUyNzJDMTQuNDE0OSA1LjMzNjAxIDE0LjQzMDIgNS44MTA2NCAxNC4xNDY5IDYuMTEyODJMOC42Mjc4NCAxMS45OTk5TDE0LjE0NjkgMTcuODg2OUMxNC40MzAyIDE4LjE4OTEgMTQuNDE0OSAxOC42NjM3IDE0LjExMjcgMTguOTQ3QzEzLjgxMDYgMTkuMjMwMyAxMy4zMzU5IDE5LjIxNSAxMy4wNTI2IDE4LjkxMjhMNy4wNTI2NCAxMi41MTI4QzYuNzgyMTggMTIuMjI0MyA2Ljc4MjE4IDExLjc3NTQgNy4wNTI2NCAxMS40ODY5TDEzLjA1MjYgNS4wODY5MUMxMy4zMzU5IDQuNzg0NzMgMTMuODEwNiA0Ljc2OTQyIDE0LjExMjcgNS4wNTI3MlpcIixmaWxsOnR9LG4pKX0pKX19LDI0MDI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2hldnJvblJpZ2h0SWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuQ2hldnJvblJpZ2h0SWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMjRcIixoZWlnaHQ6XCIyNFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwifSx7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLE9iamVjdC5hc3NpZ24oe2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNOS44Njk4NiA2LjY2OTcyQzEwLjE2MjggNi4zNzY4MyAxMC42Mzc2IDYuMzc2ODMgMTAuOTMwNSA2LjY2OTcyTDE1LjczMDUgMTEuNDY5N0MxNS44NzEyIDExLjYxMDQgMTUuOTUwMiAxMS44MDExIDE1Ljk1MDIgMTJDMTUuOTUwMiAxMi4xOTkgMTUuODcxMiAxMi4zODk3IDE1LjczMDUgMTIuNTMwNEwxMC45MzA1IDE3LjMzMDRDMTAuNjM3NiAxNy42MjMzIDEwLjE2MjggMTcuNjIzMyA5Ljg2OTg2IDE3LjMzMDRDOS41NzY5NiAxNy4wMzc1IDkuNTc2OTYgMTYuNTYyNiA5Ljg2OTg2IDE2LjI2OTdMMTQuMTM5NSAxMkw5Ljg2OTg2IDcuNzMwMzhDOS41NzY5NiA3LjQzNzQ5IDkuNTc2OTYgNi45NjI2MSA5Ljg2OTg2IDYuNjY5NzJaXCIsZmlsbDp0fSxuKSl9KSl9fSw0ODI1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoZXZyb25VcEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkNoZXZyb25VcEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix3aWR0aDpcIjI0XCIsaGVpZ2h0OlwiMjRcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIn0se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIixPYmplY3QuYXNzaWduKHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTUuMDUyODUgMTQuMTEyOUM1LjMzNjE1IDE0LjQxNTEgNS44MTA3OCAxNC40MzA0IDYuMTEyOTYgMTQuMTQ3MUwxMiA4LjYyODAyTDE3Ljg4NyAxNC4xNDcxQzE4LjE4OTIgMTQuNDMwNCAxOC42NjM5IDE0LjQxNTEgMTguOTQ3MiAxNC4xMTI5QzE5LjIzMDUgMTMuODEwNyAxOS4yMTUxIDEzLjMzNjEgMTguOTEzIDEzLjA1MjhMMTIuNTEzIDcuMDUyODJDMTIuMjI0NSA2Ljc4MjM2IDExLjc3NTUgNi43ODIzNiAxMS40ODcxIDcuMDUyODJMNS4wODcwNSAxMy4wNTI4QzQuNzg0ODcgMTMuMzM2MSA0Ljc2OTU2IDEzLjgxMDcgNS4wNTI4NSAxNC4xMTI5WlwiLGZpbGw6dH0sbikpfSkpfX0sMTI4MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5FeGNsYW1hdGlvbkNpcmNsZWRGaWxsZWRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5MyksYT1uKDc1MTgpLGk9big2Njg5KSxsPW4oMzQ3MSk7dC5FeGNsYW1hdGlvbkNpcmNsZWRGaWxsZWRJY29uPWU9Pnt2YXJ7c2Vjb25kYXJ5Q29sb3I6dCxjb2xvcjpuPVwiY3VycmVudENvbG9yXCJ9PWUsYz1yKGUsW1wic2Vjb25kYXJ5Q29sb3JcIixcImNvbG9yXCJdKTtjb25zdCBzPSgwLGkudXNlQ29udGV4dCkoYS5UaGVtZUNvbnRleHQpLnNlbGVjdGVkU2NoZW1lO3JldHVybiB0fHwodD1cImRhcmtcIj09PXM/bC5Db2xvci5kYXJrR3JheTU6bC5Db2xvci53aGl0ZSksKDAsby5qc3hzKShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxN1wiLHZpZXdCb3g6XCIwIDAgMTYgMTdcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYyx7Y2hpbGRyZW46WygwLG8uanN4KShcInBhdGhcIix7ZDpcIk03Ljk5OTg4IDE1LjMzMTdDMTEuNzcyOSAxNS4zMzE3IDE0LjgzMTYgMTIuMjczMSAxNC44MzE2IDguNTAwMDdDMTQuODMxNiA0LjcyNzA0IDExLjc3MjkgMS42Njg0IDcuOTk5ODggMS42Njg0QzQuMjI2ODYgMS42Njg0IDEuMTY4MjEgNC43MjcwNCAxLjE2ODIxIDguNTAwMDdDMS4xNjgyMSAxMi4yNzMxIDQuMjI2ODYgMTUuMzMxNyA3Ljk5OTg4IDE1LjMzMTdaXCIsZmlsbDpufSksKDAsby5qc3gpKFwibWFza1wiLE9iamVjdC5hc3NpZ24oe2lkOlwicGF0aC0yLWluc2lkZS0xXzZfMjYyMDMzXCIsZmlsbDp0fSx7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTcuOTk5OTMgNC4zNzM4NEM3LjU3NTI1IDQuMzczODQgNy4yMzU2NCA0LjcyNjc2IDcuMjUxOTYgNS4xNTExM0w3LjQyMjk2IDkuNTk3MDZDNy40MzQ4OSA5LjkwNzA4IDcuNjg5NjggMTAuMTUyMyA3Ljk5OTkzIDEwLjE1MjNDOC4zMTAxOSAxMC4xNTIzIDguNTY0OTggOS45MDcwOCA4LjU3NjkgOS41OTcwNkw4Ljc0NzkgNS4xNTExM0M4Ljc2NDIyIDQuNzI2NzYgOC40MjQ2MSA0LjM3Mzg0IDcuOTk5OTMgNC4zNzM4NFpNNy45OTk5MyAxMi42NDA2QzguNDYwMjIgMTIuNjQwNiA4LjgzMzM1IDEyLjI2NzUgOC44MzMzNSAxMS44MDcyQzguODMzMzUgMTEuMzQ2OSA4LjQ2MDIyIDEwLjk3MzggNy45OTk5MyAxMC45NzM4QzcuNTM5NjQgMTAuOTczOCA3LjE2NjUgMTEuMzQ2OSA3LjE2NjUgMTEuODA3MkM3LjE2NjUgMTIuMjY3NSA3LjUzOTY0IDEyLjY0MDYgNy45OTk5MyAxMi42NDA2WlwifSl9KSksKDAsby5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTcuOTk5OTMgNC4zNzM4NEM3LjU3NTI1IDQuMzczODQgNy4yMzU2NCA0LjcyNjc2IDcuMjUxOTYgNS4xNTExM0w3LjQyMjk2IDkuNTk3MDZDNy40MzQ4OSA5LjkwNzA4IDcuNjg5NjggMTAuMTUyMyA3Ljk5OTkzIDEwLjE1MjNDOC4zMTAxOSAxMC4xNTIzIDguNTY0OTggOS45MDcwOCA4LjU3NjkgOS41OTcwNkw4Ljc0NzkgNS4xNTExM0M4Ljc2NDIyIDQuNzI2NzYgOC40MjQ2MSA0LjM3Mzg0IDcuOTk5OTMgNC4zNzM4NFpNNy45OTk5MyAxMi42NDA2QzguNDYwMjIgMTIuNjQwNiA4LjgzMzM1IDEyLjI2NzUgOC44MzMzNSAxMS44MDcyQzguODMzMzUgMTEuMzQ2OSA4LjQ2MDIyIDEwLjk3MzggNy45OTk5MyAxMC45NzM4QzcuNTM5NjQgMTAuOTczOCA3LjE2NjUgMTEuMzQ2OSA3LjE2NjUgMTEuODA3MkM3LjE2NjUgMTIuMjY3NSA3LjUzOTY0IDEyLjY0MDYgNy45OTk5MyAxMi42NDA2WlwiLGZpbGw6dH0pLCgwLG8uanN4KShcInBhdGhcIix7ZDpcIk03LjI1MTk2IDUuMTUxMTNMNS42NDg3NCA1LjIxMjc5TDUuNjQ4NzQgNS4yMTI3OUw3LjI1MTk2IDUuMTUxMTNaTTcuNDIyOTYgOS41OTcwNkw5LjAyNjE4IDkuNTM1NEw5LjAyNjE4IDkuNTM1NEw3LjQyMjk2IDkuNTk3MDZaTTguNTc2OSA5LjU5NzA2TDEwLjE4MDEgOS42NTg3Mkw4LjU3NjkgOS41OTcwNlpNOC43NDc5IDUuMTUxMTNMMTAuMzUxMSA1LjIxMjc5TDEwLjM1MTEgNS4yMTI3OUw4Ljc0NzkgNS4xNTExM1pNOC44NTUxOSA1LjA4OTQ3QzguODczODUgNS41NzQ3IDguNDg1NTMgNS45NzgyNSA3Ljk5OTkzIDUuOTc4MjVWMi43Njk0M0M2LjY2NDk4IDIuNzY5NDMgNS41OTc0NCAzLjg3ODgyIDUuNjQ4NzQgNS4yMTI3OUw4Ljg1NTE5IDUuMDg5NDdaTTkuMDI2MTggOS41MzU0TDguODU1MTkgNS4wODk0N0w1LjY0ODc0IDUuMjEyNzlMNS44MTk3NCA5LjY1ODcyTDkuMDI2MTggOS41MzU0Wk03Ljk5OTkzIDguNTQ3ODZDOC41NTE3NyA4LjU0Nzg2IDkuMDA0OTggOC45ODM5NiA5LjAyNjE4IDkuNTM1NEw1LjgxOTc0IDkuNjU4NzJDNS44NjQ4IDEwLjgzMDIgNi44Mjc1OCAxMS43NTY3IDcuOTk5OTMgMTEuNzU2N1Y4LjU0Nzg2Wk02Ljk3MzY4IDkuNTM1NEM2Ljk5NDg5IDguOTgzOTYgNy40NDgwOSA4LjU0Nzg2IDcuOTk5OTMgOC41NDc4NlYxMS43NTY3QzkuMTcyMjggMTEuNzU2NyAxMC4xMzUxIDEwLjgzMDIgMTAuMTgwMSA5LjY1ODcyTDYuOTczNjggOS41MzU0Wk03LjE0NDY4IDUuMDg5NDdMNi45NzM2OCA5LjUzNTRMMTAuMTgwMSA5LjY1ODcyTDEwLjM1MTEgNS4yMTI3OUw3LjE0NDY4IDUuMDg5NDdaTTcuOTk5OTMgNS45NzgyNUM3LjUxNDM0IDUuOTc4MjUgNy4xMjYwMiA1LjU3NDcgNy4xNDQ2OCA1LjA4OTQ3TDEwLjM1MTEgNS4yMTI3OUMxMC40MDI0IDMuODc4ODIgOS4zMzQ4OSAyLjc2OTQzIDcuOTk5OTMgMi43Njk0M1Y1Ljk3ODI1Wk03LjIyODk1IDExLjgwNzJDNy4yMjg5NSAxMS4zODE0IDcuNTc0MTMgMTEuMDM2MiA3Ljk5OTkzIDExLjAzNjJWMTQuMjQ1QzkuMzQ2MzEgMTQuMjQ1IDEwLjQzNzggMTMuMTUzNiAxMC40Mzc4IDExLjgwNzJINy4yMjg5NVpNNy45OTk5MyAxMi41NzgyQzcuNTc0MTMgMTIuNTc4MiA3LjIyODk1IDEyLjIzMyA3LjIyODk1IDExLjgwNzJIMTAuNDM3OEMxMC40Mzc4IDEwLjQ2MDggOS4zNDYzMSA5LjM2OTM3IDcuOTk5OTMgOS4zNjkzN1YxMi41NzgyWk04Ljc3MDkxIDExLjgwNzJDOC43NzA5MSAxMi4yMzMgOC40MjU3MyAxMi41NzgyIDcuOTk5OTMgMTIuNTc4MlY5LjM2OTM3QzYuNjUzNTUgOS4zNjkzNyA1LjU2MjEgMTAuNDYwOCA1LjU2MjEgMTEuODA3Mkg4Ljc3MDkxWk03Ljk5OTkzIDExLjAzNjJDOC40MjU3MyAxMS4wMzYyIDguNzcwOTEgMTEuMzgxNCA4Ljc3MDkxIDExLjgwNzJINS41NjIxQzUuNTYyMSAxMy4xNTM2IDYuNjUzNTUgMTQuMjQ1IDcuOTk5OTMgMTQuMjQ1VjExLjAzNjJaXCIsZmlsbDp0LG1hc2s6XCJ1cmwoI3BhdGgtMi1pbnNpZGUtMV82XzI2MjAzMylcIn0pXX0pKX19LDY3OTU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRmlsdGVySWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuRmlsdGVySWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMlwiLGhlaWdodDpcIjdcIix2aWV3Qm94OlwiMCAwIDEyIDdcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTQgNi41QzQgNi4zNjczOSA0LjA1MjY4IDYuMjQwMjEgNC4xNDY0NSA2LjE0NjQ1QzQuMjQwMjEgNi4wNTI2OCA0LjM2NzM5IDYgNC41IDZINy41QzcuNjMyNjEgNiA3Ljc1OTc5IDYuMDUyNjggNy44NTM1NSA2LjE0NjQ1QzcuOTQ3MzIgNi4yNDAyMSA4IDYuMzY3MzkgOCA2LjVDOCA2LjYzMjYxIDcuOTQ3MzIgNi43NTk3OSA3Ljg1MzU1IDYuODUzNTVDNy43NTk3OSA2Ljk0NzMyIDcuNjMyNjEgNyA3LjUgN0g0LjVDNC4zNjczOSA3IDQuMjQwMjEgNi45NDczMiA0LjE0NjQ1IDYuODUzNTVDNC4wNTI2OCA2Ljc1OTc5IDQgNi42MzI2MSA0IDYuNVpNMiAzLjVDMiAzLjM2NzM5IDIuMDUyNjggMy4yNDAyMSAyLjE0NjQ1IDMuMTQ2NDVDMi4yNDAyMSAzLjA1MjY4IDIuMzY3MzkgMyAyLjUgM0g5LjVDOS42MzI2MSAzIDkuNzU5NzkgMy4wNTI2OCA5Ljg1MzU1IDMuMTQ2NDVDOS45NDczMiAzLjI0MDIxIDEwIDMuMzY3MzkgMTAgMy41QzEwIDMuNjMyNjEgOS45NDczMiAzLjc1OTc5IDkuODUzNTUgMy44NTM1NUM5Ljc1OTc5IDMuOTQ3MzIgOS42MzI2MSA0IDkuNSA0SDIuNUMyLjM2NzM5IDQgMi4yNDAyMSAzLjk0NzMyIDIuMTQ2NDUgMy44NTM1NUMyLjA1MjY4IDMuNzU5NzkgMiAzLjYzMjYxIDIgMy41Wk0wIDAuNUMwIDAuMzY3MzkyIDAuMDUyNjc4NSAwLjI0MDIxNSAwLjE0NjQ0NyAwLjE0NjQ0N0MwLjI0MDIxNSAwLjA1MjY3ODUgMC4zNjczOTIgMCAwLjUgMEgxMS41QzExLjYzMjYgMCAxMS43NTk4IDAuMDUyNjc4NSAxMS44NTM2IDAuMTQ2NDQ3QzExLjk0NzMgMC4yNDAyMTUgMTIgMC4zNjczOTIgMTIgMC41QzEyIDAuNjMyNjA4IDExLjk0NzMgMC43NTk3ODUgMTEuODUzNiAwLjg1MzU1M0MxMS43NTk4IDAuOTQ3MzIxIDExLjYzMjYgMSAxMS41IDFIMC41QzAuMzY3MzkyIDEgMC4yNDAyMTUgMC45NDczMjEgMC4xNDY0NDcgMC44NTM1NTNDMC4wNTI2Nzg1IDAuNzU5Nzg1IDAgMC42MzI2MDggMCAwLjVaXCIsZmlsbDp0fSl9KSl9fSwxMTc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRmxvcHB5RGlza0ljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkZsb3BweURpc2tJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjEyXCIsaGVpZ2h0OlwiMTJcIix2aWV3Qm94OlwiMCAwIDEyIDEyXCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZDpcIk0xLjg3NSAyLjE4NzVDMS44NzUgMi4xNTI5OCAxLjkwMjk4IDIuMTI1IDEuOTM3NSAyLjEyNUg4LjIzMDM5QzguMjQ2OTcgMi4xMjUgOC4yNjI4NyAyLjEzMTU4IDguMjc0NTkgMi4xNDMzMUw5Ljk4MTY5IDMuODUwNDFDOS45OTM0MSAzLjg2MjEzIDEwIDMuODc4MDMgMTAgMy44OTQ2MVYxMC4xODc1QzEwIDEwLjIyMiA5Ljk3MjAyIDEwLjI1IDkuOTM3NSAxMC4yNUgxLjkzNzVDMS45MDI5OCAxMC4yNSAxLjg3NSAxMC4yMjIgMS44NzUgMTAuMTg3NVYyLjE4NzVaTTEuOTM3NSAxLjI1QzEuNDE5NzMgMS4yNSAxIDEuNjY5NzMgMSAyLjE4NzVWMTAuMTg3NUMxIDEwLjcwNTMgMS40MTk3MyAxMS4xMjUgMS45Mzc1IDExLjEyNUg5LjkzNzVDMTAuNDU1MyAxMS4xMjUgMTAuODc1IDEwLjcwNTMgMTAuODc1IDEwLjE4NzVWMy44OTQ2MUMxMC44NzUgMy42NDU5NyAxMC43NzYyIDMuNDA3NTEgMTAuNjAwNCAzLjIzMTY5TDguODkzMzEgMS41MjQ1OUM4LjcxNzQ5IDEuMzQ4NzcgOC40NzkwMyAxLjI1IDguMjMwMzkgMS4yNUgxLjkzNzVaTTIuODQ5MjQgMy40MDgxQzIuODQ5MjQgMy4yMzc1NCAyLjk4NzUxIDMuMDk5MjcgMy4xNTgwNyAzLjA5OTI3SDcuNDgxNkM3LjY1MjE1IDMuMDk5MjcgNy43OTA0MiAzLjIzNzU0IDcuNzkwNDIgMy40MDgxVjQuNjQzMzlDNy43OTA0MiA0LjgxMzk1IDcuNjUyMTUgNC45NTIyMSA3LjQ4MTYgNC45NTIyMUgzLjE1ODA3QzIuOTg3NTEgNC45NTIyMSAyLjg0OTI0IDQuODEzOTUgMi44NDkyNCA0LjY0MzM5VjMuNDA4MVpNNC41MzY4IDYuNjM5NzdDNC44MjYzOCA2LjM1MDE5IDUuMjE5MTMgNi4xODc1MSA1LjYyODY1IDYuMTg3NTFDNi4wMzgxOCA2LjE4NzUxIDYuNDMwOTMgNi4zNTAxOSA2LjcyMDUxIDYuNjM5NzdDNy4wMTAwOSA2LjkyOTM1IDcuMTcyNzcgNy4zMjIxIDcuMTcyNzcgNy43MzE2M0M3LjE3Mjc3IDguMTQxMTUgNy4wMTAwOSA4LjUzMzkgNi43MjA1MSA4LjgyMzQ4QzYuNDMwOTMgOS4xMTMwNiA2LjAzODE4IDkuMjc1NzQgNS42Mjg2NSA5LjI3NTc0QzUuMjE5MTMgOS4yNzU3NCA0LjgyNjM4IDkuMTEzMDYgNC41MzY4IDguODIzNDhDNC4yNDcyMiA4LjUzMzkgNC4wODQ1NCA4LjE0MTE1IDQuMDg0NTQgNy43MzE2M0M0LjA4NDU0IDcuMzIyMSA0LjI0NzIyIDYuOTI5MzUgNC41MzY4IDYuNjM5NzdaXCIsZmlsbDp0LHJvbGU6XCJpbWdcIn0pfSkpfX0sNTI5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkZyYWdtZW50c0ljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkZyYWdtZW50c0ljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMjBcIixoZWlnaHQ6XCIyMFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTguODAwMDEgNC44MDAwMkg0LjgwMDAxQzMuOTE3NjEgNC44MDAwMiAzLjIwMDAxIDUuNTE3NjIgMy4yMDAwMSA2LjQwMDAyVjEwLjRDMy4yMDAwMSAxMS4yODI0IDMuOTE3NjEgMTIgNC44MDAwMSAxMkg4LjgwMDAxQzkuNjgyNDEgMTIgMTAuNCAxMS4yODI0IDEwLjQgMTAuNFY2LjQwMDAyQzEwLjQgNS41MTc2MiA5LjY4MjQxIDQuODAwMDIgOC44MDAwMSA0LjgwMDAyWk0yMC4zNTkyIDYuNDY4ODJMMTcuNTMxMiAzLjY0MDAyQzE2LjkwOCAzLjAxNjAyIDE1Ljg5MiAzLjAxNjAyIDE1LjI2ODggMy42NDAwMkwxMi40NDA4IDYuNDY4ODJDMTEuODE2OCA3LjA5MjgyIDExLjgxNjggOC4xMDcyMiAxMi40NDA4IDguNzMxMjJMMTUuMjY4OCAxMS41NkMxNS41ODA4IDExLjg3MiAxNS45OTA0IDEyLjAyOCAxNi40IDEyLjAyOEMxNi44MDk2IDEyLjAyOCAxNy4yMTkyIDExLjg3MiAxNy41MzEyIDExLjU2TDIwLjM1OTIgOC43MzEyMkMyMC45ODMyIDguMTA3MjIgMjAuOTgzMiA3LjA5MjgyIDIwLjM1OTIgNi40Njg4MlpNOC44MDAwMSAxMy42SDQuODAwMDFDMy45MTc2MSAxMy42IDMuMjAwMDEgMTQuMzE3NiAzLjIwMDAxIDE1LjJWMTkuMkMzLjIwMDAxIDIwLjA4MjQgMy45MTc2MSAyMC44IDQuODAwMDEgMjAuOEg4LjgwMDAxQzkuNjgyNDEgMjAuOCAxMC40IDIwLjA4MjQgMTAuNCAxOS4yVjE1LjJDMTAuNCAxNC4zMTc2IDkuNjgyNDEgMTMuNiA4LjgwMDAxIDEzLjZaTTE3LjYgMTMuNkgxMy42QzEyLjcxNzYgMTMuNiAxMiAxNC4zMTc2IDEyIDE1LjJWMTkuMkMxMiAyMC4wODI0IDEyLjcxNzYgMjAuOCAxMy42IDIwLjhIMTcuNkMxOC40ODI0IDIwLjggMTkuMiAyMC4wODI0IDE5LjIgMTkuMlYxNS4yQzE5LjIgMTQuMzE3NiAxOC40ODI0IDEzLjYgMTcuNiAxMy42WlwiLGZpbGw6dH0pfSkpfX0sNzc4ODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5MaWdodEJ1bGJGaWxsZWRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5MaWdodEJ1bGJGaWxsZWRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeHMpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMFwiLGhlaWdodDpcIjEyXCIsdmlld0JveDpcIjAgMCAxMCAxMlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjpbKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTEuODMgMS4zMTAwOEMyLjI0NDA5IDAuODkxNjY3IDIuNzM3NjggMC41NjAzMDcgMy4yODE3NCAwLjMzNTUwNEMzLjgyNTgxIDAuMTEwNzAxIDQuNDA5MzQgLTAuMDAzMDAzMzMgNC45OTggMC4wMDEwODI5MUM2LjE4NjI4IC0wLjAwMzEwNzg1IDcuMzI5MDUgMC40NTc3MzMgOC4xODIgMS4yODUwOEM4LjU5ODgxIDEuNjg3MTkgOC45MzA0NiAyLjE2OTAzIDkuMTU3MjMgMi43MDE5NEM5LjM4NCAzLjIzNDg1IDkuNTAxMjUgMy44MDc5MyA5LjUwMiA0LjM4NzA4QzkuNTAyIDUuNjgwMDggOC45MTcgNi44MzAwOCA3Ljg4MyA3LjgyNTA4TDcuNTc3IDkuMDAwMDhIMi40NjZMMi4yMzYgOC4wMzcwOEMxLjE1NCA2LjkwNzA4IDAuNTU2IDUuODE5MDggMC41IDQuNTgyMDhWNC41NDQwOEMwLjU0IDMuMjQ4MDggMS4wMzMgMi4xMjEwOCAxLjgzMSAxLjMxMTA4TDEuODMgMS4zMTAwOFpcIixmaWxsOnR9KSwoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNMi43MDQxIDEwTDIuOTM3MSAxMC45NzhMMi45NDUxIDExQzMuMDQ1MSAxMS4yOTcgMy4yMzcxIDExLjU0NCAzLjQ3OTEgMTEuNzE3QzMuNzMwMSAxMS44OTcgNC4wMzcxIDExLjk5OSA0LjM2MTEgMTEuOTk5SDQuMzYzMUw1Ljc0NjEgMTEuOTk1TDUuNzY3MSAxMS45OTNDNi4wNzU4NyAxMS45NjY5IDYuMzY5MTMgMTEuODQ2NSA2LjYwNzEgMTEuNjQ4QzYuODM4MSAxMS40NTQgNy4wMTMxIDExLjE4OCA3LjA4NzEgMTAuODc0TDcuMzE2MSAxMEgyLjcwNDFWMTBaXCIsZmlsbDp0fSldfSkpfX0sMzcwMzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5MaWdodEJ1bGJPdXRsaW5lZEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkxpZ2h0QnVsYk91dGxpbmVkSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMFwiLGhlaWdodDpcIjEyXCIsdmlld0JveDpcIjAgMCAxMCAxMlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNNC45OTc2NiAwLjAwMTAwMTQ5QzMuNzY4NjYgMC4wMDEwMDE0OSAyLjY0NzY2IDAuNDgyMDAyIDEuODI5NjYgMS4zMTFDMS4wMzE2NiAyLjEyMSAwLjUzOTY1NyAzLjI0OCAwLjQ5OTY1NyA0LjU0NEwwLjQ5ODY1NyA0LjU2M1Y0LjU4M0MwLjU1NTY1NyA1LjgxOSAxLjE1MzY2IDYuOTA3IDIuMjM1NjYgOC4wMzdMMi45Mzc2NiAxMC45NzhMMi45NDQ2NiAxMUMzLjA0NDY2IDExLjI5NyAzLjIzNjY2IDExLjU0NCAzLjQ3ODY2IDExLjcxN0MzLjcyOTY2IDExLjg5NyA0LjAzNjY2IDExLjk5OSA0LjM2MTY2IDExLjk5OUw1Ljc0NTY2IDExLjk5NUw1Ljc2NjY2IDExLjk5M0M2LjA3NTQyIDExLjk2NjkgNi4zNjg2OSAxMS44NDY1IDYuNjA2NjYgMTEuNjQ4QzYuODM3NjYgMTEuNDU0IDcuMDEyNjYgMTEuMTg4IDcuMDg2NjYgMTAuODc0TDcuODgyNjYgNy44MjRDOC45MTY2NiA2LjgzIDkuNTAwNjYgNS42OCA5LjUwMDY2IDQuMzg3QzkuNDk5OTEgMy44MDc4NSA5LjM4MjY2IDMuMjM0NzcgOS4xNTU4OSAyLjcwMTg2QzguOTI5MTIgMi4xNjg5NSA4LjU5NzQ2IDEuNjg3MTEgOC4xODA2NiAxLjI4NUM3LjMyNzk2IDAuNDU3ODk0IDYuMTg1NTkgLTAuMDAyOTI3ODggNC45OTc2NiAwLjAwMTAwMTQ5Wk0yLjU0MjY2IDIuMDEzQzIuODYzNDQgMS42ODg3MSAzLjI0NTk2IDEuNDMxOTggMy42Njc2MiAxLjI1OEM0LjA4OTI4IDEuMDg0MDEgNC41NDE1MyAwLjk5NjI4MyA0Ljk5NzY2IDFDNS45MjUxNCAwLjk5NTc4NCA2LjgxNzQ0IDEuMzU0NzEgNy40ODM2NiAyQzcuODA0NzEgMi4zMDkwNCA4LjA2MDIzIDIuNjc5NTcgOC4yMzQ5NiAzLjA4OTUxQzguNDA5NjkgMy40OTk0NSA4LjUwMDA1IDMuOTQwMzggOC41MDA2NiA0LjM4NkM4LjUwMDY2IDUuMzc3IDguMDQ3NjYgNi4zMTIgNy4wOTY2NiA3LjE5MUw2Ljk4ODY2IDcuMjkxTDYuNTQyNjYgOUgzLjQ5MzY2TDMuMTQ0NjYgNy41MzZMMy4wNDc2NiA3LjQzNkMxLjk5OTY2IDYuMzcyIDEuNTQ3NjYgNS40OCAxLjQ5ODY2IDQuNTU3QzEuNTM2NjYgMy41MDkgMS45MzI2NiAyLjYzMiAyLjU0MjY2IDIuMDE0VjIuMDEzWk0zLjczMjY2IDEwSDYuMjgyNjZMNi4xMTc2NiAxMC42MjdMNi4xMTQ2NiAxMC42NEM2LjA5MjExIDEwLjczNDIgNi4wMzk0NCAxMC44MTg1IDUuOTY0NjYgMTAuODhDNS44ODg3MyAxMC45NDM1IDUuNzk1OTUgMTAuOTgzNCA1LjY5NzY2IDEwLjk5NUw0LjM2MDY2IDExQzQuMjUzMjEgMTEuMDAwMyA0LjE0ODMzIDEwLjk2NzEgNC4wNjA2NiAxMC45MDVDMy45ODc3IDEwLjg1MzYgMy45MzEzOSAxMC43ODIgMy44OTg2NiAxMC42OTlMMy43MzE2NiAxMEgzLjczMjY2WlwiLGZpbGw6dH0pfSkpfX0sODMxMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Mb2NrZWRDbG9zZWRGaWxsZWRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5Mb2NrZWRDbG9zZWRGaWxsZWRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZDpcIk01LjAwMDAzIDQuNjM2MjNDNS4wMDAwMyAzLjc2MDUyIDUuMjQyMjIgMy4xMDU2MSA1LjY0MzI3IDIuNjczNzhDNi4wMzkzOCAyLjI0NzI3IDYuNjQ1ODUgMS45Nzg1MiA3LjUwMTQzIDEuOTc4NTJDOC4zNTc0OCAxLjk3ODUyIDguOTYzMDkgMi4yNDY3MyA5LjM1ODI3IDIuNjcyM0M5Ljc1ODQxIDMuMTAzMjEgMTAgMy43NTcyOSAxMCA0LjYzMzQ2VjYuNTAwMjFIMTFWNC42MzM0NkMxMSAzLjU3OTE3IDEwLjcwNzYgMi42NTU3OCAxMC4wOTExIDEuOTkxODNDOS40Njk1NSAxLjMyMjU0IDguNTc1ODYgMC45Nzg1MTYgNy41MDE0MyAwLjk3ODUxNkM2LjQyNjc4IDAuOTc4NTE2IDUuNTMyNTUgMS4zMjM1IDQuOTEwNTIgMS45OTMyOEM0LjI5MzQyIDIuNjU3NzUgNC4wMDAwMyAzLjU4MTY5IDQuMDAwMDMgNC42MzYyM1Y2LjUwMDIxSDUuMDAwMDNWNC42MzYyM1pNMyA2LjUwMDIxQzIuNzIzODYgNi41MDAyMSAyLjUgNi43MjQwNyAyLjUgNy4wMDAyMVYxMy4wMDAyQzIuNSAxMy4yNzY0IDIuNzIzODYgMTMuNTAwMiAzIDEzLjUwMDJIMTJDMTIuMjc2MSAxMy41MDAyIDEyLjUgMTMuMjc2NCAxMi41IDEzLjAwMDJWNy4wMDAyMUMxMi41IDYuNzI0MDcgMTIuMjc2MSA2LjUwMDIxIDEyIDYuNTAwMjFIM1pcIixmaWxsOnQscm9sZTpcImltZ1wifSl9KSl9fSw1NzI5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk1pbmltaXplSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuTWluaW1pemVJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0yLjE2NjAyIDEyQzIuMTY2MDIgMTEuNzIzOSAyLjM4OTg3IDExLjUgMi42NjYwMiAxMS41SDEzLjMzMjdDMTMuNjA4OCAxMS41IDEzLjgzMjcgMTEuNzIzOSAxMy44MzI3IDEyQzEzLjgzMjcgMTIuMjc2MSAxMy42MDg4IDEyLjUgMTMuMzMyNyAxMi41SDIuNjY2MDJDMi4zODk4NyAxMi41IDIuMTY2MDIgMTIuMjc2MSAyLjE2NjAyIDEyWlwiLGZpbGw6dCxyb2xlOlwiaW1nXCJ9KX0pKX19LDM3OTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5PcGVuRmluSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuT3BlbkZpbkljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTE0LjI2ODUgNS43MzkxNkMxNC4xNzg1IDUuNjQ5MDYgMTQuMDgxNyA1LjU2NTkyIDEzLjk3OSA1LjQ5MDQ3TDEzLjk0MTIgNS40NjQyOUMxMy45MTk2IDUuNDQ5MTkgMTMuODk4NCA1LjQzMzU4IDEzLjg3NjMgNS40MTg5OEMxMy44NTQxIDUuNDA0MzggMTMuODI4NCA1LjM4ODc4IDEzLjgwNDggNS4zNzQxOEwxMy43NzE1IDUuMzUzNTRDMTMuNzQxOCA1LjMzNTkyIDEzLjcxMTYgNS4zMTkzIDEzLjY4MTQgNS4zMDMxOUwxMy42NjM4IDUuMjkzNjNDMTMuMzA2NSA1LjEwNjE4IDEyLjkwOTEgNS4wMDgwNyAxMi41MDU3IDUuMDA3NjhDMTEuODQxNyA1LjAwNzE1IDExLjIwNTIgNC43NDI5MSAxMC43MzYyIDQuMjczMUMxMC4yNjcxIDMuODAzMyAxMC4wMDQgMy4xNjY0MiAxMC4wMDQ2IDIuNTAyNjJDMTAuMDA2NSAxLjQ5MjIyIDkuMzk5MzMgMC41ODAyMTkgOC40NjYzNCAwLjE5MTkxMUM3LjUzMzM1IC0wLjE5NjM5NyA2LjQ1ODI2IDAuMDE1NDY2IDUuNzQyNDQgMC43Mjg3MDFDNS4wMjY2MSAxLjQ0MTk0IDQuODExMDMgMi41MTYwNyA1LjE5NjIxIDMuNDUwMkM1LjU4MTQgNC4zODQzMyA2LjQ5MTUgNC45OTQ0NyA3LjUwMjEgNC45OTYxQzguMTY2MDMgNC45OTY2NCA4LjgwMjU2IDUuMjYwODggOS4yNzE2MSA1LjczMDY4QzkuNzQwNjYgNi4yMDA0OSAxMC4wMDM4IDYuODM3MzYgMTAuMDAzMSA3LjUwMTE3QzEwLjAwMjYgOC4xNjQ5NyA5LjczODMgOC44MDEzNyA5LjI2ODQgOS4yNzAzMkM4Ljc5ODUgOS43MzkyOCA4LjE2MTUgMTAuMDAyNCA3LjQ5NzU2IDEwLjAwMTdDNi44MzQxMyAxMC4wMDIyIDYuMTk3NzIgOS43Mzg5NCA1LjcyODY1IDkuMjY5ODdDNS4yNTk1OCA4LjgwMDggNC45OTYzNiA4LjE2NDQ3IDQuOTk3MDMgNy41MDExN0M0Ljk5NzAzIDYuMTIxNTUgMy44Nzg0MSA1LjAwMzE1IDIuNDk4NTIgNS4wMDMxNUMxLjExODYyIDUuMDAzMTUgMCA2LjEyMTU1IDAgNy41MDExN0MwIDguODgwNzggMS4xMTg2MiA5Ljk5OTE4IDIuNDk4NTIgOS45OTkxOEMzLjg3ODQxIDkuOTk5MTggNC45OTcwMyAxMS4xMTc2IDQuOTk3MDMgMTIuNDk3MkM0Ljk5NzAzIDEzLjg3OTUgNi4xMTc4IDE1IDcuNTAwMzMgMTVDOC44ODI4NyAxNSAxMC4wMDM2IDEzLjg3OTUgMTAuMDAzNiAxMi40OTcyQzEwLjAwMzYgMTEuMTE3NiAxMS4xMjIzIDkuOTk5MTggMTIuNTAyMSA5Ljk5OTE4QzEyLjk0ODIgOS45OTk0OCAxMy4zODYyIDkuODgwMjIgMTMuNzcwNSA5LjY1MzgzQzEzLjgwMzggOS42MzQyIDEzLjgzNjUgOS42MTM1NiAxMy44NzEyIDkuNTkyNDFMMTMuODc4MyA5LjU4Nzg4QzEzLjkwODUgOS41Njc3NSAxMy45Mzg3IDkuNTQ2NiAxMy45Njc5IDkuNTI1NDZMMTMuOTgxIDkuNTE2NEMxNC4wMDcyIDkuNDk3MjcgMTQuMDMxNCA5LjQ3NjYyIDE0LjA1OTEgOS40NTU5OEwxNC4wODEyIDkuNDM4ODdDMTQuMTA1NCA5LjQxOTIzIDE0LjEyODYgOS4zOTg1OSAxNC4xNTIyIDkuMzc3OTVMMTQuMTc3OSA5LjM1NThDMTQuMjA4MSA5LjMyODYyIDE0LjIzNzggOS4zMDA0MiAxNC4yNjcgOS4yNzEyM0wxNC4yNzE2IDkuMjY3MkMxNC4zNzk0IDkuMTU4ODcgMTQuNDc3MiA5LjA0MDkxIDE0LjU2MzYgOC45MTQ4QzE0LjU4MjQgOC44ODc2MSAxNC42MDA1IDguODYwMDkgMTQuNjE4IDguODMyMjNDMTUuMjM3IDcuODQ1ODQgMTUuMDkyIDYuNTYyNjcgMTQuMjY4NSA1LjczOTE2WlwiLGZpbGw6dCxyb2xlOlwiaW1nXCJ9KX0pKX19LDE1Mzk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuU3RhY2tJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5TdGFja0ljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMjBcIixoZWlnaHQ6XCIyMFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTE0LjIxNzggMy4wMDA5MkMxNC4xNTA0IDMuMDA1MTQgMTQuMDgzOSAzLjAxODQ0IDE0LjAyIDMuMDQwNDdMMy41MTk4NiA2LjQyODdDMy4zNjg2NCA2LjQ3NzQzIDMuMjM2ODEgNi41NzI5MSAzLjE0MzM1IDYuNzAxMzhDMy4wNDk4OSA2LjgyOTg2IDIuOTk5NjQgNi45ODQ2OSAyLjk5OTgzIDcuMTQzNTZWMTUuNzU0QzIuOTk4NDMgMTUuODUzNCAzLjAxNjc5IDE1Ljk1MjEgMy4wNTM4NSAxNi4wNDQzQzMuMDkwOTEgMTYuMTM2NiAzLjE0NTkzIDE2LjIyMDUgMy4yMTU3MSAxNi4yOTEzQzMuMjg1NSAxNi4zNjIxIDMuMzY4NjUgMTYuNDE4MyAzLjQ2MDM1IDE2LjQ1NjZDMy41NTIwNCAxNi40OTUgMy42NTA0NSAxNi41MTQ3IDMuNzQ5ODQgMTYuNTE0N0MzLjg0OTI0IDE2LjUxNDcgMy45NDc2NCAxNi40OTUgNC4wMzkzNCAxNi40NTY2QzQuMTMxMDMgMTYuNDE4MyA0LjIxNDE5IDE2LjM2MjEgNC4yODM5NyAxNi4yOTEzQzQuMzUzNzUgMTYuMjIwNSA0LjQwODc4IDE2LjEzNjYgNC40NDU4NCAxNi4wNDQzQzQuNDgyOSAxNS45NTIxIDQuNTAxMjYgMTUuODUzNCA0LjQ5OTg1IDE1Ljc1NFY3LjY4ODQ5TDE0LjQ4IDQuNDY3MjVDMTQuNjQ5IDQuNDE1MjkgMTQuNzk0MiA0LjMwNTMyIDE0Ljg5IDQuMTU2NzRDMTQuOTg1OCA0LjAwODE1IDE1LjAyNiAzLjgzMDUgMTUuMDAzNiAzLjY1NTE0QzE0Ljk4MTIgMy40Nzk3NyAxNC44OTc1IDMuMzE3OTcgMTQuNzY3NCAzLjE5ODI3QzE0LjYzNzMgMy4wNzg1NyAxNC40NjkxIDMuMDA4NjggMTQuMjkyNSAzLjAwMDkyQzE0LjI2NzYgMi45OTk2NyAxNC4yNDI3IDIuOTk5NjcgMTQuMjE3OCAzLjAwMDkyWk0xNy4yMTc4IDUuMjUwOTVDMTcuMTUwNCA1LjI1NTE3IDE3LjA4MzkgNS4yNjg0OCAxNy4wMjAxIDUuMjkwNUw2LjUxOTkgOC42Nzg3NEM2LjM2ODY5IDguNzI3NDYgNi4yMzY4NSA4LjgyMjk0IDYuMTQzMzkgOC45NTE0MkM2LjA0OTkzIDkuMDc5ODkgNS45OTk2OCA5LjIzNDcyIDUuOTk5ODggOS4zOTM1OVYxOC4wMDQxQzUuOTk4NDcgMTguMTAzNSA2LjAxNjgzIDE4LjIwMjEgNi4wNTM4OSAxOC4yOTQ0QzYuMDkwOTUgMTguMzg2NiA2LjE0NTk3IDE4LjQ3MDUgNi4yMTU3NiAxOC41NDEzQzYuMjg1NTQgMTguNjEyMSA2LjM2ODcgMTguNjY4MyA2LjQ2MDM5IDE4LjcwNjZDNi41NTIwOSAxOC43NDUgNi42NTA0OSAxOC43NjQ4IDYuNzQ5ODkgMTguNzY0OEM2Ljg0OTI4IDE4Ljc2NDggNi45NDc2OSAxOC43NDUgNy4wMzkzOCAxOC43MDY2QzcuMTMxMDggMTguNjY4MyA3LjIxNDIzIDE4LjYxMjEgNy4yODQwMiAxOC41NDEzQzcuMzUzOCAxOC40NzA1IDcuNDA4ODIgMTguMzg2NiA3LjQ0NTg4IDE4LjI5NDRDNy40ODI5NCAxOC4yMDIxIDcuNTAxMyAxOC4xMDM1IDcuNDk5OSAxOC4wMDQxVjkuOTM4NTJMMTcuNDggNi43MTcyOEMxNy42NDkgNi42NjUzMyAxNy43OTQyIDYuNTU1MzUgMTcuODkgNi40MDY3N0MxNy45ODU4IDYuMjU4MTggMTguMDI2MSA2LjA4MDU0IDE4LjAwMzYgNS45MDUxN0MxNy45ODEyIDUuNzI5ODEgMTcuODk3NiA1LjU2OCAxNy43Njc1IDUuNDQ4M0MxNy42Mzc0IDUuMzI4NjEgMTcuNDY5MSA1LjI1ODcxIDE3LjI5MjUgNS4yNTA5NUMxNy4yNjc2IDUuMjQ5NzEgMTcuMjQyNyA1LjI0OTcxIDE3LjIxNzggNS4yNTA5NVpNMjAuMTkzIDcuNTA1MzhDMjAuMTM0NCA3LjUwOTgyIDIwLjA3NTggNy41MjE5NyAyMC4wMTg2IDcuNTQwNTNMOS41MTg0OCAxMC45Mjg4QzkuMjA5NDggMTEuMDI5MyA4Ljk5OTkyIDExLjMxODEgOC45OTk5MiAxMS42NDM2VjIwLjI1NDFDOC45OTk5MiAyMC40OTc5IDkuMTE4MjkgMjAuNzI2MiA5LjMxNzggMjAuODY2NEM5LjQ0NjA1IDIwLjk1NzIgOS41OTY5MyAyMS4wMDQxIDkuNzQ5OTMgMjEuMDA0MUM5LjgzNDY4IDIxLjAwNDEgOS45MjAxNCAyMC45ODk0IDEwLjAwMTkgMjAuOTYwMkwyMC41MDIgMTcuMjEwMUMyMC44MDA2IDE3LjEwNDQgMjEuMDAwMSAxNi44MjEzIDIxLjAwMDEgMTYuNTA0VjguMjUzOTJDMjEuMDAwMSA4LjAxNDY3IDIwLjg4NTMgNy43ODkyMiAyMC42OTEgNy42NDc0N0MyMC41NDU5IDcuNTQxNzIgMjAuMzY4OCA3LjQ5MjA1IDIwLjE5MyA3LjUwNTM4WlwiLGZpbGw6dH0pfSkpfX0sNDAyMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5TdG9yZWZyb250SWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuU3RvcmVmcm9udEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMjBcIixoZWlnaHQ6XCIyMFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTUgM0M0LjQ0OCAzIDQgMy40NDggNCA0QzQgNC41NTIgNC40NDggNSA1IDVIMTlDMTkuNTUyIDUgMjAgNC41NTIgMjAgNEMyMCAzLjQ0OCAxOS41NTIgMyAxOSAzSDVaTTQuNjE3MTkgN0M0LjIzODE5IDcgMy44OTM2MSA3LjIxMzczIDMuNzI0NjEgNy41NTI3M0wyLjEwNTQ3IDEwLjc4OTFDMi4wMzU0NyAxMC45MjgxIDIgMTEuMDgxMyAyIDExLjIzNjNWMTJDMiAxMi41NTIgMi40NDggMTMgMyAxM1YxOUMzIDIwLjEwNSAzLjg5NSAyMSA1IDIxSDE5QzIwLjEwNSAyMSAyMSAyMC4xMDUgMjEgMTlWMTNDMjEuNTUyIDEzIDIyIDEyLjU1MiAyMiAxMlYxMS4yMzYzQzIyIDExLjA4MTMgMjEuOTY0NSAxMC45MjgxIDIxLjg5NDUgMTAuNzg5MUwyMC4yNzU0IDcuNTUyNzNDMjAuMTA2NCA3LjIxMzczIDE5Ljc2MTggNyAxOS4zODI4IDdINC42MTcxOVpNNiAxM0gxOEMxOC41NTIgMTMgMTkgMTMuNDQ4IDE5IDE0VjE4QzE5IDE4LjU1MiAxOC41NTIgMTkgMTggMTlINkM1LjQ0OCAxOSA1IDE4LjU1MiA1IDE4VjE0QzUgMTMuNDQ4IDUuNDQ4IDEzIDYgMTNaXCIsZmlsbDp0fSl9KSl9fSw3OTM3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LldvcmtzcGFjZUljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LldvcmtzcGFjZUljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4cykoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIscm9sZTpcImltZ1wifSxuLHtjaGlsZHJlbjpbKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTYuNzM4MTEgMi44MTI1SDMuNTMxMzdDMy4xMzQ0MiAyLjgxMjUgMi44MTI2MiAzLjEzNDMgMi44MTI2MiAzLjUzMTI1VjcuNTEyMDRDMi44MTI2MiA3LjkwOSAzLjEzNDQyIDguMjMwNzkgMy41MzEzNyA4LjIzMDc5SDYuNzM4MTFDNy4xMzUwNiA4LjIzMDc5IDcuNDU2ODYgNy45MDkgNy40NTY4NiA3LjUxMjA0VjMuNTMxMjVDNy40NTY4NiAzLjEzNDMgNy4xMzUwNiAyLjgxMjUgNi43MzgxMSAyLjgxMjVaXCIsZmlsbDp0fSksKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTEyLjE1NjUgNi4yNjc1OEg4Ljk0OTcxQzguNzUxMjMgNi4yNjc1OCA4LjU5MDMzIDYuNDI4NDggOC41OTAzMyA2LjYyNjk2VjExLjM4MThDOC41OTAzMyAxMS41ODAzIDguNzUxMjMgMTEuNzQxMiA4Ljk0OTcxIDExLjc0MTJIMTIuMTU2NUMxMi4zNTQ5IDExLjc0MTIgMTIuNTE1OCAxMS41ODAzIDEyLjUxNTggMTEuMzgxOFY2LjYyNjk2QzEyLjUxNTggNi40Mjg0OCAxMi4zNTQ5IDYuMjY3NTggMTIuMTU2NSA2LjI2NzU4WlwiLHN0cm9rZTp0LHN0cm9rZVdpZHRoOlwiMC43MTg3NTNcIn0pLCgwLG8uanN4KShcInBhdGhcIix7ZDpcIk0xMi4xNTY0IDIuODEyNUg4Ljk0OTcxQzguNTUyNzUgMi44MTI1IDguMjMwOTYgMy4xMzQzIDguMjMwOTYgMy41MzEyNVY0LjQxNTg3QzguMjMwOTYgNC44MTI4MyA4LjU1Mjc1IDUuMTM0NjMgOC45NDk3MSA1LjEzNDYzSDEyLjE1NjRDMTIuNTUzNCA1LjEzNDYzIDEyLjg3NTIgNC44MTI4MyAxMi44NzUyIDQuNDE1ODdWMy41MzEyNUMxMi44NzUyIDMuMTM0MyAxMi41NTM0IDIuODEyNSAxMi4xNTY0IDIuODEyNVpcIixmaWxsOnR9KSwoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNNi43Mzc5OCA5LjAwNDg4SDMuNTMxMjVDMy4xMzQzIDkuMDA0ODggMi44MTI1IDkuMzI2NjggMi44MTI1IDkuNzIzNjRWMTEuMzgyM0MyLjgxMjUgMTEuNzc5MyAzLjEzNDMgMTIuMTAxMSAzLjUzMTI1IDEyLjEwMTFINi43Mzc5OEM3LjEzNDk0IDEyLjEwMTEgNy40NTY3NCAxMS43NzkzIDcuNDU2NzQgMTEuMzgyM1Y5LjcyMzY0QzcuNDU2NzQgOS4zMjY2OCA3LjEzNDk0IDkuMDA0ODggNi43Mzc5OCA5LjAwNDg4WlwiLGZpbGw6dH0pXX0pKX19LDI3NzI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDM3OSksdCksbyhuKDQ3MTgpLHQpLG8obig3OTM3KSx0KSxvKG4oODMxMSksdCksbyhuKDU3MjkpLHQpLG8obig3Nzg4KSx0KSxvKG4oMzcwMyksdCksbyhuKDY3OTUpLHQpLG8obig4MjY1KSx0KSxvKG4oMTE3KSx0KSxvKG4oMTUzOSksdCksbyhuKDkyODUpLHQpLG8obig0MDIwKSx0KSxvKG4oNTI5KSx0KSxvKG4oMjQwMiksdCksbyhuKDIxNDcpLHQpLG8obig0ODI1KSx0KSxvKG4oNjQ0NyksdCksbyhuKDEyODEpLHQpfSwzMTE3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuSWNvbldpdGhCYWRnZT12b2lkIDA7Y29uc3QgYT1uKDU4OTMpLGk9byhuKDc1MTgpKSxsPW4oNzAwNiksYz1uKDMxMzYpLHM9bigxMzM1KTt0Lkljb25XaXRoQmFkZ2U9ZT0+e3Zhcntjb3VudDp0PTAsbWF4Om59PWUsbz1yKGUsW1wiY291bnRcIixcIm1heFwiXSk7cmV0dXJuKDAsYS5qc3hzKSh1LHtjaGlsZHJlbjpbKDAsYS5qc3gpKGwuSWNvbixPYmplY3QuYXNzaWduKHt9LG8pKSx0PjAmJigwLGEuanN4KShkLHtjb3VudDp0LG1heDpufSldfSl9O2NvbnN0IHU9KDAsaS5kZWZhdWx0KShzLkJveClgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmAsZD0oMCxpLmRlZmF1bHQpKGMuQmFkZ2UpYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRyYW5zZm9ybTogc2NhbGUoNzAlKTtcbiAgcmlnaHQ6IC0keyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICB0b3A6IC0keyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbmB9LDE0NDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzExNyksdCl9LDkyMzk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDgyNzUpLHQpLG8obig2OTMpLHQpfSw4Mjc1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTG9hZGVyPXZvaWQgMDtjb25zdCBhPW4oNTg5MyksaT1vKG4oNzUxOCkpLGw9big5NjM0KTt0LkxvYWRlcj0oMCxpLmRlZmF1bHQpKChlPT57dmFyIHQ9cihlLFtdKTtyZXR1cm4oMCxhLmpzeCkobC5JY29uLE9iamVjdC5hc3NpZ24oe30sdCx7Y2hpbGRyZW46KDAsYS5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLHZpZXdCb3g6XCIwIDAgMzggMzhcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCJ9LHtjaGlsZHJlbjooMCxhLmpzeCkoXCJnXCIsT2JqZWN0LmFzc2lnbih7ZmlsbDpcIm5vbmVcIixmaWxsUnVsZTpcImV2ZW5vZGRcIn0se2NoaWxkcmVuOigwLGEuanN4cykoXCJnXCIsT2JqZWN0LmFzc2lnbih7dHJhbnNmb3JtOlwidHJhbnNsYXRlKDEgMSlcIixzdHJva2VXaWR0aDpcIjJcIn0se2NoaWxkcmVuOlsoMCxhLmpzeCkoXCJjaXJjbGVcIix7c3Ryb2tlT3BhY2l0eTpcIi41XCIsY3g6XCIxOFwiLGN5OlwiMThcIixyOlwiMThcIn0pLCgwLGEuanN4KShcInBhdGhcIixPYmplY3QuYXNzaWduKHtkOlwiTTM2IDE4YzAtOS45NC04LjA2LTE4LTE4LTE4XCJ9LHtjaGlsZHJlbjooMCxhLmpzeCkoXCJhbmltYXRlVHJhbnNmb3JtXCIse2F0dHJpYnV0ZU5hbWU6XCJ0cmFuc2Zvcm1cIix0eXBlOlwicm90YXRlXCIsZnJvbTpcIjAgMTggMThcIix0bzpcIjM2MCAxOCAxOFwiLGR1cjpcIjFzXCIscmVwZWF0Q291bnQ6XCJpbmRlZmluaXRlXCJ9KX0pKV19KSl9KSl9KSl9KSl9KSlgYH0sNjkzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fSxpPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT3BlbmZpbkxvYWRlcj12b2lkIDA7Y29uc3QgbD1uKDU4OTMpLGM9YShuKDc1MTgpKSxzPW4oOTYzNCk7dC5PcGVuZmluTG9hZGVyPSgwLGMuZGVmYXVsdCkoKGU9Pnt2YXIgdD1pKGUsW10pO3JldHVybigwLGwuanN4KShzLkljb24sT2JqZWN0LmFzc2lnbih7fSx0LHtjaGlsZHJlbjooMCxsLmpzeHMpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLHZpZXdCb3g6XCIwIDAgMTggMThcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0se2NoaWxkcmVuOlsoMCxsLmpzeCkodSx7ZDpcIlxcbiAgICAgICAgICAgIE0gMTcuMTIyMiA2Ljg4N1xcbiAgICAgICAgICAgIEMgMTcuMDE0MSA2Ljc3ODg3IDE2Ljg5OCA2LjY3OTExIDE2Ljc3NDggNi41ODg1NlxcbiAgICAgICAgICAgIEwgMTYuNzI5NSA2LjU1NzE1XFxuICAgICAgICAgICAgQyAxNi43MDM1IDYuNTM5MDMgMTYuNjc4MSA2LjUyMDMgMTYuNjUxNSA2LjUwMjc4XFxuICAgICAgICAgICAgQyAxNi42MjUgNi40ODUyNiAxNi41OTQxIDYuNDY2NTMgMTYuNTY1NyA2LjQ0OTAxXFxuICAgICAgICAgICAgTCAxNi41MjU5IDYuNDI0MjRcXG4gICAgICAgICAgICBDIDE2LjQ5MDIgNi40MDMxIDE2LjQ1NCA2LjM4MzE2IDE2LjQxNzcgNi4zNjM4M1xcbiAgICAgICAgICAgIEwgMTYuMzk2NiA2LjM1MjM2XFxuICAgICAgICAgICAgQyAxNS45Njc4IDYuMTI3NDIgMTUuNDkxIDYuMDA5NjggMTUuMDA2OCA2LjAwOTIyXFxuICAgICAgICAgICAgQyAxNC4yMTAxIDYuMDA4NTggMTMuNDQ2MyA1LjY5MTQ5IDEyLjg4MzQgNS4xMjc3MlxcbiAgICAgICAgICAgIEMgMTIuMzIwNSA0LjU2Mzk1IDEyLjAwNDggMy43OTk3MSAxMi4wMDU2IDMuMDAzMTRcXG4gICAgICAgICAgICBDIDEyLjAwNzggMS43OTA2NiAxMS4yNzkyIDAuNjk2MjYzIDEwLjE1OTYgMC4yMzAyOTNcXG4gICAgICAgICAgICBDIDkuMDQwMDIgLTAuMjM1Njc2IDcuNzQ5OTIgMC4wMTg1NTkyIDYuODkwOTMgMC44NzQ0NDFcXG4gICAgICAgICAgICBDIDYuMDMxOTQgMS43MzAzMiA1Ljc3MzIzIDMuMDE5MjggNi4yMzU0NiA0LjE0MDI0XFxuICAgICAgICAgICAgQyA2LjY5NzY4IDUuMjYxMTkgNy43ODk4IDUuOTkzMzcgOS4wMDI1MSA1Ljk5NTMyXFxuICAgICAgICAgICAgQyA5Ljc5OTI0IDUuOTk1OTYgMTAuNTYzMSA2LjMxMzA1IDExLjEyNTkgNi44NzY4MlxcbiAgICAgICAgICAgIEMgMTEuNjg4OCA3LjQ0MDU5IDEyLjAwNDYgOC4yMDQ4NCAxMi4wMDM4IDkuMDAxNFxcbiAgICAgICAgICAgIEMgMTIuMDAzMSA5Ljc5Nzk3IDExLjY4NiAxMC41NjE2IDExLjEyMjEgMTEuMTI0NFxcbiAgICAgICAgICAgIEMgMTAuNTU4MiAxMS42ODcxIDkuNzkzOCAxMi4wMDI4IDguOTk3MDggMTIuMDAyXFxuICAgICAgICAgICAgQyA4LjIwMDk2IDEyLjAwMjcgNy40MzcyNyAxMS42ODY3IDYuODc0MzggMTEuMTIzOFxcbiAgICAgICAgICAgIEMgNi4zMTE1IDEwLjU2MSA1Ljk5NTY0IDkuNzk3MzYgNS45OTY0NCA5LjAwMTRcXG4gICAgICAgICAgICBDIDUuOTk2NDQgNy4zNDU4NiA0LjY1NDA5IDYuMDAzNzggMi45OTgyMiA2LjAwMzc4XFxuICAgICAgICAgICAgQyAxLjM0MjM1IDYuMDAzNzggMCA3LjM0NTg2IDAgOS4wMDE0XFxuICAgICAgICAgICAgQyAwIDEwLjY1NjkgMS4zNDIzNSAxMS45OTkgMi45OTgyMiAxMS45OTlcXG4gICAgICAgICAgICBDIDQuNjU0MDkgMTEuOTk5IDUuOTk2NDQgMTMuMzQxMSA1Ljk5NjQ0IDE0Ljk5NjZcXG4gICAgICAgICAgICBDIDUuOTk2NDQgMTYuNjU1MyA3LjM0MTM2IDE4IDkuMDAwNCAxOFxcbiAgICAgICAgICAgIEMgMTAuNjU5NCAxOCAxMi4wMDQ0IDE2LjY1NTMgMTIuMDA0NCAxNC45OTY2XFxuICAgICAgICAgICAgQyAxMi4wMDQ0IDEzLjM0MTEgMTMuMzQ2NyAxMS45OTkgMTUuMDAyNiAxMS45OTlcXG4gICAgICAgICAgICBDIDE1LjUzNzkgMTEuOTk5NCAxNi4wNjM1IDExLjg1NjMgMTYuNTI0NyAxMS41ODQ2XFxuICAgICAgICAgICAgQyAxNi41NjQ1IDExLjU2MSAxNi42MDM4IDExLjUzNjMgMTYuNjQ1NSAxMS41MTA5XFxuICAgICAgICAgICAgTCAxNi42NTQgMTEuNTA1NVxcbiAgICAgICAgICAgIEMgMTYuNjkwMiAxMS40ODEzIDE2LjcyNjUgMTEuNDU1OSAxNi43NjE1IDExLjQzMDVcXG4gICAgICAgICAgICBMIDE2Ljc3NzIgMTEuNDE5N1xcbiAgICAgICAgICAgIEMgMTYuODA4NiAxMS4zOTY3IDE2LjgzNzYgMTEuMzcyIDE2Ljg3MDkgMTEuMzQ3MlxcbiAgICAgICAgICAgIEwgMTYuODk3NSAxMS4zMjY2XFxuICAgICAgICAgICAgQyAxNi45MjY1IDExLjMwMzEgMTYuOTU0MyAxMS4yNzgzIDE2Ljk4MjcgMTEuMjUzNVxcbiAgICAgICAgICAgIEwgMTcuMDEzNSAxMS4yMjdcXG4gICAgICAgICAgICBDIDE3LjA0OTcgMTEuMTk0MyAxNy4wODU0IDExLjE2MDUgMTcuMTIwNCAxMS4xMjU1XFxuICAgICAgICAgICAgTCAxNy4xMjU5IDExLjEyMDZcXG4gICAgICAgICAgICBDIDE3LjI1NTMgMTAuOTkwNiAxNy4zNzI2IDEwLjg0OTEgMTcuNDc2MyAxMC42OTc4XFxuICAgICAgICAgICAgQyAxNy40OTg5IDEwLjY2NTEgMTcuNTIwNiAxMC42MzIxIDE3LjU0MTYgMTAuNTk4N1xcbiAgICAgICAgICAgIEMgMTguMjg0MyA5LjQxNSAxOC4xMTA0IDcuODc1MiAxNy4xMjIyIDYuODg3WlxcbiAgICAgICAgICAgIFwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pLCgwLGwuanN4KShkLHtjeDpcIjlcIixjeTpcIjNcIixyOlwiMi45XCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLGFuZ2xlOjB9KSwoMCxsLmpzeCkoZCx7Y3g6XCIxNVwiLGN5OlwiOVwiLHI6XCIyLjc1XCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLGFuZ2xlOi05MH0pLCgwLGwuanN4KShkLHtjeDpcIjlcIixjeTpcIjE1XCIscjpcIjIuNVwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixhbmdsZTotMTgwfSksKDAsbC5qc3gpKGQse2N4OlwiM1wiLGN5OlwiOVwiLHI6XCIyLjI1XCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLGFuZ2xlOi0yNzB9KV19KSl9KSl9KSlgYDtjb25zdCB1PWMuZGVmYXVsdC5wYXRoYFxuICBAa2V5ZnJhbWVzIGxvZ29BbmltYXRpb24ge1xuICAgIDAlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDI1JSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICAzNSUge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gICAgNjAlIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICAgIDc1JSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgYW5pbWF0aW9uOiBsb2dvQW5pbWF0aW9uIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuYCxkPWMuZGVmYXVsdC5jaXJjbGVgXG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbiAgYW5pbWF0aW9uOiAkeyh7YW5nbGU6ZX0pPT4oZT0+Yy5rZXlmcmFtZXNgXG4gICAgMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICAyNSUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICAzMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICA1MCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoJHtlfWRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICA3MCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTM2MGRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICA3NSUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTM2MGRlZyk7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0zNjBkZWcpO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG5gKShlKX0gMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG5gfSwzNTg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5TdHlsZWRJbnB1dEZpZWxkPXQuQmFzZUlucHV0PXZvaWQgMDtjb25zdCBhPW4oNTg5MyksaT1uKDY2ODkpLGw9byhuKDc1MTgpKSxjPW4oMTMzNSkscz1uKDk1MDcpLHU9big3NzY5KSxkPW4oOTYzNCk7dC5CYXNlSW5wdXQ9KDAsaS5mb3J3YXJkUmVmKSgoKGUsbik9Pnt2YXJ7Y2xhc3NOYW1lOm8scmVuZGVySW5wdXQ6aSxtZXNzYWdlOmwsbGFiZWw6YyxzdGF0dXM6cyxuYW1lOnUsaWNvbjpkLHR5cGU6Zz1cInRleHRcIn09ZSxtPXIoZSxbXCJjbGFzc05hbWVcIixcInJlbmRlcklucHV0XCIsXCJtZXNzYWdlXCIsXCJsYWJlbFwiLFwic3RhdHVzXCIsXCJuYW1lXCIsXCJpY29uXCIsXCJ0eXBlXCJdKTtjb25zdCB3PVwiY2hlY2tib3hcIj09PWd8fFwicmFkaW9cIj09PWc7cmV0dXJuKDAsYS5qc3hzKSh2LE9iamVjdC5hc3NpZ24oe2ZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixhbGlnbkl0ZW1zOlwiZmxleC1zdGFydFwifSx7Y2hpbGRyZW46WygwLGEuanN4cykoZixPYmplY3QuYXNzaWduKHtpbmxpbmU6d30se2NoaWxkcmVuOlshIWMmJigwLGEuanN4KShoLE9iamVjdC5hc3NpZ24oe2FzOlwibGFiZWxcIixodG1sRm9yOnUsd2VpZ2h0OlwiYm9sZFwifSx7Y2hpbGRyZW46Y30pKSwhIWQmJigwLGEuanN4KShwLHtpY29uOmR9KSwhIWkmJmkoT2JqZWN0LmFzc2lnbih7bmFtZTp1LHN0YXR1czpzLHR5cGU6Z30sbSkpLCFpJiYoMCxhLmpzeCkodC5TdHlsZWRJbnB1dEZpZWxkLE9iamVjdC5hc3NpZ24oe2NsYXNzTmFtZTpvLG5hbWU6dSxzdGF0dXM6cyx0eXBlOmd9LG0se3JlZjpufSkpXX0pKSwhIWwmJigwLGEuanN4KShDLE9iamVjdC5hc3NpZ24oe3N0YXR1czpzfSx7Y2hpbGRyZW46bH0pKV19KSl9KSksdC5CYXNlSW5wdXQuZGlzcGxheU5hbWU9XCJCYXNlSW5wdXRcIjtjb25zdCBmPSgwLGwuZGVmYXVsdCkoYy5Cb3gpYFxuICBhbGlnbi1pdGVtczogJHsoe2lubGluZTplfSk9PmU/XCJjZW50ZXJcIjpcImZsZXgtc3RhcnRcIn07XG4gIGZsZXgtZGlyZWN0aW9uOiAkeyh7aW5saW5lOmV9KT0+ZT9cInJvdy1yZXZlcnNlXCI6XCJjb2x1bW5cIn07XG4gIGp1c3RpZnktY29udGVudDogJHsoe2lubGluZTplfSk9PmU/XCJmbGV4LWVuZFwiOlwiZmxleC1zdGFydFwifTtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgJHsoe2lubGluZTplLHRoZW1lOnR9KT0+ZSYmYFxcbiAgICAke2h9IHtcXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgICBtYXJnaW4tbGVmdDogJHt0LnB4LnNtYWxsfTtcXG4gICAgICBmb250LXdlaWdodDogJHt0LmZvbnRXZWlnaHQubm9ybWFsfTtcXG4gICAgfVxcbiAgYH1cbmAscD0oMCxsLmRlZmF1bHQpKGQuSWNvbilgXG4gIG1hcmdpbi1sZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gIG1pbi13aWR0aDogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5zbWFsbH07XG4gIG1pbi1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUuc21hbGx9O1xuYCxoPSgwLGwuZGVmYXVsdCkodS5UZXh0KWBcbiAgbWFyZ2luLWJvdHRvbTogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuYCxDPSgwLGwuZGVmYXVsdCkodS5UZXh0KWBcbiAgY29sb3I6ICR7KHt0aGVtZTplLHN0YXR1czp0fSk9PigwLHMuZ2V0U3RhdHVzQ29sb3IpKGUsdCxcInRleHRIZWxwXCIpfTtcbiAgbWFyZ2luLXRvcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG5gLHY9KDAsbC5kZWZhdWx0KShjLkJveClgXG4gIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG5gO3QuU3R5bGVkSW5wdXRGaWVsZD1sLmRlZmF1bHQuaW5wdXRgXG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNX07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmUsc3RhdHVzOnR9KT0+KDAscy5nZXRTdGF0dXNDb2xvcikoZSx0LFwiaW5wdXRCb3JkZXJcIil9O1xuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gIGJveC1zaGFkb3c6ICR7KHt0aGVtZTplfSk9PmUuc2hhZG93LmJhc2V9O1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Q29sb3J9O1xuICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5iYXNlfWB9O1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKTtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplLHN0YXR1czp0fSk9PigwLHMuZ2V0U3RhdHVzQ29sb3IpKGUsdCxcImlucHV0Rm9jdXNlZFwiKX07XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG5cbiAgJjpkaXNhYmxlZDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhIGhhY2sgdG8gaW52ZXJ0IHRoZSBjYWxlbmRhciBpY29uLiBUaGlzIG9ubHkgd29ya3MgaW4gZGFyayBtb2RlLlxuICAgKiBVbnRpbCBlaXRoZXIgbGlnaHQgbW9kZSBpcyBhIHRoaW5nIG9yIHdlIGdldCBhIGRhdGV0aW1lIHBpY2tlciBkZXNpZ24sIHRoaXMgd2lsbCBkby5cbiAgICovXG4gIDo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIHtcbiAgICBmaWx0ZXI6IGludmVydCgxKTtcbiAgfVxuYH0sODg3ODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzU4KSx0KX0sMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGE9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH0saT10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxsPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2hlY2tib3g9dm9pZCAwO2NvbnN0IGM9big1ODkzKSxzPWEobig2Njg5KSksdT1sKG4oNzUxOCkpLGQ9big4ODc4KSxmPW4oOTYzNCkscD1uKDk1MDcpO3QuQ2hlY2tib3g9cy5mb3J3YXJkUmVmKCgoZSx0KT0+e3ZhcntzdGF0dXM6bn09ZSxyPWkoZSxbXCJzdGF0dXNcIl0pO3JldHVybigwLGMuanN4KShkLkJhc2VJbnB1dCxPYmplY3QuYXNzaWduKHt9LHIse3R5cGU6XCJjaGVja2JveFwiLHN0YXR1czpuLHJlbmRlcklucHV0OmU9Pnt2YXIgcj1pKGUsW10pO3JldHVybigwLGMuanN4cykoaCx7Y2hpbGRyZW46WygwLGMuanN4KShnLE9iamVjdC5hc3NpZ24oe3JlZjp0LGlkOnIubmFtZSx0eXBlOlwiY2hlY2tib3hcIn0scikpLCgwLGMuanN4KShDLE9iamVjdC5hc3NpZ24oe3N0YXR1czpufSx7Y2hpbGRyZW46KDAsYy5qc3gpKHYse30pfSkpXX0pfX0pKX0pKSx0LkNoZWNrYm94LmRpc3BsYXlOYW1lPVwiQ2hlY2tib3hcIjtjb25zdCBoPXUuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYCxDPXUuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBoZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIHdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplLHN0YXR1czp0fSk9PigwLHAuZ2V0U3RhdHVzQ29sb3IpKGUsdCxcInRleHREZWZhdWx0XCIpfTtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAsdj0oMCx1LmRlZmF1bHQpKGYuSWNvbikuYXR0cnMoe2ljb246XCJDaGVja0ljb25cIixzaXplOlwic21hbGxcIn0pYFxuICBvcGFjaXR5OiAwO1xuYCxnPXUuZGVmYXVsdC5pbnB1dGBcbiAgb3BhY2l0eTogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgJjpjaGVja2VkICsgJHtDK1wiIFwiK3Z9IHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgJjpob3ZlciArICR7Q30ge1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcHggMXB4ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEZvY3VzZWR9O1xuICB9XG5cbiAgJjpmb2N1cyArICR7Q30ge1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcHggMXB4ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEZvY3VzZWR9O1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgfVxuXG4gICY6ZGlzYWJsZWQgKyAke0N9IHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cbmB9LDgwNTE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDEpLHQpfSw5MDIyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoZWNrYm94R3JvdXA9dm9pZCAwO2NvbnN0IGk9big1ODkzKSxsPWEobig2Njg5KSksYz1hKG4oNzUxOCkpLHM9bigxMzM1KSx1PW4oNzc2OSksZD1uKDEpO3QuQ2hlY2tib3hHcm91cD0oe2Rpc2FibGVkOmUsZ2FwOnQ9XCJzbWFsbFwiLG1lc3NhZ2U6bixuYW1lOnIsY2hpbGRyZW46b30pPT4oMCxpLmpzeHMpKGYse2NoaWxkcmVuOlsoMCxpLmpzeCkocCxPYmplY3QuYXNzaWduKHtnYXA6dH0se2NoaWxkcmVuOmwuQ2hpbGRyZW4ubWFwKG8sKHQ9Pntjb25zdCBuPXQ7cmV0dXJuIG4udHlwZT09PWQuQ2hlY2tib3g/bC5jbG9uZUVsZW1lbnQobix7bmFtZTpyLGRpc2FibGVkOmV9KTpufSkpfSkpLG4/KDAsaS5qc3gpKGgsT2JqZWN0LmFzc2lnbih7ZGlzYWJsZWQ6ZX0se2NoaWxkcmVuOm59KSk6bnVsbF19KTtjb25zdCBmPSgwLGMuZGVmYXVsdCkocy5Cb3gpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG5gLHA9KDAsYy5kZWZhdWx0KShzLkJveClgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xuYCxoPSgwLGMuZGVmYXVsdCkodS5UZXh0KWBcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dFBsYWNlaG9sZGVyfTtcbiAgbWFyZ2luLXRvcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcblxuICAkeyh7ZGlzYWJsZWQ6ZX0pPT5lJiZjLmNzc2BcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gICAgYH1cbmB9LDQxNjk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDkwMjIpLHQpfSw5MzY4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRGF0ZUlucHV0PXZvaWQgMDtjb25zdCBhPW4oNTg5MyksaT1uKDY2ODkpLGw9byhuKDc1MTgpKSxjPW4oOTYzNCkscz1uKDEzMzUpLHU9big5NTA3KSxkPW4oODg3OCk7dC5EYXRlSW5wdXQ9KDAsaS5mb3J3YXJkUmVmKSgoKGUsdCk9Pnt2YXJ7dmFsdWU6bj1cIlwiLHR5cGU6bz1cImRhdGVcIixleHBhbmRlZDpsPSExLG9uQ2hhbmdlOmN9PWUscz1yKGUsW1widmFsdWVcIixcInR5cGVcIixcImV4cGFuZGVkXCIsXCJvbkNoYW5nZVwiXSk7Y29uc3RbdSxwXT0oMCxpLnVzZVN0YXRlKShuKTtyZXR1cm4oMCxpLnVzZUVmZmVjdCkoKCgpPT5wKG4pKSxbXSksKDAsYS5qc3gpKGQuQmFzZUlucHV0LE9iamVjdC5hc3NpZ24oe3R5cGU6b30scyx7cmVuZGVySW5wdXQ6ZT0+e3ZhciBuPXIoZSxbXSk7cmV0dXJuKDAsYS5qc3gpKGYsT2JqZWN0LmFzc2lnbih7cmVmOnQsdHlwZTpvLG9uQ2hhbmdlOmU9Pntjb25zdHt2YWx1ZTp0fT1lLnRhcmdldDt0JiZwKHQpLG51bGw9PWN8fGMoZSl9LHZhbHVlOnUsZXhwYW5kZWQ6bH0sbikpfX0pKX0pKSx0LkRhdGVJbnB1dC5kaXNwbGF5TmFtZT1cIkRhdGVJbnB1dFwiO2NvbnN0IGY9KDAsaS5mb3J3YXJkUmVmKSgoKGUsdCk9Pnt2YXJ7dHlwZTpuLGV4cGFuZGVkOm8sb25FeHBhbmQ6aX09ZSxsPXIoZSxbXCJ0eXBlXCIsXCJleHBhbmRlZFwiLFwib25FeHBhbmRcIl0pO3JldHVybigwLGEuanN4cykocCx7Y2hpbGRyZW46WygwLGEuanN4KShDLHtjaGlsZHJlbjooMCxhLmpzeCkoYy5JY29uLHtpY29uOlwidGltZVwiPT09bj9cIkNsb2NrSWNvblwiOlwiQ2FsZW5kYXJJY29uXCJ9KX0pLCgwLGEuanN4KShnLE9iamVjdC5hc3NpZ24oe3JlZjp0LHR5cGU6bixvbktleURvd246ZT0+e1wiIFwiPT09ZS5rZXkmJmUucHJldmVudERlZmF1bHQoKX19LGwpKSwoMCxhLmpzeCkodixPYmplY3QuYXNzaWduKHtmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsZGlzYWJsZWQ6bC5kaXNhYmxlZCxvbkNsaWNrOml9LHtjaGlsZHJlbjooMCxhLmpzeCkoYy5JY29uLHtpY29uOm8/XCJDaGV2cm9uVXBJY29uXCI6XCJDaGV2cm9uRG93bkljb25cIn0pfSkpXX0pfSkpO2YuZGlzcGxheU5hbWU9XCJTdHlsZWREYXRlSW5wdXRcIjtjb25zdCBwPWwuZGVmYXVsdC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICB3aWR0aDogMTAwJTtcbmAsaD0oMCxsLmRlZmF1bHQpKHMuQm94KWBcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogY2FsYygxMDAlIC0gMnB4KTtcbmAsQz0oMCxsLmRlZmF1bHQpKGgpYFxuICBsZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5gLHY9KDAsbC5kZWZhdWx0KShoKWBcbiAgcmlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICBwb2ludGVyLWV2ZW50czogJHsoe2Rpc2FibGVkOmV9KT0+ZT9cIm5vbmVcIjp2b2lkIDB9O1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIHBhZGRpbmctbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG5gLGc9KDAsbC5kZWZhdWx0KShkLlN0eWxlZElucHV0RmllbGQpYFxuICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gIGZvbnQtZmFtaWx5OiAke3UuRm9udFN0YWNrfTtcbiAgcGFkZGluZy1yaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC54eHhsYXJnZX07XG4gIHBhZGRpbmctbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC54eHhsYXJnZX07XG4gIDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbiAgOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3Ige1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuYH0sOTY1NDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oOTM2OCksdCl9LDE5Nzg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDY4ODQpLHQpfSw2ODg0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTnVtYmVySW5wdXQ9dm9pZCAwO2NvbnN0IGE9big1ODkzKSxpPW4oNjY4OSksbD1vKG4oNzUxOCkpLGM9big2NjA2KSxzPW4oOTYzNCksdT1uKDEzMzUpLGQ9big4ODc4KTt2YXIgZjshZnVuY3Rpb24oZSl7ZVtlLlVwPTFdPVwiVXBcIixlW2UuRG93bj0tMV09XCJEb3duXCJ9KGZ8fChmPXt9KSksdC5OdW1iZXJJbnB1dD0oMCxpLmZvcndhcmRSZWYpKCgoZSx0KT0+e3ZhcnttaW46bixtYXg6byxvbkNoYW5nZTpsLHN0ZXA6cz0xLHZhbHVlOnV9PWUsaD1yKGUsW1wibWluXCIsXCJtYXhcIixcIm9uQ2hhbmdlXCIsXCJzdGVwXCIsXCJ2YWx1ZVwiXSk7Y29uc3QgQz1OdW1iZXIocyksW3YsZ109KDAsaS51c2VTdGF0ZSkoTnVtYmVyKHUpKTsoMCxpLnVzZUVmZmVjdCkoKCgpPT5nKE51bWJlcih1KSkpLFtdKTtjb25zdCBtPWU9Pntjb25zdCB0PXY/TnVtYmVyKHYpOjAscj1uP051bWJlcihuKTp2b2lkIDAsYT1vP051bWJlcihvKTp2b2lkIDAsaT0oMCxjLmNsYW1wKSh0K0MqZSxyLGEpO2coaSl9O3JldHVybigwLGEuanN4KShkLkJhc2VJbnB1dCxPYmplY3QuYXNzaWduKHt0eXBlOlwibnVtYmVyXCJ9LGgse3JlbmRlcklucHV0OmU9Pnt2YXIgaT1yKGUsW10pO3JldHVybigwLGEuanN4KShwLE9iamVjdC5hc3NpZ24oe3JlZjp0LG9uSW5jcmVtZW50OigpPT5tKGYuVXApLG9uRGVjcmVtZW50OigpPT5tKGYuRG93biksb25DaGFuZ2U6ZT0+e2NvbnN0e3ZhbHVlOnR9PWUudGFyZ2V0O3QmJmcoTnVtYmVyKHQpKSxsJiZsKGUpfSxtaW46bixtYXg6byxzdGVwOnN9LGkse3ZhbHVlOnZ9KSl9fSkpfSkpLHQuTnVtYmVySW5wdXQuZGlzcGxheU5hbWU9XCJOdW1iZXJJbnB1dFwiO2NvbnN0IHA9KDAsaS5mb3J3YXJkUmVmKSgoKGUsdCk9Pnt2YXJ7b25JbmNyZW1lbnQ6bixvbkRlY3JlbWVudDpvfT1lLGk9cihlLFtcIm9uSW5jcmVtZW50XCIsXCJvbkRlY3JlbWVudFwiXSk7cmV0dXJuKDAsYS5qc3hzKShoLHtjaGlsZHJlbjpbKDAsYS5qc3gpKGcsT2JqZWN0LmFzc2lnbih7cmVmOnR9LGkpKSwoMCxhLmpzeHMpKEMsT2JqZWN0LmFzc2lnbih7ZmxleERpcmVjdGlvbjpcImNvbHVtblwiLGRpc2FibGVkOmkuZGlzYWJsZWR9LHtjaGlsZHJlbjpbKDAsYS5qc3gpKHYsT2JqZWN0LmFzc2lnbih7b25DbGljazpuLGRpc2FibGVkOmkuZGlzYWJsZWR9LHtjaGlsZHJlbjooMCxhLmpzeCkocy5JY29uLHtpY29uOlwiVHJpYW5nbGVVcEljb25cIn0pfSkpLCgwLGEuanN4KSh2LE9iamVjdC5hc3NpZ24oe29uQ2xpY2s6byxkaXNhYmxlZDppLmRpc2FibGVkfSx7Y2hpbGRyZW46KDAsYS5qc3gpKHMuSWNvbix7aWNvbjpcIlRyaWFuZ2xlRG93bkljb25cIn0pfSkpXX0pKV19KX0pKTtwLmRpc3BsYXlOYW1lPVwiU3R5bGVkTnVtYmVySW5wdXRcIjtjb25zdCBoPWwuZGVmYXVsdC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICB3aWR0aDogMTAwJTtcbmAsQz0oMCxsLmRlZmF1bHQpKHUuQm94KWBcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMXB4O1xuICB0b3A6IDFweDtcbiAgZ2FwOiAxcHg7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gMnB4KTtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+YDAgJHtlLnJhZGl1cy5zbWFsbH0gJHtlLnJhZGl1cy5zbWFsbH0gMGB9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIHBvaW50ZXItZXZlbnRzOiAkeyh7ZGlzYWJsZWQ6ZX0pPT5lP1wibm9uZVwiOnZvaWQgMH07XG5gLHY9KDAsbC5kZWZhdWx0KSh1LkJveClgXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICBwYWRkaW5nOiAwICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGhlaWdodDogNTAlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICBjb2xvcjogJHsoe2Rpc2FibGVkOmUsdGhlbWU6dH0pPT5lP3QucGFsZXR0ZS50ZXh0SGVscDp0LnBhbGV0dGUudGV4dERlZmF1bHR9O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEZvY3VzZWR9O1xuICB9XG5cbiAgJjphY3RpdmUge1xuICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dENvbG9yfTtcbiAgfVxuYCxnPSgwLGwuZGVmYXVsdCkoZC5TdHlsZWRJbnB1dEZpZWxkKWBcbiAgYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4Lnh4eGxhcmdlfTtcblxuICA6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG4gIDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBtYXJnaW46IDA7XG4gIH1cbmB9LDUyMTU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDIyNTUpLHQpfSwyMjU1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlJhZGlvR3JvdXA9dm9pZCAwO2NvbnN0IGk9big1ODkzKSxsPWEobig2Njg5KSksYz1hKG4oNzUxOCkpLHM9bigxMzM1KSx1PW4oNzc2OSksZD1uKDI1NjUpO3QuUmFkaW9Hcm91cD0oe2RpcmVjdGlvbjplPVwiY29sdW1uXCIsZGlzYWJsZWQ6dCxsYWJlbFNpZGU6bj1cInJpZ2h0XCIsZ2FwOnI9XCJzbWFsbFwiLG1lc3NhZ2U6byxuYW1lOmEsY2hpbGRyZW46Y30pPT4oMCxpLmpzeHMpKGYse2NoaWxkcmVuOlsoMCxpLmpzeCkocCxPYmplY3QuYXNzaWduKHtkaXJlY3Rpb246ZSxsYWJlbFNpZGU6bixnYXA6cn0se2NoaWxkcmVuOmwuQ2hpbGRyZW4ubWFwKGMsKGU9Pntjb25zdCByPWU7cmV0dXJuIHIudHlwZT09PWQuUmFkaW9JbnB1dD9sLmNsb25lRWxlbWVudChyLHtuYW1lOmEsbGFiZWxTaWRlOm4sZGlzYWJsZWQ6dH0pOnJ9KSl9KSksbz8oMCxpLmpzeCkoaCxPYmplY3QuYXNzaWduKHtkaXNhYmxlZDp0fSx7Y2hpbGRyZW46b30pKTpudWxsXX0pO2NvbnN0IGY9KDAsYy5kZWZhdWx0KShzLkJveClgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiBtYXgtY29udGVudDtcbmAscD0oMCxjLmRlZmF1bHQpKHMuQm94KWBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7ZT0+ZS5kaXJlY3Rpb259O1xuICBhbGlnbi1pdGVtczogJHtlPT57c3dpdGNoKGUubGFiZWxTaWRlKXtjYXNlXCJsZWZ0XCI6cmV0dXJuXCJlbmRcIjtjYXNlXCJyaWdodFwiOnJldHVyblwic3RhcnRcIjtkZWZhdWx0OnJldHVyblwiY2VudGVyXCJ9fX07XG4gIHdpZHRoOiBmaXQtY29udGVudDtcbmAsaD0oMCxjLmRlZmF1bHQpKHUuVGV4dClgXG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcn07XG4gIG1hcmdpbi10b3A6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG5cbiAgJHsoe2Rpc2FibGVkOmV9KT0+ZSYmYy5jc3NgXG4gICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICAgIGB9XG5gfSwzNjQxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigyNTY1KSx0KX0sMjU2NTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGE9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH0saT10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlJhZGlvSW5wdXQ9dm9pZCAwO2NvbnN0IGw9big1ODkzKSxjPW4oNzc2OSkscz1hKG4oNjY4OSkpLHU9YShuKDc1MTgpKSxkPW4oMTMzNSksZj1uKDk2MzQpO3QuUmFkaW9JbnB1dD1zLmZvcndhcmRSZWYoKChlLHQpPT57dmFye2Rpc2FibGVkOm4saWQ6cixsYWJlbDpvLGxhYmVsU2lkZTphLGljb246Y309ZSxzPWkoZSxbXCJkaXNhYmxlZFwiLFwiaWRcIixcImxhYmVsXCIsXCJsYWJlbFNpZGVcIixcImljb25cIl0pO3JldHVybigwLGwuanN4KShwLHtjaGlsZHJlbjooMCxsLmpzeHMpKHYsT2JqZWN0LmFzc2lnbih7YXM6XCJsYWJlbFwiLGh0bWxGb3I6cixsYWJlbFNpZGU6YSxkaXNhYmxlZDpufSx7Y2hpbGRyZW46WygwLGwuanN4KShDLE9iamVjdC5hc3NpZ24oe3JlZjp0LHR5cGU6XCJyYWRpb1wiLGRpc2FibGVkOm59LHMpKSwoMCxsLmpzeCkoaCx7fSksISFjJiYoMCxsLmpzeCkoZi5JY29uLHtpY29uOmN9KSxvfHxcIlwiXX0pKX0pfSkpLHQuUmFkaW9JbnB1dC5kaXNwbGF5TmFtZT1cIlJhZGlvSW5wdXRcIjtjb25zdCBwPSgwLHUuZGVmYXVsdCkoZC5Cb3gpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuYCxoPXUuZGVmYXVsdC5kaXZgXG4gIHdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBoZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiAycHg7XG4gIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG5cbiAgaW5wdXQ6Y2hlY2tlZCB+ICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICAgIHdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gICAgaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIH1cblxuICBpbnB1dDpkaXNhYmxlZCB+ICYge1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICB9XG5cbiAgaW5wdXQ6ZGlzYWJsZWQgfiAmOmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gIH1cbmAsQz11LmRlZmF1bHQuaW5wdXRgXG4gIG9wYWNpdHk6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6ZGlzYWJsZWQge1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgfVxuYCx2PSgwLHUuZGVmYXVsdCkoYy5UZXh0KWBcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4LWRpcmVjdGlvbjogJHsoe2xhYmVsU2lkZTplfSk9Pntzd2l0Y2goZXx8XCJyaWdodFwiKXtjYXNlXCJsZWZ0XCI6cmV0dXJuXCJyb3ctcmV2ZXJzZVwiO2Nhc2VcInJpZ2h0XCI6cmV0dXJuXCJyb3dcIjtjYXNlXCJ0b3BcIjpyZXR1cm5cImNvbHVtbi1yZXZlcnNlXCI7Y2FzZVwiYm90dG9tXCI6cmV0dXJuXCJjb2x1bW5cIn19fTtcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICR7KHtkaXNhYmxlZDplfSk9PmU/dS5jc3NgXG4gICAgICAgICAgJiB7XG4gICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgICAgICAgYDpudWxsfVxuYH0sODUxMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNzQyOSksdCl9LDc0Mjk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuUmF3SW5wdXQ9dm9pZCAwO2NvbnN0IG89cihuKDc1MTgpKTt0LlJhd0lucHV0PW8uZGVmYXVsdC5pbnB1dGBgLHQuUmF3SW5wdXQuZGlzcGxheU5hbWU9XCJSYXdJbnB1dFwifSwzMTE5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig3OTkpLHQpfSw3OTk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVGV4dEFyZWE9dm9pZCAwO2NvbnN0IG89big1ODkzKSxhPW4oNjY4OSksaT1yKG4oNzUxOCkpLGw9big5NTA3KSxjPW4oOTUwNykscz1uKDk1MDcpO3QuVGV4dEFyZWE9KDAsYS5mb3J3YXJkUmVmKSgoKGUsdCk9PigwLG8uanN4KSh1LE9iamVjdC5hc3NpZ24oe3JlZjp0fSxlLHtvbkNoYW5nZTplLm9uQ2hhbmdlfSkpKSksdC5UZXh0QXJlYS5kaXNwbGF5TmFtZT1cIlRleHRBcmVhXCI7Y29uc3QgdT1pLmRlZmF1bHQudGV4dGFyZWFgXG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEJvcmRlcn07XG4gIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmUsc3RhdHVzOnR9KT0+KDAscy5nZXRTdGF0dXNDb2xvcikoZSx0LFwiaW5wdXRCb3JkZXJcIil9O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIHdpZHRoOiAxMDAlO1xuICByZXNpemU6IG5vbmU7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gICR7bC5NaXhpbnMuc2Nyb2xsYmFyLnNtYWxsfTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dENvbG9yfTtcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5saW5lSGVpZ2h0LnRleHR9O1xuICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0Lm5vcm1hbH07XG4gIGZvbnQtZmFtaWx5OiAke2MuRm9udFN0YWNrfTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH0gJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH0gMHB4XG4gICAgJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplLHN0YXR1czp0fSk9PigwLHMuZ2V0U3RhdHVzQ29sb3IpKGUsdCxcImlucHV0Rm9jdXNlZFwiKX07XG4gIH1cblxuICAmOmRpc2FibGVkOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgfVxuYH0sODk1MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMjM1MiksdCl9LDIzNTI6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVGV4dElucHV0PXZvaWQgMDtjb25zdCByPW4oNTg5Myksbz1uKDY2ODkpLGE9big4ODc4KTt0LlRleHRJbnB1dD0oMCxvLmZvcndhcmRSZWYpKCgoZSx0KT0+KDAsci5qc3gpKGEuQmFzZUlucHV0LE9iamVjdC5hc3NpZ24oe3JlZjp0LHR5cGU6XCJ0ZXh0XCJ9LGUpKSkpLHQuVGV4dElucHV0LmRpc3BsYXlOYW1lPVwiVGV4dElucHV0XCJ9LDMzMzk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQm94PXZvaWQgMDtjb25zdCBvPXIobig3NTE4KSksYT1uKDg3MzIpLGk9big1NDU5KSxsPXsxOmkuUGFsZXR0ZS5iYWNrZ3JvdW5kMSwyOmkuUGFsZXR0ZS5iYWNrZ3JvdW5kMiwzOmkuUGFsZXR0ZS5iYWNrZ3JvdW5kMyw0OmkuUGFsZXR0ZS5iYWNrZ3JvdW5kNCw1OmkuUGFsZXR0ZS5iYWNrZ3JvdW5kNSw2OmkuUGFsZXR0ZS5iYWNrZ3JvdW5kNn07dC5Cb3g9by5kZWZhdWx0LmRpdmBcbiAgLyoqXG4gICAqIFN0eWxlIFNjcm9sbGJhciBmb3IgQm94ZXMgd2l0aCBvdmVyZmxvd1xuICAgKi9cbiAgJHthLk1peGlucy5zY3JvbGxiYXIuYmFzZX1cblxuICBkaXNwbGF5OiAkeyh7ZGlzcGxheTplPVwiZmxleFwifSk9PmV9O1xuICBmbGV4LWRpcmVjdGlvbjogJHsoe2ZsZXhEaXJlY3Rpb246ZT1cInJvd1wifSk9PmV9O1xuICBmbGV4LXdyYXA6ICR7KHtmbGV4V3JhcDplPVwibm93cmFwXCJ9KT0+ZX07XG4gIGFsaWduLWl0ZW1zOiAkeyh7YWxpZ25JdGVtczplfSk9PmV9O1xuICBqdXN0aWZ5LWNvbnRlbnQ6ICR7KHtqdXN0aWZ5Q29udGVudDplfSk9PmV9O1xuICBnYXA6ICR7KHt0aGVtZTplLGdhcDp0fSk9PnQmJmUucHhbdF19O1xuICBhbGlnbi1zZWxmOiAkeyh7YWxpZ25TZWxmOmV9KT0+ZX07XG4gIGZsZXgtYmFzaXM6ICR7KHtmbGV4QmFzaXM6ZX0pPT5lfTtcbiAgZmxleC1ncm93OiAkeyh7ZmxleEdyb3c6ZX0pPT5lfTtcbiAgZmxleC1zaHJpbms6ICR7KHtmbGV4U2hyaW5rOmV9KT0+ZX07XG4gIG9yZGVyOiAkeyh7b3JkZXI6ZX0pPT5lfTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmUscGFkZGluZzp0fSk9PnQmJmUucHhbdF19O1xuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZSxiYWNrZ3JvdW5kOnR9KT0+dCYmZS5wYWxldHRlW2xbdF1dfTtcbmAsdC5Cb3guZGlzcGxheU5hbWU9XCJCb3hcIn0sMTMzNTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzMzOSksdCl9LDY3MTA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5EZWZpbml0aW9uTGlzdD12b2lkIDA7Y29uc3QgYT1uKDU4OTMpLGk9byhuKDc1MTgpKTt0LkRlZmluaXRpb25MaXN0PWU9Pnt2YXJ7ZGVmaW5pdGlvbnM6dH09ZSxuPXIoZSxbXCJkZWZpbml0aW9uc1wiXSk7cmV0dXJuKDAsYS5qc3gpKGMsT2JqZWN0LmFzc2lnbih7fSxuLHtyb2xlOlwibGlzdFwifSx7Y2hpbGRyZW46KEFycmF5LmlzQXJyYXkodCk/dDpBcnJheS5mcm9tKHQpKS5tYXAoKChbZSx0XSxuKT0+KDAsYS5qc3hzKShsLE9iamVjdC5hc3NpZ24oe3JvbGU6XCJsaXN0aXRlbVwifSx7Y2hpbGRyZW46WygwLGEuanN4KShzLE9iamVjdC5hc3NpZ24oe2lkOmB0ZXJtJHtufWB9LHtjaGlsZHJlbjplfSkpLCgwLGEuanN4KSh1LE9iamVjdC5hc3NpZ24oe1wiYXJpYS1sYWJlbGxlZGJ5XCI6YHRlcm0ke259YH0se2NoaWxkcmVuOnR9KSldfSksYCR7ZX0tJHtufWApKSl9KSl9O2NvbnN0IGw9aS5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgM2ZyO1xuYCxjPWkuZGVmYXVsdC5kbGBcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5gMCAke2UucHgubGFyZ2V9YH07XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5iYXNlfWB9O1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuYCxzPWkuZGVmYXVsdC5kdGBcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0SGVscH07XG4gIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5zbWFsbH07XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRXZWlnaHQubm9ybWFsfTtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbmAsdT1pLmRlZmF1bHQuZGRgXG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuc21hbGx9O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgcGFkZGluZy1ib3R0b206ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuYH0sNTM3NzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNjcxMCksdCl9LDk0MzE6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuR2xvYmFsU3R5bGVzPXZvaWQgMDtjb25zdCByPW4oNzUxOCksbz1uKDM0NzEpLGE9big1NzUpO3QuR2xvYmFsU3R5bGVzPXIuY3JlYXRlR2xvYmFsU3R5bGVgXG4gIC8qKiAtPiBEZWZpbmUgR2xvYmFsIENTUyBWYXJzICovXG4gIDpyb290IHtcbiAgICAtLW9wZW5maW4tdWktZ2xvYmFsQmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQxfTtcbiAgICAtLW9wZW5maW4tdWktZ2xvYmFsVGV4dDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICAtLW9wZW5maW4tdWktZ2xvYmFsUGxhY2Vob2xkZXI6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dFBsYWNlaG9sZGVyfTtcbiAgICAtLW9wZW5maW4tdWktZ2xvYmFsVHlwb2dyYXBoeTogJHtvLlR5cG9ncmFwaHkuYmFzZX07XG4gICAgLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb246ICR7KHt0aGVtZTplfSk9PmUudHJhbnNpdGlvbi5iYXNlfTtcblxuICAgIC8qIE1hcCBvdmVyIHRoZSBwYWxldHRlIGtleXMgYW5kIGNyZWF0ZSB2YXJpYWJsZXMgb3V0IG9mIHRoZW0gKi9cbiAgICAke2EuZ2V0Um9vdENzc1ZhcnN9XG4gIH1cblxuICAvKiogLT4gQGZvbnQtZmFjZSBEZWNsYXJhdGlvbiAqL1xuICAke2EuZ2V0Rm9udEZhY2VzfVxuXG4gIC8qKiAtPiBNaWNybyBSZXNldCAqL1xuICAqIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIC8qKlxuICAgICAqIFByZXZlbnQgYnJvd3NlciBhdXRvLXdlaWdodGluZ1xuICAgICAqIEBsaW5rIGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vYWxtYW5hYy9wcm9wZXJ0aWVzL2YvZm9udC1zeW50aGVzaXMvXG4gICAgICovXG4gICAgZm9udC1zeW50aGVzaXM6IG5vbmU7XG4gIH1cblxuICAvKiogLT4gQXBwbHkgR2xvYmFsIFN0eWxlcyAqL1xuICA6cm9vdCxcbiAgYm9keSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxCYWNrZ3JvdW5kKTtcbiAgICBjb2xvcjogdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUZXh0KTtcbiAgICBmb250OiB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFR5cG9ncmFwaHkpO1xuICB9XG5cbiAgOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW9wZW5maW4tdWktZ2xvYmFsUGxhY2Vob2xkZXIpO1xuICB9XG5cbiAgLyoqIC0+IFJlZHVjZWQgTW90aW9uIChBY2Nlc3NpYmlsaXR5KSAqL1xuICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb24pIHtcbiAgICA6cm9vdCB7XG4gICAgICAtLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbjogJHsoe3RoZW1lOmV9KT0+ZS50cmFuc2l0aW9uLm5vbmV9O1xuICAgIH1cbiAgfVxuYH0sMTA2OTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oOTQzMSksdCl9LDk1MDc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDM0NzEpLHQpLG8obig2NzE0KSx0KSxvKG4oOTI3MiksdCksbyhuKDU3NSksdCksbyhuKDE0NDEpLHQpLG8obig4NzMyKSx0KSxvKG4oNTQ1OSksdCksbyhuKDUzMTcpLHQpLG8obig0MjApLHQpfSw5OTg0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldE1vc3RSZWFkYWJsZT10LmRhcmtlbkNvbG9yPXQubGlnaHRlbkNvbG9yPXZvaWQgMDtjb25zdCBvPXIobig4MjA3KSk7dC5saWdodGVuQ29sb3I9KGUsdCk9PmEoZSxcImxpZ2h0ZW5cIix0KSx0LmRhcmtlbkNvbG9yPShlLHQpPT5hKGUsXCJkYXJrZW5cIix0KTtjb25zdCBhPShlLHQsbik9PntpZihuJiYobjwwfHxuPjEwMCkpdGhyb3cgbmV3IEVycm9yKGAke259IG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMDBgKTtyZXR1cm4oMCxvLmRlZmF1bHQpKGUpW3RdKG4pLnRvU3RyaW5nKCl9O3QuZ2V0TW9zdFJlYWRhYmxlPShlLHQpPT5vLmRlZmF1bHQubW9zdFJlYWRhYmxlKGUsdCkudG9IZXhTdHJpbmcoKX0sODAyOTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29uZmlndXJhdGlvbj12b2lkIDAsdC5Db25maWd1cmF0aW9uPXtmb250TG9hZGluZzpcImNkblwifX0sMzQ3MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGE9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5jZG5Gb250RmFjZUNzcz10Lkljb25TaXplPXQuSWNvblNldD10LlRyYW5zaXRpb249dC5UeXBvZ3JhcGh5PXQuTGluZUhlaWdodD10LkZvbnRXZWlnaHQ9dC5Gb250U2l6ZT10LkZvbnRTdGFjaz10LlNoYWRvdz10LlJhZGl1cz10LlVuaXRQeD10LlVuaXQ9dC5TaXplTmFtZT10LlNpemU9dC5Db2xvcj12b2lkIDA7Y29uc3QgaT1hKG4oMTUyMSkpLGw9YShuKDI3NzIpKSxjPW4oOTI3Mik7dC5Db2xvcj17d2hpdGU6XCIjRkZGRkZGXCIsbGlnaHRHcmF5MTpcIiNGQUZCRkVcIixsaWdodEdyYXkyOlwiI0YzRjVGOFwiLGxpZ2h0R3JheTM6XCIjRUNFRUYxXCIsbGlnaHRHcmF5NDpcIiNERERGRTRcIixsaWdodEdyYXk1OlwiI0M5Q0JEMlwiLG5ldXRyYWxHcmF5OlwiIzdEODA4QVwiLG5ldXRyYWxHcmF5ODA6XCJyZ2JhKDEyNSwxMjgsMTM4LDAuOClcIixzaWx2ZXJHcmF5OlwiI0MwQzFDMlwiLGRhcmtHcmF5MTpcIiM1MzU2NUZcIixkYXJrR3JheTI6XCIjMzgzQTQwXCIsZGFya0dyYXkzOlwiIzJGMzEzNlwiLGRhcmtHcmF5NDpcIiMyNDI2MkJcIixkYXJrR3JheTU6XCIjMUUxRjIzXCIsZGFya0dyYXk2OlwiIzExMTIxNFwiLG9wZW5GaW5EYXJrZXN0OlwiIzNEMzlDRFwiLG9wZW5GaW5EYXJrZXI6XCIjNDY0MkUwXCIsb3BlbkZpbjpcIiM1MDRDRkZcIixvcGVuRmluTGlnaHQ6XCIjNTI1NEZCXCIsb3BlbkZpbkxpZ2h0ZXI6XCIjNUM1RUZFXCIsb3BlbkZpbkxpZ2h0ZXN0OlwiIzY4NjRGRlwiLGZ1bmN0aW9uYWwxOlwiIzIwNzczNVwiLGZ1bmN0aW9uYWwyOlwiIzQ2QzhGMVwiLGZ1bmN0aW9uYWwzOlwiIzBBNzZEM1wiLGZ1bmN0aW9uYWw0OlwiIzZDQURFNVwiLGZ1bmN0aW9uYWw1OlwiIzBBNzZEM1wiLGZ1bmN0aW9uYWw2OlwiIzg4MkJGRVwiLGZ1bmN0aW9uYWw3OlwiI0YzMTgxOFwiLGZ1bmN0aW9uYWw4OlwiI0M5MzQwMFwiLGZ1bmN0aW9uYWw5OlwiI0ZGNUU2MFwiLGZ1bmN0aW9uYWwxMDpcIiNGNDhGMDBcIixwdXJwbGU6XCIjOEM2MUZGXCIsbGlnaHRibHVlOlwiIzM2QzNGRVwiLGFxdWE6XCIjMDBDQzg4XCIseWVsbG93OlwiI0ZGRUIwMFwiLHNhbG1vbjpcIiNGRjhDNENcIixwaW5rOlwiI0ZGNUU2MFwiLGxpZ2h0cGluazpcIiNGRjhGQjhcIix3aGl0ZTAwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjApXCIsd2hpdGUxMDpcInJnYmEoMjU1LDI1NSwyNTUsMC4xKVwiLHdoaXRlMjA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuMilcIix3aGl0ZTMwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjMpXCIsd2hpdGU0MDpcInJnYmEoMjU1LDI1NSwyNTUsMC40KVwiLHdoaXRlNTA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNSlcIix3aGl0ZTYwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjYpXCIsd2hpdGU3MDpcInJnYmEoMjU1LDI1NSwyNTUsMC43KVwiLHdoaXRlODA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuOClcIix3aGl0ZTkwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjkpXCIsYmxhY2swMDpcInJnYmEoMCwwLDAsMC4wKVwiLGJsYWNrMTA6XCJyZ2JhKDAsMCwwLDAuMSlcIixibGFjazIwOlwicmdiYSgwLDAsMCwwLjIpXCIsYmxhY2szMDpcInJnYmEoMCwwLDAsMC4zKVwiLGJsYWNrNDA6XCJyZ2JhKDAsMCwwLDAuNClcIixibGFjazUwOlwicmdiYSgwLDAsMCwwLjUpXCIsYmxhY2s2MDpcInJnYmEoMCwwLDAsMC42KVwiLGJsYWNrNzA6XCJyZ2JhKDAsMCwwLDAuNylcIixibGFjazgwOlwicmdiYSgwLDAsMCwwLjgpXCIsYmxhY2s5MDpcInJnYmEoMCwwLDAsMC45KVwiLHRyYW5zcGFyZW50OlwidHJhbnNwYXJlbnRcIn0sdC5TaXplPXt4c21hbGw6XCJ4c21hbGxcIixzbWFsbDpcInNtYWxsXCIsYmFzZTpcImJhc2VcIixsYXJnZTpcImxhcmdlXCIseGxhcmdlOlwieGxhcmdlXCIseHhsYXJnZTpcInh4bGFyZ2VcIix4eHhsYXJnZTpcInh4eGxhcmdlXCIseHh4eGxhcmdlOlwieHh4eGxhcmdlXCJ9LHQuU2l6ZU5hbWU9e1t0LlNpemUueHNtYWxsXTpcIkV4dHJhIFNtYWxsXCIsW3QuU2l6ZS5zbWFsbF06XCJTbWFsbFwiLFt0LlNpemUuYmFzZV06XCJCYXNlXCIsW3QuU2l6ZS5sYXJnZV06XCJMYXJnZVwiLFt0LlNpemUueGxhcmdlXTpcIkV4dHJhIExhcmdlXCIsW3QuU2l6ZS54eGxhcmdlXTpcIjJYIExhcmdlXCIsW3QuU2l6ZS54eHhsYXJnZV06XCIzWCBMYXJnZVwiLFt0LlNpemUueHh4eGxhcmdlXTpcIjRYIExhcmdlXCJ9LHQuVW5pdD17W3QuU2l6ZS54c21hbGxdOjQsW3QuU2l6ZS5zbWFsbF06OCxbdC5TaXplLmJhc2VdOjEyLFt0LlNpemUubGFyZ2VdOjE2LFt0LlNpemUueGxhcmdlXToyMCxbdC5TaXplLnh4bGFyZ2VdOjI0LFt0LlNpemUueHh4bGFyZ2VdOjMyLFt0LlNpemUueHh4eGxhcmdlXTo0OH0sdC5Vbml0UHg9e1t0LlNpemUueHNtYWxsXTpcIjRweFwiLFt0LlNpemUuc21hbGxdOlwiOHB4XCIsW3QuU2l6ZS5iYXNlXTpcIjEycHhcIixbdC5TaXplLmxhcmdlXTpcIjE2cHhcIixbdC5TaXplLnhsYXJnZV06XCIyMHB4XCIsW3QuU2l6ZS54eGxhcmdlXTpcIjI0cHhcIixbdC5TaXplLnh4eGxhcmdlXTpcIjMycHhcIixbdC5TaXplLnh4eHhsYXJnZV06XCI0OHB4XCJ9LHQuUmFkaXVzPXtbdC5TaXplLnhzbWFsbF06XCIycHhcIixbdC5TaXplLnNtYWxsXTpcIjRweFwiLFt0LlNpemUuYmFzZV06XCI4cHhcIixbdC5TaXplLmxhcmdlXTpcIjI0cHhcIixwaWxsOlwiMTAwdmhcIixyb3VuZDpcIjUwJVwiLG5vbmU6XCIwXCJ9LHQuU2hhZG93PXtbdC5TaXplLmJhc2VdOlwiMCA0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yNSlcIn0sdC5Gb250U3RhY2s9W1wiSW50ZXJcIixcIi1hcHBsZS1zeXN0ZW1cIixcIkJsaW5rTWFjU3lzdGVtRm9udFwiLFwiU2Vnb2UgVUlcIixcIlJvYm90b1wiLFwiT3h5Z2VuLVNhbnNcIixcIlVidW50dVwiLFwiQ2FudGFyZWxsXCIsXCJIZWx2ZXRpY2EgTmV1ZVwiLFwic2Fucy1zZXJpZlwiXS5qb2luKFwiLCBcIiksdC5Gb250U2l6ZT17W3QuU2l6ZS54c21hbGxdOlwiOHB4XCIsW3QuU2l6ZS5zbWFsbF06XCIxMHB4XCIsW3QuU2l6ZS5iYXNlXTpcIjEycHhcIixbdC5TaXplLmxhcmdlXTpcIjE0cHhcIixbdC5TaXplLnhsYXJnZV06XCIxNnB4XCIsW3QuU2l6ZS54eGxhcmdlXTpcIjE4cHhcIixbdC5TaXplLnh4eGxhcmdlXTpcIjIwcHhcIixbdC5TaXplLnh4eHhsYXJnZV06XCI0MHB4XCJ9LHQuRm9udFdlaWdodD17bm9ybWFsOjQwMCxib2xkOjYwMH0sdC5MaW5lSGVpZ2h0PXt1aToxLGhlYWRpbmc6MS4yLHRleHQ6MS41fSx0LlR5cG9ncmFwaHk9e2Jhc2U6YCR7dC5Gb250U2l6ZS5iYXNlfS8ke3QuTGluZUhlaWdodC50ZXh0fSAke3QuRm9udFN0YWNrfWB9LHQuVHJhbnNpdGlvbj17YmFzZTpcIjIwMG1zIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpXCIsbm9uZTpcIjBtc1wifSx0Lkljb25TZXQ9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLGwpLHQuSWNvblNpemU9e1t0LlNpemUueHNtYWxsXTp0LlVuaXRQeC5zbWFsbCxbdC5TaXplLnNtYWxsXTp0LlVuaXRQeC5iYXNlLFt0LlNpemUuYmFzZV06XCIxNXB4XCIsW3QuU2l6ZS5sYXJnZV06dC5Vbml0UHgueGxhcmdlLFt0LlNpemUueGxhcmdlXTp0LlVuaXRQeC54eGxhcmdlLFt0LlNpemUueHhsYXJnZV06dC5Vbml0UHgueHh4bGFyZ2UsW3QuU2l6ZS54eHhsYXJnZV06dC5Vbml0UHgueHh4eGxhcmdlfSx0LmNkbkZvbnRGYWNlQ3NzPSgwLGMuY3JlYXRlRm9udEZhY2VDc3MpKHtyZWd1bGFyOlwiLy9jZG4ub3BlbmZpbi5jby9mb250cy9pbnRlci9JbnRlci1SZWd1bGFyLndvZmYyP3YzLjE1XCIsaXRhbGljOlwiLy9jZG4ub3BlbmZpbi5jby9mb250cy9pbnRlci9JbnRlci1JdGFsaWMud29mZjI/djMuMTVcIixzZW1pQm9sZDpcIi8vY2RuLm9wZW5maW4uY28vZm9udHMvaW50ZXIvSW50ZXItU2VtaUJvbGQud29mZjI/djMuMTVcIixzZW1pQm9sZEl0YWxpYzpcIi8vY2RuLm9wZW5maW4uY28vZm9udHMvaW50ZXIvSW50ZXItU2VtaUJvbGRJdGFsaWMud29mZjI/djMuMTVcIn0pfSw5MjcyOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNyZWF0ZUZvbnRGYWNlQ3NzPXZvaWQgMDtjb25zdCByPW4oNzUxOCksbz1uKDM0NzEpO3QuY3JlYXRlRm9udEZhY2VDc3M9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY3NzYFxuICAgIEBmb250LWZhY2Uge1xuICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICBzcmM6IHVybCgke2UucmVndWxhcn0pIGZvcm1hdCgnd29mZjInKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke28uRm9udFdlaWdodC5ub3JtYWx9O1xuICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgIH1cbiAgICBAZm9udC1mYWNlIHtcbiAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInO1xuICAgICAgc3JjOiB1cmwoJHtlLml0YWxpY30pIGZvcm1hdCgnd29mZjInKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke28uRm9udFdlaWdodC5ub3JtYWx9O1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgIH1cblxuICAgIEBmb250LWZhY2Uge1xuICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICBzcmM6IHVybCgke2Uuc2VtaUJvbGR9KSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgICBmb250LXdlaWdodDogJHtvLkZvbnRXZWlnaHQuYm9sZH07XG4gICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgfVxuXG4gICAgQGZvbnQtZmFjZSB7XG4gICAgICBmb250LWZhbWlseTogJ0ludGVyJztcbiAgICAgIHNyYzogdXJsKCR7ZS5zZW1pQm9sZEl0YWxpY30pIGZvcm1hdCgnd29mZjInKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke28uRm9udFdlaWdodC5ib2xkfTtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICB9XG4gIGB9fSw2NzE0OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNyZWF0ZVRoZW1lPXZvaWQgMDtjb25zdCByPW4oODAyOSksbz1uKDM0NzEpLGE9big5OTg0KSxpPW4oNTQ1OSksbD17X2NvbmZpZzpyLkNvbmZpZ3VyYXRpb24sX2NvbG9yOm8uQ29sb3IsZm9udFNpemU6by5Gb250U2l6ZSxmb250V2VpZ2h0Om8uRm9udFdlaWdodCxsaW5lSGVpZ2h0Om8uTGluZUhlaWdodCxpY29uU2l6ZTpvLkljb25TaXplLHJhZGl1czpvLlJhZGl1cyxzaGFkb3c6by5TaGFkb3csdHJhbnNpdGlvbjpvLlRyYW5zaXRpb24sdW5pdDpvLlVuaXQscHg6by5Vbml0UHh9LGM9KGUsdCk9Pih7W2Ake2V9QWN0aXZlYF06KDAsYS5kYXJrZW5Db2xvcikodCwyKSxbYCR7ZX1Ib3ZlcmBdOigwLGEubGlnaHRlbkNvbG9yKSh0LDUpLFtgJHtlfUZvY3VzZWRgXTooMCxhLmdldE1vc3RSZWFkYWJsZSkodCxbby5Db2xvci53aGl0ZSxvLkNvbG9yLmRhcmtHcmF5NV0pLFtgJHtlfVRleHRgXTooMCxhLmdldE1vc3RSZWFkYWJsZSkodCxbby5Db2xvci53aGl0ZSxvLkNvbG9yLmRhcmtHcmF5NV0pfSk7dC5jcmVhdGVUaGVtZT0oZSx0PVwiZGFya1wiKT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGwpLHtwYWxldHRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLGMoaS5QYWxldHRlLmJyYW5kUHJpbWFyeSxlLmJyYW5kUHJpbWFyeSkpLGMoaS5QYWxldHRlLmJyYW5kU2Vjb25kYXJ5LGUuYnJhbmRTZWNvbmRhcnkpKX0pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3NlbGVjdGVkU2NoZW1lOnR9KX19LDU3NTooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZXRTdGF0dXNDb2xvcj10LmdldEZvbnRGYWNlcz10LmdldFJvb3RDc3NWYXJzPXQuZ2V0VmFyaWFudENTUz12b2lkIDA7Y29uc3Qgcj1uKDM0NzEpLG89big1NDU5KTt0LmdldFZhcmlhbnRDU1M9KGUsdCk9Pm49PmVbdF1bblt0XV0sdC5nZXRSb290Q3NzVmFycz0oe3RoZW1lOmV9KT0+T2JqZWN0LmtleXMoby5QYWxldHRlKS5tYXAoKHQ9PmAtLW9wZW5maW4tdWktJHt0fTogJHtlLnBhbGV0dGVbdF19O2ApKS5qb2luKFwiXFxuXCIpLHQuZ2V0Rm9udEZhY2VzPSh7dGhlbWU6ZX0pPT5cImltcG9ydFwiPT09ZS5fY29uZmlnLmZvbnRMb2FkaW5nP2UuX2NvbmZpZy5mb250Q3NzOnIuY2RuRm9udEZhY2VDc3MsdC5nZXRTdGF0dXNDb2xvcj0oZSx0LG4pPT57c3dpdGNoKHQpe2Nhc2VcImFjdGl2ZVwiOnJldHVybiBlLnBhbGV0dGUuc3RhdHVzQWN0aXZlO2Nhc2VcImNyaXRpY2FsXCI6cmV0dXJuIGUucGFsZXR0ZS5zdGF0dXNDcml0aWNhbDtjYXNlXCJ3YXJuaW5nXCI6cmV0dXJuIGUucGFsZXR0ZS5zdGF0dXNXYXJuaW5nO2Nhc2VcInN1Y2Nlc3NcIjpyZXR1cm4gZS5wYWxldHRlLnN0YXR1c1N1Y2Nlc3M7ZGVmYXVsdDpyZXR1cm4gbj9lLnBhbGV0dGVbbl06XCJpbmhlcml0XCJ9fX0sMTQ0MTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSw4NzMyOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk1peGlucz12b2lkIDA7Y29uc3Qgcj1uKDM0NzEpLG89big3NTE4KSxhPW8uY3NzYFxuICB1c2VyLXNlbGVjdDogbm9uZTtcbmAsaT1vLmNzc2BcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gLGw9by5jc3NgXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogdmFyKC0tc2Nyb2xsYmFyU2l6ZSwgJHtyLlVuaXRQeC54c21hbGx9KTtcbiAgICBoZWlnaHQ6IHZhcigtLXNjcm9sbGJhclNpemUsICR7ci5Vbml0UHgueHNtYWxsfSk7XG4gIH1cblxuICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogJHtyLkNvbG9yLm5ldXRyYWxHcmF5ODB9O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNjcm9sbGJhclNpemUsICR7ci5Vbml0UHgueHNtYWxsfSk7XG4gICAgb3BhY2l0eTogMC44O1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICR7ci5Db2xvci53aGl0ZTgwfTtcbiAgICB3aWR0aDogdmFyKC0tc2Nyb2xsYmFyU2l6ZSwgJHtyLlVuaXRQeC54c21hbGx9KTtcbiAgICBoZWlnaHQ6IHZhcigtLXNjcm9sbGJhclNpemUsICR7ci5Vbml0UHgueHNtYWxsfSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2Nyb2xsYmFyU2l6ZSwgJHtyLlVuaXRQeC54c21hbGx9KTtcbiAgICBvcGFjaXR5OiAwLjg7XG4gIH1cbmAsYz1vLmNzc2BcbiAgLS1zY3JvbGxiYXJTaXplOiAycHg7XG4gICR7bH07XG5gLHM9by5jc3NgXG4gIC13ZWJraXQtYXBwLXJlZ2lvbjogZHJhZztcbmAsdT1vLmNzc2BcbiAgLXdlYmtpdC1hcHAtcmVnaW9uOiBuby1kcmFnO1xuYDt0Lk1peGlucz17bm9TZWxlY3Q6YSx0ZXh0T3ZlcmZsb3c6aSxzY3JvbGxiYXI6e1tyLlNpemUuYmFzZV06bCxbci5TaXplLnNtYWxsXTpjfSxhcHBSZWdpb246e2RyYWc6cyxub0RyYWc6dX19fSw1NDU5OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5QYWxldHRlPXZvaWQgMCx0LlBhbGV0dGU9e2JhY2tncm91bmQxOlwiYmFja2dyb3VuZDFcIixiYWNrZ3JvdW5kMjpcImJhY2tncm91bmQyXCIsYmFja2dyb3VuZDM6XCJiYWNrZ3JvdW5kM1wiLGJhY2tncm91bmQ0OlwiYmFja2dyb3VuZDRcIixiYWNrZ3JvdW5kNTpcImJhY2tncm91bmQ1XCIsYmFja2dyb3VuZDY6XCJiYWNrZ3JvdW5kNlwiLGJyYW5kUHJpbWFyeTpcImJyYW5kUHJpbWFyeVwiLGJyYW5kU2Vjb25kYXJ5OlwiYnJhbmRTZWNvbmRhcnlcIixicmFuZFByaW1hcnlBY3RpdmU6XCJicmFuZFByaW1hcnlBY3RpdmVcIixicmFuZFByaW1hcnlIb3ZlcjpcImJyYW5kUHJpbWFyeUhvdmVyXCIsYnJhbmRQcmltYXJ5Rm9jdXNlZDpcImJyYW5kUHJpbWFyeUZvY3VzZWRcIixicmFuZFByaW1hcnlUZXh0OlwiYnJhbmRQcmltYXJ5VGV4dFwiLGJyYW5kU2Vjb25kYXJ5QWN0aXZlOlwiYnJhbmRTZWNvbmRhcnlBY3RpdmVcIixicmFuZFNlY29uZGFyeUhvdmVyOlwiYnJhbmRTZWNvbmRhcnlIb3ZlclwiLGJyYW5kU2Vjb25kYXJ5Rm9jdXNlZDpcImJyYW5kU2Vjb25kYXJ5Rm9jdXNlZFwiLGJyYW5kU2Vjb25kYXJ5VGV4dDpcImJyYW5kU2Vjb25kYXJ5VGV4dFwiLGlucHV0QmFja2dyb3VuZDpcImlucHV0QmFja2dyb3VuZFwiLGlucHV0Q29sb3I6XCJpbnB1dENvbG9yXCIsaW5wdXRQbGFjZWhvbGRlcjpcImlucHV0UGxhY2Vob2xkZXJcIixpbnB1dERpc2FibGVkOlwiaW5wdXREaXNhYmxlZFwiLGlucHV0Rm9jdXNlZDpcImlucHV0Rm9jdXNlZFwiLGlucHV0Qm9yZGVyOlwiaW5wdXRCb3JkZXJcIixzdGF0dXNTdWNjZXNzOlwic3RhdHVzU3VjY2Vzc1wiLHN0YXR1c1dhcm5pbmc6XCJzdGF0dXNXYXJuaW5nXCIsc3RhdHVzQ3JpdGljYWw6XCJzdGF0dXNDcml0aWNhbFwiLHN0YXR1c0FjdGl2ZTpcInN0YXR1c0FjdGl2ZVwiLHRleHREZWZhdWx0OlwidGV4dERlZmF1bHRcIix0ZXh0SGVscDpcInRleHRIZWxwXCIsdGV4dEluYWN0aXZlOlwidGV4dEluYWN0aXZlXCIsYm9yZGVyTmV1dHJhbDpcImJvcmRlck5ldXRyYWxcIixjb250ZW50QmFja2dyb3VuZDE6XCJjb250ZW50QmFja2dyb3VuZDFcIixjb250ZW50QmFja2dyb3VuZDI6XCJjb250ZW50QmFja2dyb3VuZDJcIixjb250ZW50QmFja2dyb3VuZDM6XCJjb250ZW50QmFja2dyb3VuZDNcIixjb250ZW50QmFja2dyb3VuZDQ6XCJjb250ZW50QmFja2dyb3VuZDRcIixjb250ZW50QmFja2dyb3VuZDU6XCJjb250ZW50QmFja2dyb3VuZDVcIixsaW5rRGVmYXVsdDpcImxpbmtEZWZhdWx0XCIsbGlua0hvdmVyOlwibGlua0hvdmVyXCJ9fSw1MzE3OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LDQyNjY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDk0ODMpLHQpfSw5NDgzOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk9wZW5GaW5EYXJrVGhlbWU9dC5PcGVuRmluTGlnaHRUaGVtZT12b2lkIDA7Y29uc3Qgcj1uKDU0NTkpLG89bigzNDcxKSxhPW4oNjcxNCksaT17W3IuUGFsZXR0ZS5icmFuZFByaW1hcnldOm8uQ29sb3Iub3BlbkZpbixbci5QYWxldHRlLnN0YXR1c1N1Y2Nlc3NdOm8uQ29sb3IuZnVuY3Rpb25hbDEsW3IuUGFsZXR0ZS5zdGF0dXNXYXJuaW5nXTpvLkNvbG9yLmZ1bmN0aW9uYWwxMCxbci5QYWxldHRlLnN0YXR1c0NyaXRpY2FsXTpvLkNvbG9yLmZ1bmN0aW9uYWw3LFtyLlBhbGV0dGUuc3RhdHVzQWN0aXZlXTpvLkNvbG9yLmZ1bmN0aW9uYWwzLFtyLlBhbGV0dGUuYm9yZGVyTmV1dHJhbF06by5Db2xvci5zaWx2ZXJHcmF5LFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQxXTpvLkNvbG9yLm9wZW5GaW4sW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDJdOlwiIzAwMDAwMFwiLFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQzXTpcIiMwMDAwMDBcIixbci5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kNF06XCIjMDAwMDAwXCIsW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDVdOlwiIzAwMDAwMFwiLFtyLlBhbGV0dGUubGlua0RlZmF1bHRdOm8uQ29sb3IuZnVuY3Rpb25hbDQsW3IuUGFsZXR0ZS5saW5rSG92ZXJdOm8uQ29sb3IuZnVuY3Rpb25hbDV9O3QuT3BlbkZpbkxpZ2h0VGhlbWU9KDAsYS5jcmVhdGVUaGVtZSkoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLHtbci5QYWxldHRlLmJhY2tncm91bmQxXTpvLkNvbG9yLndoaXRlLFtyLlBhbGV0dGUuYmFja2dyb3VuZDJdOm8uQ29sb3IubGlnaHRHcmF5MSxbci5QYWxldHRlLmJhY2tncm91bmQzXTpvLkNvbG9yLmxpZ2h0R3JheTIsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNF06by5Db2xvci5saWdodEdyYXkzLFtyLlBhbGV0dGUuYmFja2dyb3VuZDVdOm8uQ29sb3IubGlnaHRHcmF5Myxbci5QYWxldHRlLmJhY2tncm91bmQ2XTpvLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS5icmFuZFNlY29uZGFyeV06by5Db2xvci5saWdodEdyYXk0LFtyLlBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kXTpvLkNvbG9yLmxpZ2h0R3JheTMsW3IuUGFsZXR0ZS5pbnB1dENvbG9yXTpvLkNvbG9yLmRhcmtHcmF5NSxbci5QYWxldHRlLmlucHV0UGxhY2Vob2xkZXJdOm8uQ29sb3IuZGFya0dyYXkyLFtyLlBhbGV0dGUuaW5wdXREaXNhYmxlZF06by5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLmlucHV0Rm9jdXNlZF06by5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUuaW5wdXRCb3JkZXJdOm8uQ29sb3IubmV1dHJhbEdyYXksW3IuUGFsZXR0ZS50ZXh0RGVmYXVsdF06by5Db2xvci5kYXJrR3JheTUsW3IuUGFsZXR0ZS50ZXh0SGVscF06by5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLnRleHRJbmFjdGl2ZV06by5Db2xvci5uZXV0cmFsR3JheX0pLFwibGlnaHRcIiksdC5PcGVuRmluRGFya1RoZW1lPSgwLGEuY3JlYXRlVGhlbWUpKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxpKSx7W3IuUGFsZXR0ZS5iYWNrZ3JvdW5kMV06by5Db2xvci5kYXJrR3JheTYsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kMl06by5Db2xvci5kYXJrR3JheTUsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kM106by5Db2xvci5kYXJrR3JheTQsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNF06by5Db2xvci5kYXJrR3JheTMsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNV06by5Db2xvci5kYXJrR3JheTIsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNl06by5Db2xvci5kYXJrR3JheTEsW3IuUGFsZXR0ZS5icmFuZFNlY29uZGFyeV06by5Db2xvci5kYXJrR3JheTIsW3IuUGFsZXR0ZS5pbnB1dEJhY2tncm91bmRdOm8uQ29sb3IuZGFya0dyYXkxLFtyLlBhbGV0dGUuaW5wdXRDb2xvcl06by5Db2xvci53aGl0ZSxbci5QYWxldHRlLmlucHV0UGxhY2Vob2xkZXJdOm8uQ29sb3IubGlnaHRHcmF5NSxbci5QYWxldHRlLmlucHV0RGlzYWJsZWRdOm8uQ29sb3IubmV1dHJhbEdyYXksW3IuUGFsZXR0ZS5pbnB1dEZvY3VzZWRdOm8uQ29sb3IubGlnaHRHcmF5NSxbci5QYWxldHRlLmlucHV0Qm9yZGVyXTpvLkNvbG9yLm5ldXRyYWxHcmF5LFtyLlBhbGV0dGUudGV4dERlZmF1bHRdOm8uQ29sb3Iud2hpdGUsW3IuUGFsZXR0ZS50ZXh0SGVscF06by5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUudGV4dEluYWN0aXZlXTpvLkNvbG9yLm5ldXRyYWxHcmF5fSksXCJkYXJrXCIpfSw0MjA6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVGhlbWVQcm92aWRlcj12b2lkIDA7Y29uc3Qgcj1uKDU4OTMpLG89big3NTE4KSxhPW4oNzA4OCksaT1uKDEwNjkpO3QuVGhlbWVQcm92aWRlcj0oe2NoaWxkcmVuOmUsdGhlbWVzOnQsc2NoZW1lOm4sY29uZmlnOmwsaW5jbHVkZUdsb2JhbFN0eWxlczpjPSEwfSk9Pntjb25zdCBzPSgwLGEudXNlVGhlbWUpKHt0aGVtZXM6dCxzY2hlbWU6bixjb25maWc6bH0pO3JldHVybigwLHIuanN4KShvLlRoZW1lUHJvdmlkZXIsT2JqZWN0LmFzc2lnbih7dGhlbWU6c30se2NoaWxkcmVuOigwLHIuanN4cykoci5GcmFnbWVudCx7Y2hpbGRyZW46W2MmJigwLHIuanN4KShpLkdsb2JhbFN0eWxlcyx7fSksZV19KX0pKX19LDk3NTg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29udGFjdFN0YXR1c0ljb249dm9pZCAwO2NvbnN0IG89big1ODkzKSxhPXIobig3NTE4KSksaT1uKDEzMzMpLGw9e2F2YWlsYWJsZTooMCxvLmpzeCkoaS5DaGVja1NWRyx7fSksYXdheTooMCxvLmpzeCkoaS5CdXN5U1ZHLHt9KSxcImRvLW5vdC1kaXN0dXJiXCI6KDAsby5qc3gpKGkuRG9Ob3REaXN0dXJiU1ZHLHt9KSxvZmZsaW5lOigwLG8uanN4KShpLk9mZmxpbmVTVkcse30pLGJ1c3k6bnVsbH07dC5Db250YWN0U3RhdHVzSWNvbj0oe29ubGluZVN0YXR1czplfSk9PmU/KDAsby5qc3gpKGMsT2JqZWN0LmFzc2lnbih7b25saW5lU3RhdHVzOmV9LHtjaGlsZHJlbjpsW2VdfHxudWxsfSkpOm51bGw7Y29uc3QgYz1hLmRlZmF1bHQuZGl2YFxuICBib3JkZXI6IDEuNnB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kMX07XG5cbiAgYmFja2dyb3VuZDogJHsoe29ubGluZVN0YXR1czplLHRoZW1lOnR9KT0+XCJidXN5XCI9PT1lP1wiI0MyMTMxM1wiOnQucGFsZXR0ZS5iYWNrZ3JvdW5kMX07XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuICBoZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9O1xuICB3aWR0aDogJHsoe3RoZW1lOmV9KT0+ZS5weC5sYXJnZX07XG5cbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA3OC45NSU7XG4gIHJpZ2h0OiAtNy4wMiU7XG4gIHRvcDogNzcuMTIlO1xuICBib3R0b206IC00LjI0JTtcbmB9LDEzMzM6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT2ZmbGluZVNWRz10LkRvTm90RGlzdHVyYlNWRz10LkJ1c3lTVkc9dC5DaGVja1NWRz12b2lkIDA7Y29uc3Qgcj1uKDU4OTMpO3QuQ2hlY2tTVkc9KCk9PigwLHIuanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0se2NoaWxkcmVuOigwLHIuanN4KShcInBhdGhcIix7ZDpcIk04IDBDOC43MzQzOCAwIDkuNDQwMSAwLjA5NjM1NDIgMTAuMTE3MiAwLjI4OTA2M0MxMC43OTQzIDAuNDgxNzcxIDExLjQyOTcgMC43NTI2MDQgMTIuMDIzNCAxLjEwMTU2QzEyLjYxNzIgMS40NTA1MiAxMy4xNTYzIDEuODY5NzkgMTMuNjQwNiAyLjM1OTM4QzE0LjEzMDIgMi44NDM3NSAxNC41NDk1IDMuMzgyODEgMTQuODk4NCAzLjk3NjU2QzE1LjI0NzQgNC41NzAzMSAxNS41MTgyIDUuMjA1NzMgMTUuNzEwOSA1Ljg4MjgxQzE1LjkwMzYgNi41NTk5IDE2IDcuMjY1NjMgMTYgOEMxNiA4LjcyOTE3IDE1LjkwMzYgOS40MzQ5IDE1LjcxMDkgMTAuMTE3MkMxNS41MTgyIDEwLjc5NDMgMTUuMjQ3NCAxMS40Mjk3IDE0Ljg5ODQgMTIuMDIzNEMxNC41NDk1IDEyLjYxNzIgMTQuMTMwMiAxMy4xNTg5IDEzLjY0MDYgMTMuNjQ4NEMxMy4xNTYzIDE0LjEzMjggMTIuNjE3MiAxNC41NDk1IDEyLjAyMzQgMTQuODk4NEMxMS40Mjk3IDE1LjI0NzQgMTAuNzkxNyAxNS41MTgyIDEwLjEwOTQgMTUuNzEwOUM5LjQzMjI5IDE1LjkwMzYgOC43MjkxNyAxNiA4IDE2QzcuMjcwODMgMTYgNi41NjUxIDE1LjkwMzYgNS44ODI4MSAxNS43MTA5QzUuMjA1NzMgMTUuNTE4MiA0LjU3MDMxIDE1LjI0NzQgMy45NzY1NiAxNC44OTg0QzMuMzgyODEgMTQuNTQ5NSAyLjg0MTE1IDE0LjEzMjggMi4zNTE1NiAxMy42NDg0QzEuODY3MTkgMTMuMTU4OSAxLjQ1MDUyIDEyLjYxNzIgMS4xMDE1NiAxMi4wMjM0QzAuNzUyNjA0IDExLjQyOTcgMC40ODE3NzEgMTAuNzk0MyAwLjI4OTA2MyAxMC4xMTcyQzAuMDk2MzU0MiA5LjQzNDkgMCA4LjcyOTE3IDAgOEMwIDcuMjcwODMgMC4wOTYzNTQyIDYuNTY3NzEgMC4yODkwNjMgNS44OTA2M0MwLjQ4MTc3MSA1LjIwODMzIDAuNzUyNjA0IDQuNTcwMzEgMS4xMDE1NiAzLjk3NjU2QzEuNDUwNTIgMy4zODI4MSAxLjg2NzE5IDIuODQzNzUgMi4zNTE1NiAyLjM1OTM4QzIuODQxMTUgMS44Njk3OSAzLjM4MjgxIDEuNDUwNTIgMy45NzY1NiAxLjEwMTU2QzQuNTcwMzEgMC43NTI2MDQgNS4yMDU3MyAwLjQ4MTc3MSA1Ljg4MjgxIDAuMjg5MDYzQzYuNTY1MSAwLjA5NjM1NDIgNy4yNzA4MyAwIDggMFpNMTAuNjMyOCA1LjY4NzVDMTAuNDI0NSA1LjY4NzUgMTAuMjQ3NCA1Ljc2MDQyIDEwLjEwMTYgNS45MDYyNUw3LjI3MzQ0IDguNzVMNi4yNjU2MyA3Ljc1QzYuMTE5NzkgNy42MDQxNyA1Ljk0NTMxIDcuNTMxMjUgNS43NDIxOSA3LjUzMTI1QzUuNjQzMjMgNy41MzEyNSA1LjU0OTQ4IDcuNTUyMDggNS40NjA5NCA3LjU5Mzc1QzUuMzcyNCA3LjYzNTQyIDUuMjkxNjcgNy42OTI3MSA1LjIxODc1IDcuNzY1NjNDNS4xNTEwNCA3LjgzMzMzIDUuMDk2MzUgNy45MTE0NiA1LjA1NDY5IDhDNS4wMTMwMiA4LjA4ODU0IDQuOTkyMTkgOC4xODIyOSA0Ljk5MjE5IDguMjgxMjVDNC45OTIxOSA4LjQ4OTU4IDUuMDY1MSA4LjY2NjY3IDUuMjEwOTQgOC44MTI1TDYuNzQyMTkgMTAuMzQzOEM2Ljg4ODAyIDEwLjQ4OTYgNy4wNjUxIDEwLjU2MjUgNy4yNzM0NCAxMC41NjI1QzcuNDgxNzcgMTAuNTYyNSA3LjY1ODg1IDEwLjQ4OTYgNy44MDQ2OSAxMC4zNDM4TDExLjE2NDEgNi45Njg3NUMxMS4zMDk5IDYuODIyOTIgMTEuMzgyOCA2LjY0NTgzIDExLjM4MjggNi40Mzc1QzExLjM4MjggNi4zMzg1NCAxMS4zNjIgNi4yNDQ3OSAxMS4zMjAzIDYuMTU2MjVDMTEuMjc4NiA2LjA2NzcxIDExLjIyMTQgNS45ODk1OCAxMS4xNDg0IDUuOTIxODhDMTEuMDgwNyA1Ljg0ODk2IDExLjAwMjYgNS43OTE2NyAxMC45MTQxIDUuNzVDMTAuODI1NSA1LjcwODMzIDEwLjczMTggNS42ODc1IDEwLjYzMjggNS42ODc1WlwiLGZpbGw6XCIjMjA3NzM1XCJ9KX0pKSx0LkJ1c3lTVkc9KCk9PigwLHIuanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxN1wiLHZpZXdCb3g6XCIwIDAgMTYgMTdcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0se2NoaWxkcmVuOigwLHIuanN4KShcInBhdGhcIix7ZDpcIk04IDAuNzkwMjM3QzguNzM0MzggMC43OTAyMzcgOS40NDAxIDAuODg2NTkyIDEwLjExNzIgMS4wNzkzQzEwLjc5NDMgMS4yNzIwMSAxMS40Mjk3IDEuNTQyODQgMTIuMDIzNCAxLjg5MThDMTIuNjE3MiAyLjI0MDc2IDEzLjE1NjMgMi42NjAwMyAxMy42NDA2IDMuMTQ5NjFDMTQuMTMwMiAzLjYzMzk5IDE0LjU0OTUgNC4xNzMwNSAxNC44OTg0IDQuNzY2OEMxNS4yNDc0IDUuMzYwNTUgMTUuNTE4MiA1Ljk5NTk3IDE1LjcxMDkgNi42NzMwNUMxNS45MDM2IDcuMzUwMTMgMTYgOC4wNTU4NiAxNiA4Ljc5MDI0QzE2IDkuNTE5NCAxNS45MDM2IDEwLjIyNTEgMTUuNzEwOSAxMC45MDc0QzE1LjUxODIgMTEuNTg0NSAxNS4yNDc0IDEyLjIxOTkgMTQuODk4NCAxMi44MTM3QzE0LjU0OTUgMTMuNDA3NCAxNC4xMzAyIDEzLjk0OTEgMTMuNjQwNiAxNC40Mzg3QzEzLjE1NjMgMTQuOTIzMSAxMi42MTcyIDE1LjMzOTcgMTIuMDIzNCAxNS42ODg3QzExLjQyOTcgMTYuMDM3NiAxMC43OTE3IDE2LjMwODUgMTAuMTA5NCAxNi41MDEyQzkuNDMyMjkgMTYuNjkzOSA4LjcyOTE3IDE2Ljc5MDIgOCAxNi43OTAyQzcuMjcwODMgMTYuNzkwMiA2LjU2NTEgMTYuNjkzOSA1Ljg4MjgxIDE2LjUwMTJDNS4yMDU3MyAxNi4zMDg1IDQuNTcwMzEgMTYuMDM3NiAzLjk3NjU2IDE1LjY4ODdDMy4zODI4MSAxNS4zMzk3IDIuODQxMTUgMTQuOTIzMSAyLjM1MTU2IDE0LjQzODdDMS44NjcxOSAxMy45NDkxIDEuNDUwNTIgMTMuNDA3NCAxLjEwMTU2IDEyLjgxMzdDMC43NTI2MDQgMTIuMjE5OSAwLjQ4MTc3MSAxMS41ODQ1IDAuMjg5MDYzIDEwLjkwNzRDMC4wOTYzNTQyIDEwLjIyNTEgMCA5LjUxOTQgMCA4Ljc5MDI0QzAgOC4wNjEwNyAwLjA5NjM1NDIgNy4zNTc5NSAwLjI4OTA2MyA2LjY4MDg2QzAuNDgxNzcxIDUuOTk4NTcgMC43NTI2MDQgNS4zNjA1NSAxLjEwMTU2IDQuNzY2OEMxLjQ1MDUyIDQuMTczMDUgMS44NjcxOSAzLjYzMzk5IDIuMzUxNTYgMy4xNDk2MUMyLjg0MTE1IDIuNjYwMDMgMy4zODI4MSAyLjI0MDc2IDMuOTc2NTYgMS44OTE4QzQuNTcwMzEgMS41NDI4NCA1LjIwNTczIDEuMjcyMDEgNS44ODI4MSAxLjA3OTNDNi41NjUxIDAuODg2NTkyIDcuMjcwODMgMC43OTAyMzcgOCAwLjc5MDIzN1pNNy4zMjAzMSA0LjA0ODA1QzcuMjEwOTQgNC4wNDgwNSA3LjEwNjc3IDQuMDcxNDkgNy4wMDc4MSA0LjExODM2QzYuOTE0MDYgNC4xNjAwMyA2LjgyODEzIDQuMjE5OTIgNi43NSA0LjI5ODA1QzYuNjc3MDggNC4zNzA5NyA2LjYxNzE5IDQuNDU2OSA2LjU3MDMxIDQuNTU1ODZDNi41Mjg2NSA0LjY0OTYxIDYuNTA3ODEgNC43NTExNyA2LjUwNzgxIDQuODYwNTVWOS4xOTY0OUM2LjUwNzgxIDkuMzA1ODYgNi41Mjg2NSA5LjQxMjYzIDYuNTcwMzEgOS41MTY4QzYuNjExOTggOS42MjA5NyA2LjY3MTg4IDkuNzEyMTEgNi43NSA5Ljc5MDI0TDkuMTg3NSAxMi4yMTIxQzkuMzQ4OTYgMTIuMzczNiA5LjU0MTY3IDEyLjQ1NDMgOS43NjU2MyAxMi40NTQzQzkuODc1IDEyLjQ1NDMgOS45NzkxNyAxMi40MzM1IDEwLjA3ODEgMTIuMzkxOEMxMC4xNzcxIDEyLjM0NDkgMTAuMjYzIDEyLjI4NSAxMC4zMzU5IDEyLjIxMjFDMTAuNDA4OSAxMi4xMzQgMTAuNDY2MSAxMi4wNDU0IDEwLjUwNzggMTEuOTQ2NUMxMC41NTQ3IDExLjg0NzUgMTAuNTc4MSAxMS43NDM0IDEwLjU3ODEgMTEuNjM0QzEwLjU3ODEgMTEuNTI5OCAxMC41NTQ3IDExLjQyODMgMTAuNTA3OCAxMS4zMjkzQzEwLjQ2NjEgMTEuMjI1MSAxMC40MDg5IDExLjEzNjYgMTAuMzM1OSAxMS4wNjM3TDguMTMyODEgOC44NzYxOFY0Ljg2MDU1QzguMTMyODEgNC43NTExNyA4LjEwOTM4IDQuNjQ3MDEgOC4wNjI1IDQuNTQ4MDVDOC4wMjA4MyA0LjQ0OTA5IDcuOTYzNTQgNC4zNjMxNSA3Ljg5MDYzIDQuMjkwMjRDNy44MTc3MSA0LjIxNzMyIDcuNzMxNzcgNC4xNjAwMyA3LjYzMjgxIDQuMTE4MzZDNy41MzM4NSA0LjA3MTQ5IDcuNDI5NjkgNC4wNDgwNSA3LjMyMDMxIDQuMDQ4MDVaXCIsZmlsbDpcIiNGRTlGNERcIn0pfSkpLHQuRG9Ob3REaXN0dXJiU1ZHPSgpPT4oMCxyLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTdcIix2aWV3Qm94OlwiMCAwIDE2IDE3XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LHtjaGlsZHJlbjooMCxyLmpzeCkoXCJwYXRoXCIse2Q6XCJNOCAwLjU5MDI1NkM4LjczNDM4IDAuNTkwMjU2IDkuNDQwMSAwLjY4NjYxIDEwLjExNzIgMC44NzkzMThDMTAuNzk0MyAxLjA3MjAzIDExLjQyOTcgMS4zNDI4NiAxMi4wMjM0IDEuNjkxODJDMTIuNjE3MiAyLjA0MDc4IDEzLjE1NjIgMi40NjAwNSAxMy42NDA2IDIuOTQ5NjNDMTQuMTMwMiAzLjQzNDAxIDE0LjU0OTUgMy45NzMwNyAxNC44OTg0IDQuNTY2ODJDMTUuMjQ3NCA1LjE2MDU3IDE1LjUxODIgNS43OTU5OCAxNS43MTA5IDYuNDczMDdDMTUuOTAzNiA3LjE1MDE1IDE2IDcuODU1ODggMTYgOC41OTAyNkMxNiA5LjMxOTQyIDE1LjkwMzYgMTAuMDI1MiAxNS43MTA5IDEwLjcwNzRDMTUuNTE4MiAxMS4zODQ1IDE1LjI0NzQgMTIuMDE5OSAxNC44OTg0IDEyLjYxMzdDMTQuNTQ5NSAxMy4yMDc0IDE0LjEzMDIgMTMuNzQ5MSAxMy42NDA2IDE0LjIzODdDMTMuMTU2MiAxNC43MjMxIDEyLjYxNzIgMTUuMTM5NyAxMi4wMjM0IDE1LjQ4ODdDMTEuNDI5NyAxNS44Mzc3IDEwLjc5MTcgMTYuMTA4NSAxMC4xMDk0IDE2LjMwMTJDOS40MzIyOSAxNi40OTM5IDguNzI5MTcgMTYuNTkwMyA4IDE2LjU5MDNDNy4yNzA4MyAxNi41OTAzIDYuNTY1MSAxNi40OTM5IDUuODgyODEgMTYuMzAxMkM1LjIwNTczIDE2LjEwODUgNC41NzAzMSAxNS44Mzc3IDMuOTc2NTYgMTUuNDg4N0MzLjM4MjgxIDE1LjEzOTcgMi44NDExNSAxNC43MjMxIDIuMzUxNTYgMTQuMjM4N0MxLjg2NzE5IDEzLjc0OTEgMS40NTA1MiAxMy4yMDc0IDEuMTAxNTYgMTIuNjEzN0MwLjc1MjYwNCAxMi4wMTk5IDAuNDgxNzcxIDExLjM4NDUgMC4yODkwNjIgMTAuNzA3NEMwLjA5NjM1NDIgMTAuMDI1MiAwIDkuMzE5NDIgMCA4LjU5MDI2QzAgNy44NjEwOSAwLjA5NjM1NDIgNy4xNTc5NiAwLjI4OTA2MiA2LjQ4MDg4QzAuNDgxNzcxIDUuNzk4NTkgMC43NTI2MDQgNS4xNjA1NyAxLjEwMTU2IDQuNTY2ODJDMS40NTA1MiAzLjk3MzA3IDEuODY3MTkgMy40MzQwMSAyLjM1MTU2IDIuOTQ5NjNDMi44NDExNSAyLjQ2MDA1IDMuMzgyODEgMi4wNDA3OCAzLjk3NjU2IDEuNjkxODJDNC41NzAzMSAxLjM0Mjg2IDUuMjA1NzMgMS4wNzIwMyA1Ljg4MjgxIDAuODc5MzE4QzYuNTY1MSAwLjY4NjYxIDcuMjcwODMgMC41OTAyNTYgOCAwLjU5MDI1NlpNNS40NzY1NiA3Ljc0NjUxQzUuMzY3MTkgNy43NDY1MSA1LjI2MDQyIDcuNzY5OTQgNS4xNTYyNSA3LjgxNjgyQzUuMDU3MjkgNy44NjM2OSA0Ljk2ODc1IDcuOTI2MTkgNC44OTA2MiA4LjAwNDMyQzQuODEyNSA4LjA4MjQ0IDQuNzUgOC4xNzM1OSA0LjcwMzEyIDguMjc3NzZDNC42NTYyNSA4LjM3NjcxIDQuNjMyODEgOC40ODA4OCA0LjYzMjgxIDguNTkwMjZDNC42MzI4MSA4LjY5OTYzIDQuNjU2MjUgOC44MDY0IDQuNzAzMTIgOC45MTA1N0M0Ljc1IDkuMDA5NTMgNC44MTI1IDkuMDk4MDcgNC44OTA2MiA5LjE3NjE5QzQuOTY4NzUgOS4yNTQzMiA1LjA1NzI5IDkuMzE2ODIgNS4xNTYyNSA5LjM2MzY5QzUuMjYwNDIgOS40MTA1NyA1LjM2NzE5IDkuNDM0MDEgNS40NzY1NiA5LjQzNDAxSDEwLjUyMzRDMTAuNjMyOCA5LjQzNDAxIDEwLjczNyA5LjQxMDU3IDEwLjgzNTkgOS4zNjM2OUMxMC45NDAxIDkuMzE2ODIgMTEuMDMxMiA5LjI1NDMyIDExLjEwOTQgOS4xNzYxOUMxMS4xODc1IDkuMDk4MDcgMTEuMjUgOS4wMDk1MyAxMS4yOTY5IDguOTEwNTdDMTEuMzQzOCA4LjgwNjQgMTEuMzY3MiA4LjY5OTYzIDExLjM2NzIgOC41OTAyNkMxMS4zNjcyIDguNDgwODggMTEuMzQzOCA4LjM3NjcxIDExLjI5NjkgOC4yNzc3NkMxMS4yNSA4LjE3MzU5IDExLjE4NzUgOC4wODI0NCAxMS4xMDk0IDguMDA0MzJDMTEuMDMxMiA3LjkyNjE5IDEwLjk0MDEgNy44NjM2OSAxMC44MzU5IDcuODE2ODJDMTAuNzM3IDcuNzY5OTQgMTAuNjMyOCA3Ljc0NjUxIDEwLjUyMzQgNy43NDY1MUg1LjQ3NjU2WlwiLGZpbGw6XCIjQzIxMzEzXCJ9KX0pKSx0Lk9mZmxpbmVTVkc9KCk9PigwLHIuanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxN1wiLHZpZXdCb3g6XCIwIDAgMTYgMTdcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0se2NoaWxkcmVuOigwLHIuanN4KShcInBhdGhcIix7ZDpcIk04IDAuOTkwMjUyQzguNzM0MzggMC45OTAyNTIgOS40NDAxIDEuMDg2NjEgMTAuMTE3MiAxLjI3OTMxQzEwLjc5NDMgMS40NzIwMiAxMS40Mjk3IDEuNzQyODYgMTIuMDIzNCAyLjA5MTgxQzEyLjYxNzIgMi40NDA3NyAxMy4xNTYyIDIuODYwMDQgMTMuNjQwNiAzLjM0OTYzQzE0LjEzMDIgMy44MzQgMTQuNTQ5NSA0LjM3MzA2IDE0Ljg5ODQgNC45NjY4MUMxNS4yNDc0IDUuNTYwNTYgMTUuNTE4MiA2LjE5NTk4IDE1LjcxMDkgNi44NzMwNkMxNS45MDM2IDcuNTUwMTUgMTYgOC4yNTU4OCAxNiA4Ljk5MDI1QzE2IDkuNzE5NDIgMTUuOTAzNiAxMC40MjUxIDE1LjcxMDkgMTEuMTA3NEMxNS41MTgyIDExLjc4NDUgMTUuMjQ3NCAxMi40MTk5IDE0Ljg5ODQgMTMuMDEzN0MxNC41NDk1IDEzLjYwNzQgMTQuMTMwMiAxNC4xNDkxIDEzLjY0MDYgMTQuNjM4N0MxMy4xNTYyIDE1LjEyMzEgMTIuNjE3MiAxNS41Mzk3IDEyLjAyMzQgMTUuODg4N0MxMS40Mjk3IDE2LjIzNzYgMTAuNzkxNyAxNi41MDg1IDEwLjEwOTQgMTYuNzAxMkM5LjQzMjI5IDE2Ljg5MzkgOC43MjkxNyAxNi45OTAzIDggMTYuOTkwM0M3LjI3MDgzIDE2Ljk5MDMgNi41NjUxIDE2Ljg5MzkgNS44ODI4MSAxNi43MDEyQzUuMjA1NzMgMTYuNTA4NSA0LjU3MDMxIDE2LjIzNzYgMy45NzY1NiAxNS44ODg3QzMuMzgyODEgMTUuNTM5NyAyLjg0MTE1IDE1LjEyMzEgMi4zNTE1NiAxNC42Mzg3QzEuODY3MTkgMTQuMTQ5MSAxLjQ1MDUyIDEzLjYwNzQgMS4xMDE1NiAxMy4wMTM3QzAuNzUyNjA0IDEyLjQxOTkgMC40ODE3NzEgMTEuNzg0NSAwLjI4OTA2MiAxMS4xMDc0QzAuMDk2MzU0MiAxMC40MjUxIDAgOS43MTk0MiAwIDguOTkwMjVDMCA4LjI2MTA5IDAuMDk2MzU0MiA3LjU1Nzk2IDAuMjg5MDYyIDYuODgwODhDMC40ODE3NzEgNi4xOTg1OSAwLjc1MjYwNCA1LjU2MDU2IDEuMTAxNTYgNC45NjY4MUMxLjQ1MDUyIDQuMzczMDYgMS44NjcxOSAzLjgzNCAyLjM1MTU2IDMuMzQ5NjNDMi44NDExNSAyLjg2MDA0IDMuMzgyODEgMi40NDA3NyAzLjk3NjU2IDIuMDkxODFDNC41NzAzMSAxLjc0Mjg2IDUuMjA1NzMgMS40NzIwMiA1Ljg4MjgxIDEuMjc5MzFDNi41NjUxIDEuMDg2NjEgNy4yNzA4MyAwLjk5MDI1MiA4IDAuOTkwMjUyWk04IDIuNjc3NzVDNy40MjE4OCAyLjY3Nzc1IDYuODY0NTggMi43NTMyNyA2LjMyODEyIDIuOTA0MzFDNS43OTE2NyAzLjA1NTM2IDUuMjg5MDYgMy4yNjg5IDQuODIwMzEgMy41NDQ5NEM0LjM1MTU2IDMuODIwOTggMy45MjQ0OCA0LjE1MTcxIDMuNTM5MDYgNC41MzcxM0MzLjE1ODg1IDQuOTE3MzQgMi44MzA3MyA1LjM0MTgxIDIuNTU0NjkgNS44MTA1NkMyLjI3ODY1IDYuMjc5MzEgMi4wNjUxIDYuNzgxOTIgMS45MTQwNiA3LjMxODM4QzEuNzYzMDIgNy44NTQ4NCAxLjY4NzUgOC40MTIxMyAxLjY4NzUgOC45OTAyNUMxLjY4NzUgOS41NjgzOCAxLjc2MzAyIDEwLjEyNTcgMS45MTQwNiAxMC42NjIxQzIuMDY1MSAxMS4xOTg2IDIuMjc4NjUgMTEuNzAxMiAyLjU1NDY5IDEyLjE2OTlDMi44MzA3MyAxMi42Mzg3IDMuMTU4ODUgMTMuMDY1OCAzLjUzOTA2IDEzLjQ1MTJDMy45MjQ0OCAxMy44MzE0IDQuMzUxNTYgMTQuMTU5NSA0LjgyMDMxIDE0LjQzNTZDNS4yODkwNiAxNC43MTE2IDUuNzkxNjcgMTQuOTI1MSA2LjMyODEyIDE1LjA3NjJDNi44NjQ1OCAxNS4yMjcyIDcuNDIxODggMTUuMzAyOCA4IDE1LjMwMjhDOC41NzgxMiAxNS4zMDI4IDkuMTM1NDIgMTUuMjI3MiA5LjY3MTg4IDE1LjA3NjJDMTAuMjA4MyAxNC45MjUxIDEwLjcxMDkgMTQuNzExNiAxMS4xNzk3IDE0LjQzNTZDMTEuNjQ4NCAxNC4xNTk1IDEyLjA3MjkgMTMuODMxNCAxMi40NTMxIDEzLjQ1MTJDMTIuODM4NSAxMy4wNjU4IDEzLjE2OTMgMTIuNjM4NyAxMy40NDUzIDEyLjE2OTlDMTMuNzIxNCAxMS43MDEyIDEzLjkzNDkgMTEuMTk4NiAxNC4wODU5IDEwLjY2MjFDMTQuMjM3IDEwLjEyNTcgMTQuMzEyNSA5LjU2ODM4IDE0LjMxMjUgOC45OTAyNUMxNC4zMTI1IDguNDEyMTMgMTQuMjM3IDcuODU0ODQgMTQuMDg1OSA3LjMxODM4QzEzLjkzNDkgNi43ODE5MiAxMy43MjE0IDYuMjc5MzEgMTMuNDQ1MyA1LjgxMDU2QzEzLjE2OTMgNS4zNDE4MSAxMi44Mzg1IDQuOTE3MzQgMTIuNDUzMSA0LjUzNzEzQzEyLjA3MjkgNC4xNTE3MSAxMS42NDg0IDMuODIwOTggMTEuMTc5NyAzLjU0NDk0QzEwLjcxMDkgMy4yNjg5IDEwLjIwODMgMy4wNTUzNiA5LjY3MTg4IDIuOTA0MzFDOS4xMzU0MiAyLjc1MzI3IDguNTc4MTIgMi42Nzc3NSA4IDIuNjc3NzVaXCIsZmlsbDpcIiM5Nzk3OTdcIn0pfSkpfSwzNDI5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fSxpPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LGw9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db250YWN0Q2FyZD12b2lkIDA7Y29uc3QgYz1uKDU4OTMpLHM9YShuKDY2ODkpKSx1PWwobig3NTE4KSksZD1uKDUzNzcpLGY9big3NDQ0KSxwPW4oOTc1OCksaD1uKDg4MzIpO3QuQ29udGFjdENhcmQ9ZT0+e3ZhcntuYW1lOnQsdGl0bGU6bixwaG90b1VybDpyLHVzZUluaXRpYWxzOm89ITEsZGV0YWlsczphLG9ubGluZVN0YXR1czpsfT1lLHU9aShlLFtcIm5hbWVcIixcInRpdGxlXCIsXCJwaG90b1VybFwiLFwidXNlSW5pdGlhbHNcIixcImRldGFpbHNcIixcIm9ubGluZVN0YXR1c1wiXSk7Y29uc3QgZD1yfHxvLFM9KDAscy51c2VNZW1vKSgoKCk9PigwLGYuZ2V0SW5pdGlhbHMpKHQpKSxbdF0pLF89KDAscy51c2VNZW1vKSgoKCk9PigwLGguZ2VuZXJhdGVDb2xvckZyb21TdHJpbmcpKHQpKSxbdF0pO3JldHVybigwLGMuanN4cykoQyxPYmplY3QuYXNzaWduKHt9LHUse2NoaWxkcmVuOlsoMCxjLmpzeHMpKHYse2NoaWxkcmVuOltkJiYoMCxjLmpzeHMpKGcsT2JqZWN0LmFzc2lnbih7aWNvbkNvbG9yOl99LHtjaGlsZHJlbjpbcj8oMCxjLmpzeCkodyx7YWx0Om4sc3JjOnJ9KTooMCxjLmpzeCkobSx7Y2hpbGRyZW46U30pLCgwLGMuanN4KShwLkNvbnRhY3RTdGF0dXNJY29uLHtvbmxpbmVTdGF0dXM6bH0pXX0pKSwoMCxjLmpzeHMpKHkse2NoaWxkcmVuOlsoMCxjLmpzeHMpKGIse2NoaWxkcmVuOltcIiBcIix0LFwiIFwiXX0pLG4mJigwLGMuanN4cykoeCx7Y2hpbGRyZW46W1wiIFwiLG4sXCIgXCJdfSldfSldfSksKDAsYy5qc3gpKEwse30pLCgwLGMuanN4KShPLHtjaGlsZHJlbjoobnVsbD09YT92b2lkIDA6YS5sZW5ndGgpPjA/YS5tYXAoKChlLG4pPT4oMCxjLmpzeHMpKHMuZGVmYXVsdC5GcmFnbWVudCx7Y2hpbGRyZW46WygwLGMuanN4KShNLHtkZWZpbml0aW9uczplfSksbjxhLmxlbmd0aC0xJiYoMCxjLmpzeCkoTCx7cGFkZGluZzohMH0pXX0sYCR7dH0tZGV0YWlscy0ke259YCkpKTooMCxjLmpzeCkoXCJwXCIse2NoaWxkcmVuOlwiTm8gaW5mb3JtYXRpb24gYXZhaWxhYmxlLlwifSl9KV19KSl9O2NvbnN0IEM9dS5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiAxMDAlO1xuYCx2PXUuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmxhcmdlfTtcbmAsZz11LmRlZmF1bHQuZGl2YFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2U9PmUuaWNvbkNvbG9yfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICBoZWlnaHQ6IDYwcHg7XG4gIHdpZHRoOiA2MHB4O1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmAsbT11LmRlZmF1bHQuc3BhbmBcbiAgZm9udC1zaXplOiAyNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuYCx3PXUuZGVmYXVsdC5pbWdgXG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuYCx5PXUuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgbWluLXdpZHRoOiAwO1xuICBtYXJnaW4tbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbmAsYj11LmRlZmF1bHQuc3BhbmBcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmxhcmdlfTtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nLWJvdHRvbTogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0LmJvbGR9O1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbmAseD11LmRlZmF1bHQuc3BhbmBcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0SGVscH07XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nLWJvdHRvbTogMnB4O1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbmAsTz11LmRlZmF1bHQuZGl2YFxuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGZsZXg6IDE7XG4gIG1hcmdpbi10b3A6ICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBvdmVyZmxvdy15OiBhdXRvO1xuYCxMPXUuZGVmYXVsdC5kaXZgXG4gIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDZ9O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7dGhlbWU6ZSxwYWRkaW5nOnR9KT0+dCYmZS5weC5iYXNlfTtcbmAsTT0oMCx1LmRlZmF1bHQpKGQuRGVmaW5pdGlvbkxpc3QpYFxuICBkdCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgfVxuXG4gIGRkIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIH1cbmB9LDMxODg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDM0MjkpLHQpfSw3NDQ0OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZXRJbml0aWFscz12b2lkIDAsdC5nZXRJbml0aWFscz1lPT57Y29uc3QgdD1lLnRyaW0oKSxuPXQubGFzdEluZGV4T2YoXCIgXCIpO3JldHVybiBuPi0xP1t0LmNoYXJBdCgwKSx0LmNoYXJBdChuKzEpXS5qb2luKFwiXCIpOnQuc2xpY2UoMCwyKX19LDE5OTY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5INj10Lkg1PXQuSDQ9dC5IMz10LkgyPXQuSDE9dC5IZWFkaW5nPXQuZGVmYXVsdFNpemU9dm9pZCAwO2NvbnN0IGE9big1ODkzKSxpPW8obig3NTE4KSksbD1uKDM0NzEpLGM9big3NzY5KTt0LmRlZmF1bHRTaXplPXtoMTpsLlNpemUueHh4bGFyZ2UsaDI6bC5TaXplLnh4bGFyZ2UsaDM6bC5TaXplLnhsYXJnZSxoNDpsLlNpemUubGFyZ2UsaDU6bC5TaXplLmJhc2UsaDY6bC5TaXplLnNtYWxsfSx0LkhlYWRpbmc9ZT0+e3ZhcntsZXZlbDpuPTEsY2xhc3NOYW1lOm99PWUsaT1yKGUsW1wibGV2ZWxcIixcImNsYXNzTmFtZVwiXSk7Y29uc3QgbD1gaCR7bn1gO3JldHVybigwLGEuanN4KShzLE9iamVjdC5hc3NpZ24oe2NsYXNzTmFtZTpvLGFzOmwsc2l6ZTp0LmRlZmF1bHRTaXplW2xdLHdlaWdodDpcImJvbGRcIn0saSkpfTtjb25zdCBzPSgwLGkuZGVmYXVsdCkoYy5UZXh0KWBcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUubGluZUhlaWdodC5oZWFkaW5nfTtcbmA7dC5IMT0oMCxpLmRlZmF1bHQpKHQuSGVhZGluZykuYXR0cnMoKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bGV2ZWw6MX0pKSlgYCx0LkgyPSgwLGkuZGVmYXVsdCkodC5IZWFkaW5nKS5hdHRycygoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtsZXZlbDoyfSkpKWBgLHQuSDM9KDAsaS5kZWZhdWx0KSh0LkhlYWRpbmcpLmF0dHJzKChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2xldmVsOjN9KSkpYGAsdC5IND0oMCxpLmRlZmF1bHQpKHQuSGVhZGluZykuYXR0cnMoKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bGV2ZWw6NH0pKSlgYCx0Lkg1PSgwLGkuZGVmYXVsdCkodC5IZWFkaW5nKS5hdHRycygoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtsZXZlbDo1fSkpKWBgLHQuSDY9KDAsaS5kZWZhdWx0KSh0LkhlYWRpbmcpLmF0dHJzKChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2xldmVsOjZ9KSkpYGB9LDcwNjM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDE5OTYpLHQpfSw3NzY5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig1NDMxKSx0KX0sNTQzMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5UZXh0PXZvaWQgMDtjb25zdCBvPXIobig3NTE4KSk7dC5UZXh0PW8uZGVmYXVsdC5zcGFuYFxuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZSxzaXplOnQ9XCJiYXNlXCJ9KT0+ZS5mb250U2l6ZVt0XX07XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZSx3ZWlnaHQ6dD1cIm5vcm1hbFwifSk9PmUuZm9udFdlaWdodFt0XX07XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmxpbmVIZWlnaHQudGV4dH07XG5gLHQuVGV4dC5kaXNwbGF5TmFtZT1cIlRleHRcIn0sMzE5MDooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC51c2VDb2xvclNjaGVtZT10LkNvbG9yU2NoZW1lPXZvaWQgMDtjb25zdCByPW4oNjY4OSk7dC5Db2xvclNjaGVtZT17ZGFyazpcImRhcmtcIixsaWdodDpcImxpZ2h0XCIsc3lzdGVtOlwic3lzdGVtXCJ9O2NvbnN0IG89XCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspXCI7dC51c2VDb2xvclNjaGVtZT0oe3JlcXVlc3RlZFNjaGVtZTplLGZhbGxiYWNrU2NoZW1lOm49dC5Db2xvclNjaGVtZS5saWdodH0pPT57Y29uc3RbYSxpXT0oMCxyLnVzZVN0YXRlKShuKSxsPWU9PmkoZS5tYXRjaGVzP1wiZGFya1wiOlwibGlnaHRcIik7cmV0dXJuKDAsci51c2VFZmZlY3QpKCgoKT0+e2lmKFwibGlnaHRcIj09PWV8fFwiZGFya1wiPT09ZSlyZXR1cm4gdm9pZCBpKGUpO2NvbnN0IHQ9d2luZG93Lm1hdGNoTWVkaWEobyk7cmV0dXJuIGkodC5tYXRjaGVzP1wiZGFya1wiOlwibGlnaHRcIiksdC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsbCksKCk9PnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLGwpfSksW2UsYSxvXSksYX19LDM0NzooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC51c2VEcm9wZG93bktleWJvYXJkTmF2aWdhdGlvbj12b2lkIDA7Y29uc3Qgcj1uKDY2ODkpO3QudXNlRHJvcGRvd25LZXlib2FyZE5hdmlnYXRpb249KGUsdCxuLG8sYSk9Pntjb25zdFtpLGxdPSgwLHIudXNlU3RhdGUpKDApLFtjLHNdPSgwLHIudXNlU3RhdGUpKFwiXCIpO2xldCB1O2lmKCgwLHIudXNlRWZmZWN0KSgoKCk9PntpZih0JiYhbil7Y29uc3Qgbj1lLmZsYXQoKS5maW5kSW5kZXgoKGU9PmUudmFsdWU9PT10LnZhbHVlKSk7bj49MCYmbChuKX19KSxbZSx0LG5dKSwoMCxyLnVzZUVmZmVjdCkoKCgpPT57bnx8cyhcIlwiKX0pLFtuXSksKDAsci51c2VFZmZlY3QpKCgoKT0+e2lmKGMpe2NvbnN0IHQ9ZS5mbGF0KCkuZmluZEluZGV4KChlPT5lLnRpdGxlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjLnRvTG93ZXJDYXNlKCkpKSk7dD49MCYmbCh0KX19KSxbZSxjXSksZVswXS5sZW5ndGg+MCl7Y29uc3RbdCxuXT1bTWF0aC5mbG9vcihpL2VbMF0ubGVuZ3RoKSxpJWVbMF0ubGVuZ3RoXTt1PWVbdF1bbl19cmV0dXJuKDAsci51c2VFZmZlY3QpKCgoKT0+e2NvbnN0IGU9c2V0VGltZW91dCgoKCk9PntzKFwiXCIpfSksNTAwKTtyZXR1cm4oKT0+Y2xlYXJUaW1lb3V0KGUpfSksW2NdKSx7Zm9jdXNlZE9wdGlvbjp1LGhhbmRsZUtleURvd246dD0+e3N3aXRjaCh0LmNvZGUpe2Nhc2VcIkFycm93VXBcIjp0LnByZXZlbnREZWZhdWx0KCksaT4wJiZsKGktMSk7YnJlYWs7Y2FzZVwiQXJyb3dEb3duXCI6dC5wcmV2ZW50RGVmYXVsdCgpLGk8ZS5mbGF0KCkubGVuZ3RoLTEmJmwoaSsxKTticmVhaztjYXNlXCJFbnRlclwiOmNhc2VcIlNwYWNlXCI6dC5wcmV2ZW50RGVmYXVsdCgpLG4/KChudWxsPT11P3ZvaWQgMDp1Lm92ZXJyaWRlT25DbGljayk/dS5vdmVycmlkZU9uQ2xpY2soKTphKG51bGwhPXU/dTplWzBdWzBdKSxvKCkpOm8oKTticmVhaztjYXNlXCJFc2NhcGVcIjp0LnByZXZlbnREZWZhdWx0KCksbyghMSk7YnJlYWs7ZGVmYXVsdDovXlthLXowLTldJC9pLnRlc3QodC5rZXkpJiZzKChlPT5lK3Qua2V5KSl9fX19fSw0NDgxOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnVzZUxheW91dE1lZGlhUXVlcnk9dC51c2VNZWRpYVF1ZXJ5PXZvaWQgMDtjb25zdCByPW4oNjY4OSksbz1lPT50PT57Y29uc3RbbixvXT0oMCxyLnVzZVN0YXRlKSghMSk7cmV0dXJuIGUoKCgpPT57Y29uc3QgZT13aW5kb3cubWF0Y2hNZWRpYSh0KTtpZihlKXtlLm1hdGNoZXMhPT1uJiZvKGUubWF0Y2hlcyk7Y29uc3QgdD0oKT0+byhlLm1hdGNoZXMpLHI9KCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLHQpO3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIix0KSxyfX0pLFtuLHRdKSxufTt0LnVzZU1lZGlhUXVlcnk9byhyLnVzZUVmZmVjdCksdC51c2VMYXlvdXRNZWRpYVF1ZXJ5PW8oci51c2VMYXlvdXRFZmZlY3QpfSwyNzc2OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnVzZVByZXZpb3VzPXZvaWQgMDtjb25zdCByPW4oNjY4OSk7dC51c2VQcmV2aW91cz1lPT57Y29uc3QgdD0oMCxyLnVzZVJlZikoKTtyZXR1cm4oMCxyLnVzZUVmZmVjdCkoKCgpPT57dC5jdXJyZW50PWV9KSxbZV0pLHQuY3VycmVudH19LDcwODg6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudXNlVGhlbWU9dm9pZCAwO2NvbnN0IHI9big2Njg5KSxvPW4oNDI2NiksYT1uKDMxOTApLGk9big5NTA3KSxsPXtbYS5Db2xvclNjaGVtZS5kYXJrXTpvLk9wZW5GaW5EYXJrVGhlbWUsW2EuQ29sb3JTY2hlbWUubGlnaHRdOm8uT3BlbkZpbkxpZ2h0VGhlbWV9O3QudXNlVGhlbWU9KHt0aGVtZXM6ZSxzY2hlbWU6dCxjb25maWc6bn0pPT57Y29uc3Qgbz0oMCxhLnVzZUNvbG9yU2NoZW1lKSh7cmVxdWVzdGVkU2NoZW1lOnR9KSxjPSgwLHIudXNlTWVtbykoKCgpPT52b2lkIDA9PT1lP2xbb106KDAsaS5jcmVhdGVUaGVtZSkoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGxbb10ucGFsZXR0ZSksZVtvXS5wYWxldHRlKSxvKSksW2Usb10pO3JldHVybiBuP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxjKSx7X2NvbmZpZzpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYy5fY29uZmlnKSxuKX0pOmN9fSwzNDE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDQxMzApLHQpLG8obig3NDAxKSx0KSxvKG4oNDkyNSksdCksbyhuKDI2MDkpLHQpLG8obigzMTM2KSx0KSxvKG4oOTczNCksdCksbyhuKDYwMjYpLHQpLG8obig5NjM0KSx0KSxvKG4oMTQ0KSx0KSxvKG4oOTIzOSksdCksbyhuKDg4NzgpLHQpLG8obig4NTEwKSx0KSxvKG4oODk1MSksdCksbyhuKDE5NzgpLHQpLG8obig4MDUxKSx0KSxvKG4oNDE2OSksdCksbyhuKDM2NDEpLHQpLG8obig1MjE1KSx0KSxvKG4oOTY1NCksdCksbyhuKDMxMTkpLHQpLG8obigxMzM1KSx0KSxvKG4oNTM3NyksdCksbyhuKDEwNjkpLHQpLG8obig5NTA3KSx0KSxvKG4oMzE4OCksdCksbyhuKDcwNjMpLHQpLG8obig3NzY5KSx0KSxvKG4oMzE5MCksdCksbyhuKDQ0ODEpLHQpLG8obigyNzc2KSx0KSxvKG4oMzQ3KSx0KSxvKG4oNDk5MSksdCksbyhuKDg4MzIpLHQpfSw4ODMyOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZW5lcmF0ZUNvbG9yRnJvbVN0cmluZz12b2lkIDAsdC5nZW5lcmF0ZUNvbG9yRnJvbVN0cmluZz1mdW5jdGlvbihlPVwiXCIsdD03MCxuPTUwKXtsZXQgcj0wO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXI9ZS5jaGFyQ29kZUF0KHQpKygocjw8NSktciksciY9cjtyZXR1cm5gaHNsKCR7ciUzNjB9LCAke3R9JSwgJHtufSUpYH19LDY2MDY6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdlbmVyYXRlUmFuZG9tSW50ZWdlcj10LmNsYW1wPXZvaWQgMCx0LmNsYW1wPShlLHQsbik9PnQmJm4/TWF0aC5taW4oTWF0aC5tYXgoZSx0KSxuKTpuJiYhdD9NYXRoLm1pbihlLG4pOnQmJiFuP01hdGgubWF4KGUsdCk6ZSx0LmdlbmVyYXRlUmFuZG9tSW50ZWdlcj0oKT0+TWF0aC5mbG9vcigxZTMqTWF0aC5yYW5kb20oKSl9LDQ5OTE6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LndoZW5GaW49dm9pZCAwLHQud2hlbkZpbj1mdW5jdGlvbihlLHQpe2NvbnN0IG49XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGZpbj9lOnQ7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2Ygbj9uKCk6bn19LDY1NTooZSx0LG4pPT57bi5yKHQpLG4uZCh0LHtfX2Fzc2lnbjooKT0+YSxfX2FzeW5jRGVsZWdhdG9yOigpPT5NLF9fYXN5bmNHZW5lcmF0b3I6KCk9PkwsX19hc3luY1ZhbHVlczooKT0+UyxfX2F3YWl0OigpPT5PLF9fYXdhaXRlcjooKT0+aCxfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0OigpPT5rLF9fY2xhc3NQcml2YXRlRmllbGRJbjooKT0+VixfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0OigpPT5ILF9fY3JlYXRlQmluZGluZzooKT0+dixfX2RlY29yYXRlOigpPT5sLF9fZXNEZWNvcmF0ZTooKT0+cyxfX2V4cG9ydFN0YXI6KCk9PmcsX19leHRlbmRzOigpPT5vLF9fZ2VuZXJhdG9yOigpPT5DLF9faW1wb3J0RGVmYXVsdDooKT0+UCxfX2ltcG9ydFN0YXI6KCk9PkUsX19tYWtlVGVtcGxhdGVPYmplY3Q6KCk9Pl8sX19tZXRhZGF0YTooKT0+cCxfX3BhcmFtOigpPT5jLF9fcHJvcEtleTooKT0+ZCxfX3JlYWQ6KCk9PncsX19yZXN0OigpPT5pLF9fcnVuSW5pdGlhbGl6ZXJzOigpPT51LF9fc2V0RnVuY3Rpb25OYW1lOigpPT5mLF9fc3ByZWFkOigpPT55LF9fc3ByZWFkQXJyYXk6KCk9PngsX19zcHJlYWRBcnJheXM6KCk9PmIsX192YWx1ZXM6KCk9Pm19KTt2YXIgcj1mdW5jdGlvbihlLHQpe3JldHVybiByPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0scihlLHQpfTtmdW5jdGlvbiBvKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIrU3RyaW5nKHQpK1wiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9ZX1yKGUsdCksZS5wcm90b3R5cGU9bnVsbD09PXQ/T2JqZWN0LmNyZWF0ZSh0KToobi5wcm90b3R5cGU9dC5wcm90b3R5cGUsbmV3IG4pfXZhciBhPWZ1bmN0aW9uKCl7cmV0dXJuIGE9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49MSxyPWFyZ3VtZW50cy5sZW5ndGg7bjxyO24rKylmb3IodmFyIG8gaW4gdD1hcmd1bWVudHNbbl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbykmJihlW29dPXRbb10pO3JldHVybiBlfSxhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gaShlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59ZnVuY3Rpb24gbChlLHQsbixyKXt2YXIgbyxhPWFyZ3VtZW50cy5sZW5ndGgsaT1hPDM/dDpudWxsPT09cj9yPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTpyO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKWk9UmVmbGVjdC5kZWNvcmF0ZShlLHQsbixyKTtlbHNlIGZvcih2YXIgbD1lLmxlbmd0aC0xO2w+PTA7bC0tKShvPWVbbF0pJiYoaT0oYTwzP28oaSk6YT4zP28odCxuLGkpOm8odCxuKSl8fGkpO3JldHVybiBhPjMmJmkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4saSksaX1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dChuLHIsZSl9fWZ1bmN0aW9uIHMoZSx0LG4scixvLGEpe2Z1bmN0aW9uIGkoZSl7aWYodm9pZCAwIT09ZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7cmV0dXJuIGV9Zm9yKHZhciBsLGM9ci5raW5kLHM9XCJnZXR0ZXJcIj09PWM/XCJnZXRcIjpcInNldHRlclwiPT09Yz9cInNldFwiOlwidmFsdWVcIix1PSF0JiZlP3Iuc3RhdGljP2U6ZS5wcm90b3R5cGU6bnVsbCxkPXR8fCh1P09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodSxyLm5hbWUpOnt9KSxmPSExLHA9bi5sZW5ndGgtMTtwPj0wO3AtLSl7dmFyIGg9e307Zm9yKHZhciBDIGluIHIpaFtDXT1cImFjY2Vzc1wiPT09Qz97fTpyW0NdO2Zvcih2YXIgQyBpbiByLmFjY2VzcyloLmFjY2Vzc1tDXT1yLmFjY2Vzc1tDXTtoLmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKGUpe2lmKGYpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZFwiKTthLnB1c2goaShlfHxudWxsKSl9O3ZhciB2PSgwLG5bcF0pKFwiYWNjZXNzb3JcIj09PWM/e2dldDpkLmdldCxzZXQ6ZC5zZXR9OmRbc10saCk7aWYoXCJhY2Nlc3NvclwiPT09Yyl7aWYodm9pZCAwPT09diljb250aW51ZTtpZihudWxsPT09dnx8XCJvYmplY3RcIiE9dHlwZW9mIHYpdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTsobD1pKHYuZ2V0KSkmJihkLmdldD1sKSwobD1pKHYuc2V0KSkmJihkLnNldD1sKSwobD1pKHYuaW5pdCkpJiZvLnB1c2gobCl9ZWxzZShsPWkodikpJiYoXCJmaWVsZFwiPT09Yz9vLnB1c2gobCk6ZFtzXT1sKX11JiZPYmplY3QuZGVmaW5lUHJvcGVydHkodSxyLm5hbWUsZCksZj0hMH1mdW5jdGlvbiB1KGUsdCxuKXtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yLG89MDtvPHQubGVuZ3RoO28rKyluPXI/dFtvXS5jYWxsKGUsbik6dFtvXS5jYWxsKGUpO3JldHVybiByP246dm9pZCAwfWZ1bmN0aW9uIGQoZSl7cmV0dXJuXCJzeW1ib2xcIj09dHlwZW9mIGU/ZTpcIlwiLmNvbmNhdChlKX1mdW5jdGlvbiBmKGUsdCxuKXtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgdCYmKHQ9dC5kZXNjcmlwdGlvbj9cIltcIi5jb25jYXQodC5kZXNjcmlwdGlvbixcIl1cIik6XCJcIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJuYW1lXCIse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTpuP1wiXCIuY29uY2F0KG4sXCIgXCIsdCk6dH0pfWZ1bmN0aW9uIHAoZSx0KXtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSlyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShlLHQpfWZ1bmN0aW9uIGgoZSx0LG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKG8sYSl7ZnVuY3Rpb24gaShlKXt0cnl7YyhyLm5leHQoZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIGwoZSl7dHJ5e2Moci50aHJvdyhlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gYyhlKXt2YXIgdDtlLmRvbmU/byhlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4oaSxsKX1jKChyPXIuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9ZnVuY3Rpb24gQyhlLHQpe3ZhciBuLHIsbyxhLGk9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb1swXSl0aHJvdyBvWzFdO3JldHVybiBvWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGE9e25leHQ6bCgwKSx0aHJvdzpsKDEpLHJldHVybjpsKDIpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJihhW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGE7ZnVuY3Rpb24gbChsKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKGwpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7Zm9yKDthJiYoYT0wLGxbMF0mJihpPTApKSxpOyl0cnl7aWYobj0xLHImJihvPTImbFswXT9yLnJldHVybjpsWzBdP3IudGhyb3d8fCgobz1yLnJldHVybikmJm8uY2FsbChyKSwwKTpyLm5leHQpJiYhKG89by5jYWxsKHIsbFsxXSkpLmRvbmUpcmV0dXJuIG87c3dpdGNoKHI9MCxvJiYobD1bMiZsWzBdLG8udmFsdWVdKSxsWzBdKXtjYXNlIDA6Y2FzZSAxOm89bDticmVhaztjYXNlIDQ6cmV0dXJuIGkubGFiZWwrKyx7dmFsdWU6bFsxXSxkb25lOiExfTtjYXNlIDU6aS5sYWJlbCsrLHI9bFsxXSxsPVswXTtjb250aW51ZTtjYXNlIDc6bD1pLm9wcy5wb3AoKSxpLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChvPShvPWkudHJ5cykubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0pfHw2IT09bFswXSYmMiE9PWxbMF0pKXtpPTA7Y29udGludWV9aWYoMz09PWxbMF0mJighb3x8bFsxXT5vWzBdJiZsWzFdPG9bM10pKXtpLmxhYmVsPWxbMV07YnJlYWt9aWYoNj09PWxbMF0mJmkubGFiZWw8b1sxXSl7aS5sYWJlbD1vWzFdLG89bDticmVha31pZihvJiZpLmxhYmVsPG9bMl0pe2kubGFiZWw9b1syXSxpLm9wcy5wdXNoKGwpO2JyZWFrfW9bMl0mJmkub3BzLnBvcCgpLGkudHJ5cy5wb3AoKTtjb250aW51ZX1sPXQuY2FsbChlLGkpfWNhdGNoKGUpe2w9WzYsZV0scj0wfWZpbmFsbHl7bj1vPTB9aWYoNSZsWzBdKXRocm93IGxbMV07cmV0dXJue3ZhbHVlOmxbMF0/bFsxXTp2b2lkIDAsZG9uZTohMH19KFtsLGNdKX19fXZhciB2PU9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX07ZnVuY3Rpb24gZyhlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHYodCxlLG4pfWZ1bmN0aW9uIG0oZSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3Isbj10JiZlW3RdLHI9MDtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoZSYmXCJudW1iZXJcIj09dHlwZW9mIGUubGVuZ3RoKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGUmJnI+PWUubGVuZ3RoJiYoZT12b2lkIDApLHt2YWx1ZTplJiZlW3IrK10sZG9uZTohZX19fTt0aHJvdyBuZXcgVHlwZUVycm9yKHQ/XCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiOlwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKX1mdW5jdGlvbiB3KGUsdCl7dmFyIG49XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIGU7dmFyIHIsbyxhPW4uY2FsbChlKSxpPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT10fHx0LS0gPjApJiYhKHI9YS5uZXh0KCkpLmRvbmU7KWkucHVzaChyLnZhbHVlKX1jYXRjaChlKXtvPXtlcnJvcjplfX1maW5hbGx5e3RyeXtyJiYhci5kb25lJiYobj1hLnJldHVybikmJm4uY2FsbChhKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIGl9ZnVuY3Rpb24geSgpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllPWUuY29uY2F0KHcoYXJndW1lbnRzW3RdKSk7cmV0dXJuIGV9ZnVuY3Rpb24gYigpe2Zvcih2YXIgZT0wLHQ9MCxuPWFyZ3VtZW50cy5sZW5ndGg7dDxuO3QrKyllKz1hcmd1bWVudHNbdF0ubGVuZ3RoO3ZhciByPUFycmF5KGUpLG89MDtmb3IodD0wO3Q8bjt0KyspZm9yKHZhciBhPWFyZ3VtZW50c1t0XSxpPTAsbD1hLmxlbmd0aDtpPGw7aSsrLG8rKylyW29dPWFbaV07cmV0dXJuIHJ9ZnVuY3Rpb24geChlLHQsbil7aWYobnx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciByLG89MCxhPXQubGVuZ3RoO288YTtvKyspIXImJm8gaW4gdHx8KHJ8fChyPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMCxvKSkscltvXT10W29dKTtyZXR1cm4gZS5jb25jYXQocnx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpfWZ1bmN0aW9uIE8oZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBPPyh0aGlzLnY9ZSx0aGlzKTpuZXcgTyhlKX1mdW5jdGlvbiBMKGUsdCxuKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTt2YXIgcixvPW4uYXBwbHkoZSx0fHxbXSksYT1bXTtyZXR1cm4gcj17fSxpKFwibmV4dFwiKSxpKFwidGhyb3dcIiksaShcInJldHVyblwiKSxyW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxyO2Z1bmN0aW9uIGkoZSl7b1tlXSYmKHJbZV09ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLHIpe2EucHVzaChbZSx0LG4scl0pPjF8fGwoZSx0KX0pKX0pfWZ1bmN0aW9uIGwoZSx0KXt0cnl7KG49b1tlXSh0KSkudmFsdWUgaW5zdGFuY2VvZiBPP1Byb21pc2UucmVzb2x2ZShuLnZhbHVlLnYpLnRoZW4oYyxzKTp1KGFbMF1bMl0sbil9Y2F0Y2goZSl7dShhWzBdWzNdLGUpfXZhciBufWZ1bmN0aW9uIGMoZSl7bChcIm5leHRcIixlKX1mdW5jdGlvbiBzKGUpe2woXCJ0aHJvd1wiLGUpfWZ1bmN0aW9uIHUoZSx0KXtlKHQpLGEuc2hpZnQoKSxhLmxlbmd0aCYmbChhWzBdWzBdLGFbMF1bMV0pfX1mdW5jdGlvbiBNKGUpe3ZhciB0LG47cmV0dXJuIHQ9e30scihcIm5leHRcIikscihcInRocm93XCIsKGZ1bmN0aW9uKGUpe3Rocm93IGV9KSkscihcInJldHVyblwiKSx0W1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdDtmdW5jdGlvbiByKHIsbyl7dFtyXT1lW3JdP2Z1bmN0aW9uKHQpe3JldHVybihuPSFuKT97dmFsdWU6TyhlW3JdKHQpKSxkb25lOiExfTpvP28odCk6dH06b319ZnVuY3Rpb24gUyhlKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTt2YXIgdCxuPWVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdO3JldHVybiBuP24uY2FsbChlKTooZT1tKGUpLHQ9e30scihcIm5leHRcIikscihcInRocm93XCIpLHIoXCJyZXR1cm5cIiksdFtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdCk7ZnVuY3Rpb24gcihuKXt0W25dPWVbbl0mJmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXshZnVuY3Rpb24oZSx0LG4scil7UHJvbWlzZS5yZXNvbHZlKHIpLnRoZW4oKGZ1bmN0aW9uKHQpe2Uoe3ZhbHVlOnQsZG9uZTpufSl9KSx0KX0ocixvLCh0PWVbbl0odCkpLmRvbmUsdC52YWx1ZSl9KSl9fX1mdW5jdGlvbiBfKGUsdCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInJhd1wiLHt2YWx1ZTp0fSk6ZS5yYXc9dCxlfXZhciBqPU9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9O2Z1bmN0aW9uIEUoZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmdih0LGUsbik7cmV0dXJuIGoodCxlKSx0fWZ1bmN0aW9uIFAoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIGsoZSx0LG4scil7aWYoXCJhXCI9PT1uJiYhcil0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/ZSE9PXR8fCFyOiF0LmhhcyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO3JldHVyblwibVwiPT09bj9yOlwiYVwiPT09bj9yLmNhbGwoZSk6cj9yLnZhbHVlOnQuZ2V0KGUpfWZ1bmN0aW9uIEgoZSx0LG4scixvKXtpZihcIm1cIj09PXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtpZihcImFcIj09PXImJiFvKXRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdD9lIT09dHx8IW86IXQuaGFzKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtyZXR1cm5cImFcIj09PXI/by5jYWxsKGUsbik6bz9vLnZhbHVlPW46dC5zZXQoZSxuKSxufWZ1bmN0aW9uIFYoZSx0KXtpZihudWxsPT09dHx8XCJvYmplY3RcIiE9dHlwZW9mIHQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0XCIpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/dD09PWU6ZS5oYXModCl9fSw2Njg5OmU9PntlLmV4cG9ydHM9bigzNzgpfSw3NTE4OmU9PntlLmV4cG9ydHM9big5MjEpfSw4MjA3OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7cmV0dXJuKGU9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0pKHQpfXZhciB0PS9eXFxzKy8sbj0vXFxzKyQvO2Z1bmN0aW9uIHIobyxhKXtpZihhPWF8fHt9LChvPW98fFwiXCIpaW5zdGFuY2VvZiByKXJldHVybiBvO2lmKCEodGhpcyBpbnN0YW5jZW9mIHIpKXJldHVybiBuZXcgcihvLGEpO3ZhciBpPWZ1bmN0aW9uKHIpe3ZhciBvLGEsaSxsPXtyOjAsZzowLGI6MH0sYz0xLHM9bnVsbCx1PW51bGwsZD1udWxsLGY9ITEscD0hMTtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgciYmKHI9ZnVuY3Rpb24oZSl7ZT1lLnJlcGxhY2UodCxcIlwiKS5yZXBsYWNlKG4sXCJcIikudG9Mb3dlckNhc2UoKTt2YXIgcixvPSExO2lmKHlbZV0pZT15W2VdLG89ITA7ZWxzZSBpZihcInRyYW5zcGFyZW50XCI9PWUpcmV0dXJue3I6MCxnOjAsYjowLGE6MCxmb3JtYXQ6XCJuYW1lXCJ9O3JldHVybihyPVYucmdiLmV4ZWMoZSkpP3tyOnJbMV0sZzpyWzJdLGI6clszXX06KHI9Vi5yZ2JhLmV4ZWMoZSkpP3tyOnJbMV0sZzpyWzJdLGI6clszXSxhOnJbNF19OihyPVYuaHNsLmV4ZWMoZSkpP3toOnJbMV0sczpyWzJdLGw6clszXX06KHI9Vi5oc2xhLmV4ZWMoZSkpP3toOnJbMV0sczpyWzJdLGw6clszXSxhOnJbNF19OihyPVYuaHN2LmV4ZWMoZSkpP3toOnJbMV0sczpyWzJdLHY6clszXX06KHI9Vi5oc3ZhLmV4ZWMoZSkpP3toOnJbMV0sczpyWzJdLHY6clszXSxhOnJbNF19OihyPVYuaGV4OC5leGVjKGUpKT97cjpNKHJbMV0pLGc6TShyWzJdKSxiOk0oclszXSksYTpFKHJbNF0pLGZvcm1hdDpvP1wibmFtZVwiOlwiaGV4OFwifToocj1WLmhleDYuZXhlYyhlKSk/e3I6TShyWzFdKSxnOk0oclsyXSksYjpNKHJbM10pLGZvcm1hdDpvP1wibmFtZVwiOlwiaGV4XCJ9OihyPVYuaGV4NC5leGVjKGUpKT97cjpNKHJbMV0rXCJcIityWzFdKSxnOk0oclsyXStcIlwiK3JbMl0pLGI6TShyWzNdK1wiXCIrclszXSksYTpFKHJbNF0rXCJcIityWzRdKSxmb3JtYXQ6bz9cIm5hbWVcIjpcImhleDhcIn06ISEocj1WLmhleDMuZXhlYyhlKSkmJntyOk0oclsxXStcIlwiK3JbMV0pLGc6TShyWzJdK1wiXCIrclsyXSksYjpNKHJbM10rXCJcIityWzNdKSxmb3JtYXQ6bz9cIm5hbWVcIjpcImhleFwifX0ocikpLFwib2JqZWN0XCI9PWUocikmJihSKHIucikmJlIoci5nKSYmUihyLmIpPyhvPXIucixhPXIuZyxpPXIuYixsPXtyOjI1NSpPKG8sMjU1KSxnOjI1NSpPKGEsMjU1KSxiOjI1NSpPKGksMjU1KX0sZj0hMCxwPVwiJVwiPT09U3RyaW5nKHIucikuc3Vic3RyKC0xKT9cInByZ2JcIjpcInJnYlwiKTpSKHIuaCkmJlIoci5zKSYmUihyLnYpPyhzPV8oci5zKSx1PV8oci52KSxsPWZ1bmN0aW9uKGUsdCxuKXtlPTYqTyhlLDM2MCksdD1PKHQsMTAwKSxuPU8obiwxMDApO3ZhciByPU1hdGguZmxvb3IoZSksbz1lLXIsYT1uKigxLXQpLGk9biooMS1vKnQpLGw9biooMS0oMS1vKSp0KSxjPXIlNjtyZXR1cm57cjoyNTUqW24saSxhLGEsbCxuXVtjXSxnOjI1NSpbbCxuLG4saSxhLGFdW2NdLGI6MjU1KlthLGEsbCxuLG4saV1bY119fShyLmgscyx1KSxmPSEwLHA9XCJoc3ZcIik6UihyLmgpJiZSKHIucykmJlIoci5sKSYmKHM9XyhyLnMpLGQ9XyhyLmwpLGw9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8sYTtmdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gbjwwJiYobis9MSksbj4xJiYobi09MSksbjwxLzY/ZSs2Kih0LWUpKm46bjwuNT90Om48Mi8zP2UrKHQtZSkqKDIvMy1uKSo2OmV9aWYoZT1PKGUsMzYwKSx0PU8odCwxMDApLG49TyhuLDEwMCksMD09PXQpcj1vPWE9bjtlbHNle3ZhciBsPW48LjU/biooMSt0KTpuK3Qtbip0LGM9MipuLWw7cj1pKGMsbCxlKzEvMyksbz1pKGMsbCxlKSxhPWkoYyxsLGUtMS8zKX1yZXR1cm57cjoyNTUqcixnOjI1NSpvLGI6MjU1KmF9fShyLmgscyxkKSxmPSEwLHA9XCJoc2xcIiksci5oYXNPd25Qcm9wZXJ0eShcImFcIikmJihjPXIuYSkpLGM9eChjKSx7b2s6Zixmb3JtYXQ6ci5mb3JtYXR8fHAscjpNYXRoLm1pbigyNTUsTWF0aC5tYXgobC5yLDApKSxnOk1hdGgubWluKDI1NSxNYXRoLm1heChsLmcsMCkpLGI6TWF0aC5taW4oMjU1LE1hdGgubWF4KGwuYiwwKSksYTpjfX0obyk7dGhpcy5fb3JpZ2luYWxJbnB1dD1vLHRoaXMuX3I9aS5yLHRoaXMuX2c9aS5nLHRoaXMuX2I9aS5iLHRoaXMuX2E9aS5hLHRoaXMuX3JvdW5kQT1NYXRoLnJvdW5kKDEwMCp0aGlzLl9hKS8xMDAsdGhpcy5fZm9ybWF0PWEuZm9ybWF0fHxpLmZvcm1hdCx0aGlzLl9ncmFkaWVudFR5cGU9YS5ncmFkaWVudFR5cGUsdGhpcy5fcjwxJiYodGhpcy5fcj1NYXRoLnJvdW5kKHRoaXMuX3IpKSx0aGlzLl9nPDEmJih0aGlzLl9nPU1hdGgucm91bmQodGhpcy5fZykpLHRoaXMuX2I8MSYmKHRoaXMuX2I9TWF0aC5yb3VuZCh0aGlzLl9iKSksdGhpcy5fb2s9aS5va31mdW5jdGlvbiBvKGUsdCxuKXtlPU8oZSwyNTUpLHQ9Tyh0LDI1NSksbj1PKG4sMjU1KTt2YXIgcixvLGE9TWF0aC5tYXgoZSx0LG4pLGk9TWF0aC5taW4oZSx0LG4pLGw9KGEraSkvMjtpZihhPT1pKXI9bz0wO2Vsc2V7dmFyIGM9YS1pO3N3aXRjaChvPWw+LjU/Yy8oMi1hLWkpOmMvKGEraSksYSl7Y2FzZSBlOnI9KHQtbikvYysodDxuPzY6MCk7YnJlYWs7Y2FzZSB0OnI9KG4tZSkvYysyO2JyZWFrO2Nhc2UgbjpyPShlLXQpL2MrNH1yLz02fXJldHVybntoOnIsczpvLGx9fWZ1bmN0aW9uIGEoZSx0LG4pe2U9TyhlLDI1NSksdD1PKHQsMjU1KSxuPU8obiwyNTUpO3ZhciByLG8sYT1NYXRoLm1heChlLHQsbiksaT1NYXRoLm1pbihlLHQsbiksbD1hLGM9YS1pO2lmKG89MD09PWE/MDpjL2EsYT09aSlyPTA7ZWxzZXtzd2l0Y2goYSl7Y2FzZSBlOnI9KHQtbikvYysodDxuPzY6MCk7YnJlYWs7Y2FzZSB0OnI9KG4tZSkvYysyO2JyZWFrO2Nhc2UgbjpyPShlLXQpL2MrNH1yLz02fXJldHVybntoOnIsczpvLHY6bH19ZnVuY3Rpb24gaShlLHQsbixyKXt2YXIgbz1bUyhNYXRoLnJvdW5kKGUpLnRvU3RyaW5nKDE2KSksUyhNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KSksUyhNYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDE2KSldO3JldHVybiByJiZvWzBdLmNoYXJBdCgwKT09b1swXS5jaGFyQXQoMSkmJm9bMV0uY2hhckF0KDApPT1vWzFdLmNoYXJBdCgxKSYmb1syXS5jaGFyQXQoMCk9PW9bMl0uY2hhckF0KDEpP29bMF0uY2hhckF0KDApK29bMV0uY2hhckF0KDApK29bMl0uY2hhckF0KDApOm8uam9pbihcIlwiKX1mdW5jdGlvbiBsKGUsdCxuLHIpe3JldHVybltTKGoocikpLFMoTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikpLFMoTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNikpLFMoTWF0aC5yb3VuZChuKS50b1N0cmluZygxNikpXS5qb2luKFwiXCIpfWZ1bmN0aW9uIGMoZSx0KXt0PTA9PT10PzA6dHx8MTA7dmFyIG49cihlKS50b0hzbCgpO3JldHVybiBuLnMtPXQvMTAwLG4ucz1MKG4ucykscihuKX1mdW5jdGlvbiBzKGUsdCl7dD0wPT09dD8wOnR8fDEwO3ZhciBuPXIoZSkudG9Ic2woKTtyZXR1cm4gbi5zKz10LzEwMCxuLnM9TChuLnMpLHIobil9ZnVuY3Rpb24gdShlKXtyZXR1cm4gcihlKS5kZXNhdHVyYXRlKDEwMCl9ZnVuY3Rpb24gZChlLHQpe3Q9MD09PXQ/MDp0fHwxMDt2YXIgbj1yKGUpLnRvSHNsKCk7cmV0dXJuIG4ubCs9dC8xMDAsbi5sPUwobi5sKSxyKG4pfWZ1bmN0aW9uIGYoZSx0KXt0PTA9PT10PzA6dHx8MTA7dmFyIG49cihlKS50b1JnYigpO3JldHVybiBuLnI9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsbi5yLU1hdGgucm91bmQoLXQvMTAwKjI1NSkpKSxuLmc9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsbi5nLU1hdGgucm91bmQoLXQvMTAwKjI1NSkpKSxuLmI9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsbi5iLU1hdGgucm91bmQoLXQvMTAwKjI1NSkpKSxyKG4pfWZ1bmN0aW9uIHAoZSx0KXt0PTA9PT10PzA6dHx8MTA7dmFyIG49cihlKS50b0hzbCgpO3JldHVybiBuLmwtPXQvMTAwLG4ubD1MKG4ubCkscihuKX1mdW5jdGlvbiBoKGUsdCl7dmFyIG49cihlKS50b0hzbCgpLG89KG4uaCt0KSUzNjA7cmV0dXJuIG4uaD1vPDA/MzYwK286byxyKG4pfWZ1bmN0aW9uIEMoZSl7dmFyIHQ9cihlKS50b0hzbCgpO3JldHVybiB0Lmg9KHQuaCsxODApJTM2MCxyKHQpfWZ1bmN0aW9uIHYoZSx0KXtpZihpc05hTih0KXx8dDw9MCl0aHJvdyBuZXcgRXJyb3IoXCJBcmd1bWVudCB0byBwb2x5YWQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlclwiKTtmb3IodmFyIG49cihlKS50b0hzbCgpLG89W3IoZSldLGE9MzYwL3QsaT0xO2k8dDtpKyspby5wdXNoKHIoe2g6KG4uaCtpKmEpJTM2MCxzOm4ucyxsOm4ubH0pKTtyZXR1cm4gb31mdW5jdGlvbiBnKGUpe3ZhciB0PXIoZSkudG9Ic2woKSxuPXQuaDtyZXR1cm5bcihlKSxyKHtoOihuKzcyKSUzNjAsczp0LnMsbDp0Lmx9KSxyKHtoOihuKzIxNiklMzYwLHM6dC5zLGw6dC5sfSldfWZ1bmN0aW9uIG0oZSx0LG4pe3Q9dHx8NixuPW58fDMwO3ZhciBvPXIoZSkudG9Ic2woKSxhPTM2MC9uLGk9W3IoZSldO2ZvcihvLmg9KG8uaC0oYSp0Pj4xKSs3MjApJTM2MDstLXQ7KW8uaD0oby5oK2EpJTM2MCxpLnB1c2gocihvKSk7cmV0dXJuIGl9ZnVuY3Rpb24gdyhlLHQpe3Q9dHx8Njtmb3IodmFyIG49cihlKS50b0hzdigpLG89bi5oLGE9bi5zLGk9bi52LGw9W10sYz0xL3Q7dC0tOylsLnB1c2gocih7aDpvLHM6YSx2Oml9KSksaT0oaStjKSUxO3JldHVybiBsfXIucHJvdG90eXBlPXtpc0Rhcms6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCcmlnaHRuZXNzKCk8MTI4fSxpc0xpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNEYXJrKCl9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb2t9LGdldE9yaWdpbmFsSW5wdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3JpZ2luYWxJbnB1dH0sZ2V0Rm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Zvcm1hdH0sZ2V0QWxwaGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYX0sZ2V0QnJpZ2h0bmVzczpmdW5jdGlvbigpe3ZhciBlPXRoaXMudG9SZ2IoKTtyZXR1cm4oMjk5KmUucis1ODcqZS5nKzExNCplLmIpLzFlM30sZ2V0THVtaW5hbmNlOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLHI9dGhpcy50b1JnYigpO3JldHVybiBlPXIuci8yNTUsdD1yLmcvMjU1LG49ci5iLzI1NSwuMjEyNiooZTw9LjAzOTI4P2UvMTIuOTI6TWF0aC5wb3coKGUrLjA1NSkvMS4wNTUsMi40KSkrLjcxNTIqKHQ8PS4wMzkyOD90LzEyLjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCkpKy4wNzIyKihuPD0uMDM5Mjg/bi8xMi45MjpNYXRoLnBvdygobisuMDU1KS8xLjA1NSwyLjQpKX0sc2V0QWxwaGE6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2E9eChlKSx0aGlzLl9yb3VuZEE9TWF0aC5yb3VuZCgxMDAqdGhpcy5fYSkvMTAwLHRoaXN9LHRvSHN2OmZ1bmN0aW9uKCl7dmFyIGU9YSh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYik7cmV0dXJue2g6MzYwKmUuaCxzOmUucyx2OmUudixhOnRoaXMuX2F9fSx0b0hzdlN0cmluZzpmdW5jdGlvbigpe3ZhciBlPWEodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpLHQ9TWF0aC5yb3VuZCgzNjAqZS5oKSxuPU1hdGgucm91bmQoMTAwKmUucykscj1NYXRoLnJvdW5kKDEwMCplLnYpO3JldHVybiAxPT10aGlzLl9hP1wiaHN2KFwiK3QrXCIsIFwiK24rXCIlLCBcIityK1wiJSlcIjpcImhzdmEoXCIrdCtcIiwgXCIrbitcIiUsIFwiK3IrXCIlLCBcIit0aGlzLl9yb3VuZEErXCIpXCJ9LHRvSHNsOmZ1bmN0aW9uKCl7dmFyIGU9byh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYik7cmV0dXJue2g6MzYwKmUuaCxzOmUucyxsOmUubCxhOnRoaXMuX2F9fSx0b0hzbFN0cmluZzpmdW5jdGlvbigpe3ZhciBlPW8odGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpLHQ9TWF0aC5yb3VuZCgzNjAqZS5oKSxuPU1hdGgucm91bmQoMTAwKmUucykscj1NYXRoLnJvdW5kKDEwMCplLmwpO3JldHVybiAxPT10aGlzLl9hP1wiaHNsKFwiK3QrXCIsIFwiK24rXCIlLCBcIityK1wiJSlcIjpcImhzbGEoXCIrdCtcIiwgXCIrbitcIiUsIFwiK3IrXCIlLCBcIit0aGlzLl9yb3VuZEErXCIpXCJ9LHRvSGV4OmZ1bmN0aW9uKGUpe3JldHVybiBpKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLGUpfSx0b0hleFN0cmluZzpmdW5jdGlvbihlKXtyZXR1cm5cIiNcIit0aGlzLnRvSGV4KGUpfSx0b0hleDg6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGE9W1MoTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikpLFMoTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNikpLFMoTWF0aC5yb3VuZChuKS50b1N0cmluZygxNikpLFMoaihyKSldO3JldHVybiBvJiZhWzBdLmNoYXJBdCgwKT09YVswXS5jaGFyQXQoMSkmJmFbMV0uY2hhckF0KDApPT1hWzFdLmNoYXJBdCgxKSYmYVsyXS5jaGFyQXQoMCk9PWFbMl0uY2hhckF0KDEpJiZhWzNdLmNoYXJBdCgwKT09YVszXS5jaGFyQXQoMSk/YVswXS5jaGFyQXQoMCkrYVsxXS5jaGFyQXQoMCkrYVsyXS5jaGFyQXQoMCkrYVszXS5jaGFyQXQoMCk6YS5qb2luKFwiXCIpfSh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYix0aGlzLl9hLGUpfSx0b0hleDhTdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuXCIjXCIrdGhpcy50b0hleDgoZSl9LHRvUmdiOmZ1bmN0aW9uKCl7cmV0dXJue3I6TWF0aC5yb3VuZCh0aGlzLl9yKSxnOk1hdGgucm91bmQodGhpcy5fZyksYjpNYXRoLnJvdW5kKHRoaXMuX2IpLGE6dGhpcy5fYX19LHRvUmdiU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDE9PXRoaXMuX2E/XCJyZ2IoXCIrTWF0aC5yb3VuZCh0aGlzLl9yKStcIiwgXCIrTWF0aC5yb3VuZCh0aGlzLl9nKStcIiwgXCIrTWF0aC5yb3VuZCh0aGlzLl9iKStcIilcIjpcInJnYmEoXCIrTWF0aC5yb3VuZCh0aGlzLl9yKStcIiwgXCIrTWF0aC5yb3VuZCh0aGlzLl9nKStcIiwgXCIrTWF0aC5yb3VuZCh0aGlzLl9iKStcIiwgXCIrdGhpcy5fcm91bmRBK1wiKVwifSx0b1BlcmNlbnRhZ2VSZ2I6ZnVuY3Rpb24oKXtyZXR1cm57cjpNYXRoLnJvdW5kKDEwMCpPKHRoaXMuX3IsMjU1KSkrXCIlXCIsZzpNYXRoLnJvdW5kKDEwMCpPKHRoaXMuX2csMjU1KSkrXCIlXCIsYjpNYXRoLnJvdW5kKDEwMCpPKHRoaXMuX2IsMjU1KSkrXCIlXCIsYTp0aGlzLl9hfX0sdG9QZXJjZW50YWdlUmdiU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDE9PXRoaXMuX2E/XCJyZ2IoXCIrTWF0aC5yb3VuZCgxMDAqTyh0aGlzLl9yLDI1NSkpK1wiJSwgXCIrTWF0aC5yb3VuZCgxMDAqTyh0aGlzLl9nLDI1NSkpK1wiJSwgXCIrTWF0aC5yb3VuZCgxMDAqTyh0aGlzLl9iLDI1NSkpK1wiJSlcIjpcInJnYmEoXCIrTWF0aC5yb3VuZCgxMDAqTyh0aGlzLl9yLDI1NSkpK1wiJSwgXCIrTWF0aC5yb3VuZCgxMDAqTyh0aGlzLl9nLDI1NSkpK1wiJSwgXCIrTWF0aC5yb3VuZCgxMDAqTyh0aGlzLl9iLDI1NSkpK1wiJSwgXCIrdGhpcy5fcm91bmRBK1wiKVwifSx0b05hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuX2E/XCJ0cmFuc3BhcmVudFwiOiEodGhpcy5fYTwxKSYmKGJbaSh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYiwhMCldfHwhMSl9LHRvRmlsdGVyOmZ1bmN0aW9uKGUpe3ZhciB0PVwiI1wiK2wodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsdGhpcy5fYSksbj10LG89dGhpcy5fZ3JhZGllbnRUeXBlP1wiR3JhZGllbnRUeXBlID0gMSwgXCI6XCJcIjtpZihlKXt2YXIgYT1yKGUpO249XCIjXCIrbChhLl9yLGEuX2csYS5fYixhLl9hKX1yZXR1cm5cInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChcIitvK1wic3RhcnRDb2xvcnN0cj1cIit0K1wiLGVuZENvbG9yc3RyPVwiK24rXCIpXCJ9LHRvU3RyaW5nOmZ1bmN0aW9uKGUpe3ZhciB0PSEhZTtlPWV8fHRoaXMuX2Zvcm1hdDt2YXIgbj0hMSxyPXRoaXMuX2E8MSYmdGhpcy5fYT49MDtyZXR1cm4gdHx8IXJ8fFwiaGV4XCIhPT1lJiZcImhleDZcIiE9PWUmJlwiaGV4M1wiIT09ZSYmXCJoZXg0XCIhPT1lJiZcImhleDhcIiE9PWUmJlwibmFtZVwiIT09ZT8oXCJyZ2JcIj09PWUmJihuPXRoaXMudG9SZ2JTdHJpbmcoKSksXCJwcmdiXCI9PT1lJiYobj10aGlzLnRvUGVyY2VudGFnZVJnYlN0cmluZygpKSxcImhleFwiIT09ZSYmXCJoZXg2XCIhPT1lfHwobj10aGlzLnRvSGV4U3RyaW5nKCkpLFwiaGV4M1wiPT09ZSYmKG49dGhpcy50b0hleFN0cmluZyghMCkpLFwiaGV4NFwiPT09ZSYmKG49dGhpcy50b0hleDhTdHJpbmcoITApKSxcImhleDhcIj09PWUmJihuPXRoaXMudG9IZXg4U3RyaW5nKCkpLFwibmFtZVwiPT09ZSYmKG49dGhpcy50b05hbWUoKSksXCJoc2xcIj09PWUmJihuPXRoaXMudG9Ic2xTdHJpbmcoKSksXCJoc3ZcIj09PWUmJihuPXRoaXMudG9Ic3ZTdHJpbmcoKSksbnx8dGhpcy50b0hleFN0cmluZygpKTpcIm5hbWVcIj09PWUmJjA9PT10aGlzLl9hP3RoaXMudG9OYW1lKCk6dGhpcy50b1JnYlN0cmluZygpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiByKHRoaXMudG9TdHJpbmcoKSl9LF9hcHBseU1vZGlmaWNhdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuPWUuYXBwbHkobnVsbCxbdGhpc10uY29uY2F0KFtdLnNsaWNlLmNhbGwodCkpKTtyZXR1cm4gdGhpcy5fcj1uLl9yLHRoaXMuX2c9bi5fZyx0aGlzLl9iPW4uX2IsdGhpcy5zZXRBbHBoYShuLl9hKSx0aGlzfSxsaWdodGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGQsYXJndW1lbnRzKX0sYnJpZ2h0ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oZixhcmd1bWVudHMpfSxkYXJrZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24ocCxhcmd1bWVudHMpfSxkZXNhdHVyYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGMsYXJndW1lbnRzKX0sc2F0dXJhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24ocyxhcmd1bWVudHMpfSxncmV5c2NhbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24odSxhcmd1bWVudHMpfSxzcGluOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGgsYXJndW1lbnRzKX0sX2FwcGx5Q29tYmluYXRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5hcHBseShudWxsLFt0aGlzXS5jb25jYXQoW10uc2xpY2UuY2FsbCh0KSkpfSxhbmFsb2dvdXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihtLGFyZ3VtZW50cyl9LGNvbXBsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihDLGFyZ3VtZW50cyl9LG1vbm9jaHJvbWF0aWM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbih3LGFyZ3VtZW50cyl9LHNwbGl0Y29tcGxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKGcsYXJndW1lbnRzKX0sdHJpYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbih2LFszXSl9LHRldHJhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKHYsWzRdKX19LHIuZnJvbVJhdGlvPWZ1bmN0aW9uKHQsbil7aWYoXCJvYmplY3RcIj09ZSh0KSl7dmFyIG89e307Zm9yKHZhciBhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmKG9bYV09XCJhXCI9PT1hP3RbYV06Xyh0W2FdKSk7dD1vfXJldHVybiByKHQsbil9LHIuZXF1YWxzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuISghZXx8IXQpJiZyKGUpLnRvUmdiU3RyaW5nKCk9PXIodCkudG9SZ2JTdHJpbmcoKX0sci5yYW5kb209ZnVuY3Rpb24oKXtyZXR1cm4gci5mcm9tUmF0aW8oe3I6TWF0aC5yYW5kb20oKSxnOk1hdGgucmFuZG9tKCksYjpNYXRoLnJhbmRvbSgpfSl9LHIubWl4PWZ1bmN0aW9uKGUsdCxuKXtuPTA9PT1uPzA6bnx8NTA7dmFyIG89cihlKS50b1JnYigpLGE9cih0KS50b1JnYigpLGk9bi8xMDA7cmV0dXJuIHIoe3I6KGEuci1vLnIpKmkrby5yLGc6KGEuZy1vLmcpKmkrby5nLGI6KGEuYi1vLmIpKmkrby5iLGE6KGEuYS1vLmEpKmkrby5hfSl9LHIucmVhZGFiaWxpdHk9ZnVuY3Rpb24oZSx0KXt2YXIgbj1yKGUpLG89cih0KTtyZXR1cm4oTWF0aC5tYXgobi5nZXRMdW1pbmFuY2UoKSxvLmdldEx1bWluYW5jZSgpKSsuMDUpLyhNYXRoLm1pbihuLmdldEx1bWluYW5jZSgpLG8uZ2V0THVtaW5hbmNlKCkpKy4wNSl9LHIuaXNSZWFkYWJsZT1mdW5jdGlvbihlLHQsbil7dmFyIG8sYSxpLGwsYyxzPXIucmVhZGFiaWxpdHkoZSx0KTtzd2l0Y2goYT0hMSwoaT1uLFwiQUFcIiE9PShsPSgoaT1pfHx7bGV2ZWw6XCJBQVwiLHNpemU6XCJzbWFsbFwifSkubGV2ZWx8fFwiQUFcIikudG9VcHBlckNhc2UoKSkmJlwiQUFBXCIhPT1sJiYobD1cIkFBXCIpLFwic21hbGxcIiE9PShjPShpLnNpemV8fFwic21hbGxcIikudG9Mb3dlckNhc2UoKSkmJlwibGFyZ2VcIiE9PWMmJihjPVwic21hbGxcIiksbz17bGV2ZWw6bCxzaXplOmN9KS5sZXZlbCtvLnNpemUpe2Nhc2VcIkFBc21hbGxcIjpjYXNlXCJBQUFsYXJnZVwiOmE9cz49NC41O2JyZWFrO2Nhc2VcIkFBbGFyZ2VcIjphPXM+PTM7YnJlYWs7Y2FzZVwiQUFBc21hbGxcIjphPXM+PTd9cmV0dXJuIGF9LHIubW9zdFJlYWRhYmxlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbyxhLGksbCxjPW51bGwscz0wO2E9KG49bnx8e30pLmluY2x1ZGVGYWxsYmFja0NvbG9ycyxpPW4ubGV2ZWwsbD1uLnNpemU7Zm9yKHZhciB1PTA7dTx0Lmxlbmd0aDt1KyspKG89ci5yZWFkYWJpbGl0eShlLHRbdV0pKT5zJiYocz1vLGM9cih0W3VdKSk7cmV0dXJuIHIuaXNSZWFkYWJsZShlLGMse2xldmVsOmksc2l6ZTpsfSl8fCFhP2M6KG4uaW5jbHVkZUZhbGxiYWNrQ29sb3JzPSExLHIubW9zdFJlYWRhYmxlKGUsW1wiI2ZmZlwiLFwiIzAwMFwiXSxuKSl9O3ZhciB5PXIubmFtZXM9e2FsaWNlYmx1ZTpcImYwZjhmZlwiLGFudGlxdWV3aGl0ZTpcImZhZWJkN1wiLGFxdWE6XCIwZmZcIixhcXVhbWFyaW5lOlwiN2ZmZmQ0XCIsYXp1cmU6XCJmMGZmZmZcIixiZWlnZTpcImY1ZjVkY1wiLGJpc3F1ZTpcImZmZTRjNFwiLGJsYWNrOlwiMDAwXCIsYmxhbmNoZWRhbG1vbmQ6XCJmZmViY2RcIixibHVlOlwiMDBmXCIsYmx1ZXZpb2xldDpcIjhhMmJlMlwiLGJyb3duOlwiYTUyYTJhXCIsYnVybHl3b29kOlwiZGViODg3XCIsYnVybnRzaWVubmE6XCJlYTdlNWRcIixjYWRldGJsdWU6XCI1ZjllYTBcIixjaGFydHJldXNlOlwiN2ZmZjAwXCIsY2hvY29sYXRlOlwiZDI2OTFlXCIsY29yYWw6XCJmZjdmNTBcIixjb3JuZmxvd2VyYmx1ZTpcIjY0OTVlZFwiLGNvcm5zaWxrOlwiZmZmOGRjXCIsY3JpbXNvbjpcImRjMTQzY1wiLGN5YW46XCIwZmZcIixkYXJrYmx1ZTpcIjAwMDA4YlwiLGRhcmtjeWFuOlwiMDA4YjhiXCIsZGFya2dvbGRlbnJvZDpcImI4ODYwYlwiLGRhcmtncmF5OlwiYTlhOWE5XCIsZGFya2dyZWVuOlwiMDA2NDAwXCIsZGFya2dyZXk6XCJhOWE5YTlcIixkYXJra2hha2k6XCJiZGI3NmJcIixkYXJrbWFnZW50YTpcIjhiMDA4YlwiLGRhcmtvbGl2ZWdyZWVuOlwiNTU2YjJmXCIsZGFya29yYW5nZTpcImZmOGMwMFwiLGRhcmtvcmNoaWQ6XCI5OTMyY2NcIixkYXJrcmVkOlwiOGIwMDAwXCIsZGFya3NhbG1vbjpcImU5OTY3YVwiLGRhcmtzZWFncmVlbjpcIjhmYmM4ZlwiLGRhcmtzbGF0ZWJsdWU6XCI0ODNkOGJcIixkYXJrc2xhdGVncmF5OlwiMmY0ZjRmXCIsZGFya3NsYXRlZ3JleTpcIjJmNGY0ZlwiLGRhcmt0dXJxdW9pc2U6XCIwMGNlZDFcIixkYXJrdmlvbGV0OlwiOTQwMGQzXCIsZGVlcHBpbms6XCJmZjE0OTNcIixkZWVwc2t5Ymx1ZTpcIjAwYmZmZlwiLGRpbWdyYXk6XCI2OTY5NjlcIixkaW1ncmV5OlwiNjk2OTY5XCIsZG9kZ2VyYmx1ZTpcIjFlOTBmZlwiLGZpcmVicmljazpcImIyMjIyMlwiLGZsb3JhbHdoaXRlOlwiZmZmYWYwXCIsZm9yZXN0Z3JlZW46XCIyMjhiMjJcIixmdWNoc2lhOlwiZjBmXCIsZ2FpbnNib3JvOlwiZGNkY2RjXCIsZ2hvc3R3aGl0ZTpcImY4ZjhmZlwiLGdvbGQ6XCJmZmQ3MDBcIixnb2xkZW5yb2Q6XCJkYWE1MjBcIixncmF5OlwiODA4MDgwXCIsZ3JlZW46XCIwMDgwMDBcIixncmVlbnllbGxvdzpcImFkZmYyZlwiLGdyZXk6XCI4MDgwODBcIixob25leWRldzpcImYwZmZmMFwiLGhvdHBpbms6XCJmZjY5YjRcIixpbmRpYW5yZWQ6XCJjZDVjNWNcIixpbmRpZ286XCI0YjAwODJcIixpdm9yeTpcImZmZmZmMFwiLGtoYWtpOlwiZjBlNjhjXCIsbGF2ZW5kZXI6XCJlNmU2ZmFcIixsYXZlbmRlcmJsdXNoOlwiZmZmMGY1XCIsbGF3bmdyZWVuOlwiN2NmYzAwXCIsbGVtb25jaGlmZm9uOlwiZmZmYWNkXCIsbGlnaHRibHVlOlwiYWRkOGU2XCIsbGlnaHRjb3JhbDpcImYwODA4MFwiLGxpZ2h0Y3lhbjpcImUwZmZmZlwiLGxpZ2h0Z29sZGVucm9keWVsbG93OlwiZmFmYWQyXCIsbGlnaHRncmF5OlwiZDNkM2QzXCIsbGlnaHRncmVlbjpcIjkwZWU5MFwiLGxpZ2h0Z3JleTpcImQzZDNkM1wiLGxpZ2h0cGluazpcImZmYjZjMVwiLGxpZ2h0c2FsbW9uOlwiZmZhMDdhXCIsbGlnaHRzZWFncmVlbjpcIjIwYjJhYVwiLGxpZ2h0c2t5Ymx1ZTpcIjg3Y2VmYVwiLGxpZ2h0c2xhdGVncmF5OlwiNzg5XCIsbGlnaHRzbGF0ZWdyZXk6XCI3ODlcIixsaWdodHN0ZWVsYmx1ZTpcImIwYzRkZVwiLGxpZ2h0eWVsbG93OlwiZmZmZmUwXCIsbGltZTpcIjBmMFwiLGxpbWVncmVlbjpcIjMyY2QzMlwiLGxpbmVuOlwiZmFmMGU2XCIsbWFnZW50YTpcImYwZlwiLG1hcm9vbjpcIjgwMDAwMFwiLG1lZGl1bWFxdWFtYXJpbmU6XCI2NmNkYWFcIixtZWRpdW1ibHVlOlwiMDAwMGNkXCIsbWVkaXVtb3JjaGlkOlwiYmE1NWQzXCIsbWVkaXVtcHVycGxlOlwiOTM3MGRiXCIsbWVkaXVtc2VhZ3JlZW46XCIzY2IzNzFcIixtZWRpdW1zbGF0ZWJsdWU6XCI3YjY4ZWVcIixtZWRpdW1zcHJpbmdncmVlbjpcIjAwZmE5YVwiLG1lZGl1bXR1cnF1b2lzZTpcIjQ4ZDFjY1wiLG1lZGl1bXZpb2xldHJlZDpcImM3MTU4NVwiLG1pZG5pZ2h0Ymx1ZTpcIjE5MTk3MFwiLG1pbnRjcmVhbTpcImY1ZmZmYVwiLG1pc3R5cm9zZTpcImZmZTRlMVwiLG1vY2Nhc2luOlwiZmZlNGI1XCIsbmF2YWpvd2hpdGU6XCJmZmRlYWRcIixuYXZ5OlwiMDAwMDgwXCIsb2xkbGFjZTpcImZkZjVlNlwiLG9saXZlOlwiODA4MDAwXCIsb2xpdmVkcmFiOlwiNmI4ZTIzXCIsb3JhbmdlOlwiZmZhNTAwXCIsb3JhbmdlcmVkOlwiZmY0NTAwXCIsb3JjaGlkOlwiZGE3MGQ2XCIscGFsZWdvbGRlbnJvZDpcImVlZThhYVwiLHBhbGVncmVlbjpcIjk4ZmI5OFwiLHBhbGV0dXJxdW9pc2U6XCJhZmVlZWVcIixwYWxldmlvbGV0cmVkOlwiZGI3MDkzXCIscGFwYXlhd2hpcDpcImZmZWZkNVwiLHBlYWNocHVmZjpcImZmZGFiOVwiLHBlcnU6XCJjZDg1M2ZcIixwaW5rOlwiZmZjMGNiXCIscGx1bTpcImRkYTBkZFwiLHBvd2RlcmJsdWU6XCJiMGUwZTZcIixwdXJwbGU6XCI4MDAwODBcIixyZWJlY2NhcHVycGxlOlwiNjYzMzk5XCIscmVkOlwiZjAwXCIscm9zeWJyb3duOlwiYmM4ZjhmXCIscm95YWxibHVlOlwiNDE2OWUxXCIsc2FkZGxlYnJvd246XCI4YjQ1MTNcIixzYWxtb246XCJmYTgwNzJcIixzYW5keWJyb3duOlwiZjRhNDYwXCIsc2VhZ3JlZW46XCIyZThiNTdcIixzZWFzaGVsbDpcImZmZjVlZVwiLHNpZW5uYTpcImEwNTIyZFwiLHNpbHZlcjpcImMwYzBjMFwiLHNreWJsdWU6XCI4N2NlZWJcIixzbGF0ZWJsdWU6XCI2YTVhY2RcIixzbGF0ZWdyYXk6XCI3MDgwOTBcIixzbGF0ZWdyZXk6XCI3MDgwOTBcIixzbm93OlwiZmZmYWZhXCIsc3ByaW5nZ3JlZW46XCIwMGZmN2ZcIixzdGVlbGJsdWU6XCI0NjgyYjRcIix0YW46XCJkMmI0OGNcIix0ZWFsOlwiMDA4MDgwXCIsdGhpc3RsZTpcImQ4YmZkOFwiLHRvbWF0bzpcImZmNjM0N1wiLHR1cnF1b2lzZTpcIjQwZTBkMFwiLHZpb2xldDpcImVlODJlZVwiLHdoZWF0OlwiZjVkZWIzXCIsd2hpdGU6XCJmZmZcIix3aGl0ZXNtb2tlOlwiZjVmNWY1XCIseWVsbG93OlwiZmYwXCIseWVsbG93Z3JlZW46XCI5YWNkMzJcIn0sYj1yLmhleE5hbWVzPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W2Vbbl1dPW4pO3JldHVybiB0fSh5KTtmdW5jdGlvbiB4KGUpe3JldHVybiBlPXBhcnNlRmxvYXQoZSksKGlzTmFOKGUpfHxlPDB8fGU+MSkmJihlPTEpLGV9ZnVuY3Rpb24gTyhlLHQpeyhmdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmLTEhPWUuaW5kZXhPZihcIi5cIikmJjE9PT1wYXJzZUZsb2F0KGUpfSkoZSkmJihlPVwiMTAwJVwiKTt2YXIgbj1mdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmLTEhPWUuaW5kZXhPZihcIiVcIil9KGUpO3JldHVybiBlPU1hdGgubWluKHQsTWF0aC5tYXgoMCxwYXJzZUZsb2F0KGUpKSksbiYmKGU9cGFyc2VJbnQoZSp0LDEwKS8xMDApLE1hdGguYWJzKGUtdCk8MWUtNj8xOmUldC9wYXJzZUZsb2F0KHQpfWZ1bmN0aW9uIEwoZSl7cmV0dXJuIE1hdGgubWluKDEsTWF0aC5tYXgoMCxlKSl9ZnVuY3Rpb24gTShlKXtyZXR1cm4gcGFyc2VJbnQoZSwxNil9ZnVuY3Rpb24gUyhlKXtyZXR1cm4gMT09ZS5sZW5ndGg/XCIwXCIrZTpcIlwiK2V9ZnVuY3Rpb24gXyhlKXtyZXR1cm4gZTw9MSYmKGU9MTAwKmUrXCIlXCIpLGV9ZnVuY3Rpb24gaihlKXtyZXR1cm4gTWF0aC5yb3VuZCgyNTUqcGFyc2VGbG9hdChlKSkudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIEUoZSl7cmV0dXJuIE0oZSkvMjU1fXZhciBQLGssSCxWPShrPVwiW1xcXFxzfFxcXFwoXSsoXCIrKFA9XCIoPzpbLVxcXFwrXT9cXFxcZCpcXFxcLlxcXFxkKyU/KXwoPzpbLVxcXFwrXT9cXFxcZCslPylcIikrXCIpWyx8XFxcXHNdKyhcIitQK1wiKVssfFxcXFxzXSsoXCIrUCtcIilcXFxccypcXFxcKT9cIixIPVwiW1xcXFxzfFxcXFwoXSsoXCIrUCtcIilbLHxcXFxcc10rKFwiK1ArXCIpWyx8XFxcXHNdKyhcIitQK1wiKVssfFxcXFxzXSsoXCIrUCtcIilcXFxccypcXFxcKT9cIix7Q1NTX1VOSVQ6bmV3IFJlZ0V4cChQKSxyZ2I6bmV3IFJlZ0V4cChcInJnYlwiK2spLHJnYmE6bmV3IFJlZ0V4cChcInJnYmFcIitIKSxoc2w6bmV3IFJlZ0V4cChcImhzbFwiK2spLGhzbGE6bmV3IFJlZ0V4cChcImhzbGFcIitIKSxoc3Y6bmV3IFJlZ0V4cChcImhzdlwiK2spLGhzdmE6bmV3IFJlZ0V4cChcImhzdmFcIitIKSxoZXgzOi9eIz8oWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkkLyxoZXg2Oi9eIz8oWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkkLyxoZXg0Oi9eIz8oWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pJC8saGV4ODovXiM/KFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KSQvfSk7ZnVuY3Rpb24gUihlKXtyZXR1cm4hIVYuQ1NTX1VOSVQuZXhlYyhlKX1yZXR1cm4gcn0oKX19LG89e307ZnVuY3Rpb24gYShlKXt2YXIgdD1vW2VdO2lmKHZvaWQgMCE9PXQpcmV0dXJuIHQuZXhwb3J0czt2YXIgbj1vW2VdPXtpZDplLGV4cG9ydHM6e319O3JldHVybiByW2VdLmNhbGwobi5leHBvcnRzLG4sbi5leHBvcnRzLGEpLG4uZXhwb3J0c31hLm49ZT0+e3ZhciB0PWUmJmUuX19lc01vZHVsZT8oKT0+ZS5kZWZhdWx0OigpPT5lO3JldHVybiBhLmQodCx7YTp0fSksdH0sYS5kPShlLHQpPT57Zm9yKHZhciBuIGluIHQpYS5vKHQsbikmJiFhLm8oZSxuKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTohMCxnZXQ6dFtuXX0pfSxhLmc9ZnVuY3Rpb24oKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsVGhpcylyZXR1cm4gZ2xvYmFsVGhpczt0cnl7cmV0dXJuIHRoaXN8fG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCl9Y2F0Y2goZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93fX0oKSxhLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpLGEucj1lPT57XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX07dmFyIGk9YSgzNDEpLGw9dDtmb3IodmFyIGMgaW4gaSlsW2NdPWlbY107aS5fX2VzTW9kdWxlJiZPYmplY3QuZGVmaW5lUHJvcGVydHkobCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sMTk4OihlLHQsbik9Pnt2YXIgcj1OYU4sbz1cIltvYmplY3QgU3ltYm9sXVwiLGE9L15cXHMrfFxccyskL2csaT0vXlstK10weFswLTlhLWZdKyQvaSxsPS9eMGJbMDFdKyQvaSxjPS9eMG9bMC03XSskL2kscz1wYXJzZUludCx1PVwib2JqZWN0XCI9PXR5cGVvZiBuLmcmJm4uZyYmbi5nLk9iamVjdD09PU9iamVjdCYmbi5nLGQ9XCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGY9dXx8ZHx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpLHA9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxoPU1hdGgubWF4LEM9TWF0aC5taW4sdj1mdW5jdGlvbigpe3JldHVybiBmLkRhdGUubm93KCl9O2Z1bmN0aW9uIGcoZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuISFlJiYoXCJvYmplY3RcIj09dHx8XCJmdW5jdGlvblwiPT10KX1mdW5jdGlvbiBtKGUpe2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXJldHVybiBlO2lmKGZ1bmN0aW9uKGUpe3JldHVyblwic3ltYm9sXCI9PXR5cGVvZiBlfHxmdW5jdGlvbihlKXtyZXR1cm4hIWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlfShlKSYmcC5jYWxsKGUpPT1vfShlKSlyZXR1cm4gcjtpZihnKGUpKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnZhbHVlT2Y/ZS52YWx1ZU9mKCk6ZTtlPWcodCk/dCtcIlwiOnR9aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpcmV0dXJuIDA9PT1lP2U6K2U7ZT1lLnJlcGxhY2UoYSxcIlwiKTt2YXIgbj1sLnRlc3QoZSk7cmV0dXJuIG58fGMudGVzdChlKT9zKGUuc2xpY2UoMiksbj8yOjgpOmkudGVzdChlKT9yOitlfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxhLGksbCxjLHM9MCx1PSExLGQ9ITEsZj0hMDtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCBhIGZ1bmN0aW9uXCIpO2Z1bmN0aW9uIHAodCl7dmFyIG49cixhPW87cmV0dXJuIHI9bz12b2lkIDAscz10LGk9ZS5hcHBseShhLG4pfWZ1bmN0aW9uIHcoZSl7dmFyIG49ZS1jO3JldHVybiB2b2lkIDA9PT1jfHxuPj10fHxuPDB8fGQmJmUtcz49YX1mdW5jdGlvbiB5KCl7dmFyIGU9digpO2lmKHcoZSkpcmV0dXJuIGIoZSk7bD1zZXRUaW1lb3V0KHksZnVuY3Rpb24oZSl7dmFyIG49dC0oZS1jKTtyZXR1cm4gZD9DKG4sYS0oZS1zKSk6bn0oZSkpfWZ1bmN0aW9uIGIoZSl7cmV0dXJuIGw9dm9pZCAwLGYmJnI/cChlKToocj1vPXZvaWQgMCxpKX1mdW5jdGlvbiB4KCl7dmFyIGU9digpLG49dyhlKTtpZihyPWFyZ3VtZW50cyxvPXRoaXMsYz1lLG4pe2lmKHZvaWQgMD09PWwpcmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBzPWUsbD1zZXRUaW1lb3V0KHksdCksdT9wKGUpOml9KGMpO2lmKGQpcmV0dXJuIGw9c2V0VGltZW91dCh5LHQpLHAoYyl9cmV0dXJuIHZvaWQgMD09PWwmJihsPXNldFRpbWVvdXQoeSx0KSksaX1yZXR1cm4gdD1tKHQpfHwwLGcobikmJih1PSEhbi5sZWFkaW5nLGE9KGQ9XCJtYXhXYWl0XCJpbiBuKT9oKG0obi5tYXhXYWl0KXx8MCx0KTphLGY9XCJ0cmFpbGluZ1wiaW4gbj8hIW4udHJhaWxpbmc6ZikseC5jYW5jZWw9ZnVuY3Rpb24oKXt2b2lkIDAhPT1sJiZjbGVhclRpbWVvdXQobCkscz0wLHI9Yz1vPWw9dm9pZCAwfSx4LmZsdXNoPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PWw/aTpiKHYoKSl9LHh9fSw1MjU6ZT0+e1widXNlIHN0cmljdFwiO3ZhciB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsbj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHI9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIGU9bmV3IFN0cmluZyhcImFiY1wiKTtpZihlWzVdPVwiZGVcIixcIjVcIj09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBdKXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFtcIl9cIitTdHJpbmcuZnJvbUNoYXJDb2RlKG4pXT1uO2lmKFwiMDEyMzQ1Njc4OVwiIT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pKS5qb2luKFwiXCIpKXJldHVybiExO3ZhciByPXt9O3JldHVyblwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIi5zcGxpdChcIlwiKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyW2VdPWV9KSksXCJhYmNkZWZnaGlqa2xtbm9wcXJzdFwiPT09T2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxyKSkuam9pbihcIlwiKX1jYXRjaChlKXtyZXR1cm4hMX19KCk/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihlLG8pe2Zvcih2YXIgYSxpLGw9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWRcIik7cmV0dXJuIE9iamVjdChlKX0oZSksYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe2Zvcih2YXIgcyBpbiBhPU9iamVjdChhcmd1bWVudHNbY10pKW4uY2FsbChhLHMpJiYobFtzXT1hW3NdKTtpZih0KXtpPXQoYSk7Zm9yKHZhciB1PTA7dTxpLmxlbmd0aDt1Kyspci5jYWxsKGEsaVt1XSkmJihsW2lbdV1dPWFbaVt1XV0pfX1yZXR1cm4gbH19LDcwMjooZSx0KT0+e1widXNlIHN0cmljdFwiO3ZhciBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcixyPW4/U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIik6NjAxMDMsbz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIik6NjAxMDYsYT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKTo2MDEwNyxpPW4/U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpOjYwMTA4LGw9bj9TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIik6NjAxMTQsYz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKTo2MDEwOSxzPW4/U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIik6NjAxMTAsdT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5hc3luY19tb2RlXCIpOjYwMTExLGQ9bj9TeW1ib2wuZm9yKFwicmVhY3QuY29uY3VycmVudF9tb2RlXCIpOjYwMTExLGY9bj9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIscD1uP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxoPW4/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIik6NjAxMjAsQz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LHY9bj9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNixnPW4/U3ltYm9sLmZvcihcInJlYWN0LmJsb2NrXCIpOjYwMTIxLG09bj9TeW1ib2wuZm9yKFwicmVhY3QuZnVuZGFtZW50YWxcIik6NjAxMTcsdz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5yZXNwb25kZXJcIik6NjAxMTgseT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTo2MDExOTtmdW5jdGlvbiBiKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSl7dmFyIHQ9ZS4kJHR5cGVvZjtzd2l0Y2godCl7Y2FzZSByOnN3aXRjaChlPWUudHlwZSl7Y2FzZSB1OmNhc2UgZDpjYXNlIGE6Y2FzZSBsOmNhc2UgaTpjYXNlIHA6cmV0dXJuIGU7ZGVmYXVsdDpzd2l0Y2goZT1lJiZlLiQkdHlwZW9mKXtjYXNlIHM6Y2FzZSBmOmNhc2UgdjpjYXNlIEM6Y2FzZSBjOnJldHVybiBlO2RlZmF1bHQ6cmV0dXJuIHR9fWNhc2UgbzpyZXR1cm4gdH19fWZ1bmN0aW9uIHgoZSl7cmV0dXJuIGIoZSk9PT1kfXQuRm9yd2FyZFJlZj1mLHQuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlfHxlPT09YXx8ZT09PWR8fGU9PT1sfHxlPT09aXx8ZT09PXB8fGU9PT1ofHxcIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUmJihlLiQkdHlwZW9mPT09dnx8ZS4kJHR5cGVvZj09PUN8fGUuJCR0eXBlb2Y9PT1jfHxlLiQkdHlwZW9mPT09c3x8ZS4kJHR5cGVvZj09PWZ8fGUuJCR0eXBlb2Y9PT1tfHxlLiQkdHlwZW9mPT09d3x8ZS4kJHR5cGVvZj09PXl8fGUuJCR0eXBlb2Y9PT1nKX19LDE4NTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4oNzAyKX0sNTM1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDUyNSksbz02MDEwMyxhPTYwMTA2O3QuRnJhZ21lbnQ9NjAxMDcsdC5TdHJpY3RNb2RlPTYwMTA4LHQuUHJvZmlsZXI9NjAxMTQ7dmFyIGk9NjAxMDksbD02MDExMCxjPTYwMTEyO3QuU3VzcGVuc2U9NjAxMTM7dmFyIHM9NjAxMTUsdT02MDExNjtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3Ipe3ZhciBkPVN5bWJvbC5mb3I7bz1kKFwicmVhY3QuZWxlbWVudFwiKSxhPWQoXCJyZWFjdC5wb3J0YWxcIiksdC5GcmFnbWVudD1kKFwicmVhY3QuZnJhZ21lbnRcIiksdC5TdHJpY3RNb2RlPWQoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSx0LlByb2ZpbGVyPWQoXCJyZWFjdC5wcm9maWxlclwiKSxpPWQoXCJyZWFjdC5wcm92aWRlclwiKSxsPWQoXCJyZWFjdC5jb250ZXh0XCIpLGM9ZChcInJlYWN0LmZvcndhcmRfcmVmXCIpLHQuU3VzcGVuc2U9ZChcInJlYWN0LnN1c3BlbnNlXCIpLHM9ZChcInJlYWN0Lm1lbW9cIiksdT1kKFwicmVhY3QubGF6eVwiKX12YXIgZj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBwKGUpe2Zvcih2YXIgdD1cImh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PVwiK2Usbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdCs9XCImYXJnc1tdPVwiK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbbl0pO3JldHVyblwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiK2UrXCI7IHZpc2l0IFwiK3QrXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLlwifXZhciBoPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxDPXt9O2Z1bmN0aW9uIHYoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9Qyx0aGlzLnVwZGF0ZXI9bnx8aH1mdW5jdGlvbiBnKCl7fWZ1bmN0aW9uIG0oZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9Qyx0aGlzLnVwZGF0ZXI9bnx8aH12LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LHYucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPWUpdGhyb3cgRXJyb3IocCg4NSkpO3RoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxlLHQsXCJzZXRTdGF0ZVwiKX0sdi5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLGUsXCJmb3JjZVVwZGF0ZVwiKX0sZy5wcm90b3R5cGU9di5wcm90b3R5cGU7dmFyIHc9bS5wcm90b3R5cGU9bmV3IGc7dy5jb25zdHJ1Y3Rvcj1tLHIodyx2LnByb3RvdHlwZSksdy5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgeT17Y3VycmVudDpudWxsfSxiPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkseD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIE8oZSx0LG4pe3ZhciByLGE9e30saT1udWxsLGw9bnVsbDtpZihudWxsIT10KWZvcihyIGluIHZvaWQgMCE9PXQucmVmJiYobD10LnJlZiksdm9pZCAwIT09dC5rZXkmJihpPVwiXCIrdC5rZXkpLHQpYi5jYWxsKHQscikmJiF4Lmhhc093blByb3BlcnR5KHIpJiYoYVtyXT10W3JdKTt2YXIgYz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWMpYS5jaGlsZHJlbj1uO2Vsc2UgaWYoMTxjKXtmb3IodmFyIHM9QXJyYXkoYyksdT0wO3U8Yzt1Kyspc1t1XT1hcmd1bWVudHNbdSsyXTthLmNoaWxkcmVuPXN9aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKHIgaW4gYz1lLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT1hW3JdJiYoYVtyXT1jW3JdKTtyZXR1cm57JCR0eXBlb2Y6byx0eXBlOmUsa2V5OmkscmVmOmwscHJvcHM6YSxfb3duZXI6eS5jdXJyZW50fX1mdW5jdGlvbiBMKGUpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmZS4kJHR5cGVvZj09PW99dmFyIE09L1xcLysvZztmdW5jdGlvbiBTKGUsdCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lJiZudWxsIT1lLmtleT9mdW5jdGlvbihlKXt2YXIgdD17XCI9XCI6XCI9MFwiLFwiOlwiOlwiPTJcIn07cmV0dXJuXCIkXCIrZS5yZXBsYWNlKC9bPTpdL2csKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkpfShcIlwiK2Uua2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBfKGUsdCxuLHIsaSl7dmFyIGw9dHlwZW9mIGU7XCJ1bmRlZmluZWRcIiE9PWwmJlwiYm9vbGVhblwiIT09bHx8KGU9bnVsbCk7dmFyIGM9ITE7aWYobnVsbD09PWUpYz0hMDtlbHNlIHN3aXRjaChsKXtjYXNlXCJzdHJpbmdcIjpjYXNlXCJudW1iZXJcIjpjPSEwO2JyZWFrO2Nhc2VcIm9iamVjdFwiOnN3aXRjaChlLiQkdHlwZW9mKXtjYXNlIG86Y2FzZSBhOmM9ITB9fWlmKGMpcmV0dXJuIGk9aShjPWUpLGU9XCJcIj09PXI/XCIuXCIrUyhjLDApOnIsQXJyYXkuaXNBcnJheShpKT8obj1cIlwiLG51bGwhPWUmJihuPWUucmVwbGFjZShNLFwiJCYvXCIpK1wiL1wiKSxfKGksdCxuLFwiXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpKTpudWxsIT1pJiYoTChpKSYmKGk9ZnVuY3Rpb24oZSx0KXtyZXR1cm57JCR0eXBlb2Y6byx0eXBlOmUudHlwZSxrZXk6dCxyZWY6ZS5yZWYscHJvcHM6ZS5wcm9wcyxfb3duZXI6ZS5fb3duZXJ9fShpLG4rKCFpLmtleXx8YyYmYy5rZXk9PT1pLmtleT9cIlwiOihcIlwiK2kua2V5KS5yZXBsYWNlKE0sXCIkJi9cIikrXCIvXCIpK2UpKSx0LnB1c2goaSkpLDE7aWYoYz0wLHI9XCJcIj09PXI/XCIuXCI6citcIjpcIixBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgcz0wO3M8ZS5sZW5ndGg7cysrKXt2YXIgdT1yK1MobD1lW3NdLHMpO2MrPV8obCx0LG4sdSxpKX1lbHNlIGlmKHU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHxcIm9iamVjdFwiIT10eXBlb2YgZT9udWxsOlwiZnVuY3Rpb25cIj09dHlwZW9mKGU9ZiYmZVtmXXx8ZVtcIkBAaXRlcmF0b3JcIl0pP2U6bnVsbH0oZSksXCJmdW5jdGlvblwiPT10eXBlb2YgdSlmb3IoZT11LmNhbGwoZSkscz0wOyEobD1lLm5leHQoKSkuZG9uZTspYys9XyhsPWwudmFsdWUsdCxuLHU9citTKGwscysrKSxpKTtlbHNlIGlmKFwib2JqZWN0XCI9PT1sKXRocm93IHQ9XCJcIitlLEVycm9yKHAoMzEsXCJbb2JqZWN0IE9iamVjdF1cIj09PXQ/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyhlKS5qb2luKFwiLCBcIikrXCJ9XCI6dCkpO3JldHVybiBjfWZ1bmN0aW9uIGooZSx0LG4pe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIHI9W10sbz0wO3JldHVybiBfKGUscixcIlwiLFwiXCIsKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNhbGwobixlLG8rKyl9KSkscn1mdW5jdGlvbiBFKGUpe2lmKC0xPT09ZS5fc3RhdHVzKXt2YXIgdD1lLl9yZXN1bHQ7dD10KCksZS5fc3RhdHVzPTAsZS5fcmVzdWx0PXQsdC50aGVuKChmdW5jdGlvbih0KXswPT09ZS5fc3RhdHVzJiYodD10LmRlZmF1bHQsZS5fc3RhdHVzPTEsZS5fcmVzdWx0PXQpfSksKGZ1bmN0aW9uKHQpezA9PT1lLl9zdGF0dXMmJihlLl9zdGF0dXM9MixlLl9yZXN1bHQ9dCl9KSl9aWYoMT09PWUuX3N0YXR1cylyZXR1cm4gZS5fcmVzdWx0O3Rocm93IGUuX3Jlc3VsdH12YXIgUD17Y3VycmVudDpudWxsfTtmdW5jdGlvbiBrKCl7dmFyIGU9UC5jdXJyZW50O2lmKG51bGw9PT1lKXRocm93IEVycm9yKHAoMzIxKSk7cmV0dXJuIGV9dmFyIEg9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6UCxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzp7dHJhbnNpdGlvbjowfSxSZWFjdEN1cnJlbnRPd25lcjp5LElzU29tZVJlbmRlcmVyQWN0aW5nOntjdXJyZW50OiExfSxhc3NpZ246cn07dC5DaGlsZHJlbj17bWFwOmosZm9yRWFjaDpmdW5jdGlvbihlLHQsbil7aihlLChmdW5jdGlvbigpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksbil9LGNvdW50OmZ1bmN0aW9uKGUpe3ZhciB0PTA7cmV0dXJuIGooZSwoZnVuY3Rpb24oKXt0Kyt9KSksdH0sdG9BcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gaihlLChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKXx8W119LG9ubHk6ZnVuY3Rpb24oZSl7aWYoIUwoZSkpdGhyb3cgRXJyb3IocCgxNDMpKTtyZXR1cm4gZX19LHQuQ29tcG9uZW50PXYsdC5QdXJlQ29tcG9uZW50PW0sdC5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD1ILHQuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuKXtpZihudWxsPT1lKXRocm93IEVycm9yKHAoMjY3LGUpKTt2YXIgYT1yKHt9LGUucHJvcHMpLGk9ZS5rZXksbD1lLnJlZixjPWUuX293bmVyO2lmKG51bGwhPXQpe2lmKHZvaWQgMCE9PXQucmVmJiYobD10LnJlZixjPXkuY3VycmVudCksdm9pZCAwIT09dC5rZXkmJihpPVwiXCIrdC5rZXkpLGUudHlwZSYmZS50eXBlLmRlZmF1bHRQcm9wcyl2YXIgcz1lLnR5cGUuZGVmYXVsdFByb3BzO2Zvcih1IGluIHQpYi5jYWxsKHQsdSkmJiF4Lmhhc093blByb3BlcnR5KHUpJiYoYVt1XT12b2lkIDA9PT10W3VdJiZ2b2lkIDAhPT1zP3NbdV06dFt1XSl9dmFyIHU9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT11KWEuY2hpbGRyZW49bjtlbHNlIGlmKDE8dSl7cz1BcnJheSh1KTtmb3IodmFyIGQ9MDtkPHU7ZCsrKXNbZF09YXJndW1lbnRzW2QrMl07YS5jaGlsZHJlbj1zfXJldHVybnskJHR5cGVvZjpvLHR5cGU6ZS50eXBlLGtleTppLHJlZjpsLHByb3BzOmEsX293bmVyOmN9fSx0LmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bnVsbCksKGU9eyQkdHlwZW9mOmwsX2NhbGN1bGF0ZUNoYW5nZWRCaXRzOnQsX2N1cnJlbnRWYWx1ZTplLF9jdXJyZW50VmFsdWUyOmUsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsfSkuUHJvdmlkZXI9eyQkdHlwZW9mOmksX2NvbnRleHQ6ZX0sZS5Db25zdW1lcj1lfSx0LmNyZWF0ZUVsZW1lbnQ9Tyx0LmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9Ty5iaW5kKG51bGwsZSk7cmV0dXJuIHQudHlwZT1lLHR9LHQuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19LHQuZm9yd2FyZFJlZj1mdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6YyxyZW5kZXI6ZX19LHQuaXNWYWxpZEVsZW1lbnQ9TCx0Lmxhenk9ZnVuY3Rpb24oZSl7cmV0dXJueyQkdHlwZW9mOnUsX3BheWxvYWQ6e19zdGF0dXM6LTEsX3Jlc3VsdDplfSxfaW5pdDpFfX0sdC5tZW1vPWZ1bmN0aW9uKGUsdCl7cmV0dXJueyQkdHlwZW9mOnMsdHlwZTplLGNvbXBhcmU6dm9pZCAwPT09dD9udWxsOnR9fSx0LnVzZUNhbGxiYWNrPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGsoKS51c2VDYWxsYmFjayhlLHQpfSx0LnVzZUNvbnRleHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaygpLnVzZUNvbnRleHQoZSx0KX0sdC51c2VEZWJ1Z1ZhbHVlPWZ1bmN0aW9uKCl7fSx0LnVzZUVmZmVjdD1mdW5jdGlvbihlLHQpe3JldHVybiBrKCkudXNlRWZmZWN0KGUsdCl9LHQudXNlSW1wZXJhdGl2ZUhhbmRsZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGsoKS51c2VJbXBlcmF0aXZlSGFuZGxlKGUsdCxuKX0sdC51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaygpLnVzZUxheW91dEVmZmVjdChlLHQpfSx0LnVzZU1lbW89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaygpLnVzZU1lbW8oZSx0KX0sdC51c2VSZWR1Y2VyPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaygpLnVzZVJlZHVjZXIoZSx0LG4pfSx0LnVzZVJlZj1mdW5jdGlvbihlKXtyZXR1cm4gaygpLnVzZVJlZihlKX0sdC51c2VTdGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gaygpLnVzZVN0YXRlKGUpfSx0LnZlcnNpb249XCIxNy4wLjJcIn0sMzc4OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9big1MzUpfSw5MjE6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCx7U2VydmVyU3R5bGVTaGVldDooKT0+cHQsU3R5bGVTaGVldENvbnN1bWVyOigpPT5DdCxTdHlsZVNoZWV0Q29udGV4dDooKT0+aHQsU3R5bGVTaGVldE1hbmFnZXI6KCk9PnZ0LFRoZW1lQ29uc3VtZXI6KCk9PmR0LFRoZW1lQ29udGV4dDooKT0+dXQsVGhlbWVQcm92aWRlcjooKT0+ZnQsX19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0hBVU5URURfQllfU1BPT0tZX0dIT1NUUzooKT0+U3QsY3JlYXRlR2xvYmFsU3R5bGU6KCk9Pnh0LGNzczooKT0+QWUsZGVmYXVsdDooKT0+X3QsaXNTdHlsZWRDb21wb25lbnQ6KCk9PkYsa2V5ZnJhbWVzOigpPT5MdCx3aXRoVGhlbWU6KCk9Pk10fSk7dmFyIHI9big5NDYpLG89bi5uKHIpLGE9bigyNDYpLGk9bi5uKGEpLGw9bigzNzgpO2NvbnN0IGM9e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OjEsYm9yZGVySW1hZ2VPdXRzZXQ6MSxib3JkZXJJbWFnZVNsaWNlOjEsYm9yZGVySW1hZ2VXaWR0aDoxLGJveEZsZXg6MSxib3hGbGV4R3JvdXA6MSxib3hPcmRpbmFsR3JvdXA6MSxjb2x1bW5Db3VudDoxLGNvbHVtbnM6MSxmbGV4OjEsZmxleEdyb3c6MSxmbGV4UG9zaXRpdmU6MSxmbGV4U2hyaW5rOjEsZmxleE5lZ2F0aXZlOjEsZmxleE9yZGVyOjEsZ3JpZFJvdzoxLGdyaWRSb3dFbmQ6MSxncmlkUm93U3BhbjoxLGdyaWRSb3dTdGFydDoxLGdyaWRDb2x1bW46MSxncmlkQ29sdW1uRW5kOjEsZ3JpZENvbHVtblNwYW46MSxncmlkQ29sdW1uU3RhcnQ6MSxtc0dyaWRSb3c6MSxtc0dyaWRSb3dTcGFuOjEsbXNHcmlkQ29sdW1uOjEsbXNHcmlkQ29sdW1uU3BhbjoxLGZvbnRXZWlnaHQ6MSxsaW5lSGVpZ2h0OjEsb3BhY2l0eToxLG9yZGVyOjEsb3JwaGFuczoxLHRhYlNpemU6MSx3aWRvd3M6MSx6SW5kZXg6MSx6b29tOjEsV2Via2l0TGluZUNsYW1wOjEsZmlsbE9wYWNpdHk6MSxmbG9vZE9wYWNpdHk6MSxzdG9wT3BhY2l0eToxLHN0cm9rZURhc2hhcnJheToxLHN0cm9rZURhc2hvZmZzZXQ6MSxzdHJva2VNaXRlcmxpbWl0OjEsc3Ryb2tlT3BhY2l0eToxLHN0cm9rZVdpZHRoOjF9O3ZhciBzPW4oMTg1KSx1PU51bWJlci5pc05hTnx8ZnVuY3Rpb24oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJmUhPWV9O2Z1bmN0aW9uIGQoZSx0KXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKHI9ZVtuXSxvPXRbbl0sIShyPT09b3x8dShyKSYmdShvKSkpcmV0dXJuITE7dmFyIHIsbztyZXR1cm4hMH1jb25zdCBmPWZ1bmN0aW9uKGUsdCl7dmFyIG47dm9pZCAwPT09dCYmKHQ9ZCk7dmFyIHIsbz1bXSxhPSExO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgaT1bXSxsPTA7bDxhcmd1bWVudHMubGVuZ3RoO2wrKylpW2xdPWFyZ3VtZW50c1tsXTtyZXR1cm4gYSYmbj09PXRoaXMmJnQoaSxvKXx8KHI9ZS5hcHBseSh0aGlzLGkpLGE9ITAsbj10aGlzLG89aSkscn19O3ZhciBwPS9eKChjaGlsZHJlbnxkYW5nZXJvdXNseVNldElubmVySFRNTHxrZXl8cmVmfGF1dG9Gb2N1c3xkZWZhdWx0VmFsdWV8ZGVmYXVsdENoZWNrZWR8aW5uZXJIVE1MfHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ3xzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmd8dmFsdWVMaW5rfGFjY2VwdHxhY2NlcHRDaGFyc2V0fGFjY2Vzc0tleXxhY3Rpb258YWxsb3d8YWxsb3dVc2VyTWVkaWF8YWxsb3dQYXltZW50UmVxdWVzdHxhbGxvd0Z1bGxTY3JlZW58YWxsb3dUcmFuc3BhcmVuY3l8YWx0fGFzeW5jfGF1dG9Db21wbGV0ZXxhdXRvUGxheXxjYXB0dXJlfGNlbGxQYWRkaW5nfGNlbGxTcGFjaW5nfGNoYWxsZW5nZXxjaGFyU2V0fGNoZWNrZWR8Y2l0ZXxjbGFzc0lEfGNsYXNzTmFtZXxjb2xzfGNvbFNwYW58Y29udGVudHxjb250ZW50RWRpdGFibGV8Y29udGV4dE1lbnV8Y29udHJvbHN8Y29udHJvbHNMaXN0fGNvb3Jkc3xjcm9zc09yaWdpbnxkYXRhfGRhdGVUaW1lfGRlY29kaW5nfGRlZmF1bHR8ZGVmZXJ8ZGlyfGRpc2FibGVkfGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlfGRvd25sb2FkfGRyYWdnYWJsZXxlbmNUeXBlfGZvcm18Zm9ybUFjdGlvbnxmb3JtRW5jVHlwZXxmb3JtTWV0aG9kfGZvcm1Ob1ZhbGlkYXRlfGZvcm1UYXJnZXR8ZnJhbWVCb3JkZXJ8aGVhZGVyc3xoZWlnaHR8aGlkZGVufGhpZ2h8aHJlZnxocmVmTGFuZ3xodG1sRm9yfGh0dHBFcXVpdnxpZHxpbnB1dE1vZGV8aW50ZWdyaXR5fGlzfGtleVBhcmFtc3xrZXlUeXBlfGtpbmR8bGFiZWx8bGFuZ3xsaXN0fGxvYWRpbmd8bG9vcHxsb3d8bWFyZ2luSGVpZ2h0fG1hcmdpbldpZHRofG1heHxtYXhMZW5ndGh8bWVkaWF8bWVkaWFHcm91cHxtZXRob2R8bWlufG1pbkxlbmd0aHxtdWx0aXBsZXxtdXRlZHxuYW1lfG5vbmNlfG5vVmFsaWRhdGV8b3BlbnxvcHRpbXVtfHBhdHRlcm58cGxhY2Vob2xkZXJ8cGxheXNJbmxpbmV8cG9zdGVyfHByZWxvYWR8cHJvZmlsZXxyYWRpb0dyb3VwfHJlYWRPbmx5fHJlZmVycmVyUG9saWN5fHJlbHxyZXF1aXJlZHxyZXZlcnNlZHxyb2xlfHJvd3N8cm93U3BhbnxzYW5kYm94fHNjb3BlfHNjb3BlZHxzY3JvbGxpbmd8c2VhbWxlc3N8c2VsZWN0ZWR8c2hhcGV8c2l6ZXxzaXplc3xzbG90fHNwYW58c3BlbGxDaGVja3xzcmN8c3JjRG9jfHNyY0xhbmd8c3JjU2V0fHN0YXJ0fHN0ZXB8c3R5bGV8c3VtbWFyeXx0YWJJbmRleHx0YXJnZXR8dGl0bGV8dHlwZXx1c2VNYXB8dmFsdWV8d2lkdGh8d21vZGV8d3JhcHxhYm91dHxkYXRhdHlwZXxpbmxpc3R8cHJlZml4fHByb3BlcnR5fHJlc291cmNlfHR5cGVvZnx2b2NhYnxhdXRvQ2FwaXRhbGl6ZXxhdXRvQ29ycmVjdHxhdXRvU2F2ZXxjb2xvcnxpbmVydHxpdGVtUHJvcHxpdGVtU2NvcGV8aXRlbVR5cGV8aXRlbUlEfGl0ZW1SZWZ8b258cmVzdWx0c3xzZWN1cml0eXx1bnNlbGVjdGFibGV8YWNjZW50SGVpZ2h0fGFjY3VtdWxhdGV8YWRkaXRpdmV8YWxpZ25tZW50QmFzZWxpbmV8YWxsb3dSZW9yZGVyfGFscGhhYmV0aWN8YW1wbGl0dWRlfGFyYWJpY0Zvcm18YXNjZW50fGF0dHJpYnV0ZU5hbWV8YXR0cmlidXRlVHlwZXxhdXRvUmV2ZXJzZXxhemltdXRofGJhc2VGcmVxdWVuY3l8YmFzZWxpbmVTaGlmdHxiYXNlUHJvZmlsZXxiYm94fGJlZ2lufGJpYXN8Ynl8Y2FsY01vZGV8Y2FwSGVpZ2h0fGNsaXB8Y2xpcFBhdGhVbml0c3xjbGlwUGF0aHxjbGlwUnVsZXxjb2xvckludGVycG9sYXRpb258Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyc3xjb2xvclByb2ZpbGV8Y29sb3JSZW5kZXJpbmd8Y29udGVudFNjcmlwdFR5cGV8Y29udGVudFN0eWxlVHlwZXxjdXJzb3J8Y3h8Y3l8ZHxkZWNlbGVyYXRlfGRlc2NlbnR8ZGlmZnVzZUNvbnN0YW50fGRpcmVjdGlvbnxkaXNwbGF5fGRpdmlzb3J8ZG9taW5hbnRCYXNlbGluZXxkdXJ8ZHh8ZHl8ZWRnZU1vZGV8ZWxldmF0aW9ufGVuYWJsZUJhY2tncm91bmR8ZW5kfGV4cG9uZW50fGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWR8ZmlsbHxmaWxsT3BhY2l0eXxmaWxsUnVsZXxmaWx0ZXJ8ZmlsdGVyUmVzfGZpbHRlclVuaXRzfGZsb29kQ29sb3J8Zmxvb2RPcGFjaXR5fGZvY3VzYWJsZXxmb250RmFtaWx5fGZvbnRTaXplfGZvbnRTaXplQWRqdXN0fGZvbnRTdHJldGNofGZvbnRTdHlsZXxmb250VmFyaWFudHxmb250V2VpZ2h0fGZvcm1hdHxmcm9tfGZyfGZ4fGZ5fGcxfGcyfGdseXBoTmFtZXxnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbHxnbHlwaE9yaWVudGF0aW9uVmVydGljYWx8Z2x5cGhSZWZ8Z3JhZGllbnRUcmFuc2Zvcm18Z3JhZGllbnRVbml0c3xoYW5naW5nfGhvcml6QWR2WHxob3Jpek9yaWdpblh8aWRlb2dyYXBoaWN8aW1hZ2VSZW5kZXJpbmd8aW58aW4yfGludGVyY2VwdHxrfGsxfGsyfGszfGs0fGtlcm5lbE1hdHJpeHxrZXJuZWxVbml0TGVuZ3RofGtlcm5pbmd8a2V5UG9pbnRzfGtleVNwbGluZXN8a2V5VGltZXN8bGVuZ3RoQWRqdXN0fGxldHRlclNwYWNpbmd8bGlnaHRpbmdDb2xvcnxsaW1pdGluZ0NvbmVBbmdsZXxsb2NhbHxtYXJrZXJFbmR8bWFya2VyTWlkfG1hcmtlclN0YXJ0fG1hcmtlckhlaWdodHxtYXJrZXJVbml0c3xtYXJrZXJXaWR0aHxtYXNrfG1hc2tDb250ZW50VW5pdHN8bWFza1VuaXRzfG1hdGhlbWF0aWNhbHxtb2RlfG51bU9jdGF2ZXN8b2Zmc2V0fG9wYWNpdHl8b3BlcmF0b3J8b3JkZXJ8b3JpZW50fG9yaWVudGF0aW9ufG9yaWdpbnxvdmVyZmxvd3xvdmVybGluZVBvc2l0aW9ufG92ZXJsaW5lVGhpY2tuZXNzfHBhbm9zZTF8cGFpbnRPcmRlcnxwYXRoTGVuZ3RofHBhdHRlcm5Db250ZW50VW5pdHN8cGF0dGVyblRyYW5zZm9ybXxwYXR0ZXJuVW5pdHN8cG9pbnRlckV2ZW50c3xwb2ludHN8cG9pbnRzQXRYfHBvaW50c0F0WXxwb2ludHNBdFp8cHJlc2VydmVBbHBoYXxwcmVzZXJ2ZUFzcGVjdFJhdGlvfHByaW1pdGl2ZVVuaXRzfHJ8cmFkaXVzfHJlZlh8cmVmWXxyZW5kZXJpbmdJbnRlbnR8cmVwZWF0Q291bnR8cmVwZWF0RHVyfHJlcXVpcmVkRXh0ZW5zaW9uc3xyZXF1aXJlZEZlYXR1cmVzfHJlc3RhcnR8cmVzdWx0fHJvdGF0ZXxyeHxyeXxzY2FsZXxzZWVkfHNoYXBlUmVuZGVyaW5nfHNsb3BlfHNwYWNpbmd8c3BlY3VsYXJDb25zdGFudHxzcGVjdWxhckV4cG9uZW50fHNwZWVkfHNwcmVhZE1ldGhvZHxzdGFydE9mZnNldHxzdGREZXZpYXRpb258c3RlbWh8c3RlbXZ8c3RpdGNoVGlsZXN8c3RvcENvbG9yfHN0b3BPcGFjaXR5fHN0cmlrZXRocm91Z2hQb3NpdGlvbnxzdHJpa2V0aHJvdWdoVGhpY2tuZXNzfHN0cmluZ3xzdHJva2V8c3Ryb2tlRGFzaGFycmF5fHN0cm9rZURhc2hvZmZzZXR8c3Ryb2tlTGluZWNhcHxzdHJva2VMaW5lam9pbnxzdHJva2VNaXRlcmxpbWl0fHN0cm9rZU9wYWNpdHl8c3Ryb2tlV2lkdGh8c3VyZmFjZVNjYWxlfHN5c3RlbUxhbmd1YWdlfHRhYmxlVmFsdWVzfHRhcmdldFh8dGFyZ2V0WXx0ZXh0QW5jaG9yfHRleHREZWNvcmF0aW9ufHRleHRSZW5kZXJpbmd8dGV4dExlbmd0aHx0b3x0cmFuc2Zvcm18dTF8dTJ8dW5kZXJsaW5lUG9zaXRpb258dW5kZXJsaW5lVGhpY2tuZXNzfHVuaWNvZGV8dW5pY29kZUJpZGl8dW5pY29kZVJhbmdlfHVuaXRzUGVyRW18dkFscGhhYmV0aWN8dkhhbmdpbmd8dklkZW9ncmFwaGljfHZNYXRoZW1hdGljYWx8dmFsdWVzfHZlY3RvckVmZmVjdHx2ZXJzaW9ufHZlcnRBZHZZfHZlcnRPcmlnaW5YfHZlcnRPcmlnaW5ZfHZpZXdCb3h8dmlld1RhcmdldHx2aXNpYmlsaXR5fHdpZHRoc3x3b3JkU3BhY2luZ3x3cml0aW5nTW9kZXx4fHhIZWlnaHR8eDF8eDJ8eENoYW5uZWxTZWxlY3Rvcnx4bGlua0FjdHVhdGV8eGxpbmtBcmNyb2xlfHhsaW5rSHJlZnx4bGlua1JvbGV8eGxpbmtTaG93fHhsaW5rVGl0bGV8eGxpbmtUeXBlfHhtbEJhc2V8eG1sbnN8eG1sbnNYbGlua3x4bWxMYW5nfHhtbFNwYWNlfHl8eTF8eTJ8eUNoYW5uZWxTZWxlY3Rvcnx6fHpvb21BbmRQYW58Zm9yfGNsYXNzfGF1dG9mb2N1cyl8KChbRGRdW0FhXVtUdF1bQWFdfFtBYV1bUnJdW0lpXVtBYV18eCktLiopKSQvO2NvbnN0IGg9ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB2b2lkIDA9PT10W25dJiYodFtuXT1lKG4pKSx0W25dfX0oKGZ1bmN0aW9uKGUpe3JldHVybiBwLnRlc3QoZSl8fDExMT09PWUuY2hhckNvZGVBdCgwKSYmMTEwPT09ZS5jaGFyQ29kZUF0KDEpJiZlLmNoYXJDb2RlQXQoMik8OTF9KSk7ZnVuY3Rpb24gQyhlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpfWZ1bmN0aW9uIHYoZSl7cmV0dXJuXCJVbmRlZmluZWRcIj09PUMoZSl9ZnVuY3Rpb24gZyhlKXtyZXR1cm5cIk51bGxcIj09PUMoZSl9ZnVuY3Rpb24gbShlKXtyZXR1cm5cIk9iamVjdFwiPT09QyhlKSYmKGUuY29uc3RydWN0b3I9PT1PYmplY3QmJk9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PU9iamVjdC5wcm90b3R5cGUpfWZ1bmN0aW9uIHcoZSl7cmV0dXJuXCJBcnJheVwiPT09QyhlKX1mdW5jdGlvbiB5KGUpe3JldHVyblwiU3ltYm9sXCI9PT1DKGUpfXZhciBiLHgsTyxMLE07Yj1nLHg9djtmdW5jdGlvbiBTKCl7Zm9yKHZhciBlPTAsdD0wLG49YXJndW1lbnRzLmxlbmd0aDt0PG47dCsrKWUrPWFyZ3VtZW50c1t0XS5sZW5ndGg7dmFyIHI9QXJyYXkoZSksbz0wO2Zvcih0PTA7dDxuO3QrKylmb3IodmFyIGE9YXJndW1lbnRzW3RdLGk9MCxsPWEubGVuZ3RoO2k8bDtpKyssbysrKXJbb109YVtpXTtyZXR1cm4gcn1mdW5jdGlvbiBfKGUsdCxuLHIpe3ZhciBvPXIucHJvcGVydHlJc0VudW1lcmFibGUodCk/XCJlbnVtZXJhYmxlXCI6XCJub25lbnVtZXJhYmxlXCI7XCJlbnVtZXJhYmxlXCI9PT1vJiYoZVt0XT1uKSxcIm5vbmVudW1lcmFibGVcIj09PW8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBqKGUsdCxuKXtpZighbSh0KSlyZXR1cm4gbiYmdyhuKSYmbi5mb3JFYWNoKChmdW5jdGlvbihuKXt0PW4oZSx0KX0pKSx0O3ZhciByPXt9O20oZSkmJihyPVMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSksT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSkucmVkdWNlKChmdW5jdGlvbihuLHIpe3ZhciBvPWVbcl07cmV0dXJuKCF5KHIpJiYhT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuaW5jbHVkZXMocil8fHkocikmJiFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpLmluY2x1ZGVzKHIpKSYmXyhuLHIsbyxlKSxufSkse30pKTtyZXR1cm4gUyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KSxPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpKS5yZWR1Y2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGE9dFtvXSxpPW0oZSk/ZVtvXTp2b2lkIDA7cmV0dXJuIG4mJncobikmJm4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7YT1lKGksYSl9KSksdm9pZCAwIT09aSYmbShhKSYmKGE9aihpLGEsbikpLF8ocixvLGEsdCkscn0pLHIpfWNvbnN0IEU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07dmFyIHI9bnVsbCxvPWU7cmV0dXJuIG0oZSkmJmUuZXh0ZW5zaW9ucyYmMT09PU9iamVjdC5rZXlzKGUpLmxlbmd0aCYmKG89e30scj1lLmV4dGVuc2lvbnMpLHQucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBqKGUsdCxyKX0pLG8pfTt2YXIgUD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bZVswXV0scj0wLG89dC5sZW5ndGg7cjxvO3IrPTEpbi5wdXNoKHRbcl0sZVtyKzFdKTtyZXR1cm4gbn0saz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxIPWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0sVj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLFI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sST1mdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSxaPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiF0fHxcIm9iamVjdFwiIT10eXBlb2YgdCYmXCJmdW5jdGlvblwiIT10eXBlb2YgdD9lOnR9LEE9ZnVuY3Rpb24oZSl7cmV0dXJuXCJvYmplY3RcIj09PSh2b2lkIDA9PT1lP1widW5kZWZpbmVkXCI6ayhlKSkmJmUuY29uc3RydWN0b3I9PT1PYmplY3R9LEQ9T2JqZWN0LmZyZWV6ZShbXSksQj1PYmplY3QuZnJlZXplKHt9KTtmdW5jdGlvbiBUKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9ZnVuY3Rpb24gJChlKXtyZXR1cm4gZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHxcIkNvbXBvbmVudFwifWZ1bmN0aW9uIEYoZSl7cmV0dXJuIGUmJlwic3RyaW5nXCI9PXR5cGVvZiBlLnN0eWxlZENvbXBvbmVudElkfXZhciBXPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBwcm9jZXNzJiYocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0FUVFJ8fHByb2Nlc3MuZW52LlNDX0FUVFIpfHxcImRhdGEtc3R5bGVkXCIsTj1cImRhdGEtc3R5bGVkLXZlcnNpb25cIix6PVwiZGF0YS1zdHlsZWQtc3RyZWFtZWRcIixVPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJlwiSFRNTEVsZW1lbnRcImluIHdpbmRvdyxHPVwiYm9vbGVhblwiPT10eXBlb2YgU0NfRElTQUJMRV9TUEVFRFkmJlNDX0RJU0FCTEVfU1BFRURZfHxcInVuZGVmaW5lZFwiIT10eXBlb2YgcHJvY2VzcyYmKHByb2Nlc3MuZW52LlJFQUNUX0FQUF9TQ19ESVNBQkxFX1NQRUVEWXx8cHJvY2Vzcy5lbnYuU0NfRElTQUJMRV9TUEVFRFkpfHwhMSxxPXt9O3ZhciBZPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7SCh0aGlzLHQpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89QXJyYXkocj4xP3ItMTowKSxhPTE7YTxyO2ErKylvW2EtMV09YXJndW1lbnRzW2FdO3ZhciBpPVoodGhpcyxlLmNhbGwodGhpcyxcIkFuIGVycm9yIG9jY3VycmVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3N0eWxlZC1jb21wb25lbnRzL3N0eWxlZC1jb21wb25lbnRzL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL3N0eWxlZC1jb21wb25lbnRzL3NyYy91dGlscy9lcnJvcnMubWQjXCIrbitcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIisoby5sZW5ndGg+MD9cIiBBZGRpdGlvbmFsIGFyZ3VtZW50czogXCIrby5qb2luKFwiLCBcIik6XCJcIikpKTtyZXR1cm4gWihpKX1yZXR1cm4gSSh0LGUpLHR9KEVycm9yKSxLPS9eW15cXFNcXG5dKj9cXC9cXCogc2MtY29tcG9uZW50LWlkOlxccyooXFxTKylcXHMrXFwqXFwvL2dtLFg9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIisoZXx8XCJcIiksbj1bXTtyZXR1cm4gdC5yZXBsYWNlKEssKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbi5wdXNoKHtjb21wb25lbnRJZDp0LG1hdGNoSW5kZXg6cn0pLGV9KSksbi5tYXAoKGZ1bmN0aW9uKGUscil7dmFyIG89ZS5jb21wb25lbnRJZCxhPWUubWF0Y2hJbmRleCxpPW5bcisxXTtyZXR1cm57Y29tcG9uZW50SWQ6byxjc3NGcm9tRE9NOmk/dC5zbGljZShhLGkubWF0Y2hJbmRleCk6dC5zbGljZShhKX19KSl9LFE9L15cXHMqXFwvXFwvLiokL2dtLEo9bmV3KG8oKSkoe2dsb2JhbDohMSxjYXNjYWRlOiEwLGtleWZyYW1lOiExLHByZWZpeDohMSxjb21wcmVzczohMSxzZW1pY29sb246ITB9KSxlZT1uZXcobygpKSh7Z2xvYmFsOiExLGNhc2NhZGU6ITAsa2V5ZnJhbWU6ITEscHJlZml4OiEwLGNvbXByZXNzOiExLHNlbWljb2xvbjohMX0pLHRlPVtdLG5lPWZ1bmN0aW9uKGUpe2lmKC0yPT09ZSl7dmFyIHQ9dGU7cmV0dXJuIHRlPVtdLHR9fSxyZT1pKCkoKGZ1bmN0aW9uKGUpe3RlLnB1c2goZSl9KSksb2U9dm9pZCAwLGFlPXZvaWQgMCxpZT12b2lkIDAsbGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PjAmJi0xIT09bi5zbGljZSgwLHQpLmluZGV4T2YoYWUpJiZuLnNsaWNlKHQtYWUubGVuZ3RoLHQpIT09YWU/XCIuXCIrb2U6ZX07ZWUudXNlKFtmdW5jdGlvbihlLHQsbil7Mj09PWUmJm4ubGVuZ3RoJiZuWzBdLmxhc3RJbmRleE9mKGFlKT4wJiYoblswXT1uWzBdLnJlcGxhY2UoaWUsbGUpKX0scmUsbmVdKSxKLnVzZShbcmUsbmVdKTt2YXIgY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIEooXCJcIixlKX07ZnVuY3Rpb24gc2UoZSx0LG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpcIiZcIixvPWUuam9pbihcIlwiKS5yZXBsYWNlKFEsXCJcIiksYT10JiZuP24rXCIgXCIrdCtcIiB7IFwiK28rXCIgfVwiOm87cmV0dXJuIG9lPXIsYWU9dCxpZT1uZXcgUmVnRXhwKFwiXFxcXFwiK2FlK1wiXFxcXGJcIixcImdcIiksZWUobnx8IXQ/XCJcIjp0LGEpfXZhciB1ZT1mdW5jdGlvbigpe3JldHVybiBuLm5jfSxkZT1mdW5jdGlvbihlLHQsbil7biYmKChlW3RdfHwoZVt0XT1PYmplY3QuY3JlYXRlKG51bGwpKSlbbl09ITApfSxmZT1mdW5jdGlvbihlLHQpe2VbdF09T2JqZWN0LmNyZWF0ZShudWxsKX0scGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIHZvaWQgMCE9PWVbdF0mJmVbdF1bbl19fSxoZT1mdW5jdGlvbihlKXt2YXIgdD1cIlwiO2Zvcih2YXIgbiBpbiBlKXQrPU9iamVjdC5rZXlzKGVbbl0pLmpvaW4oXCIgXCIpK1wiIFwiO3JldHVybiB0LnRyaW0oKX0sQ2U9ZnVuY3Rpb24oZSl7aWYoZS5zaGVldClyZXR1cm4gZS5zaGVldDtmb3IodmFyIHQ9ZS5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aCxuPTA7bjx0O24rPTEpe3ZhciByPWUub3duZXJEb2N1bWVudC5zdHlsZVNoZWV0c1tuXTtpZihyLm93bmVyTm9kZT09PWUpcmV0dXJuIHJ9dGhyb3cgbmV3IFkoMTApfSx2ZT1mdW5jdGlvbihlLHQsbil7aWYoIXQpcmV0dXJuITE7dmFyIHI9ZS5jc3NSdWxlcy5sZW5ndGg7dHJ5e2UuaW5zZXJ0UnVsZSh0LG48PXI/bjpyKX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hMH0sZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuXCJcXG4vKiBzYy1jb21wb25lbnQtaWQ6IFwiK2UrXCIgKi9cXG5cIn0sbWU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MCxyPTA7cjw9dDtyKz0xKW4rPWVbcl07cmV0dXJuIG59LHdlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPXVlKCk7cmV0dXJuXCI8c3R5bGUgXCIrW3ImJidub25jZT1cIicrcisnXCInLFcrJz1cIicraGUodCkrJ1wiJyxOKyc9XCI0LjQuMVwiJyxuXS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIikrXCI+XCIrZSgpK1wiPC9zdHlsZT5cIn19LHllPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG4scj0oKG49e30pW1ddPWhlKHQpLG5bTl09XCI0LjQuMVwiLG4pLG89dWUoKTtyZXR1cm4gbyYmKHIubm9uY2U9byksbC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIixSKHt9LHIse2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6ZSgpfX0pKX19LGJlPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhlKX19LHhlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY3JlYXRlVGV4dE5vZGUoZ2UodCkpfSxPZT1mdW5jdGlvbiBlKHQsbil7dmFyIHI9dm9pZCAwPT09dD9PYmplY3QuY3JlYXRlKG51bGwpOnQsbz12b2lkIDA9PT1uP09iamVjdC5jcmVhdGUobnVsbCk6bixhPWZ1bmN0aW9uKGUpe3ZhciB0PW9bZV07cmV0dXJuIHZvaWQgMCE9PXQ/dDpvW2VdPVtcIlwiXX0saT1mdW5jdGlvbigpe3ZhciBlPVwiXCI7Zm9yKHZhciB0IGluIG8pe3ZhciBuPW9bdF1bMF07biYmKGUrPWdlKHQpK24pfXJldHVybiBlfSxsPXtjbG9uZTpmdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKGUpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKHZhciBuIGluIGUpdFtuXT1SKHt9LGVbbl0pO3JldHVybiB0fShyKSxuPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKHZhciBhIGluIG8pblthXT1bb1thXVswXV07cmV0dXJuIGUodCxuKX0sY3NzOmksZ2V0SWRzOmJlKG8pLGhhc05hbWVGb3JJZDpwZShyKSxpbnNlcnRNYXJrZXI6YSxpbnNlcnRSdWxlczpmdW5jdGlvbihlLHQsbil7YShlKVswXSs9dC5qb2luKFwiIFwiKSxkZShyLGUsbil9LHJlbW92ZVJ1bGVzOmZ1bmN0aW9uKGUpe3ZhciB0PW9bZV07dm9pZCAwIT09dCYmKHRbMF09XCJcIixmZShyLGUpKX0sc2VhbGVkOiExLHN0eWxlVGFnOm51bGwsdG9FbGVtZW50OnllKGksciksdG9IVE1MOndlKGkscil9O3JldHVybiBsfSxMZT1mdW5jdGlvbihlLHQsbixyLG8pe2lmKFUmJiFuKXt2YXIgYT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZG9jdW1lbnQ7ZT9yPWUub3duZXJEb2N1bWVudDp0JiYocj10Lm93bmVyRG9jdW1lbnQpO3ZhciBvPXIuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO28uc2V0QXR0cmlidXRlKFcsXCJcIiksby5zZXRBdHRyaWJ1dGUoTixcIjQuNC4xXCIpO3ZhciBhPXVlKCk7aWYoYSYmby5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLGEpLG8uYXBwZW5kQ2hpbGQoci5jcmVhdGVUZXh0Tm9kZShcIlwiKSksZSYmIXQpZS5hcHBlbmRDaGlsZChvKTtlbHNle2lmKCF0fHwhZXx8IXQucGFyZW50Tm9kZSl0aHJvdyBuZXcgWSg2KTt0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG8sbj90OnQubmV4dFNpYmxpbmcpfXJldHVybiBvfShlLHQscik7cmV0dXJuIEc/ZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9T2JqZWN0LmNyZWF0ZShudWxsKSxvPXZvaWQgMCE9PXQsYT0hMSxpPWZ1bmN0aW9uKHQpe3ZhciBvPXJbdF07cmV0dXJuIHZvaWQgMCE9PW8/bzooclt0XT14ZShlLm93bmVyRG9jdW1lbnQsdCksZS5hcHBlbmRDaGlsZChyW3RdKSxuW3RdPU9iamVjdC5jcmVhdGUobnVsbCksclt0XSl9LGw9ZnVuY3Rpb24oKXt2YXIgZT1cIlwiO2Zvcih2YXIgdCBpbiByKWUrPXJbdF0uZGF0YTtyZXR1cm4gZX07cmV0dXJue2Nsb25lOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IFkoNSl9LGNzczpsLGdldElkczpiZShyKSxoYXNOYW1lRm9ySWQ6cGUobiksaW5zZXJ0TWFya2VyOmksaW5zZXJ0UnVsZXM6ZnVuY3Rpb24oZSxyLGwpe2Zvcih2YXIgYz1pKGUpLHM9W10sdT1yLmxlbmd0aCxkPTA7ZDx1O2QrPTEpe3ZhciBmPXJbZF0scD1vO2lmKHAmJi0xIT09Zi5pbmRleE9mKFwiQGltcG9ydFwiKSlzLnB1c2goZik7ZWxzZXtwPSExO3ZhciBoPWQ9PT11LTE/XCJcIjpcIiBcIjtjLmFwcGVuZERhdGEoXCJcIitmK2gpfX1kZShuLGUsbCksbyYmcy5sZW5ndGg+MCYmKGE9ITAsdCgpLmluc2VydFJ1bGVzKGUrXCItaW1wb3J0XCIscykpfSxyZW1vdmVSdWxlczpmdW5jdGlvbihpKXt2YXIgbD1yW2ldO2lmKHZvaWQgMCE9PWwpe3ZhciBjPXhlKGUub3duZXJEb2N1bWVudCxpKTtlLnJlcGxhY2VDaGlsZChjLGwpLHJbaV09YyxmZShuLGkpLG8mJmEmJnQoKS5yZW1vdmVSdWxlcyhpK1wiLWltcG9ydFwiKX19LHNlYWxlZDohMSxzdHlsZVRhZzplLHRvRWxlbWVudDp5ZShsLG4pLHRvSFRNTDp3ZShsLG4pfX0oYSxvKTpmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj1PYmplY3QuY3JlYXRlKG51bGwpLG89W10sYT12b2lkIDAhPT10LGk9ITEsbD1mdW5jdGlvbihlKXt2YXIgdD1yW2VdO3JldHVybiB2b2lkIDAhPT10P3Q6KHJbZV09by5sZW5ndGgsby5wdXNoKDApLGZlKG4sZSkscltlXSl9LGM9ZnVuY3Rpb24oKXt2YXIgdD1DZShlKS5jc3NSdWxlcyxuPVwiXCI7Zm9yKHZhciBhIGluIHIpe24rPWdlKGEpO2Zvcih2YXIgaT1yW2FdLGw9bWUobyxpKSxjPWwtb1tpXTtjPGw7Yys9MSl7dmFyIHM9dFtjXTt2b2lkIDAhPT1zJiYobis9cy5jc3NUZXh0KX19cmV0dXJuIG59O3JldHVybntjbG9uZTpmdW5jdGlvbigpe3Rocm93IG5ldyBZKDUpfSxjc3M6YyxnZXRJZHM6YmUociksaGFzTmFtZUZvcklkOnBlKG4pLGluc2VydE1hcmtlcjpsLGluc2VydFJ1bGVzOmZ1bmN0aW9uKHIsYyxzKXtmb3IodmFyIHU9bChyKSxkPUNlKGUpLGY9bWUobyx1KSxwPTAsaD1bXSxDPWMubGVuZ3RoLHY9MDt2PEM7dis9MSl7dmFyIGc9Y1t2XSxtPWE7bSYmLTEhPT1nLmluZGV4T2YoXCJAaW1wb3J0XCIpP2gucHVzaChnKTp2ZShkLGcsZitwKSYmKG09ITEscCs9MSl9YSYmaC5sZW5ndGg+MCYmKGk9ITAsdCgpLmluc2VydFJ1bGVzKHIrXCItaW1wb3J0XCIsaCkpLG9bdV0rPXAsZGUobixyLHMpfSxyZW1vdmVSdWxlczpmdW5jdGlvbihsKXt2YXIgYz1yW2xdO2lmKHZvaWQgMCE9PWMmJiExIT09ZS5pc0Nvbm5lY3RlZCl7dmFyIHM9b1tjXTshZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj10LW4sbz10O28+cjtvLT0xKWUuZGVsZXRlUnVsZShvKX0oQ2UoZSksbWUobyxjKS0xLHMpLG9bY109MCxmZShuLGwpLGEmJmkmJnQoKS5yZW1vdmVSdWxlcyhsK1wiLWltcG9ydFwiKX19LHNlYWxlZDohMSxzdHlsZVRhZzplLHRvRWxlbWVudDp5ZShjLG4pLHRvSFRNTDp3ZShjLG4pfX0oYSxvKX1yZXR1cm4gT2UoKX0sTWU9L1xccysvLFNlPXZvaWQgMDtTZT1VP0c/NDA6MWUzOi0xO3ZhciBfZT0wLGplPXZvaWQgMCxFZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt2YXIgdD10aGlzLG49YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlU/ZG9jdW1lbnQuaGVhZDpudWxsLHI9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtIKHRoaXMsZSksdGhpcy5nZXRJbXBvcnRSdWxlVGFnPWZ1bmN0aW9uKCl7dmFyIGU9dC5pbXBvcnRSdWxlVGFnO2lmKHZvaWQgMCE9PWUpcmV0dXJuIGU7dmFyIG49dC50YWdzWzBdO3JldHVybiB0LmltcG9ydFJ1bGVUYWc9TGUodC50YXJnZXQsbj9uLnN0eWxlVGFnOm51bGwsdC5mb3JjZVNlcnZlciwhMCl9LF9lKz0xLHRoaXMuaWQ9X2UsdGhpcy5mb3JjZVNlcnZlcj1yLHRoaXMudGFyZ2V0PXI/bnVsbDpuLHRoaXMudGFnTWFwPXt9LHRoaXMuZGVmZXJyZWQ9e30sdGhpcy5yZWh5ZHJhdGVkTmFtZXM9e30sdGhpcy5pZ25vcmVSZWh5ZHJhdGVkTmFtZXM9e30sdGhpcy50YWdzPVtdLHRoaXMuY2FwYWNpdHk9MSx0aGlzLmNsb25lcz1bXX1yZXR1cm4gZS5wcm90b3R5cGUucmVoeWRyYXRlPWZ1bmN0aW9uKCl7aWYoIVV8fHRoaXMuZm9yY2VTZXJ2ZXIpcmV0dXJuIHRoaXM7dmFyIGU9W10sdD1bXSxuPSExLHI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInN0eWxlW1wiK1crXCJdW1wiK04rJz1cIjQuNC4xXCJdJyksbz1yLmxlbmd0aDtpZighbylyZXR1cm4gdGhpcztmb3IodmFyIGE9MDthPG87YSs9MSl7dmFyIGk9clthXTtufHwobj0hIWkuZ2V0QXR0cmlidXRlKHopKTtmb3IodmFyIGwsYz0oaS5nZXRBdHRyaWJ1dGUoVyl8fFwiXCIpLnRyaW0oKS5zcGxpdChNZSkscz1jLmxlbmd0aCx1PTA7dTxzO3UrPTEpbD1jW3VdLHRoaXMucmVoeWRyYXRlZE5hbWVzW2xdPSEwO3QucHVzaC5hcHBseSh0LFgoaS50ZXh0Q29udGVudCkpLGUucHVzaChpKX12YXIgZD10Lmxlbmd0aDtpZighZClyZXR1cm4gdGhpczt2YXIgZj10aGlzLm1ha2VUYWcobnVsbCk7IWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxvPW4ubGVuZ3RoO3I8bztyKz0xKXt2YXIgYT1uW3JdLGk9YS5jb21wb25lbnRJZCxsPWEuY3NzRnJvbURPTSxjPWNlKGwpO2UuaW5zZXJ0UnVsZXMoaSxjKX1mb3IodmFyIHM9MCx1PXQubGVuZ3RoO3M8dTtzKz0xKXt2YXIgZD10W3NdO2QucGFyZW50Tm9kZSYmZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGQpfX0oZixlLHQpLHRoaXMuY2FwYWNpdHk9TWF0aC5tYXgoMSxTZS1kKSx0aGlzLnRhZ3MucHVzaChmKTtmb3IodmFyIHA9MDtwPGQ7cCs9MSl0aGlzLnRhZ01hcFt0W3BdLmNvbXBvbmVudElkXT1mO3JldHVybiB0aGlzfSxlLnJlc2V0PWZ1bmN0aW9uKCl7amU9bmV3IGUodm9pZCAwLGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0pLnJlaHlkcmF0ZSgpfSxlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBlKHRoaXMudGFyZ2V0LHRoaXMuZm9yY2VTZXJ2ZXIpO3JldHVybiB0aGlzLmNsb25lcy5wdXNoKHQpLHQudGFncz10aGlzLnRhZ3MubWFwKChmdW5jdGlvbihlKXtmb3IodmFyIG49ZS5nZXRJZHMoKSxyPWUuY2xvbmUoKSxvPTA7bzxuLmxlbmd0aDtvKz0xKXQudGFnTWFwW25bb11dPXI7cmV0dXJuIHJ9KSksdC5yZWh5ZHJhdGVkTmFtZXM9Uih7fSx0aGlzLnJlaHlkcmF0ZWROYW1lcyksdC5kZWZlcnJlZD1SKHt9LHRoaXMuZGVmZXJyZWQpLHR9LGUucHJvdG90eXBlLnNlYWxBbGxUYWdzPWZ1bmN0aW9uKCl7dGhpcy5jYXBhY2l0eT0xLHRoaXMudGFncy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnNlYWxlZD0hMH0pKX0sZS5wcm90b3R5cGUubWFrZVRhZz1mdW5jdGlvbihlKXt2YXIgdD1lP2Uuc3R5bGVUYWc6bnVsbDtyZXR1cm4gTGUodGhpcy50YXJnZXQsdCx0aGlzLmZvcmNlU2VydmVyLCExLHRoaXMuZ2V0SW1wb3J0UnVsZVRhZyl9LGUucHJvdG90eXBlLmdldFRhZ0ZvcklkPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudGFnTWFwW2VdO2lmKHZvaWQgMCE9PXQmJiF0LnNlYWxlZClyZXR1cm4gdDt2YXIgbj10aGlzLnRhZ3NbdGhpcy50YWdzLmxlbmd0aC0xXTtyZXR1cm4gdGhpcy5jYXBhY2l0eS09MSwwPT09dGhpcy5jYXBhY2l0eSYmKHRoaXMuY2FwYWNpdHk9U2Usbj10aGlzLm1ha2VUYWcobiksdGhpcy50YWdzLnB1c2gobikpLHRoaXMudGFnTWFwW2VdPW59LGUucHJvdG90eXBlLmhhc0lkPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLnRhZ01hcFtlXX0sZS5wcm90b3R5cGUuaGFzTmFtZUZvcklkPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dGhpcy5pZ25vcmVSZWh5ZHJhdGVkTmFtZXNbZV0mJnRoaXMucmVoeWRyYXRlZE5hbWVzW3RdKXJldHVybiEwO3ZhciBuPXRoaXMudGFnTWFwW2VdO3JldHVybiB2b2lkIDAhPT1uJiZuLmhhc05hbWVGb3JJZChlLHQpfSxlLnByb3RvdHlwZS5kZWZlcnJlZEluamVjdD1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMD09PXRoaXMudGFnTWFwW2VdKXtmb3IodmFyIG49dGhpcy5jbG9uZXMscj0wO3I8bi5sZW5ndGg7cis9MSluW3JdLmRlZmVycmVkSW5qZWN0KGUsdCk7dGhpcy5nZXRUYWdGb3JJZChlKS5pbnNlcnRNYXJrZXIoZSksdGhpcy5kZWZlcnJlZFtlXT10fX0sZS5wcm90b3R5cGUuaW5qZWN0PWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9dGhpcy5jbG9uZXMsbz0wO288ci5sZW5ndGg7bys9MSlyW29dLmluamVjdChlLHQsbik7dmFyIGE9dGhpcy5nZXRUYWdGb3JJZChlKTtpZih2b2lkIDAhPT10aGlzLmRlZmVycmVkW2VdKXt2YXIgaT10aGlzLmRlZmVycmVkW2VdLmNvbmNhdCh0KTthLmluc2VydFJ1bGVzKGUsaSxuKSx0aGlzLmRlZmVycmVkW2VdPXZvaWQgMH1lbHNlIGEuaW5zZXJ0UnVsZXMoZSx0LG4pfSxlLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50YWdNYXBbZV07aWYodm9pZCAwIT09dCl7Zm9yKHZhciBuPXRoaXMuY2xvbmVzLHI9MDtyPG4ubGVuZ3RoO3IrPTEpbltyXS5yZW1vdmUoZSk7dC5yZW1vdmVSdWxlcyhlKSx0aGlzLmlnbm9yZVJlaHlkcmF0ZWROYW1lc1tlXT0hMCx0aGlzLmRlZmVycmVkW2VdPXZvaWQgMH19LGUucHJvdG90eXBlLnRvSFRNTD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRhZ3MubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50b0hUTUwoKX0pKS5qb2luKFwiXCIpfSxlLnByb3RvdHlwZS50b1JlYWN0RWxlbWVudHM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmlkO3JldHVybiB0aGlzLnRhZ3MubWFwKChmdW5jdGlvbih0LG4pe3ZhciByPVwic2MtXCIrZStcIi1cIituO3JldHVybigwLGwuY2xvbmVFbGVtZW50KSh0LnRvRWxlbWVudCgpLHtrZXk6cn0pfSkpfSxWKGUsbnVsbCxbe2tleTpcIm1hc3RlclwiLGdldDpmdW5jdGlvbigpe3JldHVybiBqZXx8KGplPShuZXcgZSkucmVoeWRyYXRlKCkpfX0se2tleTpcImluc3RhbmNlXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUubWFzdGVyfX1dKSxlfSgpLFBlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe3ZhciByPXRoaXM7SCh0aGlzLGUpLHRoaXMuaW5qZWN0PWZ1bmN0aW9uKGUpe2UuaGFzTmFtZUZvcklkKHIuaWQsci5uYW1lKXx8ZS5pbmplY3Qoci5pZCxyLnJ1bGVzLHIubmFtZSl9LHRoaXMudG9TdHJpbmc9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgWSgxMixTdHJpbmcoci5uYW1lKSl9LHRoaXMubmFtZT10LHRoaXMucnVsZXM9bix0aGlzLmlkPVwic2Mta2V5ZnJhbWVzLVwiK3R9cmV0dXJuIGUucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lfSxlfSgpLGtlPS8oW0EtWl0pL2csSGU9L15tcy0vO2Z1bmN0aW9uIFZlKGUpe3JldHVybiBlLnJlcGxhY2Uoa2UsXCItJDFcIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKEhlLFwiLW1zLVwiKX12YXIgUmU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV8fCExPT09ZXx8XCJcIj09PWV9LEllPWZ1bmN0aW9uIGUodCxuKXt2YXIgcj1bXTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obil7aWYoIVJlKHRbbl0pKXtpZihBKHRbbl0pKXJldHVybiByLnB1c2guYXBwbHkocixlKHRbbl0sbikpLHI7aWYoVCh0W25dKSlyZXR1cm4gci5wdXNoKFZlKG4pK1wiOlwiLHRbbl0sXCI7XCIpLHI7ci5wdXNoKFZlKG4pK1wiOiBcIisobz1uLChudWxsPT0oYT10W25dKXx8XCJib29sZWFuXCI9PXR5cGVvZiBhfHxcIlwiPT09YT9cIlwiOlwibnVtYmVyXCIhPXR5cGVvZiBhfHwwPT09YXx8byBpbiBjP1N0cmluZyhhKS50cmltKCk6YStcInB4XCIpK1wiO1wiKSl9dmFyIG8sYTtyZXR1cm4gcn0pKSxuP1tuK1wiIHtcIl0uY29uY2F0KHIsW1wifVwiXSk6cn07ZnVuY3Rpb24gWmUoZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgcixvPVtdLGE9MCxpPWUubGVuZ3RoO2E8aTthKz0xKW51bGwhPT0ocj1aZShlW2FdLHQsbikpJiYoQXJyYXkuaXNBcnJheShyKT9vLnB1c2guYXBwbHkobyxyKTpvLnB1c2gocikpO3JldHVybiBvfXJldHVybiBSZShlKT9udWxsOkYoZSk/XCIuXCIrZS5zdHlsZWRDb21wb25lbnRJZDpUKGUpP1wiZnVuY3Rpb25cIiE9dHlwZW9mKGw9ZSl8fGwucHJvdG90eXBlJiZsLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50fHwhdD9lOlplKGUodCksdCxuKTplIGluc3RhbmNlb2YgUGU/bj8oZS5pbmplY3QobiksZS5nZXROYW1lKCkpOmU6QShlKT9JZShlKTplLnRvU3RyaW5nKCk7dmFyIGx9ZnVuY3Rpb24gQWUoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0PjE/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07cmV0dXJuIFQoZSl8fEEoZSk/WmUoUChELFtlXS5jb25jYXQobikpKTpaZShQKGUsbikpfWZ1bmN0aW9uIERlKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOkI7aWYoISgwLHMuaXNWYWxpZEVsZW1lbnRUeXBlKSh0KSl0aHJvdyBuZXcgWSgxLFN0cmluZyh0KSk7dmFyIHI9ZnVuY3Rpb24oKXtyZXR1cm4gZSh0LG4sQWUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfTtyZXR1cm4gci53aXRoQ29uZmlnPWZ1bmN0aW9uKHIpe3JldHVybiBEZShlLHQsUih7fSxuLHIpKX0sci5hdHRycz1mdW5jdGlvbihyKXtyZXR1cm4gRGUoZSx0LFIoe30sbix7YXR0cnM6QXJyYXkucHJvdG90eXBlLmNvbmNhdChuLmF0dHJzLHIpLmZpbHRlcihCb29sZWFuKX0pKX0scn1mdW5jdGlvbiBCZShlKXtmb3IodmFyIHQsbj0wfGUubGVuZ3RoLHI9MHxuLG89MDtuPj00Oyl0PTE1NDA0ODM0NzcqKDY1NTM1Jih0PTI1NSZlLmNoYXJDb2RlQXQobyl8KDI1NSZlLmNoYXJDb2RlQXQoKytvKSk8PDh8KDI1NSZlLmNoYXJDb2RlQXQoKytvKSk8PDE2fCgyNTUmZS5jaGFyQ29kZUF0KCsrbykpPDwyNCkpKygoMTU0MDQ4MzQ3NyoodD4+PjE2KSY2NTUzNSk8PDE2KSxyPTE1NDA0ODM0NzcqKDY1NTM1JnIpKygoMTU0MDQ4MzQ3Nyoocj4+PjE2KSY2NTUzNSk8PDE2KV4odD0xNTQwNDgzNDc3Kig2NTUzNSYodF49dD4+PjI0KSkrKCgxNTQwNDgzNDc3Kih0Pj4+MTYpJjY1NTM1KTw8MTYpKSxuLT00LCsrbztzd2l0Y2gobil7Y2FzZSAzOnJePSgyNTUmZS5jaGFyQ29kZUF0KG8rMikpPDwxNjtjYXNlIDI6cl49KDI1NSZlLmNoYXJDb2RlQXQobysxKSk8PDg7Y2FzZSAxOnI9MTU0MDQ4MzQ3NyooNjU1MzUmKHJePTI1NSZlLmNoYXJDb2RlQXQobykpKSsoKDE1NDA0ODM0NzcqKHI+Pj4xNikmNjU1MzUpPDwxNil9cmV0dXJuKChyPTE1NDA0ODM0NzcqKDY1NTM1JihyXj1yPj4+MTMpKSsoKDE1NDA0ODM0NzcqKHI+Pj4xNikmNjU1MzUpPDwxNikpXnI+Pj4xNSk+Pj4wfXZhciBUZT01MiwkZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlKyhlPjI1PzM5Ojk3KSl9O2Z1bmN0aW9uIEZlKGUpe3ZhciB0PVwiXCIsbj12b2lkIDA7Zm9yKG49ZTtuPlRlO249TWF0aC5mbG9vcihuL1RlKSl0PSRlKG4lVGUpK3Q7cmV0dXJuICRlKG4lVGUpK3R9ZnVuY3Rpb24gV2UoZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rPTEpe3ZhciByPWVbbl07aWYoQXJyYXkuaXNBcnJheShyKSYmIVdlKHIsdCkpcmV0dXJuITE7aWYoVChyKSYmIUYocikpcmV0dXJuITF9cmV0dXJuIXQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIFQoZSl8fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWlmKFQoZVt0XSkpcmV0dXJuITA7cmV0dXJuITF9KGUpfSkpfXZhciBOZSx6ZT1mdW5jdGlvbihlKXtyZXR1cm4gRmUoQmUoZSkpfSxVZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuLHIpe0godGhpcyxlKSx0aGlzLnJ1bGVzPXQsdGhpcy5pc1N0YXRpYz1XZSh0LG4pLHRoaXMuY29tcG9uZW50SWQ9cixFZS5tYXN0ZXIuaGFzSWQocil8fEVlLm1hc3Rlci5kZWZlcnJlZEluamVjdChyLFtdKX1yZXR1cm4gZS5wcm90b3R5cGUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmlzU3RhdGljLHI9dGhpcy5jb21wb25lbnRJZCxvPXRoaXMubGFzdENsYXNzTmFtZTtpZihVJiZuJiZcInN0cmluZ1wiPT10eXBlb2YgbyYmdC5oYXNOYW1lRm9ySWQocixvKSlyZXR1cm4gbzt2YXIgYT1aZSh0aGlzLnJ1bGVzLGUsdCksaT16ZSh0aGlzLmNvbXBvbmVudElkK2Euam9pbihcIlwiKSk7cmV0dXJuIHQuaGFzTmFtZUZvcklkKHIsaSl8fHQuaW5qZWN0KHRoaXMuY29tcG9uZW50SWQsc2UoYSxcIi5cIitpLHZvaWQgMCxyKSxpKSx0aGlzLmxhc3RDbGFzc05hbWU9aSxpfSxlLmdlbmVyYXRlTmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gemUoZSl9LGV9KCksR2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06QixyPSEhbiYmZS50aGVtZT09PW4udGhlbWU7cmV0dXJuIGUudGhlbWUmJiFyP2UudGhlbWU6dHx8bi50aGVtZX0scWU9L1tbXFxdLiMqJD48K349fF46KCksXCInYC1dKy9nLFllPS8oXi18LSQpL2c7ZnVuY3Rpb24gS2UoZSl7cmV0dXJuIGUucmVwbGFjZShxZSxcIi1cIikucmVwbGFjZShZZSxcIlwiKX1mdW5jdGlvbiBYZShlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmITB9dmFyIFFlPXtjaGlsZENvbnRleHRUeXBlczohMCxjb250ZXh0VHlwZXM6ITAsZGVmYXVsdFByb3BzOiEwLGRpc3BsYXlOYW1lOiEwLGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczohMCxwcm9wVHlwZXM6ITAsdHlwZTohMH0sSmU9e25hbWU6ITAsbGVuZ3RoOiEwLHByb3RvdHlwZTohMCxjYWxsZXI6ITAsY2FsbGVlOiEwLGFyZ3VtZW50czohMCxhcml0eTohMH0sZXQ9KChOZT17fSlbcy5Gb3J3YXJkUmVmXT17JCR0eXBlb2Y6ITAscmVuZGVyOiEwfSxOZSksdHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5LG50PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLHJ0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsb3Q9dm9pZCAwPT09cnQ/ZnVuY3Rpb24oKXtyZXR1cm5bXX06cnQsYXQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixpdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsbHQ9T2JqZWN0LnByb3RvdHlwZSxjdD1BcnJheS5wcm90b3R5cGU7ZnVuY3Rpb24gc3QoZSx0LG4pe2lmKFwic3RyaW5nXCIhPXR5cGVvZiB0KXt2YXIgcj1pdCh0KTtyJiZyIT09bHQmJnN0KGUscixuKTtmb3IodmFyIG89Y3QuY29uY2F0KG50KHQpLG90KHQpKSxhPWV0W2UuJCR0eXBlb2ZdfHxRZSxpPWV0W3QuJCR0eXBlb2ZdfHxRZSxsPW8ubGVuZ3RoLGM9dm9pZCAwLHM9dm9pZCAwO2wtLTspaWYocz1vW2xdLCEoSmVbc118fG4mJm5bc118fGkmJmlbc118fGEmJmFbc10pJiYoYz1hdCh0LHMpKSl0cnl7dHQoZSxzLGMpfWNhdGNoKGUpe31yZXR1cm4gZX1yZXR1cm4gZX12YXIgdXQ9KDAsbC5jcmVhdGVDb250ZXh0KSgpLGR0PXV0LkNvbnN1bWVyLGZ0PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7SCh0aGlzLHQpO3ZhciByPVoodGhpcyxlLmNhbGwodGhpcyxuKSk7cmV0dXJuIHIuZ2V0Q29udGV4dD1mKHIuZ2V0Q29udGV4dC5iaW5kKHIpKSxyLnJlbmRlcklubmVyPXIucmVuZGVySW5uZXIuYmluZChyKSxyfXJldHVybiBJKHQsZSksdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW4/bC5jcmVhdGVFbGVtZW50KHV0LkNvbnN1bWVyLG51bGwsdGhpcy5yZW5kZXJJbm5lcik6bnVsbH0sdC5wcm90b3R5cGUucmVuZGVySW5uZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRDb250ZXh0KHRoaXMucHJvcHMudGhlbWUsZSk7cmV0dXJuIGwuY3JlYXRlRWxlbWVudCh1dC5Qcm92aWRlcix7dmFsdWU6dH0sdGhpcy5wcm9wcy5jaGlsZHJlbil9LHQucHJvdG90eXBlLmdldFRoZW1lPWZ1bmN0aW9uKGUsdCl7aWYoVChlKSlyZXR1cm4gZSh0KTtpZihudWxsPT09ZXx8QXJyYXkuaXNBcnJheShlKXx8XCJvYmplY3RcIiE9PSh2b2lkIDA9PT1lP1widW5kZWZpbmVkXCI6ayhlKSkpdGhyb3cgbmV3IFkoOCk7cmV0dXJuIFIoe30sdCxlKX0sdC5wcm90b3R5cGUuZ2V0Q29udGV4dD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmdldFRoZW1lKGUsdCl9LHR9KGwuQ29tcG9uZW50KSxwdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtIKHRoaXMsZSksdGhpcy5tYXN0ZXJTaGVldD1FZS5tYXN0ZXIsdGhpcy5pbnN0YW5jZT10aGlzLm1hc3RlclNoZWV0LmNsb25lKCksdGhpcy5zZWFsZWQ9ITF9cmV0dXJuIGUucHJvdG90eXBlLnNlYWw9ZnVuY3Rpb24oKXtpZighdGhpcy5zZWFsZWQpe3ZhciBlPXRoaXMubWFzdGVyU2hlZXQuY2xvbmVzLmluZGV4T2YodGhpcy5pbnN0YW5jZSk7dGhpcy5tYXN0ZXJTaGVldC5jbG9uZXMuc3BsaWNlKGUsMSksdGhpcy5zZWFsZWQ9ITB9fSxlLnByb3RvdHlwZS5jb2xsZWN0U3R5bGVzPWZ1bmN0aW9uKGUpe2lmKHRoaXMuc2VhbGVkKXRocm93IG5ldyBZKDIpO3JldHVybiBsLmNyZWF0ZUVsZW1lbnQodnQse3NoZWV0OnRoaXMuaW5zdGFuY2V9LGUpfSxlLnByb3RvdHlwZS5nZXRTdHlsZVRhZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWFsKCksdGhpcy5pbnN0YW5jZS50b0hUTUwoKX0sZS5wcm90b3R5cGUuZ2V0U3R5bGVFbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VhbCgpLHRoaXMuaW5zdGFuY2UudG9SZWFjdEVsZW1lbnRzKCl9LGUucHJvdG90eXBlLmludGVybGVhdmVXaXRoTm9kZVN0cmVhbT1mdW5jdGlvbihlKXt0aHJvdyBuZXcgWSgzKX0sZX0oKSxodD0oMCxsLmNyZWF0ZUNvbnRleHQpKCksQ3Q9aHQuQ29uc3VtZXIsdnQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtIKHRoaXMsdCk7dmFyIHI9Wih0aGlzLGUuY2FsbCh0aGlzLG4pKTtyZXR1cm4gci5nZXRDb250ZXh0PWYoci5nZXRDb250ZXh0KSxyfXJldHVybiBJKHQsZSksdC5wcm90b3R5cGUuZ2V0Q29udGV4dD1mdW5jdGlvbihlLHQpe2lmKGUpcmV0dXJuIGU7aWYodClyZXR1cm4gbmV3IEVlKHQpO3Rocm93IG5ldyBZKDQpfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jaGlsZHJlbixuPWUuc2hlZXQscj1lLnRhcmdldDtyZXR1cm4gbC5jcmVhdGVFbGVtZW50KGh0LlByb3ZpZGVyLHt2YWx1ZTp0aGlzLmdldENvbnRleHQobixyKX0sdCl9LHR9KGwuQ29tcG9uZW50KSxndD17fTt2YXIgbXQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe0godGhpcyx0KTt2YXIgbj1aKHRoaXMsZS5jYWxsKHRoaXMpKTtyZXR1cm4gbi5hdHRycz17fSxuLnJlbmRlck91dGVyPW4ucmVuZGVyT3V0ZXIuYmluZChuKSxuLnJlbmRlcklubmVyPW4ucmVuZGVySW5uZXIuYmluZChuKSxufXJldHVybiBJKHQsZSksdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGwuY3JlYXRlRWxlbWVudChDdCxudWxsLHRoaXMucmVuZGVyT3V0ZXIpfSx0LnByb3RvdHlwZS5yZW5kZXJPdXRlcj1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpFZS5tYXN0ZXI7cmV0dXJuIHRoaXMuc3R5bGVTaGVldD1lLHRoaXMucHJvcHMuZm9yd2FyZGVkQ29tcG9uZW50LmNvbXBvbmVudFN0eWxlLmlzU3RhdGljP3RoaXMucmVuZGVySW5uZXIoKTpsLmNyZWF0ZUVsZW1lbnQoZHQsbnVsbCx0aGlzLnJlbmRlcklubmVyKX0sdC5wcm90b3R5cGUucmVuZGVySW5uZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcy5mb3J3YXJkZWRDb21wb25lbnQsbj10LmNvbXBvbmVudFN0eWxlLHI9dC5kZWZhdWx0UHJvcHMsbz0odC5kaXNwbGF5TmFtZSx0LmZvbGRlZENvbXBvbmVudElkcyksYT10LnN0eWxlZENvbXBvbmVudElkLGk9dC50YXJnZXQsYz12b2lkIDA7Yz1uLmlzU3RhdGljP3RoaXMuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMoQix0aGlzLnByb3BzKTp0aGlzLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzKEdlKHRoaXMucHJvcHMsZSxyKXx8Qix0aGlzLnByb3BzKTt2YXIgcz10aGlzLnByb3BzLmFzfHx0aGlzLmF0dHJzLmFzfHxpLHU9WGUocyksZD17fSxmPVIoe30sdGhpcy5wcm9wcyx0aGlzLmF0dHJzKSxwPXZvaWQgMDtmb3IocCBpbiBmKVwiZm9yd2FyZGVkQ29tcG9uZW50XCIhPT1wJiZcImFzXCIhPT1wJiYoXCJmb3J3YXJkZWRSZWZcIj09PXA/ZC5yZWY9ZltwXTpcImZvcndhcmRlZEFzXCI9PT1wP2QuYXM9ZltwXTp1JiYhaChwKXx8KGRbcF09ZltwXSkpO3JldHVybiB0aGlzLnByb3BzLnN0eWxlJiZ0aGlzLmF0dHJzLnN0eWxlJiYoZC5zdHlsZT1SKHt9LHRoaXMuYXR0cnMuc3R5bGUsdGhpcy5wcm9wcy5zdHlsZSkpLGQuY2xhc3NOYW1lPUFycmF5LnByb3RvdHlwZS5jb25jYXQobyxhLGMhPT1hP2M6bnVsbCx0aGlzLnByb3BzLmNsYXNzTmFtZSx0aGlzLmF0dHJzLmNsYXNzTmFtZSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpLCgwLGwuY3JlYXRlRWxlbWVudCkocyxkKX0sdC5wcm90b3R5cGUuYnVpbGRFeGVjdXRpb25Db250ZXh0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLG89Uih7fSx0LHt0aGVtZTplfSk7cmV0dXJuIG4ubGVuZ3RoPyh0aGlzLmF0dHJzPXt9LG4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQsbj1lLGE9ITEsaT12b2lkIDAsbD12b2lkIDA7Zm9yKGwgaW4gVChuKSYmKG49bihvKSxhPSEwKSxuKWk9bltsXSxhfHwhVChpKXx8KHQ9aSkmJnQucHJvdG90eXBlJiZ0LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50fHxGKGkpfHwoaT1pKG8pKSxyLmF0dHJzW2xdPWksb1tsXT1pfSkpLG8pOm99LHQucHJvdG90eXBlLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5mb3J3YXJkZWRDb21wb25lbnQscj1uLmF0dHJzLG89bi5jb21wb25lbnRTdHlsZTtuLndhcm5Ub29NYW55Q2xhc3NlcztyZXR1cm4gby5pc1N0YXRpYyYmIXIubGVuZ3RoP28uZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMoQix0aGlzLnN0eWxlU2hlZXQpOm8uZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXModGhpcy5idWlsZEV4ZWN1dGlvbkNvbnRleHQoZSx0LHIpLHRoaXMuc3R5bGVTaGVldCl9LHR9KGwuQ29tcG9uZW50KTtmdW5jdGlvbiB3dChlLHQsbil7dmFyIHI9RihlKSxvPSFYZShlKSxhPXQuZGlzcGxheU5hbWUsaT12b2lkIDA9PT1hP2Z1bmN0aW9uKGUpe3JldHVybiBYZShlKT9cInN0eWxlZC5cIitlOlwiU3R5bGVkKFwiKyQoZSkrXCIpXCJ9KGUpOmEsYz10LmNvbXBvbmVudElkLHM9dm9pZCAwPT09Yz9mdW5jdGlvbihlLHQsbil7dmFyIHI9XCJzdHJpbmdcIiE9dHlwZW9mIHQ/XCJzY1wiOktlKHQpLG89KGd0W3JdfHwwKSsxO2d0W3JdPW87dmFyIGE9citcIi1cIitlLmdlbmVyYXRlTmFtZShyK28pO3JldHVybiBuP24rXCItXCIrYTphfShVZSx0LmRpc3BsYXlOYW1lLHQucGFyZW50Q29tcG9uZW50SWQpOmMsdT10LlBhcmVudENvbXBvbmVudCxkPXZvaWQgMD09PXU/bXQ6dSxmPXQuYXR0cnMscD12b2lkIDA9PT1mP0Q6ZixoPXQuZGlzcGxheU5hbWUmJnQuY29tcG9uZW50SWQ/S2UodC5kaXNwbGF5TmFtZSkrXCItXCIrdC5jb21wb25lbnRJZDp0LmNvbXBvbmVudElkfHxzLEM9ciYmZS5hdHRycz9BcnJheS5wcm90b3R5cGUuY29uY2F0KGUuYXR0cnMscCkuZmlsdGVyKEJvb2xlYW4pOnAsdj1uZXcgVWUocj9lLmNvbXBvbmVudFN0eWxlLnJ1bGVzLmNvbmNhdChuKTpuLEMsaCksZz12b2lkIDAsbT1mdW5jdGlvbihlLHQpe3JldHVybiBsLmNyZWF0ZUVsZW1lbnQoZCxSKHt9LGUse2ZvcndhcmRlZENvbXBvbmVudDpnLGZvcndhcmRlZFJlZjp0fSkpfTtyZXR1cm4gbS5kaXNwbGF5TmFtZT1pLChnPWwuZm9yd2FyZFJlZihtKSkuZGlzcGxheU5hbWU9aSxnLmF0dHJzPUMsZy5jb21wb25lbnRTdHlsZT12LGcuZm9sZGVkQ29tcG9uZW50SWRzPXI/QXJyYXkucHJvdG90eXBlLmNvbmNhdChlLmZvbGRlZENvbXBvbmVudElkcyxlLnN0eWxlZENvbXBvbmVudElkKTpELGcuc3R5bGVkQ29tcG9uZW50SWQ9aCxnLnRhcmdldD1yP2UudGFyZ2V0OmUsZy53aXRoQ29tcG9uZW50PWZ1bmN0aW9uKGUpe3ZhciByPXQuY29tcG9uZW50SWQsbz1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKXQuaW5kZXhPZihyKT49MHx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJihuW3JdPWVbcl0pO3JldHVybiBufSh0LFtcImNvbXBvbmVudElkXCJdKSxhPXImJnIrXCItXCIrKFhlKGUpP2U6S2UoJChlKSkpO3JldHVybiB3dChlLFIoe30sbyx7YXR0cnM6Qyxjb21wb25lbnRJZDphLFBhcmVudENvbXBvbmVudDpkfSksbil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnLFwiZGVmYXVsdFByb3BzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb2xkZWREZWZhdWx0UHJvcHN9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9mb2xkZWREZWZhdWx0UHJvcHM9cj9FKGUuZGVmYXVsdFByb3BzLHQpOnR9fSksZy50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiLlwiK2cuc3R5bGVkQ29tcG9uZW50SWR9LG8mJnN0KGcsZSx7YXR0cnM6ITAsY29tcG9uZW50U3R5bGU6ITAsZGlzcGxheU5hbWU6ITAsZm9sZGVkQ29tcG9uZW50SWRzOiEwLHN0eWxlZENvbXBvbmVudElkOiEwLHRhcmdldDohMCx3aXRoQ29tcG9uZW50OiEwfSksZ312YXIgeXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIERlKHd0LGUpfTtbXCJhXCIsXCJhYmJyXCIsXCJhZGRyZXNzXCIsXCJhcmVhXCIsXCJhcnRpY2xlXCIsXCJhc2lkZVwiLFwiYXVkaW9cIixcImJcIixcImJhc2VcIixcImJkaVwiLFwiYmRvXCIsXCJiaWdcIixcImJsb2NrcXVvdGVcIixcImJvZHlcIixcImJyXCIsXCJidXR0b25cIixcImNhbnZhc1wiLFwiY2FwdGlvblwiLFwiY2l0ZVwiLFwiY29kZVwiLFwiY29sXCIsXCJjb2xncm91cFwiLFwiZGF0YVwiLFwiZGF0YWxpc3RcIixcImRkXCIsXCJkZWxcIixcImRldGFpbHNcIixcImRmblwiLFwiZGlhbG9nXCIsXCJkaXZcIixcImRsXCIsXCJkdFwiLFwiZW1cIixcImVtYmVkXCIsXCJmaWVsZHNldFwiLFwiZmlnY2FwdGlvblwiLFwiZmlndXJlXCIsXCJmb290ZXJcIixcImZvcm1cIixcImgxXCIsXCJoMlwiLFwiaDNcIixcImg0XCIsXCJoNVwiLFwiaDZcIixcImhlYWRcIixcImhlYWRlclwiLFwiaGdyb3VwXCIsXCJoclwiLFwiaHRtbFwiLFwiaVwiLFwiaWZyYW1lXCIsXCJpbWdcIixcImlucHV0XCIsXCJpbnNcIixcImtiZFwiLFwia2V5Z2VuXCIsXCJsYWJlbFwiLFwibGVnZW5kXCIsXCJsaVwiLFwibGlua1wiLFwibWFpblwiLFwibWFwXCIsXCJtYXJrXCIsXCJtYXJxdWVlXCIsXCJtZW51XCIsXCJtZW51aXRlbVwiLFwibWV0YVwiLFwibWV0ZXJcIixcIm5hdlwiLFwibm9zY3JpcHRcIixcIm9iamVjdFwiLFwib2xcIixcIm9wdGdyb3VwXCIsXCJvcHRpb25cIixcIm91dHB1dFwiLFwicFwiLFwicGFyYW1cIixcInBpY3R1cmVcIixcInByZVwiLFwicHJvZ3Jlc3NcIixcInFcIixcInJwXCIsXCJydFwiLFwicnVieVwiLFwic1wiLFwic2FtcFwiLFwic2NyaXB0XCIsXCJzZWN0aW9uXCIsXCJzZWxlY3RcIixcInNtYWxsXCIsXCJzb3VyY2VcIixcInNwYW5cIixcInN0cm9uZ1wiLFwic3R5bGVcIixcInN1YlwiLFwic3VtbWFyeVwiLFwic3VwXCIsXCJ0YWJsZVwiLFwidGJvZHlcIixcInRkXCIsXCJ0ZXh0YXJlYVwiLFwidGZvb3RcIixcInRoXCIsXCJ0aGVhZFwiLFwidGltZVwiLFwidGl0bGVcIixcInRyXCIsXCJ0cmFja1wiLFwidVwiLFwidWxcIixcInZhclwiLFwidmlkZW9cIixcIndiclwiLFwiY2lyY2xlXCIsXCJjbGlwUGF0aFwiLFwiZGVmc1wiLFwiZWxsaXBzZVwiLFwiZm9yZWlnbk9iamVjdFwiLFwiZ1wiLFwiaW1hZ2VcIixcImxpbmVcIixcImxpbmVhckdyYWRpZW50XCIsXCJtYXJrZXJcIixcIm1hc2tcIixcInBhdGhcIixcInBhdHRlcm5cIixcInBvbHlnb25cIixcInBvbHlsaW5lXCIsXCJyYWRpYWxHcmFkaWVudFwiLFwicmVjdFwiLFwic3RvcFwiLFwic3ZnXCIsXCJ0ZXh0XCIsXCJ0c3BhblwiXS5mb3JFYWNoKChmdW5jdGlvbihlKXt5dFtlXT15dChlKX0pKTt2YXIgYnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbil7SCh0aGlzLGUpLHRoaXMucnVsZXM9dCx0aGlzLmNvbXBvbmVudElkPW4sdGhpcy5pc1N0YXRpYz1XZSh0LEQpLEVlLm1hc3Rlci5oYXNJZChuKXx8RWUubWFzdGVyLmRlZmVycmVkSW5qZWN0KG4sW10pfXJldHVybiBlLnByb3RvdHlwZS5jcmVhdGVTdHlsZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1zZShaZSh0aGlzLnJ1bGVzLGUsdCksXCJcIik7dC5pbmplY3QodGhpcy5jb21wb25lbnRJZCxuKX0sZS5wcm90b3R5cGUucmVtb3ZlU3R5bGVzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY29tcG9uZW50SWQ7ZS5oYXNJZCh0KSYmZS5yZW1vdmUodCl9LGUucHJvdG90eXBlLnJlbmRlclN0eWxlcz1mdW5jdGlvbihlLHQpe3RoaXMucmVtb3ZlU3R5bGVzKHQpLHRoaXMuY3JlYXRlU3R5bGVzKGUsdCl9LGV9KCk7ZnVuY3Rpb24geHQoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0PjE/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07dmFyIG89QWUuYXBwbHkodm9pZCAwLFtlXS5jb25jYXQobikpLGE9XCJzYy1nbG9iYWwtXCIrQmUoSlNPTi5zdHJpbmdpZnkobykpLGk9bmV3IGJ0KG8sYSksYz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe0godGhpcyx0KTt2YXIgcj1aKHRoaXMsZS5jYWxsKHRoaXMsbikpLG89ci5jb25zdHJ1Y3RvcixhPW8uZ2xvYmFsU3R5bGUsaT1vLnN0eWxlZENvbXBvbmVudElkO3JldHVybiBVJiYod2luZG93LnNjQ0dTSE1SQ2FjaGVbaV09KHdpbmRvdy5zY0NHU0hNUkNhY2hlW2ldfHwwKSsxKSxyLnN0YXRlPXtnbG9iYWxTdHlsZTphLHN0eWxlZENvbXBvbmVudElkOml9LHJ9cmV0dXJuIEkodCxlKSx0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3dpbmRvdy5zY0NHU0hNUkNhY2hlW3RoaXMuc3RhdGUuc3R5bGVkQ29tcG9uZW50SWRdJiYod2luZG93LnNjQ0dTSE1SQ2FjaGVbdGhpcy5zdGF0ZS5zdHlsZWRDb21wb25lbnRJZF0tPTEpLDA9PT13aW5kb3cuc2NDR1NITVJDYWNoZVt0aGlzLnN0YXRlLnN0eWxlZENvbXBvbmVudElkXSYmdGhpcy5zdGF0ZS5nbG9iYWxTdHlsZS5yZW1vdmVTdHlsZXModGhpcy5zdHlsZVNoZWV0KX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gbC5jcmVhdGVFbGVtZW50KEN0LG51bGwsKGZ1bmN0aW9uKHQpe2Uuc3R5bGVTaGVldD10fHxFZS5tYXN0ZXI7dmFyIG49ZS5zdGF0ZS5nbG9iYWxTdHlsZTtyZXR1cm4gbi5pc1N0YXRpYz8obi5yZW5kZXJTdHlsZXMocSxlLnN0eWxlU2hlZXQpLG51bGwpOmwuY3JlYXRlRWxlbWVudChkdCxudWxsLChmdW5jdGlvbih0KXt2YXIgcj1lLmNvbnN0cnVjdG9yLmRlZmF1bHRQcm9wcyxvPVIoe30sZS5wcm9wcyk7cmV0dXJuIHZvaWQgMCE9PXQmJihvLnRoZW1lPUdlKGUucHJvcHMsdCxyKSksbi5yZW5kZXJTdHlsZXMobyxlLnN0eWxlU2hlZXQpLG51bGx9KSl9KSl9LHR9KGwuQ29tcG9uZW50KTtyZXR1cm4gYy5nbG9iYWxTdHlsZT1pLGMuc3R5bGVkQ29tcG9uZW50SWQ9YSxjfVUmJih3aW5kb3cuc2NDR1NITVJDYWNoZT17fSk7dmFyIE90PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1xcc3xcXFxcbi9nLFwiXCIpfTtmdW5jdGlvbiBMdChlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTt2YXIgbz1BZS5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChuKSksYT1GZShCZShPdChKU09OLnN0cmluZ2lmeShvKSkpKTtyZXR1cm4gbmV3IFBlKGEsc2UobyxhLFwiQGtleWZyYW1lc1wiKSl9dmFyIE10PWZ1bmN0aW9uKGUpe3ZhciB0PWwuZm9yd2FyZFJlZigoZnVuY3Rpb24odCxuKXtyZXR1cm4gbC5jcmVhdGVFbGVtZW50KGR0LG51bGwsKGZ1bmN0aW9uKHIpe3ZhciBvPWUuZGVmYXVsdFByb3BzLGE9R2UodCxyLG8pO3JldHVybiBsLmNyZWF0ZUVsZW1lbnQoZSxSKHt9LHQse3RoZW1lOmEscmVmOm59KSl9KSl9KSk7cmV0dXJuIHN0KHQsZSksdC5kaXNwbGF5TmFtZT1cIldpdGhUaGVtZShcIiskKGUpK1wiKVwiLHR9LFN0PXtTdHlsZVNoZWV0OkVlfTtjb25zdCBfdD15dH0sMjQ2OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9XCIvKnwqL1wiLG49dCtcIn1cIjtmdW5jdGlvbiByKHQpe2lmKHQpdHJ5e2UodCtcIn1cIil9Y2F0Y2goZSl7fX1yZXR1cm4gZnVuY3Rpb24obyxhLGksbCxjLHMsdSxkLGYscCl7c3dpdGNoKG8pe2Nhc2UgMTppZigwPT09ZiYmNjQ9PT1hLmNoYXJDb2RlQXQoMCkpcmV0dXJuIGUoYStcIjtcIiksXCJcIjticmVhaztjYXNlIDI6aWYoMD09PWQpcmV0dXJuIGErdDticmVhaztjYXNlIDM6c3dpdGNoKGQpe2Nhc2UgMTAyOmNhc2UgMTEyOnJldHVybiBlKGlbMF0rYSksXCJcIjtkZWZhdWx0OnJldHVybiBhKygwPT09cD90OlwiXCIpfWNhc2UtMjphLnNwbGl0KG4pLmZvckVhY2gocil9fX19KCl9LDk0NjplPT57ZS5leHBvcnRzPWZ1bmN0aW9uIGUodCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49L15cXDArL2cscj0vW1xcMFxcclxcZl0vZyxvPS86ICovZyxhPS96b298Z3JhLyxpPS8oWyw6IF0pKHRyYW5zZm9ybSkvZyxsPS8sK1xccyooPyFbXihdKlspXSkvZyxjPS8gK1xccyooPyFbXihdKlspXSkvZyxzPS8gKltcXDBdICovZyx1PS8sXFxyKz8vZyxkPS8oW1xcdFxcclxcbiBdKSpcXGY/Ji9nLGY9LzpnbG9iYWxcXCgoKD86W15cXChcXClcXFtcXF1dKnxcXFsuKlxcXXxcXChbXlxcKFxcKV0qXFwpKSopXFwpL2cscD0vXFxXKy9nLGg9L0Aoa1xcdyspXFxzKihcXFMqKVxccyovLEM9Lzo6KHBsYWNlKS9nLHY9LzoocmVhZC1vbmx5KS9nLGc9L1xccysoPz1be1xcXTs9Oj5dKS9nLG09LyhbW309Oj5dKVxccysvZyx3PS8oXFx7W157XSs/KTsoPz1cXH0pL2cseT0vXFxzezIsfS9nLGI9LyhbXlxcKF0pKDorKSAqL2cseD0vW3N2aF1cXHcrLVt0YmxyXXsyfS8sTz0vXFwoXFxzKiguKilcXHMqXFwpL2csTD0vKFtcXHNcXFNdKj8pOy9nLE09Ly1zZWxmfGZsZXgtL2csUz0vW15dKj8oOltycF1bZWxdYVtcXHctXSspW15dKi8sXz0vc3RyZXRjaHw6XFxzKlxcdytcXC0oPzpjb250ZXxhdmFpbCkvLGo9LyhbXi1dKShpbWFnZS1zZXRcXCgpLyxFPVwiLXdlYmtpdC1cIixQPVwiLW1vei1cIixrPVwiLW1zLVwiLEg9NTksVj0xMjUsUj0xMjMsST00MCxaPTQxLEE9OTEsRD05MyxCPTEwLFQ9MTMsJD05LEY9NjQsVz0zMixOPTM4LHo9NDUsVT05NSxHPTQyLHE9NDQsWT01OCxLPTM5LFg9MzQsUT00NyxKPTYyLGVlPTQzLHRlPTEyNixuZT0wLHJlPTEyLG9lPTExLGFlPTEwNyxpZT0xMDksbGU9MTE1LGNlPTExMixzZT0xMTEsdWU9MTA1LGRlPTk5LGZlPTEwMCxwZT0xMTIsaGU9MSxDZT0xLHZlPTAsZ2U9MSxtZT0xLHdlPTEseWU9MCxiZT0wLHhlPTAsT2U9W10sTGU9W10sTWU9MCxTZT1udWxsLF9lPS0yLGplPS0xLEVlPTAsUGU9MSxrZT0yLEhlPTMsVmU9MCxSZT0xLEllPVwiXCIsWmU9XCJcIixBZT1cIlwiO2Z1bmN0aW9uIERlKGUsdCxvLGEsaSl7Zm9yKHZhciBsLGMsdT0wLGQ9MCxmPTAscD0wLGc9MCxtPTAsdz0wLHk9MCx4PTAsTD0wLE09MCxTPTAsXz0wLGo9MCxVPTAseWU9MCxMZT0wLFNlPTAsX2U9MCxqZT1vLmxlbmd0aCxUZT1qZS0xLFVlPVwiXCIsR2U9XCJcIixxZT1cIlwiLFllPVwiXCIsS2U9XCJcIixYZT1cIlwiO1U8amU7KXtpZih3PW8uY2hhckNvZGVBdChVKSxVPT09VGUmJmQrcCtmK3UhPT0wJiYoMCE9PWQmJih3PWQ9PT1RP0I6USkscD1mPXU9MCxqZSsrLFRlKyspLGQrcCtmK3U9PT0wKXtpZihVPT09VGUmJih5ZT4wJiYoR2U9R2UucmVwbGFjZShyLFwiXCIpKSxHZS50cmltKCkubGVuZ3RoPjApKXtzd2l0Y2godyl7Y2FzZSBXOmNhc2UgJDpjYXNlIEg6Y2FzZSBUOmNhc2UgQjpicmVhaztkZWZhdWx0OkdlKz1vLmNoYXJBdChVKX13PUh9aWYoMT09PUxlKXN3aXRjaCh3KXtjYXNlIFI6Y2FzZSBWOmNhc2UgSDpjYXNlIFg6Y2FzZSBLOmNhc2UgSTpjYXNlIFo6Y2FzZSBxOkxlPTA7Y2FzZSAkOmNhc2UgVDpjYXNlIEI6Y2FzZSBXOmJyZWFrO2RlZmF1bHQ6Zm9yKExlPTAsX2U9VSxnPXcsVS0tLHc9SDtfZTxqZTspc3dpdGNoKG8uY2hhckNvZGVBdChfZSsrKSl7Y2FzZSBCOmNhc2UgVDpjYXNlIEg6KytVLHc9ZyxfZT1qZTticmVhaztjYXNlIFk6eWU+MCYmKCsrVSx3PWcpO2Nhc2UgUjpfZT1qZX19c3dpdGNoKHcpe2Nhc2UgUjpmb3IoZz0oR2U9R2UudHJpbSgpKS5jaGFyQ29kZUF0KDApLE09MSxfZT0rK1U7VTxqZTspe3N3aXRjaCh3PW8uY2hhckNvZGVBdChVKSl7Y2FzZSBSOk0rKzticmVhaztjYXNlIFY6TS0tO2JyZWFrO2Nhc2UgUTpzd2l0Y2gobT1vLmNoYXJDb2RlQXQoVSsxKSl7Y2FzZSBHOmNhc2UgUTpVPXplKG0sVSxUZSxvKX1icmVhaztjYXNlIEE6dysrO2Nhc2UgSTp3Kys7Y2FzZSBYOmNhc2UgSzpmb3IoO1UrKzxUZSYmby5jaGFyQ29kZUF0KFUpIT09dzspO31pZigwPT09TSlicmVhaztVKyt9aWYocWU9by5zdWJzdHJpbmcoX2UsVSksZz09PW5lJiYoZz0oR2U9R2UucmVwbGFjZShuLFwiXCIpLnRyaW0oKSkuY2hhckNvZGVBdCgwKSksZz09PUYpe3N3aXRjaCh5ZT4wJiYoR2U9R2UucmVwbGFjZShyLFwiXCIpKSxtPUdlLmNoYXJDb2RlQXQoMSkpe2Nhc2UgZmU6Y2FzZSBpZTpjYXNlIGxlOmNhc2UgejpsPXQ7YnJlYWs7ZGVmYXVsdDpsPU9lfWlmKF9lPShxZT1EZSh0LGwscWUsbSxpKzEpKS5sZW5ndGgseGU+MCYmMD09PV9lJiYoX2U9R2UubGVuZ3RoKSxNZT4wJiYobD1CZShPZSxHZSxTZSksYz1OZShIZSxxZSxsLHQsQ2UsaGUsX2UsbSxpLGEpLEdlPWwuam9pbihcIlwiKSx2b2lkIDAhPT1jJiYwPT09KF9lPShxZT1jLnRyaW0oKSkubGVuZ3RoKSYmKG09MCxxZT1cIlwiKSksX2U+MClzd2l0Y2gobSl7Y2FzZSBsZTpHZT1HZS5yZXBsYWNlKE8sV2UpO2Nhc2UgZmU6Y2FzZSBpZTpjYXNlIHo6cWU9R2UrXCJ7XCIrcWUrXCJ9XCI7YnJlYWs7Y2FzZSBhZTpxZT0oR2U9R2UucmVwbGFjZShoLFwiJDEgJDJcIisoUmU+MD9JZTpcIlwiKSkpK1wie1wiK3FlK1wifVwiLHFlPTE9PT1tZXx8Mj09PW1lJiZGZShcIkBcIitxZSwzKT9cIkBcIitFK3FlK1wiQFwiK3FlOlwiQFwiK3FlO2JyZWFrO2RlZmF1bHQ6cWU9R2UrcWUsYT09PXBlJiYoWWUrPXFlLHFlPVwiXCIpfWVsc2UgcWU9XCJcIn1lbHNlIHFlPURlKHQsQmUodCxHZSxTZSkscWUsYSxpKzEpO0tlKz1xZSxTPTAsTGU9MCxqPTAseWU9MCxTZT0wLF89MCxHZT1cIlwiLHFlPVwiXCIsdz1vLmNoYXJDb2RlQXQoKytVKTticmVhaztjYXNlIFY6Y2FzZSBIOmlmKChfZT0oR2U9KHllPjA/R2UucmVwbGFjZShyLFwiXCIpOkdlKS50cmltKCkpLmxlbmd0aCk+MSlzd2l0Y2goMD09PWomJigoZz1HZS5jaGFyQ29kZUF0KDApKT09PXp8fGc+OTYmJmc8MTIzKSYmKF9lPShHZT1HZS5yZXBsYWNlKFwiIFwiLFwiOlwiKSkubGVuZ3RoKSxNZT4wJiZ2b2lkIDAhPT0oYz1OZShQZSxHZSx0LGUsQ2UsaGUsWWUubGVuZ3RoLGEsaSxhKSkmJjA9PT0oX2U9KEdlPWMudHJpbSgpKS5sZW5ndGgpJiYoR2U9XCJcXDBcXDBcIiksZz1HZS5jaGFyQ29kZUF0KDApLG09R2UuY2hhckNvZGVBdCgxKSxnKXtjYXNlIG5lOmJyZWFrO2Nhc2UgRjppZihtPT09dWV8fG09PT1kZSl7WGUrPUdlK28uY2hhckF0KFUpO2JyZWFrfWRlZmF1bHQ6aWYoR2UuY2hhckNvZGVBdChfZS0xKT09PVkpYnJlYWs7WWUrPSRlKEdlLGcsbSxHZS5jaGFyQ29kZUF0KDIpKX1TPTAsTGU9MCxqPTAseWU9MCxTZT0wLEdlPVwiXCIsdz1vLmNoYXJDb2RlQXQoKytVKX19c3dpdGNoKHcpe2Nhc2UgVDpjYXNlIEI6aWYoZCtwK2YrdStiZT09PTApc3dpdGNoKEwpe2Nhc2UgWjpjYXNlIEs6Y2FzZSBYOmNhc2UgRjpjYXNlIHRlOmNhc2UgSjpjYXNlIEc6Y2FzZSBlZTpjYXNlIFE6Y2FzZSB6OmNhc2UgWTpjYXNlIHE6Y2FzZSBIOmNhc2UgUjpjYXNlIFY6YnJlYWs7ZGVmYXVsdDpqPjAmJihMZT0xKX1kPT09UT9kPTA6Z2UrUz09PTAmJmEhPT1hZSYmR2UubGVuZ3RoPjAmJih5ZT0xLEdlKz1cIlxcMFwiKSxNZSpWZT4wJiZOZShFZSxHZSx0LGUsQ2UsaGUsWWUubGVuZ3RoLGEsaSxhKSxoZT0xLENlKys7YnJlYWs7Y2FzZSBIOmNhc2UgVjppZihkK3ArZit1PT09MCl7aGUrKzticmVha31kZWZhdWx0OnN3aXRjaChoZSsrLFVlPW8uY2hhckF0KFUpLHcpe2Nhc2UgJDpjYXNlIFc6aWYocCt1K2Q9PT0wKXN3aXRjaCh5KXtjYXNlIHE6Y2FzZSBZOmNhc2UgJDpjYXNlIFc6VWU9XCJcIjticmVhaztkZWZhdWx0OnchPT1XJiYoVWU9XCIgXCIpfWJyZWFrO2Nhc2UgbmU6VWU9XCJcXFxcMFwiO2JyZWFrO2Nhc2UgcmU6VWU9XCJcXFxcZlwiO2JyZWFrO2Nhc2Ugb2U6VWU9XCJcXFxcdlwiO2JyZWFrO2Nhc2UgTjpwK2QrdT09PTAmJmdlPjAmJihTZT0xLHllPTEsVWU9XCJcXGZcIitVZSk7YnJlYWs7Y2FzZSAxMDg6aWYocCtkK3UrdmU9PT0wJiZqPjApc3dpdGNoKFUtail7Y2FzZSAyOnk9PT1jZSYmby5jaGFyQ29kZUF0KFUtMyk9PT1ZJiYodmU9eSk7Y2FzZSA4Ong9PT1zZSYmKHZlPXgpfWJyZWFrO2Nhc2UgWTpwK2QrdT09PTAmJihqPVUpO2JyZWFrO2Nhc2UgcTpkK2YrcCt1PT09MCYmKHllPTEsVWUrPVwiXFxyXCIpO2JyZWFrO2Nhc2UgWDpjYXNlIEs6MD09PWQmJihwPXA9PT13PzA6MD09PXA/dzpwKTticmVhaztjYXNlIEE6cCtkK2Y9PT0wJiZ1Kys7YnJlYWs7Y2FzZSBEOnArZCtmPT09MCYmdS0tO2JyZWFrO2Nhc2UgWjpwK2QrdT09PTAmJmYtLTticmVhaztjYXNlIEk6cCtkK3U9PT0wJiYoMD09PVMmJigyKnkrMyp4PT01MzN8fChNPTAsUz0xKSksZisrKTticmVhaztjYXNlIEY6ZCtmK3ArdStqK189PT0wJiYoXz0xKTticmVhaztjYXNlIEc6Y2FzZSBROmlmKHArdStmPjApYnJlYWs7c3dpdGNoKGQpe2Nhc2UgMDpzd2l0Y2goMip3KzMqby5jaGFyQ29kZUF0KFUrMSkpe2Nhc2UgMjM1OmQ9UTticmVhaztjYXNlIDIyMDpfZT1VLGQ9R31icmVhaztjYXNlIEc6dz09PVEmJnk9PT1HJiZfZSsyIT09VSYmKDMzPT09by5jaGFyQ29kZUF0KF9lKzIpJiYoWWUrPW8uc3Vic3RyaW5nKF9lLFUrMSkpLFVlPVwiXCIsZD0wKX19aWYoMD09PWQpe2lmKGdlK3ArdStfPT09MCYmYSE9PWFlJiZ3IT09SClzd2l0Y2godyl7Y2FzZSBxOmNhc2UgdGU6Y2FzZSBKOmNhc2UgZWU6Y2FzZSBaOmNhc2UgSTppZigwPT09Uyl7c3dpdGNoKHkpe2Nhc2UgJDpjYXNlIFc6Y2FzZSBCOmNhc2UgVDpVZSs9XCJcXDBcIjticmVhaztkZWZhdWx0OlVlPVwiXFwwXCIrVWUrKHc9PT1xP1wiXCI6XCJcXDBcIil9eWU9MX1lbHNlIHN3aXRjaCh3KXtjYXNlIEk6ais3PT09VSYmMTA4PT09eSYmKGo9MCksUz0rK007YnJlYWs7Y2FzZSBaOjA9PShTPS0tTSkmJih5ZT0xLFVlKz1cIlxcMFwiKX1icmVhaztjYXNlICQ6Y2FzZSBXOnN3aXRjaCh5KXtjYXNlIG5lOmNhc2UgUjpjYXNlIFY6Y2FzZSBIOmNhc2UgcTpjYXNlIHJlOmNhc2UgJDpjYXNlIFc6Y2FzZSBCOmNhc2UgVDpicmVhaztkZWZhdWx0OjA9PT1TJiYoeWU9MSxVZSs9XCJcXDBcIil9fUdlKz1VZSx3IT09VyYmdyE9PSQmJihMPXcpfX14PXkseT13LFUrK31pZihfZT1ZZS5sZW5ndGgseGU+MCYmMD09PV9lJiYwPT09S2UubGVuZ3RoJiYwPT09dFswXS5sZW5ndGg9PTAmJihhIT09aWV8fDE9PT10Lmxlbmd0aCYmKGdlPjA/WmU6QWUpPT09dFswXSkmJihfZT10LmpvaW4oXCIsXCIpLmxlbmd0aCsyKSxfZT4wKXtpZihsPTA9PT1nZSYmYSE9PWFlP2Z1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLG89MCxhPWUubGVuZ3RoLGk9QXJyYXkoYSk7bzxhOysrbyl7Zm9yKHZhciBsPWVbb10uc3BsaXQocyksYz1cIlwiLHU9MCxkPTAsZj0wLHA9MCxoPWwubGVuZ3RoO3U8aDsrK3UpaWYoISgwPT09KGQ9KG49bFt1XSkubGVuZ3RoKSYmaD4xKSl7aWYoZj1jLmNoYXJDb2RlQXQoYy5sZW5ndGgtMSkscD1uLmNoYXJDb2RlQXQoMCksdD1cIlwiLDAhPT11KXN3aXRjaChmKXtjYXNlIEc6Y2FzZSB0ZTpjYXNlIEo6Y2FzZSBlZTpjYXNlIFc6Y2FzZSBJOmJyZWFrO2RlZmF1bHQ6dD1cIiBcIn1zd2l0Y2gocCl7Y2FzZSBOOm49dCtaZTtjYXNlIHRlOmNhc2UgSjpjYXNlIGVlOmNhc2UgVzpjYXNlIFo6Y2FzZSBJOmJyZWFrO2Nhc2UgQTpuPXQrbitaZTticmVhaztjYXNlIFk6c3dpdGNoKDIqbi5jaGFyQ29kZUF0KDEpKzMqbi5jaGFyQ29kZUF0KDIpKXtjYXNlIDUzMDppZih3ZT4wKXtuPXQrbi5zdWJzdHJpbmcoOCxkLTEpO2JyZWFrfWRlZmF1bHQ6KHU8MXx8bFt1LTFdLmxlbmd0aDwxKSYmKG49dCtaZStuKX1icmVhaztjYXNlIHE6dD1cIlwiO2RlZmF1bHQ6bj1kPjEmJm4uaW5kZXhPZihcIjpcIik+MD90K24ucmVwbGFjZShiLFwiJDFcIitaZStcIiQyXCIpOnQrbitaZX1jKz1ufWlbb109Yy5yZXBsYWNlKHIsXCJcIikudHJpbSgpfXJldHVybiBpfSh0KTp0LE1lPjAmJnZvaWQgMCE9PShjPU5lKGtlLFllLGwsZSxDZSxoZSxfZSxhLGksYSkpJiYwPT09KFllPWMpLmxlbmd0aClyZXR1cm4gWGUrWWUrS2U7aWYoWWU9bC5qb2luKFwiLFwiKStcIntcIitZZStcIn1cIixtZSp2ZSE9MCl7c3dpdGNoKDIhPT1tZXx8RmUoWWUsMil8fCh2ZT0wKSx2ZSl7Y2FzZSBzZTpZZT1ZZS5yZXBsYWNlKHYsXCI6XCIrUCtcIiQxXCIpK1llO2JyZWFrO2Nhc2UgY2U6WWU9WWUucmVwbGFjZShDLFwiOjpcIitFK1wiaW5wdXQtJDFcIikrWWUucmVwbGFjZShDLFwiOjpcIitQK1wiJDFcIikrWWUucmVwbGFjZShDLFwiOlwiK2srXCJpbnB1dC0kMVwiKStZZX12ZT0wfX1yZXR1cm4gWGUrWWUrS2V9ZnVuY3Rpb24gQmUoZSx0LG4pe3ZhciByPXQudHJpbSgpLnNwbGl0KHUpLG89cixhPXIubGVuZ3RoLGk9ZS5sZW5ndGg7c3dpdGNoKGkpe2Nhc2UgMDpjYXNlIDE6Zm9yKHZhciBsPTAsYz0wPT09aT9cIlwiOmVbMF0rXCIgXCI7bDxhOysrbClvW2xdPVRlKGMsb1tsXSxuLGkpLnRyaW0oKTticmVhaztkZWZhdWx0Omw9MDt2YXIgcz0wO2ZvcihvPVtdO2w8YTsrK2wpZm9yKHZhciBkPTA7ZDxpOysrZClvW3MrK109VGUoZVtkXStcIiBcIixyW2xdLG4saSkudHJpbSgpfXJldHVybiBvfWZ1bmN0aW9uIFRlKGUsdCxuLHIpe3ZhciBvPXQsYT1vLmNoYXJDb2RlQXQoMCk7c3dpdGNoKGE8MzMmJihhPShvPW8udHJpbSgpKS5jaGFyQ29kZUF0KDApKSxhKXtjYXNlIE46c3dpdGNoKGdlK3Ipe2Nhc2UgMDpjYXNlIDE6aWYoMD09PWUudHJpbSgpLmxlbmd0aClicmVhaztkZWZhdWx0OnJldHVybiBvLnJlcGxhY2UoZCxcIiQxXCIrZS50cmltKCkpfWJyZWFrO2Nhc2UgWTppZigxMDMhPT1vLmNoYXJDb2RlQXQoMSkpcmV0dXJuIGUudHJpbSgpK28ucmVwbGFjZShkLFwiJDFcIitlLnRyaW0oKSk7aWYod2U+MCYmZ2U+MClyZXR1cm4gby5yZXBsYWNlKGYsXCIkMVwiKS5yZXBsYWNlKGQsXCIkMVwiK0FlKTtkZWZhdWx0OmlmKG4qZ2U+MCYmby5pbmRleE9mKFwiXFxmXCIpPjApcmV0dXJuIG8ucmVwbGFjZShkLChlLmNoYXJDb2RlQXQoMCk9PT1ZP1wiXCI6XCIkMVwiKStlLnRyaW0oKSl9cmV0dXJuIGUrb31mdW5jdGlvbiAkZShlLHQsbixyKXt2YXIgcyx1PTAsZD1lK1wiO1wiLGY9Mip0KzMqbis0KnI7aWYoOTQ0PT09ZilyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGgsbj1lLmluZGV4T2YoXCI6XCIsOSkrMSxyPWUuc3Vic3RyaW5nKDAsbikudHJpbSgpLG89ZS5zdWJzdHJpbmcobix0LTEpLnRyaW0oKTtzd2l0Y2goZS5jaGFyQ29kZUF0KDkpKlJlKXtjYXNlIDA6YnJlYWs7Y2FzZSB6OmlmKDExMCE9PWUuY2hhckNvZGVBdCgxMCkpYnJlYWs7ZGVmYXVsdDp2YXIgYT1vLnNwbGl0KChvPVwiXCIsbCkpLGk9MDtmb3Iobj0wLHQ9YS5sZW5ndGg7aTx0O249MCwrK2kpe2Zvcih2YXIgcz1hW2ldLHU9cy5zcGxpdChjKTtzPXVbbl07KXt2YXIgZD1zLmNoYXJDb2RlQXQoMCk7aWYoMT09PVJlJiYoZD5GJiZkPDkwfHxkPjk2JiZkPDEyM3x8ZD09PVV8fGQ9PT16JiZzLmNoYXJDb2RlQXQoMSkhPT16KSYmaXNOYU4ocGFyc2VGbG9hdChzKSkrKC0xIT09cy5pbmRleE9mKFwiKFwiKSk9PT0xKXN3aXRjaChzKXtjYXNlXCJpbmZpbml0ZVwiOmNhc2VcImFsdGVybmF0ZVwiOmNhc2VcImJhY2t3YXJkc1wiOmNhc2VcInJ1bm5pbmdcIjpjYXNlXCJub3JtYWxcIjpjYXNlXCJmb3J3YXJkc1wiOmNhc2VcImJvdGhcIjpjYXNlXCJub25lXCI6Y2FzZVwibGluZWFyXCI6Y2FzZVwiZWFzZVwiOmNhc2VcImVhc2UtaW5cIjpjYXNlXCJlYXNlLW91dFwiOmNhc2VcImVhc2UtaW4tb3V0XCI6Y2FzZVwicGF1c2VkXCI6Y2FzZVwicmV2ZXJzZVwiOmNhc2VcImFsdGVybmF0ZS1yZXZlcnNlXCI6Y2FzZVwiaW5oZXJpdFwiOmNhc2VcImluaXRpYWxcIjpjYXNlXCJ1bnNldFwiOmNhc2VcInN0ZXAtc3RhcnRcIjpjYXNlXCJzdGVwLWVuZFwiOmJyZWFrO2RlZmF1bHQ6cys9SWV9dVtuKytdPXN9bys9KDA9PT1pP1wiXCI6XCIsXCIpK3Uuam9pbihcIiBcIil9fXJldHVybiBvPXIrbytcIjtcIiwxPT09bWV8fDI9PT1tZSYmRmUobywxKT9FK28rbzpvfShkKTtpZigwPT09bWV8fDI9PT1tZSYmIUZlKGQsMSkpcmV0dXJuIGQ7c3dpdGNoKGYpe2Nhc2UgMTAxNTpyZXR1cm4gOTc9PT1kLmNoYXJDb2RlQXQoMTApP0UrZCtkOmQ7Y2FzZSA5NTE6cmV0dXJuIDExNj09PWQuY2hhckNvZGVBdCgzKT9FK2QrZDpkO2Nhc2UgOTYzOnJldHVybiAxMTA9PT1kLmNoYXJDb2RlQXQoNSk/RStkK2Q6ZDtjYXNlIDEwMDk6aWYoMTAwIT09ZC5jaGFyQ29kZUF0KDQpKWJyZWFrO2Nhc2UgOTY5OmNhc2UgOTQyOnJldHVybiBFK2QrZDtjYXNlIDk3ODpyZXR1cm4gRStkK1ArZCtkO2Nhc2UgMTAxOTpjYXNlIDk4MzpyZXR1cm4gRStkK1ArZCtrK2QrZDtjYXNlIDg4MzpyZXR1cm4gZC5jaGFyQ29kZUF0KDgpPT09ej9FK2QrZDpkLmluZGV4T2YoXCJpbWFnZS1zZXQoXCIsMTEpPjA/ZC5yZXBsYWNlKGosXCIkMVwiK0UrXCIkMlwiKStkOmQ7Y2FzZSA5MzI6aWYoZC5jaGFyQ29kZUF0KDQpPT09eilzd2l0Y2goZC5jaGFyQ29kZUF0KDUpKXtjYXNlIDEwMzpyZXR1cm4gRStcImJveC1cIitkLnJlcGxhY2UoXCItZ3Jvd1wiLFwiXCIpK0UrZCtrK2QucmVwbGFjZShcImdyb3dcIixcInBvc2l0aXZlXCIpK2Q7Y2FzZSAxMTU6cmV0dXJuIEUrZCtrK2QucmVwbGFjZShcInNocmlua1wiLFwibmVnYXRpdmVcIikrZDtjYXNlIDk4OnJldHVybiBFK2QraytkLnJlcGxhY2UoXCJiYXNpc1wiLFwicHJlZmVycmVkLXNpemVcIikrZH1yZXR1cm4gRStkK2srZCtkO2Nhc2UgOTY0OnJldHVybiBFK2QraytcImZsZXgtXCIrZCtkO2Nhc2UgMTAyMzppZig5OSE9PWQuY2hhckNvZGVBdCg4KSlicmVhaztyZXR1cm4gcz1kLnN1YnN0cmluZyhkLmluZGV4T2YoXCI6XCIsMTUpKS5yZXBsYWNlKFwiZmxleC1cIixcIlwiKS5yZXBsYWNlKFwic3BhY2UtYmV0d2VlblwiLFwianVzdGlmeVwiKSxFK1wiYm94LXBhY2tcIitzK0UrZCtrK1wiZmxleC1wYWNrXCIrcytkO2Nhc2UgMTAwNTpyZXR1cm4gYS50ZXN0KGQpP2QucmVwbGFjZShvLFwiOlwiK0UpK2QucmVwbGFjZShvLFwiOlwiK1ApK2Q6ZDtjYXNlIDFlMzpzd2l0Y2godT0ocz1kLnN1YnN0cmluZygxMykudHJpbSgpKS5pbmRleE9mKFwiLVwiKSsxLHMuY2hhckNvZGVBdCgwKStzLmNoYXJDb2RlQXQodSkpe2Nhc2UgMjI2OnM9ZC5yZXBsYWNlKHgsXCJ0YlwiKTticmVhaztjYXNlIDIzMjpzPWQucmVwbGFjZSh4LFwidGItcmxcIik7YnJlYWs7Y2FzZSAyMjA6cz1kLnJlcGxhY2UoeCxcImxyXCIpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIGR9cmV0dXJuIEUrZCtrK3MrZDtjYXNlIDEwMTc6aWYoLTE9PT1kLmluZGV4T2YoXCJzdGlja3lcIiw5KSlyZXR1cm4gZDtjYXNlIDk3NTpzd2l0Y2godT0oZD1lKS5sZW5ndGgtMTAsZj0ocz0oMzM9PT1kLmNoYXJDb2RlQXQodSk/ZC5zdWJzdHJpbmcoMCx1KTpkKS5zdWJzdHJpbmcoZS5pbmRleE9mKFwiOlwiLDcpKzEpLnRyaW0oKSkuY2hhckNvZGVBdCgwKSsoMHxzLmNoYXJDb2RlQXQoNykpKXtjYXNlIDIwMzppZihzLmNoYXJDb2RlQXQoOCk8MTExKWJyZWFrO2Nhc2UgMTE1OmQ9ZC5yZXBsYWNlKHMsRStzKStcIjtcIitkO2JyZWFrO2Nhc2UgMjA3OmNhc2UgMTAyOmQ9ZC5yZXBsYWNlKHMsRSsoZj4xMDI/XCJpbmxpbmUtXCI6XCJcIikrXCJib3hcIikrXCI7XCIrZC5yZXBsYWNlKHMsRStzKStcIjtcIitkLnJlcGxhY2UocyxrK3MrXCJib3hcIikrXCI7XCIrZH1yZXR1cm4gZCtcIjtcIjtjYXNlIDkzODppZihkLmNoYXJDb2RlQXQoNSk9PT16KXN3aXRjaChkLmNoYXJDb2RlQXQoNikpe2Nhc2UgMTA1OnJldHVybiBzPWQucmVwbGFjZShcIi1pdGVtc1wiLFwiXCIpLEUrZCtFK1wiYm94LVwiK3MraytcImZsZXgtXCIrcytkO2Nhc2UgMTE1OnJldHVybiBFK2QraytcImZsZXgtaXRlbS1cIitkLnJlcGxhY2UoTSxcIlwiKStkO2RlZmF1bHQ6cmV0dXJuIEUrZCtrK1wiZmxleC1saW5lLXBhY2tcIitkLnJlcGxhY2UoXCJhbGlnbi1jb250ZW50XCIsXCJcIikucmVwbGFjZShNLFwiXCIpK2R9YnJlYWs7Y2FzZSA5NzM6Y2FzZSA5ODk6aWYoZC5jaGFyQ29kZUF0KDMpIT09enx8MTIyPT09ZC5jaGFyQ29kZUF0KDQpKWJyZWFrO2Nhc2UgOTMxOmNhc2UgOTUzOmlmKCEwPT09Xy50ZXN0KGUpKXJldHVybiAxMTU9PT0ocz1lLnN1YnN0cmluZyhlLmluZGV4T2YoXCI6XCIpKzEpKS5jaGFyQ29kZUF0KDApPyRlKGUucmVwbGFjZShcInN0cmV0Y2hcIixcImZpbGwtYXZhaWxhYmxlXCIpLHQsbixyKS5yZXBsYWNlKFwiOmZpbGwtYXZhaWxhYmxlXCIsXCI6c3RyZXRjaFwiKTpkLnJlcGxhY2UocyxFK3MpK2QucmVwbGFjZShzLFArcy5yZXBsYWNlKFwiZmlsbC1cIixcIlwiKSkrZDticmVhaztjYXNlIDk2MjppZihkPUUrZCsoMTAyPT09ZC5jaGFyQ29kZUF0KDUpP2srZDpcIlwiKStkLG4rcj09PTIxMSYmMTA1PT09ZC5jaGFyQ29kZUF0KDEzKSYmZC5pbmRleE9mKFwidHJhbnNmb3JtXCIsMTApPjApcmV0dXJuIGQuc3Vic3RyaW5nKDAsZC5pbmRleE9mKFwiO1wiLDI3KSsxKS5yZXBsYWNlKGksXCIkMVwiK0UrXCIkMlwiKStkfXJldHVybiBkfWZ1bmN0aW9uIEZlKGUsdCl7dmFyIG49ZS5pbmRleE9mKDE9PT10P1wiOlwiOlwie1wiKSxyPWUuc3Vic3RyaW5nKDAsMyE9PXQ/bjoxMCksbz1lLnN1YnN0cmluZyhuKzEsZS5sZW5ndGgtMSk7cmV0dXJuIFNlKDIhPT10P3I6ci5yZXBsYWNlKFMsXCIkMVwiKSxvLHQpfWZ1bmN0aW9uIFdlKGUsdCl7dmFyIG49JGUodCx0LmNoYXJDb2RlQXQoMCksdC5jaGFyQ29kZUF0KDEpLHQuY2hhckNvZGVBdCgyKSk7cmV0dXJuIG4hPT10K1wiO1wiP24ucmVwbGFjZShMLFwiIG9yICgkMSlcIikuc3Vic3RyaW5nKDQpOlwiKFwiK3QrXCIpXCJ9ZnVuY3Rpb24gTmUoZSx0LG4scixvLGEsaSxsLGMscyl7Zm9yKHZhciB1LGQ9MCxmPXQ7ZDxNZTsrK2Qpc3dpdGNoKHU9TGVbZF0uY2FsbChHZSxlLGYsbixyLG8sYSxpLGwsYyxzKSl7Y2FzZSB2b2lkIDA6Y2FzZSExOmNhc2UhMDpjYXNlIG51bGw6YnJlYWs7ZGVmYXVsdDpmPXV9aWYoZiE9PXQpcmV0dXJuIGZ9ZnVuY3Rpb24gemUoZSx0LG4scil7Zm9yKHZhciBvPXQrMTtvPG47KytvKXN3aXRjaChyLmNoYXJDb2RlQXQobykpe2Nhc2UgUTppZihlPT09RyYmci5jaGFyQ29kZUF0KG8tMSk9PT1HJiZ0KzIhPT1vKXJldHVybiBvKzE7YnJlYWs7Y2FzZSBCOmlmKGU9PT1RKXJldHVybiBvKzF9cmV0dXJuIG99ZnVuY3Rpb24gVWUoZSl7Zm9yKHZhciB0IGluIGUpe3ZhciBuPWVbdF07c3dpdGNoKHQpe2Nhc2VcImtleWZyYW1lXCI6UmU9MHxuO2JyZWFrO2Nhc2VcImdsb2JhbFwiOndlPTB8bjticmVhaztjYXNlXCJjYXNjYWRlXCI6Z2U9MHxuO2JyZWFrO2Nhc2VcImNvbXByZXNzXCI6eWU9MHxuO2JyZWFrO2Nhc2VcInNlbWljb2xvblwiOmJlPTB8bjticmVhaztjYXNlXCJwcmVzZXJ2ZVwiOnhlPTB8bjticmVhaztjYXNlXCJwcmVmaXhcIjpTZT1udWxsLG4/XCJmdW5jdGlvblwiIT10eXBlb2Ygbj9tZT0xOihtZT0yLFNlPW4pOm1lPTB9fXJldHVybiBVZX1mdW5jdGlvbiBHZSh0LG4pe2lmKHZvaWQgMCE9PXRoaXMmJnRoaXMuY29uc3RydWN0b3I9PT1HZSlyZXR1cm4gZSh0KTt2YXIgbz10LGE9by5jaGFyQ29kZUF0KDApO2E8MzMmJihhPShvPW8udHJpbSgpKS5jaGFyQ29kZUF0KDApKSxSZT4wJiYoSWU9by5yZXBsYWNlKHAsYT09PUE/XCJcIjpcIi1cIikpLGE9MSwxPT09Z2U/QWU9bzpaZT1vO3ZhciBpLGw9W0FlXTtNZT4wJiZ2b2lkIDAhPT0oaT1OZShqZSxuLGwsbCxDZSxoZSwwLDAsMCwwKSkmJlwic3RyaW5nXCI9PXR5cGVvZiBpJiYobj1pKTt2YXIgYz1EZShPZSxsLG4sMCwwKTtyZXR1cm4gTWU+MCYmdm9pZCAwIT09KGk9TmUoX2UsYyxsLGwsQ2UsaGUsYy5sZW5ndGgsMCwwLDApKSYmXCJzdHJpbmdcIiE9dHlwZW9mKGM9aSkmJihhPTApLEllPVwiXCIsQWU9XCJcIixaZT1cIlwiLHZlPTAsQ2U9MSxoZT0xLHllKmE9PTA/YzpjLnJlcGxhY2UocixcIlwiKS5yZXBsYWNlKGcsXCJcIikucmVwbGFjZShtLFwiJDFcIikucmVwbGFjZSh3LFwiJDFcIikucmVwbGFjZSh5LFwiIFwiKX1yZXR1cm4gR2UudXNlPWZ1bmN0aW9uIGUodCl7c3dpdGNoKHQpe2Nhc2Ugdm9pZCAwOmNhc2UgbnVsbDpNZT1MZS5sZW5ndGg9MDticmVhaztkZWZhdWx0OmlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpTGVbTWUrK109dDtlbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiB0KWZvcih2YXIgbj0wLHI9dC5sZW5ndGg7bjxyOysrbillKHRbbl0pO2Vsc2UgVmU9MHwhIXR9cmV0dXJuIGV9LEdlLnNldD1VZSx2b2lkIDAhPT10JiZVZSh0KSxHZX0obnVsbCl9fSx0PXt9O2Z1bmN0aW9uIG4ocil7dmFyIG89dFtyXTtpZih2b2lkIDAhPT1vKXJldHVybiBvLmV4cG9ydHM7dmFyIGE9dFtyXT17ZXhwb3J0czp7fX07cmV0dXJuIGVbcl0oYSxhLmV4cG9ydHMsbiksYS5leHBvcnRzfW4ubj1lPT57dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlPygpPT5lLmRlZmF1bHQ6KCk9PmU7cmV0dXJuIG4uZCh0LHthOnR9KSx0fSxuLmQ9KGUsdCk9Pntmb3IodmFyIHIgaW4gdCluLm8odCxyKSYmIW4ubyhlLHIpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9LG4uZz1mdW5jdGlvbigpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBnbG9iYWxUaGlzKXJldHVybiBnbG9iYWxUaGlzO3RyeXtyZXR1cm4gdGhpc3x8bmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKX1jYXRjaChlKXtpZihcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93KXJldHVybiB3aW5kb3d9fSgpLG4ubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCksbi5yPWU9PntcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSxuLm5jPXZvaWQgMDt2YXIgcj17fTsoKCk9PntcInVzZSBzdHJpY3RcIjt2YXIgZSx0LG8sYSxpLGwsYyxzO24ucihyKSxuLmQocix7QXBwTWFuaWZlc3RUeXBlOigpPT5jLEJyb3dzZXJCdXR0b25UeXBlOigpPT5nLENvbG9yU2NoZW1lT3B0aW9uVHlwZTooKT0+aCxDdXN0b21BY3Rpb25DYWxsZXJUeXBlOigpPT53LEdsb2JhbENvbnRleHRNZW51T3B0aW9uVHlwZTooKT0+cCxQYWdlVGFiQ29udGV4dE1lbnVPcHRpb25UeXBlOigpPT5DLFBhbmVsUG9zaXRpb246KCk9PmYsU2F2ZUJ1dHRvbkNvbnRleHRNZW51T3B0aW9uVHlwZTooKT0+bSxTYXZlTW9kYWxUeXBlOigpPT55LFZpZXdUYWJNZW51T3B0aW9uVHlwZTooKT0+dixnZXRDdXJyZW50U3luYzooKT0+dG4saW5pdDooKT0+Vm8sd3JhcFN5bmM6KCk9PmVufSksZnVuY3Rpb24oZSl7ZS5GZXRjaGluZz1cImZldGNoaW5nXCIsZS5GZXRjaGVkPVwiZmV0Y2hlZFwiLGUuQ29tcGxldGU9XCJjb21wbGV0ZVwifShlfHwoZT17fSkpLGZ1bmN0aW9uKGUpe2UuVXNlckFjdGlvbj1cInVzZXItYWN0aW9uXCIsZS5Gb2N1c0NoYW5nZT1cImZvY3VzLWNoYW5nZVwiLGUuUmVsb2FkPVwicmVsb2FkXCJ9KHR8fCh0PXt9KSksZnVuY3Rpb24oZSl7ZS5BY3RpdmU9XCJhY3RpdmVcIixlLkRlZmF1bHQ9XCJkZWZhdWx0XCJ9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7ZS5TdWdnZXN0aW9uPVwic3VnZ2VzdGlvblwifShhfHwoYT17fSkpLGZ1bmN0aW9uKGUpe2UuQ29udGFjdD1cIkNvbnRhY3RcIixlLkN1c3RvbT1cIkN1c3RvbVwiLGUuTGlzdD1cIkxpc3RcIixlLlBsYWluPVwiUGxhaW5cIixlLlNpbXBsZVRleHQ9XCJTaW1wbGVUZXh0XCIsZS5Mb2FkaW5nPVwiTG9hZGluZ1wiLGUuRXJyb3I9XCJFcnJvclwifShpfHwoaT17fSkpLGZ1bmN0aW9uKGUpe2UuTXVsdGlTZWxlY3Q9XCJNdWx0aVNlbGVjdFwifShsfHwobD17fSkpLGZ1bmN0aW9uKGUpe2UuU25hcHNob3Q9XCJzbmFwc2hvdFwiLGUuTWFuaWZlc3Q9XCJtYW5pZmVzdFwiLGUuVmlldz1cInZpZXdcIixlLkV4dGVybmFsPVwiZXh0ZXJuYWxcIn0oY3x8KGM9e30pKSxmdW5jdGlvbihlKXtlLkxhbmRpbmdQYWdlPVwibGFuZGluZ1BhZ2VcIixlLkFwcEdyaWQ9XCJhcHBHcmlkXCJ9KHN8fChzPXt9KSk7dmFyIHUsZCxmLHAsaCxDLHYsZyxtLHcseSxiOyFmdW5jdGlvbihlKXtlLlByaW1hcnk9XCJwcmltYXJ5XCIsZS5TZWNvbmRhcnk9XCJzZWNvbmRhcnlcIixlLlRleHRPbmx5PVwidGV4dE9ubHlcIn0odXx8KHU9e30pKSxmdW5jdGlvbihlKXtlLkFjdGlvbkJ1dHRvbj1cIkFjdGlvbkJ1dHRvblwiLGUuRHJvcGRvd25CdXR0b249XCJEcm9wZG93bkJ1dHRvblwifShkfHwoZD17fSkpLGZ1bmN0aW9uKGUpe2UuTGVmdD1cIkxlZnRcIixlLlJpZ2h0PVwiUmlnaHRcIixlLlRvcD1cIlRvcFwiLGUuQm90dG9tPVwiQm90dG9tXCJ9KGZ8fChmPXt9KSksZnVuY3Rpb24oZSl7ZS5OZXdXaW5kb3c9XCJOZXdXaW5kb3dcIixlLk5ld1BhZ2U9XCJOZXdQYWdlXCIsZS5TYXZlUGFnZT1cIlNhdmVQYWdlXCIsZS5TYXZlUGFnZUFzPVwiU2F2ZVBhZ2VBc1wiLGUuUHJpbnQ9XCJQcmludFwiLGUuUHJpbnRBbGw9XCJQcmludEFsbFwiLGUuUHJpbnRTY3JlZW49XCJQcmludFNjcmVlblwiLGUuQ2xvc2VXaW5kb3c9XCJDbG9zZVdpbmRvd1wiLGUuUmVzdG9yZUNoYW5nZXM9XCJSZXN0b3JlQ2hhbmdlc1wiLGUuU2F2ZVdvcmtzcGFjZT1cIlNhdmVXb3Jrc3BhY2VcIixlLlNhdmVXb3Jrc3BhY2VBcz1cIlNhdmVXb3Jrc3BhY2VBc1wiLGUuUmVuYW1lV29ya3NwYWNlPVwiUmVuYW1lV29ya3NwYWNlXCIsZS5Td2l0Y2hXb3Jrc3BhY2U9XCJTd2l0Y2hXb3Jrc3BhY2VcIixlLkRlbGV0ZVdvcmtzcGFjZT1cIkRlbGV0ZVdvcmtzcGFjZVwiLGUuT3BlblN0b3JlZnJvbnQ9XCJPcGVuU3RvcmVmcm9udFwiLGUuQXBwZWFyYW5jZT1cIkFwcGVhcmFuY2VcIixlLlF1aXQ9XCJRdWl0XCIsZS5DdXN0b209XCJDdXN0b21cIn0ocHx8KHA9e30pKSxmdW5jdGlvbihlKXtlLkxpZ2h0PVwibGlnaHRcIixlLkRhcms9XCJkYXJrXCIsZS5TeXN0ZW09XCJzeXN0ZW1cIn0oaHx8KGg9e30pKSxmdW5jdGlvbihlKXtlLkNsb3NlPVwiQ2xvc2VcIixlLkR1cGxpY2F0ZT1cIkR1cGxpY2F0ZVwiLGUuUmVuYW1lPVwiUmVuYW1lXCIsZS5TYXZlPVwiU2F2ZVwiLGUuU2F2ZUFzPVwiU2F2ZSBBc1wiLGUuQ3VzdG9tPVwiQ3VzdG9tXCJ9KEN8fChDPXt9KSksZnVuY3Rpb24oZSl7ZS5OZXdWaWV3PVwiTmV3Vmlld1wiLGUuRHVwbGljYXRlVmlld3M9XCJEdXBsaWNhdGVWaWV3XCIsZS5PcGVuV2l0aERlZmF1bHRCcm93c2VyPVwiT3BlbldpdGhEZWZhdWx0QnJvd3NlclwiLGUuUmVsb2FkVmlld3M9XCJSZWxvYWRUYWJcIixlLkNsb3NlVmlld3M9XCJDbG9zZVRhYlwiLGUuQWRkVG9DaGFubmVsPVwiQWRkVG9DaGFubmVsXCIsZS5SZW1vdmVGcm9tQ2hhbm5lbD1cIlJlbW92ZUZyb21DaGFubmVsXCIsZS5CYWNrPVwiQmFja1wiLGUuRm9yd2FyZD1cIkZvcndhcmRcIixlLlByaW50PVwiUHJpbnRcIixlLlByaW50QWxsPVwiUHJpbnRBbGxcIixlLlByaW50U2NyZWVuPVwiUHJpbnRTY3JlZW5cIixlLkN1c3RvbT1cIkN1c3RvbVwifSh2fHwodj17fSkpLGZ1bmN0aW9uKGUpe2UuU2hvd0hpZGVUYWJzPVwiU2hvd0hpZGVUYWJzXCIsZS5Db2xvckxpbmtpbmc9XCJDb2xvckxpbmtpbmdcIixlLlByZXNldExheW91dHM9XCJQcmVzZXRMYXlvdXRzXCIsZS5Mb2NrVW5sb2NrUGFnZT1cIkxvY2tVbmxvY2tQYWdlXCIsZS5TYXZlTWVudT1cIlNhdmVNZW51XCIsZS5TYXZlUGFnZT1cIlNhdmVQYWdlXCIsZS5NaW5pbWlzZT1cIk1pbmltaXNlXCIsZS5NYXhpbWlzZT1cIk1heGltaXNlXCIsZS5DbG9zZT1cIkNsb3NlXCIsZS5DdXN0b209XCJDdXN0b21cIn0oZ3x8KGc9e30pKSxmdW5jdGlvbihlKXtlLlNhdmVQYWdlPVwiU2F2ZVBhZ2VcIixlLlNhdmVXb3Jrc3BhY2U9XCJTYXZlV29ya3NwYWNlXCIsZS5TYXZlUGFnZUFzPVwiU2F2ZVBhZ2VBc1wiLGUuU2F2ZVdvcmtzcGFjZUFzPVwiU2F2ZVdvcmtzcGFjZUFzXCIsZS5DdXN0b209XCJDdXN0b21cIn0obXx8KG09e30pKSxmdW5jdGlvbihlKXtlLkN1c3RvbUJ1dHRvbj1cIkN1c3RvbUJ1dHRvblwiLGUuU3RvcmVDdXN0b21CdXR0b249XCJTdG9yZUN1c3RvbUJ1dHRvblwiLGUuQ3VzdG9tRHJvcGRvd25JdGVtPVwiQ3VzdG9tRHJvcGRvd25JdGVtXCIsZS5HbG9iYWxDb250ZXh0TWVudT1cIkdsb2JhbENvbnRleHRNZW51XCIsZS5WaWV3VGFiQ29udGV4dE1lbnU9XCJWaWV3VGFiQ29udGV4dE1lbnVcIixlLlBhZ2VUYWJDb250ZXh0TWVudT1cIlBhZ2VUYWJDb250ZXh0TWVudVwiLGUuU2F2ZUJ1dHRvbkNvbnRleHRNZW51PVwiU2F2ZUJ1dHRvbkNvbnRleHRNZW51XCIsZS5BUEk9XCJBUElcIn0od3x8KHc9e30pKSxmdW5jdGlvbihlKXtlLlNBVkVfUEFHRT1cIlNBVkVfUEFHRVwiLGUuU0FWRV9XT1JLU1BBQ0U9XCJTQVZFX1dPUktTUEFDRVwiLGUuU0FWRV9QQUdFX0FTPVwiU0FWRV9QQUdFX0FTXCIsZS5TQVZFX1dPUktTUEFDRV9BUz1cIlNBVkVfV09SS1NQQUNFX0FTXCIsZS5SRU5BTUVfUEFHRT1cIlJFTkFNRV9QQUdFXCIsZS5SRU5BTUVfV09SS1NQQUNFPVwiUkVOQU1FX1dPUktTUEFDRVwifSh5fHwoeT17fSkpLGZ1bmN0aW9uKGUpe2UuTG9jYWw9XCJsb2NhbFwiLGUuRGV2PVwiZGV2XCIsZS5TdGFnaW5nPVwic3RhZ2luZ1wiLGUuUHJvZD1cInByb2RcIn0oYnx8KGI9e30pKTtjb25zdCB4PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBmaW4sTz0oXCJ1bmRlZmluZWRcIj09dHlwZW9mIHByb2Nlc3N8fHByb2Nlc3MuZW52Py5KRVNUX1dPUktFUl9JRCxcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93KSxMPU8mJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBpbmRleGVkREIsTT1PP3dpbmRvdy5vcmlnaW46Yi5Mb2NhbCxTPXgmJmZpbi5tZS51dWlkLF89eCYmZmluLm1lLm5hbWUsaj14JiZmaW4ubWUuZW50aXR5VHlwZSxFPShiLkxvY2FsLGIuRGV2LGIuU3RhZ2luZyxcInByb2RcIj09PWIuUHJvZCksUD1lPT5lLnN0YXJ0c1dpdGgoXCJodHRwOi8vXCIpfHxlLnN0YXJ0c1dpdGgoXCJodHRwczovL1wiKT9lOk0rZSxrPVAoXCJodHRwczovL3dvcmtzcGFjZS5vcGVuZmluLmNvL3dvcmtzcGFjZS8xNC4wLjIyXCIpLEg9UChcImh0dHBzOi8vd29ya3NwYWNlLm9wZW5maW4uY28vd29ya3NwYWNlLzE0LjAuMjJcIiksVj0oXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFdPUktTUEFDRV9ET0NTX1BMQVRGT1JNX1VSTCYmUChXT1JLU1BBQ0VfRE9DU19QTEFURk9STV9VUkwpLFwidW5kZWZpbmVkXCIhPXR5cGVvZiBXT1JLU1BBQ0VfRE9DU19DTElFTlRfVVJMJiZQKFdPUktTUEFDRV9ET0NTX0NMSUVOVF9VUkwpLFwiMzIuMTE0Ljc2LjEwXCIpLFI9XCIxNC4wLjIyXCI7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFdPUktTUEFDRV9CVUlMRF9TSEEmJldPUktTUEFDRV9CVUlMRF9TSEE7dmFyIEksWjshZnVuY3Rpb24oZSl7ZS5Xb3Jrc3BhY2U9XCJvcGVuZmluLXdvcmtzcGFjZVwiLGUuT2xkV29ya3NwYWNlPVwib3BlbmZpbi1icm93c2VyXCJ9KEl8fChJPXt9KSksZnVuY3Rpb24oZSl7ZS5GaW5Qcm90b2NvbD1cImZpbi1wcm90b2NvbFwifShafHwoWj17fSkpO2NvbnN0IEE9e3V1aWQ6U30sRD0oSS5Xb3Jrc3BhY2UsZT0+e2lmKCF4KXRocm93IG5ldyBFcnJvcihcImdldEFwcGxpY2F0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGEgbm9uIE9wZW5GaW4gZW52LiBBdm9pZCB1c2luZyB0aGlzIGR1cmluZyBwcmUtcmVuZGVyaW5nLlwiKTtyZXR1cm4gZmluLkFwcGxpY2F0aW9uLndyYXBTeW5jKGUpfSksQj0oKT0+RChBKTt2YXIgVDshZnVuY3Rpb24oZSl7ZS5Ib21lPVwib3BlbmZpbi1ob21lXCIsZS5Eb2NrPVwib3BlbmZpbi1kb2NrXCIsZS5TdG9yZWZyb250PVwib3BlbmZpbi1zdG9yZWZyb250XCIsZS5Ib21lSW50ZXJuYWw9XCJvcGVuZmluLWhvbWUtaW50ZXJuYWxcIixlLkJyb3dzZXJNZW51PVwib3BlbmZpbi1icm93c2VyLW1lbnVcIixlLkJyb3dzZXJJbmRpY2F0b3I9XCJvcGVuZmluLWJyb3dzZXItaW5kaWNhdG9yXCIsZS5Ccm93c2VyV2luZG93PVwiaW50ZXJuYWwtZ2VuZXJhdGVkLXdpbmRvd1wiLGUuQ2xhc3NpY1dpbmRvdz1cImludGVybmFsLWdlbmVyYXRlZC1jbGFzc2ljLXdpbmRvd1wifShUfHwoVD17fSkpO2NvbnN0ICQ9ZT0+KHtsZWZ0OihlLmxlZnQrKGUucmlnaHQ/P2UubGVmdCtlLndpZHRoKSkvMix0b3A6KGUudG9wKyhlLmJvdHRvbT8/ZS50b3ArZS5oZWlnaHQpKS8yfSk7ZnVuY3Rpb24gRihlKXtpZigheCl0aHJvdyBuZXcgRXJyb3IoXCJnZXRPRldpbmRvdyBjYW4gb25seSBiZSB1c2VkIGluIGFuIE9wZW5GaW4gZW52LiBBdm9pZCBjYWxsaW5nIHRoaXMgbWV0aG9kIGR1cmluZyBwcmUtcmVuZGVyaW5nLlwiKTtyZXR1cm4gZmluLldpbmRvdy53cmFwU3luYyhlKX1jb25zdCBXPXtuYW1lOl8sdXVpZDpTfTtmdW5jdGlvbiBOKCl7cmV0dXJuIEYoVyl9Y29uc3Qgej17bmFtZTpULkhvbWUsdXVpZDpJLldvcmtzcGFjZX0sVT0oVC5Eb2NrLEkuV29ya3NwYWNlLHtuYW1lOlQuU3RvcmVmcm9udCx1dWlkOkkuV29ya3NwYWNlfSk7SS5Xb3Jrc3BhY2UsSS5Xb3Jrc3BhY2U7YXN5bmMgZnVuY3Rpb24gRyhlKXtjb25zdCB0PUYoZSk7XCJtaW5pbWl6ZWRcIj09PWF3YWl0IHQuZ2V0U3RhdGUoKSYmYXdhaXQgdC5yZXN0b3JlKCksYXdhaXQgdC5zaG93KCksYXdhaXQgdC5zZXRBc0ZvcmVncm91bmQoKX1jb25zdCBxPWFzeW5jIGU9PntpZighZS5uYW1lLnN0YXJ0c1dpdGgoVC5Ccm93c2VyV2luZG93KSlyZXR1cm4hMTtjb25zdCB0PWF3YWl0IGZpbi5XaW5kb3cud3JhcFN5bmMoe25hbWU6ZS5uYW1lLHV1aWQ6ZS51dWlkPz9maW4ubWUudXVpZH0pLmdldE9wdGlvbnMoKTtyZXR1cm4hIXQud29ya3NwYWNlUGxhdGZvcm0/LnBhZ2VzfTthc3luYyBmdW5jdGlvbiBZKCl7Y29uc3QgZT1hd2FpdCBmaW4uQXBwbGljYXRpb24uZ2V0Q3VycmVudFN5bmMoKS5nZXRDaGlsZFdpbmRvd3MoKSx0PWF3YWl0IFByb21pc2UuYWxsKGUubWFwKChhc3luYyBlPT5xKGUuaWRlbnRpdHkpKSkpO3JldHVybiBlLmZpbHRlcigoKGUsbik9PnRbbl0pKX1hc3luYyBmdW5jdGlvbiBLKCl7cmV0dXJuKGF3YWl0IGZpbi5BcHBsaWNhdGlvbi5nZXRDdXJyZW50U3luYygpLmdldENoaWxkV2luZG93cygpKS5maWx0ZXIoKGU9PmUuaWRlbnRpdHkubmFtZS5zdGFydHNXaXRoKFQuQnJvd3Nlck1lbnUpKSl9Y29uc3QgWD1lPT5GKGUpLmdldE9wdGlvbnMoKS50aGVuKCgoKT0+ITApKS5jYXRjaCgoKCk9PiExKSksUT0oKT0+WChVKTt2YXIgSjshZnVuY3Rpb24oZSl7ZS5Ccm93c2VyPVwiQnJvd3NlclwiLGUuRG9jaz1cIkRvY2tcIixlLkhvbWU9XCJIb21lXCIsZS5Ob3RpZmljYXRpb249XCJOb3RpZmljYXRpb25cIixlLlN0b3JlZnJvbnQ9XCJTdG9yZWZyb250XCIsZS5QbGF0Zm9ybT1cIlBsYXRmb3JtXCIsZS5UaGVtaW5nPVwiVGhlbWluZ1wiLGUuTWljcm9mbG93PVwiTWljcm9mbG93XCJ9KEp8fChKPXt9KSk7Y29uc3QgZWU9YXN5bmMoZSx0KT0+e2NvbnN0IG49e2FwaVZlcnNpb246dC5hcGlWZXJzaW9ufHxSLGNvbXBvbmVudE5hbWU6ZSxjb21wb25lbnRWZXJzaW9uOnQuY29tcG9uZW50VmVyc2lvbnx8UixhbGxvd2VkOnQuYWxsb3dlZCxyZWplY3Rpb25Db2RlOnQucmVqZWN0aW9uQ29kZX07ZmluLlN5c3RlbS5yZWdpc3RlclVzYWdlKHt0eXBlOlwid29ya3NwYWNlLWxpY2Vuc2luZ1wiLGRhdGE6bn0pfTtsZXQgdGU9ITE7dmFyIG5lOyFmdW5jdGlvbihlKXtlLkJyb3dzZXI9XCJCcm93c2VyXCIsZS5Eb2NrPVwiRG9ja1wiLGUuSG9tZT1cIkhvbWVcIixlLk5vdGlmaWNhdGlvbj1cIk5vdGlmaWNhdGlvblwiLGUuU3RvcmVmcm9udD1cIlN0b3JlZnJvbnRcIixlLlBsYXRmb3JtPVwiUGxhdGZvcm1cIixlLlRoZW1pbmc9XCJUaGVtaW5nXCIsZS5JbnRlcm9wPVwiSW50ZXJvcFwifShuZXx8KG5lPXt9KSk7Y29uc3QgcmU9bmV3IE1hcCxvZT1lPT57bGV0IHQ9cmUuZ2V0KGUudXVpZCk7cmV0dXJuIHR8fCh0PWVuKGUpLHQub25jZShcImNsb3NlZFwiLCgoKT0+e3JlLmRlbGV0ZShlLnV1aWQpfSkpLHJlLnNldChlLnV1aWQsdCkpLHR9LGFlPWFzeW5jKGUsdCk9Pnt0cnl7YXdhaXQgZS5fcmFpc2VBbmFseXRpY3MoW3RdKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKFwiZmFpbGVkIHRvIHJhaXNlIGFuYWx5dGljcyBldmVudFwiLGUpfX0saWU9YXN5bmMgZT0+e2F3YWl0IGFlKG9lKGZpbi5tZS5pZGVudGl0eSkse3NvdXJjZTpuZS5Ccm93c2VyLC4uLmV9KX07bigzNzgpO2NvbnN0IGxlPWU9PmZpbi5TeXN0ZW0uZ2V0U3lzdGVtQXBwQ29uZmlnKGUpO2xldCBjZTthc3luYyBmdW5jdGlvbiBzZSgpe2lmKGNlKXJldHVybiBjZTtjb25zdCBlPVwiZ2V0T3ZlcnJpZGVzXCI7aWYoIXgpcmV0dXJuIE8mJmNvbnNvbGUud2FybihgJHtlfTogVGhlIEZpbiBBUEkgd2FzIG5vdCBhdmFpbGFibGUuIFJldHVybmluZyBhbiBlbXB0eSByZXN1bHQuYCkse307Y29uc3QgdD1hd2FpdCBhc3luYyBmdW5jdGlvbigpe2NvbnN0IGU9XCJnZXRET1NPdmVycmlkZXNcIjtpZigheClyZXR1cm4gY29uc29sZS53YXJuKGAke2V9OiB0aGUgZmluIEFQSSB3YXMgbm90IGF2YWlsYWJsZSwgcmV0dXJuaW5nIG5vIHJlc3VsdGApLHt9O3RyeXtsZXQgdD1hd2FpdCBsZShcIndvcmtzcGFjZVwiKS5jYXRjaCgodD0+e2NvbnNvbGUud2FybihgJHtlfTogY3VzdG9tQ29uZmlnIGVudHJ5IGZvciBTeXN0ZW1BcHAgd29ya3NwYWNlIG5vdCBhdmFpbGFibGUgaW4gRGVza3RvcCBPd25lciBTZXR0aW5ncy4gJHt0Py5tZXNzYWdlfWApfSkpO3JldHVybiB0fHwodD1hd2FpdCBsZShcImhvbWVcIikpLEpTT04uc3RyaW5naWZ5KHQpLHR9Y2F0Y2godCl7aWYoIUUpcmV0dXJue307aWYoISh0IGluc3RhbmNlb2YgRXJyb3IpKXRocm93IHQ7Y29uc29sZS53YXJuKGAke2V9OiBNaXNzaW5nIFdvcmtzcGFjZSBEZXNrdG9wIE93bmVyIFNldHRpbmdzIGNvbmZpZ3VyYXRpb24sIHVzaW5nIGRlZmF1bHRzLiAke3Q/Lm1lc3NhZ2V9YCl9cmV0dXJue319KCksbj1hd2FpdCBhc3luYyBmdW5jdGlvbigpe2NvbnN0IGU9XCJnZXRNYW5pZmVzdE92ZXJyaWRlc1wiLHttYW5pZmVzdDp0LGluaXRpYWxPcHRpb25zOm59PWF3YWl0IGZpbi5BcHBsaWNhdGlvbi5nZXRDdXJyZW50U3luYygpLmdldEluZm8oKTtyZXR1cm4gdD8ud29ya3NwYWNlfHx0Py5ob21lfHxuPy53b3Jrc3BhY2V8fG4/LmhvbWV8fGNvbnNvbGUud2FybihgJHtlfTogTWlzc2luZyBIb21lIGRldmVsb3BtZW50IG1hbmlmZXN0IG92ZXJyaWRlcywgdXNpbmcgRGVza3RvcCBPd25lciBTZXR0aW5ncy5gKSx0Py53b3Jrc3BhY2U/KEpTT04uc3RyaW5naWZ5KHQ/LndvcmtzcGFjZSksdD8ud29ya3NwYWNlKTp0Py5ob21lPyhKU09OLnN0cmluZ2lmeSh0Py5ob21lKSx0Py5ob21lKTpuPy53b3Jrc3BhY2U/KEpTT04uc3RyaW5naWZ5KG4/LndvcmtzcGFjZSksbj8ud29ya3NwYWNlKTpuPy5ob21lPyhKU09OLnN0cmluZ2lmeShuPy5ob21lKSxuPy5ob21lKTp7fX0oKTtyZXR1cm4gY2U9ey4uLm4sLi4udH0sY2V9bGV0IHVlO2NvbnN0IGRlPWFzeW5jIGU9Pnt1ZXx8KHVlPW5ldyBUZXh0RW5jb2Rlcik7Y29uc3QgdD11ZS5lbmNvZGUoZSksbj1hd2FpdCB3aW5kb3cuY3J5cHRvLnN1YnRsZS5kaWdlc3QoXCJTSEEtMjU2XCIsdCk7cmV0dXJuIEFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkobikpLm1hcCgoZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMixcIjBcIikpKS5qb2luKFwiXCIpfTtmdW5jdGlvbiBmZShlKXtyZXR1cm4gZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJiFBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIHBlKGUsLi4udCl7aWYoIXQubGVuZ3RoKXJldHVybiBlO2NvbnN0IG49dC5zaGlmdCgpO3JldHVybiBmZShlKSYmZmUobikmJk9iamVjdC5lbnRyaWVzKG4pLmZvckVhY2goKChbdCxuXSk9PntpZihmZShuKSlyZXR1cm4gZVt0XXx8KGVbdF09e30pLHBlKGVbdF0sbik7ZVt0XT1ufSkpLHBlKGUsLi4udCl9dmFyIGhlOyFmdW5jdGlvbihlKXtlLkhvbWU9XCIvaG9tZS9cIixlLkhvbWVTZWFyY2g9XCIvaG9tZS8/ZGVlcGxpbms9c2VhcmNoXCIsZS5Ib21lUGFnZXNSZW5hbWU9XCIvaG9tZS9wYWdlcy9yZW5hbWUvXCIsZS5Eb2NrPVwiL2RvY2svXCIsZS5Ccm93c2VyPVwiL2Jyb3dzZXIvXCIsZS5Ccm93c2VyUG9wdXBNZW51PVwiL2Jyb3dzZXIvcG9wdXAtbWVudS9cIixlLlByb3ZpZGVyPVwiL3Byb3ZpZGVyL1wiLGUuQnJvd3NlclBvcHVwTWVudVNoYXJlUGFnZT1cIi9icm93c2VyL3BvcHVwLW1lbnUvc2hhcmUtcGFnZS9cIixlLkJyb3dzZXJQb3B1cE1lbnVTYXZlTW9kYWw9XCIvYnJvd3Nlci9wb3B1cC1tZW51L3NhdmUtbW9kYWwvXCIsZS5Ccm93c2VyUG9wdXBNZW51TGF5b3V0cz1cIi9icm93c2VyL3BvcHVwLW1lbnUvbGF5b3V0cy9sYXlvdXRzL1wiLGUuQnJvd3NlclBvcHVwTWVudUNvbG9yTGlua2luZz1cIi9icm93c2VyL3BvcHVwLW1lbnUvY29sb3ItbGlua2luZy9jb2xvci1saW5raW5nL1wiLGUuQnJvd3NlckluZGljYXRvcj1cIi9icm93c2VyL2luZGljYXRvci9cIixlLlJlc3BvbnNlTW9kYWw9XCIvYnJvd3Nlci9wb3B1cC1tZW51L3Jlc3BvbnNlLW1vZGFsL1wiLGUuRG9jcz1cIi9wcm92aWRlci9kb2NzL1wiLGUuU3RvcmVmcm9udD1cIi9zdG9yZWZyb250L1wiLGUuRGVwcmVjYXRlZEFsZXJ0PVwiL3Byb3ZpZGVyL2RlcHJlY2F0ZWQtYWxlcnQvXCIsZS5BbmFseXRpY3M9XCIvcHJvdmlkZXIvYW5hbHl0aWNzL1wifShoZXx8KGhlPXt9KSk7dmFyIENlOyFmdW5jdGlvbihlKXtlLlNlYXJjaD1cInNlYXJjaFwifShDZXx8KENlPXt9KSk7Y29uc3QgdmU9aGUsZ2U9TyYmXCJjb21wbGV0ZVwiIT09ZG9jdW1lbnQucmVhZHlTdGF0ZSYmbmV3IFByb21pc2UoKGU9PmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJyZWFkeXN0YXRlY2hhbmdlXCIsKCgpPT57XCJjb21wbGV0ZVwiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSYmZSgpfSkpKSk7ZnVuY3Rpb24gbWUoZSl7bGV0IHQ7Y29uc3Qgbj1uZXcgU2V0O3JldHVybigpPT57aWYoIXgpdGhyb3cgbmV3IEVycm9yKFwiZ2V0Q2hhbm5lbENsaWVudCBjYW5ub3QgYmUgdXNlZCBvdXRzaWRlIGFuIE9wZW5GaW4gZW52LiBBdm9pZCB1c2luZyB0aGlzIG1ldGhvZCBkdXJpbmcgcHJlLXJlbmRlcmluZy5cIik7cmV0dXJuIHR8fCh0PShhc3luYygpPT57YXdhaXQgZ2U7Y29uc3Qgcj17Y2xpZW50QVBJVmVyc2lvbjpSfSxvPWF3YWl0IGZpbi5JbnRlckFwcGxpY2F0aW9uQnVzLkNoYW5uZWwuY29ubmVjdChlLHtwYXlsb2FkOnJ9KTtyZXR1cm4gby5vbkRpc2Nvbm5lY3Rpb24oKGFzeW5jKCk9PntuLmZvckVhY2goKGU9PmUoKSkpLG4uY2xlYXIoKSxjb25zb2xlLndhcm4oYGRpc2Nvbm5lY3RlZCBmcm9tIGNoYW5uZWwgcHJvdmlkZXIgJHtlfWApLHQ9dm9pZCAwfSkpLG99KSgpLnRoZW4oKGU9PihlLmFkZERpc2Nvbm5lY3Rpb25MaXN0ZW5lcj1lPT57bi5hZGQoZSl9LGUpKSkuY2F0Y2goKG49Pnt0aHJvdyB0PXZvaWQgMCxuZXcgRXJyb3IoYGZhaWxlZCB0byBjb25uZWN0IHRvIGNoYW5uZWwgcHJvdmlkZXIgJHtlfTogJHtufWApfSkpKSx0fX1jb25zdCB3ZT1lPT5gX19icm93c2VyX3dpbmRvd19fLSR7ZS51dWlkfS0ke2UubmFtZX1gLHllPW5ldyBNYXAsYmU9ZT0+e2NvbnN0IHQ9d2UoZSk7cmV0dXJuIHllLmhhcyh0KXx8eWUuc2V0KHQsbWUodCkpLHllLmdldCh0KSgpfTt2YXIgeGUsT2U7IWZ1bmN0aW9uKGUpe2UuQ2xvc2VCcm93c2VyV2luZG93PVwiY2xvc2UtYnJvd3Nlci13aW5kb3dcIixlLlF1aXRQbGF0Zm9ybT1cInF1aXQtcGxhdGZvcm1cIixlLkNsb3NlUGFnZT1cImNsb3NlLXBhZ2VcIixlLkFkZFRvQ2hhbm5lbD1cImFkZC10by1jaGFubmVsXCIsZS5SZW1vdmVGcm9tQ2hhbm5lbD1cInJlbW92ZS1mcm9tLWNoYW5uZWxcIixlLk9wZW5TYXZlTW9kYWxJbnRlcm5hbD1cIm9wZW4tc2F2ZS1tb2RhbC1pbnRlcm5hbFwiLGUuRHVwbGljYXRlUGFnZT1cImR1cGxpY2F0ZS1wYWdlXCIsZS5TZXRTZWxlY3RlZFNjaGVtZT1cInNldC1zZWxlY3RlZC1zY2hlbWVcIn0oeGV8fCh4ZT17fSkpLGZ1bmN0aW9uKGUpe2UuR2V0UGFnZXM9XCJnZXQtcGFnZXNcIixlLkdldEFjdGl2ZVBhZ2VGb3JXaW5kb3c9XCJnZXQtYWN0aXZlLXBhZ2UtZm9yLXdpbmRvd1wiLGUuQXR0YWNoUGFnZXNUb1dpbmRvdz1cImF0dGFjaC1wYWdlcy10by13aW5kb3dcIixlLkRldGFjaFBhZ2VzRnJvbVdpbmRvdz1cImRldGFjaC1wYWdlcy1mcm9tLXdpbmRvd1wiLGUuU2V0QWN0aXZlUGFnZUZvcldpbmRvdz1cInNldC1hY3RpdmUtcGFnZS1mb3Itd2luZG93XCIsZS5SZW5hbWVQYWdlPVwicmVuYW1lLXBhZ2VcIixlLlJlb3JkZXJQYWdlc0ZvcldpbmRvdz1cInJlb3JkZXItcGFnZXMtZm9yLXdpbmRvd1wiLGUuVXBkYXRlUGFnZUZvcldpbmRvdz1cInVwZGF0ZS1wYWdlLWZvci13aW5kb3dcIixlLlVwZGF0ZVBhZ2VzV2luZG93T3B0aW9ucz1cInVwZGF0ZS1wYWdlcy13aW5kb3ctb3B0aW9uc1wiLGUuSXNEZXRhY2hpbmdQYWdlcz1cImlzLWRldGFjaGluZy1wYWdlc1wiLGUuSXNBY3RpdmVQYWdlQ2hhbmdpbmc9XCJpcy1hY3RpdmUtcGFnZS1jaGFuZ2luZ1wifShPZXx8KE9lPXt9KSk7Y29uc3QgTGU9ey4uLnhlLC4uLk9lfSxNZT1hc3luYyBlPT57Y29uc3QgdD1hd2FpdCBiZShlKTtyZXR1cm4gYXdhaXQgdC5kaXNwYXRjaChMZS5HZXRQYWdlcyl9LFNlPWFzeW5jIGU9Pihhd2FpdCBiZShlLmlkZW50aXR5KSkuZGlzcGF0Y2goTGUuVXBkYXRlUGFnZUZvcldpbmRvdyxlKTt2YXIgX2U7IWZ1bmN0aW9uKGUpe2UuTGF1bmNoQXBwPVwibGF1bmNoQXBwXCIsZS5TYXZlUGFnZT1cInNhdmVQYWdlXCIsZS5HZXRTYXZlZFBhZ2U9XCJnZXRTYXZlZFBhZ2VcIixlLkNyZWF0ZVNhdmVkUGFnZT1cImNyZWF0ZVNhdmVkUGFnZVwiLGUuVXBkYXRlU2F2ZWRQYWdlPVwidXBkYXRlU2F2ZWRQYWdlXCIsZS5EZWxldGVTYXZlZFBhZ2U9XCJkZWxldGVTYXZlZFBhZ2VcIixlLkdldFNhdmVkUGFnZXM9XCJnZXRTYXZlZFBhZ2VzXCIsZS5DcmVhdGVTYXZlZFBhZ2VJbnRlcm5hbD1cImNyZWF0ZVNhdmVkUGFnZUludGVybmFsXCIsZS5VcGRhdGVTYXZlZFBhZ2VJbnRlcm5hbD1cInVwZGF0ZVNhdmVkUGFnZUludGVybmFsXCIsZS5EZWxldGVTYXZlZFBhZ2VJbnRlcm5hbD1cImRlbGV0ZVNhdmVkUGFnZUludGVybmFsXCIsZS5TaGFyZVBhZ2U9XCJzaGFyZVBhZ2VcIixlLlVwZGF0ZVBhZ2VGb3JXaW5kb3c9XCJ1cGRhdGVQYWdlRm9yV2luZG93XCIsZS5BdHRhY2hQYWdlc1RvV2luZG93PVwiYXR0YWNoUGFnZXNUb1dpbmRvd1wiLGUuRGV0YWNoUGFnZXNGcm9tV2luZG93PVwiZGV0YWNoUGFnZXNGcm9tV2luZG93XCIsZS5SZW9yZGVyUGFnZXNGb3JXaW5kb3c9XCJyZW9yZGVyUGFnZXNGb3JXaW5kb3dcIixlLlNldEFjdGl2ZVBhZ2U9XCJzZXRBY3RpdmVQYWdlXCIsZS5HZXRBbGxBdHRhY2hlZFBhZ2VzPVwiZ2V0QWxsQXR0YWNoZWRQYWdlc1wiLGUuR2V0QWN0aXZlUGFnZUlkRm9yV2luZG93PVwiZ2V0QWN0aXZlUGFnZUlkRm9yV2luZG93XCIsZS5HZXRQYWdlc0ZvcldpbmRvdz1cImdldFBhZ2VzRm9yV2luZG93XCIsZS5HZXRQYWdlRm9yV2luZG93PVwiZ2V0UGFnZUZvcldpbmRvd1wiLGUuR2V0U2F2ZWRQYWdlTWV0YWRhdGE9XCJnZXRTYXZlZFBhZ2VNZXRhZGF0YVwiLGUuR2V0VW5pcXVlUGFnZVRpdGxlPVwiZ2V0VW5pcXVlUGFnZVRpdGxlXCIsZS5HZXRMYXN0Rm9jdXNlZEJyb3dzZXJXaW5kb3c9XCJnZXRMYXN0Rm9jdXNlZEJyb3dzZXJXaW5kb3dcIixlLkdldFRoZW1lcz1cImdldFRoZW1lc1wiLGUuR2V0U2VsZWN0ZWRTY2hlbWU9XCJnZXRTZWxlY3RlZFNjaGVtZVwiLGUuU2V0U2VsZWN0ZWRTY2hlbWU9XCJzZXRTZWxlY3RlZFNjaGVtZVwiLGUuT3Blbkdsb2JhbENvbnRleHRNZW51SW50ZXJuYWw9XCJvcGVuR2xvYmFsQ29udGV4dE1lbnVJbnRlcm5hbFwiLGUuT3BlblZpZXdUYWJDb250ZXh0TWVudUludGVybmFsPVwib3BlblZpZXdUYWJDb250ZXh0TWVudUludGVybmFsXCIsZS5PcGVuUGFnZVRhYkNvbnRleHRNZW51SW50ZXJuYWw9XCJvcGVuUGFnZVRhYkNvbnRleHRNZW51SW50ZXJuYWxcIixlLk9wZW5TYXZlQnV0dG9uQ29udGV4dE1lbnVJbnRlcm5hbD1cIm9wZW5TYXZlQnV0dG9uQ29udGV4dE1lbnVJbnRlcm5hbFwiLGUuSW52b2tlQ3VzdG9tQWN0aW9uSW50ZXJuYWw9XCJpbnZva2VDdXN0b21BY3Rpb25JbnRlcm5hbFwiLGUuUmVxdWVzdFF1aXRQbGF0Zm9ybURpYWxvZ0ludGVybmFsPVwicmVxdWVzdFF1aXRQbGF0Zm9ybURpYWxvZ0ludGVybmFsXCIsZS5HZXRTYXZlZFdvcmtzcGFjZT1cImdldFNhdmVkV29ya3NwYWNlXCIsZS5DcmVhdGVTYXZlZFdvcmtzcGFjZT1cImNyZWF0ZVNhdmVkV29ya3NwYWNlXCIsZS5VcGRhdGVTYXZlZFdvcmtzcGFjZT1cInVwZGF0ZVNhdmVkV29ya3NwYWNlXCIsZS5EZWxldGVTYXZlZFdvcmtzcGFjZT1cImRlbGV0ZVNhdmVkV29ya3NwYWNlXCIsZS5HZXRTYXZlZFdvcmtzcGFjZXM9XCJnZXRTYXZlZFdvcmtzcGFjZXNcIixlLlNhdmVXb3Jrc3BhY2U9XCJzYXZlV29ya3NwYWNlXCIsZS5HZXRDdXJyZW50V29ya3NwYWNlPVwiZ2V0Q3VycmVudFdvcmtzcGFjZVwiLGUuQXBwbHlXb3Jrc3BhY2U9XCJhcHBseVdvcmtzcGFjZVwiLGUuU2V0QWN0aXZlV29ya3NwYWNlPVwic2V0QWN0aXZlV29ya3NwYWNlXCIsZS5Jc0Jyb3dzZXJJbml0aWFsaXplZD1cImlzQnJvd3NlckluaXRpYWxpemVkXCIsZS5BbmFseXRpY3M9XCJhbmFseXRpY3NJbnRlcm5hbFwiLGUuR2V0RG9ja1Byb3ZpZGVyQ29uZmlnPVwiZ2V0RG9ja1Byb3ZpZGVyQ29uZmlnXCIsZS5TYXZlRG9ja1Byb3ZpZGVyQ29uZmlnPVwic2F2ZURvY2tQcm92aWRlckNvbmZpZ1wifShfZXx8KF9lPXt9KSk7Y29uc3QgamU9YXN5bmMgZT0+ZmluLlBsYXRmb3JtLndyYXBTeW5jKGUpLmdldENsaWVudCgpLEVlPWFzeW5jIGU9Pntjb25zdCB0PWF3YWl0IGplKGUpLG49XCJUYXJnZXQgaXMgbm90IGEgV29ya3NwYWNlIFBsYXRmb3JtLiBUYXJnZXQgbXVzdCBjYWxsIFdvcmtzcGFjZVBsYXRmb3JtLmluaXRcIjtsZXQgcjt0cnl7cj1hd2FpdCB0LmRpc3BhdGNoKFwiaXNXb3Jrc3BhY2VQbGF0Zm9ybVwiKX1jYXRjaChlKXt0aHJvdyBuZXcgRXJyb3Iobil9aWYoXCJib29sZWFuXCI9PXR5cGVvZiByJiZyKXJldHVybiBjb25zb2xlLndhcm4oXCJZb3UgYXJlIHVzaW5nIGFuIG9sZGVyIHZlcnNpb24gb2YgdGhlIHdvcmtzcGFjZSBwbGF0Zm9ybS4gUGxlYXNlIHVwZGF0ZSB5b3VyIHdvcmtzcGFjZSBwbGF0Zm9ybS5cIikscjtpZihcIm9iamVjdFwiPT10eXBlb2YgciYmci5pc1dvcmtzcGFjZVBsYXRmb3JtKXJldHVybiByO3Rocm93IG5ldyBFcnJvcihuKX0sUGU9YXN5bmMgZT0+KGF3YWl0IEVlKGUpLGplKGUpKSxrZT1hc3luYyBlPT57Y29uc3QgdD1hd2FpdCBFZShlKTtpZihcIm9iamVjdFwiPT10eXBlb2YgdCYmITAhPT10Py5pc0Jyb3dzZXJJbml0aWFsaXplZCl0aHJvdyBuZXcgRXJyb3IoXCJUYXJnZXQgaXMgbm90IGEgQnJvd3Nlci1lbmFibGVkIFdvcmtzcGFjZSBQbGF0Zm9ybS5cIik7cmV0dXJuIGplKGUpfTtmdW5jdGlvbiBIZSgpe3JldHVybiB2b2lkIDAhPT10eXBlb2YgY3J5cHRvJiZcInJhbmRvbVVVSURcImluIGNyeXB0byYmXCJmdW5jdGlvblwiPT10eXBlb2YgY3J5cHRvLnJhbmRvbVVVSUQ/Y3J5cHRvLnJhbmRvbVVVSUQoKTpcIjEwMDAwMDAwLTEwMDAtNDAwMC04MDAwLTEwMDAwMDAwMDAwMFwiLnJlcGxhY2UoL1swMThdL2csKGU9PihlXmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMSkpWzBdJjE1Pj5lLzQpLnRvU3RyaW5nKDE2KSkpfWNvbnN0IFZlPShlLHQpPT5lLmNvbnRlbnQ/ey4uLmUsY29udGVudDplLmNvbnRlbnQubWFwKChlPT5WZShlLHQpKSl9OnsuLi5lLGNvbXBvbmVudFN0YXRlOnQoZS5jb21wb25lbnRTdGF0ZSl9LFJlPWU9Pih7Li4uZSxuYW1lOmUubmFtZT9lLm5hbWU6YGludGVybmFsLWdlbmVyYXRlZC12aWV3LSR7SGUoKX1gLF9pbnRlcm5hbFdvcmtzcGFjZURhdGE6e3ZpZXdJZGVudGlmaWVyOmUuX2ludGVybmFsV29ya3NwYWNlRGF0YT8udmlld0lkZW50aWZpZXJ8fEhlKCl9fSksSWU9ZT0+e2NvbnN0IHQ9W107cmV0dXJuKGUmJkFycmF5LmlzQXJyYXkoZSk/ZTpbXSkuZm9yRWFjaCgoZT0+e2lmKFwiY29tcG9uZW50XCI9PT1lLnR5cGUpcmV0dXJuIHQucHVzaChlLmNvbXBvbmVudFN0YXRlKTtjb25zdCBuPUllKGUuY29udGVudCk7dC5wdXNoKC4uLm4pfSkpLHR9O25ldyBNYXA7ZnVuY3Rpb24gWmUoZSl7cmV0dXJuIGUubWFwKChlPT57Y29uc3QgdD0obj1lLnZpZXdPcHRpb25zLG4ubmFtZXx8PWBpbnRlcm5hbC1nZW5lcmF0ZWQtdmlldy0ke0hlKCl9YCxuKTt2YXIgbjtyZXR1cm57Li4uZSx2aWV3T3B0aW9uczp7Li4udCx1dWlkOlcudXVpZH19fSkpfWFzeW5jIGZ1bmN0aW9uIEFlKGUpe2Zvcihjb25zdCB0IG9mIGUpdC5wYW5lbHMmJmF3YWl0IEJlKHQucGFuZWxzKX1jb25zdCBEZT1lPT5udWxsIT09ZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJlwibWVzc2FnZVwiaW4gZSYmXCJzdHJpbmdcIj09dHlwZW9mIGUubWVzc2FnZSYmL0VSUl8oW0EtWl0rXyopKy8udGVzdChlLm1lc3NhZ2UpO2FzeW5jIGZ1bmN0aW9uIEJlKGUpe2NvbnN0IHQ9ZS5tYXAoKGU9PmZpbi5QbGF0Zm9ybS5nZXRDdXJyZW50U3luYygpLmNyZWF0ZVZpZXcoZS52aWV3T3B0aW9ucyxmaW4ubWUuaWRlbnRpdHkpLmNhdGNoKChlPT57aWYoIURlKGUpKXRocm93IGU7Y29uc29sZS5lcnJvcihlKX0pKSkpO3JldHVybiBhd2FpdCBQcm9taXNlLmFsbCh0KX1jb25zdCBUZT0oZSx0KT0+IXQuZmluZCgodD0+dD09PWUpKSwkZT0oZSx0KT0+YCR7ZX0gKCR7dH0pYCxGZT0oZSx0KT0+e2lmKFRlKGUsdCkpcmV0dXJuIGU7bGV0IG49MTtjb25zdCByPWUucmVwbGFjZSgvICpcXChcXGQrXFwpJC8sXCJcIik7Zm9yKDshVGUoJGUocixuKSx0KTspbis9MTtyZXR1cm4gJGUocixuKX0sV2U9YXN5bmMoKT0+e2NvbnN0IGU9YXdhaXQgWSgpO3JldHVybihhd2FpdCBQcm9taXNlLmFsbChlLm1hcCgoYXN5bmMgZT0+e3RyeXtyZXR1cm4gTWUoZS5pZGVudGl0eSl9Y2F0Y2godCl7SlNPTi5zdHJpbmdpZnkoZS5pZGVudGl0eSk7Y29uc3Qgbj1hd2FpdCBlLmdldE9wdGlvbnMoKTtyZXR1cm4gbi53b3Jrc3BhY2VQbGF0Zm9ybT8ucGFnZXN8fFtdfX0pKSkpLnJlZHVjZSgoKGUsdCk9PmUuY29uY2F0KHQpKSxbXSl9LE5lPWFzeW5jKCk9Pihhd2FpdCBQZShXKSkuZGlzcGF0Y2goX2UuR2V0U2F2ZWRQYWdlcyx2b2lkIDApLHplPWFzeW5jIGU9Pihhd2FpdCBQZShXKSkuZGlzcGF0Y2goX2UuR2V0U2F2ZWRQYWdlLGUpLFVlPWFzeW5jKGUsdCk9Pntjb25zdCBuPWF3YWl0KGFzeW5jIGU9Pihhd2FpdCBXZSgpKS5maW5kKCh0PT50LnBhZ2VJZD09PWUpKSkoZSk7cmV0dXJuIW58fG4udGl0bGU9PT10LnRpdGxlJiZlPT09dC5wYWdlSWR8fGF3YWl0IFNlKHtpZGVudGl0eTpuLnBhcmVudElkZW50aXR5LHBhZ2VJZDplLHBhZ2U6e3BhZ2VJZDp0LnBhZ2VJZCx0aXRsZTp0LnRpdGxlfX0pLG59LEdlPWFzeW5jKHtwYWdlOmV9KT0+e2F3YWl0IFVlKGUucGFnZUlkLGUpLGF3YWl0KGFzeW5jIGU9Pihhd2FpdCBQZShXKSkuZGlzcGF0Y2goX2UuQ3JlYXRlU2F2ZWRQYWdlLGUpKSh7cGFnZTplfSl9LHFlPWFzeW5jIGU9Pnthd2FpdCB6ZShlKSYmYXdhaXQoYXN5bmMgZT0+KGF3YWl0IFBlKFcpKS5kaXNwYXRjaChfZS5EZWxldGVTYXZlZFBhZ2UsZSkpKGUpfSxZZT1hc3luYyh7cGFnZUlkOmUscGFnZTp0fSk9Pnthd2FpdCBVZShlLHQpO3JldHVybiBhd2FpdChhc3luYyBlPT4oYXdhaXQgUGUoVykpLmRpc3BhdGNoKF9lLlVwZGF0ZVNhdmVkUGFnZSxlKSkoe3BhZ2VJZDplLHBhZ2U6dH0pfSxLZT1hc3luYyBlPT5hd2FpdCB6ZShlLnBhZ2VJZCk/WWUoe3BhZ2VJZDplLnBhZ2VJZCxwYWdlOmV9KTpHZSh7cGFnZTplfSksWGU9YXN5bmMgZT0+e2F3YWl0KGFzeW5jIGU9Pihhd2FpdCBiZShlLmlkZW50aXR5KSkuZGlzcGF0Y2goTGUuQXR0YWNoUGFnZXNUb1dpbmRvdyxlKSkoZSl9LFFlPWFzeW5jIGU9Pntjb25zdCB0PXsuLi5lLnBhZ2UscGFuZWxzOmUucGFnZS5wYW5lbHMmJlplKGUucGFnZS5wYW5lbHMpfTt0LnBhbmVscyYmYXdhaXQgQmUodC5wYW5lbHMpLGF3YWl0IFNlKHsuLi5lLHBhZ2U6dH0pfSxKZT1hc3luYyBlPT57YXdhaXQoYXN5bmMgZT0+KGF3YWl0IGJlKGUuaWRlbnRpdHkpKS5kaXNwYXRjaChMZS5EZXRhY2hQYWdlc0Zyb21XaW5kb3csZSkpKGUpfSxldD1hc3luYyBlPT57YXdhaXQoYXN5bmMgZT0+KGF3YWl0IGJlKGUuaWRlbnRpdHkpKS5kaXNwYXRjaChMZS5TZXRBY3RpdmVQYWdlRm9yV2luZG93LGUpKShlKX0sdHQ9ZT0+TWUoZSksbnQ9YXN5bmMoe2lkZW50aXR5OmUscGFnZUlkOnR9KT0+KGF3YWl0IHR0KGUpKS5maW5kKChlPT5lLnBhZ2VJZD09PXQpKSxydD1hc3luYyBlPT57YXdhaXQoYXN5bmMgZT0+KGF3YWl0IGJlKGUuaWRlbnRpdHkpKS5kaXNwYXRjaChMZS5SZW9yZGVyUGFnZXNGb3JXaW5kb3csZSkpKGUpfTthc3luYyBmdW5jdGlvbiBvdChlPVwiVW50aXRsZWQgUGFnZVwiKXtjb25zdFt0LG5dPWF3YWl0IFByb21pc2UuYWxsKFtOZSgpLFdlKCldKSxyPVsuLi50LC4uLm5dLm1hcCgoKHt0aXRsZTplfSk9PmUpKTtyZXR1cm4gRmUoZSxyKX1jb25zdCBhdD1uZXcgTWFwO2xldCBpdD0hMTtjb25zdCBsdD0oKT0+e2l0fHwoaXQ9ITAsZmluLldpbmRvdy53cmFwU3luYyhVKS5vbmNlKFwiY2xvc2VkXCIsKCgpPT57aXQ9ITEsKGFzeW5jKGUsdCk9Pnthd2FpdCBhZShvZShlKSx7c291cmNlOm5lLlN0b3JlZnJvbnQsLi4udH0pfSkoZmluLm1lLmlkZW50aXR5LHt0eXBlOlwiTmF2aWdhdGlvblwiLGFjdGlvbjpcIkNsb3NlXCJ9KX0pKSl9O2xldCBjdCxzdCx1dDtjb25zdCBkdD1hc3luYygpPT4odm9pZCAwPT09dXQmJih1dD0hIShhd2FpdCBzZSgpKS5kaXNhYmxlT3BlbkZpbkFuYWx5dGljcyksdXQpO2FzeW5jIGZ1bmN0aW9uIGZ0KGUpe2UuZm9yRWFjaCgoZT0+e3ZhciB0LG47XCJQYWdlXCI9PT1lLnR5cGU/XCJPcGVuXCI9PT1lLmFjdGlvbj8odD1lLmVudGl0eUlkLnV1aWQsbj1lLGF0LnNldCh0LG4pKTpcIkNsb3NlXCI9PT1lLmFjdGlvbiYmKGU9PnthdC5kZWxldGUoZSl9KShlLmVudGl0eUlkLnV1aWQpOmUuc291cmNlPT09bmUuU3RvcmVmcm9udCYmXCJDbG9zZVwiIT09ZS5hY3Rpb24mJmx0KCl9KSksYXdhaXQoYXN5bmMgZT0+e2N0Py5zZW5kVG9PcGVuRmluJiYoYXdhaXQgZHQoKXx8ZS5mb3JFYWNoKChhc3luYyBlPT57Y29uc3QgdD1wZSh7fSxlKTt0LmVudGl0eUlkJiYodC5lbnRpdHlJZC51dWlkPWF3YWl0IGRlKHQuZW50aXR5SWQudXVpZCksdC5lbnRpdHlJZC5uYW1lPWF3YWl0IGRlKHQuZW50aXR5SWQubmFtZSkpLCFlLnNraXBWYWx1ZUhhc2hpbmcmJlwidmFsdWVcImluIHQmJih0LnZhbHVlPWF3YWl0IGRlKHQudmFsdWUpKSxzdCh0KX0pKSl9KShlKTtjb25zdCB0PWUubWFwKCgoe3NraXBWYWx1ZUhhc2hpbmc6ZSwuLi50fSk9PnQpKTthd2FpdCB0aGlzLmhhbmRsZUFuYWx5dGljcyh0KX1jb25zdCBwdD1hc3luYyBlPT57Y3Q9ZTtjdD8uc2VuZFRvT3BlbkZpbiYmIWF3YWl0IGR0KCkmJigoKT0+e2NvbnN0IGU9ayx0PWUrdmUuQW5hbHl0aWNzLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIklGUkFNRVwiKTtuLnNldEF0dHJpYnV0ZShcInNyY1wiLHQpLG4uc2V0QXR0cmlidXRlKFwic3R5bGVcIixcIndpZHRoOiAwcHggIWltcG9ydGFudFwiKSxuLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsXCJoZWlnaHQ6IDBweCAhaW1wb3J0YW50XCIpLG4uc2V0QXR0cmlidXRlKFwic3R5bGVcIixcImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudFwiKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG4pLHN0PWFzeW5jIHQ9PntuLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UodCxlKX19KSgpO2NvbnN0IHQ9ZmluLkFwcGxpY2F0aW9uLmdldEN1cnJlbnRTeW5jKCk7dC5hZGRMaXN0ZW5lcihcInZpZXctY3JlYXRlZFwiLChlPT57aWUoe3R5cGU6XCJWaWV3XCIsYWN0aW9uOlwiT3BlblwiLGVudGl0eUlkOnt1dWlkOmUudXVpZCxuYW1lOmUubmFtZX19KX0pKSx0LmFkZExpc3RlbmVyKFwidmlldy1kZXN0cm95ZWRcIiwoZT0+e2llKHt0eXBlOlwiVmlld1wiLGFjdGlvbjpcIkNsb3NlXCIsZW50aXR5SWQ6e3V1aWQ6ZS51dWlkLG5hbWU6ZS5uYW1lfX0pfSkpLHQuYWRkTGlzdGVuZXIoXCJ3aW5kb3ctY2xvc2VkXCIsKGU9Pntjb25zdCB0PWUubmFtZS5zdGFydHNXaXRoKFQuQnJvd3Nlck1lbnUpP1wiTW9kYWxcIjpcIldpbmRvd1wiO2llKHt0eXBlOnQsYWN0aW9uOlwiQ2xvc2VcIixlbnRpdHlJZDp7dXVpZDplLnV1aWQsbmFtZTplLm5hbWV9fSksZSYmZS5uYW1lLnN0YXJ0c1dpdGgoVC5Ccm93c2VyV2luZG93KSYmKGFzeW5jKCk9Pntjb25zdCBlPWF3YWl0IFdlKCk7aWYoZS5sZW5ndGg9PT1hdC5zaXplKXJldHVybjtjb25zdCB0PWUucmVkdWNlKCgoZSx0KT0+ZS5zZXQodC5wYWdlSWQsMSkpLG5ldyBNYXApO2Zvcihjb25zdFtlLG5db2YgYXQpdC5oYXMoZSl8fChuLmFjdGlvbj1cIkNsb3NlXCIsaWUobiksYXQuZGVsZXRlKGUpKX0pKCl9KSl9O3ZhciBodDshZnVuY3Rpb24oZSl7ZS5FUlJPUj1cImVycm9yXCIsZS5TVUNDRVNTPVwic3VjY2Vzc1wiLGUuSU5GTz1cImluZm9cIn0oaHR8fChodD17fSkpO2NvbnN0IEN0PShlLHQpPT57Y29uc3Qgbj1lO3JldHVybiBuLndvcmtzcGFjZVBsYXRmb3JtfHwobi53b3Jrc3BhY2VQbGF0Zm9ybT17fSksbi53b3Jrc3BhY2VQbGF0Zm9ybS5faW50ZXJuYWxEZWZlclNob3dPcHRpb25zPXtzZXRBc0ZvcmVncm91bmQ6ISF0LGRlZmVyU2hvd0VuYWJsZWQ6ITAsYXV0b1Nob3c6bi53b3Jrc3BhY2VQbGF0Zm9ybT8uX2ludGVybmFsQXV0b1Nob3d8fG4ud29ya3NwYWNlUGxhdGZvcm0/Ll9pbnRlcm5hbERlZmVyU2hvd09wdGlvbnM/LmF1dG9TaG93fHx2b2lkIDA9PT1uLmF1dG9TaG93fHxuLmF1dG9TaG93fSxuLmF1dG9TaG93PSExLG59O2NvbnN0IHZ0PUN0KHthbHdheXNPblRvcDohMCxhdXRvU2hvdzohMSxmcmFtZTohMSxyZXNpemFibGU6ITEsc2hvd1Rhc2tiYXJJY29uOiExfSk7dmFyIGd0OyFmdW5jdGlvbihlKXtlLkxvY2tlZD1cIkxvY2tDbG9zZWRJY29uXCIsZS5VbmxvY2tlZD1cIkxvY2tPcGVuMUljb25cIn0oZ3R8fChndD17fSkpO2NvbnN0IG10PVwiYnJvd3NlclwiLHd0PWZ1bmN0aW9uKGU9dnQpe2NvbnN0IHQ9bmV3IE1hcDtyZXR1cm4gYXN5bmMobixyLG8sYSk9PntpZih0LmhhcyhuKSl7Y29uc3R7Y3VycmVudFVybDplLGN1cnJlbnROYW1lOm99PXQuZ2V0KG4pO2lmKGU9PT1yKXJldHVybjtjb25zdCBhPWZpbi5XaW5kb3cud3JhcFN5bmMoe3V1aWQ6ZmluLm1lLnV1aWQsbmFtZTpvfSk7YXdhaXQgYS5jbG9zZSgpfWNvbnN0IGk9YCR7VC5Ib21lSW50ZXJuYWx9LSR7RGF0ZS5ub3coKX0ke01hdGgucmFuZG9tKCl9YDt0LnNldChuLHtjdXJyZW50VXJsOnIsY3VycmVudE5hbWU6aX0pO2NvbnN0IGw9YE5ldyAke2F9IGluZGljYXRvcjogJHtvfWAsYz1hd2FpdCBmaW4uUGxhdGZvcm0uZ2V0Q3VycmVudFN5bmMoKS5jcmVhdGVXaW5kb3coey4uLmUsbmFtZTppLHVybDpyfSk7KChlLHQpPT57Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO24uc2V0QXR0cmlidXRlKFwicm9sZVwiLFwiYWxlcnRcIiksbi5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxpdmVcIix0fHxcInBvbGl0ZVwiKSwoZT0+e2Uuc3R5bGUucG9zaXRpb249XCJhYnNvbHV0ZVwiLGUuc3R5bGUud2lkdGg9XCIxcHhcIixlLnN0eWxlLmhlaWdodD1cIjFweFwiLGUuc3R5bGUucGFkZGluZz1cIjBcIixlLnN0eWxlLm1hcmdpbj1cIi0xcHhcIixlLnN0eWxlLm92ZXJmbG93PVwiaGlkZGVuXCIsZS5zdHlsZS53aGl0ZVNwYWNlPVwibm93cmFwXCIsZS5zdHlsZS5ib3JkZXI9XCIwXCJ9KShuKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG4pLHNldFRpbWVvdXQoKCgpPT57bi5pbm5lckhUTUw9ZX0pLDMwMCksc2V0VGltZW91dCgoKCk9Pntkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG4pfSksMWUzKX0pKGwpLGMub25jZShcImNsb3NlZFwiLCgoKT0+e3QuZGVsZXRlKG4pfSkpfX0oKTthc3luYyBmdW5jdGlvbiB5dChlLHQsbixyKXtjb25zdCBvPW5ldyBVUkxTZWFyY2hQYXJhbXM7by5hcHBlbmQoXCJ0eXBlXCIsZSksby5hcHBlbmQoXCJtZXNzYWdlXCIsdCksby5hcHBlbmQoXCJwYXJlbnROYW1lXCIsbnx8XCJcIiksby5hcHBlbmQoXCJpY29uXCIscnx8XCJcIik7Y29uc3QgYT1gJHtIK3ZlLkJyb3dzZXJJbmRpY2F0b3J9IyR7by50b1N0cmluZygpfWA7cmV0dXJuIHd0KG10K24sYSx0LGUpfWZ1bmN0aW9uIGJ0KGUsdCxuKXtyZXR1cm4geXQoaHQuU1VDQ0VTUyxlLHQsbil9dmFyIHh0OyFmdW5jdGlvbihlKXtlLkN1cnJlbnRXb3Jrc3BhY2VJZD1cImN1cnJlbnRXb3Jrc3BhY2VJZFwiLGUuTGFzdEZvY3VzZWRCcm93c2VyV2luZG93PVwibGFzdEZvY3VzZWRCcm93c2VyV2luZG93XCIsZS5NYWNoaW5lTmFtZT1cIm1hY2hpbmVOYW1lXCIsZS5OZXdUYWJQYWdlTGF5b3V0PVwiTmV3VGFiUGFnZUxheW91dFwiLGUuTmV3VGFiUGFnZVNvcnQ9XCJOZXdUYWJQYWdlU29ydFwiLGUuRG9ja1Bvc2l0aW9uPVwiRG9ja1Bvc2l0aW9uXCIsZS5TZWxlY3RlZENvbG9yU2NoZW1lPVwiU2VsZWN0ZWRDb2xvclNjaGVtZVwiLGUuSGFzTW92ZWRTdG9yZT1cIkhhc01vdmVkU3RvcmVcIn0oeHR8fCh4dD17fSkpO2NvbnN0IE90PXh0LEx0PShlLHQpPT57bG9jYWxTdG9yYWdlLnNldEl0ZW0oYCR7U30tJHtlfWAsdCl9LE10PWU9PmxvY2FsU3RvcmFnZS5nZXRJdGVtKGAke1N9LSR7ZX1gKTt2YXIgU3Q7IWZ1bmN0aW9uKGUpe2UuSG9tZT1cIi9ob21lXCIsZS5Ccm93c2VyPVwiL2Jyb3dzZXJcIixlLlByb3ZpZGVyPVwiL3Byb3ZpZGVyXCIsZS5TdG9yZWZyb250PVwiL3N0b3JlZnJvbnRcIixlLkRvY2s9XCIvZG9ja1wifShTdHx8KFN0PXt9KSk7Y29uc3QgX3Q9KGUsdD0wKT0+e2xldCBuLHIsbz0hMTtjb25zdCBhPWFzeW5jIHI9Pntjb25zdCBpPWF3YWl0IGUoLi4ucik7aWYobyl7YXdhaXQgbmV3IFByb21pc2UoKGU9PnNldFRpbWVvdXQoZSx0KSkpO2NvbnN0IGU9bjtyZXR1cm4gbj12b2lkIDAsbz0hMSxhKGUpfXJldHVybiBpfTtyZXR1cm4oLi4uZSk9PihyPyhvPSEwLG49ZSk6cj1hKGUpLmNhdGNoKChlPT57dGhyb3cgY29uc29sZS5lcnJvcihcIm1ha2VEZWJvdW5jZWRGdW5jXCIsZSksZX0pKS5maW5hbGx5KCgoKT0+e3I9dm9pZCAwfSkpLHIpfTtmdW5jdGlvbiBqdChlLHQpe3JldHVybiBhc3luYyhuLC4uLnIpPT57ZS5oYXMobikmJmUuZ2V0KG4pLmZvckVhY2goKGU9PmUoLi4ucikpKSx0JiZhd2FpdCB0KHtldmVudDpuLHBheWxvYWQ6cn0pfX1mdW5jdGlvbiBFdChlLHQpe3JldHVybiB0JiZ0KCh0PT57Y29uc3R7ZXZlbnQ6bixwYXlsb2FkOnJ9PXQ7ZS5oYXMobikmJmUuZ2V0KG4pLmZvckVhY2goKGU9PmUoLi4ucikpKX0pKSwodCxuKT0+e2UuaGFzKHQpfHxlLnNldCh0LG5ldyBTZXQpLGUuZ2V0KHQpLmFkZChuKX19ZnVuY3Rpb24gUHQoZSl7cmV0dXJuKHQsbik9PntlLmhhcyh0KXx8ZS5zZXQodCxuZXcgU2V0KTtjb25zdCByPWUuZ2V0KHQpLG89KC4uLmUpPT57biguLi5lKSxyLmRlbGV0ZShvKX07ci5hZGQobyl9fWZ1bmN0aW9uIGt0KGUpe3JldHVybih0LG4pPT57ZS5oYXModCkmJmUuZ2V0KHQpLmRlbGV0ZShuKX19dmFyIEh0PW4oMzA0KTtjb25zdCBWdD1lPT5lLnJlcGxhY2UoL1teXFxkLF0vZyxcIlwiKS5zcGxpdChcIixcIiksUnQ9ZT0+e2lmKGUubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb2xvciBvYmplY3QsIGNhbm5vdCBjb252ZXJ0IHRvIEhTTC5cIik7Y29uc3QgdD1lWzBdLzI1NSxuPWVbMV0vMjU1LHI9ZVsyXS8yNTUsbz1NYXRoLm1pbih0LG4sciksYT1NYXRoLm1heCh0LG4sciksaT1hLW87bGV0IGw9MCxjPTAscz0wO3JldHVybiBsPTA9PT1pPzA6YT09PXQ/KG4tcikvaSU2OmE9PT1uPyhyLXQpL2krMjoodC1uKS9pKzQsbD1NYXRoLnJvdW5kKDYwKmwpLGw8MCYmKGwrPTM2MCkscz0oYStvKS8yLGM9MD09aT8wOmkvKDEtTWF0aC5hYnMoMipzLTEpKSxjPSsoMTAwKmMpLnRvRml4ZWQoMSkscz0rKDEwMCpzKS50b0ZpeGVkKDEpLHtoc2w6YGhzbCgke2x9LCAke2N9JSwgJHtzfSUpYCxoc2xhOmBoc2woJHtsfSwgJHtjfSUsICR7c30lLCAxKWAsaHVlOmwsbGlnaHRuZXNzOnMsc2F0dXJhdGlvbjpjfX0sSXQ9ZT0+e2lmKCFlKXRocm93IG5ldyBFcnJvcihcIkNvbG9yIGlzIG5vdCBkZWZpbmVkXCIpO2NvbnN0IHQ9ZS50b0xvd2VyQ2FzZSgpO2xldCBuO2lmKHQuaW5jbHVkZXMoXCJyZ2JcIikpe2NvbnN0IGU9VnQodCk7ZS5sZW5ndGg+MyYmZS5wb3AoKSxuPVJ0KGUpLmh1ZX1pZih0LmluY2x1ZGVzKFwiI1wiKSl7Y29uc3QgZT0oZT0+e2lmKCFlLmluY2x1ZGVzKFwiI1wiKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGhleCB2YWx1ZSwgY2Fubm90IGNvbnZlcnQgdG8gUkdCLiBIZXggdmFsdWUgYmVnaW5zIHdpdGggYSBoYXNodGFnLlwiKTtsZXQgdD0wLG49MCxyPTA7aWYoND09PWUubGVuZ3RoKXQ9YDB4JHtlWzFdfSR7ZVsxXX1gLG49YDB4JHtlWzJdfSR7ZVsyXX1gLHI9YDB4JHtlWzNdfSR7ZVszXX1gO2Vsc2V7aWYoNyE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaGV4IHN0cmluZyBsZW5ndGgsIGNhbm5vdCBjb252ZXJ0IHRvIFJHQi5cIik7dD1gMHgke2VbMV19JHtlWzJdfWAsbj1gMHgke2VbM119JHtlWzRdfWAscj1gMHgke2VbNV19JHtlWzZdfWB9cmV0dXJuWyt0LCtuLCtyXX0pKHQpO249UnQoZSkuaHVlfWlmKHQuaW5jbHVkZXMoXCJoc2xcIikpe249VnQodClbMF19Y29uc3Qgcj1uPy50b1N0cmluZygpO2lmKCFyKXRocm93IG5ldyBFcnJvcihgSHVlIHdhcyB1bmFibGUgdG8gYmUgZXh0cmFjdGVkIGZyb20gXCIke3R9XCIsIGNoZWNrIGNvbG9yIGZvcm1hdC4gQWNjZXB0ZWQgZm9ybWF0cyBhcmU6IHJnYigpLCByZ2JhKCksIGhleCwgaHNsKCksIGFuZCBoc2xhKClgKTtyZXR1cm4gcn0sWnQ9KGUsdD0hMSk9Pntjb25zdCBuPUl0KGUpO3JldHVybiB0P3tiYWNrZ3JvdW5kMTpgaHNsYSgke259LCAwJSwgMTAwJSwgMSlgLGJhY2tncm91bmQyOmBoc2xhKCR7bn0sIDY3JSwgOTklLCAxKWAsYmFja2dyb3VuZDM6YGhzbGEoJHtufSwgMjYlLCA5NiUsIDEpYCxiYWNrZ3JvdW5kNDpgaHNsYSgke259LCAxNSUsIDk0JSwgMSlgLGJhY2tncm91bmQ1OmBoc2xhKCR7bn0sIDEwJSwgODglLCAxKWAsYmFja2dyb3VuZDY6YGhzbGEoJHtufSwgODAlLCA4MCUsIDEpYH06e2JhY2tncm91bmQxOmBoc2xhKCR7bn0sIDglLCA3JSwgMSlgLGJhY2tncm91bmQyOmBoc2xhKCR7bn0sIDglLCAxMyUsIDEpYCxiYWNrZ3JvdW5kMzpgaHNsYSgke259LCA5JSwgMTUlLCAxKWAsYmFja2dyb3VuZDQ6YGhzbGEoJHtufSwgNiUsIDIzJSwgMSlgLGJhY2tncm91bmQ1OmBoc2xhKCR7bn0sIDIxJSwgMjglLCAxKWAsYmFja2dyb3VuZDY6YGhzbGEoJHtufSwgNSUsIDUxJSwgMSlgfX0sQXQ9KGUsdCk9Pntjb25zdCBuPXt9O3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChyPT57bltyXT10W3JdP3Rbcl06ZVtyXX0pKSxufSxEdD1lPT4oe2lkZW50aXR5OmUsb3BlbmZpbldpbmRvdzpmaW4uV2luZG93LndyYXBTeW5jKGUpLGdldFBhZ2VzOmFzeW5jKCk9Pihhd2FpdCBrZShlKSkuZGlzcGF0Y2goX2UuR2V0UGFnZXNGb3JXaW5kb3csZSksZ2V0UGFnZTphc3luYyB0PT4oYXdhaXQga2UoZSkpLmRpc3BhdGNoKF9lLkdldFBhZ2VGb3JXaW5kb3cse2lkZW50aXR5OmUscGFnZUlkOnR9KSxhZGRQYWdlOmFzeW5jIHQ9Pntjb25zdCBuPWF3YWl0IGtlKGUpO3Q/LnRpdGxlfHwodC50aXRsZT1hd2FpdCBuLmRpc3BhdGNoKF9lLkdldFVuaXF1ZVBhZ2VUaXRsZSx2b2lkIDApKTtjb25zdCByPShhd2FpdCBuLmRpc3BhdGNoKF9lLkdldEFsbEF0dGFjaGVkUGFnZXMsdm9pZCAwKSkuZmluZCgoZT0+ZS5wYWdlSWQ9PT10LnBhZ2VJZHx8ZS50aXRsZT09PXQudGl0bGUpKTtpZihyKXRocm93IHIucGFnZUlkPT09dC5wYWdlSWQ/bmV3IEVycm9yKGBwYWdlIHdpdGggaWQgJHt0LnBhZ2VJZH0gaXMgYWxyZWFkeSBhdHRhY2hlZCB0byBhIGJyb3dzZXIgd2luZG93ICR7ci5wYXJlbnRJZGVudGl0eS5uYW1lfWApOm5ldyBFcnJvcihgcGFnZSB3aXRoIHRpdGxlICR7dC50aXRsZX0gaXMgYWxyZWFkeSBhdHRhY2hlZCB0byBhIGJyb3dzZXIgd2luZG93ICR7ci5wYXJlbnRJZGVudGl0eS5uYW1lfWApO2NvbnN0IG89e2lkZW50aXR5OmUscGFnZXM6W3RdfTtyZXR1cm4gbi5kaXNwYXRjaChfZS5BdHRhY2hQYWdlc1RvV2luZG93LG8pfSxyZW1vdmVQYWdlOmFzeW5jIHQ9Pihhd2FpdCBrZShlKSkuZGlzcGF0Y2goX2UuRGV0YWNoUGFnZXNGcm9tV2luZG93LHtpZGVudGl0eTplLHBhZ2VJZHM6W3RdfSksc2V0QWN0aXZlUGFnZTphc3luYyB0PT4oYXdhaXQga2UoZSkpLmRpc3BhdGNoKF9lLlNldEFjdGl2ZVBhZ2Use2lkZW50aXR5OmUscGFnZUlkOnR9KSx1cGRhdGVQYWdlOmFzeW5jIHQ9Pntjb25zdCBuPWF3YWl0IGtlKGUpO3JldHVybiB0LmlkZW50aXR5PWUsbi5kaXNwYXRjaChfZS5VcGRhdGVQYWdlRm9yV2luZG93LHQpfSxyZW9yZGVyUGFnZXM6YXN5bmMgdD0+e2NvbnN0IG49YXdhaXQga2UoZSk7cmV0dXJuIHQuaWRlbnRpdHk9ZSxuLmRpc3BhdGNoKF9lLlJlb3JkZXJQYWdlc0ZvcldpbmRvdyx0KX0sX29wZW5HbG9iYWxDb250ZXh0TWVudTphc3luYyB0PT57Y29uc3Qgbj1hd2FpdCBrZShlKTtyZXR1cm4gdC5pZGVudGl0eT1lLG4uZGlzcGF0Y2goX2UuT3Blbkdsb2JhbENvbnRleHRNZW51SW50ZXJuYWwsdCl9LHJlcGxhY2VUb29sYmFyT3B0aW9uczphc3luYyB0PT57YXdhaXQga2UoZSk7Y29uc3Qgbj1maW4uV2luZG93LndyYXBTeW5jKGUpO2F3YWl0IG4udXBkYXRlT3B0aW9ucyh7d29ya3NwYWNlUGxhdGZvcm06e3Rvb2xiYXJPcHRpb25zOnR9fSl9LHJlcGxhY2VXaW5kb3dTdGF0ZUJ1dHRvbk9wdGlvbnM6YXN5bmMgdD0+e2F3YWl0IGtlKGUpO2NvbnN0IG49ZmluLldpbmRvdy53cmFwU3luYyhlKTthd2FpdCBuLnVwZGF0ZU9wdGlvbnMoe3dvcmtzcGFjZVBsYXRmb3JtOnt3aW5kb3dTdGF0ZUJ1dHRvbk9wdGlvbnM6dH19KX0sX29wZW5WaWV3VGFiQ29udGV4dE1lbnU6YXN5bmMgdD0+e2NvbnN0IG49YXdhaXQga2UoZSk7cmV0dXJuIHQuaWRlbnRpdHk9ZSxuLmRpc3BhdGNoKF9lLk9wZW5WaWV3VGFiQ29udGV4dE1lbnVJbnRlcm5hbCx0KX0sX29wZW5QYWdlVGFiQ29udGV4dE1lbnU6YXN5bmMgdD0+e2NvbnN0IG49YXdhaXQga2UoZSk7cmV0dXJuIHQuaWRlbnRpdHk9ZSxuLmRpc3BhdGNoKF9lLk9wZW5QYWdlVGFiQ29udGV4dE1lbnVJbnRlcm5hbCx0KX0sX29wZW5TYXZlTW9kYWw6YXN5bmMgdD0+e2F3YWl0IGtlKGUpO3JldHVybihhd2FpdCBiZShlKSkuZGlzcGF0Y2goTGUuT3BlblNhdmVNb2RhbEludGVybmFsLHQpfSxfb3BlblNhdmVCdXR0b25Db250ZXh0TWVudTphc3luYyB0PT57Y29uc3Qgbj1hd2FpdCBrZShlKTtyZXR1cm4gdC5pZGVudGl0eT1lLG4uZGlzcGF0Y2goX2UuT3BlblNhdmVCdXR0b25Db250ZXh0TWVudUludGVybmFsLHQpfX0pLEJ0PWU9Pntjb25zdCB0PWZpbi5QbGF0Zm9ybS53cmFwU3luYyhlKTtyZXR1cm57d3JhcFN5bmM6ZT0+RHQoZSksY3JlYXRlV2luZG93OmFzeW5jIG49Pnthd2FpdCBrZShlKTtjb25zdCByPWF3YWl0IHQuY3JlYXRlV2luZG93KG4pO3JldHVybiBEdChyLmlkZW50aXR5KX0sZ2V0QWxsQXR0YWNoZWRQYWdlczphc3luYygpPT4oYXdhaXQga2UoZSkpLmRpc3BhdGNoKF9lLkdldEFsbEF0dGFjaGVkUGFnZXMsdm9pZCAwKSxnZXRBbGxXaW5kb3dzOmFzeW5jKCk9Pnthd2FpdCBrZShlKTtyZXR1cm4oYXdhaXQgZmluLkFwcGxpY2F0aW9uLndyYXBTeW5jKGUpLmdldENoaWxkV2luZG93cygpKS5maWx0ZXIoKGU9PmUuaWRlbnRpdHkubmFtZS5zdGFydHNXaXRoKFwiaW50ZXJuYWwtZ2VuZXJhdGVkLXdpbmRvdy1cIikpKS5tYXAoKGU9PkR0KGUuaWRlbnRpdHkpKSl9LGdldFVuaXF1ZVBhZ2VUaXRsZTphc3luYyB0PT4oYXdhaXQga2UoZSkpLmRpc3BhdGNoKF9lLkdldFVuaXF1ZVBhZ2VUaXRsZSx0KSxnZXRMYXN0Rm9jdXNlZFdpbmRvdzphc3luYygpPT4oYXdhaXQga2UoZSkpLmRpc3BhdGNoKF9lLkdldExhc3RGb2N1c2VkQnJvd3NlcldpbmRvdyx2b2lkIDApfX0sVHQ9ZT0+KHtjcmVhdGVQYWdlOmFzeW5jIHQ9Pihhd2FpdCBrZShlKSkuZGlzcGF0Y2goX2UuQ3JlYXRlU2F2ZWRQYWdlSW50ZXJuYWwsdCksZGVsZXRlUGFnZTphc3luYyB0PT4oYXdhaXQga2UoZSkpLmRpc3BhdGNoKF9lLkRlbGV0ZVNhdmVkUGFnZUludGVybmFsLHQpLHVwZGF0ZVBhZ2U6YXN5bmMgdD0+KGF3YWl0IGtlKGUpKS5kaXNwYXRjaChfZS5VcGRhdGVTYXZlZFBhZ2VJbnRlcm5hbCx0KSxnZXRQYWdlOmFzeW5jIHQ9Pihhd2FpdCBrZShlKSkuZGlzcGF0Y2goX2UuR2V0U2F2ZWRQYWdlLHQpLGdldFBhZ2VzOmFzeW5jIHQ9Pihhd2FpdCBrZShlKSkuZGlzcGF0Y2goX2UuR2V0U2F2ZWRQYWdlcyx0KSxzYXZlUGFnZTphc3luYyB0PT4oYXdhaXQga2UoZSkpLmRpc3BhdGNoKF9lLlNhdmVQYWdlLHQpLGNyZWF0ZVdvcmtzcGFjZTphc3luYyB0PT4oYXdhaXQgUGUoZSkpLmRpc3BhdGNoKF9lLkNyZWF0ZVNhdmVkV29ya3NwYWNlLHQpLGRlbGV0ZVdvcmtzcGFjZTphc3luYyB0PT57Y29uc3Qgbj10bigpLHI9YXdhaXQgbi5nZXRDdXJyZW50V29ya3NwYWNlKCk7aWYoci53b3Jrc3BhY2VJZD09PXQpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZGVsZXRlIGN1cnJlbnQgYWN0aXZlIHdvcmtzcGFjZSAke3IudGl0bGV9YCk7cmV0dXJuKGF3YWl0IFBlKGUpKS5kaXNwYXRjaChfZS5EZWxldGVTYXZlZFdvcmtzcGFjZSx0KX0sdXBkYXRlV29ya3NwYWNlOmFzeW5jIHQ9Pihhd2FpdCBQZShlKSkuZGlzcGF0Y2goX2UuVXBkYXRlU2F2ZWRXb3Jrc3BhY2UsdCksZ2V0V29ya3NwYWNlOmFzeW5jIHQ9Pihhd2FpdCBQZShlKSkuZGlzcGF0Y2goX2UuR2V0U2F2ZWRXb3Jrc3BhY2UsdCksZ2V0V29ya3NwYWNlczphc3luYyB0PT4oYXdhaXQgUGUoZSkpLmRpc3BhdGNoKF9lLkdldFNhdmVkV29ya3NwYWNlcyx0KSxzYXZlV29ya3NwYWNlOmFzeW5jIHQ9Pihhd2FpdCBQZShlKSkuZGlzcGF0Y2goX2UuU2F2ZVdvcmtzcGFjZSx0KSxnZXREb2NrUHJvdmlkZXJDb25maWc6YXN5bmMgdD0+KGF3YWl0IFBlKGUpKS5kaXNwYXRjaChfZS5HZXREb2NrUHJvdmlkZXJDb25maWcsdCksc2F2ZURvY2tQcm92aWRlckNvbmZpZzphc3luYyB0PT4oYXdhaXQgUGUoZSkpLmRpc3BhdGNoKF9lLlNhdmVEb2NrUHJvdmlkZXJDb25maWcsdCl9KTt2YXIgJHQ7IWZ1bmN0aW9uKGUpe2UuVXBkYXRlUGxhdGZvcm1UaGVtZVNjaGVtZT1cInVwZGF0ZS1wbGF0Zm9ybS10aGVtZS1zY2hlbWVcIn0oJHR8fCgkdD17fSkpO2NvbnN0IEZ0PW1lKFwib2Ytd29ya3NwYWNlLW5vdGlmaWNhdGlvbnMtc3luY1wiKTsoKHtwbGF0Zm9ybUlkZW50aXR5OmUsaWQ6dD1cIlwifSk9PntlLm5hbWUsZS51dWlkfSkoe2lkOlwiaG9tZS1jb21tYW5kc1wiLHBsYXRmb3JtSWRlbnRpdHk6en0pO3ZhciBXdCxOdDshZnVuY3Rpb24oZSl7ZS5GZXRjaGluZz1cImZldGNoaW5nXCIsZS5GZXRjaGVkPVwiZmV0Y2hlZFwiLGUuQ29tcGxldGU9XCJjb21wbGV0ZVwifShXdHx8KFd0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkluaXRpYWw9MF09XCJJbml0aWFsXCIsZVtlLk9wZW49MV09XCJPcGVuXCIsZVtlLkNsb3NlPTJdPVwiQ2xvc2VcIn0oTnR8fChOdD17fSkpO2NvbnN0IHp0PW1lKFwiX19vZl93b3Jrc3BhY2VfcHJvdG9jb2xfX1wiKSxVdD16dCxHdD0obWUoXCJfX3NlYXJjaC1vcGVuZmluLWJyb3dzZXItaG9tZS10b3BpY19fXCIpLGU9Pih7Z2V0VGhlbWVzOmFzeW5jKCk9Pihhd2FpdCBQZShlKSkuZGlzcGF0Y2goX2UuR2V0VGhlbWVzLHZvaWQgMCksc2V0U2VsZWN0ZWRTY2hlbWU6YXN5bmMgdD0+KGF3YWl0IFBlKGUpKS5kaXNwYXRjaChfZS5TZXRTZWxlY3RlZFNjaGVtZSx0KSxnZXRTZWxlY3RlZFNjaGVtZTphc3luYygpPT4oYXdhaXQgUGUoZSkpLmRpc3BhdGNoKF9lLkdldFNlbGVjdGVkU2NoZW1lLHZvaWQgMCl9KSkscXQ9YXN5bmMgZT0+e2NvbnN0IHQ9YXdhaXQgVXQoKTthd2FpdCB0LmRpc3BhdGNoKFwic2V0LXNlbGVjdGVkLXNjaGVtZVwiLGUpfSxZdD1hc3luYyBlPT57Y29uc3QgdD1hd2FpdCBGdCgpO2F3YWl0IHQuZGlzcGF0Y2goJHQuVXBkYXRlUGxhdGZvcm1UaGVtZVNjaGVtZSx7c2NoZW1lOmV9KX0sS3Q9YXN5bmMgZT0+e2NvbnN0IHQ9YXdhaXQgWSgpO3JldHVybiBQcm9taXNlLmFsbCh0Lm1hcCgoYXN5bmMgdD0+e2NvbnN0IG49YXdhaXQgYmUodC5pZGVudGl0eSk7YXdhaXQgbi5kaXNwYXRjaChMZS5TZXRTZWxlY3RlZFNjaGVtZSxlKX0pKSl9LFh0PWFzeW5jIGU9Pntjb25zdCB0PWF3YWl0IEsoKTtyZXR1cm4gUHJvbWlzZS5hbGwodC5tYXAoKGFzeW5jIHQ9Pntjb25zdCBuPWF3YWl0IGJlKHQuaWRlbnRpdHkpO2F3YWl0IG4uZGlzcGF0Y2goTGUuU2V0U2VsZWN0ZWRTY2hlbWUsZSl9KSkpfSxRdD1hc3luYyBlPT57aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGxvY2FsU3RvcmFnZSl0cnl7YXdhaXQgUHJvbWlzZS5hbGwoW0x0KE90LlNlbGVjdGVkQ29sb3JTY2hlbWUsZSksWXQoZSksS3QoZSksWHQoZSkscXQoZSldKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKFwiZmFpbGVkIHRvIHNldCB0aGUgc2VsZWN0ZWQgc2NoZW1lOiBcIixlKX19LEp0PSgpPT57aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIGxvY2FsU3RvcmFnZSlyZXR1cm4gbnVsbDt0cnl7Y29uc3QgZT1NdChPdC5TZWxlY3RlZENvbG9yU2NoZW1lKTtyZXR1cm4gZXx8bnVsbH1jYXRjaChlKXtjb25zb2xlLmVycm9yKFwiZmFpbGVkIHRvIGdldCB0aGUgc2VsZWN0ZWQgc2NoZW1lOiBcIixlKX19LGVuPWU9Pntjb25zdCB0PWZpbi5QbGF0Zm9ybS53cmFwU3luYyhlKTtsZXQgbjtyZXR1cm4gT2JqZWN0LmFzc2lnbih0LHthcHBseVNuYXBzaG90OmFzeW5jKHQsbik9PntpZihcInN0cmluZ1wiIT10eXBlb2YgdCYmIXQ/LndpbmRvd3MpdGhyb3cgbmV3IEVycm9yKFwiTm90IGEgdmFsaWQgYnJvd3NlciBzbmFwc2hvdFwiKTtyZXR1cm4gZmluLlBsYXRmb3JtLndyYXBTeW5jKGUpLmFwcGx5U25hcHNob3QodCxuKX0sZ2V0U25hcHNob3Q6KCk9PmZpbi5QbGF0Zm9ybS53cmFwU3luYyhlKS5nZXRTbmFwc2hvdCgpLnRoZW4oKGU9PmUpKSxsYXVuY2hBcHA6YXN5bmMgdD0+e2NvbnNvbGUud2FybihcImxhdW5jaEFwcCBtZXRob2QgaXMgZGVwcmVjYXRlZC4gSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIGNyZWF0ZVZpZXcgLSBodHRwczovL2RldmVsb3BlcnMub3BlbmZpbi5jby9vZi1kb2NzL2RvY3MvcGxhdGZvcm0tZ2V0dGluZy1zdGFydGVkI2FkZC1hLXZpZXctdG8tYW4tZXhpc3Rpbmctd2luZG93IG9yICBjcmVhdGVXaW5kb3cgLSBodHRwczovL2RldmVsb3BlcnMub3BlbmZpbi5jby9vZi1kb2NzL2RvY3MvcGxhdGZvcm0tZ2V0dGluZy1zdGFydGVkI2NyZWF0ZS1hLXBsYXRmb3JtLXdpbmRvdyBpbnN0ZWFkLlwiKSx0LnRhcmdldHx8KHQudGFyZ2V0PXt1dWlkOlMsbmFtZTpfLGVudGl0eVR5cGU6anx8XCJ1bmtub3duXCJ9KTtyZXR1cm4oYXdhaXQgUGUoZSkpLmRpc3BhdGNoKF9lLkxhdW5jaEFwcCx0KX0sX2ludm9rZUN1c3RvbUFjdGlvbjphc3luYyh0LG4pPT57Y29uc3Qgcj1hd2FpdCBQZShlKSxvPXthY3Rpb25JZDp0LHBheWxvYWQ6ey4uLm4sY2FsbGVyVHlwZTpuLmNhbGxlclR5cGV8fHcuQVBJfX07cmV0dXJuIHIuZGlzcGF0Y2goX2UuSW52b2tlQ3VzdG9tQWN0aW9uSW50ZXJuYWwsbyl9LF9yZXF1ZXN0UXVpdFBsYXRmb3JtRGlhbG9nOmFzeW5jIHQ9Pihhd2FpdCBQZShlKSkuZGlzcGF0Y2goX2UuUmVxdWVzdFF1aXRQbGF0Zm9ybURpYWxvZ0ludGVybmFsLHQpLGdldEN1cnJlbnRXb3Jrc3BhY2U6YXN5bmMoKT0+KGF3YWl0IFBlKGUpKS5kaXNwYXRjaChfZS5HZXRDdXJyZW50V29ya3NwYWNlLHZvaWQgMCksYXBwbHlXb3Jrc3BhY2U6YXN5bmModCxuKT0+KGF3YWl0IFBlKGUpKS5kaXNwYXRjaChfZS5BcHBseVdvcmtzcGFjZSx7Li4udCxvcHRpb25zOm59KSxzZXRBY3RpdmVXb3Jrc3BhY2U6YXN5bmMgdD0+KGF3YWl0IFBlKGUpKS5kaXNwYXRjaChfZS5TZXRBY3RpdmVXb3Jrc3BhY2UsdCksX3JhaXNlQW5hbHl0aWNzOmFzeW5jIHQ9PntpZihufHwobj1hd2FpdCBFZShlKSksXCJvYmplY3RcIj09dHlwZW9mIG4mJm4/LmFuYWx5dGljcz8uaXNTdXBwb3J0ZWQpe3JldHVybihhd2FpdCBQZShlKSkuZGlzcGF0Y2goX2UuQW5hbHl0aWNzLHQpfWUudXVpZH0sVGhlbWU6R3QoZSksQnJvd3NlcjpCdChlKSxTdG9yYWdlOlR0KGUpfSl9LHRuPSgpPT5lbihmaW4ubWUuaWRlbnRpdHkpLG5uPXtbSHQuUGFsZXR0ZS5icmFuZFByaW1hcnldOlwiIzBBNzZEM1wiLFtIdC5QYWxldHRlLnN0YXR1c1N1Y2Nlc3NdOkh0LkNvbG9yLmZ1bmN0aW9uYWwxLFtIdC5QYWxldHRlLnN0YXR1c1dhcm5pbmddOkh0LkNvbG9yLmZ1bmN0aW9uYWwxMCxbSHQuUGFsZXR0ZS5zdGF0dXNDcml0aWNhbF06SHQuQ29sb3IuZnVuY3Rpb25hbDcsW0h0LlBhbGV0dGUuc3RhdHVzQWN0aXZlXTpIdC5Db2xvci5mdW5jdGlvbmFsMyxbSHQuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDFdOlwiIzBBNzZEM1wiLFtIdC5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kMl06XCIjMDAwMDAwXCIsW0h0LlBhbGV0dGUuY29udGVudEJhY2tncm91bmQzXTpcIiMwMDAwMDBcIixbSHQuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDRdOlwiIzAwMDAwMFwiLFtIdC5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kNV06XCIjMDAwMDAwXCJ9LHJuPXsuLi5ubixbSHQuUGFsZXR0ZS5iYWNrZ3JvdW5kMV06SHQuQ29sb3Iud2hpdGUsW0h0LlBhbGV0dGUuYmFja2dyb3VuZDJdOkh0LkNvbG9yLmxpZ2h0R3JheTEsW0h0LlBhbGV0dGUuYmFja2dyb3VuZDNdOkh0LkNvbG9yLmxpZ2h0R3JheTIsW0h0LlBhbGV0dGUuYmFja2dyb3VuZDRdOkh0LkNvbG9yLmxpZ2h0R3JheTMsW0h0LlBhbGV0dGUuYmFja2dyb3VuZDVdOkh0LkNvbG9yLmxpZ2h0R3JheTQsW0h0LlBhbGV0dGUuYmFja2dyb3VuZDZdOkh0LkNvbG9yLmxpZ2h0R3JheTUsW0h0LlBhbGV0dGUuYnJhbmRTZWNvbmRhcnldOkh0LkNvbG9yLmRhcmtHcmF5NSxbSHQuUGFsZXR0ZS5pbnB1dEJhY2tncm91bmRdOkh0LkNvbG9yLmxpZ2h0R3JheTMsW0h0LlBhbGV0dGUuaW5wdXRDb2xvcl06SHQuQ29sb3IuZGFya0dyYXk1LFtIdC5QYWxldHRlLmlucHV0UGxhY2Vob2xkZXJdOkh0LkNvbG9yLmRhcmtHcmF5MixbSHQuUGFsZXR0ZS5pbnB1dERpc2FibGVkXTpIdC5Db2xvci5uZXV0cmFsR3JheSxbSHQuUGFsZXR0ZS5pbnB1dEZvY3VzZWRdOkh0LkNvbG9yLmxpZ2h0R3JheTUsW0h0LlBhbGV0dGUuaW5wdXRCb3JkZXJdOkh0LkNvbG9yLm5ldXRyYWxHcmF5LFtIdC5QYWxldHRlLnRleHREZWZhdWx0XTpIdC5Db2xvci5kYXJrR3JheTUsW0h0LlBhbGV0dGUudGV4dEhlbHBdOkh0LkNvbG9yLmRhcmtHcmF5MyxbSHQuUGFsZXR0ZS50ZXh0SW5hY3RpdmVdOkh0LkNvbG9yLm5ldXRyYWxHcmF5fSxvbj17Li4ubm4sW0h0LlBhbGV0dGUuYmFja2dyb3VuZDFdOkh0LkNvbG9yLmRhcmtHcmF5NixbSHQuUGFsZXR0ZS5iYWNrZ3JvdW5kMl06SHQuQ29sb3IuZGFya0dyYXk1LFtIdC5QYWxldHRlLmJhY2tncm91bmQzXTpIdC5Db2xvci5kYXJrR3JheTQsW0h0LlBhbGV0dGUuYmFja2dyb3VuZDRdOkh0LkNvbG9yLmRhcmtHcmF5MyxbSHQuUGFsZXR0ZS5iYWNrZ3JvdW5kNV06SHQuQ29sb3IuZGFya0dyYXkyLFtIdC5QYWxldHRlLmJhY2tncm91bmQ2XTpIdC5Db2xvci5kYXJrR3JheTEsW0h0LlBhbGV0dGUuYnJhbmRTZWNvbmRhcnldOkh0LkNvbG9yLmRhcmtHcmF5MixbSHQuUGFsZXR0ZS5pbnB1dEJhY2tncm91bmRdOkh0LkNvbG9yLmRhcmtHcmF5MSxbSHQuUGFsZXR0ZS5pbnB1dENvbG9yXTpIdC5Db2xvci53aGl0ZSxbSHQuUGFsZXR0ZS5pbnB1dFBsYWNlaG9sZGVyXTpIdC5Db2xvci5saWdodEdyYXk1LFtIdC5QYWxldHRlLmlucHV0RGlzYWJsZWRdOkh0LkNvbG9yLm5ldXRyYWxHcmF5LFtIdC5QYWxldHRlLmlucHV0Rm9jdXNlZF06SHQuQ29sb3IubGlnaHRHcmF5NSxbSHQuUGFsZXR0ZS5pbnB1dEJvcmRlcl06SHQuQ29sb3IubmV1dHJhbEdyYXksW0h0LlBhbGV0dGUudGV4dERlZmF1bHRdOkh0LkNvbG9yLndoaXRlLFtIdC5QYWxldHRlLnRleHRIZWxwXTpIdC5Db2xvci5saWdodEdyYXk1LFtIdC5QYWxldHRlLnRleHRJbmFjdGl2ZV06SHQuQ29sb3IubmV1dHJhbEdyYXl9LGFuPVt7bGFiZWw6XCJPcGVuRmluIERlZmF1bHQgTGlnaHQgYW5kIERhcmsgVGhlbWVcIixwYWxldHRlczp7bGlnaHQ6ey4uLnJuLGJyYW5kUHJpbWFyeTpcIiMwQTc2RDNcIixicmFuZFNlY29uZGFyeTpIdC5Db2xvci5kYXJrR3JheTUsYmFja2dyb3VuZFByaW1hcnk6SHQuQ29sb3IuZGFya0dyYXk1fSxkYXJrOnsuLi5vbixicmFuZFByaW1hcnk6XCIjMEE3NkQzXCIsYnJhbmRTZWNvbmRhcnk6SHQuQ29sb3IuZGFya0dyYXkyLGJhY2tncm91bmRQcmltYXJ5Okh0LkNvbG9yLmRhcmtHcmF5NX19fV0sbG49KGUsdCk9Pntjb25zdCBuPXsuLi5lfSxyPXsuLi50fTtsZXQgbz10LmJhY2tncm91bmRQcmltYXJ5P1p0KHQuYmFja2dyb3VuZFByaW1hcnksITApOnt9LGE9ZS5iYWNrZ3JvdW5kUHJpbWFyeT9adChlLmJhY2tncm91bmRQcmltYXJ5KTp7fTtvPXsuLi5vLC4uLnJ9LGE9ey4uLmEsLi4ubn07cmV0dXJue2xpZ2h0OnsuLi50LC4uLm99LGRhcms6ey4uLmUsLi4uYX19fSxjbj1hc3luYyBlPT57bGV0IHQsbj1hd2FpdCBlbihlKS5UaGVtZS5nZXRUaGVtZXMoKTtuJiYwIT09bj8ubGVuZ3RofHwobj1hbik7dHJ5e3Q9YXdhaXQgZW4oZSkuVGhlbWUuZ2V0U2VsZWN0ZWRTY2hlbWUoKX1jYXRjaChlKXtjb25zb2xlLndhcm4oXCJGYWlsZWQgdG8gZ2V0IHNlbGVjdGVkIHNjaGVtZSBmcm9tIHBsYXRmb3JtXCIsZSl9Y29uc3Qgcj0oKGUsdCk9PmUubWFwKChlPT57bGV0IG4scixvLGE9aC5EYXJrO2lmKFwicGFsZXR0ZXNcImluIGUpe2NvbnN0IHQ9ZS5wYWxldHRlcztlLmRlZmF1bHQmJihhPWUuZGVmYXVsdCksbj1BdChvbix0LmRhcmspLHI9QXQocm4sdC5saWdodCksbz1sbih0LmRhcmssdC5saWdodCl9ZWxzZSBpZihcInBhbGV0dGVcImluIGUpe2NvbnN0IHQ9ZS5wYWxldHRlO249QXQob24sdCkscj1BdChybix0KSxvPWxuKHQsdCl9Y29uc3QgaT0oMCxIdC5jcmVhdGVUaGVtZSkoey4uLm4sLi4ubz8uZGFya30pLGw9KDAsSHQuY3JlYXRlVGhlbWUpKHsuLi5yLC4uLm8/LmxpZ2h0fSk7cmV0dXJue2xhYmVsOmUubGFiZWwsbG9nb1VybDplLmxvZ29VcmwsdGhlbWU6e2Rhcms6aSxsaWdodDpsfSxkZWZhdWx0U2NoZW1lOnR8fGF9fSkpKShuLHQpWzBdO3JldHVybiByfSxzbj17bmFtZTpULkJyb3dzZXJNZW51LGFsd2F5c09uVG9wOiEwLGF1dG9TaG93OiEwLGZyYW1lOiExLHJlc2l6YWJsZTohMSxiYWNrZ3JvdW5kQ29sb3I6XCIjMmYzMTM2XCIsc21hbGxXaW5kb3c6ITAsc2hvd1Rhc2tiYXJJY29uOiExLGJhY2tncm91bmRUaHJvdHRsaW5nOiEwLHNhdmVXaW5kb3dTdGF0ZTohMX07ZnVuY3Rpb24gdW4oZSl7Y29uc3QgdD17Li4uc24sLi4uZX07cmV0dXJuIHQudXJsPWZ1bmN0aW9uKGUpe2lmKCFPKXRocm93IG5ldyBFcnJvcihcInJlc29sdmVBYnNvbHV0ZVBhdGggY2FuIG9ubHkgYmUgdXNlZCBpbiBhIHdpbmRvd1wiKTtyZXR1cm4gZS5zdGFydHNXaXRoKFwiaHR0cFwiKT9lOmAke3dpbmRvdy5vcmlnaW59JHtlfWB9KHQudXJsPz9cIlwiKSx0fWNvbnN0IGRuPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IE1hcDtyZXR1cm57ZW1pdDpqdCh0LCh0PT54JiZmaW4uSW50ZXJBcHBsaWNhdGlvbkJ1cy5wdWJsaXNoKGUsdCkpKSxhZGRMaXN0ZW5lcjpFdCh0LCh0PT54JiZmaW4uSW50ZXJBcHBsaWNhdGlvbkJ1cy5zdWJzY3JpYmUoe3V1aWQ6ZmluLm1lLnV1aWR9LGUsdCkpKSxyZW1vdmVMaXN0ZW5lcjprdCh0KSxvbmNlOlB0KHQpfX0oXCJ3aW5kb3cubWVudVwiKSxmbj0oZSx0KT0+ZmluLldpbmRvdy53cmFwU3luYyhlKS51cGRhdGVPcHRpb25zKHtvcGFjaXR5OnR9KSxwbj1lPT5kbi5lbWl0KFwicmVzcG9uc2VcIixlKSxobj1fdCgoKCk9PkIoKS5nZXRDaGlsZFdpbmRvd3MoKSksNTAwKTtjb25zdCBDbj1uZXcgTWFwO2FzeW5jIGZ1bmN0aW9uIHZuKGUsdCl7Y29uc3Qgbj11bihlKSxyPXt0b3A6bi50b3AsbGVmdDpuLmxlZnQsd2lkdGg6bi5kZWZhdWx0V2lkdGh8fG4ud2lkdGgsaGVpZ2h0Om4uZGVmYXVsdEhlaWdodHx8bi5oZWlnaHR9O3JldHVybiB0LnNldChcInBhcmVudE5hbWVcIixmaW4uV2luZG93LmdldEN1cnJlbnRTeW5jKCkuaWRlbnRpdHkubmFtZSkse25hbWU6bi5uYW1lLGJvdW5kczpyLHJvdXRlOmAke24udXJsfSMke3QudG9TdHJpbmcoKX1gfX1hc3luYyBmdW5jdGlvbiBnbih7b3B0aW9uczplLHBhcmFtZXRlcnM6dH0pe2NvbnN0IG49dW4oZSkse25hbWU6cn09bjtsZXQgbz1hd2FpdCBhc3luYyBmdW5jdGlvbihlKXtyZXR1cm4oYXdhaXQgaG4oKSkuZmluZCgodD0+dC5pZGVudGl0eS5uYW1lPT09ZSkpfShyKTtpZihvKWF3YWl0IGFzeW5jIGZ1bmN0aW9uKGUsdCxuPSExKXtjb25zdHtuYW1lOnIsYm91bmRzOm8scm91dGU6YX09YXdhaXQgdm4oZSx0KSxpPXt1dWlkOmZpbi5tZS5pZGVudGl0eS51dWlkLG5hbWU6cn07YXdhaXQgUHJvbWlzZS5hbGwoW2ZuKGksMCksZmluLldpbmRvdy53cmFwU3luYyhpKS5zZXRCb3VuZHMobyldKSxuJiZhd2FpdCBmaW4uV2luZG93LndyYXBTeW5jKGkpLmNlbnRlcigpLGRuLmVtaXQoXCJ1cGRhdGVcIixyLG8sYSksYXdhaXQgcG4oe25hbWU6cixkYXRhOlwiY2FuY2VsZWRcIn0pfShuLHR8fG5ldyBVUkxTZWFyY2hQYXJhbXMpO2Vsc2V7Y29uc3R7cm91dGU6cixib3VuZHM6YX09YXdhaXQgdm4oZSx0KTtvPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPXVuKGUpLG89YXdhaXQgY24oZmluLm1lLmlkZW50aXR5KSxhPW8/LnRoZW1lO2lmKHIuYmFja2dyb3VuZENvbG9yPWE/LmRhcms/LnBhbGV0dGU/LmJhY2tncm91bmQ2fHxhPy5kYXJrPy5wYWxldHRlPy5iYWNrZ3JvdW5kNnx8ci5iYWNrZ3JvdW5kQ29sb3IsIUNuLmhhcyhyLm5hbWUpKXJldHVybiBuZXcgUHJvbWlzZSgoZT0+e2RuLm9uY2UoXCJyZWFkeVwiLChhc3luYyB0PT57aWYodC5uYW1lPT09ci5uYW1lKXtjb25zdCBuPWF3YWl0IENuLmdldChyLm5hbWUpO24ub25jZShcImJsdXJyZWRcIiwoKCk9Pntmbih0LDApLG4uaGlkZSgpLHBuKHtuYW1lOnIubmFtZSxkYXRhOlwiY2FuY2VsZWRcIn0pfSkpLGZuKHQsMSksZShuKX19KSk7Y29uc3Qgbz0oYXN5bmMoKT0+e2NvbnN0IGU9YXdhaXQgZmluLlBsYXRmb3JtLmdldEN1cnJlbnRTeW5jKCkuY3JlYXRlV2luZG93KEN0KHsuLi5yLG9wYWNpdHk6MCx1cmw6dHx8ci51cmwsZGVmYXVsdExlZnQ6bj8ubGVmdCxkZWZhdWx0VG9wOm4/LnRvcCxkZWZhdWx0V2lkdGg6bj8ud2lkdGgsZGVmYXVsdEhlaWdodDpuPy5oZWlnaHR9LCEwKSk7cmV0dXJuIGUub25jZShcImNsb3NlZFwiLCgoKT0+e0NuLmRlbGV0ZShyLm5hbWUpfSkpLGV9KSgpO0NuLnNldChyLm5hbWUsbyl9KSk7cmV0dXJuIENuLmdldChyLm5hbWUpfSh7Li4ubn0scixhKX1yZXR1cm4gb31jb25zdCBtbj1hc3luYyh7b3B0aW9uczplLGNvbnRlbnQ6dH0pPT57Y29uc3Qgbj1uZXcgVVJMU2VhcmNoUGFyYW1zKHsuLi50fSkscj17Li4uZSxuYW1lOmAke2UubmFtZX0tLSR7ZS5tb2RhbFBhcmVudElkZW50aXR5Py5uYW1lPz9cIlwifWB9O3JldHVybiBhd2FpdCBnbih7b3B0aW9uczpyLHBhcmFtZXRlcnM6bn0pLG5ldyBQcm9taXNlKChlPT57ZG4ub25jZShcInJlc3BvbnNlXCIsKGFzeW5jIG49PntuLm5hbWU9PT1yLm5hbWUmJihhd2FpdCBpZSh7dHlwZTpcIk1vZGFsXCIsYWN0aW9uOnQudGl0bGUsdmFsdWU6bi5kYXRhLGVudGl0eUlkOlcsc2tpcFZhbHVlSGFzaGluZzohMH0pLGUoe2RhdGE6bi5kYXRhfSkpfSkpfSkpfSx3bj1hc3luYyhlLHQsbj0hMSk9PntsZXQgcjtpZih0KXtjb25zdCBlPUYodCksbz1hd2FpdCBlLmdldEJvdW5kcygpOyhcIm1heGltaXplZFwiPT09YXdhaXQgZS5nZXRTdGF0ZSgpfHxuKSYmKHI9YXdhaXQgYXN5bmMgZnVuY3Rpb24oZSl7Y29uc3QgdD1hd2FpdCBhc3luYyBmdW5jdGlvbihlKXtjb25zdCB0PWF3YWl0IGZpbi5TeXN0ZW0uZ2V0TW9uaXRvckluZm8oKSxuPVt0LnByaW1hcnlNb25pdG9yLC4uLnQubm9uUHJpbWFyeU1vbml0b3JzXS5yZWR1Y2UoKCh0LG4pPT57Y29uc3Qgcj15bihlLG4pO3JldHVybiByPnQucGVyY2VudGFnZT97cGVyY2VudGFnZTpyLG1vbml0b3I6bn06dH0pLHtwZXJjZW50YWdlOjAsbW9uaXRvcjp0LnByaW1hcnlNb25pdG9yfSk7cmV0dXJuIG4ubW9uaXRvcn0oZSk7cmV0dXJuICQoe2hlaWdodDp0Lm1vbml0b3JSZWN0LmJvdHRvbS10Lm1vbml0b3JSZWN0LnRvcCx3aWR0aDp0Lm1vbml0b3JSZWN0LnJpZ2h0LXQubW9uaXRvclJlY3QubGVmdCxsZWZ0OnQubW9uaXRvclJlY3QubGVmdCx0b3A6dC5tb25pdG9yUmVjdC50b3AscmlnaHQ6dC5tb25pdG9yUmVjdC5yaWdodCxib3R0b206dC5tb25pdG9yUmVjdC5ib3R0b219KX0obykpLHI9cj8/JChvKX1lbHNle2NvbnN0IGU9KGF3YWl0IGZpbi5TeXN0ZW0uZ2V0TW9uaXRvckluZm8oKSkucHJpbWFyeU1vbml0b3IuYXZhaWxhYmxlUmVjdDtyPXtsZWZ0Oigobz1lKS5sZWZ0K28ucmlnaHQpLzIsdG9wOihvLnRvcCtvLmJvdHRvbSkvMn19dmFyIG87Y29uc3R7ZGVmYXVsdEhlaWdodDphLGRlZmF1bHRXaWR0aDppfT1lO3JldHVybigoZSx0KT0+e2NvbnN0IG49dC53aWR0aC8yLHI9dC5oZWlnaHQvMjtyZXR1cm57bGVmdDpNYXRoLnJvdW5kKGUubGVmdC1uKSx0b3A6TWF0aC5yb3VuZChlLnRvcC1yKSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19KShyLHtoZWlnaHQ6YSx3aWR0aDppfSl9O2Z1bmN0aW9uIHluKGUsdCl7cmV0dXJuKE1hdGgubWluKHQubW9uaXRvclJlY3QuYm90dG9tLGUudG9wK2UuaGVpZ2h0KS1NYXRoLm1heCh0Lm1vbml0b3JSZWN0LnRvcCxlLnRvcCkpKihNYXRoLm1pbih0Lm1vbml0b3JSZWN0LnJpZ2h0LGUubGVmdCtlLndpZHRoKS1NYXRoLm1heCh0Lm1vbml0b3JSZWN0LmxlZnQsZS5sZWZ0KSkvKGUuaGVpZ2h0KmUud2lkdGgpfWFzeW5jIGZ1bmN0aW9uIGJuKGUsdCxuPSExKXtpZihufHwhdHx8dCYmXCJtYXhpbWl6ZWRcIj09PWF3YWl0IEYodCkuZ2V0U3RhdGUoKSlyZXR1cm4gd24oZSx0LCEwKTtjb25zdCByPWF3YWl0IHduKGUsdCk7cmV0dXJuIGF3YWl0KGFzeW5jIGU9Pntjb25zdCB0PWF3YWl0IGZpbi5TeXN0ZW0uZ2V0TW9uaXRvckluZm8oKSxuPVt0LnByaW1hcnlNb25pdG9yLC4uLnQubm9uUHJpbWFyeU1vbml0b3JzXTtmb3IoY29uc3QgdCBvZiBuKWlmKDE9PT15bihlLHQpKXJldHVybiExO3JldHVybiEwfSkocik/KGF3YWl0IEYodCkuY2VudGVyKCksd24oZSx0KSk6KGNvbnNvbGUud2FybihcIlJlc3BvbnNlIG1vZGFsIGlzbid0IG9mZiBzY3JlZW4sIG5vdCBjZW50ZXJpbmcgcGFyZW50IHdpbmRvd1wiKSxyKX1jb25zdCB4bj1hc3luYyhlLHQpPT57Y29uc3R7d2luZG93T3B0aW9uczpuLGNvbnRlbnQ6cn09YXdhaXQoYXN5bmMgZT0+KHt0aXRsZTpcIlN3aXRjaCBXb3Jrc3BhY2VcIix3aW5kb3dPcHRpb25zOnt1cmw6SCt2ZS5SZXNwb25zZU1vZGFsLG5hbWU6VC5Ccm93c2VyTWVudSxkZWZhdWx0SGVpZ2h0OjEzNCxkZWZhdWx0V2lkdGg6NDI0fSxjb250ZW50Ont0aXRsZTpgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHN3aXRjaCB0byAke2V9P2AsYm9keTpcIkFueSB1bnNhdmVkIGNoYW5nZXMgd2lsbCBiZSBkaXNjYXJkZWRcIixhZmZpcm1hdGl2ZUJ1dHRvbjpcIkNvbmZpcm1cIixuZWdhdGl2ZUJ1dHRvbjpcIkNhbmNlbFwifX0pKSh0KSxvPWF3YWl0IGJuKG4sZSksYT17Li4ubix0b3A6by50b3AsbGVmdDpvLmxlZnR9O3JldHVyblwiYWZmaXJtYXRpdmVcIj09PShhd2FpdCBtbih7b3B0aW9uczphLGNvbnRlbnQ6cn0pKS5kYXRhfSxPbj1hc3luYyhlLHQpPT57Y29uc3R7d2luZG93T3B0aW9uczpuLGNvbnRlbnQ6cn09YXdhaXQoYXN5bmMoZSx0KT0+KHt0aXRsZTpcIkRlbGV0ZSBXb3Jrc3BhY2VcIix3aW5kb3dPcHRpb25zOnt1cmw6SCt2ZS5SZXNwb25zZU1vZGFsLG5hbWU6VC5Ccm93c2VyTWVudSxkZWZhdWx0SGVpZ2h0OjE0NCxkZWZhdWx0V2lkdGg6MzcyLG1vZGFsUGFyZW50SWRlbnRpdHk6ZX0sY29udGVudDp7dGl0bGU6XCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcGVybWFuZW50bHkgZGVsZXRlIHRoaXMgd29ya3NwYWNlP1wiLGJvZHk6YCR7dH1gLGFmZmlybWF0aXZlQnV0dG9uOlwiQ29uZmlybVwiLG5lZ2F0aXZlQnV0dG9uOlwiQ2FuY2VsXCJ9fSkpKGUsdCksbz1hd2FpdCBibihuLG4ubW9kYWxQYXJlbnRJZGVudGl0eSksYT17Li4ubix0b3A6by50b3AsbGVmdDpvLmxlZnR9O3JldHVyblwiYWZmaXJtYXRpdmVcIj09PShhd2FpdCBtbih7b3B0aW9uczphLGNvbnRlbnQ6cn0pKS5kYXRhfSxMbj1hc3luYyhlLHQsbik9Pntjb25zdCByPW4/dm9pZCAwOmUse3dpbmRvd09wdGlvbnM6byxjb250ZW50OmF9PWF3YWl0KGFzeW5jKGUsdCk9Pih7dGl0bGU6XCJQbGF0Zm9ybSBRdWl0XCIsd2luZG93T3B0aW9uczp7dXJsOkgrdmUuUmVzcG9uc2VNb2RhbCxuYW1lOlQuQnJvd3Nlck1lbnUsZGVmYXVsdEhlaWdodDoxMzQsZGVmYXVsdFdpZHRoOjQ3NCxtb2RhbFBhcmVudElkZW50aXR5OnR9LGNvbnRlbnQ6e3RpdGxlOmBDbG9zZSB0aGUgJHtcIlBsYXRmb3JtXCI9PT1lP1wicGxhdGZvcm1cIjpgJHtlfSBQbGF0Zm9ybWB9P2AsYm9keTpcIkNsb3NpbmcgYSBwbGF0Zm9ybSB3aWxsIGNsb3NlIGFueSB3b3Jrc3BhY2VzLCBhcHBzIG9yIGFueSBwcm9jZXNzZXMgdGhhdCBhcmUgcnVubmluZy5cIixhZmZpcm1hdGl2ZUJ1dHRvbjpcIkNvbmZpcm1cIixuZWdhdGl2ZUJ1dHRvbjpcIkNhbmNlbFwifX0pKSh0LHIpLGk9YXdhaXQgYm4obyxlLG4pLGw9ey4uLm8sdG9wOmkudG9wLGxlZnQ6aS5sZWZ0fTtyZXR1cm5cImFmZmlybWF0aXZlXCI9PT0oYXdhaXQgbW4oe29wdGlvbnM6bCxjb250ZW50OmF9KSkuZGF0YX0sTW49YXN5bmMgZT0+e2NvbnN0e3dpbmRvd09wdGlvbnM6dCxjb250ZW50Om59PWF3YWl0KGFzeW5jIGU9Pih7dGl0bGU6XCJSZXN0b3JlIENoYW5nZXNcIix3aW5kb3dPcHRpb25zOnt1cmw6SCt2ZS5SZXNwb25zZU1vZGFsLG5hbWU6VC5Ccm93c2VyTWVudSxkZWZhdWx0SGVpZ2h0OjEzNCxkZWZhdWx0V2lkdGg6NDI0LG1vZGFsUGFyZW50SWRlbnRpdHk6ZX0sY29udGVudDp7dGl0bGU6XCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVzdG9yZSB0byBsYXN0IHNhdmVkIGNoYW5nZXM/XCIsYm9keTpcIkFueSB1bnNhdmVkIGNoYW5nZXMgd2lsbCBiZSBkaXNjYXJkZWRcIixhZmZpcm1hdGl2ZUJ1dHRvbjpcIkNvbmZpcm1cIixuZWdhdGl2ZUJ1dHRvbjpcIkNhbmNlbFwifX0pKShlKSxyPWF3YWl0IGJuKHQsdC5tb2RhbFBhcmVudElkZW50aXR5KSxvPXsuLi50LHRvcDpyLnRvcCxsZWZ0OnIubGVmdH07cmV0dXJuXCJhZmZpcm1hdGl2ZVwiPT09KGF3YWl0IG1uKHtvcHRpb25zOm8sY29udGVudDpufSkpLmRhdGF9O2FzeW5jIGZ1bmN0aW9uIFNuKHtvcHRpb25zOmUsLi4udH0pe3RyeXtpZighKCEhZT8uc2tpcFByb21wdHx8YXdhaXQgeG4oZT8ucHJvbXB0Q29udGFpbmVyV2luZG93SWRlbnRpdHksdC50aXRsZSkpKXJldHVybiExO2NvbnN0IG49dG4oKTthd2FpdCBuLmFwcGx5U25hcHNob3QodC5zbmFwc2hvdCx7Li4uZT8uYXBwbHlTbmFwc2hvdE9wdGlvbnM/P3t9LGNsb3NlRXhpc3RpbmdXaW5kb3dzOmU/LmFwcGx5U25hcHNob3RPcHRpb25zPy5jbG9zZUV4aXN0aW5nV2luZG93cz8/ITB9KSxfbih0KSxidChcIldvcmtzcGFjZSBTd2l0Y2hlZCFcIikuY2F0Y2goY29uc29sZS53YXJuKX1jYXRjaChlKXtyZXR1cm4gY29uc29sZS5lcnJvcihcImZhaWxlZCB0byBhcHBseSB0aGUgY3VycmVudCB3b3Jrc3BhY2U6IFwiLGUpLCExfXJldHVybiEwfWZ1bmN0aW9uIF9uKGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBsb2NhbFN0b3JhZ2UpdHJ5e2NvbnN0IHQ9SlNPTi5zdHJpbmdpZnkoZSk7THQoT3QuQ3VycmVudFdvcmtzcGFjZUlkLHQpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoXCJmYWlsZWQgdG8gc2V0IHRoZSBhY3RpdmUgd29ya3NwYWNlOiBcIixlKX19YXN5bmMgZnVuY3Rpb24gam4oKXtjb25zdCBlPXRuKCksdD1hd2FpdCBlLmdldFNuYXBzaG90KCk7cmV0dXJue3dvcmtzcGFjZUlkOkhlKCksdGl0bGU6YXdhaXQgSG4oKSxtZXRhZGF0YTp7QVBJVmVyc2lvbjpSfSxzbmFwc2hvdDp0fX1hc3luYyBmdW5jdGlvbiBFbigpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBsb2NhbFN0b3JhZ2UpcmV0dXJuIGpuKCk7Y29uc3QgZT1NdChPdC5DdXJyZW50V29ya3NwYWNlSWQpO2lmKCFlKXJldHVybiBqbigpO2NvbnN0IHQ9SlNPTi5wYXJzZShlKSxuPXRuKCkscj1hd2FpdCBuLmdldFNuYXBzaG90KCk7cmV0dXJuey4uLnQsbWV0YWRhdGE6e0FQSVZlcnNpb246Un0sc25hcHNob3Q6cn19Y29uc3QgUG49YXN5bmMoKT0+KGF3YWl0IFBlKFcpKS5kaXNwYXRjaChfZS5HZXRTYXZlZFdvcmtzcGFjZXMsdm9pZCAwKSxrbj1hc3luYyBlPT5hd2FpdChhc3luYyBlPT4oYXdhaXQgUGUoVykpLmRpc3BhdGNoKF9lLkdldFNhdmVkV29ya3NwYWNlLGUpKShlLndvcmtzcGFjZUlkKT8oYXN5bmMgZT0+KGF3YWl0IFBlKFcpKS5kaXNwYXRjaChfZS5VcGRhdGVTYXZlZFdvcmtzcGFjZSxlKSkoe3dvcmtzcGFjZUlkOmUud29ya3NwYWNlSWQsd29ya3NwYWNlOmV9KTooYXN5bmMgZT0+KGF3YWl0IFBlKFcpKS5kaXNwYXRjaChfZS5DcmVhdGVTYXZlZFdvcmtzcGFjZSxlKSkoe3dvcmtzcGFjZTplfSk7YXN5bmMgZnVuY3Rpb24gSG4oZT1cIlVudGl0bGVkIFdvcmtzcGFjZVwiKXtjb25zdCB0PShhd2FpdCBQbigpKS5tYXAoKCh7dGl0bGU6ZX0pPT5lKSk7cmV0dXJuIEZlKGUsdCl9YXN5bmMgZnVuY3Rpb24gVm4oKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgbG9jYWxTdG9yYWdlKXRyeXtjb25zdCBlPU10KE90Lkxhc3RGb2N1c2VkQnJvd3NlcldpbmRvdyk7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9SlNPTi5wYXJzZShlKTtpZihhd2FpdCBYKHQpKXJldHVybiB0fWNhdGNoKGUpe3Rocm93IG5ldyBFcnJvcihgZmFpbGVkIHRvIGdldCBsYXN0IGZvY3VzZWQgYnJvd3NlciB3aW5kb3c6ICR7ZX1gKX19YXN5bmMgZnVuY3Rpb24gUm4oZT1maW4ubWUuaWRlbnRpdHkpe2F3YWl0IHEoZSkmJmZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBsb2NhbFN0b3JhZ2UpdHJ5e2NvbnN0IHQ9SlNPTi5zdHJpbmdpZnkoZSk7THQoT3QuTGFzdEZvY3VzZWRCcm93c2VyV2luZG93LHQpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoXCJmYWlsZWQgdG8gc2F2ZSBsYXN0IGZvY3VzZWQgYnJvd3NlciB3aW5kb3c6IFwiLGUpfX0oZSl9dmFyIEluPW4oMTk4KSxabj1uLm4oSW4pO2NvbnN0IEFuPWU9PmAke2UubmFtZX1gLERuPWFzeW5jKCk9Pntjb25zdCBlPWF3YWl0IFdlKCksdD1uZXcgU2V0O3JldHVybiBlLmZvckVhY2goKGU9PntbLi4uSWUoZS5sYXlvdXQuY29udGVudCksLi4uKGUucGFuZWxzfHxbXSkubWFwKChlPT5lLnZpZXdPcHRpb25zKSldLmZvckVhY2goKGU9Pntjb25zdCBuPUFuKGUpO24mJnQuYWRkKG4pfSkpfSkpLHR9O2NvbnN0IEJuPVpuKCkoKCgpPT5hc3luYyBmdW5jdGlvbigpe2NvbnN0IGU9YXdhaXQgRG4oKSx0PU4oKSxuPShhd2FpdCB0LmdldEN1cnJlbnRWaWV3cygpKS5maWx0ZXIoKCh7aWRlbnRpdHk6dH0pPT4hZS5oYXMoQW4odCkpKSk7bi5sZW5ndGgmJnNldFRpbWVvdXQoKGFzeW5jKCk9Pntjb25zdCBlPWF3YWl0IERuKCk7bi5mb3JFYWNoKCgoe2lkZW50aXR5OnR9KT0+e2NvbnN0IG49QW4odCk7ZS5oYXMobil8fGZpbi5WaWV3LndyYXBTeW5jKHQpLmRlc3Ryb3koKX0pKX0pLDI1MDApfSgpLmNhdGNoKChlPT5jb25zb2xlLmRlYnVnKFwiZXJyb3IgaW4gc2NoZWR1bGVWaWV3Q2xlYW51cFwiLGUpKSkpLDVlMyx7bGVhZGluZzohMSx0cmFpbGluZzohMH0pLFRuPWFzeW5jIGU9PntlJiZlLm5hbWUuc3RhcnRzV2l0aChULkJyb3dzZXJXaW5kb3cpJiZCbigpfTtjb25zdCAkbj1abigpKChhc3luYygpPT57Y29uc3QgZT1hd2FpdCBmaW4uUGxhdGZvcm0uZ2V0Q3VycmVudFN5bmMoKS5BcHBsaWNhdGlvbi5nZXRDaGlsZFdpbmRvd3MoKTtsZXQgdCxuPSExO2Zvcihjb25zdCByIG9mIGUpaWYoci5pZGVudGl0eS5uYW1lPT09VC5Ccm93c2VyTWVudT90PXI6YXdhaXQgcShyLmlkZW50aXR5KSYmKG49ITApLG4pYnJlYWs7IW4mJnQmJnQuY2xvc2UoKX0pLDEwMCx7bGVhZGluZzohMSx0cmFpbGluZzohMH0pLEZuPWFzeW5jKCk9PntCKCkub24oXCJ3aW5kb3ctY2xvc2VkXCIsJG4pfTtsZXQgV249e307Y29uc3QgTm49YXN5bmMoe2FjdGlvbklkOmUscGF5bG9hZDp0fSk9PntpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBXbltlXSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGEgY29uZmlndXJlZCBmdW5jdGlvbiBmb3IgdGhlIGFjdGlvbiAnJHtlfSdgKTtyZXR1cm4gV25bZV0odCl9O2Z1bmN0aW9uIHpuKCl7cmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKE90Lk1hY2hpbmVOYW1lKT8/XCJ1bmtub3duXCJ9bGV0IFVuO2FzeW5jIGZ1bmN0aW9uIEduKCl7cmV0dXJuIFVufHwoVW49YXdhaXQgZmluLlN5c3RlbS5nZXRNYWNoaW5lSWQoKSksVW59Y29uc3QgcW49ZT0+e2lmKGUubGF5b3V0JiZBcnJheS5pc0FycmF5KGUud29ya3NwYWNlUGxhdGZvcm0/LnBhZ2VzKSl7Y29uc3QgdD1lLndvcmtzcGFjZVBsYXRmb3JtLnBhZ2VzLmZpbmQoKGU9PmUuaXNBY3RpdmUpKTtpZih0KWlmKHQuaXNMb2NrZWQpe2NvbnN0IG49KChlLHQpPT57Y29uc3Qgbj1JZSh0LmNvbnRlbnQpO3JldHVybnsuLi5WZShlLChlPT57Y29uc3QgdD1uLmZpbmQoKHQ9PnQuX2ludGVybmFsV29ya3NwYWNlRGF0YT8udmlld0lkZW50aWZpZXI9PT1lLl9pbnRlcm5hbFdvcmtzcGFjZURhdGE/LnZpZXdJZGVudGlmaWVyKSkscj10P3QuaXNDbG9zYWJsZTplLmlzQ2xvc2FibGU7cmV0dXJuey4uLmUsaXNDbG9zYWJsZTpyfX0pKSxzZXR0aW5nczp0LnNldHRpbmdzfX0pKGUubGF5b3V0LHQubGF5b3V0KTt0LmxheW91dD1uLGUubGF5b3V0PW59ZWxzZSB0LmxheW91dD1lLmxheW91dH1yZXR1cm4gZX07YXN5bmMgZnVuY3Rpb24gWW4oZSl7Y29uc3QgdD1lfHxhd2FpdCBmaW4uUGxhdGZvcm0uZ2V0Q3VycmVudFN5bmMoKS5nZXRTbmFwc2hvdCgpO2lmKHQuc25hcHNob3REZXRhaWxzPy5tYWNoaW5lSWQpcmV0dXJuIHQ7Y29uc3Qgbj16bigpO3JldHVybnsuLi50LHNuYXBzaG90RGV0YWlsczp7Li4udC5zbmFwc2hvdERldGFpbHMsbWFjaGluZUlkOmF3YWl0IEduKCksbWFjaGluZU5hbWU6bn19fWZ1bmN0aW9uIEtuKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoKHQsbik9PntlLm9uY29tcGxldGU9ZS5vbnN1Y2Nlc3M9KCk9PnQoZS5yZXN1bHQpLGUub25hYm9ydD1lLm9uZXJyb3I9KCk9Pm4oZS5lcnJvcil9KSl9ZnVuY3Rpb24gWG4oZSx0KXtjb25zdCBuPWluZGV4ZWREQi5vcGVuKGUpO24ub251cGdyYWRlbmVlZGVkPSgpPT5uLnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSh0KTtjb25zdCByPUtuKG4pO3JldHVybihlLG4pPT5yLnRoZW4oKHI9Pm4oci50cmFuc2FjdGlvbih0LGUpLm9iamVjdFN0b3JlKHQpKSkpfWxldCBRbjtmdW5jdGlvbiBKbigpe3JldHVybiBRbnx8KFFuPVhuKFwia2V5dmFsLXN0b3JlXCIsXCJrZXl2YWxcIikpLFFufWZ1bmN0aW9uIGVyKGUsdD1KbigpKXtyZXR1cm4gdChcInJlYWRvbmx5XCIsKHQ9PktuKHQuZ2V0KGUpKSkpfWZ1bmN0aW9uIHRyKGUsdCxuPUpuKCkpe3JldHVybiBuKFwicmVhZHdyaXRlXCIsKG49PihuLnB1dCh0LGUpLEtuKG4udHJhbnNhY3Rpb24pKSkpfWZ1bmN0aW9uIG5yKGUsdD1KbigpKXtyZXR1cm4gdChcInJlYWR3cml0ZVwiLCh0PT4odC5kZWxldGUoZSksS24odC50cmFuc2FjdGlvbikpKSl9ZnVuY3Rpb24gcnIoZSx0KXtyZXR1cm4gZS5vcGVuQ3Vyc29yKCkub25zdWNjZXNzPWZ1bmN0aW9uKCl7dGhpcy5yZXN1bHQmJih0KHRoaXMucmVzdWx0KSx0aGlzLnJlc3VsdC5jb250aW51ZSgpKX0sS24oZS50cmFuc2FjdGlvbil9ZnVuY3Rpb24gb3IoZT1KbigpKXtyZXR1cm4gZShcInJlYWRvbmx5XCIsKGU9PntpZihlLmdldEFsbEtleXMpcmV0dXJuIEtuKGUuZ2V0QWxsS2V5cygpKTtjb25zdCB0PVtdO3JldHVybiBycihlLChlPT50LnB1c2goZS5rZXkpKSkudGhlbigoKCk9PnQpKX0pKX1jb25zdCBhcj1hc3luYyhlLHQsbik9Pntjb25zdCByPU10KE90Lkhhc01vdmVkU3RvcmUpLG89cj9KU09OLnBhcnNlKHIpOnt9O2lmKG8mJm9bbl0pcmV0dXJuO29bbl09ITAsTHQoT3QuSGFzTW92ZWRTdG9yZSxKU09OLnN0cmluZ2lmeShvKSk7Y29uc3QgYT1hd2FpdCBmdW5jdGlvbihlPUpuKCkpe3JldHVybiBlKFwicmVhZG9ubHlcIiwodD0+e2lmKHQuZ2V0QWxsJiZ0LmdldEFsbEtleXMpcmV0dXJuIFByb21pc2UuYWxsKFtLbih0LmdldEFsbEtleXMoKSksS24odC5nZXRBbGwoKSldKS50aGVuKCgoW2UsdF0pPT5lLm1hcCgoKGUsbik9PltlLHRbbl1dKSkpKTtjb25zdCBuPVtdO3JldHVybiBlKFwicmVhZG9ubHlcIiwoZT0+cnIoZSwoZT0+bi5wdXNoKFtlLmtleSxlLnZhbHVlXSkpKS50aGVuKCgoKT0+bikpKSl9KSl9KGUpO2F3YWl0IGZ1bmN0aW9uKGUsdD1KbigpKXtyZXR1cm4gdChcInJlYWR3cml0ZVwiLCh0PT4oZS5mb3JFYWNoKChlPT50LnB1dChlWzFdLGVbMF0pKSksS24odC50cmFuc2FjdGlvbikpKSl9KGEsdCl9LGlyPShlLHQpPT5YbihlK1wiLVwiK2Zpbi5tZS51dWlkLHQpLGxyPShlLHQpPT57Y29uc3Qgbj1pcihlLHQpLHI9WG4oZSx0KTtyZXR1cm4gYXIocixuLGUpLG59LGNyPShlLHQ9XCJcIik9PmUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0LnRvTG93ZXJDYXNlKCkpLHNyPUwmJngmJmxyKFwib3BlbmZpbi1ob21lLXBhZ2VzXCIsXCJwYWdlc1wiKTthc3luYyBmdW5jdGlvbiB1cihlKXtpZighc3IpdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGdldCBwYWdlIC0gSW5kZXhEQiBub3Qgc3VwcG9ydGVkXCIpO2NvbnN0IHQ9YXdhaXQgZXIoZSxzcik7aWYodClyZXR1cm4gdC5wYWdlSWQ9ZS50b1N0cmluZygpLHQudGl0bGU9dC50aXRsZXx8dC5wYWdlSWQsdH1hc3luYyBmdW5jdGlvbiBkcihlKXtpZighc3IpdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGdldCBwYWdlIGxpc3QgLSBJbmRleERCIG5vdCBzdXBwb3J0ZWRcIik7Y29uc3QgdD1hd2FpdCBvcihzciksbj0oYXdhaXQgUHJvbWlzZS5hbGwodC5tYXAoKGU9PnVyKGUudG9TdHJpbmcoKSkpKSkpLmZpbHRlcigoZT0+ISFlKSk7cmV0dXJuIGU/bi5maWx0ZXIoKHQ9PmNyKHQudGl0bGUsZSkpKTpufWFzeW5jIGZ1bmN0aW9uIGZyKHtwYWdlOmV9KXtpZighc3IpdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGNyZWF0ZSBwYWdlIC0gSW5kZXhEQiBub3Qgc3VwcG9ydGVkXCIpO2F3YWl0IHRyKGUucGFnZUlkLGUsc3IpfWFzeW5jIGZ1bmN0aW9uIHByKGUpe2lmKCFzcil0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gZGVsZXRlIHBhZ2UgLSBJbmRleERCIG5vdCBzdXBwb3J0ZWRcIik7YXdhaXQgbnIoZSxzcil9YXN5bmMgZnVuY3Rpb24gaHIoe3BhZ2VJZDplLHBhZ2U6dH0pe2lmKCFzcil0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gdXBkYXRlIHBhZ2UgLSBJbmRleERCIG5vdCBzdXBwb3J0ZWRcIik7aWYodm9pZCAwPT09YXdhaXQgdXIoZSkpdGhyb3cgbmV3IEVycm9yKFwicGFnZSBub3QgZm91bmRcIik7YXdhaXQgZnIoe3BhZ2U6dH0pLGUhPT10LnBhZ2VJZCYmYXdhaXQgcHIoZSl9dmFyIENyOyFmdW5jdGlvbihlKXtlLkxhYmVsPVwibm9ybWFsXCIsZS5TZXBhcmF0b3I9XCJzZXBhcmF0b3JcIixlLlN1Ym1lbnU9XCJzdWJtZW51XCIsZS5DaGVja2JveD1cImNoZWNrYm94XCJ9KENyfHwoQ3I9e30pKTtjb25zdCB2cj17dHlwZTpDci5TZXBhcmF0b3IsZGF0YTp2b2lkIDB9O2NvbnN0IGdyPWFzeW5jKGUsdCk9Pntjb25zdCBuPWF3YWl0KGFzeW5jIGU9Pih7Li4uZSxsYXlvdXREZXRhaWxzOnttYWNoaW5lSWQ6YXdhaXQgR24oKSxtYWNoaW5lTmFtZTp6bigpfX0pKSh0KTtyZXR1cm57cGFnZUlkOkhlKCksdGl0bGU6ZSxsYXlvdXQ6bixpc1JlYWRPbmx5OiExLGhhc1Vuc2F2ZWRDaGFuZ2VzOiEwfX0sbXI9YXN5bmMoZT1XKT0+e2NvbnN0e3dvcmtzcGFjZVBsYXRmb3JtOnR9PWF3YWl0IEYoZSkuZ2V0T3B0aW9ucygpLG49dD8ubmV3UGFnZVVybCxyPXQ/Lm5ld1RhYlVybDtyZXR1cm57bmV3UGFnZVVybDpuLG5ld1RhYlVybDpyfX0sd3I9YXN5bmMoZT1XKT0+e2NvbnN0e25ld1BhZ2VVcmw6dH09YXdhaXQgbXIoZSk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKFwiVHJ5aW5nIHRvIGNyZWF0ZSBhIG5ldyBwYWdlIHdpdGhvdXQgYSBuZXdQYWdlVXJsIHNldFwiKTtyZXR1cm4oYXN5bmMoZSx0LG49Vyk9PntsZXQgcjthd2FpdCBxKG4pJiYocj0oYXdhaXQgRihuKS5nZXRPcHRpb25zKCkpLmxheW91dHx8e3NldHRpbmdzOnt9fSk7cmV0dXJuey4uLnIsY29udGVudDpbe3R5cGU6XCJzdGFja1wiLGNvbnRlbnQ6W3t0eXBlOlwiY29tcG9uZW50XCIsY29tcG9uZW50TmFtZTpcInZpZXdcIixjb21wb25lbnRTdGF0ZTp7dGl0bGU6ZSx1cmw6dH19XX1dfX0pKFwiTmV3IFRhYlwiLHQsZSl9LHlyPXt0eXBlOkNyLkxhYmVsLGxhYmVsOlwiQ2xvc2UgV2luZG93XCIsZGF0YTp7dHlwZTpwLkNsb3NlV2luZG93fX0sYnI9e3R5cGU6Q3IuTGFiZWwsbGFiZWw6XCJPcGVuIFN0b3JlZnJvbnRcIixkYXRhOnt0eXBlOnAuT3BlblN0b3JlZnJvbnR9fSx4cj17dHlwZTpDci5MYWJlbCxsYWJlbDpcIlF1aXQgUGxhdGZvcm1cIixkYXRhOnt0eXBlOnAuUXVpdH19LE9yPXt0eXBlOkNyLkxhYmVsLGxhYmVsOlwiTmV3IFdpbmRvd1wiLGRhdGE6e3R5cGU6cC5OZXdXaW5kb3d9fSxMcj17dHlwZTpDci5MYWJlbCxsYWJlbDpcIlNhdmUgUGFnZVwiLGRhdGE6e3R5cGU6cC5TYXZlUGFnZX19LE1yPXt0eXBlOkNyLkxhYmVsLGxhYmVsOlwiU2F2ZSBQYWdlIEFzLi4uXCIsZGF0YTp7dHlwZTpwLlNhdmVQYWdlQXN9fSxTcj17dHlwZTpDci5MYWJlbCxsYWJlbDpcIlJlc3RvcmUgdG8gTGFzdCBTYXZlZCBDaGFuZ2VzXCIsZGF0YTp7dHlwZTpwLlJlc3RvcmVDaGFuZ2VzfX0sX3I9e3R5cGU6Q3IuTGFiZWwsbGFiZWw6XCJTYXZlIFdvcmtzcGFjZVwiLGRhdGE6e3R5cGU6cC5TYXZlV29ya3NwYWNlfX0sanI9e3R5cGU6Q3IuTGFiZWwsbGFiZWw6XCJTYXZlIFdvcmtzcGFjZSBBcy4uLlwiLGRhdGE6e3R5cGU6cC5TYXZlV29ya3NwYWNlQXN9fSxFcj1hc3luYyBlPT57Y29uc3QgdD1hd2FpdChhc3luYygpPT4oYXdhaXQgZmluLlN5c3RlbS5nZXRIb3N0U3BlY3MoKSkubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwid2luZG93c1wiKSkoKTtyZXR1cm57bGFiZWw6XCJQcmludC4uLlwiLHN1Ym1lbnU6W3t0eXBlOkNyLkxhYmVsLGxhYmVsOlwiUHJpbnRcIixkYXRhOnt0eXBlOnAuUHJpbnR9LGVuYWJsZWQ6ZX0se3R5cGU6Q3IuTGFiZWwsbGFiZWw6XCJQcmludCBBbGxcIixkYXRhOnt0eXBlOnAuUHJpbnRBbGx9fSwuLi50P1t2cix7dHlwZTpDci5MYWJlbCxsYWJlbDpcIlByaW50IFNjcmVlblwiLGRhdGE6e3R5cGU6cC5QcmludFNjcmVlbn19XTpbXV0sZGF0YTp2b2lkIDB9fSxQcj17dHlwZTpDci5MYWJlbCxsYWJlbDpcIlJlbmFtZSBXb3Jrc3BhY2VcIixkYXRhOnt0eXBlOnAuUmVuYW1lV29ya3NwYWNlfX0sa3I9XCJTd2l0Y2ggV29ya3NwYWNlXCIsSHI9XCJEZWxldGUgV29ya3NwYWNlXCIsVnI9XCJBcHBlYXJhbmNlXCIsUnI9W3lyLHZyLGJyLHZyLHhyXSxJcj1bdnIseXIsdnIseHJdLFpyPShlLHQsbik9PnQubWFwKCh0PT57Y29uc3Qgcj10LndvcmtzcGFjZUlkPT09ZS53b3Jrc3BhY2VJZDtyZXR1cm57bGFiZWw6dC50aXRsZSx0eXBlOkNyLkNoZWNrYm94LGVuYWJsZWQ6IXIsY2hlY2tlZDpyLGRhdGE6e3R5cGU6bix3b3Jrc3BhY2VJZDp0LndvcmtzcGFjZUlkfX19KSksQXI9YXN5bmMoKT0+e2NvbnN0IGU9KGF3YWl0IGNuKGZpbi5tZS5pZGVudGl0eSkpLmRlZmF1bHRTY2hlbWU7cmV0dXJuW3tsYWJlbDpcIkxpZ2h0XCIsdHlwZTpDci5DaGVja2JveCxjaGVja2VkOmU9PT1oLkxpZ2h0LGRhdGE6e3R5cGU6cC5BcHBlYXJhbmNlLHNjaGVtZTpoLkxpZ2h0fX0se2xhYmVsOlwiRGFya1wiLHR5cGU6Q3IuQ2hlY2tib3gsY2hlY2tlZDplPT09aC5EYXJrLGRhdGE6e3R5cGU6cC5BcHBlYXJhbmNlLHNjaGVtZTpoLkRhcmt9fSx7bGFiZWw6XCJTeW5jIHdpdGggT1Mgc2V0dGluZ1wiLHR5cGU6Q3IuQ2hlY2tib3gsY2hlY2tlZDplPT09aC5TeXN0ZW0sZGF0YTp7dHlwZTpwLkFwcGVhcmFuY2Usc2NoZW1lOmguU3lzdGVtfX1dfSxEcj1hc3luYyhlLHQ9W10pPT57Y29uc3Qgbj1hd2FpdCBRKCkse25ld1BhZ2VVcmw6cn09YXdhaXQgbXIoZSksbz1hd2FpdChhc3luYyBlPT57Y29uc3QgdD1GKGUpLHt3b3Jrc3BhY2VQbGF0Zm9ybTpufT1hd2FpdCB0LmdldE9wdGlvbnMoKTtyZXR1cm4gbj8uZGlzYWJsZU11bHRpcGxlUGFnZXN9KShlKSxhPWF3YWl0KGFzeW5jIGU9Pntjb25zdCB0PUYoZSkse3dvcmtzcGFjZVBsYXRmb3JtOm59PWF3YWl0IHQuZ2V0T3B0aW9ucygpO3JldHVybiBuPy5pc0xvY2tlZH0pKGUpLGk9W10sbD10Lmxlbmd0aD4wO3ZhciBjO3ImJihpLnB1c2goT3IpLG98fGkucHVzaCgoYz0hYSx7dHlwZTpDci5MYWJlbCxsYWJlbDpcIk5ldyBQYWdlXCIsZGF0YTp7dHlwZTpwLk5ld1BhZ2V9LGVuYWJsZWQ6Y30pKSksaS5wdXNoKHZyKTtjb25zdCBzPXRuKCksdT1hd2FpdCBzLmdldEN1cnJlbnRXb3Jrc3BhY2UoKSxkPWF3YWl0IHMuU3RvcmFnZS5nZXRXb3Jrc3BhY2VzKCksZj1kLmZpbmQoKGU9PmUud29ya3NwYWNlSWQ9PT11LndvcmtzcGFjZUlkKSk7aS5wdXNoKHsuLi5TcixlbmFibGVkOiEhZn0pLGkucHVzaChfcixqciksaS5wdXNoKHsuLi5QcixlbmFibGVkOiEhZn0pLGQuc29tZSgoZT0+ZS53b3Jrc3BhY2VJZCE9PXUud29ya3NwYWNlSWQpKT9pLnB1c2goe2xhYmVsOmtyLHN1Ym1lbnU6WnIodSxkLHAuU3dpdGNoV29ya3NwYWNlKSxkYXRhOnZvaWQgMH0se2xhYmVsOkhyLHN1Ym1lbnU6WnIodSxkLHAuRGVsZXRlV29ya3NwYWNlKSxkYXRhOnZvaWQgMH0pOmkucHVzaCh7bGFiZWw6a3IsZW5hYmxlZDohMSxkYXRhOnZvaWQgMH0se2xhYmVsOkhyLGVuYWJsZWQ6ITEsZGF0YTp2b2lkIDB9KTtjb25zdCBoPWF3YWl0IHMuVGhlbWUuZ2V0VGhlbWVzKCk7cmV0dXJuKGhbMF0mJlwicGFsZXR0ZXNcImluIGhbMF18fCFoWzBdfHwwPT09aC5sZW5ndGgpJiZpLnB1c2goe2xhYmVsOlZyLHN1Ym1lbnU6YXdhaXQgQXIoKSxkYXRhOnZvaWQgMH0pLGkucHVzaCh2cixMcixNcixhd2FpdCBFcihsKSksbj9bLi4uaSwuLi5Scl06Wy4uLmksLi4uSXJdfTtsZXQgQnI9XCJQbGF0Zm9ybVwiO2NvbnN0IFRyPWFzeW5jKCk9PkJyO2NvbnN0ICRyPWFzeW5jIGU9Pntjb25zdCB0PXRuKCksbj1hd2FpdCB0LmdldEN1cnJlbnRXb3Jrc3BhY2UoKSxyPWF3YWl0IHQuU3RvcmFnZS5nZXRXb3Jrc3BhY2VzKCksbz1uLndvcmtzcGFjZUlkO2lmKHIuc29tZSgoZT0+ZS53b3Jrc3BhY2VJZD09PW8pKSl0LlN0b3JhZ2Uuc2F2ZVdvcmtzcGFjZShuKSx0LnNldEFjdGl2ZVdvcmtzcGFjZShuKSxidChcIldvcmtzcGFjZSBTYXZlZFwiLGUubmFtZSk7ZWxzZXt0LkJyb3dzZXIud3JhcFN5bmMoZSkuX29wZW5TYXZlTW9kYWwoe21lbnVUeXBlOnkuU0FWRV9XT1JLU1BBQ0V9KX19LEZyPWU9Pnt0bigpLkJyb3dzZXIud3JhcFN5bmMoZSkuX29wZW5TYXZlTW9kYWwoe21lbnVUeXBlOnkuU0FWRV9XT1JLU1BBQ0VfQVN9KX0sV3I9YXN5bmMoZSx0KT0+e2NvbnN0IG49dG4oKS5Ccm93c2VyLndyYXBTeW5jKGUpLHI9YXdhaXQgdG4oKS5TdG9yYWdlLmdldFBhZ2VzKCksbz0oYXdhaXQgbi5nZXRQYWdlcygpKS5maW5kKChlPT50P2UucGFnZUlkPT09dDplLmlzQWN0aXZlKSksYT1yLnNvbWUoKGU9Pm8ucGFnZUlkPT09ZS5wYWdlSWQpKTtpZihhKXRyeXthd2FpdCB0bigpLlN0b3JhZ2Uuc2F2ZVBhZ2UoKHM9byx7Li4ucyxoYXNVbnNhdmVkQ2hhbmdlczp2b2lkIDAscGFyZW50SWRlbnRpdHk6dm9pZCAwLGlzQWN0aXZlOnZvaWQgMH0pKSxhd2FpdCBuLnVwZGF0ZVBhZ2Uoe3BhZ2VJZDpvLnBhZ2VJZCxwYWdlOntoYXNVbnNhdmVkQ2hhbmdlczohMX19KSxidChcIlBhZ2Ugc2F2ZWRcIixvLnBhcmVudElkZW50aXR5Lm5hbWUpfWNhdGNoe2k9XCJQYWdlIGZhaWxlZCB0byBzYXZlXCIsbD1vLnBhcmVudElkZW50aXR5Lm5hbWUseXQoaHQuRVJST1IsaSxsLGMpfWVsc2Ugbi5fb3BlblNhdmVNb2RhbCh7aWQ6by5wYWdlSWQsbWVudVR5cGU6eS5TQVZFX1BBR0V9KTt2YXIgaSxsLGMsc30sTnI9YXN5bmMoZSx0KT0+e2NvbnN0IG49dG4oKS5Ccm93c2VyLndyYXBTeW5jKGUpLHI9KGF3YWl0IG4uZ2V0UGFnZXMoKSkuZmluZCgoZT0+dD9lLnBhZ2VJZD09PXQ6ZS5pc0FjdGl2ZSkpO24uX29wZW5TYXZlTW9kYWwoe2lkOnIucGFnZUlkLG1lbnVUeXBlOnkuU0FWRV9QQUdFX0FTfSl9LHpyPWFzeW5jIGU9Pntjb25zdCB0PWUubWFwKChlPT5maW4uVmlldy53cmFwU3luYyhlKS5wcmludCgpKSk7YXdhaXQgUHJvbWlzZS5hbGwodCl9LFVyPWFzeW5jIGU9Pntjb25zdCB0PXRuKCkuQnJvd3Nlci53cmFwU3luYyhlKSxuPWF3YWl0KGFzeW5jKGU9Vyk9Pntjb25zdCB0PWF3YWl0IHRuKCkuQnJvd3Nlci5nZXRVbmlxdWVQYWdlVGl0bGUoXCJVbnRpdGxlZCBQYWdlXCIpLG49YXdhaXQgd3IoZSk7cmV0dXJuIGdyKHQsbil9KShlKTthd2FpdCB0LmFkZFBhZ2UobiksYXdhaXQgdC5zZXRBY3RpdmVQYWdlKG4ucGFnZUlkKX0sR3I9YXN5bmMoZSx0KT0+e2lmKCFlKXJldHVybjtjb25zdCBuPXQuaWRlbnRpdHkscj1hd2FpdCBiZShuKSxvPXRuKCkuQnJvd3Nlci53cmFwU3luYyhuKSxhPWZpbi5XaW5kb3cud3JhcFN5bmMobik7c3dpdGNoKGllKHt0eXBlOlwiR2xvYmFsXCIsYWN0aW9uOmUudHlwZSxlbnRpdHlJZDpufSksZS50eXBlKXtjYXNlIHAuTmV3V2luZG93OmNvbnN0e25ld1BhZ2VVcmw6aX09YXdhaXQgbXIobik7aWYoIWkpdGhyb3cgbmV3IEVycm9yKFwiVHJ5aW5nIHRvIGNyZWF0ZSBhIG5ldyBlbXB0eSB3aW5kb3cgd2l0aG91dCBhIG5ld1BhZ2VVcmwgc2V0XCIpO3RuKCkuY3JlYXRlVmlldyh7dGFyZ2V0OnZvaWQgMCx1cmw6aX0pO2JyZWFrO2Nhc2UgcC5OZXdQYWdlOmF3YWl0IFVyKG4pO2JyZWFrO2Nhc2UgcC5DbG9zZVdpbmRvdzpyLmRpc3BhdGNoKExlLkNsb3NlQnJvd3NlcldpbmRvdyk7YnJlYWs7Y2FzZSBwLlNhdmVXb3Jrc3BhY2U6YXdhaXQgJHIobik7YnJlYWs7Y2FzZSBwLlNhdmVQYWdlOmF3YWl0IFdyKG4pO2JyZWFrO2Nhc2UgcC5TYXZlUGFnZUFzOmF3YWl0IE5yKG4pO2JyZWFrO2Nhc2UgcC5TYXZlV29ya3NwYWNlQXM6YXdhaXQgRnIobik7YnJlYWs7Y2FzZSBwLlJlbmFtZVdvcmtzcGFjZTpvLl9vcGVuU2F2ZU1vZGFsKHttZW51VHlwZTp5LlJFTkFNRV9XT1JLU1BBQ0V9KTticmVhaztjYXNlIHAuU3dpdGNoV29ya3NwYWNlOmF3YWl0KGFzeW5jKGUsdCk9Pntjb25zdCBuPXRuKCkscj0oYXdhaXQgbi5TdG9yYWdlLmdldFdvcmtzcGFjZXMoKSkuZmluZCgoZT0+ZS53b3Jrc3BhY2VJZD09PXQud29ya3NwYWNlSWQpKTtuLmFwcGx5V29ya3NwYWNlKHIse3NraXBQcm9tcHQ6ITEscHJvbXB0Q29udGFpbmVyV2luZG93SWRlbnRpdHk6ZX0pfSkobixlKTticmVhaztjYXNlIHAuRGVsZXRlV29ya3NwYWNlOmF3YWl0KGFzeW5jKGUsdCk9Pntjb25zdCBuPXRuKCkscj0oYXdhaXQgbi5TdG9yYWdlLmdldFdvcmtzcGFjZXMoKSkuZmluZCgoZT0+ZS53b3Jrc3BhY2VJZD09PXQud29ya3NwYWNlSWQpKTtyJiZhd2FpdCBPbihlLHIudGl0bGUpJiYoYXdhaXQgbi5TdG9yYWdlLmRlbGV0ZVdvcmtzcGFjZSh0LndvcmtzcGFjZUlkKSxidChcIldvcmtzcGFjZSBEZWxldGVkIVwiLGUubmFtZSkpfSkobixlKTticmVhaztjYXNlIHAuQXBwZWFyYW5jZTphd2FpdCB0bigpLlRoZW1lLnNldFNlbGVjdGVkU2NoZW1lKGUuc2NoZW1lKTticmVhaztjYXNlIHAuUXVpdDpjb25zdCBsPWF3YWl0IFRyKCk7YXdhaXQgTG4obixsKSYmZmluLlBsYXRmb3JtLmdldEN1cnJlbnRTeW5jKCkucXVpdCgpO2JyZWFrO2Nhc2UgcC5PcGVuU3RvcmVmcm9udDooYXN5bmMoKT0+e2F3YWl0IFEoKSYmRyhVKX0pKCk7YnJlYWs7Y2FzZSBwLlJlc3RvcmVDaGFuZ2VzOmNvbnN0IGM9YXdhaXQgYXN5bmMgZnVuY3Rpb24oKXtjb25zdCBlPXRuKCksdD1hd2FpdCBlLmdldEN1cnJlbnRXb3Jrc3BhY2UoKTtyZXR1cm4oYXdhaXQgZS5TdG9yYWdlLmdldFdvcmtzcGFjZXMoKSkuZmluZCgoZT0+ZS53b3Jrc3BhY2VJZD09PXQud29ya3NwYWNlSWQpKX0oKTthd2FpdCBNbihuKSYmYXdhaXQgU24oe29wdGlvbnM6e3NraXBQcm9tcHQ6ITB9LC4uLmN9KTticmVhaztjYXNlIHAuUHJpbnQ6YXdhaXQgenIodC5zZWxlY3RlZFZpZXdzKTticmVhaztjYXNlIHAuUHJpbnRBbGw6YXdhaXQgYS5wcmludCh7Y29udGVudDpcInZpZXdzXCIsaW5jbHVkZVNlbGY6ITF9KTticmVhaztjYXNlIHAuUHJpbnRTY3JlZW46YXdhaXQgYS5wcmludCh7Y29udGVudDpcInNjcmVlbnNob3RcIn0pO2JyZWFrO2Nhc2UgcC5DdXN0b206aWYoZS5hY3Rpb24pe2NvbnN0IHQ9e2NhbGxlclR5cGU6dy5HbG9iYWxDb250ZXh0TWVudSx3aW5kb3dJZGVudGl0eTpuLGN1c3RvbURhdGE6ZS5hY3Rpb24uY3VzdG9tRGF0YX07dG4oKS5faW52b2tlQ3VzdG9tQWN0aW9uKGUuYWN0aW9uLmlkLHQpfWVsc2UgY29uc29sZS53YXJuKGBFbmNvdW50ZXJlZCBhIEN1c3RvbSBjb250ZXh0IG1lbnUgb3B0aW9uIHdpdGggYW4gXCJhY3Rpb25cIiBwcm9wZXJ0eSB3aXRoIHZhbHVlIFwiJHtlLmFjdGlvbn1cImApfX0scXI9YXN5bmMoZSx0KT0+e2NvbnN0IG49YXdhaXQgYmUodC5pZGVudGl0eSkscj10bigpO3N3aXRjaChlJiZpZSh7dHlwZTpcIlBhZ2VUYWJcIixhY3Rpb246ZS50eXBlLGVudGl0eUlkOnQuaWRlbnRpdHl9KSxlPy50eXBlKXtjYXNlIEMuU2F2ZTphd2FpdCBXcih0LmlkZW50aXR5LHQucGFnZUlkKTticmVhaztjYXNlIEMuU2F2ZUFzOmF3YWl0IE5yKHQuaWRlbnRpdHksdC5wYWdlSWQpO2JyZWFrO2Nhc2UgQy5SZW5hbWU6YXdhaXQgci5Ccm93c2VyLndyYXBTeW5jKHQuaWRlbnRpdHkpLl9vcGVuU2F2ZU1vZGFsKHttZW51VHlwZTp5LlJFTkFNRV9QQUdFLGlkOnQucGFnZUlkfSk7YnJlYWs7Y2FzZSBDLkR1cGxpY2F0ZTpuLmRpc3BhdGNoKExlLkR1cGxpY2F0ZVBhZ2UsdC5wYWdlSWQpO2JyZWFrO2Nhc2UgQy5DbG9zZTpuLmRpc3BhdGNoKExlLkNsb3NlUGFnZSx0LnBhZ2VJZCk7YnJlYWs7Y2FzZSBDLkN1c3RvbTppZihlLmFjdGlvbil7Y29uc3Qgbj17Y2FsbGVyVHlwZTp3LlBhZ2VUYWJDb250ZXh0TWVudSx3aW5kb3dJZGVudGl0eTp0LmlkZW50aXR5LHBhZ2VJZDp0LnBhZ2VJZCxjdXN0b21EYXRhOmUuYWN0aW9uLmN1c3RvbURhdGF9O3RuKCkuX2ludm9rZUN1c3RvbUFjdGlvbihlLmFjdGlvbi5pZCxuKX1lbHNlIGNvbnNvbGUud2FybihgRW5jb3VudGVyZWQgYSBDdXN0b20gY29udGV4dCBtZW51IG9wdGlvbiB3aXRoIGFuIFwiYWN0aW9uXCIgcHJvcGVydHkgd2l0aCB2YWx1ZSBcIiR7ZS5hY3Rpb259XCJgKX19LFlyPWFzeW5jKGUsdCk9PntpZihlPy50eXBlKXtjb25zdCBuPXQuaWRlbnRpdHk7c3dpdGNoKGllKHt0eXBlOlwiU2F2ZUJ1dHRvblwiLGFjdGlvbjplLnR5cGUsZW50aXR5SWQ6bn0pLGUudHlwZSl7Y2FzZSBtLlNhdmVQYWdlOmF3YWl0IFdyKG4pO2JyZWFrO2Nhc2UgbS5TYXZlV29ya3NwYWNlOmF3YWl0ICRyKG4pO2JyZWFrO2Nhc2UgbS5TYXZlUGFnZUFzOmF3YWl0IE5yKG4pO2JyZWFrO2Nhc2UgbS5TYXZlV29ya3NwYWNlQXM6YXdhaXQgRnIobik7YnJlYWs7Y2FzZSBtLkN1c3RvbTppZihlLmFjdGlvbil7Y29uc3Qgbj17Y2FsbGVyVHlwZTp3LlNhdmVCdXR0b25Db250ZXh0TWVudSx3aW5kb3dJZGVudGl0eTp0LmlkZW50aXR5LHBhZ2VJZDp0LnBhZ2VJZCxjdXN0b21EYXRhOmUuYWN0aW9uLmN1c3RvbURhdGF9O3RuKCkuX2ludm9rZUN1c3RvbUFjdGlvbihlLmFjdGlvbi5pZCxuKX1lbHNlIGNvbnNvbGUud2FybihgRW5jb3VudGVyZWQgYSBDdXN0b20gY29udGV4dCBtZW51IG9wdGlvbiB3aXRoIGFuIFwiYWN0aW9uXCIgcHJvcGVydHkgd2l0aCB2YWx1ZSBcIiR7ZS5hY3Rpb259XCJgKX19fSxLcj1hc3luYyhlLHQpPT57Y29uc3Qgbj10LnNlbGVjdGVkVmlld3NbMF0scj1maW4uVmlldy53cmFwU3luYyhuKSxvPWF3YWl0KGFzeW5jIGU9Pntjb25zdHtuZXdUYWJVcmw6dH09YXdhaXQgbXIoZSk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKFwiVHJ5aW5nIHRvIGNyZWF0ZSBhIG5ldyBwYWdlIHdpdGhvdXQgYSBuZXdUYWJVcmwgc2V0XCIpO3JldHVybnt1cmw6dCx0YXJnZXQ6ZSx0aXRsZTpcIk5ldyBUYWJcIn19KShlKTthd2FpdCB0bigpLmNyZWF0ZVZpZXcobyxlLHIuaWRlbnRpdHkpfSxYcj1hc3luYyhlLHQpPT57Y29uc3Qgbj1hd2FpdChlPT5Qcm9taXNlLmFsbChlLm1hcCgoYXN5bmMgZT0+ZmluLlZpZXcud3JhcFN5bmMoZSkuZ2V0SW5mbygpKSkpKSh0KSx7bmV3UGFnZVVybDpyLG5ld1RhYlVybDpvfT1hd2FpdCBtcihlKTtuLmZvckVhY2goKGFzeW5jIGU9PntlLnVybCE9PXImJmUudXJsIT09byYmYXdhaXQgZmluLlN5c3RlbS5vcGVuVXJsV2l0aEJyb3dzZXIoZS51cmwpfSkpfSxRcj0oZSx0KT0+e3QuZm9yRWFjaCgoYXN5bmMgdD0+e2NvbnN0IG49ZmluLlZpZXcud3JhcFN5bmModCk7YXdhaXQoYXN5bmMoZSx0KT0+e2NvbnN0e3VybDpufT1hd2FpdCB0LmdldEluZm8oKSxyPXsuLi5hd2FpdCB0LmdldE9wdGlvbnMoKSx1cmw6bix0YXJnZXQ6ZSxuYW1lOnZvaWQgMH07YXdhaXQgdG4oKS5jcmVhdGVWaWV3KHIsZSx0LmlkZW50aXR5KX0pKGUsbil9KSl9LEpyPWFzeW5jKGUsdCk9PntpZighZSlyZXR1cm47Y29uc3Qgbj10LmlkZW50aXR5LHI9ZmluLldpbmRvdy53cmFwU3luYyhuKTtzd2l0Y2goaWUoe3R5cGU6XCJWaWV3VGFiXCIsYWN0aW9uOmUudHlwZSxlbnRpdHlJZDpufSksZS50eXBlKXtjYXNlIHYuQmFjazphd2FpdChhc3luYyBlPT57Y29uc3QgdD1lLm1hcCgoZT0+ZmluLlZpZXcud3JhcFN5bmMoZSkubmF2aWdhdGVCYWNrKCkpKTthd2FpdCBQcm9taXNlLmFsbCh0KX0pKHQuc2VsZWN0ZWRWaWV3cyk7YnJlYWs7Y2FzZSB2LkZvcndhcmQ6YXdhaXQoYXN5bmMgZT0+e2NvbnN0IHQ9ZS5tYXAoKGU9PmZpbi5WaWV3LndyYXBTeW5jKGUpLm5hdmlnYXRlRm9yd2FyZCgpKSk7YXdhaXQgUHJvbWlzZS5hbGwodCl9KSh0LnNlbGVjdGVkVmlld3MpO2JyZWFrO2Nhc2Ugdi5QcmludDphd2FpdCB6cih0LnNlbGVjdGVkVmlld3MpO2JyZWFrO2Nhc2Ugdi5QcmludEFsbDphd2FpdCByLnByaW50KHtjb250ZW50Olwidmlld3NcIixpbmNsdWRlU2VsZjohMX0pO2JyZWFrO2Nhc2Ugdi5QcmludFNjcmVlbjphd2FpdCByLnByaW50KHtjb250ZW50Olwic2NyZWVuc2hvdFwifSk7YnJlYWs7Y2FzZSB2LkNsb3NlVmlld3M6YXdhaXQoYXN5bmMoZSx0KT0+e2NvbnN0IG49KGF3YWl0IHRuKCkuQnJvd3Nlci53cmFwU3luYyhlKS5nZXRQYWdlcygpKS5maW5kKChlPT5lLmlzQWN0aXZlKSkscj1hd2FpdCBmaW4uV2luZG93LndyYXBTeW5jKGUpLmdldEN1cnJlbnRWaWV3cygpO3QubGVuZ3RoIT09ci5sZW5ndGgtKG4ucGFuZWxzPz9bXSkubGVuZ3RoP3QuZm9yRWFjaCgoYXN5bmMgZT0+e2NvbnN0IHQ9ZmluLlZpZXcud3JhcFN5bmMoZSk7YXdhaXQgdC5kZXN0cm95KCl9KSk6KGF3YWl0IGJlKGUpKS5kaXNwYXRjaChMZS5DbG9zZVBhZ2Usbj8ucGFnZUlkKX0pKG4sdC5zZWxlY3RlZFZpZXdzKTticmVhaztjYXNlIHYuT3BlbldpdGhEZWZhdWx0QnJvd3Nlcjphd2FpdCBYcihuLHQuc2VsZWN0ZWRWaWV3cyk7YnJlYWs7Y2FzZSB2LlJlbG9hZFZpZXdzOnQuc2VsZWN0ZWRWaWV3cy5mb3JFYWNoKChhc3luYyBlPT57Y29uc3QgdD1maW4uVmlldy53cmFwU3luYyhlKTthd2FpdCB0LnJlbG9hZCgpfSkpO2JyZWFrO2Nhc2Ugdi5OZXdWaWV3OmF3YWl0IEtyKG4sdCk7YnJlYWs7Y2FzZSB2LkR1cGxpY2F0ZVZpZXdzOlFyKG4sdC5zZWxlY3RlZFZpZXdzKTticmVhaztjYXNlIHYuQWRkVG9DaGFubmVsOihhc3luYyhlLHQsbik9Pntjb25zdCByPXtuZXdDaGFubmVsSWQ6dCxzZWxlY3RlZFZpZXdzOm59Oyhhd2FpdCBiZShlKSkuZGlzcGF0Y2goTGUuQWRkVG9DaGFubmVsLHIpfSkobixlLm9wdGlvbix0LnNlbGVjdGVkVmlld3MpO2JyZWFrO2Nhc2Ugdi5SZW1vdmVGcm9tQ2hhbm5lbDooYXN5bmMoZSx0KT0+eyhhd2FpdCBiZShlKSkuZGlzcGF0Y2goTGUuUmVtb3ZlRnJvbUNoYW5uZWwsdCl9KShuLHQuc2VsZWN0ZWRWaWV3cyk7YnJlYWs7Y2FzZSB2LkN1c3RvbTppZihlLmFjdGlvbil7Y29uc3Qgcj17Y2FsbGVyVHlwZTp3LlZpZXdUYWJDb250ZXh0TWVudSx3aW5kb3dJZGVudGl0eTpuLHNlbGVjdGVkVmlld3M6dC5zZWxlY3RlZFZpZXdzLGN1c3RvbURhdGE6ZS5hY3Rpb24uY3VzdG9tRGF0YX07dG4oKS5faW52b2tlQ3VzdG9tQWN0aW9uKGUuYWN0aW9uLmlkLHIpfX19O2FzeW5jIGZ1bmN0aW9uIGVvKGUsdCl7aWUoe3R5cGU6XCJNZW51XCIsYWN0aW9uOlwiR2xvYmFsXCIsZW50aXR5SWQ6dH0pO2NvbnN0IG49YXdhaXQgRHIoZS5pZGVudGl0eSxlLnNlbGVjdGVkVmlld3MpLHI9YXdhaXQgVHIoKTtuLmZpbmQoKGU9PmUuZGF0YT8udHlwZT09PXAuUXVpdCkpLmxhYmVsPWBRdWl0ICR7cn1gO2NvbnN0IG89ey4uLmUsdGVtcGxhdGU6bixjYWxsYmFjazpHcn07YXdhaXQgdGhpcy5vcGVuR2xvYmFsQ29udGV4dE1lbnUobyx0KX1jb25zdCB0bz1hc3luYyhlLHQpPT57Y29uc3R7eDpuLHk6cixpZGVudGl0eTpvLHRlbXBsYXRlOmEsY2FsbGJhY2s6aX09ZSx7ZGF0YTpsfT1hd2FpdCBmdW5jdGlvbihlLHQpe2lmKCF4KXRocm93IG5ldyBFcnJvcihcInNob3dDb250ZXh0TWVudSBjYW4gb25seSBiZSB1c2VkIGluIGFuIE9wZW5GaW4gZW52LiBBdm9pZCBjYWxsaW5nIHRoaXMgbWV0aG9kIGR1cmluZyBwcmUtcmVuZGVyaW5nLlwiKTtpZighdCYmIWZpbi5tZS5pc1dpbmRvdyl0aHJvdyBuZXcgRXJyb3IoXCJzaG93Q29udGV4dE1lbnUgY2FuIG9ubHkgYmUgdXNlZCBpbiBhbiBPcGVuRmluIHdpbmRvdy5cIik7cmV0dXJuKHR8fGZpbi5XaW5kb3cuZ2V0Q3VycmVudFN5bmMoKSkuc2hvd1BvcHVwTWVudShlKX0oe3g6bix5OnIsdGVtcGxhdGU6YX0sZmluLldpbmRvdy53cmFwU3luYyhvKSk7aShsLGUpfTthc3luYyBmdW5jdGlvbiBubyhlLHQpe2llKHt0eXBlOlwiTWVudVwiLGFjdGlvbjpcIlZpZXdUYWJcIixlbnRpdHlJZDp0fSk7Y29uc3Qgbj17Li4uZSxjYWxsYmFjazpKcn07YXdhaXQgdGhpcy5vcGVuVmlld1RhYkNvbnRleHRNZW51KG4sdCl9YXN5bmMgZnVuY3Rpb24gcm8oZSx0KXtpZSh7dHlwZTpcIk1lbnVcIixhY3Rpb246XCJQYWdlVGFiXCIsZW50aXR5SWQ6dH0pO2NvbnN0IG49YXdhaXQoYXN5bmMoZSx0KT0+e2NvbnN0IG49YXdhaXQgdG4oKS5TdG9yYWdlLmdldFBhZ2UoZSkscj0oYXdhaXQgV2UoKSkuZmluZCgodD0+dC5wYWdlSWQ9PT1lKSkse3dvcmtzcGFjZVBsYXRmb3JtOm99PWF3YWl0IEYodCkuZ2V0T3B0aW9ucygpLGE9IShvLmlzTG9ja2VkfHxvLnByZXZlbnRQYWdlQ2xvc2V8fHIuY2xvc2VCdXR0b24/LmRpc2FibGVkfHxyLmNsb3NlQnV0dG9uPy5oaWRkZW4pO3JldHVyblt7dHlwZTpDci5MYWJlbCxsYWJlbDpcIlNhdmUgUGFnZVwiLGRhdGE6e3R5cGU6Qy5TYXZlfX0se3R5cGU6Q3IuTGFiZWwsbGFiZWw6XCJTYXZlIFBhZ2UgQXNcIixkYXRhOnt0eXBlOkMuU2F2ZUFzfX0sdnIse3R5cGU6Q3IuTGFiZWwsbGFiZWw6XCJSZW5hbWUgUGFnZVwiLGRhdGE6e3R5cGU6Qy5SZW5hbWV9LGVuYWJsZWQ6ISFufSx7dHlwZTpDci5MYWJlbCxsYWJlbDpcIkR1cGxpY2F0ZSBQYWdlXCIsZGF0YTp7dHlwZTpDLkR1cGxpY2F0ZX0sZW5hYmxlZDohby5pc0xvY2tlZH0sdnIse3R5cGU6Q3IuTGFiZWwsbGFiZWw6XCJDbG9zZSBQYWdlXCIsZGF0YTp7dHlwZTpDLkNsb3NlfSxlbmFibGVkOmF9XX0pKGUucGFnZUlkLGUuaWRlbnRpdHkpLHI9ey4uLmUsdGVtcGxhdGU6bixjYWxsYmFjazpxcn07YXdhaXQgdGhpcy5vcGVuUGFnZVRhYkNvbnRleHRNZW51KHIsdCl9YXN5bmMgZnVuY3Rpb24gb28oZSx0KXtpZSh7dHlwZTpcIlRvb2xiYXJcIixhY3Rpb246XCJTYXZlQnV0dG9uXCIsZW50aXR5SWQ6dH0pO2NvbnN0IG49ey4uLmUsdGVtcGxhdGU6YXdhaXQoYXN5bmMoKT0+W3t0eXBlOkNyLkxhYmVsLGxhYmVsOlwiU2F2ZSBXb3Jrc3BhY2VcIixkYXRhOnt0eXBlOm0uU2F2ZVdvcmtzcGFjZX19LHt0eXBlOkNyLkxhYmVsLGxhYmVsOlwiU2F2ZSBXb3Jrc3BhY2UgQXNcIixkYXRhOnt0eXBlOm0uU2F2ZVdvcmtzcGFjZUFzfX0se3R5cGU6Q3IuU2VwYXJhdG9yLGRhdGE6dm9pZCAwfSx7dHlwZTpDci5MYWJlbCxsYWJlbDpcIlNhdmUgUGFnZVwiLGRhdGE6e3R5cGU6bS5TYXZlUGFnZX19LHt0eXBlOkNyLkxhYmVsLGxhYmVsOlwiU2F2ZSBQYWdlIEFzXCIsZGF0YTp7dHlwZTptLlNhdmVQYWdlQXN9fV0pKCksY2FsbGJhY2s6WXJ9O2F3YWl0IHRoaXMub3BlblNhdmVCdXR0b25Db250ZXh0TWVudShuLHQpfWNvbnN0IGFvPUwmJngmJmlyKFwiZG9jay1wcm92aWRlci1jb25maWdzXCIsXCJkb2NrLXByb3ZpZGVyLWNvbmZpZ3NcIik7YXN5bmMgZnVuY3Rpb24gaW8oZSl7aWYoIWFvKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBnZXQgRG9jayBwcm92aWRlciBjb25maWcgLSBJbmRleERCIG5vdCBzdXBwb3J0ZWRcIik7cmV0dXJuIGF3YWl0IGVyKGUsYW8pLmNhdGNoKChlPT57Y29uc29sZS53YXJuKFwiRmFpbGVkIHRvIHJldHJpZXZlIERvY2sgcHJvdmlkZXIgY29uZmlnIGZyb20gSW5kZXhlZERCXCIsZSl9KSl9YXN5bmMgZnVuY3Rpb24gbG8oZSl7YXdhaXQgdHIoZS5pZCxlLGFvKX1jb25zdCBjbz1MJiZ4JiZscihcIm9wZW5maW4td29ya3NwYWNlLXBsYXRmb3JtLXdvcmtzcGFjZXNcIixcIndvcmtzcGFjZXNcIik7YXN5bmMgZnVuY3Rpb24gc28oZSl7aWYoIWNvKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBnZXQgd29ya3NwYWNlIC0gSW5kZXhEQiBub3Qgc3VwcG9ydGVkXCIpO2NvbnN0IHQ9YXdhaXQgZXIoZSxjbyk7aWYodClyZXR1cm4gdC53b3Jrc3BhY2VJZD1lLnRvU3RyaW5nKCksdC50aXRsZT10LnRpdGxlfHx0LndvcmtzcGFjZUlkLHR9YXN5bmMgZnVuY3Rpb24gdW8oZSl7aWYoIWNvKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBnZXQgd29ya3NwYWNlcyAtIEluZGV4REIgbm90IHN1cHBvcnRlZFwiKTtjb25zdCB0PWF3YWl0IG9yKGNvKSxuPShhd2FpdCBQcm9taXNlLmFsbCh0Lm1hcCgoZT0+c28oZS50b1N0cmluZygpKSkpKSkuZmlsdGVyKChlPT4hIWUpKTtyZXR1cm4gZT9uLmZpbHRlcigodD0+Y3IodC50aXRsZSxlKSkpOm59YXN5bmMgZnVuY3Rpb24gZm8oe3dvcmtzcGFjZTplfSl7aWYoIWNvKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBjcmVhdGUgd29ya3NwYWNlIC0gSW5kZXhEQiBub3Qgc3VwcG9ydGVkXCIpO2F3YWl0IHRyKGUud29ya3NwYWNlSWQsZSxjbyl9YXN5bmMgZnVuY3Rpb24gcG8oZSl7aWYoIWNvKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBkZWxldGUgd29ya3NwYWNlIC0gSW5kZXhEQiBub3Qgc3VwcG9ydGVkXCIpO2F3YWl0IG5yKGUsY28pfWFzeW5jIGZ1bmN0aW9uIGhvKHt3b3Jrc3BhY2VJZDplLHdvcmtzcGFjZTp0fSl7aWYoIWNvKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byB1cGRhdGUgd29ya3NwYWNlcyAtIEluZGV4REIgbm90IHN1cHBvcnRlZFwiKTtpZighYXdhaXQgc28oZSkpdGhyb3cgbmV3IEVycm9yKFwid29ya3NwYWNlIG5vdCBmb3VuZFwiKTthd2FpdCBmbyh7d29ya3NwYWNlOnR9KSxlIT09dC53b3Jrc3BhY2VJZCYmYXdhaXQgcG8oZSl9YXN5bmMgZnVuY3Rpb24gQ28oe2FwcDplLHRhcmdldDp0fSl7Y29uc3Qgbj1maW4uUGxhdGZvcm0uZ2V0Q3VycmVudFN5bmMoKTtzd2l0Y2goZS5tYW5pZmVzdFR5cGUpe2Nhc2UgYy5TbmFwc2hvdDpyZXR1cm4gbi5hcHBseVNuYXBzaG90KGUubWFuaWZlc3QpO2Nhc2UgYy5WaWV3OnJldHVybiBhc3luYyBmdW5jdGlvbihlLHQpe2NvbnN0IG49ZmluLlBsYXRmb3JtLmdldEN1cnJlbnRTeW5jKCk7aWYoXCJ2aWV3XCI9PT10LmVudGl0eVR5cGUpe2NvbnN0IG49ZmluLlZpZXcud3JhcFN5bmModCkscj1hd2FpdCBuLmdldFBhcmVudExheW91dCgpO3JldHVybiBhd2FpdCByLnJlcGxhY2VWaWV3KHQse21hbmlmZXN0VXJsOmUubWFuaWZlc3QsdXJsOnZvaWQgMCx0YXJnZXQ6dm9pZCAwfSksbi5kZXN0cm95KCl9cmV0dXJuIG4uY3JlYXRlVmlldyh7bmFtZTp2b2lkIDAsdXJsOnZvaWQgMCxtYW5pZmVzdFVybDplLm1hbmlmZXN0LHRhcmdldDp2b2lkIDB9KX0oZSx0KTtjYXNlIGMuRXh0ZXJuYWw6cmV0dXJuIGZpbi5TeXN0ZW0ubGF1bmNoRXh0ZXJuYWxQcm9jZXNzKHtwYXRoOmUubWFuaWZlc3QsdXVpZDplLmFwcElkfSk7ZGVmYXVsdDpyZXR1cm4gZmluLkFwcGxpY2F0aW9uLnN0YXJ0RnJvbU1hbmlmZXN0KGUubWFuaWZlc3QpfX1hc3luYyBmdW5jdGlvbiB2byhlKXtjb25zdCB0PShhd2FpdCBZKCkpLm1hcCgoYXN5bmMgZT0+e2NvbnN0IHQ9YXdhaXQgZS5nZXRPcHRpb25zKCk7dC53b3Jrc3BhY2VQbGF0Zm9ybT8ucGFnZXMmJnQubGF5b3V0JiZhd2FpdChhc3luYyBlPT4oYXdhaXQgYmUoZSkpLmRpc3BhdGNoKExlLlVwZGF0ZVBhZ2VzV2luZG93T3B0aW9ucykpKGUuaWRlbnRpdHkpfSkpO3JldHVybiBhd2FpdCBQcm9taXNlLmFsbCh0KSxlP2UoKTpZbigpfWNvbnN0IGdvPWFzeW5jKGUsdCk9Pntjb25zdCBuPWF3YWl0IHRuKCkuQnJvd3Nlci5nZXRBbGxBdHRhY2hlZFBhZ2VzKCkscj1uZXcgU2V0KG4ubWFwKChlPT5lLnRpdGxlKSkuZmlsdGVyKChlPT4hIWUpKSksbz1uZXcgU2V0KG4ubWFwKChlPT5lLnBhZ2VJZCkpLmZpbHRlcigoZT0+ISFlKSkpO3JldHVybiBlLm1hcCgoZT0+eygoZSx0KT0+e2UucGFnZUlkfHw9SGUoKSx0LmhhcyhlLnBhZ2VJZCkmJihjb25zb2xlLndhcm4oXCJQYWdlSUQgY29sbGlzaW9uIGRldGVjdGVkLiBBbGwgUGFnZSBJRHMgc2hvdWxkIGJlIHVuaXF1ZS4gQSByYW5kb20gbmV3IHBhZ2VJZCB3aWxsIGJlIGdlbmVyYXRlZFwiKSxlLnBhZ2VJZD1IZSgpKSx0LmFkZChlLnBhZ2VJZCl9KShlLG8pLGUudGl0bGU9RmUoZS50aXRsZSxBcnJheS5mcm9tKHIua2V5cygpKSksci5hZGQoZS50aXRsZSksZS5wYW5lbHM/LnJlZHVjZSgoKGUsdCk9Pntjb25zdCBuPU9iamVjdC52YWx1ZXMoZik7aWYoIW4uaW5jbHVkZXModC5wb3NpdGlvbikpdGhyb3cgbmV3IEVycm9yKGBFbmNvdW50ZXJlZCBhIHBhbmVsIHdpdGggdW5zdXBwb3J0ZWQgcG9zaXRpb24gXCIke3QucG9zaXRpb259XCIuIFN1cHBvcnRlZCBwb3NpdGlvbnMgYXJlOiAke24udG9TdHJpbmcoKX1gKTtpZigxPT1lW3QucG9zaXRpb25dKXRocm93IG5ldyBFcnJvcihgRm91bmQgbW9yZSB0aGFuIDEgcGFuZWwgYXQgcG9zaXRpb246ICR7dC5wb3NpdGlvbn0uIE9ubHkgMSBwYW5lbCBhdCBhIGdpdmVuIHBvc2l0aW9uIGlzIGN1cnJlbnRseSBzdXBwb3J0ZWQuYCk7cmV0dXJuey4uLmUsW3QucG9zaXRpb25dOmVbdC5wb3NpdGlvbl0rMX19KSx7W2YuTGVmdF06MCxbZi5SaWdodF06MCxbZi5Ub3BdOjAsW2YuQm90dG9tXTowfSk7Y29uc3Qgbj1cInBhbmVsc1wiaW4gZT9lLnBhbmVsczp0Py5wYW5lbHM7dmFyIGE7cmV0dXJuey4uLnQsLi4uZSxwYW5lbHM6biYmWmUobiksbGF5b3V0OihhPWUubGF5b3V0LFZlKHsuLi5hfSxSZSkpfX0pKX0sbW89SCt2ZS5Ccm93c2VyLHdvPXtjb250ZXh0TWVudU9wdGlvbnM6e2VuYWJsZWQ6ITF9LGV4cGVyaW1lbnRhbDp7c2hvd0Zhdmljb25zOiEwLGRlZmF1bHRGYXZpY29uVXJsOmAke0h9L2ljb25zL2RlZmF1bHRGYXZpY29uLnN2Z2B9LHZpZXdWaXNpYmlsaXR5OntzaG93Vmlld3NPblNwbGl0dGVyRHJhZzp7ZW5hYmxlZDohMH0sc2hvd1ZpZXdzT25XaW5kb3dSZXNpemU6e2VuYWJsZWQ6ITB9fX0seW89e2JhY2tncm91bmRUaHJvdHRsaW5nOiEwLHVybDptbyxjb250ZXh0TWVudTohMCxjbG9zZU9uTGFzdFZpZXdSZW1vdmVkOiExLHBlcm1pc3Npb25zOntTeXN0ZW06e29wZW5VcmxXaXRoQnJvd3Nlcjp7ZW5hYmxlZDohMCxwcm90b2NvbHM6W1wibWFpbHRvXCJdfX19fSxibz17ZGltZW5zaW9uczp7Ym9yZGVyV2lkdGg6MyxoZWFkZXJIZWlnaHQ6MzB9fSx4bz1hc3luYyhlLHQpPT57Y29uc3Qgbj17dXVpZDp0LnV1aWQsbmFtZTp0Lm5hbWV9O2F3YWl0IExuKG4sZS50aXRsZT8/YXdhaXQgVHIoKSxlLnNob3VsZENlbnRlck9uTW9uaXRvcikmJmZpbi5QbGF0Zm9ybS5nZXRDdXJyZW50U3luYygpLnF1aXQoKX07bGV0IE9vPVtdO2NvbnN0IExvPSgpPT5Pbztjb25zdCBNbz17Y29udGV4dE1lbnVPcHRpb25zOntlbmFibGVkOiEwLHRlbXBsYXRlOltcInNwZWxsQ2hlY2tcIixcInNlcGFyYXRvclwiLFwicHJpbnRcIixcInNlcGFyYXRvclwiLFwiY3V0XCIsXCJjb3B5XCIsXCJwYXN0ZVwiLFwidW5kb1wiLFwicmVkb1wiLFwic2VsZWN0QWxsXCIsXCJpbnNwZWN0XCIsXCJyZWxvYWRcIl19fTtmdW5jdGlvbiBTbyhlLHQpe2NvbnN0IG49cGUoe30sTW8sdCxlKTtyZXR1cm4gbi5kZXRhY2hPbkNsb3NlPSEwLG59YXN5bmMgZnVuY3Rpb24gX28oZSx0LG4pe2NvbnN0IHI9ZS5tYW5pZmVzdFVybD9hd2FpdCB0KHttYW5pZmVzdFVybDplLm1hbmlmZXN0VXJsfSxuKTp2b2lkIDA7aWYocj8uaW50ZXJvcCYmZS5pbnRlcm9wKXtjb25zdCB0PXsuLi5lLC4uLnIsaW50ZXJvcDplLmludGVyb3B9O3JldHVybiBkZWxldGUgdC5tYW5pZmVzdFVybCx0fXJldHVybiBlfWNvbnN0IGpvPWU9Pntjb25zdCB0PWUubmFtZT09PVQuSG9tZSxuPWUubmFtZT8uc3RhcnRzV2l0aChULkhvbWVJbnRlcm5hbCkscj1lLm5hbWU/LnN0YXJ0c1dpdGgoVC5Ccm93c2VyTWVudSk7cmV0dXJuIXQmJiFuJiYhcn07Y29uc3QgRW89KGUsdCk9PmFzeW5jIG49Pntjb25zdCByPW51bGwhPT1lO2NsYXNzIG8gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmlzV29ya3NwYWNlUGxhdGZvcm09KCk9Pih7aXNXb3Jrc3BhY2VQbGF0Zm9ybTohMCxpc0Jyb3dzZXJJbml0aWFsaXplZDohIWUsYW5hbHl0aWNzOntpc1N1cHBvcnRlZDohMH19KSx0aGlzLmFkZFBhZ2U9dGhpcy5hdHRhY2hQYWdlc1RvV2luZG93LHRoaXMuZGV0YWNoUGFnZXNGcm9tV2luZG93PUplLHRoaXMuZ2V0QWxsQXR0YWNoZWRQYWdlcz1XZSx0aGlzLmdldFBhZ2VzRm9yV2luZG93PXR0LHRoaXMuZ2V0UGFnZUZvcldpbmRvdz1udCx0aGlzLnNldEFjdGl2ZVBhZ2U9ZXQsdGhpcy5sYXVuY2hBcHA9Q28sdGhpcy5zYXZlUGFnZT1LZSx0aGlzLnNhdmVXb3Jrc3BhY2U9a24sdGhpcy5jcmVhdGVTYXZlZFBhZ2VJbnRlcm5hbD1HZSx0aGlzLnVwZGF0ZVNhdmVkUGFnZUludGVybmFsPVllLHRoaXMuZGVsZXRlU2F2ZWRQYWdlSW50ZXJuYWw9cWUsdGhpcy5yZW9yZGVyUGFnZXNGb3JXaW5kb3c9cnQsdGhpcy5nZXRVbmlxdWVQYWdlVGl0bGU9b3QsdGhpcy51cGRhdGVQYWdlRm9yV2luZG93PVFlLHRoaXMuZ2V0TGFzdEZvY3VzZWRCcm93c2VyV2luZG93PVZuLHRoaXMuZ2V0VGhlbWVzPUxvLHRoaXMuaW52b2tlQ3VzdG9tQWN0aW9uSW50ZXJuYWw9Tm4sdGhpcy5yZXF1ZXN0UXVpdFBsYXRmb3JtRGlhbG9nSW50ZXJuYWw9eG8sdGhpcy5nZXRDdXJyZW50V29ya3NwYWNlPUVuLHRoaXMuc2V0QWN0aXZlV29ya3NwYWNlPV9uLHRoaXMub3Blbkdsb2JhbENvbnRleHRNZW51SW50ZXJuYWw9dGhpcy5vcGVuR2xvYmFsQ29udGV4dE1lbnVJbnRlcm5hbC5iaW5kKHRoaXMpLHRoaXMub3Blbkdsb2JhbENvbnRleHRNZW51PXRoaXMub3Blbkdsb2JhbENvbnRleHRNZW51LmJpbmQodGhpcyksdGhpcy5nZXRTYXZlZFBhZ2VzPXRoaXMuZ2V0U2F2ZWRQYWdlcy5iaW5kKHRoaXMpLHRoaXMuZ2V0U2F2ZWRQYWdlPXRoaXMuZ2V0U2F2ZWRQYWdlLmJpbmQodGhpcyksdGhpcy5jcmVhdGVTYXZlZFBhZ2U9dGhpcy5jcmVhdGVTYXZlZFBhZ2UuYmluZCh0aGlzKSx0aGlzLnVwZGF0ZVNhdmVkUGFnZT10aGlzLnVwZGF0ZVNhdmVkUGFnZS5iaW5kKHRoaXMpLHRoaXMuZGVsZXRlU2F2ZWRQYWdlPXRoaXMuZGVsZXRlU2F2ZWRQYWdlLmJpbmQodGhpcyksdGhpcy5hdHRhY2hQYWdlc1RvV2luZG93PXRoaXMuYXR0YWNoUGFnZXNUb1dpbmRvdy5iaW5kKHRoaXMpLHRoaXMub3BlblZpZXdUYWJDb250ZXh0TWVudUludGVybmFsPXRoaXMub3BlblZpZXdUYWJDb250ZXh0TWVudUludGVybmFsLmJpbmQodGhpcyksdGhpcy5vcGVuVmlld1RhYkNvbnRleHRNZW51PXRoaXMub3BlblZpZXdUYWJDb250ZXh0TWVudS5iaW5kKHRoaXMpLHRoaXMub3BlblBhZ2VUYWJDb250ZXh0TWVudUludGVybmFsPXRoaXMub3BlblBhZ2VUYWJDb250ZXh0TWVudUludGVybmFsLmJpbmQodGhpcyksdGhpcy5vcGVuUGFnZVRhYkNvbnRleHRNZW51PXRoaXMub3BlblBhZ2VUYWJDb250ZXh0TWVudS5iaW5kKHRoaXMpLHRoaXMuZ2V0U2F2ZWRXb3Jrc3BhY2VzPXRoaXMuZ2V0U2F2ZWRXb3Jrc3BhY2VzLmJpbmQodGhpcyksdGhpcy5nZXRTYXZlZFdvcmtzcGFjZT10aGlzLmdldFNhdmVkV29ya3NwYWNlLmJpbmQodGhpcyksdGhpcy5jcmVhdGVTYXZlZFdvcmtzcGFjZT10aGlzLmNyZWF0ZVNhdmVkV29ya3NwYWNlLmJpbmQodGhpcyksdGhpcy51cGRhdGVTYXZlZFdvcmtzcGFjZT10aGlzLnVwZGF0ZVNhdmVkV29ya3NwYWNlLmJpbmQodGhpcyksdGhpcy5kZWxldGVTYXZlZFdvcmtzcGFjZT10aGlzLmRlbGV0ZVNhdmVkV29ya3NwYWNlLmJpbmQodGhpcyksdGhpcy5nZXRDdXJyZW50V29ya3NwYWNlPXRoaXMuZ2V0Q3VycmVudFdvcmtzcGFjZS5iaW5kKHRoaXMpLHRoaXMuZ2V0RG9ja1Byb3ZpZGVyQ29uZmlnPXRoaXMuZ2V0RG9ja1Byb3ZpZGVyQ29uZmlnLmJpbmQodGhpcyksdGhpcy5zYXZlRG9ja1Byb3ZpZGVyQ29uZmlnPXRoaXMuc2F2ZURvY2tQcm92aWRlckNvbmZpZy5iaW5kKHRoaXMpLHRoaXMuYXBwbHlXb3Jrc3BhY2U9dGhpcy5hcHBseVdvcmtzcGFjZS5iaW5kKHRoaXMpLHRoaXMuc2V0QWN0aXZlV29ya3NwYWNlPXRoaXMuc2V0QWN0aXZlV29ya3NwYWNlLmJpbmQodGhpcyksdGhpcy5vcGVuU2F2ZUJ1dHRvbkNvbnRleHRNZW51PXRoaXMub3BlblNhdmVCdXR0b25Db250ZXh0TWVudS5iaW5kKHRoaXMpLHRoaXMub3BlblNhdmVCdXR0b25Db250ZXh0TWVudUludGVybmFsPXRoaXMub3BlblNhdmVCdXR0b25Db250ZXh0TWVudUludGVybmFsLmJpbmQodGhpcyksdGhpcy5nZXRTZWxlY3RlZFNjaGVtZT10aGlzLmdldFNlbGVjdGVkU2NoZW1lLmJpbmQodGhpcyksdGhpcy5zZXRTZWxlY3RlZFNjaGVtZT10aGlzLnNldFNlbGVjdGVkU2NoZW1lLmJpbmQodGhpcyksdGhpcy5hbmFseXRpY3NJbnRlcm5hbD10aGlzLmFuYWx5dGljc0ludGVybmFsLmJpbmQodGhpcyksdGhpcy5oYW5kbGVBbmFseXRpY3M9dGhpcy5oYW5kbGVBbmFseXRpY3MuYmluZCh0aGlzKX1hc3luYyBhcHBseVdvcmtzcGFjZSguLi5lKXtyZXR1cm4gU24uYXBwbHkodGhpcyxlKX1hc3luYyBnZXRTbmFwc2hvdCgpe2NvbnN0IGU9cj9hd2FpdCB2bygoYXN5bmMoKT0+WW4oYXdhaXQgc3VwZXIuZ2V0U25hcHNob3Qodm9pZCAwLGZpbi5tZS5pZGVudGl0eSkpKSk6YXdhaXQgWW4oYXdhaXQgc3VwZXIuZ2V0U25hcHNob3Qodm9pZCAwLGZpbi5tZS5pZGVudGl0eSkpO3JldHVybnsuLi5lLHdpbmRvd3M6ZS53aW5kb3dzLmZpbHRlcihqbykubWFwKHFuKX19YXN5bmMgYXBwbHlTbmFwc2hvdCh7c25hcHNob3Q6ZSxvcHRpb25zOnR9KXtsZXQgbj1lO1wic3RyaW5nXCI9PXR5cGVvZiBuJiYobj1hd2FpdCBzdXBlci5mZXRjaE1hbmlmZXN0KHttYW5pZmVzdFVybDpufSxmaW4ubWUuaWRlbnRpdHkpKTtjb25zdCBvPWZ1bmN0aW9uKGUpe2xldCB0PSExLG49ITE7Zm9yKGNvbnN0IHIgb2YgZS53aW5kb3dzKXtpZih0JiZuKWJyZWFrO3Iud29ya3NwYWNlUGxhdGZvcm0/LnBhZ2VzPy5sZW5ndGg/bj0hMDpyLmxheW91dCYmKHQ9ITApfXJldHVybiB0JiZuP1wibWl4ZWRcIjp0P1wicGxhdGZvcm1cIjpuP1wiYnJvd3NlclwiOmUud2luZG93cy5sZW5ndGg/XCJjbGFzc2ljXCI6bnVsbH0obik7aWYoXCJtaXhlZFwiPT09byl0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHNuYXBzaG90IGNhbm5vdCBiZSBhcHBsaWVkIGFzIGl0IGNvbnRhaW5zIGEgbWl4dHVyZSBvZiBicm93c2VyIGFuZCBwbGF0Zm9ybSB3aW5kb3dzLlwiKTtpZihyKVwicGxhdGZvcm1cIj09PW8mJmNvbnNvbGUud2FybihcIk5vIHBhZ2VzIGZvdW5kIGluIHNuYXBzaG90LCBjcmVhdGluZyBhIG5ldyBwYWdlIGZyb20gdGhlIGxheW91dFwiKTtlbHNlIGlmKFwiYnJvd3NlclwiPT09byl0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHNuYXBzaG90IGNhbm5vdCBiZSBhcHBsaWVkIGFzIHRoZSBwbGF0Zm9ybSBoYXMgYmVlbiBpbml0aWFsaXplZCB3aXRob3V0IHRoZSBicm93c2VyLlwiKTtyZXR1cm4gc3VwZXIuYXBwbHlTbmFwc2hvdCh7c25hcHNob3Q6bixvcHRpb25zOnR9KX1hc3luYyBjcmVhdGVXaW5kb3codCxuKXtpZighcil7Y29uc3QgZT1hd2FpdCBzdXBlci5jcmVhdGVXaW5kb3codCxuKTtyZXR1cm4gaWUoe3R5cGU6XCJXaW5kb3dcIixhY3Rpb246XCJPcGVuXCIsZW50aXR5SWQ6ZS5pZGVudGl0eX0pLGV9dmFyIG87bz17YWxsb3dlZDohMH0sdGV8fCh0ZT0hMCxlZShKLkJyb3dzZXIsbykpLCgoZT1bXSk9Pntjb25zdCB0PWUuZmlsdGVyKChlPT5lLnR5cGUhPT1nLkN1c3RvbSkpLG49bmV3IFNldCxyPVtdO2Zvcihjb25zdCBlIG9mIHQpbi5oYXMoZS50eXBlKSYmci5wdXNoKGUudHlwZSksbi5hZGQoZS50eXBlKTtpZihyLmxlbmd0aD4wKXtjb25zdCBlPXIuam9pbihcIiwgXCIpO3Rocm93IG5ldyBFcnJvcihgRW5jb3VudGVyZWQgYSBkdXBsaWNhdGUgXCIke2V9XCIgdG9vbGJhciBidXR0b24uIE5vIG1vcmUgdGhhbiBvbmUgaW5zdGFuY2Ugb2YgYSBidXR0b24gdHlwZSBtYXkgYmUgcHJvdmlkZWQuYCl9fSkodC53b3Jrc3BhY2VQbGF0Zm9ybT8udG9vbGJhck9wdGlvbnM/LmJ1dHRvbnMpO2xldCBhPShlPT5cIndvcmtzcGFjZVBsYXRmb3JtXCJpbiBlP2U6KCh7d29ya3N0YWNrczplLHBhZ2VzOnQsLi4ubn0pPT4oey4uLm4sd29ya3NwYWNlUGxhdGZvcm06e3BhZ2VzOnR8fGV8fG51bGx9fSkpKGUpKSh0KTthPWF3YWl0KGFzeW5jKGUsdCxuKT0+e2xldCByPWU7aWYoci53b3Jrc3BhY2VQbGF0Zm9ybT8ucGFnZXM/Lmxlbmd0aCl7Y29uc3QgZT1hd2FpdCBnbyhyLndvcmtzcGFjZVBsYXRmb3JtLnBhZ2VzLHQ/LmRlZmF1bHRQYWdlT3B0aW9ucyksbj1lO2xldCBvPW4uZmluZCgoZT0+ZS5pc0FjdGl2ZSkpO28/KHIubGF5b3V0PW8ubGF5b3V0LG4uZm9yRWFjaCgoZT0+e2UucGFnZUlkIT09by5wYWdlSWQmJihlLmlzQWN0aXZlPSExKX0pKSk6KG5bMF0uaXNBY3RpdmU9ITAsci5sYXlvdXQ9blswXS5sYXlvdXQsbz1uWzBdKSxhd2FpdCBBZShuKSxyLndvcmtzcGFjZVBsYXRmb3JtLnBhZ2VzPWV9aWYoci5sYXlvdXQpe3I9cGUoe30sd28sdD8uZGVmYXVsdFdpbmRvd09wdGlvbnMscix5byksci5sYXlvdXQ9cGUoci5sYXlvdXQsYm8pLChyLmljb258fHIudGFza2Jhckljb24pJiYoci50YXNrYmFySWNvbkdyb3VwfHw9ZmluLm1lLmlkZW50aXR5LnV1aWQpLCFyLmJhY2tncm91bmRDb2xvciYmbiYmKHIuYmFja2dyb3VuZENvbG9yPVwicGFsZXR0ZVwiaW4gbj9uPy5wYWxldHRlPy5iYWNrZ3JvdW5kMnx8bj8ucGFsZXR0ZT8uYmFja2dyb3VuZFByaW1hcnk6bj8ucGFsZXR0ZXMuZGFyay5iYWNrZ3JvdW5kMnx8bj8ucGFsZXR0ZXMuZGFyay5iYWNrZ3JvdW5kUHJpbWFyeSk7Y29uc3QgZT1cIndvcmtzcGFjZVBsYXRmb3JtXCJpbiByJiZyLndvcmtzcGFjZVBsYXRmb3JtPy5uZXdUYWJVcmw7aWYoZSYmKHIubGF5b3V0LnNldHRpbmdzfHw9e30sci5sYXlvdXQuc2V0dGluZ3MubmV3VGFiQnV0dG9uPXt1cmw6ZX0pLHI9Q3QociwhMCksIXIud29ya3NwYWNlUGxhdGZvcm0/LnBhZ2VzPy5sZW5ndGgpe2NvbnN0IGU9YXdhaXQgb3QoXCJVbnRpdGxlZCBQYWdlXCIpLG49ey4uLmF3YWl0IGdyKGUsci5sYXlvdXQpLGlzQWN0aXZlOiEwfTtyLndvcmtzcGFjZVBsYXRmb3JtfHw9e30sci53b3Jrc3BhY2VQbGF0Zm9ybS5wYWdlcz1hd2FpdCBnbyhbbl0sdD8uZGVmYXVsdFBhZ2VPcHRpb25zKX19cmV0dXJuIHIuY29ybmVyUm91bmRpbmcmJmRlbGV0ZSByLmNvcm5lclJvdW5kaW5nLHIubmFtZXx8ci5sYXlvdXQ/ci5jb250ZXh0TWVudU9wdGlvbnM/LnRlbXBsYXRlPy5sZW5ndGg+MD9yLmNvbnRleHRNZW51T3B0aW9ucy50ZW1wbGF0ZT1yLmNvbnRleHRNZW51T3B0aW9ucy50ZW1wbGF0ZS5maWx0ZXIoKGU9PlwicHJpbnRcIiE9PWUpKTpyLmNvbnRleHRNZW51T3B0aW9ucz17dGVtcGxhdGU6W10sZW5hYmxlZDohMX06ci5uYW1lPWAke1QuQ2xhc3NpY1dpbmRvd30tJHtIZSgpfWAscn0pKGEsZSx0aGlzLmdldFRoZW1lcygpWzBdKSxhPWF3YWl0KGFzeW5jIGU9Pntjb25zdCB0PWF3YWl0IGZpbi5TeXN0ZW0uZ2V0TW9uaXRvckluZm8oKSxuPXQucHJpbWFyeU1vbml0b3IuYXZhaWxhYmxlUmVjdC5ib3R0b20tdC5wcmltYXJ5TW9uaXRvci5hdmFpbGFibGVSZWN0LnRvcCxyPXQucHJpbWFyeU1vbml0b3IuYXZhaWxhYmxlUmVjdC5yaWdodC10LnByaW1hcnlNb25pdG9yLmF2YWlsYWJsZVJlY3QubGVmdDtyZXR1cm4gZS5kZWZhdWx0SGVpZ2h0PWUuZGVmYXVsdEhlaWdodHx8ODAwLGUuZGVmYXVsdFdpZHRoPWUuZGVmYXVsdFdpZHRofHw4MDAsbjxlLmRlZmF1bHRIZWlnaHQmJihlLmRlZmF1bHRIZWlnaHQ9bikscjxlLmRlZmF1bHRXaWR0aCYmKGUuZGVmYXVsdFdpZHRoPXIpLGV9KShhKTtjb25zdCBpPWF3YWl0KGU9PmFzeW5jKHQsbik9PntsZXQgcj0hMTtjb25zdCBvPWF3YWl0IGUodCxuKTtyZXR1cm4gdD8ud29ya3NwYWNlUGxhdGZvcm0/Ll9pbnRlcm5hbERlZmVyU2hvd09wdGlvbnM/LmRlZmVyU2hvd0VuYWJsZWQ/KGF3YWl0IG8uYWRkTGlzdGVuZXIoXCJzaG93LXJlcXVlc3RlZFwiLChhc3luYygpPT57aWYocilyZXR1cm47Y29uc3QgZT1hd2FpdCBvLmdldE9wdGlvbnMoKTthd2FpdCBvLnVwZGF0ZU9wdGlvbnMoe3dvcmtzcGFjZVBsYXRmb3JtOnsuLi5lLndvcmtzcGFjZVBsYXRmb3JtLF9pbnRlcm5hbERlZmVyU2hvd09wdGlvbnM6ey4uLmUud29ya3NwYWNlUGxhdGZvcm0uX2ludGVybmFsRGVmZXJTaG93T3B0aW9ucyxhdXRvU2hvdzohMH19fSkscj0hMH0pKSxvKTpvfSkoKChlLHQpPT5zdXBlci5jcmVhdGVXaW5kb3coZSx0KSkpKGEsbik7cmV0dXJuIGllKHt0eXBlOlwiV2luZG93XCIsYWN0aW9uOlwiT3BlblwiLGVudGl0eUlkOmkuaWRlbnRpdHl9KSxpfWFzeW5jIGNyZWF0ZVZpZXcodCxuKXtyZXR1cm4gdC5vcHRzPVNvKHQub3B0cyxlPy5kZWZhdWx0Vmlld09wdGlvbnMpLHQub3B0cz1hd2FpdCBfbyh0Lm9wdHMsdGhpcy5mZXRjaE1hbmlmZXN0LG4pLHN1cGVyLmNyZWF0ZVZpZXcodCxuKX1hc3luYyByZXBsYWNlVmlldyh0LG4pe3JldHVybiB0Lm9wdHMubmV3Vmlldz1hd2FpdCBTbyh0Lm9wdHMubmV3VmlldyxlPy5kZWZhdWx0Vmlld09wdGlvbnMpLHQub3B0cy5uZXdWaWV3PWF3YWl0IF9vKHQub3B0cy5uZXdWaWV3LHRoaXMuZmV0Y2hNYW5pZmVzdCxuKSxzdXBlci5yZXBsYWNlVmlldyh0LG4pfWFzeW5jIHJlcGxhY2VMYXlvdXQoZSx0KXtyZXR1cm4gZGVsZXRlIGUub3B0cy5sYXlvdXQ/LmRpbWVuc2lvbnMsc3VwZXIucmVwbGFjZUxheW91dChlLHQpfWFzeW5jIGdldFNhdmVkUGFnZSguLi5lKXtyZXR1cm4gdXIuYXBwbHkodGhpcyxlKX1hc3luYyBnZXRTYXZlZFBhZ2VzKC4uLmUpe3JldHVybiBkci5hcHBseSh0aGlzLGUpfWFzeW5jIGNyZWF0ZVNhdmVkUGFnZSguLi5lKXtyZXR1cm4gZnIuYXBwbHkodGhpcyxlKX1hc3luYyBkZWxldGVTYXZlZFBhZ2UoLi4uZSl7cmV0dXJuIHByLmFwcGx5KHRoaXMsZSl9YXN5bmMgdXBkYXRlU2F2ZWRQYWdlKC4uLmUpe3JldHVybiBoci5hcHBseSh0aGlzLGUpfWFzeW5jIGdldFNhdmVkV29ya3NwYWNlKC4uLmUpe3JldHVybiBzby5hcHBseSh0aGlzLGUpfWFzeW5jIGdldFNhdmVkV29ya3NwYWNlcyguLi5lKXtyZXR1cm4gdW8uYXBwbHkodGhpcyxlKX1hc3luYyBjcmVhdGVTYXZlZFdvcmtzcGFjZSguLi5lKXtyZXR1cm4gZm8uYXBwbHkodGhpcyxlKX1hc3luYyBkZWxldGVTYXZlZFdvcmtzcGFjZSguLi5lKXtyZXR1cm4gcG8uYXBwbHkodGhpcyxlKX1hc3luYyB1cGRhdGVTYXZlZFdvcmtzcGFjZSguLi5lKXtyZXR1cm4gaG8uYXBwbHkodGhpcyxlKX1hc3luYyBnZXREb2NrUHJvdmlkZXJDb25maWcoLi4uZSl7cmV0dXJuIGlvLmFwcGx5KHRoaXMsZSl9YXN5bmMgc2F2ZURvY2tQcm92aWRlckNvbmZpZyguLi5lKXtyZXR1cm4gbG8uYXBwbHkodGhpcyxlKX1hc3luYyBhdHRhY2hQYWdlc1RvV2luZG93KHQpe2NvbnN0IG49YXdhaXQgZ28odC5wYWdlcyxlPy5kZWZhdWx0UGFnZU9wdGlvbnMpO2F3YWl0IEFlKG4pLGF3YWl0IFhlKHsuLi50LHBhZ2VzOm59KX1hc3luYyBvcGVuR2xvYmFsQ29udGV4dE1lbnVJbnRlcm5hbCguLi5lKXtyZXR1cm4gZW8uYXBwbHkodGhpcyxlKX1hc3luYyBvcGVuR2xvYmFsQ29udGV4dE1lbnUoLi4uZSl7cmV0dXJuIHRvLmFwcGx5KHRoaXMsZSl9YXN5bmMgb3BlblZpZXdUYWJDb250ZXh0TWVudUludGVybmFsKC4uLmUpe3JldHVybiBuby5hcHBseSh0aGlzLGUpfWFzeW5jIG9wZW5WaWV3VGFiQ29udGV4dE1lbnUoLi4uZSl7cmV0dXJuIHRvLmFwcGx5KHRoaXMsZSl9YXN5bmMgb3BlblBhZ2VUYWJDb250ZXh0TWVudUludGVybmFsKC4uLmUpe3JldHVybiByby5hcHBseSh0aGlzLGUpfWFzeW5jIG9wZW5QYWdlVGFiQ29udGV4dE1lbnUoLi4uZSl7cmV0dXJuIHRvLmFwcGx5KHRoaXMsZSl9YXN5bmMgb3BlblNhdmVCdXR0b25Db250ZXh0TWVudSguLi5lKXtyZXR1cm4gdG8uYXBwbHkodGhpcyxlKX1hc3luYyBvcGVuU2F2ZUJ1dHRvbkNvbnRleHRNZW51SW50ZXJuYWwoLi4uZSl7cmV0dXJuIG9vLmFwcGx5KHRoaXMsZSl9Z2V0U2VsZWN0ZWRTY2hlbWUoLi4uZSl7cmV0dXJuIEp0LmFwcGx5KHRoaXMsZSl9YXN5bmMgc2V0U2VsZWN0ZWRTY2hlbWUoLi4uZSl7cmV0dXJuIFF0LmFwcGx5KHRoaXMsZSl9YXN5bmMgYW5hbHl0aWNzSW50ZXJuYWwoLi4uZSl7cmV0dXJuIGZ0LmFwcGx5KHRoaXMsZSl9YXN5bmMgaGFuZGxlQW5hbHl0aWNzKC4uLmUpe319cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdD90KG8pOm5ldyBvfTthc3luYyBmdW5jdGlvbiBQbygpeyFmdW5jdGlvbigpe2NvbnN0IGU9QigpO2UuYWRkTGlzdGVuZXIoXCJ3aW5kb3ctb3B0aW9ucy1jaGFuZ2VkXCIsQm4pLGUuYWRkTGlzdGVuZXIoXCJ3aW5kb3ctY2xvc2VkXCIsVG4pLGUuYWRkTGlzdGVuZXIoXCJ3aW5kb3ctY3JlYXRlZFwiLFRuKSxmaW4ubWUub24oXCJ2aWV3LWF0dGFjaGVkXCIsQm4pLGZpbi5JbnRlckFwcGxpY2F0aW9uQnVzLnN1YnNjcmliZSh7dXVpZDpmaW4ubWUuaWRlbnRpdHkudXVpZH0sXCJicm93c2VyLXdpbmRvdy1yZWFkeVwiLFRuKX0oKSxGbigpLGFzeW5jIGZ1bmN0aW9uKCl7Y29uc3QgZT1maW4uQXBwbGljYXRpb24uZ2V0Q3VycmVudFN5bmMoKTthd2FpdCBlLmFkZExpc3RlbmVyKFwid2luZG93LWZvY3VzZWRcIixSbil9KCk7X24oYXdhaXQgam4oKSl9bGV0IGtvO2Z1bmN0aW9uIEhvKHtvdmVycmlkZUNhbGxiYWNrOmUsaW50ZXJvcE92ZXJyaWRlOnQsYnJvd3NlcjpuLGFuYWx5dGljczpyLGludGVncmF0aW9uczpvPVtdfSl7aWYoIXgpdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGJlIHVzZWQgb3V0c2lkZSBhbiBPcGVuRmluIGVudi5cIik7cmV0dXJuIGtvfHwoa289bmV3IFByb21pc2UoKGFzeW5jIGE9Pnt2YXIgaSxsO2Zpbi5QbGF0Zm9ybS5nZXRDdXJyZW50U3luYygpLm9uY2UoXCJwbGF0Zm9ybS1hcGktcmVhZHlcIiwoKCk9PlBvKCkpKSxuPy50aXRsZSYmKGk9bi50aXRsZSxCcj1pKSxwdChyKSxhd2FpdCBmaW4uUGxhdGZvcm0uaW5pdCh7b3ZlcnJpZGVDYWxsYmFjazpFbyhuLGV8fG4/Lm92ZXJyaWRlQ2FsbGJhY2spLGludGVyb3BPdmVycmlkZTp0fHxuPy5pbnRlcm9wT3ZlcnJpZGV9KSxsPXthbGxvd2VkOiEwfSxlZShKLlBsYXRmb3JtLGwpLGF3YWl0IFByb21pc2UuYWxsKG8ubWFwKChhc3luYyBlPT57KChlLHQpPT57ZWUoYCR7Si5NaWNyb2Zsb3d9OiR7ZX1gLHQpfSkoZS53b3JrZmxvd0ludGVncmF0aW9uTmFtZSx7YWxsb3dlZDohMCxhcGlWZXJzaW9uOlZ9KSxhd2FpdCBlLl9pbml0aWFsaXplV29ya2Zsb3dzKCl9KSkpLGEoKX0pKSksa299Y29uc3QgVm89YXN5bmMoe3RoZW1lOmUsY3VzdG9tQWN0aW9uczp0LC4uLm59KT0+e2NvbnN0IHI9Vi5zcGxpdChcIi5cIikubWFwKChlPT5wYXJzZUludChlKSkpLG89YXdhaXQoYXN5bmMgZT0+bmV3IFByb21pc2UoKGFzeW5jIHQ9PnsoYXdhaXQgc2UoKSkuZGlzYWJsZVJ1bnRpbWVWYWxpZGF0aW9uJiZ0KCEwKTtjb25zdCBuPShhd2FpdCBmaW4uU3lzdGVtLmdldFZlcnNpb24oKSkuc3BsaXQoXCIuXCIpLm1hcCgoZT0+cGFyc2VJbnQoZSkpKTt0KGUuZXZlcnkoKCh0LHIpPT4hKHI8Myl8fG5bcl09PT1lW3JdKSkpfSkpKShyKTt2YXIgYTtpZihlJiYoIWZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZT0+e2lmKCFlLmluY2x1ZGVzKFwiI1wiKSYmIWUuaW5jbHVkZXMoXCJyZ2JcIikmJiFlLmluY2x1ZGVzKFwiaHNsXCIpKXRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmQgcHJpbWFyeSBjb2xvciBpcyBub3QgdGhlIHJpZ2h0IGZvcm1hdC5cIil9O2UuZm9yRWFjaCgoZT0+e1wicGFsZXR0ZVwiaW4gZSYmdChlLnBhbGV0dGUuYmFja2dyb3VuZFByaW1hcnkpLFwicGFsZXR0ZXNcImluIGUmJih0KGUucGFsZXR0ZXMuZGFyay5iYWNrZ3JvdW5kUHJpbWFyeSksdChlLnBhbGV0dGVzLmxpZ2h0LmJhY2tncm91bmRQcmltYXJ5KSl9KSksT289ZX0oZSksYT17YWxsb3dlZDohMH0sZWUoSi5UaGVtaW5nLGEpKSx0JiYoV249dCksbylyZXR1cm4gSG8obik7dGhyb3cgbmV3IEVycm9yKGBSdW50aW1lIHZlcnNpb24gaXMgbm90IHN1cHBvcnRlZC4gICR7clswXX0uJHtyWzFdfS4ke3JbMl19LiogaXMgcmVxdWlyZWRgKX19KSgpLG1vZHVsZS5leHBvcnRzPXJ9KSgpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiLyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgaW5kZXguanMuTElDRU5TRS50eHQgKi9cbigoKT0+e3ZhciBlPXszMDQ6KGUsdCxuKT0+e3ZhciByPXs4NTk0OihlLHQsbik9PntuLmQodCx7WjooKT0+b30pO3ZhciByPS9eKChjaGlsZHJlbnxkYW5nZXJvdXNseVNldElubmVySFRNTHxrZXl8cmVmfGF1dG9Gb2N1c3xkZWZhdWx0VmFsdWV8ZGVmYXVsdENoZWNrZWR8aW5uZXJIVE1MfHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ3xzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmd8dmFsdWVMaW5rfGFjY2VwdHxhY2NlcHRDaGFyc2V0fGFjY2Vzc0tleXxhY3Rpb258YWxsb3d8YWxsb3dVc2VyTWVkaWF8YWxsb3dQYXltZW50UmVxdWVzdHxhbGxvd0Z1bGxTY3JlZW58YWxsb3dUcmFuc3BhcmVuY3l8YWx0fGFzeW5jfGF1dG9Db21wbGV0ZXxhdXRvUGxheXxjYXB0dXJlfGNlbGxQYWRkaW5nfGNlbGxTcGFjaW5nfGNoYWxsZW5nZXxjaGFyU2V0fGNoZWNrZWR8Y2l0ZXxjbGFzc0lEfGNsYXNzTmFtZXxjb2xzfGNvbFNwYW58Y29udGVudHxjb250ZW50RWRpdGFibGV8Y29udGV4dE1lbnV8Y29udHJvbHN8Y29udHJvbHNMaXN0fGNvb3Jkc3xjcm9zc09yaWdpbnxkYXRhfGRhdGVUaW1lfGRlY29kaW5nfGRlZmF1bHR8ZGVmZXJ8ZGlyfGRpc2FibGVkfGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlfGRvd25sb2FkfGRyYWdnYWJsZXxlbmNUeXBlfGZvcm18Zm9ybUFjdGlvbnxmb3JtRW5jVHlwZXxmb3JtTWV0aG9kfGZvcm1Ob1ZhbGlkYXRlfGZvcm1UYXJnZXR8ZnJhbWVCb3JkZXJ8aGVhZGVyc3xoZWlnaHR8aGlkZGVufGhpZ2h8aHJlZnxocmVmTGFuZ3xodG1sRm9yfGh0dHBFcXVpdnxpZHxpbnB1dE1vZGV8aW50ZWdyaXR5fGlzfGtleVBhcmFtc3xrZXlUeXBlfGtpbmR8bGFiZWx8bGFuZ3xsaXN0fGxvYWRpbmd8bG9vcHxsb3d8bWFyZ2luSGVpZ2h0fG1hcmdpbldpZHRofG1heHxtYXhMZW5ndGh8bWVkaWF8bWVkaWFHcm91cHxtZXRob2R8bWlufG1pbkxlbmd0aHxtdWx0aXBsZXxtdXRlZHxuYW1lfG5vbmNlfG5vVmFsaWRhdGV8b3BlbnxvcHRpbXVtfHBhdHRlcm58cGxhY2Vob2xkZXJ8cGxheXNJbmxpbmV8cG9zdGVyfHByZWxvYWR8cHJvZmlsZXxyYWRpb0dyb3VwfHJlYWRPbmx5fHJlZmVycmVyUG9saWN5fHJlbHxyZXF1aXJlZHxyZXZlcnNlZHxyb2xlfHJvd3N8cm93U3BhbnxzYW5kYm94fHNjb3BlfHNjb3BlZHxzY3JvbGxpbmd8c2VhbWxlc3N8c2VsZWN0ZWR8c2hhcGV8c2l6ZXxzaXplc3xzbG90fHNwYW58c3BlbGxDaGVja3xzcmN8c3JjRG9jfHNyY0xhbmd8c3JjU2V0fHN0YXJ0fHN0ZXB8c3R5bGV8c3VtbWFyeXx0YWJJbmRleHx0YXJnZXR8dGl0bGV8dHlwZXx1c2VNYXB8dmFsdWV8d2lkdGh8d21vZGV8d3JhcHxhYm91dHxkYXRhdHlwZXxpbmxpc3R8cHJlZml4fHByb3BlcnR5fHJlc291cmNlfHR5cGVvZnx2b2NhYnxhdXRvQ2FwaXRhbGl6ZXxhdXRvQ29ycmVjdHxhdXRvU2F2ZXxjb2xvcnxpbmVydHxpdGVtUHJvcHxpdGVtU2NvcGV8aXRlbVR5cGV8aXRlbUlEfGl0ZW1SZWZ8b258cmVzdWx0c3xzZWN1cml0eXx1bnNlbGVjdGFibGV8YWNjZW50SGVpZ2h0fGFjY3VtdWxhdGV8YWRkaXRpdmV8YWxpZ25tZW50QmFzZWxpbmV8YWxsb3dSZW9yZGVyfGFscGhhYmV0aWN8YW1wbGl0dWRlfGFyYWJpY0Zvcm18YXNjZW50fGF0dHJpYnV0ZU5hbWV8YXR0cmlidXRlVHlwZXxhdXRvUmV2ZXJzZXxhemltdXRofGJhc2VGcmVxdWVuY3l8YmFzZWxpbmVTaGlmdHxiYXNlUHJvZmlsZXxiYm94fGJlZ2lufGJpYXN8Ynl8Y2FsY01vZGV8Y2FwSGVpZ2h0fGNsaXB8Y2xpcFBhdGhVbml0c3xjbGlwUGF0aHxjbGlwUnVsZXxjb2xvckludGVycG9sYXRpb258Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyc3xjb2xvclByb2ZpbGV8Y29sb3JSZW5kZXJpbmd8Y29udGVudFNjcmlwdFR5cGV8Y29udGVudFN0eWxlVHlwZXxjdXJzb3J8Y3h8Y3l8ZHxkZWNlbGVyYXRlfGRlc2NlbnR8ZGlmZnVzZUNvbnN0YW50fGRpcmVjdGlvbnxkaXNwbGF5fGRpdmlzb3J8ZG9taW5hbnRCYXNlbGluZXxkdXJ8ZHh8ZHl8ZWRnZU1vZGV8ZWxldmF0aW9ufGVuYWJsZUJhY2tncm91bmR8ZW5kfGV4cG9uZW50fGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWR8ZmlsbHxmaWxsT3BhY2l0eXxmaWxsUnVsZXxmaWx0ZXJ8ZmlsdGVyUmVzfGZpbHRlclVuaXRzfGZsb29kQ29sb3J8Zmxvb2RPcGFjaXR5fGZvY3VzYWJsZXxmb250RmFtaWx5fGZvbnRTaXplfGZvbnRTaXplQWRqdXN0fGZvbnRTdHJldGNofGZvbnRTdHlsZXxmb250VmFyaWFudHxmb250V2VpZ2h0fGZvcm1hdHxmcm9tfGZyfGZ4fGZ5fGcxfGcyfGdseXBoTmFtZXxnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbHxnbHlwaE9yaWVudGF0aW9uVmVydGljYWx8Z2x5cGhSZWZ8Z3JhZGllbnRUcmFuc2Zvcm18Z3JhZGllbnRVbml0c3xoYW5naW5nfGhvcml6QWR2WHxob3Jpek9yaWdpblh8aWRlb2dyYXBoaWN8aW1hZ2VSZW5kZXJpbmd8aW58aW4yfGludGVyY2VwdHxrfGsxfGsyfGszfGs0fGtlcm5lbE1hdHJpeHxrZXJuZWxVbml0TGVuZ3RofGtlcm5pbmd8a2V5UG9pbnRzfGtleVNwbGluZXN8a2V5VGltZXN8bGVuZ3RoQWRqdXN0fGxldHRlclNwYWNpbmd8bGlnaHRpbmdDb2xvcnxsaW1pdGluZ0NvbmVBbmdsZXxsb2NhbHxtYXJrZXJFbmR8bWFya2VyTWlkfG1hcmtlclN0YXJ0fG1hcmtlckhlaWdodHxtYXJrZXJVbml0c3xtYXJrZXJXaWR0aHxtYXNrfG1hc2tDb250ZW50VW5pdHN8bWFza1VuaXRzfG1hdGhlbWF0aWNhbHxtb2RlfG51bU9jdGF2ZXN8b2Zmc2V0fG9wYWNpdHl8b3BlcmF0b3J8b3JkZXJ8b3JpZW50fG9yaWVudGF0aW9ufG9yaWdpbnxvdmVyZmxvd3xvdmVybGluZVBvc2l0aW9ufG92ZXJsaW5lVGhpY2tuZXNzfHBhbm9zZTF8cGFpbnRPcmRlcnxwYXRoTGVuZ3RofHBhdHRlcm5Db250ZW50VW5pdHN8cGF0dGVyblRyYW5zZm9ybXxwYXR0ZXJuVW5pdHN8cG9pbnRlckV2ZW50c3xwb2ludHN8cG9pbnRzQXRYfHBvaW50c0F0WXxwb2ludHNBdFp8cHJlc2VydmVBbHBoYXxwcmVzZXJ2ZUFzcGVjdFJhdGlvfHByaW1pdGl2ZVVuaXRzfHJ8cmFkaXVzfHJlZlh8cmVmWXxyZW5kZXJpbmdJbnRlbnR8cmVwZWF0Q291bnR8cmVwZWF0RHVyfHJlcXVpcmVkRXh0ZW5zaW9uc3xyZXF1aXJlZEZlYXR1cmVzfHJlc3RhcnR8cmVzdWx0fHJvdGF0ZXxyeHxyeXxzY2FsZXxzZWVkfHNoYXBlUmVuZGVyaW5nfHNsb3BlfHNwYWNpbmd8c3BlY3VsYXJDb25zdGFudHxzcGVjdWxhckV4cG9uZW50fHNwZWVkfHNwcmVhZE1ldGhvZHxzdGFydE9mZnNldHxzdGREZXZpYXRpb258c3RlbWh8c3RlbXZ8c3RpdGNoVGlsZXN8c3RvcENvbG9yfHN0b3BPcGFjaXR5fHN0cmlrZXRocm91Z2hQb3NpdGlvbnxzdHJpa2V0aHJvdWdoVGhpY2tuZXNzfHN0cmluZ3xzdHJva2V8c3Ryb2tlRGFzaGFycmF5fHN0cm9rZURhc2hvZmZzZXR8c3Ryb2tlTGluZWNhcHxzdHJva2VMaW5lam9pbnxzdHJva2VNaXRlcmxpbWl0fHN0cm9rZU9wYWNpdHl8c3Ryb2tlV2lkdGh8c3VyZmFjZVNjYWxlfHN5c3RlbUxhbmd1YWdlfHRhYmxlVmFsdWVzfHRhcmdldFh8dGFyZ2V0WXx0ZXh0QW5jaG9yfHRleHREZWNvcmF0aW9ufHRleHRSZW5kZXJpbmd8dGV4dExlbmd0aHx0b3x0cmFuc2Zvcm18dTF8dTJ8dW5kZXJsaW5lUG9zaXRpb258dW5kZXJsaW5lVGhpY2tuZXNzfHVuaWNvZGV8dW5pY29kZUJpZGl8dW5pY29kZVJhbmdlfHVuaXRzUGVyRW18dkFscGhhYmV0aWN8dkhhbmdpbmd8dklkZW9ncmFwaGljfHZNYXRoZW1hdGljYWx8dmFsdWVzfHZlY3RvckVmZmVjdHx2ZXJzaW9ufHZlcnRBZHZZfHZlcnRPcmlnaW5YfHZlcnRPcmlnaW5ZfHZpZXdCb3h8dmlld1RhcmdldHx2aXNpYmlsaXR5fHdpZHRoc3x3b3JkU3BhY2luZ3x3cml0aW5nTW9kZXx4fHhIZWlnaHR8eDF8eDJ8eENoYW5uZWxTZWxlY3Rvcnx4bGlua0FjdHVhdGV8eGxpbmtBcmNyb2xlfHhsaW5rSHJlZnx4bGlua1JvbGV8eGxpbmtTaG93fHhsaW5rVGl0bGV8eGxpbmtUeXBlfHhtbEJhc2V8eG1sbnN8eG1sbnNYbGlua3x4bWxMYW5nfHhtbFNwYWNlfHl8eTF8eTJ8eUNoYW5uZWxTZWxlY3Rvcnx6fHpvb21BbmRQYW58Zm9yfGNsYXNzfGF1dG9mb2N1cyl8KChbRGRdW0FhXVtUdF1bQWFdfFtBYV1bUnJdW0lpXVtBYV18eCktLiopKSQvO2NvbnN0IG89KGk9e30sZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWlbZV0mJihpW2VdPSh0PWUsci50ZXN0KHQpfHwxMTE9PT10LmNoYXJDb2RlQXQoMCkmJjExMD09PXQuY2hhckNvZGVBdCgxKSYmdC5jaGFyQ29kZUF0KDIpPDkxKSksaVtlXTt2YXIgdH0pO3ZhciBpfSwxNTIxOihlLHQsbik9PntuLnIodCksbi5kKHQse0FjdGl2aXR5TG9nSWNvbjooKT0+aSxBbGlnbkJhc2VsaW5lSWNvbjooKT0+YSxBbGlnbkJvdHRvbUljb246KCk9PmwsQWxpZ25DZW50ZXJIb3Jpem9udGFsbHlJY29uOigpPT5zLEFsaWduQ2VudGVyVmVydGljYWxseUljb246KCk9PmMsQWxpZ25MZWZ0SWNvbjooKT0+dSxBbGlnblJpZ2h0SWNvbjooKT0+ZixBbGlnblRvcEljb246KCk9PmQsQWxsU2lkZXNJY29uOigpPT5wLEFuZ2xlSWNvbjooKT0+aCxBcmNoaXZlSWNvbjooKT0+dixBcnJvd0JvdHRvbUxlZnRJY29uOigpPT5nLEFycm93Qm90dG9tUmlnaHRJY29uOigpPT5DLEFycm93RG93bkljb246KCk9Pm0sQXJyb3dMZWZ0SWNvbjooKT0+eSxBcnJvd1JpZ2h0SWNvbjooKT0+dyxBcnJvd1RvcExlZnRJY29uOigpPT5iLEFycm93VG9wUmlnaHRJY29uOigpPT54LEFycm93VXBJY29uOigpPT5fLEFzcGVjdFJhdGlvSWNvbjooKT0+TCxBdmF0YXJJY29uOigpPT5PLEJhY2twYWNrSWNvbjooKT0+RSxCYWRnZUljb246KCk9PlMsQmFyQ2hhcnRJY29uOigpPT5NLEJlbGxJY29uOigpPT5qLEJsZW5kaW5nTW9kZUljb246KCk9PmssQm9va21hcmtJY29uOigpPT5SLEJvcmRlckFsbEljb246KCk9PlAsQm9yZGVyQm90dG9tSWNvbjooKT0+QSxCb3JkZXJEYXNoZWRJY29uOigpPT5JLEJvcmRlckRvdHRlZEljb246KCk9PlQsQm9yZGVyTGVmdEljb246KCk9PkgsQm9yZGVyTm9uZUljb246KCk9PlYsQm9yZGVyUmlnaHRJY29uOigpPT5CLEJvcmRlclNvbGlkSWNvbjooKT0+RCxCb3JkZXJTcGxpdEljb246KCk9PlosQm9yZGVyU3R5bGVJY29uOigpPT4kLEJvcmRlclRvcEljb246KCk9PkYsQm94SWNvbjooKT0+TixCb3hNb2RlbEljb246KCk9PlUsQnV0dG9uSWNvbjooKT0+VyxDYWxlbmRhckljb246KCk9PnosQ2FtZXJhSWNvbjooKT0+RyxDYXJkU3RhY2tJY29uOigpPT5xLENhcmRTdGFja01pbnVzSWNvbjooKT0+WSxDYXJkU3RhY2tQbHVzSWNvbjooKT0+SyxDYXJldERvd25JY29uOigpPT5YLENhcmV0TGVmdEljb246KCk9PkosQ2FyZXRSaWdodEljb246KCk9PlEsQ2FyZXRTb3J0SWNvbjooKT0+ZWUsQ2FyZXRVcEljb246KCk9PnRlLENoYXRCdWJibGVJY29uOigpPT5uZSxDaGVja0NpcmNsZWRJY29uOigpPT5vZSxDaGVja0ljb246KCk9PnJlLENoZWNrYm94SWNvbjooKT0+aWUsQ2hldnJvbkRvd25JY29uOigpPT5hZSxDaGV2cm9uTGVmdEljb246KCk9PmxlLENoZXZyb25SaWdodEljb246KCk9PnNlLENoZXZyb25VcEljb246KCk9PmNlLENpcmNsZUJhY2tzbGFzaEljb246KCk9PmZlLENpcmNsZUljb246KCk9PnVlLENsaXBib2FyZENvcHlJY29uOigpPT5wZSxDbGlwYm9hcmRJY29uOigpPT5kZSxDbG9ja0ljb246KCk9PmhlLENvZGVJY29uOigpPT52ZSxDb2RlU2FuZGJveExvZ29JY29uOigpPT5nZSxDb2x1bW5TcGFjaW5nSWNvbjooKT0+Q2UsQ29sdW1uc0ljb246KCk9Pm1lLENvbW1pdEljb246KCk9PnllLENvbXBvbmVudDFJY29uOigpPT53ZSxDb21wb25lbnQySWNvbjooKT0+YmUsQ29tcG9uZW50Qm9vbGVhbkljb246KCk9PnhlLENvbXBvbmVudEluc3RhbmNlSWNvbjooKT0+X2UsQ29tcG9uZW50Tm9uZUljb246KCk9PkxlLENvbXBvbmVudFBsYWNlaG9sZGVySWNvbjooKT0+T2UsQ29udGFpbmVySWNvbjooKT0+RWUsQ29va2llSWNvbjooKT0+U2UsQ29weUljb246KCk9Pk1lLENvcm5lckJvdHRvbUxlZnRJY29uOigpPT5qZSxDb3JuZXJCb3R0b21SaWdodEljb246KCk9PmtlLENvcm5lclRvcExlZnRJY29uOigpPT5SZSxDb3JuZXJUb3BSaWdodEljb246KCk9PlBlLENvcm5lcnNJY29uOigpPT5BZSxDb3VudGRvd25UaW1lckljb246KCk9PkllLENvdW50ZXJDbG9ja3dpc2VDbG9ja0ljb246KCk9PlRlLENyb3BJY29uOigpPT5IZSxDcm9zczFJY29uOigpPT5WZSxDcm9zczJJY29uOigpPT5CZSxDcm9zc0NpcmNsZWRJY29uOigpPT5EZSxDcm9zc2hhaXIxSWNvbjooKT0+WmUsQ3Jvc3NoYWlyMkljb246KCk9PiRlLENydW1wbGVkUGFwZXJJY29uOigpPT5GZSxDdWJlSWNvbjooKT0+TmUsQ3Vyc29yQXJyb3dJY29uOigpPT5VZSxDdXJzb3JUZXh0SWNvbjooKT0+V2UsRGFzaEljb246KCk9PnplLERhc2hib2FyZEljb246KCk9PkdlLERpbWVuc2lvbnNJY29uOigpPT5xZSxEaXNjSWNvbjooKT0+WWUsRGl2aWRlckhvcml6b250YWxJY29uOigpPT5LZSxEaXZpZGVyVmVydGljYWxJY29uOigpPT5YZSxEb3RGaWxsZWRJY29uOigpPT5RZSxEb3RJY29uOigpPT5KZSxEb3RzSG9yaXpvbnRhbEljb246KCk9PmV0LERvdHNWZXJ0aWNhbEljb246KCk9PnR0LERvdWJsZUFycm93RG93bkljb246KCk9Pm50LERvdWJsZUFycm93TGVmdEljb246KCk9PnJ0LERvdWJsZUFycm93UmlnaHRJY29uOigpPT5vdCxEb3VibGVBcnJvd1VwSWNvbjooKT0+aXQsRG93bmxvYWRJY29uOigpPT5hdCxEcmFnSGFuZGxlRG90czFJY29uOigpPT5sdCxEcmFnSGFuZGxlRG90czJJY29uOigpPT5zdCxEcmFnSGFuZGxlSG9yaXpvbnRhbEljb246KCk9PmN0LERyYWdIYW5kbGVWZXJ0aWNhbEljb246KCk9PnV0LERyYXdpbmdQaW5GaWxsZWRJY29uOigpPT5kdCxEcmF3aW5nUGluSWNvbjooKT0+ZnQsRHJvcGRvd25NZW51SWNvbjooKT0+cHQsRW50ZXJGdWxsU2NyZWVuSWNvbjooKT0+dnQsRW50ZXJJY29uOigpPT5odCxFbnZlbG9wZUNsb3NlZEljb246KCk9Pmd0LEVudmVsb3BlT3Blbkljb246KCk9PkN0LEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uOigpPT5tdCxFeGl0RnVsbFNjcmVlbkljb246KCk9Pnd0LEV4aXRJY29uOigpPT55dCxFeHRlcm5hbExpbmtJY29uOigpPT5idCxFeWVDbG9zZWRJY29uOigpPT54dCxFeWVOb25lSWNvbjooKT0+X3QsRXllT3Blbkljb246KCk9Pkx0LEZhY2VJY29uOigpPT5PdCxGaWdtYUxvZ29JY29uOigpPT5FdCxGaWxlSWNvbjooKT0+U3QsRmlsZU1pbnVzSWNvbjooKT0+TXQsRmlsZVBsdXNJY29uOigpPT5qdCxGaWxlVGV4dEljb246KCk9Pmt0LEZvbnRCb2xkSWNvbjooKT0+UnQsRm9udEZhbWlseUljb246KCk9PlB0LEZvbnRJdGFsaWNJY29uOigpPT5BdCxGb250Um9tYW5JY29uOigpPT5JdCxGb250U2l6ZUljb246KCk9PlR0LEZvbnRTdHlsZUljb246KCk9Pkh0LEZyYW1lSWNvbjooKT0+VnQsRnJhbWVyTG9nb0ljb246KCk9PkJ0LEdlYXJJY29uOigpPT5EdCxHaXRIdWJMb2dvSWNvbjooKT0+WnQsR2xvYmVJY29uOigpPT4kdCxHcmlkSWNvbjooKT0+RnQsR3JvdXBJY29uOigpPT5OdCxIYWxmMUljb246KCk9PlV0LEhhbGYySWNvbjooKT0+V3QsSGFtYnVyZ2VyTWVudUljb246KCk9Pnp0LEhhbmRJY29uOigpPT5HdCxIZWFkaW5nSWNvbjooKT0+cXQsSGVpZ2h0SWNvbjooKT0+WXQsSG9tZUljb246KCk9Pkt0LEljb25KYXJMb2dvSWNvbjooKT0+WHQsSWRDYXJkSWNvbjooKT0+SnQsSW1hZ2VJY29uOigpPT5RdCxJbmZvQ2lyY2xlZEljb246KCk9PmVuLElucHV0SWNvbjooKT0+dG4sTGFwVGltZXJJY29uOigpPT5ubixMYXllcnNJY29uOigpPT5ybixMYXlvdXRJY29uOigpPT5vbixMZXR0ZXJDYXNlQ2FwaXRhbGl6ZUljb246KCk9PmFuLExldHRlckNhc2VMb3dlcmNhc2VJY29uOigpPT5sbixMZXR0ZXJDYXNlVG9nZ2xlSWNvbjooKT0+c24sTGV0dGVyQ2FzZVVwcGVyY2FzZUljb246KCk9PmNuLExldHRlclNwYWNpbmdJY29uOigpPT51bixMaWdodG5pbmdCb2x0SWNvbjooKT0+Zm4sTGluZUhlaWdodEljb246KCk9PmRuLExpbmsxSWNvbjooKT0+cG4sTGluazJJY29uOigpPT5obixMaW5rQnJlYWsxSWNvbjooKT0+dm4sTGlua0JyZWFrMkljb246KCk9PmduLExpbmtOb25lMUljb246KCk9PkNuLExpbmtOb25lMkljb246KCk9Pm1uLExpc3RCdWxsZXRJY29uOigpPT55bixMb2NrQ2xvc2VkSWNvbjooKT0+d24sTG9ja09wZW4xSWNvbjooKT0+Ym4sTG9ja09wZW4ySWNvbjooKT0+eG4sTG9vcEljb246KCk9Pl9uLE1hZ2ljV2FuZEljb246KCk9PkxuLE1hZ25pZnlpbmdHbGFzc0ljb246KCk9Pk9uLE1hcmdpbkljb246KCk9PkVuLE1hc2tPZmZJY29uOigpPT5TbixNYXNrT25JY29uOigpPT5NbixNaW51c0NpcmNsZWRJY29uOigpPT5rbixNaW51c0ljb246KCk9PmpuLE1peEljb246KCk9PlJuLE1peGVySG9yaXpvbnRhbEljb246KCk9PlBuLE1peGVyVmVydGljYWxJY29uOigpPT5BbixNb2R1bHpMb2dvSWNvbjooKT0+SW4sTW9vbkljb246KCk9PlRuLE1vdmVJY29uOigpPT5IbixOb3Rpb25Mb2dvSWNvbjooKT0+Vm4sT3BhY2l0eUljb246KCk9PkJuLE92ZXJsaW5lSWNvbjooKT0+RG4sUGFkZGluZ0ljb246KCk9PlpuLFBhcGVyUGxhbmVJY29uOigpPT4kbixQYXVzZUljb246KCk9PkZuLFBlbmNpbDFJY29uOigpPT5ObixQZW5jaWwySWNvbjooKT0+VW4sUGVyc29uSWNvbjooKT0+V24sUGllQ2hhcnRJY29uOigpPT56bixQaWxjcm93SWNvbjooKT0+R24sUGluQm90dG9tSWNvbjooKT0+cW4sUGluTGVmdEljb246KCk9PlluLFBpblJpZ2h0SWNvbjooKT0+S24sUGluVG9wSWNvbjooKT0+WG4sUGxheUljb246KCk9PkpuLFBsdXNDaXJjbGVkSWNvbjooKT0+ZXIsUGx1c0ljb246KCk9PlFuLFF1ZXN0aW9uTWFya0NpcmNsZWRJY29uOigpPT5ucixRdWVzdGlvbk1hcmtJY29uOigpPT50cixRdW90ZUljb246KCk9PnJyLFJhZGlvYnV0dG9uSWNvbjooKT0+b3IsUmVhZGVySWNvbjooKT0+aXIsUmVsb2FkSWNvbjooKT0+YXIsUmVzZXRJY29uOigpPT5scixSZXN1bWVJY29uOigpPT5zcixSb2NrZXRJY29uOigpPT5jcixSb3RhdGVDb3VudGVyQ2xvY2t3aXNlSWNvbjooKT0+dXIsUm93U3BhY2luZ0ljb246KCk9PmZyLFJvd3NJY29uOigpPT5kcixSdWxlckhvcml6b250YWxJY29uOigpPT5wcixSdWxlclNxdWFyZUljb246KCk9PmhyLFNlY3Rpb25JY29uOigpPT52cixTZXdpbmdQaW5GaWxsZWRJY29uOigpPT5DcixTZXdpbmdQaW5JY29uOigpPT5ncixTaGFkb3dJY29uOigpPT5tcixTaGFkb3dJbm5lckljb246KCk9PnlyLFNoYWRvd05vbmVJY29uOigpPT53cixTaGFkb3dPdXRlckljb246KCk9PmJyLFNoYXJlMUljb246KCk9PnhyLFNoYXJlMkljb246KCk9Pl9yLFNodWZmbGVJY29uOigpPT5McixTaXplSWNvbjooKT0+T3IsU2tldGNoTG9nb0ljb246KCk9PkVyLFNsYXNoSWNvbjooKT0+U3IsU2xpZGVySWNvbjooKT0+TXIsU3BhY2VCZXR3ZWVuSG9yaXpvbnRhbGx5SWNvbjooKT0+anIsU3BhY2VCZXR3ZWVuVmVydGljYWxseUljb246KCk9PmtyLFNwYWNlRXZlbmx5SG9yaXpvbnRhbGx5SWNvbjooKT0+UnIsU3BhY2VFdmVubHlWZXJ0aWNhbGx5SWNvbjooKT0+UHIsU3BlYWtlckxvdWRJY29uOigpPT5BcixTcGVha2VyTW9kZXJhdGVJY29uOigpPT5JcixTcGVha2VyT2ZmSWNvbjooKT0+VHIsU3BlYWtlclF1aWV0SWNvbjooKT0+SHIsU3F1YXJlSWNvbjooKT0+VnIsU3RhY2tJY29uOigpPT5CcixTdGFyRmlsbGVkSWNvbjooKT0+WnIsU3Rhckljb246KCk9PkRyLFN0aXRjaGVzTG9nb0ljb246KCk9PiRyLFN0b3BJY29uOigpPT5GcixTdG9wd2F0Y2hJY29uOigpPT5OcixTdHJldGNoSG9yaXpvbnRhbGx5SWNvbjooKT0+VXIsU3RyZXRjaFZlcnRpY2FsbHlJY29uOigpPT5XcixTdHJpa2V0aHJvdWdoSWNvbjooKT0+enIsU3VuSWNvbjooKT0+R3IsU3dpdGNoSWNvbjooKT0+cXIsU3ltYm9sSWNvbjooKT0+WXIsVGFibGVJY29uOigpPT5LcixUYXJnZXRJY29uOigpPT5YcixUZXh0QWxpZ25DZW50ZXJJY29uOigpPT5RcixUZXh0QWxpZ25KdXN0aWZ5SWNvbjooKT0+ZW8sVGV4dEFsaWduTGVmdEljb246KCk9PnRvLFRleHRBbGlnblJpZ2h0SWNvbjooKT0+bm8sVGV4dEljb246KCk9PkpyLFRleHROb25lSWNvbjooKT0+cm8sVGhpY2tBcnJvd0Rvd25JY29uOigpPT5vbyxUaGlja0Fycm93TGVmdEljb246KCk9PmlvLFRoaWNrQXJyb3dSaWdodEljb246KCk9PmFvLFRoaWNrQXJyb3dVcEljb246KCk9PmxvLFRpbWVySWNvbjooKT0+c28sVG9rZW5zSWNvbjooKT0+Y28sVHJhY2tOZXh0SWNvbjooKT0+dW8sVHJhY2tQcmV2aW91c0ljb246KCk9PmZvLFRyYW5zcGFyZW5jeUdyaWRJY29uOigpPT5wbyxUcmFzaEljb246KCk9PmhvLFRyaWFuZ2xlRG93bkljb246KCk9PnZvLFRyaWFuZ2xlTGVmdEljb246KCk9PmdvLFRyaWFuZ2xlUmlnaHRJY29uOigpPT5DbyxUcmlhbmdsZVVwSWNvbjooKT0+bW8sVHdpdHRlckxvZ29JY29uOigpPT55byxVbmRlcmxpbmVJY29uOigpPT53byxVcGRhdGVJY29uOigpPT5ibyxVcGxvYWRJY29uOigpPT54byxWYWx1ZUljb246KCk9Pl9vLFZhbHVlTm9uZUljb246KCk9PkxvLFZlcmNlbExvZ29JY29uOigpPT5PbyxWaWRlb0ljb246KCk9PkVvLFZpZXdHcmlkSWNvbjooKT0+U28sVmlld0hvcml6b250YWxJY29uOigpPT5NbyxWaWV3Tm9uZUljb246KCk9PmpvLFZpZXdWZXJ0aWNhbEljb246KCk9PmtvLFdpZHRoSWNvbjooKT0+Um8sWm9vbUluSWNvbjooKT0+UG8sWm9vbU91dEljb246KCk9PkFvfSk7dmFyIHI9big2Njg5KTtmdW5jdGlvbiBvKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfXZhciBpPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wIDEuNUMwIDEuMjIzODYgMC4yMjM4NTggMSAwLjUgMUgyLjVDMi43NzYxNCAxIDMgMS4yMjM4NiAzIDEuNUMzIDEuNzc2MTQgMi43NzYxNCAyIDIuNSAySDAuNUMwLjIyMzg1OCAyIDAgMS43NzYxNCAwIDEuNVpNNCAxLjVDNCAxLjIyMzg2IDQuMjIzODYgMSA0LjUgMUgxNC41QzE0Ljc3NjEgMSAxNSAxLjIyMzg2IDE1IDEuNUMxNSAxLjc3NjE0IDE0Ljc3NjEgMiAxNC41IDJINC41QzQuMjIzODYgMiA0IDEuNzc2MTQgNCAxLjVaTTQgNC41QzQgNC4yMjM4NiA0LjIyMzg2IDQgNC41IDRIMTEuNUMxMS43NzYxIDQgMTIgNC4yMjM4NiAxMiA0LjVDMTIgNC43NzYxNCAxMS43NzYxIDUgMTEuNSA1SDQuNUM0LjIyMzg2IDUgNCA0Ljc3NjE0IDQgNC41Wk0wIDcuNUMwIDcuMjIzODYgMC4yMjM4NTggNyAwLjUgN0gyLjVDMi43NzYxNCA3IDMgNy4yMjM4NiAzIDcuNUMzIDcuNzc2MTQgMi43NzYxNCA4IDIuNSA4SDAuNUMwLjIyMzg1OCA4IDAgNy43NzYxNCAwIDcuNVpNNCA3LjVDNCA3LjIyMzg2IDQuMjIzODYgNyA0LjUgN0gxNC41QzE0Ljc3NjEgNyAxNSA3LjIyMzg2IDE1IDcuNUMxNSA3Ljc3NjE0IDE0Ljc3NjEgOCAxNC41IDhINC41QzQuMjIzODYgOCA0IDcuNzc2MTQgNCA3LjVaTTQgMTAuNUM0IDEwLjIyMzkgNC4yMjM4NiAxMCA0LjUgMTBIMTEuNUMxMS43NzYxIDEwIDEyIDEwLjIyMzkgMTIgMTAuNUMxMiAxMC43NzYxIDExLjc3NjEgMTEgMTEuNSAxMUg0LjVDNC4yMjM4NiAxMSA0IDEwLjc3NjEgNCAxMC41Wk0wIDEzLjVDMCAxMy4yMjM5IDAuMjIzODU4IDEzIDAuNSAxM0gyLjVDMi43NzYxNCAxMyAzIDEzLjIyMzkgMyAxMy41QzMgMTMuNzc2MSAyLjc3NjE0IDE0IDIuNSAxNEgwLjVDMC4yMjM4NTggMTQgMCAxMy43NzYxIDAgMTMuNVpNNCAxMy41QzQgMTMuMjIzOSA0LjIyMzg2IDEzIDQuNSAxM0gxNC41QzE0Ljc3NjEgMTMgMTUgMTMuMjIzOSAxNSAxMy41QzE1IDEzLjc3NjEgMTQuNzc2MSAxNCAxNC41IDE0SDQuNUM0LjIyMzg2IDE0IDQgMTMuNzc2MSA0IDEzLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxhPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMC41IDEuNzUwMDNDMTAuNzEwNyAxLjc1MDAzIDEwLjg5ODggMS44ODIxNyAxMC45NzAzIDIuMDgwNDJMMTMuOTcwMyAxMC40QzE0LjA2NCAxMC42NTk4IDEzLjkyOTMgMTAuOTQ2MyAxMy42Njk2IDExLjA0QzEzLjQwOTggMTEuMTMzNiAxMy4xMjMzIDEwLjk5OSAxMy4wMjk2IDEwLjczOTJMMTIuMDQ3NyA4LjAxNjA2SDguOTUyMjdMNy45NzAzMSAxMC43MzkyQzcuODc2NjQgMTAuOTk5IDcuNTkwMTIgMTEuMTMzNiA3LjMzMDM1IDExLjA0QzcuMDcwNTggMTAuOTQ2MyA2LjkzNTkzIDEwLjY1OTggNy4wMjk2IDEwLjRMMTAuMDI5NiAyLjA4MDQyQzEwLjEwMTEgMS44ODIxNyAxMC4yODkyIDEuNzUwMDMgMTAuNSAxLjc1MDAzWk0xMC41IDMuNzI0MDJMMTEuNzQxMSA3LjE2NjA2SDkuMjU4NzdMMTAuNSAzLjcyNDAyWk0yLjQ5OTQ5IDIuMDk5OTdDMi43MjA0IDIuMDk5OTcgMi44OTk0OSAyLjI3OTA2IDIuODk5NDkgMi40OTk5N0wyLjg5OTQ5IDkuNTM0MjhMNC4yMTY2NCA4LjIxNzEzQzQuMzcyODUgOC4wNjA5MiA0LjYyNjEyIDguMDYwOTIgNC43ODIzMyA4LjIxNzEzQzQuOTM4NTQgOC4zNzMzNCA0LjkzODU0IDguNjI2NiA0Ljc4MjMzIDguNzgyODFMMi43ODIzMyAxMC43ODI4QzIuNzA3MzIgMTAuODU3OCAyLjYwNTU3IDEwLjkgMi40OTk0OSAxMC45QzIuMzkzNCAxMC45IDIuMjkxNjYgMTAuODU3OCAyLjIxNjY0IDEwLjc4MjhMMC4yMTY2NDUgOC43ODI4MUMwLjA2MDQzNDkgOC42MjY2IDAuMDYwNDM0OSA4LjM3MzM0IDAuMjE2NjQ1IDguMjE3MTNDMC4zNzI4NTQgOC4wNjA5MiAwLjYyNjEyIDguMDYwOTIgMC43ODIzMyA4LjIxNzEzTDIuMDk5NDkgOS41MzQyOEwyLjA5OTQ5IDIuNDk5OTdDMi4wOTk0OSAyLjI3OTA2IDIuMjc4NTcgMi4wOTk5NyAyLjQ5OTQ5IDIuMDk5OTdaTTAuMDk5OTY5NSAxMy41MDAxQzAuMDk5OTY5NSAxMy4yNzkxIDAuMjc5MDU2IDEzLjEwMDEgMC40OTk5NjkgMTMuMTAwMUgxNC41QzE0LjcyMDkgMTMuMTAwMSAxNC45IDEzLjI3OTEgMTQuOSAxMy41MDAxQzE0LjkgMTMuNzIxIDE0LjcyMDkgMTMuOTAwMSAxNC41IDEzLjkwMDFIMC40OTk5NjlDMC4yNzkwNTYgMTMuOTAwMSAwLjA5OTk2OTUgMTMuNzIxIDAuMDk5OTY5NSAxMy41MDAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOSAzQzkgMi40NDc3MiA4LjU1MjI5IDIgOCAySDdDNi40NDc3MiAyIDYgMi40NDc3MiA2IDNMNiAxNEgxLjVDMS4yMjM4NiAxNCAxIDE0LjIyMzkgMSAxNC41QzEgMTQuNzc2MSAxLjIyMzg2IDE1IDEuNSAxNUw2IDE1SDlIMTMuNUMxMy43NzYxIDE1IDE0IDE0Ljc3NjEgMTQgMTQuNUMxNCAxNC4yMjM5IDEzLjc3NjEgMTQgMTMuNSAxNEg5VjNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxzPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02Ljk5OTg4IDFDNi40NDc1OSAxIDUuOTk5ODggMS40NDc3MiA1Ljk5OTg4IDJWN0gxLjQ5OTg4QzEuMjIzNzQgNyAwLjk5OTg3OCA3LjIyMzg2IDAuOTk5ODc4IDcuNUMwLjk5OTg3OCA3Ljc3NjE0IDEuMjIzNzQgOCAxLjQ5OTg4IDhINS45OTk4OFYxM0M1Ljk5OTg4IDEzLjU1MjMgNi40NDc1OSAxNCA2Ljk5OTg4IDE0SDcuOTk5ODhDOC41NTIxNiAxNCA4Ljk5OTg4IDEzLjU1MjMgOC45OTk4OCAxM1Y4SDEzLjQ5OTlDMTMuNzc2IDggMTMuOTk5OSA3Ljc3NjE0IDEzLjk5OTkgNy41QzEzLjk5OTkgNy4yMjM4NiAxMy43NzYgNyAxMy40OTk5IDdIOC45OTk4OFYyQzguOTk5ODggMS40NDc3MiA4LjU1MjE2IDEgNy45OTk4OCAxTDYuOTk5ODggMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuOTk5ODggNkMxLjQ0NzU5IDYgMC45OTk4NzcgNi40NDc3MiAwLjk5OTg3NyA3TDAuOTk5ODc3IDhDMC45OTk4NzcgOC41NTIyOCAxLjQ0NzU5IDkgMS45OTk4OCA5TDYuOTk5ODggOUw2Ljk5OTg4IDEzLjVDNi45OTk4OCAxMy43NzYxIDcuMjIzNzQgMTQgNy40OTk4OCAxNEM3Ljc3NjAyIDE0IDcuOTk5ODggMTMuNzc2MSA3Ljk5OTg4IDEzLjVMNy45OTk4OCA5TDEyLjk5OTkgOUMxMy41NTIyIDkgMTMuOTk5OSA4LjU1MjI4IDEzLjk5OTkgOEwxMy45OTk5IDdDMTMuOTk5OSA2LjQ0NzcyIDEzLjU1MjIgNiAxMi45OTk5IDZMNy45OTk4OCA2TDcuOTk5ODggMS41QzcuOTk5ODggMS4yMjM4NiA3Ljc3NjAyIDEgNy40OTk4OCAxQzcuMjIzNzMgMSA2Ljk5OTg4IDEuMjIzODYgNi45OTk4OCAxLjVMNi45OTk4OCA2TDEuOTk5ODggNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuNDk5OTk1IDAuOTk5OTk1QzAuMjIzODU1IDAuOTk5OTk1IC01LjU4NDU4ZS0wNyAxLjIyMzg1IC01LjQ2Mzg4ZS0wNyAxLjQ5OTk5TC0yLjE4NTU0ZS0wOCAxMy40OTk5Qy05Ljc4NDkyZS0wOSAxMy43NzYgMC4yMjM4NTUgMTMuOTk5OSAwLjQ5OTk5NSAxMy45OTk5QzAuNzc2MTM2IDEzLjk5OTkgMC45OTk5OTEgMTMuNzc2IDAuOTk5OTkxIDEzLjQ5OTlMMC45OTk5OTEgOC45OTk5M0wxMiA4Ljk5OTkzQzEyLjU1MjMgOC45OTk5MyAxMyA4LjU1MjIyIDEzIDcuOTk5OTNMMTMgNi45OTk5NEMxMyA2LjQ0NzY2IDEyLjU1MjMgNS45OTk5NSAxMiA1Ljk5OTk1TDAuOTk5OTkxIDUuOTk5OTVMMC45OTk5OTEgMS40OTk5OUMwLjk5OTk5MSAxLjIyMzg1IDAuNzc2MTM1IDAuOTk5OTk1IDAuNDk5OTk1IDAuOTk5OTk1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTQuNDk5OSAxQzE0LjIyMzcgMSAxMy45OTk5IDEuMjIzODYgMTMuOTk5OSAxLjVMMTMuOTk5OSA2TDIuOTk5ODggNkMyLjQ0NzU5IDYgMS45OTk4OCA2LjQ0NzcyIDEuOTk5ODggN0wxLjk5OTg4IDhDMS45OTk4OCA4LjU1MjI4IDIuNDQ3NTkgOSAyLjk5OTg4IDlMMTMuOTk5OSA5TDEzLjk5OTkgMTMuNUMxMy45OTk5IDEzLjc3NjEgMTQuMjIzNyAxNCAxNC40OTk5IDE0QzE0Ljc3NiAxNCAxNC45OTk5IDEzLjc3NjEgMTQuOTk5OSAxMy41TDE0Ljk5OTkgOUwxNC45OTk5IDZMMTQuOTk5OSAxLjVDMTQuOTk5OSAxLjIyMzg2IDE0Ljc3NiAxIDE0LjQ5OTkgMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNSAwQzEuMjIzODYgMCAxIDAuMjIzODU4IDEgMC41QzEgMC43NzYxNDIgMS4yMjM4NiAxIDEuNSAxSDZWMTJDNiAxMi41NTIzIDYuNDQ3NzIgMTMgNyAxM0g4QzguNTUyMjggMTMgOSAxMi41NTIzIDkgMTJWMUgxMy41QzEzLjc3NjEgMSAxNCAwLjc3NjE0MiAxNCAwLjVDMTQgMC4yMjM4NTggMTMuNzc2MSAwIDEzLjUgMEg5SDZIMS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDAuNzVMOS43NSAzSDUuMjVMNy41IDAuNzVaTTcuNSAxNC4yNUw5Ljc1IDEySDUuMjVMNy41IDE0LjI1Wk0zIDUuMjVMMC43NSA3LjVMMyA5Ljc1VjUuMjVaTTE0LjI1IDcuNUwxMiA1LjI1VjkuNzVMMTQuMjUgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC44OTE0IDIuMTkzN0M5LjExNTggMi4zNTQ2NCA5LjE2NzI1IDIuNjY3MDEgOS4wMDYzMSAyLjg5MTQxTDIuNDczODggMTJIMTMuNUMxMy43NzYxIDEyIDE0IDEyLjIyMzkgMTQgMTIuNUMxNCAxMi43NzYyIDEzLjc3NjEgMTMgMTMuNSAxM0gxLjVDMS4zMTI1NCAxMyAxLjE0MDgyIDEyLjg5NTIgMS4wNTUyIDEyLjcyODRDMC45Njk1NzggMTIuNTYxNiAwLjk4NDQzOCAxMi4zNjEgMS4wOTM2OSAxMi4yMDg2TDguMTkzNjkgMi4zMDg2MkM4LjM1NDYyIDIuMDg0MjIgOC42NjcgMi4wMzI3NyA4Ljg5MTQgMi4xOTM3Wk0xMS4xIDYuNTAwMDFDMTEuMSA2LjIyMzg3IDExLjMyMzggNi4wMDAwMSAxMS42IDYuMDAwMDFDMTEuODc2MSA2LjAwMDAxIDEyLjEgNi4yMjM4NyAxMi4xIDYuNTAwMDFDMTIuMSA2Ljc3NjE1IDExLjg3NjEgNy4wMDAwMSAxMS42IDcuMDAwMDFDMTEuMzIzOCA3LjAwMDAxIDExLjEgNi43NzYxNSAxMS4xIDYuNTAwMDFaTTEwLjQgNC4wMDAwMUMxMC4xMjM5IDQuMDAwMDEgOS45MDAwMyA0LjIyMzg3IDkuOTAwMDMgNC41MDAwMUM5LjkwMDAzIDQuNzc2MTUgMTAuMTIzOSA1LjAwMDAxIDEwLjQgNS4wMDAwMUMxMC42NzYyIDUuMDAwMDEgMTAuOSA0Ljc3NjE1IDEwLjkgNC41MDAwMUMxMC45IDQuMjIzODcgMTAuNjc2MiA0LjAwMDAxIDEwLjQgNC4wMDAwMVpNMTIuMSA4LjUwMDAxQzEyLjEgOC4yMjM4NyAxMi4zMjM4IDguMDAwMDEgMTIuNiA4LjAwMDAxQzEyLjg3NjEgOC4wMDAwMSAxMy4xIDguMjIzODcgMTMuMSA4LjUwMDAxQzEzLjEgOC43NzYxNSAxMi44NzYxIDkuMDAwMDEgMTIuNiA5LjAwMDAxQzEyLjMyMzggOS4wMDAwMSAxMi4xIDguNzc2MTUgMTIuMSA4LjUwMDAxWk0xMy40IDEwQzEzLjEyMzkgMTAgMTIuOSAxMC4yMjM5IDEyLjkgMTAuNUMxMi45IDEwLjc3NjEgMTMuMTIzOSAxMSAxMy40IDExQzEzLjY3NjIgMTEgMTMuOSAxMC43NzYxIDEzLjkgMTAuNUMxMy45IDEwLjIyMzkgMTMuNjc2MiAxMCAxMy40IDEwWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4zMDkwMiAxQzIuOTMwMjUgMSAyLjU4Mzk4IDEuMjE0IDIuNDE0NTkgMS41NTI3OUwxLjA1Mjc5IDQuMjc2MzlDMS4wMTgwNyA0LjM0NTgyIDEgNC40MjIzOCAxIDQuNVYxM0MxIDEzLjU1MjMgMS40NDc3MiAxNCAyIDE0SDEzQzEzLjU1MjMgMTQgMTQgMTMuNTUyMyAxNCAxM1Y0LjVDMTQgNC40MjIzOCAxMy45ODE5IDQuMzQ1ODIgMTMuOTQ3MiA0LjI3NjM5TDEyLjU4NTQgMS41NTI4MUMxMi40MTYgMS4yMTQwMyAxMi4wNjk4IDEuMDAwMDMgMTEuNjkxIDEuMDAwMDNMNy41IDEuMDAwMDFMMy4zMDkwMiAxWk0zLjMwOTAyIDJMNyAyLjAwMDAxVjRIMi4zMDkwMkwzLjMwOTAyIDJaTTggNFYyLjAwMDAyTDExLjY5MSAyLjAwMDAzTDEyLjY5MSA0SDhaTTcuNSA1SDEzVjEzSDJWNUg3LjVaTTUuNSA3QzUuMjIzODYgNyA1IDcuMjIzODYgNSA3LjVDNSA3Ljc3NjE0IDUuMjIzODYgOCA1LjUgOEg5LjVDOS43NzYxNCA4IDEwIDcuNzc2MTQgMTAgNy41QzEwIDcuMjIzODYgOS43NzYxNCA3IDkuNSA3SDUuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjM1MzYgMy42NDY0NEMxMS41NDg4IDMuODQxNyAxMS41NDg4IDQuMTU4MjggMTEuMzUzNiA0LjM1MzU0TDQuNzA3MTEgMTFMOSAxMUM5LjI3NjE0IDExIDkuNSAxMS4yMjM5IDkuNSAxMS41QzkuNSAxMS43NzYxIDkuMjc2MTQgMTIgOSAxMkwzLjUgMTJDMy4zNjczOSAxMiAzLjI0MDIxIDExLjk0NzMgMy4xNDY0NSAxMS44NTM2QzMuMDUyNjggMTEuNzU5OCAzIDExLjYzMjYgMyAxMS41TDMgNS45OTk5OUMzIDUuNzIzODUgMy4yMjM4NiA1LjQ5OTk5IDMuNSA1LjQ5OTk5QzMuNzc2MTQgNS40OTk5OSA0IDUuNzIzODUgNCA1Ljk5OTk5VjEwLjI5MjlMMTAuNjQ2NCAzLjY0NjQzQzEwLjg0MTcgMy40NTExNyAxMS4xNTgzIDMuNDUxMTcgMTEuMzUzNiAzLjY0NjQ0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy42NDY0NSAzLjY0NjQ0QzMuNDUxMTggMy44NDE3IDMuNDUxMTggNC4xNTgyOCAzLjY0NjQ1IDQuMzUzNTRMMTAuMjkyOSAxMUw2IDExQzUuNzIzODYgMTEgNS41IDExLjIyMzkgNS41IDExLjVDNS41IDExLjc3NjEgNS43MjM4NiAxMiA2IDEyTDExLjUgMTJDMTEuNjMyNiAxMiAxMS43NTk4IDExLjk0NzMgMTEuODUzNiAxMS44NTM2QzExLjk0NzMgMTEuNzU5OCAxMiAxMS42MzI2IDEyIDExLjVMMTIgNS45OTk5OUMxMiA1LjcyMzg1IDExLjc3NjEgNS40OTk5OSAxMS41IDUuNDk5OTlDMTEuMjIzOSA1LjQ5OTk5IDExIDUuNzIzODUgMTEgNS45OTk5OVYxMC4yOTI5TDQuMzUzNTUgMy42NDY0M0M0LjE1ODI5IDMuNDUxMTcgMy44NDE3MSAzLjQ1MTE3IDMuNjQ2NDUgMy42NDY0NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG09ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAyQzcuNzc2MTQgMiA4IDIuMjIzODYgOCAyLjVMOCAxMS4yOTI5TDExLjE0NjQgOC4xNDY0NUMxMS4zNDE3IDcuOTUxMTggMTEuNjU4MyA3Ljk1MTE4IDExLjg1MzYgOC4xNDY0NUMxMi4wNDg4IDguMzQxNzEgMTIuMDQ4OCA4LjY1ODI5IDExLjg1MzYgOC44NTM1NUw3Ljg1MzU1IDEyLjg1MzZDNy43NTk3OSAxMi45NDczIDcuNjMyNjEgMTMgNy41IDEzQzcuMzY3MzkgMTMgNy4yNDAyMSAxMi45NDczIDcuMTQ2NDUgMTIuODUzNkwzLjE0NjQ1IDguODUzNTVDMi45NTExOCA4LjY1ODI5IDIuOTUxMTggOC4zNDE3MSAzLjE0NjQ1IDguMTQ2NDVDMy4zNDE3MSA3Ljk1MTE4IDMuNjU4MjkgNy45NTExOCAzLjg1MzU1IDguMTQ2NDVMNyAxMS4yOTI5TDcgMi41QzcgMi4yMjM4NiA3LjIyMzg2IDIgNy41IDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx5PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02Ljg1MzU1IDMuMTQ2NDVDNy4wNDg4MiAzLjM0MTcxIDcuMDQ4ODIgMy42NTgyOSA2Ljg1MzU1IDMuODUzNTVMMy43MDcxMSA3SDEyLjVDMTIuNzc2MSA3IDEzIDcuMjIzODYgMTMgNy41QzEzIDcuNzc2MTQgMTIuNzc2MSA4IDEyLjUgOEgzLjcwNzExTDYuODUzNTUgMTEuMTQ2NEM3LjA0ODgyIDExLjM0MTcgNy4wNDg4MiAxMS42NTgzIDYuODUzNTUgMTEuODUzNkM2LjY1ODI5IDEyLjA0ODggNi4zNDE3MSAxMi4wNDg4IDYuMTQ2NDUgMTEuODUzNkwyLjE0NjQ1IDcuODUzNTVDMS45NTExOCA3LjY1ODI5IDEuOTUxMTggNy4zNDE3MSAyLjE0NjQ1IDcuMTQ2NDVMNi4xNDY0NSAzLjE0NjQ1QzYuMzQxNzEgMi45NTExOCA2LjY1ODI5IDIuOTUxMTggNi44NTM1NSAzLjE0NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC4xNDY0NSAzLjE0NjQ1QzguMzQxNzEgMi45NTExOCA4LjY1ODI5IDIuOTUxMTggOC44NTM1NSAzLjE0NjQ1TDEyLjg1MzYgNy4xNDY0NUMxMy4wNDg4IDcuMzQxNzEgMTMuMDQ4OCA3LjY1ODI5IDEyLjg1MzYgNy44NTM1NUw4Ljg1MzU1IDExLjg1MzZDOC42NTgyOSAxMi4wNDg4IDguMzQxNzEgMTIuMDQ4OCA4LjE0NjQ1IDExLjg1MzZDNy45NTExOCAxMS42NTgzIDcuOTUxMTggMTEuMzQxNyA4LjE0NjQ1IDExLjE0NjRMMTEuMjkyOSA4SDIuNUMyLjIyMzg2IDggMiA3Ljc3NjE0IDIgNy41QzIgNy4yMjM4NiAyLjIyMzg2IDcgMi41IDdIMTEuMjkyOUw4LjE0NjQ1IDMuODUzNTVDNy45NTExOCAzLjY1ODI5IDcuOTUxMTggMy4zNDE3MSA4LjE0NjQ1IDMuMTQ2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxiPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS4zNTM2IDExLjM1MzZDMTEuNTQ4OCAxMS4xNTgzIDExLjU0ODggMTAuODQxNyAxMS4zNTM2IDEwLjY0NjVMNC43MDcxMSA0TDkgNEM5LjI3NjE0IDQgOS41IDMuNzc2MTQgOS41IDMuNUM5LjUgMy4yMjM4NiA5LjI3NjE0IDMgOSAzTDMuNSAzQzMuMzY3MzkgMyAzLjI0MDIxIDMuMDUyNjggMy4xNDY0NSAzLjE0NjQ1QzMuMDUyNjggMy4yNDAyMiAzIDMuMzY3MzkgMyAzLjVMMyA5LjAwMDAxQzMgOS4yNzYxNSAzLjIyMzg2IDkuNTAwMDEgMy41IDkuNTAwMDFDMy43NzYxNCA5LjUwMDAxIDQgOS4yNzYxNSA0IDkuMDAwMDFWNC43MDcxMUwxMC42NDY0IDExLjM1MzZDMTAuODQxNyAxMS41NDg4IDExLjE1ODMgMTEuNTQ4OCAxMS4zNTM2IDExLjM1MzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx4PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjY0NjQ1IDExLjM1MzZDMy40NTExOCAxMS4xNTgzIDMuNDUxMTggMTAuODQxNyAzLjY0NjQ1IDEwLjY0NjVMMTAuMjkyOSA0TDYgNEM1LjcyMzg2IDQgNS41IDMuNzc2MTQgNS41IDMuNUM1LjUgMy4yMjM4NiA1LjcyMzg2IDMgNiAzTDExLjUgM0MxMS42MzI2IDMgMTEuNzU5OCAzLjA1MjY4IDExLjg1MzYgMy4xNDY0NUMxMS45NDczIDMuMjQwMjIgMTIgMy4zNjczOSAxMiAzLjVMMTIgOS4wMDAwMUMxMiA5LjI3NjE1IDExLjc3NjEgOS41MDAwMSAxMS41IDkuNTAwMDFDMTEuMjIzOSA5LjUwMDAxIDExIDkuMjc2MTUgMTEgOS4wMDAwMVY0LjcwNzExTDQuMzUzNTUgMTEuMzUzNkM0LjE1ODI5IDExLjU0ODggMy44NDE3MSAxMS41NDg4IDMuNjQ2NDUgMTEuMzUzNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LF89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMTQ2NDUgMi4xNDY0NUM3LjM0MTcxIDEuOTUxMTggNy42NTgyOSAxLjk1MTE4IDcuODUzNTUgMi4xNDY0NUwxMS44NTM2IDYuMTQ2NDVDMTIuMDQ4OCA2LjM0MTcxIDEyLjA0ODggNi42NTgyOSAxMS44NTM2IDYuODUzNTVDMTEuNjU4MyA3LjA0ODgyIDExLjM0MTcgNy4wNDg4MiAxMS4xNDY0IDYuODUzNTVMOCAzLjcwNzExTDggMTIuNUM4IDEyLjc3NjEgNy43NzYxNCAxMyA3LjUgMTNDNy4yMjM4NiAxMyA3IDEyLjc3NjEgNyAxMi41TDcgMy43MDcxMUwzLjg1MzU1IDYuODUzNTVDMy42NTgyOSA3LjA0ODgyIDMuMzQxNzEgNy4wNDg4MiAzLjE0NjQ1IDYuODUzNTVDMi45NTExOCA2LjY1ODI5IDIuOTUxMTggNi4zNDE3MSAzLjE0NjQ1IDYuMTQ2NDVMNy4xNDY0NSAyLjE0NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi41IDJIMTIuNUMxMi43NzYxIDIgMTMgMi4yMjM4NiAxMyAyLjVWMTIuNUMxMyAxMi43NzYxIDEyLjc3NjEgMTMgMTIuNSAxM0gyLjVDMi4yMjM4NiAxMyAyIDEyLjc3NjEgMiAxMi41VjIuNUMyIDIuMjIzODYgMi4yMjM4NiAyIDIuNSAyWk0xIDIuNUMxIDEuNjcxNTcgMS42NzE1NyAxIDIuNSAxSDEyLjVDMTMuMzI4NCAxIDE0IDEuNjcxNTcgMTQgMi41VjEyLjVDMTQgMTMuMzI4NCAxMy4zMjg0IDE0IDEyLjUgMTRIMi41QzEuNjcxNTcgMTQgMSAxMy4zMjg0IDEgMTIuNVYyLjVaTTcuNSA0QzcuNzc2MTQgNCA4IDMuNzc2MTQgOCAzLjVDOCAzLjIyMzg2IDcuNzc2MTQgMyA3LjUgM0M3LjIyMzg2IDMgNyAzLjIyMzg2IDcgMy41QzcgMy43NzYxNCA3LjIyMzg2IDQgNy41IDRaTTggNS41QzggNS43NzYxNCA3Ljc3NjE0IDYgNy41IDZDNy4yMjM4NiA2IDcgNS43NzYxNCA3IDUuNUM3IDUuMjIzODYgNy4yMjM4NiA1IDcuNSA1QzcuNzc2MTQgNSA4IDUuMjIzODYgOCA1LjVaTTcuNSA4QzcuNzc2MTQgOCA4IDcuNzc2MTQgOCA3LjVDOCA3LjIyMzg2IDcuNzc2MTQgNyA3LjUgN0M3LjIyMzg2IDcgNyA3LjIyMzg2IDcgNy41QzcgNy43NzYxNCA3LjIyMzg2IDggNy41IDhaTTEwIDcuNUMxMCA3Ljc3NjE0IDkuNzc2MTQgOCA5LjUgOEM5LjIyMzg2IDggOSA3Ljc3NjE0IDkgNy41QzkgNy4yMjM4NiA5LjIyMzg2IDcgOS41IDdDOS43NzYxNCA3IDEwIDcuMjIzODYgMTAgNy41Wk0xMS41IDhDMTEuNzc2MSA4IDEyIDcuNzc2MTQgMTIgNy41QzEyIDcuMjIzODYgMTEuNzc2MSA3IDExLjUgN0MxMS4yMjM5IDcgMTEgNy4yMjM4NiAxMSA3LjVDMTEgNy43NzYxNCAxMS4yMjM5IDggMTEuNSA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwMTQgNy40OTk4OEMwLjg3NzAxNCAzLjg0MjE5IDMuODQyMTYgMC44NzcwNDUgNy40OTk4NSAwLjg3NzA0NUMxMS4xNTc1IDAuODc3MDQ1IDE0LjEyMjcgMy44NDIxOSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAxMS4xNTc1IDExLjE1NzUgMTQuMTIyNyA3LjQ5OTg1IDE0LjEyMjdDMy44NDIxNiAxNC4xMjI3IDAuODc3MDE0IDExLjE1NzUgMC44NzcwMTQgNy40OTk4OFpNNy40OTk4NSAxLjgyNzA0QzQuMzY2ODMgMS44MjcwNCAxLjgyNzAxIDQuMzY2ODYgMS44MjcwMSA3LjQ5OTg4QzEuODI3MDEgOC45NzE5NiAyLjM4Nzc0IDEwLjMxMzEgMy4zMDcyNyAxMS4zMjEzQzQuMTkwNzQgOS45NDExOSA1LjczODE4IDkuMDI0OTkgNy41MDAyMyA5LjAyNDk5QzkuMjYyMDYgOS4wMjQ5OSAxMC44MDkzIDkuOTQwOTcgMTEuNjkyOSAxMS4zMjA4QzEyLjYxMjEgMTAuMzEyNyAxMy4xNzI3IDguOTcxNzIgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNC4zNjY4NiAxMC42MzI4IDEuODI3MDQgNy40OTk4NSAxLjgyNzA0Wk0xMC45ODE4IDExLjk3ODdDMTAuMjgzOSAxMC43Nzk1IDguOTg1NyA5Ljk3NDk5IDcuNTAwMjMgOS45NzQ5OUM2LjAxNDU4IDkuOTc0OTkgNC43MTYyNCAxMC43Nzk3IDQuMDE4NDUgMTEuOTc5MUM0Ljk3OTUyIDEyLjcyNzIgNi4xODc2NSAxMy4xNzI3IDcuNDk5ODUgMTMuMTcyN0M4LjgxMjI3IDEzLjE3MjcgMTAuMDIwNiAxMi43MjcgMTAuOTgxOCAxMS45Nzg3Wk01LjE0OTk5IDYuNTA0ODdDNS4xNDk5OSA1LjIwNyA2LjIwMjEyIDQuMTU0ODcgNy40OTk5OSA0LjE1NDg3QzguNzk3ODYgNC4xNTQ4NyA5Ljg0OTk5IDUuMjA3IDkuODQ5OTkgNi41MDQ4N0M5Ljg0OTk5IDcuODAyNzQgOC43OTc4NiA4Ljg1NDg3IDcuNDk5OTkgOC44NTQ4N0M2LjIwMjEyIDguODU0ODcgNS4xNDk5OSA3LjgwMjc0IDUuMTQ5OTkgNi41MDQ4N1pNNy40OTk5OSA1LjEwNDg3QzYuNzI2NzkgNS4xMDQ4NyA2LjA5OTk5IDUuNzMxNjcgNi4wOTk5OSA2LjUwNDg3QzYuMDk5OTkgNy4yNzgwNyA2LjcyNjc5IDcuOTA0ODcgNy40OTk5OSA3LjkwNDg3QzguMjczMTkgNy45MDQ4NyA4Ljg5OTk5IDcuMjc4MDcgOC44OTk5OSA2LjUwNDg3QzguODk5OTkgNS43MzE2NyA4LjI3MzE5IDUuMTA0ODcgNy40OTk5OSA1LjEwNDg3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSAxQzUgMC40NDc3MTUgNS40NDc3MiAwIDYgMEg5QzkuNTUyMjggMCAxMCAwLjQ0NzcxNSAxMCAxVjJIMTRDMTQuNTUyMyAyIDE1IDIuNDQ3NzIgMTUgM1Y2QzE1IDYuODg4OCAxNC42MTMxIDcuNjg3MzQgMTQgOC4yMzYwOFYxMS41QzE0IDEyLjMyODQgMTMuMzI4NCAxMyAxMi41IDEzSDIuNUMxLjY3MTU3IDEzIDEgMTIuMzI4NCAxIDExLjVWOC4yMzU5QzAuMzg2OTcgNy42ODcyMSAwIDYuODg4ODMgMCA2VjNDMCAyLjQ0NzcyIDAuNDQ3NzE2IDIgMSAySDVWMVpNOSAxVjJINlYxSDlaTTEgM0g1SDUuNUg5LjVIMTBIMTRWNkMxNCA2LjY1NCAxMy42ODY2IDcuMjM0NjcgMTMuMTk5NyA3LjYwMDRDMTIuODY1NSA3Ljg1MTQ0IDEyLjQ1MDggOCAxMiA4SDhWNy41QzggNy4yMjM4NiA3Ljc3NjE0IDcgNy41IDdDNy4yMjM4NiA3IDcgNy4yMjM4NiA3IDcuNVY4SDNDMi41NDkzIDggMi4xMzQ2IDcuODUxMzMgMS44MDAyOSA3LjYwMDIyQzEuMzEzMzUgNy4yMzQ0NiAxIDYuNjUzOTYgMSA2VjNaTTcgOUgzQzIuNjQ5NjEgOSAyLjMxMjkyIDguOTM5NzIgMiA4LjgyOTA1VjExLjVDMiAxMS43NzYxIDIuMjIzODYgMTIgMi41IDEySDEyLjVDMTIuNzc2MSAxMiAxMyAxMS43NzYxIDEzIDExLjVWOC44MjkxNUMxMi42ODcxIDguOTM5NzggMTIuMzUwNCA5IDEyIDlIOFY5LjVDOCA5Ljc3NjE0IDcuNzc2MTQgMTAgNy41IDEwQzcuMjIzODYgMTAgNyA5Ljc3NjE0IDcgOS41VjlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxTPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjUgNkgxMS41QzEyLjMyODQgNiAxMyA2LjY3MTU3IDEzIDcuNUMxMyA4LjMyODQzIDEyLjMyODQgOSAxMS41IDlIMy41QzIuNjcxNTcgOSAyIDguMzI4NDMgMiA3LjVDMiA2LjY3MTU3IDIuNjcxNTcgNiAzLjUgNlpNMSA3LjVDMSA2LjExOTI5IDIuMTE5MjkgNSAzLjUgNUgxMS41QzEyLjg4MDcgNSAxNCA2LjExOTI5IDE0IDcuNUMxNCA4Ljg4MDcxIDEyLjg4MDcgMTAgMTEuNSAxMEgzLjVDMi4xMTkyOSAxMCAxIDguODgwNzEgMSA3LjVaTTQuNSA3QzQuMjIzODYgNyA0IDcuMjIzODYgNCA3LjVDNCA3Ljc3NjE0IDQuMjIzODYgOCA0LjUgOEgxMC41QzEwLjc3NjEgOCAxMSA3Ljc3NjE0IDExIDcuNUMxMSA3LjIyMzg2IDEwLjc3NjEgNyAxMC41IDdINC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEuNSAxQzExLjc3NjEgMSAxMiAxLjIyMzg2IDEyIDEuNVYxMy41QzEyIDEzLjc3NjEgMTEuNzc2MSAxNCAxMS41IDE0QzExLjIyMzkgMTQgMTEgMTMuNzc2MSAxMSAxMy41VjEuNUMxMSAxLjIyMzg2IDExLjIyMzkgMSAxMS41IDFaTTkuNSAzQzkuNzc2MTQgMyAxMCAzLjIyMzg2IDEwIDMuNVYxMy41QzEwIDEzLjc3NjEgOS43NzYxNCAxNCA5LjUgMTRDOS4yMjM4NiAxNCA5IDEzLjc3NjEgOSAxMy41VjMuNUM5IDMuMjIzODYgOS4yMjM4NiAzIDkuNSAzWk0xMy41IDNDMTMuNzc2MSAzIDE0IDMuMjIzODYgMTQgMy41VjEzLjVDMTQgMTMuNzc2MSAxMy43NzYxIDE0IDEzLjUgMTRDMTMuMjIzOSAxNCAxMyAxMy43NzYxIDEzIDEzLjVWMy41QzEzIDMuMjIzODYgMTMuMjIzOSAzIDEzLjUgM1pNNS41IDRDNS43NzYxNCA0IDYgNC4yMjM4NiA2IDQuNVYxMy41QzYgMTMuNzc2MSA1Ljc3NjE0IDE0IDUuNSAxNEM1LjIyMzg2IDE0IDUgMTMuNzc2MSA1IDEzLjVWNC41QzUgNC4yMjM4NiA1LjIyMzg2IDQgNS41IDRaTTEuNSA1QzEuNzc2MTQgNSAyIDUuMjIzODYgMiA1LjVWMTMuNUMyIDEzLjc3NjEgMS43NzYxNCAxNCAxLjUgMTRDMS4yMjM4NiAxNCAxIDEzLjc3NjEgMSAxMy41VjUuNUMxIDUuMjIzODYgMS4yMjM4NiA1IDEuNSA1Wk03LjUgNUM3Ljc3NjE0IDUgOCA1LjIyMzg2IDggNS41VjEzLjVDOCAxMy43NzYxIDcuNzc2MTQgMTQgNy41IDE0QzcuMjIzODYgMTQgNyAxMy43NzYxIDcgMTMuNVY1LjVDNyA1LjIyMzg2IDcuMjIzODYgNSA3LjUgNVpNMy41IDdDMy43NzYxNCA3IDQgNy4yMjM4NiA0IDcuNVYxMy41QzQgMTMuNzc2MSAzLjc3NjE0IDE0IDMuNSAxNEMzLjIyMzg2IDE0IDMgMTMuNzc2MSAzIDEzLjVWNy41QzMgNy4yMjM4NiAzLjIyMzg2IDcgMy41IDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxqPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjYwMTI0IDEuMjUwODZDOC42MDEyNCAxLjc1NDU5IDguMjYyNzggMi4xNzkyNyA3LjgwMDg3IDIuMzA5ODlDMTAuMTQ1OSAyLjQ2NDcgMTIgNC40MTU4MiAxMiA2Ljc5OTk5VjEwLjI1QzEyIDExLjA1NjMgMTIuMDMyOSAxMS43MDc0IDEyLjcyMzYgMTIuMDUyOEMxMi45MzEgMTIuMTU2NSAxMy4wMzk5IDEyLjM4OTIgMTIuOTg2NiAxMi42MTQ5QzEyLjkzMzMgMTIuODQwNiAxMi43MzE5IDEzIDEyLjUgMTNIOC4xNjE0NEM4LjM2OTA0IDEzLjE4MzIgOC40OTk5NyAxMy40NTEzIDguNDk5OTcgMTMuNzVDOC40OTk5NyAxNC4zMDIzIDguMDUyMjYgMTQuNzUgNy40OTk5NyAxNC43NUM2Ljk0NzY5IDE0Ljc1IDYuNDk5OTcgMTQuMzAyMyA2LjQ5OTk3IDEzLjc1QzYuNDk5OTcgMTMuNDUxMyA2LjYzMDkxIDEzLjE4MzIgNi44Mzg1MSAxM0gyLjQ5OTk5QzIuMjY4MSAxMyAyLjA2NjY0IDEyLjg0MDYgMi4wMTMzNiAxMi42MTQ5QzEuOTYwMDkgMTIuMzg5MiAyLjA2ODk3IDEyLjE1NjUgMi4yNzYzOCAxMi4wNTI4QzIuOTY3MDggMTEuNzA3NCAyLjk5OTk5IDExLjA1NjMgMi45OTk5OSAxMC4yNVY2Ljc5OTk5QzIuOTk5OTkgNC40MTUzNyA0Ljg1NDgxIDIuNDYzOTYgNy4yMDA0MiAyLjMwOThDNi43Mzg2NyAyLjE3OTA4IDYuNDAwMzYgMS43NTQ0OCA2LjQwMDM2IDEuMjUwODZDNi40MDAzNiAwLjY0MzEwNCA2Ljg5MzA0IDAuMTUwNDIxIDcuNTAwOCAwLjE1MDQyMUM4LjEwODU1IDAuMTUwNDIxIDguNjAxMjQgMC42NDMxMDQgOC42MDEyNCAxLjI1MDg2Wk03LjQ5OTk5IDMuMjk5OTlDNS41NjY5OSAzLjI5OTk5IDMuOTk5OTkgNC44NjY5OSAzLjk5OTk5IDYuNzk5OTlWMTAuMjVMNC4wMDAwMiAxMC4zMDA5QzQuMDAwNSAxMC43NDYzIDQuMDAxMjEgMTEuNDA4NCAzLjY5OTI5IDEySDExLjMwMDdDMTAuOTk4OCAxMS40MDg0IDEwLjk5OTUgMTAuNzQ2MyAxMSAxMC4zMDA5TDExIDEwLjI1VjYuNzk5OTlDMTEgNC44NjY5OSA5LjQzMjk5IDMuMjk5OTkgNy40OTk5OSAzLjI5OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyA5QzMgNi41IDQuNSA0LjI1IDcuNSAxLjVDMTAuNSA0LjI1IDEyIDYuNSAxMiA5QzEyIDExLjQ4NTMgOS45ODUyOCAxMy41IDcuNSAxMy41QzUuMDE0NzIgMTMuNSAzIDExLjQ4NTMgMyA5Wk0xMC45NTI0IDguMzAzMDdDOS42NzM0NyA3LjgyMTIxIDguMjg3OSA4LjQ2MjA4IDYuOTg5NTYgOS4wNjI1OUM1LjkzMjcgOS41NTE0MiA0LjkzMzY1IDEwLjAxMzUgNC4wOTY5NSA5LjgyMTUzQzQuMDMzNTcgOS41NTgwNCA0IDkuMjgyOTQgNCA5QzQgNy4xMTIwMyA1LjAyNjg2IDUuMjcxOTUgNy41IDIuODczNTdDOS42NjgzNyA0Ljk3NjM5IDEwLjcyNSA2LjY1MDA0IDEwLjk1MjQgOC4zMDMwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgMi41QzMgMi4yMjM4NiAzLjIyMzg2IDIgMy41IDJIMTEuNUMxMS43NzYxIDIgMTIgMi4yMjM4NiAxMiAyLjVWMTMuNUMxMiAxMy42ODE4IDExLjkwMTQgMTMuODQ5MiAxMS43NDI0IDEzLjkzNzNDMTEuNTgzNCAxNC4wMjU0IDExLjM4OTEgMTQuMDIwMyAxMS4yMzUgMTMuOTI0TDcuNSAxMS41ODk2TDMuNzY1IDEzLjkyNEMzLjYxMDg3IDE0LjAyMDMgMy40MTY1OSAxNC4wMjU0IDMuMjU3NjIgMTMuOTM3M0MzLjA5ODY0IDEzLjg0OTIgMyAxMy42ODE4IDMgMTMuNVYyLjVaTTQgM1YxMi41OTc5TDYuOTcgMTAuNzQxNkM3LjI5NDI3IDEwLjUzOSA3LjcwNTczIDEwLjUzOSA4LjAzIDEwLjc0MTZMMTEgMTIuNTk3OVYzSDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxQPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjI1IDFDMC4yNSAwLjU4NTc4NiAwLjU4NTc4NiAwLjI1IDEgMC4yNUgxNEMxNC40MTQyIDAuMjUgMTQuNzUgMC41ODU3ODYgMTQuNzUgMVYxNEMxNC43NSAxNC40MTQyIDE0LjQxNDIgMTQuNzUgMTQgMTQuNzVIMUMwLjU4NTc4NiAxNC43NSAwLjI1IDE0LjQxNDIgMC4yNSAxNFYxWk0xLjc1IDEuNzVWMTMuMjVIMTMuMjVWMS43NUgxLjc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI5XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI5XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSkpfSxBPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDEzLjI1TDE0IDEzLjI1VjE0Ljc1TDEgMTQuNzVWMTMuMjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCIzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI5XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI5XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTFcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiOVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjlcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjExXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiMTFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjlcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjExXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSl9LEk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAgNy41QzAgNy4yMjM4NiAwLjIyMzg1OCA3IDAuNSA3SDNDMy4yNzYxNCA3IDMuNSA3LjIyMzg2IDMuNSA3LjVDMy41IDcuNzc2MTQgMy4yNzYxNCA4IDMgOEgwLjVDMC4yMjM4NTggOCAwIDcuNzc2MTQgMCA3LjVaTTUuNzUgNy41QzUuNzUgNy4yMjM4NiA1Ljk3Mzg2IDcgNi4yNSA3SDguNzVDOS4wMjYxNCA3IDkuMjUgNy4yMjM4NiA5LjI1IDcuNUM5LjI1IDcuNzc2MTQgOS4wMjYxNCA4IDguNzUgOEg2LjI1QzUuOTczODYgOCA1Ljc1IDcuNzc2MTQgNS43NSA3LjVaTTEyIDdDMTEuNzIzOSA3IDExLjUgNy4yMjM4NiAxMS41IDcuNUMxMS41IDcuNzc2MTQgMTEuNzIzOSA4IDEyIDhIMTQuNUMxNC43NzYxIDggMTUgNy43NzYxNCAxNSA3LjVDMTUgNy4yMjM4NiAxNC43NzYxIDcgMTQuNSA3SDEyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41IDYuNjI1QzEuMDE2NzUgNi42MjUgMC42MjUgNy4wMTY3NSAwLjYyNSA3LjVDMC42MjUgNy45ODMyNSAxLjAxNjc1IDguMzc1IDEuNSA4LjM3NUMxLjk4MzI1IDguMzc1IDIuMzc1IDcuOTgzMjUgMi4zNzUgNy41QzIuMzc1IDcuMDE2NzUgMS45ODMyNSA2LjYyNSAxLjUgNi42MjVaTTUuNSA2LjYyNUM1LjAxNjc1IDYuNjI1IDQuNjI1IDcuMDE2NzUgNC42MjUgNy41QzQuNjI1IDcuOTgzMjUgNS4wMTY3NSA4LjM3NSA1LjUgOC4zNzVDNS45ODMyNSA4LjM3NSA2LjM3NSA3Ljk4MzI1IDYuMzc1IDcuNUM2LjM3NSA3LjAxNjc1IDUuOTgzMjUgNi42MjUgNS41IDYuNjI1Wk05LjUgNi42MjVDOS4wMTY3NSA2LjYyNSA4LjYyNSA3LjAxNjc1IDguNjI1IDcuNUM4LjYyNSA3Ljk4MzI1IDkuMDE2NzUgOC4zNzUgOS41IDguMzc1QzkuOTgzMjUgOC4zNzUgMTAuMzc1IDcuOTgzMjUgMTAuMzc1IDcuNUMxMC4zNzUgNy4wMTY3NSA5Ljk4MzI1IDYuNjI1IDkuNSA2LjYyNVpNMTIuNjI1IDcuNUMxMi42MjUgNy4wMTY3NSAxMy4wMTY4IDYuNjI1IDEzLjUgNi42MjVDMTMuOTgzMiA2LjYyNSAxNC4zNzUgNy4wMTY3NSAxNC4zNzUgNy41QzE0LjM3NSA3Ljk4MzI1IDEzLjk4MzIgOC4zNzUgMTMuNSA4LjM3NUMxMy4wMTY4IDguMzc1IDEyLjYyNSA3Ljk4MzI1IDEyLjYyNSA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxIPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjc1IDFMMS43NSAxNEwwLjI0OTk5OSAxNEwwLjI1IDFMMS43NSAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMFwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTAgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTBcIix5OlwiMTNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxMCAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTJcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDEyIDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEyXCIseTpcIjEzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTIgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDggNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiMTNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCIxM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDUpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCA1KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCAzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjlcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDkpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjlcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCA5KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjExXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgOCAxMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiMTFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCAxMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNlwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgNiA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI2XCIseTpcIjEzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgNiAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNFwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgNCA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI0XCIseTpcIjEzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgNCAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTBcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDEwIDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEyXCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxMiAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI2XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA2IDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjRcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDQgMSlcIixmaWxsOm59KSl9LFY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI1LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjUuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNVwiLHk6XCIxMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiM1wiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjNcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiM1wiLHk6XCIxLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI5XCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjExXCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjExXCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI5LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjkuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCIxMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjUuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCIzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjkuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCIxMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pKX0sQj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMjUgMUwxMy4yNSAxNEwxNC43NSAxNEwxNC43NSAxTDEzLjI1IDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA1IDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA1IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMyA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMyAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDcgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDEgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDcgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxIDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyA1KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSA1KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyAzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSAzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyA5KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSA5KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyAxMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDEgMTEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA5IDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA5IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMTEgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDExIDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNSAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMyAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgOSAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMTEgMSlcIixmaWxsOm59KSl9LEQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuMjUgNy41QzEuMjUgNy4yMjM4NiAxLjQ3Mzg2IDcgMS43NSA3SDEzLjI1QzEzLjUyNjEgNyAxMy43NSA3LjIyMzg2IDEzLjc1IDcuNUMxMy43NSA3Ljc3NjE0IDEzLjUyNjEgOCAxMy4yNSA4SDEuNzVDMS40NzM4NiA4IDEuMjUgNy43NzYxNCAxLjI1IDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFo9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI1LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiM1wiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiOS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjExLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMSAxLjQ5OTk0QzEgMS4yMjM4IDEuMjIzODYgMC45OTk5MzkgMS41IDAuOTk5OTM5SDZWMS45OTk5NEgyVjUuOTk5OTRIMVYxLjQ5OTk0Wk0xMyAxLjk5OTk0SDlWMC45OTk5MzlIMTMuNUMxMy43NzYxIDAuOTk5OTM5IDE0IDEuMjIzOCAxNCAxLjQ5OTk0VjUuOTk5OTRIMTNWMS45OTk5NFpNMSAxMy40OTk5VjguOTk5OTRIMlYxMi45OTk5SDZWMTMuOTk5OUgxLjVDMS4yMjM4NiAxMy45OTk5IDEgMTMuNzc2MSAxIDEzLjQ5OTlaTTEzIDEyLjk5OTlWOC45OTk5NEgxNFYxMy40OTk5QzE0IDEzLjc3NjEgMTMuNzc2MSAxMy45OTk5IDEzLjUgMTMuOTk5OUg5LjVWMTIuOTk5OUgxM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LCQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNSAzQzEuMjIzODYgMyAxIDMuMjIzODYgMSAzLjVDMSAzLjc3NjE0IDEuMjIzODYgNCAxLjUgNEgxMy41QzEzLjc3NjEgNCAxNCAzLjc3NjE0IDE0IDMuNUMxNCAzLjIyMzg2IDEzLjc3NjEgMyAxMy41IDNIMS41Wk0xIDcuNUMxIDcuMjIzODYgMS4yMjM4NiA3IDEuNSA3SDMuNUMzLjc3NjE0IDcgNCA3LjIyMzg2IDQgNy41QzQgNy43NzYxNCAzLjc3NjE0IDggMy41IDhIMS41QzEuMjIzODYgOCAxIDcuNzc2MTQgMSA3LjVaTTEgMTEuNUMxIDExLjIyMzkgMS4yMjM4NiAxMSAxLjUgMTFDMS43NzYxNCAxMSAyIDExLjIyMzkgMiAxMS41QzIgMTEuNzc2MSAxLjc3NjE0IDEyIDEuNSAxMkMxLjIyMzg2IDEyIDEgMTEuNzc2MSAxIDExLjVaTTMgMTEuNUMzIDExLjIyMzkgMy4yMjM4NiAxMSAzLjUgMTFDMy43NzYxNCAxMSA0IDExLjIyMzkgNCAxMS41QzQgMTEuNzc2MSAzLjc3NjE0IDEyIDMuNSAxMkMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVaTTUuNSAxMUM1LjIyMzg2IDExIDUgMTEuMjIzOSA1IDExLjVDNSAxMS43NzYxIDUuMjIzODYgMTIgNS41IDEyQzUuNzc2MTQgMTIgNiAxMS43NzYxIDYgMTEuNUM2IDExLjIyMzkgNS43NzYxNCAxMSA1LjUgMTFaTTcgMTEuNUM3IDExLjIyMzkgNy4yMjM4NiAxMSA3LjUgMTFDNy43NzYxNCAxMSA4IDExLjIyMzkgOCAxMS41QzggMTEuNzc2MSA3Ljc3NjE0IDEyIDcuNSAxMkM3LjIyMzg2IDEyIDcgMTEuNzc2MSA3IDExLjVaTTkuNSAxMUM5LjIyMzg2IDExIDkgMTEuMjIzOSA5IDExLjVDOSAxMS43NzYxIDkuMjIzODYgMTIgOS41IDEyQzkuNzc2MTQgMTIgMTAgMTEuNzc2MSAxMCAxMS41QzEwIDExLjIyMzkgOS43NzYxNCAxMSA5LjUgMTFaTTExIDExLjVDMTEgMTEuMjIzOSAxMS4yMjM5IDExIDExLjUgMTFDMTEuNzc2MSAxMSAxMiAxMS4yMjM5IDEyIDExLjVDMTIgMTEuNzc2MSAxMS43NzYxIDEyIDExLjUgMTJDMTEuMjIzOSAxMiAxMSAxMS43NzYxIDExIDExLjVaTTEzLjUgMTFDMTMuMjIzOSAxMSAxMyAxMS4yMjM5IDEzIDExLjVDMTMgMTEuNzc2MSAxMy4yMjM5IDEyIDEzLjUgMTJDMTMuNzc2MSAxMiAxNCAxMS43NzYxIDE0IDExLjVDMTQgMTEuMjIzOSAxMy43NzYxIDExIDEzLjUgMTFaTTYuNSA3QzYuMjIzODYgNyA2IDcuMjIzODYgNiA3LjVDNiA3Ljc3NjE0IDYuMjIzODYgOCA2LjUgOEg4LjVDOC43NzYxNCA4IDkgNy43NzYxNCA5IDcuNUM5IDcuMjIzODYgOC43NzYxNCA3IDguNSA3SDYuNVpNMTEgNy41QzExIDcuMjIzODYgMTEuMjIzOSA3IDExLjUgN0gxMy41QzEzLjc3NjEgNyAxNCA3LjIyMzg2IDE0IDcuNUMxNCA3Ljc3NjE0IDEzLjc3NjEgOCAxMy41IDhIMTEuNUMxMS4yMjM5IDggMTEgNy43NzYxNCAxMSA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxGPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNCAxLjc1TDEgMS43NUwxIDAuMjQ5OTk5TDE0IDAuMjVMMTQgMS43NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCIxMFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgOCAxMClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMlwiLHk6XCIxMFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMiAxMClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCIxMlwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgOCAxMilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMlwiLHk6XCIxMlwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMiAxMilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCI4XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA4IDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiMTRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDggMTQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjJcIix5OlwiOFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMiA4KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIyXCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAyIDE0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMFwiLHk6XCI4XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxMCA4KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMFwiLHk6XCIxNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTAgMTQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEyXCIseTpcIjhcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDEyIDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEyXCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxMiAxNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNlwiLHk6XCI4XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA2IDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjZcIix5OlwiMTRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDYgMTQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjRcIix5OlwiOFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgNCA4KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI0XCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA0IDE0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjZcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDggNilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMlwiLHk6XCI2XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAyIDYpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgOCA0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIyXCIseTpcIjRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDIgNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiMTBcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDE0IDEwKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCIxMlwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTQgMTIpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjhcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDE0IDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxNCAxNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiNlwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTQgNilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTQgNClcIixmaWxsOm59KSl9LE49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjUgMkgyLjVDMi4yMjM4NiAyIDIgMi4yMjM4NiAyIDIuNVYxMi41QzIgMTIuNzc2MSAyLjIyMzg2IDEzIDIuNSAxM0gxMi41QzEyLjc3NjEgMTMgMTMgMTIuNzc2MSAxMyAxMi41VjIuNUMxMyAyLjIyMzg2IDEyLjc3NjEgMiAxMi41IDJaTTIuNSAxQzEuNjcxNTcgMSAxIDEuNjcxNTcgMSAyLjVWMTIuNUMxIDEzLjMyODQgMS42NzE1NyAxNCAyLjUgMTRIMTIuNUMxMy4zMjg0IDE0IDE0IDEzLjMyODQgMTQgMTIuNVYyLjVDMTQgMS42NzE1NyAxMy4zMjg0IDEgMTIuNSAxSDIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuOTk5OTggMC45OTk5NzZDMS40NDc2OSAwLjk5OTk3NiAwLjk5OTk3NiAxLjQ0NzY5IDAuOTk5OTc2IDEuOTk5OThWMTNDMC45OTk5NzYgMTMuNTUyMyAxLjQ0NzY5IDE0IDEuOTk5OTggMTRIMTNDMTMuNTUyMyAxNCAxNCAxMy41NTIzIDE0IDEzVjEuOTk5OThDMTQgMS40NDc2OSAxMy41NTIzIDAuOTk5OTc2IDEzIDAuOTk5OTc2SDEuOTk5OThaTTEuOTk5OTggMS45OTk5OEwxMyAxLjk5OTk4VjEzSDEuOTk5OThWMS45OTk5OFpNNC40OTk5NiAzLjk5OTk2QzQuMjIzODIgMy45OTk5NiAzLjk5OTk2IDQuMjIzODIgMy45OTk5NiA0LjQ5OTk2VjEwLjVDMy45OTk5NiAxMC43NzYxIDQuMjIzODIgMTEgNC40OTk5NiAxMUgxMC41QzEwLjc3NjEgMTEgMTEgMTAuNzc2MSAxMSAxMC41VjQuNDk5OTZDMTEgNC4yMjM4MiAxMC43NzYxIDMuOTk5OTYgMTAuNSAzLjk5OTk2SDQuNDk5OTZaTTQuOTk5OTYgOS45OTk5NlY0Ljk5OTk2SDkuOTk5OTZWOS45OTk5Nkg0Ljk5OTk2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiA1SDEzQzEzLjU1MjMgNSAxNCA1LjQ0NzcyIDE0IDZWOUMxNCA5LjU1MjI4IDEzLjU1MjMgMTAgMTMgMTBIMkMxLjQ0NzcyIDEwIDEgOS41NTIyOCAxIDlWNkMxIDUuNDQ3NzIgMS40NDc3MiA1IDIgNVpNMCA2QzAgNC44OTU0MyAwLjg5NTQzMSA0IDIgNEgxM0MxNC4xMDQ2IDQgMTUgNC44OTU0MyAxNSA2VjlDMTUgMTAuMTA0NiAxNC4xMDQ2IDExIDEzIDExSDJDMC44OTU0MyAxMSAwIDEwLjEwNDYgMCA5VjZaTTQuNSA2Ljc1QzQuMDg1NzkgNi43NSAzLjc1IDcuMDg1NzkgMy43NSA3LjVDMy43NSA3LjkxNDIxIDQuMDg1NzkgOC4yNSA0LjUgOC4yNUM0LjkxNDIxIDguMjUgNS4yNSA3LjkxNDIxIDUuMjUgNy41QzUuMjUgNy4wODU3OSA0LjkxNDIxIDYuNzUgNC41IDYuNzVaTTYuNzUgNy41QzYuNzUgNy4wODU3OSA3LjA4NTc5IDYuNzUgNy41IDYuNzVDNy45MTQyMSA2Ljc1IDguMjUgNy4wODU3OSA4LjI1IDcuNUM4LjI1IDcuOTE0MjEgNy45MTQyMSA4LjI1IDcuNSA4LjI1QzcuMDg1NzkgOC4yNSA2Ljc1IDcuOTE0MjEgNi43NSA3LjVaTTEwLjUgNi43NUMxMC4wODU4IDYuNzUgOS43NSA3LjA4NTc5IDkuNzUgNy41QzkuNzUgNy45MTQyMSAxMC4wODU4IDguMjUgMTAuNSA4LjI1QzEwLjkxNDIgOC4yNSAxMS4yNSA3LjkxNDIxIDExLjI1IDcuNUMxMS4yNSA3LjA4NTc5IDEwLjkxNDIgNi43NSAxMC41IDYuNzVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx6PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjUgMUM0Ljc3NjE0IDEgNSAxLjIyMzg2IDUgMS41VjJIMTBWMS41QzEwIDEuMjIzODYgMTAuMjIzOSAxIDEwLjUgMUMxMC43NzYxIDEgMTEgMS4yMjM4NiAxMSAxLjVWMkgxMi41QzEzLjMyODQgMiAxNCAyLjY3MTU3IDE0IDMuNVYxMi41QzE0IDEzLjMyODQgMTMuMzI4NCAxNCAxMi41IDE0SDIuNUMxLjY3MTU3IDE0IDEgMTMuMzI4NCAxIDEyLjVWMy41QzEgMi42NzE1NyAxLjY3MTU3IDIgMi41IDJINFYxLjVDNCAxLjIyMzg2IDQuMjIzODYgMSA0LjUgMVpNMTAgM1YzLjVDMTAgMy43NzYxNCAxMC4yMjM5IDQgMTAuNSA0QzEwLjc3NjEgNCAxMSAzLjc3NjE0IDExIDMuNVYzSDEyLjVDMTIuNzc2MSAzIDEzIDMuMjIzODYgMTMgMy41VjVIMlYzLjVDMiAzLjIyMzg2IDIuMjIzODYgMyAyLjUgM0g0VjMuNUM0IDMuNzc2MTQgNC4yMjM4NiA0IDQuNSA0QzQuNzc2MTQgNCA1IDMuNzc2MTQgNSAzLjVWM0gxMFpNMiA2VjEyLjVDMiAxMi43NzYxIDIuMjIzODYgMTMgMi41IDEzSDEyLjVDMTIuNzc2MSAxMyAxMyAxMi43NzYxIDEzIDEyLjVWNkgyWk03IDcuNUM3IDcuMjIzODYgNy4yMjM4NiA3IDcuNSA3QzcuNzc2MTQgNyA4IDcuMjIzODYgOCA3LjVDOCA3Ljc3NjE0IDcuNzc2MTQgOCA3LjUgOEM3LjIyMzg2IDggNyA3Ljc3NjE0IDcgNy41Wk05LjUgN0M5LjIyMzg2IDcgOSA3LjIyMzg2IDkgNy41QzkgNy43NzYxNCA5LjIyMzg2IDggOS41IDhDOS43NzYxNCA4IDEwIDcuNzc2MTQgMTAgNy41QzEwIDcuMjIzODYgOS43NzYxNCA3IDkuNSA3Wk0xMSA3LjVDMTEgNy4yMjM4NiAxMS4yMjM5IDcgMTEuNSA3QzExLjc3NjEgNyAxMiA3LjIyMzg2IDEyIDcuNUMxMiA3Ljc3NjE0IDExLjc3NjEgOCAxMS41IDhDMTEuMjIzOSA4IDExIDcuNzc2MTQgMTEgNy41Wk0xMS41IDlDMTEuMjIzOSA5IDExIDkuMjIzODYgMTEgOS41QzExIDkuNzc2MTQgMTEuMjIzOSAxMCAxMS41IDEwQzExLjc3NjEgMTAgMTIgOS43NzYxNCAxMiA5LjVDMTIgOS4yMjM4NiAxMS43NzYxIDkgMTEuNSA5Wk05IDkuNUM5IDkuMjIzODYgOS4yMjM4NiA5IDkuNSA5QzkuNzc2MTQgOSAxMCA5LjIyMzg2IDEwIDkuNUMxMCA5Ljc3NjE0IDkuNzc2MTQgMTAgOS41IDEwQzkuMjIzODYgMTAgOSA5Ljc3NjE0IDkgOS41Wk03LjUgOUM3LjIyMzg2IDkgNyA5LjIyMzg2IDcgOS41QzcgOS43NzYxNCA3LjIyMzg2IDEwIDcuNSAxMEM3Ljc3NjE0IDEwIDggOS43NzYxNCA4IDkuNUM4IDkuMjIzODYgNy43NzYxNCA5IDcuNSA5Wk01IDkuNUM1IDkuMjIzODYgNS4yMjM4NiA5IDUuNSA5QzUuNzc2MTQgOSA2IDkuMjIzODYgNiA5LjVDNiA5Ljc3NjE0IDUuNzc2MTQgMTAgNS41IDEwQzUuMjIzODYgMTAgNSA5Ljc3NjE0IDUgOS41Wk0zLjUgOUMzLjIyMzg2IDkgMyA5LjIyMzg2IDMgOS41QzMgOS43NzYxNCAzLjIyMzg2IDEwIDMuNSAxMEMzLjc3NjE0IDEwIDQgOS43NzYxNCA0IDkuNUM0IDkuMjIzODYgMy43NzYxNCA5IDMuNSA5Wk0zIDExLjVDMyAxMS4yMjM5IDMuMjIzODYgMTEgMy41IDExQzMuNzc2MTQgMTEgNCAxMS4yMjM5IDQgMTEuNUM0IDExLjc3NjEgMy43NzYxNCAxMiAzLjUgMTJDMy4yMjM4NiAxMiAzIDExLjc3NjEgMyAxMS41Wk01LjUgMTFDNS4yMjM4NiAxMSA1IDExLjIyMzkgNSAxMS41QzUgMTEuNzc2MSA1LjIyMzg2IDEyIDUuNSAxMkM1Ljc3NjE0IDEyIDYgMTEuNzc2MSA2IDExLjVDNiAxMS4yMjM5IDUuNzc2MTQgMTEgNS41IDExWk03IDExLjVDNyAxMS4yMjM5IDcuMjIzODYgMTEgNy41IDExQzcuNzc2MTQgMTEgOCAxMS4yMjM5IDggMTEuNUM4IDExLjc3NjEgNy43NzYxNCAxMiA3LjUgMTJDNy4yMjM4NiAxMiA3IDExLjc3NjEgNyAxMS41Wk05LjUgMTFDOS4yMjM4NiAxMSA5IDExLjIyMzkgOSAxMS41QzkgMTEuNzc2MSA5LjIyMzg2IDEyIDkuNSAxMkM5Ljc3NjE0IDEyIDEwIDExLjc3NjEgMTAgMTEuNUMxMCAxMS4yMjM5IDkuNzc2MTQgMTEgOS41IDExWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiAzQzEuNDQ3NzIgMyAxIDMuNDQ3NzIgMSA0VjExQzEgMTEuNTUyMyAxLjQ0NzcyIDEyIDIgMTJIMTNDMTMuNTUyMyAxMiAxNCAxMS41NTIzIDE0IDExVjRDMTQgMy40NDc3MiAxMy41NTIzIDMgMTMgM0gyWk0wIDRDMCAyLjg5NTQzIDAuODk1NDMxIDIgMiAySDEzQzE0LjEwNDYgMiAxNSAyLjg5NTQzIDE1IDRWMTFDMTUgMTIuMTA0NiAxNC4xMDQ2IDEzIDEzIDEzSDJDMC44OTU0MzEgMTMgMCAxMi4xMDQ2IDAgMTFWNFpNMiA0LjI1QzIgNC4xMTE5MyAyLjExMTkzIDQgMi4yNSA0SDQuNzVDNC44ODgwNyA0IDUgNC4xMTE5MyA1IDQuMjVWNS43NTQ1NEM1IDUuODkyNjEgNC44ODgwNyA2LjAwNDU0IDQuNzUgNi4wMDQ1NEgyLjI1QzIuMTExOTMgNi4wMDQ1NCAyIDUuODkyNjEgMiA1Ljc1NDU0VjQuMjVaTTEyLjEwMSA3LjU4NDIxQzEyLjEwMSA5LjAyMDczIDEwLjkzNjUgMTAuMTg1MyA5LjQ5OTk4IDEwLjE4NTNDOC4wNjM0NiAxMC4xODUzIDYuODk4OTMgOS4wMjA3MyA2Ljg5ODkzIDcuNTg0MjFDNi44OTg5MyA2LjE0NzY5IDguMDYzNDYgNC45ODMxNSA5LjQ5OTk4IDQuOTgzMTVDMTAuOTM2NSA0Ljk4MzE1IDEyLjEwMSA2LjE0NzY5IDEyLjEwMSA3LjU4NDIxWk0xMy4xMDEgNy41ODQyMUMxMy4xMDEgOS41NzMwMiAxMS40ODg4IDExLjE4NTMgOS40OTk5OCAxMS4xODUzQzcuNTExMTcgMTEuMTg1MyA1Ljg5ODkzIDkuNTczMDIgNS44OTg5MyA3LjU4NDIxQzUuODk4OTMgNS41OTU0IDcuNTExMTcgMy45ODMxNSA5LjQ5OTk4IDMuOTgzMTVDMTEuNDg4OCAzLjk4MzE1IDEzLjEwMSA1LjU5NTQgMTMuMTAxIDcuNTg0MjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxxPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDMuNUMyIDMuMjIzODYgMi4yMjM4NiAzIDIuNSAzSDEyLjVDMTIuNzc2MSAzIDEzIDMuMjIzODYgMTMgMy41VjkuNUMxMyA5Ljc3NjE0IDEyLjc3NjEgMTAgMTIuNSAxMEgyLjVDMi4yMjM4NiAxMCAyIDkuNzc2MTQgMiA5LjVWMy41Wk0yIDEwLjkxNDZDMS40MTc0IDEwLjcwODcgMSAxMC4xNTMxIDEgOS41VjMuNUMxIDIuNjcxNTcgMS42NzE1NyAyIDIuNSAySDEyLjVDMTMuMzI4NCAyIDE0IDIuNjcxNTcgMTQgMy41VjkuNUMxNCAxMC4xNTMxIDEzLjU4MjYgMTAuNzA4NyAxMyAxMC45MTQ2VjExLjVDMTMgMTIuMzI4NCAxMi4zMjg0IDEzIDExLjUgMTNIMy41QzIuNjcxNTcgMTMgMiAxMi4zMjg0IDIgMTEuNVYxMC45MTQ2Wk0xMiAxMVYxMS41QzEyIDExLjc3NjEgMTEuNzc2MSAxMiAxMS41IDEySDMuNUMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVWMTFIMTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxZPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjUgM0MyLjIyMzg2IDMgMiAzLjIyMzg2IDIgMy41VjkuNUMyIDkuNzc2MTQgMi4yMjM4NiAxMCAyLjUgMTBIMTIuNUMxMi43NzYxIDEwIDEzIDkuNzc2MTQgMTMgOS41VjMuNUMxMyAzLjIyMzg2IDEyLjc3NjEgMyAxMi41IDNIMi41Wk0xIDkuNUMxIDEwLjE1MzEgMS40MTc0IDEwLjcwODcgMiAxMC45MTQ2VjExLjVDMiAxMi4zMjg0IDIuNjcxNTcgMTMgMy41IDEzSDExLjVDMTIuMzI4NCAxMyAxMyAxMi4zMjg0IDEzIDExLjVWMTAuOTE0NkMxMy41ODI2IDEwLjcwODcgMTQgMTAuMTUzMSAxNCA5LjVWMy41QzE0IDIuNjcxNTcgMTMuMzI4NCAyIDEyLjUgMkgyLjVDMS42NzE1NyAyIDEgMi42NzE1NyAxIDMuNVY5LjVaTTEyIDExLjVWMTFIM1YxMS41QzMgMTEuNzc2MSAzLjIyMzg2IDEyIDMuNSAxMkgxMS41QzExLjc3NjEgMTIgMTIgMTEuNzc2MSAxMiAxMS41Wk01LjUgNkM1LjIyMzg2IDYgNSA2LjIyMzg2IDUgNi41QzUgNi43NzYxNCA1LjIyMzg2IDcgNS41IDdIOS41QzkuNzc2MTQgNyAxMCA2Ljc3NjE0IDEwIDYuNUMxMCA2LjIyMzg2IDkuNzc2MTQgNiA5LjUgNkg1LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxLPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDMuNUMyIDMuMjIzODYgMi4yMjM4NiAzIDIuNSAzSDEyLjVDMTIuNzc2MSAzIDEzIDMuMjIzODYgMTMgMy41VjkuNUMxMyA5Ljc3NjE0IDEyLjc3NjEgMTAgMTIuNSAxMEgyLjVDMi4yMjM4NiAxMCAyIDkuNzc2MTQgMiA5LjVWMy41Wk0yIDEwLjkxNDZDMS40MTc0IDEwLjcwODcgMSAxMC4xNTMxIDEgOS41VjMuNUMxIDIuNjcxNTcgMS42NzE1NyAyIDIuNSAySDEyLjVDMTMuMzI4NCAyIDE0IDIuNjcxNTcgMTQgMy41VjkuNUMxNCAxMC4xNTMxIDEzLjU4MjYgMTAuNzA4NyAxMyAxMC45MTQ2VjExLjVDMTMgMTIuMzI4NCAxMi4zMjg0IDEzIDExLjUgMTNIMy41QzIuNjcxNTcgMTMgMiAxMi4zMjg0IDIgMTEuNVYxMC45MTQ2Wk0xMiAxMVYxMS41QzEyIDExLjc3NjEgMTEuNzc2MSAxMiAxMS41IDEySDMuNUMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVWMTFIMTJaTTUgNi41QzUgNi4yMjM4NiA1LjIyMzg2IDYgNS41IDZIN1Y0LjVDNyA0LjIyMzg2IDcuMjIzODYgNCA3LjUgNEM3Ljc3NjE0IDQgOCA0LjIyMzg2IDggNC41VjZIOS41QzkuNzc2MTQgNiAxMCA2LjIyMzg2IDEwIDYuNUMxMCA2Ljc3NjE0IDkuNzc2MTQgNyA5LjUgN0g4VjguNUM4IDguNzc2MTQgNy43NzYxNCA5IDcuNSA5QzcuMjIzODYgOSA3IDguNzc2MTQgNyA4LjVWN0g1LjVDNS4yMjM4NiA3IDUgNi43NzYxNCA1IDYuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFg9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuMTgxNzkgNi4xODE4MUM0LjM1NzUzIDYuMDA2MDggNC42NDI0NSA2LjAwNjA4IDQuODE4MTkgNi4xODE4MUw3LjQ5OTk5IDguODYzNjJMMTAuMTgxOCA2LjE4MTgxQzEwLjM1NzUgNi4wMDYwOCAxMC42NDI0IDYuMDA2MDggMTAuODE4MiA2LjE4MTgxQzEwLjk5MzkgNi4zNTc1NSAxMC45OTM5IDYuNjQyNDcgMTAuODE4MiA2LjgxODIxTDcuODE4MTkgOS44MTgyMUM3LjczMzc5IDkuOTAyNiA3LjYxOTM0IDkuOTUwMDEgNy40OTk5OSA5Ljk1MDAxQzcuMzgwNjQgOS45NTAwMSA3LjI2NjE4IDkuOTAyNiA3LjE4MTc5IDkuODE4MjFMNC4xODE3OSA2LjgxODIxQzQuMDA2MDUgNi42NDI0NyA0LjAwNjA1IDYuMzU3NTUgNC4xODE3OSA2LjE4MTgxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC44MTgwOSA0LjE4MTc5QzguOTkzODMgNC4zNTc1MyA4Ljk5MzgzIDQuNjQyNDUgOC44MTgwOSA0LjgxODE5TDYuMTM2MjkgNy40OTk5OUw4LjgxODA5IDEwLjE4MThDOC45OTM4MyAxMC4zNTc1IDguOTkzODMgMTAuNjQyNCA4LjgxODA5IDEwLjgxODJDOC42NDIzNiAxMC45OTM5IDguMzU3NDMgMTAuOTkzOSA4LjE4MTcgMTAuODE4Mkw1LjE4MTcgNy44MTgxOUM1LjA5NzMxIDcuNzMzNzkgNS4wNDk5IDcuNjE5MzMgNS4wNDk5IDcuNDk5OTlDNS4wNDk5IDcuMzgwNjQgNS4wOTczMSA3LjI2NjE4IDUuMTgxNyA3LjE4MTc5TDguMTgxNyA0LjE4MTc5QzguMzU3NDMgNC4wMDYwNSA4LjY0MjM2IDQuMDA2MDUgOC44MTgwOSA0LjE4MTc5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi4xODE5NCA0LjE4MTg1QzYuMzU3NjcgNC4wMDYxMSA2LjY0MjYgNC4wMDYxMSA2LjgxODMzIDQuMTgxODVMOS44MTgzMyA3LjE4MTg1QzkuOTAyNzIgNy4yNjYyNCA5Ljk1MDEzIDcuMzgwNyA5Ljk1MDEzIDcuNTAwMDVDOS45NTAxMyA3LjYxOTQgOS45MDI3MiA3LjczMzg2IDkuODE4MzMgNy44MTgyNUw2LjgxODMzIDEwLjgxODJDNi42NDI2IDEwLjk5NCA2LjM1NzY3IDEwLjk5NCA2LjE4MTk0IDEwLjgxODJDNi4wMDYyIDEwLjY0MjUgNi4wMDYyIDEwLjM1NzYgNi4xODE5NCAxMC4xODE5TDguODYzNzQgNy41MDAwNUw2LjE4MTk0IDQuODE4MjVDNi4wMDYyIDQuNjQyNTEgNi4wMDYyIDQuMzU3NTkgNi4xODE5NCA0LjE4MTg1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuOTMxNzkgNS40MzE3OUM0Ljc1NjA1IDUuNjA3NTMgNC43NTYwNSA1Ljg5MjQ1IDQuOTMxNzkgNi4wNjgxOUM1LjEwNzUzIDYuMjQzOTIgNS4zOTI0NSA2LjI0MzkyIDUuNTY4MTkgNi4wNjgxOUw3LjQ5OTk5IDQuMTM2MzhMOS40MzE3OSA2LjA2ODE5QzkuNjA3NTMgNi4yNDM5MiA5Ljg5MjQ1IDYuMjQzOTIgMTAuMDY4MiA2LjA2ODE5QzEwLjI0MzkgNS44OTI0NSAxMC4yNDM5IDUuNjA3NTMgMTAuMDY4MiA1LjQzMTc5TDcuODE4MTkgMy4xODE3OUM3LjczMzc5IDMuMDk3NCA3LjYxOTMzIDMuMDQ5OTkgNy40OTk5OSAzLjA0OTk5QzcuMzgwNjQgMy4wNDk5OSA3LjI2NjE4IDMuMDk3NCA3LjE4MTc5IDMuMTgxNzlMNC45MzE3OSA1LjQzMTc5Wk0xMC4wNjgyIDkuNTY4MTlDMTAuMjQzOSA5LjM5MjQ1IDEwLjI0MzkgOS4xMDc1MyAxMC4wNjgyIDguOTMxNzlDOS44OTI0NSA4Ljc1NjA2IDkuNjA3NTMgOC43NTYwNiA5LjQzMTc5IDguOTMxNzlMNy40OTk5OSAxMC44NjM2TDUuNTY4MTkgOC45MzE3OUM1LjM5MjQ1IDguNzU2MDYgNS4xMDc1MyA4Ljc1NjA2IDQuOTMxNzkgOC45MzE3OUM0Ljc1NjA1IDkuMTA3NTMgNC43NTYwNSA5LjM5MjQ1IDQuOTMxNzkgOS41NjgxOUw3LjE4MTc5IDExLjgxODJDNy4zNTc1MyAxMS45OTM5IDcuNjQyNDUgMTEuOTkzOSA3LjgxODE5IDExLjgxODJMMTAuMDY4MiA5LjU2ODE5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuMTgxNzkgOC44MTgxOUM0LjAwNjA1IDguNjQyNDUgNC4wMDYwNSA4LjM1NzUzIDQuMTgxNzkgOC4xODE3OUw3LjE4MTc5IDUuMTgxNzlDNy4yNjYxOCA1LjA5NzQgNy4zODA2NCA1LjA0OTk5IDcuNDk5OTkgNS4wNDk5OUM3LjYxOTMzIDUuMDQ5OTkgNy43MzM3OSA1LjA5NzQgNy44MTgxOSA1LjE4MTc5TDEwLjgxODIgOC4xODE3OUMxMC45OTM5IDguMzU3NTMgMTAuOTkzOSA4LjY0MjQ1IDEwLjgxODIgOC44MTgxOUMxMC42NDI0IDguOTkzOTIgMTAuMzU3NSA4Ljk5MzkyIDEwLjE4MTggOC44MTgxOUw3LjQ5OTk5IDYuMTM2MzhMNC44MTgxOSA4LjgxODE5QzQuNjQyNDUgOC45OTM5MiA0LjM1NzUzIDguOTkzOTIgNC4xODE3OSA4LjgxODE5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjUgM0wyLjQ5OTk5IDMuMDAwMDJDMS42NzE1NyAzLjAwMDAyIDAuOTk5OTk5IDMuNjcxNTkgMC45OTk5OTkgNC41MDAwMlY5LjUwMDAyQzAuOTk5OTk5IDEwLjMyODQgMS42NzE1NyAxMSAyLjUgMTFINy41MDAwMkM3LjYzMjYzIDExIDcuNzU5ODEgMTEuMDUyNyA3Ljg1MzU4IDExLjE0NjVMOS45OTk5OSAxMy4yOTI5VjExLjVDOS45OTk5OSAxMS4yMjM5IDEwLjIyMzkgMTEgMTAuNSAxMUgxMi41QzEzLjMyODQgMTEgMTQgMTAuMzI4NCAxNCA5LjUwMDAyVjQuNUMxNCAzLjY3MTU3IDEzLjMyODQgMyAxMi41IDNaTTIuNDk5OTkgMi4wMDAwMkwxMi41IDJDMTMuODgwNyAyIDE1IDMuMTE5MjggMTUgNC41VjkuNTAwMDJDMTUgMTAuODgwNyAxMy44ODA3IDEyIDEyLjUgMTJIMTFWMTQuNUMxMSAxNC43MDIyIDEwLjg3ODIgMTQuODg0NSAxMC42OTEzIDE0Ljk2MTlDMTAuNTA0NSAxNS4wMzkzIDEwLjI4OTQgMTQuOTk2NSAxMC4xNDY0IDE0Ljg1MzVMNy4yOTI5MiAxMkgyLjVDMS4xMTkyOSAxMiAwIDEwLjg4MDcgMCA5LjUwMDAyVjQuNTAwMDJDMCAzLjExOTMxIDEuMTE5MjggMi4wMDAwMiAyLjQ5OTk5IDIuMDAwMDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxyZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEuNDY2OSAzLjcyNjg0QzExLjc1NTggMy45MTU3NCAxMS44MzY5IDQuMzAzMDggMTEuNjQ4IDQuNTkxOThMNy4zOTc5OSAxMS4wOTJDNy4yOTc4MyAxMS4yNDUyIDcuMTM1NTYgMTEuMzQ2NyA2Ljk1NDAyIDExLjM2OTlDNi43NzI0NyAxMS4zOTMxIDYuNTg5ODkgMTEuMzM1NSA2LjQ1NDQ2IDExLjIxMjRMMy43MDQ0NiA4LjcxMjQxQzMuNDQ5MDUgOC40ODAyMiAzLjQzMDIzIDguMDg0OTQgMy42NjI0MiA3LjgyOTUzQzMuODk0NjEgNy41NzQxMiA0LjI4OTg5IDcuNTU1MjkgNC41NDUzIDcuNzg3NDlMNi43NTI5MiA5Ljc5NDQxTDEwLjYwMTggMy45MDc5MkMxMC43OTA3IDMuNjE5MDIgMTEuMTc4IDMuNTM3OTUgMTEuNDY2OSAzLjcyNjg0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sb2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzcwNDVDMy44NDIyMiAwLjg3NzA0NSAwLjg3NzA3NSAzLjg0MjE5IDAuODc3MDc1IDcuNDk5ODhDMC44NzcwNzUgMTEuMTU3NSAzLjg0MjIyIDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzExLjE1NzYgMTQuMTIyNyAxNC4xMjI3IDExLjE1NzUgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgMy44NDIxOSAxMS4xNTc2IDAuODc3MDQ1IDcuNDk5OTEgMC44NzcwNDVaTTEuODI3MDggNy40OTk4OEMxLjgyNzA4IDQuMzY2ODYgNC4zNjY4OSAxLjgyNzA0IDcuNDk5OTEgMS44MjcwNEMxMC42MzI5IDEuODI3MDQgMTMuMTcyNyA0LjM2Njg2IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDEwLjYzMjkgMTAuNjMyOSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0M0LjM2Njg5IDEzLjE3MjcgMS44MjcwOCAxMC42MzI5IDEuODI3MDggNy40OTk4OFpNMTAuMTU4OSA1LjUzNzc0QzEwLjMxNzggNS4zMTE5MSAxMC4yNjM2IDUuMDAwMDEgMTAuMDM3OCA0Ljg0MTA5QzkuODExOTQgNC42ODIxNyA5LjUwMDA0IDQuNzM2NDIgOS4zNDExMiA0Ljk2MjI1TDYuNTE5NzcgOC45NzE1NEw1LjM1NjgxIDcuNzg3MDZDNS4xNjMzNCA3LjU5MDAyIDQuODQ2NzcgNy41ODcxMSA0LjY0OTczIDcuNzgwNThDNC40NTI2OCA3Ljk3NDA0IDQuNDQ5NzggOC4yOTA2MSA0LjY0MzI1IDguNDg3NjVMNi4yMjY1OCAxMC4xMDAzQzYuMzMwNTQgMTAuMjA2MiA2LjQ3NjE3IDEwLjI2MDQgNi42MjQwNyAxMC4yNDgzQzYuNzcxOTcgMTAuMjM2MyA2LjkwNjg2IDEwLjE1OTEgNi45OTIyNiAxMC4wMzc3TDEwLjE1ODkgNS41Mzc3NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGllPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zIDNIMTJWMTJIM0wzIDNaTTIgM0MyIDIuNDQ3NzEgMi40NDc3MiAyIDMgMkgxMkMxMi41NTIzIDIgMTMgMi40NDc3MiAxMyAzVjEyQzEzIDEyLjU1MjMgMTIuNTUyMyAxMyAxMiAxM0gzQzIuNDQ3NzEgMTMgMiAxMi41NTIzIDIgMTJWM1pNMTAuMzQ5OCA1LjUxMTA1QzEwLjUwNiA1LjI4MzM3IDEwLjQ0ODEgNC45NzIxMiAxMC4yMjA0IDQuODE1ODdDOS45OTI3NSA0LjY1OTYxIDkuNjgxNSA0LjcxNzUxIDkuNTI1MjUgNC45NDUxOUw2LjY0MDQ4IDkuMTQ4NTdMNS4xOTczMyA3LjQwODg5QzUuMDIxMDIgNy4xOTYzNSA0LjcwNTggNy4xNjY5OSA0LjQ5MzI3IDcuMzQzMjlDNC4yODA3MyA3LjUxOTYgNC4yNTEzNyA3LjgzNDgyIDQuNDI3NjcgOC4wNDczNUw2LjI5MzQgMTAuMjk2NEM2LjM5MzQ4IDEwLjQxNzEgNi41NDQzNyAxMC40ODM4IDYuNzAwOTcgMTAuNDc2N0M2Ljg1NzU3IDEwLjQ2OTUgNy4wMDE3NyAxMC4zODk0IDcuMDkwNDcgMTAuMjYwMUwxMC4zNDk4IDUuNTExMDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxhZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4xMzUyMyA2LjE1ODAzQzMuMzI0MSA1Ljk1NjU3IDMuNjQwNTIgNS45NDYzNyAzLjg0MTk3IDYuMTM1MjNMNy41IDkuNTY0NjRMMTEuMTU4IDYuMTM1MjNDMTEuMzU5NSA1Ljk0NjM3IDExLjY3NTkgNS45NTY1NyAxMS44NjQ4IDYuMTU4MDNDMTIuMDUzNiA2LjM1OTQ5IDEyLjA0MzQgNi42NzU5MSAxMS44NDIgNi44NjQ3N0w3Ljg0MTk3IDEwLjYxNDhDNy42NDk2NCAxMC43OTUxIDcuMzUwMzYgMTAuNzk1MSA3LjE1ODAzIDEwLjYxNDhMMy4xNTgwMyA2Ljg2NDc3QzIuOTU2NTcgNi42NzU5MSAyLjk0NjM3IDYuMzU5NDkgMy4xMzUyMyA2LjE1ODAzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguODQxODIgMy4xMzUxNEM5LjA0MzI3IDMuMzI0MDEgOS4wNTM0OCAzLjY0MDQyIDguODY0NjIgMy44NDE4OEw1LjQzNTIxIDcuNDk5OTFMOC44NjQ2MiAxMS4xNTc5QzkuMDUzNDggMTEuMzU5NCA5LjA0MzI3IDExLjY3NTggOC44NDE4MiAxMS44NjQ3QzguNjQwMzYgMTIuMDUzNSA4LjMyMzk0IDEyLjA0MzMgOC4xMzUwOCAxMS44NDE5TDQuMzg1MDggNy44NDE4OEM0LjIwNDc3IDcuNjQ5NTUgNC4yMDQ3NyA3LjM1MDI3IDQuMzg1MDggNy4xNTc5NEw4LjEzNTA4IDMuMTU3OTRDOC4zMjM5NCAyLjk1NjQ4IDguNjQwMzYgMi45NDYyOCA4Ljg0MTgyIDMuMTM1MTRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxzZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi4xNTg0IDMuMTM1MDhDNi4zNTk4NSAyLjk0NjIxIDYuNjc2MjcgMi45NTY0MiA2Ljg2NTE0IDMuMTU3ODhMMTAuNjE1MSA3LjE1Nzg4QzEwLjc5NTQgNy4zNTAyIDEwLjc5NTQgNy42NDk0OSAxMC42MTUxIDcuODQxODJMNi44NjUxNCAxMS44NDE4QzYuNjc2MjcgMTIuMDQzMyA2LjM1OTg1IDEyLjA1MzUgNi4xNTg0IDExLjg2NDZDNS45NTY5NCAxMS42NzU3IDUuOTQ2NzMgMTEuMzU5MyA2LjEzNTYgMTEuMTU3OUw5LjU2NSA3LjQ5OTg1TDYuMTM1NiAzLjg0MTgyQzUuOTQ2NzMgMy42NDAzNiA1Ljk1Njk0IDMuMzIzOTQgNi4xNTg0IDMuMTM1MDhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxjZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4xMzUyMyA4Ljg0MTk3QzMuMzI0MSA5LjA0MzQzIDMuNjQwNTIgOS4wNTM2MyAzLjg0MTk3IDguODY0NzdMNy41IDUuNDM1MzZMMTEuMTU4IDguODY0NzdDMTEuMzU5NSA5LjA1MzYzIDExLjY3NTkgOS4wNDM0MyAxMS44NjQ4IDguODQxOTdDMTIuMDUzNiA4LjY0MDUxIDEyLjA0MzQgOC4zMjQwOSAxMS44NDIgOC4xMzUyM0w3Ljg0MTk3IDQuMzg1MjNDNy42NDk2NCA0LjIwNDkyIDcuMzUwMzYgNC4yMDQ5MiA3LjE1ODAzIDQuMzg1MjNMMy4xNTgwMyA4LjEzNTIzQzIuOTU2NTcgOC4zMjQwOSAyLjk0NjM3IDguNjQwNTEgMy4xMzUyMyA4Ljg0MTk3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuODc3MDc1IDcuNDk5OTFDMC44NzcwNzUgMy44NDIyMiAzLjg0MjIyIDAuODc3MDc1IDcuNDk5OTEgMC44NzcwNzVDMTEuMTU3NiAwLjg3NzA3NSAxNC4xMjI3IDMuODQyMjIgMTQuMTIyNyA3LjQ5OTkxQzE0LjEyMjcgMTEuMTU3NiAxMS4xNTc2IDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzMuODQyMjIgMTQuMTIyNyAwLjg3NzA3NSAxMS4xNTc2IDAuODc3MDc1IDcuNDk5OTFaTTcuNDk5OTEgMS44MjcwOEM0LjM2Njg5IDEuODI3MDggMS44MjcwOCA0LjM2Njg5IDEuODI3MDggNy40OTk5MUMxLjgyNzA4IDEwLjYzMjkgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0MxMC42MzI5IDEzLjE3MjcgMTMuMTcyNyAxMC42MzI5IDEzLjE3MjcgNy40OTk5MUMxMy4xNzI3IDQuMzY2ODkgMTAuNjMyOSAxLjgyNzA4IDcuNDk5OTEgMS44MjcwOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGZlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc3MDc1QzMuODQyMjIgMC44NzcwNzUgMC44NzcwNzUgMy44NDIyMiAwLjg3NzA3NSA3LjQ5OTkxQzAuODc3MDc1IDExLjE1NzYgMy44NDIyMiAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MxMS4xNTc2IDE0LjEyMjcgMTQuMTIyNyAxMS4xNTc2IDE0LjEyMjcgNy40OTk5MUMxNC4xMjI3IDMuODQyMjIgMTEuMTU3NiAwLjg3NzA3NSA3LjQ5OTkxIDAuODc3MDc1Wk0zLjg1NzY4IDMuMTUwNTdDNC44NDMxMSAyLjMyNDQ4IDYuMTEzNDIgMS44MjcwOCA3LjQ5OTkxIDEuODI3MDhDMTAuNjMyOSAxLjgyNzA4IDEzLjE3MjcgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTFDMTMuMTcyNyA4Ljg4NjM4IDEyLjY3NTMgMTAuMTU2NyAxMS44NDkyIDExLjE0MjFMMy44NTc2OCAzLjE1MDU3Wk0zLjE1MDU3IDMuODU3NjhDMi4zMjQ0OCA0Ljg0MzExIDEuODI3MDggNi4xMTM0MiAxLjgyNzA4IDcuNDk5OTFDMS44MjcwOCAxMC42MzI5IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDOC44ODYzOCAxMy4xNzI3IDEwLjE1NjcgMTIuNjc1MyAxMS4xNDIxIDExLjg0OTJMMy4xNTA1NyAzLjg1NzY4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUgMlYxSDEwVjJINVpNNC43NSAwQzQuMzM1NzkgMCA0IDAuMzM1Nzg2IDQgMC43NVYxSDMuNUMyLjY3MTU3IDEgMiAxLjY3MTU3IDIgMi41VjEyLjVDMiAxMy4zMjg0IDIuNjcxNTcgMTQgMy41IDE0SDExLjVDMTIuMzI4NCAxNCAxMyAxMy4zMjg0IDEzIDEyLjVWMi41QzEzIDEuNjcxNTcgMTIuMzI4NCAxIDExLjUgMUgxMVYwLjc1QzExIDAuMzM1Nzg2IDEwLjY2NDIgMCAxMC4yNSAwSDQuNzVaTTExIDJWMi4yNUMxMSAyLjY2NDIxIDEwLjY2NDIgMyAxMC4yNSAzSDQuNzVDNC4zMzU3OSAzIDQgMi42NjQyMSA0IDIuMjVWMkgzLjVDMy4yMjM4NiAyIDMgMi4yMjM4NiAzIDIuNVYxMi41QzMgMTIuNzc2MSAzLjIyMzg2IDEzIDMuNSAxM0gxMS41QzExLjc3NjEgMTMgMTIgMTIuNzc2MSAxMiAxMi41VjIuNUMxMiAyLjIyMzg2IDExLjc3NjEgMiAxMS41IDJIMTFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxwZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSAyVjFIMTBWMkg1Wk00Ljc1IDBDNC4zMzU3OSAwIDQgMC4zMzU3ODYgNCAwLjc1VjFIMy41QzIuNjcxNTcgMSAyIDEuNjcxNTcgMiAyLjVWMTIuNUMyIDEzLjMyODQgMi42NzE1NyAxNCAzLjUgMTRIN1YxM0gzLjVDMy4yMjM4NiAxMyAzIDEyLjc3NjEgMyAxMi41VjIuNUMzIDIuMjIzODYgMy4yMjM4NiAyIDMuNSAySDRWMi4yNUM0IDIuNjY0MjEgNC4zMzU3OSAzIDQuNzUgM0gxMC4yNUMxMC42NjQyIDMgMTEgMi42NjQyMSAxMSAyLjI1VjJIMTEuNUMxMS43NzYxIDIgMTIgMi4yMjM4NiAxMiAyLjVWN0gxM1YyLjVDMTMgMS42NzE1NyAxMi4zMjg0IDEgMTEuNSAxSDExVjAuNzVDMTEgMC4zMzU3ODYgMTAuNjY0MiAwIDEwLjI1IDBINC43NVpNOSA4LjVDOSA4Ljc3NjE0IDguNzc2MTQgOSA4LjUgOUM4LjIyMzg2IDkgOCA4Ljc3NjE0IDggOC41QzggOC4yMjM4NiA4LjIyMzg2IDggOC41IDhDOC43NzYxNCA4IDkgOC4yMjM4NiA5IDguNVpNMTAuNSA5QzEwLjc3NjEgOSAxMSA4Ljc3NjE0IDExIDguNUMxMSA4LjIyMzg2IDEwLjc3NjEgOCAxMC41IDhDMTAuMjIzOSA4IDEwIDguMjIzODYgMTAgOC41QzEwIDguNzc2MTQgMTAuMjIzOSA5IDEwLjUgOVpNMTMgOC41QzEzIDguNzc2MTQgMTIuNzc2MSA5IDEyLjUgOUMxMi4yMjM5IDkgMTIgOC43NzYxNCAxMiA4LjVDMTIgOC4yMjM4NiAxMi4yMjM5IDggMTIuNSA4QzEyLjc3NjEgOCAxMyA4LjIyMzg2IDEzIDguNVpNMTQuNSA5QzE0Ljc3NjEgOSAxNSA4Ljc3NjE0IDE1IDguNUMxNSA4LjIyMzg2IDE0Ljc3NjEgOCAxNC41IDhDMTQuMjIzOSA4IDE0IDguMjIzODYgMTQgOC41QzE0IDguNzc2MTQgMTQuMjIzOSA5IDE0LjUgOVpNMTUgMTAuNUMxNSAxMC43NzYxIDE0Ljc3NjEgMTEgMTQuNSAxMUMxNC4yMjM5IDExIDE0IDEwLjc3NjEgMTQgMTAuNUMxNCAxMC4yMjM5IDE0LjIyMzkgMTAgMTQuNSAxMEMxNC43NzYxIDEwIDE1IDEwLjIyMzkgMTUgMTAuNVpNMTQuNSAxM0MxNC43NzYxIDEzIDE1IDEyLjc3NjEgMTUgMTIuNUMxNSAxMi4yMjM5IDE0Ljc3NjEgMTIgMTQuNSAxMkMxNC4yMjM5IDEyIDE0IDEyLjIyMzkgMTQgMTIuNUMxNCAxMi43NzYxIDE0LjIyMzkgMTMgMTQuNSAxM1pNMTQuNSAxNUMxNC43NzYxIDE1IDE1IDE0Ljc3NjEgMTUgMTQuNUMxNSAxNC4yMjM5IDE0Ljc3NjEgMTQgMTQuNSAxNEMxNC4yMjM5IDE0IDE0IDE0LjIyMzkgMTQgMTQuNUMxNCAxNC43NzYxIDE0LjIyMzkgMTUgMTQuNSAxNVpNOC41IDExQzguNzc2MTQgMTEgOSAxMC43NzYxIDkgMTAuNUM5IDEwLjIyMzkgOC43NzYxNCAxMCA4LjUgMTBDOC4yMjM4NiAxMCA4IDEwLjIyMzkgOCAxMC41QzggMTAuNzc2MSA4LjIyMzg2IDExIDguNSAxMVpNOSAxMi41QzkgMTIuNzc2MSA4Ljc3NjE0IDEzIDguNSAxM0M4LjIyMzg2IDEzIDggMTIuNzc2MSA4IDEyLjVDOCAxMi4yMjM5IDguMjIzODYgMTIgOC41IDEyQzguNzc2MTQgMTIgOSAxMi4yMjM5IDkgMTIuNVpNOC41IDE1QzguNzc2MTQgMTUgOSAxNC43NzYxIDkgMTQuNUM5IDE0LjIyMzkgOC43NzYxNCAxNCA4LjUgMTRDOC4yMjM4NiAxNCA4IDE0LjIyMzkgOCAxNC41QzggMTQuNzc2MSA4LjIyMzg2IDE1IDguNSAxNVpNMTEgMTQuNUMxMSAxNC43NzYxIDEwLjc3NjEgMTUgMTAuNSAxNUMxMC4yMjM5IDE1IDEwIDE0Ljc3NjEgMTAgMTQuNUMxMCAxNC4yMjM5IDEwLjIyMzkgMTQgMTAuNSAxNEMxMC43NzYxIDE0IDExIDE0LjIyMzkgMTEgMTQuNVpNMTIuNSAxNUMxMi43NzYxIDE1IDEzIDE0Ljc3NjEgMTMgMTQuNUMxMyAxNC4yMjM5IDEyLjc3NjEgMTQgMTIuNSAxNEMxMi4yMjM5IDE0IDEyIDE0LjIyMzkgMTIgMTQuNUMxMiAxNC43NzYxIDEyLjIyMzkgMTUgMTIuNSAxNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGhlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUwMDA5IDAuODc3MDE0QzMuODQyNDEgMC44NzcwMTQgMC44NzcyNTggMy44NDIxNiAwLjg3NzI1OCA3LjQ5OTg0QzAuODc3MjU4IDExLjE1NzUgMy44NDI0IDE0LjEyMjcgNy41MDAwOSAxNC4xMjI3QzExLjE1NzggMTQuMTIyNyAxNC4xMjI5IDExLjE1NzUgMTQuMTIyOSA3LjQ5OTg0QzE0LjEyMjkgMy44NDIxNiAxMS4xNTc3IDAuODc3MDE0IDcuNTAwMDkgMC44NzcwMTRaTTEuODI3MjYgNy40OTk4NEMxLjgyNzI2IDQuMzY2ODMgNC4zNjcwOCAxLjgyNzAxIDcuNTAwMDkgMS44MjcwMUMxMC42MzMxIDEuODI3MDEgMTMuMTcyOSA0LjM2NjgzIDEzLjE3MjkgNy40OTk4NEMxMy4xNzI5IDEwLjYzMjggMTAuNjMzMSAxMy4xNzI3IDcuNTAwMDkgMTMuMTcyN0M0LjM2NzA4IDEzLjE3MjcgMS44MjcyNiAxMC42MzI4IDEuODI3MjYgNy40OTk4NFpNOCA0LjUwMDAxQzggNC4yMjM4NyA3Ljc3NjE0IDQuMDAwMDEgNy41IDQuMDAwMDFDNy4yMjM4NiA0LjAwMDAxIDcgNC4yMjM4NyA3IDQuNTAwMDFWNy41MDAwMUM3IDcuNjMyNjIgNy4wNTI2OCA3Ljc1OTggNy4xNDY0NSA3Ljg1MzU3TDkuMTQ2NDUgOS44NTM1N0M5LjM0MTcxIDEwLjA0ODggOS42NTgyOSAxMC4wNDg4IDkuODUzNTUgOS44NTM1N0MxMC4wNDg4IDkuNjU4MzEgMTAuMDQ4OCA5LjM0MTcyIDkuODUzNTUgOS4xNDY0Nkw4IDcuMjkyOTFWNC41MDAwMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHZlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05Ljk2NDI0IDIuNjg1NzFDMTAuMDY2OCAyLjQyOTMxIDkuOTQyMDkgMi4xMzgzMyA5LjY4NTcgMi4wMzU3N0M5LjQyOTMgMS45MzMyMiA5LjEzODMyIDIuMDU3OTIgOS4wMzU3NiAyLjMxNDMyTDUuMDM1NzYgMTIuMzE0M0M0LjkzMzIgMTIuNTcwNyA1LjA1NzkxIDEyLjg2MTcgNS4zMTQzIDEyLjk2NDJDNS41NzA3IDEzLjA2NjggNS44NjE2OCAxMi45NDIxIDUuOTY0MjQgMTIuNjg1N0w5Ljk2NDI0IDIuNjg1NzFaTTMuODUzNTUgNS4xNDY0NkM0LjA0ODgyIDUuMzQxNzIgNC4wNDg4MiA1LjY1ODMgMy44NTM1NSA1Ljg1MzU2TDIuMjA3MTEgNy41MDAwMUwzLjg1MzU1IDkuMTQ2NDZDNC4wNDg4MiA5LjM0MTcyIDQuMDQ4ODIgOS42NTgzIDMuODUzNTUgOS44NTM1NkMzLjY1ODI5IDEwLjA0ODggMy4zNDE3MSAxMC4wNDg4IDMuMTQ2NDUgOS44NTM1NkwxLjE0NjQ1IDcuODUzNTZDMC45NTExODQgNy42NTgzIDAuOTUxMTg0IDcuMzQxNzIgMS4xNDY0NSA3LjE0NjQ2TDMuMTQ2NDUgNS4xNDY0NkMzLjM0MTcxIDQuOTUxMiAzLjY1ODI5IDQuOTUxMiAzLjg1MzU1IDUuMTQ2NDZaTTExLjE0NjQgNS4xNDY0NkMxMS4zNDE3IDQuOTUxMiAxMS42NTgzIDQuOTUxMiAxMS44NTM2IDUuMTQ2NDZMMTMuODUzNiA3LjE0NjQ2QzE0LjA0ODggNy4zNDE3MiAxNC4wNDg4IDcuNjU4MyAxMy44NTM2IDcuODUzNTZMMTEuODUzNiA5Ljg1MzU2QzExLjY1ODMgMTAuMDQ4OCAxMS4zNDE3IDEwLjA0ODggMTEuMTQ2NCA5Ljg1MzU2QzEwLjk1MTIgOS42NTgzIDEwLjk1MTIgOS4zNDE3MiAxMS4xNDY0IDkuMTQ2NDZMMTIuNzkyOSA3LjUwMDAxTDExLjE0NjQgNS44NTM1NkMxMC45NTEyIDUuNjU4MyAxMC45NTEyIDUuMzQxNzIgMTEuMTQ2NCA1LjE0NjQ2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNzExNDQgMC43OTY5MDJDNy41Nzc0MSAwLjczNDM1NyA3LjQyMjU3IDAuNzM0MzU3IDcuMjg4NTUgMC43OTY5MDJMMS4yODg1NSAzLjU5NjlDMS4xMTI1MSAzLjY3OTA1IDAuOTk5OTkzIDMuODU1NzMgMC45OTk5OTMgNC4wNDk5OVYxMC45NUMwLjk5OTk5MyAxMS4xNDQzIDEuMTEyNTEgMTEuMzIwOSAxLjI4ODU1IDExLjQwMzFMNy4yODg1NSAxNC4yMDMxQzcuNDIyNTcgMTQuMjY1NiA3LjU3NzQxIDE0LjI2NTYgNy43MTE0NCAxNC4yMDMxTDEzLjcxMTQgMTEuNDAzMUMxMy44ODc1IDExLjMyMDkgMTQgMTEuMTQ0MyAxNCAxMC45NVY0LjA0OTk5QzE0IDMuODU1NzMgMTMuODg3NSAzLjY3OTA1IDEzLjcxMTQgMy41OTY5TDcuNzExNDQgMC43OTY5MDJaTTcuNDk5OTkgMy4xNTY3NEw1Ljk4MDM5IDIuNTEwOTFMNy40OTk5OSAxLjgwMTc2TDkuMDE5NTkgMi41MTA5MUw3LjQ5OTk5IDMuMTU2NzRaTTcuNjk1NTYgNC4xNjAxOEwxMC4yMzgyIDMuMDc5NThMMTIuMjcxOSA0LjAyODY1TDcuNDk5OTkgNi4wNTY3MUwyLjcyODA4IDQuMDI4NjVMNC43NjE4MSAzLjA3OTU4TDcuMzA0NDIgNC4xNjAxOEM3LjQyOTM5IDQuMjEzMyA3LjU3MDU5IDQuMjEzMyA3LjY5NTU2IDQuMTYwMThaTTcuOTk5OTkgNi45MzA3OEwxMyA0LjgwNTc4VjcuOTI5NjZMMTEuMDgyMSA4LjgxMTlDMTAuNzI3MyA4Ljk3NTA5IDEwLjUgOS4zMjk4OCAxMC41IDkuNzIwMzlWMTEuNzk4Mkw3Ljk5OTk5IDEyLjk2NDlWNi45MzA3OFpNMTEuNSAxMS4zMzE2TDEzIDEwLjYzMTZWOS4wMzAzOUwxMS41IDkuNzIwMzlWMTEuMzMxNlpNNi45OTk5OSA2LjkzMDc4VjEyLjk2NDlMNC41MDIzMSAxMS43OTkzVjkuNzIwMzZDNC41MDIzMSA5LjMyOTg1IDQuMjc0OTkgOC45NzUwNiAzLjkyMDIyIDguODExODdMMS45OTk5OSA3LjkyODU2VjQuODA1NzhMNi45OTk5OSA2LjkzMDc4Wk0xLjk5OTk5IDEwLjYzMTZMMy41MDIzMSAxMS4zMzI2TDMuNTAyMzEgOS43MjAzNkwxLjk5OTk5IDkuMDI5MjlWMTAuNjMxNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LENlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjAwMDEyIDEuNUM4LjAwMDEyIDEuMjIzODYgNy43NzYyNiAxIDcuNTAwMTIgMUM3LjIyMzk4IDEgNy4wMDAxMiAxLjIyMzg2IDcuMDAwMTIgMS41VjEzLjVDNy4wMDAxMiAxMy43NzYxIDcuMjIzOTggMTQgNy41MDAxMiAxNEM3Ljc3NjI2IDE0IDguMDAwMTIgMTMuNzc2MSA4LjAwMDEyIDEzLjVWMS41Wk0zLjMxODEyIDUuODE4QzMuNDkzODYgNS42NDIyNyAzLjQ5Mzg2IDUuMzU3MzQgMy4zMTgxMiA1LjE4MTYxQzMuMTQyMzkgNS4wMDU4NyAyLjg1NzQ2IDUuMDA1ODcgMi42ODE3MyA1LjE4MTYxTDAuNjgxNzI5IDcuMTgxNjFDMC41MDU5OTMgNy4zNTczNCAwLjUwNTk5MyA3LjY0MjI3IDAuNjgxNzI5IDcuODE4TDIuNjgxNzMgOS44MThDMi44NTc0NiA5Ljk5Mzc0IDMuMTQyMzkgOS45OTM3NCAzLjMxODEyIDkuODE4QzMuNDkzODYgOS42NDIyNyAzLjQ5Mzg2IDkuMzU3MzQgMy4zMTgxMiA5LjE4MTYxTDIuMDg2MzIgNy45NDk4SDUuNTAwMTdDNS43NDg3IDcuOTQ5OCA1Ljk1MDE3IDcuNzQ4MzMgNS45NTAxNyA3LjQ5OThDNS45NTAxNyA3LjI1MTI4IDUuNzQ4NyA3LjA0OTggNS41MDAxNyA3LjA0OThIMi4wODYzMkwzLjMxODEyIDUuODE4Wk0xMi4zMTgxIDUuMTgxNjFDMTIuMTQyNCA1LjAwNTg3IDExLjg1NzUgNS4wMDU4NyAxMS42ODE3IDUuMTgxNjFDMTEuNTA2IDUuMzU3MzQgMTEuNTA2IDUuNjQyMjcgMTEuNjgxNyA1LjgxOEwxMi45MTM1IDcuMDQ5OEg5LjUwMDE3QzkuMjUxNjQgNy4wNDk4IDkuMDUwMTcgNy4yNTEyOCA5LjA1MDE3IDcuNDk5OEM5LjA1MDE3IDcuNzQ4MzMgOS4yNTE2NCA3Ljk0OTggOS41MDAxNyA3Ljk0OThIMTIuOTEzNUwxMS42ODE3IDkuMTgxNjFDMTEuNTA2IDkuMzU3MzQgMTEuNTA2IDkuNjQyMjcgMTEuNjgxNyA5LjgxOEMxMS44NTc1IDkuOTkzNzQgMTIuMTQyNCA5Ljk5Mzc0IDEyLjMxODEgOS44MThMMTQuMzE4MSA3LjgxOEMxNC40OTM5IDcuNjQyMjcgMTQuNDkzOSA3LjM1NzM0IDE0LjMxODEgNy4xODE2MUwxMi4zMTgxIDUuMTgxNjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxtZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi4xNDk5OCAxNFYxSDAuODQ5OTc2VjE0SDIuMTQ5OThaTTYuMTQ5OTggMTRWMUg0Ljg0OTk4VjE0SDYuMTQ5OThaTTEwLjE1IDFWMTRIOC44NDk5OFYxSDEwLjE1Wk0xNC4xNSAxNFYxSDEyLjg1VjE0SDE0LjE1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuOTQ5NjkgNy40OTk4OUM5Ljk0OTY5IDguODUyODggOC44NTI4OCA5Ljk0OTY5IDcuNDk5ODkgOS45NDk2OUM2LjE0NjkxIDkuOTQ5NjkgNS4wNTAxIDguODUyODggNS4wNTAxIDcuNDk5ODlDNS4wNTAxIDYuMTQ2OTEgNi4xNDY5MSA1LjA1MDEgNy40OTk4OSA1LjA1MDFDOC44NTI4OCA1LjA1MDEgOS45NDk2OSA2LjE0NjkxIDkuOTQ5NjkgNy40OTk4OVpNMTAuODYzMiA4QzEwLjYyMTMgOS42NDA1NSA5LjIwNzY0IDEwLjg5OTcgNy40OTk4OSAxMC44OTk3QzUuNzkyMTQgMTAuODk5NyA0LjM3ODQ3IDkuNjQwNTUgNC4xMzY2MiA4SDAuNUMwLjIyMzg1OCA4IDAgNy43NzYxNCAwIDcuNUMwIDcuMjIzODYgMC4yMjM4NTggNyAwLjUgN0g0LjEzNjU5QzQuMzc4MzUgNS4zNTkzNSA1Ljc5MjA2IDQuMTAwMSA3LjQ5OTg5IDQuMTAwMUM5LjIwNzcyIDQuMTAwMSAxMC42MjE0IDUuMzU5MzUgMTAuODYzMiA3SDE0LjVDMTQuNzc2MSA3IDE1IDcuMjIzODYgMTUgNy41QzE1IDcuNzc2MTQgMTQuNzc2MSA4IDE0LjUgOEgxMC44NjMyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sd2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNjcxMjkgMy4xNDYzNEM0LjQ3NjAzIDMuMzQxNjEgNC40NzYwMyAzLjY1ODE5IDQuNjcxMjkgMy44NTM0NUw3LjE0NjE2IDYuMzI4MzNDNy4zNDE0MiA2LjUyMzU5IDcuNjU4MDEgNi41MjM1OSA3Ljg1MzI3IDYuMzI4MzNMMTAuMzI4MSAzLjg1MzQ1QzEwLjUyMzQgMy42NTgxOSAxMC41MjM0IDMuMzQxNjEgMTAuMzI4MSAzLjE0NjM0TDcuODUzMjcgMC42NzE0NzFDNy42NTgwMSAwLjQ3NjIwOSA3LjM0MTQyIDAuNDc2MjA5IDcuMTQ2MTYgMC42NzE0NzFMNC42NzEyOSAzLjE0NjM0Wk03LjQ5OTcxIDUuMjY3NjZMNS43MzE5NSAzLjQ5OTlMNy40OTk3MSAxLjczMjEzTDkuMjY3NDggMy40OTk5TDcuNDk5NzEgNS4yNjc2NlpNOC42NzEyOSA3LjE0NjM0QzguNDc2MDMgNy4zNDE2MSA4LjQ3NjAzIDcuNjU4MTkgOC42NzEyOSA3Ljg1MzQ1TDExLjE0NjIgMTAuMzI4M0MxMS4zNDE0IDEwLjUyMzYgMTEuNjU4IDEwLjUyMzYgMTEuODUzMyAxMC4zMjgzTDE0LjMyODEgNy44NTM0NUMxNC41MjM0IDcuNjU4MTkgMTQuNTIzNCA3LjM0MTYxIDE0LjMyODEgNy4xNDYzNEwxMS44NTMzIDQuNjcxNDdDMTEuNjU4IDQuNDc2MjEgMTEuMzQxNCA0LjQ3NjIxIDExLjE0NjIgNC42NzE0N0w4LjY3MTI5IDcuMTQ2MzRaTTExLjQ5OTcgOS4yNjc2Nkw5LjczMTk1IDcuNDk5OUwxMS40OTk3IDUuNzMyMTNMMTMuMjY3NSA3LjQ5OTlMMTEuNDk5NyA5LjI2NzY2Wk00LjY3MTI5IDExLjg1MzVDNC40NzYwMyAxMS42NTgyIDQuNDc2MDMgMTEuMzQxNiA0LjY3MTI5IDExLjE0NjNMNy4xNDYxNiA4LjY3MTQ3QzcuMzQxNDIgOC40NzYyMSA3LjY1ODAxIDguNDc2MjEgNy44NTMyNyA4LjY3MTQ3TDEwLjMyODEgMTEuMTQ2M0MxMC41MjM0IDExLjM0MTYgMTAuNTIzNCAxMS42NTgyIDEwLjMyODEgMTEuODUzNUw3Ljg1MzI3IDE0LjMyODNDNy42NTgwMSAxNC41MjM2IDcuMzQxNDIgMTQuNTIzNiA3LjE0NjE2IDE0LjMyODNMNC42NzEyOSAxMS44NTM1Wk01LjczMTk1IDExLjQ5OTlMNy40OTk3MSAxMy4yNjc3TDkuMjY3NDggMTEuNDk5OUw3LjQ5OTcxIDkuNzMyMTNMNS43MzE5NSAxMS40OTk5Wk0wLjY3MTI4OCA3LjE0NjQ5QzAuNDc2MDI2IDcuMzQxNzUgMC40NzYwMjYgNy42NTgzNCAwLjY3MTI4OCA3Ljg1MzZMMy4xNDYxNiAxMC4zMjg1QzMuMzQxNDIgMTAuNTIzNyAzLjY1ODAxIDEwLjUyMzcgMy44NTMyNyAxMC4zMjg1TDYuMzI4MTQgNy44NTM2QzYuNTIzNCA3LjY1ODM0IDYuNTIzNCA3LjM0MTc1IDYuMzI4MTQgNy4xNDY0OUwzLjg1MzI3IDQuNjcxNjJDMy42NTgwMSA0LjQ3NjM2IDMuMzQxNDIgNC40NzYzNiAzLjE0NjE2IDQuNjcxNjJMMC42NzEyODggNy4xNDY0OVpNMy40OTk3MiA5LjI2NzgxTDEuNzMxOTUgNy41MDAwNUwzLjQ5OTcyIDUuNzMyMjhMNS4yNjc0OCA3LjUwMDA1TDMuNDk5NzIgOS4yNjc4MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGJlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjg3OTM1IDFIMy45SDExLjFIMTEuMTIwN0MxMS41MjMxIDAuOTk5OTk0IDExLjg1NTMgMC45OTk5ODkgMTIuMTI1OSAxLjAyMjFDMTIuNDA3IDEuMDQ1MDYgMTIuNjY1MyAxLjA5NDM0IDEyLjkwOCAxLjIxNzk5QzEzLjI4NDMgMS40MDk3MyAxMy41OTAzIDEuNzE1NyAxMy43ODIgMi4wOTIwMkMxMy45MDU3IDIuMzM0NjkgMTMuOTU0OSAyLjU5MzA0IDEzLjk3NzkgMi44NzQwOUMxNCAzLjE0NDY4IDE0IDMuNDc2ODYgMTQgMy44NzkzNFYzLjlWMTEuMVYxMS4xMjA3QzE0IDExLjUyMzEgMTQgMTEuODU1MyAxMy45Nzc5IDEyLjEyNTlDMTMuOTU0OSAxMi40MDcgMTMuOTA1NyAxMi42NjUzIDEzLjc4MiAxMi45MDhDMTMuNTkwMyAxMy4yODQzIDEzLjI4NDMgMTMuNTkwMyAxMi45MDggMTMuNzgyQzEyLjY2NTMgMTMuOTA1NyAxMi40MDcgMTMuOTU0OSAxMi4xMjU5IDEzLjk3NzlDMTEuODU1MyAxNCAxMS41MjMxIDE0IDExLjEyMDcgMTRIMTEuMUgzLjlIMy44NzkzNEMzLjQ3Njg2IDE0IDMuMTQ0NjggMTQgMi44NzQwOSAxMy45Nzc5QzIuNTkzMDQgMTMuOTU0OSAyLjMzNDY5IDEzLjkwNTcgMi4wOTIwMiAxMy43ODJDMS43MTU3IDEzLjU5MDMgMS40MDk3MyAxMy4yODQzIDEuMjE3OTkgMTIuOTA4QzEuMDk0MzQgMTIuNjY1MyAxLjA0NTA2IDEyLjQwNyAxLjAyMjEgMTIuMTI1OUMwLjk5OTk4OSAxMS44NTUzIDAuOTk5OTk0IDExLjUyMzEgMSAxMS4xMjA3VjExLjEyMDdWMTEuMVYzLjlWMy44NzkzNVYzLjg3OTM0QzAuOTk5OTk0IDMuNDc2ODYgMC45OTk5ODkgMy4xNDQ2OCAxLjAyMjEgMi44NzQwOUMxLjA0NTA2IDIuNTkzMDQgMS4wOTQzNCAyLjMzNDY5IDEuMjE3OTkgMi4wOTIwMkMxLjQwOTczIDEuNzE1NyAxLjcxNTcgMS40MDk3MyAyLjA5MjAyIDEuMjE3OTlDMi4zMzQ2OSAxLjA5NDM0IDIuNTkzMDQgMS4wNDUwNiAyLjg3NDA5IDEuMDIyMUMzLjE0NDY5IDAuOTk5OTg5IDMuNDc2ODcgMC45OTk5OTQgMy44NzkzNSAxWk0yLjk1NTUyIDIuMDE4NzhDMi43MzYzMSAyLjAzNjY5IDIuNjI0MjEgMi4wNjkxNSAyLjU0NjAxIDIuMTA4OTlDMi4zNTc4NSAyLjIwNDg3IDIuMjA0ODcgMi4zNTc4NSAyLjEwODk5IDIuNTQ2MDFDMi4wNjkxNSAyLjYyNDIxIDIuMDM2NjkgMi43MzYzMSAyLjAxODc4IDIuOTU1NTJDMi4wMDAzOSAzLjE4MDU2IDIgMy40NzE3MSAyIDMuOVY3SDdWMkgzLjlDMy40NzE3MSAyIDMuMTgwNTYgMi4wMDAzOSAyLjk1NTUyIDIuMDE4NzhaTTcgOEgyVjExLjFDMiAxMS41MjgzIDIuMDAwMzkgMTEuODE5NCAyLjAxODc4IDEyLjA0NDVDMi4wMzY2OSAxMi4yNjM3IDIuMDY5MTUgMTIuMzc1OCAyLjEwODk5IDEyLjQ1NEMyLjIwNDg3IDEyLjY0MjIgMi4zNTc4NSAxMi43OTUxIDIuNTQ2MDEgMTIuODkxQzIuNjI0MjEgMTIuOTMwOSAyLjczNjMxIDEyLjk2MzMgMi45NTU1MiAxMi45ODEyQzMuMTgwNTYgMTIuOTk5NiAzLjQ3MTcxIDEzIDMuOSAxM0g3VjhaTTggOEgxM1YxMS4xQzEzIDExLjUyODMgMTIuOTk5NiAxMS44MTk0IDEyLjk4MTIgMTIuMDQ0NUMxMi45NjMzIDEyLjI2MzcgMTIuOTMwOSAxMi4zNzU4IDEyLjg5MSAxMi40NTRDMTIuNzk1MSAxMi42NDIyIDEyLjY0MjIgMTIuNzk1MSAxMi40NTQgMTIuODkxQzEyLjM3NTggMTIuOTMwOSAxMi4yNjM3IDEyLjk2MzMgMTIuMDQ0NSAxMi45ODEyQzExLjgxOTQgMTIuOTk5NiAxMS41MjgzIDEzIDExLjEgMTNIOFY4Wk0xMyA3SDhWMkgxMS4xQzExLjUyODMgMiAxMS44MTk0IDIuMDAwMzkgMTIuMDQ0NSAyLjAxODc4QzEyLjI2MzcgMi4wMzY2OSAxMi4zNzU4IDIuMDY5MTUgMTIuNDU0IDIuMTA4OTlDMTIuNjQyMiAyLjIwNDg3IDEyLjc5NTEgMi4zNTc4NSAxMi44OTEgMi41NDYwMUMxMi45MzA5IDIuNjI0MjEgMTIuOTYzMyAyLjczNjMxIDEyLjk4MTIgMi45NTU1MkMxMi45OTk2IDMuMTgwNTYgMTMgMy40NzE3MSAxMyAzLjlWN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHhlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03Ljg1MzY3IDEuNDg5NTZDNy42NTg0MSAxLjI5NDI5IDcuMzQxODIgMS4yOTQyOSA3LjE0NjU2IDEuNDg5NTZMMS40ODk3MSA3LjE0NjQxQzEuMjk0NDUgNy4zNDE2NyAxLjI5NDQ1IDcuNjU4MjUgMS40ODk3MSA3Ljg1MzUyTDcuMTQ2NTYgMTMuNTEwNEM3LjM0MTgyIDEzLjcwNTYgNy42NTg0MSAxMy43MDU2IDcuODUzNjcgMTMuNTEwNEwxMy41MTA1IDcuODUzNTJDMTMuNzA1OCA3LjY1ODI1IDEzLjcwNTggNy4zNDE2NyAxMy41MTA1IDcuMTQ2NDFMNy44NTM2NyAxLjQ4OTU2Wk03LjUgMi41NTAzM0wyLjU1MDM3IDcuNDk5OTZMNy41IDEyLjQ0OTZWMi41NTAzM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LF9lPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjE0NjUgMS40ODk1OUM3LjM0MTc2IDEuMjk0MzIgNy42NTgzNSAxLjI5NDMyIDcuODUzNjEgMS40ODk1OUwxMy41MTA1IDcuMTQ2NDRDMTMuNzA1NyA3LjM0MTcgMTMuNzA1NyA3LjY1ODI5IDEzLjUxMDUgNy44NTM1NUw3Ljg1MzYxIDEzLjUxMDRDNy42NTgzNSAxMy43MDU3IDcuMzQxNzYgMTMuNzA1NyA3LjE0NjUgMTMuNTEwNEwxLjQ4OTY1IDcuODUzNTVDMS4yOTQzOSA3LjY1ODI5IDEuMjk0MzkgNy4zNDE3IDEuNDg5NjUgNy4xNDY0NEw3LjE0NjUgMS40ODk1OVpNNy41MDAwNSAyLjU1MDI1TDIuNTUwMzEgNy40OTk5OUw3LjUwMDA1IDEyLjQ0OTdMMTIuNDQ5OCA3LjQ5OTk5TDcuNTAwMDUgMi41NTAyNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LExlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03Ljg1MzYxIDEuNDg5NTlDNy42NTgzNSAxLjI5NDMyIDcuMzQxNzYgMS4yOTQzMiA3LjE0NjUgMS40ODk1OUwxLjQ4OTY1IDcuMTQ2NDRDMS4yOTQzOSA3LjM0MTcgMS4yOTQzOSA3LjY1ODI5IDEuNDg5NjUgNy44NTM1NUwzLjk2NDUgMTAuMzI4NEwxLjY0NjQ0IDEyLjY0NjRDMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTMuMTU4MyAxLjY0NjQ0IDEzLjM1MzZDMS44NDE3MSAxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAyLjM1MzU1IDEzLjM1MzZMNC42NzE2IDExLjAzNTVMNy4xNDY1IDEzLjUxMDRDNy4zNDE3NiAxMy43MDU3IDcuNjU4MzUgMTMuNzA1NyA3Ljg1MzYxIDEzLjUxMDRMMTMuNTEwNSA3Ljg1MzU1QzEzLjcwNTcgNy42NTgyOSAxMy43MDU3IDcuMzQxNyAxMy41MTA1IDcuMTQ2NDRMMTEuMDM1NiA0LjY3MTU0TDEzLjM1MzUgMi4zNTM1NUMxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAxLjg0MTcxIDEzLjM1MzUgMS42NDY0NUMxMy4xNTgzIDEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEyLjY0NjQgMS42NDY0NUwxMC4zMjg1IDMuOTY0NDNMNy44NTM2MSAxLjQ4OTU5Wk05LjYyMTM1IDQuNjcxNTRMNy41MDAwNSAyLjU1MDI1TDIuNTUwMzEgNy40OTk5OUw0LjY3MTYgOS42MjEyOUw5LjYyMTM1IDQuNjcxNTRaTTUuMzc4NzEgMTAuMzI4NEw3LjUwMDA1IDEyLjQ0OTdMMTIuNDQ5OCA3LjQ5OTk5TDEwLjMyODUgNS4zNzg2NUw1LjM3ODcxIDEwLjMyODRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxPZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTIuODAzNCA3LjE0NjQ0QzEyLjk5ODYgNi45NTExOCAxMy4zMTUyIDYuOTUxMTggMTMuNTEwNSA3LjE0NjQ0QzEzLjcwNTcgNy4zNDE3IDEzLjcwNTcgNy42NTgyOSAxMy41MTA1IDcuODUzNTVDMTMuMzE1MiA4LjA0ODgxIDEyLjk5ODYgOC4wNDg4MSAxMi44MDM0IDcuODUzNTVDMTIuNjA4MSA3LjY1ODI4IDEyLjYwODEgNy4zNDE3IDEyLjgwMzQgNy4xNDY0NFpNMTIuMDk2MiA4LjU2MDY1QzEyLjI5MTUgOC43NTU5MiAxMi4yOTE1IDkuMDcyNSAxMi4wOTYyIDkuMjY3NzZDMTEuOTAxIDkuNDYzMDIgMTEuNTg0NCA5LjQ2MzAyIDExLjM4OTEgOS4yNjc3NkMxMS4xOTM5IDkuMDcyNSAxMS4xOTM5IDguNzU1OTIgMTEuMzg5MSA4LjU2MDY1QzExLjU4NDQgOC4zNjUzOSAxMS45MDEgOC4zNjUzOSAxMi4wOTYyIDguNTYwNjVaTTEwLjY4MiA5Ljk3NDg3QzEwLjg3NzMgMTAuMTcwMSAxMC44NzczIDEwLjQ4NjcgMTAuNjgyIDEwLjY4MkMxMC40ODY4IDEwLjg3NzIgMTAuMTcwMiAxMC44NzcyIDkuOTc0OTMgMTAuNjgyQzkuNzc5NjcgMTAuNDg2NyA5Ljc3OTY3IDEwLjE3MDEgOS45NzQ5MyA5Ljk3NDg3QzEwLjE3MDIgOS43Nzk2IDEwLjQ4NjggOS43Nzk2IDEwLjY4MiA5Ljk3NDg3Wk05LjI2NzgyIDExLjM4OTFDOS40NjMwOCAxMS41ODQzIDkuNDYzMDggMTEuOTAwOSA5LjI2NzgyIDEyLjA5NjJDOS4wNzI1NiAxMi4yOTE1IDguNzU1OTggMTIuMjkxNSA4LjU2MDcxIDEyLjA5NjJDOC4zNjU0NSAxMS45MDA5IDguMzY1NDUgMTEuNTg0MyA4LjU2MDcyIDExLjM4OTFDOC43NTU5OCAxMS4xOTM4IDkuMDcyNTYgMTEuMTkzOCA5LjI2NzgyIDExLjM4OTFaTTcuMTQ2NSAxMy41MTA0QzYuOTUxMjQgMTMuMzE1MSA2Ljk1MTI0IDEyLjk5ODYgNy4xNDY1IDEyLjgwMzNDNy4xNzA5MSAxMi43Nzg5IDcuMTk3MjEgMTIuNzU3NSA3LjIyNDk0IDEyLjczOTJDNy40MTkwMSAxMi42MTExIDcuNjgyNzUgMTIuNjMyNCA3Ljg1MzYxIDEyLjgwMzNDOC4wNDg4NyAxMi45OTg2IDguMDQ4ODcgMTMuMzE1MSA3Ljg1MzYxIDEzLjUxMDRDNy42NTgzNSAxMy43MDU3IDcuMzQxNzYgMTMuNzA1NyA3LjE0NjUgMTMuNTEwNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuOTAzODYgOC41NjA2NUMyLjcwODYgOC43NTU5MiAyLjcwODYgOS4wNzI1IDIuOTAzODYgOS4yNjc3NiAzLjA5OTEyIDkuNDYzMDIgMy40MTU3MSA5LjQ2MzAyIDMuNjEwOTcgOS4yNjc3NiAzLjgwNjIzIDkuMDcyNSAzLjgwNjIzIDguNzU1OTIgMy42MTA5NyA4LjU2MDY1IDMuNDE1NzEgOC4zNjUzOSAzLjA5OTEyIDguMzY1MzkgMi45MDM4NiA4LjU2MDY1ek00LjMxODA3IDkuOTc0ODdDNC4xMjI4MSAxMC4xNzAxIDQuMTIyODEgMTAuNDg2NyA0LjMxODA3IDEwLjY4MiA0LjUxMzM0IDEwLjg3NzIgNC44Mjk5MiAxMC44NzcyIDUuMDI1MTggMTAuNjgyIDUuMjIwNDQgMTAuNDg2NyA1LjIyMDQ0IDEwLjE3MDEgNS4wMjUxOCA5Ljk3NDg3IDQuODI5OTIgOS43Nzk2IDQuNTEzMzQgOS43Nzk2IDQuMzE4MDcgOS45NzQ4N3pNNS43MzIyOSAxMS4zODkxQzUuNTM3MDMgMTEuNTg0MyA1LjUzNzAzIDExLjkwMDkgNS43MzIyOSAxMi4wOTYyIDUuOTI3NTUgMTIuMjkxNCA2LjI0NDEzIDEyLjI5MTUgNi40MzkzOSAxMi4wOTYyIDYuNjM0NjYgMTEuOTAwOSA2LjYzNDY2IDExLjU4NDMgNi40MzkzOSAxMS4zODkxIDYuMjQ0MTMgMTEuMTkzOCA1LjkyNzU1IDExLjE5MzggNS43MzIyOSAxMS4zODkxek0yLjE5Njc1IDcuODUzNTVDMi4zNjc2MSA3LjY4MjY5IDIuMzg4OTcgNy40MTg5NSAyLjI2MDgyIDcuMjI0ODggMi4wOTA0NiA2Ljk2Njg0IDEuNzEwNjMgNi45MjU0NiAxLjQ4OTY1IDcuMTQ2NDQgMS4yOTQzOSA3LjM0MTcgMS4yOTQzOSA3LjY1ODI5IDEuNDg5NjUgNy44NTM1NSAxLjY4NDkxIDguMDQ4ODEgMi4wMDE0OSA4LjA0ODgxIDIuMTk2NzUgNy44NTM1NXpNMy42MTA5NyA1LjczMjIzQzMuNDE1NzEgNS41MzY5NiAzLjA5OTEyIDUuNTM2OTYgMi45MDM4NiA1LjczMjIzIDIuNzA4NiA1LjkyNzQ5IDIuNzA4NiA2LjI0NDA3IDIuOTAzODYgNi40MzkzMyAzLjA5OTEyIDYuNjM0NiAzLjQxNTcxIDYuNjM0NiAzLjYxMDk3IDYuNDM5MzMgMy44MDYyMyA2LjI0NDA3IDMuODA2MjMgNS45Mjc0OSAzLjYxMDk3IDUuNzMyMjN6TTUuMDI1MTggNC4zMTgwMUM0LjgyOTkyIDQuMTIyNzUgNC41MTMzNCA0LjEyMjc1IDQuMzE4MDcgNC4zMTgwMSA0LjEyMjgxIDQuNTEzMjggNC4xMjI4MSA0LjgyOTg2IDQuMzE4MDcgNS4wMjUxMiA0LjUxMzM0IDUuMjIwMzggNC44Mjk5MiA1LjIyMDM4IDUuMDI1MTggNS4wMjUxMiA1LjIyMDQ0IDQuODI5ODYgNS4yMjA0NCA0LjUxMzI4IDUuMDI1MTggNC4zMTgwMXpNNi40MzkzOSAyLjkwMzhDNi4yNDQxMyAyLjcwODU0IDUuOTI3NTUgMi43MDg1NCA1LjczMjI5IDIuOTAzOCA1LjUzNzAzIDMuMDk5MDYgNS41MzcwMyAzLjQxNTY0IDUuNzMyMjkgMy42MTA5MSA1LjkyNzU1IDMuODA2MTcgNi4yNDQxMyAzLjgwNjE3IDYuNDM5MzkgMy42MTA5MSA2LjYzNDY2IDMuNDE1NjQgNi42MzQ2NiAzLjA5OTA2IDYuNDM5MzkgMi45MDM4ek03Ljg1MzYxIDEuNDg5NTlDNy42NTgzNSAxLjI5NDMyIDcuMzQxNzYgMS4yOTQzMiA3LjE0NjUgMS40ODk1OSA2Ljk1MTI0IDEuNjg0ODUgNi45NTEyNCAyLjAwMTQzIDcuMTQ2NSAyLjE5NjY5IDcuMzQxNzYgMi4zOTE5NiA3LjY1ODM1IDIuMzkxOTYgNy44NTM2MSAyLjE5NjY5IDguMDQ4ODcgMi4wMDE0MyA4LjA0ODg3IDEuNjg0ODUgNy44NTM2MSAxLjQ4OTU5ek05LjI2NzgyIDIuOTAzOEM5LjA3MjU2IDIuNzA4NTQgOC43NTU5OCAyLjcwODU0IDguNTYwNzEgMi45MDM4IDguMzY1NDUgMy4wOTkwNiA4LjM2NTQ1IDMuNDE1NjQgOC41NjA3MSAzLjYxMDkxIDguNzU1OTggMy44MDYxNyA5LjA3MjU2IDMuODA2MTcgOS4yNjc4MiAzLjYxMDkxIDkuNDYzMDggMy40MTU2NCA5LjQ2MzA4IDMuMDk5MDYgOS4yNjc4MiAyLjkwMzh6TTEwLjY4MiA0LjMxODAxQzEwLjQ4NjggNC4xMjI3NSAxMC4xNzAyIDQuMTIyNzUgOS45NzQ5MyA0LjMxODAxIDkuNzc5NjcgNC41MTMyOCA5Ljc3OTY3IDQuODI5ODYgOS45NzQ5MyA1LjAyNTEyIDEwLjE3MDIgNS4yMjAzOCAxMC40ODY4IDUuMjIwMzggMTAuNjgyIDUuMDI1MTIgMTAuODc3MyA0LjgyOTg2IDEwLjg3NzMgNC41MTMyOCAxMC42ODIgNC4zMTgwMXpNMTIuMDk2MiA1LjczMjIzQzExLjkwMSA1LjUzNjk2IDExLjU4NDQgNS41MzY5NiAxMS4zODkxIDUuNzMyMjMgMTEuMTkzOSA1LjkyNzQ5IDExLjE5MzkgNi4yNDQwNyAxMS4zODkxIDYuNDM5MzMgMTEuNTg0NCA2LjYzNDYgMTEuOTAxIDYuNjM0NiAxMi4wOTYyIDYuNDM5MzMgMTIuMjkxNSA2LjI0NDA3IDEyLjI5MTUgNS45Mjc0OSAxMi4wOTYyIDUuNzMyMjN6XCIsZmlsbDpufSkpfSxFZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiAxLjVDMiAxLjc3NjE0IDEuNzc2MTQgMiAxLjUgMkMxLjIyMzg2IDIgMSAxLjc3NjE0IDEgMS41QzEgMS4yMjM4NiAxLjIyMzg2IDEgMS41IDFDMS43NzYxNCAxIDIgMS4yMjM4NiAyIDEuNVpNNSAxM0gxMFYyTDUgMkw1IDEzWk00IDEzQzQgMTMuNTUyMyA0LjQ0NzcyIDE0IDUgMTRIMTBDMTAuNTUyMyAxNCAxMSAxMy41NTIzIDExIDEzVjJDMTEgMS40NDc3MiAxMC41NTIzIDEgMTAgMUg1QzQuNDQ3NzIgMSA0IDEuNDQ3NzEgNCAyVjEzWk0xMy41IDJDMTMuNzc2MSAyIDE0IDEuNzc2MTQgMTQgMS41QzE0IDEuMjIzODYgMTMuNzc2MSAxIDEzLjUgMUMxMy4yMjM5IDEgMTMgMS4yMjM4NiAxMyAxLjVDMTMgMS43NzYxNCAxMy4yMjM5IDIgMTMuNSAyWk0yIDMuNUMyIDMuNzc2MTQgMS43NzYxNCA0IDEuNSA0QzEuMjIzODYgNCAxIDMuNzc2MTQgMSAzLjVDMSAzLjIyMzg2IDEuMjIzODYgMyAxLjUgM0MxLjc3NjE0IDMgMiAzLjIyMzg2IDIgMy41Wk0xMy41IDRDMTMuNzc2MSA0IDE0IDMuNzc2MTQgMTQgMy41QzE0IDMuMjIzODYgMTMuNzc2MSAzIDEzLjUgM0MxMy4yMjM5IDMgMTMgMy4yMjM4NiAxMyAzLjVDMTMgMy43NzYxNCAxMy4yMjM5IDQgMTMuNSA0Wk0yIDUuNUMyIDUuNzc2MTQgMS43NzYxNCA2IDEuNSA2QzEuMjIzODYgNiAxIDUuNzc2MTQgMSA1LjVDMSA1LjIyMzg2IDEuMjIzODYgNSAxLjUgNUMxLjc3NjE0IDUgMiA1LjIyMzg2IDIgNS41Wk0xMy41IDZDMTMuNzc2MSA2IDE0IDUuNzc2MTQgMTQgNS41QzE0IDUuMjIzODYgMTMuNzc2MSA1IDEzLjUgNUMxMy4yMjM5IDUgMTMgNS4yMjM4NiAxMyA1LjVDMTMgNS43NzYxNCAxMy4yMjM5IDYgMTMuNSA2Wk0yIDcuNUMyIDcuNzc2MTQgMS43NzYxNCA4IDEuNSA4QzEuMjIzODYgOCAxIDcuNzc2MTQgMSA3LjVDMSA3LjIyMzg2IDEuMjIzODYgNyAxLjUgN0MxLjc3NjE0IDcgMiA3LjIyMzg2IDIgNy41Wk0xMy41IDhDMTMuNzc2MSA4IDE0IDcuNzc2MTQgMTQgNy41QzE0IDcuMjIzODYgMTMuNzc2MSA3IDEzLjUgN0MxMy4yMjM5IDcgMTMgNy4yMjM4NiAxMyA3LjVDMTMgNy43NzYxNCAxMy4yMjM5IDggMTMuNSA4Wk0yIDkuNUMyIDkuNzc2MTQgMS43NzYxNCAxMCAxLjUgMTBDMS4yMjM4NiAxMCAxIDkuNzc2MTQgMSA5LjVDMSA5LjIyMzg2IDEuMjIzODYgOSAxLjUgOUMxLjc3NjE0IDkgMiA5LjIyMzg2IDIgOS41Wk0xMy41IDEwQzEzLjc3NjEgMTAgMTQgOS43NzYxNCAxNCA5LjVDMTQgOS4yMjM4NiAxMy43NzYxIDkgMTMuNSA5QzEzLjIyMzkgOSAxMyA5LjIyMzg2IDEzIDkuNUMxMyA5Ljc3NjE0IDEzLjIyMzkgMTAgMTMuNSAxMFpNMiAxMS41QzIgMTEuNzc2MSAxLjc3NjE0IDEyIDEuNSAxMkMxLjIyMzg2IDEyIDEgMTEuNzc2MSAxIDExLjVDMSAxMS4yMjM5IDEuMjIzODYgMTEgMS41IDExQzEuNzc2MTQgMTEgMiAxMS4yMjM5IDIgMTEuNVpNMTMuNSAxMkMxMy43NzYxIDEyIDE0IDExLjc3NjEgMTQgMTEuNUMxNCAxMS4yMjM5IDEzLjc3NjEgMTEgMTMuNSAxMUMxMy4yMjM5IDExIDEzIDExLjIyMzkgMTMgMTEuNUMxMyAxMS43NzYxIDEzLjIyMzkgMTIgMTMuNSAxMlpNMiAxMy41QzIgMTMuNzc2MSAxLjc3NjE0IDE0IDEuNSAxNEMxLjIyMzg2IDE0IDEgMTMuNzc2MSAxIDEzLjVDMSAxMy4yMjM5IDEuMjIzODYgMTMgMS41IDEzQzEuNzc2MTQgMTMgMiAxMy4yMjM5IDIgMTMuNVpNMTMuNSAxNEMxMy43NzYxIDE0IDE0IDEzLjc3NjEgMTQgMTMuNUMxNCAxMy4yMjM5IDEzLjc3NjEgMTMgMTMuNSAxM0MxMy4yMjM5IDEzIDEzIDEzLjIyMzkgMTMgMTMuNUMxMyAxMy43NzYxIDEzLjIyMzkgMTQgMTMuNSAxNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFNlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi4wNjk3IDEuNzY3NDZDMTIuNDgwNyAxLjIxOTQ3IDExLjQ2MDUgMC40NTQzMTEgMTEuMDQ5NSAxLjAwMjNDMTAuNjM4NSAxLjU1MDI4IDExLjY1ODggMi4zMTU0NCAxMi4wNjk3IDEuNzY3NDZaTTguMzkyNjMgMS4wNzgxMUM3LjE1NTg1IDAuOTUwNjAyIDUuNzgyMyAxLjE2MzQ4IDQuNTg0MzMgMS43MDkzN0MzLjM4NTUyIDIuMjU1NjMgMi4zMjczNSAzLjE1MzA5IDEuNzg4NDQgNC40MTgzMkMxLjM3NTc0IDUuMzg3MjQgMS4wMTcxNSA2LjI4MTEzIDEuMDAwODggNy40NDM1NEMwLjk4NDcyNCA4LjU5ODQ0IDEuMzA1MjIgOS45Njg5OCAyLjEzMTc0IDExLjkyOEMyLjYxMTQyIDEzLjA2NDkgNC4wMzk2MyAxMy41NDQ2IDUuMTM4OTUgMTMuODA3OUM2LjQwODM2IDE0LjExMTkgNy44MDg1NyAxNC4xOTE0IDguNjY0NCAxNC4wNzQyQzkuMzY1MTUgMTMuOTc4MiAxMC4xNDQ4IDEzLjgyODQgMTAuNzk4NyAxMy4yOTdDMTEuODk3NyAxMi40MDM5IDEyLjkwMDkgMTEuMzk1NSAxMy40OTk0IDEwLjMzOTNDMTQuMTA0IDkuMjcyMjEgMTQuMzI1NiA4LjA5MjA3IDEzLjcyMTYgNi45NTMyNEMxMy41NjI4IDYuNjUzNzMgMTMuMzE2IDYuNTc3MzQgMTMuMDQxMiA2LjQ5MjNDMTIuOTM3NCA2LjQ2MDE2IDEyLjgyOTUgNi40MjY3OCAxMi43MjA5IDYuMzc5NjZDMTEuNjIxMSA1LjkwMjM0IDEwLjk2NDYgNS4zNDk2MyAxMC45MTM1IDUuMDI4NzZDMTAuODY1NiA0LjcyODA4IDEwLjkyMjEgNC41MTQ2MyAxMC45ODExIDQuMjkxODFDMTEuMDEyOSA0LjE3MTk5IDExLjA0NTMgNC4wNDk0NyAxMS4wNjI2IDMuOTA5MjJDMTEuMDgzOCAzLjczNzM3IDExLjA4MTQgMy4zMzMxOSAxMC42OTk2IDMuMTI3NjFDMTAuNDA0OCAyLjk2ODg4IDEwLjIxNjQgMi42NTg0MyAxMC4wNDA3IDIuMzY5MDRDOS45OTc0MiAyLjI5Nzc1IDkuOTU0OTIgMi4yMjc3MyA5LjkxMTggMi4xNjE1OEM5LjYyNjM0IDEuNzIzNjcgOS4yMDc2OSAxLjE2MjEzIDguMzkyNjMgMS4wNzgxMVpNNC45OTg5OSAyLjYxOTM1QzMuOTY0ODMgMy4wOTA1OCAzLjEyNTU0IDMuODMwOTcgMi43MDg0NiA0LjgxMDE4QzIuMjk4MDggNS43NzM2OCAyLjAxNDA2IDYuNTA4NzMgMi4wMDA3OSA3LjQ1NzUzQzEuOTg3NDEgOC40MTM4NSAyLjI1MDQzIDkuNjM2OCAzLjA1MzEgMTEuNTM5M0MzLjM5MTgxIDEyLjM0MjEgNC42MjE2NyAxMi42NTU3IDUuMzcxODYgMTIuODM1NEM2LjU0OTMgMTMuMTE3NCA3LjgyMiAxMy4xODAyIDguNTI4NjggMTMuMDgzNEM5LjIxMjcxIDEyLjk4OTcgOS43NDU2OCAxMi44NjQyIDEwLjE2ODEgMTIuNTIwOUMxMS4yMjkgMTEuNjU4NyAxMi4xMjEgMTAuNzQzNSAxMi42MjkzIDkuODQ2MzVDMTIuOTM0OSA5LjMwNzA5IDEzLjUxNDEgNy43MDI4IDEyLjYyOTIgNy4zODczQzEwLjc1MzkgNi43MTg3NSAxMC4yNjIgNi4wNjY2OSA5Ljk5MDExIDUuNDEyNjhDOS44MDkxNSA0Ljk3NzQ0IDkuODI4NjggNC41MjI4MiA5Ljk1NzQxIDQuMDc4ODVMOS45NTc0MSA0LjA3ODg0QzkuOTc2NjIgNC4wMTI2IDkuOTk1MzggMy45NDc5MSAxMC4wMzM0IDMuODg4ODJDOS44MTg1NyAzLjczNjc2IDkuNjUxNSAzLjU1MTk1IDkuNTE0NjQgMy4zNzE1QzkuNDI4NzYgMy4yNTgyOCA5LjM0NjkgMy4xMjA5OSA5LjI2MTk3IDIuOTc4NTZDOS4wMTg2NiAyLjU3MDUyIDguNzUwMTggMi4xMjAyNyA4LjI5MDA4IDIuMDcyODNDNy4yMjg4OSAxLjk2MzQzIDYuMDMzOTggMi4xNDc3MiA0Ljk5ODk5IDIuNjE5MzVaTTEzLjIwODEgMy43NzQ3MUMxMy40NDEgMy4yMjY3MSAxMi40NTQ3IDIuNjM2MDYgMTIuMDgyMiAzLjEwMTYzQzExLjU4MTcgMy43MjczMiAxMi45MDI5IDQuNDkyODEgMTMuMjA4MSAzLjc3NDcxWk0xNC4zNjcyIDIuMjYwMzFDMTQuOTY2OCAyLjI3NDkzIDE1LjE1NTEgMS4xMTYwMyAxNC41NzE4IDAuOTQ5MzcxQzEzLjgwNzYgMC43MzEwMjYgMTMuNTkxOCAyLjI0MTM5IDE0LjM2NzIgMi4yNjAzMVpNMTQuMjg1NyA1LjA5MDk4QzE0Ljg2NDQgNS4xMDAwNCAxNS4wNDYyIDQuMzgyMjIgMTQuNDgzMiA0LjI3ODk5QzEzLjc0NTUgNC4xNDM3NSAxMy41MzczIDUuMDc5MjcgMTQuMjg1NyA1LjA5MDk4Wk02LjkwNzUgNC4yODY3MkM2LjQ2ODk4IDQuNjY3NTQgNi4wNTIyIDQuMTUxODUgNS45Nzk4MyAzLjczNjVDNS44Njg0OCAzLjA5NzQ0IDYuMzM2OTYgMi41Njg1NiA2Ljk0ODIzIDIuOTExNTZDNy40MzM0NCAzLjE4MzgyIDcuMjY2NzggMy45NzQ3MSA2LjkwNzUgNC4yODY3MlpNNC45NDQ1NSA1Ljg4MTg0QzUuNDA4ODUgNS40MTc1NCA0LjU5NTY3IDQuNTcwMTMgNC4xMTQyNSA1LjA1MTU0QzMuODMzMzggNS4zMzI0MiA0LjAwOTM2IDUuNjUzNzYgNC4yMzc0NCA1Ljg4MTg0QzQuNDMyNzEgNi4wNzcxIDQuNzQ5MjkgNi4wNzcxIDQuOTQ0NTUgNS44ODE4NFpNNi45NzcxNiA2LjcxOTg0QzcuMzExODEgNy4zODkxNCA4LjQ4ODA0IDYuNzkxNTkgNy45OTQxMyA2LjE0Nzg4QzcuODY1MTkgNS45Nzk4MyA3LjY4NjU3IDUuOTQ5NCA3LjYyMTQ1IDUuOTQyMDdDNy4yMTIxNyA1Ljg5NjAxIDYuNzYzNDkgNi4yOTI1IDYuOTc3MTYgNi43MTk4NFpNNi45ODc5OCA4LjcyNDYxQzcuMTQwNjYgOS4xMTg4IDcuNTExMjIgOS4zMTg3IDcuOTE5MTUgOS4xNjMzQzguMjc0MzQgOS4wMjc5OSA4LjMzMTg2IDguMzk2ODkgOC4xNzE3NSA4LjA3NDI3QzguMDIzMzEgNy43NzUxNCA3LjYzOTU2IDcuNjc3OTMgNy4zMzc0NyA3Ljc5NDE3QzYuOTg1MTIgNy45Mjk3NiA2Ljg1NjcyIDguMzg3MDggNi45ODU3NiA4LjcxODg5TDYuOTg3OTggOC43MjQ2MVpNMTAuMzg4NSA4Ljg0MDgxQzEwLjc1NzUgOC42NTY2IDExLjQ2MTcgOC44Mjc3MSAxMS40NjE3IDkuMzExOTlDMTEuNDYxNyA5LjcxMjg2IDEwLjk1ODcgMTAuMjE2NSAxMC41NjM0IDEwLjI4MjZDMTAuMTgxMyAxMC4zNDY1IDkuNzA1MTUgOS45NzU4MSA5Ljc2NjQ4IDkuNTc3MThDOS44MTQ0NSA5LjI2NTM5IDEwLjEyMTcgOC45NzQwMSAxMC4zODg1IDguODQwODFaTTcuNTY3MDQgMTAuODQzMkM3LjMzNDYxIDEwLjc1MDIgNy4xNDM1MyAxMC44NjAxIDcuMTE0MzcgMTAuODc2OUw3LjExMjc5IDEwLjg3NzhDNi45MDc4MiAxMC45OTQ5IDYuNzEzODMgMTEuMjQzOSA2LjY3NDcgMTEuNDg0MkM2LjU5MDE4IDEyLjAwMzQgNy4xMzE5OSAxMi4xMjM5IDcuNTI2NjEgMTIuMDk4N0M4LjIwNzQgMTIuMDU1MyA4LjA2NTQ3IDExLjA0MjYgNy41NjcwNCAxMC44NDMyWk00Ljg4MDUgMTAuODkzMkM1LjA2NzQgMTAuNzcyMyA1LjE1NjU4IDEwLjUzNjMgNS4wODI5MyAxMC4zMTUzQzQuOTMwNDYgOS43OTY4NyA0LjMyNDYgOS43MTI1MiAzLjk2NTYxIDEwLjEyOTdDMy43OTMzNiAxMC4zMjk5IDMuODA3NDkgMTAuNjI3NCAzLjk5MjE0IDEwLjgxMDVMMy45OTQ5NSAxMC44MTRMMy45OTc5IDEwLjgxNzZDNC4yMjAyNSAxMS4wOTQyIDQuNjM2MjQgMTEuMTg1NyA0Ljg4MDUgMTAuODkzMlpNMy4wNDY5NSA3LjgxMzE4QzMuMzMxNDcgOC4wOTc3IDMuNjAwNzcgOC4xNTA2NyAzLjk4NDQzIDguMDU4NTlDNC42MDgyNiA3LjkwODg3IDQuMTM4MTQgNi4yNDI5OSAzLjA0NyA2Ljg3Mjk2QzIuNzA5MzkgNy4wNjc4OCAyLjg2NzE2IDcuNjMzMzkgMy4wNDY5NSA3LjgxMzE4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgOS41MDAwNkMxIDEwLjMyODUgMS42NzE1NyAxMS4wMDAxIDIuNSAxMS4wMDAxSDRMNCAxMC4wMDAxSDIuNUMyLjIyMzg2IDEwLjAwMDEgMiA5Ljc3NjIgMiA5LjUwMDA2TDIgMi41MDAwNkMyIDIuMjIzOTIgMi4yMjM4NiAyLjAwMDA2IDIuNSAyLjAwMDA2TDkuNSAyLjAwMDA2QzkuNzc2MTQgMi4wMDAwNiAxMCAyLjIyMzkyIDEwIDIuNTAwMDZWNC4wMDAwMkg1LjVDNC42NzE1OCA0LjAwMDAyIDQgNC42NzE1OSA0IDUuNTAwMDJWMTIuNUM0IDEzLjMyODQgNC42NzE1OCAxNCA1LjUgMTRIMTIuNUMxMy4zMjg0IDE0IDE0IDEzLjMyODQgMTQgMTIuNVY1LjUwMDAyQzE0IDQuNjcxNTkgMTMuMzI4NCA0LjAwMDAyIDEyLjUgNC4wMDAwMkgxMVYyLjUwMDA2QzExIDEuNjcxNjMgMTAuMzI4NCAxLjAwMDA2IDkuNSAxLjAwMDA2SDIuNUMxLjY3MTU3IDEuMDAwMDYgMSAxLjY3MTYzIDEgMi41MDAwNlY5LjUwMDA2Wk01IDUuNTAwMDJDNSA1LjIyMzg4IDUuMjIzODYgNS4wMDAwMiA1LjUgNS4wMDAwMkgxMi41QzEyLjc3NjEgNS4wMDAwMiAxMyA1LjIyMzg4IDEzIDUuNTAwMDJWMTIuNUMxMyAxMi43NzYyIDEyLjc3NjEgMTMgMTIuNSAxM0g1LjVDNS4yMjM4NiAxMyA1IDEyLjc3NjIgNSAxMi41VjUuNTAwMDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxqZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOS44NzczNyAxMkg5LjlIMTEuNUMxMS43NzYxIDEyIDEyIDExLjc3NjEgMTIgMTEuNUMxMiAxMS4yMjM5IDExLjc3NjEgMTEgMTEuNSAxMUg5LjlDOC43NzE2NCAxMSA3Ljk1NTQ1IDEwLjk5OTYgNy4zMTM1MiAxMC45NDcyQzYuNjc3NDQgMTAuODk1MiA2LjI1NjYyIDEwLjc5NDYgNS45MTEwMyAxMC42MTg1QzUuMjUyNDcgMTAuMjgzIDQuNzE3MDMgOS43NDc1MyA0LjM4MTQ4IDkuMDg4OTdDNC4yMDUzOSA4Ljc0MzM4IDQuMTA0ODEgOC4zMjI1NiA0LjA1Mjg0IDcuNjg2NDhDNC4wMDAzOSA3LjA0NDU1IDQgNi4yMjgzNiA0IDUuMVYzLjVDNCAzLjIyMzg2IDMuNzc2MTQgMyAzLjUgM0MzLjIyMzg2IDMgMyAzLjIyMzg2IDMgMy41VjUuMVY1LjEyMjYzQzMgNi4yMjM1OSAzIDcuMDgwNTIgMy4wNTYxNiA3Ljc2NzkxQzMuMTEzMTggOC40NjU4NCAzLjIzMDU4IDkuMDMyOSAzLjQ5MDQ3IDkuNTQyOTZDMy45MjE5IDEwLjM4OTcgNC42MTAzMSAxMS4wNzgxIDUuNDU3MDQgMTEuNTA5NUM1Ljk2NzEgMTEuNzY5NCA2LjUzNDE2IDExLjg4NjggNy4yMzIwOSAxMS45NDM4QzcuOTE5NDggMTIgOC43NzY0MSAxMiA5Ljg3NzM3IDEyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sa2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuMTIyNjMgMTJINS4xSDMuNUMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVDMyAxMS4yMjM5IDMuMjIzODYgMTEgMy41IDExSDUuMUM2LjIyODM2IDExIDcuMDQ0NTUgMTAuOTk5NiA3LjY4NjQ4IDEwLjk0NzJDOC4zMjI1NiAxMC44OTUyIDguNzQzMzggMTAuNzk0NiA5LjA4ODk3IDEwLjYxODVDOS43NDc1MyAxMC4yODMgMTAuMjgzIDkuNzQ3NTMgMTAuNjE4NSA5LjA4ODk3QzEwLjc5NDYgOC43NDMzOCAxMC44OTUyIDguMzIyNTYgMTAuOTQ3MiA3LjY4NjQ4QzEwLjk5OTYgNy4wNDQ1NSAxMSA2LjIyODM2IDExIDUuMVYzLjVDMTEgMy4yMjM4NiAxMS4yMjM5IDMgMTEuNSAzQzExLjc3NjEgMyAxMiAzLjIyMzg2IDEyIDMuNVY1LjFWNS4xMjI2M0MxMiA2LjIyMzU5IDEyIDcuMDgwNTIgMTEuOTQzOCA3Ljc2NzkxQzExLjg4NjggOC40NjU4NCAxMS43Njk0IDkuMDMyOSAxMS41MDk1IDkuNTQyOTZDMTEuMDc4MSAxMC4zODk3IDEwLjM4OTcgMTEuMDc4MSA5LjU0Mjk2IDExLjUwOTVDOS4wMzI5IDExLjc2OTQgOC40NjU4NCAxMS44ODY4IDcuNzY3OTEgMTEuOTQzOEM3LjA4MDUyIDEyIDYuMjIzNTkgMTIgNS4xMjI2MyAxMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFJlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05Ljg3NzM3IDNIOS45SDExLjVDMTEuNzc2MSAzIDEyIDMuMjIzODYgMTIgMy41QzEyIDMuNzc2MTQgMTEuNzc2MSA0IDExLjUgNEg5LjlDOC43NzE2NCA0IDcuOTU1NDUgNC4wMDAzOSA3LjMxMzUyIDQuMDUyODRDNi42Nzc0NCA0LjEwNDgxIDYuMjU2NjIgNC4yMDUzOSA1LjkxMTAzIDQuMzgxNDhDNS4yNTI0NyA0LjcxNzAzIDQuNzE3MDMgNS4yNTI0NyA0LjM4MTQ4IDUuOTExMDNDNC4yMDUzOSA2LjI1NjYyIDQuMTA0ODEgNi42Nzc0NCA0LjA1Mjg0IDcuMzEzNTJDNC4wMDAzOSA3Ljk1NTQ1IDQgOC43NzE2NCA0IDkuOVYxMS41QzQgMTEuNzc2MSAzLjc3NjE0IDEyIDMuNSAxMkMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVWOS45VjkuODc3MzdDMyA4Ljc3NjQxIDMgNy45MTk0OCAzLjA1NjE2IDcuMjMyMDlDMy4xMTMxOCA2LjUzNDE2IDMuMjMwNTggNS45NjcxIDMuNDkwNDcgNS40NTcwNEMzLjkyMTkgNC42MTAzMSA0LjYxMDMxIDMuOTIxOSA1LjQ1NzA0IDMuNDkwNDdDNS45NjcxIDMuMjMwNTggNi41MzQxNiAzLjExMzE4IDcuMjMyMDkgMy4wNTYxNkM3LjkxOTQ4IDMgOC43NzY0MSAzIDkuODc3MzcgM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFBlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjEyMjYzIDNINS4xSDMuNUMzLjIyMzg2IDMgMyAzLjIyMzg2IDMgMy41QzMgMy43NzYxNCAzLjIyMzg2IDQgMy41IDRINS4xQzYuMjI4MzYgNCA3LjA0NDU1IDQuMDAwMzkgNy42ODY0OCA0LjA1Mjg0QzguMzIyNTYgNC4xMDQ4MSA4Ljc0MzM4IDQuMjA1MzkgOS4wODg5NyA0LjM4MTQ4QzkuNzQ3NTMgNC43MTcwMyAxMC4yODMgNS4yNTI0NyAxMC42MTg1IDUuOTExMDNDMTAuNzk0NiA2LjI1NjYyIDEwLjg5NTIgNi42Nzc0NCAxMC45NDcyIDcuMzEzNTJDMTAuOTk5NiA3Ljk1NTQ1IDExIDguNzcxNjQgMTEgOS45VjExLjVDMTEgMTEuNzc2MSAxMS4yMjM5IDEyIDExLjUgMTJDMTEuNzc2MSAxMiAxMiAxMS43NzYxIDEyIDExLjVWOS45VjkuODc3MzdDMTIgOC43NzY0MSAxMiA3LjkxOTQ4IDExLjk0MzggNy4yMzIwOUMxMS44ODY4IDYuNTM0MTYgMTEuNzY5NCA1Ljk2NzEgMTEuNTA5NSA1LjQ1NzA0QzExLjA3ODEgNC42MTAzMSAxMC4zODk3IDMuOTIxOSA5LjU0Mjk2IDMuNDkwNDdDOS4wMzI5IDMuMjMwNTggOC40NjU4NCAzLjExMzE4IDcuNzY3OTEgMy4wNTYxNkM3LjA4MDUyIDMgNi4yMjM1OSAzIDUuMTIyNjMgM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEFlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMC4xIDNDMTAuNTI4MyAzIDEwLjgxOTQgMy4wMDAzOSAxMS4wNDQ1IDMuMDE4NzhDMTEuMjYzNyAzLjAzNjY5IDExLjM3NTggMy4wNjkxNSAxMS40NTQgMy4xMDg5OUMxMS42NDIyIDMuMjA0ODcgMTEuNzk1MSAzLjM1Nzg1IDExLjg5MSAzLjU0NjAxQzExLjkzMDkgMy42MjQyMSAxMS45NjMzIDMuNzM2MzEgMTEuOTgxMiAzLjk1NTUyQzExLjk5OTYgNC4xODA1NiAxMiA0LjQ3MTcxIDEyIDQuOVY1LjVDMTIgNS43NzYxNCAxMi4yMjM5IDYgMTIuNSA2QzEyLjc3NjEgNiAxMyA1Ljc3NjE0IDEzIDUuNVY0Ljg3OTM1QzEzIDQuNDc2ODcgMTMgNC4xNDQ2OSAxMi45Nzc5IDMuODc0MDlDMTIuOTU0OSAzLjU5MzA0IDEyLjkwNTcgMy4zMzQ2OSAxMi43ODIgMy4wOTIwMkMxMi41OTAzIDIuNzE1NyAxMi4yODQzIDIuNDA5NzMgMTEuOTA4IDIuMjE3OTlDMTEuNjY1MyAyLjA5NDM0IDExLjQwNyAyLjA0NTA2IDExLjEyNTkgMi4wMjIxQzEwLjg1NTMgMS45OTk5OSAxMC41MjMxIDEuOTk5OTkgMTAuMTIwNyAySDEwLjEyMDZIMTAuMUg5LjVDOS4yMjM4NiAyIDkgMi4yMjM4NiA5IDIuNUM5IDIuNzc2MTQgOS4yMjM4NiAzIDkuNSAzSDEwLjFaTTUuNSAySDQuODc5MzVINC44NzkzNEM0LjQ3Njg2IDEuOTk5OTkgNC4xNDQ2OCAxLjk5OTk5IDMuODc0MDkgMi4wMjIxQzMuNTkzMDQgMi4wNDUwNiAzLjMzNDY5IDIuMDk0MzQgMy4wOTIwMiAyLjIxNzk5QzIuNzE1NyAyLjQwOTczIDIuNDA5NzMgMi43MTU3IDIuMjE3OTkgMy4wOTIwMkMyLjA5NDM0IDMuMzM0NjkgMi4wNDUwNiAzLjU5MzA0IDIuMDIyMSAzLjg3NDA5QzEuOTk5OTkgNC4xNDQ2OCAxLjk5OTk5IDQuNDc2ODYgMiA0Ljg3OTM0VjQuODc5MzVWNS41QzIgNS43NzYxNCAyLjIyMzg2IDYgMi41IDZDMi43NzYxNCA2IDMgNS43NzYxNCAzIDUuNVY0LjlDMyA0LjQ3MTcxIDMuMDAwMzkgNC4xODA1NiAzLjAxODc4IDMuOTU1NTJDMy4wMzY2OSAzLjczNjMxIDMuMDY5MTUgMy42MjQyMSAzLjEwODk5IDMuNTQ2MDFDMy4yMDQ4NyAzLjM1Nzg1IDMuMzU3ODUgMy4yMDQ4NyAzLjU0NjAxIDMuMTA4OTlDMy42MjQyMSAzLjA2OTE1IDMuNzM2MzEgMy4wMzY2OSAzLjk1NTUyIDMuMDE4NzhDNC4xODA1NiAzLjAwMDM5IDQuNDcxNzEgMyA0LjkgM0g1LjVDNS43NzYxNCAzIDYgMi43NzYxNCA2IDIuNUM2IDIuMjIzODYgNS43NzYxNCAyIDUuNSAyWk0xMyA5LjVDMTMgOS4yMjM4NiAxMi43NzYxIDkgMTIuNSA5QzEyLjIyMzkgOSAxMiA5LjIyMzg2IDEyIDkuNVYxMC4xQzEyIDEwLjUyODMgMTEuOTk5NiAxMC44MTk0IDExLjk4MTIgMTEuMDQ0NUMxMS45NjMzIDExLjI2MzcgMTEuOTMwOSAxMS4zNzU4IDExLjg5MSAxMS40NTRDMTEuNzk1MSAxMS42NDIyIDExLjY0MjIgMTEuNzk1MSAxMS40NTQgMTEuODkxQzExLjM3NTggMTEuOTMwOSAxMS4yNjM3IDExLjk2MzMgMTEuMDQ0NSAxMS45ODEyQzEwLjgxOTQgMTEuOTk5NiAxMC41MjgzIDEyIDEwLjEgMTJIOS41QzkuMjIzODYgMTIgOSAxMi4yMjM5IDkgMTIuNUM5IDEyLjc3NjEgOS4yMjM4NiAxMyA5LjUgMTNIMTAuMTIwNkMxMC41MjMxIDEzIDEwLjg1NTMgMTMgMTEuMTI1OSAxMi45Nzc5QzExLjQwNyAxMi45NTQ5IDExLjY2NTMgMTIuOTA1NyAxMS45MDggMTIuNzgyQzEyLjI4NDMgMTIuNTkwMyAxMi41OTAzIDEyLjI4NDMgMTIuNzgyIDExLjkwOEMxMi45MDU3IDExLjY2NTMgMTIuOTU0OSAxMS40MDcgMTIuOTc3OSAxMS4xMjU5QzEzIDEwLjg1NTMgMTMgMTAuNTIzMSAxMyAxMC4xMjA2VjkuNVpNMi41IDlDMi43NzYxNCA5IDMgOS4yMjM4NiAzIDkuNVYxMC4xQzMgMTAuNTI4MyAzLjAwMDM5IDEwLjgxOTQgMy4wMTg3OCAxMS4wNDQ1QzMuMDM2NjkgMTEuMjYzNyAzLjA2OTE1IDExLjM3NTggMy4xMDg5OSAxMS40NTRDMy4yMDQ4NyAxMS42NDIyIDMuMzU3ODUgMTEuNzk1MSAzLjU0NjAxIDExLjg5MUMzLjYyNDIxIDExLjkzMDkgMy43MzYzMSAxMS45NjMzIDMuOTU1NTIgMTEuOTgxMkM0LjE4MDU2IDExLjk5OTYgNC40NzE3MSAxMiA0LjkgMTJINS41QzUuNzc2MTQgMTIgNiAxMi4yMjM5IDYgMTIuNUM2IDEyLjc3NjEgNS43NzYxNCAxMyA1LjUgMTNINC44NzkzNUM0LjQ3Njg3IDEzIDQuMTQ0NjkgMTMgMy44NzQwOSAxMi45Nzc5QzMuNTkzMDQgMTIuOTU0OSAzLjMzNDY5IDEyLjkwNTcgMy4wOTIwMiAxMi43ODJDMi43MTU3IDEyLjU5MDMgMi40MDk3MyAxMi4yODQzIDIuMjE3OTkgMTEuOTA4QzIuMDk0MzQgMTEuNjY1MyAyLjA0NTA2IDExLjQwNyAyLjAyMjEgMTEuMTI1OUMxLjk5OTk5IDEwLjg1NTMgMS45OTk5OSAxMC41MjMxIDIgMTAuMTIwN1YxMC4xMjA2VjEwLjFWOS41QzIgOS4yMjM4NiAyLjIyMzg2IDkgMi41IDlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxJZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMTUgNy40OTk5OEMxMy4xNSA0LjY2NDU4IDEwLjk0MDIgMS44NDk5OCA3LjUwMDAyIDEuODQ5OThDNC43MjE3IDEuODQ5OTggMy4zNDg1MSAzLjkwNjM2IDIuNzYzMzYgNC45OTk5N0g0LjVDNC43NzYxNCA0Ljk5OTk3IDUgNS4yMjM4MyA1IDUuNDk5OTdDNSA1Ljc3NjExIDQuNzc2MTQgNS45OTk5NyA0LjUgNS45OTk5N0gxLjVDMS4yMjM4NiA1Ljk5OTk3IDEgNS43NzYxMSAxIDUuNDk5OTdWMi40OTk5N0MxIDIuMjIzODMgMS4yMjM4NiAxLjk5OTk3IDEuNSAxLjk5OTk3QzEuNzc2MTQgMS45OTk5NyAyIDIuMjIzODMgMiAyLjQ5OTk3VjQuMzEzMThDMi43MDQ1MyAzLjA3MTI2IDQuMzM0MDYgMC44NDk5NzYgNy41MDAwMiAwLjg0OTk3NkMxMS41NjI4IDAuODQ5OTc2IDE0LjE1IDQuMTg1MzcgMTQuMTUgNy40OTk5OEMxNC4xNSAxMC44MTQ2IDExLjU2MjggMTQuMTUgNy41MDAwMiAxNC4xNUM1LjU1NjE4IDE0LjE1IDMuOTM3NzggMTMuMzgwOCAyLjc4NTQ4IDEyLjIwODRDMi4xNjg1MiAxMS41ODA2IDEuNjg2NjggMTAuODM5IDEuMzU4MTYgMTAuMDQwN0MxLjI1MzA2IDkuNzg1MzYgMS4zNzQ4OCA5LjQ5MzE1IDEuNjMwMjQgOS4zODgwNkMxLjg4NTYgOS4yODI5NiAyLjE3NzgxIDkuNDA0NzggMi4yODI5IDkuNjYwMTRDMi41NjM3NCAxMC4zNDI1IDIuOTc0OTUgMTAuOTc0NSAzLjQ5ODcgMTEuNTA3NEM0LjQ3MDUyIDEyLjQ5NjMgNS44MzQ5NiAxMy4xNSA3LjUwMDAyIDEzLjE1QzEwLjk0MDIgMTMuMTUgMTMuMTUgMTAuMzM1NCAxMy4xNSA3LjQ5OTk4Wk03IDEwVjUuMDAwMDFIOFYxMEg3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjE1IDcuNDk5OThDMTMuMTUgNC42NjQ1OCAxMC45NDAyIDEuODQ5OTggNy41MDAwMiAxLjg0OTk4QzQuNzIxNjcgMS44NDk5OCAzLjM0ODQ5IDMuOTA2NCAyLjc2MzM1IDVINC41QzQuNzc2MTQgNSA1IDUuMjIzODYgNSA1LjVDNSA1Ljc3NjE0IDQuNzc2MTQgNiA0LjUgNkgxLjVDMS4yMjM4NiA2IDEgNS43NzYxNCAxIDUuNVYyLjVDMSAyLjIyMzg2IDEuMjIzODYgMiAxLjUgMkMxLjc3NjE0IDIgMiAyLjIyMzg2IDIgMi41VjQuMzEzMThDMi43MDQ1MyAzLjA3MTI2IDQuMzM0MDYgMC44NDk5NzYgNy41MDAwMiAwLjg0OTk3NkMxMS41NjI4IDAuODQ5OTc2IDE0LjE1IDQuMTg1MzcgMTQuMTUgNy40OTk5OEMxNC4xNSAxMC44MTQ2IDExLjU2MjggMTQuMTUgNy41MDAwMiAxNC4xNUM1LjU1NjE4IDE0LjE1IDMuOTM3NzggMTMuMzgwOCAyLjc4NTQ4IDEyLjIwODRDMi4xNjg1MiAxMS41ODA2IDEuNjg2NjggMTAuODM5IDEuMzU4MTYgMTAuMDQwN0MxLjI1MzA2IDkuNzg1MzYgMS4zNzQ4OCA5LjQ5MzE1IDEuNjMwMjQgOS4zODgwNkMxLjg4NTYgOS4yODI5NiAyLjE3NzgxIDkuNDA0NzggMi4yODI5IDkuNjYwMTRDMi41NjM3NCAxMC4zNDI1IDIuOTc0OTUgMTAuOTc0NSAzLjQ5ODcgMTEuNTA3NEM0LjQ3MDUyIDEyLjQ5NjMgNS44MzQ5NiAxMy4xNSA3LjUwMDAyIDEzLjE1QzEwLjk0MDIgMTMuMTUgMTMuMTUgMTAuMzM1NCAxMy4xNSA3LjQ5OTk4Wk03LjUgNC4wMDAwMUM3Ljc3NjE0IDQuMDAwMDEgOCA0LjIyMzg3IDggNC41MDAwMVY3LjI5MjkxTDkuODUzNTUgOS4xNDY0NkMxMC4wNDg4IDkuMzQxNzIgMTAuMDQ4OCA5LjY1ODMxIDkuODUzNTUgOS44NTM1N0M5LjY1ODI5IDEwLjA0ODggOS4zNDE3MSAxMC4wNDg4IDkuMTQ2NDUgOS44NTM1N0w3LjE0NjQ1IDcuODUzNTdDNy4wNTI2OCA3Ljc1OTggNyA3LjYzMjYyIDcgNy41MDAwMVY0LjUwMDAxQzcgNC4yMjM4NyA3LjIyMzg2IDQuMDAwMDEgNy41IDQuMDAwMDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxIZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy41IDguMDA2ODRlLTA3QzMuNzc2MTQgNy44ODYxNGUtMDcgNCAwLjIyMzg1OSA0IDAuNTAwMDAxTDQgMy4wMDAwNkwxMS41IDMuMDAwMDZDMTEuNzc2MSAzLjAwMDA2IDEyIDMuMjIzOTIgMTIgMy41MDAwNkwxMiAxMS4wMDAxTDE0LjUgMTFDMTQuNzc2MSAxMSAxNSAxMS4yMjM4IDE1IDExLjVDMTUgMTEuNzc2MSAxNC43NzYyIDEyIDE0LjUgMTJMMTIgMTIuMDAwMUwxMiAxNC41QzEyIDE0Ljc3NjEgMTEuNzc2MSAxNSAxMS41IDE1QzExLjIyMzkgMTUgMTEgMTQuNzc2MSAxMSAxNC41TDExIDEyLjAwMDFMMy41IDEyLjAwMDFDMy4yMjM4NiAxMi4wMDAxIDMgMTEuNzc2MiAzIDExLjUwMDFMMyA0LjAwMDA1TDAuNDk5OTg5IDRDMC4yMjM4NDcgNCAtNi4xMDU0MWUtMDYgMy43NzYxMyAtNS4wMjU3NmUtMDcgMy40OTk5OUM1LjEzMDA2ZS0wNiAzLjIyMzg1IDAuMjIzODY3IDMgMC41MDAwMSAzTDMgMy4wMDAwNUwzIDAuNTAwMDAxQzMgMC4yMjM4NTkgMy4yMjM4NiA4LjEyNzU1ZS0wNyAzLjUgOC4wMDY4NGUtMDdaTTQgNC4wMDAwNkw0IDExLjAwMDFMMTEgMTEuMDAwMUwxMSA0LjAwMDA2TDQgNC4wMDAwNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFZlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi44NTM2IDIuODUzNTVDMTMuMDQ4OCAyLjY1ODI5IDEzLjA0ODggMi4zNDE3MSAxMi44NTM2IDIuMTQ2NDVDMTIuNjU4MyAxLjk1MTE4IDEyLjM0MTcgMS45NTExOCAxMi4xNDY0IDIuMTQ2NDVMNy41IDYuNzkyODlMMi44NTM1NSAyLjE0NjQ1QzIuNjU4MjkgMS45NTExOCAyLjM0MTcxIDEuOTUxMTggMi4xNDY0NSAyLjE0NjQ1QzEuOTUxMTggMi4zNDE3MSAxLjk1MTE4IDIuNjU4MjkgMi4xNDY0NSAyLjg1MzU1TDYuNzkyODkgNy41TDIuMTQ2NDUgMTIuMTQ2NEMxLjk1MTE4IDEyLjM0MTcgMS45NTExOCAxMi42NTgzIDIuMTQ2NDUgMTIuODUzNkMyLjM0MTcxIDEzLjA0ODggMi42NTgyOSAxMy4wNDg4IDIuODUzNTUgMTIuODUzNkw3LjUgOC4yMDcxMUwxMi4xNDY0IDEyLjg1MzZDMTIuMzQxNyAxMy4wNDg4IDEyLjY1ODMgMTMuMDQ4OCAxMi44NTM2IDEyLjg1MzZDMTMuMDQ4OCAxMi42NTgzIDEzLjA0ODggMTIuMzQxNyAxMi44NTM2IDEyLjE0NjRMOC4yMDcxMSA3LjVMMTIuODUzNiAyLjg1MzU1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjc4MTYgNC4wMzE1N0MxMi4wMDYyIDMuODA3MDIgMTIuMDA2MiAzLjQ0Mjk1IDExLjc4MTYgMy4yMTg0QzExLjU1NzEgMi45OTM4NSAxMS4xOTMgMi45OTM4NSAxMC45Njg1IDMuMjE4NEw3LjUwMDA1IDYuNjg2ODJMNC4wMzE2NCAzLjIxODRDMy44MDcwOCAyLjk5Mzg1IDMuNDQzMDEgMi45OTM4NSAzLjIxODQ2IDMuMjE4NEMyLjk5MzkxIDMuNDQyOTUgMi45OTM5MSAzLjgwNzAyIDMuMjE4NDYgNC4wMzE1N0w2LjY4Njg4IDcuNDk5OTlMMy4yMTg0NiAxMC45Njg0QzIuOTkzOTEgMTEuMTkzIDIuOTkzOTEgMTEuNTU3IDMuMjE4NDYgMTEuNzgxNkMzLjQ0MzAxIDEyLjAwNjEgMy44MDcwOCAxMi4wMDYxIDQuMDMxNjQgMTEuNzgxNkw3LjUwMDA1IDguMzEzMTZMMTAuOTY4NSAxMS43ODE2QzExLjE5MyAxMi4wMDYxIDExLjU1NzEgMTIuMDA2MSAxMS43ODE2IDExLjc4MTZDMTIuMDA2MiAxMS41NTcgMTIuMDA2MiAxMS4xOTMgMTEuNzgxNiAxMC45Njg0TDguMzEzMjIgNy40OTk5OUwxMS43ODE2IDQuMDMxNTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxEZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwNzUgNy40OTk4OEMwLjg3NzA3NSAzLjg0MjE5IDMuODQyMjIgMC44NzcwNDUgNy40OTk5MSAwLjg3NzA0NUMxMS4xNTc2IDAuODc3MDQ1IDE0LjEyMjcgMy44NDIxOSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAxMS4xNTc1IDExLjE1NzYgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMy44NDIyMiAxNC4xMjI3IDAuODc3MDc1IDExLjE1NzUgMC44NzcwNzUgNy40OTk4OFpNNy40OTk5MSAxLjgyNzA0QzQuMzY2ODkgMS44MjcwNCAxLjgyNzA4IDQuMzY2ODYgMS44MjcwOCA3LjQ5OTg4QzEuODI3MDggMTAuNjMyOSA0LjM2Njg5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzEwLjYzMjkgMTMuMTcyNyAxMy4xNzI3IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNC4zNjY4NiAxMC42MzI5IDEuODI3MDQgNy40OTk5MSAxLjgyNzA0Wk05Ljg1MzU4IDUuMTQ2NDRDMTAuMDQ4OCA1LjM0MTcgMTAuMDQ4OCA1LjY1ODI5IDkuODUzNTggNS44NTM1NUw4LjIwNzEzIDcuNDk5OTlMOS44NTM1OCA5LjE0NjQ0QzEwLjA0ODggOS4zNDE3IDEwLjA0ODggOS42NTgyOSA5Ljg1MzU4IDkuODUzNTVDOS42NTgzMiAxMC4wNDg4IDkuMzQxNzMgMTAuMDQ4OCA5LjE0NjQ3IDkuODUzNTVMNy41MDAwMiA4LjIwNzFMNS44NTM1OCA5Ljg1MzU1QzUuNjU4MzIgMTAuMDQ4OCA1LjM0MTczIDEwLjA0ODggNS4xNDY0NyA5Ljg1MzU1QzQuOTUxMjEgOS42NTgyOSA0Ljk1MTIxIDkuMzQxNyA1LjE0NjQ3IDkuMTQ2NDRMNi43OTI5MiA3LjQ5OTk5TDUuMTQ2NDcgNS44NTM1NUM0Ljk1MTIxIDUuNjU4MjkgNC45NTEyMSA1LjM0MTcgNS4xNDY0NyA1LjE0NjQ0QzUuMzQxNzMgNC45NTExOCA1LjY1ODMyIDQuOTUxMTggNS44NTM1OCA1LjE0NjQ0TDcuNTAwMDIgNi43OTI4OUw5LjE0NjQ3IDUuMTQ2NDRDOS4zNDE3MyA0Ljk1MTE4IDkuNjU4MzIgNC45NTExOCA5Ljg1MzU4IDUuMTQ2NDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxaZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwNzUgNy41MDIwN0MwLjg3NzA3NSAzLjg0MzE5IDMuODQzMTkgMC44NzcwNzUgNy41MDIwOCAwLjg3NzA3NUMxMS4xNjA5IDAuODc3MDc1IDE0LjEyNzEgMy44NDMxOSAxNC4xMjcxIDcuNTAyMDdDMTQuMTI3MSAxMS4xNjA5IDExLjE2MDkgMTQuMTI3MSA3LjUwMjA4IDE0LjEyNzFDMy44NDMxOSAxNC4xMjcxIDAuODc3MDc1IDExLjE2MDkgMC44NzcwNzUgNy41MDIwN1pNMS44NDg5OCA3LjAwMDAzQzIuMDg4NiA0LjI2NjM5IDQuMjY2MzkgMi4wODg2IDcuMDAwMDMgMS44NDg5OFY0LjUwMDAzQzcuMDAwMDMgNC43NzYxNyA3LjIyMzg4IDUuMDAwMDMgNy41MDAwMyA1LjAwMDAzQzcuNzc2MTcgNS4wMDAwMyA4LjAwMDAzIDQuNzc2MTcgOC4wMDAwMyA0LjUwMDAzVjEuODQ4NjJDMTAuNzM1NiAyLjA4NjQzIDEyLjkxNTQgNC4yNjUwMiAxMy4xNTUyIDcuMDAwMDNIMTAuNUMxMC4yMjM5IDcuMDAwMDMgMTAgNy4yMjM4OCAxMCA3LjUwMDAzQzEwIDcuNzc2MTcgMTAuMjIzOSA4LjAwMDAzIDEwLjUgOC4wMDAwM0gxMy4xNTU1QzEyLjkxNzYgMTAuNzM2OSAxMC43MzY5IDEyLjkxNzYgOC4wMDAwMyAxMy4xNTU1VjEwLjVDOC4wMDAwMyAxMC4yMjM5IDcuNzc2MTcgMTAgNy41MDAwMyAxMEM3LjIyMzg4IDEwIDcuMDAwMDMgMTAuMjIzOSA3LjAwMDAzIDEwLjVWMTMuMTU1MkM0LjI2NTAyIDEyLjkxNTQgMi4wODY0MyAxMC43MzU2IDEuODQ4NjIgOC4wMDAwM0g0LjUwMDAzQzQuNzc2MTcgOC4wMDAwMyA1LjAwMDAzIDcuNzc2MTcgNS4wMDAwMyA3LjUwMDAzQzUuMDAwMDMgNy4yMjM4OCA0Ljc3NjE3IDcuMDAwMDMgNC41MDAwMyA3LjAwMDAzSDEuODQ4OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSwkZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDBDNy43NzYxNCAwIDggMC4yMjM4NTggOCAwLjVWMS44MDY4N0MxMC42OTIyIDIuMDkzNSAxMi44MTY3IDQuMjgwMTIgMTMuMDA2OCA3SDE0LjVDMTQuNzc2MSA3IDE1IDcuMjIzODYgMTUgNy41QzE1IDcuNzc2MTQgMTQuNzc2MSA4IDE0LjUgOEgxMi45ODg4QzEyLjcwOTQgMTAuNjI0NCAxMC42MjQ0IDEyLjcwOTQgOCAxMi45ODg4VjE0LjVDOCAxNC43NzYxIDcuNzc2MTQgMTUgNy41IDE1QzcuMjIzODYgMTUgNyAxNC43NzYxIDcgMTQuNVYxMy4wMDY4QzQuMjgwMTIgMTIuODE2NyAyLjA5MzUgMTAuNjkyMiAxLjgwNjg3IDhIMC41QzAuMjIzODU4IDggMCA3Ljc3NjE0IDAgNy41QzAgNy4yMjM4NiAwLjIyMzg1OCA3IDAuNSA3SDEuNzg4ODZDMS45ODM3NiA0LjIxMTY2IDQuMjExNjYgMS45ODM3NiA3IDEuNzg4ODZWMC41QzcgMC4yMjM4NTggNy4yMjM4NiAwIDcuNSAwWk04IDEyLjAzMjJWOS41QzggOS4yMjM4NiA3Ljc3NjE0IDkgNy41IDlDNy4yMjM4NiA5IDcgOS4yMjM4NiA3IDkuNVYxMi4wNTRDNC44MDUxNyAxMS44Njg5IDMuMDQyMjIgMTAuMTY2OCAyLjc2MzQ0IDhINS41QzUuNzc2MTQgOCA2IDcuNzc2MTQgNiA3LjVDNiA3LjIyMzg2IDUuNzc2MTQgNyA1LjUgN0gyLjc0MTdDMi45MzI1MiA0LjczNjYyIDQuNzM2NjIgMi45MzI1MiA3IDIuNzQxN1Y1LjVDNyA1Ljc3NjE0IDcuMjIzODYgNiA3LjUgNkM3Ljc3NjE0IDYgOCA1Ljc3NjE0IDggNS41VjIuNzYzNDRDMTAuMTY2OCAzLjA0MjIyIDExLjg2ODkgNC44MDUxNyAxMi4wNTQgN0g5LjVDOS4yMjM4NiA3IDkgNy4yMjM4NiA5IDcuNUM5IDcuNzc2MTQgOS4yMjM4NiA4IDkuNSA4SDEyLjAzMjJDMTEuNzYyMSAxMC4wOTkxIDEwLjA5OTEgMTEuNzYyMSA4IDEyLjAzMjJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxGZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC42MDkxMyAwLjA2MzQyODdDNC4zOTA4MiAwLjAwODg1MDUgNC4xNjU3NSAwLjEyMzkzIDQuMDgyMTggMC4zMzI4NjdMMy4xNTM4IDIuNjUzOEwwLjgzMjg2NiAzLjU4MjE4QzAuNzAyODg0IDMuNjM0MTcgMC42MDQ1MDQgMy43NDM3IDAuNTY2NzA1IDMuODc4NDlDMC41Mjg5MDYgNC4wMTMyOSAwLjU1NTk5NCA0LjE1OCAwLjYzOTk5MiA0LjI2OTk5TDIuMDExNDggNi4wOTg2NEwxLjA2MzQzIDkuODkwODVDMS4wMDk0NCAxMC4xMDY4IDEuMTIxNDUgMTAuMzI5OCAxLjMyNjkxIDEwLjQxNTRMNC4yMDExNSAxMS42MTNMNS42MjU1NyAxMy43NDk2QzUuNzM0MTIgMTMuOTEyNCA1LjkzNTQ1IDEzLjk4NjQgNi4xMjM2MiAxMy45MzI3TDkuNjIzNjIgMTIuOTMyN0M5LjYyOTg4IDEyLjkzMDkgOS42MzYxMSAxMi45MjkgOS42NDIyOSAxMi45MjY5TDEyLjY0MjMgMTEuOTI2OUMxMi43OTIzIDExLjg3NjkgMTIuOTA1IDExLjc1MTkgMTIuOTM5MyAxMS41OTc2TDEzLjkzOTMgNy4wOTc2MUMxMy45Nzc2IDYuOTI1MDYgMTMuOTExNCA2Ljc0NjA1IDEzLjc3IDYuNjM5OTlMMTEuOTUgNS4yNzQ5OVYyLjk5OTk5QzExLjk1IDIuODI5NTUgMTEuODUzNyAyLjY3MzczIDExLjcwMTIgMi41OTc1TDguNzAxMjQgMS4wOTc1QzguNjcxODcgMS4wODI4MiA4LjY0MDk4IDEuMDcxMzkgOC42MDkxMyAxLjA2MzQzTDQuNjA5MTMgMC4wNjM0Mjg3Wk0xMS40MzIzIDYuMDExNzNMMTIuNzc0OCA3LjAxODU4TDEwLjIxMTkgOS4xNTQyOUMxMC4xNDc2IDkuMjA3ODYgMTAuMDk5NSA5LjI3ODMgMTAuMDczMSA5LjM1NzY5TDkuMjUzODIgMTEuODE1NUw3LjczODQ5IDEwLjg2ODRDNy41Mjc3NCAxMC43MzY3IDcuMjUwMTEgMTAuODAwNyA3LjExODM5IDExLjAxMTVDNi45ODY2NyAxMS4yMjIyIDcuMDUwNzQgMTEuNDk5OSA3LjI2MTQ5IDExLjYzMTZMOC40MDM0MSAxMi4zNDUzTDYuMTkyMjEgMTIuOTc3MUw0Ljg3NDQxIDExLjAwMDRDNC44MjUxMyAxMC45MjY1IDQuNzU1MDggMTAuODY4OCA0LjY3MzA3IDEwLjgzNDZMMi4wMzA0NiA5LjczMzUyTDIuODUxMzQgNi40NDk5OUg0Ljk5OTk5QzUuMjQ4NTIgNi40NDk5OSA1LjQ0OTk5IDYuMjQ4NTIgNS40NDk5OSA1Ljk5OTk5QzUuNDQ5OTkgNS43NTE0NiA1LjI0ODUyIDUuNTQ5OTkgNC45OTk5OSA1LjU0OTk5SDIuNzI0OTlMMS43MTIzIDQuMTk5NzRMMy41MTQwNyAzLjQ3OTAzTDYuMzU3NjkgNC40MjY5QzYuNTM2NTUgNC40ODY1MiA2LjczMzYxIDQuNDI4MzIgNi44NTEzOCA0LjI4MTExTDguNjI0MTMgMi4wNjUxOEwxMS4wNSAzLjI3ODExVjUuMTk1MzNMOC44MzI4NyA2LjA4MjE4QzguNzA5OTYgNi4xMzEzNCA4LjYxNDk0IDYuMjMyMTIgOC41NzMwOCA2LjM1NzY5TDguMDczMDggNy44NTc2OUM3Ljk5NDQ5IDguMDkzNDYgOC4xMjE5MSA4LjM0ODMxIDguMzU3NjkgOC40MjY5QzguNTkzNDYgOC41MDU0OSA4Ljg0ODMxIDguMzc4MDcgOC45MjY5IDguMTQyMjlMOS4zNjA5IDYuODQwMjlMMTEuNDMyMyA2LjAxMTczWk03LjcxMDUyIDEuNzY2NDhMNi4zNDQ2MiAzLjQ3Mzg2TDQuMDk1MDUgMi43MjRMNC43NzE5MiAxLjAzMTgzTDcuNzEwNTIgMS43NjY0OFpNMTAuMjExNSAxMS43ODg1TDEyLjExNiAxMS4xNTM3TDEyLjc3NDUgOC4xOTAzNEwxMC44ODY0IDkuNzYzNzRMMTAuMjExNSAxMS43ODg1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMjg4NTYgMC43OTY5MDhDNy40MjI1OCAwLjczNDM2NCA3LjU3NzQyIDAuNzM0MzY0IDcuNzExNDQgMC43OTY5MDhMMTMuNzExNCAzLjU5NjkxQzEzLjg4NzUgMy42NzkwNiAxNCAzLjg1NTc0IDE0IDQuMDVWMTAuOTVDMTQgMTEuMTQ0MyAxMy44ODc1IDExLjMyMDkgMTMuNzExNCAxMS40MDMxTDcuNzExNDQgMTQuMjAzMUM3LjU3NzQyIDE0LjI2NTYgNy40MjI1OCAxNC4yNjU2IDcuMjg4NTYgMTQuMjAzMUwxLjI4ODU2IDExLjQwMzFDMS4xMTI1MiAxMS4zMjA5IDEgMTEuMTQ0MyAxIDEwLjk1VjQuMDVDMSAzLjg1NTc0IDEuMTEyNTIgMy42NzkwNiAxLjI4ODU2IDMuNTk2OTFMNy4yODg1NiAwLjc5NjkwOFpNMiA0LjgwNTc4TDcgNi45MzA3OFYxMi45NjQ5TDIgMTAuNjMxNlY0LjgwNTc4Wk04IDEyLjk2NDlMMTMgMTAuNjMxNlY0LjgwNTc4TDggNi45MzA3OFYxMi45NjQ5Wk03LjUgNi4wNTY3MkwxMi4yNzE5IDQuMDI4NjZMNy41IDEuODAxNzZMMi43MjgwOSA0LjAyODY2TDcuNSA2LjA1NjcyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMjkyMjcgMC4wNDg5ODRDMy40NzAzMyAtMC4wMzIzMzggMy42Nzk0NiAtMC4wMDIyODIxNCAzLjgyNzQgMC4xMjU4OTFMMTIuODU4NyA3Ljk1MDI2QzEzLjAxMzQgOC4wODQzMiAxMy4wNzA4IDguMjk5MTYgMTMuMDAzNSA4LjQ5MjUxQzEyLjkzNjIgOC42ODU4NiAxMi43NTc4IDguODE4NjYgMTIuNTUzMyA4LjgyNzY4TDkuMjE4ODcgOC45NzQ3NEwxMS4xNTA0IDEzLjIxODdDMTEuMjY0OCAxMy40NyAxMS4xNTM4IDEzLjc2NjQgMTAuOTAyNiAxMy44ODA4TDguNzUwMjQgMTQuODYxM0M4LjQ5OSAxNC45NzU4IDguMjAyNTUgMTQuODY0OSA4LjA4ODAyIDE0LjYxMzdMNi4xNTMzOSAxMC4zNzAzTDMuODYyNzkgMTIuNzg1NUMzLjcyMTk2IDEyLjkzNCAzLjUwNDg3IDEyLjk4MTcgMy4zMTQ3OSAxMi45MDU5QzMuMTI0NyAxMi44MzAxIDMgMTIuNjQ2MSAzIDEyLjQ0MTRWMC41MDM3OTJDMyAwLjMwODA0OCAzLjExNDIyIDAuMTMwMzA2IDMuMjkyMjcgMC4wNDg5ODRaTTQgMS41OTg1MlYxMS4xODc3TDUuOTM3OTkgOS4xNDQyNUM2LjA1MjM4IDkuMDIzNjMgNi4yMTkyNCA4Ljk2Nzc2IDYuMzgzMTkgOC45OTUxNkM2LjU0NzE1IDkuMDIyNTYgNi42ODY3NyA5LjEyOTY1IDYuNzU1NzMgOS4yODA5TDguNzkwNTYgMTMuNzQ0MUwxMC4wMzMyIDEzLjE3OEw4LjAwMTk1IDguNzE0OTdDNy45MzMxMyA4LjU2Mzc2IDcuOTQzOTEgOC4zODgyNCA4LjAzMDcyIDguMjQ2NTlDOC4xMTc1MyA4LjEwNDk0IDguMjY5MDMgOC4wMTU2NiA4LjQzNSA4LjAwODM0TDExLjI1NDkgNy44ODM5N0w0IDEuNTk4NTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxXZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC41IDFDNC4yMjM4NiAxIDQgMS4yMjM4NiA0IDEuNUM0IDEuNzc2MTQgNC4yMjM4NiAyIDQuNSAyQzUuNDIyMTUgMiA2LjAzOTkgMi4yMzA1NCA2LjQyMDc1IDIuNTYzNzlDNi43OTI4NiAyLjg4OTM5IDcgMy4zNjYyNiA3IDRWN0g1Ljc1QzUuNDczODYgNyA1LjI1IDcuMjIzODYgNS4yNSA3LjVDNS4yNSA3Ljc3NjE0IDUuNDczODYgOCA1Ljc1IDhIN1YxMUM3IDExLjYzMzcgNi43OTI4NiAxMi4xMTA2IDYuNDIwNzUgMTIuNDM2MkM2LjAzOTkgMTIuNzY5NSA1LjQyMjE1IDEzIDQuNSAxM0M0LjIyMzg2IDEzIDQgMTMuMjIzOSA0IDEzLjVDNCAxMy43NzYxIDQuMjIzODYgMTQgNC41IDE0QzUuNTc3ODUgMTQgNi40NjAxIDEzLjczMDUgNy4wNzkyNSAxMy4xODg4QzcuMjQxNjggMTMuMDQ2NyA3LjM4MTY5IDEyLjg4OTYgNy41IDEyLjcxOThDNy42MTgzMiAxMi44ODk2IDcuNzU4MzIgMTMuMDQ2NyA3LjkyMDc1IDEzLjE4ODhDOC41Mzk5IDEzLjczMDUgOS40MjIxNSAxNCAxMC41IDE0QzEwLjc3NjEgMTQgMTEgMTMuNzc2MSAxMSAxMy41QzExIDEzLjIyMzkgMTAuNzc2MSAxMyAxMC41IDEzQzkuNTc3ODUgMTMgOC45NjAxIDEyLjc2OTUgOC41NzkyNSAxMi40MzYyQzguMjA3MTQgMTIuMTEwNiA4IDExLjYzMzcgOCAxMVY4SDkuMjVDOS41MjYxNCA4IDkuNzUgNy43NzYxNCA5Ljc1IDcuNUM5Ljc1IDcuMjIzODYgOS41MjYxNCA3IDkuMjUgN0g4VjRDOCAzLjM2NjI2IDguMjA3MTQgMi44ODkzOSA4LjU3OTI1IDIuNTYzNzlDOC45NjAxIDIuMjMwNTQgOS41Nzc4NSAyIDEwLjUgMkMxMC43NzYxIDIgMTEgMS43NzYxNCAxMSAxLjVDMTEgMS4yMjM4NiAxMC43NzYxIDEgMTAuNSAxQzkuNDIyMTUgMSA4LjUzOTkgMS4yNjk0NiA3LjkyMDc1IDEuODExMjFDNy43NTgzMiAxLjk1MzMzIDcuNjE4MzIgMi4xMTA0MyA3LjUgMi4yODAyM0M3LjM4MTY4IDIuMTEwNDMgNy4yNDE2OCAxLjk1MzMzIDcuMDc5MjUgMS44MTEyMUM2LjQ2MDEgMS4yNjk0NiA1LjU3Nzg1IDEgNC41IDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx6ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSA3LjVDNSA3LjIyMzg2IDUuMjIzODYgNyA1LjUgN0g5LjVDOS43NzYxNCA3IDEwIDcuMjIzODYgMTAgNy41QzEwIDcuNzc2MTQgOS43NzYxNCA4IDkuNSA4SDUuNUM1LjIyMzg2IDggNSA3Ljc3NjE0IDUgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sR2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuOCAxTDIuNzQ5NjcgMC45OTk5N0MyLjUyMTIyIDAuOTk5NzUyIDIuMzI0MjkgMC45OTk1NjQgMi4xNDk4MyAxLjA0MTQ1QzEuNjAxMzYgMS4xNzMxMiAxLjE3MzEyIDEuNjAxMzYgMS4wNDE0NSAyLjE0OTgzQzAuOTk5NTY0IDIuMzI0MjkgMC45OTk3NTIgMi41MjEyMiAwLjk5OTk3IDIuNzQ5NjdMMSAyLjhWNS4yTDAuOTk5OTcgNS4yNTAzM0MwLjk5OTc1MiA1LjQ3ODc4IDAuOTk5NTY0IDUuNjc1NzIgMS4wNDE0NSA1Ljg1MDE3QzEuMTczMTIgNi4zOTg2NCAxLjYwMTM2IDYuODI2ODggMi4xNDk4MyA2Ljk1ODU2QzIuMzI0MjkgNy4wMDA0NCAyLjUyMTIyIDcuMDAwMjUgMi43NDk2NyA3LjAwMDAzTDIuOCA3SDUuMkw1LjI1MDMzIDcuMDAwMDNDNS40Nzg3OCA3LjAwMDI1IDUuNjc1NzIgNy4wMDA0NCA1Ljg1MDE3IDYuOTU4NTZDNi4zOTg2NCA2LjgyNjg4IDYuODI2ODggNi4zOTg2NCA2Ljk1ODU2IDUuODUwMTdDNy4wMDA0NCA1LjY3NTcyIDcuMDAwMjUgNS40Nzg3OCA3LjAwMDAzIDUuMjUwMzNMNyA1LjJWMi44TDcuMDAwMDMgMi43NDk2N0M3LjAwMDI1IDIuNTIxMjIgNy4wMDA0NCAyLjMyNDI5IDYuOTU4NTYgMi4xNDk4M0M2LjgyNjg4IDEuNjAxMzYgNi4zOTg2NCAxLjE3MzEyIDUuODUwMTcgMS4wNDE0NUM1LjY3NTcyIDAuOTk5NTY0IDUuNDc4NzggMC45OTk3NTIgNS4yNTAzMyAwLjk5OTk3TDUuMiAxSDIuOFpNMi4zODMyOCAyLjAxMzgyQzIuNDI2MzIgMi4wMDM0OCAyLjQ5MjIyIDIgMi44IDJINS4yQzUuNTA3NzkgMiA1LjU3MzY5IDIuMDAzNDggNS42MTY3MiAyLjAxMzgyQzUuNzk5NTUgMi4wNTc3MSA1Ljk0MjI5IDIuMjAwNDUgNS45ODYxOSAyLjM4MzI4QzUuOTk2NTIgMi40MjYzMiA2IDIuNDkyMjIgNiAyLjhWNS4yQzYgNS41MDc3OSA1Ljk5NjUyIDUuNTczNjkgNS45ODYxOSA1LjYxNjcyQzUuOTQyMjkgNS43OTk1NSA1Ljc5OTU1IDUuOTQyMjkgNS42MTY3MiA1Ljk4NjE5QzUuNTczNjkgNS45OTY1MiA1LjUwNzc5IDYgNS4yIDZIMi44QzIuNDkyMjIgNiAyLjQyNjMyIDUuOTk2NTIgMi4zODMyOCA1Ljk4NjE5QzIuMjAwNDUgNS45NDIyOSAyLjA1NzcxIDUuNzk5NTUgMi4wMTM4MiA1LjYxNjcyQzIuMDAzNDggNS41NzM2OSAyIDUuNTA3NzkgMiA1LjJWMi44QzIgMi40OTIyMiAyLjAwMzQ4IDIuNDI2MzIgMi4wMTM4MiAyLjM4MzI4QzIuMDU3NzEgMi4yMDA0NSAyLjIwMDQ1IDIuMDU3NzEgMi4zODMyOCAyLjAxMzgyWk05LjggMUw5Ljc0OTY3IDAuOTk5OTdDOS41MjEyMiAwLjk5OTc1MiA5LjMyNDI5IDAuOTk5NTY0IDkuMTQ5ODMgMS4wNDE0NUM4LjYwMTM2IDEuMTczMTIgOC4xNzMxMiAxLjYwMTM2IDguMDQxNDUgMi4xNDk4M0M3Ljk5OTU2IDIuMzI0MjkgNy45OTk3NSAyLjUyMTIyIDcuOTk5OTcgMi43NDk2N0w4IDIuOFY1LjJMNy45OTk5NyA1LjI1MDMzQzcuOTk5NzUgNS40Nzg3OCA3Ljk5OTU2IDUuNjc1NzIgOC4wNDE0NSA1Ljg1MDE3QzguMTczMTIgNi4zOTg2NCA4LjYwMTM2IDYuODI2ODggOS4xNDk4MyA2Ljk1ODU2QzkuMzI0MjkgNy4wMDA0NCA5LjUyMTIyIDcuMDAwMjUgOS43NDk2NyA3LjAwMDAzTDkuOCA3SDEyLjJMMTIuMjUwMyA3LjAwMDAzQzEyLjQ3ODggNy4wMDAyNSAxMi42NzU3IDcuMDAwNDQgMTIuODUwMiA2Ljk1ODU2QzEzLjM5ODYgNi44MjY4OCAxMy44MjY5IDYuMzk4NjQgMTMuOTU4NiA1Ljg1MDE3QzE0LjAwMDQgNS42NzU3MiAxNC4wMDAzIDUuNDc4NzggMTQgNS4yNTAzM0wxNCA1LjJWMi44TDE0IDIuNzQ5NjdDMTQuMDAwMyAyLjUyMTIyIDE0LjAwMDQgMi4zMjQyOSAxMy45NTg2IDIuMTQ5ODNDMTMuODI2OSAxLjYwMTM2IDEzLjM5ODYgMS4xNzMxMiAxMi44NTAyIDEuMDQxNDVDMTIuNjc1NyAwLjk5OTU2NCAxMi40Nzg4IDAuOTk5NzUyIDEyLjI1MDMgMC45OTk5N0wxMi4yIDFIOS44Wk05LjM4MzI4IDIuMDEzODJDOS40MjYzMiAyLjAwMzQ4IDkuNDkyMjIgMiA5LjggMkgxMi4yQzEyLjUwNzggMiAxMi41NzM3IDIuMDAzNDggMTIuNjE2NyAyLjAxMzgyQzEyLjc5OTUgMi4wNTc3MSAxMi45NDIzIDIuMjAwNDUgMTIuOTg2MiAyLjM4MzI4QzEyLjk5NjUgMi40MjYzMiAxMyAyLjQ5MjIyIDEzIDIuOFY1LjJDMTMgNS41MDc3OSAxMi45OTY1IDUuNTczNjkgMTIuOTg2MiA1LjYxNjcyQzEyLjk0MjMgNS43OTk1NSAxMi43OTk1IDUuOTQyMjkgMTIuNjE2NyA1Ljk4NjE5QzEyLjU3MzcgNS45OTY1MiAxMi41MDc4IDYgMTIuMiA2SDkuOEM5LjQ5MjIyIDYgOS40MjYzMiA1Ljk5NjUyIDkuMzgzMjggNS45ODYxOUM5LjIwMDQ1IDUuOTQyMjkgOS4wNTc3MSA1Ljc5OTU1IDkuMDEzODIgNS42MTY3MkM5LjAwMzQ4IDUuNTczNjkgOSA1LjUwNzc5IDkgNS4yVjIuOEM5IDIuNDkyMjIgOS4wMDM0OCAyLjQyNjMyIDkuMDEzODIgMi4zODMyOEM5LjA1NzcxIDIuMjAwNDUgOS4yMDA0NSAyLjA1NzcxIDkuMzgzMjggMi4wMTM4MlpNMi43NDk2NyA3Ljk5OTk3TDIuOCA4SDUuMkw1LjI1MDMzIDcuOTk5OTdDNS40Nzg3OCA3Ljk5OTc1IDUuNjc1NzIgNy45OTk1NiA1Ljg1MDE3IDguMDQxNDVDNi4zOTg2NCA4LjE3MzEyIDYuODI2ODggOC42MDEzNiA2Ljk1ODU2IDkuMTQ5ODNDNy4wMDA0NCA5LjMyNDI5IDcuMDAwMjUgOS41MjEyMiA3LjAwMDAzIDkuNzQ5NjdMNyA5LjhWMTIuMkw3LjAwMDAzIDEyLjI1MDNDNy4wMDAyNSAxMi40Nzg4IDcuMDAwNDQgMTIuNjc1NyA2Ljk1ODU2IDEyLjg1MDJDNi44MjY4OCAxMy4zOTg2IDYuMzk4NjQgMTMuODI2OSA1Ljg1MDE3IDEzLjk1ODZDNS42NzU3MiAxNC4wMDA0IDUuNDc4NzggMTQuMDAwMyA1LjI1MDMzIDE0TDUuMiAxNEgyLjhMMi43NDk2NyAxNEMyLjUyMTIyIDE0LjAwMDMgMi4zMjQyOSAxNC4wMDA0IDIuMTQ5ODMgMTMuOTU4NkMxLjYwMTM2IDEzLjgyNjkgMS4xNzMxMiAxMy4zOTg2IDEuMDQxNDUgMTIuODUwMkMwLjk5OTU2NCAxMi42NzU3IDAuOTk5NzUyIDEyLjQ3ODggMC45OTk5NyAxMi4yNTAzTDEgMTIuMlY5LjhMMC45OTk5NyA5Ljc0OTY3QzAuOTk5NzUyIDkuNTIxMjIgMC45OTk1NjQgOS4zMjQyOSAxLjA0MTQ1IDkuMTQ5ODNDMS4xNzMxMiA4LjYwMTM2IDEuNjAxMzYgOC4xNzMxMiAyLjE0OTgzIDguMDQxNDVDMi4zMjQyOSA3Ljk5OTU2IDIuNTIxMjIgNy45OTk3NSAyLjc0OTY3IDcuOTk5OTdaTTIuOCA5QzIuNDkyMjIgOSAyLjQyNjMyIDkuMDAzNDggMi4zODMyOCA5LjAxMzgyQzIuMjAwNDUgOS4wNTc3MSAyLjA1NzcxIDkuMjAwNDUgMi4wMTM4MiA5LjM4MzI4QzIuMDAzNDggOS40MjYzMiAyIDkuNDkyMjIgMiA5LjhWMTIuMkMyIDEyLjUwNzggMi4wMDM0OCAxMi41NzM3IDIuMDEzODIgMTIuNjE2N0MyLjA1NzcxIDEyLjc5OTUgMi4yMDA0NSAxMi45NDIzIDIuMzgzMjggMTIuOTg2MkMyLjQyNjMyIDEyLjk5NjUgMi40OTIyMiAxMyAyLjggMTNINS4yQzUuNTA3NzkgMTMgNS41NzM2OSAxMi45OTY1IDUuNjE2NzIgMTIuOTg2MkM1Ljc5OTU1IDEyLjk0MjMgNS45NDIyOSAxMi43OTk1IDUuOTg2MTkgMTIuNjE2N0M1Ljk5NjUyIDEyLjU3MzcgNiAxMi41MDc4IDYgMTIuMlY5LjhDNiA5LjQ5MjIyIDUuOTk2NTIgOS40MjYzMiA1Ljk4NjE5IDkuMzgzMjhDNS45NDIyOSA5LjIwMDQ1IDUuNzk5NTUgOS4wNTc3MSA1LjYxNjcyIDkuMDEzODJDNS41NzM2OSA5LjAwMzQ4IDUuNTA3NzkgOSA1LjIgOUgyLjhaTTkuOCA4TDkuNzQ5NjcgNy45OTk5N0M5LjUyMTIyIDcuOTk5NzUgOS4zMjQyOSA3Ljk5OTU2IDkuMTQ5ODMgOC4wNDE0NUM4LjYwMTM2IDguMTczMTIgOC4xNzMxMiA4LjYwMTM2IDguMDQxNDUgOS4xNDk4M0M3Ljk5OTU2IDkuMzI0MjkgNy45OTk3NSA5LjUyMTIyIDcuOTk5OTcgOS43NDk2N0w4IDkuOFYxMi4yTDcuOTk5OTcgMTIuMjUwM0M3Ljk5OTc1IDEyLjQ3ODggNy45OTk1NiAxMi42NzU3IDguMDQxNDUgMTIuODUwMkM4LjE3MzEyIDEzLjM5ODYgOC42MDEzNiAxMy44MjY5IDkuMTQ5ODMgMTMuOTU4NkM5LjMyNDI5IDE0LjAwMDQgOS41MjEyMiAxNC4wMDAzIDkuNzQ5NjcgMTRMOS44IDE0SDEyLjJMMTIuMjUwMyAxNEMxMi40Nzg4IDE0LjAwMDMgMTIuNjc1NyAxNC4wMDA0IDEyLjg1MDIgMTMuOTU4NkMxMy4zOTg2IDEzLjgyNjkgMTMuODI2OSAxMy4zOTg2IDEzLjk1ODYgMTIuODUwMkMxNC4wMDA0IDEyLjY3NTcgMTQuMDAwMyAxMi40Nzg4IDE0IDEyLjI1MDNMMTQgMTIuMlY5LjhMMTQgOS43NDk2N0MxNC4wMDAzIDkuNTIxMjIgMTQuMDAwNCA5LjMyNDI5IDEzLjk1ODYgOS4xNDk4M0MxMy44MjY5IDguNjAxMzYgMTMuMzk4NiA4LjE3MzEyIDEyLjg1MDIgOC4wNDE0NUMxMi42NzU3IDcuOTk5NTYgMTIuNDc4OCA3Ljk5OTc1IDEyLjI1MDMgNy45OTk5N0wxMi4yIDhIOS44Wk05LjM4MzI4IDkuMDEzODJDOS40MjYzMiA5LjAwMzQ4IDkuNDkyMjIgOSA5LjggOUgxMi4yQzEyLjUwNzggOSAxMi41NzM3IDkuMDAzNDggMTIuNjE2NyA5LjAxMzgyQzEyLjc5OTUgOS4wNTc3MSAxMi45NDIzIDkuMjAwNDUgMTIuOTg2MiA5LjM4MzI4QzEyLjk5NjUgOS40MjYzMiAxMyA5LjQ5MjIyIDEzIDkuOFYxMi4yQzEzIDEyLjUwNzggMTIuOTk2NSAxMi41NzM3IDEyLjk4NjIgMTIuNjE2N0MxMi45NDIzIDEyLjc5OTUgMTIuNzk5NSAxMi45NDIzIDEyLjYxNjcgMTIuOTg2MkMxMi41NzM3IDEyLjk5NjUgMTIuNTA3OCAxMyAxMi4yIDEzSDkuOEM5LjQ5MjIyIDEzIDkuNDI2MzIgMTIuOTk2NSA5LjM4MzI4IDEyLjk4NjJDOS4yMDA0NSAxMi45NDIzIDkuMDU3NzEgMTIuNzk5NSA5LjAxMzgyIDEyLjYxNjdDOS4wMDM0OCAxMi41NzM3IDkgMTIuNTA3OCA5IDEyLjJWOS44QzkgOS40OTIyMiA5LjAwMzQ4IDkuNDI2MzIgOS4wMTM4MiA5LjM4MzI4QzkuMDU3NzEgOS4yMDA0NSA5LjIwMDQ1IDkuMDU3NzEgOS4zODMyOCA5LjAxMzgyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMDAwMTQgMi43Mzg5NUMzLjAwMDE0IDIuOTQ2OTggMi43NjA4NyAzLjA2NDAxIDIuNTk2NjYgMi45MzYyOEwxLjAwMzg2IDEuNjk3NDRDMC44NzUxNzcgMS41OTczNSAwLjg3NTE3NyAxLjQwMjg2IDEuMDAzODYgMS4zMDI3N0wyLjU5NjY2IDAuMDYzOTI4QzIuNzYwODcgLTAuMDYzNzk0NCAzLjAwMDE0IDAuMDUzMjI5MyAzLjAwMDE0IDAuMjYxMjY2VjEuMDAwMTJIOS4wMDAwOVYwLjI2MTI5NkM5LjAwMDA5IDAuMDUzMjU5MSA5LjIzOTM2IC0wLjA2Mzc2NDYgOS40MDM1OCAwLjA2Mzk1NzhMMTAuOTk2NCAxLjMwMjhDMTEuMTI1MSAxLjQwMjg5IDExLjEyNTEgMS41OTczOCAxMC45OTY0IDEuNjk3NDdMOS40MDM1OCAyLjkzNjMxQzkuMjM5MzYgMy4wNjQwNCA5LjAwMDA5IDIuOTQ3MDEgOS4wMDAwOSAyLjczODk4VjIuMDAwMTJIMy4wMDAxNFYyLjczODk1Wk05LjUwMDAyIDQuOTk5OThIMi41MDAwMkMyLjIyMzg4IDQuOTk5OTggMi4wMDAwMiA1LjIyMzg0IDIuMDAwMDIgNS40OTk5OFYxMi41QzIuMDAwMDIgMTIuNzc2MSAyLjIyMzg4IDEzIDIuNTAwMDIgMTNIOS41MDAwMkM5Ljc3NjE2IDEzIDEwIDEyLjc3NjEgMTAgMTIuNVY1LjQ5OTk4QzEwIDUuMjIzODQgOS43NzYxNiA0Ljk5OTk4IDkuNTAwMDIgNC45OTk5OFpNMi41MDAwMiAzLjk5OTk4QzEuNjcxNTkgMy45OTk5OCAxLjAwMDAyIDQuNjcxNTYgMS4wMDAwMiA1LjQ5OTk4VjEyLjVDMS4wMDAwMiAxMy4zMjg0IDEuNjcxNTkgMTQgMi41MDAwMiAxNEg5LjUwMDAyQzEwLjMyODQgMTQgMTEgMTMuMzI4NCAxMSAxMi41VjUuNDk5OThDMTEgNC42NzE1NiAxMC4zMjg0IDMuOTk5OTggOS41MDAwMiAzLjk5OTk4SDIuNTAwMDJaTTE0LjczODkgNi4wMDAwMUgxNFYxMkgxNC43Mzg5QzE0Ljk0NjkgMTIgMTUuMDY0IDEyLjIzOTMgMTQuOTM2MiAxMi40MDM1TDEzLjY5NzQgMTMuOTk2M0MxMy41OTczIDE0LjEyNSAxMy40MDI4IDE0LjEyNSAxMy4zMDI3IDEzLjk5NjNMMTIuMDYzOSAxMi40MDM1QzExLjkzNjIgMTIuMjM5MyAxMi4wNTMyIDEyIDEyLjI2MTIgMTJIMTNWNi4wMDAwMUgxMi4yNjEyQzEyLjA1MzIgNi4wMDAwMSAxMS45MzYxIDUuNzYwNzQgMTIuMDYzOSA1LjU5NjUzTDEzLjMwMjcgNC4wMDM3M0MxMy40MDI4IDMuODc1MDUgMTMuNTk3MyAzLjg3NTA1IDEzLjY5NzQgNC4wMDM3NEwxNC45MzYyIDUuNTk2NTNDMTUuMDYzOSA1Ljc2MDc0IDE0Ljk0NjkgNi4wMDAwMSAxNC43Mzg5IDYuMDAwMDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxZZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3NzA3NUMzLjg0MjIyIDAuODc3MDc1IDAuODc3MDc1IDMuODQyMjIgMC44NzcwNzUgNy40OTk5MUMwLjg3NzA3NSAxMS4xNTc2IDMuODQyMjIgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMTEuMTU3NiAxNC4xMjI3IDE0LjEyMjcgMTEuMTU3NiAxNC4xMjI3IDcuNDk5OTFDMTQuMTIyNyAzLjg0MjIyIDExLjE1NzYgMC44NzcwNzUgNy40OTk5MSAwLjg3NzA3NVpNMS44MjcwOCA3LjQ5OTkxQzEuODI3MDggNC4zNjY4OSA0LjM2Njg5IDEuODI3MDcgNy40OTk5MSAxLjgyNzA3QzEwLjYzMjkgMS44MjcwNyAxMy4xNzI3IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxQzEzLjE3MjcgMTAuNjMyOSAxMC42MzI5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzQuMzY2ODkgMTMuMTcyNyAxLjgyNzA4IDEwLjYzMjkgMS44MjcwOCA3LjQ5OTkxWk04LjM3Mjg3IDcuNTAwMDZDOC4zNzI4NyA3Ljk4MTk2IDcuOTgyMjEgOC4zNzI2MyA3LjUwMDMgOC4zNzI2M0M3LjAxODM5IDguMzcyNjMgNi42Mjc3MyA3Ljk4MTk2IDYuNjI3NzMgNy41MDAwNkM2LjYyNzczIDcuMDE4MTUgNy4wMTgzOSA2LjYyNzQ4IDcuNTAwMyA2LjYyNzQ4QzcuOTgyMjEgNi42Mjc0OCA4LjM3Mjg3IDcuMDE4MTUgOC4zNzI4NyA3LjUwMDA2Wk05LjMyMjg3IDcuNTAwMDZDOS4zMjI4NyA4LjUwNjY0IDguNTA2ODggOS4zMjI2MyA3LjUwMDMgOS4zMjI2M0M2LjQ5MzcyIDkuMzIyNjMgNS42Nzc3MyA4LjUwNjY0IDUuNjc3NzMgNy41MDAwNkM1LjY3NzczIDYuNDkzNDggNi40OTM3MiA1LjY3NzQ4IDcuNTAwMyA1LjY3NzQ4QzguNTA2ODggNS42Nzc0OCA5LjMyMjg3IDYuNDkzNDggOS4zMjI4NyA3LjUwMDA2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sS2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgNy41QzIgNy4yMjM4NiAyLjIyMzg2IDcgMi41IDdIMTIuNUMxMi43NzYxIDcgMTMgNy4yMjM4NiAxMyA3LjVDMTMgNy43NzYxNCAxMi43NzYxIDggMTIuNSA4SDIuNUMyLjIyMzg2IDggMiA3Ljc3NjE0IDIgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAyQzcuNzc2MTQgMiA4IDIuMjIzODYgOCAyLjVMOCAxMi41QzggMTIuNzc2MSA3Ljc3NjE0IDEzIDcuNSAxM0M3LjIyMzg2IDEzIDcgMTIuNzc2MSA3IDEyLjVMNyAyLjVDNyAyLjIyMzg2IDcuMjIzODYgMiA3LjUgMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEplPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgOS4xMjVDOC4zOTc0NiA5LjEyNSA5LjEyNSA4LjM5NzQ2IDkuMTI1IDcuNUM5LjEyNSA2LjYwMjU0IDguMzk3NDYgNS44NzUgNy41IDUuODc1QzYuNjAyNTQgNS44NzUgNS44NzUgNi42MDI1NCA1Ljg3NSA3LjVDNS44NzUgOC4zOTc0NiA2LjYwMjU0IDkuMTI1IDcuNSA5LjEyNVpNNy41IDEwLjEyNUM4Ljk0OTc1IDEwLjEyNSAxMC4xMjUgOC45NDk3NSAxMC4xMjUgNy41QzEwLjEyNSA2LjA1MDI1IDguOTQ5NzUgNC44NzUgNy41IDQuODc1QzYuMDUwMjUgNC44NzUgNC44NzUgNi4wNTAyNSA0Ljg3NSA3LjVDNC44NzUgOC45NDk3NSA2LjA1MDI1IDEwLjEyNSA3LjUgMTAuMTI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuODc1IDcuNUM5Ljg3NSA4LjgxMTY4IDguODExNjggOS44NzUgNy41IDkuODc1QzYuMTg4MzIgOS44NzUgNS4xMjUgOC44MTE2OCA1LjEyNSA3LjVDNS4xMjUgNi4xODgzMiA2LjE4ODMyIDUuMTI1IDcuNSA1LjEyNUM4LjgxMTY4IDUuMTI1IDkuODc1IDYuMTg4MzIgOS44NzUgNy41WlwiLGZpbGw6bn0pKX0sZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNjI1IDcuNUMzLjYyNSA4LjEyMTMyIDMuMTIxMzIgOC42MjUgMi41IDguNjI1QzEuODc4NjggOC42MjUgMS4zNzUgOC4xMjEzMiAxLjM3NSA3LjVDMS4zNzUgNi44Nzg2OCAxLjg3ODY4IDYuMzc1IDIuNSA2LjM3NUMzLjEyMTMyIDYuMzc1IDMuNjI1IDYuODc4NjggMy42MjUgNy41Wk04LjYyNSA3LjVDOC42MjUgOC4xMjEzMiA4LjEyMTMyIDguNjI1IDcuNSA4LjYyNUM2Ljg3ODY4IDguNjI1IDYuMzc1IDguMTIxMzIgNi4zNzUgNy41QzYuMzc1IDYuODc4NjggNi44Nzg2OCA2LjM3NSA3LjUgNi4zNzVDOC4xMjEzMiA2LjM3NSA4LjYyNSA2Ljg3ODY4IDguNjI1IDcuNVpNMTIuNSA4LjYyNUMxMy4xMjEzIDguNjI1IDEzLjYyNSA4LjEyMTMyIDEzLjYyNSA3LjVDMTMuNjI1IDYuODc4NjggMTMuMTIxMyA2LjM3NSAxMi41IDYuMzc1QzExLjg3ODcgNi4zNzUgMTEuMzc1IDYuODc4NjggMTEuMzc1IDcuNUMxMS4zNzUgOC4xMjEzMiAxMS44Nzg3IDguNjI1IDEyLjUgOC42MjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx0dD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC42MjUgMi41QzguNjI1IDMuMTIxMzIgOC4xMjEzMiAzLjYyNSA3LjUgMy42MjVDNi44Nzg2OCAzLjYyNSA2LjM3NSAzLjEyMTMyIDYuMzc1IDIuNUM2LjM3NSAxLjg3ODY4IDYuODc4NjggMS4zNzUgNy41IDEuMzc1QzguMTIxMzIgMS4zNzUgOC42MjUgMS44Nzg2OCA4LjYyNSAyLjVaTTguNjI1IDcuNUM4LjYyNSA4LjEyMTMyIDguMTIxMzIgOC42MjUgNy41IDguNjI1QzYuODc4NjggOC42MjUgNi4zNzUgOC4xMjEzMiA2LjM3NSA3LjVDNi4zNzUgNi44Nzg2OCA2Ljg3ODY4IDYuMzc1IDcuNSA2LjM3NUM4LjEyMTMyIDYuMzc1IDguNjI1IDYuODc4NjggOC42MjUgNy41Wk03LjUgMTMuNjI1QzguMTIxMzIgMTMuNjI1IDguNjI1IDEzLjEyMTMgOC42MjUgMTIuNUM4LjYyNSAxMS44Nzg3IDguMTIxMzIgMTEuMzc1IDcuNSAxMS4zNzVDNi44Nzg2OCAxMS4zNzUgNi4zNzUgMTEuODc4NyA2LjM3NSAxMi41QzYuMzc1IDEzLjEyMTMgNi44Nzg2OCAxMy42MjUgNy41IDEzLjYyNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG50PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjg1MzU1IDIuMTQ2NDVDMy42NTgyOSAxLjk1MTE4IDMuMzQxNzEgMS45NTExOCAzLjE0NjQ1IDIuMTQ2NDVDMi45NTExOCAyLjM0MTcxIDIuOTUxMTggMi42NTgyOSAzLjE0NjQ1IDIuODUzNTVMNy4xNDY0NSA2Ljg1MzU1QzcuMzQxNzEgNy4wNDg4MiA3LjY1ODI5IDcuMDQ4ODIgNy44NTM1NSA2Ljg1MzU1TDExLjg1MzYgMi44NTM1NUMxMi4wNDg4IDIuNjU4MjkgMTIuMDQ4OCAyLjM0MTcxIDExLjg1MzYgMi4xNDY0NUMxMS42NTgzIDEuOTUxMTggMTEuMzQxNyAxLjk1MTE4IDExLjE0NjQgMi4xNDY0NUw3LjUgNS43OTI4OUwzLjg1MzU1IDIuMTQ2NDVaTTMuODUzNTUgOC4xNDY0NUMzLjY1ODI5IDcuOTUxMTggMy4zNDE3MSA3Ljk1MTE4IDMuMTQ2NDUgOC4xNDY0NUMyLjk1MTE4IDguMzQxNzEgMi45NTExOCA4LjY1ODI5IDMuMTQ2NDUgOC44NTM1NUw3LjE0NjQ1IDEyLjg1MzZDNy4zNDE3MSAxMy4wNDg4IDcuNjU4MjkgMTMuMDQ4OCA3Ljg1MzU1IDEyLjg1MzZMMTEuODUzNiA4Ljg1MzU1QzEyLjA0ODggOC42NTgyOSAxMi4wNDg4IDguMzQxNzEgMTEuODUzNiA4LjE0NjQ1QzExLjY1ODMgNy45NTExOCAxMS4zNDE3IDcuOTUxMTggMTEuMTQ2NCA4LjE0NjQ1TDcuNSAxMS43OTI5TDMuODUzNTUgOC4xNDY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHJ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02Ljg1MzU1IDMuODUzNTVDNy4wNDg4MiAzLjY1ODI5IDcuMDQ4ODIgMy4zNDE3MSA2Ljg1MzU1IDMuMTQ2NDVDNi42NTgyOSAyLjk1MTE4IDYuMzQxNzEgMi45NTExOCA2LjE0NjQ1IDMuMTQ2NDVMMi4xNDY0NSA3LjE0NjQ1QzEuOTUxMTggNy4zNDE3MSAxLjk1MTE4IDcuNjU4MjkgMi4xNDY0NSA3Ljg1MzU1TDYuMTQ2NDUgMTEuODUzNkM2LjM0MTcxIDEyLjA0ODggNi42NTgyOSAxMi4wNDg4IDYuODUzNTUgMTEuODUzNkM3LjA0ODgyIDExLjY1ODMgNy4wNDg4MiAxMS4zNDE3IDYuODUzNTUgMTEuMTQ2NEwzLjIwNzExIDcuNUw2Ljg1MzU1IDMuODUzNTVaTTEyLjg1MzYgMy44NTM1NUMxMy4wNDg4IDMuNjU4MjkgMTMuMDQ4OCAzLjM0MTcxIDEyLjg1MzYgMy4xNDY0NUMxMi42NTgzIDIuOTUxMTggMTIuMzQxNyAyLjk1MTE4IDEyLjE0NjQgMy4xNDY0NUw4LjE0NjQ1IDcuMTQ2NDVDNy45NTExOCA3LjM0MTcxIDcuOTUxMTggNy42NTgyOSA4LjE0NjQ1IDcuODUzNTVMMTIuMTQ2NCAxMS44NTM2QzEyLjM0MTcgMTIuMDQ4OCAxMi42NTgzIDEyLjA0ODggMTIuODUzNiAxMS44NTM2QzEzLjA0ODggMTEuNjU4MyAxMy4wNDg4IDExLjM0MTcgMTIuODUzNiAxMS4xNDY0TDkuMjA3MTEgNy41TDEyLjg1MzYgMy44NTM1NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG90PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjE0NjQ1IDExLjE0NjRDMS45NTExOCAxMS4zNDE3IDEuOTUxMTggMTEuNjU4MyAyLjE0NjQ1IDExLjg1MzZDMi4zNDE3MSAxMi4wNDg4IDIuNjU4MjkgMTIuMDQ4OCAyLjg1MzU1IDExLjg1MzZMNi44NTM1NSA3Ljg1MzU1QzcuMDQ4ODIgNy42NTgyOSA3LjA0ODgyIDcuMzQxNzEgNi44NTM1NSA3LjE0NjQ1TDIuODUzNTUgMy4xNDY0NUMyLjY1ODI5IDIuOTUxMTggMi4zNDE3MSAyLjk1MTE4IDIuMTQ2NDUgMy4xNDY0NUMxLjk1MTE4IDMuMzQxNzEgMS45NTExOCAzLjY1ODI5IDIuMTQ2NDUgMy44NTM1NUw1Ljc5Mjg5IDcuNUwyLjE0NjQ1IDExLjE0NjRaTTguMTQ2NDUgMTEuMTQ2NEM3Ljk1MTE4IDExLjM0MTcgNy45NTExOCAxMS42NTgzIDguMTQ2NDUgMTEuODUzNkM4LjM0MTcxIDEyLjA0ODggOC42NTgyOSAxMi4wNDg4IDguODUzNTUgMTEuODUzNkwxMi44NTM2IDcuODUzNTVDMTMuMDQ4OCA3LjY1ODI5IDEzLjA0ODggNy4zNDE3MSAxMi44NTM2IDcuMTQ2NDVMOC44NTM1NSAzLjE0NjQ1QzguNjU4MjkgMi45NTExOCA4LjM0MTcxIDIuOTUxMTggOC4xNDY0NSAzLjE0NjQ1QzcuOTUxMTggMy4zNDE3MSA3Ljk1MTE4IDMuNjU4MjkgOC4xNDY0NSAzLjg1MzU1TDExLjc5MjkgNy41TDguMTQ2NDUgMTEuMTQ2NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGl0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS4xNDY0IDYuODUzNTVDMTEuMzQxNyA3LjA0ODgyIDExLjY1ODMgNy4wNDg4MiAxMS44NTM2IDYuODUzNTVDMTIuMDQ4OCA2LjY1ODI5IDEyLjA0ODggNi4zNDE3MSAxMS44NTM2IDYuMTQ2NDVMNy44NTM1NSAyLjE0NjQ1QzcuNjU4MjkgMS45NTExOCA3LjM0MTcxIDEuOTUxMTggNy4xNDY0NSAyLjE0NjQ1TDMuMTQ2NDUgNi4xNDY0NUMyLjk1MTE4IDYuMzQxNzEgMi45NTExOCA2LjY1ODI5IDMuMTQ2NDUgNi44NTM1NUMzLjM0MTcxIDcuMDQ4ODIgMy42NTgyOSA3LjA0ODgyIDMuODUzNTUgNi44NTM1NUw3LjUgMy4yMDcxMUwxMS4xNDY0IDYuODUzNTVaTTExLjE0NjQgMTIuODUzNkMxMS4zNDE3IDEzLjA0ODggMTEuNjU4MyAxMy4wNDg4IDExLjg1MzYgMTIuODUzNkMxMi4wNDg4IDEyLjY1ODMgMTIuMDQ4OCAxMi4zNDE3IDExLjg1MzYgMTIuMTQ2NEw3Ljg1MzU1IDguMTQ2NDVDNy42NTgyOSA3Ljk1MTE4IDcuMzQxNzEgNy45NTExOCA3LjE0NjQ1IDguMTQ2NDVMMy4xNDY0NSAxMi4xNDY0QzIuOTUxMTggMTIuMzQxNyAyLjk1MTE4IDEyLjY1ODMgMy4xNDY0NSAxMi44NTM2QzMuMzQxNzEgMTMuMDQ4OCAzLjY1ODI5IDEzLjA0ODggMy44NTM1NSAxMi44NTM2TDcuNSA5LjIwNzExTDExLjE0NjQgMTIuODUzNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGF0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUwMDA1IDEuMDQ5OTlDNy43NDg1OCAxLjA0OTk5IDcuOTUwMDUgMS4yNTE0NiA3Ljk1MDA1IDEuNDk5OTlWOC40MTM1OUwxMC4xODE5IDYuMTgxNzlDMTAuMzU3NiA2LjAwNjA1IDEwLjY0MjUgNi4wMDYwNSAxMC44MTgyIDYuMTgxNzlDMTAuOTk0IDYuMzU3NTMgMTAuOTk0IDYuNjQyNDUgMTAuODE4MiA2LjgxODE5TDcuODE4MjUgOS44MTgxOUM3LjY0MjUxIDkuOTkzOTIgNy4zNTc1OSA5Ljk5MzkyIDcuMTgxODUgOS44MTgxOUw0LjE4MTg1IDYuODE4MTlDNC4wMDYxMSA2LjY0MjQ1IDQuMDA2MTEgNi4zNTc1MyA0LjE4MTg1IDYuMTgxNzlDNC4zNTc1OSA2LjAwNjA1IDQuNjQyNTEgNi4wMDYwNSA0LjgxODI1IDYuMTgxNzlMNy4wNTAwNSA4LjQxMzU5VjEuNDk5OTlDNy4wNTAwNSAxLjI1MTQ2IDcuMjUxNTIgMS4wNDk5OSA3LjUwMDA1IDEuMDQ5OTlaTTIuNSAxMEMyLjc3NjE0IDEwIDMgMTAuMjIzOSAzIDEwLjVWMTJDMyAxMi41NTM5IDMuNDQ1NjUgMTMgMy45OTYzNSAxM0gxMS4wMDEyQzExLjU1MjkgMTMgMTIgMTIuNTUyOCAxMiAxMlYxMC41QzEyIDEwLjIyMzkgMTIuMjIzOSAxMCAxMi41IDEwQzEyLjc3NjEgMTAgMTMgMTAuMjIzOSAxMyAxMC41VjEyQzEzIDEzLjEwNDEgMTIuMTA2MiAxNCAxMS4wMDEyIDE0SDMuOTk2MzVDMi44OTAxOSAxNCAyIDEzLjEwMyAyIDEyVjEwLjVDMiAxMC4yMjM5IDIuMjIzODYgMTAgMi41IDEwWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNC41XCIsY3k6XCIyLjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNC41XCIsY3k6XCI0LjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNC41XCIsY3k6XCI2LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI0LjVcIixjeTpcIjguNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjQuNVwiLGN5OlwiMTAuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjQuNVwiLGN5OlwiMTIuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjYuNVwiLGN5OlwiMi41XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjYuNVwiLGN5OlwiNC41XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjYuNVwiLGN5OlwiNi40OTlcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNi41XCIsY3k6XCI4LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI2LjVcIixjeTpcIjEwLjQ5OFwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI2LjVcIixjeTpcIjEyLjQ5OFwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI4LjQ5OVwiLGN5OlwiMi41XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjguNDk5XCIsY3k6XCI0LjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiOC40OTlcIixjeTpcIjYuNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjguNDk5XCIsY3k6XCI4LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI4LjQ5OVwiLGN5OlwiMTAuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjguNDk5XCIsY3k6XCIxMi40OThcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiMTAuNDk5XCIsY3k6XCIyLjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiMTAuNDk5XCIsY3k6XCI0LjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiMTAuNDk5XCIsY3k6XCI2LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCIxMC40OTlcIixjeTpcIjguNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjEwLjQ5OVwiLGN5OlwiMTAuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjEwLjQ5OVwiLGN5OlwiMTIuNDk4XCIscjpcIi42XCIsZmlsbDpufSkpfSxzdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS41IDQuNjI1QzYuMTIxMzIgNC42MjUgNi42MjUgNC4xMjEzMiA2LjYyNSAzLjVDNi42MjUgMi44Nzg2OCA2LjEyMTMyIDIuMzc1IDUuNSAyLjM3NUM0Ljg3ODY4IDIuMzc1IDQuMzc1IDIuODc4NjggNC4zNzUgMy41QzQuMzc1IDQuMTIxMzIgNC44Nzg2OCA0LjYyNSA1LjUgNC42MjVaTTkuNSA0LjYyNUMxMC4xMjEzIDQuNjI1IDEwLjYyNSA0LjEyMTMyIDEwLjYyNSAzLjVDMTAuNjI1IDIuODc4NjggMTAuMTIxMyAyLjM3NSA5LjUgMi4zNzVDOC44Nzg2OCAyLjM3NSA4LjM3NSAyLjg3ODY4IDguMzc1IDMuNUM4LjM3NSA0LjEyMTMyIDguODc4NjggNC42MjUgOS41IDQuNjI1Wk0xMC42MjUgNy41QzEwLjYyNSA4LjEyMTMyIDEwLjEyMTMgOC42MjUgOS41IDguNjI1QzguODc4NjggOC42MjUgOC4zNzUgOC4xMjEzMiA4LjM3NSA3LjVDOC4zNzUgNi44Nzg2OCA4Ljg3ODY4IDYuMzc1IDkuNSA2LjM3NUMxMC4xMjEzIDYuMzc1IDEwLjYyNSA2Ljg3ODY4IDEwLjYyNSA3LjVaTTUuNSA4LjYyNUM2LjEyMTMyIDguNjI1IDYuNjI1IDguMTIxMzIgNi42MjUgNy41QzYuNjI1IDYuODc4NjggNi4xMjEzMiA2LjM3NSA1LjUgNi4zNzVDNC44Nzg2OCA2LjM3NSA0LjM3NSA2Ljg3ODY4IDQuMzc1IDcuNUM0LjM3NSA4LjEyMTMyIDQuODc4NjggOC42MjUgNS41IDguNjI1Wk0xMC42MjUgMTEuNUMxMC42MjUgMTIuMTIxMyAxMC4xMjEzIDEyLjYyNSA5LjUgMTIuNjI1QzguODc4NjggMTIuNjI1IDguMzc1IDEyLjEyMTMgOC4zNzUgMTEuNUM4LjM3NSAxMC44Nzg3IDguODc4NjggMTAuMzc1IDkuNSAxMC4zNzVDMTAuMTIxMyAxMC4zNzUgMTAuNjI1IDEwLjg3ODcgMTAuNjI1IDExLjVaTTUuNSAxMi42MjVDNi4xMjEzMiAxMi42MjUgNi42MjUgMTIuMTIxMyA2LjYyNSAxMS41QzYuNjI1IDEwLjg3ODcgNi4xMjEzMiAxMC4zNzUgNS41IDEwLjM3NUM0Ljg3ODY4IDEwLjM3NSA0LjM3NSAxMC44Nzg3IDQuMzc1IDExLjVDNC4zNzUgMTIuMTIxMyA0Ljg3ODY4IDEyLjYyNSA1LjUgMTIuNjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sY3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuNDk5OTggNC4wOTk5OEMyLjI3OTA2IDQuMDk5OTggMi4wOTk5OCA0LjI3OTA2IDIuMDk5OTggNC40OTk5OEMyLjA5OTk4IDQuNzIwODkgMi4yNzkwNiA0Ljg5OTk4IDIuNDk5OTggNC44OTk5OEgxMi41QzEyLjcyMDkgNC44OTk5OCAxMi45IDQuNzIwODkgMTIuOSA0LjQ5OTk4QzEyLjkgNC4yNzkwNiAxMi43MjA5IDQuMDk5OTggMTIuNSA0LjA5OTk4SDIuNDk5OThaTTIuNDk5OTggNi4wOTk5OEMyLjI3OTA2IDYuMDk5OTggMi4wOTk5OCA2LjI3OTA2IDIuMDk5OTggNi40OTk5OEMyLjA5OTk4IDYuNzIwODkgMi4yNzkwNiA2Ljg5OTk4IDIuNDk5OTggNi44OTk5OEgxMi41QzEyLjcyMDkgNi44OTk5OCAxMi45IDYuNzIwODkgMTIuOSA2LjQ5OTk4QzEyLjkgNi4yNzkwNiAxMi43MjA5IDYuMDk5OTggMTIuNSA2LjA5OTk4SDIuNDk5OThaTTIuMDk5OTggOC40OTk5OEMyLjA5OTk4IDguMjc5MDYgMi4yNzkwNiA4LjA5OTk4IDIuNDk5OTggOC4wOTk5OEgxMi41QzEyLjcyMDkgOC4wOTk5OCAxMi45IDguMjc5MDYgMTIuOSA4LjQ5OTk4QzEyLjkgOC43MjA4OSAxMi43MjA5IDguODk5OTggMTIuNSA4Ljg5OTk4SDIuNDk5OThDMi4yNzkwNiA4Ljg5OTk4IDIuMDk5OTggOC43MjA4OSAyLjA5OTk4IDguNDk5OThaTTIuNDk5OTggMTAuMUMyLjI3OTA2IDEwLjEgMi4wOTk5OCAxMC4yNzkxIDIuMDk5OTggMTAuNUMyLjA5OTk4IDEwLjcyMDkgMi4yNzkwNiAxMC45IDIuNDk5OTggMTAuOUgxMi41QzEyLjcyMDkgMTAuOSAxMi45IDEwLjcyMDkgMTIuOSAxMC41QzEyLjkgMTAuMjc5MSAxMi43MjA5IDEwLjEgMTIuNSAxMC4xSDIuNDk5OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx1dD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC4wOTk5OCAxMi41QzQuMDk5OTggMTIuNzIwOSA0LjI3OTA2IDEyLjkgNC40OTk5OCAxMi45QzQuNzIwODkgMTIuOSA0Ljg5OTk4IDEyLjcyMDkgNC44OTk5OCAxMi41TDQuODk5OTggMi41MDAwMkM0Ljg5OTk4IDIuMjc5MTEgNC43MjA4OSAyLjEwMDAzIDQuNDk5OTggMi4xMDAwM0M0LjI3OTA2IDIuMTAwMDMgNC4wOTk5OCAyLjI3OTExIDQuMDk5OTggMi41MDAwMkw0LjA5OTk4IDEyLjVaTTYuMDk5OTggMTIuNUM2LjA5OTk4IDEyLjcyMDkgNi4yNzkwNiAxMi45IDYuNDk5OTggMTIuOUM2LjcyMDg5IDEyLjkgNi44OTk5OCAxMi43MjA5IDYuODk5OTggMTIuNUw2Ljg5OTk4IDIuNTAwMDJDNi44OTk5OCAyLjI3OTExIDYuNzIwODkgMi4xMDAwMyA2LjQ5OTk4IDIuMTAwMDNDNi4yNzkwNiAyLjEwMDAzIDYuMDk5OTggMi4yNzkxMSA2LjA5OTk4IDIuNTAwMDJMNi4wOTk5OCAxMi41Wk04LjQ5OTk4IDEyLjlDOC4yNzkwNiAxMi45IDguMDk5OTggMTIuNzIwOSA4LjA5OTk4IDEyLjVMOC4wOTk5OCAyLjUwMDAyQzguMDk5OTggMi4yNzkxMSA4LjI3OTA2IDIuMTAwMDIgOC40OTk5OCAyLjEwMDAyQzguNzIwODkgMi4xMDAwMiA4Ljg5OTk4IDIuMjc5MTEgOC44OTk5OCAyLjUwMDAyTDguODk5OTggMTIuNUM4Ljg5OTk4IDEyLjcyMDkgOC43MjA4OSAxMi45IDguNDk5OTggMTIuOVpNMTAuMSAxMi41QzEwLjEgMTIuNzIwOSAxMC4yNzkxIDEyLjkgMTAuNSAxMi45QzEwLjcyMDkgMTIuOSAxMC45IDEyLjcyMDkgMTAuOSAxMi41TDEwLjkgMi41MDAwMkMxMC45IDIuMjc5MTEgMTAuNzIwOSAyLjEwMDAyIDEwLjUgMi4xMDAwMkMxMC4yNzkxIDIuMTAwMDIgMTAuMSAyLjI3OTExIDEwLjEgMi41MDAwMkwxMC4xIDEyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxmdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAuMzI4NSAxLjEzNjA3QzEwLjEzMzIgMC45NDA4MDkgOS44MTY2MiAwLjk0MDgwOCA5LjYyMTM2IDEuMTM2MDdDOS40MjYwOSAxLjMzMTMzIDkuNDI2MDkgMS42NDc5MiA5LjYyMTM2IDEuODQzMThMMTAuMjc0NCAyLjQ5NjE5TDUuNDI1NjMgNi4xMzI3NEw0LjMxODA1IDUuMDI1MTZDNC4xMjI3OSA0LjgyOTkgMy44MDYyMSA0LjgyOTkgMy42MTA5NSA1LjAyNTE2QzMuNDE1NjkgNS4yMjA0MiAzLjQxNTY5IDUuNTM3IDMuNjEwOTUgNS43MzIyNkw1LjAyNTE2IDcuMTQ2NDhMNi4wODU4MiA4LjIwNzE0TDIuODE1NDUgMTEuNDc3NUMyLjYyMDE5IDExLjY3MjggMi42MjAxOSAxMS45ODk0IDIuODE1NDUgMTIuMTg0NkMzLjAxMDcyIDEyLjM3OTkgMy4zMjczIDEyLjM3OTkgMy41MjI1NiAxMi4xODQ2TDYuNzkyOTMgOC45MTQyNUw3Ljg1MzU5IDkuOTc0OTFMOS4yNjc4IDExLjM4OTFDOS40NjMwNiAxMS41ODQ0IDkuNzc5NjUgMTEuNTg0NCA5Ljk3NDkxIDExLjM4OTFDMTAuMTcwMiAxMS4xOTM5IDEwLjE3MDIgMTAuODc3MyA5Ljk3NDkxIDEwLjY4Mkw4Ljg2NzMzIDkuNTc0NDNMMTIuNTAzOSA0LjcyNTdMMTMuMTU2OSA1LjM3ODcxQzEzLjM1MjIgNS41NzM5NyAxMy42Njg3IDUuNTczOTcgMTMuODY0IDUuMzc4NzFDMTQuMDU5MyA1LjE4MzQ1IDE0LjA1OTMgNC44NjY4NyAxMy44NjQgNC42NzE2TDEyLjgwMzMgMy42MTA5NEwxMS4zODkxIDIuMTk2NzNMMTAuMzI4NSAxLjEzNjA3Wk02LjEzOTkyIDYuODQ3MDJMMTAuOTg4NyAzLjIxMDQ3TDExLjc4OTYgNC4wMTE0Mkw4LjE1MzA1IDguODYwMTVMNi4xMzk5MiA2Ljg0NzAyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuNjIxMjkgMS4xMzYwN0M5LjgxNjU2IDAuOTQwODA4IDEwLjEzMzEgMC45NDA4MDkgMTAuMzI4NCAxLjEzNjA3TDExLjM4OTEgMi4xOTY3M0wxMi44MDMzIDMuNjEwOTRMMTMuODYzOSA0LjY3MTZDMTQuMDU5MiA0Ljg2Njg3IDE0LjA1OTIgNS4xODM0NSAxMy44NjM5IDUuMzc4NzFDMTMuNjY4NyA1LjU3Mzk3IDEzLjM1MjEgNS41NzM5NyAxMy4xNTY4IDUuMzc4NzFMMTIuNTAzOCA0LjcyNTdMOC44NjcyNyA5LjU3NDQzTDkuOTc0ODUgMTAuNjgyQzEwLjE3MDEgMTAuODc3MyAxMC4xNzAxIDExLjE5MzkgOS45NzQ4NSAxMS4zODkxQzkuNzc5NTkgMTEuNTg0NCA5LjQ2MyAxMS41ODQ0IDkuMjY3NzQgMTEuMzg5MUw3Ljg1MzUzIDkuOTc0OTFMNi43OTI4NyA4LjkxNDI1TDMuNTIyNSAxMi4xODQ2QzMuMzI3MjQgMTIuMzc5OSAzLjAxMDY1IDEyLjM3OTkgMi44MTUzOSAxMi4xODQ2QzIuNjIwMTMgMTEuOTg5NCAyLjYyMDEzIDExLjY3MjggMi44MTUzOSAxMS40Nzc1TDYuMDg1NzYgOC4yMDcxNEw1LjAyNTEgNy4xNDY0OEwzLjYxMDg5IDUuNzMyMjZDMy40MTU2MyA1LjUzNyAzLjQxNTYyIDUuMjIwNDIgMy42MTA4OSA1LjAyNTE2QzMuODA2MTUgNC44Mjk5IDQuMTIyNzMgNC44Mjk5IDQuMzE3OTkgNS4wMjUxNkw1LjQyNTU3IDYuMTMyNzRMMTAuMjc0MyAyLjQ5NjE5TDkuNjIxMjkgMS44NDMxOEM5LjQyNjAzIDEuNjQ3OTIgOS40MjYwMyAxLjMzMTMzIDkuNjIxMjkgMS4xMzYwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuNjIxMjkgMS4xMzYwN0M5LjgxNjU2IDAuOTQwODA4IDEwLjEzMzEgMC45NDA4MDkgMTAuMzI4NCAxLjEzNjA3TDExLjM4OTEgMi4xOTY3M0wxMi44MDMzIDMuNjEwOTRMMTMuODYzOSA0LjY3MTZDMTQuMDU5MiA0Ljg2Njg3IDE0LjA1OTIgNS4xODM0NSAxMy44NjM5IDUuMzc4NzFDMTMuNjY4NyA1LjU3Mzk3IDEzLjM1MjEgNS41NzM5NyAxMy4xNTY4IDUuMzc4NzFMMTIuNTAzOCA0LjcyNTdMOC44NjcyNyA5LjU3NDQzTDkuOTc0ODUgMTAuNjgyQzEwLjE3MDEgMTAuODc3MyAxMC4xNzAxIDExLjE5MzkgOS45NzQ4NSAxMS4zODkxQzkuNzc5NTkgMTEuNTg0NCA5LjQ2MyAxMS41ODQ0IDkuMjY3NzQgMTEuMzg5MUw3Ljg1MzUzIDkuOTc0OTFMNi43OTI4NyA4LjkxNDI1TDMuNTIyNSAxMi4xODQ2QzMuMzI3MjQgMTIuMzc5OSAzLjAxMDY1IDEyLjM3OTkgMi44MTUzOSAxMi4xODQ2QzIuNjIwMTMgMTEuOTg5NCAyLjYyMDEzIDExLjY3MjggMi44MTUzOSAxMS40Nzc1TDYuMDg1NzYgOC4yMDcxNEw1LjAyNTEgNy4xNDY0OEwzLjYxMDg5IDUuNzMyMjZDMy40MTU2MyA1LjUzNyAzLjQxNTYyIDUuMjIwNDIgMy42MTA4OSA1LjAyNTE2QzMuODA2MTUgNC44Mjk5IDQuMTIyNzMgNC44Mjk5IDQuMzE3OTkgNS4wMjUxNkw1LjQyNTU3IDYuMTMyNzRMMTAuMjc0MyAyLjQ5NjE5TDkuNjIxMjkgMS44NDMxOEM5LjQyNjAzIDEuNjQ3OTIgOS40MjYwMyAxLjMzMTMzIDkuNjIxMjkgMS4xMzYwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHB0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTk5IDMuMDk5OThDNy4yNzkwNyAzLjA5OTk4IDcuMDk5OTkgMy4yNzkwNiA3LjA5OTk5IDMuNDk5OThDNy4wOTk5OSAzLjcyMDg5IDcuMjc5MDcgMy44OTk5OCA3LjQ5OTk5IDMuODk5OThIMTQuNUMxNC43MjA5IDMuODk5OTggMTQuOSAzLjcyMDg5IDE0LjkgMy40OTk5OEMxNC45IDMuMjc5MDYgMTQuNzIwOSAzLjA5OTk4IDE0LjUgMy4wOTk5OEg3LjQ5OTk5Wk03LjQ5OTk4IDUuMUM3LjI3OTA3IDUuMSA3LjA5OTk4IDUuMjc5MDggNy4wOTk5OCA1LjVDNy4wOTk5OCA1LjcyMDkxIDcuMjc5MDcgNS45IDcuNDk5OTggNS45SDE0LjVDMTQuNzIwOSA1LjkgMTQuOSA1LjcyMDkxIDE0LjkgNS41QzE0LjkgNS4yNzkwOCAxNC43MjA5IDUuMSAxNC41IDUuMUg3LjQ5OTk4Wk03LjEgNy41QzcuMSA3LjI3OTA4IDcuMjc5MDkgNy4xIDcuNSA3LjFIMTQuNUMxNC43MjA5IDcuMSAxNC45IDcuMjc5MDggMTQuOSA3LjVDMTQuOSA3LjcyMDkxIDE0LjcyMDkgNy45IDE0LjUgNy45SDcuNUM3LjI3OTA5IDcuOSA3LjEgNy43MjA5MSA3LjEgNy41Wk03LjQ5OTk4IDkuMUM3LjI3OTA3IDkuMSA3LjA5OTk4IDkuMjc5MDggNy4wOTk5OCA5LjVDNy4wOTk5OCA5LjcyMDkxIDcuMjc5MDcgOS45IDcuNDk5OTggOS45SDE0LjVDMTQuNzIwOSA5LjkgMTQuOSA5LjcyMDkxIDE0LjkgOS41QzE0LjkgOS4yNzkwOCAxNC43MjA5IDkuMSAxNC41IDkuMUg3LjQ5OTk4Wk03LjA5OTk4IDExLjVDNy4wOTk5OCAxMS4yNzkxIDcuMjc5MDcgMTEuMSA3LjQ5OTk4IDExLjFIMTQuNUMxNC43MjA5IDExLjEgMTQuOSAxMS4yNzkxIDE0LjkgMTEuNUMxNC45IDExLjcyMDkgMTQuNzIwOSAxMS45IDE0LjUgMTEuOUg3LjQ5OTk4QzcuMjc5MDcgMTEuOSA3LjA5OTk4IDExLjcyMDkgNy4wOTk5OCAxMS41Wk0yLjUgOS4yNTAwM0w1IDYuMDAwMDNIMEwyLjUgOS4yNTAwM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGh0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjUgMUM0LjIyMzg2IDEgNCAxLjIyMzg2IDQgMS41QzQgMS43NzYxNCA0LjIyMzg2IDIgNC41IDJIMTJWMTNINC41QzQuMjIzODYgMTMgNCAxMy4yMjM5IDQgMTMuNUM0IDEzLjc3NjEgNC4yMjM4NiAxNCA0LjUgMTRIMTJDMTIuNTUyMyAxNCAxMyAxMy41NTIzIDEzIDEzVjJDMTMgMS40NDc3MiAxMi41NTIzIDEgMTIgMUg0LjVaTTYuNjAzNTUgNC44OTY0NUM2LjQwODI5IDQuNzAxMTggNi4wOTE3MSA0LjcwMTE4IDUuODk2NDUgNC44OTY0NUM1LjcwMTE4IDUuMDkxNzEgNS43MDExOCA1LjQwODI5IDUuODk2NDUgNS42MDM1NUw3LjI5Mjg5IDdIMC41QzAuMjIzODU4IDcgMCA3LjIyMzg2IDAgNy41QzAgNy43NzYxNCAwLjIyMzg1OCA4IDAuNSA4SDcuMjkyODlMNS44OTY0NSA5LjM5NjQ1QzUuNzAxMTggOS41OTE3MSA1LjcwMTE4IDkuOTA4MjkgNS44OTY0NSAxMC4xMDM2QzYuMDkxNzEgMTAuMjk4OCA2LjQwODI5IDEwLjI5ODggNi42MDM1NSAxMC4xMDM2TDguODUzNTUgNy44NTM1NUM5LjA0ODgyIDcuNjU4MjkgOS4wNDg4MiA3LjM0MTcxIDguODUzNTUgNy4xNDY0NUw2LjYwMzU1IDQuODk2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx2dD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiAyLjVDMiAyLjIyMzg2IDIuMjIzODYgMiAyLjUgMkg1LjVDNS43NzYxNCAyIDYgMi4yMjM4NiA2IDIuNUM2IDIuNzc2MTQgNS43NzYxNCAzIDUuNSAzSDNWNS41QzMgNS43NzYxNCAyLjc3NjE0IDYgMi41IDZDMi4yMjM4NiA2IDIgNS43NzYxNCAyIDUuNVYyLjVaTTkgMi41QzkgMi4yMjM4NiA5LjIyMzg2IDIgOS41IDJIMTIuNUMxMi43NzYxIDIgMTMgMi4yMjM4NiAxMyAyLjVWNS41QzEzIDUuNzc2MTQgMTIuNzc2MSA2IDEyLjUgNkMxMi4yMjM5IDYgMTIgNS43NzYxNCAxMiA1LjVWM0g5LjVDOS4yMjM4NiAzIDkgMi43NzYxNCA5IDIuNVpNMi41IDlDMi43NzYxNCA5IDMgOS4yMjM4NiAzIDkuNVYxMkg1LjVDNS43NzYxNCAxMiA2IDEyLjIyMzkgNiAxMi41QzYgMTIuNzc2MSA1Ljc3NjE0IDEzIDUuNSAxM0gyLjVDMi4yMjM4NiAxMyAyIDEyLjc3NjEgMiAxMi41VjkuNUMyIDkuMjIzODYgMi4yMjM4NiA5IDIuNSA5Wk0xMi41IDlDMTIuNzc2MSA5IDEzIDkuMjIzODYgMTMgOS41VjEyLjVDMTMgMTIuNzc2MSAxMi43NzYxIDEzIDEyLjUgMTNIOS41QzkuMjIzODYgMTMgOSAxMi43NzYxIDkgMTIuNUM5IDEyLjIyMzkgOS4yMjM4NiAxMiA5LjUgMTJIMTJWOS41QzEyIDkuMjIzODYgMTIuMjIzOSA5IDEyLjUgOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGd0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDJDMC40NDc3MTUgMiAwIDIuNDQ3NzIgMCAzVjEyQzAgMTIuNTUyMyAwLjQ0NzcxNSAxMyAxIDEzSDE0QzE0LjU1MjMgMTMgMTUgMTIuNTUyMyAxNSAxMlYzQzE1IDIuNDQ3NzIgMTQuNTUyMyAyIDE0IDJIMVpNMSAzTDE0IDNWMy45MjQ5NEMxMy45MTc0IDMuOTI0ODYgMTMuODMzOCAzLjk0NzUxIDEzLjc1ODkgMy45OTUwNUw3LjUgNy45NjcwM0wxLjI0MTEyIDMuOTk1MDVDMS4xNjYyMSAzLjk0NzUxIDEuMDgyNiAzLjkyNDg2IDEgMy45MjQ5NFYzWk0xIDQuOTA3OTdWMTJIMTRWNC45MDc5N0w3Ljc0MTEyIDguODc5OTVDNy41OTM5NCA4Ljk3MzM1IDcuNDA2MDYgOC45NzMzNSA3LjI1ODg4IDguODc5OTVMMSA0LjkwNzk3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQ3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuOTQ3MjEgMC4xNjQ1OTRDNy42NjU2OSAwLjAyMzgyOTkgNy4zMzQzMSAwLjAyMzgzMDIgNy4wNTI3OSAwLjE2NDU5NEwwLjU1Mjc4NiAzLjQxNDU5QzAuMjE0MDAyIDMuNTgzOTkgMCAzLjkzMDI1IDAgNC4zMDkwMlYxMkMwIDEyLjU1MjMgMC40NDc3MTUgMTMgMSAxM0gxNEMxNC41NTIzIDEzIDE1IDEyLjU1MjMgMTUgMTJWNC4zMDkwMkMxNSAzLjkzMDI1IDE0Ljc4NiAzLjU4Mzk5IDE0LjQ0NzIgMy40MTQ1OUw3Ljk0NzIxIDAuMTY0NTk0Wk0xMy41Njg5IDQuMDkzNDlMNy41IDEuMDU5MDJMMS40MzEwNSA0LjA5MzQ5TDcuNSA3LjI5MTM2TDEzLjU2ODkgNC4wOTM0OVpNMSA0Ljg4MzY2VjEySDE0VjQuODgzNjZMNy43MDk3NyA4LjE5ODEzQzcuNTc4NDggOC4yNjczMSA3LjQyMTUyIDguMjY3MzEgNy4yOTAyMyA4LjE5ODEzTDEgNC44ODM2NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG10PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjQ0NDkgMC42MDg3NjVDOC4wMTgzIC0wLjEwNzAxNSA2Ljk4MTcgLTAuMTA3MDE1IDYuNTU1MDkgMC42MDg3NjZMMC4xNjExNzggMTEuMzM2OEMtMC4yNzU4MjQgMTIuMDcgMC4yNTI1MDMgMTMgMS4xMDYwOCAxM0gxMy44OTM5QzE0Ljc0NzUgMTMgMTUuMjc1OCAxMi4wNyAxNC44Mzg4IDExLjMzNjhMOC40NDQ5IDAuNjA4NzY1Wk03LjQxNDEgMS4xMjA3M0M3LjQ1Mjg4IDEuMDU1NjYgNy41NDcxMiAxLjA1NTY2IDcuNTg1OSAxLjEyMDczTDEzLjk3OTggMTEuODQ4OEMxNC4wMTk2IDExLjkxNTQgMTMuOTcxNSAxMiAxMy44OTM5IDEySDEuMTA2MDhDMS4wMjg0OSAxMiAwLjk4MDQ1NCAxMS45MTU0IDEuMDIwMTggMTEuODQ4OEw3LjQxNDEgMS4xMjA3M1pNNi44MjY5IDQuNDg2MTFDNi44MTIyMSA0LjEwNDIzIDcuMTE3ODMgMy43ODY2MyA3LjUgMy43ODY2M0M3Ljg4MjE3IDMuNzg2NjMgOC4xODc3OCA0LjEwNDIzIDguMTczMSA0LjQ4NjEyTDguMDE5MjEgOC40ODcwMUM4LjAwODQ4IDguNzY2IDcuNzc5MiA4Ljk4NjY0IDcuNSA4Ljk4NjY0QzcuMjIwOCA4Ljk4NjY0IDYuOTkxNTEgOC43NjYgNi45ODA3OCA4LjQ4NzAxTDYuODI2OSA0LjQ4NjExWk04LjI0OTg5IDEwLjQ3NkM4LjI0OTg5IDEwLjg5MDIgNy45MTQxIDExLjIyNiA3LjQ5OTg5IDExLjIyNkM3LjA4NTY3IDExLjIyNiA2Ljc0OTg5IDEwLjg5MDIgNi43NDk4OSAxMC40NzZDNi43NDk4OSAxMC4wNjE4IDcuMDg1NjcgOS43MjU5OSA3LjQ5OTg5IDkuNzI1OTlDNy45MTQxIDkuNzI1OTkgOC4yNDk4OSAxMC4wNjE4IDguMjQ5ODkgMTAuNDc2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgMUMyLjQ0NzcxIDEgMiAxLjQ0NzcyIDIgMlYxM0MyIDEzLjU1MjMgMi40NDc3MiAxNCAzIDE0SDEwLjVDMTAuNzc2MSAxNCAxMSAxMy43NzYxIDExIDEzLjVDMTEgMTMuMjIzOSAxMC43NzYxIDEzIDEwLjUgMTNIM1YyTDEwLjUgMkMxMC43NzYxIDIgMTEgMS43NzYxNCAxMSAxLjVDMTEgMS4yMjM4NiAxMC43NzYxIDEgMTAuNSAxSDNaTTEyLjYwMzYgNC44OTY0NUMxMi40MDgzIDQuNzAxMTggMTIuMDkxNyA0LjcwMTE4IDExLjg5NjQgNC44OTY0NUMxMS43MDEyIDUuMDkxNzEgMTEuNzAxMiA1LjQwODI5IDExLjg5NjQgNS42MDM1NUwxMy4yOTI5IDdINi41QzYuMjIzODYgNyA2IDcuMjIzODYgNiA3LjVDNiA3Ljc3NjE0IDYuMjIzODYgOCA2LjUgOEgxMy4yOTI5TDExLjg5NjQgOS4zOTY0NUMxMS43MDEyIDkuNTkxNzEgMTEuNzAxMiA5LjkwODI5IDExLjg5NjQgMTAuMTAzNkMxMi4wOTE3IDEwLjI5ODggMTIuNDA4MyAxMC4yOTg4IDEyLjYwMzYgMTAuMTAzNkwxNC44NTM2IDcuODUzNTVDMTUuMDQ4OCA3LjY1ODI5IDE1LjA0ODggNy4zNDE3MSAxNC44NTM2IDcuMTQ2NDVMMTIuNjAzNiA0Ljg5NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sd3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNSAyQzUuNzc2MTQgMiA2IDIuMjIzODYgNiAyLjVWNS41QzYgNS43NzYxNCA1Ljc3NjE0IDYgNS41IDZIMi41QzIuMjIzODYgNiAyIDUuNzc2MTQgMiA1LjVDMiA1LjIyMzg2IDIuMjIzODYgNSAyLjUgNUg1VjIuNUM1IDIuMjIzODYgNS4yMjM4NiAyIDUuNSAyWk05LjUgMkM5Ljc3NjE0IDIgMTAgMi4yMjM4NiAxMCAyLjVWNUgxMi41QzEyLjc3NjEgNSAxMyA1LjIyMzg2IDEzIDUuNUMxMyA1Ljc3NjE0IDEyLjc3NjEgNiAxMi41IDZIOS41QzkuMjIzODYgNiA5IDUuNzc2MTQgOSA1LjVWMi41QzkgMi4yMjM4NiA5LjIyMzg2IDIgOS41IDJaTTIgOS41QzIgOS4yMjM4NiAyLjIyMzg2IDkgMi41IDlINS41QzUuNzc2MTQgOSA2IDkuMjIzODYgNiA5LjVWMTIuNUM2IDEyLjc3NjEgNS43NzYxNCAxMyA1LjUgMTNDNS4yMjM4NiAxMyA1IDEyLjc3NjEgNSAxMi41VjEwSDIuNUMyLjIyMzg2IDEwIDIgOS43NzYxNCAyIDkuNVpNOSA5LjVDOSA5LjIyMzg2IDkuMjIzODYgOSA5LjUgOUgxMi41QzEyLjc3NjEgOSAxMyA5LjIyMzg2IDEzIDkuNUMxMyA5Ljc3NjE0IDEyLjc3NjEgMTAgMTIuNSAxMEgxMFYxMi41QzEwIDEyLjc3NjEgOS43NzYxNCAxMyA5LjUgMTNDOS4yMjM4NiAxMyA5IDEyLjc3NjEgOSAxMi41VjkuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGJ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zIDJDMi40NDc3MiAyIDIgMi40NDc3MiAyIDNWMTJDMiAxMi41NTIzIDIuNDQ3NzIgMTMgMyAxM0gxMkMxMi41NTIzIDEzIDEzIDEyLjU1MjMgMTMgMTJWOC41QzEzIDguMjIzODYgMTIuNzc2MSA4IDEyLjUgOEMxMi4yMjM5IDggMTIgOC4yMjM4NiAxMiA4LjVWMTJIM1YzTDYuNSAzQzYuNzc2MTQgMyA3IDIuNzc2MTQgNyAyLjVDNyAyLjIyMzg2IDYuNzc2MTQgMiA2LjUgMkgzWk0xMi44NTM2IDIuMTQ2NDVDMTIuOTAxNSAyLjE5NDM5IDEyLjkzNzcgMi4yNDk2NCAxMi45NjIxIDIuMzA4NjFDMTIuOTg2MSAyLjM2NjY5IDEyLjk5OTYgMi40MzAzIDEzIDIuNDk3TDEzIDIuNVYyLjUwMDQ5VjUuNUMxMyA1Ljc3NjE0IDEyLjc3NjEgNiAxMi41IDZDMTIuMjIzOSA2IDEyIDUuNzc2MTQgMTIgNS41VjMuNzA3MTFMNi44NTM1NSA4Ljg1MzU1QzYuNjU4MjkgOS4wNDg4MiA2LjM0MTcxIDkuMDQ4ODIgNi4xNDY0NSA4Ljg1MzU1QzUuOTUxMTggOC42NTgyOSA1Ljk1MTE4IDguMzQxNzEgNi4xNDY0NSA4LjE0NjQ1TDExLjI5MjkgM0g5LjVDOS4yMjM4NiAzIDkgMi43NzYxNCA5IDIuNUM5IDIuMjIzODYgOS4yMjM4NiAyIDkuNSAySDEyLjQ5OTlIMTIuNUMxMi41Njc4IDIgMTIuNjMyNCAyLjAxMzQ5IDEyLjY5MTQgMi4wMzc5NEMxMi43NTA0IDIuMDYyMzQgMTIuODA1NiAyLjA5ODUxIDEyLjg1MzYgMi4xNDY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHh0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNC43NjQ5IDYuMDc1OTVDMTQuOTk5MSA2LjIyMjMxIDE1LjA3MDMgNi41MzA3OCAxNC45MjM5IDYuNzY0OTVDMTQuNDg0OSA3LjQ2NzQyIDEzLjk2MzIgOC4xMDY0NCAxMy4zNzAyIDguNjYzMDRMMTQuNTcxMiA5Ljg2NDA1QzE0Ljc2NjQgMTAuMDU5MyAxNC43NjY0IDEwLjM3NTkgMTQuNTcxMiAxMC41NzEyQzE0LjM3NTkgMTAuNzY2NCAxNC4wNTkzIDEwLjc2NjQgMTMuODY0MSAxMC41NzEyTDEyLjYwMTEgOS4zMDgxNkMxMS44MDQ5IDkuOTAyODIgMTAuOTA4OSAxMC4zNjIxIDkuOTMzNzQgMTAuNjUxTDEwLjM4MyAxMi4zMjc2QzEwLjQ1NDQgMTIuNTk0NCAxMC4yOTYxIDEyLjg2ODUgMTAuMDI5NCAxMi45NEM5Ljc2MjY2IDEzLjAxMTUgOS40ODg1IDEyLjg1MzIgOS40MTcwMyAxMi41ODY0TDguOTU5MTYgMTAuODc3NUM4LjQ4NzQyIDEwLjk1OCA4LjAwMDM1IDEwLjk5OTkgNy41IDEwLjk5OTlDNi45OTk2NCAxMC45OTk5IDYuNTEyNTcgMTAuOTU4IDYuMDQwODIgMTAuODc3NUw1LjU4Mjk5IDEyLjU4NjRDNS41MTE1MyAxMi44NTMyIDUuMjM3MzcgMTMuMDExNSA0Ljk3MDYzIDEyLjk0QzQuNzAzOSAxMi44Njg1IDQuNTQ1NiAxMi41OTQ0IDQuNjE3MDYgMTIuMzI3N0w1LjA2NjI0IDEwLjY1MUM0LjA5MTExIDEwLjM2MjEgMy4xOTUwMyA5LjkwMjgxIDIuMzk4OSA5LjMwODE0TDEuMTM1OSAxMC41NzExQzAuOTQwNjM4IDEwLjc2NjQgMC42MjQwNTggMTAuNzY2NCAwLjQyODc5NyAxMC41NzExQzAuMjMzNTM3IDEwLjM3NTkgMC4yMzM1MzcgMTAuMDU5MyAwLjQyODc5NyA5Ljg2NDA0TDEuNjI5ODIgOC42NjMwMkMxLjAzNjgyIDguMTA2NDMgMC41MTUxMTMgNy40Njc0MiAwLjA3NjA2NzcgNi43NjQ5NUMtMC4wNzAyODY3IDYuNTMwNzggMC4wMDA4OTg1NDQgNi4yMjIzMSAwLjIzNTA2NCA2LjA3NTk1QzAuNDY5MjMgNS45Mjk2IDAuNzc3NzAzIDYuMDAwNzggMC45MjQwNTcgNi4yMzQ5NUMxLjQwMzU0IDcuMDAyMTIgMS45ODkgNy42ODA1NiAyLjY2MjMzIDguMjQyN0MyLjY3MzE1IDguMjUwOTYgMi42ODM3IDguMjU5NzEgMi42OTM5NyA4LjI2ODk3QzQuMDA4OTcgOS4zNTUyNyA1LjY1NTM2IDkuOTk5OSA3LjUgOS45OTk5QzEwLjMwNzggOS45OTk5IDEyLjY1NjMgOC41MDYyOSAxNC4wNzU5IDYuMjM0OTVDMTQuMjIyMyA2LjAwMDc4IDE0LjUzMDggNS45Mjk2IDE0Ljc2NDkgNi4wNzU5NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LF90PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy4zNTM2IDIuMzUzNTVDMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMS44NDE3MSAxMy4zNTM2IDEuNjQ2NDVDMTMuMTU4MyAxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMi42NDY0IDEuNjQ2NDVMMTAuNjgyOCAzLjYxMDEyQzkuNzA2NTIgMy4yMTY3MSA4LjYzNzU5IDMgNy41IDNDNC4zMDc4NiAzIDEuNjU2MzkgNC43MDYzOCAwLjA3NjAwMDIgNy4yMzUwMUMtMC4wMjUzMzM4IDcuMzk3MTUgLTAuMDI1MzMzNCA3LjYwMjg4IDAuMDc2MDAxNCA3Ljc2NTAxQzAuOTAyOTQ1IDkuMDg4MTIgMi4wMjMxNCAxMC4xODYxIDMuMzYwNjEgMTAuOTMyM0wxLjY0NjQ1IDEyLjY0NjRDMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTMuMTU4MyAxLjY0NjQ1IDEzLjM1MzZDMS44NDE3MSAxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAyLjM1MzU1IDEzLjM1MzZMNC4zMTcyMyAxMS4zODk5QzUuMjkzNDggMTEuNzgzMyA2LjM2MjQxIDEyIDcuNSAxMkMxMC42OTIxIDEyIDEzLjM0MzYgMTAuMjkzNiAxNC45MjQgNy43NjUwMUMxNS4wMjUzIDcuNjAyODggMTUuMDI1MyA3LjM5NzE1IDE0LjkyNCA3LjIzNTAxQzE0LjA5NzEgNS45MTE5IDEyLjk3NjkgNC44MTM5MSAxMS42Mzk0IDQuMDY3NzFMMTMuMzUzNiAyLjM1MzU1Wk05LjkwNDI4IDQuMzg4NjFDOS4xNTMzMiA0LjEzNjEgOC4zNDc1OSA0IDcuNSA0QzQuODAyODUgNCAyLjUyOTUyIDUuMzc4MTYgMS4wOTYyMiA3LjUwMDAxQzEuODcyODQgOC42NDk3IDIuODk2MDkgOS41ODEwNiA0LjA5OTc0IDEwLjE5MzFMOS45MDQyOCA0LjM4ODYxWk01LjA5NTcyIDEwLjYxMTRMMTAuOTAwMyA0LjgwNjg1QzEyLjEwMzkgNS40MTg5NCAxMy4xMjcyIDYuMzUwMzEgMTMuOTAzOCA3LjUwMDAxQzEyLjQ3MDUgOS42MjE4MyAxMC4xOTcxIDExIDcuNSAxMUM2LjY1MjQxIDExIDUuODQ2NjggMTAuODYzOSA1LjA5NTcyIDEwLjYxMTRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxMdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDExQzQuODAyODUgMTEgMi41Mjk1MiA5LjYyMTg0IDEuMDk2MjIgNy41MDAwMUMyLjUyOTUyIDUuMzc4MTYgNC44MDI4NSA0IDcuNSA0QzEwLjE5NzEgNCAxMi40NzA1IDUuMzc4MTYgMTMuOTAzOCA3LjUwMDAxQzEyLjQ3MDUgOS42MjE4MyAxMC4xOTcxIDExIDcuNSAxMVpNNy41IDNDNC4zMDc4NiAzIDEuNjU2MzkgNC43MDYzOCAwLjA3NjAwMDIgNy4yMzUwMUMtMC4wMjUzMzM4IDcuMzk3MTUgLTAuMDI1MzMzNCA3LjYwMjg4IDAuMDc2MDAxNCA3Ljc2NTAxQzEuNjU2MzkgMTAuMjkzNiA0LjMwNzg2IDEyIDcuNSAxMkMxMC42OTIxIDEyIDEzLjM0MzYgMTAuMjkzNiAxNC45MjQgNy43NjUwMUMxNS4wMjUzIDcuNjAyODggMTUuMDI1MyA3LjM5NzE1IDE0LjkyNCA3LjIzNTAxQzEzLjM0MzYgNC43MDYzOCAxMC42OTIxIDMgNy41IDNaTTcuNSA5LjVDOC42MDQ1NyA5LjUgOS41IDguNjA0NTcgOS41IDcuNUM5LjUgNi4zOTU0MyA4LjYwNDU3IDUuNSA3LjUgNS41QzYuMzk1NDMgNS41IDUuNSA2LjM5NTQzIDUuNSA3LjVDNS41IDguNjA0NTcgNi4zOTU0MyA5LjUgNy41IDkuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE90PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc2ODkyQzMuODQyMjIgMC44NzY4OTIgMC44NzcwNzUgMy44NDIwNCAwLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDExLjE1NzQgMy44NDIyMiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMxMS4xNTc2IDE0LjEyMjYgMTQuMTIyNyAxMS4xNTc0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDMuODQyMDQgMTEuMTU3NiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyWk0xLjgyNzA4IDcuNDk5NzJDMS44MjcwOCA0LjM2NjcxIDQuMzY2ODkgMS44MjY4OSA3LjQ5OTkxIDEuODI2ODlDMTAuNjMyOSAxLjgyNjg5IDEzLjE3MjcgNC4zNjY3MSAxMy4xNzI3IDcuNDk5NzJDMTMuMTcyNyAxMC42MzI3IDEwLjYzMjkgMTMuMTcyNiA3LjQ5OTkxIDEzLjE3MjZDNC4zNjY4OSAxMy4xNzI2IDEuODI3MDggMTAuNjMyNyAxLjgyNzA4IDcuNDk5NzJaTTUuMDM3NDcgOS4yMTM5NUM0Ljg3OTQ5IDguOTg3NDYgNC41Njc4MiA4LjkzMTkzIDQuMzQxMzMgOS4wODk5MUM0LjExNDg0IDkuMjQ3ODkgNC4wNTkzMSA5LjU1OTU2IDQuMjE3MjkgOS43ODYwNUM0LjkzOTI2IDEwLjgyMTEgNi4xNDAzMyAxMS41IDcuNTAwMDQgMTEuNUM4Ljg1OTc0IDExLjUgMTAuMDYwOCAxMC44MjExIDEwLjc4MjggOS43ODYwNUMxMC45NDA4IDkuNTU5NTYgMTAuODg1MiA5LjI0Nzg5IDEwLjY1ODcgOS4wODk5MUMxMC40MzIzIDguOTMxOTMgMTAuMTIwNiA4Ljk4NzQ2IDkuOTYyNiA5LjIxMzk1QzkuNDE5NjMgOS45OTIzOCA4LjUxOTA3IDEwLjUgNy41MDAwNCAxMC41QzYuNDgxIDEwLjUgNS41ODA0NCA5Ljk5MjM4IDUuMDM3NDcgOS4yMTM5NVpNNS4zNzUwMyA2Ljg0OTk4QzUuODU4MjggNi44NDk5OCA2LjI1MDAzIDYuNDU4MTUgNi4yNTAwMyA1Ljk3NDk4QzYuMjUwMDMgNS40OTE4IDUuODU4MjggNS4wOTk5OCA1LjM3NTAzIDUuMDk5OThDNC44OTE3OSA1LjA5OTk4IDQuNTAwMDMgNS40OTE4IDQuNTAwMDMgNS45NzQ5OEM0LjUwMDAzIDYuNDU4MTUgNC44OTE3OSA2Ljg0OTk4IDUuMzc1MDMgNi44NDk5OFpNMTAuNSA1Ljk3NDk4QzEwLjUgNi40NTgxNSAxMC4xMDgzIDYuODQ5OTggOS42MjUwMyA2Ljg0OTk4QzkuMTQxNzkgNi44NDk5OCA4Ljc1MDAzIDYuNDU4MTUgOC43NTAwMyA1Ljk3NDk4QzguNzUwMDMgNS40OTE4IDkuMTQxNzkgNS4wOTk5OCA5LjYyNTAzIDUuMDk5OThDMTAuMTA4MyA1LjA5OTk4IDEwLjUgNS40OTE4IDEwLjUgNS45NzQ5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEV0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjAwMDA1IDIuMDQ5OTlINS41MjUwNUM0LjcxMDQzIDIuMDQ5OTkgNC4wNTAwNSAyLjcxMDM3IDQuMDUwMDUgMy41MjQ5OUM0LjA1MDA1IDQuMzM5NjEgNC43MTA0MyA0Ljk5OTk5IDUuNTI1MDUgNC45OTk5OUg3LjAwMDA1VjIuMDQ5OTlaTTcuMDAwMDUgMS4wNDk5OUg4LjAwMDA1SDkuNDc1MDVDMTAuODQyIDEuMDQ5OTkgMTEuOTUgMi4xNTgwOCAxMS45NSAzLjUyNDk5QzExLjk1IDQuMzMxNjMgMTEuNTY0MiA1LjA0ODE1IDEwLjk2NjkgNS40OTk5OUMxMS41NjQyIDUuOTUxODQgMTEuOTUgNi42NjgzNiAxMS45NSA3LjQ3NUMxMS45NSA4Ljg0MTkgMTAuODQyIDkuOTUgOS40NzUwNSA5Ljk1QzguOTIyMzYgOS45NSA4LjQxMTk4IDkuNzY4ODQgOC4wMDAwNSA5LjQ2MjY2VjkuOTVMOC4wMDAwNSAxMS40MjVDOC4wMDAwNSAxMi43OTE5IDYuODkxOTUgMTMuOSA1LjUyNTA1IDEzLjlDNC4xNTgxNCAxMy45IDMuMDUwMDUgMTIuNzkxOSAzLjA1MDA1IDExLjQyNUMzLjA1MDA1IDEwLjYxODMgMy40MzU5MyA5LjkwMTg0IDQuMDMzMTcgOS40NDk5OUMzLjQzNTkzIDguOTk4MTQgMy4wNTAwNSA4LjI4MTYzIDMuMDUwMDUgNy40NzVDMy4wNTAwNSA2LjY2ODM2IDMuNDM1OTQgNS45NTE4NCA0LjAzMzE5IDUuNUMzLjQzNTk0IDUuMDQ4MTUgMy4wNTAwNSA0LjMzMTYzIDMuMDUwMDUgMy41MjQ5OUMzLjA1MDA1IDIuMTU4MDggNC4xNTgxNCAxLjA0OTk5IDUuNTI1MDUgMS4wNDk5OUg3LjAwMDA1Wk04LjAwMDA1IDIuMDQ5OTlWNC45OTk5OUg5LjQ3NTA1QzEwLjI4OTcgNC45OTk5OSAxMC45NSA0LjMzOTYxIDEwLjk1IDMuNTI0OTlDMTAuOTUgMi43MTAzNyAxMC4yODk3IDIuMDQ5OTkgOS40NzUwNSAyLjA0OTk5SDguMDAwMDVaTTUuNTI1MDUgOC45NDk5OEg3LjAwMDA1TDcuMDAwMDUgNy40Nzg4TDcuMDAwMDUgNy40NzVMNy4wMDAwNSA3LjQ3MTJWNkg1LjUyNTA1QzQuNzEwNDMgNiA0LjA1MDA1IDYuNjYwMzggNC4wNTAwNSA3LjQ3NUM0LjA1MDA1IDguMjg3NjcgNC43MDcyNyA4Ljk0Njg0IDUuNTE5MiA4Ljk0OTk5TDUuNTI1MDUgOC45NDk5OFpNNC4wNTAwNSAxMS40MjVDNC4wNTAwNSAxMC42MTIzIDQuNzA3MjcgOS45NTMxNSA1LjUxOTIgOS45NDk5OUw1LjUyNTA1IDkuOTVINy4wMDAwNUw3LjAwMDA1IDExLjQyNUM3LjAwMDA1IDEyLjIzOTYgNi4zMzk2NyAxMi45IDUuNTI1MDUgMTIuOUM0LjcxMDQzIDEyLjkgNC4wNTAwNSAxMi4yMzk2IDQuMDUwMDUgMTEuNDI1Wk04LjAwMDA1IDcuNDcyMDZDOC4wMDE2NCA2LjY1ODc5IDguNjYxNDEgNiA5LjQ3NTA1IDZDMTAuMjg5NyA2IDEwLjk1IDYuNjYwMzggMTAuOTUgNy40NzVDMTAuOTUgOC4yODk2MiAxMC4yODk3IDguOTUgOS40NzUwNSA4Ljk1QzguNjYxNDEgOC45NSA4LjAwMTY0IDguMjkxMjEgOC4wMDAwNSA3LjQ3Nzk0VjcuNDcyMDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxTdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy41IDJDMy4yMjM4NiAyIDMgMi4yMjM4NiAzIDIuNVYxMi41QzMgMTIuNzc2MSAzLjIyMzg2IDEzIDMuNSAxM0gxMS41QzExLjc3NjEgMTMgMTIgMTIuNzc2MSAxMiAxMi41VjZIOC41QzguMjIzODYgNiA4IDUuNzc2MTQgOCA1LjVWMkgzLjVaTTkgMi43MDcxMUwxMS4yOTI5IDVIOVYyLjcwNzExWk0yIDIuNUMyIDEuNjcxNTcgMi42NzE1NyAxIDMuNSAxSDguNUM4LjYzMjYxIDEgOC43NTk3OSAxLjA1MjY4IDguODUzNTUgMS4xNDY0NUwxMi44NTM2IDUuMTQ2NDVDMTIuOTQ3MyA1LjI0MDIxIDEzIDUuMzY3MzkgMTMgNS41VjEyLjVDMTMgMTMuMzI4NCAxMi4zMjg0IDE0IDExLjUgMTRIMy41QzIuNjcxNTcgMTQgMiAxMy4zMjg0IDIgMTIuNVYyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxNdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyAyLjVDMyAyLjIyMzg2IDMuMjIzODYgMiAzLjUgMkg5LjI5Mjg5TDEyIDQuNzA3MTFWMTIuNUMxMiAxMi43NzYxIDExLjc3NjEgMTMgMTEuNSAxM0gzLjVDMy4yMjM4NiAxMyAzIDEyLjc3NjEgMyAxMi41VjIuNVpNMy41IDFDMi42NzE1NyAxIDIgMS42NzE1NyAyIDIuNVYxMi41QzIgMTMuMzI4NCAyLjY3MTU3IDE0IDMuNSAxNEgxMS41QzEyLjMyODQgMTQgMTMgMTMuMzI4NCAxMyAxMi41VjQuNjAzNTVDMTMgNC40MDQ2NCAxMi45MjEgNC4yMTM4OCAxMi43ODAzIDQuMDczMjJMOS44NTM1NSAxLjE0NjQ1QzkuNzU5NzkgMS4wNTI2OCA5LjYzMjYxIDEgOS41IDFIMy41Wk01LjI1IDdDNC45NzM4NiA3IDQuNzUgNy4yMjM4NiA0Ljc1IDcuNUM0Ljc1IDcuNzc2MTQgNC45NzM4NiA4IDUuMjUgOEg5Ljc1QzEwLjAyNjEgOCAxMC4yNSA3Ljc3NjE0IDEwLjI1IDcuNUMxMC4yNSA3LjIyMzg2IDEwLjAyNjEgNyA5Ljc1IDdINS4yNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGp0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjUgMkMzLjIyMzg2IDIgMyAyLjIyMzg2IDMgMi41VjEyLjVDMyAxMi43NzYxIDMuMjIzODYgMTMgMy41IDEzSDExLjVDMTEuNzc2MSAxMyAxMiAxMi43NzYxIDEyIDEyLjVWNC43MDcxMUw5LjI5Mjg5IDJIMy41Wk0yIDIuNUMyIDEuNjcxNTcgMi42NzE1NyAxIDMuNSAxSDkuNUM5LjYzMjYxIDEgOS43NTk3OSAxLjA1MjY4IDkuODUzNTUgMS4xNDY0NUwxMi43ODAzIDQuMDczMjJDMTIuOTIxIDQuMjEzODggMTMgNC40MDQ2NCAxMyA0LjYwMzU1VjEyLjVDMTMgMTMuMzI4NCAxMi4zMjg0IDE0IDExLjUgMTRIMy41QzIuNjcxNTcgMTQgMiAxMy4zMjg0IDIgMTIuNVYyLjVaTTQuNzUgNy41QzQuNzUgNy4yMjM4NiA0Ljk3Mzg2IDcgNS4yNSA3SDdWNS4yNUM3IDQuOTczODYgNy4yMjM4NiA0Ljc1IDcuNSA0Ljc1QzcuNzc2MTQgNC43NSA4IDQuOTczODYgOCA1LjI1VjdIOS43NUMxMC4wMjYxIDcgMTAuMjUgNy4yMjM4NiAxMC4yNSA3LjVDMTAuMjUgNy43NzYxNCAxMC4wMjYxIDggOS43NSA4SDhWOS43NUM4IDEwLjAyNjEgNy43NzYxNCAxMC4yNSA3LjUgMTAuMjVDNy4yMjM4NiAxMC4yNSA3IDEwLjAyNjEgNyA5Ljc1VjhINS4yNUM0Ljk3Mzg2IDggNC43NSA3Ljc3NjE0IDQuNzUgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sa3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgMi41QzMgMi4yMjM4NiAzLjIyMzg2IDIgMy41IDJIOS4wODU3OUM5LjIxODM5IDIgOS4zNDU1NyAyLjA1MjY4IDkuNDM5MzQgMi4xNDY0NUwxMS44NTM2IDQuNTYwNjZDMTEuOTQ3MyA0LjY1NDQzIDEyIDQuNzgxNjEgMTIgNC45MTQyMVYxMi41QzEyIDEyLjc3NjEgMTEuNzc2MSAxMyAxMS41IDEzSDMuNUMzLjIyMzg2IDEzIDMgMTIuNzc2MSAzIDEyLjVWMi41Wk0zLjUgMUMyLjY3MTU3IDEgMiAxLjY3MTU3IDIgMi41VjEyLjVDMiAxMy4zMjg0IDIuNjcxNTcgMTQgMy41IDE0SDExLjVDMTIuMzI4NCAxNCAxMyAxMy4zMjg0IDEzIDEyLjVWNC45MTQyMUMxMyA0LjUxNjM5IDEyLjg0MiA0LjEzNDg2IDEyLjU2MDcgMy44NTM1NUwxMC4xNDY0IDEuNDM5MzRDOS44NjUxNCAxLjE1ODA0IDkuNDgzNjEgMSA5LjA4NTc5IDFIMy41Wk00LjUgNEM0LjIyMzg2IDQgNCA0LjIyMzg2IDQgNC41QzQgNC43NzYxNCA0LjIyMzg2IDUgNC41IDVINy41QzcuNzc2MTQgNSA4IDQuNzc2MTQgOCA0LjVDOCA0LjIyMzg2IDcuNzc2MTQgNCA3LjUgNEg0LjVaTTQuNSA3QzQuMjIzODYgNyA0IDcuMjIzODYgNCA3LjVDNCA3Ljc3NjE0IDQuMjIzODYgOCA0LjUgOEgxMC41QzEwLjc3NjEgOCAxMSA3Ljc3NjE0IDExIDcuNUMxMSA3LjIyMzg2IDEwLjc3NjEgNyAxMC41IDdINC41Wk00LjUgMTBDNC4yMjM4NiAxMCA0IDEwLjIyMzkgNCAxMC41QzQgMTAuNzc2MSA0LjIyMzg2IDExIDQuNSAxMUgxMC41QzEwLjc3NjEgMTEgMTEgMTAuNzc2MSAxMSAxMC41QzExIDEwLjIyMzkgMTAuNzc2MSAxMCAxMC41IDEwSDQuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFJ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjEwNTA1IDEyQzQuNzA4MDUgMTIgNC40MjM2IDExLjkxMiA0LjI1MTcxIDExLjczNkM0LjA4MzkgMTEuNTU1OSA0IDExLjI3MTUgNCAxMC44ODI3VjQuMTE3MzNDNCAzLjcyMDMzIDQuMDg1OTUgMy40MzU4OCA0LjI1Nzg0IDMuMjYzOThDNC40MzM4MyAzLjA4Nzk5IDQuNzE2MjMgMyA1LjEwNTA1IDNDNi40Mjc0MSAzIDguMjU1OTEgMyA5LjAyODUyIDNDMTAuMTM3MyAzIDExLjA1MzkgMy45ODE1MyAxMS4wNTM5IDUuMTg0NkMxMS4wNTM5IDYuMDg1MDEgMTAuNjAzNyA2LjgxODU1IDkuNzAzMjcgNy4yMzYwMkMxMC44NjU3IDcuNDQ4NTEgMTEuNTE3NiA4LjYyNzg3IDExLjUxNzYgOS40ODEyOEMxMS41MTc2IDEwLjUxMjUgMTAuOTkwMiAxMiA5LjI3NzM0IDEyQzguNzc3NDIgMTIgNi40MjYyNiAxMiA1LjEwNTA1IDEyWk04LjM3ODkxIDguMDAzNDFINS44VjEwLjYzMUg4LjM3ODkxQzguOSAxMC42MzEgOS42Mjk2IDEwLjEyMTEgOS42Mjk2IDkuMjk4NzdDOS42Mjk2IDguNDc2NDMgOC45IDguMDAzNDEgOC4zNzg5MSA4LjAwMzQxWk01LjggNC4zNjkwM1Y2LjY5NTc3SDguMTc5NjlDOC41MzkwNiA2LjY5NTc3IDkuMjc3MzQgNi4zNTkzOSA5LjI3NzM0IDUuNTAwMDJDOS4yNzczNCA0LjY0MDY0IDguNDgwNDcgNC4zNjkwMyA4LjE3OTY5IDQuMzY5MDNINS44WlwiLGZpbGw6bn0pKX0sUHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuNSA0LjVDMi41IDMuMDk4ODYgMy41OTg4NiAyIDUgMkgxMi40OTlDMTIuNzc1MiAyIDEzIDIuMjIzODYgMTMgMi41QzEzIDIuNzc2MTQgMTIuNzc2MSAzIDEyLjUgM0g4LjY5MjQ0TDguNDA1MDkgMy44NTQ1OEM4LjE4ODY5IDQuNDk3NTIgNy44OTQwMSA1LjM3MTk3IDcuNTgwOTEgNi4yOTc5NEM3LjUwMjU5IDYuNTI5NTYgNy40MjMwOCA2Ljc2NDUzIDcuMzQzMzIgN0g4LjVDOC43NzYxNCA3IDkgNy4yMjM4NiA5IDcuNUM5IDcuNzc2MTQgOC43NzYxNCA4IDguNSA4SDcuMDA0MDdDNi41NjcyNCA5LjI4NTQzIDYuMTY0MzUgMTAuNDYxMyA1Ljk1Nzk5IDExLjAzODZDNS42MzYyNyAxMS45Mzg2IDUuMjA3MTIgMTIuNDg1NyA0LjY2NzQxIDEyLjc3NzhDNC4xNjMzNSAxMy4wNTA3IDMuNjQxNTQgMTMuMDUwMyAzLjI4Mzc4IDEzLjA1TDMuMjUgMTMuMDVDMi45NDYyNCAxMy4wNSAyLjcgMTIuODAzNyAyLjcgMTIuNUMyLjcgMTIuMTk2MiAyLjk0NjI0IDExLjk1IDMuMjUgMTEuOTVDMy42NDE4MiAxMS45NSAzLjkwMzUgMTEuOTQwNSA0LjE0Mzc0IDExLjgxMDVDNC4zNjQ0MyAxMS42OTEgNC42NTUzMiAxMS40MTQ4IDQuOTIyMTcgMTAuNjY4M0M1LjEwNjk1IDEwLjE1MTQgNS40NTM3NSA5LjE0MTM0IDUuODQyMiA4SDQuNUM0LjIyMzg2IDggNCA3Ljc3NjE0IDQgNy41QzQgNy4yMjM4NiA0LjIyMzg2IDcgNC41IDdINi4xODE4N0M2LjMwMTI3IDYuNjQ3ODUgNi40MjEzMiA2LjI5MzIzIDYuNTM4ODcgNS45NDU1OUM2Ljg1MTc1IDUuMDIwMjUgNy4xNDYyNyA0LjE0NjMxIDcuMzYyNTYgMy41MDM2OEw3LjUzMTkyIDNINUM0LjE1MTE0IDMgMy41IDMuNjUxMTQgMy41IDQuNUMzLjUgNC43NzYxNCAzLjI3NjE0IDUgMyA1QzIuNzIzODYgNSAyLjUgNC43NzYxNCAyLjUgNC41WlwiLGZpbGw6bn0pKX0sQXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNjc0OTQgMy41MDAxN0M1LjY3NDk0IDMuMjUxNjQgNS44NzY0MSAzLjA1MDE3IDYuMTI0OTQgMy4wNTAxN0gxMC42MjQ5QzEwLjg3MzUgMy4wNTAxNyAxMS4wNzQ5IDMuMjUxNjQgMTEuMDc0OSAzLjUwMDE3QzExLjA3NDkgMy43NDg3IDEwLjg3MzUgMy45NTAxNyAxMC42MjQ5IDMuOTUwMTdIOS4wMDU4N0w3LjIzMDkgMTEuMDVIOC44NzQ5M0M5LjEyMzQ1IDExLjA1IDkuMzI0OTMgMTEuMjUxNSA5LjMyNDkzIDExLjVDOS4zMjQ5MyAxMS43NDg2IDkuMTIzNDUgMTEuOTUgOC44NzQ5MyAxMS45NUg0LjM3NDkzQzQuMTI2NCAxMS45NSAzLjkyNDkzIDExLjc0ODYgMy45MjQ5MyAxMS41QzMuOTI0OTMgMTEuMjUxNSA0LjEyNjQgMTEuMDUgNC4zNzQ5MyAxMS4wNUg1Ljk5Mzk3TDcuNzY4OTQgMy45NTAxN0g2LjEyNDk0QzUuODc2NDEgMy45NTAxNyA1LjY3NDk0IDMuNzQ4NyA1LjY3NDk0IDMuNTAwMTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxJdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC43OTk5MyAzLjUwMDE3QzQuNzk5OTMgMy4yNTE2NCA1LjAwMTQgMy4wNTAxNyA1LjI0OTkzIDMuMDUwMTdIOS43NDk5M0M5Ljk5ODQ1IDMuMDUwMTcgMTAuMTk5OSAzLjI1MTY0IDEwLjE5OTkgMy41MDAxN0MxMC4xOTk5IDMuNzQ4NyA5Ljk5ODQ1IDMuOTUwMTcgOS43NDk5MyAzLjk1MDE3SDguMDk5OTNWMTEuMDVIOS43NDk5NEM5Ljk5ODQ3IDExLjA1IDEwLjE5OTkgMTEuMjUxNSAxMC4xOTk5IDExLjVDMTAuMTk5OSAxMS43NDg2IDkuOTk4NDcgMTEuOTUgOS43NDk5NCAxMS45NUg1LjI0OTk0QzUuMDAxNDEgMTEuOTUgNC43OTk5NCAxMS43NDg2IDQuNzk5OTQgMTEuNUM0Ljc5OTk0IDExLjI1MTUgNS4wMDE0MSAxMS4wNSA1LjI0OTk0IDExLjA1SDYuODk5OTNWMy45NTAxN0g1LjI0OTkzQzUuMDAxNCAzLjk1MDE3IDQuNzk5OTMgMy43NDg3IDQuNzk5OTMgMy41MDAxN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFR0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjc4MjMzIDIuMjE3MDdDMi43MDczMiAyLjE0MjA2IDIuNjA1NTcgMi4wOTk5MSAyLjQ5OTQ5IDIuMDk5OTFDMi4zOTM0IDIuMDk5OTEgMi4yOTE2NiAyLjE0MjA2IDIuMjE2NjQgMi4yMTcwN0wwLjIxNjY0NSA0LjIxNzA3QzAuMDYwNDM1MSA0LjM3MzI4IDAuMDYwNDM1MSA0LjYyNjU1IDAuMjE2NjQ1IDQuNzgyNzZDMC4zNzI4NTUgNC45Mzg5NyAwLjYyNjEyMSA0LjkzODk3IDAuNzgyMzMgNC43ODI3NkwyLjA5OTQ5IDMuNDY1NkwyLjA5OTQ5IDExLjUzNDJMMC43ODIzMyAxMC4yMTcxQzAuNjI2MTIgMTAuMDYwOSAwLjM3Mjg1NCAxMC4wNjA5IDAuMjE2NjQ1IDEwLjIxNzFDMC4wNjA0MzQ5IDEwLjM3MzMgMC4wNjA0MzQ5IDEwLjYyNjUgMC4yMTY2NDUgMTAuNzgyOEwyLjIxNjY0IDEyLjc4MjhDMi4yOTE2NiAxMi44NTc4IDIuMzkzNCAxMi44OTk5IDIuNDk5NDkgMTIuODk5OUMyLjYwNTU3IDEyLjg5OTkgMi43MDczMSAxMi44NTc4IDIuNzgyMzMgMTIuNzgyOEw0Ljc4MjMzIDEwLjc4MjhDNC45Mzg1NCAxMC42MjY1IDQuOTM4NTQgMTAuMzczMyA0Ljc4MjMzIDEwLjIxNzFDNC42MjYxMiAxMC4wNjA5IDQuMzcyODUgMTAuMDYwOSA0LjIxNjY0IDEwLjIxNzFMMi44OTk0OSAxMS41MzQyTDIuODk5NDkgMy40NjU2TDQuMjE2NjQgNC43ODI3NkM0LjM3Mjg1IDQuOTM4OTcgNC42MjYxMiA0LjkzODk3IDQuNzgyMzMgNC43ODI3NkM0LjkzODU0IDQuNjI2NTUgNC45Mzg1NCA0LjM3MzI4IDQuNzgyMzMgNC4yMTcwN0wyLjc4MjMzIDIuMjE3MDdaTTEwLjUgMi43NDk5N0MxMC43MTA3IDIuNzQ5OTcgMTAuODk4OCAyLjg4MjExIDEwLjk3MDMgMy4wODAzNkwxMy45NzAzIDExLjM5OTlDMTQuMDY0IDExLjY1OTcgMTMuOTI5MyAxMS45NDYyIDEzLjY2OTYgMTIuMDM5OUMxMy40MDk4IDEyLjEzMzYgMTMuMTIzMyAxMS45OTg5IDEzLjAyOTYgMTEuNzM5MkwxMi4wNDc3IDkuMDE2SDguOTUyMjhMNy45NzAzMyAxMS43MzkyQzcuODc2NjYgMTEuOTk4OSA3LjU5MDEzIDEyLjEzMzYgNy4zMzAzNiAxMi4wMzk5QzcuMDcwNTkgMTEuOTQ2MiA2LjkzNTk1IDExLjY1OTcgNy4wMjk2MiAxMS4zOTk5TDEwLjAyOTYgMy4wODAzNkMxMC4xMDExIDIuODgyMTEgMTAuMjg5MiAyLjc0OTk3IDEwLjUgMi43NDk5N1pNMTAuNSA0LjcyMzk2TDExLjc0MTIgOC4xNjZIOS4yNTg3OUwxMC41IDQuNzIzOTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxIdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS4wMzc5MSA5Ljk4MDc1QzAuOTM0Nzc3IDkuNjU4MyAxLjExNjAzIDkuMzc3MTkgMS40MDAwNSA5LjI0ODcxQzEuNjg0MDggOS4xMjAyMiAyLjA5NDYzIDkuMTM0MTIgMi4yNzA3MSA5LjQ1NDI2QzIuODUzOTMgMTAuNTE0NyAzLjY0NTk5IDEwLjcyODIgNC40ODY2NSAxMC43MjgyQzUuNTI3MjEgMTAuNzI4MiA2LjI5NjU5IDEwLjI2MTUgNi4yOTY1OSA5LjQ1NDI2QzYuMjk2NTkgOC44MDQ3IDUuOTExOSA4LjQ2NDE2IDQuODcxMzQgOC4xNDI1M0w0LjE1ODcyIDcuOTIxODFDMi42NDUxOCA3LjQ0ODgzIDEuODg4NDIgNi42OTIwNiAxLjg4ODQyIDUuNDU2MDFDMS44ODg0MiAzLjc5NzQzIDMuMjc1ODMgMi42ODc1IDUuMjQzNDIgMi42ODc1QzYuOTE3MzMgMi42ODc1IDcuOTc0MDkgMy4zMzUzNiA4LjQzODMzIDQuMzEwNjVDOC41NzA4NyA0LjU4OTA5IDguNTc2MTQgNC45MTI5NCA4LjIyNzk0IDUuMTkxMTRDNy44Nzk3NCA1LjQ2OTM0IDcuNTIzNTEgNS4zNDc5OSA3LjIzMzI3IDUuMDM4MzlDNi40NzIxNSA0LjIyNjUzIDUuOTk1NDUgNC4wNDk2OCA1LjI1NjA0IDQuMDQ5NjhDNC4xMzk4IDQuMDQ5NjggMy41NDcgNC42MzYxOCAzLjU0NyA1LjI3OTQzQzMuNTQ3IDUuODY1OTIgMy45NjMyMiA2LjIzMTY5IDQuOTQ3MDIgNi41MzQ0TDUuNjc4NTYgNi43NjE0M0M3LjIyOTk0IDcuMjM0NDEgNy45NzQwOSA3Ljk1OTY0IDcuOTc0MDkgOS4xNzA0N0M3Ljk3NDA5IDEwLjc3MjMgNi42OTM4OSAxMi4wOTAzIDQuNDYxNDMgMTIuMDkwM0MyLjg2NjEyIDEyLjA5MDMgMS40MDAwNSAxMS4xMTMxIDEuMDM3OTEgOS45ODA3NVpNMTEuODQ5MSA4Ljc3OTg1QzEwLjY2MSA4LjM5NTQzIDEwLjE2NDkgNy44NjExNCAxMC4xNjQ5IDYuOTg4MDVDMTAuMTY0OSA1Ljg2NzM2IDExLjE2MzYgNS4wNDYzOSAxMi42MTI4IDUuMDQ2MzlDMTMuODU0NiA1LjA0NjM5IDE0LjY2MjkgNS42MzM0NSAxNC45Nzc4IDYuNjM0NkMxNS4wNDQzIDYuODQ1OTkgMTQuOTU5MyA2Ljk4MDA2IDE0Ljc0NzUgNy4wNDkxQzE0LjUzOTQgNy4xMTY5NyAxNC4zMTc2IDcuMDk5NzQgMTQuMjM4IDYuODk2MTFDMTMuOTM1NiA2LjEyMjczIDEzLjM1MiA1Ljc2MzExIDEyLjU5OTggNS43NjMxMUMxMS42NDY3IDUuNzYzMTEgMTEuMDEzNSA2LjI1MTc4IDExLjAxMzUgNi45MTYzOEMxMS4wMTM1IDcuNDUwNjYgMTEuMzQ2NCA3Ljc1MDM4IDEyLjI0NzMgOC4wNDM1OEwxMi44MzQ4IDguMjMyNTRDMTQuMDYyIDguNjI5OTkgMTQuNTUxNiA5LjEzODIxIDE0LjU1MTYgMTAuMDE3OEMxNC41NTE2IDExLjE5NzIgMTMuNDgxIDEyLjA0NDIgMTEuOTkyNyAxMi4wNDQyQzEwLjY0MzkgMTIuMDQ0MiA5LjY1NjQ0IDExLjI4MDkgOS40MTk3OSAxMC4zMzYxQzkuMzY1MzUgMTAuMTE4OCA5LjQxMTkyIDEwLjAyODcgOS43MDAzOSA5Ljk2MTg0QzkuOTg4ODYgOS44OTQ5OSAxMC4wNzE0IDkuODk5MTggMTAuMTcxNSAxMC4xMzY5QzEwLjQ1NTUgMTAuODExNCAxMS4xNTMxIDExLjMyNzUgMTIuMDMxOCAxMS4zMjc1QzEyLjk5MTQgMTEuMzI3NSAxMy42ODM0IDEwLjc4MDIgMTMuNjgzNCAxMC4wNjM0QzEzLjY4MzQgOS41MzU2NyAxMy4zOTYxIDkuMjg4MDcgMTIuNDM2NiA4Ljk3NTMyTDExLjg0OTEgOC43Nzk4NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFZ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMSAxLjVDMTEgMS4yMjM4NiAxMC43NzYxIDEgMTAuNSAxQzEwLjIyMzkgMSAxMCAxLjIyMzg2IDEwIDEuNVY0SDVWMS41QzUgMS4yMjM4NiA0Ljc3NjE0IDEgNC41IDFDNC4yMjM4NiAxIDQgMS4yMjM4NiA0IDEuNVY0SDEuNUMxLjIyMzg2IDQgMSA0LjIyMzg2IDEgNC41QzEgNC43NzYxNCAxLjIyMzg2IDUgMS41IDVINFYxMEgxLjVDMS4yMjM4NiAxMCAxIDEwLjIyMzkgMSAxMC41QzEgMTAuNzc2MSAxLjIyMzg2IDExIDEuNSAxMUg0VjEzLjVDNCAxMy43NzYxIDQuMjIzODYgMTQgNC41IDE0QzQuNzc2MTQgMTQgNSAxMy43NzYxIDUgMTMuNVYxMUgxMFYxMy41QzEwIDEzLjc3NjEgMTAuMjIzOSAxNCAxMC41IDE0QzEwLjc3NjEgMTQgMTEgMTMuNzc2MSAxMSAxMy41VjExSDEzLjVDMTMuNzc2MSAxMSAxNCAxMC43NzYxIDE0IDEwLjVDMTQgMTAuMjIzOSAxMy43NzYxIDEwIDEzLjUgMTBIMTFWNUgxMy41QzEzLjc3NjEgNSAxNCA0Ljc3NjE0IDE0IDQuNUMxNCA0LjIyMzg2IDEzLjc3NjEgNCAxMy41IDRIMTFWMS41Wk0xMCAxMFY1SDVWMTBIMTBaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxCdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4zODI1IDEuMjk1NjdDMy40NjI0MSAxLjExNDMyIDMuNjQxODggMC45OTcyODQgMy44NDAwNSAwLjk5NzI4NEgxMS41QzExLjc3NjEgMC45OTcyODQgMTIgMS4yMjExNCAxMiAxLjQ5NzI4VjUuNUMxMiA1Ljc3NjE0IDExLjc3NjEgNiAxMS41IDZIOC42MzUyMUwxMS41Mjg4IDkuMTYyNDdDMTEuNjYyNiA5LjMwODcgMTEuNjk3NCA5LjUyMDE1IDExLjYxNzUgOS43MDE1NEMxMS41Mzc2IDkuODgyOTMgMTEuMzU4MiAxMCAxMS4xNiAxMEg4VjEzLjVDOCAxMy43MDIyIDcuODc4MTggMTMuODg0NSA3LjY5MTM0IDEzLjk2MTlDNy41MDQ1IDE0LjAzOTMgNy4yODk0NSAxMy45OTY2IDcuMTQ2NDUgMTMuODUzNkwzLjE0NjQ1IDkuODUzNTVDMy4wNTI2OCA5Ljc1OTc5IDMgOS42MzI2MSAzIDkuNVY1LjVDMyA1LjIyMzg2IDMuMjIzODYgNSAzLjUgNUg2LjM2NTMxTDMuNDcxMDUgMS44MzQ2OEMzLjMzNzMyIDEuNjg4NDQgMy4zMDI1OSAxLjQ3NzAxIDMuMzgyNSAxLjI5NTY3Wk03LjcyMDMyIDVMNC45NzQ3NCAxLjk5NzI4SDExVjVINy43MjAzMlpNNy4yNzk3OCA2SDRWOUg3LjVIMTAuMDI0N0w3LjI3OTc4IDZaTTQuNzA3MTEgMTBMNyAxMi4yOTI5VjEwSDQuNzA3MTFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxEdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4wNzA5NSAwLjY1MDIzOEM2LjY3MzkxIDAuNjUwMjM4IDYuMzI5NzcgMC45MjUwOTYgNi4yNDE5OCAxLjMxMjMxTDYuMDAzOSAyLjM2MjQ3QzUuNjI0OSAyLjQ3MjY5IDUuMjYzMzUgMi42MjM2MyA0LjkyNDM2IDIuODEwMTNMNC4wMTMzNSAyLjIzNTg1QzMuNjc3NDggMi4wMjQxMyAzLjIzOTc4IDIuMDczMTIgMi45NTkwMyAyLjM1Mzg2TDIuMzUyOTQgMi45NTk5NkMyLjA3MjIgMy4yNDA3IDIuMDIzMiAzLjY3ODQgMi4yMzQ5MyA0LjAxNDI3TDIuODA5NDIgNC45MjU2MUMyLjYyMzA3IDUuMjY0NSAyLjQ3MjI3IDUuNjI1OTQgMi4zNjIxNiA2LjAwNDgxTDEuMzEyMDkgNi4yNDI4N0MwLjkyNDg4MyA2LjMzMDY1IDAuNjUwMDI0IDYuNjc0OCAwLjY1MDAyNCA3LjA3MTgzVjcuOTI4OTdDMC42NTAwMjQgOC4zMjYwMSAwLjkyNDg4MyA4LjY3MDE1IDEuMzEyMDkgOC43NTc5NEwyLjM2MjI4IDguOTk2MDNDMi40NzI0NiA5LjM3NSAyLjYyMzM1IDkuNzM2NTIgMi44MDk3OSAxMC4wNzU1TDIuMjM1NCAxMC45ODY3QzIuMDIzNjcgMTEuMzIyNSAyLjA3MjY3IDExLjc2MDIgMi4zNTM0MSAxMi4wNDFMMi45NTk1MSAxMi42NDcxQzMuMjQwMjUgMTIuOTI3OCAzLjY3Nzk1IDEyLjk3NjggNC4wMTM4MiAxMi43NjUxTDQuOTI1MDYgMTIuMTkwN0M1LjI2Mzg0IDEyLjM3NyA1LjYyNTE2IDEyLjUyNzggNi4wMDM5IDEyLjYzNzlMNi4yNDE5OCAxMy42ODgxQzYuMzI5NzcgMTQuMDc1MyA2LjY3MzkxIDE0LjM1MDIgNy4wNzA5NSAxNC4zNTAySDcuOTI4MDlDOC4zMjUxMiAxNC4zNTAyIDguNjY5MjcgMTQuMDc1MyA4Ljc1NzA1IDEzLjY4ODFMOC45OTUwNSAxMi42MzgzQzkuMzc0MTEgMTIuNTI4MiA5LjczNTczIDEyLjM3NzMgMTAuMDc0OCAxMi4xOTA5TDEwLjk4NiAxMi43NjUzQzExLjMyMTggMTIuOTc3IDExLjc1OTUgMTIuOTI4IDEyLjA0MDMgMTIuNjQ3M0wxMi42NDY0IDEyLjA0MTJDMTIuOTI3MSAxMS43NjA0IDEyLjk3NjEgMTEuMzIyNyAxMi43NjQ0IDEwLjk4NjlMMTIuMTkwMiAxMC4wNzZDMTIuMzc2OCA5LjczNjg4IDEyLjUyNzggOS4zNzUxNSAxMi42MzggOC45OTU5NkwxMy42ODc5IDguNzU3OTRDMTQuMDc1MSA4LjY3MDE1IDE0LjM1IDguMzI2MDEgMTQuMzUgNy45Mjg5N1Y3LjA3MTgzQzE0LjM1IDYuNjc0OCAxNC4wNzUxIDYuMzMwNjUgMTMuNjg3OSA2LjI0Mjg3TDEyLjYzODEgNi4wMDQ4OEMxMi41MjggNS42MjU3OCAxMi4zNzcxIDUuMjY0MTQgMTIuMTkwNiA0LjkyNTA3TDEyLjc2NDggNC4wMTQwN0MxMi45NzY2IDMuNjc4MiAxMi45Mjc2IDMuMjQwNSAxMi42NDY4IDIuOTU5NzVMMTIuMDQwNyAyLjM1MzY2QzExLjc2IDIuMDcyOTIgMTEuMzIyMyAyLjAyMzkyIDEwLjk4NjQgMi4yMzU2NUwxMC4wNzU1IDIuODA5ODlDOS43MzYyMiAyLjYyMzI4IDkuMzc0MzcgMi40NzIyOSA4Ljk5NTA1IDIuMzYyMDlMOC43NTcwNSAxLjMxMjMxQzguNjY5MjcgMC45MjUwOTYgOC4zMjUxMiAwLjY1MDIzOCA3LjkyODA5IDAuNjUwMjM4SDcuMDcwOTVaTTQuOTIwNTMgMy44MTI1MUM1LjQ0NzI0IDMuNDQzMzkgNi4wNTY2NSAzLjE4NDI0IDYuNzE1NDMgMy4wNjgzOUw3LjA3MDk1IDEuNTAwMjRINy45MjgwOUw4LjI4MzU1IDMuMDY4MTZDOC45NDI2NyAzLjE4Mzg3IDkuNTUyNCAzLjQ0MzAyIDEwLjA3OTQgMy44MTIyNEwxMS40Mzk3IDIuOTU0N0wxMi4wNDU4IDMuNTYwNzlMMTEuMTg4MiA0LjkyMTE3QzExLjU1NzMgNS40NDc5OCAxMS44MTY0IDYuMDU3NSAxMS45MzIxIDYuNzE2MzhMMTMuNSA3LjA3MTgzVjcuOTI4OTdMMTEuOTMyIDguMjg0NDRDMTEuODE2MiA4Ljk0MzQyIDExLjU1NyA5LjU1MzAxIDExLjE4NzggMTAuMDc5OEwxMi4wNDUzIDExLjQ0MDJMMTEuNDM5MiAxMi4wNDYyTDEwLjA3ODcgMTEuMTg4NkM5LjU1MTkyIDExLjU1NzYgOC45NDI0MSAxMS44MTY2IDguMjgzNTUgMTEuOTMyM0w3LjkyODA5IDEzLjUwMDJINy4wNzA5NUw2LjcxNTQzIDExLjkzMkM2LjA1NjkgMTEuODE2MiA1LjQ0NzcyIDExLjU1NzIgNC45MjExNiAxMS4xODgzTDMuNTYwNTUgMTIuMDQ2TDIuOTU0NDUgMTEuNDM5OUwzLjgxMjEzIDEwLjA3OTRDMy40NDMxIDkuNTUyNjYgMy4xODQwMyA4Ljk0MzI2IDMuMDY4MjUgOC4yODQ1TDEuNTAwMDIgNy45Mjg5N1Y3LjA3MTgzTDMuMDY4MTggNi43MTYzMkMzLjE4Mzg4IDYuMDU3NjUgMy40NDI4MyA1LjQ0ODMzIDMuODExNzEgNC45MjE2NUwyLjk1Mzk4IDMuNTYxTDMuNTYwMDggMi45NTQ5MUw0LjkyMDUzIDMuODEyNTFaTTkuMDI0OTYgNy41MDAwOEM5LjAyNDk2IDguMzQyMjYgOC4zNDIyMyA5LjAyNDk5IDcuNTAwMDUgOS4wMjQ5OUM2LjY1Nzg2IDkuMDI0OTkgNS45NzUxMyA4LjM0MjI2IDUuOTc1MTMgNy41MDAwOEM1Ljk3NTEzIDYuNjU3ODkgNi42NTc4NiA1Ljk3NTE2IDcuNTAwMDUgNS45NzUxNkM4LjM0MjIzIDUuOTc1MTYgOS4wMjQ5NiA2LjY1Nzg5IDkuMDI0OTYgNy41MDAwOFpNOS45MjQ5NiA3LjUwMDA4QzkuOTI0OTYgOC44MzkzMiA4LjgzOTI5IDkuOTI0OTkgNy41MDAwNSA5LjkyNDk5QzYuMTYwOCA5LjkyNDk5IDUuMDc1MTMgOC44MzkzMiA1LjA3NTEzIDcuNTAwMDhDNS4wNzUxMyA2LjE2MDg0IDYuMTYwOCA1LjA3NTE2IDcuNTAwMDUgNS4wNzUxNkM4LjgzOTI5IDUuMDc1MTYgOS45MjQ5NiA2LjE2MDg0IDkuOTI0OTYgNy41MDAwOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFp0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTM2IDAuODUwMDA2QzMuODI3NjcgMC44NTAwMDYgMC44NDk5NzYgMy44MjczIDAuODQ5OTc2IDcuNTAwMjNDMC44NDk5NzYgMTAuNDM3OSAyLjc1NTIzIDEyLjkzMDYgNS4zOTc3NSAxMy44MTA0QzUuNzMwNDcgMTMuODcxMiA1Ljg1MTcxIDEzLjY2NTggNS44NTE3MSAxMy40ODk1QzUuODUxNzEgMTMuMzMxNSA1Ljg0NiAxMi45MTM1IDUuODQyNzMgMTIuMzU4N0MzLjk5MzAxIDEyLjc2MDQgMy42MDI3MyAxMS40NjcxIDMuNjAyNzMgMTEuNDY3MUMzLjMwMDIyIDEwLjY5ODggMi44NjQyMyAxMC40OTQyIDIuODY0MjMgMTAuNDk0MkMyLjI2MDQ0IDEwLjA4MTkgMi45MDk5NSAxMC4wOTAxIDIuOTA5OTUgMTAuMDkwMUMzLjU3NzQyIDEwLjEzNyAzLjkyODUgMTAuNzc1NSAzLjkyODUgMTAuNzc1NUM0LjUyMTY3IDExLjc5MTYgNS40ODUxMiAxMS40OTgxIDUuODYzOTYgMTEuMzI3OUM1LjkyNDM4IDEwLjg5ODQgNi4wOTYyNSAxMC42MDUzIDYuMjg2MDggMTAuNDM5MUM0LjgwOTQ4IDEwLjI3MDkgMy4yNTY5NSA5LjcwMDYzIDMuMjU2OTUgNy4xNTI0MUMzLjI1Njk1IDYuNDI2MTUgMy41MTYxOCA1LjgzMjk4IDMuOTQxNTcgNS4zNjhDMy44NzI5OSA1LjE5OTggMy42NDQ3OCA0LjUyMzc1IDQuMDA2ODkgMy42MDgwN0M0LjAwNjg5IDMuNjA4MDcgNC41NjQ5NCAzLjQyOTI2IDUuODM1MzggNC4yODk0MUM2LjM2NTY4IDQuMTQyMDQgNi45MzQ3NyA0LjA2ODU2IDcuNTAwMTggNC4wNjU3QzguMDY1MTggNC4wNjg1NiA4LjYzMzg2IDQuMTQyMDQgOS4xNjQ5OCA0LjI4OTQxQzEwLjQzNDYgMy40MjkyNiAxMC45OTE4IDMuNjA4MDcgMTAuOTkxOCAzLjYwODA3QzExLjM1NDggNC41MjM3NSAxMS4xMjY2IDUuMTk5OCAxMS4wNTg0IDUuMzY4QzExLjQ4NDYgNS44MzI5OCAxMS43NDE4IDYuNDI2MTUgMTEuNzQxOCA3LjE1MjQxQzExLjc0MTggOS43MDcxNiAxMC4xODY4IDEwLjI2OTMgOC43MDU3MSAxMC40MzM4QzguOTQ0MTIgMTAuNjM5MiA5LjE1NjgxIDExLjA0NSA5LjE1NjgxIDExLjY2NTVDOS4xNTY4MSAxMi41NTQyIDkuMTQ4NjUgMTMuMjcxNSA5LjE0ODY1IDEzLjQ4OTVDOS4xNDg2NSAxMy42Njc1IDkuMjY4NjcgMTMuODc0NSA5LjYwNTg4IDEzLjgwOTVDMTIuMjQ2NCAxMi45MjgyIDE0LjE1IDEwLjQzNzUgMTQuMTUgNy41MDAyM0MxNC4xNSAzLjgyNzMgMTEuMTcyMyAwLjg1MDAwNiA3LjQ5OTM2IDAuODUwMDA2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sJHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTYgMS44MDAwMkM0LjM1MTk0IDEuODAwMDIgMS43OTk5NiA0LjM1MiAxLjc5OTk2IDcuNTAwMDJDMS43OTk5NiAxMC42NDggNC4zNTE5NCAxMy4yIDcuNDk5OTYgMTMuMkMxMC42NDggMTMuMiAxMy4yIDEwLjY0OCAxMy4yIDcuNTAwMDJDMTMuMiA0LjM1MiAxMC42NDggMS44MDAwMiA3LjQ5OTk2IDEuODAwMDJaTTAuODk5OTYzIDcuNTAwMDJDMC44OTk5NjMgMy44NTQ5NCAzLjg1NDg4IDAuOTAwMDI0IDcuNDk5OTYgMC45MDAwMjRDMTEuMTQ1IDAuOTAwMDI0IDE0LjEgMy44NTQ5NCAxNC4xIDcuNTAwMDJDMTQuMSAxMS4xNDUxIDExLjE0NSAxNC4xIDcuNDk5OTYgMTQuMUMzLjg1NDg4IDE0LjEgMC44OTk5NjMgMTEuMTQ1MSAwLjg5OTk2MyA3LjUwMDAyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuNDk5OSA3Ljg5OTk4SDEuNDk5OTRWNy4wOTk5OEgxMy40OTk5VjcuODk5OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjA5OTkxIDEzLjVWMS41SDcuODk5OTFWMTMuNUg3LjA5OTkxek0xMC4zNzUgNy40OTk5OEMxMC4zNzUgNS4zMjcyNCA5LjU5MzY0IDMuMTc3NzggOC4wNjE4MyAxLjc1NjU2TDguNTM3OTMgMS4yNDM0MUMxMC4yMzk2IDIuODIyMTggMTEuMDc1IDUuMTcyNzMgMTEuMDc1IDcuNDk5OTggMTEuMDc1IDkuODI3MjQgMTAuMjM5NiAxMi4xNzc4IDguNTM3OTMgMTMuNzU2Nkw4LjA2MTgzIDEzLjI0MzRDOS41OTM2NCAxMS44MjIyIDEwLjM3NSA5LjY3MjczIDEwLjM3NSA3LjQ5OTk4ek0zLjk5OTY5IDcuNUMzLjk5OTY5IDUuMTc2MTEgNC44MDc4NiAyLjgyNjc4IDYuNDU3NjggMS4yNDcxOUw2Ljk0MTc3IDEuNzUyODFDNS40NTgyIDMuMTczMjMgNC42OTk2OSA1LjMyMzg5IDQuNjk5NjkgNy41IDQuNjk5NyA5LjY3NjExIDUuNDU4MjIgMTEuODI2OCA2Ljk0MTc5IDEzLjI0NzJMNi40NTc2OSAxMy43NTI4QzQuODA3ODggMTIuMTczMiAzLjk5OTcgOS44MjM5IDMuOTk5NjkgNy41elwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5NiAzLjk1ODAxQzkuNjY5MjggMy45NTgwMSAxMS44NzUzIDQuMzU5MTUgMTMuMzcwNiA1LjE5NDQ4IDEzLjUzOTQgNS4yODg3NSAxMy41OTk4IDUuNTAxOTcgMTMuNTA1NSA1LjY3MDczIDEzLjQxMTMgNS44Mzk0OCAxMy4xOTggNS44OTk4NyAxMy4wMjkzIDUuODA1NiAxMS42Nzk0IDUuMDUxNTUgOS42MDc5OSA0LjY1ODAxIDcuNDk5OTYgNC42NTgwMSA1LjM5MTkyIDQuNjU4MDEgMy4zMjA1MiA1LjA1MTU1IDEuOTcwNjQgNS44MDU2IDEuODAxODggNS44OTk4NyAxLjU4ODY2IDUuODM5NDggMS40OTQzOSA1LjY3MDczIDEuNDAwMTMgNS41MDE5NyAxLjQ2MDUxIDUuMjg4NzUgMS42MjkyNyA1LjE5NDQ4IDMuMTI0NjYgNC4zNTkxNSA1LjMzMDYzIDMuOTU4MDEgNy40OTk5NiAzLjk1ODAxek03LjQ5OTk2IDEwLjg1QzkuNjY5MjggMTAuODUgMTEuODc1MyAxMC40NDg4IDEzLjM3MDYgOS42MTM1IDEzLjUzOTQgOS41MTkyNCAxMy41OTk4IDkuMzA2MDEgMTMuNTA1NSA5LjEzNzI2IDEzLjQxMTMgOC45Njg1IDEzLjE5OCA4LjkwODEyIDEzLjAyOTMgOS4wMDIzOCAxMS42Nzk0IDkuNzU2NDMgOS42MDc5OSAxMC4xNSA3LjQ5OTk2IDEwLjE1IDUuMzkxOTIgMTAuMTUgMy4zMjA1MiA5Ljc1NjQzIDEuOTcwNjQgOS4wMDIzOSAxLjgwMTg4IDguOTA4MTIgMS41ODg2NiA4Ljk2ODUgMS40OTQzOSA5LjEzNzI2IDEuNDAwMTMgOS4zMDYwMSAxLjQ2MDUxIDkuNTE5MjQgMS42MjkyNyA5LjYxMzUgMy4xMjQ2NiAxMC40NDg4IDUuMzMwNjMgMTAuODUgNy40OTk5NiAxMC44NXpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEZ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi41IDJIOFY3SDEzVjIuNUMxMyAyLjIyMzg2IDEyLjc3NjEgMiAxMi41IDJaTTEzIDhIOFYxM0gxMi41QzEyLjc3NjEgMTMgMTMgMTIuNzc2MSAxMyAxMi41VjhaTTcgN1YySDIuNUMyLjIyMzg2IDIgMiAyLjIyMzg2IDIgMi41VjdIN1pNMiA4VjEyLjVDMiAxMi43NzYxIDIuMjIzODYgMTMgMi41IDEzSDdWOEgyWk0yLjUgMUMxLjY3MTU3IDEgMSAxLjY3MTU3IDEgMi41VjEyLjVDMSAxMy4zMjg0IDEuNjcxNTcgMTQgMi41IDE0SDEyLjVDMTMuMzI4NCAxNCAxNCAxMy4zMjg0IDE0IDEyLjVWMi41QzE0IDEuNjcxNTcgMTMuMzI4NCAxIDEyLjUgMUgyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxOdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS40NDk5NSAwLjk0OTk1MUMxLjMxNzM0IDAuOTQ5OTUxIDEuMTkwMTYgMS4wMDI2MyAxLjA5NjQgMS4wOTY0QzEuMDAyNjMgMS4xOTAxNyAwLjk0OTk1MSAxLjMxNzM1IDAuOTQ5OTUxIDEuNDQ5OTVMMC45NDk5NjYgMy40NDk5NUMwLjk0OTk2OSAzLjcyNjEgMS4xNzM4MyAzLjk0OTk1IDEuNDQ5OTcgMy45NDk5NUMxLjcyNjExIDMuOTQ5OTUgMS45NDk5NyAzLjcyNjA5IDEuOTQ5OTcgMy40NDk5NUwxLjk0OTk1IDEuOTQ5OTVIMy40NDk5N0MzLjcyNjExIDEuOTQ5OTUgMy45NDk5NyAxLjcyNjA5IDMuOTQ5OTcgMS40NDk5NUMzLjk0OTk3IDEuMTczODEgMy43MjYxMSAwLjk0OTk1MSAzLjQ0OTk3IDAuOTQ5OTUxSDEuNDQ5OTVaTTUuOTQ5OTUgMC45NDk5NTFDNS42NzM4MSAwLjk0OTk1MSA1LjQ0OTk1IDEuMTczODEgNS40NDk5NSAxLjQ0OTk1QzUuNDQ5OTUgMS43MjYwOSA1LjY3MzgxIDEuOTQ5OTUgNS45NDk5NSAxLjk0OTk1SDguOTQ5OTVDOS4yMjYwOSAxLjk0OTk1IDkuNDQ5OTUgMS43MjYwOSA5LjQ0OTk1IDEuNDQ5OTVDOS40NDk5NSAxLjE3MzgxIDkuMjI2MDkgMC45NDk5NTEgOC45NDk5NSAwLjk0OTk1MUg1Ljk0OTk1Wk01LjQ0OTk1IDEzLjQ1QzUuNDQ5OTUgMTMuMTczOCA1LjY3MzgxIDEyLjk1IDUuOTQ5OTUgMTIuOTVIOC45NDk5NUM5LjIyNjA5IDEyLjk1IDkuNDQ5OTUgMTMuMTczOCA5LjQ0OTk1IDEzLjQ1QzkuNDQ5OTUgMTMuNzI2MSA5LjIyNjA5IDEzLjk1IDguOTQ5OTUgMTMuOTVINS45NDk5NUM1LjY3MzgxIDEzLjk1IDUuNDQ5OTUgMTMuNzI2MSA1LjQ0OTk1IDEzLjQ1Wk0xLjk0OTk1IDUuOTQ5OTVDMS45NDk5NSA1LjY3MzgxIDEuNzI2MDkgNS40NDk5NSAxLjQ0OTk1IDUuNDQ5OTVDMS4xNzM4MSA1LjQ0OTk1IDAuOTQ5OTUxIDUuNjczODEgMC45NDk5NTEgNS45NDk5NVY4Ljk0OTk1QzAuOTQ5OTUxIDkuMjI2MDkgMS4xNzM4MSA5LjQ0OTk1IDEuNDQ5OTUgOS40NDk5NUMxLjcyNjA5IDkuNDQ5OTUgMS45NDk5NSA5LjIyNjA5IDEuOTQ5OTUgOC45NDk5NVY1Ljk0OTk1Wk0xMy40NSA1LjQ0OTk1QzEzLjcyNjEgNS40NDk5NSAxMy45NSA1LjY3MzgxIDEzLjk1IDUuOTQ5OTVWOC45NDk5NUMxMy45NSA5LjIyNjA5IDEzLjcyNjEgOS40NDk5NSAxMy40NSA5LjQ0OTk1QzEzLjE3MzggOS40NDk5NSAxMi45NSA5LjIyNjA5IDEyLjk1IDguOTQ5OTVWNS45NDk5NUMxMi45NSA1LjY3MzgxIDEzLjE3MzggNS40NDk5NSAxMy40NSA1LjQ0OTk1Wk0xMS40NSAwLjk0OTk1MUMxMS4xNzM4IDAuOTQ5OTUxIDEwLjk1IDEuMTczODEgMTAuOTUgMS40NDk5NUMxMC45NSAxLjcyNjA5IDExLjE3MzggMS45NDk5NSAxMS40NSAxLjk0OTk1SDEyLjk0OTlWMy40NDk5NUMxMi45NDk5IDMuNzI2MDkgMTMuMTczOCAzLjk0OTk1IDEzLjQ0OTkgMy45NDk5NUMxMy43MjYxIDMuOTQ5OTUgMTMuOTQ5OSAzLjcyNjA5IDEzLjk0OTkgMy40NDk5NVYxLjQ0OTk1QzEzLjk0OTkgMS4xNzM4MSAxMy43MjUyIDAuOTQ5OTUxIDEzLjQ0OSAwLjk0OTk1MUgxMS40NVpNMS40NDk5NSAxMC45NUMxLjcyNjA5IDEwLjk1IDEuOTQ5OTUgMTEuMTczOCAxLjk0OTk1IDExLjQ1VjEyLjk1SDMuNDQ5OTdDMy43MjYxMSAxMi45NSAzLjk0OTk3IDEzLjE3MzggMy45NDk5NyAxMy40NUMzLjk0OTk3IDEzLjcyNjEgMy43MjYxMSAxMy45NSAzLjQ0OTk3IDEzLjk1SDEuNDQ5OTVDMS4xNzM4MSAxMy45NSAwLjk0OTk1MSAxMy43MjYxIDAuOTQ5OTUxIDEzLjQ1VjExLjQ1QzAuOTQ5OTUxIDExLjE3MzggMS4xNzM4MSAxMC45NSAxLjQ0OTk1IDEwLjk1Wk0xMy45NSAxMS40NUMxMy45NSAxMS4xNzM4IDEzLjcyNjEgMTAuOTUgMTMuNDUgMTAuOTVDMTMuMTczOCAxMC45NDk5IDEyLjk1IDExLjE3MzggMTIuOTUgMTEuNDQ5OUwxMi45NDkxIDEyLjk1SDExLjQ1QzExLjE3MzggMTIuOTUgMTAuOTUgMTMuMTczOCAxMC45NSAxMy40NUMxMC45NSAxMy43MjYxIDExLjE3MzggMTMuOTUgMTEuNDUgMTMuOTVIMTMuNDQ5OUMxMy43MjYxIDEzLjk1IDEzLjk0OTkgMTMuNzI2MSAxMy45NDk5IDEzLjQ1TDEzLjk1IDExLjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzY4OTJDMy44NDIyMiAwLjg3Njg5MiAwLjg3NzA3NSAzLjg0MjA0IDAuODc3MDc1IDcuNDk5NzJDMC44NzcwNzUgMTEuMTU3NCAzLjg0MjIyIDE0LjEyMjYgNy40OTk5MSAxNC4xMjI2QzExLjE1NzYgMTQuMTIyNiAxNC4xMjI3IDExLjE1NzQgMTQuMTIyNyA3LjQ5OTcyQzE0LjEyMjcgMy44NDIwNCAxMS4xNTc2IDAuODc2ODkyIDcuNDk5OTEgMC44NzY4OTJaTTcuMDAwMDMgMS44NDg2MUM0LjEwMTE0IDIuMTAxNyAxLjgyNzA3IDQuNTM1MTUgMS44MjcwNyA3LjQ5OTcyQzEuODI3MDcgMTAuNDY0MyA0LjEwMTE0IDEyLjg5NzcgNy4wMDAwMyAxMy4xNTA4VjEuODQ4NjFaTTguMDAwMDMgMTMuMTUwOEMxMC44OTg4IDEyLjg5NzYgMTMuMTcyNyAxMC40NjQyIDEzLjE3MjcgNy40OTk3MkMxMy4xNzI3IDQuNTM1MjQgMTAuODk4OCAyLjEwMTg1IDguMDAwMDMgMS44NDg2NFYxMy4xNTA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sV3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzY4OTJDMy44NDIyMiAwLjg3Njg5MiAwLjg3NzA3NSAzLjg0MjA0IDAuODc3MDc1IDcuNDk5NzJDMC44NzcwNzUgMTEuMTU3NCAzLjg0MjIyIDE0LjEyMjYgNy40OTk5MSAxNC4xMjI2QzExLjE1NzYgMTQuMTIyNiAxNC4xMjI3IDExLjE1NzQgMTQuMTIyNyA3LjQ5OTcyQzE0LjEyMjcgMy44NDIwNCAxMS4xNTc2IDAuODc2ODkyIDcuNDk5OTEgMC44NzY4OTJaTTcuNDk5ODggMS44MjY4OUM0LjM2Njg4IDEuODI2OSAxLjgyNzA3IDQuMzY2NzIgMS44MjcwNyA3LjQ5OTcyQzEuODI3MDcgMTAuNjMyNyA0LjM2Njg4IDEzLjE3MjUgNy40OTk4OCAxMy4xNzI2VjEuODI2ODlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx6dD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41IDNDMS4yMjM4NiAzIDEgMy4yMjM4NiAxIDMuNUMxIDMuNzc2MTQgMS4yMjM4NiA0IDEuNSA0SDEzLjVDMTMuNzc2MSA0IDE0IDMuNzc2MTQgMTQgMy41QzE0IDMuMjIzODYgMTMuNzc2MSAzIDEzLjUgM0gxLjVaTTEgNy41QzEgNy4yMjM4NiAxLjIyMzg2IDcgMS41IDdIMTMuNUMxMy43NzYxIDcgMTQgNy4yMjM4NiAxNCA3LjVDMTQgNy43NzYxNCAxMy43NzYxIDggMTMuNSA4SDEuNUMxLjIyMzg2IDggMSA3Ljc3NjE0IDEgNy41Wk0xIDExLjVDMSAxMS4yMjM5IDEuMjIzODYgMTEgMS41IDExSDEzLjVDMTMuNzc2MSAxMSAxNCAxMS4yMjM5IDE0IDExLjVDMTQgMTEuNzc2MSAxMy43NzYxIDEyIDEzLjUgMTJIMS41QzEuMjIzODYgMTIgMSAxMS43NzYxIDEgMTEuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEd0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02LjgxMTMgMS42NDcwNkM2LjYyMTg4IDIuODc5MTggNi42ODI2OCAzLjg4NTIzIDYuNzY4NDggNS4zMDQ5OUM2Ljc4NDE1IDUuNTY0MjYgNi44MDA2NSA1LjgzNzMyIDYuODE2NjEgNi4xMjgwOEM2LjgzMTExIDYuMzkyMDggNi42Mzc1OCA2LjYyMTcyIDYuMzc0OTUgNi42NTIxN0M2LjExMjMyIDYuNjgyNjIgNS44NzEzOCA2LjUwMzM0IDUuODI1MDkgNi4yNDMwNEw1Ljc0NzU0IDUuODA2OThDNS42NDQwMiA1LjE2NTI5IDUuNDgzNTUgNC4yNTQ4MSA1LjE3ODA3IDMuNDQ3NDFDNC44NjI0MSAyLjYxMzEyIDQuNDQ4NiAyLjA0MTIxIDMuOTM0MzYgMS44NjA0NEMzLjY0OTk0IDEuNzYxMDQgMy40MTkwMSAxLjg0Mjc5IDMuMjU4NjggMi4wMTA1MkMzLjA4NzQ2IDIuMTg5NjIgMi45OTc2IDIuNDcwNjUgMy4wNjI3IDIuNzUzOTlDMy4yMTQ2IDMuMzQ0MjQgMy40NDYyNyAzLjkxNjcgMy42OTgzNiA0LjUxODAyQzMuNzIwODIgNC41NzE1OCAzLjc0MzQ2IDQuNjI1NDMgMy43NjYyMSA0LjY3OTU0QzMuOTk1NCA1LjIyNDU3IDQuMjM2MTkgNS43OTcyIDQuNDE2NDQgNi4zOTA4MUw0LjQxNjkxIDYuMzkyMzhDNC41NjIgNi44NzU4NiA0LjY1NjQ2IDcuMjU5NSA0LjczMDg2IDcuNTYxNjVDNC43NjAzNCA3LjY4MTM4IDQuNzg2NjcgNy43ODgzMSA0LjgxMTc1IDcuODgzNTlDNC44Njc2OCA4LjA5NjA2IDQuNzc4MzYgOC4zMjAxNCA0LjU5MTYxIDguNDM1ODhDNC40MDQ4NiA4LjU1MTYxIDQuMTY0NDUgOC41MzE4OCAzLjk5OTA3IDguMzg3MjVDMy43Mzc0OSA4LjE1ODQ4IDMuNTE1IDcuOTI3ODQgMy4zMTgxNyA3LjcxODAyQzMuMjc2MjcgNy42NzMzNSAzLjIzNjAyIDcuNjMwMTggMy4xOTcwNSA3LjU4ODM4QzMuMDQ3NzcgNy40MjgyNiAyLjkxNzEyIDcuMjg4MTIgMi43ODMzNCA3LjE2MDI5QzIuNDU5ODkgNi44NTEyMiAyLjE4Mzk4IDYuNjgwMDQgMS44MDU4NSA2LjY0MzY5TDEuODAzMjQgNi42NDM0M0MxLjU2MTE3IDYuNjE4ODggMS40MTQwMiA2LjY2NDQxIDEuMzE3NTYgNi43MjYyN0MxLjIxODk5IDYuNzg5NDcgMS4xMTk4OCA2LjkwNDE0IDEuMDM3ODQgNy4xMTIzQzAuOTc2NTc2IDcuMjg0OTIgMS4wMTUxNSA3LjYyOTg3IDEuMTkyOSA3Ljk2OTExTDEuMTk3MjggNy45Nzc0N0MxLjQwMDg2IDguMzg0NTIgMS43NDQ3NSA4LjgxNTg3IDIuMTgxNDEgOS4yOTI5OUMyLjM5NzM5IDkuNTI4OTggMi42Mjg3MiA5Ljc2ODQ5IDIuODY5MzQgMTAuMDE3NEwyLjg3OTY2IDEwLjAyODFDMy4xMTU0NiAxMC4yNzIxIDMuMzU5NjIgMTAuNTI0NyAzLjU5NzEzIDEwLjc4MjdDNC40Mjg4IDExLjY4NjMgNS4yNzcwNiAxMi43NTM4IDUuNDYyNyAxNEgxMS41MDg3QzExLjU2MzYgMTIuNDM1MyAxMS44NzU2IDExLjI2OCAxMi4yODc1IDEwLjEzNDZDMTIuNDQ1NCA5LjcwMDQxIDEyLjYxMjEgOS4yODQxMiAxMi43ODI2IDguODU4MjlDMTMuMTA5NyA4LjA0MTM5IDEzLjQ1MDkgNy4xODkzNyAxMy43NzA1IDYuMTA4MjRDMTQuMDk4OSA0Ljk5NzM3IDE0LjAwOTcgNC4zNzAzMyAxMy44NjEzIDQuMDM5ODRDMTMuNzE3IDMuNzE4NTggMTMuNDkxNCAzLjYxNzg2IDEzLjM4MTYgMy41OTYwNkMxMy4xMzgxIDMuNTQ3NzQgMTMuMDM4NCAzLjYwOTQ3IDEyLjk2OTggMy42NzkwMUMxMi44NjcgMy43ODMxNiAxMi43Njk4IDMuOTgyNzMgMTIuNjkyMSA0LjMwMjY5QzEyLjYxNjYgNC42MTM0NSAxMi41NzUyIDQuOTY1MTcgMTIuNTMzIDUuMzI1MDFMMTIuNTI5OCA1LjM1Mjg1QzEyLjQ5MjQgNS42NzI0MiAxMi40NTA1IDYuMDMwMTYgMTIuMzY2NSA2LjMwMDk4QzEyLjMzODMgNi40MDY5OSAxMi4yODE5IDYuNTA0MDcgMTIuMTk3OSA2LjU3NTM5QzEyLjEzODIgNi42MjYxIDEyLjAxMDQgNi43MDgxOCAxMS44MzA5IDYuNjkzMTJDMTEuNTQyNCA2LjY2ODkxIDExLjM3MTIgNi40MjE0MyAxMS4zNjUgNi4xNDc4M0MxMS4zNTYgNS43NTQ1NCAxMS4zODgzIDUuMzU4NjQgMTEuNDA3NCA0Ljk2NjA4QzExLjQ0MjggNC4yMzY0NiAxMS40NzcgMy41MzM3IDExLjQyNDUgMi44MzQyTDExLjQyNDIgMi44MjkzNEMxMS4zOTE2IDIuMzI5OTcgMTEuMDQ5MyAyLjAwMjI4IDEwLjcwMDcgMS45MjI4QzEwLjUzMDUgMS44ODQwMSAxMC4zNjkgMS45MDYwMSAxMC4yMzQ3IDEuOTgzNUMxMC4xMDMgMi4wNTk0NiA5Ljk1NTM1IDIuMjEzMTggOS44NTc0IDIuNTEzOTRMOS44NTYzMSAyLjUxNzI2QzkuODE1MjUgMi42NDA0IDkuNzcyOTggMi44Nzc1MyA5LjczNjA2IDMuMjEyNEM5LjcwMDQ0IDMuNTM1NDIgOS42NzMzNyAzLjkxMjc5IDkuNjUxNTYgNC4yOTQxOEM5LjYzMjkgNC42MjAzMyA5LjYxNzg1IDQuOTU4NCA5LjYwNDM0IDUuMjYxOTRDOS41ODcyOCA1LjY0NTI5IDkuNTcyNjcgNS45NzM1NyA5LjU1NjMzIDYuMTUzMkM5LjU0OTgzIDYuMjI0NTkgOS41MjkzOSA2LjI5NDkzIDkuNDk1MDEgNi4zNTc4NUM5LjQ3MzU2IDYuMzk3MTEgOS4zNjExNSA2LjYwOTQ3IDkuMDcxMDYgNi42MTg0M0M4Ljc3OTE3IDYuNjI3NDQgOC42Mzk3NSA2LjQwMDU3IDguNjE2OTggNi4zNTkxOUM4LjU1NjM0IDYuMjQ4OTkgOC41NTA2NiA2LjExODA3IDguNTQ3NTQgNS45OTI4M0M4LjU0NDc0IDUuODgwNjQgOC41NDI5NCA1LjcxNzk4IDguNTQxNzQgNS41NDc2N0M4LjUzOTM1IDUuMjA1ODIgOC41MzkzNSA0LjgxOTE5IDguNTM5MzUgNC43MDk1MkM4LjUzOTM1IDMuNjY1NyA4LjUzODM4IDIuNjUzNzIgOC40NDcxNCAxLjY0MzcyQzguMzkxODMgMS4yNDEyNyA4LjA2Mjc4IDEuMDA0NTUgNy42NDM2IDEuMDAwMDVDNy4yMjM5OSAwLjk5NTU1MiA2Ljg3OTE4IDEuMjI3MDQgNi44MTEzIDEuNjQ3MDZaTTkuNDEyMTkgMS4zNjE3QzkuMjE0NjkgMC40NDg0ODQgOC4zOTkxMyAwLjAwODEwMzI0IDcuNjU0MzMgMC4wMDAxMTE1NEM2Ljg2NDUyIC0wLjAwODM2MzA4IDUuOTg3NjEgMC40NjU4ODEgNS44MjM2NSAxLjQ5MDM3TDUuODIzMTggMS40OTMzNEM1Ljc4MjM5IDEuNzU4NCA1Ljc1MjI5IDIuMDE0ODEgNS43MzA5IDIuMjY2NTJDNS4zOTQyMyAxLjY3MzY0IDQuOTI2MjIgMS4xNDg5NCA0LjI2NTUgMC45MTY4NTlDMy41ODY2MSAwLjY3OTMxMiAyLjk0OTIgMC44ODcwODcgMi41MzU4MiAxLjMxOTUyQzIuMTM0MTUgMS43Mzk3MSAxLjk0NDM4IDIuMzY3NDIgMi4wOTAzMSAyLjk4NzQ2TDIuMDkyNjkgMi45OTcxM0MyLjI2NDc4IDMuNjY4MDggMi41MjM5NiA0LjMwMzE2IDIuNzc2MTMgNC45MDQ2NUMyLjc5ODE0IDQuOTU3MTcgMi44MjAxIDUuMDA5NDEgMi44NDE5NCA1LjA2MTM5QzMuMDIxMzkgNS40ODg0MiAzLjE5Mzc4IDUuODk4NjYgMy4zMzg3MSA2LjMxMjU2QzIuOTY0MDQgNS45ODE0MiAyLjUxOTI1IDUuNzA3OTYgMS45MDI3NiA1LjY0ODRDMS40ODg2NSA1LjYwNjYzIDEuMTAzOTEgNS42NzUzNiAwLjc3NzgwNSA1Ljg4NDQ0QzAuNDU0MjM5IDYuMDkxOSAwLjI0MDY3MSA2LjQwNDA1IDAuMTA0MTg3IDYuNzU0MDZMMC4xMDA4NjggNi43NjI4MUMtMC4xMDE4NCA3LjMxMjg2IDAuMDY2MzMxMiA3Ljk3MTU3IDAuMzA0ODk1IDguNDI4OTdDMC41NzM3MDQgOC45NjQ3NCAwLjk5NjEwNCA5LjQ3OTA0IDEuNDQzNzIgOS45NjgxM0MxLjY3MDQ2IDEwLjIxNTkgMS45MTEzNiAxMC40NjUyIDIuMTUwMzMgMTAuNzEyNEwyLjE1NjgyIDEwLjcxOTFDMi4zOTUyNCAxMC45NjU4IDIuNjMyMTcgMTEuMjEwOSAyLjg2MTM0IDExLjQ1OTlDMy44MDkzNyAxMi40OSA0LjUwMDAyIDEzLjQ2MzIgNC41MDAwMiAxNC41QzQuNTAwMDIgMTQuNzc2MSA0LjcyMzg4IDE1IDUuMDAwMDIgMTVIMTJDMTIuMjc2MiAxNSAxMi41IDE0Ljc3NjEgMTIuNSAxNC41QzEyLjUgMTIuODIxMiAxMi44MDIxIDExLjY0NjIgMTMuMjI3NCAxMC40NzYyQzEzLjM2NTMgMTAuMDk2OCAxMy41MjE2IDkuNzA1NzkgMTMuNjg2OCA5LjI5MjQ3QzE0LjAyMzggOC40NDkyMiAxNC4zOTggNy41MTI5OCAxNC43Mjk1IDYuMzkxNzVDMTUuMDk1NiA1LjE1MzI0IDE1LjA1NTkgNC4yNTkwNCAxNC43NzM1IDMuNjMwMTdDMTQuNDg3IDIuOTkyMDggMTMuOTc5OCAyLjY5NTMgMTMuNTc2MyAyLjYxNTJDMTMuMTI3NiAyLjUyNjE0IDEyLjczNjcgMi42MDQ3NSAxMi40MjY4IDIuODMwODFDMTIuNDI1MyAyLjgwNzczIDEyLjQyMzYgMi43ODQ2OCAxMi40MjE5IDIuNzYxNjdDMTIuMzU4NyAxLjgxMDUgMTEuNjkwNyAxLjEyMjg1IDEwLjkyMyAwLjk0NzgyMUMxMC41MzQ2IDAuODU5Mjg3IDEwLjExMTEgMC45MDAzOTMgOS43MzUwOSAxLjExNzI0QzkuNjE4NTIgMS4xODQ0NiA5LjUxMDU1IDEuMjY2MjMgOS40MTIxOSAxLjM2MTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxxdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC43NTQzMiAyLjA1MDJDOC41MDU3OSAyLjA1MDIgOC4zMDQzMiAyLjI1MTY3IDguMzA0MzIgMi41MDAyQzguMzA0MzIgMi43NDg3MyA4LjUwNTc5IDIuOTUwMiA4Ljc1NDMyIDIuOTUwMkg5Ljk0OTk3VjcuMDUwMDRINS4wNDk5N1YyLjk1MDJINi4yNTQzMkM2LjUwMjg1IDIuOTUwMiA2LjcwNDMyIDIuNzQ4NzMgNi43MDQzMiAyLjUwMDJDNi43MDQzMiAyLjI1MTY3IDYuNTAyODUgMi4wNTAyIDYuMjU0MzIgMi4wNTAySDIuNzU0MzJDMi41MDU3OSAyLjA1MDIgMi4zMDQzMiAyLjI1MTY3IDIuMzA0MzIgMi41MDAyQzIuMzA0MzIgMi43NDg3MyAyLjUwNTc5IDIuOTUwMiAyLjc1NDMyIDIuOTUwMkgzLjk0OTk3VjEyLjA1MDJIMi43NTQzMkMyLjUwNTc5IDEyLjA1MDIgMi4zMDQzMiAxMi4yNTE3IDIuMzA0MzIgMTIuNTAwMkMyLjMwNDMyIDEyLjc0ODcgMi41MDU3OSAxMi45NTAyIDIuNzU0MzIgMTIuOTUwMkg2LjI1NDMyQzYuNTAyODUgMTIuOTUwMiA2LjcwNDMyIDEyLjc0ODcgNi43MDQzMiAxMi41MDAyQzYuNzA0MzIgMTIuMjUxNyA2LjUwMjg1IDEyLjA1MDIgNi4yNTQzMiAxMi4wNTAySDUuMDQ5OTdWNy45NTAwNEg5Ljk0OTk3VjEyLjA1MDJIOC43NTQzMkM4LjUwNTc5IDEyLjA1MDIgOC4zMDQzMiAxMi4yNTE3IDguMzA0MzIgMTIuNTAwMkM4LjMwNDMyIDEyLjc0ODcgOC41MDU3OSAxMi45NTAyIDguNzU0MzIgMTIuOTUwMkgxMi4yNTQzQzEyLjUwMjggMTIuOTUwMiAxMi43MDQzIDEyLjc0ODcgMTIuNzA0MyAxMi41MDAyQzEyLjcwNDMgMTIuMjUxNyAxMi41MDI4IDEyLjA1MDIgMTIuMjU0MyAxMi4wNTAySDExLjA1VjIuOTUwMkgxMi4yNTQzQzEyLjUwMjggMi45NTAyIDEyLjcwNDMgMi43NDg3MyAxMi43MDQzIDIuNTAwMkMxMi43MDQzIDIuMjUxNjcgMTIuNTAyOCAyLjA1MDIgMTIuMjU0MyAyLjA1MDJIOC43NTQzMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFl0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjE4MTMgMS42ODE3OUM3LjM1NzA0IDEuNTA2MDUgNy42NDE5NiAxLjUwNjA1IDcuODE3NyAxLjY4MTc5TDEwLjMxNzcgNC4xODE3OUMxMC40OTM0IDQuMzU3NTMgMTAuNDkzNCA0LjY0MjQ1IDEwLjMxNzcgNC44MTgxOUMxMC4xNDIgNC45OTM5MiA5Ljg1NzA0IDQuOTkzOTIgOS42ODEzIDQuODE4MTlMNy45NDk1IDMuMDg2MzhMNy45NDk1IDExLjkxMzZMOS42ODEzIDEwLjE4MThDOS44NTcwNCAxMC4wMDYxIDEwLjE0MiAxMC4wMDYxIDEwLjMxNzcgMTAuMTgxOEMxMC40OTM0IDEwLjM1NzUgMTAuNDkzNCAxMC42NDI0IDEwLjMxNzcgMTAuODE4Mkw3LjgxNzcgMTMuMzE4MkM3LjczMzMxIDEzLjQwMjYgNy42MTg4NSAxMy40NSA3LjQ5OTUgMTMuNDVDNy4zODAxNSAxMy40NSA3LjI2NTY5IDEzLjQwMjYgNy4xODEzIDEzLjMxODJMNC42ODEzIDEwLjgxODJDNC41MDU1NyAxMC42NDI0IDQuNTA1NTcgMTAuMzU3NSA0LjY4MTMgMTAuMTgxOEM0Ljg1NzA0IDEwLjAwNjEgNS4xNDE5NiAxMC4wMDYxIDUuMzE3NyAxMC4xODE4TDcuMDQ5NSAxMS45MTM2TDcuMDQ5NSAzLjA4NjM4TDUuMzE3NyA0LjgxODE5QzUuMTQxOTYgNC45OTM5MiA0Ljg1NzA0IDQuOTkzOTIgNC42ODEzIDQuODE4MTlDNC41MDU1NyA0LjY0MjQ1IDQuNTA1NTcgNC4zNTc1MyA0LjY4MTMgNC4xODE3OUw3LjE4MTMgMS42ODE3OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEt0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjA3OTI2IDAuMjIyMjUzQzcuMzEyNzUgLTAuMDA3NDM0IDcuNjg3MyAtMC4wMDc0MzQgNy45MjA3OSAwLjIyMjI1M0wxNC42NzA4IDYuODYyMjdDMTQuOTA3IDcuMDk0NjUgMTQuOTEwMSA3LjQ3NDUzIDE0LjY3NzggNy43MTA3NkMxNC40NDU0IDcuOTQ3IDE0LjA2NTUgNy45NTAxMiAxMy44MjkzIDcuNzE3NzNMMTMgNi45MDIwMVYxMi41QzEzIDEyLjc3NjEgMTIuNzc2MiAxMyAxMi41IDEzSDIuNTAwMDJDMi4yMjM4OCAxMyAyLjAwMDAyIDEyLjc3NjEgMi4wMDAwMiAxMi41VjYuOTAyMDFMMS4xNzA3OSA3LjcxNzczQzAuOTM0NTU4IDcuOTUwMTIgMC41NTQ2NzIgNy45NDcgMC4zMjIyOSA3LjcxMDc2QzAuMDg5OTA3OSA3LjQ3NDUzIDAuMDkzMDI4MyA3LjA5NDY1IDAuMzI5MjYgNi44NjIyN0w3LjA3OTI2IDAuMjIyMjUzWk03LjUwMDAyIDEuNDkxNjNMMTIgNS45MTgzMVYxMkgxMFY4LjQ5OTk5QzEwIDguMjIzODUgOS43NzYxNyA3Ljk5OTk5IDkuNTAwMDIgNy45OTk5OUg2LjUwMDAyQzYuMjIzODggNy45OTk5OSA2LjAwMDAyIDguMjIzODUgNi4wMDAwMiA4LjQ5OTk5VjEySDMuMDAwMDJWNS45MTgzMUw3LjUwMDAyIDEuNDkxNjNaTTcuMDAwMDIgMTJIOS4wMDAwMlY4Ljk5OTk5SDcuMDAwMDJWMTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxYdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDAuMDAzMjk1OUM2LjgwNDczIDAuMDAzMjk1OSA2LjI0OTUzIDAuMjgxMTA2IDYuMjUgMC43NDk5OTVDNi4yNSAwLjk5NzI1OCA2LjQyNDQ2IDEuMTIwMTQgNi41NzY4NyAxLjIyNzQ5QzYuNjk1MDcgMS4zMTA3NCA2LjggMS4zODQ2NSA2LjggMS41QzYuOCAxLjcwNzEgNi4wNjIyNCAxLjc0MjY0IDUuMTk3ODkgMS43ODQyN0MzLjk3NTUzIDEuODQzMTQgMi41IDEuOTE0MjEgMi41IDIuNUMyLjUgMi43NzYxNCAyLjcyMzg2IDMgMyAzSDEyQzEyLjI3NjEgMyAxMi41IDIuNzc2MTQgMTIuNSAyLjVDMTIuNSAxLjkxNDIxIDExLjAyNDUgMS44NDMxNCA5LjgwMjExIDEuNzg0MjdDOC45Mzc3NiAxLjc0MjY0IDguMiAxLjcwNzEgOC4yIDEuNUM4LjIgMS4zODQ2NSA4LjMwNDkzIDEuMzEwNzQgOC40MjMxMyAxLjIyNzQ5QzguNTc1NTQgMS4xMjAxNCA4Ljc1IDAuOTk3MjU4IDguNzUgMC43NDk5OTVDOC43NTA0NyAwLjI4MTEwNiA4LjE5NTI3IDAuMDAzMjk1OSA3LjUgMC4wMDMyOTU5Wk0yLjg5NDUxIDYuMTIyNjZDMi4yNTgwNiA2LjUyNDcxIDEuOTA0MTcgNy4zMTExOCAyLjAyNDczIDguMDU1NkwyLjgzNTg4IDEyLjQ3NzJDMy4wMDk5MyAxMy4zNTYyIDMuNzYyOSAxNCA0LjY2MDYxIDE0SDEwLjMzNzNDMTEuMjM1NCAxNCAxMS45ODg0IDEzLjM1NjIgMTIuMTYyNSAxMi40NzcyTDEyLjk3MzYgOC4wNTYwN0MxMy4wODkgNy4zMjM1OCAxMi44Mjg0IDYuNTMyNzYgMTIuMTMzMSA2LjA5MzczQzExLjcyODMgNS44MzAxMyAxMS42NDEyIDUuMzMyMzEgMTIuMTMzMSA1LjEyNzk2QzEyLjgyODQgNC44NjQzNSAxMi42OTQ4IDQgMTIgNEgxMC4zMDAxSDYuODAwMDVIMi45OTk5NkMyLjMwNDY5IDQgMi4xOTg3OCA0Ljg5MzI4IDIuODk0NTEgNS4xNTY4OUMzLjM4NjQyIDUuMzMyMzEgMy4yOTkzOSA1LjgzMDEzIDIuODk0NTEgNi4xMjI2NlpNOC4yMDAwNiA2LjI1QzguMjAwMDYgNS44MTc2OSA4LjA4NTcyIDUuMzc2MTUgNy45MDYzNSA1TDQuMTEwOTMgNUM0LjIwNjI2IDUuMjEzMTIgNC4yNDE5IDUuNDM4ODkgNC4yMjkwNCA1LjY1NTIxQzQuMTk1MjIgNi4yMjQxMiAzLjg0NTg3IDYuNjY4OTkgMy40ODAxNiA2LjkzMzIyTDMuNDU0OTIgNi45NTE0NkwzLjQyODU4IDYuOTY4MUMzLjEzNDA3IDcuMTU0MTQgMi45NTgwMSA3LjUzOTg5IDMuMDEwNTggNy44ODc0OUwzLjgxNzk3IDEyLjI4ODZDMy45MDUxMyAxMi43MTU0IDQuMjYxNDggMTMgNC42NjA2MSAxM0gxMC4zMzczQzEwLjczNyAxMyAxMS4wOTMyIDEyLjcxNTMgMTEuMTgwNCAxMi4yODg2TDExLjk4NzQgNy44ODk4QzEyLjA0OCA3LjQ4MjQ3IDExLjg5NTQgNy4xMjYzMSAxMS41OTkyIDYuOTM5MjdMMTEuNTg3NSA2LjkzMTg0TDExLjU4NzUgNi45MzE3NkMxMS4xOTQ3IDYuNjc2MDIgMTAuODMzMSA2LjIyNzg1IDEwLjc5ODYgNS42NDc5OEMxMC43ODQ2IDUuNDEyIDEwLjgyNjQgNS4xOTM5NyAxMC45MTEyIDVIOS4wNTUxN0M5LjAxOTg3IDUuMTQ2MTEgOS4wMDAwNiA1LjMxMjAxIDkuMDAwMDYgNS41QzkuMDAwMDYgNS45NzQ1IDkuMjE2NzkgNi4zNzEyNyA5LjQ0MzY3IDYuNzg2NjJDOS42OTI4NCA3LjI0Mjc4IDkuOTU0MjUgNy43MjEzNiA5Ljk1NDI1IDguMzQ5OTNDOS45NTQyNSA5LjI2OTggOS40OTg2OCA5Ljg0MjA1IDguNjIxODkgOS44NDIwNUM4LjEzMjA2IDkuODQyMDUgNy41NzgxOCA5LjQ2MDk3IDcuNTc4MTggOC43NTc4MUM3LjU3ODE4IDguMzUyNzkgNy43MTU1OCA4LjAxNjQ2IDcuODYxMjEgNy42NTk5OEM4LjAyNTQgNy4yNTgwNiA4LjIwMDA2IDYuODMwNTEgOC4yMDAwNiA2LjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0IDExLjAwMDFWNC4wMDAwNkwxIDQuMDAwMDZMMSAxMS4wMDAxSDE0Wk0xNSA0LjAwMDA2VjExLjAwMDFDMTUgMTEuNTUyMyAxNC41NTIzIDEyLjAwMDEgMTQgMTIuMDAwMUgxQzAuNDQ3NzE1IDEyLjAwMDEgMCAxMS41NTIzIDAgMTEuMDAwMVY0LjAwMDA2QzAgMy40NDc3OCAwLjQ0NzcxNSAzLjAwMDA2IDEgMy4wMDAwNkgxNEMxNC41NTIzIDMuMDAwMDYgMTUgMy40NDc3OCAxNSA0LjAwMDA2Wk0yIDUuMjVDMiA1LjExMTkzIDIuMTExOTMgNSAyLjI1IDVINS43NUM1Ljg4ODA3IDUgNiA1LjExMTkzIDYgNS4yNVY5Ljc1QzYgOS44ODgwNyA1Ljg4ODA3IDEwIDUuNzUgMTBIMi4yNUMyLjExMTkzIDEwIDIgOS44ODgwNyAyIDkuNzVWNS4yNVpNNy41IDdDNy4yMjM4NiA3IDcgNy4yMjM4NiA3IDcuNUM3IDcuNzc2MTQgNy4yMjM4NiA4IDcuNSA4SDEwLjVDMTAuNzc2MSA4IDExIDcuNzc2MTQgMTEgNy41QzExIDcuMjIzODYgMTAuNzc2MSA3IDEwLjUgN0g3LjVaTTcgOS41QzcgOS4yMjM4NiA3LjIyMzg2IDkgNy41IDlIMTIuNUMxMi43NzYxIDkgMTMgOS4yMjM4NiAxMyA5LjVDMTMgOS43NzYxNCAxMi43NzYxIDEwIDEyLjUgMTBINy41QzcuMjIzODYgMTAgNyA5Ljc3NjE0IDcgOS41Wk03LjUgNUM3LjIyMzg2IDUgNyA1LjIyMzg2IDcgNS41QzcgNS43NzYxNCA3LjIyMzg2IDYgNy41IDZIMTEuNUMxMS43NzYxIDYgMTIgNS43NzYxNCAxMiA1LjVDMTIgNS4yMjM4NiAxMS43NzYxIDUgMTEuNSA1SDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFF0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjUgMUgxMi41QzEzLjMyODQgMSAxNCAxLjY3MTU3IDE0IDIuNVYxMi41QzE0IDEzLjMyODQgMTMuMzI4NCAxNCAxMi41IDE0SDIuNUMxLjY3MTU3IDE0IDEgMTMuMzI4NCAxIDEyLjVWMi41QzEgMS42NzE1NyAxLjY3MTU3IDEgMi41IDFaTTIuNSAyQzIuMjIzODYgMiAyIDIuMjIzODYgMiAyLjVWOC4zNjM2TDMuNjgxOCA2LjY4MThDMy43NjgwOSA2LjU5NTUxIDMuODg1NzIgNi41NDc5NyA0LjAwNzc0IDYuNTUwMDdDNC4xMjk3NSA2LjU1MjE2IDQuMjQ1NjggNi42MDM3MiA0LjMyODk1IDYuNjkyOTNMNy44NzM1NSAxMC40OTAxTDEwLjY4MTggNy42ODE4QzEwLjg1NzUgNy41MDYwNyAxMS4xNDI1IDcuNTA2MDcgMTEuMzE4MiA3LjY4MThMMTMgOS4zNjM2VjIuNUMxMyAyLjIyMzg2IDEyLjc3NjEgMiAxMi41IDJIMi41Wk0yIDEyLjVWOS42MzY0TDMuOTg4ODcgNy42NDc1M0w3LjUzMTEgMTEuNDQyMUw4Ljk0MTEzIDEzSDIuNUMyLjIyMzg2IDEzIDIgMTIuNzc2MSAyIDEyLjVaTTEyLjUgMTNIMTAuMTU1TDguNDgzMzYgMTEuMTUzTDExIDguNjM2NEwxMyAxMC42MzY0VjEyLjVDMTMgMTIuNzc2MSAxMi43NzYxIDEzIDEyLjUgMTNaTTYuNjQ5MjIgNS41QzYuNjQ5MjIgNS4wMzAxMyA3LjAzMDEzIDQuNjQ5MjIgNy41IDQuNjQ5MjJDNy45Njk4NyA0LjY0OTIyIDguMzUwNzggNS4wMzAxMyA4LjM1MDc4IDUuNUM4LjM1MDc4IDUuOTY5ODcgNy45Njk4NyA2LjM1MDc4IDcuNSA2LjM1MDc4QzcuMDMwMTMgNi4zNTA3OCA2LjY0OTIyIDUuOTY5ODcgNi42NDkyMiA1LjVaTTcuNSAzLjc0OTIyQzYuNTMzMDcgMy43NDkyMiA1Ljc0OTIyIDQuNTMzMDcgNS43NDkyMiA1LjVDNS43NDkyMiA2LjQ2NjkzIDYuNTMzMDcgNy4yNTA3OCA3LjUgNy4yNTA3OEM4LjQ2NjkzIDcuMjUwNzggOS4yNTA3OCA2LjQ2NjkzIDkuMjUwNzggNS41QzkuMjUwNzggNC41MzMwNyA4LjQ2NjkzIDMuNzQ5MjIgNy41IDMuNzQ5MjJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxlbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3Njg5MkMzLjg0MjIyIDAuODc2ODkyIDAuODc3MDc1IDMuODQyMDQgMC44NzcwNzUgNy40OTk3MkMwLjg3NzA3NSAxMS4xNTc0IDMuODQyMjIgMTQuMTIyNiA3LjQ5OTkxIDE0LjEyMjZDMTEuMTU3NiAxNC4xMjI2IDE0LjEyMjcgMTEuMTU3NCAxNC4xMjI3IDcuNDk5NzJDMTQuMTIyNyAzLjg0MjA0IDExLjE1NzYgMC44NzY4OTIgNy40OTk5MSAwLjg3Njg5MlpNMS44MjcwNyA3LjQ5OTcyQzEuODI3MDcgNC4zNjY3MSA0LjM2Njg5IDEuODI2ODkgNy40OTk5MSAxLjgyNjg5QzEwLjYzMjkgMS44MjY4OSAxMy4xNzI3IDQuMzY2NzEgMTMuMTcyNyA3LjQ5OTcyQzEzLjE3MjcgMTAuNjMyNyAxMC42MzI5IDEzLjE3MjYgNy40OTk5MSAxMy4xNzI2QzQuMzY2ODkgMTMuMTcyNiAxLjgyNzA3IDEwLjYzMjcgMS44MjcwNyA3LjQ5OTcyWk04LjI0OTkyIDQuNDk5OTlDOC4yNDk5MiA0LjkxNDIgNy45MTQxMyA1LjI0OTk5IDcuNDk5OTIgNS4yNDk5OUM3LjA4NTcxIDUuMjQ5OTkgNi43NDk5MiA0LjkxNDIgNi43NDk5MiA0LjQ5OTk5QzYuNzQ5OTIgNC4wODU3NyA3LjA4NTcxIDMuNzQ5OTkgNy40OTk5MiAzLjc0OTk5QzcuOTE0MTMgMy43NDk5OSA4LjI0OTkyIDQuMDg1NzcgOC4yNDk5MiA0LjQ5OTk5Wk02LjAwMDAzIDUuOTk5OTlINi41MDAwM0g3LjUwMDAzQzcuNzc2MTggNS45OTk5OSA4LjAwMDAzIDYuMjIzODQgOC4wMDAwMyA2LjQ5OTk5VjkuOTk5OTlIOC41MDAwM0g5LjAwMDAzVjExSDguNTAwMDNINy41MDAwM0g2LjUwMDAzSDYuMDAwMDNWOS45OTk5OUg2LjUwMDAzSDcuMDAwMDNWNi45OTk5OUg2LjUwMDAzSDYuMDAwMDNWNS45OTk5OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHRuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02LjUgMUM2LjIyMzg2IDEgNiAxLjIyMzg2IDYgMS41QzYgMS43NzYxNCA2LjIyMzg2IDIgNi41IDJDNy4xMjY3MSAyIDcuNDU3MTggMi4yMDAyOCA3LjY1NTYzIDIuNDc4MTJDNy44NzgxIDIuNzg5NTcgOCAzLjI4ODM3IDggNFYxMUM4IDExLjcxMTYgNy44NzgxIDEyLjIxMDQgNy42NTU2MyAxMi41MjE5QzcuNDU3MTggMTIuNzk5NyA3LjEyNjcxIDEzIDYuNSAxM0M2LjIyMzg2IDEzIDYgMTMuMjIzOSA2IDEzLjVDNiAxMy43NzYxIDYuMjIzODYgMTQgNi41IDE0QzcuMzczMjkgMTQgOC4wNDI4MiAxMy43MDAzIDguNDY5MzcgMTMuMTAzMUM4LjQ3OTc2IDEzLjA4ODYgOC40ODk5NyAxMy4wNzM5IDguNSAxMy4wNTkxQzguNTEwMDMgMTMuMDczOSA4LjUyMDI0IDEzLjA4ODYgOC41MzA2MyAxMy4xMDMxQzguOTU3MTggMTMuNzAwMyA5LjYyNjcxIDE0IDEwLjUgMTRDMTAuNzc2MSAxNCAxMSAxMy43NzYxIDExIDEzLjVDMTEgMTMuMjIzOSAxMC43NzYxIDEzIDEwLjUgMTNDOS44NzMyOSAxMyA5LjU0MjgyIDEyLjc5OTcgOS4zNDQzNyAxMi41MjE5QzkuMTIxOSAxMi4yMTA0IDkgMTEuNzExNiA5IDExVjRDOSAzLjI4ODM3IDkuMTIxOSAyLjc4OTU3IDkuMzQ0MzcgMi40NzgxMkM5LjU0MjgyIDIuMjAwMjggOS44NzMyOSAyIDEwLjUgMkMxMC43NzYxIDIgMTEgMS43NzYxNCAxMSAxLjVDMTEgMS4yMjM4NiAxMC43NzYxIDEgMTAuNSAxQzkuNjI2NzEgMSA4Ljk1NzE4IDEuMjk5NzIgOC41MzA2MyAxLjg5Njg4QzguNTIwMjQgMS45MTE0MyA4LjUxMDAzIDEuOTI2MTEgOC41IDEuOTQwOUM4LjQ4OTk3IDEuOTI2MTEgOC40Nzk3NiAxLjkxMTQzIDguNDY5MzcgMS44OTY4OEM4LjA0MjgyIDEuMjk5NzIgNy4zNzMyOSAxIDYuNSAxWk0xNCA1SDExVjRIMTRDMTQuNTUyMyA0IDE1IDQuNDQ3NzIgMTUgNVYxMEMxNSAxMC41NTIzIDE0LjU1MjMgMTEgMTQgMTFIMTFWMTBIMTRWNVpNNiA0VjVIMUwxIDEwSDZWMTFIMUMwLjQ0NzcxNSAxMSAwIDEwLjU1MjMgMCAxMFY1QzAgNC40NDc3MiAwLjQ0NzcxNSA0IDEgNEg2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNDk5OTggMC41QzUuNDk5OTggMC4yMjM4NTggNS43MjM4MyAwIDUuOTk5OTggMEg3LjQ5OTk4SDguOTk5OThDOS4yNzYxMiAwIDkuNDk5OTggMC4yMjM4NTggOS40OTk5OCAwLjVDOS40OTk5OCAwLjc3NjE0MiA5LjI3NjEyIDEgOC45OTk5OCAxSDcuOTk5OThWMi4xMTkyMkM5LjA5ODMyIDIuMjA0MDkgMTAuMTE5IDIuNTY2MjIgMTAuOTkyIDMuMTM1NzJDMTEuMDExNiAzLjEwODUxIDExLjAzMzYgMy4wODI1MiAxMS4wNTggMy4wNTgwNkwxMi4wNTggMi4wNTgwNkMxMi4zMDIxIDEuODEzOTggMTIuNjk3OCAxLjgxMzk4IDEyLjk0MTkgMi4wNTgwNkMxMy4xODYgMi4zMDIxNCAxMy4xODYgMi42OTc4NiAxMi45NDE5IDIuOTQxOTRMMTEuOTY3IDMuOTE2ODJDMTMuMTU5NSA1LjA3OTI1IDEzLjkgNi43MDMxNCAxMy45IDguNDk5OThDMTMuOSAxMi4wMzQ2IDExLjAzNDYgMTQuOSA3LjQ5OTk4IDE0LjlDMy45NjUzNSAxNC45IDEuMDk5OTggMTIuMDM0NiAxLjA5OTk4IDguNDk5OThDMS4wOTk5OCA1LjEzMzYxIDMuNjk5MDQgMi4zNzQzIDYuOTk5OTggMi4xMTkyMlYxSDUuOTk5OThDNS43MjM4MyAxIDUuNDk5OTggMC43NzYxNDIgNS40OTk5OCAwLjVaTTIuMDk5OTggOC40OTk5OEMyLjA5OTk4IDUuNTE3NjQgNC41MTc2NCAzLjA5OTk4IDcuNDk5OTggMy4wOTk5OEMxMC40ODIzIDMuMDk5OTggMTIuOSA1LjUxNzY0IDEyLjkgOC40OTk5OEMxMi45IDExLjQ4MjMgMTAuNDgyMyAxMy45IDcuNDk5OTggMTMuOUM0LjUxNzY0IDEzLjkgMi4wOTk5OCAxMS40ODIzIDIuMDk5OTggOC40OTk5OFpNNy40OTk5OCA4LjQ5OTk4VjQuMDk5OThDNS4wNjk5MiA0LjA5OTk4IDMuMDk5OTggNi4wNjk5MiAzLjA5OTk4IDguNDk5OThDMy4wOTk5OCAxMC45MyA1LjA2OTkyIDEyLjkgNy40OTk5OCAxMi45QzguNzE1IDEyLjkgOS44MTUgMTIuNDA3NSAxMC42MTEyIDExLjYxMTJMNy40OTk5OCA4LjQ5OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNzU0MzIgMC44MTk1MzdDNy41OTc0MiAwLjcyNjgyMSA3LjQwMjUgMC43MjY4MjEgNy4yNDU1OSAwLjgxOTUzN0wxLjc0NTU5IDQuMDY5NTRDMS41OTMzNiA0LjE1OTQ5IDEuNDk5OTYgNC4zMjMxNyAxLjQ5OTk2IDQuNUMxLjQ5OTk2IDQuNjc2ODMgMS41OTMzNiA0Ljg0MDUxIDEuNzQ1NTkgNC45MzA0Nkw3LjI0NTU5IDguMTgwNDZDNy40MDI1IDguMjczMTggNy41OTc0MiA4LjI3MzE4IDcuNzU0MzIgOC4xODA0NkwxMy4yNTQzIDQuOTMwNDZDMTMuNDA2NiA0Ljg0MDUxIDEzLjUgNC42NzY4MyAxMy41IDQuNUMxMy41IDQuMzIzMTcgMTMuNDA2NiA0LjE1OTQ5IDEzLjI1NDMgNC4wNjk1NEw3Ljc1NDMyIDAuODE5NTM3Wk03LjQ5OTk2IDcuMTY5MjNMMi45ODI4IDQuNUw3LjQ5OTk2IDEuODMwNzdMMTIuMDE3MSA0LjVMNy40OTk5NiA3LjE2OTIzWk0xLjU2OTUgNy40OTU2NEMxLjcwOTk4IDcuMjU3OSAyLjAxNjU5IDcuMTc5MDYgMi4yNTQzMiA3LjMxOTU0TDcuNDk5OTYgMTAuNDE5MkwxMi43NDU2IDcuMzE5NTRDMTIuOTgzMyA3LjE3OTA2IDEzLjI4OTkgNy4yNTc5IDEzLjQzMDQgNy40OTU2NEMxMy41NzA5IDcuNzMzMzcgMTMuNDkyMSA4LjAzOTk4IDEzLjI1NDMgOC4xODA0Nkw3Ljc1NDMyIDExLjQzMDVDNy41OTc0MiAxMS41MjMyIDcuNDAyNSAxMS41MjMyIDcuMjQ1NTkgMTEuNDMwNUwxLjc0NTU5IDguMTgwNDZDMS41MDc4NiA4LjAzOTk4IDEuNDI5MDEgNy43MzMzNyAxLjU2OTUgNy40OTU2NFpNMS41Njk0OSAxMC40OTU2QzEuNzA5OTggMTAuMjU3OSAyLjAxNjU4IDEwLjE3OTEgMi4yNTQzMiAxMC4zMTk1TDcuNDk5OTYgMTMuNDE5MkwxMi43NDU2IDEwLjMxOTVDMTIuOTgzMyAxMC4xNzkxIDEzLjI4OTkgMTAuMjU3OSAxMy40MzA0IDEwLjQ5NTZDMTMuNTcwOSAxMC43MzM0IDEzLjQ5MjEgMTEuMDQgMTMuMjU0MyAxMS4xODA1TDcuNzU0MzIgMTQuNDMwNUM3LjU5NzQyIDE0LjUyMzIgNy40MDI1IDE0LjUyMzIgNy4yNDU1OSAxNC40MzA1TDEuNzQ1NTkgMTEuMTgwNUMxLjUwNzg1IDExLjA0IDEuNDI5MDEgMTAuNzMzNCAxLjU2OTQ5IDEwLjQ5NTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxvbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOSAySDZWMTNIOVYyWk0xMCAyVjEzSDEyLjVDMTIuNzc2MSAxMyAxMyAxMi43NzYxIDEzIDEyLjVWMi41QzEzIDIuMjIzODYgMTIuNzc2MSAyIDEyLjUgMkgxMFpNMi41IDJINVYxM0gyLjVDMi4yMjM4NiAxMyAyIDEyLjc3NjEgMiAxMi41VjIuNUMyIDIuMjIzODYgMi4yMjM4NiAyIDIuNSAyWk0yLjUgMUMxLjY3MTU3IDEgMSAxLjY3MTU3IDEgMi41VjEyLjVDMSAxMy4zMjg0IDEuNjcxNTcgMTQgMi41IDE0SDEyLjVDMTMuMzI4NCAxNCAxNCAxMy4zMjg0IDE0IDEyLjVWMi41QzE0IDEuNjcxNTcgMTMuMzI4NCAxIDEyLjUgMUgyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxhbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy42ODk3OSAyLjc1QzMuODk2NjcgMi43NDk3OSA0LjA4MjMyIDIuODc3MDEgNC4xNTY3OSAzLjA3MDAzTDcuMzY2NjIgMTEuMzlDNy40NjYwMiAxMS42NDc3IDcuMzM3NzQgMTEuOTM3MSA3LjA4MDEgMTIuMDM2NUM2LjgyMjQ3IDEyLjEzNTkgNi41MzMwNCAxMi4wMDc2IDYuNDMzNjUgMTEuNzVMNS4zODI1IDkuMDI1MzdIMi4wMTEzM0wwLjk2Njk5MiAxMS43NDlDMC44NjgxMjggMTIuMDA2OCAwLjU3ODk2NCAxMi4xMzU3IDAuMzIxMTI2IDEyLjAzNjlDMC4wNjMyODc4IDExLjkzOCAtMC4wNjU1ODY0IDExLjY0ODggMC4wMzMyNzc0IDExLjM5MUwzLjIyMzQ0IDMuMDcwOTlDMy4yOTc1MSAyLjg3NzgyIDMuNDgyOSAyLjc1MDIxIDMuNjg5NzkgMi43NVpNMy42OTE3NCA0LjY0Mjg0TDUuMDU0NTggOC4xNzUzN0gyLjMzNzI0TDMuNjkxNzQgNC42NDI4NFpNMTAuODk4OSA1LjIwNzAzQzkuMjU4MTggNS4yMDcwMyA4LjAwOTE1IDYuNjg1NjkgOC4wMDkxNSA4LjYwOTcyQzguMDA5MTUgMTAuNjMzNyA5LjM1ODE4IDEyLjAxMjQgMTAuODk4OSAxMi4wMTI0QzExLjcyMTQgMTIuMDEyNCAxMi41NzQ0IDExLjY2OTIgMTMuMTU0MyAxMS4wMjE5VjExLjUzQzEzLjE1NDMgMTEuNzc4NSAxMy4zNTU3IDExLjk4IDEzLjYwNDMgMTEuOThDMTMuODUyOCAxMS45OCAxNC4wNTQzIDExLjc3ODUgMTQuMDU0MyAxMS41M1Y1LjcyQzE0LjA1NDMgNS40NzE0NyAxMy44NTI4IDUuMjcgMTMuNjA0MyA1LjI3QzEzLjM1NTcgNS4yNyAxMy4xNTQzIDUuNDcxNDcgMTMuMTU0MyA1LjcyVjYuMjIzMTdDMTIuNjA1NCA1LjYwMDk1IDExLjc5MjQgNS4yMDcwMyAxMC44OTg5IDUuMjA3MDNaTTEzLjE1NDMgOS43OTgyM1Y3LjMwMTk1QzEyLjc2MzkgNi41ODEwMSAxMS45NDE0IDYuMDU3NTcgMTEuMDg2OCA2LjA1NzU3QzEwLjEwODggNi4wNTc1NyA5LjAzNTAzIDYuOTY1ODEgOS4wMzUwMyA4LjYwOTU1QzkuMDM1MDMgMTAuMTUzMyAxMC4wMDg4IDExLjE2MTUgMTEuMDg2OCAxMS4xNjE1QzExLjk3MDEgMTEuMTYxNSAxMi43NzE5IDEwLjQ5NTIgMTMuMTU0MyA5Ljc5ODIzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNjk4OTkgNS4yMDcwM0MyLjA1ODIzIDUuMjA3MDMgMC44MDkyMDQgNi42ODU2OSAwLjgwOTIwNCA4LjYwOTcyQzAuODA5MjA0IDEwLjYzMzcgMi4xNTgyMyAxMi4wMTI0IDMuNjk4OTkgMTIuMDEyNEM0LjUyMTI2IDEyLjAxMjQgNS4zNzQwMiAxMS42NjkzIDUuOTUzOSAxMS4wMjIzVjExLjUzQzUuOTUzOSAxMS43Nzg1IDYuMTU1MzcgMTEuOTggNi40MDM5IDExLjk4QzYuNjUyNDMgMTEuOTggNi44NTM5IDExLjc3ODUgNi44NTM5IDExLjUzVjUuNzIwMDFDNi44NTM5IDUuNDcxNDkgNi42NTI0MyA1LjI3MDAxIDYuNDAzOSA1LjI3MDAxQzYuMTU1MzcgNS4yNzAwMSA1Ljk1MzkgNS40NzE0OSA1Ljk1MzkgNS43MjAwMVY2LjIyMjY5QzUuNDA1MDYgNS42MDA3NSA0LjU5MjE4IDUuMjA3MDMgMy42OTg5OSA1LjIwNzAzWk01Ljk1MzkgOS43OTlWNy4zMDExN0M1LjU2MzM5IDYuNTgwNjQgNC43NDExOCA2LjA1NzU3IDMuODg2OCA2LjA1NzU3QzIuOTA4OSA2LjA1NzU3IDEuODM1MDggNi45NjU4MSAxLjgzNTA4IDguNjA5NTVDMS44MzUwOCAxMC4xNTMzIDIuODA4ODkgMTEuMTYxNSAzLjg4NjggMTEuMTYxNUM0Ljc2OTg0IDExLjE2MTUgNS41NzE0MSAxMC40OTU3IDUuOTUzOSA5Ljc5OVpNMTAuNzk5IDUuMjA3MDNDOS4xNTgyMyA1LjIwNzAzIDcuOTA5MiA2LjY4NTY5IDcuOTA5MiA4LjYwOTcyQzcuOTA5MiAxMC42MzM3IDkuMjU4MjMgMTIuMDEyNCAxMC43OTkgMTIuMDEyNEMxMS42MjE1IDEyLjAxMjQgMTIuNDc0NCAxMS42NjkyIDEzLjA1NDMgMTEuMDIxOFYxMS41M0MxMy4wNTQzIDExLjc3ODUgMTMuMjU1OCAxMS45OCAxMy41MDQzIDExLjk4QzEzLjc1MjkgMTEuOTggMTMuOTU0MyAxMS43Nzg1IDEzLjk1NDMgMTEuNTNWNS43MkMxMy45NTQzIDUuNDcxNDcgMTMuNzUyOSA1LjI3IDEzLjUwNDMgNS4yN0MxMy4yNTU4IDUuMjcgMTMuMDU0MyA1LjQ3MTQ3IDEzLjA1NDMgNS43MlY2LjIyMzE4QzEyLjUwNTUgNS42MDA5NSAxMS42OTI0IDUuMjA3MDMgMTAuNzk5IDUuMjA3MDNaTTEzLjA1NDMgOS43OTgyMlY3LjMwMTk2QzEyLjY2NCA2LjU4MTAyIDExLjg0MTUgNi4wNTc1NyAxMC45ODY4IDYuMDU3NTdDMTAuMDA4OSA2LjA1NzU3IDguOTM1MDggNi45NjU4MSA4LjkzNTA4IDguNjA5NTVDOC45MzUwOCAxMC4xNTMzIDkuOTA4ODkgMTEuMTYxNSAxMC45ODY4IDExLjE2MTVDMTEuODcwMiAxMS4xNjE1IDEyLjY3MiAxMC40OTUyIDEzLjA1NDMgOS43OTgyMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHNuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS4yODk1IDIuNzVDMTEuNDk2NCAyLjc0OTc5IDExLjY4MjEgMi44NzcwMSAxMS43NTY1IDMuMDcwMDNMMTQuOTY2NCAxMS4zOUMxNS4wNjU3IDExLjY0NzcgMTQuOTM3NSAxMS45MzcxIDE0LjY3OTggMTIuMDM2NUMxNC40MjIyIDEyLjEzNTkgMTQuMTMyOCAxMi4wMDc2IDE0LjAzMzQgMTEuNzVMMTIuOTgyMiA5LjAyNTM3SDkuNjExMDZMOC41NjY3MiAxMS43NDlDOC40Njc4NiAxMi4wMDY4IDguMTc4NyAxMi4xMzU3IDcuOTIwODYgMTIuMDM2OUM3LjY2MzAyIDExLjkzOCA3LjUzNDE0IDExLjY0ODggNy42MzMwMSAxMS4zOTFMMTAuODIzMiAzLjA3MDk5QzEwLjg5NzIgMi44Nzc4MiAxMS4wODI2IDIuNzUwMjEgMTEuMjg5NSAyLjc1Wk0xMS4yOTE1IDQuNjQyODRMMTIuNjU0MyA4LjE3NTM3SDkuOTM2OThMMTEuMjkxNSA0LjY0Mjg0Wk0yLjg5ODk1IDUuMjA3MDNDMS4yNTgxOCA1LjIwNzAzIDAuMDA5MTU1MjcgNi42ODU2OSAwLjAwOTE1NTI3IDguNjA5NzJDMC4wMDkxNTUyNyAxMC42MzM3IDEuMzU4MTggMTIuMDEyNCAyLjg5ODk1IDEyLjAxMjRDMy43MjE0MSAxMi4wMTI0IDQuNTc0MzggMTEuNjY5MiA1LjE1NDI3IDExLjAyMTlWMTEuNTNDNS4xNTQyNyAxMS43Nzg1IDUuMzU1NzQgMTEuOTggNS42MDQyNyAxMS45OEM1Ljg1MjggMTEuOTggNi4wNTQyNyAxMS43Nzg1IDYuMDU0MjcgMTEuNTNWNS43MkM2LjA1NDI3IDUuNDcxNDcgNS44NTI4IDUuMjcgNS42MDQyNyA1LjI3QzUuMzU1NzQgNS4yNyA1LjE1NDI3IDUuNDcxNDcgNS4xNTQyNyA1LjcyVjYuMjIzMTdDNC42MDU0MyA1LjYwMDk1IDMuNzkyMzYgNS4yMDcwMyAyLjg5ODk1IDUuMjA3MDNaTTUuMTU0MjcgOS43OTgyM1Y3LjMwMTk1QzQuNzYzOTMgNi41ODEwMSAzLjk0MTQ0IDYuMDU3NTcgMy4wODY3NSA2LjA1NzU3QzIuMTA4ODUgNi4wNTc1NyAxLjAzNTAzIDYuOTY1ODEgMS4wMzUwMyA4LjYwOTU1QzEuMDM1MDMgMTAuMTUzMyAyLjAwODg1IDExLjE2MTUgMy4wODY3NSAxMS4xNjE1QzMuOTcwMTEgMTEuMTYxNSA0Ljc3MTk1IDEwLjQ5NTIgNS4xNTQyNyA5Ljc5ODIzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sY249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNjI1NSAyLjc1QzMuODM0NzggMi43NSA0LjAyMTkyIDIuODgwMzQgNC4wOTQ0OCAzLjA3NjY0TDcuMTY5ODUgMTEuMzk2MkM3LjI2NTYgMTEuNjU1MiA3LjEzMzI0IDExLjk0MjggNi44NzQyMyAxMi4wMzg2QzYuNjE1MjIgMTIuMTM0MyA2LjMyNzYzIDEyLjAwMiA2LjIzMTg4IDExLjc0MjlMNS4yMjM4NyA5LjAxNjAzSDIuMDI3MTJMMS4wMTkxMSAxMS43NDI5QzAuOTIzMzYyIDEyLjAwMiAwLjYzNTc3NCAxMi4xMzQzIDAuMzc2NzYyIDEyLjAzODZDMC4xMTc3NDkgMTEuOTQyOCAtMC4wMTQ2MDUyIDExLjY1NTIgMC4wODExNDAxIDExLjM5NjJMMy4xNTY1MSAzLjA3NjY0QzMuMjI5MDggMi44ODAzNCAzLjQxNjIxIDIuNzUgMy42MjU1IDIuNzVaTTMuNjI1NSA0LjY5MjA3TDQuOTA5NjYgOC4xNjYwM0gyLjM0MTMzTDMuNjI1NSA0LjY5MjA3Wk0xMS4zNzE5IDIuNzVDMTEuNTgxMSAyLjc1IDExLjc2ODMgMi44ODAzNCAxMS44NDA4IDMuMDc2NjRMMTQuOTE2MiAxMS4zOTYyQzE1LjAxMiAxMS42NTUyIDE0Ljg3OTYgMTEuOTQyOCAxNC42MjA2IDEyLjAzODZDMTQuMzYxNiAxMi4xMzQzIDE0LjA3NCAxMi4wMDIgMTMuOTc4MiAxMS43NDI5TDEyLjk3MDIgOS4wMTYwM0g5Ljc3MzQ4TDguNzY1NDcgMTEuNzQyOUM4LjY2OTcyIDEyLjAwMiA4LjM4MjEzIDEyLjEzNDMgOC4xMjMxMiAxMi4wMzg2QzcuODY0MTEgMTEuOTQyOCA3LjczMTc1IDExLjY1NTIgNy44Mjc1IDExLjM5NjJMMTAuOTAyOSAzLjA3NjY0QzEwLjk3NTQgMi44ODAzNCAxMS4xNjI2IDIuNzUgMTEuMzcxOSAyLjc1Wk0xMS4zNzE5IDQuNjkyMDdMMTIuNjU2IDguMTY2MDNIMTAuMDg3N0wxMS4zNzE5IDQuNjkyMDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx1bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC41NTI5MyAwLjk5OTk2OUM0Ljc1Mjk1IDAuOTk5OTY5IDQuOTMzNzIgMS4xMTkxNyA1LjAxMjUgMS4zMDMwMUw4LjAxMTA2IDguMjk5ODJDOC4xMTk4NCA4LjU1MzYzIDguMDAyMjYgOC44NDc1NyA3Ljc0ODQ0IDguOTU2MzVDNy40OTQ2MyA5LjA2NTEyIDcuMjAwNjkgOC45NDc1NCA3LjA5MTkxIDguNjkzNzNMNi4xMTYxMyA2LjQxNjg1SDIuOTg5NzNMMi4wMTM5NSA4LjY5MzczQzEuOTA1MTcgOC45NDc1NCAxLjYxMTIzIDkuMDY1MTIgMS4zNTc0MiA4Ljk1NjM1QzEuMTAzNiA4Ljg0NzU3IDAuOTg2MDIzIDguNTUzNjMgMS4wOTQ4IDguMjk5ODJMNC4wOTMzNiAxLjMwMzAxQzQuMTcyMTQgMS4xMTkxNyA0LjM1MjkxIDAuOTk5OTY5IDQuNTUyOTMgMC45OTk5NjlaTTQuNTUyOTMgMi43NjkyOUw1Ljc1MTg2IDUuNTY2ODVIMy4zNTRMNC41NTI5MyAyLjc2OTI5Wk0xMS4wNTYyIDkuMDAyMTRDMTEuMjYxNyA5LjAwMjE0IDExLjQ0NjMgOC44NzYzMyAxMS41MjE1IDguNjg1MDJMMTQuMjczMyAxLjY4Mjk5QzE0LjM3NDMgMS40MjU5OCAxNC4yNDc4IDEuMTM1NzUgMTMuOTkwOCAxLjAzNDc1QzEzLjczMzggMC45MzM3NDcgMTMuNDQzNiAxLjA2MDIxIDEzLjM0MjYgMS4zMTcyMkwxMS4wNTYyIDcuMTM1MTRMOC43Njk3MyAxLjMxNzIyQzguNjY4NzMgMS4wNjAyMSA4LjM3ODUgMC45MzM3NDcgOC4xMjE1IDEuMDM0NzVDNy44NjQ0OSAxLjEzNTc1IDcuNzM4MDIgMS40MjU5OCA3LjgzOTAyIDEuNjgyOTlMMTAuNTkwOCA4LjY4NTAyQzEwLjY2NiA4Ljg3NjMzIDEwLjg1MDYgOS4wMDIxNCAxMS4wNTYyIDkuMDAyMTRaTTE0Ljk1MzcgMTIuNDk5OUMxNC45NTM3IDEyLjYwNiAxNC45MTE1IDEyLjcwNzcgMTQuODM2NSAxMi43ODI4TDEyLjgzNjUgMTQuNzgyOEMxMi42ODAzIDE0LjkzOSAxMi40MjcxIDE0LjkzOSAxMi4yNzA4IDE0Ljc4MjhDMTIuMTE0NiAxNC42MjY1IDEyLjExNDYgMTQuMzczMyAxMi4yNzA4IDE0LjIxNzFMMTMuNTg4IDEyLjg5OTlIMS41MTkzN0wyLjgzNjUzIDE0LjIxNzFDMi45OTI3NCAxNC4zNzMzIDIuOTkyNzQgMTQuNjI2NSAyLjgzNjUzIDE0Ljc4MjhDMi42ODAzMiAxNC45MzkgMi40MjcwNSAxNC45MzkgMi4yNzA4NCAxNC43ODI4TDAuMjcwODQzIDEyLjc4MjhDMC4xOTU4MjggMTIuNzA3NyAwLjE1MzY4NyAxMi42MDYgMC4xNTM2ODcgMTIuNDk5OUMwLjE1MzY4NyAxMi4zOTM4IDAuMTk1ODI4IDEyLjI5MjEgMC4yNzA4NDMgMTIuMjE3MUwyLjI3MDg0IDEwLjIxNzFDMi40MjcwNSAxMC4wNjA5IDIuNjgwMzIgMTAuMDYwOSAyLjgzNjUzIDEwLjIxNzFDMi45OTI3NCAxMC4zNzMzIDIuOTkyNzQgMTAuNjI2NSAyLjgzNjUzIDEwLjc4MjhMMS41MTkzNyAxMi4wOTk5TDEzLjU4OCAxMi4wOTk5TDEyLjI3MDggMTAuNzgyOEMxMi4xMTQ2IDEwLjYyNjUgMTIuMTE0NiAxMC4zNzMzIDEyLjI3MDggMTAuMjE3MUMxMi40MjcxIDEwLjA2MDkgMTIuNjgwMyAxMC4wNjA5IDEyLjgzNjUgMTAuMjE3MUwxNC44MzY1IDEyLjIxNzFDMTQuOTExNSAxMi4yOTIxIDE0Ljk1MzcgMTIuMzkzOCAxNC45NTM3IDEyLjQ5OTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxmbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC42OTY2NiAwLjA0MDM1NEM4LjkwODU5IDAuMTMxMDM4IDkuMDMxMDUgMC4zNTQ4NTYgOC45OTMxNSAwLjU4MjIzNUw4LjA5MDE5IDYuMDAwMDFIMTIuNDk5OUMxMi42ODkzIDYuMDAwMDEgMTIuODYyNSA2LjEwNzAxIDEyLjk0NzIgNi4yNzY0QzEzLjAzMTggNi40NDU3OSAxMy4wMTM2IDYuNjQ4NSAxMi44OTk5IDYuOEw2Ljg5OTk3IDE0LjhDNi43NjE2NiAxNC45ODQ0IDYuNTE1MiAxNS4wNTAzIDYuMzAzMjcgMTQuOTU5NkM2LjA5MTM0IDE0Ljg2OSA1Ljk2ODg4IDE0LjY0NTEgNi4wMDY3OCAxNC40MTc4TDYuOTA5NzQgOC45OTk5OUgyLjQ5OTk5QzIuMzEwNjEgOC45OTk5OSAyLjEzNzQ3IDguODkyOTkgMi4wNTI3OCA4LjcyMzZDMS45NjgwOCA4LjU1NDIxIDEuOTg2MzYgOC4zNTE1IDIuMDk5OTkgOC4yTDguMDk5OTYgMC4yMDAwMzdDOC4yMzgyNyAwLjAxNTYyNTUgOC40ODQ3MyAtMC4wNTAzMzAxIDguNjk2NjYgMC4wNDAzNTRaTTMuNDk5OTkgOEg3LjQ5OTk2QzcuNjQ2OTQgOCA3Ljc4NjQ3IDguMDY0NjYgNy44ODE0NyA4LjE3NjgxQzcuOTc2NDcgOC4yODg5NSA4LjAxNzMyIDguNDM3MjIgNy45OTMxNiA4LjU4MjE5TDcuMzMwMjYgMTIuNTU5NkwxMS40OTk5IDdINy40OTk5NkM3LjM1Mjk5IDcgNy4yMTM0NiA2LjkzNTM0IDcuMTE4NDYgNi44MjMxOUM3LjAyMzQ2IDYuNzExMDUgNi45ODI2MSA2LjU2Mjc4IDcuMDA2NzcgNi40MTc4MUw3LjY2OTY3IDIuNDQwNDJMMy40OTk5OSA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNzgyMzMgMi4yMTcxM0MzLjcwNzMyIDIuMTQyMTIgMy42MDU1NyAyLjA5OTk4IDMuNDk5NDkgMi4wOTk5OEMzLjM5MzQgMi4wOTk5OCAzLjI5MTY2IDIuMTQyMTIgMy4yMTY2NCAyLjIxNzEzTDEuMjE2NjQgNC4yMTcxM0MxLjA2MDQ0IDQuMzczMzQgMS4wNjA0NCA0LjYyNjYxIDEuMjE2NjQgNC43ODI4MkMxLjM3Mjg1IDQuOTM5MDMgMS42MjYxMiA0LjkzOTAzIDEuNzgyMzMgNC43ODI4MkwzLjA5OTQ5IDMuNDY1NjZMMy4wOTk0OSAxMS41MzQzTDEuNzgyMzMgMTAuMjE3MUMxLjYyNjEyIDEwLjA2MDkgMS4zNzI4NSAxMC4wNjA5IDEuMjE2NjQgMTAuMjE3MUMxLjA2MDQzIDEwLjM3MzMgMS4wNjA0MyAxMC42MjY2IDEuMjE2NjQgMTAuNzgyOEwzLjIxNjY0IDEyLjc4MjhDMy4yOTE2NiAxMi44NTc4IDMuMzkzNCAxMi45IDMuNDk5NDkgMTIuOUMzLjYwNTU3IDEyLjkgMy43MDczMSAxMi44NTc4IDMuNzgyMzMgMTIuNzgyOEw1Ljc4MjMzIDEwLjc4MjhDNS45Mzg1NCAxMC42MjY2IDUuOTM4NTQgMTAuMzczMyA1Ljc4MjMzIDEwLjIxNzFDNS42MjYxMiAxMC4wNjA5IDUuMzcyODUgMTAuMDYwOSA1LjIxNjY0IDEwLjIxNzFMMy44OTk0OSAxMS41MzQzTDMuODk5NDkgMy40NjU2Nkw1LjIxNjY0IDQuNzgyODJDNS4zNzI4NSA0LjkzOTAzIDUuNjI2MTIgNC45MzkwMyA1Ljc4MjMzIDQuNzgyODJDNS45Mzg1NCA0LjYyNjYxIDUuOTM4NTQgNC4zNzMzNCA1Ljc4MjMzIDQuMjE3MTNMMy43ODIzMyAyLjIxNzEzWk04LjQ5OTk4IDMuOTk5OTdDOC4yMjM4MyAzLjk5OTk3IDcuOTk5OTggNC4yMjM4MiA3Ljk5OTk4IDQuNDk5OTdDNy45OTk5OCA0Ljc3NjExIDguMjIzODMgNC45OTk5NyA4LjQ5OTk4IDQuOTk5OTdIMTQuNUMxNC43NzYxIDQuOTk5OTcgMTUgNC43NzYxMSAxNSA0LjQ5OTk3QzE1IDQuMjIzODIgMTQuNzc2MSAzLjk5OTk3IDE0LjUgMy45OTk5N0g4LjQ5OTk4Wk03Ljk5OTk4IDcuNDk5OTdDNy45OTk5OCA3LjIyMzgyIDguMjIzODMgNi45OTk5NyA4LjQ5OTk4IDYuOTk5OTdIMTQuNUMxNC43NzYxIDYuOTk5OTcgMTUgNy4yMjM4MiAxNSA3LjQ5OTk3QzE1IDcuNzc2MTEgMTQuNzc2MSA3Ljk5OTk3IDE0LjUgNy45OTk5N0g4LjQ5OTk4QzguMjIzODMgNy45OTk5NyA3Ljk5OTk4IDcuNzc2MTEgNy45OTk5OCA3LjQ5OTk3Wk04LjQ5OTk4IDkuOTk5OTdDOC4yMjM4MyA5Ljk5OTk3IDcuOTk5OTggMTAuMjIzOCA3Ljk5OTk4IDEwLjVDNy45OTk5OCAxMC43NzYxIDguMjIzODMgMTEgOC40OTk5OCAxMUgxNC41QzE0Ljc3NjEgMTEgMTUgMTAuNzc2MSAxNSAxMC41QzE1IDEwLjIyMzggMTQuNzc2MSA5Ljk5OTk3IDE0LjUgOS45OTk5N0g4LjQ5OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNjI0NzEgNC4wMDAwMUw0LjU2NDAyIDQuMDAwMDFDNC4wNDEzNCAzLjk5OTkzIDMuNzA2ODcgMy45OTk4OCAzLjQxODIgNC4wNTVDMi4yMzc5IDQuMjgwMzkgMS4yOTg0NiA1LjE3MDUzIDEuMDU4MTUgNi4zMzAzNUMwLjk5OTUzOCA2LjYxMzIxIDAuOTk5NjA0IDYuOTM5OTggMC45OTk3MDMgNy40MzY4OUwwLjk5OTcxMSA3LjUwMDAxTDAuOTk5NzAzIDcuNTYzMTNDMC45OTk2MDQgOC4wNjAwNCAwLjk5OTUzOCA4LjM4NjgxIDEuMDU4MTUgOC42Njk2N0MxLjI5ODQ2IDkuODI5NSAyLjIzNzkgMTAuNzE5NiAzLjQxODIgMTAuOTQ1QzMuNzA2ODggMTEuMDAwMSA0LjA0MTM1IDExLjAwMDEgNC41NjQwMyAxMUw0LjYyNDcxIDExSDUuNDk5NzFDNS43NzU4NSAxMSA1Ljk5OTcxIDEwLjc3NjIgNS45OTk3MSAxMC41QzUuOTk5NzEgMTAuMjIzOSA1Ljc3NTg1IDEwIDUuNDk5NzEgMTBINC42MjQ3MUM0LjAyMDg0IDEwIDMuNzg5MDcgOS45OTc3NyAzLjYwNTc3IDkuOTYyNzdDMi44MDI2MiA5LjgwOTQgMi4xOTE1NyA5LjIxMTA4IDIuMDM3MzUgOC40NjY3OEMyLjAwMjMzIDguMjk3NzggMS45OTk3MSA4LjA4MjUxIDEuOTk5NzEgNy41MDAwMUMxLjk5OTcxIDYuOTE3NTIgMi4wMDIzMyA2LjcwMjI1IDIuMDM3MzUgNi41MzMyNEMyLjE5MTU3IDUuNzg4OTUgMi44MDI2MiA1LjE5MDYyIDMuNjA1NzcgNS4wMzcyNUMzLjc4OTA3IDUuMDAyMjUgNC4wMjA4NCA1LjAwMDAxIDQuNjI0NzEgNS4wMDAwMUg1LjQ5OTcxQzUuNzc1ODUgNS4wMDAwMSA1Ljk5OTcxIDQuNzc2MTUgNS45OTk3MSA0LjUwMDAxQzUuOTk5NzEgNC4yMjM4NyA1Ljc3NTg1IDQuMDAwMDEgNS40OTk3MSA0LjAwMDAxSDQuNjI0NzFaTTEwLjM3NDcgNS4wMDAwMUMxMC45Nzg2IDUuMDAwMDEgMTEuMjEwNCA1LjAwMjI1IDExLjM5MzcgNS4wMzcyNUMxMi4xOTY4IDUuMTkwNjIgMTIuODA3OSA1Ljc4ODk1IDEyLjk2MjEgNi41MzMyNEMxMi45OTcxIDYuNzAyMjUgMTIuOTk5NyA2LjkxNzUyIDEyLjk5OTcgNy41MDAwMUMxMi45OTk3IDguMDgyNTEgMTIuOTk3MSA4LjI5Nzc4IDEyLjk2MjEgOC40NjY3OEMxMi44MDc5IDkuMjExMDggMTIuMTk2OCA5LjgwOTQgMTEuMzkzNyA5Ljk2Mjc3QzExLjIxMDQgOS45OTc3NyAxMC45Nzg2IDEwIDEwLjM3NDcgMTBIOS40OTk3MUM5LjIyMzU3IDEwIDguOTk5NzEgMTAuMjIzOSA4Ljk5OTcxIDEwLjVDOC45OTk3MSAxMC43NzYyIDkuMjIzNTcgMTEgOS40OTk3MSAxMUgxMC4zNzQ3TDEwLjQzNTQgMTFDMTAuOTU4MSAxMS4wMDAxIDExLjI5MjUgMTEuMDAwMSAxMS41ODEyIDEwLjk0NUMxMi43NjE1IDEwLjcxOTYgMTMuNzAxIDkuODI5NSAxMy45NDEzIDguNjY5NjdDMTMuOTk5OSA4LjM4NjgxIDEzLjk5OTggOC4wNjAwNSAxMy45OTk3IDcuNTYzMTRMMTMuOTk5NyA3LjUwMDAxTDEzLjk5OTcgNy40MzY4OEMxMy45OTk4IDYuOTM5OTggMTMuOTk5OSA2LjYxMzIxIDEzLjk0MTMgNi4zMzAzNUMxMy43MDEgNS4xNzA1MyAxMi43NjE1IDQuMjgwMzkgMTEuNTgxMiA0LjA1NUMxMS4yOTI1IDMuOTk5ODggMTAuOTU4MSAzLjk5OTkzIDEwLjQzNTQgNC4wMDAwMUwxMC4zNzQ3IDQuMDAwMDFIOS40OTk3MUM5LjIyMzU3IDQuMDAwMDEgOC45OTk3MSA0LjIyMzg3IDguOTk5NzEgNC41MDAwMUM4Ljk5OTcxIDQuNzc2MTUgOS4yMjM1NyA1LjAwMDAxIDkuNDk5NzEgNS4wMDAwMUgxMC4zNzQ3Wk01LjAwMDM4IDdDNC43MjQyNCA3IDQuNTAwMzggNy4yMjM4NiA0LjUwMDM4IDcuNUM0LjUwMDM4IDcuNzc2MTQgNC43MjQyNCA4IDUuMDAwMzggOEgxMC4wMDA0QzEwLjI3NjUgOCAxMC41MDA0IDcuNzc2MTQgMTAuNTAwNCA3LjVDMTAuNTAwNCA3LjIyMzg2IDEwLjI3NjUgNyAxMC4wMDA0IDdINS4wMDAzOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGhuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjUxMTk0IDMuMDA1NDFDOS4xODgyOSAyLjU0NTk0IDEwLjA0MzUgMi41MzY5NCAxMC42Nzg4IDIuOTU0MTlDMTAuODIzMSAzLjA0ODkzIDEwLjk3NzEgMy4xOTkzIDExLjM4OSAzLjYxMTE5QzExLjgwMDkgNC4wMjMwNyAxMS45NTEzIDQuMTc3MTQgMTIuMDQ2IDQuMzIxNDFDMTIuNDYzMyA0Ljk1Njc1IDEyLjQ1NDMgNS44MTE5MiAxMS45OTQ4IDYuNDg4MjdDMTEuODg5OSA2LjY0MjY0IDExLjcyNzYgNi44MDgxMSAxMS4zMDA2IDcuMjM1MTFMMTAuNjgxOSA3Ljg1MzgzQzEwLjQ4NjcgOC4wNDkwOSAxMC40ODY3IDguMzY1NjcgMTAuNjgxOSA4LjU2MDkzQzEwLjg3NzIgOC43NTYyIDExLjE5MzggOC43NTYyIDExLjM4OSA4LjU2MDkzTDEyLjAwNzcgNy45NDIyMUwxMi4wNTA3IDcuODk5MjlDMTIuNDIwMyA3LjUyOTc2IDEyLjY1NjggNy4yOTMzIDEyLjgyMiA3LjA1MDJDMTMuNDk3MiA2LjA1NjIzIDEzLjUzMjEgNC43NjI1MiAxMi44ODE5IDMuNzcyNDhDMTIuNzIzMyAzLjUzMTAyIDEyLjQ5MjIgMy4zMDAwMSAxMi4xNDA4IDIuOTQ4NzFMMTIuMDk2MSAyLjkwNDA4TDEyLjA1MTUgMi44NTk0MkMxMS43MDAyIDIuNTA4IDExLjQ2OTIgMi4yNzY4OSAxMS4yMjc3IDIuMTE4MzJDMTAuMjM3NyAxLjQ2ODEzIDguOTQzOTggMS41MDI5OSA3Ljk1MDAxIDIuMTc4MjJDNy43MDY5MSAyLjM0MzM2IDcuNDcwNDQgMi41Nzk5MSA3LjEwMDkgMi45NDk1NUw3LjA1OCAyLjk5MjQ3TDYuNDM5MjggMy42MTExOUM2LjI0NDAxIDMuODA2NDUgNi4yNDQwMSA0LjEyMzAzIDYuNDM5MjggNC4zMTgyOUM2LjYzNDU0IDQuNTEzNTUgNi45NTExMiA0LjUxMzU1IDcuMTQ2MzggNC4zMTgyOUw3Ljc2NTEgMy42OTk1N0M4LjE5MjEgMy4yNzI1NyA4LjM1NzU3IDMuMTEwMjcgOC41MTE5NCAzLjAwNTQxWk00LjMxNzk2IDcuMTQ2NzJDNC41MTMyMiA2Ljk1MTQ2IDQuNTEzMjIgNi42MzQ4NyA0LjMxNzk2IDYuNDM5NjFDNC4xMjI2OSA2LjI0NDM1IDMuODA2MTEgNi4yNDQzNSAzLjYxMDg1IDYuNDM5NjFMMi45OTIxMyA3LjA1ODMzTDIuOTQ5MjIgNy4xMDEyNEMyLjU3OTU3IDcuNDcwNzcgMi4zNDMwMyA3LjcwNzI0IDIuMTc3ODggNy45NTAzNUMxLjUwMjY1IDguOTQ0MzIgMS40Njc4IDEwLjIzOCAyLjExNzk5IDExLjIyODFDMi4yNzY1NiAxMS40Njk1IDIuNTA3NjYgMTEuNzAwNSAyLjg1OTEgMTIuMDUxOEwyLjkwMzc0IDEyLjA5NjVMMi45NDgzNyAxMi4xNDExQzMuMjk5NjcgMTIuNDkyNSAzLjUzMDY4IDEyLjcyMzcgMy43NzIxNCAxMi44ODIyQzQuNzYyMTkgMTMuNTMyNCA2LjA1NTg5IDEzLjQ5NzYgNy4wNDk4NiAxMi44MjIzQzcuMjkyOTYgMTIuNjU3MiA3LjUyOTQzIDEyLjQyMDYgNy44OTg5NiAxMi4wNTFMNy44OTg5NyAxMi4wNTFMNy45NDE4OCAxMi4wMDgxTDguNTYwNiAxMS4zODk0QzguNzU1ODYgMTEuMTk0MSA4Ljc1NTg2IDEwLjg3NzUgOC41NjA2IDEwLjY4MjNDOC4zNjUzMyAxMC40ODcgOC4wNDg3NSAxMC40ODcgNy44NTM0OSAxMC42ODIzTDcuMjM0NzcgMTEuMzAxQzYuODA3NzcgMTEuNzI4IDYuNjQyMyAxMS44OTAzIDYuNDg3OTQgMTEuOTk1MUM1LjgxMTU4IDEyLjQ1NDYgNC45NTY0MiAxMi40NjM2IDQuMzIxMDcgMTIuMDQ2NEM0LjE3NjgxIDExLjk1MTYgNC4wMjI3NCAxMS44MDEyIDMuNjEwODUgMTEuMzg5NEMzLjE5ODk2IDEwLjk3NzUgMy4wNDg2IDEwLjgyMzQgMi45NTM4NSAxMC42NzkxQzIuNTM2NjEgMTAuMDQzOCAyLjU0NTYxIDkuMTg4NjMgMy4wMDUwNyA4LjUxMjI3QzMuMTA5OTMgOC4zNTc5MSAzLjI3MjI0IDguMTkyNDQgMy42OTkyNCA3Ljc2NTQ0TDQuMzE3OTYgNy4xNDY3MlpNOS42MjE3MiA2LjA4NTU4QzkuODE2OTggNS44OTAzMiA5LjgxNjk4IDUuNTczNzMgOS42MjE3MiA1LjM3ODQ3QzkuNDI2NDYgNS4xODMyMSA5LjEwOTg4IDUuMTgzMjEgOC45MTQ2MSA1LjM3ODQ3TDUuMzc5MDggOC45MTQwMUM1LjE4MzgyIDkuMTA5MjcgNS4xODM4MiA5LjQyNTg1IDUuMzc5MDggOS42MjExMUM1LjU3NDM0IDkuODE2MzcgNS44OTA5MiA5LjgxNjM3IDYuMDg2MTkgOS42MjExMUw5LjYyMTcyIDYuMDg1NThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx2bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMzUzNiAyLjM1MzU1QzEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDEuODQxNzEgMTMuMzUzNiAxLjY0NjQ1QzEzLjE1ODMgMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTIuNjQ2NCAxLjY0NjQ1TDEuNjQ2NDUgMTIuNjQ2NEMxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMy4xNTgzIDEuNjQ2NDUgMTMuMzUzNkMxLjg0MTcxIDEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDIuMzUzNTUgMTMuMzUzNkwxMy4zNTM2IDIuMzUzNTVaTTIuMDM3MzUgOC40NjY3OEMyLjE3Mzk4IDkuMTI2MTkgMi42NjkxOCA5LjY3MTAzIDMuMzM4ODYgOS44OTMzOEwyLjU3ODMzIDEwLjY1MzlDMS44MDg0MyAxMC4yNTM0IDEuMjM3ODQgOS41MzY5MyAxLjA1ODE1IDguNjY5NjdDMC45OTk1MzggOC4zODY4MSAwLjk5OTYwNCA4LjA2MDA0IDAuOTk5NzAzIDcuNTYzMTNMMC45OTk3MTEgNy41MDAwMUwwLjk5OTcwMyA3LjQzNjg5QzAuOTk5NjA0IDYuOTM5OTggMC45OTk1MzggNi42MTMyMSAxLjA1ODE1IDYuMzMwMzVDMS4yOTg0NiA1LjE3MDUzIDIuMjM3OSA0LjI4MDM5IDMuNDE4MiA0LjA1NUMzLjcwNjg3IDMuOTk5ODggNC4wNDEzNCAzLjk5OTkzIDQuNTY0MDIgNC4wMDAwMUw0LjYyNDcxIDQuMDAwMDFINS40OTk3MUM1Ljc3NTg1IDQuMDAwMDEgNS45OTk3MSA0LjIyMzg3IDUuOTk5NzEgNC41MDAwMUM1Ljk5OTcxIDQuNzc2MTUgNS43NzU4NSA1LjAwMDAxIDUuNDk5NzEgNS4wMDAwMUg0LjYyNDcxQzQuMDIwODQgNS4wMDAwMSAzLjc4OTA3IDUuMDAyMjUgMy42MDU3NyA1LjAzNzI1QzIuODAyNjIgNS4xOTA2MiAyLjE5MTU3IDUuNzg4OTUgMi4wMzczNSA2LjUzMzI0QzIuMDAyMzMgNi43MDIyNSAxLjk5OTcxIDYuOTE3NTIgMS45OTk3MSA3LjUwMDAxQzEuOTk5NzEgOC4wODI1MSAyLjAwMjMzIDguMjk3NzggMi4wMzczNSA4LjQ2Njc4Wk0xMi45NjIxIDYuNTMzMjRDMTIuODI1NSA1Ljg3Mzk3IDEyLjMzMDQgNS4zMjkyMiAxMS42NjEgNS4xMDY3OUwxMi40MjE1IDQuMzQ2MzFDMTMuMTkxMiA0Ljc0Njg2IDEzLjc2MTYgNS40NjMyMyAxMy45NDEzIDYuMzMwMzVDMTMuOTk5OSA2LjYxMzIxIDEzLjk5OTggNi45Mzk5OCAxMy45OTk3IDcuNDM2ODhMMTMuOTk5NyA3LjUwMDAxTDEzLjk5OTcgNy41NjMxNEMxMy45OTk4IDguMDYwMDUgMTMuOTk5OSA4LjM4NjgxIDEzLjk0MTMgOC42Njk2N0MxMy43MDEgOS44Mjk1IDEyLjc2MTUgMTAuNzE5NiAxMS41ODEyIDEwLjk0NUMxMS4yOTI1IDExLjAwMDEgMTAuOTU4MSAxMS4wMDAxIDEwLjQzNTQgMTFMMTAuMzc0NyAxMUg5LjQ5OTcxQzkuMjIzNTcgMTEgOC45OTk3MSAxMC43NzYyIDguOTk5NzEgMTAuNUM4Ljk5OTcxIDEwLjIyMzkgOS4yMjM1NyAxMCA5LjQ5OTcxIDEwSDEwLjM3NDdDMTAuOTc4NiAxMCAxMS4yMTA0IDkuOTk3NzcgMTEuMzkzNyA5Ljk2Mjc3QzEyLjE5NjggOS44MDk0IDEyLjgwNzkgOS4yMTEwOCAxMi45NjIxIDguNDY2NzhDMTIuOTk3MSA4LjI5Nzc4IDEyLjk5OTcgOC4wODI1MSAxMi45OTk3IDcuNTAwMDFDMTIuOTk5NyA2LjkxNzUyIDEyLjk5NzEgNi43MDIyNSAxMi45NjIxIDYuNTMzMjRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxnbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC41MDAyMSAwQzQuNzc2MzUgMCA1LjAwMDIgMC4yMjM4NTMgNS4wMDAyIDAuNDk5OTlWMi40OTk5NUM1LjAwMDIgMi43NzYwOSA0Ljc3NjM1IDIuOTk5OTQgNC41MDAyMSAyLjk5OTk0QzQuMjI0MDggMi45OTk5NCA0LjAwMDIyIDIuNzc2MDkgNC4wMDAyMiAyLjQ5OTk1VjAuNDk5OTlDNC4wMDAyMiAwLjIyMzg1MyA0LjIyNDA4IDAgNC41MDAyMSAwWk0wLjY0NjQ1MSAwLjY0NjQ3QzAuODQxNzEgMC40NTEyMTIgMS4xNTgyOSAwLjQ1MTIxMiAxLjM1MzU0IDAuNjQ2NDdMMi44NTM1MSAyLjE0NjQ0QzMuMDQ4NzcgMi4zNDE3IDMuMDQ4NzcgMi42NTgyNyAyLjg1MzUxIDIuODUzNTNDMi42NTgyNiAzLjA0ODc5IDIuMzQxNjggMy4wNDg3OSAyLjE0NjQyIDIuODUzNTNMMC42NDY0NTIgMS4zNTM1NkMwLjQ1MTE5MyAxLjE1ODMgMC40NTExOTMgMC44NDE3MjggMC42NDY0NTEgMC42NDY0N1pNMC4wMDAzMDUxNyA0LjQ5OTkxQzAuMDAwMzA1MTcgNC4yMjM3NyAwLjIyNDE1OCAzLjk5OTkyIDAuNTAwMjk1IDMuOTk5OTJIMi41MDAyNUMyLjc3NjM5IDMuOTk5OTIgMy4wMDAyNCA0LjIyMzc3IDMuMDAwMjQgNC40OTk5MUMzLjAwMDI0IDQuNzc2MDUgMi43NzYzOSA0Ljk5OTkgMi41MDAyNSA0Ljk5OTlIMC41MDAyOTVDMC4yMjQxNTggNC45OTk5IDAuMDAwMzA1MTcgNC43NzYwNSAwLjAwMDMwNTE3IDQuNDk5OTFaTTEyLjAwMDEgMTAuNDk5OEMxMi4wMDAxIDEwLjIyMzYgMTIuMjIzOSA5Ljk5OTggMTIuNTAwMSA5Ljk5OThIMTQuNUMxNC43NzYxIDkuOTk5OCAxNSAxMC4yMjM2IDE1IDEwLjQ5OThDMTUgMTAuNzc1OSAxNC43NzYxIDEwLjk5OTggMTQuNSAxMC45OTk4SDEyLjUwMDFDMTIuMjIzOSAxMC45OTk4IDEyLjAwMDEgMTAuNzc1OSAxMi4wMDAxIDEwLjQ5OThaTTEwLjUwMDEgMTEuOTk5OEMxMC43NzYyIDExLjk5OTggMTEuMDAwMSAxMi4yMjM2IDExLjAwMDEgMTIuNDk5N1YxNC40OTk3QzExLjAwMDEgMTQuNzc1OCAxMC43NzYyIDE0Ljk5OTcgMTAuNTAwMSAxNC45OTk3QzEwLjIyNCAxNC45OTk3IDEwLjAwMDEgMTQuNzc1OCAxMC4wMDAxIDE0LjQ5OTdWMTIuNDk5N0MxMC4wMDAxIDEyLjIyMzYgMTAuMjI0IDExLjk5OTggMTAuNTAwMSAxMS45OTk4Wk0xMi4xNDYyIDEyLjE0NjJDMTIuMzQxNSAxMS45NTEgMTIuNjU4IDExLjk1MSAxMi44NTMzIDEyLjE0NjJMMTQuMzUzMyAxMy42NDYyQzE0LjU0ODUgMTMuODQxNSAxNC41NDg1IDE0LjE1OCAxNC4zNTMzIDE0LjM1MzNDMTQuMTU4IDE0LjU0ODUgMTMuODQxNCAxNC41NDg1IDEzLjY0NjIgMTQuMzUzM0wxMi4xNDYyIDEyLjg1MzNDMTEuOTUxIDEyLjY1ODEgMTEuOTUxIDEyLjM0MTUgMTIuMTQ2MiAxMi4xNDYyWk03Ljc2NDc4IDMuNjk5MzhDOC4xOTE3NyAzLjI3MjM4IDguMzU3MjQgMy4xMTAwOCA4LjUxMTYgMy4wMDUyMkM5LjE4Nzk0IDIuNTQ1NzcgMTAuMDQzMSAyLjUzNjc3IDEwLjY3ODQgMi45NTQwMUMxMC44MjI3IDMuMDQ4NzUgMTAuOTc2NyAzLjE5OTExIDExLjM4ODYgMy42MTA5OUMxMS44MDA1IDQuMDIyODcgMTEuOTUwOSA0LjE3Njk0IDEyLjA0NTYgNC4zMjEyQzEyLjQ2MjggNC45NTY1MyAxMi40NTM5IDUuODExNjggMTEuOTk0NCA2LjQ4ODAyQzExLjg4OTUgNi42NDIzOCAxMS43MjcyIDYuODA3ODUgMTEuMzAwMiA3LjIzNDg0TDEwLjY4MTUgNy44NTM1NEMxMC40ODYzIDguMDQ4OCAxMC40ODYzIDguMzY1MzggMTAuNjgxNSA4LjU2MDY0QzEwLjg3NjggOC43NTU4OSAxMS4xOTM0IDguNzU1ODkgMTEuMzg4NiA4LjU2MDY0TDEyLjAwNzMgNy45NDE5M0wxMi4wNTAyIDcuODk5MDNDMTIuNDE5OSA3LjUyOTUgMTIuNjU2NCA3LjI5MzAzIDEyLjgyMTYgNy4wNDk5M0MxMy40OTY4IDYuMDU1OTggMTMuNTMxNiA0Ljc2MjMgMTIuODgxNSAzLjc3MjI4QzEyLjcyMjkgMy41MzA4MyAxMi40OTE4IDMuMjk5ODIgMTIuMTQwNCAyLjk0ODUzTDEyLjA5NTcgMi45MDM5TDEyLjA1MTEgMi44NTkyNUMxMS42OTk4IDIuNTA3ODIgMTEuNDY4OCAyLjI3NjcyIDExLjIyNzMgMi4xMTgxNkMxMC4yMzczIDEuNDY3OTggOC45NDM2NCAxLjUwMjg0IDcuOTQ5NjggMi4xNzgwNUM3LjcwNjU5IDIuMzQzMTkgNy40NzAxMiAyLjU3OTczIDcuMTAwNiAyLjk0OTM2TDcuMTAwNiAyLjk0OTM3TDcuMDU3NjkgMi45OTIyOEw2LjQzODk4IDMuNjEwOTlDNi4yNDM3MiAzLjgwNjI1IDYuMjQzNzIgNC4xMjI4MiA2LjQzODk4IDQuMzE4MDhDNi42MzQyNCA0LjUxMzM0IDYuOTUwODEgNC41MTMzNCA3LjE0NjA3IDQuMzE4MDhMNy43NjQ3OCAzLjY5OTM4Wk0yLjk5MTkxIDcuMDU4MDdMMi45NDg5OSA3LjEwMDk3QzIuNTc5MzUgNy40NzA1IDIuMzQyODIgNy43MDY5NyAyLjE3NzY3IDcuOTUwMDZDMS41MDI0NiA4Ljk0NDAxIDEuNDY3NiAxMC4yMzc3IDIuMTE3NzggMTEuMjI3N0MyLjI3NjM0IDExLjQ2OTIgMi41MDc0NCAxMS43MDAyIDIuODU4ODYgMTIuMDUxNUwyLjg1ODg4IDEyLjA1MTVMMi45MDM1MiAxMi4wOTYxTDIuOTQ4MTUgMTIuMTQwN0wyLjk0ODE1IDEyLjE0MDdMMi45NDgxNyAxMi4xNDA4QzMuMjk5NDUgMTIuNDkyMiAzLjUzMDQ1IDEyLjcyMzMgMy43NzE5IDEyLjg4MThDNC43NjE5MyAxMy41MzIgNi4wNTU2IDEzLjQ5NzIgNy4wNDk1NiAxMi44MjE5QzcuMjkyNjUgMTIuNjU2OCA3LjUyOTEyIDEyLjQyMDMgNy44OTg2NSAxMi4wNTA2TDcuOTQxNTUgMTIuMDA3N0w4LjU2MDI2IDExLjM4OUM4Ljc1NTUyIDExLjE5MzcgOC43NTU1MiAxMC44NzcyIDguNTYwMjYgMTAuNjgxOUM4LjM2NSAxMC40ODY3IDguMDQ4NDIgMTAuNDg2NyA3Ljg1MzE3IDEwLjY4MTlMNy4yMzQ0NiAxMS4zMDA2QzYuODA3NDcgMTEuNzI3NiA2LjY0MiAxMS44ODk5IDYuNDg3NjQgMTEuOTk0OEM1LjgxMTMgMTIuNDU0MiA0Ljk1NjE1IDEyLjQ2MzIgNC4zMjA4MiAxMi4wNDZDNC4xNzY1NiAxMS45NTEyIDQuMDIyNDkgMTEuODAwOSAzLjYxMDYxIDExLjM4OUMzLjE5ODczIDEwLjk3NzEgMy4wNDgzNyAxMC44MjMxIDIuOTUzNjMgMTAuNjc4OEMyLjUzNjM5IDEwLjA0MzUgMi41NDUzOSA5LjE4ODMyIDMuMDA0ODQgOC41MTE5OEMzLjEwOTcxIDguMzU3NjEgMy4yNzIwMSA4LjE5MjE1IDMuNjk5IDcuNzY1MTZMNC4zMTc3IDcuMTQ2NDVDNC41MTI5NiA2Ljk1MTE5IDQuNTEyOTYgNi42MzQ2MiA0LjMxNzcgNi40MzkzNkM0LjEyMjQ1IDYuMjQ0MSAzLjgwNTg3IDYuMjQ0MSAzLjYxMDYxIDYuNDM5MzZMMi45OTE5MSA3LjA1ODA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQ249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNTY0MjcgMy45OTk4OEM0LjU4NDIyIDMuOTk5ODkgNC42MDQ0NSAzLjk5OTg5IDQuNjI0OTYgMy45OTk4OUg1LjQ5OTk2QzUuNzc2MSAzLjk5OTg5IDUuOTk5OTYgNC4yMjM3NSA1Ljk5OTk2IDQuNDk5ODlDNS45OTk5NiA0Ljc3NjAzIDUuNzc2MSA0Ljk5OTg5IDUuNDk5OTYgNC45OTk4OUg0LjYyNDk2QzQuMDIxMDggNC45OTk4OSAzLjc4OTMyIDUuMDAyMTMgMy42MDYwMSA1LjAzNzEzQzIuODAyODcgNS4xOTA1IDIuMTkxODEgNS43ODg4MyAyLjAzNzU5IDYuNTMzMTJDMi4wMDI1NyA2LjcwMjEyIDEuOTk5OTYgNi45MTczOSAxLjk5OTk2IDcuNDk5ODlDMS45OTk5NiA4LjA4MjM5IDIuMDAyNTcgOC4yOTc2NiAyLjAzNzU5IDguNDY2NjZDMi4xOTE4MSA5LjIxMDk1IDIuODAyODcgOS44MDkyOCAzLjYwNjAxIDkuOTYyNjVDMy43ODkzMiA5Ljk5NzY1IDQuMDIxMDggOS45OTk4OSA0LjYyNDk2IDkuOTk5ODlINS40OTk5NkM1Ljc3NjEgOS45OTk4OSA1Ljk5OTk2IDEwLjIyMzcgNS45OTk5NiAxMC40OTk5QzUuOTk5OTYgMTAuNzc2IDUuNzc2MSAxMC45OTk5IDUuNDk5OTYgMTAuOTk5OUg0LjYyNDk2QzQuNjA0NDUgMTAuOTk5OSA0LjU4NDIyIDEwLjk5OTkgNC41NjQyNyAxMC45OTk5QzQuMDQxNTkgMTEgMy43MDcxMiAxMSAzLjQxODQ1IDEwLjk0NDlDMi4yMzgxNCAxMC43MTk1IDEuMjk4NzEgOS44MjkzNyAxLjA1ODM5IDguNjY5NTVDMC45OTk3ODIgOC4zODY2OSAwLjk5OTg0OCA4LjA1OTkyIDAuOTk5OTQ3IDcuNTYzMDFDMC45OTk5NTEgNy41NDIyNyAwLjk5OTk1NSA3LjUyMTIzIDAuOTk5OTU1IDcuNDk5ODlDMC45OTk5NTUgNy40Nzg1NSAwLjk5OTk1MSA3LjQ1NzUxIDAuOTk5OTQ3IDcuNDM2NzdDMC45OTk4NDggNi45Mzk4NiAwLjk5OTc4MiA2LjYxMzA5IDEuMDU4MzkgNi4zMzAyM0MxLjI5ODcxIDUuMTcwNDEgMi4yMzgxNCA0LjI4MDI3IDMuNDE4NDUgNC4wNTQ4OEMzLjcwNzEyIDMuOTk5NzYgNC4wNDE1OSAzLjk5OTgxIDQuNTY0MjcgMy45OTk4OFpNMTEuMzkzOSA1LjAzNzEzQzExLjIxMDYgNS4wMDIxMyAxMC45Nzg4IDQuOTk5ODkgMTAuMzc1IDQuOTk5ODlIOS40OTk5NkM5LjIyMzgxIDQuOTk5ODkgOC45OTk5NiA0Ljc3NjAzIDguOTk5OTYgNC40OTk4OUM4Ljk5OTk2IDQuMjIzNzUgOS4yMjM4MSAzLjk5OTg5IDkuNDk5OTYgMy45OTk4OUgxMC4zNzVDMTAuMzk1NSAzLjk5OTg5IDEwLjQxNTcgMy45OTk4OSAxMC40MzU2IDMuOTk5ODhDMTAuOTU4MyAzLjk5OTgxIDExLjI5MjggMy45OTk3NiAxMS41ODE1IDQuMDU0ODhDMTIuNzYxOCA0LjI4MDI3IDEzLjcwMTIgNS4xNzA0MSAxMy45NDE1IDYuMzMwMjNDMTQuMDAwMSA2LjYxMzA5IDE0LjAwMDEgNi45Mzk4NSAxNCA3LjQzNjc2QzE0IDcuNDU3NSAxNCA3LjQ3ODU0IDE0IDcuNDk5ODlDMTQgNy41MjEyNCAxNCA3LjU0MjI4IDE0IDcuNTYzMDJDMTQuMDAwMSA4LjA1OTkyIDE0LjAwMDEgOC4zODY2OSAxMy45NDE1IDguNjY5NTVDMTMuNzAxMiA5LjgyOTM3IDEyLjc2MTggMTAuNzE5NSAxMS41ODE1IDEwLjk0NDlDMTEuMjkyOCAxMSAxMC45NTgzIDExIDEwLjQzNTYgMTAuOTk5OUMxMC40MTU3IDEwLjk5OTkgMTAuMzk1NSAxMC45OTk5IDEwLjM3NSAxMC45OTk5SDkuNDk5OTZDOS4yMjM4MSAxMC45OTk5IDguOTk5OTYgMTAuNzc2IDguOTk5OTYgMTAuNDk5OUM4Ljk5OTk2IDEwLjIyMzcgOS4yMjM4MSA5Ljk5OTg5IDkuNDk5OTYgOS45OTk4OUgxMC4zNzVDMTAuOTc4OCA5Ljk5OTg5IDExLjIxMDYgOS45OTc2NSAxMS4zOTM5IDkuOTYyNjVDMTIuMTk3IDkuODA5MjggMTIuODA4MSA5LjIxMDk1IDEyLjk2MjMgOC40NjY2NkMxMi45OTczIDguMjk3NjYgMTMgOC4wODIzOSAxMyA3LjQ5OTg5QzEzIDYuOTE3MzkgMTIuOTk3MyA2LjcwMjEyIDEyLjk2MjMgNi41MzMxMkMxMi44MDgxIDUuNzg4ODMgMTIuMTk3IDUuMTkwNSAxMS4zOTM5IDUuMDM3MTNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxtbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAuNjc4OCAyLjk1NDE5QzEwLjA0MzUgMi41MzY5NCA5LjE4ODI5IDIuNTQ1OTQgOC41MTE5NCAzLjAwNTQxQzguMzU3NTcgMy4xMTAyNyA4LjE5MjEgMy4yNzI1NyA3Ljc2NTEgMy42OTk1N0w3LjE0NjM4IDQuMzE4MjlDNi45NTExMiA0LjUxMzU1IDYuNjM0NTQgNC41MTM1NSA2LjQzOTI4IDQuMzE4MjlDNi4yNDQwMSA0LjEyMzAzIDYuMjQ0MDEgMy44MDY0NSA2LjQzOTI4IDMuNjExMTlMNy4wNTggMi45OTI0N0M3LjA3MjUgMi45Nzc5NyA3LjA4Njc5IDIuOTYzNjYgNy4xMDA5IDIuOTQ5NTVDNy40NzA0NCAyLjU3OTkxIDcuNzA2OTEgMi4zNDMzNiA3Ljk1MDAxIDIuMTc4MjJDOC45NDM5OCAxLjUwMjk5IDEwLjIzNzcgMS40NjgxMyAxMS4yMjc3IDIuMTE4MzJDMTEuNDY5MiAyLjI3Njg5IDExLjcwMDIgMi41MDggMTIuMDUxNSAyLjg1OTQyQzEyLjA2NjIgMi44NzQxIDEyLjA4MSAyLjg4ODk4IDEyLjA5NjEgMi45MDQwOEMxMi4xMTEyIDIuOTE5MTcgMTIuMTI2MSAyLjkzNDA1IDEyLjE0MDggMi45NDg3MUMxMi40OTIyIDMuMzAwMDEgMTIuNzIzMyAzLjUzMTAyIDEyLjg4MTkgMy43NzI0OEMxMy41MzIxIDQuNzYyNTIgMTMuNDk3MiA2LjA1NjIzIDEyLjgyMiA3LjA1MDJDMTIuNjU2OCA3LjI5MzMgMTIuNDIwMyA3LjUyOTc2IDEyLjA1MDcgNy44OTkyOUMxMi4wMzY2IDcuOTEzNCAxMi4wMjIyIDcuOTI3NzEgMTIuMDA3NyA3Ljk0MjIxTDExLjM4OSA4LjU2MDkzQzExLjE5MzggOC43NTYyIDEwLjg3NzIgOC43NTYyIDEwLjY4MTkgOC41NjA5M0MxMC40ODY3IDguMzY1NjcgMTAuNDg2NyA4LjA0OTA5IDEwLjY4MTkgNy44NTM4M0wxMS4zMDA2IDcuMjM1MTFDMTEuNzI3NiA2LjgwODExIDExLjg4OTkgNi42NDI2NCAxMS45OTQ4IDYuNDg4MjdDMTIuNDU0MyA1LjgxMTkyIDEyLjQ2MzMgNC45NTY3NSAxMi4wNDYgNC4zMjE0MUMxMS45NTEzIDQuMTc3MTQgMTEuODAwOSA0LjAyMzA3IDExLjM4OSAzLjYxMTE5QzEwLjk3NzEgMy4xOTkzIDEwLjgyMzEgMy4wNDg5MyAxMC42Nzg4IDIuOTU0MTlaTTQuMzE3OTYgNi40Mzk2MUM0LjUxMzIyIDYuNjM0ODcgNC41MTMyMiA2Ljk1MTQ2IDQuMzE3OTYgNy4xNDY3MkwzLjY5OTI0IDcuNzY1NDRDMy4yNzIyNCA4LjE5MjQ0IDMuMTA5OTMgOC4zNTc5MSAzLjAwNTA3IDguNTEyMjdDMi41NDU2MSA5LjE4ODYzIDIuNTM2NjEgMTAuMDQzOCAyLjk1Mzg1IDEwLjY3OTFDMy4wNDg2IDEwLjgyMzQgMy4xOTg5NiAxMC45Nzc1IDMuNjEwODUgMTEuMzg5NEM0LjAyMjc0IDExLjgwMTIgNC4xNzY4MSAxMS45NTE2IDQuMzIxMDcgMTIuMDQ2NEM0Ljk1NjQyIDEyLjQ2MzYgNS44MTE1OCAxMi40NTQ2IDYuNDg3OTQgMTEuOTk1MUM2LjY0MjMgMTEuODkwMyA2LjgwNzc3IDExLjcyOCA3LjIzNDc3IDExLjMwMUw3Ljg1MzQ5IDEwLjY4MjNDOC4wNDg3NSAxMC40ODcgOC4zNjUzMyAxMC40ODcgOC41NjA2IDEwLjY4MjNDOC43NTU4NiAxMC44Nzc1IDguNzU1ODYgMTEuMTk0MSA4LjU2MDYgMTEuMzg5NEw3Ljk0MTg4IDEyLjAwODFDNy45MjczOCAxMi4wMjI2IDcuOTEzMDcgMTIuMDM2OSA3Ljg5ODk3IDEyLjA1MUM3LjUyOTQzIDEyLjQyMDYgNy4yOTI5NiAxMi42NTcyIDcuMDQ5ODYgMTIuODIyM0M2LjA1NTg5IDEzLjQ5NzYgNC43NjIxOSAxMy41MzI0IDMuNzcyMTQgMTIuODgyMkMzLjUzMDY4IDEyLjcyMzcgMy4yOTk2NyAxMi40OTI1IDIuOTQ4MzcgMTIuMTQxMUMyLjkzMzcxIDEyLjEyNjQgMi45MTg4MyAxMi4xMTE2IDIuOTAzNzQgMTIuMDk2NUMyLjg4ODY1IDEyLjA4MTQgMi44NzM3NyAxMi4wNjY1IDIuODU5MSAxMi4wNTE4QzIuNTA3NjYgMTEuNzAwNSAyLjI3NjU2IDExLjQ2OTUgMi4xMTc5OSAxMS4yMjgxQzEuNDY3OCAxMC4yMzggMS41MDI2NSA4Ljk0NDMyIDIuMTc3ODggNy45NTAzNUMyLjM0MzAzIDcuNzA3MjQgMi41Nzk1NyA3LjQ3MDc3IDIuOTQ5MjIgNy4xMDEyNEMyLjk2MzMzIDcuMDg3MTMgMi45Nzc2MyA3LjA3MjgzIDIuOTkyMTMgNy4wNTgzM0wzLjYxMDg1IDYuNDM5NjFDMy44MDYxMSA2LjI0NDM1IDQuMTIyNjkgNi4yNDQzNSA0LjMxNzk2IDYuNDM5NjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx5bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41IDUuMjVDMS45MTQyMSA1LjI1IDIuMjUgNC45MTQyMSAyLjI1IDQuNUMyLjI1IDQuMDg1NzkgMS45MTQyMSAzLjc1IDEuNSAzLjc1QzEuMDg1NzkgMy43NSAwLjc1IDQuMDg1NzkgMC43NSA0LjVDMC43NSA0LjkxNDIxIDEuMDg1NzkgNS4yNSAxLjUgNS4yNVpNNCA0LjVDNCA0LjIyMzg2IDQuMjIzODYgNCA0LjUgNEgxMy41QzEzLjc3NjEgNCAxNCA0LjIyMzg2IDE0IDQuNUMxNCA0Ljc3NjE0IDEzLjc3NjEgNSAxMy41IDVINC41QzQuMjIzODYgNSA0IDQuNzc2MTQgNCA0LjVaTTQuNSA3QzQuMjIzODYgNyA0IDcuMjIzODYgNCA3LjVDNCA3Ljc3NjE0IDQuMjIzODYgOCA0LjUgOEgxMy41QzEzLjc3NjEgOCAxNCA3Ljc3NjE0IDE0IDcuNUMxNCA3LjIyMzg2IDEzLjc3NjEgNyAxMy41IDdINC41Wk00LjUgMTBDNC4yMjM4NiAxMCA0IDEwLjIyMzkgNCAxMC41QzQgMTAuNzc2MSA0LjIyMzg2IDExIDQuNSAxMUgxMy41QzEzLjc3NjEgMTEgMTQgMTAuNzc2MSAxNCAxMC41QzE0IDEwLjIyMzkgMTMuNzc2MSAxMCAxMy41IDEwSDQuNVpNMi4yNSA3LjVDMi4yNSA3LjkxNDIxIDEuOTE0MjEgOC4yNSAxLjUgOC4yNUMxLjA4NTc5IDguMjUgMC43NSA3LjkxNDIxIDAuNzUgNy41QzAuNzUgNy4wODU3OSAxLjA4NTc5IDYuNzUgMS41IDYuNzVDMS45MTQyMSA2Ljc1IDIuMjUgNy4wODU3OSAyLjI1IDcuNVpNMS41IDExLjI1QzEuOTE0MjEgMTEuMjUgMi4yNSAxMC45MTQyIDIuMjUgMTAuNUMyLjI1IDEwLjA4NTggMS45MTQyMSA5Ljc1IDEuNSA5Ljc1QzEuMDg1NzkgOS43NSAwLjc1IDEwLjA4NTggMC43NSAxMC41QzAuNzUgMTAuOTE0MiAxLjA4NTc5IDExLjI1IDEuNSAxMS4yNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHduPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDQuNjM2MDFDNSAzLjc2MDMxIDUuMjQyMTkgMy4xMDU0IDUuNjQzMjMgMi42NzM1N0M2LjAzOTM0IDIuMjQ3MDUgNi42NDU4MiAxLjk3ODMgNy41MDE0IDEuOTc4M0M4LjM1NzQ1IDEuOTc4MyA4Ljk2MzA2IDIuMjQ2NTIgOS4zNTgyMyAyLjY3MjA4QzkuNzU4MzggMy4xMDI5OSAxMCAzLjc1NzA4IDEwIDQuNjMzMjVWNS45OTk5OUg1VjQuNjM2MDFaTTQgNS45OTk5OVY0LjYzNjAxQzQgMy41ODE0OCA0LjI5MzM5IDIuNjU3NTQgNC45MTA0OSAxLjk5MzA3QzUuNTMyNTIgMS4zMjMyOSA2LjQyNjc1IDAuOTc4MzAyIDcuNTAxNCAwLjk3ODMwMkM4LjU3NTgzIDAuOTc4MzAyIDkuNDY5NTIgMS4zMjIzMyAxMC4wOTEgMS45OTE2MkMxMC43MDc2IDIuNjU1NTcgMTEgMy41Nzg5NiAxMSA0LjYzMzI1VjUuOTk5OTlIMTJDMTIuNTUyMyA1Ljk5OTk5IDEzIDYuNDQ3NzEgMTMgNi45OTk5OVYxM0MxMyAxMy41NTIzIDEyLjU1MjMgMTQgMTIgMTRIM0MyLjQ0NzcyIDE0IDIgMTMuNTUyMyAyIDEzVjYuOTk5OTlDMiA2LjQ0NzcxIDIuNDQ3NzIgNS45OTk5OSAzIDUuOTk5OTlINFpNMyA2Ljk5OTk5SDEyVjEzSDNWNi45OTk5OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGJuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5ODYgMEM2LjMyNTcgMCA1LjM2MTA3IDAuMzg5NDMgNC43Mzc1MyAxLjE5MzYxQzQuMjM3NDUgMS44Mzg1NiA0IDIuNjgyNDIgNCAzLjYzMzI1SDVDNSAyLjg0MzEzIDUuMTk2OTEgMi4yMzMxMiA1LjUyNzggMS44MDYzNkM1LjkxNjE1IDEuMzA1NTIgNi41NTE1MiAxIDcuNDk4NiAxQzguMzU2ODMgMSA4Ljk2MzM2IDEuMjY1MDIgOS4zNTg0NiAxLjY4NjIzQzkuNzU3OTMgMi4xMTIxMSAxMCAyLjc2MDQ0IDEwIDMuNjM2MDFWNkgzQzIuNDQ3NzIgNiAyIDYuNDQ3NzIgMiA3VjEzQzIgMTMuNTUyMyAyLjQ0NzcyIDE0IDMgMTRIMTJDMTIuNTUyMyAxNCAxMyAxMy41NTIzIDEzIDEzVjdDMTMgNi40NDc3MSAxMi41NTIzIDYgMTIgNkgxMVYzLjYzNjAxQzExIDIuNTgxMzUgMTAuNzA2NSAxLjY2MTY3IDEwLjA4NzggMS4wMDIxQzkuNDY0NzcgMC4zMzc4NzEgOC41NzA2MSAwIDcuNDk4NiAwWk0zIDdIMTJWMTNIM1Y3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkgMy42MzYwMUM5IDIuNzYwNDQgOS4yNDIwNyAyLjExMjExIDkuNjQxNTQgMS42ODYyM0MxMC4wMzY2IDEuMjY1MDIgMTAuNjQzMiAxIDExLjUwMTQgMUMxMi40NDg1IDEgMTMuMDgzOSAxLjMwNTUyIDEzLjQ3MjIgMS44MDYzNkMxMy44MDMxIDIuMjMzMTIgMTQgMi44NDMxMyAxNCAzLjYzMzI1SDE1QzE1IDIuNjgyNDIgMTQuNzYyNiAxLjgzODU2IDE0LjI2MjUgMS4xOTM2MUMxMy42Mzg5IDAuMzg5NDMgMTIuNjc0MyAwIDExLjUwMTQgMEMxMC40Mjk0IDAgOS41MzUyMyAwLjMzNzg3MSA4LjkxMjE4IDEuMDAyMUM4LjI5MzUxIDEuNjYxNjcgOCAyLjU4MTM1IDggMy42MzYwMVY2SDFDMC40NDc3MTUgNiAwIDYuNDQ3NzIgMCA3VjEzQzAgMTMuNTUyMyAwLjQ0NzcxNSAxNCAxIDE0SDEwQzEwLjU1MjMgMTQgMTEgMTMuNTUyMyAxMSAxM1Y3QzExIDYuNDQ3NzIgMTAuNTUyMyA2IDEwIDZIOVYzLjYzNjAxWk0xIDdIMTBWMTNIMVY3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sX249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMzUzNTUgMS44NTM1NUMzLjU0ODgyIDEuNjU4MjkgMy41NDg4MiAxLjM0MTcxIDMuMzUzNTUgMS4xNDY0NUMzLjE1ODI5IDAuOTUxMTg0IDIuODQxNzEgMC45NTExODQgMi42NDY0NSAxLjE0NjQ1TDAuNjQ2NDQ3IDMuMTQ2NDVDMC40NTExODQgMy4zNDE3MSAwLjQ1MTE4NCAzLjY1ODI5IDAuNjQ2NDQ3IDMuODUzNTVMMi42NDY0NSA1Ljg1MzU1QzIuODQxNzEgNi4wNDg4MiAzLjE1ODI5IDYuMDQ4ODIgMy4zNTM1NSA1Ljg1MzU1QzMuNTQ4ODIgNS42NTgyOSAzLjU0ODgyIDUuMzQxNzEgMy4zNTM1NSA1LjE0NjQ1TDIuMjA3MTEgNEg5LjVDMTEuNDMzIDQgMTMgNS41NjcgMTMgNy41QzEzIDcuNzc2MTQgMTMuMjIzOSA4IDEzLjUgOEMxMy43NzYxIDggMTQgNy43NzYxNCAxNCA3LjVDMTQgNS4wMTQ3MiAxMS45ODUzIDMgOS41IDNIMi4yMDcxMUwzLjM1MzU1IDEuODUzNTVaTTIgNy41QzIgNy4yMjM4NiAxLjc3NjE0IDcgMS41IDdDMS4yMjM4NiA3IDEgNy4yMjM4NiAxIDcuNUMxIDkuOTg1MjggMy4wMTQ3MiAxMiA1LjUgMTJIMTIuNzkyOUwxMS42NDY0IDEzLjE0NjRDMTEuNDUxMiAxMy4zNDE3IDExLjQ1MTIgMTMuNjU4MyAxMS42NDY0IDEzLjg1MzZDMTEuODQxNyAxNC4wNDg4IDEyLjE1ODMgMTQuMDQ4OCAxMi4zNTM2IDEzLjg1MzZMMTQuMzUzNiAxMS44NTM2QzE0LjU0ODggMTEuNjU4MyAxNC41NDg4IDExLjM0MTcgMTQuMzUzNiAxMS4xNDY0TDEyLjM1MzYgOS4xNDY0NUMxMi4xNTgzIDguOTUxMTggMTEuODQxNyA4Ljk1MTE4IDExLjY0NjQgOS4xNDY0NUMxMS40NTEyIDkuMzQxNzEgMTEuNDUxMiA5LjY1ODI5IDExLjY0NjQgOS44NTM1NUwxMi43OTI5IDExSDUuNUMzLjU2NyAxMSAyIDkuNDMzIDIgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjkgMC40OTk5NzZDMTMuOSAwLjI3OTA2MiAxMy43MjA5IDAuMDk5OTc1NiAxMy41IDAuMDk5OTc1NkMxMy4yNzkxIDAuMDk5OTc1NiAxMy4xIDAuMjc5MDYyIDEzLjEgMC40OTk5NzZWMS4wOTk5OEgxMi41QzEyLjI3OTEgMS4wOTk5OCAxMi4xIDEuMjc5MDYgMTIuMSAxLjQ5OTk4QzEyLjEgMS43MjA4OSAxMi4yNzkxIDEuODk5OTggMTIuNSAxLjg5OTk4SDEzLjFWMi40OTk5OEMxMy4xIDIuNzIwODkgMTMuMjc5MSAyLjg5OTk4IDEzLjUgMi44OTk5OEMxMy43MjA5IDIuODk5OTggMTMuOSAyLjcyMDg5IDEzLjkgMi40OTk5OFYxLjg5OTk4SDE0LjVDMTQuNzIwOSAxLjg5OTk4IDE0LjkgMS43MjA4OSAxNC45IDEuNDk5OThDMTQuOSAxLjI3OTA2IDE0LjcyMDkgMS4wOTk5OCAxNC41IDEuMDk5OThIMTMuOVYwLjQ5OTk3NlpNMTEuODUzNiAzLjE0NjQyQzEyLjA0ODggMy4zNDE2OCAxMi4wNDg4IDMuNjU4MjYgMTEuODUzNiAzLjg1MzUzTDEwLjg1MzYgNC44NTM1M0MxMC42NTgzIDUuMDQ4NzkgMTAuMzQxNyA1LjA0ODc5IDEwLjE0NjUgNC44NTM1M0M5Ljk1MTIgNC42NTgyNyA5Ljk1MTIgNC4zNDE2OSAxMC4xNDY1IDQuMTQ2NDJMMTEuMTQ2NCAzLjE0NjQzQzExLjM0MTcgMi45NTExNiAxMS42NTgzIDIuOTUxMTYgMTEuODUzNiAzLjE0NjQyWk05Ljg1MzU3IDUuMTQ2NDJDMTAuMDQ4OCA1LjM0MTY4IDEwLjA0ODggNS42NTgyNyA5Ljg1MzU3IDUuODUzNTNMMi44NTM1NSAxMi44NTM1QzIuNjU4MjkgMTMuMDQ4OCAyLjM0MTcxIDEzLjA0ODggMi4xNDY0NSAxMi44NTM1QzEuOTUxMTggMTIuNjU4MyAxLjk1MTE4IDEyLjM0MTcgMi4xNDY0NSAxMi4xNDY0TDkuMTQ2NDYgNS4xNDY0MkM5LjM0MTcyIDQuOTUxMTYgOS42NTgzMSA0Ljk1MTE2IDkuODUzNTcgNS4xNDY0MlpNMTMuNSA1LjA5OTk4QzEzLjcyMDkgNS4wOTk5OCAxMy45IDUuMjc5MDYgMTMuOSA1LjQ5OTk4VjYuMDk5OThIMTQuNUMxNC43MjA5IDYuMDk5OTggMTQuOSA2LjI3OTA2IDE0LjkgNi40OTk5OEMxNC45IDYuNzIwODkgMTQuNzIwOSA2Ljg5OTk4IDE0LjUgNi44OTk5OEgxMy45VjcuNDk5OThDMTMuOSA3LjcyMDg5IDEzLjcyMDkgNy44OTk5OCAxMy41IDcuODk5OThDMTMuMjc5MSA3Ljg5OTk4IDEzLjEgNy43MjA4OSAxMy4xIDcuNDk5OThWNi44OTk5OEgxMi41QzEyLjI3OTEgNi44OTk5OCAxMi4xIDYuNzIwODkgMTIuMSA2LjQ5OTk4QzEyLjEgNi4yNzkwNiAxMi4yNzkxIDYuMDk5OTggMTIuNSA2LjA5OTk4SDEzLjFWNS40OTk5OEMxMy4xIDUuMjc5MDYgMTMuMjc5MSA1LjA5OTk4IDEzLjUgNS4wOTk5OFpNOC45MDAwMiAwLjQ5OTk3NkM4LjkwMDAyIDAuMjc5MDYyIDguNzIwOTMgMC4wOTk5NzU2IDguNTAwMDIgMC4wOTk5NzU2QzguMjc5MSAwLjA5OTk3NTYgOC4xMDAwMiAwLjI3OTA2MiA4LjEwMDAyIDAuNDk5OTc2VjEuMDk5OThINy41MDAwMkM3LjI3OTEgMS4wOTk5OCA3LjEwMDAyIDEuMjc5MDYgNy4xMDAwMiAxLjQ5OTk4QzcuMTAwMDIgMS43MjA4OSA3LjI3OTEgMS44OTk5OCA3LjUwMDAyIDEuODk5OThIOC4xMDAwMlYyLjQ5OTk4QzguMTAwMDIgMi43MjA4OSA4LjI3OTEgMi44OTk5OCA4LjUwMDAyIDIuODk5OThDOC43MjA5MyAyLjg5OTk4IDguOTAwMDIgMi43MjA4OSA4LjkwMDAyIDIuNDk5OThWMS44OTk5OEg5LjUwMDAyQzkuNzIwOTMgMS44OTk5OCA5LjkwMDAyIDEuNzIwODkgOS45MDAwMiAxLjQ5OTk4QzkuOTAwMDIgMS4yNzkwNiA5LjcyMDkzIDEuMDk5OTggOS41MDAwMiAxLjA5OTk4SDguOTAwMDJWMC40OTk5NzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxPbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAgNi41QzEwIDguNDMzIDguNDMzIDEwIDYuNSAxMEM0LjU2NyAxMCAzIDguNDMzIDMgNi41QzMgNC41NjcgNC41NjcgMyA2LjUgM0M4LjQzMyAzIDEwIDQuNTY3IDEwIDYuNVpNOS4zMDg4NCAxMC4wMTU5QzguNTM5MDEgMTAuNjMxOCA3LjU2MjUxIDExIDYuNSAxMUM0LjAxNDcyIDExIDIgOC45ODUyOCAyIDYuNUMyIDQuMDE0NzIgNC4wMTQ3MiAyIDYuNSAyQzguOTg1MjggMiAxMSA0LjAxNDcyIDExIDYuNUMxMSA3LjU2MjUxIDEwLjYzMTggOC41MzkwMSAxMC4wMTU5IDkuMzA4ODRMMTIuODUzNiAxMi4xNDY0QzEzLjA0ODggMTIuMzQxNyAxMy4wNDg4IDEyLjY1ODMgMTIuODUzNiAxMi44NTM2QzEyLjY1ODMgMTMuMDQ4OCAxMi4zNDE3IDEzLjA0ODggMTIuMTQ2NCAxMi44NTM2TDkuMzA4ODQgMTAuMDE1OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEVuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjQ5OTg4IDIuMDAwMTJDMS43NzYwMiAyLjAwMDEyIDEuOTk5ODggMS43NzYyNiAxLjk5OTg4IDEuNTAwMTJDMS45OTk4OCAxLjIyMzk4IDEuNzc2MDIgMS4wMDAxMiAxLjQ5OTg4IDEuMDAwMTJDMS4yMjM3NCAxLjAwMDEyIDAuOTk5ODc4IDEuMjIzOTggMC45OTk4NzggMS41MDAxMkMwLjk5OTg3OCAxLjc3NjI2IDEuMjIzNzQgMi4wMDAxMiAxLjQ5OTg4IDIuMDAwMTJaTTQuNDk5ODggMi4wMDAxMkM0Ljc3NjAyIDIuMDAwMTIgNC45OTk4OCAxLjc3NjI2IDQuOTk5ODggMS41MDAxMkM0Ljk5OTg4IDEuMjIzOTggNC43NzYwMiAxLjAwMDEyIDQuNDk5ODggMS4wMDAxMkM0LjIyMzc0IDEuMDAwMTIgMy45OTk4OCAxLjIyMzk4IDMuOTk5ODggMS41MDAxMkMzLjk5OTg4IDEuNzc2MjYgNC4yMjM3NCAyLjAwMDEyIDQuNDk5ODggMi4wMDAxMlpNNy45OTk4OCAxLjUwMDEyQzcuOTk5ODggMS43NzYyNiA3Ljc3NjAyIDIuMDAwMTIgNy40OTk4OCAyLjAwMDEyQzcuMjIzNzQgMi4wMDAxMiA2Ljk5OTg4IDEuNzc2MjYgNi45OTk4OCAxLjUwMDEyQzYuOTk5ODggMS4yMjM5OCA3LjIyMzc0IDEuMDAwMTIgNy40OTk4OCAxLjAwMDEyQzcuNzc2MDIgMS4wMDAxMiA3Ljk5OTg4IDEuMjIzOTggNy45OTk4OCAxLjUwMDEyWk0xMC40OTk5IDIuMDAwMTJDMTAuNzc2IDIuMDAwMTIgMTAuOTk5OSAxLjc3NjI2IDEwLjk5OTkgMS41MDAxMkMxMC45OTk5IDEuMjIzOTggMTAuNzc2IDEuMDAwMTIgMTAuNDk5OSAxLjAwMDEyQzEwLjIyMzcgMS4wMDAxMiA5Ljk5OTg4IDEuMjIzOTggOS45OTk4OCAxLjUwMDEyQzkuOTk5ODggMS43NzYyNiAxMC4yMjM3IDIuMDAwMTIgMTAuNDk5OSAyLjAwMDEyWk0xMy45OTk5IDEuNTAwMTJDMTMuOTk5OSAxLjc3NjI2IDEzLjc3NiAyLjAwMDEyIDEzLjQ5OTkgMi4wMDAxMkMxMy4yMjM3IDIuMDAwMTIgMTIuOTk5OSAxLjc3NjI2IDEyLjk5OTkgMS41MDAxMkMxMi45OTk5IDEuMjIzOTggMTMuMjIzNyAxLjAwMDEyIDEzLjQ5OTkgMS4wMDAxMkMxMy43NzYgMS4wMDAxMiAxMy45OTk5IDEuMjIzOTggMTMuOTk5OSAxLjUwMDEyWk0xLjQ5OTg4IDE0LjAwMDFDMS43NzYwMiAxNC4wMDAxIDEuOTk5ODggMTMuNzc2MyAxLjk5OTg4IDEzLjUwMDFDMS45OTk4OCAxMy4yMjQgMS43NzYwMiAxMy4wMDAxIDEuNDk5ODggMTMuMDAwMUMxLjIyMzc0IDEzLjAwMDEgMC45OTk4NzggMTMuMjI0IDAuOTk5ODc4IDEzLjUwMDFDMC45OTk4NzggMTMuNzc2MyAxLjIyMzc0IDE0LjAwMDEgMS40OTk4OCAxNC4wMDAxWk0xLjk5OTg4IDEwLjUwMDFDMS45OTk4OCAxMC43NzYzIDEuNzc2MDIgMTEuMDAwMSAxLjQ5OTg4IDExLjAwMDFDMS4yMjM3NCAxMS4wMDAxIDAuOTk5ODc4IDEwLjc3NjMgMC45OTk4NzggMTAuNTAwMUMwLjk5OTg3OCAxMC4yMjQgMS4yMjM3NCAxMC4wMDAxIDEuNDk5ODggMTAuMDAwMUMxLjc3NjAyIDEwLjAwMDEgMS45OTk4OCAxMC4yMjQgMS45OTk4OCAxMC41MDAxWk0xLjQ5OTg4IDguMDAwMTJDMS43NzYwMiA4LjAwMDEyIDEuOTk5ODggNy43NzYyNiAxLjk5OTg4IDcuNTAwMTJDMS45OTk4OCA3LjIyMzk4IDEuNzc2MDIgNy4wMDAxMiAxLjQ5OTg4IDcuMDAwMTJDMS4yMjM3NCA3LjAwMDEyIDAuOTk5ODc4IDcuMjIzOTggMC45OTk4NzggNy41MDAxMkMwLjk5OTg3OCA3Ljc3NjI2IDEuMjIzNzQgOC4wMDAxMiAxLjQ5OTg4IDguMDAwMTJaTTEuOTk5ODggNC41MDAxMkMxLjk5OTg4IDQuNzc2MjYgMS43NzYwMiA1LjAwMDEyIDEuNDk5ODggNS4wMDAxMkMxLjIyMzc0IDUuMDAwMTIgMC45OTk4NzggNC43NzYyNiAwLjk5OTg3OCA0LjUwMDEyQzAuOTk5ODc4IDQuMjIzOTggMS4yMjM3NCA0LjAwMDEyIDEuNDk5ODggNC4wMDAxMkMxLjc3NjAyIDQuMDAwMTIgMS45OTk4OCA0LjIyMzk4IDEuOTk5ODggNC41MDAxMlpNMTMuNDk5OSAxMS4wMDAxQzEzLjc3NiAxMS4wMDAxIDEzLjk5OTkgMTAuNzc2MyAxMy45OTk5IDEwLjUwMDFDMTMuOTk5OSAxMC4yMjQgMTMuNzc2IDEwLjAwMDEgMTMuNDk5OSAxMC4wMDAxQzEzLjIyMzcgMTAuMDAwMSAxMi45OTk5IDEwLjIyNCAxMi45OTk5IDEwLjUwMDFDMTIuOTk5OSAxMC43NzYzIDEzLjIyMzcgMTEuMDAwMSAxMy40OTk5IDExLjAwMDFaTTEzLjk5OTkgNy41MDAxMkMxMy45OTk5IDcuNzc2MjYgMTMuNzc2IDguMDAwMTIgMTMuNDk5OSA4LjAwMDEyQzEzLjIyMzcgOC4wMDAxMiAxMi45OTk5IDcuNzc2MjYgMTIuOTk5OSA3LjUwMDEyQzEyLjk5OTkgNy4yMjM5OCAxMy4yMjM3IDcuMDAwMTIgMTMuNDk5OSA3LjAwMDEyQzEzLjc3NiA3LjAwMDEyIDEzLjk5OTkgNy4yMjM5OCAxMy45OTk5IDcuNTAwMTJaTTEzLjQ5OTkgNS4wMDAxMkMxMy43NzYgNS4wMDAxMiAxMy45OTk5IDQuNzc2MjYgMTMuOTk5OSA0LjUwMDEyQzEzLjk5OTkgNC4yMjM5OCAxMy43NzYgNC4wMDAxMiAxMy40OTk5IDQuMDAwMTJDMTMuMjIzNyA0LjAwMDEyIDEyLjk5OTkgNC4yMjM5OCAxMi45OTk5IDQuNTAwMTJDMTIuOTk5OSA0Ljc3NjI2IDEzLjIyMzcgNS4wMDAxMiAxMy40OTk5IDUuMDAwMTJaTTQuOTk5ODggMTMuNTAwMUM0Ljk5OTg4IDEzLjc3NjMgNC43NzYwMiAxNC4wMDAxIDQuNDk5ODggMTQuMDAwMUM0LjIyMzc0IDE0LjAwMDEgMy45OTk4OCAxMy43NzYzIDMuOTk5ODggMTMuNTAwMUMzLjk5OTg4IDEzLjIyNCA0LjIyMzc0IDEzLjAwMDEgNC40OTk4OCAxMy4wMDAxQzQuNzc2MDIgMTMuMDAwMSA0Ljk5OTg4IDEzLjIyNCA0Ljk5OTg4IDEzLjUwMDFaTTcuNDk5ODggMTQuMDAwMUM3Ljc3NjAyIDE0LjAwMDEgNy45OTk4OCAxMy43NzYzIDcuOTk5ODggMTMuNTAwMUM3Ljk5OTg4IDEzLjIyNCA3Ljc3NjAyIDEzLjAwMDEgNy40OTk4OCAxMy4wMDAxQzcuMjIzNzQgMTMuMDAwMSA2Ljk5OTg4IDEzLjIyNCA2Ljk5OTg4IDEzLjUwMDFDNi45OTk4OCAxMy43NzYzIDcuMjIzNzQgMTQuMDAwMSA3LjQ5OTg4IDE0LjAwMDFaTTEwLjk5OTkgMTMuNTAwMUMxMC45OTk5IDEzLjc3NjMgMTAuNzc2IDE0LjAwMDEgMTAuNDk5OSAxNC4wMDAxQzEwLjIyMzcgMTQuMDAwMSA5Ljk5OTg4IDEzLjc3NjMgOS45OTk4OCAxMy41MDAxQzkuOTk5ODggMTMuMjI0IDEwLjIyMzcgMTMuMDAwMSAxMC40OTk5IDEzLjAwMDFDMTAuNzc2IDEzLjAwMDEgMTAuOTk5OSAxMy4yMjQgMTAuOTk5OSAxMy41MDAxWk0xMy40OTk5IDE0LjAwMDFDMTMuNzc2IDE0LjAwMDEgMTMuOTk5OSAxMy43NzYzIDEzLjk5OTkgMTMuNTAwMUMxMy45OTk5IDEzLjIyNCAxMy43NzYgMTMuMDAwMSAxMy40OTk5IDEzLjAwMDFDMTMuMjIzNyAxMy4wMDAxIDEyLjk5OTkgMTMuMjI0IDEyLjk5OTkgMTMuNTAwMUMxMi45OTk5IDEzLjc3NjMgMTMuMjIzNyAxNC4wMDAxIDEzLjQ5OTkgMTQuMDAwMVpNMy45OTk4OCA1LjAwMDEyQzMuOTk5ODggNC40NDc4NCA0LjQ0NzU5IDQuMDAwMTIgNC45OTk4OCA0LjAwMDEySDkuOTk5ODhDMTAuNTUyMiA0LjAwMDEyIDEwLjk5OTkgNC40NDc4NCAxMC45OTk5IDUuMDAwMTJWMTAuMDAwMUMxMC45OTk5IDEwLjU1MjQgMTAuNTUyMiAxMS4wMDAxIDkuOTk5ODggMTEuMDAwMUg0Ljk5OTg4QzQuNDQ3NTkgMTEuMDAwMSAzLjk5OTg4IDEwLjU1MjQgMy45OTk4OCAxMC4wMDAxVjUuMDAwMTJaTTQuOTk5ODggNS4wMDAxMkg5Ljk5OTg4VjEwLjAwMDFINC45OTk4OFY1LjAwMDEyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sU249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgMkgxNFYxM0gxTDEgMlpNMCAyQzAgMS40NDc3MiAwLjQ0NzcxNSAxIDEgMUgxNEMxNC41NTIzIDEgMTUgMS40NDc3MiAxNSAyVjEzQzE1IDEzLjU1MjMgMTQuNTUyMyAxNCAxNCAxNEgxQzAuNDQ3NzE1IDE0IDAgMTMuNTUyMyAwIDEzVjJaTTQuODc1IDcuNUM0Ljg3NSA2LjA1MDI1IDYuMDUwMjUgNC44NzUgNy41IDQuODc1QzguOTQ5NzUgNC44NzUgMTAuMTI1IDYuMDUwMjUgMTAuMTI1IDcuNUMxMC4xMjUgOC45NDk3NSA4Ljk0OTc1IDEwLjEyNSA3LjUgMTAuMTI1QzYuMDUwMjUgMTAuMTI1IDQuODc1IDguOTQ5NzUgNC44NzUgNy41Wk03LjUgMy44NzVDNS40OTc5NyAzLjg3NSAzLjg3NSA1LjQ5Nzk3IDMuODc1IDcuNUMzLjg3NSA5LjUwMjAzIDUuNDk3OTcgMTEuMTI1IDcuNSAxMS4xMjVDOS41MDIwMyAxMS4xMjUgMTEuMTI1IDkuNTAyMDMgMTEuMTI1IDcuNUMxMS4xMjUgNS40OTc5NyA5LjUwMjAzIDMuODc1IDcuNSAzLjg3NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE1uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDFDMC40NDc3MTUgMSAwIDEuNDQ3NzIgMCAyVjEzQzAgMTMuNTUyMyAwLjQ0NzcxNSAxNCAxIDE0SDE0QzE0LjU1MjMgMTQgMTUgMTMuNTUyMyAxNSAxM1YyQzE1IDEuNDQ3NzIgMTQuNTUyMyAxIDE0IDFIMVpNNy41IDEwLjYyNUM5LjIyNTg5IDEwLjYyNSAxMC42MjUgOS4yMjU4OSAxMC42MjUgNy41QzEwLjYyNSA1Ljc3NDExIDkuMjI1ODkgNC4zNzUgNy41IDQuMzc1QzUuNzc0MTEgNC4zNzUgNC4zNzUgNS43NzQxMSA0LjM3NSA3LjVDNC4zNzUgOS4yMjU4OSA1Ljc3NDExIDEwLjYyNSA3LjUgMTAuNjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sam49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuMjUgNy41QzIuMjUgNy4yMjM4NiAyLjQ3Mzg2IDcgMi43NSA3SDEyLjI1QzEyLjUyNjEgNyAxMi43NSA3LjIyMzg2IDEyLjc1IDcuNUMxMi43NSA3Ljc3NjE0IDEyLjUyNjEgOCAxMi4yNSA4SDIuNzVDMi40NzM4NiA4IDIuMjUgNy43NzYxNCAyLjI1IDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGtuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc2ODkyQzMuODQyMjIgMC44NzY4OTIgMC44NzcwNzUgMy44NDIwNCAwLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDExLjE1NzQgMy44NDIyMiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMxMS4xNTc2IDE0LjEyMjYgMTQuMTIyNyAxMS4xNTc0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDMuODQyMDQgMTEuMTU3NiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyWk0xLjgyNzA3IDcuNDk5NzJDMS44MjcwNyA0LjM2NjcxIDQuMzY2ODkgMS44MjY4OSA3LjQ5OTkxIDEuODI2ODlDMTAuNjMyOSAxLjgyNjg5IDEzLjE3MjcgNC4zNjY3MSAxMy4xNzI3IDcuNDk5NzJDMTMuMTcyNyAxMC42MzI3IDEwLjYzMjkgMTMuMTcyNiA3LjQ5OTkxIDEzLjE3MjZDNC4zNjY4OSAxMy4xNzI2IDEuODI3MDcgMTAuNjMyNyAxLjgyNzA3IDcuNDk5NzJaTTQuNTAwMDMgN0M0LjIyMzg5IDcgNC4wMDAwMyA3LjIyMzg2IDQuMDAwMDMgNy41QzQuMDAwMDMgNy43NzYxNCA0LjIyMzg5IDggNC41MDAwMyA4SDEwLjVDMTAuNzc2MiA4IDExIDcuNzc2MTQgMTEgNy41QzExIDcuMjIzODYgMTAuNzc2MiA3IDEwLjUgN0g0LjUwMDAzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuMTQ5MjEgMy45OTk5NkMyLjE0OTIxIDIuOTc3NzggMi45Nzc4NCAyLjE0OTE1IDQuMDAwMDIgMi4xNDkxNUM1LjAyMjE5IDIuMTQ5MTUgNS44NTA4MyAyLjk3Nzc4IDUuODUwODMgMy45OTk5NkM1Ljg1MDgzIDUuMDIyMTMgNS4wMjIxOSA1Ljg1MDc3IDQuMDAwMDIgNS44NTA3N0MyLjk3Nzg0IDUuODUwNzcgMi4xNDkyMSA1LjAyMjEzIDIuMTQ5MjEgMy45OTk5NlpNNC4wMDAwMiAxLjI0OTE1QzIuNDgwNzkgMS4yNDkxNSAxLjI0OTIxIDIuNDgwNzMgMS4yNDkyMSAzLjk5OTk2QzEuMjQ5MjEgNS41MTkxOSAyLjQ4MDc5IDYuNzUwNzcgNC4wMDAwMiA2Ljc1MDc3QzUuNTE5MjUgNi43NTA3NyA2Ljc1MDgzIDUuNTE5MTkgNi43NTA4MyAzLjk5OTk2QzYuNzUwODMgMi40ODA3MyA1LjUxOTI1IDEuMjQ5MTUgNC4wMDAwMiAxLjI0OTE1Wk01LjgyMDM0IDExLjAwMDFMMi40OTk5OCAxMi44MzY5VjkuMTYzMzFMNS44MjAzNCAxMS4wMDAxWk0yLjYzODgzIDguMjExNTlDMi4xNzIyOCA3Ljk1MzUgMS41OTk5OCA4LjI5MDkzIDEuNTk5OTggOC44MjQxMVYxMy4xNzYxQzEuNTk5OTggMTMuNzA5MyAyLjE3MjI4IDE0LjA0NjcgMi42Mzg4MyAxMy43ODg2TDYuNTcyMzUgMTEuNjEyNkM3LjA1Mzg5IDExLjM0NjIgNy4wNTM4OSAxMC42NTQgNi41NzIzNSAxMC4zODc2TDIuNjM4ODMgOC4yMTE1OVpNOC4zMDAwMSA5LjAwMDAzQzguMzAwMDEgOC42MTM0MyA4LjYxMzQxIDguMzAwMDMgOS4wMDAwMSA4LjMwMDAzSDEzQzEzLjM4NjYgOC4zMDAwMyAxMy43IDguNjEzNDMgMTMuNyA5LjAwMDAzVjEzQzEzLjcgMTMuMzg2NiAxMy4zODY2IDEzLjcgMTMgMTMuN0g5LjAwMDAxQzguNjEzNDEgMTMuNyA4LjMwMDAxIDEzLjM4NjYgOC4zMDAwMSAxM1Y5LjAwMDAzWk05LjIwMDAxIDkuMjAwMDNWMTIuOEgxMi44VjkuMjAwMDNIOS4yMDAwMVpNMTMuNDQzMiAyLjE5MzExQzEzLjYxODkgMi4wMTczNyAxMy42MTg5IDEuNzMyNDUgMTMuNDQzMiAxLjU1NjcxQzEzLjI2NzUgMS4zODA5OCAxMi45ODI2IDEuMzgwOTggMTIuODA2OCAxLjU1NjcxTDExIDMuMzYzNTNMOS4xOTMyMSAxLjU1Njc0QzkuMDE3NDggMS4zODEgOC43MzI1NSAxLjM4MSA4LjU1NjgyIDEuNTU2NzRDOC4zODEwOCAxLjczMjQ3IDguMzgxMDggMi4wMTc0IDguNTU2ODIgMi4xOTMxM0wxMC4zNjM2IDMuOTk5OTJMOC41NTY4MiA1LjgwNjcxQzguMzgxMDggNS45ODI0NSA4LjM4MTA4IDYuMjY3MzcgOC41NTY4MiA2LjQ0MzExQzguNzMyNTUgNi42MTg4NSA5LjAxNzQ4IDYuNjE4ODUgOS4xOTMyMSA2LjQ0MzExTDExIDQuNjM2MzJMMTIuODA2OCA2LjQ0MzE0QzEyLjk4MjYgNi42MTg4NyAxMy4yNjc1IDYuNjE4ODcgMTMuNDQzMiA2LjQ0MzE0QzEzLjYxODkgNi4yNjc0IDEzLjYxODkgNS45ODI0NyAxMy40NDMyIDUuODA2NzRMMTEuNjM2NCAzLjk5OTkyTDEzLjQ0MzIgMi4xOTMxMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFBuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjUgM0M0LjY3MTU3IDMgNCAzLjY3MTU3IDQgNC41QzQgNS4zMjg0MyA0LjY3MTU3IDYgNS41IDZDNi4zMjg0MyA2IDcgNS4zMjg0MyA3IDQuNUM3IDMuNjcxNTcgNi4zMjg0MyAzIDUuNSAzWk0zIDVDMy4wMTY3MSA1IDMuMDMzMjMgNC45OTkxOCAzLjA0OTUyIDQuOTk3NThDMy4yODAyMiA2LjEzOTkgNC4yODk2NyA3IDUuNSA3QzYuNzEwMzMgNyA3LjcxOTc4IDYuMTM5OSA3Ljk1MDQ4IDQuOTk3NThDNy45NjY3NyA0Ljk5OTE4IDcuOTgzMjkgNSA4IDVIMTMuNUMxMy43NzYxIDUgMTQgNC43NzYxNCAxNCA0LjVDMTQgNC4yMjM4NiAxMy43NzYxIDQgMTMuNSA0SDhDNy45ODMyOSA0IDcuOTY2NzcgNC4wMDA4MiA3Ljk1MDQ4IDQuMDAyNDJDNy43MTk3OCAyLjg2MDA5IDYuNzEwMzMgMiA1LjUgMkM0LjI4OTY3IDIgMy4yODAyMiAyLjg2MDA5IDMuMDQ5NTIgNC4wMDI0MkMzLjAzMzIzIDQuMDAwODIgMy4wMTY3MSA0IDMgNEgxLjVDMS4yMjM4NiA0IDEgNC4yMjM4NiAxIDQuNUMxIDQuNzc2MTQgMS4yMjM4NiA1IDEuNSA1SDNaTTExLjk1MDUgMTAuOTk3NkMxMS43MTk4IDEyLjEzOTkgMTAuNzEwMyAxMyA5LjUgMTNDOC4yODk2NyAxMyA3LjI4MDIyIDEyLjEzOTkgNy4wNDk1MiAxMC45OTc2QzcuMDMzMjMgMTAuOTk5MiA3LjAxNjcxIDExIDcgMTFIMS41QzEuMjIzODYgMTEgMSAxMC43NzYxIDEgMTAuNUMxIDEwLjIyMzkgMS4yMjM4NiAxMCAxLjUgMTBIN0M3LjAxNjcxIDEwIDcuMDMzMjMgMTAuMDAwOCA3LjA0OTUyIDEwLjAwMjRDNy4yODAyMiA4Ljg2MDEgOC4yODk2NyA4IDkuNSA4QzEwLjcxMDMgOCAxMS43MTk4IDguODYwMSAxMS45NTA1IDEwLjAwMjRDMTEuOTY2OCAxMC4wMDA4IDExLjk4MzMgMTAgMTIgMTBIMTMuNUMxMy43NzYxIDEwIDE0IDEwLjIyMzkgMTQgMTAuNUMxNCAxMC43NzYxIDEzLjc3NjEgMTEgMTMuNSAxMUgxMkMxMS45ODMzIDExIDExLjk2NjggMTAuOTk5MiAxMS45NTA1IDEwLjk5NzZaTTggMTAuNUM4IDkuNjcxNTcgOC42NzE1NyA5IDkuNSA5QzEwLjMyODQgOSAxMSA5LjY3MTU3IDExIDEwLjVDMTEgMTEuMzI4NCAxMC4zMjg0IDEyIDkuNSAxMkM4LjY3MTU3IDEyIDggMTEuMzI4NCA4IDEwLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxBbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSAxLjVDNSAxLjIyMzg2IDQuNzc2MTQgMSA0LjUgMUM0LjIyMzg2IDEgNCAxLjIyMzg2IDQgMS41TDQgN0M0IDcuMDE2NzEgNC4wMDA4MiA3LjAzMzIzIDQuMDAyNDIgNy4wNDk1MkMyLjg2MDA5IDcuMjgwMjIgMiA4LjI4OTY3IDIgOS41QzIgMTAuNzEwMyAyLjg2MDA5IDExLjcxOTggNC4wMDI0MiAxMS45NTA1QzQuMDAwODIgMTEuOTY2OCA0IDExLjk4MzMgNCAxMlYxMy41QzQgMTMuNzc2MSA0LjIyMzg2IDE0IDQuNSAxNEM0Ljc3NjE0IDE0IDUgMTMuNzc2MSA1IDEzLjVWMTJDNSAxMS45ODMzIDQuOTk5MTggMTEuOTY2OCA0Ljk5NzU4IDExLjk1MDVDNi4xMzk5IDExLjcxOTggNyAxMC43MTAzIDcgOS41QzcgOC4yODk2NyA2LjEzOTkgNy4yODAyMiA0Ljk5NzU4IDcuMDQ5NTJDNC45OTkxOCA3LjAzMzIzIDUgNy4wMTY3MSA1IDdMNSAxLjVaTTExIDEuNUMxMSAxLjIyMzg2IDEwLjc3NjEgMSAxMC41IDFDMTAuMjIzOSAxIDEwIDEuMjIzODYgMTAgMS41VjNDMTAgMy4wMTY3MSAxMC4wMDA4IDMuMDMzMjMgMTAuMDAyNCAzLjA0OTUyQzguODYwMSAzLjI4MDIyIDggNC4yODk2NyA4IDUuNUM4IDYuNzEwMzMgOC44NjAxIDcuNzE5NzggMTAuMDAyNCA3Ljk1MDQ4QzEwLjAwMDggNy45NjY3NyAxMCA3Ljk4MzI5IDEwIDhWMTMuNUMxMCAxMy43NzYxIDEwLjIyMzkgMTQgMTAuNSAxNEMxMC43NzYxIDE0IDExIDEzLjc3NjEgMTEgMTMuNVY4QzExIDcuOTgzMjkgMTAuOTk5MiA3Ljk2Njc3IDEwLjk5NzYgNy45NTA0OEMxMi4xMzk5IDcuNzE5NzggMTMgNi43MTAzMyAxMyA1LjVDMTMgNC4yODk2NyAxMi4xMzk5IDMuMjgwMjIgMTAuOTk3NiAzLjA0OTUyQzEwLjk5OTIgMy4wMzMyMyAxMSAzLjAxNjcxIDExIDNWMS41Wk00LjUgOEMzLjY3MTU3IDggMyA4LjY3MTU3IDMgOS41QzMgMTAuMzI4NCAzLjY3MTU3IDExIDQuNSAxMUM1LjMyODQzIDExIDYgMTAuMzI4NCA2IDkuNUM2IDguNjcxNTcgNS4zMjg0MyA4IDQuNSA4Wk05IDUuNUM5IDQuNjcxNTcgOS42NzE1NyA0IDEwLjUgNEMxMS4zMjg0IDQgMTIgNC42NzE1NyAxMiA1LjVDMTIgNi4zMjg0MyAxMS4zMjg0IDcgMTAuNSA3QzkuNjcxNTcgNyA5IDYuMzI4NDMgOSA1LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxJbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4yNTkyNSAzLjE2NjY3TDQuMzcwMzYgNS4zMzMzM1YxTDcuMjU5MjUgMy4xNjY2N1pNMSA4LjIyMjIyTDMuODg4ODkgNi4wNTU1NUwxIDMuODg4ODlWOC4yMjIyMlpNMSAxNEwzLjg4ODg5IDExLjgzMzNMMSA5LjY2NjY2VjE0Wk03Ljc0MDcyIDguMjIyMjJMMTAuNjI5NiA2LjA1NTU1TDcuNzQwNzIgMy44ODg4OVY4LjIyMjIyWk0xNCAzLjE2NjY3TDExLjExMTEgNS4zMzMzM1YxTDE0IDMuMTY2NjdaTTExLjExMTEgMTEuMTExMUwxNCA4Ljk0NDQ0TDExLjExMTEgNi43Nzc3N1YxMS4xMTExWk0zLjg4ODg5IDExLjExMTFMMSA4Ljk0NDQ0TDMuODg4ODkgNi43Nzc3N1YxMS4xMTExWk00LjM3MDM2IDYuMDU1NTVMNy4yNTkyNSA4LjIyMjIyVjMuODg4ODlMNC4zNzAzNiA2LjA1NTU1Wk0zLjg4ODg5IDUuMzMzMzNMMSAzLjE2NjY3TDMuODg4ODkgMVY1LjMzMzMzWk03Ljc0MDcyIDMuMTY2NjdMMTAuNjI5NiA1LjMzMzMzVjFMNy43NDA3MiAzLjE2NjY3Wk0xNCA4LjIyMjIyTDExLjExMTEgNi4wNTU1NUwxNCAzLjg4ODg5VjguMjIyMjJaTTExLjExMTEgMTEuODMzM0wxNCAxNFY5LjY2NjY2TDExLjExMTEgMTEuODMzM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFRuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjg5OTk4IDAuNDk5OTc2QzIuODk5OTggMC4yNzkwNjIgMi43MjA4OSAwLjA5OTk3NTYgMi40OTk5OCAwLjA5OTk3NTZDMi4yNzkwNiAwLjA5OTk3NTYgMi4wOTk5OCAwLjI3OTA2MiAyLjA5OTk4IDAuNDk5OTc2VjEuMDk5OThIMS40OTk5OEMxLjI3OTA2IDEuMDk5OTggMS4wOTk5OCAxLjI3OTA2IDEuMDk5OTggMS40OTk5OEMxLjA5OTk4IDEuNzIwODkgMS4yNzkwNiAxLjg5OTk4IDEuNDk5OTggMS44OTk5OEgyLjA5OTk4VjIuNDk5OThDMi4wOTk5OCAyLjcyMDg5IDIuMjc5MDYgMi44OTk5OCAyLjQ5OTk4IDIuODk5OThDMi43MjA4OSAyLjg5OTk4IDIuODk5OTggMi43MjA4OSAyLjg5OTk4IDIuNDk5OThWMS44OTk5OEgzLjQ5OTk4QzMuNzIwODkgMS44OTk5OCAzLjg5OTk4IDEuNzIwODkgMy44OTk5OCAxLjQ5OTk4QzMuODk5OTggMS4yNzkwNiAzLjcyMDg5IDEuMDk5OTggMy40OTk5OCAxLjA5OTk4SDIuODk5OThWMC40OTk5NzZaTTUuODk5OTggMy40OTk5OEM1Ljg5OTk4IDMuMjc5MDYgNS43MjA4OSAzLjA5OTk4IDUuNDk5OTggMy4wOTk5OEM1LjI3OTA2IDMuMDk5OTggNS4wOTk5OCAzLjI3OTA2IDUuMDk5OTggMy40OTk5OFY0LjA5OTk4SDQuNDk5OThDNC4yNzkwNiA0LjA5OTk4IDQuMDk5OTggNC4yNzkwNiA0LjA5OTk4IDQuNDk5OThDNC4wOTk5OCA0LjcyMDg5IDQuMjc5MDYgNC44OTk5OCA0LjQ5OTk4IDQuODk5OThINS4wOTk5OFY1LjQ5OTk4QzUuMDk5OTggNS43MjA4OSA1LjI3OTA2IDUuODk5OTggNS40OTk5OCA1Ljg5OTk4QzUuNzIwODkgNS44OTk5OCA1Ljg5OTk4IDUuNzIwODkgNS44OTk5OCA1LjQ5OTk4VjQuODk5OThINi40OTk5OEM2LjcyMDg5IDQuODk5OTggNi44OTk5OCA0LjcyMDg5IDYuODk5OTggNC40OTk5OEM2Ljg5OTk4IDQuMjc5MDYgNi43MjA4OSA0LjA5OTk4IDYuNDk5OTggNC4wOTk5OEg1Ljg5OTk4VjMuNDk5OThaTTEuODk5OTggNi40OTk5OEMxLjg5OTk4IDYuMjc5MDYgMS43MjA4OSA2LjA5OTk4IDEuNDk5OTggNi4wOTk5OEMxLjI3OTA2IDYuMDk5OTggMS4wOTk5OCA2LjI3OTA2IDEuMDk5OTggNi40OTk5OFY3LjA5OTk4SDAuNDk5OTc2QzAuMjc5MDYyIDcuMDk5OTggMC4wOTk5NzU2IDcuMjc5MDYgMC4wOTk5NzU2IDcuNDk5OThDMC4wOTk5NzU2IDcuNzIwODkgMC4yNzkwNjIgNy44OTk5OCAwLjQ5OTk3NiA3Ljg5OTk4SDEuMDk5OThWOC40OTk5OEMxLjA5OTk4IDguNzIwODkgMS4yNzkwNiA4Ljg5OTk3IDEuNDk5OTggOC44OTk5N0MxLjcyMDg5IDguODk5OTcgMS44OTk5OCA4LjcyMDg5IDEuODk5OTggOC40OTk5OFY3Ljg5OTk4SDIuNDk5OThDMi43MjA4OSA3Ljg5OTk4IDIuODk5OTggNy43MjA4OSAyLjg5OTk4IDcuNDk5OThDMi44OTk5OCA3LjI3OTA2IDIuNzIwODkgNy4wOTk5OCAyLjQ5OTk4IDcuMDk5OThIMS44OTk5OFY2LjQ5OTk4Wk04LjU0NDA2IDAuOTgxODRMOC4yNDYxOCAwLjk0MTU4NkM4LjAzMjc1IDAuOTE3Njc2IDcuOTA2OTIgMS4xNjU1IDguMDI5MzYgMS4zNDE5NEM4LjE3MDEzIDEuNTQ0NzkgOC4yOTk4MSAxLjc1NTkyIDguNDE3NTQgMS45NzQ0NUM4LjkxODc4IDIuOTA0ODUgOS4yMDMyMiAzLjk2OTMyIDkuMjAzMjIgNS4xMDAyMkM5LjIwMzIyIDguMzcyMDEgNi44MjI0NyAxMS4wODc4IDMuNjk4ODcgMTEuNjA5N0MzLjQ1NzM2IDExLjY1IDMuMjA5ODggMTEuNjc3MiAyLjk2MDA4IDExLjY5MDZDMi43NDU2MyAxMS43MDIgMi42MjcyOSAxMS45NTM1IDIuNzc3MjEgMTIuMTA3MkMyLjg0NTUxIDEyLjE3NzMgMi45MTUzNSAxMi4yNDU4IDIuOTg2NjcgMTIuMzEyOEwzLjA1ODgzIDEyLjM3OTVMMy4zMTg4MyAxMi42MDQ1TDMuNTA2ODQgMTIuNzUzMkwzLjYyNzk2IDEyLjg0MzNMMy44MTQ5MSAxMi45NzQyTDMuOTkwNzkgMTMuMDg5QzQuMTExNzUgMTMuMTY1MSA0LjIzNTM2IDEzLjIzNzUgNC4zNjE1NyAxMy4zMDU5TDQuNjI0OTYgMTMuNDQxMkw0Ljg4NTUzIDEzLjU2MDdMNS4xODgzNyAxMy42ODI4TDUuNDMxNjkgMTMuNzY4NkM1LjU2NTY0IDEzLjgxMjggNS43MDE0OSAxMy44NTI5IDUuODM4NTcgMTMuODg4NUM1Ljk0MjYyIDEzLjkxNTUgNi4wNDc2NyAxMy45NDAxIDYuMTU0MDUgMTMuOTYyMkM2LjI3OTkzIDEzLjk4ODMgNi40MDcxMyAxNC4wMTA5IDYuNTM1NDQgMTQuMDI5OEw2Ljg1MjQxIDE0LjA2ODVMNy4xMTkzNCAxNC4wODkyQzcuMjQ2MzcgMTQuMDk2NSA3LjM3NDM2IDE0LjEwMDIgNy41MDMyMiAxNC4xMDAyQzExLjE0ODMgMTQuMTAwMiAxNC4xMDMyIDExLjE0NTMgMTQuMTAzMiA3LjUwMDIzQzE0LjEwMzIgNy4yNTA0NCAxNC4wODkzIDcuMDAzODkgMTQuMDYyMyA2Ljc2MTMxTDE0LjAyNTUgNi40ODQwN0MxMy45OTEgNi4yNjA4MyAxMy45NDUzIDYuMDQxMjkgMTMuODg5MSA1LjgyNjQyQzEzLjgyMTMgNS41NjcwOSAxMy43MzgyIDUuMzEzOTggMTMuNjQwOSA1LjA2ODgxTDEzLjUyNzkgNC44MDEzMkwxMy40NTA3IDQuNjM1NDJMMTMuMzc2NiA0LjQ4NjY2QzEzLjIxNzggNC4xNzc3MyAxMy4wMzUzIDMuODgyOTUgMTIuODMxMiAzLjYwNDIzTDEyLjY3ODIgMy40MDM1MkwxMi40NzkzIDMuMTY0MzJMMTIuMzE1NyAyLjk4MzYxTDEyLjE5NjEgMi44NTk1MUwxMi4wMzU1IDIuNzAyNDZMMTEuODEzNCAyLjUwMTg0TDExLjQ5MjUgMi4yNDE5MUwxMS4yNDgzIDIuMDY0OThMMTAuOTU2MiAxLjg3NDQ2TDEwLjYzNDYgMS42ODg5NEwxMC4zMDczIDEuNTIzNzhMMTAuMTkzOCAxLjQ3MTc2TDkuOTU0ODggMS4zNzA2TDkuNjc3OTEgMS4yNjY5TDkuNDI1NjYgMS4xODQ2TDkuMTAwNzUgMS4wOTQ4OUw4LjgzNTk5IDEuMDM0ODZMOC41NDQwNiAwLjk4MTg0Wk0xMC40MDMyIDUuMzAwMjNDMTAuNDAzMiA0LjI3NTg4IDEwLjIwMDIgMy4yOTgyOSA5LjgzMjQ0IDIuNDA2MDRDMTEuNzYyMyAzLjI4OTk1IDEzLjEwMzIgNS4yMzg2MiAxMy4xMDMyIDcuNTAwMjNDMTMuMTAzMiAxMC41OTMgMTAuNTk2IDEzLjEwMDIgNy41MDMyMiAxMy4xMDAyQzYuNjM2NDYgMTMuMTAwMiA1LjgxNTk3IDEyLjkwMzYgNS4wODM1NSAxMi41NTIyQzYuNTQxOSAxMi4wOTQxIDcuODEwODEgMTEuMjA4MiA4Ljc0MzIyIDEwLjA0MTZDOC44Nzk2MyAxMC4yMjg0IDkuMTAwMjggMTAuMzQ5NyA5LjM0OTI4IDEwLjM0OTdDOS43NjM0OSAxMC4zNDk3IDEwLjA5OTMgMTAuMDEzOSAxMC4wOTkzIDkuNTk5NzFDMTAuMDk5MyA5LjI0MjU2IDkuODQ5NjUgOC45NDM3MyA5LjUxNTM1IDguODY4MTZDOS41Nzc0MSA4Ljc1MTY1IDkuNjM2NTMgOC42MzMzNCA5LjY5MjYgOC41MTMzMkM5Ljg4MzU4IDguNjMxNjMgMTAuMTA4OCA4LjY5OTkzIDEwLjM1IDguNjk5OTNDMTEuMDQwMyA4LjY5OTkzIDExLjYgOC4xNDAyOCAxMS42IDcuNDQ5OTNDMTEuNiA2Ljc1OTc2IDExLjA0MDYgNi4yMDAyNCAxMC4zNTA1IDYuMTk5OTNDMTAuMzg1MyA1LjkwNDg3IDEwLjQwMzIgNS42MDQ2NCAxMC40MDMyIDUuMzAwMjNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxIbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy44MTgxOSAwLjkzMTc5QzcuNjQyNDUgMC43NTYwNTQgNy4zNTc1MyAwLjc1NjA1NCA3LjE4MTc5IDAuOTMxNzlMNS40MzE3OSAyLjY4MTc5QzUuMjU2MDUgMi44NTc1MyA1LjI1NjA1IDMuMTQyNDUgNS40MzE3OSAzLjMxODE5QzUuNjA3NTMgMy40OTM5MiA1Ljg5MjQ1IDMuNDkzOTIgNi4wNjgxOSAzLjMxODE5TDYuOTk5OTkgMi4zODYzOFY1LjQ5OTk5QzYuOTk5OTkgNS43NzYxMyA3LjIyMzg1IDUuOTk5OTkgNy40OTk5OSA1Ljk5OTk5QzcuNzc2MTMgNS45OTk5OSA3Ljk5OTk5IDUuNzc2MTMgNy45OTk5OSA1LjQ5OTk5VjIuMzg2MzhMOC45MzE3OSAzLjMxODE5QzkuMTA3NTMgMy40OTM5MiA5LjM5MjQ1IDMuNDkzOTIgOS41NjgxOSAzLjMxODE5QzkuNzQzOTIgMy4xNDI0NSA5Ljc0MzkyIDIuODU3NTMgOS41NjgxOSAyLjY4MTc5TDcuODE4MTkgMC45MzE3OVpNNy45OTk5OSA5LjQ5OTk5QzcuOTk5OTkgOS4yMjM4NSA3Ljc3NjEzIDguOTk5OTkgNy40OTk5OSA4Ljk5OTk5QzcuMjIzODUgOC45OTk5OSA2Ljk5OTk5IDkuMjIzODUgNi45OTk5OSA5LjQ5OTk5VjEyLjYxMzZMNi4wNjgxOSAxMS42ODE4QzUuODkyNDUgMTEuNTA2MSA1LjYwNzUzIDExLjUwNjEgNS40MzE3OSAxMS42ODE4QzUuMjU2MDUgMTEuODU3NSA1LjI1NjA1IDEyLjE0MjQgNS40MzE3OSAxMi4zMTgyTDcuMTgxNzkgMTQuMDY4MkM3LjM1NzUzIDE0LjI0MzkgNy42NDI0NSAxNC4yNDM5IDcuODE4MTkgMTQuMDY4Mkw5LjU2ODE5IDEyLjMxODJDOS43NDM5MiAxMi4xNDI0IDkuNzQzOTIgMTEuODU3NSA5LjU2ODE5IDExLjY4MThDOS4zOTI0NSAxMS41MDYxIDkuMTA3NTMgMTEuNTA2MSA4LjkzMTc5IDExLjY4MThMNy45OTk5OSAxMi42MTM2VjkuNDk5OTlaTTguOTk5OTkgNy40OTk5OUM4Ljk5OTk5IDcuMjIzODUgOS4yMjM4NSA2Ljk5OTk5IDkuNDk5OTkgNi45OTk5OUgxMi42MTM2TDExLjY4MTggNi4wNjgxOUMxMS41MDYxIDUuODkyNDUgMTEuNTA2MSA1LjYwNzUzIDExLjY4MTggNS40MzE3OUMxMS44NTc1IDUuMjU2MDUgMTIuMTQyNCA1LjI1NjA1IDEyLjMxODIgNS40MzE3OUwxNC4wNjgyIDcuMTgxNzlDMTQuMjQzOSA3LjM1NzUzIDE0LjI0MzkgNy42NDI0NSAxNC4wNjgyIDcuODE4MTlMMTIuMzE4MiA5LjU2ODE5QzEyLjE0MjQgOS43NDM5MiAxMS44NTc1IDkuNzQzOTIgMTEuNjgxOCA5LjU2ODE5QzExLjUwNjEgOS4zOTI0NSAxMS41MDYxIDkuMTA3NTMgMTEuNjgxOCA4LjkzMTc5TDEyLjYxMzYgNy45OTk5OUg5LjQ5OTk5QzkuMjIzODUgNy45OTk5OSA4Ljk5OTk5IDcuNzc2MTMgOC45OTk5OSA3LjQ5OTk5Wk0zLjMxODE5IDYuMDY4MTlMMi4zODYzOCA2Ljk5OTk5SDUuNDk5OTlDNS43NzYxMyA2Ljk5OTk5IDUuOTk5OTkgNy4yMjM4NSA1Ljk5OTk5IDcuNDk5OTlDNS45OTk5OSA3Ljc3NjEzIDUuNzc2MTMgNy45OTk5OSA1LjQ5OTk5IDcuOTk5OTlIMi4zODYzOEwzLjMxODE5IDguOTMxNzlDMy40OTM5MiA5LjEwNzUzIDMuNDkzOTIgOS4zOTI0NSAzLjMxODE5IDkuNTY4MTlDMy4xNDI0NSA5Ljc0MzkyIDIuODU3NTMgOS43NDM5MiAyLjY4MTc5IDkuNTY4MTlMMC45MzE3OSA3LjgxODE5QzAuNzU2MDU0IDcuNjQyNDUgMC43NTYwNTQgNy4zNTc1MyAwLjkzMTc5IDcuMTgxNzlMMi42ODE3OSA1LjQzMTc5QzIuODU3NTMgNS4yNTYwNSAzLjE0MjQ1IDUuMjU2MDUgMy4zMTgxOSA1LjQzMTc5QzMuNDkzOTIgNS42MDc1MyAzLjQ5MzkyIDUuODkyNDUgMy4zMTgxOSA2LjA2ODE5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMjU3ODEgMy4xMTY4NEMzLjY3NzcxIDMuNDU3OTYgMy44MzUyMyAzLjQzMTkzIDQuNjIzNjkgMy4zNzkzM0wxMi4wNTcxIDIuOTMyOTlDMTIuMjE0NyAyLjkzMjk5IDEyLjA4MzYgMi43NzU3MSAxMi4wMzExIDIuNzQ5NTdMMTAuNzk2NSAxLjg1NzExQzEwLjU2IDEuNjczNDcgMTAuMjQ0OCAxLjQ2MzE1IDkuNjQwODMgMS41MTU3NkwyLjQ0MzA4IDIuMDQwNzRDMi4xODA1OSAyLjA2Njc3IDIuMTI4MTUgMi4xOTgwMSAyLjIzMjcgMi4zMDMyMkwzLjI1NzgxIDMuMTE2ODRaTTMuNzA0MSA0Ljg0OTE3VjEyLjY3MDRDMy43MDQxIDEzLjA5MDcgMy45MTQxNSAxMy4yNDggNC4zODY5MyAxMy4yMjJMMTIuNTU2MiAxMi43NDkzQzEzLjAyOTIgMTIuNzIzMyAxMy4wODE5IDEyLjQzNDEgMTMuMDgxOSAxMi4wOTI3VjQuMzIzOTdDMTMuMDgxOSAzLjk4MzA2IDEyLjk1MDggMy43OTkyMSAxMi42NjEyIDMuODI1NDVMNC4xMjQyMiA0LjMyMzk3QzMuODA5MTggNC4zNTA0NCAzLjcwNDEgNC41MDgwMyAzLjcwNDEgNC44NDkxN1pNMTEuNzY4OCA1LjI2ODcyQzExLjgyMTIgNS41MDUxOCAxMS43Njg4IDUuNzQxNDIgMTEuNTMxOSA1Ljc2Nzk5TDExLjEzODMgNS44NDY0MVYxMS42MjA1QzEwLjc5NjUgMTEuODA0MiAxMC40ODE0IDExLjkwOTIgMTAuMjE4OCAxMS45MDkyQzkuNzk4MzUgMTEuOTA5MiA5LjY5MzA1IDExLjc3NzkgOS4zNzgxMiAxMS4zODQ0TDYuODAzNDUgNy4zNDI0OVYxMS4yNTMyTDcuNjE4MTYgMTEuNDM3QzcuNjE4MTYgMTEuNDM3IDcuNjE4MTYgMTEuOTA5MiA2Ljk2MDg2IDExLjkwOTJMNS4xNDg3OSAxMi4wMTQzQzUuMDk2MTUgMTEuOTA5MiA1LjE0ODc5IDExLjY0NyA1LjMzMjU5IDExLjU5NDRMNS44MDU0NiAxMS40NjM0VjYuMjkyNzZMNS4xNDg5IDYuMjQwMTVDNS4wOTYyNSA2LjAwMzY5IDUuMjI3MzkgNS42NjI3OCA1LjU5NTQgNS42MzYzMUw3LjUzOTM1IDUuNTA1MjhMMTAuMjE4OCA5LjU5OThWNS45Nzc2NUw5LjUzNTY0IDUuODk5MjRDOS40ODMyIDUuNjEwMTggOS42OTMwNSA1LjQwMDI4IDkuOTU1NzYgNS4zNzQyNUwxMS43Njg4IDUuMjY4NzJaTTEuODM4NzQgMS4zMzIxMkw5LjMyNTU3IDAuNzgwNzg3QzEwLjI0NSAwLjcwMTkzMiAxMC40ODE1IDAuNzU0NzUzIDExLjA1OTQgMS4xNzQ1MkwxMy40NDkyIDIuODU0MjRDMTMuODQzNiAzLjE0MzA5IDEzLjk3NSAzLjIyMTczIDEzLjk3NSAzLjUzNjYxVjEyLjc0OTNDMTMuOTc1IDEzLjMyNjYgMTMuNzY0NyAxMy42NjgxIDEzLjAyOTMgMTMuNzIwM0w0LjMzNDkyIDE0LjI0NTRDMy43ODI5MSAxNC4yNzE3IDMuNTIwMTkgMTQuMTkzIDMuMjMxMTEgMTMuODI1M0wxLjQ3MTE2IDExLjU0MTlDMS4xNTU4IDExLjEyMTYgMS4wMjQ2NiAxMC44MDcxIDEuMDI0NjYgMTAuNDM5MlYyLjI1MDQxQzEuMDI0NjYgMS43NzgyNSAxLjIzNTA0IDEuMzg0NDEgMS44Mzg3NCAxLjMzMjEyWlwiLGZpbGw6bn0pKX0sQm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAxLjVDNC41IDQuMjUgMyA2LjUgMyA5QzMgMTEuNDg1MyA1LjAxNDcyIDEzLjUgNy41IDEzLjVDOS45ODUyOCAxMy41IDEyIDExLjQ4NTMgMTIgOUMxMiA2LjUgMTAuNSA0LjI1IDcuNSAxLjVaTTExIDlDMTEgNy4xMTIwMyA5Ljk3MzE1IDUuMjcxOTUgNy41IDIuODczNTdDNS4wMjY4NiA1LjI3MTk1IDQgNy4xMTIwMyA0IDlDNCAxMC45MzMgNS41NjcgMTIuNSA3LjUgMTIuNUM5LjQzMyAxMi41IDExIDEwLjkzMyAxMSA5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNDk5ODUgMS4xMDAwMUMzLjI3ODk0IDEuMTAwMDEgMy4wOTk4NSAxLjI3OTA5IDMuMDk5ODUgMS41MDAwMUMzLjA5OTg1IDEuNzIwOTIgMy4yNzg5NCAxLjkwMDAxIDMuNDk5ODUgMS45MDAwMUgxMS40OTk5QzExLjcyMDggMS45MDAwMSAxMS44OTk5IDEuNzIwOTIgMTEuODk5OSAxLjUwMDAxQzExLjg5OTkgMS4yNzkwOSAxMS43MjA4IDEuMTAwMDEgMTEuNDk5OSAxLjEwMDAxSDMuNDk5ODVaTTQuOTk5OTUgNC4yNTAwMUM0Ljk5OTk1IDMuOTczODcgNC43NzYwOSAzLjc1MDAxIDQuNDk5OTUgMy43NTAwMUM0LjIyMzgxIDMuNzUwMDEgMy45OTk5NSAzLjk3Mzg3IDMuOTk5OTUgNC4yNTAwMVY5LjU1MDAxQzMuOTk5OTUgMTEuNDgzIDUuNTY2OTUgMTMuMDUgNy40OTk5NSAxMy4wNUM5LjQzMjk1IDEzLjA1IDExIDExLjQ4MyAxMSA5LjU1MDAxVjQuMjUwMDFDMTEgMy45NzM4NyAxMC43NzYxIDMuNzUwMDEgMTAuNSAzLjc1MDAxQzEwLjIyMzggMy43NTAwMSA5Ljk5OTk1IDMuOTczODcgOS45OTk5NSA0LjI1MDAxVjkuNTUwMDFDOS45OTk5NSAxMC45MzA3IDguODgwNjYgMTIuMDUgNy40OTk5NSAxMi4wNUM2LjExOTI0IDEyLjA1IDQuOTk5OTUgMTAuOTMwNyA0Ljk5OTk1IDkuNTUwMDFWNC4yNTAwMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFpuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjg1NzE0IDJIMTIuMTQyOUMxMi42MTYyIDIgMTMgMi4zODM3NiAxMyAyLjg1NzE0VjEyLjE0MjlDMTMgMTIuNjE2MiAxMi42MTYyIDEzIDEyLjE0MjkgMTNIMi44NTcxNEMyLjM4Mzc2IDEzIDIgMTIuNjE2MiAyIDEyLjE0MjlWMi44NTcxNEMyIDIuMzgzNzYgMi4zODM3NiAyIDIuODU3MTQgMlpNMSAyLjg1NzE0QzEgMS44MzE0NyAxLjgzMTQ3IDEgMi44NTcxNCAxSDEyLjE0MjlDMTMuMTY4NSAxIDE0IDEuODMxNDcgMTQgMi44NTcxNFYxMi4xNDI5QzE0IDEzLjE2ODUgMTMuMTY4NSAxNCAxMi4xNDI5IDE0SDIuODU3MTRDMS44MzE0NyAxNCAxIDEzLjE2ODUgMSAxMi4xNDI5VjIuODU3MTRaTTcuNDk5ODggNS4wMDAxMkM3Ljc3NjAyIDUuMDAwMTIgNy45OTk4OCA0Ljc3NjI2IDcuOTk5ODggNC41MDAxMkM3Ljk5OTg4IDQuMjIzOTggNy43NzYwMiA0LjAwMDEyIDcuNDk5ODggNC4wMDAxMkM3LjIyMzc0IDQuMDAwMTIgNi45OTk4OCA0LjIyMzk4IDYuOTk5ODggNC41MDAxMkM2Ljk5OTg4IDQuNzc2MjYgNy4yMjM3NCA1LjAwMDEyIDcuNDk5ODggNS4wMDAxMlpNNC40OTk4OCAxMS4wMDAxQzQuNzc2MDIgMTEuMDAwMSA0Ljk5OTg4IDEwLjc3NjMgNC45OTk4OCAxMC41MDAxQzQuOTk5ODggMTAuMjI0IDQuNzc2MDIgMTAuMDAwMSA0LjQ5OTg4IDEwLjAwMDFDNC4yMjM3NCAxMC4wMDAxIDMuOTk5ODggMTAuMjI0IDMuOTk5ODggMTAuNTAwMUMzLjk5OTg4IDEwLjc3NjMgNC4yMjM3NCAxMS4wMDAxIDQuNDk5ODggMTEuMDAwMVpNNC45OTk4OCA3LjUwMDEyQzQuOTk5ODggNy43NzYyNiA0Ljc3NjAyIDguMDAwMTIgNC40OTk4OCA4LjAwMDEyQzQuMjIzNzQgOC4wMDAxMiAzLjk5OTg4IDcuNzc2MjYgMy45OTk4OCA3LjUwMDEyQzMuOTk5ODggNy4yMjM5OCA0LjIyMzc0IDcuMDAwMTIgNC40OTk4OCA3LjAwMDEyQzQuNzc2MDIgNy4wMDAxMiA0Ljk5OTg4IDcuMjIzOTggNC45OTk4OCA3LjUwMDEyWk00LjQ5OTg4IDUuMDAwMTJDNC43NzYwMiA1LjAwMDEyIDQuOTk5ODggNC43NzYyNiA0Ljk5OTg4IDQuNTAwMTJDNC45OTk4OCA0LjIyMzk4IDQuNzc2MDIgNC4wMDAxMiA0LjQ5OTg4IDQuMDAwMTJDNC4yMjM3NCA0LjAwMDEyIDMuOTk5ODggNC4yMjM5OCAzLjk5OTg4IDQuNTAwMTJDMy45OTk4OCA0Ljc3NjI2IDQuMjIzNzQgNS4wMDAxMiA0LjQ5OTg4IDUuMDAwMTJaTTEwLjk5OTkgMTAuNTAwMUMxMC45OTk5IDEwLjc3NjMgMTAuNzc2IDExLjAwMDEgMTAuNDk5OSAxMS4wMDAxQzEwLjIyMzcgMTEuMDAwMSA5Ljk5OTg4IDEwLjc3NjMgOS45OTk4OCAxMC41MDAxQzkuOTk5ODggMTAuMjI0IDEwLjIyMzcgMTAuMDAwMSAxMC40OTk5IDEwLjAwMDFDMTAuNzc2IDEwLjAwMDEgMTAuOTk5OSAxMC4yMjQgMTAuOTk5OSAxMC41MDAxWk0xMC40OTk5IDguMDAwMTJDMTAuNzc2IDguMDAwMTIgMTAuOTk5OSA3Ljc3NjI2IDEwLjk5OTkgNy41MDAxMkMxMC45OTk5IDcuMjIzOTggMTAuNzc2IDcuMDAwMTIgMTAuNDk5OSA3LjAwMDEyQzEwLjIyMzcgNy4wMDAxMiA5Ljk5OTg4IDcuMjIzOTggOS45OTk4OCA3LjUwMDEyQzkuOTk5ODggNy43NzYyNiAxMC4yMjM3IDguMDAwMTIgMTAuNDk5OSA4LjAwMDEyWk0xMC45OTk5IDQuNTAwMTJDMTAuOTk5OSA0Ljc3NjI2IDEwLjc3NiA1LjAwMDEyIDEwLjQ5OTkgNS4wMDAxMkMxMC4yMjM3IDUuMDAwMTIgOS45OTk4OCA0Ljc3NjI2IDkuOTk5ODggNC41MDAxMkM5Ljk5OTg4IDQuMjIzOTggMTAuMjIzNyA0LjAwMDEyIDEwLjQ5OTkgNC4wMDAxMkMxMC43NzYgNC4wMDAxMiAxMC45OTk5IDQuMjIzOTggMTAuOTk5OSA0LjUwMDEyWk03LjQ5OTg4IDExLjAwMDFDNy43NzYwMiAxMS4wMDAxIDcuOTk5ODggMTAuNzc2MyA3Ljk5OTg4IDEwLjUwMDFDNy45OTk4OCAxMC4yMjQgNy43NzYwMiAxMC4wMDAxIDcuNDk5ODggMTAuMDAwMUM3LjIyMzc0IDEwLjAwMDEgNi45OTk4OCAxMC4yMjQgNi45OTk4OCAxMC41MDAxQzYuOTk5ODggMTAuNzc2MyA3LjIyMzc0IDExLjAwMDEgNy40OTk4OCAxMS4wMDAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sJG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuMjAzMDcgMS4wNDMxMkMxLjAwNDgxIDAuOTU0OTk4IDAuNzcyMzQgMS4wMDQ4IDAuNjI3NTc3IDEuMTY2NDFDMC40ODI4MTMgMS4zMjgwMiAwLjQ1ODc5NCAxLjU2NDU1IDAuNTY4MTE2IDEuNzUxOTZMMy45MjExNSA3LjUwMDAyTDAuNTY4MTE2IDEzLjI0ODFDMC40NTg3OTQgMTMuNDM1NSAwLjQ4MjgxMyAxMy42NzIgMC42Mjc1NzcgMTMuODMzNkMwLjc3MjM0IDEzLjk5NTIgMS4wMDQ4MSAxNC4wNDUgMS4yMDMwNyAxMy45NTY5TDE0LjcwMzEgNy45NTY5MkMxNC44ODM2IDcuODc2NjcgMTUgNy42OTc2MSAxNSA3LjUwMDAyQzE1IDcuMzAyNDIgMTQuODgzNiA3LjEyMzM2IDE0LjcwMzEgNy4wNDMxMUwxLjIwMzA3IDEuMDQzMTJaTTQuODQ1NTIgNy4xMDAwMkwyLjIxMjM0IDIuNTg2TDEzLjI2ODkgNy41MDAwMkwyLjIxMjM0IDEyLjQxNEw0Ljg0NTUyIDcuOTAwMDJIOUM5LjIyMDkxIDcuOTAwMDIgOS40IDcuNzIwOTQgOS40IDcuNTAwMDJDOS40IDcuMjc5MTEgOS4yMjA5MSA3LjEwMDAyIDkgNy4xMDAwMkg0Ljg0NTUyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuMDQ5OTUgMi43NDk5OEM2LjA0OTk1IDIuNDQ2MjMgNS44MDM3MSAyLjE5OTk4IDUuNDk5OTUgMi4xOTk5OEM1LjE5NjE5IDIuMTk5OTggNC45NDk5NSAyLjQ0NjIzIDQuOTQ5OTUgMi43NDk5OFYxMi4yNUM0Ljk0OTk1IDEyLjU1MzcgNS4xOTYxOSAxMi44IDUuNDk5OTUgMTIuOEM1LjgwMzcxIDEyLjggNi4wNDk5NSAxMi41NTM3IDYuMDQ5OTUgMTIuMjVWMi43NDk5OFpNMTAuMDUgMi43NDk5OEMxMC4wNSAyLjQ0NjIzIDkuODAzNzEgMi4xOTk5OCA5LjQ5OTk1IDIuMTk5OThDOS4xOTYxOSAyLjE5OTk4IDguOTQ5OTUgMi40NDYyMyA4Ljk0OTk1IDIuNzQ5OThWMTIuMjVDOC45NDk5NSAxMi41NTM3IDkuMTk2MTkgMTIuOCA5LjQ5OTk1IDEyLjhDOS44MDM3MSAxMi44IDEwLjA1IDEyLjU1MzcgMTAuMDUgMTIuMjVWMi43NDk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS44NTM2IDEuMTQ2NDVDMTEuNjU4MyAwLjk1MTE4NCAxMS4zNDE3IDAuOTUxMTg0IDExLjE0NjUgMS4xNDY0NUwzLjcxNDU1IDguNTc4MzZDMy42MjQ1OSA4LjY2ODMyIDMuNTUyNjMgOC43NzQ2MSAzLjUwMjUxIDguODkxNTVMMi4wNDA0NCAxMi4zMDNDMS45NTk5IDEyLjQ5MSAyLjAwMTg5IDEyLjcwOSAyLjE0NjQ2IDEyLjg1MzZDMi4yOTEwMyAxMi45OTgxIDIuNTA5MDUgMTMuMDQwMSAyLjY5Njk3IDEyLjk1OTZMNi4xMDg0NyAxMS40OTc1QzYuMjI1NCAxMS40NDc0IDYuMzMxNyAxMS4zNzU0IDYuNDIxNjYgMTEuMjg1NUwxMy44NTM2IDMuODUzNTVDMTQuMDQ4OCAzLjY1ODI5IDE0LjA0ODggMy4zNDE3MSAxMy44NTM2IDMuMTQ2NDVMMTEuODUzNiAxLjE0NjQ1Wk00LjQyMTY2IDkuMjg1NDdMMTEuNSAyLjIwNzExTDEyLjc5MjkgMy41TDUuNzE0NTUgMTAuNTc4NEw0LjIxOTI0IDExLjIxOTJMMy43ODA4MSAxMC43ODA4TDQuNDIxNjYgOS4yODU0N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFVuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi4xNDY0IDEuMTQ2NDVDMTIuMzQxNyAwLjk1MTE4NCAxMi42NTgzIDAuOTUxMTg0IDEyLjg1MzUgMS4xNDY0NUwxNC44NTM1IDMuMTQ2NDVDMTUuMDQ4OCAzLjM0MTcxIDE1LjA0ODggMy42NTgyOSAxNC44NTM1IDMuODUzNTVMMTAuOTEwOSA3Ljc5NjE4QzEwLjgzNDkgNy44NzIxOCAxMC43NDcxIDcuOTM1NDMgMTAuNjUxIDcuOTgzNUw2LjcyMzU5IDkuOTQ3MjFDNi41MzEwOSAxMC4wNDM1IDYuMjk4NjEgMTAuMDA1NyA2LjE0NjQzIDkuODUzNTVDNS45OTQyNSA5LjcwMTM3IDUuOTU2NTIgOS40Njg4OSA2LjA1Mjc3IDkuMjc2MzlMOC4wMTY0OCA1LjM0ODk3QzguMDY0NTUgNS4yNTI4MyA4LjEyNzggNS4xNjUwNyA4LjIwMzggNS4wODkwN0wxMi4xNDY0IDEuMTQ2NDVaTTEyLjUgMi4yMDcxMUw4LjkxMDkxIDUuNzk2MThMNy44NzI2NiA3Ljg3MjY3TDguMTI3MzEgOC4xMjczMkwxMC4yMDM4IDcuMDg5MDdMMTMuNzkyOSAzLjVMMTIuNSAyLjIwNzExWk05Ljk5OTk4IDJMOC45OTk5OCAzSDQuOUM0LjQ3MTcxIDMgNC4xODA1NiAzLjAwMDM5IDMuOTU1NTIgMy4wMTg3N0MzLjczNjMxIDMuMDM2NjggMy42MjQyMSAzLjA2OTE1IDMuNTQ2MDEgMy4xMDg5OUMzLjM1Nzg1IDMuMjA0ODcgMy4yMDQ4NyAzLjM1Nzg1IDMuMTA4OTkgMy41NDYwMUMzLjA2OTE1IDMuNjI0MjEgMy4wMzY2OSAzLjczNjMxIDMuMDE4NzggMy45NTU1MkMzLjAwMDM5IDQuMTgwNTYgMyA0LjQ3MTcxIDMgNC45VjExLjFDMyAxMS41MjgzIDMuMDAwMzkgMTEuODE5NCAzLjAxODc4IDEyLjA0NDVDMy4wMzY2OSAxMi4yNjM3IDMuMDY5MTUgMTIuMzc1OCAzLjEwODk5IDEyLjQ1NEMzLjIwNDg3IDEyLjY0MjIgMy4zNTc4NSAxMi43OTUxIDMuNTQ2MDEgMTIuODkxQzMuNjI0MjEgMTIuOTMwOSAzLjczNjMxIDEyLjk2MzMgMy45NTU1MiAxMi45ODEyQzQuMTgwNTYgMTIuOTk5NiA0LjQ3MTcxIDEzIDQuOSAxM0gxMS4xQzExLjUyODMgMTMgMTEuODE5NCAxMi45OTk2IDEyLjA0NDUgMTIuOTgxMkMxMi4yNjM3IDEyLjk2MzMgMTIuMzc1OCAxMi45MzA5IDEyLjQ1NCAxMi44OTFDMTIuNjQyMiAxMi43OTUxIDEyLjc5NTEgMTIuNjQyMiAxMi44OTEgMTIuNDU0QzEyLjkzMDkgMTIuMzc1OCAxMi45NjMzIDEyLjI2MzcgMTIuOTgxMiAxMi4wNDQ1QzEyLjk5OTYgMTEuODE5NCAxMyAxMS41MjgzIDEzIDExLjFWNi45OTk5OEwxNCA1Ljk5OTk4VjExLjFWMTEuMTIwN0MxNCAxMS41MjMxIDE0IDExLjg1NTMgMTMuOTc3OSAxMi4xMjU5QzEzLjk1NDkgMTIuNDA3IDEzLjkwNTcgMTIuNjY1MyAxMy43ODIgMTIuOTA4QzEzLjU5MDMgMTMuMjg0MyAxMy4yODQzIDEzLjU5MDMgMTIuOTA4IDEzLjc4MkMxMi42NjUzIDEzLjkwNTcgMTIuNDA3IDEzLjk1NDkgMTIuMTI1OSAxMy45Nzc5QzExLjg1NTMgMTQgMTEuNTIzMSAxNCAxMS4xMjA3IDE0SDExLjFINC45SDQuODc5MzRDNC40NzY4NiAxNCA0LjE0NDY4IDE0IDMuODc0MDkgMTMuOTc3OUMzLjU5MzA0IDEzLjk1NDkgMy4zMzQ2OSAxMy45MDU3IDMuMDkyMDIgMTMuNzgyQzIuNzE1NyAxMy41OTAzIDIuNDA5NzMgMTMuMjg0MyAyLjIxNzk5IDEyLjkwOEMyLjA5NDM0IDEyLjY2NTMgMi4wNDUwNiAxMi40MDcgMi4wMjIxIDEyLjEyNTlDMS45OTk5OSAxMS44NTUzIDEuOTk5OTkgMTEuNTIzMSAyIDExLjEyMDdWMTEuMTIwNlYxMS4xVjQuOVY0Ljg3OTM1VjQuODc5MzJWNC44NzkzMUMxLjk5OTk5IDQuNDc2ODUgMS45OTk5OSA0LjE0NDY4IDIuMDIyMSAzLjg3NDA5QzIuMDQ1MDYgMy41OTMwNCAyLjA5NDM0IDMuMzM0NjkgMi4yMTc5OSAzLjA5MjAyQzIuNDA5NzMgMi43MTU2OSAyLjcxNTcgMi40MDk3MyAzLjA5MjAyIDIuMjE3OTlDMy4zMzQ2OSAyLjA5NDM0IDMuNTkzMDQgMi4wNDUwNiAzLjg3NDA5IDIuMDIyMUM0LjE0NDY4IDEuOTk5OTkgNC40NzY4NSAxLjk5OTk5IDQuODc5MzIgMkg0Ljg3OTM1SDQuOUg5Ljk5OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sV249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAwLjg3NUM1LjQ5Nzk3IDAuODc1IDMuODc1IDIuNDk3OTcgMy44NzUgNC41QzMuODc1IDYuMTUyODggNC45ODEyNCA3LjU0NzM4IDYuNDkzNzMgNy45ODM1MUM1LjI5OTcgOC4xMjkwMSA0LjI3NTU3IDguNTUxMzQgMy41MDQwNyA5LjMxMTY3QzIuNTIyMTYgMTAuMjc5NCAyLjAyNTAyIDExLjcyIDIuMDI1MDIgMTMuNTk5OUMyLjAyNTAyIDEzLjg2MjMgMi4yMzc2OSAxNC4wNzQ5IDIuNTAwMDIgMTQuMDc0OUMyLjc2MjM2IDE0LjA3NDkgMi45NzUwMiAxMy44NjIzIDIuOTc1MDIgMTMuNTk5OUMyLjk3NTAyIDExLjg3OTkgMy40Mjc4NiAxMC43MjA2IDQuMTcwOTEgOS45ODgzQzQuOTE1MzYgOS4yNTQ2MyA2LjAyNjc0IDguODc0OTkgNy40OTk5NSA4Ljg3NDk5QzguOTczMTcgOC44NzQ5OSAxMC4wODQ2IDkuMjU0NjMgMTAuODI5MSA5Ljk4ODMxQzExLjU3MjEgMTAuNzIwNiAxMi4wMjUgMTEuODc5OSAxMi4wMjUgMTMuNTk5OUMxMi4wMjUgMTMuODYyMyAxMi4yMzc2IDE0LjA3NDkgMTIuNSAxNC4wNzQ5QzEyLjc2MjMgMTQuMDc1IDEyLjk3NSAxMy44NjIzIDEyLjk3NSAxMy42QzEyLjk3NSAxMS43MiAxMi40Nzc4IDEwLjI3OTQgMTEuNDk1OSA5LjMxMTY2QzEwLjcyNDQgOC41NTEzNSA5LjcwMDI1IDguMTI5MDMgOC41MDYyNSA3Ljk4MzUyQzEwLjAxODcgNy41NDc0IDExLjEyNSA2LjE1Mjg5IDExLjEyNSA0LjVDMTEuMTI1IDIuNDk3OTcgOS41MDIwMyAwLjg3NSA3LjUgMC44NzVaTTQuODI1IDQuNUM0LjgyNSAzLjAyMjY0IDYuMDIyNjQgMS44MjUgNy41IDEuODI1QzguOTc3MzYgMS44MjUgMTAuMTc1IDMuMDIyNjQgMTAuMTc1IDQuNUMxMC4xNzUgNS45NzczNiA4Ljk3NzM2IDcuMTc1IDcuNSA3LjE3NUM2LjAyMjY0IDcuMTc1IDQuODI1IDUuOTc3MzYgNC44MjUgNC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sem49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuODUwMDEgNy41MDA0M0MxLjg1MDAxIDQuMzc5NzUgNC4zNzk2MyAxLjg1MDAxIDcuNTAwMDEgMS44NTAwMUMxMC42MjA0IDEuODUwMDEgMTMuMTUgNC4zNzk3NSAxMy4xNSA3LjUwMDQzQzEzLjE1IDEwLjYyMTEgMTAuNjIwNCAxMy4xNTA5IDcuNTAwMDEgMTMuMTUwOUM0LjM3OTYzIDEzLjE1MDkgMS44NTAwMSAxMC42MjExIDEuODUwMDEgNy41MDA0M1pNNy41MDAwMSAwLjg1MDAwNkMzLjgyNzI4IDAuODUwMDA2IDAuODUwMDA2IDMuODI3NTMgMC44NTAwMDYgNy41MDA0M0MwLjg1MDAwNiAxMS4xNzMzIDMuODI3MjggMTQuMTUwOSA3LjUwMDAxIDE0LjE1MDlDMTEuMTcyNyAxNC4xNTA5IDE0LjE1IDExLjE3MzMgMTQuMTUgNy41MDA0M0MxNC4xNSAzLjgyNzUzIDExLjE3MjcgMC44NTAwMDYgNy41MDAwMSAwLjg1MDAwNlpNNy4wMDAwMSA4LjAwMDAxVjMuMTI4MTFDNy4xNjQxMSAzLjEwOTU0IDcuMzMwOTQgMy4xMDAwMSA3LjUwMDAxIDMuMTAwMDFDOS45MzAwNiAzLjEwMDAxIDExLjkgNS4wNzAxNCAxMS45IDcuNTAwNDNDMTEuOSA3LjY2OTM1IDExLjg5MDUgNy44MzYwNCAxMS44NzIgOC4wMDAwMUg3LjAwMDAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sR249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgNS41QzMgNy45ODMgNC45OTE2OSA5IDcgOVYxMi41QzcgMTIuNzc2MSA3LjIyMzg2IDEzIDcuNSAxM0M3Ljc3NjE0IDEzIDggMTIuNzc2MSA4IDEyLjVWOVYzLjFIOVYxMi41QzkgMTIuNzc2MSA5LjIyMzg2IDEzIDkuNSAxM0M5Ljc3NjE0IDEzIDEwIDEyLjc3NjEgMTAgMTIuNVYzLjFIMTEuNUMxMS44MDM4IDMuMSAxMi4wNSAyLjg1Mzc2IDEyLjA1IDIuNTVDMTIuMDUgMi4yNDYyNCAxMS44MDM4IDIgMTEuNSAySDkuNUg4SDcuNUg3QzQuOTkxNjkgMiAzIDMuMDE3IDMgNS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjUgMTMuOTVDMTMuNzQ4NSAxMy45NSAxMy45NSAxMy43NDg1IDEzLjk1IDEzLjVDMTMuOTUgMTMuMjUxNCAxMy43NDg1IDEzLjA1IDEzLjUgMTMuMDVMMS40OTk5NSAxMy4wNUMxLjI1MTQyIDEzLjA1IDEuMDQ5OTUgMTMuMjUxNCAxLjA0OTk1IDEzLjVDMS4wNDk5NSAxMy43NDg1IDEuMjUxNDIgMTMuOTUgMS40OTk5NSAxMy45NUwxMy41IDEzLjk1Wk0xMS4wNjgxIDcuNTY4M0MxMS4yNDM5IDcuMzkyNTcgMTEuMjQzOSA3LjEwNzY0IDExLjA2ODEgNi45MzE5MUMxMC44OTI0IDYuNzU2MTcgMTAuNjA3NSA2Ljc1NjE3IDEwLjQzMTcgNi45MzE5MUw3Ljk0OTkzIDkuNDEzNzFMNy45NDk5MyAxLjQ5OTk4QzcuOTQ5OTMgMS4yNTE0NiA3Ljc0ODQ2IDEuMDQ5OTggNy40OTk5MyAxLjA0OTk4QzcuMjUxNCAxLjA0OTk4IDcuMDQ5OTMgMS4yNTE0NiA3LjA0OTkzIDEuNDk5OThMNy4wNDk5MyA5LjQxMzcxTDQuNTY4MTMgNi45MzE5MUM0LjM5MjM5IDYuNzU2MTcgNC4xMDc0NiA2Ljc1NjE3IDMuOTMxNzMgNi45MzE5MUMzLjc1NTk5IDcuMTA3NjQgMy43NTU5OSA3LjM5MjU3IDMuOTMxNzMgNy41NjgzTDcuMTgxNzMgMTAuODE4M0M3LjM1NzQ2IDEwLjk5NCA3LjY0MjM5IDEwLjk5NCA3LjgxODEyIDEwLjgxODNMMTEuMDY4MSA3LjU2ODNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxZbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi4wNTAwNSAxMy41QzIuMDUwMDUgMTMuNzQ4NSAyLjI1MTUyIDEzLjk1IDIuNTAwMDUgMTMuOTVDMi43NDg1OCAxMy45NSAyLjk1MDA1IDEzLjc0ODUgMi45NTAwNSAxMy41TDIuOTUwMDUgMS40OTk5NUMyLjk1MDA1IDEuMjUxNDIgMi43NDg1OCAxLjA0OTk1IDIuNTAwMDUgMS4wNDk5NUMyLjI1MTUyIDEuMDQ5OTUgMi4wNTAwNSAxLjI1MTQyIDIuMDUwMDUgMS40OTk5NUwyLjA1MDA1IDEzLjVaTTguNDMxNyAxMS4wNjgxQzguNjA3NDMgMTEuMjQzOSA4Ljg5MjM2IDExLjI0MzkgOS4wNjgwOSAxMS4wNjgxQzkuMjQzODMgMTAuODkyNCA5LjI0MzgzIDEwLjYwNzUgOS4wNjgwOSAxMC40MzE3TDYuNTg2MjkgNy45NDk5M0wxNC41IDcuOTQ5OTNDMTQuNzQ4NSA3Ljk0OTkzIDE0Ljk1IDcuNzQ4NDYgMTQuOTUgNy40OTk5M0MxNC45NSA3LjI1MTQgMTQuNzQ4NSA3LjA0OTkzIDE0LjUgNy4wNDk5M0w2LjU4NjI5IDcuMDQ5OTNMOS4wNjgwOSA0LjU2ODEzQzkuMjQzODMgNC4zOTIzOSA5LjI0MzgzIDQuMTA3NDYgOS4wNjgwOSAzLjkzMTczQzguODkyMzYgMy43NTU5OSA4LjYwNzQzIDMuNzU1OTkgOC40MzE3IDMuOTMxNzNMNS4xODE3IDcuMTgxNzNDNS4wMDU5NiA3LjM1NzQ2IDUuMDA1OTYgNy42NDIzOSA1LjE4MTcgNy44MTgxMkw4LjQzMTcgMTEuMDY4MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEtuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi45NSAxLjUwMDA1QzEyLjk1IDEuMjUxNTIgMTIuNzQ4NSAxLjA1MDA1IDEyLjUgMS4wNTAwNUMxMi4yNTE0IDEuMDUwMDUgMTIuMDUgMS4yNTE1MiAxMi4wNSAxLjUwMDA1TDEyLjA1IDEzLjVDMTIuMDUgMTMuNzQ4NiAxMi4yNTE0IDEzLjk1IDEyLjUgMTMuOTVDMTIuNzQ4NSAxMy45NSAxMi45NSAxMy43NDg2IDEyLjk1IDEzLjVMMTIuOTUgMS41MDAwNVpNNi41NjgzIDMuOTMxODhDNi4zOTI1NyAzLjc1NjE0IDYuMTA3NjQgMy43NTYxNCA1LjkzMTkxIDMuOTMxODhDNS43NTYxNyA0LjEwNzYxIDUuNzU2MTcgNC4zOTI1NCA1LjkzMTkxIDQuNTY4MjdMOC40MTM3MSA3LjA1MDA3TDAuNDk5OTg0IDcuMDUwMDdDMC4yNTE0NTYgNy4wNTAwNyAwLjA0OTk4NDcgNy4yNTE1NSAwLjA0OTk4NDcgNy41MDAwN0MwLjA0OTk4NDYgNy43NDg2IDAuMjUxNDU3IDcuOTUwMDcgMC40OTk5ODQgNy45NTAwN0w4LjQxMzcxIDcuOTUwMDdMNS45MzE5MSAxMC40MzE5QzUuNzU2MTcgMTAuNjA3NiA1Ljc1NjE3IDEwLjg5MjUgNS45MzE5MSAxMS4wNjgzQzYuMTA3NjQgMTEuMjQ0IDYuMzkyNTcgMTEuMjQ0IDYuNTY4MzEgMTEuMDY4M0w5LjgxODMgNy44MTgyN0M5Ljk5NDA0IDcuNjQyNTQgOS45OTQwNCA3LjM1NzYxIDkuODE4MyA3LjE4MTg4TDYuNTY4MyAzLjkzMTg4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNTAwMDUgMS4wNTAwNUMxLjI1MTUyIDEuMDUwMDUgMS4wNTAwNSAxLjI1MTUyIDEuMDUwMDUgMS41MDAwNUMxLjA1MDA1IDEuNzQ4NTggMS4yNTE1MiAxLjk1MDA1IDEuNTAwMDUgMS45NTAwNUwxMy41IDEuOTUwMDVDMTMuNzQ4NiAxLjk1MDA1IDEzLjk1IDEuNzQ4NTggMTMuOTUgMS41MDAwNUMxMy45NSAxLjI1MTUyIDEzLjc0ODYgMS4wNTAwNSAxMy41IDEuMDUwMDVIMS41MDAwNVpNMy45MzE4OCA3LjQzMTY5QzMuNzU2MTQgNy42MDc0MyAzLjc1NjE0IDcuODkyMzYgMy45MzE4OCA4LjA2ODA5QzQuMTA3NjEgOC4yNDM4MyA0LjM5MjU0IDguMjQzODMgNC41NjgyNyA4LjA2ODA5TDcuMDUwMDcgNS41ODYyOVYxMy41QzcuMDUwMDcgMTMuNzQ4NSA3LjI1MTU1IDEzLjk1IDcuNTAwMDcgMTMuOTVDNy43NDg2IDEzLjk1IDcuOTUwMDcgMTMuNzQ4NSA3Ljk1MDA3IDEzLjVMNy45NTAwNyA1LjU4NjI5TDEwLjQzMTkgOC4wNjgwOUMxMC42MDc2IDguMjQzODMgMTAuODkyNSA4LjI0MzgzIDExLjA2ODMgOC4wNjgwOUMxMS4yNDQgNy44OTIzNSAxMS4yNDQgNy42MDc0MyAxMS4wNjgzIDcuNDMxNjlMNy44MTgyNyA0LjE4MTY5QzcuNjQyNTQgNC4wMDU5NiA3LjM1NzYxIDQuMDA1OTYgNy4xODE4OCA0LjE4MTY5TDMuOTMxODggNy40MzE2OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEpuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjI0MTgyIDIuMzIxODFDMy4zOTE5IDIuMjMxMzIgMy41Nzg0IDIuMjI2MDEgMy43MzMzOCAyLjMwNzgxTDEyLjczMzQgNy4wNTc4MUMxMi44OTc0IDcuMTQ0MzYgMTMgNy4zMTQ1NyAxMyA3LjVDMTMgNy42ODU0MyAxMi44OTc0IDcuODU1NjQgMTIuNzMzNCA3Ljk0MjE5TDMuNzMzMzggMTIuNjkyMkMzLjU3ODQgMTIuNzc0IDMuMzkxOSAxMi43Njg3IDMuMjQxODIgMTIuNjc4MkMzLjA5MTc1IDEyLjU4NzcgMyAxMi40MjUyIDMgMTIuMjVWMi43NUMzIDIuNTc0NzYgMy4wOTE3NSAyLjQxMjMgMy4yNDE4MiAyLjMyMTgxWk00IDMuNTc5MjVWMTEuNDIwN0wxMS40Mjg4IDcuNUw0IDMuNTc5MjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxRbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOCAyLjc1QzggMi40NzM4NiA3Ljc3NjE0IDIuMjUgNy41IDIuMjVDNy4yMjM4NiAyLjI1IDcgMi40NzM4NiA3IDIuNzVWN0gyLjc1QzIuNDczODYgNyAyLjI1IDcuMjIzODYgMi4yNSA3LjVDMi4yNSA3Ljc3NjE0IDIuNDczODYgOCAyLjc1IDhIN1YxMi4yNUM3IDEyLjUyNjEgNy4yMjM4NiAxMi43NSA3LjUgMTIuNzVDNy43NzYxNCAxMi43NSA4IDEyLjUyNjEgOCAxMi4yNVY4SDEyLjI1QzEyLjUyNjEgOCAxMi43NSA3Ljc3NjE0IDEyLjc1IDcuNUMxMi43NSA3LjIyMzg2IDEyLjUyNjEgNyAxMi4yNSA3SDhWMi43NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGVyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc2ODkyQzMuODQyMjIgMC44NzY4OTIgMC44NzcwNzUgMy44NDIwNCAwLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDExLjE1NzQgMy44NDIyMiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMxMS4xNTc2IDE0LjEyMjYgMTQuMTIyNyAxMS4xNTc0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDMuODQyMDQgMTEuMTU3NiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyWk0xLjgyNzA3IDcuNDk5NzJDMS44MjcwNyA0LjM2NjcxIDQuMzY2ODkgMS44MjY4OSA3LjQ5OTkxIDEuODI2ODlDMTAuNjMyOSAxLjgyNjg5IDEzLjE3MjcgNC4zNjY3MSAxMy4xNzI3IDcuNDk5NzJDMTMuMTcyNyAxMC42MzI3IDEwLjYzMjkgMTMuMTcyNiA3LjQ5OTkxIDEzLjE3MjZDNC4zNjY4OSAxMy4xNzI2IDEuODI3MDcgMTAuNjMyNyAxLjgyNzA3IDcuNDk5NzJaTTcuNTAwMDMgNEM3Ljc3NjE3IDQgOC4wMDAwMyA0LjIyMzg2IDguMDAwMDMgNC41VjdIMTAuNUMxMC43NzYyIDcgMTEgNy4yMjM4NiAxMSA3LjVDMTEgNy43NzYxNCAxMC43NzYyIDggMTAuNSA4SDguMDAwMDNWMTAuNUM4LjAwMDAzIDEwLjc3NjEgNy43NzYxNyAxMSA3LjUwMDAzIDExQzcuMjIzODkgMTEgNy4wMDAwMyAxMC43NzYxIDcuMDAwMDMgMTAuNVY4SDQuNTAwMDNDNC4yMjM4OSA4IDQuMDAwMDMgNy43NzYxNCA0LjAwMDAzIDcuNUM0LjAwMDAzIDcuMjIzODYgNC4yMjM4OSA3IDQuNTAwMDMgN0g3LjAwMDAzVjQuNUM3LjAwMDAzIDQuMjIzODYgNy4yMjM4OSA0IDcuNTAwMDMgNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHRyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjA3NTA1IDQuMTAwMDFDNS4wNzUwNSAyLjkxMTAzIDYuMjU3MjcgMS45MjUwMiA3LjUwMDA1IDEuOTI1MDJDOC43NDI4MyAxLjkyNTAyIDkuOTI1MDUgMi45MTEwMyA5LjkyNTA1IDQuMTAwMDFDOS45MjUwNSA1LjE5ODYxIDkuMzY3ODIgNS43MTQzNiA4LjYxODU0IDYuMzc4ODRMOC41ODc1NyA2LjQwNjNDNy44NDQ4MSA3LjA2NDY3IDYuOTI1MDUgNy44Nzk5NSA2LjkyNTA1IDkuNUM2LjkyNTA1IDkuODE3NTcgNy4xODI0OCAxMC4wNzUgNy41MDAwNSAxMC4wNzVDNy44MTc2MSAxMC4wNzUgOC4wNzUwNSA5LjgxNzU3IDguMDc1MDUgOS41QzguMDc1MDUgOC40MTUxNyA4LjYyOTQ1IDcuOTA2MjMgOS4zODE1NiA3LjIzOTI1TDkuNDAyMzggNy4yMjA3OUMxMC4xNDk2IDYuNTU4MjkgMTEuMDc1IDUuNzM3NzUgMTEuMDc1IDQuMTAwMDFDMTEuMDc1IDIuMTI3NTcgOS4yMTg2OSAwLjc3NTAyNCA3LjUwMDA1IDAuNzc1MDI0QzUuNzgxNCAwLjc3NTAyNCAzLjkyNTA1IDIuMTI3NTcgMy45MjUwNSA0LjEwMDAxQzMuOTI1MDUgNC40MTc1OCA0LjE4MjQ5IDQuNjc1MDEgNC41MDAwNSA0LjY3NTAxQzQuODE3NjEgNC42NzUwMSA1LjA3NTA1IDQuNDE3NTggNS4wNzUwNSA0LjEwMDAxWk03LjUwMDA1IDEzLjM1NzVDNy45ODMzIDEzLjM1NzUgOC4zNzUwNSAxMi45NjU3IDguMzc1MDUgMTIuNDgyNUM4LjM3NTA1IDExLjk5OTIgNy45ODMzIDExLjYwNzUgNy41MDAwNSAxMS42MDc1QzcuMDE2OCAxMS42MDc1IDYuNjI1MDUgMTEuOTk5MiA2LjYyNTA1IDEyLjQ4MjVDNi42MjUwNSAxMi45NjU3IDcuMDE2OCAxMy4zNTc1IDcuNTAwMDUgMTMuMzU3NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG5yPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDMuODQyMDQgMy44NDIyMiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyQzExLjE1NzYgMC44NzY4OTIgMTQuMTIyNyAzLjg0MjA0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDExLjE1NzQgMTEuMTU3NiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMzLjg0MjIyIDE0LjEyMjYgMC44NzcwNzUgMTEuMTU3NCAwLjg3NzA3NSA3LjQ5OTcyWk03LjQ5OTkxIDEuODI2ODlDNC4zNjY4OSAxLjgyNjg5IDEuODI3MDggNC4zNjY3MSAxLjgyNzA4IDcuNDk5NzJDMS44MjcwOCAxMC42MzI3IDQuMzY2ODkgMTMuMTcyNiA3LjQ5OTkxIDEzLjE3MjZDMTAuNjMyOSAxMy4xNzI2IDEzLjE3MjcgMTAuNjMyNyAxMy4xNzI3IDcuNDk5NzJDMTMuMTcyNyA0LjM2NjcxIDEwLjYzMjkgMS44MjY4OSA3LjQ5OTkxIDEuODI2ODlaTTguMjQ5OTMgMTAuNUM4LjI0OTkzIDEwLjkxNDIgNy45MTQxNCAxMS4yNSA3LjQ5OTkzIDExLjI1QzcuMDg1NzEgMTEuMjUgNi43NDk5MyAxMC45MTQyIDYuNzQ5OTMgMTAuNUM2Ljc0OTkzIDEwLjA4NTggNy4wODU3MSA5Ljc1IDcuNDk5OTMgOS43NUM3LjkxNDE0IDkuNzUgOC4yNDk5MyAxMC4wODU4IDguMjQ5OTMgMTAuNVpNNi4wNTAwMyA2LjI1QzYuMDUwMDMgNS41NzIxMSA2LjYzNTExIDQuOTI1IDcuNTAwMDMgNC45MjVDOC4zNjQ5NiA0LjkyNSA4Ljk1MDAzIDUuNTcyMTEgOC45NTAwMyA2LjI1QzguOTUwMDMgNi43NDExOCA4LjY4MDAyIDYuOTkyMTIgOC4yMTQ0NyA3LjI3NDk0QzguMTYyNTEgNy4zMDY1MSA4LjEwMjU4IDcuMzQxMzEgOC4wMzg0NyA3LjM3ODU0TDguMDM4NDEgNy4zNzg1OEM3Ljg1NTIxIDcuNDg0OTcgNy42Mzc4OCA3LjYxMTE5IDcuNDc0NDkgNy43Mzg0OUM3LjIzMjE0IDcuOTI3MzIgNi45NTAwMyA4LjIzMTk4IDYuOTUwMDMgOC43QzYuOTUwMDQgOS4wMDM3NiA3LjE5NjI4IDkuMjUgNy41MDAwNCA5LjI1QzcuODAyNCA5LjI1IDguMDQ3NzggOS4wMDYwMSA4LjA1MDAyIDguNzA0MTdMOC4wNTA1NiA4LjcwMzNDOC4wNTkyNCA4LjY4OTYgOC4wODQ5MyA4LjY1NzM1IDguMTUwNTggOC42MDYyQzguMjUyMDcgOC41MjcxMiA4LjM2NTA4IDguNDYxNjMgOC41MTU2NyA4LjM3NDM2TDguNTE1NzEgOC4zNzQzM0M4LjU5NDIyIDguMzI4ODMgOC42ODI5NiA4LjI3NzQxIDguNzg1NTkgOC4yMTUwNkM5LjMyMDA0IDcuODkwMzggMTAuMDUgNy4zNTM4MiAxMC4wNSA2LjI1QzEwLjA1IDQuOTI3ODkgOC45MzUxMSAzLjgyNSA3LjUwMDAzIDMuODI1QzYuMDY0OTYgMy44MjUgNC45NTAwMyA0LjkyNzg5IDQuOTUwMDMgNi4yNUM0Ljk1MDAzIDYuNTUzNzYgNS4xOTYyOCA2LjggNS41MDAwMyA2LjhDNS44MDM3OSA2LjggNi4wNTAwMyA2LjU1Mzc2IDYuMDUwMDMgNi4yNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHJyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05LjQyNTAzIDMuNDQxMzZDMTAuMDU2MSAzLjIzNjU0IDEwLjc4MzcgMy4yNDAyIDExLjM3OTIgMy41NDYyM0MxMi43NTMyIDQuMjUyMjQgMTMuMzQ3NyA2LjA3MTkxIDEyLjc5NDYgOEMxMi41NDY1IDguODY0OSAxMi4xMTAyIDkuNzA0NzIgMTEuMTg2MSAxMC41NTI0QzEwLjI2MiAxMS40IDguOTgwMzQgMTEuOSA4LjM4NTcxIDExLjlDOC4xNzI2OSAxMS45IDggMTEuNzMyMSA4IDExLjUyNUM4IDExLjMxNzkgOC4xNzY0NCAxMS4xNSA4LjM4NTcxIDExLjE1QzkuMDY0OTcgMTEuMTUgOS42NzE4OSAxMC43ODA0IDEwLjM5MDYgMTAuMjM2QzEwLjk0MDYgOS44MTkzIDExLjM3MDEgOS4yODYzMyAxMS42MDggOC44MjE5MUMxMi4wNjI4IDcuOTMzNjcgMTIuMDc4MiA2LjY4MTc0IDExLjM0MzMgNi4zNDkwMUMxMC45OTA0IDYuNzM0NTUgMTAuNTI5NSA2Ljk1OTQ2IDkuOTc3MjUgNi45NTk0NkM4Ljc3NzMgNi45NTk0NiA4LjA3MDEgNS45OTQxMiA4LjEwMDUxIDUuMTIwMDlDOC4xMjk1NyA0LjI4NDc0IDguNjYwMzIgMy42ODk1NCA5LjQyNTAzIDMuNDQxMzZaTTMuNDI1MDMgMy40NDEzNkM0LjA1NjE0IDMuMjM2NTQgNC43ODM2NiAzLjI0MDIgNS4zNzkyMyAzLjU0NjIzQzYuNzUzMiA0LjI1MjI0IDcuMzQ3NjYgNi4wNzE5MSA2Ljc5NDYyIDhDNi41NDY1NCA4Ljg2NDkgNi4xMTAxOSA5LjcwNDcyIDUuMTg2MSAxMC41NTI0QzQuMjYyMDEgMTEuNCAyLjk4MDM0IDExLjkgMi4zODU3MSAxMS45QzIuMTcyNjkgMTEuOSAyIDExLjczMjEgMiAxMS41MjVDMiAxMS4zMTc5IDIuMTc2NDQgMTEuMTUgMi4zODU3MSAxMS4xNUMzLjA2NDk3IDExLjE1IDMuNjcxODkgMTAuNzgwNCA0LjM5MDU4IDEwLjIzNkM0Ljk0MDY1IDkuODE5MyA1LjM3MDE0IDkuMjg2MzMgNS42MDc5NyA4LjgyMTkxQzYuMDYyODIgNy45MzM2NyA2LjA3ODIxIDYuNjgxNzQgNS4zNDMzIDYuMzQ5MDFDNC45OTAzNyA2LjczNDU1IDQuNTI5NDggNi45NTk0NiAzLjk3NzI1IDYuOTU5NDZDMi43NzczIDYuOTU5NDYgMi4wNzAxIDUuOTk0MTIgMi4xMDA1MSA1LjEyMDA5QzIuMTI5NTcgNC4yODQ3NCAyLjY2MDMyIDMuNjg5NTQgMy40MjUwMyAzLjQ0MTM2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sb3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5ODUgMC44NzcwNDVDMy44NDIxNiAwLjg3NzA0NSAwLjg3NzAxNCAzLjg0MjE5IDAuODc3MDE0IDcuNDk5ODhDMC44NzcwMTQgMTEuMTU3NSAzLjg0MjE2IDE0LjEyMjcgNy40OTk4NSAxNC4xMjI3QzExLjE1NzUgMTQuMTIyNyAxNC4xMjI3IDExLjE1NzUgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgMy44NDIxOSAxMS4xNTc1IDAuODc3MDQ1IDcuNDk5ODUgMC44NzcwNDVaTTEuODI3MDEgNy40OTk4OEMxLjgyNzAxIDQuMzY2ODYgNC4zNjY4MyAxLjgyNzA0IDcuNDk5ODUgMS44MjcwNEMxMC42MzI4IDEuODI3MDQgMTMuMTcyNyA0LjM2Njg2IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDEwLjYzMjkgMTAuNjMyOCAxMy4xNzI3IDcuNDk5ODUgMTMuMTcyN0M0LjM2NjgzIDEzLjE3MjcgMS44MjcwMSAxMC42MzI5IDEuODI3MDEgNy40OTk4OFpNNy40OTk5OSA5LjQ5OTk5QzguNjA0NTYgOS40OTk5OSA5LjQ5OTk5IDguNjA0NTYgOS40OTk5OSA3LjQ5OTk5QzkuNDk5OTkgNi4zOTU0MiA4LjYwNDU2IDUuNDk5OTkgNy40OTk5OSA1LjQ5OTk5QzYuMzk1NDIgNS40OTk5OSA1LjQ5OTk5IDYuMzk1NDIgNS40OTk5OSA3LjQ5OTk5QzUuNDk5OTkgOC42MDQ1NiA2LjM5NTQyIDkuNDk5OTkgNy40OTk5OSA5LjQ5OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuMiAxSDQuMTc3NDFINC4xNzc0QzMuODY5MzYgMC45OTk5ODggMy42MDM2OCAwLjk5OTk3OCAzLjM4NjA5IDEuMDIwNjdDMy4xNTU3NiAxLjA0MjU3IDIuOTI4MjUgMS4wOTExMyAyLjcxNjI1IDEuMjIxMDRDMi41MTQ0MiAxLjM0NDcyIDIuMzQ0NzMgMS41MTQ0MiAyLjIyMTA0IDEuNzE2MjVDMi4wOTExMyAxLjkyODI1IDIuMDQyNTcgMi4xNTU3NiAyLjAyMDY3IDIuMzg2MDlDMS45OTk5OCAyLjYwMzY3IDEuOTk5OTkgMi44NjkzNSAyIDMuMTc3MzhWMy4xNzc0VjMuMlYxMS44VjExLjgyMjZWMTEuODIyNkMxLjk5OTk5IDEyLjEzMDcgMS45OTk5OCAxMi4zOTYzIDIuMDIwNjcgMTIuNjEzOUMyLjA0MjU3IDEyLjg0NDIgMi4wOTExMyAxMy4wNzE3IDIuMjIxMDQgMTMuMjgzN0MyLjM0NDczIDEzLjQ4NTYgMi41MTQ0MiAxMy42NTUzIDIuNzE2MjUgMTMuNzc5QzIuOTI4MjUgMTMuOTA4OSAzLjE1NTc2IDEzLjk1NzQgMy4zODYwOSAxMy45NzkzQzMuNjAzNjggMTQgMy44NjkzNyAxNCA0LjE3NzQxIDE0SDQuMkgxMC44SDEwLjgyMjZDMTEuMTMwNiAxNCAxMS4zOTYzIDE0IDExLjYxMzkgMTMuOTc5M0MxMS44NDQyIDEzLjk1NzQgMTIuMDcxNyAxMy45MDg5IDEyLjI4MzcgMTMuNzc5QzEyLjQ4NTYgMTMuNjU1MyAxMi42NTUzIDEzLjQ4NTYgMTIuNzc5IDEzLjI4MzdDMTIuOTA4OSAxMy4wNzE3IDEyLjk1NzQgMTIuODQ0MiAxMi45NzkzIDEyLjYxMzlDMTMgMTIuMzk2MyAxMyAxMi4xMzA2IDEzIDExLjgyMjZWMTEuOFYzLjJWMy4xNzc0MUMxMyAyLjg2OTM2IDEzIDIuNjAzNjggMTIuOTc5MyAyLjM4NjA5QzEyLjk1NzQgMi4xNTU3NiAxMi45MDg5IDEuOTI4MjUgMTIuNzc5IDEuNzE2MjVDMTIuNjU1MyAxLjUxNDQyIDEyLjQ4NTYgMS4zNDQ3MiAxMi4yODM3IDEuMjIxMDRDMTIuMDcxNyAxLjA5MTEzIDExLjg0NDIgMS4wNDI1NyAxMS42MTM5IDEuMDIwNjdDMTEuMzk2MyAwLjk5OTk3OCAxMS4xMzA2IDAuOTk5OTg4IDEwLjgyMjYgMUgxMC44SDQuMlpNMy4yMzg3NSAyLjA3MzY4QzMuMjY3MjIgMi4wNTYyMyAzLjMyMzYyIDIuMDMxMTIgMy40ODA3NSAyLjAxNjE4QzMuNjQ1MzIgMi4wMDA1MyAzLjg2Mjk4IDIgNC4yIDJIMTAuOEMxMS4xMzcgMiAxMS4zNTQ3IDIuMDAwNTMgMTEuNTE5MyAyLjAxNjE4QzExLjY3NjQgMi4wMzExMiAxMS43MzI4IDIuMDU2MjMgMTEuNzYxMyAyLjA3MzY4QzExLjgyODUgMi4xMTQ5MSAxMS44ODUxIDIuMTcxNDcgMTEuOTI2MyAyLjIzODc1QzExLjk0MzggMi4yNjcyMiAxMS45Njg5IDIuMzIzNjIgMTEuOTgzOCAyLjQ4MDc1QzExLjk5OTUgMi42NDUzMiAxMiAyLjg2Mjk4IDEyIDMuMlYxMS44QzEyIDEyLjEzNyAxMS45OTk1IDEyLjM1NDcgMTEuOTgzOCAxMi41MTkzQzExLjk2ODkgMTIuNjc2NCAxMS45NDM4IDEyLjczMjggMTEuOTI2MyAxMi43NjEzQzExLjg4NTEgMTIuODI4NSAxMS44Mjg1IDEyLjg4NTEgMTEuNzYxMyAxMi45MjYzQzExLjczMjggMTIuOTQzOCAxMS42NzY0IDEyLjk2ODkgMTEuNTE5MyAxMi45ODM4QzExLjM1NDcgMTIuOTk5NSAxMS4xMzcgMTMgMTAuOCAxM0g0LjJDMy44NjI5OCAxMyAzLjY0NTMyIDEyLjk5OTUgMy40ODA3NSAxMi45ODM4QzMuMzIzNjIgMTIuOTY4OSAzLjI2NzIyIDEyLjk0MzggMy4yMzg3NSAxMi45MjYzQzMuMTcxNDcgMTIuODg1MSAzLjExNDkxIDEyLjgyODUgMy4wNzM2OCAxMi43NjEzQzMuMDU2MjQgMTIuNzMyOCAzLjAzMTEyIDEyLjY3NjQgMy4wMTYxOCAxMi41MTkzQzMuMDAwNTMgMTIuMzU0NyAzIDEyLjEzNyAzIDExLjhWMy4yQzMgMi44NjI5OCAzLjAwMDUzIDIuNjQ1MzIgMy4wMTYxOCAyLjQ4MDc1QzMuMDMxMTIgMi4zMjM2MiAzLjA1NjI0IDIuMjY3MjIgMy4wNzM2OCAyLjIzODc1QzMuMTE0OTEgMi4xNzE0NyAzLjE3MTQ3IDIuMTE0OTEgMy4yMzg3NSAyLjA3MzY4Wk01IDEwQzQuNzIzODYgMTAgNC41IDEwLjIyMzkgNC41IDEwLjVDNC41IDEwLjc3NjEgNC43MjM4NiAxMSA1IDExSDhDOC4yNzYxNCAxMSA4LjUgMTAuNzc2MSA4LjUgMTAuNUM4LjUgMTAuMjIzOSA4LjI3NjE0IDEwIDggMTBINVpNNC41IDcuNUM0LjUgNy4yMjM4NiA0LjcyMzg2IDcgNSA3SDEwQzEwLjI3NjEgNyAxMC41IDcuMjIzODYgMTAuNSA3LjVDMTAuNSA3Ljc3NjE0IDEwLjI3NjEgOCAxMCA4SDVDNC43MjM4NiA4IDQuNSA3Ljc3NjE0IDQuNSA3LjVaTTUgNEM0LjcyMzg2IDQgNC41IDQuMjIzODYgNC41IDQuNUM0LjUgNC43NzYxNCA0LjcyMzg2IDUgNSA1SDEwQzEwLjI3NjEgNSAxMC41IDQuNzc2MTQgMTAuNSA0LjVDMTAuNSA0LjIyMzg2IDEwLjI3NjEgNCAxMCA0SDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxhcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS44NDk5OCA3LjQ5OTk4QzEuODQ5OTggNC42NjQ1OCA0LjA1OTc5IDEuODQ5OTggNy40OTk5OCAxLjg0OTk4QzEwLjI3ODMgMS44NDk5OCAxMS42NTE1IDMuOTA2NCAxMi4yMzY3IDVIMTAuNUMxMC4yMjM5IDUgMTAgNS4yMjM4NiAxMCA1LjVDMTAgNS43NzYxNCAxMC4yMjM5IDYgMTAuNSA2SDEzLjVDMTMuNzc2MSA2IDE0IDUuNzc2MTQgMTQgNS41VjIuNUMxNCAyLjIyMzg2IDEzLjc3NjEgMiAxMy41IDJDMTMuMjIzOSAyIDEzIDIuMjIzODYgMTMgMi41VjQuMzEzMThDMTIuMjk1NSAzLjA3MTI2IDEwLjY2NTkgMC44NDk5NzYgNy40OTk5OCAwLjg0OTk3NkMzLjQzNzE2IDAuODQ5OTc2IDAuODQ5OTc2IDQuMTg1MzcgMC44NDk5NzYgNy40OTk5OEMwLjg0OTk3NiAxMC44MTQ2IDMuNDM3MTYgMTQuMTUgNy40OTk5OCAxNC4xNUM5LjQ0MzgyIDE0LjE1IDExLjA2MjIgMTMuMzgwOCAxMi4yMTQ1IDEyLjIwODRDMTIuODMxNSAxMS41ODA2IDEzLjMxMzMgMTAuODM5IDEzLjY0MTggMTAuMDQwN0MxMy43NDY5IDkuNzg1MzYgMTMuNjI1MSA5LjQ5MzE1IDEzLjM2OTggOS4zODgwNkMxMy4xMTQ0IDkuMjgyOTYgMTIuODIyMiA5LjQwNDc4IDEyLjcxNzEgOS42NjAxNEMxMi40MzYzIDEwLjM0MjUgMTIuMDI1MSAxMC45NzQ1IDExLjUwMTMgMTEuNTA3NEMxMC41Mjk1IDEyLjQ5NjMgOS4xNjUwNCAxMy4xNSA3LjQ5OTk4IDEzLjE1QzQuMDU5NzkgMTMuMTUgMS44NDk5OCAxMC4zMzU0IDEuODQ5OTggNy40OTk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGxyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00Ljg1MzU1IDIuMTQ2NDVDNS4wNDg4MiAyLjM0MTcxIDUuMDQ4ODIgMi42NTgyOSA0Ljg1MzU1IDIuODUzNTVMMy43MDcxMSA0SDlDMTEuNDg1MyA0IDEzLjUgNi4wMTQ3MiAxMy41IDguNUMxMy41IDEwLjk4NTMgMTEuNDg1MyAxMyA5IDEzSDVDNC43MjM4NiAxMyA0LjUgMTIuNzc2MSA0LjUgMTIuNUM0LjUgMTIuMjIzOSA0LjcyMzg2IDEyIDUgMTJIOUMxMC45MzMgMTIgMTIuNSAxMC40MzMgMTIuNSA4LjVDMTIuNSA2LjU2NyAxMC45MzMgNSA5IDVIMy43MDcxMUw0Ljg1MzU1IDYuMTQ2NDVDNS4wNDg4MiA2LjM0MTcxIDUuMDQ4ODIgNi42NTgyOSA0Ljg1MzU1IDYuODUzNTVDNC42NTgyOSA3LjA0ODgyIDQuMzQxNzEgNy4wNDg4MiA0LjE0NjQ1IDYuODUzNTVMMi4xNDY0NSA0Ljg1MzU1QzEuOTUxMTggNC42NTgyOSAxLjk1MTE4IDQuMzQxNzEgMi4xNDY0NSA0LjE0NjQ1TDQuMTQ2NDUgMi4xNDY0NUM0LjM0MTcxIDEuOTUxMTggNC42NTgyOSAxLjk1MTE4IDQuODUzNTUgMi4xNDY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHNyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjA0OTk1IDIuNzQ5OTVDMy4wNDk5NSAyLjQ0NjE5IDIuODAzNzEgMi4xOTk5NSAyLjQ5OTk1IDIuMTk5OTVDMi4xOTYxOSAyLjE5OTk1IDEuOTQ5OTUgMi40NDYxOSAxLjk0OTk1IDIuNzQ5OTVWMTIuMjVDMS45NDk5NSAxMi41NTM3IDIuMTk2MTkgMTIuOCAyLjQ5OTk1IDEyLjhDMi44MDM3MSAxMi44IDMuMDQ5OTUgMTIuNTUzNyAzLjA0OTk1IDEyLjI1VjIuNzQ5OTVaTTUuNzMzMzMgMi4zMDc3NkM1LjU3ODM1IDIuMjI1OTYgNS4zOTE4NSAyLjIzMTI3IDUuMjQxNzcgMi4zMjE3NkM1LjA5MTcgMi40MTIyNSA0Ljk5OTk1IDIuNTc0NzEgNC45OTk5NSAyLjc0OTk1VjEyLjI1QzQuOTk5OTUgMTIuNDI1MiA1LjA5MTcgMTIuNTg3NyA1LjI0MTc3IDEyLjY3ODFDNS4zOTE4NSAxMi43Njg2IDUuNTc4MzUgMTIuNzczOSA1LjczMzMzIDEyLjY5MjFMMTQuNzMzMyA3Ljk0MjE0QzE0Ljg5NzMgNy44NTU1OSAxNSA3LjY4NTM5IDE1IDcuNDk5OTVDMTUgNy4zMTQ1MiAxNC44OTczIDcuMTQ0MzEgMTQuNzMzMyA3LjA1Nzc2TDUuNzMzMzMgMi4zMDc3NlpNNS45OTk5NSAxMS40MjA3VjMuNTc5MkwxMy40Mjg3IDcuNDk5OTVMNS45OTk5NSAxMS40MjA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sY3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuODUzNTcgMy44NTM1NUw3LjY1MzU1IDMuMDUzNTNDOC4yOTgxIDIuNDA5MDEgOS40Mjg1OCAxLjk2MTcyIDEwLjU1MiAxLjgwMTI1QzExLjEwNTYgMS43MjIxNyAxMS42MjkxIDEuNzE3MjUgMTIuMDU2NCAxLjc4MTI0QzEyLjQ5ODcgMS44NDc0OCAxMi43Njk4IDEuOTc2OTYgMTIuODk2NSAyLjEwMzU3QzEzLjAyMzEgMi4yMzAxOCAxMy4xNTI2IDIuNTAxMjUgMTMuMjE4OCAyLjk0MzU3QzEzLjI4MjggMy4zNzA4NiAxMy4yNzc5IDMuODk0MzkgMTMuMTk4OCA0LjQ0ODAxQzEzLjAzODMgNS41NzEzOSAxMi41OTEgNi43MDE4OCAxMS45NDY0IDcuMzQ2NDVMNy40OTk5OSAxMS43OTI5TDYuMzUzNTQgMTAuNjQ2NUM2LjE1ODI3IDEwLjQ1MTIgNS44NDE2OSAxMC40NTEyIDUuNjQ2NDMgMTAuNjQ2NUM1LjQ1MTE3IDEwLjg0MTcgNS40NTExNyAxMS4xNTgzIDUuNjQ2NDMgMTEuMzUzNkw3LjE0NjQ0IDEyLjg1MzZDNy4zNDE3MSAxMy4wNDg4IDcuNjU4MjkgMTMuMDQ4OCA3Ljg1MzU1IDEyLjg1MzZMOC40MDA3MyAxMi4zMDY0TDkuNTcxMjQgMTQuMjU3MkM5LjY1MDQ2IDE0LjM4OTMgOS43ODYwOCAxNC40Nzc0IDkuOTM4OSAxNC40OTYzQzEwLjA5MTcgMTQuNTE1MSAxMC4yNDQ3IDE0LjQ2MjQgMTAuMzUzNSAxNC4zNTM2TDEyLjM1MzUgMTIuMzUzNkMxMi40NjQ4IDEyLjI0MjMgMTIuNTE3MiAxMi4wODUxIDEyLjQ5NSAxMS45MjkzTDEyLjAzMDMgOC42NzY3OUwxMi42NTM2IDguMDUzNTVDMTMuNTA5IDcuMTk4MDggMTQuMDExNyA1LjgyODU1IDE0LjE4ODcgNC41ODk0M0MxNC4yNzg0IDMuOTYxOCAxNC4yODkxIDMuMzM4NDcgMTQuMjA3OCAyLjc5NTQ2QzE0LjEyODcgMi4yNjc0OCAxMy45NTE5IDEuNzQ0ODIgMTMuNjAzNSAxLjM5NjQ1QzEzLjI1NTIgMS4wNDgwOSAxMi43MzI1IDAuODcxMzMyIDEyLjIwNDUgMC43OTIyNjRDMTEuNjYxNSAwLjcxMDk0NSAxMS4wMzgyIDAuNzIxNjQ0IDEwLjQxMDUgMC44MTEzQzkuMTcxNDMgMC45ODgzMDYgNy44MDE4OSAxLjQ5MSA2Ljk0NjQ0IDIuMzQ2NDJMNi4zMjMyMiAyLjk2OTY4TDMuMDcwNzEgMi41MDUwNEMyLjkxNDkyIDIuNDgyNzggMi43NTc3MyAyLjUzNTE3IDIuNjQ2NDUgMi42NDY0NkwwLjY0NjQ1MSA0LjY0NjQ1QzAuNTM3NTc5IDQuNzU1MzMgMC40ODQ5MzggNC45MDgyOSAwLjUwMzc1IDUuMDYxMUMwLjUyMjU2MyA1LjIxMzkxIDAuNjEwNzMgNS4zNDk1NCAwLjc0Mjc1NyA1LjQyODc2TDIuNjkzNjQgNi41OTkyOEwyLjE0NjQ2IDcuMTQ2NDVDMi4wNTI3IDcuMjQwMjIgMi4wMDAwMiA3LjM2NzQgMi4wMDAwMiA3LjUwMDAxQzIuMDAwMDIgNy42MzI2MSAyLjA1MjcgNy43NTk3OSAyLjE0NjQ2IDcuODUzNTZMMy42NDY0NyA5LjM1MzU2QzMuODQxNzMgOS41NDg4MyA0LjE1ODMxIDkuNTQ4ODMgNC4zNTM1NyA5LjM1MzU2QzQuNTQ4ODQgOS4xNTgzIDQuNTQ4ODQgOC44NDE3MiA0LjM1MzU3IDguNjQ2NDZMMy4yMDcxMiA3LjUwMDAxTDMuODUzNTcgNi44NTM1Nkw2Ljg1MzU3IDMuODUzNTVaTTEwLjA5OTMgMTMuMTkzNkw5LjEyOTU5IDExLjU3NzVMMTEuMTQ2NCA5LjU2MDY3TDExLjQ2OTcgMTEuODIzMkwxMC4wOTkzIDEzLjE5MzZaTTMuNDIyNTEgNS44NzA0MUw1LjQzOTM1IDMuODUzNTZMMy4xNzY3OCAzLjUzMDM0TDEuODA2MzggNC45MDA3NEwzLjQyMjUxIDUuODcwNDFaTTIuMzUzNTYgMTAuMzUzNUMyLjU0ODgyIDEwLjE1ODMgMi41NDg4MiA5Ljg0MTcgMi4zNTM1NiA5LjY0NjQ0QzIuMTU4MyA5LjQ1MTE4IDEuODQxNzEgOS40NTExOCAxLjY0NjQ1IDkuNjQ2NDRMMC42NDY0NTEgMTAuNjQ2NEMwLjQ1MTE4OCAxMC44NDE3IDAuNDUxMTg4IDExLjE1ODMgMC42NDY0NTEgMTEuMzUzNUMwLjg0MTcxMyAxMS41NDg4IDEuMTU4MyAxMS41NDg4IDEuMzUzNTYgMTEuMzUzNUwyLjM1MzU2IDEwLjM1MzVaTTMuODUzNTggMTEuODUzNkM0LjA0ODg0IDExLjY1ODMgNC4wNDg4NSAxMS4zNDE3IDMuODUzNTkgMTEuMTQ2NUMzLjY1ODMzIDEwLjk1MTIgMy4zNDE3NSAxMC45NTEyIDMuMTQ2NDggMTEuMTQ2NUwxLjE0NjQ1IDEzLjE0NjRDMC45NTExOSAxMy4zNDE3IDAuOTUxMTg3IDEzLjY1ODMgMS4xNDY0NSAxMy44NTM1QzEuMzQxNzEgMTQuMDQ4OCAxLjY1ODI5IDE0LjA0ODggMS44NTM1NSAxMy44NTM2TDMuODUzNTggMTEuODUzNlpNNS4zNTM1NiAxMy4zNTM1QzUuNTQ4ODIgMTMuMTU4MyA1LjU0ODgyIDEyLjg0MTcgNS4zNTM1NiAxMi42NDY0QzUuMTU4MyAxMi40NTEyIDQuODQxNzEgMTIuNDUxMiA0LjY0NjQ1IDEyLjY0NjRMMy42NDY0NSAxMy42NDY0QzMuNDUxMTkgMTMuODQxNyAzLjQ1MTE5IDE0LjE1ODMgMy42NDY0NSAxNC4zNTM1QzMuODQxNzEgMTQuNTQ4OCA0LjE1ODMgMTQuNTQ4OCA0LjM1MzU2IDE0LjM1MzVMNS4zNTM1NiAxMy4zNTM1Wk05LjQ5OTk3IDYuNzQ4ODFDMTAuMTg5NyA2Ljc0ODgxIDEwLjc0ODggNi4xODk3IDEwLjc0ODggNS41QzEwLjc0ODggNC44MTAzIDEwLjE4OTcgNC4yNTExOCA5LjQ5OTk3IDQuMjUxMThDOC44MTAyNiA0LjI1MTE4IDguMjUxMTUgNC44MTAzIDguMjUxMTUgNS41QzguMjUxMTUgNi4xODk3IDguODEwMjYgNi43NDg4MSA5LjQ5OTk3IDYuNzQ4ODFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx1cj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41OTY2NCAyLjkzNjI4QzcuNzYwODUgMy4wNjQwMSA4LjAwMDEyIDIuOTQ2OTggOC4wMDAxMiAyLjczODk1VjEuOTk5OThDOS45ODE0MyAyIDExLjE4NDggMi4zNjM3IDExLjkxMDUgMy4wODk0NUMxMi42MzYzIDMuODE1MjIgMTMgNS4wMTg2IDEzIDYuOTk5OThDMTMgNy4yNzYxMyAxMy4yMjM5IDcuNDk5OTggMTMuNSA3LjQ5OTk4QzEzLjc3NjEgNy40OTk5OCAxNCA3LjI3NjEzIDE0IDYuOTk5OThDMTQgNC45NDM4IDEzLjYzMjUgMy4zOTcxOSAxMi42MTc2IDIuMzgyMzRDMTEuNjAyOCAxLjM2NzUyIDEwLjA1NjIgMC45OTk5OTkgOC4wMDAxMiAwLjk5OTk4NFYwLjI2MTI2NkM4LjAwMDEyIDAuMDUzMjI5MyA3Ljc2MDg1IC0wLjA2Mzc5NDQgNy41OTY2NCAwLjA2MzkyOEw2LjAwMzg0IDEuMzAyNzdDNS44NzUxNiAxLjQwMjg2IDUuODc1MTYgMS41OTczNSA2LjAwMzg0IDEuNjk3NDRMNy41OTY2NCAyLjkzNjI4Wk05LjUgNUgyLjVDMi4yMjM4NiA1IDIgNS4yMjM4NiAyIDUuNVYxMi41QzIgMTIuNzc2MSAyLjIyMzg2IDEzIDIuNSAxM0g5LjVDOS43NzYxNCAxMyAxMCAxMi43NzYxIDEwIDEyLjVWNS41QzEwIDUuMjIzODYgOS43NzYxNCA1IDkuNSA1Wk0yLjUgNEMxLjY3MTU3IDQgMSA0LjY3MTU3IDEgNS41VjEyLjVDMSAxMy4zMjg0IDEuNjcxNTcgMTQgMi41IDE0SDkuNUMxMC4zMjg0IDE0IDExIDEzLjMyODQgMTEgMTIuNVY1LjVDMTEgNC42NzE1NyAxMC4zMjg0IDQgOS41IDRIMi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuODE4MzIgMC42ODE3OUM3LjY0MjU4IDAuNTA2MDU0IDcuMzU3NjYgMC41MDYwNTQgNy4xODE5MiAwLjY4MTc5TDUuMTgxOTIgMi42ODE3OUM1LjAwNjE5IDIuODU3NTMgNS4wMDYxOSAzLjE0MjQ1IDUuMTgxOTIgMy4zMTgxOUM1LjM1NzY2IDMuNDkzOTIgNS42NDI1OCAzLjQ5MzkyIDUuODE4MzIgMy4zMTgxOUw3LjA1MDEyIDIuMDg2MzhMNy4wNTAxMiA1LjUwMDIzQzcuMDUwMTIgNS43NDg3NiA3LjI1MTU5IDUuOTUwMjMgNy41MDAxMiA1Ljk1MDIzQzcuNzQ4NjUgNS45NTAyMyA3Ljk1MDEyIDUuNzQ4NzYgNy45NTAxMiA1LjUwMDIzTDcuOTUwMTIgMi4wODYzOEw5LjE4MTkyIDMuMzE4MTlDOS4zNTc2NiAzLjQ5MzkyIDkuNjQyNTggMy40OTM5MiA5LjgxODMyIDMuMzE4MTlDOS45OTQwNiAzLjE0MjQ1IDkuOTk0MDYgMi44NTc1MyA5LjgxODMyIDIuNjgxNzlMNy44MTgzMiAwLjY4MTc5Wk03Ljk1MDEyIDEyLjkxMzZWOS41MDAyM0M3Ljk1MDEyIDkuMjUxNyA3Ljc0ODY1IDkuMDUwMjMgNy41MDAxMiA5LjA1MDIzQzcuMjUxNTkgOS4wNTAyMyA3LjA1MDEyIDkuMjUxNyA3LjA1MDEyIDkuNTAwMjNWMTIuOTEzNkw1LjgxODMyIDExLjY4MThDNS42NDI1OCAxMS41MDYxIDUuMzU3NjYgMTEuNTA2MSA1LjE4MTkyIDExLjY4MThDNS4wMDYxOSAxMS44NTc1IDUuMDA2MTkgMTIuMTQyNCA1LjE4MTkyIDEyLjMxODJMNy4xODE5MiAxNC4zMTgyQzcuMjY2MzIgMTQuNDAyNiA3LjM4MDc3IDE0LjQ1IDcuNTAwMTIgMTQuNDVDNy42MTk0NyAxNC40NSA3LjczMzkzIDE0LjQwMjYgNy44MTgzMiAxNC4zMTgyTDkuODE4MzIgMTIuMzE4MkM5Ljk5NDA2IDEyLjE0MjQgOS45OTQwNiAxMS44NTc1IDkuODE4MzIgMTEuNjgxOEM5LjY0MjU4IDExLjUwNjEgOS4zNTc2NiAxMS41MDYxIDkuMTgxOTIgMTEuNjgxOEw3Ljk1MDEyIDEyLjkxMzZaTTEuNDk5OTQgNy4wMDAxN0MxLjIyMzggNy4wMDAxNyAwLjk5OTkzOSA3LjIyNDAzIDAuOTk5OTM5IDcuNTAwMTdDMC45OTk5MzkgNy43NzYzMSAxLjIyMzggOC4wMDAxNyAxLjQ5OTk0IDguMDAwMTdMMTMuNDk5OSA4LjAwMDE3QzEzLjc3NjEgOC4wMDAxNyAxMy45OTk5IDcuNzc2MzEgMTMuOTk5OSA3LjUwMDE3QzEzLjk5OTkgNy4yMjQwMyAxMy43NzYxIDcuMDAwMTcgMTMuNDk5OSA3LjAwMDE3TDEuNDk5OTQgNy4wMDAxN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGRyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNCAxMi44NUwxIDEyLjg1TDEgMTQuMTVMMTQgMTQuMTVMMTQgMTIuODVaTTE0IDguODUwMDJMMSA4Ljg1MDAyTDEgMTAuMTVMMTQgMTAuMTVMMTQgOC44NTAwMlpNMSA0Ljg1MDAzTDE0IDQuODUwMDNMMTQgNi4xNTAwM0wxIDYuMTUwMDJMMSA0Ljg1MDAzWk0xNCAwLjg1MDAyNUwxIDAuODUwMDI1TDEgMi4xNTAwMkwxNCAyLjE1MDAyTDE0IDAuODUwMDI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuNSA0QzAuMjIzODU4IDQgMCA0LjIyMzg2IDAgNC41VjEwLjVDMCAxMC43NzYxIDAuMjIzODU4IDExIDAuNSAxMUgxNC41QzE0Ljc3NjEgMTEgMTUgMTAuNzc2MSAxNSAxMC41VjQuNUMxNSA0LjIyMzg2IDE0Ljc3NjEgNCAxNC41IDRIMC41Wk0xIDEwVjVIMi4wNzVWNy41QzIuMDc1IDcuNzM0NzIgMi4yNjUyOCA3LjkyNSAyLjUgNy45MjVDMi43MzQ3MiA3LjkyNSAyLjkyNSA3LjczNDcyIDIuOTI1IDcuNVY1SDQuMDc1VjYuNUM0LjA3NSA2LjczNDcyIDQuMjY1MjggNi45MjUgNC41IDYuOTI1QzQuNzM0NzIgNi45MjUgNC45MjUgNi43MzQ3MiA0LjkyNSA2LjVWNUg2LjA3NVY2LjVDNi4wNzUgNi43MzQ3MiA2LjI2NTI4IDYuOTI1IDYuNSA2LjkyNUM2LjczNDcyIDYuOTI1IDYuOTI1IDYuNzM0NzIgNi45MjUgNi41VjVIOC4wNzVWNy41QzguMDc1IDcuNzM0NzIgOC4yNjUyOCA3LjkyNSA4LjUgNy45MjVDOC43MzQ3MiA3LjkyNSA4LjkyNSA3LjczNDcyIDguOTI1IDcuNVY1SDEwLjA3NVY2LjVDMTAuMDc1IDYuNzM0NzIgMTAuMjY1MyA2LjkyNSAxMC41IDYuOTI1QzEwLjczNDcgNi45MjUgMTAuOTI1IDYuNzM0NzIgMTAuOTI1IDYuNVY1SDEyLjA3NVY2LjVDMTIuMDc1IDYuNzM0NzIgMTIuMjY1MyA2LjkyNSAxMi41IDYuOTI1QzEyLjczNDcgNi45MjUgMTIuOTI1IDYuNzM0NzIgMTIuOTI1IDYuNVY1SDE0VjEwSDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxocj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC41IDBDMC4yMjM4NTggMCAwIDAuMjIzODU4IDAgMC41VjE0LjVDMCAxNC43NzYxIDAuMjIzODU4IDE1IDAuNSAxNUg0LjVDNC43NzYxNCAxNSA1IDE0Ljc3NjEgNSAxNC41VjVIMTQuNUMxNC43NzYxIDUgMTUgNC43NzYxNCAxNSA0LjVWMC41QzE1IDAuMjIzODU4IDE0Ljc3NjEgMCAxNC41IDBIMC41Wk0xIDQuMDc1MDVMMSAxSDQuMDc1MDJDNC4wNzUwMiAxIDQuMDc1MDIgMSA0LjA3NTAyIDFMNC4wNzUwNSA0LjA3NTA3TDEgNC4wNzUwNVpNMC45OTk5OTcgNC45MjUwNUwxIDE0SDRWMTIuOTI1SDIuNzUwMDJDMi41MTUzIDEyLjkyNSAyLjMyNTAyIDEyLjczNDggMi4zMjUwMiAxMi41QzIuMzI1MDIgMTIuMjY1MyAyLjUxNTMgMTIuMDc1IDIuNzUwMDIgMTIuMDc1SDRWMTAuOTI1SDIuMjUwMDJDMi4wMTUzIDEwLjkyNSAxLjgyNTAyIDEwLjczNDcgMS44MjUwMiAxMC41QzEuODI1MDIgMTAuMjY1MyAyLjAxNTMgMTAuMDc1IDIuMjUwMDIgMTAuMDc1SDRWOC45MjUwNEwyLjc1MDAyIDguOTI1MDJDMi41MTUzIDguOTI1MDIgMi4zMjUwMiA4LjczNDc0IDIuMzI1MDIgOC41MDAwMkMyLjMyNTAzIDguMjY1MjkgMi41MTUzMSA4LjA3NTAyIDIuNzUwMDMgOC4wNzUwMkw0IDguMDc1MDRWNi45MjUwMkwyLjc0OTk5IDYuOTI1QzIuNTE1MjcgNi45MjUgMi4zMjUgNi43MzQ3MiAyLjMyNSA2LjVDMi4zMjUgNi4yNjUyOCAyLjUxNTI5IDYuMDc1IDIuNzUwMDEgNi4wNzVMNCA2LjA3NTAyVjQuOTI1MDdMMC45OTk5OTcgNC45MjUwNVpNNC45MjUwNSA0SDYuMDc1VjIuNzUwMDZDNi4wNzUgMi41MTUzNCA2LjI2NTI4IDIuMzI1MDYgNi41IDIuMzI1MDZDNi43MzQ3MiAyLjMyNTA2IDYuOTI1IDIuNTE1MzQgNi45MjUgMi43NTAwNlY0SDguMDc1MDJWMi43NTAwNUM4LjA3NTAyIDIuNTE1MzMgOC4yNjUzIDIuMzI1MDUgOC41MDAwMiAyLjMyNTA1QzguNzM0NzQgMi4zMjUwNSA4LjkyNTAyIDIuNTE1MzMgOC45MjUwMiAyLjc1MDA1VjRIMTAuMDc1MVYyLjI1MDA1QzEwLjA3NTEgMi4wMTUzMyAxMC4yNjUzIDEuODI1MDUgMTAuNTAwMSAxLjgyNTA1QzEwLjczNDggMS44MjUwNSAxMC45MjUxIDIuMDE1MzMgMTAuOTI1MSAyLjI1MDA1VjRIMTIuMDc1MVYyLjc1MDA1QzEyLjA3NTEgMi41MTUzMyAxMi4yNjU0IDIuMzI1MDUgMTIuNTAwMSAyLjMyNTA1QzEyLjczNDggMi4zMjUwNSAxMi45MjUxIDIuNTE1MzMgMTIuOTI1MSAyLjc1MDA1VjRIMTRWMUg0LjkyNTAyTDQuOTI1MDUgNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHZyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDEuNUMyIDEuNzc2MTQgMS43NzYxNCAyIDEuNSAyQzEuMjIzODYgMiAxIDEuNzc2MTQgMSAxLjVDMSAxLjIyMzg2IDEuMjIzODYgMSAxLjUgMUMxLjc3NjE0IDEgMiAxLjIyMzg2IDIgMS41Wk0yIDVMMiAxMEgxM1Y1SDJaTTIgNEMxLjQ0NzcyIDQgMSA0LjQ0NzcyIDEgNVYxMEMxIDEwLjU1MjMgMS40NDc3MiAxMSAyIDExSDEzQzEzLjU1MjMgMTEgMTQgMTAuNTUyMyAxNCAxMFY1QzE0IDQuNDQ3NzIgMTMuNTUyMyA0IDEzIDRIMlpNMS41IDE0QzEuNzc2MTQgMTQgMiAxMy43NzYxIDIgMTMuNUMyIDEzLjIyMzkgMS43NzYxNCAxMyAxLjUgMTNDMS4yMjM4NiAxMyAxIDEzLjIyMzkgMSAxMy41QzEgMTMuNzc2MSAxLjIyMzg2IDE0IDEuNSAxNFpNNCAxLjVDNCAxLjc3NjE0IDMuNzc2MTQgMiAzLjUgMkMzLjIyMzg2IDIgMyAxLjc3NjE0IDMgMS41QzMgMS4yMjM4NiAzLjIyMzg2IDEgMy41IDFDMy43NzYxNCAxIDQgMS4yMjM4NiA0IDEuNVpNMy41IDE0QzMuNzc2MTQgMTQgNCAxMy43NzYxIDQgMTMuNUM0IDEzLjIyMzkgMy43NzYxNCAxMyAzLjUgMTNDMy4yMjM4NiAxMyAzIDEzLjIyMzkgMyAxMy41QzMgMTMuNzc2MSAzLjIyMzg2IDE0IDMuNSAxNFpNNiAxLjVDNiAxLjc3NjE0IDUuNzc2MTQgMiA1LjUgMkM1LjIyMzg2IDIgNSAxLjc3NjE0IDUgMS41QzUgMS4yMjM4NiA1LjIyMzg2IDEgNS41IDFDNS43NzYxNCAxIDYgMS4yMjM4NiA2IDEuNVpNNS41IDE0QzUuNzc2MTQgMTQgNiAxMy43NzYxIDYgMTMuNUM2IDEzLjIyMzkgNS43NzYxNCAxMyA1LjUgMTNDNS4yMjM4NiAxMyA1IDEzLjIyMzkgNSAxMy41QzUgMTMuNzc2MSA1LjIyMzg2IDE0IDUuNSAxNFpNOCAxLjVDOCAxLjc3NjE0IDcuNzc2MTQgMiA3LjUgMkM3LjIyMzg2IDIgNyAxLjc3NjE0IDcgMS41QzcgMS4yMjM4NiA3LjIyMzg2IDEgNy41IDFDNy43NzYxNCAxIDggMS4yMjM4NiA4IDEuNVpNNy41IDE0QzcuNzc2MTQgMTQgOCAxMy43NzYxIDggMTMuNUM4IDEzLjIyMzkgNy43NzYxNCAxMyA3LjUgMTNDNy4yMjM4NiAxMyA3IDEzLjIyMzkgNyAxMy41QzcgMTMuNzc2MSA3LjIyMzg2IDE0IDcuNSAxNFpNMTAgMS41QzEwIDEuNzc2MTQgOS43NzYxNCAyIDkuNSAyQzkuMjIzODYgMiA5IDEuNzc2MTQgOSAxLjVDOSAxLjIyMzg2IDkuMjIzODYgMSA5LjUgMUM5Ljc3NjE0IDEgMTAgMS4yMjM4NiAxMCAxLjVaTTkuNSAxNEM5Ljc3NjE0IDE0IDEwIDEzLjc3NjEgMTAgMTMuNUMxMCAxMy4yMjM5IDkuNzc2MTQgMTMgOS41IDEzQzkuMjIzODYgMTMgOSAxMy4yMjM5IDkgMTMuNUM5IDEzLjc3NjEgOS4yMjM4NiAxNCA5LjUgMTRaTTEyIDEuNUMxMiAxLjc3NjE0IDExLjc3NjEgMiAxMS41IDJDMTEuMjIzOSAyIDExIDEuNzc2MTQgMTEgMS41QzExIDEuMjIzODYgMTEuMjIzOSAxIDExLjUgMUMxMS43NzYxIDEgMTIgMS4yMjM4NiAxMiAxLjVaTTExLjUgMTRDMTEuNzc2MSAxNCAxMiAxMy43NzYxIDEyIDEzLjVDMTIgMTMuMjIzOSAxMS43NzYxIDEzIDExLjUgMTNDMTEuMjIzOSAxMyAxMSAxMy4yMjM5IDExIDEzLjVDMTEgMTMuNzc2MSAxMS4yMjM5IDE0IDExLjUgMTRaTTE0IDEuNUMxNCAxLjc3NjE0IDEzLjc3NjEgMiAxMy41IDJDMTMuMjIzOSAyIDEzIDEuNzc2MTQgMTMgMS41QzEzIDEuMjIzODYgMTMuMjIzOSAxIDEzLjUgMUMxMy43NzYxIDEgMTQgMS4yMjM4NiAxNCAxLjVaTTEzLjUgMTRDMTMuNzc2MSAxNCAxNCAxMy43NzYxIDE0IDEzLjVDMTQgMTMuMjIzOSAxMy43NzYxIDEzIDEzLjUgMTNDMTMuMjIzOSAxMyAxMyAxMy4yMjM5IDEzIDEzLjVDMTMgMTMuNzc2MSAxMy4yMjM5IDE0IDEzLjUgMTRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxncj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNiAzLjVDNiAyLjY3MTU3IDYuNjcxNTcgMiA3LjUgMkM4LjMyODQzIDIgOSAyLjY3MTU3IDkgMy41QzkgNC4zMjg0MyA4LjMyODQzIDUgNy41IDVDNi42NzE1NyA1IDYgNC4zMjg0MyA2IDMuNVpNOCA1Ljk0OTk5QzkuMTQxMTIgNS43MTgzNiAxMCA0LjcwOTQ4IDEwIDMuNUMxMCAyLjExOTI5IDguODgwNzEgMSA3LjUgMUM2LjExOTI5IDEgNSAyLjExOTI5IDUgMy41QzUgNC43MDk0OCA1Ljg1ODg4IDUuNzE4MzYgNyA1Ljk0OTk5VjEzLjVDNyAxMy43NzYxIDcuMjIzODYgMTQgNy41IDE0QzcuNzc2MTQgMTQgOCAxMy43NzYxIDggMTMuNVY1Ljk0OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQ3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwIDMuNUMxMCA0LjcwOTQ4IDkuMTQxMTIgNS43MTgzNiA4IDUuOTQ5OTlWMTMuNUM4IDEzLjc3NjEgNy43NzYxNCAxNCA3LjUgMTRDNy4yMjM4NiAxNCA3IDEzLjc3NjEgNyAxMy41VjUuOTQ5OTlDNS44NTg4OCA1LjcxODM2IDUgNC43MDk0OCA1IDMuNUM1IDIuMTE5MjkgNi4xMTkyOSAxIDcuNSAxQzguODgwNzEgMSAxMCAyLjExOTI5IDEwIDMuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG1yPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzA3NSA3LjQ5OTg4QzAuODc3MDc1IDMuODQyMTkgMy44NDIyMiAwLjg3NzA0NSA3LjQ5OTkxIDAuODc3MDQ1QzExLjE1NzYgMC44NzcwNDUgMTQuMTIyNyAzLjg0MjE5IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDExLjE1NzUgMTEuMTU3NiAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MzLjg0MjIyIDE0LjEyMjcgMC44NzcwNzUgMTEuMTU3NSAwLjg3NzA3NSA3LjQ5OTg4Wk03LjQ5OTkxIDEuODI3MDRDNC4zNjY4OSAxLjgyNzA0IDEuODI3MDggNC4zNjY4NiAxLjgyNzA4IDcuNDk5ODhDMS44MjcwOCAxMC42MzI5IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDMTAuNjMyOSAxMy4xNzI3IDEzLjE3MjcgMTAuNjMyOSAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyA0LjM2Njg2IDEwLjYzMjkgMS44MjcwNCA3LjQ5OTkxIDEuODI3MDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4wNVwiLGQ6XCJNNi43ODI5NiAxMy4zNzZDOC43MzkwNCA5Ljk1Mjg0IDguNzM5MDQgNS4wNDcxOSA2Ljc4Mjk2IDEuNjI0MDVMNy4yMTcwOCAxLjM3NTk4QzkuMjYxIDQuOTUyODMgOS4yNjEgMTAuMDQ3MiA3LjIxNzA4IDEzLjYyNEw2Ljc4Mjk2IDEzLjM3NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjFcIixkOlwiTTcuMjgyMDQgMTMuNDc3NUM5LjIzOTI5IDkuOTk1MjMgOS4yMzkyOSA1LjAwNDc1IDcuMjgyMDQgMS41MjI0OEw3LjcxNzkxIDEuMjc3NUM5Ljc2MDY3IDQuOTExOSA5Ljc2MDY3IDEwLjA4ODEgNy43MTc5MSAxMy43MjI1TDcuMjgyMDQgMTMuNDc3NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjE1XCIsZDpcIk03LjgyMDk4IDEzLjUwNjRDOS43MjUwMiA5Ljk5NTIzIDkuNzI2MzYgNS4wMTQxMSA3LjgyNDkyIDEuNTAwODRMOC4yNjQ2NSAxLjI2Mjg1QzEwLjI0NjUgNC45MjQ2NiAxMC4yNDUxIDEwLjA4NSA4LjI2MDUyIDEzLjc0NDhMNy44MjA5OCAxMy41MDY0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMlwiLGQ6XCJNOC40MTI4NCAxMy40MjlDMTAuMTk1MiA5LjkyODQyIDEwLjE5NTcgNS4wNzUzNyA4LjQxNDM1IDEuNTc0MDJMOC44NTk5OSAxLjM0NzI5QzEwLjcxMzkgNC45OTExMyAxMC43MTMzIDEwLjAxMjggOC44NTg0MSAxMy42NTU5TDguNDEyODQgMTMuNDI5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMjVcIixkOlwiTTkuMDI0NDEgMTMuMjk1NkMxMC42NTY3IDkuODM3OSAxMC42NTg2IDUuMTc3MTUgOS4wMzAwNSAxLjcxNjU2TDkuNDgyNDUgMS41MDM2NkMxMS4xNzQ1IDUuMDk5MTkgMTEuMTcyNiA5LjkxNjI5IDkuNDc2NTcgMTMuNTA5MUw5LjAyNDQxIDEzLjI5NTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4zXCIsZDpcIk05LjY2ODA5IDEzLjA2NTVDMTEuMTA5NyA5LjY5NTcyIDExLjExMDcgNS4zMTIxIDkuNjcwODggMS45NDA5NUwxMC4xMzA3IDEuNzQ0NTdDMTEuNjI0MSA1LjI0MTIxIDExLjYyMzEgOS43NjY4MyAxMC4xMjc4IDEzLjI2MjJMOS42NjgwOSAxMy4wNjU1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMzVcIixkOlwiTTEwLjMzMSAxMi43NDU2QzExLjU1NTEgOS41MjA3MyAxMS41NTY0IDUuNDkxMDMgMTAuMzM0NyAyLjI2NDQ0TDEwLjgwMjQgMi4wODc0QzEyLjA2NzIgNS40MjgxNSAxMi4wNjU5IDkuNTgzOTQgMTAuNzk4NSAxMi45MjMxTDEwLjMzMSAxMi43NDU2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNFwiLGQ6XCJNMTEuMDE1NSAxMi4yOTg2QzExLjk5MzggOS4yOTc0NCAxMS45OTQ4IDUuNzEyOTYgMTEuMDE4NCAyLjcxMDY3TDExLjQ5MzkgMi41NTYwM0MxMi41MDMgNS42NTg5IDEyLjUwMiA5LjM1MTc4IDExLjQ5MDkgMTIuNDUzNUwxMS4wMTU1IDEyLjI5ODZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi40NVwiLGQ6XCJNMTEuNzIxNCAxMS42NjhDMTIuNDI1NCA5LjAxMzAzIDEyLjQyNjIgNS45OTY5MSAxMS43MjM3IDMuMzQxMTZMMTIuMjA3MSAzLjIxMzI5QzEyLjkzMTggNS45NTI5MiAxMi45MzEgOS4wNTcyOCAxMi4yMDQ3IDExLjc5NjFMMTEuNzIxNCAxMS42NjhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi41XCIsZDpcIk0xMi40NDMyIDEwLjc1MkMxMi44NTI0IDguNjM3NjIgMTIuODUyMyA2LjM2MDg5IDEyLjQ0MjkgNC4yNDY2TDEyLjkzMzggNC4xNTE1NUMxMy4zNTUzIDYuMzI4NjEgMTMuMzU1NCA4LjY2OTg1IDEyLjkzNDEgMTAuODQ3TDEyLjQ0MzIgMTAuNzUyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuODc3MDc1IDcuNDk5ODhDMC44NzcwNzUgMy44NDIxOSAzLjg0MjIyIDAuODc3MDQ1IDcuNDk5OTEgMC44NzcwNDVDMTEuMTU3NiAwLjg3NzA0NSAxNC4xMjI3IDMuODQyMTkgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgMTEuMTU3NSAxMS4xNTc2IDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzMuODQyMjIgMTQuMTIyNyAwLjg3NzA3NSAxMS4xNTc1IDAuODc3MDc1IDcuNDk5ODhaTTcuNDk5OTEgMS44MjcwNEM0LjM2Njg5IDEuODI3MDQgMS44MjcwOCA0LjM2Njg2IDEuODI3MDggNy40OTk4OEMxLjgyNzA4IDEwLjYzMjkgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0MxMC42MzI5IDEzLjE3MjcgMTMuMTcyNyAxMC42MzI5IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDQuMzY2ODYgMTAuNjMyOSAxLjgyNzA0IDcuNDk5OTEgMS44MjcwNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjA1XCIsZDpcIk0xMi4xNjE5IDMuODUxODJDOC4zNTgxNyA0Ljg4OTE4IDQuODg5MzYgOC4zNTggMy44NTE5OSAxMi4xNjE3TDMuMzY5NiAxMi4wMzAxQzQuNDUzNTYgOC4wNTU2NCA4LjA1NTgxIDQuNDUzMzkgMTIuMDMwMyAzLjM2OTQzTDEyLjE2MTkgMy44NTE4MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjFcIixkOlwiTTExLjg4MDcgMy40MjcwN0M4LjAzNDQxIDQuNTA1NDIgNC41MDU2MSA4LjAzNDIyIDMuNDI3MjYgMTEuODgwNUwyLjk0NTgyIDExLjc0NTZDNC4wNzEyOSA3LjczMTIxIDcuNzMxNCA0LjA3MTEgMTEuNzQ1OCAyLjk0NTYzTDExLjg4MDcgMy40MjcwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjE1XCIsZDpcIk0xMS41MjAxIDMuMDI1NTZDNy42OTA5MiA0LjE2MTk5IDQuMTY3NzkgNy42ODMyMyAzLjAyODA1IDExLjUxMkwyLjU0ODgzIDExLjM2OTRDMy43MzY3NiA3LjM3ODY5IDcuMzg2NTkgMy43MzA3NiAxMS4zNzc4IDIuNTQ2MjNMMTEuNTIwMSAzLjAyNTU2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMlwiLGQ6XCJNMTEuMDQ2OCAyLjY2MTY5QzcuMzExMTcgMy44NzY2NCAzLjg3OTE4IDcuMzA3OSAyLjY2Mjk4IDExLjA0MzRMMi4xODc1NCAxMC44ODg2QzMuNDUzMjQgNy4wMDEwOSA3LjAwNDQ1IDMuNDUwNjIgMTAuODkyMSAyLjE4NjIxTDExLjA0NjggMi42NjE2OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjI1XCIsZDpcIk0xMC41MjAxIDIuMzIzNjVDNi45MjA5MSAzLjYxNDQ3IDMuNjIzOTEgNi45MDg3NiAyLjMyODQ1IDEwLjUwNzNMMS44NTggMTAuMzM4QzMuMjAzOTggNi41OTkwOSA2LjYxMTU1IDMuMTk0MjQgMTAuMzUxMyAxLjg1MzAxTDEwLjUyMDEgMi4zMjM2NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjNcIixkOlwiTTkuOTAyMjIgMi4wMzEyMkM2LjUwMDAzIDMuMzk0NjUgMy4zOTk2OCA2LjQ5MzY3IDIuMDMzOTkgOS44OTU1MUwxLjU2OTk4IDkuNzA5MjRDMi45ODY1MSA2LjE4MDc2IDYuMTg3MjggMi45ODEzMyA5LjcxNjIyIDEuNTY3MUw5LjkwMjIyIDIuMDMxMjJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4zNVwiLGQ6XCJNOS4yMDcyNyAxLjc4ODczQzYuMDYxMzYgMy4yMDM0OSAzLjIxMTAzIDYuMDUyMDMgMS43OTMzMSA5LjE5NzM4TDEuMzM3NDcgOC45OTE5MkMyLjgwNTM2IDUuNzM1MjggNS43NDQ4NSAyLjc5NzYgOS4wMDIyIDEuMzMyNzJMOS4yMDcyNyAxLjc4ODczWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNFwiLGQ6XCJNOC40MDcxMyAxLjYyMDg1QzUuNTkzMjMgMy4wNTExNyAzLjA1Nzk0IDUuNTg1MDkgMS42MjU0NCA4LjM5ODQ3TDEuMTc5ODcgOC4xNzE2QzIuNjYwMzYgNS4yNjM5NyA1LjI3MjMyIDIuNjUzNCA4LjE4MDU3IDEuMTc1MTNMOC40MDcxMyAxLjYyMDg1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNDVcIixkOlwiTTcuNDYyMDcgMS41Njc0N0M1LjA4Njg5IDIuOTQ2OTUgMi45NTM2MiA1LjA3OTEyIDEuNTcyNDkgNy40NTM3OUwxLjE0MDI4IDcuMjAyNDFDMi41NjUwMyA0Ljc1MjczIDQuNzYwNyAyLjU1ODE4IDcuMjEwOTYgMS4xMzUxTDcuNDYyMDcgMS41Njc0N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjVcIixkOlwiTTYuMzA0MDcgMS43MDQ4N0M0LjUxOTY0IDIuOTEwNjMgMi45MDk4MyA0LjUyMDYxIDEuNzA0MyA2LjMwNTEzTDEuMjg5OTggNi4wMjUyNEMyLjUzMTMgNC4xODc3MyA0LjE4NjczIDIuNTMyMTQgNi4wMjQxMyAxLjI5MDU5TDYuMzA0MDcgMS43MDQ4N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHdyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc3MDQ1QzMuODQyMjIgMC44NzcwNDUgMC44NzcwNzUgMy44NDIxOSAwLjg3NzA3NSA3LjQ5OTg4QzAuODc3MDc1IDkuMTQ4OCAxLjQ3OTY5IDEwLjY1NyAyLjQ3NjcgMTEuODE2MkwxLjY0NjQ3IDEyLjY0NjRDMS40NTEyMSAxMi44NDE3IDEuNDUxMjEgMTMuMTU4MyAxLjY0NjQ3IDEzLjM1MzVDMS44NDE3MyAxMy41NDg4IDIuMTU4MzIgMTMuNTQ4OCAyLjM1MzU4IDEzLjM1MzVMMy4xODM4MyAxMi41MjMzQzQuMzQzMDIgMTMuNTIwMiA1Ljg1MTEgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMTEuMTU3NiAxNC4xMjI3IDE0LjEyMjcgMTEuMTU3NSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyA1Ljg1MTA3IDEzLjUyMDIgNC4zNDI5OCAxMi41MjMzIDMuMTgzOEwxMy4zNTM2IDIuMzUzNTVDMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMS44NDE3IDEzLjM1MzYgMS42NDY0NEMxMy4xNTgzIDEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEyLjY0NjUgMS42NDY0NEwxMS44MTYyIDIuNDc2NjdDMTAuNjU3IDEuNDc5NjYgOS4xNDg4MyAwLjg3NzA0NSA3LjQ5OTkxIDAuODc3MDQ1Wk0xMS4xNDIzIDMuMTUwNjVDMTAuMTU2OCAyLjMyNDQ5IDguODg2NDQgMS44MjcwNCA3LjQ5OTkxIDEuODI3MDRDNC4zNjY4OSAxLjgyNzA0IDEuODI3MDggNC4zNjY4NiAxLjgyNzA4IDcuNDk5ODhDMS44MjcwOCA4Ljg4NjQxIDIuMzI0NTIgMTAuMTU2OCAzLjE1MDY5IDExLjE0MjJMMTEuMTQyMyAzLjE1MDY1Wk0zLjg1NzgxIDExLjg0OTNDNC44NDMyMiAxMi42NzUzIDYuMTEzNDggMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDMTAuNjMyOSAxMy4xNzI3IDEzLjE3MjcgMTAuNjMyOSAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyA2LjExMzQ1IDEyLjY3NTQgNC44NDMxOSAxMS44NDkzIDMuODU3NzhMMy44NTc4MSAxMS44NDkzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMDVcIixkOlwiTTYuNzgyOTYgMTMuMzc2QzguNzM5MDQgOS45NTI4NCA4LjczOTA0IDUuMDQ3MTkgNi43ODI5NiAxLjYyNDA1TDcuMjE3MDggMS4zNzU5OEM5LjI2MSA0Ljk1MjgzIDkuMjYxIDEwLjA0NzIgNy4yMTcwOCAxMy42MjRMNi43ODI5NiAxMy4zNzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4xXCIsZDpcIk03LjI4MjA0IDEzLjQ3NzVDOS4yMzkyOSA5Ljk5NTIzIDkuMjM5MjkgNS4wMDQ3NSA3LjI4MjA0IDEuNTIyNDhMNy43MTc5MSAxLjI3NzVDOS43NjA2NyA0LjkxMTkgOS43NjA2NyAxMC4wODgxIDcuNzE3OTEgMTMuNzIyNUw3LjI4MjA0IDEzLjQ3NzVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4xNVwiLGQ6XCJNNy44MjA5OCAxMy41MDY0QzkuNzI1MDIgOS45OTUyMyA5LjcyNjM2IDUuMDE0MTEgNy44MjQ5MiAxLjUwMDg0TDguMjY0NjUgMS4yNjI4NUMxMC4yNDY1IDQuOTI0NjYgMTAuMjQ1MSAxMC4wODUgOC4yNjA1MiAxMy43NDQ4TDcuODIwOTggMTMuNTA2NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjJcIixkOlwiTTguNDEyODQgMTMuNDI5QzEwLjE5NTIgOS45Mjg0MiAxMC4xOTU3IDUuMDc1MzcgOC40MTQzNSAxLjU3NDAyTDguODU5OTkgMS4zNDcyOUMxMC43MTM5IDQuOTkxMTMgMTAuNzEzMyAxMC4wMTI4IDguODU4NDEgMTMuNjU1OUw4LjQxMjg0IDEzLjQyOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjI1XCIsZDpcIk05LjAyNDQxIDEzLjI5NTZDMTAuNjU2NyA5LjgzNzkgMTAuNjU4NiA1LjE3NzE1IDkuMDMwMDUgMS43MTY1Nkw5LjQ4MjQ1IDEuNTAzNjZDMTEuMTc0NSA1LjA5OTE5IDExLjE3MjYgOS45MTYyOSA5LjQ3NjU3IDEzLjUwOTFMOS4wMjQ0MSAxMy4yOTU2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuM1wiLGQ6XCJNOS42NjgwOSAxMy4wNjU1QzExLjEwOTcgOS42OTU3MiAxMS4xMTA3IDUuMzEyMSA5LjY3MDg4IDEuOTQwOTVMMTAuMTMwNyAxLjc0NDU3QzExLjYyNDEgNS4yNDEyMSAxMS42MjMxIDkuNzY2ODMgMTAuMTI3OCAxMy4yNjIyTDkuNjY4MDkgMTMuMDY1NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjM1XCIsZDpcIk0xMC4zMzEgMTIuNzQ1NkMxMS41NTUxIDkuNTIwNzMgMTEuNTU2NCA1LjQ5MTAzIDEwLjMzNDcgMi4yNjQ0NEwxMC44MDI0IDIuMDg3NEMxMi4wNjcyIDUuNDI4MTUgMTIuMDY1OSA5LjU4Mzk0IDEwLjc5ODUgMTIuOTIzMUwxMC4zMzEgMTIuNzQ1NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjRcIixkOlwiTTExLjAxNTUgMTIuMjk4NkMxMS45OTM4IDkuMjk3NDQgMTEuOTk0OCA1LjcxMjk2IDExLjAxODQgMi43MTA2N0wxMS40OTM5IDIuNTU2MDNDMTIuNTAzIDUuNjU4OSAxMi41MDIgOS4zNTE3OCAxMS40OTA5IDEyLjQ1MzVMMTEuMDE1NSAxMi4yOTg2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNDVcIixkOlwiTTExLjcyMTQgMTEuNjY4QzEyLjQyNTQgOS4wMTMwMyAxMi40MjYyIDUuOTk2OTEgMTEuNzIzNyAzLjM0MTE2TDEyLjIwNzEgMy4yMTMyOUMxMi45MzE4IDUuOTUyOTIgMTIuOTMxIDkuMDU3MjggMTIuMjA0NyAxMS43OTYxTDExLjcyMTQgMTEuNjY4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNVwiLGQ6XCJNMTIuNDQzMiAxMC43NTJDMTIuODUyNCA4LjYzNzYyIDEyLjg1MjMgNi4zNjA4OSAxMi40NDI5IDQuMjQ2NkwxMi45MzM4IDQuMTUxNTVDMTMuMzU1MyA2LjMyODYxIDEzLjM1NTQgOC42Njk4NSAxMi45MzQxIDEwLjg0N0wxMi40NDMyIDEwLjc1MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGJyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4wNVwiLGQ6XCJNMTIuMTM5OCAzLjg4NjE2QzEzLjg1NTMgNC45NDE1OSAxNSA2LjgzNyAxNSA4Ljk5OTk5QzE1IDEyLjMxMzcgMTIuMzEzNyAxNSA5LjAwMDAxIDE1QzYuODQzNSAxNSA0Ljk1Mjk1IDEzLjg2MjEgMy44OTU2OSAxMi4xNTUyTDQuMzIwNzUgMTEuODkxOUM1LjI5MDY5IDEzLjQ1NzggNy4wMjM3NSAxNC41IDkuMDAwMDEgMTQuNUMxMi4wMzc1IDE0LjUgMTQuNSAxMi4wMzc1IDE0LjUgOC45OTk5OUMxNC41IDcuMDE3OCAxMy40NTE2IDUuMjgwMjYgMTEuODc3OCA0LjMxMjAyTDEyLjEzOTggMy44ODYxNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjJcIixkOlwiTTEyLjg1MSA1LjA3MzJDMTMuODY4NCA2LjA3MTA1IDE0LjUgNy40NjE5OCAxNC41IDguOTk5OTlDMTQuNSAxMi4wMzc1IDEyLjAzNzYgMTQuNSA5LjAwMDAyIDE0LjVDNy40NjIxNCAxNC41IDYuMDcxMzEgMTMuODY4NSA1LjA3MzQ4IDEyLjg1MTJMNS40MzA0MiAxMi41MDExQzYuMzM4MDkgMTMuNDI2NCA3LjYwMTg1IDE0IDkuMDAwMDIgMTRDMTEuNzYxNCAxNCAxNCAxMS43NjE0IDE0IDguOTk5OTlDMTQgNy42MDE3IDEzLjQyNjQgNi4zMzc4NSAxMi41MDA5IDUuNDMwMTdMMTIuODUxIDUuMDczMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjM1XCIsZDpcIk0xMy4zMDIxIDYuNDUwNzFDMTMuNzQ1NSA3LjE5NzM3IDE0IDguMDY5MzQgMTQgOUMxNCAxMS43NjE0IDExLjc2MTQgMTQgOS4wMDAwMSAxNEM4LjA0ODY3IDE0IDcuMTU4NjcgMTMuNzM0MSA2LjQwMTE4IDEzLjI3MjNMNi42NjE0MSAxMi44NDU0QzcuMzQyNzQgMTMuMjYwNyA4LjE0MzA1IDEzLjUgOS4wMDAwMSAxMy41QzExLjQ4NTMgMTMuNSAxMy41IDExLjQ4NTMgMTMuNSA5QzEzLjUgOC4xNjE2NCAxMy4yNzEgNy4zNzc1MyAxMi44NzIyIDYuNzA1OThMMTMuMzAyMSA2LjQ1MDcxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNVwiLGQ6XCJNMTMuMzc0NCA3Ljk0MDIxQzEzLjQ1NjYgOC4yODAzIDEzLjUgOC42MzUyNCAxMy41IDlDMTMuNSAxMS40ODUzIDExLjQ4NTMgMTMuNSA5LjAwMDAyIDEzLjVDOC42MTEwMyAxMy41IDguMjMzMjEgMTMuNDUwNiA3Ljg3MjY3IDEzLjM1NzZMNy45OTc1OCAxMi44NzM0QzguMzE3NjcgMTIuOTU2IDguNjUzNTIgMTMgOS4wMDAwMiAxM0MxMS4yMDkxIDEzIDEzIDExLjIwOTEgMTMgOUMxMyA4LjY3NTA3IDEyLjk2MTMgOC4zNTk1MiAxMi44ODg0IDguMDU3NTZMMTMuMzc0NCA3Ljk0MDIxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNjVcIixkOlwiTTEyLjkxNTUgOS44MjEzMkMxMi41ODk4IDExLjM4MTMgMTEuMzU2MiAxMi42MDcyIDkuNzkyMDMgMTIuOTIxNUw5LjY5MzUzIDEyLjQzMTNDMTEuMDYxMyAxMi4xNTY1IDEyLjE0MTMgMTEuMDgzMyAxMi40MjYxIDkuNzE5MTNMMTIuOTE1NSA5LjgyMTMyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS4yNzcxIDcuNTAyNTJDMS4yNzcxIDQuMDY0NTUgNC4wNjQxMyAxLjI3NzUzIDcuNTAyMDkgMS4yNzc1M0MxMC45NCAxLjI3NzUzIDEzLjcyNzEgNC4wNjQ1NSAxMy43MjcxIDcuNTAyNTJDMTMuNzI3MSAxMC45NDA1IDEwLjk0IDEzLjcyNzUgNy41MDIwOSAxMy43Mjc1QzQuMDY0MTIgMTMuNzI3NSAxLjI3NzEgMTAuOTQwNSAxLjI3NzEgNy41MDI1MlpNNy41MDIwOSAyLjIyNzUyQzQuNTg4OCAyLjIyNzUyIDIuMjI3MSA0LjU4OTIyIDIuMjI3MSA3LjUwMjUyQzIuMjI3MSAxMC40MTU4IDQuNTg4OCAxMi43Nzc1IDcuNTAyMDkgMTIuNzc3NUMxMC40MTU0IDEyLjc3NzUgMTIuNzc3MSAxMC40MTU4IDEyLjc3NzEgNy41MDI1MkMxMi43NzcxIDQuNTg5MjIgMTAuNDE1NCAyLjIyNzUyIDcuNTAyMDkgMi4yMjc1MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHhyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDcuNTAwMDNDNSA4LjMyODQ1IDQuMzI4NDMgOS4wMDAwMyAzLjUgOS4wMDAwM0MyLjY3MTU3IDkuMDAwMDMgMiA4LjMyODQ1IDIgNy41MDAwM0MyIDYuNjcxNiAyLjY3MTU3IDYuMDAwMDMgMy41IDYuMDAwMDNDNC4zMjg0MyA2LjAwMDAzIDUgNi42NzE2IDUgNy41MDAwM1pNNS43MTMxMyA4LjY2Mzg4QzUuMjk0NDUgOS40NTgzOCA0LjQ2MDQ4IDEwIDMuNSAxMEMyLjExOTI5IDEwIDEgOC44ODA3NCAxIDcuNTAwMDNDMSA2LjExOTMxIDIuMTE5MjkgNS4wMDAwMyAzLjUgNS4wMDAwM0M0LjQ2MDQ4IDUuMDAwMDMgNS4yOTQ0NSA1LjU0MTY3IDUuNzEzMTMgNi4zMzYxNkw5LjEwNDI0IDQuMjE2NzFDOS4wMzY0MyAzLjk4OTY4IDkgMy43NDkxMSA5IDMuNTAwMDNDOSAyLjExOTMyIDEwLjExOTMgMS4wMDAwMyAxMS41IDEuMDAwMDNDMTIuODgwNyAxLjAwMDAzIDE0IDIuMTE5MzIgMTQgMy41MDAwM0MxNCA0Ljg4MDc0IDEyLjg4MDcgNi4wMDAwMyAxMS41IDYuMDAwMDNDMTAuNjkxNSA2LjAwMDAzIDkuOTcyNjQgNS42MTYyNCA5LjUxNTY2IDUuMDIwOUw1Ljk4NTMgNy4yMjczOEM1Ljk5NTAyIDcuMzE2OTIgNiA3LjQwNzg5IDYgNy41MDAwM0M2IDcuNTkyMTYgNS45OTUwMiA3LjY4MzEyIDUuOTg1MyA3Ljc3MjY3TDkuNTE1NjcgOS45NzkxNUM5Ljk3MjY1IDkuMzgzODIgMTAuNjkxNSA5LjAwMDAzIDExLjUgOS4wMDAwM0MxMi44ODA3IDkuMDAwMDMgMTQgMTAuMTE5MyAxNCAxMS41QzE0IDEyLjg4MDcgMTIuODgwNyAxNCAxMS41IDE0QzEwLjExOTMgMTQgOSAxMi44ODA3IDkgMTEuNUM5IDExLjI1MDkgOS4wMzY0MyAxMS4wMTA0IDkuMTA0MjUgMTAuNzgzM0w1LjcxMzEzIDguNjYzODhaTTExLjUgNS4wMDAwM0MxMi4zMjg0IDUuMDAwMDMgMTMgNC4zMjg0NiAxMyAzLjUwMDAzQzEzIDIuNjcxNiAxMi4zMjg0IDIuMDAwMDMgMTEuNSAyLjAwMDAzQzEwLjY3MTYgMi4wMDAwMyAxMCAyLjY3MTYgMTAgMy41MDAwM0MxMCA0LjMyODQ2IDEwLjY3MTYgNS4wMDAwMyAxMS41IDUuMDAwMDNaTTEzIDExLjVDMTMgMTIuMzI4NSAxMi4zMjg0IDEzIDExLjUgMTNDMTAuNjcxNiAxMyAxMCAxMi4zMjg1IDEwIDExLjVDMTAgMTAuNjcxNiAxMC42NzE2IDEwIDExLjUgMTBDMTIuMzI4NCAxMCAxMyAxMC42NzE2IDEzIDExLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxfcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy41IDUuMDAwMDZDMy4yMjM4NiA1LjAwMDA2IDMgNS4yMjM5MiAzIDUuNTAwMDZMMyAxMS41MDAxQzMgMTEuNzc2MiAzLjIyMzg2IDEyLjAwMDEgMy41IDEyLjAwMDFMMTEuNSAxMi4wMDAxQzExLjc3NjEgMTIuMDAwMSAxMiAxMS43NzYyIDEyIDExLjUwMDFMMTIgNS41MDAwNkMxMiA1LjIyMzkyIDExLjc3NjEgNS4wMDAwNiAxMS41IDUuMDAwMDZMMTAuMjUgNS4wMDAwNkM5Ljk3Mzg2IDUuMDAwMDYgOS43NSA0Ljc3NjIgOS43NSA0LjUwMDA2QzkuNzUgNC4yMjM5MiA5Ljk3Mzg2IDQuMDAwMDYgMTAuMjUgNC4wMDAwNkwxMS41IDQuMDAwMDZDMTIuMzI4NCA0LjAwMDA2IDEzIDQuNjcxNjMgMTMgNS41MDAwNkwxMyAxMS41MDAxQzEzIDEyLjMyODUgMTIuMzI4NCAxMy4wMDAxIDExLjUgMTMuMDAwMUwzLjUgMTMuMDAwMUMyLjY3MTU3IDEzLjAwMDEgMiAxMi4zMjg1IDIgMTEuNTAwMUwyIDUuNTAwMDZDMiA0LjY3MTYzIDIuNjcxNTcgNC4wMDAwNiAzLjUgNC4wMDAwNkw0Ljc1IDQuMDAwMDZDNS4wMjYxNCA0LjAwMDA2IDUuMjUgNC4yMjM5MiA1LjI1IDQuNTAwMDZDNS4yNSA0Ljc3NjIgNS4wMjYxNCA1LjAwMDA2IDQuNzUgNS4wMDAwNkwzLjUgNS4wMDAwNlpNNyAxLjYzNjRMNS41NjgyIDMuMDY4MkM1LjM5MjQ2IDMuMjQzOTMgNS4xMDc1NCAzLjI0MzkzIDQuOTMxOCAzLjA2ODJDNC43NTYwNyAyLjg5MjQ2IDQuNzU2MDcgMi42MDc1NCA0LjkzMTggMi40MzE4TDcuMTgxOCAwLjE4MTgwMkM3LjI2NjE5IDAuMDk3NDEgNy4zODA2NSAwLjA0OTk5OSA3LjUgMC4wNDk5OTlDNy42MTkzNSAwLjA0OTk5OSA3LjczMzgxIDAuMDk3NDEgNy44MTgyIDAuMTgxODAyTDEwLjA2ODIgMi40MzE4QzEwLjI0MzkgMi42MDc1NCAxMC4yNDM5IDIuODkyNDYgMTAuMDY4MiAzLjA2ODJDOS44OTI0NiAzLjI0MzkzIDkuNjA3NTQgMy4yNDM5MyA5LjQzMTggMy4wNjgyTDggMS42MzY0TDggOC41QzggOC43NzYxNCA3Ljc3NjE0IDkgNy41IDlDNy4yMjM4NiA5IDcgOC43NzYxNCA3IDguNUw3IDEuNjM2NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LExyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi4zNTM2IDEuMTQ2NDVDMTIuMTU4MyAwLjk1MTE4NCAxMS44NDE3IDAuOTUxMTg0IDExLjY0NjQgMS4xNDY0NUMxMS40NTEyIDEuMzQxNzEgMTEuNDUxMiAxLjY1ODI5IDExLjY0NjQgMS44NTM1NUwxMi43OTI5IDNIMTJDMTAuNzAzNyAzIDkuNzExMTEgMy41ODQyMyA4Ljg3MjQ4IDQuMzg5MzFDOC4yMDA2NSA1LjAzNDI3IDcuNTkzNDkgNS44NTY4NCA2Ljk5NDYxIDYuNjY4MkM2Ljg2Mjg3IDYuODQ2NjggNi43MzE1NCA3LjAyNDYyIDYuNiA3LjJDNS4xMDg3NCA5LjE4ODM1IDMuNDkwMzcgMTEgMC41IDExQzAuMjIzODU4IDExIDAgMTEuMjIzOSAwIDExLjVDMCAxMS43NzYxIDAuMjIzODU4IDEyIDAuNSAxMkM0LjAwOTYzIDEyIDUuODkxMjYgOS44MTE2NSA3LjQgNy44QzcuNTQzNjcgNy42MDg0NSA3LjY4MzIgNy40MTk2MiA3LjgxOTk2IDcuMjM0NTRMNy44MjAwNSA3LjIzNDQzTDcuODIwMDYgNy4yMzQ0MUM4LjQxNjc0IDYuNDI2OTUgOC45NjA2OSA1LjY5MDg1IDkuNTY1MDIgNS4xMTA2OUMxMC4yODg5IDQuNDE1NzcgMTEuMDQ2MyA0IDEyIDRIMTIuNzkyOUwxMS42NDY0IDUuMTQ2NDVDMTEuNDUxMiA1LjM0MTcxIDExLjQ1MTIgNS42NTgyOSAxMS42NDY0IDUuODUzNTVDMTEuODQxNyA2LjA0ODgyIDEyLjE1ODMgNi4wNDg4MiAxMi4zNTM2IDUuODUzNTVMMTQuMzUzNiAzLjg1MzU1QzE0LjU0ODggMy42NTgyOSAxNC41NDg4IDMuMzQxNzEgMTQuMzUzNiAzLjE0NjQ1TDEyLjM1MzYgMS4xNDY0NVpNMC41IDNDMy4zNTI3OCAzIDUuMTI5OTIgNC40NDU4OCA2LjUwNTQ4IDYuMDY3NDZMNi4zNzYyIDYuMjQyNjZDNi4yNDgzIDYuNDE2MSA2LjEyMjkzIDYuNTg2MDkgNiA2Ljc1QzUuOTYzOTcgNi43OTgwNCA1LjkyNzk4IDYuODQ1ODEgNS44OTIgNi44OTMzMUM0LjU3MzQ4IDUuMjkzMDYgMy4wMjYzNyA0IDAuNSA0QzAuMjIzODU4IDQgMCAzLjc3NjE0IDAgMy41QzAgMy4yMjM4NiAwLjIyMzg1OCAzIDAuNSAzWk04Ljg3MjQ4IDEwLjYxMDdDOC4zNzI4NCAxMC4xMzEgNy45MDg5NyA5LjU1MzE0IDcuNDU3NjcgOC45NTQ2OEM3LjY0Njg4IDguNzE2OTMgNy44MjcwNCA4LjQ4MDYxIDggOC4yNUw4LjA4OTg3IDguMTI5ODdDOC41ODQxMiA4Ljc5NDAyIDkuMDUyODggOS4zOTc2NiA5LjU2NTAyIDkuODg5MzFDMTAuMjg4OSAxMC41ODQyIDExLjA0NjMgMTEgMTIgMTFIMTIuNzkyOUwxMS42NDY0IDkuODUzNTVDMTEuNDUxMiA5LjY1ODI5IDExLjQ1MTIgOS4zNDE3MSAxMS42NDY0IDkuMTQ2NDVDMTEuODQxNyA4Ljk1MTE4IDEyLjE1ODMgOC45NTExOCAxMi4zNTM2IDkuMTQ2NDVMMTQuMzUzNiAxMS4xNDY0QzE0LjU0ODggMTEuMzQxNyAxNC41NDg4IDExLjY1ODMgMTQuMzUzNiAxMS44NTM2TDEyLjM1MzYgMTMuODUzNkMxMi4xNTgzIDE0LjA0ODggMTEuODQxNyAxNC4wNDg4IDExLjY0NjQgMTMuODUzNkMxMS40NTEyIDEzLjY1ODMgMTEuNDUxMiAxMy4zNDE3IDExLjY0NjQgMTMuMTQ2NEwxMi43OTI5IDEySDEyQzEwLjcwMzcgMTIgOS43MTExMSAxMS40MTU4IDguODcyNDggMTAuNjEwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE9yPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS41IDMuMDQ5OTlDMTEuNzQ4NSAzLjA0OTk5IDExLjk1IDMuMjUxNDYgMTEuOTUgMy40OTk5OVY3LjQ5OTk5QzExLjk1IDcuNzQ4NTIgMTEuNzQ4NSA3Ljk0OTk5IDExLjUgNy45NDk5OUMxMS4yNTE1IDcuOTQ5OTkgMTEuMDUgNy43NDg1MiAxMS4wNSA3LjQ5OTk5VjQuNTg2MzlMNC41ODYzOCAxMS4wNUg3LjQ5OTk5QzcuNzQ4NTIgMTEuMDUgNy45NDk5OSAxMS4yNTE1IDcuOTQ5OTkgMTEuNUM3Ljk0OTk5IDExLjc0ODUgNy43NDg1MiAxMS45NSA3LjQ5OTk5IDExLjk1TDMuNDk5OTkgMTEuOTVDMy4zODA2NCAxMS45NSAzLjI2NjE4IDExLjkwMjYgMy4xODE3OSAxMS44MTgyQzMuMDk3NCAxMS43MzM4IDMuMDQ5OTkgMTEuNjE5MyAzLjA0OTk5IDExLjVMMy4wNDk5OSA3LjQ5OTk5QzMuMDQ5OTkgNy4yNTE0NiAzLjI1MTQ2IDcuMDQ5OTkgMy40OTk5OSA3LjA0OTk5QzMuNzQ4NTIgNy4wNDk5OSAzLjk0OTk5IDcuMjUxNDYgMy45NDk5OSA3LjQ5OTk5TDMuOTQ5OTkgMTAuNDEzNkwxMC40MTM2IDMuOTQ5OTlMNy40OTk5OSAzLjk0OTk5QzcuMjUxNDYgMy45NDk5OSA3LjA0OTk5IDMuNzQ4NTIgNy4wNDk5OSAzLjQ5OTk5QzcuMDQ5OTkgMy4yNTE0NiA3LjI1MTQ2IDMuMDQ5OTkgNy40OTk5OSAzLjA0OTk5TDExLjUgMy4wNDk5OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEVyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUzNzMxIDAuODI2ODczQzcuNTEyNSAwLjgyNDM5MiA3LjQ4NzUgMC44MjQzOTIgNy40NjI2OSAwLjgyNjg3M0wzLjk2MjY5IDEuMTc2ODdDMy44NTY3MiAxLjE4NzQ3IDMuNzYwMjUgMS4yNDI2MiAzLjY5NzM2IDEuMzI4NTdMMC42OTk3NzEgNS40MjUyOEMwLjY1NDA0NiA1LjQ4NjI3IDAuNjI2NDcgNS41NjE2NSAwLjYyNTA1NyA1LjY0MzRDMC42MjUwMTkgNS42NDU2IDAuNjI1IDUuNjQ3ODEgMC42MjUgNS42NTAwMUMwLjYyNSA1LjY1MDUyIDAuNjI1MDAxIDUuNjUxMDMgMC42MjUwMDMgNS42NTE1M0MwLjYyNTM2MyA1Ljc0MjM3IDAuNjU4MDIxIDUuODI1NTkgMC43MTIwODcgNS44OTAzTDcuMjEwNDIgMTMuNzg4M0M3LjI4MTY1IDEzLjg3NDkgNy4zODc4OSAxMy45MjUgNy41IDEzLjkyNUM3LjYxMjExIDEzLjkyNSA3LjcxODM1IDEzLjg3NDkgNy43ODk1OCAxMy43ODgzTDE0LjI4NzkgNS44OTAzMUMxNC4zNDIgNS44MjU2IDE0LjM3NDYgNS43NDIzNyAxNC4zNzUgNS42NTE1M0MxNC4zNzUgNS42NTEwMyAxNC4zNzUgNS42NTA1MiAxNC4zNzUgNS42NTAwMUMxNC4zNzUgNS42NDg0OSAxNC4zNzUgNS42NDY5NyAxNC4zNzUgNS42NDU0NUMxNC4zNzQ5IDUuNjM5NjMgMTQuMzc0NyA1LjYzMzgyIDE0LjM3NDQgNS42MjgwMUMxNC4zNyA1LjU1MjE5IDE0LjM0MzEgNS40ODI0MiAxNC4zMDAyIDUuNDI1MjdMMTEuMzAyNiAxLjMyODU3QzExLjIzOTcgMS4yNDI2MiAxMS4xNDMzIDEuMTg3NDcgMTEuMDM3MyAxLjE3Njg3TDcuNTM3MzEgMC44MjY4NzNaTTEwLjkyNSA1LjI3NTAxVjUuMjUyMzZMMTAuOTIyMyA1LjI3NTAxSDEwLjkyNVpNMTAuOTM0MiA1LjE3NDk4SDEzLjE4NzdMMTEuMjQ5NSAyLjUyNjFMMTAuOTM0MiA1LjE3NDk4Wk0xMC41NzA3IDEuODgzOTVMOC4wNDQzMiAxLjYzMTMxTDEwLjE3NDcgNS4yMTAzNEwxMC41NzA3IDEuODgzOTVaTTYuOTU1NjggMS42MzEzMUw0LjQyOTMxIDEuODgzOTVMNC44MjUzMSA1LjIxMDM0TDYuOTU1NjggMS42MzEzMVpNMy43NTA0NiAyLjUyNjFMMS44MTIyNiA1LjE3NDk4SDQuMDY1OEwzLjc1MDQ2IDIuNTI2MVpNMS43OTQxNiA2LjAyNTAxTDYuNzU4NjEgMTIuMDU4N0w0LjIyMzcxIDYuMDY2OUM0LjIxNzg3IDYuMDUzMSA0LjIxMzE0IDYuMDM5MSA0LjIwOTQ5IDYuMDI1MDFIMS43OTQxNlpNNS4xNTA1NSA2LjAyNTAxTDcuNDk5OTkgMTIuMTA4NUw5Ljg0OTQzIDYuMDI1MDFIOS43ODY4MUg1LjIxMzE5SDUuMTUwNTVaTTEwLjc5MDUgNi4wMjUwMUMxMC43ODY5IDYuMDM5MSAxMC43ODIxIDYuMDUzMSAxMC43NzYzIDYuMDY2OUw4LjI0MTM5IDEyLjA1ODdMMTMuMjA1OCA2LjAyNTAxSDEwLjc5MDVaTTcuNSAyLjE4MzE3TDkuMzQwMzggNS4yNzUwMUg1LjY1OTYyTDcuNSAyLjE4MzE3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sU3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuMTA4NzYgMTRMOS40NjU4MiAxSDEwLjgxNzhMNS40NjA3NCAxNEg0LjEwODc2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwLjMwMDQgNy40OTk5MUMxMC4zMDA0IDguNDk0MyA5LjQ5NDI2IDkuMzAwNDEgOC40OTk4OCA5LjMwMDQxQzcuNTA1NDkgOS4zMDA0MSA2LjY5OTM4IDguNDk0MyA2LjY5OTM4IDcuNDk5OTFDNi42OTkzOCA2LjUwNTUzIDcuNTA1NDkgNS42OTk0MiA4LjQ5OTg4IDUuNjk5NDJDOS40OTQyNiA1LjY5OTQyIDEwLjMwMDQgNi41MDU1MyAxMC4zMDA0IDcuNDk5OTFaTTExLjIwNSA4QzEwLjk2OTkgOS4yODAyOSA5Ljg0ODE2IDEwLjI1MDQgOC40OTk4OCAxMC4yNTA0QzcuMTUxNiAxMC4yNTA0IDYuMDI5OSA5LjI4MDI5IDUuNzk0NzMgOEgwLjVDMC4yMjM4NTggOCAwIDcuNzc2MTQgMCA3LjVDMCA3LjIyMzg2IDAuMjIzODU4IDcgMC41IDdINS43OTQ3QzYuMDI5OCA1LjcxOTYyIDcuMTUxNTQgNC43NDk0MiA4LjQ5OTg4IDQuNzQ5NDJDOS44NDgyMiA0Ljc0OTQyIDEwLjk2OTkgNS43MTk2MiAxMS4yMDUxIDdIMTQuNUMxNC43NzYxIDcgMTUgNy4yMjM4NiAxNSA3LjVDMTUgNy43NzYxNCAxNC43NzYxIDggMTQuNSA4SDExLjIwNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGpyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNC40OTk5IDAuOTk5OTk0QzE0LjIyMzcgMC45OTk5OTQgMTMuOTk5OSAxLjIyMzg1IDEzLjk5OTkgMS40OTk5OUwxMy45OTk5IDUuOTk5OTVMOS45OTk5MiA1Ljk5OTk1QzkuNDQ3NjQgNS45OTk5NSA4Ljk5OTkzIDYuNDQ3NjYgOC45OTk5MyA2Ljk5OTk0TDguOTk5OTMgNy45OTk5NEM4Ljk5OTkzIDguNTUyMjIgOS40NDc2NCA4Ljk5OTkzIDkuOTk5OTIgOC45OTk5M0wxMy45OTk5IDguOTk5OTNMMTMuOTk5OSAxMy40OTk5QzEzLjk5OTkgMTMuNzc2IDE0LjIyMzcgMTMuOTk5OSAxNC40OTk5IDEzLjk5OTlDMTQuNzc2IDEzLjk5OTkgMTQuOTk5OSAxMy43NzYgMTQuOTk5OSAxMy40OTk5TDE0Ljk5OTkgMS40OTk5OUMxNC45OTk5IDEuMjIzODUgMTQuNzc2IDAuOTk5OTk0IDE0LjQ5OTkgMC45OTk5OTRaTTQuOTk5OTYgNS45OTk5NUwwLjk5OTk5MiA1Ljk5OTk1TDAuOTk5OTkyIDEuNDk5OTlDMC45OTk5OTIgMS4yMjM4NSAwLjc3NjEzNiAwLjk5OTk5NCAwLjQ5OTk5NiAwLjk5OTk5NEMwLjIyMzg1NiAwLjk5OTk5NCAtOS43ODUyZS0wOSAxLjIyMzg1IC0yLjE4NTU3ZS0wOCAxLjQ5OTk5TDQuMDcyNzllLTA3IDEzLjQ5OTlDMy45NTIwOGUtMDcgMTMuNzc2IDAuMjIzODU1IDEzLjk5OTkgMC40OTk5OTYgMTMuOTk5OUMwLjc3NjEzNiAxMy45OTk5IDAuOTk5OTkyIDEzLjc3NiAwLjk5OTk5MiAxMy40OTk5TDAuOTk5OTkyIDguOTk5OTNMNC45OTk5NiA4Ljk5OTkzQzUuNTUyMjQgOC45OTk5MyA1Ljk5OTk1IDguNTUyMjIgNS45OTk5NSA3Ljk5OTkzTDUuOTk5OTUgNi45OTk5NEM1Ljk5OTk1IDYuNDQ3NjYgNS41NTIyNCA1Ljk5OTk1IDQuOTk5OTYgNS45OTk5NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGtyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjk5OTg3OCAwLjVDMC45OTk4NzggMC4yMjM4NTggMS4yMjM3NCAwIDEuNDk5ODggMEgxMy40OTk5QzEzLjc3NiAwIDEzLjk5OTkgMC4yMjM4NTggMTMuOTk5OSAwLjVDMTMuOTk5OSAwLjc3NjE0MiAxMy43NzYgMSAxMy40OTk5IDFMOSAxVjVDOSA1LjU1MjI4IDguNTUyMjggNiA4IDZIN0M2LjQ0NzcyIDYgNiA1LjU1MjI4IDYgNVYxSDEuNDk5ODhDMS4yMjM3NCAxIDAuOTk5ODc4IDAuNzc2MTQyIDAuOTk5ODc4IDAuNVpNNyA5QzYuNDQ3NzIgOSA2IDkuNDQ3NzEgNiAxMFYxNEgxLjQ5OTg4QzEuMjIzNzQgMTQgMC45OTk4NzggMTQuMjIzOSAwLjk5OTg3OCAxNC41QzAuOTk5ODc4IDE0Ljc3NjEgMS4yMjM3NCAxNSAxLjQ5OTg4IDE1SDEzLjQ5OTlDMTMuNzc2IDE1IDEzLjk5OTkgMTQuNzc2MSAxMy45OTk5IDE0LjVDMTMuOTk5OSAxNC4yMjM5IDEzLjc3NiAxNCAxMy40OTk5IDE0SDlWMTBDOSA5LjQ0NzcyIDguNTUyMjggOSA4IDlIN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFJyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNC40OTk5IDAuOTk5OTkyQzE0LjIyMzcgMC45OTk5OTIgMTMuOTk5OSAxLjIyMzg1IDEzLjk5OTkgMS40OTk5OUwxMy45OTk5IDEzLjQ5OTlDMTMuOTk5OSAxMy43NzYgMTQuMjIzNyAxMy45OTk5IDE0LjQ5OTkgMTMuOTk5OUMxNC43NzYgMTMuOTk5OSAxNC45OTk5IDEzLjc3NiAxNC45OTk5IDEzLjQ5OTlMMTQuOTk5OSAxLjQ5OTk5QzE0Ljk5OTkgMS4yMjM4NSAxNC43NzYgMC45OTk5OTIgMTQuNDk5OSAwLjk5OTk5MlpNMC40OTk5OTYgMC45OTk5OTJDMC4yMjM4NTYgMC45OTk5OTIgLTkuNzg1MDllLTA5IDEuMjIzODUgLTIuMTg1NTZlLTA4IDEuNDk5OTlMNC4wNzI3OWUtMDcgMTMuNDk5OUMzLjk1MjA4ZS0wNyAxMy43NzYgMC4yMjM4NTUgMTMuOTk5OSAwLjQ5OTk5NiAxMy45OTk5QzAuNzc2MTM2IDEzLjk5OTkgMC45OTk5OTIgMTMuNzc2IDAuOTk5OTkyIDEzLjQ5OTlMMC45OTk5OTIgMS40OTk5OUMwLjk5OTk5MiAxLjIyMzg1IDAuNzc2MTM2IDAuOTk5OTkyIDAuNDk5OTk2IDAuOTk5OTkyWk0xLjk5OTk4IDYuOTk5OTRDMS45OTk5OCA2LjQ0NzY2IDIuNDQ3NjkgNS45OTk5NSAyLjk5OTk4IDUuOTk5OTVMNS45OTk5NSA1Ljk5OTk1QzYuNTUyMjMgNS45OTk5NSA2Ljk5OTk0IDYuNDQ3NjYgNi45OTk5NCA2Ljk5OTk0TDYuOTk5OTQgNy45OTk5M0M2Ljk5OTk0IDguNTUyMjEgNi41NTIyMyA4Ljk5OTkyIDUuOTk5OTUgOC45OTk5MkwyLjk5OTk4IDguOTk5OTJDMi40NDc3IDguOTk5OTIgMS45OTk5OCA4LjU1MjIxIDEuOTk5OTggNy45OTk5M0wxLjk5OTk4IDYuOTk5OTRaTTguOTk5OTMgNS45OTk5NUM4LjQ0NzY1IDUuOTk5OTUgNy45OTk5MyA2LjQ0NzY2IDcuOTk5OTMgNi45OTk5NEw3Ljk5OTkzIDcuOTk5OTNDNy45OTk5MyA4LjU1MjIxIDguNDQ3NjUgOC45OTk5MiA4Ljk5OTkzIDguOTk5OTJMMTEuOTk5OSA4Ljk5OTkyQzEyLjU1MjIgOC45OTk5MiAxMi45OTk5IDguNTUyMjEgMTIuOTk5OSA3Ljk5OTkzTDEyLjk5OTkgNi45OTk5NEMxMi45OTk5IDYuNDQ3NjYgMTIuNTUyMiA1Ljk5OTk1IDExLjk5OTkgNS45OTk5NUw4Ljk5OTkzIDUuOTk5OTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxQcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC45OTk4NzggMC41QzAuOTk5ODc4IDAuMjIzODU4IDEuMjIzNzQgMCAxLjQ5OTg4IDBIMTMuNDk5OUMxMy43NzYgMCAxMy45OTk5IDAuMjIzODU4IDEzLjk5OTkgMC41QzEzLjk5OTkgMC43NzYxNDIgMTMuNzc2IDEgMTMuNDk5OSAxSDEuNDk5ODhDMS4yMjM3NCAxIDAuOTk5ODc4IDAuNzc2MTQyIDAuOTk5ODc4IDAuNVpNNyAyQzYuNDQ3NzIgMiA2IDIuNDQ3NzIgNiAzVjZDNiA2LjU1MjI4IDYuNDQ3NzIgNyA3IDdIOEM4LjU1MjI4IDcgOSA2LjU1MjI4IDkgNlYzQzkgMi40NDc3MiA4LjU1MjI4IDIgOCAySDdaTTcgOEM2LjQ0NzcyIDggNiA4LjQ0NzcxIDYgOVYxMkM2IDEyLjU1MjMgNi40NDc3MiAxMyA3IDEzSDhDOC41NTIyOCAxMyA5IDEyLjU1MjMgOSAxMlY5QzkgOC40NDc3MiA4LjU1MjI4IDggOCA4SDdaTTEuNDk5ODggMTRDMS4yMjM3NCAxNCAwLjk5OTg3OCAxNC4yMjM5IDAuOTk5ODc4IDE0LjVDMC45OTk4NzggMTQuNzc2MSAxLjIyMzc0IDE1IDEuNDk5ODggMTVIMTMuNDk5OUMxMy43NzYgMTUgMTMuOTk5OSAxNC43NzYxIDEzLjk5OTkgMTQuNUMxMy45OTk5IDE0LjIyMzkgMTMuNzc2IDE0IDEzLjQ5OTkgMTRIMS40OTk4OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEFyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ2OTY4IDEuMDUwODVDNy42NDEyMiAxLjEzNDc1IDcuNzUgMS4zMDkwNCA3Ljc1IDEuNVYxMy41QzcuNzUgMTMuNjkxIDcuNjQxMjIgMTMuODY1MyA3LjQ2OTY4IDEzLjk0OTJDNy4yOTgxMyAxNC4wMzMxIDcuMDkzNzcgMTQuMDExOSA2Ljk0MzAzIDEzLjg5NDdMMy4yMjEzIDExSDEuNUMwLjY3MTU3MSAxMSAwIDEwLjMyODQgMCA5LjVWNS41QzAgNC42NzE1OCAwLjY3MTU3MyA0IDEuNSA0SDMuMjIxM0w2Ljk0MzAzIDEuMTA1MzNDNy4wOTM3NyAwLjk4ODA4NSA3LjI5ODEzIDAuOTY2OTQ1IDcuNDY5NjggMS4wNTA4NVpNNi43NSAyLjUyMjMyTDMuNjk5ODMgNC44OTQ2OEMzLjYxMjA2IDQuOTYyOTQgMy41MDQwNSA1IDMuMzkyODYgNUgxLjVDMS4yMjM4NiA1IDEgNS4yMjM4NiAxIDUuNVY5LjVDMSA5Ljc3NjE1IDEuMjIzODYgMTAgMS41IDEwSDMuMzkyODZDMy41MDQwNSAxMCAzLjYxMjA2IDEwLjAzNzEgMy42OTk4MyAxMC4xMDUzTDYuNzUgMTIuNDc3N1YyLjUyMjMyWk0xMC4yNzg0IDMuODQ4MDRDMTAuNDYyMyAzLjcyNTY3IDEwLjcxMDYgMy43NzU1NyAxMC44MzMgMy45NTk0OUMxMi4yNTU4IDYuMDk3OTggMTIuMjU1OCA4LjkwMTk5IDEwLjgzMyAxMS4wNDA1QzEwLjcxMDYgMTEuMjI0NCAxMC40NjIzIDExLjI3NDMgMTAuMjc4NCAxMS4xNTE5QzEwLjA5NDQgMTEuMDI5NiAxMC4wNDQ1IDEwLjc4MTMgMTAuMTY2OSAxMC41OTczQzExLjQxMTEgOC43MjcyOCAxMS40MTExIDYuMjcyNjkgMTAuMTY2OSA0LjQwMjY0QzEwLjA0NDUgNC4yMTg3MSAxMC4wOTQ0IDMuOTcwNDEgMTAuMjc4NCAzLjg0ODA0Wk0xMi42Nzg1IDEuNDMwNDRDMTIuNTM1NiAxLjI2MTkgMTIuMjgzMiAxLjI0MTA0IDEyLjExNDcgMS4zODM4NkMxMS45NDYyIDEuNTI2NjcgMTEuOTI1MyAxLjc3OTA4IDEyLjA2ODEgMS45NDc2MkMxNC43NzczIDUuMTQ0ODggMTQuNzc3MyA5Ljg1NTEzIDEyLjA2ODEgMTMuMDUyNEMxMS45MjUzIDEzLjIyMDkgMTEuOTQ2MiAxMy40NzMzIDEyLjExNDcgMTMuNjE2MUMxMi4yODMyIDEzLjc1OSAxMi41MzU2IDEzLjczODEgMTIuNjc4NSAxMy41Njk2QzE1LjY0MDYgMTAuMDczOSAxNS42NDA2IDQuOTI2MTIgMTIuNjc4NSAxLjQzMDQ0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTggMS41QzggMS4zMTA2MiA3Ljg5MyAxLjEzNzQ5IDcuNzIzNjEgMS4wNTI3OUM3LjU1NDIxIDAuOTY4MDkzIDcuMzUxNTEgMC45ODYzNzEgNy4yIDEuMUwzLjMzMzMzIDRIMS41QzAuNjcxNTczIDQgMCA0LjY3MTU4IDAgNS41VjkuNUMwIDEwLjMyODQgMC42NzE1NzMgMTEgMS41IDExSDMuMzMzMzNMNy4yIDEzLjlDNy4zNTE1MSAxNC4wMTM2IDcuNTU0MjEgMTQuMDMxOSA3LjcyMzYxIDEzLjk0NzJDNy44OTMgMTMuODYyNSA4IDEzLjY4OTQgOCAxMy41VjEuNVpNMy44IDQuOUw3IDIuNVYxMi41TDMuOCAxMC4xQzMuNzEzNDUgMTAuMDM1MSAzLjYwODE5IDEwIDMuNSAxMEgxLjVDMS4yMjM4NiAxMCAxIDkuNzc2MTQgMSA5LjVWNS41QzEgNS4yMjM4NiAxLjIyMzg2IDUgMS41IDVIMy41QzMuNjA4MTkgNSAzLjcxMzQ1IDQuOTY0OTEgMy44IDQuOVpNMTAuODMzIDMuOTU5NDlDMTAuNzEwNiAzLjc3NTU3IDEwLjQ2MjMgMy43MjU2NyAxMC4yNzg0IDMuODQ4MDRDMTAuMDk0NCAzLjk3MDQxIDEwLjA0NDUgNC4yMTg3MSAxMC4xNjY5IDQuNDAyNjRDMTEuNDExMSA2LjI3MjY4IDExLjQxMTEgOC43MjcyOCAxMC4xNjY5IDEwLjU5NzNDMTAuMDQ0NSAxMC43ODEzIDEwLjA5NDQgMTEuMDI5NiAxMC4yNzg0IDExLjE1MTlDMTAuNDYyMyAxMS4yNzQzIDEwLjcxMDYgMTEuMjI0NCAxMC44MzMgMTEuMDQwNUMxMi4yNTU4IDguOTAxOTkgMTIuMjU1OCA2LjA5Nzk4IDEwLjgzMyAzLjk1OTQ5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNzIzNjEgMS4wNTI3OUM3Ljg5MyAxLjEzNzQ5IDggMS4zMTA2MiA4IDEuNVYxMy41QzggMTMuNjg5NCA3Ljg5MyAxMy44NjI1IDcuNzIzNjEgMTMuOTQ3MkM3LjU1NDIxIDE0LjAzMTkgNy4zNTE1MSAxNC4wMTM2IDcuMiAxMy45TDMuMzMzMzMgMTFIMS41QzAuNjcxNTczIDExIDAgMTAuMzI4NCAwIDkuNVY1LjVDMCA0LjY3MTU4IDAuNjcxNTczIDQgMS41IDRIMy4zMzMzM0w3LjIgMS4xQzcuMzUxNTEgMC45ODYzNzEgNy41NTQyMSAwLjk2ODA5MyA3LjcyMzYxIDEuMDUyNzlaTTcgMi41TDMuOCA0LjlDMy43MTM0NSA0Ljk2NDkxIDMuNjA4MTkgNSAzLjUgNUgxLjVDMS4yMjM4NiA1IDEgNS4yMjM4NiAxIDUuNVY5LjVDMSA5Ljc3NjE0IDEuMjIzODYgMTAgMS41IDEwSDMuNUMzLjYwODE5IDEwIDMuNzEzNDUgMTAuMDM1MSAzLjggMTAuMUw3IDEyLjVWMi41Wk0xNC44NTM2IDUuMTQ2NDVDMTUuMDQ4OCA1LjM0MTcxIDE1LjA0ODggNS42NTgyOSAxNC44NTM2IDUuODUzNTVMMTMuMjA3MSA3LjVMMTQuODUzNiA5LjE0NjQ1QzE1LjA0ODggOS4zNDE3MSAxNS4wNDg4IDkuNjU4MjkgMTQuODUzNiA5Ljg1MzU1QzE0LjY1ODMgMTAuMDQ4OCAxNC4zNDE3IDEwLjA0ODggMTQuMTQ2NCA5Ljg1MzU1TDEyLjUgOC4yMDcxMUwxMC44NTM2IDkuODUzNTVDMTAuNjU4MyAxMC4wNDg4IDEwLjM0MTcgMTAuMDQ4OCAxMC4xNDY0IDkuODUzNTVDOS45NTExOCA5LjY1ODI5IDkuOTUxMTggOS4zNDE3MSAxMC4xNDY0IDkuMTQ2NDVMMTEuNzkyOSA3LjVMMTAuMTQ2NCA1Ljg1MzU1QzkuOTUxMTggNS42NTgyOSA5Ljk1MTE4IDUuMzQxNzEgMTAuMTQ2NCA1LjE0NjQ1QzEwLjM0MTcgNC45NTExOCAxMC42NTgzIDQuOTUxMTggMTAuODUzNiA1LjE0NjQ1TDEyLjUgNi43OTI4OUwxNC4xNDY0IDUuMTQ2NDVDMTQuMzQxNyA0Ljk1MTE4IDE0LjY1ODMgNC45NTExOCAxNC44NTM2IDUuMTQ2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxIcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOCAxLjVDOCAxLjMxMDYyIDcuODkzIDEuMTM3NDkgNy43MjM2MSAxLjA1Mjc5QzcuNTU0MjEgMC45NjgwOTMgNy4zNTE1MSAwLjk4NjM3MSA3LjIgMS4xTDMuMzMzMzMgNEgxLjVDMC42NzE1NzMgNCAwIDQuNjcxNTggMCA1LjVWOS41QzAgMTAuMzI4NCAwLjY3MTU3MyAxMSAxLjUgMTFIMy4zMzMzM0w3LjIgMTMuOUM3LjM1MTUxIDE0LjAxMzYgNy41NTQyMSAxNC4wMzE5IDcuNzIzNjEgMTMuOTQ3MkM3Ljg5MyAxMy44NjI1IDggMTMuNjg5NCA4IDEzLjVWMS41Wk0zLjggNC45TDcgMi41VjEyLjVMMy44IDEwLjFDMy43MTM0NSAxMC4wMzUxIDMuNjA4MTkgMTAgMy41IDEwSDEuNUMxLjIyMzg2IDEwIDEgOS43NzYxNCAxIDkuNVY1LjVDMSA1LjIyMzg2IDEuMjIzODYgNSAxLjUgNUgzLjVDMy42MDgxOSA1IDMuNzEzNDUgNC45NjQ5MSAzLjggNC45Wk0xMC4wODMgNS4wNTU3N0M5Ljk2MDY2IDQuODcxODUgOS43MTIzNSA0LjgyMTk1IDkuNTI4NDMgNC45NDQzMkM5LjM0NDUgNS4wNjY2OSA5LjI5NDYgNS4zMTQ5OSA5LjQxNjk3IDUuNDk4OTJDMTAuMjIwNyA2LjcwNjkzIDEwLjIyMDcgOC4yOTMwMyA5LjQxNjk3IDkuNTAxMDRDOS4yOTQ2IDkuNjg0OTYgOS4zNDQ1IDkuOTMzMjYgOS41Mjg0MyAxMC4wNTU2QzkuNzEyMzUgMTAuMTc4IDkuOTYwNjYgMTAuMTI4MSAxMC4wODMgOS45NDQxOEMxMS4wNjUzIDguNDY3NzMgMTEuMDY1MyA2LjUzMjIyIDEwLjA4MyA1LjA1NTc3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgMUgxLjVIMTMuNUgxNFYxLjVWMTMuNVYxNEgxMy41SDEuNUgxVjEzLjVWMS41VjFaTTIgMlYxM0gxM1YySDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxCcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy43NTQzMiAxLjgxOTU0QzcuNTk3NDIgMS43MjY4MiA3LjQwMjUgMS43MjY4MiA3LjI0NTU5IDEuODE5NTRMMS43NDU1OSA1LjA2OTU0QzEuNTkzMzYgNS4xNTk0OSAxLjQ5OTk2IDUuMzIzMTcgMS40OTk5NiA1LjVDMS40OTk5NiA1LjY3NjgzIDEuNTkzMzYgNS44NDA1MSAxLjc0NTU5IDUuOTMwNDZMNy4yNDU1OSA5LjE4MDQ2QzcuNDAyNSA5LjI3MzE4IDcuNTk3NDIgOS4yNzMxOCA3Ljc1NDMyIDkuMTgwNDZMMTMuMjU0MyA1LjkzMDQ2QzEzLjQwNjYgNS44NDA1MSAxMy41IDUuNjc2ODMgMTMuNSA1LjVDMTMuNSA1LjMyMzE3IDEzLjQwNjYgNS4xNTk0OSAxMy4yNTQzIDUuMDY5NTRMNy43NTQzMiAxLjgxOTU0Wk03LjQ5OTk2IDguMTY5MjNMMi45ODI4IDUuNUw3LjQ5OTk2IDIuODMwNzdMMTIuMDE3MSA1LjVMNy40OTk5NiA4LjE2OTIzWk0yLjI1NDMyIDguMzE5NTRDMi4wMTY1OCA4LjE3OTA2IDEuNzA5OTggOC4yNTc5IDEuNTY5NDkgOC40OTU2NEMxLjQyOTAxIDguNzMzMzcgMS41MDc4NSA5LjAzOTk4IDEuNzQ1NTkgOS4xODA0Nkw3LjI0NTU5IDEyLjQzMDVDNy40MDI1IDEyLjUyMzIgNy41OTc0MiAxMi41MjMyIDcuNzU0MzIgMTIuNDMwNUwxMy4yNTQzIDkuMTgwNDZDMTMuNDkyMSA5LjAzOTk4IDEzLjU3MDkgOC43MzMzNyAxMy40MzA0IDguNDk1NjRDMTMuMjg5OSA4LjI1NzkgMTIuOTgzMyA4LjE3OTA2IDEyLjc0NTYgOC4zMTk1NEw3LjQ5OTk2IDExLjQxOTJMMi4yNTQzMiA4LjMxOTU0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuOTc5NDIgMS4yNTE3MUw2Ljk1ODUgMS4zMDE5OUw1LjU4NjYyIDQuNjAwMzlDNS41NDM0MiA0LjcwNDI2IDUuNDQ1NzMgNC43NzUyMyA1LjMzMzYgNC43ODQyMkwxLjc3MjcgNS4wNjk3TDEuNzE4NDEgNS4wNzQwNUwxLjM4Njg3IDUuMTAwNjNMMS4wODYwOCA1LjEyNDc1QzAuODIwMDg1IDUuMTQ2MDcgMC43MTIyMjggNS40NzgwMiAwLjkxNDg4OSA1LjY1MTYyTDEuMTQ0MDYgNS44NDc5M0wxLjM5NjY2IDYuMDY0MzFMMS40MzgwMiA2LjA5OTc0TDQuMTUxMDUgOC40MjM3NEM0LjIzNjQ4IDguNDk2OTIgNC4yNzM4IDguNjExNzYgNC4yNDc2OSA4LjcyMTE4TDMuNDE4ODIgMTIuMTk2TDMuNDA2MTggMTIuMjQ5TDMuMzI5MDEgMTIuNTcyNUwzLjI1ODk5IDEyLjg2NkMzLjE5NzA4IDEzLjEyNTYgMy40Nzk0NSAxMy4zMzA4IDMuNzA3MTggMTMuMTkxN0wzLjk2NDcgMTMuMDM0NEw0LjI0ODU0IDEyLjg2MUw0LjI5NTAyIDEyLjgzMjZMNy4zNDM2NSAxMC45NzA1QzcuNDM5NjUgMTAuOTExOSA3LjU2MDQgMTAuOTExOSA3LjY1NjQgMTAuOTcwNUwxMC43MDUgMTIuODMyNkwxMC43NTE1IDEyLjg2MUwxMS4wMzU0IDEzLjAzNDRMMTEuMjkyOSAxMy4xOTE3QzExLjUyMDYgMTMuMzMwOCAxMS44MDMgMTMuMTI1NiAxMS43NDExIDEyLjg2NkwxMS42NzEgMTIuNTcyNUwxMS41OTM5IDEyLjI0OUwxMS41ODEyIDEyLjE5NkwxMC43NTI0IDguNzIxMThDMTAuNzI2MyA4LjYxMTc2IDEwLjc2MzYgOC40OTY5MiAxMC44NDkgOC40MjM3NEwxMy41NjIgNi4wOTk3NEwxMy42MDM0IDYuMDY0MzFMMTMuODU2IDUuODQ3OTNMMTQuMDg1MiA1LjY1MTYyQzE0LjI4NzggNS40NzgwMiAxNC4xOCA1LjE0NjA3IDEzLjkxNCA1LjEyNDc1TDEzLjYxMzIgNS4xMDA2M0wxMy4yODE2IDUuMDc0MDVMMTMuMjI3NCA1LjA2OTdMOS42NjY0NSA0Ljc4NDIyQzkuNTU0MzIgNC43NzUyMyA5LjQ1NjYzIDQuNzA0MjYgOS40MTM0MyA0LjYwMDM5TDguMDQxNTUgMS4zMDE5OUw4LjAyMDY0IDEuMjUxNzFMNy44OTI5MSAwLjk0NDYwOUw3Ljc3NzAyIDAuNjY1OTkyQzcuNjc0NTQgMC40MTk2MDQgNy4zMjU1MSAwLjQxOTYwNCA3LjIyMzAzIDAuNjY1OTkyTDcuMTA3MTUgMC45NDQ2MDlMNi45Nzk0MiAxLjI1MTcxWk03LjUwMDAzIDIuNjAzOTdMNi41MDk5NCA0Ljk4NDQyQzYuMzIyNzMgNS40MzQ1MyA1Ljg5OTQ0IDUuNzQyMDcgNS40MTM1MSA1Ljc4MTAzTDIuODQzNjEgNS45ODcwNUw0LjgwMTYgNy42NjQyOEM1LjE3MTgzIDcuOTgxNDIgNS4zMzM1MSA4LjQ3OTAzIDUuMjIwNCA4Ljk1MzIxTDQuNjIyMjEgMTEuNDYxTDYuODIyNCAxMC4xMTcxQzcuMjM4NDIgOS44NjMwMiA3Ljc2MTY0IDkuODYzMDIgOC4xNzc2NiAxMC4xMTcxTDEwLjM3NzggMTEuNDYxTDkuNzc5NjUgOC45NTMyMUM5LjY2NjU0IDguNDc5MDMgOS44MjgyMiA3Ljk4MTQyIDEwLjE5ODQgNy42NjQyOEwxMi4xNTY0IDUuOTg3MDVMOS41ODY1NCA1Ljc4MTAzQzkuMTAwNjEgNS43NDIwNyA4LjY3NzMyIDUuNDM0NTMgOC40OTAxMSA0Ljk4NDQyTDcuNTAwMDMgMi42MDM5N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFpyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjIyMzAzIDAuNjY1OTkyQzcuMzI1NTEgMC40MTk2MDQgNy42NzQ1NCAwLjQxOTYwNCA3Ljc3NzAyIDAuNjY1OTkyTDkuNDEzNDMgNC42MDAzOUM5LjQ1NjYzIDQuNzA0MjYgOS41NTQzMiA0Ljc3NTIzIDkuNjY2NDUgNC43ODQyMkwxMy45MTQgNS4xMjQ3NUMxNC4xOCA1LjE0NjA3IDE0LjI4NzggNS40NzgwMiAxNC4wODUyIDUuNjUxNjJMMTAuODQ5IDguNDIzNzRDMTAuNzYzNiA4LjQ5NjkyIDEwLjcyNjMgOC42MTE3NiAxMC43NTI0IDguNzIxMThMMTEuNzQxMSAxMi44NjZDMTEuODAzIDEzLjEyNTYgMTEuNTIwNiAxMy4zMzA4IDExLjI5MjkgMTMuMTkxN0w3LjY1NjQgMTAuOTcwNUM3LjU2MDQgMTAuOTExOSA3LjQzOTY1IDEwLjkxMTkgNy4zNDM2NSAxMC45NzA1TDMuNzA3MTggMTMuMTkxN0MzLjQ3OTQ1IDEzLjMzMDggMy4xOTcwOCAxMy4xMjU2IDMuMjU4OTkgMTIuODY2TDQuMjQ3NjkgOC43MjExOEM0LjI3MzggOC42MTE3NiA0LjIzNjQ4IDguNDk2OTIgNC4xNTEwNSA4LjQyMzc0TDAuOTE0ODg5IDUuNjUxNjJDMC43MTIyMjggNS40NzgwMiAwLjgyMDA4NiA1LjE0NjA3IDEuMDg2MDggNS4xMjQ3NUw1LjMzMzYgNC43ODQyMkM1LjQ0NTczIDQuNzc1MjMgNS41NDM0MiA0LjcwNDI2IDUuNTg2NjIgNC42MDAzOUw3LjIyMzAzIDAuNjY1OTkyWlwiLGZpbGw6bn0pKX0sJHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuODQ5OTggNy40OTk5OEMxLjg0OTk4IDcuMjEzMjEgMS44NzEzNCA2LjkzMTQzIDEuOTEyNTYgNi42NTYxNUw5LjU2Mzc0IDIuMjM4NzVDOS44NjMxMSAyLjM1NjI3IDEwLjE1IDIuNDk4NjEgMTAuNDIxOSAyLjY2MzIyTDMuNzcwNjUgNi41MDMzMkMzLjczNjY5IDYuNTIxODMgMy43MDQ4MiA2LjU0NDkgMy42NzYwMiA2LjU3MjM4QzMuNTkxMSA2LjY1MzA4IDMuNTQyNDUgNi43NjI4NiAzLjUzNjgyIDYuODc2NThDMy41MzM1OSA2Ljk0MTggMy41NDQ1MSA3LjAwODMxIDMuNTcwODYgNy4wNzEzN0MzLjU4OTI3IDcuMTE1NyAzLjYxNDkgNy4xNTc0MiAzLjY0NzQ0IDcuMTk0NThDMy42NzMwNiA3LjIyMzk2IDMuNzAyIDcuMjQ5NDEgMy43MzMzNyA3LjI3MDY5TDcuMzI1MzMgOS44MzgxM0wzLjg3MjMyIDExLjgzMTdDMi42MzYwNCAxMC43OTUzIDEuODQ5OTggOS4yMzk0NCAxLjg0OTk4IDcuNDk5OThaTTguMzY4NDMgMTAuMjc1MUM4LjM3NjgyIDEwLjI3MDYgOC4zODUwOSAxMC4yNjU5IDguMzkzMjIgMTAuMjYwOEw5Ljg0MDkxIDkuNDI0OTlDOS44NDcwNiA5LjQyMTYzIDkuODUzMTQgOS40MTgxMiA5Ljg1OTE1IDkuNDE0NDZMMTEuMzEwMSA4LjU3Njc3QzExLjM2NTUgOC41NDY0OSAxMS40MTU0IDguNTA0IDExLjQ1NTQgOC40NDk5NUMxMS42MDM0IDguMjUwMzEgMTEuNTYxNiA3Ljk2ODQ4IDExLjM2MiA3LjgyMDQ2TDcuODI3NzkgNS4yMDAxN0wxMS4yMTYxIDMuMjQzOTNDMTIuNDAxMyA0LjI3OTYzIDEzLjE1IDUuODAyMzcgMTMuMTUgNy40OTk5OEMxMy4xNSA3LjgzNTQ2IDEzLjEyMDcgOC4xNjQxMSAxMy4wNjQ3IDguNDgzNTNMNS41Njg3NSAxMi44MTEzQzUuMjYxMzggMTIuNjk5NSA0Ljk2NjQ2IDEyLjU2MTggNC42ODY2MiAxMi40MDA4TDguMzY4NDMgMTAuMjc1MVpNOC4xODE0OSA5LjM0MzgzTDQuODE2NTkgNi45Mzg2OEw1LjUwOTE4IDYuNTM4ODFMOC44MDYwNCA4Ljk4MzI0TDguMTgxNDkgOS4zNDM4M1pNNi4zNTg3NSA2LjA0ODMyTDYuOTc4MjIgNS42OTA2N0wxMC4yNzUxIDguMTM1MDZMOS42NTU2IDguNDkyNzVMNi4zNTg3NSA2LjA0ODMyWk04LjMzMTggMS45MTA3OEwyLjI0MjYzIDUuNDI2MzZDMy4wNjk0MSAzLjMzMTg4IDUuMTExNjQgMS44NDk5OCA3LjQ5OTk4IDEuODQ5OThDNy43ODI1OCAxLjg0OTk4IDguMDYwMzMgMS44NzA3MiA4LjMzMTggMS45MTA3OFpNNi44NDY4NCAxMy4xMTI2QzcuMDYxMTQgMTMuMTM3MyA3LjI3OTA4IDEzLjE1IDcuNDk5OTggMTMuMTVDOS44MjQ2IDEzLjE1IDExLjgyMTMgMTEuNzQ2MSAxMi42ODg2IDkuNzM5OUw2Ljg0Njg0IDEzLjExMjZaTTcuNDk5OTggMC44NDk5NzZDMy44MjcyOCAwLjg0OTk3NiAwLjg0OTk3NiAzLjgyNzI4IDAuODQ5OTc2IDcuNDk5OThDMC44NDk5NzYgMTEuMTcyNyAzLjgyNzI4IDE0LjE1IDcuNDk5OTggMTQuMTVDMTEuMTcyNyAxNC4xNSAxNC4xNSAxMS4xNzI3IDE0LjE1IDcuNDk5OThDMTQuMTUgMy44MjcyOCAxMS4xNzI3IDAuODQ5OTc2IDcuNDk5OTggMC44NDk5NzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxGcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiAzQzIgMi40NDc3MiAyLjQ0NzcyIDIgMyAySDEyQzEyLjU1MjMgMiAxMyAyLjQ0NzcyIDEzIDNWMTJDMTMgMTIuNTUyMyAxMi41NTIzIDEzIDEyIDEzSDNDMi40NDc3MiAxMyAyIDEyLjU1MjMgMiAxMlYzWk0xMiAzSDNWMTJIMTJWM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE5yPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjQ5OTk4IDAuNUM1LjQ5OTk4IDAuMjIzODU4IDUuNzIzODMgMCA1Ljk5OTk4IDBINy40OTk5OEg4Ljk5OTk4QzkuMjc2MTIgMCA5LjQ5OTk4IDAuMjIzODU4IDkuNDk5OTggMC41QzkuNDk5OTggMC43NzYxNDIgOS4yNzYxMiAxIDguOTk5OTggMUg3Ljk5OTk4VjIuMTE5MjJDOS4wOTgzMiAyLjIwNDA5IDEwLjExOSAyLjU2NjIyIDEwLjk5MiAzLjEzNTcyQzExLjAxMTYgMy4xMDg1MSAxMS4wMzM2IDMuMDgyNTIgMTEuMDU4IDMuMDU4MDZMMTEuODU4IDIuMjU4MDZDMTIuMTAyMSAyLjAxMzk4IDEyLjQ5NzggMi4wMTM5OCAxMi43NDE5IDIuMjU4MDZDMTIuOTg2IDIuNTAyMTQgMTIuOTg2IDIuODk3ODYgMTIuNzQxOSAzLjE0MTk0TDExLjk2NyAzLjkxNjgyQzEzLjE1OTUgNS4wNzkyNSAxMy45IDYuNzAzMTQgMTMuOSA4LjQ5OTk4QzEzLjkgMTIuMDM0NiAxMS4wMzQ2IDE0LjkgNy40OTk5OCAxNC45QzMuOTY1MzUgMTQuOSAxLjA5OTk4IDEyLjAzNDYgMS4wOTk5OCA4LjQ5OTk4QzEuMDk5OTggNS4xMzM2MiAzLjY5OTA0IDIuMzc0MyA2Ljk5OTk4IDIuMTE5MjJWMUg1Ljk5OTk4QzUuNzIzODMgMSA1LjQ5OTk4IDAuNzc2MTQyIDUuNDk5OTggMC41Wk0yLjA5OTk4IDguNDk5OThDMi4wOTk5OCA1LjUxNzY0IDQuNTE3NjQgMy4wOTk5OCA3LjQ5OTk4IDMuMDk5OThDMTAuNDgyMyAzLjA5OTk4IDEyLjkgNS41MTc2NCAxMi45IDguNDk5OThDMTIuOSAxMS40ODIzIDEwLjQ4MjMgMTMuOSA3LjQ5OTk4IDEzLjlDNC41MTc2NCAxMy45IDIuMDk5OTggMTEuNDgyMyAyLjA5OTk4IDguNDk5OThaTTcuOTk5OTggNC41QzcuOTk5OTggNC4yMjM4NiA3Ljc3NjEyIDQgNy40OTk5OCA0QzcuMjIzODMgNCA2Ljk5OTk4IDQuMjIzODYgNi45OTk5OCA0LjVWOS41QzYuOTk5OTggOS43NzYxNCA3LjIyMzgzIDEwIDcuNDk5OTggMTBDNy43NzYxMiAxMCA3Ljk5OTk4IDkuNzc2MTQgNy45OTk5OCA5LjVWNC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0LjQ5OTkgMC45OTk5OTJDMTQuMjIzNyAwLjk5OTk5MiAxMy45OTk5IDEuMjIzODUgMTMuOTk5OSAxLjQ5OTk5TDEzLjk5OTkgNS45OTk5NUwwLjk5OTk5MiA1Ljk5OTk1TDAuOTk5OTkyIDEuNDk5OTlDMC45OTk5OTIgMS4yMjM4NSAwLjc3NjEzNiAwLjk5OTk5MiAwLjQ5OTk5NiAwLjk5OTk5MkMwLjIyMzg1NiAwLjk5OTk5MiAtOS43ODUwOWUtMDkgMS4yMjM4NSAtMi4xODU1NmUtMDggMS40OTk5OUw0LjA3Mjc5ZS0wNyAxMy40OTk5QzMuOTUyMDhlLTA3IDEzLjc3NiAwLjIyMzg1NSAxMy45OTk5IDAuNDk5OTk2IDEzLjk5OTlDMC43NzYxMzYgMTMuOTk5OSAwLjk5OTk5MiAxMy43NzYgMC45OTk5OTIgMTMuNDk5OUwwLjk5OTk5MiA4Ljk5OTkyTDEzLjk5OTkgOC45OTk5MkwxMy45OTk5IDEzLjQ5OTlDMTMuOTk5OSAxMy43NzYgMTQuMjIzNyAxMy45OTk5IDE0LjQ5OTkgMTMuOTk5OUMxNC43NzYgMTMuOTk5OSAxNC45OTk5IDEzLjc3NiAxNC45OTk5IDEzLjQ5OTlMMTQuOTk5OSAxLjQ5OTk5QzE0Ljk5OTkgMS4yMjM4NSAxNC43NzYgMC45OTk5OTIgMTQuNDk5OSAwLjk5OTk5MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFdyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjk5OTg3OCAwLjVDMC45OTk4NzggMC4yMjM4NTggMS4yMjM3NCAwIDEuNDk5ODggMEgxMy40OTk5QzEzLjc3NiAwIDEzLjk5OTkgMC4yMjM4NTggMTMuOTk5OSAwLjVDMTMuOTk5OSAwLjc3NjE0MiAxMy43NzYgMSAxMy40OTk5IDFINkgxLjQ5OTg4QzEuMjIzNzQgMSAwLjk5OTg3OCAwLjc3NjE0MiAwLjk5OTg3OCAwLjVaTTkgMTRWMUw2IDFWMTRIMS40OTk4OEMxLjIyMzc0IDE0IDAuOTk5ODc4IDE0LjIyMzkgMC45OTk4NzggMTQuNUMwLjk5OTg3OCAxNC43NzYxIDEuMjIzNzQgMTUgMS40OTk4OCAxNUgxMy40OTk5QzEzLjc3NiAxNSAxMy45OTk5IDE0Ljc3NjEgMTMuOTk5OSAxNC41QzEzLjk5OTkgMTQuMjIzOSAxMy43NzYgMTQgMTMuNDk5OSAxNEg5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0senI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuMDAwMDMgMy4yNUM1LjAwMDAzIDIuOTczODYgNC43NzYxNyAyLjc1IDQuNTAwMDMgMi43NUM0LjIyMzg5IDIuNzUgNC4wMDAwMyAyLjk3Mzg2IDQuMDAwMDMgMy4yNVY3LjEwMDAzSDIuNDk5OThDMi4yNzkwNiA3LjEwMDAzIDIuMDk5OTggNy4yNzkxMiAyLjA5OTk4IDcuNTAwMDNDMi4wOTk5OCA3LjcyMDk0IDIuMjc5MDYgNy45MDAwMyAyLjQ5OTk4IDcuOTAwMDNINC4wMDAwM1Y4LjU1QzQuMDAwMDMgMTAuNDgzIDUuNTY3MDMgMTIuMDUgNy41MDAwMyAxMi4wNUM5LjQzMzAzIDEyLjA1IDExIDEwLjQ4MyAxMSA4LjU1VjcuOTAwMDNIMTIuNUMxMi43MjA5IDcuOTAwMDMgMTIuOSA3LjcyMDk0IDEyLjkgNy41MDAwM0MxMi45IDcuMjc5MTIgMTIuNzIwOSA3LjEwMDAzIDEyLjUgNy4xMDAwM0gxMVYzLjI1QzExIDIuOTczODYgMTAuNzc2MiAyLjc1IDEwLjUgMi43NUMxMC4yMjM5IDIuNzUgMTAgMi45NzM4NiAxMCAzLjI1VjcuMTAwMDNINS4wMDAwM1YzLjI1Wk01LjAwMDAzIDcuOTAwMDNWOC41NUM1LjAwMDAzIDkuOTMwNzEgNi4xMTkzMiAxMS4wNSA3LjUwMDAzIDExLjA1QzguODgwNzQgMTEuMDUgMTAgOS45MzA3MSAxMCA4LjU1VjcuOTAwMDNINS4wMDAwM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEdyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMEM3Ljc3NjE0IDAgOCAwLjIyMzg1OCA4IDAuNVYyLjVDOCAyLjc3NjE0IDcuNzc2MTQgMyA3LjUgM0M3LjIyMzg2IDMgNyAyLjc3NjE0IDcgMi41VjAuNUM3IDAuMjIzODU4IDcuMjIzODYgMCA3LjUgMFpNMi4xOTY3IDIuMTk2N0MyLjM5MTk2IDIuMDAxNDQgMi43MDg1NCAyLjAwMTQ0IDIuOTAzODEgMi4xOTY3TDQuMzE4MDIgMy42MTA5MUM0LjUxMzI4IDMuODA2MTcgNC41MTMyOCA0LjEyMjc2IDQuMzE4MDIgNC4zMTgwMkM0LjEyMjc2IDQuNTEzMjggMy44MDYxNyA0LjUxMzI4IDMuNjEwOTEgNC4zMTgwMkwyLjE5NjcgMi45MDM4MUMyLjAwMTQ0IDIuNzA4NTQgMi4wMDE0NCAyLjM5MTk2IDIuMTk2NyAyLjE5NjdaTTAuNSA3QzAuMjIzODU4IDcgMCA3LjIyMzg2IDAgNy41QzAgNy43NzYxNCAwLjIyMzg1OCA4IDAuNSA4SDIuNUMyLjc3NjE0IDggMyA3Ljc3NjE0IDMgNy41QzMgNy4yMjM4NiAyLjc3NjE0IDcgMi41IDdIMC41Wk0yLjE5NjcgMTIuODAzM0MyLjAwMTQ0IDEyLjYwOCAyLjAwMTQ0IDEyLjI5MTUgMi4xOTY3IDEyLjA5NjJMMy42MTA5MSAxMC42ODJDMy44MDYxNyAxMC40ODY3IDQuMTIyNzYgMTAuNDg2NyA0LjMxODAyIDEwLjY4MkM0LjUxMzI4IDEwLjg3NzIgNC41MTMyOCAxMS4xOTM4IDQuMzE4MDIgMTEuMzg5MUwyLjkwMzgxIDEyLjgwMzNDMi43MDg1NCAxMi45OTg2IDIuMzkxOTYgMTIuOTk4NiAyLjE5NjcgMTIuODAzM1pNMTIuNSA3QzEyLjIyMzkgNyAxMiA3LjIyMzg2IDEyIDcuNUMxMiA3Ljc3NjE0IDEyLjIyMzkgOCAxMi41IDhIMTQuNUMxNC43NzYxIDggMTUgNy43NzYxNCAxNSA3LjVDMTUgNy4yMjM4NiAxNC43NzYxIDcgMTQuNSA3SDEyLjVaTTEwLjY4MiA0LjMxODAyQzEwLjQ4NjcgNC4xMjI3NiAxMC40ODY3IDMuODA2MTcgMTAuNjgyIDMuNjEwOTFMMTIuMDk2MiAyLjE5NjdDMTIuMjkxNSAyLjAwMTQ0IDEyLjYwOCAyLjAwMTQ0IDEyLjgwMzMgMi4xOTY3QzEyLjk5ODYgMi4zOTE5NiAxMi45OTg2IDIuNzA4NTQgMTIuODAzMyAyLjkwMzgxTDExLjM4OTEgNC4zMTgwMkMxMS4xOTM4IDQuNTEzMjggMTAuODc3MiA0LjUxMzI4IDEwLjY4MiA0LjMxODAyWk04IDEyLjVDOCAxMi4yMjM5IDcuNzc2MTQgMTIgNy41IDEyQzcuMjIzODYgMTIgNyAxMi4yMjM5IDcgMTIuNVYxNC41QzcgMTQuNzc2MSA3LjIyMzg2IDE1IDcuNSAxNUM3Ljc3NjE0IDE1IDggMTQuNzc2MSA4IDE0LjVWMTIuNVpNMTAuNjgyIDEwLjY4MkMxMC44NzcyIDEwLjQ4NjcgMTEuMTkzOCAxMC40ODY3IDExLjM4OTEgMTAuNjgyTDEyLjgwMzMgMTIuMDk2MkMxMi45OTg2IDEyLjI5MTUgMTIuOTk4NiAxMi42MDggMTIuODAzMyAxMi44MDMzQzEyLjYwOCAxMi45OTg2IDEyLjI5MTUgMTIuOTk4NiAxMi4wOTYyIDEyLjgwMzNMMTAuNjgyIDExLjM4OTFDMTAuNDg2NyAxMS4xOTM4IDEwLjQ4NjcgMTAuODc3MiAxMC42ODIgMTAuNjgyWk01LjUgNy41QzUuNSA2LjM5NTQzIDYuMzk1NDMgNS41IDcuNSA1LjVDOC42MDQ1NyA1LjUgOS41IDYuMzk1NDMgOS41IDcuNUM5LjUgOC42MDQ1NyA4LjYwNDU3IDkuNSA3LjUgOS41QzYuMzk1NDMgOS41IDUuNSA4LjYwNDU3IDUuNSA3LjVaTTcuNSA0LjVDNS44NDMxNSA0LjUgNC41IDUuODQzMTUgNC41IDcuNUM0LjUgOS4xNTY4NSA1Ljg0MzE1IDEwLjUgNy41IDEwLjVDOS4xNTY4NSAxMC41IDEwLjUgOS4xNTY4NSAxMC41IDcuNUMxMC41IDUuODQzMTUgOS4xNTY4NSA0LjUgNy41IDQuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHFyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMC41IDRDOC41NjcgNCA3IDUuNTY3IDcgNy41QzcgOS40MzMgOC41NjcgMTEgMTAuNSAxMUMxMi40MzMgMTEgMTQgOS40MzMgMTQgNy41QzE0IDUuNTY3IDEyLjQzMyA0IDEwLjUgNFpNNy42NzEzMyAxMUM2LjY1MTgzIDEwLjE3NSA2IDguOTEzNjMgNiA3LjVDNiA2LjA4NjM3IDYuNjUxODMgNC44MjQ5OCA3LjY3MTMzIDRINC41QzIuNTY3IDQgMSA1LjU2NyAxIDcuNUMxIDkuNDMzIDIuNTY3IDExIDQuNSAxMUg3LjY3MTMzWk0wIDcuNUMwIDUuMDE0NzIgMi4wMTQ3MiAzIDQuNSAzSDEwLjVDMTIuOTg1MyAzIDE1IDUuMDE0NzIgMTUgNy41QzE1IDkuOTg1MjggMTIuOTg1MyAxMiAxMC41IDEySDQuNUMyLjAxNDcyIDEyIDAgOS45ODUyOCAwIDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFlyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjkwMzIxIDcuMjk2NzdDMS45MDMyMSAxMC4zNDEgNC4xMTA0MSAxMi40MTQ3IDYuNTg4OTMgMTIuODQzOUM2Ljg3MjU1IDEyLjg5MyA3LjA2MjY2IDEzLjE2MjcgNy4wMTM1NSAxMy40NDY0QzYuOTY0NDQgMTMuNzMgNi42OTQ3MSAxMy45MjAxIDYuNDExMDkgMTMuODcxQzMuNDk5NDIgMTMuMzY2OCAwLjg2MDg0IDEwLjkxMjcgMC44NjA4NCA3LjI5Njc3QzAuODYwODM5IDUuNzYwMDkgMS41NTk5NiA0LjU1MjQ1IDIuMzc2MzkgMy42MzM3N0MyLjk2MTI0IDIuOTc1NjggMy42MzAzNCAyLjQ0MTM1IDQuMTY4NDYgMi4wMzIwMkwyLjUzMjA1IDIuMDMyMDJDMi4yNTU5MSAyLjAzMjAyIDIuMDMyMDUgMS44MDgxNiAyLjAzMjA1IDEuNTMyMDJDMi4wMzIwNSAxLjI1NTg4IDIuMjU1OTEgMS4wMzIwMiAyLjUzMjA1IDEuMDMyMDJMNS41MzIwNSAxLjAzMjAyQzUuODA4MTkgMS4wMzIwMiA2LjAzMjA1IDEuMjU1ODggNi4wMzIwNSAxLjUzMjAyTDYuMDMyMDUgNC41MzIwMkM2LjAzMjA1IDQuODA4MTYgNS44MDgxOSA1LjAzMjAyIDUuNTMyMDUgNS4wMzIwMkM1LjI1NTkxIDUuMDMyMDIgNS4wMzIwNSA0LjgwODE2IDUuMDMyMDUgNC41MzIwMkw1LjAzMjA1IDIuNjg2NDVMNS4wMzA1NCAyLjY4NzU5TDUuMDMwNDUgMi42ODc2Nkw1LjAzMDQ0IDIuNjg3NjdMNS4wMzA0MyAyLjY4NzY3QzQuNDU4OTYgMy4xMTg2OCAzLjc2MDU5IDMuNjQ1MzggMy4xNTU1NCA0LjMyNjJDMi40NDEwMiA1LjEzMDIxIDEuOTAzMjEgNi4xMDE1NCAxLjkwMzIxIDcuMjk2NzdaTTEzLjAxMDkgNy43MDMyMUMxMy4wMTA5IDQuNjkxMTUgMTAuODUwNSAyLjYyOTYgOC40MDM4NCAyLjE3MDI5QzguMTIwOTMgMi4xMTcxOCA3LjkzNDY1IDEuODQ0NzkgNy45ODc3NiAxLjU2MTg4QzguMDQwODcgMS4yNzg5OCA4LjMxMzI2IDEuMDkyNyA4LjU5NjE2IDEuMTQ1ODFDMTEuNDcwNCAxLjY4NTQxIDE0LjA1MzIgNC4xMjYwNSAxNC4wNTMyIDcuNzAzMjFDMTQuMDUzMiA5LjIzOTg4IDEzLjM1NDEgMTAuNDQ3NSAxMi41Mzc3IDExLjM2NjJDMTEuOTUyOCAxMi4wMjQzIDExLjI4MzcgMTIuNTU4NiAxMC43NDU2IDEyLjk2OEwxMi4zODIxIDEyLjk2OEMxMi42NTgyIDEyLjk2OCAxMi44ODIxIDEzLjE5MTggMTIuODgyMSAxMy40NjhDMTIuODgyMSAxMy43NDQxIDEyLjY1ODIgMTMuOTY4IDEyLjM4MjEgMTMuOTY4TDkuMzgyMDUgMTMuOTY4QzkuMTA1OTEgMTMuOTY4IDguODgyMDUgMTMuNzQ0MSA4Ljg4MjA1IDEzLjQ2OEw4Ljg4MjA1IDEwLjQ2OEM4Ljg4MjA1IDEwLjE5MTggOS4xMDU5MSA5Ljk2Nzk2IDkuMzgyMDUgOS45Njc5NkM5LjY1ODE5IDkuOTY3OTYgOS44ODIwNSAxMC4xOTE4IDkuODgyMDUgMTAuNDY4TDkuODgyMDUgMTIuMzEzNUw5Ljg4MzYyIDEyLjMxMjNDMTAuNDU1MSAxMS44ODEzIDExLjE1MzUgMTEuMzU0NiAxMS43NTg1IDEwLjY3MzhDMTIuNDczMSA5Ljg2OTc2IDEzLjAxMDkgOC44OTg0NCAxMy4wMTA5IDcuNzAzMjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxLcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOCAySDEyLjVDMTIuNzc2MSAyIDEzIDIuMjIzODYgMTMgMi41VjVIOFYyWk03IDVWMkgyLjVDMi4yMjM4NiAyIDIgMi4yMjM4NiAyIDIuNVY1SDdaTTIgNlY5SDdWNkgyWk04IDZIMTNWOUg4VjZaTTggMTBIMTNWMTIuNUMxMyAxMi43NzYxIDEyLjc3NjEgMTMgMTIuNSAxM0g4VjEwWk0yIDEyLjVWMTBIN1YxM0gyLjVDMi4yMjM4NiAxMyAyIDEyLjc3NjEgMiAxMi41Wk0xIDIuNUMxIDEuNjcxNTcgMS42NzE1NyAxIDIuNSAxSDEyLjVDMTMuMzI4NCAxIDE0IDEuNjcxNTcgMTQgMi41VjEyLjVDMTQgMTMuMzI4NCAxMy4zMjg0IDE0IDEyLjUgMTRIMi41QzEuNjcxNTcgMTQgMSAxMy4zMjg0IDEgMTIuNVYyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxYcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC45MDAwMjQgNy41MDAwMkMwLjkwMDAyNCAzLjg1NDk1IDMuODU0OTUgMC45MDAwMjQgNy41MDAwMiAwLjkwMDAyNEMxMS4xNDUxIDAuOTAwMDI0IDE0LjEgMy44NTQ5NSAxNC4xIDcuNTAwMDJDMTQuMSAxMS4xNDUxIDExLjE0NTEgMTQuMSA3LjUwMDAyIDE0LjFDMy44NTQ5NSAxNC4xIDAuOTAwMDI0IDExLjE0NTEgMC45MDAwMjQgNy41MDAwMlpNNy41MDAwMiAxLjgwMDAyQzQuMzUyMDEgMS44MDAwMiAxLjgwMDAyIDQuMzUyMDEgMS44MDAwMiA3LjUwMDAyQzEuODAwMDIgMTAuNjQ4IDQuMzUyMDEgMTMuMiA3LjUwMDAyIDEzLjJDMTAuNjQ4IDEzLjIgMTMuMiAxMC42NDggMTMuMiA3LjUwMDAyQzEzLjIgNC4zNTIwMSAxMC42NDggMS44MDAwMiA3LjUwMDAyIDEuODAwMDJaTTMuMDc1MDQgNy41MDAwMkMzLjA3NTA0IDUuMDU2MTcgNS4wNTYxOCAzLjA3NTAyIDcuNTAwMDQgMy4wNzUwMkM5Ljk0Mzg4IDMuMDc1MDIgMTEuOTI1IDUuMDU2MTcgMTEuOTI1IDcuNTAwMDJDMTEuOTI1IDkuOTQzODYgOS45NDM4OCAxMS45MjUgNy41MDAwNCAxMS45MjVDNS4wNTYxOCAxMS45MjUgMy4wNzUwNCA5Ljk0Mzg2IDMuMDc1MDQgNy41MDAwMlpNNy41MDAwNCAzLjkyNTAyQzUuNTI1NjIgMy45MjUwMiAzLjkyNTA0IDUuNTI1NjEgMy45MjUwNCA3LjUwMDAyQzMuOTI1MDQgOS40NzQ0MiA1LjUyNTYzIDExLjA3NSA3LjUwMDA0IDExLjA3NUM5LjQ3NDQ0IDExLjA3NSAxMS4wNzUgOS40NzQ0MiAxMS4wNzUgNy41MDAwMkMxMS4wNzUgNS41MjU2MSA5LjQ3NDQ0IDMuOTI1MDIgNy41MDAwNCAzLjkyNTAyWk03LjUwMDA0IDUuMjUwMDJDNi4yNTc0IDUuMjUwMDIgNS4yNTAwNCA2LjI1NzM5IDUuMjUwMDQgNy41MDAwMkM1LjI1MDA0IDguNzQyNjYgNi4yNTc0IDkuNzUwMDIgNy41MDAwNCA5Ljc1MDAyQzguNzQyNjcgOS43NTAwMiA5Ljc1MDA0IDguNzQyNjYgOS43NTAwNCA3LjUwMDAyQzkuNzUwMDQgNi4yNTczOCA4Ljc0MjY3IDUuMjUwMDIgNy41MDAwNCA1LjI1MDAyWk02LjA1MDA0IDcuNTAwMDJDNi4wNTAwNCA2LjY5OTIxIDYuNjk5MjMgNi4wNTAwMiA3LjUwMDA0IDYuMDUwMDJDOC4zMDA4NCA2LjA1MDAyIDguOTUwMDQgNi42OTkyMSA4Ljk1MDA0IDcuNTAwMDJDOC45NTAwNCA4LjMwMDgzIDguMzAwODQgOC45NTAwMiA3LjUwMDA0IDguOTUwMDJDNi42OTkyMyA4Ljk1MDAyIDYuMDUwMDQgOC4zMDA4MyA2LjA1MDA0IDcuNTAwMDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxKcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy45NDk5MyAyLjk1MDAyTDMuOTQ5OTMgNC40OTk5OEMzLjk0OTkzIDQuNzQ4NTEgMy43NDg0NSA0Ljk0OTk4IDMuNDk5OTMgNC45NDk5OEMzLjI1MTQgNC45NDk5OCAzLjA0OTkzIDQuNzQ4NTEgMy4wNDk5MyA0LjQ5OTk4VjIuNTAwMDRDMy4wNDk5MyAyLjQ1MjQ2IDMuMDU3MzEgMi40MDY2MSAzLjA3MDk5IDIuMzYzNTdDMy4xMjg3OCAyLjE4MTc1IDMuMjk4OTcgMi4wNTAwMiAzLjQ5OTkzIDIuMDUwMDJIMTEuNDk5OUMxMS42NTUzIDIuMDUwMDIgMTEuNzkyMiAyLjEyODcyIDExLjg3MzEgMi4yNDg0MkMxMS45MjE2IDIuMzIwMjQgMTEuOTQ5OSAyLjQwNjgyIDExLjk0OTkgMi41MDAwMkwxMS45NDk5IDIuNTAwMDRWNC40OTk5OEMxMS45NDk5IDQuNzQ4NTEgMTEuNzQ4NSA0Ljk0OTk4IDExLjQ5OTkgNC45NDk5OEMxMS4yNTE0IDQuOTQ5OTggMTEuMDQ5OSA0Ljc0ODUxIDExLjA0OTkgNC40OTk5OFYyLjk1MDAySDguMDQ5OTNWMTIuMDVIOS4yNTQyOEM5LjUwMjgxIDEyLjA1IDkuNzA0MjggMTIuMjUxNSA5LjcwNDI4IDEyLjVDOS43MDQyOCAxMi43NDg2IDkuNTAyODEgMTIuOTUgOS4yNTQyOCAxMi45NUg1Ljc1NDI4QzUuNTA1NzUgMTIuOTUgNS4zMDQyOCAxMi43NDg2IDUuMzA0MjggMTIuNUM1LjMwNDI4IDEyLjI1MTUgNS41MDU3NSAxMi4wNSA1Ljc1NDI4IDEyLjA1SDYuOTQ5OTNWMi45NTAwMkgzLjk0OTkzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgNC41QzIgNC4yMjM4NiAyLjIyMzg2IDQgMi41IDRIMTIuNUMxMi43NzYxIDQgMTMgNC4yMjM4NiAxMyA0LjVDMTMgNC43NzYxNCAxMi43NzYxIDUgMTIuNSA1SDIuNUMyLjIyMzg2IDUgMiA0Ljc3NjE0IDIgNC41Wk00IDcuNUM0IDcuMjIzODYgNC4yMjM4NiA3IDQuNSA3SDEwLjVDMTAuNzc2MSA3IDExIDcuMjIzODYgMTEgNy41QzExIDcuNzc2MTQgMTAuNzc2MSA4IDEwLjUgOEg0LjVDNC4yMjM4NiA4IDQgNy43NzYxNCA0IDcuNVpNMyAxMC41QzMgMTAuMjIzOSAzLjIyMzg2IDEwIDMuNSAxMEgxMS41QzExLjc3NjEgMTAgMTIgMTAuMjIzOSAxMiAxMC41QzEyIDEwLjc3NjEgMTEuNzc2MSAxMSAxMS41IDExSDMuNUMzLjIyMzg2IDExIDMgMTAuNzc2MSAzIDEwLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxlbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi41IDRDMi4yMjM4NiA0IDIgNC4yMjM4NiAyIDQuNUMyIDQuNzc2MTQgMi4yMjM4NiA1IDIuNSA1SDEyLjVDMTIuNzc2MSA1IDEzIDQuNzc2MTQgMTMgNC41QzEzIDQuMjIzODYgMTIuNzc2MSA0IDEyLjUgNEgyLjVaTTIgNy41QzIgNy4yMjM4NiAyLjIyMzg2IDcgMi41IDdIMTIuNUMxMi43NzYxIDcgMTMgNy4yMjM4NiAxMyA3LjVDMTMgNy43NzYxNCAxMi43NzYxIDggMTIuNSA4SDIuNUMyLjIyMzg2IDggMiA3Ljc3NjE0IDIgNy41Wk0yIDEwLjVDMiAxMC4yMjM5IDIuMjIzODYgMTAgMi41IDEwSDEyLjVDMTIuNzc2MSAxMCAxMyAxMC4yMjM5IDEzIDEwLjVDMTMgMTAuNzc2MSAxMi43NzYxIDExIDEyLjUgMTFIMi41QzIuMjIzODYgMTEgMiAxMC43NzYxIDIgMTAuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHRvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDQuNUMyIDQuMjIzODYgMi4yMjM4NiA0IDIuNSA0SDEyLjVDMTIuNzc2MSA0IDEzIDQuMjIzODYgMTMgNC41QzEzIDQuNzc2MTQgMTIuNzc2MSA1IDEyLjUgNUgyLjVDMi4yMjM4NiA1IDIgNC43NzYxNCAyIDQuNVpNMiA3LjVDMiA3LjIyMzg2IDIuMjIzODYgNyAyLjUgN0g3LjVDNy43NzYxNCA3IDggNy4yMjM4NiA4IDcuNUM4IDcuNzc2MTQgNy43NzYxNCA4IDcuNSA4SDIuNUMyLjIyMzg2IDggMiA3Ljc3NjE0IDIgNy41Wk0yIDEwLjVDMiAxMC4yMjM5IDIuMjIzODYgMTAgMi41IDEwSDEwLjVDMTAuNzc2MSAxMCAxMSAxMC4yMjM5IDExIDEwLjVDMTEgMTAuNzc2MSAxMC43NzYxIDExIDEwLjUgMTFIMi41QzIuMjIzODYgMTEgMiAxMC43NzYxIDIgMTAuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG5vPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDQuNUMyIDQuMjIzODYgMi4yMjM4NiA0IDIuNSA0SDEyLjVDMTIuNzc2MSA0IDEzIDQuMjIzODYgMTMgNC41QzEzIDQuNzc2MTQgMTIuNzc2MSA1IDEyLjUgNUgyLjVDMi4yMjM4NiA1IDIgNC43NzYxNCAyIDQuNVpNNyA3LjVDNyA3LjIyMzg2IDcuMjIzODYgNyA3LjUgN0gxMi41QzEyLjc3NjEgNyAxMyA3LjIyMzg2IDEzIDcuNUMxMyA3Ljc3NjE0IDEyLjc3NjEgOCAxMi41IDhINy41QzcuMjIzODYgOCA3IDcuNzc2MTQgNyA3LjVaTTQgMTAuNUM0IDEwLjIyMzkgNC4yMjM4NiAxMCA0LjUgMTBIMTIuNUMxMi43NzYxIDEwIDEzIDEwLjIyMzkgMTMgMTAuNUMxMyAxMC43NzYxIDEyLjc3NjEgMTEgMTIuNSAxMUg0LjVDNC4yMjM4NiAxMSA0IDEwLjc3NjEgNCAxMC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scm89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjM1MzYgMi4zNTM1NUMxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAxLjg0MTcxIDEzLjM1MzYgMS42NDY0NUMxMy4xNTgzIDEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEyLjY0NjQgMS42NDY0NUwxMS45MjkxIDIuMzYzODNDMTEuOTE1OSAyLjMyMjQ2IDExLjg5NyAyLjI4MzY4IDExLjg3MzIgMi4yNDg0NUMxMS43OTIzIDIuMTI4NzUgMTEuNjU1NCAyLjA1MDA1IDExLjUwMDEgMi4wNTAwNUgzLjUwMDA1QzMuMjk5MDkgMi4wNTAwNSAzLjEyODkgMi4xODE3OCAzLjA3MTExIDIuMzYzNkMzLjA1NzQzIDIuNDA2NjUgMy4wNTAwNSAyLjQ1MjQ5IDMuMDUwMDUgMi41MDAwN1Y0LjUwMDAxQzMuMDUwMDUgNC43NDg1NCAzLjI1MTUyIDQuOTUwMDEgMy41MDAwNSA0Ljk1MDAxQzMuNzQ4NTggNC45NTAwMSAzLjk1MDA1IDQuNzQ4NTQgMy45NTAwNSA0LjUwMDAxVjIuOTUwMDVINi45NTAwNlY3LjM0Mjg0TDEuNjQ2NDUgMTIuNjQ2NEMxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMy4xNTgzIDEuNjQ2NDUgMTMuMzUzNkMxLjg0MTcxIDEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDIuMzUzNTUgMTMuMzUzNkw2Ljk1MDA2IDguNzU3MDVWMTIuMDUwMUg1Ljc1NDRDNS41MDU4NyAxMi4wNTAxIDUuMzA0NCAxMi4yNTE1IDUuMzA0NCAxMi41MDAxQzUuMzA0NCAxMi43NDg2IDUuNTA1ODcgMTIuOTUwMSA1Ljc1NDQgMTIuOTUwMUg5LjI1NDRDOS41MDI5MyAxMi45NTAxIDkuNzA0NCAxMi43NDg2IDkuNzA0NCAxMi41MDAxQzkuNzA0NCAxMi4yNTE1IDkuNTAyOTMgMTIuMDUwMSA5LjI1NDQgMTIuMDUwMUg4LjA1MDA2VjcuNjU3MDVMMTMuMzUzNiAyLjM1MzU1Wk04LjA1MDA2IDYuMjQyODRMMTEuMDUwMSAzLjI0MjgzVjIuOTUwMDVIOC4wNTAwNlY2LjI0Mjg0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sb289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUgMy41QzUgMy4yMjM4NiA1LjIyMzg2IDMgNS41IDNIOS41QzkuNzc2MTQgMyAxMCAzLjIyMzg2IDEwIDMuNVY2SDEyLjVDMTIuNjg3MyA2IDEyLjg1ODkgNi4xMDQ2NyAxMi45NDQ2IDYuMjcxMjFDMTMuMDMwMyA2LjQzNzc0IDEzLjAxNTcgNi42MzgyMSAxMi45MDY5IDYuNzkwNjJMNy45MDY4NyAxMy43OTA2QzcuODEzMDEgMTMuOTIyIDcuNjYxNDggMTQgNy41IDE0QzcuMzM4NTMgMTQgNy4xODY5OSAxMy45MjIgNy4wOTMxNCAxMy43OTA2TDIuMDkzMTQgNi43OTA2MkMxLjk4NDI3IDYuNjM4MjEgMS45Njk3MiA2LjQzNzc0IDIuMDU1NDIgNi4yNzEyMUMyLjE0MTEyIDYuMTA0NjcgMi4zMTI3MSA2IDIuNSA2SDVWMy41Wk02IDRWNi41QzYgNi43NzYxNCA1Ljc3NjE0IDcgNS41IDdIMy40NzE2TDcuNSAxMi42Mzk4TDExLjUyODQgN0g5LjVDOS4yMjM4NiA3IDkgNi43NzYxNCA5IDYuNVY0SDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxpbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMSA3LjVDMSA3LjY2MTQ4IDEuMDc3OTggNy44MTMwMSAxLjIwOTM4IDcuOTA2ODdMOC4yMDkzOCAxMi45MDY5QzguMzYxNzkgMTMuMDE1NyA4LjU2MjI2IDEzLjAzMDMgOC43Mjg3OSAxMi45NDQ2QzguODk1MzMgMTIuODU4OSA5IDEyLjY4NzMgOSAxMi41TDkgMTBMMTEuNSAxMEMxMS43NzYxIDEwIDEyIDkuNzc2MTQgMTIgOS41TDEyIDUuNUMxMiA1LjIyMzg2IDExLjc3NjEgNSAxMS41IDVMOSA1TDkgMi41QzkgMi4zMTI3MSA4Ljg5NTMzIDIuMTQxMTIgOC43Mjg3OSAyLjA1NTQyQzguNTYyMjYgMS45Njk3MiA4LjM2MTc5IDEuOTg0MjcgOC4yMDkzOCAyLjA5MzEzTDEuMjA5MzggNy4wOTMxNEMxLjA3Nzk4IDcuMTg2OTkgMSA3LjMzODUzIDEgNy41Wk04IDMuNDcxNkw4IDUuNUM4IDUuNzc2MTQgOC4yMjM4NiA2IDguNSA2TDExIDZMMTEgOUw4LjUgOUM4LjIyMzg2IDkgOCA5LjIyMzg2IDggOS41TDggMTEuNTI4NEwyLjM2MDIzIDcuNUw4IDMuNDcxNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGFvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNCA3LjVDMTQgNy42NjE0OCAxMy45MjIgNy44MTMwMSAxMy43OTA2IDcuOTA2ODdMNi43OTA2MiAxMi45MDY5QzYuNjM4MjEgMTMuMDE1NyA2LjQzNzc0IDEzLjAzMDMgNi4yNzEyMSAxMi45NDQ2QzYuMTA0NjcgMTIuODU4OSA2IDEyLjY4NzMgNiAxMi41TDYgMTBMMy41IDEwQzMuMjIzODYgMTAgMyA5Ljc3NjE0IDMgOS41TDMgNS41QzMgNS4yMjM4NiAzLjIyMzg2IDUgMy41IDVMNiA1TDYgMi41QzYgMi4zMTI3MSA2LjEwNDY3IDIuMTQxMTIgNi4yNzEyMSAyLjA1NTQyQzYuNDM3NzQgMS45Njk3MiA2LjYzODIxIDEuOTg0MjcgNi43OTA2MiAyLjA5MzEzTDEzLjc5MDYgNy4wOTMxNEMxMy45MjIgNy4xODY5OSAxNCA3LjMzODUzIDE0IDcuNVpNNyAzLjQ3MTZMNyA1LjVDNyA1Ljc3NjE0IDYuNzc2MTQgNiA2LjUgNkw0IDZMNCA5TDYuNSA5QzYuNzc2MTQgOSA3IDkuMjIzODYgNyA5LjVMNyAxMS41Mjg0TDEyLjYzOTggNy41TDcgMy40NzE2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAxQzcuNjYxNDggMSA3LjgxMzAxIDEuMDc3OTggNy45MDY4NyAxLjIwOTM4TDEyLjkwNjkgOC4yMDkzOEMxMy4wMTU3IDguMzYxNzkgMTMuMDMwMyA4LjU2MjI2IDEyLjk0NDYgOC43Mjg3OUMxMi44NTg5IDguODk1MzMgMTIuNjg3MyA5IDEyLjUgOUgxMFYxMS41QzEwIDExLjc3NjEgOS43NzYxNCAxMiA5LjUgMTJINS41QzUuMjIzODYgMTIgNSAxMS43NzYxIDUgMTEuNVY5SDIuNUMyLjMxMjcxIDkgMi4xNDExMiA4Ljg5NTMzIDIuMDU1NDIgOC43Mjg3OUMxLjk2OTcyIDguNTYyMjYgMS45ODQyNyA4LjM2MTc5IDIuMDkzMTQgOC4yMDkzOEw3LjA5MzE0IDEuMjA5MzhDNy4xODY5OSAxLjA3Nzk4IDcuMzM4NTMgMSA3LjUgMVpNMy40NzE2IDhINS41QzUuNzc2MTQgOCA2IDguMjIzODYgNiA4LjVWMTFIOVY4LjVDOSA4LjIyMzg2IDkuMjIzODYgOCA5LjUgOEgxMS41Mjg0TDcuNSAyLjM2MDIzTDMuNDcxNiA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sc289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTggMC44NDk5NzZDNy4yMjM4MyAwLjg0OTk3NiA2Ljk5OTk4IDEuMDczODMgNi45OTk5OCAxLjM0OTk4VjMuNTIyMzRDNi45OTk5OCAzLjc5ODQ4IDcuMjIzODMgNC4wMjIzNCA3LjQ5OTk4IDQuMDIyMzRDNy43NzYxMiA0LjAyMjM0IDcuOTk5OTggMy43OTg0OCA3Ljk5OTk4IDMuNTIyMzRWMS44NzE4QzEwLjg4NjIgMi4xMjQ4OCAxMy4xNSA0LjU0ODA2IDEzLjE1IDcuNDk5OThDMTMuMTUgMTAuNjIwNCAxMC42MjA0IDEzLjE1IDcuNDk5OTggMTMuMTVDNC4zNzk1NyAxMy4xNSAxLjg0OTk4IDEwLjYyMDQgMS44NDk5OCA3LjQ5OTk4QzEuODQ5OTggNi4xMDYxMiAyLjM1NDA3IDQuODMxMjggMy4xOTA0OSAzLjg0NTlDMy4zNjkxOSAzLjYzNTM4IDMuMzQzMzkgMy4zMTk4NSAzLjEzMjg2IDMuMTQxMTVDMi45MjIzNCAyLjk2MjQ1IDIuNjA2ODEgMi45ODgyNSAyLjQyODExIDMuMTk4NzdDMS40NDQwNSA0LjM1ODA4IDAuODQ5OTc2IDUuODYwMjkgMC44NDk5NzYgNy40OTk5OEMwLjg0OTk3NiAxMS4xNzI3IDMuODI3MjggMTQuMTUgNy40OTk5OCAxNC4xNUMxMS4xNzI3IDE0LjE1IDE0LjE1IDExLjE3MjcgMTQuMTUgNy40OTk5OEMxNC4xNSAzLjgyNzI4IDExLjE3MjcgMC44NDk5NzYgNy40OTk5OCAwLjg0OTk3NlpNNi43NDA0OSA4LjA4MDcyTDQuMjIzNjMgNC41NzIzN0M0LjE1MjMxIDQuNDcyOTUgNC4xNjM0NiA0LjMzNjUyIDQuMjQ5OTggNC4yNUM0LjMzNjQ5IDQuMTYzNDggNC40NzI5MyA0LjE1MjMzIDQuNTcyMzQgNC4yMjM2NUw4LjA4MDY5IDYuNzQwNTFDOC41NjIyNyA3LjA4NTk5IDguNjE5MDYgNy43ODA5MSA4LjE5OTk4IDguMkM3Ljc4MDg5IDguNjE5MDkgNy4wODU5NyA4LjU2MjI5IDYuNzQwNDkgOC4wODA3MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGNvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjUgMkMzLjExOTI5IDIgMiAzLjExOTI5IDIgNC41QzIgNS44ODA3MiAzLjExOTI5IDcgNC41IDdDNS44ODA3MiA3IDcgNS44ODA3MiA3IDQuNUM3IDMuMTE5MjkgNS44ODA3MiAyIDQuNSAyWk0zIDQuNUMzIDMuNjcxNTcgMy42NzE1NyAzIDQuNSAzQzUuMzI4NDMgMyA2IDMuNjcxNTcgNiA0LjVDNiA1LjMyODQzIDUuMzI4NDMgNiA0LjUgNkMzLjY3MTU3IDYgMyA1LjMyODQzIDMgNC41Wk0xMC41IDJDOS4xMTkyOSAyIDggMy4xMTkyOSA4IDQuNUM4IDUuODgwNzIgOS4xMTkyOSA3IDEwLjUgN0MxMS44ODA3IDcgMTMgNS44ODA3MiAxMyA0LjVDMTMgMy4xMTkyOSAxMS44ODA3IDIgMTAuNSAyWk05IDQuNUM5IDMuNjcxNTcgOS42NzE1NyAzIDEwLjUgM0MxMS4zMjg0IDMgMTIgMy42NzE1NyAxMiA0LjVDMTIgNS4zMjg0MyAxMS4zMjg0IDYgMTAuNSA2QzkuNjcxNTcgNiA5IDUuMzI4NDMgOSA0LjVaTTIgMTAuNUMyIDkuMTE5MjkgMy4xMTkyOSA4IDQuNSA4QzUuODgwNzIgOCA3IDkuMTE5MjkgNyAxMC41QzcgMTEuODgwNyA1Ljg4MDcyIDEzIDQuNSAxM0MzLjExOTI5IDEzIDIgMTEuODgwNyAyIDEwLjVaTTQuNSA5QzMuNjcxNTcgOSAzIDkuNjcxNTcgMyAxMC41QzMgMTEuMzI4NCAzLjY3MTU3IDEyIDQuNSAxMkM1LjMyODQzIDEyIDYgMTEuMzI4NCA2IDEwLjVDNiA5LjY3MTU3IDUuMzI4NDMgOSA0LjUgOVpNMTAuNSA4QzkuMTE5MjkgOCA4IDkuMTE5MjkgOCAxMC41QzggMTEuODgwNyA5LjExOTI5IDEzIDEwLjUgMTNDMTEuODgwNyAxMyAxMyAxMS44ODA3IDEzIDEwLjVDMTMgOS4xMTkyOSAxMS44ODA3IDggMTAuNSA4Wk05IDEwLjVDOSA5LjY3MTU3IDkuNjcxNTcgOSAxMC41IDlDMTEuMzI4NCA5IDEyIDkuNjcxNTcgMTIgMTAuNUMxMiAxMS4zMjg0IDExLjMyODQgMTIgMTAuNSAxMkM5LjY3MTU3IDEyIDkgMTEuMzI4NCA5IDEwLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx1bz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMDUwMiAyLjc0OTg5QzEzLjA1MDIgMi40NDYxMyAxMi44MDQgMi4xOTk4OSAxMi41MDAyIDIuMTk5ODlDMTIuMTk2NSAyLjE5OTg5IDExLjk1MDIgMi40NDYxMyAxMS45NTAyIDIuNzQ5ODlWNy4yODI1QzExLjkwNDYgNy4xODgwMiAxMS44Mjk1IDcuMTA4NTEgMTEuNzMzNCA3LjA1Nzc2TDIuNzMzMzggMi4zMDc3NkMyLjU3ODQgMi4yMjU5NiAyLjM5MTkgMi4yMzEyNyAyLjI0MTgyIDIuMzIxNzZDMi4wOTE3NSAyLjQxMjI1IDIgMi41NzQ3MSAyIDIuNzQ5OTVWMTIuMjVDMiAxMi40MjUyIDIuMDkxNzUgMTIuNTg3NyAyLjI0MTgyIDEyLjY3ODFDMi4zOTE5IDEyLjc2ODYgMi41Nzg0IDEyLjc3MzkgMi43MzMzOCAxMi42OTIxTDExLjczMzQgNy45NDIxNEMxMS44Mjk1IDcuODkxMzkgMTEuOTA0NiA3LjgxMTg4IDExLjk1MDIgNy43MTc0VjEyLjI0OTlDMTEuOTUwMiAxMi41NTM2IDEyLjE5NjUgMTIuNzk5OSAxMi41MDAyIDEyLjc5OTlDMTIuODA0IDEyLjc5OTkgMTMuMDUwMiAxMi41NTM2IDEzLjA1MDIgMTIuMjQ5OVYyLjc0OTg5Wk0zIDExLjQyMDdWMy41NzkyTDEwLjQyODggNy40OTk5NUwzIDExLjQyMDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxmbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS45NDk3NiAyLjc0OTg5QzEuOTQ5NzYgMi40NDYxMyAyLjE5NiAyLjE5OTg5IDIuNDk5NzYgMi4xOTk4OUMyLjgwMzUxIDIuMTk5ODkgMy4wNDk3NiAyLjQ0NjEzIDMuMDQ5NzYgMi43NDk4OVY3LjI4MjVDMy4wOTU0IDcuMTg4MDIgMy4xNzA0NiA3LjEwODUxIDMuMjY2NjIgNy4wNTc3NkwxMi4yNjY2IDIuMzA3NzZDMTIuNDIxNiAyLjIyNTk2IDEyLjYwODEgMi4yMzEyNyAxMi43NTgyIDIuMzIxNzZDMTIuOTA4MyAyLjQxMjI1IDEzIDIuNTc0NzEgMTMgMi43NDk5NVYxMi4yNUMxMyAxMi40MjUyIDEyLjkwODMgMTIuNTg3NyAxMi43NTgyIDEyLjY3ODFDMTIuNjA4MSAxMi43Njg2IDEyLjQyMTYgMTIuNzczOSAxMi4yNjY2IDEyLjY5MjFMMy4yNjY2MiA3Ljk0MjE0QzMuMTcwNDYgNy44OTEzOSAzLjA5NTQgNy44MTE4OCAzLjA0OTc2IDcuNzE3NFYxMi4yNDk5QzMuMDQ5NzYgMTIuNTUzNiAyLjgwMzUxIDEyLjc5OTkgMi40OTk3NiAxMi43OTk5QzIuMTk2IDEyLjc5OTkgMS45NDk3NiAxMi41NTM2IDEuOTQ5NzYgMTIuMjQ5OVYyLjc0OTg5Wk00LjU3MTIyIDcuNDk5OTVMMTIgMTEuNDIwN1YzLjU3OTJMNC41NzEyMiA3LjQ5OTk1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjI1XCIsZDpcIk0wIDBIM1YzSDBWMFpNNiAzSDNWNkgwVjlIM1YxMkgwVjE1SDNWMTJINlYxNUg5VjEySDEyVjE1SDE1VjEySDEyVjlIMTVWNkgxMlYzSDE1VjBIMTJWM0g5VjBINlYzWk02IDZWM0g5VjZINlpNNiA5SDNWNkg2VjlaTTkgOVY2SDEyVjlIOVpNOSA5SDZWMTJIOVY5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNSAxQzUuMjIzODYgMSA1IDEuMjIzODYgNSAxLjVDNSAxLjc3NjE0IDUuMjIzODYgMiA1LjUgMkg5LjVDOS43NzYxNCAyIDEwIDEuNzc2MTQgMTAgMS41QzEwIDEuMjIzODYgOS43NzYxNCAxIDkuNSAxSDUuNVpNMyAzLjVDMyAzLjIyMzg2IDMuMjIzODYgMyAzLjUgM0g1SDEwSDExLjVDMTEuNzc2MSAzIDEyIDMuMjIzODYgMTIgMy41QzEyIDMuNzc2MTQgMTEuNzc2MSA0IDExLjUgNEgxMVYxMkMxMSAxMi41NTIzIDEwLjU1MjMgMTMgMTAgMTNINUM0LjQ0NzcyIDEzIDQgMTIuNTUyMyA0IDEyVjRMMy41IDRDMy4yMjM4NiA0IDMgMy43NzYxNCAzIDMuNVpNNSA0SDEwVjEySDVWNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHZvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00IDZIMTFMNy41IDEwLjVMNCA2WlwiLGZpbGw6bn0pKX0sZ289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkgNEw5IDExTDQuNSA3LjVMOSA0WlwiLGZpbGw6bn0pKX0sQ289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYgMTFMNiA0TDEwLjUgNy41TDYgMTFaXCIsZmlsbDpufSkpfSxtbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNCA5SDExTDcuNSA0LjVMNCA5WlwiLGZpbGw6bn0pKX0seW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMjMzMzYgNC42OTYyOUM3LjIzMzM2IDIuOTY4ODQgOC42MzMzNSAxLjU2ODU3IDEwLjM2IDEuNTY4NTdDMTEuMzczNiAxLjU2ODU3IDEyLjE4MyAyLjA0ODA0IDEyLjcyNTQgMi43NDM4NUMxMy4zMDc5IDIuNjI0NjcgMTMuODU1NyAyLjQwOTEzIDE0LjM1MTMgMi4xMTUwOEMxNC4xNTU5IDIuNzI1OTggMTMuNzQyNCAzLjIzOTYgMTMuMjAzMyAzLjU2NDYzQzEzLjIwMzggMy41NjU2OCAxMy4yMDQyIDMuNTY2NzQgMTMuMjA0NyAzLjU2Nzc5QzEzLjczMzQgMy41MDM2MSAxNC4yMzY0IDMuMzYzMDIgMTQuNzA0OCAzLjE1NTQ2TDE0LjcwMzcgMy4xNTcxNUMxNC4zNjY3IDMuNjYxODMgMTMuOTQzMSA0LjEwNzM2IDEzLjQ1NjEgNC40NzAzNEMxMy40ODIzIDQuNjQ2NzIgMTMuNDk1NiA0LjgyNDI3IDEzLjQ5NTYgNS4wMDA3OUMxMy40OTU2IDguNjg3MSAxMC42ODczIDEyLjk3NDYgNS41MjEyMiAxMi45NzQ2QzMuOTM5MDYgMTIuOTc0NiAyLjQ2NTQ0IDEyLjUxMSAxLjIyNTA1IDExLjcxNTJDMC45OTI2MzIgMTEuNTY2MSAwLjkyNTEwOCAxMS4yNTY4IDEuMDc0MjMgMTEuMDI0NEMxLjA4NzQgMTEuMDAzOCAxLjEwMTgzIDEwLjk4NDYgMS4xMTczNCAxMC45NjY2QzEuMjA1ODIgMTAuODIwMiAxLjM3NDM4IDEwLjczMDkgMS41NTU0IDEwLjc1MjJDMi40NzA2NiAxMC44NjAxIDMuMzg1NjggMTAuNzQ4NSA0LjE5MjE5IDEwLjM5NjJDMy4zOTIyNiAxMC4wNDM0IDIuNzcxMjkgOS4zNTk3NSAyLjUwMjA0IDguNTE5NzRDMi40NTM1OSA4LjM2ODYgMi40ODgzNSA4LjIwMzExIDIuNTkzNTEgOC4wODQyMkMyLjU5NzE2IDguMDgwMSAyLjYwMDg3IDguMDc2MDYgMi42MDQ2NCA4LjA3MjFDMS45NjM5MSA3LjUwODE5IDEuNTU5NzMgNi42ODIwOCAxLjU1OTczIDUuNzYxNDNWNS43Mjc1OUMxLjU1OTczIDUuNTY4MTQgMS42NDQxMSA1LjQyMDU5IDEuNzgxNTUgNS4zMzk3NEMxLjgyNjcxIDUuMzEzMTcgMS44NzUzNyA1LjI5NTExIDEuOTI1MzIgNS4yODU1OEMxLjcwNTQ5IDQuODYxNTQgMS41ODExNiA0LjM3OTg0IDEuNTgxMTYgMy44Njk1OEMxLjU4MTE2IDMuNDAxNjUgMS41ODM4NCAyLjgxMTkyIDEuOTEzMzIgMi4yODA4MUMxLjk4NzE4IDIuMTYxNzUgMi4xMDc1OCAyLjA4OTE1IDIuMjM2NCAyLjA3MTk1QzIuNDI1ODggMi4wMTIzNyAyLjY0MDg3IDIuMDY5NjkgMi43NzQwNiAyLjIzMzAyQzMuODY1MzYgMy41NzEyNiA1LjQ0MDY2IDQuNDk1ODMgNy4yMzM2NiA0LjczOTYxTDcuMjMzMzYgNC42OTYyOVpNNS41MjEyMiAxMS45NzQ2QzQuNzMzODcgMTEuOTc0NiAzLjk3NzgxIDExLjg0MzUgMy4yNzI0OCAxMS42MDIzQzQuMTMwMTIgMTEuNDUzOCA0Ljk1MzA3IDExLjExNTkgNS42NjIxOCAxMC41NjAyQzUuODEyMTEgMTAuNDQyNyA1Ljg3MTgyIDEwLjI0MzUgNS44MTEyNiAxMC4wNjI5QzUuNzUwNyA5Ljg4MjM0IDUuNTgzIDkuNzU5NDMgNS4zOTI1NSA5Ljc1NjA3QzQuNjg5NjggOS43NDM2NiA0LjA2NzEyIDkuMzk3MTYgMy42Nzc5MyA4Ljg2ODQ1QzMuODY4MjggOC44NTMwNiA0LjA1NDI4IDguODIwMzkgNC4yMzQ0NSA4Ljc3MTY3QzQuNDM2MDMgOC43MTcxNiA0LjU3MzYzIDguNTMxMTQgNC41NjY3NCA4LjMyMjQzQzQuNTU5ODUgOC4xMTM3MiA0LjQxMDI5IDcuOTM3MTggNC4yMDU1NSA3Ljg5NjA3QzMuNDI2OTQgNy43Mzk3NyAyLjc5ODgzIDcuMTY3NjQgMi41NjE2OSA2LjQyMTc0QzIuNzYyNTUgNi40NzAyNSAyLjk3MTAyIDYuNDk5MSAzLjE4NDgyIDYuNTA2MUMzLjM4NTYzIDYuNTEyNjcgMy41NjY0NiA2LjM4NTMzIDMuNjI3OTUgNi4xOTQwNUMzLjY4OTQzIDYuMDAyNzcgMy42MTY2NiA1Ljc5MzkxIDMuNDQ5NjMgNS42ODIyNEMyLjg2NTIzIDUuMjkxNTUgMi40ODExNiA0LjYyNDY0IDIuNDgxMTYgMy44Njk1OEMyLjQ4MTE2IDMuNzAyMTMgMi40ODM1MiAzLjU1MjY4IDIuNDkzNTUgMy40MTcxOUMzLjg1MTE1IDQuNzk5MTMgNS43MDg3MyA1LjY4OTMxIDcuNzc1ODggNS43OTMzOEM3LjkzMjI1IDUuODAxMjYgOC4wODMyOCA1LjczNTQzIDguMTgzOTUgNS42MTU1M0M4LjI4NDYzIDUuNDk1NjIgOC4zMjMzMiA1LjMzNTQ4IDguMjg4NTEgNS4xODI4NEM4LjI1MjU1IDUuMDI1MTcgOC4yMzMzNiA0Ljg2Mjg0IDguMjMzMzYgNC42OTYyOUM4LjIzMzM2IDMuNTIwODUgOS4xODU5MSAyLjU2ODU3IDEwLjM2IDIuNTY4NTdDMTEuNTk0MyAyLjU2ODU3IDEyLjQ5NTYgMy43MTIwOCAxMi40OTU2IDUuMDAwNzlDMTIuNDk1NiA4LjI1NzA5IDEwLjAyMDIgMTEuOTc0NiA1LjUyMTIyIDExLjk3NDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx3bz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS4wMDAwMSAyLjc1QzUuMDAwMDEgMi40NzM4NiA0Ljc3NjE1IDIuMjUgNC41MDAwMSAyLjI1QzQuMjIzODcgMi4yNSA0LjAwMDAxIDIuNDczODYgNC4wMDAwMSAyLjc1VjguMDVDNC4wMDAwMSA5Ljk4MyA1LjU2NzAyIDExLjU1IDcuNTAwMDEgMTEuNTVDOS40MzMwMSAxMS41NSAxMSA5Ljk4MyAxMSA4LjA1VjIuNzVDMTEgMi40NzM4NiAxMC43NzYyIDIuMjUgMTAuNSAyLjI1QzEwLjIyMzkgMi4yNSAxMCAyLjQ3Mzg2IDEwIDIuNzVWOC4wNUMxMCA5LjQzMDcxIDguODgwNzIgMTAuNTUgNy41MDAwMSAxMC41NUM2LjExOTMgMTAuNTUgNS4wMDAwMSA5LjQzMDcxIDUuMDAwMDEgOC4wNVYyLjc1Wk0zLjQ5OTk4IDEzLjEwMDFDMy4yNzkwNiAxMy4xMDAxIDMuMDk5OTggMTMuMjc5MSAzLjA5OTk4IDEzLjUwMDFDMy4wOTk5OCAxMy43MjEgMy4yNzkwNiAxMy45MDAxIDMuNDk5OTggMTMuOTAwMUgxMS41QzExLjcyMDkgMTMuOTAwMSAxMS45IDEzLjcyMSAxMS45IDEzLjUwMDFDMTEuOSAxMy4yNzkxIDExLjcyMDkgMTMuMTAwMSAxMS41IDEzLjEwMDFIMy40OTk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGJvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjkwMzIxIDcuMjk2NzdDMS45MDMyMSAxMC4zNDEgNC4xMTA0MSAxMi40MTQ3IDYuNTg4OTMgMTIuODQzOUM2Ljg3MjU1IDEyLjg5MyA3LjA2MjY2IDEzLjE2MjcgNy4wMTM1NSAxMy40NDY0QzYuOTY0NDQgMTMuNzMgNi42OTQ3MSAxMy45MjAxIDYuNDExMDkgMTMuODcxQzMuNDk5NDIgMTMuMzY2OCAwLjg2MDg0IDEwLjkxMjcgMC44NjA4NCA3LjI5Njc3QzAuODYwODM5IDUuNzYwMDkgMS41NTk5NiA0LjU1MjQ1IDIuMzc2MzkgMy42MzM3N0MyLjk2MTI0IDIuOTc1NjggMy42MzAzNCAyLjQ0MTM1IDQuMTY4NDYgMi4wMzIwMkwyLjUzMjA1IDIuMDMyMDJDMi4yNTU5MSAyLjAzMjAyIDIuMDMyMDUgMS44MDgxNiAyLjAzMjA1IDEuNTMyMDJDMi4wMzIwNSAxLjI1NTg4IDIuMjU1OTEgMS4wMzIwMiAyLjUzMjA1IDEuMDMyMDJMNS41MzIwNSAxLjAzMjAyQzUuODA4MTkgMS4wMzIwMiA2LjAzMjA1IDEuMjU1ODggNi4wMzIwNSAxLjUzMjAyTDYuMDMyMDUgNC41MzIwMkM2LjAzMjA1IDQuODA4MTYgNS44MDgxOSA1LjAzMjAyIDUuNTMyMDUgNS4wMzIwMkM1LjI1NTkxIDUuMDMyMDIgNS4wMzIwNSA0LjgwODE2IDUuMDMyMDUgNC41MzIwMkw1LjAzMjA1IDIuNjg2NDVMNS4wMzA1NCAyLjY4NzU5TDUuMDMwNDUgMi42ODc2Nkw1LjAzMDQ0IDIuNjg3NjdMNS4wMzA0MyAyLjY4NzY3QzQuNDU4OTYgMy4xMTg2OCAzLjc2MDU5IDMuNjQ1MzggMy4xNTU1NCA0LjMyNjJDMi40NDEwMiA1LjEzMDIxIDEuOTAzMjEgNi4xMDE1NCAxLjkwMzIxIDcuMjk2NzdaTTEzLjAxMDkgNy43MDMyMUMxMy4wMTA5IDQuNjkxMTUgMTAuODUwNSAyLjYyOTYgOC40MDM4NCAyLjE3MDI5QzguMTIwOTMgMi4xMTcxOCA3LjkzNDY1IDEuODQ0NzkgNy45ODc3NiAxLjU2MTg4QzguMDQwODcgMS4yNzg5OCA4LjMxMzI2IDEuMDkyNyA4LjU5NjE2IDEuMTQ1ODFDMTEuNDcwNCAxLjY4NTQxIDE0LjA1MzIgNC4xMjYwNSAxNC4wNTMyIDcuNzAzMjFDMTQuMDUzMiA5LjIzOTg4IDEzLjM1NDEgMTAuNDQ3NSAxMi41Mzc3IDExLjM2NjJDMTEuOTUyOCAxMi4wMjQzIDExLjI4MzcgMTIuNTU4NiAxMC43NDU2IDEyLjk2OEwxMi4zODIxIDEyLjk2OEMxMi42NTgyIDEyLjk2OCAxMi44ODIxIDEzLjE5MTggMTIuODgyMSAxMy40NjhDMTIuODgyMSAxMy43NDQxIDEyLjY1ODIgMTMuOTY4IDEyLjM4MjEgMTMuOTY4TDkuMzgyMDUgMTMuOTY4QzkuMTA1OTEgMTMuOTY4IDguODgyMDUgMTMuNzQ0MSA4Ljg4MjA1IDEzLjQ2OEw4Ljg4MjA1IDEwLjQ2OEM4Ljg4MjA1IDEwLjE5MTggOS4xMDU5MSA5Ljk2Nzk2IDkuMzgyMDUgOS45Njc5NkM5LjY1ODE5IDkuOTY3OTYgOS44ODIwNSAxMC4xOTE4IDkuODgyMDUgMTAuNDY4TDkuODgyMDUgMTIuMzEzNUw5Ljg4MzYyIDEyLjMxMjNDMTAuNDU1MSAxMS44ODEzIDExLjE1MzUgMTEuMzU0NiAxMS43NTg1IDEwLjY3MzhDMTIuNDczMSA5Ljg2OTc2IDEzLjAxMDkgOC44OTg0NCAxMy4wMTA5IDcuNzAzMjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx4bz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy44MTgyNSAxLjE4MTg4QzcuNjQyNTEgMS4wMDYxNSA3LjM1NzU5IDEuMDA2MTUgNy4xODE4NSAxLjE4MTg4TDQuMTgxODUgNC4xODE4OEM0LjAwNjExIDQuMzU3NjIgNC4wMDYxMSA0LjY0MjU0IDQuMTgxODUgNC44MTgyOEM0LjM1NzU5IDQuOTk0MDEgNC42NDI1MSA0Ljk5NDAxIDQuODE4MjUgNC44MTgyOEw3LjA1MDA1IDIuNTg2NDhWOS40OTk5NkM3LjA1MDA1IDkuNzQ4NDkgNy4yNTE1MiA5Ljk0OTk2IDcuNTAwMDUgOS45NDk5NkM3Ljc0ODU4IDkuOTQ5OTYgNy45NTAwNSA5Ljc0ODQ5IDcuOTUwMDUgOS40OTk5NlYyLjU4NjQ4TDEwLjE4MTkgNC44MTgyOEMxMC4zNTc2IDQuOTk0MDEgMTAuNjQyNSA0Ljk5NDAxIDEwLjgxODIgNC44MTgyOEMxMC45OTQgNC42NDI1NCAxMC45OTQgNC4zNTc2MiAxMC44MTgyIDQuMTgxODhMNy44MTgyNSAxLjE4MTg4Wk0yLjUgOS45OTk5N0MyLjc3NjE0IDkuOTk5OTcgMyAxMC4yMjM4IDMgMTAuNVYxMkMzIDEyLjU1MzggMy40NDU2NSAxMyAzLjk5NjM1IDEzSDExLjAwMTJDMTEuNTUyOSAxMyAxMiAxMi41NTI4IDEyIDEyVjEwLjVDMTIgMTAuMjIzOCAxMi4yMjM5IDkuOTk5OTcgMTIuNSA5Ljk5OTk3QzEyLjc3NjEgOS45OTk5NyAxMyAxMC4yMjM4IDEzIDEwLjVWMTJDMTMgMTMuMTA0IDEyLjEwNjIgMTQgMTEuMDAxMiAxNEgzLjk5NjM1QzIuODkwMTkgMTQgMiAxMy4xMDMgMiAxMlYxMC41QzIgMTAuMjIzOCAyLjIyMzg2IDkuOTk5OTcgMi41IDkuOTk5OTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxfbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwNzUgNy40OTk4OEMwLjg3NzA3NSAzLjg0MjE5IDMuODQyMjIgMC44NzcwNDUgNy40OTk5MSAwLjg3NzA0NUMxMS4xNTc2IDAuODc3MDQ1IDE0LjEyMjcgMy44NDIxOSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAxMS4xNTc1IDExLjE1NzYgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMy44NDIyMiAxNC4xMjI3IDAuODc3MDc1IDExLjE1NzUgMC44NzcwNzUgNy40OTk4OFpNNy40OTk5MSAxLjgyNzA0QzQuMzY2ODkgMS44MjcwNCAxLjgyNzA4IDQuMzY2ODYgMS44MjcwOCA3LjQ5OTg4QzEuODI3MDggMTAuNjMyOSA0LjM2Njg5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzEwLjYzMjkgMTMuMTcyNyAxMy4xNzI3IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNC4zNjY4NiAxMC42MzI5IDEuODI3MDQgNy40OTk5MSAxLjgyNzA0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5ODUgMC44NzcwNDVDMy44NDIxNiAwLjg3NzA0NSAwLjg3NzAxNCAzLjg0MjE5IDAuODc3MDE0IDcuNDk5ODhDMC44NzcwMTQgOS4xNDg4IDEuNDc5NjMgMTAuNjU3IDIuNDc2NjUgMTEuODE2MkwxLjY0NjQzIDEyLjY0NjRDMS40NTExNyAxMi44NDE3IDEuNDUxMTcgMTMuMTU4MyAxLjY0NjQzIDEzLjM1MzVDMS44NDE3IDEzLjU0ODggMi4xNTgyOCAxMy41NDg4IDIuMzUzNTQgMTMuMzUzNUwzLjE4Mzc3IDEyLjUyMzNDNC4zNDI5NiAxMy41MjAyIDUuODUxMDQgMTQuMTIyNyA3LjQ5OTg1IDE0LjEyMjdDMTEuMTU3NSAxNC4xMjI3IDE0LjEyMjcgMTEuMTU3NSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyA1Ljg1MTA3IDEzLjUyMDIgNC4zNDI5OSAxMi41MjMzIDMuMTgzOEwxMy4zNTM1IDIuMzUzNTRDMTMuNTQ4OCAyLjE1ODI3IDEzLjU0ODggMS44NDE2OSAxMy4zNTM1IDEuNjQ2NDNDMTMuMTU4MyAxLjQ1MTE3IDEyLjg0MTcgMS40NTExNyAxMi42NDY0IDEuNjQ2NDNMMTEuODE2MiAyLjQ3NjY4QzEwLjY1NyAxLjQ3OTY2IDkuMTQ4NzcgMC44NzcwNDUgNy40OTk4NSAwLjg3NzA0NVpNMTEuMTQyMiAzLjE1MDY2QzEwLjE1NjcgMi4zMjQ0OSA4Ljg4NjM5IDEuODI3MDQgNy40OTk4NSAxLjgyNzA0QzQuMzY2ODMgMS44MjcwNCAxLjgyNzAxIDQuMzY2ODYgMS44MjcwMSA3LjQ5OTg4QzEuODI3MDEgOC44ODY0MiAyLjMyNDQ2IDEwLjE1NjggMy4xNTA2MyAxMS4xNDIyTDExLjE0MjIgMy4xNTA2NlpNMy44NTc3NiAxMS44NDkzQzQuODQzMTcgMTIuNjc1MyA2LjExMzQzIDEzLjE3MjcgNy40OTk4NSAxMy4xNzI3QzEwLjYzMjggMTMuMTcyNyAxMy4xNzI3IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNi4xMTM0NiAxMi42NzUzIDQuODQzMiAxMS44NDkzIDMuODU3NzlMMy44NTc3NiAxMS44NDkzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sT289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTggMUw2LjkyMzIxIDIuMDAzMDdMMS4xNzQ5OCAxMkwwLjU5OTk3NiAxM0gxLjc1MzVIMTMuMjQ2NEgxNC40TDEzLjgyNSAxMkw4LjA3Njc0IDIuMDAzMDdMNy40OTk5OCAxWk03LjQ5OTk4IDMuMDA2MTNMMi4zMjg1IDEySDEyLjY3MTRMNy40OTk5OCAzLjAwNjEzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNzY0NDcgMy4xMjE5OUM1LjYzMTUxIDMuMDQ4NTkgNi41NjA4MiAzIDcuNSAzQzguNDM5MTggMyA5LjM2ODQ5IDMuMDQ4NTkgMTAuMjM1NSAzLjEyMTk5QzExLjI3OTYgMy4yMTAzNyAxMS45NTUzIDMuMjcwMDggMTIuNDcyIDMuMzkyMDNDMTIuOTQyNSAzLjUwMzA0IDEzLjIwNDggMy42NDk3NiAxMy40MzA2IDMuODgwODZDMTMuNDU1MyAzLjkwNjE4IDEzLjQ5MDIgMy45NDQxNCAxMy41MTMzIDMuOTcwOTJDMTMuNzEyNiA0LjIwMTQ5IDEzLjg0MzUgNC40ODg3IDEzLjkxOCA1LjAzMjgzQzEzLjk5NzggNS42MTU2IDE0IDYuMzc2NDQgMTQgNy41MjQ5M0MxNCA4LjY2MDI2IDEzLjk5NzggOS40MTAxOSAxMy45MTgxIDkuOTg1MzhDMTMuODQzOSAxMC41MjA2IDEzLjcxMzcgMTAuODA2MSAxMy41MTI1IDExLjAzODdDMTMuNDg5NiAxMS4wNjUxIDEzLjQ1NDEgMTEuMTAzOCAxMy40Mjk2IDExLjEyODdDMTMuMjAwOSAxMS4zNjI1IDEyLjk0MDYgMTEuNTA3NiAxMi40ODE4IDExLjYxNjRDMTEuOTc1MiAxMS43MzY1IDExLjMxNDMgMTEuNzk0MiAxMC4yODc4IDExLjg3OTdDOS40MTk0OCAxMS45NTIxIDguNDc1NjYgMTIgNy41IDEyQzYuNTI0MzQgMTIgNS41ODA1MiAxMS45NTIxIDQuNzEyMiAxMS44Nzk3QzMuNjg1NzIgMTEuNzk0MiAzLjAyNDc3IDExLjczNjUgMi41MTgxNiAxMS42MTY0QzIuMDU5MzYgMTEuNTA3NiAxLjc5OTEgMTEuMzYyNSAxLjU3MDM3IDExLjEyODdDMS41NDU5MyAxMS4xMDM4IDEuNTEwMzUgMTEuMDY1MSAxLjQ4NzQ4IDExLjAzODdDMS4yODYyOCAxMC44MDYxIDEuMTU2MTIgMTAuNTIwNiAxLjA4MTkzIDkuOTg1MzhDMS4wMDIyMSA5LjQxMDE5IDEgOC42NjAyNiAxIDcuNTI0OTNDMSA2LjM3NjQ0IDEuMDAyMTYgNS42MTU2IDEuMDgyIDUuMDMyODNDMS4xNTY1NCA0LjQ4ODcgMS4yODc0NCA0LjIwMTQ5IDEuNDg2NjYgMy45NzA5MkMxLjUwOTggMy45NDQxNCAxLjU0NDY4IDMuOTA2MTggMS41Njk0MiAzLjg4MDg2QzEuNzk1MiAzLjY0OTc2IDIuMDU3NTIgMy41MDMwNCAyLjUyNzk2IDMuMzkyMDNDMy4wNDQ3MyAzLjI3MDA4IDMuNzIwNCAzLjIxMDM3IDQuNzY0NDcgMy4xMjE5OVpNMCA3LjUyNDkzQzAgNS4yODI5NiAwIDQuMTYxOTggMC43Mjk5ODUgMy4zMTcxM0MwLjc2NjQ1NyAzLjI3NDkxIDAuODE1MTM5IDMuMjIxOTQgMC44NTQxMjMgMy4xODIwNEMxLjYzNDM5IDIuMzgzMzkgMi42NDk2MyAyLjI5NzQ0IDQuNjgwMTIgMi4xMjU1NUM1LjU2OTIzIDIuMDUwMjggNi41MjcyNCAyIDcuNSAyQzguNDcyNzYgMiA5LjQzMDc3IDIuMDUwMjggMTAuMzE5OSAyLjEyNTU1QzEyLjM1MDQgMi4yOTc0NCAxMy4zNjU2IDIuMzgzMzkgMTQuMTQ1OSAzLjE4MjA0QzE0LjE4NDkgMy4yMjE5NCAxNC4yMzM1IDMuMjc0OTEgMTQuMjcgMy4zMTcxM0MxNSA0LjE2MTk4IDE1IDUuMjgyOTYgMTUgNy41MjQ5M0MxNSA5Ljc0MDEyIDE1IDEwLjg0NzcgMTQuMjY4OCAxMS42OTI5QzE0LjIzMjYgMTEuNzM0OCAxNC4xODMyIDExLjc4ODUgMTQuMTQ0NCAxMS44MjgxQzEzLjM2MjkgMTIuNjI2OSAxMi4zNjU1IDEyLjcxIDEwLjM3MDkgMTIuODc2M0M5LjQ3OTcxIDEyLjk1MDUgOC41MDc4MiAxMyA3LjUgMTNDNi40OTIxOCAxMyA1LjUyMDI4IDEyLjk1MDUgNC42MjkxNSAxMi44NzYzQzIuNjM0NDYgMTIuNzEgMS42MzcxMiAxMi42MjY5IDAuODU1NTU4IDExLjgyODFDMC44MTY4NDQgMTEuNzg4NSAwLjc2NzQ0MiAxMS43MzQ4IDAuNzMxMjIxIDExLjY5MjlDMCAxMC44NDc3IDAgOS43NDAxMiAwIDcuNTI0OTNaTTUuMjUgNS4zODI2NEM1LjI1IDUuMjAyMjUgNS40MzUyMiA1LjA4MTI0IDUuNjAwNDEgNS4xNTM2OUwxMC40MjggNy4yNzEwNUMxMC42Mjc0IDcuMzU4NTMgMTAuNjI3NCA3LjY0MTQ3IDEwLjQyOCA3LjcyODk1TDUuNjAwNDEgOS44NDYzMUM1LjQzNTIyIDkuOTE4NzYgNS4yNSA5Ljc5Nzc1IDUuMjUgOS42MTczNlY1LjM4MjY0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sU289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcgMkgxLjVDMS4yMjM4NiAyIDEgMi4yMjM4NiAxIDIuNVY3SDdWMlpNOCAyVjdIMTRWMi41QzE0IDIuMjIzODYgMTMuNzc2MSAyIDEzLjUgMkg4Wk03IDhIMVYxMi41QzEgMTIuNzc2MSAxLjIyMzg2IDEzIDEuNSAxM0g3VjhaTTggMTNWOEgxNFYxMi41QzE0IDEyLjc3NjEgMTMuNzc2MSAxMyAxMy41IDEzSDhaTTEuNSAxQzAuNjcxNTczIDEgMCAxLjY3MTU3IDAgMi41VjEyLjVDMCAxMy4zMjg0IDAuNjcxNTczIDE0IDEuNSAxNEgxMy41QzE0LjMyODQgMTQgMTUgMTMuMzI4NCAxNSAxMi41VjIuNUMxNSAxLjY3MTU3IDE0LjMyODQgMSAxMy41IDFIMS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNSAySDEzLjVDMTMuNzc2MSAyIDE0IDIuMjIzODYgMTQgMi41VjdIMVYyLjVDMSAyLjIyMzg2IDEuMjIzODYgMiAxLjUgMlpNMSA4VjEyLjVDMSAxMi43NzYxIDEuMjIzODYgMTMgMS41IDEzSDEzLjVDMTMuNzc2MSAxMyAxNCAxMi43NzYxIDE0IDEyLjVWOEgxWk0wIDIuNUMwIDEuNjcxNTcgMC42NzE1NzMgMSAxLjUgMUgxMy41QzE0LjMyODQgMSAxNSAxLjY3MTU3IDE1IDIuNVYxMi41QzE1IDEzLjMyODQgMTQuMzI4NCAxNCAxMy41IDE0SDEuNUMwLjY3MTU3MyAxNCAwIDEzLjMyODQgMCAxMi41VjIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGpvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNCAyLjU4NzExTDEuODUxNjMgMTNIMTMuNUMxMy43NzYxIDEzIDE0IDEyLjc3NjEgMTQgMTIuNVYyLjU4NzExWk0wLjc2Mjg3OSAxMy44MDY3TDAuODI1Mzk2IDEzLjg3OTZMMC44NTQ3MTcgMTMuODU0NUMxLjA1MDE3IDEzLjk0NzggMS4yNjg5OSAxNCAxLjUgMTRIMTMuNUMxNC4zMjg0IDE0IDE1IDEzLjMyODQgMTUgMTIuNVYyLjVDMTUgMS45Mzk0OSAxNC42OTI2IDEuNDUwNzggMTQuMjM3MSAxLjE5MzMxTDE0LjE3NDYgMS4xMjAzN0wxNC4xNDUzIDEuMTQ1NUMxMy45NDk4IDEuMDUyMjIgMTMuNzMxIDEgMTMuNSAxSDEuNUMwLjY3MTU3MyAxIDAgMS42NzE1NyAwIDIuNVYxMi41QzAgMTMuMDYwNSAwLjMwNzQzNSAxMy41NDkyIDAuNzYyODc5IDEzLjgwNjdaTTEgMTIuNDEyOUwxMy4xNDg0IDJIMS41QzEuMjIzODYgMiAxIDIuMjIzODYgMSAyLjVWMTIuNDEyOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGtvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04IDJIMTMuNUMxMy43NzYxIDIgMTQgMi4yMjM4NiAxNCAyLjVWMTIuNUMxNCAxMi43NzYxIDEzLjc3NjEgMTMgMTMuNSAxM0g4VjJaTTcgMkgxLjVDMS4yMjM4NiAyIDEgMi4yMjM4NiAxIDIuNVYxMi41QzEgMTIuNzc2MSAxLjIyMzg2IDEzIDEuNSAxM0g3VjJaTTAgMi41QzAgMS42NzE1NyAwLjY3MTU3MyAxIDEuNSAxSDEzLjVDMTQuMzI4NCAxIDE1IDEuNjcxNTcgMTUgMi41VjEyLjVDMTUgMTMuMzI4NCAxNC4zMjg0IDE0IDEzLjUgMTRIMS41QzAuNjcxNTczIDE0IDAgMTMuMzI4NCAwIDEyLjVWMi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUm89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuODE4MTIgNC42ODE2MUM0Ljk5Mzg2IDQuODU3MzQgNC45OTM4NiA1LjE0MjI3IDQuODE4MTIgNS4zMThMMy4wODYzMiA3LjA0OThIMTEuOTEzNUwxMC4xODE3IDUuMzE4QzEwLjAwNiA1LjE0MjI3IDEwLjAwNiA0Ljg1NzM0IDEwLjE4MTcgNC42ODE2MUMxMC4zNTc1IDQuNTA1ODcgMTAuNjQyNCA0LjUwNTg3IDEwLjgxODEgNC42ODE2MUwxMy4zMTgxIDcuMTgxNjFDMTMuNDkzOSA3LjM1NzM0IDEzLjQ5MzkgNy42NDIyNyAxMy4zMTgxIDcuODE4TDEwLjgxODEgMTAuMzE4QzEwLjY0MjQgMTAuNDkzNyAxMC4zNTc1IDEwLjQ5MzcgMTAuMTgxNyAxMC4zMThDMTAuMDA2IDEwLjE0MjMgMTAuMDA2IDkuODU3MzQgMTAuMTgxNyA5LjY4MTYxTDExLjkxMzUgNy45NDk4SDMuMDg2MzJMNC44MTgxMiA5LjY4MTYxQzQuOTkzODYgOS44NTczNCA0Ljk5Mzg2IDEwLjE0MjMgNC44MTgxMiAxMC4zMThDNC42NDIzOSAxMC40OTM3IDQuMzU3NDYgMTAuNDkzNyA0LjE4MTczIDEwLjMxOEwxLjY4MTczIDcuODE4QzEuNTA1OTkgNy42NDIyNyAxLjUwNTk5IDcuMzU3MzQgMS42ODE3MyA3LjE4MTYxTDQuMTgxNzMgNC42ODE2MUM0LjM1NzQ2IDQuNTA1ODcgNC42NDIzOSA0LjUwNTg3IDQuODE4MTIgNC42ODE2MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFBvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMCA2LjVDMTAgOC40MzMgOC40MzMgMTAgNi41IDEwQzQuNTY3IDEwIDMgOC40MzMgMyA2LjVDMyA0LjU2NyA0LjU2NyAzIDYuNSAzQzguNDMzIDMgMTAgNC41NjcgMTAgNi41Wk05LjMwODg0IDEwLjAxNTlDOC41MzkwMSAxMC42MzE4IDcuNTYyNTEgMTEgNi41IDExQzQuMDE0NzIgMTEgMiA4Ljk4NTI4IDIgNi41QzIgNC4wMTQ3MiA0LjAxNDcyIDIgNi41IDJDOC45ODUyOCAyIDExIDQuMDE0NzIgMTEgNi41QzExIDcuNTYyNTEgMTAuNjMxOCA4LjUzOTAxIDEwLjAxNTkgOS4zMDg4NEwxMi44NTM2IDEyLjE0NjRDMTMuMDQ4OCAxMi4zNDE3IDEzLjA0ODggMTIuNjU4MyAxMi44NTM2IDEyLjg1MzZDMTIuNjU4MyAxMy4wNDg4IDEyLjM0MTcgMTMuMDQ4OCAxMi4xNDY0IDEyLjg1MzZMOS4zMDg4NCAxMC4wMTU5Wk00LjI1IDYuNUM0LjI1IDYuMjIzODYgNC40NzM4NiA2IDQuNzUgNkg2VjQuNzVDNiA0LjQ3Mzg2IDYuMjIzODYgNC4yNSA2LjUgNC4yNUM2Ljc3NjE0IDQuMjUgNyA0LjQ3Mzg2IDcgNC43NVY2SDguMjVDOC41MjYxNCA2IDguNzUgNi4yMjM4NiA4Ljc1IDYuNUM4Ljc1IDYuNzc2MTQgOC41MjYxNCA3IDguMjUgN0g3VjguMjVDNyA4LjUyNjE0IDYuNzc2MTQgOC43NSA2LjUgOC43NUM2LjIyMzg2IDguNzUgNiA4LjUyNjE0IDYgOC4yNVY3SDQuNzVDNC40NzM4NiA3IDQuMjUgNi43NzYxNCA0LjI1IDYuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEFvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02LjUgMTBDOC40MzMgMTAgMTAgOC40MzMgMTAgNi41QzEwIDQuNTY3IDguNDMzIDMgNi41IDNDNC41NjcgMyAzIDQuNTY3IDMgNi41QzMgOC40MzMgNC41NjcgMTAgNi41IDEwWk02LjUgMTFDNy41NjI1MSAxMSA4LjUzOTAxIDEwLjYzMTggOS4zMDg4NCAxMC4wMTU5TDEyLjE0NjQgMTIuODUzNkMxMi4zNDE3IDEzLjA0ODggMTIuNjU4MyAxMy4wNDg4IDEyLjg1MzYgMTIuODUzNkMxMy4wNDg4IDEyLjY1ODMgMTMuMDQ4OCAxMi4zNDE3IDEyLjg1MzYgMTIuMTQ2NEwxMC4wMTU5IDkuMzA4ODRDMTAuNjMxOCA4LjUzOTAxIDExIDcuNTYyNTEgMTEgNi41QzExIDQuMDE0NzIgOC45ODUyOCAyIDYuNSAyQzQuMDE0NzIgMiAyIDQuMDE0NzIgMiA2LjVDMiA4Ljk4NTI4IDQuMDE0NzIgMTEgNi41IDExWk00Ljc1IDZDNC40NzM4NiA2IDQuMjUgNi4yMjM4NiA0LjI1IDYuNUM0LjI1IDYuNzc2MTQgNC40NzM4NiA3IDQuNzUgN0g4LjI1QzguNTI2MTQgNyA4Ljc1IDYuNzc2MTQgOC43NSA2LjVDOC43NSA2LjIyMzg2IDguNTI2MTQgNiA4LjI1IDZINC43NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9fSw1Mjk5OihlLHQsbik9PntuLnIodCksbi5kKHQse2RlZmF1bHQ6KCk9Pmx9KTt2YXIgcj1uKDgwODEpLG89bi5uKHIpLGk9bigzNjQ1KSxhPW4ubihpKSgpKG8oKSk7YS5wdXNoKFtlLmlkLFwiLnJlYWN0LWNhbGVuZGFyIHtcXG4gIHdpZHRoOiAzNTBweDtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2EwYTA5NjtcXG4gIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xcbiAgbGluZS1oZWlnaHQ6IDEuMTI1ZW07XFxufVxcbi5yZWFjdC1jYWxlbmRhci0tZG91YmxlVmlldyB7XFxuICB3aWR0aDogNzAwcHg7XFxufVxcbi5yZWFjdC1jYWxlbmRhci0tZG91YmxlVmlldyAucmVhY3QtY2FsZW5kYXJfX3ZpZXdDb250YWluZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIG1hcmdpbjogLTAuNWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXItLWRvdWJsZVZpZXcgLnJlYWN0LWNhbGVuZGFyX192aWV3Q29udGFpbmVyID4gKiB7XFxuICB3aWR0aDogNTAlO1xcbiAgbWFyZ2luOiAwLjVlbTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyLFxcbi5yZWFjdC1jYWxlbmRhciAqLFxcbi5yZWFjdC1jYWxlbmRhciAqOmJlZm9yZSxcXG4ucmVhY3QtY2FsZW5kYXIgKjphZnRlciB7XFxuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXIgYnV0dG9uIHtcXG4gIG1hcmdpbjogMDtcXG4gIGJvcmRlcjogMDtcXG4gIG91dGxpbmU6IG5vbmU7XFxufVxcbi5yZWFjdC1jYWxlbmRhciBidXR0b246ZW5hYmxlZDpob3ZlciB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgaGVpZ2h0OiA0NHB4O1xcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb24gYnV0dG9uIHtcXG4gIG1pbi13aWR0aDogNDRweDtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiBidXR0b246ZGlzYWJsZWQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uIGJ1dHRvbjplbmFibGVkOmhvdmVyLFxcbi5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiBidXR0b246ZW5hYmxlZDpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzIHtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIGZvbnQtc2l6ZTogMC43NWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzX193ZWVrZGF5IHtcXG4gIHBhZGRpbmc6IDAuNWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtOdW1iZXJzIC5yZWFjdC1jYWxlbmRhcl9fdGlsZSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZm9udC1zaXplOiAwLjc1ZW07XFxuICBmb250LXdlaWdodDogYm9sZDtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzX19kYXktLXdlZWtlbmQge1xcbiAgY29sb3I6ICNkMTAwMDA7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fZGF5c19fZGF5LS1uZWlnaGJvcmluZ01vbnRoIHtcXG4gIGNvbG9yOiAjNzU3NTc1O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3llYXItdmlldyAucmVhY3QtY2FsZW5kYXJfX3RpbGUsXFxuLnJlYWN0LWNhbGVuZGFyX19kZWNhZGUtdmlldyAucmVhY3QtY2FsZW5kYXJfX3RpbGUsXFxuLnJlYWN0LWNhbGVuZGFyX19jZW50dXJ5LXZpZXcgLnJlYWN0LWNhbGVuZGFyX190aWxlIHtcXG4gIHBhZGRpbmc6IDJlbSAwLjVlbTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlIHtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIHBhZGRpbmc6IDEwcHggNi42NjY3cHg7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZTpkaXNhYmxlZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGU6ZW5hYmxlZDpob3ZlcixcXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGU6ZW5hYmxlZDpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLW5vdyB7XFxuICBiYWNrZ3JvdW5kOiAjZmZmZjc2O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLW5vdzplbmFibGVkOmhvdmVyLFxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tbm93OmVuYWJsZWQ6Zm9jdXMge1xcbiAgYmFja2dyb3VuZDogI2ZmZmZhOTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1oYXNBY3RpdmUge1xcbiAgYmFja2dyb3VuZDogIzc2YmFmZjtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1oYXNBY3RpdmU6ZW5hYmxlZDpob3ZlcixcXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWhhc0FjdGl2ZTplbmFibGVkOmZvY3VzIHtcXG4gIGJhY2tncm91bmQ6ICNhOWQ0ZmY7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tYWN0aXZlIHtcXG4gIGJhY2tncm91bmQ6ICMwMDZlZGM7XFxuICBjb2xvcjogd2hpdGU7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tYWN0aXZlOmVuYWJsZWQ6aG92ZXIsXFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1hY3RpdmU6ZW5hYmxlZDpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kOiAjMTA4N2ZmO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXItLXNlbGVjdFJhbmdlIC5yZWFjdC1jYWxlbmRhcl9fdGlsZS0taG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcXG59XFxuXCIsXCJcIl0pO2NvbnN0IGw9YX0sMzY0NTplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiB0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKChmdW5jdGlvbih0KXt2YXIgbj1cIlwiLHI9dm9pZCAwIT09dFs1XTtyZXR1cm4gdFs0XSYmKG4rPVwiQHN1cHBvcnRzIChcIi5jb25jYXQodFs0XSxcIikge1wiKSksdFsyXSYmKG4rPVwiQG1lZGlhIFwiLmNvbmNhdCh0WzJdLFwiIHtcIikpLHImJihuKz1cIkBsYXllclwiLmNvbmNhdCh0WzVdLmxlbmd0aD4wP1wiIFwiLmNvbmNhdCh0WzVdKTpcIlwiLFwiIHtcIikpLG4rPWUodCksciYmKG4rPVwifVwiKSx0WzJdJiYobis9XCJ9XCIpLHRbNF0mJihuKz1cIn1cIiksbn0pKS5qb2luKFwiXCIpfSx0Lmk9ZnVuY3Rpb24oZSxuLHIsbyxpKXtcInN0cmluZ1wiPT10eXBlb2YgZSYmKGU9W1tudWxsLGUsdm9pZCAwXV0pO3ZhciBhPXt9O2lmKHIpZm9yKHZhciBsPTA7bDx0aGlzLmxlbmd0aDtsKyspe3ZhciBzPXRoaXNbbF1bMF07bnVsbCE9cyYmKGFbc109ITApfWZvcih2YXIgYz0wO2M8ZS5sZW5ndGg7YysrKXt2YXIgdT1bXS5jb25jYXQoZVtjXSk7ciYmYVt1WzBdXXx8KHZvaWQgMCE9PWkmJih2b2lkIDA9PT11WzVdfHwodVsxXT1cIkBsYXllclwiLmNvbmNhdCh1WzVdLmxlbmd0aD4wP1wiIFwiLmNvbmNhdCh1WzVdKTpcIlwiLFwiIHtcIikuY29uY2F0KHVbMV0sXCJ9XCIpKSx1WzVdPWkpLG4mJih1WzJdPyh1WzFdPVwiQG1lZGlhIFwiLmNvbmNhdCh1WzJdLFwiIHtcIikuY29uY2F0KHVbMV0sXCJ9XCIpLHVbMl09bik6dVsyXT1uKSxvJiYodVs0XT8odVsxXT1cIkBzdXBwb3J0cyAoXCIuY29uY2F0KHVbNF0sXCIpIHtcIikuY29uY2F0KHVbMV0sXCJ9XCIpLHVbNF09byk6dVs0XT1cIlwiLmNvbmNhdChvKSksdC5wdXNoKHUpKX19LHR9fSw4MDgxOmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV19fSw0NDgzOihlLHQsbik9PntmdW5jdGlvbiByKGUpe3JldHVybiByPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LHIoZSl9ZnVuY3Rpb24gbyhlLHQpe3JldHVybiBvPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sbyhlLHQpfWZ1bmN0aW9uIGkoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIGV9ZnVuY3Rpb24gYShlKXtyZXR1cm4gYT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sYShlKX1mdW5jdGlvbiBsKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7aWYoXCJvYmplY3RcIiE9PXIoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgbz1uLmNhbGwoZSxcInN0cmluZ1wiKTtpZihcIm9iamVjdFwiIT09cihvKSlyZXR1cm4gbzt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIil9cmV0dXJuIFN0cmluZyhlKX0oZSk7cmV0dXJuXCJzeW1ib2xcIj09PXIodCk/dDpTdHJpbmcodCl9dmFyIHM9big2Njg5KSxjPW4oNTY5NyksdT1uKDUzMDMpLmNyZWF0ZUZvY3VzVHJhcCxmPW4oODM4OCkuaXNGb2N1c2FibGUsZD1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksdCYmbyhlLHQpfShwLGUpO3ZhciB0LG4sYyx1LGQ9KGM9cCx1PWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZnVuY3Rpb24oKXt2YXIgZSx0PWEoYyk7aWYodSl7dmFyIG49YSh0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KHQsYXJndW1lbnRzLG4pfWVsc2UgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZih0JiYoXCJvYmplY3RcIj09PXIodCl8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBpKGUpfSh0aGlzLGUpfSk7ZnVuY3Rpb24gcChlKXt2YXIgdCxuLHIsbzshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLHApLG49aSh0PWQuY2FsbCh0aGlzLGUpKSxvPWZ1bmN0aW9uKGUpe3ZhciB0LG49bnVsbCE9PSh0PXRoaXMuaW50ZXJuYWxPcHRpb25zW2VdKSYmdm9pZCAwIT09dD90OnRoaXMub3JpZ2luYWxPcHRpb25zW2VdO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4pe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KHI+MT9yLTE6MCksaT0xO2k8cjtpKyspb1tpLTFdPWFyZ3VtZW50c1tpXTtuPW4uYXBwbHkodm9pZCAwLG8pfWlmKCEwPT09biYmKG49dm9pZCAwKSwhbil7aWYodm9pZCAwPT09bnx8ITE9PT1uKXJldHVybiBuO3Rocm93IG5ldyBFcnJvcihcImBcIi5jb25jYXQoZSxcImAgd2FzIHNwZWNpZmllZCBidXQgd2FzIG5vdCBhIG5vZGUsIG9yIGRpZCBub3QgcmV0dXJuIGEgbm9kZVwiKSl9dmFyIGEsbD1uO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBuJiYhKGw9bnVsbD09PShhPXRoaXMuZ2V0RG9jdW1lbnQoKSl8fHZvaWQgMD09PWE/dm9pZCAwOmEucXVlcnlTZWxlY3RvcihuKSkpdGhyb3cgbmV3IEVycm9yKFwiYFwiLmNvbmNhdChlLFwiYCBhcyBzZWxlY3RvciByZWZlcnMgdG8gbm8ga25vd24gbm9kZVwiKSk7cmV0dXJuIGx9LChyPWwocj1cImdldE5vZGVGb3JPcHRpb25cIikpaW4gbj9PYmplY3QuZGVmaW5lUHJvcGVydHkobixyLHt2YWx1ZTpvLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bltyXT1vLHQuaGFuZGxlRGVhY3RpdmF0ZT10LmhhbmRsZURlYWN0aXZhdGUuYmluZChpKHQpKSx0LmhhbmRsZVBvc3REZWFjdGl2YXRlPXQuaGFuZGxlUG9zdERlYWN0aXZhdGUuYmluZChpKHQpKSx0LmhhbmRsZUNsaWNrT3V0c2lkZURlYWN0aXZhdGVzPXQuaGFuZGxlQ2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXMuYmluZChpKHQpKSx0LmludGVybmFsT3B0aW9ucz17cmV0dXJuRm9jdXNPbkRlYWN0aXZhdGU6ITEsY2hlY2tDYW5SZXR1cm5Gb2N1czpudWxsLG9uRGVhY3RpdmF0ZTp0LmhhbmRsZURlYWN0aXZhdGUsb25Qb3N0RGVhY3RpdmF0ZTp0LmhhbmRsZVBvc3REZWFjdGl2YXRlLGNsaWNrT3V0c2lkZURlYWN0aXZhdGVzOnQuaGFuZGxlQ2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXN9LHQub3JpZ2luYWxPcHRpb25zPXtyZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZTohMCxvbkRlYWN0aXZhdGU6bnVsbCxvblBvc3REZWFjdGl2YXRlOm51bGwsY2hlY2tDYW5SZXR1cm5Gb2N1czpudWxsLGNsaWNrT3V0c2lkZURlYWN0aXZhdGVzOiExfTt2YXIgYT1lLmZvY3VzVHJhcE9wdGlvbnM7Zm9yKHZhciBzIGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEscykmJihcInJldHVybkZvY3VzT25EZWFjdGl2YXRlXCIhPT1zJiZcIm9uRGVhY3RpdmF0ZVwiIT09cyYmXCJvblBvc3REZWFjdGl2YXRlXCIhPT1zJiZcImNoZWNrQ2FuUmV0dXJuRm9jdXNcIiE9PXMmJlwiY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXNcIiE9PXM/dC5pbnRlcm5hbE9wdGlvbnNbc109YVtzXTp0Lm9yaWdpbmFsT3B0aW9uc1tzXT1hW3NdKTtyZXR1cm4gdC5vdXRzaWRlQ2xpY2s9bnVsbCx0LmZvY3VzVHJhcEVsZW1lbnRzPWUuY29udGFpbmVyRWxlbWVudHN8fFtdLHQudXBkYXRlUHJldmlvdXNFbGVtZW50KCksdH1yZXR1cm4gdD1wLChuPVt7a2V5OlwiZ2V0RG9jdW1lbnRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3BzLmZvY3VzVHJhcE9wdGlvbnMuZG9jdW1lbnR8fChcInVuZGVmaW5lZFwiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKX19LHtrZXk6XCJnZXRSZXR1cm5Gb2N1c05vZGVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0Tm9kZUZvck9wdGlvbihcInNldFJldHVybkZvY3VzXCIsdGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpO3JldHVybiBlfHwhMSE9PWUmJnRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50fX0se2tleTpcInVwZGF0ZVByZXZpb3VzRWxlbWVudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXREb2N1bWVudCgpO2UmJih0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudD1lLmFjdGl2ZUVsZW1lbnQpfX0se2tleTpcImRlYWN0aXZhdGVUcmFwXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmZvY3VzVHJhcCYmdGhpcy5mb2N1c1RyYXAuYWN0aXZlJiZ0aGlzLmZvY3VzVHJhcC5kZWFjdGl2YXRlKHtyZXR1cm5Gb2N1czohMSxjaGVja0NhblJldHVybkZvY3VzOm51bGwsb25EZWFjdGl2YXRlOnRoaXMub3JpZ2luYWxPcHRpb25zLm9uRGVhY3RpdmF0ZX0pfX0se2tleTpcImhhbmRsZUNsaWNrT3V0c2lkZURlYWN0aXZhdGVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5vcmlnaW5hbE9wdGlvbnMuY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM/dGhpcy5vcmlnaW5hbE9wdGlvbnMuY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXMuY2FsbChudWxsLGUpOnRoaXMub3JpZ2luYWxPcHRpb25zLmNsaWNrT3V0c2lkZURlYWN0aXZhdGVzO3JldHVybiB0JiYodGhpcy5vdXRzaWRlQ2xpY2s9e3RhcmdldDplLnRhcmdldCxhbGxvd0RlYWN0aXZhdGlvbjp0fSksdH19LHtrZXk6XCJoYW5kbGVEZWFjdGl2YXRlXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm9yaWdpbmFsT3B0aW9ucy5vbkRlYWN0aXZhdGUmJnRoaXMub3JpZ2luYWxPcHRpb25zLm9uRGVhY3RpdmF0ZS5jYWxsKG51bGwpLHRoaXMuZGVhY3RpdmF0ZVRyYXAoKX19LHtrZXk6XCJoYW5kbGVQb3N0RGVhY3RpdmF0ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWZ1bmN0aW9uKCl7dmFyIHQ9ZS5nZXRSZXR1cm5Gb2N1c05vZGUoKSxuPSEoIWUub3JpZ2luYWxPcHRpb25zLnJldHVybkZvY3VzT25EZWFjdGl2YXRlfHxudWxsPT10fHwhdC5mb2N1c3x8ZS5vdXRzaWRlQ2xpY2smJighZS5vdXRzaWRlQ2xpY2suYWxsb3dEZWFjdGl2YXRpb258fGYoZS5vdXRzaWRlQ2xpY2sudGFyZ2V0LGUuaW50ZXJuYWxPcHRpb25zLnRhYmJhYmxlT3B0aW9ucykpKSxyPWUuaW50ZXJuYWxPcHRpb25zLnByZXZlbnRTY3JvbGwsbz12b2lkIDAhPT1yJiZyO24mJnQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6b30pLGUub3JpZ2luYWxPcHRpb25zLm9uUG9zdERlYWN0aXZhdGUmJmUub3JpZ2luYWxPcHRpb25zLm9uUG9zdERlYWN0aXZhdGUuY2FsbChudWxsKSxlLm91dHNpZGVDbGljaz1udWxsfTt0aGlzLm9yaWdpbmFsT3B0aW9ucy5jaGVja0NhblJldHVybkZvY3VzP3RoaXMub3JpZ2luYWxPcHRpb25zLmNoZWNrQ2FuUmV0dXJuRm9jdXMuY2FsbChudWxsLHRoaXMuZ2V0UmV0dXJuRm9jdXNOb2RlKCkpLnRoZW4odCx0KTp0KCl9fSx7a2V5Olwic2V0dXBGb2N1c1RyYXBcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZm9jdXNUcmFwP3RoaXMucHJvcHMuYWN0aXZlJiYhdGhpcy5mb2N1c1RyYXAuYWN0aXZlJiYodGhpcy5mb2N1c1RyYXAuYWN0aXZhdGUoKSx0aGlzLnByb3BzLnBhdXNlZCYmdGhpcy5mb2N1c1RyYXAucGF1c2UoKSk6dGhpcy5mb2N1c1RyYXBFbGVtZW50cy5zb21lKEJvb2xlYW4pJiYodGhpcy5mb2N1c1RyYXA9dGhpcy5wcm9wcy5fY3JlYXRlRm9jdXNUcmFwKHRoaXMuZm9jdXNUcmFwRWxlbWVudHMsdGhpcy5pbnRlcm5hbE9wdGlvbnMpLHRoaXMucHJvcHMuYWN0aXZlJiZ0aGlzLmZvY3VzVHJhcC5hY3RpdmF0ZSgpLHRoaXMucHJvcHMucGF1c2VkJiZ0aGlzLmZvY3VzVHJhcC5wYXVzZSgpKX19LHtrZXk6XCJjb21wb25lbnREaWRNb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5wcm9wcy5hY3RpdmUmJnRoaXMuc2V0dXBGb2N1c1RyYXAoKX19LHtrZXk6XCJjb21wb25lbnREaWRVcGRhdGVcIix2YWx1ZTpmdW5jdGlvbihlKXtpZih0aGlzLmZvY3VzVHJhcCl7ZS5jb250YWluZXJFbGVtZW50cyE9PXRoaXMucHJvcHMuY29udGFpbmVyRWxlbWVudHMmJnRoaXMuZm9jdXNUcmFwLnVwZGF0ZUNvbnRhaW5lckVsZW1lbnRzKHRoaXMucHJvcHMuY29udGFpbmVyRWxlbWVudHMpO3ZhciB0PSFlLmFjdGl2ZSYmdGhpcy5wcm9wcy5hY3RpdmUsbj1lLmFjdGl2ZSYmIXRoaXMucHJvcHMuYWN0aXZlLHI9IWUucGF1c2VkJiZ0aGlzLnByb3BzLnBhdXNlZCxvPWUucGF1c2VkJiYhdGhpcy5wcm9wcy5wYXVzZWQ7aWYodCYmKHRoaXMudXBkYXRlUHJldmlvdXNFbGVtZW50KCksdGhpcy5mb2N1c1RyYXAuYWN0aXZhdGUoKSksbilyZXR1cm4gdm9pZCB0aGlzLmRlYWN0aXZhdGVUcmFwKCk7ciYmdGhpcy5mb2N1c1RyYXAucGF1c2UoKSxvJiZ0aGlzLmZvY3VzVHJhcC51bnBhdXNlKCl9ZWxzZSBlLmNvbnRhaW5lckVsZW1lbnRzIT09dGhpcy5wcm9wcy5jb250YWluZXJFbGVtZW50cyYmKHRoaXMuZm9jdXNUcmFwRWxlbWVudHM9dGhpcy5wcm9wcy5jb250YWluZXJFbGVtZW50cyksdGhpcy5wcm9wcy5hY3RpdmUmJih0aGlzLnVwZGF0ZVByZXZpb3VzRWxlbWVudCgpLHRoaXMuc2V0dXBGb2N1c1RyYXAoKSl9fSx7a2V5OlwiY29tcG9uZW50V2lsbFVubW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGVhY3RpdmF0ZVRyYXAoKX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLmNoaWxkcmVuP3MuQ2hpbGRyZW4ub25seSh0aGlzLnByb3BzLmNoaWxkcmVuKTp2b2lkIDA7aWYodCl7aWYodC50eXBlJiZ0LnR5cGU9PT1zLkZyYWdtZW50KXRocm93IG5ldyBFcnJvcihcIkEgZm9jdXMtdHJhcCBjYW5ub3QgdXNlIGEgRnJhZ21lbnQgYXMgaXRzIGNoaWxkIGNvbnRhaW5lci4gVHJ5IHJlcGxhY2luZyBpdCB3aXRoIGEgPGRpdj4gZWxlbWVudC5cIik7cmV0dXJuIHMuY2xvbmVFbGVtZW50KHQse3JlZjpmdW5jdGlvbihuKXt2YXIgcj1lLnByb3BzLmNvbnRhaW5lckVsZW1lbnRzO3QmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnJlZj90LnJlZihuKTp0LnJlZiYmKHQucmVmLmN1cnJlbnQ9bikpLGUuZm9jdXNUcmFwRWxlbWVudHM9cnx8W25dfX0pfXJldHVybiBudWxsfX1dKSYmZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbChyLmtleSkscil9fSh0LnByb3RvdHlwZSxuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInByb3RvdHlwZVwiLHt3cml0YWJsZTohMX0pLHB9KHMuQ29tcG9uZW50KSxwPVwidW5kZWZpbmVkXCI9PXR5cGVvZiBFbGVtZW50P0Z1bmN0aW9uOkVsZW1lbnQ7ZC5wcm9wVHlwZXM9e2FjdGl2ZTpjLmJvb2wscGF1c2VkOmMuYm9vbCxmb2N1c1RyYXBPcHRpb25zOmMuc2hhcGUoe2RvY3VtZW50OmMub2JqZWN0LG9uQWN0aXZhdGU6Yy5mdW5jLG9uUG9zdEFjdGl2YXRlOmMuZnVuYyxjaGVja0NhbkZvY3VzVHJhcDpjLmZ1bmMsb25EZWFjdGl2YXRlOmMuZnVuYyxvblBvc3REZWFjdGl2YXRlOmMuZnVuYyxjaGVja0NhblJldHVybkZvY3VzOmMuZnVuYyxpbml0aWFsRm9jdXM6Yy5vbmVPZlR5cGUoW2MuaW5zdGFuY2VPZihwKSxjLnN0cmluZyxjLmJvb2wsYy5mdW5jXSksZmFsbGJhY2tGb2N1czpjLm9uZU9mVHlwZShbYy5pbnN0YW5jZU9mKHApLGMuc3RyaW5nLGMuZnVuY10pLGVzY2FwZURlYWN0aXZhdGVzOmMub25lT2ZUeXBlKFtjLmJvb2wsYy5mdW5jXSksY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM6Yy5vbmVPZlR5cGUoW2MuYm9vbCxjLmZ1bmNdKSxyZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZTpjLmJvb2wsc2V0UmV0dXJuRm9jdXM6Yy5vbmVPZlR5cGUoW2MuaW5zdGFuY2VPZihwKSxjLnN0cmluZyxjLmJvb2wsYy5mdW5jXSksYWxsb3dPdXRzaWRlQ2xpY2s6Yy5vbmVPZlR5cGUoW2MuYm9vbCxjLmZ1bmNdKSxwcmV2ZW50U2Nyb2xsOmMuYm9vbCx0YWJiYWJsZU9wdGlvbnM6Yy5zaGFwZSh7ZGlzcGxheUNoZWNrOmMub25lT2YoW1wiZnVsbFwiLFwibGVnYWN5LWZ1bGxcIixcIm5vbi16ZXJvLWFyZWFcIixcIm5vbmVcIl0pLGdldFNoYWRvd1Jvb3Q6Yy5vbmVPZlR5cGUoW2MuYm9vbCxjLmZ1bmNdKX0pLHRyYXBTdGFjazpjLmFycmF5LGlzS2V5Rm9yd2FyZDpjLmZ1bmMsaXNLZXlCYWNrd2FyZDpjLmZ1bmN9KSxjb250YWluZXJFbGVtZW50czpjLmFycmF5T2YoYy5pbnN0YW5jZU9mKHApKSxjaGlsZHJlbjpjLm9uZU9mVHlwZShbYy5lbGVtZW50LGMuaW5zdGFuY2VPZihwKV0pfSxkLmRlZmF1bHRQcm9wcz17YWN0aXZlOiEwLHBhdXNlZDohMSxmb2N1c1RyYXBPcHRpb25zOnt9LF9jcmVhdGVGb2N1c1RyYXA6dX0sZS5leHBvcnRzPWR9LDUzMDM6KGUsdCxuKT0+e24ucih0KSxuLmQodCx7Y3JlYXRlRm9jdXNUcmFwOigpPT52fSk7dmFyIHI9big4Mzg4KTtmdW5jdGlvbiBvKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBpKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP28oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXthKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpvKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGEoZSx0LG4pe3JldHVybih0PWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGV8fG51bGw9PT1lKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgcj1uLmNhbGwoZSxcInN0cmluZ1wiKTtpZihcIm9iamVjdFwiIT10eXBlb2YgcilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIil9cmV0dXJuIFN0cmluZyhlKX0oZSk7cmV0dXJuXCJzeW1ib2xcIj09dHlwZW9mIHQ/dDpTdHJpbmcodCl9KHQpKWluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBsPWZ1bmN0aW9uKGUpe3JldHVyblwiVGFiXCI9PT1lLmtleXx8OT09PWUua2V5Q29kZX0scz1mdW5jdGlvbihlKXtyZXR1cm4gbChlKSYmIWUuc2hpZnRLZXl9LGM9ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSkmJmUuc2hpZnRLZXl9LHU9ZnVuY3Rpb24oZSl7cmV0dXJuIHNldFRpbWVvdXQoZSwwKX0sZj1mdW5jdGlvbihlLHQpe3ZhciBuPS0xO3JldHVybiBlLmV2ZXJ5KChmdW5jdGlvbihlLHIpe3JldHVybiF0KGUpfHwobj1yLCExKX0pKSxufSxkPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2UuYXBwbHkodm9pZCAwLG4pOmV9LHA9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFyZ2V0LnNoYWRvd1Jvb3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29tcG9zZWRQYXRoP2UuY29tcG9zZWRQYXRoKClbMF06ZS50YXJnZXR9LGg9W10sdj1mdW5jdGlvbihlLHQpe3ZhciBuLG89KG51bGw9PXQ/dm9pZCAwOnQuZG9jdW1lbnQpfHxkb2N1bWVudCxhPShudWxsPT10P3ZvaWQgMDp0LnRyYXBTdGFjayl8fGgsdj1pKHtyZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZTohMCxlc2NhcGVEZWFjdGl2YXRlczohMCxkZWxheUluaXRpYWxGb2N1czohMCxpc0tleUZvcndhcmQ6cyxpc0tleUJhY2t3YXJkOmN9LHQpLGc9e2NvbnRhaW5lcnM6W10sY29udGFpbmVyR3JvdXBzOltdLHRhYmJhYmxlR3JvdXBzOltdLG5vZGVGb2N1c2VkQmVmb3JlQWN0aXZhdGlvbjpudWxsLG1vc3RSZWNlbnRseUZvY3VzZWROb2RlOm51bGwsYWN0aXZlOiExLHBhdXNlZDohMSxkZWxheUluaXRpYWxGb2N1c1RpbWVyOnZvaWQgMH0sQz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGUmJnZvaWQgMCE9PWVbdF0/ZVt0XTp2W258fHRdfSxtPWZ1bmN0aW9uKGUpe3JldHVybiBnLmNvbnRhaW5lckdyb3Vwcy5maW5kSW5kZXgoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuY29udGFpbmVyLHI9dC50YWJiYWJsZU5vZGVzO3JldHVybiBuLmNvbnRhaW5zKGUpfHxyLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0PT09ZX0pKX0pKX0seT1mdW5jdGlvbihlKXt2YXIgdD12W2VdO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4+MT9uLTE6MCksaT0xO2k8bjtpKyspcltpLTFdPWFyZ3VtZW50c1tpXTt0PXQuYXBwbHkodm9pZCAwLHIpfWlmKCEwPT09dCYmKHQ9dm9pZCAwKSwhdCl7aWYodm9pZCAwPT09dHx8ITE9PT10KXJldHVybiB0O3Rocm93IG5ldyBFcnJvcihcImBcIi5jb25jYXQoZSxcImAgd2FzIHNwZWNpZmllZCBidXQgd2FzIG5vdCBhIG5vZGUsIG9yIGRpZCBub3QgcmV0dXJuIGEgbm9kZVwiKSl9dmFyIGE9dDtpZihcInN0cmluZ1wiPT10eXBlb2YgdCYmIShhPW8ucXVlcnlTZWxlY3Rvcih0KSkpdGhyb3cgbmV3IEVycm9yKFwiYFwiLmNvbmNhdChlLFwiYCBhcyBzZWxlY3RvciByZWZlcnMgdG8gbm8ga25vd24gbm9kZVwiKSk7cmV0dXJuIGF9LHc9ZnVuY3Rpb24oKXt2YXIgZT15KFwiaW5pdGlhbEZvY3VzXCIpO2lmKCExPT09ZSlyZXR1cm4hMTtpZih2b2lkIDA9PT1lKWlmKG0oby5hY3RpdmVFbGVtZW50KT49MCllPW8uYWN0aXZlRWxlbWVudDtlbHNle3ZhciB0PWcudGFiYmFibGVHcm91cHNbMF07ZT10JiZ0LmZpcnN0VGFiYmFibGVOb2RlfHx5KFwiZmFsbGJhY2tGb2N1c1wiKX1pZighZSl0aHJvdyBuZXcgRXJyb3IoXCJZb3VyIGZvY3VzLXRyYXAgbmVlZHMgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgZm9jdXNhYmxlIGVsZW1lbnRcIik7cmV0dXJuIGV9LGI9ZnVuY3Rpb24oKXtpZihnLmNvbnRhaW5lckdyb3Vwcz1nLmNvbnRhaW5lcnMubWFwKChmdW5jdGlvbihlKXt2YXIgdD0oMCxyLnRhYmJhYmxlKShlLHYudGFiYmFibGVPcHRpb25zKSxuPSgwLHIuZm9jdXNhYmxlKShlLHYudGFiYmFibGVPcHRpb25zKTtyZXR1cm57Y29udGFpbmVyOmUsdGFiYmFibGVOb2Rlczp0LGZvY3VzYWJsZU5vZGVzOm4sZmlyc3RUYWJiYWJsZU5vZGU6dC5sZW5ndGg+MD90WzBdOm51bGwsbGFzdFRhYmJhYmxlTm9kZTp0Lmxlbmd0aD4wP3RbdC5sZW5ndGgtMV06bnVsbCxuZXh0VGFiYmFibGVOb2RlOmZ1bmN0aW9uKGUpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sbz1uLmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1lfSkpO2lmKCEobzwwKSlyZXR1cm4gdD9uLnNsaWNlKG8rMSkuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuKDAsci5pc1RhYmJhYmxlKShlLHYudGFiYmFibGVPcHRpb25zKX0pKTpuLnNsaWNlKDAsbykucmV2ZXJzZSgpLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybigwLHIuaXNUYWJiYWJsZSkoZSx2LnRhYmJhYmxlT3B0aW9ucyl9KSl9fX0pKSxnLnRhYmJhYmxlR3JvdXBzPWcuY29udGFpbmVyR3JvdXBzLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFiYmFibGVOb2Rlcy5sZW5ndGg+MH0pKSxnLnRhYmJhYmxlR3JvdXBzLmxlbmd0aDw9MCYmIXkoXCJmYWxsYmFja0ZvY3VzXCIpKXRocm93IG5ldyBFcnJvcihcIllvdXIgZm9jdXMtdHJhcCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGNvbnRhaW5lciB3aXRoIGF0IGxlYXN0IG9uZSB0YWJiYWJsZSBub2RlIGluIGl0IGF0IGFsbCB0aW1lc1wiKX0seD1mdW5jdGlvbiBlKHQpeyExIT09dCYmdCE9PW8uYWN0aXZlRWxlbWVudCYmKHQmJnQuZm9jdXM/KHQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ISF2LnByZXZlbnRTY3JvbGx9KSxnLm1vc3RSZWNlbnRseUZvY3VzZWROb2RlPXQsZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFnTmFtZSYmXCJpbnB1dFwiPT09ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuc2VsZWN0fSh0KSYmdC5zZWxlY3QoKSk6ZSh3KCkpKX0sXz1mdW5jdGlvbihlKXt2YXIgdD15KFwic2V0UmV0dXJuRm9jdXNcIixlKTtyZXR1cm4gdHx8ITEhPT10JiZlfSxMPWZ1bmN0aW9uKGUpe3ZhciB0PXAoZSk7bSh0KT49MHx8KGQodi5jbGlja091dHNpZGVEZWFjdGl2YXRlcyxlKT9uLmRlYWN0aXZhdGUoe3JldHVybkZvY3VzOnYucmV0dXJuRm9jdXNPbkRlYWN0aXZhdGV9KTpkKHYuYWxsb3dPdXRzaWRlQ2xpY2ssZSl8fGUucHJldmVudERlZmF1bHQoKSl9LE89ZnVuY3Rpb24oZSl7dmFyIHQ9cChlKSxuPW0odCk+PTA7bnx8dCBpbnN0YW5jZW9mIERvY3VtZW50P24mJihnLm1vc3RSZWNlbnRseUZvY3VzZWROb2RlPXQpOihlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHgoZy5tb3N0UmVjZW50bHlGb2N1c2VkTm9kZXx8dygpKSl9LEU9ZnVuY3Rpb24oZSl7aWYoKFwiRXNjYXBlXCI9PT0odD1lKS5rZXl8fFwiRXNjXCI9PT10LmtleXx8Mjc9PT10LmtleUNvZGUpJiYhMSE9PWQodi5lc2NhcGVEZWFjdGl2YXRlcyxlKSlyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpLHZvaWQgbi5kZWFjdGl2YXRlKCk7dmFyIHQ7KHYuaXNLZXlGb3J3YXJkKGUpfHx2LmlzS2V5QmFja3dhcmQoZSkpJiZmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLG49cChlKTtiKCk7dmFyIG89bnVsbDtpZihnLnRhYmJhYmxlR3JvdXBzLmxlbmd0aD4wKXt2YXIgaT1tKG4pLGE9aT49MD9nLmNvbnRhaW5lckdyb3Vwc1tpXTp2b2lkIDA7aWYoaTwwKW89dD9nLnRhYmJhYmxlR3JvdXBzW2cudGFiYmFibGVHcm91cHMubGVuZ3RoLTFdLmxhc3RUYWJiYWJsZU5vZGU6Zy50YWJiYWJsZUdyb3Vwc1swXS5maXJzdFRhYmJhYmxlTm9kZTtlbHNlIGlmKHQpe3ZhciBzPWYoZy50YWJiYWJsZUdyb3VwcywoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5maXJzdFRhYmJhYmxlTm9kZTtyZXR1cm4gbj09PXR9KSk7aWYoczwwJiYoYS5jb250YWluZXI9PT1ufHwoMCxyLmlzRm9jdXNhYmxlKShuLHYudGFiYmFibGVPcHRpb25zKSYmISgwLHIuaXNUYWJiYWJsZSkobix2LnRhYmJhYmxlT3B0aW9ucykmJiFhLm5leHRUYWJiYWJsZU5vZGUobiwhMSkpJiYocz1pKSxzPj0wKXt2YXIgYz0wPT09cz9nLnRhYmJhYmxlR3JvdXBzLmxlbmd0aC0xOnMtMTtvPWcudGFiYmFibGVHcm91cHNbY10ubGFzdFRhYmJhYmxlTm9kZX1lbHNlIGwoZSl8fChvPWEubmV4dFRhYmJhYmxlTm9kZShuLCExKSl9ZWxzZXt2YXIgdT1mKGcudGFiYmFibGVHcm91cHMsKGZ1bmN0aW9uKGUpe3ZhciB0PWUubGFzdFRhYmJhYmxlTm9kZTtyZXR1cm4gbj09PXR9KSk7aWYodTwwJiYoYS5jb250YWluZXI9PT1ufHwoMCxyLmlzRm9jdXNhYmxlKShuLHYudGFiYmFibGVPcHRpb25zKSYmISgwLHIuaXNUYWJiYWJsZSkobix2LnRhYmJhYmxlT3B0aW9ucykmJiFhLm5leHRUYWJiYWJsZU5vZGUobikpJiYodT1pKSx1Pj0wKXt2YXIgZD11PT09Zy50YWJiYWJsZUdyb3Vwcy5sZW5ndGgtMT8wOnUrMTtvPWcudGFiYmFibGVHcm91cHNbZF0uZmlyc3RUYWJiYWJsZU5vZGV9ZWxzZSBsKGUpfHwobz1hLm5leHRUYWJiYWJsZU5vZGUobikpfX1lbHNlIG89eShcImZhbGxiYWNrRm9jdXNcIik7byYmKGwoZSkmJmUucHJldmVudERlZmF1bHQoKSx4KG8pKX0oZSx2LmlzS2V5QmFja3dhcmQoZSkpfSxTPWZ1bmN0aW9uKGUpe3ZhciB0PXAoZSk7bSh0KT49MHx8ZCh2LmNsaWNrT3V0c2lkZURlYWN0aXZhdGVzLGUpfHxkKHYuYWxsb3dPdXRzaWRlQ2xpY2ssZSl8fChlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSl9LE09ZnVuY3Rpb24oKXtpZihnLmFjdGl2ZSlyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihlLmxlbmd0aD4wKXt2YXIgbj1lW2UubGVuZ3RoLTFdO24hPT10JiZuLnBhdXNlKCl9dmFyIHI9ZS5pbmRleE9mKHQpOy0xPT09cnx8ZS5zcGxpY2UociwxKSxlLnB1c2godCl9KGEsbiksZy5kZWxheUluaXRpYWxGb2N1c1RpbWVyPXYuZGVsYXlJbml0aWFsRm9jdXM/dSgoZnVuY3Rpb24oKXt4KHcoKSl9KSk6eCh3KCkpLG8uYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzaW5cIixPLCEwKSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixMLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9KSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsTCx7Y2FwdHVyZTohMCxwYXNzaXZlOiExfSksby5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixTLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9KSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsRSx7Y2FwdHVyZTohMCxwYXNzaXZlOiExfSksbn0saj1mdW5jdGlvbigpe2lmKGcuYWN0aXZlKXJldHVybiBvLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsTywhMCksby5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsTCwhMCksby5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLEwsITApLG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsUywhMCksby5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLEUsITApLG59O3JldHVybihuPXtnZXQgYWN0aXZlKCl7cmV0dXJuIGcuYWN0aXZlfSxnZXQgcGF1c2VkKCl7cmV0dXJuIGcucGF1c2VkfSxhY3RpdmF0ZTpmdW5jdGlvbihlKXtpZihnLmFjdGl2ZSlyZXR1cm4gdGhpczt2YXIgdD1DKGUsXCJvbkFjdGl2YXRlXCIpLG49QyhlLFwib25Qb3N0QWN0aXZhdGVcIikscj1DKGUsXCJjaGVja0NhbkZvY3VzVHJhcFwiKTtyfHxiKCksZy5hY3RpdmU9ITAsZy5wYXVzZWQ9ITEsZy5ub2RlRm9jdXNlZEJlZm9yZUFjdGl2YXRpb249by5hY3RpdmVFbGVtZW50LHQmJnQoKTt2YXIgaT1mdW5jdGlvbigpe3ImJmIoKSxNKCksbiYmbigpfTtyZXR1cm4gcj8ocihnLmNvbnRhaW5lcnMuY29uY2F0KCkpLnRoZW4oaSxpKSx0aGlzKTooaSgpLHRoaXMpfSxkZWFjdGl2YXRlOmZ1bmN0aW9uKGUpe2lmKCFnLmFjdGl2ZSlyZXR1cm4gdGhpczt2YXIgdD1pKHtvbkRlYWN0aXZhdGU6di5vbkRlYWN0aXZhdGUsb25Qb3N0RGVhY3RpdmF0ZTp2Lm9uUG9zdERlYWN0aXZhdGUsY2hlY2tDYW5SZXR1cm5Gb2N1czp2LmNoZWNrQ2FuUmV0dXJuRm9jdXN9LGUpO2NsZWFyVGltZW91dChnLmRlbGF5SW5pdGlhbEZvY3VzVGltZXIpLGcuZGVsYXlJbml0aWFsRm9jdXNUaW1lcj12b2lkIDAsaigpLGcuYWN0aXZlPSExLGcucGF1c2VkPSExLGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5pbmRleE9mKHQpOy0xIT09biYmZS5zcGxpY2UobiwxKSxlLmxlbmd0aD4wJiZlW2UubGVuZ3RoLTFdLnVucGF1c2UoKX0oYSxuKTt2YXIgcj1DKHQsXCJvbkRlYWN0aXZhdGVcIiksbz1DKHQsXCJvblBvc3REZWFjdGl2YXRlXCIpLGw9Qyh0LFwiY2hlY2tDYW5SZXR1cm5Gb2N1c1wiKSxzPUModCxcInJldHVybkZvY3VzXCIsXCJyZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZVwiKTtyJiZyKCk7dmFyIGM9ZnVuY3Rpb24oKXt1KChmdW5jdGlvbigpe3MmJngoXyhnLm5vZGVGb2N1c2VkQmVmb3JlQWN0aXZhdGlvbikpLG8mJm8oKX0pKX07cmV0dXJuIHMmJmw/KGwoXyhnLm5vZGVGb2N1c2VkQmVmb3JlQWN0aXZhdGlvbikpLnRoZW4oYyxjKSx0aGlzKTooYygpLHRoaXMpfSxwYXVzZTpmdW5jdGlvbigpe3JldHVybiBnLnBhdXNlZHx8IWcuYWN0aXZlfHwoZy5wYXVzZWQ9ITAsaigpKSx0aGlzfSx1bnBhdXNlOmZ1bmN0aW9uKCl7cmV0dXJuIGcucGF1c2VkJiZnLmFjdGl2ZT8oZy5wYXVzZWQ9ITEsYigpLE0oKSx0aGlzKTp0aGlzfSx1cGRhdGVDb250YWluZXJFbGVtZW50czpmdW5jdGlvbihlKXt2YXIgdD1bXS5jb25jYXQoZSkuZmlsdGVyKEJvb2xlYW4pO3JldHVybiBnLmNvbnRhaW5lcnM9dC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP28ucXVlcnlTZWxlY3RvcihlKTplfSkpLGcuYWN0aXZlJiZiKCksdGhpc319KS51cGRhdGVDb250YWluZXJFbGVtZW50cyhlKSxufX0sOTE0MTooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9big2NTUpLG89big2Njg5KSxpPW4oNDM5NCksYT1uKDM1NzMpLGw9big5Mjk0KSxzPW4oNDgzOSk7ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJlwiZGVmYXVsdFwiaW4gZT9lOntkZWZhdWx0OmV9fXZhciB1PWZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBlJiZPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihuKXtpZihcImRlZmF1bHRcIiE9PW4pe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHIuZ2V0P3I6e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVbbl19fSl9fSkpLHQuZGVmYXVsdD1lLE9iamVjdC5mcmVlemUodCl9KG8pLGY9YyhvKSxkPWMocykscD1mdW5jdGlvbihlKXtyZXR1cm57aXNFbmFibGVkOmZ1bmN0aW9uKHQpe3JldHVybiBlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiEhdFtlXX0pKX19fSxoPXttZWFzdXJlTGF5b3V0OnAoW1wibGF5b3V0XCIsXCJsYXlvdXRJZFwiLFwiZHJhZ1wiLFwiX2xheW91dFJlc2V0VHJhbnNmb3JtXCJdKSxhbmltYXRpb246cChbXCJhbmltYXRlXCIsXCJleGl0XCIsXCJ2YXJpYW50c1wiLFwid2hpbGVIb3ZlclwiLFwid2hpbGVUYXBcIixcIndoaWxlRm9jdXNcIixcIndoaWxlRHJhZ1wiXSksZXhpdDpwKFtcImV4aXRcIl0pLGRyYWc6cChbXCJkcmFnXCIsXCJkcmFnQ29udHJvbHNcIl0pLGZvY3VzOnAoW1wid2hpbGVGb2N1c1wiXSksaG92ZXI6cChbXCJ3aGlsZUhvdmVyXCIsXCJvbkhvdmVyU3RhcnRcIixcIm9uSG92ZXJFbmRcIl0pLHRhcDpwKFtcIndoaWxlVGFwXCIsXCJvblRhcFwiLFwib25UYXBTdGFydFwiLFwib25UYXBDYW5jZWxcIl0pLHBhbjpwKFtcIm9uUGFuXCIsXCJvblBhblN0YXJ0XCIsXCJvblBhblNlc3Npb25TdGFydFwiLFwib25QYW5FbmRcIl0pLGxheW91dEFuaW1hdGlvbjpwKFtcImxheW91dFwiLFwibGF5b3V0SWRcIl0pfTtmdW5jdGlvbiB2KGUpe2Zvcih2YXIgdCBpbiBlKXt2YXIgbj1lW3RdO251bGwhPT1uJiYoaFt0XS5Db21wb25lbnQ9bil9fXZhciBnPW8uY3JlYXRlQ29udGV4dCh7c3RyaWN0OiExfSksQz1PYmplY3Qua2V5cyhoKSxtPUMubGVuZ3RoLHk9by5jcmVhdGVDb250ZXh0KHt0cmFuc2Zvcm1QYWdlUG9pbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGlzU3RhdGljOiExfSksdz1vLmNyZWF0ZUNvbnRleHQoe30pO2Z1bmN0aW9uIGIoKXtyZXR1cm4gby51c2VDb250ZXh0KHcpLnZpc3VhbEVsZW1lbnR9dmFyIHg9by5jcmVhdGVDb250ZXh0KG51bGwpO2Z1bmN0aW9uIF8oZSl7dmFyIHQ9by51c2VSZWYobnVsbCk7cmV0dXJuIG51bGw9PT10LmN1cnJlbnQmJih0LmN1cnJlbnQ9ZSgpKSx0LmN1cnJlbnR9ZnVuY3Rpb24gTCgpe3ZhciBlPW8udXNlQ29udGV4dCh4KTtpZihudWxsPT09ZSlyZXR1cm5bITAsbnVsbF07dmFyIHQ9ZS5pc1ByZXNlbnQsbj1lLm9uRXhpdENvbXBsZXRlLHI9ZS5yZWdpc3RlcixpPU0oKTtyZXR1cm4gby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHIoaSl9KSxbXSksIXQmJm4/WyExLGZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PW4/dm9pZCAwOm4oaSl9XTpbITBdfWZ1bmN0aW9uIE8oZSl7cmV0dXJuIG51bGw9PT1lfHxlLmlzUHJlc2VudH12YXIgRT0wLFM9ZnVuY3Rpb24oKXtyZXR1cm4gRSsrfSxNPWZ1bmN0aW9uKCl7cmV0dXJuIF8oUyl9LGo9by5jcmVhdGVDb250ZXh0KG51bGwpLGs9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyxSPWs/by51c2VMYXlvdXRFZmZlY3Q6by51c2VFZmZlY3Q7ZnVuY3Rpb24gUChlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsXCJjdXJyZW50XCIpfWZ1bmN0aW9uIEEoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl9ZnVuY3Rpb24gSShlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZXx8QShlKX1mdW5jdGlvbiBUKGUsdCxuLHIsbyl7dmFyIGk7cmV0dXJuIHZvaWQgMD09PXImJihyPXt9KSx2b2lkIDA9PT1vJiYobz17fSksXCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PW51bGw9PT0oaT1lLnZhcmlhbnRzKXx8dm9pZCAwPT09aT92b2lkIDA6aVt0XSksXCJmdW5jdGlvblwiPT10eXBlb2YgdD90KG51bGwhPW4/bjplLmN1c3RvbSxyLG8pOnR9ZnVuY3Rpb24gSChlLHQsbil7dmFyIHI9ZS5nZXRQcm9wcygpO3JldHVybiBUKHIsdCxudWxsIT1uP246ci5jdXN0b20sZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGUuZm9yRWFjaFZhbHVlKChmdW5jdGlvbihlLG4pe3JldHVybiB0W25dPWUuZ2V0KCl9KSksdH0oZSksZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGUuZm9yRWFjaFZhbHVlKChmdW5jdGlvbihlLG4pe3JldHVybiB0W25dPWUuZ2V0VmVsb2NpdHkoKX0pKSx0fShlKSl9ZnVuY3Rpb24gVihlKXt2YXIgdDtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZihudWxsPT09KHQ9ZS5hbmltYXRlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5zdGFydCl8fEkoZS5pbml0aWFsKXx8SShlLmFuaW1hdGUpfHxJKGUud2hpbGVIb3Zlcil8fEkoZS53aGlsZURyYWcpfHxJKGUud2hpbGVUYXApfHxJKGUud2hpbGVGb2N1cyl8fEkoZS5leGl0KX1mdW5jdGlvbiBCKGUpe3JldHVybiBCb29sZWFuKFYoZSl8fGUudmFyaWFudHMpfWZ1bmN0aW9uIEQoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5qb2luKFwiIFwiKTplfWZ1bmN0aW9uIFooZSl7dmFyIHQ9ZS5wcmVsb2FkZWRGZWF0dXJlcyxuPWUuY3JlYXRlVmlzdWFsRWxlbWVudCxpPWUudXNlUmVuZGVyLGE9ZS51c2VWaXN1YWxTdGF0ZSxsPWUuQ29tcG9uZW50O3JldHVybiB0JiZ2KHQpLG8uZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgcz1vLnVzZUNvbnRleHQoeSkuaXNTdGF0aWMsYz1udWxsLGY9ZnVuY3Rpb24oZSx0KXt2YXIgbj1mdW5jdGlvbihlLHQpe2lmKFYoZSkpe3ZhciBuPWUuaW5pdGlhbCxyPWUuYW5pbWF0ZTtyZXR1cm57aW5pdGlhbDohMT09PW58fEkobik/bjp2b2lkIDAsYW5pbWF0ZTpJKHIpP3I6dm9pZCAwfX1yZXR1cm4hMSE9PWUuaW5oZXJpdD90Ont9fShlLG8udXNlQ29udGV4dCh3KSkscj1uLmluaXRpYWwsaT1uLmFuaW1hdGU7cmV0dXJuIG8udXNlTWVtbygoZnVuY3Rpb24oKXtyZXR1cm57aW5pdGlhbDpyLGFuaW1hdGU6aX19KSx0P1tEKHIpLEQoaSldOltdKX0oZSxzKSxkPWEoZSxzKTtyZXR1cm4hcyYmayYmKGYudmlzdWFsRWxlbWVudD1mdW5jdGlvbihlLHQsbixpKXt2YXIgYT1vLnVzZUNvbnRleHQoeSksbD1vLnVzZUNvbnRleHQoZykscz1iKCksYz1vLnVzZUNvbnRleHQoeCksdT1mdW5jdGlvbihlKXt2YXIgdD1lLmxheW91dElkLG49by51c2VDb250ZXh0KGopO3JldHVybiBuJiZ2b2lkIDAhPT10P24rXCItXCIrdDp0fShuKSxmPW8udXNlUmVmKHZvaWQgMCk7aXx8KGk9bC5yZW5kZXJlciksIWYuY3VycmVudCYmaSYmKGYuY3VycmVudD1pKGUse3Zpc3VhbFN0YXRlOnQscGFyZW50OnMscHJvcHM6ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG4pLHtsYXlvdXRJZDp1fSkscHJlc2VuY2VJZDpudWxsPT1jP3ZvaWQgMDpjLmlkLGJsb2NrSW5pdGlhbEFuaW1hdGlvbjohMT09PShudWxsPT1jP3ZvaWQgMDpjLmluaXRpYWwpfSkpO3ZhciBkPWYuY3VycmVudDtyZXR1cm4gUigoZnVuY3Rpb24oKXtkJiYoZC5zZXRQcm9wcyhyLl9fYXNzaWduKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxhKSxuKSx7bGF5b3V0SWQ6dX0pKSxkLmlzUHJlc2VudD1PKGMpLGQuaXNQcmVzZW5jZVJvb3Q9IXN8fHMucHJlc2VuY2VJZCE9PShudWxsPT1jP3ZvaWQgMDpjLmlkKSxkLnN5bmNSZW5kZXIoKSl9KSksby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7dmFyIGU7ZCYmKG51bGw9PT0oZT1kLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09ZXx8ZS5hbmltYXRlQ2hhbmdlcygpKX0pKSxSKChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBudWxsPT1kP3ZvaWQgMDpkLm5vdGlmeVVubW91bnQoKX19KSxbXSksZH0obCxkLGUsbiksYz1mdW5jdGlvbihlLHQsbil7dmFyIGk9W107aWYoby51c2VDb250ZXh0KGcpLCF0KXJldHVybiBudWxsO2Zvcih2YXIgYT0wO2E8bTthKyspe3ZhciBsPUNbYV0scz1oW2xdLGM9cy5pc0VuYWJsZWQsZj1zLkNvbXBvbmVudDtjKGUpJiZmJiZpLnB1c2godS5jcmVhdGVFbGVtZW50KGYsci5fX2Fzc2lnbih7a2V5Omx9LGUse3Zpc3VhbEVsZW1lbnQ6dH0pKSl9cmV0dXJuIGl9KGUsZi52aXN1YWxFbGVtZW50KSksdS5jcmVhdGVFbGVtZW50KHUuRnJhZ21lbnQsbnVsbCx1LmNyZWF0ZUVsZW1lbnQody5Qcm92aWRlcix7dmFsdWU6Zn0saShsLGUsZnVuY3Rpb24oZSx0LG4pe3JldHVybiBvLnVzZUNhbGxiYWNrKChmdW5jdGlvbihyKXt2YXIgbztyJiYobnVsbD09PShvPWUubW91bnQpfHx2b2lkIDA9PT1vfHxvLmNhbGwoZSxyKSksdCYmKHI/dC5tb3VudChyKTp0LnVubW91bnQoKSksbiYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4/bihyKTpQKG4pJiYobi5jdXJyZW50PXIpKX0pLFt0XSl9KGQsZi52aXN1YWxFbGVtZW50LHQpLGQscykpLGMpfSkpfWZ1bmN0aW9uICQoZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj17fSksWihlKHQsbikpfXZhciBuPW5ldyBNYXA7cmV0dXJuIG5ldyBQcm94eSh0LHtnZXQ6ZnVuY3Rpb24oZSxyKXtyZXR1cm4gbi5oYXMocil8fG4uc2V0KHIsdChyKSksbi5nZXQocil9fSl9dmFyIEY9W1wiYW5pbWF0ZVwiLFwiY2lyY2xlXCIsXCJkZWZzXCIsXCJkZXNjXCIsXCJlbGxpcHNlXCIsXCJnXCIsXCJpbWFnZVwiLFwibGluZVwiLFwiZmlsdGVyXCIsXCJtYXJrZXJcIixcIm1hc2tcIixcIm1ldGFkYXRhXCIsXCJwYXRoXCIsXCJwYXR0ZXJuXCIsXCJwb2x5Z29uXCIsXCJwb2x5bGluZVwiLFwicmVjdFwiLFwic3RvcFwiLFwic3ZnXCIsXCJzd2l0Y2hcIixcInN5bWJvbFwiLFwidGV4dFwiLFwidHNwYW5cIixcInVzZVwiLFwidmlld1wiXTtmdW5jdGlvbiBOKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiYhZS5pbmNsdWRlcyhcIi1cIikmJiEhKEYuaW5kZXhPZihlKT4tMXx8L1tBLVpdLy50ZXN0KGUpKX12YXIgVT17fTtmdW5jdGlvbiBXKGUpe2Zvcih2YXIgdCBpbiBlKVVbdF09ZVt0XX12YXIgej1bXCJcIixcIlhcIixcIllcIixcIlpcIl0sRz1bXCJ0cmFuc2Zvcm1QZXJzcGVjdGl2ZVwiLFwieFwiLFwieVwiLFwielwiXTtmdW5jdGlvbiBxKGUsdCl7cmV0dXJuIEcuaW5kZXhPZihlKS1HLmluZGV4T2YodCl9W1widHJhbnNsYXRlXCIsXCJzY2FsZVwiLFwicm90YXRlXCIsXCJza2V3XCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiB6LmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBHLnB1c2goZSt0KX0pKX0pKTt2YXIgWT1uZXcgU2V0KEcpO2Z1bmN0aW9uIEsoZSl7cmV0dXJuIFkuaGFzKGUpfXZhciBYPW5ldyBTZXQoW1wib3JpZ2luWFwiLFwib3JpZ2luWVwiLFwib3JpZ2luWlwiXSk7ZnVuY3Rpb24gSihlKXtyZXR1cm4gWC5oYXMoZSl9ZnVuY3Rpb24gUShlLHQpe3ZhciBuPXQubGF5b3V0LHI9dC5sYXlvdXRJZDtyZXR1cm4gSyhlKXx8SihlKXx8KG58fHZvaWQgMCE9PXIpJiYoISFVW2VdfHxcIm9wYWNpdHlcIj09PWUpfXZhciBlZT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZlLmdldFZlbG9jaXR5fSx0ZT17eDpcInRyYW5zbGF0ZVhcIix5OlwidHJhbnNsYXRlWVwiLHo6XCJ0cmFuc2xhdGVaXCIsdHJhbnNmb3JtUGVyc3BlY3RpdmU6XCJwZXJzcGVjdGl2ZVwifTtmdW5jdGlvbiBuZShlKXtyZXR1cm4gZS5zdGFydHNXaXRoKFwiLS1cIil9dmFyIHJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQmJlwibnVtYmVyXCI9PXR5cGVvZiBlP3QudHJhbnNmb3JtKGUpOmV9LG9lPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxhLm51bWJlcikse3RyYW5zZm9ybTpNYXRoLnJvdW5kfSksaWU9e2JvcmRlcldpZHRoOmEucHgsYm9yZGVyVG9wV2lkdGg6YS5weCxib3JkZXJSaWdodFdpZHRoOmEucHgsYm9yZGVyQm90dG9tV2lkdGg6YS5weCxib3JkZXJMZWZ0V2lkdGg6YS5weCxib3JkZXJSYWRpdXM6YS5weCxyYWRpdXM6YS5weCxib3JkZXJUb3BMZWZ0UmFkaXVzOmEucHgsYm9yZGVyVG9wUmlnaHRSYWRpdXM6YS5weCxib3JkZXJCb3R0b21SaWdodFJhZGl1czphLnB4LGJvcmRlckJvdHRvbUxlZnRSYWRpdXM6YS5weCx3aWR0aDphLnB4LG1heFdpZHRoOmEucHgsaGVpZ2h0OmEucHgsbWF4SGVpZ2h0OmEucHgsc2l6ZTphLnB4LHRvcDphLnB4LHJpZ2h0OmEucHgsYm90dG9tOmEucHgsbGVmdDphLnB4LHBhZGRpbmc6YS5weCxwYWRkaW5nVG9wOmEucHgscGFkZGluZ1JpZ2h0OmEucHgscGFkZGluZ0JvdHRvbTphLnB4LHBhZGRpbmdMZWZ0OmEucHgsbWFyZ2luOmEucHgsbWFyZ2luVG9wOmEucHgsbWFyZ2luUmlnaHQ6YS5weCxtYXJnaW5Cb3R0b206YS5weCxtYXJnaW5MZWZ0OmEucHgscm90YXRlOmEuZGVncmVlcyxyb3RhdGVYOmEuZGVncmVlcyxyb3RhdGVZOmEuZGVncmVlcyxyb3RhdGVaOmEuZGVncmVlcyxzY2FsZTphLnNjYWxlLHNjYWxlWDphLnNjYWxlLHNjYWxlWTphLnNjYWxlLHNjYWxlWjphLnNjYWxlLHNrZXc6YS5kZWdyZWVzLHNrZXdYOmEuZGVncmVlcyxza2V3WTphLmRlZ3JlZXMsZGlzdGFuY2U6YS5weCx0cmFuc2xhdGVYOmEucHgsdHJhbnNsYXRlWTphLnB4LHRyYW5zbGF0ZVo6YS5weCx4OmEucHgseTphLnB4LHo6YS5weCxwZXJzcGVjdGl2ZTphLnB4LHRyYW5zZm9ybVBlcnNwZWN0aXZlOmEucHgsb3BhY2l0eTphLmFscGhhLG9yaWdpblg6YS5wcm9ncmVzc1BlcmNlbnRhZ2Usb3JpZ2luWTphLnByb2dyZXNzUGVyY2VudGFnZSxvcmlnaW5aOmEucHgsekluZGV4Om9lLGZpbGxPcGFjaXR5OmEuYWxwaGEsc3Ryb2tlT3BhY2l0eTphLmFscGhhLG51bU9jdGF2ZXM6b2V9O2Z1bmN0aW9uIGFlKGUsdCxuLHIsbyxpLGEsbCl7dmFyIHMsYz1lLnN0eWxlLHU9ZS52YXJzLGY9ZS50cmFuc2Zvcm0sZD1lLnRyYW5zZm9ybUtleXMscD1lLnRyYW5zZm9ybU9yaWdpbjtkLmxlbmd0aD0wO3ZhciBoPSExLHY9ITEsZz0hMDtmb3IodmFyIEMgaW4gdCl7dmFyIG09dFtDXTtpZihuZShDKSl1W0NdPW07ZWxzZXt2YXIgeT1pZVtDXSx3PXJlKG0seSk7aWYoSyhDKSl7aWYoaD0hMCxmW0NdPXcsZC5wdXNoKEMpLCFnKWNvbnRpbnVlO20hPT0obnVsbCE9PShzPXkuZGVmYXVsdCkmJnZvaWQgMCE9PXM/czowKSYmKGc9ITEpfWVsc2UgaWYoSihDKSlwW0NdPXcsdj0hMDtlbHNlIGlmKChudWxsPT1uP3ZvaWQgMDpuLmlzSHlkcmF0ZWQpJiYobnVsbD09cj92b2lkIDA6ci5pc0h5ZHJhdGVkKSYmVVtDXSl7dmFyIGI9VVtDXS5wcm9jZXNzKG0scixuKSx4PVVbQ10uYXBwbHlUbztpZih4KWZvcih2YXIgXz14Lmxlbmd0aCxMPTA7TDxfO0wrKyljW3hbTF1dPWI7ZWxzZSBjW0NdPWJ9ZWxzZSBjW0NdPXd9fXImJm4mJmEmJmw/KGMudHJhbnNmb3JtPWEoci5kZWx0YUZpbmFsLHIudHJlZVNjYWxlLGg/Zjp2b2lkIDApLGkmJihjLnRyYW5zZm9ybT1pKGYsYy50cmFuc2Zvcm0pKSxjLnRyYW5zZm9ybU9yaWdpbj1sKHIpKTooaCYmKGMudHJhbnNmb3JtPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPWUudHJhbnNmb3JtLGk9ZS50cmFuc2Zvcm1LZXlzLGE9dC5lbmFibGVIYXJkd2FyZUFjY2VsZXJhdGlvbixsPXZvaWQgMD09PWF8fGEscz10LmFsbG93VHJhbnNmb3JtTm9uZSxjPXZvaWQgMD09PXN8fHMsdT1cIlwiO2kuc29ydChxKTtmb3IodmFyIGY9ITEsZD1pLmxlbmd0aCxwPTA7cDxkO3ArKyl7dmFyIGg9aVtwXTt1Kz0odGVbaF18fGgpK1wiKFwiK29baF0rXCIpIFwiLFwielwiPT09aCYmKGY9ITApfXJldHVybiFmJiZsP3UrPVwidHJhbnNsYXRlWigwKVwiOnU9dS50cmltKCkscj91PXIobyxuP1wiXCI6dSk6YyYmbiYmKHU9XCJub25lXCIpLHV9KGUsbyxnLGkpKSx2JiYoYy50cmFuc2Zvcm1PcmlnaW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcmlnaW5YLG49dm9pZCAwPT09dD9cIjUwJVwiOnQscj1lLm9yaWdpblksbz12b2lkIDA9PT1yP1wiNTAlXCI6cixpPWUub3JpZ2luWjtyZXR1cm4gbitcIiBcIitvK1wiIFwiKyh2b2lkIDA9PT1pPzA6aSl9KHApKSl9dmFyIGxlPWZ1bmN0aW9uKCl7cmV0dXJue3N0eWxlOnt9LHRyYW5zZm9ybTp7fSx0cmFuc2Zvcm1LZXlzOltdLHRyYW5zZm9ybU9yaWdpbjp7fSx2YXJzOnt9fX07ZnVuY3Rpb24gc2UoZSx0LG4pe2Zvcih2YXIgciBpbiB0KWVlKHRbcl0pfHxRKHIsbil8fChlW3JdPXRbcl0pfWZ1bmN0aW9uIGNlKGUsdCxuKXt2YXIgaT17fSxhPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT17fTtyZXR1cm4gc2UoaSxlLnN0eWxlfHx7fSxlKSxPYmplY3QuYXNzaWduKGksZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWUudHJhbnNmb3JtVGVtcGxhdGU7cmV0dXJuIG8udXNlTWVtbygoZnVuY3Rpb24oKXt2YXIgZT1sZSgpO2FlKGUsdCx2b2lkIDAsdm9pZCAwLHtlbmFibGVIYXJkd2FyZUFjY2VsZXJhdGlvbjohbn0saSk7dmFyIG89ZS52YXJzLGE9ZS5zdHlsZTtyZXR1cm4gci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG8pLGEpfSksW3RdKX0oZSx0LG4pKSxlLnRyYW5zZm9ybVZhbHVlcyYmKGk9ZS50cmFuc2Zvcm1WYWx1ZXMoaSkpLGl9KGUsdCxuKTtyZXR1cm4gQm9vbGVhbihlLmRyYWcpJiYoaS5kcmFnZ2FibGU9ITEsYS51c2VyU2VsZWN0PWEuV2Via2l0VXNlclNlbGVjdD1hLldlYmtpdFRvdWNoQ2FsbG91dD1cIm5vbmVcIixhLnRvdWNoQWN0aW9uPSEwPT09ZS5kcmFnP1wibm9uZVwiOlwicGFuLVwiKyhcInhcIj09PWUuZHJhZz9cInlcIjpcInhcIikpLGkuc3R5bGU9YSxpfXZhciB1ZT1uZXcgU2V0KFtcImluaXRpYWxcIixcImFuaW1hdGVcIixcImV4aXRcIixcInN0eWxlXCIsXCJ2YXJpYW50c1wiLFwidHJhbnNpdGlvblwiLFwidHJhbnNmb3JtVGVtcGxhdGVcIixcInRyYW5zZm9ybVZhbHVlc1wiLFwiY3VzdG9tXCIsXCJpbmhlcml0XCIsXCJsYXlvdXRcIixcImxheW91dElkXCIsXCJfbGF5b3V0UmVzZXRUcmFuc2Zvcm1cIixcIm9uTGF5b3V0QW5pbWF0aW9uQ29tcGxldGVcIixcIm9uVmlld3BvcnRCb3hVcGRhdGVcIixcIm9uTGF5b3V0TWVhc3VyZVwiLFwib25CZWZvcmVMYXlvdXRNZWFzdXJlXCIsXCJvbkFuaW1hdGlvblN0YXJ0XCIsXCJvbkFuaW1hdGlvbkNvbXBsZXRlXCIsXCJvblVwZGF0ZVwiLFwib25EcmFnU3RhcnRcIixcIm9uRHJhZ1wiLFwib25EcmFnRW5kXCIsXCJvbk1lYXN1cmVEcmFnQ29uc3RyYWludHNcIixcIm9uRGlyZWN0aW9uTG9ja1wiLFwib25EcmFnVHJhbnNpdGlvbkVuZFwiLFwiZHJhZ1wiLFwiZHJhZ0NvbnRyb2xzXCIsXCJkcmFnTGlzdGVuZXJcIixcImRyYWdDb25zdHJhaW50c1wiLFwiZHJhZ0RpcmVjdGlvbkxvY2tcIixcIl9kcmFnWFwiLFwiX2RyYWdZXCIsXCJkcmFnRWxhc3RpY1wiLFwiZHJhZ01vbWVudHVtXCIsXCJkcmFnUHJvcGFnYXRpb25cIixcImRyYWdUcmFuc2l0aW9uXCIsXCJ3aGlsZURyYWdcIixcIm9uUGFuXCIsXCJvblBhblN0YXJ0XCIsXCJvblBhbkVuZFwiLFwib25QYW5TZXNzaW9uU3RhcnRcIixcIm9uVGFwXCIsXCJvblRhcFN0YXJ0XCIsXCJvblRhcENhbmNlbFwiLFwib25Ib3ZlclN0YXJ0XCIsXCJvbkhvdmVyRW5kXCIsXCJ3aGlsZUZvY3VzXCIsXCJ3aGlsZVRhcFwiLFwid2hpbGVIb3ZlclwiXSk7ZnVuY3Rpb24gZmUoZSl7cmV0dXJuIHVlLmhhcyhlKX12YXIgZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIWZlKGUpfTt0cnl7dmFyIHBlPW4oODU5NCkuWjtkZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zdGFydHNXaXRoKFwib25cIik/IWZlKGUpOnBlKGUpfX1jYXRjaChlKXt9ZnVuY3Rpb24gaGUoZSx0LG4pe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP2U6YS5weC50cmFuc2Zvcm0odCtuKmUpfXZhciB2ZT1mdW5jdGlvbihlLHQpe3JldHVybiBhLnB4LnRyYW5zZm9ybShlKnQpfSxnZT17b2Zmc2V0Olwic3Ryb2tlLWRhc2hvZmZzZXRcIixhcnJheTpcInN0cm9rZS1kYXNoYXJyYXlcIn0sQ2U9e29mZnNldDpcInN0cm9rZURhc2hvZmZzZXRcIixhcnJheTpcInN0cm9rZURhc2hhcnJheVwifTtmdW5jdGlvbiBtZShlLHQsbixvLGksYSxsLHMpe3ZhciBjPXQuYXR0clgsdT10LmF0dHJZLGY9dC5vcmlnaW5YLGQ9dC5vcmlnaW5ZLHA9dC5wYXRoTGVuZ3RoLGg9dC5wYXRoU3BhY2luZyx2PXZvaWQgMD09PWg/MTpoLGc9dC5wYXRoT2Zmc2V0LEM9dm9pZCAwPT09Zz8wOmc7YWUoZSxyLl9fcmVzdCh0LFtcImF0dHJYXCIsXCJhdHRyWVwiLFwib3JpZ2luWFwiLFwib3JpZ2luWVwiLFwicGF0aExlbmd0aFwiLFwicGF0aFNwYWNpbmdcIixcInBhdGhPZmZzZXRcIl0pLG4sbyxpLGEsbCxzKSxlLmF0dHJzPWUuc3R5bGUsZS5zdHlsZT17fTt2YXIgbT1lLmF0dHJzLHk9ZS5zdHlsZSx3PWUuZGltZW5zaW9ucyxiPWUudG90YWxQYXRoTGVuZ3RoO20udHJhbnNmb3JtJiYodyYmKHkudHJhbnNmb3JtPW0udHJhbnNmb3JtKSxkZWxldGUgbS50cmFuc2Zvcm0pLHcmJih2b2lkIDAhPT1mfHx2b2lkIDAhPT1kfHx5LnRyYW5zZm9ybSkmJih5LnRyYW5zZm9ybU9yaWdpbj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGhlKHQsZS54LGUud2lkdGgpK1wiIFwiK2hlKG4sZS55LGUuaGVpZ2h0KX0odyx2b2lkIDAhPT1mP2Y6LjUsdm9pZCAwIT09ZD9kOi41KSksdm9pZCAwIT09YyYmKG0ueD1jKSx2b2lkIDAhPT11JiYobS55PXUpLHZvaWQgMCE9PWImJnZvaWQgMCE9PXAmJmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2b2lkIDA9PT1yJiYocj0xKSx2b2lkIDA9PT1vJiYobz0wKSx2b2lkIDA9PT1pJiYoaT0hMCk7dmFyIGE9aT9nZTpDZTtlW2Eub2Zmc2V0XT12ZSgtbyx0KTt2YXIgbD12ZShuLHQpLHM9dmUocix0KTtlW2EuYXJyYXldPWwrXCIgXCIrc30obSxiLHAsdixDLCExKX12YXIgeWU9ZnVuY3Rpb24oKXtyZXR1cm4gci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGxlKCkpLHthdHRyczp7fX0pfTtmdW5jdGlvbiB3ZShlLHQpe3ZhciBuPW8udXNlTWVtbygoZnVuY3Rpb24oKXt2YXIgbj15ZSgpO3JldHVybiBtZShuLHQsdm9pZCAwLHZvaWQgMCx7ZW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRpb246ITF9LGUudHJhbnNmb3JtVGVtcGxhdGUpLHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxuLmF0dHJzKSx7c3R5bGU6ci5fX2Fzc2lnbih7fSxuLnN0eWxlKX0pfSksW3RdKTtpZihlLnN0eWxlKXt2YXIgaT17fTtzZShpLGUuc3R5bGUsZSksbi5zdHlsZT1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30saSksbi5zdHlsZSl9cmV0dXJuIG59ZnVuY3Rpb24gYmUoZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSxmdW5jdGlvbih0LG4saSxhLGwpe3ZhciBzPWEubGF0ZXN0VmFsdWVzLGM9KE4odCk/d2U6Y2UpKG4scyxsKSx1PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17fTtmb3IodmFyIG8gaW4gZSkoZGUobyl8fCEwPT09biYmZmUobyl8fCF0JiYhZmUobykpJiYocltvXT1lW29dKTtyZXR1cm4gcn0obixcInN0cmluZ1wiPT10eXBlb2YgdCxlKSxmPXIuX19hc3NpZ24oci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHUpLGMpLHtyZWY6aX0pO3JldHVybiBvLmNyZWF0ZUVsZW1lbnQodCxmKX19dmFyIHhlPS8oW2Etel0pKFtBLVpdKS9nLF9lPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoeGUsXCIkMS0kMlwiKS50b0xvd2VyQ2FzZSgpfTtmdW5jdGlvbiBMZShlLHQpe3ZhciBuPXQuc3R5bGUscj10LnZhcnM7Zm9yKHZhciBvIGluIE9iamVjdC5hc3NpZ24oZS5zdHlsZSxuKSxyKWUuc3R5bGUuc2V0UHJvcGVydHkobyxyW29dKX12YXIgT2U9bmV3IFNldChbXCJiYXNlRnJlcXVlbmN5XCIsXCJkaWZmdXNlQ29uc3RhbnRcIixcImtlcm5lbE1hdHJpeFwiLFwia2VybmVsVW5pdExlbmd0aFwiLFwia2V5U3BsaW5lc1wiLFwia2V5VGltZXNcIixcImxpbWl0aW5nQ29uZUFuZ2xlXCIsXCJtYXJrZXJIZWlnaHRcIixcIm1hcmtlcldpZHRoXCIsXCJudW1PY3RhdmVzXCIsXCJ0YXJnZXRYXCIsXCJ0YXJnZXRZXCIsXCJzdXJmYWNlU2NhbGVcIixcInNwZWN1bGFyQ29uc3RhbnRcIixcInNwZWN1bGFyRXhwb25lbnRcIixcInN0ZERldmlhdGlvblwiLFwidGFibGVWYWx1ZXNcIixcInZpZXdCb3hcIixcImdyYWRpZW50VHJhbnNmb3JtXCJdKTtmdW5jdGlvbiBFZShlLHQpe2Zvcih2YXIgbiBpbiBMZShlLHQpLHQuYXR0cnMpZS5zZXRBdHRyaWJ1dGUoT2UuaGFzKG4pP246X2UobiksdC5hdHRyc1tuXSl9ZnVuY3Rpb24gU2UoZSl7dmFyIHQ9ZS5zdHlsZSxuPXt9O2Zvcih2YXIgciBpbiB0KShlZSh0W3JdKXx8UShyLGUpKSYmKG5bcl09dFtyXSk7cmV0dXJuIG59ZnVuY3Rpb24gTWUoZSl7dmFyIHQ9U2UoZSk7Zm9yKHZhciBuIGluIGUpZWUoZVtuXSkmJih0W1wieFwiPT09bnx8XCJ5XCI9PT1uP1wiYXR0clwiK24udG9VcHBlckNhc2UoKTpuXT1lW25dKTtyZXR1cm4gdH1mdW5jdGlvbiBqZShlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5zdGFydH12YXIga2U9ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl9LFJlPWZ1bmN0aW9uKGUpe3JldHVybiBCb29sZWFuKGUmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZlLm1peCYmZS50b1ZhbHVlKX0sUGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGtlKGUpP2VbZS5sZW5ndGgtMV18fDA6ZX07ZnVuY3Rpb24gQWUoZSl7dmFyIHQ9ZWUoZSk/ZS5nZXQoKTplO3JldHVybiBSZSh0KT90LnRvVmFsdWUoKTp0fWZ1bmN0aW9uIEllKGUsdCxuLHIpe3ZhciBvPWUuc2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzLGk9ZS5jcmVhdGVSZW5kZXJTdGF0ZSxhPWUub25Nb3VudCxsPXtsYXRlc3RWYWx1ZXM6SGUodCxuLHIsbykscmVuZGVyU3RhdGU6aSgpfTtyZXR1cm4gYSYmKGwubW91bnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGEodCxlLGwpfSksbH12YXIgVGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIHI9by51c2VDb250ZXh0KHcpLGk9by51c2VDb250ZXh0KHgpO3JldHVybiBuP0llKGUsdCxyLGkpOl8oKGZ1bmN0aW9uKCl7cmV0dXJuIEllKGUsdCxyLGkpfSkpfX07ZnVuY3Rpb24gSGUoZSx0LG4sbyl7dmFyIGk9e30sYT0hMT09PShudWxsPT1uP3ZvaWQgMDpuLmluaXRpYWwpLGw9byhlKTtmb3IodmFyIHMgaW4gbClpW3NdPUFlKGxbc10pO3ZhciBjPWUuaW5pdGlhbCx1PWUuYW5pbWF0ZSxmPVYoZSksZD1CKGUpO3QmJmQmJiFmJiYhMSE9PWUuaW5oZXJpdCYmKG51bGwhPWN8fChjPXQuaW5pdGlhbCksbnVsbCE9dXx8KHU9dC5hbmltYXRlKSk7dmFyIHA9YXx8ITE9PT1jP3U6YztyZXR1cm4gcCYmXCJib29sZWFuXCIhPXR5cGVvZiBwJiYhamUocCkmJihBcnJheS5pc0FycmF5KHApP3A6W3BdKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj1UKGUsdCk7aWYobil7dmFyIG89bi50cmFuc2l0aW9uRW5kO24udHJhbnNpdGlvbjt2YXIgYT1yLl9fcmVzdChuLFtcInRyYW5zaXRpb25FbmRcIixcInRyYW5zaXRpb25cIl0pO2Zvcih2YXIgbCBpbiBhKWlbbF09YVtsXTtmb3IodmFyIGwgaW4gbylpW2xdPW9bbF19fSkpLGl9dmFyIFZlLEJlPXt1c2VWaXN1YWxTdGF0ZTpUZSh7c2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzOk1lLGNyZWF0ZVJlbmRlclN0YXRlOnllLG9uTW91bnQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4ucmVuZGVyU3RhdGUsbz1uLmxhdGVzdFZhbHVlczt0cnl7ci5kaW1lbnNpb25zPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZ2V0QkJveD90LmdldEJCb3goKTp0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWNhdGNoKGUpe3IuZGltZW5zaW9ucz17eDowLHk6MCx3aWR0aDowLGhlaWdodDowfX1cInBhdGhcIj09PXQudGFnTmFtZSYmKHIudG90YWxQYXRoTGVuZ3RoPXQuZ2V0VG90YWxMZW5ndGgoKSksbWUocixvLHZvaWQgMCx2b2lkIDAse2VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0aW9uOiExfSxlLnRyYW5zZm9ybVRlbXBsYXRlKSxFZSh0LHIpfX0pfSxEZT17dXNlVmlzdWFsU3RhdGU6VGUoe3NjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczpTZSxjcmVhdGVSZW5kZXJTdGF0ZTpsZX0pfTtmdW5jdGlvbiBaZShlLHQsbixvKXt2YXIgaT10LmZvcndhcmRNb3Rpb25Qcm9wcyxhPXZvaWQgMCE9PWkmJmksbD1OKGUpP0JlOkRlO3JldHVybiByLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbCkse3ByZWxvYWRlZEZlYXR1cmVzOm4sdXNlUmVuZGVyOmJlKGEpLGNyZWF0ZVZpc3VhbEVsZW1lbnQ6byxDb21wb25lbnQ6ZX0pfWZ1bmN0aW9uICRlKGUsdCxuLHIpe3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIodCxuLHIpLGZ1bmN0aW9uKCl7cmV0dXJuIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4scil9fWZ1bmN0aW9uIEZlKGUsdCxuLHIpe28udXNlRWZmZWN0KChmdW5jdGlvbigpe3ZhciBvPWUuY3VycmVudDtpZihuJiZvKXJldHVybiAkZShvLHQsbixyKX0pLFtlLHQsbixyXSl9ZnVuY3Rpb24gTmUoZSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFBvaW50ZXJFdmVudCYmZSBpbnN0YW5jZW9mIFBvaW50ZXJFdmVudD8hKFwibW91c2VcIiE9PWUucG9pbnRlclR5cGUpOmUgaW5zdGFuY2VvZiBNb3VzZUV2ZW50fWZ1bmN0aW9uIFVlKGUpe3JldHVybiEhZS50b3VjaGVzfSFmdW5jdGlvbihlKXtlLkFuaW1hdGU9XCJhbmltYXRlXCIsZS5Ib3Zlcj1cIndoaWxlSG92ZXJcIixlLlRhcD1cIndoaWxlVGFwXCIsZS5EcmFnPVwid2hpbGVEcmFnXCIsZS5Gb2N1cz1cIndoaWxlRm9jdXNcIixlLkV4aXQ9XCJleGl0XCJ9KFZlfHwoVmU9e30pKTt2YXIgV2U9e3BhZ2VYOjAscGFnZVk6MH07ZnVuY3Rpb24gemUoZSx0KXt2b2lkIDA9PT10JiYodD1cInBhZ2VcIik7dmFyIG49ZS50b3VjaGVzWzBdfHxlLmNoYW5nZWRUb3VjaGVzWzBdfHxXZTtyZXR1cm57eDpuW3QrXCJYXCJdLHk6blt0K1wiWVwiXX19ZnVuY3Rpb24gR2UoZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9XCJwYWdlXCIpLHt4OmVbdCtcIlhcIl0seTplW3QrXCJZXCJdfX1mdW5jdGlvbiBxZShlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1cInBhZ2VcIikse3BvaW50OlVlKGUpP3plKGUsdCk6R2UoZSx0KX19dmFyIFllPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBuLHI9ZnVuY3Rpb24odCl7cmV0dXJuIGUodCxxZSh0KSl9O3JldHVybiB0PyhuPXIsZnVuY3Rpb24oZSl7dmFyIHQ9ZSBpbnN0YW5jZW9mIE1vdXNlRXZlbnQ7KCF0fHx0JiYwPT09ZS5idXR0b24pJiZuKGUpfSk6cn0sS2U9ZnVuY3Rpb24oKXtyZXR1cm4gayYmbnVsbD09PXdpbmRvdy5vbnBvaW50ZXJkb3dufSxYZT1mdW5jdGlvbigpe3JldHVybiBrJiZudWxsPT09d2luZG93Lm9udG91Y2hzdGFydH0sSmU9ZnVuY3Rpb24oKXtyZXR1cm4gayYmbnVsbD09PXdpbmRvdy5vbm1vdXNlZG93bn0sUWU9e3BvaW50ZXJkb3duOlwibW91c2Vkb3duXCIscG9pbnRlcm1vdmU6XCJtb3VzZW1vdmVcIixwb2ludGVydXA6XCJtb3VzZXVwXCIscG9pbnRlcmNhbmNlbDpcIm1vdXNlY2FuY2VsXCIscG9pbnRlcm92ZXI6XCJtb3VzZW92ZXJcIixwb2ludGVyb3V0OlwibW91c2VvdXRcIixwb2ludGVyZW50ZXI6XCJtb3VzZWVudGVyXCIscG9pbnRlcmxlYXZlOlwibW91c2VsZWF2ZVwifSxldD17cG9pbnRlcmRvd246XCJ0b3VjaHN0YXJ0XCIscG9pbnRlcm1vdmU6XCJ0b3VjaG1vdmVcIixwb2ludGVydXA6XCJ0b3VjaGVuZFwiLHBvaW50ZXJjYW5jZWw6XCJ0b3VjaGNhbmNlbFwifTtmdW5jdGlvbiB0dChlKXtyZXR1cm4gS2UoKT9lOlhlKCk/ZXRbZV06SmUoKT9RZVtlXTplfWZ1bmN0aW9uIG50KGUsdCxuLHIpe3JldHVybiAkZShlLHR0KHQpLFllKG4sXCJwb2ludGVyZG93blwiPT09dCkscil9ZnVuY3Rpb24gcnQoZSx0LG4scil7cmV0dXJuIEZlKGUsdHQodCksbiYmWWUobixcInBvaW50ZXJkb3duXCI9PT10KSxyKX1mdW5jdGlvbiBvdChlKXt2YXIgdD1udWxsO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBudWxsPT09dCYmKHQ9ZSxmdW5jdGlvbigpe3Q9bnVsbH0pfX12YXIgaXQ9b3QoXCJkcmFnSG9yaXpvbnRhbFwiKSxhdD1vdChcImRyYWdWZXJ0aWNhbFwiKTtmdW5jdGlvbiBsdChlKXt2YXIgdD0hMTtpZihcInlcIj09PWUpdD1hdCgpO2Vsc2UgaWYoXCJ4XCI9PT1lKXQ9aXQoKTtlbHNle3ZhciBuPWl0KCkscj1hdCgpO24mJnI/dD1mdW5jdGlvbigpe24oKSxyKCl9OihuJiZuKCksciYmcigpKX1yZXR1cm4gdH1mdW5jdGlvbiBzdCgpe3ZhciBlPWx0KCEwKTtyZXR1cm4hZXx8KGUoKSwhMSl9ZnVuY3Rpb24gY3QoZSx0LG4pe3JldHVybiBmdW5jdGlvbihyLG8pe3ZhciBpO05lKHIpJiYhc3QoKSYmKG51bGw9PW58fG4ocixvKSxudWxsPT09KGk9ZS5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PWl8fGkuc2V0QWN0aXZlKFZlLkhvdmVyLHQpKX19dmFyIHV0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuISF0JiYoZT09PXR8fHV0KGUsdC5wYXJlbnRFbGVtZW50KSl9O2Z1bmN0aW9uIGZ0KGUpe3JldHVybiBvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSgpfX0pLFtdKX12YXIgZHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpLG51bGx9fSxwdD17dGFwOmR0KChmdW5jdGlvbihlKXt2YXIgdD1lLm9uVGFwLG49ZS5vblRhcFN0YXJ0LHI9ZS5vblRhcENhbmNlbCxpPWUud2hpbGVUYXAsYT1lLnZpc3VhbEVsZW1lbnQscz10fHxufHxyfHxpLGM9by51c2VSZWYoITEpLHU9by51c2VSZWYobnVsbCk7ZnVuY3Rpb24gZigpe3ZhciBlO251bGw9PT0oZT11LmN1cnJlbnQpfHx2b2lkIDA9PT1lfHxlLmNhbGwodSksdS5jdXJyZW50PW51bGx9ZnVuY3Rpb24gZCgpe3ZhciBlO3JldHVybiBmKCksYy5jdXJyZW50PSExLG51bGw9PT0oZT1hLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09ZXx8ZS5zZXRBY3RpdmUoVmUuVGFwLCExKSwhc3QoKX1mdW5jdGlvbiBwKGUsbil7ZCgpJiYodXQoYS5nZXRJbnN0YW5jZSgpLGUudGFyZ2V0KT9udWxsPT10fHx0KGUsbik6bnVsbD09cnx8cihlLG4pKX1mdW5jdGlvbiBoKGUsdCl7ZCgpJiYobnVsbD09cnx8cihlLHQpKX1ydChhLFwicG9pbnRlcmRvd25cIixzP2Z1bmN0aW9uKGUsdCl7dmFyIHI7ZigpLGMuY3VycmVudHx8KGMuY3VycmVudD0hMCx1LmN1cnJlbnQ9bC5waXBlKG50KHdpbmRvdyxcInBvaW50ZXJ1cFwiLHApLG50KHdpbmRvdyxcInBvaW50ZXJjYW5jZWxcIixoKSksbnVsbD09bnx8bihlLHQpLG51bGw9PT0ocj1hLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09cnx8ci5zZXRBY3RpdmUoVmUuVGFwLCEwKSl9OnZvaWQgMCksZnQoZil9KSksZm9jdXM6ZHQoKGZ1bmN0aW9uKGUpe3ZhciB0PWUud2hpbGVGb2N1cyxuPWUudmlzdWFsRWxlbWVudDtGZShuLFwiZm9jdXNcIix0P2Z1bmN0aW9uKCl7dmFyIGU7bnVsbD09PShlPW4uYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1lfHxlLnNldEFjdGl2ZShWZS5Gb2N1cywhMCl9OnZvaWQgMCksRmUobixcImJsdXJcIix0P2Z1bmN0aW9uKCl7dmFyIGU7bnVsbD09PShlPW4uYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1lfHxlLnNldEFjdGl2ZShWZS5Gb2N1cywhMSl9OnZvaWQgMCl9KSksaG92ZXI6ZHQoKGZ1bmN0aW9uKGUpe3ZhciB0PWUub25Ib3ZlclN0YXJ0LG49ZS5vbkhvdmVyRW5kLHI9ZS53aGlsZUhvdmVyLG89ZS52aXN1YWxFbGVtZW50O3J0KG8sXCJwb2ludGVyZW50ZXJcIix0fHxyP2N0KG8sITAsdCk6dm9pZCAwKSxydChvLFwicG9pbnRlcmxlYXZlXCIsbnx8cj9jdChvLCExLG4pOnZvaWQgMCl9KSl9O2Z1bmN0aW9uIGh0KGUsdCl7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuITE7dmFyIG49dC5sZW5ndGg7aWYobiE9PWUubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgcj0wO3I8bjtyKyspaWYodFtyXSE9PWVbcl0pcmV0dXJuITE7cmV0dXJuITB9dmFyIHZ0PWZ1bmN0aW9uKGUpe3JldHVybiAxZTMqZX0sZ3Q9e2xpbmVhcjpsLmxpbmVhcixlYXNlSW46bC5lYXNlSW4sZWFzZUluT3V0OmwuZWFzZUluT3V0LGVhc2VPdXQ6bC5lYXNlT3V0LGNpcmNJbjpsLmNpcmNJbixjaXJjSW5PdXQ6bC5jaXJjSW5PdXQsY2lyY091dDpsLmNpcmNPdXQsYmFja0luOmwuYmFja0luLGJhY2tJbk91dDpsLmJhY2tJbk91dCxiYWNrT3V0OmwuYmFja091dCxhbnRpY2lwYXRlOmwuYW50aWNpcGF0ZSxib3VuY2VJbjpsLmJvdW5jZUluLGJvdW5jZUluT3V0OmwuYm91bmNlSW5PdXQsYm91bmNlT3V0OmwuYm91bmNlT3V0fSxDdD1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtpLmludmFyaWFudCg0PT09ZS5sZW5ndGgsXCJDdWJpYyBiZXppZXIgYXJyYXlzIG11c3QgY29udGFpbiBmb3VyIG51bWVyaWNhbCB2YWx1ZXMuXCIpO3ZhciB0PXIuX19yZWFkKGUsNCksbj10WzBdLG89dFsxXSxhPXRbMl0scz10WzNdO3JldHVybiBsLmN1YmljQmV6aWVyKG4sbyxhLHMpfXJldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlPyhpLmludmFyaWFudCh2b2lkIDAhPT1ndFtlXSxcIkludmFsaWQgZWFzaW5nIHR5cGUgJ1wiK2UrXCInXCIpLGd0W2VdKTplfSxtdD1mdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmXCJudW1iZXJcIiE9dHlwZW9mIGVbMF19LHl0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIShcInpJbmRleFwiPT09ZXx8XCJudW1iZXJcIiE9dHlwZW9mIHQmJiFBcnJheS5pc0FycmF5KHQpJiYoXCJzdHJpbmdcIiE9dHlwZW9mIHR8fCFhLmNvbXBsZXgudGVzdCh0KXx8dC5zdGFydHNXaXRoKFwidXJsKFwiKSkpfSx3dD1mdW5jdGlvbigpe3JldHVybnt0eXBlOlwic3ByaW5nXCIsc3RpZmZuZXNzOjUwMCxkYW1waW5nOjI1LHJlc3REZWx0YTouNSxyZXN0U3BlZWQ6MTB9fSxidD1mdW5jdGlvbihlKXtyZXR1cm57dHlwZTpcInNwcmluZ1wiLHN0aWZmbmVzczo1NTAsZGFtcGluZzowPT09ZT8yKk1hdGguc3FydCg1NTApOjMwLHJlc3REZWx0YTouMDEscmVzdFNwZWVkOjEwfX0seHQ9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpcImtleWZyYW1lc1wiLGVhc2U6XCJsaW5lYXJcIixkdXJhdGlvbjouM319LF90PWZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOlwia2V5ZnJhbWVzXCIsZHVyYXRpb246LjgsdmFsdWVzOmV9fSxMdD17eDp3dCx5Ond0LHo6d3Qscm90YXRlOnd0LHJvdGF0ZVg6d3Qscm90YXRlWTp3dCxyb3RhdGVaOnd0LHNjYWxlWDpidCxzY2FsZVk6YnQsc2NhbGU6YnQsb3BhY2l0eTp4dCxiYWNrZ3JvdW5kQ29sb3I6eHQsY29sb3I6eHQsZGVmYXVsdDpidH0sT3Q9ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gbj1rZSh0KT9fdDpMdFtlXXx8THQuZGVmYXVsdCxyLl9fYXNzaWduKHt0bzp0fSxuKHQpKX0sRXQ9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGllKSx7Y29sb3I6YS5jb2xvcixiYWNrZ3JvdW5kQ29sb3I6YS5jb2xvcixvdXRsaW5lQ29sb3I6YS5jb2xvcixmaWxsOmEuY29sb3Isc3Ryb2tlOmEuY29sb3IsYm9yZGVyQ29sb3I6YS5jb2xvcixib3JkZXJUb3BDb2xvcjphLmNvbG9yLGJvcmRlclJpZ2h0Q29sb3I6YS5jb2xvcixib3JkZXJCb3R0b21Db2xvcjphLmNvbG9yLGJvcmRlckxlZnRDb2xvcjphLmNvbG9yLGZpbHRlcjphLmZpbHRlcixXZWJraXRGaWx0ZXI6YS5maWx0ZXJ9KSxTdD1mdW5jdGlvbihlKXtyZXR1cm4gRXRbZV19O2Z1bmN0aW9uIE10KGUsdCl7dmFyIG4scj1TdChlKTtyZXR1cm4gciE9PWEuZmlsdGVyJiYocj1hLmNvbXBsZXgpLG51bGw9PT0obj1yLmdldEFuaW1hdGFibGVOb25lKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jYWxsKHIsdCl9dmFyIGp0PSExO2Z1bmN0aW9uIGt0KGUpe3JldHVybiAwPT09ZXx8XCJzdHJpbmdcIj09dHlwZW9mIGUmJjA9PT1wYXJzZUZsb2F0KGUpJiYtMT09PWUuaW5kZXhPZihcIiBcIil9ZnVuY3Rpb24gUnQoZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGU/MDpNdChcIlwiLGUpfWZ1bmN0aW9uIFB0KGUsdCl7cmV0dXJuIGVbdF18fGUuZGVmYXVsdHx8ZX1mdW5jdGlvbiBBdChlLHQsbixvKXtyZXR1cm4gdm9pZCAwPT09byYmKG89e30pLHQuc3RhcnQoKGZ1bmN0aW9uKGEpe3ZhciBzLGMsdT1mdW5jdGlvbihlLHQsbixvLGEpe3ZhciBzLGM9UHQobyxlKSx1PW51bGwhPT0ocz1jLmZyb20pJiZ2b2lkIDAhPT1zP3M6dC5nZXQoKSxmPXl0KGUsbik7XCJub25lXCI9PT11JiZmJiZcInN0cmluZ1wiPT10eXBlb2Ygbj91PU10KGUsbik6a3QodSkmJlwic3RyaW5nXCI9PXR5cGVvZiBuP3U9UnQobik6IUFycmF5LmlzQXJyYXkobikmJmt0KG4pJiZcInN0cmluZ1wiPT10eXBlb2YgdSYmKG49UnQodSkpO3ZhciBkPXl0KGUsdSk7cmV0dXJuIGkud2FybmluZyhkPT09ZixcIllvdSBhcmUgdHJ5aW5nIHRvIGFuaW1hdGUgXCIrZSsnIGZyb20gXCInK3UrJ1wiIHRvIFwiJytuKydcIi4gJyt1K1wiIGlzIG5vdCBhbiBhbmltYXRhYmxlIHZhbHVlIC0gdG8gZW5hYmxlIHRoaXMgYW5pbWF0aW9uIHNldCBcIit1K1wiIHRvIGEgdmFsdWUgYW5pbWF0YWJsZSB0byBcIituK1wiIHZpYSB0aGUgYHN0eWxlYCBwcm9wZXJ0eS5cIiksZCYmZiYmITEhPT1jLnR5cGU/ZnVuY3Rpb24oKXt2YXIgbz17ZnJvbTp1LHRvOm4sdmVsb2NpdHk6dC5nZXRWZWxvY2l0eSgpLG9uQ29tcGxldGU6YSxvblVwZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5zZXQoZSl9fTtyZXR1cm5cImluZXJ0aWFcIj09PWMudHlwZXx8XCJkZWNheVwiPT09Yy50eXBlP2wuaW5lcnRpYShyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbyksYykpOmwuYW5pbWF0ZShyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sZnVuY3Rpb24oZSx0LG4pe3ZhciBvO3JldHVybiBBcnJheS5pc0FycmF5KHQudG8pJiYobnVsbCE9PShvPWUuZHVyYXRpb24pJiZ2b2lkIDAhPT1vfHwoZS5kdXJhdGlvbj0uOCkpLGZ1bmN0aW9uKGUpe0FycmF5LmlzQXJyYXkoZS50bykmJm51bGw9PT1lLnRvWzBdJiYoZS50bz1yLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQoZS50bykpLGUudG9bMF09ZS5mcm9tKX0odCksZnVuY3Rpb24oZSl7ZS53aGVuLGUuZGVsYXksZS5kZWxheUNoaWxkcmVuLGUuc3RhZ2dlckNoaWxkcmVuLGUuc3RhZ2dlckRpcmVjdGlvbixlLnJlcGVhdCxlLnJlcGVhdFR5cGUsZS5yZXBlYXREZWxheSxlLmZyb207dmFyIHQ9ci5fX3Jlc3QoZSxbXCJ3aGVuXCIsXCJkZWxheVwiLFwiZGVsYXlDaGlsZHJlblwiLFwic3RhZ2dlckNoaWxkcmVuXCIsXCJzdGFnZ2VyRGlyZWN0aW9uXCIsXCJyZXBlYXRcIixcInJlcGVhdFR5cGVcIixcInJlcGVhdERlbGF5XCIsXCJmcm9tXCJdKTtyZXR1cm4hIU9iamVjdC5rZXlzKHQpLmxlbmd0aH0oZSl8fChlPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxlKSxPdChuLHQudG8pKSksci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHQpLGZ1bmN0aW9uKGUpe3ZhciB0PWUuZWFzZSxuPWUudGltZXMsbz1lLnlveW8sYT1lLmZsaXAsbD1lLmxvb3Ascz1yLl9fcmVzdChlLFtcImVhc2VcIixcInRpbWVzXCIsXCJ5b3lvXCIsXCJmbGlwXCIsXCJsb29wXCJdKSxjPXIuX19hc3NpZ24oe30scyk7cmV0dXJuIG4mJihjLm9mZnNldD1uKSxzLmR1cmF0aW9uJiYoYy5kdXJhdGlvbj12dChzLmR1cmF0aW9uKSkscy5yZXBlYXREZWxheSYmKGMucmVwZWF0RGVsYXk9dnQocy5yZXBlYXREZWxheSkpLHQmJihjLmVhc2U9bXQodCk/dC5tYXAoQ3QpOkN0KHQpKSxcInR3ZWVuXCI9PT1zLnR5cGUmJihjLnR5cGU9XCJrZXlmcmFtZXNcIiksKG98fGx8fGEpJiYoaS53YXJuaW5nKCFqdCxcInlveW8sIGxvb3AgYW5kIGZsaXAgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgQVBJLiBSZXBsYWNlIHdpdGggcmVwZWF0IGFuZCByZXBlYXRUeXBlIG9wdGlvbnMuXCIpLGp0PSEwLG8/Yy5yZXBlYXRUeXBlPVwicmV2ZXJzZVwiOmw/Yy5yZXBlYXRUeXBlPVwibG9vcFwiOmEmJihjLnJlcGVhdFR5cGU9XCJtaXJyb3JcIiksYy5yZXBlYXQ9bHx8b3x8YXx8cy5yZXBlYXQpLFwic3ByaW5nXCIhPT1zLnR5cGUmJihjLnR5cGU9XCJrZXlmcmFtZXNcIiksY30oZSkpfShjLG8sZSkpLHtvblVwZGF0ZTpmdW5jdGlvbihlKXt2YXIgdDtvLm9uVXBkYXRlKGUpLG51bGw9PT0odD1jLm9uVXBkYXRlKXx8dm9pZCAwPT09dHx8dC5jYWxsKGMsZSl9LG9uQ29tcGxldGU6ZnVuY3Rpb24oKXt2YXIgZTtvLm9uQ29tcGxldGUoKSxudWxsPT09KGU9Yy5vbkNvbXBsZXRlKXx8dm9pZCAwPT09ZXx8ZS5jYWxsKGMpfX0pKX06ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gdC5zZXQobiksYSgpLG51bGw9PT0oZT1udWxsPT1jP3ZvaWQgMDpjLm9uQ29tcGxldGUpfHx2b2lkIDA9PT1lfHxlLmNhbGwoYykse3N0b3A6ZnVuY3Rpb24oKXt9fX19KGUsdCxuLG8sYSksZj1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBudWxsIT09KG49KFB0KGUsdCl8fHt9KS5kZWxheSkmJnZvaWQgMCE9PW4/bjowfShvLGUpLGQ9ZnVuY3Rpb24oKXtyZXR1cm4gYz11KCl9O3JldHVybiBmP3M9c2V0VGltZW91dChkLHZ0KGYpKTpkKCksZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQocyksbnVsbD09Y3x8Yy5zdG9wKCl9fSkpfWZ1bmN0aW9uIEl0KGUsdCl7LTE9PT1lLmluZGV4T2YodCkmJmUucHVzaCh0KX1mdW5jdGlvbiBUdChlLHQpe3ZhciBuPWUuaW5kZXhPZih0KTtuPi0xJiZlLnNwbGljZShuLDEpfXZhciBIdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLnN1YnNjcmlwdGlvbnM9W119cmV0dXJuIGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBJdCh0aGlzLnN1YnNjcmlwdGlvbnMsZSksZnVuY3Rpb24oKXtyZXR1cm4gVHQodC5zdWJzY3JpcHRpb25zLGUpfX0sZS5wcm90b3R5cGUubm90aWZ5PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLnN1YnNjcmlwdGlvbnMubGVuZ3RoO2lmKHIpaWYoMT09PXIpdGhpcy5zdWJzY3JpcHRpb25zWzBdKGUsdCxuKTtlbHNlIGZvcih2YXIgbz0wO288cjtvKyspe3ZhciBpPXRoaXMuc3Vic2NyaXB0aW9uc1tvXTtpJiZpKGUsdCxuKX19LGUucHJvdG90eXBlLmdldFNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdWJzY3JpcHRpb25zLmxlbmd0aH0sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnN1YnNjcmlwdGlvbnMubGVuZ3RoPTB9LGV9KCksVnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciB0LG49dGhpczt0aGlzLnRpbWVEZWx0YT0wLHRoaXMubGFzdFVwZGF0ZWQ9MCx0aGlzLnVwZGF0ZVN1YnNjcmliZXJzPW5ldyBIdCx0aGlzLnZlbG9jaXR5VXBkYXRlU3Vic2NyaWJlcnM9bmV3IEh0LHRoaXMucmVuZGVyU3Vic2NyaWJlcnM9bmV3IEh0LHRoaXMuY2FuVHJhY2tWZWxvY2l0eT0hMSx0aGlzLnVwZGF0ZUFuZE5vdGlmeT1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PSEwKSxuLnByZXY9bi5jdXJyZW50LG4uY3VycmVudD1lO3ZhciByPXMuZ2V0RnJhbWVEYXRhKCksbz1yLmRlbHRhLGk9ci50aW1lc3RhbXA7bi5sYXN0VXBkYXRlZCE9PWkmJihuLnRpbWVEZWx0YT1vLG4ubGFzdFVwZGF0ZWQ9aSxkLmRlZmF1bHQucG9zdFJlbmRlcihuLnNjaGVkdWxlVmVsb2NpdHlDaGVjaykpLG4ucHJldiE9PW4uY3VycmVudCYmbi51cGRhdGVTdWJzY3JpYmVycy5ub3RpZnkobi5jdXJyZW50KSxuLnZlbG9jaXR5VXBkYXRlU3Vic2NyaWJlcnMuZ2V0U2l6ZSgpJiZuLnZlbG9jaXR5VXBkYXRlU3Vic2NyaWJlcnMubm90aWZ5KG4uZ2V0VmVsb2NpdHkoKSksdCYmbi5yZW5kZXJTdWJzY3JpYmVycy5ub3RpZnkobi5jdXJyZW50KX0sdGhpcy5zY2hlZHVsZVZlbG9jaXR5Q2hlY2s9ZnVuY3Rpb24oKXtyZXR1cm4gZC5kZWZhdWx0LnBvc3RSZW5kZXIobi52ZWxvY2l0eUNoZWNrKX0sdGhpcy52ZWxvY2l0eUNoZWNrPWZ1bmN0aW9uKGUpe2UudGltZXN0YW1wIT09bi5sYXN0VXBkYXRlZCYmKG4ucHJldj1uLmN1cnJlbnQsbi52ZWxvY2l0eVVwZGF0ZVN1YnNjcmliZXJzLm5vdGlmeShuLmdldFZlbG9jaXR5KCkpKX0sdGhpcy5oYXNBbmltYXRlZD0hMSx0aGlzLnByZXY9dGhpcy5jdXJyZW50PWUsdGhpcy5jYW5UcmFja1ZlbG9jaXR5PSh0PXRoaXMuY3VycmVudCwhaXNOYU4ocGFyc2VGbG9hdCh0KSkpfXJldHVybiBlLnByb3RvdHlwZS5vbkNoYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy51cGRhdGVTdWJzY3JpYmVycy5hZGQoZSl9LGUucHJvdG90eXBlLmNsZWFyTGlzdGVuZXJzPWZ1bmN0aW9uKCl7dGhpcy51cGRhdGVTdWJzY3JpYmVycy5jbGVhcigpfSxlLnByb3RvdHlwZS5vblJlbmRlclJlcXVlc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGUodGhpcy5nZXQoKSksdGhpcy5yZW5kZXJTdWJzY3JpYmVycy5hZGQoZSl9LGUucHJvdG90eXBlLmF0dGFjaD1mdW5jdGlvbihlKXt0aGlzLnBhc3NpdmVFZmZlY3Q9ZX0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITApLHQmJnRoaXMucGFzc2l2ZUVmZmVjdD90aGlzLnBhc3NpdmVFZmZlY3QoZSx0aGlzLnVwZGF0ZUFuZE5vdGlmeSk6dGhpcy51cGRhdGVBbmROb3RpZnkoZSx0KX0sZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudH0sZS5wcm90b3R5cGUuZ2V0UHJldmlvdXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2fSxlLnByb3RvdHlwZS5nZXRWZWxvY2l0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhblRyYWNrVmVsb2NpdHk/bC52ZWxvY2l0eVBlclNlY29uZChwYXJzZUZsb2F0KHRoaXMuY3VycmVudCktcGFyc2VGbG9hdCh0aGlzLnByZXYpLHRoaXMudGltZURlbHRhKTowfSxlLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLnN0b3AoKSxuZXcgUHJvbWlzZSgoZnVuY3Rpb24obil7dC5oYXNBbmltYXRlZD0hMCx0LnN0b3BBbmltYXRpb249ZShuKX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiB0LmNsZWFyQW5pbWF0aW9uKCl9KSl9LGUucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLnN0b3BBbmltYXRpb24mJnRoaXMuc3RvcEFuaW1hdGlvbigpLHRoaXMuY2xlYXJBbmltYXRpb24oKX0sZS5wcm90b3R5cGUuaXNBbmltYXRpbmc9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuc3RvcEFuaW1hdGlvbn0sZS5wcm90b3R5cGUuY2xlYXJBbmltYXRpb249ZnVuY3Rpb24oKXt0aGlzLnN0b3BBbmltYXRpb249bnVsbH0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMudXBkYXRlU3Vic2NyaWJlcnMuY2xlYXIoKSx0aGlzLnJlbmRlclN1YnNjcmliZXJzLmNsZWFyKCksdGhpcy5zdG9wKCl9LGV9KCk7ZnVuY3Rpb24gQnQoZSl7cmV0dXJuIG5ldyBWdChlKX12YXIgRHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LnRlc3QoZSl9fSxadD1bYS5udW1iZXIsYS5weCxhLnBlcmNlbnQsYS5kZWdyZWVzLGEudncsYS52aCx7dGVzdDpmdW5jdGlvbihlKXtyZXR1cm5cImF1dG9cIj09PWV9LHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybiBlfX1dLCR0PWZ1bmN0aW9uKGUpe3JldHVybiBadC5maW5kKER0KGUpKX0sRnQ9ci5fX3NwcmVhZEFycmF5KHIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZChadCkpLFthLmNvbG9yLGEuY29tcGxleF0pO2Z1bmN0aW9uIE50KGUsdCxuKXtlLmhhc1ZhbHVlKHQpP2UuZ2V0VmFsdWUodCkuc2V0KG4pOmUuYWRkVmFsdWUodCxCdChuKSl9ZnVuY3Rpb24gVXQoZSx0KXt2YXIgbj1IKGUsdCksbz1uP2UubWFrZVRhcmdldEFuaW1hdGFibGUobiwhMSk6e30saT1vLnRyYW5zaXRpb25FbmQsYT12b2lkIDA9PT1pP3t9Omk7by50cmFuc2l0aW9uO3ZhciBsPXIuX19yZXN0KG8sW1widHJhbnNpdGlvbkVuZFwiLFwidHJhbnNpdGlvblwiXSk7Zm9yKHZhciBzIGluIGw9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGwpLGEpKU50KGUscyxQZShsW3NdKSl9ZnVuY3Rpb24gV3QoZSx0KXtyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQodCkpLnJldmVyc2UoKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcixvPWUuZ2V0VmFyaWFudChuKTtvJiZVdChlLG8pLG51bGw9PT0ocj1lLnZhcmlhbnRDaGlsZHJlbil8fHZvaWQgMD09PXJ8fHIuZm9yRWFjaCgoZnVuY3Rpb24oZSl7V3QoZSx0KX0pKX0pKX1mdW5jdGlvbiB6dChlLHQsbil7dmFyIHIsbyxpLGwscyxjPU9iamVjdC5rZXlzKHQpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIWUuaGFzVmFsdWUodCl9KSksdT1jLmxlbmd0aDtpZih1KWZvcih2YXIgZj0wO2Y8dTtmKyspe3ZhciBkPWNbZl0scD10W2RdLGg9bnVsbDtBcnJheS5pc0FycmF5KHApJiYoaD1wWzBdKSxudWxsPT09aCYmKGg9bnVsbCE9PShvPW51bGwhPT0ocj1uW2RdKSYmdm9pZCAwIT09cj9yOmUucmVhZFZhbHVlKGQpKSYmdm9pZCAwIT09bz9vOnRbZF0pLG51bGwhPWgmJihcInN0cmluZ1wiPT10eXBlb2YgaCYmL15cXC0/XFxkKlxcLj9cXGQrJC8udGVzdChoKT9oPXBhcnNlRmxvYXQoaCk6KHM9aCwhRnQuZmluZChEdChzKSkmJmEuY29tcGxleC50ZXN0KHApJiYoaD1NdChkLHApKSksZS5hZGRWYWx1ZShkLEJ0KGgpKSxudWxsIT09KGk9KGw9bilbZF0pJiZ2b2lkIDAhPT1pfHwobFtkXT1oKSxlLnNldEJhc2VUYXJnZXQoZCxoKSl9fWZ1bmN0aW9uIEd0KGUsdCl7aWYodClyZXR1cm4odFtlXXx8dC5kZWZhdWx0fHx0KS5mcm9tfWZ1bmN0aW9uIHF0KGUsdCxuKXt2YXIgcixvLGk9e307Zm9yKHZhciBhIGluIGUpaVthXT1udWxsIT09KHI9R3QoYSx0KSkmJnZvaWQgMCE9PXI/cjpudWxsPT09KG89bi5nZXRWYWx1ZShhKSl8fHZvaWQgMD09PW8/dm9pZCAwOm8uZ2V0KCk7cmV0dXJuIGl9ZnVuY3Rpb24gWXQoZSx0LG4pe3ZhciByO2lmKHZvaWQgMD09PW4mJihuPXt9KSxlLm5vdGlmeUFuaW1hdGlvblN0YXJ0KCksQXJyYXkuaXNBcnJheSh0KSl7dmFyIG89dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBLdChlLHQsbil9KSk7cj1Qcm9taXNlLmFsbChvKX1lbHNlIGlmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXI9S3QoZSx0LG4pO2Vsc2V7dmFyIGk9XCJmdW5jdGlvblwiPT10eXBlb2YgdD9IKGUsdCxuLmN1c3RvbSk6dDtyPVh0KGUsaSxuKX1yZXR1cm4gci50aGVuKChmdW5jdGlvbigpe3JldHVybiBlLm5vdGlmeUFuaW1hdGlvbkNvbXBsZXRlKHQpfSkpfWZ1bmN0aW9uIEt0KGUsdCxuKXt2YXIgbzt2b2lkIDA9PT1uJiYobj17fSk7dmFyIGk9SChlLHQsbi5jdXN0b20pLGE9KGl8fHt9KS50cmFuc2l0aW9uLGw9dm9pZCAwPT09YT9lLmdldERlZmF1bHRUcmFuc2l0aW9uKCl8fHt9OmE7bi50cmFuc2l0aW9uT3ZlcnJpZGUmJihsPW4udHJhbnNpdGlvbk92ZXJyaWRlKTt2YXIgcz1pP2Z1bmN0aW9uKCl7cmV0dXJuIFh0KGUsaSxuKX06ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LGM9KG51bGw9PT0obz1lLnZhcmlhbnRDaGlsZHJlbil8fHZvaWQgMD09PW8/dm9pZCAwOm8uc2l6ZSk/ZnVuY3Rpb24obyl7dm9pZCAwPT09byYmKG89MCk7dmFyIGk9bC5kZWxheUNoaWxkcmVuLGE9dm9pZCAwPT09aT8wOmkscz1sLnN0YWdnZXJDaGlsZHJlbixjPWwuc3RhZ2dlckRpcmVjdGlvbjtyZXR1cm4gZnVuY3Rpb24oZSx0LG4sbyxpLGEpe3ZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PW8mJihvPTApLHZvaWQgMD09PWkmJihpPTEpO3ZhciBsPVtdLHM9KGUudmFyaWFudENoaWxkcmVuLnNpemUtMSkqbyxjPTE9PT1pP2Z1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0wKSxlKm99OmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0wKSxzLWUqb307cmV0dXJuIEFycmF5LmZyb20oZS52YXJpYW50Q2hpbGRyZW4pLnNvcnQoSnQpLmZvckVhY2goKGZ1bmN0aW9uKGUsbyl7bC5wdXNoKEt0KGUsdCxyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sYSkse2RlbGF5Om4rYyhvKX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBlLm5vdGlmeUFuaW1hdGlvbkNvbXBsZXRlKHQpfSkpKX0pKSxQcm9taXNlLmFsbChsKX0oZSx0LGErbyxzLGMsbil9OmZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSx1PWwud2hlbjtpZih1KXt2YXIgZj1yLl9fcmVhZChcImJlZm9yZUNoaWxkcmVuXCI9PT11P1tzLGNdOltjLHNdLDIpLGQ9ZlswXSxwPWZbMV07cmV0dXJuIGQoKS50aGVuKHApfXJldHVybiBQcm9taXNlLmFsbChbcygpLGMobi5kZWxheSldKX1mdW5jdGlvbiBYdChlLHQsbil7dmFyIG8saT12b2lkIDA9PT1uP3t9Om4sYT1pLmRlbGF5LGw9dm9pZCAwPT09YT8wOmEscz1pLnRyYW5zaXRpb25PdmVycmlkZSxjPWkudHlwZSx1PWUubWFrZVRhcmdldEFuaW1hdGFibGUodCksZj11LnRyYW5zaXRpb24sZD12b2lkIDA9PT1mP2UuZ2V0RGVmYXVsdFRyYW5zaXRpb24oKTpmLHA9dS50cmFuc2l0aW9uRW5kLGg9ci5fX3Jlc3QodSxbXCJ0cmFuc2l0aW9uXCIsXCJ0cmFuc2l0aW9uRW5kXCJdKTtzJiYoZD1zKTt2YXIgdj1bXSxnPWMmJihudWxsPT09KG89ZS5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PW8/dm9pZCAwOm8uZ2V0U3RhdGUoKVtjXSk7Zm9yKHZhciBDIGluIGgpe3ZhciBtPWUuZ2V0VmFsdWUoQykseT1oW0NdO2lmKCEoIW18fHZvaWQgMD09PXl8fGcmJlF0KGcsQykpKXt2YXIgdz1BdChDLG0seSxyLl9fYXNzaWduKHtkZWxheTpsfSxkKSk7di5wdXNoKHcpfX1yZXR1cm4gUHJvbWlzZS5hbGwodikudGhlbigoZnVuY3Rpb24oKXtwJiZVdChlLHApfSkpfWZ1bmN0aW9uIEp0KGUsdCl7cmV0dXJuIGUuc29ydE5vZGVQb3NpdGlvbih0KX1mdW5jdGlvbiBRdChlLHQpe3ZhciBuPWUucHJvdGVjdGVkS2V5cyxyPWUubmVlZHNBbmltYXRpbmcsbz1uLmhhc093blByb3BlcnR5KHQpJiYhMCE9PXJbdF07cmV0dXJuIHJbdF09ITEsb312YXIgZW49W1ZlLkFuaW1hdGUsVmUuSG92ZXIsVmUuVGFwLFZlLkRyYWcsVmUuRm9jdXMsVmUuRXhpdF0sdG49ci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKGVuKSkucmV2ZXJzZSgpLG5uPWVuLmxlbmd0aDtmdW5jdGlvbiBybihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLHtpc0FjdGl2ZTplLHByb3RlY3RlZEtleXM6e30sbmVlZHNBbmltYXRpbmc6e30scHJldlJlc29sdmVkVmFsdWVzOnt9fX12YXIgb249e2FuaW1hdGlvbjpkdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS52aXN1YWxFbGVtZW50LG49ZS5hbmltYXRlO3QuYW5pbWF0aW9uU3RhdGV8fCh0LmFuaW1hdGlvblN0YXRlPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBQcm9taXNlLmFsbCh0Lm1hcCgoZnVuY3Rpb24odCl7dmFyIG49dC5hbmltYXRpb24scj10Lm9wdGlvbnM7cmV0dXJuIFl0KGUsbixyKX0pKSl9fShlKSxvPSgodD17fSlbVmUuQW5pbWF0ZV09cm4oITApLHRbVmUuSG92ZXJdPXJuKCksdFtWZS5UYXBdPXJuKCksdFtWZS5EcmFnXT1ybigpLHRbVmUuRm9jdXNdPXJuKCksdFtWZS5FeGl0XT1ybigpLHQpLGk9e30sYT0hMCxsPWZ1bmN0aW9uKHQsbil7dmFyIG89SChlLG4pO2lmKG8pe28udHJhbnNpdGlvbjt2YXIgaT1vLnRyYW5zaXRpb25FbmQsYT1yLl9fcmVzdChvLFtcInRyYW5zaXRpb25cIixcInRyYW5zaXRpb25FbmRcIl0pO3Q9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdCksYSksaSl9cmV0dXJuIHR9O2Z1bmN0aW9uIHModCxzKXtmb3IodmFyIGMsdT1lLmdldFByb3BzKCksZj1lLmdldFZhcmlhbnRDb250ZXh0KCEwKXx8e30sZD1bXSxwPW5ldyBTZXQsaD17fSx2PTEvMCxnPWZ1bmN0aW9uKG4pe3ZhciBpPXRuW25dLGc9b1tpXSxDPW51bGwhPT0oYz11W2ldKSYmdm9pZCAwIT09Yz9jOmZbaV0sbT1JKEMpLHk9aT09PXM/Zy5pc0FjdGl2ZTpudWxsOyExPT09eSYmKHY9bik7dmFyIHc9Qz09PWZbaV0mJkMhPT11W2ldJiZtO2lmKHcmJmEmJmUubWFudWFsbHlBbmltYXRlT25Nb3VudCYmKHc9ITEpLGcucHJvdGVjdGVkS2V5cz1yLl9fYXNzaWduKHt9LGgpLCFnLmlzQWN0aXZlJiZudWxsPT09eXx8IUMmJiFnLnByZXZQcm9wfHxqZShDKXx8XCJib29sZWFuXCI9PXR5cGVvZiBDKXJldHVyblwiY29udGludWVcIjt2YXIgYj1mdW5jdGlvbihlLHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0P3QhPT1lOiEhQSh0KSYmIWh0KHQsZSl9KGcucHJldlByb3AsQyl8fGk9PT1zJiZnLmlzQWN0aXZlJiYhdyYmbXx8bj52JiZtLHg9QXJyYXkuaXNBcnJheShDKT9DOltDXSxfPXgucmVkdWNlKGwse30pOyExPT09eSYmKF89e30pO3ZhciBMPWcucHJldlJlc29sdmVkVmFsdWVzLE89dm9pZCAwPT09TD97fTpMLEU9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LE8pLF8pLFM9ZnVuY3Rpb24oZSl7Yj0hMCxwLmRlbGV0ZShlKSxnLm5lZWRzQW5pbWF0aW5nW2VdPSEwfTtmb3IodmFyIE0gaW4gRSl7dmFyIGo9X1tNXSxrPU9bTV07aC5oYXNPd25Qcm9wZXJ0eShNKXx8KGohPT1rP2tlKGopJiZrZShrKT9odChqLGspP2cucHJvdGVjdGVkS2V5c1tNXT0hMDpTKE0pOnZvaWQgMCE9PWo/UyhNKTpwLmFkZChNKTp2b2lkIDAhPT1qJiZwLmhhcyhNKT9TKE0pOmcucHJvdGVjdGVkS2V5c1tNXT0hMCl9Zy5wcmV2UHJvcD1DLGcucHJldlJlc29sdmVkVmFsdWVzPV8sZy5pc0FjdGl2ZSYmKGg9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGgpLF8pKSxhJiZlLmJsb2NrSW5pdGlhbEFuaW1hdGlvbiYmKGI9ITEpLGImJiF3JiZkLnB1c2guYXBwbHkoZCxyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQoeC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybnthbmltYXRpb246ZSxvcHRpb25zOnIuX19hc3NpZ24oe3R5cGU6aX0sdCl9fSkpKSkpfSxDPTA7QzxubjtDKyspZyhDKTtpZihpPXIuX19hc3NpZ24oe30saCkscC5zaXplKXt2YXIgbT17fTtwLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWUuZ2V0QmFzZVRhcmdldCh0KTt2b2lkIDAhPT1uJiYobVt0XT1uKX0pKSxkLnB1c2goe2FuaW1hdGlvbjptfSl9dmFyIHk9Qm9vbGVhbihkLmxlbmd0aCk7cmV0dXJuIGEmJiExPT09dS5pbml0aWFsJiYhZS5tYW51YWxseUFuaW1hdGVPbk1vdW50JiYoeT0hMSksYT0hMSx5P24oZCk6UHJvbWlzZS5yZXNvbHZlKCl9cmV0dXJue2lzQW5pbWF0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWlbZV19LGFuaW1hdGVDaGFuZ2VzOnMsc2V0QWN0aXZlOmZ1bmN0aW9uKHQsbixyKXt2YXIgaTtyZXR1cm4gb1t0XS5pc0FjdGl2ZT09PW4/UHJvbWlzZS5yZXNvbHZlKCk6KG51bGw9PT0oaT1lLnZhcmlhbnRDaGlsZHJlbil8fHZvaWQgMD09PWl8fGkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI7cmV0dXJuIG51bGw9PT0ocj1lLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zZXRBY3RpdmUodCxuKX0pKSxvW3RdLmlzQWN0aXZlPW4scyhyLHQpKX0sc2V0QW5pbWF0ZUZ1bmN0aW9uOmZ1bmN0aW9uKHQpe249dChlKX0sZ2V0U3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gb319fSh0KSksamUobikmJm8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiBuLnN1YnNjcmliZSh0KX0pLFtuXSl9KSksZXhpdDpkdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jdXN0b20sbj1lLnZpc3VhbEVsZW1lbnQsaT1yLl9fcmVhZChMKCksMiksYT1pWzBdLGw9aVsxXSxzPW8udXNlQ29udGV4dCh4KTtvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXt2YXIgZSxyLG89bnVsbD09PShlPW4uYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnNldEFjdGl2ZShWZS5FeGl0LCFhLHtjdXN0b206bnVsbCE9PShyPW51bGw9PXM/dm9pZCAwOnMuY3VzdG9tKSYmdm9pZCAwIT09cj9yOnR9KTshYSYmKG51bGw9PW98fG8udGhlbihsKSl9KSxbYV0pfSkpfSxhbj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4pe3ZhciBvPXRoaXMsaT0odm9pZCAwPT09bj97fTpuKS50cmFuc2Zvcm1QYWdlUG9pbnQ7aWYodGhpcy5zdGFydEV2ZW50PW51bGwsdGhpcy5sYXN0TW92ZUV2ZW50PW51bGwsdGhpcy5sYXN0TW92ZUV2ZW50SW5mbz1udWxsLHRoaXMuaGFuZGxlcnM9e30sdGhpcy51cGRhdGVQb2ludD1mdW5jdGlvbigpe2lmKG8ubGFzdE1vdmVFdmVudCYmby5sYXN0TW92ZUV2ZW50SW5mbyl7dmFyIGU9Y24oby5sYXN0TW92ZUV2ZW50SW5mbyxvLmhpc3RvcnkpLHQ9bnVsbCE9PW8uc3RhcnRFdmVudCxuPWwuZGlzdGFuY2UoZS5vZmZzZXQse3g6MCx5OjB9KT49MztpZih0fHxuKXt2YXIgaT1lLnBvaW50LGE9cy5nZXRGcmFtZURhdGEoKS50aW1lc3RhbXA7by5oaXN0b3J5LnB1c2goci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGkpLHt0aW1lc3RhbXA6YX0pKTt2YXIgYz1vLmhhbmRsZXJzLHU9Yy5vblN0YXJ0LGY9Yy5vbk1vdmU7dHx8KHUmJnUoby5sYXN0TW92ZUV2ZW50LGUpLG8uc3RhcnRFdmVudD1vLmxhc3RNb3ZlRXZlbnQpLGYmJmYoby5sYXN0TW92ZUV2ZW50LGUpfX19LHRoaXMuaGFuZGxlUG9pbnRlck1vdmU9ZnVuY3Rpb24oZSx0KXtvLmxhc3RNb3ZlRXZlbnQ9ZSxvLmxhc3RNb3ZlRXZlbnRJbmZvPWxuKHQsby50cmFuc2Zvcm1QYWdlUG9pbnQpLE5lKGUpJiYwPT09ZS5idXR0b25zP28uaGFuZGxlUG9pbnRlclVwKGUsdCk6ZC5kZWZhdWx0LnVwZGF0ZShvLnVwZGF0ZVBvaW50LCEwKX0sdGhpcy5oYW5kbGVQb2ludGVyVXA9ZnVuY3Rpb24oZSx0KXtvLmVuZCgpO3ZhciBuPW8uaGFuZGxlcnMscj1uLm9uRW5kLGk9bi5vblNlc3Npb25FbmQsYT1jbihsbih0LG8udHJhbnNmb3JtUGFnZVBvaW50KSxvLmhpc3RvcnkpO28uc3RhcnRFdmVudCYmciYmcihlLGEpLGkmJmkoZSxhKX0sIShVZShlKSYmZS50b3VjaGVzLmxlbmd0aD4xKSl7dGhpcy5oYW5kbGVycz10LHRoaXMudHJhbnNmb3JtUGFnZVBvaW50PWk7dmFyIGE9bG4ocWUoZSksdGhpcy50cmFuc2Zvcm1QYWdlUG9pbnQpLGM9YS5wb2ludCx1PXMuZ2V0RnJhbWVEYXRhKCkudGltZXN0YW1wO3RoaXMuaGlzdG9yeT1bci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGMpLHt0aW1lc3RhbXA6dX0pXTt2YXIgZj10Lm9uU2Vzc2lvblN0YXJ0O2YmJmYoZSxjbihhLHRoaXMuaGlzdG9yeSkpLHRoaXMucmVtb3ZlTGlzdGVuZXJzPWwucGlwZShudCh3aW5kb3csXCJwb2ludGVybW92ZVwiLHRoaXMuaGFuZGxlUG9pbnRlck1vdmUpLG50KHdpbmRvdyxcInBvaW50ZXJ1cFwiLHRoaXMuaGFuZGxlUG9pbnRlclVwKSxudCh3aW5kb3csXCJwb2ludGVyY2FuY2VsXCIsdGhpcy5oYW5kbGVQb2ludGVyVXApKX19cmV0dXJuIGUucHJvdG90eXBlLnVwZGF0ZUhhbmRsZXJzPWZ1bmN0aW9uKGUpe3RoaXMuaGFuZGxlcnM9ZX0sZS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVMaXN0ZW5lcnMmJnRoaXMucmVtb3ZlTGlzdGVuZXJzKCkscy5jYW5jZWxTeW5jLnVwZGF0ZSh0aGlzLnVwZGF0ZVBvaW50KX0sZX0oKTtmdW5jdGlvbiBsbihlLHQpe3JldHVybiB0P3twb2ludDp0KGUucG9pbnQpfTplfWZ1bmN0aW9uIHNuKGUsdCl7cmV0dXJue3g6ZS54LXQueCx5OmUueS10Lnl9fWZ1bmN0aW9uIGNuKGUsdCl7dmFyIG49ZS5wb2ludDtyZXR1cm57cG9pbnQ6bixkZWx0YTpzbihuLGZuKHQpKSxvZmZzZXQ6c24obix1bih0KSksdmVsb2NpdHk6ZG4odCwuMSl9fWZ1bmN0aW9uIHVuKGUpe3JldHVybiBlWzBdfWZ1bmN0aW9uIGZuKGUpe3JldHVybiBlW2UubGVuZ3RoLTFdfWZ1bmN0aW9uIGRuKGUsdCl7aWYoZS5sZW5ndGg8MilyZXR1cm57eDowLHk6MH07Zm9yKHZhciBuPWUubGVuZ3RoLTEscj1udWxsLG89Zm4oZSk7bj49MCYmKHI9ZVtuXSwhKG8udGltZXN0YW1wLXIudGltZXN0YW1wPnZ0KHQpKSk7KW4tLTtpZighcilyZXR1cm57eDowLHk6MH07dmFyIGk9KG8udGltZXN0YW1wLXIudGltZXN0YW1wKS8xZTM7aWYoMD09PWkpcmV0dXJue3g6MCx5OjB9O3ZhciBhPXt4OihvLngtci54KS9pLHk6KG8ueS1yLnkpL2l9O3JldHVybiBhLng9PT0xLzAmJihhLng9MCksYS55PT09MS8wJiYoYS55PTApLGF9ZnVuY3Rpb24gcG4oZSl7cmV0dXJuIGV9ZnVuY3Rpb24gaG4oZSl7dmFyIHQ9ZS50b3A7cmV0dXJue3g6e21pbjplLmxlZnQsbWF4OmUucmlnaHR9LHk6e21pbjp0LG1heDplLmJvdHRvbX19fXZhciB2bj17dHJhbnNsYXRlOjAsc2NhbGU6MSxvcmlnaW46MCxvcmlnaW5Qb2ludDowfTtmdW5jdGlvbiBnbigpe3JldHVybnt4OnIuX19hc3NpZ24oe30sdm4pLHk6ci5fX2Fzc2lnbih7fSx2bil9fWZ1bmN0aW9uIENuKGUpe3JldHVybltlKFwieFwiKSxlKFwieVwiKV19ZnVuY3Rpb24gbW4oZSx0LG4pe3JldHVybiB2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1uJiYobj0uMDEpLGwuZGlzdGFuY2UoZSx0KTxufWZ1bmN0aW9uIHluKGUpe3JldHVybiBlLm1heC1lLm1pbn1mdW5jdGlvbiB3bihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj0uNSksZS5vcmlnaW49cixlLm9yaWdpblBvaW50PWwubWl4KHQubWluLHQubWF4LGUub3JpZ2luKSxlLnNjYWxlPXluKG4pL3luKHQpLG1uKGUuc2NhbGUsMSwxZS00KSYmKGUuc2NhbGU9MSksZS50cmFuc2xhdGU9bC5taXgobi5taW4sbi5tYXgsZS5vcmlnaW4pLWUub3JpZ2luUG9pbnQsbW4oZS50cmFuc2xhdGUpJiYoZS50cmFuc2xhdGU9MCl9ZnVuY3Rpb24gYm4oZSx0LG4scil7d24oZS54LHQueCxuLngseG4oci5vcmlnaW5YKSksd24oZS55LHQueSxuLnkseG4oci5vcmlnaW5ZKSl9ZnVuY3Rpb24geG4oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGU/ZTouNX1mdW5jdGlvbiBfbihlLHQsbil7ZS5taW49bi5taW4rdC5taW4sZS5tYXg9ZS5taW4reW4odCl9ZnVuY3Rpb24gTG4oZSx0LG4pe3ZhciByPXQubWluLG89dC5tYXg7cmV0dXJuIHZvaWQgMCE9PXImJmU8cj9lPW4/bC5taXgocixlLG4ubWluKTpNYXRoLm1heChlLHIpOnZvaWQgMCE9PW8mJmU+byYmKGU9bj9sLm1peChvLGUsbi5tYXgpOk1hdGgubWluKGUsbykpLGV9ZnVuY3Rpb24gT24oZSx0LG4pe3JldHVybnttaW46dm9pZCAwIT09dD9lLm1pbit0OnZvaWQgMCxtYXg6dm9pZCAwIT09bj9lLm1heCtuLShlLm1heC1lLm1pbik6dm9pZCAwfX1mdW5jdGlvbiBFbihlLHQpe3ZhciBuLG89dC5taW4tZS5taW4saT10Lm1heC1lLm1heDtyZXR1cm4gdC5tYXgtdC5taW48ZS5tYXgtZS5taW4mJihvPShuPXIuX19yZWFkKFtpLG9dLDIpKVswXSxpPW5bMV0pLHttaW46ZS5taW4rbyxtYXg6ZS5taW4raX19ZnVuY3Rpb24gU24oZSx0LG4pe3JldHVybnttaW46TW4oZSx0KSxtYXg6TW4oZSxuKX19ZnVuY3Rpb24gTW4oZSx0KXt2YXIgbjtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT9lOm51bGwhPT0obj1lW3RdKSYmdm9pZCAwIT09bj9uOjB9ZnVuY3Rpb24gam4oZSx0KXtyZXR1cm4gaG4oZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnRvcCxyPWUubGVmdCxvPWUuYm90dG9tLGk9ZS5yaWdodDt2b2lkIDA9PT10JiYodD1wbik7dmFyIGE9dCh7eDpyLHk6bn0pLGw9dCh7eDppLHk6b30pO3JldHVybnt0b3A6YS55LGxlZnQ6YS54LGJvdHRvbTpsLnkscmlnaHQ6bC54fX0oZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0KSl9dmFyIGtuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZGVwdGgtdC5kZXB0aH07ZnVuY3Rpb24gUm4oZSl7cmV0dXJuIGUucHJvamVjdGlvbi5pc0VuYWJsZWR8fGUuc2hvdWxkUmVzZXRUcmFuc2Zvcm0oKX1mdW5jdGlvbiBQbihlLHQpe3ZvaWQgMD09PXQmJih0PVtdKTt2YXIgbj1lLnBhcmVudDtyZXR1cm4gbiYmUG4obix0KSxSbihlKSYmdC5wdXNoKGUpLHR9ZnVuY3Rpb24gQW4oZSl7aWYoIWUuc2hvdWxkUmVzZXRUcmFuc2Zvcm0oKSl7dmFyIHQsbj1lLmdldExheW91dFN0YXRlKCk7ZS5ub3RpZnlCZWZvcmVMYXlvdXRNZWFzdXJlKG4ubGF5b3V0KSxuLmlzSHlkcmF0ZWQ9ITAsbi5sYXlvdXQ9ZS5tZWFzdXJlVmlld3BvcnRCb3goKSxuLmxheW91dENvcnJlY3RlZD0odD1uLmxheW91dCx7eDpyLl9fYXNzaWduKHt9LHQueCkseTpyLl9fYXNzaWduKHt9LHQueSl9KSxlLm5vdGlmeUxheW91dE1lYXN1cmUobi5sYXlvdXQsZS5wcmV2Vmlld3BvcnRCb3h8fG4ubGF5b3V0KSxkLmRlZmF1bHQudXBkYXRlKChmdW5jdGlvbigpe3JldHVybiBlLnJlYmFzZVByb2plY3Rpb25UYXJnZXQoKX0pKX19ZnVuY3Rpb24gSW4oZSl7ZS5zaG91bGRSZXNldFRyYW5zZm9ybSgpfHwoZS5wcmV2Vmlld3BvcnRCb3g9ZS5tZWFzdXJlVmlld3BvcnRCb3goITEpLGUucmViYXNlUHJvamVjdGlvblRhcmdldCghMSxlLnByZXZWaWV3cG9ydEJveCkpfWZ1bmN0aW9uIFRuKGUsdCl7cmV0dXJue21pbjp0Lm1pbi1lLm1pbixtYXg6dC5tYXgtZS5taW59fWZ1bmN0aW9uIEhuKGUsdCl7cmV0dXJue3g6VG4oZS54LHQueCkseTpUbihlLnksdC55KX19ZnVuY3Rpb24gVm4oZSl7dmFyIHQ9ZS5nZXRQcm9wcygpLG49dC5kcmFnLHI9dC5fZHJhZ1g7cmV0dXJuIG4mJiFyfWZ1bmN0aW9uIEJuKGUsdCl7ZS5taW49dC5taW4sZS5tYXg9dC5tYXh9ZnVuY3Rpb24gRG4oZSx0LG4pe3JldHVybiBuK3QqKGUtbil9ZnVuY3Rpb24gWm4oZSx0LG4scixvKXtyZXR1cm4gdm9pZCAwIT09byYmKGU9RG4oZSxvLHIpKSxEbihlLG4scikrdH1mdW5jdGlvbiAkbihlLHQsbixyLG8pe3ZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PW4mJihuPTEpLGUubWluPVpuKGUubWluLHQsbixyLG8pLGUubWF4PVpuKGUubWF4LHQsbixyLG8pfWZ1bmN0aW9uIEZuKGUsdCl7dmFyIG49dC54LHI9dC55OyRuKGUueCxuLnRyYW5zbGF0ZSxuLnNjYWxlLG4ub3JpZ2luUG9pbnQpLCRuKGUueSxyLnRyYW5zbGF0ZSxyLnNjYWxlLHIub3JpZ2luUG9pbnQpfWZ1bmN0aW9uIE5uKGUsdCxuLG8pe3ZhciBpPXIuX19yZWFkKG8sMyksYT1pWzBdLHM9aVsxXSxjPWlbMl07ZS5taW49dC5taW4sZS5tYXg9dC5tYXg7dmFyIHU9dm9pZCAwIT09bltjXT9uW2NdOi41LGY9bC5taXgodC5taW4sdC5tYXgsdSk7JG4oZSxuW2FdLG5bc10sZixuLnNjYWxlKX12YXIgVW49W1wieFwiLFwic2NhbGVYXCIsXCJvcmlnaW5YXCJdLFduPVtcInlcIixcInNjYWxlWVwiLFwib3JpZ2luWVwiXTtmdW5jdGlvbiB6bihlLHQsbil7Tm4oZS54LHQueCxuLFVuKSxObihlLnksdC55LG4sV24pfWZ1bmN0aW9uIEduKGUsdCxuLHIsbyl7cmV0dXJuIGU9RG4oZS09dCwxL24sciksdm9pZCAwIT09byYmKGU9RG4oZSwxL28scikpLGV9ZnVuY3Rpb24gcW4oZSx0LG4pe3ZhciBvPXIuX19yZWFkKG4sMyksaT1vWzBdLGE9b1sxXSxzPW9bMl07IWZ1bmN0aW9uKGUsdCxuLHIsbyl7dm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09biYmKG49MSksdm9pZCAwPT09ciYmKHI9LjUpO3ZhciBpPWwubWl4KGUubWluLGUubWF4LHIpLXQ7ZS5taW49R24oZS5taW4sdCxuLGksbyksZS5tYXg9R24oZS5tYXgsdCxuLGksbyl9KGUsdFtpXSx0W2FdLHRbc10sdC5zY2FsZSl9ZnVuY3Rpb24gWW4oZSx0KXtxbihlLngsdCxVbikscW4oZS55LHQsV24pfXZhciBLbj1uZXcgU2V0O2Z1bmN0aW9uIFhuKGUsdCxuKXtlW25dfHwoZVtuXT1bXSksZVtuXS5wdXNoKHQpfWZ1bmN0aW9uIEpuKGUpe3JldHVybiBLbi5hZGQoZSksZnVuY3Rpb24oKXtyZXR1cm4gS24uZGVsZXRlKGUpfX1mdW5jdGlvbiBRbigpe2lmKEtuLnNpemUpe3ZhciBlPTAsdD1bW11dLG49W10scj1mdW5jdGlvbihuKXtyZXR1cm4gWG4odCxuLGUpfSxvPWZ1bmN0aW9uKHQpe1huKG4sdCxlKSxlKyt9O0tuLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QocixvKSxlPTB9KSksS24uY2xlYXIoKTtmb3IodmFyIGk9bi5sZW5ndGgsYT0wO2E8PWk7YSsrKXRbYV0mJnRbYV0uZm9yRWFjaCh0ciksblthXSYmblthXS5mb3JFYWNoKHRyKX19dmFyIGVyLHRyPWZ1bmN0aW9uKGUpe3JldHVybiBlKCl9LG5yPW5ldyBXZWFrTWFwLHJyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgdD1lLnZpc3VhbEVsZW1lbnQ7dGhpcy5pc0RyYWdnaW5nPSExLHRoaXMuY3VycmVudERpcmVjdGlvbj1udWxsLHRoaXMuY29uc3RyYWludHM9ITEsdGhpcy5lbGFzdGljPXt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fSx0aGlzLnByb3BzPXt9LHRoaXMuaGFzTXV0YXRlZENvbnN0cmFpbnRzPSExLHRoaXMuY3Vyc29yUHJvZ3Jlc3M9e3g6LjUseTouNX0sdGhpcy5vcmlnaW5Qb2ludD17fSx0aGlzLm9wZW5HbG9iYWxMb2NrPW51bGwsdGhpcy5wYW5TZXNzaW9uPW51bGwsdGhpcy52aXN1YWxFbGVtZW50PXQsdGhpcy52aXN1YWxFbGVtZW50LmVuYWJsZUxheW91dFByb2plY3Rpb24oKSxuci5zZXQodCx0aGlzKX1yZXR1cm4gZS5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLG89dm9pZCAwPT09dD97fTp0LGk9by5zbmFwVG9DdXJzb3IsYT12b2lkIDAhPT1pJiZpLGM9by5jdXJzb3JQcm9ncmVzcyx1PXRoaXMucHJvcHMudHJhbnNmb3JtUGFnZVBvaW50O3RoaXMucGFuU2Vzc2lvbj1uZXcgYW4oZSx7b25TZXNzaW9uU3RhcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ7bi5zdG9wTW90aW9uKCk7dmFyIG89ZnVuY3Rpb24oZSl7cmV0dXJuIHFlKGUsXCJjbGllbnRcIil9KGUpLnBvaW50O251bGw9PT0odD1uLmNhbmNlbExheW91dCl8fHZvaWQgMD09PXR8fHQuY2FsbChuKSxuLmNhbmNlbExheW91dD1KbigoZnVuY3Rpb24oZSx0KXt2YXIgaT1QbihuLnZpc3VhbEVsZW1lbnQpLHU9ZnVuY3Rpb24oZSl7dmFyIHQ9W10sbj1mdW5jdGlvbihlKXtSbihlKSYmdC5wdXNoKGUpLGUuY2hpbGRyZW4uZm9yRWFjaChuKX07cmV0dXJuIGUuY2hpbGRyZW4uZm9yRWFjaChuKSx0LnNvcnQoa24pfShuLnZpc3VhbEVsZW1lbnQpLGY9ci5fX3NwcmVhZEFycmF5KHIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZChpKSksci5fX3JlYWQodSkpLGQ9ITE7bi5pc0xheW91dERyYWcoKSYmbi52aXN1YWxFbGVtZW50LmxvY2tQcm9qZWN0aW9uVGFyZ2V0KCksdCgoZnVuY3Rpb24oKXtmLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc2V0VHJhbnNmb3JtKCl9KSl9KSksZSgoZnVuY3Rpb24oKXtBbihuLnZpc3VhbEVsZW1lbnQpLHUuZm9yRWFjaChBbil9KSksdCgoZnVuY3Rpb24oKXtmLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc3RvcmVUcmFuc2Zvcm0oKX0pKSxhJiYoZD1uLnNuYXBUb0N1cnNvcihvKSl9KSksZSgoZnVuY3Rpb24oKXtCb29sZWFuKG4uZ2V0QXhpc01vdGlvblZhbHVlKFwieFwiKSYmIW4uaXNFeHRlcm5hbERyYWcoKSl8fG4udmlzdWFsRWxlbWVudC5yZWJhc2VQcm9qZWN0aW9uVGFyZ2V0KCEwLG4udmlzdWFsRWxlbWVudC5tZWFzdXJlVmlld3BvcnRCb3goITEpKSxuLnZpc3VhbEVsZW1lbnQuc2NoZWR1bGVVcGRhdGVMYXlvdXRQcm9qZWN0aW9uKCk7dmFyIGU9bi52aXN1YWxFbGVtZW50LnByb2plY3Rpb247Q24oKGZ1bmN0aW9uKHQpe2lmKCFkKXt2YXIgcj1lLnRhcmdldFt0XSxpPXIubWluLGE9ci5tYXg7bi5jdXJzb3JQcm9ncmVzc1t0XT1jP2NbdF06bC5wcm9ncmVzcyhpLGEsb1t0XSl9dmFyIHM9bi5nZXRBeGlzTW90aW9uVmFsdWUodCk7cyYmKG4ub3JpZ2luUG9pbnRbdF09cy5nZXQoKSl9KSl9KSksdCgoZnVuY3Rpb24oKXtzLmZsdXNoU3luYy51cGRhdGUoKSxzLmZsdXNoU3luYy5wcmVSZW5kZXIoKSxzLmZsdXNoU3luYy5yZW5kZXIoKSxzLmZsdXNoU3luYy5wb3N0UmVuZGVyKCl9KSksZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5yZXNvbHZlRHJhZ0NvbnN0cmFpbnRzKCl9KSl9KSl9LG9uU3RhcnQ6ZnVuY3Rpb24oZSx0KXt2YXIgcixvLGksYT1uLnByb3BzLGw9YS5kcmFnLHM9YS5kcmFnUHJvcGFnYXRpb247KCFsfHxzfHwobi5vcGVuR2xvYmFsTG9jayYmbi5vcGVuR2xvYmFsTG9jaygpLG4ub3Blbkdsb2JhbExvY2s9bHQobCksbi5vcGVuR2xvYmFsTG9jaykpJiYoUW4oKSxuLmlzRHJhZ2dpbmc9ITAsbi5jdXJyZW50RGlyZWN0aW9uPW51bGwsbnVsbD09PShvPShyPW4ucHJvcHMpLm9uRHJhZ1N0YXJ0KXx8dm9pZCAwPT09b3x8by5jYWxsKHIsZSx0KSxudWxsPT09KGk9bi52aXN1YWxFbGVtZW50LmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09aXx8aS5zZXRBY3RpdmUoVmUuRHJhZywhMCkpfSxvbk1vdmU6ZnVuY3Rpb24oZSx0KXt2YXIgcixvLGksYSxsPW4ucHJvcHMscz1sLmRyYWdQcm9wYWdhdGlvbixjPWwuZHJhZ0RpcmVjdGlvbkxvY2s7aWYoc3x8bi5vcGVuR2xvYmFsTG9jayl7dmFyIHU9dC5vZmZzZXQ7aWYoYyYmbnVsbD09PW4uY3VycmVudERpcmVjdGlvbilyZXR1cm4gbi5jdXJyZW50RGlyZWN0aW9uPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9MTApO3ZhciBuPW51bGw7cmV0dXJuIE1hdGguYWJzKGUueSk+dD9uPVwieVwiOk1hdGguYWJzKGUueCk+dCYmKG49XCJ4XCIpLG59KHUpLHZvaWQobnVsbCE9PW4uY3VycmVudERpcmVjdGlvbiYmKG51bGw9PT0obz0ocj1uLnByb3BzKS5vbkRpcmVjdGlvbkxvY2spfHx2b2lkIDA9PT1vfHxvLmNhbGwocixuLmN1cnJlbnREaXJlY3Rpb24pKSk7bi51cGRhdGVBeGlzKFwieFwiLHQucG9pbnQsdSksbi51cGRhdGVBeGlzKFwieVwiLHQucG9pbnQsdSksbnVsbD09PShhPShpPW4ucHJvcHMpLm9uRHJhZyl8fHZvaWQgMD09PWF8fGEuY2FsbChpLGUsdCksZXI9ZX19LG9uU2Vzc2lvbkVuZDpmdW5jdGlvbihlLHQpe3JldHVybiBuLnN0b3AoZSx0KX19LHt0cmFuc2Zvcm1QYWdlUG9pbnQ6dX0pfSxlLnByb3RvdHlwZS5yZXNvbHZlRHJhZ0NvbnN0cmFpbnRzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LmRyYWdDb25zdHJhaW50cyxyPXQuZHJhZ0VsYXN0aWMsbz10aGlzLnZpc3VhbEVsZW1lbnQuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXRDb3JyZWN0ZWQ7dGhpcy5jb25zdHJhaW50cz0hIW4mJihQKG4pP3RoaXMucmVzb2x2ZVJlZkNvbnN0cmFpbnRzKG8sbik6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnRvcCxyPXQubGVmdCxvPXQuYm90dG9tLGk9dC5yaWdodDtyZXR1cm57eDpPbihlLngscixpKSx5Ok9uKGUueSxuLG8pfX0obyxuKSksdGhpcy5lbGFzdGljPWZ1bmN0aW9uKGUpe3JldHVybiExPT09ZT9lPTA6ITA9PT1lJiYoZT0uMzUpLHt4OlNuKGUsXCJsZWZ0XCIsXCJyaWdodFwiKSx5OlNuKGUsXCJ0b3BcIixcImJvdHRvbVwiKX19KHIpLHRoaXMuY29uc3RyYWludHMmJiF0aGlzLmhhc011dGF0ZWRDb25zdHJhaW50cyYmQ24oKGZ1bmN0aW9uKHQpe2UuZ2V0QXhpc01vdGlvblZhbHVlKHQpJiYoZS5jb25zdHJhaW50c1t0XT1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O3JldHVybiB2b2lkIDAhPT10Lm1pbiYmKG4ubWluPXQubWluLWUubWluKSx2b2lkIDAhPT10Lm1heCYmKG4ubWF4PXQubWF4LWUubWluKSxufShvW3RdLGUuY29uc3RyYWludHNbdF0pKX0pKX0sZS5wcm90b3R5cGUucmVzb2x2ZVJlZkNvbnN0cmFpbnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5wcm9wcyxyPW4ub25NZWFzdXJlRHJhZ0NvbnN0cmFpbnRzLG89bi50cmFuc2Zvcm1QYWdlUG9pbnQsYT10LmN1cnJlbnQ7aS5pbnZhcmlhbnQobnVsbCE9PWEsXCJJZiBgZHJhZ0NvbnN0cmFpbnRzYCBpcyBzZXQgYXMgYSBSZWFjdCByZWYsIHRoYXQgcmVmIG11c3QgYmUgcGFzc2VkIHRvIGFub3RoZXIgY29tcG9uZW50J3MgYHJlZmAgcHJvcC5cIiksdGhpcy5jb25zdHJhaW50c0JveD1qbihhLG8pO3ZhciBsPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3g6RW4oZS54LHQueCkseTpFbihlLnksdC55KX19KGUsdGhpcy5jb25zdHJhaW50c0JveCk7aWYocil7dmFyIHM9cihmdW5jdGlvbihlKXt2YXIgdD1lLngsbj1lLnk7cmV0dXJue3RvcDpuLm1pbixib3R0b206bi5tYXgsbGVmdDp0Lm1pbixyaWdodDp0Lm1heH19KGwpKTt0aGlzLmhhc011dGF0ZWRDb25zdHJhaW50cz0hIXMscyYmKGw9aG4ocykpfXJldHVybiBsfSxlLnByb3RvdHlwZS5jYW5jZWxEcmFnPWZ1bmN0aW9uKCl7dmFyIGUsdDt0aGlzLnZpc3VhbEVsZW1lbnQudW5sb2NrUHJvamVjdGlvblRhcmdldCgpLG51bGw9PT0oZT10aGlzLmNhbmNlbExheW91dCl8fHZvaWQgMD09PWV8fGUuY2FsbCh0aGlzKSx0aGlzLmlzRHJhZ2dpbmc9ITEsdGhpcy5wYW5TZXNzaW9uJiZ0aGlzLnBhblNlc3Npb24uZW5kKCksdGhpcy5wYW5TZXNzaW9uPW51bGwsIXRoaXMucHJvcHMuZHJhZ1Byb3BhZ2F0aW9uJiZ0aGlzLm9wZW5HbG9iYWxMb2NrJiYodGhpcy5vcGVuR2xvYmFsTG9jaygpLHRoaXMub3Blbkdsb2JhbExvY2s9bnVsbCksbnVsbD09PSh0PXRoaXMudmlzdWFsRWxlbWVudC5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PXR8fHQuc2V0QWN0aXZlKFZlLkRyYWcsITEpfSxlLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvO251bGw9PT0obj10aGlzLnBhblNlc3Npb24pfHx2b2lkIDA9PT1ufHxuLmVuZCgpLHRoaXMucGFuU2Vzc2lvbj1udWxsO3ZhciBpPXRoaXMuaXNEcmFnZ2luZztpZih0aGlzLmNhbmNlbERyYWcoKSxpKXt2YXIgYT10LnZlbG9jaXR5O3RoaXMuYW5pbWF0ZURyYWdFbmQoYSksbnVsbD09PShvPShyPXRoaXMucHJvcHMpLm9uRHJhZ0VuZCl8fHZvaWQgMD09PW98fG8uY2FsbChyLGUsdCl9fSxlLnByb3RvdHlwZS5zbmFwVG9DdXJzb3I9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gQ24oKGZ1bmN0aW9uKG4pe2lmKG9yKG4sdC5wcm9wcy5kcmFnLHQuY3VycmVudERpcmVjdGlvbikpe3ZhciByPXQuZ2V0QXhpc01vdGlvblZhbHVlKG4pO2lmKCFyKXJldHVybiB0LmN1cnNvclByb2dyZXNzW25dPS41LCEwO3ZhciBvPXQudmlzdWFsRWxlbWVudC5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dCxpPW9bbl0ubWF4LW9bbl0ubWluLGE9b1tuXS5taW4raS8yLGw9ZVtuXS1hO3Qub3JpZ2luUG9pbnRbbl09ZVtuXSxyLnNldChsKX19KSkuaW5jbHVkZXMoITApfSxlLnByb3RvdHlwZS51cGRhdGVBeGlzPWZ1bmN0aW9uKGUsdCxuKXtpZihvcihlLHRoaXMucHJvcHMuZHJhZyx0aGlzLmN1cnJlbnREaXJlY3Rpb24pKXJldHVybiB0aGlzLmdldEF4aXNNb3Rpb25WYWx1ZShlKT90aGlzLnVwZGF0ZUF4aXNNb3Rpb25WYWx1ZShlLG4pOnRoaXMudXBkYXRlVmlzdWFsRWxlbWVudEF4aXMoZSx0KX0sZS5wcm90b3R5cGUudXBkYXRlQXhpc01vdGlvblZhbHVlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRBeGlzTW90aW9uVmFsdWUoZSk7aWYodCYmbil7dmFyIHI9dGhpcy5vcmlnaW5Qb2ludFtlXSt0W2VdLG89dGhpcy5jb25zdHJhaW50cz9MbihyLHRoaXMuY29uc3RyYWludHNbZV0sdGhpcy5lbGFzdGljW2VdKTpyO24uc2V0KG8pfX0sZS5wcm90b3R5cGUudXBkYXRlVmlzdWFsRWxlbWVudEF4aXM9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPXRoaXMudmlzdWFsRWxlbWVudC5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dFtlXSxvPXIubWF4LXIubWluLGk9dGhpcy5jdXJzb3JQcm9ncmVzc1tlXSxhPWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9ZS10Km47cmV0dXJuIHI/TG4oaSxyLG8pOml9KHRbZV0sbyxpLG51bGw9PT0obj10aGlzLmNvbnN0cmFpbnRzKXx8dm9pZCAwPT09bj92b2lkIDA6bltlXSx0aGlzLmVsYXN0aWNbZV0pO3RoaXMudmlzdWFsRWxlbWVudC5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyhlLGEsYStvKX0sZS5wcm90b3R5cGUuc2V0UHJvcHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kcmFnLG49dm9pZCAwIT09dCYmdCxvPWUuZHJhZ0RpcmVjdGlvbkxvY2ssaT12b2lkIDAhPT1vJiZvLGE9ZS5kcmFnUHJvcGFnYXRpb24sbD12b2lkIDAhPT1hJiZhLHM9ZS5kcmFnQ29uc3RyYWludHMsYz12b2lkIDAhPT1zJiZzLHU9ZS5kcmFnRWxhc3RpYyxmPXZvaWQgMD09PXU/LjM1OnUsZD1lLmRyYWdNb21lbnR1bSxwPXZvaWQgMD09PWR8fGQsaD1yLl9fcmVzdChlLFtcImRyYWdcIixcImRyYWdEaXJlY3Rpb25Mb2NrXCIsXCJkcmFnUHJvcGFnYXRpb25cIixcImRyYWdDb25zdHJhaW50c1wiLFwiZHJhZ0VsYXN0aWNcIixcImRyYWdNb21lbnR1bVwiXSk7dGhpcy5wcm9wcz1yLl9fYXNzaWduKHtkcmFnOm4sZHJhZ0RpcmVjdGlvbkxvY2s6aSxkcmFnUHJvcGFnYXRpb246bCxkcmFnQ29uc3RyYWludHM6YyxkcmFnRWxhc3RpYzpmLGRyYWdNb21lbnR1bTpwfSxoKX0sZS5wcm90b3R5cGUuZ2V0QXhpc01vdGlvblZhbHVlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10LmxheW91dCxyPXQubGF5b3V0SWQsbz1cIl9kcmFnXCIrZS50b1VwcGVyQ2FzZSgpO3JldHVybiB0aGlzLnByb3BzW29dP3RoaXMucHJvcHNbb106bnx8dm9pZCAwIT09cj92b2lkIDA6dGhpcy52aXN1YWxFbGVtZW50LmdldFZhbHVlKGUsMCl9LGUucHJvdG90eXBlLmlzTGF5b3V0RHJhZz1mdW5jdGlvbigpe3JldHVybiF0aGlzLmdldEF4aXNNb3Rpb25WYWx1ZShcInhcIil9LGUucHJvdG90eXBlLmlzRXh0ZXJuYWxEcmFnPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuX2RyYWdYLG49ZS5fZHJhZ1k7cmV0dXJuIHR8fG59LGUucHJvdG90eXBlLmFuaW1hdGVEcmFnRW5kPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLnByb3BzLG89bi5kcmFnLGk9bi5kcmFnTW9tZW50dW0sYT1uLmRyYWdFbGFzdGljLGw9bi5kcmFnVHJhbnNpdGlvbixzPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITApO3ZhciBuLHI9ZS5nZXRQcm9qZWN0aW9uUGFyZW50KCk7cmV0dXJuISFyJiYodD9ZbihuPUhuKHIucHJvamVjdGlvbi50YXJnZXQsZS5wcm9qZWN0aW9uLnRhcmdldCksci5nZXRMYXRlc3RWYWx1ZXMoKSk6bj1IbihyLmdldExheW91dFN0YXRlKCkubGF5b3V0LGUuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXQpLENuKChmdW5jdGlvbih0KXtyZXR1cm4gZS5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyh0LG5bdF0ubWluLG5bdF0ubWF4LCEwKX0pKSwhMCl9KHRoaXMudmlzdWFsRWxlbWVudCx0aGlzLmlzTGF5b3V0RHJhZygpJiYhdGhpcy5pc0V4dGVybmFsRHJhZygpKSxjPXRoaXMuY29uc3RyYWludHN8fHt9O2lmKHMmJk9iamVjdC5rZXlzKGMpLmxlbmd0aCYmdGhpcy5pc0xheW91dERyYWcoKSl7dmFyIHU9dGhpcy52aXN1YWxFbGVtZW50LmdldFByb2plY3Rpb25QYXJlbnQoKTtpZih1KXt2YXIgZj1Ibih1LnByb2plY3Rpb24udGFyZ2V0RmluYWwsYyk7Q24oKGZ1bmN0aW9uKGUpe3ZhciB0PWZbZV0sbj10Lm1pbixyPXQubWF4O2NbZV09e21pbjppc05hTihuKT92b2lkIDA6bixtYXg6aXNOYU4ocik/dm9pZCAwOnJ9fSkpfX12YXIgZD1DbigoZnVuY3Rpb24obil7dmFyIHU7aWYob3IobixvLHQuY3VycmVudERpcmVjdGlvbikpe3ZhciBmPW51bGwhPT0odT1udWxsPT1jP3ZvaWQgMDpjW25dKSYmdm9pZCAwIT09dT91Ont9LGQ9YT8yMDA6MWU2LHA9YT80MDoxZTcsaD1yLl9fYXNzaWduKHIuX19hc3NpZ24oe3R5cGU6XCJpbmVydGlhXCIsdmVsb2NpdHk6aT9lW25dOjAsYm91bmNlU3RpZmZuZXNzOmQsYm91bmNlRGFtcGluZzpwLHRpbWVDb25zdGFudDo3NTAscmVzdERlbHRhOjEscmVzdFNwZWVkOjEwfSxsKSxmKTtyZXR1cm4gdC5nZXRBeGlzTW90aW9uVmFsdWUobik/dC5zdGFydEF4aXNWYWx1ZUFuaW1hdGlvbihuLGgpOnQudmlzdWFsRWxlbWVudC5zdGFydExheW91dEFuaW1hdGlvbihuLGgscyl9fSkpO3JldHVybiBQcm9taXNlLmFsbChkKS50aGVuKChmdW5jdGlvbigpe3ZhciBlLG47bnVsbD09PShuPShlPXQucHJvcHMpLm9uRHJhZ1RyYW5zaXRpb25FbmQpfHx2b2lkIDA9PT1ufHxuLmNhbGwoZSl9KSl9LGUucHJvdG90eXBlLnN0b3BNb3Rpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzO0NuKChmdW5jdGlvbih0KXt2YXIgbj1lLmdldEF4aXNNb3Rpb25WYWx1ZSh0KTtuP24uc3RvcCgpOmUudmlzdWFsRWxlbWVudC5zdG9wTGF5b3V0QW5pbWF0aW9uKCl9KSl9LGUucHJvdG90eXBlLnN0YXJ0QXhpc1ZhbHVlQW5pbWF0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRBeGlzTW90aW9uVmFsdWUoZSk7aWYobil7dmFyIHI9bi5nZXQoKTtyZXR1cm4gbi5zZXQociksbi5zZXQociksQXQoZSxuLDAsdCl9fSxlLnByb3RvdHlwZS5zY2FsZVBvaW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LmRyYWc7aWYoUCh0LmRyYWdDb25zdHJhaW50cykmJnRoaXMuY29uc3RyYWludHNCb3gpe3RoaXMuc3RvcE1vdGlvbigpO3ZhciByPXt4OjAseTowfTtDbigoZnVuY3Rpb24odCl7dmFyIG4sbyxpLGEscyxjO3JbdF09KG49ZS52aXN1YWxFbGVtZW50LnByb2plY3Rpb24udGFyZ2V0W3RdLG89ZS5jb25zdHJhaW50c0JveFt0XSxhPS41LHM9eW4obiksKGM9eW4obykpPnM/YT1sLnByb2dyZXNzKG8ubWluLG8ubWF4LXMsbi5taW4pOnM+YyYmKGE9bC5wcm9ncmVzcyhuLm1pbixuLm1heC1jLG8ubWluKSksaT1hLGwuY2xhbXAoMCwxLGkpKX0pKSx0aGlzLnVwZGF0ZUNvbnN0cmFpbnRzKChmdW5jdGlvbigpe0NuKChmdW5jdGlvbih0KXtpZihvcih0LG4sbnVsbCkpe3ZhciBvPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLm1heC1lLm1pbixvPWwubWl4KHQubWluLHQubWF4LXIsbik7cmV0dXJue21pbjpvLG1heDpvK3J9fShlLnZpc3VhbEVsZW1lbnQucHJvamVjdGlvbi50YXJnZXRbdF0sZS5jb25zdHJhaW50c0JveFt0XSxyW3RdKSxpPW8ubWluLGE9by5tYXg7ZS52aXN1YWxFbGVtZW50LnNldFByb2plY3Rpb25UYXJnZXRBeGlzKHQsaSxhKX19KSl9KSksc2V0VGltZW91dChRbiwxKX19LGUucHJvdG90eXBlLnVwZGF0ZUNvbnN0cmFpbnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dGhpcy5jYW5jZWxMYXlvdXQ9Sm4oKGZ1bmN0aW9uKG4scil7dmFyIG89UG4odC52aXN1YWxFbGVtZW50KTtyKChmdW5jdGlvbigpe3JldHVybiBvLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc2V0VHJhbnNmb3JtKCl9KSl9KSksbigoZnVuY3Rpb24oKXtyZXR1cm4gQW4odC52aXN1YWxFbGVtZW50KX0pKSxyKChmdW5jdGlvbigpe3JldHVybiBvLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc3RvcmVUcmFuc2Zvcm0oKX0pKX0pKSxuKChmdW5jdGlvbigpe3QucmVzb2x2ZURyYWdDb25zdHJhaW50cygpfSkpLGUmJnIoZSl9KSl9LGUucHJvdG90eXBlLm1vdW50PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj1udChlLmdldEluc3RhbmNlKCksXCJwb2ludGVyZG93blwiLChmdW5jdGlvbihlKXt2YXIgbj10LnByb3BzLHI9bi5kcmFnLG89bi5kcmFnTGlzdGVuZXI7ciYmKHZvaWQgMD09PW98fG8pJiZ0LnN0YXJ0KGUpfSkpLHI9JGUod2luZG93LFwicmVzaXplXCIsKGZ1bmN0aW9uKCl7dC5zY2FsZVBvaW50KCl9KSksbz1lLm9uTGF5b3V0VXBkYXRlKChmdW5jdGlvbigpe3QuaXNEcmFnZ2luZyYmdC5yZXNvbHZlRHJhZ0NvbnN0cmFpbnRzKCl9KSksaT1lLnByZXZEcmFnQ3Vyc29yO3JldHVybiBpJiZ0aGlzLnN0YXJ0KGVyLHtjdXJzb3JQcm9ncmVzczppfSksZnVuY3Rpb24oKXtudWxsPT1ufHxuKCksbnVsbD09cnx8cigpLG51bGw9PW98fG8oKSx0LmNhbmNlbERyYWcoKX19LGV9KCk7ZnVuY3Rpb24gb3IoZSx0LG4pe3JldHVybiEoITAhPT10JiZ0IT09ZXx8bnVsbCE9PW4mJm4hPT1lKX12YXIgaXIsYXIsbHI9e3BhbjpkdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vblBhbixuPWUub25QYW5TdGFydCxyPWUub25QYW5FbmQsaT1lLm9uUGFuU2Vzc2lvblN0YXJ0LGE9ZS52aXN1YWxFbGVtZW50LGw9dHx8bnx8cnx8aSxzPW8udXNlUmVmKG51bGwpLGM9by51c2VDb250ZXh0KHkpLnRyYW5zZm9ybVBhZ2VQb2ludCx1PXtvblNlc3Npb25TdGFydDppLG9uU3RhcnQ6bixvbk1vdmU6dCxvbkVuZDpmdW5jdGlvbihlLHQpe3MuY3VycmVudD1udWxsLHImJnIoZSx0KX19O28udXNlRWZmZWN0KChmdW5jdGlvbigpe251bGwhPT1zLmN1cnJlbnQmJnMuY3VycmVudC51cGRhdGVIYW5kbGVycyh1KX0pKSxydChhLFwicG9pbnRlcmRvd25cIixsJiZmdW5jdGlvbihlKXtzLmN1cnJlbnQ9bmV3IGFuKGUsdSx7dHJhbnNmb3JtUGFnZVBvaW50OmN9KX0pLGZ0KChmdW5jdGlvbigpe3JldHVybiBzLmN1cnJlbnQmJnMuY3VycmVudC5lbmQoKX0pKX0pKSxkcmFnOmR0KChmdW5jdGlvbihlKXt2YXIgdD1lLmRyYWdDb250cm9scyxuPWUudmlzdWFsRWxlbWVudCxpPW8udXNlQ29udGV4dCh5KS50cmFuc2Zvcm1QYWdlUG9pbnQsYT1fKChmdW5jdGlvbigpe3JldHVybiBuZXcgcnIoe3Zpc3VhbEVsZW1lbnQ6bn0pfSkpO2Euc2V0UHJvcHMoci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGUpLHt0cmFuc2Zvcm1QYWdlUG9pbnQ6aX0pKSxvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdCYmdC5zdWJzY3JpYmUoYSl9KSxbYV0pLG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiBhLm1vdW50KG4pfSksW10pfSkpfTtmdW5jdGlvbiBzcihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmZS5zdGFydHNXaXRoKFwidmFyKC0tXCIpfSFmdW5jdGlvbihlKXtlW2UuRW50ZXJpbmc9MF09XCJFbnRlcmluZ1wiLGVbZS5QcmVzZW50PTFdPVwiUHJlc2VudFwiLGVbZS5FeGl0aW5nPTJdPVwiRXhpdGluZ1wifShpcnx8KGlyPXt9KSksdC5WaXNpYmlsaXR5QWN0aW9uPXZvaWQgMCwoYXI9dC5WaXNpYmlsaXR5QWN0aW9ufHwodC5WaXNpYmlsaXR5QWN0aW9uPXt9KSlbYXIuSGlkZT0wXT1cIkhpZGVcIixhclthci5TaG93PTFdPVwiU2hvd1wiO3ZhciBjcj0vdmFyXFwoKC0tW2EtekEtWjAtOS1fXSspLD8gPyhbYS16QS1aMC05ICgpJSMuLC1dKyk/XFwpLztmdW5jdGlvbiB1cihlLHQsbil7dm9pZCAwPT09biYmKG49MSksaS5pbnZhcmlhbnQobjw9NCwnTWF4IENTUyB2YXJpYWJsZSBmYWxsYmFjayBkZXB0aCBkZXRlY3RlZCBpbiBwcm9wZXJ0eSBcIicrZSsnXCIuIFRoaXMgbWF5IGluZGljYXRlIGEgY2lyY3VsYXIgZmFsbGJhY2sgZGVwZW5kZW5jeS4nKTt2YXIgbz1yLl9fcmVhZChmdW5jdGlvbihlKXt2YXIgdD1jci5leGVjKGUpO2lmKCF0KXJldHVyblssXTt2YXIgbj1yLl9fcmVhZCh0LDMpO3JldHVybltuWzFdLG5bMl1dfShlKSwyKSxhPW9bMF0sbD1vWzFdO2lmKGEpe3ZhciBzPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmdldFByb3BlcnR5VmFsdWUoYSk7cmV0dXJuIHM/cy50cmltKCk6c3IobCk/dXIobCx0LG4rMSk6bH19ZnVuY3Rpb24gZnIoZSx0KXtyZXR1cm4gZS8odC5tYXgtdC5taW4pKjEwMH12YXIgZHI9XCJfJGNzc1wiLHByPXtwcm9jZXNzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uLnRhcmdldDtpZihcInN0cmluZ1wiPT10eXBlb2YgZSl7aWYoIWEucHgudGVzdChlKSlyZXR1cm4gZTtlPXBhcnNlRmxvYXQoZSl9cmV0dXJuIGZyKGUsci54KStcIiUgXCIrZnIoZSxyLnkpK1wiJVwifX0saHI9e2JvcmRlclJhZGl1czpyLl9fYXNzaWduKHIuX19hc3NpZ24oe30scHIpLHthcHBseVRvOltcImJvcmRlclRvcExlZnRSYWRpdXNcIixcImJvcmRlclRvcFJpZ2h0UmFkaXVzXCIsXCJib3JkZXJCb3R0b21MZWZ0UmFkaXVzXCIsXCJib3JkZXJCb3R0b21SaWdodFJhZGl1c1wiXX0pLGJvcmRlclRvcExlZnRSYWRpdXM6cHIsYm9yZGVyVG9wUmlnaHRSYWRpdXM6cHIsYm9yZGVyQm90dG9tTGVmdFJhZGl1czpwcixib3JkZXJCb3R0b21SaWdodFJhZGl1czpwcixib3hTaGFkb3c6e3Byb2Nlc3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRlbHRhLHI9dC50cmVlU2NhbGUsbz1lLGk9ZS5pbmNsdWRlcyhcInZhcihcIikscz1bXTtpJiYoZT1lLnJlcGxhY2UoY3IsKGZ1bmN0aW9uKGUpe3JldHVybiBzLnB1c2goZSksZHJ9KSkpO3ZhciBjPWEuY29tcGxleC5wYXJzZShlKTtpZihjLmxlbmd0aD41KXJldHVybiBvO3ZhciB1PWEuY29tcGxleC5jcmVhdGVUcmFuc2Zvcm1lcihlKSxmPVwibnVtYmVyXCIhPXR5cGVvZiBjWzBdPzE6MCxkPW4ueC5zY2FsZSpyLngscD1uLnkuc2NhbGUqci55O2NbMCtmXS89ZCxjWzErZl0vPXA7dmFyIGg9bC5taXgoZCxwLC41KTtcIm51bWJlclwiPT10eXBlb2YgY1syK2ZdJiYoY1syK2ZdLz1oKSxcIm51bWJlclwiPT10eXBlb2YgY1szK2ZdJiYoY1szK2ZdLz1oKTt2YXIgdj11KGMpO2lmKGkpe3ZhciBnPTA7dj12LnJlcGxhY2UoZHIsKGZ1bmN0aW9uKCl7dmFyIGU9c1tnXTtyZXR1cm4gZysrLGV9KSl9cmV0dXJuIHZ9fX0sdnI9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe3ZhciBuPW51bGwhPT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gbi5mcmFtZVRhcmdldD17eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX0sbi5jdXJyZW50QW5pbWF0aW9uVGFyZ2V0PXt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fSxuLmlzQW5pbWF0aW5nPXt4OiExLHk6ITF9LG4uc3RvcEF4aXNBbmltYXRpb249e3g6dm9pZCAwLHk6dm9pZCAwfSxuLmlzQW5pbWF0aW5nVHJlZT0hMSxuLmFuaW1hdGU9ZnVuY3Rpb24oZSxvLGkpe3ZvaWQgMD09PWkmJihpPXt9KTt2YXIgYT1pLm9yaWdpbkJveCxsPWkudGFyZ2V0Qm94LHM9aS52aXNpYmlsaXR5QWN0aW9uLGM9aS5zaG91bGRTdGFja0FuaW1hdGUsdT1pLm9uQ29tcGxldGUsZj1pLnByZXZQYXJlbnQsZD1yLl9fcmVzdChpLFtcIm9yaWdpbkJveFwiLFwidGFyZ2V0Qm94XCIsXCJ2aXNpYmlsaXR5QWN0aW9uXCIsXCJzaG91bGRTdGFja0FuaW1hdGVcIixcIm9uQ29tcGxldGVcIixcInByZXZQYXJlbnRcIl0pLHA9bi5wcm9wcyxoPXAudmlzdWFsRWxlbWVudCx2PXAubGF5b3V0O2lmKCExPT09YylyZXR1cm4gbi5pc0FuaW1hdGluZ1RyZWU9ITEsbi5zYWZlVG9SZW1vdmUoKTtpZighbi5pc0FuaW1hdGluZ1RyZWV8fCEwPT09Yyl7YyYmKG4uaXNBbmltYXRpbmdUcmVlPSEwKSxvPWF8fG8sZT1sfHxlO3ZhciBnLEMsbSx5PSExLHc9aC5nZXRQcm9qZWN0aW9uUGFyZW50KCk7aWYodyl7dmFyIGI9dy5wcmV2Vmlld3BvcnRCb3gseD13LmdldExheW91dFN0YXRlKCkubGF5b3V0O2YmJihsJiYoeD1mLmdldExheW91dFN0YXRlKCkubGF5b3V0KSxhJiYoQz13LChnPWYpLmdldExheW91dElkKCk9PT0obT1DLmdldExheW91dElkKCkpJiYodm9pZCAwIT09bXx8Zz09PUMpKSYmZi5wcmV2Vmlld3BvcnRCb3gmJihiPWYucHJldlZpZXdwb3J0Qm94KSksYiYmZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlfHwhZSYmISh0fHxuKX0oZixhLGwpJiYoeT0hMCxvPUhuKGIsbyksZT1Ibih4LGUpKX12YXIgXyxMLE89KEw9ZSwhKENyKF89byl8fENyKEwpfHxtcihfLngsTC54KSYmbXIoXy55LEwueSkpKSxFPUNuKChmdW5jdGlvbihpKXt2YXIgYSxsO2lmKFwicG9zaXRpb25cIj09PXYpe3ZhciBjPWVbaV0ubWF4LWVbaV0ubWluO29baV0ubWF4PW9baV0ubWluK2N9aWYoIWgucHJvamVjdGlvbi5pc1RhcmdldExvY2tlZClyZXR1cm4gdm9pZCAwPT09cz9PP24uYW5pbWF0ZUF4aXMoaSxlW2ldLG9baV0sci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGQpLHtpc1JlbGF0aXZlOnl9KSk6KG51bGw9PT0obD0oYT1uLnN0b3BBeGlzQW5pbWF0aW9uKVtpXSl8fHZvaWQgMD09PWx8fGwuY2FsbChhKSxoLnNldFByb2plY3Rpb25UYXJnZXRBeGlzKGksZVtpXS5taW4sZVtpXS5tYXgseSkpOnZvaWQgaC5zZXRWaXNpYmlsaXR5KHM9PT10LlZpc2liaWxpdHlBY3Rpb24uU2hvdyl9KSk7cmV0dXJuIGguc3luY1JlbmRlcigpLFByb21pc2UuYWxsKEUpLnRoZW4oKGZ1bmN0aW9uKCl7bi5pc0FuaW1hdGluZ1RyZWU9ITEsdSYmdSgpLGgubm90aWZ5TGF5b3V0QW5pbWF0aW9uQ29tcGxldGUoKX0pKX19LG59cmV0dXJuIHIuX19leHRlbmRzKG4sZSksbi5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcy52aXN1YWxFbGVtZW50O3QuYW5pbWF0ZU1vdGlvblZhbHVlPUF0LHQuZW5hYmxlTGF5b3V0UHJvamVjdGlvbigpLHRoaXMudW5zdWJMYXlvdXRSZWFkeT10Lm9uTGF5b3V0VXBkYXRlKHRoaXMuYW5pbWF0ZSksdC5sYXlvdXRTYWZlVG9SZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gZS5zYWZlVG9SZW1vdmUoKX0sVyhocil9LG4ucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLnVuc3ViTGF5b3V0UmVhZHkoKSxDbigoZnVuY3Rpb24odCl7dmFyIG4scjtyZXR1cm4gbnVsbD09PShyPShuPWUuc3RvcEF4aXNBbmltYXRpb24pW3RdKXx8dm9pZCAwPT09cj92b2lkIDA6ci5jYWxsKG4pfSkpfSxuLnByb3RvdHlwZS5hbmltYXRlQXhpcz1mdW5jdGlvbihlLHQsbixyKXt2YXIgbyxpLGE9dGhpcyxzPXZvaWQgMD09PXI/e306cixjPXMudHJhbnNpdGlvbix1PXMuaXNSZWxhdGl2ZTtpZighdGhpcy5pc0FuaW1hdGluZ1tlXXx8IW1yKHQsdGhpcy5jdXJyZW50QW5pbWF0aW9uVGFyZ2V0W2VdKSl7bnVsbD09PShpPShvPXRoaXMuc3RvcEF4aXNBbmltYXRpb24pW2VdKXx8dm9pZCAwPT09aXx8aS5jYWxsKG8pLHRoaXMuaXNBbmltYXRpbmdbZV09ITA7dmFyIGY9dGhpcy5wcm9wcy52aXN1YWxFbGVtZW50LGQ9dGhpcy5mcmFtZVRhcmdldFtlXSxwPWYuZ2V0UHJvamVjdGlvbkFuaW1hdGlvblByb2dyZXNzKClbZV07cC5jbGVhckxpc3RlbmVycygpLHAuc2V0KDApLHAuc2V0KDApO3ZhciBoPWZ1bmN0aW9uKCl7dmFyIHI9cC5nZXQoKS8xZTM7IWZ1bmN0aW9uKGUsdCxuLHIpe2UubWluPWwubWl4KHQubWluLG4ubWluLHIpLGUubWF4PWwubWl4KHQubWF4LG4ubWF4LHIpfShkLG4sdCxyKSxmLnNldFByb2plY3Rpb25UYXJnZXRBeGlzKGUsZC5taW4sZC5tYXgsdSl9O2goKTt2YXIgdj1wLm9uQ2hhbmdlKGgpO3RoaXMuc3RvcEF4aXNBbmltYXRpb25bZV09ZnVuY3Rpb24oKXthLmlzQW5pbWF0aW5nW2VdPSExLHAuc3RvcCgpLHYoKX0sdGhpcy5jdXJyZW50QW5pbWF0aW9uVGFyZ2V0W2VdPXQ7dmFyIGc9Y3x8Zi5nZXREZWZhdWx0VHJhbnNpdGlvbigpfHx5cjtyZXR1cm4gQXQoXCJ4XCI9PT1lP1wibGF5b3V0WFwiOlwibGF5b3V0WVwiLHAsMWUzLGcmJlB0KGcsXCJsYXlvdXRcIikpLnRoZW4odGhpcy5zdG9wQXhpc0FuaW1hdGlvbltlXSl9fSxuLnByb3RvdHlwZS5zYWZlVG9SZW1vdmU9ZnVuY3Rpb24oKXt2YXIgZSx0O251bGw9PT0odD0oZT10aGlzLnByb3BzKS5zYWZlVG9SZW1vdmUpfHx2b2lkIDA9PT10fHx0LmNhbGwoZSl9LG4ucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiBudWxsfSxufSh1LkNvbXBvbmVudCksZ3I9e21pbjowLG1heDowfTtmdW5jdGlvbiBDcihlKXtyZXR1cm4gbXIoZS54LGdyKSYmbXIoZS55LGdyKX1mdW5jdGlvbiBtcihlLHQpe3JldHVybiBlLm1pbj09PXQubWluJiZlLm1heD09PXQubWF4fXZhciB5cj17ZHVyYXRpb246LjQ1LGVhc2U6Wy40LDAsLjEsMV19LHdyPXtsYXlvdXRSZWFkeTpmdW5jdGlvbihlKXtyZXR1cm4gZS5ub3RpZnlMYXlvdXRSZWFkeSgpfX07ZnVuY3Rpb24gYnIoKXt2YXIgZT1uZXcgU2V0O3JldHVybnthZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIGUuYWRkKHQpfSxmbHVzaDpmdW5jdGlvbih0KXt2YXIgbj12b2lkIDA9PT10P3dyOnQsbz1uLmxheW91dFJlYWR5LGk9bi5wYXJlbnQ7Sm4oKGZ1bmN0aW9uKHQsbil7dmFyIGE9QXJyYXkuZnJvbShlKS5zb3J0KGtuKSxsPWk/UG4oaSk6W107bigoZnVuY3Rpb24oKXtyLl9fc3ByZWFkQXJyYXkoci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKGwpKSxyLl9fcmVhZChhKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVzZXRUcmFuc2Zvcm0oKX0pKX0pKSx0KChmdW5jdGlvbigpe2EuZm9yRWFjaChBbil9KSksbigoZnVuY3Rpb24oKXtsLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc3RvcmVUcmFuc2Zvcm0oKX0pKSxhLmZvckVhY2gobyl9KSksdCgoZnVuY3Rpb24oKXthLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuaXNQcmVzZW50JiYoZS5wcmVzZW5jZT1pci5QcmVzZW50KX0pKX0pKSxuKChmdW5jdGlvbigpe3MuZmx1c2hTeW5jLnByZVJlbmRlcigpLHMuZmx1c2hTeW5jLnJlbmRlcigpfSkpLHQoKGZ1bmN0aW9uKCl7ZC5kZWZhdWx0LnBvc3RSZW5kZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIGEuZm9yRWFjaCh4cil9KSksZS5jbGVhcigpfSkpfSkpLFFuKCl9fX1mdW5jdGlvbiB4cihlKXtlLnByZXZWaWV3cG9ydEJveD1lLnByb2plY3Rpb24udGFyZ2V0fXZhciBfcj1vLmNyZWF0ZUNvbnRleHQoYnIoKSksTHI9by5jcmVhdGVDb250ZXh0KGJyKCkpO2Z1bmN0aW9uIE9yKGUpe3JldHVybiEhZS5mb3JjZVVwZGF0ZX12YXIgRXI9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBudWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIHIuX19leHRlbmRzKHQsZSksdC5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5zeW5jTGF5b3V0LG49ZS5mcmFtZXJTeW5jTGF5b3V0LHI9ZS52aXN1YWxFbGVtZW50O09yKHQpJiZ0LnJlZ2lzdGVyKHIpLE9yKG4pJiZuLnJlZ2lzdGVyKHIpLHIub25Vbm1vdW50KChmdW5jdGlvbigpe09yKHQpJiZ0LnJlbW92ZShyKSxPcihuKSYmbi5yZW1vdmUocil9KSl9LHQucHJvdG90eXBlLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuc3luY0xheW91dCxuPWUudmlzdWFsRWxlbWVudDtyZXR1cm4gT3IodCk/dC5zeW5jVXBkYXRlKCk6KEluKG4pLHQuYWRkKG4pKSxudWxsfSx0LnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLnN5bmNMYXlvdXQ7T3IoZSl8fGUuZmx1c2goKX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHR9KGYuZGVmYXVsdC5Db21wb25lbnQpLFNyPXttZWFzdXJlTGF5b3V0OmZ1bmN0aW9uKGUpe3ZhciB0PW8udXNlQ29udGV4dChfciksbj1vLnVzZUNvbnRleHQoTHIpO3JldHVybiBmLmRlZmF1bHQuY3JlYXRlRWxlbWVudChFcixyLl9fYXNzaWduKHt9LGUse3N5bmNMYXlvdXQ6dCxmcmFtZXJTeW5jTGF5b3V0Om59KSl9LGxheW91dEFuaW1hdGlvbjpmdW5jdGlvbihlKXt2YXIgdD1yLl9fcmVhZChMKCksMilbMV07cmV0dXJuIHUuY3JlYXRlRWxlbWVudCh2cixyLl9fYXNzaWduKHt9LGUse3NhZmVUb1JlbW92ZTp0fSkpfX07ZnVuY3Rpb24gTXIoKXtyZXR1cm57aXNIeWRyYXRlZDohMSxsYXlvdXQ6e3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19LGxheW91dENvcnJlY3RlZDp7eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX0sdHJlZVNjYWxlOnt4OjEseToxfSxkZWx0YTpnbigpLGRlbHRhRmluYWw6Z24oKSxkZWx0YVRyYW5zZm9ybTpcIlwifX12YXIganI9TXIoKTtmdW5jdGlvbiBrcihlLHQsbil7dmFyIHI9ZS54LG89ZS55LGk9XCJ0cmFuc2xhdGUzZChcIityLnRyYW5zbGF0ZS90LngrXCJweCwgXCIrby50cmFuc2xhdGUvdC55K1wicHgsIDApIFwiO2lmKG4pe3ZhciBhPW4ucm90YXRlLGw9bi5yb3RhdGVYLHM9bi5yb3RhdGVZO2EmJihpKz1cInJvdGF0ZShcIithK1wiKSBcIiksbCYmKGkrPVwicm90YXRlWChcIitsK1wiKSBcIikscyYmKGkrPVwicm90YXRlWShcIitzK1wiKSBcIil9cmV0dXJuIGkrPVwic2NhbGUoXCIrci5zY2FsZStcIiwgXCIrby5zY2FsZStcIilcIixufHxpIT09UHI/aTpcIlwifWZ1bmN0aW9uIFJyKGUpe3ZhciB0PWUuZGVsdGFGaW5hbDtyZXR1cm4gMTAwKnQueC5vcmlnaW4rXCIlIFwiKzEwMCp0Lnkub3JpZ2luK1wiJSAwXCJ9dmFyIFByPWtyKGpyLmRlbHRhLGpyLnRyZWVTY2FsZSx7eDoxLHk6MX0pLEFyPVtcIkxheW91dE1lYXN1cmVcIixcIkJlZm9yZUxheW91dE1lYXN1cmVcIixcIkxheW91dFVwZGF0ZVwiLFwiVmlld3BvcnRCb3hVcGRhdGVcIixcIlVwZGF0ZVwiLFwiUmVuZGVyXCIsXCJBbmltYXRpb25Db21wbGV0ZVwiLFwiTGF5b3V0QW5pbWF0aW9uQ29tcGxldGVcIixcIkFuaW1hdGlvblN0YXJ0XCIsXCJTZXRBeGlzVGFyZ2V0XCIsXCJVbm1vdW50XCJdLElyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuY2hpbGRyZW49W10sdGhpcy5pc0RpcnR5PSExfXJldHVybiBlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7SXQodGhpcy5jaGlsZHJlbixlKSx0aGlzLmlzRGlydHk9ITB9LGUucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihlKXtUdCh0aGlzLmNoaWxkcmVuLGUpLHRoaXMuaXNEaXJ0eT0hMH0sZS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlKXt0aGlzLmlzRGlydHkmJnRoaXMuY2hpbGRyZW4uc29ydChrbiksdGhpcy5pc0RpcnR5PSExLHRoaXMuY2hpbGRyZW4uZm9yRWFjaChlKX0sZX0oKSxUcj1mdW5jdGlvbihlKXt2YXIgdD1lLnRyZWVUeXBlLG49dm9pZCAwPT09dD9cIlwiOnQsbz1lLmJ1aWxkLGk9ZS5nZXRCYXNlVGFyZ2V0LGE9ZS5tYWtlVGFyZ2V0QW5pbWF0YWJsZSxjPWUubWVhc3VyZVZpZXdwb3J0Qm94LHU9ZS5yZW5kZXIsZj1lLnJlYWRWYWx1ZUZyb21JbnN0YW5jZSxwPWUucmVzZXRUcmFuc2Zvcm0saD1lLnJlc3RvcmVUcmFuc2Zvcm0sdj1lLnJlbW92ZVZhbHVlRnJvbVJlbmRlclN0YXRlLGc9ZS5zb3J0Tm9kZVBvc2l0aW9uLEM9ZS5zY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG09ZS5wYXJlbnQseT1lLnByb3BzLHc9ZS5wcmVzZW5jZUlkLGI9ZS5ibG9ja0luaXRpYWxBbmltYXRpb24seD1lLnZpc3VhbFN0YXRlO3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgXyxMLE8sRSxTLE0saj14LmxhdGVzdFZhbHVlcyxrPXgucmVuZGVyU3RhdGUsUj1mdW5jdGlvbigpe3ZhciBlPUFyLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEh0fSkpLHQ9e30sbj17Y2xlYXJBbGxMaXN0ZW5lcnM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5jbGVhcigpfSkpfSx1cGRhdGVQcm9wTGlzdGVuZXJzOmZ1bmN0aW9uKGUpe3JldHVybiBBci5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgbztudWxsPT09KG89dFtyXSl8fHZvaWQgMD09PW98fG8uY2FsbCh0KTt2YXIgaT1cIm9uXCIrcixhPWVbaV07YSYmKHRbcl09bltpXShhKSl9KSl9fTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe25bXCJvblwiK0FyW3RdXT1mdW5jdGlvbih0KXtyZXR1cm4gZS5hZGQodCl9LG5bXCJub3RpZnlcIitBclt0XV09ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIGUubm90aWZ5LmFwcGx5KGUsci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKHQpKSl9fSkpLG59KCksUD17aXNFbmFibGVkOiExLGlzSHlkcmF0ZWQ6ITEsaXNUYXJnZXRMb2NrZWQ6ITEsdGFyZ2V0Ont4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fSx0YXJnZXRGaW5hbDp7eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX19LEE9UCxUPWosSD1NcigpLEQ9ITEsWj1uZXcgTWFwLCQ9bmV3IE1hcCxGPXt9LE49ci5fX2Fzc2lnbih7fSxqKTtmdW5jdGlvbiBVKCl7XyYmKFEuaXNQcm9qZWN0aW9uUmVhZHkoKSYmKHpuKEEudGFyZ2V0RmluYWwsQS50YXJnZXQsVCksYm4oSC5kZWx0YUZpbmFsLEgubGF5b3V0Q29ycmVjdGVkLEEudGFyZ2V0RmluYWwsaikpLFcoKSx1KF8saykpfWZ1bmN0aW9uIFcoKXt2YXIgZT1qO2lmKEUmJkUuaXNBY3RpdmUoKSl7dmFyIG49RS5nZXRDcm9zc2ZhZGVTdGF0ZShRKTtuJiYoZT1uKX1vKFEsayxlLEEsSCx0LHkpfWZ1bmN0aW9uIHooKXtSLm5vdGlmeVVwZGF0ZShqKX1mdW5jdGlvbiBHKCl7US5sYXlvdXRUcmVlLmZvckVhY2goVnIpfXZhciBxPUMoeSk7Zm9yKHZhciBZIGluIHEpe3ZhciBLPXFbWV07dm9pZCAwIT09altZXSYmZWUoSykmJksuc2V0KGpbWV0sITEpfXZhciBYPVYoeSksSj1CKHkpLFE9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt0cmVlVHlwZTpuLGN1cnJlbnQ6bnVsbCxkZXB0aDptP20uZGVwdGgrMTowLHBhcmVudDptLGNoaWxkcmVuOm5ldyBTZXQscGF0aDptP3IuX19zcHJlYWRBcnJheShyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQobS5wYXRoKSksW21dKTpbXSxsYXlvdXRUcmVlOm0/bS5sYXlvdXRUcmVlOm5ldyBJcixwcmVzZW5jZUlkOncscHJvamVjdGlvbjpQLHZhcmlhbnRDaGlsZHJlbjpKP25ldyBTZXQ6dm9pZCAwLGlzVmlzaWJsZTp2b2lkIDAsbWFudWFsbHlBbmltYXRlT25Nb3VudDpCb29sZWFuKG51bGw9PW0/dm9pZCAwOm0uaXNNb3VudGVkKCkpLGJsb2NrSW5pdGlhbEFuaW1hdGlvbjpiLGlzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKF8pfSxtb3VudDpmdW5jdGlvbihlKXtfPVEuY3VycmVudD1lLFEucG9pbnRUbyhRKSxKJiZtJiYhWCYmKE09bnVsbD09bT92b2lkIDA6bS5hZGRWYXJpYW50Q2hpbGQoUSkpLG51bGw9PW18fG0uY2hpbGRyZW4uYWRkKFEpfSx1bm1vdW50OmZ1bmN0aW9uKCl7cy5jYW5jZWxTeW5jLnVwZGF0ZSh6KSxzLmNhbmNlbFN5bmMucmVuZGVyKFUpLHMuY2FuY2VsU3luYy5wcmVSZW5kZXIoUS51cGRhdGVMYXlvdXRQcm9qZWN0aW9uKSwkLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9KSksUS5zdG9wTGF5b3V0QW5pbWF0aW9uKCksUS5sYXlvdXRUcmVlLnJlbW92ZShRKSxudWxsPT1NfHxNKCksbnVsbD09bXx8bS5jaGlsZHJlbi5kZWxldGUoUSksbnVsbD09T3x8TygpLFIuY2xlYXJBbGxMaXN0ZW5lcnMoKX0sYWRkVmFyaWFudENoaWxkOmZ1bmN0aW9uKGUpe3ZhciB0LG49US5nZXRDbG9zZXN0VmFyaWFudE5vZGUoKTtpZihuKXJldHVybiBudWxsPT09KHQ9bi52YXJpYW50Q2hpbGRyZW4pfHx2b2lkIDA9PT10fHx0LmFkZChlKSxmdW5jdGlvbigpe3JldHVybiBuLnZhcmlhbnRDaGlsZHJlbi5kZWxldGUoZSl9fSxzb3J0Tm9kZVBvc2l0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiBnJiZuPT09ZS50cmVlVHlwZT9nKFEuZ2V0SW5zdGFuY2UoKSxlLmdldEluc3RhbmNlKCkpOjB9LGdldENsb3Nlc3RWYXJpYW50Tm9kZTpmdW5jdGlvbigpe3JldHVybiBKP1E6bnVsbD09bT92b2lkIDA6bS5nZXRDbG9zZXN0VmFyaWFudE5vZGUoKX0sc2NoZWR1bGVVcGRhdGVMYXlvdXRQcm9qZWN0aW9uOm0/bS5zY2hlZHVsZVVwZGF0ZUxheW91dFByb2plY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gZC5kZWZhdWx0LnByZVJlbmRlcihRLnVwZGF0ZVRyZWVMYXlvdXRQcm9qZWN0aW9uLCExLCEwKX0sZ2V0TGF5b3V0SWQ6ZnVuY3Rpb24oKXtyZXR1cm4geS5sYXlvdXRJZH0sZ2V0SW5zdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gX30sZ2V0U3RhdGljVmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGpbZV19LHNldFN0YXRpY1ZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGpbZV09dH0sZ2V0TGF0ZXN0VmFsdWVzOmZ1bmN0aW9uKCl7cmV0dXJuIGp9LHNldFZpc2liaWxpdHk6ZnVuY3Rpb24oZSl7US5pc1Zpc2libGUhPT1lJiYoUS5pc1Zpc2libGU9ZSxRLnNjaGVkdWxlUmVuZGVyKCkpfSxtYWtlVGFyZ2V0QW5pbWF0YWJsZTpmdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0hMCksYShRLGUseSx0KX0sYWRkVmFsdWU6ZnVuY3Rpb24oZSx0KXtRLmhhc1ZhbHVlKGUpJiZRLnJlbW92ZVZhbHVlKGUpLFouc2V0KGUsdCksaltlXT10LmdldCgpLGZ1bmN0aW9uKGUsdCl7dmFyIG49dC5vbkNoYW5nZSgoZnVuY3Rpb24odCl7altlXT10LHkub25VcGRhdGUmJmQuZGVmYXVsdC51cGRhdGUoeiwhMSwhMCl9KSkscj10Lm9uUmVuZGVyUmVxdWVzdChRLnNjaGVkdWxlUmVuZGVyKTskLnNldChlLChmdW5jdGlvbigpe24oKSxyKCl9KSl9KGUsdCl9LHJlbW92ZVZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O1ouZGVsZXRlKGUpLG51bGw9PT0odD0kLmdldChlKSl8fHZvaWQgMD09PXR8fHQoKSwkLmRlbGV0ZShlKSxkZWxldGUgaltlXSx2KGUsayl9LGhhc1ZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBaLmhhcyhlKX0sZ2V0VmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1aLmdldChlKTtyZXR1cm4gdm9pZCAwPT09biYmdm9pZCAwIT09dCYmKG49QnQodCksUS5hZGRWYWx1ZShlLG4pKSxufSxmb3JFYWNoVmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFouZm9yRWFjaChlKX0scmVhZFZhbHVlOmZ1bmN0aW9uKGUpe3ZhciBuO3JldHVybiBudWxsIT09KG49altlXSkmJnZvaWQgMCE9PW4/bjpmKF8sZSx0KX0sc2V0QmFzZVRhcmdldDpmdW5jdGlvbihlLHQpe05bZV09dH0sZ2V0QmFzZVRhcmdldDpmdW5jdGlvbihlKXtpZihpKXt2YXIgdD1pKHksZSk7aWYodm9pZCAwIT09dCYmIWVlKHQpKXJldHVybiB0fXJldHVybiBOW2VdfX0sUikse2J1aWxkOmZ1bmN0aW9uKCl7cmV0dXJuIFcoKSxrfSxzY2hlZHVsZVJlbmRlcjpmdW5jdGlvbigpe2QuZGVmYXVsdC5yZW5kZXIoVSwhMSwhMCl9LHN5bmNSZW5kZXI6VSxzZXRQcm9wczpmdW5jdGlvbihlKXt5PWUsUi51cGRhdGVQcm9wTGlzdGVuZXJzKGUpLEY9ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2Zvcih2YXIgbyBpbiB0KXt2YXIgaT10W29dLGE9bltvXTtpZihlZShpKSllLmFkZFZhbHVlKG8saSk7ZWxzZSBpZihlZShhKSllLmFkZFZhbHVlKG8sQnQoaSkpO2Vsc2UgaWYoYSE9PWkpaWYoZS5oYXNWYWx1ZShvKSl7dmFyIGw9ZS5nZXRWYWx1ZShvKTshbC5oYXNBbmltYXRlZCYmbC5zZXQoaSl9ZWxzZSBlLmFkZFZhbHVlKG8sQnQobnVsbCE9PShyPWUuZ2V0U3RhdGljVmFsdWUobykpJiZ2b2lkIDAhPT1yP3I6aSkpfWZvcih2YXIgbyBpbiBuKXZvaWQgMD09PXRbb10mJmUucmVtb3ZlVmFsdWUobyk7cmV0dXJuIHR9KFEsQyh5KSxGKX0sZ2V0UHJvcHM6ZnVuY3Rpb24oKXtyZXR1cm4geX0sZ2V0VmFyaWFudDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gbnVsbD09PSh0PXkudmFyaWFudHMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0W2VdfSxnZXREZWZhdWx0VHJhbnNpdGlvbjpmdW5jdGlvbigpe3JldHVybiB5LnRyYW5zaXRpb259LGdldFZhcmlhbnRDb250ZXh0OmZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUmJihlPSExKSxlKXJldHVybiBudWxsPT1tP3ZvaWQgMDptLmdldFZhcmlhbnRDb250ZXh0KCk7aWYoIVgpe3ZhciB0PShudWxsPT1tP3ZvaWQgMDptLmdldFZhcmlhbnRDb250ZXh0KCkpfHx7fTtyZXR1cm4gdm9pZCAwIT09eS5pbml0aWFsJiYodC5pbml0aWFsPXkuaW5pdGlhbCksdH1mb3IodmFyIG49e30scj0wO3I8WnI7cisrKXt2YXIgbz1EcltyXSxpPXlbb107KEkoaSl8fCExPT09aSkmJihuW29dPWkpfXJldHVybiBufSxlbmFibGVMYXlvdXRQcm9qZWN0aW9uOmZ1bmN0aW9uKCl7UC5pc0VuYWJsZWQ9ITAsUS5sYXlvdXRUcmVlLmFkZChRKX0sbG9ja1Byb2plY3Rpb25UYXJnZXQ6ZnVuY3Rpb24oKXtQLmlzVGFyZ2V0TG9ja2VkPSEwfSx1bmxvY2tQcm9qZWN0aW9uVGFyZ2V0OmZ1bmN0aW9uKCl7US5zdG9wTGF5b3V0QW5pbWF0aW9uKCksUC5pc1RhcmdldExvY2tlZD0hMX0sZ2V0TGF5b3V0U3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gSH0sc2V0Q3Jvc3NmYWRlcjpmdW5jdGlvbihlKXtFPWV9LGlzUHJvamVjdGlvblJlYWR5OmZ1bmN0aW9uKCl7cmV0dXJuIFAuaXNFbmFibGVkJiZQLmlzSHlkcmF0ZWQmJkguaXNIeWRyYXRlZH0sc3RhcnRMYXlvdXRBbmltYXRpb246ZnVuY3Rpb24oZSx0LG4pe3ZvaWQgMD09PW4mJihuPSExKTt2YXIgcj1RLmdldFByb2plY3Rpb25BbmltYXRpb25Qcm9ncmVzcygpW2VdLG89bj9QLnJlbGF0aXZlVGFyZ2V0W2VdOlAudGFyZ2V0W2VdLGk9by5taW4sYT1vLm1heC1pO3JldHVybiByLmNsZWFyTGlzdGVuZXJzKCksci5zZXQoaSksci5zZXQoaSksci5vbkNoYW5nZSgoZnVuY3Rpb24odCl7US5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyhlLHQsdCthLG4pfSkpLFEuYW5pbWF0ZU1vdGlvblZhbHVlKGUsciwwLHQpfSxzdG9wTGF5b3V0QW5pbWF0aW9uOmZ1bmN0aW9uKCl7Q24oKGZ1bmN0aW9uKGUpe3JldHVybiBRLmdldFByb2plY3Rpb25BbmltYXRpb25Qcm9ncmVzcygpW2VdLnN0b3AoKX0pKX0sbWVhc3VyZVZpZXdwb3J0Qm94OmZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSEwKTt2YXIgbj1jKF8sdCk7cmV0dXJuIGV8fFluKG4saiksbn0sZ2V0UHJvamVjdGlvbkFuaW1hdGlvblByb2dyZXNzOmZ1bmN0aW9uKCl7cmV0dXJuIFN8fChTPXt4OkJ0KDApLHk6QnQoMCl9KSxTfSxzZXRQcm9qZWN0aW9uVGFyZ2V0QXhpczpmdW5jdGlvbihlLHQsbixyKXt2YXIgbzt2b2lkIDA9PT1yJiYocj0hMSkscj8oUC5yZWxhdGl2ZVRhcmdldHx8KFAucmVsYXRpdmVUYXJnZXQ9e3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19KSxvPVAucmVsYXRpdmVUYXJnZXRbZV0pOihQLnJlbGF0aXZlVGFyZ2V0PXZvaWQgMCxvPVAudGFyZ2V0W2VdKSxQLmlzSHlkcmF0ZWQ9ITAsby5taW49dCxvLm1heD1uLEQ9ITAsUi5ub3RpZnlTZXRBeGlzVGFyZ2V0KCl9LHJlYmFzZVByb2plY3Rpb25UYXJnZXQ6ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD1ILmxheW91dCk7dmFyIG49US5nZXRQcm9qZWN0aW9uQW5pbWF0aW9uUHJvZ3Jlc3MoKSxyPW4ueCxvPW4ueSxpPSEoUC5yZWxhdGl2ZVRhcmdldHx8UC5pc1RhcmdldExvY2tlZHx8ci5pc0FuaW1hdGluZygpfHxvLmlzQW5pbWF0aW5nKCkpOyhlfHxpKSYmQ24oKGZ1bmN0aW9uKGUpe3ZhciBuPXRbZV0scj1uLm1pbixvPW4ubWF4O1Euc2V0UHJvamVjdGlvblRhcmdldEF4aXMoZSxyLG8pfSkpfSxub3RpZnlMYXlvdXRSZWFkeTpmdW5jdGlvbihlKXshZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRQcm9qZWN0aW9uUGFyZW50KCk7aWYodCl7dmFyIG49SG4odC5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dCxlLmdldExheW91dFN0YXRlKCkubGF5b3V0KTtDbigoZnVuY3Rpb24odCl7ZS5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyh0LG5bdF0ubWluLG5bdF0ubWF4LCEwKX0pKX1lbHNlIGUucmViYXNlUHJvamVjdGlvblRhcmdldCgpfShRKSxRLm5vdGlmeUxheW91dFVwZGF0ZShILmxheW91dCxRLnByZXZWaWV3cG9ydEJveHx8SC5sYXlvdXQsZSl9LHJlc2V0VHJhbnNmb3JtOmZ1bmN0aW9uKCl7cmV0dXJuIHAoUSxfLHkpfSxyZXN0b3JlVHJhbnNmb3JtOmZ1bmN0aW9uKCl7cmV0dXJuIGgoXyxrKX0sdXBkYXRlTGF5b3V0UHJvamVjdGlvbjpmdW5jdGlvbigpe2lmKFEuaXNQcm9qZWN0aW9uUmVhZHkoKSl7dmFyIGU9SC5kZWx0YSx0PUgudHJlZVNjYWxlLG49dC54LHI9dC55LG89SC5kZWx0YVRyYW5zZm9ybTsoZnVuY3Rpb24oZSx0LG4scil7dmFyIG8saSxhPWUuZGVsdGEsbD1lLmxheW91dCxzPWUubGF5b3V0Q29ycmVjdGVkLGM9ZS50cmVlU2NhbGUsdT10LnRhcmdldDtpPWwsQm4oKG89cykueCxpLngpLEJuKG8ueSxpLnkpLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uLmxlbmd0aDtpZihyKXt2YXIgbyxpO3QueD10Lnk9MTtmb3IodmFyIGE9MDthPHI7YSsrKWk9KG89blthXSkuZ2V0TGF5b3V0U3RhdGUoKS5kZWx0YSx0LngqPWkueC5zY2FsZSx0LnkqPWkueS5zY2FsZSxGbihlLGkpLFZuKG8pJiZ6bihlLGUsby5nZXRMYXRlc3RWYWx1ZXMoKSl9fShzLGMsbiksYm4oYSxzLHUscil9KShILEEsUS5wYXRoLGopLEQmJlEubm90aWZ5Vmlld3BvcnRCb3hVcGRhdGUoQS50YXJnZXQsZSksRD0hMTt2YXIgaT1rcihlLHQpO2k9PT1vJiZuPT09dC54JiZyPT09dC55fHxRLnNjaGVkdWxlUmVuZGVyKCksSC5kZWx0YVRyYW5zZm9ybT1pfX0sdXBkYXRlVHJlZUxheW91dFByb2plY3Rpb246ZnVuY3Rpb24oKXtRLmxheW91dFRyZWUuZm9yRWFjaChIciksZC5kZWZhdWx0LnByZVJlbmRlcihHLCExLCEwKX0sZ2V0UHJvamVjdGlvblBhcmVudDpmdW5jdGlvbigpe2lmKHZvaWQgMD09PUwpe2Zvcih2YXIgZT0hMSx0PVEucGF0aC5sZW5ndGgtMTt0Pj0wO3QtLSl7dmFyIG49US5wYXRoW3RdO2lmKG4ucHJvamVjdGlvbi5pc0VuYWJsZWQpe2U9bjticmVha319TD1lfXJldHVybiBMfSxyZXNvbHZlUmVsYXRpdmVUYXJnZXRCb3g6ZnVuY3Rpb24oKXt2YXIgZT1RLmdldFByb2plY3Rpb25QYXJlbnQoKTtpZihQLnJlbGF0aXZlVGFyZ2V0JiZlJiYoZnVuY3Rpb24oZSx0KXtfbihlLnRhcmdldC54LGUucmVsYXRpdmVUYXJnZXQueCx0LnRhcmdldC54KSxfbihlLnRhcmdldC55LGUucmVsYXRpdmVUYXJnZXQueSx0LnRhcmdldC55KX0oUCxlLnByb2plY3Rpb24pLFZuKGUpKSl7dmFyIHQ9UC50YXJnZXQ7em4odCx0LGUuZ2V0TGF0ZXN0VmFsdWVzKCkpfX0sc2hvdWxkUmVzZXRUcmFuc2Zvcm06ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbih5Ll9sYXlvdXRSZXNldFRyYW5zZm9ybSl9LHBvaW50VG86ZnVuY3Rpb24oZSl7QT1lLnByb2plY3Rpb24sVD1lLmdldExhdGVzdFZhbHVlcygpLG51bGw9PU98fE8oKSxPPWwucGlwZShlLm9uU2V0QXhpc1RhcmdldChRLnNjaGVkdWxlVXBkYXRlTGF5b3V0UHJvamVjdGlvbiksZS5vbkxheW91dEFuaW1hdGlvbkNvbXBsZXRlKChmdW5jdGlvbigpe3ZhciBlO1EuaXNQcmVzZW50P1EucHJlc2VuY2U9aXIuUHJlc2VudDpudWxsPT09KGU9US5sYXlvdXRTYWZlVG9SZW1vdmUpfHx2b2lkIDA9PT1lfHxlLmNhbGwoUSl9KSkpfSxpc1ByZXNlbnQ6ITAscHJlc2VuY2U6aXIuRW50ZXJpbmd9KTtyZXR1cm4gUX19O2Z1bmN0aW9uIEhyKGUpe2UucmVzb2x2ZVJlbGF0aXZlVGFyZ2V0Qm94KCl9ZnVuY3Rpb24gVnIoZSl7ZS51cGRhdGVMYXlvdXRQcm9qZWN0aW9uKCl9dmFyIEJyLERyPXIuX19zcHJlYWRBcnJheShbXCJpbml0aWFsXCJdLHIuX19yZWFkKGVuKSksWnI9RHIubGVuZ3RoLCRyPW5ldyBTZXQoW1wid2lkdGhcIixcImhlaWdodFwiLFwidG9wXCIsXCJsZWZ0XCIsXCJyaWdodFwiLFwiYm90dG9tXCIsXCJ4XCIsXCJ5XCJdKSxGcj1mdW5jdGlvbihlKXtyZXR1cm4gJHIuaGFzKGUpfSxOcj1mdW5jdGlvbihlLHQpe2Uuc2V0KHQsITEpLGUuc2V0KHQpfSxVcj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PWEubnVtYmVyfHxlPT09YS5weH07IWZ1bmN0aW9uKGUpe2Uud2lkdGg9XCJ3aWR0aFwiLGUuaGVpZ2h0PVwiaGVpZ2h0XCIsZS5sZWZ0PVwibGVmdFwiLGUucmlnaHQ9XCJyaWdodFwiLGUudG9wPVwidG9wXCIsZS5ib3R0b209XCJib3R0b21cIn0oQnJ8fChCcj17fSkpO3ZhciBXcj1mdW5jdGlvbihlLHQpe3JldHVybiBwYXJzZUZsb2F0KGUuc3BsaXQoXCIsIFwiKVt0XSl9LHpyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dmFyIG89ci50cmFuc2Zvcm07aWYoXCJub25lXCI9PT1vfHwhbylyZXR1cm4gMDt2YXIgaT1vLm1hdGNoKC9ebWF0cml4M2RcXCgoLispXFwpJC8pO2lmKGkpcmV0dXJuIFdyKGlbMV0sdCk7dmFyIGE9by5tYXRjaCgvXm1hdHJpeFxcKCguKylcXCkkLyk7cmV0dXJuIGE/V3IoYVsxXSxlKTowfX0sR3I9bmV3IFNldChbXCJ4XCIsXCJ5XCIsXCJ6XCJdKSxxcj1HLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIUdyLmhhcyhlKX0pKSxZcj17d2lkdGg6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS54O3JldHVybiB0Lm1heC10Lm1pbn0saGVpZ2h0OmZ1bmN0aW9uKGUpe3ZhciB0PWUueTtyZXR1cm4gdC5tYXgtdC5taW59LHRvcDpmdW5jdGlvbihlLHQpe3ZhciBuPXQudG9wO3JldHVybiBwYXJzZUZsb2F0KG4pfSxsZWZ0OmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5sZWZ0O3JldHVybiBwYXJzZUZsb2F0KG4pfSxib3R0b206ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnkscj10LnRvcDtyZXR1cm4gcGFyc2VGbG9hdChyKSsobi5tYXgtbi5taW4pfSxyaWdodDpmdW5jdGlvbihlLHQpe3ZhciBuPWUueCxyPXQubGVmdDtyZXR1cm4gcGFyc2VGbG9hdChyKSsobi5tYXgtbi5taW4pfSx4OnpyKDQsMTMpLHk6enIoNSwxNCl9O2Z1bmN0aW9uIEtyKGUsdCxuLG8pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkuc29tZShGcil9KHQpP2Z1bmN0aW9uKGUsdCxuLG8pe3ZvaWQgMD09PW4mJihuPXt9KSx2b2lkIDA9PT1vJiYobz17fSksdD1yLl9fYXNzaWduKHt9LHQpLG89ci5fX2Fzc2lnbih7fSxvKTt2YXIgbD1PYmplY3Qua2V5cyh0KS5maWx0ZXIoRnIpLHM9W10sYz0hMSx1PVtdO2lmKGwuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIGw9ZS5nZXRWYWx1ZShyKTtpZihlLmhhc1ZhbHVlKHIpKXt2YXIgZixkPW5bcl0scD10W3JdLGg9JHQoZCk7aWYoa2UocCkpZm9yKHZhciB2PXAubGVuZ3RoLGc9bnVsbD09PXBbMF0/MTowO2c8djtnKyspZj9pLmludmFyaWFudCgkdChwW2ddKT09PWYsXCJBbGwga2V5ZnJhbWVzIG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZVwiKTooZj0kdChwW2ddKSxpLmludmFyaWFudChmPT09aHx8VXIoaCkmJlVyKGYpLFwiS2V5ZnJhbWVzIG11c3QgYmUgb2YgdGhlIHNhbWUgZGltZW5zaW9uIGFzIHRoZSBjdXJyZW50IHZhbHVlXCIpKTtlbHNlIGY9JHQocCk7aWYoaCE9PWYpaWYoVXIoaCkmJlVyKGYpKXt2YXIgQz1sLmdldCgpO1wic3RyaW5nXCI9PXR5cGVvZiBDJiZsLnNldChwYXJzZUZsb2F0KEMpKSxcInN0cmluZ1wiPT10eXBlb2YgcD90W3JdPXBhcnNlRmxvYXQocCk6QXJyYXkuaXNBcnJheShwKSYmZj09PWEucHgmJih0W3JdPXAubWFwKHBhcnNlRmxvYXQpKX1lbHNlKG51bGw9PWg/dm9pZCAwOmgudHJhbnNmb3JtKSYmKG51bGw9PWY/dm9pZCAwOmYudHJhbnNmb3JtKSYmKDA9PT1kfHwwPT09cCk/MD09PWQ/bC5zZXQoZi50cmFuc2Zvcm0oZCkpOnRbcl09aC50cmFuc2Zvcm0ocCk6KGN8fChzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiBxci5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcj1lLmdldFZhbHVlKG4pO3ZvaWQgMCE9PXImJih0LnB1c2goW24sci5nZXQoKV0pLHIuc2V0KG4uc3RhcnRzV2l0aChcInNjYWxlXCIpPzE6MCkpfSkpLHQubGVuZ3RoJiZlLnN5bmNSZW5kZXIoKSx0fShlKSxjPSEwKSx1LnB1c2gociksb1tyXT12b2lkIDAhPT1vW3JdP29bcl06dFtyXSxOcihsLHApKX19KSksdS5sZW5ndGgpe3ZhciBmPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10Lm1lYXN1cmVWaWV3cG9ydEJveCgpLG89dC5nZXRJbnN0YW5jZSgpLGk9Z2V0Q29tcHV0ZWRTdHlsZShvKSxhPWkuZGlzcGxheSxsPXt0b3A6aS50b3AsbGVmdDppLmxlZnQsYm90dG9tOmkuYm90dG9tLHJpZ2h0OmkucmlnaHQsdHJhbnNmb3JtOmkudHJhbnNmb3JtfTtcIm5vbmVcIj09PWEmJnQuc2V0U3RhdGljVmFsdWUoXCJkaXNwbGF5XCIsZS5kaXNwbGF5fHxcImJsb2NrXCIpLHQuc3luY1JlbmRlcigpO3ZhciBzPXQubWVhc3VyZVZpZXdwb3J0Qm94KCk7cmV0dXJuIG4uZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIG89dC5nZXRWYWx1ZShuKTtOcihvLFlyW25dKHIsbCkpLGVbbl09WXJbbl0ocyxpKX0pKSxlfSh0LGUsdSk7cmV0dXJuIHMubGVuZ3RoJiZzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPXIuX19yZWFkKHQsMiksbz1uWzBdLGk9blsxXTtlLmdldFZhbHVlKG8pLnNldChpKX0pKSxlLnN5bmNSZW5kZXIoKSx7dGFyZ2V0OmYsdHJhbnNpdGlvbkVuZDpvfX1yZXR1cm57dGFyZ2V0OnQsdHJhbnNpdGlvbkVuZDpvfX0oZSx0LG4sbyk6e3RhcmdldDp0LHRyYW5zaXRpb25FbmQ6b319dmFyIFhyPXt0cmVlVHlwZTpcImRvbVwiLHJlYWRWYWx1ZUZyb21JbnN0YW5jZTpmdW5jdGlvbihlLHQpe2lmKEsodCkpe3ZhciBuPVN0KHQpO3JldHVybiBuJiZuLmRlZmF1bHR8fDB9dmFyIHIsbz0ocj1lLHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHIpKTtyZXR1cm4obmUodCk/by5nZXRQcm9wZXJ0eVZhbHVlKHQpOm9bdF0pfHwwfSxzb3J0Tm9kZVBvc2l0aW9uOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIDImZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KT8xOi0xfSxnZXRCYXNlVGFyZ2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIG51bGw9PT0obj1lLnN0eWxlKXx8dm9pZCAwPT09bj92b2lkIDA6blt0XX0sbWVhc3VyZVZpZXdwb3J0Qm94OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGpuKGUsdC50cmFuc2Zvcm1QYWdlUG9pbnQpfSxyZXNldFRyYW5zZm9ybTpmdW5jdGlvbihlLHQsbil7dmFyIHI9bi50cmFuc2Zvcm1UZW1wbGF0ZTt0LnN0eWxlLnRyYW5zZm9ybT1yP3Ioe30sXCJcIik6XCJub25lXCIsZS5zY2hlZHVsZVJlbmRlcigpfSxyZXN0b3JlVHJhbnNmb3JtOmZ1bmN0aW9uKGUsdCl7ZS5zdHlsZS50cmFuc2Zvcm09dC5zdHlsZS50cmFuc2Zvcm19LHJlbW92ZVZhbHVlRnJvbVJlbmRlclN0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC52YXJzLHI9dC5zdHlsZTtkZWxldGUgbltlXSxkZWxldGUgcltlXX0sbWFrZVRhcmdldEFuaW1hdGFibGU6ZnVuY3Rpb24oZSx0LG4sbyl7dmFyIGk9bi50cmFuc2Zvcm1WYWx1ZXM7dm9pZCAwPT09byYmKG89ITApO3ZhciBhPXQudHJhbnNpdGlvbixsPXQudHJhbnNpdGlvbkVuZCxzPXIuX19yZXN0KHQsW1widHJhbnNpdGlvblwiLFwidHJhbnNpdGlvbkVuZFwiXSksYz1xdChzLGF8fHt9LGUpO2lmKGkmJihsJiYobD1pKGwpKSxzJiYocz1pKHMpKSxjJiYoYz1pKGMpKSksbyl7enQoZSxzLGMpO3ZhciB1PWZ1bmN0aW9uKGUsdCxuLG8pe3ZhciBpPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbyxpPXIuX19yZXN0KHQsW10pLGE9ZS5nZXRJbnN0YW5jZSgpO2lmKCEoYSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSlyZXR1cm57dGFyZ2V0OmksdHJhbnNpdGlvbkVuZDpufTtmb3IodmFyIGwgaW4gbiYmKG49ci5fX2Fzc2lnbih7fSxuKSksZS5mb3JFYWNoVmFsdWUoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0KCk7aWYoc3IodCkpe3ZhciBuPXVyKHQsYSk7biYmZS5zZXQobil9fSkpLGkpe3ZhciBzPWlbbF07aWYoc3Iocykpe3ZhciBjPXVyKHMsYSk7YyYmKGlbbF09YyxuJiYobnVsbCE9PShvPW5bbF0pJiZ2b2lkIDAhPT1vfHwobltsXT1zKSkpfX1yZXR1cm57dGFyZ2V0OmksdHJhbnNpdGlvbkVuZDpufX0oZSx0LG8pO3JldHVybiBLcihlLHQ9aS50YXJnZXQsbixvPWkudHJhbnNpdGlvbkVuZCl9KGUscyxjLGwpO2w9dS50cmFuc2l0aW9uRW5kLHM9dS50YXJnZXR9cmV0dXJuIHIuX19hc3NpZ24oe3RyYW5zaXRpb246YSx0cmFuc2l0aW9uRW5kOmx9LHMpfSxzY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM6U2UsYnVpbGQ6ZnVuY3Rpb24oZSx0LG4scixvLGksYSl7dm9pZCAwIT09ZS5pc1Zpc2libGUmJih0LnN0eWxlLnZpc2liaWxpdHk9ZS5pc1Zpc2libGU/XCJ2aXNpYmxlXCI6XCJoaWRkZW5cIik7dmFyIGw9ci5pc0VuYWJsZWQmJm8uaXNIeWRyYXRlZDthZSh0LG4scixvLGksYS50cmFuc2Zvcm1UZW1wbGF0ZSxsP2tyOnZvaWQgMCxsP1JyOnZvaWQgMCl9LHJlbmRlcjpMZX0sSnI9VHIoWHIpLFFyPVRyKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxYcikse2dldEJhc2VUYXJnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XX0scmVhZFZhbHVlRnJvbUluc3RhbmNlOmZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIEsodCk/KG51bGw9PT0obj1TdCh0KSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZGVmYXVsdCl8fDA6KHQ9T2UuaGFzKHQpP3Q6X2UodCksZS5nZXRBdHRyaWJ1dGUodCkpfSxzY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM6TWUsYnVpbGQ6ZnVuY3Rpb24oZSx0LG4scixvLGksYSl7dmFyIGw9ci5pc0VuYWJsZWQmJm8uaXNIeWRyYXRlZDttZSh0LG4scixvLGksYS50cmFuc2Zvcm1UZW1wbGF0ZSxsP2tyOnZvaWQgMCxsP1JyOnZvaWQgMCl9LHJlbmRlcjpFZX0pKSxlbz1mdW5jdGlvbihlLHQpe3JldHVybiBOKGUpP1FyKHQse2VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0aW9uOiExfSk6SnIodCx7ZW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRpb246ITB9KX0sdG89ci5fX2Fzc2lnbihyLl9fYXNzaWduKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxvbikscHQpLGxyKSxTciksbm89JCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gWmUoZSx0LHRvLGVvKX0pKSxybz0kKFplKSxvbz0wO2Z1bmN0aW9uIGlvKCl7dmFyIGU9b287cmV0dXJuIG9vKyssZX12YXIgYW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuaW5pdGlhbCxyPWUuaXNQcmVzZW50LGk9ZS5vbkV4aXRDb21wbGV0ZSxhPWUuY3VzdG9tLGw9ZS5wcmVzZW5jZUFmZmVjdHNMYXlvdXQscz1fKGxvKSxjPV8oaW8pLGY9by51c2VNZW1vKChmdW5jdGlvbigpe3JldHVybntpZDpjLGluaXRpYWw6bixpc1ByZXNlbnQ6cixjdXN0b206YSxvbkV4aXRDb21wbGV0ZTpmdW5jdGlvbihlKXtzLnNldChlLCEwKTt2YXIgdD0hMDtzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2V8fCh0PSExKX0pKSx0JiYobnVsbD09aXx8aSgpKX0scmVnaXN0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHMuc2V0KGUsITEpLGZ1bmN0aW9uKCl7cmV0dXJuIHMuZGVsZXRlKGUpfX19fSksbD92b2lkIDA6W3JdKTtyZXR1cm4gby51c2VNZW1vKChmdW5jdGlvbigpe3MuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gcy5zZXQodCwhMSl9KSl9KSxbcl0pLHUudXNlRWZmZWN0KChmdW5jdGlvbigpeyFyJiYhcy5zaXplJiYobnVsbD09aXx8aSgpKX0pLFtyXSksdS5jcmVhdGVFbGVtZW50KHguUHJvdmlkZXIse3ZhbHVlOmZ9LHQpfTtmdW5jdGlvbiBsbygpe3JldHVybiBuZXcgTWFwfWZ1bmN0aW9uIHNvKGUpe3JldHVybiBlLmtleXx8XCJcIn1mdW5jdGlvbiBjbyhlLHQsbil7dm9pZCAwPT09biYmKG49e30pO3ZhciByPWVlKGUpP2U6QnQoZSk7cmV0dXJuIEF0KFwiXCIscix0LG4pLHtzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHIuc3RvcCgpfX19ZnVuY3Rpb24gdW8oKXt2YXIgZT1CdCgxKSx0PXtsZWFkOnZvaWQgMCxmb2xsb3c6dm9pZCAwLGNyb3NzZmFkZU9wYWNpdHk6ITEscHJlc2VydmVGb2xsb3dPcGFjaXR5OiExfSxuPXIuX19hc3NpZ24oe30sdCksbz17fSxpPXt9LGE9ITEsYz1udWxsLHU9MDtmdW5jdGlvbiBmKG4sbyl7dmFyIGk9dC5sZWFkLGw9dC5mb2xsb3c7YT0hMCxjPW51bGw7dmFyIHU9ITEsZj1mdW5jdGlvbigpe3U9ITAsaSYmaS5zY2hlZHVsZVJlbmRlcigpLGwmJmwuc2NoZWR1bGVSZW5kZXIoKX0scD1mdW5jdGlvbigpe2E9ITEsYz1zLmdldEZyYW1lRGF0YSgpLnRpbWVzdGFtcH07cmV0dXJuIG89byYmUHQobyxcImNyb3NzZmFkZVwiKSxjbyhlLG4sci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG8pLHtvblVwZGF0ZTpmLG9uQ29tcGxldGU6ZnVuY3Rpb24oKXt1P3AoKTooZS5zZXQobiksZC5kZWZhdWx0LnJlYWQocCkpLGYoKX19KSl9cmV0dXJue2lzQWN0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIG8mJihhfHxzLmdldEZyYW1lRGF0YSgpLnRpbWVzdGFtcD09PWMpfSxmcm9tTGVhZDpmdW5jdGlvbihlKXtyZXR1cm4gZigwLGUpfSx0b0xlYWQ6ZnVuY3Rpb24ocil7dmFyIG89MDtyZXR1cm4gdC5wcmV2VmFsdWVzfHx0LmZvbGxvdz9uLmxlYWQ9PT10LmZvbGxvdyYmbi5mb2xsb3c9PT10LmxlYWQmJihvPTEtZS5nZXQoKSk6bz0xLGUuc2V0KG8pLGYoMSxyKX0scmVzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5zZXQoMSl9LHN0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gZS5zdG9wKCl9LGdldENyb3NzZmFkZVN0YXRlOmZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBuLHIsYT1zLmdldEZyYW1lRGF0YSgpLnRpbWVzdGFtcCxjPXQubGVhZCxmPXQuZm9sbG93O2lmKGEhPT11JiZjKXt1PWE7dmFyIGQ9Yy5nZXRMYXRlc3RWYWx1ZXMoKTtPYmplY3QuYXNzaWduKG8sZCk7dmFyIHA9Zj9mLmdldExhdGVzdFZhbHVlcygpOnQucHJldlZhbHVlcztPYmplY3QuYXNzaWduKGkscCk7dmFyIGg9ZS5nZXQoKSx2PW51bGwhPT0obj1kLm9wYWNpdHkpJiZ2b2lkIDAhPT1uP246MSxnPW51bGwhPT0ocj1udWxsPT1wP3ZvaWQgMDpwLm9wYWNpdHkpJiZ2b2lkIDAhPT1yP3I6MTt0LmNyb3NzZmFkZU9wYWNpdHkmJmY/KG8ub3BhY2l0eT1sLm1peCghMSE9PWYuaXNWaXNpYmxlPzA6Zyx2LGZvKGgpKSxpLm9wYWNpdHk9dC5wcmVzZXJ2ZUZvbGxvd09wYWNpdHk/ZzpsLm1peChnLDAscG8oaCkpKTpmfHwoby5vcGFjaXR5PWwubWl4KGcsdixoKSksZnVuY3Rpb24oZSx0LG4scixvLGkpe2Zvcih2YXIgYT0wO2E8Z287YSsrKXt2YXIgcz1cImJvcmRlclwiK3ZvW2FdK1wiUmFkaXVzXCIsYz1DbyhyLHMpLHU9Q28obixzKTtpZigodm9pZCAwIT09Y3x8dm9pZCAwIT09dSkmJihjfHwoYz0wKSx1fHwodT0wKSxcIm51bWJlclwiPT10eXBlb2YgYyYmXCJudW1iZXJcIj09dHlwZW9mIHUpKXt2YXIgZj1NYXRoLm1heChsLm1peChjLHUsaSksMCk7ZVtzXT10W3NdPWZ9fWlmKHIucm90YXRlfHxuLnJvdGF0ZSl7dmFyIGQ9bC5taXgoci5yb3RhdGV8fDAsbi5yb3RhdGV8fDAsaSk7ZS5yb3RhdGU9dC5yb3RhdGU9ZH0hbyYmbi5iYWNrZ3JvdW5kQ29sb3ImJnIuYmFja2dyb3VuZENvbG9yJiYoZS5iYWNrZ3JvdW5kQ29sb3I9dC5iYWNrZ3JvdW5kQ29sb3I9bC5taXhDb2xvcihyLmJhY2tncm91bmRDb2xvcixuLmJhY2tncm91bmRDb2xvcikoaSkpfShvLGksZCxwfHx7fSxCb29sZWFuKGYpLGgpfX0oKSxuPT09dC5sZWFkP286bj09PXQuZm9sbG93P2k6dm9pZCAwfSxzZXRPcHRpb25zOmZ1bmN0aW9uKGUpe249dCx0PWUsbz17fSxpPXt9fSxnZXRMYXRlc3RWYWx1ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gb319fXZhciBmbz1obygwLC41LGwuY2lyY091dCkscG89aG8oLjUsLjk1LGwubGluZWFyKTtmdW5jdGlvbiBobyhlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiByPGU/MDpyPnQ/MTpuKGwucHJvZ3Jlc3MoZSx0LHIpKX19dmFyIHZvPVtcIlRvcExlZnRcIixcIlRvcFJpZ2h0XCIsXCJCb3R0b21MZWZ0XCIsXCJCb3R0b21SaWdodFwiXSxnbz12by5sZW5ndGg7ZnVuY3Rpb24gQ28oZSx0KXt2YXIgbjtyZXR1cm4gbnVsbCE9PShuPWVbdF0pJiZ2b2lkIDAhPT1uP246ZS5ib3JkZXJSYWRpdXN9dmFyIG1vPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgdD1udWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIHQuY2hpbGRyZW49bmV3IFNldCx0LnN0YWNrcz1uZXcgTWFwLHQuaGFzTW91bnRlZD0hMSx0LnVwZGF0ZVNjaGVkdWxlZD0hMSx0LnJlbmRlclNjaGVkdWxlZD0hMSx0LnN5bmNDb250ZXh0PXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxicigpKSx7c3luY1VwZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5zY2hlZHVsZVVwZGF0ZShlKX0sZm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt0LnN5bmNDb250ZXh0PXIuX19hc3NpZ24oe30sdC5zeW5jQ29udGV4dCksdC5zY2hlZHVsZVVwZGF0ZSghMCl9LHJlZ2lzdGVyOmZ1bmN0aW9uKGUpe3JldHVybiB0LmFkZENoaWxkKGUpfSxyZW1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQucmVtb3ZlQ2hpbGQoZSl9fSksdH1yZXR1cm4gci5fX2V4dGVuZHModCxlKSx0LnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3RoaXMuaGFzTW91bnRlZD0hMH0sdC5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5zdGFydExheW91dEFuaW1hdGlvbigpfSx0LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJTY2hlZHVsZWQ9ITAsITB9LHQucHJvdG90eXBlLnN0YXJ0TGF5b3V0QW5pbWF0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLnJlbmRlclNjaGVkdWxlZD10aGlzLnVwZGF0ZVNjaGVkdWxlZD0hMTt2YXIgdD10aGlzLnByb3BzLnR5cGU7dGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmlzUHJlc2VudD9lLnByZXNlbmNlIT09aXIuRW50ZXJpbmcmJihlLnByZXNlbmNlPWUucHJlc2VuY2U9PT1pci5FeGl0aW5nP2lyLkVudGVyaW5nOmlyLlByZXNlbnQpOmUucHJlc2VuY2U9aXIuRXhpdGluZ30pKSx0aGlzLnVwZGF0ZVN0YWNrcygpO3ZhciBuPXtsYXlvdXRSZWFkeTpmdW5jdGlvbihuKXt2b2lkIDAhPT1uLmdldExheW91dElkKCk/ZS5nZXRTdGFjayhuKS5hbmltYXRlKG4sXCJjcm9zc2ZhZGVcIj09PXQpOm4ubm90aWZ5TGF5b3V0UmVhZHkoKX0scGFyZW50OnRoaXMuY29udGV4dC52aXN1YWxFbGVtZW50fTt0aGlzLmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLnN5bmNDb250ZXh0LmFkZCh0KX0pKSx0aGlzLnN5bmNDb250ZXh0LmZsdXNoKG4pLHRoaXMuc3RhY2tzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsZWFyU25hcHNob3QoKX0pKX0sdC5wcm90b3R5cGUudXBkYXRlU3RhY2tzPWZ1bmN0aW9uKCl7dGhpcy5zdGFja3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudXBkYXRlTGVhZEFuZEZvbGxvdygpfSkpfSx0LnByb3RvdHlwZS5zY2hlZHVsZVVwZGF0ZT1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT0hMSksIWUmJnRoaXMudXBkYXRlU2NoZWR1bGVkfHwodGhpcy51cGRhdGVTY2hlZHVsZWQ9ITAsdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKXshZnVuY3Rpb24oZSl7Zm9yKHZhciB0PSExLG49e30scj0wO3I8ei5sZW5ndGg7cisrKXt2YXIgbz1cInJvdGF0ZVwiK3pbcl07ZS5oYXNWYWx1ZShvKSYmMCE9PWUuZ2V0U3RhdGljVmFsdWUobykmJih0PSEwLG5bb109ZS5nZXRTdGF0aWNWYWx1ZShvKSxlLnNldFN0YXRpY1ZhbHVlKG8sMCkpfWlmKHQpe2Zvcih2YXIgbyBpbiBlLnN5bmNSZW5kZXIoKSxuKWUuc2V0U3RhdGljVmFsdWUobyxuW29dKTtlLnNjaGVkdWxlUmVuZGVyKCl9fShlKSxlLnNob3VsZFJlc2V0VHJhbnNmb3JtKCkmJmUucmVzZXRUcmFuc2Zvcm0oKX0pKSx0aGlzLmNoaWxkcmVuLmZvckVhY2goSW4pLHRoaXMuc3RhY2tzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnVwZGF0ZVNuYXBzaG90KCl9KSksIWUmJnRoaXMucmVuZGVyU2NoZWR1bGVkfHwodGhpcy5yZW5kZXJTY2hlZHVsZWQ9ITAsdGhpcy5mb3JjZVVwZGF0ZSgpKSl9LHQucHJvdG90eXBlLmFkZENoaWxkPWZ1bmN0aW9uKGUpe3RoaXMuY2hpbGRyZW4uYWRkKGUpLHRoaXMuYWRkVG9TdGFjayhlKSxlLnByZXNlbmNlPXRoaXMuaGFzTW91bnRlZD9pci5FbnRlcmluZzppci5QcmVzZW50fSx0LnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbihlKXt0aGlzLnNjaGVkdWxlVXBkYXRlKCksdGhpcy5jaGlsZHJlbi5kZWxldGUoZSksdGhpcy5yZW1vdmVGcm9tU3RhY2soZSl9LHQucHJvdG90eXBlLmFkZFRvU3RhY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRTdGFjayhlKTtudWxsPT10fHx0LmFkZChlKX0sdC5wcm90b3R5cGUucmVtb3ZlRnJvbVN0YWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0U3RhY2soZSk7bnVsbD09dHx8dC5yZW1vdmUoZSl9LHQucHJvdG90eXBlLmdldFN0YWNrPWZ1bmN0aW9uKGUpe3ZhciB0LG4sbyxpLGEsbCxzLGMsdT1lLmdldExheW91dElkKCk7aWYodm9pZCAwIT09dSlyZXR1cm4hdGhpcy5zdGFja3MuaGFzKHUpJiZ0aGlzLnN0YWNrcy5zZXQodSwoaT1uZXcgU2V0LGE9e2xlYWRJc0V4aXRpbmc6ITF9LGw9ci5fX2Fzc2lnbih7fSxhKSxzPXVvKCksYz0hMSx7YWRkOmZ1bmN0aW9uKGUpe2Uuc2V0Q3Jvc3NmYWRlcihzKSxpLmFkZChlKSxvJiYoZS5wcmV2RHJhZ0N1cnNvcj1vKSxhLmxlYWR8fChhLmxlYWQ9ZSl9LHJlbW92ZTpmdW5jdGlvbihlKXtpLmRlbGV0ZShlKX0sZ2V0TGVhZDpmdW5jdGlvbigpe3JldHVybiBhLmxlYWR9LHVwZGF0ZVNuYXBzaG90OmZ1bmN0aW9uKCl7aWYoYS5sZWFkKXt0PXMuaXNBY3RpdmUoKT9zLmdldExhdGVzdFZhbHVlcygpOmEubGVhZC5nZXRMYXRlc3RWYWx1ZXMoKSxuPWEubGVhZC5wcmV2Vmlld3BvcnRCb3g7dmFyIGU9bnIuZ2V0KGEubGVhZCk7ZSYmZS5pc0RyYWdnaW5nJiYobz1lLmN1cnNvclByb2dyZXNzKX19LGNsZWFyU25hcHNob3Q6ZnVuY3Rpb24oKXtvPW49dm9pZCAwfSx1cGRhdGVMZWFkQW5kRm9sbG93OmZ1bmN0aW9uKCl7dmFyIGUsbixvO2w9ci5fX2Fzc2lnbih7fSxhKTtmb3IodmFyIHU9QXJyYXkuZnJvbShpKSxmPXUubGVuZ3RoO2YtLTtmPj0wKXt2YXIgZD11W2ZdO2lmKG4mJihudWxsIT1vfHwobz1kKSksbnVsbCE9bnx8KG49ZCksbiYmbylicmVha31hLmxlYWQ9bixhLmZvbGxvdz1vLGEubGVhZElzRXhpdGluZz0obnVsbD09PShlPWEubGVhZCl8fHZvaWQgMD09PWU/dm9pZCAwOmUucHJlc2VuY2UpPT09aXIuRXhpdGluZyxzLnNldE9wdGlvbnMoe2xlYWQ6bixmb2xsb3c6byxwcmV2VmFsdWVzOnQsY3Jvc3NmYWRlT3BhY2l0eToobnVsbD09bz92b2lkIDA6by5pc1ByZXNlbmNlUm9vdCl8fChudWxsPT1uP3ZvaWQgMDpuLmlzUHJlc2VuY2VSb290KX0pLGEubGVhZD09PWwuZm9sbG93fHxsLmxlYWQ9PT1hLmxlYWQmJmwubGVhZElzRXhpdGluZz09PWEubGVhZElzRXhpdGluZ3x8KGM9ITApfSxhbmltYXRlOmZ1bmN0aW9uKGUsdCl7dmFyIHI7aWYodm9pZCAwPT09dCYmKHQ9ITEpLGU9PT1hLmxlYWQpe3Q/ZS5wb2ludFRvKGEubGVhZCk6ZS5zZXRWaXNpYmlsaXR5KCEwKTt2YXIgbz17fSxpPW51bGw9PT0ocj1hLmZvbGxvdyl8fHZvaWQgMD09PXI/dm9pZCAwOnIuZ2V0UHJvamVjdGlvblBhcmVudCgpO2lmKGkmJihvLnByZXZQYXJlbnQ9aSksZS5wcmVzZW5jZT09PWlyLkVudGVyaW5nP28ub3JpZ2luQm94PWEuZm9sbG93P2EuZm9sbG93LnByZXZWaWV3cG9ydEJveDpuOmUucHJlc2VuY2U9PT1pci5FeGl0aW5nJiYoby50YXJnZXRCb3g9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gbnVsbD09PShlPWEuZm9sbG93KXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dH0oKSksYyl7Yz0hMTt2YXIgbD1lLmdldERlZmF1bHRUcmFuc2l0aW9uKCk7ZS5wcmVzZW5jZT09PWlyLkVudGVyaW5nP3MudG9MZWFkKGwpOnMuZnJvbUxlYWQobCl9ZS5ub3RpZnlMYXlvdXRSZWFkeShvKX1lbHNlIHQ/YS5sZWFkJiZlLnBvaW50VG8oYS5sZWFkKTplLnNldFZpc2liaWxpdHkoITEpfX0pKSx0aGlzLnN0YWNrcy5nZXQodSl9LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB1LmNyZWF0ZUVsZW1lbnQoX3IuUHJvdmlkZXIse3ZhbHVlOnRoaXMuc3luY0NvbnRleHR9LHRoaXMucHJvcHMuY2hpbGRyZW4pfSx0LmNvbnRleHRUeXBlPXcsdH0odS5Db21wb25lbnQpO2Z1bmN0aW9uIHlvKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9dmFyIHdvPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7cmVuZGVyZXI6ZW99LG9uKSxwdCksYm89ci5fX2Fzc2lnbihyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sd28pLGxyKSxTcik7ZnVuY3Rpb24geG8oZSl7dmFyIHQ9XygoZnVuY3Rpb24oKXtyZXR1cm4gQnQoZSl9KSk7aWYoby51c2VDb250ZXh0KHkpLmlzU3RhdGljKXt2YXIgbj1yLl9fcmVhZChvLnVzZVN0YXRlKGUpLDIpWzFdO28udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiB0Lm9uQ2hhbmdlKG4pfSksW10pfXJldHVybiB0fWZ1bmN0aW9uIF9vKGUsdCl7by51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7aWYoZWUoZSkpcmV0dXJuIGUub25DaGFuZ2UodCl9KSxbdF0pfWZ1bmN0aW9uIExvKGUsdCl7dmFyIG49eG8odCgpKSxyPWZ1bmN0aW9uKCl7cmV0dXJuIG4uc2V0KHQoKSl9O3JldHVybiByKCksZnVuY3Rpb24oZSx0KXtvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXt2YXIgbj1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUub25DaGFuZ2UodCl9KSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pKX19KSl9KGUsKGZ1bmN0aW9uKCl7cmV0dXJuIGQuZGVmYXVsdC51cGRhdGUociwhMSwhMCl9KSksbn12YXIgT28sRW89ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZlLm1peH0oZSk/ZS5taXg6dm9pZCAwfTtmdW5jdGlvbiBTbygpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTt2YXIgbj0hQXJyYXkuaXNBcnJheShlWzBdKSxvPW4/MDotMSxpPWVbMCtvXSxhPWVbMStvXSxzPWVbMitvXSxjPWVbMytvXSx1PWwuaW50ZXJwb2xhdGUoYSxzLHIuX19hc3NpZ24oe21peGVyOkVvKHNbMF0pfSxjKSk7cmV0dXJuIG4/dShpKTp1fWZ1bmN0aW9uIE1vKGUsdCxuLG8pe3ZhciBpPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dDpTbyh0LG4sbyk7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/am8oZSxpKTpqbyhbZV0sKGZ1bmN0aW9uKGUpe3ZhciB0PXIuX19yZWFkKGUsMSlbMF07cmV0dXJuIGkodCl9KSl9ZnVuY3Rpb24gam8oZSx0KXt2YXIgbj1fKChmdW5jdGlvbigpe3JldHVybltdfSkpO3JldHVybiBMbyhlLChmdW5jdGlvbigpe24ubGVuZ3RoPTA7Zm9yKHZhciByPWUubGVuZ3RoLG89MDtvPHI7bysrKW5bb109ZVtvXS5nZXQoKTtyZXR1cm4gdChuKX0pKX1mdW5jdGlvbiBrbygpe3JldHVybntzY3JvbGxYOkJ0KDApLHNjcm9sbFk6QnQoMCksc2Nyb2xsWFByb2dyZXNzOkJ0KDApLHNjcm9sbFlQcm9ncmVzczpCdCgwKX19ZnVuY3Rpb24gUm8oZSx0LG4pe24uc2V0KGUmJnQ/ZS90OjApfWZ1bmN0aW9uIFBvKGUsdCl7dmFyIG49ZnVuY3Rpb24oKXt2YXIgbj10KCkscj1uLnhPZmZzZXQsbz1uLnlPZmZzZXQsaT1uLnhNYXhPZmZzZXQsYT1uLnlNYXhPZmZzZXQ7ZS5zY3JvbGxYLnNldChyKSxlLnNjcm9sbFkuc2V0KG8pLFJvKHIsaSxlLnNjcm9sbFhQcm9ncmVzcyksUm8obyxhLGUuc2Nyb2xsWVByb2dyZXNzKX07cmV0dXJuIG4oKSxufWZ1bmN0aW9uIEFvKCl7cmV0dXJue3hPZmZzZXQ6d2luZG93LnBhZ2VYT2Zmc2V0LHlPZmZzZXQ6d2luZG93LnBhZ2VZT2Zmc2V0LHhNYXhPZmZzZXQ6ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aC13aW5kb3cuaW5uZXJXaWR0aCx5TWF4T2Zmc2V0OmRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0LXdpbmRvdy5pbm5lckhlaWdodH19dmFyIElvLFRvPSExO2Z1bmN0aW9uIEhvKCl7dmFyIGU9ITEsdD1bXSxuPW5ldyBTZXQsbz17c3Vic2NyaWJlOmZ1bmN0aW9uKGUpe3JldHVybiBuLmFkZChlKSxmdW5jdGlvbigpe24uZGVsZXRlKGUpfX0sc3RhcnQ6ZnVuY3Rpb24ocixvKXtpZihlKXt2YXIgaT1bXTtyZXR1cm4gbi5mb3JFYWNoKChmdW5jdGlvbihlKXtpLnB1c2goWXQoZSxyLHt0cmFuc2l0aW9uT3ZlcnJpZGU6b30pKX0pKSxQcm9taXNlLmFsbChpKX1yZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3QucHVzaCh7YW5pbWF0aW9uOltyLG9dLHJlc29sdmU6ZX0pfSkpfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGkuaW52YXJpYW50KGUsXCJjb250cm9scy5zZXQoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYSBjb21wb25lbnQgaGFzIG1vdW50ZWQuIENvbnNpZGVyIGNhbGxpbmcgd2l0aGluIGEgdXNlRWZmZWN0IGhvb2suXCIpLG4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7QXJyYXkuaXNBcnJheSh0KT9XdChlLHQpOlwic3RyaW5nXCI9PXR5cGVvZiB0P1d0KGUsW3RdKTpVdChlLHQpfShlLHQpfSkpfSxzdG9wOmZ1bmN0aW9uKCl7bi5mb3JFYWNoKChmdW5jdGlvbihlKXshZnVuY3Rpb24oZSl7ZS5mb3JFYWNoVmFsdWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0b3AoKX0pKX0oZSl9KSl9LG1vdW50OmZ1bmN0aW9uKCl7cmV0dXJuIGU9ITAsdC5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1lLmFuaW1hdGlvbixuPWUucmVzb2x2ZTtvLnN0YXJ0LmFwcGx5KG8sci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKHQpKSkudGhlbihuKX0pKSxmdW5jdGlvbigpe2U9ITEsby5zdG9wKCl9fX07cmV0dXJuIG99dmFyIFZvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuY29tcG9uZW50Q29udHJvbHM9bmV3IFNldH1yZXR1cm4gZS5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuY29tcG9uZW50Q29udHJvbHMuYWRkKGUpLGZ1bmN0aW9uKCl7cmV0dXJuIHQuY29tcG9uZW50Q29udHJvbHMuZGVsZXRlKGUpfX0sZS5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmNvbXBvbmVudENvbnRyb2xzLmZvckVhY2goKGZ1bmN0aW9uKG4pe24uc3RhcnQoZS5uYXRpdmVFdmVudHx8ZSx0KX0pKX0sZS5wcm90b3R5cGUudXBkYXRlQ29uc3RyYWludHM9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9ITApLHRoaXMuY29tcG9uZW50Q29udHJvbHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS51cGRhdGVDb25zdHJhaW50cygpfSkpLGUmJlFuKCl9LGV9KCksQm89ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFZvfSxEbz1mdW5jdGlvbigpe3JldHVybnt9fSxabz1Ucih7YnVpbGQ6ZnVuY3Rpb24oKXt9LG1lYXN1cmVWaWV3cG9ydEJveDpmdW5jdGlvbigpe3JldHVybnt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fX0scmVzZXRUcmFuc2Zvcm06ZnVuY3Rpb24oKXt9LHJlc3RvcmVUcmFuc2Zvcm06ZnVuY3Rpb24oKXt9LHJlbW92ZVZhbHVlRnJvbVJlbmRlclN0YXRlOmZ1bmN0aW9uKCl7fSxyZW5kZXI6ZnVuY3Rpb24oKXt9LHNjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczpEbyxyZWFkVmFsdWVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuLmluaXRpYWxTdGF0ZVt0XXx8MH0sbWFrZVRhcmdldEFuaW1hdGFibGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnRyYW5zaXRpb24sbz10LnRyYW5zaXRpb25FbmQsaT1yLl9fcmVzdCh0LFtcInRyYW5zaXRpb25cIixcInRyYW5zaXRpb25FbmRcIl0pO3JldHVybiB6dChlLGkscXQoaSxufHx7fSxlKSksci5fX2Fzc2lnbih7dHJhbnNpdGlvbjpuLHRyYW5zaXRpb25FbmQ6b30saSl9fSksJG89VGUoe3NjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczpEbyxjcmVhdGVSZW5kZXJTdGF0ZTpEb30pLEZvPWZ1bmN0aW9uKGUpe3JldHVybiBlPi4wMDE/MS9lOjFlNX0sTm89ITE7dC5BbmltYXRlUHJlc2VuY2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuY3VzdG9tLGk9ZS5pbml0aWFsLGE9dm9pZCAwPT09aXx8aSxsPWUub25FeGl0Q29tcGxldGUscz1lLmV4aXRCZWZvcmVFbnRlcixjPWUucHJlc2VuY2VBZmZlY3RzTGF5b3V0LGY9dm9pZCAwPT09Y3x8YyxkPWZ1bmN0aW9uKCl7dmFyIGU9by51c2VSZWYoITEpLHQ9ci5fX3JlYWQoby51c2VTdGF0ZSgwKSwyKSxuPXRbMF0saT10WzFdO3JldHVybiBmdCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5jdXJyZW50PSEwfSkpLG8udXNlQ2FsbGJhY2soKGZ1bmN0aW9uKCl7IWUuY3VycmVudCYmaShuKzEpfSksW25dKX0oKSxwPW8udXNlQ29udGV4dChfcik7T3IocCkmJihkPXAuZm9yY2VVcGRhdGUpO3ZhciBoPW8udXNlUmVmKCEwKSx2PWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiBvLkNoaWxkcmVuLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7by5pc1ZhbGlkRWxlbWVudChlKSYmdC5wdXNoKGUpfSkpLHR9KHQpLGc9by51c2VSZWYodiksQz1vLnVzZVJlZihuZXcgTWFwKS5jdXJyZW50LG09by51c2VSZWYobmV3IFNldCkuY3VycmVudDtpZihmdW5jdGlvbihlLHQpe2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49c28oZSk7dC5zZXQobixlKX0pKX0odixDKSxoLmN1cnJlbnQpcmV0dXJuIGguY3VycmVudD0hMSx1LmNyZWF0ZUVsZW1lbnQodS5GcmFnbWVudCxudWxsLHYubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdS5jcmVhdGVFbGVtZW50KGFvLHtrZXk6c28oZSksaXNQcmVzZW50OiEwLGluaXRpYWw6ISFhJiZ2b2lkIDAscHJlc2VuY2VBZmZlY3RzTGF5b3V0OmZ9LGUpfSkpKTtmb3IodmFyIHk9ci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKHYpKSx3PWcuY3VycmVudC5tYXAoc28pLGI9di5tYXAoc28pLHg9dy5sZW5ndGgsXz0wO188eDtfKyspe3ZhciBMPXdbX107LTE9PT1iLmluZGV4T2YoTCk/bS5hZGQoTCk6bS5kZWxldGUoTCl9cmV0dXJuIHMmJm0uc2l6ZSYmKHk9W10pLG0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoLTE9PT1iLmluZGV4T2YoZSkpe3ZhciB0PUMuZ2V0KGUpO2lmKHQpe3ZhciByPXcuaW5kZXhPZihlKTt5LnNwbGljZShyLDAsdS5jcmVhdGVFbGVtZW50KGFvLHtrZXk6c28odCksaXNQcmVzZW50OiExLG9uRXhpdENvbXBsZXRlOmZ1bmN0aW9uKCl7Qy5kZWxldGUoZSksbS5kZWxldGUoZSk7dmFyIHQ9Zy5jdXJyZW50LmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5PT09ZX0pKTtnLmN1cnJlbnQuc3BsaWNlKHQsMSksbS5zaXplfHwoZy5jdXJyZW50PXYsZCgpLGwmJmwoKSl9LGN1c3RvbTpuLHByZXNlbmNlQWZmZWN0c0xheW91dDpmfSx0KSl9fX0pKSx5PXkubWFwKChmdW5jdGlvbihlKXt2YXIgdD1lLmtleTtyZXR1cm4gbS5oYXModCk/ZTp1LmNyZWF0ZUVsZW1lbnQoYW8se2tleTpzbyhlKSxpc1ByZXNlbnQ6ITAscHJlc2VuY2VBZmZlY3RzTGF5b3V0OmZ9LGUpfSkpLGcuY3VycmVudD15LHUuY3JlYXRlRWxlbWVudCh1LkZyYWdtZW50LG51bGwsbS5zaXplP3k6eS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBvLmNsb25lRWxlbWVudChlKX0pKSl9LHQuQW5pbWF0ZVNoYXJlZExheW91dD1tbyx0LkRyYWdDb250cm9scz1Wbyx0LkZsYXRUcmVlPUlyLHQuRnJhbWVyVHJlZUxheW91dENvbnRleHQ9THIsdC5MYXlvdXRHcm91cENvbnRleHQ9aix0LkxhenlNb3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuZmVhdHVyZXMsaT1lLnN0cmljdCxhPXZvaWQgMCE9PWkmJmksbD1yLl9fcmVhZChvLnVzZVN0YXRlKCF5byhuKSksMilbMV0scz1vLnVzZVJlZih2b2lkIDApO2lmKCF5byhuKSl7dmFyIGM9bi5yZW5kZXJlcixmPXIuX19yZXN0KG4sW1wicmVuZGVyZXJcIl0pO3MuY3VycmVudD1jLHYoZil9cmV0dXJuIG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3lvKG4pJiZuKCkudGhlbigoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZW5kZXJlcjt2KHIuX19yZXN0KGUsW1wicmVuZGVyZXJcIl0pKSxzLmN1cnJlbnQ9dCxsKCEwKX0pKX0pLFtdKSx1LmNyZWF0ZUVsZW1lbnQoZy5Qcm92aWRlcix7dmFsdWU6e3JlbmRlcmVyOnMuY3VycmVudCxzdHJpY3Q6YX19LHQpfSx0Lk1vdGlvbkNvbmZpZz1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ci5fX3Jlc3QoZSxbXCJjaGlsZHJlblwiXSk7KG49ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG8udXNlQ29udGV4dCh5KSksbikpLmlzU3RhdGljPV8oKGZ1bmN0aW9uKCl7cmV0dXJuIG4uaXNTdGF0aWN9KSk7dmFyIGk9XCJvYmplY3RcIj09dHlwZW9mIG4udHJhbnNpdGlvbj9uLnRyYW5zaXRpb24udG9TdHJpbmcoKTpcIlwiLGE9by51c2VNZW1vKChmdW5jdGlvbigpe3JldHVybiBufSksW2ksbi50cmFuc2Zvcm1QYWdlUG9pbnRdKTtyZXR1cm4gdS5jcmVhdGVFbGVtZW50KHkuUHJvdmlkZXIse3ZhbHVlOmF9LHQpfSx0Lk1vdGlvbkNvbmZpZ0NvbnRleHQ9eSx0Lk1vdGlvblZhbHVlPVZ0LHQuUHJlc2VuY2VDb250ZXh0PXgsdC5TaGFyZWRMYXlvdXRDb250ZXh0PV9yLHQuYWRkU2NhbGVDb3JyZWN0aW9uPVcsdC5hbmltYXRlPWNvLHQuYW5pbWF0ZVZpc3VhbEVsZW1lbnQ9WXQsdC5hbmltYXRpb25Db250cm9scz1Ibyx0LmJhdGNoTGF5b3V0PUpuLHQuY3JlYXRlQmF0Y2hlcj1icix0LmNyZWF0ZUNyb3NzZmFkZXI9dW8sdC5jcmVhdGVEb21Nb3Rpb25Db21wb25lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFooWmUoZSx7Zm9yd2FyZE1vdGlvblByb3BzOiExfSx0byxlbykpfSx0LmNyZWF0ZU1vdGlvbkNvbXBvbmVudD1aLHQuZG9tQW5pbWF0aW9uPXdvLHQuZG9tTWF4PWJvLHQuZmx1c2hMYXlvdXQ9UW4sdC5pc1ZhbGlkTW90aW9uUHJvcD1mZSx0Lm09cm8sdC5tb3Rpb249bm8sdC5tb3Rpb25WYWx1ZT1CdCx0LnJlc29sdmVNb3Rpb25WYWx1ZT1BZSx0LnNuYXBzaG90Vmlld3BvcnRCb3g9SW4sdC50cmFuc2Zvcm09U28sdC51c2VBbmltYXRpb249ZnVuY3Rpb24oKXt2YXIgZT1fKEhvKTtyZXR1cm4gby51c2VFZmZlY3QoZS5tb3VudCxbXSksZX0sdC51c2VDeWNsZT1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTt2YXIgbj1vLnVzZVJlZigwKSxpPXIuX19yZWFkKG8udXNlU3RhdGUoZVtuLmN1cnJlbnRdKSwyKSxhPWlbMF0scz1pWzFdO3JldHVyblthLGZ1bmN0aW9uKHQpe24uY3VycmVudD1cIm51bWJlclwiIT10eXBlb2YgdD9sLndyYXAoMCxlLmxlbmd0aCxuLmN1cnJlbnQrMSk6dCxzKGVbbi5jdXJyZW50XSl9XX0sdC51c2VEZXByZWNhdGVkQW5pbWF0ZWRTdGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1yLl9fcmVhZChvLnVzZVN0YXRlKGUpLDIpLG49dFswXSxpPXRbMV0sYT0kbyh7fSwhMSksbD1fKChmdW5jdGlvbigpe3JldHVybiBabyh7cHJvcHM6e30sdmlzdWFsU3RhdGU6YX0se2luaXRpYWxTdGF0ZTplfSl9KSk7cmV0dXJuIG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiBsLm1vdW50KHt9KSxsLnVubW91bnQoKX0pLFtdKSxvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtsLnNldFByb3BzKHtvblVwZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gaShyLl9fYXNzaWduKHt9LGUpKX19KX0pKSxbbixfKChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gWXQobCxlKX19KSldfSx0LnVzZURlcHJlY2F0ZWRJbnZlcnRlZFNjYWxlPWZ1bmN0aW9uKGUpe3ZhciB0PXhvKDEpLG49eG8oMSkscj1iKCk7cmV0dXJuIGkuaW52YXJpYW50KCEoIWUmJiFyKSxcIklmIG5vIHNjYWxlIHZhbHVlcyBhcmUgcHJvdmlkZWQsIHVzZUludmVydGVkU2NhbGUgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGNoaWxkIG9mIGFub3RoZXIgbW90aW9uIGNvbXBvbmVudC5cIiksaS53YXJuaW5nKE5vLFwidXNlSW52ZXJ0ZWRTY2FsZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy4wLiBVc2UgdGhlIGxheW91dCBwcm9wIGluc3RlYWQuXCIpLE5vPSEwLGU/KHQ9ZS5zY2FsZVh8fHQsbj1lLnNjYWxlWXx8bik6ciYmKHQ9ci5nZXRWYWx1ZShcInNjYWxlWFwiLDEpLG49ci5nZXRWYWx1ZShcInNjYWxlWVwiLDEpKSx7c2NhbGVYOk1vKHQsRm8pLHNjYWxlWTpNbyhuLEZvKX19LHQudXNlRG9tRXZlbnQ9RmUsdC51c2VEcmFnQ29udHJvbHM9ZnVuY3Rpb24oKXtyZXR1cm4gXyhCbyl9LHQudXNlRWxlbWVudFNjcm9sbD1mdW5jdGlvbihlKXt2YXIgdD1fKGtvKTtyZXR1cm4gUigoZnVuY3Rpb24oKXt2YXIgbj1lLmN1cnJlbnQ7aWYoaS5pbnZhcmlhbnQoISFuLFwicmVmIHByb3ZpZGVkIHRvIHVzZVNjcm9sbCBtdXN0IGJlIHBhc3NlZCBpbnRvIGEgSFRNTCBlbGVtZW50LlwiKSxuKXt2YXIgcj1Qbyh0LGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybnt4T2Zmc2V0OmUuc2Nyb2xsTGVmdCx5T2Zmc2V0OmUuc2Nyb2xsVG9wLHhNYXhPZmZzZXQ6ZS5zY3JvbGxXaWR0aC1lLm9mZnNldFdpZHRoLHlNYXhPZmZzZXQ6ZS5zY3JvbGxIZWlnaHQtZS5vZmZzZXRIZWlnaHR9fX0obikpLG89JGUobixcInNjcm9sbFwiLHIse3Bhc3NpdmU6ITB9KSxhPSRlKG4sXCJyZXNpemVcIixyKTtyZXR1cm4gZnVuY3Rpb24oKXtvJiZvKCksYSYmYSgpfX19KSxbXSksdH0sdC51c2VJc1ByZXNlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gTyhvLnVzZUNvbnRleHQoeCkpfSx0LnVzZU1vdGlvblRlbXBsYXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3ZhciByPWUubGVuZ3RoO3JldHVybiBMbyh0LChmdW5jdGlvbigpe2Zvcih2YXIgbj1cIlwiLG89MDtvPHI7bysrKW4rPWVbb10sdFtvXSYmKG4rPXRbb10uZ2V0KCkpO3JldHVybiBufSkpfSx0LnVzZU1vdGlvblZhbHVlPXhvLHQudXNlUHJlc2VuY2U9TCx0LnVzZVJlZHVjZWRNb3Rpb249ZnVuY3Rpb24oKXshSW8mJmZ1bmN0aW9uKCl7aWYoSW89QnQobnVsbCksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdylpZih3aW5kb3cubWF0Y2hNZWRpYSl7dmFyIGU9d2luZG93Lm1hdGNoTWVkaWEoXCIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbilcIiksdD1mdW5jdGlvbigpe3JldHVybiBJby5zZXQoZS5tYXRjaGVzKX07ZS5hZGRMaXN0ZW5lcih0KSx0KCl9ZWxzZSBJby5zZXQoITEpfSgpO3ZhciBlPXIuX19yZWFkKG8udXNlU3RhdGUoSW8uZ2V0KCkpLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIF9vKElvLG4pLHR9LHQudXNlU3ByaW5nPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBuPW8udXNlQ29udGV4dCh5KS5pc1N0YXRpYyxpPW8udXNlUmVmKG51bGwpLGE9eG8oZWUoZSk/ZS5nZXQoKTplKTtyZXR1cm4gby51c2VNZW1vKChmdW5jdGlvbigpe3JldHVybiBhLmF0dGFjaCgoZnVuY3Rpb24oZSxvKXtyZXR1cm4gbj9vKGUpOihpLmN1cnJlbnQmJmkuY3VycmVudC5zdG9wKCksaS5jdXJyZW50PWwuYW5pbWF0ZShyLl9fYXNzaWduKHIuX19hc3NpZ24oe2Zyb206YS5nZXQoKSx0bzplLHZlbG9jaXR5OmEuZ2V0VmVsb2NpdHkoKX0sdCkse29uVXBkYXRlOm99KSksYS5nZXQoKSl9KSl9KSxPYmplY3QudmFsdWVzKHQpKSxfbyhlLChmdW5jdGlvbihlKXtyZXR1cm4gYS5zZXQocGFyc2VGbG9hdChlKSl9KSksYX0sdC51c2VUcmFuc2Zvcm09TW8sdC51c2VWZWxvY2l0eT1mdW5jdGlvbihlKXt2YXIgdD14byhlLmdldFZlbG9jaXR5KCkpO3JldHVybiBvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gZS52ZWxvY2l0eVVwZGF0ZVN1YnNjcmliZXJzLmFkZCgoZnVuY3Rpb24oZSl7dC5zZXQoZSl9KSl9KSxbZV0pLHR9LHQudXNlVmlld3BvcnRTY3JvbGw9ZnVuY3Rpb24oKXtyZXR1cm4gT298fChPbz1rbygpKSxSKChmdW5jdGlvbigpeyFUbyYmZnVuY3Rpb24oKXtpZihUbz0hMCxcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93KXt2YXIgZT1QbyhPbyxBbyk7JGUod2luZG93LFwic2Nyb2xsXCIsZSx7cGFzc2l2ZTohMH0pLCRlKHdpbmRvdyxcInJlc2l6ZVwiLGUpfX0oKX0pLFtdKSxPb30sdC52aXN1YWxFbGVtZW50PVRyfSw0ODM5OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIG49MS82MCoxZTMscj1cInVuZGVmaW5lZFwiIT10eXBlb2YgcGVyZm9ybWFuY2U/ZnVuY3Rpb24oKXtyZXR1cm4gcGVyZm9ybWFuY2Uubm93KCl9OmZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93KCl9LG89XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz9mdW5jdGlvbihlKXtyZXR1cm4gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShlKX06ZnVuY3Rpb24oZSl7cmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUocigpKX0pLG4pfSxpPSEwLGE9ITEsbD0hMSxzPXtkZWx0YTowLHRpbWVzdGFtcDowfSxjPVtcInJlYWRcIixcInVwZGF0ZVwiLFwicHJlUmVuZGVyXCIsXCJyZW5kZXJcIixcInBvc3RSZW5kZXJcIl0sdT1jLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XT1mdW5jdGlvbihlKXt2YXIgdD1bXSxuPVtdLHI9MCxvPSExLGk9bmV3IFdlYWtTZXQsYT17c2NoZWR1bGU6ZnVuY3Rpb24oZSxhLGwpe3ZvaWQgMD09PWEmJihhPSExKSx2b2lkIDA9PT1sJiYobD0hMSk7dmFyIHM9bCYmbyxjPXM/dDpuO3JldHVybiBhJiZpLmFkZChlKSwtMT09PWMuaW5kZXhPZihlKSYmKGMucHVzaChlKSxzJiZvJiYocj10Lmxlbmd0aCkpLGV9LGNhbmNlbDpmdW5jdGlvbihlKXt2YXIgdD1uLmluZGV4T2YoZSk7LTEhPT10JiZuLnNwbGljZSh0LDEpLGkuZGVsZXRlKGUpfSxwcm9jZXNzOmZ1bmN0aW9uKGwpe3ZhciBzO2lmKG89ITAsdD0ocz1bbix0XSlbMF0sKG49c1sxXSkubGVuZ3RoPTAscj10Lmxlbmd0aClmb3IodmFyIGM9MDtjPHI7YysrKXt2YXIgdT10W2NdO3UobCksaS5oYXModSkmJihhLnNjaGVkdWxlKHUpLGUoKSl9bz0hMX19O3JldHVybiBhfSgoZnVuY3Rpb24oKXtyZXR1cm4gYT0hMH0pKSxlfSkse30pLGY9Yy5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7dmFyIG49dVt0XTtyZXR1cm4gZVt0XT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHZvaWQgMD09PXQmJih0PSExKSx2b2lkIDA9PT1yJiYocj0hMSksYXx8ZygpLG4uc2NoZWR1bGUoZSx0LHIpfSxlfSkse30pLGQ9Yy5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF09dVt0XS5jYW5jZWwsZX0pLHt9KSxwPWMucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIHVbdF0ucHJvY2VzcyhzKX0sZX0pLHt9KSxoPWZ1bmN0aW9uKGUpe3JldHVybiB1W2VdLnByb2Nlc3Mocyl9LHY9ZnVuY3Rpb24oZSl7YT0hMSxzLmRlbHRhPWk/bjpNYXRoLm1heChNYXRoLm1pbihlLXMudGltZXN0YW1wLDQwKSwxKSxzLnRpbWVzdGFtcD1lLGw9ITAsYy5mb3JFYWNoKGgpLGw9ITEsYSYmKGk9ITEsbyh2KSl9LGc9ZnVuY3Rpb24oKXthPSEwLGk9ITAsbHx8byh2KX07dC5jYW5jZWxTeW5jPWQsdC5kZWZhdWx0PWYsdC5mbHVzaFN5bmM9cCx0LmdldEZyYW1lRGF0YT1mdW5jdGlvbigpe3JldHVybiBzfX0sNDM5NDooZSx0LG4pPT57bi5yKHQpLG4uZCh0LHtpbnZhcmlhbnQ6KCk9Pm8sd2FybmluZzooKT0+cn0pO3ZhciByPWZ1bmN0aW9uKCl7fSxvPWZ1bmN0aW9uKCl7fX0sNzczOihlLHQsbik9Pnt2YXIgcixvPVwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfX1wiLGk9L15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLyxhPVwib2JqZWN0XCI9PXR5cGVvZiBuLmcmJm4uZyYmbi5nLk9iamVjdD09PU9iamVjdCYmbi5nLGw9XCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLHM9YXx8bHx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpLGM9QXJyYXkucHJvdG90eXBlLHU9RnVuY3Rpb24ucHJvdG90eXBlLGY9T2JqZWN0LnByb3RvdHlwZSxkPXNbXCJfX2NvcmUtanNfc2hhcmVkX19cIl0scD0ocj0vW14uXSskLy5leGVjKGQmJmQua2V5cyYmZC5rZXlzLklFX1BST1RPfHxcIlwiKSk/XCJTeW1ib2woc3JjKV8xLlwiK3I6XCJcIixoPXUudG9TdHJpbmcsdj1mLmhhc093blByb3BlcnR5LGc9Zi50b1N0cmluZyxDPVJlZ0V4cChcIl5cIitoLmNhbGwodikucmVwbGFjZSgvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2csXCJcXFxcJCZcIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZyxcIiQxLio/XCIpK1wiJFwiKSxtPWMuc3BsaWNlLHk9RShzLFwiTWFwXCIpLHc9RShPYmplY3QsXCJjcmVhdGVcIik7ZnVuY3Rpb24gYihlKXt2YXIgdD0tMSxuPWU/ZS5sZW5ndGg6MDtmb3IodGhpcy5jbGVhcigpOysrdDxuOyl7dmFyIHI9ZVt0XTt0aGlzLnNldChyWzBdLHJbMV0pfX1mdW5jdGlvbiB4KGUpe3ZhciB0PS0xLG49ZT9lLmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PG47KXt2YXIgcj1lW3RdO3RoaXMuc2V0KHJbMF0sclsxXSl9fWZ1bmN0aW9uIF8oZSl7dmFyIHQ9LTEsbj1lP2UubGVuZ3RoOjA7Zm9yKHRoaXMuY2xlYXIoKTsrK3Q8bjspe3ZhciByPWVbdF07dGhpcy5zZXQoclswXSxyWzFdKX19ZnVuY3Rpb24gTChlLHQpe2Zvcih2YXIgbixyLG89ZS5sZW5ndGg7by0tOylpZigobj1lW29dWzBdKT09PShyPXQpfHxuIT1uJiZyIT1yKXJldHVybiBvO3JldHVybi0xfWZ1bmN0aW9uIE8oZSx0KXt2YXIgbixyLG89ZS5fX2RhdGFfXztyZXR1cm4oXCJzdHJpbmdcIj09KHI9dHlwZW9mKG49dCkpfHxcIm51bWJlclwiPT1yfHxcInN5bWJvbFwiPT1yfHxcImJvb2xlYW5cIj09cj9cIl9fcHJvdG9fX1wiIT09bjpudWxsPT09bik/b1tcInN0cmluZ1wiPT10eXBlb2YgdD9cInN0cmluZ1wiOlwiaGFzaFwiXTpvLm1hcH1mdW5jdGlvbiBFKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZT92b2lkIDA6ZVt0XX0oZSx0KTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoIU0oZSl8fHAmJnAgaW4gZSlyZXR1cm4hMTt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdD1NKGUpP2cuY2FsbChlKTpcIlwiO3JldHVyblwiW29iamVjdCBGdW5jdGlvbl1cIj09dHx8XCJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXVwiPT10fShlKXx8ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZS50b1N0cmluZyl0cnl7dD0hIShlK1wiXCIpfWNhdGNoKGUpe31yZXR1cm4gdH0oZSk/QzppO3JldHVybiB0LnRlc3QoZnVuY3Rpb24oZSl7aWYobnVsbCE9ZSl7dHJ5e3JldHVybiBoLmNhbGwoZSl9Y2F0Y2goZSl7fXRyeXtyZXR1cm4gZStcIlwifWNhdGNoKGUpe319cmV0dXJuXCJcIn0oZSkpfShuKT9uOnZvaWQgMH1mdW5jdGlvbiBTKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZXx8dCYmXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBmdW5jdGlvblwiKTt2YXIgbj1mdW5jdGlvbigpe3ZhciByPWFyZ3VtZW50cyxvPXQ/dC5hcHBseSh0aGlzLHIpOnJbMF0saT1uLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgYT1lLmFwcGx5KHRoaXMscik7cmV0dXJuIG4uY2FjaGU9aS5zZXQobyxhKSxhfTtyZXR1cm4gbi5jYWNoZT1uZXcoUy5DYWNoZXx8Xyksbn1mdW5jdGlvbiBNKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiEhZSYmKFwib2JqZWN0XCI9PXR8fFwiZnVuY3Rpb25cIj09dCl9Yi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPXc/dyhudWxsKTp7fX0sYi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmhhcyhlKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bZV19LGIucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO2lmKHcpe3ZhciBuPXRbZV07cmV0dXJuIG49PT1vP3ZvaWQgMDpufXJldHVybiB2LmNhbGwodCxlKT90W2VdOnZvaWQgMH0sYi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX187cmV0dXJuIHc/dm9pZCAwIT09dFtlXTp2LmNhbGwodCxlKX0sYi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX19kYXRhX19bZV09dyYmdm9pZCAwPT09dD9vOnQsdGhpc30seC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdfSx4LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxuPUwodCxlKTtyZXR1cm4hKG48MHx8KG49PXQubGVuZ3RoLTE/dC5wb3AoKTptLmNhbGwodCxuLDEpLDApKX0seC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18sbj1MKHQsZSk7cmV0dXJuIG48MD92b2lkIDA6dFtuXVsxXX0seC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiBMKHRoaXMuX19kYXRhX18sZSk+LTF9LHgucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19kYXRhX18scj1MKG4sZSk7cmV0dXJuIHI8MD9uLnB1c2goW2UsdF0pOm5bcl1bMV09dCx0aGlzfSxfLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189e2hhc2g6bmV3IGIsbWFwOm5ldyh5fHx4KSxzdHJpbmc6bmV3IGJ9fSxfLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7cmV0dXJuIE8odGhpcyxlKS5kZWxldGUoZSl9LF8ucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gTyh0aGlzLGUpLmdldChlKX0sXy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiBPKHRoaXMsZSkuaGFzKGUpfSxfLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTyh0aGlzLGUpLnNldChlLHQpLHRoaXN9LFMuQ2FjaGU9XyxlLmV4cG9ydHM9U30sNzQxODplPT57dmFyIHQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscj1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO2UuZXhwb3J0cz1mdW5jdGlvbigpe3RyeXtpZighT2JqZWN0LmFzc2lnbilyZXR1cm4hMTt2YXIgZT1uZXcgU3RyaW5nKFwiYWJjXCIpO2lmKGVbNV09XCJkZVwiLFwiNVwiPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSlbMF0pcmV0dXJuITE7Zm9yKHZhciB0PXt9LG49MDtuPDEwO24rKyl0W1wiX1wiK1N0cmluZy5mcm9tQ2hhckNvZGUobildPW47aWYoXCIwMTIzNDU2Nzg5XCIhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkpLmpvaW4oXCJcIikpcmV0dXJuITE7dmFyIHI9e307cmV0dXJuXCJhYmNkZWZnaGlqa2xtbm9wcXJzdFwiLnNwbGl0KFwiXCIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JbZV09ZX0pKSxcImFiY2RlZmdoaWprbG1ub3BxcnN0XCI9PT1PYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LHIpKS5qb2luKFwiXCIpfWNhdGNoKGUpe3JldHVybiExfX0oKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGUsbyl7Zm9yKHZhciBpLGEsbD1mdW5jdGlvbihlKXtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4gT2JqZWN0KGUpfShlKSxzPTE7czxhcmd1bWVudHMubGVuZ3RoO3MrKyl7Zm9yKHZhciBjIGluIGk9T2JqZWN0KGFyZ3VtZW50c1tzXSkpbi5jYWxsKGksYykmJihsW2NdPWlbY10pO2lmKHQpe2E9dChpKTtmb3IodmFyIHU9MDt1PGEubGVuZ3RoO3UrKylyLmNhbGwoaSxhW3VdKSYmKGxbYVt1XV09aVthW3VdXSl9fXJldHVybiBsfX0sOTI5NDooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9big2NTUpLG89big0Mzk0KSxpPW4oMzU3MyksYT1uKDQ4MzkpO3ZhciBsPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmXCJkZWZhdWx0XCJpbiBlP2U6e2RlZmF1bHQ6ZX19KGEpLHM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBNYXRoLm1pbihNYXRoLm1heChuLGUpLHQpfSxjPS4wMDEsdT0uMDEsZj0xMCxkPS4wNSxwPTEsaD0xMjtmdW5jdGlvbiB2KGUsdCl7cmV0dXJuIGUqTWF0aC5zcXJ0KDEtdCp0KX12YXIgZz1bXCJkdXJhdGlvblwiLFwiYm91bmNlXCJdLEM9W1wic3RpZmZuZXNzXCIsXCJkYW1waW5nXCIsXCJtYXNzXCJdO2Z1bmN0aW9uIG0oZSx0KXtyZXR1cm4gdC5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09ZVt0XX0pKX1mdW5jdGlvbiB5KGUpe3ZhciB0PWUuZnJvbSxuPXZvaWQgMD09PXQ/MDp0LGk9ZS50byxhPXZvaWQgMD09PWk/MTppLGw9ZS5yZXN0U3BlZWQseT12b2lkIDA9PT1sPzI6bCxiPWUucmVzdERlbHRhLHg9ci5fX3Jlc3QoZSxbXCJmcm9tXCIsXCJ0b1wiLFwicmVzdFNwZWVkXCIsXCJyZXN0RGVsdGFcIl0pLF89e2RvbmU6ITEsdmFsdWU6bn0sTD1mdW5jdGlvbihlKXt2YXIgdD1yLl9fYXNzaWduKHt2ZWxvY2l0eTowLHN0aWZmbmVzczoxMDAsZGFtcGluZzoxMCxtYXNzOjEsaXNSZXNvbHZlZEZyb21EdXJhdGlvbjohMX0sZSk7aWYoIW0oZSxDKSYmbShlLGcpKXt2YXIgbj1mdW5jdGlvbihlKXt2YXIgdCxuLHI9ZS5kdXJhdGlvbixpPXZvaWQgMD09PXI/ODAwOnIsYT1lLmJvdW5jZSxsPXZvaWQgMD09PWE/LjI1OmEsZz1lLnZlbG9jaXR5LEM9dm9pZCAwPT09Zz8wOmcsbT1lLm1hc3MseT12b2lkIDA9PT1tPzE6bTtvLndhcm5pbmcoaTw9MWUzKmYsXCJTcHJpbmcgZHVyYXRpb24gbXVzdCBiZSAxMCBzZWNvbmRzIG9yIGxlc3NcIik7dmFyIHc9MS1sO3c9cyhkLHAsdyksaT1zKHUsZixpLzFlMyksdzwxPyh0PWZ1bmN0aW9uKGUpe3ZhciB0PWUqdyxuPXQqaSxyPXQtQyxvPXYoZSx3KSxhPU1hdGguZXhwKC1uKTtyZXR1cm4gYy1yL28qYX0sbj1mdW5jdGlvbihlKXt2YXIgbj1lKncqaSxyPW4qQytDLG89TWF0aC5wb3codywyKSpNYXRoLnBvdyhlLDIpKmksYT1NYXRoLmV4cCgtbiksbD12KE1hdGgucG93KGUsMiksdyk7cmV0dXJuKC10KGUpK2M+MD8tMToxKSooKHItbykqYSkvbH0pOih0PWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmV4cCgtZSppKSooKGUtQykqaSsxKS1jfSxuPWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmV4cCgtZSppKSooaSppKihDLWUpKX0pO3ZhciBiPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bixvPTE7bzxoO28rKylyLT1lKHIpL3Qocik7cmV0dXJuIHJ9KHQsbiw1L2kpO2lmKGkqPTFlMyxpc05hTihiKSlyZXR1cm57c3RpZmZuZXNzOjEwMCxkYW1waW5nOjEwLGR1cmF0aW9uOml9O3ZhciB4PU1hdGgucG93KGIsMikqeTtyZXR1cm57c3RpZmZuZXNzOngsZGFtcGluZzoyKncqTWF0aC5zcXJ0KHkqeCksZHVyYXRpb246aX19KGUpOyh0PXIuX19hc3NpZ24oci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHQpLG4pLHt2ZWxvY2l0eTowLG1hc3M6MX0pKS5pc1Jlc29sdmVkRnJvbUR1cmF0aW9uPSEwfXJldHVybiB0fSh4KSxPPUwuc3RpZmZuZXNzLEU9TC5kYW1waW5nLFM9TC5tYXNzLE09TC52ZWxvY2l0eSxqPUwuZHVyYXRpb24saz1MLmlzUmVzb2x2ZWRGcm9tRHVyYXRpb24sUj13LFA9dztmdW5jdGlvbiBBKCl7dmFyIGU9TT8tTS8xZTM6MCx0PWEtbixyPUUvKDIqTWF0aC5zcXJ0KE8qUykpLG89TWF0aC5zcXJ0KE8vUykvMWUzO2lmKG51bGwhPWJ8fChiPU1hdGguYWJzKGEtbik8PTE/LjAxOi40KSxyPDEpe3ZhciBpPXYobyxyKTtSPWZ1bmN0aW9uKG4pe3ZhciBsPU1hdGguZXhwKC1yKm8qbik7cmV0dXJuIGEtbCooKGUrcipvKnQpL2kqTWF0aC5zaW4oaSpuKSt0Kk1hdGguY29zKGkqbikpfSxQPWZ1bmN0aW9uKG4pe3ZhciBhPU1hdGguZXhwKC1yKm8qbik7cmV0dXJuIHIqbyphKihNYXRoLnNpbihpKm4pKihlK3Iqbyp0KS9pK3QqTWF0aC5jb3MoaSpuKSktYSooTWF0aC5jb3MoaSpuKSooZStyKm8qdCktaSp0Kk1hdGguc2luKGkqbikpfX1lbHNlIGlmKDE9PT1yKVI9ZnVuY3Rpb24obil7cmV0dXJuIGEtTWF0aC5leHAoLW8qbikqKHQrKGUrbyp0KSpuKX07ZWxzZXt2YXIgbD1vKk1hdGguc3FydChyKnItMSk7Uj1mdW5jdGlvbihuKXt2YXIgaT1NYXRoLmV4cCgtcipvKm4pLHM9TWF0aC5taW4obCpuLDMwMCk7cmV0dXJuIGEtaSooKGUrcipvKnQpKk1hdGguc2luaChzKStsKnQqTWF0aC5jb3NoKHMpKS9sfX19cmV0dXJuIEEoKSx7bmV4dDpmdW5jdGlvbihlKXt2YXIgdD1SKGUpO2lmKGspXy5kb25lPWU+PWo7ZWxzZXt2YXIgbj0xZTMqUChlKSxyPU1hdGguYWJzKG4pPD15LG89TWF0aC5hYnMoYS10KTw9YjtfLmRvbmU9ciYmb31yZXR1cm4gXy52YWx1ZT1fLmRvbmU/YTp0LF99LGZsaXBUYXJnZXQ6ZnVuY3Rpb24oKXt2YXIgZTtNPS1NLG49KGU9W2Esbl0pWzBdLGE9ZVsxXSxBKCl9fX15Lm5lZWRzSW50ZXJwb2xhdGlvbj1mdW5jdGlvbihlLHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlfHxcInN0cmluZ1wiPT10eXBlb2YgdH07dmFyIHc9ZnVuY3Rpb24oZSl7cmV0dXJuIDB9LGI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQtZTtyZXR1cm4gMD09PXI/MToobi1lKS9yfSx4PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4tbiplK24qdCtlfSxfPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKmUsbz10KnQ7cmV0dXJuIE1hdGguc3FydChNYXRoLm1heCgwLG4qKG8tcikrcikpfSxMPVtpLmhleCxpLnJnYmEsaS5oc2xhXSxPPWZ1bmN0aW9uKGUpe3JldHVybiBMLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRlc3QoZSl9KSl9LEU9ZnVuY3Rpb24oZSl7cmV0dXJuXCInXCIrZStcIicgaXMgbm90IGFuIGFuaW1hdGFibGUgY29sb3IuIFVzZSB0aGUgZXF1aXZhbGVudCBjb2xvciBjb2RlIGluc3RlYWQuXCJ9LFM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1PKGUpLGE9Tyh0KTtvLmludmFyaWFudCghIW4sRShlKSksby5pbnZhcmlhbnQoISFhLEUodCkpLG8uaW52YXJpYW50KG4udHJhbnNmb3JtPT09YS50cmFuc2Zvcm0sXCJCb3RoIGNvbG9ycyBtdXN0IGJlIGhleC9SR0JBLCBPUiBib3RoIG11c3QgYmUgSFNMQS5cIik7dmFyIGw9bi5wYXJzZShlKSxzPWEucGFyc2UodCksYz1yLl9fYXNzaWduKHt9LGwpLHU9bj09PWkuaHNsYT94Ol87cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBjKVwiYWxwaGFcIiE9PXQmJihjW3RdPXUobFt0XSxzW3RdLGUpKTtyZXR1cm4gYy5hbHBoYT14KGwuYWxwaGEscy5hbHBoYSxlKSxuLnRyYW5zZm9ybShjKX19LE09e3g6MCx5OjAsejowfSxqPWZ1bmN0aW9uKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlfSxrPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0KGUobikpfX0sUj1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gZS5yZWR1Y2Uoayl9O2Z1bmN0aW9uIFAoZSx0KXtyZXR1cm4gaihlKT9mdW5jdGlvbihuKXtyZXR1cm4geChlLHQsbil9OmkuY29sb3IudGVzdChlKT9TKGUsdCk6SChlLHQpfXZhciBBPWZ1bmN0aW9uKGUsdCl7dmFyIG49ci5fX3NwcmVhZEFycmF5KFtdLGUpLG89bi5sZW5ndGgsaT1lLm1hcCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gUChlLHRbbl0pfSkpO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PG87dCsrKW5bdF09aVt0XShlKTtyZXR1cm4gbn19LEk9ZnVuY3Rpb24oZSx0KXt2YXIgbj1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sZSksdCksbz17fTtmb3IodmFyIGkgaW4gbil2b2lkIDAhPT1lW2ldJiZ2b2lkIDAhPT10W2ldJiYob1tpXT1QKGVbaV0sdFtpXSkpO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gbyluW3RdPW9bdF0oZSk7cmV0dXJuIG59fTtmdW5jdGlvbiBUKGUpe2Zvcih2YXIgdD1pLmNvbXBsZXgucGFyc2UoZSksbj10Lmxlbmd0aCxyPTAsbz0wLGE9MCxsPTA7bDxuO2wrKylyfHxcIm51bWJlclwiPT10eXBlb2YgdFtsXT9yKys6dm9pZCAwIT09dFtsXS5odWU/YSsrOm8rKztyZXR1cm57cGFyc2VkOnQsbnVtTnVtYmVyczpyLG51bVJHQjpvLG51bUhTTDphfX12YXIgSD1mdW5jdGlvbihlLHQpe3ZhciBuPWkuY29tcGxleC5jcmVhdGVUcmFuc2Zvcm1lcih0KSxyPVQoZSksYT1UKHQpO3JldHVybiBvLmludmFyaWFudChyLm51bUhTTD09PWEubnVtSFNMJiZyLm51bVJHQj09PWEubnVtUkdCJiZyLm51bU51bWJlcnM+PWEubnVtTnVtYmVycyxcIkNvbXBsZXggdmFsdWVzICdcIitlK1wiJyBhbmQgJ1wiK3QrXCInIHRvbyBkaWZmZXJlbnQgdG8gbWl4LiBFbnN1cmUgYWxsIGNvbG9ycyBhcmUgb2YgdGhlIHNhbWUgdHlwZS5cIiksUihBKHIucGFyc2VkLGEucGFyc2VkKSxuKX0sVj1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4geChlLHQsbil9fTtmdW5jdGlvbiBCKGUsdCxuKXt2YXIgcj12b2lkIDA9PT1uP3t9Om4sYT1yLmNsYW1wLGw9dm9pZCAwPT09YXx8YSxjPXIuZWFzZSx1PXIubWl4ZXIsZj1lLmxlbmd0aDtvLmludmFyaWFudChmPT09dC5sZW5ndGgsXCJCb3RoIGlucHV0IGFuZCBvdXRwdXQgcmFuZ2VzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoXCIpLG8uaW52YXJpYW50KCFjfHwhQXJyYXkuaXNBcnJheShjKXx8Yy5sZW5ndGg9PT1mLTEsXCJBcnJheSBvZiBlYXNpbmcgZnVuY3Rpb25zIG11c3QgYmUgb2YgbGVuZ3RoIGBpbnB1dC5sZW5ndGggLSAxYCwgYXMgaXQgYXBwbGllcyB0byB0aGUgdHJhbnNpdGlvbnMgKipiZXR3ZWVuKiogdGhlIGRlZmluZWQgdmFsdWVzLlwiKSxlWzBdPmVbZi0xXSYmKGU9W10uY29uY2F0KGUpLHQ9W10uY29uY2F0KHQpLGUucmV2ZXJzZSgpLHQucmV2ZXJzZSgpKTt2YXIgZD1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByLG89W10sYT1ufHwoXCJudW1iZXJcIj09dHlwZW9mKHI9ZVswXSk/VjpcInN0cmluZ1wiPT10eXBlb2Ygcj9pLmNvbG9yLnRlc3Qocik/UzpIOkFycmF5LmlzQXJyYXkocik/QTpcIm9iamVjdFwiPT10eXBlb2Ygcj9JOnZvaWQgMCksbD1lLmxlbmd0aC0xLHM9MDtzPGw7cysrKXt2YXIgYz1hKGVbc10sZVtzKzFdKTtpZih0KXt2YXIgdT1BcnJheS5pc0FycmF5KHQpP3Rbc106dDtjPVIodSxjKX1vLnB1c2goYyl9cmV0dXJuIG99KHQsYyx1KSxwPTI9PT1mP2Z1bmN0aW9uKGUsdCl7dmFyIG49ZVswXSxyPWVbMV0sbz10WzBdO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbyhiKG4scixlKSl9fShlLGQpOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5sZW5ndGgscj1uLTE7cmV0dXJuIGZ1bmN0aW9uKG8pe3ZhciBpPTAsYT0hMTtpZihvPD1lWzBdP2E9ITA6bz49ZVtyXSYmKGk9ci0xLGE9ITApLCFhKXtmb3IodmFyIGw9MTtsPG4mJiEoZVtsXT5vfHxsPT09cik7bCsrKTtpPWwtMX12YXIgcz1iKGVbaV0sZVtpKzFdLG8pO3JldHVybiB0W2ldKHMpfX0oZSxkKTtyZXR1cm4gbD9mdW5jdGlvbih0KXtyZXR1cm4gcChzKGVbMF0sZVtmLTFdLHQpKX06cH12YXIgRD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIDEtZSgxLXQpfX0sWj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ8PS41P2UoMip0KS8yOigyLWUoMiooMS10KSkpLzJ9fSwkPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5wb3codCxlKX19LEY9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0KnQqKChlKzEpKnQtZSl9fSxOPWZ1bmN0aW9uKGUpe3ZhciB0PUYoZSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihlKj0yKTwxPy41KnQoZSk6LjUqKDItTWF0aC5wb3coMiwtMTAqKGUtMSkpKX19LFU9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LFc9JCgyKSx6PUQoVyksRz1aKFcpLHE9ZnVuY3Rpb24oZSl7cmV0dXJuIDEtTWF0aC5zaW4oTWF0aC5hY29zKGUpKX0sWT1EKHEpLEs9WihZKSxYPUYoMS41MjUpLEo9RChYKSxRPVooWCksZWU9TigxLjUyNSksdGU9ZnVuY3Rpb24oZSl7aWYoMT09PWV8fDA9PT1lKXJldHVybiBlO3ZhciB0PWUqZTtyZXR1cm4gZTwuMzYzNjM2MzYzNjM2MzYzNjU/Ny41NjI1KnQ6ZTwuNzI3MjcyNzI3MjcyNzI3Mz85LjA3NSp0LTkuOSplKzMuNDplPC45PzEyLjA2NjQ4MTk5NDQ1OTgzMyp0LTE5LjYzNTQ1NzA2MzcxMTkxKmUrOC44OTgwNjA5NDE4MjgyNTU6MTAuOCplKmUtMjAuNTIqZSsxMC43Mn0sbmU9RCh0ZSk7ZnVuY3Rpb24gcmUoZSx0KXtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIHR8fEd9KSkuc3BsaWNlKDAsZS5sZW5ndGgtMSl9ZnVuY3Rpb24gb2UoZSl7dmFyIHQ9ZS5mcm9tLG49dm9pZCAwPT09dD8wOnQscj1lLnRvLG89dm9pZCAwPT09cj8xOnIsaT1lLmVhc2UsYT1lLm9mZnNldCxsPWUuZHVyYXRpb24scz12b2lkIDA9PT1sPzMwMDpsLGM9e2RvbmU6ITEsdmFsdWU6bn0sdT1BcnJheS5pc0FycmF5KG8pP286W24sb10sZj1mdW5jdGlvbihlLHQpe3JldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUqdH0pKX0oYSYmYS5sZW5ndGg9PT11Lmxlbmd0aD9hOmZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO3JldHVybiBlLm1hcCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gMCE9PW4/bi8odC0xKTowfSkpfSh1KSxzKTtmdW5jdGlvbiBkKCl7cmV0dXJuIEIoZix1LHtlYXNlOkFycmF5LmlzQXJyYXkoaSk/aTpyZSh1LGkpfSl9dmFyIHA9ZCgpO3JldHVybntuZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBjLnZhbHVlPXAoZSksYy5kb25lPWU+PXMsY30sZmxpcFRhcmdldDpmdW5jdGlvbigpe3UucmV2ZXJzZSgpLHA9ZCgpfX19ZnVuY3Rpb24gaWUoZSl7dmFyIHQ9ZS52ZWxvY2l0eSxuPXZvaWQgMD09PXQ/MDp0LHI9ZS5mcm9tLG89dm9pZCAwPT09cj8wOnIsaT1lLnBvd2VyLGE9dm9pZCAwPT09aT8uODppLGw9ZS50aW1lQ29uc3RhbnQscz12b2lkIDA9PT1sPzM1MDpsLGM9ZS5yZXN0RGVsdGEsdT12b2lkIDA9PT1jPy41OmMsZj1lLm1vZGlmeVRhcmdldCxkPXtkb25lOiExLHZhbHVlOm99LHA9YSpuLGg9bytwLHY9dm9pZCAwPT09Zj9oOmYoaCk7cmV0dXJuIHYhPT1oJiYocD12LW8pLHtuZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PS1wKk1hdGguZXhwKC1lL3MpO3JldHVybiBkLmRvbmU9ISh0PnV8fHQ8LXUpLGQudmFsdWU9ZC5kb25lP3Y6dit0LGR9LGZsaXBUYXJnZXQ6ZnVuY3Rpb24oKXt9fX12YXIgYWU9e2tleWZyYW1lczpvZSxzcHJpbmc6eSxkZWNheTppZX07ZnVuY3Rpb24gbGUoZSx0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0wKSxlLXQtbn12YXIgc2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24odCl7dmFyIG49dC5kZWx0YTtyZXR1cm4gZShuKX07cmV0dXJue3N0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGwuZGVmYXVsdC51cGRhdGUodCwhMCl9LHN0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gYS5jYW5jZWxTeW5jLnVwZGF0ZSh0KX19fTtmdW5jdGlvbiBjZShlKXt2YXIgdCxuLG8saSxhLGw9ZS5mcm9tLHM9ZS5hdXRvcGxheSxjPXZvaWQgMD09PXN8fHMsdT1lLmRyaXZlcixmPXZvaWQgMD09PXU/c2U6dSxkPWUuZWxhcHNlZCxwPXZvaWQgMD09PWQ/MDpkLGg9ZS5yZXBlYXQsdj12b2lkIDA9PT1oPzA6aCxnPWUucmVwZWF0VHlwZSxDPXZvaWQgMD09PWc/XCJsb29wXCI6ZyxtPWUucmVwZWF0RGVsYXksdz12b2lkIDA9PT1tPzA6bSxiPWUub25QbGF5LHg9ZS5vblN0b3AsXz1lLm9uQ29tcGxldGUsTD1lLm9uUmVwZWF0LE89ZS5vblVwZGF0ZSxFPXIuX19yZXN0KGUsW1wiZnJvbVwiLFwiYXV0b3BsYXlcIixcImRyaXZlclwiLFwiZWxhcHNlZFwiLFwicmVwZWF0XCIsXCJyZXBlYXRUeXBlXCIsXCJyZXBlYXREZWxheVwiLFwib25QbGF5XCIsXCJvblN0b3BcIixcIm9uQ29tcGxldGVcIixcIm9uUmVwZWF0XCIsXCJvblVwZGF0ZVwiXSksUz1FLnRvLE09MCxqPUUuZHVyYXRpb24saz0hMSxSPSEwLFA9ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlLnRvKSlyZXR1cm4gb2U7aWYoYWVbZS50eXBlXSlyZXR1cm4gYWVbZS50eXBlXTt2YXIgdD1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKTtyZXR1cm4gdC5oYXMoXCJlYXNlXCIpfHx0LmhhcyhcImR1cmF0aW9uXCIpJiYhdC5oYXMoXCJkYW1waW5nUmF0aW9cIik/b2U6dC5oYXMoXCJkYW1waW5nUmF0aW9cIil8fHQuaGFzKFwic3RpZmZuZXNzXCIpfHx0LmhhcyhcIm1hc3NcIil8fHQuaGFzKFwiZGFtcGluZ1wiKXx8dC5oYXMoXCJyZXN0U3BlZWRcIil8fHQuaGFzKFwicmVzdERlbHRhXCIpP3k6b2V9KEUpOyhudWxsPT09KG49KHQ9UCkubmVlZHNJbnRlcnBvbGF0aW9uKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jYWxsKHQsbCxTKSkmJihhPUIoWzAsMTAwXSxbbCxTXSx7Y2xhbXA6ITF9KSxsPTAsUz0xMDApO3ZhciBBPVAoci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LEUpLHtmcm9tOmwsdG86U30pKTtyZXR1cm4gYyYmKG51bGw9PWJ8fGIoKSwobz1mKChmdW5jdGlvbihlKXtpZihSfHwoZT0tZSkscCs9ZSwhayl7dmFyIHQ9QS5uZXh0KE1hdGgubWF4KDAscCkpO2k9dC52YWx1ZSxhJiYoaT1hKGkpKSxrPVI/dC5kb25lOnA8PTB9bnVsbD09T3x8TyhpKSxrJiYoMD09PU0mJihudWxsIT1qfHwoaj1wKSksTTx2P2Z1bmN0aW9uKGUsdCxuLHIpe3JldHVybiByP2U+PXQrbjplPD0tbn0ocCxqLHcsUikmJihNKyssXCJyZXZlcnNlXCI9PT1DP3A9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PXImJihyPSEwKSxyP2xlKHQrLWUsdCxuKTp0LShlLXQpK259KHAsaix3LFI9TSUyPT0wKToocD1sZShwLGosdyksXCJtaXJyb3JcIj09PUMmJkEuZmxpcFRhcmdldCgpKSxrPSExLEwmJkwoKSk6KG8uc3RvcCgpLF8mJl8oKSkpfSkpKS5zdGFydCgpKSx7c3RvcDpmdW5jdGlvbigpe251bGw9PXh8fHgoKSxvLnN0b3AoKX19fWZ1bmN0aW9uIHVlKGUsdCl7cmV0dXJuIHQ/ZSooMWUzL3QpOjB9dmFyIGZlPWZ1bmN0aW9uKGUpe3JldHVybiAxODAqZS9NYXRoLlBJfSxkZT1mdW5jdGlvbihlKXtyZXR1cm4gZX0scGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPWRlKSxmdW5jdGlvbih0LG4scil7dmFyIG89bi1yLGk9LSgwLXQrMSkqKDAtZShNYXRoLmFicyhvKSkpO3JldHVybiBvPD0wP24raTpuLWl9fSxoZT1wZSgpLHZlPXBlKE1hdGguc3FydCksZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUqTWF0aC5QSS8xODB9LENlPWZ1bmN0aW9uKGUpe3JldHVybiBlLmhhc093blByb3BlcnR5KFwieFwiKSYmZS5oYXNPd25Qcm9wZXJ0eShcInlcIil9LG1lPWZ1bmN0aW9uKGUpe3JldHVybiBDZShlKSYmZS5oYXNPd25Qcm9wZXJ0eShcInpcIil9LHllPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGguYWJzKGUtdCl9LHdlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PTIpLHQ9TWF0aC5wb3coMTAsdCksTWF0aC5yb3VuZChlKnQpL3R9LGJlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB2b2lkIDA9PT1yJiYocj0wKSx3ZShlK24qKHQtZSkvTWF0aC5tYXgocixuKSl9LHhlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDEtMyp0KzMqZX0sX2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMyp0LTYqZX0sTGU9ZnVuY3Rpb24oZSl7cmV0dXJuIDMqZX0sT2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybigoeGUodCxuKSplK19lKHQsbikpKmUrTGUodCkpKmV9LEVlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gMyp4ZSh0LG4pKmUqZSsyKl9lKHQsbikqZStMZSh0KX0sU2U9LjE7dC5hbmdsZT1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1NKSxmZShNYXRoLmF0YW4yKHQueS1lLnksdC54LWUueCkpfSx0LmFuaW1hdGU9Y2UsdC5hbnRpY2lwYXRlPWVlLHQuYXBwbHlPZmZzZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj0hMDtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ZSxuPSExKSxmdW5jdGlvbihyKXtyZXR1cm4gbj9yLWUrdDooZT1yLG49ITAsdCl9fSx0LmF0dHJhY3Q9aGUsdC5hdHRyYWN0RXhwbz12ZSx0LmJhY2tJbj1YLHQuYmFja0luT3V0PVEsdC5iYWNrT3V0PUosdC5ib3VuY2VJbj1uZSx0LmJvdW5jZUluT3V0PWZ1bmN0aW9uKGUpe3JldHVybiBlPC41Py41KigxLXRlKDEtMiplKSk6LjUqdGUoMiplLTEpKy41fSx0LmJvdW5jZU91dD10ZSx0LmNpcmNJbj1xLHQuY2lyY0luT3V0PUssdC5jaXJjT3V0PVksdC5jbGFtcD1zLHQuY3JlYXRlQW50aWNpcGF0ZT1OLHQuY3JlYXRlQXR0cmFjdG9yPXBlLHQuY3JlYXRlQmFja0luPUYsdC5jcmVhdGVFeHBvSW49JCx0LmN1YmljQmV6aWVyPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9PT10JiZuPT09cilyZXR1cm4gVTtmb3IodmFyIG89bmV3IEZsb2F0MzJBcnJheSgxMSksaT0wO2k8MTE7KytpKW9baV09T2UoaSpTZSxlLG4pO3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gMD09PWl8fDE9PT1pP2k6T2UoZnVuY3Rpb24odCl7Zm9yKHZhciByPTAsaT0xOzEwIT09aSYmb1tpXTw9dDsrK2kpcis9U2U7LS1pO3ZhciBhPXIrKHQtb1tpXSkvKG9baSsxXS1vW2ldKSpTZSxsPUVlKGEsZSxuKTtyZXR1cm4gbD49LjAwMT9mdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIG89MDtvPDg7KytvKXt2YXIgaT1FZSh0LG4scik7aWYoMD09PWkpcmV0dXJuIHQ7dC09KE9lKHQsbixyKS1lKS9pfXJldHVybiB0fSh0LGEsZSxuKTowPT09bD9hOmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGksYSxsPTA7ZG97KGk9T2UoYT10KyhuLXQpLzIscixvKS1lKT4wP249YTp0PWF9d2hpbGUoTWF0aC5hYnMoaSk+MWUtNyYmKytsPDEwKTtyZXR1cm4gYX0odCxyLHIrU2UsZSxuKX0oaSksdCxyKX19LHQuZGVjYXk9aWUsdC5kZWdyZWVzVG9SYWRpYW5zPWdlLHQuZGlzdGFuY2U9ZnVuY3Rpb24oZSx0KXtpZihqKGUpJiZqKHQpKXJldHVybiB5ZShlLHQpO2lmKENlKGUpJiZDZSh0KSl7dmFyIG49eWUoZS54LHQueCkscj15ZShlLnksdC55KSxvPW1lKGUpJiZtZSh0KT95ZShlLnosdC56KTowO3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3cobiwyKStNYXRoLnBvdyhyLDIpK01hdGgucG93KG8sMikpfX0sdC5lYXNlSW49Vyx0LmVhc2VJbk91dD1HLHQuZWFzZU91dD16LHQuaW5lcnRpYT1mdW5jdGlvbihlKXt2YXIgdCxuPWUuZnJvbSxvPXZvaWQgMD09PW4/MDpuLGk9ZS52ZWxvY2l0eSxsPXZvaWQgMD09PWk/MDppLHM9ZS5taW4sYz1lLm1heCx1PWUucG93ZXIsZj12b2lkIDA9PT11Py44OnUsZD1lLnRpbWVDb25zdGFudCxwPXZvaWQgMD09PWQ/NzUwOmQsaD1lLmJvdW5jZVN0aWZmbmVzcyx2PXZvaWQgMD09PWg/NTAwOmgsZz1lLmJvdW5jZURhbXBpbmcsQz12b2lkIDA9PT1nPzEwOmcsbT1lLnJlc3REZWx0YSx5PXZvaWQgMD09PW0/MTptLHc9ZS5tb2RpZnlUYXJnZXQsYj1lLmRyaXZlcix4PWUub25VcGRhdGUsXz1lLm9uQ29tcGxldGU7ZnVuY3Rpb24gTChlKXtyZXR1cm4gdm9pZCAwIT09cyYmZTxzfHx2b2lkIDAhPT1jJiZlPmN9ZnVuY3Rpb24gTyhlKXtyZXR1cm4gdm9pZCAwPT09cz9jOnZvaWQgMD09PWN8fE1hdGguYWJzKHMtZSk8TWF0aC5hYnMoYy1lKT9zOmN9ZnVuY3Rpb24gRShlKXtudWxsPT10fHx0LnN0b3AoKSx0PWNlKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxlKSx7ZHJpdmVyOmIsb25VcGRhdGU6ZnVuY3Rpb24odCl7dmFyIG47bnVsbD09eHx8eCh0KSxudWxsPT09KG49ZS5vblVwZGF0ZSl8fHZvaWQgMD09PW58fG4uY2FsbChlLHQpfSxvbkNvbXBsZXRlOl99KSl9ZnVuY3Rpb24gUyhlKXtFKHIuX19hc3NpZ24oe3R5cGU6XCJzcHJpbmdcIixzdGlmZm5lc3M6dixkYW1waW5nOkMscmVzdERlbHRhOnl9LGUpKX1pZihMKG8pKVMoe2Zyb206byx2ZWxvY2l0eTpsLHRvOk8obyl9KTtlbHNle3ZhciBNPWYqbCtvO3ZvaWQgMCE9PXcmJihNPXcoTSkpO3ZhciBqLGssUj1PKE0pLFA9Uj09PXM/LTE6MTtFKHt0eXBlOlwiZGVjYXlcIixmcm9tOm8sdmVsb2NpdHk6bCx0aW1lQ29uc3RhbnQ6cCxwb3dlcjpmLHJlc3REZWx0YTp5LG1vZGlmeVRhcmdldDp3LG9uVXBkYXRlOkwoTSk/ZnVuY3Rpb24oZSl7aj1rLGs9ZSxsPXVlKGUtaixhLmdldEZyYW1lRGF0YSgpLmRlbHRhKSwoMT09PVAmJmU+Unx8LTE9PT1QJiZlPFIpJiZTKHtmcm9tOmUsdG86Uix2ZWxvY2l0eTpsfSl9OnZvaWQgMH0pfXJldHVybntzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnQuc3RvcCgpfX19LHQuaW50ZXJwb2xhdGU9Qix0LmlzUG9pbnQ9Q2UsdC5pc1BvaW50M0Q9bWUsdC5rZXlmcmFtZXM9b2UsdC5saW5lYXI9VSx0Lm1pcnJvckVhc2luZz1aLHQubWl4PXgsdC5taXhDb2xvcj1TLHQubWl4Q29tcGxleD1ILHQucGlwZT1SLHQucG9pbnRGcm9tVmVjdG9yPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD1nZSh0KSx7eDpuKk1hdGguY29zKHQpK2UueCx5Om4qTWF0aC5zaW4odCkrZS55fX0sdC5wcm9ncmVzcz1iLHQucmFkaWFuc1RvRGVncmVlcz1mZSx0LnJldmVyc2VFYXNpbmc9RCx0LnNtb290aD1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT01MCk7dmFyIHQ9MCxuPTA7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBvPWEuZ2V0RnJhbWVEYXRhKCkudGltZXN0YW1wLGk9byE9PW4/by1uOjAsbD1pP2JlKHQscixpLGUpOnQ7cmV0dXJuIG49byx0PWwsbH19LHQuc21vb3RoRnJhbWU9YmUsdC5zbmFwPWZ1bmN0aW9uKGUpe2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0L2UpKmV9O3ZhciB0PTAsbj1lLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG89TWF0aC5hYnMoZVswXS1yKTtmb3IodD0xO3Q8bjt0Kyspe3ZhciBpPWVbdF0sYT1NYXRoLmFicyhpLXIpO2lmKDA9PT1hKXJldHVybiBpO2lmKGE+bylyZXR1cm4gZVt0LTFdO2lmKHQ9PT1uLTEpcmV0dXJuIGk7bz1hfX19LHQuc3ByaW5nPXksdC5zdGVwcz1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1cImVuZFwiKSxmdW5jdGlvbihuKXt2YXIgcj0obj1cImVuZFwiPT09dD9NYXRoLm1pbihuLC45OTkpOk1hdGgubWF4KG4sLjAwMSkpKmUsbz1cImVuZFwiPT09dD9NYXRoLmZsb29yKHIpOk1hdGguY2VpbChyKTtyZXR1cm4gcygwLDEsby9lKX19LHQudG9EZWNpbWFsPXdlLHQudmVsb2NpdHlQZXJGcmFtZT1mdW5jdGlvbihlLHQpe3JldHVybiBlLygxZTMvdCl9LHQudmVsb2NpdHlQZXJTZWNvbmQ9dWUsdC53cmFwPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LWU7cmV0dXJuKChuLWUpJXIrciklcitlfX0sMjcwMzooZSx0LG4pPT57dmFyIHI9big0MTQpO2Z1bmN0aW9uIG8oKXt9ZnVuY3Rpb24gaSgpe31pLnJlc2V0V2FybmluZ0NhY2hlPW8sZS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixvLGksYSl7aWYoYSE9PXIpe3ZhciBsPW5ldyBFcnJvcihcIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXNcIik7dGhyb3cgbC5uYW1lPVwiSW52YXJpYW50IFZpb2xhdGlvblwiLGx9fWZ1bmN0aW9uIHQoKXtyZXR1cm4gZX1lLmlzUmVxdWlyZWQ9ZTt2YXIgbj17YXJyYXk6ZSxiaWdpbnQ6ZSxib29sOmUsZnVuYzplLG51bWJlcjplLG9iamVjdDplLHN0cmluZzplLHN5bWJvbDplLGFueTplLGFycmF5T2Y6dCxlbGVtZW50OmUsZWxlbWVudFR5cGU6ZSxpbnN0YW5jZU9mOnQsbm9kZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0LGV4YWN0OnQsY2hlY2tQcm9wVHlwZXM6aSxyZXNldFdhcm5pbmdDYWNoZTpvfTtyZXR1cm4gbi5Qcm9wVHlwZXM9bixufX0sNTY5NzooZSx0LG4pPT57ZS5leHBvcnRzPW4oMjcwMykoKX0sNDE0OmU9PntlLmV4cG9ydHM9XCJTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRFwifSw3MjkyOihlLHQsbik9PntuLnIodCksbi5kKHQse0NhbGVuZGFyOigpPT5KbixDZW50dXJ5VmlldzooKT0+a3QsRGVjYWRlVmlldzooKT0+RnQsTW9udGhWaWV3OigpPT5TbixOYXZpZ2F0aW9uOigpPT5GZSxZZWFyVmlldzooKT0+dG4sZGVmYXVsdDooKT0+dHJ9KTt2YXIgcj1uKDY2ODkpLG89bi5uKHIpLGk9big1Njk3KSxhPW4ubihpKTtmdW5jdGlvbiBsKGUpe3ZhciB0LG4scj1cIlwiO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlfHxcIm51bWJlclwiPT10eXBlb2YgZSlyKz1lO2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIGUpaWYoQXJyYXkuaXNBcnJheShlKSlmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0mJihuPWwoZVt0XSkpJiYociYmKHIrPVwiIFwiKSxyKz1uKTtlbHNlIGZvcih0IGluIGUpZVt0XSYmKHImJihyKz1cIiBcIikscis9dCk7cmV0dXJuIHJ9Y29uc3Qgcz1mdW5jdGlvbigpe2Zvcih2YXIgZSx0LG49MCxyPVwiXCI7bjxhcmd1bWVudHMubGVuZ3RoOykoZT1hcmd1bWVudHNbbisrXSkmJih0PWwoZSkpJiYociYmKHIrPVwiIFwiKSxyKz10KTtyZXR1cm4gcn07dmFyIGM9big3NzMpLHU9bi5uKGMpO2Z1bmN0aW9uIGYoZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfXZhciBkPXUoKSgoZnVuY3Rpb24oZSl7dmFyIHQsbj12b2lkIDA9PT1lP3t9OmUscj1uLnVzZUZhbGxiYWNrTG9jYWxlLG89dm9pZCAwPT09cnx8cixpPW4uZmFsbGJhY2tMb2NhbGUsYT12b2lkIDA9PT1pP1wiZW4tVVNcIjppLGw9W107aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyl7dmFyIHM9d2luZG93Lm5hdmlnYXRvcjtsPWwuY29uY2F0KHMubGFuZ3VhZ2VzLHMubGFuZ3VhZ2Uscy51c2VyTGFuZ3VhZ2Uscy5icm93c2VyTGFuZ3VhZ2Uscy5zeXN0ZW1MYW5ndWFnZSl9cmV0dXJuIG8mJmwucHVzaChhKSxmdW5jdGlvbihlKXtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe2lmKCFlfHwtMT09PWUuaW5kZXhPZihcIi1cIil8fGUudG9Mb3dlckNhc2UoKSE9PWUpcmV0dXJuIGU7dmFyIHQ9ZS5zcGxpdChcIi1cIik7cmV0dXJuIHRbMF0rXCItXCIrdFsxXS50b1VwcGVyQ2FzZSgpfSkpfSgodD1sKS5maWx0ZXIoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUmJnQuaW5kZXhPZihlKT09PW59KSkpfSksZikscD11KCkoKGZ1bmN0aW9uKGUpe3JldHVybiBkKGUpWzBdfHxudWxsfSksZik7Y29uc3QgaD1wO2Z1bmN0aW9uIHYoZSx0LG4pe3JldHVybiBmdW5jdGlvbihyLG8pe3ZvaWQgMD09PW8mJihvPW4pO3ZhciBpPWUocikrbztyZXR1cm4gdChpKX19ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEYXRlKGUodCkuZ2V0VGltZSgpLTEpfX1mdW5jdGlvbiBDKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybltlKG4pLHQobildfX1mdW5jdGlvbiBtKGUpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBlLmdldEZ1bGxZZWFyKCk7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpcmV0dXJuIGU7dmFyIHQ9cGFyc2VJbnQoZSwxMCk7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJiFpc05hTih0KSlyZXR1cm4gdDt0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZ2V0IHllYXIgZnJvbSBkYXRlOiBcIi5jb25jYXQoZSxcIi5cIikpfWZ1bmN0aW9uIHkoZSl7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIGUuZ2V0TW9udGgoKTt0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZ2V0IG1vbnRoIGZyb20gZGF0ZTogXCIuY29uY2F0KGUsXCIuXCIpKX1mdW5jdGlvbiB3KGUpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBlLmdldERhdGUoKTt0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZ2V0IHllYXIgZnJvbSBkYXRlOiBcIi5jb25jYXQoZSxcIi5cIikpfWZ1bmN0aW9uIGIoZSl7dmFyIHQ9bShlKSxuPXQrKDEtdCklMTAwLHI9bmV3IERhdGU7cmV0dXJuIHIuc2V0RnVsbFllYXIobiwwLDEpLHIuc2V0SG91cnMoMCwwLDAsMCkscn12YXIgeD12KG0sYiwtMTAwKSxfPXYobSxiLDEwMCksTD1nKF8pLE89dihtLEwsLTEwMCksRT0odihtLEwsMTAwKSxDKGIsTCkpO2Z1bmN0aW9uIFMoZSl7dmFyIHQ9bShlKSxuPXQrKDEtdCklMTAscj1uZXcgRGF0ZTtyZXR1cm4gci5zZXRGdWxsWWVhcihuLDAsMSksci5zZXRIb3VycygwLDAsMCwwKSxyfXZhciBNPXYobSxTLC0xMCksaj12KG0sUywxMCksaz1nKGopLFI9dihtLGssLTEwKSxQPSh2KG0saywxMCksQyhTLGspKTtmdW5jdGlvbiBBKGUpe3ZhciB0PW0oZSksbj1uZXcgRGF0ZTtyZXR1cm4gbi5zZXRGdWxsWWVhcih0LDAsMSksbi5zZXRIb3VycygwLDAsMCwwKSxufXZhciBJPXYobSxBLC0xKSxUPXYobSxBLDEpLEg9ZyhUKSxWPXYobSxILC0xKSxCPSh2KG0sSCwxKSxDKEEsSCkpO2Z1bmN0aW9uIEQoZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXt2b2lkIDA9PT1yJiYocj10KTt2YXIgbz1tKG4pLGk9eShuKStyLGE9bmV3IERhdGU7cmV0dXJuIGEuc2V0RnVsbFllYXIobyxpLDEpLGEuc2V0SG91cnMoMCwwLDAsMCksZShhKX19ZnVuY3Rpb24gWihlKXt2YXIgdD1tKGUpLG49eShlKSxyPW5ldyBEYXRlO3JldHVybiByLnNldEZ1bGxZZWFyKHQsbiwxKSxyLnNldEhvdXJzKDAsMCwwLDApLHJ9dmFyICQ9RChaLC0xKSxGPUQoWiwxKSxOPWcoRiksVT1EKE4sLTEpLFc9KEQoTiwxKSxDKFosTikpO2Z1bmN0aW9uIHooZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXt2b2lkIDA9PT1yJiYocj10KTt2YXIgbz1tKG4pLGk9eShuKSxhPXcobikrcixsPW5ldyBEYXRlO3JldHVybiBsLnNldEZ1bGxZZWFyKG8saSxhKSxsLnNldEhvdXJzKDAsMCwwLDApLGUobCl9fWZ1bmN0aW9uIEcoZSl7dmFyIHQ9bShlKSxuPXkoZSkscj13KGUpLG89bmV3IERhdGU7cmV0dXJuIG8uc2V0RnVsbFllYXIodCxuLHIpLG8uc2V0SG91cnMoMCwwLDAsMCksb316KEcsLTEpO3ZhciBxLFk9Zyh6KEcsMSkpLEs9KHooWSwtMSkseihZLDEpLEMoRyxZKSk7ZnVuY3Rpb24gWChlKXtyZXR1cm4gdyhOKGUpKX1mdW5jdGlvbiBKKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gUShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGVlLHRlPXtBUkFCSUM6XCJBcmFiaWNcIixIRUJSRVc6XCJIZWJyZXdcIixJU09fODYwMTpcIklTTyA4NjAxXCIsVVM6XCJVU1wifSxuZT0oUShxPXt9LHRlLlVTLFtcImVuLUNBXCIsXCJlbi1VU1wiLFwiZXMtQVJcIixcImVzLUJPXCIsXCJlcy1DTFwiLFwiZXMtQ09cIixcImVzLUNSXCIsXCJlcy1ET1wiLFwiZXMtRUNcIixcImVzLUdUXCIsXCJlcy1ITlwiLFwiZXMtTVhcIixcImVzLU5JXCIsXCJlcy1QQVwiLFwiZXMtUEVcIixcImVzLVBSXCIsXCJlcy1TVlwiLFwiZXMtVkVcIixcInB0LUJSXCJdKSxRKHEsdGUuQVJBQklDLFtcImFyXCIsXCJhci1BRVwiLFwiYXItQkhcIixcImFyLURaXCIsXCJhci1FR1wiLFwiYXItSVFcIixcImFyLUpPXCIsXCJhci1LV1wiLFwiYXItTFlcIixcImFyLU9NXCIsXCJhci1RQVwiLFwiYXItU0FcIixcImFyLVNEXCIsXCJhci1TWVwiLFwiYXItWUVcIixcImR2XCIsXCJkdi1NVlwiLFwicHNcIixcInBzLUFSXCJdKSxRKHEsdGUuSEVCUkVXLFtcImhlXCIsXCJoZS1JTFwiXSkscSkscmU9KGVlPUFycmF5KDcpLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIEooZSl9KGVlKXx8ZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lW1wiQEBpdGVyYXRvclwiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZWUpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBKKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVyblwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bj9BcnJheS5mcm9tKGUpOlwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9KKGUsdCk6dm9pZCAwfX0oZWUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKS5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9KSksb2U9bmV3IE1hcDtmdW5jdGlvbiBpZShlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIHI9dHx8aCgpO29lLmhhcyhyKXx8b2Uuc2V0KHIsbmV3IE1hcCk7dmFyIG89b2UuZ2V0KHIpO3JldHVybiBvLmhhcyhlKXx8by5zZXQoZSxuZXcgSW50bC5EYXRlVGltZUZvcm1hdChyLGUpLmZvcm1hdCksby5nZXQoZSkobil9fShlKSh0LGZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlKGUpO3JldHVybiBuZXcgRGF0ZSh0LnNldEhvdXJzKDEyKSl9KG4pKX19aWUoe2RheTpcIm51bWVyaWNcIixtb250aDpcIm51bWVyaWNcIix5ZWFyOlwibnVtZXJpY1wifSk7dmFyIGFlPWllKHtkYXk6XCJudW1lcmljXCJ9KSxsZT1pZSh7ZGF5OlwibnVtZXJpY1wiLG1vbnRoOlwibG9uZ1wiLHllYXI6XCJudW1lcmljXCJ9KSxzZT1pZSh7bW9udGg6XCJsb25nXCJ9KSxjZT1pZSh7bW9udGg6XCJsb25nXCIseWVhcjpcIm51bWVyaWNcIn0pLHVlPWllKHt3ZWVrZGF5Olwic2hvcnRcIn0pLGZlPWllKHt3ZWVrZGF5OlwibG9uZ1wifSksZGU9aWUoe3llYXI6XCJudW1lcmljXCJ9KSxwZT1yZVswXSxoZT1yZVs1XSx2ZT1yZVs2XTtmdW5jdGlvbiBnZShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGUuSVNPXzg2MDEsbj1lLmdldERheSgpO3N3aXRjaCh0KXtjYXNlIHRlLklTT184NjAxOnJldHVybihuKzYpJTc7Y2FzZSB0ZS5BUkFCSUM6cmV0dXJuKG4rMSklNztjYXNlIHRlLkhFQlJFVzpjYXNlIHRlLlVTOnJldHVybiBuO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgY2FsZW5kYXIgdHlwZS5cIil9fWZ1bmN0aW9uIENlKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0ZS5JU09fODYwMSxuPW0oZSkscj15KGUpLG89ZS5nZXREYXRlKCktZ2UoZSx0KTtyZXR1cm4gbmV3IERhdGUobixyLG8pfWZ1bmN0aW9uIG1lKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4gYih0KTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gUyh0KTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIEEodCk7Y2FzZVwibW9udGhcIjpyZXR1cm4gWih0KTtjYXNlXCJkYXlcIjpyZXR1cm4gRyh0KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX1mdW5jdGlvbiB5ZShlLHQpe3N3aXRjaChlKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIF8odCk7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIGoodCk7Y2FzZVwieWVhclwiOnJldHVybiBUKHQpO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIEYodCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19dmFyIHdlPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImRlY2FkZVwiOnJldHVybiBNKHQsLTEwMCk7Y2FzZVwieWVhclwiOnJldHVybiBJKHQsLTEwKTtjYXNlXCJtb250aFwiOnJldHVybiAkKHQsLTEyKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX0sYmU9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIGoodCwxMDApO2Nhc2VcInllYXJcIjpyZXR1cm4gVCh0LDEwKTtjYXNlXCJtb250aFwiOnJldHVybiBGKHQsMTIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fTtmdW5jdGlvbiB4ZShlLHQpe3N3aXRjaChlKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIEwodCk7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIGsodCk7Y2FzZVwieWVhclwiOnJldHVybiBIKHQpO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIE4odCk7Y2FzZVwiZGF5XCI6cmV0dXJuIFkodCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19dmFyIF9lPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImRlY2FkZVwiOnJldHVybiBSKHQsLTEwMCk7Y2FzZVwieWVhclwiOnJldHVybiBWKHQsLTEwKTtjYXNlXCJtb250aFwiOnJldHVybiBVKHQsLTEyKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX07ZnVuY3Rpb24gTGUoZSx0KXtzd2l0Y2goZSl7Y2FzZVwiY2VudHVyeVwiOnJldHVybiBFKHQpO2Nhc2VcImRlY2FkZVwiOnJldHVybiBQKHQpO2Nhc2VcInllYXJcIjpyZXR1cm4gQih0KTtjYXNlXCJtb250aFwiOnJldHVybiBXKHQpO2Nhc2VcImRheVwiOnJldHVybiBLKHQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fWZ1bmN0aW9uIE9lKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpkZTtyZXR1cm4oYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0pKS5qb2luKFwiIOKAkyBcIil9ZnVuY3Rpb24gRWUoZSx0LG4pe3JldHVybiBPZShlLHQsUChuKSl9ZnVuY3Rpb24gU2UoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRlLklTT184NjAxLG49ZS5nZXREYXkoKTtzd2l0Y2godCl7Y2FzZSB0ZS5BUkFCSUM6Y2FzZSB0ZS5IRUJSRVc6cmV0dXJuIG49PT1oZXx8bj09PXZlO2Nhc2UgdGUuSVNPXzg2MDE6Y2FzZSB0ZS5VUzpyZXR1cm4gbj09PXZlfHxuPT09cGU7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBjYWxlbmRhciB0eXBlLlwiKX19ZnVuY3Rpb24gTWUoZSl7cmV0dXJuIE1lPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LE1lKGUpfXZhciBqZT1PYmplY3QudmFsdWVzKHRlKSxrZT1bXCJjZW50dXJ5XCIsXCJkZWNhZGVcIixcInllYXJcIixcIm1vbnRoXCJdLFJlPWEoKS5vbmVPZihqZSksUGU9YSgpLm9uZU9mVHlwZShbYSgpLnN0cmluZyxhKCkuYXJyYXlPZihhKCkuc3RyaW5nKV0pLEFlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lW3RdO2lmKCFyKXJldHVybiBudWxsO2lmKCEociBpbnN0YW5jZW9mIERhdGUpKXJldHVybiBuZXcgRXJyb3IoXCJJbnZhbGlkIHByb3AgYFwiLmNvbmNhdCh0LFwiYCBvZiB0eXBlIGBcIikuY29uY2F0KE1lKHIpLFwiYCBzdXBwbGllZCB0byBgXCIpLmNvbmNhdChuLFwiYCwgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgYERhdGVgLlwiKSk7dmFyIG89ZS5tYXhEYXRlO3JldHVybiBvJiZyPm8/bmV3IEVycm9yKFwiSW52YWxpZCBwcm9wIGBcIi5jb25jYXQodCxcImAgb2YgdHlwZSBgXCIpLmNvbmNhdChNZShyKSxcImAgc3VwcGxpZWQgdG8gYFwiKS5jb25jYXQobixcImAsIG1pbkRhdGUgY2Fubm90IGJlIGxhcmdlciB0aGFuIG1heERhdGUuXCIpKTpudWxsfSxJZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZVt0XTtpZighcilyZXR1cm4gbnVsbDtpZighKHIgaW5zdGFuY2VvZiBEYXRlKSlyZXR1cm4gbmV3IEVycm9yKFwiSW52YWxpZCBwcm9wIGBcIi5jb25jYXQodCxcImAgb2YgdHlwZSBgXCIpLmNvbmNhdChNZShyKSxcImAgc3VwcGxpZWQgdG8gYFwiKS5jb25jYXQobixcImAsIGV4cGVjdGVkIGluc3RhbmNlIG9mIGBEYXRlYC5cIikpO3ZhciBvPWUubWluRGF0ZTtyZXR1cm4gbyYmcjxvP25ldyBFcnJvcihcIkludmFsaWQgcHJvcCBgXCIuY29uY2F0KHQsXCJgIG9mIHR5cGUgYFwiKS5jb25jYXQoTWUociksXCJgIHN1cHBsaWVkIHRvIGBcIikuY29uY2F0KG4sXCJgLCBtYXhEYXRlIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gbWluRGF0ZS5cIikpOm51bGx9LFRlPWEoKS5vbmVPZlR5cGUoW2EoKS5mdW5jLGEoKS5zaGFwZSh7Y3VycmVudDphKCkuYW55fSldKSxIZT1hKCkub25lT2ZUeXBlKFthKCkuaW5zdGFuY2VPZihEYXRlKSxhKCkuYXJyYXlPZihhKCkuaW5zdGFuY2VPZihEYXRlKSldKSxWZT1hKCkuYXJyYXlPZihhKCkub25lT2Yoa2UpKSxCZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZVt0XSxvPWUudmlld3N8fGtlO3JldHVybiB2b2lkIDAhPT1yJiYtMT09PW8uaW5kZXhPZihyKT9uZXcgRXJyb3IoXCJJbnZhbGlkIHByb3AgYFwiLmNvbmNhdCh0LFwiYCBvZiB2YWx1ZSBgXCIpLmNvbmNhdChyLFwiYCBzdXBwbGllZCB0byBgXCIpLmNvbmNhdChuLFwiYCwgZXhwZWN0ZWQgb25lIG9mIFtcIikuY29uY2F0KG8ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4nXCInLmNvbmNhdChlLCdcIicpfSkpLmpvaW4oXCIsIFwiKSxcIl0uXCIpKTpudWxsfTtCZS5pc1JlcXVpcmVkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lW3RdO3JldHVybiByP0JlKGUsdCxuKTpuZXcgRXJyb3IoXCJUaGUgcHJvcCBgXCIuY29uY2F0KHQsXCJgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCBpbiBgXCIpLmNvbmNhdChuLFwiYCwgYnV0IGl0cyB2YWx1ZSBpcyBgXCIpLmNvbmNhdChyLFwiYC5cIikpfTt2YXIgRGU9e2FjdGl2ZVN0YXJ0RGF0ZTphKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLGhvdmVyOmEoKS5pbnN0YW5jZU9mKERhdGUpLGxvY2FsZTphKCkuc3RyaW5nLG1heERhdGU6SWUsbWluRGF0ZTpBZSxvbkNsaWNrOmEoKS5mdW5jLG9uTW91c2VPdmVyOmEoKS5mdW5jLHRpbGVDbGFzc05hbWU6YSgpLm9uZU9mVHlwZShbYSgpLmZ1bmMsUGVdKSx0aWxlQ29udGVudDphKCkub25lT2ZUeXBlKFthKCkuZnVuYyxhKCkubm9kZV0pLHZhbHVlOkhlLHZhbHVlVHlwZTphKCkuc3RyaW5nfSxaZT17YWN0aXZlU3RhcnREYXRlOmEoKS5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsY2xhc3NlczphKCkuYXJyYXlPZihhKCkuc3RyaW5nKS5pc1JlcXVpcmVkLGRhdGU6YSgpLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxsb2NhbGU6YSgpLnN0cmluZyxtYXhEYXRlOkllLG1pbkRhdGU6QWUsb25DbGljazphKCkuZnVuYyxvbk1vdXNlT3ZlcjphKCkuZnVuYyxzdHlsZTphKCkub2JqZWN0T2YoYSgpLm9uZU9mVHlwZShbYSgpLnN0cmluZyxhKCkubnVtYmVyXSkpLHRpbGVDbGFzc05hbWU6YSgpLm9uZU9mVHlwZShbYSgpLmZ1bmMsUGVdKSx0aWxlQ29udGVudDphKCkub25lT2ZUeXBlKFthKCkuZnVuYyxhKCkubm9kZV0pLHRpbGVEaXNhYmxlZDphKCkuZnVuY30sJGU9XCJyZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvblwiO2Z1bmN0aW9uIEZlKGUpe3ZhciB0LG49ZS5hY3RpdmVTdGFydERhdGUscj1lLmRyaWxsVXAsaT1lLmZvcm1hdE1vbnRoWWVhcixhPXZvaWQgMD09PWk/Y2U6aSxsPWUuZm9ybWF0WWVhcixzPXZvaWQgMD09PWw/ZGU6bCxjPWUubG9jYWxlLHU9ZS5tYXhEYXRlLGY9ZS5taW5EYXRlLGQ9ZS5uYXZpZ2F0aW9uQXJpYUxhYmVsLGg9dm9pZCAwPT09ZD9cIlwiOmQsdj1lLm5hdmlnYXRpb25BcmlhTGl2ZSxnPWUubmF2aWdhdGlvbkxhYmVsLEM9ZS5uZXh0MkFyaWFMYWJlbCxtPXZvaWQgMD09PUM/XCJcIjpDLHk9ZS5uZXh0MkxhYmVsLHc9dm9pZCAwPT09eT9cIsK7XCI6eSxiPWUubmV4dEFyaWFMYWJlbCxfPXZvaWQgMD09PWI/XCJcIjpiLEw9ZS5uZXh0TGFiZWwsUz12b2lkIDA9PT1MP1wi4oC6XCI6TCxqPWUucHJldjJBcmlhTGFiZWwsaz12b2lkIDA9PT1qP1wiXCI6aixQPWUucHJldjJMYWJlbCxBPXZvaWQgMD09PVA/XCLCq1wiOlAsVD1lLnByZXZBcmlhTGFiZWwsSD12b2lkIDA9PT1UP1wiXCI6VCxCPWUucHJldkxhYmVsLEQ9dm9pZCAwPT09Qj9cIuKAuVwiOkIsWj1lLnNldEFjdGl2ZVN0YXJ0RGF0ZSxGPWUuc2hvd0RvdWJsZVZpZXcsTj1lLnZpZXcsVz1lLnZpZXdzLmluZGV4T2YoTik+MCx6PVwiY2VudHVyeVwiIT09TixHPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4geCh0KTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gTSh0KTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIEkodCk7Y2FzZVwibW9udGhcIjpyZXR1cm4gJCh0KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX0oTixuKSxxPXomJndlKE4sbiksWT15ZShOLG4pLEs9eiYmYmUoTixuKSxYPWZ1bmN0aW9uKCl7aWYoRy5nZXRGdWxsWWVhcigpPDApcmV0dXJuITA7dmFyIGU9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZVwiY2VudHVyeVwiOnJldHVybiBPKHQpO2Nhc2VcImRlY2FkZVwiOnJldHVybiBSKHQpO2Nhc2VcInllYXJcIjpyZXR1cm4gVih0KTtjYXNlXCJtb250aFwiOnJldHVybiBVKHQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fShOLG4pO3JldHVybiBmJiZmPj1lfSgpLEo9eiYmZnVuY3Rpb24oKXtpZihxLmdldEZ1bGxZZWFyKCk8MClyZXR1cm4hMDt2YXIgZT1fZShOLG4pO3JldHVybiBmJiZmPj1lfSgpLFE9dSYmdTxZLGVlPXomJnUmJnU8SztmdW5jdGlvbiB0ZShlKXt2YXIgdD1mdW5jdGlvbigpe3N3aXRjaChOKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gT2UoZSx0LEUobikpfShjLHMsZSk7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIEVlKGMscyxlKTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIHMoYyxlKTtjYXNlXCJtb250aFwiOnJldHVybiBhKGMsZSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHZpZXc6IFwiLmNvbmNhdChOLFwiLlwiKSl9fSgpO3JldHVybiBnP2coe2RhdGU6ZSxsYWJlbDp0LGxvY2FsZTpjfHxwKCksdmlldzpOfSk6dH1yZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOiRlfSxudWxsIT09QSYmeiYmbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6ayxjbGFzc05hbWU6XCJcIi5jb25jYXQoJGUsXCJfX2Fycm93IFwiKS5jb25jYXQoJGUsXCJfX3ByZXYyLWJ1dHRvblwiKSxkaXNhYmxlZDpKLG9uQ2xpY2s6ZnVuY3Rpb24oKXtaKHEsXCJwcmV2MlwiKX0sdHlwZTpcImJ1dHRvblwifSxBKSxudWxsIT09RCYmbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6SCxjbGFzc05hbWU6XCJcIi5jb25jYXQoJGUsXCJfX2Fycm93IFwiKS5jb25jYXQoJGUsXCJfX3ByZXYtYnV0dG9uXCIpLGRpc2FibGVkOlgsb25DbGljazpmdW5jdGlvbigpe1ooRyxcInByZXZcIil9LHR5cGU6XCJidXR0b25cIn0sRCksKHQ9XCJcIi5jb25jYXQoJGUsXCJfX2xhYmVsXCIpLG8oKS5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse1wiYXJpYS1sYWJlbFwiOmgsXCJhcmlhLWxpdmVcIjp2LGNsYXNzTmFtZTp0LGRpc2FibGVkOiFXLG9uQ2xpY2s6cixzdHlsZTp7ZmxleEdyb3c6MX0sdHlwZTpcImJ1dHRvblwifSxvKCkuY3JlYXRlRWxlbWVudChcInNwYW5cIix7Y2xhc3NOYW1lOlwiXCIuY29uY2F0KHQsXCJfX2xhYmVsVGV4dCBcIikuY29uY2F0KHQsXCJfX2xhYmVsVGV4dC0tZnJvbVwiKX0sdGUobikpLEYmJm8oKS5jcmVhdGVFbGVtZW50KG8oKS5GcmFnbWVudCxudWxsLG8oKS5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtjbGFzc05hbWU6XCJcIi5jb25jYXQodCxcIl9fZGl2aWRlclwiKX0sXCIg4oCTIFwiKSxvKCkuY3JlYXRlRWxlbWVudChcInNwYW5cIix7Y2xhc3NOYW1lOlwiXCIuY29uY2F0KHQsXCJfX2xhYmVsVGV4dCBcIikuY29uY2F0KHQsXCJfX2xhYmVsVGV4dC0tdG9cIil9LHRlKFkpKSkpKSxudWxsIT09UyYmbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6XyxjbGFzc05hbWU6XCJcIi5jb25jYXQoJGUsXCJfX2Fycm93IFwiKS5jb25jYXQoJGUsXCJfX25leHQtYnV0dG9uXCIpLGRpc2FibGVkOlEsb25DbGljazpmdW5jdGlvbigpe1ooWSxcIm5leHRcIil9LHR5cGU6XCJidXR0b25cIn0sUyksbnVsbCE9PXcmJnomJm8oKS5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse1wiYXJpYS1sYWJlbFwiOm0sY2xhc3NOYW1lOlwiXCIuY29uY2F0KCRlLFwiX19hcnJvdyBcIikuY29uY2F0KCRlLFwiX19uZXh0Mi1idXR0b25cIiksZGlzYWJsZWQ6ZWUsb25DbGljazpmdW5jdGlvbigpe1ooSyxcIm5leHQyXCIpfSx0eXBlOlwiYnV0dG9uXCJ9LHcpKX1GZS5wcm9wVHlwZXM9e2FjdGl2ZVN0YXJ0RGF0ZTphKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLGRyaWxsVXA6YSgpLmZ1bmMuaXNSZXF1aXJlZCxmb3JtYXRNb250aFllYXI6YSgpLmZ1bmMsZm9ybWF0WWVhcjphKCkuZnVuYyxsb2NhbGU6YSgpLnN0cmluZyxtYXhEYXRlOmEoKS5pbnN0YW5jZU9mKERhdGUpLG1pbkRhdGU6YSgpLmluc3RhbmNlT2YoRGF0ZSksbmF2aWdhdGlvbkFyaWFMYWJlbDphKCkuc3RyaW5nLG5hdmlnYXRpb25BcmlhTGl2ZTphKCkuc3RyaW5nLG5hdmlnYXRpb25MYWJlbDphKCkuZnVuYyxuZXh0MkFyaWFMYWJlbDphKCkuc3RyaW5nLG5leHQyTGFiZWw6YSgpLm5vZGUsbmV4dEFyaWFMYWJlbDphKCkuc3RyaW5nLG5leHRMYWJlbDphKCkubm9kZSxwcmV2MkFyaWFMYWJlbDphKCkuc3RyaW5nLHByZXYyTGFiZWw6YSgpLm5vZGUscHJldkFyaWFMYWJlbDphKCkuc3RyaW5nLHByZXZMYWJlbDphKCkubm9kZSxzZXRBY3RpdmVTdGFydERhdGU6YSgpLmZ1bmMuaXNSZXF1aXJlZCxzaG93RG91YmxlVmlldzphKCkuYm9vbCx2aWV3OkJlLmlzUmVxdWlyZWQsdmlld3M6VmUuaXNSZXF1aXJlZH07dmFyIE5lPVtcImNoaWxkcmVuXCIsXCJjbGFzc05hbWVcIixcImRpcmVjdGlvblwiLFwiY291bnRcIixcIm9mZnNldFwiLFwic3R5bGVcIixcIndyYXBcIl07ZnVuY3Rpb24gVWUoKXtyZXR1cm4gVWU9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxVZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gV2UoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHplKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1dlKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7R2UoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOldlKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIEdlKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBxZShlKXtyZXR1cm5cIlwiLmNvbmNhdChlLFwiJVwiKX1mdW5jdGlvbiBZZShlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5jbGFzc05hbWUscj1lLmRpcmVjdGlvbixpPWUuY291bnQsYT1lLm9mZnNldCxsPWUuc3R5bGUscz1lLndyYXAsYz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsTmUpO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLFVlKHtjbGFzc05hbWU6bixzdHlsZTp6ZSh7ZGlzcGxheTpcImZsZXhcIixmbGV4RGlyZWN0aW9uOnIsZmxleFdyYXA6cz9cIndyYXBcIjpcIm5vLXdyYXBcIn0sbCl9LGMpLG8oKS5DaGlsZHJlbi5tYXAodCwoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbygpLmNsb25lRWxlbWVudChlLHplKHplKHt9LGUucHJvcHMpLHt9LHtzdHlsZTp7ZmxleEJhc2lzOnFlKDEwMC9pKSxmbGV4U2hyaW5rOjAsZmxleEdyb3c6MCxvdmVyZmxvdzpcImhpZGRlblwiLG1hcmdpbkxlZnQ6YSYmMD09PXQ/cWUoMTAwKmEvaSk6bnVsbH19KSl9KSkpfWZ1bmN0aW9uIEtlKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBYZShlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVtcIkBAaXRlcmF0b3JcIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBYZShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm5cIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4/QXJyYXkuZnJvbShlKTpcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/WGUoZSx0KTp2b2lkIDB9fShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBYZShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIEplKGUsdCl7cmV0dXJuIHRbMF08PWUmJnRbMV0+PWV9ZnVuY3Rpb24gUWUoZSx0KXtyZXR1cm4gSmUoZVswXSx0KXx8SmUoZVsxXSx0KX1mdW5jdGlvbiBldChlLHQsbil7dmFyIHI9W107aWYoUWUodCxlKSl7ci5wdXNoKG4pO3ZhciBvPUplKGVbMF0sdCksaT1KZShlWzFdLHQpO28mJnIucHVzaChcIlwiLmNvbmNhdChuLFwiU3RhcnRcIikpLGkmJnIucHVzaChcIlwiLmNvbmNhdChuLFwiRW5kXCIpKSxvJiZpJiZyLnB1c2goXCJcIi5jb25jYXQobixcIkJvdGhFbmRzXCIpKX1yZXR1cm4gcn1mdW5jdGlvbiB0dCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSx0PWUudmFsdWUsbj1lLnZhbHVlVHlwZSxyPWUuZGF0ZSxvPWUuZGF0ZVR5cGUsaT1lLmhvdmVyLGE9XCJyZWFjdC1jYWxlbmRhcl9fdGlsZVwiLGw9W2FdO2lmKCFyKXJldHVybiBsO2lmKCFBcnJheS5pc0FycmF5KHIpJiYhbyl0aHJvdyBuZXcgRXJyb3IoXCJnZXRUaWxlQ2xhc3NlcygpOiBVbmFibGUgdG8gZ2V0IHRpbGUgYWN0aXZpdHkgY2xhc3NlcyBiZWNhdXNlIG9uZSBvciBtb3JlIHJlcXVpcmVkIGFyZ3VtZW50cyB3ZXJlIG5vdCBwYXNzZWQuXCIpO3ZhciBzPW5ldyBEYXRlLGM9QXJyYXkuaXNBcnJheShyKT9yOkxlKG8scik7aWYoSmUocyxjKSYmbC5wdXNoKFwiXCIuY29uY2F0KGEsXCItLW5vd1wiKSksIXQpcmV0dXJuIGw7aWYoIUFycmF5LmlzQXJyYXkodCkmJiFuKXRocm93IG5ldyBFcnJvcihcImdldFRpbGVDbGFzc2VzKCk6IFVuYWJsZSB0byBnZXQgdGlsZSBhY3Rpdml0eSBjbGFzc2VzIGJlY2F1c2Ugb25lIG9yIG1vcmUgcmVxdWlyZWQgYXJndW1lbnRzIHdlcmUgbm90IHBhc3NlZC5cIik7dmFyIHUsZixkPUFycmF5LmlzQXJyYXkodCk/dDpMZShuLHQpO2Y9YywodT1kKVswXTw9ZlswXSYmdVsxXT49ZlsxXT9sLnB1c2goXCJcIi5jb25jYXQoYSxcIi0tYWN0aXZlXCIpKTpRZShkLGMpJiZsLnB1c2goXCJcIi5jb25jYXQoYSxcIi0taGFzQWN0aXZlXCIpKTt2YXIgcD1ldChkLGMsXCJcIi5jb25jYXQoYSxcIi0tcmFuZ2VcIikpO2wucHVzaC5hcHBseShsLEtlKHApKTt2YXIgaD1bXS5jb25jYXQodCk7aWYoaSYmMT09PWgubGVuZ3RoKXt2YXIgdj1ldChpPmRbMF0/W2RbMF0saV06W2ksZFswXV0sYyxcIlwiLmNvbmNhdChhLFwiLS1ob3ZlclwiKSk7bC5wdXNoLmFwcGx5KGwsS2UodikpfXJldHVybiBsfVllLnByb3BUeXBlcz17Y2hpbGRyZW46YSgpLm5vZGUsY2xhc3NOYW1lOmEoKS5zdHJpbmcsY291bnQ6YSgpLm51bWJlci5pc1JlcXVpcmVkLGRpcmVjdGlvbjphKCkuc3RyaW5nLG9mZnNldDphKCkubnVtYmVyLHN0eWxlOmEoKS5vYmplY3RPZihhKCkub25lT2ZUeXBlKFthKCkuc3RyaW5nLGEoKS5udW1iZXJdKSksd3JhcDphKCkuYm9vbH07dmFyIG50PVtcImNsYXNzTmFtZVwiLFwiY291bnRcIixcImRhdGVUcmFuc2Zvcm1cIixcImRhdGVUeXBlXCIsXCJlbmRcIixcImhvdmVyXCIsXCJvZmZzZXRcIixcInN0YXJ0XCIsXCJzdGVwXCIsXCJ0aWxlXCIsXCJ2YWx1ZVwiLFwidmFsdWVUeXBlXCJdO2Z1bmN0aW9uIHJ0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBvdChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9ydChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2l0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpydChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBpdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gYXQoKXtyZXR1cm4gYXQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxhdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbHQoZSl7Zm9yKHZhciB0PWUuY2xhc3NOYW1lLG49ZS5jb3VudCxyPXZvaWQgMD09PW4/MzpuLGk9ZS5kYXRlVHJhbnNmb3JtLGE9ZS5kYXRlVHlwZSxsPWUuZW5kLHM9ZS5ob3ZlcixjPWUub2Zmc2V0LHU9ZS5zdGFydCxmPWUuc3RlcCxkPXZvaWQgMD09PWY/MTpmLHA9ZS50aWxlLGg9ZS52YWx1ZSx2PWUudmFsdWVUeXBlLGc9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLG50KSxDPVtdLG09dTttPD1sO20rPWQpe3ZhciB5PWkobSk7Qy5wdXNoKG8oKS5jcmVhdGVFbGVtZW50KHAsYXQoe2tleTp5LmdldFRpbWUoKSxjbGFzc2VzOnR0KHt2YWx1ZTpoLHZhbHVlVHlwZTp2LGRhdGU6eSxkYXRlVHlwZTphLGhvdmVyOnN9KSxkYXRlOnkscG9pbnQ6bX0sZykpKX1yZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoWWUse2NsYXNzTmFtZTp0LGNvdW50OnIsb2Zmc2V0OmMsd3JhcDohMH0sQyl9ZnVuY3Rpb24gc3QoZSl7cmV0dXJuIHN0PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LHN0KGUpfWZ1bmN0aW9uIGN0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiB1dChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9jdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3Z0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpjdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBmdChlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24gZHQoZSx0KXtyZXR1cm4gZHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxkdChlLHQpfWZ1bmN0aW9uIHB0KGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiBlfWZ1bmN0aW9uIGh0KGUpe3JldHVybiBodD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0saHQoZSl9ZnVuY3Rpb24gdnQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIGd0KGUsdCl7cmV0dXJuIGUmJiF0fHwhZSYmdHx8ZSYmdCYmZS5nZXRUaW1lKCkhPT10LmdldFRpbWUoKX1mdW5jdGlvbiBDdChlLHQpe3ZhciBuPWUuYWN0aXZlU3RhcnREYXRlLHI9ZS5kYXRlLG89ZS52aWV3O3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dCh7YWN0aXZlU3RhcnREYXRlOm4sZGF0ZTpyLHZpZXc6b30pOnR9bHQucHJvcFR5cGVzPW90KG90KHt9LERlKSx7fSx7YWN0aXZlU3RhcnREYXRlOmEoKS5pbnN0YW5jZU9mKERhdGUpLGNvdW50OmEoKS5udW1iZXIsZGF0ZVRyYW5zZm9ybTphKCkuZnVuYy5pc1JlcXVpcmVkLGRhdGVUeXBlOmEoKS5zdHJpbmcsb2Zmc2V0OmEoKS5udW1iZXIsc3RlcDphKCkubnVtYmVyLHRpbGU6YSgpLmZ1bmMuaXNSZXF1aXJlZH0pO3ZhciBtdD1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksdCYmZHQoZSx0KX0oYyxlKTt2YXIgdCxuLHIsaSxhLGw9KGk9YyxhPWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZnVuY3Rpb24oKXt2YXIgZSx0PWh0KGkpO2lmKGEpe3ZhciBuPWh0KHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QodCxhcmd1bWVudHMsbil9ZWxzZSBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJihcIm9iamVjdFwiPT09c3QodCl8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBwdChlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIGMoKXt2YXIgZTshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGMpO2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09YXJndW1lbnRzW3JdO3JldHVybiB2dChwdChlPWwuY2FsbC5hcHBseShsLFt0aGlzXS5jb25jYXQobikpKSxcInN0YXRlXCIse30pLGV9cmV0dXJuIHQ9YyxyPVt7a2V5OlwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmFjdGl2ZVN0YXJ0RGF0ZSxyPWUudGlsZUNsYXNzTmFtZSxvPWUudGlsZUNvbnRlbnQsaT17fTtyZXR1cm4ociE9PXQudGlsZUNsYXNzTmFtZVByb3BzfHxndChuLHQuYWN0aXZlU3RhcnREYXRlUHJvcHMpKSYmKGkudGlsZUNsYXNzTmFtZT1DdChlLHIpLGkudGlsZUNsYXNzTmFtZVByb3BzPXIpLChvIT09dC50aWxlQ29udGVudFByb3BzfHxndChuLHQuYWN0aXZlU3RhcnREYXRlUHJvcHMpKSYmKGkudGlsZUNvbnRlbnQ9Q3QoZSxvKSxpLnRpbGVDb250ZW50UHJvcHM9byksaS5hY3RpdmVTdGFydERhdGVQcm9wcz1uLGl9fV0sKG49W3trZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmFjdGl2ZVN0YXJ0RGF0ZSxuPWUuY2hpbGRyZW4scj1lLmNsYXNzZXMsaT1lLmRhdGUsYT1lLmZvcm1hdEFiYnIsbD1lLmxvY2FsZSxjPWUubWF4RGF0ZSx1PWUubWF4RGF0ZVRyYW5zZm9ybSxmPWUubWluRGF0ZSxkPWUubWluRGF0ZVRyYW5zZm9ybSxwPWUub25DbGljayxoPWUub25Nb3VzZU92ZXIsdj1lLnN0eWxlLGc9ZS50aWxlRGlzYWJsZWQsQz1lLnZpZXcsbT10aGlzLnN0YXRlLHk9bS50aWxlQ2xhc3NOYW1lLHc9bS50aWxlQ29udGVudDtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7Y2xhc3NOYW1lOnMocix5KSxkaXNhYmxlZDpmJiZkKGYpPml8fGMmJnUoYyk8aXx8ZyYmZyh7YWN0aXZlU3RhcnREYXRlOnQsZGF0ZTppLHZpZXc6Q30pLG9uQ2xpY2s6cCYmZnVuY3Rpb24oZSl7cmV0dXJuIHAoaSxlKX0sb25Gb2N1czpoJiZmdW5jdGlvbigpe3JldHVybiBoKGkpfSxvbk1vdXNlT3ZlcjpoJiZmdW5jdGlvbigpe3JldHVybiBoKGkpfSxzdHlsZTp2LHR5cGU6XCJidXR0b25cIn0sYT9vKCkuY3JlYXRlRWxlbWVudChcImFiYnJcIix7XCJhcmlhLWxhYmVsXCI6YShsLGkpfSxuKTpuLHcpfX1dKSYmZnQodC5wcm90b3R5cGUsbiksciYmZnQodCxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInByb3RvdHlwZVwiLHt3cml0YWJsZTohMX0pLGN9KHIuQ29tcG9uZW50KTttdC5wcm9wVHlwZXM9dXQodXQoe30sWmUpLHt9LHtjaGlsZHJlbjphKCkubm9kZS5pc1JlcXVpcmVkLGZvcm1hdEFiYnI6YSgpLmZ1bmMsbWF4RGF0ZVRyYW5zZm9ybTphKCkuZnVuYy5pc1JlcXVpcmVkLG1pbkRhdGVUcmFuc2Zvcm06YSgpLmZ1bmMuaXNSZXF1aXJlZH0pO3ZhciB5dD1bXCJjbGFzc2VzXCIsXCJmb3JtYXRZZWFyXCJdO2Z1bmN0aW9uIHd0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBidChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj93dChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3h0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTp3dChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiB4dChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gX3QoKXtyZXR1cm4gX3Q9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxfdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIEx0PVwicmVhY3QtY2FsZW5kYXJfX2NlbnR1cnktdmlld19fZGVjYWRlc19fZGVjYWRlXCI7ZnVuY3Rpb24gT3QoZSl7dmFyIHQ9ZS5jbGFzc2VzLG49ZS5mb3JtYXRZZWFyLHI9dm9pZCAwPT09bj9kZTpuLGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLHl0KSxhPWkuZGF0ZSxsPWkubG9jYWxlO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChtdCxfdCh7fSxpLHtjbGFzc2VzOltdLmNvbmNhdCh0LEx0KSxtYXhEYXRlVHJhbnNmb3JtOmssbWluRGF0ZVRyYW5zZm9ybTpTLHZpZXc6XCJjZW50dXJ5XCJ9KSxFZShsLHIsYSkpfWZ1bmN0aW9uIEV0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBTdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gTXQoKXtyZXR1cm4gTXQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxNdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24ganQoZSl7dmFyIHQ9bShiKGUuYWN0aXZlU3RhcnREYXRlKSksbj10Kzk5O3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChsdCxNdCh7fSxlLHtjbGFzc05hbWU6XCJyZWFjdC1jYWxlbmRhcl9fY2VudHVyeS12aWV3X19kZWNhZGVzXCIsZGF0ZVRyYW5zZm9ybTpTLGRhdGVUeXBlOlwiZGVjYWRlXCIsZW5kOm4sc3RhcnQ6dCxzdGVwOjEwLHRpbGU6T3R9KSl9ZnVuY3Rpb24ga3QoZSl7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX19jZW50dXJ5LXZpZXdcIn0sbygpLmNyZWF0ZUVsZW1lbnQoanQsZSkpfU90LnByb3BUeXBlcz1idChidCh7fSxaZSkse30se2Zvcm1hdFllYXI6YSgpLmZ1bmN9KSxqdC5wcm9wVHlwZXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/RXQoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtTdChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6RXQoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9KHt9LERlKTt2YXIgUnQ9W1wiY2xhc3Nlc1wiLFwiZm9ybWF0WWVhclwiXTtmdW5jdGlvbiBQdChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gQXQoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/UHQoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtJdChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6UHQoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gSXQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFR0KCl7cmV0dXJuIFR0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sVHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBIdD1cInJlYWN0LWNhbGVuZGFyX19kZWNhZGUtdmlld19feWVhcnNfX3llYXJcIjtmdW5jdGlvbiBWdChlKXt2YXIgdD1lLmNsYXNzZXMsbj1lLmZvcm1hdFllYXIscj12b2lkIDA9PT1uP2RlOm4saT1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsUnQpLGE9aS5kYXRlLGw9aS5sb2NhbGU7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KG10LFR0KHt9LGkse2NsYXNzZXM6W10uY29uY2F0KHQsSHQpLG1heERhdGVUcmFuc2Zvcm06SCxtaW5EYXRlVHJhbnNmb3JtOkEsdmlldzpcImRlY2FkZVwifSkscihsLGEpKX1mdW5jdGlvbiBCdChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gRHQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFp0KCl7cmV0dXJuIFp0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sWnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uICR0KGUpe3ZhciB0PW0oUyhlLmFjdGl2ZVN0YXJ0RGF0ZSkpLG49dCs5O3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChsdCxadCh7fSxlLHtjbGFzc05hbWU6XCJyZWFjdC1jYWxlbmRhcl9fZGVjYWRlLXZpZXdfX3llYXJzXCIsZGF0ZVRyYW5zZm9ybTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgRGF0ZTtyZXR1cm4gdC5zZXRGdWxsWWVhcihlLDAsMSksdC5zZXRIb3VycygwLDAsMCwwKSx0fSxkYXRlVHlwZTpcInllYXJcIixlbmQ6bixzdGFydDp0LHRpbGU6VnR9KSl9ZnVuY3Rpb24gRnQoZSl7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX19kZWNhZGUtdmlld1wifSxvKCkuY3JlYXRlRWxlbWVudCgkdCxlKSl9VnQucHJvcFR5cGVzPUF0KEF0KHt9LFplKSx7fSx7Zm9ybWF0WWVhcjphKCkuZnVuY30pLCR0LnByb3BUeXBlcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9CdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe0R0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpCdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX0oe30sRGUpO3ZhciBOdD1bXCJjbGFzc2VzXCIsXCJmb3JtYXRNb250aFwiLFwiZm9ybWF0TW9udGhZZWFyXCJdO2Z1bmN0aW9uIFV0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBXdChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9VdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3p0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpVdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiB6dChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gR3QoKXtyZXR1cm4gR3Q9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxHdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIHF0PVwicmVhY3QtY2FsZW5kYXJfX3llYXItdmlld19fbW9udGhzX19tb250aFwiO2Z1bmN0aW9uIFl0KGUpe3ZhciB0PWUuY2xhc3NlcyxuPWUuZm9ybWF0TW9udGgscj12b2lkIDA9PT1uP3NlOm4saT1lLmZvcm1hdE1vbnRoWWVhcixhPXZvaWQgMD09PWk/Y2U6aSxsPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxOdCkscz1sLmRhdGUsYz1sLmxvY2FsZTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQobXQsR3Qoe30sbCx7Y2xhc3NlczpbXS5jb25jYXQodCxxdCksZm9ybWF0QWJicjphLG1heERhdGVUcmFuc2Zvcm06TixtaW5EYXRlVHJhbnNmb3JtOlosdmlldzpcInllYXJcIn0pLHIoYyxzKSl9ZnVuY3Rpb24gS3QoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFh0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP0t0KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7SnQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOkt0KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIEp0KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBRdCgpe3JldHVybiBRdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LFF0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBlbihlKXt2YXIgdD1tKGUuYWN0aXZlU3RhcnREYXRlKTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQobHQsUXQoe30sZSx7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX3llYXItdmlld19fbW9udGhzXCIsZGF0ZVRyYW5zZm9ybTpmdW5jdGlvbihlKXt2YXIgbj1uZXcgRGF0ZTtyZXR1cm4gbi5zZXRGdWxsWWVhcih0LGUsMSksbi5zZXRIb3VycygwLDAsMCwwKSxufSxkYXRlVHlwZTpcIm1vbnRoXCIsZW5kOjExLHN0YXJ0OjAsdGlsZTpZdH0pKX1mdW5jdGlvbiB0bihlKXtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX3llYXItdmlld1wifSxvKCkuY3JlYXRlRWxlbWVudChlbixlKSl9WXQucHJvcFR5cGVzPVd0KFd0KHt9LFplKSx7fSx7Zm9ybWF0TW9udGg6YSgpLmZ1bmMsZm9ybWF0TW9udGhZZWFyOmEoKS5mdW5jfSksZW4ucHJvcFR5cGVzPVh0KFh0KHt9LERlKSx7fSx7bG9jYWxlOmEoKS5zdHJpbmd9KTt2YXIgbm49W1wiZm9ybWF0RGF5XCIsXCJmb3JtYXRMb25nRGF0ZVwiLFwiY2FsZW5kYXJUeXBlXCIsXCJjbGFzc2VzXCIsXCJjdXJyZW50TW9udGhJbmRleFwiXTtmdW5jdGlvbiBybihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/cm4oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXthbihlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6cm4oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gYW4oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIGxuKCl7cmV0dXJuIGxuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBzbj1cInJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzX19kYXlcIjtmdW5jdGlvbiBjbihlKXt2YXIgdD1lLmZvcm1hdERheSxuPXZvaWQgMD09PXQ/YWU6dCxyPWUuZm9ybWF0TG9uZ0RhdGUsaT12b2lkIDA9PT1yP2xlOnIsYT1lLmNhbGVuZGFyVHlwZSxsPWUuY2xhc3NlcyxzPWUuY3VycmVudE1vbnRoSW5kZXgsYz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsbm4pLHU9Yy5kYXRlLGY9Yy5sb2NhbGU7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KG10LGxuKHt9LGMse2NsYXNzZXM6W10uY29uY2F0KGwsc24sU2UodSxhKT9cIlwiLmNvbmNhdChzbixcIi0td2Vla2VuZFwiKTpudWxsLHUuZ2V0TW9udGgoKSE9PXM/XCJcIi5jb25jYXQoc24sXCItLW5laWdoYm9yaW5nTW9udGhcIik6bnVsbCksZm9ybWF0QWJicjppLG1heERhdGVUcmFuc2Zvcm06WSxtaW5EYXRlVHJhbnNmb3JtOkcsdmlldzpcIm1vbnRoXCJ9KSxuKGYsdSkpfWNuLnByb3BUeXBlcz1vbihvbih7fSxaZSkse30se2N1cnJlbnRNb250aEluZGV4OmEoKS5udW1iZXIuaXNSZXF1aXJlZCxmb3JtYXREYXk6YSgpLmZ1bmMsZm9ybWF0TG9uZ0RhdGU6YSgpLmZ1bmN9KTt2YXIgdW49W1wic2hvd0ZpeGVkTnVtYmVyT2ZXZWVrc1wiLFwic2hvd05laWdoYm9yaW5nTW9udGhcIl07ZnVuY3Rpb24gZm4oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGRuKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBwbigpe3JldHVybiBwbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LHBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBobihlKXt2YXIgdD1lLmFjdGl2ZVN0YXJ0RGF0ZSxuPWUuY2FsZW5kYXJUeXBlLHI9ZS5zaG93Rml4ZWROdW1iZXJPZldlZWtzLGk9ZS5zaG93TmVpZ2hib3JpbmdNb250aCxhPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSx1biksbD1tKHQpLHM9eSh0KSxjPXJ8fGksdT1nZSh0LG4pLGY9Yz8wOnUsZD0xKyhjPy11OjApLHA9ZnVuY3Rpb24oKXtpZihyKXJldHVybiBkKzQyLTE7dmFyIGU9WCh0KTtpZihpKXt2YXIgbz1uZXcgRGF0ZTtyZXR1cm4gby5zZXRGdWxsWWVhcihsLHMsZSksby5zZXRIb3VycygwLDAsMCwwKSxlKyg3LWdlKG8sbiktMSl9cmV0dXJuIGV9KCk7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KGx0LHBuKHt9LGEse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzXCIsY291bnQ6NyxjdXJyZW50TW9udGhJbmRleDpzLGRhdGVUcmFuc2Zvcm06ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IERhdGU7cmV0dXJuIHQuc2V0RnVsbFllYXIobCxzLGUpLHQuc2V0SG91cnMoMCwwLDAsMCksdH0sZGF0ZVR5cGU6XCJkYXlcIixlbmQ6cCxvZmZzZXQ6ZixzdGFydDpkLHRpbGU6Y259KSl9aG4ucHJvcFR5cGVzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2ZuKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZG4oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmZuKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfSh7Y2FsZW5kYXJUeXBlOlJlLmlzUmVxdWlyZWQsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczphKCkuYm9vbCxzaG93TmVpZ2hib3JpbmdNb250aDphKCkuYm9vbH0sRGUpO3ZhciB2bj1cInJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X193ZWVrZGF5c1wiLGduPVwiXCIuY29uY2F0KHZuLFwiX193ZWVrZGF5XCIpO2Z1bmN0aW9uIENuKGUpe2Zvcih2YXIgdD1lLmNhbGVuZGFyVHlwZSxuPWUuZm9ybWF0U2hvcnRXZWVrZGF5LHI9dm9pZCAwPT09bj91ZTpuLGk9ZS5mb3JtYXRXZWVrZGF5LGE9dm9pZCAwPT09aT9mZTppLGw9ZS5sb2NhbGUsYz1lLm9uTW91c2VMZWF2ZSx1PVoobmV3IERhdGUpLGY9bSh1KSxkPXkodSkscD1bXSxoPTE7aDw9NztoKz0xKXt2YXIgdj1uZXcgRGF0ZShmLGQsaC1nZSh1LHQpKSxnPWEobCx2KTtwLnB1c2gobygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7a2V5OmgsY2xhc3NOYW1lOnMoZ24sU2Uodix0KSYmXCJcIi5jb25jYXQoZ24sXCItLXdlZWtlbmRcIikpfSxvKCkuY3JlYXRlRWxlbWVudChcImFiYnJcIix7XCJhcmlhLWxhYmVsXCI6Zyx0aXRsZTpnfSxyKGwsdikucmVwbGFjZShcIi5cIixcIlwiKSkpKX1yZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoWWUse2NsYXNzTmFtZTp2bixjb3VudDo3LG9uRm9jdXM6Yyxvbk1vdXNlT3ZlcjpjfSxwKX1Dbi5wcm9wVHlwZXM9e2NhbGVuZGFyVHlwZTpSZS5pc1JlcXVpcmVkLGZvcm1hdFNob3J0V2Vla2RheTphKCkuZnVuYyxmb3JtYXRXZWVrZGF5OmEoKS5mdW5jLGxvY2FsZTphKCkuc3RyaW5nLG9uTW91c2VMZWF2ZTphKCkuZnVuY307dmFyIG1uPVtcImRhdGVcIixcIm9uQ2xpY2tXZWVrTnVtYmVyXCIsXCJ3ZWVrTnVtYmVyXCJdO2Z1bmN0aW9uIHluKCl7cmV0dXJuIHluPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0seW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHduKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBibihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIHhuPVwicmVhY3QtY2FsZW5kYXJfX3RpbGVcIjtmdW5jdGlvbiBfbihlKXt2YXIgdD1lLmRhdGUsbj1lLm9uQ2xpY2tXZWVrTnVtYmVyLHI9ZS53ZWVrTnVtYmVyLGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLG1uKSxhPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3duKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7Ym4oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnduKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfSh7Y2xhc3NOYW1lOnhufSxpKSxsPW8oKS5jcmVhdGVFbGVtZW50KFwic3BhblwiLG51bGwscik7cmV0dXJuIG4/bygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix5bih7fSxhLHtvbkNsaWNrOmZ1bmN0aW9uKGUpe3JldHVybiBuKHIsdCxlKX0sdHlwZTpcImJ1dHRvblwifSksbCk6bygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIixhLGwpfWZ1bmN0aW9uIExuKGUpe3ZhciB0PWUuYWN0aXZlU3RhcnREYXRlLG49ZS5jYWxlbmRhclR5cGUscj1lLm9uQ2xpY2tXZWVrTnVtYmVyLGk9ZS5vbk1vdXNlTGVhdmUsYT1lLnNob3dGaXhlZE51bWJlck9mV2Vla3MsbD1mdW5jdGlvbigpe2lmKGEpcmV0dXJuIDY7dmFyIGU9WCh0KS0oNy1nZSh0LG4pKTtyZXR1cm4gMStNYXRoLmNlaWwoZS83KX0oKSxzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPW0odCkscj15KHQpLG89dyh0KSxpPVtdLGE9MDthPGw7YSs9MSlpLnB1c2goQ2UobmV3IERhdGUoZSxyLG8rNyphKSxuKSk7cmV0dXJuIGl9KCksYz1zLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0LG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRlLklTT184NjAxLHI9bj09PXRlLlVTP3RlLlVTOnRlLklTT184NjAxLG89Q2UoZSxuKSxpPW0oZSkrMTtkb3t0PUNlKG5ldyBEYXRlKGksMCxyPT09dGUuSVNPXzg2MDE/NDoxKSxuKSxpLT0xfXdoaWxlKGU8dCk7cmV0dXJuIE1hdGgucm91bmQoKG8tdCkvNjA0OGU1KSsxfShlLG4pfSkpO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChZZSx7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtOdW1iZXJzXCIsY291bnQ6bCxkaXJlY3Rpb246XCJjb2x1bW5cIixvbkZvY3VzOmksb25Nb3VzZU92ZXI6aSxzdHlsZTp7ZmxleEJhc2lzOlwiY2FsYygxMDAlICogKDEgLyA4KVwiLGZsZXhTaHJpbms6MH19LGMubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChfbix7a2V5OmUsZGF0ZTpzW3RdLG9uQ2xpY2tXZWVrTnVtYmVyOnIsd2Vla051bWJlcjplfSl9KSkpfV9uLnByb3BUeXBlcz17ZGF0ZTphKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLG9uQ2xpY2tXZWVrTnVtYmVyOmEoKS5mdW5jLHdlZWtOdW1iZXI6YSgpLm5vZGUuaXNSZXF1aXJlZH0sTG4ucHJvcFR5cGVzPXthY3RpdmVTdGFydERhdGU6YSgpLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxjYWxlbmRhclR5cGU6UmUuaXNSZXF1aXJlZCxvbkNsaWNrV2Vla051bWJlcjphKCkuZnVuYyxvbk1vdXNlTGVhdmU6YSgpLmZ1bmMsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczphKCkuYm9vbH07dmFyIE9uPVtcImNhbGVuZGFyVHlwZVwiLFwiZm9ybWF0U2hvcnRXZWVrZGF5XCIsXCJmb3JtYXRXZWVrZGF5XCIsXCJvbkNsaWNrV2Vla051bWJlclwiLFwic2hvd1dlZWtOdW1iZXJzXCJdO2Z1bmN0aW9uIEVuKCl7cmV0dXJuIEVuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sRW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFNuKGUpe3ZhciB0PWUuYWN0aXZlU3RhcnREYXRlLG49ZS5sb2NhbGUscj1lLm9uTW91c2VMZWF2ZSxpPWUuc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrcyxhPWUuY2FsZW5kYXJUeXBlLGw9dm9pZCAwPT09YT9mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmtleXMobmUpLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiBuZVt0XS5pbmNsdWRlcyhlKX0pKXx8dGUuSVNPXzg2MDF9KG4pOmEsYz1lLmZvcm1hdFNob3J0V2Vla2RheSx1PWUuZm9ybWF0V2Vla2RheSxmPWUub25DbGlja1dlZWtOdW1iZXIsZD1lLnNob3dXZWVrTnVtYmVycyxwPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxPbiksaD1cInJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3XCI7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpzKGgsZD9cIlwiLmNvbmNhdChoLFwiLS13ZWVrTnVtYmVyc1wiKTpcIlwiKX0sbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3R5bGU6e2Rpc3BsYXk6XCJmbGV4XCIsYWxpZ25JdGVtczpcImZsZXgtZW5kXCJ9fSxkP28oKS5jcmVhdGVFbGVtZW50KExuLHthY3RpdmVTdGFydERhdGU6dCxjYWxlbmRhclR5cGU6bCxvbkNsaWNrV2Vla051bWJlcjpmLG9uTW91c2VMZWF2ZTpyLHNob3dGaXhlZE51bWJlck9mV2Vla3M6aX0pOm51bGwsbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3R5bGU6e2ZsZXhHcm93OjEsd2lkdGg6XCIxMDAlXCJ9fSxvKCkuY3JlYXRlRWxlbWVudChDbix7Y2FsZW5kYXJUeXBlOmwsZm9ybWF0U2hvcnRXZWVrZGF5OmMsZm9ybWF0V2Vla2RheTp1LGxvY2FsZTpuLG9uTW91c2VMZWF2ZTpyfSksbygpLmNyZWF0ZUVsZW1lbnQoaG4sRW4oe2NhbGVuZGFyVHlwZTpsfSxwKSkpKSl9U24ucHJvcFR5cGVzPXthY3RpdmVTdGFydERhdGU6YSgpLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxjYWxlbmRhclR5cGU6UmUsZm9ybWF0U2hvcnRXZWVrZGF5OmEoKS5mdW5jLGZvcm1hdFdlZWtkYXk6YSgpLmZ1bmMsbG9jYWxlOmEoKS5zdHJpbmcsb25DbGlja1dlZWtOdW1iZXI6YSgpLmZ1bmMsb25Nb3VzZUxlYXZlOmEoKS5mdW5jLHNob3dGaXhlZE51bWJlck9mV2Vla3M6YSgpLmJvb2wsc2hvd1dlZWtOdW1iZXJzOmEoKS5ib29sfTt2YXIgTW49W1wiYWN0aXZlU3RhcnREYXRlXCIsXCJkZWZhdWx0QWN0aXZlU3RhcnREYXRlXCIsXCJkZWZhdWx0VmFsdWVcIixcImRlZmF1bHRWaWV3XCIsXCJtYXhEZXRhaWxcIixcIm1pbkRldGFpbFwiLFwidmFsdWVcIixcInZpZXdcIl07ZnVuY3Rpb24gam4oKXtyZXR1cm4gam49T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxqbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24ga24oZSl7cmV0dXJuIGtuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LGtuKGUpfWZ1bmN0aW9uIFJuKGUsdCl7cmV0dXJuIFJuPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sUm4oZSx0KX1mdW5jdGlvbiBQbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gZX1mdW5jdGlvbiBBbihlKXtyZXR1cm4gQW49T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LEFuKGUpfWZ1bmN0aW9uIEluKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBUbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9JbihPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe0huKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpJbihPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBIbihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gVm4oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgQm49bmV3IERhdGU7Qm4uc2V0RnVsbFllYXIoMSwwLDEpLEJuLnNldEhvdXJzKDAsMCwwLDApO3ZhciBEbj1uZXcgRGF0ZSg4NjRlMTMpLFpuPVwicmVhY3QtY2FsZW5kYXJcIiwkbj1bXCJjZW50dXJ5XCIsXCJkZWNhZGVcIixcInllYXJcIixcIm1vbnRoXCJdLEZuPVtdLmNvbmNhdChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gVm4oZSl9KGUpfHxmdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbXCJAQGl0ZXJhdG9yXCJdKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gVm4oZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uP0FycmF5LmZyb20oZSk6XCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP1ZuKGUsdCk6dm9pZCAwfX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9KCRuLnNsaWNlKDEpKSxbXCJkYXlcIl0pO2Z1bmN0aW9uIE5uKGUsdCl7cmV0dXJuICRuLnNsaWNlKCRuLmluZGV4T2YoZSksJG4uaW5kZXhPZih0KSsxKX1mdW5jdGlvbiBVbihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4tMSE9PU5uKHQsbikuaW5kZXhPZihlKX0oZSx0LG4pP2U6bn1mdW5jdGlvbiBXbihlKXtyZXR1cm4gRm5bJG4uaW5kZXhPZihlKV19ZnVuY3Rpb24gem4oZSx0KXt2YXIgbj1lLnZhbHVlLHI9ZS5taW5EYXRlLG89ZS5tYXhEYXRlLGk9ZS5tYXhEZXRhaWwsYT1mdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybiBudWxsO3ZhciBuPUFycmF5LmlzQXJyYXkoZSkmJjI9PT1lLmxlbmd0aD9lW3RdOmU7aWYoIW4pcmV0dXJuIG51bGw7dmFyIHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEYXRlP2U6bmV3IERhdGUoZSl9KG4pO2lmKGlzTmFOKHIuZ2V0VGltZSgpKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGRhdGU6IFwiLmNvbmNhdChlKSk7cmV0dXJuIHJ9KG4sdCk7aWYoIWEpcmV0dXJuIG51bGw7dmFyIGw9V24oaSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCYmdD5lP3Q6biYmbjxlP246ZX0oW21lLHhlXVt0XShsLGEpLHIsbyl9dmFyIEduPWZ1bmN0aW9uKGUpe3JldHVybiB6bihlLDApfSxxbj1mdW5jdGlvbihlKXtyZXR1cm4gem4oZSwxKX0sWW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS52YWx1ZTtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90OltHbixxbl0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdChlKX0pKX07ZnVuY3Rpb24gS24oZSl7dmFyIHQ9ZS5tYXhEYXRlLG49ZS5tYXhEZXRhaWwscj1lLm1pbkRhdGUsbz1lLm1pbkRldGFpbCxpPWUudmFsdWU7cmV0dXJuIG1lKFVuKGUudmlldyxvLG4pLEduKHt2YWx1ZTppLG1pbkRhdGU6cixtYXhEYXRlOnQsbWF4RGV0YWlsOm59KXx8bmV3IERhdGUpfXZhciBYbj1mdW5jdGlvbihlKXtyZXR1cm4gZSYmMT09PVtdLmNvbmNhdChlKS5sZW5ndGh9LEpuPWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSx0JiZSbihlLHQpfShsLGUpO3ZhciB0LG4scixpLGE9KHI9bCxpPWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZnVuY3Rpb24oKXt2YXIgZSx0PUFuKHIpO2lmKGkpe3ZhciBuPUFuKHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QodCxhcmd1bWVudHMsbil9ZWxzZSBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJihcIm9iamVjdFwiPT09a24odCl8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBQbihlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIGwoKXt2YXIgZTshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGwpO2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09YXJndW1lbnRzW3JdO3JldHVybiBIbihQbihlPWEuY2FsbC5hcHBseShhLFt0aGlzXS5jb25jYXQobikpKSxcInN0YXRlXCIse2FjdGl2ZVN0YXJ0RGF0ZTplLnByb3BzLmRlZmF1bHRBY3RpdmVTdGFydERhdGUsdmFsdWU6ZS5wcm9wcy5kZWZhdWx0VmFsdWUsdmlldzplLnByb3BzLmRlZmF1bHRWaWV3fSksSG4oUG4oZSksXCJzZXRTdGF0ZUFuZENhbGxDYWxsYmFja3NcIiwoZnVuY3Rpb24odCxuLHIpe3ZhciBvPVBuKGUpLGk9by5hY3RpdmVTdGFydERhdGUsYT1vLnZpZXcsbD1lLnByb3BzLHM9bC5hbGxvd1BhcnRpYWxSYW5nZSxjPWwub25BY3RpdmVTdGFydERhdGVDaGFuZ2UsdT1sLm9uQ2hhbmdlLGY9bC5vblZpZXdDaGFuZ2UsZD1sLnNlbGVjdFJhbmdlLHA9e2FjdGl2ZVN0YXJ0RGF0ZTppLHZpZXc6YX07ZS5zZXRTdGF0ZSh0LChmdW5jdGlvbigpe3ZhciBvPXthY3Rpb246dC5hY3Rpb24sYWN0aXZlU3RhcnREYXRlOnQuYWN0aXZlU3RhcnREYXRlfHxlLmFjdGl2ZVN0YXJ0RGF0ZSx2YWx1ZTp0LnZhbHVlfHxlLnZhbHVlLHZpZXc6dC52aWV3fHxlLnZpZXd9O2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUgaW4gdCYmKGtuKHRbZV0pIT09a24ocFtlXSl8fCh0W2VdaW5zdGFuY2VvZiBEYXRlP3RbZV0uZ2V0VGltZSgpIT09cFtlXS5nZXRUaW1lKCk6dFtlXSE9PXBbZV0pKX1pKFwiYWN0aXZlU3RhcnREYXRlXCIpJiZjJiZjKG8pLGkoXCJ2aWV3XCIpJiZmJiZmKG8pLGkoXCJ2YWx1ZVwiKSYmdSYmKGQmJlhuKHQudmFsdWUpP3MmJnUoW3QudmFsdWVdLG4pOnUodC52YWx1ZSxuKSksciYmcihvKX0pKX0pKSxIbihQbihlKSxcInNldEFjdGl2ZVN0YXJ0RGF0ZVwiLChmdW5jdGlvbih0LG4pe2Uuc2V0U3RhdGVBbmRDYWxsQ2FsbGJhY2tzKHthY3Rpb246bixhY3RpdmVTdGFydERhdGU6dH0pfSkpLEhuKFBuKGUpLFwiZHJpbGxEb3duXCIsKGZ1bmN0aW9uKHQsbil7aWYoZS5kcmlsbERvd25BdmFpbGFibGUpe2Uub25DbGlja1RpbGUodCxuKTt2YXIgcj1QbihlKSxvPXIudmlldyxpPXIudmlld3MsYT1lLnByb3BzLm9uRHJpbGxEb3duLGw9aVtpLmluZGV4T2YobykrMV07ZS5zZXRTdGF0ZUFuZENhbGxDYWxsYmFja3Moe2FjdGlvbjpcImRyaWxsRG93blwiLGFjdGl2ZVN0YXJ0RGF0ZTp0LHZpZXc6bH0sdm9pZCAwLGEpfX0pKSxIbihQbihlKSxcImRyaWxsVXBcIiwoZnVuY3Rpb24oKXtpZihlLmRyaWxsVXBBdmFpbGFibGUpe3ZhciB0PVBuKGUpLG49dC5hY3RpdmVTdGFydERhdGUscj10LnZpZXcsbz10LnZpZXdzLGk9ZS5wcm9wcy5vbkRyaWxsVXAsYT1vW28uaW5kZXhPZihyKS0xXSxsPW1lKGEsbik7ZS5zZXRTdGF0ZUFuZENhbGxDYWxsYmFja3Moe2FjdGlvbjpcImRyaWxsVXBcIixhY3RpdmVTdGFydERhdGU6bCx2aWV3OmF9LHZvaWQgMCxpKX19KSksSG4oUG4oZSksXCJvbkNoYW5nZVwiLChmdW5jdGlvbih0LG4pe3ZhciByPVBuKGUpLnZhbHVlLG89ZS5wcm9wcyxpPW8uZ29Ub1JhbmdlU3RhcnRPblNlbGVjdCxhPW8uc2VsZWN0UmFuZ2U7ZS5vbkNsaWNrVGlsZSh0LG4pO3ZhciBsLHMsYyx1PWEmJiFYbihyKTtpZihhKXt2YXIgZj1QbihlKS52YWx1ZVR5cGU7bD11P21lKGYsdCk6W21lKHM9ZiwoYz1bcix0XS5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSkpWzBdKSx4ZShzLGNbMV0pXX1lbHNlIGw9ZS5nZXRQcm9jZXNzZWRWYWx1ZSh0KTt2YXIgZD0hYXx8dXx8aT9LbihUbihUbih7fSxlLnByb3BzKSx7fSx7dmFsdWU6bH0pKTpudWxsO24ucGVyc2lzdCgpLGUuc2V0U3RhdGVBbmRDYWxsQ2FsbGJhY2tzKHthY3Rpb246XCJvbkNoYW5nZVwiLGFjdGl2ZVN0YXJ0RGF0ZTpkLHZhbHVlOmx9LG4pfSkpLEhuKFBuKGUpLFwib25DbGlja1RpbGVcIiwoZnVuY3Rpb24odCxuKXt2YXIgcj1QbihlKS52aWV3LG89ZS5wcm9wcyxpPW8ub25DbGlja0RheSxhPW8ub25DbGlja0RlY2FkZSxsPW8ub25DbGlja01vbnRoLHM9by5vbkNsaWNrWWVhcixjPWZ1bmN0aW9uKCl7c3dpdGNoKHIpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4gYTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gcztjYXNlXCJ5ZWFyXCI6cmV0dXJuIGw7Y2FzZVwibW9udGhcIjpyZXR1cm4gaTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdmlldzogXCIuY29uY2F0KHIsXCIuXCIpKX19KCk7YyYmYyh0LG4pfSkpLEhuKFBuKGUpLFwib25Nb3VzZU92ZXJcIiwoZnVuY3Rpb24odCl7ZS5zZXRTdGF0ZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaG92ZXImJmUuaG92ZXIuZ2V0VGltZSgpPT09dC5nZXRUaW1lKCk/bnVsbDp7aG92ZXI6dH19KSl9KSksSG4oUG4oZSksXCJvbk1vdXNlTGVhdmVcIiwoZnVuY3Rpb24oKXtlLnNldFN0YXRlKHtob3ZlcjpudWxsfSl9KSksZX1yZXR1cm4gdD1sLG49W3trZXk6XCJhY3RpdmVTdGFydERhdGVcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixvLGksYSxsLHMsYyx1LGYsZD10aGlzLnByb3BzLmFjdGl2ZVN0YXJ0RGF0ZSxwPXRoaXMuc3RhdGUuYWN0aXZlU3RhcnREYXRlO3JldHVybiBkfHxwfHwodD0oZT10aGlzLnByb3BzKS5hY3RpdmVTdGFydERhdGUsbj1lLmRlZmF1bHRBY3RpdmVTdGFydERhdGUscj1lLmRlZmF1bHRWYWx1ZSxvPWUuZGVmYXVsdFZpZXcsaT1lLm1heERldGFpbCxhPWUubWluRGV0YWlsLGw9ZS52YWx1ZSxzPWUudmlldyxjPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxNbiksdT1VbihzLGEsaSksKGY9dHx8bik/bWUodSxmKTpLbihUbih7bWF4RGV0YWlsOmksbWluRGV0YWlsOmEsdmFsdWU6bHx8cix2aWV3OnN8fG99LGMpKSl9fSx7a2V5OlwidmFsdWVcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5zZWxlY3RSYW5nZSxuPWUudmFsdWUscj10aGlzLnN0YXRlLnZhbHVlO3JldHVybiB0JiZYbihyKT9yOnZvaWQgMCE9PW4/bjpyfX0se2tleTpcInZhbHVlVHlwZVwiLGdldDpmdW5jdGlvbigpe3JldHVybiBXbih0aGlzLnByb3BzLm1heERldGFpbCl9fSx7a2V5Olwidmlld1wiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLm1pbkRldGFpbCxuPWUubWF4RGV0YWlsLHI9ZS52aWV3LG89dGhpcy5zdGF0ZS52aWV3O3JldHVybiBVbihyfHxvLHQsbil9fSx7a2V5Olwidmlld3NcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzO3JldHVybiBObihlLm1pbkRldGFpbCxlLm1heERldGFpbCl9fSx7a2V5OlwiaG92ZXJcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLnNlbGVjdFJhbmdlLHQ9dGhpcy5zdGF0ZS5ob3ZlcjtyZXR1cm4gZT90Om51bGx9fSx7a2V5OlwiZHJpbGxEb3duQXZhaWxhYmxlXCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy52aWV3LHQ9dGhpcy52aWV3cztyZXR1cm4gdC5pbmRleE9mKGUpPHQubGVuZ3RoLTF9fSx7a2V5OlwiZHJpbGxVcEF2YWlsYWJsZVwiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMudmlldztyZXR1cm4gdGhpcy52aWV3cy5pbmRleE9mKGUpPjB9fSx7a2V5OlwiZ2V0UHJvY2Vzc2VkVmFsdWVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLG49dC5taW5EYXRlLHI9dC5tYXhEYXRlLG89dC5tYXhEZXRhaWwsaT10LnJldHVyblZhbHVlO3JldHVybiBmdW5jdGlvbigpe3N3aXRjaChpKXtjYXNlXCJzdGFydFwiOnJldHVybiBHbjtjYXNlXCJlbmRcIjpyZXR1cm4gcW47Y2FzZVwicmFuZ2VcIjpyZXR1cm4gWW47ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJldHVyblZhbHVlLlwiKX19KCkoe3ZhbHVlOmUsbWluRGF0ZTpuLG1heERhdGU6cixtYXhEZXRhaWw6b30pfX0se2tleTpcInJlbmRlckNvbnRlbnRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmFjdGl2ZVN0YXJ0RGF0ZSxuPXRoaXMub25Nb3VzZU92ZXIscj10aGlzLnZhbHVlVHlwZSxpPXRoaXMudmFsdWUsYT10aGlzLnZpZXcsbD10aGlzLnByb3BzLHM9bC5jYWxlbmRhclR5cGUsYz1sLmxvY2FsZSx1PWwubWF4RGF0ZSxmPWwubWluRGF0ZSxkPWwuc2VsZWN0UmFuZ2UscD1sLnRpbGVDbGFzc05hbWUsaD1sLnRpbGVDb250ZW50LHY9bC50aWxlRGlzYWJsZWQsZz10aGlzLmhvdmVyLEM9e2FjdGl2ZVN0YXJ0RGF0ZTplP3llKGEsdCk6bWUoYSx0KSxob3ZlcjpnLGxvY2FsZTpjLG1heERhdGU6dSxtaW5EYXRlOmYsb25DbGljazp0aGlzLmRyaWxsRG93bkF2YWlsYWJsZT90aGlzLmRyaWxsRG93bjp0aGlzLm9uQ2hhbmdlLG9uTW91c2VPdmVyOmQ/bjpudWxsLHRpbGVDbGFzc05hbWU6cCx0aWxlQ29udGVudDpoLHRpbGVEaXNhYmxlZDp2LHZhbHVlOmksdmFsdWVUeXBlOnJ9O3N3aXRjaChhKXtjYXNlXCJjZW50dXJ5XCI6dmFyIG09dGhpcy5wcm9wcy5mb3JtYXRZZWFyO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChrdCxqbih7Zm9ybWF0WWVhcjptfSxDKSk7Y2FzZVwiZGVjYWRlXCI6dmFyIHk9dGhpcy5wcm9wcy5mb3JtYXRZZWFyO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChGdCxqbih7Zm9ybWF0WWVhcjp5fSxDKSk7Y2FzZVwieWVhclwiOnZhciB3PXRoaXMucHJvcHMsYj13LmZvcm1hdE1vbnRoLHg9dy5mb3JtYXRNb250aFllYXI7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KHRuLGpuKHtmb3JtYXRNb250aDpiLGZvcm1hdE1vbnRoWWVhcjp4fSxDKSk7Y2FzZVwibW9udGhcIjp2YXIgXz10aGlzLnByb3BzLEw9Xy5mb3JtYXREYXksTz1fLmZvcm1hdExvbmdEYXRlLEU9Xy5mb3JtYXRTaG9ydFdlZWtkYXksUz1fLmZvcm1hdFdlZWtkYXksTT1fLm9uQ2xpY2tXZWVrTnVtYmVyLGo9Xy5zaG93RG91YmxlVmlldyxrPV8uc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrcyxSPV8uc2hvd05laWdoYm9yaW5nTW9udGgsUD1fLnNob3dXZWVrTnVtYmVycyxBPXRoaXMub25Nb3VzZUxlYXZlO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChTbixqbih7Y2FsZW5kYXJUeXBlOnMsZm9ybWF0RGF5OkwsZm9ybWF0TG9uZ0RhdGU6Tyxmb3JtYXRTaG9ydFdlZWtkYXk6RSxmb3JtYXRXZWVrZGF5OlMsb25DbGlja1dlZWtOdW1iZXI6TSxvbk1vdXNlTGVhdmU6ZD9BOm51bGwsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczp2b2lkIDAhPT1rP2s6aixzaG93TmVpZ2hib3JpbmdNb250aDpSLHNob3dXZWVrTnVtYmVyczpQfSxDKSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHZpZXc6IFwiLmNvbmNhdChhLFwiLlwiKSl9fX0se2tleTpcInJlbmRlck5hdmlnYXRpb25cIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLnByb3BzLnNob3dOYXZpZ2F0aW9uKXJldHVybiBudWxsO3ZhciBlPXRoaXMuYWN0aXZlU3RhcnREYXRlLHQ9dGhpcy52aWV3LG49dGhpcy52aWV3cyxyPXRoaXMucHJvcHMsaT1yLmZvcm1hdE1vbnRoWWVhcixhPXIuZm9ybWF0WWVhcixsPXIubG9jYWxlLHM9ci5tYXhEYXRlLGM9ci5taW5EYXRlLHU9ci5uYXZpZ2F0aW9uQXJpYUxhYmVsLGY9ci5uYXZpZ2F0aW9uQXJpYUxpdmUsZD1yLm5hdmlnYXRpb25MYWJlbCxwPXIubmV4dDJBcmlhTGFiZWwsaD1yLm5leHQyTGFiZWwsdj1yLm5leHRBcmlhTGFiZWwsZz1yLm5leHRMYWJlbCxDPXIucHJldjJBcmlhTGFiZWwsbT1yLnByZXYyTGFiZWwseT1yLnByZXZBcmlhTGFiZWwsdz1yLnByZXZMYWJlbCxiPXIuc2hvd0RvdWJsZVZpZXc7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KEZlLHthY3RpdmVTdGFydERhdGU6ZSxkcmlsbFVwOnRoaXMuZHJpbGxVcCxmb3JtYXRNb250aFllYXI6aSxmb3JtYXRZZWFyOmEsbG9jYWxlOmwsbWF4RGF0ZTpzLG1pbkRhdGU6YyxuYXZpZ2F0aW9uQXJpYUxhYmVsOnUsbmF2aWdhdGlvbkFyaWFMaXZlOmYsbmF2aWdhdGlvbkxhYmVsOmQsbmV4dDJBcmlhTGFiZWw6cCxuZXh0MkxhYmVsOmgsbmV4dEFyaWFMYWJlbDp2LG5leHRMYWJlbDpnLHByZXYyQXJpYUxhYmVsOkMscHJldjJMYWJlbDptLHByZXZBcmlhTGFiZWw6eSxwcmV2TGFiZWw6dyxzZXRBY3RpdmVTdGFydERhdGU6dGhpcy5zZXRBY3RpdmVTdGFydERhdGUsc2hvd0RvdWJsZVZpZXc6Yix2aWV3OnQsdmlld3M6bn0pfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuY2xhc3NOYW1lLG49ZS5pbnB1dFJlZixyPWUuc2VsZWN0UmFuZ2UsaT1lLnNob3dEb3VibGVWaWV3LGE9dGhpcy5vbk1vdXNlTGVhdmUsbD10aGlzLnZhbHVlLGM9W10uY29uY2F0KGwpO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6cyhabixyJiYxPT09Yy5sZW5ndGgmJlwiXCIuY29uY2F0KFpuLFwiLS1zZWxlY3RSYW5nZVwiKSxpJiZcIlwiLmNvbmNhdChabixcIi0tZG91YmxlVmlld1wiKSx0KSxyZWY6bn0sdGhpcy5yZW5kZXJOYXZpZ2F0aW9uKCksbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOlwiXCIuY29uY2F0KFpuLFwiX192aWV3Q29udGFpbmVyXCIpLG9uQmx1cjpyP2E6bnVsbCxvbk1vdXNlTGVhdmU6cj9hOm51bGx9LHRoaXMucmVuZGVyQ29udGVudCgpLGkmJnRoaXMucmVuZGVyQ29udGVudCghMCkpKX19XSxuJiZmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19KHQucHJvdG90eXBlLG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksbH0oci5Db21wb25lbnQpO0puLmRlZmF1bHRQcm9wcz17Z29Ub1JhbmdlU3RhcnRPblNlbGVjdDohMCxtYXhEYXRlOkRuLG1heERldGFpbDpcIm1vbnRoXCIsbWluRGF0ZTpCbixtaW5EZXRhaWw6XCJjZW50dXJ5XCIscmV0dXJuVmFsdWU6XCJzdGFydFwiLHNob3dOYXZpZ2F0aW9uOiEwLHNob3dOZWlnaGJvcmluZ01vbnRoOiEwfTt2YXIgUW49YSgpLmluc3RhbmNlT2YoRGF0ZSksZXI9YSgpLm9uZU9mVHlwZShbYSgpLnN0cmluZyxIZV0pO0puLnByb3BUeXBlcz17YWN0aXZlU3RhcnREYXRlOlFuLGFsbG93UGFydGlhbFJhbmdlOmEoKS5ib29sLGNhbGVuZGFyVHlwZTpSZSxjbGFzc05hbWU6UGUsZGVmYXVsdEFjdGl2ZVN0YXJ0RGF0ZTpRbixkZWZhdWx0VmFsdWU6ZXIsZGVmYXVsdFZpZXc6QmUsZm9ybWF0RGF5OmEoKS5mdW5jLGZvcm1hdExvbmdEYXRlOmEoKS5mdW5jLGZvcm1hdE1vbnRoOmEoKS5mdW5jLGZvcm1hdE1vbnRoWWVhcjphKCkuZnVuYyxmb3JtYXRTaG9ydFdlZWtkYXk6YSgpLmZ1bmMsZm9ybWF0V2Vla2RheTphKCkuZnVuYyxmb3JtYXRZZWFyOmEoKS5mdW5jLGdvVG9SYW5nZVN0YXJ0T25TZWxlY3Q6YSgpLmJvb2wsaW5wdXRSZWY6VGUsbG9jYWxlOmEoKS5zdHJpbmcsbWF4RGF0ZTpJZSxtYXhEZXRhaWw6YSgpLm9uZU9mKCRuKSxtaW5EYXRlOkFlLG1pbkRldGFpbDphKCkub25lT2YoJG4pLG5hdmlnYXRpb25BcmlhTGFiZWw6YSgpLnN0cmluZyxuYXZpZ2F0aW9uQXJpYUxpdmU6YSgpLm9uZU9mKFtcIm9mZlwiLFwicG9saXRlXCIsXCJhc3NlcnRpdmVcIl0pLG5hdmlnYXRpb25MYWJlbDphKCkuZnVuYyxuZXh0MkFyaWFMYWJlbDphKCkuc3RyaW5nLG5leHQyTGFiZWw6YSgpLm5vZGUsbmV4dEFyaWFMYWJlbDphKCkuc3RyaW5nLG5leHRMYWJlbDphKCkubm9kZSxvbkFjdGl2ZVN0YXJ0RGF0ZUNoYW5nZTphKCkuZnVuYyxvbkNoYW5nZTphKCkuZnVuYyxvbkNsaWNrRGF5OmEoKS5mdW5jLG9uQ2xpY2tEZWNhZGU6YSgpLmZ1bmMsb25DbGlja01vbnRoOmEoKS5mdW5jLG9uQ2xpY2tXZWVrTnVtYmVyOmEoKS5mdW5jLG9uQ2xpY2tZZWFyOmEoKS5mdW5jLG9uRHJpbGxEb3duOmEoKS5mdW5jLG9uRHJpbGxVcDphKCkuZnVuYyxvblZpZXdDaGFuZ2U6YSgpLmZ1bmMscHJldjJBcmlhTGFiZWw6YSgpLnN0cmluZyxwcmV2MkxhYmVsOmEoKS5ub2RlLHByZXZBcmlhTGFiZWw6YSgpLnN0cmluZyxwcmV2TGFiZWw6YSgpLm5vZGUscmV0dXJuVmFsdWU6YSgpLm9uZU9mKFtcInN0YXJ0XCIsXCJlbmRcIixcInJhbmdlXCJdKSxzZWxlY3RSYW5nZTphKCkuYm9vbCxzaG93RG91YmxlVmlldzphKCkuYm9vbCxzaG93Rml4ZWROdW1iZXJPZldlZWtzOmEoKS5ib29sLHNob3dOYXZpZ2F0aW9uOmEoKS5ib29sLHNob3dOZWlnaGJvcmluZ01vbnRoOmEoKS5ib29sLHNob3dXZWVrTnVtYmVyczphKCkuYm9vbCx0aWxlQ2xhc3NOYW1lOmEoKS5vbmVPZlR5cGUoW2EoKS5mdW5jLFBlXSksdGlsZUNvbnRlbnQ6YSgpLm9uZU9mVHlwZShbYSgpLmZ1bmMsYSgpLm5vZGVdKSx0aWxlRGlzYWJsZWQ6YSgpLmZ1bmMsdmFsdWU6ZXIsdmlldzpCZX07Y29uc3QgdHI9Sm59LDUyNTE6KGUsdCxuKT0+e24oNzQxOCk7dmFyIHI9big2Njg5KSxvPTYwMTAzO2lmKHQuRnJhZ21lbnQ9NjAxMDcsXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yKXt2YXIgaT1TeW1ib2wuZm9yO289aShcInJlYWN0LmVsZW1lbnRcIiksdC5GcmFnbWVudD1pKFwicmVhY3QuZnJhZ21lbnRcIil9dmFyIGE9ci5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixsPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscz17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIGMoZSx0LG4pe3ZhciByLGk9e30sYz1udWxsLHU9bnVsbDtmb3IociBpbiB2b2lkIDAhPT1uJiYoYz1cIlwiK24pLHZvaWQgMCE9PXQua2V5JiYoYz1cIlwiK3Qua2V5KSx2b2lkIDAhPT10LnJlZiYmKHU9dC5yZWYpLHQpbC5jYWxsKHQscikmJiFzLmhhc093blByb3BlcnR5KHIpJiYoaVtyXT10W3JdKTtpZihlJiZlLmRlZmF1bHRQcm9wcylmb3IociBpbiB0PWUuZGVmYXVsdFByb3BzKXZvaWQgMD09PWlbcl0mJihpW3JdPXRbcl0pO3JldHVybnskJHR5cGVvZjpvLHR5cGU6ZSxrZXk6YyxyZWY6dSxwcm9wczppLF9vd25lcjphLmN1cnJlbnR9fXQuanN4PWMsdC5qc3hzPWN9LDU4OTM6KGUsdCxuKT0+e2UuZXhwb3J0cz1uKDUyNTEpfSwzNTczOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1uKDY1NSksbz1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4obix0KSxlKX19LGk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUlMT9OdW1iZXIoZS50b0ZpeGVkKDUpKTplfSxhPS8oLSk/KFtcXGRdKlxcLj9bXFxkXSkrL2csbD0vKCNbMC05YS1mXXs2fXwjWzAtOWEtZl17M318Iyg/OlswLTlhLWZdezJ9KXsyLDR9fChyZ2J8aHNsKWE/XFwoKC0/W1xcZFxcLl0rJT9bLFxcc10rKXsyLDN9XFxzKlxcLypcXHMqW1xcZFxcLl0rJT9cXCkpL2dpLHM9L14oI1swLTlhLWZdezN9fCMoPzpbMC05YS1mXXsyfSl7Miw0fXwocmdifGhzbClhP1xcKCgtP1tcXGRcXC5dKyU/WyxcXHNdKyl7MiwzfVxccypcXC8qXFxzKltcXGRcXC5dKyU/XFwpKSQvaTtmdW5jdGlvbiBjKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlfXZhciB1PXt0ZXN0OmZ1bmN0aW9uKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlfSxwYXJzZTpwYXJzZUZsb2F0LHRyYW5zZm9ybTpmdW5jdGlvbihlKXtyZXR1cm4gZX19LGY9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHUpLHt0cmFuc2Zvcm06bygwLDEpfSksZD1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdSkse2RlZmF1bHQ6MX0pLHA9ZnVuY3Rpb24oZSl7cmV0dXJue3Rlc3Q6ZnVuY3Rpb24odCl7cmV0dXJuIGModCkmJnQuZW5kc1dpdGgoZSkmJjE9PT10LnNwbGl0KFwiIFwiKS5sZW5ndGh9LHBhcnNlOnBhcnNlRmxvYXQsdHJhbnNmb3JtOmZ1bmN0aW9uKHQpe3JldHVyblwiXCIrdCtlfX19LGg9cChcImRlZ1wiKSx2PXAoXCIlXCIpLGc9cChcInB4XCIpLEM9cChcInZoXCIpLG09cChcInZ3XCIpLHk9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHYpLHtwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm4gdi5wYXJzZShlKS8xMDB9LHRyYW5zZm9ybTpmdW5jdGlvbihlKXtyZXR1cm4gdi50cmFuc2Zvcm0oMTAwKmUpfX0pLHc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIEJvb2xlYW4oYyhuKSYmcy50ZXN0KG4pJiZuLnN0YXJ0c1dpdGgoZSl8fHQmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHQpKX19LGI9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmdW5jdGlvbihyKXt2YXIgbztpZighYyhyKSlyZXR1cm4gcjt2YXIgaT1yLm1hdGNoKGEpLGw9aVswXSxzPWlbMV0sdT1pWzJdLGY9aVszXTtyZXR1cm4obz17fSlbZV09cGFyc2VGbG9hdChsKSxvW3RdPXBhcnNlRmxvYXQocyksb1tuXT1wYXJzZUZsb2F0KHUpLG8uYWxwaGE9dm9pZCAwIT09Zj9wYXJzZUZsb2F0KGYpOjEsb319LHg9e3Rlc3Q6dyhcImhzbFwiLFwiaHVlXCIpLHBhcnNlOmIoXCJodWVcIixcInNhdHVyYXRpb25cIixcImxpZ2h0bmVzc1wiKSx0cmFuc2Zvcm06ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5odWUsbj1lLnNhdHVyYXRpb24scj1lLmxpZ2h0bmVzcyxvPWUuYWxwaGEsYT12b2lkIDA9PT1vPzE6bztyZXR1cm5cImhzbGEoXCIrTWF0aC5yb3VuZCh0KStcIiwgXCIrdi50cmFuc2Zvcm0oaShuKSkrXCIsIFwiK3YudHJhbnNmb3JtKGkocikpK1wiLCBcIitpKGYudHJhbnNmb3JtKGEpKStcIilcIn19LF89bygwLDI1NSksTD1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdSkse3RyYW5zZm9ybTpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChfKGUpKX19KSxPPXt0ZXN0OncoXCJyZ2JcIixcInJlZFwiKSxwYXJzZTpiKFwicmVkXCIsXCJncmVlblwiLFwiYmx1ZVwiKSx0cmFuc2Zvcm06ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZWQsbj1lLmdyZWVuLHI9ZS5ibHVlLG89ZS5hbHBoYSxhPXZvaWQgMD09PW8/MTpvO3JldHVyblwicmdiYShcIitMLnRyYW5zZm9ybSh0KStcIiwgXCIrTC50cmFuc2Zvcm0obikrXCIsIFwiK0wudHJhbnNmb3JtKHIpK1wiLCBcIitpKGYudHJhbnNmb3JtKGEpKStcIilcIn19LEU9e3Rlc3Q6dyhcIiNcIikscGFyc2U6ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIixuPVwiXCIscj1cIlwiLG89XCJcIjtyZXR1cm4gZS5sZW5ndGg+NT8odD1lLnN1YnN0cigxLDIpLG49ZS5zdWJzdHIoMywyKSxyPWUuc3Vic3RyKDUsMiksbz1lLnN1YnN0cig3LDIpKToodD1lLnN1YnN0cigxLDEpLG49ZS5zdWJzdHIoMiwxKSxyPWUuc3Vic3RyKDMsMSksbz1lLnN1YnN0cig0LDEpLHQrPXQsbis9bixyKz1yLG8rPW8pLHtyZWQ6cGFyc2VJbnQodCwxNiksZ3JlZW46cGFyc2VJbnQobiwxNiksYmx1ZTpwYXJzZUludChyLDE2KSxhbHBoYTpvP3BhcnNlSW50KG8sMTYpLzI1NToxfX0sdHJhbnNmb3JtOk8udHJhbnNmb3JtfSxTPXt0ZXN0OmZ1bmN0aW9uKGUpe3JldHVybiBPLnRlc3QoZSl8fEUudGVzdChlKXx8eC50ZXN0KGUpfSxwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm4gTy50ZXN0KGUpP08ucGFyc2UoZSk6eC50ZXN0KGUpP3gucGFyc2UoZSk6RS5wYXJzZShlKX0sdHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3JldHVybiBjKGUpP2U6ZS5oYXNPd25Qcm9wZXJ0eShcInJlZFwiKT9PLnRyYW5zZm9ybShlKTp4LnRyYW5zZm9ybShlKX19LE09XCIke2N9XCIsaj1cIiR7bn1cIjtmdW5jdGlvbiBrKGUpe3ZhciB0PVtdLG49MCxyPWUubWF0Y2gobCk7ciYmKG49ci5sZW5ndGgsZT1lLnJlcGxhY2UobCxNKSx0LnB1c2guYXBwbHkodCxyLm1hcChTLnBhcnNlKSkpO3ZhciBvPWUubWF0Y2goYSk7cmV0dXJuIG8mJihlPWUucmVwbGFjZShhLGopLHQucHVzaC5hcHBseSh0LG8ubWFwKHUucGFyc2UpKSkse3ZhbHVlczp0LG51bUNvbG9yczpuLHRva2VuaXNlZDplfX1mdW5jdGlvbiBSKGUpe3JldHVybiBrKGUpLnZhbHVlc31mdW5jdGlvbiBQKGUpe3ZhciB0PWsoZSksbj10LnZhbHVlcyxyPXQubnVtQ29sb3JzLG89dC50b2tlbmlzZWQsYT1uLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW8sbj0wO248YTtuKyspdD10LnJlcGxhY2UobjxyP006aixuPHI/Uy50cmFuc2Zvcm0oZVtuXSk6aShlW25dKSk7cmV0dXJuIHR9fXZhciBBPWZ1bmN0aW9uKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlPzA6ZX0sST17dGVzdDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsbztyZXR1cm4gaXNOYU4oZSkmJmMoZSkmJihudWxsIT09KG49bnVsbD09PSh0PWUubWF0Y2goYSkpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lmxlbmd0aCkmJnZvaWQgMCE9PW4/bjowKSsobnVsbCE9PShvPW51bGw9PT0ocj1lLm1hdGNoKGwpKXx8dm9pZCAwPT09cj92b2lkIDA6ci5sZW5ndGgpJiZ2b2lkIDAhPT1vP286MCk+MH0scGFyc2U6UixjcmVhdGVUcmFuc2Zvcm1lcjpQLGdldEFuaW1hdGFibGVOb25lOmZ1bmN0aW9uKGUpe3ZhciB0PVIoZSk7cmV0dXJuIFAoZSkodC5tYXAoQSkpfX0sVD1uZXcgU2V0KFtcImJyaWdodG5lc3NcIixcImNvbnRyYXN0XCIsXCJzYXR1cmF0ZVwiLFwib3BhY2l0eVwiXSk7ZnVuY3Rpb24gSChlKXt2YXIgdD1lLnNsaWNlKDAsLTEpLnNwbGl0KFwiKFwiKSxuPXRbMF0scj10WzFdO2lmKFwiZHJvcC1zaGFkb3dcIj09PW4pcmV0dXJuIGU7dmFyIG89KHIubWF0Y2goYSl8fFtdKVswXTtpZighbylyZXR1cm4gZTt2YXIgaT1yLnJlcGxhY2UobyxcIlwiKSxsPVQuaGFzKG4pPzE6MDtyZXR1cm4gbyE9PXImJihsKj0xMDApLG4rXCIoXCIrbCtpK1wiKVwifXZhciBWPS8oW2Etei1dKilcXCguKj9cXCkvZyxCPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxJKSx7Z2V0QW5pbWF0YWJsZU5vbmU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaChWKTtyZXR1cm4gdD90Lm1hcChIKS5qb2luKFwiIFwiKTplfX0pO3QuYWxwaGE9Zix0LmNvbG9yPVMsdC5jb21wbGV4PUksdC5kZWdyZWVzPWgsdC5maWx0ZXI9Qix0LmhleD1FLHQuaHNsYT14LHQubnVtYmVyPXUsdC5wZXJjZW50PXYsdC5wcm9ncmVzc1BlcmNlbnRhZ2U9eSx0LnB4PWcsdC5yZ2JVbml0PUwsdC5yZ2JhPU8sdC5zY2FsZT1kLHQudmg9Qyx0LnZ3PW19LDgzODg6KGUsdCxuKT0+e24ucih0KSxuLmQodCx7Zm9jdXNhYmxlOigpPT53LGlzRm9jdXNhYmxlOigpPT5fLGlzVGFiYmFibGU6KCk9PmIsdGFiYmFibGU6KCk9Pnl9KTt2YXIgcj1bXCJpbnB1dDpub3QoW2luZXJ0XSlcIixcInNlbGVjdDpub3QoW2luZXJ0XSlcIixcInRleHRhcmVhOm5vdChbaW5lcnRdKVwiLFwiYVtocmVmXTpub3QoW2luZXJ0XSlcIixcImJ1dHRvbjpub3QoW2luZXJ0XSlcIixcIlt0YWJpbmRleF06bm90KHNsb3QpOm5vdChbaW5lcnRdKVwiLFwiYXVkaW9bY29udHJvbHNdOm5vdChbaW5lcnRdKVwiLFwidmlkZW9bY29udHJvbHNdOm5vdChbaW5lcnRdKVwiLCdbY29udGVudGVkaXRhYmxlXTpub3QoW2NvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJdKTpub3QoW2luZXJ0XSknLFwiZGV0YWlscz5zdW1tYXJ5OmZpcnN0LW9mLXR5cGU6bm90KFtpbmVydF0pXCIsXCJkZXRhaWxzOm5vdChbaW5lcnRdKVwiXSxvPXIuam9pbihcIixcIiksaT1cInVuZGVmaW5lZFwiPT10eXBlb2YgRWxlbWVudCxhPWk/ZnVuY3Rpb24oKXt9OkVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXN8fEVsZW1lbnQucHJvdG90eXBlLm1zTWF0Y2hlc1NlbGVjdG9yfHxFbGVtZW50LnByb3RvdHlwZS53ZWJraXRNYXRjaGVzU2VsZWN0b3IsbD0haSYmRWxlbWVudC5wcm90b3R5cGUuZ2V0Um9vdE5vZGU/ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIG51bGw9PWV8fG51bGw9PT0odD1lLmdldFJvb3ROb2RlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5jYWxsKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT92b2lkIDA6ZS5vd25lckRvY3VtZW50fSxzPWZ1bmN0aW9uIGUodCxuKXt2YXIgcjt2b2lkIDA9PT1uJiYobj0hMCk7dmFyIG89bnVsbD09dHx8bnVsbD09PShyPXQuZ2V0QXR0cmlidXRlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5jYWxsKHQsXCJpbmVydFwiKTtyZXR1cm5cIlwiPT09b3x8XCJ0cnVlXCI9PT1vfHxuJiZ0JiZlKHQucGFyZW50Tm9kZSl9LGM9ZnVuY3Rpb24oZSx0LG4pe2lmKHMoZSkpcmV0dXJuW107dmFyIHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGUucXVlcnlTZWxlY3RvckFsbChvKSk7cmV0dXJuIHQmJmEuY2FsbChlLG8pJiZyLnVuc2hpZnQoZSksci5maWx0ZXIobil9LHU9ZnVuY3Rpb24gZSh0LG4scil7Zm9yKHZhciBpPVtdLGw9QXJyYXkuZnJvbSh0KTtsLmxlbmd0aDspe3ZhciBjPWwuc2hpZnQoKTtpZighcyhjLCExKSlpZihcIlNMT1RcIj09PWMudGFnTmFtZSl7dmFyIHU9Yy5hc3NpZ25lZEVsZW1lbnRzKCksZj1lKHUubGVuZ3RoP3U6Yy5jaGlsZHJlbiwhMCxyKTtyLmZsYXR0ZW4/aS5wdXNoLmFwcGx5KGksZik6aS5wdXNoKHtzY29wZVBhcmVudDpjLGNhbmRpZGF0ZXM6Zn0pfWVsc2V7YS5jYWxsKGMsbykmJnIuZmlsdGVyKGMpJiYobnx8IXQuaW5jbHVkZXMoYykpJiZpLnB1c2goYyk7dmFyIGQ9Yy5zaGFkb3dSb290fHxcImZ1bmN0aW9uXCI9PXR5cGVvZiByLmdldFNoYWRvd1Jvb3QmJnIuZ2V0U2hhZG93Um9vdChjKSxwPSFzKGQsITEpJiYoIXIuc2hhZG93Um9vdEZpbHRlcnx8ci5zaGFkb3dSb290RmlsdGVyKGMpKTtpZihkJiZwKXt2YXIgaD1lKCEwPT09ZD9jLmNoaWxkcmVuOmQuY2hpbGRyZW4sITAscik7ci5mbGF0dGVuP2kucHVzaC5hcHBseShpLGgpOmkucHVzaCh7c2NvcGVQYXJlbnQ6YyxjYW5kaWRhdGVzOmh9KX1lbHNlIGwudW5zaGlmdC5hcHBseShsLGMuY2hpbGRyZW4pfX1yZXR1cm4gaX0sZj1mdW5jdGlvbihlLHQpe3JldHVybiBlLnRhYkluZGV4PDAmJih0fHwvXihBVURJT3xWSURFT3xERVRBSUxTKSQvLnRlc3QoZS50YWdOYW1lKXx8ZnVuY3Rpb24oZSl7dmFyIHQsbj1udWxsPT1lfHxudWxsPT09KHQ9ZS5nZXRBdHRyaWJ1dGUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmNhbGwoZSxcImNvbnRlbnRlZGl0YWJsZVwiKTtyZXR1cm5cIlwiPT09bnx8XCJ0cnVlXCI9PT1ufShlKSkmJmlzTmFOKHBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIiksMTApKT8wOmUudGFiSW5kZXh9LGQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50YWJJbmRleD09PXQudGFiSW5kZXg/ZS5kb2N1bWVudE9yZGVyLXQuZG9jdW1lbnRPcmRlcjplLnRhYkluZGV4LXQudGFiSW5kZXh9LHA9ZnVuY3Rpb24oZSl7cmV0dXJuXCJJTlBVVFwiPT09ZS50YWdOYW1lfSxoPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10LndpZHRoLHI9dC5oZWlnaHQ7cmV0dXJuIDA9PT1uJiYwPT09cn0sdj1mdW5jdGlvbihlLHQpe3JldHVybiEodC5kaXNhYmxlZHx8cyh0KXx8ZnVuY3Rpb24oZSl7cmV0dXJuIHAoZSkmJlwiaGlkZGVuXCI9PT1lLnR5cGV9KHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuPXQuZGlzcGxheUNoZWNrLHI9dC5nZXRTaGFkb3dSb290O2lmKFwiaGlkZGVuXCI9PT1nZXRDb21wdXRlZFN0eWxlKGUpLnZpc2liaWxpdHkpcmV0dXJuITA7dmFyIG89YS5jYWxsKGUsXCJkZXRhaWxzPnN1bW1hcnk6Zmlyc3Qtb2YtdHlwZVwiKT9lLnBhcmVudEVsZW1lbnQ6ZTtpZihhLmNhbGwobyxcImRldGFpbHM6bm90KFtvcGVuXSkgKlwiKSlyZXR1cm4hMDtpZihuJiZcImZ1bGxcIiE9PW4mJlwibGVnYWN5LWZ1bGxcIiE9PW4pe2lmKFwibm9uLXplcm8tYXJlYVwiPT09bilyZXR1cm4gaChlKX1lbHNle2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpe2Zvcih2YXIgaT1lO2U7KXt2YXIgcz1lLnBhcmVudEVsZW1lbnQsYz1sKGUpO2lmKHMmJiFzLnNoYWRvd1Jvb3QmJiEwPT09cihzKSlyZXR1cm4gaChlKTtlPWUuYXNzaWduZWRTbG90P2UuYXNzaWduZWRTbG90OnN8fGM9PT1lLm93bmVyRG9jdW1lbnQ/czpjLmhvc3R9ZT1pfWlmKGZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGk9ZSYmbChlKSxhPW51bGw9PT0odD1pKXx8dm9pZCAwPT09dD92b2lkIDA6dC5ob3N0LHM9ITE7aWYoaSYmaSE9PWUpZm9yKHM9ISEobnVsbCE9PShuPWEpJiZ2b2lkIDAhPT1uJiZudWxsIT09KHI9bi5vd25lckRvY3VtZW50KSYmdm9pZCAwIT09ciYmci5jb250YWlucyhhKXx8bnVsbCE9ZSYmbnVsbCE9PShvPWUub3duZXJEb2N1bWVudCkmJnZvaWQgMCE9PW8mJm8uY29udGFpbnMoZSkpOyFzJiZhOyl7dmFyIGMsdSxmO3M9IShudWxsPT09KHU9YT1udWxsPT09KGM9aT1sKGEpKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5ob3N0KXx8dm9pZCAwPT09dXx8bnVsbD09PShmPXUub3duZXJEb2N1bWVudCl8fHZvaWQgMD09PWZ8fCFmLmNvbnRhaW5zKGEpKX1yZXR1cm4gc30oZSkpcmV0dXJuIWUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg7aWYoXCJsZWdhY3ktZnVsbFwiIT09bilyZXR1cm4hMH1yZXR1cm4hMX0odCxlKXx8ZnVuY3Rpb24oZSl7cmV0dXJuXCJERVRBSUxTXCI9PT1lLnRhZ05hbWUmJkFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShlLmNoaWxkcmVuKS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm5cIlNVTU1BUllcIj09PWUudGFnTmFtZX0pKX0odCl8fGZ1bmN0aW9uKGUpe2lmKC9eKElOUFVUfEJVVFRPTnxTRUxFQ1R8VEVYVEFSRUEpJC8udGVzdChlLnRhZ05hbWUpKWZvcih2YXIgdD1lLnBhcmVudEVsZW1lbnQ7dDspe2lmKFwiRklFTERTRVRcIj09PXQudGFnTmFtZSYmdC5kaXNhYmxlZCl7Zm9yKHZhciBuPTA7bjx0LmNoaWxkcmVuLmxlbmd0aDtuKyspe3ZhciByPXQuY2hpbGRyZW4uaXRlbShuKTtpZihcIkxFR0VORFwiPT09ci50YWdOYW1lKXJldHVybiEhYS5jYWxsKHQsXCJmaWVsZHNldFtkaXNhYmxlZF0gKlwiKXx8IXIuY29udGFpbnMoZSl9cmV0dXJuITB9dD10LnBhcmVudEVsZW1lbnR9cmV0dXJuITF9KHQpKX0sZz1mdW5jdGlvbihlLHQpe3JldHVybiEoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBwKGUpJiZcInJhZGlvXCI9PT1lLnR5cGV9KGUpJiYhZnVuY3Rpb24oZSl7aWYoIWUubmFtZSlyZXR1cm4hMDt2YXIgdCxuPWUuZm9ybXx8bChlKSxyPWZ1bmN0aW9uKGUpe3JldHVybiBuLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W3R5cGU9XCJyYWRpb1wiXVtuYW1lPVwiJytlKydcIl0nKX07aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LkNTUyYmXCJmdW5jdGlvblwiPT10eXBlb2Ygd2luZG93LkNTUy5lc2NhcGUpdD1yKHdpbmRvdy5DU1MuZXNjYXBlKGUubmFtZSkpO2Vsc2UgdHJ5e3Q9cihlLm5hbWUpfWNhdGNoKGUpe3JldHVybiBjb25zb2xlLmVycm9yKFwiTG9va3MgbGlrZSB5b3UgaGF2ZSBhIHJhZGlvIGJ1dHRvbiB3aXRoIGEgbmFtZSBhdHRyaWJ1dGUgY29udGFpbmluZyBpbnZhbGlkIENTUyBzZWxlY3RvciBjaGFyYWN0ZXJzIGFuZCBuZWVkIHRoZSBDU1MuZXNjYXBlIHBvbHlmaWxsOiAlc1wiLGUubWVzc2FnZSksITF9dmFyIG89ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihlW25dLmNoZWNrZWQmJmVbbl0uZm9ybT09PXQpcmV0dXJuIGVbbl19KHQsZS5mb3JtKTtyZXR1cm4hb3x8bz09PWV9KGUpfSh0KXx8Zih0KTwwfHwhdihlLHQpKX0sQz1mdW5jdGlvbihlKXt2YXIgdD1wYXJzZUludChlLmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpLDEwKTtyZXR1cm4hIShpc05hTih0KXx8dD49MCl9LG09ZnVuY3Rpb24gZSh0KXt2YXIgbj1bXSxyPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQsbyl7dmFyIGk9ISF0LnNjb3BlUGFyZW50LGE9aT90LnNjb3BlUGFyZW50OnQsbD1mKGEsaSkscz1pP2UodC5jYW5kaWRhdGVzKTphOzA9PT1sP2k/bi5wdXNoLmFwcGx5KG4scyk6bi5wdXNoKGEpOnIucHVzaCh7ZG9jdW1lbnRPcmRlcjpvLHRhYkluZGV4OmwsaXRlbTp0LGlzU2NvcGU6aSxjb250ZW50OnN9KX0pKSxyLnNvcnQoZCkucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiB0LmlzU2NvcGU/ZS5wdXNoLmFwcGx5KGUsdC5jb250ZW50KTplLnB1c2godC5jb250ZW50KSxlfSksW10pLmNvbmNhdChuKX0seT1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBuPSh0PXR8fHt9KS5nZXRTaGFkb3dSb290P3UoW2VdLHQuaW5jbHVkZUNvbnRhaW5lcix7ZmlsdGVyOmcuYmluZChudWxsLHQpLGZsYXR0ZW46ITEsZ2V0U2hhZG93Um9vdDp0LmdldFNoYWRvd1Jvb3Qsc2hhZG93Um9vdEZpbHRlcjpDfSk6YyhlLHQuaW5jbHVkZUNvbnRhaW5lcixnLmJpbmQobnVsbCx0KSksbShuKX0sdz1mdW5jdGlvbihlLHQpe3JldHVybih0PXR8fHt9KS5nZXRTaGFkb3dSb290P3UoW2VdLHQuaW5jbHVkZUNvbnRhaW5lcix7ZmlsdGVyOnYuYmluZChudWxsLHQpLGZsYXR0ZW46ITAsZ2V0U2hhZG93Um9vdDp0LmdldFNoYWRvd1Jvb3R9KTpjKGUsdC5pbmNsdWRlQ29udGFpbmVyLHYuYmluZChudWxsLHQpKX0sYj1mdW5jdGlvbihlLHQpe2lmKHQ9dHx8e30sIWUpdGhyb3cgbmV3IEVycm9yKFwiTm8gbm9kZSBwcm92aWRlZFwiKTtyZXR1cm4hMSE9PWEuY2FsbChlLG8pJiZnKHQsZSl9LHg9ci5jb25jYXQoXCJpZnJhbWVcIikuam9pbihcIixcIiksXz1mdW5jdGlvbihlLHQpe2lmKHQ9dHx8e30sIWUpdGhyb3cgbmV3IEVycm9yKFwiTm8gbm9kZSBwcm92aWRlZFwiKTtyZXR1cm4hMSE9PWEuY2FsbChlLHgpJiZ2KHQsZSl9fSw0MjQ5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQnV0dG9uVGV4dE9ubHk9dC5CdXR0b25TZWNvbmRhcnk9dC5CdXR0b25QcmltYXJ5PXQuQnV0dG9uPXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1vKG4oNzUxOCkpLGw9bigxMzM1KSxzPW4oOTUwNyksYz1uKDYxMjYpO3QuQnV0dG9uPWU9Pnt2YXJ7bGFiZWw6dCxjaGlsZHJlbjpuLHNpemU6bz1cImJhc2VcIixzaGFwZTphPVwic3F1YXJlXCIsa2luZDpsPVwicHJpbWFyeVwiLGxheW91dDpzPVwiZml0XCIsaHJlZjpjfT1lLGQ9cihlLFtcImxhYmVsXCIsXCJjaGlsZHJlblwiLFwic2l6ZVwiLFwic2hhcGVcIixcImtpbmRcIixcImxheW91dFwiLFwiaHJlZlwiXSk7cmV0dXJuKDAsaS5qc3gpKHUsT2JqZWN0LmFzc2lnbih7YXM6Yz9cImFcIjpcImJ1dHRvblwiLHNpemU6byxzaGFwZTphLGtpbmQ6bCxsYXlvdXQ6c30sZCx7Y2hpbGRyZW46dD8oMCxpLmpzeCkoZixPYmplY3QuYXNzaWduKHthbGlnbkl0ZW1zOlwiY2VudGVyXCIsanVzdGlmeUNvbnRlbnQ6XCJjZW50ZXJcIn0se2NoaWxkcmVuOnR9KSk6bn0pKX07Y29uc3QgdT1hLmRlZmF1bHQuYnV0dG9uYFxuICAvKiBEZWZhdWx0IHZhbHVlcyB0aGF0IGdldCBvdmVycmlkZGVuIGJ5IHZhcmlhbnRzICovXG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEJhY2tncm91bmR9O1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kfTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnlUZXh0fTtcblxuICAvKiBJbmplY3QgdmFyaWFudHMgKi9cbiAgJHsoMCxzLmdldFZhcmlhbnRDU1MpKGMudmFyaWFudHMsYy5WYXJpYW50LnNpemUpfVxuICAkeygwLHMuZ2V0VmFyaWFudENTUykoYy52YXJpYW50cyxjLlZhcmlhbnQuc2hhcGUpfVxuICAkeygwLHMuZ2V0VmFyaWFudENTUykoYy52YXJpYW50cyxjLlZhcmlhbnQua2luZCl9XG4gICR7KDAscy5nZXRWYXJpYW50Q1NTKShjLnZhcmlhbnRzLGMuVmFyaWFudC5sYXlvdXQpfVxuXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICBvdXRsaW5lOiBub25lO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmxpbmVIZWlnaHQudWl9O1xuICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0LmJvbGR9O1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKTtcblxuICAmOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAmOmRpc2FibGVkLFxuICAmOmFjdGl2ZTpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcn07XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgfVxuYCxmPSgwLGEuZGVmYXVsdCkobC5Cb3gpYFxuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gMCAke2UucHgueHNtYWxsfWB9O1xuYDt0LkJ1dHRvblByaW1hcnk9ZT0+KDAsaS5qc3gpKHQuQnV0dG9uLE9iamVjdC5hc3NpZ24oe30sZSx7a2luZDpcInByaW1hcnlcIn0pKSx0LkJ1dHRvblNlY29uZGFyeT1lPT4oMCxpLmpzeCkodC5CdXR0b24sT2JqZWN0LmFzc2lnbih7fSxlLHtraW5kOlwic2Vjb25kYXJ5XCJ9KSksdC5CdXR0b25UZXh0T25seT1lPT4oMCxpLmpzeCkodC5CdXR0b24sT2JqZWN0LmFzc2lnbih7fSxlLHtraW5kOlwidGV4dE9ubHlcIn0pKX0sNjEyNjooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC52YXJpYW50cz10LkJ1dHRvblNoYXBlPXQuQnV0dG9uTGF5b3V0PXQuQnV0dG9uU2l6ZT10LkJ1dHRvbktpbmQ9dC5WYXJpYW50PXZvaWQgMDtjb25zdCByPW4oNzUxOCk7dC5WYXJpYW50PXtzaGFwZTpcInNoYXBlXCIsc2l6ZTpcInNpemVcIixraW5kOlwia2luZFwiLGxheW91dDpcImxheW91dFwifSx0LkJ1dHRvbktpbmQ9e3ByaW1hcnk6XCJwcmltYXJ5XCIsc2Vjb25kYXJ5Olwic2Vjb25kYXJ5XCIsdGV4dE9ubHk6XCJ0ZXh0T25seVwifSx0LkJ1dHRvblNpemU9e3NtYWxsOlwic21hbGxcIixiYXNlOlwiYmFzZVwiLGxhcmdlOlwibGFyZ2VcIn0sdC5CdXR0b25MYXlvdXQ9e2ZpdDpcImZpdFwiLGZ1bGw6XCJmdWxsXCJ9LHQuQnV0dG9uU2hhcGU9e3NxdWFyZTpcInNxdWFyZVwiLHBpbGw6XCJwaWxsXCJ9LHQudmFyaWFudHM9e1t0LlZhcmlhbnQuc2l6ZV06e1t0LkJ1dHRvblNpemUuYmFzZV06ci5jc3NgXG4gICAgICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfSAke2UucHgubGFyZ2V9YH07XG4gICAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gICAgYCxbdC5CdXR0b25TaXplLnNtYWxsXTpyLmNzc2BcbiAgICAgIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHgueHNtYWxsfSAke2UucHguYmFzZX1gfTtcbiAgICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5zbWFsbH07XG4gICAgYCxbdC5CdXR0b25TaXplLmxhcmdlXTpyLmNzc2BcbiAgICAgIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguYmFzZX0gJHtlLnB4LnhsYXJnZX1gfTtcbiAgICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5sYXJnZX07XG4gICAgYH0sW3QuVmFyaWFudC5zaGFwZV06e1t0LkJ1dHRvblNoYXBlLnNxdWFyZV06ci5jc3NgXG4gICAgICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gICAgYCxbdC5CdXR0b25TaGFwZS5waWxsXTpyLmNzc2BcbiAgICAgIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnBpbGx9O1xuICAgIGB9LFt0LlZhcmlhbnQubGF5b3V0XTp7W3QuQnV0dG9uTGF5b3V0LmZpdF06ci5jc3NgXG4gICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgYCxbdC5CdXR0b25MYXlvdXQuZnVsbF06ci5jc3NgXG4gICAgICB3aWR0aDogMTAwJTtcbiAgICBgfSxbdC5WYXJpYW50LmtpbmRdOntbdC5CdXR0b25LaW5kLnByaW1hcnldOnIuY3NzYFxuICAgICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX07XG4gICAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeUhvdmVyfTtcbiAgICAgIH1cblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5QWN0aXZlfTtcbiAgICAgIH1cblxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeUZvY3VzZWR9O1xuICAgICAgfVxuICAgIGAsW3QuQnV0dG9uS2luZC5zZWNvbmRhcnldOnIuY3NzYFxuICAgICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kU2Vjb25kYXJ5fTtcbiAgICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kU2Vjb25kYXJ5fTtcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnlUZXh0fTtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFNlY29uZGFyeUhvdmVyfTtcbiAgICAgIH1cblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnlBY3RpdmV9O1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnlGb2N1c2VkfTtcbiAgICAgIH1cbiAgICBgLFt0LkJ1dHRvbktpbmQudGV4dE9ubHldOnIuY3NzYFxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG5cbiAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRGb2N1c2VkfTtcbiAgICAgIH1cbiAgICBgfX19LDQxMzA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDQyNDkpLHQpLG8obig2MTI2KSx0KX0sMzkxMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DYXJkQ29udGFpbmVyPXZvaWQgMDtjb25zdCBvPW4oNTg5MyksaT1yKG4oNzUxOCkpLGE9big5NTA3KSxsPW4oMTMzNSk7dC5DYXJkQ29udGFpbmVyPWU9PigwLG8uanN4KShzLE9iamVjdC5hc3NpZ24oe3N0eWxlOnttYXhIZWlnaHQ6ZS5tYXhIZWlnaHQsb3ZlcmZsb3dZOlwiYXV0b1wifSxpZDpcImNhcmQtY29udGFpbmVyXCIsXCJkYXRhLXRlc3RpZFwiOlwiY2FyZC1jb250YWluZXJcIn0se2NoaWxkcmVuOigwLG8uanN4KShjLHtjaGlsZHJlbjplLmNoaWxkcmVufSl9KSk7Y29uc3Qgcz0oMCxpLmRlZmF1bHQpKGwuQm94KWBcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQzfTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNX07XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfSAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH1cbiAgICAkeyh7dGhlbWU6ZX0pPT5lLnB4LmxhcmdlfSAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICAke2EuTWl4aW5zLnNjcm9sbGJhci5iYXNlfTtcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuYCxjPWkuZGVmYXVsdC5kaXZgXG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9IDBweFxuICAgICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIHdpZHRoOiAxMDAlO1xuYH0sMTI0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNvbGxhcHNpYmxlQ2FyZD12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpLGk9big2Njg5KSxhPXIobig3NTE4KSksbD1uKDMxMzYpLHM9big5NjM0KSxjPW4oMTMzNSksdT1uKDM5MTEpLGY9big3NzY5KSxkPW4oOTUwNyk7dC5Db2xsYXBzaWJsZUNhcmQ9ZT0+e2NvbnN0W3Qsbl09KDAsaS51c2VTdGF0ZSkoZS5leHBhbmRlZHx8ITEpLHI9ZT0+e24obnVsbCE9ZT9lOiF0KX07cmV0dXJuKDAsby5qc3hzKShwLE9iamVjdC5hc3NpZ24oe1wiZGF0YS10ZXN0aWRcIjpcImNvbGxhcHNpYmxlLWNhcmRcIn0se2NoaWxkcmVuOlsoMCxvLmpzeHMpKHYsT2JqZWN0LmFzc2lnbih7XCJhcmlhLWV4cGFuZGVkXCI6dCxcImRhdGEtdGVzdGlkXCI6XCJoZWFkaW5nLWNvbnRhaW5lclwiLHN0eWxlOntwb3NpdGlvbjplLmZpeGVkSGVhZGVyP1wic3RpY2t5XCI6dm9pZCAwLHRvcDowfSxvbkNsaWNrOigpPT5yKCksdGFiSW5kZXg6MCxvbktleURvd246ZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2VcIkVudGVyXCI6Y2FzZVwiU3BhY2VcIjplLnByZXZlbnREZWZhdWx0KCkscigpfX19LHtjaGlsZHJlbjpbKDAsby5qc3gpKGgse2NoaWxkcmVuOmUudGl0bGV9KSwoMCxvLmpzeHMpKFwiZGl2XCIsT2JqZWN0LmFzc2lnbih7aWQ6XCJpY29uLWNvbnRhaW5lclwifSx7Y2hpbGRyZW46W3ZvaWQgMCE9PWUuYmFkZ2VUZXh0JiYoMCxvLmpzeCkobC5CYWRnZSx7Y291bnQ6ZS5iYWRnZVRleHQsaWQ6XCJjb2xsYXBzaWJsZS1jYXJkLWhlYWRpbmctYmFkZ2VcIixcImRhdGEtdGVzdGlkXCI6XCJjb2xsYXBzaWJsZS1jYXJkLWhlYWRpbmctYmFkZ2VcIn0pLCgwLG8uanN4KShzLkljb24se2ljb246dD9cIkNoZXZyb25VcEljb25cIjpcIkNoZXZyb25Eb3duSWNvblwifSldfSkpXX0pKSx0JiYoMCxvLmpzeCkodS5DYXJkQ29udGFpbmVyLE9iamVjdC5hc3NpZ24oe21heEhlaWdodDplLm1heEhlaWdodHx8XCJub25lXCJ9LHtjaGlsZHJlbjooMCxvLmpzeCkoXCJkaXZcIix7Y2hpbGRyZW46ZS5jaGlsZHJlbn0pfSkpXX0pKX07Y29uc3QgcD1hLmRlZmF1bHQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEwMCU7XG5gLGg9KDAsYS5kZWZhdWx0KShmLlRleHQpYFxuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgJHtkLk1peGlucy50ZXh0T3ZlcmZsb3d9O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuYCx2PSgwLGEuZGVmYXVsdCkoYy5Cb3gpYFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDN9O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ1fTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNX07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGdhcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUubGluZUhlaWdodC5oZWFkaW5nfTtcbiAgb3V0bGluZTogbm9uZTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKTtcbiAgd2lkdGg6IDEwMCU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgI2ljb24tY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIH1cblxuICAjY29sbGFwc2libGUtY2FyZC1oZWFkaW5nLWJhZGdlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5fTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDJ9O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDV9O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDV9O1xuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5ib3JkZXJOZXV0cmFsfTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJvcmRlck5ldXRyYWx9O1xuICB9XG5gfSw3NDAxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigxMjQpLHQpfSw5NjQ0OihlLHQpPT57dmFyIG47T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5FeHBhbmREaXJlY3Rpb249dm9pZCAwLChuPXQuRXhwYW5kRGlyZWN0aW9ufHwodC5FeHBhbmREaXJlY3Rpb249e30pKVtuLlVwPTBdPVwiVXBcIixuW24uRG93bj0xXT1cIkRvd25cIn0sNDAyMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5FeHBhbmRhYmxlQnV0dG9uPXZvaWQgMDtjb25zdCBvPW4oNTg5MyksaT1uKDY2ODkpLGE9big0MTMwKSxsPXIobig3NTE4KSkscz1uKDk2MzQpLGM9big5MTQxKSx1PW4oMzAzMCksZj1uKDEzMzUpLGQ9big5NjQ0KTt0LkV4cGFuZGFibGVCdXR0b249ZT0+e3ZhciB0LG4scixsLHMscDtjb25zdFt3LGJdPSgwLGkudXNlU3RhdGUpKHtzaG93OiExLHJlcXVlc3RlZEJ5Q29sbGFwc2U6ITF9KSx4PXtzaXplOmUuc2l6ZSxraW5kOmUua2luZCxkaXNhYmxlZDplLmRpc2FibGVkfSxfPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7c2hhcGU6YS5CdXR0b25TaGFwZS5zcXVhcmUsXCJhcmlhLWxhYmVsXCI6bnVsbCE9PSh0PWVbXCJhcmlhLWxhYmVsXCJdKSYmdm9pZCAwIT09dD90OmBQcmltYXJ5IEJ1dHRvbiAke2UudGl0bGV9YH0pLEw9bnVsbCE9PShuPWUuZXhwYW5kRGlyZWN0aW9uKSYmdm9pZCAwIT09bj9uOmQuRXhwYW5kRGlyZWN0aW9uLkRvd247cmV0dXJuKDAsaS51c2VFZmZlY3QpKCgoKT0+e2lmKCF3LnJlcXVlc3RlZEJ5Q29sbGFwc2UpcmV0dXJuO2NvbnN0IGU9c2V0VGltZW91dCgoKCk9PmIoe3JlcXVlc3RlZEJ5Q29sbGFwc2U6ITEsc2hvdzohMX0pKSwyMDApO3JldHVybigpPT5jbGVhclRpbWVvdXQoZSl9KSxbdy5yZXF1ZXN0ZWRCeUNvbGxhcHNlXSksKDAsby5qc3hzKSh5LHtjaGlsZHJlbjpbKDAsby5qc3hzKShtLHtjaGlsZHJlbjpbKDAsby5qc3gpKHYsT2JqZWN0LmFzc2lnbih7fSxfLHtjaGlsZHJlbjooMCxvLmpzeCkoZyx7Y2hpbGRyZW46bnVsbCE9PShyPWUuY2hpbGRyZW4pJiZ2b2lkIDAhPT1yP3I6Xy50aXRsZX0pfSkpLGUuc2Vjb25kYXJ5QnV0dG9ucyYmZS5zZWNvbmRhcnlCdXR0b25zLmxlbmd0aD4wJiYoMCxvLmpzeCkoZi5Cb3gsT2JqZWN0LmFzc2lnbih7aWQ6XCJkcm9wZG93bi1jb250YWluZXJcIn0se2NoaWxkcmVuOigwLG8uanN4cykoQyxPYmplY3QuYXNzaWduKHt9LHgse3JvbGU6XCJjb21ib2JveFwiLG9uQ2xpY2s6KCk9Pnt3LnJlcXVlc3RlZEJ5Q29sbGFwc2V8fGIoe3JlcXVlc3RlZEJ5Q29sbGFwc2U6ITEsc2hvdzohdy5zaG93fSl9LFwiYXJpYS1sYWJlbFwiOlwiRXhwYW5kIFNlY29uZGFyeSBCdXR0b25zIFBhbmVsXCIsXCJhcmlhLWV4cGFuZGVkXCI6dy5zaG93fSx7Y2hpbGRyZW46W0w9PT1kLkV4cGFuZERpcmVjdGlvbi5Eb3duJiYoMCxvLmpzeCkoaCx7a2luZDpudWxsIT09KGw9ZS5raW5kKSYmdm9pZCAwIT09bD9sOmEuQnV0dG9uS2luZC5wcmltYXJ5LGljb246XCJDYXJldERvd25JY29uXCJ9KSxMPT09ZC5FeHBhbmREaXJlY3Rpb24uVXAmJigwLG8uanN4KShoLHtraW5kOm51bGwhPT0ocz1lLmtpbmQpJiZ2b2lkIDAhPT1zP3M6YS5CdXR0b25LaW5kLnByaW1hcnksaWNvbjpcIkNhcmV0VXBJY29uXCJ9KV19KSl9KSldfSksZS5zZWNvbmRhcnlCdXR0b25zJiZlLnNlY29uZGFyeUJ1dHRvbnMubGVuZ3RoPjAmJigwLG8uanN4KShjLkFuaW1hdGVQcmVzZW5jZSx7Y2hpbGRyZW46dy5zaG93JiYoMCxvLmpzeCkodS5FeHBhbmRhYmxlUGFuZWwse2V4cGFuZERpcmVjdGlvbjpMLHNlY29uZGFyeUJ1dHRvbnM6bnVsbCE9PShwPWUuc2Vjb25kYXJ5QnV0dG9ucykmJnZvaWQgMCE9PXA/cDpbXSxzdHJldGNoOmUuc3RyZXRjaEV4cGFuZGFibGVQYW5lbCxjbG9zZVBhbmVsT25TZWNvbmRhcnlCdXR0b25DbGljazplLmNsb3NlUGFuZWxPblNlY29uZGFyeUJ1dHRvbkNsaWNrLG9uQ29sbGFwc2VSZXF1ZXN0OigpPT5iKHtzaG93OiExLHJlcXVlc3RlZEJ5Q29sbGFwc2U6ITB9KSxidXR0b25TaXplOmUuc2l6ZSxkb2N1bWVudDplLmRvY3VtZW50fSl9KV19KX07Y29uc3QgcD17W2EuQnV0dG9uS2luZC5wcmltYXJ5XTplPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5VGV4dCxbYS5CdXR0b25LaW5kLnNlY29uZGFyeV06ZT0+ZS5wYWxldHRlLmJyYW5kU2Vjb25kYXJ5VGV4dCxbYS5CdXR0b25LaW5kLnRleHRPbmx5XTplPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9LGg9KDAsbC5kZWZhdWx0KShzLkljb24pYFxuICBzdmcgcGF0aCB7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplLGtpbmQ6dH0pPT5wW3RdKGUpfTtcbiAgfVxuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5saW5lSGVpZ2h0LnVpfTtcbiAgZm9udC13ZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuZm9udFdlaWdodC5ib2xkfTtcbmAsdj0oMCxsLmRlZmF1bHQpKGEuQnV0dG9uKWBcbiAgbWFyZ2luLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG5gLGc9KDAsbC5kZWZhdWx0KShmLkJveClgXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbmAsQz0oMCxsLmRlZmF1bHQpKGEuQnV0dG9uKWBcbiAgd2lkdGg6ICR7ZT0+ZS50aGVtZS5weC54eGxhcmdlfTtcbiAgcGFkZGluZzogMDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gLG09bC5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmAseT1sLmRlZmF1bHQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbmB9LDIxMjg6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuc2V0dXBFeHBhbmRhYmxlUGFuZWw9dm9pZCAwO2NvbnN0IHI9big5NjQ0KTt0LnNldHVwRXhwYW5kYWJsZVBhbmVsPShlLHQsbj0hMSk9PntpZighZXx8MD09PWUuY2hpbGROb2Rlcy5sZW5ndGgpcmV0dXJuO2NvbnN0IG89ZS5wYXJlbnRFbGVtZW50LGk9bnVsbD09bz92b2lkIDA6by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoIWkpcmV0dXJuO2NvbnN0IGw9YS5oZWlnaHQscz1hLndpZHRoPD1pLndpZHRofHxuP2Eud2lkdGg6aS53aWR0aCxjPWkueCtzPmRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGh8fHM8aS53aWR0aDtlLnN0eWxlLndpZHRoPWAke3N9cHhgLGUuc3R5bGUub3BhY2l0eT1cIjFcIixjP2Uuc3R5bGUucmlnaHQ9XCIwcHhcIjplLnN0eWxlLmxlZnQ9XCIwcHhcIix0PT09ci5FeHBhbmREaXJlY3Rpb24uRG93biYmKGUuc3R5bGUudG9wPWAke2kuaGVpZ2h0fXB4YCksdD09PXIuRXhwYW5kRGlyZWN0aW9uLlVwJiYoZS5zdHlsZS50b3A9LTEqbCtcInB4XCIpfX0sMzAzMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5FeHBhbmRhYmxlUGFuZWw9dm9pZCAwO2NvbnN0IG89big1ODkzKSxpPXIobig3NTE4KSksYT1uKDkxNDEpLGw9big0MTMwKSxzPW4oMTMzNSksYz1uKDIxMjgpLHU9cihuKDQ0ODMpKSxmPXt0eXBlOlwic3ByaW5nXCIsZHVyYXRpb246LjIsYm91bmNlOi4yNX07dC5FeHBhbmRhYmxlUGFuZWw9ZT0+e3ZhciB0O2NvbnN0IG49YCR7ZS5wYW5lbElkfS1leHBhbmRhYmxlLXBhbmVsYDtyZXR1cm4oMCxvLmpzeCkodS5kZWZhdWx0LE9iamVjdC5hc3NpZ24oe2ZvY3VzVHJhcE9wdGlvbnM6e2ZhbGxiYWNrRm9jdXM6YCMke259YCxjbGlja091dHNpZGVEZWFjdGl2YXRlczohMCxvbkRlYWN0aXZhdGU6ZS5vbkNvbGxhcHNlUmVxdWVzdCxpbml0aWFsRm9jdXM6ITEsZG9jdW1lbnQ6ZS5kb2N1bWVudH19LHtjaGlsZHJlbjooMCxvLmpzeCkoaCxPYmplY3QuYXNzaWduKHtyZWY6dD0+KDAsYy5zZXR1cEV4cGFuZGFibGVQYW5lbCkodCxlLmV4cGFuZERpcmVjdGlvbixlLnN0cmV0Y2gpLHRhYkluZGV4OjAsaWQ6bixpbml0aWFsOlwiaW5pdGlhbFwiLGV4aXQ6XCJoaWRkZW5cIixidXR0b25TaXplOm51bGwhPT0odD1lLmJ1dHRvblNpemUpJiZ2b2lkIDAhPT10P3Q6bC5CdXR0b25TaXplLmJhc2UsYW5pbWF0ZTpcInZpc2libGVcIixyb2xlOlwibWVudVwiLHRyYW5zaXRpb246Zixvbk1vdXNlT3ZlcjooKT0+e3ZhciBlO3JldHVybiBudWxsPT09KGU9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCl8fHZvaWQgMD09PWU/dm9pZCAwOmUuYmx1cigpfX0se2NoaWxkcmVuOmUuc2Vjb25kYXJ5QnV0dG9ucy5tYXAoKCh0LG4pPT4oMCxvLmpzeCkobC5CdXR0b24sT2JqZWN0LmFzc2lnbih7Y2xhc3NOYW1lOlwibWVudS1pdGVtXCIsdGFiSW5kZXg6bisxLHRpdGxlOnQudGl0bGUscm9sZTpcIm1lbnVpdGVtXCIsc2l6ZTplLmJ1dHRvblNpemUsZGlzYWJsZWQ6dC5kaXNhYmxlZCxraW5kOlwidGV4dE9ubHlcIixvbkNsaWNrOm49PigodCxuKT0+e2UuY2xvc2VQYW5lbE9uU2Vjb25kYXJ5QnV0dG9uQ2xpY2s/KG4ub25DbGljayh0KSxlLm9uQ29sbGFwc2VSZXF1ZXN0KCkpOm4ub25DbGljayh0LCgoKT0+ZS5vbkNvbGxhcHNlUmVxdWVzdCgpKSl9KShuLHQpLFwiYXJpYS1sYWJlbFwiOnQudGl0bGV9LHtjaGlsZHJlbjooMCxvLmpzeCkoZCxPYmplY3QuYXNzaWduKHtcImFyaWEtbGFiZWxcIjp0LnRpdGxlfSx7Y2hpbGRyZW46dC50aXRsZX0pKX0pLG4pKSl9KSxcImV4cGFuZGFibGVQYW5lbFwiKX0pKX07Y29uc3QgZD0oMCxpLmRlZmF1bHQpKHMuQm94KWBcbiAgcGFkZGluZy1ib3R0b206IDFweDtcbiAgcGFkZGluZy10b3A6IDFweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuYCxwPXtbbC5CdXR0b25TaXplLnNtYWxsXTplPT5lLnB4LnNtYWxsLFtsLkJ1dHRvblNpemUuYmFzZV06ZT0+ZS5weC5iYXNlLFtsLkJ1dHRvblNpemUubGFyZ2VdOmU9PmUucHgubGFyZ2V9LGg9KDAsaS5kZWZhdWx0KShhLm1vdGlvbi5kaXYpYFxuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gIG9wYWNpdHk6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAke2U9PmUudGhlbWUucHgueHh4bGFyZ2V9O1xuICBtYXgtd2lkdGg6IG1heC1jb250ZW50O1xuICBtaW4td2lkdGg6IDgwcHg7XG4gIGJhY2tncm91bmQ6ICR7ZT0+ZS50aGVtZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgYm94LXNoYWRvdzogJHtlPT5lLnRoZW1lLnNoYWRvdy5iYXNlfTtcbiAgaGVpZ2h0OiBtYXgtY29udGVudDtcbiAgei1pbmRleDogMTAwO1xuXG4gIC5tZW51LWl0ZW0ge1xuICAgIGJvcmRlci1yYWRpdXM6IHVuc2V0O1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm9yZGVyOiB0cmFuc3BhcmVudDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBvdmVyZmxvdzogY2xpcDtcbiAgICAmID4gKiB7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIH1cbiAgICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0Lm5vcm1hbH07XG4gICAgcGFkZGluZy10b3A6ICR7KHt0aGVtZTplLGJ1dHRvblNpemU6dH0pPT5wW3RdKGUpfTtcbiAgICBwYWRkaW5nLWJvdHRvbTogJHsoe3RoZW1lOmUsYnV0dG9uU2l6ZTp0fSk9PnBbdF0oZSl9O1xuICAgIHBhZGRpbmctbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gICAgcGFkZGluZy1yaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG5cbiAgICA6Zmlyc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgICB9XG5cbiAgICA6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICAgIH1cblxuICAgICY6Zm9jdXMsXG4gICAgJjpob3ZlciB7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tncm91bmQ6ICR7ZT0+ZS50aGVtZS5wYWxldHRlLmJhY2tncm91bmQyfTtcbiAgICB9XG5cbiAgICAmOmRpc2FibGVkLFxuICAgICY6YWN0aXZlOmRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dEluYWN0aXZlfTtcbiAgICAgIGJhY2tncm91bmQ6ICR7ZT0+ZS50aGVtZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgICAgIG9wYWNpdHk6IHVuc2V0O1xuICAgIH1cbiAgfVxuYH0sNDkyNTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNDAyMSksdCksbyhuKDk2NDQpLHQpfSwyNjA5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig1OTcxKSx0KX0sNTk3MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRvZ2dsZT12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGE9big2Njg5KSxsPW8obig3NTE4KSkscz1uKDg1MTApLGM9bigxMzM1KTt0LlRvZ2dsZT1lPT57dmFye2lkOnQsbGFiZWw6bixvbkNoYW5nZTpvLGxhYmVsU2lkZTpsPVwicmlnaHRcIix0eXBlOnM9XCJjaGVja2JveFwifT1lLGM9cihlLFtcImlkXCIsXCJsYWJlbFwiLFwib25DaGFuZ2VcIixcImxhYmVsU2lkZVwiLFwidHlwZVwiXSk7Y29uc3RbdixnXT0oMCxhLnVzZVN0YXRlKShjLmNoZWNrZWQpO3JldHVybigwLGEudXNlRWZmZWN0KSgoKCk9PntnKGMuY2hlY2tlZCl9KSxbYy5jaGVja2VkXSksKDAsaS5qc3hzKSh1LE9iamVjdC5hc3NpZ24oe2xhYmVsU2lkZTpsfSx7Y2hpbGRyZW46W24/KDAsaS5qc3gpKGgsT2JqZWN0LmFzc2lnbih7aHRtbEZvcjp0fSx7Y2hpbGRyZW46bn0pKTp2b2lkIDAsKDAsaS5qc3hzKShmLE9iamVjdC5hc3NpZ24oe2lzQ2hlY2tlZDp2fSx7Y2hpbGRyZW46WygwLGkuanN4KShwLE9iamVjdC5hc3NpZ24oe30sYyx7aWQ6dCx0eXBlOnMsb25DaGFuZ2U6ZT0+e2coZS50YXJnZXQuY2hlY2tlZCksbnVsbD09b3x8byhlKX19KSksKDAsaS5qc3gpKGQse3RhYkluZGV4Oi0xLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIixpc0NoZWNrZWQ6dn0pXX0pKV19KSl9O2NvbnN0IHU9bC5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhsYXJnZX07XG4gIGZsZXgtZGlyZWN0aW9uOiAkeyh7bGFiZWxTaWRlOmV9KT0+XCJsZWZ0XCI9PT1lP1wicm93XCI6XCJyb3ctcmV2ZXJzZVwifTtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgueGxhcmdlfTtcbmAsZj0oMCxsLmRlZmF1bHQpKGMuQm94KWBcbiAgLS1weC10b2dnbGU6ICR7KHt0aGVtZTplfSk9PmUucHgueGxhcmdlfTtcbiAgLS1weC1rbm9iOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiB2YXIoLS1weC10b2dnbGUpO1xuICB3aWR0aDogY2FsYygyICogdmFyKC0tcHgtdG9nZ2xlKSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkXG4gICAgJHsoe2lzQ2hlY2tlZDplLHRoZW1lOnR9KT0+ZT90LnBhbGV0dGUuYnJhbmRQcmltYXJ5OnQucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIGJvcmRlci1yYWRpdXM6IGNhbGMoMC41ICogdmFyKC0tcHgtdG9nZ2xlKSk7XG5cbiAgYmFja2dyb3VuZDogJHsoe2lzQ2hlY2tlZDplLHRoZW1lOnR9KT0+ZT90LnBhbGV0dGUuYnJhbmRQcmltYXJ5OnQucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKSxcbiAgICBib3JkZXItY29sb3IgdmFyKC0tLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbik7XG5cbiAgJjpmb2N1cy13aXRoaW4ge1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Rm9jdXNlZH07XG4gIH1cbmAsZD1sLmRlZmF1bHQuYnV0dG9uYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiB2YXIoLS1weC1rbm9iKTtcbiAgaGVpZ2h0OiB2YXIoLS1weC1rbm9iKTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQ6ICR7KHtpc0NoZWNrZWQ6ZSx0aGVtZTp0fSk9PmU/dC5wYWxldHRlLmJyYW5kUHJpbWFyeVRleHQ6dC5wYWxldHRlLmlucHV0Q29sb3J9O1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHRyYW5zaXRpb246IGxlZnQgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKSwgYmFja2dyb3VuZCB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTsgLyogQWxsb3cgcGFzcy10aHJ1IGZvciBuYXRpdmUgaW5wdXQgKi9cbmAscD0oMCxsLmRlZmF1bHQpKHMuUmF3SW5wdXQpYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3BhY2l0eTogMDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBkaXNwbGF5OiBibG9jaztcblxuICAmOmNoZWNrZWQgKyAke2R9IHtcbiAgICBsZWZ0OiBjYWxjKDEwMCUgLSAkeyh7dGhlbWU6ZX0pPT5lLnB4LmxhcmdlfSk7XG4gIH1cbiAgJjpkaXNhYmxlZCArICR7ZH0ge1xuICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgfVxuICAmOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbmAsaD1sLmRlZmF1bHQubGFiZWxgYH0sNTMwMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJhZGdlPXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1vKG4oNzUxOCkpLGw9bigxMzM1KTt0LkJhZGdlPWU9Pnt2YXJ7Y291bnQ6dD0wLG1heDpufT1lLG89cihlLFtcImNvdW50XCIsXCJtYXhcIl0pO2xldCBhPXQudG9TdHJpbmcoKTtyZXR1cm4gbiYmdD5uJiYoYT1gJHtufStgKSwoMCxpLmpzeCkocyxPYmplY3QuYXNzaWduKHt9LG8se2NoaWxkcmVuOmF9KSl9O2NvbnN0IHM9KDAsYS5kZWZhdWx0KShsLkJveClgXG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5zdGF0dXNDcml0aWNhbH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnBpbGx9O1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5fY29sb3Iud2hpdGV9O1xuICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuc21hbGx9O1xuICBtaW4td2lkdGg6ICR7KHt0aGVtZTplfSk9PmUucHgueGxhcmdlfTtcbiAgcGFkZGluZzogMnB4IDZweDtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBib3gtc2hhZG93OiAkeyh7dGhlbWU6ZX0pPT5lLnNoYWRvdy5iYXNlfTtcbmB9LDMxMzY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDUzMDApLHQpfSw2ODk1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksaT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fSxhPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2FsZW5kYXI9dm9pZCAwO2NvbnN0IGw9big1ODkzKSxzPW4oNjY4OSksYz1hKG4oNzUxOCkpLHU9big3MjkyKSxmPW4oNDEzMCksZD1uKDEzMzUpLHA9big5NTA3KSxoPWkobig1Mjk5KSk7dC5DYWxlbmRhcj0oe3ZhbHVlOmUsb25DaGFuZ2U6dCxvbkRpc21pc3M6bn0pPT57Y29uc3Rbcl09KDAscy51c2VTdGF0ZSkoZSksW28saV09KDAscy51c2VTdGF0ZSkoZSksYT0oMCxzLnVzZUNhbGxiYWNrKSgoZT0+e2koZSksbnVsbD09dHx8dChlKX0pLFtdKSxjPSgwLHMudXNlQ2FsbGJhY2spKCgoKT0+e2EociksbnVsbD09bnx8bigpfSksW10pO3JldHVybigwLGwuanN4cykoQyxPYmplY3QuYXNzaWduKHtcImRhdGEtdGVzdGlkXCI6XCJyZWFjdC1jYWxlbmRhclwifSx7Y2hpbGRyZW46WygwLGwuanN4KSh1LkNhbGVuZGFyLHt2YWx1ZTpvLG9uQ2hhbmdlOmEsY2FsZW5kYXJUeXBlOlwiVVNcIixkZWZhdWx0VmlldzpcIm1vbnRoXCIsbWluRGV0YWlsOlwieWVhclwiLG5leHQyTGFiZWw6bnVsbCxwcmV2MkxhYmVsOm51bGwsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczohMCxtaW5EYXRlOm5ldyBEYXRlfSksKDAsbC5qc3hzKSh2LHtjaGlsZHJlbjpbKDAsbC5qc3gpKGcse1wiZGF0YS10ZXN0aWRcIjpcImNhbGVuZGFyLWNhbmNlbC1idXR0b25cIixcImFyaWEtbGFiZWxcIjpcImNhbmNlbC1idXR0b25cIixsYWJlbDpcIkNhbmNlbFwiLHNpemU6XCJiYXNlXCIsa2luZDpcInRleHRPbmx5XCIsb25DbGljazpjfSksKDAsbC5qc3gpKGcse1wiZGF0YS10ZXN0aWRcIjpcImNhbGVuZGFyLWFwcGx5LWJ1dHRvblwiLFwiYXJpYS1sYWJlbFwiOlwiYXBwbHktYnV0dG9uXCIsbGFiZWw6XCJBcHBseVwiLHNpemU6XCJiYXNlXCIsa2luZDpcInByaW1hcnlcIixvbkNsaWNrOm59KV19KV19KSl9O2NvbnN0IHY9KDAsYy5kZWZhdWx0KShkLkJveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfSAwcHhgfTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgbWFyZ2luLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfWB9O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9O1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDZ9O1xuICBib3JkZXItdG9wOiBub25lO1xuYCxnPSgwLGMuZGVmYXVsdCkoZi5CdXR0b24pYFxuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfSAke2UucHguc21hbGx9YH07XG4gIG1hcmdpbi1yaWdodDogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH1gfTtcbmAsQz0oMCxjLmRlZmF1bHQpKGQuQm94KWBcbiAgJHtofVxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmb250LWZhbWlseTogJHtwLkZvbnRTdGFja307XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgLnJlYWN0LWNhbGVuZGFyIHtcbiAgICBtaW4td2lkdGg6IDIzMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH07XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb25fX2Fycm93IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmxhcmdlfTtcbiAgICA6ZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgICB9XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uX19sYWJlbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX3ZpZXdDb250YWluZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH0gIWltcG9ydGFudDtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Q29sb3J9O1xuICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gICAgYWJiciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fdGlsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH0gIWltcG9ydGFudDtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgICBhc3BlY3QtcmF0aW86IDEvMTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgOmRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dEluYWN0aXZlfTtcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICA6aG92ZXIge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICAgIDpob3ZlciB7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5fTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgIH1cbiAgICA6Zm9jdXMge1xuICAgICAgYm9yZGVyOiAycHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX07XG4gICAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgICB9XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX190aWxlLS1ub3cge1xuICAgIGJvcmRlcjogMnB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9ICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX190aWxlLS1hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnlUZXh0fTtcbiAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgICA6Zm9jdXMge1xuICAgICAgYm9yZGVyOiAycHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX07XG4gICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgIH1cbiAgfVxuYH0sOTczNDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNjg5NSksdCl9LDYwNjI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRHJvcGRvd25NZW51PXZvaWQgMDtjb25zdCBvPW4oNTg5MyksaT1uKDY2ODkpLGE9bigxMzM1KSxsPW4oOTYzNCkscz1yKG4oNzUxOCkpLGM9big3MjYxKSx1PW4oMjc5KSxmPW4oMzQ3KTt0LkRyb3Bkb3duTWVudT0oe2xhYmVsOmUsb3B0aW9uczp0PVtbXV0scGxhY2Vob2xkZXI6bj1cIlNlbGVjdCBhbiBvcHRpb25cIixzZWxlY3RlZDpyLG9uT3B0aW9uSG92ZXI6cyxvbkNoYW5nZTp2LHJlbmRlckxhYmVsOmcsZml0Q29udGVudDpDfSk9Pnt2YXIgbSx5O2NvbnN0W3csYl09KDAsaS51c2VTdGF0ZSkoITEpOygwLGkudXNlRWZmZWN0KSgoKCk9PnsxPT09dFswXS5sZW5ndGgmJngoITEpfSksW3RdKTtjb25zdCB4PWU9PntiKG51bGwhPWU/ZTohdyl9LHtmb2N1c2VkT3B0aW9uOl8saGFuZGxlS2V5RG93bjpMfT0oMCxmLnVzZURyb3Bkb3duS2V5Ym9hcmROYXZpZ2F0aW9uKSh0LHIsdyx4LHYpO3JldHVybigwLG8uanN4KShkLE9iamVjdC5hc3NpZ24oe2ZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixvbkJsdXI6ZT0+e2UuY3VycmVudFRhcmdldC5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpfHxiKCExKX0sb25LZXlEb3duOkx9LHtjaGlsZHJlbjooMCxvLmpzeHMpKGEuQm94LE9iamVjdC5hc3NpZ24oe2dhcDpcImJhc2VcIixmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsc3R5bGU6e3dpZHRoOlwiMTAwJVwifX0se2NoaWxkcmVuOltlJiYoMCxvLmpzeCkoXCJsYWJlbFwiLE9iamVjdC5hc3NpZ24oe2h0bWxGb3I6XCJkcm9wZG93bi1idXR0b25cIn0se2NoaWxkcmVuOigwLG8uanN4KShjLk9wdGlvblRpdGxlLHtjaGlsZHJlbjplfSl9KSksKDAsby5qc3hzKShwLHtjaGlsZHJlbjpbZz9nKHJ8fHt0aXRsZTpuLHZhbHVlOm51bGx9LHcseCxfKTooMCxvLmpzeHMpKGgsT2JqZWN0LmFzc2lnbih7cm9sZTpcImNvbWJveGJveFwiLHRhYkluZGV4OjAsXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjpgbWVudS1vcHRpb24tJHtudWxsPT1fP3ZvaWQgMDpfLnZhbHVlfWAsXCJhcmlhLWV4cGFuZGVkXCI6dyxcImFyaWEtaGFzcG9wdXBcIjpcImxpc3Rib3hcIixcImFyaWEtY29udHJvbHNcIjpcImRyb3Bkb3duLWxpc3Rib3hcIixvbkNsaWNrOigpPT54KCksYXM6XCJidXR0b25cIixcImRhdGEtdGVzdGlkXCI6XCJkcm9wZG93bi1idXR0b25cIix0aXRsZTpudWxsIT09KG09bnVsbD09cj92b2lkIDA6ci50aXRsZSkmJnZvaWQgMCE9PW0/bTpufSx7Y2hpbGRyZW46WyhudWxsPT1yP3ZvaWQgMDpyLmljb25VcmwpJiYoMCxvLmpzeCkodS5CdXR0b25JbWFnZSx7c3JjOnIuaWNvblVybH0pLCgwLG8uanN4KShjLk9wdGlvblRpdGxlLE9iamVjdC5hc3NpZ24oe1wiYXJpYS1saXZlXCI6XCJwb2xpdGVcIixcImRhdGEtdGVzdGlkXCI6XCJzZWxlY3RlZC1vcHRpb25cIn0se2NoaWxkcmVuOm51bGwhPT0oeT1udWxsPT1yP3ZvaWQgMDpyLnRpdGxlKSYmdm9pZCAwIT09eT95Om59KSksKDAsby5qc3gpKGwuSWNvbix7aWNvbjp3JiZ0WzBdLmxlbmd0aD4xP1wiQ2hldnJvblVwSWNvblwiOlwiQ2hldnJvbkRvd25JY29uXCJ9KV19KSksdC5sZW5ndGgmJnRbMF0ubGVuZ3RoPjEmJncmJigwLG8uanN4KSh1Lk1lbnUse21lbnVJZDpcImRyb3Bkb3duLWxpc3Rib3hcIixvcHRpb25zOnQsc2VsZWN0ZWQ6cixoYW5kbGVFeHBhbmRNZW51Ongsb25PcHRpb25Ib3ZlcjpzLG9uQ2hhbmdlOnYsZml0Q29udGVudDpDLGZvY3VzZWRPcHRpb246XyxhYnNvbHV0ZVBvc2l0aW9uOiEwfSldfSldfSkpfSkpfTtjb25zdCBkPSgwLHMuZGVmYXVsdCkoYS5Cb3gpYFxuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYCxwPSgwLHMuZGVmYXVsdCkoYS5Cb3gpYGAsaD0oMCxzLmRlZmF1bHQpKGEuQm94KWBcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgYm9yZGVyOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0QmFja2dyb3VuZH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRXZWlnaHQuYm9sZH07XG4gIGdhcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUubGluZUhlaWdodC51aX07XG4gIG91dGxpbmU6IG5vbmU7XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5zbWFsbH1gfTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pO1xuICB3aWR0aDogMTAwJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAke2wuSWNvbn0ge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICB9XG5cbiAgJjpmb2N1cy13aXRoaW4ge1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Rm9jdXNlZH07XG4gIH1cbmB9LDYwMjY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDYwNjIpLHQpLG8obigyNzkpLHQpfSwyNzk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQnV0dG9uSW1hZ2U9dC5NZW51PXZvaWQgMDtjb25zdCBvPW4oNTg5MyksaT1yKG4oNjY4OSkpLGE9cihuKDc1MTgpKSxsPW4oOTYzNCkscz1uKDEzMzUpLGM9big3MjYxKTt0Lk1lbnU9KHtvcHRpb25zOmUsc2VsZWN0ZWQ6bixtZW51SWQ6cixoYW5kbGVFeHBhbmRNZW51OmEsb25PcHRpb25Ib3ZlcjpsLG9uQ2hhbmdlOnMsd2lkdGg6dixoZWlnaHQ6ZyxoZWFkZXI6Qyxmb2N1c2VkT3B0aW9uOm0sYWJzb2x1dGVQb3NpdGlvbjp5fSk9Pntjb25zdCB3PWU9PntudWxsPT1sfHxsKGUpfTtyZXR1cm4oMCxvLmpzeHMpKHUsT2JqZWN0LmFzc2lnbih7cm9sZTpcImxpc3Rib3hcIixmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsb25Nb3VzZUxlYXZlOigpPT57dyhudWxsKX0sXCJkYXRhLXRlc3RpZFwiOlwibWVudVwiLGlkOnIsd2lkdGg6dixoZWlnaHQ6ZyxhYnNvbHV0ZVBvc2l0aW9uOnl9LHtjaGlsZHJlbjpbQyYmKDAsby5qc3hzKShpLmRlZmF1bHQuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxvLmpzeCkoZCx7Y2hpbGRyZW46KDAsby5qc3gpKGMuT3B0aW9uVGl0bGUse2NoaWxkcmVuOkN9KX0pLCgwLG8uanN4KShoLHt9KV19KSxlLm1hcCgoKGUscik9PigwLG8uanN4cykoaS5kZWZhdWx0LkZyYWdtZW50LHtjaGlsZHJlbjpbMCE9PXImJigwLG8uanN4KShoLHt9KSxlLm1hcCgoKGUscik9PigwLG8uanN4cykoZixPYmplY3QuYXNzaWduKHtyb2xlOlwib3B0aW9uXCIsaXNGb2N1c2VkOihudWxsPT1tP3ZvaWQgMDptLnZhbHVlKT09PWUudmFsdWUsXCJhcmlhLXNlbGVjdGVkXCI6KG51bGw9PW4/dm9pZCAwOm4udmFsdWUpPT09ZS52YWx1ZSxhbGlnbkl0ZW1zOlwiY2VudGVyXCIsYXM6XCJidXR0b25cIixcImRhdGEtdGVzdGlkXCI6YG1lbnUtb3B0aW9uLSR7cn1gLGlkOmBtZW51LW9wdGlvbi0ke2UudmFsdWV9YCx0aXRsZTplLnRpdGxlLG9uQ2xpY2s6KCk9PntlLm92ZXJyaWRlT25DbGljaz9lLm92ZXJyaWRlT25DbGljayhlKTpzKGUpLG51bGw9PWF8fGEoKX0sb25Nb3VzZU92ZXI6KCk9PncoZS52YWx1ZSl9LHtjaGlsZHJlbjpbKG51bGw9PWU/dm9pZCAwOmUuaWNvblVybCkmJigwLG8uanN4KSh0LkJ1dHRvbkltYWdlLHtzcmM6ZS5pY29uVXJsLHN0eWxlOnttYXJnaW5SaWdodDpcIjhweFwifX0pLCgwLG8uanN4KShjLk9wdGlvblRpdGxlLHtjaGlsZHJlbjplLnRpdGxlfSksKG51bGw9PW4/dm9pZCAwOm4udmFsdWUpPT09ZS52YWx1ZT8oMCxvLmpzeCkocCx7aWNvbjpcIkNoZWNrSWNvblwifSk6KDAsby5qc3gpKHAse2NoaWxkcmVuOigwLG8uanN4KShvLkZyYWdtZW50LHt9KX0pXX0pLHIpKSldfSxyKSkpXX0pKX07Y29uc3QgdT0oMCxhLmRlZmF1bHQpKHMuQm94KWBcbiAgd2lkdGg6ICR7KHt3aWR0aDplLGZpdENvbnRlbnQ6dH0pPT5lfHwodD9cImZpdC1jb250ZW50XCI6XCIxMDAlXCIpfTtcbiAgbWF4LWhlaWdodDogJHsoe2hlaWdodDplfSk9Pm51bGwhPWU/ZTpcImZpdC1jb250ZW50XCJ9O1xuICB0b3A6ICR7KHt0aGVtZTplfSk9PmBjYWxjKDEwMCUgKyAke2UucHgueHNtYWxsfSlgfTtcbiAgcmlnaHQ6IDA7XG4gIGJveC1zaGFkb3c6IDBweCA0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH07XG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICB6LWluZGV4OiAxMDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgYm9yZGVyOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0QmFja2dyb3VuZH07XG4gIHBvc2l0aW9uOiAkeyh7YWJzb2x1dGVQb3NpdGlvbjplfSk9PmU/XCJhYnNvbHV0ZVwiOlwiaW5pdGlhbFwifTtcbmAsZj0oMCxhLmRlZmF1bHQpKHMuQm94KWBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYm9yZGVyOiAkeyh7aXNGb2N1c2VkOmUsdGhlbWU6dH0pPT5lP2AxcHggc29saWQgJHt0LnBhbGV0dGUuYm9yZGVyTmV1dHJhbH1gOlwiMXB4IHNvbGlkIHRyYW5zcGFyZW50XCJ9O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgb3V0bGluZTogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5zbWFsbH1gfTtcbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQyfTtcbiAgfVxuYCxkPSgwLGEuZGVmYXVsdCkocy5Cb3gpYFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0SGVscH07XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5zbWFsbH1gfTtcbmAscD0oMCxhLmRlZmF1bHQpKGwuSWNvbilgXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuYCxoPSgwLGEuZGVmYXVsdCkocy5Cb3gpYFxuICBib3JkZXItdG9wOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0QmFja2dyb3VuZH07XG5gO3QuQnV0dG9uSW1hZ2U9YS5kZWZhdWx0LmltZ2BcbiAgaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnhsYXJnZX07XG4gIHdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnhsYXJnZX07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbmB9LDcyNjE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC51c2VUb29sdGlwPXQuaXNFbGVtZW50T3ZlcmZsb3duPXQuT3B0aW9uVGl0bGU9dm9pZCAwO2NvbnN0IGk9big1ODkzKSxhPW4oNjY4OSksbD1uKDc3NjkpLHM9big5NTA3KSxjPW8obig3NTE4KSk7dC5PcHRpb25UaXRsZT1lPT57dmFye2NoaWxkcmVuOm59PWUsbz1yKGUsW1wiY2hpbGRyZW5cIl0pO3JldHVybigwLGkuanN4KSh1LE9iamVjdC5hc3NpZ24oe3JlZjooMCx0LnVzZVRvb2x0aXApKG4pfSxvLHtjaGlsZHJlbjpufSkpfTtjb25zdCB1PSgwLGMuZGVmYXVsdCkobC5UZXh0KWBcbiAgJHtzLk1peGlucy50ZXh0T3ZlcmZsb3d9O1xuICBtYXJnaW4tbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuYDtmdW5jdGlvbiBmKGUpe3JldHVybiBlLnNjcm9sbEhlaWdodD5lLmNsaWVudEhlaWdodHx8ZS5zY3JvbGxXaWR0aD5lLmNsaWVudFdpZHRofXQuaXNFbGVtZW50T3ZlcmZsb3duPWYsdC51c2VUb29sdGlwPWU9PigwLGEudXNlQ2FsbGJhY2spKCh0PT57dCYmZSYmZih0KSYmKHQudGl0bGU9ZSl9KSxbXSl9LDcwMDY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5JY29uPXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1vKG4oNzUxOCkpLGw9bigxMzM1KSxzPW4oOTUwNyksYz1uKDM0NzEpLHU9big5NjY5KTt0Lkljb249KDAsYS5kZWZhdWx0KSgoZT0+e3ZhcntpY29uOnQsY2hpbGRyZW46bixzaXplOm89XCJiYXNlXCIsY29udGFpbmVyU2l6ZTphLFwiZGF0YS10ZXN0aWRcIjpsfT1lLHM9cihlLFtcImljb25cIixcImNoaWxkcmVuXCIsXCJzaXplXCIsXCJjb250YWluZXJTaXplXCIsXCJkYXRhLXRlc3RpZFwiXSk7cmV0dXJuKDAsaS5qc3gpKGQsT2JqZWN0LmFzc2lnbih7fSxzLHtpY29uU2l6ZTpvLGNvbnRhaW5lclNpemU6YXx8byxqdXN0aWZ5Q29udGVudDpcImNlbnRlclwiLGFsaWduSXRlbXM6XCJjZW50ZXJcIixcImRhdGEtdGVzdGlkXCI6bH0se2NoaWxkcmVuOnQ/KDAsaS5qc3gpKGYsT2JqZWN0LmFzc2lnbih7YXJpYUxhYmVsOnNbXCJhcmlhLWxhYmVsXCJdLGljb246dH0scykpOm59KSl9KSlgYDtjb25zdCBmPSgwLGEuZGVmYXVsdCkoKGU9Pnt2YXJ7aWNvbjp0LGFyaWFMYWJlbDpufT1lLG89cihlLFtcImljb25cIixcImFyaWFMYWJlbFwiXSk7Y29uc3QgYT1jLkljb25TZXRbdF07cmV0dXJuKDAsaS5qc3gpKGEsT2JqZWN0LmFzc2lnbih7cm9sZTpcImltZ1wiLFwiYXJpYS1sYWJlbFwiOm59LG8pKX0pKWBgLGQ9KDAsYS5kZWZhdWx0KShsLkJveClgXG4gIC8qKlxuICAgKiAxLiBJbml0aWFsaXplIGxvY2FsIHZhcmlhYmxlcyB3aXRoIHJlYXNvbmFibGUgZGVmYXVsdHNcbiAgICovXG4gIC0tcHgtZGVmYXVsdDogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5iYXNlfTtcblxuICAvKipcbiAgICogMi4gSW5qZWN0IHZhcmlhbnRzIC0tID8gV2hhdCBhcmUgVmFyaWFudHNcbiAgICovXG4gICR7KDAscy5nZXRWYXJpYW50Q1NTKSh1LnZhcmlhbnRzLHUuVmFyaWFudC5jb250YWluZXJTaXplKX1cbiAgJHsoMCxzLmdldFZhcmlhbnRDU1MpKHUudmFyaWFudHMsdS5WYXJpYW50Lmljb25TaXplKX1cblxuICB3aWR0aDogdmFyKC0tcHgtY29udGFpbmVyLCB2YXIoLS1weC1kZWZhdWx0KSk7XG4gIGhlaWdodDogdmFyKC0tcHgtY29udGFpbmVyLCB2YXIoLS1weC1kZWZhdWx0KSk7XG5cbiAgLyogU1ZHIEFzc2V0ICovXG4gICYgPiAqLFxuICAke2Z9IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogdmFyKC0tcHgtaWNvbiwgdmFyKC0tcHgtZGVmYXVsdCkpO1xuICAgIGhlaWdodDogdmFyKC0tcHgtaWNvbiwgdmFyKC0tcHgtZGVmYXVsdCkpO1xuICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gIH1cbmB9LDk2Njk6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudmFyaWFudHM9dC5WYXJpYW50PXZvaWQgMDtjb25zdCByPW4oNzUxOCk7dC5WYXJpYW50PXtpY29uU2l6ZTpcImljb25TaXplXCIsY29udGFpbmVyU2l6ZTpcImNvbnRhaW5lclNpemVcIn0sdC52YXJpYW50cz17W3QuVmFyaWFudC5pY29uU2l6ZV06e3hzbWFsbDpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54c21hbGx9O1xuICAgIGAsc21hbGw6ci5jc3NgXG4gICAgICAtLXB4LWljb246ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUuc21hbGx9O1xuICAgIGAsYmFzZTpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5iYXNlfTtcbiAgICBgLGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1pY29uOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLmxhcmdlfTtcbiAgICBgLHhsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54bGFyZ2V9O1xuICAgIGAseHhsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54eGxhcmdlfTtcbiAgICBgLHh4eGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1pY29uOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnh4eGxhcmdlfTtcbiAgICBgfSxbdC5WYXJpYW50LmNvbnRhaW5lclNpemVdOnt4c21hbGw6ci5jc3NgXG4gICAgICAtLXB4LWNvbnRhaW5lcjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54c21hbGx9O1xuICAgIGAsc21hbGw6ci5jc3NgXG4gICAgICAtLXB4LWNvbnRhaW5lcjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5zbWFsbH07XG4gICAgYCxiYXNlOnIuY3NzYFxuICAgICAgLS1weC1jb250YWluZXI6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUuYmFzZX07XG4gICAgYCxsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtY29udGFpbmVyOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLmxhcmdlfTtcbiAgICBgLHhsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtY29udGFpbmVyOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnhsYXJnZX07XG4gICAgYCx4eGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1jb250YWluZXI6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueHhsYXJnZX07XG4gICAgYCx4eHhsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtY29udGFpbmVyOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnh4eGxhcmdlfTtcbiAgICBgfX19LDk2MzQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDcwMDYpLHQpfSw5Mjg1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJlbGxGaWxsZWRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5CZWxsRmlsbGVkSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3hzKShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMjBcIixoZWlnaHQ6XCIyMFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46WygwLG8uanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0xMiAyQzExLjIyOTYgMiAxMC41ODQ1IDIuNTgzNzkgMTAuNTA3OCAzLjM1MDQxQzEwLjQ5NTIgMy40NzY3NyAxMC40MDU3IDMuNTgxNTcgMTAuMjg0NiAzLjYxOTcxQzguMDY1NTQgNC4zMTg1MSA2LjQyMjM4IDYuMzM3OTYgNi4zMDAzMyA4Ljc3ODkzTDYuMTIzODIgMTIuMzA5MUM2LjA5OTM2IDEyLjc5ODIgNS44MTMzMSAxMy4yMzYyIDUuMzc1MyAxMy40NTUyTDQuNjA3MzkgMTMuODM5MkM0LjE0NzYxIDE0LjA2OTEgMy44NTcxOCAxNC41MzkgMy44NTcxOCAxNS4wNTMxVjE2LjI1QzMuODU3MTggMTYuNjI0OCA0LjE2MDk4IDE2LjkyODYgNC41MzU3NSAxNi45Mjg2SDE5LjQ2NDNDMTkuODM5MSAxNi45Mjg2IDIwLjE0MjkgMTYuNjI0OCAyMC4xNDI5IDE2LjI1VjE1LjA1MzFDMjAuMTQyOSAxNC41MzkgMTkuODUyNSAxNC4wNjkxIDE5LjM5MjcgMTMuODM5MkwxOC42MjQ3IDEzLjQ1NTJDMTguMTg2NyAxMy4yMzYyIDE3LjkwMDYgMTIuNzk4MiAxNy44NzYyIDEyLjMwOTFMMTcuNjk5NyA4Ljc3ODkzQzE3LjU3NzYgNi4zMzc5NiAxNS45MzQ0IDQuMzE4NTEgMTMuNzE1NCAzLjYxOTcyQzEzLjU5NDIgMy41ODE1NyAxMy41MDQ4IDMuNDc2NzggMTMuNDkyMiAzLjM1MDQxQzEzLjQxNTUgMi41ODM4IDEyLjc3MDQgMiAxMiAyWlwiLGZpbGw6dH0pLCgwLG8uanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk05LjI4NTcxIDE4LjI4NTdDOS4yODU3MSAxOS43ODQ4IDEwLjUwMDkgMjEgMTIgMjFDMTMuNDk5MSAyMSAxNC43MTQzIDE5Ljc4NDggMTQuNzE0MyAxOC4yODU3TDkuMjg1NzEgMTguMjg1N1pcIixmaWxsOnR9KV19KSl9fSw0NzE4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJlbGxJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5CZWxsSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNy40NzMwNiAxLjIyOTQzQzYuNTE5MyAxLjIyOTQzIDUuODcyOTEgMS45ODM5OSA1LjY1MzcxIDIuNzI2OTdDNS42NTIwNyAyLjcyOTMyIDUuNjQ5MjEgMi43MzMwMyA1LjY0NDg1IDIuNzM3NTZDNS42MzkyIDIuNzQzNDIgNS42MzI2NCAyLjc0ODk2IDUuNjI1OTkgMi43NTM1NUM1LjYxOTI2IDIuNzU4MTkgNS42MTQ1MiAyLjc2MDQgNS42MTMgMi43NjEwMkw1LjYxMjY1IDIuNzYxMTdDNS4wNTA4OCAyLjk5MjUxIDQuMzkxOTMgMy4zNjAyMiAzLjg3Njk3IDQuMDMzNTdDMy4zNTgxNSA0LjcxMTk2IDMuMDE5NDkgNS42NTU3MSAzLjAxOTQ1IDYuOTc3NDlMNS42NTM3MSAyLjcyNjk3TDMuMDE5NDUgNi45Nzc3NkMzLjAxODY2IDguMzAxNjUgMi44Nzg3MSA5LjAzMTMgMi42NzA5MSA5LjUzNDM5QzIuNDg4NzkgOS45NzUzMSAyLjI0ODg5IDEwLjI2NTggMS45MTIgMTAuNjczOEwxLjkxMTg1IDEwLjY3NEMxLjg2MjYzIDEwLjczMzYgMS44MTEzNSAxMC43OTU3IDEuNzU3ODcgMTAuODYxMkMxLjE0OTIzIDExLjYwNiAxLjcyNzI5IDEyLjY0MTkgMi42NTk4NiAxMi42NDE5SDUuMDkwMTlDNS4yMTE5MSAxMi45OCA1LjQwNzI2IDEzLjI5MDYgNS42NjYxOCAxMy41NDk1QzYuMTI4MjcgMTQuMDExNiA2Ljc1NDk5IDE0LjI3MTIgNy40MDg0OCAxNC4yNzEyQzguMDYxOTcgMTQuMjcxMiA4LjY4ODcgMTQuMDExNiA5LjE1MDc4IDEzLjU0OTVDOS40MDk3MSAxMy4yOTA2IDkuNjA1MDUgMTIuOTggOS43MjY3OCAxMi42NDE5SDEyLjI4OTRDMTMuMjIzNCAxMi42NDE5IDEzLjc5MiAxMS42MDA4IDEzLjE4ODQgMTAuODYxM0wxMy4xODgzIDEwLjg2MTJDMTMuMTM0OCAxMC43OTU3IDEzLjA4MzUgMTAuNzMzNiAxMy4wMzQyIDEwLjY3NEMxMi42OTczIDEwLjI2NTkgMTIuNDU3NCA5Ljk3NTQgMTIuMjc1NSA5LjUzNDUxQzEyLjA2NzggOS4wMzE0NyAxMS45MjgyIDguMzAxODIgMTEuOTI4MiA2Ljk3Nzc2QzExLjkyODIgNS42NTY4OCAxMS41ODkxIDQuNzEyOTkgMTEuMDcwMyA0LjAzNDMzQzEwLjU1NTMgMy4zNjA3NSA5Ljg5NjUyIDIuOTkyMzQgOS4zMzQ5OSAyLjc2MTE1TDkuMzM0NjcgMi43NjEwMkM5LjMzNDA5IDIuNzYwNzkgOS4zMjk4MiAyLjc1ODg4IDkuMzIzMTMgMi43NTQyNEM5LjMxNjU1IDIuNzQ5NjcgOS4zMDk4MSAyLjc0Mzk0IDkuMzAzODIgMi43Mzc3QzkuMjk4NzUgMi43MzI0MSA5LjI5NTQ1IDIuNzI4MDMgOS4yOTM2MyAyLjcyNTMxQzkuMDcyNjQgMS45ODM3OCA4LjQyNjkxIDEuMjI5NDMgNy40NzMwNiAxLjIyOTQzWk04LjY4NjU0IDEyLjY0MTlINi4xMzA0MkM2LjE4NzYgMTIuNzI5NSA2LjI1NDAzIDEyLjgxMTUgNi4zMjkxIDEyLjg4NjZDNi42MTUzNyAxMy4xNzI5IDcuMDAzNjMgMTMuMzMzNyA3LjQwODQ4IDEzLjMzMzdDNy44MTMzMyAxMy4zMzM3IDguMjAxNiAxMy4xNzI5IDguNDg3ODcgMTIuODg2NkM4LjU2MjkzIDEyLjgxMTUgOC42MjkzNyAxMi43Mjk1IDguNjg2NTQgMTIuNjQxOVpNNi41NTE0NSAyLjk5NzE2QzYuNjk1NzEgMi41MDA4NSA3LjA3MTIxIDIuMTY2OTMgNy40NzMwNiAyLjE2NjkzQzcuODc0OTIgMi4xNjY5MyA4LjI1MDUgMi41MDA2MSA4LjM5NjYgMi45OTc4NUw4LjM5Njk1IDIuOTk5MDRDOC40ODQ5OSAzLjI5NTc1IDguNzI4NDMgMy41MjUzOCA4Ljk3ODA5IDMuNjI4MDZDOS40NTYyNSAzLjgyNDkyIDkuOTQ4OTQgNC4xMTExOSAxMC4zMjU1IDQuNjAzNzNDMTAuNjk4MiA1LjA5MTE5IDEwLjk5MDcgNS44MjQ4NiAxMC45OTA3IDYuOTc3NzZDMTAuOTkwNyA4LjM1NTA2IDExLjEzMzcgOS4yMjU1IDExLjQwODkgOS44OTIxN0MxMS42NDgzIDEwLjQ3MjMgMTEuOTgyMyAxMC44NzQ5IDEyLjMxNjcgMTEuMjc4QzEyLjM2NTMgMTEuMzM2NiAxMi40MTM5IDExLjM5NTEgMTIuNDYyMiAxMS40NTQyQzEyLjUwMTYgMTEuNTAyNSAxMi41MDQ2IDExLjU1NTIgMTIuNDc5MyAxMS42MDVDMTIuNDU1MyAxMS42NTI0IDEyLjM5OTYgMTEuNzA0NCAxMi4yODk0IDExLjcwNDRIMi42NTk4NkMyLjU0NjA0IDExLjcwNDQgMi40ODk1NSAxMS42NTA5IDIuNDY1ODggMTEuNjA0NUMyLjQ0MTE5IDExLjU1NjIgMi40NDMyNSAxMS41MDQgMi40ODM4IDExLjQ1NDRMMi40ODM4MyAxMS40NTQ0QzIuNTMyMTUgMTEuMzk1MiAyLjU4MDc1IDExLjMzNjYgMi42MjkzNCAxMS4yNzgxTDIuNjI5NDYgMTEuMjc3OUMyLjk2Mzg5IDEwLjg3NDggMy4yOTc4NSAxMC40NzIzIDMuNTM3NCA5Ljg5MjI5QzMuODEyNzMgOS4yMjU3MSAzLjk1NjE1IDguMzU1MzMgMy45NTY5NSA2Ljk3ODAzVjYuOTc3NzZDMy45NTY5NSA1LjgyMzQxIDQuMjQ5MjggNS4wODk5OSA0LjYyMTY1IDQuNjAzMDlDNC45OTc5MiA0LjExMTEgNS40OTA0NCAzLjgyNTM3IDUuOTY5NjMgMy42MjgwNUM2LjIxNjYxIDMuNTI2NDUgNi40NjI1NyAzLjMwMDAyIDYuNTUxMTEgMi45OTgzM0w2LjU1MTQ1IDIuOTk3MTZaXCIsZmlsbDp0LHJvbGU6XCJpbWdcIn0pfSkpfX0sODI2NTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Ccm9rZW5MaW5rSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuQnJva2VuTGlua0ljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4cykoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjMyXCIsaGVpZ2h0OlwiMzJcIix2aWV3Qm94OlwiMCAwIDMyIDMyXCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOlsoMCxvLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNi4zMzM1IDMuNzAwMkM2LjA1NzM1IDMuNzAwMiA1LjgzMzUgMy45MjQwNSA1LjgzMzUgNC4yMDAyVjI3LjgwMDJDNS44MzM1IDI4LjA3NjMgNi4wNTczNSAyOC4zMDAyIDYuMzMzNSAyOC4zMDAySDI1LjY2NjhDMjUuOTQzIDI4LjMwMDIgMjYuMTY2OCAyOC4wNzYzIDI2LjE2NjggMjcuODAwMlYxMi4yMzM1SDE4LjEzMzVDMTcuODU3NCAxMi4yMzM1IDE3LjYzMzUgMTIuMDA5NyAxNy42MzM1IDExLjczMzVWMy43MDAySDYuMzMzNVpNMTguNjMzNSA0LjQwNzNMMjUuNDU5NyAxMS4yMzM1SDE4LjYzMzVWNC40MDczWk00LjgzMzUgNC4yMDAyQzQuODMzNSAzLjM3MTc3IDUuNTA1MDcgMi43MDAyIDYuMzMzNSAyLjcwMDJIMTguMTMzNUMxOC4yNjYxIDIuNzAwMiAxOC4zOTMzIDIuNzUyODcgMTguNDg3IDIuODQ2NjRMMjcuMDIwNCAxMS4zOEMyNy4xMTQxIDExLjQ3MzcgMjcuMTY2OCAxMS42MDA5IDI3LjE2NjggMTEuNzMzNVYyNy44MDAyQzI3LjE2NjggMjguNjI4NiAyNi40OTUzIDI5LjMwMDIgMjUuNjY2OCAyOS4zMDAySDYuMzMzNUM1LjUwNTA3IDI5LjMwMDIgNC44MzM1IDI4LjYyODYgNC44MzM1IDI3LjgwMDJWNC4yMDAyWlwiLGZpbGw6dH0pLCgwLG8uanN4KShcInBhdGhcIix7ZDpcIk0xNC4yNDggMjEuOTA4NFYyMS44NDA5QzE0LjI1MjggMjEuNDAwNiAxNC4yOTY2IDIxLjA1MDIgMTQuMzc5NCAyMC43ODk4QzE0LjQ2NDcgMjAuNTI5NCAxNC41ODU0IDIwLjMxODcgMTQuNzQxNyAyMC4xNTc3QzE0Ljg5NzkgMTkuOTk2NyAxNS4wODYxIDE5Ljg0OTkgMTUuMzA2MyAxOS43MTczQzE1LjQ0ODMgMTkuNjI3NCAxNS41NzYyIDE5LjUyNjggMTUuNjg5OCAxOS40MTU1QzE1LjgwMzQgMTkuMzA0MiAxNS44OTM0IDE5LjE3NjQgMTUuOTU5NyAxOS4wMzJDMTYuMDI2IDE4Ljg4NzUgMTYuMDU5MSAxOC43Mjc3IDE2LjA1OTEgMTguNTUyNkMxNi4wNTkxIDE4LjM0MTkgMTYuMDA5NCAxOC4xNTk2IDE1LjkxIDE4LjAwNTdDMTUuODEwNSAxNy44NTE4IDE1LjY3OCAxNy43MzM0IDE1LjUxMjMgMTcuNjUwNkMxNS4zNDg5IDE3LjU2NTMgMTUuMTY2NiAxNy41MjI3IDE0Ljk2NTQgMTcuNTIyN0MxNC43ODMxIDE3LjUyMjcgMTQuNjA5MSAxNy41NjA2IDE0LjQ0MzQgMTcuNjM2NEMxNC4yNzc2IDE3LjcxMjEgMTQuMTQwMyAxNy44MzA1IDE0LjAzMTQgMTcuOTkxNUMxMy45MjI1IDE4LjE1MDEgMTMuODU5OCAxOC4zNTQ5IDEzLjg0MzIgMTguNjA1OEgxMi43NjM3QzEyLjc4MDIgMTguMTc5NyAxMi44ODggMTcuODE5OCAxMy4wODY4IDE3LjUyNjNDMTMuMjg1NyAxNy4yMzA0IDEzLjU0ODUgMTcuMDA2NiAxMy44NzUyIDE2Ljg1NTFDMTQuMjA0MiAxNi43MDM2IDE0LjU2NzYgMTYuNjI3OCAxNC45NjU0IDE2LjYyNzhDMTUuNDAxIDE2LjYyNzggMTUuNzgyMSAxNi43MDk1IDE2LjEwODggMTYuODcyOUMxNi40MzU1IDE3LjAzMzkgMTYuNjg4OSAxNy4yNTk5IDE2Ljg2ODggMTcuNTUxMUMxNy4wNTExIDE3Ljg0IDE3LjE0MjIgMTguMTc3MyAxNy4xNDIyIDE4LjU2MzJDMTcuMTQyMiAxOC44Mjg0IDE3LjEwMDggMTkuMDY3NSAxNy4wMTc5IDE5LjI4MDVDMTYuOTM1MSAxOS40OTEyIDE2LjgxNjcgMTkuNjc5NSAxNi42NjI4IDE5Ljg0NTJDMTYuNTExMyAyMC4wMTA5IDE2LjMyOSAyMC4xNTc3IDE2LjExNTkgMjAuMjg1NUMxNS45MTQ3IDIwLjQxMSAxNS43NTE0IDIwLjU0MTIgMTUuNjI1OSAyMC42NzYxQzE1LjUwMjggMjAuODExMSAxNS40MTI4IDIwLjk3MDkgMTUuMzU2IDIxLjE1NTVDMTUuMjk5MiAyMS4zNDAyIDE1LjI2ODQgMjEuNTY4NyAxNS4yNjM3IDIxLjg0MDlWMjEuOTA4NEgxNC4yNDhaTTE0Ljc4NDMgMjQuMDY3NUMxNC41OTAxIDI0LjA2NzUgMTQuNDIzMiAyMy45OTg4IDE0LjI4MzYgMjMuODYxNUMxNC4xNDM5IDIzLjcyMTggMTQuMDc0IDIzLjU1MzcgMTQuMDc0IDIzLjM1NzJDMTQuMDc0IDIzLjE2MzEgMTQuMTQzOSAyMi45OTc0IDE0LjI4MzYgMjIuODYwMUMxNC40MjMyIDIyLjcyMDQgMTQuNTkwMSAyMi42NTA2IDE0Ljc4NDMgMjIuNjUwNkMxNC45NzYgMjIuNjUwNiAxNS4xNDE3IDIyLjcyMDQgMTUuMjgxNCAyMi44NjAxQzE1LjQyMzUgMjIuOTk3NCAxNS40OTQ1IDIzLjE2MzEgMTUuNDk0NSAyMy4zNTcyQzE1LjQ5NDUgMjMuNDg3NSAxNS40NjE0IDIzLjYwNyAxNS4zOTUxIDIzLjcxNTlDMTUuMzMxMSAyMy44MjI0IDE1LjI0NTkgMjMuOTA3NyAxNS4xMzk0IDIzLjk3MTZDMTUuMDMyOCAyNC4wMzU1IDE0LjkxNDUgMjQuMDY3NSAxNC43ODQzIDI0LjA2NzVaXCIsZmlsbDp0fSldfSkpfX0sNjQ0NzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DaGV2cm9uRG93bkljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkNoZXZyb25Eb3duSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMjRcIixoZWlnaHQ6XCIyNFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwifSx7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLE9iamVjdC5hc3NpZ24oe2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNS4wNTI4MiA5Ljg4NzA3QzUuMzM2MTIgOS41ODQ4OSA1LjgxMDc1IDkuNTY5NTggNi4xMTI5MyA5Ljg1Mjg3TDEyIDE1LjM3MkwxNy44ODcgOS44NTI4N0MxOC4xODkyIDkuNTY5NTggMTguNjYzOCA5LjU4NDg5IDE4Ljk0NzEgOS44ODcwN0MxOS4yMzA0IDEwLjE4OTMgMTkuMjE1MSAxMC42NjM5IDE4LjkxMjkgMTAuOTQ3MkwxMi41MTI5IDE2Ljk0NzJDMTIuMjI0NCAxNy4yMTc2IDExLjc3NTUgMTcuMjE3NiAxMS40ODcgMTYuOTQ3Mkw1LjA4NzAyIDEwLjk0NzJDNC43ODQ4NCAxMC42NjM5IDQuNzY5NTIgMTAuMTg5MyA1LjA1MjgyIDkuODg3MDdaXCIsZmlsbDp0fSxuKSl9KSl9fSwyMTQ3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoZXZyb25MZWZ0SWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuQ2hldnJvbkxlZnRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIyNFwiLGhlaWdodDpcIjI0XCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCJ9LHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIsT2JqZWN0LmFzc2lnbih7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0xNC4xMTI3IDUuMDUyNzJDMTQuNDE0OSA1LjMzNjAxIDE0LjQzMDIgNS44MTA2NCAxNC4xNDY5IDYuMTEyODJMOC42Mjc4NCAxMS45OTk5TDE0LjE0NjkgMTcuODg2OUMxNC40MzAyIDE4LjE4OTEgMTQuNDE0OSAxOC42NjM3IDE0LjExMjcgMTguOTQ3QzEzLjgxMDYgMTkuMjMwMyAxMy4zMzU5IDE5LjIxNSAxMy4wNTI2IDE4LjkxMjhMNy4wNTI2NCAxMi41MTI4QzYuNzgyMTggMTIuMjI0MyA2Ljc4MjE4IDExLjc3NTQgNy4wNTI2NCAxMS40ODY5TDEzLjA1MjYgNS4wODY5MUMxMy4zMzU5IDQuNzg0NzMgMTMuODEwNiA0Ljc2OTQyIDE0LjExMjcgNS4wNTI3MlpcIixmaWxsOnR9LG4pKX0pKX19LDI0MDI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2hldnJvblJpZ2h0SWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuQ2hldnJvblJpZ2h0SWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMjRcIixoZWlnaHQ6XCIyNFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwifSx7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLE9iamVjdC5hc3NpZ24oe2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNOS44Njk4NiA2LjY2OTcyQzEwLjE2MjggNi4zNzY4MyAxMC42Mzc2IDYuMzc2ODMgMTAuOTMwNSA2LjY2OTcyTDE1LjczMDUgMTEuNDY5N0MxNS44NzEyIDExLjYxMDQgMTUuOTUwMiAxMS44MDExIDE1Ljk1MDIgMTJDMTUuOTUwMiAxMi4xOTkgMTUuODcxMiAxMi4zODk3IDE1LjczMDUgMTIuNTMwNEwxMC45MzA1IDE3LjMzMDRDMTAuNjM3NiAxNy42MjMzIDEwLjE2MjggMTcuNjIzMyA5Ljg2OTg2IDE3LjMzMDRDOS41NzY5NiAxNy4wMzc1IDkuNTc2OTYgMTYuNTYyNiA5Ljg2OTg2IDE2LjI2OTdMMTQuMTM5NSAxMkw5Ljg2OTg2IDcuNzMwMzhDOS41NzY5NiA3LjQzNzQ5IDkuNTc2OTYgNi45NjI2MSA5Ljg2OTg2IDYuNjY5NzJaXCIsZmlsbDp0fSxuKSl9KSl9fSw0ODI1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoZXZyb25VcEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkNoZXZyb25VcEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix3aWR0aDpcIjI0XCIsaGVpZ2h0OlwiMjRcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIn0se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIixPYmplY3QuYXNzaWduKHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTUuMDUyODUgMTQuMTEyOUM1LjMzNjE1IDE0LjQxNTEgNS44MTA3OCAxNC40MzA0IDYuMTEyOTYgMTQuMTQ3MUwxMiA4LjYyODAyTDE3Ljg4NyAxNC4xNDcxQzE4LjE4OTIgMTQuNDMwNCAxOC42NjM5IDE0LjQxNTEgMTguOTQ3MiAxNC4xMTI5QzE5LjIzMDUgMTMuODEwNyAxOS4yMTUxIDEzLjMzNjEgMTguOTEzIDEzLjA1MjhMMTIuNTEzIDcuMDUyODJDMTIuMjI0NSA2Ljc4MjM2IDExLjc3NTUgNi43ODIzNiAxMS40ODcxIDcuMDUyODJMNS4wODcwNSAxMy4wNTI4QzQuNzg0ODcgMTMuMzM2MSA0Ljc2OTU2IDEzLjgxMDcgNS4wNTI4NSAxNC4xMTI5WlwiLGZpbGw6dH0sbikpfSkpfX0sMTI4MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5FeGNsYW1hdGlvbkNpcmNsZWRGaWxsZWRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5MyksaT1uKDc1MTgpLGE9big2Njg5KSxsPW4oMzQ3MSk7dC5FeGNsYW1hdGlvbkNpcmNsZWRGaWxsZWRJY29uPWU9Pnt2YXJ7c2Vjb25kYXJ5Q29sb3I6dCxjb2xvcjpuPVwiY3VycmVudENvbG9yXCJ9PWUscz1yKGUsW1wic2Vjb25kYXJ5Q29sb3JcIixcImNvbG9yXCJdKTtjb25zdCBjPSgwLGEudXNlQ29udGV4dCkoaS5UaGVtZUNvbnRleHQpLnNlbGVjdGVkU2NoZW1lO3JldHVybiB0fHwodD1cImRhcmtcIj09PWM/bC5Db2xvci5kYXJrR3JheTU6bC5Db2xvci53aGl0ZSksKDAsby5qc3hzKShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxN1wiLHZpZXdCb3g6XCIwIDAgMTYgMTdcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0scyx7Y2hpbGRyZW46WygwLG8uanN4KShcInBhdGhcIix7ZDpcIk03Ljk5OTg4IDE1LjMzMTdDMTEuNzcyOSAxNS4zMzE3IDE0LjgzMTYgMTIuMjczMSAxNC44MzE2IDguNTAwMDdDMTQuODMxNiA0LjcyNzA0IDExLjc3MjkgMS42Njg0IDcuOTk5ODggMS42Njg0QzQuMjI2ODYgMS42Njg0IDEuMTY4MjEgNC43MjcwNCAxLjE2ODIxIDguNTAwMDdDMS4xNjgyMSAxMi4yNzMxIDQuMjI2ODYgMTUuMzMxNyA3Ljk5OTg4IDE1LjMzMTdaXCIsZmlsbDpufSksKDAsby5qc3gpKFwibWFza1wiLE9iamVjdC5hc3NpZ24oe2lkOlwicGF0aC0yLWluc2lkZS0xXzZfMjYyMDMzXCIsZmlsbDp0fSx7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTcuOTk5OTMgNC4zNzM4NEM3LjU3NTI1IDQuMzczODQgNy4yMzU2NCA0LjcyNjc2IDcuMjUxOTYgNS4xNTExM0w3LjQyMjk2IDkuNTk3MDZDNy40MzQ4OSA5LjkwNzA4IDcuNjg5NjggMTAuMTUyMyA3Ljk5OTkzIDEwLjE1MjNDOC4zMTAxOSAxMC4xNTIzIDguNTY0OTggOS45MDcwOCA4LjU3NjkgOS41OTcwNkw4Ljc0NzkgNS4xNTExM0M4Ljc2NDIyIDQuNzI2NzYgOC40MjQ2MSA0LjM3Mzg0IDcuOTk5OTMgNC4zNzM4NFpNNy45OTk5MyAxMi42NDA2QzguNDYwMjIgMTIuNjQwNiA4LjgzMzM1IDEyLjI2NzUgOC44MzMzNSAxMS44MDcyQzguODMzMzUgMTEuMzQ2OSA4LjQ2MDIyIDEwLjk3MzggNy45OTk5MyAxMC45NzM4QzcuNTM5NjQgMTAuOTczOCA3LjE2NjUgMTEuMzQ2OSA3LjE2NjUgMTEuODA3MkM3LjE2NjUgMTIuMjY3NSA3LjUzOTY0IDEyLjY0MDYgNy45OTk5MyAxMi42NDA2WlwifSl9KSksKDAsby5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTcuOTk5OTMgNC4zNzM4NEM3LjU3NTI1IDQuMzczODQgNy4yMzU2NCA0LjcyNjc2IDcuMjUxOTYgNS4xNTExM0w3LjQyMjk2IDkuNTk3MDZDNy40MzQ4OSA5LjkwNzA4IDcuNjg5NjggMTAuMTUyMyA3Ljk5OTkzIDEwLjE1MjNDOC4zMTAxOSAxMC4xNTIzIDguNTY0OTggOS45MDcwOCA4LjU3NjkgOS41OTcwNkw4Ljc0NzkgNS4xNTExM0M4Ljc2NDIyIDQuNzI2NzYgOC40MjQ2MSA0LjM3Mzg0IDcuOTk5OTMgNC4zNzM4NFpNNy45OTk5MyAxMi42NDA2QzguNDYwMjIgMTIuNjQwNiA4LjgzMzM1IDEyLjI2NzUgOC44MzMzNSAxMS44MDcyQzguODMzMzUgMTEuMzQ2OSA4LjQ2MDIyIDEwLjk3MzggNy45OTk5MyAxMC45NzM4QzcuNTM5NjQgMTAuOTczOCA3LjE2NjUgMTEuMzQ2OSA3LjE2NjUgMTEuODA3MkM3LjE2NjUgMTIuMjY3NSA3LjUzOTY0IDEyLjY0MDYgNy45OTk5MyAxMi42NDA2WlwiLGZpbGw6dH0pLCgwLG8uanN4KShcInBhdGhcIix7ZDpcIk03LjI1MTk2IDUuMTUxMTNMNS42NDg3NCA1LjIxMjc5TDUuNjQ4NzQgNS4yMTI3OUw3LjI1MTk2IDUuMTUxMTNaTTcuNDIyOTYgOS41OTcwNkw5LjAyNjE4IDkuNTM1NEw5LjAyNjE4IDkuNTM1NEw3LjQyMjk2IDkuNTk3MDZaTTguNTc2OSA5LjU5NzA2TDEwLjE4MDEgOS42NTg3Mkw4LjU3NjkgOS41OTcwNlpNOC43NDc5IDUuMTUxMTNMMTAuMzUxMSA1LjIxMjc5TDEwLjM1MTEgNS4yMTI3OUw4Ljc0NzkgNS4xNTExM1pNOC44NTUxOSA1LjA4OTQ3QzguODczODUgNS41NzQ3IDguNDg1NTMgNS45NzgyNSA3Ljk5OTkzIDUuOTc4MjVWMi43Njk0M0M2LjY2NDk4IDIuNzY5NDMgNS41OTc0NCAzLjg3ODgyIDUuNjQ4NzQgNS4yMTI3OUw4Ljg1NTE5IDUuMDg5NDdaTTkuMDI2MTggOS41MzU0TDguODU1MTkgNS4wODk0N0w1LjY0ODc0IDUuMjEyNzlMNS44MTk3NCA5LjY1ODcyTDkuMDI2MTggOS41MzU0Wk03Ljk5OTkzIDguNTQ3ODZDOC41NTE3NyA4LjU0Nzg2IDkuMDA0OTggOC45ODM5NiA5LjAyNjE4IDkuNTM1NEw1LjgxOTc0IDkuNjU4NzJDNS44NjQ4IDEwLjgzMDIgNi44Mjc1OCAxMS43NTY3IDcuOTk5OTMgMTEuNzU2N1Y4LjU0Nzg2Wk02Ljk3MzY4IDkuNTM1NEM2Ljk5NDg5IDguOTgzOTYgNy40NDgwOSA4LjU0Nzg2IDcuOTk5OTMgOC41NDc4NlYxMS43NTY3QzkuMTcyMjggMTEuNzU2NyAxMC4xMzUxIDEwLjgzMDIgMTAuMTgwMSA5LjY1ODcyTDYuOTczNjggOS41MzU0Wk03LjE0NDY4IDUuMDg5NDdMNi45NzM2OCA5LjUzNTRMMTAuMTgwMSA5LjY1ODcyTDEwLjM1MTEgNS4yMTI3OUw3LjE0NDY4IDUuMDg5NDdaTTcuOTk5OTMgNS45NzgyNUM3LjUxNDM0IDUuOTc4MjUgNy4xMjYwMiA1LjU3NDcgNy4xNDQ2OCA1LjA4OTQ3TDEwLjM1MTEgNS4yMTI3OUMxMC40MDI0IDMuODc4ODIgOS4zMzQ4OSAyLjc2OTQzIDcuOTk5OTMgMi43Njk0M1Y1Ljk3ODI1Wk03LjIyODk1IDExLjgwNzJDNy4yMjg5NSAxMS4zODE0IDcuNTc0MTMgMTEuMDM2MiA3Ljk5OTkzIDExLjAzNjJWMTQuMjQ1QzkuMzQ2MzEgMTQuMjQ1IDEwLjQzNzggMTMuMTUzNiAxMC40Mzc4IDExLjgwNzJINy4yMjg5NVpNNy45OTk5MyAxMi41NzgyQzcuNTc0MTMgMTIuNTc4MiA3LjIyODk1IDEyLjIzMyA3LjIyODk1IDExLjgwNzJIMTAuNDM3OEMxMC40Mzc4IDEwLjQ2MDggOS4zNDYzMSA5LjM2OTM3IDcuOTk5OTMgOS4zNjkzN1YxMi41NzgyWk04Ljc3MDkxIDExLjgwNzJDOC43NzA5MSAxMi4yMzMgOC40MjU3MyAxMi41NzgyIDcuOTk5OTMgMTIuNTc4MlY5LjM2OTM3QzYuNjUzNTUgOS4zNjkzNyA1LjU2MjEgMTAuNDYwOCA1LjU2MjEgMTEuODA3Mkg4Ljc3MDkxWk03Ljk5OTkzIDExLjAzNjJDOC40MjU3MyAxMS4wMzYyIDguNzcwOTEgMTEuMzgxNCA4Ljc3MDkxIDExLjgwNzJINS41NjIxQzUuNTYyMSAxMy4xNTM2IDYuNjUzNTUgMTQuMjQ1IDcuOTk5OTMgMTQuMjQ1VjExLjAzNjJaXCIsZmlsbDp0LG1hc2s6XCJ1cmwoI3BhdGgtMi1pbnNpZGUtMV82XzI2MjAzMylcIn0pXX0pKX19LDY3OTU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRmlsdGVySWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuRmlsdGVySWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMlwiLGhlaWdodDpcIjdcIix2aWV3Qm94OlwiMCAwIDEyIDdcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTQgNi41QzQgNi4zNjczOSA0LjA1MjY4IDYuMjQwMjEgNC4xNDY0NSA2LjE0NjQ1QzQuMjQwMjEgNi4wNTI2OCA0LjM2NzM5IDYgNC41IDZINy41QzcuNjMyNjEgNiA3Ljc1OTc5IDYuMDUyNjggNy44NTM1NSA2LjE0NjQ1QzcuOTQ3MzIgNi4yNDAyMSA4IDYuMzY3MzkgOCA2LjVDOCA2LjYzMjYxIDcuOTQ3MzIgNi43NTk3OSA3Ljg1MzU1IDYuODUzNTVDNy43NTk3OSA2Ljk0NzMyIDcuNjMyNjEgNyA3LjUgN0g0LjVDNC4zNjczOSA3IDQuMjQwMjEgNi45NDczMiA0LjE0NjQ1IDYuODUzNTVDNC4wNTI2OCA2Ljc1OTc5IDQgNi42MzI2MSA0IDYuNVpNMiAzLjVDMiAzLjM2NzM5IDIuMDUyNjggMy4yNDAyMSAyLjE0NjQ1IDMuMTQ2NDVDMi4yNDAyMSAzLjA1MjY4IDIuMzY3MzkgMyAyLjUgM0g5LjVDOS42MzI2MSAzIDkuNzU5NzkgMy4wNTI2OCA5Ljg1MzU1IDMuMTQ2NDVDOS45NDczMiAzLjI0MDIxIDEwIDMuMzY3MzkgMTAgMy41QzEwIDMuNjMyNjEgOS45NDczMiAzLjc1OTc5IDkuODUzNTUgMy44NTM1NUM5Ljc1OTc5IDMuOTQ3MzIgOS42MzI2MSA0IDkuNSA0SDIuNUMyLjM2NzM5IDQgMi4yNDAyMSAzLjk0NzMyIDIuMTQ2NDUgMy44NTM1NUMyLjA1MjY4IDMuNzU5NzkgMiAzLjYzMjYxIDIgMy41Wk0wIDAuNUMwIDAuMzY3MzkyIDAuMDUyNjc4NSAwLjI0MDIxNSAwLjE0NjQ0NyAwLjE0NjQ0N0MwLjI0MDIxNSAwLjA1MjY3ODUgMC4zNjczOTIgMCAwLjUgMEgxMS41QzExLjYzMjYgMCAxMS43NTk4IDAuMDUyNjc4NSAxMS44NTM2IDAuMTQ2NDQ3QzExLjk0NzMgMC4yNDAyMTUgMTIgMC4zNjczOTIgMTIgMC41QzEyIDAuNjMyNjA4IDExLjk0NzMgMC43NTk3ODUgMTEuODUzNiAwLjg1MzU1M0MxMS43NTk4IDAuOTQ3MzIxIDExLjYzMjYgMSAxMS41IDFIMC41QzAuMzY3MzkyIDEgMC4yNDAyMTUgMC45NDczMjEgMC4xNDY0NDcgMC44NTM1NTNDMC4wNTI2Nzg1IDAuNzU5Nzg1IDAgMC42MzI2MDggMCAwLjVaXCIsZmlsbDp0fSl9KSl9fSwxMTc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRmxvcHB5RGlza0ljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkZsb3BweURpc2tJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjEyXCIsaGVpZ2h0OlwiMTJcIix2aWV3Qm94OlwiMCAwIDEyIDEyXCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZDpcIk0xLjg3NSAyLjE4NzVDMS44NzUgMi4xNTI5OCAxLjkwMjk4IDIuMTI1IDEuOTM3NSAyLjEyNUg4LjIzMDM5QzguMjQ2OTcgMi4xMjUgOC4yNjI4NyAyLjEzMTU4IDguMjc0NTkgMi4xNDMzMUw5Ljk4MTY5IDMuODUwNDFDOS45OTM0MSAzLjg2MjEzIDEwIDMuODc4MDMgMTAgMy44OTQ2MVYxMC4xODc1QzEwIDEwLjIyMiA5Ljk3MjAyIDEwLjI1IDkuOTM3NSAxMC4yNUgxLjkzNzVDMS45MDI5OCAxMC4yNSAxLjg3NSAxMC4yMjIgMS44NzUgMTAuMTg3NVYyLjE4NzVaTTEuOTM3NSAxLjI1QzEuNDE5NzMgMS4yNSAxIDEuNjY5NzMgMSAyLjE4NzVWMTAuMTg3NUMxIDEwLjcwNTMgMS40MTk3MyAxMS4xMjUgMS45Mzc1IDExLjEyNUg5LjkzNzVDMTAuNDU1MyAxMS4xMjUgMTAuODc1IDEwLjcwNTMgMTAuODc1IDEwLjE4NzVWMy44OTQ2MUMxMC44NzUgMy42NDU5NyAxMC43NzYyIDMuNDA3NTEgMTAuNjAwNCAzLjIzMTY5TDguODkzMzEgMS41MjQ1OUM4LjcxNzQ5IDEuMzQ4NzcgOC40NzkwMyAxLjI1IDguMjMwMzkgMS4yNUgxLjkzNzVaTTIuODQ5MjQgMy40MDgxQzIuODQ5MjQgMy4yMzc1NCAyLjk4NzUxIDMuMDk5MjcgMy4xNTgwNyAzLjA5OTI3SDcuNDgxNkM3LjY1MjE1IDMuMDk5MjcgNy43OTA0MiAzLjIzNzU0IDcuNzkwNDIgMy40MDgxVjQuNjQzMzlDNy43OTA0MiA0LjgxMzk1IDcuNjUyMTUgNC45NTIyMSA3LjQ4MTYgNC45NTIyMUgzLjE1ODA3QzIuOTg3NTEgNC45NTIyMSAyLjg0OTI0IDQuODEzOTUgMi44NDkyNCA0LjY0MzM5VjMuNDA4MVpNNC41MzY4IDYuNjM5NzdDNC44MjYzOCA2LjM1MDE5IDUuMjE5MTMgNi4xODc1MSA1LjYyODY1IDYuMTg3NTFDNi4wMzgxOCA2LjE4NzUxIDYuNDMwOTMgNi4zNTAxOSA2LjcyMDUxIDYuNjM5NzdDNy4wMTAwOSA2LjkyOTM1IDcuMTcyNzcgNy4zMjIxIDcuMTcyNzcgNy43MzE2M0M3LjE3Mjc3IDguMTQxMTUgNy4wMTAwOSA4LjUzMzkgNi43MjA1MSA4LjgyMzQ4QzYuNDMwOTMgOS4xMTMwNiA2LjAzODE4IDkuMjc1NzQgNS42Mjg2NSA5LjI3NTc0QzUuMjE5MTMgOS4yNzU3NCA0LjgyNjM4IDkuMTEzMDYgNC41MzY4IDguODIzNDhDNC4yNDcyMiA4LjUzMzkgNC4wODQ1NCA4LjE0MTE1IDQuMDg0NTQgNy43MzE2M0M0LjA4NDU0IDcuMzIyMSA0LjI0NzIyIDYuOTI5MzUgNC41MzY4IDYuNjM5NzdaXCIsZmlsbDp0LHJvbGU6XCJpbWdcIn0pfSkpfX0sNTI5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkZyYWdtZW50c0ljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkZyYWdtZW50c0ljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMjBcIixoZWlnaHQ6XCIyMFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTguODAwMDEgNC44MDAwMkg0LjgwMDAxQzMuOTE3NjEgNC44MDAwMiAzLjIwMDAxIDUuNTE3NjIgMy4yMDAwMSA2LjQwMDAyVjEwLjRDMy4yMDAwMSAxMS4yODI0IDMuOTE3NjEgMTIgNC44MDAwMSAxMkg4LjgwMDAxQzkuNjgyNDEgMTIgMTAuNCAxMS4yODI0IDEwLjQgMTAuNFY2LjQwMDAyQzEwLjQgNS41MTc2MiA5LjY4MjQxIDQuODAwMDIgOC44MDAwMSA0LjgwMDAyWk0yMC4zNTkyIDYuNDY4ODJMMTcuNTMxMiAzLjY0MDAyQzE2LjkwOCAzLjAxNjAyIDE1Ljg5MiAzLjAxNjAyIDE1LjI2ODggMy42NDAwMkwxMi40NDA4IDYuNDY4ODJDMTEuODE2OCA3LjA5MjgyIDExLjgxNjggOC4xMDcyMiAxMi40NDA4IDguNzMxMjJMMTUuMjY4OCAxMS41NkMxNS41ODA4IDExLjg3MiAxNS45OTA0IDEyLjAyOCAxNi40IDEyLjAyOEMxNi44MDk2IDEyLjAyOCAxNy4yMTkyIDExLjg3MiAxNy41MzEyIDExLjU2TDIwLjM1OTIgOC43MzEyMkMyMC45ODMyIDguMTA3MjIgMjAuOTgzMiA3LjA5MjgyIDIwLjM1OTIgNi40Njg4MlpNOC44MDAwMSAxMy42SDQuODAwMDFDMy45MTc2MSAxMy42IDMuMjAwMDEgMTQuMzE3NiAzLjIwMDAxIDE1LjJWMTkuMkMzLjIwMDAxIDIwLjA4MjQgMy45MTc2MSAyMC44IDQuODAwMDEgMjAuOEg4LjgwMDAxQzkuNjgyNDEgMjAuOCAxMC40IDIwLjA4MjQgMTAuNCAxOS4yVjE1LjJDMTAuNCAxNC4zMTc2IDkuNjgyNDEgMTMuNiA4LjgwMDAxIDEzLjZaTTE3LjYgMTMuNkgxMy42QzEyLjcxNzYgMTMuNiAxMiAxNC4zMTc2IDEyIDE1LjJWMTkuMkMxMiAyMC4wODI0IDEyLjcxNzYgMjAuOCAxMy42IDIwLjhIMTcuNkMxOC40ODI0IDIwLjggMTkuMiAyMC4wODI0IDE5LjIgMTkuMlYxNS4yQzE5LjIgMTQuMzE3NiAxOC40ODI0IDEzLjYgMTcuNiAxMy42WlwiLGZpbGw6dH0pfSkpfX0sNzc4ODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5MaWdodEJ1bGJGaWxsZWRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5MaWdodEJ1bGJGaWxsZWRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeHMpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMFwiLGhlaWdodDpcIjEyXCIsdmlld0JveDpcIjAgMCAxMCAxMlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjpbKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTEuODMgMS4zMTAwOEMyLjI0NDA5IDAuODkxNjY3IDIuNzM3NjggMC41NjAzMDcgMy4yODE3NCAwLjMzNTUwNEMzLjgyNTgxIDAuMTEwNzAxIDQuNDA5MzQgLTAuMDAzMDAzMzMgNC45OTggMC4wMDEwODI5MUM2LjE4NjI4IC0wLjAwMzEwNzg1IDcuMzI5MDUgMC40NTc3MzMgOC4xODIgMS4yODUwOEM4LjU5ODgxIDEuNjg3MTkgOC45MzA0NiAyLjE2OTAzIDkuMTU3MjMgMi43MDE5NEM5LjM4NCAzLjIzNDg1IDkuNTAxMjUgMy44MDc5MyA5LjUwMiA0LjM4NzA4QzkuNTAyIDUuNjgwMDggOC45MTcgNi44MzAwOCA3Ljg4MyA3LjgyNTA4TDcuNTc3IDkuMDAwMDhIMi40NjZMMi4yMzYgOC4wMzcwOEMxLjE1NCA2LjkwNzA4IDAuNTU2IDUuODE5MDggMC41IDQuNTgyMDhWNC41NDQwOEMwLjU0IDMuMjQ4MDggMS4wMzMgMi4xMjEwOCAxLjgzMSAxLjMxMTA4TDEuODMgMS4zMTAwOFpcIixmaWxsOnR9KSwoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNMi43MDQxIDEwTDIuOTM3MSAxMC45NzhMMi45NDUxIDExQzMuMDQ1MSAxMS4yOTcgMy4yMzcxIDExLjU0NCAzLjQ3OTEgMTEuNzE3QzMuNzMwMSAxMS44OTcgNC4wMzcxIDExLjk5OSA0LjM2MTEgMTEuOTk5SDQuMzYzMUw1Ljc0NjEgMTEuOTk1TDUuNzY3MSAxMS45OTNDNi4wNzU4NyAxMS45NjY5IDYuMzY5MTMgMTEuODQ2NSA2LjYwNzEgMTEuNjQ4QzYuODM4MSAxMS40NTQgNy4wMTMxIDExLjE4OCA3LjA4NzEgMTAuODc0TDcuMzE2MSAxMEgyLjcwNDFWMTBaXCIsZmlsbDp0fSldfSkpfX0sMzcwMzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5MaWdodEJ1bGJPdXRsaW5lZEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkxpZ2h0QnVsYk91dGxpbmVkSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMFwiLGhlaWdodDpcIjEyXCIsdmlld0JveDpcIjAgMCAxMCAxMlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNNC45OTc2NiAwLjAwMTAwMTQ5QzMuNzY4NjYgMC4wMDEwMDE0OSAyLjY0NzY2IDAuNDgyMDAyIDEuODI5NjYgMS4zMTFDMS4wMzE2NiAyLjEyMSAwLjUzOTY1NyAzLjI0OCAwLjQ5OTY1NyA0LjU0NEwwLjQ5ODY1NyA0LjU2M1Y0LjU4M0MwLjU1NTY1NyA1LjgxOSAxLjE1MzY2IDYuOTA3IDIuMjM1NjYgOC4wMzdMMi45Mzc2NiAxMC45NzhMMi45NDQ2NiAxMUMzLjA0NDY2IDExLjI5NyAzLjIzNjY2IDExLjU0NCAzLjQ3ODY2IDExLjcxN0MzLjcyOTY2IDExLjg5NyA0LjAzNjY2IDExLjk5OSA0LjM2MTY2IDExLjk5OUw1Ljc0NTY2IDExLjk5NUw1Ljc2NjY2IDExLjk5M0M2LjA3NTQyIDExLjk2NjkgNi4zNjg2OSAxMS44NDY1IDYuNjA2NjYgMTEuNjQ4QzYuODM3NjYgMTEuNDU0IDcuMDEyNjYgMTEuMTg4IDcuMDg2NjYgMTAuODc0TDcuODgyNjYgNy44MjRDOC45MTY2NiA2LjgzIDkuNTAwNjYgNS42OCA5LjUwMDY2IDQuMzg3QzkuNDk5OTEgMy44MDc4NSA5LjM4MjY2IDMuMjM0NzcgOS4xNTU4OSAyLjcwMTg2QzguOTI5MTIgMi4xNjg5NSA4LjU5NzQ2IDEuNjg3MTEgOC4xODA2NiAxLjI4NUM3LjMyNzk2IDAuNDU3ODk0IDYuMTg1NTkgLTAuMDAyOTI3ODggNC45OTc2NiAwLjAwMTAwMTQ5Wk0yLjU0MjY2IDIuMDEzQzIuODYzNDQgMS42ODg3MSAzLjI0NTk2IDEuNDMxOTggMy42Njc2MiAxLjI1OEM0LjA4OTI4IDEuMDg0MDEgNC41NDE1MyAwLjk5NjI4MyA0Ljk5NzY2IDFDNS45MjUxNCAwLjk5NTc4NCA2LjgxNzQ0IDEuMzU0NzEgNy40ODM2NiAyQzcuODA0NzEgMi4zMDkwNCA4LjA2MDIzIDIuNjc5NTcgOC4yMzQ5NiAzLjA4OTUxQzguNDA5NjkgMy40OTk0NSA4LjUwMDA1IDMuOTQwMzggOC41MDA2NiA0LjM4NkM4LjUwMDY2IDUuMzc3IDguMDQ3NjYgNi4zMTIgNy4wOTY2NiA3LjE5MUw2Ljk4ODY2IDcuMjkxTDYuNTQyNjYgOUgzLjQ5MzY2TDMuMTQ0NjYgNy41MzZMMy4wNDc2NiA3LjQzNkMxLjk5OTY2IDYuMzcyIDEuNTQ3NjYgNS40OCAxLjQ5ODY2IDQuNTU3QzEuNTM2NjYgMy41MDkgMS45MzI2NiAyLjYzMiAyLjU0MjY2IDIuMDE0VjIuMDEzWk0zLjczMjY2IDEwSDYuMjgyNjZMNi4xMTc2NiAxMC42MjdMNi4xMTQ2NiAxMC42NEM2LjA5MjExIDEwLjczNDIgNi4wMzk0NCAxMC44MTg1IDUuOTY0NjYgMTAuODhDNS44ODg3MyAxMC45NDM1IDUuNzk1OTUgMTAuOTgzNCA1LjY5NzY2IDEwLjk5NUw0LjM2MDY2IDExQzQuMjUzMjEgMTEuMDAwMyA0LjE0ODMzIDEwLjk2NzEgNC4wNjA2NiAxMC45MDVDMy45ODc3IDEwLjg1MzYgMy45MzEzOSAxMC43ODIgMy44OTg2NiAxMC42OTlMMy43MzE2NiAxMEgzLjczMjY2WlwiLGZpbGw6dH0pfSkpfX0sODMxMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Mb2NrZWRDbG9zZWRGaWxsZWRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5Mb2NrZWRDbG9zZWRGaWxsZWRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZDpcIk01LjAwMDAzIDQuNjM2MjNDNS4wMDAwMyAzLjc2MDUyIDUuMjQyMjIgMy4xMDU2MSA1LjY0MzI3IDIuNjczNzhDNi4wMzkzOCAyLjI0NzI3IDYuNjQ1ODUgMS45Nzg1MiA3LjUwMTQzIDEuOTc4NTJDOC4zNTc0OCAxLjk3ODUyIDguOTYzMDkgMi4yNDY3MyA5LjM1ODI3IDIuNjcyM0M5Ljc1ODQxIDMuMTAzMjEgMTAgMy43NTcyOSAxMCA0LjYzMzQ2VjYuNTAwMjFIMTFWNC42MzM0NkMxMSAzLjU3OTE3IDEwLjcwNzYgMi42NTU3OCAxMC4wOTExIDEuOTkxODNDOS40Njk1NSAxLjMyMjU0IDguNTc1ODYgMC45Nzg1MTYgNy41MDE0MyAwLjk3ODUxNkM2LjQyNjc4IDAuOTc4NTE2IDUuNTMyNTUgMS4zMjM1IDQuOTEwNTIgMS45OTMyOEM0LjI5MzQyIDIuNjU3NzUgNC4wMDAwMyAzLjU4MTY5IDQuMDAwMDMgNC42MzYyM1Y2LjUwMDIxSDUuMDAwMDNWNC42MzYyM1pNMyA2LjUwMDIxQzIuNzIzODYgNi41MDAyMSAyLjUgNi43MjQwNyAyLjUgNy4wMDAyMVYxMy4wMDAyQzIuNSAxMy4yNzY0IDIuNzIzODYgMTMuNTAwMiAzIDEzLjUwMDJIMTJDMTIuMjc2MSAxMy41MDAyIDEyLjUgMTMuMjc2NCAxMi41IDEzLjAwMDJWNy4wMDAyMUMxMi41IDYuNzI0MDcgMTIuMjc2MSA2LjUwMDIxIDEyIDYuNTAwMjFIM1pcIixmaWxsOnQscm9sZTpcImltZ1wifSl9KSl9fSw1NzI5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk1pbmltaXplSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuTWluaW1pemVJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0yLjE2NjAyIDEyQzIuMTY2MDIgMTEuNzIzOSAyLjM4OTg3IDExLjUgMi42NjYwMiAxMS41SDEzLjMzMjdDMTMuNjA4OCAxMS41IDEzLjgzMjcgMTEuNzIzOSAxMy44MzI3IDEyQzEzLjgzMjcgMTIuMjc2MSAxMy42MDg4IDEyLjUgMTMuMzMyNyAxMi41SDIuNjY2MDJDMi4zODk4NyAxMi41IDIuMTY2MDIgMTIuMjc2MSAyLjE2NjAyIDEyWlwiLGZpbGw6dCxyb2xlOlwiaW1nXCJ9KX0pKX19LDM3OTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5PcGVuRmluSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuT3BlbkZpbkljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTE0LjI2ODUgNS43MzkxNkMxNC4xNzg1IDUuNjQ5MDYgMTQuMDgxNyA1LjU2NTkyIDEzLjk3OSA1LjQ5MDQ3TDEzLjk0MTIgNS40NjQyOUMxMy45MTk2IDUuNDQ5MTkgMTMuODk4NCA1LjQzMzU4IDEzLjg3NjMgNS40MTg5OEMxMy44NTQxIDUuNDA0MzggMTMuODI4NCA1LjM4ODc4IDEzLjgwNDggNS4zNzQxOEwxMy43NzE1IDUuMzUzNTRDMTMuNzQxOCA1LjMzNTkyIDEzLjcxMTYgNS4zMTkzIDEzLjY4MTQgNS4zMDMxOUwxMy42NjM4IDUuMjkzNjNDMTMuMzA2NSA1LjEwNjE4IDEyLjkwOTEgNS4wMDgwNyAxMi41MDU3IDUuMDA3NjhDMTEuODQxNyA1LjAwNzE1IDExLjIwNTIgNC43NDI5MSAxMC43MzYyIDQuMjczMUMxMC4yNjcxIDMuODAzMyAxMC4wMDQgMy4xNjY0MiAxMC4wMDQ2IDIuNTAyNjJDMTAuMDA2NSAxLjQ5MjIyIDkuMzk5MzMgMC41ODAyMTkgOC40NjYzNCAwLjE5MTkxMUM3LjUzMzM1IC0wLjE5NjM5NyA2LjQ1ODI2IDAuMDE1NDY2IDUuNzQyNDQgMC43Mjg3MDFDNS4wMjY2MSAxLjQ0MTk0IDQuODExMDMgMi41MTYwNyA1LjE5NjIxIDMuNDUwMkM1LjU4MTQgNC4zODQzMyA2LjQ5MTUgNC45OTQ0NyA3LjUwMjEgNC45OTYxQzguMTY2MDMgNC45OTY2NCA4LjgwMjU2IDUuMjYwODggOS4yNzE2MSA1LjczMDY4QzkuNzQwNjYgNi4yMDA0OSAxMC4wMDM4IDYuODM3MzYgMTAuMDAzMSA3LjUwMTE3QzEwLjAwMjYgOC4xNjQ5NyA5LjczODMgOC44MDEzNyA5LjI2ODQgOS4yNzAzMkM4Ljc5ODUgOS43MzkyOCA4LjE2MTUgMTAuMDAyNCA3LjQ5NzU2IDEwLjAwMTdDNi44MzQxMyAxMC4wMDIyIDYuMTk3NzIgOS43Mzg5NCA1LjcyODY1IDkuMjY5ODdDNS4yNTk1OCA4LjgwMDggNC45OTYzNiA4LjE2NDQ3IDQuOTk3MDMgNy41MDExN0M0Ljk5NzAzIDYuMTIxNTUgMy44Nzg0MSA1LjAwMzE1IDIuNDk4NTIgNS4wMDMxNUMxLjExODYyIDUuMDAzMTUgMCA2LjEyMTU1IDAgNy41MDExN0MwIDguODgwNzggMS4xMTg2MiA5Ljk5OTE4IDIuNDk4NTIgOS45OTkxOEMzLjg3ODQxIDkuOTk5MTggNC45OTcwMyAxMS4xMTc2IDQuOTk3MDMgMTIuNDk3MkM0Ljk5NzAzIDEzLjg3OTUgNi4xMTc4IDE1IDcuNTAwMzMgMTVDOC44ODI4NyAxNSAxMC4wMDM2IDEzLjg3OTUgMTAuMDAzNiAxMi40OTcyQzEwLjAwMzYgMTEuMTE3NiAxMS4xMjIzIDkuOTk5MTggMTIuNTAyMSA5Ljk5OTE4QzEyLjk0ODIgOS45OTk0OCAxMy4zODYyIDkuODgwMjIgMTMuNzcwNSA5LjY1MzgzQzEzLjgwMzggOS42MzQyIDEzLjgzNjUgOS42MTM1NiAxMy44NzEyIDkuNTkyNDFMMTMuODc4MyA5LjU4Nzg4QzEzLjkwODUgOS41Njc3NSAxMy45Mzg3IDkuNTQ2NiAxMy45Njc5IDkuNTI1NDZMMTMuOTgxIDkuNTE2NEMxNC4wMDcyIDkuNDk3MjcgMTQuMDMxNCA5LjQ3NjYyIDE0LjA1OTEgOS40NTU5OEwxNC4wODEyIDkuNDM4ODdDMTQuMTA1NCA5LjQxOTIzIDE0LjEyODYgOS4zOTg1OSAxNC4xNTIyIDkuMzc3OTVMMTQuMTc3OSA5LjM1NThDMTQuMjA4MSA5LjMyODYyIDE0LjIzNzggOS4zMDA0MiAxNC4yNjcgOS4yNzEyM0wxNC4yNzE2IDkuMjY3MkMxNC4zNzk0IDkuMTU4ODcgMTQuNDc3MiA5LjA0MDkxIDE0LjU2MzYgOC45MTQ4QzE0LjU4MjQgOC44ODc2MSAxNC42MDA1IDguODYwMDkgMTQuNjE4IDguODMyMjNDMTUuMjM3IDcuODQ1ODQgMTUuMDkyIDYuNTYyNjcgMTQuMjY4NSA1LjczOTE2WlwiLGZpbGw6dCxyb2xlOlwiaW1nXCJ9KX0pKX19LDE1Mzk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuU3RhY2tJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5TdGFja0ljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMjBcIixoZWlnaHQ6XCIyMFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTE0LjIxNzggMy4wMDA5MkMxNC4xNTA0IDMuMDA1MTQgMTQuMDgzOSAzLjAxODQ0IDE0LjAyIDMuMDQwNDdMMy41MTk4NiA2LjQyODdDMy4zNjg2NCA2LjQ3NzQzIDMuMjM2ODEgNi41NzI5MSAzLjE0MzM1IDYuNzAxMzhDMy4wNDk4OSA2LjgyOTg2IDIuOTk5NjQgNi45ODQ2OSAyLjk5OTgzIDcuMTQzNTZWMTUuNzU0QzIuOTk4NDMgMTUuODUzNCAzLjAxNjc5IDE1Ljk1MjEgMy4wNTM4NSAxNi4wNDQzQzMuMDkwOTEgMTYuMTM2NiAzLjE0NTkzIDE2LjIyMDUgMy4yMTU3MSAxNi4yOTEzQzMuMjg1NSAxNi4zNjIxIDMuMzY4NjUgMTYuNDE4MyAzLjQ2MDM1IDE2LjQ1NjZDMy41NTIwNCAxNi40OTUgMy42NTA0NSAxNi41MTQ3IDMuNzQ5ODQgMTYuNTE0N0MzLjg0OTI0IDE2LjUxNDcgMy45NDc2NCAxNi40OTUgNC4wMzkzNCAxNi40NTY2QzQuMTMxMDMgMTYuNDE4MyA0LjIxNDE5IDE2LjM2MjEgNC4yODM5NyAxNi4yOTEzQzQuMzUzNzUgMTYuMjIwNSA0LjQwODc4IDE2LjEzNjYgNC40NDU4NCAxNi4wNDQzQzQuNDgyOSAxNS45NTIxIDQuNTAxMjYgMTUuODUzNCA0LjQ5OTg1IDE1Ljc1NFY3LjY4ODQ5TDE0LjQ4IDQuNDY3MjVDMTQuNjQ5IDQuNDE1MjkgMTQuNzk0MiA0LjMwNTMyIDE0Ljg5IDQuMTU2NzRDMTQuOTg1OCA0LjAwODE1IDE1LjAyNiAzLjgzMDUgMTUuMDAzNiAzLjY1NTE0QzE0Ljk4MTIgMy40Nzk3NyAxNC44OTc1IDMuMzE3OTcgMTQuNzY3NCAzLjE5ODI3QzE0LjYzNzMgMy4wNzg1NyAxNC40NjkxIDMuMDA4NjggMTQuMjkyNSAzLjAwMDkyQzE0LjI2NzYgMi45OTk2NyAxNC4yNDI3IDIuOTk5NjcgMTQuMjE3OCAzLjAwMDkyWk0xNy4yMTc4IDUuMjUwOTVDMTcuMTUwNCA1LjI1NTE3IDE3LjA4MzkgNS4yNjg0OCAxNy4wMjAxIDUuMjkwNUw2LjUxOTkgOC42Nzg3NEM2LjM2ODY5IDguNzI3NDYgNi4yMzY4NSA4LjgyMjk0IDYuMTQzMzkgOC45NTE0MkM2LjA0OTkzIDkuMDc5ODkgNS45OTk2OCA5LjIzNDcyIDUuOTk5ODggOS4zOTM1OVYxOC4wMDQxQzUuOTk4NDcgMTguMTAzNSA2LjAxNjgzIDE4LjIwMjEgNi4wNTM4OSAxOC4yOTQ0QzYuMDkwOTUgMTguMzg2NiA2LjE0NTk3IDE4LjQ3MDUgNi4yMTU3NiAxOC41NDEzQzYuMjg1NTQgMTguNjEyMSA2LjM2ODcgMTguNjY4MyA2LjQ2MDM5IDE4LjcwNjZDNi41NTIwOSAxOC43NDUgNi42NTA0OSAxOC43NjQ4IDYuNzQ5ODkgMTguNzY0OEM2Ljg0OTI4IDE4Ljc2NDggNi45NDc2OSAxOC43NDUgNy4wMzkzOCAxOC43MDY2QzcuMTMxMDggMTguNjY4MyA3LjIxNDIzIDE4LjYxMjEgNy4yODQwMiAxOC41NDEzQzcuMzUzOCAxOC40NzA1IDcuNDA4ODIgMTguMzg2NiA3LjQ0NTg4IDE4LjI5NDRDNy40ODI5NCAxOC4yMDIxIDcuNTAxMyAxOC4xMDM1IDcuNDk5OSAxOC4wMDQxVjkuOTM4NTJMMTcuNDggNi43MTcyOEMxNy42NDkgNi42NjUzMyAxNy43OTQyIDYuNTU1MzUgMTcuODkgNi40MDY3N0MxNy45ODU4IDYuMjU4MTggMTguMDI2MSA2LjA4MDU0IDE4LjAwMzYgNS45MDUxN0MxNy45ODEyIDUuNzI5ODEgMTcuODk3NiA1LjU2OCAxNy43Njc1IDUuNDQ4M0MxNy42Mzc0IDUuMzI4NjEgMTcuNDY5MSA1LjI1ODcxIDE3LjI5MjUgNS4yNTA5NUMxNy4yNjc2IDUuMjQ5NzEgMTcuMjQyNyA1LjI0OTcxIDE3LjIxNzggNS4yNTA5NVpNMjAuMTkzIDcuNTA1MzhDMjAuMTM0NCA3LjUwOTgyIDIwLjA3NTggNy41MjE5NyAyMC4wMTg2IDcuNTQwNTNMOS41MTg0OCAxMC45Mjg4QzkuMjA5NDggMTEuMDI5MyA4Ljk5OTkyIDExLjMxODEgOC45OTk5MiAxMS42NDM2VjIwLjI1NDFDOC45OTk5MiAyMC40OTc5IDkuMTE4MjkgMjAuNzI2MiA5LjMxNzggMjAuODY2NEM5LjQ0NjA1IDIwLjk1NzIgOS41OTY5MyAyMS4wMDQxIDkuNzQ5OTMgMjEuMDA0MUM5LjgzNDY4IDIxLjAwNDEgOS45MjAxNCAyMC45ODk0IDEwLjAwMTkgMjAuOTYwMkwyMC41MDIgMTcuMjEwMUMyMC44MDA2IDE3LjEwNDQgMjEuMDAwMSAxNi44MjEzIDIxLjAwMDEgMTYuNTA0VjguMjUzOTJDMjEuMDAwMSA4LjAxNDY3IDIwLjg4NTMgNy43ODkyMiAyMC42OTEgNy42NDc0N0MyMC41NDU5IDcuNTQxNzIgMjAuMzY4OCA3LjQ5MjA1IDIwLjE5MyA3LjUwNTM4WlwiLGZpbGw6dH0pfSkpfX0sNDAyMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5TdG9yZWZyb250SWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuU3RvcmVmcm9udEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMjBcIixoZWlnaHQ6XCIyMFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTUgM0M0LjQ0OCAzIDQgMy40NDggNCA0QzQgNC41NTIgNC40NDggNSA1IDVIMTlDMTkuNTUyIDUgMjAgNC41NTIgMjAgNEMyMCAzLjQ0OCAxOS41NTIgMyAxOSAzSDVaTTQuNjE3MTkgN0M0LjIzODE5IDcgMy44OTM2MSA3LjIxMzczIDMuNzI0NjEgNy41NTI3M0wyLjEwNTQ3IDEwLjc4OTFDMi4wMzU0NyAxMC45MjgxIDIgMTEuMDgxMyAyIDExLjIzNjNWMTJDMiAxMi41NTIgMi40NDggMTMgMyAxM1YxOUMzIDIwLjEwNSAzLjg5NSAyMSA1IDIxSDE5QzIwLjEwNSAyMSAyMSAyMC4xMDUgMjEgMTlWMTNDMjEuNTUyIDEzIDIyIDEyLjU1MiAyMiAxMlYxMS4yMzYzQzIyIDExLjA4MTMgMjEuOTY0NSAxMC45MjgxIDIxLjg5NDUgMTAuNzg5MUwyMC4yNzU0IDcuNTUyNzNDMjAuMTA2NCA3LjIxMzczIDE5Ljc2MTggNyAxOS4zODI4IDdINC42MTcxOVpNNiAxM0gxOEMxOC41NTIgMTMgMTkgMTMuNDQ4IDE5IDE0VjE4QzE5IDE4LjU1MiAxOC41NTIgMTkgMTggMTlINkM1LjQ0OCAxOSA1IDE4LjU1MiA1IDE4VjE0QzUgMTMuNDQ4IDUuNDQ4IDEzIDYgMTNaXCIsZmlsbDp0fSl9KSl9fSw3OTM3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LldvcmtzcGFjZUljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LldvcmtzcGFjZUljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4cykoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIscm9sZTpcImltZ1wifSxuLHtjaGlsZHJlbjpbKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTYuNzM4MTEgMi44MTI1SDMuNTMxMzdDMy4xMzQ0MiAyLjgxMjUgMi44MTI2MiAzLjEzNDMgMi44MTI2MiAzLjUzMTI1VjcuNTEyMDRDMi44MTI2MiA3LjkwOSAzLjEzNDQyIDguMjMwNzkgMy41MzEzNyA4LjIzMDc5SDYuNzM4MTFDNy4xMzUwNiA4LjIzMDc5IDcuNDU2ODYgNy45MDkgNy40NTY4NiA3LjUxMjA0VjMuNTMxMjVDNy40NTY4NiAzLjEzNDMgNy4xMzUwNiAyLjgxMjUgNi43MzgxMSAyLjgxMjVaXCIsZmlsbDp0fSksKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTEyLjE1NjUgNi4yNjc1OEg4Ljk0OTcxQzguNzUxMjMgNi4yNjc1OCA4LjU5MDMzIDYuNDI4NDggOC41OTAzMyA2LjYyNjk2VjExLjM4MThDOC41OTAzMyAxMS41ODAzIDguNzUxMjMgMTEuNzQxMiA4Ljk0OTcxIDExLjc0MTJIMTIuMTU2NUMxMi4zNTQ5IDExLjc0MTIgMTIuNTE1OCAxMS41ODAzIDEyLjUxNTggMTEuMzgxOFY2LjYyNjk2QzEyLjUxNTggNi40Mjg0OCAxMi4zNTQ5IDYuMjY3NTggMTIuMTU2NSA2LjI2NzU4WlwiLHN0cm9rZTp0LHN0cm9rZVdpZHRoOlwiMC43MTg3NTNcIn0pLCgwLG8uanN4KShcInBhdGhcIix7ZDpcIk0xMi4xNTY0IDIuODEyNUg4Ljk0OTcxQzguNTUyNzUgMi44MTI1IDguMjMwOTYgMy4xMzQzIDguMjMwOTYgMy41MzEyNVY0LjQxNTg3QzguMjMwOTYgNC44MTI4MyA4LjU1Mjc1IDUuMTM0NjMgOC45NDk3MSA1LjEzNDYzSDEyLjE1NjRDMTIuNTUzNCA1LjEzNDYzIDEyLjg3NTIgNC44MTI4MyAxMi44NzUyIDQuNDE1ODdWMy41MzEyNUMxMi44NzUyIDMuMTM0MyAxMi41NTM0IDIuODEyNSAxMi4xNTY0IDIuODEyNVpcIixmaWxsOnR9KSwoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNNi43Mzc5OCA5LjAwNDg4SDMuNTMxMjVDMy4xMzQzIDkuMDA0ODggMi44MTI1IDkuMzI2NjggMi44MTI1IDkuNzIzNjRWMTEuMzgyM0MyLjgxMjUgMTEuNzc5MyAzLjEzNDMgMTIuMTAxMSAzLjUzMTI1IDEyLjEwMTFINi43Mzc5OEM3LjEzNDk0IDEyLjEwMTEgNy40NTY3NCAxMS43NzkzIDcuNDU2NzQgMTEuMzgyM1Y5LjcyMzY0QzcuNDU2NzQgOS4zMjY2OCA3LjEzNDk0IDkuMDA0ODggNi43Mzc5OCA5LjAwNDg4WlwiLGZpbGw6dH0pXX0pKX19LDI3NzI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDM3OSksdCksbyhuKDQ3MTgpLHQpLG8obig3OTM3KSx0KSxvKG4oODMxMSksdCksbyhuKDU3MjkpLHQpLG8obig3Nzg4KSx0KSxvKG4oMzcwMyksdCksbyhuKDY3OTUpLHQpLG8obig4MjY1KSx0KSxvKG4oMTE3KSx0KSxvKG4oMTUzOSksdCksbyhuKDkyODUpLHQpLG8obig0MDIwKSx0KSxvKG4oNTI5KSx0KSxvKG4oMjQwMiksdCksbyhuKDIxNDcpLHQpLG8obig0ODI1KSx0KSxvKG4oNjQ0NyksdCksbyhuKDEyODEpLHQpfSwzMTE3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuSWNvbldpdGhCYWRnZT12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGE9byhuKDc1MTgpKSxsPW4oNzAwNikscz1uKDMxMzYpLGM9bigxMzM1KTt0Lkljb25XaXRoQmFkZ2U9ZT0+e3Zhcntjb3VudDp0PTAsbWF4Om59PWUsbz1yKGUsW1wiY291bnRcIixcIm1heFwiXSk7cmV0dXJuKDAsaS5qc3hzKSh1LHtjaGlsZHJlbjpbKDAsaS5qc3gpKGwuSWNvbixPYmplY3QuYXNzaWduKHt9LG8pKSx0PjAmJigwLGkuanN4KShmLHtjb3VudDp0LG1heDpufSldfSl9O2NvbnN0IHU9KDAsYS5kZWZhdWx0KShjLkJveClgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmAsZj0oMCxhLmRlZmF1bHQpKHMuQmFkZ2UpYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRyYW5zZm9ybTogc2NhbGUoNzAlKTtcbiAgcmlnaHQ6IC0keyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICB0b3A6IC0keyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbmB9LDE0NDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzExNyksdCl9LDkyMzk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDgyNzUpLHQpLG8obig2OTMpLHQpfSw4Mjc1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTG9hZGVyPXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1vKG4oNzUxOCkpLGw9big5NjM0KTt0LkxvYWRlcj0oMCxhLmRlZmF1bHQpKChlPT57dmFyIHQ9cihlLFtdKTtyZXR1cm4oMCxpLmpzeCkobC5JY29uLE9iamVjdC5hc3NpZ24oe30sdCx7Y2hpbGRyZW46KDAsaS5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLHZpZXdCb3g6XCIwIDAgMzggMzhcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCJ9LHtjaGlsZHJlbjooMCxpLmpzeCkoXCJnXCIsT2JqZWN0LmFzc2lnbih7ZmlsbDpcIm5vbmVcIixmaWxsUnVsZTpcImV2ZW5vZGRcIn0se2NoaWxkcmVuOigwLGkuanN4cykoXCJnXCIsT2JqZWN0LmFzc2lnbih7dHJhbnNmb3JtOlwidHJhbnNsYXRlKDEgMSlcIixzdHJva2VXaWR0aDpcIjJcIn0se2NoaWxkcmVuOlsoMCxpLmpzeCkoXCJjaXJjbGVcIix7c3Ryb2tlT3BhY2l0eTpcIi41XCIsY3g6XCIxOFwiLGN5OlwiMThcIixyOlwiMThcIn0pLCgwLGkuanN4KShcInBhdGhcIixPYmplY3QuYXNzaWduKHtkOlwiTTM2IDE4YzAtOS45NC04LjA2LTE4LTE4LTE4XCJ9LHtjaGlsZHJlbjooMCxpLmpzeCkoXCJhbmltYXRlVHJhbnNmb3JtXCIse2F0dHJpYnV0ZU5hbWU6XCJ0cmFuc2Zvcm1cIix0eXBlOlwicm90YXRlXCIsZnJvbTpcIjAgMTggMThcIix0bzpcIjM2MCAxOCAxOFwiLGR1cjpcIjFzXCIscmVwZWF0Q291bnQ6XCJpbmRlZmluaXRlXCJ9KX0pKV19KSl9KSl9KSl9KSl9KSlgYH0sNjkzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksaT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fSxhPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT3BlbmZpbkxvYWRlcj12b2lkIDA7Y29uc3QgbD1uKDU4OTMpLHM9aShuKDc1MTgpKSxjPW4oOTYzNCk7dC5PcGVuZmluTG9hZGVyPSgwLHMuZGVmYXVsdCkoKGU9Pnt2YXIgdD1hKGUsW10pO3JldHVybigwLGwuanN4KShjLkljb24sT2JqZWN0LmFzc2lnbih7fSx0LHtjaGlsZHJlbjooMCxsLmpzeHMpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLHZpZXdCb3g6XCIwIDAgMTggMThcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0se2NoaWxkcmVuOlsoMCxsLmpzeCkodSx7ZDpcIlxcbiAgICAgICAgICAgIE0gMTcuMTIyMiA2Ljg4N1xcbiAgICAgICAgICAgIEMgMTcuMDE0MSA2Ljc3ODg3IDE2Ljg5OCA2LjY3OTExIDE2Ljc3NDggNi41ODg1NlxcbiAgICAgICAgICAgIEwgMTYuNzI5NSA2LjU1NzE1XFxuICAgICAgICAgICAgQyAxNi43MDM1IDYuNTM5MDMgMTYuNjc4MSA2LjUyMDMgMTYuNjUxNSA2LjUwMjc4XFxuICAgICAgICAgICAgQyAxNi42MjUgNi40ODUyNiAxNi41OTQxIDYuNDY2NTMgMTYuNTY1NyA2LjQ0OTAxXFxuICAgICAgICAgICAgTCAxNi41MjU5IDYuNDI0MjRcXG4gICAgICAgICAgICBDIDE2LjQ5MDIgNi40MDMxIDE2LjQ1NCA2LjM4MzE2IDE2LjQxNzcgNi4zNjM4M1xcbiAgICAgICAgICAgIEwgMTYuMzk2NiA2LjM1MjM2XFxuICAgICAgICAgICAgQyAxNS45Njc4IDYuMTI3NDIgMTUuNDkxIDYuMDA5NjggMTUuMDA2OCA2LjAwOTIyXFxuICAgICAgICAgICAgQyAxNC4yMTAxIDYuMDA4NTggMTMuNDQ2MyA1LjY5MTQ5IDEyLjg4MzQgNS4xMjc3MlxcbiAgICAgICAgICAgIEMgMTIuMzIwNSA0LjU2Mzk1IDEyLjAwNDggMy43OTk3MSAxMi4wMDU2IDMuMDAzMTRcXG4gICAgICAgICAgICBDIDEyLjAwNzggMS43OTA2NiAxMS4yNzkyIDAuNjk2MjYzIDEwLjE1OTYgMC4yMzAyOTNcXG4gICAgICAgICAgICBDIDkuMDQwMDIgLTAuMjM1Njc2IDcuNzQ5OTIgMC4wMTg1NTkyIDYuODkwOTMgMC44NzQ0NDFcXG4gICAgICAgICAgICBDIDYuMDMxOTQgMS43MzAzMiA1Ljc3MzIzIDMuMDE5MjggNi4yMzU0NiA0LjE0MDI0XFxuICAgICAgICAgICAgQyA2LjY5NzY4IDUuMjYxMTkgNy43ODk4IDUuOTkzMzcgOS4wMDI1MSA1Ljk5NTMyXFxuICAgICAgICAgICAgQyA5Ljc5OTI0IDUuOTk1OTYgMTAuNTYzMSA2LjMxMzA1IDExLjEyNTkgNi44NzY4MlxcbiAgICAgICAgICAgIEMgMTEuNjg4OCA3LjQ0MDU5IDEyLjAwNDYgOC4yMDQ4NCAxMi4wMDM4IDkuMDAxNFxcbiAgICAgICAgICAgIEMgMTIuMDAzMSA5Ljc5Nzk3IDExLjY4NiAxMC41NjE2IDExLjEyMjEgMTEuMTI0NFxcbiAgICAgICAgICAgIEMgMTAuNTU4MiAxMS42ODcxIDkuNzkzOCAxMi4wMDI4IDguOTk3MDggMTIuMDAyXFxuICAgICAgICAgICAgQyA4LjIwMDk2IDEyLjAwMjcgNy40MzcyNyAxMS42ODY3IDYuODc0MzggMTEuMTIzOFxcbiAgICAgICAgICAgIEMgNi4zMTE1IDEwLjU2MSA1Ljk5NTY0IDkuNzk3MzYgNS45OTY0NCA5LjAwMTRcXG4gICAgICAgICAgICBDIDUuOTk2NDQgNy4zNDU4NiA0LjY1NDA5IDYuMDAzNzggMi45OTgyMiA2LjAwMzc4XFxuICAgICAgICAgICAgQyAxLjM0MjM1IDYuMDAzNzggMCA3LjM0NTg2IDAgOS4wMDE0XFxuICAgICAgICAgICAgQyAwIDEwLjY1NjkgMS4zNDIzNSAxMS45OTkgMi45OTgyMiAxMS45OTlcXG4gICAgICAgICAgICBDIDQuNjU0MDkgMTEuOTk5IDUuOTk2NDQgMTMuMzQxMSA1Ljk5NjQ0IDE0Ljk5NjZcXG4gICAgICAgICAgICBDIDUuOTk2NDQgMTYuNjU1MyA3LjM0MTM2IDE4IDkuMDAwNCAxOFxcbiAgICAgICAgICAgIEMgMTAuNjU5NCAxOCAxMi4wMDQ0IDE2LjY1NTMgMTIuMDA0NCAxNC45OTY2XFxuICAgICAgICAgICAgQyAxMi4wMDQ0IDEzLjM0MTEgMTMuMzQ2NyAxMS45OTkgMTUuMDAyNiAxMS45OTlcXG4gICAgICAgICAgICBDIDE1LjUzNzkgMTEuOTk5NCAxNi4wNjM1IDExLjg1NjMgMTYuNTI0NyAxMS41ODQ2XFxuICAgICAgICAgICAgQyAxNi41NjQ1IDExLjU2MSAxNi42MDM4IDExLjUzNjMgMTYuNjQ1NSAxMS41MTA5XFxuICAgICAgICAgICAgTCAxNi42NTQgMTEuNTA1NVxcbiAgICAgICAgICAgIEMgMTYuNjkwMiAxMS40ODEzIDE2LjcyNjUgMTEuNDU1OSAxNi43NjE1IDExLjQzMDVcXG4gICAgICAgICAgICBMIDE2Ljc3NzIgMTEuNDE5N1xcbiAgICAgICAgICAgIEMgMTYuODA4NiAxMS4zOTY3IDE2LjgzNzYgMTEuMzcyIDE2Ljg3MDkgMTEuMzQ3MlxcbiAgICAgICAgICAgIEwgMTYuODk3NSAxMS4zMjY2XFxuICAgICAgICAgICAgQyAxNi45MjY1IDExLjMwMzEgMTYuOTU0MyAxMS4yNzgzIDE2Ljk4MjcgMTEuMjUzNVxcbiAgICAgICAgICAgIEwgMTcuMDEzNSAxMS4yMjdcXG4gICAgICAgICAgICBDIDE3LjA0OTcgMTEuMTk0MyAxNy4wODU0IDExLjE2MDUgMTcuMTIwNCAxMS4xMjU1XFxuICAgICAgICAgICAgTCAxNy4xMjU5IDExLjEyMDZcXG4gICAgICAgICAgICBDIDE3LjI1NTMgMTAuOTkwNiAxNy4zNzI2IDEwLjg0OTEgMTcuNDc2MyAxMC42OTc4XFxuICAgICAgICAgICAgQyAxNy40OTg5IDEwLjY2NTEgMTcuNTIwNiAxMC42MzIxIDE3LjU0MTYgMTAuNTk4N1xcbiAgICAgICAgICAgIEMgMTguMjg0MyA5LjQxNSAxOC4xMTA0IDcuODc1MiAxNy4xMjIyIDYuODg3WlxcbiAgICAgICAgICAgIFwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pLCgwLGwuanN4KShmLHtjeDpcIjlcIixjeTpcIjNcIixyOlwiMi45XCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLGFuZ2xlOjB9KSwoMCxsLmpzeCkoZix7Y3g6XCIxNVwiLGN5OlwiOVwiLHI6XCIyLjc1XCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLGFuZ2xlOi05MH0pLCgwLGwuanN4KShmLHtjeDpcIjlcIixjeTpcIjE1XCIscjpcIjIuNVwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixhbmdsZTotMTgwfSksKDAsbC5qc3gpKGYse2N4OlwiM1wiLGN5OlwiOVwiLHI6XCIyLjI1XCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLGFuZ2xlOi0yNzB9KV19KSl9KSl9KSlgYDtjb25zdCB1PXMuZGVmYXVsdC5wYXRoYFxuICBAa2V5ZnJhbWVzIGxvZ29BbmltYXRpb24ge1xuICAgIDAlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDI1JSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICAzNSUge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gICAgNjAlIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICAgIDc1JSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgYW5pbWF0aW9uOiBsb2dvQW5pbWF0aW9uIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuYCxmPXMuZGVmYXVsdC5jaXJjbGVgXG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbiAgYW5pbWF0aW9uOiAkeyh7YW5nbGU6ZX0pPT4oZT0+cy5rZXlmcmFtZXNgXG4gICAgMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICAyNSUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICAzMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICA1MCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoJHtlfWRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICA3MCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTM2MGRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICA3NSUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTM2MGRlZyk7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0zNjBkZWcpO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG5gKShlKX0gMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG5gfSwzNTg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5TdHlsZWRJbnB1dEZpZWxkPXQuQmFzZUlucHV0PXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1uKDY2ODkpLGw9byhuKDc1MTgpKSxzPW4oMTMzNSksYz1uKDk1MDcpLHU9big3NzY5KSxmPW4oOTYzNCk7dC5CYXNlSW5wdXQ9KDAsYS5mb3J3YXJkUmVmKSgoKGUsbik9Pnt2YXJ7Y2xhc3NOYW1lOm8scmVuZGVySW5wdXQ6YSxtZXNzYWdlOmwsbGFiZWw6cyxzdGF0dXM6YyxuYW1lOnUsaWNvbjpmLHR5cGU6Qz1cInRleHRcIn09ZSxtPXIoZSxbXCJjbGFzc05hbWVcIixcInJlbmRlcklucHV0XCIsXCJtZXNzYWdlXCIsXCJsYWJlbFwiLFwic3RhdHVzXCIsXCJuYW1lXCIsXCJpY29uXCIsXCJ0eXBlXCJdKTtjb25zdCB5PVwiY2hlY2tib3hcIj09PUN8fFwicmFkaW9cIj09PUM7cmV0dXJuKDAsaS5qc3hzKShnLE9iamVjdC5hc3NpZ24oe2ZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixhbGlnbkl0ZW1zOlwiZmxleC1zdGFydFwifSx7Y2hpbGRyZW46WygwLGkuanN4cykoZCxPYmplY3QuYXNzaWduKHtpbmxpbmU6eX0se2NoaWxkcmVuOlshIXMmJigwLGkuanN4KShoLE9iamVjdC5hc3NpZ24oe2FzOlwibGFiZWxcIixodG1sRm9yOnUsd2VpZ2h0OlwiYm9sZFwifSx7Y2hpbGRyZW46c30pKSwhIWYmJigwLGkuanN4KShwLHtpY29uOmZ9KSwhIWEmJmEoT2JqZWN0LmFzc2lnbih7bmFtZTp1LHN0YXR1czpjLHR5cGU6Q30sbSkpLCFhJiYoMCxpLmpzeCkodC5TdHlsZWRJbnB1dEZpZWxkLE9iamVjdC5hc3NpZ24oe2NsYXNzTmFtZTpvLG5hbWU6dSxzdGF0dXM6Yyx0eXBlOkN9LG0se3JlZjpufSkpXX0pKSwhIWwmJigwLGkuanN4KSh2LE9iamVjdC5hc3NpZ24oe3N0YXR1czpjfSx7Y2hpbGRyZW46bH0pKV19KSl9KSksdC5CYXNlSW5wdXQuZGlzcGxheU5hbWU9XCJCYXNlSW5wdXRcIjtjb25zdCBkPSgwLGwuZGVmYXVsdCkocy5Cb3gpYFxuICBhbGlnbi1pdGVtczogJHsoe2lubGluZTplfSk9PmU/XCJjZW50ZXJcIjpcImZsZXgtc3RhcnRcIn07XG4gIGZsZXgtZGlyZWN0aW9uOiAkeyh7aW5saW5lOmV9KT0+ZT9cInJvdy1yZXZlcnNlXCI6XCJjb2x1bW5cIn07XG4gIGp1c3RpZnktY29udGVudDogJHsoe2lubGluZTplfSk9PmU/XCJmbGV4LWVuZFwiOlwiZmxleC1zdGFydFwifTtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgJHsoe2lubGluZTplLHRoZW1lOnR9KT0+ZSYmYFxcbiAgICAke2h9IHtcXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgICBtYXJnaW4tbGVmdDogJHt0LnB4LnNtYWxsfTtcXG4gICAgICBmb250LXdlaWdodDogJHt0LmZvbnRXZWlnaHQubm9ybWFsfTtcXG4gICAgfVxcbiAgYH1cbmAscD0oMCxsLmRlZmF1bHQpKGYuSWNvbilgXG4gIG1hcmdpbi1sZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gIG1pbi13aWR0aDogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5zbWFsbH07XG4gIG1pbi1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUuc21hbGx9O1xuYCxoPSgwLGwuZGVmYXVsdCkodS5UZXh0KWBcbiAgbWFyZ2luLWJvdHRvbTogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuYCx2PSgwLGwuZGVmYXVsdCkodS5UZXh0KWBcbiAgY29sb3I6ICR7KHt0aGVtZTplLHN0YXR1czp0fSk9PigwLGMuZ2V0U3RhdHVzQ29sb3IpKGUsdCxcInRleHRIZWxwXCIpfTtcbiAgbWFyZ2luLXRvcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG5gLGc9KDAsbC5kZWZhdWx0KShzLkJveClgXG4gIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG5gO3QuU3R5bGVkSW5wdXRGaWVsZD1sLmRlZmF1bHQuaW5wdXRgXG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNX07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmUsc3RhdHVzOnR9KT0+KDAsYy5nZXRTdGF0dXNDb2xvcikoZSx0LFwiaW5wdXRCb3JkZXJcIil9O1xuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gIGJveC1zaGFkb3c6ICR7KHt0aGVtZTplfSk9PmUuc2hhZG93LmJhc2V9O1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Q29sb3J9O1xuICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5iYXNlfWB9O1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKTtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplLHN0YXR1czp0fSk9PigwLGMuZ2V0U3RhdHVzQ29sb3IpKGUsdCxcImlucHV0Rm9jdXNlZFwiKX07XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG5cbiAgJjpkaXNhYmxlZDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhIGhhY2sgdG8gaW52ZXJ0IHRoZSBjYWxlbmRhciBpY29uLiBUaGlzIG9ubHkgd29ya3MgaW4gZGFyayBtb2RlLlxuICAgKiBVbnRpbCBlaXRoZXIgbGlnaHQgbW9kZSBpcyBhIHRoaW5nIG9yIHdlIGdldCBhIGRhdGV0aW1lIHBpY2tlciBkZXNpZ24sIHRoaXMgd2lsbCBkby5cbiAgICovXG4gIDo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIHtcbiAgICBmaWx0ZXI6IGludmVydCgxKTtcbiAgfVxuYH0sODg3ODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzU4KSx0KX0sMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGk9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH0sYT10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxsPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2hlY2tib3g9dm9pZCAwO2NvbnN0IHM9big1ODkzKSxjPWkobig2Njg5KSksdT1sKG4oNzUxOCkpLGY9big4ODc4KSxkPW4oOTYzNCkscD1uKDk1MDcpO3QuQ2hlY2tib3g9Yy5mb3J3YXJkUmVmKCgoZSx0KT0+e3ZhcntzdGF0dXM6bn09ZSxyPWEoZSxbXCJzdGF0dXNcIl0pO3JldHVybigwLHMuanN4KShmLkJhc2VJbnB1dCxPYmplY3QuYXNzaWduKHt9LHIse3R5cGU6XCJjaGVja2JveFwiLHN0YXR1czpuLHJlbmRlcklucHV0OmU9Pnt2YXIgcj1hKGUsW10pO3JldHVybigwLHMuanN4cykoaCx7Y2hpbGRyZW46WygwLHMuanN4KShDLE9iamVjdC5hc3NpZ24oe3JlZjp0LGlkOnIubmFtZSx0eXBlOlwiY2hlY2tib3hcIn0scikpLCgwLHMuanN4KSh2LE9iamVjdC5hc3NpZ24oe3N0YXR1czpufSx7Y2hpbGRyZW46KDAscy5qc3gpKGcse30pfSkpXX0pfX0pKX0pKSx0LkNoZWNrYm94LmRpc3BsYXlOYW1lPVwiQ2hlY2tib3hcIjtjb25zdCBoPXUuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYCx2PXUuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBoZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIHdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplLHN0YXR1czp0fSk9PigwLHAuZ2V0U3RhdHVzQ29sb3IpKGUsdCxcInRleHREZWZhdWx0XCIpfTtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAsZz0oMCx1LmRlZmF1bHQpKGQuSWNvbikuYXR0cnMoe2ljb246XCJDaGVja0ljb25cIixzaXplOlwic21hbGxcIn0pYFxuICBvcGFjaXR5OiAwO1xuYCxDPXUuZGVmYXVsdC5pbnB1dGBcbiAgb3BhY2l0eTogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgJjpjaGVja2VkICsgJHt2K1wiIFwiK2d9IHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgJjpob3ZlciArICR7dn0ge1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcHggMXB4ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEZvY3VzZWR9O1xuICB9XG5cbiAgJjpmb2N1cyArICR7dn0ge1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcHggMXB4ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEZvY3VzZWR9O1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgfVxuXG4gICY6ZGlzYWJsZWQgKyAke3Z9IHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cbmB9LDgwNTE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDEpLHQpfSw5MDIyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksaT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoZWNrYm94R3JvdXA9dm9pZCAwO2NvbnN0IGE9big1ODkzKSxsPWkobig2Njg5KSkscz1pKG4oNzUxOCkpLGM9bigxMzM1KSx1PW4oNzc2OSksZj1uKDEpO3QuQ2hlY2tib3hHcm91cD0oe2Rpc2FibGVkOmUsZ2FwOnQ9XCJzbWFsbFwiLG1lc3NhZ2U6bixuYW1lOnIsY2hpbGRyZW46b30pPT4oMCxhLmpzeHMpKGQse2NoaWxkcmVuOlsoMCxhLmpzeCkocCxPYmplY3QuYXNzaWduKHtnYXA6dH0se2NoaWxkcmVuOmwuQ2hpbGRyZW4ubWFwKG8sKHQ9Pntjb25zdCBuPXQ7cmV0dXJuIG4udHlwZT09PWYuQ2hlY2tib3g/bC5jbG9uZUVsZW1lbnQobix7bmFtZTpyLGRpc2FibGVkOmV9KTpufSkpfSkpLG4/KDAsYS5qc3gpKGgsT2JqZWN0LmFzc2lnbih7ZGlzYWJsZWQ6ZX0se2NoaWxkcmVuOm59KSk6bnVsbF19KTtjb25zdCBkPSgwLHMuZGVmYXVsdCkoYy5Cb3gpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG5gLHA9KDAscy5kZWZhdWx0KShjLkJveClgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xuYCxoPSgwLHMuZGVmYXVsdCkodS5UZXh0KWBcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dFBsYWNlaG9sZGVyfTtcbiAgbWFyZ2luLXRvcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcblxuICAkeyh7ZGlzYWJsZWQ6ZX0pPT5lJiZzLmNzc2BcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gICAgYH1cbmB9LDQxNjk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDkwMjIpLHQpfSw5MzY4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRGF0ZUlucHV0PXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1uKDY2ODkpLGw9byhuKDc1MTgpKSxzPW4oOTYzNCksYz1uKDEzMzUpLHU9big5NTA3KSxmPW4oODg3OCk7dC5EYXRlSW5wdXQ9KDAsYS5mb3J3YXJkUmVmKSgoKGUsdCk9Pnt2YXJ7dmFsdWU6bj1cIlwiLHR5cGU6bz1cImRhdGVcIixleHBhbmRlZDpsPSExLG9uQ2hhbmdlOnN9PWUsYz1yKGUsW1widmFsdWVcIixcInR5cGVcIixcImV4cGFuZGVkXCIsXCJvbkNoYW5nZVwiXSk7Y29uc3RbdSxwXT0oMCxhLnVzZVN0YXRlKShuKTtyZXR1cm4oMCxhLnVzZUVmZmVjdCkoKCgpPT5wKG4pKSxbXSksKDAsaS5qc3gpKGYuQmFzZUlucHV0LE9iamVjdC5hc3NpZ24oe3R5cGU6b30sYyx7cmVuZGVySW5wdXQ6ZT0+e3ZhciBuPXIoZSxbXSk7cmV0dXJuKDAsaS5qc3gpKGQsT2JqZWN0LmFzc2lnbih7cmVmOnQsdHlwZTpvLG9uQ2hhbmdlOmU9Pntjb25zdHt2YWx1ZTp0fT1lLnRhcmdldDt0JiZwKHQpLG51bGw9PXN8fHMoZSl9LHZhbHVlOnUsZXhwYW5kZWQ6bH0sbikpfX0pKX0pKSx0LkRhdGVJbnB1dC5kaXNwbGF5TmFtZT1cIkRhdGVJbnB1dFwiO2NvbnN0IGQ9KDAsYS5mb3J3YXJkUmVmKSgoKGUsdCk9Pnt2YXJ7dHlwZTpuLGV4cGFuZGVkOm8sb25FeHBhbmQ6YX09ZSxsPXIoZSxbXCJ0eXBlXCIsXCJleHBhbmRlZFwiLFwib25FeHBhbmRcIl0pO3JldHVybigwLGkuanN4cykocCx7Y2hpbGRyZW46WygwLGkuanN4KSh2LHtjaGlsZHJlbjooMCxpLmpzeCkocy5JY29uLHtpY29uOlwidGltZVwiPT09bj9cIkNsb2NrSWNvblwiOlwiQ2FsZW5kYXJJY29uXCJ9KX0pLCgwLGkuanN4KShDLE9iamVjdC5hc3NpZ24oe3JlZjp0LHR5cGU6bixvbktleURvd246ZT0+e1wiIFwiPT09ZS5rZXkmJmUucHJldmVudERlZmF1bHQoKX19LGwpKSwoMCxpLmpzeCkoZyxPYmplY3QuYXNzaWduKHtmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsZGlzYWJsZWQ6bC5kaXNhYmxlZCxvbkNsaWNrOmF9LHtjaGlsZHJlbjooMCxpLmpzeCkocy5JY29uLHtpY29uOm8/XCJDaGV2cm9uVXBJY29uXCI6XCJDaGV2cm9uRG93bkljb25cIn0pfSkpXX0pfSkpO2QuZGlzcGxheU5hbWU9XCJTdHlsZWREYXRlSW5wdXRcIjtjb25zdCBwPWwuZGVmYXVsdC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICB3aWR0aDogMTAwJTtcbmAsaD0oMCxsLmRlZmF1bHQpKGMuQm94KWBcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogY2FsYygxMDAlIC0gMnB4KTtcbmAsdj0oMCxsLmRlZmF1bHQpKGgpYFxuICBsZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5gLGc9KDAsbC5kZWZhdWx0KShoKWBcbiAgcmlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICBwb2ludGVyLWV2ZW50czogJHsoe2Rpc2FibGVkOmV9KT0+ZT9cIm5vbmVcIjp2b2lkIDB9O1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIHBhZGRpbmctbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG5gLEM9KDAsbC5kZWZhdWx0KShmLlN0eWxlZElucHV0RmllbGQpYFxuICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gIGZvbnQtZmFtaWx5OiAke3UuRm9udFN0YWNrfTtcbiAgcGFkZGluZy1yaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC54eHhsYXJnZX07XG4gIHBhZGRpbmctbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC54eHhsYXJnZX07XG4gIDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbiAgOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3Ige1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuYH0sOTY1NDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oOTM2OCksdCl9LDE5Nzg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDY4ODQpLHQpfSw2ODg0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTnVtYmVySW5wdXQ9dm9pZCAwO2NvbnN0IGk9big1ODkzKSxhPW4oNjY4OSksbD1vKG4oNzUxOCkpLHM9big2NjA2KSxjPW4oOTYzNCksdT1uKDEzMzUpLGY9big4ODc4KTt2YXIgZDshZnVuY3Rpb24oZSl7ZVtlLlVwPTFdPVwiVXBcIixlW2UuRG93bj0tMV09XCJEb3duXCJ9KGR8fChkPXt9KSksdC5OdW1iZXJJbnB1dD0oMCxhLmZvcndhcmRSZWYpKCgoZSx0KT0+e3ZhcnttaW46bixtYXg6byxvbkNoYW5nZTpsLHN0ZXA6Yz0xLHZhbHVlOnV9PWUsaD1yKGUsW1wibWluXCIsXCJtYXhcIixcIm9uQ2hhbmdlXCIsXCJzdGVwXCIsXCJ2YWx1ZVwiXSk7Y29uc3Qgdj1OdW1iZXIoYyksW2csQ109KDAsYS51c2VTdGF0ZSkoTnVtYmVyKHUpKTsoMCxhLnVzZUVmZmVjdCkoKCgpPT5DKE51bWJlcih1KSkpLFtdKTtjb25zdCBtPWU9Pntjb25zdCB0PWc/TnVtYmVyKGcpOjAscj1uP051bWJlcihuKTp2b2lkIDAsaT1vP051bWJlcihvKTp2b2lkIDAsYT0oMCxzLmNsYW1wKSh0K3YqZSxyLGkpO0MoYSl9O3JldHVybigwLGkuanN4KShmLkJhc2VJbnB1dCxPYmplY3QuYXNzaWduKHt0eXBlOlwibnVtYmVyXCJ9LGgse3JlbmRlcklucHV0OmU9Pnt2YXIgYT1yKGUsW10pO3JldHVybigwLGkuanN4KShwLE9iamVjdC5hc3NpZ24oe3JlZjp0LG9uSW5jcmVtZW50OigpPT5tKGQuVXApLG9uRGVjcmVtZW50OigpPT5tKGQuRG93biksb25DaGFuZ2U6ZT0+e2NvbnN0e3ZhbHVlOnR9PWUudGFyZ2V0O3QmJkMoTnVtYmVyKHQpKSxsJiZsKGUpfSxtaW46bixtYXg6byxzdGVwOmN9LGEse3ZhbHVlOmd9KSl9fSkpfSkpLHQuTnVtYmVySW5wdXQuZGlzcGxheU5hbWU9XCJOdW1iZXJJbnB1dFwiO2NvbnN0IHA9KDAsYS5mb3J3YXJkUmVmKSgoKGUsdCk9Pnt2YXJ7b25JbmNyZW1lbnQ6bixvbkRlY3JlbWVudDpvfT1lLGE9cihlLFtcIm9uSW5jcmVtZW50XCIsXCJvbkRlY3JlbWVudFwiXSk7cmV0dXJuKDAsaS5qc3hzKShoLHtjaGlsZHJlbjpbKDAsaS5qc3gpKEMsT2JqZWN0LmFzc2lnbih7cmVmOnR9LGEpKSwoMCxpLmpzeHMpKHYsT2JqZWN0LmFzc2lnbih7ZmxleERpcmVjdGlvbjpcImNvbHVtblwiLGRpc2FibGVkOmEuZGlzYWJsZWR9LHtjaGlsZHJlbjpbKDAsaS5qc3gpKGcsT2JqZWN0LmFzc2lnbih7b25DbGljazpuLGRpc2FibGVkOmEuZGlzYWJsZWR9LHtjaGlsZHJlbjooMCxpLmpzeCkoYy5JY29uLHtpY29uOlwiVHJpYW5nbGVVcEljb25cIn0pfSkpLCgwLGkuanN4KShnLE9iamVjdC5hc3NpZ24oe29uQ2xpY2s6byxkaXNhYmxlZDphLmRpc2FibGVkfSx7Y2hpbGRyZW46KDAsaS5qc3gpKGMuSWNvbix7aWNvbjpcIlRyaWFuZ2xlRG93bkljb25cIn0pfSkpXX0pKV19KX0pKTtwLmRpc3BsYXlOYW1lPVwiU3R5bGVkTnVtYmVySW5wdXRcIjtjb25zdCBoPWwuZGVmYXVsdC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICB3aWR0aDogMTAwJTtcbmAsdj0oMCxsLmRlZmF1bHQpKHUuQm94KWBcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMXB4O1xuICB0b3A6IDFweDtcbiAgZ2FwOiAxcHg7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gMnB4KTtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+YDAgJHtlLnJhZGl1cy5zbWFsbH0gJHtlLnJhZGl1cy5zbWFsbH0gMGB9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIHBvaW50ZXItZXZlbnRzOiAkeyh7ZGlzYWJsZWQ6ZX0pPT5lP1wibm9uZVwiOnZvaWQgMH07XG5gLGc9KDAsbC5kZWZhdWx0KSh1LkJveClgXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICBwYWRkaW5nOiAwICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGhlaWdodDogNTAlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICBjb2xvcjogJHsoe2Rpc2FibGVkOmUsdGhlbWU6dH0pPT5lP3QucGFsZXR0ZS50ZXh0SGVscDp0LnBhbGV0dGUudGV4dERlZmF1bHR9O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEZvY3VzZWR9O1xuICB9XG5cbiAgJjphY3RpdmUge1xuICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dENvbG9yfTtcbiAgfVxuYCxDPSgwLGwuZGVmYXVsdCkoZi5TdHlsZWRJbnB1dEZpZWxkKWBcbiAgYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4Lnh4eGxhcmdlfTtcblxuICA6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG4gIDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBtYXJnaW46IDA7XG4gIH1cbmB9LDUyMTU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDIyNTUpLHQpfSwyMjU1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksaT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlJhZGlvR3JvdXA9dm9pZCAwO2NvbnN0IGE9big1ODkzKSxsPWkobig2Njg5KSkscz1pKG4oNzUxOCkpLGM9bigxMzM1KSx1PW4oNzc2OSksZj1uKDI1NjUpO3QuUmFkaW9Hcm91cD0oe2RpcmVjdGlvbjplPVwiY29sdW1uXCIsZGlzYWJsZWQ6dCxsYWJlbFNpZGU6bj1cInJpZ2h0XCIsZ2FwOnI9XCJzbWFsbFwiLG1lc3NhZ2U6byxuYW1lOmksY2hpbGRyZW46c30pPT4oMCxhLmpzeHMpKGQse2NoaWxkcmVuOlsoMCxhLmpzeCkocCxPYmplY3QuYXNzaWduKHtkaXJlY3Rpb246ZSxsYWJlbFNpZGU6bixnYXA6cn0se2NoaWxkcmVuOmwuQ2hpbGRyZW4ubWFwKHMsKGU9Pntjb25zdCByPWU7cmV0dXJuIHIudHlwZT09PWYuUmFkaW9JbnB1dD9sLmNsb25lRWxlbWVudChyLHtuYW1lOmksbGFiZWxTaWRlOm4sZGlzYWJsZWQ6dH0pOnJ9KSl9KSksbz8oMCxhLmpzeCkoaCxPYmplY3QuYXNzaWduKHtkaXNhYmxlZDp0fSx7Y2hpbGRyZW46b30pKTpudWxsXX0pO2NvbnN0IGQ9KDAscy5kZWZhdWx0KShjLkJveClgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiBtYXgtY29udGVudDtcbmAscD0oMCxzLmRlZmF1bHQpKGMuQm94KWBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7ZT0+ZS5kaXJlY3Rpb259O1xuICBhbGlnbi1pdGVtczogJHtlPT57c3dpdGNoKGUubGFiZWxTaWRlKXtjYXNlXCJsZWZ0XCI6cmV0dXJuXCJlbmRcIjtjYXNlXCJyaWdodFwiOnJldHVyblwic3RhcnRcIjtkZWZhdWx0OnJldHVyblwiY2VudGVyXCJ9fX07XG4gIHdpZHRoOiBmaXQtY29udGVudDtcbmAsaD0oMCxzLmRlZmF1bHQpKHUuVGV4dClgXG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcn07XG4gIG1hcmdpbi10b3A6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG5cbiAgJHsoe2Rpc2FibGVkOmV9KT0+ZSYmcy5jc3NgXG4gICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICAgIGB9XG5gfSwzNjQxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigyNTY1KSx0KX0sMjU2NTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGk9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH0sYT10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlJhZGlvSW5wdXQ9dm9pZCAwO2NvbnN0IGw9big1ODkzKSxzPW4oNzc2OSksYz1pKG4oNjY4OSkpLHU9aShuKDc1MTgpKSxmPW4oMTMzNSksZD1uKDk2MzQpO3QuUmFkaW9JbnB1dD1jLmZvcndhcmRSZWYoKChlLHQpPT57dmFye2Rpc2FibGVkOm4saWQ6cixsYWJlbDpvLGxhYmVsU2lkZTppLGljb246c309ZSxjPWEoZSxbXCJkaXNhYmxlZFwiLFwiaWRcIixcImxhYmVsXCIsXCJsYWJlbFNpZGVcIixcImljb25cIl0pO3JldHVybigwLGwuanN4KShwLHtjaGlsZHJlbjooMCxsLmpzeHMpKGcsT2JqZWN0LmFzc2lnbih7YXM6XCJsYWJlbFwiLGh0bWxGb3I6cixsYWJlbFNpZGU6aSxkaXNhYmxlZDpufSx7Y2hpbGRyZW46WygwLGwuanN4KSh2LE9iamVjdC5hc3NpZ24oe3JlZjp0LHR5cGU6XCJyYWRpb1wiLGRpc2FibGVkOm59LGMpKSwoMCxsLmpzeCkoaCx7fSksISFzJiYoMCxsLmpzeCkoZC5JY29uLHtpY29uOnN9KSxvfHxcIlwiXX0pKX0pfSkpLHQuUmFkaW9JbnB1dC5kaXNwbGF5TmFtZT1cIlJhZGlvSW5wdXRcIjtjb25zdCBwPSgwLHUuZGVmYXVsdCkoZi5Cb3gpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuYCxoPXUuZGVmYXVsdC5kaXZgXG4gIHdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBoZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiAycHg7XG4gIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG5cbiAgaW5wdXQ6Y2hlY2tlZCB+ICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICAgIHdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gICAgaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIH1cblxuICBpbnB1dDpkaXNhYmxlZCB+ICYge1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICB9XG5cbiAgaW5wdXQ6ZGlzYWJsZWQgfiAmOmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gIH1cbmAsdj11LmRlZmF1bHQuaW5wdXRgXG4gIG9wYWNpdHk6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6ZGlzYWJsZWQge1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgfVxuYCxnPSgwLHUuZGVmYXVsdCkocy5UZXh0KWBcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4LWRpcmVjdGlvbjogJHsoe2xhYmVsU2lkZTplfSk9Pntzd2l0Y2goZXx8XCJyaWdodFwiKXtjYXNlXCJsZWZ0XCI6cmV0dXJuXCJyb3ctcmV2ZXJzZVwiO2Nhc2VcInJpZ2h0XCI6cmV0dXJuXCJyb3dcIjtjYXNlXCJ0b3BcIjpyZXR1cm5cImNvbHVtbi1yZXZlcnNlXCI7Y2FzZVwiYm90dG9tXCI6cmV0dXJuXCJjb2x1bW5cIn19fTtcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICR7KHtkaXNhYmxlZDplfSk9PmU/dS5jc3NgXG4gICAgICAgICAgJiB7XG4gICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgICAgICAgYDpudWxsfVxuYH0sODUxMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNzQyOSksdCl9LDc0Mjk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuUmF3SW5wdXQ9dm9pZCAwO2NvbnN0IG89cihuKDc1MTgpKTt0LlJhd0lucHV0PW8uZGVmYXVsdC5pbnB1dGBgLHQuUmF3SW5wdXQuZGlzcGxheU5hbWU9XCJSYXdJbnB1dFwifSwzMTE5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig3OTkpLHQpfSw3OTk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVGV4dEFyZWE9dm9pZCAwO2NvbnN0IG89big1ODkzKSxpPW4oNjY4OSksYT1yKG4oNzUxOCkpLGw9big5NTA3KSxzPW4oOTUwNyksYz1uKDk1MDcpO3QuVGV4dEFyZWE9KDAsaS5mb3J3YXJkUmVmKSgoKGUsdCk9PigwLG8uanN4KSh1LE9iamVjdC5hc3NpZ24oe3JlZjp0fSxlLHtvbkNoYW5nZTplLm9uQ2hhbmdlfSkpKSksdC5UZXh0QXJlYS5kaXNwbGF5TmFtZT1cIlRleHRBcmVhXCI7Y29uc3QgdT1hLmRlZmF1bHQudGV4dGFyZWFgXG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEJvcmRlcn07XG4gIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmUsc3RhdHVzOnR9KT0+KDAsYy5nZXRTdGF0dXNDb2xvcikoZSx0LFwiaW5wdXRCb3JkZXJcIil9O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIHdpZHRoOiAxMDAlO1xuICByZXNpemU6IG5vbmU7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gICR7bC5NaXhpbnMuc2Nyb2xsYmFyLnNtYWxsfTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dENvbG9yfTtcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5saW5lSGVpZ2h0LnRleHR9O1xuICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0Lm5vcm1hbH07XG4gIGZvbnQtZmFtaWx5OiAke3MuRm9udFN0YWNrfTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH0gJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH0gMHB4XG4gICAgJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplLHN0YXR1czp0fSk9PigwLGMuZ2V0U3RhdHVzQ29sb3IpKGUsdCxcImlucHV0Rm9jdXNlZFwiKX07XG4gIH1cblxuICAmOmRpc2FibGVkOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgfVxuYH0sODk1MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMjM1MiksdCl9LDIzNTI6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVGV4dElucHV0PXZvaWQgMDtjb25zdCByPW4oNTg5Myksbz1uKDY2ODkpLGk9big4ODc4KTt0LlRleHRJbnB1dD0oMCxvLmZvcndhcmRSZWYpKCgoZSx0KT0+KDAsci5qc3gpKGkuQmFzZUlucHV0LE9iamVjdC5hc3NpZ24oe3JlZjp0LHR5cGU6XCJ0ZXh0XCJ9LGUpKSkpLHQuVGV4dElucHV0LmRpc3BsYXlOYW1lPVwiVGV4dElucHV0XCJ9LDMzMzk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQm94PXZvaWQgMDtjb25zdCBvPXIobig3NTE4KSksaT1uKDg3MzIpLGE9big1NDU5KSxsPXsxOmEuUGFsZXR0ZS5iYWNrZ3JvdW5kMSwyOmEuUGFsZXR0ZS5iYWNrZ3JvdW5kMiwzOmEuUGFsZXR0ZS5iYWNrZ3JvdW5kMyw0OmEuUGFsZXR0ZS5iYWNrZ3JvdW5kNCw1OmEuUGFsZXR0ZS5iYWNrZ3JvdW5kNSw2OmEuUGFsZXR0ZS5iYWNrZ3JvdW5kNn07dC5Cb3g9by5kZWZhdWx0LmRpdmBcbiAgLyoqXG4gICAqIFN0eWxlIFNjcm9sbGJhciBmb3IgQm94ZXMgd2l0aCBvdmVyZmxvd1xuICAgKi9cbiAgJHtpLk1peGlucy5zY3JvbGxiYXIuYmFzZX1cblxuICBkaXNwbGF5OiAkeyh7ZGlzcGxheTplPVwiZmxleFwifSk9PmV9O1xuICBmbGV4LWRpcmVjdGlvbjogJHsoe2ZsZXhEaXJlY3Rpb246ZT1cInJvd1wifSk9PmV9O1xuICBmbGV4LXdyYXA6ICR7KHtmbGV4V3JhcDplPVwibm93cmFwXCJ9KT0+ZX07XG4gIGFsaWduLWl0ZW1zOiAkeyh7YWxpZ25JdGVtczplfSk9PmV9O1xuICBqdXN0aWZ5LWNvbnRlbnQ6ICR7KHtqdXN0aWZ5Q29udGVudDplfSk9PmV9O1xuICBnYXA6ICR7KHt0aGVtZTplLGdhcDp0fSk9PnQmJmUucHhbdF19O1xuICBhbGlnbi1zZWxmOiAkeyh7YWxpZ25TZWxmOmV9KT0+ZX07XG4gIGZsZXgtYmFzaXM6ICR7KHtmbGV4QmFzaXM6ZX0pPT5lfTtcbiAgZmxleC1ncm93OiAkeyh7ZmxleEdyb3c6ZX0pPT5lfTtcbiAgZmxleC1zaHJpbms6ICR7KHtmbGV4U2hyaW5rOmV9KT0+ZX07XG4gIG9yZGVyOiAkeyh7b3JkZXI6ZX0pPT5lfTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmUscGFkZGluZzp0fSk9PnQmJmUucHhbdF19O1xuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZSxiYWNrZ3JvdW5kOnR9KT0+dCYmZS5wYWxldHRlW2xbdF1dfTtcbmAsdC5Cb3guZGlzcGxheU5hbWU9XCJCb3hcIn0sMTMzNTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzMzOSksdCl9LDY3MTA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5EZWZpbml0aW9uTGlzdD12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGE9byhuKDc1MTgpKTt0LkRlZmluaXRpb25MaXN0PWU9Pnt2YXJ7ZGVmaW5pdGlvbnM6dH09ZSxuPXIoZSxbXCJkZWZpbml0aW9uc1wiXSk7cmV0dXJuKDAsaS5qc3gpKHMsT2JqZWN0LmFzc2lnbih7fSxuLHtyb2xlOlwibGlzdFwifSx7Y2hpbGRyZW46KEFycmF5LmlzQXJyYXkodCk/dDpBcnJheS5mcm9tKHQpKS5tYXAoKChbZSx0XSxuKT0+KDAsaS5qc3hzKShsLE9iamVjdC5hc3NpZ24oe3JvbGU6XCJsaXN0aXRlbVwifSx7Y2hpbGRyZW46WygwLGkuanN4KShjLE9iamVjdC5hc3NpZ24oe2lkOmB0ZXJtJHtufWB9LHtjaGlsZHJlbjplfSkpLCgwLGkuanN4KSh1LE9iamVjdC5hc3NpZ24oe1wiYXJpYS1sYWJlbGxlZGJ5XCI6YHRlcm0ke259YH0se2NoaWxkcmVuOnR9KSldfSksYCR7ZX0tJHtufWApKSl9KSl9O2NvbnN0IGw9YS5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgM2ZyO1xuYCxzPWEuZGVmYXVsdC5kbGBcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5gMCAke2UucHgubGFyZ2V9YH07XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5iYXNlfWB9O1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuYCxjPWEuZGVmYXVsdC5kdGBcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0SGVscH07XG4gIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5zbWFsbH07XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRXZWlnaHQubm9ybWFsfTtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbmAsdT1hLmRlZmF1bHQuZGRgXG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuc21hbGx9O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgcGFkZGluZy1ib3R0b206ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuYH0sNTM3NzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNjcxMCksdCl9LDk0MzE6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuR2xvYmFsU3R5bGVzPXZvaWQgMDtjb25zdCByPW4oNzUxOCksbz1uKDM0NzEpLGk9big1NzUpO3QuR2xvYmFsU3R5bGVzPXIuY3JlYXRlR2xvYmFsU3R5bGVgXG4gIC8qKiAtPiBEZWZpbmUgR2xvYmFsIENTUyBWYXJzICovXG4gIDpyb290IHtcbiAgICAtLW9wZW5maW4tdWktZ2xvYmFsQmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQxfTtcbiAgICAtLW9wZW5maW4tdWktZ2xvYmFsVGV4dDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICAtLW9wZW5maW4tdWktZ2xvYmFsUGxhY2Vob2xkZXI6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dFBsYWNlaG9sZGVyfTtcbiAgICAtLW9wZW5maW4tdWktZ2xvYmFsVHlwb2dyYXBoeTogJHtvLlR5cG9ncmFwaHkuYmFzZX07XG4gICAgLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb246ICR7KHt0aGVtZTplfSk9PmUudHJhbnNpdGlvbi5iYXNlfTtcblxuICAgIC8qIE1hcCBvdmVyIHRoZSBwYWxldHRlIGtleXMgYW5kIGNyZWF0ZSB2YXJpYWJsZXMgb3V0IG9mIHRoZW0gKi9cbiAgICAke2kuZ2V0Um9vdENzc1ZhcnN9XG4gIH1cblxuICAvKiogLT4gQGZvbnQtZmFjZSBEZWNsYXJhdGlvbiAqL1xuICAke2kuZ2V0Rm9udEZhY2VzfVxuXG4gIC8qKiAtPiBNaWNybyBSZXNldCAqL1xuICAqIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIC8qKlxuICAgICAqIFByZXZlbnQgYnJvd3NlciBhdXRvLXdlaWdodGluZ1xuICAgICAqIEBsaW5rIGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vYWxtYW5hYy9wcm9wZXJ0aWVzL2YvZm9udC1zeW50aGVzaXMvXG4gICAgICovXG4gICAgZm9udC1zeW50aGVzaXM6IG5vbmU7XG4gIH1cblxuICAvKiogLT4gQXBwbHkgR2xvYmFsIFN0eWxlcyAqL1xuICA6cm9vdCxcbiAgYm9keSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxCYWNrZ3JvdW5kKTtcbiAgICBjb2xvcjogdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUZXh0KTtcbiAgICBmb250OiB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFR5cG9ncmFwaHkpO1xuICB9XG5cbiAgOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW9wZW5maW4tdWktZ2xvYmFsUGxhY2Vob2xkZXIpO1xuICB9XG5cbiAgLyoqIC0+IFJlZHVjZWQgTW90aW9uIChBY2Nlc3NpYmlsaXR5KSAqL1xuICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb24pIHtcbiAgICA6cm9vdCB7XG4gICAgICAtLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbjogJHsoe3RoZW1lOmV9KT0+ZS50cmFuc2l0aW9uLm5vbmV9O1xuICAgIH1cbiAgfVxuYH0sMTA2OTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oOTQzMSksdCl9LDk1MDc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDM0NzEpLHQpLG8obig2NzE0KSx0KSxvKG4oOTI3MiksdCksbyhuKDU3NSksdCksbyhuKDE0NDEpLHQpLG8obig4NzMyKSx0KSxvKG4oNTQ1OSksdCksbyhuKDUzMTcpLHQpLG8obig0MjApLHQpfSw5OTg0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldE1vc3RSZWFkYWJsZT10LmRhcmtlbkNvbG9yPXQubGlnaHRlbkNvbG9yPXZvaWQgMDtjb25zdCBvPXIobig4MjA3KSk7dC5saWdodGVuQ29sb3I9KGUsdCk9PmkoZSxcImxpZ2h0ZW5cIix0KSx0LmRhcmtlbkNvbG9yPShlLHQpPT5pKGUsXCJkYXJrZW5cIix0KTtjb25zdCBpPShlLHQsbik9PntpZihuJiYobjwwfHxuPjEwMCkpdGhyb3cgbmV3IEVycm9yKGAke259IG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMDBgKTtyZXR1cm4oMCxvLmRlZmF1bHQpKGUpW3RdKG4pLnRvU3RyaW5nKCl9O3QuZ2V0TW9zdFJlYWRhYmxlPShlLHQpPT5vLmRlZmF1bHQubW9zdFJlYWRhYmxlKGUsdCkudG9IZXhTdHJpbmcoKX0sODAyOTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29uZmlndXJhdGlvbj12b2lkIDAsdC5Db25maWd1cmF0aW9uPXtmb250TG9hZGluZzpcImNkblwifX0sMzQ3MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGk9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5jZG5Gb250RmFjZUNzcz10Lkljb25TaXplPXQuSWNvblNldD10LlRyYW5zaXRpb249dC5UeXBvZ3JhcGh5PXQuTGluZUhlaWdodD10LkZvbnRXZWlnaHQ9dC5Gb250U2l6ZT10LkZvbnRTdGFjaz10LlNoYWRvdz10LlJhZGl1cz10LlVuaXRQeD10LlVuaXQ9dC5TaXplTmFtZT10LlNpemU9dC5Db2xvcj12b2lkIDA7Y29uc3QgYT1pKG4oMTUyMSkpLGw9aShuKDI3NzIpKSxzPW4oOTI3Mik7dC5Db2xvcj17d2hpdGU6XCIjRkZGRkZGXCIsbGlnaHRHcmF5MTpcIiNGQUZCRkVcIixsaWdodEdyYXkyOlwiI0YzRjVGOFwiLGxpZ2h0R3JheTM6XCIjRUNFRUYxXCIsbGlnaHRHcmF5NDpcIiNERERGRTRcIixsaWdodEdyYXk1OlwiI0M5Q0JEMlwiLG5ldXRyYWxHcmF5OlwiIzdEODA4QVwiLG5ldXRyYWxHcmF5ODA6XCJyZ2JhKDEyNSwxMjgsMTM4LDAuOClcIixzaWx2ZXJHcmF5OlwiI0MwQzFDMlwiLGRhcmtHcmF5MTpcIiM1MzU2NUZcIixkYXJrR3JheTI6XCIjMzgzQTQwXCIsZGFya0dyYXkzOlwiIzJGMzEzNlwiLGRhcmtHcmF5NDpcIiMyNDI2MkJcIixkYXJrR3JheTU6XCIjMUUxRjIzXCIsZGFya0dyYXk2OlwiIzExMTIxNFwiLG9wZW5GaW5EYXJrZXN0OlwiIzNEMzlDRFwiLG9wZW5GaW5EYXJrZXI6XCIjNDY0MkUwXCIsb3BlbkZpbjpcIiM1MDRDRkZcIixvcGVuRmluTGlnaHQ6XCIjNTI1NEZCXCIsb3BlbkZpbkxpZ2h0ZXI6XCIjNUM1RUZFXCIsb3BlbkZpbkxpZ2h0ZXN0OlwiIzY4NjRGRlwiLGZ1bmN0aW9uYWwxOlwiIzIwNzczNVwiLGZ1bmN0aW9uYWwyOlwiIzQ2QzhGMVwiLGZ1bmN0aW9uYWwzOlwiIzBBNzZEM1wiLGZ1bmN0aW9uYWw0OlwiIzZDQURFNVwiLGZ1bmN0aW9uYWw1OlwiIzBBNzZEM1wiLGZ1bmN0aW9uYWw2OlwiIzg4MkJGRVwiLGZ1bmN0aW9uYWw3OlwiI0YzMTgxOFwiLGZ1bmN0aW9uYWw4OlwiI0M5MzQwMFwiLGZ1bmN0aW9uYWw5OlwiI0ZGNUU2MFwiLGZ1bmN0aW9uYWwxMDpcIiNGNDhGMDBcIixwdXJwbGU6XCIjOEM2MUZGXCIsbGlnaHRibHVlOlwiIzM2QzNGRVwiLGFxdWE6XCIjMDBDQzg4XCIseWVsbG93OlwiI0ZGRUIwMFwiLHNhbG1vbjpcIiNGRjhDNENcIixwaW5rOlwiI0ZGNUU2MFwiLGxpZ2h0cGluazpcIiNGRjhGQjhcIix3aGl0ZTAwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjApXCIsd2hpdGUxMDpcInJnYmEoMjU1LDI1NSwyNTUsMC4xKVwiLHdoaXRlMjA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuMilcIix3aGl0ZTMwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjMpXCIsd2hpdGU0MDpcInJnYmEoMjU1LDI1NSwyNTUsMC40KVwiLHdoaXRlNTA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNSlcIix3aGl0ZTYwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjYpXCIsd2hpdGU3MDpcInJnYmEoMjU1LDI1NSwyNTUsMC43KVwiLHdoaXRlODA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuOClcIix3aGl0ZTkwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjkpXCIsYmxhY2swMDpcInJnYmEoMCwwLDAsMC4wKVwiLGJsYWNrMTA6XCJyZ2JhKDAsMCwwLDAuMSlcIixibGFjazIwOlwicmdiYSgwLDAsMCwwLjIpXCIsYmxhY2szMDpcInJnYmEoMCwwLDAsMC4zKVwiLGJsYWNrNDA6XCJyZ2JhKDAsMCwwLDAuNClcIixibGFjazUwOlwicmdiYSgwLDAsMCwwLjUpXCIsYmxhY2s2MDpcInJnYmEoMCwwLDAsMC42KVwiLGJsYWNrNzA6XCJyZ2JhKDAsMCwwLDAuNylcIixibGFjazgwOlwicmdiYSgwLDAsMCwwLjgpXCIsYmxhY2s5MDpcInJnYmEoMCwwLDAsMC45KVwiLHRyYW5zcGFyZW50OlwidHJhbnNwYXJlbnRcIn0sdC5TaXplPXt4c21hbGw6XCJ4c21hbGxcIixzbWFsbDpcInNtYWxsXCIsYmFzZTpcImJhc2VcIixsYXJnZTpcImxhcmdlXCIseGxhcmdlOlwieGxhcmdlXCIseHhsYXJnZTpcInh4bGFyZ2VcIix4eHhsYXJnZTpcInh4eGxhcmdlXCIseHh4eGxhcmdlOlwieHh4eGxhcmdlXCJ9LHQuU2l6ZU5hbWU9e1t0LlNpemUueHNtYWxsXTpcIkV4dHJhIFNtYWxsXCIsW3QuU2l6ZS5zbWFsbF06XCJTbWFsbFwiLFt0LlNpemUuYmFzZV06XCJCYXNlXCIsW3QuU2l6ZS5sYXJnZV06XCJMYXJnZVwiLFt0LlNpemUueGxhcmdlXTpcIkV4dHJhIExhcmdlXCIsW3QuU2l6ZS54eGxhcmdlXTpcIjJYIExhcmdlXCIsW3QuU2l6ZS54eHhsYXJnZV06XCIzWCBMYXJnZVwiLFt0LlNpemUueHh4eGxhcmdlXTpcIjRYIExhcmdlXCJ9LHQuVW5pdD17W3QuU2l6ZS54c21hbGxdOjQsW3QuU2l6ZS5zbWFsbF06OCxbdC5TaXplLmJhc2VdOjEyLFt0LlNpemUubGFyZ2VdOjE2LFt0LlNpemUueGxhcmdlXToyMCxbdC5TaXplLnh4bGFyZ2VdOjI0LFt0LlNpemUueHh4bGFyZ2VdOjMyLFt0LlNpemUueHh4eGxhcmdlXTo0OH0sdC5Vbml0UHg9e1t0LlNpemUueHNtYWxsXTpcIjRweFwiLFt0LlNpemUuc21hbGxdOlwiOHB4XCIsW3QuU2l6ZS5iYXNlXTpcIjEycHhcIixbdC5TaXplLmxhcmdlXTpcIjE2cHhcIixbdC5TaXplLnhsYXJnZV06XCIyMHB4XCIsW3QuU2l6ZS54eGxhcmdlXTpcIjI0cHhcIixbdC5TaXplLnh4eGxhcmdlXTpcIjMycHhcIixbdC5TaXplLnh4eHhsYXJnZV06XCI0OHB4XCJ9LHQuUmFkaXVzPXtbdC5TaXplLnhzbWFsbF06XCIycHhcIixbdC5TaXplLnNtYWxsXTpcIjRweFwiLFt0LlNpemUuYmFzZV06XCI4cHhcIixbdC5TaXplLmxhcmdlXTpcIjI0cHhcIixwaWxsOlwiMTAwdmhcIixyb3VuZDpcIjUwJVwiLG5vbmU6XCIwXCJ9LHQuU2hhZG93PXtbdC5TaXplLmJhc2VdOlwiMCA0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yNSlcIn0sdC5Gb250U3RhY2s9W1wiSW50ZXJcIixcIi1hcHBsZS1zeXN0ZW1cIixcIkJsaW5rTWFjU3lzdGVtRm9udFwiLFwiU2Vnb2UgVUlcIixcIlJvYm90b1wiLFwiT3h5Z2VuLVNhbnNcIixcIlVidW50dVwiLFwiQ2FudGFyZWxsXCIsXCJIZWx2ZXRpY2EgTmV1ZVwiLFwic2Fucy1zZXJpZlwiXS5qb2luKFwiLCBcIiksdC5Gb250U2l6ZT17W3QuU2l6ZS54c21hbGxdOlwiOHB4XCIsW3QuU2l6ZS5zbWFsbF06XCIxMHB4XCIsW3QuU2l6ZS5iYXNlXTpcIjEycHhcIixbdC5TaXplLmxhcmdlXTpcIjE0cHhcIixbdC5TaXplLnhsYXJnZV06XCIxNnB4XCIsW3QuU2l6ZS54eGxhcmdlXTpcIjE4cHhcIixbdC5TaXplLnh4eGxhcmdlXTpcIjIwcHhcIixbdC5TaXplLnh4eHhsYXJnZV06XCI0MHB4XCJ9LHQuRm9udFdlaWdodD17bm9ybWFsOjQwMCxib2xkOjYwMH0sdC5MaW5lSGVpZ2h0PXt1aToxLGhlYWRpbmc6MS4yLHRleHQ6MS41fSx0LlR5cG9ncmFwaHk9e2Jhc2U6YCR7dC5Gb250U2l6ZS5iYXNlfS8ke3QuTGluZUhlaWdodC50ZXh0fSAke3QuRm9udFN0YWNrfWB9LHQuVHJhbnNpdGlvbj17YmFzZTpcIjIwMG1zIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpXCIsbm9uZTpcIjBtc1wifSx0Lkljb25TZXQ9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLGwpLHQuSWNvblNpemU9e1t0LlNpemUueHNtYWxsXTp0LlVuaXRQeC5zbWFsbCxbdC5TaXplLnNtYWxsXTp0LlVuaXRQeC5iYXNlLFt0LlNpemUuYmFzZV06XCIxNXB4XCIsW3QuU2l6ZS5sYXJnZV06dC5Vbml0UHgueGxhcmdlLFt0LlNpemUueGxhcmdlXTp0LlVuaXRQeC54eGxhcmdlLFt0LlNpemUueHhsYXJnZV06dC5Vbml0UHgueHh4bGFyZ2UsW3QuU2l6ZS54eHhsYXJnZV06dC5Vbml0UHgueHh4eGxhcmdlfSx0LmNkbkZvbnRGYWNlQ3NzPSgwLHMuY3JlYXRlRm9udEZhY2VDc3MpKHtyZWd1bGFyOlwiLy9jZG4ub3BlbmZpbi5jby9mb250cy9pbnRlci9JbnRlci1SZWd1bGFyLndvZmYyP3YzLjE1XCIsaXRhbGljOlwiLy9jZG4ub3BlbmZpbi5jby9mb250cy9pbnRlci9JbnRlci1JdGFsaWMud29mZjI/djMuMTVcIixzZW1pQm9sZDpcIi8vY2RuLm9wZW5maW4uY28vZm9udHMvaW50ZXIvSW50ZXItU2VtaUJvbGQud29mZjI/djMuMTVcIixzZW1pQm9sZEl0YWxpYzpcIi8vY2RuLm9wZW5maW4uY28vZm9udHMvaW50ZXIvSW50ZXItU2VtaUJvbGRJdGFsaWMud29mZjI/djMuMTVcIn0pfSw5MjcyOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNyZWF0ZUZvbnRGYWNlQ3NzPXZvaWQgMDtjb25zdCByPW4oNzUxOCksbz1uKDM0NzEpO3QuY3JlYXRlRm9udEZhY2VDc3M9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY3NzYFxuICAgIEBmb250LWZhY2Uge1xuICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICBzcmM6IHVybCgke2UucmVndWxhcn0pIGZvcm1hdCgnd29mZjInKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke28uRm9udFdlaWdodC5ub3JtYWx9O1xuICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgIH1cbiAgICBAZm9udC1mYWNlIHtcbiAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInO1xuICAgICAgc3JjOiB1cmwoJHtlLml0YWxpY30pIGZvcm1hdCgnd29mZjInKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke28uRm9udFdlaWdodC5ub3JtYWx9O1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgIH1cblxuICAgIEBmb250LWZhY2Uge1xuICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICBzcmM6IHVybCgke2Uuc2VtaUJvbGR9KSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgICBmb250LXdlaWdodDogJHtvLkZvbnRXZWlnaHQuYm9sZH07XG4gICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgfVxuXG4gICAgQGZvbnQtZmFjZSB7XG4gICAgICBmb250LWZhbWlseTogJ0ludGVyJztcbiAgICAgIHNyYzogdXJsKCR7ZS5zZW1pQm9sZEl0YWxpY30pIGZvcm1hdCgnd29mZjInKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke28uRm9udFdlaWdodC5ib2xkfTtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICB9XG4gIGB9fSw2NzE0OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNyZWF0ZVRoZW1lPXZvaWQgMDtjb25zdCByPW4oODAyOSksbz1uKDM0NzEpLGk9big5OTg0KSxhPW4oNTQ1OSksbD17X2NvbmZpZzpyLkNvbmZpZ3VyYXRpb24sX2NvbG9yOm8uQ29sb3IsZm9udFNpemU6by5Gb250U2l6ZSxmb250V2VpZ2h0Om8uRm9udFdlaWdodCxsaW5lSGVpZ2h0Om8uTGluZUhlaWdodCxpY29uU2l6ZTpvLkljb25TaXplLHJhZGl1czpvLlJhZGl1cyxzaGFkb3c6by5TaGFkb3csdHJhbnNpdGlvbjpvLlRyYW5zaXRpb24sdW5pdDpvLlVuaXQscHg6by5Vbml0UHh9LHM9KGUsdCk9Pih7W2Ake2V9QWN0aXZlYF06KDAsaS5kYXJrZW5Db2xvcikodCwyKSxbYCR7ZX1Ib3ZlcmBdOigwLGkubGlnaHRlbkNvbG9yKSh0LDUpLFtgJHtlfUZvY3VzZWRgXTooMCxpLmdldE1vc3RSZWFkYWJsZSkodCxbby5Db2xvci53aGl0ZSxvLkNvbG9yLmRhcmtHcmF5NV0pLFtgJHtlfVRleHRgXTooMCxpLmdldE1vc3RSZWFkYWJsZSkodCxbby5Db2xvci53aGl0ZSxvLkNvbG9yLmRhcmtHcmF5NV0pfSk7dC5jcmVhdGVUaGVtZT0oZSx0PVwiZGFya1wiKT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGwpLHtwYWxldHRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHMoYS5QYWxldHRlLmJyYW5kUHJpbWFyeSxlLmJyYW5kUHJpbWFyeSkpLHMoYS5QYWxldHRlLmJyYW5kU2Vjb25kYXJ5LGUuYnJhbmRTZWNvbmRhcnkpKX0pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3NlbGVjdGVkU2NoZW1lOnR9KX19LDU3NTooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZXRTdGF0dXNDb2xvcj10LmdldEZvbnRGYWNlcz10LmdldFJvb3RDc3NWYXJzPXQuZ2V0VmFyaWFudENTUz12b2lkIDA7Y29uc3Qgcj1uKDM0NzEpLG89big1NDU5KTt0LmdldFZhcmlhbnRDU1M9KGUsdCk9Pm49PmVbdF1bblt0XV0sdC5nZXRSb290Q3NzVmFycz0oe3RoZW1lOmV9KT0+T2JqZWN0LmtleXMoby5QYWxldHRlKS5tYXAoKHQ9PmAtLW9wZW5maW4tdWktJHt0fTogJHtlLnBhbGV0dGVbdF19O2ApKS5qb2luKFwiXFxuXCIpLHQuZ2V0Rm9udEZhY2VzPSh7dGhlbWU6ZX0pPT5cImltcG9ydFwiPT09ZS5fY29uZmlnLmZvbnRMb2FkaW5nP2UuX2NvbmZpZy5mb250Q3NzOnIuY2RuRm9udEZhY2VDc3MsdC5nZXRTdGF0dXNDb2xvcj0oZSx0LG4pPT57c3dpdGNoKHQpe2Nhc2VcImFjdGl2ZVwiOnJldHVybiBlLnBhbGV0dGUuc3RhdHVzQWN0aXZlO2Nhc2VcImNyaXRpY2FsXCI6cmV0dXJuIGUucGFsZXR0ZS5zdGF0dXNDcml0aWNhbDtjYXNlXCJ3YXJuaW5nXCI6cmV0dXJuIGUucGFsZXR0ZS5zdGF0dXNXYXJuaW5nO2Nhc2VcInN1Y2Nlc3NcIjpyZXR1cm4gZS5wYWxldHRlLnN0YXR1c1N1Y2Nlc3M7ZGVmYXVsdDpyZXR1cm4gbj9lLnBhbGV0dGVbbl06XCJpbmhlcml0XCJ9fX0sMTQ0MTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSw4NzMyOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk1peGlucz12b2lkIDA7Y29uc3Qgcj1uKDM0NzEpLG89big3NTE4KSxpPW8uY3NzYFxuICB1c2VyLXNlbGVjdDogbm9uZTtcbmAsYT1vLmNzc2BcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gLGw9by5jc3NgXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogdmFyKC0tc2Nyb2xsYmFyU2l6ZSwgJHtyLlVuaXRQeC54c21hbGx9KTtcbiAgICBoZWlnaHQ6IHZhcigtLXNjcm9sbGJhclNpemUsICR7ci5Vbml0UHgueHNtYWxsfSk7XG4gIH1cblxuICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogJHtyLkNvbG9yLm5ldXRyYWxHcmF5ODB9O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNjcm9sbGJhclNpemUsICR7ci5Vbml0UHgueHNtYWxsfSk7XG4gICAgb3BhY2l0eTogMC44O1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICR7ci5Db2xvci53aGl0ZTgwfTtcbiAgICB3aWR0aDogdmFyKC0tc2Nyb2xsYmFyU2l6ZSwgJHtyLlVuaXRQeC54c21hbGx9KTtcbiAgICBoZWlnaHQ6IHZhcigtLXNjcm9sbGJhclNpemUsICR7ci5Vbml0UHgueHNtYWxsfSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2Nyb2xsYmFyU2l6ZSwgJHtyLlVuaXRQeC54c21hbGx9KTtcbiAgICBvcGFjaXR5OiAwLjg7XG4gIH1cbmAscz1vLmNzc2BcbiAgLS1zY3JvbGxiYXJTaXplOiAycHg7XG4gICR7bH07XG5gLGM9by5jc3NgXG4gIC13ZWJraXQtYXBwLXJlZ2lvbjogZHJhZztcbmAsdT1vLmNzc2BcbiAgLXdlYmtpdC1hcHAtcmVnaW9uOiBuby1kcmFnO1xuYDt0Lk1peGlucz17bm9TZWxlY3Q6aSx0ZXh0T3ZlcmZsb3c6YSxzY3JvbGxiYXI6e1tyLlNpemUuYmFzZV06bCxbci5TaXplLnNtYWxsXTpzfSxhcHBSZWdpb246e2RyYWc6Yyxub0RyYWc6dX19fSw1NDU5OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5QYWxldHRlPXZvaWQgMCx0LlBhbGV0dGU9e2JhY2tncm91bmQxOlwiYmFja2dyb3VuZDFcIixiYWNrZ3JvdW5kMjpcImJhY2tncm91bmQyXCIsYmFja2dyb3VuZDM6XCJiYWNrZ3JvdW5kM1wiLGJhY2tncm91bmQ0OlwiYmFja2dyb3VuZDRcIixiYWNrZ3JvdW5kNTpcImJhY2tncm91bmQ1XCIsYmFja2dyb3VuZDY6XCJiYWNrZ3JvdW5kNlwiLGJyYW5kUHJpbWFyeTpcImJyYW5kUHJpbWFyeVwiLGJyYW5kU2Vjb25kYXJ5OlwiYnJhbmRTZWNvbmRhcnlcIixicmFuZFByaW1hcnlBY3RpdmU6XCJicmFuZFByaW1hcnlBY3RpdmVcIixicmFuZFByaW1hcnlIb3ZlcjpcImJyYW5kUHJpbWFyeUhvdmVyXCIsYnJhbmRQcmltYXJ5Rm9jdXNlZDpcImJyYW5kUHJpbWFyeUZvY3VzZWRcIixicmFuZFByaW1hcnlUZXh0OlwiYnJhbmRQcmltYXJ5VGV4dFwiLGJyYW5kU2Vjb25kYXJ5QWN0aXZlOlwiYnJhbmRTZWNvbmRhcnlBY3RpdmVcIixicmFuZFNlY29uZGFyeUhvdmVyOlwiYnJhbmRTZWNvbmRhcnlIb3ZlclwiLGJyYW5kU2Vjb25kYXJ5Rm9jdXNlZDpcImJyYW5kU2Vjb25kYXJ5Rm9jdXNlZFwiLGJyYW5kU2Vjb25kYXJ5VGV4dDpcImJyYW5kU2Vjb25kYXJ5VGV4dFwiLGlucHV0QmFja2dyb3VuZDpcImlucHV0QmFja2dyb3VuZFwiLGlucHV0Q29sb3I6XCJpbnB1dENvbG9yXCIsaW5wdXRQbGFjZWhvbGRlcjpcImlucHV0UGxhY2Vob2xkZXJcIixpbnB1dERpc2FibGVkOlwiaW5wdXREaXNhYmxlZFwiLGlucHV0Rm9jdXNlZDpcImlucHV0Rm9jdXNlZFwiLGlucHV0Qm9yZGVyOlwiaW5wdXRCb3JkZXJcIixzdGF0dXNTdWNjZXNzOlwic3RhdHVzU3VjY2Vzc1wiLHN0YXR1c1dhcm5pbmc6XCJzdGF0dXNXYXJuaW5nXCIsc3RhdHVzQ3JpdGljYWw6XCJzdGF0dXNDcml0aWNhbFwiLHN0YXR1c0FjdGl2ZTpcInN0YXR1c0FjdGl2ZVwiLHRleHREZWZhdWx0OlwidGV4dERlZmF1bHRcIix0ZXh0SGVscDpcInRleHRIZWxwXCIsdGV4dEluYWN0aXZlOlwidGV4dEluYWN0aXZlXCIsYm9yZGVyTmV1dHJhbDpcImJvcmRlck5ldXRyYWxcIixjb250ZW50QmFja2dyb3VuZDE6XCJjb250ZW50QmFja2dyb3VuZDFcIixjb250ZW50QmFja2dyb3VuZDI6XCJjb250ZW50QmFja2dyb3VuZDJcIixjb250ZW50QmFja2dyb3VuZDM6XCJjb250ZW50QmFja2dyb3VuZDNcIixjb250ZW50QmFja2dyb3VuZDQ6XCJjb250ZW50QmFja2dyb3VuZDRcIixjb250ZW50QmFja2dyb3VuZDU6XCJjb250ZW50QmFja2dyb3VuZDVcIixsaW5rRGVmYXVsdDpcImxpbmtEZWZhdWx0XCIsbGlua0hvdmVyOlwibGlua0hvdmVyXCJ9fSw1MzE3OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LDQyNjY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDk0ODMpLHQpfSw5NDgzOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk9wZW5GaW5EYXJrVGhlbWU9dC5PcGVuRmluTGlnaHRUaGVtZT12b2lkIDA7Y29uc3Qgcj1uKDU0NTkpLG89bigzNDcxKSxpPW4oNjcxNCksYT17W3IuUGFsZXR0ZS5icmFuZFByaW1hcnldOm8uQ29sb3Iub3BlbkZpbixbci5QYWxldHRlLnN0YXR1c1N1Y2Nlc3NdOm8uQ29sb3IuZnVuY3Rpb25hbDEsW3IuUGFsZXR0ZS5zdGF0dXNXYXJuaW5nXTpvLkNvbG9yLmZ1bmN0aW9uYWwxMCxbci5QYWxldHRlLnN0YXR1c0NyaXRpY2FsXTpvLkNvbG9yLmZ1bmN0aW9uYWw3LFtyLlBhbGV0dGUuc3RhdHVzQWN0aXZlXTpvLkNvbG9yLmZ1bmN0aW9uYWwzLFtyLlBhbGV0dGUuYm9yZGVyTmV1dHJhbF06by5Db2xvci5zaWx2ZXJHcmF5LFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQxXTpvLkNvbG9yLm9wZW5GaW4sW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDJdOlwiIzAwMDAwMFwiLFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQzXTpcIiMwMDAwMDBcIixbci5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kNF06XCIjMDAwMDAwXCIsW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDVdOlwiIzAwMDAwMFwiLFtyLlBhbGV0dGUubGlua0RlZmF1bHRdOm8uQ29sb3IuZnVuY3Rpb25hbDQsW3IuUGFsZXR0ZS5saW5rSG92ZXJdOm8uQ29sb3IuZnVuY3Rpb25hbDV9O3QuT3BlbkZpbkxpZ2h0VGhlbWU9KDAsaS5jcmVhdGVUaGVtZSkoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLHtbci5QYWxldHRlLmJhY2tncm91bmQxXTpvLkNvbG9yLndoaXRlLFtyLlBhbGV0dGUuYmFja2dyb3VuZDJdOm8uQ29sb3IubGlnaHRHcmF5MSxbci5QYWxldHRlLmJhY2tncm91bmQzXTpvLkNvbG9yLmxpZ2h0R3JheTIsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNF06by5Db2xvci5saWdodEdyYXkzLFtyLlBhbGV0dGUuYmFja2dyb3VuZDVdOm8uQ29sb3IubGlnaHRHcmF5Myxbci5QYWxldHRlLmJhY2tncm91bmQ2XTpvLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS5icmFuZFNlY29uZGFyeV06by5Db2xvci5saWdodEdyYXk0LFtyLlBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kXTpvLkNvbG9yLmxpZ2h0R3JheTMsW3IuUGFsZXR0ZS5pbnB1dENvbG9yXTpvLkNvbG9yLmRhcmtHcmF5NSxbci5QYWxldHRlLmlucHV0UGxhY2Vob2xkZXJdOm8uQ29sb3IuZGFya0dyYXkyLFtyLlBhbGV0dGUuaW5wdXREaXNhYmxlZF06by5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLmlucHV0Rm9jdXNlZF06by5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUuaW5wdXRCb3JkZXJdOm8uQ29sb3IubmV1dHJhbEdyYXksW3IuUGFsZXR0ZS50ZXh0RGVmYXVsdF06by5Db2xvci5kYXJrR3JheTUsW3IuUGFsZXR0ZS50ZXh0SGVscF06by5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLnRleHRJbmFjdGl2ZV06by5Db2xvci5uZXV0cmFsR3JheX0pLFwibGlnaHRcIiksdC5PcGVuRmluRGFya1RoZW1lPSgwLGkuY3JlYXRlVGhlbWUpKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx7W3IuUGFsZXR0ZS5iYWNrZ3JvdW5kMV06by5Db2xvci5kYXJrR3JheTYsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kMl06by5Db2xvci5kYXJrR3JheTUsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kM106by5Db2xvci5kYXJrR3JheTQsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNF06by5Db2xvci5kYXJrR3JheTMsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNV06by5Db2xvci5kYXJrR3JheTIsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNl06by5Db2xvci5kYXJrR3JheTEsW3IuUGFsZXR0ZS5icmFuZFNlY29uZGFyeV06by5Db2xvci5kYXJrR3JheTIsW3IuUGFsZXR0ZS5pbnB1dEJhY2tncm91bmRdOm8uQ29sb3IuZGFya0dyYXkxLFtyLlBhbGV0dGUuaW5wdXRDb2xvcl06by5Db2xvci53aGl0ZSxbci5QYWxldHRlLmlucHV0UGxhY2Vob2xkZXJdOm8uQ29sb3IubGlnaHRHcmF5NSxbci5QYWxldHRlLmlucHV0RGlzYWJsZWRdOm8uQ29sb3IubmV1dHJhbEdyYXksW3IuUGFsZXR0ZS5pbnB1dEZvY3VzZWRdOm8uQ29sb3IubGlnaHRHcmF5NSxbci5QYWxldHRlLmlucHV0Qm9yZGVyXTpvLkNvbG9yLm5ldXRyYWxHcmF5LFtyLlBhbGV0dGUudGV4dERlZmF1bHRdOm8uQ29sb3Iud2hpdGUsW3IuUGFsZXR0ZS50ZXh0SGVscF06by5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUudGV4dEluYWN0aXZlXTpvLkNvbG9yLm5ldXRyYWxHcmF5fSksXCJkYXJrXCIpfSw0MjA6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVGhlbWVQcm92aWRlcj12b2lkIDA7Y29uc3Qgcj1uKDU4OTMpLG89big3NTE4KSxpPW4oNzA4OCksYT1uKDEwNjkpO3QuVGhlbWVQcm92aWRlcj0oe2NoaWxkcmVuOmUsdGhlbWVzOnQsc2NoZW1lOm4sY29uZmlnOmwsaW5jbHVkZUdsb2JhbFN0eWxlczpzPSEwfSk9Pntjb25zdCBjPSgwLGkudXNlVGhlbWUpKHt0aGVtZXM6dCxzY2hlbWU6bixjb25maWc6bH0pO3JldHVybigwLHIuanN4KShvLlRoZW1lUHJvdmlkZXIsT2JqZWN0LmFzc2lnbih7dGhlbWU6Y30se2NoaWxkcmVuOigwLHIuanN4cykoci5GcmFnbWVudCx7Y2hpbGRyZW46W3MmJigwLHIuanN4KShhLkdsb2JhbFN0eWxlcyx7fSksZV19KX0pKX19LDk3NTg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29udGFjdFN0YXR1c0ljb249dm9pZCAwO2NvbnN0IG89big1ODkzKSxpPXIobig3NTE4KSksYT1uKDEzMzMpLGw9e2F2YWlsYWJsZTooMCxvLmpzeCkoYS5DaGVja1NWRyx7fSksYXdheTooMCxvLmpzeCkoYS5CdXN5U1ZHLHt9KSxcImRvLW5vdC1kaXN0dXJiXCI6KDAsby5qc3gpKGEuRG9Ob3REaXN0dXJiU1ZHLHt9KSxvZmZsaW5lOigwLG8uanN4KShhLk9mZmxpbmVTVkcse30pLGJ1c3k6bnVsbH07dC5Db250YWN0U3RhdHVzSWNvbj0oe29ubGluZVN0YXR1czplfSk9PmU/KDAsby5qc3gpKHMsT2JqZWN0LmFzc2lnbih7b25saW5lU3RhdHVzOmV9LHtjaGlsZHJlbjpsW2VdfHxudWxsfSkpOm51bGw7Y29uc3Qgcz1pLmRlZmF1bHQuZGl2YFxuICBib3JkZXI6IDEuNnB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kMX07XG5cbiAgYmFja2dyb3VuZDogJHsoe29ubGluZVN0YXR1czplLHRoZW1lOnR9KT0+XCJidXN5XCI9PT1lP1wiI0MyMTMxM1wiOnQucGFsZXR0ZS5iYWNrZ3JvdW5kMX07XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuICBoZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9O1xuICB3aWR0aDogJHsoe3RoZW1lOmV9KT0+ZS5weC5sYXJnZX07XG5cbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA3OC45NSU7XG4gIHJpZ2h0OiAtNy4wMiU7XG4gIHRvcDogNzcuMTIlO1xuICBib3R0b206IC00LjI0JTtcbmB9LDEzMzM6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT2ZmbGluZVNWRz10LkRvTm90RGlzdHVyYlNWRz10LkJ1c3lTVkc9dC5DaGVja1NWRz12b2lkIDA7Y29uc3Qgcj1uKDU4OTMpO3QuQ2hlY2tTVkc9KCk9PigwLHIuanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0se2NoaWxkcmVuOigwLHIuanN4KShcInBhdGhcIix7ZDpcIk04IDBDOC43MzQzOCAwIDkuNDQwMSAwLjA5NjM1NDIgMTAuMTE3MiAwLjI4OTA2M0MxMC43OTQzIDAuNDgxNzcxIDExLjQyOTcgMC43NTI2MDQgMTIuMDIzNCAxLjEwMTU2QzEyLjYxNzIgMS40NTA1MiAxMy4xNTYzIDEuODY5NzkgMTMuNjQwNiAyLjM1OTM4QzE0LjEzMDIgMi44NDM3NSAxNC41NDk1IDMuMzgyODEgMTQuODk4NCAzLjk3NjU2QzE1LjI0NzQgNC41NzAzMSAxNS41MTgyIDUuMjA1NzMgMTUuNzEwOSA1Ljg4MjgxQzE1LjkwMzYgNi41NTk5IDE2IDcuMjY1NjMgMTYgOEMxNiA4LjcyOTE3IDE1LjkwMzYgOS40MzQ5IDE1LjcxMDkgMTAuMTE3MkMxNS41MTgyIDEwLjc5NDMgMTUuMjQ3NCAxMS40Mjk3IDE0Ljg5ODQgMTIuMDIzNEMxNC41NDk1IDEyLjYxNzIgMTQuMTMwMiAxMy4xNTg5IDEzLjY0MDYgMTMuNjQ4NEMxMy4xNTYzIDE0LjEzMjggMTIuNjE3MiAxNC41NDk1IDEyLjAyMzQgMTQuODk4NEMxMS40Mjk3IDE1LjI0NzQgMTAuNzkxNyAxNS41MTgyIDEwLjEwOTQgMTUuNzEwOUM5LjQzMjI5IDE1LjkwMzYgOC43MjkxNyAxNiA4IDE2QzcuMjcwODMgMTYgNi41NjUxIDE1LjkwMzYgNS44ODI4MSAxNS43MTA5QzUuMjA1NzMgMTUuNTE4MiA0LjU3MDMxIDE1LjI0NzQgMy45NzY1NiAxNC44OTg0QzMuMzgyODEgMTQuNTQ5NSAyLjg0MTE1IDE0LjEzMjggMi4zNTE1NiAxMy42NDg0QzEuODY3MTkgMTMuMTU4OSAxLjQ1MDUyIDEyLjYxNzIgMS4xMDE1NiAxMi4wMjM0QzAuNzUyNjA0IDExLjQyOTcgMC40ODE3NzEgMTAuNzk0MyAwLjI4OTA2MyAxMC4xMTcyQzAuMDk2MzU0MiA5LjQzNDkgMCA4LjcyOTE3IDAgOEMwIDcuMjcwODMgMC4wOTYzNTQyIDYuNTY3NzEgMC4yODkwNjMgNS44OTA2M0MwLjQ4MTc3MSA1LjIwODMzIDAuNzUyNjA0IDQuNTcwMzEgMS4xMDE1NiAzLjk3NjU2QzEuNDUwNTIgMy4zODI4MSAxLjg2NzE5IDIuODQzNzUgMi4zNTE1NiAyLjM1OTM4QzIuODQxMTUgMS44Njk3OSAzLjM4MjgxIDEuNDUwNTIgMy45NzY1NiAxLjEwMTU2QzQuNTcwMzEgMC43NTI2MDQgNS4yMDU3MyAwLjQ4MTc3MSA1Ljg4MjgxIDAuMjg5MDYzQzYuNTY1MSAwLjA5NjM1NDIgNy4yNzA4MyAwIDggMFpNMTAuNjMyOCA1LjY4NzVDMTAuNDI0NSA1LjY4NzUgMTAuMjQ3NCA1Ljc2MDQyIDEwLjEwMTYgNS45MDYyNUw3LjI3MzQ0IDguNzVMNi4yNjU2MyA3Ljc1QzYuMTE5NzkgNy42MDQxNyA1Ljk0NTMxIDcuNTMxMjUgNS43NDIxOSA3LjUzMTI1QzUuNjQzMjMgNy41MzEyNSA1LjU0OTQ4IDcuNTUyMDggNS40NjA5NCA3LjU5Mzc1QzUuMzcyNCA3LjYzNTQyIDUuMjkxNjcgNy42OTI3MSA1LjIxODc1IDcuNzY1NjNDNS4xNTEwNCA3LjgzMzMzIDUuMDk2MzUgNy45MTE0NiA1LjA1NDY5IDhDNS4wMTMwMiA4LjA4ODU0IDQuOTkyMTkgOC4xODIyOSA0Ljk5MjE5IDguMjgxMjVDNC45OTIxOSA4LjQ4OTU4IDUuMDY1MSA4LjY2NjY3IDUuMjEwOTQgOC44MTI1TDYuNzQyMTkgMTAuMzQzOEM2Ljg4ODAyIDEwLjQ4OTYgNy4wNjUxIDEwLjU2MjUgNy4yNzM0NCAxMC41NjI1QzcuNDgxNzcgMTAuNTYyNSA3LjY1ODg1IDEwLjQ4OTYgNy44MDQ2OSAxMC4zNDM4TDExLjE2NDEgNi45Njg3NUMxMS4zMDk5IDYuODIyOTIgMTEuMzgyOCA2LjY0NTgzIDExLjM4MjggNi40Mzc1QzExLjM4MjggNi4zMzg1NCAxMS4zNjIgNi4yNDQ3OSAxMS4zMjAzIDYuMTU2MjVDMTEuMjc4NiA2LjA2NzcxIDExLjIyMTQgNS45ODk1OCAxMS4xNDg0IDUuOTIxODhDMTEuMDgwNyA1Ljg0ODk2IDExLjAwMjYgNS43OTE2NyAxMC45MTQxIDUuNzVDMTAuODI1NSA1LjcwODMzIDEwLjczMTggNS42ODc1IDEwLjYzMjggNS42ODc1WlwiLGZpbGw6XCIjMjA3NzM1XCJ9KX0pKSx0LkJ1c3lTVkc9KCk9PigwLHIuanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxN1wiLHZpZXdCb3g6XCIwIDAgMTYgMTdcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0se2NoaWxkcmVuOigwLHIuanN4KShcInBhdGhcIix7ZDpcIk04IDAuNzkwMjM3QzguNzM0MzggMC43OTAyMzcgOS40NDAxIDAuODg2NTkyIDEwLjExNzIgMS4wNzkzQzEwLjc5NDMgMS4yNzIwMSAxMS40Mjk3IDEuNTQyODQgMTIuMDIzNCAxLjg5MThDMTIuNjE3MiAyLjI0MDc2IDEzLjE1NjMgMi42NjAwMyAxMy42NDA2IDMuMTQ5NjFDMTQuMTMwMiAzLjYzMzk5IDE0LjU0OTUgNC4xNzMwNSAxNC44OTg0IDQuNzY2OEMxNS4yNDc0IDUuMzYwNTUgMTUuNTE4MiA1Ljk5NTk3IDE1LjcxMDkgNi42NzMwNUMxNS45MDM2IDcuMzUwMTMgMTYgOC4wNTU4NiAxNiA4Ljc5MDI0QzE2IDkuNTE5NCAxNS45MDM2IDEwLjIyNTEgMTUuNzEwOSAxMC45MDc0QzE1LjUxODIgMTEuNTg0NSAxNS4yNDc0IDEyLjIxOTkgMTQuODk4NCAxMi44MTM3QzE0LjU0OTUgMTMuNDA3NCAxNC4xMzAyIDEzLjk0OTEgMTMuNjQwNiAxNC40Mzg3QzEzLjE1NjMgMTQuOTIzMSAxMi42MTcyIDE1LjMzOTcgMTIuMDIzNCAxNS42ODg3QzExLjQyOTcgMTYuMDM3NiAxMC43OTE3IDE2LjMwODUgMTAuMTA5NCAxNi41MDEyQzkuNDMyMjkgMTYuNjkzOSA4LjcyOTE3IDE2Ljc5MDIgOCAxNi43OTAyQzcuMjcwODMgMTYuNzkwMiA2LjU2NTEgMTYuNjkzOSA1Ljg4MjgxIDE2LjUwMTJDNS4yMDU3MyAxNi4zMDg1IDQuNTcwMzEgMTYuMDM3NiAzLjk3NjU2IDE1LjY4ODdDMy4zODI4MSAxNS4zMzk3IDIuODQxMTUgMTQuOTIzMSAyLjM1MTU2IDE0LjQzODdDMS44NjcxOSAxMy45NDkxIDEuNDUwNTIgMTMuNDA3NCAxLjEwMTU2IDEyLjgxMzdDMC43NTI2MDQgMTIuMjE5OSAwLjQ4MTc3MSAxMS41ODQ1IDAuMjg5MDYzIDEwLjkwNzRDMC4wOTYzNTQyIDEwLjIyNTEgMCA5LjUxOTQgMCA4Ljc5MDI0QzAgOC4wNjEwNyAwLjA5NjM1NDIgNy4zNTc5NSAwLjI4OTA2MyA2LjY4MDg2QzAuNDgxNzcxIDUuOTk4NTcgMC43NTI2MDQgNS4zNjA1NSAxLjEwMTU2IDQuNzY2OEMxLjQ1MDUyIDQuMTczMDUgMS44NjcxOSAzLjYzMzk5IDIuMzUxNTYgMy4xNDk2MUMyLjg0MTE1IDIuNjYwMDMgMy4zODI4MSAyLjI0MDc2IDMuOTc2NTYgMS44OTE4QzQuNTcwMzEgMS41NDI4NCA1LjIwNTczIDEuMjcyMDEgNS44ODI4MSAxLjA3OTNDNi41NjUxIDAuODg2NTkyIDcuMjcwODMgMC43OTAyMzcgOCAwLjc5MDIzN1pNNy4zMjAzMSA0LjA0ODA1QzcuMjEwOTQgNC4wNDgwNSA3LjEwNjc3IDQuMDcxNDkgNy4wMDc4MSA0LjExODM2QzYuOTE0MDYgNC4xNjAwMyA2LjgyODEzIDQuMjE5OTIgNi43NSA0LjI5ODA1QzYuNjc3MDggNC4zNzA5NyA2LjYxNzE5IDQuNDU2OSA2LjU3MDMxIDQuNTU1ODZDNi41Mjg2NSA0LjY0OTYxIDYuNTA3ODEgNC43NTExNyA2LjUwNzgxIDQuODYwNTVWOS4xOTY0OUM2LjUwNzgxIDkuMzA1ODYgNi41Mjg2NSA5LjQxMjYzIDYuNTcwMzEgOS41MTY4QzYuNjExOTggOS42MjA5NyA2LjY3MTg4IDkuNzEyMTEgNi43NSA5Ljc5MDI0TDkuMTg3NSAxMi4yMTIxQzkuMzQ4OTYgMTIuMzczNiA5LjU0MTY3IDEyLjQ1NDMgOS43NjU2MyAxMi40NTQzQzkuODc1IDEyLjQ1NDMgOS45NzkxNyAxMi40MzM1IDEwLjA3ODEgMTIuMzkxOEMxMC4xNzcxIDEyLjM0NDkgMTAuMjYzIDEyLjI4NSAxMC4zMzU5IDEyLjIxMjFDMTAuNDA4OSAxMi4xMzQgMTAuNDY2MSAxMi4wNDU0IDEwLjUwNzggMTEuOTQ2NUMxMC41NTQ3IDExLjg0NzUgMTAuNTc4MSAxMS43NDM0IDEwLjU3ODEgMTEuNjM0QzEwLjU3ODEgMTEuNTI5OCAxMC41NTQ3IDExLjQyODMgMTAuNTA3OCAxMS4zMjkzQzEwLjQ2NjEgMTEuMjI1MSAxMC40MDg5IDExLjEzNjYgMTAuMzM1OSAxMS4wNjM3TDguMTMyODEgOC44NzYxOFY0Ljg2MDU1QzguMTMyODEgNC43NTExNyA4LjEwOTM4IDQuNjQ3MDEgOC4wNjI1IDQuNTQ4MDVDOC4wMjA4MyA0LjQ0OTA5IDcuOTYzNTQgNC4zNjMxNSA3Ljg5MDYzIDQuMjkwMjRDNy44MTc3MSA0LjIxNzMyIDcuNzMxNzcgNC4xNjAwMyA3LjYzMjgxIDQuMTE4MzZDNy41MzM4NSA0LjA3MTQ5IDcuNDI5NjkgNC4wNDgwNSA3LjMyMDMxIDQuMDQ4MDVaXCIsZmlsbDpcIiNGRTlGNERcIn0pfSkpLHQuRG9Ob3REaXN0dXJiU1ZHPSgpPT4oMCxyLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTdcIix2aWV3Qm94OlwiMCAwIDE2IDE3XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LHtjaGlsZHJlbjooMCxyLmpzeCkoXCJwYXRoXCIse2Q6XCJNOCAwLjU5MDI1NkM4LjczNDM4IDAuNTkwMjU2IDkuNDQwMSAwLjY4NjYxIDEwLjExNzIgMC44NzkzMThDMTAuNzk0MyAxLjA3MjAzIDExLjQyOTcgMS4zNDI4NiAxMi4wMjM0IDEuNjkxODJDMTIuNjE3MiAyLjA0MDc4IDEzLjE1NjIgMi40NjAwNSAxMy42NDA2IDIuOTQ5NjNDMTQuMTMwMiAzLjQzNDAxIDE0LjU0OTUgMy45NzMwNyAxNC44OTg0IDQuNTY2ODJDMTUuMjQ3NCA1LjE2MDU3IDE1LjUxODIgNS43OTU5OCAxNS43MTA5IDYuNDczMDdDMTUuOTAzNiA3LjE1MDE1IDE2IDcuODU1ODggMTYgOC41OTAyNkMxNiA5LjMxOTQyIDE1LjkwMzYgMTAuMDI1MiAxNS43MTA5IDEwLjcwNzRDMTUuNTE4MiAxMS4zODQ1IDE1LjI0NzQgMTIuMDE5OSAxNC44OTg0IDEyLjYxMzdDMTQuNTQ5NSAxMy4yMDc0IDE0LjEzMDIgMTMuNzQ5MSAxMy42NDA2IDE0LjIzODdDMTMuMTU2MiAxNC43MjMxIDEyLjYxNzIgMTUuMTM5NyAxMi4wMjM0IDE1LjQ4ODdDMTEuNDI5NyAxNS44Mzc3IDEwLjc5MTcgMTYuMTA4NSAxMC4xMDk0IDE2LjMwMTJDOS40MzIyOSAxNi40OTM5IDguNzI5MTcgMTYuNTkwMyA4IDE2LjU5MDNDNy4yNzA4MyAxNi41OTAzIDYuNTY1MSAxNi40OTM5IDUuODgyODEgMTYuMzAxMkM1LjIwNTczIDE2LjEwODUgNC41NzAzMSAxNS44Mzc3IDMuOTc2NTYgMTUuNDg4N0MzLjM4MjgxIDE1LjEzOTcgMi44NDExNSAxNC43MjMxIDIuMzUxNTYgMTQuMjM4N0MxLjg2NzE5IDEzLjc0OTEgMS40NTA1MiAxMy4yMDc0IDEuMTAxNTYgMTIuNjEzN0MwLjc1MjYwNCAxMi4wMTk5IDAuNDgxNzcxIDExLjM4NDUgMC4yODkwNjIgMTAuNzA3NEMwLjA5NjM1NDIgMTAuMDI1MiAwIDkuMzE5NDIgMCA4LjU5MDI2QzAgNy44NjEwOSAwLjA5NjM1NDIgNy4xNTc5NiAwLjI4OTA2MiA2LjQ4MDg4QzAuNDgxNzcxIDUuNzk4NTkgMC43NTI2MDQgNS4xNjA1NyAxLjEwMTU2IDQuNTY2ODJDMS40NTA1MiAzLjk3MzA3IDEuODY3MTkgMy40MzQwMSAyLjM1MTU2IDIuOTQ5NjNDMi44NDExNSAyLjQ2MDA1IDMuMzgyODEgMi4wNDA3OCAzLjk3NjU2IDEuNjkxODJDNC41NzAzMSAxLjM0Mjg2IDUuMjA1NzMgMS4wNzIwMyA1Ljg4MjgxIDAuODc5MzE4QzYuNTY1MSAwLjY4NjYxIDcuMjcwODMgMC41OTAyNTYgOCAwLjU5MDI1NlpNNS40NzY1NiA3Ljc0NjUxQzUuMzY3MTkgNy43NDY1MSA1LjI2MDQyIDcuNzY5OTQgNS4xNTYyNSA3LjgxNjgyQzUuMDU3MjkgNy44NjM2OSA0Ljk2ODc1IDcuOTI2MTkgNC44OTA2MiA4LjAwNDMyQzQuODEyNSA4LjA4MjQ0IDQuNzUgOC4xNzM1OSA0LjcwMzEyIDguMjc3NzZDNC42NTYyNSA4LjM3NjcxIDQuNjMyODEgOC40ODA4OCA0LjYzMjgxIDguNTkwMjZDNC42MzI4MSA4LjY5OTYzIDQuNjU2MjUgOC44MDY0IDQuNzAzMTIgOC45MTA1N0M0Ljc1IDkuMDA5NTMgNC44MTI1IDkuMDk4MDcgNC44OTA2MiA5LjE3NjE5QzQuOTY4NzUgOS4yNTQzMiA1LjA1NzI5IDkuMzE2ODIgNS4xNTYyNSA5LjM2MzY5QzUuMjYwNDIgOS40MTA1NyA1LjM2NzE5IDkuNDM0MDEgNS40NzY1NiA5LjQzNDAxSDEwLjUyMzRDMTAuNjMyOCA5LjQzNDAxIDEwLjczNyA5LjQxMDU3IDEwLjgzNTkgOS4zNjM2OUMxMC45NDAxIDkuMzE2ODIgMTEuMDMxMiA5LjI1NDMyIDExLjEwOTQgOS4xNzYxOUMxMS4xODc1IDkuMDk4MDcgMTEuMjUgOS4wMDk1MyAxMS4yOTY5IDguOTEwNTdDMTEuMzQzOCA4LjgwNjQgMTEuMzY3MiA4LjY5OTYzIDExLjM2NzIgOC41OTAyNkMxMS4zNjcyIDguNDgwODggMTEuMzQzOCA4LjM3NjcxIDExLjI5NjkgOC4yNzc3NkMxMS4yNSA4LjE3MzU5IDExLjE4NzUgOC4wODI0NCAxMS4xMDk0IDguMDA0MzJDMTEuMDMxMiA3LjkyNjE5IDEwLjk0MDEgNy44NjM2OSAxMC44MzU5IDcuODE2ODJDMTAuNzM3IDcuNzY5OTQgMTAuNjMyOCA3Ljc0NjUxIDEwLjUyMzQgNy43NDY1MUg1LjQ3NjU2WlwiLGZpbGw6XCIjQzIxMzEzXCJ9KX0pKSx0Lk9mZmxpbmVTVkc9KCk9PigwLHIuanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxN1wiLHZpZXdCb3g6XCIwIDAgMTYgMTdcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0se2NoaWxkcmVuOigwLHIuanN4KShcInBhdGhcIix7ZDpcIk04IDAuOTkwMjUyQzguNzM0MzggMC45OTAyNTIgOS40NDAxIDEuMDg2NjEgMTAuMTE3MiAxLjI3OTMxQzEwLjc5NDMgMS40NzIwMiAxMS40Mjk3IDEuNzQyODYgMTIuMDIzNCAyLjA5MTgxQzEyLjYxNzIgMi40NDA3NyAxMy4xNTYyIDIuODYwMDQgMTMuNjQwNiAzLjM0OTYzQzE0LjEzMDIgMy44MzQgMTQuNTQ5NSA0LjM3MzA2IDE0Ljg5ODQgNC45NjY4MUMxNS4yNDc0IDUuNTYwNTYgMTUuNTE4MiA2LjE5NTk4IDE1LjcxMDkgNi44NzMwNkMxNS45MDM2IDcuNTUwMTUgMTYgOC4yNTU4OCAxNiA4Ljk5MDI1QzE2IDkuNzE5NDIgMTUuOTAzNiAxMC40MjUxIDE1LjcxMDkgMTEuMTA3NEMxNS41MTgyIDExLjc4NDUgMTUuMjQ3NCAxMi40MTk5IDE0Ljg5ODQgMTMuMDEzN0MxNC41NDk1IDEzLjYwNzQgMTQuMTMwMiAxNC4xNDkxIDEzLjY0MDYgMTQuNjM4N0MxMy4xNTYyIDE1LjEyMzEgMTIuNjE3MiAxNS41Mzk3IDEyLjAyMzQgMTUuODg4N0MxMS40Mjk3IDE2LjIzNzYgMTAuNzkxNyAxNi41MDg1IDEwLjEwOTQgMTYuNzAxMkM5LjQzMjI5IDE2Ljg5MzkgOC43MjkxNyAxNi45OTAzIDggMTYuOTkwM0M3LjI3MDgzIDE2Ljk5MDMgNi41NjUxIDE2Ljg5MzkgNS44ODI4MSAxNi43MDEyQzUuMjA1NzMgMTYuNTA4NSA0LjU3MDMxIDE2LjIzNzYgMy45NzY1NiAxNS44ODg3QzMuMzgyODEgMTUuNTM5NyAyLjg0MTE1IDE1LjEyMzEgMi4zNTE1NiAxNC42Mzg3QzEuODY3MTkgMTQuMTQ5MSAxLjQ1MDUyIDEzLjYwNzQgMS4xMDE1NiAxMy4wMTM3QzAuNzUyNjA0IDEyLjQxOTkgMC40ODE3NzEgMTEuNzg0NSAwLjI4OTA2MiAxMS4xMDc0QzAuMDk2MzU0MiAxMC40MjUxIDAgOS43MTk0MiAwIDguOTkwMjVDMCA4LjI2MTA5IDAuMDk2MzU0MiA3LjU1Nzk2IDAuMjg5MDYyIDYuODgwODhDMC40ODE3NzEgNi4xOTg1OSAwLjc1MjYwNCA1LjU2MDU2IDEuMTAxNTYgNC45NjY4MUMxLjQ1MDUyIDQuMzczMDYgMS44NjcxOSAzLjgzNCAyLjM1MTU2IDMuMzQ5NjNDMi44NDExNSAyLjg2MDA0IDMuMzgyODEgMi40NDA3NyAzLjk3NjU2IDIuMDkxODFDNC41NzAzMSAxLjc0Mjg2IDUuMjA1NzMgMS40NzIwMiA1Ljg4MjgxIDEuMjc5MzFDNi41NjUxIDEuMDg2NjEgNy4yNzA4MyAwLjk5MDI1MiA4IDAuOTkwMjUyWk04IDIuNjc3NzVDNy40MjE4OCAyLjY3Nzc1IDYuODY0NTggMi43NTMyNyA2LjMyODEyIDIuOTA0MzFDNS43OTE2NyAzLjA1NTM2IDUuMjg5MDYgMy4yNjg5IDQuODIwMzEgMy41NDQ5NEM0LjM1MTU2IDMuODIwOTggMy45MjQ0OCA0LjE1MTcxIDMuNTM5MDYgNC41MzcxM0MzLjE1ODg1IDQuOTE3MzQgMi44MzA3MyA1LjM0MTgxIDIuNTU0NjkgNS44MTA1NkMyLjI3ODY1IDYuMjc5MzEgMi4wNjUxIDYuNzgxOTIgMS45MTQwNiA3LjMxODM4QzEuNzYzMDIgNy44NTQ4NCAxLjY4NzUgOC40MTIxMyAxLjY4NzUgOC45OTAyNUMxLjY4NzUgOS41NjgzOCAxLjc2MzAyIDEwLjEyNTcgMS45MTQwNiAxMC42NjIxQzIuMDY1MSAxMS4xOTg2IDIuMjc4NjUgMTEuNzAxMiAyLjU1NDY5IDEyLjE2OTlDMi44MzA3MyAxMi42Mzg3IDMuMTU4ODUgMTMuMDY1OCAzLjUzOTA2IDEzLjQ1MTJDMy45MjQ0OCAxMy44MzE0IDQuMzUxNTYgMTQuMTU5NSA0LjgyMDMxIDE0LjQzNTZDNS4yODkwNiAxNC43MTE2IDUuNzkxNjcgMTQuOTI1MSA2LjMyODEyIDE1LjA3NjJDNi44NjQ1OCAxNS4yMjcyIDcuNDIxODggMTUuMzAyOCA4IDE1LjMwMjhDOC41NzgxMiAxNS4zMDI4IDkuMTM1NDIgMTUuMjI3MiA5LjY3MTg4IDE1LjA3NjJDMTAuMjA4MyAxNC45MjUxIDEwLjcxMDkgMTQuNzExNiAxMS4xNzk3IDE0LjQzNTZDMTEuNjQ4NCAxNC4xNTk1IDEyLjA3MjkgMTMuODMxNCAxMi40NTMxIDEzLjQ1MTJDMTIuODM4NSAxMy4wNjU4IDEzLjE2OTMgMTIuNjM4NyAxMy40NDUzIDEyLjE2OTlDMTMuNzIxNCAxMS43MDEyIDEzLjkzNDkgMTEuMTk4NiAxNC4wODU5IDEwLjY2MjFDMTQuMjM3IDEwLjEyNTcgMTQuMzEyNSA5LjU2ODM4IDE0LjMxMjUgOC45OTAyNUMxNC4zMTI1IDguNDEyMTMgMTQuMjM3IDcuODU0ODQgMTQuMDg1OSA3LjMxODM4QzEzLjkzNDkgNi43ODE5MiAxMy43MjE0IDYuMjc5MzEgMTMuNDQ1MyA1LjgxMDU2QzEzLjE2OTMgNS4zNDE4MSAxMi44Mzg1IDQuOTE3MzQgMTIuNDUzMSA0LjUzNzEzQzEyLjA3MjkgNC4xNTE3MSAxMS42NDg0IDMuODIwOTggMTEuMTc5NyAzLjU0NDk0QzEwLjcxMDkgMy4yNjg5IDEwLjIwODMgMy4wNTUzNiA5LjY3MTg4IDIuOTA0MzFDOS4xMzU0MiAyLjc1MzI3IDguNTc4MTIgMi42Nzc3NSA4IDIuNjc3NzVaXCIsZmlsbDpcIiM5Nzk3OTdcIn0pfSkpfSwzNDI5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksaT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fSxhPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LGw9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db250YWN0Q2FyZD12b2lkIDA7Y29uc3Qgcz1uKDU4OTMpLGM9aShuKDY2ODkpKSx1PWwobig3NTE4KSksZj1uKDUzNzcpLGQ9big3NDQ0KSxwPW4oOTc1OCksaD1uKDg4MzIpO3QuQ29udGFjdENhcmQ9ZT0+e3ZhcntuYW1lOnQsdGl0bGU6bixwaG90b1VybDpyLHVzZUluaXRpYWxzOm89ITEsZGV0YWlsczppLG9ubGluZVN0YXR1czpsfT1lLHU9YShlLFtcIm5hbWVcIixcInRpdGxlXCIsXCJwaG90b1VybFwiLFwidXNlSW5pdGlhbHNcIixcImRldGFpbHNcIixcIm9ubGluZVN0YXR1c1wiXSk7Y29uc3QgZj1yfHxvLEU9KDAsYy51c2VNZW1vKSgoKCk9PigwLGQuZ2V0SW5pdGlhbHMpKHQpKSxbdF0pLFM9KDAsYy51c2VNZW1vKSgoKCk9PigwLGguZ2VuZXJhdGVDb2xvckZyb21TdHJpbmcpKHQpKSxbdF0pO3JldHVybigwLHMuanN4cykodixPYmplY3QuYXNzaWduKHt9LHUse2NoaWxkcmVuOlsoMCxzLmpzeHMpKGcse2NoaWxkcmVuOltmJiYoMCxzLmpzeHMpKEMsT2JqZWN0LmFzc2lnbih7aWNvbkNvbG9yOlN9LHtjaGlsZHJlbjpbcj8oMCxzLmpzeCkoeSx7YWx0Om4sc3JjOnJ9KTooMCxzLmpzeCkobSx7Y2hpbGRyZW46RX0pLCgwLHMuanN4KShwLkNvbnRhY3RTdGF0dXNJY29uLHtvbmxpbmVTdGF0dXM6bH0pXX0pKSwoMCxzLmpzeHMpKHcse2NoaWxkcmVuOlsoMCxzLmpzeHMpKGIse2NoaWxkcmVuOltcIiBcIix0LFwiIFwiXX0pLG4mJigwLHMuanN4cykoeCx7Y2hpbGRyZW46W1wiIFwiLG4sXCIgXCJdfSldfSldfSksKDAscy5qc3gpKEwse30pLCgwLHMuanN4KShfLHtjaGlsZHJlbjoobnVsbD09aT92b2lkIDA6aS5sZW5ndGgpPjA/aS5tYXAoKChlLG4pPT4oMCxzLmpzeHMpKGMuZGVmYXVsdC5GcmFnbWVudCx7Y2hpbGRyZW46WygwLHMuanN4KShPLHtkZWZpbml0aW9uczplfSksbjxpLmxlbmd0aC0xJiYoMCxzLmpzeCkoTCx7cGFkZGluZzohMH0pXX0sYCR7dH0tZGV0YWlscy0ke259YCkpKTooMCxzLmpzeCkoXCJwXCIse2NoaWxkcmVuOlwiTm8gaW5mb3JtYXRpb24gYXZhaWxhYmxlLlwifSl9KV19KSl9O2NvbnN0IHY9dS5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiAxMDAlO1xuYCxnPXUuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmxhcmdlfTtcbmAsQz11LmRlZmF1bHQuZGl2YFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2U9PmUuaWNvbkNvbG9yfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICBoZWlnaHQ6IDYwcHg7XG4gIHdpZHRoOiA2MHB4O1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmAsbT11LmRlZmF1bHQuc3BhbmBcbiAgZm9udC1zaXplOiAyNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuYCx5PXUuZGVmYXVsdC5pbWdgXG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuYCx3PXUuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgbWluLXdpZHRoOiAwO1xuICBtYXJnaW4tbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbmAsYj11LmRlZmF1bHQuc3BhbmBcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmxhcmdlfTtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nLWJvdHRvbTogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0LmJvbGR9O1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbmAseD11LmRlZmF1bHQuc3BhbmBcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0SGVscH07XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nLWJvdHRvbTogMnB4O1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbmAsXz11LmRlZmF1bHQuZGl2YFxuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGZsZXg6IDE7XG4gIG1hcmdpbi10b3A6ICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBvdmVyZmxvdy15OiBhdXRvO1xuYCxMPXUuZGVmYXVsdC5kaXZgXG4gIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDZ9O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7dGhlbWU6ZSxwYWRkaW5nOnR9KT0+dCYmZS5weC5iYXNlfTtcbmAsTz0oMCx1LmRlZmF1bHQpKGYuRGVmaW5pdGlvbkxpc3QpYFxuICBkdCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgfVxuXG4gIGRkIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIH1cbmB9LDMxODg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDM0MjkpLHQpfSw3NDQ0OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZXRJbml0aWFscz12b2lkIDAsdC5nZXRJbml0aWFscz1lPT57Y29uc3QgdD1lLnRyaW0oKSxuPXQubGFzdEluZGV4T2YoXCIgXCIpO3JldHVybiBuPi0xP1t0LmNoYXJBdCgwKSx0LmNoYXJBdChuKzEpXS5qb2luKFwiXCIpOnQuc2xpY2UoMCwyKX19LDE5OTY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5INj10Lkg1PXQuSDQ9dC5IMz10LkgyPXQuSDE9dC5IZWFkaW5nPXQuZGVmYXVsdFNpemU9dm9pZCAwO2NvbnN0IGk9big1ODkzKSxhPW8obig3NTE4KSksbD1uKDM0NzEpLHM9big3NzY5KTt0LmRlZmF1bHRTaXplPXtoMTpsLlNpemUueHh4bGFyZ2UsaDI6bC5TaXplLnh4bGFyZ2UsaDM6bC5TaXplLnhsYXJnZSxoNDpsLlNpemUubGFyZ2UsaDU6bC5TaXplLmJhc2UsaDY6bC5TaXplLnNtYWxsfSx0LkhlYWRpbmc9ZT0+e3ZhcntsZXZlbDpuPTEsY2xhc3NOYW1lOm99PWUsYT1yKGUsW1wibGV2ZWxcIixcImNsYXNzTmFtZVwiXSk7Y29uc3QgbD1gaCR7bn1gO3JldHVybigwLGkuanN4KShjLE9iamVjdC5hc3NpZ24oe2NsYXNzTmFtZTpvLGFzOmwsc2l6ZTp0LmRlZmF1bHRTaXplW2xdLHdlaWdodDpcImJvbGRcIn0sYSkpfTtjb25zdCBjPSgwLGEuZGVmYXVsdCkocy5UZXh0KWBcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUubGluZUhlaWdodC5oZWFkaW5nfTtcbmA7dC5IMT0oMCxhLmRlZmF1bHQpKHQuSGVhZGluZykuYXR0cnMoKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bGV2ZWw6MX0pKSlgYCx0LkgyPSgwLGEuZGVmYXVsdCkodC5IZWFkaW5nKS5hdHRycygoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtsZXZlbDoyfSkpKWBgLHQuSDM9KDAsYS5kZWZhdWx0KSh0LkhlYWRpbmcpLmF0dHJzKChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2xldmVsOjN9KSkpYGAsdC5IND0oMCxhLmRlZmF1bHQpKHQuSGVhZGluZykuYXR0cnMoKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bGV2ZWw6NH0pKSlgYCx0Lkg1PSgwLGEuZGVmYXVsdCkodC5IZWFkaW5nKS5hdHRycygoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtsZXZlbDo1fSkpKWBgLHQuSDY9KDAsYS5kZWZhdWx0KSh0LkhlYWRpbmcpLmF0dHJzKChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2xldmVsOjZ9KSkpYGB9LDcwNjM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDE5OTYpLHQpfSw3NzY5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig1NDMxKSx0KX0sNTQzMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5UZXh0PXZvaWQgMDtjb25zdCBvPXIobig3NTE4KSk7dC5UZXh0PW8uZGVmYXVsdC5zcGFuYFxuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZSxzaXplOnQ9XCJiYXNlXCJ9KT0+ZS5mb250U2l6ZVt0XX07XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZSx3ZWlnaHQ6dD1cIm5vcm1hbFwifSk9PmUuZm9udFdlaWdodFt0XX07XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmxpbmVIZWlnaHQudGV4dH07XG5gLHQuVGV4dC5kaXNwbGF5TmFtZT1cIlRleHRcIn0sMzE5MDooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC51c2VDb2xvclNjaGVtZT10LkNvbG9yU2NoZW1lPXZvaWQgMDtjb25zdCByPW4oNjY4OSk7dC5Db2xvclNjaGVtZT17ZGFyazpcImRhcmtcIixsaWdodDpcImxpZ2h0XCIsc3lzdGVtOlwic3lzdGVtXCJ9O2NvbnN0IG89XCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspXCI7dC51c2VDb2xvclNjaGVtZT0oe3JlcXVlc3RlZFNjaGVtZTplLGZhbGxiYWNrU2NoZW1lOm49dC5Db2xvclNjaGVtZS5saWdodH0pPT57Y29uc3RbaSxhXT0oMCxyLnVzZVN0YXRlKShuKSxsPWU9PmEoZS5tYXRjaGVzP1wiZGFya1wiOlwibGlnaHRcIik7cmV0dXJuKDAsci51c2VFZmZlY3QpKCgoKT0+e2lmKFwibGlnaHRcIj09PWV8fFwiZGFya1wiPT09ZSlyZXR1cm4gdm9pZCBhKGUpO2NvbnN0IHQ9d2luZG93Lm1hdGNoTWVkaWEobyk7cmV0dXJuIGEodC5tYXRjaGVzP1wiZGFya1wiOlwibGlnaHRcIiksdC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsbCksKCk9PnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLGwpfSksW2UsaSxvXSksaX19LDM0NzooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC51c2VEcm9wZG93bktleWJvYXJkTmF2aWdhdGlvbj12b2lkIDA7Y29uc3Qgcj1uKDY2ODkpO3QudXNlRHJvcGRvd25LZXlib2FyZE5hdmlnYXRpb249KGUsdCxuLG8saSk9Pntjb25zdFthLGxdPSgwLHIudXNlU3RhdGUpKDApLFtzLGNdPSgwLHIudXNlU3RhdGUpKFwiXCIpO2xldCB1O2lmKCgwLHIudXNlRWZmZWN0KSgoKCk9PntpZih0JiYhbil7Y29uc3Qgbj1lLmZsYXQoKS5maW5kSW5kZXgoKGU9PmUudmFsdWU9PT10LnZhbHVlKSk7bj49MCYmbChuKX19KSxbZSx0LG5dKSwoMCxyLnVzZUVmZmVjdCkoKCgpPT57bnx8YyhcIlwiKX0pLFtuXSksKDAsci51c2VFZmZlY3QpKCgoKT0+e2lmKHMpe2NvbnN0IHQ9ZS5mbGF0KCkuZmluZEluZGV4KChlPT5lLnRpdGxlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChzLnRvTG93ZXJDYXNlKCkpKSk7dD49MCYmbCh0KX19KSxbZSxzXSksZVswXS5sZW5ndGg+MCl7Y29uc3RbdCxuXT1bTWF0aC5mbG9vcihhL2VbMF0ubGVuZ3RoKSxhJWVbMF0ubGVuZ3RoXTt1PWVbdF1bbl19cmV0dXJuKDAsci51c2VFZmZlY3QpKCgoKT0+e2NvbnN0IGU9c2V0VGltZW91dCgoKCk9PntjKFwiXCIpfSksNTAwKTtyZXR1cm4oKT0+Y2xlYXJUaW1lb3V0KGUpfSksW3NdKSx7Zm9jdXNlZE9wdGlvbjp1LGhhbmRsZUtleURvd246dD0+e3N3aXRjaCh0LmNvZGUpe2Nhc2VcIkFycm93VXBcIjp0LnByZXZlbnREZWZhdWx0KCksYT4wJiZsKGEtMSk7YnJlYWs7Y2FzZVwiQXJyb3dEb3duXCI6dC5wcmV2ZW50RGVmYXVsdCgpLGE8ZS5mbGF0KCkubGVuZ3RoLTEmJmwoYSsxKTticmVhaztjYXNlXCJFbnRlclwiOmNhc2VcIlNwYWNlXCI6dC5wcmV2ZW50RGVmYXVsdCgpLG4/KChudWxsPT11P3ZvaWQgMDp1Lm92ZXJyaWRlT25DbGljayk/dS5vdmVycmlkZU9uQ2xpY2soKTppKG51bGwhPXU/dTplWzBdWzBdKSxvKCkpOm8oKTticmVhaztjYXNlXCJFc2NhcGVcIjp0LnByZXZlbnREZWZhdWx0KCksbyghMSk7YnJlYWs7ZGVmYXVsdDovXlthLXowLTldJC9pLnRlc3QodC5rZXkpJiZjKChlPT5lK3Qua2V5KSl9fX19fSw0NDgxOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnVzZUxheW91dE1lZGlhUXVlcnk9dC51c2VNZWRpYVF1ZXJ5PXZvaWQgMDtjb25zdCByPW4oNjY4OSksbz1lPT50PT57Y29uc3RbbixvXT0oMCxyLnVzZVN0YXRlKSghMSk7cmV0dXJuIGUoKCgpPT57Y29uc3QgZT13aW5kb3cubWF0Y2hNZWRpYSh0KTtpZihlKXtlLm1hdGNoZXMhPT1uJiZvKGUubWF0Y2hlcyk7Y29uc3QgdD0oKT0+byhlLm1hdGNoZXMpLHI9KCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLHQpO3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIix0KSxyfX0pLFtuLHRdKSxufTt0LnVzZU1lZGlhUXVlcnk9byhyLnVzZUVmZmVjdCksdC51c2VMYXlvdXRNZWRpYVF1ZXJ5PW8oci51c2VMYXlvdXRFZmZlY3QpfSwyNzc2OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnVzZVByZXZpb3VzPXZvaWQgMDtjb25zdCByPW4oNjY4OSk7dC51c2VQcmV2aW91cz1lPT57Y29uc3QgdD0oMCxyLnVzZVJlZikoKTtyZXR1cm4oMCxyLnVzZUVmZmVjdCkoKCgpPT57dC5jdXJyZW50PWV9KSxbZV0pLHQuY3VycmVudH19LDcwODg6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudXNlVGhlbWU9dm9pZCAwO2NvbnN0IHI9big2Njg5KSxvPW4oNDI2NiksaT1uKDMxOTApLGE9big5NTA3KSxsPXtbaS5Db2xvclNjaGVtZS5kYXJrXTpvLk9wZW5GaW5EYXJrVGhlbWUsW2kuQ29sb3JTY2hlbWUubGlnaHRdOm8uT3BlbkZpbkxpZ2h0VGhlbWV9O3QudXNlVGhlbWU9KHt0aGVtZXM6ZSxzY2hlbWU6dCxjb25maWc6bn0pPT57Y29uc3Qgbz0oMCxpLnVzZUNvbG9yU2NoZW1lKSh7cmVxdWVzdGVkU2NoZW1lOnR9KSxzPSgwLHIudXNlTWVtbykoKCgpPT52b2lkIDA9PT1lP2xbb106KDAsYS5jcmVhdGVUaGVtZSkoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGxbb10ucGFsZXR0ZSksZVtvXS5wYWxldHRlKSxvKSksW2Usb10pO3JldHVybiBuP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxzKSx7X2NvbmZpZzpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scy5fY29uZmlnKSxuKX0pOnN9fSwzNDE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDQxMzApLHQpLG8obig3NDAxKSx0KSxvKG4oNDkyNSksdCksbyhuKDI2MDkpLHQpLG8obigzMTM2KSx0KSxvKG4oOTczNCksdCksbyhuKDYwMjYpLHQpLG8obig5NjM0KSx0KSxvKG4oMTQ0KSx0KSxvKG4oOTIzOSksdCksbyhuKDg4NzgpLHQpLG8obig4NTEwKSx0KSxvKG4oODk1MSksdCksbyhuKDE5NzgpLHQpLG8obig4MDUxKSx0KSxvKG4oNDE2OSksdCksbyhuKDM2NDEpLHQpLG8obig1MjE1KSx0KSxvKG4oOTY1NCksdCksbyhuKDMxMTkpLHQpLG8obigxMzM1KSx0KSxvKG4oNTM3NyksdCksbyhuKDEwNjkpLHQpLG8obig5NTA3KSx0KSxvKG4oMzE4OCksdCksbyhuKDcwNjMpLHQpLG8obig3NzY5KSx0KSxvKG4oMzE5MCksdCksbyhuKDQ0ODEpLHQpLG8obigyNzc2KSx0KSxvKG4oMzQ3KSx0KSxvKG4oNDk5MSksdCksbyhuKDg4MzIpLHQpfSw4ODMyOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZW5lcmF0ZUNvbG9yRnJvbVN0cmluZz12b2lkIDAsdC5nZW5lcmF0ZUNvbG9yRnJvbVN0cmluZz1mdW5jdGlvbihlPVwiXCIsdD03MCxuPTUwKXtsZXQgcj0wO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXI9ZS5jaGFyQ29kZUF0KHQpKygocjw8NSktciksciY9cjtyZXR1cm5gaHNsKCR7ciUzNjB9LCAke3R9JSwgJHtufSUpYH19LDY2MDY6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdlbmVyYXRlUmFuZG9tSW50ZWdlcj10LmNsYW1wPXZvaWQgMCx0LmNsYW1wPShlLHQsbik9PnQmJm4/TWF0aC5taW4oTWF0aC5tYXgoZSx0KSxuKTpuJiYhdD9NYXRoLm1pbihlLG4pOnQmJiFuP01hdGgubWF4KGUsdCk6ZSx0LmdlbmVyYXRlUmFuZG9tSW50ZWdlcj0oKT0+TWF0aC5mbG9vcigxZTMqTWF0aC5yYW5kb20oKSl9LDQ5OTE6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LndoZW5GaW49dm9pZCAwLHQud2hlbkZpbj1mdW5jdGlvbihlLHQpe2NvbnN0IG49XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGZpbj9lOnQ7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2Ygbj9uKCk6bn19LDY1NTooZSx0LG4pPT57bi5yKHQpLG4uZCh0LHtfX2Fzc2lnbjooKT0+aSxfX2FzeW5jRGVsZWdhdG9yOigpPT5PLF9fYXN5bmNHZW5lcmF0b3I6KCk9PkwsX19hc3luY1ZhbHVlczooKT0+RSxfX2F3YWl0OigpPT5fLF9fYXdhaXRlcjooKT0+aCxfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0OigpPT5SLF9fY2xhc3NQcml2YXRlRmllbGRJbjooKT0+QSxfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0OigpPT5QLF9fY3JlYXRlQmluZGluZzooKT0+ZyxfX2RlY29yYXRlOigpPT5sLF9fZXNEZWNvcmF0ZTooKT0+YyxfX2V4cG9ydFN0YXI6KCk9PkMsX19leHRlbmRzOigpPT5vLF9fZ2VuZXJhdG9yOigpPT52LF9faW1wb3J0RGVmYXVsdDooKT0+ayxfX2ltcG9ydFN0YXI6KCk9PmosX19tYWtlVGVtcGxhdGVPYmplY3Q6KCk9PlMsX19tZXRhZGF0YTooKT0+cCxfX3BhcmFtOigpPT5zLF9fcHJvcEtleTooKT0+ZixfX3JlYWQ6KCk9PnksX19yZXN0OigpPT5hLF9fcnVuSW5pdGlhbGl6ZXJzOigpPT51LF9fc2V0RnVuY3Rpb25OYW1lOigpPT5kLF9fc3ByZWFkOigpPT53LF9fc3ByZWFkQXJyYXk6KCk9PngsX19zcHJlYWRBcnJheXM6KCk9PmIsX192YWx1ZXM6KCk9Pm19KTt2YXIgcj1mdW5jdGlvbihlLHQpe3JldHVybiByPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0scihlLHQpfTtmdW5jdGlvbiBvKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIrU3RyaW5nKHQpK1wiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9ZX1yKGUsdCksZS5wcm90b3R5cGU9bnVsbD09PXQ/T2JqZWN0LmNyZWF0ZSh0KToobi5wcm90b3R5cGU9dC5wcm90b3R5cGUsbmV3IG4pfXZhciBpPWZ1bmN0aW9uKCl7cmV0dXJuIGk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49MSxyPWFyZ3VtZW50cy5sZW5ndGg7bjxyO24rKylmb3IodmFyIG8gaW4gdD1hcmd1bWVudHNbbl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbykmJihlW29dPXRbb10pO3JldHVybiBlfSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gYShlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59ZnVuY3Rpb24gbChlLHQsbixyKXt2YXIgbyxpPWFyZ3VtZW50cy5sZW5ndGgsYT1pPDM/dDpudWxsPT09cj9yPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTpyO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKWE9UmVmbGVjdC5kZWNvcmF0ZShlLHQsbixyKTtlbHNlIGZvcih2YXIgbD1lLmxlbmd0aC0xO2w+PTA7bC0tKShvPWVbbF0pJiYoYT0oaTwzP28oYSk6aT4zP28odCxuLGEpOm8odCxuKSl8fGEpO3JldHVybiBpPjMmJmEmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4sYSksYX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dChuLHIsZSl9fWZ1bmN0aW9uIGMoZSx0LG4scixvLGkpe2Z1bmN0aW9uIGEoZSl7aWYodm9pZCAwIT09ZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7cmV0dXJuIGV9Zm9yKHZhciBsLHM9ci5raW5kLGM9XCJnZXR0ZXJcIj09PXM/XCJnZXRcIjpcInNldHRlclwiPT09cz9cInNldFwiOlwidmFsdWVcIix1PSF0JiZlP3Iuc3RhdGljP2U6ZS5wcm90b3R5cGU6bnVsbCxmPXR8fCh1P09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodSxyLm5hbWUpOnt9KSxkPSExLHA9bi5sZW5ndGgtMTtwPj0wO3AtLSl7dmFyIGg9e307Zm9yKHZhciB2IGluIHIpaFt2XT1cImFjY2Vzc1wiPT09dj97fTpyW3ZdO2Zvcih2YXIgdiBpbiByLmFjY2VzcyloLmFjY2Vzc1t2XT1yLmFjY2Vzc1t2XTtoLmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKGUpe2lmKGQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZFwiKTtpLnB1c2goYShlfHxudWxsKSl9O3ZhciBnPSgwLG5bcF0pKFwiYWNjZXNzb3JcIj09PXM/e2dldDpmLmdldCxzZXQ6Zi5zZXR9OmZbY10saCk7aWYoXCJhY2Nlc3NvclwiPT09cyl7aWYodm9pZCAwPT09Zyljb250aW51ZTtpZihudWxsPT09Z3x8XCJvYmplY3RcIiE9dHlwZW9mIGcpdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTsobD1hKGcuZ2V0KSkmJihmLmdldD1sKSwobD1hKGcuc2V0KSkmJihmLnNldD1sKSwobD1hKGcuaW5pdCkpJiZvLnB1c2gobCl9ZWxzZShsPWEoZykpJiYoXCJmaWVsZFwiPT09cz9vLnB1c2gobCk6ZltjXT1sKX11JiZPYmplY3QuZGVmaW5lUHJvcGVydHkodSxyLm5hbWUsZiksZD0hMH1mdW5jdGlvbiB1KGUsdCxuKXtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yLG89MDtvPHQubGVuZ3RoO28rKyluPXI/dFtvXS5jYWxsKGUsbik6dFtvXS5jYWxsKGUpO3JldHVybiByP246dm9pZCAwfWZ1bmN0aW9uIGYoZSl7cmV0dXJuXCJzeW1ib2xcIj09dHlwZW9mIGU/ZTpcIlwiLmNvbmNhdChlKX1mdW5jdGlvbiBkKGUsdCxuKXtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgdCYmKHQ9dC5kZXNjcmlwdGlvbj9cIltcIi5jb25jYXQodC5kZXNjcmlwdGlvbixcIl1cIik6XCJcIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJuYW1lXCIse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTpuP1wiXCIuY29uY2F0KG4sXCIgXCIsdCk6dH0pfWZ1bmN0aW9uIHAoZSx0KXtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSlyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShlLHQpfWZ1bmN0aW9uIGgoZSx0LG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKG8saSl7ZnVuY3Rpb24gYShlKXt0cnl7cyhyLm5leHQoZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIGwoZSl7dHJ5e3Moci50aHJvdyhlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gcyhlKXt2YXIgdDtlLmRvbmU/byhlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4oYSxsKX1zKChyPXIuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9ZnVuY3Rpb24gdihlLHQpe3ZhciBuLHIsbyxpLGE9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb1swXSl0aHJvdyBvWzFdO3JldHVybiBvWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGk9e25leHQ6bCgwKSx0aHJvdzpsKDEpLHJldHVybjpsKDIpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJihpW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGk7ZnVuY3Rpb24gbChsKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIGZ1bmN0aW9uKGwpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7Zm9yKDtpJiYoaT0wLGxbMF0mJihhPTApKSxhOyl0cnl7aWYobj0xLHImJihvPTImbFswXT9yLnJldHVybjpsWzBdP3IudGhyb3d8fCgobz1yLnJldHVybikmJm8uY2FsbChyKSwwKTpyLm5leHQpJiYhKG89by5jYWxsKHIsbFsxXSkpLmRvbmUpcmV0dXJuIG87c3dpdGNoKHI9MCxvJiYobD1bMiZsWzBdLG8udmFsdWVdKSxsWzBdKXtjYXNlIDA6Y2FzZSAxOm89bDticmVhaztjYXNlIDQ6cmV0dXJuIGEubGFiZWwrKyx7dmFsdWU6bFsxXSxkb25lOiExfTtjYXNlIDU6YS5sYWJlbCsrLHI9bFsxXSxsPVswXTtjb250aW51ZTtjYXNlIDc6bD1hLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChvPShvPWEudHJ5cykubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0pfHw2IT09bFswXSYmMiE9PWxbMF0pKXthPTA7Y29udGludWV9aWYoMz09PWxbMF0mJighb3x8bFsxXT5vWzBdJiZsWzFdPG9bM10pKXthLmxhYmVsPWxbMV07YnJlYWt9aWYoNj09PWxbMF0mJmEubGFiZWw8b1sxXSl7YS5sYWJlbD1vWzFdLG89bDticmVha31pZihvJiZhLmxhYmVsPG9bMl0pe2EubGFiZWw9b1syXSxhLm9wcy5wdXNoKGwpO2JyZWFrfW9bMl0mJmEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZX1sPXQuY2FsbChlLGEpfWNhdGNoKGUpe2w9WzYsZV0scj0wfWZpbmFsbHl7bj1vPTB9aWYoNSZsWzBdKXRocm93IGxbMV07cmV0dXJue3ZhbHVlOmxbMF0/bFsxXTp2b2lkIDAsZG9uZTohMH19KFtsLHNdKX19fXZhciBnPU9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX07ZnVuY3Rpb24gQyhlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fGcodCxlLG4pfWZ1bmN0aW9uIG0oZSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3Isbj10JiZlW3RdLHI9MDtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoZSYmXCJudW1iZXJcIj09dHlwZW9mIGUubGVuZ3RoKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGUmJnI+PWUubGVuZ3RoJiYoZT12b2lkIDApLHt2YWx1ZTplJiZlW3IrK10sZG9uZTohZX19fTt0aHJvdyBuZXcgVHlwZUVycm9yKHQ/XCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiOlwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKX1mdW5jdGlvbiB5KGUsdCl7dmFyIG49XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIGU7dmFyIHIsbyxpPW4uY2FsbChlKSxhPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT10fHx0LS0gPjApJiYhKHI9aS5uZXh0KCkpLmRvbmU7KWEucHVzaChyLnZhbHVlKX1jYXRjaChlKXtvPXtlcnJvcjplfX1maW5hbGx5e3RyeXtyJiYhci5kb25lJiYobj1pLnJldHVybikmJm4uY2FsbChpKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIGF9ZnVuY3Rpb24gdygpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllPWUuY29uY2F0KHkoYXJndW1lbnRzW3RdKSk7cmV0dXJuIGV9ZnVuY3Rpb24gYigpe2Zvcih2YXIgZT0wLHQ9MCxuPWFyZ3VtZW50cy5sZW5ndGg7dDxuO3QrKyllKz1hcmd1bWVudHNbdF0ubGVuZ3RoO3ZhciByPUFycmF5KGUpLG89MDtmb3IodD0wO3Q8bjt0KyspZm9yKHZhciBpPWFyZ3VtZW50c1t0XSxhPTAsbD1pLmxlbmd0aDthPGw7YSsrLG8rKylyW29dPWlbYV07cmV0dXJuIHJ9ZnVuY3Rpb24geChlLHQsbil7aWYobnx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciByLG89MCxpPXQubGVuZ3RoO288aTtvKyspIXImJm8gaW4gdHx8KHJ8fChyPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMCxvKSkscltvXT10W29dKTtyZXR1cm4gZS5jb25jYXQocnx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpfWZ1bmN0aW9uIF8oZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfPyh0aGlzLnY9ZSx0aGlzKTpuZXcgXyhlKX1mdW5jdGlvbiBMKGUsdCxuKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTt2YXIgcixvPW4uYXBwbHkoZSx0fHxbXSksaT1bXTtyZXR1cm4gcj17fSxhKFwibmV4dFwiKSxhKFwidGhyb3dcIiksYShcInJldHVyblwiKSxyW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxyO2Z1bmN0aW9uIGEoZSl7b1tlXSYmKHJbZV09ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLHIpe2kucHVzaChbZSx0LG4scl0pPjF8fGwoZSx0KX0pKX0pfWZ1bmN0aW9uIGwoZSx0KXt0cnl7KG49b1tlXSh0KSkudmFsdWUgaW5zdGFuY2VvZiBfP1Byb21pc2UucmVzb2x2ZShuLnZhbHVlLnYpLnRoZW4ocyxjKTp1KGlbMF1bMl0sbil9Y2F0Y2goZSl7dShpWzBdWzNdLGUpfXZhciBufWZ1bmN0aW9uIHMoZSl7bChcIm5leHRcIixlKX1mdW5jdGlvbiBjKGUpe2woXCJ0aHJvd1wiLGUpfWZ1bmN0aW9uIHUoZSx0KXtlKHQpLGkuc2hpZnQoKSxpLmxlbmd0aCYmbChpWzBdWzBdLGlbMF1bMV0pfX1mdW5jdGlvbiBPKGUpe3ZhciB0LG47cmV0dXJuIHQ9e30scihcIm5leHRcIikscihcInRocm93XCIsKGZ1bmN0aW9uKGUpe3Rocm93IGV9KSkscihcInJldHVyblwiKSx0W1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdDtmdW5jdGlvbiByKHIsbyl7dFtyXT1lW3JdP2Z1bmN0aW9uKHQpe3JldHVybihuPSFuKT97dmFsdWU6XyhlW3JdKHQpKSxkb25lOiExfTpvP28odCk6dH06b319ZnVuY3Rpb24gRShlKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTt2YXIgdCxuPWVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdO3JldHVybiBuP24uY2FsbChlKTooZT1tKGUpLHQ9e30scihcIm5leHRcIikscihcInRocm93XCIpLHIoXCJyZXR1cm5cIiksdFtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdCk7ZnVuY3Rpb24gcihuKXt0W25dPWVbbl0mJmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXshZnVuY3Rpb24oZSx0LG4scil7UHJvbWlzZS5yZXNvbHZlKHIpLnRoZW4oKGZ1bmN0aW9uKHQpe2Uoe3ZhbHVlOnQsZG9uZTpufSl9KSx0KX0ocixvLCh0PWVbbl0odCkpLmRvbmUsdC52YWx1ZSl9KSl9fX1mdW5jdGlvbiBTKGUsdCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInJhd1wiLHt2YWx1ZTp0fSk6ZS5yYXc9dCxlfXZhciBNPU9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9O2Z1bmN0aW9uIGooZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmZyh0LGUsbik7cmV0dXJuIE0odCxlKSx0fWZ1bmN0aW9uIGsoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIFIoZSx0LG4scil7aWYoXCJhXCI9PT1uJiYhcil0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/ZSE9PXR8fCFyOiF0LmhhcyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO3JldHVyblwibVwiPT09bj9yOlwiYVwiPT09bj9yLmNhbGwoZSk6cj9yLnZhbHVlOnQuZ2V0KGUpfWZ1bmN0aW9uIFAoZSx0LG4scixvKXtpZihcIm1cIj09PXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtpZihcImFcIj09PXImJiFvKXRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdD9lIT09dHx8IW86IXQuaGFzKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtyZXR1cm5cImFcIj09PXI/by5jYWxsKGUsbik6bz9vLnZhbHVlPW46dC5zZXQoZSxuKSxufWZ1bmN0aW9uIEEoZSx0KXtpZihudWxsPT09dHx8XCJvYmplY3RcIiE9dHlwZW9mIHQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0XCIpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/dD09PWU6ZS5oYXModCl9fSw2Njg5OmU9PntlLmV4cG9ydHM9bigzNzgpfSw3NTE4OmU9PntlLmV4cG9ydHM9big5MjEpfSw4MjA3OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7cmV0dXJuKGU9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0pKHQpfXZhciB0PS9eXFxzKy8sbj0vXFxzKyQvO2Z1bmN0aW9uIHIobyxpKXtpZihpPWl8fHt9LChvPW98fFwiXCIpaW5zdGFuY2VvZiByKXJldHVybiBvO2lmKCEodGhpcyBpbnN0YW5jZW9mIHIpKXJldHVybiBuZXcgcihvLGkpO3ZhciBhPWZ1bmN0aW9uKHIpe3ZhciBvLGksYSxsPXtyOjAsZzowLGI6MH0scz0xLGM9bnVsbCx1PW51bGwsZj1udWxsLGQ9ITEscD0hMTtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgciYmKHI9ZnVuY3Rpb24oZSl7ZT1lLnJlcGxhY2UodCxcIlwiKS5yZXBsYWNlKG4sXCJcIikudG9Mb3dlckNhc2UoKTt2YXIgcixvPSExO2lmKHdbZV0pZT13W2VdLG89ITA7ZWxzZSBpZihcInRyYW5zcGFyZW50XCI9PWUpcmV0dXJue3I6MCxnOjAsYjowLGE6MCxmb3JtYXQ6XCJuYW1lXCJ9O3JldHVybihyPUEucmdiLmV4ZWMoZSkpP3tyOnJbMV0sZzpyWzJdLGI6clszXX06KHI9QS5yZ2JhLmV4ZWMoZSkpP3tyOnJbMV0sZzpyWzJdLGI6clszXSxhOnJbNF19OihyPUEuaHNsLmV4ZWMoZSkpP3toOnJbMV0sczpyWzJdLGw6clszXX06KHI9QS5oc2xhLmV4ZWMoZSkpP3toOnJbMV0sczpyWzJdLGw6clszXSxhOnJbNF19OihyPUEuaHN2LmV4ZWMoZSkpP3toOnJbMV0sczpyWzJdLHY6clszXX06KHI9QS5oc3ZhLmV4ZWMoZSkpP3toOnJbMV0sczpyWzJdLHY6clszXSxhOnJbNF19OihyPUEuaGV4OC5leGVjKGUpKT97cjpPKHJbMV0pLGc6TyhyWzJdKSxiOk8oclszXSksYTpqKHJbNF0pLGZvcm1hdDpvP1wibmFtZVwiOlwiaGV4OFwifToocj1BLmhleDYuZXhlYyhlKSk/e3I6TyhyWzFdKSxnOk8oclsyXSksYjpPKHJbM10pLGZvcm1hdDpvP1wibmFtZVwiOlwiaGV4XCJ9OihyPUEuaGV4NC5leGVjKGUpKT97cjpPKHJbMV0rXCJcIityWzFdKSxnOk8oclsyXStcIlwiK3JbMl0pLGI6TyhyWzNdK1wiXCIrclszXSksYTpqKHJbNF0rXCJcIityWzRdKSxmb3JtYXQ6bz9cIm5hbWVcIjpcImhleDhcIn06ISEocj1BLmhleDMuZXhlYyhlKSkmJntyOk8oclsxXStcIlwiK3JbMV0pLGc6TyhyWzJdK1wiXCIrclsyXSksYjpPKHJbM10rXCJcIityWzNdKSxmb3JtYXQ6bz9cIm5hbWVcIjpcImhleFwifX0ocikpLFwib2JqZWN0XCI9PWUocikmJihJKHIucikmJkkoci5nKSYmSShyLmIpPyhvPXIucixpPXIuZyxhPXIuYixsPXtyOjI1NSpfKG8sMjU1KSxnOjI1NSpfKGksMjU1KSxiOjI1NSpfKGEsMjU1KX0sZD0hMCxwPVwiJVwiPT09U3RyaW5nKHIucikuc3Vic3RyKC0xKT9cInByZ2JcIjpcInJnYlwiKTpJKHIuaCkmJkkoci5zKSYmSShyLnYpPyhjPVMoci5zKSx1PVMoci52KSxsPWZ1bmN0aW9uKGUsdCxuKXtlPTYqXyhlLDM2MCksdD1fKHQsMTAwKSxuPV8obiwxMDApO3ZhciByPU1hdGguZmxvb3IoZSksbz1lLXIsaT1uKigxLXQpLGE9biooMS1vKnQpLGw9biooMS0oMS1vKSp0KSxzPXIlNjtyZXR1cm57cjoyNTUqW24sYSxpLGksbCxuXVtzXSxnOjI1NSpbbCxuLG4sYSxpLGldW3NdLGI6MjU1KltpLGksbCxuLG4sYV1bc119fShyLmgsYyx1KSxkPSEwLHA9XCJoc3ZcIik6SShyLmgpJiZJKHIucykmJkkoci5sKSYmKGM9UyhyLnMpLGY9UyhyLmwpLGw9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saTtmdW5jdGlvbiBhKGUsdCxuKXtyZXR1cm4gbjwwJiYobis9MSksbj4xJiYobi09MSksbjwxLzY/ZSs2Kih0LWUpKm46bjwuNT90Om48Mi8zP2UrKHQtZSkqKDIvMy1uKSo2OmV9aWYoZT1fKGUsMzYwKSx0PV8odCwxMDApLG49XyhuLDEwMCksMD09PXQpcj1vPWk9bjtlbHNle3ZhciBsPW48LjU/biooMSt0KTpuK3Qtbip0LHM9MipuLWw7cj1hKHMsbCxlKzEvMyksbz1hKHMsbCxlKSxpPWEocyxsLGUtMS8zKX1yZXR1cm57cjoyNTUqcixnOjI1NSpvLGI6MjU1Kml9fShyLmgsYyxmKSxkPSEwLHA9XCJoc2xcIiksci5oYXNPd25Qcm9wZXJ0eShcImFcIikmJihzPXIuYSkpLHM9eChzKSx7b2s6ZCxmb3JtYXQ6ci5mb3JtYXR8fHAscjpNYXRoLm1pbigyNTUsTWF0aC5tYXgobC5yLDApKSxnOk1hdGgubWluKDI1NSxNYXRoLm1heChsLmcsMCkpLGI6TWF0aC5taW4oMjU1LE1hdGgubWF4KGwuYiwwKSksYTpzfX0obyk7dGhpcy5fb3JpZ2luYWxJbnB1dD1vLHRoaXMuX3I9YS5yLHRoaXMuX2c9YS5nLHRoaXMuX2I9YS5iLHRoaXMuX2E9YS5hLHRoaXMuX3JvdW5kQT1NYXRoLnJvdW5kKDEwMCp0aGlzLl9hKS8xMDAsdGhpcy5fZm9ybWF0PWkuZm9ybWF0fHxhLmZvcm1hdCx0aGlzLl9ncmFkaWVudFR5cGU9aS5ncmFkaWVudFR5cGUsdGhpcy5fcjwxJiYodGhpcy5fcj1NYXRoLnJvdW5kKHRoaXMuX3IpKSx0aGlzLl9nPDEmJih0aGlzLl9nPU1hdGgucm91bmQodGhpcy5fZykpLHRoaXMuX2I8MSYmKHRoaXMuX2I9TWF0aC5yb3VuZCh0aGlzLl9iKSksdGhpcy5fb2s9YS5va31mdW5jdGlvbiBvKGUsdCxuKXtlPV8oZSwyNTUpLHQ9Xyh0LDI1NSksbj1fKG4sMjU1KTt2YXIgcixvLGk9TWF0aC5tYXgoZSx0LG4pLGE9TWF0aC5taW4oZSx0LG4pLGw9KGkrYSkvMjtpZihpPT1hKXI9bz0wO2Vsc2V7dmFyIHM9aS1hO3N3aXRjaChvPWw+LjU/cy8oMi1pLWEpOnMvKGkrYSksaSl7Y2FzZSBlOnI9KHQtbikvcysodDxuPzY6MCk7YnJlYWs7Y2FzZSB0OnI9KG4tZSkvcysyO2JyZWFrO2Nhc2UgbjpyPShlLXQpL3MrNH1yLz02fXJldHVybntoOnIsczpvLGx9fWZ1bmN0aW9uIGkoZSx0LG4pe2U9XyhlLDI1NSksdD1fKHQsMjU1KSxuPV8obiwyNTUpO3ZhciByLG8saT1NYXRoLm1heChlLHQsbiksYT1NYXRoLm1pbihlLHQsbiksbD1pLHM9aS1hO2lmKG89MD09PWk/MDpzL2ksaT09YSlyPTA7ZWxzZXtzd2l0Y2goaSl7Y2FzZSBlOnI9KHQtbikvcysodDxuPzY6MCk7YnJlYWs7Y2FzZSB0OnI9KG4tZSkvcysyO2JyZWFrO2Nhc2UgbjpyPShlLXQpL3MrNH1yLz02fXJldHVybntoOnIsczpvLHY6bH19ZnVuY3Rpb24gYShlLHQsbixyKXt2YXIgbz1bRShNYXRoLnJvdW5kKGUpLnRvU3RyaW5nKDE2KSksRShNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KSksRShNYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDE2KSldO3JldHVybiByJiZvWzBdLmNoYXJBdCgwKT09b1swXS5jaGFyQXQoMSkmJm9bMV0uY2hhckF0KDApPT1vWzFdLmNoYXJBdCgxKSYmb1syXS5jaGFyQXQoMCk9PW9bMl0uY2hhckF0KDEpP29bMF0uY2hhckF0KDApK29bMV0uY2hhckF0KDApK29bMl0uY2hhckF0KDApOm8uam9pbihcIlwiKX1mdW5jdGlvbiBsKGUsdCxuLHIpe3JldHVybltFKE0ocikpLEUoTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikpLEUoTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNikpLEUoTWF0aC5yb3VuZChuKS50b1N0cmluZygxNikpXS5qb2luKFwiXCIpfWZ1bmN0aW9uIHMoZSx0KXt0PTA9PT10PzA6dHx8MTA7dmFyIG49cihlKS50b0hzbCgpO3JldHVybiBuLnMtPXQvMTAwLG4ucz1MKG4ucykscihuKX1mdW5jdGlvbiBjKGUsdCl7dD0wPT09dD8wOnR8fDEwO3ZhciBuPXIoZSkudG9Ic2woKTtyZXR1cm4gbi5zKz10LzEwMCxuLnM9TChuLnMpLHIobil9ZnVuY3Rpb24gdShlKXtyZXR1cm4gcihlKS5kZXNhdHVyYXRlKDEwMCl9ZnVuY3Rpb24gZihlLHQpe3Q9MD09PXQ/MDp0fHwxMDt2YXIgbj1yKGUpLnRvSHNsKCk7cmV0dXJuIG4ubCs9dC8xMDAsbi5sPUwobi5sKSxyKG4pfWZ1bmN0aW9uIGQoZSx0KXt0PTA9PT10PzA6dHx8MTA7dmFyIG49cihlKS50b1JnYigpO3JldHVybiBuLnI9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsbi5yLU1hdGgucm91bmQoLXQvMTAwKjI1NSkpKSxuLmc9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsbi5nLU1hdGgucm91bmQoLXQvMTAwKjI1NSkpKSxuLmI9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsbi5iLU1hdGgucm91bmQoLXQvMTAwKjI1NSkpKSxyKG4pfWZ1bmN0aW9uIHAoZSx0KXt0PTA9PT10PzA6dHx8MTA7dmFyIG49cihlKS50b0hzbCgpO3JldHVybiBuLmwtPXQvMTAwLG4ubD1MKG4ubCkscihuKX1mdW5jdGlvbiBoKGUsdCl7dmFyIG49cihlKS50b0hzbCgpLG89KG4uaCt0KSUzNjA7cmV0dXJuIG4uaD1vPDA/MzYwK286byxyKG4pfWZ1bmN0aW9uIHYoZSl7dmFyIHQ9cihlKS50b0hzbCgpO3JldHVybiB0Lmg9KHQuaCsxODApJTM2MCxyKHQpfWZ1bmN0aW9uIGcoZSx0KXtpZihpc05hTih0KXx8dDw9MCl0aHJvdyBuZXcgRXJyb3IoXCJBcmd1bWVudCB0byBwb2x5YWQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlclwiKTtmb3IodmFyIG49cihlKS50b0hzbCgpLG89W3IoZSldLGk9MzYwL3QsYT0xO2E8dDthKyspby5wdXNoKHIoe2g6KG4uaCthKmkpJTM2MCxzOm4ucyxsOm4ubH0pKTtyZXR1cm4gb31mdW5jdGlvbiBDKGUpe3ZhciB0PXIoZSkudG9Ic2woKSxuPXQuaDtyZXR1cm5bcihlKSxyKHtoOihuKzcyKSUzNjAsczp0LnMsbDp0Lmx9KSxyKHtoOihuKzIxNiklMzYwLHM6dC5zLGw6dC5sfSldfWZ1bmN0aW9uIG0oZSx0LG4pe3Q9dHx8NixuPW58fDMwO3ZhciBvPXIoZSkudG9Ic2woKSxpPTM2MC9uLGE9W3IoZSldO2ZvcihvLmg9KG8uaC0oaSp0Pj4xKSs3MjApJTM2MDstLXQ7KW8uaD0oby5oK2kpJTM2MCxhLnB1c2gocihvKSk7cmV0dXJuIGF9ZnVuY3Rpb24geShlLHQpe3Q9dHx8Njtmb3IodmFyIG49cihlKS50b0hzdigpLG89bi5oLGk9bi5zLGE9bi52LGw9W10scz0xL3Q7dC0tOylsLnB1c2gocih7aDpvLHM6aSx2OmF9KSksYT0oYStzKSUxO3JldHVybiBsfXIucHJvdG90eXBlPXtpc0Rhcms6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCcmlnaHRuZXNzKCk8MTI4fSxpc0xpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNEYXJrKCl9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb2t9LGdldE9yaWdpbmFsSW5wdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3JpZ2luYWxJbnB1dH0sZ2V0Rm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Zvcm1hdH0sZ2V0QWxwaGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYX0sZ2V0QnJpZ2h0bmVzczpmdW5jdGlvbigpe3ZhciBlPXRoaXMudG9SZ2IoKTtyZXR1cm4oMjk5KmUucis1ODcqZS5nKzExNCplLmIpLzFlM30sZ2V0THVtaW5hbmNlOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLHI9dGhpcy50b1JnYigpO3JldHVybiBlPXIuci8yNTUsdD1yLmcvMjU1LG49ci5iLzI1NSwuMjEyNiooZTw9LjAzOTI4P2UvMTIuOTI6TWF0aC5wb3coKGUrLjA1NSkvMS4wNTUsMi40KSkrLjcxNTIqKHQ8PS4wMzkyOD90LzEyLjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCkpKy4wNzIyKihuPD0uMDM5Mjg/bi8xMi45MjpNYXRoLnBvdygobisuMDU1KS8xLjA1NSwyLjQpKX0sc2V0QWxwaGE6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2E9eChlKSx0aGlzLl9yb3VuZEE9TWF0aC5yb3VuZCgxMDAqdGhpcy5fYSkvMTAwLHRoaXN9LHRvSHN2OmZ1bmN0aW9uKCl7dmFyIGU9aSh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYik7cmV0dXJue2g6MzYwKmUuaCxzOmUucyx2OmUudixhOnRoaXMuX2F9fSx0b0hzdlN0cmluZzpmdW5jdGlvbigpe3ZhciBlPWkodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpLHQ9TWF0aC5yb3VuZCgzNjAqZS5oKSxuPU1hdGgucm91bmQoMTAwKmUucykscj1NYXRoLnJvdW5kKDEwMCplLnYpO3JldHVybiAxPT10aGlzLl9hP1wiaHN2KFwiK3QrXCIsIFwiK24rXCIlLCBcIityK1wiJSlcIjpcImhzdmEoXCIrdCtcIiwgXCIrbitcIiUsIFwiK3IrXCIlLCBcIit0aGlzLl9yb3VuZEErXCIpXCJ9LHRvSHNsOmZ1bmN0aW9uKCl7dmFyIGU9byh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYik7cmV0dXJue2g6MzYwKmUuaCxzOmUucyxsOmUubCxhOnRoaXMuX2F9fSx0b0hzbFN0cmluZzpmdW5jdGlvbigpe3ZhciBlPW8odGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpLHQ9TWF0aC5yb3VuZCgzNjAqZS5oKSxuPU1hdGgucm91bmQoMTAwKmUucykscj1NYXRoLnJvdW5kKDEwMCplLmwpO3JldHVybiAxPT10aGlzLl9hP1wiaHNsKFwiK3QrXCIsIFwiK24rXCIlLCBcIityK1wiJSlcIjpcImhzbGEoXCIrdCtcIiwgXCIrbitcIiUsIFwiK3IrXCIlLCBcIit0aGlzLl9yb3VuZEErXCIpXCJ9LHRvSGV4OmZ1bmN0aW9uKGUpe3JldHVybiBhKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLGUpfSx0b0hleFN0cmluZzpmdW5jdGlvbihlKXtyZXR1cm5cIiNcIit0aGlzLnRvSGV4KGUpfSx0b0hleDg6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9W0UoTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikpLEUoTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNikpLEUoTWF0aC5yb3VuZChuKS50b1N0cmluZygxNikpLEUoTShyKSldO3JldHVybiBvJiZpWzBdLmNoYXJBdCgwKT09aVswXS5jaGFyQXQoMSkmJmlbMV0uY2hhckF0KDApPT1pWzFdLmNoYXJBdCgxKSYmaVsyXS5jaGFyQXQoMCk9PWlbMl0uY2hhckF0KDEpJiZpWzNdLmNoYXJBdCgwKT09aVszXS5jaGFyQXQoMSk/aVswXS5jaGFyQXQoMCkraVsxXS5jaGFyQXQoMCkraVsyXS5jaGFyQXQoMCkraVszXS5jaGFyQXQoMCk6aS5qb2luKFwiXCIpfSh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYix0aGlzLl9hLGUpfSx0b0hleDhTdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuXCIjXCIrdGhpcy50b0hleDgoZSl9LHRvUmdiOmZ1bmN0aW9uKCl7cmV0dXJue3I6TWF0aC5yb3VuZCh0aGlzLl9yKSxnOk1hdGgucm91bmQodGhpcy5fZyksYjpNYXRoLnJvdW5kKHRoaXMuX2IpLGE6dGhpcy5fYX19LHRvUmdiU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDE9PXRoaXMuX2E/XCJyZ2IoXCIrTWF0aC5yb3VuZCh0aGlzLl9yKStcIiwgXCIrTWF0aC5yb3VuZCh0aGlzLl9nKStcIiwgXCIrTWF0aC5yb3VuZCh0aGlzLl9iKStcIilcIjpcInJnYmEoXCIrTWF0aC5yb3VuZCh0aGlzLl9yKStcIiwgXCIrTWF0aC5yb3VuZCh0aGlzLl9nKStcIiwgXCIrTWF0aC5yb3VuZCh0aGlzLl9iKStcIiwgXCIrdGhpcy5fcm91bmRBK1wiKVwifSx0b1BlcmNlbnRhZ2VSZ2I6ZnVuY3Rpb24oKXtyZXR1cm57cjpNYXRoLnJvdW5kKDEwMCpfKHRoaXMuX3IsMjU1KSkrXCIlXCIsZzpNYXRoLnJvdW5kKDEwMCpfKHRoaXMuX2csMjU1KSkrXCIlXCIsYjpNYXRoLnJvdW5kKDEwMCpfKHRoaXMuX2IsMjU1KSkrXCIlXCIsYTp0aGlzLl9hfX0sdG9QZXJjZW50YWdlUmdiU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDE9PXRoaXMuX2E/XCJyZ2IoXCIrTWF0aC5yb3VuZCgxMDAqXyh0aGlzLl9yLDI1NSkpK1wiJSwgXCIrTWF0aC5yb3VuZCgxMDAqXyh0aGlzLl9nLDI1NSkpK1wiJSwgXCIrTWF0aC5yb3VuZCgxMDAqXyh0aGlzLl9iLDI1NSkpK1wiJSlcIjpcInJnYmEoXCIrTWF0aC5yb3VuZCgxMDAqXyh0aGlzLl9yLDI1NSkpK1wiJSwgXCIrTWF0aC5yb3VuZCgxMDAqXyh0aGlzLl9nLDI1NSkpK1wiJSwgXCIrTWF0aC5yb3VuZCgxMDAqXyh0aGlzLl9iLDI1NSkpK1wiJSwgXCIrdGhpcy5fcm91bmRBK1wiKVwifSx0b05hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuX2E/XCJ0cmFuc3BhcmVudFwiOiEodGhpcy5fYTwxKSYmKGJbYSh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYiwhMCldfHwhMSl9LHRvRmlsdGVyOmZ1bmN0aW9uKGUpe3ZhciB0PVwiI1wiK2wodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsdGhpcy5fYSksbj10LG89dGhpcy5fZ3JhZGllbnRUeXBlP1wiR3JhZGllbnRUeXBlID0gMSwgXCI6XCJcIjtpZihlKXt2YXIgaT1yKGUpO249XCIjXCIrbChpLl9yLGkuX2csaS5fYixpLl9hKX1yZXR1cm5cInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChcIitvK1wic3RhcnRDb2xvcnN0cj1cIit0K1wiLGVuZENvbG9yc3RyPVwiK24rXCIpXCJ9LHRvU3RyaW5nOmZ1bmN0aW9uKGUpe3ZhciB0PSEhZTtlPWV8fHRoaXMuX2Zvcm1hdDt2YXIgbj0hMSxyPXRoaXMuX2E8MSYmdGhpcy5fYT49MDtyZXR1cm4gdHx8IXJ8fFwiaGV4XCIhPT1lJiZcImhleDZcIiE9PWUmJlwiaGV4M1wiIT09ZSYmXCJoZXg0XCIhPT1lJiZcImhleDhcIiE9PWUmJlwibmFtZVwiIT09ZT8oXCJyZ2JcIj09PWUmJihuPXRoaXMudG9SZ2JTdHJpbmcoKSksXCJwcmdiXCI9PT1lJiYobj10aGlzLnRvUGVyY2VudGFnZVJnYlN0cmluZygpKSxcImhleFwiIT09ZSYmXCJoZXg2XCIhPT1lfHwobj10aGlzLnRvSGV4U3RyaW5nKCkpLFwiaGV4M1wiPT09ZSYmKG49dGhpcy50b0hleFN0cmluZyghMCkpLFwiaGV4NFwiPT09ZSYmKG49dGhpcy50b0hleDhTdHJpbmcoITApKSxcImhleDhcIj09PWUmJihuPXRoaXMudG9IZXg4U3RyaW5nKCkpLFwibmFtZVwiPT09ZSYmKG49dGhpcy50b05hbWUoKSksXCJoc2xcIj09PWUmJihuPXRoaXMudG9Ic2xTdHJpbmcoKSksXCJoc3ZcIj09PWUmJihuPXRoaXMudG9Ic3ZTdHJpbmcoKSksbnx8dGhpcy50b0hleFN0cmluZygpKTpcIm5hbWVcIj09PWUmJjA9PT10aGlzLl9hP3RoaXMudG9OYW1lKCk6dGhpcy50b1JnYlN0cmluZygpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiByKHRoaXMudG9TdHJpbmcoKSl9LF9hcHBseU1vZGlmaWNhdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuPWUuYXBwbHkobnVsbCxbdGhpc10uY29uY2F0KFtdLnNsaWNlLmNhbGwodCkpKTtyZXR1cm4gdGhpcy5fcj1uLl9yLHRoaXMuX2c9bi5fZyx0aGlzLl9iPW4uX2IsdGhpcy5zZXRBbHBoYShuLl9hKSx0aGlzfSxsaWdodGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGYsYXJndW1lbnRzKX0sYnJpZ2h0ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oZCxhcmd1bWVudHMpfSxkYXJrZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24ocCxhcmd1bWVudHMpfSxkZXNhdHVyYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKHMsYXJndW1lbnRzKX0sc2F0dXJhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oYyxhcmd1bWVudHMpfSxncmV5c2NhbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24odSxhcmd1bWVudHMpfSxzcGluOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGgsYXJndW1lbnRzKX0sX2FwcGx5Q29tYmluYXRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5hcHBseShudWxsLFt0aGlzXS5jb25jYXQoW10uc2xpY2UuY2FsbCh0KSkpfSxhbmFsb2dvdXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihtLGFyZ3VtZW50cyl9LGNvbXBsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbih2LGFyZ3VtZW50cyl9LG1vbm9jaHJvbWF0aWM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbih5LGFyZ3VtZW50cyl9LHNwbGl0Y29tcGxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKEMsYXJndW1lbnRzKX0sdHJpYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihnLFszXSl9LHRldHJhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKGcsWzRdKX19LHIuZnJvbVJhdGlvPWZ1bmN0aW9uKHQsbil7aWYoXCJvYmplY3RcIj09ZSh0KSl7dmFyIG89e307Zm9yKHZhciBpIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShpKSYmKG9baV09XCJhXCI9PT1pP3RbaV06Uyh0W2ldKSk7dD1vfXJldHVybiByKHQsbil9LHIuZXF1YWxzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuISghZXx8IXQpJiZyKGUpLnRvUmdiU3RyaW5nKCk9PXIodCkudG9SZ2JTdHJpbmcoKX0sci5yYW5kb209ZnVuY3Rpb24oKXtyZXR1cm4gci5mcm9tUmF0aW8oe3I6TWF0aC5yYW5kb20oKSxnOk1hdGgucmFuZG9tKCksYjpNYXRoLnJhbmRvbSgpfSl9LHIubWl4PWZ1bmN0aW9uKGUsdCxuKXtuPTA9PT1uPzA6bnx8NTA7dmFyIG89cihlKS50b1JnYigpLGk9cih0KS50b1JnYigpLGE9bi8xMDA7cmV0dXJuIHIoe3I6KGkuci1vLnIpKmErby5yLGc6KGkuZy1vLmcpKmErby5nLGI6KGkuYi1vLmIpKmErby5iLGE6KGkuYS1vLmEpKmErby5hfSl9LHIucmVhZGFiaWxpdHk9ZnVuY3Rpb24oZSx0KXt2YXIgbj1yKGUpLG89cih0KTtyZXR1cm4oTWF0aC5tYXgobi5nZXRMdW1pbmFuY2UoKSxvLmdldEx1bWluYW5jZSgpKSsuMDUpLyhNYXRoLm1pbihuLmdldEx1bWluYW5jZSgpLG8uZ2V0THVtaW5hbmNlKCkpKy4wNSl9LHIuaXNSZWFkYWJsZT1mdW5jdGlvbihlLHQsbil7dmFyIG8saSxhLGwscyxjPXIucmVhZGFiaWxpdHkoZSx0KTtzd2l0Y2goaT0hMSwoYT1uLFwiQUFcIiE9PShsPSgoYT1hfHx7bGV2ZWw6XCJBQVwiLHNpemU6XCJzbWFsbFwifSkubGV2ZWx8fFwiQUFcIikudG9VcHBlckNhc2UoKSkmJlwiQUFBXCIhPT1sJiYobD1cIkFBXCIpLFwic21hbGxcIiE9PShzPShhLnNpemV8fFwic21hbGxcIikudG9Mb3dlckNhc2UoKSkmJlwibGFyZ2VcIiE9PXMmJihzPVwic21hbGxcIiksbz17bGV2ZWw6bCxzaXplOnN9KS5sZXZlbCtvLnNpemUpe2Nhc2VcIkFBc21hbGxcIjpjYXNlXCJBQUFsYXJnZVwiOmk9Yz49NC41O2JyZWFrO2Nhc2VcIkFBbGFyZ2VcIjppPWM+PTM7YnJlYWs7Y2FzZVwiQUFBc21hbGxcIjppPWM+PTd9cmV0dXJuIGl9LHIubW9zdFJlYWRhYmxlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbyxpLGEsbCxzPW51bGwsYz0wO2k9KG49bnx8e30pLmluY2x1ZGVGYWxsYmFja0NvbG9ycyxhPW4ubGV2ZWwsbD1uLnNpemU7Zm9yKHZhciB1PTA7dTx0Lmxlbmd0aDt1KyspKG89ci5yZWFkYWJpbGl0eShlLHRbdV0pKT5jJiYoYz1vLHM9cih0W3VdKSk7cmV0dXJuIHIuaXNSZWFkYWJsZShlLHMse2xldmVsOmEsc2l6ZTpsfSl8fCFpP3M6KG4uaW5jbHVkZUZhbGxiYWNrQ29sb3JzPSExLHIubW9zdFJlYWRhYmxlKGUsW1wiI2ZmZlwiLFwiIzAwMFwiXSxuKSl9O3ZhciB3PXIubmFtZXM9e2FsaWNlYmx1ZTpcImYwZjhmZlwiLGFudGlxdWV3aGl0ZTpcImZhZWJkN1wiLGFxdWE6XCIwZmZcIixhcXVhbWFyaW5lOlwiN2ZmZmQ0XCIsYXp1cmU6XCJmMGZmZmZcIixiZWlnZTpcImY1ZjVkY1wiLGJpc3F1ZTpcImZmZTRjNFwiLGJsYWNrOlwiMDAwXCIsYmxhbmNoZWRhbG1vbmQ6XCJmZmViY2RcIixibHVlOlwiMDBmXCIsYmx1ZXZpb2xldDpcIjhhMmJlMlwiLGJyb3duOlwiYTUyYTJhXCIsYnVybHl3b29kOlwiZGViODg3XCIsYnVybnRzaWVubmE6XCJlYTdlNWRcIixjYWRldGJsdWU6XCI1ZjllYTBcIixjaGFydHJldXNlOlwiN2ZmZjAwXCIsY2hvY29sYXRlOlwiZDI2OTFlXCIsY29yYWw6XCJmZjdmNTBcIixjb3JuZmxvd2VyYmx1ZTpcIjY0OTVlZFwiLGNvcm5zaWxrOlwiZmZmOGRjXCIsY3JpbXNvbjpcImRjMTQzY1wiLGN5YW46XCIwZmZcIixkYXJrYmx1ZTpcIjAwMDA4YlwiLGRhcmtjeWFuOlwiMDA4YjhiXCIsZGFya2dvbGRlbnJvZDpcImI4ODYwYlwiLGRhcmtncmF5OlwiYTlhOWE5XCIsZGFya2dyZWVuOlwiMDA2NDAwXCIsZGFya2dyZXk6XCJhOWE5YTlcIixkYXJra2hha2k6XCJiZGI3NmJcIixkYXJrbWFnZW50YTpcIjhiMDA4YlwiLGRhcmtvbGl2ZWdyZWVuOlwiNTU2YjJmXCIsZGFya29yYW5nZTpcImZmOGMwMFwiLGRhcmtvcmNoaWQ6XCI5OTMyY2NcIixkYXJrcmVkOlwiOGIwMDAwXCIsZGFya3NhbG1vbjpcImU5OTY3YVwiLGRhcmtzZWFncmVlbjpcIjhmYmM4ZlwiLGRhcmtzbGF0ZWJsdWU6XCI0ODNkOGJcIixkYXJrc2xhdGVncmF5OlwiMmY0ZjRmXCIsZGFya3NsYXRlZ3JleTpcIjJmNGY0ZlwiLGRhcmt0dXJxdW9pc2U6XCIwMGNlZDFcIixkYXJrdmlvbGV0OlwiOTQwMGQzXCIsZGVlcHBpbms6XCJmZjE0OTNcIixkZWVwc2t5Ymx1ZTpcIjAwYmZmZlwiLGRpbWdyYXk6XCI2OTY5NjlcIixkaW1ncmV5OlwiNjk2OTY5XCIsZG9kZ2VyYmx1ZTpcIjFlOTBmZlwiLGZpcmVicmljazpcImIyMjIyMlwiLGZsb3JhbHdoaXRlOlwiZmZmYWYwXCIsZm9yZXN0Z3JlZW46XCIyMjhiMjJcIixmdWNoc2lhOlwiZjBmXCIsZ2FpbnNib3JvOlwiZGNkY2RjXCIsZ2hvc3R3aGl0ZTpcImY4ZjhmZlwiLGdvbGQ6XCJmZmQ3MDBcIixnb2xkZW5yb2Q6XCJkYWE1MjBcIixncmF5OlwiODA4MDgwXCIsZ3JlZW46XCIwMDgwMDBcIixncmVlbnllbGxvdzpcImFkZmYyZlwiLGdyZXk6XCI4MDgwODBcIixob25leWRldzpcImYwZmZmMFwiLGhvdHBpbms6XCJmZjY5YjRcIixpbmRpYW5yZWQ6XCJjZDVjNWNcIixpbmRpZ286XCI0YjAwODJcIixpdm9yeTpcImZmZmZmMFwiLGtoYWtpOlwiZjBlNjhjXCIsbGF2ZW5kZXI6XCJlNmU2ZmFcIixsYXZlbmRlcmJsdXNoOlwiZmZmMGY1XCIsbGF3bmdyZWVuOlwiN2NmYzAwXCIsbGVtb25jaGlmZm9uOlwiZmZmYWNkXCIsbGlnaHRibHVlOlwiYWRkOGU2XCIsbGlnaHRjb3JhbDpcImYwODA4MFwiLGxpZ2h0Y3lhbjpcImUwZmZmZlwiLGxpZ2h0Z29sZGVucm9keWVsbG93OlwiZmFmYWQyXCIsbGlnaHRncmF5OlwiZDNkM2QzXCIsbGlnaHRncmVlbjpcIjkwZWU5MFwiLGxpZ2h0Z3JleTpcImQzZDNkM1wiLGxpZ2h0cGluazpcImZmYjZjMVwiLGxpZ2h0c2FsbW9uOlwiZmZhMDdhXCIsbGlnaHRzZWFncmVlbjpcIjIwYjJhYVwiLGxpZ2h0c2t5Ymx1ZTpcIjg3Y2VmYVwiLGxpZ2h0c2xhdGVncmF5OlwiNzg5XCIsbGlnaHRzbGF0ZWdyZXk6XCI3ODlcIixsaWdodHN0ZWVsYmx1ZTpcImIwYzRkZVwiLGxpZ2h0eWVsbG93OlwiZmZmZmUwXCIsbGltZTpcIjBmMFwiLGxpbWVncmVlbjpcIjMyY2QzMlwiLGxpbmVuOlwiZmFmMGU2XCIsbWFnZW50YTpcImYwZlwiLG1hcm9vbjpcIjgwMDAwMFwiLG1lZGl1bWFxdWFtYXJpbmU6XCI2NmNkYWFcIixtZWRpdW1ibHVlOlwiMDAwMGNkXCIsbWVkaXVtb3JjaGlkOlwiYmE1NWQzXCIsbWVkaXVtcHVycGxlOlwiOTM3MGRiXCIsbWVkaXVtc2VhZ3JlZW46XCIzY2IzNzFcIixtZWRpdW1zbGF0ZWJsdWU6XCI3YjY4ZWVcIixtZWRpdW1zcHJpbmdncmVlbjpcIjAwZmE5YVwiLG1lZGl1bXR1cnF1b2lzZTpcIjQ4ZDFjY1wiLG1lZGl1bXZpb2xldHJlZDpcImM3MTU4NVwiLG1pZG5pZ2h0Ymx1ZTpcIjE5MTk3MFwiLG1pbnRjcmVhbTpcImY1ZmZmYVwiLG1pc3R5cm9zZTpcImZmZTRlMVwiLG1vY2Nhc2luOlwiZmZlNGI1XCIsbmF2YWpvd2hpdGU6XCJmZmRlYWRcIixuYXZ5OlwiMDAwMDgwXCIsb2xkbGFjZTpcImZkZjVlNlwiLG9saXZlOlwiODA4MDAwXCIsb2xpdmVkcmFiOlwiNmI4ZTIzXCIsb3JhbmdlOlwiZmZhNTAwXCIsb3JhbmdlcmVkOlwiZmY0NTAwXCIsb3JjaGlkOlwiZGE3MGQ2XCIscGFsZWdvbGRlbnJvZDpcImVlZThhYVwiLHBhbGVncmVlbjpcIjk4ZmI5OFwiLHBhbGV0dXJxdW9pc2U6XCJhZmVlZWVcIixwYWxldmlvbGV0cmVkOlwiZGI3MDkzXCIscGFwYXlhd2hpcDpcImZmZWZkNVwiLHBlYWNocHVmZjpcImZmZGFiOVwiLHBlcnU6XCJjZDg1M2ZcIixwaW5rOlwiZmZjMGNiXCIscGx1bTpcImRkYTBkZFwiLHBvd2RlcmJsdWU6XCJiMGUwZTZcIixwdXJwbGU6XCI4MDAwODBcIixyZWJlY2NhcHVycGxlOlwiNjYzMzk5XCIscmVkOlwiZjAwXCIscm9zeWJyb3duOlwiYmM4ZjhmXCIscm95YWxibHVlOlwiNDE2OWUxXCIsc2FkZGxlYnJvd246XCI4YjQ1MTNcIixzYWxtb246XCJmYTgwNzJcIixzYW5keWJyb3duOlwiZjRhNDYwXCIsc2VhZ3JlZW46XCIyZThiNTdcIixzZWFzaGVsbDpcImZmZjVlZVwiLHNpZW5uYTpcImEwNTIyZFwiLHNpbHZlcjpcImMwYzBjMFwiLHNreWJsdWU6XCI4N2NlZWJcIixzbGF0ZWJsdWU6XCI2YTVhY2RcIixzbGF0ZWdyYXk6XCI3MDgwOTBcIixzbGF0ZWdyZXk6XCI3MDgwOTBcIixzbm93OlwiZmZmYWZhXCIsc3ByaW5nZ3JlZW46XCIwMGZmN2ZcIixzdGVlbGJsdWU6XCI0NjgyYjRcIix0YW46XCJkMmI0OGNcIix0ZWFsOlwiMDA4MDgwXCIsdGhpc3RsZTpcImQ4YmZkOFwiLHRvbWF0bzpcImZmNjM0N1wiLHR1cnF1b2lzZTpcIjQwZTBkMFwiLHZpb2xldDpcImVlODJlZVwiLHdoZWF0OlwiZjVkZWIzXCIsd2hpdGU6XCJmZmZcIix3aGl0ZXNtb2tlOlwiZjVmNWY1XCIseWVsbG93OlwiZmYwXCIseWVsbG93Z3JlZW46XCI5YWNkMzJcIn0sYj1yLmhleE5hbWVzPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W2Vbbl1dPW4pO3JldHVybiB0fSh3KTtmdW5jdGlvbiB4KGUpe3JldHVybiBlPXBhcnNlRmxvYXQoZSksKGlzTmFOKGUpfHxlPDB8fGU+MSkmJihlPTEpLGV9ZnVuY3Rpb24gXyhlLHQpeyhmdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmLTEhPWUuaW5kZXhPZihcIi5cIikmJjE9PT1wYXJzZUZsb2F0KGUpfSkoZSkmJihlPVwiMTAwJVwiKTt2YXIgbj1mdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmLTEhPWUuaW5kZXhPZihcIiVcIil9KGUpO3JldHVybiBlPU1hdGgubWluKHQsTWF0aC5tYXgoMCxwYXJzZUZsb2F0KGUpKSksbiYmKGU9cGFyc2VJbnQoZSp0LDEwKS8xMDApLE1hdGguYWJzKGUtdCk8MWUtNj8xOmUldC9wYXJzZUZsb2F0KHQpfWZ1bmN0aW9uIEwoZSl7cmV0dXJuIE1hdGgubWluKDEsTWF0aC5tYXgoMCxlKSl9ZnVuY3Rpb24gTyhlKXtyZXR1cm4gcGFyc2VJbnQoZSwxNil9ZnVuY3Rpb24gRShlKXtyZXR1cm4gMT09ZS5sZW5ndGg/XCIwXCIrZTpcIlwiK2V9ZnVuY3Rpb24gUyhlKXtyZXR1cm4gZTw9MSYmKGU9MTAwKmUrXCIlXCIpLGV9ZnVuY3Rpb24gTShlKXtyZXR1cm4gTWF0aC5yb3VuZCgyNTUqcGFyc2VGbG9hdChlKSkudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGooZSl7cmV0dXJuIE8oZSkvMjU1fXZhciBrLFIsUCxBPShSPVwiW1xcXFxzfFxcXFwoXSsoXCIrKGs9XCIoPzpbLVxcXFwrXT9cXFxcZCpcXFxcLlxcXFxkKyU/KXwoPzpbLVxcXFwrXT9cXFxcZCslPylcIikrXCIpWyx8XFxcXHNdKyhcIitrK1wiKVssfFxcXFxzXSsoXCIraytcIilcXFxccypcXFxcKT9cIixQPVwiW1xcXFxzfFxcXFwoXSsoXCIraytcIilbLHxcXFxcc10rKFwiK2srXCIpWyx8XFxcXHNdKyhcIitrK1wiKVssfFxcXFxzXSsoXCIraytcIilcXFxccypcXFxcKT9cIix7Q1NTX1VOSVQ6bmV3IFJlZ0V4cChrKSxyZ2I6bmV3IFJlZ0V4cChcInJnYlwiK1IpLHJnYmE6bmV3IFJlZ0V4cChcInJnYmFcIitQKSxoc2w6bmV3IFJlZ0V4cChcImhzbFwiK1IpLGhzbGE6bmV3IFJlZ0V4cChcImhzbGFcIitQKSxoc3Y6bmV3IFJlZ0V4cChcImhzdlwiK1IpLGhzdmE6bmV3IFJlZ0V4cChcImhzdmFcIitQKSxoZXgzOi9eIz8oWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkkLyxoZXg2Oi9eIz8oWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkkLyxoZXg0Oi9eIz8oWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pJC8saGV4ODovXiM/KFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KSQvfSk7ZnVuY3Rpb24gSShlKXtyZXR1cm4hIUEuQ1NTX1VOSVQuZXhlYyhlKX1yZXR1cm4gcn0oKX19LG89e307ZnVuY3Rpb24gaShlKXt2YXIgdD1vW2VdO2lmKHZvaWQgMCE9PXQpcmV0dXJuIHQuZXhwb3J0czt2YXIgbj1vW2VdPXtpZDplLGV4cG9ydHM6e319O3JldHVybiByW2VdLmNhbGwobi5leHBvcnRzLG4sbi5leHBvcnRzLGkpLG4uZXhwb3J0c31pLm49ZT0+e3ZhciB0PWUmJmUuX19lc01vZHVsZT8oKT0+ZS5kZWZhdWx0OigpPT5lO3JldHVybiBpLmQodCx7YTp0fSksdH0saS5kPShlLHQpPT57Zm9yKHZhciBuIGluIHQpaS5vKHQsbikmJiFpLm8oZSxuKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTohMCxnZXQ6dFtuXX0pfSxpLmc9ZnVuY3Rpb24oKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsVGhpcylyZXR1cm4gZ2xvYmFsVGhpczt0cnl7cmV0dXJuIHRoaXN8fG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCl9Y2F0Y2goZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93fX0oKSxpLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpLGkucj1lPT57XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX07dmFyIGE9aSgzNDEpLGw9dDtmb3IodmFyIHMgaW4gYSlsW3NdPWFbc107YS5fX2VzTW9kdWxlJiZPYmplY3QuZGVmaW5lUHJvcGVydHkobCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sMTk4OihlLHQsbik9Pnt2YXIgcj1OYU4sbz1cIltvYmplY3QgU3ltYm9sXVwiLGk9L15cXHMrfFxccyskL2csYT0vXlstK10weFswLTlhLWZdKyQvaSxsPS9eMGJbMDFdKyQvaSxzPS9eMG9bMC03XSskL2ksYz1wYXJzZUludCx1PVwib2JqZWN0XCI9PXR5cGVvZiBuLmcmJm4uZyYmbi5nLk9iamVjdD09PU9iamVjdCYmbi5nLGY9XCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGQ9dXx8Znx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpLHA9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxoPU1hdGgubWF4LHY9TWF0aC5taW4sZz1mdW5jdGlvbigpe3JldHVybiBkLkRhdGUubm93KCl9O2Z1bmN0aW9uIEMoZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuISFlJiYoXCJvYmplY3RcIj09dHx8XCJmdW5jdGlvblwiPT10KX1mdW5jdGlvbiBtKGUpe2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXJldHVybiBlO2lmKGZ1bmN0aW9uKGUpe3JldHVyblwic3ltYm9sXCI9PXR5cGVvZiBlfHxmdW5jdGlvbihlKXtyZXR1cm4hIWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlfShlKSYmcC5jYWxsKGUpPT1vfShlKSlyZXR1cm4gcjtpZihDKGUpKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnZhbHVlT2Y/ZS52YWx1ZU9mKCk6ZTtlPUModCk/dCtcIlwiOnR9aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpcmV0dXJuIDA9PT1lP2U6K2U7ZT1lLnJlcGxhY2UoaSxcIlwiKTt2YXIgbj1sLnRlc3QoZSk7cmV0dXJuIG58fHMudGVzdChlKT9jKGUuc2xpY2UoMiksbj8yOjgpOmEudGVzdChlKT9yOitlfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpLGEsbCxzLGM9MCx1PSExLGY9ITEsZD0hMDtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCBhIGZ1bmN0aW9uXCIpO2Z1bmN0aW9uIHAodCl7dmFyIG49cixpPW87cmV0dXJuIHI9bz12b2lkIDAsYz10LGE9ZS5hcHBseShpLG4pfWZ1bmN0aW9uIHkoZSl7dmFyIG49ZS1zO3JldHVybiB2b2lkIDA9PT1zfHxuPj10fHxuPDB8fGYmJmUtYz49aX1mdW5jdGlvbiB3KCl7dmFyIGU9ZygpO2lmKHkoZSkpcmV0dXJuIGIoZSk7bD1zZXRUaW1lb3V0KHcsZnVuY3Rpb24oZSl7dmFyIG49dC0oZS1zKTtyZXR1cm4gZj92KG4saS0oZS1jKSk6bn0oZSkpfWZ1bmN0aW9uIGIoZSl7cmV0dXJuIGw9dm9pZCAwLGQmJnI/cChlKToocj1vPXZvaWQgMCxhKX1mdW5jdGlvbiB4KCl7dmFyIGU9ZygpLG49eShlKTtpZihyPWFyZ3VtZW50cyxvPXRoaXMscz1lLG4pe2lmKHZvaWQgMD09PWwpcmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBjPWUsbD1zZXRUaW1lb3V0KHcsdCksdT9wKGUpOmF9KHMpO2lmKGYpcmV0dXJuIGw9c2V0VGltZW91dCh3LHQpLHAocyl9cmV0dXJuIHZvaWQgMD09PWwmJihsPXNldFRpbWVvdXQodyx0KSksYX1yZXR1cm4gdD1tKHQpfHwwLEMobikmJih1PSEhbi5sZWFkaW5nLGk9KGY9XCJtYXhXYWl0XCJpbiBuKT9oKG0obi5tYXhXYWl0KXx8MCx0KTppLGQ9XCJ0cmFpbGluZ1wiaW4gbj8hIW4udHJhaWxpbmc6ZCkseC5jYW5jZWw9ZnVuY3Rpb24oKXt2b2lkIDAhPT1sJiZjbGVhclRpbWVvdXQobCksYz0wLHI9cz1vPWw9dm9pZCAwfSx4LmZsdXNoPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PWw/YTpiKGcoKSl9LHh9fSw1MjU6ZT0+e1widXNlIHN0cmljdFwiO3ZhciB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsbj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHI9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIGU9bmV3IFN0cmluZyhcImFiY1wiKTtpZihlWzVdPVwiZGVcIixcIjVcIj09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBdKXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFtcIl9cIitTdHJpbmcuZnJvbUNoYXJDb2RlKG4pXT1uO2lmKFwiMDEyMzQ1Njc4OVwiIT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pKS5qb2luKFwiXCIpKXJldHVybiExO3ZhciByPXt9O3JldHVyblwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIi5zcGxpdChcIlwiKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyW2VdPWV9KSksXCJhYmNkZWZnaGlqa2xtbm9wcXJzdFwiPT09T2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxyKSkuam9pbihcIlwiKX1jYXRjaChlKXtyZXR1cm4hMX19KCk/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihlLG8pe2Zvcih2YXIgaSxhLGw9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWRcIik7cmV0dXJuIE9iamVjdChlKX0oZSkscz0xO3M8YXJndW1lbnRzLmxlbmd0aDtzKyspe2Zvcih2YXIgYyBpbiBpPU9iamVjdChhcmd1bWVudHNbc10pKW4uY2FsbChpLGMpJiYobFtjXT1pW2NdKTtpZih0KXthPXQoaSk7Zm9yKHZhciB1PTA7dTxhLmxlbmd0aDt1Kyspci5jYWxsKGksYVt1XSkmJihsW2FbdV1dPWlbYVt1XV0pfX1yZXR1cm4gbH19LDcwMjooZSx0KT0+e1widXNlIHN0cmljdFwiO3ZhciBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcixyPW4/U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIik6NjAxMDMsbz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIik6NjAxMDYsaT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKTo2MDEwNyxhPW4/U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpOjYwMTA4LGw9bj9TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIik6NjAxMTQscz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKTo2MDEwOSxjPW4/U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIik6NjAxMTAsdT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5hc3luY19tb2RlXCIpOjYwMTExLGY9bj9TeW1ib2wuZm9yKFwicmVhY3QuY29uY3VycmVudF9tb2RlXCIpOjYwMTExLGQ9bj9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIscD1uP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxoPW4/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIik6NjAxMjAsdj1uP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LGc9bj9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNixDPW4/U3ltYm9sLmZvcihcInJlYWN0LmJsb2NrXCIpOjYwMTIxLG09bj9TeW1ib2wuZm9yKFwicmVhY3QuZnVuZGFtZW50YWxcIik6NjAxMTcseT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5yZXNwb25kZXJcIik6NjAxMTgsdz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTo2MDExOTtmdW5jdGlvbiBiKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSl7dmFyIHQ9ZS4kJHR5cGVvZjtzd2l0Y2godCl7Y2FzZSByOnN3aXRjaChlPWUudHlwZSl7Y2FzZSB1OmNhc2UgZjpjYXNlIGk6Y2FzZSBsOmNhc2UgYTpjYXNlIHA6cmV0dXJuIGU7ZGVmYXVsdDpzd2l0Y2goZT1lJiZlLiQkdHlwZW9mKXtjYXNlIGM6Y2FzZSBkOmNhc2UgZzpjYXNlIHY6Y2FzZSBzOnJldHVybiBlO2RlZmF1bHQ6cmV0dXJuIHR9fWNhc2UgbzpyZXR1cm4gdH19fWZ1bmN0aW9uIHgoZSl7cmV0dXJuIGIoZSk9PT1mfXQuRm9yd2FyZFJlZj1kLHQuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlfHxlPT09aXx8ZT09PWZ8fGU9PT1sfHxlPT09YXx8ZT09PXB8fGU9PT1ofHxcIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUmJihlLiQkdHlwZW9mPT09Z3x8ZS4kJHR5cGVvZj09PXZ8fGUuJCR0eXBlb2Y9PT1zfHxlLiQkdHlwZW9mPT09Y3x8ZS4kJHR5cGVvZj09PWR8fGUuJCR0eXBlb2Y9PT1tfHxlLiQkdHlwZW9mPT09eXx8ZS4kJHR5cGVvZj09PXd8fGUuJCR0eXBlb2Y9PT1DKX19LDE4NTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4oNzAyKX0sNTM1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDUyNSksbz02MDEwMyxpPTYwMTA2O3QuRnJhZ21lbnQ9NjAxMDcsdC5TdHJpY3RNb2RlPTYwMTA4LHQuUHJvZmlsZXI9NjAxMTQ7dmFyIGE9NjAxMDksbD02MDExMCxzPTYwMTEyO3QuU3VzcGVuc2U9NjAxMTM7dmFyIGM9NjAxMTUsdT02MDExNjtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3Ipe3ZhciBmPVN5bWJvbC5mb3I7bz1mKFwicmVhY3QuZWxlbWVudFwiKSxpPWYoXCJyZWFjdC5wb3J0YWxcIiksdC5GcmFnbWVudD1mKFwicmVhY3QuZnJhZ21lbnRcIiksdC5TdHJpY3RNb2RlPWYoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSx0LlByb2ZpbGVyPWYoXCJyZWFjdC5wcm9maWxlclwiKSxhPWYoXCJyZWFjdC5wcm92aWRlclwiKSxsPWYoXCJyZWFjdC5jb250ZXh0XCIpLHM9ZihcInJlYWN0LmZvcndhcmRfcmVmXCIpLHQuU3VzcGVuc2U9ZihcInJlYWN0LnN1c3BlbnNlXCIpLGM9ZihcInJlYWN0Lm1lbW9cIiksdT1mKFwicmVhY3QubGF6eVwiKX12YXIgZD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBwKGUpe2Zvcih2YXIgdD1cImh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PVwiK2Usbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdCs9XCImYXJnc1tdPVwiK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbbl0pO3JldHVyblwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiK2UrXCI7IHZpc2l0IFwiK3QrXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLlwifXZhciBoPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSx2PXt9O2Z1bmN0aW9uIGcoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9dix0aGlzLnVwZGF0ZXI9bnx8aH1mdW5jdGlvbiBDKCl7fWZ1bmN0aW9uIG0oZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9dix0aGlzLnVwZGF0ZXI9bnx8aH1nLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LGcucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPWUpdGhyb3cgRXJyb3IocCg4NSkpO3RoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxlLHQsXCJzZXRTdGF0ZVwiKX0sZy5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLGUsXCJmb3JjZVVwZGF0ZVwiKX0sQy5wcm90b3R5cGU9Zy5wcm90b3R5cGU7dmFyIHk9bS5wcm90b3R5cGU9bmV3IEM7eS5jb25zdHJ1Y3Rvcj1tLHIoeSxnLnByb3RvdHlwZSkseS5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgdz17Y3VycmVudDpudWxsfSxiPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkseD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIF8oZSx0LG4pe3ZhciByLGk9e30sYT1udWxsLGw9bnVsbDtpZihudWxsIT10KWZvcihyIGluIHZvaWQgMCE9PXQucmVmJiYobD10LnJlZiksdm9pZCAwIT09dC5rZXkmJihhPVwiXCIrdC5rZXkpLHQpYi5jYWxsKHQscikmJiF4Lmhhc093blByb3BlcnR5KHIpJiYoaVtyXT10W3JdKTt2YXIgcz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PXMpaS5jaGlsZHJlbj1uO2Vsc2UgaWYoMTxzKXtmb3IodmFyIGM9QXJyYXkocyksdT0wO3U8czt1KyspY1t1XT1hcmd1bWVudHNbdSsyXTtpLmNoaWxkcmVuPWN9aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKHIgaW4gcz1lLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT1pW3JdJiYoaVtyXT1zW3JdKTtyZXR1cm57JCR0eXBlb2Y6byx0eXBlOmUsa2V5OmEscmVmOmwscHJvcHM6aSxfb3duZXI6dy5jdXJyZW50fX1mdW5jdGlvbiBMKGUpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmZS4kJHR5cGVvZj09PW99dmFyIE89L1xcLysvZztmdW5jdGlvbiBFKGUsdCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lJiZudWxsIT1lLmtleT9mdW5jdGlvbihlKXt2YXIgdD17XCI9XCI6XCI9MFwiLFwiOlwiOlwiPTJcIn07cmV0dXJuXCIkXCIrZS5yZXBsYWNlKC9bPTpdL2csKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkpfShcIlwiK2Uua2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBTKGUsdCxuLHIsYSl7dmFyIGw9dHlwZW9mIGU7XCJ1bmRlZmluZWRcIiE9PWwmJlwiYm9vbGVhblwiIT09bHx8KGU9bnVsbCk7dmFyIHM9ITE7aWYobnVsbD09PWUpcz0hMDtlbHNlIHN3aXRjaChsKXtjYXNlXCJzdHJpbmdcIjpjYXNlXCJudW1iZXJcIjpzPSEwO2JyZWFrO2Nhc2VcIm9iamVjdFwiOnN3aXRjaChlLiQkdHlwZW9mKXtjYXNlIG86Y2FzZSBpOnM9ITB9fWlmKHMpcmV0dXJuIGE9YShzPWUpLGU9XCJcIj09PXI/XCIuXCIrRShzLDApOnIsQXJyYXkuaXNBcnJheShhKT8obj1cIlwiLG51bGwhPWUmJihuPWUucmVwbGFjZShPLFwiJCYvXCIpK1wiL1wiKSxTKGEsdCxuLFwiXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpKTpudWxsIT1hJiYoTChhKSYmKGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm57JCR0eXBlb2Y6byx0eXBlOmUudHlwZSxrZXk6dCxyZWY6ZS5yZWYscHJvcHM6ZS5wcm9wcyxfb3duZXI6ZS5fb3duZXJ9fShhLG4rKCFhLmtleXx8cyYmcy5rZXk9PT1hLmtleT9cIlwiOihcIlwiK2Eua2V5KS5yZXBsYWNlKE8sXCIkJi9cIikrXCIvXCIpK2UpKSx0LnB1c2goYSkpLDE7aWYocz0wLHI9XCJcIj09PXI/XCIuXCI6citcIjpcIixBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgYz0wO2M8ZS5sZW5ndGg7YysrKXt2YXIgdT1yK0UobD1lW2NdLGMpO3MrPVMobCx0LG4sdSxhKX1lbHNlIGlmKHU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHxcIm9iamVjdFwiIT10eXBlb2YgZT9udWxsOlwiZnVuY3Rpb25cIj09dHlwZW9mKGU9ZCYmZVtkXXx8ZVtcIkBAaXRlcmF0b3JcIl0pP2U6bnVsbH0oZSksXCJmdW5jdGlvblwiPT10eXBlb2YgdSlmb3IoZT11LmNhbGwoZSksYz0wOyEobD1lLm5leHQoKSkuZG9uZTspcys9UyhsPWwudmFsdWUsdCxuLHU9citFKGwsYysrKSxhKTtlbHNlIGlmKFwib2JqZWN0XCI9PT1sKXRocm93IHQ9XCJcIitlLEVycm9yKHAoMzEsXCJbb2JqZWN0IE9iamVjdF1cIj09PXQ/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyhlKS5qb2luKFwiLCBcIikrXCJ9XCI6dCkpO3JldHVybiBzfWZ1bmN0aW9uIE0oZSx0LG4pe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIHI9W10sbz0wO3JldHVybiBTKGUscixcIlwiLFwiXCIsKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNhbGwobixlLG8rKyl9KSkscn1mdW5jdGlvbiBqKGUpe2lmKC0xPT09ZS5fc3RhdHVzKXt2YXIgdD1lLl9yZXN1bHQ7dD10KCksZS5fc3RhdHVzPTAsZS5fcmVzdWx0PXQsdC50aGVuKChmdW5jdGlvbih0KXswPT09ZS5fc3RhdHVzJiYodD10LmRlZmF1bHQsZS5fc3RhdHVzPTEsZS5fcmVzdWx0PXQpfSksKGZ1bmN0aW9uKHQpezA9PT1lLl9zdGF0dXMmJihlLl9zdGF0dXM9MixlLl9yZXN1bHQ9dCl9KSl9aWYoMT09PWUuX3N0YXR1cylyZXR1cm4gZS5fcmVzdWx0O3Rocm93IGUuX3Jlc3VsdH12YXIgaz17Y3VycmVudDpudWxsfTtmdW5jdGlvbiBSKCl7dmFyIGU9ay5jdXJyZW50O2lmKG51bGw9PT1lKXRocm93IEVycm9yKHAoMzIxKSk7cmV0dXJuIGV9dmFyIFA9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6ayxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzp7dHJhbnNpdGlvbjowfSxSZWFjdEN1cnJlbnRPd25lcjp3LElzU29tZVJlbmRlcmVyQWN0aW5nOntjdXJyZW50OiExfSxhc3NpZ246cn07dC5DaGlsZHJlbj17bWFwOk0sZm9yRWFjaDpmdW5jdGlvbihlLHQsbil7TShlLChmdW5jdGlvbigpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksbil9LGNvdW50OmZ1bmN0aW9uKGUpe3ZhciB0PTA7cmV0dXJuIE0oZSwoZnVuY3Rpb24oKXt0Kyt9KSksdH0sdG9BcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gTShlLChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKXx8W119LG9ubHk6ZnVuY3Rpb24oZSl7aWYoIUwoZSkpdGhyb3cgRXJyb3IocCgxNDMpKTtyZXR1cm4gZX19LHQuQ29tcG9uZW50PWcsdC5QdXJlQ29tcG9uZW50PW0sdC5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD1QLHQuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuKXtpZihudWxsPT1lKXRocm93IEVycm9yKHAoMjY3LGUpKTt2YXIgaT1yKHt9LGUucHJvcHMpLGE9ZS5rZXksbD1lLnJlZixzPWUuX293bmVyO2lmKG51bGwhPXQpe2lmKHZvaWQgMCE9PXQucmVmJiYobD10LnJlZixzPXcuY3VycmVudCksdm9pZCAwIT09dC5rZXkmJihhPVwiXCIrdC5rZXkpLGUudHlwZSYmZS50eXBlLmRlZmF1bHRQcm9wcyl2YXIgYz1lLnR5cGUuZGVmYXVsdFByb3BzO2Zvcih1IGluIHQpYi5jYWxsKHQsdSkmJiF4Lmhhc093blByb3BlcnR5KHUpJiYoaVt1XT12b2lkIDA9PT10W3VdJiZ2b2lkIDAhPT1jP2NbdV06dFt1XSl9dmFyIHU9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT11KWkuY2hpbGRyZW49bjtlbHNlIGlmKDE8dSl7Yz1BcnJheSh1KTtmb3IodmFyIGY9MDtmPHU7ZisrKWNbZl09YXJndW1lbnRzW2YrMl07aS5jaGlsZHJlbj1jfXJldHVybnskJHR5cGVvZjpvLHR5cGU6ZS50eXBlLGtleTphLHJlZjpsLHByb3BzOmksX293bmVyOnN9fSx0LmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bnVsbCksKGU9eyQkdHlwZW9mOmwsX2NhbGN1bGF0ZUNoYW5nZWRCaXRzOnQsX2N1cnJlbnRWYWx1ZTplLF9jdXJyZW50VmFsdWUyOmUsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsfSkuUHJvdmlkZXI9eyQkdHlwZW9mOmEsX2NvbnRleHQ6ZX0sZS5Db25zdW1lcj1lfSx0LmNyZWF0ZUVsZW1lbnQ9Xyx0LmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9Xy5iaW5kKG51bGwsZSk7cmV0dXJuIHQudHlwZT1lLHR9LHQuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19LHQuZm9yd2FyZFJlZj1mdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6cyxyZW5kZXI6ZX19LHQuaXNWYWxpZEVsZW1lbnQ9TCx0Lmxhenk9ZnVuY3Rpb24oZSl7cmV0dXJueyQkdHlwZW9mOnUsX3BheWxvYWQ6e19zdGF0dXM6LTEsX3Jlc3VsdDplfSxfaW5pdDpqfX0sdC5tZW1vPWZ1bmN0aW9uKGUsdCl7cmV0dXJueyQkdHlwZW9mOmMsdHlwZTplLGNvbXBhcmU6dm9pZCAwPT09dD9udWxsOnR9fSx0LnVzZUNhbGxiYWNrPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFIoKS51c2VDYWxsYmFjayhlLHQpfSx0LnVzZUNvbnRleHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUigpLnVzZUNvbnRleHQoZSx0KX0sdC51c2VEZWJ1Z1ZhbHVlPWZ1bmN0aW9uKCl7fSx0LnVzZUVmZmVjdD1mdW5jdGlvbihlLHQpe3JldHVybiBSKCkudXNlRWZmZWN0KGUsdCl9LHQudXNlSW1wZXJhdGl2ZUhhbmRsZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIFIoKS51c2VJbXBlcmF0aXZlSGFuZGxlKGUsdCxuKX0sdC51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUigpLnVzZUxheW91dEVmZmVjdChlLHQpfSx0LnVzZU1lbW89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUigpLnVzZU1lbW8oZSx0KX0sdC51c2VSZWR1Y2VyPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUigpLnVzZVJlZHVjZXIoZSx0LG4pfSx0LnVzZVJlZj1mdW5jdGlvbihlKXtyZXR1cm4gUigpLnVzZVJlZihlKX0sdC51c2VTdGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gUigpLnVzZVN0YXRlKGUpfSx0LnZlcnNpb249XCIxNy4wLjJcIn0sMzc4OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9big1MzUpfSw5MjE6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCx7U2VydmVyU3R5bGVTaGVldDooKT0+cHQsU3R5bGVTaGVldENvbnN1bWVyOigpPT52dCxTdHlsZVNoZWV0Q29udGV4dDooKT0+aHQsU3R5bGVTaGVldE1hbmFnZXI6KCk9Pmd0LFRoZW1lQ29uc3VtZXI6KCk9PmZ0LFRoZW1lQ29udGV4dDooKT0+dXQsVGhlbWVQcm92aWRlcjooKT0+ZHQsX19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0hBVU5URURfQllfU1BPT0tZX0dIT1NUUzooKT0+RXQsY3JlYXRlR2xvYmFsU3R5bGU6KCk9Pnh0LGNzczooKT0+VmUsZGVmYXVsdDooKT0+U3QsaXNTdHlsZWRDb21wb25lbnQ6KCk9PkYsa2V5ZnJhbWVzOigpPT5MdCx3aXRoVGhlbWU6KCk9Pk90fSk7dmFyIHI9big5NDYpLG89bi5uKHIpLGk9bigyNDYpLGE9bi5uKGkpLGw9bigzNzgpO2NvbnN0IHM9e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OjEsYm9yZGVySW1hZ2VPdXRzZXQ6MSxib3JkZXJJbWFnZVNsaWNlOjEsYm9yZGVySW1hZ2VXaWR0aDoxLGJveEZsZXg6MSxib3hGbGV4R3JvdXA6MSxib3hPcmRpbmFsR3JvdXA6MSxjb2x1bW5Db3VudDoxLGNvbHVtbnM6MSxmbGV4OjEsZmxleEdyb3c6MSxmbGV4UG9zaXRpdmU6MSxmbGV4U2hyaW5rOjEsZmxleE5lZ2F0aXZlOjEsZmxleE9yZGVyOjEsZ3JpZFJvdzoxLGdyaWRSb3dFbmQ6MSxncmlkUm93U3BhbjoxLGdyaWRSb3dTdGFydDoxLGdyaWRDb2x1bW46MSxncmlkQ29sdW1uRW5kOjEsZ3JpZENvbHVtblNwYW46MSxncmlkQ29sdW1uU3RhcnQ6MSxtc0dyaWRSb3c6MSxtc0dyaWRSb3dTcGFuOjEsbXNHcmlkQ29sdW1uOjEsbXNHcmlkQ29sdW1uU3BhbjoxLGZvbnRXZWlnaHQ6MSxsaW5lSGVpZ2h0OjEsb3BhY2l0eToxLG9yZGVyOjEsb3JwaGFuczoxLHRhYlNpemU6MSx3aWRvd3M6MSx6SW5kZXg6MSx6b29tOjEsV2Via2l0TGluZUNsYW1wOjEsZmlsbE9wYWNpdHk6MSxmbG9vZE9wYWNpdHk6MSxzdG9wT3BhY2l0eToxLHN0cm9rZURhc2hhcnJheToxLHN0cm9rZURhc2hvZmZzZXQ6MSxzdHJva2VNaXRlcmxpbWl0OjEsc3Ryb2tlT3BhY2l0eToxLHN0cm9rZVdpZHRoOjF9O3ZhciBjPW4oMTg1KSx1PU51bWJlci5pc05hTnx8ZnVuY3Rpb24oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJmUhPWV9O2Z1bmN0aW9uIGYoZSx0KXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKHI9ZVtuXSxvPXRbbl0sIShyPT09b3x8dShyKSYmdShvKSkpcmV0dXJuITE7dmFyIHIsbztyZXR1cm4hMH1jb25zdCBkPWZ1bmN0aW9uKGUsdCl7dmFyIG47dm9pZCAwPT09dCYmKHQ9Zik7dmFyIHIsbz1bXSxpPSExO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgYT1bXSxsPTA7bDxhcmd1bWVudHMubGVuZ3RoO2wrKylhW2xdPWFyZ3VtZW50c1tsXTtyZXR1cm4gaSYmbj09PXRoaXMmJnQoYSxvKXx8KHI9ZS5hcHBseSh0aGlzLGEpLGk9ITAsbj10aGlzLG89YSkscn19O3ZhciBwPS9eKChjaGlsZHJlbnxkYW5nZXJvdXNseVNldElubmVySFRNTHxrZXl8cmVmfGF1dG9Gb2N1c3xkZWZhdWx0VmFsdWV8ZGVmYXVsdENoZWNrZWR8aW5uZXJIVE1MfHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ3xzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmd8dmFsdWVMaW5rfGFjY2VwdHxhY2NlcHRDaGFyc2V0fGFjY2Vzc0tleXxhY3Rpb258YWxsb3d8YWxsb3dVc2VyTWVkaWF8YWxsb3dQYXltZW50UmVxdWVzdHxhbGxvd0Z1bGxTY3JlZW58YWxsb3dUcmFuc3BhcmVuY3l8YWx0fGFzeW5jfGF1dG9Db21wbGV0ZXxhdXRvUGxheXxjYXB0dXJlfGNlbGxQYWRkaW5nfGNlbGxTcGFjaW5nfGNoYWxsZW5nZXxjaGFyU2V0fGNoZWNrZWR8Y2l0ZXxjbGFzc0lEfGNsYXNzTmFtZXxjb2xzfGNvbFNwYW58Y29udGVudHxjb250ZW50RWRpdGFibGV8Y29udGV4dE1lbnV8Y29udHJvbHN8Y29udHJvbHNMaXN0fGNvb3Jkc3xjcm9zc09yaWdpbnxkYXRhfGRhdGVUaW1lfGRlY29kaW5nfGRlZmF1bHR8ZGVmZXJ8ZGlyfGRpc2FibGVkfGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlfGRvd25sb2FkfGRyYWdnYWJsZXxlbmNUeXBlfGZvcm18Zm9ybUFjdGlvbnxmb3JtRW5jVHlwZXxmb3JtTWV0aG9kfGZvcm1Ob1ZhbGlkYXRlfGZvcm1UYXJnZXR8ZnJhbWVCb3JkZXJ8aGVhZGVyc3xoZWlnaHR8aGlkZGVufGhpZ2h8aHJlZnxocmVmTGFuZ3xodG1sRm9yfGh0dHBFcXVpdnxpZHxpbnB1dE1vZGV8aW50ZWdyaXR5fGlzfGtleVBhcmFtc3xrZXlUeXBlfGtpbmR8bGFiZWx8bGFuZ3xsaXN0fGxvYWRpbmd8bG9vcHxsb3d8bWFyZ2luSGVpZ2h0fG1hcmdpbldpZHRofG1heHxtYXhMZW5ndGh8bWVkaWF8bWVkaWFHcm91cHxtZXRob2R8bWlufG1pbkxlbmd0aHxtdWx0aXBsZXxtdXRlZHxuYW1lfG5vbmNlfG5vVmFsaWRhdGV8b3BlbnxvcHRpbXVtfHBhdHRlcm58cGxhY2Vob2xkZXJ8cGxheXNJbmxpbmV8cG9zdGVyfHByZWxvYWR8cHJvZmlsZXxyYWRpb0dyb3VwfHJlYWRPbmx5fHJlZmVycmVyUG9saWN5fHJlbHxyZXF1aXJlZHxyZXZlcnNlZHxyb2xlfHJvd3N8cm93U3BhbnxzYW5kYm94fHNjb3BlfHNjb3BlZHxzY3JvbGxpbmd8c2VhbWxlc3N8c2VsZWN0ZWR8c2hhcGV8c2l6ZXxzaXplc3xzbG90fHNwYW58c3BlbGxDaGVja3xzcmN8c3JjRG9jfHNyY0xhbmd8c3JjU2V0fHN0YXJ0fHN0ZXB8c3R5bGV8c3VtbWFyeXx0YWJJbmRleHx0YXJnZXR8dGl0bGV8dHlwZXx1c2VNYXB8dmFsdWV8d2lkdGh8d21vZGV8d3JhcHxhYm91dHxkYXRhdHlwZXxpbmxpc3R8cHJlZml4fHByb3BlcnR5fHJlc291cmNlfHR5cGVvZnx2b2NhYnxhdXRvQ2FwaXRhbGl6ZXxhdXRvQ29ycmVjdHxhdXRvU2F2ZXxjb2xvcnxpbmVydHxpdGVtUHJvcHxpdGVtU2NvcGV8aXRlbVR5cGV8aXRlbUlEfGl0ZW1SZWZ8b258cmVzdWx0c3xzZWN1cml0eXx1bnNlbGVjdGFibGV8YWNjZW50SGVpZ2h0fGFjY3VtdWxhdGV8YWRkaXRpdmV8YWxpZ25tZW50QmFzZWxpbmV8YWxsb3dSZW9yZGVyfGFscGhhYmV0aWN8YW1wbGl0dWRlfGFyYWJpY0Zvcm18YXNjZW50fGF0dHJpYnV0ZU5hbWV8YXR0cmlidXRlVHlwZXxhdXRvUmV2ZXJzZXxhemltdXRofGJhc2VGcmVxdWVuY3l8YmFzZWxpbmVTaGlmdHxiYXNlUHJvZmlsZXxiYm94fGJlZ2lufGJpYXN8Ynl8Y2FsY01vZGV8Y2FwSGVpZ2h0fGNsaXB8Y2xpcFBhdGhVbml0c3xjbGlwUGF0aHxjbGlwUnVsZXxjb2xvckludGVycG9sYXRpb258Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyc3xjb2xvclByb2ZpbGV8Y29sb3JSZW5kZXJpbmd8Y29udGVudFNjcmlwdFR5cGV8Y29udGVudFN0eWxlVHlwZXxjdXJzb3J8Y3h8Y3l8ZHxkZWNlbGVyYXRlfGRlc2NlbnR8ZGlmZnVzZUNvbnN0YW50fGRpcmVjdGlvbnxkaXNwbGF5fGRpdmlzb3J8ZG9taW5hbnRCYXNlbGluZXxkdXJ8ZHh8ZHl8ZWRnZU1vZGV8ZWxldmF0aW9ufGVuYWJsZUJhY2tncm91bmR8ZW5kfGV4cG9uZW50fGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWR8ZmlsbHxmaWxsT3BhY2l0eXxmaWxsUnVsZXxmaWx0ZXJ8ZmlsdGVyUmVzfGZpbHRlclVuaXRzfGZsb29kQ29sb3J8Zmxvb2RPcGFjaXR5fGZvY3VzYWJsZXxmb250RmFtaWx5fGZvbnRTaXplfGZvbnRTaXplQWRqdXN0fGZvbnRTdHJldGNofGZvbnRTdHlsZXxmb250VmFyaWFudHxmb250V2VpZ2h0fGZvcm1hdHxmcm9tfGZyfGZ4fGZ5fGcxfGcyfGdseXBoTmFtZXxnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbHxnbHlwaE9yaWVudGF0aW9uVmVydGljYWx8Z2x5cGhSZWZ8Z3JhZGllbnRUcmFuc2Zvcm18Z3JhZGllbnRVbml0c3xoYW5naW5nfGhvcml6QWR2WHxob3Jpek9yaWdpblh8aWRlb2dyYXBoaWN8aW1hZ2VSZW5kZXJpbmd8aW58aW4yfGludGVyY2VwdHxrfGsxfGsyfGszfGs0fGtlcm5lbE1hdHJpeHxrZXJuZWxVbml0TGVuZ3RofGtlcm5pbmd8a2V5UG9pbnRzfGtleVNwbGluZXN8a2V5VGltZXN8bGVuZ3RoQWRqdXN0fGxldHRlclNwYWNpbmd8bGlnaHRpbmdDb2xvcnxsaW1pdGluZ0NvbmVBbmdsZXxsb2NhbHxtYXJrZXJFbmR8bWFya2VyTWlkfG1hcmtlclN0YXJ0fG1hcmtlckhlaWdodHxtYXJrZXJVbml0c3xtYXJrZXJXaWR0aHxtYXNrfG1hc2tDb250ZW50VW5pdHN8bWFza1VuaXRzfG1hdGhlbWF0aWNhbHxtb2RlfG51bU9jdGF2ZXN8b2Zmc2V0fG9wYWNpdHl8b3BlcmF0b3J8b3JkZXJ8b3JpZW50fG9yaWVudGF0aW9ufG9yaWdpbnxvdmVyZmxvd3xvdmVybGluZVBvc2l0aW9ufG92ZXJsaW5lVGhpY2tuZXNzfHBhbm9zZTF8cGFpbnRPcmRlcnxwYXRoTGVuZ3RofHBhdHRlcm5Db250ZW50VW5pdHN8cGF0dGVyblRyYW5zZm9ybXxwYXR0ZXJuVW5pdHN8cG9pbnRlckV2ZW50c3xwb2ludHN8cG9pbnRzQXRYfHBvaW50c0F0WXxwb2ludHNBdFp8cHJlc2VydmVBbHBoYXxwcmVzZXJ2ZUFzcGVjdFJhdGlvfHByaW1pdGl2ZVVuaXRzfHJ8cmFkaXVzfHJlZlh8cmVmWXxyZW5kZXJpbmdJbnRlbnR8cmVwZWF0Q291bnR8cmVwZWF0RHVyfHJlcXVpcmVkRXh0ZW5zaW9uc3xyZXF1aXJlZEZlYXR1cmVzfHJlc3RhcnR8cmVzdWx0fHJvdGF0ZXxyeHxyeXxzY2FsZXxzZWVkfHNoYXBlUmVuZGVyaW5nfHNsb3BlfHNwYWNpbmd8c3BlY3VsYXJDb25zdGFudHxzcGVjdWxhckV4cG9uZW50fHNwZWVkfHNwcmVhZE1ldGhvZHxzdGFydE9mZnNldHxzdGREZXZpYXRpb258c3RlbWh8c3RlbXZ8c3RpdGNoVGlsZXN8c3RvcENvbG9yfHN0b3BPcGFjaXR5fHN0cmlrZXRocm91Z2hQb3NpdGlvbnxzdHJpa2V0aHJvdWdoVGhpY2tuZXNzfHN0cmluZ3xzdHJva2V8c3Ryb2tlRGFzaGFycmF5fHN0cm9rZURhc2hvZmZzZXR8c3Ryb2tlTGluZWNhcHxzdHJva2VMaW5lam9pbnxzdHJva2VNaXRlcmxpbWl0fHN0cm9rZU9wYWNpdHl8c3Ryb2tlV2lkdGh8c3VyZmFjZVNjYWxlfHN5c3RlbUxhbmd1YWdlfHRhYmxlVmFsdWVzfHRhcmdldFh8dGFyZ2V0WXx0ZXh0QW5jaG9yfHRleHREZWNvcmF0aW9ufHRleHRSZW5kZXJpbmd8dGV4dExlbmd0aHx0b3x0cmFuc2Zvcm18dTF8dTJ8dW5kZXJsaW5lUG9zaXRpb258dW5kZXJsaW5lVGhpY2tuZXNzfHVuaWNvZGV8dW5pY29kZUJpZGl8dW5pY29kZVJhbmdlfHVuaXRzUGVyRW18dkFscGhhYmV0aWN8dkhhbmdpbmd8dklkZW9ncmFwaGljfHZNYXRoZW1hdGljYWx8dmFsdWVzfHZlY3RvckVmZmVjdHx2ZXJzaW9ufHZlcnRBZHZZfHZlcnRPcmlnaW5YfHZlcnRPcmlnaW5ZfHZpZXdCb3h8dmlld1RhcmdldHx2aXNpYmlsaXR5fHdpZHRoc3x3b3JkU3BhY2luZ3x3cml0aW5nTW9kZXx4fHhIZWlnaHR8eDF8eDJ8eENoYW5uZWxTZWxlY3Rvcnx4bGlua0FjdHVhdGV8eGxpbmtBcmNyb2xlfHhsaW5rSHJlZnx4bGlua1JvbGV8eGxpbmtTaG93fHhsaW5rVGl0bGV8eGxpbmtUeXBlfHhtbEJhc2V8eG1sbnN8eG1sbnNYbGlua3x4bWxMYW5nfHhtbFNwYWNlfHl8eTF8eTJ8eUNoYW5uZWxTZWxlY3Rvcnx6fHpvb21BbmRQYW58Zm9yfGNsYXNzfGF1dG9mb2N1cyl8KChbRGRdW0FhXVtUdF1bQWFdfFtBYV1bUnJdW0lpXVtBYV18eCktLiopKSQvO2NvbnN0IGg9ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB2b2lkIDA9PT10W25dJiYodFtuXT1lKG4pKSx0W25dfX0oKGZ1bmN0aW9uKGUpe3JldHVybiBwLnRlc3QoZSl8fDExMT09PWUuY2hhckNvZGVBdCgwKSYmMTEwPT09ZS5jaGFyQ29kZUF0KDEpJiZlLmNoYXJDb2RlQXQoMik8OTF9KSk7ZnVuY3Rpb24gdihlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpfWZ1bmN0aW9uIGcoZSl7cmV0dXJuXCJVbmRlZmluZWRcIj09PXYoZSl9ZnVuY3Rpb24gQyhlKXtyZXR1cm5cIk51bGxcIj09PXYoZSl9ZnVuY3Rpb24gbShlKXtyZXR1cm5cIk9iamVjdFwiPT09dihlKSYmKGUuY29uc3RydWN0b3I9PT1PYmplY3QmJk9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PU9iamVjdC5wcm90b3R5cGUpfWZ1bmN0aW9uIHkoZSl7cmV0dXJuXCJBcnJheVwiPT09dihlKX1mdW5jdGlvbiB3KGUpe3JldHVyblwiU3ltYm9sXCI9PT12KGUpfXZhciBiLHgsXyxMLE87Yj1DLHg9ZztmdW5jdGlvbiBFKCl7Zm9yKHZhciBlPTAsdD0wLG49YXJndW1lbnRzLmxlbmd0aDt0PG47dCsrKWUrPWFyZ3VtZW50c1t0XS5sZW5ndGg7dmFyIHI9QXJyYXkoZSksbz0wO2Zvcih0PTA7dDxuO3QrKylmb3IodmFyIGk9YXJndW1lbnRzW3RdLGE9MCxsPWkubGVuZ3RoO2E8bDthKyssbysrKXJbb109aVthXTtyZXR1cm4gcn1mdW5jdGlvbiBTKGUsdCxuLHIpe3ZhciBvPXIucHJvcGVydHlJc0VudW1lcmFibGUodCk/XCJlbnVtZXJhYmxlXCI6XCJub25lbnVtZXJhYmxlXCI7XCJlbnVtZXJhYmxlXCI9PT1vJiYoZVt0XT1uKSxcIm5vbmVudW1lcmFibGVcIj09PW8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBNKGUsdCxuKXtpZighbSh0KSlyZXR1cm4gbiYmeShuKSYmbi5mb3JFYWNoKChmdW5jdGlvbihuKXt0PW4oZSx0KX0pKSx0O3ZhciByPXt9O20oZSkmJihyPUUoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSksT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSkucmVkdWNlKChmdW5jdGlvbihuLHIpe3ZhciBvPWVbcl07cmV0dXJuKCF3KHIpJiYhT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuaW5jbHVkZXMocil8fHcocikmJiFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpLmluY2x1ZGVzKHIpKSYmUyhuLHIsbyxlKSxufSkse30pKTtyZXR1cm4gRShPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KSxPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpKS5yZWR1Y2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dFtvXSxhPW0oZSk/ZVtvXTp2b2lkIDA7cmV0dXJuIG4mJnkobikmJm4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7aT1lKGEsaSl9KSksdm9pZCAwIT09YSYmbShpKSYmKGk9TShhLGksbikpLFMocixvLGksdCkscn0pLHIpfWNvbnN0IGo9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07dmFyIHI9bnVsbCxvPWU7cmV0dXJuIG0oZSkmJmUuZXh0ZW5zaW9ucyYmMT09PU9iamVjdC5rZXlzKGUpLmxlbmd0aCYmKG89e30scj1lLmV4dGVuc2lvbnMpLHQucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBNKGUsdCxyKX0pLG8pfTt2YXIgaz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bZVswXV0scj0wLG89dC5sZW5ndGg7cjxvO3IrPTEpbi5wdXNoKHRbcl0sZVtyKzFdKTtyZXR1cm4gbn0sUj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxQPWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0sQT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLEk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sVD1mdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSxIPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiF0fHxcIm9iamVjdFwiIT10eXBlb2YgdCYmXCJmdW5jdGlvblwiIT10eXBlb2YgdD9lOnR9LFY9ZnVuY3Rpb24oZSl7cmV0dXJuXCJvYmplY3RcIj09PSh2b2lkIDA9PT1lP1widW5kZWZpbmVkXCI6UihlKSkmJmUuY29uc3RydWN0b3I9PT1PYmplY3R9LEI9T2JqZWN0LmZyZWV6ZShbXSksRD1PYmplY3QuZnJlZXplKHt9KTtmdW5jdGlvbiBaKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9ZnVuY3Rpb24gJChlKXtyZXR1cm4gZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHxcIkNvbXBvbmVudFwifWZ1bmN0aW9uIEYoZSl7cmV0dXJuIGUmJlwic3RyaW5nXCI9PXR5cGVvZiBlLnN0eWxlZENvbXBvbmVudElkfXZhciBOPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBwcm9jZXNzJiYocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0FUVFJ8fHByb2Nlc3MuZW52LlNDX0FUVFIpfHxcImRhdGEtc3R5bGVkXCIsVT1cImRhdGEtc3R5bGVkLXZlcnNpb25cIixXPVwiZGF0YS1zdHlsZWQtc3RyZWFtZWRcIix6PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJlwiSFRNTEVsZW1lbnRcImluIHdpbmRvdyxHPVwiYm9vbGVhblwiPT10eXBlb2YgU0NfRElTQUJMRV9TUEVFRFkmJlNDX0RJU0FCTEVfU1BFRURZfHxcInVuZGVmaW5lZFwiIT10eXBlb2YgcHJvY2VzcyYmKHByb2Nlc3MuZW52LlJFQUNUX0FQUF9TQ19ESVNBQkxFX1NQRUVEWXx8cHJvY2Vzcy5lbnYuU0NfRElTQUJMRV9TUEVFRFkpfHwhMSxxPXt9O3ZhciBZPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7UCh0aGlzLHQpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89QXJyYXkocj4xP3ItMTowKSxpPTE7aTxyO2krKylvW2ktMV09YXJndW1lbnRzW2ldO3ZhciBhPUgodGhpcyxlLmNhbGwodGhpcyxcIkFuIGVycm9yIG9jY3VycmVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3N0eWxlZC1jb21wb25lbnRzL3N0eWxlZC1jb21wb25lbnRzL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL3N0eWxlZC1jb21wb25lbnRzL3NyYy91dGlscy9lcnJvcnMubWQjXCIrbitcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIisoby5sZW5ndGg+MD9cIiBBZGRpdGlvbmFsIGFyZ3VtZW50czogXCIrby5qb2luKFwiLCBcIik6XCJcIikpKTtyZXR1cm4gSChhKX1yZXR1cm4gVCh0LGUpLHR9KEVycm9yKSxLPS9eW15cXFNcXG5dKj9cXC9cXCogc2MtY29tcG9uZW50LWlkOlxccyooXFxTKylcXHMrXFwqXFwvL2dtLFg9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIisoZXx8XCJcIiksbj1bXTtyZXR1cm4gdC5yZXBsYWNlKEssKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbi5wdXNoKHtjb21wb25lbnRJZDp0LG1hdGNoSW5kZXg6cn0pLGV9KSksbi5tYXAoKGZ1bmN0aW9uKGUscil7dmFyIG89ZS5jb21wb25lbnRJZCxpPWUubWF0Y2hJbmRleCxhPW5bcisxXTtyZXR1cm57Y29tcG9uZW50SWQ6byxjc3NGcm9tRE9NOmE/dC5zbGljZShpLGEubWF0Y2hJbmRleCk6dC5zbGljZShpKX19KSl9LEo9L15cXHMqXFwvXFwvLiokL2dtLFE9bmV3KG8oKSkoe2dsb2JhbDohMSxjYXNjYWRlOiEwLGtleWZyYW1lOiExLHByZWZpeDohMSxjb21wcmVzczohMSxzZW1pY29sb246ITB9KSxlZT1uZXcobygpKSh7Z2xvYmFsOiExLGNhc2NhZGU6ITAsa2V5ZnJhbWU6ITEscHJlZml4OiEwLGNvbXByZXNzOiExLHNlbWljb2xvbjohMX0pLHRlPVtdLG5lPWZ1bmN0aW9uKGUpe2lmKC0yPT09ZSl7dmFyIHQ9dGU7cmV0dXJuIHRlPVtdLHR9fSxyZT1hKCkoKGZ1bmN0aW9uKGUpe3RlLnB1c2goZSl9KSksb2U9dm9pZCAwLGllPXZvaWQgMCxhZT12b2lkIDAsbGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PjAmJi0xIT09bi5zbGljZSgwLHQpLmluZGV4T2YoaWUpJiZuLnNsaWNlKHQtaWUubGVuZ3RoLHQpIT09aWU/XCIuXCIrb2U6ZX07ZWUudXNlKFtmdW5jdGlvbihlLHQsbil7Mj09PWUmJm4ubGVuZ3RoJiZuWzBdLmxhc3RJbmRleE9mKGllKT4wJiYoblswXT1uWzBdLnJlcGxhY2UoYWUsbGUpKX0scmUsbmVdKSxRLnVzZShbcmUsbmVdKTt2YXIgc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIFEoXCJcIixlKX07ZnVuY3Rpb24gY2UoZSx0LG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpcIiZcIixvPWUuam9pbihcIlwiKS5yZXBsYWNlKEosXCJcIiksaT10JiZuP24rXCIgXCIrdCtcIiB7IFwiK28rXCIgfVwiOm87cmV0dXJuIG9lPXIsaWU9dCxhZT1uZXcgUmVnRXhwKFwiXFxcXFwiK2llK1wiXFxcXGJcIixcImdcIiksZWUobnx8IXQ/XCJcIjp0LGkpfXZhciB1ZT1mdW5jdGlvbigpe3JldHVybiBuLm5jfSxmZT1mdW5jdGlvbihlLHQsbil7biYmKChlW3RdfHwoZVt0XT1PYmplY3QuY3JlYXRlKG51bGwpKSlbbl09ITApfSxkZT1mdW5jdGlvbihlLHQpe2VbdF09T2JqZWN0LmNyZWF0ZShudWxsKX0scGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIHZvaWQgMCE9PWVbdF0mJmVbdF1bbl19fSxoZT1mdW5jdGlvbihlKXt2YXIgdD1cIlwiO2Zvcih2YXIgbiBpbiBlKXQrPU9iamVjdC5rZXlzKGVbbl0pLmpvaW4oXCIgXCIpK1wiIFwiO3JldHVybiB0LnRyaW0oKX0sdmU9ZnVuY3Rpb24oZSl7aWYoZS5zaGVldClyZXR1cm4gZS5zaGVldDtmb3IodmFyIHQ9ZS5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aCxuPTA7bjx0O24rPTEpe3ZhciByPWUub3duZXJEb2N1bWVudC5zdHlsZVNoZWV0c1tuXTtpZihyLm93bmVyTm9kZT09PWUpcmV0dXJuIHJ9dGhyb3cgbmV3IFkoMTApfSxnZT1mdW5jdGlvbihlLHQsbil7aWYoIXQpcmV0dXJuITE7dmFyIHI9ZS5jc3NSdWxlcy5sZW5ndGg7dHJ5e2UuaW5zZXJ0UnVsZSh0LG48PXI/bjpyKX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hMH0sQ2U9ZnVuY3Rpb24oZSl7cmV0dXJuXCJcXG4vKiBzYy1jb21wb25lbnQtaWQ6IFwiK2UrXCIgKi9cXG5cIn0sbWU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MCxyPTA7cjw9dDtyKz0xKW4rPWVbcl07cmV0dXJuIG59LHllPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPXVlKCk7cmV0dXJuXCI8c3R5bGUgXCIrW3ImJidub25jZT1cIicrcisnXCInLE4rJz1cIicraGUodCkrJ1wiJyxVKyc9XCI0LjQuMVwiJyxuXS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIikrXCI+XCIrZSgpK1wiPC9zdHlsZT5cIn19LHdlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG4scj0oKG49e30pW05dPWhlKHQpLG5bVV09XCI0LjQuMVwiLG4pLG89dWUoKTtyZXR1cm4gbyYmKHIubm9uY2U9byksbC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIixJKHt9LHIse2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6ZSgpfX0pKX19LGJlPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhlKX19LHhlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY3JlYXRlVGV4dE5vZGUoQ2UodCkpfSxfZT1mdW5jdGlvbiBlKHQsbil7dmFyIHI9dm9pZCAwPT09dD9PYmplY3QuY3JlYXRlKG51bGwpOnQsbz12b2lkIDA9PT1uP09iamVjdC5jcmVhdGUobnVsbCk6bixpPWZ1bmN0aW9uKGUpe3ZhciB0PW9bZV07cmV0dXJuIHZvaWQgMCE9PXQ/dDpvW2VdPVtcIlwiXX0sYT1mdW5jdGlvbigpe3ZhciBlPVwiXCI7Zm9yKHZhciB0IGluIG8pe3ZhciBuPW9bdF1bMF07biYmKGUrPUNlKHQpK24pfXJldHVybiBlfSxsPXtjbG9uZTpmdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKGUpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKHZhciBuIGluIGUpdFtuXT1JKHt9LGVbbl0pO3JldHVybiB0fShyKSxuPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKHZhciBpIGluIG8pbltpXT1bb1tpXVswXV07cmV0dXJuIGUodCxuKX0sY3NzOmEsZ2V0SWRzOmJlKG8pLGhhc05hbWVGb3JJZDpwZShyKSxpbnNlcnRNYXJrZXI6aSxpbnNlcnRSdWxlczpmdW5jdGlvbihlLHQsbil7aShlKVswXSs9dC5qb2luKFwiIFwiKSxmZShyLGUsbil9LHJlbW92ZVJ1bGVzOmZ1bmN0aW9uKGUpe3ZhciB0PW9bZV07dm9pZCAwIT09dCYmKHRbMF09XCJcIixkZShyLGUpKX0sc2VhbGVkOiExLHN0eWxlVGFnOm51bGwsdG9FbGVtZW50OndlKGEsciksdG9IVE1MOnllKGEscil9O3JldHVybiBsfSxMZT1mdW5jdGlvbihlLHQsbixyLG8pe2lmKHomJiFuKXt2YXIgaT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZG9jdW1lbnQ7ZT9yPWUub3duZXJEb2N1bWVudDp0JiYocj10Lm93bmVyRG9jdW1lbnQpO3ZhciBvPXIuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO28uc2V0QXR0cmlidXRlKE4sXCJcIiksby5zZXRBdHRyaWJ1dGUoVSxcIjQuNC4xXCIpO3ZhciBpPXVlKCk7aWYoaSYmby5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLGkpLG8uYXBwZW5kQ2hpbGQoci5jcmVhdGVUZXh0Tm9kZShcIlwiKSksZSYmIXQpZS5hcHBlbmRDaGlsZChvKTtlbHNle2lmKCF0fHwhZXx8IXQucGFyZW50Tm9kZSl0aHJvdyBuZXcgWSg2KTt0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG8sbj90OnQubmV4dFNpYmxpbmcpfXJldHVybiBvfShlLHQscik7cmV0dXJuIEc/ZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9T2JqZWN0LmNyZWF0ZShudWxsKSxvPXZvaWQgMCE9PXQsaT0hMSxhPWZ1bmN0aW9uKHQpe3ZhciBvPXJbdF07cmV0dXJuIHZvaWQgMCE9PW8/bzooclt0XT14ZShlLm93bmVyRG9jdW1lbnQsdCksZS5hcHBlbmRDaGlsZChyW3RdKSxuW3RdPU9iamVjdC5jcmVhdGUobnVsbCksclt0XSl9LGw9ZnVuY3Rpb24oKXt2YXIgZT1cIlwiO2Zvcih2YXIgdCBpbiByKWUrPXJbdF0uZGF0YTtyZXR1cm4gZX07cmV0dXJue2Nsb25lOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IFkoNSl9LGNzczpsLGdldElkczpiZShyKSxoYXNOYW1lRm9ySWQ6cGUobiksaW5zZXJ0TWFya2VyOmEsaW5zZXJ0UnVsZXM6ZnVuY3Rpb24oZSxyLGwpe2Zvcih2YXIgcz1hKGUpLGM9W10sdT1yLmxlbmd0aCxmPTA7Zjx1O2YrPTEpe3ZhciBkPXJbZl0scD1vO2lmKHAmJi0xIT09ZC5pbmRleE9mKFwiQGltcG9ydFwiKSljLnB1c2goZCk7ZWxzZXtwPSExO3ZhciBoPWY9PT11LTE/XCJcIjpcIiBcIjtzLmFwcGVuZERhdGEoXCJcIitkK2gpfX1mZShuLGUsbCksbyYmYy5sZW5ndGg+MCYmKGk9ITAsdCgpLmluc2VydFJ1bGVzKGUrXCItaW1wb3J0XCIsYykpfSxyZW1vdmVSdWxlczpmdW5jdGlvbihhKXt2YXIgbD1yW2FdO2lmKHZvaWQgMCE9PWwpe3ZhciBzPXhlKGUub3duZXJEb2N1bWVudCxhKTtlLnJlcGxhY2VDaGlsZChzLGwpLHJbYV09cyxkZShuLGEpLG8mJmkmJnQoKS5yZW1vdmVSdWxlcyhhK1wiLWltcG9ydFwiKX19LHNlYWxlZDohMSxzdHlsZVRhZzplLHRvRWxlbWVudDp3ZShsLG4pLHRvSFRNTDp5ZShsLG4pfX0oaSxvKTpmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj1PYmplY3QuY3JlYXRlKG51bGwpLG89W10saT12b2lkIDAhPT10LGE9ITEsbD1mdW5jdGlvbihlKXt2YXIgdD1yW2VdO3JldHVybiB2b2lkIDAhPT10P3Q6KHJbZV09by5sZW5ndGgsby5wdXNoKDApLGRlKG4sZSkscltlXSl9LHM9ZnVuY3Rpb24oKXt2YXIgdD12ZShlKS5jc3NSdWxlcyxuPVwiXCI7Zm9yKHZhciBpIGluIHIpe24rPUNlKGkpO2Zvcih2YXIgYT1yW2ldLGw9bWUobyxhKSxzPWwtb1thXTtzPGw7cys9MSl7dmFyIGM9dFtzXTt2b2lkIDAhPT1jJiYobis9Yy5jc3NUZXh0KX19cmV0dXJuIG59O3JldHVybntjbG9uZTpmdW5jdGlvbigpe3Rocm93IG5ldyBZKDUpfSxjc3M6cyxnZXRJZHM6YmUociksaGFzTmFtZUZvcklkOnBlKG4pLGluc2VydE1hcmtlcjpsLGluc2VydFJ1bGVzOmZ1bmN0aW9uKHIscyxjKXtmb3IodmFyIHU9bChyKSxmPXZlKGUpLGQ9bWUobyx1KSxwPTAsaD1bXSx2PXMubGVuZ3RoLGc9MDtnPHY7Zys9MSl7dmFyIEM9c1tnXSxtPWk7bSYmLTEhPT1DLmluZGV4T2YoXCJAaW1wb3J0XCIpP2gucHVzaChDKTpnZShmLEMsZCtwKSYmKG09ITEscCs9MSl9aSYmaC5sZW5ndGg+MCYmKGE9ITAsdCgpLmluc2VydFJ1bGVzKHIrXCItaW1wb3J0XCIsaCkpLG9bdV0rPXAsZmUobixyLGMpfSxyZW1vdmVSdWxlczpmdW5jdGlvbihsKXt2YXIgcz1yW2xdO2lmKHZvaWQgMCE9PXMmJiExIT09ZS5pc0Nvbm5lY3RlZCl7dmFyIGM9b1tzXTshZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj10LW4sbz10O28+cjtvLT0xKWUuZGVsZXRlUnVsZShvKX0odmUoZSksbWUobyxzKS0xLGMpLG9bc109MCxkZShuLGwpLGkmJmEmJnQoKS5yZW1vdmVSdWxlcyhsK1wiLWltcG9ydFwiKX19LHNlYWxlZDohMSxzdHlsZVRhZzplLHRvRWxlbWVudDp3ZShzLG4pLHRvSFRNTDp5ZShzLG4pfX0oaSxvKX1yZXR1cm4gX2UoKX0sT2U9L1xccysvLEVlPXZvaWQgMDtFZT16P0c/NDA6MWUzOi0xO3ZhciBTZT0wLE1lPXZvaWQgMCxqZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt2YXIgdD10aGlzLG49YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOno/ZG9jdW1lbnQuaGVhZDpudWxsLHI9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtQKHRoaXMsZSksdGhpcy5nZXRJbXBvcnRSdWxlVGFnPWZ1bmN0aW9uKCl7dmFyIGU9dC5pbXBvcnRSdWxlVGFnO2lmKHZvaWQgMCE9PWUpcmV0dXJuIGU7dmFyIG49dC50YWdzWzBdO3JldHVybiB0LmltcG9ydFJ1bGVUYWc9TGUodC50YXJnZXQsbj9uLnN0eWxlVGFnOm51bGwsdC5mb3JjZVNlcnZlciwhMCl9LFNlKz0xLHRoaXMuaWQ9U2UsdGhpcy5mb3JjZVNlcnZlcj1yLHRoaXMudGFyZ2V0PXI/bnVsbDpuLHRoaXMudGFnTWFwPXt9LHRoaXMuZGVmZXJyZWQ9e30sdGhpcy5yZWh5ZHJhdGVkTmFtZXM9e30sdGhpcy5pZ25vcmVSZWh5ZHJhdGVkTmFtZXM9e30sdGhpcy50YWdzPVtdLHRoaXMuY2FwYWNpdHk9MSx0aGlzLmNsb25lcz1bXX1yZXR1cm4gZS5wcm90b3R5cGUucmVoeWRyYXRlPWZ1bmN0aW9uKCl7aWYoIXp8fHRoaXMuZm9yY2VTZXJ2ZXIpcmV0dXJuIHRoaXM7dmFyIGU9W10sdD1bXSxuPSExLHI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInN0eWxlW1wiK04rXCJdW1wiK1UrJz1cIjQuNC4xXCJdJyksbz1yLmxlbmd0aDtpZighbylyZXR1cm4gdGhpcztmb3IodmFyIGk9MDtpPG87aSs9MSl7dmFyIGE9cltpXTtufHwobj0hIWEuZ2V0QXR0cmlidXRlKFcpKTtmb3IodmFyIGwscz0oYS5nZXRBdHRyaWJ1dGUoTil8fFwiXCIpLnRyaW0oKS5zcGxpdChPZSksYz1zLmxlbmd0aCx1PTA7dTxjO3UrPTEpbD1zW3VdLHRoaXMucmVoeWRyYXRlZE5hbWVzW2xdPSEwO3QucHVzaC5hcHBseSh0LFgoYS50ZXh0Q29udGVudCkpLGUucHVzaChhKX12YXIgZj10Lmxlbmd0aDtpZighZilyZXR1cm4gdGhpczt2YXIgZD10aGlzLm1ha2VUYWcobnVsbCk7IWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxvPW4ubGVuZ3RoO3I8bztyKz0xKXt2YXIgaT1uW3JdLGE9aS5jb21wb25lbnRJZCxsPWkuY3NzRnJvbURPTSxzPXNlKGwpO2UuaW5zZXJ0UnVsZXMoYSxzKX1mb3IodmFyIGM9MCx1PXQubGVuZ3RoO2M8dTtjKz0xKXt2YXIgZj10W2NdO2YucGFyZW50Tm9kZSYmZi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGYpfX0oZCxlLHQpLHRoaXMuY2FwYWNpdHk9TWF0aC5tYXgoMSxFZS1mKSx0aGlzLnRhZ3MucHVzaChkKTtmb3IodmFyIHA9MDtwPGY7cCs9MSl0aGlzLnRhZ01hcFt0W3BdLmNvbXBvbmVudElkXT1kO3JldHVybiB0aGlzfSxlLnJlc2V0PWZ1bmN0aW9uKCl7TWU9bmV3IGUodm9pZCAwLGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0pLnJlaHlkcmF0ZSgpfSxlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBlKHRoaXMudGFyZ2V0LHRoaXMuZm9yY2VTZXJ2ZXIpO3JldHVybiB0aGlzLmNsb25lcy5wdXNoKHQpLHQudGFncz10aGlzLnRhZ3MubWFwKChmdW5jdGlvbihlKXtmb3IodmFyIG49ZS5nZXRJZHMoKSxyPWUuY2xvbmUoKSxvPTA7bzxuLmxlbmd0aDtvKz0xKXQudGFnTWFwW25bb11dPXI7cmV0dXJuIHJ9KSksdC5yZWh5ZHJhdGVkTmFtZXM9SSh7fSx0aGlzLnJlaHlkcmF0ZWROYW1lcyksdC5kZWZlcnJlZD1JKHt9LHRoaXMuZGVmZXJyZWQpLHR9LGUucHJvdG90eXBlLnNlYWxBbGxUYWdzPWZ1bmN0aW9uKCl7dGhpcy5jYXBhY2l0eT0xLHRoaXMudGFncy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnNlYWxlZD0hMH0pKX0sZS5wcm90b3R5cGUubWFrZVRhZz1mdW5jdGlvbihlKXt2YXIgdD1lP2Uuc3R5bGVUYWc6bnVsbDtyZXR1cm4gTGUodGhpcy50YXJnZXQsdCx0aGlzLmZvcmNlU2VydmVyLCExLHRoaXMuZ2V0SW1wb3J0UnVsZVRhZyl9LGUucHJvdG90eXBlLmdldFRhZ0ZvcklkPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudGFnTWFwW2VdO2lmKHZvaWQgMCE9PXQmJiF0LnNlYWxlZClyZXR1cm4gdDt2YXIgbj10aGlzLnRhZ3NbdGhpcy50YWdzLmxlbmd0aC0xXTtyZXR1cm4gdGhpcy5jYXBhY2l0eS09MSwwPT09dGhpcy5jYXBhY2l0eSYmKHRoaXMuY2FwYWNpdHk9RWUsbj10aGlzLm1ha2VUYWcobiksdGhpcy50YWdzLnB1c2gobikpLHRoaXMudGFnTWFwW2VdPW59LGUucHJvdG90eXBlLmhhc0lkPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLnRhZ01hcFtlXX0sZS5wcm90b3R5cGUuaGFzTmFtZUZvcklkPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dGhpcy5pZ25vcmVSZWh5ZHJhdGVkTmFtZXNbZV0mJnRoaXMucmVoeWRyYXRlZE5hbWVzW3RdKXJldHVybiEwO3ZhciBuPXRoaXMudGFnTWFwW2VdO3JldHVybiB2b2lkIDAhPT1uJiZuLmhhc05hbWVGb3JJZChlLHQpfSxlLnByb3RvdHlwZS5kZWZlcnJlZEluamVjdD1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMD09PXRoaXMudGFnTWFwW2VdKXtmb3IodmFyIG49dGhpcy5jbG9uZXMscj0wO3I8bi5sZW5ndGg7cis9MSluW3JdLmRlZmVycmVkSW5qZWN0KGUsdCk7dGhpcy5nZXRUYWdGb3JJZChlKS5pbnNlcnRNYXJrZXIoZSksdGhpcy5kZWZlcnJlZFtlXT10fX0sZS5wcm90b3R5cGUuaW5qZWN0PWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9dGhpcy5jbG9uZXMsbz0wO288ci5sZW5ndGg7bys9MSlyW29dLmluamVjdChlLHQsbik7dmFyIGk9dGhpcy5nZXRUYWdGb3JJZChlKTtpZih2b2lkIDAhPT10aGlzLmRlZmVycmVkW2VdKXt2YXIgYT10aGlzLmRlZmVycmVkW2VdLmNvbmNhdCh0KTtpLmluc2VydFJ1bGVzKGUsYSxuKSx0aGlzLmRlZmVycmVkW2VdPXZvaWQgMH1lbHNlIGkuaW5zZXJ0UnVsZXMoZSx0LG4pfSxlLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50YWdNYXBbZV07aWYodm9pZCAwIT09dCl7Zm9yKHZhciBuPXRoaXMuY2xvbmVzLHI9MDtyPG4ubGVuZ3RoO3IrPTEpbltyXS5yZW1vdmUoZSk7dC5yZW1vdmVSdWxlcyhlKSx0aGlzLmlnbm9yZVJlaHlkcmF0ZWROYW1lc1tlXT0hMCx0aGlzLmRlZmVycmVkW2VdPXZvaWQgMH19LGUucHJvdG90eXBlLnRvSFRNTD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRhZ3MubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50b0hUTUwoKX0pKS5qb2luKFwiXCIpfSxlLnByb3RvdHlwZS50b1JlYWN0RWxlbWVudHM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmlkO3JldHVybiB0aGlzLnRhZ3MubWFwKChmdW5jdGlvbih0LG4pe3ZhciByPVwic2MtXCIrZStcIi1cIituO3JldHVybigwLGwuY2xvbmVFbGVtZW50KSh0LnRvRWxlbWVudCgpLHtrZXk6cn0pfSkpfSxBKGUsbnVsbCxbe2tleTpcIm1hc3RlclwiLGdldDpmdW5jdGlvbigpe3JldHVybiBNZXx8KE1lPShuZXcgZSkucmVoeWRyYXRlKCkpfX0se2tleTpcImluc3RhbmNlXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUubWFzdGVyfX1dKSxlfSgpLGtlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe3ZhciByPXRoaXM7UCh0aGlzLGUpLHRoaXMuaW5qZWN0PWZ1bmN0aW9uKGUpe2UuaGFzTmFtZUZvcklkKHIuaWQsci5uYW1lKXx8ZS5pbmplY3Qoci5pZCxyLnJ1bGVzLHIubmFtZSl9LHRoaXMudG9TdHJpbmc9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgWSgxMixTdHJpbmcoci5uYW1lKSl9LHRoaXMubmFtZT10LHRoaXMucnVsZXM9bix0aGlzLmlkPVwic2Mta2V5ZnJhbWVzLVwiK3R9cmV0dXJuIGUucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lfSxlfSgpLFJlPS8oW0EtWl0pL2csUGU9L15tcy0vO2Z1bmN0aW9uIEFlKGUpe3JldHVybiBlLnJlcGxhY2UoUmUsXCItJDFcIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKFBlLFwiLW1zLVwiKX12YXIgSWU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV8fCExPT09ZXx8XCJcIj09PWV9LFRlPWZ1bmN0aW9uIGUodCxuKXt2YXIgcj1bXTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obil7aWYoIUllKHRbbl0pKXtpZihWKHRbbl0pKXJldHVybiByLnB1c2guYXBwbHkocixlKHRbbl0sbikpLHI7aWYoWih0W25dKSlyZXR1cm4gci5wdXNoKEFlKG4pK1wiOlwiLHRbbl0sXCI7XCIpLHI7ci5wdXNoKEFlKG4pK1wiOiBcIisobz1uLChudWxsPT0oaT10W25dKXx8XCJib29sZWFuXCI9PXR5cGVvZiBpfHxcIlwiPT09aT9cIlwiOlwibnVtYmVyXCIhPXR5cGVvZiBpfHwwPT09aXx8byBpbiBzP1N0cmluZyhpKS50cmltKCk6aStcInB4XCIpK1wiO1wiKSl9dmFyIG8saTtyZXR1cm4gcn0pKSxuP1tuK1wiIHtcIl0uY29uY2F0KHIsW1wifVwiXSk6cn07ZnVuY3Rpb24gSGUoZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgcixvPVtdLGk9MCxhPWUubGVuZ3RoO2k8YTtpKz0xKW51bGwhPT0ocj1IZShlW2ldLHQsbikpJiYoQXJyYXkuaXNBcnJheShyKT9vLnB1c2guYXBwbHkobyxyKTpvLnB1c2gocikpO3JldHVybiBvfXJldHVybiBJZShlKT9udWxsOkYoZSk/XCIuXCIrZS5zdHlsZWRDb21wb25lbnRJZDpaKGUpP1wiZnVuY3Rpb25cIiE9dHlwZW9mKGw9ZSl8fGwucHJvdG90eXBlJiZsLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50fHwhdD9lOkhlKGUodCksdCxuKTplIGluc3RhbmNlb2Yga2U/bj8oZS5pbmplY3QobiksZS5nZXROYW1lKCkpOmU6VihlKT9UZShlKTplLnRvU3RyaW5nKCk7dmFyIGx9ZnVuY3Rpb24gVmUoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0PjE/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07cmV0dXJuIFooZSl8fFYoZSk/SGUoayhCLFtlXS5jb25jYXQobikpKTpIZShrKGUsbikpfWZ1bmN0aW9uIEJlKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOkQ7aWYoISgwLGMuaXNWYWxpZEVsZW1lbnRUeXBlKSh0KSl0aHJvdyBuZXcgWSgxLFN0cmluZyh0KSk7dmFyIHI9ZnVuY3Rpb24oKXtyZXR1cm4gZSh0LG4sVmUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfTtyZXR1cm4gci53aXRoQ29uZmlnPWZ1bmN0aW9uKHIpe3JldHVybiBCZShlLHQsSSh7fSxuLHIpKX0sci5hdHRycz1mdW5jdGlvbihyKXtyZXR1cm4gQmUoZSx0LEkoe30sbix7YXR0cnM6QXJyYXkucHJvdG90eXBlLmNvbmNhdChuLmF0dHJzLHIpLmZpbHRlcihCb29sZWFuKX0pKX0scn1mdW5jdGlvbiBEZShlKXtmb3IodmFyIHQsbj0wfGUubGVuZ3RoLHI9MHxuLG89MDtuPj00Oyl0PTE1NDA0ODM0NzcqKDY1NTM1Jih0PTI1NSZlLmNoYXJDb2RlQXQobyl8KDI1NSZlLmNoYXJDb2RlQXQoKytvKSk8PDh8KDI1NSZlLmNoYXJDb2RlQXQoKytvKSk8PDE2fCgyNTUmZS5jaGFyQ29kZUF0KCsrbykpPDwyNCkpKygoMTU0MDQ4MzQ3NyoodD4+PjE2KSY2NTUzNSk8PDE2KSxyPTE1NDA0ODM0NzcqKDY1NTM1JnIpKygoMTU0MDQ4MzQ3Nyoocj4+PjE2KSY2NTUzNSk8PDE2KV4odD0xNTQwNDgzNDc3Kig2NTUzNSYodF49dD4+PjI0KSkrKCgxNTQwNDgzNDc3Kih0Pj4+MTYpJjY1NTM1KTw8MTYpKSxuLT00LCsrbztzd2l0Y2gobil7Y2FzZSAzOnJePSgyNTUmZS5jaGFyQ29kZUF0KG8rMikpPDwxNjtjYXNlIDI6cl49KDI1NSZlLmNoYXJDb2RlQXQobysxKSk8PDg7Y2FzZSAxOnI9MTU0MDQ4MzQ3NyooNjU1MzUmKHJePTI1NSZlLmNoYXJDb2RlQXQobykpKSsoKDE1NDA0ODM0NzcqKHI+Pj4xNikmNjU1MzUpPDwxNil9cmV0dXJuKChyPTE1NDA0ODM0NzcqKDY1NTM1JihyXj1yPj4+MTMpKSsoKDE1NDA0ODM0NzcqKHI+Pj4xNikmNjU1MzUpPDwxNikpXnI+Pj4xNSk+Pj4wfXZhciBaZT01MiwkZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlKyhlPjI1PzM5Ojk3KSl9O2Z1bmN0aW9uIEZlKGUpe3ZhciB0PVwiXCIsbj12b2lkIDA7Zm9yKG49ZTtuPlplO249TWF0aC5mbG9vcihuL1plKSl0PSRlKG4lWmUpK3Q7cmV0dXJuICRlKG4lWmUpK3R9ZnVuY3Rpb24gTmUoZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rPTEpe3ZhciByPWVbbl07aWYoQXJyYXkuaXNBcnJheShyKSYmIU5lKHIsdCkpcmV0dXJuITE7aWYoWihyKSYmIUYocikpcmV0dXJuITF9cmV0dXJuIXQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIFooZSl8fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWlmKFooZVt0XSkpcmV0dXJuITA7cmV0dXJuITF9KGUpfSkpfXZhciBVZSxXZT1mdW5jdGlvbihlKXtyZXR1cm4gRmUoRGUoZSkpfSx6ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuLHIpe1AodGhpcyxlKSx0aGlzLnJ1bGVzPXQsdGhpcy5pc1N0YXRpYz1OZSh0LG4pLHRoaXMuY29tcG9uZW50SWQ9cixqZS5tYXN0ZXIuaGFzSWQocil8fGplLm1hc3Rlci5kZWZlcnJlZEluamVjdChyLFtdKX1yZXR1cm4gZS5wcm90b3R5cGUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmlzU3RhdGljLHI9dGhpcy5jb21wb25lbnRJZCxvPXRoaXMubGFzdENsYXNzTmFtZTtpZih6JiZuJiZcInN0cmluZ1wiPT10eXBlb2YgbyYmdC5oYXNOYW1lRm9ySWQocixvKSlyZXR1cm4gbzt2YXIgaT1IZSh0aGlzLnJ1bGVzLGUsdCksYT1XZSh0aGlzLmNvbXBvbmVudElkK2kuam9pbihcIlwiKSk7cmV0dXJuIHQuaGFzTmFtZUZvcklkKHIsYSl8fHQuaW5qZWN0KHRoaXMuY29tcG9uZW50SWQsY2UoaSxcIi5cIithLHZvaWQgMCxyKSxhKSx0aGlzLmxhc3RDbGFzc05hbWU9YSxhfSxlLmdlbmVyYXRlTmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gV2UoZSl9LGV9KCksR2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06RCxyPSEhbiYmZS50aGVtZT09PW4udGhlbWU7cmV0dXJuIGUudGhlbWUmJiFyP2UudGhlbWU6dHx8bi50aGVtZX0scWU9L1tbXFxdLiMqJD48K349fF46KCksXCInYC1dKy9nLFllPS8oXi18LSQpL2c7ZnVuY3Rpb24gS2UoZSl7cmV0dXJuIGUucmVwbGFjZShxZSxcIi1cIikucmVwbGFjZShZZSxcIlwiKX1mdW5jdGlvbiBYZShlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmITB9dmFyIEplPXtjaGlsZENvbnRleHRUeXBlczohMCxjb250ZXh0VHlwZXM6ITAsZGVmYXVsdFByb3BzOiEwLGRpc3BsYXlOYW1lOiEwLGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczohMCxwcm9wVHlwZXM6ITAsdHlwZTohMH0sUWU9e25hbWU6ITAsbGVuZ3RoOiEwLHByb3RvdHlwZTohMCxjYWxsZXI6ITAsY2FsbGVlOiEwLGFyZ3VtZW50czohMCxhcml0eTohMH0sZXQ9KChVZT17fSlbYy5Gb3J3YXJkUmVmXT17JCR0eXBlb2Y6ITAscmVuZGVyOiEwfSxVZSksdHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5LG50PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLHJ0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsb3Q9dm9pZCAwPT09cnQ/ZnVuY3Rpb24oKXtyZXR1cm5bXX06cnQsaXQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixhdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsbHQ9T2JqZWN0LnByb3RvdHlwZSxzdD1BcnJheS5wcm90b3R5cGU7ZnVuY3Rpb24gY3QoZSx0LG4pe2lmKFwic3RyaW5nXCIhPXR5cGVvZiB0KXt2YXIgcj1hdCh0KTtyJiZyIT09bHQmJmN0KGUscixuKTtmb3IodmFyIG89c3QuY29uY2F0KG50KHQpLG90KHQpKSxpPWV0W2UuJCR0eXBlb2ZdfHxKZSxhPWV0W3QuJCR0eXBlb2ZdfHxKZSxsPW8ubGVuZ3RoLHM9dm9pZCAwLGM9dm9pZCAwO2wtLTspaWYoYz1vW2xdLCEoUWVbY118fG4mJm5bY118fGEmJmFbY118fGkmJmlbY10pJiYocz1pdCh0LGMpKSl0cnl7dHQoZSxjLHMpfWNhdGNoKGUpe31yZXR1cm4gZX1yZXR1cm4gZX12YXIgdXQ9KDAsbC5jcmVhdGVDb250ZXh0KSgpLGZ0PXV0LkNvbnN1bWVyLGR0PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7UCh0aGlzLHQpO3ZhciByPUgodGhpcyxlLmNhbGwodGhpcyxuKSk7cmV0dXJuIHIuZ2V0Q29udGV4dD1kKHIuZ2V0Q29udGV4dC5iaW5kKHIpKSxyLnJlbmRlcklubmVyPXIucmVuZGVySW5uZXIuYmluZChyKSxyfXJldHVybiBUKHQsZSksdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW4/bC5jcmVhdGVFbGVtZW50KHV0LkNvbnN1bWVyLG51bGwsdGhpcy5yZW5kZXJJbm5lcik6bnVsbH0sdC5wcm90b3R5cGUucmVuZGVySW5uZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRDb250ZXh0KHRoaXMucHJvcHMudGhlbWUsZSk7cmV0dXJuIGwuY3JlYXRlRWxlbWVudCh1dC5Qcm92aWRlcix7dmFsdWU6dH0sdGhpcy5wcm9wcy5jaGlsZHJlbil9LHQucHJvdG90eXBlLmdldFRoZW1lPWZ1bmN0aW9uKGUsdCl7aWYoWihlKSlyZXR1cm4gZSh0KTtpZihudWxsPT09ZXx8QXJyYXkuaXNBcnJheShlKXx8XCJvYmplY3RcIiE9PSh2b2lkIDA9PT1lP1widW5kZWZpbmVkXCI6UihlKSkpdGhyb3cgbmV3IFkoOCk7cmV0dXJuIEkoe30sdCxlKX0sdC5wcm90b3R5cGUuZ2V0Q29udGV4dD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmdldFRoZW1lKGUsdCl9LHR9KGwuQ29tcG9uZW50KSxwdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtQKHRoaXMsZSksdGhpcy5tYXN0ZXJTaGVldD1qZS5tYXN0ZXIsdGhpcy5pbnN0YW5jZT10aGlzLm1hc3RlclNoZWV0LmNsb25lKCksdGhpcy5zZWFsZWQ9ITF9cmV0dXJuIGUucHJvdG90eXBlLnNlYWw9ZnVuY3Rpb24oKXtpZighdGhpcy5zZWFsZWQpe3ZhciBlPXRoaXMubWFzdGVyU2hlZXQuY2xvbmVzLmluZGV4T2YodGhpcy5pbnN0YW5jZSk7dGhpcy5tYXN0ZXJTaGVldC5jbG9uZXMuc3BsaWNlKGUsMSksdGhpcy5zZWFsZWQ9ITB9fSxlLnByb3RvdHlwZS5jb2xsZWN0U3R5bGVzPWZ1bmN0aW9uKGUpe2lmKHRoaXMuc2VhbGVkKXRocm93IG5ldyBZKDIpO3JldHVybiBsLmNyZWF0ZUVsZW1lbnQoZ3Qse3NoZWV0OnRoaXMuaW5zdGFuY2V9LGUpfSxlLnByb3RvdHlwZS5nZXRTdHlsZVRhZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWFsKCksdGhpcy5pbnN0YW5jZS50b0hUTUwoKX0sZS5wcm90b3R5cGUuZ2V0U3R5bGVFbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VhbCgpLHRoaXMuaW5zdGFuY2UudG9SZWFjdEVsZW1lbnRzKCl9LGUucHJvdG90eXBlLmludGVybGVhdmVXaXRoTm9kZVN0cmVhbT1mdW5jdGlvbihlKXt0aHJvdyBuZXcgWSgzKX0sZX0oKSxodD0oMCxsLmNyZWF0ZUNvbnRleHQpKCksdnQ9aHQuQ29uc3VtZXIsZ3Q9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtQKHRoaXMsdCk7dmFyIHI9SCh0aGlzLGUuY2FsbCh0aGlzLG4pKTtyZXR1cm4gci5nZXRDb250ZXh0PWQoci5nZXRDb250ZXh0KSxyfXJldHVybiBUKHQsZSksdC5wcm90b3R5cGUuZ2V0Q29udGV4dD1mdW5jdGlvbihlLHQpe2lmKGUpcmV0dXJuIGU7aWYodClyZXR1cm4gbmV3IGplKHQpO3Rocm93IG5ldyBZKDQpfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jaGlsZHJlbixuPWUuc2hlZXQscj1lLnRhcmdldDtyZXR1cm4gbC5jcmVhdGVFbGVtZW50KGh0LlByb3ZpZGVyLHt2YWx1ZTp0aGlzLmdldENvbnRleHQobixyKX0sdCl9LHR9KGwuQ29tcG9uZW50KSxDdD17fTt2YXIgbXQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe1AodGhpcyx0KTt2YXIgbj1IKHRoaXMsZS5jYWxsKHRoaXMpKTtyZXR1cm4gbi5hdHRycz17fSxuLnJlbmRlck91dGVyPW4ucmVuZGVyT3V0ZXIuYmluZChuKSxuLnJlbmRlcklubmVyPW4ucmVuZGVySW5uZXIuYmluZChuKSxufXJldHVybiBUKHQsZSksdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGwuY3JlYXRlRWxlbWVudCh2dCxudWxsLHRoaXMucmVuZGVyT3V0ZXIpfSx0LnByb3RvdHlwZS5yZW5kZXJPdXRlcj1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpqZS5tYXN0ZXI7cmV0dXJuIHRoaXMuc3R5bGVTaGVldD1lLHRoaXMucHJvcHMuZm9yd2FyZGVkQ29tcG9uZW50LmNvbXBvbmVudFN0eWxlLmlzU3RhdGljP3RoaXMucmVuZGVySW5uZXIoKTpsLmNyZWF0ZUVsZW1lbnQoZnQsbnVsbCx0aGlzLnJlbmRlcklubmVyKX0sdC5wcm90b3R5cGUucmVuZGVySW5uZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcy5mb3J3YXJkZWRDb21wb25lbnQsbj10LmNvbXBvbmVudFN0eWxlLHI9dC5kZWZhdWx0UHJvcHMsbz0odC5kaXNwbGF5TmFtZSx0LmZvbGRlZENvbXBvbmVudElkcyksaT10LnN0eWxlZENvbXBvbmVudElkLGE9dC50YXJnZXQscz12b2lkIDA7cz1uLmlzU3RhdGljP3RoaXMuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMoRCx0aGlzLnByb3BzKTp0aGlzLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzKEdlKHRoaXMucHJvcHMsZSxyKXx8RCx0aGlzLnByb3BzKTt2YXIgYz10aGlzLnByb3BzLmFzfHx0aGlzLmF0dHJzLmFzfHxhLHU9WGUoYyksZj17fSxkPUkoe30sdGhpcy5wcm9wcyx0aGlzLmF0dHJzKSxwPXZvaWQgMDtmb3IocCBpbiBkKVwiZm9yd2FyZGVkQ29tcG9uZW50XCIhPT1wJiZcImFzXCIhPT1wJiYoXCJmb3J3YXJkZWRSZWZcIj09PXA/Zi5yZWY9ZFtwXTpcImZvcndhcmRlZEFzXCI9PT1wP2YuYXM9ZFtwXTp1JiYhaChwKXx8KGZbcF09ZFtwXSkpO3JldHVybiB0aGlzLnByb3BzLnN0eWxlJiZ0aGlzLmF0dHJzLnN0eWxlJiYoZi5zdHlsZT1JKHt9LHRoaXMuYXR0cnMuc3R5bGUsdGhpcy5wcm9wcy5zdHlsZSkpLGYuY2xhc3NOYW1lPUFycmF5LnByb3RvdHlwZS5jb25jYXQobyxpLHMhPT1pP3M6bnVsbCx0aGlzLnByb3BzLmNsYXNzTmFtZSx0aGlzLmF0dHJzLmNsYXNzTmFtZSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpLCgwLGwuY3JlYXRlRWxlbWVudCkoYyxmKX0sdC5wcm90b3R5cGUuYnVpbGRFeGVjdXRpb25Db250ZXh0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLG89SSh7fSx0LHt0aGVtZTplfSk7cmV0dXJuIG4ubGVuZ3RoPyh0aGlzLmF0dHJzPXt9LG4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQsbj1lLGk9ITEsYT12b2lkIDAsbD12b2lkIDA7Zm9yKGwgaW4gWihuKSYmKG49bihvKSxpPSEwKSxuKWE9bltsXSxpfHwhWihhKXx8KHQ9YSkmJnQucHJvdG90eXBlJiZ0LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50fHxGKGEpfHwoYT1hKG8pKSxyLmF0dHJzW2xdPWEsb1tsXT1hfSkpLG8pOm99LHQucHJvdG90eXBlLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5mb3J3YXJkZWRDb21wb25lbnQscj1uLmF0dHJzLG89bi5jb21wb25lbnRTdHlsZTtuLndhcm5Ub29NYW55Q2xhc3NlcztyZXR1cm4gby5pc1N0YXRpYyYmIXIubGVuZ3RoP28uZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMoRCx0aGlzLnN0eWxlU2hlZXQpOm8uZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXModGhpcy5idWlsZEV4ZWN1dGlvbkNvbnRleHQoZSx0LHIpLHRoaXMuc3R5bGVTaGVldCl9LHR9KGwuQ29tcG9uZW50KTtmdW5jdGlvbiB5dChlLHQsbil7dmFyIHI9RihlKSxvPSFYZShlKSxpPXQuZGlzcGxheU5hbWUsYT12b2lkIDA9PT1pP2Z1bmN0aW9uKGUpe3JldHVybiBYZShlKT9cInN0eWxlZC5cIitlOlwiU3R5bGVkKFwiKyQoZSkrXCIpXCJ9KGUpOmkscz10LmNvbXBvbmVudElkLGM9dm9pZCAwPT09cz9mdW5jdGlvbihlLHQsbil7dmFyIHI9XCJzdHJpbmdcIiE9dHlwZW9mIHQ/XCJzY1wiOktlKHQpLG89KEN0W3JdfHwwKSsxO0N0W3JdPW87dmFyIGk9citcIi1cIitlLmdlbmVyYXRlTmFtZShyK28pO3JldHVybiBuP24rXCItXCIraTppfSh6ZSx0LmRpc3BsYXlOYW1lLHQucGFyZW50Q29tcG9uZW50SWQpOnMsdT10LlBhcmVudENvbXBvbmVudCxmPXZvaWQgMD09PXU/bXQ6dSxkPXQuYXR0cnMscD12b2lkIDA9PT1kP0I6ZCxoPXQuZGlzcGxheU5hbWUmJnQuY29tcG9uZW50SWQ/S2UodC5kaXNwbGF5TmFtZSkrXCItXCIrdC5jb21wb25lbnRJZDp0LmNvbXBvbmVudElkfHxjLHY9ciYmZS5hdHRycz9BcnJheS5wcm90b3R5cGUuY29uY2F0KGUuYXR0cnMscCkuZmlsdGVyKEJvb2xlYW4pOnAsZz1uZXcgemUocj9lLmNvbXBvbmVudFN0eWxlLnJ1bGVzLmNvbmNhdChuKTpuLHYsaCksQz12b2lkIDAsbT1mdW5jdGlvbihlLHQpe3JldHVybiBsLmNyZWF0ZUVsZW1lbnQoZixJKHt9LGUse2ZvcndhcmRlZENvbXBvbmVudDpDLGZvcndhcmRlZFJlZjp0fSkpfTtyZXR1cm4gbS5kaXNwbGF5TmFtZT1hLChDPWwuZm9yd2FyZFJlZihtKSkuZGlzcGxheU5hbWU9YSxDLmF0dHJzPXYsQy5jb21wb25lbnRTdHlsZT1nLEMuZm9sZGVkQ29tcG9uZW50SWRzPXI/QXJyYXkucHJvdG90eXBlLmNvbmNhdChlLmZvbGRlZENvbXBvbmVudElkcyxlLnN0eWxlZENvbXBvbmVudElkKTpCLEMuc3R5bGVkQ29tcG9uZW50SWQ9aCxDLnRhcmdldD1yP2UudGFyZ2V0OmUsQy53aXRoQ29tcG9uZW50PWZ1bmN0aW9uKGUpe3ZhciByPXQuY29tcG9uZW50SWQsbz1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKXQuaW5kZXhPZihyKT49MHx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJihuW3JdPWVbcl0pO3JldHVybiBufSh0LFtcImNvbXBvbmVudElkXCJdKSxpPXImJnIrXCItXCIrKFhlKGUpP2U6S2UoJChlKSkpO3JldHVybiB5dChlLEkoe30sbyx7YXR0cnM6dixjb21wb25lbnRJZDppLFBhcmVudENvbXBvbmVudDpmfSksbil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDLFwiZGVmYXVsdFByb3BzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb2xkZWREZWZhdWx0UHJvcHN9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9mb2xkZWREZWZhdWx0UHJvcHM9cj9qKGUuZGVmYXVsdFByb3BzLHQpOnR9fSksQy50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiLlwiK0Muc3R5bGVkQ29tcG9uZW50SWR9LG8mJmN0KEMsZSx7YXR0cnM6ITAsY29tcG9uZW50U3R5bGU6ITAsZGlzcGxheU5hbWU6ITAsZm9sZGVkQ29tcG9uZW50SWRzOiEwLHN0eWxlZENvbXBvbmVudElkOiEwLHRhcmdldDohMCx3aXRoQ29tcG9uZW50OiEwfSksQ312YXIgd3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIEJlKHl0LGUpfTtbXCJhXCIsXCJhYmJyXCIsXCJhZGRyZXNzXCIsXCJhcmVhXCIsXCJhcnRpY2xlXCIsXCJhc2lkZVwiLFwiYXVkaW9cIixcImJcIixcImJhc2VcIixcImJkaVwiLFwiYmRvXCIsXCJiaWdcIixcImJsb2NrcXVvdGVcIixcImJvZHlcIixcImJyXCIsXCJidXR0b25cIixcImNhbnZhc1wiLFwiY2FwdGlvblwiLFwiY2l0ZVwiLFwiY29kZVwiLFwiY29sXCIsXCJjb2xncm91cFwiLFwiZGF0YVwiLFwiZGF0YWxpc3RcIixcImRkXCIsXCJkZWxcIixcImRldGFpbHNcIixcImRmblwiLFwiZGlhbG9nXCIsXCJkaXZcIixcImRsXCIsXCJkdFwiLFwiZW1cIixcImVtYmVkXCIsXCJmaWVsZHNldFwiLFwiZmlnY2FwdGlvblwiLFwiZmlndXJlXCIsXCJmb290ZXJcIixcImZvcm1cIixcImgxXCIsXCJoMlwiLFwiaDNcIixcImg0XCIsXCJoNVwiLFwiaDZcIixcImhlYWRcIixcImhlYWRlclwiLFwiaGdyb3VwXCIsXCJoclwiLFwiaHRtbFwiLFwiaVwiLFwiaWZyYW1lXCIsXCJpbWdcIixcImlucHV0XCIsXCJpbnNcIixcImtiZFwiLFwia2V5Z2VuXCIsXCJsYWJlbFwiLFwibGVnZW5kXCIsXCJsaVwiLFwibGlua1wiLFwibWFpblwiLFwibWFwXCIsXCJtYXJrXCIsXCJtYXJxdWVlXCIsXCJtZW51XCIsXCJtZW51aXRlbVwiLFwibWV0YVwiLFwibWV0ZXJcIixcIm5hdlwiLFwibm9zY3JpcHRcIixcIm9iamVjdFwiLFwib2xcIixcIm9wdGdyb3VwXCIsXCJvcHRpb25cIixcIm91dHB1dFwiLFwicFwiLFwicGFyYW1cIixcInBpY3R1cmVcIixcInByZVwiLFwicHJvZ3Jlc3NcIixcInFcIixcInJwXCIsXCJydFwiLFwicnVieVwiLFwic1wiLFwic2FtcFwiLFwic2NyaXB0XCIsXCJzZWN0aW9uXCIsXCJzZWxlY3RcIixcInNtYWxsXCIsXCJzb3VyY2VcIixcInNwYW5cIixcInN0cm9uZ1wiLFwic3R5bGVcIixcInN1YlwiLFwic3VtbWFyeVwiLFwic3VwXCIsXCJ0YWJsZVwiLFwidGJvZHlcIixcInRkXCIsXCJ0ZXh0YXJlYVwiLFwidGZvb3RcIixcInRoXCIsXCJ0aGVhZFwiLFwidGltZVwiLFwidGl0bGVcIixcInRyXCIsXCJ0cmFja1wiLFwidVwiLFwidWxcIixcInZhclwiLFwidmlkZW9cIixcIndiclwiLFwiY2lyY2xlXCIsXCJjbGlwUGF0aFwiLFwiZGVmc1wiLFwiZWxsaXBzZVwiLFwiZm9yZWlnbk9iamVjdFwiLFwiZ1wiLFwiaW1hZ2VcIixcImxpbmVcIixcImxpbmVhckdyYWRpZW50XCIsXCJtYXJrZXJcIixcIm1hc2tcIixcInBhdGhcIixcInBhdHRlcm5cIixcInBvbHlnb25cIixcInBvbHlsaW5lXCIsXCJyYWRpYWxHcmFkaWVudFwiLFwicmVjdFwiLFwic3RvcFwiLFwic3ZnXCIsXCJ0ZXh0XCIsXCJ0c3BhblwiXS5mb3JFYWNoKChmdW5jdGlvbihlKXt3dFtlXT13dChlKX0pKTt2YXIgYnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbil7UCh0aGlzLGUpLHRoaXMucnVsZXM9dCx0aGlzLmNvbXBvbmVudElkPW4sdGhpcy5pc1N0YXRpYz1OZSh0LEIpLGplLm1hc3Rlci5oYXNJZChuKXx8amUubWFzdGVyLmRlZmVycmVkSW5qZWN0KG4sW10pfXJldHVybiBlLnByb3RvdHlwZS5jcmVhdGVTdHlsZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1jZShIZSh0aGlzLnJ1bGVzLGUsdCksXCJcIik7dC5pbmplY3QodGhpcy5jb21wb25lbnRJZCxuKX0sZS5wcm90b3R5cGUucmVtb3ZlU3R5bGVzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY29tcG9uZW50SWQ7ZS5oYXNJZCh0KSYmZS5yZW1vdmUodCl9LGUucHJvdG90eXBlLnJlbmRlclN0eWxlcz1mdW5jdGlvbihlLHQpe3RoaXMucmVtb3ZlU3R5bGVzKHQpLHRoaXMuY3JlYXRlU3R5bGVzKGUsdCl9LGV9KCk7ZnVuY3Rpb24geHQoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0PjE/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07dmFyIG89VmUuYXBwbHkodm9pZCAwLFtlXS5jb25jYXQobikpLGk9XCJzYy1nbG9iYWwtXCIrRGUoSlNPTi5zdHJpbmdpZnkobykpLGE9bmV3IGJ0KG8saSkscz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe1AodGhpcyx0KTt2YXIgcj1IKHRoaXMsZS5jYWxsKHRoaXMsbikpLG89ci5jb25zdHJ1Y3RvcixpPW8uZ2xvYmFsU3R5bGUsYT1vLnN0eWxlZENvbXBvbmVudElkO3JldHVybiB6JiYod2luZG93LnNjQ0dTSE1SQ2FjaGVbYV09KHdpbmRvdy5zY0NHU0hNUkNhY2hlW2FdfHwwKSsxKSxyLnN0YXRlPXtnbG9iYWxTdHlsZTppLHN0eWxlZENvbXBvbmVudElkOmF9LHJ9cmV0dXJuIFQodCxlKSx0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3dpbmRvdy5zY0NHU0hNUkNhY2hlW3RoaXMuc3RhdGUuc3R5bGVkQ29tcG9uZW50SWRdJiYod2luZG93LnNjQ0dTSE1SQ2FjaGVbdGhpcy5zdGF0ZS5zdHlsZWRDb21wb25lbnRJZF0tPTEpLDA9PT13aW5kb3cuc2NDR1NITVJDYWNoZVt0aGlzLnN0YXRlLnN0eWxlZENvbXBvbmVudElkXSYmdGhpcy5zdGF0ZS5nbG9iYWxTdHlsZS5yZW1vdmVTdHlsZXModGhpcy5zdHlsZVNoZWV0KX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gbC5jcmVhdGVFbGVtZW50KHZ0LG51bGwsKGZ1bmN0aW9uKHQpe2Uuc3R5bGVTaGVldD10fHxqZS5tYXN0ZXI7dmFyIG49ZS5zdGF0ZS5nbG9iYWxTdHlsZTtyZXR1cm4gbi5pc1N0YXRpYz8obi5yZW5kZXJTdHlsZXMocSxlLnN0eWxlU2hlZXQpLG51bGwpOmwuY3JlYXRlRWxlbWVudChmdCxudWxsLChmdW5jdGlvbih0KXt2YXIgcj1lLmNvbnN0cnVjdG9yLmRlZmF1bHRQcm9wcyxvPUkoe30sZS5wcm9wcyk7cmV0dXJuIHZvaWQgMCE9PXQmJihvLnRoZW1lPUdlKGUucHJvcHMsdCxyKSksbi5yZW5kZXJTdHlsZXMobyxlLnN0eWxlU2hlZXQpLG51bGx9KSl9KSl9LHR9KGwuQ29tcG9uZW50KTtyZXR1cm4gcy5nbG9iYWxTdHlsZT1hLHMuc3R5bGVkQ29tcG9uZW50SWQ9aSxzfXomJih3aW5kb3cuc2NDR1NITVJDYWNoZT17fSk7dmFyIF90PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1xcc3xcXFxcbi9nLFwiXCIpfTtmdW5jdGlvbiBMdChlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTt2YXIgbz1WZS5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChuKSksaT1GZShEZShfdChKU09OLnN0cmluZ2lmeShvKSkpKTtyZXR1cm4gbmV3IGtlKGksY2UobyxpLFwiQGtleWZyYW1lc1wiKSl9dmFyIE90PWZ1bmN0aW9uKGUpe3ZhciB0PWwuZm9yd2FyZFJlZigoZnVuY3Rpb24odCxuKXtyZXR1cm4gbC5jcmVhdGVFbGVtZW50KGZ0LG51bGwsKGZ1bmN0aW9uKHIpe3ZhciBvPWUuZGVmYXVsdFByb3BzLGk9R2UodCxyLG8pO3JldHVybiBsLmNyZWF0ZUVsZW1lbnQoZSxJKHt9LHQse3RoZW1lOmkscmVmOm59KSl9KSl9KSk7cmV0dXJuIGN0KHQsZSksdC5kaXNwbGF5TmFtZT1cIldpdGhUaGVtZShcIiskKGUpK1wiKVwiLHR9LEV0PXtTdHlsZVNoZWV0OmplfTtjb25zdCBTdD13dH0sMjQ2OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9XCIvKnwqL1wiLG49dCtcIn1cIjtmdW5jdGlvbiByKHQpe2lmKHQpdHJ5e2UodCtcIn1cIil9Y2F0Y2goZSl7fX1yZXR1cm4gZnVuY3Rpb24obyxpLGEsbCxzLGMsdSxmLGQscCl7c3dpdGNoKG8pe2Nhc2UgMTppZigwPT09ZCYmNjQ9PT1pLmNoYXJDb2RlQXQoMCkpcmV0dXJuIGUoaStcIjtcIiksXCJcIjticmVhaztjYXNlIDI6aWYoMD09PWYpcmV0dXJuIGkrdDticmVhaztjYXNlIDM6c3dpdGNoKGYpe2Nhc2UgMTAyOmNhc2UgMTEyOnJldHVybiBlKGFbMF0raSksXCJcIjtkZWZhdWx0OnJldHVybiBpKygwPT09cD90OlwiXCIpfWNhc2UtMjppLnNwbGl0KG4pLmZvckVhY2gocil9fX19KCl9LDk0NjplPT57ZS5leHBvcnRzPWZ1bmN0aW9uIGUodCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49L15cXDArL2cscj0vW1xcMFxcclxcZl0vZyxvPS86ICovZyxpPS96b298Z3JhLyxhPS8oWyw6IF0pKHRyYW5zZm9ybSkvZyxsPS8sK1xccyooPyFbXihdKlspXSkvZyxzPS8gK1xccyooPyFbXihdKlspXSkvZyxjPS8gKltcXDBdICovZyx1PS8sXFxyKz8vZyxmPS8oW1xcdFxcclxcbiBdKSpcXGY/Ji9nLGQ9LzpnbG9iYWxcXCgoKD86W15cXChcXClcXFtcXF1dKnxcXFsuKlxcXXxcXChbXlxcKFxcKV0qXFwpKSopXFwpL2cscD0vXFxXKy9nLGg9L0Aoa1xcdyspXFxzKihcXFMqKVxccyovLHY9Lzo6KHBsYWNlKS9nLGc9LzoocmVhZC1vbmx5KS9nLEM9L1xccysoPz1be1xcXTs9Oj5dKS9nLG09LyhbW309Oj5dKVxccysvZyx5PS8oXFx7W157XSs/KTsoPz1cXH0pL2csdz0vXFxzezIsfS9nLGI9LyhbXlxcKF0pKDorKSAqL2cseD0vW3N2aF1cXHcrLVt0YmxyXXsyfS8sXz0vXFwoXFxzKiguKilcXHMqXFwpL2csTD0vKFtcXHNcXFNdKj8pOy9nLE89Ly1zZWxmfGZsZXgtL2csRT0vW15dKj8oOltycF1bZWxdYVtcXHctXSspW15dKi8sUz0vc3RyZXRjaHw6XFxzKlxcdytcXC0oPzpjb250ZXxhdmFpbCkvLE09LyhbXi1dKShpbWFnZS1zZXRcXCgpLyxqPVwiLXdlYmtpdC1cIixrPVwiLW1vei1cIixSPVwiLW1zLVwiLFA9NTksQT0xMjUsST0xMjMsVD00MCxIPTQxLFY9OTEsQj05MyxEPTEwLFo9MTMsJD05LEY9NjQsTj0zMixVPTM4LFc9NDUsej05NSxHPTQyLHE9NDQsWT01OCxLPTM5LFg9MzQsSj00NyxRPTYyLGVlPTQzLHRlPTEyNixuZT0wLHJlPTEyLG9lPTExLGllPTEwNyxhZT0xMDksbGU9MTE1LHNlPTExMixjZT0xMTEsdWU9MTA1LGZlPTk5LGRlPTEwMCxwZT0xMTIsaGU9MSx2ZT0xLGdlPTAsQ2U9MSxtZT0xLHllPTEsd2U9MCxiZT0wLHhlPTAsX2U9W10sTGU9W10sT2U9MCxFZT1udWxsLFNlPS0yLE1lPS0xLGplPTAsa2U9MSxSZT0yLFBlPTMsQWU9MCxJZT0xLFRlPVwiXCIsSGU9XCJcIixWZT1cIlwiO2Z1bmN0aW9uIEJlKGUsdCxvLGksYSl7Zm9yKHZhciBsLHMsdT0wLGY9MCxkPTAscD0wLEM9MCxtPTAseT0wLHc9MCx4PTAsTD0wLE89MCxFPTAsUz0wLE09MCx6PTAsd2U9MCxMZT0wLEVlPTAsU2U9MCxNZT1vLmxlbmd0aCxaZT1NZS0xLHplPVwiXCIsR2U9XCJcIixxZT1cIlwiLFllPVwiXCIsS2U9XCJcIixYZT1cIlwiO3o8TWU7KXtpZih5PW8uY2hhckNvZGVBdCh6KSx6PT09WmUmJmYrcCtkK3UhPT0wJiYoMCE9PWYmJih5PWY9PT1KP0Q6SikscD1kPXU9MCxNZSsrLFplKyspLGYrcCtkK3U9PT0wKXtpZih6PT09WmUmJih3ZT4wJiYoR2U9R2UucmVwbGFjZShyLFwiXCIpKSxHZS50cmltKCkubGVuZ3RoPjApKXtzd2l0Y2goeSl7Y2FzZSBOOmNhc2UgJDpjYXNlIFA6Y2FzZSBaOmNhc2UgRDpicmVhaztkZWZhdWx0OkdlKz1vLmNoYXJBdCh6KX15PVB9aWYoMT09PUxlKXN3aXRjaCh5KXtjYXNlIEk6Y2FzZSBBOmNhc2UgUDpjYXNlIFg6Y2FzZSBLOmNhc2UgVDpjYXNlIEg6Y2FzZSBxOkxlPTA7Y2FzZSAkOmNhc2UgWjpjYXNlIEQ6Y2FzZSBOOmJyZWFrO2RlZmF1bHQ6Zm9yKExlPTAsU2U9eixDPXksei0tLHk9UDtTZTxNZTspc3dpdGNoKG8uY2hhckNvZGVBdChTZSsrKSl7Y2FzZSBEOmNhc2UgWjpjYXNlIFA6Kyt6LHk9QyxTZT1NZTticmVhaztjYXNlIFk6d2U+MCYmKCsreix5PUMpO2Nhc2UgSTpTZT1NZX19c3dpdGNoKHkpe2Nhc2UgSTpmb3IoQz0oR2U9R2UudHJpbSgpKS5jaGFyQ29kZUF0KDApLE89MSxTZT0rK3o7ejxNZTspe3N3aXRjaCh5PW8uY2hhckNvZGVBdCh6KSl7Y2FzZSBJOk8rKzticmVhaztjYXNlIEE6Ty0tO2JyZWFrO2Nhc2UgSjpzd2l0Y2gobT1vLmNoYXJDb2RlQXQoeisxKSl7Y2FzZSBHOmNhc2UgSjp6PVdlKG0seixaZSxvKX1icmVhaztjYXNlIFY6eSsrO2Nhc2UgVDp5Kys7Y2FzZSBYOmNhc2UgSzpmb3IoO3orKzxaZSYmby5jaGFyQ29kZUF0KHopIT09eTspO31pZigwPT09TylicmVhazt6Kyt9aWYocWU9by5zdWJzdHJpbmcoU2UseiksQz09PW5lJiYoQz0oR2U9R2UucmVwbGFjZShuLFwiXCIpLnRyaW0oKSkuY2hhckNvZGVBdCgwKSksQz09PUYpe3N3aXRjaCh3ZT4wJiYoR2U9R2UucmVwbGFjZShyLFwiXCIpKSxtPUdlLmNoYXJDb2RlQXQoMSkpe2Nhc2UgZGU6Y2FzZSBhZTpjYXNlIGxlOmNhc2UgVzpsPXQ7YnJlYWs7ZGVmYXVsdDpsPV9lfWlmKFNlPShxZT1CZSh0LGwscWUsbSxhKzEpKS5sZW5ndGgseGU+MCYmMD09PVNlJiYoU2U9R2UubGVuZ3RoKSxPZT4wJiYobD1EZShfZSxHZSxFZSkscz1VZShQZSxxZSxsLHQsdmUsaGUsU2UsbSxhLGkpLEdlPWwuam9pbihcIlwiKSx2b2lkIDAhPT1zJiYwPT09KFNlPShxZT1zLnRyaW0oKSkubGVuZ3RoKSYmKG09MCxxZT1cIlwiKSksU2U+MClzd2l0Y2gobSl7Y2FzZSBsZTpHZT1HZS5yZXBsYWNlKF8sTmUpO2Nhc2UgZGU6Y2FzZSBhZTpjYXNlIFc6cWU9R2UrXCJ7XCIrcWUrXCJ9XCI7YnJlYWs7Y2FzZSBpZTpxZT0oR2U9R2UucmVwbGFjZShoLFwiJDEgJDJcIisoSWU+MD9UZTpcIlwiKSkpK1wie1wiK3FlK1wifVwiLHFlPTE9PT1tZXx8Mj09PW1lJiZGZShcIkBcIitxZSwzKT9cIkBcIitqK3FlK1wiQFwiK3FlOlwiQFwiK3FlO2JyZWFrO2RlZmF1bHQ6cWU9R2UrcWUsaT09PXBlJiYoWWUrPXFlLHFlPVwiXCIpfWVsc2UgcWU9XCJcIn1lbHNlIHFlPUJlKHQsRGUodCxHZSxFZSkscWUsaSxhKzEpO0tlKz1xZSxFPTAsTGU9MCxNPTAsd2U9MCxFZT0wLFM9MCxHZT1cIlwiLHFlPVwiXCIseT1vLmNoYXJDb2RlQXQoKyt6KTticmVhaztjYXNlIEE6Y2FzZSBQOmlmKChTZT0oR2U9KHdlPjA/R2UucmVwbGFjZShyLFwiXCIpOkdlKS50cmltKCkpLmxlbmd0aCk+MSlzd2l0Y2goMD09PU0mJigoQz1HZS5jaGFyQ29kZUF0KDApKT09PVd8fEM+OTYmJkM8MTIzKSYmKFNlPShHZT1HZS5yZXBsYWNlKFwiIFwiLFwiOlwiKSkubGVuZ3RoKSxPZT4wJiZ2b2lkIDAhPT0ocz1VZShrZSxHZSx0LGUsdmUsaGUsWWUubGVuZ3RoLGksYSxpKSkmJjA9PT0oU2U9KEdlPXMudHJpbSgpKS5sZW5ndGgpJiYoR2U9XCJcXDBcXDBcIiksQz1HZS5jaGFyQ29kZUF0KDApLG09R2UuY2hhckNvZGVBdCgxKSxDKXtjYXNlIG5lOmJyZWFrO2Nhc2UgRjppZihtPT09dWV8fG09PT1mZSl7WGUrPUdlK28uY2hhckF0KHopO2JyZWFrfWRlZmF1bHQ6aWYoR2UuY2hhckNvZGVBdChTZS0xKT09PVkpYnJlYWs7WWUrPSRlKEdlLEMsbSxHZS5jaGFyQ29kZUF0KDIpKX1FPTAsTGU9MCxNPTAsd2U9MCxFZT0wLEdlPVwiXCIseT1vLmNoYXJDb2RlQXQoKyt6KX19c3dpdGNoKHkpe2Nhc2UgWjpjYXNlIEQ6aWYoZitwK2QrdStiZT09PTApc3dpdGNoKEwpe2Nhc2UgSDpjYXNlIEs6Y2FzZSBYOmNhc2UgRjpjYXNlIHRlOmNhc2UgUTpjYXNlIEc6Y2FzZSBlZTpjYXNlIEo6Y2FzZSBXOmNhc2UgWTpjYXNlIHE6Y2FzZSBQOmNhc2UgSTpjYXNlIEE6YnJlYWs7ZGVmYXVsdDpNPjAmJihMZT0xKX1mPT09Sj9mPTA6Q2UrRT09PTAmJmkhPT1pZSYmR2UubGVuZ3RoPjAmJih3ZT0xLEdlKz1cIlxcMFwiKSxPZSpBZT4wJiZVZShqZSxHZSx0LGUsdmUsaGUsWWUubGVuZ3RoLGksYSxpKSxoZT0xLHZlKys7YnJlYWs7Y2FzZSBQOmNhc2UgQTppZihmK3ArZCt1PT09MCl7aGUrKzticmVha31kZWZhdWx0OnN3aXRjaChoZSsrLHplPW8uY2hhckF0KHopLHkpe2Nhc2UgJDpjYXNlIE46aWYocCt1K2Y9PT0wKXN3aXRjaCh3KXtjYXNlIHE6Y2FzZSBZOmNhc2UgJDpjYXNlIE46emU9XCJcIjticmVhaztkZWZhdWx0OnkhPT1OJiYoemU9XCIgXCIpfWJyZWFrO2Nhc2UgbmU6emU9XCJcXFxcMFwiO2JyZWFrO2Nhc2UgcmU6emU9XCJcXFxcZlwiO2JyZWFrO2Nhc2Ugb2U6emU9XCJcXFxcdlwiO2JyZWFrO2Nhc2UgVTpwK2YrdT09PTAmJkNlPjAmJihFZT0xLHdlPTEsemU9XCJcXGZcIit6ZSk7YnJlYWs7Y2FzZSAxMDg6aWYocCtmK3UrZ2U9PT0wJiZNPjApc3dpdGNoKHotTSl7Y2FzZSAyOnc9PT1zZSYmby5jaGFyQ29kZUF0KHotMyk9PT1ZJiYoZ2U9dyk7Y2FzZSA4Ong9PT1jZSYmKGdlPXgpfWJyZWFrO2Nhc2UgWTpwK2YrdT09PTAmJihNPXopO2JyZWFrO2Nhc2UgcTpmK2QrcCt1PT09MCYmKHdlPTEsemUrPVwiXFxyXCIpO2JyZWFrO2Nhc2UgWDpjYXNlIEs6MD09PWYmJihwPXA9PT15PzA6MD09PXA/eTpwKTticmVhaztjYXNlIFY6cCtmK2Q9PT0wJiZ1Kys7YnJlYWs7Y2FzZSBCOnArZitkPT09MCYmdS0tO2JyZWFrO2Nhc2UgSDpwK2YrdT09PTAmJmQtLTticmVhaztjYXNlIFQ6cCtmK3U9PT0wJiYoMD09PUUmJigyKncrMyp4PT01MzN8fChPPTAsRT0xKSksZCsrKTticmVhaztjYXNlIEY6ZitkK3ArdStNK1M9PT0wJiYoUz0xKTticmVhaztjYXNlIEc6Y2FzZSBKOmlmKHArdStkPjApYnJlYWs7c3dpdGNoKGYpe2Nhc2UgMDpzd2l0Y2goMip5KzMqby5jaGFyQ29kZUF0KHorMSkpe2Nhc2UgMjM1OmY9SjticmVhaztjYXNlIDIyMDpTZT16LGY9R31icmVhaztjYXNlIEc6eT09PUomJnc9PT1HJiZTZSsyIT09eiYmKDMzPT09by5jaGFyQ29kZUF0KFNlKzIpJiYoWWUrPW8uc3Vic3RyaW5nKFNlLHorMSkpLHplPVwiXCIsZj0wKX19aWYoMD09PWYpe2lmKENlK3ArdStTPT09MCYmaSE9PWllJiZ5IT09UClzd2l0Y2goeSl7Y2FzZSBxOmNhc2UgdGU6Y2FzZSBROmNhc2UgZWU6Y2FzZSBIOmNhc2UgVDppZigwPT09RSl7c3dpdGNoKHcpe2Nhc2UgJDpjYXNlIE46Y2FzZSBEOmNhc2UgWjp6ZSs9XCJcXDBcIjticmVhaztkZWZhdWx0OnplPVwiXFwwXCIremUrKHk9PT1xP1wiXCI6XCJcXDBcIil9d2U9MX1lbHNlIHN3aXRjaCh5KXtjYXNlIFQ6TSs3PT09eiYmMTA4PT09dyYmKE09MCksRT0rK087YnJlYWs7Y2FzZSBIOjA9PShFPS0tTykmJih3ZT0xLHplKz1cIlxcMFwiKX1icmVhaztjYXNlICQ6Y2FzZSBOOnN3aXRjaCh3KXtjYXNlIG5lOmNhc2UgSTpjYXNlIEE6Y2FzZSBQOmNhc2UgcTpjYXNlIHJlOmNhc2UgJDpjYXNlIE46Y2FzZSBEOmNhc2UgWjpicmVhaztkZWZhdWx0OjA9PT1FJiYod2U9MSx6ZSs9XCJcXDBcIil9fUdlKz16ZSx5IT09TiYmeSE9PSQmJihMPXkpfX14PXcsdz15LHorK31pZihTZT1ZZS5sZW5ndGgseGU+MCYmMD09PVNlJiYwPT09S2UubGVuZ3RoJiYwPT09dFswXS5sZW5ndGg9PTAmJihpIT09YWV8fDE9PT10Lmxlbmd0aCYmKENlPjA/SGU6VmUpPT09dFswXSkmJihTZT10LmpvaW4oXCIsXCIpLmxlbmd0aCsyKSxTZT4wKXtpZihsPTA9PT1DZSYmaSE9PWllP2Z1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLG89MCxpPWUubGVuZ3RoLGE9QXJyYXkoaSk7bzxpOysrbyl7Zm9yKHZhciBsPWVbb10uc3BsaXQoYykscz1cIlwiLHU9MCxmPTAsZD0wLHA9MCxoPWwubGVuZ3RoO3U8aDsrK3UpaWYoISgwPT09KGY9KG49bFt1XSkubGVuZ3RoKSYmaD4xKSl7aWYoZD1zLmNoYXJDb2RlQXQocy5sZW5ndGgtMSkscD1uLmNoYXJDb2RlQXQoMCksdD1cIlwiLDAhPT11KXN3aXRjaChkKXtjYXNlIEc6Y2FzZSB0ZTpjYXNlIFE6Y2FzZSBlZTpjYXNlIE46Y2FzZSBUOmJyZWFrO2RlZmF1bHQ6dD1cIiBcIn1zd2l0Y2gocCl7Y2FzZSBVOm49dCtIZTtjYXNlIHRlOmNhc2UgUTpjYXNlIGVlOmNhc2UgTjpjYXNlIEg6Y2FzZSBUOmJyZWFrO2Nhc2UgVjpuPXQrbitIZTticmVhaztjYXNlIFk6c3dpdGNoKDIqbi5jaGFyQ29kZUF0KDEpKzMqbi5jaGFyQ29kZUF0KDIpKXtjYXNlIDUzMDppZih5ZT4wKXtuPXQrbi5zdWJzdHJpbmcoOCxmLTEpO2JyZWFrfWRlZmF1bHQ6KHU8MXx8bFt1LTFdLmxlbmd0aDwxKSYmKG49dCtIZStuKX1icmVhaztjYXNlIHE6dD1cIlwiO2RlZmF1bHQ6bj1mPjEmJm4uaW5kZXhPZihcIjpcIik+MD90K24ucmVwbGFjZShiLFwiJDFcIitIZStcIiQyXCIpOnQrbitIZX1zKz1ufWFbb109cy5yZXBsYWNlKHIsXCJcIikudHJpbSgpfXJldHVybiBhfSh0KTp0LE9lPjAmJnZvaWQgMCE9PShzPVVlKFJlLFllLGwsZSx2ZSxoZSxTZSxpLGEsaSkpJiYwPT09KFllPXMpLmxlbmd0aClyZXR1cm4gWGUrWWUrS2U7aWYoWWU9bC5qb2luKFwiLFwiKStcIntcIitZZStcIn1cIixtZSpnZSE9MCl7c3dpdGNoKDIhPT1tZXx8RmUoWWUsMil8fChnZT0wKSxnZSl7Y2FzZSBjZTpZZT1ZZS5yZXBsYWNlKGcsXCI6XCIraytcIiQxXCIpK1llO2JyZWFrO2Nhc2Ugc2U6WWU9WWUucmVwbGFjZSh2LFwiOjpcIitqK1wiaW5wdXQtJDFcIikrWWUucmVwbGFjZSh2LFwiOjpcIitrK1wiJDFcIikrWWUucmVwbGFjZSh2LFwiOlwiK1IrXCJpbnB1dC0kMVwiKStZZX1nZT0wfX1yZXR1cm4gWGUrWWUrS2V9ZnVuY3Rpb24gRGUoZSx0LG4pe3ZhciByPXQudHJpbSgpLnNwbGl0KHUpLG89cixpPXIubGVuZ3RoLGE9ZS5sZW5ndGg7c3dpdGNoKGEpe2Nhc2UgMDpjYXNlIDE6Zm9yKHZhciBsPTAscz0wPT09YT9cIlwiOmVbMF0rXCIgXCI7bDxpOysrbClvW2xdPVplKHMsb1tsXSxuLGEpLnRyaW0oKTticmVhaztkZWZhdWx0Omw9MDt2YXIgYz0wO2ZvcihvPVtdO2w8aTsrK2wpZm9yKHZhciBmPTA7ZjxhOysrZilvW2MrK109WmUoZVtmXStcIiBcIixyW2xdLG4sYSkudHJpbSgpfXJldHVybiBvfWZ1bmN0aW9uIFplKGUsdCxuLHIpe3ZhciBvPXQsaT1vLmNoYXJDb2RlQXQoMCk7c3dpdGNoKGk8MzMmJihpPShvPW8udHJpbSgpKS5jaGFyQ29kZUF0KDApKSxpKXtjYXNlIFU6c3dpdGNoKENlK3Ipe2Nhc2UgMDpjYXNlIDE6aWYoMD09PWUudHJpbSgpLmxlbmd0aClicmVhaztkZWZhdWx0OnJldHVybiBvLnJlcGxhY2UoZixcIiQxXCIrZS50cmltKCkpfWJyZWFrO2Nhc2UgWTppZigxMDMhPT1vLmNoYXJDb2RlQXQoMSkpcmV0dXJuIGUudHJpbSgpK28ucmVwbGFjZShmLFwiJDFcIitlLnRyaW0oKSk7aWYoeWU+MCYmQ2U+MClyZXR1cm4gby5yZXBsYWNlKGQsXCIkMVwiKS5yZXBsYWNlKGYsXCIkMVwiK1ZlKTtkZWZhdWx0OmlmKG4qQ2U+MCYmby5pbmRleE9mKFwiXFxmXCIpPjApcmV0dXJuIG8ucmVwbGFjZShmLChlLmNoYXJDb2RlQXQoMCk9PT1ZP1wiXCI6XCIkMVwiKStlLnRyaW0oKSl9cmV0dXJuIGUrb31mdW5jdGlvbiAkZShlLHQsbixyKXt2YXIgYyx1PTAsZj1lK1wiO1wiLGQ9Mip0KzMqbis0KnI7aWYoOTQ0PT09ZClyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGgsbj1lLmluZGV4T2YoXCI6XCIsOSkrMSxyPWUuc3Vic3RyaW5nKDAsbikudHJpbSgpLG89ZS5zdWJzdHJpbmcobix0LTEpLnRyaW0oKTtzd2l0Y2goZS5jaGFyQ29kZUF0KDkpKkllKXtjYXNlIDA6YnJlYWs7Y2FzZSBXOmlmKDExMCE9PWUuY2hhckNvZGVBdCgxMCkpYnJlYWs7ZGVmYXVsdDp2YXIgaT1vLnNwbGl0KChvPVwiXCIsbCkpLGE9MDtmb3Iobj0wLHQ9aS5sZW5ndGg7YTx0O249MCwrK2Epe2Zvcih2YXIgYz1pW2FdLHU9Yy5zcGxpdChzKTtjPXVbbl07KXt2YXIgZj1jLmNoYXJDb2RlQXQoMCk7aWYoMT09PUllJiYoZj5GJiZmPDkwfHxmPjk2JiZmPDEyM3x8Zj09PXp8fGY9PT1XJiZjLmNoYXJDb2RlQXQoMSkhPT1XKSYmaXNOYU4ocGFyc2VGbG9hdChjKSkrKC0xIT09Yy5pbmRleE9mKFwiKFwiKSk9PT0xKXN3aXRjaChjKXtjYXNlXCJpbmZpbml0ZVwiOmNhc2VcImFsdGVybmF0ZVwiOmNhc2VcImJhY2t3YXJkc1wiOmNhc2VcInJ1bm5pbmdcIjpjYXNlXCJub3JtYWxcIjpjYXNlXCJmb3J3YXJkc1wiOmNhc2VcImJvdGhcIjpjYXNlXCJub25lXCI6Y2FzZVwibGluZWFyXCI6Y2FzZVwiZWFzZVwiOmNhc2VcImVhc2UtaW5cIjpjYXNlXCJlYXNlLW91dFwiOmNhc2VcImVhc2UtaW4tb3V0XCI6Y2FzZVwicGF1c2VkXCI6Y2FzZVwicmV2ZXJzZVwiOmNhc2VcImFsdGVybmF0ZS1yZXZlcnNlXCI6Y2FzZVwiaW5oZXJpdFwiOmNhc2VcImluaXRpYWxcIjpjYXNlXCJ1bnNldFwiOmNhc2VcInN0ZXAtc3RhcnRcIjpjYXNlXCJzdGVwLWVuZFwiOmJyZWFrO2RlZmF1bHQ6Yys9VGV9dVtuKytdPWN9bys9KDA9PT1hP1wiXCI6XCIsXCIpK3Uuam9pbihcIiBcIil9fXJldHVybiBvPXIrbytcIjtcIiwxPT09bWV8fDI9PT1tZSYmRmUobywxKT9qK28rbzpvfShmKTtpZigwPT09bWV8fDI9PT1tZSYmIUZlKGYsMSkpcmV0dXJuIGY7c3dpdGNoKGQpe2Nhc2UgMTAxNTpyZXR1cm4gOTc9PT1mLmNoYXJDb2RlQXQoMTApP2orZitmOmY7Y2FzZSA5NTE6cmV0dXJuIDExNj09PWYuY2hhckNvZGVBdCgzKT9qK2YrZjpmO2Nhc2UgOTYzOnJldHVybiAxMTA9PT1mLmNoYXJDb2RlQXQoNSk/aitmK2Y6ZjtjYXNlIDEwMDk6aWYoMTAwIT09Zi5jaGFyQ29kZUF0KDQpKWJyZWFrO2Nhc2UgOTY5OmNhc2UgOTQyOnJldHVybiBqK2YrZjtjYXNlIDk3ODpyZXR1cm4gaitmK2srZitmO2Nhc2UgMTAxOTpjYXNlIDk4MzpyZXR1cm4gaitmK2srZitSK2YrZjtjYXNlIDg4MzpyZXR1cm4gZi5jaGFyQ29kZUF0KDgpPT09Vz9qK2YrZjpmLmluZGV4T2YoXCJpbWFnZS1zZXQoXCIsMTEpPjA/Zi5yZXBsYWNlKE0sXCIkMVwiK2orXCIkMlwiKStmOmY7Y2FzZSA5MzI6aWYoZi5jaGFyQ29kZUF0KDQpPT09Vylzd2l0Y2goZi5jaGFyQ29kZUF0KDUpKXtjYXNlIDEwMzpyZXR1cm4gaitcImJveC1cIitmLnJlcGxhY2UoXCItZ3Jvd1wiLFwiXCIpK2orZitSK2YucmVwbGFjZShcImdyb3dcIixcInBvc2l0aXZlXCIpK2Y7Y2FzZSAxMTU6cmV0dXJuIGorZitSK2YucmVwbGFjZShcInNocmlua1wiLFwibmVnYXRpdmVcIikrZjtjYXNlIDk4OnJldHVybiBqK2YrUitmLnJlcGxhY2UoXCJiYXNpc1wiLFwicHJlZmVycmVkLXNpemVcIikrZn1yZXR1cm4gaitmK1IrZitmO2Nhc2UgOTY0OnJldHVybiBqK2YrUitcImZsZXgtXCIrZitmO2Nhc2UgMTAyMzppZig5OSE9PWYuY2hhckNvZGVBdCg4KSlicmVhaztyZXR1cm4gYz1mLnN1YnN0cmluZyhmLmluZGV4T2YoXCI6XCIsMTUpKS5yZXBsYWNlKFwiZmxleC1cIixcIlwiKS5yZXBsYWNlKFwic3BhY2UtYmV0d2VlblwiLFwianVzdGlmeVwiKSxqK1wiYm94LXBhY2tcIitjK2orZitSK1wiZmxleC1wYWNrXCIrYytmO2Nhc2UgMTAwNTpyZXR1cm4gaS50ZXN0KGYpP2YucmVwbGFjZShvLFwiOlwiK2opK2YucmVwbGFjZShvLFwiOlwiK2spK2Y6ZjtjYXNlIDFlMzpzd2l0Y2godT0oYz1mLnN1YnN0cmluZygxMykudHJpbSgpKS5pbmRleE9mKFwiLVwiKSsxLGMuY2hhckNvZGVBdCgwKStjLmNoYXJDb2RlQXQodSkpe2Nhc2UgMjI2OmM9Zi5yZXBsYWNlKHgsXCJ0YlwiKTticmVhaztjYXNlIDIzMjpjPWYucmVwbGFjZSh4LFwidGItcmxcIik7YnJlYWs7Y2FzZSAyMjA6Yz1mLnJlcGxhY2UoeCxcImxyXCIpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIGZ9cmV0dXJuIGorZitSK2MrZjtjYXNlIDEwMTc6aWYoLTE9PT1mLmluZGV4T2YoXCJzdGlja3lcIiw5KSlyZXR1cm4gZjtjYXNlIDk3NTpzd2l0Y2godT0oZj1lKS5sZW5ndGgtMTAsZD0oYz0oMzM9PT1mLmNoYXJDb2RlQXQodSk/Zi5zdWJzdHJpbmcoMCx1KTpmKS5zdWJzdHJpbmcoZS5pbmRleE9mKFwiOlwiLDcpKzEpLnRyaW0oKSkuY2hhckNvZGVBdCgwKSsoMHxjLmNoYXJDb2RlQXQoNykpKXtjYXNlIDIwMzppZihjLmNoYXJDb2RlQXQoOCk8MTExKWJyZWFrO2Nhc2UgMTE1OmY9Zi5yZXBsYWNlKGMsaitjKStcIjtcIitmO2JyZWFrO2Nhc2UgMjA3OmNhc2UgMTAyOmY9Zi5yZXBsYWNlKGMsaisoZD4xMDI/XCJpbmxpbmUtXCI6XCJcIikrXCJib3hcIikrXCI7XCIrZi5yZXBsYWNlKGMsaitjKStcIjtcIitmLnJlcGxhY2UoYyxSK2MrXCJib3hcIikrXCI7XCIrZn1yZXR1cm4gZitcIjtcIjtjYXNlIDkzODppZihmLmNoYXJDb2RlQXQoNSk9PT1XKXN3aXRjaChmLmNoYXJDb2RlQXQoNikpe2Nhc2UgMTA1OnJldHVybiBjPWYucmVwbGFjZShcIi1pdGVtc1wiLFwiXCIpLGorZitqK1wiYm94LVwiK2MrUitcImZsZXgtXCIrYytmO2Nhc2UgMTE1OnJldHVybiBqK2YrUitcImZsZXgtaXRlbS1cIitmLnJlcGxhY2UoTyxcIlwiKStmO2RlZmF1bHQ6cmV0dXJuIGorZitSK1wiZmxleC1saW5lLXBhY2tcIitmLnJlcGxhY2UoXCJhbGlnbi1jb250ZW50XCIsXCJcIikucmVwbGFjZShPLFwiXCIpK2Z9YnJlYWs7Y2FzZSA5NzM6Y2FzZSA5ODk6aWYoZi5jaGFyQ29kZUF0KDMpIT09V3x8MTIyPT09Zi5jaGFyQ29kZUF0KDQpKWJyZWFrO2Nhc2UgOTMxOmNhc2UgOTUzOmlmKCEwPT09Uy50ZXN0KGUpKXJldHVybiAxMTU9PT0oYz1lLnN1YnN0cmluZyhlLmluZGV4T2YoXCI6XCIpKzEpKS5jaGFyQ29kZUF0KDApPyRlKGUucmVwbGFjZShcInN0cmV0Y2hcIixcImZpbGwtYXZhaWxhYmxlXCIpLHQsbixyKS5yZXBsYWNlKFwiOmZpbGwtYXZhaWxhYmxlXCIsXCI6c3RyZXRjaFwiKTpmLnJlcGxhY2UoYyxqK2MpK2YucmVwbGFjZShjLGsrYy5yZXBsYWNlKFwiZmlsbC1cIixcIlwiKSkrZjticmVhaztjYXNlIDk2MjppZihmPWorZisoMTAyPT09Zi5jaGFyQ29kZUF0KDUpP1IrZjpcIlwiKStmLG4rcj09PTIxMSYmMTA1PT09Zi5jaGFyQ29kZUF0KDEzKSYmZi5pbmRleE9mKFwidHJhbnNmb3JtXCIsMTApPjApcmV0dXJuIGYuc3Vic3RyaW5nKDAsZi5pbmRleE9mKFwiO1wiLDI3KSsxKS5yZXBsYWNlKGEsXCIkMVwiK2orXCIkMlwiKStmfXJldHVybiBmfWZ1bmN0aW9uIEZlKGUsdCl7dmFyIG49ZS5pbmRleE9mKDE9PT10P1wiOlwiOlwie1wiKSxyPWUuc3Vic3RyaW5nKDAsMyE9PXQ/bjoxMCksbz1lLnN1YnN0cmluZyhuKzEsZS5sZW5ndGgtMSk7cmV0dXJuIEVlKDIhPT10P3I6ci5yZXBsYWNlKEUsXCIkMVwiKSxvLHQpfWZ1bmN0aW9uIE5lKGUsdCl7dmFyIG49JGUodCx0LmNoYXJDb2RlQXQoMCksdC5jaGFyQ29kZUF0KDEpLHQuY2hhckNvZGVBdCgyKSk7cmV0dXJuIG4hPT10K1wiO1wiP24ucmVwbGFjZShMLFwiIG9yICgkMSlcIikuc3Vic3RyaW5nKDQpOlwiKFwiK3QrXCIpXCJ9ZnVuY3Rpb24gVWUoZSx0LG4scixvLGksYSxsLHMsYyl7Zm9yKHZhciB1LGY9MCxkPXQ7ZjxPZTsrK2Ypc3dpdGNoKHU9TGVbZl0uY2FsbChHZSxlLGQsbixyLG8saSxhLGwscyxjKSl7Y2FzZSB2b2lkIDA6Y2FzZSExOmNhc2UhMDpjYXNlIG51bGw6YnJlYWs7ZGVmYXVsdDpkPXV9aWYoZCE9PXQpcmV0dXJuIGR9ZnVuY3Rpb24gV2UoZSx0LG4scil7Zm9yKHZhciBvPXQrMTtvPG47KytvKXN3aXRjaChyLmNoYXJDb2RlQXQobykpe2Nhc2UgSjppZihlPT09RyYmci5jaGFyQ29kZUF0KG8tMSk9PT1HJiZ0KzIhPT1vKXJldHVybiBvKzE7YnJlYWs7Y2FzZSBEOmlmKGU9PT1KKXJldHVybiBvKzF9cmV0dXJuIG99ZnVuY3Rpb24gemUoZSl7Zm9yKHZhciB0IGluIGUpe3ZhciBuPWVbdF07c3dpdGNoKHQpe2Nhc2VcImtleWZyYW1lXCI6SWU9MHxuO2JyZWFrO2Nhc2VcImdsb2JhbFwiOnllPTB8bjticmVhaztjYXNlXCJjYXNjYWRlXCI6Q2U9MHxuO2JyZWFrO2Nhc2VcImNvbXByZXNzXCI6d2U9MHxuO2JyZWFrO2Nhc2VcInNlbWljb2xvblwiOmJlPTB8bjticmVhaztjYXNlXCJwcmVzZXJ2ZVwiOnhlPTB8bjticmVhaztjYXNlXCJwcmVmaXhcIjpFZT1udWxsLG4/XCJmdW5jdGlvblwiIT10eXBlb2Ygbj9tZT0xOihtZT0yLEVlPW4pOm1lPTB9fXJldHVybiB6ZX1mdW5jdGlvbiBHZSh0LG4pe2lmKHZvaWQgMCE9PXRoaXMmJnRoaXMuY29uc3RydWN0b3I9PT1HZSlyZXR1cm4gZSh0KTt2YXIgbz10LGk9by5jaGFyQ29kZUF0KDApO2k8MzMmJihpPShvPW8udHJpbSgpKS5jaGFyQ29kZUF0KDApKSxJZT4wJiYoVGU9by5yZXBsYWNlKHAsaT09PVY/XCJcIjpcIi1cIikpLGk9MSwxPT09Q2U/VmU9bzpIZT1vO3ZhciBhLGw9W1ZlXTtPZT4wJiZ2b2lkIDAhPT0oYT1VZShNZSxuLGwsbCx2ZSxoZSwwLDAsMCwwKSkmJlwic3RyaW5nXCI9PXR5cGVvZiBhJiYobj1hKTt2YXIgcz1CZShfZSxsLG4sMCwwKTtyZXR1cm4gT2U+MCYmdm9pZCAwIT09KGE9VWUoU2UscyxsLGwsdmUsaGUscy5sZW5ndGgsMCwwLDApKSYmXCJzdHJpbmdcIiE9dHlwZW9mKHM9YSkmJihpPTApLFRlPVwiXCIsVmU9XCJcIixIZT1cIlwiLGdlPTAsdmU9MSxoZT0xLHdlKmk9PTA/czpzLnJlcGxhY2UocixcIlwiKS5yZXBsYWNlKEMsXCJcIikucmVwbGFjZShtLFwiJDFcIikucmVwbGFjZSh5LFwiJDFcIikucmVwbGFjZSh3LFwiIFwiKX1yZXR1cm4gR2UudXNlPWZ1bmN0aW9uIGUodCl7c3dpdGNoKHQpe2Nhc2Ugdm9pZCAwOmNhc2UgbnVsbDpPZT1MZS5sZW5ndGg9MDticmVhaztkZWZhdWx0OmlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpTGVbT2UrK109dDtlbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiB0KWZvcih2YXIgbj0wLHI9dC5sZW5ndGg7bjxyOysrbillKHRbbl0pO2Vsc2UgQWU9MHwhIXR9cmV0dXJuIGV9LEdlLnNldD16ZSx2b2lkIDAhPT10JiZ6ZSh0KSxHZX0obnVsbCl9LDMzNzooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7big2NzgpLG4oNDM4KSxuKDEwMCksbigxMjcpO24oNzA1KX0sNzA1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuKDYxKSxuKDcyOCksbigxMjEpLG4oMTI3KTt2YXIgcj1uKDExNyk7dmFyIG87IWZ1bmN0aW9uKGUpe2UuVXBkYXRlUGxhdGZvcm1UaGVtZVNjaGVtZT1cInVwZGF0ZS1wbGF0Zm9ybS10aGVtZS1zY2hlbWVcIn0ob3x8KG89e30pKTsoMCxyLlopKFwib2Ytd29ya3NwYWNlLW5vdGlmaWNhdGlvbnMtc3luY1wiKTtuKDE1MCksbig0MzgpfSwxMDA6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHt3aDooKT0+cn0pO3ZhciByLG8saSxhLGwscyxjLHU7big1NjQpLG4oNDk1KTshZnVuY3Rpb24oZSl7ZS5OZXdXaW5kb3c9XCJOZXdXaW5kb3dcIixlLk5ld1BhZ2U9XCJOZXdQYWdlXCIsZS5TYXZlUGFnZT1cIlNhdmVQYWdlXCIsZS5TYXZlUGFnZUFzPVwiU2F2ZVBhZ2VBc1wiLGUuUHJpbnQ9XCJQcmludFwiLGUuUHJpbnRBbGw9XCJQcmludEFsbFwiLGUuUHJpbnRTY3JlZW49XCJQcmludFNjcmVlblwiLGUuQ2xvc2VXaW5kb3c9XCJDbG9zZVdpbmRvd1wiLGUuUmVzdG9yZUNoYW5nZXM9XCJSZXN0b3JlQ2hhbmdlc1wiLGUuU2F2ZVdvcmtzcGFjZT1cIlNhdmVXb3Jrc3BhY2VcIixlLlNhdmVXb3Jrc3BhY2VBcz1cIlNhdmVXb3Jrc3BhY2VBc1wiLGUuUmVuYW1lV29ya3NwYWNlPVwiUmVuYW1lV29ya3NwYWNlXCIsZS5Td2l0Y2hXb3Jrc3BhY2U9XCJTd2l0Y2hXb3Jrc3BhY2VcIixlLkRlbGV0ZVdvcmtzcGFjZT1cIkRlbGV0ZVdvcmtzcGFjZVwiLGUuT3BlblN0b3JlZnJvbnQ9XCJPcGVuU3RvcmVmcm9udFwiLGUuQXBwZWFyYW5jZT1cIkFwcGVhcmFuY2VcIixlLlF1aXQ9XCJRdWl0XCIsZS5DdXN0b209XCJDdXN0b21cIn0ocnx8KHI9e30pKSxmdW5jdGlvbihlKXtlLkxpZ2h0PVwibGlnaHRcIixlLkRhcms9XCJkYXJrXCIsZS5TeXN0ZW09XCJzeXN0ZW1cIn0ob3x8KG89e30pKSxmdW5jdGlvbihlKXtlLkNsb3NlPVwiQ2xvc2VcIixlLkR1cGxpY2F0ZT1cIkR1cGxpY2F0ZVwiLGUuUmVuYW1lPVwiUmVuYW1lXCIsZS5TYXZlPVwiU2F2ZVwiLGUuU2F2ZUFzPVwiU2F2ZSBBc1wiLGUuQ3VzdG9tPVwiQ3VzdG9tXCJ9KGl8fChpPXt9KSksZnVuY3Rpb24oZSl7ZS5OZXdWaWV3PVwiTmV3Vmlld1wiLGUuRHVwbGljYXRlVmlld3M9XCJEdXBsaWNhdGVWaWV3XCIsZS5PcGVuV2l0aERlZmF1bHRCcm93c2VyPVwiT3BlbldpdGhEZWZhdWx0QnJvd3NlclwiLGUuUmVsb2FkVmlld3M9XCJSZWxvYWRUYWJcIixlLkNsb3NlVmlld3M9XCJDbG9zZVRhYlwiLGUuQWRkVG9DaGFubmVsPVwiQWRkVG9DaGFubmVsXCIsZS5SZW1vdmVGcm9tQ2hhbm5lbD1cIlJlbW92ZUZyb21DaGFubmVsXCIsZS5CYWNrPVwiQmFja1wiLGUuRm9yd2FyZD1cIkZvcndhcmRcIixlLlByaW50PVwiUHJpbnRcIixlLlByaW50QWxsPVwiUHJpbnRBbGxcIixlLlByaW50U2NyZWVuPVwiUHJpbnRTY3JlZW5cIixlLkN1c3RvbT1cIkN1c3RvbVwifShhfHwoYT17fSkpLGZ1bmN0aW9uKGUpe2UuU2hvd0hpZGVUYWJzPVwiU2hvd0hpZGVUYWJzXCIsZS5Db2xvckxpbmtpbmc9XCJDb2xvckxpbmtpbmdcIixlLlByZXNldExheW91dHM9XCJQcmVzZXRMYXlvdXRzXCIsZS5Mb2NrVW5sb2NrUGFnZT1cIkxvY2tVbmxvY2tQYWdlXCIsZS5TYXZlTWVudT1cIlNhdmVNZW51XCIsZS5TYXZlUGFnZT1cIlNhdmVQYWdlXCIsZS5NaW5pbWlzZT1cIk1pbmltaXNlXCIsZS5NYXhpbWlzZT1cIk1heGltaXNlXCIsZS5DbG9zZT1cIkNsb3NlXCIsZS5DdXN0b209XCJDdXN0b21cIn0obHx8KGw9e30pKSxmdW5jdGlvbihlKXtlLlNhdmVQYWdlPVwiU2F2ZVBhZ2VcIixlLlNhdmVXb3Jrc3BhY2U9XCJTYXZlV29ya3NwYWNlXCIsZS5TYXZlUGFnZUFzPVwiU2F2ZVBhZ2VBc1wiLGUuU2F2ZVdvcmtzcGFjZUFzPVwiU2F2ZVdvcmtzcGFjZUFzXCIsZS5DdXN0b209XCJDdXN0b21cIn0oc3x8KHM9e30pKSxmdW5jdGlvbihlKXtlLkN1c3RvbUJ1dHRvbj1cIkN1c3RvbUJ1dHRvblwiLGUuU3RvcmVDdXN0b21CdXR0b249XCJTdG9yZUN1c3RvbUJ1dHRvblwiLGUuQ3VzdG9tRHJvcGRvd25JdGVtPVwiQ3VzdG9tRHJvcGRvd25JdGVtXCIsZS5HbG9iYWxDb250ZXh0TWVudT1cIkdsb2JhbENvbnRleHRNZW51XCIsZS5WaWV3VGFiQ29udGV4dE1lbnU9XCJWaWV3VGFiQ29udGV4dE1lbnVcIixlLlBhZ2VUYWJDb250ZXh0TWVudT1cIlBhZ2VUYWJDb250ZXh0TWVudVwiLGUuU2F2ZUJ1dHRvbkNvbnRleHRNZW51PVwiU2F2ZUJ1dHRvbkNvbnRleHRNZW51XCIsZS5BUEk9XCJBUElcIn0oY3x8KGM9e30pKSxmdW5jdGlvbihlKXtlLlNBVkVfUEFHRT1cIlNBVkVfUEFHRVwiLGUuU0FWRV9XT1JLU1BBQ0U9XCJTQVZFX1dPUktTUEFDRVwiLGUuU0FWRV9QQUdFX0FTPVwiU0FWRV9QQUdFX0FTXCIsZS5TQVZFX1dPUktTUEFDRV9BUz1cIlNBVkVfV09SS1NQQUNFX0FTXCIsZS5SRU5BTUVfUEFHRT1cIlJFTkFNRV9QQUdFXCIsZS5SRU5BTUVfV09SS1NQQUNFPVwiUkVOQU1FX1dPUktTUEFDRVwifSh1fHwodT17fSkpfSwyNjE6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCx7Q0xJQWN0aW9uOigpPT53LlB0LENMSUZpbHRlck9wdGlvblR5cGU6KCk9PncuZWwsQ0xJVGVtcGxhdGU6KCk9PncueVcsZGVyZWdpc3RlcjooKT0+XyxoaWRlOigpPT5PLHJlZ2lzdGVyOigpPT54LHNob3c6KCk9Pkx9KTt2YXIgcj1uKDY3OCksbz1uKDc3Mik7Y29uc3QgaT17cmVtb3RlUHJvdmlkZXJEYXRhU3RyZWFtSWQ6XCIwXCIscmVtb3RlQ2xpZW50U2VhcmNoU3RyZWFtSWQ6XCIxXCIscmVtb3RlUHJvdmlkZXJSZWdpc3RyYXRpb25TdHJlYW1JZDpcIjJcIixyZW1vdGVQcm92aWRlckRlcmVnaXN0cmF0aW9uU3RyZWFtSWQ6XCIzXCIscmVtb3RlUHJvdmlkZXJJbmZvU3RyZWFtSWQ6XCI0XCIscmVtb3RlUHJvdmlkZXJEaXNwYXRjaFN0cmVhbUlkOlwiNVwiLHJlbW90ZVNlYXJjaENsb3NlU3RyZWFtSWQ6XCI2XCJ9O3ZhciBhPW4oMTUwKSxsPW4oNDM4KSxzPW4oMjY0KTt2YXIgYz1uKDQ2KTtjb25zdCB1PSgpPT57fTtmdW5jdGlvbiBmKGUpe2NvbnN0IHQ9e307bGV0IG49W107bGV0IHI9W107bGV0IG89bnVsbDtsZXQgaT1jLncxLkluaXRpYWw7dC5nZXRTdGF0dXM9KCk9PmksdC5nZXRSZXN1bHRCdWZmZXI9KCk9Pm4sdC5zZXRSZXN1bHRCdWZmZXI9ZT0+e249ZSxuPy5sZW5ndGgmJnQub25DaGFuZ2UoKX0sdC5nZXRSZXZva2VkQnVmZmVyPSgpPT5yLHQuc2V0UmV2b2tlZEJ1ZmZlcj1lPT57cj1lLHI/Lmxlbmd0aCYmdC5vbkNoYW5nZSgpfSx0LnNldFVwZGF0ZWRDb250ZXh0PWU9PntvPWUsbnVsbCE9PW8mJnQub25DaGFuZ2UoKX0sdC5nZXRVcGRhdGVkQ29udGV4dD0oKT0+byx0Lm9uQ2hhbmdlPXU7Y29uc3QgYT17fTtyZXR1cm4gdC5yZXM9YSxhLmNsb3NlPSgpPT57aSE9PWMudzEuQ2xvc2UmJihpPWMudzEuQ2xvc2UsdC5vbkNoYW5nZSgpKX0sYS5vcGVuPSgpPT57aSE9PWMudzEuT3BlbiYmKGk9Yy53MS5PcGVuLHQub25DaGFuZ2UoKSl9LGEucmVzcG9uZD1uPT57Y29uc3Qgcj1mdW5jdGlvbihlPVtdLHQ9W10sbj1cImFzY2VuZGluZ1wiKXtjb25zdCByPVtdLG89bmV3IE1hcDt0LmZvckVhY2goKGU9PntpZihlLmtleSlyZXR1cm4gby5zZXQoZS5rZXksZSk7ci5wdXNoKGUpfSkpO2xldCBpPWUubWFwKChlPT57aWYoZS5rZXkpe2NvbnN0IHQ9by5nZXQoZS5rZXkpO2lmKHQpcmV0dXJuIG8uZGVsZXRlKGUua2V5KSx0fXJldHVybiBlfSkpO3JldHVybiBpLnB1c2goLi4uby52YWx1ZXMoKSwuLi5yKSxpPVwiYXNjZW5kaW5nXCI9PT1uP2kuc29ydCgoKGUsdCk9PihlPy5zY29yZT8/MS8wKS0odD8uc2NvcmU/PzEvMCkpKTppLnNvcnQoKChlLHQpPT4odD8uc2NvcmU/PzEvMCktKGU/LnNjb3JlPz8xLzApKSksaX0odC5nZXRSZXN1bHRCdWZmZXIoKSxuLGUpO3Quc2V0UmVzdWx0QnVmZmVyKHIpfSxhLnJldm9rZT0oLi4uZSk9Pntjb25zdCBuPW5ldyBTZXQoZSkscj10LmdldFJlc3VsdEJ1ZmZlcigpLmZpbHRlcigoKHtrZXk6ZX0pPT57Y29uc3QgdD1uLmhhcyhlKTtyZXR1cm4gdCYmbi5kZWxldGUoZSksIXR9KSk7dC5zZXRSZXN1bHRCdWZmZXIociksbi5zaXplJiYodC5nZXRSZXZva2VkQnVmZmVyKCkuZm9yRWFjaCgoZT0+bi5hZGQoZSkpKSx0LnNldFJldm9rZWRCdWZmZXIoWy4uLm5dKSl9LGEudXBkYXRlQ29udGV4dD1lPT57dC5zZXRVcGRhdGVkQ29udGV4dChlKX0sdH1jb25zdCBkPW5ldyBNYXAscD0xMDA7YXN5bmMgZnVuY3Rpb24gaChlKXtjb25zdHtpZDp0LHByb3ZpZGVySWQ6bn09ZSxyPW0uZ2V0UHJvdmlkZXJPckZhaWwobik7bGV0IG89ZC5nZXQodCk7b3x8KG89ZnVuY3Rpb24oZSx0KXtjb25zdCBuPW5ldyBTZXQ7bGV0IHI9ITE7cmV0dXJue2Nsb3NlOigpPT57cj0hMDtmb3IoY29uc3QgZSBvZiBuKWUoKX0scmVxOntpZDplLC4uLnQsY29udGV4dDp0Py5jb250ZXh0fHx7fSxvbkNsb3NlOmU9PntuLmFkZChlKSxyJiZlKCl9LHJlbW92ZUxpc3RlbmVyOmU9PntuLmRlbGV0ZShlKX19fX0odCxlKSxkLnNldCh0LG8pKTtjb25zdCBsPWYoKSxzPSgpPT57Y29uc3QgZT1sLmdldFJlc3VsdEJ1ZmZlcigpO2wuc2V0UmVzdWx0QnVmZmVyKFtdKTtjb25zdCByPWwuZ2V0UmV2b2tlZEJ1ZmZlcigpO2wuc2V0UmV2b2tlZEJ1ZmZlcihbXSk7Y29uc3Qgbz1sLmdldFVwZGF0ZWRDb250ZXh0KCk7bC5zZXRVcGRhdGVkQ29udGV4dChudWxsKTtjb25zdCBzPWwuZ2V0U3RhdHVzKCk7IWFzeW5jIGZ1bmN0aW9uKGUpeyhhd2FpdCgwLGEuVkQpKCkpLmRpc3BhdGNoKGkucmVtb3RlUHJvdmlkZXJEYXRhU3RyZWFtSWQsZSl9KHtpZDp0LHByb3ZpZGVySWQ6bixyZXN1bHRzOmUscmV2b2tlZDpyLHN0YXR1czpzLGNvbnRleHQ6b30pfTtsZXQgYz0hMCx1PSExO2wub25DaGFuZ2U9KCk9PntpZihjKXJldHVybiBjPSExLHZvaWQgcygpO3V8fCh1PSEwLHNldFRpbWVvdXQoKCgpPT57dT0hMSxzKCl9KSxwKSl9O3RyeXtjb25zdHtyZXN1bHRzOmUsY29udGV4dDppfT1hd2FpdCByLm9uVXNlcklucHV0KG8ucmVxLGwucmVzKSxhPWwuZ2V0U3RhdHVzKCk7cmV0dXJue2lkOnQscHJvdmlkZXJJZDpuLHN0YXR1czphLHJlc3VsdHM6ZSxjb250ZXh0Oml9fWNhdGNoKGUpe3JldHVybiBjb25zb2xlLmVycm9yKGBPcGVuRmluL1dvcmtzcGFjZS9Ib21lLiBVbmNhdWdodCBleGNlcHRpb24gaW4gc2VhcmNoIHByb3ZpZGVyICR7bn0gZm9yIHNlYXJjaCAke3R9YCxcIlRoaXMgaXMgbGlrZWx5IGEgYnVnIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2VhcmNoIHByb3ZpZGVyLlwiLGUpLHtpZDp0LHByb3ZpZGVySWQ6bixlcnJvcjplPy5tZXNzYWdlfX19YXN5bmMgZnVuY3Rpb24gdigpe2Zvcihjb25zdHtyZXE6ZSxjbG9zZTp0fW9mIGQudmFsdWVzKCkpdCgpLGQuZGVsZXRlKGUuaWQpfWFzeW5jIGZ1bmN0aW9uIGcoZSx0KXtjb25zdCBuPW0uZ2V0UHJvdmlkZXJPckZhaWwoZS5wcm92aWRlcklkKTtyZXR1cm4gZS5yZXN1bHQuZGlzcGF0Y2hlcklkZW50aXR5PXQsbi5vblJlc3VsdERpc3BhdGNoPy4oZS5yZXN1bHQpfWZ1bmN0aW9uIEMoZSl7Y29uc3QgdD1kLmdldChlLmlkKTt0Py5jbG9zZSgpLGQuZGVsZXRlKGUuaWQpfWNvbnN0IG09bmV3IHMubFQoXCJob21lXCIpLHk9YXN5bmMgZT0+e2F3YWl0KDAsYS5hQikoKTshKFwic2tpcFBsYXRmb3JtSW5pdENoZWNrXCJpbiBlJiYhMD09PWUuc2tpcFBsYXRmb3JtSW5pdENoZWNrKSYmYXdhaXQoMCxsLkhoKShmaW4ubWUuaWRlbnRpdHkpO20uYXNzZXJ0Tm90QWxyZWFkeVJlZ2lzdGVyZWQoZS5pZCksbS5zZXRQcm92aWRlcihlKTtjb25zdCB0PWF3YWl0KDAsYS5WRCkoKTtyZXR1cm4gZnVuY3Rpb24oZSl7ZS5ob21lQ2hhbm5lbEFjdGlvbnNSZWdpc3RlcmVkfHwoZS5ob21lQ2hhbm5lbEFjdGlvbnNSZWdpc3RlcmVkPSEwLGUucmVnaXN0ZXIoaS5yZW1vdGVQcm92aWRlckRhdGFTdHJlYW1JZCxoKSxlLnJlZ2lzdGVyKGkucmVtb3RlU2VhcmNoQ2xvc2VTdHJlYW1JZCxDKSxlLnJlZ2lzdGVyKGkucmVtb3RlUHJvdmlkZXJEaXNwYXRjaFN0cmVhbUlkLGcpLGUuYWRkRGlzY29ubmVjdGlvbkxpc3RlbmVyKHYpKX0odCksdC5kaXNwYXRjaChpLnJlbW90ZVByb3ZpZGVyUmVnaXN0cmF0aW9uU3RyZWFtSWQse2lkOmUuaWQsdGl0bGU6ZS50aXRsZSxpY29uOmUuaWNvbixjbGllbnRBUElWZXJzaW9uOnIudTAsaWRlbnRpdHk6ZmluLm1lLmlkZW50aXR5LHNjb3JlT3JkZXI6ZS5zY29yZU9yZGVyLGNvbW1hbmRDb2RlOmUuY29tbWFuZENvZGUsZGVzY3JpcHRpb246ZS5kZXNjcmlwdGlvbixoaWRkZW46ZS5oaWRkZW4sbGlzdFRpdGxlOmUubGlzdFRpdGxlLGlucHV0UGxhY2Vob2xkZXI6ZS5pbnB1dFBsYWNlaG9sZGVyLGxvZ29Vcmw6ZS5sb2dvVXJsLGRpc3BhdGNoRm9jdXNFdmVudHM6ZS5kaXNwYXRjaEZvY3VzRXZlbnRzfSl9O3ZhciB3PW4oNzU4KTtsZXQgYjtjb25zdCB4PWFzeW5jIGU9PntpZighZS5pY29uKXRocm93IG5ldyBFcnJvcihgJHtlLmlkfSBwcm92aWRlciBuZWVkcyB0byBoYXZlIGljb24gcHJvcGVydHkgZGVmaW5lZC5gKTtyZXR1cm4gYj1uZXcgUHJvbWlzZSgoYXN5bmModCxuKT0+e3RyeXtjb25zdCBuPWF3YWl0IHkoZSk7KDAsby5jaykoe2FsbG93ZWQ6ITAsY29tcG9uZW50VmVyc2lvbjpuPy53b3Jrc3BhY2VWZXJzaW9ufSksbj8ud29ya3NwYWNlVmVyc2lvbixyLnUwLHQoey4uLm4sY2xpZW50QVBJVmVyc2lvbjpyLnUwLHNldFNlYXJjaFF1ZXJ5OmFzeW5jIHQ9Pihhd2FpdCgwLGEueFopKCkpLmRpc3BhdGNoKFwic2V0LXNlYXJjaC1xdWVyeVwiLHtxdWVyeTp0LHByb3ZpZGVySUQ6ZS5pZH0pfSl9Y2F0Y2goZSl7KDAsby5jaykoe2FsbG93ZWQ6ITEscmVqZWN0aW9uQ29kZTplIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOlwidW5rbm93blwifSksbihlKX19KSksYn0sXz1hc3luYyBlPT57bS5kZWxldGVQcm92aWRlcihlKTtjb25zdCB0PWF3YWl0KDAsYS5WRCkoKTthd2FpdCB0LmRpc3BhdGNoKGkucmVtb3RlUHJvdmlkZXJEZXJlZ2lzdHJhdGlvblN0cmVhbUlkLGUpfTthc3luYyBmdW5jdGlvbiBMKCl7YXdhaXQgYjtjb25zdCBlPWF3YWl0KDAsYS54WikoKTthd2FpdCBlLmRpc3BhdGNoKFwic2hvdy1ob21lXCIsdm9pZCAwKX1hc3luYyBmdW5jdGlvbiBPKCl7YXdhaXQgYjtjb25zdCBlPWF3YWl0KDAsYS54WikoKTthd2FpdCBlLmRpc3BhdGNoKFwiaGlkZS1ob21lXCIsdm9pZCAwKX19LDI2NDooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse2xUOigpPT5kfSk7dmFyIHI9L1xcYig/OmFuP2Q/fGFbc3RdfGJlY2F1c2V8YnV0fGJ5fGVufGZvcnxpW2ZuXXxuZWl0aGVyfG5vcnxvW2Zucl18b25seXxvdmVyfHBlcnxzb3xzb21lfHRoYVt0bl18dGhlfHRvfHVwfHVwb258dnM/XFwuP3x2ZXJzdXN8dmlhfHdoZW58d2l0aHx3aXRob3V0fHlldClcXGIvaSxvPS9bXlxcczrigJPigJQtXSt8Li9nLGk9L1xccy8sYT0vLig/PVtBLVpdfFxcLi4pLyxsPS9bQS1aYS16MC05XFx1MDBDMC1cXHUwMEZGXS87ZnVuY3Rpb24gcyhlKXtmb3IodmFyIHQsbj1cIlwiO251bGwhPT0odD1vLmV4ZWMoZSkpOyl7dmFyIHM9dFswXSxjPXQuaW5kZXg7YS50ZXN0KHMpfHxyLnRlc3QocykmJjAhPT1jJiZjK3MubGVuZ3RoIT09ZS5sZW5ndGh8fFwiOlwiPT09ZS5jaGFyQXQoYytzLmxlbmd0aCkmJiFpLnRlc3QoZS5jaGFyQXQoYytzLmxlbmd0aCsxKSk/bis9czpuKz1zLnJlcGxhY2UobCwoZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9VcHBlckNhc2UoKX0pKX1yZXR1cm4gbn1jbGFzcyBjIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSx0KXtjb25zdCBuPXMoZSk7c3VwZXIoYCR7bn0gUHJvdmlkZXIuICR7bn0gUHJvdmlkZXIke3Q/YCB3aXRoIGlkICR7dH1gOlwiXCJ9IGlzIG5vdCBjdXJyZW50bHkgcmVnaXN0ZXJlZC5gKX19Y2xhc3MgdSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCl7Y29uc3Qgbj1zKGUpO3N1cGVyKGAke259IFByb3ZpZGVyLiAke259IFByb3ZpZGVyJHt0P2Agd2l0aCBpZCAke3R9YDpcIlwifSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuIENhbGwgXFxgZGVyZWdpc3RlclxcYCBiZWZvcmUgcmVnaXN0ZXJpbmcgYWdhaW4uYCl9fWNsYXNzIGYgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHQpe2NvbnN0IG49cyhlKTtzdXBlcihgRmFpbGVkIHRvIGdldCAke259IFByb3ZpZGVyLiAke259IFByb3ZpZGVyIHdpdGggaWQgJHt0fSBpcyBub3QgY3VycmVudGx5IHJlZ2lzdGVyZWQuYCl9fWNsYXNzIGR7Y29uc3RydWN0b3IoZSl7dGhpcy5wcm92aWRlcnNNYXA9bmV3IE1hcCx0aGlzLnByb3ZpZGVyVHlwZT1lfWFzc2VydE5vdEFscmVhZHlSZWdpc3RlcmVkKGUpe2lmKHRoaXMuaGFzUHJvdmlkZXIoZSkpdGhyb3cgbmV3IHUodGhpcy5wcm92aWRlclR5cGUsZSl9YXNzZXJ0UmVnaXN0ZXJlZChlKXtpZighdGhpcy5oYXNQcm92aWRlcihlKSl0aHJvdyBuZXcgYyh0aGlzLnByb3ZpZGVyVHlwZSxlKX1nZXRQcm92aWRlcihlKXtyZXR1cm4gdGhpcy5wcm92aWRlcnNNYXAuZ2V0KGUpfWhhc1Byb3ZpZGVyKGUpe3JldHVybiB0aGlzLnByb3ZpZGVyc01hcC5oYXMoZSl9c2V0UHJvdmlkZXIoZSl7dGhpcy5wcm92aWRlcnNNYXAuc2V0KGUuaWQsZSl9ZGVsZXRlUHJvdmlkZXIoZSl7dGhpcy5wcm92aWRlcnNNYXAuZGVsZXRlKGUpfWdldFByb3ZpZGVyT3JGYWlsKGUpe2NvbnN0IHQ9dGhpcy5nZXRQcm92aWRlcihlKTtpZighdCl0aHJvdyBuZXcgZih0aGlzLnByb3ZpZGVyVHlwZSxlKTtyZXR1cm4gdH1jbGVhclByb3ZpZGVycygpe3RoaXMucHJvdmlkZXJzTWFwLmNsZWFyKCl9fX0sMjIyOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcixvLGk7bi5kKHQse3A6KCk9Pm8sdzooKT0+aX0pLGZ1bmN0aW9uKGUpe2UuRmV0Y2hpbmc9XCJmZXRjaGluZ1wiLGUuRmV0Y2hlZD1cImZldGNoZWRcIixlLkNvbXBsZXRlPVwiY29tcGxldGVcIn0ocnx8KHI9e30pKSxmdW5jdGlvbihlKXtlLlVzZXJBY3Rpb249XCJ1c2VyLWFjdGlvblwiLGUuRm9jdXNDaGFuZ2U9XCJmb2N1cy1jaGFuZ2VcIixlLlJlbG9hZD1cInJlbG9hZFwifShvfHwobz17fSkpLGZ1bmN0aW9uKGUpe2UuQWN0aXZlPVwiYWN0aXZlXCIsZS5EZWZhdWx0PVwiZGVmYXVsdFwifShpfHwoaT17fSkpfSw0Mjc6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByO24uZCh0LHt2OigpPT5yfSksZnVuY3Rpb24oZSl7ZS5BY3Rpb25CdXR0b249XCJBY3Rpb25CdXR0b25cIixlLkRyb3Bkb3duQnV0dG9uPVwiRHJvcGRvd25CdXR0b25cIn0ocnx8KHI9e30pKX0sNzU4OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcixvLGk7bi5kKHQse1B0OigpPT5yLGVsOigpPT5pLHlXOigpPT5vfSksZnVuY3Rpb24oZSl7ZS5TdWdnZXN0aW9uPVwic3VnZ2VzdGlvblwifShyfHwocj17fSkpLGZ1bmN0aW9uKGUpe2UuQ29udGFjdD1cIkNvbnRhY3RcIixlLkN1c3RvbT1cIkN1c3RvbVwiLGUuTGlzdD1cIkxpc3RcIixlLlBsYWluPVwiUGxhaW5cIixlLlNpbXBsZVRleHQ9XCJTaW1wbGVUZXh0XCIsZS5Mb2FkaW5nPVwiTG9hZGluZ1wiLGUuRXJyb3I9XCJFcnJvclwifShvfHwobz17fSkpLGZ1bmN0aW9uKGUpe2UuTXVsdGlTZWxlY3Q9XCJNdWx0aVNlbGVjdFwifShpfHwoaT17fSkpfSw1NjQ6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24oMjIyKSxuKDc1OCksbigxMTQpLG4oMTA5KSxuKDQyNyl9LDExNDooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHIsbztuLmQodCx7TDooKT0+cixUOigpPT5vfSksZnVuY3Rpb24oZSl7ZS5TbmFwc2hvdD1cInNuYXBzaG90XCIsZS5NYW5pZmVzdD1cIm1hbmlmZXN0XCIsZS5WaWV3PVwidmlld1wiLGUuRXh0ZXJuYWw9XCJleHRlcm5hbFwifShyfHwocj17fSkpLGZ1bmN0aW9uKGUpe2UuTGFuZGluZ1BhZ2U9XCJsYW5kaW5nUGFnZVwiLGUuQXBwR3JpZD1cImFwcEdyaWRcIn0ob3x8KG89e30pKX0sMTA5OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7R286KCk9Pm8sWko6KCk9PmEsYkk6KCk9PmkscDY6KCk9PnJ9KTtjb25zdCByPXtDb250YWluZXI6XCJDb250YWluZXJcIixCdXR0b246XCJCdXR0b25cIn0sbz17VGV4dDpcIlRleHRcIixJbWFnZTpcIkltYWdlXCIsTGlzdDpcIkxpc3RcIn0saT17Li4uciwuLi5vfTt2YXIgYTshZnVuY3Rpb24oZSl7ZS5QcmltYXJ5PVwicHJpbWFyeVwiLGUuU2Vjb25kYXJ5PVwic2Vjb25kYXJ5XCIsZS5UZXh0T25seT1cInRleHRPbmx5XCJ9KGF8fChhPXt9KSl9LDUyODooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLG4uZCh0LHtBcHBNYW5pZmVzdFR5cGU6KCk9PmkuTCxTdG9yZWZyb250VGVtcGxhdGU6KCk9PmkuVCxkZXJlZ2lzdGVyOigpPT52LGhpZGU6KCk9PmcscmVnaXN0ZXI6KCk9Pmgsc2hvdzooKT0+Q30pO3ZhciByPW4oNzcyKSxvPW4oMTUwKSxpPW4oMTE0KSxhPW4oNjc4KSxsPW4oNDM4KSxzPW4oMjY0KTtsZXQgYz0hMTthc3luYyBmdW5jdGlvbiB1KGUsdCxuKXtjb25zdCByPWF3YWl0KDAsby5EbSkoKTt0cnl7cmV0dXJuIGF3YWl0IHIuZGlzcGF0Y2goZS5hY3Rpb24sZS5wYXlsb2FkKX1jYXRjaChvKXtpZihvIGluc3RhbmNlb2YgRXJyb3ImJi0xIT09by50b1N0cmluZygpLmluZGV4T2YoZS5hY3Rpb24pKXJldHVybiBjfHxjb25zb2xlLndhcm4oXCJZb3UgYXJlIHVzaW5nIGEgbmV3ZXIgdmVyc2lvbiBvZiB0aGUgV29ya3NwYWNlIGNsaWVudCBsaWJyYXJ5IHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudGx5IHJ1bm5pbmcgd29ya3NwYWNlIHByb3ZpZGVyLiBQbGVhc2UgdXBncmFkZSB0aGUgV29ya3NwYWNlIHRvIHZlcnNpb24gOS4wIG9yIGxhdGVyLlwiKSxjPSEwLGF3YWl0IHIuZGlzcGF0Y2godC5hY3Rpb24sdC5wYXlsb2FkKSxuO3Rocm93IG99fWNvbnN0IGY9bmV3IHMubFQoXCJzdG9yZWZyb250XCIpLGQ9YXN5bmMgZT0+e2F3YWl0KDAsbC5IaCkoZmluLm1lLmlkZW50aXR5KTtjb25zdCB0PWF3YWl0KDAsby54WikoKTtyZXR1cm4gZi5hc3NlcnROb3RBbHJlYWR5UmVnaXN0ZXJlZChlLmlkKSxmLnNldFByb3ZpZGVyKGUpLChlPT57ZS5zdG9yZWZyb250Q2hhbm5lbEFjdGlvbnNSZWdpc3RlcmVkfHwoZS5zdG9yZWZyb250Q2hhbm5lbEFjdGlvbnNSZWdpc3RlcmVkPSEwLGUucmVnaXN0ZXIoXCJnZXQtc3RvcmVmcm9udC1wcm92aWRlci1hcHBzXCIsKGU9PmYuZ2V0UHJvdmlkZXJPckZhaWwoZSkuZ2V0QXBwcygpKSksZS5yZWdpc3RlcihcImdldC1zdG9yZWZyb250LXByb3ZpZGVyLWZvb3RlclwiLChlPT5mLmdldFByb3ZpZGVyT3JGYWlsKGUpLmdldEZvb3RlcigpKSksZS5yZWdpc3RlcihcImdldC1zdG9yZWZyb250LXByb3ZpZGVyLWxhbmRpbmctcGFnZVwiLChlPT5mLmdldFByb3ZpZGVyT3JGYWlsKGUpLmdldExhbmRpbmdQYWdlKCkpKSxlLnJlZ2lzdGVyKFwiZ2V0LXN0b3JlZnJvbnQtcHJvdmlkZXItbmF2aWdhdGlvblwiLChlPT5mLmdldFByb3ZpZGVyT3JGYWlsKGUpLmdldE5hdmlnYXRpb24oKSkpLGUucmVnaXN0ZXIoXCJsYXVuY2gtc3RvcmVmcm9udC1wcm92aWRlci1hcHBcIiwoKHtpZDplLGFwcDp0fSk9PmYuZ2V0UHJvdmlkZXJPckZhaWwoZSkubGF1bmNoQXBwKHQpKSkpfSkodCksZS5jbGllbnRBUElWZXJzaW9uPWEudTAsdSh7YWN0aW9uOlwicmVnaXN0ZXItcHJvdmlkZXJcIixwYXlsb2FkOntwcm92aWRlclR5cGU6XCJzdG9yZWZyb250XCIsaW5mbzplfX0se2FjdGlvbjpcInJlZ2lzdGVyLXN0b3JlZnJvbnQtcHJvdmlkZXJcIixwYXlsb2FkOmV9LHt3b3Jrc3BhY2VWZXJzaW9uOlwidW5rbm93blwifSl9O2xldCBwO2NvbnN0IGg9ZT0+KHA9bmV3IFByb21pc2UoKGFzeW5jKHQsbik9Pnt0cnl7Y29uc3Qgbj1hd2FpdCBkKGUpOygwLHIuZDkpKHthbGxvd2VkOiEwLGNvbXBvbmVudFZlcnNpb246bj8ud29ya3NwYWNlVmVyc2lvbn0pLG4/LndvcmtzcGFjZVZlcnNpb24sYS51MCx0KHtjbGllbnRBUElWZXJzaW9uOmEudTAsd29ya3NwYWNlVmVyc2lvbjpuPy53b3Jrc3BhY2VWZXJzaW9uPz9cIlwiLHVwZGF0ZUFwcENhcmRCdXR0b25zOmFzeW5jIHQ9Pntjb25zdCBuPWF3YWl0KDAsby5YbCkoKTthd2FpdCBuLmRpc3BhdGNoKFwidXBkYXRlLWFwcC1jYXJkLWJ1dHRvbi1jb25maWdcIix7Li4udCxpZDplLmlkLHRpdGxlOmUudGl0bGUsaWNvbjplLmljb24scGxhdGZvcm1JZGVudGl0eTpmaW4ubWUuaWRlbnRpdHl9KX19KX1jYXRjaChlKXsoMCxyLmQ5KSh7YWxsb3dlZDohMSxyZWplY3Rpb25Db2RlOmUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6XCJ1bmtub3duXCJ9KSxuKGUpfX0pKSxwKSx2PWFzeW5jIGU9Pihhd2FpdCBwLGYuYXNzZXJ0UmVnaXN0ZXJlZChlKSxmLmRlbGV0ZVByb3ZpZGVyKGUpLGF3YWl0KDAsby5hQikoKSx1KHthY3Rpb246XCJkZXJlZ2lzdGVyLXByb3ZpZGVyXCIscGF5bG9hZDp7cHJvdmlkZXJUeXBlOlwic3RvcmVmcm9udFwiLGlkOmV9fSx7YWN0aW9uOlwiZGVyZWdpc3Rlci1zdG9yZWZyb250LXByb3ZpZGVyXCIscGF5bG9hZDplfSkpLGc9YXN5bmMoKT0+KGF3YWl0IHAsYXdhaXQoMCxvLmFCKSgpLHUoe2FjdGlvbjpcImhpZGUtcHJvdmlkZXItd2luZG93XCIscGF5bG9hZDp7cHJvdmlkZXJUeXBlOlwic3RvcmVmcm9udFwifX0se2FjdGlvbjpcImhpZGUtc3RvcmVmcm9udFwifSkpLEM9YXN5bmMoKT0+KGF3YWl0IHAsYXdhaXQoMCxvLmFCKSgpLHUoe2FjdGlvbjpcInNob3ctcHJvdmlkZXItd2luZG93XCIscGF5bG9hZDp7cHJvdmlkZXJUeXBlOlwic3RvcmVmcm9udFwifX0se2FjdGlvbjpcInNob3ctc3RvcmVmcm9udFwifSkpfSw0MjA6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtoZDooKT0+b30pO24oMzExKSxuKDkxMik7dmFyIHI9bigxNTApO2FzeW5jIGZ1bmN0aW9uIG8oKXtyZXR1cm4oYXdhaXQoMCxyLkRtKSgpKS5kaXNwYXRjaChcImdldC1sZWdhY3ktcGFnZXNcIix2b2lkIDApfX0sNDk1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcjshZnVuY3Rpb24oZSl7ZS5MZWZ0PVwiTGVmdFwiLGUuUmlnaHQ9XCJSaWdodFwiLGUuVG9wPVwiVG9wXCIsZS5Cb3R0b209XCJCb3R0b21cIn0ocnx8KHI9e30pKX0sMTI3OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7RG06KCk9PmEseXo6KCk9PmN9KTt2YXIgcj1uKDExNyk7bigxMjEpO2NvbnN0IG89ZT0+YF9fYnJvd3Nlcl93aW5kb3dfXy0ke2UudXVpZH0tJHtlLm5hbWV9YCxpPW5ldyBNYXAsYT1lPT57Y29uc3QgdD1vKGUpO3JldHVybiBpLmhhcyh0KXx8aS5zZXQodCwoMCxyLlopKHQpKSxpLmdldCh0KSgpfTt2YXIgbCxzOyFmdW5jdGlvbihlKXtlLkNsb3NlQnJvd3NlcldpbmRvdz1cImNsb3NlLWJyb3dzZXItd2luZG93XCIsZS5RdWl0UGxhdGZvcm09XCJxdWl0LXBsYXRmb3JtXCIsZS5DbG9zZVBhZ2U9XCJjbG9zZS1wYWdlXCIsZS5BZGRUb0NoYW5uZWw9XCJhZGQtdG8tY2hhbm5lbFwiLGUuUmVtb3ZlRnJvbUNoYW5uZWw9XCJyZW1vdmUtZnJvbS1jaGFubmVsXCIsZS5PcGVuU2F2ZU1vZGFsSW50ZXJuYWw9XCJvcGVuLXNhdmUtbW9kYWwtaW50ZXJuYWxcIixlLkR1cGxpY2F0ZVBhZ2U9XCJkdXBsaWNhdGUtcGFnZVwiLGUuU2V0U2VsZWN0ZWRTY2hlbWU9XCJzZXQtc2VsZWN0ZWQtc2NoZW1lXCJ9KGx8fChsPXt9KSksZnVuY3Rpb24oZSl7ZS5HZXRQYWdlcz1cImdldC1wYWdlc1wiLGUuR2V0QWN0aXZlUGFnZUZvcldpbmRvdz1cImdldC1hY3RpdmUtcGFnZS1mb3Itd2luZG93XCIsZS5BdHRhY2hQYWdlc1RvV2luZG93PVwiYXR0YWNoLXBhZ2VzLXRvLXdpbmRvd1wiLGUuRGV0YWNoUGFnZXNGcm9tV2luZG93PVwiZGV0YWNoLXBhZ2VzLWZyb20td2luZG93XCIsZS5TZXRBY3RpdmVQYWdlRm9yV2luZG93PVwic2V0LWFjdGl2ZS1wYWdlLWZvci13aW5kb3dcIixlLlJlbmFtZVBhZ2U9XCJyZW5hbWUtcGFnZVwiLGUuUmVvcmRlclBhZ2VzRm9yV2luZG93PVwicmVvcmRlci1wYWdlcy1mb3Itd2luZG93XCIsZS5VcGRhdGVQYWdlRm9yV2luZG93PVwidXBkYXRlLXBhZ2UtZm9yLXdpbmRvd1wiLGUuVXBkYXRlUGFnZXNXaW5kb3dPcHRpb25zPVwidXBkYXRlLXBhZ2VzLXdpbmRvdy1vcHRpb25zXCIsZS5Jc0RldGFjaGluZ1BhZ2VzPVwiaXMtZGV0YWNoaW5nLXBhZ2VzXCIsZS5Jc0FjdGl2ZVBhZ2VDaGFuZ2luZz1cImlzLWFjdGl2ZS1wYWdlLWNoYW5naW5nXCJ9KHN8fChzPXt9KSk7Y29uc3QgYz17Li4ubCwuLi5zfX0sNDM4OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcjtuLmQodCx7SGg6KCk9Pml9KSxmdW5jdGlvbihlKXtlLkxhdW5jaEFwcD1cImxhdW5jaEFwcFwiLGUuU2F2ZVBhZ2U9XCJzYXZlUGFnZVwiLGUuR2V0U2F2ZWRQYWdlPVwiZ2V0U2F2ZWRQYWdlXCIsZS5DcmVhdGVTYXZlZFBhZ2U9XCJjcmVhdGVTYXZlZFBhZ2VcIixlLlVwZGF0ZVNhdmVkUGFnZT1cInVwZGF0ZVNhdmVkUGFnZVwiLGUuRGVsZXRlU2F2ZWRQYWdlPVwiZGVsZXRlU2F2ZWRQYWdlXCIsZS5HZXRTYXZlZFBhZ2VzPVwiZ2V0U2F2ZWRQYWdlc1wiLGUuQ3JlYXRlU2F2ZWRQYWdlSW50ZXJuYWw9XCJjcmVhdGVTYXZlZFBhZ2VJbnRlcm5hbFwiLGUuVXBkYXRlU2F2ZWRQYWdlSW50ZXJuYWw9XCJ1cGRhdGVTYXZlZFBhZ2VJbnRlcm5hbFwiLGUuRGVsZXRlU2F2ZWRQYWdlSW50ZXJuYWw9XCJkZWxldGVTYXZlZFBhZ2VJbnRlcm5hbFwiLGUuU2hhcmVQYWdlPVwic2hhcmVQYWdlXCIsZS5VcGRhdGVQYWdlRm9yV2luZG93PVwidXBkYXRlUGFnZUZvcldpbmRvd1wiLGUuQXR0YWNoUGFnZXNUb1dpbmRvdz1cImF0dGFjaFBhZ2VzVG9XaW5kb3dcIixlLkRldGFjaFBhZ2VzRnJvbVdpbmRvdz1cImRldGFjaFBhZ2VzRnJvbVdpbmRvd1wiLGUuUmVvcmRlclBhZ2VzRm9yV2luZG93PVwicmVvcmRlclBhZ2VzRm9yV2luZG93XCIsZS5TZXRBY3RpdmVQYWdlPVwic2V0QWN0aXZlUGFnZVwiLGUuR2V0QWxsQXR0YWNoZWRQYWdlcz1cImdldEFsbEF0dGFjaGVkUGFnZXNcIixlLkdldEFjdGl2ZVBhZ2VJZEZvcldpbmRvdz1cImdldEFjdGl2ZVBhZ2VJZEZvcldpbmRvd1wiLGUuR2V0UGFnZXNGb3JXaW5kb3c9XCJnZXRQYWdlc0ZvcldpbmRvd1wiLGUuR2V0UGFnZUZvcldpbmRvdz1cImdldFBhZ2VGb3JXaW5kb3dcIixlLkdldFNhdmVkUGFnZU1ldGFkYXRhPVwiZ2V0U2F2ZWRQYWdlTWV0YWRhdGFcIixlLkdldFVuaXF1ZVBhZ2VUaXRsZT1cImdldFVuaXF1ZVBhZ2VUaXRsZVwiLGUuR2V0TGFzdEZvY3VzZWRCcm93c2VyV2luZG93PVwiZ2V0TGFzdEZvY3VzZWRCcm93c2VyV2luZG93XCIsZS5HZXRUaGVtZXM9XCJnZXRUaGVtZXNcIixlLkdldFNlbGVjdGVkU2NoZW1lPVwiZ2V0U2VsZWN0ZWRTY2hlbWVcIixlLlNldFNlbGVjdGVkU2NoZW1lPVwic2V0U2VsZWN0ZWRTY2hlbWVcIixlLk9wZW5HbG9iYWxDb250ZXh0TWVudUludGVybmFsPVwib3Blbkdsb2JhbENvbnRleHRNZW51SW50ZXJuYWxcIixlLk9wZW5WaWV3VGFiQ29udGV4dE1lbnVJbnRlcm5hbD1cIm9wZW5WaWV3VGFiQ29udGV4dE1lbnVJbnRlcm5hbFwiLGUuT3BlblBhZ2VUYWJDb250ZXh0TWVudUludGVybmFsPVwib3BlblBhZ2VUYWJDb250ZXh0TWVudUludGVybmFsXCIsZS5PcGVuU2F2ZUJ1dHRvbkNvbnRleHRNZW51SW50ZXJuYWw9XCJvcGVuU2F2ZUJ1dHRvbkNvbnRleHRNZW51SW50ZXJuYWxcIixlLkludm9rZUN1c3RvbUFjdGlvbkludGVybmFsPVwiaW52b2tlQ3VzdG9tQWN0aW9uSW50ZXJuYWxcIixlLlJlcXVlc3RRdWl0UGxhdGZvcm1EaWFsb2dJbnRlcm5hbD1cInJlcXVlc3RRdWl0UGxhdGZvcm1EaWFsb2dJbnRlcm5hbFwiLGUuR2V0U2F2ZWRXb3Jrc3BhY2U9XCJnZXRTYXZlZFdvcmtzcGFjZVwiLGUuQ3JlYXRlU2F2ZWRXb3Jrc3BhY2U9XCJjcmVhdGVTYXZlZFdvcmtzcGFjZVwiLGUuVXBkYXRlU2F2ZWRXb3Jrc3BhY2U9XCJ1cGRhdGVTYXZlZFdvcmtzcGFjZVwiLGUuRGVsZXRlU2F2ZWRXb3Jrc3BhY2U9XCJkZWxldGVTYXZlZFdvcmtzcGFjZVwiLGUuR2V0U2F2ZWRXb3Jrc3BhY2VzPVwiZ2V0U2F2ZWRXb3Jrc3BhY2VzXCIsZS5TYXZlV29ya3NwYWNlPVwic2F2ZVdvcmtzcGFjZVwiLGUuR2V0Q3VycmVudFdvcmtzcGFjZT1cImdldEN1cnJlbnRXb3Jrc3BhY2VcIixlLkFwcGx5V29ya3NwYWNlPVwiYXBwbHlXb3Jrc3BhY2VcIixlLlNldEFjdGl2ZVdvcmtzcGFjZT1cInNldEFjdGl2ZVdvcmtzcGFjZVwiLGUuSXNCcm93c2VySW5pdGlhbGl6ZWQ9XCJpc0Jyb3dzZXJJbml0aWFsaXplZFwiLGUuQW5hbHl0aWNzPVwiYW5hbHl0aWNzSW50ZXJuYWxcIixlLkdldERvY2tQcm92aWRlckNvbmZpZz1cImdldERvY2tQcm92aWRlckNvbmZpZ1wiLGUuU2F2ZURvY2tQcm92aWRlckNvbmZpZz1cInNhdmVEb2NrUHJvdmlkZXJDb25maWdcIn0ocnx8KHI9e30pKTtjb25zdCBvPWFzeW5jIGU9PmZpbi5QbGF0Zm9ybS53cmFwU3luYyhlKS5nZXRDbGllbnQoKSxpPWFzeW5jIGU9Pntjb25zdCB0PWF3YWl0IG8oZSksbj1cIlRhcmdldCBpcyBub3QgYSBXb3Jrc3BhY2UgUGxhdGZvcm0uIFRhcmdldCBtdXN0IGNhbGwgV29ya3NwYWNlUGxhdGZvcm0uaW5pdFwiO2xldCByO3RyeXtyPWF3YWl0IHQuZGlzcGF0Y2goXCJpc1dvcmtzcGFjZVBsYXRmb3JtXCIpfWNhdGNoKGUpe3Rocm93IG5ldyBFcnJvcihuKX1pZihcImJvb2xlYW5cIj09dHlwZW9mIHImJnIpcmV0dXJuIGNvbnNvbGUud2FybihcIllvdSBhcmUgdXNpbmcgYW4gb2xkZXIgdmVyc2lvbiBvZiB0aGUgd29ya3NwYWNlIHBsYXRmb3JtLiBQbGVhc2UgdXBkYXRlIHlvdXIgd29ya3NwYWNlIHBsYXRmb3JtLlwiKSxyO2lmKFwib2JqZWN0XCI9PXR5cGVvZiByJiZyLmlzV29ya3NwYWNlUGxhdGZvcm0pcmV0dXJuIHI7dGhyb3cgbmV3IEVycm9yKG4pfX0sMTUwOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7RG06KCk9PnMsVkQ6KCk9PnUsWGw6KCk9PnAsYUI6KCk9PmQseFo6KCk9Pmh9KTt2YXIgcj1uKDExNyksbz1uKDY3OCksaT1uKDEyMSksYT1uKDQ2KTtjb25zdCBsPSgwLHIuWikoXCJfX29mX3dvcmtzcGFjZV9wcm90b2NvbF9fXCIpLHM9bCxjPWwsdT0oMCxyLlopKGEuUXgpLGY9ZT0+e2NvbnN0IHQ9bmV3IFVSTChlKTtyZXR1cm4gdC5zZWFyY2hQYXJhbXMuYXBwZW5kKFwiaXNMYXVuY2hlZFZpYUxpYlwiLFwidHJ1ZVwiKSx0LnRvU3RyaW5nKCl9LGQ9YXN5bmMoKT0+e2lmKCFhd2FpdCgwLGkuSlYpKGkuaVcpKXtpZihvLlpLfHwtMT09PW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIldpblwiKSlyZXR1cm4gdm9pZCBhd2FpdCBmaW4uQXBwbGljYXRpb24uc3RhcnRGcm9tTWFuaWZlc3QoZihvLmFXKSk7YXdhaXQgZmluLlN5c3RlbS5vcGVuVXJsV2l0aEJyb3dzZXIoZihvLkdYKSl9fSxwPWFzeW5jKCk9Pihhd2FpdCBkKCkscygpKSxoPWFzeW5jKCk9Pihhd2FpdCBkKCksYygpKX0sODI6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtSODooKT0+YSxSUjooKT0+byxYXzooKT0+aX0pO3ZhciByPW4oMTUwKTtjb25zdCBvPSh7cGxhdGZvcm1JZGVudGl0eTplLGlkOnQ9XCJcIn0pPT5gJHtlLm5hbWV9LSR7ZS51dWlkfS0ke3R9YCxpPWFzeW5jIGU9Pihhd2FpdCgwLHIuRG0pKCkpLmRpc3BhdGNoKFwic2hvdy1wcm92aWRlci13aW5kb3dcIix7cHJvdmlkZXJUeXBlOmV9KSxhPWFzeW5jIGU9Pihhd2FpdCgwLHIuRG0pKCkpLmRpc3BhdGNoKFwiaGlkZS1wcm92aWRlci13aW5kb3dcIix7cHJvdmlkZXJUeXBlOmV9KX0sNDY6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtReDooKT0+byx3MTooKT0+YX0pO3ZhciByPW4oMTIxKTsoMCxuKDgyKS5SUikoe2lkOlwiaG9tZS1jb21tYW5kc1wiLHBsYXRmb3JtSWRlbnRpdHk6ci5PSX0pO2NvbnN0IG89XCJfX3NlYXJjaC1vcGVuZmluLWJyb3dzZXItaG9tZS10b3BpY19fXCI7dmFyIGksYTshZnVuY3Rpb24oZSl7ZS5GZXRjaGluZz1cImZldGNoaW5nXCIsZS5GZXRjaGVkPVwiZmV0Y2hlZFwiLGUuQ29tcGxldGU9XCJjb21wbGV0ZVwifShpfHwoaT17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Jbml0aWFsPTBdPVwiSW5pdGlhbFwiLGVbZS5PcGVuPTFdPVwiT3BlblwiLGVbZS5DbG9zZT0yXT1cIkNsb3NlXCJ9KGF8fChhPXt9KSl9LDY1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDMwNCk7bigzMzcpLG4oMTAwKSxuKDE1MCk7Y29uc3Qgbz17W3IuUGFsZXR0ZS5icmFuZFByaW1hcnldOlwiIzBBNzZEM1wiLFtyLlBhbGV0dGUuc3RhdHVzU3VjY2Vzc106ci5Db2xvci5mdW5jdGlvbmFsMSxbci5QYWxldHRlLnN0YXR1c1dhcm5pbmddOnIuQ29sb3IuZnVuY3Rpb25hbDEwLFtyLlBhbGV0dGUuc3RhdHVzQ3JpdGljYWxdOnIuQ29sb3IuZnVuY3Rpb25hbDcsW3IuUGFsZXR0ZS5zdGF0dXNBY3RpdmVdOnIuQ29sb3IuZnVuY3Rpb25hbDMsW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDFdOlwiIzBBNzZEM1wiLFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQyXTpcIiMwMDAwMDBcIixbci5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kM106XCIjMDAwMDAwXCIsW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDRdOlwiIzAwMDAwMFwiLFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQ1XTpcIiMwMDAwMDBcIn0saT17Li4ubyxbci5QYWxldHRlLmJhY2tncm91bmQxXTpyLkNvbG9yLndoaXRlLFtyLlBhbGV0dGUuYmFja2dyb3VuZDJdOnIuQ29sb3IubGlnaHRHcmF5MSxbci5QYWxldHRlLmJhY2tncm91bmQzXTpyLkNvbG9yLmxpZ2h0R3JheTIsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNF06ci5Db2xvci5saWdodEdyYXkzLFtyLlBhbGV0dGUuYmFja2dyb3VuZDVdOnIuQ29sb3IubGlnaHRHcmF5NCxbci5QYWxldHRlLmJhY2tncm91bmQ2XTpyLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS5icmFuZFNlY29uZGFyeV06ci5Db2xvci5kYXJrR3JheTUsW3IuUGFsZXR0ZS5pbnB1dEJhY2tncm91bmRdOnIuQ29sb3IubGlnaHRHcmF5Myxbci5QYWxldHRlLmlucHV0Q29sb3JdOnIuQ29sb3IuZGFya0dyYXk1LFtyLlBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcl06ci5Db2xvci5kYXJrR3JheTIsW3IuUGFsZXR0ZS5pbnB1dERpc2FibGVkXTpyLkNvbG9yLm5ldXRyYWxHcmF5LFtyLlBhbGV0dGUuaW5wdXRGb2N1c2VkXTpyLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS5pbnB1dEJvcmRlcl06ci5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLnRleHREZWZhdWx0XTpyLkNvbG9yLmRhcmtHcmF5NSxbci5QYWxldHRlLnRleHRIZWxwXTpyLkNvbG9yLmRhcmtHcmF5Myxbci5QYWxldHRlLnRleHRJbmFjdGl2ZV06ci5Db2xvci5uZXV0cmFsR3JheX0sYT17Li4ubyxbci5QYWxldHRlLmJhY2tncm91bmQxXTpyLkNvbG9yLmRhcmtHcmF5Nixbci5QYWxldHRlLmJhY2tncm91bmQyXTpyLkNvbG9yLmRhcmtHcmF5NSxbci5QYWxldHRlLmJhY2tncm91bmQzXTpyLkNvbG9yLmRhcmtHcmF5NCxbci5QYWxldHRlLmJhY2tncm91bmQ0XTpyLkNvbG9yLmRhcmtHcmF5Myxbci5QYWxldHRlLmJhY2tncm91bmQ1XTpyLkNvbG9yLmRhcmtHcmF5Mixbci5QYWxldHRlLmJhY2tncm91bmQ2XTpyLkNvbG9yLmRhcmtHcmF5MSxbci5QYWxldHRlLmJyYW5kU2Vjb25kYXJ5XTpyLkNvbG9yLmRhcmtHcmF5Mixbci5QYWxldHRlLmlucHV0QmFja2dyb3VuZF06ci5Db2xvci5kYXJrR3JheTEsW3IuUGFsZXR0ZS5pbnB1dENvbG9yXTpyLkNvbG9yLndoaXRlLFtyLlBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcl06ci5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUuaW5wdXREaXNhYmxlZF06ci5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLmlucHV0Rm9jdXNlZF06ci5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUuaW5wdXRCb3JkZXJdOnIuQ29sb3IubmV1dHJhbEdyYXksW3IuUGFsZXR0ZS50ZXh0RGVmYXVsdF06ci5Db2xvci53aGl0ZSxbci5QYWxldHRlLnRleHRIZWxwXTpyLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS50ZXh0SW5hY3RpdmVdOnIuQ29sb3IubmV1dHJhbEdyYXl9O3IuQ29sb3IuZGFya0dyYXk1LHIuQ29sb3IuZGFya0dyYXk1LHIuQ29sb3IuZGFya0dyYXkyLHIuQ29sb3IuZGFya0dyYXk1fSw4MDY6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtEOTooKT0+cyxxOTooKT0+cn0pO3ZhciByLG8saT1uKDY3OCk7IWZ1bmN0aW9uKGUpe2UuV29ya3NwYWNlPVwib3BlbmZpbi13b3Jrc3BhY2VcIixlLk9sZFdvcmtzcGFjZT1cIm9wZW5maW4tYnJvd3NlclwifShyfHwocj17fSkpLGZ1bmN0aW9uKGUpe2UuRmluUHJvdG9jb2w9XCJmaW4tcHJvdG9jb2xcIn0ob3x8KG89e30pKTtjb25zdCBhPXt1dWlkOmkuQUJ9LGw9KHIuV29ya3NwYWNlLGU9PntpZighaS5zUyl0aHJvdyBuZXcgRXJyb3IoXCJnZXRBcHBsaWNhdGlvbiBjYW5ub3QgYmUgdXNlZCBpbiBhIG5vbiBPcGVuRmluIGVudi4gQXZvaWQgdXNpbmcgdGhpcyBkdXJpbmcgcHJlLXJlbmRlcmluZy5cIik7cmV0dXJuIGZpbi5BcHBsaWNhdGlvbi53cmFwU3luYyhlKX0pLHM9KCk9PmwoYSl9LDExNzooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1o6KCk9Pml9KTt2YXIgcj1uKDY3OCk7Y29uc3Qgbz1yLkF4JiZcImNvbXBsZXRlXCIhPT1kb2N1bWVudC5yZWFkeVN0YXRlJiZuZXcgUHJvbWlzZSgoZT0+ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInJlYWR5c3RhdGVjaGFuZ2VcIiwoKCk9PntcImNvbXBsZXRlXCI9PT1kb2N1bWVudC5yZWFkeVN0YXRlJiZlKCl9KSkpKTtmdW5jdGlvbiBpKGUpe2xldCB0O2NvbnN0IG49bmV3IFNldDtyZXR1cm4oKT0+e2lmKCFyLnNTKXRocm93IG5ldyBFcnJvcihcImdldENoYW5uZWxDbGllbnQgY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBhbiBPcGVuRmluIGVudi4gQXZvaWQgdXNpbmcgdGhpcyBtZXRob2QgZHVyaW5nIHByZS1yZW5kZXJpbmcuXCIpO3JldHVybiB0fHwodD0oYXN5bmMoKT0+e2F3YWl0IG87Y29uc3QgaT17Y2xpZW50QVBJVmVyc2lvbjpyLnUwfSxhPWF3YWl0IGZpbi5JbnRlckFwcGxpY2F0aW9uQnVzLkNoYW5uZWwuY29ubmVjdChlLHtwYXlsb2FkOml9KTtyZXR1cm4gYS5vbkRpc2Nvbm5lY3Rpb24oKGFzeW5jKCk9PntuLmZvckVhY2goKGU9PmUoKSkpLG4uY2xlYXIoKSxjb25zb2xlLndhcm4oYGRpc2Nvbm5lY3RlZCBmcm9tIGNoYW5uZWwgcHJvdmlkZXIgJHtlfWApLHQ9dm9pZCAwfSkpLGF9KSgpLnRoZW4oKGU9PihlLmFkZERpc2Nvbm5lY3Rpb25MaXN0ZW5lcj1lPT57bi5hZGQoZSl9LGUpKSkuY2F0Y2goKG49Pnt0aHJvdyB0PXZvaWQgMCxuZXcgRXJyb3IoYGZhaWxlZCB0byBjb25uZWN0IHRvIGNoYW5uZWwgcHJvdmlkZXIgJHtlfTogJHtufWApfSkpKSx0fX19LDY3ODooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHI7bi5kKHQse0FCOigpPT5zLEF4OigpPT5pLEdYOigpPT5mLFpLOigpPT51LF9WOigpPT5hLGFXOigpPT5kLG9DOigpPT5jLHJ4OigpPT5oLHNTOigpPT5vLHUwOigpPT52fSksZnVuY3Rpb24oZSl7ZS5Mb2NhbD1cImxvY2FsXCIsZS5EZXY9XCJkZXZcIixlLlN0YWdpbmc9XCJzdGFnaW5nXCIsZS5Qcm9kPVwicHJvZFwifShyfHwocj17fSkpO2NvbnN0IG89XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGZpbixpPShcInVuZGVmaW5lZFwiPT10eXBlb2YgcHJvY2Vzc3x8cHJvY2Vzcy5lbnY/LkpFU1RfV09SS0VSX0lELFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cpLGE9aSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGluZGV4ZWREQixsPWk/d2luZG93Lm9yaWdpbjpyLkxvY2FsLHM9byYmZmluLm1lLnV1aWQsYz1vJiZmaW4ubWUubmFtZSx1PShvJiZmaW4ubWUuZW50aXR5VHlwZSxcInByb2RcIj09PXIuTG9jYWwpLGY9KHIuRGV2LHIuU3RhZ2luZyxyLlByb2QsXCJmaW5zOi8vc3lzdGVtLWFwcHMvd29ya3NwYWNlXCIpLGQ9XCJodHRwczovL3dvcmtzcGFjZS5vcGVuZmluLmNvL3dvcmtzcGFjZS8xNC4wLjIyL2FwcC5qc29uXCIscD1lPT5lLnN0YXJ0c1dpdGgoXCJodHRwOi8vXCIpfHxlLnN0YXJ0c1dpdGgoXCJodHRwczovL1wiKT9lOmwrZSxoPShwKFwiaHR0cHM6Ly93b3Jrc3BhY2Uub3BlbmZpbi5jby93b3Jrc3BhY2UvMTQuMC4yMlwiKSxwKFwiaHR0cHM6Ly93b3Jrc3BhY2Uub3BlbmZpbi5jby93b3Jrc3BhY2UvMTQuMC4yMlwiKSksdj0oXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFdPUktTUEFDRV9ET0NTX1BMQVRGT1JNX1VSTCYmcChXT1JLU1BBQ0VfRE9DU19QTEFURk9STV9VUkwpLFwidW5kZWZpbmVkXCIhPXR5cGVvZiBXT1JLU1BBQ0VfRE9DU19DTElFTlRfVVJMJiZwKFdPUktTUEFDRV9ET0NTX0NMSUVOVF9VUkwpLFwiMTQuMC4yMlwiKTtcInVuZGVmaW5lZFwiIT10eXBlb2YgV09SS1NQQUNFX0JVSUxEX1NIQSYmV09SS1NQQUNFX0JVSUxEX1NIQX0sMzExOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7QyQ6KCk9PnJ9KTtuKDY3OCksbigxMjEpO2NvbnN0IHI9ZT0+e2NvbnN0IHQ9W107cmV0dXJuKGUmJkFycmF5LmlzQXJyYXkoZSk/ZTpbXSkuZm9yRWFjaCgoZT0+e2lmKFwiY29tcG9uZW50XCI9PT1lLnR5cGUpcmV0dXJuIHQucHVzaChlLmNvbXBvbmVudFN0YXRlKTtjb25zdCBuPXIoZS5jb250ZW50KTt0LnB1c2goLi4ubil9KSksdH07bmV3IE1hcH0sNjE6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByO24uZCh0LHtaOigpPT5vfSksZnVuY3Rpb24oZSl7ZS5DdXJyZW50V29ya3NwYWNlSWQ9XCJjdXJyZW50V29ya3NwYWNlSWRcIixlLkxhc3RGb2N1c2VkQnJvd3NlcldpbmRvdz1cImxhc3RGb2N1c2VkQnJvd3NlcldpbmRvd1wiLGUuTWFjaGluZU5hbWU9XCJtYWNoaW5lTmFtZVwiLGUuTmV3VGFiUGFnZUxheW91dD1cIk5ld1RhYlBhZ2VMYXlvdXRcIixlLk5ld1RhYlBhZ2VTb3J0PVwiTmV3VGFiUGFnZVNvcnRcIixlLkRvY2tQb3NpdGlvbj1cIkRvY2tQb3NpdGlvblwiLGUuU2VsZWN0ZWRDb2xvclNjaGVtZT1cIlNlbGVjdGVkQ29sb3JTY2hlbWVcIixlLkhhc01vdmVkU3RvcmU9XCJIYXNNb3ZlZFN0b3JlXCJ9KHJ8fChyPXt9KSk7Y29uc3Qgbz1yfSw3Mjg6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtMOigpPT5vLHI6KCk9Pml9KTt2YXIgcj1uKDY3OCk7Y29uc3Qgbz0oZSx0KT0+e2xvY2FsU3RvcmFnZS5zZXRJdGVtKGAke3IuQUJ9LSR7ZX1gLHQpfSxpPWU9PmxvY2FsU3RvcmFnZS5nZXRJdGVtKGAke3IuQUJ9LSR7ZX1gKX0sNTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHI7bi5kKHQse1pQOigpPT5sLGRlOigpPT5pfSksZnVuY3Rpb24oZSl7ZS5Ib21lPVwiL2hvbWUvXCIsZS5Ib21lU2VhcmNoPVwiL2hvbWUvP2RlZXBsaW5rPXNlYXJjaFwiLGUuSG9tZVBhZ2VzUmVuYW1lPVwiL2hvbWUvcGFnZXMvcmVuYW1lL1wiLGUuRG9jaz1cIi9kb2NrL1wiLGUuQnJvd3Nlcj1cIi9icm93c2VyL1wiLGUuQnJvd3NlclBvcHVwTWVudT1cIi9icm93c2VyL3BvcHVwLW1lbnUvXCIsZS5Qcm92aWRlcj1cIi9wcm92aWRlci9cIixlLkJyb3dzZXJQb3B1cE1lbnVTaGFyZVBhZ2U9XCIvYnJvd3Nlci9wb3B1cC1tZW51L3NoYXJlLXBhZ2UvXCIsZS5Ccm93c2VyUG9wdXBNZW51U2F2ZU1vZGFsPVwiL2Jyb3dzZXIvcG9wdXAtbWVudS9zYXZlLW1vZGFsL1wiLGUuQnJvd3NlclBvcHVwTWVudUxheW91dHM9XCIvYnJvd3Nlci9wb3B1cC1tZW51L2xheW91dHMvbGF5b3V0cy9cIixlLkJyb3dzZXJQb3B1cE1lbnVDb2xvckxpbmtpbmc9XCIvYnJvd3Nlci9wb3B1cC1tZW51L2NvbG9yLWxpbmtpbmcvY29sb3ItbGlua2luZy9cIixlLkJyb3dzZXJJbmRpY2F0b3I9XCIvYnJvd3Nlci9pbmRpY2F0b3IvXCIsZS5SZXNwb25zZU1vZGFsPVwiL2Jyb3dzZXIvcG9wdXAtbWVudS9yZXNwb25zZS1tb2RhbC9cIixlLkRvY3M9XCIvcHJvdmlkZXIvZG9jcy9cIixlLlN0b3JlZnJvbnQ9XCIvc3RvcmVmcm9udC9cIixlLkRlcHJlY2F0ZWRBbGVydD1cIi9wcm92aWRlci9kZXByZWNhdGVkLWFsZXJ0L1wiLGUuQW5hbHl0aWNzPVwiL3Byb3ZpZGVyL2FuYWx5dGljcy9cIn0ocnx8KHI9e30pKTtjb25zdCBvPVwiL21pY3Jvc29mdC0zNjUtaW50ZWdyYXRpb24tYXNzZXRzL1wiLGk9e0ljb25PcGVuRmluTG9nbzpcIi9pY29ucy9vcGVuZmlubG9nby5zdmdcIixJY29uRmlsdGVyOlwiL2ljb25zL2ZpbHRlci5zdmdcIixMaWdodFN0b3JlZnJvbnQ6XCIvaWNvbnMvbGlnaHRzdG9yZWZyb250LnBuZ1wiLERhcmtTdG9yZWZyb250OlwiL2ljb25zL2RhcmtzdG9yZWZyb250LnBuZ1wiLENhbGxJY29uTGlnaHQ6XCIvaWNvbnMvY2FsbC1pY29uLWxpZ2h0LnN2Z1wiLENhbGxJY29uRGFyazpcIi9pY29ucy9jYWxsLWljb24tZGFyay5zdmdcIixDaGF0SWNvbkxpZ2h0OlwiL2ljb25zL2NoYXQtaWNvbi1saWdodC5zdmdcIixDaGF0SWNvbkRhcms6XCIvaWNvbnMvY2hhdC1pY29uLWRhcmsuc3ZnXCIsTWVzc2FnZUljb25MaWdodDpcIi9pY29ucy9tZXNzYWdlLWljb24tbGlnaHQuc3ZnXCIsTWVzc2FnZUljb25EYXJrOlwiL2ljb25zL21lc3NhZ2UtaWNvbi1kYXJrLnN2Z1wiLE1pY3Jvc29mdDM2NUFzc2V0czp7TWljcm9zb2Z0MzY1RG9jdW1lbnRJY29uOmAke299bWljcm9zb2Z0LTM2NS1kb2N1bWVudC1pY29uLnN2Z2AsTWljcm9zb2Z0MzY1RXhjZWxJY29uOmAke299bWljcm9zb2Z0LTM2NS1leGNlbC1pY29uLnN2Z2AsTWljcm9zb2Z0MzY1UG93ZXJwb2ludEljb246YCR7b31taWNyb3NvZnQtMzY1LXBvd2VycG9pbnQtaWNvbi5zdmdgLE1pY3Jvc29mdDM2NU91dGxvb2tJY29uOmAke299bWljcm9zb2Z0LTM2NS1vdXRsb29rLWljb24uc3ZnYCxNaWNyb3NvZnQzNjVUZWFtc0ljb246YCR7b31taWNyb3NvZnQtMzY1LXRlYW1zLWljb24uc3ZnYCxNaWNyb3NvZnQzNjVJY29uOmAke299bWljcm9zb2Z0LTM2NS1pY29uLnN2Z2AsUERGRmlsZUljb246YCR7b31wZGYtZmlsZS1pY29uLnN2Z2B9fTt2YXIgYTshZnVuY3Rpb24oZSl7ZS5TZWFyY2g9XCJzZWFyY2hcIn0oYXx8KGE9e30pKTtjb25zdCBsPXJ9LDY1MDooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse0szOigpPT5pfSk7dmFyIHI7big2NzgpOyFmdW5jdGlvbihlKXtlLkhvbWU9XCIvaG9tZVwiLGUuQnJvd3Nlcj1cIi9icm93c2VyXCIsZS5Qcm92aWRlcj1cIi9wcm92aWRlclwiLGUuU3RvcmVmcm9udD1cIi9zdG9yZWZyb250XCIsZS5Eb2NrPVwiL2RvY2tcIn0ocnx8KHI9e30pKTtjb25zdCBvPVwiL3dvcmtzcGFjZS8xNC4wLjIyXCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gbytlfX0sOTEyOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuKDMxMSksbig2MSl9LDc3MjooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1duOigpPT5CLGNrOigpPT5ILGQ5OigpPT5WfSk7dmFyIHI9big2NzgpLG89bigxMjEpLGk9bigxMDApO24oMzc4KTt2YXIgYT1uKDgwNik7dmFyIGw9big1KSxzPW4oMTI3KTtuKDQzOCk7dmFyIGM9bigzMTEpO2NvbnN0IHU9YXN5bmMoKT0+e2NvbnN0IGU9YXdhaXQoMCxvLkdQKSgpO3JldHVybihhd2FpdCBQcm9taXNlLmFsbChlLm1hcCgoYXN5bmMgZT0+e3RyeXtyZXR1cm4oYXN5bmMgZT0+e2NvbnN0IHQ9YXdhaXQoMCxzLkRtKShlKTtyZXR1cm4gYXdhaXQgdC5kaXNwYXRjaChzLnl6LkdldFBhZ2VzKX0pKGUuaWRlbnRpdHkpfWNhdGNoKHQpe0pTT04uc3RyaW5naWZ5KGUuaWRlbnRpdHkpO2NvbnN0IG49YXdhaXQgZS5nZXRPcHRpb25zKCk7cmV0dXJuIG4ud29ya3NwYWNlUGxhdGZvcm0/LnBhZ2VzfHxbXX19KSkpKS5yZWR1Y2UoKChlLHQpPT5lLmNvbmNhdCh0KSksW10pfTtuZXcgTWFwO3ZhciBmOyFmdW5jdGlvbihlKXtlLkVSUk9SPVwiZXJyb3JcIixlLlNVQ0NFU1M9XCJzdWNjZXNzXCIsZS5JTkZPPVwiaW5mb1wifShmfHwoZj17fSkpO2NvbnN0IGQ9KChlLHQpPT57Y29uc3Qgbj1lO3JldHVybiBuLndvcmtzcGFjZVBsYXRmb3JtfHwobi53b3Jrc3BhY2VQbGF0Zm9ybT17fSksbi53b3Jrc3BhY2VQbGF0Zm9ybS5faW50ZXJuYWxEZWZlclNob3dPcHRpb25zPXtzZXRBc0ZvcmVncm91bmQ6ISF0LGRlZmVyU2hvd0VuYWJsZWQ6ITAsYXV0b1Nob3c6bi53b3Jrc3BhY2VQbGF0Zm9ybT8uX2ludGVybmFsQXV0b1Nob3d8fG4ud29ya3NwYWNlUGxhdGZvcm0/Ll9pbnRlcm5hbERlZmVyU2hvd09wdGlvbnM/LmF1dG9TaG93fHx2b2lkIDA9PT1uLmF1dG9TaG93fHxuLmF1dG9TaG93fSxuLmF1dG9TaG93PSExLG59KSh7YWx3YXlzT25Ub3A6ITAsYXV0b1Nob3c6ITEsZnJhbWU6ITEscmVzaXphYmxlOiExLHNob3dUYXNrYmFySWNvbjohMX0pO3ZhciBwOyFmdW5jdGlvbihlKXtlLkxvY2tlZD1cIkxvY2tDbG9zZWRJY29uXCIsZS5VbmxvY2tlZD1cIkxvY2tPcGVuMUljb25cIn0ocHx8KHA9e30pKTshZnVuY3Rpb24oZT1kKXtjb25zdCB0PW5ldyBNYXB9KCk7dmFyIGg9big2MSksdj1uKDcyOCk7big2NTApO2NvbnN0IGc9KGUsdD0wKT0+e2xldCBuLHIsbz0hMTtjb25zdCBpPWFzeW5jIHI9Pntjb25zdCBhPWF3YWl0IGUoLi4ucik7aWYobyl7YXdhaXQgbmV3IFByb21pc2UoKGU9PnNldFRpbWVvdXQoZSx0KSkpO2NvbnN0IGU9bjtyZXR1cm4gbj12b2lkIDAsbz0hMSxpKGUpfXJldHVybiBhfTtyZXR1cm4oLi4uZSk9PihyPyhvPSEwLG49ZSk6cj1pKGUpLmNhdGNoKChlPT57dGhyb3cgY29uc29sZS5lcnJvcihcIm1ha2VEZWJvdW5jZWRGdW5jXCIsZSksZX0pKS5maW5hbGx5KCgoKT0+e3I9dm9pZCAwfSkpLHIpfTtmdW5jdGlvbiBDKGUsdCl7cmV0dXJuIGFzeW5jKG4sLi4ucik9PntlLmhhcyhuKSYmZS5nZXQobikuZm9yRWFjaCgoZT0+ZSguLi5yKSkpLHQmJmF3YWl0IHQoe2V2ZW50Om4scGF5bG9hZDpyfSl9fWZ1bmN0aW9uIG0oZSx0KXtyZXR1cm4gdCYmdCgodD0+e2NvbnN0e2V2ZW50Om4scGF5bG9hZDpyfT10O2UuaGFzKG4pJiZlLmdldChuKS5mb3JFYWNoKChlPT5lKC4uLnIpKSl9KSksKHQsbik9PntlLmhhcyh0KXx8ZS5zZXQodCxuZXcgU2V0KSxlLmdldCh0KS5hZGQobil9fWZ1bmN0aW9uIHkoZSl7cmV0dXJuKHQsbik9PntlLmhhcyh0KXx8ZS5zZXQodCxuZXcgU2V0KTtjb25zdCByPWUuZ2V0KHQpLG89KC4uLmUpPT57biguLi5lKSxyLmRlbGV0ZShvKX07ci5hZGQobyl9fWZ1bmN0aW9uIHcoZSl7cmV0dXJuKHQsbik9PntlLmhhcyh0KSYmZS5nZXQodCkuZGVsZXRlKG4pfX1uKDY1KTtvLklBLkJyb3dzZXJNZW51OyhmdW5jdGlvbihlKXtjb25zdCB0PW5ldyBNYXA7Qyh0LCh0PT5yLnNTJiZmaW4uSW50ZXJBcHBsaWNhdGlvbkJ1cy5wdWJsaXNoKGUsdCkpKSxtKHQsKHQ9PnIuc1MmJmZpbi5JbnRlckFwcGxpY2F0aW9uQnVzLnN1YnNjcmliZSh7dXVpZDpmaW4ubWUudXVpZH0sZSx0KSkpLHcodCkseSh0KX0pKFwid2luZG93Lm1lbnVcIiksZygoKCk9PigwLGEuRDkpKCkuZ2V0Q2hpbGRXaW5kb3dzKCkpLDUwMCk7bmV3IE1hcDt2YXIgYj1uKDE5OCkseD1uLm4oYik7Y29uc3QgXz1lPT5gJHtlLm5hbWV9YCxMPWFzeW5jKCk9Pntjb25zdCBlPWF3YWl0IHUoKSx0PW5ldyBTZXQ7cmV0dXJuIGUuZm9yRWFjaCgoZT0+e1suLi4oMCxjLkMkKShlLmxheW91dC5jb250ZW50KSwuLi4oZS5wYW5lbHN8fFtdKS5tYXAoKGU9PmUudmlld09wdGlvbnMpKV0uZm9yRWFjaCgoZT0+e2NvbnN0IG49XyhlKTtuJiZ0LmFkZChuKX0pKX0pKSx0fTt4KCkoKCgpPT5hc3luYyBmdW5jdGlvbigpe2NvbnN0IGU9YXdhaXQgTCgpLHQ9KDAsby5sUSkoKSxuPShhd2FpdCB0LmdldEN1cnJlbnRWaWV3cygpKS5maWx0ZXIoKCh7aWRlbnRpdHk6dH0pPT4hZS5oYXMoXyh0KSkpKTtuLmxlbmd0aCYmc2V0VGltZW91dCgoYXN5bmMoKT0+e2NvbnN0IGU9YXdhaXQgTCgpO24uZm9yRWFjaCgoKHtpZGVudGl0eTp0fSk9Pntjb25zdCBuPV8odCk7ZS5oYXMobil8fGZpbi5WaWV3LndyYXBTeW5jKHQpLmRlc3Ryb3koKX0pKX0pLDI1MDApfSgpLmNhdGNoKChlPT5jb25zb2xlLmRlYnVnKFwiZXJyb3IgaW4gc2NoZWR1bGVWaWV3Q2xlYW51cFwiLGUpKSkpLDVlMyx7bGVhZGluZzohMSx0cmFpbGluZzohMH0pO3goKSgoYXN5bmMoKT0+e2NvbnN0IGU9YXdhaXQgZmluLlBsYXRmb3JtLmdldEN1cnJlbnRTeW5jKCkuQXBwbGljYXRpb24uZ2V0Q2hpbGRXaW5kb3dzKCk7bGV0IHQsbj0hMTtmb3IoY29uc3QgciBvZiBlKWlmKHIuaWRlbnRpdHkubmFtZT09PW8uSUEuQnJvd3Nlck1lbnU/dD1yOmF3YWl0KDAsby5CKShyLmlkZW50aXR5KSYmKG49ITApLG4pYnJlYWs7IW4mJnQmJnQuY2xvc2UoKX0pLDEwMCx7bGVhZGluZzohMSx0cmFpbGluZzohMH0pO24oOTEyKTtmdW5jdGlvbiBPKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoKHQsbik9PntlLm9uY29tcGxldGU9ZS5vbnN1Y2Nlc3M9KCk9PnQoZS5yZXN1bHQpLGUub25hYm9ydD1lLm9uZXJyb3I9KCk9Pm4oZS5lcnJvcil9KSl9ZnVuY3Rpb24gRShlLHQpe2NvbnN0IG49aW5kZXhlZERCLm9wZW4oZSk7bi5vbnVwZ3JhZGVuZWVkZWQ9KCk9Pm4ucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKHQpO2NvbnN0IHI9TyhuKTtyZXR1cm4oZSxuKT0+ci50aGVuKChyPT5uKHIudHJhbnNhY3Rpb24odCxlKS5vYmplY3RTdG9yZSh0KSkpKX1sZXQgUztmdW5jdGlvbiBNKCl7cmV0dXJuIFN8fChTPUUoXCJrZXl2YWwtc3RvcmVcIixcImtleXZhbFwiKSksU31mdW5jdGlvbiBqKGUsdCl7cmV0dXJuIGUub3BlbkN1cnNvcigpLm9uc3VjY2Vzcz1mdW5jdGlvbigpe3RoaXMucmVzdWx0JiYodCh0aGlzLnJlc3VsdCksdGhpcy5yZXN1bHQuY29udGludWUoKSl9LE8oZS50cmFuc2FjdGlvbil9Y29uc3Qgaz1hc3luYyhlLHQsbik9Pntjb25zdCByPXYucihoLlouSGFzTW92ZWRTdG9yZSksbz1yP0pTT04ucGFyc2Uocik6e307aWYobyYmb1tuXSlyZXR1cm47b1tuXT0hMCx2LkwoaC5aLkhhc01vdmVkU3RvcmUsSlNPTi5zdHJpbmdpZnkobykpO2NvbnN0IGk9YXdhaXQgZnVuY3Rpb24oZT1NKCkpe3JldHVybiBlKFwicmVhZG9ubHlcIiwodD0+e2lmKHQuZ2V0QWxsJiZ0LmdldEFsbEtleXMpcmV0dXJuIFByb21pc2UuYWxsKFtPKHQuZ2V0QWxsS2V5cygpKSxPKHQuZ2V0QWxsKCkpXSkudGhlbigoKFtlLHRdKT0+ZS5tYXAoKChlLG4pPT5bZSx0W25dXSkpKSk7Y29uc3Qgbj1bXTtyZXR1cm4gZShcInJlYWRvbmx5XCIsKGU9PmooZSwoZT0+bi5wdXNoKFtlLmtleSxlLnZhbHVlXSkpKS50aGVuKCgoKT0+bikpKSl9KSl9KGUpO2F3YWl0IGZ1bmN0aW9uKGUsdD1NKCkpe3JldHVybiB0KFwicmVhZHdyaXRlXCIsKHQ9PihlLmZvckVhY2goKGU9PnQucHV0KGVbMV0sZVswXSkpKSxPKHQudHJhbnNhY3Rpb24pKSkpfShpLHQpfSxSPShlLHQpPT5FKGUrXCItXCIrZmluLm1lLnV1aWQsdCksUD0oZSx0KT0+e2NvbnN0IG49UihlLHQpLHI9RShlLHQpO3JldHVybiBrKHIsbixlKSxufTtyLl9WJiZyLnNTJiZQKFwib3BlbmZpbi1ob21lLXBhZ2VzXCIsXCJwYWdlc1wiKTt2YXIgQTshZnVuY3Rpb24oZSl7ZS5MYWJlbD1cIm5vcm1hbFwiLGUuU2VwYXJhdG9yPVwic2VwYXJhdG9yXCIsZS5TdWJtZW51PVwic3VibWVudVwiLGUuQ2hlY2tib3g9XCJjaGVja2JveFwifShBfHwoQT17fSkpO0EuU2VwYXJhdG9yO24oNDIwKSxuKDMzNyk7QS5MYWJlbCxpLndoLkNsb3NlV2luZG93LEEuTGFiZWwsaS53aC5PcGVuU3RvcmVmcm9udCxBLkxhYmVsLGkud2guUXVpdCxBLkxhYmVsLGkud2guTmV3V2luZG93LEEuTGFiZWwsaS53aC5TYXZlUGFnZSxBLkxhYmVsLGkud2guU2F2ZVBhZ2VBcyxBLkxhYmVsLGkud2guUmVzdG9yZUNoYW5nZXMsQS5MYWJlbCxpLndoLlNhdmVXb3Jrc3BhY2UsQS5MYWJlbCxpLndoLlNhdmVXb3Jrc3BhY2VBcyxBLkxhYmVsLGkud2guUmVuYW1lV29ya3NwYWNlO3IuX1YmJnIuc1MmJlIoXCJkb2NrLXByb3ZpZGVyLWNvbmZpZ3NcIixcImRvY2stcHJvdmlkZXItY29uZmlnc1wiKTtuKDcwNSk7ci5fViYmci5zUyYmUChcIm9wZW5maW4td29ya3NwYWNlLXBsYXRmb3JtLXdvcmtzcGFjZXNcIixcIndvcmtzcGFjZXNcIik7big1NjQpO24oNDk1KTtyLnJ4LGwuWlAuQnJvd3NlcixyLnJ4O3ZhciBJOyFmdW5jdGlvbihlKXtlLkJyb3dzZXI9XCJCcm93c2VyXCIsZS5Eb2NrPVwiRG9ja1wiLGUuSG9tZT1cIkhvbWVcIixlLk5vdGlmaWNhdGlvbj1cIk5vdGlmaWNhdGlvblwiLGUuU3RvcmVmcm9udD1cIlN0b3JlZnJvbnRcIixlLlBsYXRmb3JtPVwiUGxhdGZvcm1cIixlLlRoZW1pbmc9XCJUaGVtaW5nXCIsZS5NaWNyb2Zsb3c9XCJNaWNyb2Zsb3dcIn0oSXx8KEk9e30pKTtjb25zdCBUPWFzeW5jKGUsdCk9Pntjb25zdCBuPXthcGlWZXJzaW9uOnQuYXBpVmVyc2lvbnx8ci51MCxjb21wb25lbnROYW1lOmUsY29tcG9uZW50VmVyc2lvbjp0LmNvbXBvbmVudFZlcnNpb258fHIudTAsYWxsb3dlZDp0LmFsbG93ZWQscmVqZWN0aW9uQ29kZTp0LnJlamVjdGlvbkNvZGV9O2Zpbi5TeXN0ZW0ucmVnaXN0ZXJVc2FnZSh7dHlwZTpcIndvcmtzcGFjZS1saWNlbnNpbmdcIixkYXRhOm59KX07Y29uc3QgSD1lPT57by5PSS51dWlkPT09by5HaS51dWlkJiZvLk9JLm5hbWU9PT1vLkdpLm5hbWV8fFQoSS5Ib21lLGUpfSxWPWU9PntUKEkuU3RvcmVmcm9udCxlKX0sQj1lPT57VChJLkRvY2ssZSl9O3ZhciBEOyFmdW5jdGlvbihlKXtlLkJyb3dzZXI9XCJCcm93c2VyXCIsZS5Eb2NrPVwiRG9ja1wiLGUuSG9tZT1cIkhvbWVcIixlLk5vdGlmaWNhdGlvbj1cIk5vdGlmaWNhdGlvblwiLGUuU3RvcmVmcm9udD1cIlN0b3JlZnJvbnRcIixlLlBsYXRmb3JtPVwiUGxhdGZvcm1cIixlLlRoZW1pbmc9XCJUaGVtaW5nXCIsZS5JbnRlcm9wPVwiSW50ZXJvcFwifShEfHwoRD17fSkpO25ldyBNYXB9LDEyMTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse0I6KCk9PmYsR1A6KCk9PmQsR2k6KCk9PmwsSUE6KCk9PnIsSlY6KCk9PnAsT0k6KCk9PmMsaVc6KCk9PnUsbFE6KCk9PnN9KTt2YXIgcixvPW4oODA2KSxpPW4oNjc4KTshZnVuY3Rpb24oZSl7ZS5Ib21lPVwib3BlbmZpbi1ob21lXCIsZS5Eb2NrPVwib3BlbmZpbi1kb2NrXCIsZS5TdG9yZWZyb250PVwib3BlbmZpbi1zdG9yZWZyb250XCIsZS5Ib21lSW50ZXJuYWw9XCJvcGVuZmluLWhvbWUtaW50ZXJuYWxcIixlLkJyb3dzZXJNZW51PVwib3BlbmZpbi1icm93c2VyLW1lbnVcIixlLkJyb3dzZXJJbmRpY2F0b3I9XCJvcGVuZmluLWJyb3dzZXItaW5kaWNhdG9yXCIsZS5Ccm93c2VyV2luZG93PVwiaW50ZXJuYWwtZ2VuZXJhdGVkLXdpbmRvd1wiLGUuQ2xhc3NpY1dpbmRvdz1cImludGVybmFsLWdlbmVyYXRlZC1jbGFzc2ljLXdpbmRvd1wifShyfHwocj17fSkpO2Z1bmN0aW9uIGEoZSl7aWYoIWkuc1MpdGhyb3cgbmV3IEVycm9yKFwiZ2V0T0ZXaW5kb3cgY2FuIG9ubHkgYmUgdXNlZCBpbiBhbiBPcGVuRmluIGVudi4gQXZvaWQgY2FsbGluZyB0aGlzIG1ldGhvZCBkdXJpbmcgcHJlLXJlbmRlcmluZy5cIik7cmV0dXJuIGZpbi5XaW5kb3cud3JhcFN5bmMoZSl9Y29uc3QgbD17bmFtZTppLm9DLHV1aWQ6aS5BQn07ZnVuY3Rpb24gcygpe3JldHVybiBhKGwpfWNvbnN0IGM9e25hbWU6ci5Ib21lLHV1aWQ6by5xOS5Xb3Jrc3BhY2V9LHU9KHIuRG9jayxvLnE5LldvcmtzcGFjZSxyLlN0b3JlZnJvbnQsby5xOS5Xb3Jrc3BhY2Use25hbWU6by5xOS5Xb3Jrc3BhY2UsdXVpZDpvLnE5LldvcmtzcGFjZX0pO2NvbnN0IGY9YXN5bmMgZT0+e2lmKCFlLm5hbWUuc3RhcnRzV2l0aChyLkJyb3dzZXJXaW5kb3cpKXJldHVybiExO2NvbnN0IHQ9YXdhaXQgZmluLldpbmRvdy53cmFwU3luYyh7bmFtZTplLm5hbWUsdXVpZDplLnV1aWQ/P2Zpbi5tZS51dWlkfSkuZ2V0T3B0aW9ucygpO3JldHVybiEhdC53b3Jrc3BhY2VQbGF0Zm9ybT8ucGFnZXN9O2FzeW5jIGZ1bmN0aW9uIGQoKXtjb25zdCBlPWF3YWl0IGZpbi5BcHBsaWNhdGlvbi5nZXRDdXJyZW50U3luYygpLmdldENoaWxkV2luZG93cygpLHQ9YXdhaXQgUHJvbWlzZS5hbGwoZS5tYXAoKGFzeW5jIGU9PmYoZS5pZGVudGl0eSkpKSk7cmV0dXJuIGUuZmlsdGVyKCgoZSxuKT0+dFtuXSkpfWNvbnN0IHA9ZT0+YShlKS5nZXRPcHRpb25zKCkudGhlbigoKCk9PiEwKSkuY2F0Y2goKCgpPT4hMSkpfX0sdD17fTtmdW5jdGlvbiBuKHIpe3ZhciBvPXRbcl07aWYodm9pZCAwIT09bylyZXR1cm4gby5leHBvcnRzO3ZhciBpPXRbcl09e2V4cG9ydHM6e319O3JldHVybiBlW3JdKGksaS5leHBvcnRzLG4pLGkuZXhwb3J0c31uLm49ZT0+e3ZhciB0PWUmJmUuX19lc01vZHVsZT8oKT0+ZS5kZWZhdWx0OigpPT5lO3JldHVybiBuLmQodCx7YTp0fSksdH0sbi5kPShlLHQpPT57Zm9yKHZhciByIGluIHQpbi5vKHQscikmJiFuLm8oZSxyKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSxuLmc9ZnVuY3Rpb24oKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsVGhpcylyZXR1cm4gZ2xvYmFsVGhpczt0cnl7cmV0dXJuIHRoaXN8fG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCl9Y2F0Y2goZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93fX0oKSxuLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpLG4ucj1lPT57XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sbi5uYz12b2lkIDA7dmFyIHI9e307KCgpPT57XCJ1c2Ugc3RyaWN0XCI7bi5yKHIpLG4uZChyLHtBY3Rpb25UcmlnZ2VyOigpPT5VZS5wLEFwcE1hbmlmZXN0VHlwZTooKT0+emUuTCxCdXR0b25TdHlsZTooKT0+V2UuWkosQ0xJQWN0aW9uOigpPT5CLlB0LENMSUZpbHRlck9wdGlvblR5cGU6KCk9PkIuZWwsQ0xJVGVtcGxhdGU6KCk9PkIueVcsQ29udGFpbmVyVGVtcGxhdGVGcmFnbWVudE5hbWVzOigpPT5XZS5wNixEb2NrOigpPT5lLERvY2tCdXR0b25OYW1lczooKT0+dS52LEhvbWU6KCk9PmIsSW50ZWdyYXRpb25zOigpPT50LExlZ2FjeTooKT0+byxQcmVzZW50YXRpb25UZW1wbGF0ZUZyYWdtZW50TmFtZXM6KCk9PldlLkdvLFNlYXJjaFRhZ0JhY2tncm91bmQ6KCk9PlVlLncsU3RvcmVmcm9udDooKT0+TmUsU3RvcmVmcm9udFRlbXBsYXRlOigpPT56ZS5ULFRlbXBsYXRlRnJhZ21lbnRUeXBlczooKT0+V2UuYkl9KTt2YXIgZT17fTtuLnIoZSksbi5kKGUse0RvY2tCdXR0b25OYW1lczooKT0+dS52LGRlcmVnaXN0ZXI6KCk9PnYsbWluaW1pemU6KCk9PmcscmVnaXN0ZXI6KCk9Pmgsc2hvdzooKT0+Q30pO3ZhciB0PXt9O24ucih0KSxuLmQodCx7TWljcm9zb2Z0MzY1V29ya2Zsb3dJbnRlZ3JhdGlvbjooKT0+RGV9KTt2YXIgbz17fTtuLnIobyksbi5kKG8se2dldFBhZ2VzOigpPT4kZSxnZXRXb3Jrc3BhY2VzOigpPT5GZX0pO3ZhciBpPW4oNjc4KSxhPW4oNzcyKSxsPW4oMTUwKSxzPW4oNDM4KSxjPW4oODIpLHU9big0MjcpO2xldCBmLGQ7Y29uc3QgcD0oZT1bXSk9Pntjb25zdCB0PWUuZmlsdGVyKChlPT4hIWUuaWQpKS5tYXAoKGU9PmUuaWQpKTtpZihuZXcgU2V0KHQpLnNpemUhPT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJEb2NrIHByb3ZpZGVyIGJ1dHRvbnMgbXVzdCBoYXZlIHVuaXF1ZSBpZGVudGlmaWVycyBpZiBzcGVjaWZpZWQuXCIpfSxoPWU9PihmPW5ldyBQcm9taXNlKChhc3luYyh0LG4pPT57dHJ5eyhlPT57ZS53b3Jrc3BhY2VDb21wb25lbnRzJiYhQXJyYXkuaXNBcnJheShlLndvcmtzcGFjZUNvbXBvbmVudHMpJiZjb25zb2xlLndhcm4oXCJVc2luZyB0aGUgYFdvcmtzcGFjZUNvbXBvbmVudEJ1dHRvbk9wdGlvbnNgIHR5cGUgdG8gY29uZmlndXJlIHRoZSBXb3Jrc3BhY2UgQ29tcG9uZW50cyBCdXR0b25zIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgYFdvcmtzcGFjZUJ1dHRvbnNDb25maWdgIGluc3RlYWQuXCIpfSkoZSkscChlLmJ1dHRvbnMpO2NvbnN0IG49YXdhaXQoYXN5bmMgZT0+e2F3YWl0KDAscy5IaCkoZmluLm1lLmlkZW50aXR5KTtjb25zdCB0PWF3YWl0KDAsbC54WikoKTtpZihkKXRocm93IG5ldyBFcnJvcihcIkVycm9yIHVzaW5nIGBEb2NrLnJlZ2lzdGVyYC4gQSBEb2NrIHByb3ZpZGVyIGZvciB0aGlzIFdvcmtzcGFjZSBQbGF0Zm9ybSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuIENhbGwgYERvY2suZGVyZWdpc3RlcmAgYmVmb3JlIGNhbGxpbmcgYERvY2sucmVnaXN0ZXJgIGFnYWluLlwiKTtyZXR1cm4gZD1lLGUuY2xpZW50QVBJVmVyc2lvbj1pLnUwLHQuZGlzcGF0Y2goXCJyZWdpc3Rlci1wcm92aWRlclwiLHtwcm92aWRlclR5cGU6XCJkb2NrXCIsaW5mbzplfSl9KShlKTsoMCxhLlduKSh7YWxsb3dlZDohMCxjb21wb25lbnRWZXJzaW9uOm4/LndvcmtzcGFjZVZlcnNpb259KSxuPy53b3Jrc3BhY2VWZXJzaW9uLGkudTAsdCh7Y2xpZW50QVBJVmVyc2lvbjppLnUwLHdvcmtzcGFjZVZlcnNpb246bj8ud29ya3NwYWNlVmVyc2lvbj8/XCJcIix1cGRhdGVEb2NrUHJvdmlkZXJDb25maWc6YXN5bmMgdD0+e2lmKCFkKXRocm93IG5ldyBFcnJvcihcIkVycm9yIHVzaW5nIGBEb2NrLnVwZGF0ZURvY2tQcm92aWRlckNvbmZpZ2AuIERvY2sgcHJvdmlkZXIgaXMgbm90IHJlZ2lzdGVyZWQuIE1ha2Ugc3VyZSB0byBjYWxsIGBEb2NrLnJlZ2lzdGVyYCBmaXJzdC5cIik7cCh0LmJ1dHRvbnMpO2NvbnN0IG49YXdhaXQoMCxsLnhaKSgpO2F3YWl0IG4uZGlzcGF0Y2goXCJ1cGRhdGUtcHJvdmlkZXJcIix7cHJvdmlkZXJUeXBlOlwiZG9ja1wiLHByb3ZpZGVyOnsuLi5lLHdvcmtzcGFjZUNvbXBvbmVudHM6dC53b3Jrc3BhY2VDb21wb25lbnRzLGJ1dHRvbnM6dC5idXR0b25zLHRpdGxlOnQudGl0bGUsaWNvbjp0Lmljb24sZGlzYWJsZVVzZXJSZWFycmFuZ2VtZW50OnQuZGlzYWJsZVVzZXJSZWFycmFuZ2VtZW50LGlkOmUuaWR9fSl9fSl9Y2F0Y2goZSl7KDAsYS5Xbikoe2FsbG93ZWQ6ITEscmVqZWN0aW9uQ29kZTplIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOlwidW5rbm93blwifSksbihlKSxmPXZvaWQgMH19KSksZiksdj1hc3luYygpPT57aWYoYXdhaXQgZiwhZCl0aHJvdyBuZXcgRXJyb3IoXCJFcnJvciB1c2luZyBgRG9jay5kZXJlZ2lzdGVyYC4gRG9jayBwcm92aWRlciBpcyBub3QgcmVnaXN0ZXJlZC4gQ2FsbCBgRG9jay5yZWdpc3RlcmAgYmVmb3JlIGNhbGxpbmcgYERvY2suZGVyZWdpc3RlcmAuXCIpO2NvbnN0IGU9YXdhaXQoMCxsLnhaKSgpO2F3YWl0IGUuZGlzcGF0Y2goXCJkZXJlZ2lzdGVyLXByb3ZpZGVyXCIse3Byb3ZpZGVyVHlwZTpcImRvY2tcIixpZDpkLmlkfSksZD12b2lkIDAsZj12b2lkIDB9LGc9YXN5bmMoKT0+e2F3YWl0IGYsYXdhaXQoMCxsLmFCKSgpLGF3YWl0KDAsYy5SOCkoXCJkb2NrXCIpfSxDPWFzeW5jKCk9Pnthd2FpdCBmLGF3YWl0KDAsbC5hQikoKSxhd2FpdCgwLGMuWF8pKFwiZG9ja1wiKX07dmFyIG0seSx3LGI9bigyNjEpLHg9ZnVuY3Rpb24oZSx0LG4scixvKXtpZihcIm1cIj09PXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtpZihcImFcIj09PXImJiFvKXRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdD9lIT09dHx8IW86IXQuaGFzKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtyZXR1cm5cImFcIj09PXI/by5jYWxsKGUsbik6bz9vLnZhbHVlPW46dC5zZXQoZSxuKSxufSxfPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKFwiYVwiPT09biYmIXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P2UhPT10fHwhcjohdC5oYXMoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtyZXR1cm5cIm1cIj09PW4/cjpcImFcIj09PW4/ci5jYWxsKGUpOnI/ci52YWx1ZTp0LmdldChlKX07bT1uZXcgV2Vha01hcCx5PW5ldyBXZWFrTWFwLHc9bmV3IFdlYWtNYXA7Y29uc3QgTD1jbGFzc3tjb25zdHJ1Y3RvcihlKXttLnNldCh0aGlzLHZvaWQgMCkseS5zZXQodGhpcyx2b2lkIDApLHcuc2V0KHRoaXMsdm9pZCAwKSx4KHRoaXMsbSxlLFwiZlwiKSx4KHRoaXMseSxuZXcgTWFwLFwiZlwiKSx4KHRoaXMsdyxbXSxcImZcIil9Z2V0KGUpe2lmKF8odGhpcyx5LFwiZlwiKS5oYXMoZSkpcmV0dXJuIHRoaXMudXBkYXRlUXVldWUoZSksXyh0aGlzLHksXCJmXCIpLmdldChlKX1oYXMoZSl7cmV0dXJuIF8odGhpcyx5LFwiZlwiKS5oYXMoZSl9cHV0KGUsdCl7aWYoXyh0aGlzLHksXCJmXCIpLmhhcyhlKSlfKHRoaXMseSxcImZcIikuc2V0KGUsdCksdGhpcy51cGRhdGVRdWV1ZShlKTtlbHNle2lmKF8odGhpcyx3LFwiZlwiKS5sZW5ndGg9PT1fKHRoaXMsbSxcImZcIikpe2NvbnN0IGU9Xyh0aGlzLHcsXCJmXCIpLnNoaWZ0KCk7ZSYmXyh0aGlzLHksXCJmXCIpLmRlbGV0ZShlKX1fKHRoaXMseSxcImZcIikuc2V0KGUsdCksXyh0aGlzLHcsXCJmXCIpLnB1c2goZSl9fXVwZGF0ZVF1ZXVlKGUpe2NvbnN0IHQ9Xyh0aGlzLHcsXCJmXCIpLmluZGV4T2YoZSk7LTEhPT10JiYoXyh0aGlzLHcsXCJmXCIpLnNwbGljZSh0LDEpLF8odGhpcyx3LFwiZlwiKS5wdXNoKGUpKX19O2Z1bmN0aW9uIE8oZSl7cmV0dXJuIGUmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiYhQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBFKGUsLi4udCl7aWYoIXQubGVuZ3RoKXJldHVybiBlO2NvbnN0IG49dC5zaGlmdCgpO3JldHVybiBPKGUpJiZPKG4pJiZPYmplY3QuZW50cmllcyhuKS5mb3JFYWNoKCgoW3Qsbl0pPT57aWYoTyhuKSlyZXR1cm4gZVt0XXx8KGVbdF09e30pLEUoZVt0XSxuKTtlW3RdPW59KSksRShlLC4uLnQpfXZhciBTLE0saixrLFIsUD1uKDUpLEE9big2NTApLEk9ZnVuY3Rpb24oZSx0LG4scixvKXtpZihcIm1cIj09PXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtpZihcImFcIj09PXImJiFvKXRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdD9lIT09dHx8IW86IXQuaGFzKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtyZXR1cm5cImFcIj09PXI/by5jYWxsKGUsbik6bz9vLnZhbHVlPW46dC5zZXQoZSxuKSxufSxUPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKFwiYVwiPT09biYmIXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P2UhPT10fHwhcjohdC5oYXMoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtyZXR1cm5cIm1cIj09PW4/cjpcImFcIj09PW4/ci5jYWxsKGUpOnI/ci52YWx1ZTp0LmdldChlKX07TT1uZXcgV2Vha01hcCxqPW5ldyBXZWFrTWFwLGs9bmV3IFdlYWtNYXAsUz1uZXcgV2Vha1NldCxSPWZ1bmN0aW9uKCl7Y29uc3QgZT1BcnJheS5mcm9tKFQodGhpcyxNLFwiZlwiKS5lbnRyaWVzKCkpLnJlZHVjZSgoKGUsdCk9PiFlfHx0WzFdLnRpbWVzdGFtcDxlWzFdLnRpbWVzdGFtcD90OmUpLG51bGwpO3JldHVybiBlP2VbMF06bnVsbH07Y29uc3QgSD1jbGFzc3tjb25zdHJ1Y3RvcihlPTNlNSx0PTEwMCl7Uy5hZGQodGhpcyksTS5zZXQodGhpcyx2b2lkIDApLGouc2V0KHRoaXMsdm9pZCAwKSxrLnNldCh0aGlzLHZvaWQgMCksSSh0aGlzLE0sbmV3IE1hcCxcImZcIiksSSh0aGlzLGosZSxcImZcIiksSSh0aGlzLGssdCxcImZcIil9Z2V0KGUpe2NvbnN0IHQ9VCh0aGlzLE0sXCJmXCIpLmdldChlKTtpZighdClyZXR1cm4gbnVsbDtyZXR1cm4gRGF0ZS5ub3coKS10LnRpbWVzdGFtcDxUKHRoaXMsaixcImZcIik/dC52YWx1ZTooVCh0aGlzLE0sXCJmXCIpLmRlbGV0ZShlKSxudWxsKX1wdXQoZSx0KXtpZihUKHRoaXMsTSxcImZcIikuc2l6ZT49VCh0aGlzLGssXCJmXCIpKXtjb25zdCBlPVQodGhpcyxTLFwibVwiLFIpLmNhbGwodGhpcyk7bnVsbCE9ZSYmVCh0aGlzLE0sXCJmXCIpLmRlbGV0ZShlKX1UKHRoaXMsTSxcImZcIikuc2V0KGUse3ZhbHVlOnQsdGltZXN0YW1wOkRhdGUubm93KCl9KX1yZW1vdmUoZSl7VCh0aGlzLE0sXCJmXCIpLmRlbGV0ZShlKX1jbGVhcigpe1QodGhpcyxNLFwiZlwiKS5jbGVhcigpfX07dmFyIFYsQj1uKDc1OCksRD1mdW5jdGlvbihlLHQsbixyKXtpZihcImFcIj09PW4mJiFyKXRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdD9lIT09dHx8IXI6IXQuaGFzKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7cmV0dXJuXCJtXCI9PT1uP3I6XCJhXCI9PT1uP3IuY2FsbChlKTpyP3IudmFsdWU6dC5nZXQoZSl9O2NvbnN0IFo9e307Y2xhc3MgJHtjb25zdHJ1Y3RvcihlKXtWLnNldCh0aGlzLG5ldyBTZXQpLHRoaXMuX2luaXRpYWxpemVXb3JrZmxvd3M9YXN5bmMoZT10aGlzLmNvbmZpZyk9Pntjb25zdHt3b3JrZmxvd3M6dH09ZTtmb3IoY29uc3QgZSBpbiB0KXtpZighdFtlXS5kaXNhYmxlQXV0b0luaXRpYWxpemUpdHJ5e0QodGhpcyxWLFwiZlwiKS5oYXMoZSk/Y29uc29sZS53YXJuKGBXb3JrZmxvdyAke2V9IGFscmVhZHkgaW5pdGlhbGl6ZWQuYCk6KEQodGhpcyxWLFwiZlwiKS5hZGQoZSksYXdhaXQgdGhpcy5pbml0aWFsaXplV29ya2Zsb3coZSkpfWNhdGNoKHQpe0QodGhpcyxWLFwiZlwiKS5kZWxldGUoZSksY29uc29sZS5lcnJvcihgRXJyb3IgcmVnaXN0ZXJpbmcgJHtlfTpgLHQpfX19O2NvbnN0IHQ9RSh7fSxaLGUpO3RoaXMuY29uZmlnPXR9YXN5bmMgaW5pdGlhbGl6ZVdvcmtmbG93KGUpe0QodGhpcyxWLFwiZlwiKS5hZGQoZSl9fVY9bmV3IFdlYWtNYXA7dmFyIEY9ezg3NjplPT57Y29uc3R7QWJvcnRDb250cm9sbGVyOnQsQWJvcnRTaWduYWw6bn09XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjpcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp2b2lkIDA7ZS5leHBvcnRzPXQsZS5leHBvcnRzLkFib3J0U2lnbmFsPW4sZS5leHBvcnRzLmRlZmF1bHQ9dH0sNjA6KGUsdCk9Pnt0LmJ5dGVMZW5ndGg9ZnVuY3Rpb24oZSl7dmFyIHQ9bChlKSxuPXRbMF0scj10WzFdO3JldHVybiAzKihuK3IpLzQtcn0sdC50b0J5dGVBcnJheT1mdW5jdGlvbihlKXt2YXIgdCxuLGk9bChlKSxhPWlbMF0scz1pWzFdLGM9bmV3IG8oZnVuY3Rpb24oZSx0LG4pe3JldHVybiAzKih0K24pLzQtbn0oMCxhLHMpKSx1PTAsZj1zPjA/YS00OmE7Zm9yKG49MDtuPGY7bis9NCl0PXJbZS5jaGFyQ29kZUF0KG4pXTw8MTh8cltlLmNoYXJDb2RlQXQobisxKV08PDEyfHJbZS5jaGFyQ29kZUF0KG4rMildPDw2fHJbZS5jaGFyQ29kZUF0KG4rMyldLGNbdSsrXT10Pj4xNiYyNTUsY1t1KytdPXQ+PjgmMjU1LGNbdSsrXT0yNTUmdDtyZXR1cm4gMj09PXMmJih0PXJbZS5jaGFyQ29kZUF0KG4pXTw8MnxyW2UuY2hhckNvZGVBdChuKzEpXT4+NCxjW3UrK109MjU1JnQpLDE9PT1zJiYodD1yW2UuY2hhckNvZGVBdChuKV08PDEwfHJbZS5jaGFyQ29kZUF0KG4rMSldPDw0fHJbZS5jaGFyQ29kZUF0KG4rMildPj4yLGNbdSsrXT10Pj44JjI1NSxjW3UrK109MjU1JnQpLGN9LHQuZnJvbUJ5dGVBcnJheT1mdW5jdGlvbihlKXtmb3IodmFyIHQscj1lLmxlbmd0aCxvPXIlMyxpPVtdLGE9MTYzODMsbD0wLGM9ci1vO2w8YztsKz1hKWkucHVzaChzKGUsbCxsK2E+Yz9jOmwrYSkpO3JldHVybiAxPT09bz8odD1lW3ItMV0saS5wdXNoKG5bdD4+Ml0rblt0PDw0JjYzXStcIj09XCIpKToyPT09byYmKHQ9KGVbci0yXTw8OCkrZVtyLTFdLGkucHVzaChuW3Q+PjEwXStuW3Q+PjQmNjNdK25bdDw8MiY2M10rXCI9XCIpKSxpLmpvaW4oXCJcIil9O2Zvcih2YXIgbj1bXSxyPVtdLG89XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxpPVwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL1wiLGE9MDthPDY0OysrYSluW2FdPWlbYV0scltpLmNoYXJDb2RlQXQoYSldPWE7ZnVuY3Rpb24gbChlKXt2YXIgdD1lLmxlbmd0aDtpZih0JTQ+MCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0XCIpO3ZhciBuPWUuaW5kZXhPZihcIj1cIik7cmV0dXJuLTE9PT1uJiYobj10KSxbbixuPT09dD8wOjQtbiU0XX1mdW5jdGlvbiBzKGUsdCxyKXtmb3IodmFyIG8saSxhPVtdLGw9dDtsPHI7bCs9MylvPShlW2xdPDwxNiYxNjcxMTY4MCkrKGVbbCsxXTw8OCY2NTI4MCkrKDI1NSZlW2wrMl0pLGEucHVzaChuWyhpPW8pPj4xOCY2M10rbltpPj4xMiY2M10rbltpPj42JjYzXStuWzYzJmldKTtyZXR1cm4gYS5qb2luKFwiXCIpfXJbXCItXCIuY2hhckNvZGVBdCgwKV09NjIscltcIl9cIi5jaGFyQ29kZUF0KDApXT02M30sNDg1OihlLHQsbik9Pntjb25zdCByPW4oNjApLG89bigyMTUpLGk9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wuZm9yP1N5bWJvbC5mb3IoXCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbVwiKTpudWxsO3QuQnVmZmVyPXMsdC5TbG93QnVmZmVyPWZ1bmN0aW9uKGUpe3JldHVybitlIT1lJiYoZT0wKSxzLmFsbG9jKCtlKX0sdC5JTlNQRUNUX01BWF9CWVRFUz01MDtjb25zdCBhPTIxNDc0ODM2NDc7ZnVuY3Rpb24gbChlKXtpZihlPmEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBcIicrZSsnXCIgaXMgaW52YWxpZCBmb3Igb3B0aW9uIFwic2l6ZVwiJyk7Y29uc3QgdD1uZXcgVWludDhBcnJheShlKTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHQscy5wcm90b3R5cGUpLHR9ZnVuY3Rpb24gcyhlLHQsbil7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyk7cmV0dXJuIGYoZSl9cmV0dXJuIGMoZSx0LG4pfWZ1bmN0aW9uIGMoZSx0LG4pe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBmdW5jdGlvbihlLHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0JiZcIlwiIT09dHx8KHQ9XCJ1dGY4XCIpLCFzLmlzRW5jb2RpbmcodCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK3QpO2NvbnN0IG49MHx2KGUsdCk7bGV0IHI9bChuKTtjb25zdCBvPXIud3JpdGUoZSx0KTtyZXR1cm4gbyE9PW4mJihyPXIuc2xpY2UoMCxvKSkscn0oZSx0KTtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpcmV0dXJuIGZ1bmN0aW9uKGUpe2lmKFkoZSxVaW50OEFycmF5KSl7Y29uc3QgdD1uZXcgVWludDhBcnJheShlKTtyZXR1cm4gcCh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKX1yZXR1cm4gZChlKX0oZSk7aWYobnVsbD09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgXCIrdHlwZW9mIGUpO2lmKFkoZSxBcnJheUJ1ZmZlcil8fGUmJlkoZS5idWZmZXIsQXJyYXlCdWZmZXIpKXJldHVybiBwKGUsdCxuKTtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXImJihZKGUsU2hhcmVkQXJyYXlCdWZmZXIpfHxlJiZZKGUuYnVmZmVyLFNoYXJlZEFycmF5QnVmZmVyKSkpcmV0dXJuIHAoZSx0LG4pO2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyk7Y29uc3Qgcj1lLnZhbHVlT2YmJmUudmFsdWVPZigpO2lmKG51bGwhPXImJnIhPT1lKXJldHVybiBzLmZyb20ocix0LG4pO2NvbnN0IG89ZnVuY3Rpb24oZSl7aWYocy5pc0J1ZmZlcihlKSl7Y29uc3QgdD0wfGgoZS5sZW5ndGgpLG49bCh0KTtyZXR1cm4gMD09PW4ubGVuZ3RofHxlLmNvcHkobiwwLDAsdCksbn1yZXR1cm4gdm9pZCAwIT09ZS5sZW5ndGg/XCJudW1iZXJcIiE9dHlwZW9mIGUubGVuZ3RofHxLKGUubGVuZ3RoKT9sKDApOmQoZSk6XCJCdWZmZXJcIj09PWUudHlwZSYmQXJyYXkuaXNBcnJheShlLmRhdGEpP2QoZS5kYXRhKTp2b2lkIDB9KGUpO2lmKG8pcmV0dXJuIG87aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9U3ltYm9sLnRvUHJpbWl0aXZlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlW1N5bWJvbC50b1ByaW1pdGl2ZV0pcmV0dXJuIHMuZnJvbShlW1N5bWJvbC50b1ByaW1pdGl2ZV0oXCJzdHJpbmdcIiksdCxuKTt0aHJvdyBuZXcgVHlwZUVycm9yKFwiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgXCIrdHlwZW9mIGUpfWZ1bmN0aW9uIHUoZSl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIG51bWJlcicpO2lmKGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIFwiJytlKydcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKX1mdW5jdGlvbiBmKGUpe3JldHVybiB1KGUpLGwoZTwwPzA6MHxoKGUpKX1mdW5jdGlvbiBkKGUpe2NvbnN0IHQ9ZS5sZW5ndGg8MD8wOjB8aChlLmxlbmd0aCksbj1sKHQpO2ZvcihsZXQgcj0wO3I8dDtyKz0xKW5bcl09MjU1JmVbcl07cmV0dXJuIG59ZnVuY3Rpb24gcChlLHQsbil7aWYodDwwfHxlLmJ5dGVMZW5ndGg8dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJvZmZzZXRcIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKTtpZihlLmJ5dGVMZW5ndGg8dCsobnx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wibGVuZ3RoXCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7bGV0IHI7cmV0dXJuIHI9dm9pZCAwPT09dCYmdm9pZCAwPT09bj9uZXcgVWludDhBcnJheShlKTp2b2lkIDA9PT1uP25ldyBVaW50OEFycmF5KGUsdCk6bmV3IFVpbnQ4QXJyYXkoZSx0LG4pLE9iamVjdC5zZXRQcm90b3R5cGVPZihyLHMucHJvdG90eXBlKSxyfWZ1bmN0aW9uIGgoZSl7aWYoZT49YSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkF0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gc2l6ZTogMHhcIithLnRvU3RyaW5nKDE2KStcIiBieXRlc1wiKTtyZXR1cm4gMHxlfWZ1bmN0aW9uIHYoZSx0KXtpZihzLmlzQnVmZmVyKGUpKXJldHVybiBlLmxlbmd0aDtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoZSl8fFkoZSxBcnJheUJ1ZmZlcikpcmV0dXJuIGUuYnl0ZUxlbmd0aDtpZihcInN0cmluZ1wiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJzdHJpbmdcIiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBvciBBcnJheUJ1ZmZlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBlKTtjb25zdCBuPWUubGVuZ3RoLHI9YXJndW1lbnRzLmxlbmd0aD4yJiYhMD09PWFyZ3VtZW50c1syXTtpZighciYmMD09PW4pcmV0dXJuIDA7bGV0IG89ITE7Zm9yKDs7KXN3aXRjaCh0KXtjYXNlXCJhc2NpaVwiOmNhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOnJldHVybiBuO2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOnJldHVybiB6KGUpLmxlbmd0aDtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4gMipuO2Nhc2VcImhleFwiOnJldHVybiBuPj4+MTtjYXNlXCJiYXNlNjRcIjpyZXR1cm4gRyhlKS5sZW5ndGg7ZGVmYXVsdDppZihvKXJldHVybiByPy0xOnooZSkubGVuZ3RoO3Q9KFwiXCIrdCkudG9Mb3dlckNhc2UoKSxvPSEwfX1mdW5jdGlvbiBnKGUsdCxuKXtsZXQgcj0hMTtpZigodm9pZCAwPT09dHx8dDwwKSYmKHQ9MCksdD50aGlzLmxlbmd0aClyZXR1cm5cIlwiO2lmKCh2b2lkIDA9PT1ufHxuPnRoaXMubGVuZ3RoKSYmKG49dGhpcy5sZW5ndGgpLG48PTApcmV0dXJuXCJcIjtpZigobj4+Pj0wKTw9KHQ+Pj49MCkpcmV0dXJuXCJcIjtmb3IoZXx8KGU9XCJ1dGY4XCIpOzspc3dpdGNoKGUpe2Nhc2VcImhleFwiOnJldHVybiBrKHRoaXMsdCxuKTtjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpyZXR1cm4gRSh0aGlzLHQsbik7Y2FzZVwiYXNjaWlcIjpyZXR1cm4gTSh0aGlzLHQsbik7Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuIGoodGhpcyx0LG4pO2Nhc2VcImJhc2U2NFwiOnJldHVybiBPKHRoaXMsdCxuKTtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4gUih0aGlzLHQsbik7ZGVmYXVsdDppZihyKXRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIitlKTtlPShlK1wiXCIpLnRvTG93ZXJDYXNlKCkscj0hMH19ZnVuY3Rpb24gQyhlLHQsbil7Y29uc3Qgcj1lW3RdO2VbdF09ZVtuXSxlW25dPXJ9ZnVuY3Rpb24gbShlLHQsbixyLG8pe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4tMTtpZihcInN0cmluZ1wiPT10eXBlb2Ygbj8ocj1uLG49MCk6bj4yMTQ3NDgzNjQ3P249MjE0NzQ4MzY0NzpuPC0yMTQ3NDgzNjQ4JiYobj0tMjE0NzQ4MzY0OCksSyhuPStuKSYmKG49bz8wOmUubGVuZ3RoLTEpLG48MCYmKG49ZS5sZW5ndGgrbiksbj49ZS5sZW5ndGgpe2lmKG8pcmV0dXJuLTE7bj1lLmxlbmd0aC0xfWVsc2UgaWYobjwwKXtpZighbylyZXR1cm4tMTtuPTB9aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PXMuZnJvbSh0LHIpKSxzLmlzQnVmZmVyKHQpKXJldHVybiAwPT09dC5sZW5ndGg/LTE6eShlLHQsbixyLG8pO2lmKFwibnVtYmVyXCI9PXR5cGVvZiB0KXJldHVybiB0Jj0yNTUsXCJmdW5jdGlvblwiPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZj9vP1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLHQsbik6VWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChlLHQsbik6eShlLFt0XSxuLHIsbyk7dGhyb3cgbmV3IFR5cGVFcnJvcihcInZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlclwiKX1mdW5jdGlvbiB5KGUsdCxuLHIsbyl7bGV0IGksYT0xLGw9ZS5sZW5ndGgscz10Lmxlbmd0aDtpZih2b2lkIDAhPT1yJiYoXCJ1Y3MyXCI9PT0ocj1TdHJpbmcocikudG9Mb3dlckNhc2UoKSl8fFwidWNzLTJcIj09PXJ8fFwidXRmMTZsZVwiPT09cnx8XCJ1dGYtMTZsZVwiPT09cikpe2lmKGUubGVuZ3RoPDJ8fHQubGVuZ3RoPDIpcmV0dXJuLTE7YT0yLGwvPTIscy89MixuLz0yfWZ1bmN0aW9uIGMoZSx0KXtyZXR1cm4gMT09PWE/ZVt0XTplLnJlYWRVSW50MTZCRSh0KmEpfWlmKG8pe2xldCByPS0xO2ZvcihpPW47aTxsO2krKylpZihjKGUsaSk9PT1jKHQsLTE9PT1yPzA6aS1yKSl7aWYoLTE9PT1yJiYocj1pKSxpLXIrMT09PXMpcmV0dXJuIHIqYX1lbHNlLTEhPT1yJiYoaS09aS1yKSxyPS0xfWVsc2UgZm9yKG4rcz5sJiYobj1sLXMpLGk9bjtpPj0wO2ktLSl7bGV0IG49ITA7Zm9yKGxldCByPTA7cjxzO3IrKylpZihjKGUsaStyKSE9PWModCxyKSl7bj0hMTticmVha31pZihuKXJldHVybiBpfXJldHVybi0xfWZ1bmN0aW9uIHcoZSx0LG4scil7bj1OdW1iZXIobil8fDA7Y29uc3Qgbz1lLmxlbmd0aC1uO3I/KHI9TnVtYmVyKHIpKT5vJiYocj1vKTpyPW87Y29uc3QgaT10Lmxlbmd0aDtsZXQgYTtmb3Iocj5pLzImJihyPWkvMiksYT0wO2E8cjsrK2Epe2NvbnN0IHI9cGFyc2VJbnQodC5zdWJzdHIoMiphLDIpLDE2KTtpZihLKHIpKXJldHVybiBhO2VbbithXT1yfXJldHVybiBhfWZ1bmN0aW9uIGIoZSx0LG4scil7cmV0dXJuIHEoeih0LGUubGVuZ3RoLW4pLGUsbixyKX1mdW5jdGlvbiB4KGUsdCxuLHIpe3JldHVybiBxKGZ1bmN0aW9uKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDsrK24pdC5wdXNoKDI1NSZlLmNoYXJDb2RlQXQobikpO3JldHVybiB0fSh0KSxlLG4scil9ZnVuY3Rpb24gXyhlLHQsbixyKXtyZXR1cm4gcShHKHQpLGUsbixyKX1mdW5jdGlvbiBMKGUsdCxuLHIpe3JldHVybiBxKGZ1bmN0aW9uKGUsdCl7bGV0IG4scixvO2NvbnN0IGk9W107Zm9yKGxldCBhPTA7YTxlLmxlbmd0aCYmISgodC09Mik8MCk7KythKW49ZS5jaGFyQ29kZUF0KGEpLHI9bj4+OCxvPW4lMjU2LGkucHVzaChvKSxpLnB1c2gocik7cmV0dXJuIGl9KHQsZS5sZW5ndGgtbiksZSxuLHIpfWZ1bmN0aW9uIE8oZSx0LG4pe3JldHVybiAwPT09dCYmbj09PWUubGVuZ3RoP3IuZnJvbUJ5dGVBcnJheShlKTpyLmZyb21CeXRlQXJyYXkoZS5zbGljZSh0LG4pKX1mdW5jdGlvbiBFKGUsdCxuKXtuPU1hdGgubWluKGUubGVuZ3RoLG4pO2NvbnN0IHI9W107bGV0IG89dDtmb3IoO288bjspe2NvbnN0IHQ9ZVtvXTtsZXQgaT1udWxsLGE9dD4yMzk/NDp0PjIyMz8zOnQ+MTkxPzI6MTtpZihvK2E8PW4pe2xldCBuLHIsbCxzO3N3aXRjaChhKXtjYXNlIDE6dDwxMjgmJihpPXQpO2JyZWFrO2Nhc2UgMjpuPWVbbysxXSwxMjg9PSgxOTImbikmJihzPSgzMSZ0KTw8Nnw2MyZuLHM+MTI3JiYoaT1zKSk7YnJlYWs7Y2FzZSAzOm49ZVtvKzFdLHI9ZVtvKzJdLDEyOD09KDE5MiZuKSYmMTI4PT0oMTkyJnIpJiYocz0oMTUmdCk8PDEyfCg2MyZuKTw8Nnw2MyZyLHM+MjA0NyYmKHM8NTUyOTZ8fHM+NTczNDMpJiYoaT1zKSk7YnJlYWs7Y2FzZSA0Om49ZVtvKzFdLHI9ZVtvKzJdLGw9ZVtvKzNdLDEyOD09KDE5MiZuKSYmMTI4PT0oMTkyJnIpJiYxMjg9PSgxOTImbCkmJihzPSgxNSZ0KTw8MTh8KDYzJm4pPDwxMnwoNjMmcik8PDZ8NjMmbCxzPjY1NTM1JiZzPDExMTQxMTImJihpPXMpKX19bnVsbD09PWk/KGk9NjU1MzMsYT0xKTppPjY1NTM1JiYoaS09NjU1MzYsci5wdXNoKGk+Pj4xMCYxMDIzfDU1Mjk2KSxpPTU2MzIwfDEwMjMmaSksci5wdXNoKGkpLG8rPWF9cmV0dXJuIGZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7aWYodDw9UylyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZSk7bGV0IG49XCJcIixyPTA7Zm9yKDtyPHQ7KW4rPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUuc2xpY2UocixyKz1TKSk7cmV0dXJuIG59KHIpfXQua01heExlbmd0aD1hLHMuVFlQRURfQVJSQVlfU1VQUE9SVD1mdW5jdGlvbigpe3RyeXtjb25zdCBlPW5ldyBVaW50OEFycmF5KDEpLHQ9e2ZvbzpmdW5jdGlvbigpe3JldHVybiA0Mn19O3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YodCxVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCksNDI9PT1lLmZvbygpfWNhdGNoKGUpe3JldHVybiExfX0oKSxzLlRZUEVEX0FSUkFZX1NVUFBPUlR8fFwidW5kZWZpbmVkXCI9PXR5cGVvZiBjb25zb2xlfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBjb25zb2xlLmVycm9yfHxjb25zb2xlLmVycm9yKFwiVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IGBidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQuXCIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLnByb3RvdHlwZSxcInBhcmVudFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKHMuaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnVmZmVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLnByb3RvdHlwZSxcIm9mZnNldFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKHMuaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnl0ZU9mZnNldH19KSxzLnBvb2xTaXplPTgxOTIscy5mcm9tPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gYyhlLHQsbil9LE9iamVjdC5zZXRQcm90b3R5cGVPZihzLnByb3RvdHlwZSxVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKHMsVWludDhBcnJheSkscy5hbGxvYz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdShlKSxlPD0wP2woZSk6dm9pZCAwIT09dD9cInN0cmluZ1wiPT10eXBlb2Ygbj9sKGUpLmZpbGwodCxuKTpsKGUpLmZpbGwodCk6bChlKX0oZSx0LG4pfSxzLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGUpe3JldHVybiBmKGUpfSxzLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtyZXR1cm4gZihlKX0scy5pc0J1ZmZlcj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmITA9PT1lLl9pc0J1ZmZlciYmZSE9PXMucHJvdG90eXBlfSxzLmNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtpZihZKGUsVWludDhBcnJheSkmJihlPXMuZnJvbShlLGUub2Zmc2V0LGUuYnl0ZUxlbmd0aCkpLFkodCxVaW50OEFycmF5KSYmKHQ9cy5mcm9tKHQsdC5vZmZzZXQsdC5ieXRlTGVuZ3RoKSksIXMuaXNCdWZmZXIoZSl8fCFzLmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImJ1ZjFcIiwgXCJidWYyXCIgYXJndW1lbnRzIG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtpZihlPT09dClyZXR1cm4gMDtsZXQgbj1lLmxlbmd0aCxyPXQubGVuZ3RoO2ZvcihsZXQgbz0wLGk9TWF0aC5taW4obixyKTtvPGk7KytvKWlmKGVbb10hPT10W29dKXtuPWVbb10scj10W29dO2JyZWFrfXJldHVybiBuPHI/LTE6cjxuPzE6MH0scy5pc0VuY29kaW5nPWZ1bmN0aW9uKGUpe3N3aXRjaChTdHJpbmcoZSkudG9Mb3dlckNhc2UoKSl7Y2FzZVwiaGV4XCI6Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6Y2FzZVwiYXNjaWlcIjpjYXNlXCJsYXRpbjFcIjpjYXNlXCJiaW5hcnlcIjpjYXNlXCJiYXNlNjRcIjpjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0scy5jb25jYXQ9ZnVuY3Rpb24oZSx0KXtpZighQXJyYXkuaXNBcnJheShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIHMuYWxsb2MoMCk7bGV0IG47aWYodm9pZCAwPT09dClmb3IodD0wLG49MDtuPGUubGVuZ3RoOysrbil0Kz1lW25dLmxlbmd0aDtjb25zdCByPXMuYWxsb2NVbnNhZmUodCk7bGV0IG89MDtmb3Iobj0wO248ZS5sZW5ndGg7KytuKXtsZXQgdD1lW25dO2lmKFkodCxVaW50OEFycmF5KSlvK3QubGVuZ3RoPnIubGVuZ3RoPyhzLmlzQnVmZmVyKHQpfHwodD1zLmZyb20odCkpLHQuY29weShyLG8pKTpVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChyLHQsbyk7ZWxzZXtpZighcy5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTt0LmNvcHkocixvKX1vKz10Lmxlbmd0aH1yZXR1cm4gcn0scy5ieXRlTGVuZ3RoPXYscy5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLHMucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5sZW5ndGg7aWYoZSUyIT0wKXRocm93IG5ldyBSYW5nZUVycm9yKFwiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHNcIik7Zm9yKGxldCB0PTA7dDxlO3QrPTIpQyh0aGlzLHQsdCsxKTtyZXR1cm4gdGhpc30scy5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLmxlbmd0aDtpZihlJTQhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0c1wiKTtmb3IobGV0IHQ9MDt0PGU7dCs9NClDKHRoaXMsdCx0KzMpLEModGhpcyx0KzEsdCsyKTtyZXR1cm4gdGhpc30scy5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLmxlbmd0aDtpZihlJTghPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0c1wiKTtmb3IobGV0IHQ9MDt0PGU7dCs9OClDKHRoaXMsdCx0KzcpLEModGhpcyx0KzEsdCs2KSxDKHRoaXMsdCsyLHQrNSksQyh0aGlzLHQrMyx0KzQpO3JldHVybiB0aGlzfSxzLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT1lP1wiXCI6MD09PWFyZ3VtZW50cy5sZW5ndGg/RSh0aGlzLDAsZSk6Zy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHMucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nPXMucHJvdG90eXBlLnRvU3RyaW5nLHMucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbihlKXtpZighcy5pc0J1ZmZlcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlclwiKTtyZXR1cm4gdGhpcz09PWV8fDA9PT1zLmNvbXBhcmUodGhpcyxlKX0scy5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe2xldCBlPVwiXCI7Y29uc3Qgbj10LklOU1BFQ1RfTUFYX0JZVEVTO3JldHVybiBlPXRoaXMudG9TdHJpbmcoXCJoZXhcIiwwLG4pLnJlcGxhY2UoLyguezJ9KS9nLFwiJDEgXCIpLnRyaW0oKSx0aGlzLmxlbmd0aD5uJiYoZSs9XCIgLi4uIFwiKSxcIjxCdWZmZXIgXCIrZStcIj5cIn0saSYmKHMucHJvdG90eXBlW2ldPXMucHJvdG90eXBlLmluc3BlY3QpLHMucHJvdG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24oZSx0LG4scixvKXtpZihZKGUsVWludDhBcnJheSkmJihlPXMuZnJvbShlLGUub2Zmc2V0LGUuYnl0ZUxlbmd0aCkpLCFzLmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInRhcmdldFwiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXkuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgZSk7aWYodm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09biYmKG49ZT9lLmxlbmd0aDowKSx2b2lkIDA9PT1yJiYocj0wKSx2b2lkIDA9PT1vJiYobz10aGlzLmxlbmd0aCksdDwwfHxuPmUubGVuZ3RofHxyPDB8fG8+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJvdXQgb2YgcmFuZ2UgaW5kZXhcIik7aWYocj49byYmdD49bilyZXR1cm4gMDtpZihyPj1vKXJldHVybi0xO2lmKHQ+PW4pcmV0dXJuIDE7aWYodGhpcz09PWUpcmV0dXJuIDA7bGV0IGk9KG8+Pj49MCktKHI+Pj49MCksYT0obj4+Pj0wKS0odD4+Pj0wKTtjb25zdCBsPU1hdGgubWluKGksYSksYz10aGlzLnNsaWNlKHIsbyksdT1lLnNsaWNlKHQsbik7Zm9yKGxldCBlPTA7ZTxsOysrZSlpZihjW2VdIT09dVtlXSl7aT1jW2VdLGE9dVtlXTticmVha31yZXR1cm4gaTxhPy0xOmE8aT8xOjB9LHMucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4tMSE9PXRoaXMuaW5kZXhPZihlLHQsbil9LHMucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBtKHRoaXMsZSx0LG4sITApfSxzLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG0odGhpcyxlLHQsbiwhMSl9LHMucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKHZvaWQgMD09PXQpcj1cInV0ZjhcIixuPXRoaXMubGVuZ3RoLHQ9MDtlbHNlIGlmKHZvaWQgMD09PW4mJlwic3RyaW5nXCI9PXR5cGVvZiB0KXI9dCxuPXRoaXMubGVuZ3RoLHQ9MDtlbHNle2lmKCFpc0Zpbml0ZSh0KSl0aHJvdyBuZXcgRXJyb3IoXCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZFwiKTt0Pj4+PTAsaXNGaW5pdGUobik/KG4+Pj49MCx2b2lkIDA9PT1yJiYocj1cInV0ZjhcIikpOihyPW4sbj12b2lkIDApfWNvbnN0IG89dGhpcy5sZW5ndGgtdDtpZigodm9pZCAwPT09bnx8bj5vKSYmKG49byksZS5sZW5ndGg+MCYmKG48MHx8dDwwKXx8dD50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzXCIpO3J8fChyPVwidXRmOFwiKTtsZXQgaT0hMTtmb3IoOzspc3dpdGNoKHIpe2Nhc2VcImhleFwiOnJldHVybiB3KHRoaXMsZSx0LG4pO2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOnJldHVybiBiKHRoaXMsZSx0LG4pO2Nhc2VcImFzY2lpXCI6Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuIHgodGhpcyxlLHQsbik7Y2FzZVwiYmFzZTY0XCI6cmV0dXJuIF8odGhpcyxlLHQsbik7Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6cmV0dXJuIEwodGhpcyxlLHQsbik7ZGVmYXVsdDppZihpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIityKTtyPShcIlwiK3IpLnRvTG93ZXJDYXNlKCksaT0hMH19LHMucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOlwiQnVmZmVyXCIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnJ8fHRoaXMsMCl9fTtjb25zdCBTPTQwOTY7ZnVuY3Rpb24gTShlLHQsbil7bGV0IHI9XCJcIjtuPU1hdGgubWluKGUubGVuZ3RoLG4pO2ZvcihsZXQgbz10O288bjsrK28pcis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmZVtvXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gaihlLHQsbil7bGV0IHI9XCJcIjtuPU1hdGgubWluKGUubGVuZ3RoLG4pO2ZvcihsZXQgbz10O288bjsrK28pcis9U3RyaW5nLmZyb21DaGFyQ29kZShlW29dKTtyZXR1cm4gcn1mdW5jdGlvbiBrKGUsdCxuKXtjb25zdCByPWUubGVuZ3RoOyghdHx8dDwwKSYmKHQ9MCksKCFufHxuPDB8fG4+cikmJihuPXIpO2xldCBvPVwiXCI7Zm9yKGxldCByPXQ7cjxuOysrcilvKz1YW2Vbcl1dO3JldHVybiBvfWZ1bmN0aW9uIFIoZSx0LG4pe2NvbnN0IHI9ZS5zbGljZSh0LG4pO2xldCBvPVwiXCI7Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aC0xO2UrPTIpbys9U3RyaW5nLmZyb21DaGFyQ29kZShyW2VdKzI1NipyW2UrMV0pO3JldHVybiBvfWZ1bmN0aW9uIFAoZSx0LG4pe2lmKGUlMSE9MHx8ZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKFwib2Zmc2V0IGlzIG5vdCB1aW50XCIpO2lmKGUrdD5uKXRocm93IG5ldyBSYW5nZUVycm9yKFwiVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aFwiKX1mdW5jdGlvbiBBKGUsdCxuLHIsbyxpKXtpZighcy5pc0J1ZmZlcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZmZlclwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZih0Pm98fHQ8aSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKTtpZihuK3I+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbmRleCBvdXQgb2YgcmFuZ2VcIil9ZnVuY3Rpb24gSShlLHQsbixyLG8pe0YodCxyLG8sZSxuLDcpO2xldCBpPU51bWJlcih0JkJpZ0ludCg0Mjk0OTY3Mjk1KSk7ZVtuKytdPWksaT4+PTgsZVtuKytdPWksaT4+PTgsZVtuKytdPWksaT4+PTgsZVtuKytdPWk7bGV0IGE9TnVtYmVyKHQ+PkJpZ0ludCgzMikmQmlnSW50KDQyOTQ5NjcyOTUpKTtyZXR1cm4gZVtuKytdPWEsYT4+PTgsZVtuKytdPWEsYT4+PTgsZVtuKytdPWEsYT4+PTgsZVtuKytdPWEsbn1mdW5jdGlvbiBUKGUsdCxuLHIsbyl7Rih0LHIsbyxlLG4sNyk7bGV0IGk9TnVtYmVyKHQmQmlnSW50KDQyOTQ5NjcyOTUpKTtlW24rN109aSxpPj49OCxlW24rNl09aSxpPj49OCxlW24rNV09aSxpPj49OCxlW24rNF09aTtsZXQgYT1OdW1iZXIodD4+QmlnSW50KDMyKSZCaWdJbnQoNDI5NDk2NzI5NSkpO3JldHVybiBlW24rM109YSxhPj49OCxlW24rMl09YSxhPj49OCxlW24rMV09YSxhPj49OCxlW25dPWEsbis4fWZ1bmN0aW9uIEgoZSx0LG4scixvLGkpe2lmKG4rcj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKTtpZihuPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbmRleCBvdXQgb2YgcmFuZ2VcIil9ZnVuY3Rpb24gVihlLHQsbixyLGkpe3JldHVybiB0PSt0LG4+Pj49MCxpfHxIKGUsMCxuLDQpLG8ud3JpdGUoZSx0LG4sciwyMyw0KSxuKzR9ZnVuY3Rpb24gQihlLHQsbixyLGkpe3JldHVybiB0PSt0LG4+Pj49MCxpfHxIKGUsMCxuLDgpLG8ud3JpdGUoZSx0LG4sciw1Miw4KSxuKzh9cy5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXtjb25zdCBuPXRoaXMubGVuZ3RoOyhlPX5+ZSk8MD8oZSs9bik8MCYmKGU9MCk6ZT5uJiYoZT1uKSwodD12b2lkIDA9PT10P246fn50KTwwPyh0Kz1uKTwwJiYodD0wKTp0Pm4mJih0PW4pLHQ8ZSYmKHQ9ZSk7Y29uc3Qgcj10aGlzLnN1YmFycmF5KGUsdCk7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihyLHMucHJvdG90eXBlKSxyfSxzLnByb3RvdHlwZS5yZWFkVWludExFPXMucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24oZSx0LG4pe2U+Pj49MCx0Pj4+PTAsbnx8UChlLHQsdGhpcy5sZW5ndGgpO2xldCByPXRoaXNbZV0sbz0xLGk9MDtmb3IoOysraTx0JiYobyo9MjU2KTspcis9dGhpc1tlK2ldKm87cmV0dXJuIHJ9LHMucHJvdG90eXBlLnJlYWRVaW50QkU9cy5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbihlLHQsbil7ZT4+Pj0wLHQ+Pj49MCxufHxQKGUsdCx0aGlzLmxlbmd0aCk7bGV0IHI9dGhpc1tlKy0tdF0sbz0xO2Zvcig7dD4wJiYobyo9MjU2KTspcis9dGhpc1tlKy0tdF0qbztyZXR1cm4gcn0scy5wcm90b3R5cGUucmVhZFVpbnQ4PXMucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbihlLHQpe3JldHVybiBlPj4+PTAsdHx8UChlLDEsdGhpcy5sZW5ndGgpLHRoaXNbZV19LHMucHJvdG90eXBlLnJlYWRVaW50MTZMRT1zLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT4+Pj0wLHR8fFAoZSwyLHRoaXMubGVuZ3RoKSx0aGlzW2VdfHRoaXNbZSsxXTw8OH0scy5wcm90b3R5cGUucmVhZFVpbnQxNkJFPXMucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbihlLHQpe3JldHVybiBlPj4+PTAsdHx8UChlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSxzLnByb3RvdHlwZS5yZWFkVWludDMyTEU9cy5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU+Pj49MCx0fHxQKGUsNCx0aGlzLmxlbmd0aCksKHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTYpKzE2Nzc3MjE2KnRoaXNbZSszXX0scy5wcm90b3R5cGUucmVhZFVpbnQzMkJFPXMucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiBlPj4+PTAsdHx8UChlLDQsdGhpcy5sZW5ndGgpLDE2Nzc3MjE2KnRoaXNbZV0rKHRoaXNbZSsxXTw8MTZ8dGhpc1tlKzJdPDw4fHRoaXNbZSszXSl9LHMucHJvdG90eXBlLnJlYWRCaWdVSW50NjRMRT1KKChmdW5jdGlvbihlKXtOKGU+Pj49MCxcIm9mZnNldFwiKTtjb25zdCB0PXRoaXNbZV0sbj10aGlzW2UrN107dm9pZCAwIT09dCYmdm9pZCAwIT09bnx8VShlLHRoaXMubGVuZ3RoLTgpO2NvbnN0IHI9dCsyNTYqdGhpc1srK2VdKzY1NTM2KnRoaXNbKytlXSt0aGlzWysrZV0qMioqMjQsbz10aGlzWysrZV0rMjU2KnRoaXNbKytlXSs2NTUzNip0aGlzWysrZV0rbioyKioyNDtyZXR1cm4gQmlnSW50KHIpKyhCaWdJbnQobyk8PEJpZ0ludCgzMikpfSkpLHMucHJvdG90eXBlLnJlYWRCaWdVSW50NjRCRT1KKChmdW5jdGlvbihlKXtOKGU+Pj49MCxcIm9mZnNldFwiKTtjb25zdCB0PXRoaXNbZV0sbj10aGlzW2UrN107dm9pZCAwIT09dCYmdm9pZCAwIT09bnx8VShlLHRoaXMubGVuZ3RoLTgpO2NvbnN0IHI9dCoyKioyNCs2NTUzNip0aGlzWysrZV0rMjU2KnRoaXNbKytlXSt0aGlzWysrZV0sbz10aGlzWysrZV0qMioqMjQrNjU1MzYqdGhpc1srK2VdKzI1Nip0aGlzWysrZV0rbjtyZXR1cm4oQmlnSW50KHIpPDxCaWdJbnQoMzIpKStCaWdJbnQobyl9KSkscy5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxuKXtlPj4+PTAsdD4+Pj0wLG58fFAoZSx0LHRoaXMubGVuZ3RoKTtsZXQgcj10aGlzW2VdLG89MSxpPTA7Zm9yKDsrK2k8dCYmKG8qPTI1Nik7KXIrPXRoaXNbZStpXSpvO3JldHVybiBvKj0xMjgscj49byYmKHItPU1hdGgucG93KDIsOCp0KSkscn0scy5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKGUsdCxuKXtlPj4+PTAsdD4+Pj0wLG58fFAoZSx0LHRoaXMubGVuZ3RoKTtsZXQgcj10LG89MSxpPXRoaXNbZSstLXJdO2Zvcig7cj4wJiYobyo9MjU2KTspaSs9dGhpc1tlKy0tcl0qbztyZXR1cm4gbyo9MTI4LGk+PW8mJihpLT1NYXRoLnBvdygyLDgqdCkpLGl9LHMucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU+Pj49MCx0fHxQKGUsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbZV0/LTEqKDI1NS10aGlzW2VdKzEpOnRoaXNbZV19LHMucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7ZT4+Pj0wLHR8fFAoZSwyLHRoaXMubGVuZ3RoKTtjb25zdCBuPXRoaXNbZV18dGhpc1tlKzFdPDw4O3JldHVybiAzMjc2OCZuPzQyOTQ5MDE3NjB8bjpufSxzLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbihlLHQpe2U+Pj49MCx0fHxQKGUsMix0aGlzLmxlbmd0aCk7Y29uc3Qgbj10aGlzW2UrMV18dGhpc1tlXTw8ODtyZXR1cm4gMzI3Njgmbj80Mjk0OTAxNzYwfG46bn0scy5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT4+Pj0wLHR8fFAoZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2fHRoaXNbZSszXTw8MjR9LHMucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU+Pj49MCx0fHxQKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXTw8MjR8dGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdfSxzLnByb3RvdHlwZS5yZWFkQmlnSW50NjRMRT1KKChmdW5jdGlvbihlKXtOKGU+Pj49MCxcIm9mZnNldFwiKTtjb25zdCB0PXRoaXNbZV0sbj10aGlzW2UrN107dm9pZCAwIT09dCYmdm9pZCAwIT09bnx8VShlLHRoaXMubGVuZ3RoLTgpO2NvbnN0IHI9dGhpc1tlKzRdKzI1Nip0aGlzW2UrNV0rNjU1MzYqdGhpc1tlKzZdKyhuPDwyNCk7cmV0dXJuKEJpZ0ludChyKTw8QmlnSW50KDMyKSkrQmlnSW50KHQrMjU2KnRoaXNbKytlXSs2NTUzNip0aGlzWysrZV0rdGhpc1srK2VdKjIqKjI0KX0pKSxzLnByb3RvdHlwZS5yZWFkQmlnSW50NjRCRT1KKChmdW5jdGlvbihlKXtOKGU+Pj49MCxcIm9mZnNldFwiKTtjb25zdCB0PXRoaXNbZV0sbj10aGlzW2UrN107dm9pZCAwIT09dCYmdm9pZCAwIT09bnx8VShlLHRoaXMubGVuZ3RoLTgpO2NvbnN0IHI9KHQ8PDI0KSs2NTUzNip0aGlzWysrZV0rMjU2KnRoaXNbKytlXSt0aGlzWysrZV07cmV0dXJuKEJpZ0ludChyKTw8QmlnSW50KDMyKSkrQmlnSW50KHRoaXNbKytlXSoyKioyNCs2NTUzNip0aGlzWysrZV0rMjU2KnRoaXNbKytlXStuKX0pKSxzLnByb3RvdHlwZS5yZWFkRmxvYXRMRT1mdW5jdGlvbihlLHQpe3JldHVybiBlPj4+PTAsdHx8UChlLDQsdGhpcy5sZW5ndGgpLG8ucmVhZCh0aGlzLGUsITAsMjMsNCl9LHMucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU+Pj49MCx0fHxQKGUsNCx0aGlzLmxlbmd0aCksby5yZWFkKHRoaXMsZSwhMSwyMyw0KX0scy5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU+Pj49MCx0fHxQKGUsOCx0aGlzLmxlbmd0aCksby5yZWFkKHRoaXMsZSwhMCw1Miw4KX0scy5wcm90b3R5cGUucmVhZERvdWJsZUJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU+Pj49MCx0fHxQKGUsOCx0aGlzLmxlbmd0aCksby5yZWFkKHRoaXMsZSwhMSw1Miw4KX0scy5wcm90b3R5cGUud3JpdGVVaW50TEU9cy5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24oZSx0LG4scil7ZT0rZSx0Pj4+PTAsbj4+Pj0wLHJ8fEEodGhpcyxlLHQsbixNYXRoLnBvdygyLDgqbiktMSwwKTtsZXQgbz0xLGk9MDtmb3IodGhpc1t0XT0yNTUmZTsrK2k8biYmKG8qPTI1Nik7KXRoaXNbdCtpXT1lL28mMjU1O3JldHVybiB0K259LHMucHJvdG90eXBlLndyaXRlVWludEJFPXMucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKGUsdCxuLHIpe2U9K2UsdD4+Pj0wLG4+Pj49MCxyfHxBKHRoaXMsZSx0LG4sTWF0aC5wb3coMiw4Km4pLTEsMCk7bGV0IG89bi0xLGk9MTtmb3IodGhpc1t0K29dPTI1NSZlOy0tbz49MCYmKGkqPTI1Nik7KXRoaXNbdCtvXT1lL2kmMjU1O3JldHVybiB0K259LHMucHJvdG90eXBlLndyaXRlVWludDg9cy5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9K2UsdD4+Pj0wLG58fEEodGhpcyxlLHQsMSwyNTUsMCksdGhpc1t0XT0yNTUmZSx0KzF9LHMucHJvdG90eXBlLndyaXRlVWludDE2TEU9cy5wcm90b3R5cGUud3JpdGVVSW50MTZMRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9K2UsdD4+Pj0wLG58fEEodGhpcyxlLHQsMiw2NTUzNSwwKSx0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0KzJ9LHMucHJvdG90eXBlLndyaXRlVWludDE2QkU9cy5wcm90b3R5cGUud3JpdGVVSW50MTZCRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9K2UsdD4+Pj0wLG58fEEodGhpcyxlLHQsMiw2NTUzNSwwKSx0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSx0KzJ9LHMucHJvdG90eXBlLndyaXRlVWludDMyTEU9cy5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9K2UsdD4+Pj0wLG58fEEodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbdCszXT1lPj4+MjQsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrMV09ZT4+PjgsdGhpc1t0XT0yNTUmZSx0KzR9LHMucHJvdG90eXBlLndyaXRlVWludDMyQkU9cy5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9K2UsdD4+Pj0wLG58fEEodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSx0KzR9LHMucHJvdG90eXBlLndyaXRlQmlnVUludDY0TEU9SigoZnVuY3Rpb24oZSx0PTApe3JldHVybiBJKHRoaXMsZSx0LEJpZ0ludCgwKSxCaWdJbnQoXCIweGZmZmZmZmZmZmZmZmZmZmZcIikpfSkpLHMucHJvdG90eXBlLndyaXRlQmlnVUludDY0QkU9SigoZnVuY3Rpb24oZSx0PTApe3JldHVybiBUKHRoaXMsZSx0LEJpZ0ludCgwKSxCaWdJbnQoXCIweGZmZmZmZmZmZmZmZmZmZmZcIikpfSkpLHMucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oZSx0LG4scil7aWYoZT0rZSx0Pj4+PTAsIXIpe2NvbnN0IHI9TWF0aC5wb3coMiw4Km4tMSk7QSh0aGlzLGUsdCxuLHItMSwtcil9bGV0IG89MCxpPTEsYT0wO2Zvcih0aGlzW3RdPTI1NSZlOysrbzxuJiYoaSo9MjU2KTspZTwwJiYwPT09YSYmMCE9PXRoaXNbdCtvLTFdJiYoYT0xKSx0aGlzW3Qrb109KGUvaT4+MCktYSYyNTU7cmV0dXJuIHQrbn0scy5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbihlLHQsbixyKXtpZihlPStlLHQ+Pj49MCwhcil7Y29uc3Qgcj1NYXRoLnBvdygyLDgqbi0xKTtBKHRoaXMsZSx0LG4sci0xLC1yKX1sZXQgbz1uLTEsaT0xLGE9MDtmb3IodGhpc1t0K29dPTI1NSZlOy0tbz49MCYmKGkqPTI1Nik7KWU8MCYmMD09PWEmJjAhPT10aGlzW3QrbysxXSYmKGE9MSksdGhpc1t0K29dPShlL2k+PjApLWEmMjU1O3JldHVybiB0K259LHMucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9K2UsdD4+Pj0wLG58fEEodGhpcyxlLHQsMSwxMjcsLTEyOCksZTwwJiYoZT0yNTUrZSsxKSx0aGlzW3RdPTI1NSZlLHQrMX0scy5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0Pj4+PTAsbnx8QSh0aGlzLGUsdCwyLDMyNzY3LC0zMjc2OCksdGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgsdCsyfSxzLnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHQ+Pj49MCxufHxBKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSx0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSx0KzJ9LHMucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9K2UsdD4+Pj0wLG58fEEodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCszXT1lPj4+MjQsdCs0fSxzLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHQ+Pj49MCxufHxBKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksZTwwJiYoZT00Mjk0OTY3Mjk1K2UrMSksdGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlLHQrNH0scy5wcm90b3R5cGUud3JpdGVCaWdJbnQ2NExFPUooKGZ1bmN0aW9uKGUsdD0wKXtyZXR1cm4gSSh0aGlzLGUsdCwtQmlnSW50KFwiMHg4MDAwMDAwMDAwMDAwMDAwXCIpLEJpZ0ludChcIjB4N2ZmZmZmZmZmZmZmZmZmZlwiKSl9KSkscy5wcm90b3R5cGUud3JpdGVCaWdJbnQ2NEJFPUooKGZ1bmN0aW9uKGUsdD0wKXtyZXR1cm4gVCh0aGlzLGUsdCwtQmlnSW50KFwiMHg4MDAwMDAwMDAwMDAwMDAwXCIpLEJpZ0ludChcIjB4N2ZmZmZmZmZmZmZmZmZmZlwiKSl9KSkscy5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gVih0aGlzLGUsdCwhMCxuKX0scy5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gVih0aGlzLGUsdCwhMSxuKX0scy5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIEIodGhpcyxlLHQsITAsbil9LHMucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBCKHRoaXMsZSx0LCExLG4pfSxzLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFzLmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJhcmd1bWVudCBzaG91bGQgYmUgYSBCdWZmZXJcIik7aWYobnx8KG49MCkscnx8MD09PXJ8fChyPXRoaXMubGVuZ3RoKSx0Pj1lLmxlbmd0aCYmKHQ9ZS5sZW5ndGgpLHR8fCh0PTApLHI+MCYmcjxuJiYocj1uKSxyPT09bilyZXR1cm4gMDtpZigwPT09ZS5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzXCIpO2lmKG48MHx8bj49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbmRleCBvdXQgb2YgcmFuZ2VcIik7aWYocjwwKXRocm93IG5ldyBSYW5nZUVycm9yKFwic291cmNlRW5kIG91dCBvZiBib3VuZHNcIik7cj50aGlzLmxlbmd0aCYmKHI9dGhpcy5sZW5ndGgpLGUubGVuZ3RoLXQ8ci1uJiYocj1lLmxlbmd0aC10K24pO2NvbnN0IG89ci1uO3JldHVybiB0aGlzPT09ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbj90aGlzLmNvcHlXaXRoaW4odCxuLHIpOlVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKGUsdGhpcy5zdWJhcnJheShuLHIpLHQpLG99LHMucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oZSx0LG4scil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0PyhyPXQsdD0wLG49dGhpcy5sZW5ndGgpOlwic3RyaW5nXCI9PXR5cGVvZiBuJiYocj1uLG49dGhpcy5sZW5ndGgpLHZvaWQgMCE9PXImJlwic3RyaW5nXCIhPXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoXCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nXCIpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiByJiYhcy5pc0VuY29kaW5nKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIityKTtpZigxPT09ZS5sZW5ndGgpe2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KDApOyhcInV0ZjhcIj09PXImJnQ8MTI4fHxcImxhdGluMVwiPT09cikmJihlPXQpfX1lbHNlXCJudW1iZXJcIj09dHlwZW9mIGU/ZSY9MjU1OlwiYm9vbGVhblwiPT10eXBlb2YgZSYmKGU9TnVtYmVyKGUpKTtpZih0PDB8fHRoaXMubGVuZ3RoPHR8fHRoaXMubGVuZ3RoPG4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJPdXQgb2YgcmFuZ2UgaW5kZXhcIik7aWYobjw9dClyZXR1cm4gdGhpcztsZXQgbztpZih0Pj4+PTAsbj12b2lkIDA9PT1uP3RoaXMubGVuZ3RoOm4+Pj4wLGV8fChlPTApLFwibnVtYmVyXCI9PXR5cGVvZiBlKWZvcihvPXQ7bzxuOysrbyl0aGlzW29dPWU7ZWxzZXtjb25zdCBpPXMuaXNCdWZmZXIoZSk/ZTpzLmZyb20oZSxyKSxhPWkubGVuZ3RoO2lmKDA9PT1hKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSB2YWx1ZSBcIicrZSsnXCIgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQgXCJ2YWx1ZVwiJyk7Zm9yKG89MDtvPG4tdDsrK28pdGhpc1tvK3RdPWlbbyVhXX1yZXR1cm4gdGhpc307Y29uc3QgRD17fTtmdW5jdGlvbiBaKGUsdCxuKXtEW2VdPWNsYXNzIGV4dGVuZHMgbntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXCJtZXNzYWdlXCIse3ZhbHVlOnQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHRoaXMubmFtZT1gJHt0aGlzLm5hbWV9IFske2V9XWAsdGhpcy5zdGFjayxkZWxldGUgdGhpcy5uYW1lfWdldCBjb2RlKCl7cmV0dXJuIGV9c2V0IGNvZGUoZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXCJjb2RlXCIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmUsd3JpdGFibGU6ITB9KX10b1N0cmluZygpe3JldHVybmAke3RoaXMubmFtZX0gWyR7ZX1dOiAke3RoaXMubWVzc2FnZX1gfX19ZnVuY3Rpb24gJChlKXtsZXQgdD1cIlwiLG49ZS5sZW5ndGg7Y29uc3Qgcj1cIi1cIj09PWVbMF0/MTowO2Zvcig7bj49cis0O24tPTMpdD1gXyR7ZS5zbGljZShuLTMsbil9JHt0fWA7cmV0dXJuYCR7ZS5zbGljZSgwLG4pfSR7dH1gfWZ1bmN0aW9uIEYoZSx0LG4scixvLGkpe2lmKGU+bnx8ZTx0KXtjb25zdCByPVwiYmlnaW50XCI9PXR5cGVvZiB0P1wiblwiOlwiXCI7bGV0IG87dGhyb3cgbz1pPjM/MD09PXR8fHQ9PT1CaWdJbnQoMCk/YD49IDAke3J9IGFuZCA8IDIke3J9ICoqICR7OCooaSsxKX0ke3J9YDpgPj0gLSgyJHtyfSAqKiAkezgqKGkrMSktMX0ke3J9KSBhbmQgPCAyICoqICR7OCooaSsxKS0xfSR7cn1gOmA+PSAke3R9JHtyfSBhbmQgPD0gJHtufSR7cn1gLG5ldyBELkVSUl9PVVRfT0ZfUkFOR0UoXCJ2YWx1ZVwiLG8sZSl9IWZ1bmN0aW9uKGUsdCxuKXtOKHQsXCJvZmZzZXRcIiksdm9pZCAwIT09ZVt0XSYmdm9pZCAwIT09ZVt0K25dfHxVKHQsZS5sZW5ndGgtKG4rMSkpfShyLG8saSl9ZnVuY3Rpb24gTihlLHQpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiBlKXRocm93IG5ldyBELkVSUl9JTlZBTElEX0FSR19UWVBFKHQsXCJudW1iZXJcIixlKX1mdW5jdGlvbiBVKGUsdCxuKXtpZihNYXRoLmZsb29yKGUpIT09ZSl0aHJvdyBOKGUsbiksbmV3IEQuRVJSX09VVF9PRl9SQU5HRShufHxcIm9mZnNldFwiLFwiYW4gaW50ZWdlclwiLGUpO2lmKHQ8MCl0aHJvdyBuZXcgRC5FUlJfQlVGRkVSX09VVF9PRl9CT1VORFM7dGhyb3cgbmV3IEQuRVJSX09VVF9PRl9SQU5HRShufHxcIm9mZnNldFwiLGA+PSAke24/MTowfSBhbmQgPD0gJHt0fWAsZSl9WihcIkVSUl9CVUZGRVJfT1VUX09GX0JPVU5EU1wiLChmdW5jdGlvbihlKXtyZXR1cm4gZT9gJHtlfSBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHNgOlwiQXR0ZW1wdCB0byBhY2Nlc3MgbWVtb3J5IG91dHNpZGUgYnVmZmVyIGJvdW5kc1wifSksUmFuZ2VFcnJvciksWihcIkVSUl9JTlZBTElEX0FSR19UWVBFXCIsKGZ1bmN0aW9uKGUsdCl7cmV0dXJuYFRoZSBcIiR7ZX1cIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIHR9YH0pLFR5cGVFcnJvciksWihcIkVSUl9PVVRfT0ZfUkFOR0VcIiwoZnVuY3Rpb24oZSx0LG4pe2xldCByPWBUaGUgdmFsdWUgb2YgXCIke2V9XCIgaXMgb3V0IG9mIHJhbmdlLmAsbz1uO3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKG4pJiZNYXRoLmFicyhuKT4yKiozMj9vPSQoU3RyaW5nKG4pKTpcImJpZ2ludFwiPT10eXBlb2YgbiYmKG89U3RyaW5nKG4pLChuPkJpZ0ludCgyKSoqQmlnSW50KDMyKXx8bjwtKEJpZ0ludCgyKSoqQmlnSW50KDMyKSkpJiYobz0kKG8pKSxvKz1cIm5cIikscis9YCBJdCBtdXN0IGJlICR7dH0uIFJlY2VpdmVkICR7b31gLHJ9KSxSYW5nZUVycm9yKTtjb25zdCBXPS9bXisvMC05QS1aYS16LV9dL2c7ZnVuY3Rpb24geihlLHQpe2xldCBuO3Q9dHx8MS8wO2NvbnN0IHI9ZS5sZW5ndGg7bGV0IG89bnVsbDtjb25zdCBpPVtdO2ZvcihsZXQgYT0wO2E8cjsrK2Epe2lmKG49ZS5jaGFyQ29kZUF0KGEpLG4+NTUyOTUmJm48NTczNDQpe2lmKCFvKXtpZihuPjU2MzE5KXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYoYSsxPT09cil7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfW89bjtjb250aW51ZX1pZihuPDU2MzIwKXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSksbz1uO2NvbnRpbnVlfW49NjU1MzYrKG8tNTUyOTY8PDEwfG4tNTYzMjApfWVsc2UgbyYmKHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2lmKG89bnVsbCxuPDEyOCl7aWYoKHQtPTEpPDApYnJlYWs7aS5wdXNoKG4pfWVsc2UgaWYobjwyMDQ4KXtpZigodC09Mik8MClicmVhaztpLnB1c2gobj4+NnwxOTIsNjMmbnwxMjgpfWVsc2UgaWYobjw2NTUzNil7aWYoKHQtPTMpPDApYnJlYWs7aS5wdXNoKG4+PjEyfDIyNCxuPj42JjYzfDEyOCw2MyZufDEyOCl9ZWxzZXtpZighKG48MTExNDExMikpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb2RlIHBvaW50XCIpO2lmKCh0LT00KTwwKWJyZWFrO2kucHVzaChuPj4xOHwyNDAsbj4+MTImNjN8MTI4LG4+PjYmNjN8MTI4LDYzJm58MTI4KX19cmV0dXJuIGl9ZnVuY3Rpb24gRyhlKXtyZXR1cm4gci50b0J5dGVBcnJheShmdW5jdGlvbihlKXtpZigoZT0oZT1lLnNwbGl0KFwiPVwiKVswXSkudHJpbSgpLnJlcGxhY2UoVyxcIlwiKSkubGVuZ3RoPDIpcmV0dXJuXCJcIjtmb3IoO2UubGVuZ3RoJTQhPTA7KWUrPVwiPVwiO3JldHVybiBlfShlKSl9ZnVuY3Rpb24gcShlLHQsbixyKXtsZXQgbztmb3Iobz0wO288ciYmIShvK24+PXQubGVuZ3RofHxvPj1lLmxlbmd0aCk7KytvKXRbbytuXT1lW29dO3JldHVybiBvfWZ1bmN0aW9uIFkoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIHR8fG51bGwhPWUmJm51bGwhPWUuY29uc3RydWN0b3ImJm51bGwhPWUuY29uc3RydWN0b3IubmFtZSYmZS5jb25zdHJ1Y3Rvci5uYW1lPT09dC5uYW1lfWZ1bmN0aW9uIEsoZSl7cmV0dXJuIGUhPWV9Y29uc3QgWD1mdW5jdGlvbigpe2NvbnN0IGU9XCIwMTIzNDU2Nzg5YWJjZGVmXCIsdD1uZXcgQXJyYXkoMjU2KTtmb3IobGV0IG49MDtuPDE2Oysrbil7Y29uc3Qgcj0xNipuO2ZvcihsZXQgbz0wO288MTY7KytvKXRbcitvXT1lW25dK2Vbb119cmV0dXJuIHR9KCk7ZnVuY3Rpb24gSihlKXtyZXR1cm5cInVuZGVmaW5lZFwiPT10eXBlb2YgQmlnSW50P1E6ZX1mdW5jdGlvbiBRKCl7dGhyb3cgbmV3IEVycm9yKFwiQmlnSW50IG5vdCBzdXBwb3J0ZWRcIil9fSw0NjU6ZT0+e3ZhciB0LG49XCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3Q/UmVmbGVjdDpudWxsLHI9biYmXCJmdW5jdGlvblwiPT10eXBlb2Ygbi5hcHBseT9uLmFwcGx5OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoZSx0LG4pfTt0PW4mJlwiZnVuY3Rpb25cIj09dHlwZW9mIG4ub3duS2V5cz9uLm93bktleXM6T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSkpfTpmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSl9O3ZhciBvPU51bWJlci5pc05hTnx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPWV9O2Z1bmN0aW9uIGkoKXtpLmluaXQuY2FsbCh0aGlzKX1lLmV4cG9ydHM9aSxlLmV4cG9ydHMub25jZT1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixyKXtmdW5jdGlvbiBvKG4pe2UucmVtb3ZlTGlzdGVuZXIodCxpKSxyKG4pfWZ1bmN0aW9uIGkoKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnJlbW92ZUxpc3RlbmVyJiZlLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixvKSxuKFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSl9dihlLHQsaSx7b25jZTohMH0pLFwiZXJyb3JcIiE9PXQmJmZ1bmN0aW9uKGUsdCxuKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLm9uJiZ2KGUsXCJlcnJvclwiLHQse29uY2U6ITB9KX0oZSxvKX0pKX0saS5FdmVudEVtaXR0ZXI9aSxpLnByb3RvdHlwZS5fZXZlbnRzPXZvaWQgMCxpLnByb3RvdHlwZS5fZXZlbnRzQ291bnQ9MCxpLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzPXZvaWQgMDt2YXIgYT0xMDtmdW5jdGlvbiBsKGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwibGlzdGVuZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgZSl9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gdm9pZCAwPT09ZS5fbWF4TGlzdGVuZXJzP2kuZGVmYXVsdE1heExpc3RlbmVyczplLl9tYXhMaXN0ZW5lcnN9ZnVuY3Rpb24gYyhlLHQsbixyKXt2YXIgbyxpLGEsYztpZihsKG4pLHZvaWQgMD09PShpPWUuX2V2ZW50cyk/KGk9ZS5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksZS5fZXZlbnRzQ291bnQ9MCk6KHZvaWQgMCE9PWkubmV3TGlzdGVuZXImJihlLmVtaXQoXCJuZXdMaXN0ZW5lclwiLHQsbi5saXN0ZW5lcj9uLmxpc3RlbmVyOm4pLGk9ZS5fZXZlbnRzKSxhPWlbdF0pLHZvaWQgMD09PWEpYT1pW3RdPW4sKytlLl9ldmVudHNDb3VudDtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGE/YT1pW3RdPXI/W24sYV06W2Esbl06cj9hLnVuc2hpZnQobik6YS5wdXNoKG4pLChvPXMoZSkpPjAmJmEubGVuZ3RoPm8mJiFhLndhcm5lZCl7YS53YXJuZWQ9ITA7dmFyIHU9bmV3IEVycm9yKFwiUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiBcIithLmxlbmd0aCtcIiBcIitTdHJpbmcodCkrXCIgbGlzdGVuZXJzIGFkZGVkLiBVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBpbmNyZWFzZSBsaW1pdFwiKTt1Lm5hbWU9XCJNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmdcIix1LmVtaXR0ZXI9ZSx1LnR5cGU9dCx1LmNvdW50PWEubGVuZ3RoLGM9dSxjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybihjKX1yZXR1cm4gZX1mdW5jdGlvbiB1KCl7aWYoIXRoaXMuZmlyZWQpcmV0dXJuIHRoaXMudGFyZ2V0LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSx0aGlzLndyYXBGbiksdGhpcy5maXJlZD0hMCwwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQpOnRoaXMubGlzdGVuZXIuYXBwbHkodGhpcy50YXJnZXQsYXJndW1lbnRzKX1mdW5jdGlvbiBmKGUsdCxuKXt2YXIgcj17ZmlyZWQ6ITEsd3JhcEZuOnZvaWQgMCx0YXJnZXQ6ZSx0eXBlOnQsbGlzdGVuZXI6bn0sbz11LmJpbmQocik7cmV0dXJuIG8ubGlzdGVuZXI9bixyLndyYXBGbj1vLG99ZnVuY3Rpb24gZChlLHQsbil7dmFyIHI9ZS5fZXZlbnRzO2lmKHZvaWQgMD09PXIpcmV0dXJuW107dmFyIG89clt0XTtyZXR1cm4gdm9pZCAwPT09bz9bXTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBvP24/W28ubGlzdGVuZXJ8fG9dOltvXTpuP2Z1bmN0aW9uKGUpe2Zvcih2YXIgdD1uZXcgQXJyYXkoZS5sZW5ndGgpLG49MDtuPHQubGVuZ3RoOysrbil0W25dPWVbbl0ubGlzdGVuZXJ8fGVbbl07cmV0dXJuIHR9KG8pOmgobyxvLmxlbmd0aCl9ZnVuY3Rpb24gcChlKXt2YXIgdD10aGlzLl9ldmVudHM7aWYodm9pZCAwIT09dCl7dmFyIG49dFtlXTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuKXJldHVybiAxO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG4ubGVuZ3RofXJldHVybiAwfWZ1bmN0aW9uIGgoZSx0KXtmb3IodmFyIG49bmV3IEFycmF5KHQpLHI9MDtyPHQ7KytyKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiB2KGUsdCxuLHIpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUub24pci5vbmNlP2Uub25jZSh0LG4pOmUub24odCxuKTtlbHNle2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUuYWRkRXZlbnRMaXN0ZW5lcil0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJlbWl0dGVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEV2ZW50RW1pdHRlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBlKTtlLmFkZEV2ZW50TGlzdGVuZXIodCwoZnVuY3Rpb24gbyhpKXtyLm9uY2UmJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG8pLG4oaSl9KSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLFwiZGVmYXVsdE1heExpc3RlbmVyc1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhfSxzZXQ6ZnVuY3Rpb24oZSl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIGV8fGU8MHx8byhlKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mIFwiZGVmYXVsdE1heExpc3RlbmVyc1wiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcrZStcIi5cIik7YT1lfX0pLGkuaW5pdD1mdW5jdGlvbigpe3ZvaWQgMCE9PXRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHN8fCh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKSx0aGlzLl9tYXhMaXN0ZW5lcnM9dGhpcy5fbWF4TGlzdGVuZXJzfHx2b2lkIDB9LGkucHJvdG90eXBlLnNldE1heExpc3RlbmVycz1mdW5jdGlvbihlKXtpZihcIm51bWJlclwiIT10eXBlb2YgZXx8ZTwwfHxvKGUpKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJuXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytlK1wiLlwiKTtyZXR1cm4gdGhpcy5fbWF4TGlzdGVuZXJzPWUsdGhpc30saS5wcm90b3R5cGUuZ2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcyl9LGkucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXQucHVzaChhcmd1bWVudHNbbl0pO3ZhciBvPVwiZXJyb3JcIj09PWUsaT10aGlzLl9ldmVudHM7aWYodm9pZCAwIT09aSlvPW8mJnZvaWQgMD09PWkuZXJyb3I7ZWxzZSBpZighbylyZXR1cm4hMTtpZihvKXt2YXIgYTtpZih0Lmxlbmd0aD4wJiYoYT10WzBdKSxhIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgYTt2YXIgbD1uZXcgRXJyb3IoXCJVbmhhbmRsZWQgZXJyb3IuXCIrKGE/XCIgKFwiK2EubWVzc2FnZStcIilcIjpcIlwiKSk7dGhyb3cgbC5jb250ZXh0PWEsbH12YXIgcz1pW2VdO2lmKHZvaWQgMD09PXMpcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgcylyKHMsdGhpcyx0KTtlbHNle3ZhciBjPXMubGVuZ3RoLHU9aChzLGMpO2ZvcihuPTA7bjxjOysrbilyKHVbbl0sdGhpcyx0KX1yZXR1cm4hMH0saS5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYyh0aGlzLGUsdCwhMSl9LGkucHJvdG90eXBlLm9uPWkucHJvdG90eXBlLmFkZExpc3RlbmVyLGkucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3JldHVybiBjKHRoaXMsZSx0LCEwKX0saS5wcm90b3R5cGUub25jZT1mdW5jdGlvbihlLHQpe3JldHVybiBsKHQpLHRoaXMub24oZSxmKHRoaXMsZSx0KSksdGhpc30saS5wcm90b3R5cGUucHJlcGVuZE9uY2VMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3JldHVybiBsKHQpLHRoaXMucHJlcGVuZExpc3RlbmVyKGUsZih0aGlzLGUsdCkpLHRoaXN9LGkucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGksYTtpZihsKHQpLHZvaWQgMD09PShyPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRoaXM7aWYodm9pZCAwPT09KG49cltlXSkpcmV0dXJuIHRoaXM7aWYobj09PXR8fG4ubGlzdGVuZXI9PT10KTA9PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6KGRlbGV0ZSByW2VdLHIucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdChcInJlbW92ZUxpc3RlbmVyXCIsZSxuLmxpc3RlbmVyfHx0KSk7ZWxzZSBpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBuKXtmb3Iobz0tMSxpPW4ubGVuZ3RoLTE7aT49MDtpLS0paWYobltpXT09PXR8fG5baV0ubGlzdGVuZXI9PT10KXthPW5baV0ubGlzdGVuZXIsbz1pO2JyZWFrfWlmKG88MClyZXR1cm4gdGhpczswPT09bz9uLnNoaWZ0KCk6ZnVuY3Rpb24oZSx0KXtmb3IoO3QrMTxlLmxlbmd0aDt0KyspZVt0XT1lW3QrMV07ZS5wb3AoKX0obixvKSwxPT09bi5sZW5ndGgmJihyW2VdPW5bMF0pLHZvaWQgMCE9PXIucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdChcInJlbW92ZUxpc3RlbmVyXCIsZSxhfHx0KX1yZXR1cm4gdGhpc30saS5wcm90b3R5cGUub2ZmPWkucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLGkucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihlKXt2YXIgdCxuLHI7aWYodm9pZCAwPT09KG49dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT1uLnJlbW92ZUxpc3RlbmVyKXJldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD8odGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCk6dm9pZCAwIT09bltlXSYmKDA9PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6ZGVsZXRlIG5bZV0pLHRoaXM7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciBvLGk9T2JqZWN0LmtleXMobik7Zm9yKHI9MDtyPGkubGVuZ3RoOysrcilcInJlbW92ZUxpc3RlbmVyXCIhPT0obz1pW3JdKSYmdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMobyk7cmV0dXJuIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKFwicmVtb3ZlTGlzdGVuZXJcIiksdGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCx0aGlzfWlmKFwiZnVuY3Rpb25cIj09dHlwZW9mKHQ9bltlXSkpdGhpcy5yZW1vdmVMaXN0ZW5lcihlLHQpO2Vsc2UgaWYodm9pZCAwIT09dClmb3Iocj10Lmxlbmd0aC0xO3I+PTA7ci0tKXRoaXMucmVtb3ZlTGlzdGVuZXIoZSx0W3JdKTtyZXR1cm4gdGhpc30saS5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybiBkKHRoaXMsZSwhMCl9LGkucHJvdG90eXBlLnJhd0xpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm4gZCh0aGlzLGUsITEpfSxpLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmxpc3RlbmVyQ291bnQ/ZS5saXN0ZW5lckNvdW50KHQpOnAuY2FsbChlLHQpfSxpLnByb3RvdHlwZS5saXN0ZW5lckNvdW50PXAsaS5wcm90b3R5cGUuZXZlbnROYW1lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ldmVudHNDb3VudD4wP3QodGhpcy5fZXZlbnRzKTpbXX19LDIxNTooZSx0KT0+e3QucmVhZD1mdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpLGEsbD04Km8tci0xLHM9KDE8PGwpLTEsYz1zPj4xLHU9LTcsZj1uP28tMTowLGQ9bj8tMToxLHA9ZVt0K2ZdO2ZvcihmKz1kLGk9cCYoMTw8LXUpLTEscD4+PS11LHUrPWw7dT4wO2k9MjU2KmkrZVt0K2ZdLGYrPWQsdS09OCk7Zm9yKGE9aSYoMTw8LXUpLTEsaT4+PS11LHUrPXI7dT4wO2E9MjU2KmErZVt0K2ZdLGYrPWQsdS09OCk7aWYoMD09PWkpaT0xLWM7ZWxzZXtpZihpPT09cylyZXR1cm4gYT9OYU46MS8wKihwPy0xOjEpO2ErPU1hdGgucG93KDIsciksaS09Y31yZXR1cm4ocD8tMToxKSphKk1hdGgucG93KDIsaS1yKX0sdC53cml0ZT1mdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGEsbCxzLGM9OCppLW8tMSx1PSgxPDxjKS0xLGY9dT4+MSxkPTIzPT09bz9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1yPzA6aS0xLGg9cj8xOi0xLHY9dDwwfHwwPT09dCYmMS90PDA/MTowO2Zvcih0PU1hdGguYWJzKHQpLGlzTmFOKHQpfHx0PT09MS8wPyhsPWlzTmFOKHQpPzE6MCxhPXUpOihhPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjIpLHQqKHM9TWF0aC5wb3coMiwtYSkpPDEmJihhLS0scyo9MiksKHQrPWErZj49MT9kL3M6ZCpNYXRoLnBvdygyLDEtZikpKnM+PTImJihhKysscy89MiksYStmPj11PyhsPTAsYT11KTphK2Y+PTE/KGw9KHQqcy0xKSpNYXRoLnBvdygyLG8pLGErPWYpOihsPXQqTWF0aC5wb3coMixmLTEpKk1hdGgucG93KDIsbyksYT0wKSk7bz49ODtlW24rcF09MjU1JmwscCs9aCxsLz0yNTYsby09OCk7Zm9yKGE9YTw8b3xsLGMrPW87Yz4wO2VbbitwXT0yNTUmYSxwKz1oLGEvPTI1NixjLT04KTtlW24rcC1oXXw9MTI4KnZ9fSw5NTE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2U9bi5ubWQoZSksZnVuY3Rpb24oKXt2YXIgbyxpPVwiRXhwZWN0ZWQgYSBmdW5jdGlvblwiLGE9XCJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fXCIsbD1cIl9fbG9kYXNoX3BsYWNlaG9sZGVyX19cIixzPTMyLGM9MTI4LHU9MS8wLGY9OTAwNzE5OTI1NDc0MDk5MSxkPU5hTixwPTQyOTQ5NjcyOTUsaD1bW1wiYXJ5XCIsY10sW1wiYmluZFwiLDFdLFtcImJpbmRLZXlcIiwyXSxbXCJjdXJyeVwiLDhdLFtcImN1cnJ5UmlnaHRcIiwxNl0sW1wiZmxpcFwiLDUxMl0sW1wicGFydGlhbFwiLHNdLFtcInBhcnRpYWxSaWdodFwiLDY0XSxbXCJyZWFyZ1wiLDI1Nl1dLHY9XCJbb2JqZWN0IEFyZ3VtZW50c11cIixnPVwiW29iamVjdCBBcnJheV1cIixDPVwiW29iamVjdCBCb29sZWFuXVwiLG09XCJbb2JqZWN0IERhdGVdXCIseT1cIltvYmplY3QgRXJyb3JdXCIsdz1cIltvYmplY3QgRnVuY3Rpb25dXCIsYj1cIltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dXCIseD1cIltvYmplY3QgTWFwXVwiLF89XCJbb2JqZWN0IE51bWJlcl1cIixMPVwiW29iamVjdCBPYmplY3RdXCIsTz1cIltvYmplY3QgUHJvbWlzZV1cIixFPVwiW29iamVjdCBSZWdFeHBdXCIsUz1cIltvYmplY3QgU2V0XVwiLE09XCJbb2JqZWN0IFN0cmluZ11cIixqPVwiW29iamVjdCBTeW1ib2xdXCIsaz1cIltvYmplY3QgV2Vha01hcF1cIixSPVwiW29iamVjdCBBcnJheUJ1ZmZlcl1cIixQPVwiW29iamVjdCBEYXRhVmlld11cIixBPVwiW29iamVjdCBGbG9hdDMyQXJyYXldXCIsST1cIltvYmplY3QgRmxvYXQ2NEFycmF5XVwiLFQ9XCJbb2JqZWN0IEludDhBcnJheV1cIixIPVwiW29iamVjdCBJbnQxNkFycmF5XVwiLFY9XCJbb2JqZWN0IEludDMyQXJyYXldXCIsQj1cIltvYmplY3QgVWludDhBcnJheV1cIixEPVwiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV1cIixaPVwiW29iamVjdCBVaW50MTZBcnJheV1cIiwkPVwiW29iamVjdCBVaW50MzJBcnJheV1cIixGPS9cXGJfX3AgXFwrPSAnJzsvZyxOPS9cXGIoX19wIFxcKz0pICcnIFxcKy9nLFU9LyhfX2VcXCguKj9cXCl8XFxiX190XFwpKSBcXCtcXG4nJzsvZyxXPS8mKD86YW1wfGx0fGd0fHF1b3R8IzM5KTsvZyx6PS9bJjw+XCInXS9nLEc9UmVnRXhwKFcuc291cmNlKSxxPVJlZ0V4cCh6LnNvdXJjZSksWT0vPCUtKFtcXHNcXFNdKz8pJT4vZyxLPS88JShbXFxzXFxTXSs/KSU+L2csWD0vPCU9KFtcXHNcXFNdKz8pJT4vZyxKPS9cXC58XFxbKD86W15bXFxdXSp8KFtcIiddKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFwuKSo/XFwxKVxcXS8sUT0vXlxcdyokLyxlZT0vW14uW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JCkpL2csdGU9L1tcXFxcXiQuKis/KClbXFxde318XS9nLG5lPVJlZ0V4cCh0ZS5zb3VyY2UpLHJlPS9eXFxzKy8sb2U9L1xccy8saWU9L1xceyg/OlxcblxcL1xcKiBcXFt3cmFwcGVkIHdpdGggLitcXF0gXFwqXFwvKT9cXG4/LyxhZT0vXFx7XFxuXFwvXFwqIFxcW3dyYXBwZWQgd2l0aCAoLispXFxdIFxcKi8sbGU9Lyw/ICYgLyxzZT0vW15cXHgwMC1cXHgyZlxceDNhLVxceDQwXFx4NWItXFx4NjBcXHg3Yi1cXHg3Zl0rL2csY2U9L1soKT0se31cXFtcXF1cXC9cXHNdLyx1ZT0vXFxcXChcXFxcKT8vZyxmZT0vXFwkXFx7KFteXFxcXH1dKig/OlxcXFwuW15cXFxcfV0qKSopXFx9L2csZGU9L1xcdyokLyxwZT0vXlstK10weFswLTlhLWZdKyQvaSxoZT0vXjBiWzAxXSskL2ksdmU9L15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLyxnZT0vXjBvWzAtN10rJC9pLENlPS9eKD86MHxbMS05XVxcZCopJC8sbWU9L1tcXHhjMC1cXHhkNlxceGQ4LVxceGY2XFx4ZjgtXFx4ZmZcXHUwMTAwLVxcdTAxN2ZdL2cseWU9LygkXikvLHdlPS9bJ1xcblxcclxcdTIwMjhcXHUyMDI5XFxcXF0vZyxiZT1cIlxcXFx1ZDgwMC1cXFxcdWRmZmZcIix4ZT1cIlxcXFx1MDMwMC1cXFxcdTAzNmZcXFxcdWZlMjAtXFxcXHVmZTJmXFxcXHUyMGQwLVxcXFx1MjBmZlwiLF9lPVwiXFxcXHUyNzAwLVxcXFx1MjdiZlwiLExlPVwiYS16XFxcXHhkZi1cXFxceGY2XFxcXHhmOC1cXFxceGZmXCIsT2U9XCJBLVpcXFxceGMwLVxcXFx4ZDZcXFxceGQ4LVxcXFx4ZGVcIixFZT1cIlxcXFx1ZmUwZVxcXFx1ZmUwZlwiLFNlPVwiXFxcXHhhY1xcXFx4YjFcXFxceGQ3XFxcXHhmN1xcXFx4MDAtXFxcXHgyZlxcXFx4M2EtXFxcXHg0MFxcXFx4NWItXFxcXHg2MFxcXFx4N2ItXFxcXHhiZlxcXFx1MjAwMC1cXFxcdTIwNmYgXFxcXHRcXFxceDBiXFxcXGZcXFxceGEwXFxcXHVmZWZmXFxcXG5cXFxcclxcXFx1MjAyOFxcXFx1MjAyOVxcXFx1MTY4MFxcXFx1MTgwZVxcXFx1MjAwMFxcXFx1MjAwMVxcXFx1MjAwMlxcXFx1MjAwM1xcXFx1MjAwNFxcXFx1MjAwNVxcXFx1MjAwNlxcXFx1MjAwN1xcXFx1MjAwOFxcXFx1MjAwOVxcXFx1MjAwYVxcXFx1MjAyZlxcXFx1MjA1ZlxcXFx1MzAwMFwiLE1lPVwiW1wiK2JlK1wiXVwiLGplPVwiW1wiK1NlK1wiXVwiLGtlPVwiW1wiK3hlK1wiXVwiLFJlPVwiXFxcXGQrXCIsUGU9XCJbXCIrX2UrXCJdXCIsQWU9XCJbXCIrTGUrXCJdXCIsSWU9XCJbXlwiK2JlK1NlK1JlK19lK0xlK09lK1wiXVwiLFRlPVwiXFxcXHVkODNjW1xcXFx1ZGZmYi1cXFxcdWRmZmZdXCIsSGU9XCJbXlwiK2JlK1wiXVwiLFZlPVwiKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfVwiLEJlPVwiW1xcXFx1ZDgwMC1cXFxcdWRiZmZdW1xcXFx1ZGMwMC1cXFxcdWRmZmZdXCIsRGU9XCJbXCIrT2UrXCJdXCIsWmU9XCJcXFxcdTIwMGRcIiwkZT1cIig/OlwiK0FlK1wifFwiK0llK1wiKVwiLEZlPVwiKD86XCIrRGUrXCJ8XCIrSWUrXCIpXCIsTmU9XCIoPzpbJ+KAmV0oPzpkfGxsfG18cmV8c3x0fHZlKSk/XCIsVWU9XCIoPzpbJ+KAmV0oPzpEfExMfE18UkV8U3xUfFZFKSk/XCIsV2U9XCIoPzpcIitrZStcInxcIitUZStcIik/XCIsemU9XCJbXCIrRWUrXCJdP1wiLEdlPXplK1dlK1wiKD86XCIrWmUrXCIoPzpcIitbSGUsVmUsQmVdLmpvaW4oXCJ8XCIpK1wiKVwiK3plK1dlK1wiKSpcIixxZT1cIig/OlwiK1tQZSxWZSxCZV0uam9pbihcInxcIikrXCIpXCIrR2UsWWU9XCIoPzpcIitbSGUra2UrXCI/XCIsa2UsVmUsQmUsTWVdLmpvaW4oXCJ8XCIpK1wiKVwiLEtlPVJlZ0V4cChcIlsn4oCZXVwiLFwiZ1wiKSxYZT1SZWdFeHAoa2UsXCJnXCIpLEplPVJlZ0V4cChUZStcIig/PVwiK1RlK1wiKXxcIitZZStHZSxcImdcIiksUWU9UmVnRXhwKFtEZStcIj9cIitBZStcIitcIitOZStcIig/PVwiK1tqZSxEZSxcIiRcIl0uam9pbihcInxcIikrXCIpXCIsRmUrXCIrXCIrVWUrXCIoPz1cIitbamUsRGUrJGUsXCIkXCJdLmpvaW4oXCJ8XCIpK1wiKVwiLERlK1wiP1wiKyRlK1wiK1wiK05lLERlK1wiK1wiK1VlLFwiXFxcXGQqKD86MVNUfDJORHwzUkR8KD8hWzEyM10pXFxcXGRUSCkoPz1cXFxcYnxbYS16X10pXCIsXCJcXFxcZCooPzoxc3R8Mm5kfDNyZHwoPyFbMTIzXSlcXFxcZHRoKSg/PVxcXFxifFtBLVpfXSlcIixSZSxxZV0uam9pbihcInxcIiksXCJnXCIpLGV0PVJlZ0V4cChcIltcIitaZStiZSt4ZStFZStcIl1cIiksdHQ9L1thLXpdW0EtWl18W0EtWl17Mn1bYS16XXxbMC05XVthLXpBLVpdfFthLXpBLVpdWzAtOV18W15hLXpBLVowLTkgXS8sbnQ9W1wiQXJyYXlcIixcIkJ1ZmZlclwiLFwiRGF0YVZpZXdcIixcIkRhdGVcIixcIkVycm9yXCIsXCJGbG9hdDMyQXJyYXlcIixcIkZsb2F0NjRBcnJheVwiLFwiRnVuY3Rpb25cIixcIkludDhBcnJheVwiLFwiSW50MTZBcnJheVwiLFwiSW50MzJBcnJheVwiLFwiTWFwXCIsXCJNYXRoXCIsXCJPYmplY3RcIixcIlByb21pc2VcIixcIlJlZ0V4cFwiLFwiU2V0XCIsXCJTdHJpbmdcIixcIlN5bWJvbFwiLFwiVHlwZUVycm9yXCIsXCJVaW50OEFycmF5XCIsXCJVaW50OENsYW1wZWRBcnJheVwiLFwiVWludDE2QXJyYXlcIixcIlVpbnQzMkFycmF5XCIsXCJXZWFrTWFwXCIsXCJfXCIsXCJjbGVhclRpbWVvdXRcIixcImlzRmluaXRlXCIsXCJwYXJzZUludFwiLFwic2V0VGltZW91dFwiXSxydD0tMSxvdD17fTtvdFtBXT1vdFtJXT1vdFtUXT1vdFtIXT1vdFtWXT1vdFtCXT1vdFtEXT1vdFtaXT1vdFskXT0hMCxvdFt2XT1vdFtnXT1vdFtSXT1vdFtDXT1vdFtQXT1vdFttXT1vdFt5XT1vdFt3XT1vdFt4XT1vdFtfXT1vdFtMXT1vdFtFXT1vdFtTXT1vdFtNXT1vdFtrXT0hMTt2YXIgaXQ9e307aXRbdl09aXRbZ109aXRbUl09aXRbUF09aXRbQ109aXRbbV09aXRbQV09aXRbSV09aXRbVF09aXRbSF09aXRbVl09aXRbeF09aXRbX109aXRbTF09aXRbRV09aXRbU109aXRbTV09aXRbal09aXRbQl09aXRbRF09aXRbWl09aXRbJF09ITAsaXRbeV09aXRbd109aXRba109ITE7dmFyIGF0PXtcIlxcXFxcIjpcIlxcXFxcIixcIidcIjpcIidcIixcIlxcblwiOlwiblwiLFwiXFxyXCI6XCJyXCIsXCJcXHUyMDI4XCI6XCJ1MjAyOFwiLFwiXFx1MjAyOVwiOlwidTIwMjlcIn0sbHQ9cGFyc2VGbG9hdCxzdD1wYXJzZUludCxjdD1cIm9iamVjdFwiPT10eXBlb2Ygbi5nJiZuLmcmJm4uZy5PYmplY3Q9PT1PYmplY3QmJm4uZyx1dD1cIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsZnQ9Y3R8fHV0fHxGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCksZHQ9dCYmIXQubm9kZVR5cGUmJnQscHQ9ZHQmJmUmJiFlLm5vZGVUeXBlJiZlLGh0PXB0JiZwdC5leHBvcnRzPT09ZHQsdnQ9aHQmJmN0LnByb2Nlc3MsZ3Q9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHB0JiZwdC5yZXF1aXJlJiZwdC5yZXF1aXJlKFwidXRpbFwiKS50eXBlc3x8dnQmJnZ0LmJpbmRpbmcmJnZ0LmJpbmRpbmcoXCJ1dGlsXCIpfWNhdGNoKGUpe319KCksQ3Q9Z3QmJmd0LmlzQXJyYXlCdWZmZXIsbXQ9Z3QmJmd0LmlzRGF0ZSx5dD1ndCYmZ3QuaXNNYXAsd3Q9Z3QmJmd0LmlzUmVnRXhwLGJ0PWd0JiZndC5pc1NldCx4dD1ndCYmZ3QuaXNUeXBlZEFycmF5O2Z1bmN0aW9uIF90KGUsdCxuKXtzd2l0Y2gobi5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZS5jYWxsKHQpO2Nhc2UgMTpyZXR1cm4gZS5jYWxsKHQsblswXSk7Y2FzZSAyOnJldHVybiBlLmNhbGwodCxuWzBdLG5bMV0pO2Nhc2UgMzpyZXR1cm4gZS5jYWxsKHQsblswXSxuWzFdLG5bMl0pfXJldHVybiBlLmFwcGx5KHQsbil9ZnVuY3Rpb24gTHQoZSx0LG4scil7Zm9yKHZhciBvPS0xLGk9bnVsbD09ZT8wOmUubGVuZ3RoOysrbzxpOyl7dmFyIGE9ZVtvXTt0KHIsYSxuKGEpLGUpfXJldHVybiByfWZ1bmN0aW9uIE90KGUsdCl7Zm9yKHZhciBuPS0xLHI9bnVsbD09ZT8wOmUubGVuZ3RoOysrbjxyJiYhMSE9PXQoZVtuXSxuLGUpOyk7cmV0dXJuIGV9ZnVuY3Rpb24gRXQoZSx0KXtmb3IodmFyIG49bnVsbD09ZT8wOmUubGVuZ3RoO24tLSYmITEhPT10KGVbbl0sbixlKTspO3JldHVybiBlfWZ1bmN0aW9uIFN0KGUsdCl7Zm9yKHZhciBuPS0xLHI9bnVsbD09ZT8wOmUubGVuZ3RoOysrbjxyOylpZighdChlW25dLG4sZSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gTXQoZSx0KXtmb3IodmFyIG49LTEscj1udWxsPT1lPzA6ZS5sZW5ndGgsbz0wLGk9W107KytuPHI7KXt2YXIgYT1lW25dO3QoYSxuLGUpJiYoaVtvKytdPWEpfXJldHVybiBpfWZ1bmN0aW9uIGp0KGUsdCl7cmV0dXJuIShudWxsPT1lfHwhZS5sZW5ndGgpJiZEdChlLHQsMCk+LTF9ZnVuY3Rpb24ga3QoZSx0LG4pe2Zvcih2YXIgcj0tMSxvPW51bGw9PWU/MDplLmxlbmd0aDsrK3I8bzspaWYobih0LGVbcl0pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFJ0KGUsdCl7Zm9yKHZhciBuPS0xLHI9bnVsbD09ZT8wOmUubGVuZ3RoLG89QXJyYXkocik7KytuPHI7KW9bbl09dChlW25dLG4sZSk7cmV0dXJuIG99ZnVuY3Rpb24gUHQoZSx0KXtmb3IodmFyIG49LTEscj10Lmxlbmd0aCxvPWUubGVuZ3RoOysrbjxyOyllW28rbl09dFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBBdChlLHQsbixyKXt2YXIgbz0tMSxpPW51bGw9PWU/MDplLmxlbmd0aDtmb3IociYmaSYmKG49ZVsrK29dKTsrK288aTspbj10KG4sZVtvXSxvLGUpO3JldHVybiBufWZ1bmN0aW9uIEl0KGUsdCxuLHIpe3ZhciBvPW51bGw9PWU/MDplLmxlbmd0aDtmb3IociYmbyYmKG49ZVstLW9dKTtvLS07KW49dChuLGVbb10sbyxlKTtyZXR1cm4gbn1mdW5jdGlvbiBUdChlLHQpe2Zvcih2YXIgbj0tMSxyPW51bGw9PWU/MDplLmxlbmd0aDsrK248cjspaWYodChlW25dLG4sZSkpcmV0dXJuITA7cmV0dXJuITF9dmFyIEh0PU50KFwibGVuZ3RoXCIpO2Z1bmN0aW9uIFZ0KGUsdCxuKXt2YXIgcjtyZXR1cm4gbihlLChmdW5jdGlvbihlLG4sbyl7aWYodChlLG4sbykpcmV0dXJuIHI9biwhMX0pKSxyfWZ1bmN0aW9uIEJ0KGUsdCxuLHIpe2Zvcih2YXIgbz1lLmxlbmd0aCxpPW4rKHI/MTotMSk7cj9pLS06KytpPG87KWlmKHQoZVtpXSxpLGUpKXJldHVybiBpO3JldHVybi0xfWZ1bmN0aW9uIER0KGUsdCxuKXtyZXR1cm4gdD09dD9mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPW4tMSxvPWUubGVuZ3RoOysrcjxvOylpZihlW3JdPT09dClyZXR1cm4gcjtyZXR1cm4tMX0oZSx0LG4pOkJ0KGUsJHQsbil9ZnVuY3Rpb24gWnQoZSx0LG4scil7Zm9yKHZhciBvPW4tMSxpPWUubGVuZ3RoOysrbzxpOylpZihyKGVbb10sdCkpcmV0dXJuIG87cmV0dXJuLTF9ZnVuY3Rpb24gJHQoZSl7cmV0dXJuIGUhPWV9ZnVuY3Rpb24gRnQoZSx0KXt2YXIgbj1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIG4/enQoZSx0KS9uOmR9ZnVuY3Rpb24gTnQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P286dFtlXX19ZnVuY3Rpb24gVXQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT1lP286ZVt0XX19ZnVuY3Rpb24gV3QoZSx0LG4scixvKXtyZXR1cm4gbyhlLChmdW5jdGlvbihlLG8saSl7bj1yPyhyPSExLGUpOnQobixlLG8saSl9KSksbn1mdW5jdGlvbiB6dChlLHQpe2Zvcih2YXIgbixyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KXt2YXIgYT10KGVbcl0pO2EhPT1vJiYobj1uPT09bz9hOm4rYSl9cmV0dXJuIG59ZnVuY3Rpb24gR3QoZSx0KXtmb3IodmFyIG49LTEscj1BcnJheShlKTsrK248ZTspcltuXT10KG4pO3JldHVybiByfWZ1bmN0aW9uIHF0KGUpe3JldHVybiBlP2Uuc2xpY2UoMCxmbihlKSsxKS5yZXBsYWNlKHJlLFwiXCIpOmV9ZnVuY3Rpb24gWXQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpfX1mdW5jdGlvbiBLdChlLHQpe3JldHVybiBSdCh0LChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKX1mdW5jdGlvbiBYdChlLHQpe3JldHVybiBlLmhhcyh0KX1mdW5jdGlvbiBKdChlLHQpe2Zvcih2YXIgbj0tMSxyPWUubGVuZ3RoOysrbjxyJiZEdCh0LGVbbl0sMCk+LTE7KTtyZXR1cm4gbn1mdW5jdGlvbiBRdChlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aDtuLS0mJkR0KHQsZVtuXSwwKT4tMTspO3JldHVybiBufXZhciBlbj1VdCh7w4A6XCJBXCIsw4E6XCJBXCIsw4I6XCJBXCIsw4M6XCJBXCIsw4Q6XCJBXCIsw4U6XCJBXCIsw6A6XCJhXCIsw6E6XCJhXCIsw6I6XCJhXCIsw6M6XCJhXCIsw6Q6XCJhXCIsw6U6XCJhXCIsw4c6XCJDXCIsw6c6XCJjXCIsw5A6XCJEXCIsw7A6XCJkXCIsw4g6XCJFXCIsw4k6XCJFXCIsw4o6XCJFXCIsw4s6XCJFXCIsw6g6XCJlXCIsw6k6XCJlXCIsw6o6XCJlXCIsw6s6XCJlXCIsw4w6XCJJXCIsw406XCJJXCIsw446XCJJXCIsw486XCJJXCIsw6w6XCJpXCIsw606XCJpXCIsw646XCJpXCIsw686XCJpXCIsw5E6XCJOXCIsw7E6XCJuXCIsw5I6XCJPXCIsw5M6XCJPXCIsw5Q6XCJPXCIsw5U6XCJPXCIsw5Y6XCJPXCIsw5g6XCJPXCIsw7I6XCJvXCIsw7M6XCJvXCIsw7Q6XCJvXCIsw7U6XCJvXCIsw7Y6XCJvXCIsw7g6XCJvXCIsw5k6XCJVXCIsw5o6XCJVXCIsw5s6XCJVXCIsw5w6XCJVXCIsw7k6XCJ1XCIsw7o6XCJ1XCIsw7s6XCJ1XCIsw7w6XCJ1XCIsw506XCJZXCIsw706XCJ5XCIsw786XCJ5XCIsw4Y6XCJBZVwiLMOmOlwiYWVcIizDnjpcIlRoXCIsw746XCJ0aFwiLMOfOlwic3NcIizEgDpcIkFcIizEgjpcIkFcIizEhDpcIkFcIizEgTpcImFcIizEgzpcImFcIizEhTpcImFcIizEhjpcIkNcIizEiDpcIkNcIizEijpcIkNcIizEjDpcIkNcIizEhzpcImNcIizEiTpcImNcIizEizpcImNcIizEjTpcImNcIizEjjpcIkRcIizEkDpcIkRcIizEjzpcImRcIizEkTpcImRcIizEkjpcIkVcIizElDpcIkVcIizEljpcIkVcIizEmDpcIkVcIizEmjpcIkVcIizEkzpcImVcIizElTpcImVcIizElzpcImVcIizEmTpcImVcIizEmzpcImVcIizEnDpcIkdcIizEnjpcIkdcIizEoDpcIkdcIizEojpcIkdcIizEnTpcImdcIizEnzpcImdcIizEoTpcImdcIizEozpcImdcIizEpDpcIkhcIizEpjpcIkhcIizEpTpcImhcIizEpzpcImhcIizEqDpcIklcIizEqjpcIklcIizErDpcIklcIizErjpcIklcIizEsDpcIklcIizEqTpcImlcIizEqzpcImlcIizErTpcImlcIizErzpcImlcIizEsTpcImlcIizEtDpcIkpcIizEtTpcImpcIizEtjpcIktcIizEtzpcImtcIizEuDpcImtcIizEuTpcIkxcIizEuzpcIkxcIizEvTpcIkxcIizEvzpcIkxcIizFgTpcIkxcIizEujpcImxcIizEvDpcImxcIizEvjpcImxcIizFgDpcImxcIizFgjpcImxcIizFgzpcIk5cIizFhTpcIk5cIizFhzpcIk5cIizFijpcIk5cIizFhDpcIm5cIizFhjpcIm5cIizFiDpcIm5cIizFizpcIm5cIizFjDpcIk9cIizFjjpcIk9cIizFkDpcIk9cIizFjTpcIm9cIizFjzpcIm9cIizFkTpcIm9cIizFlDpcIlJcIizFljpcIlJcIizFmDpcIlJcIizFlTpcInJcIizFlzpcInJcIizFmTpcInJcIizFmjpcIlNcIizFnDpcIlNcIizFnjpcIlNcIizFoDpcIlNcIizFmzpcInNcIizFnTpcInNcIizFnzpcInNcIizFoTpcInNcIizFojpcIlRcIizFpDpcIlRcIizFpjpcIlRcIizFozpcInRcIizFpTpcInRcIizFpzpcInRcIizFqDpcIlVcIizFqjpcIlVcIizFrDpcIlVcIizFrjpcIlVcIizFsDpcIlVcIizFsjpcIlVcIizFqTpcInVcIizFqzpcInVcIizFrTpcInVcIizFrzpcInVcIizFsTpcInVcIizFszpcInVcIizFtDpcIldcIizFtTpcIndcIizFtjpcIllcIizFtzpcInlcIizFuDpcIllcIizFuTpcIlpcIizFuzpcIlpcIizFvTpcIlpcIizFujpcInpcIizFvDpcInpcIizFvjpcInpcIizEsjpcIklKXCIsxLM6XCJpalwiLMWSOlwiT2VcIizFkzpcIm9lXCIsxYk6XCInblwiLMW/Olwic1wifSksdG49VXQoe1wiJlwiOlwiJmFtcDtcIixcIjxcIjpcIiZsdDtcIixcIj5cIjpcIiZndDtcIiwnXCInOlwiJnF1b3Q7XCIsXCInXCI6XCImIzM5O1wifSk7ZnVuY3Rpb24gbm4oZSl7cmV0dXJuXCJcXFxcXCIrYXRbZV19ZnVuY3Rpb24gcm4oZSl7cmV0dXJuIGV0LnRlc3QoZSl9ZnVuY3Rpb24gb24oZSl7dmFyIHQ9LTEsbj1BcnJheShlLnNpemUpO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUscil7blsrK3RdPVtyLGVdfSkpLG59ZnVuY3Rpb24gYW4oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGUodChuKSl9fWZ1bmN0aW9uIGxuKGUsdCl7Zm9yKHZhciBuPS0xLHI9ZS5sZW5ndGgsbz0wLGk9W107KytuPHI7KXt2YXIgYT1lW25dO2EhPT10JiZhIT09bHx8KGVbbl09bCxpW28rK109bil9cmV0dXJuIGl9ZnVuY3Rpb24gc24oZSl7dmFyIHQ9LTEsbj1BcnJheShlLnNpemUpO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe25bKyt0XT1lfSkpLG59ZnVuY3Rpb24gY24oZSl7cmV0dXJuIHJuKGUpP2Z1bmN0aW9uKGUpe2Zvcih2YXIgdD1KZS5sYXN0SW5kZXg9MDtKZS50ZXN0KGUpOykrK3Q7cmV0dXJuIHR9KGUpOkh0KGUpfWZ1bmN0aW9uIHVuKGUpe3JldHVybiBybihlKT9mdW5jdGlvbihlKXtyZXR1cm4gZS5tYXRjaChKZSl8fFtdfShlKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdChcIlwiKX0oZSl9ZnVuY3Rpb24gZm4oZSl7Zm9yKHZhciB0PWUubGVuZ3RoO3QtLSYmb2UudGVzdChlLmNoYXJBdCh0KSk7KTtyZXR1cm4gdH12YXIgZG49VXQoe1wiJmFtcDtcIjpcIiZcIixcIiZsdDtcIjpcIjxcIixcIiZndDtcIjpcIj5cIixcIiZxdW90O1wiOidcIicsXCImIzM5O1wiOlwiJ1wifSkscG49ZnVuY3Rpb24gZSh0KXt2YXIgbixyPSh0PW51bGw9PXQ/ZnQ6cG4uZGVmYXVsdHMoZnQuT2JqZWN0KCksdCxwbi5waWNrKGZ0LG50KSkpLkFycmF5LG9lPXQuRGF0ZSxiZT10LkVycm9yLHhlPXQuRnVuY3Rpb24sX2U9dC5NYXRoLExlPXQuT2JqZWN0LE9lPXQuUmVnRXhwLEVlPXQuU3RyaW5nLFNlPXQuVHlwZUVycm9yLE1lPXIucHJvdG90eXBlLGplPXhlLnByb3RvdHlwZSxrZT1MZS5wcm90b3R5cGUsUmU9dFtcIl9fY29yZS1qc19zaGFyZWRfX1wiXSxQZT1qZS50b1N0cmluZyxBZT1rZS5oYXNPd25Qcm9wZXJ0eSxJZT0wLFRlPShuPS9bXi5dKyQvLmV4ZWMoUmUmJlJlLmtleXMmJlJlLmtleXMuSUVfUFJPVE98fFwiXCIpKT9cIlN5bWJvbChzcmMpXzEuXCIrbjpcIlwiLEhlPWtlLnRvU3RyaW5nLFZlPVBlLmNhbGwoTGUpLEJlPWZ0Ll8sRGU9T2UoXCJeXCIrUGUuY2FsbChBZSkucmVwbGFjZSh0ZSxcIlxcXFwkJlwiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLFwiJDEuKj9cIikrXCIkXCIpLFplPWh0P3QuQnVmZmVyOm8sJGU9dC5TeW1ib2wsRmU9dC5VaW50OEFycmF5LE5lPVplP1plLmFsbG9jVW5zYWZlOm8sVWU9YW4oTGUuZ2V0UHJvdG90eXBlT2YsTGUpLFdlPUxlLmNyZWF0ZSx6ZT1rZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxHZT1NZS5zcGxpY2UscWU9JGU/JGUuaXNDb25jYXRTcHJlYWRhYmxlOm8sWWU9JGU/JGUuaXRlcmF0b3I6byxKZT0kZT8kZS50b1N0cmluZ1RhZzpvLGV0PWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXNpKExlLFwiZGVmaW5lUHJvcGVydHlcIik7cmV0dXJuIGUoe30sXCJcIix7fSksZX1jYXRjaChlKXt9fSgpLGF0PXQuY2xlYXJUaW1lb3V0IT09ZnQuY2xlYXJUaW1lb3V0JiZ0LmNsZWFyVGltZW91dCxjdD1vZSYmb2Uubm93IT09ZnQuRGF0ZS5ub3cmJm9lLm5vdyx1dD10LnNldFRpbWVvdXQhPT1mdC5zZXRUaW1lb3V0JiZ0LnNldFRpbWVvdXQsZHQ9X2UuY2VpbCxwdD1fZS5mbG9vcix2dD1MZS5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsZ3Q9WmU/WmUuaXNCdWZmZXI6byxIdD10LmlzRmluaXRlLFV0PU1lLmpvaW4saG49YW4oTGUua2V5cyxMZSksdm49X2UubWF4LGduPV9lLm1pbixDbj1vZS5ub3csbW49dC5wYXJzZUludCx5bj1fZS5yYW5kb20sd249TWUucmV2ZXJzZSxibj1zaSh0LFwiRGF0YVZpZXdcIikseG49c2kodCxcIk1hcFwiKSxfbj1zaSh0LFwiUHJvbWlzZVwiKSxMbj1zaSh0LFwiU2V0XCIpLE9uPXNpKHQsXCJXZWFrTWFwXCIpLEVuPXNpKExlLFwiY3JlYXRlXCIpLFNuPU9uJiZuZXcgT24sTW49e30sam49SWkoYm4pLGtuPUlpKHhuKSxSbj1JaShfbiksUG49SWkoTG4pLEFuPUlpKE9uKSxJbj0kZT8kZS5wcm90b3R5cGU6byxUbj1Jbj9Jbi52YWx1ZU9mOm8sSG49SW4/SW4udG9TdHJpbmc6bztmdW5jdGlvbiBWbihlKXtpZihYYShlKSYmIVphKGUpJiYhKGUgaW5zdGFuY2VvZiAkbikpe2lmKGUgaW5zdGFuY2VvZiBabilyZXR1cm4gZTtpZihBZS5jYWxsKGUsXCJfX3dyYXBwZWRfX1wiKSlyZXR1cm4gVGkoZSl9cmV0dXJuIG5ldyBabihlKX12YXIgQm49ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBmdW5jdGlvbih0KXtpZighS2EodCkpcmV0dXJue307aWYoV2UpcmV0dXJuIFdlKHQpO2UucHJvdG90eXBlPXQ7dmFyIG49bmV3IGU7cmV0dXJuIGUucHJvdG90eXBlPW8sbn19KCk7ZnVuY3Rpb24gRG4oKXt9ZnVuY3Rpb24gWm4oZSx0KXt0aGlzLl9fd3JhcHBlZF9fPWUsdGhpcy5fX2FjdGlvbnNfXz1bXSx0aGlzLl9fY2hhaW5fXz0hIXQsdGhpcy5fX2luZGV4X189MCx0aGlzLl9fdmFsdWVzX189b31mdW5jdGlvbiAkbihlKXt0aGlzLl9fd3JhcHBlZF9fPWUsdGhpcy5fX2FjdGlvbnNfXz1bXSx0aGlzLl9fZGlyX189MSx0aGlzLl9fZmlsdGVyZWRfXz0hMSx0aGlzLl9faXRlcmF0ZWVzX189W10sdGhpcy5fX3Rha2VDb3VudF9fPXAsdGhpcy5fX3ZpZXdzX189W119ZnVuY3Rpb24gRm4oZSl7dmFyIHQ9LTEsbj1udWxsPT1lPzA6ZS5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3Q8bjspe3ZhciByPWVbdF07dGhpcy5zZXQoclswXSxyWzFdKX19ZnVuY3Rpb24gTm4oZSl7dmFyIHQ9LTEsbj1udWxsPT1lPzA6ZS5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3Q8bjspe3ZhciByPWVbdF07dGhpcy5zZXQoclswXSxyWzFdKX19ZnVuY3Rpb24gVW4oZSl7dmFyIHQ9LTEsbj1udWxsPT1lPzA6ZS5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3Q8bjspe3ZhciByPWVbdF07dGhpcy5zZXQoclswXSxyWzFdKX19ZnVuY3Rpb24gV24oZSl7dmFyIHQ9LTEsbj1udWxsPT1lPzA6ZS5sZW5ndGg7Zm9yKHRoaXMuX19kYXRhX189bmV3IFVuOysrdDxuOyl0aGlzLmFkZChlW3RdKX1mdW5jdGlvbiB6bihlKXt2YXIgdD10aGlzLl9fZGF0YV9fPW5ldyBObihlKTt0aGlzLnNpemU9dC5zaXplfWZ1bmN0aW9uIEduKGUsdCl7dmFyIG49WmEoZSkscj0hbiYmRGEoZSksbz0hbiYmIXImJlVhKGUpLGk9IW4mJiFyJiYhbyYmaWwoZSksYT1ufHxyfHxvfHxpLGw9YT9HdChlLmxlbmd0aCxFZSk6W10scz1sLmxlbmd0aDtmb3IodmFyIGMgaW4gZSkhdCYmIUFlLmNhbGwoZSxjKXx8YSYmKFwibGVuZ3RoXCI9PWN8fG8mJihcIm9mZnNldFwiPT1jfHxcInBhcmVudFwiPT1jKXx8aSYmKFwiYnVmZmVyXCI9PWN8fFwiYnl0ZUxlbmd0aFwiPT1jfHxcImJ5dGVPZmZzZXRcIj09Yyl8fHZpKGMscykpfHxsLnB1c2goYyk7cmV0dXJuIGx9ZnVuY3Rpb24gcW4oZSl7dmFyIHQ9ZS5sZW5ndGg7cmV0dXJuIHQ/ZVtVcigwLHQtMSldOm99ZnVuY3Rpb24gWW4oZSx0KXtyZXR1cm4gUmkoRW8oZSksb3IodCwwLGUubGVuZ3RoKSl9ZnVuY3Rpb24gS24oZSl7cmV0dXJuIFJpKEVvKGUpKX1mdW5jdGlvbiBYbihlLHQsbil7KG4hPT1vJiYhSGEoZVt0XSxuKXx8bj09PW8mJiEodCBpbiBlKSkmJm5yKGUsdCxuKX1mdW5jdGlvbiBKbihlLHQsbil7dmFyIHI9ZVt0XTtBZS5jYWxsKGUsdCkmJkhhKHIsbikmJihuIT09b3x8dCBpbiBlKXx8bnIoZSx0LG4pfWZ1bmN0aW9uIFFuKGUsdCl7Zm9yKHZhciBuPWUubGVuZ3RoO24tLTspaWYoSGEoZVtuXVswXSx0KSlyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiBlcihlLHQsbixyKXtyZXR1cm4gY3IoZSwoZnVuY3Rpb24oZSxvLGkpe3QocixlLG4oZSksaSl9KSkscn1mdW5jdGlvbiB0cihlLHQpe3JldHVybiBlJiZTbyh0LFNsKHQpLGUpfWZ1bmN0aW9uIG5yKGUsdCxuKXtcIl9fcHJvdG9fX1wiPT10JiZldD9ldChlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOm4sd3JpdGFibGU6ITB9KTplW3RdPW59ZnVuY3Rpb24gcnIoZSx0KXtmb3IodmFyIG49LTEsaT10Lmxlbmd0aCxhPXIoaSksbD1udWxsPT1lOysrbjxpOylhW25dPWw/bzp4bChlLHRbbl0pO3JldHVybiBhfWZ1bmN0aW9uIG9yKGUsdCxuKXtyZXR1cm4gZT09ZSYmKG4hPT1vJiYoZT1lPD1uP2U6biksdCE9PW8mJihlPWU+PXQ/ZTp0KSksZX1mdW5jdGlvbiBpcihlLHQsbixyLGksYSl7dmFyIGwscz0xJnQsYz0yJnQsdT00JnQ7aWYobiYmKGw9aT9uKGUscixpLGEpOm4oZSkpLGwhPT1vKXJldHVybiBsO2lmKCFLYShlKSlyZXR1cm4gZTt2YXIgZj1aYShlKTtpZihmKXtpZihsPWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoLG49bmV3IGUuY29uc3RydWN0b3IodCk7cmV0dXJuIHQmJlwic3RyaW5nXCI9PXR5cGVvZiBlWzBdJiZBZS5jYWxsKGUsXCJpbmRleFwiKSYmKG4uaW5kZXg9ZS5pbmRleCxuLmlucHV0PWUuaW5wdXQpLG59KGUpLCFzKXJldHVybiBFbyhlLGwpfWVsc2V7dmFyIGQ9ZmkoZSkscD1kPT13fHxkPT1iO2lmKFVhKGUpKXJldHVybiB3byhlLHMpO2lmKGQ9PUx8fGQ9PXZ8fHAmJiFpKXtpZihsPWN8fHA/e306cGkoZSksIXMpcmV0dXJuIGM/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gU28oZSx1aShlKSx0KX0oZSxmdW5jdGlvbihlLHQpe3JldHVybiBlJiZTbyh0LE1sKHQpLGUpfShsLGUpKTpmdW5jdGlvbihlLHQpe3JldHVybiBTbyhlLGNpKGUpLHQpfShlLHRyKGwsZSkpfWVsc2V7aWYoIWl0W2RdKXJldHVybiBpP2U6e307bD1mdW5jdGlvbihlLHQsbil7dmFyIHIsbz1lLmNvbnN0cnVjdG9yO3N3aXRjaCh0KXtjYXNlIFI6cmV0dXJuIGJvKGUpO2Nhc2UgQzpjYXNlIG06cmV0dXJuIG5ldyBvKCtlKTtjYXNlIFA6cmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG49dD9ibyhlLmJ1ZmZlcik6ZS5idWZmZXI7cmV0dXJuIG5ldyBlLmNvbnN0cnVjdG9yKG4sZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCl9KGUsbik7Y2FzZSBBOmNhc2UgSTpjYXNlIFQ6Y2FzZSBIOmNhc2UgVjpjYXNlIEI6Y2FzZSBEOmNhc2UgWjpjYXNlICQ6cmV0dXJuIHhvKGUsbik7Y2FzZSB4OnJldHVybiBuZXcgbztjYXNlIF86Y2FzZSBNOnJldHVybiBuZXcgbyhlKTtjYXNlIEU6cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBlLmNvbnN0cnVjdG9yKGUuc291cmNlLGRlLmV4ZWMoZSkpO3JldHVybiB0Lmxhc3RJbmRleD1lLmxhc3RJbmRleCx0fShlKTtjYXNlIFM6cmV0dXJuIG5ldyBvO2Nhc2UgajpyZXR1cm4gcj1lLFRuP0xlKFRuLmNhbGwocikpOnt9fX0oZSxkLHMpfX1hfHwoYT1uZXcgem4pO3ZhciBoPWEuZ2V0KGUpO2lmKGgpcmV0dXJuIGg7YS5zZXQoZSxsKSxubChlKT9lLmZvckVhY2goKGZ1bmN0aW9uKHIpe2wuYWRkKGlyKHIsdCxuLHIsZSxhKSl9KSk6SmEoZSkmJmUuZm9yRWFjaCgoZnVuY3Rpb24ocixvKXtsLnNldChvLGlyKHIsdCxuLG8sZSxhKSl9KSk7dmFyIGc9Zj9vOih1P2M/dGk6ZWk6Yz9NbDpTbCkoZSk7cmV0dXJuIE90KGd8fGUsKGZ1bmN0aW9uKHIsbyl7ZyYmKHI9ZVtvPXJdKSxKbihsLG8saXIocix0LG4sbyxlLGEpKX0pKSxsfWZ1bmN0aW9uIGFyKGUsdCxuKXt2YXIgcj1uLmxlbmd0aDtpZihudWxsPT1lKXJldHVybiFyO2ZvcihlPUxlKGUpO3ItLTspe3ZhciBpPW5bcl0sYT10W2ldLGw9ZVtpXTtpZihsPT09byYmIShpIGluIGUpfHwhYShsKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBscihlLHQsbil7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgU2UoaSk7cmV0dXJuIFNpKChmdW5jdGlvbigpe2UuYXBwbHkobyxuKX0pLHQpfWZ1bmN0aW9uIHNyKGUsdCxuLHIpe3ZhciBvPS0xLGk9anQsYT0hMCxsPWUubGVuZ3RoLHM9W10sYz10Lmxlbmd0aDtpZighbClyZXR1cm4gcztuJiYodD1SdCh0LFl0KG4pKSkscj8oaT1rdCxhPSExKTp0Lmxlbmd0aD49MjAwJiYoaT1YdCxhPSExLHQ9bmV3IFduKHQpKTtlOmZvcig7KytvPGw7KXt2YXIgdT1lW29dLGY9bnVsbD09bj91Om4odSk7aWYodT1yfHwwIT09dT91OjAsYSYmZj09Zil7Zm9yKHZhciBkPWM7ZC0tOylpZih0W2RdPT09Ziljb250aW51ZSBlO3MucHVzaCh1KX1lbHNlIGkodCxmLHIpfHxzLnB1c2godSl9cmV0dXJuIHN9Vm4udGVtcGxhdGVTZXR0aW5ncz17ZXNjYXBlOlksZXZhbHVhdGU6SyxpbnRlcnBvbGF0ZTpYLHZhcmlhYmxlOlwiXCIsaW1wb3J0czp7XzpWbn19LFZuLnByb3RvdHlwZT1Ebi5wcm90b3R5cGUsVm4ucHJvdG90eXBlLmNvbnN0cnVjdG9yPVZuLFpuLnByb3RvdHlwZT1CbihEbi5wcm90b3R5cGUpLFpuLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1abiwkbi5wcm90b3R5cGU9Qm4oRG4ucHJvdG90eXBlKSwkbi5wcm90b3R5cGUuY29uc3RydWN0b3I9JG4sRm4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1Fbj9FbihudWxsKTp7fSx0aGlzLnNpemU9MH0sRm4ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmhhcyhlKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bZV07cmV0dXJuIHRoaXMuc2l6ZS09dD8xOjAsdH0sRm4ucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO2lmKEVuKXt2YXIgbj10W2VdO3JldHVybiBuPT09YT9vOm59cmV0dXJuIEFlLmNhbGwodCxlKT90W2VdOm99LEZuLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXztyZXR1cm4gRW4/dFtlXSE9PW86QWUuY2FsbCh0LGUpfSxGbi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyhlKT8wOjEsbltlXT1FbiYmdD09PW8/YTp0LHRoaXN9LE5uLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LE5uLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxuPVFuKHQsZSk7cmV0dXJuIShuPDB8fChuPT10Lmxlbmd0aC0xP3QucG9wKCk6R2UuY2FsbCh0LG4sMSksLS10aGlzLnNpemUsMCkpfSxObi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18sbj1Rbih0LGUpO3JldHVybiBuPDA/bzp0W25dWzFdfSxObi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiBRbih0aGlzLl9fZGF0YV9fLGUpPi0xfSxObi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2RhdGFfXyxyPVFuKG4sZSk7cmV0dXJuIHI8MD8oKyt0aGlzLnNpemUsbi5wdXNoKFtlLHRdKSk6bltyXVsxXT10LHRoaXN9LFVuLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IEZuLG1hcDpuZXcoeG58fE5uKSxzdHJpbmc6bmV3IEZufX0sVW4ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXt2YXIgdD1haSh0aGlzLGUpLmRlbGV0ZShlKTtyZXR1cm4gdGhpcy5zaXplLT10PzE6MCx0fSxVbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBhaSh0aGlzLGUpLmdldChlKX0sVW4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gYWkodGhpcyxlKS5oYXMoZSl9LFVuLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1haSh0aGlzLGUpLHI9bi5zaXplO3JldHVybiBuLnNldChlLHQpLHRoaXMuc2l6ZSs9bi5zaXplPT1yPzA6MSx0aGlzfSxXbi5wcm90b3R5cGUuYWRkPVduLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLnNldChlLGEpLHRoaXN9LFduLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGUpfSx6bi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBObix0aGlzLnNpemU9MH0sem4ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fLG49dC5kZWxldGUoZSk7cmV0dXJuIHRoaXMuc2l6ZT10LnNpemUsbn0sem4ucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoZSl9LHpuLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGUpfSx6bi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2RhdGFfXztpZihuIGluc3RhbmNlb2YgTm4pe3ZhciByPW4uX19kYXRhX187aWYoIXhufHxyLmxlbmd0aDwxOTkpcmV0dXJuIHIucHVzaChbZSx0XSksdGhpcy5zaXplPSsrbi5zaXplLHRoaXM7bj10aGlzLl9fZGF0YV9fPW5ldyBVbihyKX1yZXR1cm4gbi5zZXQoZSx0KSx0aGlzLnNpemU9bi5zaXplLHRoaXN9O3ZhciBjcj1rbyhDciksdXI9a28obXIsITApO2Z1bmN0aW9uIGZyKGUsdCl7dmFyIG49ITA7cmV0dXJuIGNyKGUsKGZ1bmN0aW9uKGUscixvKXtyZXR1cm4gbj0hIXQoZSxyLG8pfSkpLG59ZnVuY3Rpb24gZHIoZSx0LG4pe2Zvcih2YXIgcj0tMSxpPWUubGVuZ3RoOysrcjxpOyl7dmFyIGE9ZVtyXSxsPXQoYSk7aWYobnVsbCE9bCYmKHM9PT1vP2w9PWwmJiFvbChsKTpuKGwscykpKXZhciBzPWwsYz1hfXJldHVybiBjfWZ1bmN0aW9uIHByKGUsdCl7dmFyIG49W107cmV0dXJuIGNyKGUsKGZ1bmN0aW9uKGUscixvKXt0KGUscixvKSYmbi5wdXNoKGUpfSkpLG59ZnVuY3Rpb24gaHIoZSx0LG4scixvKXt2YXIgaT0tMSxhPWUubGVuZ3RoO2ZvcihufHwobj1oaSksb3x8KG89W10pOysraTxhOyl7dmFyIGw9ZVtpXTt0PjAmJm4obCk/dD4xP2hyKGwsdC0xLG4scixvKTpQdChvLGwpOnJ8fChvW28ubGVuZ3RoXT1sKX1yZXR1cm4gb312YXIgdnI9Um8oKSxncj1SbyghMCk7ZnVuY3Rpb24gQ3IoZSx0KXtyZXR1cm4gZSYmdnIoZSx0LFNsKX1mdW5jdGlvbiBtcihlLHQpe3JldHVybiBlJiZncihlLHQsU2wpfWZ1bmN0aW9uIHlyKGUsdCl7cmV0dXJuIE10KHQsKGZ1bmN0aW9uKHQpe3JldHVybiBHYShlW3RdKX0pKX1mdW5jdGlvbiB3cihlLHQpe2Zvcih2YXIgbj0wLHI9KHQ9Z28odCxlKSkubGVuZ3RoO251bGwhPWUmJm48cjspZT1lW0FpKHRbbisrXSldO3JldHVybiBuJiZuPT1yP2U6b31mdW5jdGlvbiBicihlLHQsbil7dmFyIHI9dChlKTtyZXR1cm4gWmEoZSk/cjpQdChyLG4oZSkpfWZ1bmN0aW9uIHhyKGUpe3JldHVybiBudWxsPT1lP2U9PT1vP1wiW29iamVjdCBVbmRlZmluZWRdXCI6XCJbb2JqZWN0IE51bGxdXCI6SmUmJkplIGluIExlKGUpP2Z1bmN0aW9uKGUpe3ZhciB0PUFlLmNhbGwoZSxKZSksbj1lW0plXTt0cnl7ZVtKZV09bzt2YXIgcj0hMH1jYXRjaChlKXt9dmFyIGk9SGUuY2FsbChlKTtyZXR1cm4gciYmKHQ/ZVtKZV09bjpkZWxldGUgZVtKZV0pLGl9KGUpOmZ1bmN0aW9uKGUpe3JldHVybiBIZS5jYWxsKGUpfShlKX1mdW5jdGlvbiBfcihlLHQpe3JldHVybiBlPnR9ZnVuY3Rpb24gTHIoZSx0KXtyZXR1cm4gbnVsbCE9ZSYmQWUuY2FsbChlLHQpfWZ1bmN0aW9uIE9yKGUsdCl7cmV0dXJuIG51bGwhPWUmJnQgaW4gTGUoZSl9ZnVuY3Rpb24gRXIoZSx0LG4pe2Zvcih2YXIgaT1uP2t0Omp0LGE9ZVswXS5sZW5ndGgsbD1lLmxlbmd0aCxzPWwsYz1yKGwpLHU9MS8wLGY9W107cy0tOyl7dmFyIGQ9ZVtzXTtzJiZ0JiYoZD1SdChkLFl0KHQpKSksdT1nbihkLmxlbmd0aCx1KSxjW3NdPSFuJiYodHx8YT49MTIwJiZkLmxlbmd0aD49MTIwKT9uZXcgV24ocyYmZCk6b31kPWVbMF07dmFyIHA9LTEsaD1jWzBdO2U6Zm9yKDsrK3A8YSYmZi5sZW5ndGg8dTspe3ZhciB2PWRbcF0sZz10P3Qodik6djtpZih2PW58fDAhPT12P3Y6MCwhKGg/WHQoaCxnKTppKGYsZyxuKSkpe2ZvcihzPWw7LS1zOyl7dmFyIEM9Y1tzXTtpZighKEM/WHQoQyxnKTppKGVbc10sZyxuKSkpY29udGludWUgZX1oJiZoLnB1c2goZyksZi5wdXNoKHYpfX1yZXR1cm4gZn1mdW5jdGlvbiBTcihlLHQsbil7dmFyIHI9bnVsbD09KGU9TGkoZSx0PWdvKHQsZSkpKT9lOmVbQWkoemkodCkpXTtyZXR1cm4gbnVsbD09cj9vOl90KHIsZSxuKX1mdW5jdGlvbiBNcihlKXtyZXR1cm4gWGEoZSkmJnhyKGUpPT12fWZ1bmN0aW9uIGpyKGUsdCxuLHIsaSl7cmV0dXJuIGU9PT10fHwobnVsbD09ZXx8bnVsbD09dHx8IVhhKGUpJiYhWGEodCk/ZSE9ZSYmdCE9dDpmdW5jdGlvbihlLHQsbixyLGksYSl7dmFyIGw9WmEoZSkscz1aYSh0KSxjPWw/ZzpmaShlKSx1PXM/ZzpmaSh0KSxmPShjPWM9PXY/TDpjKT09TCxkPSh1PXU9PXY/TDp1KT09TCxwPWM9PXU7aWYocCYmVWEoZSkpe2lmKCFVYSh0KSlyZXR1cm4hMTtsPSEwLGY9ITF9aWYocCYmIWYpcmV0dXJuIGF8fChhPW5ldyB6biksbHx8aWwoZSk/Sm8oZSx0LG4scixpLGEpOmZ1bmN0aW9uKGUsdCxuLHIsbyxpLGEpe3N3aXRjaChuKXtjYXNlIFA6aWYoZS5ieXRlTGVuZ3RoIT10LmJ5dGVMZW5ndGh8fGUuYnl0ZU9mZnNldCE9dC5ieXRlT2Zmc2V0KXJldHVybiExO2U9ZS5idWZmZXIsdD10LmJ1ZmZlcjtjYXNlIFI6cmV0dXJuIShlLmJ5dGVMZW5ndGghPXQuYnl0ZUxlbmd0aHx8IWkobmV3IEZlKGUpLG5ldyBGZSh0KSkpO2Nhc2UgQzpjYXNlIG06Y2FzZSBfOnJldHVybiBIYSgrZSwrdCk7Y2FzZSB5OnJldHVybiBlLm5hbWU9PXQubmFtZSYmZS5tZXNzYWdlPT10Lm1lc3NhZ2U7Y2FzZSBFOmNhc2UgTTpyZXR1cm4gZT09dCtcIlwiO2Nhc2UgeDp2YXIgbD1vbjtjYXNlIFM6dmFyIHM9MSZyO2lmKGx8fChsPXNuKSxlLnNpemUhPXQuc2l6ZSYmIXMpcmV0dXJuITE7dmFyIGM9YS5nZXQoZSk7aWYoYylyZXR1cm4gYz09dDtyfD0yLGEuc2V0KGUsdCk7dmFyIHU9Sm8obChlKSxsKHQpLHIsbyxpLGEpO3JldHVybiBhLmRlbGV0ZShlKSx1O2Nhc2UgajppZihUbilyZXR1cm4gVG4uY2FsbChlKT09VG4uY2FsbCh0KX1yZXR1cm4hMX0oZSx0LGMsbixyLGksYSk7aWYoISgxJm4pKXt2YXIgaD1mJiZBZS5jYWxsKGUsXCJfX3dyYXBwZWRfX1wiKSx3PWQmJkFlLmNhbGwodCxcIl9fd3JhcHBlZF9fXCIpO2lmKGh8fHcpe3ZhciBiPWg/ZS52YWx1ZSgpOmUsTz13P3QudmFsdWUoKTp0O3JldHVybiBhfHwoYT1uZXcgem4pLGkoYixPLG4scixhKX19cmV0dXJuISFwJiYoYXx8KGE9bmV3IHpuKSxmdW5jdGlvbihlLHQsbixyLGksYSl7dmFyIGw9MSZuLHM9ZWkoZSksYz1zLmxlbmd0aDtpZihjIT1laSh0KS5sZW5ndGgmJiFsKXJldHVybiExO2Zvcih2YXIgdT1jO3UtLTspe3ZhciBmPXNbdV07aWYoIShsP2YgaW4gdDpBZS5jYWxsKHQsZikpKXJldHVybiExfXZhciBkPWEuZ2V0KGUpLHA9YS5nZXQodCk7aWYoZCYmcClyZXR1cm4gZD09dCYmcD09ZTt2YXIgaD0hMDthLnNldChlLHQpLGEuc2V0KHQsZSk7Zm9yKHZhciB2PWw7Kyt1PGM7KXt2YXIgZz1lW2Y9c1t1XV0sQz10W2ZdO2lmKHIpdmFyIG09bD9yKEMsZyxmLHQsZSxhKTpyKGcsQyxmLGUsdCxhKTtpZighKG09PT1vP2c9PT1DfHxpKGcsQyxuLHIsYSk6bSkpe2g9ITE7YnJlYWt9dnx8KHY9XCJjb25zdHJ1Y3RvclwiPT1mKX1pZihoJiYhdil7dmFyIHk9ZS5jb25zdHJ1Y3Rvcix3PXQuY29uc3RydWN0b3I7eT09d3x8IShcImNvbnN0cnVjdG9yXCJpbiBlKXx8IShcImNvbnN0cnVjdG9yXCJpbiB0KXx8XCJmdW5jdGlvblwiPT10eXBlb2YgeSYmeSBpbnN0YW5jZW9mIHkmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHcmJncgaW5zdGFuY2VvZiB3fHwoaD0hMSl9cmV0dXJuIGEuZGVsZXRlKGUpLGEuZGVsZXRlKHQpLGh9KGUsdCxuLHIsaSxhKSl9KGUsdCxuLHIsanIsaSkpfWZ1bmN0aW9uIGtyKGUsdCxuLHIpe3ZhciBpPW4ubGVuZ3RoLGE9aSxsPSFyO2lmKG51bGw9PWUpcmV0dXJuIWE7Zm9yKGU9TGUoZSk7aS0tOyl7dmFyIHM9bltpXTtpZihsJiZzWzJdP3NbMV0hPT1lW3NbMF1dOiEoc1swXWluIGUpKXJldHVybiExfWZvcig7KytpPGE7KXt2YXIgYz0ocz1uW2ldKVswXSx1PWVbY10sZj1zWzFdO2lmKGwmJnNbMl0pe2lmKHU9PT1vJiYhKGMgaW4gZSkpcmV0dXJuITF9ZWxzZXt2YXIgZD1uZXcgem47aWYocil2YXIgcD1yKHUsZixjLGUsdCxkKTtpZighKHA9PT1vP2pyKGYsdSwzLHIsZCk6cCkpcmV0dXJuITF9fXJldHVybiEwfWZ1bmN0aW9uIFJyKGUpe3JldHVybiEoIUthKGUpfHwodD1lLFRlJiZUZSBpbiB0KSkmJihHYShlKT9EZTp2ZSkudGVzdChJaShlKSk7dmFyIHR9ZnVuY3Rpb24gUHIoZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZT9lOm51bGw9PWU/UWw6XCJvYmplY3RcIj09dHlwZW9mIGU/WmEoZSk/VnIoZVswXSxlWzFdKTpIcihlKTpzcyhlKX1mdW5jdGlvbiBBcihlKXtpZighd2koZSkpcmV0dXJuIGhuKGUpO3ZhciB0PVtdO2Zvcih2YXIgbiBpbiBMZShlKSlBZS5jYWxsKGUsbikmJlwiY29uc3RydWN0b3JcIiE9biYmdC5wdXNoKG4pO3JldHVybiB0fWZ1bmN0aW9uIElyKGUsdCl7cmV0dXJuIGU8dH1mdW5jdGlvbiBUcihlLHQpe3ZhciBuPS0xLG89RmEoZSk/cihlLmxlbmd0aCk6W107cmV0dXJuIGNyKGUsKGZ1bmN0aW9uKGUscixpKXtvWysrbl09dChlLHIsaSl9KSksb31mdW5jdGlvbiBIcihlKXt2YXIgdD1saShlKTtyZXR1cm4gMT09dC5sZW5ndGgmJnRbMF1bMl0/eGkodFswXVswXSx0WzBdWzFdKTpmdW5jdGlvbihuKXtyZXR1cm4gbj09PWV8fGtyKG4sZSx0KX19ZnVuY3Rpb24gVnIoZSx0KXtyZXR1cm4gQ2koZSkmJmJpKHQpP3hpKEFpKGUpLHQpOmZ1bmN0aW9uKG4pe3ZhciByPXhsKG4sZSk7cmV0dXJuIHI9PT1vJiZyPT09dD9fbChuLGUpOmpyKHQsciwzKX19ZnVuY3Rpb24gQnIoZSx0LG4scixpKXtlIT09dCYmdnIodCwoZnVuY3Rpb24oYSxsKXtpZihpfHwoaT1uZXcgem4pLEthKGEpKSFmdW5jdGlvbihlLHQsbixyLGksYSxsKXt2YXIgcz1PaShlLG4pLGM9T2kodCxuKSx1PWwuZ2V0KGMpO2lmKHUpWG4oZSxuLHUpO2Vsc2V7dmFyIGY9YT9hKHMsYyxuK1wiXCIsZSx0LGwpOm8sZD1mPT09bztpZihkKXt2YXIgcD1aYShjKSxoPSFwJiZVYShjKSx2PSFwJiYhaCYmaWwoYyk7Zj1jLHB8fGh8fHY/WmEocyk/Zj1zOk5hKHMpP2Y9RW8ocyk6aD8oZD0hMSxmPXdvKGMsITApKTp2PyhkPSExLGY9eG8oYywhMCkpOmY9W106ZWwoYyl8fERhKGMpPyhmPXMsRGEocyk/Zj1wbChzKTpLYShzKSYmIUdhKHMpfHwoZj1waShjKSkpOmQ9ITF9ZCYmKGwuc2V0KGMsZiksaShmLGMscixhLGwpLGwuZGVsZXRlKGMpKSxYbihlLG4sZil9fShlLHQsbCxuLEJyLHIsaSk7ZWxzZXt2YXIgcz1yP3IoT2koZSxsKSxhLGwrXCJcIixlLHQsaSk6bztzPT09byYmKHM9YSksWG4oZSxsLHMpfX0pLE1sKX1mdW5jdGlvbiBEcihlLHQpe3ZhciBuPWUubGVuZ3RoO2lmKG4pcmV0dXJuIHZpKHQrPXQ8MD9uOjAsbik/ZVt0XTpvfWZ1bmN0aW9uIFpyKGUsdCxuKXt0PXQubGVuZ3RoP1J0KHQsKGZ1bmN0aW9uKGUpe3JldHVybiBaYShlKT9mdW5jdGlvbih0KXtyZXR1cm4gd3IodCwxPT09ZS5sZW5ndGg/ZVswXTplKX06ZX0pKTpbUWxdO3ZhciByPS0xO3Q9UnQodCxZdChpaSgpKSk7dmFyIG89VHIoZSwoZnVuY3Rpb24oZSxuLG8pe3ZhciBpPVJ0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiB0KGUpfSkpO3JldHVybntjcml0ZXJpYTppLGluZGV4Oisrcix2YWx1ZTplfX0pKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aDtmb3IoZS5zb3J0KHQpO24tLTspZVtuXT1lW25dLnZhbHVlO3JldHVybiBlfShvLChmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPS0xLG89ZS5jcml0ZXJpYSxpPXQuY3JpdGVyaWEsYT1vLmxlbmd0aCxsPW4ubGVuZ3RoOysrcjxhOyl7dmFyIHM9X28ob1tyXSxpW3JdKTtpZihzKXJldHVybiByPj1sP3M6cyooXCJkZXNjXCI9PW5bcl0/LTE6MSl9cmV0dXJuIGUuaW5kZXgtdC5pbmRleH0oZSx0LG4pfSkpfWZ1bmN0aW9uICRyKGUsdCxuKXtmb3IodmFyIHI9LTEsbz10Lmxlbmd0aCxpPXt9OysrcjxvOyl7dmFyIGE9dFtyXSxsPXdyKGUsYSk7bihsLGEpJiZZcihpLGdvKGEsZSksbCl9cmV0dXJuIGl9ZnVuY3Rpb24gRnIoZSx0LG4scil7dmFyIG89cj9adDpEdCxpPS0xLGE9dC5sZW5ndGgsbD1lO2ZvcihlPT09dCYmKHQ9RW8odCkpLG4mJihsPVJ0KGUsWXQobikpKTsrK2k8YTspZm9yKHZhciBzPTAsYz10W2ldLHU9bj9uKGMpOmM7KHM9byhsLHUscyxyKSk+LTE7KWwhPT1lJiZHZS5jYWxsKGwscywxKSxHZS5jYWxsKGUscywxKTtyZXR1cm4gZX1mdW5jdGlvbiBOcihlLHQpe2Zvcih2YXIgbj1lP3QubGVuZ3RoOjAscj1uLTE7bi0tOyl7dmFyIG89dFtuXTtpZihuPT1yfHxvIT09aSl7dmFyIGk9bzt2aShvKT9HZS5jYWxsKGUsbywxKTpsbyhlLG8pfX1yZXR1cm4gZX1mdW5jdGlvbiBVcihlLHQpe3JldHVybiBlK3B0KHluKCkqKHQtZSsxKSl9ZnVuY3Rpb24gV3IoZSx0KXt2YXIgbj1cIlwiO2lmKCFlfHx0PDF8fHQ+ZilyZXR1cm4gbjtkb3t0JTImJihuKz1lKSwodD1wdCh0LzIpKSYmKGUrPWUpfXdoaWxlKHQpO3JldHVybiBufWZ1bmN0aW9uIHpyKGUsdCl7cmV0dXJuIE1pKF9pKGUsdCxRbCksZStcIlwiKX1mdW5jdGlvbiBHcihlKXtyZXR1cm4gcW4oSGwoZSkpfWZ1bmN0aW9uIHFyKGUsdCl7dmFyIG49SGwoZSk7cmV0dXJuIFJpKG4sb3IodCwwLG4ubGVuZ3RoKSl9ZnVuY3Rpb24gWXIoZSx0LG4scil7aWYoIUthKGUpKXJldHVybiBlO2Zvcih2YXIgaT0tMSxhPSh0PWdvKHQsZSkpLmxlbmd0aCxsPWEtMSxzPWU7bnVsbCE9cyYmKytpPGE7KXt2YXIgYz1BaSh0W2ldKSx1PW47aWYoXCJfX3Byb3RvX19cIj09PWN8fFwiY29uc3RydWN0b3JcIj09PWN8fFwicHJvdG90eXBlXCI9PT1jKXJldHVybiBlO2lmKGkhPWwpe3ZhciBmPXNbY107KHU9cj9yKGYsYyxzKTpvKT09PW8mJih1PUthKGYpP2Y6dmkodFtpKzFdKT9bXTp7fSl9Sm4ocyxjLHUpLHM9c1tjXX1yZXR1cm4gZX12YXIgS3I9U24/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gU24uc2V0KGUsdCksZX06UWwsWHI9ZXQ/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZXQoZSxcInRvU3RyaW5nXCIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOktsKHQpLHdyaXRhYmxlOiEwfSl9OlFsO2Z1bmN0aW9uIEpyKGUpe3JldHVybiBSaShIbChlKSl9ZnVuY3Rpb24gUXIoZSx0LG4pe3ZhciBvPS0xLGk9ZS5sZW5ndGg7dDwwJiYodD0tdD5pPzA6aSt0KSwobj1uPmk/aTpuKTwwJiYobis9aSksaT10Pm4/MDpuLXQ+Pj4wLHQ+Pj49MDtmb3IodmFyIGE9cihpKTsrK288aTspYVtvXT1lW28rdF07cmV0dXJuIGF9ZnVuY3Rpb24gZW8oZSx0KXt2YXIgbjtyZXR1cm4gY3IoZSwoZnVuY3Rpb24oZSxyLG8pe3JldHVybiEobj10KGUscixvKSl9KSksISFufWZ1bmN0aW9uIHRvKGUsdCxuKXt2YXIgcj0wLG89bnVsbD09ZT9yOmUubGVuZ3RoO2lmKFwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0PT10JiZvPD0yMTQ3NDgzNjQ3KXtmb3IoO3I8bzspe3ZhciBpPXIrbz4+PjEsYT1lW2ldO251bGwhPT1hJiYhb2woYSkmJihuP2E8PXQ6YTx0KT9yPWkrMTpvPWl9cmV0dXJuIG99cmV0dXJuIG5vKGUsdCxRbCxuKX1mdW5jdGlvbiBubyhlLHQsbixyKXt2YXIgaT0wLGE9bnVsbD09ZT8wOmUubGVuZ3RoO2lmKDA9PT1hKXJldHVybiAwO2Zvcih2YXIgbD0odD1uKHQpKSE9dCxzPW51bGw9PT10LGM9b2wodCksdT10PT09bztpPGE7KXt2YXIgZj1wdCgoaSthKS8yKSxkPW4oZVtmXSkscD1kIT09byxoPW51bGw9PT1kLHY9ZD09ZCxnPW9sKGQpO2lmKGwpdmFyIEM9cnx8djtlbHNlIEM9dT92JiYocnx8cCk6cz92JiZwJiYocnx8IWgpOmM/diYmcCYmIWgmJihyfHwhZyk6IWgmJiFnJiYocj9kPD10OmQ8dCk7Qz9pPWYrMTphPWZ9cmV0dXJuIGduKGEsNDI5NDk2NzI5NCl9ZnVuY3Rpb24gcm8oZSx0KXtmb3IodmFyIG49LTEscj1lLmxlbmd0aCxvPTAsaT1bXTsrK248cjspe3ZhciBhPWVbbl0sbD10P3QoYSk6YTtpZighbnx8IUhhKGwscykpe3ZhciBzPWw7aVtvKytdPTA9PT1hPzA6YX19cmV0dXJuIGl9ZnVuY3Rpb24gb28oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGU/ZTpvbChlKT9kOitlfWZ1bmN0aW9uIGlvKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBlO2lmKFphKGUpKXJldHVybiBSdChlLGlvKStcIlwiO2lmKG9sKGUpKXJldHVybiBIbj9Ibi5jYWxsKGUpOlwiXCI7dmFyIHQ9ZStcIlwiO3JldHVyblwiMFwiPT10JiYxL2U9PS0xLzA/XCItMFwiOnR9ZnVuY3Rpb24gYW8oZSx0LG4pe3ZhciByPS0xLG89anQsaT1lLmxlbmd0aCxhPSEwLGw9W10scz1sO2lmKG4pYT0hMSxvPWt0O2Vsc2UgaWYoaT49MjAwKXt2YXIgYz10P251bGw6em8oZSk7aWYoYylyZXR1cm4gc24oYyk7YT0hMSxvPVh0LHM9bmV3IFdufWVsc2Ugcz10P1tdOmw7ZTpmb3IoOysrcjxpOyl7dmFyIHU9ZVtyXSxmPXQ/dCh1KTp1O2lmKHU9bnx8MCE9PXU/dTowLGEmJmY9PWYpe2Zvcih2YXIgZD1zLmxlbmd0aDtkLS07KWlmKHNbZF09PT1mKWNvbnRpbnVlIGU7dCYmcy5wdXNoKGYpLGwucHVzaCh1KX1lbHNlIG8ocyxmLG4pfHwocyE9PWwmJnMucHVzaChmKSxsLnB1c2godSkpfXJldHVybiBsfWZ1bmN0aW9uIGxvKGUsdCl7cmV0dXJuIG51bGw9PShlPUxpKGUsdD1nbyh0LGUpKSl8fGRlbGV0ZSBlW0FpKHppKHQpKV19ZnVuY3Rpb24gc28oZSx0LG4scil7cmV0dXJuIFlyKGUsdCxuKHdyKGUsdCkpLHIpfWZ1bmN0aW9uIGNvKGUsdCxuLHIpe2Zvcih2YXIgbz1lLmxlbmd0aCxpPXI/bzotMTsocj9pLS06KytpPG8pJiZ0KGVbaV0saSxlKTspO3JldHVybiBuP1FyKGUscj8wOmkscj9pKzE6byk6UXIoZSxyP2krMTowLHI/bzppKX1mdW5jdGlvbiB1byhlLHQpe3ZhciBuPWU7cmV0dXJuIG4gaW5zdGFuY2VvZiAkbiYmKG49bi52YWx1ZSgpKSxBdCh0LChmdW5jdGlvbihlLHQpe3JldHVybiB0LmZ1bmMuYXBwbHkodC50aGlzQXJnLFB0KFtlXSx0LmFyZ3MpKX0pLG4pfWZ1bmN0aW9uIGZvKGUsdCxuKXt2YXIgbz1lLmxlbmd0aDtpZihvPDIpcmV0dXJuIG8/YW8oZVswXSk6W107Zm9yKHZhciBpPS0xLGE9cihvKTsrK2k8bzspZm9yKHZhciBsPWVbaV0scz0tMTsrK3M8bzspcyE9aSYmKGFbaV09c3IoYVtpXXx8bCxlW3NdLHQsbikpO3JldHVybiBhbyhocihhLDEpLHQsbil9ZnVuY3Rpb24gcG8oZSx0LG4pe2Zvcih2YXIgcj0tMSxpPWUubGVuZ3RoLGE9dC5sZW5ndGgsbD17fTsrK3I8aTspe3ZhciBzPXI8YT90W3JdOm87bihsLGVbcl0scyl9cmV0dXJuIGx9ZnVuY3Rpb24gaG8oZSl7cmV0dXJuIE5hKGUpP2U6W119ZnVuY3Rpb24gdm8oZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZT9lOlFsfWZ1bmN0aW9uIGdvKGUsdCl7cmV0dXJuIFphKGUpP2U6Q2koZSx0KT9bZV06UGkoaGwoZSkpfXZhciBDbz16cjtmdW5jdGlvbiBtbyhlLHQsbil7dmFyIHI9ZS5sZW5ndGg7cmV0dXJuIG49bj09PW8/cjpuLCF0JiZuPj1yP2U6UXIoZSx0LG4pfXZhciB5bz1hdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGZ0LmNsZWFyVGltZW91dChlKX07ZnVuY3Rpb24gd28oZSx0KXtpZih0KXJldHVybiBlLnNsaWNlKCk7dmFyIG49ZS5sZW5ndGgscj1OZT9OZShuKTpuZXcgZS5jb25zdHJ1Y3RvcihuKTtyZXR1cm4gZS5jb3B5KHIpLHJ9ZnVuY3Rpb24gYm8oZSl7dmFyIHQ9bmV3IGUuY29uc3RydWN0b3IoZS5ieXRlTGVuZ3RoKTtyZXR1cm4gbmV3IEZlKHQpLnNldChuZXcgRmUoZSkpLHR9ZnVuY3Rpb24geG8oZSx0KXt2YXIgbj10P2JvKGUuYnVmZmVyKTplLmJ1ZmZlcjtyZXR1cm4gbmV3IGUuY29uc3RydWN0b3IobixlLmJ5dGVPZmZzZXQsZS5sZW5ndGgpfWZ1bmN0aW9uIF9vKGUsdCl7aWYoZSE9PXQpe3ZhciBuPWUhPT1vLHI9bnVsbD09PWUsaT1lPT1lLGE9b2woZSksbD10IT09byxzPW51bGw9PT10LGM9dD09dCx1PW9sKHQpO2lmKCFzJiYhdSYmIWEmJmU+dHx8YSYmbCYmYyYmIXMmJiF1fHxyJiZsJiZjfHwhbiYmY3x8IWkpcmV0dXJuIDE7aWYoIXImJiFhJiYhdSYmZTx0fHx1JiZuJiZpJiYhciYmIWF8fHMmJm4mJml8fCFsJiZpfHwhYylyZXR1cm4tMX1yZXR1cm4gMH1mdW5jdGlvbiBMbyhlLHQsbixvKXtmb3IodmFyIGk9LTEsYT1lLmxlbmd0aCxsPW4ubGVuZ3RoLHM9LTEsYz10Lmxlbmd0aCx1PXZuKGEtbCwwKSxmPXIoYyt1KSxkPSFvOysrczxjOylmW3NdPXRbc107Zm9yKDsrK2k8bDspKGR8fGk8YSkmJihmW25baV1dPWVbaV0pO2Zvcig7dS0tOylmW3MrK109ZVtpKytdO3JldHVybiBmfWZ1bmN0aW9uIE9vKGUsdCxuLG8pe2Zvcih2YXIgaT0tMSxhPWUubGVuZ3RoLGw9LTEscz1uLmxlbmd0aCxjPS0xLHU9dC5sZW5ndGgsZj12bihhLXMsMCksZD1yKGYrdSkscD0hbzsrK2k8ZjspZFtpXT1lW2ldO2Zvcih2YXIgaD1pOysrYzx1OylkW2grY109dFtjXTtmb3IoOysrbDxzOykocHx8aTxhKSYmKGRbaCtuW2xdXT1lW2krK10pO3JldHVybiBkfWZ1bmN0aW9uIEVvKGUsdCl7dmFyIG49LTEsbz1lLmxlbmd0aDtmb3IodHx8KHQ9cihvKSk7KytuPG87KXRbbl09ZVtuXTtyZXR1cm4gdH1mdW5jdGlvbiBTbyhlLHQsbixyKXt2YXIgaT0hbjtufHwobj17fSk7Zm9yKHZhciBhPS0xLGw9dC5sZW5ndGg7KythPGw7KXt2YXIgcz10W2FdLGM9cj9yKG5bc10sZVtzXSxzLG4sZSk6bztjPT09byYmKGM9ZVtzXSksaT9ucihuLHMsYyk6Sm4obixzLGMpfXJldHVybiBufWZ1bmN0aW9uIE1vKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dmFyIG89WmEobik/THQ6ZXIsaT10P3QoKTp7fTtyZXR1cm4gbyhuLGUsaWkociwyKSxpKX19ZnVuY3Rpb24gam8oZSl7cmV0dXJuIHpyKChmdW5jdGlvbih0LG4pe3ZhciByPS0xLGk9bi5sZW5ndGgsYT1pPjE/bltpLTFdOm8sbD1pPjI/blsyXTpvO2ZvcihhPWUubGVuZ3RoPjMmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGE/KGktLSxhKTpvLGwmJmdpKG5bMF0sblsxXSxsKSYmKGE9aTwzP286YSxpPTEpLHQ9TGUodCk7KytyPGk7KXt2YXIgcz1uW3JdO3MmJmUodCxzLHIsYSl9cmV0dXJuIHR9KSl9ZnVuY3Rpb24ga28oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXtpZihudWxsPT1uKXJldHVybiBuO2lmKCFGYShuKSlyZXR1cm4gZShuLHIpO2Zvcih2YXIgbz1uLmxlbmd0aCxpPXQ/bzotMSxhPUxlKG4pOyh0P2ktLTorK2k8bykmJiExIT09cihhW2ldLGksYSk7KTtyZXR1cm4gbn19ZnVuY3Rpb24gUm8oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtmb3IodmFyIG89LTEsaT1MZSh0KSxhPXIodCksbD1hLmxlbmd0aDtsLS07KXt2YXIgcz1hW2U/bDorK29dO2lmKCExPT09bihpW3NdLHMsaSkpYnJlYWt9cmV0dXJuIHR9fWZ1bmN0aW9uIFBvKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj1ybih0PWhsKHQpKT91bih0KTpvLHI9bj9uWzBdOnQuY2hhckF0KDApLGk9bj9tbyhuLDEpLmpvaW4oXCJcIik6dC5zbGljZSgxKTtyZXR1cm4gcltlXSgpK2l9fWZ1bmN0aW9uIEFvKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gQXQoR2woRGwodCkucmVwbGFjZShLZSxcIlwiKSksZSxcIlwiKX19ZnVuY3Rpb24gSW8oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzO3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgZTtjYXNlIDE6cmV0dXJuIG5ldyBlKHRbMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IGUodFswXSx0WzFdKTtjYXNlIDM6cmV0dXJuIG5ldyBlKHRbMF0sdFsxXSx0WzJdKTtjYXNlIDQ6cmV0dXJuIG5ldyBlKHRbMF0sdFsxXSx0WzJdLHRbM10pO2Nhc2UgNTpyZXR1cm4gbmV3IGUodFswXSx0WzFdLHRbMl0sdFszXSx0WzRdKTtjYXNlIDY6cmV0dXJuIG5ldyBlKHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSx0WzVdKTtjYXNlIDc6cmV0dXJuIG5ldyBlKHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSx0WzVdLHRbNl0pfXZhciBuPUJuKGUucHJvdG90eXBlKSxyPWUuYXBwbHkobix0KTtyZXR1cm4gS2Eocik/cjpufX1mdW5jdGlvbiBUbyhlKXtyZXR1cm4gZnVuY3Rpb24odCxuLHIpe3ZhciBpPUxlKHQpO2lmKCFGYSh0KSl7dmFyIGE9aWkobiwzKTt0PVNsKHQpLG49ZnVuY3Rpb24oZSl7cmV0dXJuIGEoaVtlXSxlLGkpfX12YXIgbD1lKHQsbixyKTtyZXR1cm4gbD4tMT9pW2E/dFtsXTpsXTpvfX1mdW5jdGlvbiBIbyhlKXtyZXR1cm4gUW8oKGZ1bmN0aW9uKHQpe3ZhciBuPXQubGVuZ3RoLHI9bixhPVpuLnByb3RvdHlwZS50aHJ1O2ZvcihlJiZ0LnJldmVyc2UoKTtyLS07KXt2YXIgbD10W3JdO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGwpdGhyb3cgbmV3IFNlKGkpO2lmKGEmJiFzJiZcIndyYXBwZXJcIj09cmkobCkpdmFyIHM9bmV3IFpuKFtdLCEwKX1mb3Iocj1zP3I6bjsrK3I8bjspe3ZhciBjPXJpKGw9dFtyXSksdT1cIndyYXBwZXJcIj09Yz9uaShsKTpvO3M9dSYmbWkodVswXSkmJjQyND09dVsxXSYmIXVbNF0ubGVuZ3RoJiYxPT11WzldP3NbcmkodVswXSldLmFwcGx5KHMsdVszXSk6MT09bC5sZW5ndGgmJm1pKGwpP3NbY10oKTpzLnRocnUobCl9cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLHI9ZVswXTtpZihzJiYxPT1lLmxlbmd0aCYmWmEocikpcmV0dXJuIHMucGxhbnQocikudmFsdWUoKTtmb3IodmFyIG89MCxpPW4/dFtvXS5hcHBseSh0aGlzLGUpOnI7KytvPG47KWk9dFtvXS5jYWxsKHRoaXMsaSk7cmV0dXJuIGl9fSkpfWZ1bmN0aW9uIFZvKGUsdCxuLGksYSxsLHMsdSxmLGQpe3ZhciBwPXQmYyxoPTEmdCx2PTImdCxnPTI0JnQsQz01MTImdCxtPXY/bzpJbyhlKTtyZXR1cm4gZnVuY3Rpb24gYygpe2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLHc9cih5KSxiPXk7Yi0tOyl3W2JdPWFyZ3VtZW50c1tiXTtpZihnKXZhciB4PW9pKGMpLF89ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49ZS5sZW5ndGgscj0wO24tLTspZVtuXT09PXQmJisrcjtyZXR1cm4gcn0odyx4KTtpZihpJiYodz1Mbyh3LGksYSxnKSksbCYmKHc9T28odyxsLHMsZykpLHktPV8sZyYmeTxkKXt2YXIgTD1sbih3LHgpO3JldHVybiBVbyhlLHQsVm8sYy5wbGFjZWhvbGRlcixuLHcsTCx1LGYsZC15KX12YXIgTz1oP246dGhpcyxFPXY/T1tlXTplO3JldHVybiB5PXcubGVuZ3RoLHU/dz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aCxyPWduKHQubGVuZ3RoLG4pLGk9RW8oZSk7ci0tOyl7dmFyIGE9dFtyXTtlW3JdPXZpKGEsbik/aVthXTpvfXJldHVybiBlfSh3LHUpOkMmJnk+MSYmdy5yZXZlcnNlKCkscCYmZjx5JiYody5sZW5ndGg9ZiksdGhpcyYmdGhpcyE9PWZ0JiZ0aGlzIGluc3RhbmNlb2YgYyYmKEU9bXx8SW8oRSkpLEUuYXBwbHkoTyx3KX19ZnVuY3Rpb24gQm8oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIENyKGUsKGZ1bmN0aW9uKGUsbyxpKXt0KHIsbihlKSxvLGkpfSkpLHJ9KG4sZSx0KHIpLHt9KX19ZnVuY3Rpb24gRG8oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXt2YXIgaTtpZihuPT09byYmcj09PW8pcmV0dXJuIHQ7aWYobiE9PW8mJihpPW4pLHIhPT1vKXtpZihpPT09bylyZXR1cm4gcjtcInN0cmluZ1wiPT10eXBlb2Ygbnx8XCJzdHJpbmdcIj09dHlwZW9mIHI/KG49aW8obikscj1pbyhyKSk6KG49b28obikscj1vbyhyKSksaT1lKG4scil9cmV0dXJuIGl9fWZ1bmN0aW9uIFpvKGUpe3JldHVybiBRbygoZnVuY3Rpb24odCl7cmV0dXJuIHQ9UnQodCxZdChpaSgpKSksenIoKGZ1bmN0aW9uKG4pe3ZhciByPXRoaXM7cmV0dXJuIGUodCwoZnVuY3Rpb24oZSl7cmV0dXJuIF90KGUscixuKX0pKX0pKX0pKX1mdW5jdGlvbiAkbyhlLHQpe3ZhciBuPSh0PXQ9PT1vP1wiIFwiOmlvKHQpKS5sZW5ndGg7aWYobjwyKXJldHVybiBuP1dyKHQsZSk6dDt2YXIgcj1Xcih0LGR0KGUvY24odCkpKTtyZXR1cm4gcm4odCk/bW8odW4ociksMCxlKS5qb2luKFwiXCIpOnIuc2xpY2UoMCxlKX1mdW5jdGlvbiBGbyhlKXtyZXR1cm4gZnVuY3Rpb24odCxuLGkpe3JldHVybiBpJiZcIm51bWJlclwiIT10eXBlb2YgaSYmZ2kodCxuLGkpJiYobj1pPW8pLHQ9Y2wodCksbj09PW8/KG49dCx0PTApOm49Y2wobiksZnVuY3Rpb24oZSx0LG4sbyl7Zm9yKHZhciBpPS0xLGE9dm4oZHQoKHQtZSkvKG58fDEpKSwwKSxsPXIoYSk7YS0tOylsW28/YTorK2ldPWUsZSs9bjtyZXR1cm4gbH0odCxuLGk9aT09PW8/dDxuPzE6LTE6Y2woaSksZSl9fWZ1bmN0aW9uIE5vKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0JiZcInN0cmluZ1wiPT10eXBlb2Ygbnx8KHQ9ZGwodCksbj1kbChuKSksZSh0LG4pfX1mdW5jdGlvbiBVbyhlLHQsbixyLGksYSxsLGMsdSxmKXt2YXIgZD04JnQ7dHw9ZD9zOjY0LDQmKHQmPX4oZD82NDpzKSl8fCh0Jj0tNCk7dmFyIHA9W2UsdCxpLGQ/YTpvLGQ/bDpvLGQ/bzphLGQ/bzpsLGMsdSxmXSxoPW4uYXBwbHkobyxwKTtyZXR1cm4gbWkoZSkmJkVpKGgscCksaC5wbGFjZWhvbGRlcj1yLGppKGgsZSx0KX1mdW5jdGlvbiBXbyhlKXt2YXIgdD1fZVtlXTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtpZihlPWRsKGUpLChuPW51bGw9PW4/MDpnbih1bChuKSwyOTIpKSYmSHQoZSkpe3ZhciByPShobChlKStcImVcIikuc3BsaXQoXCJlXCIpO3JldHVybisoKHI9KGhsKHQoclswXStcImVcIisoK3JbMV0rbikpKStcImVcIikuc3BsaXQoXCJlXCIpKVswXStcImVcIisoK3JbMV0tbikpfXJldHVybiB0KGUpfX12YXIgem89TG4mJjEvc24obmV3IExuKFssLTBdKSlbMV09PXU/ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBMbihlKX06b3M7ZnVuY3Rpb24gR28oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPWZpKHQpO3JldHVybiBuPT14P29uKHQpOm49PVM/ZnVuY3Rpb24oZSl7dmFyIHQ9LTEsbj1BcnJheShlLnNpemUpO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe25bKyt0XT1bZSxlXX0pKSxufSh0KTpmdW5jdGlvbihlLHQpe3JldHVybiBSdCh0LChmdW5jdGlvbih0KXtyZXR1cm5bdCxlW3RdXX0pKX0odCxlKHQpKX19ZnVuY3Rpb24gcW8oZSx0LG4sYSx1LGYsZCxwKXt2YXIgaD0yJnQ7aWYoIWgmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFNlKGkpO3ZhciB2PWE/YS5sZW5ndGg6MDtpZih2fHwodCY9LTk3LGE9dT1vKSxkPWQ9PT1vP2Q6dm4odWwoZCksMCkscD1wPT09bz9wOnVsKHApLHYtPXU/dS5sZW5ndGg6MCw2NCZ0KXt2YXIgZz1hLEM9dTthPXU9b312YXIgbT1oP286bmkoZSkseT1bZSx0LG4sYSx1LGcsQyxmLGQscF07aWYobSYmZnVuY3Rpb24oZSx0KXt2YXIgbj1lWzFdLHI9dFsxXSxvPW58cixpPW88MTMxLGE9cj09YyYmOD09bnx8cj09YyYmMjU2PT1uJiZlWzddLmxlbmd0aDw9dFs4XXx8Mzg0PT1yJiZ0WzddLmxlbmd0aDw9dFs4XSYmOD09bjtpZighaSYmIWEpcmV0dXJuIGU7MSZyJiYoZVsyXT10WzJdLG98PTEmbj8wOjQpO3ZhciBzPXRbM107aWYocyl7dmFyIHU9ZVszXTtlWzNdPXU/TG8odSxzLHRbNF0pOnMsZVs0XT11P2xuKGVbM10sbCk6dFs0XX0ocz10WzVdKSYmKHU9ZVs1XSxlWzVdPXU/T28odSxzLHRbNl0pOnMsZVs2XT11P2xuKGVbNV0sbCk6dFs2XSksKHM9dFs3XSkmJihlWzddPXMpLHImYyYmKGVbOF09bnVsbD09ZVs4XT90WzhdOmduKGVbOF0sdFs4XSkpLG51bGw9PWVbOV0mJihlWzldPXRbOV0pLGVbMF09dFswXSxlWzFdPW99KHksbSksZT15WzBdLHQ9eVsxXSxuPXlbMl0sYT15WzNdLHU9eVs0XSwhKHA9eVs5XT15WzldPT09bz9oPzA6ZS5sZW5ndGg6dm4oeVs5XS12LDApKSYmMjQmdCYmKHQmPS0yNSksdCYmMSE9dCl3PTg9PXR8fDE2PT10P2Z1bmN0aW9uKGUsdCxuKXt2YXIgaT1JbyhlKTtyZXR1cm4gZnVuY3Rpb24gYSgpe2Zvcih2YXIgbD1hcmd1bWVudHMubGVuZ3RoLHM9cihsKSxjPWwsdT1vaShhKTtjLS07KXNbY109YXJndW1lbnRzW2NdO3ZhciBmPWw8MyYmc1swXSE9PXUmJnNbbC0xXSE9PXU/W106bG4ocyx1KTtyZXR1cm4obC09Zi5sZW5ndGgpPG4/VW8oZSx0LFZvLGEucGxhY2Vob2xkZXIsbyxzLGYsbyxvLG4tbCk6X3QodGhpcyYmdGhpcyE9PWZ0JiZ0aGlzIGluc3RhbmNlb2YgYT9pOmUsdGhpcyxzKX19KGUsdCxwKTp0IT1zJiYzMyE9dHx8dS5sZW5ndGg/Vm8uYXBwbHkobyx5KTpmdW5jdGlvbihlLHQsbixvKXt2YXIgaT0xJnQsYT1JbyhlKTtyZXR1cm4gZnVuY3Rpb24gdCgpe2Zvcih2YXIgbD0tMSxzPWFyZ3VtZW50cy5sZW5ndGgsYz0tMSx1PW8ubGVuZ3RoLGY9cih1K3MpLGQ9dGhpcyYmdGhpcyE9PWZ0JiZ0aGlzIGluc3RhbmNlb2YgdD9hOmU7KytjPHU7KWZbY109b1tjXTtmb3IoO3MtLTspZltjKytdPWFyZ3VtZW50c1srK2xdO3JldHVybiBfdChkLGk/bjp0aGlzLGYpfX0oZSx0LG4sYSk7ZWxzZSB2YXIgdz1mdW5jdGlvbihlLHQsbil7dmFyIHI9MSZ0LG89SW8oZSk7cmV0dXJuIGZ1bmN0aW9uIHQoKXtyZXR1cm4odGhpcyYmdGhpcyE9PWZ0JiZ0aGlzIGluc3RhbmNlb2YgdD9vOmUpLmFwcGx5KHI/bjp0aGlzLGFyZ3VtZW50cyl9fShlLHQsbik7cmV0dXJuIGppKChtP0tyOkVpKSh3LHkpLGUsdCl9ZnVuY3Rpb24gWW8oZSx0LG4scil7cmV0dXJuIGU9PT1vfHxIYShlLGtlW25dKSYmIUFlLmNhbGwocixuKT90OmV9ZnVuY3Rpb24gS28oZSx0LG4scixpLGEpe3JldHVybiBLYShlKSYmS2EodCkmJihhLnNldCh0LGUpLEJyKGUsdCxvLEtvLGEpLGEuZGVsZXRlKHQpKSxlfWZ1bmN0aW9uIFhvKGUpe3JldHVybiBlbChlKT9vOmV9ZnVuY3Rpb24gSm8oZSx0LG4scixpLGEpe3ZhciBsPTEmbixzPWUubGVuZ3RoLGM9dC5sZW5ndGg7aWYocyE9YyYmIShsJiZjPnMpKXJldHVybiExO3ZhciB1PWEuZ2V0KGUpLGY9YS5nZXQodCk7aWYodSYmZilyZXR1cm4gdT09dCYmZj09ZTt2YXIgZD0tMSxwPSEwLGg9MiZuP25ldyBXbjpvO2ZvcihhLnNldChlLHQpLGEuc2V0KHQsZSk7KytkPHM7KXt2YXIgdj1lW2RdLGc9dFtkXTtpZihyKXZhciBDPWw/cihnLHYsZCx0LGUsYSk6cih2LGcsZCxlLHQsYSk7aWYoQyE9PW8pe2lmKEMpY29udGludWU7cD0hMTticmVha31pZihoKXtpZighVHQodCwoZnVuY3Rpb24oZSx0KXtpZighWHQoaCx0KSYmKHY9PT1lfHxpKHYsZSxuLHIsYSkpKXJldHVybiBoLnB1c2godCl9KSkpe3A9ITE7YnJlYWt9fWVsc2UgaWYodiE9PWcmJiFpKHYsZyxuLHIsYSkpe3A9ITE7YnJlYWt9fXJldHVybiBhLmRlbGV0ZShlKSxhLmRlbGV0ZSh0KSxwfWZ1bmN0aW9uIFFvKGUpe3JldHVybiBNaShfaShlLG8sJGkpLGUrXCJcIil9ZnVuY3Rpb24gZWkoZSl7cmV0dXJuIGJyKGUsU2wsY2kpfWZ1bmN0aW9uIHRpKGUpe3JldHVybiBicihlLE1sLHVpKX12YXIgbmk9U24/ZnVuY3Rpb24oZSl7cmV0dXJuIFNuLmdldChlKX06b3M7ZnVuY3Rpb24gcmkoZSl7Zm9yKHZhciB0PWUubmFtZStcIlwiLG49TW5bdF0scj1BZS5jYWxsKE1uLHQpP24ubGVuZ3RoOjA7ci0tOyl7dmFyIG89bltyXSxpPW8uZnVuYztpZihudWxsPT1pfHxpPT1lKXJldHVybiBvLm5hbWV9cmV0dXJuIHR9ZnVuY3Rpb24gb2koZSl7cmV0dXJuKEFlLmNhbGwoVm4sXCJwbGFjZWhvbGRlclwiKT9WbjplKS5wbGFjZWhvbGRlcn1mdW5jdGlvbiBpaSgpe3ZhciBlPVZuLml0ZXJhdGVlfHxlcztyZXR1cm4gZT1lPT09ZXM/UHI6ZSxhcmd1bWVudHMubGVuZ3RoP2UoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk6ZX1mdW5jdGlvbiBhaShlLHQpe3ZhciBuLHIsbz1lLl9fZGF0YV9fO3JldHVybihcInN0cmluZ1wiPT0ocj10eXBlb2Yobj10KSl8fFwibnVtYmVyXCI9PXJ8fFwic3ltYm9sXCI9PXJ8fFwiYm9vbGVhblwiPT1yP1wiX19wcm90b19fXCIhPT1uOm51bGw9PT1uKT9vW1wic3RyaW5nXCI9PXR5cGVvZiB0P1wic3RyaW5nXCI6XCJoYXNoXCJdOm8ubWFwfWZ1bmN0aW9uIGxpKGUpe2Zvcih2YXIgdD1TbChlKSxuPXQubGVuZ3RoO24tLTspe3ZhciByPXRbbl0sbz1lW3JdO3Rbbl09W3IsbyxiaShvKV19cmV0dXJuIHR9ZnVuY3Rpb24gc2koZSx0KXt2YXIgbj1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1lP286ZVt0XX0oZSx0KTtyZXR1cm4gUnIobik/bjpvfXZhciBjaT12dD9mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9bXTooZT1MZShlKSxNdCh2dChlKSwoZnVuY3Rpb24odCl7cmV0dXJuIHplLmNhbGwoZSx0KX0pKSl9OmZzLHVpPXZ0P2Z1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXTtlOylQdCh0LGNpKGUpKSxlPVVlKGUpO3JldHVybiB0fTpmcyxmaT14cjtmdW5jdGlvbiBkaShlLHQsbil7Zm9yKHZhciByPS0xLG89KHQ9Z28odCxlKSkubGVuZ3RoLGk9ITE7KytyPG87KXt2YXIgYT1BaSh0W3JdKTtpZighKGk9bnVsbCE9ZSYmbihlLGEpKSlicmVhaztlPWVbYV19cmV0dXJuIGl8fCsrciE9bz9pOiEhKG89bnVsbD09ZT8wOmUubGVuZ3RoKSYmWWEobykmJnZpKGEsbykmJihaYShlKXx8RGEoZSkpfWZ1bmN0aW9uIHBpKGUpe3JldHVyblwiZnVuY3Rpb25cIiE9dHlwZW9mIGUuY29uc3RydWN0b3J8fHdpKGUpP3t9OkJuKFVlKGUpKX1mdW5jdGlvbiBoaShlKXtyZXR1cm4gWmEoZSl8fERhKGUpfHwhIShxZSYmZSYmZVtxZV0pfWZ1bmN0aW9uIHZpKGUsdCl7dmFyIG49dHlwZW9mIGU7cmV0dXJuISEodD1udWxsPT10P2Y6dCkmJihcIm51bWJlclwiPT1ufHxcInN5bWJvbFwiIT1uJiZDZS50ZXN0KGUpKSYmZT4tMSYmZSUxPT0wJiZlPHR9ZnVuY3Rpb24gZ2koZSx0LG4pe2lmKCFLYShuKSlyZXR1cm4hMTt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShcIm51bWJlclwiPT1yP0ZhKG4pJiZ2aSh0LG4ubGVuZ3RoKTpcInN0cmluZ1wiPT1yJiZ0IGluIG4pJiZIYShuW3RdLGUpfWZ1bmN0aW9uIENpKGUsdCl7aWYoWmEoZSkpcmV0dXJuITE7dmFyIG49dHlwZW9mIGU7cmV0dXJuIShcIm51bWJlclwiIT1uJiZcInN5bWJvbFwiIT1uJiZcImJvb2xlYW5cIiE9biYmbnVsbCE9ZSYmIW9sKGUpKXx8US50ZXN0KGUpfHwhSi50ZXN0KGUpfHxudWxsIT10JiZlIGluIExlKHQpfWZ1bmN0aW9uIG1pKGUpe3ZhciB0PXJpKGUpLG49Vm5bdF07aWYoXCJmdW5jdGlvblwiIT10eXBlb2Ygbnx8ISh0IGluICRuLnByb3RvdHlwZSkpcmV0dXJuITE7aWYoZT09PW4pcmV0dXJuITA7dmFyIHI9bmkobik7cmV0dXJuISFyJiZlPT09clswXX0oYm4mJmZpKG5ldyBibihuZXcgQXJyYXlCdWZmZXIoMSkpKSE9UHx8eG4mJmZpKG5ldyB4bikhPXh8fF9uJiZmaShfbi5yZXNvbHZlKCkpIT1PfHxMbiYmZmkobmV3IExuKSE9U3x8T24mJmZpKG5ldyBPbikhPWspJiYoZmk9ZnVuY3Rpb24oZSl7dmFyIHQ9eHIoZSksbj10PT1MP2UuY29uc3RydWN0b3I6byxyPW4/SWkobik6XCJcIjtpZihyKXN3aXRjaChyKXtjYXNlIGpuOnJldHVybiBQO2Nhc2Uga246cmV0dXJuIHg7Y2FzZSBSbjpyZXR1cm4gTztjYXNlIFBuOnJldHVybiBTO2Nhc2UgQW46cmV0dXJuIGt9cmV0dXJuIHR9KTt2YXIgeWk9UmU/R2E6ZHM7ZnVuY3Rpb24gd2koZSl7dmFyIHQ9ZSYmZS5jb25zdHJ1Y3RvcjtyZXR1cm4gZT09PShcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZ0LnByb3RvdHlwZXx8a2UpfWZ1bmN0aW9uIGJpKGUpe3JldHVybiBlPT1lJiYhS2EoZSl9ZnVuY3Rpb24geGkoZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG51bGwhPW4mJm5bZV09PT10JiYodCE9PW98fGUgaW4gTGUobikpfX1mdW5jdGlvbiBfaShlLHQsbil7cmV0dXJuIHQ9dm4odD09PW8/ZS5sZW5ndGgtMTp0LDApLGZ1bmN0aW9uKCl7Zm9yKHZhciBvPWFyZ3VtZW50cyxpPS0xLGE9dm4oby5sZW5ndGgtdCwwKSxsPXIoYSk7KytpPGE7KWxbaV09b1t0K2ldO2k9LTE7Zm9yKHZhciBzPXIodCsxKTsrK2k8dDspc1tpXT1vW2ldO3JldHVybiBzW3RdPW4obCksX3QoZSx0aGlzLHMpfX1mdW5jdGlvbiBMaShlLHQpe3JldHVybiB0Lmxlbmd0aDwyP2U6d3IoZSxRcih0LDAsLTEpKX1mdW5jdGlvbiBPaShlLHQpe2lmKChcImNvbnN0cnVjdG9yXCIhPT10fHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlW3RdKSYmXCJfX3Byb3RvX19cIiE9dClyZXR1cm4gZVt0XX12YXIgRWk9a2koS3IpLFNpPXV0fHxmdW5jdGlvbihlLHQpe3JldHVybiBmdC5zZXRUaW1lb3V0KGUsdCl9LE1pPWtpKFhyKTtmdW5jdGlvbiBqaShlLHQsbil7dmFyIHI9dCtcIlwiO3JldHVybiBNaShlLGZ1bmN0aW9uKGUsdCl7dmFyIG49dC5sZW5ndGg7aWYoIW4pcmV0dXJuIGU7dmFyIHI9bi0xO3JldHVybiB0W3JdPShuPjE/XCImIFwiOlwiXCIpK3Rbcl0sdD10LmpvaW4obj4yP1wiLCBcIjpcIiBcIiksZS5yZXBsYWNlKGllLFwie1xcbi8qIFt3cmFwcGVkIHdpdGggXCIrdCtcIl0gKi9cXG5cIil9KHIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gT3QoaCwoZnVuY3Rpb24obil7dmFyIHI9XCJfLlwiK25bMF07dCZuWzFdJiYhanQoZSxyKSYmZS5wdXNoKHIpfSkpLGUuc29ydCgpfShmdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKGFlKTtyZXR1cm4gdD90WzFdLnNwbGl0KGxlKTpbXX0ociksbikpKX1mdW5jdGlvbiBraShlKXt2YXIgdD0wLG49MDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1DbigpLGk9MTYtKHItbik7aWYobj1yLGk+MCl7aWYoKyt0Pj04MDApcmV0dXJuIGFyZ3VtZW50c1swXX1lbHNlIHQ9MDtyZXR1cm4gZS5hcHBseShvLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIFJpKGUsdCl7dmFyIG49LTEscj1lLmxlbmd0aCxpPXItMTtmb3IodD10PT09bz9yOnQ7KytuPHQ7KXt2YXIgYT1VcihuLGkpLGw9ZVthXTtlW2FdPWVbbl0sZVtuXT1sfXJldHVybiBlLmxlbmd0aD10LGV9dmFyIFBpPWZ1bmN0aW9uKGUpe3ZhciB0PWthKChmdW5jdGlvbihlKXt2YXIgdD1bXTtyZXR1cm4gNDY9PT1lLmNoYXJDb2RlQXQoMCkmJnQucHVzaChcIlwiKSxlLnJlcGxhY2UoZWUsKGZ1bmN0aW9uKGUsbixyLG8pe3QucHVzaChyP28ucmVwbGFjZSh1ZSxcIiQxXCIpOm58fGUpfSkpLHR9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIDUwMD09PW4uc2l6ZSYmbi5jbGVhcigpLGV9KSksbj10LmNhY2hlO3JldHVybiB0fSgpO2Z1bmN0aW9uIEFpKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlfHxvbChlKSlyZXR1cm4gZTt2YXIgdD1lK1wiXCI7cmV0dXJuXCIwXCI9PXQmJjEvZT09LTEvMD9cIi0wXCI6dH1mdW5jdGlvbiBJaShlKXtpZihudWxsIT1lKXt0cnl7cmV0dXJuIFBlLmNhbGwoZSl9Y2F0Y2goZSl7fXRyeXtyZXR1cm4gZStcIlwifWNhdGNoKGUpe319cmV0dXJuXCJcIn1mdW5jdGlvbiBUaShlKXtpZihlIGluc3RhbmNlb2YgJG4pcmV0dXJuIGUuY2xvbmUoKTt2YXIgdD1uZXcgWm4oZS5fX3dyYXBwZWRfXyxlLl9fY2hhaW5fXyk7cmV0dXJuIHQuX19hY3Rpb25zX189RW8oZS5fX2FjdGlvbnNfXyksdC5fX2luZGV4X189ZS5fX2luZGV4X18sdC5fX3ZhbHVlc19fPWUuX192YWx1ZXNfXyx0fXZhciBIaT16cigoZnVuY3Rpb24oZSx0KXtyZXR1cm4gTmEoZSk/c3IoZSxocih0LDEsTmEsITApKTpbXX0pKSxWaT16cigoZnVuY3Rpb24oZSx0KXt2YXIgbj16aSh0KTtyZXR1cm4gTmEobikmJihuPW8pLE5hKGUpP3NyKGUsaHIodCwxLE5hLCEwKSxpaShuLDIpKTpbXX0pKSxCaT16cigoZnVuY3Rpb24oZSx0KXt2YXIgbj16aSh0KTtyZXR1cm4gTmEobikmJihuPW8pLE5hKGUpP3NyKGUsaHIodCwxLE5hLCEwKSxvLG4pOltdfSkpO2Z1bmN0aW9uIERpKGUsdCxuKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIXIpcmV0dXJuLTE7dmFyIG89bnVsbD09bj8wOnVsKG4pO3JldHVybiBvPDAmJihvPXZuKHIrbywwKSksQnQoZSxpaSh0LDMpLG8pfWZ1bmN0aW9uIFppKGUsdCxuKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIXIpcmV0dXJuLTE7dmFyIGk9ci0xO3JldHVybiBuIT09byYmKGk9dWwobiksaT1uPDA/dm4ocitpLDApOmduKGksci0xKSksQnQoZSxpaSh0LDMpLGksITApfWZ1bmN0aW9uICRpKGUpe3JldHVybiBudWxsIT1lJiZlLmxlbmd0aD9ocihlLDEpOltdfWZ1bmN0aW9uIEZpKGUpe3JldHVybiBlJiZlLmxlbmd0aD9lWzBdOm99dmFyIE5pPXpyKChmdW5jdGlvbihlKXt2YXIgdD1SdChlLGhvKTtyZXR1cm4gdC5sZW5ndGgmJnRbMF09PT1lWzBdP0VyKHQpOltdfSkpLFVpPXpyKChmdW5jdGlvbihlKXt2YXIgdD16aShlKSxuPVJ0KGUsaG8pO3JldHVybiB0PT09emkobik/dD1vOm4ucG9wKCksbi5sZW5ndGgmJm5bMF09PT1lWzBdP0VyKG4saWkodCwyKSk6W119KSksV2k9enIoKGZ1bmN0aW9uKGUpe3ZhciB0PXppKGUpLG49UnQoZSxobyk7cmV0dXJuKHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgdD90Om8pJiZuLnBvcCgpLG4ubGVuZ3RoJiZuWzBdPT09ZVswXT9FcihuLG8sdCk6W119KSk7ZnVuY3Rpb24gemkoZSl7dmFyIHQ9bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiB0P2VbdC0xXTpvfXZhciBHaT16cihxaSk7ZnVuY3Rpb24gcWkoZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGgmJnQmJnQubGVuZ3RoP0ZyKGUsdCk6ZX12YXIgWWk9UW8oKGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT8wOmUubGVuZ3RoLHI9cnIoZSx0KTtyZXR1cm4gTnIoZSxSdCh0LChmdW5jdGlvbihlKXtyZXR1cm4gdmkoZSxuKT8rZTplfSkpLnNvcnQoX28pKSxyfSkpO2Z1bmN0aW9uIEtpKGUpe3JldHVybiBudWxsPT1lP2U6d24uY2FsbChlKX12YXIgWGk9enIoKGZ1bmN0aW9uKGUpe3JldHVybiBhbyhocihlLDEsTmEsITApKX0pKSxKaT16cigoZnVuY3Rpb24oZSl7dmFyIHQ9emkoZSk7cmV0dXJuIE5hKHQpJiYodD1vKSxhbyhocihlLDEsTmEsITApLGlpKHQsMikpfSkpLFFpPXpyKChmdW5jdGlvbihlKXt2YXIgdD16aShlKTtyZXR1cm4gdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3Q6byxhbyhocihlLDEsTmEsITApLG8sdCl9KSk7ZnVuY3Rpb24gZWEoZSl7aWYoIWV8fCFlLmxlbmd0aClyZXR1cm5bXTt2YXIgdD0wO3JldHVybiBlPU10KGUsKGZ1bmN0aW9uKGUpe2lmKE5hKGUpKXJldHVybiB0PXZuKGUubGVuZ3RoLHQpLCEwfSkpLEd0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiBSdChlLE50KHQpKX0pKX1mdW5jdGlvbiB0YShlLHQpe2lmKCFlfHwhZS5sZW5ndGgpcmV0dXJuW107dmFyIG49ZWEoZSk7cmV0dXJuIG51bGw9PXQ/bjpSdChuLChmdW5jdGlvbihlKXtyZXR1cm4gX3QodCxvLGUpfSkpfXZhciBuYT16cigoZnVuY3Rpb24oZSx0KXtyZXR1cm4gTmEoZSk/c3IoZSx0KTpbXX0pKSxyYT16cigoZnVuY3Rpb24oZSl7cmV0dXJuIGZvKE10KGUsTmEpKX0pKSxvYT16cigoZnVuY3Rpb24oZSl7dmFyIHQ9emkoZSk7cmV0dXJuIE5hKHQpJiYodD1vKSxmbyhNdChlLE5hKSxpaSh0LDIpKX0pKSxpYT16cigoZnVuY3Rpb24oZSl7dmFyIHQ9emkoZSk7cmV0dXJuIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgdD90Om8sZm8oTXQoZSxOYSksbyx0KX0pKSxhYT16cihlYSksbGE9enIoKGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoLG49dD4xP2VbdC0xXTpvO3JldHVybiBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIG4/KGUucG9wKCksbik6byx0YShlLG4pfSkpO2Z1bmN0aW9uIHNhKGUpe3ZhciB0PVZuKGUpO3JldHVybiB0Ll9fY2hhaW5fXz0hMCx0fWZ1bmN0aW9uIGNhKGUsdCl7cmV0dXJuIHQoZSl9dmFyIHVhPVFvKChmdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aCxuPXQ/ZVswXTowLHI9dGhpcy5fX3dyYXBwZWRfXyxpPWZ1bmN0aW9uKHQpe3JldHVybiBycih0LGUpfTtyZXR1cm4hKHQ+MXx8dGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgpJiZyIGluc3RhbmNlb2YgJG4mJnZpKG4pPygocj1yLnNsaWNlKG4sK24rKHQ/MTowKSkpLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6Y2EsYXJnczpbaV0sdGhpc0FyZzpvfSksbmV3IFpuKHIsdGhpcy5fX2NoYWluX18pLnRocnUoKGZ1bmN0aW9uKGUpe3JldHVybiB0JiYhZS5sZW5ndGgmJmUucHVzaChvKSxlfSkpKTp0aGlzLnRocnUoaSl9KSksZmE9TW8oKGZ1bmN0aW9uKGUsdCxuKXtBZS5jYWxsKGUsbik/KytlW25dOm5yKGUsbiwxKX0pKSxkYT1UbyhEaSkscGE9VG8oWmkpO2Z1bmN0aW9uIGhhKGUsdCl7cmV0dXJuKFphKGUpP090OmNyKShlLGlpKHQsMykpfWZ1bmN0aW9uIHZhKGUsdCl7cmV0dXJuKFphKGUpP0V0OnVyKShlLGlpKHQsMykpfXZhciBnYT1NbygoZnVuY3Rpb24oZSx0LG4pe0FlLmNhbGwoZSxuKT9lW25dLnB1c2godCk6bnIoZSxuLFt0XSl9KSksQ2E9enIoKGZ1bmN0aW9uKGUsdCxuKXt2YXIgbz0tMSxpPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQsYT1GYShlKT9yKGUubGVuZ3RoKTpbXTtyZXR1cm4gY3IoZSwoZnVuY3Rpb24oZSl7YVsrK29dPWk/X3QodCxlLG4pOlNyKGUsdCxuKX0pKSxhfSkpLG1hPU1vKChmdW5jdGlvbihlLHQsbil7bnIoZSxuLHQpfSkpO2Z1bmN0aW9uIHlhKGUsdCl7cmV0dXJuKFphKGUpP1J0OlRyKShlLGlpKHQsMykpfXZhciB3YT1NbygoZnVuY3Rpb24oZSx0LG4pe2Vbbj8wOjFdLnB1c2godCl9KSwoZnVuY3Rpb24oKXtyZXR1cm5bW10sW11dfSkpLGJhPXpyKChmdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJuW107dmFyIG49dC5sZW5ndGg7cmV0dXJuIG4+MSYmZ2koZSx0WzBdLHRbMV0pP3Q9W106bj4yJiZnaSh0WzBdLHRbMV0sdFsyXSkmJih0PVt0WzBdXSksWnIoZSxocih0LDEpLFtdKX0pKSx4YT1jdHx8ZnVuY3Rpb24oKXtyZXR1cm4gZnQuRGF0ZS5ub3coKX07ZnVuY3Rpb24gX2EoZSx0LG4pe3JldHVybiB0PW4/bzp0LHQ9ZSYmbnVsbD09dD9lLmxlbmd0aDp0LHFvKGUsYyxvLG8sbyxvLHQpfWZ1bmN0aW9uIExhKGUsdCl7dmFyIG47aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgU2UoaSk7cmV0dXJuIGU9dWwoZSksZnVuY3Rpb24oKXtyZXR1cm4tLWU+MCYmKG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGU8PTEmJih0PW8pLG59fXZhciBPYT16cigoZnVuY3Rpb24oZSx0LG4pe3ZhciByPTE7aWYobi5sZW5ndGgpe3ZhciBvPWxuKG4sb2koT2EpKTtyfD1zfXJldHVybiBxbyhlLHIsdCxuLG8pfSkpLEVhPXpyKChmdW5jdGlvbihlLHQsbil7dmFyIHI9MztpZihuLmxlbmd0aCl7dmFyIG89bG4obixvaShFYSkpO3J8PXN9cmV0dXJuIHFvKHQscixlLG4sbyl9KSk7ZnVuY3Rpb24gU2EoZSx0LG4pe3ZhciByLGEsbCxzLGMsdSxmPTAsZD0hMSxwPSExLGg9ITA7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgU2UoaSk7ZnVuY3Rpb24gdih0KXt2YXIgbj1yLGk9YTtyZXR1cm4gcj1hPW8sZj10LHM9ZS5hcHBseShpLG4pfWZ1bmN0aW9uIGcoZSl7dmFyIG49ZS11O3JldHVybiB1PT09b3x8bj49dHx8bjwwfHxwJiZlLWY+PWx9ZnVuY3Rpb24gQygpe3ZhciBlPXhhKCk7aWYoZyhlKSlyZXR1cm4gbShlKTtjPVNpKEMsZnVuY3Rpb24oZSl7dmFyIG49dC0oZS11KTtyZXR1cm4gcD9nbihuLGwtKGUtZikpOm59KGUpKX1mdW5jdGlvbiBtKGUpe3JldHVybiBjPW8saCYmcj92KGUpOihyPWE9byxzKX1mdW5jdGlvbiB5KCl7dmFyIGU9eGEoKSxuPWcoZSk7aWYocj1hcmd1bWVudHMsYT10aGlzLHU9ZSxuKXtpZihjPT09bylyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGY9ZSxjPVNpKEMsdCksZD92KGUpOnN9KHUpO2lmKHApcmV0dXJuIHlvKGMpLGM9U2koQyx0KSx2KHUpfXJldHVybiBjPT09byYmKGM9U2koQyx0KSksc31yZXR1cm4gdD1kbCh0KXx8MCxLYShuKSYmKGQ9ISFuLmxlYWRpbmcsbD0ocD1cIm1heFdhaXRcImluIG4pP3ZuKGRsKG4ubWF4V2FpdCl8fDAsdCk6bCxoPVwidHJhaWxpbmdcImluIG4/ISFuLnRyYWlsaW5nOmgpLHkuY2FuY2VsPWZ1bmN0aW9uKCl7YyE9PW8mJnlvKGMpLGY9MCxyPXU9YT1jPW99LHkuZmx1c2g9ZnVuY3Rpb24oKXtyZXR1cm4gYz09PW8/czptKHhhKCkpfSx5fXZhciBNYT16cigoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbHIoZSwxLHQpfSkpLGphPXpyKChmdW5jdGlvbihlLHQsbil7cmV0dXJuIGxyKGUsZGwodCl8fDAsbil9KSk7ZnVuY3Rpb24ga2EoZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlfHxudWxsIT10JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IG5ldyBTZShpKTt2YXIgbj1mdW5jdGlvbigpe3ZhciByPWFyZ3VtZW50cyxvPXQ/dC5hcHBseSh0aGlzLHIpOnJbMF0saT1uLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgYT1lLmFwcGx5KHRoaXMscik7cmV0dXJuIG4uY2FjaGU9aS5zZXQobyxhKXx8aSxhfTtyZXR1cm4gbi5jYWNoZT1uZXcoa2EuQ2FjaGV8fFVuKSxufWZ1bmN0aW9uIFJhKGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFNlKGkpO3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cztzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4hZS5jYWxsKHRoaXMpO2Nhc2UgMTpyZXR1cm4hZS5jYWxsKHRoaXMsdFswXSk7Y2FzZSAyOnJldHVybiFlLmNhbGwodGhpcyx0WzBdLHRbMV0pO2Nhc2UgMzpyZXR1cm4hZS5jYWxsKHRoaXMsdFswXSx0WzFdLHRbMl0pfXJldHVybiFlLmFwcGx5KHRoaXMsdCl9fWthLkNhY2hlPVVuO3ZhciBQYT1DbygoZnVuY3Rpb24oZSx0KXt2YXIgbj0odD0xPT10Lmxlbmd0aCYmWmEodFswXSk/UnQodFswXSxZdChpaSgpKSk6UnQoaHIodCwxKSxZdChpaSgpKSkpLmxlbmd0aDtyZXR1cm4genIoKGZ1bmN0aW9uKHIpe2Zvcih2YXIgbz0tMSxpPWduKHIubGVuZ3RoLG4pOysrbzxpOylyW29dPXRbb10uY2FsbCh0aGlzLHJbb10pO3JldHVybiBfdChlLHRoaXMscil9KSl9KSksQWE9enIoKGZ1bmN0aW9uKGUsdCl7dmFyIG49bG4odCxvaShBYSkpO3JldHVybiBxbyhlLHMsbyx0LG4pfSkpLElhPXpyKChmdW5jdGlvbihlLHQpe3ZhciBuPWxuKHQsb2koSWEpKTtyZXR1cm4gcW8oZSw2NCxvLHQsbil9KSksVGE9UW8oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHFvKGUsMjU2LG8sbyxvLHQpfSkpO2Z1bmN0aW9uIEhhKGUsdCl7cmV0dXJuIGU9PT10fHxlIT1lJiZ0IT10fXZhciBWYT1ObyhfciksQmE9Tm8oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU+PXR9KSksRGE9TXIoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKT9NcjpmdW5jdGlvbihlKXtyZXR1cm4gWGEoZSkmJkFlLmNhbGwoZSxcImNhbGxlZVwiKSYmIXplLmNhbGwoZSxcImNhbGxlZVwiKX0sWmE9ci5pc0FycmF5LCRhPUN0P1l0KEN0KTpmdW5jdGlvbihlKXtyZXR1cm4gWGEoZSkmJnhyKGUpPT1SfTtmdW5jdGlvbiBGYShlKXtyZXR1cm4gbnVsbCE9ZSYmWWEoZS5sZW5ndGgpJiYhR2EoZSl9ZnVuY3Rpb24gTmEoZSl7cmV0dXJuIFhhKGUpJiZGYShlKX12YXIgVWE9Z3R8fGRzLFdhPW10P1l0KG10KTpmdW5jdGlvbihlKXtyZXR1cm4gWGEoZSkmJnhyKGUpPT1tfTtmdW5jdGlvbiB6YShlKXtpZighWGEoZSkpcmV0dXJuITE7dmFyIHQ9eHIoZSk7cmV0dXJuIHQ9PXl8fFwiW29iamVjdCBET01FeGNlcHRpb25dXCI9PXR8fFwic3RyaW5nXCI9PXR5cGVvZiBlLm1lc3NhZ2UmJlwic3RyaW5nXCI9PXR5cGVvZiBlLm5hbWUmJiFlbChlKX1mdW5jdGlvbiBHYShlKXtpZighS2EoZSkpcmV0dXJuITE7dmFyIHQ9eHIoZSk7cmV0dXJuIHQ9PXd8fHQ9PWJ8fFwiW29iamVjdCBBc3luY0Z1bmN0aW9uXVwiPT10fHxcIltvYmplY3QgUHJveHldXCI9PXR9ZnVuY3Rpb24gcWEoZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJmU9PXVsKGUpfWZ1bmN0aW9uIFlhKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlJiZlPi0xJiZlJTE9PTAmJmU8PWZ9ZnVuY3Rpb24gS2EoZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuIG51bGwhPWUmJihcIm9iamVjdFwiPT10fHxcImZ1bmN0aW9uXCI9PXQpfWZ1bmN0aW9uIFhhKGUpe3JldHVybiBudWxsIT1lJiZcIm9iamVjdFwiPT10eXBlb2YgZX12YXIgSmE9eXQ/WXQoeXQpOmZ1bmN0aW9uKGUpe3JldHVybiBYYShlKSYmZmkoZSk9PXh9O2Z1bmN0aW9uIFFhKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlfHxYYShlKSYmeHIoZSk9PV99ZnVuY3Rpb24gZWwoZSl7aWYoIVhhKGUpfHx4cihlKSE9TClyZXR1cm4hMTt2YXIgdD1VZShlKTtpZihudWxsPT09dClyZXR1cm4hMDt2YXIgbj1BZS5jYWxsKHQsXCJjb25zdHJ1Y3RvclwiKSYmdC5jb25zdHJ1Y3RvcjtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBuJiZuIGluc3RhbmNlb2YgbiYmUGUuY2FsbChuKT09VmV9dmFyIHRsPXd0P1l0KHd0KTpmdW5jdGlvbihlKXtyZXR1cm4gWGEoZSkmJnhyKGUpPT1FfSxubD1idD9ZdChidCk6ZnVuY3Rpb24oZSl7cmV0dXJuIFhhKGUpJiZmaShlKT09U307ZnVuY3Rpb24gcmwoZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV8fCFaYShlKSYmWGEoZSkmJnhyKGUpPT1NfWZ1bmN0aW9uIG9sKGUpe3JldHVyblwic3ltYm9sXCI9PXR5cGVvZiBlfHxYYShlKSYmeHIoZSk9PWp9dmFyIGlsPXh0P1l0KHh0KTpmdW5jdGlvbihlKXtyZXR1cm4gWGEoZSkmJllhKGUubGVuZ3RoKSYmISFvdFt4cihlKV19LGFsPU5vKElyKSxsbD1ObygoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZTw9dH0pKTtmdW5jdGlvbiBzbChlKXtpZighZSlyZXR1cm5bXTtpZihGYShlKSlyZXR1cm4gcmwoZSk/dW4oZSk6RW8oZSk7aWYoWWUmJmVbWWVdKXJldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQsbj1bXTshKHQ9ZS5uZXh0KCkpLmRvbmU7KW4ucHVzaCh0LnZhbHVlKTtyZXR1cm4gbn0oZVtZZV0oKSk7dmFyIHQ9ZmkoZSk7cmV0dXJuKHQ9PXg/b246dD09Uz9zbjpIbCkoZSl9ZnVuY3Rpb24gY2woZSl7cmV0dXJuIGU/KGU9ZGwoZSkpPT09dXx8ZT09PS0xLzA/MTc5NzY5MzEzNDg2MjMxNTdlMjkyKihlPDA/LTE6MSk6ZT09ZT9lOjA6MD09PWU/ZTowfWZ1bmN0aW9uIHVsKGUpe3ZhciB0PWNsKGUpLG49dCUxO3JldHVybiB0PT10P24/dC1uOnQ6MH1mdW5jdGlvbiBmbChlKXtyZXR1cm4gZT9vcih1bChlKSwwLHApOjB9ZnVuY3Rpb24gZGwoZSl7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYob2woZSkpcmV0dXJuIGQ7aWYoS2EoZSkpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIGUudmFsdWVPZj9lLnZhbHVlT2YoKTplO2U9S2EodCk/dCtcIlwiOnR9aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpcmV0dXJuIDA9PT1lP2U6K2U7ZT1xdChlKTt2YXIgbj1oZS50ZXN0KGUpO3JldHVybiBufHxnZS50ZXN0KGUpP3N0KGUuc2xpY2UoMiksbj8yOjgpOnBlLnRlc3QoZSk/ZDorZX1mdW5jdGlvbiBwbChlKXtyZXR1cm4gU28oZSxNbChlKSl9ZnVuY3Rpb24gaGwoZSl7cmV0dXJuIG51bGw9PWU/XCJcIjppbyhlKX12YXIgdmw9am8oKGZ1bmN0aW9uKGUsdCl7aWYod2kodCl8fEZhKHQpKVNvKHQsU2wodCksZSk7ZWxzZSBmb3IodmFyIG4gaW4gdClBZS5jYWxsKHQsbikmJkpuKGUsbix0W25dKX0pKSxnbD1qbygoZnVuY3Rpb24oZSx0KXtTbyh0LE1sKHQpLGUpfSkpLENsPWpvKChmdW5jdGlvbihlLHQsbixyKXtTbyh0LE1sKHQpLGUscil9KSksbWw9am8oKGZ1bmN0aW9uKGUsdCxuLHIpe1NvKHQsU2wodCksZSxyKX0pKSx5bD1Rbyhyciksd2w9enIoKGZ1bmN0aW9uKGUsdCl7ZT1MZShlKTt2YXIgbj0tMSxyPXQubGVuZ3RoLGk9cj4yP3RbMl06bztmb3IoaSYmZ2kodFswXSx0WzFdLGkpJiYocj0xKTsrK248cjspZm9yKHZhciBhPXRbbl0sbD1NbChhKSxzPS0xLGM9bC5sZW5ndGg7KytzPGM7KXt2YXIgdT1sW3NdLGY9ZVt1XTsoZj09PW98fEhhKGYsa2VbdV0pJiYhQWUuY2FsbChlLHUpKSYmKGVbdV09YVt1XSl9cmV0dXJuIGV9KSksYmw9enIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnB1c2gobyxLbyksX3Qoa2wsbyxlKX0pKTtmdW5jdGlvbiB4bChlLHQsbil7dmFyIHI9bnVsbD09ZT9vOndyKGUsdCk7cmV0dXJuIHI9PT1vP246cn1mdW5jdGlvbiBfbChlLHQpe3JldHVybiBudWxsIT1lJiZkaShlLHQsT3IpfXZhciBMbD1CbygoZnVuY3Rpb24oZSx0LG4pe251bGwhPXQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHQudG9TdHJpbmcmJih0PUhlLmNhbGwodCkpLGVbdF09bn0pLEtsKFFsKSksT2w9Qm8oKGZ1bmN0aW9uKGUsdCxuKXtudWxsIT10JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0LnRvU3RyaW5nJiYodD1IZS5jYWxsKHQpKSxBZS5jYWxsKGUsdCk/ZVt0XS5wdXNoKG4pOmVbdF09W25dfSksaWkpLEVsPXpyKFNyKTtmdW5jdGlvbiBTbChlKXtyZXR1cm4gRmEoZSk/R24oZSk6QXIoZSl9ZnVuY3Rpb24gTWwoZSl7cmV0dXJuIEZhKGUpP0duKGUsITApOmZ1bmN0aW9uKGUpe2lmKCFLYShlKSlyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9W107aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gTGUoZSkpdC5wdXNoKG4pO3JldHVybiB0fShlKTt2YXIgdD13aShlKSxuPVtdO2Zvcih2YXIgciBpbiBlKShcImNvbnN0cnVjdG9yXCIhPXJ8fCF0JiZBZS5jYWxsKGUscikpJiZuLnB1c2gocik7cmV0dXJuIG59KGUpfXZhciBqbD1qbygoZnVuY3Rpb24oZSx0LG4pe0JyKGUsdCxuKX0pKSxrbD1qbygoZnVuY3Rpb24oZSx0LG4scil7QnIoZSx0LG4scil9KSksUmw9UW8oKGZ1bmN0aW9uKGUsdCl7dmFyIG49e307aWYobnVsbD09ZSlyZXR1cm4gbjt2YXIgcj0hMTt0PVJ0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiB0PWdvKHQsZSkscnx8KHI9dC5sZW5ndGg+MSksdH0pKSxTbyhlLHRpKGUpLG4pLHImJihuPWlyKG4sNyxYbykpO2Zvcih2YXIgbz10Lmxlbmd0aDtvLS07KWxvKG4sdFtvXSk7cmV0dXJuIG59KSksUGw9UW8oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/e306ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJHIoZSx0LChmdW5jdGlvbih0LG4pe3JldHVybiBfbChlLG4pfSkpfShlLHQpfSkpO2Z1bmN0aW9uIEFsKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbj1SdCh0aShlKSwoZnVuY3Rpb24oZSl7cmV0dXJuW2VdfSkpO3JldHVybiB0PWlpKHQpLCRyKGUsbiwoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG5bMF0pfSkpfXZhciBJbD1HbyhTbCksVGw9R28oTWwpO2Z1bmN0aW9uIEhsKGUpe3JldHVybiBudWxsPT1lP1tdOkt0KGUsU2woZSkpfXZhciBWbD1BbygoZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PXQudG9Mb3dlckNhc2UoKSxlKyhuP0JsKHQpOnQpfSkpO2Z1bmN0aW9uIEJsKGUpe3JldHVybiB6bChobChlKS50b0xvd2VyQ2FzZSgpKX1mdW5jdGlvbiBEbChlKXtyZXR1cm4oZT1obChlKSkmJmUucmVwbGFjZShtZSxlbikucmVwbGFjZShYZSxcIlwiKX12YXIgWmw9QW8oKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSsobj9cIi1cIjpcIlwiKSt0LnRvTG93ZXJDYXNlKCl9KSksJGw9QW8oKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSsobj9cIiBcIjpcIlwiKSt0LnRvTG93ZXJDYXNlKCl9KSksRmw9UG8oXCJ0b0xvd2VyQ2FzZVwiKSxObD1BbygoZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlKyhuP1wiX1wiOlwiXCIpK3QudG9Mb3dlckNhc2UoKX0pKSxVbD1BbygoZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlKyhuP1wiIFwiOlwiXCIpK3psKHQpfSkpLFdsPUFvKChmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUrKG4/XCIgXCI6XCJcIikrdC50b1VwcGVyQ2FzZSgpfSkpLHpsPVBvKFwidG9VcHBlckNhc2VcIik7ZnVuY3Rpb24gR2woZSx0LG4pe3JldHVybiBlPWhsKGUpLCh0PW4/bzp0KT09PW8/ZnVuY3Rpb24oZSl7cmV0dXJuIHR0LnRlc3QoZSl9KGUpP2Z1bmN0aW9uKGUpe3JldHVybiBlLm1hdGNoKFFlKXx8W119KGUpOmZ1bmN0aW9uKGUpe3JldHVybiBlLm1hdGNoKHNlKXx8W119KGUpOmUubWF0Y2godCl8fFtdfXZhciBxbD16cigoZnVuY3Rpb24oZSx0KXt0cnl7cmV0dXJuIF90KGUsbyx0KX1jYXRjaChlKXtyZXR1cm4gemEoZSk/ZTpuZXcgYmUoZSl9fSkpLFlsPVFvKChmdW5jdGlvbihlLHQpe3JldHVybiBPdCh0LChmdW5jdGlvbih0KXt0PUFpKHQpLG5yKGUsdCxPYShlW3RdLGUpKX0pKSxlfSkpO2Z1bmN0aW9uIEtsKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX12YXIgWGw9SG8oKSxKbD1IbyghMCk7ZnVuY3Rpb24gUWwoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gZXMoZSl7cmV0dXJuIFByKFwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZTppcihlLDEpKX12YXIgdHM9enIoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBTcihuLGUsdCl9fSkpLG5zPXpyKChmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gU3IoZSxuLHQpfX0pKTtmdW5jdGlvbiBycyhlLHQsbil7dmFyIHI9U2wodCksbz15cih0LHIpO251bGwhPW58fEthKHQpJiYoby5sZW5ndGh8fCFyLmxlbmd0aCl8fChuPXQsdD1lLGU9dGhpcyxvPXlyKHQsU2wodCkpKTt2YXIgaT0hKEthKG4pJiZcImNoYWluXCJpbiBuJiYhbi5jaGFpbiksYT1HYShlKTtyZXR1cm4gT3QobywoZnVuY3Rpb24obil7dmFyIHI9dFtuXTtlW25dPXIsYSYmKGUucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fX2NoYWluX187aWYoaXx8dCl7dmFyIG49ZSh0aGlzLl9fd3JhcHBlZF9fKTtyZXR1cm4obi5fX2FjdGlvbnNfXz1Fbyh0aGlzLl9fYWN0aW9uc19fKSkucHVzaCh7ZnVuYzpyLGFyZ3M6YXJndW1lbnRzLHRoaXNBcmc6ZX0pLG4uX19jaGFpbl9fPXQsbn1yZXR1cm4gci5hcHBseShlLFB0KFt0aGlzLnZhbHVlKCldLGFyZ3VtZW50cykpfSl9KSksZX1mdW5jdGlvbiBvcygpe312YXIgaXM9Wm8oUnQpLGFzPVpvKFN0KSxscz1abyhUdCk7ZnVuY3Rpb24gc3MoZSl7cmV0dXJuIENpKGUpP050KEFpKGUpKTpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHdyKHQsZSl9fShlKX12YXIgY3M9Rm8oKSx1cz1GbyghMCk7ZnVuY3Rpb24gZnMoKXtyZXR1cm5bXX1mdW5jdGlvbiBkcygpe3JldHVybiExfXZhciBwcyxocz1EbygoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0fSksMCksdnM9V28oXCJjZWlsXCIpLGdzPURvKChmdW5jdGlvbihlLHQpe3JldHVybiBlL3R9KSwxKSxDcz1XbyhcImZsb29yXCIpLG1zPURvKChmdW5jdGlvbihlLHQpe3JldHVybiBlKnR9KSwxKSx5cz1XbyhcInJvdW5kXCIpLHdzPURvKChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSwwKTtyZXR1cm4gVm4uYWZ0ZXI9ZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IG5ldyBTZShpKTtyZXR1cm4gZT11bChlKSxmdW5jdGlvbigpe2lmKC0tZTwxKXJldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LFZuLmFyeT1fYSxWbi5hc3NpZ249dmwsVm4uYXNzaWduSW49Z2wsVm4uYXNzaWduSW5XaXRoPUNsLFZuLmFzc2lnbldpdGg9bWwsVm4uYXQ9eWwsVm4uYmVmb3JlPUxhLFZuLmJpbmQ9T2EsVm4uYmluZEFsbD1ZbCxWbi5iaW5kS2V5PUVhLFZuLmNhc3RBcnJheT1mdW5jdGlvbigpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltdO3ZhciBlPWFyZ3VtZW50c1swXTtyZXR1cm4gWmEoZSk/ZTpbZV19LFZuLmNoYWluPXNhLFZuLmNodW5rPWZ1bmN0aW9uKGUsdCxuKXt0PShuP2dpKGUsdCxuKTp0PT09byk/MTp2bih1bCh0KSwwKTt2YXIgaT1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIWl8fHQ8MSlyZXR1cm5bXTtmb3IodmFyIGE9MCxsPTAscz1yKGR0KGkvdCkpO2E8aTspc1tsKytdPVFyKGUsYSxhKz10KTtyZXR1cm4gc30sVm4uY29tcGFjdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9LTEsbj1udWxsPT1lPzA6ZS5sZW5ndGgscj0wLG89W107Kyt0PG47KXt2YXIgaT1lW3RdO2kmJihvW3IrK109aSl9cmV0dXJuIG99LFZuLmNvbmNhdD1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg7aWYoIWUpcmV0dXJuW107Zm9yKHZhciB0PXIoZS0xKSxuPWFyZ3VtZW50c1swXSxvPWU7by0tOyl0W28tMV09YXJndW1lbnRzW29dO3JldHVybiBQdChaYShuKT9FbyhuKTpbbl0saHIodCwxKSl9LFZuLmNvbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbD09ZT8wOmUubGVuZ3RoLG49aWkoKTtyZXR1cm4gZT10P1J0KGUsKGZ1bmN0aW9uKGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGVbMV0pdGhyb3cgbmV3IFNlKGkpO3JldHVybltuKGVbMF0pLGVbMV1dfSkpOltdLHpyKChmdW5jdGlvbihuKXtmb3IodmFyIHI9LTE7KytyPHQ7KXt2YXIgbz1lW3JdO2lmKF90KG9bMF0sdGhpcyxuKSlyZXR1cm4gX3Qob1sxXSx0aGlzLG4pfX0pKX0sVm4uY29uZm9ybXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PVNsKGUpO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gYXIobixlLHQpfX0oaXIoZSwxKSl9LFZuLmNvbnN0YW50PUtsLFZuLmNvdW50Qnk9ZmEsVm4uY3JlYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49Qm4oZSk7cmV0dXJuIG51bGw9PXQ/bjp0cihuLHQpfSxWbi5jdXJyeT1mdW5jdGlvbiBlKHQsbixyKXt2YXIgaT1xbyh0LDgsbyxvLG8sbyxvLG49cj9vOm4pO3JldHVybiBpLnBsYWNlaG9sZGVyPWUucGxhY2Vob2xkZXIsaX0sVm4uY3VycnlSaWdodD1mdW5jdGlvbiBlKHQsbixyKXt2YXIgaT1xbyh0LDE2LG8sbyxvLG8sbyxuPXI/bzpuKTtyZXR1cm4gaS5wbGFjZWhvbGRlcj1lLnBsYWNlaG9sZGVyLGl9LFZuLmRlYm91bmNlPVNhLFZuLmRlZmF1bHRzPXdsLFZuLmRlZmF1bHRzRGVlcD1ibCxWbi5kZWZlcj1NYSxWbi5kZWxheT1qYSxWbi5kaWZmZXJlbmNlPUhpLFZuLmRpZmZlcmVuY2VCeT1WaSxWbi5kaWZmZXJlbmNlV2l0aD1CaSxWbi5kcm9wPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHI/UXIoZSwodD1ufHx0PT09bz8xOnVsKHQpKTwwPzA6dCxyKTpbXX0sVm4uZHJvcFJpZ2h0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHI/UXIoZSwwLCh0PXItKHQ9bnx8dD09PW8/MTp1bCh0KSkpPDA/MDp0KTpbXX0sVm4uZHJvcFJpZ2h0V2hpbGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/Y28oZSxpaSh0LDMpLCEwLCEwKTpbXX0sVm4uZHJvcFdoaWxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmUubGVuZ3RoP2NvKGUsaWkodCwzKSwhMCk6W119LFZuLmZpbGw9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiBpPyhuJiZcIm51bWJlclwiIT10eXBlb2YgbiYmZ2koZSx0LG4pJiYobj0wLHI9aSksZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ZS5sZW5ndGg7Zm9yKChuPXVsKG4pKTwwJiYobj0tbj5pPzA6aStuKSwocj1yPT09b3x8cj5pP2k6dWwocikpPDAmJihyKz1pKSxyPW4+cj8wOmZsKHIpO248cjspZVtuKytdPXQ7cmV0dXJuIGV9KGUsdCxuLHIpKTpbXX0sVm4uZmlsdGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKFphKGUpP010OnByKShlLGlpKHQsMykpfSxWbi5mbGF0TWFwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGhyKHlhKGUsdCksMSl9LFZuLmZsYXRNYXBEZWVwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGhyKHlhKGUsdCksdSl9LFZuLmZsYXRNYXBEZXB0aD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG49bj09PW8/MTp1bChuKSxocih5YShlLHQpLG4pfSxWbi5mbGF0dGVuPSRpLFZuLmZsYXR0ZW5EZWVwPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZlLmxlbmd0aD9ocihlLHUpOltdfSxWbi5mbGF0dGVuRGVwdGg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9ZSYmZS5sZW5ndGg/aHIoZSx0PXQ9PT1vPzE6dWwodCkpOltdfSxWbi5mbGlwPWZ1bmN0aW9uKGUpe3JldHVybiBxbyhlLDUxMil9LFZuLmZsb3c9WGwsVm4uZmxvd1JpZ2h0PUpsLFZuLmZyb21QYWlycz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9LTEsbj1udWxsPT1lPzA6ZS5sZW5ndGgscj17fTsrK3Q8bjspe3ZhciBvPWVbdF07cltvWzBdXT1vWzFdfXJldHVybiByfSxWbi5mdW5jdGlvbnM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/W106eXIoZSxTbChlKSl9LFZuLmZ1bmN0aW9uc0luPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP1tdOnlyKGUsTWwoZSkpfSxWbi5ncm91cEJ5PWdhLFZuLmluaXRpYWw9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJmUubGVuZ3RoP1FyKGUsMCwtMSk6W119LFZuLmludGVyc2VjdGlvbj1OaSxWbi5pbnRlcnNlY3Rpb25CeT1VaSxWbi5pbnRlcnNlY3Rpb25XaXRoPVdpLFZuLmludmVydD1MbCxWbi5pbnZlcnRCeT1PbCxWbi5pbnZva2VNYXA9Q2EsVm4uaXRlcmF0ZWU9ZXMsVm4ua2V5Qnk9bWEsVm4ua2V5cz1TbCxWbi5rZXlzSW49TWwsVm4ubWFwPXlhLFZuLm1hcEtleXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtyZXR1cm4gdD1paSh0LDMpLENyKGUsKGZ1bmN0aW9uKGUscixvKXtucihuLHQoZSxyLG8pLGUpfSkpLG59LFZuLm1hcFZhbHVlcz1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O3JldHVybiB0PWlpKHQsMyksQ3IoZSwoZnVuY3Rpb24oZSxyLG8pe25yKG4scix0KGUscixvKSl9KSksbn0sVm4ubWF0Y2hlcz1mdW5jdGlvbihlKXtyZXR1cm4gSHIoaXIoZSwxKSl9LFZuLm1hdGNoZXNQcm9wZXJ0eT1mdW5jdGlvbihlLHQpe3JldHVybiBWcihlLGlyKHQsMSkpfSxWbi5tZW1vaXplPWthLFZuLm1lcmdlPWpsLFZuLm1lcmdlV2l0aD1rbCxWbi5tZXRob2Q9dHMsVm4ubWV0aG9kT2Y9bnMsVm4ubWl4aW49cnMsVm4ubmVnYXRlPVJhLFZuLm50aEFyZz1mdW5jdGlvbihlKXtyZXR1cm4gZT11bChlKSx6cigoZnVuY3Rpb24odCl7cmV0dXJuIERyKHQsZSl9KSl9LFZuLm9taXQ9UmwsVm4ub21pdEJ5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEFsKGUsUmEoaWkodCkpKX0sVm4ub25jZT1mdW5jdGlvbihlKXtyZXR1cm4gTGEoMixlKX0sVm4ub3JkZXJCeT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbnVsbD09ZT9bXTooWmEodCl8fCh0PW51bGw9PXQ/W106W3RdKSxaYShuPXI/bzpuKXx8KG49bnVsbD09bj9bXTpbbl0pLFpyKGUsdCxuKSl9LFZuLm92ZXI9aXMsVm4ub3ZlckFyZ3M9UGEsVm4ub3ZlckV2ZXJ5PWFzLFZuLm92ZXJTb21lPWxzLFZuLnBhcnRpYWw9QWEsVm4ucGFydGlhbFJpZ2h0PUlhLFZuLnBhcnRpdGlvbj13YSxWbi5waWNrPVBsLFZuLnBpY2tCeT1BbCxWbi5wcm9wZXJ0eT1zcyxWbi5wcm9wZXJ0eU9mPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09ZT9vOndyKGUsdCl9fSxWbi5wdWxsPUdpLFZuLnB1bGxBbGw9cWksVm4ucHVsbEFsbEJ5PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSYmZS5sZW5ndGgmJnQmJnQubGVuZ3RoP0ZyKGUsdCxpaShuLDIpKTplfSxWbi5wdWxsQWxsV2l0aD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGUmJmUubGVuZ3RoJiZ0JiZ0Lmxlbmd0aD9GcihlLHQsbyxuKTplfSxWbi5wdWxsQXQ9WWksVm4ucmFuZ2U9Y3MsVm4ucmFuZ2VSaWdodD11cyxWbi5yZWFyZz1UYSxWbi5yZWplY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oWmEoZSk/TXQ6cHIpKGUsUmEoaWkodCwzKSkpfSxWbi5yZW1vdmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXTtpZighZXx8IWUubGVuZ3RoKXJldHVybiBuO3ZhciByPS0xLG89W10saT1lLmxlbmd0aDtmb3IodD1paSh0LDMpOysrcjxpOyl7dmFyIGE9ZVtyXTt0KGEscixlKSYmKG4ucHVzaChhKSxvLnB1c2gocikpfXJldHVybiBOcihlLG8pLG59LFZuLnJlc3Q9ZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBTZShpKTtyZXR1cm4genIoZSx0PXQ9PT1vP3Q6dWwodCkpfSxWbi5yZXZlcnNlPUtpLFZuLnNhbXBsZVNpemU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PShuP2dpKGUsdCxuKTp0PT09byk/MTp1bCh0KSwoWmEoZSk/WW46cXIpKGUsdCl9LFZuLnNldD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PWU/ZTpZcihlLHQsbil9LFZuLnNldFdpdGg9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHI9XCJmdW5jdGlvblwiPT10eXBlb2Ygcj9yOm8sbnVsbD09ZT9lOllyKGUsdCxuLHIpfSxWbi5zaHVmZmxlPWZ1bmN0aW9uKGUpe3JldHVybihaYShlKT9LbjpKcikoZSl9LFZuLnNsaWNlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHI/KG4mJlwibnVtYmVyXCIhPXR5cGVvZiBuJiZnaShlLHQsbik/KHQ9MCxuPXIpOih0PW51bGw9PXQ/MDp1bCh0KSxuPW49PT1vP3I6dWwobikpLFFyKGUsdCxuKSk6W119LFZuLnNvcnRCeT1iYSxWbi5zb3J0ZWRVbmlxPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLmxlbmd0aD9ybyhlKTpbXX0sVm4uc29ydGVkVW5pcUJ5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmUubGVuZ3RoP3JvKGUsaWkodCwyKSk6W119LFZuLnNwbGl0PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbiYmXCJudW1iZXJcIiE9dHlwZW9mIG4mJmdpKGUsdCxuKSYmKHQ9bj1vKSwobj1uPT09bz9wOm4+Pj4wKT8oZT1obChlKSkmJihcInN0cmluZ1wiPT10eXBlb2YgdHx8bnVsbCE9dCYmIXRsKHQpKSYmISh0PWlvKHQpKSYmcm4oZSk/bW8odW4oZSksMCxuKTplLnNwbGl0KHQsbik6W119LFZuLnNwcmVhZD1mdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFNlKGkpO3JldHVybiB0PW51bGw9PXQ/MDp2bih1bCh0KSwwKSx6cigoZnVuY3Rpb24obil7dmFyIHI9blt0XSxvPW1vKG4sMCx0KTtyZXR1cm4gciYmUHQobyxyKSxfdChlLHRoaXMsbyl9KSl9LFZuLnRhaWw9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiB0P1FyKGUsMSx0KTpbXX0sVm4udGFrZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGUmJmUubGVuZ3RoP1FyKGUsMCwodD1ufHx0PT09bz8xOnVsKHQpKTwwPzA6dCk6W119LFZuLnRha2VSaWdodD1mdW5jdGlvbihlLHQsbil7dmFyIHI9bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiByP1FyKGUsKHQ9ci0odD1ufHx0PT09bz8xOnVsKHQpKSk8MD8wOnQscik6W119LFZuLnRha2VSaWdodFdoaWxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmUubGVuZ3RoP2NvKGUsaWkodCwzKSwhMSwhMCk6W119LFZuLnRha2VXaGlsZT1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD9jbyhlLGlpKHQsMykpOltdfSxWbi50YXA9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdChlKSxlfSxWbi50aHJvdHRsZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ITAsbz0hMDtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBTZShpKTtyZXR1cm4gS2EobikmJihyPVwibGVhZGluZ1wiaW4gbj8hIW4ubGVhZGluZzpyLG89XCJ0cmFpbGluZ1wiaW4gbj8hIW4udHJhaWxpbmc6byksU2EoZSx0LHtsZWFkaW5nOnIsbWF4V2FpdDp0LHRyYWlsaW5nOm99KX0sVm4udGhydT1jYSxWbi50b0FycmF5PXNsLFZuLnRvUGFpcnM9SWwsVm4udG9QYWlyc0luPVRsLFZuLnRvUGF0aD1mdW5jdGlvbihlKXtyZXR1cm4gWmEoZSk/UnQoZSxBaSk6b2woZSk/W2VdOkVvKFBpKGhsKGUpKSl9LFZuLnRvUGxhaW5PYmplY3Q9cGwsVm4udHJhbnNmb3JtPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1aYShlKSxvPXJ8fFVhKGUpfHxpbChlKTtpZih0PWlpKHQsNCksbnVsbD09bil7dmFyIGk9ZSYmZS5jb25zdHJ1Y3RvcjtuPW8/cj9uZXcgaTpbXTpLYShlKSYmR2EoaSk/Qm4oVWUoZSkpOnt9fXJldHVybihvP090OkNyKShlLChmdW5jdGlvbihlLHIsbyl7cmV0dXJuIHQobixlLHIsbyl9KSksbn0sVm4udW5hcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIF9hKGUsMSl9LFZuLnVuaW9uPVhpLFZuLnVuaW9uQnk9SmksVm4udW5pb25XaXRoPVFpLFZuLnVuaXE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUubGVuZ3RoP2FvKGUpOltdfSxWbi51bmlxQnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/YW8oZSxpaSh0LDIpKTpbXX0sVm4udW5pcVdpdGg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3Q6byxlJiZlLmxlbmd0aD9hbyhlLG8sdCk6W119LFZuLnVuc2V0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWV8fGxvKGUsdCl9LFZuLnVuemlwPWVhLFZuLnVuemlwV2l0aD10YSxWbi51cGRhdGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsPT1lP2U6c28oZSx0LHZvKG4pKX0sVm4udXBkYXRlV2l0aD1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gcj1cImZ1bmN0aW9uXCI9PXR5cGVvZiByP3I6byxudWxsPT1lP2U6c28oZSx0LHZvKG4pLHIpfSxWbi52YWx1ZXM9SGwsVm4udmFsdWVzSW49ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/W106S3QoZSxNbChlKSl9LFZuLndpdGhvdXQ9bmEsVm4ud29yZHM9R2wsVm4ud3JhcD1mdW5jdGlvbihlLHQpe3JldHVybiBBYSh2byh0KSxlKX0sVm4ueG9yPXJhLFZuLnhvckJ5PW9hLFZuLnhvcldpdGg9aWEsVm4uemlwPWFhLFZuLnppcE9iamVjdD1mdW5jdGlvbihlLHQpe3JldHVybiBwbyhlfHxbXSx0fHxbXSxKbil9LFZuLnppcE9iamVjdERlZXA9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcG8oZXx8W10sdHx8W10sWXIpfSxWbi56aXBXaXRoPWxhLFZuLmVudHJpZXM9SWwsVm4uZW50cmllc0luPVRsLFZuLmV4dGVuZD1nbCxWbi5leHRlbmRXaXRoPUNsLHJzKFZuLFZuKSxWbi5hZGQ9aHMsVm4uYXR0ZW1wdD1xbCxWbi5jYW1lbENhc2U9VmwsVm4uY2FwaXRhbGl6ZT1CbCxWbi5jZWlsPXZzLFZuLmNsYW1wPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj09PW8mJihuPXQsdD1vKSxuIT09byYmKG49KG49ZGwobikpPT1uP246MCksdCE9PW8mJih0PSh0PWRsKHQpKT09dD90OjApLG9yKGRsKGUpLHQsbil9LFZuLmNsb25lPWZ1bmN0aW9uKGUpe3JldHVybiBpcihlLDQpfSxWbi5jbG9uZURlZXA9ZnVuY3Rpb24oZSl7cmV0dXJuIGlyKGUsNSl9LFZuLmNsb25lRGVlcFdpdGg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaXIoZSw1LHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgdD90Om8pfSxWbi5jbG9uZVdpdGg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaXIoZSw0LHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgdD90Om8pfSxWbi5jb25mb3Jtc1RvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PXR8fGFyKGUsdCxTbCh0KSl9LFZuLmRlYnVycj1EbCxWbi5kZWZhdWx0VG89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZXx8ZSE9ZT90OmV9LFZuLmRpdmlkZT1ncyxWbi5lbmRzV2l0aD1mdW5jdGlvbihlLHQsbil7ZT1obChlKSx0PWlvKHQpO3ZhciByPWUubGVuZ3RoLGk9bj1uPT09bz9yOm9yKHVsKG4pLDAscik7cmV0dXJuKG4tPXQubGVuZ3RoKT49MCYmZS5zbGljZShuLGkpPT10fSxWbi5lcT1IYSxWbi5lc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9aGwoZSkpJiZxLnRlc3QoZSk/ZS5yZXBsYWNlKHosdG4pOmV9LFZuLmVzY2FwZVJlZ0V4cD1mdW5jdGlvbihlKXtyZXR1cm4oZT1obChlKSkmJm5lLnRlc3QoZSk/ZS5yZXBsYWNlKHRlLFwiXFxcXCQmXCIpOmV9LFZuLmV2ZXJ5PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1aYShlKT9TdDpmcjtyZXR1cm4gbiYmZ2koZSx0LG4pJiYodD1vKSxyKGUsaWkodCwzKSl9LFZuLmZpbmQ9ZGEsVm4uZmluZEluZGV4PURpLFZuLmZpbmRLZXk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVnQoZSxpaSh0LDMpLENyKX0sVm4uZmluZExhc3Q9cGEsVm4uZmluZExhc3RJbmRleD1aaSxWbi5maW5kTGFzdEtleT1mdW5jdGlvbihlLHQpe3JldHVybiBWdChlLGlpKHQsMyksbXIpfSxWbi5mbG9vcj1DcyxWbi5mb3JFYWNoPWhhLFZuLmZvckVhY2hSaWdodD12YSxWbi5mb3JJbj1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1lP2U6dnIoZSxpaSh0LDMpLE1sKX0sVm4uZm9ySW5SaWdodD1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1lP2U6Z3IoZSxpaSh0LDMpLE1sKX0sVm4uZm9yT3duPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJkNyKGUsaWkodCwzKSl9LFZuLmZvck93blJpZ2h0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJm1yKGUsaWkodCwzKSl9LFZuLmdldD14bCxWbi5ndD1WYSxWbi5ndGU9QmEsVm4uaGFzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGwhPWUmJmRpKGUsdCxMcil9LFZuLmhhc0luPV9sLFZuLmhlYWQ9RmksVm4uaWRlbnRpdHk9UWwsVm4uaW5jbHVkZXM9ZnVuY3Rpb24oZSx0LG4scil7ZT1GYShlKT9lOkhsKGUpLG49biYmIXI/dWwobik6MDt2YXIgbz1lLmxlbmd0aDtyZXR1cm4gbjwwJiYobj12bihvK24sMCkpLHJsKGUpP248PW8mJmUuaW5kZXhPZih0LG4pPi0xOiEhbyYmRHQoZSx0LG4pPi0xfSxWbi5pbmRleE9mPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIXIpcmV0dXJuLTE7dmFyIG89bnVsbD09bj8wOnVsKG4pO3JldHVybiBvPDAmJihvPXZuKHIrbywwKSksRHQoZSx0LG8pfSxWbi5pblJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD1jbCh0KSxuPT09bz8obj10LHQ9MCk6bj1jbChuKSxmdW5jdGlvbihlLHQsbil7cmV0dXJuIGU+PWduKHQsbikmJmU8dm4odCxuKX0oZT1kbChlKSx0LG4pfSxWbi5pbnZva2U9RWwsVm4uaXNBcmd1bWVudHM9RGEsVm4uaXNBcnJheT1aYSxWbi5pc0FycmF5QnVmZmVyPSRhLFZuLmlzQXJyYXlMaWtlPUZhLFZuLmlzQXJyYXlMaWtlT2JqZWN0PU5hLFZuLmlzQm9vbGVhbj1mdW5jdGlvbihlKXtyZXR1cm4hMD09PWV8fCExPT09ZXx8WGEoZSkmJnhyKGUpPT1DfSxWbi5pc0J1ZmZlcj1VYSxWbi5pc0RhdGU9V2EsVm4uaXNFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBYYShlKSYmMT09PWUubm9kZVR5cGUmJiFlbChlKX0sVm4uaXNFbXB0eT1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiEwO2lmKEZhKGUpJiYoWmEoZSl8fFwic3RyaW5nXCI9PXR5cGVvZiBlfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnNwbGljZXx8VWEoZSl8fGlsKGUpfHxEYShlKSkpcmV0dXJuIWUubGVuZ3RoO3ZhciB0PWZpKGUpO2lmKHQ9PXh8fHQ9PVMpcmV0dXJuIWUuc2l6ZTtpZih3aShlKSlyZXR1cm4hQXIoZSkubGVuZ3RoO2Zvcih2YXIgbiBpbiBlKWlmKEFlLmNhbGwoZSxuKSlyZXR1cm4hMTtyZXR1cm4hMH0sVm4uaXNFcXVhbD1mdW5jdGlvbihlLHQpe3JldHVybiBqcihlLHQpfSxWbi5pc0VxdWFsV2l0aD1mdW5jdGlvbihlLHQsbil7dmFyIHI9KG49XCJmdW5jdGlvblwiPT10eXBlb2Ygbj9uOm8pP24oZSx0KTpvO3JldHVybiByPT09bz9qcihlLHQsbyxuKTohIXJ9LFZuLmlzRXJyb3I9emEsVm4uaXNGaW5pdGU9ZnVuY3Rpb24oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJkh0KGUpfSxWbi5pc0Z1bmN0aW9uPUdhLFZuLmlzSW50ZWdlcj1xYSxWbi5pc0xlbmd0aD1ZYSxWbi5pc01hcD1KYSxWbi5pc01hdGNoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10fHxrcihlLHQsbGkodCkpfSxWbi5pc01hdGNoV2l0aD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG49XCJmdW5jdGlvblwiPT10eXBlb2Ygbj9uOm8sa3IoZSx0LGxpKHQpLG4pfSxWbi5pc05hTj1mdW5jdGlvbihlKXtyZXR1cm4gUWEoZSkmJmUhPStlfSxWbi5pc05hdGl2ZT1mdW5jdGlvbihlKXtpZih5aShlKSl0aHJvdyBuZXcgYmUoXCJVbnN1cHBvcnRlZCBjb3JlLWpzIHVzZS4gVHJ5IGh0dHBzOi8vbnBtcy5pby9zZWFyY2g/cT1wb255ZmlsbC5cIik7cmV0dXJuIFJyKGUpfSxWbi5pc05pbD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZX0sVm4uaXNOdWxsPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZX0sVm4uaXNOdW1iZXI9UWEsVm4uaXNPYmplY3Q9S2EsVm4uaXNPYmplY3RMaWtlPVhhLFZuLmlzUGxhaW5PYmplY3Q9ZWwsVm4uaXNSZWdFeHA9dGwsVm4uaXNTYWZlSW50ZWdlcj1mdW5jdGlvbihlKXtyZXR1cm4gcWEoZSkmJmU+PS05MDA3MTk5MjU0NzQwOTkxJiZlPD1mfSxWbi5pc1NldD1ubCxWbi5pc1N0cmluZz1ybCxWbi5pc1N5bWJvbD1vbCxWbi5pc1R5cGVkQXJyYXk9aWwsVm4uaXNVbmRlZmluZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1vfSxWbi5pc1dlYWtNYXA9ZnVuY3Rpb24oZSl7cmV0dXJuIFhhKGUpJiZmaShlKT09a30sVm4uaXNXZWFrU2V0PWZ1bmN0aW9uKGUpe3JldHVybiBYYShlKSYmXCJbb2JqZWN0IFdlYWtTZXRdXCI9PXhyKGUpfSxWbi5qb2luPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/XCJcIjpVdC5jYWxsKGUsdCl9LFZuLmtlYmFiQ2FzZT1abCxWbi5sYXN0PXppLFZuLmxhc3RJbmRleE9mPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIXIpcmV0dXJuLTE7dmFyIGk9cjtyZXR1cm4gbiE9PW8mJihpPShpPXVsKG4pKTwwP3ZuKHIraSwwKTpnbihpLHItMSkpLHQ9PXQ/ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uKzE7ci0tOylpZihlW3JdPT09dClyZXR1cm4gcjtyZXR1cm4gcn0oZSx0LGkpOkJ0KGUsJHQsaSwhMCl9LFZuLmxvd2VyQ2FzZT0kbCxWbi5sb3dlckZpcnN0PUZsLFZuLmx0PWFsLFZuLmx0ZT1sbCxWbi5tYXg9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUubGVuZ3RoP2RyKGUsUWwsX3IpOm99LFZuLm1heEJ5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmUubGVuZ3RoP2RyKGUsaWkodCwyKSxfcik6b30sVm4ubWVhbj1mdW5jdGlvbihlKXtyZXR1cm4gRnQoZSxRbCl9LFZuLm1lYW5CeT1mdW5jdGlvbihlLHQpe3JldHVybiBGdChlLGlpKHQsMikpfSxWbi5taW49ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUubGVuZ3RoP2RyKGUsUWwsSXIpOm99LFZuLm1pbkJ5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmUubGVuZ3RoP2RyKGUsaWkodCwyKSxJcik6b30sVm4uc3R1YkFycmF5PWZzLFZuLnN0dWJGYWxzZT1kcyxWbi5zdHViT2JqZWN0PWZ1bmN0aW9uKCl7cmV0dXJue319LFZuLnN0dWJTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIlwifSxWbi5zdHViVHJ1ZT1mdW5jdGlvbigpe3JldHVybiEwfSxWbi5tdWx0aXBseT1tcyxWbi5udGg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/RHIoZSx1bCh0KSk6b30sVm4ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBmdC5fPT09dGhpcyYmKGZ0Ll89QmUpLHRoaXN9LFZuLm5vb3A9b3MsVm4ubm93PXhhLFZuLnBhZD1mdW5jdGlvbihlLHQsbil7ZT1obChlKTt2YXIgcj0odD11bCh0KSk/Y24oZSk6MDtpZighdHx8cj49dClyZXR1cm4gZTt2YXIgbz0odC1yKS8yO3JldHVybiAkbyhwdChvKSxuKStlKyRvKGR0KG8pLG4pfSxWbi5wYWRFbmQ9ZnVuY3Rpb24oZSx0LG4pe2U9aGwoZSk7dmFyIHI9KHQ9dWwodCkpP2NuKGUpOjA7cmV0dXJuIHQmJnI8dD9lKyRvKHQtcixuKTplfSxWbi5wYWRTdGFydD1mdW5jdGlvbihlLHQsbil7ZT1obChlKTt2YXIgcj0odD11bCh0KSk/Y24oZSk6MDtyZXR1cm4gdCYmcjx0PyRvKHQtcixuKStlOmV9LFZuLnBhcnNlSW50PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnx8bnVsbD09dD90PTA6dCYmKHQ9K3QpLG1uKGhsKGUpLnJlcGxhY2UocmUsXCJcIiksdHx8MCl9LFZuLnJhbmRvbT1mdW5jdGlvbihlLHQsbil7aWYobiYmXCJib29sZWFuXCIhPXR5cGVvZiBuJiZnaShlLHQsbikmJih0PW49byksbj09PW8mJihcImJvb2xlYW5cIj09dHlwZW9mIHQ/KG49dCx0PW8pOlwiYm9vbGVhblwiPT10eXBlb2YgZSYmKG49ZSxlPW8pKSxlPT09byYmdD09PW8/KGU9MCx0PTEpOihlPWNsKGUpLHQ9PT1vPyh0PWUsZT0wKTp0PWNsKHQpKSxlPnQpe3ZhciByPWU7ZT10LHQ9cn1pZihufHxlJTF8fHQlMSl7dmFyIGk9eW4oKTtyZXR1cm4gZ24oZStpKih0LWUrbHQoXCIxZS1cIisoKGkrXCJcIikubGVuZ3RoLTEpKSksdCl9cmV0dXJuIFVyKGUsdCl9LFZuLnJlZHVjZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9WmEoZSk/QXQ6V3Qsbz1hcmd1bWVudHMubGVuZ3RoPDM7cmV0dXJuIHIoZSxpaSh0LDQpLG4sbyxjcil9LFZuLnJlZHVjZVJpZ2h0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1aYShlKT9JdDpXdCxvPWFyZ3VtZW50cy5sZW5ndGg8MztyZXR1cm4gcihlLGlpKHQsNCksbixvLHVyKX0sVm4ucmVwZWF0PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD0obj9naShlLHQsbik6dD09PW8pPzE6dWwodCksV3IoaGwoZSksdCl9LFZuLnJlcGxhY2U9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMsdD1obChlWzBdKTtyZXR1cm4gZS5sZW5ndGg8Mz90OnQucmVwbGFjZShlWzFdLGVbMl0pfSxWbi5yZXN1bHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPS0xLGk9KHQ9Z28odCxlKSkubGVuZ3RoO2ZvcihpfHwoaT0xLGU9byk7KytyPGk7KXt2YXIgYT1udWxsPT1lP286ZVtBaSh0W3JdKV07YT09PW8mJihyPWksYT1uKSxlPUdhKGEpP2EuY2FsbChlKTphfXJldHVybiBlfSxWbi5yb3VuZD15cyxWbi5ydW5JbkNvbnRleHQ9ZSxWbi5zYW1wbGU9ZnVuY3Rpb24oZSl7cmV0dXJuKFphKGUpP3FuOkdyKShlKX0sVm4uc2l6ZT1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiAwO2lmKEZhKGUpKXJldHVybiBybChlKT9jbihlKTplLmxlbmd0aDt2YXIgdD1maShlKTtyZXR1cm4gdD09eHx8dD09Uz9lLnNpemU6QXIoZSkubGVuZ3RofSxWbi5zbmFrZUNhc2U9TmwsVm4uc29tZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9WmEoZSk/VHQ6ZW87cmV0dXJuIG4mJmdpKGUsdCxuKSYmKHQ9bykscihlLGlpKHQsMykpfSxWbi5zb3J0ZWRJbmRleD1mdW5jdGlvbihlLHQpe3JldHVybiB0byhlLHQpfSxWbi5zb3J0ZWRJbmRleEJ5PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbm8oZSx0LGlpKG4sMikpfSxWbi5zb3J0ZWRJbmRleE9mPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT8wOmUubGVuZ3RoO2lmKG4pe3ZhciByPXRvKGUsdCk7aWYocjxuJiZIYShlW3JdLHQpKXJldHVybiByfXJldHVybi0xfSxWbi5zb3J0ZWRMYXN0SW5kZXg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdG8oZSx0LCEwKX0sVm4uc29ydGVkTGFzdEluZGV4Qnk9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBubyhlLHQsaWkobiwyKSwhMCl9LFZuLnNvcnRlZExhc3RJbmRleE9mPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9ZSYmZS5sZW5ndGgpe3ZhciBuPXRvKGUsdCwhMCktMTtpZihIYShlW25dLHQpKXJldHVybiBufXJldHVybi0xfSxWbi5zdGFydENhc2U9VWwsVm4uc3RhcnRzV2l0aD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9aGwoZSksbj1udWxsPT1uPzA6b3IodWwobiksMCxlLmxlbmd0aCksdD1pbyh0KSxlLnNsaWNlKG4sbit0Lmxlbmd0aCk9PXR9LFZuLnN1YnRyYWN0PXdzLFZuLnN1bT1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5sZW5ndGg/enQoZSxRbCk6MH0sVm4uc3VtQnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/enQoZSxpaSh0LDIpKTowfSxWbi50ZW1wbGF0ZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9Vm4udGVtcGxhdGVTZXR0aW5ncztuJiZnaShlLHQsbikmJih0PW8pLGU9aGwoZSksdD1DbCh7fSx0LHIsWW8pO3ZhciBpLGEsbD1DbCh7fSx0LmltcG9ydHMsci5pbXBvcnRzLFlvKSxzPVNsKGwpLGM9S3QobCxzKSx1PTAsZj10LmludGVycG9sYXRlfHx5ZSxkPVwiX19wICs9ICdcIixwPU9lKCh0LmVzY2FwZXx8eWUpLnNvdXJjZStcInxcIitmLnNvdXJjZStcInxcIisoZj09PVg/ZmU6eWUpLnNvdXJjZStcInxcIisodC5ldmFsdWF0ZXx8eWUpLnNvdXJjZStcInwkXCIsXCJnXCIpLGg9XCIvLyMgc291cmNlVVJMPVwiKyhBZS5jYWxsKHQsXCJzb3VyY2VVUkxcIik/KHQuc291cmNlVVJMK1wiXCIpLnJlcGxhY2UoL1xccy9nLFwiIFwiKTpcImxvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbXCIrICsrcnQrXCJdXCIpK1wiXFxuXCI7ZS5yZXBsYWNlKHAsKGZ1bmN0aW9uKHQsbixyLG8sbCxzKXtyZXR1cm4gcnx8KHI9byksZCs9ZS5zbGljZSh1LHMpLnJlcGxhY2Uod2Usbm4pLG4mJihpPSEwLGQrPVwiJyArXFxuX19lKFwiK24rXCIpICtcXG4nXCIpLGwmJihhPSEwLGQrPVwiJztcXG5cIitsK1wiO1xcbl9fcCArPSAnXCIpLHImJihkKz1cIicgK1xcbigoX190ID0gKFwiK3IrXCIpKSA9PSBudWxsID8gJycgOiBfX3QpICtcXG4nXCIpLHU9cyt0Lmxlbmd0aCx0fSkpLGQrPVwiJztcXG5cIjt2YXIgdj1BZS5jYWxsKHQsXCJ2YXJpYWJsZVwiKSYmdC52YXJpYWJsZTtpZih2KXtpZihjZS50ZXN0KHYpKXRocm93IG5ldyBiZShcIkludmFsaWQgYHZhcmlhYmxlYCBvcHRpb24gcGFzc2VkIGludG8gYF8udGVtcGxhdGVgXCIpfWVsc2UgZD1cIndpdGggKG9iaikge1xcblwiK2QrXCJcXG59XFxuXCI7ZD0oYT9kLnJlcGxhY2UoRixcIlwiKTpkKS5yZXBsYWNlKE4sXCIkMVwiKS5yZXBsYWNlKFUsXCIkMTtcIiksZD1cImZ1bmN0aW9uKFwiKyh2fHxcIm9ialwiKStcIikge1xcblwiKyh2P1wiXCI6XCJvYmogfHwgKG9iaiA9IHt9KTtcXG5cIikrXCJ2YXIgX190LCBfX3AgPSAnJ1wiKyhpP1wiLCBfX2UgPSBfLmVzY2FwZVwiOlwiXCIpKyhhP1wiLCBfX2ogPSBBcnJheS5wcm90b3R5cGUuam9pbjtcXG5mdW5jdGlvbiBwcmludCgpIHsgX19wICs9IF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH1cXG5cIjpcIjtcXG5cIikrZCtcInJldHVybiBfX3BcXG59XCI7dmFyIGc9cWwoKGZ1bmN0aW9uKCl7cmV0dXJuIHhlKHMsaCtcInJldHVybiBcIitkKS5hcHBseShvLGMpfSkpO2lmKGcuc291cmNlPWQsemEoZykpdGhyb3cgZztyZXR1cm4gZ30sVm4udGltZXM9ZnVuY3Rpb24oZSx0KXtpZigoZT11bChlKSk8MXx8ZT5mKXJldHVybltdO3ZhciBuPXAscj1nbihlLHApO3Q9aWkodCksZS09cDtmb3IodmFyIG89R3Qocix0KTsrK248ZTspdChuKTtyZXR1cm4gb30sVm4udG9GaW5pdGU9Y2wsVm4udG9JbnRlZ2VyPXVsLFZuLnRvTGVuZ3RoPWZsLFZuLnRvTG93ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGhsKGUpLnRvTG93ZXJDYXNlKCl9LFZuLnRvTnVtYmVyPWRsLFZuLnRvU2FmZUludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGU/b3IodWwoZSksLTkwMDcxOTkyNTQ3NDA5OTEsZik6MD09PWU/ZTowfSxWbi50b1N0cmluZz1obCxWbi50b1VwcGVyPWZ1bmN0aW9uKGUpe3JldHVybiBobChlKS50b1VwcGVyQ2FzZSgpfSxWbi50cmltPWZ1bmN0aW9uKGUsdCxuKXtpZigoZT1obChlKSkmJihufHx0PT09bykpcmV0dXJuIHF0KGUpO2lmKCFlfHwhKHQ9aW8odCkpKXJldHVybiBlO3ZhciByPXVuKGUpLGk9dW4odCk7cmV0dXJuIG1vKHIsSnQocixpKSxRdChyLGkpKzEpLmpvaW4oXCJcIil9LFZuLnRyaW1FbmQ9ZnVuY3Rpb24oZSx0LG4pe2lmKChlPWhsKGUpKSYmKG58fHQ9PT1vKSlyZXR1cm4gZS5zbGljZSgwLGZuKGUpKzEpO2lmKCFlfHwhKHQ9aW8odCkpKXJldHVybiBlO3ZhciByPXVuKGUpO3JldHVybiBtbyhyLDAsUXQocix1bih0KSkrMSkuam9pbihcIlwiKX0sVm4udHJpbVN0YXJ0PWZ1bmN0aW9uKGUsdCxuKXtpZigoZT1obChlKSkmJihufHx0PT09bykpcmV0dXJuIGUucmVwbGFjZShyZSxcIlwiKTtpZighZXx8ISh0PWlvKHQpKSlyZXR1cm4gZTt2YXIgcj11bihlKTtyZXR1cm4gbW8ocixKdChyLHVuKHQpKSkuam9pbihcIlwiKX0sVm4udHJ1bmNhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj0zMCxyPVwiLi4uXCI7aWYoS2EodCkpe3ZhciBpPVwic2VwYXJhdG9yXCJpbiB0P3Quc2VwYXJhdG9yOmk7bj1cImxlbmd0aFwiaW4gdD91bCh0Lmxlbmd0aCk6bixyPVwib21pc3Npb25cImluIHQ/aW8odC5vbWlzc2lvbik6cn12YXIgYT0oZT1obChlKSkubGVuZ3RoO2lmKHJuKGUpKXt2YXIgbD11bihlKTthPWwubGVuZ3RofWlmKG4+PWEpcmV0dXJuIGU7dmFyIHM9bi1jbihyKTtpZihzPDEpcmV0dXJuIHI7dmFyIGM9bD9tbyhsLDAscykuam9pbihcIlwiKTplLnNsaWNlKDAscyk7aWYoaT09PW8pcmV0dXJuIGMrcjtpZihsJiYocys9Yy5sZW5ndGgtcyksdGwoaSkpe2lmKGUuc2xpY2Uocykuc2VhcmNoKGkpKXt2YXIgdSxmPWM7Zm9yKGkuZ2xvYmFsfHwoaT1PZShpLnNvdXJjZSxobChkZS5leGVjKGkpKStcImdcIikpLGkubGFzdEluZGV4PTA7dT1pLmV4ZWMoZik7KXZhciBkPXUuaW5kZXg7Yz1jLnNsaWNlKDAsZD09PW8/czpkKX19ZWxzZSBpZihlLmluZGV4T2YoaW8oaSkscykhPXMpe3ZhciBwPWMubGFzdEluZGV4T2YoaSk7cD4tMSYmKGM9Yy5zbGljZSgwLHApKX1yZXR1cm4gYytyfSxWbi51bmVzY2FwZT1mdW5jdGlvbihlKXtyZXR1cm4oZT1obChlKSkmJkcudGVzdChlKT9lLnJlcGxhY2UoVyxkbik6ZX0sVm4udW5pcXVlSWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9KytJZTtyZXR1cm4gaGwoZSkrdH0sVm4udXBwZXJDYXNlPVdsLFZuLnVwcGVyRmlyc3Q9emwsVm4uZWFjaD1oYSxWbi5lYWNoUmlnaHQ9dmEsVm4uZmlyc3Q9RmkscnMoVm4sKHBzPXt9LENyKFZuLChmdW5jdGlvbihlLHQpe0FlLmNhbGwoVm4ucHJvdG90eXBlLHQpfHwocHNbdF09ZSl9KSkscHMpLHtjaGFpbjohMX0pLFZuLlZFUlNJT049XCI0LjE3LjIxXCIsT3QoW1wiYmluZFwiLFwiYmluZEtleVwiLFwiY3VycnlcIixcImN1cnJ5UmlnaHRcIixcInBhcnRpYWxcIixcInBhcnRpYWxSaWdodFwiXSwoZnVuY3Rpb24oZSl7Vm5bZV0ucGxhY2Vob2xkZXI9Vm59KSksT3QoW1wiZHJvcFwiLFwidGFrZVwiXSwoZnVuY3Rpb24oZSx0KXskbi5wcm90b3R5cGVbZV09ZnVuY3Rpb24obil7bj1uPT09bz8xOnZuKHVsKG4pLDApO3ZhciByPXRoaXMuX19maWx0ZXJlZF9fJiYhdD9uZXcgJG4odGhpcyk6dGhpcy5jbG9uZSgpO3JldHVybiByLl9fZmlsdGVyZWRfXz9yLl9fdGFrZUNvdW50X189Z24obixyLl9fdGFrZUNvdW50X18pOnIuX192aWV3c19fLnB1c2goe3NpemU6Z24obixwKSx0eXBlOmUrKHIuX19kaXJfXzwwP1wiUmlnaHRcIjpcIlwiKX0pLHJ9LCRuLnByb3RvdHlwZVtlK1wiUmlnaHRcIl09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpW2VdKHQpLnJldmVyc2UoKX19KSksT3QoW1wiZmlsdGVyXCIsXCJtYXBcIixcInRha2VXaGlsZVwiXSwoZnVuY3Rpb24oZSx0KXt2YXIgbj10KzEscj0xPT1ufHwzPT1uOyRuLnByb3RvdHlwZVtlXT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNsb25lKCk7cmV0dXJuIHQuX19pdGVyYXRlZXNfXy5wdXNoKHtpdGVyYXRlZTppaShlLDMpLHR5cGU6bn0pLHQuX19maWx0ZXJlZF9fPXQuX19maWx0ZXJlZF9ffHxyLHR9fSkpLE90KFtcImhlYWRcIixcImxhc3RcIl0sKGZ1bmN0aW9uKGUsdCl7dmFyIG49XCJ0YWtlXCIrKHQ/XCJSaWdodFwiOlwiXCIpOyRuLnByb3RvdHlwZVtlXT1mdW5jdGlvbigpe3JldHVybiB0aGlzW25dKDEpLnZhbHVlKClbMF19fSkpLE90KFtcImluaXRpYWxcIixcInRhaWxcIl0sKGZ1bmN0aW9uKGUsdCl7dmFyIG49XCJkcm9wXCIrKHQ/XCJcIjpcIlJpZ2h0XCIpOyRuLnByb3RvdHlwZVtlXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fZmlsdGVyZWRfXz9uZXcgJG4odGhpcyk6dGhpc1tuXSgxKX19KSksJG4ucHJvdG90eXBlLmNvbXBhY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWx0ZXIoUWwpfSwkbi5wcm90b3R5cGUuZmluZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5maWx0ZXIoZSkuaGVhZCgpfSwkbi5wcm90b3R5cGUuZmluZExhc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpLmZpbmQoZSl9LCRuLnByb3RvdHlwZS5pbnZva2VNYXA9enIoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZT9uZXcgJG4odGhpcyk6dGhpcy5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiBTcihuLGUsdCl9KSl9KSksJG4ucHJvdG90eXBlLnJlamVjdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5maWx0ZXIoUmEoaWkoZSkpKX0sJG4ucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGUsdCl7ZT11bChlKTt2YXIgbj10aGlzO3JldHVybiBuLl9fZmlsdGVyZWRfXyYmKGU+MHx8dDwwKT9uZXcgJG4obik6KGU8MD9uPW4udGFrZVJpZ2h0KC1lKTplJiYobj1uLmRyb3AoZSkpLHQhPT1vJiYobj0odD11bCh0KSk8MD9uLmRyb3BSaWdodCgtdCk6bi50YWtlKHQtZSkpLG4pfSwkbi5wcm90b3R5cGUudGFrZVJpZ2h0V2hpbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpLnRha2VXaGlsZShlKS5yZXZlcnNlKCl9LCRuLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFrZShwKX0sQ3IoJG4ucHJvdG90eXBlLChmdW5jdGlvbihlLHQpe3ZhciBuPS9eKD86ZmlsdGVyfGZpbmR8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KHQpLHI9L14oPzpoZWFkfGxhc3QpJC8udGVzdCh0KSxpPVZuW3I/XCJ0YWtlXCIrKFwibGFzdFwiPT10P1wiUmlnaHRcIjpcIlwiKTp0XSxhPXJ8fC9eZmluZC8udGVzdCh0KTtpJiYoVm4ucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fX3dyYXBwZWRfXyxsPXI/WzFdOmFyZ3VtZW50cyxzPXQgaW5zdGFuY2VvZiAkbixjPWxbMF0sdT1zfHxaYSh0KSxmPWZ1bmN0aW9uKGUpe3ZhciB0PWkuYXBwbHkoVm4sUHQoW2VdLGwpKTtyZXR1cm4gciYmZD90WzBdOnR9O3UmJm4mJlwiZnVuY3Rpb25cIj09dHlwZW9mIGMmJjEhPWMubGVuZ3RoJiYocz11PSExKTt2YXIgZD10aGlzLl9fY2hhaW5fXyxwPSEhdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgsaD1hJiYhZCx2PXMmJiFwO2lmKCFhJiZ1KXt0PXY/dDpuZXcgJG4odGhpcyk7dmFyIGc9ZS5hcHBseSh0LGwpO3JldHVybiBnLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6Y2EsYXJnczpbZl0sdGhpc0FyZzpvfSksbmV3IFpuKGcsZCl9cmV0dXJuIGgmJnY/ZS5hcHBseSh0aGlzLGwpOihnPXRoaXMudGhydShmKSxoP3I/Zy52YWx1ZSgpWzBdOmcudmFsdWUoKTpnKX0pfSkpLE90KFtcInBvcFwiLFwicHVzaFwiLFwic2hpZnRcIixcInNvcnRcIixcInNwbGljZVwiLFwidW5zaGlmdFwiXSwoZnVuY3Rpb24oZSl7dmFyIHQ9TWVbZV0sbj0vXig/OnB1c2h8c29ydHx1bnNoaWZ0KSQvLnRlc3QoZSk/XCJ0YXBcIjpcInRocnVcIixyPS9eKD86cG9wfHNoaWZ0KSQvLnRlc3QoZSk7Vm4ucHJvdG90eXBlW2VdPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzO2lmKHImJiF0aGlzLl9fY2hhaW5fXyl7dmFyIG89dGhpcy52YWx1ZSgpO3JldHVybiB0LmFwcGx5KFphKG8pP286W10sZSl9cmV0dXJuIHRoaXNbbl0oKGZ1bmN0aW9uKG4pe3JldHVybiB0LmFwcGx5KFphKG4pP246W10sZSl9KSl9fSkpLENyKCRuLnByb3RvdHlwZSwoZnVuY3Rpb24oZSx0KXt2YXIgbj1Wblt0XTtpZihuKXt2YXIgcj1uLm5hbWUrXCJcIjtBZS5jYWxsKE1uLHIpfHwoTW5bcl09W10pLE1uW3JdLnB1c2goe25hbWU6dCxmdW5jOm59KX19KSksTW5bVm8obywyKS5uYW1lXT1be25hbWU6XCJ3cmFwcGVyXCIsZnVuYzpvfV0sJG4ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGU9bmV3ICRuKHRoaXMuX193cmFwcGVkX18pO3JldHVybiBlLl9fYWN0aW9uc19fPUVvKHRoaXMuX19hY3Rpb25zX18pLGUuX19kaXJfXz10aGlzLl9fZGlyX18sZS5fX2ZpbHRlcmVkX189dGhpcy5fX2ZpbHRlcmVkX18sZS5fX2l0ZXJhdGVlc19fPUVvKHRoaXMuX19pdGVyYXRlZXNfXyksZS5fX3Rha2VDb3VudF9fPXRoaXMuX190YWtlQ291bnRfXyxlLl9fdmlld3NfXz1Fbyh0aGlzLl9fdmlld3NfXyksZX0sJG4ucHJvdG90eXBlLnJldmVyc2U9ZnVuY3Rpb24oKXtpZih0aGlzLl9fZmlsdGVyZWRfXyl7dmFyIGU9bmV3ICRuKHRoaXMpO2UuX19kaXJfXz0tMSxlLl9fZmlsdGVyZWRfXz0hMH1lbHNlKGU9dGhpcy5jbG9uZSgpKS5fX2Rpcl9fKj0tMTtyZXR1cm4gZX0sJG4ucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX3dyYXBwZWRfXy52YWx1ZSgpLHQ9dGhpcy5fX2Rpcl9fLG49WmEoZSkscj10PDAsbz1uP2UubGVuZ3RoOjAsaT1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPS0xLG89bi5sZW5ndGg7KytyPG87KXt2YXIgaT1uW3JdLGE9aS5zaXplO3N3aXRjaChpLnR5cGUpe2Nhc2VcImRyb3BcIjplKz1hO2JyZWFrO2Nhc2VcImRyb3BSaWdodFwiOnQtPWE7YnJlYWs7Y2FzZVwidGFrZVwiOnQ9Z24odCxlK2EpO2JyZWFrO2Nhc2VcInRha2VSaWdodFwiOmU9dm4oZSx0LWEpfX1yZXR1cm57c3RhcnQ6ZSxlbmQ6dH19KDAsbyx0aGlzLl9fdmlld3NfXyksYT1pLnN0YXJ0LGw9aS5lbmQscz1sLWEsYz1yP2w6YS0xLHU9dGhpcy5fX2l0ZXJhdGVlc19fLGY9dS5sZW5ndGgsZD0wLHA9Z24ocyx0aGlzLl9fdGFrZUNvdW50X18pO2lmKCFufHwhciYmbz09cyYmcD09cylyZXR1cm4gdW8oZSx0aGlzLl9fYWN0aW9uc19fKTt2YXIgaD1bXTtlOmZvcig7cy0tJiZkPHA7KXtmb3IodmFyIHY9LTEsZz1lW2MrPXRdOysrdjxmOyl7dmFyIEM9dVt2XSxtPUMuaXRlcmF0ZWUseT1DLnR5cGUsdz1tKGcpO2lmKDI9PXkpZz13O2Vsc2UgaWYoIXcpe2lmKDE9PXkpY29udGludWUgZTticmVhayBlfX1oW2QrK109Z31yZXR1cm4gaH0sVm4ucHJvdG90eXBlLmF0PXVhLFZuLnByb3RvdHlwZS5jaGFpbj1mdW5jdGlvbigpe3JldHVybiBzYSh0aGlzKX0sVm4ucHJvdG90eXBlLmNvbW1pdD1mdW5jdGlvbigpe3JldHVybiBuZXcgWm4odGhpcy52YWx1ZSgpLHRoaXMuX19jaGFpbl9fKX0sVm4ucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt0aGlzLl9fdmFsdWVzX189PT1vJiYodGhpcy5fX3ZhbHVlc19fPXNsKHRoaXMudmFsdWUoKSkpO3ZhciBlPXRoaXMuX19pbmRleF9fPj10aGlzLl9fdmFsdWVzX18ubGVuZ3RoO3JldHVybntkb25lOmUsdmFsdWU6ZT9vOnRoaXMuX192YWx1ZXNfX1t0aGlzLl9faW5kZXhfXysrXX19LFZuLnByb3RvdHlwZS5wbGFudD1mdW5jdGlvbihlKXtmb3IodmFyIHQsbj10aGlzO24gaW5zdGFuY2VvZiBEbjspe3ZhciByPVRpKG4pO3IuX19pbmRleF9fPTAsci5fX3ZhbHVlc19fPW8sdD9pLl9fd3JhcHBlZF9fPXI6dD1yO3ZhciBpPXI7bj1uLl9fd3JhcHBlZF9ffXJldHVybiBpLl9fd3JhcHBlZF9fPWUsdH0sVm4ucHJvdG90eXBlLnJldmVyc2U9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fd3JhcHBlZF9fO2lmKGUgaW5zdGFuY2VvZiAkbil7dmFyIHQ9ZTtyZXR1cm4gdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgmJih0PW5ldyAkbih0aGlzKSksKHQ9dC5yZXZlcnNlKCkpLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6Y2EsYXJnczpbS2ldLHRoaXNBcmc6b30pLG5ldyBabih0LHRoaXMuX19jaGFpbl9fKX1yZXR1cm4gdGhpcy50aHJ1KEtpKX0sVm4ucHJvdG90eXBlLnRvSlNPTj1Wbi5wcm90b3R5cGUudmFsdWVPZj1Wbi5wcm90b3R5cGUudmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdW8odGhpcy5fX3dyYXBwZWRfXyx0aGlzLl9fYWN0aW9uc19fKX0sVm4ucHJvdG90eXBlLmZpcnN0PVZuLnByb3RvdHlwZS5oZWFkLFllJiYoVm4ucHJvdG90eXBlW1llXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksVm59KCk7ZnQuXz1wbiwocj1mdW5jdGlvbigpe3JldHVybiBwbn0uY2FsbCh0LG4sdCxlKSk9PT1vfHwoZS5leHBvcnRzPXIpfS5jYWxsKHRoaXMpfSwzMDA6KGUsdCxuKT0+e3ZhciByLG87ZT1uLm5tZChlKSxmdW5jdGlvbih0KXt0LnJ1bm5pbmdJbk5vZGVKUz1mdW5jdGlvbigpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBwcm9jZXNzJiZcIm9iamVjdFwiPT10eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucyYmXCJzdHJpbmdcIj09dHlwZW9mIHByb2Nlc3MudmVyc2lvbnMubm9kZX0sdC5ydW5uaW5nSW5NYWluTm9kZUpTTW9kdWxlPWZ1bmN0aW9uKCl7cmV0dXJuIHQucnVubmluZ0luTm9kZUpTKCkmJm4uY1tuLnNdPT09ZX0sdC5jb21tb25KU0F2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlLmV4cG9ydHN9LHQucnVubmluZ0luV2ViV29ya2VyPWZ1bmN0aW9uKCl7cmV0dXJuXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvdyYmXCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHNlbGYuYWRkRXZlbnRMaXN0ZW5lciYmXCJmdW5jdGlvblwiPT10eXBlb2Ygc2VsZi5jbG9zZX0sdC5ydW5uaW5nSW5Ob2RlQ2hpbGRQcm9jZXNzPWZ1bmN0aW9uKCl7cmV0dXJuIHQucnVubmluZ0luTm9kZUpTKCkmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHByb2Nlc3Muc2VuZH0sdC5ydW5uaW5nSW5OdWxsT3JpZ2luPWZ1bmN0aW9uKCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdyYmXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdy5sb2NhdGlvbiYmXCJvYmplY3RcIj09dHlwZW9mIGRvY3VtZW50JiZcImh0dHA6XCIhPT1kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCYmXCJodHRwczpcIiE9PWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sfSx0LndlYldvcmtlcnNBdmFpbGFibGU9ZnVuY3Rpb24oKXtyZXR1cm4hKFwiZnVuY3Rpb25cIiE9dHlwZW9mIFdvcmtlcnx8dC5ydW5uaW5nSW5OdWxsT3JpZ2luKCl8fHQucnVubmluZ0luTm9kZUpTKCl8fG5hdmlnYXRvciYmbmF2aWdhdG9yLnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKFwiQW5kcm9pZCA0LjNcIik+PTApfSx0LmxvZz1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PSExKSxcIm9iamVjdFwiPT10eXBlb2YgY29uc29sZSYmdCYmXCJvYmplY3RcIj09dHlwZW9mIGRvY3VtZW50JiYoZG9jdW1lbnQuYm9keS5pbm5lckhUTUwrPWUrXCI8YnIvPlwiKX0sdC5jcmVhdGVFcnJvck1lc3NhZ2U9ZnVuY3Rpb24oZSxuKXtpZih2b2lkIDA9PT1uJiYobj1cIlVuaGFuZGxlZCBleGNlcHRpb25cIiksbnVsbD09ZSlyZXR1cm4gbjtpZihuKz1cIjogXCIsXCJvYmplY3RcIj09dHlwZW9mIGUuY29udGVudCl7aWYodC5ydW5uaW5nSW5Ob2RlSlMoKSlyZXR1cm4gbitlLmNvbnRlbnQuc3RhY2s7dmFyIHI9SlNPTi5zdHJpbmdpZnkoZS5jb250ZW50KTtyZXR1cm5cInt9XCIhPT1yP24rcjpuK2UuY29udGVudH1yZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZS5jb250ZW50P24rZS5jb250ZW50Om4rZX0sdC5wcmludEV4Y2VwdGlvbkFuZFN0YWNrVHJhY2VUb0NvbnNvbGU9ZnVuY3Rpb24oZSxuKXt2b2lkIDA9PT1uJiYobj1cIlVuaGFuZGxlZCBleGNlcHRpb25cIiksdC5sb2codC5jcmVhdGVFcnJvck1lc3NhZ2UoZSxuKSl9LHQuZ2V0R2xvYmFsT2JqZWN0PWZ1bmN0aW9uKCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIG4uZz9uLmc6XCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdz93aW5kb3c6XCJvYmplY3RcIj09dHlwZW9mIHNlbGY/c2VsZjp7fX0sdC50b1N0cmluZz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLHQuY29tbW9uSlNBdmFpbGFibGUoKSYmKGUuZXhwb3J0cz10KX0ob3x8KG89e30pKSxmdW5jdGlvbihlKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBVaW50OEFycmF5JiYwIT09bmV3IFVpbnQ4QXJyYXkoMSkuc3ViYXJyYXkoMSkuYnl0ZUxlbmd0aCl7dmFyIHQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU8dD90OmU+bj9uOmV9O2V8PTAsdHw9MCxhcmd1bWVudHMubGVuZ3RoPDEmJihlPTApLGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9dGhpcy5sZW5ndGgpLGU8MCYmKGU9dGhpcy5sZW5ndGgrZSksdDwwJiYodD10aGlzLmxlbmd0aCt0KSxlPW4oZSwwLHRoaXMubGVuZ3RoKTt2YXIgcj0odD1uKHQsMCx0aGlzLmxlbmd0aCkpLWU7cmV0dXJuIHI8MCYmKHI9MCksbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K2UqdGhpcy5CWVRFU19QRVJfRUxFTUVOVCxyKX0sbj1bXCJJbnQ4QXJyYXlcIixcIlVpbnQ4QXJyYXlcIixcIlVpbnQ4Q2xhbXBlZEFycmF5XCIsXCJJbnQxNkFycmF5XCIsXCJVaW50MTZBcnJheVwiLFwiSW50MzJBcnJheVwiLFwiVWludDMyQXJyYXlcIixcIkZsb2F0MzJBcnJheVwiLFwiRmxvYXQ2NEFycmF5XCJdLHI9dm9pZCAwO2lmKFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3c/cj13aW5kb3c6XCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJihyPXNlbGYpLHZvaWQgMCE9PXIpZm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspcltuW29dXSYmKHJbbltvXV0ucHJvdG90eXBlLnN1YmFycmF5PXQpfX0ocnx8KHI9e30pKSxmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuY29tcHJlc3NBc3luYz1mdW5jdGlvbih0LG4scil7dmFyIG89bmV3IGUuVGltZXIsaT1uZXcgZS5Db21wcmVzc29yO2lmKCFyKXRocm93IG5ldyBUeXBlRXJyb3IoXCJjb21wcmVzc0FzeW5jOiBObyBjYWxsYmFjayBhcmd1bWVudCBnaXZlblwiKTtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl0PWUuZW5jb2RlVVRGOCh0KTtlbHNlIGlmKG51bGw9PXR8fCEodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXJldHVybiB2b2lkIHIodm9pZCAwLG5ldyBUeXBlRXJyb3IoXCJjb21wcmVzc0FzeW5jOiBJbnZhbGlkIGlucHV0IGFyZ3VtZW50LCBvbmx5ICdzdHJpbmcnIGFuZCAnVWludDhBcnJheScgYXJlIHN1cHBvcnRlZFwiKSk7dmFyIGE9ZS5BcnJheVRvb2xzLnNwbGl0Qnl0ZUFycmF5KHQsbi5ibG9ja1NpemUpLGw9W10scz1mdW5jdGlvbih0KXtpZih0PGEubGVuZ3RoKXt2YXIgYz12b2lkIDA7dHJ5e2M9aS5jb21wcmVzc0Jsb2NrKGFbdF0pfWNhdGNoKGUpe3JldHVybiB2b2lkIHIodm9pZCAwLGUpfWwucHVzaChjKSxvLmdldEVsYXBzZWRUaW1lKCk8PTIwP3ModCsxKTooZS5lbnF1ZXVlSW1tZWRpYXRlKChmdW5jdGlvbigpe3JldHVybiBzKHQrMSl9KSksby5yZXN0YXJ0KCkpfWVsc2V7dmFyIHU9ZS5BcnJheVRvb2xzLmNvbmNhdFVpbnQ4QXJyYXlzKGwpO2UuZW5xdWV1ZUltbWVkaWF0ZSgoZnVuY3Rpb24oKXt2YXIgdDt0cnl7dD1lLkNvbXByZXNzaW9uQ29tbW9uLmVuY29kZUNvbXByZXNzZWRCeXRlcyh1LG4ub3V0cHV0RW5jb2RpbmcpfWNhdGNoKGUpe3JldHVybiB2b2lkIHIodm9pZCAwLGUpfWUuZW5xdWV1ZUltbWVkaWF0ZSgoZnVuY3Rpb24oKXtyZXR1cm4gcih0KX0pKX0pKX19O2UuZW5xdWV1ZUltbWVkaWF0ZSgoZnVuY3Rpb24oKXtyZXR1cm4gcygwKX0pKX0sdC5jcmVhdGVDb21wcmVzc2lvblN0cmVhbT1mdW5jdGlvbigpe3ZhciB0PW5ldyBlLkNvbXByZXNzb3Iscj1uZXcobig5OSkuVHJhbnNmb3JtKSh7ZGVjb2RlU3RyaW5nczohMCxoaWdoV2F0ZXJNYXJrOjY1NTM2fSk7cmV0dXJuIHIuX3RyYW5zZm9ybT1mdW5jdGlvbihuLG8saSl7dmFyIGE7dHJ5e2E9ZS5CdWZmZXJUb29scy51aW50OEFycmF5VG9CdWZmZXIodC5jb21wcmVzc0Jsb2NrKGUuQnVmZmVyVG9vbHMuYnVmZmVyVG9VaW50OEFycmF5KG4pKSl9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgci5lbWl0KFwiZXJyb3JcIixlKX1yLnB1c2goYSksaSgpfSxyfSx0fSgpO2UuQXN5bmNDb21wcmVzc29yPXR9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LmRlY29tcHJlc3NBc3luYz1mdW5jdGlvbih0LG4scil7aWYoIXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcImRlY29tcHJlc3NBc3luYzogTm8gY2FsbGJhY2sgYXJndW1lbnQgZ2l2ZW5cIik7dmFyIG89bmV3IGUuVGltZXI7dHJ5e3Q9ZS5Db21wcmVzc2lvbkNvbW1vbi5kZWNvZGVDb21wcmVzc2VkQnl0ZXModCxuLmlucHV0RW5jb2RpbmcpfWNhdGNoKGUpe3JldHVybiB2b2lkIHIodm9pZCAwLGUpfXZhciBpPW5ldyBlLkRlY29tcHJlc3NvcixhPWUuQXJyYXlUb29scy5zcGxpdEJ5dGVBcnJheSh0LG4uYmxvY2tTaXplKSxsPVtdLHM9ZnVuY3Rpb24odCl7aWYodDxhLmxlbmd0aCl7dmFyIGM9dm9pZCAwO3RyeXtjPWkuZGVjb21wcmVzc0Jsb2NrKGFbdF0pfWNhdGNoKGUpe3JldHVybiB2b2lkIHIodm9pZCAwLGUpfWwucHVzaChjKSxvLmdldEVsYXBzZWRUaW1lKCk8PTIwP3ModCsxKTooZS5lbnF1ZXVlSW1tZWRpYXRlKChmdW5jdGlvbigpe3JldHVybiBzKHQrMSl9KSksby5yZXN0YXJ0KCkpfWVsc2V7dmFyIHU9ZS5BcnJheVRvb2xzLmNvbmNhdFVpbnQ4QXJyYXlzKGwpO2UuZW5xdWV1ZUltbWVkaWF0ZSgoZnVuY3Rpb24oKXt2YXIgdDt0cnl7dD1lLkNvbXByZXNzaW9uQ29tbW9uLmVuY29kZURlY29tcHJlc3NlZEJ5dGVzKHUsbi5vdXRwdXRFbmNvZGluZyl9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgcih2b2lkIDAsZSl9ZS5lbnF1ZXVlSW1tZWRpYXRlKChmdW5jdGlvbigpe3JldHVybiByKHQpfSkpfSkpfX07ZS5lbnF1ZXVlSW1tZWRpYXRlKChmdW5jdGlvbigpe3JldHVybiBzKDApfSkpfSx0LmNyZWF0ZURlY29tcHJlc3Npb25TdHJlYW09ZnVuY3Rpb24oKXt2YXIgdD1uZXcgZS5EZWNvbXByZXNzb3Iscj1uZXcobig5OSkuVHJhbnNmb3JtKSh7ZGVjb2RlU3RyaW5nczohMCxoaWdoV2F0ZXJNYXJrOjY1NTM2fSk7cmV0dXJuIHIuX3RyYW5zZm9ybT1mdW5jdGlvbihuLG8saSl7dmFyIGE7dHJ5e2E9ZS5CdWZmZXJUb29scy51aW50OEFycmF5VG9CdWZmZXIodC5kZWNvbXByZXNzQmxvY2soZS5CdWZmZXJUb29scy5idWZmZXJUb1VpbnQ4QXJyYXkobikpKX1jYXRjaChlKXtyZXR1cm4gdm9pZCByLmVtaXQoXCJlcnJvclwiLGUpfXIucHVzaChhKSxpKCl9LHJ9LHR9KCk7ZS5Bc3luY0RlY29tcHJlc3Nvcj10fShvfHwobz17fSkpLGZ1bmN0aW9uKGUpe3ZhciB0OyFmdW5jdGlvbih0KXt0LmNvbXByZXNzQXN5bmM9ZnVuY3Rpb24oZSxuLHIpe2lmKFwiQnl0ZUFycmF5XCIhPW4uaW5wdXRFbmNvZGluZ3x8ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe3ZhciBvPXt0b2tlbjpNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCksdHlwZTpcImNvbXByZXNzXCIsZGF0YTplLGlucHV0RW5jb2Rpbmc6bi5pbnB1dEVuY29kaW5nLG91dHB1dEVuY29kaW5nOm4ub3V0cHV0RW5jb2Rpbmd9LGk9ZnVuY3Rpb24oZSl7dmFyIG49ZS5kYXRhO24mJm4udG9rZW49PW8udG9rZW4mJih0Lmdsb2JhbFdvcmtlci5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLGkpLFwiZXJyb3JcIj09bi50eXBlP3Iodm9pZCAwLG5ldyBFcnJvcihuLmVycm9yKSk6cihuLmRhdGEpKX07dC5nbG9iYWxXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIixpKSx0Lmdsb2JhbFdvcmtlci5wb3N0TWVzc2FnZShvLFtdKX1lbHNlIHIodm9pZCAwLG5ldyBUeXBlRXJyb3IoXCJjb21wcmVzc0FzeW5jOiBpbnB1dCBpcyBub3QgYSBVaW50OEFycmF5XCIpKX0sdC5kZWNvbXByZXNzQXN5bmM9ZnVuY3Rpb24oZSxuLHIpe3ZhciBvPXt0b2tlbjpNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCksdHlwZTpcImRlY29tcHJlc3NcIixkYXRhOmUsaW5wdXRFbmNvZGluZzpuLmlucHV0RW5jb2Rpbmcsb3V0cHV0RW5jb2Rpbmc6bi5vdXRwdXRFbmNvZGluZ30saT1mdW5jdGlvbihlKXt2YXIgbj1lLmRhdGE7biYmbi50b2tlbj09by50b2tlbiYmKHQuZ2xvYmFsV29ya2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsaSksXCJlcnJvclwiPT1uLnR5cGU/cih2b2lkIDAsbmV3IEVycm9yKG4uZXJyb3IpKTpyKG4uZGF0YSkpfTt0Lmdsb2JhbFdvcmtlci5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLGkpLHQuZ2xvYmFsV29ya2VyLnBvc3RNZXNzYWdlKG8sW10pfSx0Lmluc3RhbGxXZWJXb3JrZXJJZk5lZWRlZD1mdW5jdGlvbigpe1wib2JqZWN0XCI9PXR5cGVvZiBzZWxmJiZ2b2lkIDA9PT1zZWxmLmRvY3VtZW50JiZudWxsIT1zZWxmLmFkZEV2ZW50TGlzdGVuZXImJihzZWxmLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsKGZ1bmN0aW9uKHQpe3ZhciBuPXQuZGF0YTtpZihcImNvbXByZXNzXCI9PW4udHlwZSl7dmFyIHI9dm9pZCAwO3RyeXtyPWUuY29tcHJlc3Mobi5kYXRhLHtvdXRwdXRFbmNvZGluZzpuLm91dHB1dEVuY29kaW5nfSl9Y2F0Y2godCl7cmV0dXJuIHZvaWQgc2VsZi5wb3N0TWVzc2FnZSh7dG9rZW46bi50b2tlbix0eXBlOlwiZXJyb3JcIixlcnJvcjplLmNyZWF0ZUVycm9yTWVzc2FnZSh0KX0sW10pfShvPXt0b2tlbjpuLnRva2VuLHR5cGU6XCJjb21wcmVzc2lvblJlc3VsdFwiLGRhdGE6cixlbmNvZGluZzpuLm91dHB1dEVuY29kaW5nfSkuZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJi0xPT09bmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZihcIk1TSUUgMTBcIik/c2VsZi5wb3N0TWVzc2FnZShvLFtvLmRhdGEuYnVmZmVyXSk6c2VsZi5wb3N0TWVzc2FnZShvLFtdKX1lbHNlIGlmKFwiZGVjb21wcmVzc1wiPT1uLnR5cGUpe3ZhciBvLGk9dm9pZCAwO3RyeXtpPWUuZGVjb21wcmVzcyhuLmRhdGEse2lucHV0RW5jb2Rpbmc6bi5pbnB1dEVuY29kaW5nLG91dHB1dEVuY29kaW5nOm4ub3V0cHV0RW5jb2Rpbmd9KX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBzZWxmLnBvc3RNZXNzYWdlKHt0b2tlbjpuLnRva2VuLHR5cGU6XCJlcnJvclwiLGVycm9yOmUuY3JlYXRlRXJyb3JNZXNzYWdlKHQpfSxbXSl9KG89e3Rva2VuOm4udG9rZW4sdHlwZTpcImRlY29tcHJlc3Npb25SZXN1bHRcIixkYXRhOmksZW5jb2Rpbmc6bi5vdXRwdXRFbmNvZGluZ30pLmRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5JiYtMT09PW5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoXCJNU0lFIDEwXCIpP3NlbGYucG9zdE1lc3NhZ2Uobyxbby5kYXRhLmJ1ZmZlcl0pOnNlbGYucG9zdE1lc3NhZ2UobyxbXSl9fSkpLHNlbGYuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsKGZ1bmN0aW9uKHQpe2UubG9nKGUuY3JlYXRlRXJyb3JNZXNzYWdlKHQuZXJyb3IsXCJVbmV4cGVjdGVkIExaVVRGOCBXZWJXb3JrZXIgZXhjZXB0aW9uXCIpKX0pKSl9LHQuY3JlYXRlR2xvYmFsV29ya2VySWZOZWVkZWQ9ZnVuY3Rpb24oKXtpZih0Lmdsb2JhbFdvcmtlcilyZXR1cm4hMDtpZighZS53ZWJXb3JrZXJzQXZhaWxhYmxlKCkpcmV0dXJuITE7aWYoIXQuc2NyaXB0VVJJJiZcIm9iamVjdFwiPT10eXBlb2YgZG9jdW1lbnQpe3ZhciBuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibHp1dGY4XCIpO251bGwhPW4mJih0LnNjcmlwdFVSST1uLmdldEF0dHJpYnV0ZShcInNyY1wiKXx8dm9pZCAwKX1yZXR1cm4hIXQuc2NyaXB0VVJJJiYodC5nbG9iYWxXb3JrZXI9bmV3IFdvcmtlcih0LnNjcmlwdFVSSSksITApfSx0LnRlcm1pbmF0ZT1mdW5jdGlvbigpe3QuZ2xvYmFsV29ya2VyJiYodC5nbG9iYWxXb3JrZXIudGVybWluYXRlKCksdC5nbG9iYWxXb3JrZXI9dm9pZCAwKX19KHQ9ZS5XZWJXb3JrZXJ8fChlLldlYldvcmtlcj17fSkpLHQuaW5zdGFsbFdlYldvcmtlcklmTmVlZGVkKCl9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuKXt0aGlzLmNvbnRhaW5lcj1lLHRoaXMuc3RhcnRQb3NpdGlvbj10LHRoaXMubGVuZ3RoPW59cmV0dXJuIGUucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb250YWluZXJbdGhpcy5zdGFydFBvc2l0aW9uK2VdfSxlLnByb3RvdHlwZS5nZXRJblJldmVyc2VkT3JkZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29udGFpbmVyW3RoaXMuc3RhcnRQb3NpdGlvbit0aGlzLmxlbmd0aC0xLWVdfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmNvbnRhaW5lclt0aGlzLnN0YXJ0UG9zaXRpb24rZV09dH0sZX0oKTtlLkFycmF5U2VnbWVudD10fShvfHwobz17fSkpLGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXtlLmNvcHlFbGVtZW50cz1mdW5jdGlvbihlLHQsbixyLG8pe2Zvcig7by0tOyluW3IrK109ZVt0KytdfSxlLnplcm9FbGVtZW50cz1mdW5jdGlvbihlLHQsbil7Zm9yKDtuLS07KWVbdCsrXT0wfSxlLmNvdW50Tm9uemVyb1ZhbHVlc0luQXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj0wO248ZS5sZW5ndGg7bisrKWVbbl0mJnQrKztyZXR1cm4gdH0sZS50cnVuY2F0ZVN0YXJ0aW5nRWxlbWVudHM9ZnVuY3Rpb24oZSx0KXtpZihlLmxlbmd0aDw9dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInRydW5jYXRlU3RhcnRpbmdFbGVtZW50czogUmVxdWVzdGVkIGxlbmd0aCBzaG91bGQgYmUgc21hbGxlciB0aGFuIGFycmF5IGxlbmd0aFwiKTtmb3IodmFyIG49ZS5sZW5ndGgtdCxyPTA7cjx0O3IrKyllW3JdPWVbbityXTtlLmxlbmd0aD10fSxlLmRvdWJsZUJ5dGVBcnJheUNhcGFjaXR5PWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBVaW50OEFycmF5KDIqZS5sZW5ndGgpO3JldHVybiB0LnNldChlKSx0fSxlLmNvbmNhdFVpbnQ4QXJyYXlzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49MCxyPWU7bjxyLmxlbmd0aDtuKyspdCs9KHM9cltuXSkubGVuZ3RoO2Zvcih2YXIgbz1uZXcgVWludDhBcnJheSh0KSxpPTAsYT0wLGw9ZTthPGwubGVuZ3RoO2ErKyl7dmFyIHM9bFthXTtvLnNldChzLGkpLGkrPXMubGVuZ3RofXJldHVybiBvfSxlLnNwbGl0Qnl0ZUFycmF5PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdLHI9MDtyPGUubGVuZ3RoOyl7dmFyIG89TWF0aC5taW4odCxlLmxlbmd0aC1yKTtuLnB1c2goZS5zdWJhcnJheShyLHIrbykpLHIrPW99cmV0dXJuIG59fShlLkFycmF5VG9vbHN8fChlLkFycmF5VG9vbHM9e30pKX0ob3x8KG89e30pKSxmdW5jdGlvbihlKXshZnVuY3Rpb24oZSl7ZS5jb252ZXJ0VG9VaW50OEFycmF5SWZOZWVkZWQ9ZnVuY3Rpb24odCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgQnVmZmVyJiZCdWZmZXIuaXNCdWZmZXIodCk/ZS5idWZmZXJUb1VpbnQ4QXJyYXkodCk6dH0sZS51aW50OEFycmF5VG9CdWZmZXI9ZnVuY3Rpb24oZSl7aWYoQnVmZmVyLnByb3RvdHlwZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe3ZhciB0PW5ldyBVaW50OEFycmF5KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YodCxCdWZmZXIucHJvdG90eXBlKSx0fWZvcih2YXIgbj1lLmxlbmd0aCxyPW5ldyBCdWZmZXIobiksbz0wO288bjtvKyspcltvXT1lW29dO3JldHVybiByfSxlLmJ1ZmZlclRvVWludDhBcnJheT1mdW5jdGlvbihlKXtpZihCdWZmZXIucHJvdG90eXBlIGluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCk7Zm9yKHZhciB0PWUubGVuZ3RoLG49bmV3IFVpbnQ4QXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufX0oZS5CdWZmZXJUb29sc3x8KGUuQnVmZmVyVG9vbHM9e30pKX0ob3x8KG89e30pKSxmdW5jdGlvbihlKXshZnVuY3Rpb24odCl7dC5nZXRDcm9wcGVkQnVmZmVyPWZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPTApO3ZhciBvPW5ldyBVaW50OEFycmF5KG4rcik7cmV0dXJuIG8uc2V0KGUuc3ViYXJyYXkodCx0K24pKSxvfSx0LmdldENyb3BwZWRBbmRBcHBlbmRlZEJ5dGVBcnJheT1mdW5jdGlvbih0LG4scixvKXtyZXR1cm4gZS5BcnJheVRvb2xzLmNvbmNhdFVpbnQ4QXJyYXlzKFt0LnN1YmFycmF5KG4sbityKSxvXSl9LHQuZGV0ZWN0Q29tcHJlc3Npb25Tb3VyY2VFbmNvZGluZz1mdW5jdGlvbihlKXtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJkZXRlY3RDb21wcmVzc2lvblNvdXJjZUVuY29kaW5nOiBpbnB1dCBpcyBudWxsIG9yIHVuZGVmaW5lZFwiKTtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm5cIlN0cmluZ1wiO2lmKGUgaW5zdGFuY2VvZiBVaW50OEFycmF5fHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBCdWZmZXImJkJ1ZmZlci5pc0J1ZmZlcihlKSlyZXR1cm5cIkJ5dGVBcnJheVwiO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJkZXRlY3RDb21wcmVzc2lvblNvdXJjZUVuY29kaW5nOiBpbnB1dCBtdXN0IGJlIG9mIHR5cGUgJ3N0cmluZycsICdVaW50OEFycmF5JyBvciAnQnVmZmVyJ1wiKX0sdC5lbmNvZGVDb21wcmVzc2VkQnl0ZXM9ZnVuY3Rpb24odCxuKXtzd2l0Y2gobil7Y2FzZVwiQnl0ZUFycmF5XCI6cmV0dXJuIHQ7Y2FzZVwiQnVmZmVyXCI6cmV0dXJuIGUuQnVmZmVyVG9vbHMudWludDhBcnJheVRvQnVmZmVyKHQpO2Nhc2VcIkJhc2U2NFwiOnJldHVybiBlLmVuY29kZUJhc2U2NCh0KTtjYXNlXCJCaW5hcnlTdHJpbmdcIjpyZXR1cm4gZS5lbmNvZGVCaW5hcnlTdHJpbmcodCk7Y2FzZVwiU3RvcmFnZUJpbmFyeVN0cmluZ1wiOnJldHVybiBlLmVuY29kZVN0b3JhZ2VCaW5hcnlTdHJpbmcodCk7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKFwiZW5jb2RlQ29tcHJlc3NlZEJ5dGVzOiBpbnZhbGlkIG91dHB1dCBlbmNvZGluZyByZXF1ZXN0ZWRcIil9fSx0LmRlY29kZUNvbXByZXNzZWRCeXRlcz1mdW5jdGlvbih0LG4pe2lmKG51bGw9PW4pdGhyb3cgbmV3IFR5cGVFcnJvcihcImRlY29kZUNvbXByZXNzZWREYXRhOiBJbnB1dCBpcyBudWxsIG9yIHVuZGVmaW5lZFwiKTtzd2l0Y2gobil7Y2FzZVwiQnl0ZUFycmF5XCI6Y2FzZVwiQnVmZmVyXCI6dmFyIHI9ZS5CdWZmZXJUb29scy5jb252ZXJ0VG9VaW50OEFycmF5SWZOZWVkZWQodCk7aWYoIShyIGluc3RhbmNlb2YgVWludDhBcnJheSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcImRlY29kZUNvbXByZXNzZWREYXRhOiAnQnl0ZUFycmF5JyBvciAnQnVmZmVyJyBpbnB1dCB0eXBlIHdhcyBzcGVjaWZpZWQgYnV0IGlucHV0IGlzIG5vdCBhIFVpbnQ4QXJyYXkgb3IgQnVmZmVyXCIpO3JldHVybiByO2Nhc2VcIkJhc2U2NFwiOmlmKFwic3RyaW5nXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJkZWNvZGVDb21wcmVzc2VkRGF0YTogJ0Jhc2U2NCcgaW5wdXQgdHlwZSB3YXMgc3BlY2lmaWVkIGJ1dCBpbnB1dCBpcyBub3QgYSBzdHJpbmdcIik7cmV0dXJuIGUuZGVjb2RlQmFzZTY0KHQpO2Nhc2VcIkJpbmFyeVN0cmluZ1wiOmlmKFwic3RyaW5nXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJkZWNvZGVDb21wcmVzc2VkRGF0YTogJ0JpbmFyeVN0cmluZycgaW5wdXQgdHlwZSB3YXMgc3BlY2lmaWVkIGJ1dCBpbnB1dCBpcyBub3QgYSBzdHJpbmdcIik7cmV0dXJuIGUuZGVjb2RlQmluYXJ5U3RyaW5nKHQpO2Nhc2VcIlN0b3JhZ2VCaW5hcnlTdHJpbmdcIjppZihcInN0cmluZ1wiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiZGVjb2RlQ29tcHJlc3NlZERhdGE6ICdTdG9yYWdlQmluYXJ5U3RyaW5nJyBpbnB1dCB0eXBlIHdhcyBzcGVjaWZpZWQgYnV0IGlucHV0IGlzIG5vdCBhIHN0cmluZ1wiKTtyZXR1cm4gZS5kZWNvZGVTdG9yYWdlQmluYXJ5U3RyaW5nKHQpO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcihcImRlY29kZUNvbXByZXNzZWREYXRhOiBpbnZhbGlkIGlucHV0IGVuY29kaW5nIHJlcXVlc3RlZDogJ1wiLmNvbmNhdChuLFwiJ1wiKSl9fSx0LmVuY29kZURlY29tcHJlc3NlZEJ5dGVzPWZ1bmN0aW9uKHQsbil7c3dpdGNoKG4pe2Nhc2VcIlN0cmluZ1wiOnJldHVybiBlLmRlY29kZVVURjgodCk7Y2FzZVwiQnl0ZUFycmF5XCI6cmV0dXJuIHQ7Y2FzZVwiQnVmZmVyXCI6aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgQnVmZmVyKXRocm93IG5ldyBUeXBlRXJyb3IoXCJlbmNvZGVEZWNvbXByZXNzZWRCeXRlczogYSAnQnVmZmVyJyB0eXBlIHdhcyBzcGVjaWZpZWQgYnV0IGlzIG5vdCBzdXBwb3J0ZWQgYXQgdGhlIGN1cnJlbnQgZW52aXJubWVudFwiKTtyZXR1cm4gZS5CdWZmZXJUb29scy51aW50OEFycmF5VG9CdWZmZXIodCk7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKFwiZW5jb2RlRGVjb21wcmVzc2VkQnl0ZXM6IGludmFsaWQgb3V0cHV0IGVuY29kaW5nIHJlcXVlc3RlZFwiKX19fShlLkNvbXByZXNzaW9uQ29tbW9ufHwoZS5Db21wcmVzc2lvbkNvbW1vbj17fSkpfShvfHwobz17fSkpLGZ1bmN0aW9uKGUpe3ZhciB0OyFmdW5jdGlvbih0KXt2YXIgbixyPVtdO3QuZW5xdWV1ZUltbWVkaWF0ZT1mdW5jdGlvbihlKXtyLnB1c2goZSksMT09PXIubGVuZ3RoJiZuKCl9LHQuaW5pdGlhbGl6ZVNjaGVkdWxlcj1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsbj1yO3Q8bi5sZW5ndGg7dCsrKXt2YXIgbz1uW3RdO3RyeXtvLmNhbGwodm9pZCAwKX1jYXRjaCh0KXtlLnByaW50RXhjZXB0aW9uQW5kU3RhY2tUcmFjZVRvQ29uc29sZSh0LFwiZW5xdWV1ZUltbWVkaWF0ZSBleGNlcHRpb25cIil9fXIubGVuZ3RoPTB9O2lmKGUucnVubmluZ0luTm9kZUpTKCkpbj1mdW5jdGlvbigpe3JldHVybiBzZXRJbW1lZGlhdGUoKGZ1bmN0aW9uKCl7cmV0dXJuIHQoKX0pKX07ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciYmXCJmdW5jdGlvblwiPT10eXBlb2Ygd2luZG93LnBvc3RNZXNzYWdlKXt2YXIgbyxpPVwiZW5xdWV1ZUltbWVkaWF0ZS1cIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsKGZ1bmN0aW9uKGUpe2UuZGF0YT09PWkmJnQoKX0pKSxvPWUucnVubmluZ0luTnVsbE9yaWdpbigpP1wiKlwiOndpbmRvdy5sb2NhdGlvbi5ocmVmLG49ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LnBvc3RNZXNzYWdlKGksbyl9fWVsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgTWVzc2FnZUNoYW5uZWwmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE1lc3NhZ2VQb3J0KXt2YXIgYT1uZXcgTWVzc2FnZUNoYW5uZWw7YS5wb3J0MS5vbm1lc3NhZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpfSxuPWZ1bmN0aW9uKCl7cmV0dXJuIGEucG9ydDIucG9zdE1lc3NhZ2UoMCl9fWVsc2Ugbj1mdW5jdGlvbigpe3JldHVybiBzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiB0KCl9KSwwKX19LHQuaW5pdGlhbGl6ZVNjaGVkdWxlcigpfSh0PWUuRXZlbnRMb29wfHwoZS5FdmVudExvb3A9e30pKSxlLmVucXVldWVJbW1lZGlhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZW5xdWV1ZUltbWVkaWF0ZShlKX19KG98fChvPXt9KSksZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUpe2Uub3ZlcnJpZGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5leHRlbmQodCxuKX0sZS5leHRlbmQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJvYmogaXMgbnVsbCBvciB1bmRlZmluZWRcIik7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIm9iaiBpcyBub3QgYW4gb2JqZWN0XCIpO2lmKG51bGw9PXQmJih0PXt9KSxcIm9iamVjdFwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwibmV3UHJvcGVydGllcyBpcyBub3QgYW4gb2JqZWN0XCIpO2lmKG51bGwhPXQpZm9yKHZhciBuIGluIHQpZVtuXT10W25dO3JldHVybiBlfX0oZS5PYmplY3RUb29sc3x8KGUuT2JqZWN0VG9vbHM9e30pKX0ob3x8KG89e30pKSxmdW5jdGlvbihlKXtlLmdldFJhbmRvbUludGVnZXJJblJhbmdlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKih0LWUpKX0sZS5nZXRSYW5kb21VVEYxNlN0cmluZ09mTGVuZ3RoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1cIlwiLHI9MDtyPHQ7cisrKXt2YXIgbz12b2lkIDA7ZG97bz1lLmdldFJhbmRvbUludGVnZXJJblJhbmdlKDAsMTExNDExMil9d2hpbGUobz49NTUyOTYmJm88PTU3MzQzKTtuKz1lLkVuY29kaW5nLkNvZGVQb2ludC5kZWNvZGVUb1N0cmluZyhvKX1yZXR1cm4gbn19KG98fChvPXt9KSksZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZvaWQgMD09PWUmJihlPTEwMjQpLHRoaXMub3V0cHV0QnVmZmVyQ2FwYWNpdHk9ZSx0aGlzLm91dHB1dFBvc2l0aW9uPTAsdGhpcy5vdXRwdXRTdHJpbmc9XCJcIix0aGlzLm91dHB1dEJ1ZmZlcj1uZXcgVWludDE2QXJyYXkodGhpcy5vdXRwdXRCdWZmZXJDYXBhY2l0eSl9cmV0dXJuIGUucHJvdG90eXBlLmFwcGVuZENoYXJDb2RlPWZ1bmN0aW9uKGUpe3RoaXMub3V0cHV0QnVmZmVyW3RoaXMub3V0cHV0UG9zaXRpb24rK109ZSx0aGlzLm91dHB1dFBvc2l0aW9uPT09dGhpcy5vdXRwdXRCdWZmZXJDYXBhY2l0eSYmdGhpcy5mbHVzaEJ1ZmZlclRvT3V0cHV0U3RyaW5nKCl9LGUucHJvdG90eXBlLmFwcGVuZENoYXJDb2Rlcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspdGhpcy5hcHBlbmRDaGFyQ29kZShlW3RdKX0sZS5wcm90b3R5cGUuYXBwZW5kU3RyaW5nPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl0aGlzLmFwcGVuZENoYXJDb2RlKGUuY2hhckNvZGVBdCh0KSl9LGUucHJvdG90eXBlLmFwcGVuZENvZGVQb2ludD1mdW5jdGlvbihlKXtpZihlPD02NTUzNSl0aGlzLmFwcGVuZENoYXJDb2RlKGUpO2Vsc2V7aWYoIShlPD0xMTE0MTExKSl0aHJvdyBuZXcgRXJyb3IoXCJhcHBlbmRDb2RlUG9pbnQ6IEEgY29kZSBwb2ludCBvZiBcIi5jb25jYXQoZSxcIiBjYW5ub3QgYmUgZW5jb2RlZCBpbiBVVEYtMTZcIikpO3RoaXMuYXBwZW5kQ2hhckNvZGUoNTUyOTYrKGUtNjU1MzY+Pj4xMCkpLHRoaXMuYXBwZW5kQ2hhckNvZGUoNTYzMjArKGUtNjU1MzYmMTAyMykpfX0sZS5wcm90b3R5cGUuZ2V0T3V0cHV0U3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmx1c2hCdWZmZXJUb091dHB1dFN0cmluZygpLHRoaXMub3V0cHV0U3RyaW5nfSxlLnByb3RvdHlwZS5mbHVzaEJ1ZmZlclRvT3V0cHV0U3RyaW5nPWZ1bmN0aW9uKCl7dGhpcy5vdXRwdXRQb3NpdGlvbj09PXRoaXMub3V0cHV0QnVmZmVyQ2FwYWNpdHk/dGhpcy5vdXRwdXRTdHJpbmcrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0aGlzLm91dHB1dEJ1ZmZlcik6dGhpcy5vdXRwdXRTdHJpbmcrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0aGlzLm91dHB1dEJ1ZmZlci5zdWJhcnJheSgwLHRoaXMub3V0cHV0UG9zaXRpb24pKSx0aGlzLm91dHB1dFBvc2l0aW9uPTB9LGV9KCk7ZS5TdHJpbmdCdWlsZGVyPXR9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5yZXN0YXJ0KCl9cmV0dXJuIHQucHJvdG90eXBlLnJlc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLnN0YXJ0VGltZT10LmdldFRpbWVzdGFtcCgpfSx0LnByb3RvdHlwZS5nZXRFbGFwc2VkVGltZT1mdW5jdGlvbigpe3JldHVybiB0LmdldFRpbWVzdGFtcCgpLXRoaXMuc3RhcnRUaW1lfSx0LnByb3RvdHlwZS5nZXRFbGFwc2VkVGltZUFuZFJlc3RhcnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldEVsYXBzZWRUaW1lKCk7cmV0dXJuIHRoaXMucmVzdGFydCgpLGV9LHQucHJvdG90eXBlLmxvZ0FuZFJlc3RhcnQ9ZnVuY3Rpb24odCxuKXt2b2lkIDA9PT1uJiYobj0hMCk7dmFyIHI9dGhpcy5nZXRFbGFwc2VkVGltZSgpLG89XCJcIi5jb25jYXQodCxcIjogXCIpLmNvbmNhdChyLnRvRml4ZWQoMyksXCJtc1wiKTtyZXR1cm4gZS5sb2cobyxuKSx0aGlzLnJlc3RhcnQoKSxyfSx0LmdldFRpbWVzdGFtcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRpbWVzdGFtcEZ1bmN8fHRoaXMuY3JlYXRlR2xvYmFsVGltZXN0YW1wRnVuY3Rpb24oKSx0aGlzLnRpbWVzdGFtcEZ1bmMoKX0sdC5nZXRNaWNyb3NlY29uZFRpbWVzdGFtcD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmZsb29yKDFlMyp0LmdldFRpbWVzdGFtcCgpKX0sdC5jcmVhdGVHbG9iYWxUaW1lc3RhbXBGdW5jdGlvbj1mdW5jdGlvbigpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBwcm9jZXNzJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBwcm9jZXNzLmhydGltZSl7dmFyIGU9MDt0aGlzLnRpbWVzdGFtcEZ1bmM9ZnVuY3Rpb24oKXt2YXIgdD1wcm9jZXNzLmhydGltZSgpLG49MWUzKnRbMF0rdFsxXS8xZTY7cmV0dXJuIGUrbn0sZT1EYXRlLm5vdygpLXRoaXMudGltZXN0YW1wRnVuYygpfWVsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIGNocm9tZSYmY2hyb21lLkludGVydmFsKXt2YXIgdD1EYXRlLm5vdygpLG49bmV3IGNocm9tZS5JbnRlcnZhbDtuLnN0YXJ0KCksdGhpcy50aW1lc3RhbXBGdW5jPWZ1bmN0aW9uKCl7cmV0dXJuIHQrbi5taWNyb3NlY29uZHMoKS8xZTN9fWVsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3cpe3ZhciByPURhdGUubm93KCktcGVyZm9ybWFuY2Uubm93KCk7dGhpcy50aW1lc3RhbXBGdW5jPWZ1bmN0aW9uKCl7cmV0dXJuIHIrcGVyZm9ybWFuY2Uubm93KCl9fWVsc2UgRGF0ZS5ub3c/dGhpcy50aW1lc3RhbXBGdW5jPWZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93KCl9OnRoaXMudGltZXN0YW1wRnVuYz1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfX0sdH0oKTtlLlRpbWVyPXR9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZvaWQgMD09PXQmJih0PSEwKSx0aGlzLk1pbmltdW1TZXF1ZW5jZUxlbmd0aD00LHRoaXMuTWF4aW11bVNlcXVlbmNlTGVuZ3RoPTMxLHRoaXMuTWF4aW11bU1hdGNoRGlzdGFuY2U9MzI3NjcsdGhpcy5QcmVmaXhIYXNoVGFibGVTaXplPTY1NTM3LHRoaXMuaW5wdXRCdWZmZXJTdHJlYW1PZmZzZXQ9MSx0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBVaW50MzJBcnJheT90aGlzLnByZWZpeEhhc2hUYWJsZT1uZXcgZS5Db21wcmVzc29yQ3VzdG9tSGFzaFRhYmxlKHRoaXMuUHJlZml4SGFzaFRhYmxlU2l6ZSk6dGhpcy5wcmVmaXhIYXNoVGFibGU9bmV3IGUuQ29tcHJlc3NvclNpbXBsZUhhc2hUYWJsZSh0aGlzLlByZWZpeEhhc2hUYWJsZVNpemUpfXJldHVybiB0LnByb3RvdHlwZS5jb21wcmVzc0Jsb2NrPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcImNvbXByZXNzQmxvY2s6IHVuZGVmaW5lZCBvciBudWxsIGlucHV0IHJlY2VpdmVkXCIpO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0JiYodD1lLmVuY29kZVVURjgodCkpLHQ9ZS5CdWZmZXJUb29scy5jb252ZXJ0VG9VaW50OEFycmF5SWZOZWVkZWQodCksdGhpcy5jb21wcmVzc1V0ZjhCbG9jayh0KX0sdC5wcm90b3R5cGUuY29tcHJlc3NVdGY4QmxvY2s9ZnVuY3Rpb24oZSl7aWYoIWV8fDA9PWUubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTt2YXIgdD10aGlzLmNyb3BBbmRBZGROZXdCeXRlc1RvSW5wdXRCdWZmZXIoZSksbj10aGlzLmlucHV0QnVmZmVyLHI9dGhpcy5pbnB1dEJ1ZmZlci5sZW5ndGg7dGhpcy5vdXRwdXRCdWZmZXI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgpLHRoaXMub3V0cHV0QnVmZmVyUG9zaXRpb249MDtmb3IodmFyIG89MCxpPXQ7aTxyO2krKyl7dmFyIGE9bltpXSxsPWk8bztpZihpPnItdGhpcy5NaW5pbXVtU2VxdWVuY2VMZW5ndGgpbHx8dGhpcy5vdXRwdXRSYXdCeXRlKGEpO2Vsc2V7dmFyIHM9dGhpcy5nZXRCdWNrZXRJbmRleEZvclByZWZpeChpKTtpZighbCl7dmFyIGM9dGhpcy5maW5kTG9uZ2VzdE1hdGNoKGkscyk7bnVsbCE9YyYmKHRoaXMub3V0cHV0UG9pbnRlckJ5dGVzKGMubGVuZ3RoLGMuZGlzdGFuY2UpLG89aStjLmxlbmd0aCxsPSEwKX1sfHx0aGlzLm91dHB1dFJhd0J5dGUoYSk7dmFyIHU9dGhpcy5pbnB1dEJ1ZmZlclN0cmVhbU9mZnNldCtpO3RoaXMucHJlZml4SGFzaFRhYmxlLmFkZFZhbHVlVG9CdWNrZXQocyx1KX19cmV0dXJuIHRoaXMub3V0cHV0QnVmZmVyLnN1YmFycmF5KDAsdGhpcy5vdXRwdXRCdWZmZXJQb3NpdGlvbil9LHQucHJvdG90eXBlLmZpbmRMb25nZXN0TWF0Y2g9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnByZWZpeEhhc2hUYWJsZS5nZXRBcnJheVNlZ21lbnRGb3JCdWNrZXRJbmRleCh0LHRoaXMucmV1c2FibGVBcnJheVNlZ21lbnRPYmplY3QpO2lmKG51bGw9PW4pcmV0dXJuIG51bGw7Zm9yKHZhciByLG89dGhpcy5pbnB1dEJ1ZmZlcixpPTAsYT0wO2E8bi5sZW5ndGg7YSsrKXt2YXIgbCxzPW4uZ2V0SW5SZXZlcnNlZE9yZGVyKGEpLXRoaXMuaW5wdXRCdWZmZXJTdHJlYW1PZmZzZXQsYz1lLXM7aWYobD12b2lkIDA9PT1yP3RoaXMuTWluaW11bVNlcXVlbmNlTGVuZ3RoLTE6cjwxMjgmJmM+PTEyOD9pKyhpPj4+MSk6aSxjPnRoaXMuTWF4aW11bU1hdGNoRGlzdGFuY2V8fGw+PXRoaXMuTWF4aW11bVNlcXVlbmNlTGVuZ3RofHxlK2w+PW8ubGVuZ3RoKWJyZWFrO2lmKG9bcytsXT09PW9bZStsXSlmb3IodmFyIHU9MDs7dSsrKXtpZihlK3U9PT1vLmxlbmd0aHx8b1tzK3VdIT09b1tlK3VdKXt1PmwmJihyPWMsaT11KTticmVha31pZih1PT09dGhpcy5NYXhpbXVtU2VxdWVuY2VMZW5ndGgpcmV0dXJue2Rpc3RhbmNlOmMsbGVuZ3RoOnRoaXMuTWF4aW11bVNlcXVlbmNlTGVuZ3RofX19cmV0dXJuIHZvaWQgMCE9PXI/e2Rpc3RhbmNlOnIsbGVuZ3RoOml9Om51bGx9LHQucHJvdG90eXBlLmdldEJ1Y2tldEluZGV4Rm9yUHJlZml4PWZ1bmN0aW9uKGUpe3JldHVybig3ODgwNTk5KnRoaXMuaW5wdXRCdWZmZXJbZV0rMzk2MDEqdGhpcy5pbnB1dEJ1ZmZlcltlKzFdKzE5OSp0aGlzLmlucHV0QnVmZmVyW2UrMl0rdGhpcy5pbnB1dEJ1ZmZlcltlKzNdKSV0aGlzLlByZWZpeEhhc2hUYWJsZVNpemV9LHQucHJvdG90eXBlLm91dHB1dFBvaW50ZXJCeXRlcz1mdW5jdGlvbihlLHQpe3Q8MTI4Pyh0aGlzLm91dHB1dFJhd0J5dGUoMTkyfGUpLHRoaXMub3V0cHV0UmF3Qnl0ZSh0KSk6KHRoaXMub3V0cHV0UmF3Qnl0ZSgyMjR8ZSksdGhpcy5vdXRwdXRSYXdCeXRlKHQ+Pj44KSx0aGlzLm91dHB1dFJhd0J5dGUoMjU1JnQpKX0sdC5wcm90b3R5cGUub3V0cHV0UmF3Qnl0ZT1mdW5jdGlvbihlKXt0aGlzLm91dHB1dEJ1ZmZlclt0aGlzLm91dHB1dEJ1ZmZlclBvc2l0aW9uKytdPWV9LHQucHJvdG90eXBlLmNyb3BBbmRBZGROZXdCeXRlc1RvSW5wdXRCdWZmZXI9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dGhpcy5pbnB1dEJ1ZmZlcilyZXR1cm4gdGhpcy5pbnB1dEJ1ZmZlcj10LDA7dmFyIG49TWF0aC5taW4odGhpcy5pbnB1dEJ1ZmZlci5sZW5ndGgsdGhpcy5NYXhpbXVtTWF0Y2hEaXN0YW5jZSkscj10aGlzLmlucHV0QnVmZmVyLmxlbmd0aC1uO3JldHVybiB0aGlzLmlucHV0QnVmZmVyPWUuQ29tcHJlc3Npb25Db21tb24uZ2V0Q3JvcHBlZEFuZEFwcGVuZGVkQnl0ZUFycmF5KHRoaXMuaW5wdXRCdWZmZXIscixuLHQpLHRoaXMuaW5wdXRCdWZmZXJTdHJlYW1PZmZzZXQrPXIsbn0sdH0oKTtlLkNvbXByZXNzb3I9dH0ob3x8KG89e30pKSxmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dGhpcy5taW5pbXVtQnVja2V0Q2FwYWNpdHk9NCx0aGlzLm1heGltdW1CdWNrZXRDYXBhY2l0eT02NCx0aGlzLmJ1Y2tldExvY2F0b3JzPW5ldyBVaW50MzJBcnJheSgyKmUpLHRoaXMuc3RvcmFnZT1uZXcgVWludDMyQXJyYXkoMiplKSx0aGlzLnN0b3JhZ2VJbmRleD0xfXJldHVybiB0LnByb3RvdHlwZS5hZGRWYWx1ZVRvQnVja2V0PWZ1bmN0aW9uKHQsbil7dDw8PTEsdGhpcy5zdG9yYWdlSW5kZXg+PXRoaXMuc3RvcmFnZS5sZW5ndGg+Pj4xJiZ0aGlzLmNvbXBhY3QoKTt2YXIgcixvPXRoaXMuYnVja2V0TG9jYXRvcnNbdF07aWYoMD09PW8pbz10aGlzLnN0b3JhZ2VJbmRleCxyPTEsdGhpcy5zdG9yYWdlW3RoaXMuc3RvcmFnZUluZGV4XT1uLHRoaXMuc3RvcmFnZUluZGV4Kz10aGlzLm1pbmltdW1CdWNrZXRDYXBhY2l0eTtlbHNleyhyPXRoaXMuYnVja2V0TG9jYXRvcnNbdCsxXSk9PT10aGlzLm1heGltdW1CdWNrZXRDYXBhY2l0eS0xJiYocj10aGlzLnRydW5jYXRlQnVja2V0VG9OZXdlckVsZW1lbnRzKG8scix0aGlzLm1heGltdW1CdWNrZXRDYXBhY2l0eS8yKSk7dmFyIGk9bytyOzA9PT10aGlzLnN0b3JhZ2VbaV0/KHRoaXMuc3RvcmFnZVtpXT1uLGk9PT10aGlzLnN0b3JhZ2VJbmRleCYmKHRoaXMuc3RvcmFnZUluZGV4Kz1yKSk6KGUuQXJyYXlUb29scy5jb3B5RWxlbWVudHModGhpcy5zdG9yYWdlLG8sdGhpcy5zdG9yYWdlLHRoaXMuc3RvcmFnZUluZGV4LHIpLG89dGhpcy5zdG9yYWdlSW5kZXgsdGhpcy5zdG9yYWdlSW5kZXgrPXIsdGhpcy5zdG9yYWdlW3RoaXMuc3RvcmFnZUluZGV4KytdPW4sdGhpcy5zdG9yYWdlSW5kZXgrPXIpLHIrK310aGlzLmJ1Y2tldExvY2F0b3JzW3RdPW8sdGhpcy5idWNrZXRMb2NhdG9yc1t0KzFdPXJ9LHQucHJvdG90eXBlLnRydW5jYXRlQnVja2V0VG9OZXdlckVsZW1lbnRzPWZ1bmN0aW9uKHQsbixyKXt2YXIgbz10K24tcjtyZXR1cm4gZS5BcnJheVRvb2xzLmNvcHlFbGVtZW50cyh0aGlzLnN0b3JhZ2Usbyx0aGlzLnN0b3JhZ2UsdCxyKSxlLkFycmF5VG9vbHMuemVyb0VsZW1lbnRzKHRoaXMuc3RvcmFnZSx0K3Isbi1yKSxyfSx0LnByb3RvdHlwZS5jb21wYWN0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5idWNrZXRMb2NhdG9ycyxuPXRoaXMuc3RvcmFnZTt0aGlzLmJ1Y2tldExvY2F0b3JzPW5ldyBVaW50MzJBcnJheSh0aGlzLmJ1Y2tldExvY2F0b3JzLmxlbmd0aCksdGhpcy5zdG9yYWdlSW5kZXg9MTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrPTIpe3ZhciBvPXRbcisxXTswIT09byYmKHRoaXMuYnVja2V0TG9jYXRvcnNbcl09dGhpcy5zdG9yYWdlSW5kZXgsdGhpcy5idWNrZXRMb2NhdG9yc1tyKzFdPW8sdGhpcy5zdG9yYWdlSW5kZXgrPU1hdGgubWF4KE1hdGgubWluKDIqbyx0aGlzLm1heGltdW1CdWNrZXRDYXBhY2l0eSksdGhpcy5taW5pbXVtQnVja2V0Q2FwYWNpdHkpKX1mb3IodGhpcy5zdG9yYWdlPW5ldyBVaW50MzJBcnJheSg4KnRoaXMuc3RvcmFnZUluZGV4KSxyPTA7cjx0Lmxlbmd0aDtyKz0yKXt2YXIgaT10W3JdO2lmKDAhPT1pKXt2YXIgYT10aGlzLmJ1Y2tldExvY2F0b3JzW3JdLGw9dGhpcy5idWNrZXRMb2NhdG9yc1tyKzFdO2UuQXJyYXlUb29scy5jb3B5RWxlbWVudHMobixpLHRoaXMuc3RvcmFnZSxhLGwpfX19LHQucHJvdG90eXBlLmdldEFycmF5U2VnbWVudEZvckJ1Y2tldEluZGV4PWZ1bmN0aW9uKHQsbil7dDw8PTE7dmFyIHI9dGhpcy5idWNrZXRMb2NhdG9yc1t0XTtyZXR1cm4gMD09PXI/bnVsbDoodm9pZCAwPT09biYmKG49bmV3IGUuQXJyYXlTZWdtZW50KHRoaXMuc3RvcmFnZSxyLHRoaXMuYnVja2V0TG9jYXRvcnNbdCsxXSkpLG4pfSx0LnByb3RvdHlwZS5nZXRVc2VkQnVja2V0Q291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcihlLkFycmF5VG9vbHMuY291bnROb256ZXJvVmFsdWVzSW5BcnJheSh0aGlzLmJ1Y2tldExvY2F0b3JzKS8yKX0sdC5wcm90b3R5cGUuZ2V0VG90YWxFbGVtZW50Q291bnQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PTA7dDx0aGlzLmJ1Y2tldExvY2F0b3JzLmxlbmd0aDt0Kz0yKWUrPXRoaXMuYnVja2V0TG9jYXRvcnNbdCsxXTtyZXR1cm4gZX0sdH0oKTtlLkNvbXByZXNzb3JDdXN0b21IYXNoVGFibGU9dH0ob3x8KG89e30pKSxmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dGhpcy5tYXhpbXVtQnVja2V0Q2FwYWNpdHk9NjQsdGhpcy5idWNrZXRzPW5ldyBBcnJheShlKX1yZXR1cm4gdC5wcm90b3R5cGUuYWRkVmFsdWVUb0J1Y2tldD1mdW5jdGlvbih0LG4pe3ZhciByPXRoaXMuYnVja2V0c1t0XTt2b2lkIDA9PT1yP3RoaXMuYnVja2V0c1t0XT1bbl06KHIubGVuZ3RoPT09dGhpcy5tYXhpbXVtQnVja2V0Q2FwYWNpdHktMSYmZS5BcnJheVRvb2xzLnRydW5jYXRlU3RhcnRpbmdFbGVtZW50cyhyLHRoaXMubWF4aW11bUJ1Y2tldENhcGFjaXR5LzIpLHIucHVzaChuKSl9LHQucHJvdG90eXBlLmdldEFycmF5U2VnbWVudEZvckJ1Y2tldEluZGV4PWZ1bmN0aW9uKHQsbil7dmFyIHI9dGhpcy5idWNrZXRzW3RdO3JldHVybiB2b2lkIDA9PT1yP251bGw6KHZvaWQgMD09PW4mJihuPW5ldyBlLkFycmF5U2VnbWVudChyLDAsci5sZW5ndGgpKSxuKX0sdC5wcm90b3R5cGUuZ2V0VXNlZEJ1Y2tldENvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIGUuQXJyYXlUb29scy5jb3VudE5vbnplcm9WYWx1ZXNJbkFycmF5KHRoaXMuYnVja2V0cyl9LHQucHJvdG90eXBlLmdldFRvdGFsRWxlbWVudENvdW50PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTAsdD0wO3Q8dGhpcy5idWNrZXRzLmxlbmd0aDt0Kyspdm9pZCAwIT09dGhpcy5idWNrZXRzW3RdJiYoZSs9dGhpcy5idWNrZXRzW3RdLmxlbmd0aCk7cmV0dXJuIGV9LHR9KCk7ZS5Db21wcmVzc29yU2ltcGxlSGFzaFRhYmxlPXR9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5NYXhpbXVtTWF0Y2hEaXN0YW5jZT0zMjc2Nyx0aGlzLm91dHB1dFBvc2l0aW9uPTB9cmV0dXJuIHQucHJvdG90eXBlLmRlY29tcHJlc3NCbG9ja1RvU3RyaW5nPWZ1bmN0aW9uKHQpe3JldHVybiB0PWUuQnVmZmVyVG9vbHMuY29udmVydFRvVWludDhBcnJheUlmTmVlZGVkKHQpLGUuZGVjb2RlVVRGOCh0aGlzLmRlY29tcHJlc3NCbG9jayh0KSl9LHQucHJvdG90eXBlLmRlY29tcHJlc3NCbG9jaz1mdW5jdGlvbih0KXt0aGlzLmlucHV0QnVmZmVyUmVtYWluZGVyJiYodD1lLkFycmF5VG9vbHMuY29uY2F0VWludDhBcnJheXMoW3RoaXMuaW5wdXRCdWZmZXJSZW1haW5kZXIsdF0pLHRoaXMuaW5wdXRCdWZmZXJSZW1haW5kZXI9dm9pZCAwKTtmb3IodmFyIG49dGhpcy5jcm9wT3V0cHV0QnVmZmVyVG9XaW5kb3dBbmRJbml0aWFsaXplKE1hdGgubWF4KDQqdC5sZW5ndGgsMTAyNCkpLHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe3ZhciBpPXRbcl07aWYoaT4+PjY9PTMpe3ZhciBhPWk+Pj41O2lmKHI9PW8tMXx8cj09by0yJiY3PT1hKXt0aGlzLmlucHV0QnVmZmVyUmVtYWluZGVyPXQuc3ViYXJyYXkocik7YnJlYWt9aWYodFtyKzFdPj4+Nz09MSl0aGlzLm91dHB1dEJ5dGUoaSk7ZWxzZXt2YXIgbD0zMSZpLHM9dm9pZCAwOzY9PWE/KHM9dFtyKzFdLHIrPTEpOihzPXRbcisxXTw8OHx0W3IrMl0scis9Mik7Zm9yKHZhciBjPXRoaXMub3V0cHV0UG9zaXRpb24tcyx1PTA7dTxsO3UrKyl0aGlzLm91dHB1dEJ5dGUodGhpcy5vdXRwdXRCdWZmZXJbYyt1XSl9fWVsc2UgdGhpcy5vdXRwdXRCeXRlKGkpfXJldHVybiB0aGlzLnJvbGxCYWNrSWZPdXRwdXRCdWZmZXJFbmRzV2l0aEFUcnVuY2F0ZWRNdWx0aWJ5dGVTZXF1ZW5jZSgpLGUuQ29tcHJlc3Npb25Db21tb24uZ2V0Q3JvcHBlZEJ1ZmZlcih0aGlzLm91dHB1dEJ1ZmZlcixuLHRoaXMub3V0cHV0UG9zaXRpb24tbil9LHQucHJvdG90eXBlLm91dHB1dEJ5dGU9ZnVuY3Rpb24odCl7dGhpcy5vdXRwdXRQb3NpdGlvbj09PXRoaXMub3V0cHV0QnVmZmVyLmxlbmd0aCYmKHRoaXMub3V0cHV0QnVmZmVyPWUuQXJyYXlUb29scy5kb3VibGVCeXRlQXJyYXlDYXBhY2l0eSh0aGlzLm91dHB1dEJ1ZmZlcikpLHRoaXMub3V0cHV0QnVmZmVyW3RoaXMub3V0cHV0UG9zaXRpb24rK109dH0sdC5wcm90b3R5cGUuY3JvcE91dHB1dEJ1ZmZlclRvV2luZG93QW5kSW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtpZighdGhpcy5vdXRwdXRCdWZmZXIpcmV0dXJuIHRoaXMub3V0cHV0QnVmZmVyPW5ldyBVaW50OEFycmF5KHQpLDA7dmFyIG49TWF0aC5taW4odGhpcy5vdXRwdXRQb3NpdGlvbix0aGlzLk1heGltdW1NYXRjaERpc3RhbmNlKTtpZih0aGlzLm91dHB1dEJ1ZmZlcj1lLkNvbXByZXNzaW9uQ29tbW9uLmdldENyb3BwZWRCdWZmZXIodGhpcy5vdXRwdXRCdWZmZXIsdGhpcy5vdXRwdXRQb3NpdGlvbi1uLG4sdCksdGhpcy5vdXRwdXRQb3NpdGlvbj1uLHRoaXMub3V0cHV0QnVmZmVyUmVtYWluZGVyKXtmb3IodmFyIHI9MDtyPHRoaXMub3V0cHV0QnVmZmVyUmVtYWluZGVyLmxlbmd0aDtyKyspdGhpcy5vdXRwdXRCeXRlKHRoaXMub3V0cHV0QnVmZmVyUmVtYWluZGVyW3JdKTt0aGlzLm91dHB1dEJ1ZmZlclJlbWFpbmRlcj12b2lkIDB9cmV0dXJuIG59LHQucHJvdG90eXBlLnJvbGxCYWNrSWZPdXRwdXRCdWZmZXJFbmRzV2l0aEFUcnVuY2F0ZWRNdWx0aWJ5dGVTZXF1ZW5jZT1mdW5jdGlvbigpe2Zvcih2YXIgZT0xO2U8PTQmJnRoaXMub3V0cHV0UG9zaXRpb24tZT49MDtlKyspe3ZhciB0PXRoaXMub3V0cHV0QnVmZmVyW3RoaXMub3V0cHV0UG9zaXRpb24tZV07aWYoZTw0JiZ0Pj4+Mz09MzB8fGU8MyYmdD4+PjQ9PTE0fHxlPDImJnQ+Pj41PT02KXJldHVybiB0aGlzLm91dHB1dEJ1ZmZlclJlbWFpbmRlcj10aGlzLm91dHB1dEJ1ZmZlci5zdWJhcnJheSh0aGlzLm91dHB1dFBvc2l0aW9uLWUsdGhpcy5vdXRwdXRQb3NpdGlvbiksdm9pZCh0aGlzLm91dHB1dFBvc2l0aW9uLT1lKX19LHR9KCk7ZS5EZWNvbXByZXNzb3I9dH0ob3x8KG89e30pKSxmdW5jdGlvbihlKXshZnVuY3Rpb24odCl7IWZ1bmN0aW9uKHQpe3ZhciBuPW5ldyBVaW50OEFycmF5KFs2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDQzLDQ3XSkscj1uZXcgVWludDhBcnJheShbMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDYyLDI1NSwyNTUsMjU1LDYzLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDI1NSwyNTUsMjU1LDAsMjU1LDI1NSwyNTUsMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSwyNTUsMjU1LDI1NSwyNTVdKTt0LmVuY29kZT1mdW5jdGlvbihuKXtyZXR1cm4gbiYmMCE9bi5sZW5ndGg/ZS5ydW5uaW5nSW5Ob2RlSlMoKT9lLkJ1ZmZlclRvb2xzLnVpbnQ4QXJyYXlUb0J1ZmZlcihuKS50b1N0cmluZyhcImJhc2U2NFwiKTp0LmVuY29kZVdpdGhKUyhuKTpcIlwifSx0LmRlY29kZT1mdW5jdGlvbihuKXtyZXR1cm4gbj9lLnJ1bm5pbmdJbk5vZGVKUygpP2UuQnVmZmVyVG9vbHMuYnVmZmVyVG9VaW50OEFycmF5KEJ1ZmZlci5mcm9tKG4sXCJiYXNlNjRcIikpOnQuZGVjb2RlV2l0aEpTKG4pOm5ldyBVaW50OEFycmF5KDApfSx0LmVuY29kZVdpdGhKUz1mdW5jdGlvbih0LHIpe2lmKHZvaWQgMD09PXImJihyPSEwKSwhdHx8MD09dC5sZW5ndGgpcmV0dXJuXCJcIjtmb3IodmFyIG8saT1uLGE9bmV3IGUuU3RyaW5nQnVpbGRlcixsPTAscz10Lmxlbmd0aDtsPHM7bCs9MylsPD1zLTM/KG89dFtsXTw8MTZ8dFtsKzFdPDw4fHRbbCsyXSxhLmFwcGVuZENoYXJDb2RlKGlbbz4+PjE4JjYzXSksYS5hcHBlbmRDaGFyQ29kZShpW28+Pj4xMiY2M10pLGEuYXBwZW5kQ2hhckNvZGUoaVtvPj4+NiY2M10pLGEuYXBwZW5kQ2hhckNvZGUoaVs2MyZvXSksbz0wKTpsPT09cy0yPyhvPXRbbF08PDE2fHRbbCsxXTw8OCxhLmFwcGVuZENoYXJDb2RlKGlbbz4+PjE4JjYzXSksYS5hcHBlbmRDaGFyQ29kZShpW28+Pj4xMiY2M10pLGEuYXBwZW5kQ2hhckNvZGUoaVtvPj4+NiY2M10pLHImJmEuYXBwZW5kQ2hhckNvZGUoNjEpKTpsPT09cy0xJiYobz10W2xdPDwxNixhLmFwcGVuZENoYXJDb2RlKGlbbz4+PjE4JjYzXSksYS5hcHBlbmRDaGFyQ29kZShpW28+Pj4xMiY2M10pLHImJihhLmFwcGVuZENoYXJDb2RlKDYxKSxhLmFwcGVuZENoYXJDb2RlKDYxKSkpO3JldHVybiBhLmdldE91dHB1dFN0cmluZygpfSx0LmRlY29kZVdpdGhKUz1mdW5jdGlvbihlLHQpe2lmKCFlfHwwPT1lLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7dmFyIG49ZS5sZW5ndGglNDtpZigxPT09bil0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEJhc2U2NCBzdHJpbmc6IGxlbmd0aCAlIDQgPT0gMVwiKTsyPT09bj9lKz1cIj09XCI6Mz09PW4mJihlKz1cIj1cIiksdHx8KHQ9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgpKTtmb3IodmFyIG89MCxpPWUubGVuZ3RoLGE9MDthPGk7YSs9NCl7dmFyIGw9cltlLmNoYXJDb2RlQXQoYSldPDwxOHxyW2UuY2hhckNvZGVBdChhKzEpXTw8MTJ8cltlLmNoYXJDb2RlQXQoYSsyKV08PDZ8cltlLmNoYXJDb2RlQXQoYSszKV07dFtvKytdPWw+Pj4xNiYyNTUsdFtvKytdPWw+Pj44JjI1NSx0W28rK109MjU1Jmx9cmV0dXJuIDYxPT1lLmNoYXJDb2RlQXQoaS0xKSYmby0tLDYxPT1lLmNoYXJDb2RlQXQoaS0yKSYmby0tLHQuc3ViYXJyYXkoMCxvKX19KHQuQmFzZTY0fHwodC5CYXNlNjQ9e30pKX0oZS5FbmNvZGluZ3x8KGUuRW5jb2Rpbmc9e30pKX0ob3x8KG89e30pKSxmdW5jdGlvbihlKXshZnVuY3Rpb24odCl7IWZ1bmN0aW9uKHQpe3QuZW5jb2RlPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkJpbmFyeVN0cmluZy5lbmNvZGU6IHVuZGVmaW5lZCBvciBudWxsIGlucHV0IHJlY2VpdmVkXCIpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm5cIlwiO2Zvcih2YXIgbj10Lmxlbmd0aCxyPW5ldyBlLlN0cmluZ0J1aWxkZXIsbz0wLGk9MSxhPTA7YTxuO2ErPTIpe3ZhciBsO2w9YT09bi0xP3RbYV08PDg6dFthXTw8OHx0W2ErMV0sci5hcHBlbmRDaGFyQ29kZShvPDwxNi1pfGw+Pj5pKSxvPWwmKDE8PGkpLTEsMTU9PT1pPyhyLmFwcGVuZENoYXJDb2RlKG8pLG89MCxpPTEpOmkrPTEsYT49bi0yJiZyLmFwcGVuZENoYXJDb2RlKG88PDE2LWkpfXJldHVybiByLmFwcGVuZENoYXJDb2RlKDMyNzY4fG4lMiksci5nZXRPdXRwdXRTdHJpbmcoKX0sdC5kZWNvZGU9ZnVuY3Rpb24oZSl7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkJpbmFyeVN0cmluZy5kZWNvZGU6IGludmFsaWQgaW5wdXQgdHlwZVwiKTtpZihcIlwiPT1lKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtmb3IodmFyIHQ9bmV3IFVpbnQ4QXJyYXkoMyplLmxlbmd0aCksbj0wLHI9ZnVuY3Rpb24oZSl7dFtuKytdPWU+Pj44LHRbbisrXT0yNTUmZX0sbz0wLGk9MCxhPTA7YTxlLmxlbmd0aDthKyspe3ZhciBsPWUuY2hhckNvZGVBdChhKTtsPj0zMjc2OD8oMzI3Njk9PWwmJm4tLSxpPTApOigwPT1pP289bDoocihvPDxpfGw+Pj4xNS1pKSxvPWwmKDE8PDE1LWkpLTEpLDE1PT1pP2k9MDppKz0xKX1yZXR1cm4gdC5zdWJhcnJheSgwLG4pfX0odC5CaW5hcnlTdHJpbmd8fCh0LkJpbmFyeVN0cmluZz17fSkpfShlLkVuY29kaW5nfHwoZS5FbmNvZGluZz17fSkpfShvfHwobz17fSkpLGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXshZnVuY3Rpb24oZSl7ZS5lbmNvZGVGcm9tU3RyaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5jaGFyQ29kZUF0KHQpO2lmKG48NTUyOTZ8fG4+NTYzMTkpcmV0dXJuIG47dmFyIHI9ZS5jaGFyQ29kZUF0KHQrMSk7aWYocj49NTYzMjAmJnI8PTU3MzQzKXJldHVybiByLTU2MzIwKyhuLTU1Mjk2PDwxMCkrNjU1MzY7dGhyb3cgbmV3IEVycm9yKFwiZ2V0VW5pY29kZUNvZGVQb2ludDogUmVjZWl2ZWQgYSBsZWFkIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIsIGNoYXIgY29kZSBcIi5jb25jYXQobixcIiwgZm9sbG93ZWQgYnkgXCIpLmNvbmNhdChyLFwiLCB3aGljaCBpcyBub3QgYSB0cmFpbGluZyBzdXJyb2dhdGUgY2hhcmFjdGVyIGNvZGUuXCIpKX0sZS5kZWNvZGVUb1N0cmluZz1mdW5jdGlvbihlKXtpZihlPD02NTUzNSlyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlKTtpZihlPD0xMTE0MTExKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2KyhlLTY1NTM2Pj4+MTApLDU2MzIwKyhlLTY1NTM2JjEwMjMpKTt0aHJvdyBuZXcgRXJyb3IoXCJnZXRTdHJpbmdGcm9tVW5pY29kZUNvZGVQb2ludDogQSBjb2RlIHBvaW50IG9mIFwiLmNvbmNhdChlLFwiIGNhbm5vdCBiZSBlbmNvZGVkIGluIFVURi0xNlwiKSl9fShlLkNvZGVQb2ludHx8KGUuQ29kZVBvaW50PXt9KSl9KGUuRW5jb2Rpbmd8fChlLkVuY29kaW5nPXt9KSl9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXt2YXIgdD1bXCIwMDBcIixcIjAwMVwiLFwiMDAyXCIsXCIwMDNcIixcIjAwNFwiLFwiMDA1XCIsXCIwMDZcIixcIjAwN1wiLFwiMDA4XCIsXCIwMDlcIixcIjAxMFwiLFwiMDExXCIsXCIwMTJcIixcIjAxM1wiLFwiMDE0XCIsXCIwMTVcIixcIjAxNlwiLFwiMDE3XCIsXCIwMThcIixcIjAxOVwiLFwiMDIwXCIsXCIwMjFcIixcIjAyMlwiLFwiMDIzXCIsXCIwMjRcIixcIjAyNVwiLFwiMDI2XCIsXCIwMjdcIixcIjAyOFwiLFwiMDI5XCIsXCIwMzBcIixcIjAzMVwiLFwiMDMyXCIsXCIwMzNcIixcIjAzNFwiLFwiMDM1XCIsXCIwMzZcIixcIjAzN1wiLFwiMDM4XCIsXCIwMzlcIixcIjA0MFwiLFwiMDQxXCIsXCIwNDJcIixcIjA0M1wiLFwiMDQ0XCIsXCIwNDVcIixcIjA0NlwiLFwiMDQ3XCIsXCIwNDhcIixcIjA0OVwiLFwiMDUwXCIsXCIwNTFcIixcIjA1MlwiLFwiMDUzXCIsXCIwNTRcIixcIjA1NVwiLFwiMDU2XCIsXCIwNTdcIixcIjA1OFwiLFwiMDU5XCIsXCIwNjBcIixcIjA2MVwiLFwiMDYyXCIsXCIwNjNcIixcIjA2NFwiLFwiMDY1XCIsXCIwNjZcIixcIjA2N1wiLFwiMDY4XCIsXCIwNjlcIixcIjA3MFwiLFwiMDcxXCIsXCIwNzJcIixcIjA3M1wiLFwiMDc0XCIsXCIwNzVcIixcIjA3NlwiLFwiMDc3XCIsXCIwNzhcIixcIjA3OVwiLFwiMDgwXCIsXCIwODFcIixcIjA4MlwiLFwiMDgzXCIsXCIwODRcIixcIjA4NVwiLFwiMDg2XCIsXCIwODdcIixcIjA4OFwiLFwiMDg5XCIsXCIwOTBcIixcIjA5MVwiLFwiMDkyXCIsXCIwOTNcIixcIjA5NFwiLFwiMDk1XCIsXCIwOTZcIixcIjA5N1wiLFwiMDk4XCIsXCIwOTlcIixcIjEwMFwiLFwiMTAxXCIsXCIxMDJcIixcIjEwM1wiLFwiMTA0XCIsXCIxMDVcIixcIjEwNlwiLFwiMTA3XCIsXCIxMDhcIixcIjEwOVwiLFwiMTEwXCIsXCIxMTFcIixcIjExMlwiLFwiMTEzXCIsXCIxMTRcIixcIjExNVwiLFwiMTE2XCIsXCIxMTdcIixcIjExOFwiLFwiMTE5XCIsXCIxMjBcIixcIjEyMVwiLFwiMTIyXCIsXCIxMjNcIixcIjEyNFwiLFwiMTI1XCIsXCIxMjZcIixcIjEyN1wiLFwiMTI4XCIsXCIxMjlcIixcIjEzMFwiLFwiMTMxXCIsXCIxMzJcIixcIjEzM1wiLFwiMTM0XCIsXCIxMzVcIixcIjEzNlwiLFwiMTM3XCIsXCIxMzhcIixcIjEzOVwiLFwiMTQwXCIsXCIxNDFcIixcIjE0MlwiLFwiMTQzXCIsXCIxNDRcIixcIjE0NVwiLFwiMTQ2XCIsXCIxNDdcIixcIjE0OFwiLFwiMTQ5XCIsXCIxNTBcIixcIjE1MVwiLFwiMTUyXCIsXCIxNTNcIixcIjE1NFwiLFwiMTU1XCIsXCIxNTZcIixcIjE1N1wiLFwiMTU4XCIsXCIxNTlcIixcIjE2MFwiLFwiMTYxXCIsXCIxNjJcIixcIjE2M1wiLFwiMTY0XCIsXCIxNjVcIixcIjE2NlwiLFwiMTY3XCIsXCIxNjhcIixcIjE2OVwiLFwiMTcwXCIsXCIxNzFcIixcIjE3MlwiLFwiMTczXCIsXCIxNzRcIixcIjE3NVwiLFwiMTc2XCIsXCIxNzdcIixcIjE3OFwiLFwiMTc5XCIsXCIxODBcIixcIjE4MVwiLFwiMTgyXCIsXCIxODNcIixcIjE4NFwiLFwiMTg1XCIsXCIxODZcIixcIjE4N1wiLFwiMTg4XCIsXCIxODlcIixcIjE5MFwiLFwiMTkxXCIsXCIxOTJcIixcIjE5M1wiLFwiMTk0XCIsXCIxOTVcIixcIjE5NlwiLFwiMTk3XCIsXCIxOThcIixcIjE5OVwiLFwiMjAwXCIsXCIyMDFcIixcIjIwMlwiLFwiMjAzXCIsXCIyMDRcIixcIjIwNVwiLFwiMjA2XCIsXCIyMDdcIixcIjIwOFwiLFwiMjA5XCIsXCIyMTBcIixcIjIxMVwiLFwiMjEyXCIsXCIyMTNcIixcIjIxNFwiLFwiMjE1XCIsXCIyMTZcIixcIjIxN1wiLFwiMjE4XCIsXCIyMTlcIixcIjIyMFwiLFwiMjIxXCIsXCIyMjJcIixcIjIyM1wiLFwiMjI0XCIsXCIyMjVcIixcIjIyNlwiLFwiMjI3XCIsXCIyMjhcIixcIjIyOVwiLFwiMjMwXCIsXCIyMzFcIixcIjIzMlwiLFwiMjMzXCIsXCIyMzRcIixcIjIzNVwiLFwiMjM2XCIsXCIyMzdcIixcIjIzOFwiLFwiMjM5XCIsXCIyNDBcIixcIjI0MVwiLFwiMjQyXCIsXCIyNDNcIixcIjI0NFwiLFwiMjQ1XCIsXCIyNDZcIixcIjI0N1wiLFwiMjQ4XCIsXCIyNDlcIixcIjI1MFwiLFwiMjUxXCIsXCIyNTJcIixcIjI1M1wiLFwiMjU0XCIsXCIyNTVcIl07ZS5lbmNvZGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciBuPVtdLHI9MDtyPGUubGVuZ3RoO3IrKyluLnB1c2godFtlW3JdXSk7cmV0dXJuIG4uam9pbihcIiBcIil9fShlLkRlY2ltYWxTdHJpbmd8fChlLkRlY2ltYWxTdHJpbmc9e30pKX0oZS5FbmNvZGluZ3x8KGUuRW5jb2Rpbmc9e30pKX0ob3x8KG89e30pKSxmdW5jdGlvbihlKXshZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKHQpe3QuZW5jb2RlPWZ1bmN0aW9uKHQpe3JldHVybiBlLkJpbmFyeVN0cmluZy5lbmNvZGUodCkucmVwbGFjZSgvXFwwL2csXCLogIJcIil9LHQuZGVjb2RlPWZ1bmN0aW9uKHQpe3JldHVybiBlLkJpbmFyeVN0cmluZy5kZWNvZGUodC5yZXBsYWNlKC9cXHU4MDAyL2csXCJcXDBcIikpfX0oZS5TdG9yYWdlQmluYXJ5U3RyaW5nfHwoZS5TdG9yYWdlQmluYXJ5U3RyaW5nPXt9KSl9KGUuRW5jb2Rpbmd8fChlLkVuY29kaW5nPXt9KSl9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKHQpeyFmdW5jdGlvbihuKXt2YXIgcixvO24uZW5jb2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYwIT10Lmxlbmd0aD9lLnJ1bm5pbmdJbk5vZGVKUygpP2UuQnVmZmVyVG9vbHMuYnVmZmVyVG9VaW50OEFycmF5KEJ1ZmZlci5mcm9tKHQsXCJ1dGY4XCIpKTpuLmNyZWF0ZU5hdGl2ZVRleHRFbmNvZGVyQW5kRGVjb2RlcklmQXZhaWxhYmxlKCk/ci5lbmNvZGUodCk6bi5lbmNvZGVXaXRoSlModCk6bmV3IFVpbnQ4QXJyYXkoMCl9LG4uZGVjb2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYwIT10Lmxlbmd0aD9lLnJ1bm5pbmdJbk5vZGVKUygpP2UuQnVmZmVyVG9vbHMudWludDhBcnJheVRvQnVmZmVyKHQpLnRvU3RyaW5nKFwidXRmOFwiKTpuLmNyZWF0ZU5hdGl2ZVRleHRFbmNvZGVyQW5kRGVjb2RlcklmQXZhaWxhYmxlKCk/by5kZWNvZGUodCk6bi5kZWNvZGVXaXRoSlModCk6XCJcIn0sbi5lbmNvZGVXaXRoSlM9ZnVuY3Rpb24oZSxuKXtpZighZXx8MD09ZS5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO258fChuPW5ldyBVaW50OEFycmF5KDQqZS5sZW5ndGgpKTtmb3IodmFyIHI9MCxvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciBpPXQuQ29kZVBvaW50LmVuY29kZUZyb21TdHJpbmcoZSxvKTtpZihpPD0xMjcpbltyKytdPWk7ZWxzZSBpZihpPD0yMDQ3KW5bcisrXT0xOTJ8aT4+PjYsbltyKytdPTEyOHw2MyZpO2Vsc2UgaWYoaTw9NjU1MzUpbltyKytdPTIyNHxpPj4+MTIsbltyKytdPTEyOHxpPj4+NiY2MyxuW3IrK109MTI4fDYzJmk7ZWxzZXtpZighKGk8PTExMTQxMTEpKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgVVRGLTE2IHN0cmluZzogRW5jb3VudGVyZWQgYSBjaGFyYWN0ZXIgdW5zdXBwb3J0ZWQgYnkgVVRGLTgvMTYgKFJGQyAzNjI5KVwiKTtuW3IrK109MjQwfGk+Pj4xOCxuW3IrK109MTI4fGk+Pj4xMiY2MyxuW3IrK109MTI4fGk+Pj42JjYzLG5bcisrXT0xMjh8NjMmaSxvKyt9fXJldHVybiBuLnN1YmFycmF5KDAscil9LG4uZGVjb2RlV2l0aEpTPWZ1bmN0aW9uKHQsbixyKXtpZih2b2lkIDA9PT1uJiYobj0wKSwhdHx8MD09dC5sZW5ndGgpcmV0dXJuXCJcIjt2b2lkIDA9PT1yJiYocj10Lmxlbmd0aCk7Zm9yKHZhciBvLGksYT1uZXcgZS5TdHJpbmdCdWlsZGVyLGw9bixzPXI7bDxzOyl7aWYoKGk9dFtsXSk+Pj43PT0wKW89aSxsKz0xO2Vsc2UgaWYoaT4+PjU9PTYpe2lmKGwrMT49cil0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIFVURi04IHN0cmVhbTogVHJ1bmNhdGVkIGNvZGVwb2ludCBzZXF1ZW5jZSBlbmNvdW50ZXJlZCBhdCBwb3NpdGlvbiBcIitsKTtvPSgzMSZpKTw8Nnw2MyZ0W2wrMV0sbCs9Mn1lbHNlIGlmKGk+Pj40PT0xNCl7aWYobCsyPj1yKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgVVRGLTggc3RyZWFtOiBUcnVuY2F0ZWQgY29kZXBvaW50IHNlcXVlbmNlIGVuY291bnRlcmVkIGF0IHBvc2l0aW9uIFwiK2wpO289KDE1JmkpPDwxMnwoNjMmdFtsKzFdKTw8Nnw2MyZ0W2wrMl0sbCs9M31lbHNle2lmKGk+Pj4zIT0zMCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIFVURi04IHN0cmVhbTogQW4gaW52YWxpZCBsZWFkIGJ5dGUgdmFsdWUgZW5jb3VudGVyZWQgYXQgcG9zaXRpb24gXCIrbCk7aWYobCszPj1yKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgVVRGLTggc3RyZWFtOiBUcnVuY2F0ZWQgY29kZXBvaW50IHNlcXVlbmNlIGVuY291bnRlcmVkIGF0IHBvc2l0aW9uIFwiK2wpO289KDcmaSk8PDE4fCg2MyZ0W2wrMV0pPDwxMnwoNjMmdFtsKzJdKTw8Nnw2MyZ0W2wrM10sbCs9NH1hLmFwcGVuZENvZGVQb2ludChvKX1yZXR1cm4gYS5nZXRPdXRwdXRTdHJpbmcoKX0sbi5jcmVhdGVOYXRpdmVUZXh0RW5jb2RlckFuZERlY29kZXJJZkF2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVybiEhcnx8XCJmdW5jdGlvblwiPT10eXBlb2YgVGV4dEVuY29kZXImJihyPW5ldyBUZXh0RW5jb2RlcihcInV0Zi04XCIpLG89bmV3IFRleHREZWNvZGVyKFwidXRmLThcIiksITApfX0odC5VVEY4fHwodC5VVEY4PXt9KSl9KGUuRW5jb2Rpbmd8fChlLkVuY29kaW5nPXt9KSl9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7ZS5jb21wcmVzcz1mdW5jdGlvbih0LG4pe2lmKHZvaWQgMD09PW4mJihuPXt9KSxudWxsPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJjb21wcmVzczogdW5kZWZpbmVkIG9yIG51bGwgaW5wdXQgcmVjZWl2ZWRcIik7dmFyIHI9ZS5Db21wcmVzc2lvbkNvbW1vbi5kZXRlY3RDb21wcmVzc2lvblNvdXJjZUVuY29kaW5nKHQpO249ZS5PYmplY3RUb29scy5vdmVycmlkZSh7aW5wdXRFbmNvZGluZzpyLG91dHB1dEVuY29kaW5nOlwiQnl0ZUFycmF5XCJ9LG4pO3ZhciBvPShuZXcgZS5Db21wcmVzc29yKS5jb21wcmVzc0Jsb2NrKHQpO3JldHVybiBlLkNvbXByZXNzaW9uQ29tbW9uLmVuY29kZUNvbXByZXNzZWRCeXRlcyhvLG4ub3V0cHV0RW5jb2RpbmcpfSxlLmRlY29tcHJlc3M9ZnVuY3Rpb24odCxuKXtpZih2b2lkIDA9PT1uJiYobj17fSksbnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiZGVjb21wcmVzczogdW5kZWZpbmVkIG9yIG51bGwgaW5wdXQgcmVjZWl2ZWRcIik7bj1lLk9iamVjdFRvb2xzLm92ZXJyaWRlKHtpbnB1dEVuY29kaW5nOlwiQnl0ZUFycmF5XCIsb3V0cHV0RW5jb2Rpbmc6XCJTdHJpbmdcIn0sbik7dmFyIHI9ZS5Db21wcmVzc2lvbkNvbW1vbi5kZWNvZGVDb21wcmVzc2VkQnl0ZXModCxuLmlucHV0RW5jb2RpbmcpLG89KG5ldyBlLkRlY29tcHJlc3NvcikuZGVjb21wcmVzc0Jsb2NrKHIpO3JldHVybiBlLkNvbXByZXNzaW9uQ29tbW9uLmVuY29kZURlY29tcHJlc3NlZEJ5dGVzKG8sbi5vdXRwdXRFbmNvZGluZyl9LGUuY29tcHJlc3NBc3luYz1mdW5jdGlvbih0LG4scil7dmFyIG87bnVsbD09ciYmKHI9ZnVuY3Rpb24oKXt9KTt0cnl7bz1lLkNvbXByZXNzaW9uQ29tbW9uLmRldGVjdENvbXByZXNzaW9uU291cmNlRW5jb2RpbmcodCl9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgcih2b2lkIDAsZSl9bj1lLk9iamVjdFRvb2xzLm92ZXJyaWRlKHtpbnB1dEVuY29kaW5nOm8sb3V0cHV0RW5jb2Rpbmc6XCJCeXRlQXJyYXlcIix1c2VXZWJXb3JrZXI6ITAsYmxvY2tTaXplOjY1NTM2fSxuKSxlLmVucXVldWVJbW1lZGlhdGUoKGZ1bmN0aW9uKCl7bi51c2VXZWJXb3JrZXImJmUuV2ViV29ya2VyLmNyZWF0ZUdsb2JhbFdvcmtlcklmTmVlZGVkKCk/ZS5XZWJXb3JrZXIuY29tcHJlc3NBc3luYyh0LG4scik6ZS5Bc3luY0NvbXByZXNzb3IuY29tcHJlc3NBc3luYyh0LG4scil9KSl9LGUuZGVjb21wcmVzc0FzeW5jPWZ1bmN0aW9uKHQsbixyKXtpZihudWxsPT1yJiYocj1mdW5jdGlvbigpe30pLG51bGwhPXQpe249ZS5PYmplY3RUb29scy5vdmVycmlkZSh7aW5wdXRFbmNvZGluZzpcIkJ5dGVBcnJheVwiLG91dHB1dEVuY29kaW5nOlwiU3RyaW5nXCIsdXNlV2ViV29ya2VyOiEwLGJsb2NrU2l6ZTo2NTUzNn0sbik7dmFyIG89ZS5CdWZmZXJUb29scy5jb252ZXJ0VG9VaW50OEFycmF5SWZOZWVkZWQodCk7ZS5FdmVudExvb3AuZW5xdWV1ZUltbWVkaWF0ZSgoZnVuY3Rpb24oKXtuLnVzZVdlYldvcmtlciYmZS5XZWJXb3JrZXIuY3JlYXRlR2xvYmFsV29ya2VySWZOZWVkZWQoKT9lLldlYldvcmtlci5kZWNvbXByZXNzQXN5bmMobyxuLHIpOmUuQXN5bmNEZWNvbXByZXNzb3IuZGVjb21wcmVzc0FzeW5jKHQsbixyKX0pKX1lbHNlIHIodm9pZCAwLG5ldyBUeXBlRXJyb3IoXCJkZWNvbXByZXNzQXN5bmM6IHVuZGVmaW5lZCBvciBudWxsIGlucHV0IHJlY2VpdmVkXCIpKX0sZS5jcmVhdGVDb21wcmVzc2lvblN0cmVhbT1mdW5jdGlvbigpe3JldHVybiBlLkFzeW5jQ29tcHJlc3Nvci5jcmVhdGVDb21wcmVzc2lvblN0cmVhbSgpfSxlLmNyZWF0ZURlY29tcHJlc3Npb25TdHJlYW09ZnVuY3Rpb24oKXtyZXR1cm4gZS5Bc3luY0RlY29tcHJlc3Nvci5jcmVhdGVEZWNvbXByZXNzaW9uU3RyZWFtKCl9LGUuZW5jb2RlVVRGOD1mdW5jdGlvbih0KXtyZXR1cm4gZS5FbmNvZGluZy5VVEY4LmVuY29kZSh0KX0sZS5kZWNvZGVVVEY4PWZ1bmN0aW9uKHQpe3JldHVybiBlLkVuY29kaW5nLlVURjguZGVjb2RlKHQpfSxlLmVuY29kZUJhc2U2ND1mdW5jdGlvbih0KXtyZXR1cm4gZS5FbmNvZGluZy5CYXNlNjQuZW5jb2RlKHQpfSxlLmRlY29kZUJhc2U2ND1mdW5jdGlvbih0KXtyZXR1cm4gZS5FbmNvZGluZy5CYXNlNjQuZGVjb2RlKHQpfSxlLmVuY29kZUJpbmFyeVN0cmluZz1mdW5jdGlvbih0KXtyZXR1cm4gZS5FbmNvZGluZy5CaW5hcnlTdHJpbmcuZW5jb2RlKHQpfSxlLmRlY29kZUJpbmFyeVN0cmluZz1mdW5jdGlvbih0KXtyZXR1cm4gZS5FbmNvZGluZy5CaW5hcnlTdHJpbmcuZGVjb2RlKHQpfSxlLmVuY29kZVN0b3JhZ2VCaW5hcnlTdHJpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGUuRW5jb2RpbmcuU3RvcmFnZUJpbmFyeVN0cmluZy5lbmNvZGUodCl9LGUuZGVjb2RlU3RvcmFnZUJpbmFyeVN0cmluZz1mdW5jdGlvbih0KXtyZXR1cm4gZS5FbmNvZGluZy5TdG9yYWdlQmluYXJ5U3RyaW5nLmRlY29kZSh0KX19KG98fChvPXt9KSl9LDM3NDooZSx0LG4pPT57Y29uc3R7QWJvcnRFcnJvcjpyLGNvZGVzOm99PW4oMTQxKSx7aXNOb2RlU3RyZWFtOmksaXNXZWJTdHJlYW06YSxrQ29udHJvbGxlckVycm9yRnVuY3Rpb246bH09bigxMzIpLHM9big4Nikse0VSUl9JTlZBTElEX0FSR19UWVBFOmN9PW87ZS5leHBvcnRzLmFkZEFib3J0U2lnbmFsPWZ1bmN0aW9uKHQsbil7aWYoKChlLHQpPT57aWYoXCJvYmplY3RcIiE9dHlwZW9mIGV8fCEoXCJhYm9ydGVkXCJpbiBlKSl0aHJvdyBuZXcgYyhcInNpZ25hbFwiLFwiQWJvcnRTaWduYWxcIixlKX0pKHQpLCFpKG4pJiYhYShuKSl0aHJvdyBuZXcgYyhcInN0cmVhbVwiLFtcIlJlYWRhYmxlU3RyZWFtXCIsXCJXcml0YWJsZVN0cmVhbVwiLFwiU3RyZWFtXCJdLG4pO3JldHVybiBlLmV4cG9ydHMuYWRkQWJvcnRTaWduYWxOb1ZhbGlkYXRlKHQsbil9LGUuZXhwb3J0cy5hZGRBYm9ydFNpZ25hbE5vVmFsaWRhdGU9ZnVuY3Rpb24oZSx0KXtpZihcIm9iamVjdFwiIT10eXBlb2YgZXx8IShcImFib3J0ZWRcImluIGUpKXJldHVybiB0O2NvbnN0IG49aSh0KT8oKT0+e3QuZGVzdHJveShuZXcgcih2b2lkIDAse2NhdXNlOmUucmVhc29ufSkpfTooKT0+e3RbbF0obmV3IHIodm9pZCAwLHtjYXVzZTplLnJlYXNvbn0pKX07cmV0dXJuIGUuYWJvcnRlZD9uKCk6KGUuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsbikscyh0LCgoKT0+ZS5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIixuKSkpKSx0fX0sNjE2OihlLHQsbik9Pntjb25zdHtTdHJpbmdQcm90b3R5cGVTbGljZTpyLFN5bWJvbEl0ZXJhdG9yOm8sVHlwZWRBcnJheVByb3RvdHlwZVNldDppLFVpbnQ4QXJyYXk6YX09bigxOTEpLHtCdWZmZXI6bH09big0ODUpLHtpbnNwZWN0OnN9PW4oNzc1KTtlLmV4cG9ydHM9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmhlYWQ9bnVsbCx0aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfXB1c2goZSl7Y29uc3QgdD17ZGF0YTplLG5leHQ6bnVsbH07dGhpcy5sZW5ndGg+MD90aGlzLnRhaWwubmV4dD10OnRoaXMuaGVhZD10LHRoaXMudGFpbD10LCsrdGhpcy5sZW5ndGh9dW5zaGlmdChlKXtjb25zdCB0PXtkYXRhOmUsbmV4dDp0aGlzLmhlYWR9OzA9PT10aGlzLmxlbmd0aCYmKHRoaXMudGFpbD10KSx0aGlzLmhlYWQ9dCwrK3RoaXMubGVuZ3RofXNoaWZ0KCl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybjtjb25zdCBlPXRoaXMuaGVhZC5kYXRhO3JldHVybiAxPT09dGhpcy5sZW5ndGg/dGhpcy5oZWFkPXRoaXMudGFpbD1udWxsOnRoaXMuaGVhZD10aGlzLmhlYWQubmV4dCwtLXRoaXMubGVuZ3RoLGV9Y2xlYXIoKXt0aGlzLmhlYWQ9dGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH1qb2luKGUpe2lmKDA9PT10aGlzLmxlbmd0aClyZXR1cm5cIlwiO2xldCB0PXRoaXMuaGVhZCxuPVwiXCIrdC5kYXRhO2Zvcig7bnVsbCE9PSh0PXQubmV4dCk7KW4rPWUrdC5kYXRhO3JldHVybiBufWNvbmNhdChlKXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuIGwuYWxsb2MoMCk7Y29uc3QgdD1sLmFsbG9jVW5zYWZlKGU+Pj4wKTtsZXQgbj10aGlzLmhlYWQscj0wO2Zvcig7bjspaSh0LG4uZGF0YSxyKSxyKz1uLmRhdGEubGVuZ3RoLG49bi5uZXh0O3JldHVybiB0fWNvbnN1bWUoZSx0KXtjb25zdCBuPXRoaXMuaGVhZC5kYXRhO2lmKGU8bi5sZW5ndGgpe2NvbnN0IHQ9bi5zbGljZSgwLGUpO3JldHVybiB0aGlzLmhlYWQuZGF0YT1uLnNsaWNlKGUpLHR9cmV0dXJuIGU9PT1uLmxlbmd0aD90aGlzLnNoaWZ0KCk6dD90aGlzLl9nZXRTdHJpbmcoZSk6dGhpcy5fZ2V0QnVmZmVyKGUpfWZpcnN0KCl7cmV0dXJuIHRoaXMuaGVhZC5kYXRhfSpbb10oKXtmb3IobGV0IGU9dGhpcy5oZWFkO2U7ZT1lLm5leHQpeWllbGQgZS5kYXRhfV9nZXRTdHJpbmcoZSl7bGV0IHQ9XCJcIixuPXRoaXMuaGVhZCxvPTA7ZG97Y29uc3QgaT1uLmRhdGE7aWYoIShlPmkubGVuZ3RoKSl7ZT09PWkubGVuZ3RoPyh0Kz1pLCsrbyxuLm5leHQ/dGhpcy5oZWFkPW4ubmV4dDp0aGlzLmhlYWQ9dGhpcy50YWlsPW51bGwpOih0Kz1yKGksMCxlKSx0aGlzLmhlYWQ9bixuLmRhdGE9cihpLGUpKTticmVha310Kz1pLGUtPWkubGVuZ3RoLCsrb313aGlsZShudWxsIT09KG49bi5uZXh0KSk7cmV0dXJuIHRoaXMubGVuZ3RoLT1vLHR9X2dldEJ1ZmZlcihlKXtjb25zdCB0PWwuYWxsb2NVbnNhZmUoZSksbj1lO2xldCByPXRoaXMuaGVhZCxvPTA7ZG97Y29uc3QgbD1yLmRhdGE7aWYoIShlPmwubGVuZ3RoKSl7ZT09PWwubGVuZ3RoPyhpKHQsbCxuLWUpLCsrbyxyLm5leHQ/dGhpcy5oZWFkPXIubmV4dDp0aGlzLmhlYWQ9dGhpcy50YWlsPW51bGwpOihpKHQsbmV3IGEobC5idWZmZXIsbC5ieXRlT2Zmc2V0LGUpLG4tZSksdGhpcy5oZWFkPXIsci5kYXRhPWwuc2xpY2UoZSkpO2JyZWFrfWkodCxsLG4tZSksZS09bC5sZW5ndGgsKytvfXdoaWxlKG51bGwhPT0ocj1yLm5leHQpKTtyZXR1cm4gdGhpcy5sZW5ndGgtPW8sdH1bU3ltYm9sLmZvcihcIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tXCIpXShlLHQpe3JldHVybiBzKHRoaXMsey4uLnQsZGVwdGg6MCxjdXN0b21JbnNwZWN0OiExfSl9fX0sODE4OihlLHQsbik9Pntjb25zdHtwaXBlbGluZTpyfT1uKDc1NCksbz1uKDE4Mikse2Rlc3Ryb3llcjppfT1uKDIzMCkse2lzTm9kZVN0cmVhbTphLGlzUmVhZGFibGU6bCxpc1dyaXRhYmxlOnMsaXNXZWJTdHJlYW06Yyxpc1RyYW5zZm9ybVN0cmVhbTp1LGlzV3JpdGFibGVTdHJlYW06Zixpc1JlYWRhYmxlU3RyZWFtOmR9PW4oMTMyKSx7QWJvcnRFcnJvcjpwLGNvZGVzOntFUlJfSU5WQUxJRF9BUkdfVkFMVUU6aCxFUlJfTUlTU0lOR19BUkdTOnZ9fT1uKDE0MSksZz1uKDg2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oLi4uZSl7aWYoMD09PWUubGVuZ3RoKXRocm93IG5ldyB2KFwic3RyZWFtc1wiKTtpZigxPT09ZS5sZW5ndGgpcmV0dXJuIG8uZnJvbShlWzBdKTtjb25zdCB0PVsuLi5lXTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlWzBdJiYoZVswXT1vLmZyb20oZVswXSkpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGVbZS5sZW5ndGgtMV0pe2NvbnN0IHQ9ZS5sZW5ndGgtMTtlW3RdPW8uZnJvbShlW3RdKX1mb3IobGV0IG49MDtuPGUubGVuZ3RoOysrbilpZihhKGVbbl0pfHxjKGVbbl0pKXtpZihuPGUubGVuZ3RoLTEmJiEobChlW25dKXx8ZChlW25dKXx8dShlW25dKSkpdGhyb3cgbmV3IGgoYHN0cmVhbXNbJHtufV1gLHRbbl0sXCJtdXN0IGJlIHJlYWRhYmxlXCIpO2lmKG4+MCYmIShzKGVbbl0pfHxmKGVbbl0pfHx1KGVbbl0pKSl0aHJvdyBuZXcgaChgc3RyZWFtc1ske259XWAsdFtuXSxcIm11c3QgYmUgd3JpdGFibGVcIil9bGV0IG4sQyxtLHksdztjb25zdCBiPWVbMF0seD1yKGUsKGZ1bmN0aW9uKGUpe2NvbnN0IHQ9eTt5PW51bGwsdD90KGUpOmU/dy5kZXN0cm95KGUpOkx8fF98fHcuZGVzdHJveSgpfSkpLF89ISEocyhiKXx8ZihiKXx8dShiKSksTD0hIShsKHgpfHxkKHgpfHx1KHgpKTtpZih3PW5ldyBvKHt3cml0YWJsZU9iamVjdE1vZGU6IShudWxsPT1ifHwhYi53cml0YWJsZU9iamVjdE1vZGUpLHJlYWRhYmxlT2JqZWN0TW9kZTohKG51bGw9PXh8fCF4LndyaXRhYmxlT2JqZWN0TW9kZSksd3JpdGFibGU6XyxyZWFkYWJsZTpMfSksXyl7aWYoYShiKSl3Ll93cml0ZT1mdW5jdGlvbihlLHQscil7Yi53cml0ZShlLHQpP3IoKTpuPXJ9LHcuX2ZpbmFsPWZ1bmN0aW9uKGUpe2IuZW5kKCksQz1lfSxiLm9uKFwiZHJhaW5cIiwoZnVuY3Rpb24oKXtpZihuKXtjb25zdCBlPW47bj1udWxsLGUoKX19KSk7ZWxzZSBpZihjKGIpKXtjb25zdCBlPSh1KGIpP2Iud3JpdGFibGU6YikuZ2V0V3JpdGVyKCk7dy5fd3JpdGU9YXN5bmMgZnVuY3Rpb24odCxuLHIpe3RyeXthd2FpdCBlLnJlYWR5LGUud3JpdGUodCkuY2F0Y2goKCgpPT57fSkpLHIoKX1jYXRjaChlKXtyKGUpfX0sdy5fZmluYWw9YXN5bmMgZnVuY3Rpb24odCl7dHJ5e2F3YWl0IGUucmVhZHksZS5jbG9zZSgpLmNhdGNoKCgoKT0+e30pKSxDPXR9Y2F0Y2goZSl7dChlKX19fWNvbnN0IGU9dSh4KT94LnJlYWRhYmxlOng7ZyhlLCgoKT0+e2lmKEMpe2NvbnN0IGU9QztDPW51bGwsZSgpfX0pKX1pZihMKWlmKGEoeCkpeC5vbihcInJlYWRhYmxlXCIsKGZ1bmN0aW9uKCl7aWYobSl7Y29uc3QgZT1tO209bnVsbCxlKCl9fSkpLHgub24oXCJlbmRcIiwoZnVuY3Rpb24oKXt3LnB1c2gobnVsbCl9KSksdy5fcmVhZD1mdW5jdGlvbigpe2Zvcig7Oyl7Y29uc3QgZT14LnJlYWQoKTtpZihudWxsPT09ZSlyZXR1cm4gdm9pZChtPXcuX3JlYWQpO2lmKCF3LnB1c2goZSkpcmV0dXJufX07ZWxzZSBpZihjKHgpKXtjb25zdCBlPSh1KHgpP3gucmVhZGFibGU6eCkuZ2V0UmVhZGVyKCk7dy5fcmVhZD1hc3luYyBmdW5jdGlvbigpe2Zvcig7Oyl0cnl7Y29uc3R7dmFsdWU6dCxkb25lOm59PWF3YWl0IGUucmVhZCgpO2lmKCF3LnB1c2godCkpcmV0dXJuO2lmKG4pcmV0dXJuIHZvaWQgdy5wdXNoKG51bGwpfWNhdGNoe3JldHVybn19fXJldHVybiB3Ll9kZXN0cm95PWZ1bmN0aW9uKGUsdCl7ZXx8bnVsbD09PXl8fChlPW5ldyBwKSxtPW51bGwsbj1udWxsLEM9bnVsbCxudWxsPT09eT90KGUpOih5PXQsYSh4KSYmaSh4LGUpKX0sd319LDIzMDooZSx0LG4pPT57Y29uc3Qgcj1uKDUzMykse2FnZ3JlZ2F0ZVR3b0Vycm9yczpvLGNvZGVzOntFUlJfTVVMVElQTEVfQ0FMTEJBQ0s6aX0sQWJvcnRFcnJvcjphfT1uKDE0MSkse1N5bWJvbDpsfT1uKDE5MSkse2tEZXN0cm95ZWQ6cyxpc0Rlc3Ryb3llZDpjLGlzRmluaXNoZWQ6dSxpc1NlcnZlclJlcXVlc3Q6Zn09bigxMzIpLGQ9bChcImtEZXN0cm95XCIpLHA9bChcImtDb25zdHJ1Y3RcIik7ZnVuY3Rpb24gaChlLHQsbil7ZSYmKGUuc3RhY2ssdCYmIXQuZXJyb3JlZCYmKHQuZXJyb3JlZD1lKSxuJiYhbi5lcnJvcmVkJiYobi5lcnJvcmVkPWUpKX1mdW5jdGlvbiB2KGUsdCxuKXtsZXQgbz0hMTtmdW5jdGlvbiBpKHQpe2lmKG8pcmV0dXJuO289ITA7Y29uc3QgaT1lLl9yZWFkYWJsZVN0YXRlLGE9ZS5fd3JpdGFibGVTdGF0ZTtoKHQsYSxpKSxhJiYoYS5jbG9zZWQ9ITApLGkmJihpLmNsb3NlZD0hMCksXCJmdW5jdGlvblwiPT10eXBlb2YgbiYmbih0KSx0P3IubmV4dFRpY2soZyxlLHQpOnIubmV4dFRpY2soQyxlKX10cnl7ZS5fZGVzdHJveSh0fHxudWxsLGkpfWNhdGNoKHQpe2kodCl9fWZ1bmN0aW9uIGcoZSx0KXttKGUsdCksQyhlKX1mdW5jdGlvbiBDKGUpe2NvbnN0IHQ9ZS5fcmVhZGFibGVTdGF0ZSxuPWUuX3dyaXRhYmxlU3RhdGU7biYmKG4uY2xvc2VFbWl0dGVkPSEwKSx0JiYodC5jbG9zZUVtaXR0ZWQ9ITApLChudWxsIT1uJiZuLmVtaXRDbG9zZXx8bnVsbCE9dCYmdC5lbWl0Q2xvc2UpJiZlLmVtaXQoXCJjbG9zZVwiKX1mdW5jdGlvbiBtKGUsdCl7Y29uc3Qgbj1lLl9yZWFkYWJsZVN0YXRlLHI9ZS5fd3JpdGFibGVTdGF0ZTtudWxsIT1yJiZyLmVycm9yRW1pdHRlZHx8bnVsbCE9biYmbi5lcnJvckVtaXR0ZWR8fChyJiYoci5lcnJvckVtaXR0ZWQ9ITApLG4mJihuLmVycm9yRW1pdHRlZD0hMCksZS5lbWl0KFwiZXJyb3JcIix0KSl9ZnVuY3Rpb24geShlLHQsbil7Y29uc3Qgbz1lLl9yZWFkYWJsZVN0YXRlLGk9ZS5fd3JpdGFibGVTdGF0ZTtpZihudWxsIT1pJiZpLmRlc3Ryb3llZHx8bnVsbCE9byYmby5kZXN0cm95ZWQpcmV0dXJuIHRoaXM7bnVsbCE9byYmby5hdXRvRGVzdHJveXx8bnVsbCE9aSYmaS5hdXRvRGVzdHJveT9lLmRlc3Ryb3kodCk6dCYmKHQuc3RhY2ssaSYmIWkuZXJyb3JlZCYmKGkuZXJyb3JlZD10KSxvJiYhby5lcnJvcmVkJiYoby5lcnJvcmVkPXQpLG4/ci5uZXh0VGljayhtLGUsdCk6bShlLHQpKX1mdW5jdGlvbiB3KGUpe2xldCB0PSExO2Z1bmN0aW9uIG4obil7aWYodClyZXR1cm4gdm9pZCB5KGUsbnVsbCE9bj9uOm5ldyBpKTt0PSEwO2NvbnN0IG89ZS5fcmVhZGFibGVTdGF0ZSxhPWUuX3dyaXRhYmxlU3RhdGUsbD1hfHxvO28mJihvLmNvbnN0cnVjdGVkPSEwKSxhJiYoYS5jb25zdHJ1Y3RlZD0hMCksbC5kZXN0cm95ZWQ/ZS5lbWl0KGQsbik6bj95KGUsbiwhMCk6ci5uZXh0VGljayhiLGUpfXRyeXtlLl9jb25zdHJ1Y3QoKGU9PntyLm5leHRUaWNrKG4sZSl9KSl9Y2F0Y2goZSl7ci5uZXh0VGljayhuLGUpfX1mdW5jdGlvbiBiKGUpe2UuZW1pdChwKX1mdW5jdGlvbiB4KGUpe3JldHVybihudWxsPT1lP3ZvaWQgMDplLnNldEhlYWRlcikmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuYWJvcnR9ZnVuY3Rpb24gXyhlKXtlLmVtaXQoXCJjbG9zZVwiKX1mdW5jdGlvbiBMKGUsdCl7ZS5lbWl0KFwiZXJyb3JcIix0KSxyLm5leHRUaWNrKF8sZSl9ZS5leHBvcnRzPXtjb25zdHJ1Y3Q6ZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLl9jb25zdHJ1Y3QpcmV0dXJuO2NvbnN0IG49ZS5fcmVhZGFibGVTdGF0ZSxvPWUuX3dyaXRhYmxlU3RhdGU7biYmKG4uY29uc3RydWN0ZWQ9ITEpLG8mJihvLmNvbnN0cnVjdGVkPSExKSxlLm9uY2UocCx0KSxlLmxpc3RlbmVyQ291bnQocCk+MXx8ci5uZXh0VGljayh3LGUpfSxkZXN0cm95ZXI6ZnVuY3Rpb24oZSx0KXtlJiYhYyhlKSYmKHR8fHUoZSl8fCh0PW5ldyBhKSxmKGUpPyhlLnNvY2tldD1udWxsLGUuZGVzdHJveSh0KSk6eChlKT9lLmFib3J0KCk6eChlLnJlcSk/ZS5yZXEuYWJvcnQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmRlc3Ryb3k/ZS5kZXN0cm95KHQpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY2xvc2U/ZS5jbG9zZSgpOnQ/ci5uZXh0VGljayhMLGUsdCk6ci5uZXh0VGljayhfLGUpLGUuZGVzdHJveWVkfHwoZVtzXT0hMCkpfSxkZXN0cm95OmZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj10aGlzLl9yZWFkYWJsZVN0YXRlLHI9dGhpcy5fd3JpdGFibGVTdGF0ZSxpPXJ8fG47cmV0dXJuIG51bGwhPXImJnIuZGVzdHJveWVkfHxudWxsIT1uJiZuLmRlc3Ryb3llZD8oXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmdCgpLHRoaXMpOihoKGUscixuKSxyJiYoci5kZXN0cm95ZWQ9ITApLG4mJihuLmRlc3Ryb3llZD0hMCksaS5jb25zdHJ1Y3RlZD92KHRoaXMsZSx0KTp0aGlzLm9uY2UoZCwoZnVuY3Rpb24obil7dih0aGlzLG8obixlKSx0KX0pKSx0aGlzKX0sdW5kZXN0cm95OmZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLl9yZWFkYWJsZVN0YXRlLHQ9dGhpcy5fd3JpdGFibGVTdGF0ZTtlJiYoZS5jb25zdHJ1Y3RlZD0hMCxlLmNsb3NlZD0hMSxlLmNsb3NlRW1pdHRlZD0hMSxlLmRlc3Ryb3llZD0hMSxlLmVycm9yZWQ9bnVsbCxlLmVycm9yRW1pdHRlZD0hMSxlLnJlYWRpbmc9ITEsZS5lbmRlZD0hMT09PWUucmVhZGFibGUsZS5lbmRFbWl0dGVkPSExPT09ZS5yZWFkYWJsZSksdCYmKHQuY29uc3RydWN0ZWQ9ITAsdC5kZXN0cm95ZWQ9ITEsdC5jbG9zZWQ9ITEsdC5jbG9zZUVtaXR0ZWQ9ITEsdC5lcnJvcmVkPW51bGwsdC5lcnJvckVtaXR0ZWQ9ITEsdC5maW5hbENhbGxlZD0hMSx0LnByZWZpbmlzaGVkPSExLHQuZW5kZWQ9ITE9PT10LndyaXRhYmxlLHQuZW5kaW5nPSExPT09dC53cml0YWJsZSx0LmZpbmlzaGVkPSExPT09dC53cml0YWJsZSl9LGVycm9yT3JEZXN0cm95Onl9fSwxODI6KGUsdCxuKT0+e2NvbnN0e09iamVjdERlZmluZVByb3BlcnRpZXM6cixPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6byxPYmplY3RLZXlzOmksT2JqZWN0U2V0UHJvdG90eXBlT2Y6YX09bigxOTEpO2UuZXhwb3J0cz1jO2NvbnN0IGw9big4NTgpLHM9bigzNzMpO2EoYy5wcm90b3R5cGUsbC5wcm90b3R5cGUpLGEoYyxsKTt7Y29uc3QgZT1pKHMucHJvdG90eXBlKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdO2MucHJvdG90eXBlW25dfHwoYy5wcm90b3R5cGVbbl09cy5wcm90b3R5cGVbbl0pfX1mdW5jdGlvbiBjKGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGMpKXJldHVybiBuZXcgYyhlKTtsLmNhbGwodGhpcyxlKSxzLmNhbGwodGhpcyxlKSxlPyh0aGlzLmFsbG93SGFsZk9wZW49ITEhPT1lLmFsbG93SGFsZk9wZW4sITE9PT1lLnJlYWRhYmxlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkYWJsZT0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkPSEwLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZD0hMCksITE9PT1lLndyaXRhYmxlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS53cml0YWJsZT0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZz0hMCx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkPSEwLHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQ9ITApKTp0aGlzLmFsbG93SGFsZk9wZW49ITB9bGV0IHUsZjtmdW5jdGlvbiBkKCl7cmV0dXJuIHZvaWQgMD09PXUmJih1PXt9KSx1fXIoYy5wcm90b3R5cGUse3dyaXRhYmxlOntfX3Byb3RvX186bnVsbCwuLi5vKHMucHJvdG90eXBlLFwid3JpdGFibGVcIil9LHdyaXRhYmxlSGlnaFdhdGVyTWFyazp7X19wcm90b19fOm51bGwsLi4ubyhzLnByb3RvdHlwZSxcIndyaXRhYmxlSGlnaFdhdGVyTWFya1wiKX0sd3JpdGFibGVPYmplY3RNb2RlOntfX3Byb3RvX186bnVsbCwuLi5vKHMucHJvdG90eXBlLFwid3JpdGFibGVPYmplY3RNb2RlXCIpfSx3cml0YWJsZUJ1ZmZlcjp7X19wcm90b19fOm51bGwsLi4ubyhzLnByb3RvdHlwZSxcIndyaXRhYmxlQnVmZmVyXCIpfSx3cml0YWJsZUxlbmd0aDp7X19wcm90b19fOm51bGwsLi4ubyhzLnByb3RvdHlwZSxcIndyaXRhYmxlTGVuZ3RoXCIpfSx3cml0YWJsZUZpbmlzaGVkOntfX3Byb3RvX186bnVsbCwuLi5vKHMucHJvdG90eXBlLFwid3JpdGFibGVGaW5pc2hlZFwiKX0sd3JpdGFibGVDb3JrZWQ6e19fcHJvdG9fXzpudWxsLC4uLm8ocy5wcm90b3R5cGUsXCJ3cml0YWJsZUNvcmtlZFwiKX0sd3JpdGFibGVFbmRlZDp7X19wcm90b19fOm51bGwsLi4ubyhzLnByb3RvdHlwZSxcIndyaXRhYmxlRW5kZWRcIil9LHdyaXRhYmxlTmVlZERyYWluOntfX3Byb3RvX186bnVsbCwuLi5vKHMucHJvdG90eXBlLFwid3JpdGFibGVOZWVkRHJhaW5cIil9LGRlc3Ryb3llZDp7X19wcm90b19fOm51bGwsZ2V0KCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3RhdGUmJnZvaWQgMCE9PXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0KGUpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD1lLHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPWUpfX19KSxjLmZyb21XZWI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZCgpLm5ld1N0cmVhbUR1cGxleEZyb21SZWFkYWJsZVdyaXRhYmxlUGFpcihlLHQpfSxjLnRvV2ViPWZ1bmN0aW9uKGUpe3JldHVybiBkKCkubmV3UmVhZGFibGVXcml0YWJsZVBhaXJGcm9tRHVwbGV4KGUpfSxjLmZyb209ZnVuY3Rpb24oZSl7cmV0dXJuIGZ8fChmPW4oNzQ5KSksZihlLFwiYm9keVwiKX19LDc0OTooZSx0LG4pPT57Y29uc3Qgcj1uKDUzMyksbz1uKDQ4NSkse2lzUmVhZGFibGU6aSxpc1dyaXRhYmxlOmEsaXNJdGVyYWJsZTpsLGlzTm9kZVN0cmVhbTpzLGlzUmVhZGFibGVOb2RlU3RyZWFtOmMsaXNXcml0YWJsZU5vZGVTdHJlYW06dSxpc0R1cGxleE5vZGVTdHJlYW06Zn09bigxMzIpLGQ9big4Nikse0Fib3J0RXJyb3I6cCxjb2Rlczp7RVJSX0lOVkFMSURfQVJHX1RZUEU6aCxFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUU6dn19PW4oMTQxKSx7ZGVzdHJveWVyOmd9PW4oMjMwKSxDPW4oMTgyKSxtPW4oODU4KSx7Y3JlYXRlRGVmZXJyZWRQcm9taXNlOnl9PW4oNzc1KSx3PW4oOTEzKSxiPWdsb2JhbFRoaXMuQmxvYnx8by5CbG9iLHg9dm9pZCAwIT09Yj9mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGJ9OmZ1bmN0aW9uKGUpe3JldHVybiExfSxfPWdsb2JhbFRoaXMuQWJvcnRDb250cm9sbGVyfHxuKDg3NikuQWJvcnRDb250cm9sbGVyLHtGdW5jdGlvblByb3RvdHlwZUNhbGw6TH09bigxOTEpO2NsYXNzIE8gZXh0ZW5kcyBDe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpLCExPT09KG51bGw9PWU/dm9pZCAwOmUucmVhZGFibGUpJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkYWJsZT0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkPSEwLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZD0hMCksITE9PT0obnVsbD09ZT92b2lkIDA6ZS53cml0YWJsZSkmJih0aGlzLl93cml0YWJsZVN0YXRlLndyaXRhYmxlPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nPSEwLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQ9ITAsdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZD0hMCl9fWZ1bmN0aW9uIEUoZSl7Y29uc3QgdD1lLnJlYWRhYmxlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLnJlYWRhYmxlLnJlYWQ/bS53cmFwKGUucmVhZGFibGUpOmUucmVhZGFibGUsbj1lLndyaXRhYmxlO2xldCByLG8sbCxzLGMsdT0hIWkodCksZj0hIWEobik7ZnVuY3Rpb24gaChlKXtjb25zdCB0PXM7cz1udWxsLHQ/dChlKTplJiZjLmRlc3Ryb3koZSl9cmV0dXJuIGM9bmV3IE8oe3JlYWRhYmxlT2JqZWN0TW9kZTohKG51bGw9PXR8fCF0LnJlYWRhYmxlT2JqZWN0TW9kZSksd3JpdGFibGVPYmplY3RNb2RlOiEobnVsbD09bnx8IW4ud3JpdGFibGVPYmplY3RNb2RlKSxyZWFkYWJsZTp1LHdyaXRhYmxlOmZ9KSxmJiYoZChuLChlPT57Zj0hMSxlJiZnKHQsZSksaChlKX0pKSxjLl93cml0ZT1mdW5jdGlvbihlLHQsbyl7bi53cml0ZShlLHQpP28oKTpyPW99LGMuX2ZpbmFsPWZ1bmN0aW9uKGUpe24uZW5kKCksbz1lfSxuLm9uKFwiZHJhaW5cIiwoZnVuY3Rpb24oKXtpZihyKXtjb25zdCBlPXI7cj1udWxsLGUoKX19KSksbi5vbihcImZpbmlzaFwiLChmdW5jdGlvbigpe2lmKG8pe2NvbnN0IGU9bztvPW51bGwsZSgpfX0pKSksdSYmKGQodCwoZT0+e3U9ITEsZSYmZyh0LGUpLGgoZSl9KSksdC5vbihcInJlYWRhYmxlXCIsKGZ1bmN0aW9uKCl7aWYobCl7Y29uc3QgZT1sO2w9bnVsbCxlKCl9fSkpLHQub24oXCJlbmRcIiwoZnVuY3Rpb24oKXtjLnB1c2gobnVsbCl9KSksYy5fcmVhZD1mdW5jdGlvbigpe2Zvcig7Oyl7Y29uc3QgZT10LnJlYWQoKTtpZihudWxsPT09ZSlyZXR1cm4gdm9pZChsPWMuX3JlYWQpO2lmKCFjLnB1c2goZSkpcmV0dXJufX0pLGMuX2Rlc3Ryb3k9ZnVuY3Rpb24oZSxpKXtlfHxudWxsPT09c3x8KGU9bmV3IHApLGw9bnVsbCxyPW51bGwsbz1udWxsLG51bGw9PT1zP2koZSk6KHM9aSxnKG4sZSksZyh0LGUpKX0sY31lLmV4cG9ydHM9ZnVuY3Rpb24gZSh0LG4pe2lmKGYodCkpcmV0dXJuIHQ7aWYoYyh0KSlyZXR1cm4gRSh7cmVhZGFibGU6dH0pO2lmKHUodCkpcmV0dXJuIEUoe3dyaXRhYmxlOnR9KTtpZihzKHQpKXJldHVybiBFKHt3cml0YWJsZTohMSxyZWFkYWJsZTohMX0pO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpe2NvbnN0e3ZhbHVlOmUsd3JpdGU6byxmaW5hbDppLGRlc3Ryb3k6YX09ZnVuY3Rpb24oZSl7bGV0e3Byb21pc2U6dCxyZXNvbHZlOm59PXkoKTtjb25zdCBvPW5ldyBfLGk9by5zaWduYWwsYT1lKGFzeW5jIGZ1bmN0aW9uKigpe2Zvcig7Oyl7Y29uc3QgZT10O3Q9bnVsbDtjb25zdHtjaHVuazpvLGRvbmU6YSxjYjpsfT1hd2FpdCBlO2lmKHIubmV4dFRpY2sobCksYSlyZXR1cm47aWYoaS5hYm9ydGVkKXRocm93IG5ldyBwKHZvaWQgMCx7Y2F1c2U6aS5yZWFzb259KTsoe3Byb21pc2U6dCxyZXNvbHZlOm59PXkoKSkseWllbGQgb319KCkse3NpZ25hbDppfSk7cmV0dXJue3ZhbHVlOmEsd3JpdGUoZSx0LHIpe2NvbnN0IG89bjtuPW51bGwsbyh7Y2h1bms6ZSxkb25lOiExLGNiOnJ9KX0sZmluYWwoZSl7Y29uc3QgdD1uO249bnVsbCx0KHtkb25lOiEwLGNiOmV9KX0sZGVzdHJveShlLHQpe28uYWJvcnQoKSx0KGUpfX19KHQpO2lmKGwoZSkpcmV0dXJuIHcoTyxlLHtvYmplY3RNb2RlOiEwLHdyaXRlOm8sZmluYWw6aSxkZXN0cm95OmF9KTtjb25zdCBzPW51bGw9PWU/dm9pZCAwOmUudGhlbjtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBzKXtsZXQgdDtjb25zdCBuPUwocyxlLChlPT57aWYobnVsbCE9ZSl0aHJvdyBuZXcgdihcIm51bGx5XCIsXCJib2R5XCIsZSl9KSwoZT0+e2codCxlKX0pKTtyZXR1cm4gdD1uZXcgTyh7b2JqZWN0TW9kZTohMCxyZWFkYWJsZTohMSx3cml0ZTpvLGZpbmFsKGUpe2koKGFzeW5jKCk9Pnt0cnl7YXdhaXQgbixyLm5leHRUaWNrKGUsbnVsbCl9Y2F0Y2godCl7ci5uZXh0VGljayhlLHQpfX0pKX0sZGVzdHJveTphfSl9dGhyb3cgbmV3IHYoXCJJdGVyYWJsZSwgQXN5bmNJdGVyYWJsZSBvciBBc3luY0Z1bmN0aW9uXCIsbixlKX1pZih4KHQpKXJldHVybiBlKHQuYXJyYXlCdWZmZXIoKSk7aWYobCh0KSlyZXR1cm4gdyhPLHQse29iamVjdE1vZGU6ITAsd3JpdGFibGU6ITF9KTtpZihcIm9iamVjdFwiPT10eXBlb2YobnVsbD09dD92b2lkIDA6dC53cml0YWJsZSl8fFwib2JqZWN0XCI9PXR5cGVvZihudWxsPT10P3ZvaWQgMDp0LnJlYWRhYmxlKSlyZXR1cm4gRSh7cmVhZGFibGU6bnVsbCE9dCYmdC5yZWFkYWJsZT9jKG51bGw9PXQ/dm9pZCAwOnQucmVhZGFibGUpP251bGw9PXQ/dm9pZCAwOnQucmVhZGFibGU6ZSh0LnJlYWRhYmxlKTp2b2lkIDAsd3JpdGFibGU6bnVsbCE9dCYmdC53cml0YWJsZT91KG51bGw9PXQ/dm9pZCAwOnQud3JpdGFibGUpP251bGw9PXQ/dm9pZCAwOnQud3JpdGFibGU6ZSh0LndyaXRhYmxlKTp2b2lkIDB9KTtjb25zdCBvPW51bGw9PXQ/dm9pZCAwOnQudGhlbjtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBvKXtsZXQgZTtyZXR1cm4gTChvLHQsKHQ9PntudWxsIT10JiZlLnB1c2godCksZS5wdXNoKG51bGwpfSksKHQ9PntnKGUsdCl9KSksZT1uZXcgTyh7b2JqZWN0TW9kZTohMCx3cml0YWJsZTohMSxyZWFkKCl7fX0pfXRocm93IG5ldyBoKG4sW1wiQmxvYlwiLFwiUmVhZGFibGVTdHJlYW1cIixcIldyaXRhYmxlU3RyZWFtXCIsXCJTdHJlYW1cIixcIkl0ZXJhYmxlXCIsXCJBc3luY0l0ZXJhYmxlXCIsXCJGdW5jdGlvblwiLFwieyByZWFkYWJsZSwgd3JpdGFibGUgfSBwYWlyXCIsXCJQcm9taXNlXCJdLHQpfX0sODY6KGUsdCxuKT0+e2NvbnN0IHI9big1MzMpLHtBYm9ydEVycm9yOm8sY29kZXM6aX09bigxNDEpLHtFUlJfSU5WQUxJRF9BUkdfVFlQRTphLEVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFOmx9PWkse2tFbXB0eU9iamVjdDpzLG9uY2U6Y309big3NzUpLHt2YWxpZGF0ZUFib3J0U2lnbmFsOnUsdmFsaWRhdGVGdW5jdGlvbjpmLHZhbGlkYXRlT2JqZWN0OmQsdmFsaWRhdGVCb29sZWFuOnB9PW4oOTA0KSx7UHJvbWlzZTpoLFByb21pc2VQcm90b3R5cGVUaGVuOnZ9PW4oMTkxKSx7aXNDbG9zZWQ6Zyxpc1JlYWRhYmxlOkMsaXNSZWFkYWJsZU5vZGVTdHJlYW06bSxpc1JlYWRhYmxlU3RyZWFtOnksaXNSZWFkYWJsZUZpbmlzaGVkOncsaXNSZWFkYWJsZUVycm9yZWQ6Yixpc1dyaXRhYmxlOngsaXNXcml0YWJsZU5vZGVTdHJlYW06Xyxpc1dyaXRhYmxlU3RyZWFtOkwsaXNXcml0YWJsZUZpbmlzaGVkOk8saXNXcml0YWJsZUVycm9yZWQ6RSxpc05vZGVTdHJlYW06Uyx3aWxsRW1pdENsb3NlOk0sa0lzQ2xvc2VkUHJvbWlzZTpqfT1uKDEzMiksaz0oKT0+e307ZnVuY3Rpb24gUihlLHQsbil7dmFyIGkscDtpZigyPT09YXJndW1lbnRzLmxlbmd0aD8obj10LHQ9cyk6bnVsbD09dD90PXM6ZCh0LFwib3B0aW9uc1wiKSxmKG4sXCJjYWxsYmFja1wiKSx1KHQuc2lnbmFsLFwib3B0aW9ucy5zaWduYWxcIiksbj1jKG4pLHkoZSl8fEwoZSkpcmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtsZXQgaT0hMSxhPWs7aWYodC5zaWduYWwpaWYoYT0oKT0+e2k9ITAsbi5jYWxsKGUsbmV3IG8odm9pZCAwLHtjYXVzZTp0LnNpZ25hbC5yZWFzb259KSl9LHQuc2lnbmFsLmFib3J0ZWQpci5uZXh0VGljayhhKTtlbHNle2NvbnN0IHI9bjtuPWMoKCguLi5uKT0+e3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLGEpLHIuYXBwbHkoZSxuKX0pKSx0LnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIixhKX1jb25zdCBsPSguLi50KT0+e2l8fHIubmV4dFRpY2soKCgpPT5uLmFwcGx5KGUsdCkpKX07cmV0dXJuIHYoZVtqXS5wcm9taXNlLGwsbCksa30oZSx0LG4pO2lmKCFTKGUpKXRocm93IG5ldyBhKFwic3RyZWFtXCIsW1wiUmVhZGFibGVTdHJlYW1cIixcIldyaXRhYmxlU3RyZWFtXCIsXCJTdHJlYW1cIl0sZSk7Y29uc3QgaD1udWxsIT09KGk9dC5yZWFkYWJsZSkmJnZvaWQgMCE9PWk/aTptKGUpLFI9bnVsbCE9PShwPXQud3JpdGFibGUpJiZ2b2lkIDAhPT1wP3A6XyhlKSxQPWUuX3dyaXRhYmxlU3RhdGUsQT1lLl9yZWFkYWJsZVN0YXRlLEk9KCk9PntlLndyaXRhYmxlfHxWKCl9O2xldCBUPU0oZSkmJm0oZSk9PT1oJiZfKGUpPT09UixIPU8oZSwhMSk7Y29uc3QgVj0oKT0+e0g9ITAsZS5kZXN0cm95ZWQmJihUPSExKSwoIVR8fGUucmVhZGFibGUmJiFoKSYmKGgmJiFCfHxuLmNhbGwoZSkpfTtsZXQgQj13KGUsITEpO2NvbnN0IEQ9KCk9PntCPSEwLGUuZGVzdHJveWVkJiYoVD0hMSksKCFUfHxlLndyaXRhYmxlJiYhUikmJihSJiYhSHx8bi5jYWxsKGUpKX0sWj10PT57bi5jYWxsKGUsdCl9O2xldCAkPWcoZSk7Y29uc3QgRj0oKT0+eyQ9ITA7Y29uc3QgdD1FKGUpfHxiKGUpO3JldHVybiB0JiZcImJvb2xlYW5cIiE9dHlwZW9mIHQ/bi5jYWxsKGUsdCk6aCYmIUImJm0oZSwhMCkmJiF3KGUsITEpP24uY2FsbChlLG5ldyBsKTohUnx8SHx8TyhlLCExKT92b2lkIG4uY2FsbChlKTpuLmNhbGwoZSxuZXcgbCl9LE49KCk9PnskPSEwO2NvbnN0IHQ9RShlKXx8YihlKTtpZih0JiZcImJvb2xlYW5cIiE9dHlwZW9mIHQpcmV0dXJuIG4uY2FsbChlLHQpO24uY2FsbChlKX0sVT0oKT0+e2UucmVxLm9uKFwiZmluaXNoXCIsVil9OyFmdW5jdGlvbihlKXtyZXR1cm4gZS5zZXRIZWFkZXImJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuYWJvcnR9KGUpP1ImJiFQJiYoZS5vbihcImVuZFwiLEkpLGUub24oXCJjbG9zZVwiLEkpKTooZS5vbihcImNvbXBsZXRlXCIsViksVHx8ZS5vbihcImFib3J0XCIsRiksZS5yZXE/VSgpOmUub24oXCJyZXF1ZXN0XCIsVSkpLFR8fFwiYm9vbGVhblwiIT10eXBlb2YgZS5hYm9ydGVkfHxlLm9uKFwiYWJvcnRlZFwiLEYpLGUub24oXCJlbmRcIixEKSxlLm9uKFwiZmluaXNoXCIsViksITEhPT10LmVycm9yJiZlLm9uKFwiZXJyb3JcIixaKSxlLm9uKFwiY2xvc2VcIixGKSwkP3IubmV4dFRpY2soRik6bnVsbCE9UCYmUC5lcnJvckVtaXR0ZWR8fG51bGwhPUEmJkEuZXJyb3JFbWl0dGVkP1R8fHIubmV4dFRpY2soTik6KGh8fFQmJiFDKGUpfHwhSCYmITEhPT14KGUpKSYmKFJ8fFQmJiF4KGUpfHwhQiYmITEhPT1DKGUpKT9BJiZlLnJlcSYmZS5hYm9ydGVkJiZyLm5leHRUaWNrKE4pOnIubmV4dFRpY2soTik7Y29uc3QgVz0oKT0+e249ayxlLnJlbW92ZUxpc3RlbmVyKFwiYWJvcnRlZFwiLEYpLGUucmVtb3ZlTGlzdGVuZXIoXCJjb21wbGV0ZVwiLFYpLGUucmVtb3ZlTGlzdGVuZXIoXCJhYm9ydFwiLEYpLGUucmVtb3ZlTGlzdGVuZXIoXCJyZXF1ZXN0XCIsVSksZS5yZXEmJmUucmVxLnJlbW92ZUxpc3RlbmVyKFwiZmluaXNoXCIsViksZS5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLEkpLGUucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLEkpLGUucmVtb3ZlTGlzdGVuZXIoXCJmaW5pc2hcIixWKSxlLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsRCksZS5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsWiksZS5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsRil9O2lmKHQuc2lnbmFsJiYhJCl7Y29uc3QgaT0oKT0+e2NvbnN0IHI9bjtXKCksci5jYWxsKGUsbmV3IG8odm9pZCAwLHtjYXVzZTp0LnNpZ25hbC5yZWFzb259KSl9O2lmKHQuc2lnbmFsLmFib3J0ZWQpci5uZXh0VGljayhpKTtlbHNle2NvbnN0IHI9bjtuPWMoKCguLi5uKT0+e3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLGkpLHIuYXBwbHkoZSxuKX0pKSx0LnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIixpKX19cmV0dXJuIFd9ZS5leHBvcnRzPVIsZS5leHBvcnRzLmZpbmlzaGVkPWZ1bmN0aW9uKGUsdCl7dmFyIG47bGV0IHI9ITE7cmV0dXJuIG51bGw9PT10JiYodD1zKSxudWxsIT09KG49dCkmJnZvaWQgMCE9PW4mJm4uY2xlYW51cCYmKHAodC5jbGVhbnVwLFwiY2xlYW51cFwiKSxyPXQuY2xlYW51cCksbmV3IGgoKChuLG8pPT57Y29uc3QgaT1SKGUsdCwoZT0+e3ImJmkoKSxlP28oZSk6bigpfSkpfSkpfX0sOTEzOihlLHQsbik9Pntjb25zdCByPW4oNTMzKSx7UHJvbWlzZVByb3RvdHlwZVRoZW46byxTeW1ib2xBc3luY0l0ZXJhdG9yOmksU3ltYm9sSXRlcmF0b3I6YX09bigxOTEpLHtCdWZmZXI6bH09big0ODUpLHtFUlJfSU5WQUxJRF9BUkdfVFlQRTpzLEVSUl9TVFJFQU1fTlVMTF9WQUxVRVM6Y309bigxNDEpLmNvZGVzO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7bGV0IHUsZjtpZihcInN0cmluZ1wiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIGwpcmV0dXJuIG5ldyBlKHtvYmplY3RNb2RlOiEwLC4uLm4scmVhZCgpe3RoaXMucHVzaCh0KSx0aGlzLnB1c2gobnVsbCl9fSk7aWYodCYmdFtpXSlmPSEwLHU9dFtpXSgpO2Vsc2V7aWYoIXR8fCF0W2FdKXRocm93IG5ldyBzKFwiaXRlcmFibGVcIixbXCJJdGVyYWJsZVwiXSx0KTtmPSExLHU9dFthXSgpfWNvbnN0IGQ9bmV3IGUoe29iamVjdE1vZGU6ITAsaGlnaFdhdGVyTWFyazoxLC4uLm59KTtsZXQgcD0hMTtyZXR1cm4gZC5fcmVhZD1mdW5jdGlvbigpe3B8fChwPSEwLGFzeW5jIGZ1bmN0aW9uKCl7Zm9yKDs7KXt0cnl7Y29uc3R7dmFsdWU6ZSxkb25lOnR9PWY/YXdhaXQgdS5uZXh0KCk6dS5uZXh0KCk7aWYodClkLnB1c2gobnVsbCk7ZWxzZXtjb25zdCB0PWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUudGhlbj9hd2FpdCBlOmU7aWYobnVsbD09PXQpdGhyb3cgcD0hMSxuZXcgYztpZihkLnB1c2godCkpY29udGludWU7cD0hMX19Y2F0Y2goZSl7ZC5kZXN0cm95KGUpfWJyZWFrfX0oKSl9LGQuX2Rlc3Ryb3k9ZnVuY3Rpb24oZSx0KXtvKGFzeW5jIGZ1bmN0aW9uKGUpe2NvbnN0IHQ9bnVsbCE9ZSxuPVwiZnVuY3Rpb25cIj09dHlwZW9mIHUudGhyb3c7aWYodCYmbil7Y29uc3R7dmFsdWU6dCxkb25lOm59PWF3YWl0IHUudGhyb3coZSk7aWYoYXdhaXQgdCxuKXJldHVybn1pZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB1LnJldHVybil7Y29uc3R7dmFsdWU6ZX09YXdhaXQgdS5yZXR1cm4oKTthd2FpdCBlfX0oZSksKCgpPT5yLm5leHRUaWNrKHQsZSkpLChuPT5yLm5leHRUaWNrKHQsbnx8ZSkpKX0sZH19LDIwMDooZSx0LG4pPT57Y29uc3R7QXJyYXlJc0FycmF5OnIsT2JqZWN0U2V0UHJvdG90eXBlT2Y6b309bigxOTEpLHtFdmVudEVtaXR0ZXI6aX09big0NjUpO2Z1bmN0aW9uIGEoZSl7aS5jYWxsKHRoaXMsZSl9ZnVuY3Rpb24gbChlLHQsbil7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5wcmVwZW5kTGlzdGVuZXIpcmV0dXJuIGUucHJlcGVuZExpc3RlbmVyKHQsbik7ZS5fZXZlbnRzJiZlLl9ldmVudHNbdF0/cihlLl9ldmVudHNbdF0pP2UuX2V2ZW50c1t0XS51bnNoaWZ0KG4pOmUuX2V2ZW50c1t0XT1bbixlLl9ldmVudHNbdF1dOmUub24odCxuKX1vKGEucHJvdG90eXBlLGkucHJvdG90eXBlKSxvKGEsaSksYS5wcm90b3R5cGUucGlwZT1mdW5jdGlvbihlLHQpe2NvbnN0IG49dGhpcztmdW5jdGlvbiByKHQpe2Uud3JpdGFibGUmJiExPT09ZS53cml0ZSh0KSYmbi5wYXVzZSYmbi5wYXVzZSgpfWZ1bmN0aW9uIG8oKXtuLnJlYWRhYmxlJiZuLnJlc3VtZSYmbi5yZXN1bWUoKX1uLm9uKFwiZGF0YVwiLHIpLGUub24oXCJkcmFpblwiLG8pLGUuX2lzU3RkaW98fHQmJiExPT09dC5lbmR8fChuLm9uKFwiZW5kXCIscyksbi5vbihcImNsb3NlXCIsYykpO2xldCBhPSExO2Z1bmN0aW9uIHMoKXthfHwoYT0hMCxlLmVuZCgpKX1mdW5jdGlvbiBjKCl7YXx8KGE9ITAsXCJmdW5jdGlvblwiPT10eXBlb2YgZS5kZXN0cm95JiZlLmRlc3Ryb3koKSl9ZnVuY3Rpb24gdShlKXtmKCksMD09PWkubGlzdGVuZXJDb3VudCh0aGlzLFwiZXJyb3JcIikmJnRoaXMuZW1pdChcImVycm9yXCIsZSl9ZnVuY3Rpb24gZigpe24ucmVtb3ZlTGlzdGVuZXIoXCJkYXRhXCIsciksZS5yZW1vdmVMaXN0ZW5lcihcImRyYWluXCIsbyksbi5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLHMpLG4ucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLGMpLG4ucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLHUpLGUucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLHUpLG4ucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIixmKSxuLnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIixmKSxlLnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIixmKX1yZXR1cm4gbChuLFwiZXJyb3JcIix1KSxsKGUsXCJlcnJvclwiLHUpLG4ub24oXCJlbmRcIixmKSxuLm9uKFwiY2xvc2VcIixmKSxlLm9uKFwiY2xvc2VcIixmKSxlLmVtaXQoXCJwaXBlXCIsbiksZX0sZS5leHBvcnRzPXtTdHJlYW06YSxwcmVwZW5kTGlzdGVuZXI6bH19LDU1NDooZSx0LG4pPT57Y29uc3Qgcj1nbG9iYWxUaGlzLkFib3J0Q29udHJvbGxlcnx8big4NzYpLkFib3J0Q29udHJvbGxlcix7Y29kZXM6e0VSUl9JTlZBTElEX0FSR19WQUxVRTpvLEVSUl9JTlZBTElEX0FSR19UWVBFOmksRVJSX01JU1NJTkdfQVJHUzphLEVSUl9PVVRfT0ZfUkFOR0U6bH0sQWJvcnRFcnJvcjpzfT1uKDE0MSkse3ZhbGlkYXRlQWJvcnRTaWduYWw6Yyx2YWxpZGF0ZUludGVnZXI6dSx2YWxpZGF0ZU9iamVjdDpmfT1uKDkwNCksZD1uKDE5MSkuU3ltYm9sKFwia1dlYWtcIikse2ZpbmlzaGVkOnB9PW4oODYpLGg9big4MTgpLHthZGRBYm9ydFNpZ25hbE5vVmFsaWRhdGU6dn09bigzNzQpLHtpc1dyaXRhYmxlOmcsaXNOb2RlU3RyZWFtOkN9PW4oMTMyKSx7QXJyYXlQcm90b3R5cGVQdXNoOm0sTWF0aEZsb29yOnksTnVtYmVyOncsTnVtYmVySXNOYU46YixQcm9taXNlOngsUHJvbWlzZVJlamVjdDpfLFByb21pc2VQcm90b3R5cGVUaGVuOkwsU3ltYm9sOk99PW4oMTkxKSxFPU8oXCJrRW1wdHlcIiksUz1PKFwia0VvZlwiKTtmdW5jdGlvbiBNKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgaShcImZuXCIsW1wiRnVuY3Rpb25cIixcIkFzeW5jRnVuY3Rpb25cIl0sZSk7bnVsbCE9dCYmZih0LFwib3B0aW9uc1wiKSxudWxsIT0obnVsbD09dD92b2lkIDA6dC5zaWduYWwpJiZjKHQuc2lnbmFsLFwib3B0aW9ucy5zaWduYWxcIik7bGV0IG49MTtyZXR1cm4gbnVsbCE9KG51bGw9PXQ/dm9pZCAwOnQuY29uY3VycmVuY3kpJiYobj15KHQuY29uY3VycmVuY3kpKSx1KG4sXCJjb25jdXJyZW5jeVwiLDEpLGFzeW5jIGZ1bmN0aW9uKigpe3ZhciBvLGk7Y29uc3QgYT1uZXcgcixsPXRoaXMsYz1bXSx1PWEuc2lnbmFsLGY9e3NpZ25hbDp1fSxkPSgpPT5hLmFib3J0KCk7bGV0IHAsaDtudWxsIT10JiZudWxsIT09KG89dC5zaWduYWwpJiZ2b2lkIDAhPT1vJiZvLmFib3J0ZWQmJmQoKSxudWxsPT10fHxudWxsPT09KGk9dC5zaWduYWwpfHx2b2lkIDA9PT1pfHxpLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLGQpO2xldCB2PSExO2Z1bmN0aW9uIGcoKXt2PSEwfSFhc3luYyBmdW5jdGlvbigpe3RyeXtmb3IgYXdhaXQobGV0IHQgb2YgbCl7dmFyIHI7aWYodilyZXR1cm47aWYodS5hYm9ydGVkKXRocm93IG5ldyBzO3RyeXt0PWUodCxmKX1jYXRjaChlKXt0PV8oZSl9dCE9PUUmJihcImZ1bmN0aW9uXCI9PXR5cGVvZihudWxsPT09KHI9dCl8fHZvaWQgMD09PXI/dm9pZCAwOnIuY2F0Y2gpJiZ0LmNhdGNoKGcpLGMucHVzaCh0KSxwJiYocCgpLHA9bnVsbCksIXYmJmMubGVuZ3RoJiZjLmxlbmd0aD49biYmYXdhaXQgbmV3IHgoKGU9PntoPWV9KSkpfWMucHVzaChTKX1jYXRjaChlKXtjb25zdCB0PV8oZSk7TCh0LHZvaWQgMCxnKSxjLnB1c2godCl9ZmluYWxseXt2YXIgbzt2PSEwLHAmJihwKCkscD1udWxsKSxudWxsPT10fHxudWxsPT09KG89dC5zaWduYWwpfHx2b2lkIDA9PT1vfHxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLGQpfX0oKTt0cnl7Zm9yKDs7KXtmb3IoO2MubGVuZ3RoPjA7KXtjb25zdCBlPWF3YWl0IGNbMF07aWYoZT09PVMpcmV0dXJuO2lmKHUuYWJvcnRlZCl0aHJvdyBuZXcgcztlIT09RSYmKHlpZWxkIGUpLGMuc2hpZnQoKSxoJiYoaCgpLGg9bnVsbCl9YXdhaXQgbmV3IHgoKGU9PntwPWV9KSl9fWZpbmFsbHl7YS5hYm9ydCgpLHY9ITAsaCYmKGgoKSxoPW51bGwpfX0uY2FsbCh0aGlzKX1hc3luYyBmdW5jdGlvbiBqKGUsdD11bmRlZmluZWQpe2ZvciBhd2FpdChjb25zdCBuIG9mIGsuY2FsbCh0aGlzLGUsdCkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gayhlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IGkoXCJmblwiLFtcIkZ1bmN0aW9uXCIsXCJBc3luY0Z1bmN0aW9uXCJdLGUpO3JldHVybiBNLmNhbGwodGhpcywoYXN5bmMgZnVuY3Rpb24odCxuKXtyZXR1cm4gYXdhaXQgZSh0LG4pP3Q6RX0pLHQpfWNsYXNzIFIgZXh0ZW5kcyBhe2NvbnN0cnVjdG9yKCl7c3VwZXIoXCJyZWR1Y2VcIiksdGhpcy5tZXNzYWdlPVwiUmVkdWNlIG9mIGFuIGVtcHR5IHN0cmVhbSByZXF1aXJlcyBhbiBpbml0aWFsIHZhbHVlXCJ9fWZ1bmN0aW9uIFAoZSl7aWYoZT13KGUpLGIoZSkpcmV0dXJuIDA7aWYoZTwwKXRocm93IG5ldyBsKFwibnVtYmVyXCIsXCI+PSAwXCIsZSk7cmV0dXJuIGV9ZS5leHBvcnRzLnN0cmVhbVJldHVybmluZ09wZXJhdG9ycz17YXNJbmRleGVkUGFpcnM6ZnVuY3Rpb24oZT11bmRlZmluZWQpe3JldHVybiBudWxsIT1lJiZmKGUsXCJvcHRpb25zXCIpLG51bGwhPShudWxsPT1lP3ZvaWQgMDplLnNpZ25hbCkmJmMoZS5zaWduYWwsXCJvcHRpb25zLnNpZ25hbFwiKSxhc3luYyBmdW5jdGlvbiooKXtsZXQgdD0wO2ZvciBhd2FpdChjb25zdCByIG9mIHRoaXMpe3ZhciBuO2lmKG51bGwhPWUmJm51bGwhPT0obj1lLnNpZ25hbCkmJnZvaWQgMCE9PW4mJm4uYWJvcnRlZCl0aHJvdyBuZXcgcyh7Y2F1c2U6ZS5zaWduYWwucmVhc29ufSk7eWllbGRbdCsrLHJdfX0uY2FsbCh0aGlzKX0sZHJvcDpmdW5jdGlvbihlLHQ9dW5kZWZpbmVkKXtyZXR1cm4gbnVsbCE9dCYmZih0LFwib3B0aW9uc1wiKSxudWxsIT0obnVsbD09dD92b2lkIDA6dC5zaWduYWwpJiZjKHQuc2lnbmFsLFwib3B0aW9ucy5zaWduYWxcIiksZT1QKGUpLGFzeW5jIGZ1bmN0aW9uKigpe3ZhciBuO2lmKG51bGwhPXQmJm51bGwhPT0obj10LnNpZ25hbCkmJnZvaWQgMCE9PW4mJm4uYWJvcnRlZCl0aHJvdyBuZXcgcztmb3IgYXdhaXQoY29uc3QgbiBvZiB0aGlzKXt2YXIgcjtpZihudWxsIT10JiZudWxsIT09KHI9dC5zaWduYWwpJiZ2b2lkIDAhPT1yJiZyLmFib3J0ZWQpdGhyb3cgbmV3IHM7ZS0tPD0wJiYoeWllbGQgbil9fS5jYWxsKHRoaXMpfSxmaWx0ZXI6ayxmbGF0TWFwOmZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1NLmNhbGwodGhpcyxlLHQpO3JldHVybiBhc3luYyBmdW5jdGlvbiooKXtmb3IgYXdhaXQoY29uc3QgZSBvZiBuKXlpZWxkKmV9LmNhbGwodGhpcyl9LG1hcDpNLHRha2U6ZnVuY3Rpb24oZSx0PXVuZGVmaW5lZCl7cmV0dXJuIG51bGwhPXQmJmYodCxcIm9wdGlvbnNcIiksbnVsbCE9KG51bGw9PXQ/dm9pZCAwOnQuc2lnbmFsKSYmYyh0LnNpZ25hbCxcIm9wdGlvbnMuc2lnbmFsXCIpLGU9UChlKSxhc3luYyBmdW5jdGlvbiooKXt2YXIgbjtpZihudWxsIT10JiZudWxsIT09KG49dC5zaWduYWwpJiZ2b2lkIDAhPT1uJiZuLmFib3J0ZWQpdGhyb3cgbmV3IHM7Zm9yIGF3YWl0KGNvbnN0IG4gb2YgdGhpcyl7dmFyIHI7aWYobnVsbCE9dCYmbnVsbCE9PShyPXQuc2lnbmFsKSYmdm9pZCAwIT09ciYmci5hYm9ydGVkKXRocm93IG5ldyBzO2lmKCEoZS0tID4wKSlyZXR1cm47eWllbGQgbn19LmNhbGwodGhpcyl9LGNvbXBvc2U6ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZmKHQsXCJvcHRpb25zXCIpLG51bGwhPShudWxsPT10P3ZvaWQgMDp0LnNpZ25hbCkmJmModC5zaWduYWwsXCJvcHRpb25zLnNpZ25hbFwiKSxDKGUpJiYhZyhlKSl0aHJvdyBuZXcgbyhcInN0cmVhbVwiLGUsXCJtdXN0IGJlIHdyaXRhYmxlXCIpO2NvbnN0IG49aCh0aGlzLGUpO3JldHVybiBudWxsIT10JiZ0LnNpZ25hbCYmdih0LnNpZ25hbCxuKSxufX0sZS5leHBvcnRzLnByb21pc2VSZXR1cm5pbmdPcGVyYXRvcnM9e2V2ZXJ5OmFzeW5jIGZ1bmN0aW9uKGUsdD11bmRlZmluZWQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IGkoXCJmblwiLFtcIkZ1bmN0aW9uXCIsXCJBc3luY0Z1bmN0aW9uXCJdLGUpO3JldHVybiFhd2FpdCBqLmNhbGwodGhpcywoYXN5bmMoLi4udCk9PiFhd2FpdCBlKC4uLnQpKSx0KX0sZm9yRWFjaDphc3luYyBmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IGkoXCJmblwiLFtcIkZ1bmN0aW9uXCIsXCJBc3luY0Z1bmN0aW9uXCJdLGUpO2ZvciBhd2FpdChjb25zdCBuIG9mIE0uY2FsbCh0aGlzLChhc3luYyBmdW5jdGlvbih0LG4pe3JldHVybiBhd2FpdCBlKHQsbiksRX0pLHQpKTt9LHJlZHVjZTphc3luYyBmdW5jdGlvbihlLHQsbil7dmFyIG87aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgaShcInJlZHVjZXJcIixbXCJGdW5jdGlvblwiLFwiQXN5bmNGdW5jdGlvblwiXSxlKTtudWxsIT1uJiZmKG4sXCJvcHRpb25zXCIpLG51bGwhPShudWxsPT1uP3ZvaWQgMDpuLnNpZ25hbCkmJmMobi5zaWduYWwsXCJvcHRpb25zLnNpZ25hbFwiKTtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjE7aWYobnVsbCE9biYmbnVsbCE9PShvPW4uc2lnbmFsKSYmdm9pZCAwIT09byYmby5hYm9ydGVkKXtjb25zdCBlPW5ldyBzKHZvaWQgMCx7Y2F1c2U6bi5zaWduYWwucmVhc29ufSk7dGhyb3cgdGhpcy5vbmNlKFwiZXJyb3JcIiwoKCk9Pnt9KSksYXdhaXQgcCh0aGlzLmRlc3Ryb3koZSkpLGV9Y29uc3QgbD1uZXcgcix1PWwuc2lnbmFsO2lmKG51bGwhPW4mJm4uc2lnbmFsKXtjb25zdCBlPXtvbmNlOiEwLFtkXTp0aGlzfTtuLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwoKCk9PmwuYWJvcnQoKSksZSl9bGV0IGg9ITE7dHJ5e2ZvciBhd2FpdChjb25zdCByIG9mIHRoaXMpe3ZhciB2O2lmKGg9ITAsbnVsbCE9biYmbnVsbCE9PSh2PW4uc2lnbmFsKSYmdm9pZCAwIT09diYmdi5hYm9ydGVkKXRocm93IG5ldyBzO2E/dD1hd2FpdCBlKHQscix7c2lnbmFsOnV9KToodD1yLGE9ITApfWlmKCFoJiYhYSl0aHJvdyBuZXcgUn1maW5hbGx5e2wuYWJvcnQoKX1yZXR1cm4gdH0sdG9BcnJheTphc3luYyBmdW5jdGlvbihlKXtudWxsIT1lJiZmKGUsXCJvcHRpb25zXCIpLG51bGwhPShudWxsPT1lP3ZvaWQgMDplLnNpZ25hbCkmJmMoZS5zaWduYWwsXCJvcHRpb25zLnNpZ25hbFwiKTtjb25zdCB0PVtdO2ZvciBhd2FpdChjb25zdCByIG9mIHRoaXMpe3ZhciBuO2lmKG51bGwhPWUmJm51bGwhPT0obj1lLnNpZ25hbCkmJnZvaWQgMCE9PW4mJm4uYWJvcnRlZCl0aHJvdyBuZXcgcyh2b2lkIDAse2NhdXNlOmUuc2lnbmFsLnJlYXNvbn0pO20odCxyKX1yZXR1cm4gdH0sc29tZTpqLGZpbmQ6YXN5bmMgZnVuY3Rpb24oZSx0KXtmb3IgYXdhaXQoY29uc3QgbiBvZiBrLmNhbGwodGhpcyxlLHQpKXJldHVybiBufX19LDQ2NzooZSx0LG4pPT57Y29uc3R7T2JqZWN0U2V0UHJvdG90eXBlT2Y6cn09bigxOTEpO2UuZXhwb3J0cz1pO2NvbnN0IG89bigyMTApO2Z1bmN0aW9uIGkoZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgaSkpcmV0dXJuIG5ldyBpKGUpO28uY2FsbCh0aGlzLGUpfXIoaS5wcm90b3R5cGUsby5wcm90b3R5cGUpLHIoaSxvKSxpLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKGUsdCxuKXtuKG51bGwsZSl9fSw3NTQ6KGUsdCxuKT0+e2NvbnN0IHI9big1MzMpLHtBcnJheUlzQXJyYXk6byxQcm9taXNlOmksU3ltYm9sQXN5bmNJdGVyYXRvcjphfT1uKDE5MSksbD1uKDg2KSx7b25jZTpzfT1uKDc3NSksYz1uKDIzMCksdT1uKDE4Mikse2FnZ3JlZ2F0ZVR3b0Vycm9yczpmLGNvZGVzOntFUlJfSU5WQUxJRF9BUkdfVFlQRTpkLEVSUl9JTlZBTElEX1JFVFVSTl9WQUxVRTpwLEVSUl9NSVNTSU5HX0FSR1M6aCxFUlJfU1RSRUFNX0RFU1RST1lFRDp2LEVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFOmd9LEFib3J0RXJyb3I6Q309bigxNDEpLHt2YWxpZGF0ZUZ1bmN0aW9uOm0sdmFsaWRhdGVBYm9ydFNpZ25hbDp5fT1uKDkwNCkse2lzSXRlcmFibGU6dyxpc1JlYWRhYmxlOmIsaXNSZWFkYWJsZU5vZGVTdHJlYW06eCxpc05vZGVTdHJlYW06Xyxpc1RyYW5zZm9ybVN0cmVhbTpMLGlzV2ViU3RyZWFtOk8saXNSZWFkYWJsZVN0cmVhbTpFLGlzUmVhZGFibGVFbmRlZDpTfT1uKDEzMiksTT1nbG9iYWxUaGlzLkFib3J0Q29udHJvbGxlcnx8big4NzYpLkFib3J0Q29udHJvbGxlcjtsZXQgaixrO2Z1bmN0aW9uIFIoZSx0LG4pe2xldCByPSExO3JldHVybiBlLm9uKFwiY2xvc2VcIiwoKCk9PntyPSEwfSkpLHtkZXN0cm95OnQ9PntyfHwocj0hMCxjLmRlc3Ryb3llcihlLHR8fG5ldyB2KFwicGlwZVwiKSkpfSxjbGVhbnVwOmwoZSx7cmVhZGFibGU6dCx3cml0YWJsZTpufSwoZT0+e3I9IWV9KSl9fWZ1bmN0aW9uIFAoZSl7aWYodyhlKSlyZXR1cm4gZTtpZih4KGUpKXJldHVybiBhc3luYyBmdW5jdGlvbiooZSl7a3x8KGs9big4NTgpKSx5aWVsZCprLnByb3RvdHlwZVthXS5jYWxsKGUpfShlKTt0aHJvdyBuZXcgZChcInZhbFwiLFtcIlJlYWRhYmxlXCIsXCJJdGVyYWJsZVwiLFwiQXN5bmNJdGVyYWJsZVwiXSxlKX1hc3luYyBmdW5jdGlvbiBBKGUsdCxuLHtlbmQ6cn0pe2xldCBvLGE9bnVsbDtjb25zdCBzPWU9PntpZihlJiYobz1lKSxhKXtjb25zdCBlPWE7YT1udWxsLGUoKX19LGM9KCk9Pm5ldyBpKCgoZSx0KT0+e28/dChvKTphPSgpPT57bz90KG8pOmUoKX19KSk7dC5vbihcImRyYWluXCIscyk7Y29uc3QgdT1sKHQse3JlYWRhYmxlOiExfSxzKTt0cnl7dC53cml0YWJsZU5lZWREcmFpbiYmYXdhaXQgYygpO2ZvciBhd2FpdChjb25zdCBuIG9mIGUpdC53cml0ZShuKXx8YXdhaXQgYygpO3ImJnQuZW5kKCksYXdhaXQgYygpLG4oKX1jYXRjaChlKXtuKG8hPT1lP2YobyxlKTplKX1maW5hbGx5e3UoKSx0Lm9mZihcImRyYWluXCIscyl9fWFzeW5jIGZ1bmN0aW9uIEkoZSx0LG4se2VuZDpyfSl7TCh0KSYmKHQ9dC53cml0YWJsZSk7Y29uc3Qgbz10LmdldFdyaXRlcigpO3RyeXtmb3IgYXdhaXQoY29uc3QgdCBvZiBlKWF3YWl0IG8ucmVhZHksby53cml0ZSh0KS5jYXRjaCgoKCk9Pnt9KSk7YXdhaXQgby5yZWFkeSxyJiZhd2FpdCBvLmNsb3NlKCksbigpfWNhdGNoKGUpe3RyeXthd2FpdCBvLmFib3J0KGUpLG4oZSl9Y2F0Y2goZSl7bihlKX19fWZ1bmN0aW9uIFQoZSx0LGkpe2lmKDE9PT1lLmxlbmd0aCYmbyhlWzBdKSYmKGU9ZVswXSksZS5sZW5ndGg8Mil0aHJvdyBuZXcgaChcInN0cmVhbXNcIik7Y29uc3QgYT1uZXcgTSxsPWEuc2lnbmFsLHM9bnVsbD09aT92b2lkIDA6aS5zaWduYWwsYz1bXTtmdW5jdGlvbiBmKCl7VihuZXcgQyl9bGV0IHYsZzt5KHMsXCJvcHRpb25zLnNpZ25hbFwiKSxudWxsPT1zfHxzLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLGYpO2NvbnN0IG09W107bGV0IFMsaz0wO2Z1bmN0aW9uIFQoZSl7VihlLDA9PS0tayl9ZnVuY3Rpb24gVihlLG4pe2lmKCFlfHx2JiZcIkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFXCIhPT12LmNvZGV8fCh2PWUpLHZ8fG4pe2Zvcig7bS5sZW5ndGg7KW0uc2hpZnQoKSh2KTtudWxsPT1zfHxzLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLGYpLGEuYWJvcnQoKSxuJiYodnx8Yy5mb3JFYWNoKChlPT5lKCkpKSxyLm5leHRUaWNrKHQsdixnKSl9fWZvcihsZXQgWj0wO1o8ZS5sZW5ndGg7WisrKXtjb25zdCAkPWVbWl0sRj1aPGUubGVuZ3RoLTEsTj1aPjAsVT1GfHwhMSE9PShudWxsPT1pP3ZvaWQgMDppLmVuZCksVz1aPT09ZS5sZW5ndGgtMTtpZihfKCQpKXtpZihVKXtjb25zdHtkZXN0cm95OkcsY2xlYW51cDpxfT1SKCQsRixOKTttLnB1c2goRyksYigkKSYmVyYmYy5wdXNoKHEpfWZ1bmN0aW9uIHooZSl7ZSYmXCJBYm9ydEVycm9yXCIhPT1lLm5hbWUmJlwiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0VcIiE9PWUuY29kZSYmVChlKX0kLm9uKFwiZXJyb3JcIix6KSxiKCQpJiZXJiZjLnB1c2goKCgpPT57JC5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIseil9KSl9aWYoMD09PVopaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgJCl7aWYoUz0kKHtzaWduYWw6bH0pLCF3KFMpKXRocm93IG5ldyBwKFwiSXRlcmFibGUsIEFzeW5jSXRlcmFibGUgb3IgU3RyZWFtXCIsXCJzb3VyY2VcIixTKX1lbHNlIFM9dygkKXx8eCgkKXx8TCgkKT8kOnUuZnJvbSgkKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mICQpe3ZhciBCO2lmKFM9TChTKT9QKG51bGw9PT0oQj1TKXx8dm9pZCAwPT09Qj92b2lkIDA6Qi5yZWFkYWJsZSk6UChTKSxTPSQoUyx7c2lnbmFsOmx9KSxGKXtpZighdyhTLCEwKSl0aHJvdyBuZXcgcChcIkFzeW5jSXRlcmFibGVcIixgdHJhbnNmb3JtWyR7Wi0xfV1gLFMpfWVsc2V7dmFyIEQ7anx8KGo9big0NjcpKTtjb25zdCBZPW5ldyBqKHtvYmplY3RNb2RlOiEwfSksSz1udWxsPT09KEQ9Uyl8fHZvaWQgMD09PUQ/dm9pZCAwOkQudGhlbjtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBLKWsrKyxLLmNhbGwoUywoZT0+e2c9ZSxudWxsIT1lJiZZLndyaXRlKGUpLFUmJlkuZW5kKCksci5uZXh0VGljayhUKX0pLChlPT57WS5kZXN0cm95KGUpLHIubmV4dFRpY2soVCxlKX0pKTtlbHNlIGlmKHcoUywhMCkpaysrLEEoUyxZLFQse2VuZDpVfSk7ZWxzZXtpZighRShTKSYmIUwoUykpdGhyb3cgbmV3IHAoXCJBc3luY0l0ZXJhYmxlIG9yIFByb21pc2VcIixcImRlc3RpbmF0aW9uXCIsUyk7e2NvbnN0IFE9Uy5yZWFkYWJsZXx8UztrKyssQShRLFksVCx7ZW5kOlV9KX19Uz1ZO2NvbnN0e2Rlc3Ryb3k6WCxjbGVhbnVwOkp9PVIoUywhMSwhMCk7bS5wdXNoKFgpLFcmJmMucHVzaChKKX19ZWxzZSBpZihfKCQpKXtpZih4KFMpKXtrKz0yO2NvbnN0IGVlPUgoUywkLFQse2VuZDpVfSk7YigkKSYmVyYmYy5wdXNoKGVlKX1lbHNlIGlmKEwoUyl8fEUoUykpe2NvbnN0IHRlPVMucmVhZGFibGV8fFM7aysrLEEodGUsJCxULHtlbmQ6VX0pfWVsc2V7aWYoIXcoUykpdGhyb3cgbmV3IGQoXCJ2YWxcIixbXCJSZWFkYWJsZVwiLFwiSXRlcmFibGVcIixcIkFzeW5jSXRlcmFibGVcIixcIlJlYWRhYmxlU3RyZWFtXCIsXCJUcmFuc2Zvcm1TdHJlYW1cIl0sUyk7aysrLEEoUywkLFQse2VuZDpVfSl9Uz0kfWVsc2UgaWYoTygkKSl7aWYoeChTKSlrKyssSShQKFMpLCQsVCx7ZW5kOlV9KTtlbHNlIGlmKEUoUyl8fHcoUykpaysrLEkoUywkLFQse2VuZDpVfSk7ZWxzZXtpZighTChTKSl0aHJvdyBuZXcgZChcInZhbFwiLFtcIlJlYWRhYmxlXCIsXCJJdGVyYWJsZVwiLFwiQXN5bmNJdGVyYWJsZVwiLFwiUmVhZGFibGVTdHJlYW1cIixcIlRyYW5zZm9ybVN0cmVhbVwiXSxTKTtrKyssSShTLnJlYWRhYmxlLCQsVCx7ZW5kOlV9KX1TPSR9ZWxzZSBTPXUuZnJvbSgkKX1yZXR1cm4obnVsbCE9bCYmbC5hYm9ydGVkfHxudWxsIT1zJiZzLmFib3J0ZWQpJiZyLm5leHRUaWNrKGYpLFN9ZnVuY3Rpb24gSChlLHQsbix7ZW5kOm99KXtsZXQgaT0hMTtpZih0Lm9uKFwiY2xvc2VcIiwoKCk9PntpfHxuKG5ldyBnKX0pKSxlLnBpcGUodCx7ZW5kOiExfSksbyl7ZnVuY3Rpb24gYSgpe2k9ITAsdC5lbmQoKX1TKGUpP3IubmV4dFRpY2soYSk6ZS5vbmNlKFwiZW5kXCIsYSl9ZWxzZSBuKCk7cmV0dXJuIGwoZSx7cmVhZGFibGU6ITAsd3JpdGFibGU6ITF9LCh0PT57Y29uc3Qgcj1lLl9yZWFkYWJsZVN0YXRlO3QmJlwiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0VcIj09PXQuY29kZSYmciYmci5lbmRlZCYmIXIuZXJyb3JlZCYmIXIuZXJyb3JFbWl0dGVkP2Uub25jZShcImVuZFwiLG4pLm9uY2UoXCJlcnJvclwiLG4pOm4odCl9KSksbCh0LHtyZWFkYWJsZTohMSx3cml0YWJsZTohMH0sbil9ZS5leHBvcnRzPXtwaXBlbGluZUltcGw6VCxwaXBlbGluZTpmdW5jdGlvbiguLi5lKXtyZXR1cm4gVChlLHMoZnVuY3Rpb24oZSl7cmV0dXJuIG0oZVtlLmxlbmd0aC0xXSxcInN0cmVhbXNbc3RyZWFtLmxlbmd0aCAtIDFdXCIpLGUucG9wKCl9KGUpKSl9fX0sODU4OihlLHQsbik9Pntjb25zdCByPW4oNTMzKSx7QXJyYXlQcm90b3R5cGVJbmRleE9mOm8sTnVtYmVySXNJbnRlZ2VyOmksTnVtYmVySXNOYU46YSxOdW1iZXJQYXJzZUludDpsLE9iamVjdERlZmluZVByb3BlcnRpZXM6cyxPYmplY3RLZXlzOmMsT2JqZWN0U2V0UHJvdG90eXBlT2Y6dSxQcm9taXNlOmYsU2FmZVNldDpkLFN5bWJvbEFzeW5jSXRlcmF0b3I6cCxTeW1ib2w6aH09bigxOTEpO2UuZXhwb3J0cz1ELEQuUmVhZGFibGVTdGF0ZT1CO2NvbnN0e0V2ZW50RW1pdHRlcjp2fT1uKDQ2NSkse1N0cmVhbTpnLHByZXBlbmRMaXN0ZW5lcjpDfT1uKDIwMCkse0J1ZmZlcjptfT1uKDQ4NSkse2FkZEFib3J0U2lnbmFsOnl9PW4oMzc0KSx3PW4oODYpO2xldCBiPW4oNzc1KS5kZWJ1Z2xvZyhcInN0cmVhbVwiLChlPT57Yj1lfSkpO2NvbnN0IHg9big2MTYpLF89bigyMzApLHtnZXRIaWdoV2F0ZXJNYXJrOkwsZ2V0RGVmYXVsdEhpZ2hXYXRlck1hcms6T309big0OTgpLHthZ2dyZWdhdGVUd29FcnJvcnM6RSxjb2Rlczp7RVJSX0lOVkFMSURfQVJHX1RZUEU6UyxFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRDpNLEVSUl9PVVRfT0ZfUkFOR0U6aixFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GOmssRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVDpSfX09bigxNDEpLHt2YWxpZGF0ZU9iamVjdDpQfT1uKDkwNCksQT1oKFwia1BhdXNlZFwiKSx7U3RyaW5nRGVjb2RlcjpJfT1uKDQ2NCksVD1uKDkxMyk7dShELnByb3RvdHlwZSxnLnByb3RvdHlwZSksdShELGcpO2NvbnN0IEg9KCk9Pnt9LHtlcnJvck9yRGVzdHJveTpWfT1fO2Z1bmN0aW9uIEIoZSx0LHIpe1wiYm9vbGVhblwiIT10eXBlb2YgciYmKHI9dCBpbnN0YW5jZW9mIG4oMTgyKSksdGhpcy5vYmplY3RNb2RlPSEoIWV8fCFlLm9iamVjdE1vZGUpLHImJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhKCFlfHwhZS5yZWFkYWJsZU9iamVjdE1vZGUpKSx0aGlzLmhpZ2hXYXRlck1hcms9ZT9MKHRoaXMsZSxcInJlYWRhYmxlSGlnaFdhdGVyTWFya1wiLHIpOk8oITEpLHRoaXMuYnVmZmVyPW5ldyB4LHRoaXMubGVuZ3RoPTAsdGhpcy5waXBlcz1bXSx0aGlzLmZsb3dpbmc9bnVsbCx0aGlzLmVuZGVkPSExLHRoaXMuZW5kRW1pdHRlZD0hMSx0aGlzLnJlYWRpbmc9ITEsdGhpcy5jb25zdHJ1Y3RlZD0hMCx0aGlzLnN5bmM9ITAsdGhpcy5uZWVkUmVhZGFibGU9ITEsdGhpcy5lbWl0dGVkUmVhZGFibGU9ITEsdGhpcy5yZWFkYWJsZUxpc3RlbmluZz0hMSx0aGlzLnJlc3VtZVNjaGVkdWxlZD0hMSx0aGlzW0FdPW51bGwsdGhpcy5lcnJvckVtaXR0ZWQ9ITEsdGhpcy5lbWl0Q2xvc2U9IWV8fCExIT09ZS5lbWl0Q2xvc2UsdGhpcy5hdXRvRGVzdHJveT0hZXx8ITEhPT1lLmF1dG9EZXN0cm95LHRoaXMuZGVzdHJveWVkPSExLHRoaXMuZXJyb3JlZD1udWxsLHRoaXMuY2xvc2VkPSExLHRoaXMuY2xvc2VFbWl0dGVkPSExLHRoaXMuZGVmYXVsdEVuY29kaW5nPWUmJmUuZGVmYXVsdEVuY29kaW5nfHxcInV0ZjhcIix0aGlzLmF3YWl0RHJhaW5Xcml0ZXJzPW51bGwsdGhpcy5tdWx0aUF3YWl0RHJhaW49ITEsdGhpcy5yZWFkaW5nTW9yZT0hMSx0aGlzLmRhdGFFbWl0dGVkPSExLHRoaXMuZGVjb2Rlcj1udWxsLHRoaXMuZW5jb2Rpbmc9bnVsbCxlJiZlLmVuY29kaW5nJiYodGhpcy5kZWNvZGVyPW5ldyBJKGUuZW5jb2RpbmcpLHRoaXMuZW5jb2Rpbmc9ZS5lbmNvZGluZyl9ZnVuY3Rpb24gRChlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBEKSlyZXR1cm4gbmV3IEQoZSk7Y29uc3QgdD10aGlzIGluc3RhbmNlb2YgbigxODIpO3RoaXMuX3JlYWRhYmxlU3RhdGU9bmV3IEIoZSx0aGlzLHQpLGUmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnJlYWQmJih0aGlzLl9yZWFkPWUucmVhZCksXCJmdW5jdGlvblwiPT10eXBlb2YgZS5kZXN0cm95JiYodGhpcy5fZGVzdHJveT1lLmRlc3Ryb3kpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uc3RydWN0JiYodGhpcy5fY29uc3RydWN0PWUuY29uc3RydWN0KSxlLnNpZ25hbCYmIXQmJnkoZS5zaWduYWwsdGhpcykpLGcuY2FsbCh0aGlzLGUpLF8uY29uc3RydWN0KHRoaXMsKCgpPT57dGhpcy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGUmJlcodGhpcyx0aGlzLl9yZWFkYWJsZVN0YXRlKX0pKX1mdW5jdGlvbiBaKGUsdCxuLHIpe2IoXCJyZWFkYWJsZUFkZENodW5rXCIsdCk7Y29uc3Qgbz1lLl9yZWFkYWJsZVN0YXRlO2xldCBpO2lmKG8ub2JqZWN0TW9kZXx8KFwic3RyaW5nXCI9PXR5cGVvZiB0PyhuPW58fG8uZGVmYXVsdEVuY29kaW5nLG8uZW5jb2RpbmchPT1uJiYociYmby5lbmNvZGluZz90PW0uZnJvbSh0LG4pLnRvU3RyaW5nKG8uZW5jb2RpbmcpOih0PW0uZnJvbSh0LG4pLG49XCJcIikpKTp0IGluc3RhbmNlb2YgbT9uPVwiXCI6Zy5faXNVaW50OEFycmF5KHQpPyh0PWcuX3VpbnQ4QXJyYXlUb0J1ZmZlcih0KSxuPVwiXCIpOm51bGwhPXQmJihpPW5ldyBTKFwiY2h1bmtcIixbXCJzdHJpbmdcIixcIkJ1ZmZlclwiLFwiVWludDhBcnJheVwiXSx0KSkpLGkpVihlLGkpO2Vsc2UgaWYobnVsbD09PXQpby5yZWFkaW5nPSExLGZ1bmN0aW9uKGUsdCl7aWYoYihcIm9uRW9mQ2h1bmtcIiksIXQuZW5kZWQpe2lmKHQuZGVjb2Rlcil7Y29uc3QgZT10LmRlY29kZXIuZW5kKCk7ZSYmZS5sZW5ndGgmJih0LmJ1ZmZlci5wdXNoKGUpLHQubGVuZ3RoKz10Lm9iamVjdE1vZGU/MTplLmxlbmd0aCl9dC5lbmRlZD0hMCx0LnN5bmM/TihlKToodC5uZWVkUmVhZGFibGU9ITEsdC5lbWl0dGVkUmVhZGFibGU9ITAsVShlKSl9fShlLG8pO2Vsc2UgaWYoby5vYmplY3RNb2RlfHx0JiZ0Lmxlbmd0aD4wKWlmKHIpaWYoby5lbmRFbWl0dGVkKVYoZSxuZXcgUik7ZWxzZXtpZihvLmRlc3Ryb3llZHx8by5lcnJvcmVkKXJldHVybiExOyQoZSxvLHQsITApfWVsc2UgaWYoby5lbmRlZClWKGUsbmV3IGspO2Vsc2V7aWYoby5kZXN0cm95ZWR8fG8uZXJyb3JlZClyZXR1cm4hMTtvLnJlYWRpbmc9ITEsby5kZWNvZGVyJiYhbj8odD1vLmRlY29kZXIud3JpdGUodCksby5vYmplY3RNb2RlfHwwIT09dC5sZW5ndGg/JChlLG8sdCwhMSk6VyhlLG8pKTokKGUsbyx0LCExKX1lbHNlIHJ8fChvLnJlYWRpbmc9ITEsVyhlLG8pKTtyZXR1cm4hby5lbmRlZCYmKG8ubGVuZ3RoPG8uaGlnaFdhdGVyTWFya3x8MD09PW8ubGVuZ3RoKX1mdW5jdGlvbiAkKGUsdCxuLHIpe3QuZmxvd2luZyYmMD09PXQubGVuZ3RoJiYhdC5zeW5jJiZlLmxpc3RlbmVyQ291bnQoXCJkYXRhXCIpPjA/KHQubXVsdGlBd2FpdERyYWluP3QuYXdhaXREcmFpbldyaXRlcnMuY2xlYXIoKTp0LmF3YWl0RHJhaW5Xcml0ZXJzPW51bGwsdC5kYXRhRW1pdHRlZD0hMCxlLmVtaXQoXCJkYXRhXCIsbikpOih0Lmxlbmd0aCs9dC5vYmplY3RNb2RlPzE6bi5sZW5ndGgscj90LmJ1ZmZlci51bnNoaWZ0KG4pOnQuYnVmZmVyLnB1c2gobiksdC5uZWVkUmVhZGFibGUmJk4oZSkpLFcoZSx0KX1mdW5jdGlvbiBGKGUsdCl7cmV0dXJuIGU8PTB8fDA9PT10Lmxlbmd0aCYmdC5lbmRlZD8wOnQub2JqZWN0TW9kZT8xOmEoZSk/dC5mbG93aW5nJiZ0Lmxlbmd0aD90LmJ1ZmZlci5maXJzdCgpLmxlbmd0aDp0Lmxlbmd0aDplPD10Lmxlbmd0aD9lOnQuZW5kZWQ/dC5sZW5ndGg6MH1mdW5jdGlvbiBOKGUpe2NvbnN0IHQ9ZS5fcmVhZGFibGVTdGF0ZTtiKFwiZW1pdFJlYWRhYmxlXCIsdC5uZWVkUmVhZGFibGUsdC5lbWl0dGVkUmVhZGFibGUpLHQubmVlZFJlYWRhYmxlPSExLHQuZW1pdHRlZFJlYWRhYmxlfHwoYihcImVtaXRSZWFkYWJsZVwiLHQuZmxvd2luZyksdC5lbWl0dGVkUmVhZGFibGU9ITAsci5uZXh0VGljayhVLGUpKX1mdW5jdGlvbiBVKGUpe2NvbnN0IHQ9ZS5fcmVhZGFibGVTdGF0ZTtiKFwiZW1pdFJlYWRhYmxlX1wiLHQuZGVzdHJveWVkLHQubGVuZ3RoLHQuZW5kZWQpLHQuZGVzdHJveWVkfHx0LmVycm9yZWR8fCF0Lmxlbmd0aCYmIXQuZW5kZWR8fChlLmVtaXQoXCJyZWFkYWJsZVwiKSx0LmVtaXR0ZWRSZWFkYWJsZT0hMSksdC5uZWVkUmVhZGFibGU9IXQuZmxvd2luZyYmIXQuZW5kZWQmJnQubGVuZ3RoPD10LmhpZ2hXYXRlck1hcmssSyhlKX1mdW5jdGlvbiBXKGUsdCl7IXQucmVhZGluZ01vcmUmJnQuY29uc3RydWN0ZWQmJih0LnJlYWRpbmdNb3JlPSEwLHIubmV4dFRpY2soeixlLHQpKX1mdW5jdGlvbiB6KGUsdCl7Zm9yKDshdC5yZWFkaW5nJiYhdC5lbmRlZCYmKHQubGVuZ3RoPHQuaGlnaFdhdGVyTWFya3x8dC5mbG93aW5nJiYwPT09dC5sZW5ndGgpOyl7Y29uc3Qgbj10Lmxlbmd0aDtpZihiKFwibWF5YmVSZWFkTW9yZSByZWFkIDBcIiksZS5yZWFkKDApLG49PT10Lmxlbmd0aClicmVha310LnJlYWRpbmdNb3JlPSExfWZ1bmN0aW9uIEcoZSl7Y29uc3QgdD1lLl9yZWFkYWJsZVN0YXRlO3QucmVhZGFibGVMaXN0ZW5pbmc9ZS5saXN0ZW5lckNvdW50KFwicmVhZGFibGVcIik+MCx0LnJlc3VtZVNjaGVkdWxlZCYmITE9PT10W0FdP3QuZmxvd2luZz0hMDplLmxpc3RlbmVyQ291bnQoXCJkYXRhXCIpPjA/ZS5yZXN1bWUoKTp0LnJlYWRhYmxlTGlzdGVuaW5nfHwodC5mbG93aW5nPW51bGwpfWZ1bmN0aW9uIHEoZSl7YihcInJlYWRhYmxlIG5leHR0aWNrIHJlYWQgMFwiKSxlLnJlYWQoMCl9ZnVuY3Rpb24gWShlLHQpe2IoXCJyZXN1bWVcIix0LnJlYWRpbmcpLHQucmVhZGluZ3x8ZS5yZWFkKDApLHQucmVzdW1lU2NoZWR1bGVkPSExLGUuZW1pdChcInJlc3VtZVwiKSxLKGUpLHQuZmxvd2luZyYmIXQucmVhZGluZyYmZS5yZWFkKDApfWZ1bmN0aW9uIEsoZSl7Y29uc3QgdD1lLl9yZWFkYWJsZVN0YXRlO2ZvcihiKFwiZmxvd1wiLHQuZmxvd2luZyk7dC5mbG93aW5nJiZudWxsIT09ZS5yZWFkKCk7KTt9ZnVuY3Rpb24gWChlLHQpe1wiZnVuY3Rpb25cIiE9dHlwZW9mIGUucmVhZCYmKGU9RC53cmFwKGUse29iamVjdE1vZGU6ITB9KSk7Y29uc3Qgbj1hc3luYyBmdW5jdGlvbiooZSx0KXtsZXQgbixyPUg7ZnVuY3Rpb24gbyh0KXt0aGlzPT09ZT8ocigpLHI9SCk6cj10fWUub24oXCJyZWFkYWJsZVwiLG8pO2NvbnN0IGk9dyhlLHt3cml0YWJsZTohMX0sKGU9PntuPWU/RShuLGUpOm51bGwscigpLHI9SH0pKTt0cnl7Zm9yKDs7KXtjb25zdCB0PWUuZGVzdHJveWVkP251bGw6ZS5yZWFkKCk7aWYobnVsbCE9PXQpeWllbGQgdDtlbHNle2lmKG4pdGhyb3cgbjtpZihudWxsPT09bilyZXR1cm47YXdhaXQgbmV3IGYobyl9fX1jYXRjaChlKXt0aHJvdyBuPUUobixlKSxufWZpbmFsbHl7IW4mJiExPT09KG51bGw9PXQ/dm9pZCAwOnQuZGVzdHJveU9uUmV0dXJuKXx8dm9pZCAwIT09biYmIWUuX3JlYWRhYmxlU3RhdGUuYXV0b0Rlc3Ryb3k/KGUub2ZmKFwicmVhZGFibGVcIixvKSxpKCkpOl8uZGVzdHJveWVyKGUsbnVsbCl9fShlLHQpO3JldHVybiBuLnN0cmVhbT1lLG59ZnVuY3Rpb24gSihlLHQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gbnVsbDtsZXQgbjtyZXR1cm4gdC5vYmplY3RNb2RlP249dC5idWZmZXIuc2hpZnQoKTohZXx8ZT49dC5sZW5ndGg/KG49dC5kZWNvZGVyP3QuYnVmZmVyLmpvaW4oXCJcIik6MT09PXQuYnVmZmVyLmxlbmd0aD90LmJ1ZmZlci5maXJzdCgpOnQuYnVmZmVyLmNvbmNhdCh0Lmxlbmd0aCksdC5idWZmZXIuY2xlYXIoKSk6bj10LmJ1ZmZlci5jb25zdW1lKGUsdC5kZWNvZGVyKSxufWZ1bmN0aW9uIFEoZSl7Y29uc3QgdD1lLl9yZWFkYWJsZVN0YXRlO2IoXCJlbmRSZWFkYWJsZVwiLHQuZW5kRW1pdHRlZCksdC5lbmRFbWl0dGVkfHwodC5lbmRlZD0hMCxyLm5leHRUaWNrKGVlLHQsZSkpfWZ1bmN0aW9uIGVlKGUsdCl7aWYoYihcImVuZFJlYWRhYmxlTlRcIixlLmVuZEVtaXR0ZWQsZS5sZW5ndGgpLCFlLmVycm9yZWQmJiFlLmNsb3NlRW1pdHRlZCYmIWUuZW5kRW1pdHRlZCYmMD09PWUubGVuZ3RoKWlmKGUuZW5kRW1pdHRlZD0hMCx0LmVtaXQoXCJlbmRcIiksdC53cml0YWJsZSYmITE9PT10LmFsbG93SGFsZk9wZW4pci5uZXh0VGljayh0ZSx0KTtlbHNlIGlmKGUuYXV0b0Rlc3Ryb3kpe2NvbnN0IGU9dC5fd3JpdGFibGVTdGF0ZTsoIWV8fGUuYXV0b0Rlc3Ryb3kmJihlLmZpbmlzaGVkfHwhMT09PWUud3JpdGFibGUpKSYmdC5kZXN0cm95KCl9fWZ1bmN0aW9uIHRlKGUpe2Uud3JpdGFibGUmJiFlLndyaXRhYmxlRW5kZWQmJiFlLmRlc3Ryb3llZCYmZS5lbmQoKX1sZXQgbmU7ZnVuY3Rpb24gcmUoKXtyZXR1cm4gdm9pZCAwPT09bmUmJihuZT17fSksbmV9RC5wcm90b3R5cGUuZGVzdHJveT1fLmRlc3Ryb3ksRC5wcm90b3R5cGUuX3VuZGVzdHJveT1fLnVuZGVzdHJveSxELnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbihlLHQpe3QoZSl9LEQucHJvdG90eXBlW3YuY2FwdHVyZVJlamVjdGlvblN5bWJvbF09ZnVuY3Rpb24oZSl7dGhpcy5kZXN0cm95KGUpfSxELnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFoodGhpcyxlLHQsITEpfSxELnByb3RvdHlwZS51bnNoaWZ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFoodGhpcyxlLHQsITApfSxELnByb3RvdHlwZS5pc1BhdXNlZD1mdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4hMD09PWVbQV18fCExPT09ZS5mbG93aW5nfSxELnByb3RvdHlwZS5zZXRFbmNvZGluZz1mdW5jdGlvbihlKXtjb25zdCB0PW5ldyBJKGUpO3RoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlcj10LHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2Rpbmc9dGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyLmVuY29kaW5nO2NvbnN0IG49dGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXI7bGV0IHI9XCJcIjtmb3IoY29uc3QgZSBvZiBuKXIrPXQud3JpdGUoZSk7cmV0dXJuIG4uY2xlYXIoKSxcIlwiIT09ciYmbi5wdXNoKHIpLHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RoPXIubGVuZ3RoLHRoaXN9LEQucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oZSl7YihcInJlYWRcIixlKSx2b2lkIDA9PT1lP2U9TmFOOmkoZSl8fChlPWwoZSwxMCkpO2NvbnN0IHQ9dGhpcy5fcmVhZGFibGVTdGF0ZSxuPWU7aWYoZT50LmhpZ2hXYXRlck1hcmsmJih0LmhpZ2hXYXRlck1hcms9ZnVuY3Rpb24oZSl7aWYoZT4xMDczNzQxODI0KXRocm93IG5ldyBqKFwic2l6ZVwiLFwiPD0gMUdpQlwiLGUpO3JldHVybiBlLS0sZXw9ZT4+PjEsZXw9ZT4+PjIsZXw9ZT4+PjQsZXw9ZT4+PjgsZXw9ZT4+PjE2LCsrZX0oZSkpLDAhPT1lJiYodC5lbWl0dGVkUmVhZGFibGU9ITEpLDA9PT1lJiZ0Lm5lZWRSZWFkYWJsZSYmKCgwIT09dC5oaWdoV2F0ZXJNYXJrP3QubGVuZ3RoPj10LmhpZ2hXYXRlck1hcms6dC5sZW5ndGg+MCl8fHQuZW5kZWQpKXJldHVybiBiKFwicmVhZDogZW1pdFJlYWRhYmxlXCIsdC5sZW5ndGgsdC5lbmRlZCksMD09PXQubGVuZ3RoJiZ0LmVuZGVkP1EodGhpcyk6Tih0aGlzKSxudWxsO2lmKDA9PT0oZT1GKGUsdCkpJiZ0LmVuZGVkKXJldHVybiAwPT09dC5sZW5ndGgmJlEodGhpcyksbnVsbDtsZXQgcixvPXQubmVlZFJlYWRhYmxlO2lmKGIoXCJuZWVkIHJlYWRhYmxlXCIsbyksKDA9PT10Lmxlbmd0aHx8dC5sZW5ndGgtZTx0LmhpZ2hXYXRlck1hcmspJiYobz0hMCxiKFwibGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmtcIixvKSksdC5lbmRlZHx8dC5yZWFkaW5nfHx0LmRlc3Ryb3llZHx8dC5lcnJvcmVkfHwhdC5jb25zdHJ1Y3RlZClvPSExLGIoXCJyZWFkaW5nLCBlbmRlZCBvciBjb25zdHJ1Y3RpbmdcIixvKTtlbHNlIGlmKG8pe2IoXCJkbyByZWFkXCIpLHQucmVhZGluZz0hMCx0LnN5bmM9ITAsMD09PXQubGVuZ3RoJiYodC5uZWVkUmVhZGFibGU9ITApO3RyeXt0aGlzLl9yZWFkKHQuaGlnaFdhdGVyTWFyayl9Y2F0Y2goZSl7Vih0aGlzLGUpfXQuc3luYz0hMSx0LnJlYWRpbmd8fChlPUYobix0KSl9cmV0dXJuIHI9ZT4wP0ooZSx0KTpudWxsLG51bGw9PT1yPyh0Lm5lZWRSZWFkYWJsZT10Lmxlbmd0aDw9dC5oaWdoV2F0ZXJNYXJrLGU9MCk6KHQubGVuZ3RoLT1lLHQubXVsdGlBd2FpdERyYWluP3QuYXdhaXREcmFpbldyaXRlcnMuY2xlYXIoKTp0LmF3YWl0RHJhaW5Xcml0ZXJzPW51bGwpLDA9PT10Lmxlbmd0aCYmKHQuZW5kZWR8fCh0Lm5lZWRSZWFkYWJsZT0hMCksbiE9PWUmJnQuZW5kZWQmJlEodGhpcykpLG51bGw9PT1yfHx0LmVycm9yRW1pdHRlZHx8dC5jbG9zZUVtaXR0ZWR8fCh0LmRhdGFFbWl0dGVkPSEwLHRoaXMuZW1pdChcImRhdGFcIixyKSkscn0sRC5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IE0oXCJfcmVhZCgpXCIpfSxELnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj10aGlzLG89dGhpcy5fcmVhZGFibGVTdGF0ZTsxPT09by5waXBlcy5sZW5ndGgmJihvLm11bHRpQXdhaXREcmFpbnx8KG8ubXVsdGlBd2FpdERyYWluPSEwLG8uYXdhaXREcmFpbldyaXRlcnM9bmV3IGQoby5hd2FpdERyYWluV3JpdGVycz9bby5hd2FpdERyYWluV3JpdGVyc106W10pKSksby5waXBlcy5wdXNoKGUpLGIoXCJwaXBlIGNvdW50PSVkIG9wdHM9JWpcIixvLnBpcGVzLmxlbmd0aCx0KTtjb25zdCBpPXQmJiExPT09dC5lbmR8fGU9PT1yLnN0ZG91dHx8ZT09PXIuc3RkZXJyP3Y6YTtmdW5jdGlvbiBhKCl7YihcIm9uZW5kXCIpLGUuZW5kKCl9bGV0IGw7by5lbmRFbWl0dGVkP3IubmV4dFRpY2soaSk6bi5vbmNlKFwiZW5kXCIsaSksZS5vbihcInVucGlwZVwiLChmdW5jdGlvbiB0KHIsaSl7YihcIm9udW5waXBlXCIpLHI9PT1uJiZpJiYhMT09PWkuaGFzVW5waXBlZCYmKGkuaGFzVW5waXBlZD0hMCxiKFwiY2xlYW51cFwiKSxlLnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIixwKSxlLnJlbW92ZUxpc3RlbmVyKFwiZmluaXNoXCIsaCksbCYmZS5yZW1vdmVMaXN0ZW5lcihcImRyYWluXCIsbCksZS5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsZiksZS5yZW1vdmVMaXN0ZW5lcihcInVucGlwZVwiLHQpLG4ucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIixhKSxuLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsdiksbi5yZW1vdmVMaXN0ZW5lcihcImRhdGFcIix1KSxzPSEwLGwmJm8uYXdhaXREcmFpbldyaXRlcnMmJighZS5fd3JpdGFibGVTdGF0ZXx8ZS5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW4pJiZsKCkpfSkpO2xldCBzPSExO2Z1bmN0aW9uIGMoKXtzfHwoMT09PW8ucGlwZXMubGVuZ3RoJiZvLnBpcGVzWzBdPT09ZT8oYihcImZhbHNlIHdyaXRlIHJlc3BvbnNlLCBwYXVzZVwiLDApLG8uYXdhaXREcmFpbldyaXRlcnM9ZSxvLm11bHRpQXdhaXREcmFpbj0hMSk6by5waXBlcy5sZW5ndGg+MSYmby5waXBlcy5pbmNsdWRlcyhlKSYmKGIoXCJmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2VcIixvLmF3YWl0RHJhaW5Xcml0ZXJzLnNpemUpLG8uYXdhaXREcmFpbldyaXRlcnMuYWRkKGUpKSxuLnBhdXNlKCkpLGx8fChsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7Y29uc3Qgbj1lLl9yZWFkYWJsZVN0YXRlO24uYXdhaXREcmFpbldyaXRlcnM9PT10PyhiKFwicGlwZU9uRHJhaW5cIiwxKSxuLmF3YWl0RHJhaW5Xcml0ZXJzPW51bGwpOm4ubXVsdGlBd2FpdERyYWluJiYoYihcInBpcGVPbkRyYWluXCIsbi5hd2FpdERyYWluV3JpdGVycy5zaXplKSxuLmF3YWl0RHJhaW5Xcml0ZXJzLmRlbGV0ZSh0KSksbi5hd2FpdERyYWluV3JpdGVycyYmMCE9PW4uYXdhaXREcmFpbldyaXRlcnMuc2l6ZXx8IWUubGlzdGVuZXJDb3VudChcImRhdGFcIil8fGUucmVzdW1lKCl9fShuLGUpLGUub24oXCJkcmFpblwiLGwpKX1mdW5jdGlvbiB1KHQpe2IoXCJvbmRhdGFcIik7Y29uc3Qgbj1lLndyaXRlKHQpO2IoXCJkZXN0LndyaXRlXCIsbiksITE9PT1uJiZjKCl9ZnVuY3Rpb24gZih0KXtpZihiKFwib25lcnJvclwiLHQpLHYoKSxlLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixmKSwwPT09ZS5saXN0ZW5lckNvdW50KFwiZXJyb3JcIikpe2NvbnN0IG49ZS5fd3JpdGFibGVTdGF0ZXx8ZS5fcmVhZGFibGVTdGF0ZTtuJiYhbi5lcnJvckVtaXR0ZWQ/VihlLHQpOmUuZW1pdChcImVycm9yXCIsdCl9fWZ1bmN0aW9uIHAoKXtlLnJlbW92ZUxpc3RlbmVyKFwiZmluaXNoXCIsaCksdigpfWZ1bmN0aW9uIGgoKXtiKFwib25maW5pc2hcIiksZS5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIscCksdigpfWZ1bmN0aW9uIHYoKXtiKFwidW5waXBlXCIpLG4udW5waXBlKGUpfXJldHVybiBuLm9uKFwiZGF0YVwiLHUpLEMoZSxcImVycm9yXCIsZiksZS5vbmNlKFwiY2xvc2VcIixwKSxlLm9uY2UoXCJmaW5pc2hcIixoKSxlLmVtaXQoXCJwaXBlXCIsbiksITA9PT1lLndyaXRhYmxlTmVlZERyYWluP28uZmxvd2luZyYmYygpOm8uZmxvd2luZ3x8KGIoXCJwaXBlIHJlc3VtZVwiKSxuLnJlc3VtZSgpKSxlfSxELnByb3RvdHlwZS51bnBpcGU9ZnVuY3Rpb24oZSl7Y29uc3QgdD10aGlzLl9yZWFkYWJsZVN0YXRlO2lmKDA9PT10LnBpcGVzLmxlbmd0aClyZXR1cm4gdGhpcztpZighZSl7Y29uc3QgZT10LnBpcGVzO3QucGlwZXM9W10sdGhpcy5wYXVzZSgpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0uZW1pdChcInVucGlwZVwiLHRoaXMse2hhc1VucGlwZWQ6ITF9KTtyZXR1cm4gdGhpc31jb25zdCBuPW8odC5waXBlcyxlKTtyZXR1cm4tMT09PW58fCh0LnBpcGVzLnNwbGljZShuLDEpLDA9PT10LnBpcGVzLmxlbmd0aCYmdGhpcy5wYXVzZSgpLGUuZW1pdChcInVucGlwZVwiLHRoaXMse2hhc1VucGlwZWQ6ITF9KSksdGhpc30sRC5wcm90b3R5cGUub249ZnVuY3Rpb24oZSx0KXtjb25zdCBuPWcucHJvdG90eXBlLm9uLmNhbGwodGhpcyxlLHQpLG89dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm5cImRhdGFcIj09PWU/KG8ucmVhZGFibGVMaXN0ZW5pbmc9dGhpcy5saXN0ZW5lckNvdW50KFwicmVhZGFibGVcIik+MCwhMSE9PW8uZmxvd2luZyYmdGhpcy5yZXN1bWUoKSk6XCJyZWFkYWJsZVwiPT09ZSYmKG8uZW5kRW1pdHRlZHx8by5yZWFkYWJsZUxpc3RlbmluZ3x8KG8ucmVhZGFibGVMaXN0ZW5pbmc9by5uZWVkUmVhZGFibGU9ITAsby5mbG93aW5nPSExLG8uZW1pdHRlZFJlYWRhYmxlPSExLGIoXCJvbiByZWFkYWJsZVwiLG8ubGVuZ3RoLG8ucmVhZGluZyksby5sZW5ndGg/Tih0aGlzKTpvLnJlYWRpbmd8fHIubmV4dFRpY2socSx0aGlzKSkpLG59LEQucHJvdG90eXBlLmFkZExpc3RlbmVyPUQucHJvdG90eXBlLm9uLEQucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1nLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lci5jYWxsKHRoaXMsZSx0KTtyZXR1cm5cInJlYWRhYmxlXCI9PT1lJiZyLm5leHRUaWNrKEcsdGhpcyksbn0sRC5wcm90b3R5cGUub2ZmPUQucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLEQucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihlKXtjb25zdCB0PWcucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuXCJyZWFkYWJsZVwiIT09ZSYmdm9pZCAwIT09ZXx8ci5uZXh0VGljayhHLHRoaXMpLHR9LEQucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gZS5mbG93aW5nfHwoYihcInJlc3VtZVwiKSxlLmZsb3dpbmc9IWUucmVhZGFibGVMaXN0ZW5pbmcsZnVuY3Rpb24oZSx0KXt0LnJlc3VtZVNjaGVkdWxlZHx8KHQucmVzdW1lU2NoZWR1bGVkPSEwLHIubmV4dFRpY2soWSxlLHQpKX0odGhpcyxlKSksZVtBXT0hMSx0aGlzfSxELnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe3JldHVybiBiKFwiY2FsbCBwYXVzZSBmbG93aW5nPSVqXCIsdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKSwhMSE9PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyYmKGIoXCJwYXVzZVwiKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ITEsdGhpcy5lbWl0KFwicGF1c2VcIikpLHRoaXMuX3JlYWRhYmxlU3RhdGVbQV09ITAsdGhpc30sRC5wcm90b3R5cGUud3JhcD1mdW5jdGlvbihlKXtsZXQgdD0hMTtlLm9uKFwiZGF0YVwiLChuPT57IXRoaXMucHVzaChuKSYmZS5wYXVzZSYmKHQ9ITAsZS5wYXVzZSgpKX0pKSxlLm9uKFwiZW5kXCIsKCgpPT57dGhpcy5wdXNoKG51bGwpfSkpLGUub24oXCJlcnJvclwiLChlPT57Vih0aGlzLGUpfSkpLGUub24oXCJjbG9zZVwiLCgoKT0+e3RoaXMuZGVzdHJveSgpfSkpLGUub24oXCJkZXN0cm95XCIsKCgpPT57dGhpcy5kZXN0cm95KCl9KSksdGhpcy5fcmVhZD0oKT0+e3QmJmUucmVzdW1lJiYodD0hMSxlLnJlc3VtZSgpKX07Y29uc3Qgbj1jKGUpO2ZvcihsZXQgdD0xO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCByPW5bdF07dm9pZCAwPT09dGhpc1tyXSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZVtyXSYmKHRoaXNbcl09ZVtyXS5iaW5kKGUpKX1yZXR1cm4gdGhpc30sRC5wcm90b3R5cGVbcF09ZnVuY3Rpb24oKXtyZXR1cm4gWCh0aGlzKX0sRC5wcm90b3R5cGUuaXRlcmF0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJlAoZSxcIm9wdGlvbnNcIiksWCh0aGlzLGUpfSxzKEQucHJvdG90eXBlLHtyZWFkYWJsZTp7X19wcm90b19fOm51bGwsZ2V0KCl7Y29uc3QgZT10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiEoIWV8fCExPT09ZS5yZWFkYWJsZXx8ZS5kZXN0cm95ZWR8fGUuZXJyb3JFbWl0dGVkfHxlLmVuZEVtaXR0ZWQpfSxzZXQoZSl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGFibGU9ISFlKX19LHJlYWRhYmxlRGlkUmVhZDp7X19wcm90b19fOm51bGwsZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kYXRhRW1pdHRlZH19LHJlYWRhYmxlQWJvcnRlZDp7X19wcm90b19fOm51bGwsZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hKCExPT09dGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkYWJsZXx8IXRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkJiYhdGhpcy5fcmVhZGFibGVTdGF0ZS5lcnJvcmVkfHx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQpfX0scmVhZGFibGVIaWdoV2F0ZXJNYXJrOntfX3Byb3RvX186bnVsbCxlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSxyZWFkYWJsZUJ1ZmZlcjp7X19wcm90b19fOm51bGwsZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXJ9fSxyZWFkYWJsZUZsb3dpbmc6e19fcHJvdG9fXzpudWxsLGVudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZ30sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ZSl9fSxyZWFkYWJsZUxlbmd0aDp7X19wcm90b19fOm51bGwsZW51bWVyYWJsZTohMSxnZXQoKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGh9fSxyZWFkYWJsZU9iamVjdE1vZGU6e19fcHJvdG9fXzpudWxsLGVudW1lcmFibGU6ITEsZ2V0KCl7cmV0dXJuISF0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLm9iamVjdE1vZGV9fSxyZWFkYWJsZUVuY29kaW5nOntfX3Byb3RvX186bnVsbCxlbnVtZXJhYmxlOiExLGdldCgpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlP3RoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2Rpbmc6bnVsbH19LGVycm9yZWQ6e19fcHJvdG9fXzpudWxsLGVudW1lcmFibGU6ITEsZ2V0KCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGU/dGhpcy5fcmVhZGFibGVTdGF0ZS5lcnJvcmVkOm51bGx9fSxjbG9zZWQ6e19fcHJvdG9fXzpudWxsLGdldCgpe3JldHVybiEhdGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5jbG9zZWR9fSxkZXN0cm95ZWQ6e19fcHJvdG9fXzpudWxsLGVudW1lcmFibGU6ITEsZ2V0KCl7cmV0dXJuISF0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0KGUpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD1lKX19LHJlYWRhYmxlRW5kZWQ6e19fcHJvdG9fXzpudWxsLGVudW1lcmFibGU6ITEsZ2V0KCl7cmV0dXJuISF0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWR9fX0pLHMoQi5wcm90b3R5cGUse3BpcGVzQ291bnQ6e19fcHJvdG9fXzpudWxsLGdldCgpe3JldHVybiB0aGlzLnBpcGVzLmxlbmd0aH19LHBhdXNlZDp7X19wcm90b19fOm51bGwsZ2V0KCl7cmV0dXJuITEhPT10aGlzW0FdfSxzZXQoZSl7dGhpc1tBXT0hIWV9fX0pLEQuX2Zyb21MaXN0PUosRC5mcm9tPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFQoRCxlLHQpfSxELmZyb21XZWI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcmUoKS5uZXdTdHJlYW1SZWFkYWJsZUZyb21SZWFkYWJsZVN0cmVhbShlLHQpfSxELnRvV2ViPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHJlKCkubmV3UmVhZGFibGVTdHJlYW1Gcm9tU3RyZWFtUmVhZGFibGUoZSx0KX0sRC53cmFwPWZ1bmN0aW9uKGUsdCl7dmFyIG4scjtyZXR1cm4gbmV3IEQoe29iamVjdE1vZGU6bnVsbD09PShuPW51bGwhPT0ocj1lLnJlYWRhYmxlT2JqZWN0TW9kZSkmJnZvaWQgMCE9PXI/cjplLm9iamVjdE1vZGUpfHx2b2lkIDA9PT1ufHxuLC4uLnQsZGVzdHJveSh0LG4pe18uZGVzdHJveWVyKGUsdCksbih0KX19KS53cmFwKGUpfX0sNDk4OihlLHQsbik9Pntjb25zdHtNYXRoRmxvb3I6cixOdW1iZXJJc0ludGVnZXI6b309bigxOTEpLHtFUlJfSU5WQUxJRF9BUkdfVkFMVUU6aX09bigxNDEpLmNvZGVzO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGU/MTY6MTYzODR9ZS5leHBvcnRzPXtnZXRIaWdoV2F0ZXJNYXJrOmZ1bmN0aW9uKGUsdCxuLGwpe2NvbnN0IHM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsIT1lLmhpZ2hXYXRlck1hcms/ZS5oaWdoV2F0ZXJNYXJrOnQ/ZVtuXTpudWxsfSh0LGwsbik7aWYobnVsbCE9cyl7aWYoIW8ocyl8fHM8MCl0aHJvdyBuZXcgaShsP2BvcHRpb25zLiR7bn1gOlwib3B0aW9ucy5oaWdoV2F0ZXJNYXJrXCIscyk7cmV0dXJuIHIocyl9cmV0dXJuIGEoZS5vYmplY3RNb2RlKX0sZ2V0RGVmYXVsdEhpZ2hXYXRlck1hcms6YX19LDIxMDooZSx0LG4pPT57Y29uc3R7T2JqZWN0U2V0UHJvdG90eXBlT2Y6cixTeW1ib2w6b309bigxOTEpO2UuZXhwb3J0cz1jO2NvbnN0e0VSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEOml9PW4oMTQxKS5jb2RlcyxhPW4oMTgyKSx7Z2V0SGlnaFdhdGVyTWFyazpsfT1uKDQ5OCk7cihjLnByb3RvdHlwZSxhLnByb3RvdHlwZSkscihjLGEpO2NvbnN0IHM9byhcImtDYWxsYmFja1wiKTtmdW5jdGlvbiBjKGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGMpKXJldHVybiBuZXcgYyhlKTtjb25zdCB0PWU/bCh0aGlzLGUsXCJyZWFkYWJsZUhpZ2hXYXRlck1hcmtcIiwhMCk6bnVsbDswPT09dCYmKGU9ey4uLmUsaGlnaFdhdGVyTWFyazpudWxsLHJlYWRhYmxlSGlnaFdhdGVyTWFyazp0LHdyaXRhYmxlSGlnaFdhdGVyTWFyazplLndyaXRhYmxlSGlnaFdhdGVyTWFya3x8MH0pLGEuY2FsbCh0aGlzLGUpLHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYz0hMSx0aGlzW3NdPW51bGwsZSYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUudHJhbnNmb3JtJiYodGhpcy5fdHJhbnNmb3JtPWUudHJhbnNmb3JtKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmZsdXNoJiYodGhpcy5fZmx1c2g9ZS5mbHVzaCkpLHRoaXMub24oXCJwcmVmaW5pc2hcIixmKX1mdW5jdGlvbiB1KGUpe1wiZnVuY3Rpb25cIiE9dHlwZW9mIHRoaXMuX2ZsdXNofHx0aGlzLmRlc3Ryb3llZD8odGhpcy5wdXNoKG51bGwpLGUmJmUoKSk6dGhpcy5fZmx1c2goKCh0LG4pPT57dD9lP2UodCk6dGhpcy5kZXN0cm95KHQpOihudWxsIT1uJiZ0aGlzLnB1c2gobiksdGhpcy5wdXNoKG51bGwpLGUmJmUoKSl9KSl9ZnVuY3Rpb24gZigpe3RoaXMuX2ZpbmFsIT09dSYmdS5jYWxsKHRoaXMpfWMucHJvdG90eXBlLl9maW5hbD11LGMucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LG4pe3Rocm93IG5ldyBpKFwiX3RyYW5zZm9ybSgpXCIpfSxjLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9dGhpcy5fcmVhZGFibGVTdGF0ZSxvPXRoaXMuX3dyaXRhYmxlU3RhdGUsaT1yLmxlbmd0aDt0aGlzLl90cmFuc2Zvcm0oZSx0LCgoZSx0KT0+e2U/bihlKToobnVsbCE9dCYmdGhpcy5wdXNoKHQpLG8uZW5kZWR8fGk9PT1yLmxlbmd0aHx8ci5sZW5ndGg8ci5oaWdoV2F0ZXJNYXJrP24oKTp0aGlzW3NdPW4pfSkpfSxjLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbigpe2lmKHRoaXNbc10pe2NvbnN0IGU9dGhpc1tzXTt0aGlzW3NdPW51bGwsZSgpfX19LDEzMjooZSx0LG4pPT57Y29uc3R7U3ltYm9sOnIsU3ltYm9sQXN5bmNJdGVyYXRvcjpvLFN5bWJvbEl0ZXJhdG9yOmksU3ltYm9sRm9yOmF9PW4oMTkxKSxsPXIoXCJrRGVzdHJveWVkXCIpLHM9cihcImtJc0Vycm9yZWRcIiksYz1yKFwia0lzUmVhZGFibGVcIiksdT1yKFwia0lzRGlzdHVyYmVkXCIpLGY9YShcIm5vZGVqcy53ZWJzdHJlYW0uaXNDbG9zZWRQcm9taXNlXCIpLGQ9YShcIm5vZGVqcy53ZWJzdHJlYW0uY29udHJvbGxlckVycm9yRnVuY3Rpb25cIik7ZnVuY3Rpb24gcChlLHQ9ITEpe3ZhciBuO3JldHVybiEoIWV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUucGlwZXx8XCJmdW5jdGlvblwiIT10eXBlb2YgZS5vbnx8dCYmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUucGF1c2V8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUucmVzdW1lKXx8ZS5fd3JpdGFibGVTdGF0ZSYmITE9PT0obnVsbD09PShuPWUuX3JlYWRhYmxlU3RhdGUpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnJlYWRhYmxlKXx8ZS5fd3JpdGFibGVTdGF0ZSYmIWUuX3JlYWRhYmxlU3RhdGUpfWZ1bmN0aW9uIGgoZSl7dmFyIHQ7cmV0dXJuISghZXx8XCJmdW5jdGlvblwiIT10eXBlb2YgZS53cml0ZXx8XCJmdW5jdGlvblwiIT10eXBlb2YgZS5vbnx8ZS5fcmVhZGFibGVTdGF0ZSYmITE9PT0obnVsbD09PSh0PWUuX3dyaXRhYmxlU3RhdGUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LndyaXRhYmxlKSl9ZnVuY3Rpb24gdihlKXtyZXR1cm4gZSYmKGUuX3JlYWRhYmxlU3RhdGV8fGUuX3dyaXRhYmxlU3RhdGV8fFwiZnVuY3Rpb25cIj09dHlwZW9mIGUud3JpdGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUub258fFwiZnVuY3Rpb25cIj09dHlwZW9mIGUucGlwZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5vbil9ZnVuY3Rpb24gZyhlKXtyZXR1cm4hKCFlfHx2KGUpfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLnBpcGVUaHJvdWdofHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLmdldFJlYWRlcnx8XCJmdW5jdGlvblwiIT10eXBlb2YgZS5jYW5jZWwpfWZ1bmN0aW9uIEMoZSl7cmV0dXJuISghZXx8dihlKXx8XCJmdW5jdGlvblwiIT10eXBlb2YgZS5nZXRXcml0ZXJ8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUuYWJvcnQpfWZ1bmN0aW9uIG0oZSl7cmV0dXJuISghZXx8dihlKXx8XCJvYmplY3RcIiE9dHlwZW9mIGUucmVhZGFibGV8fFwib2JqZWN0XCIhPXR5cGVvZiBlLndyaXRhYmxlKX1mdW5jdGlvbiB5KGUpe2lmKCF2KGUpKXJldHVybiBudWxsO2NvbnN0IHQ9ZS5fd3JpdGFibGVTdGF0ZSxuPWUuX3JlYWRhYmxlU3RhdGUscj10fHxuO3JldHVybiEhKGUuZGVzdHJveWVkfHxlW2xdfHxudWxsIT1yJiZyLmRlc3Ryb3llZCl9ZnVuY3Rpb24gdyhlKXtpZighaChlKSlyZXR1cm4gbnVsbDtpZighMD09PWUud3JpdGFibGVFbmRlZClyZXR1cm4hMDtjb25zdCB0PWUuX3dyaXRhYmxlU3RhdGU7cmV0dXJuKG51bGw9PXR8fCF0LmVycm9yZWQpJiYoXCJib29sZWFuXCIhPXR5cGVvZihudWxsPT10P3ZvaWQgMDp0LmVuZGVkKT9udWxsOnQuZW5kZWQpfWZ1bmN0aW9uIGIoZSx0KXtpZighcChlKSlyZXR1cm4gbnVsbDtjb25zdCBuPWUuX3JlYWRhYmxlU3RhdGU7cmV0dXJuKG51bGw9PW58fCFuLmVycm9yZWQpJiYoXCJib29sZWFuXCIhPXR5cGVvZihudWxsPT1uP3ZvaWQgMDpuLmVuZEVtaXR0ZWQpP251bGw6ISEobi5lbmRFbWl0dGVkfHwhMT09PXQmJiEwPT09bi5lbmRlZCYmMD09PW4ubGVuZ3RoKSl9ZnVuY3Rpb24geChlKXtyZXR1cm4gZSYmbnVsbCE9ZVtjXT9lW2NdOlwiYm9vbGVhblwiIT10eXBlb2YobnVsbD09ZT92b2lkIDA6ZS5yZWFkYWJsZSk/bnVsbDoheShlKSYmcChlKSYmZS5yZWFkYWJsZSYmIWIoZSl9ZnVuY3Rpb24gXyhlKXtyZXR1cm5cImJvb2xlYW5cIiE9dHlwZW9mKG51bGw9PWU/dm9pZCAwOmUud3JpdGFibGUpP251bGw6IXkoZSkmJmgoZSkmJmUud3JpdGFibGUmJiF3KGUpfWZ1bmN0aW9uIEwoZSl7cmV0dXJuXCJib29sZWFuXCI9PXR5cGVvZiBlLl9jbG9zZWQmJlwiYm9vbGVhblwiPT10eXBlb2YgZS5fZGVmYXVsdEtlZXBBbGl2ZSYmXCJib29sZWFuXCI9PXR5cGVvZiBlLl9yZW1vdmVkQ29ubmVjdGlvbiYmXCJib29sZWFuXCI9PXR5cGVvZiBlLl9yZW1vdmVkQ29udExlbn1mdW5jdGlvbiBPKGUpe3JldHVyblwiYm9vbGVhblwiPT10eXBlb2YgZS5fc2VudDEwMCYmTChlKX1lLmV4cG9ydHM9e2tEZXN0cm95ZWQ6bCxpc0Rpc3R1cmJlZDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4hKCFlfHwhKG51bGwhPT0odD1lW3VdKSYmdm9pZCAwIT09dD90OmUucmVhZGFibGVEaWRSZWFkfHxlLnJlYWRhYmxlQWJvcnRlZCkpfSxrSXNEaXN0dXJiZWQ6dSxpc0Vycm9yZWQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8saSxhLGwsYyx1LGY7cmV0dXJuISghZXx8IShudWxsIT09KHQ9bnVsbCE9PShuPW51bGwhPT0ocj1udWxsIT09KG89bnVsbCE9PShpPW51bGwhPT0oYT1lW3NdKSYmdm9pZCAwIT09YT9hOmUucmVhZGFibGVFcnJvcmVkKSYmdm9pZCAwIT09aT9pOmUud3JpdGFibGVFcnJvcmVkKSYmdm9pZCAwIT09bz9vOm51bGw9PT0obD1lLl9yZWFkYWJsZVN0YXRlKXx8dm9pZCAwPT09bD92b2lkIDA6bC5lcnJvckVtaXR0ZWQpJiZ2b2lkIDAhPT1yP3I6bnVsbD09PShjPWUuX3dyaXRhYmxlU3RhdGUpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmVycm9yRW1pdHRlZCkmJnZvaWQgMCE9PW4/bjpudWxsPT09KHU9ZS5fcmVhZGFibGVTdGF0ZSl8fHZvaWQgMD09PXU/dm9pZCAwOnUuZXJyb3JlZCkmJnZvaWQgMCE9PXQ/dDpudWxsPT09KGY9ZS5fd3JpdGFibGVTdGF0ZSl8fHZvaWQgMD09PWY/dm9pZCAwOmYuZXJyb3JlZCkpfSxrSXNFcnJvcmVkOnMsaXNSZWFkYWJsZTp4LGtJc1JlYWRhYmxlOmMsa0lzQ2xvc2VkUHJvbWlzZTpmLGtDb250cm9sbGVyRXJyb3JGdW5jdGlvbjpkLGlzQ2xvc2VkOmZ1bmN0aW9uKGUpe2lmKCF2KGUpKXJldHVybiBudWxsO2lmKFwiYm9vbGVhblwiPT10eXBlb2YgZS5jbG9zZWQpcmV0dXJuIGUuY2xvc2VkO2NvbnN0IHQ9ZS5fd3JpdGFibGVTdGF0ZSxuPWUuX3JlYWRhYmxlU3RhdGU7cmV0dXJuXCJib29sZWFuXCI9PXR5cGVvZihudWxsPT10P3ZvaWQgMDp0LmNsb3NlZCl8fFwiYm9vbGVhblwiPT10eXBlb2YobnVsbD09bj92b2lkIDA6bi5jbG9zZWQpPyhudWxsPT10P3ZvaWQgMDp0LmNsb3NlZCl8fChudWxsPT1uP3ZvaWQgMDpuLmNsb3NlZCk6XCJib29sZWFuXCI9PXR5cGVvZiBlLl9jbG9zZWQmJkwoZSk/ZS5fY2xvc2VkOm51bGx9LGlzRGVzdHJveWVkOnksaXNEdXBsZXhOb2RlU3RyZWFtOmZ1bmN0aW9uKGUpe3JldHVybiEoIWV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUucGlwZXx8IWUuX3JlYWRhYmxlU3RhdGV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUub258fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUud3JpdGUpfSxpc0ZpbmlzaGVkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHYoZSk/ISgheShlKSYmKCExIT09KG51bGw9PXQ/dm9pZCAwOnQucmVhZGFibGUpJiZ4KGUpfHwhMSE9PShudWxsPT10P3ZvaWQgMDp0LndyaXRhYmxlKSYmXyhlKSkpOm51bGx9LGlzSXRlcmFibGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9ZSYmKCEwPT09dD9cImZ1bmN0aW9uXCI9PXR5cGVvZiBlW29dOiExPT09dD9cImZ1bmN0aW9uXCI9PXR5cGVvZiBlW2ldOlwiZnVuY3Rpb25cIj09dHlwZW9mIGVbb118fFwiZnVuY3Rpb25cIj09dHlwZW9mIGVbaV0pfSxpc1JlYWRhYmxlTm9kZVN0cmVhbTpwLGlzUmVhZGFibGVTdHJlYW06Zyxpc1JlYWRhYmxlRW5kZWQ6ZnVuY3Rpb24oZSl7aWYoIXAoZSkpcmV0dXJuIG51bGw7aWYoITA9PT1lLnJlYWRhYmxlRW5kZWQpcmV0dXJuITA7Y29uc3QgdD1lLl9yZWFkYWJsZVN0YXRlO3JldHVybiEoIXR8fHQuZXJyb3JlZCkmJihcImJvb2xlYW5cIiE9dHlwZW9mKG51bGw9PXQ/dm9pZCAwOnQuZW5kZWQpP251bGw6dC5lbmRlZCl9LGlzUmVhZGFibGVGaW5pc2hlZDpiLGlzUmVhZGFibGVFcnJvcmVkOmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuIHYoZSk/ZS5yZWFkYWJsZUVycm9yZWQ/ZS5yZWFkYWJsZUVycm9yZWQ6bnVsbCE9PSh0PW51bGw9PT0obj1lLl9yZWFkYWJsZVN0YXRlKXx8dm9pZCAwPT09bj92b2lkIDA6bi5lcnJvcmVkKSYmdm9pZCAwIT09dD90Om51bGw6bnVsbH0saXNOb2RlU3RyZWFtOnYsaXNXZWJTdHJlYW06ZnVuY3Rpb24oZSl7cmV0dXJuIGcoZSl8fEMoZSl8fG0oZSl9LGlzV3JpdGFibGU6Xyxpc1dyaXRhYmxlTm9kZVN0cmVhbTpoLGlzV3JpdGFibGVTdHJlYW06Qyxpc1dyaXRhYmxlRW5kZWQ6dyxpc1dyaXRhYmxlRmluaXNoZWQ6ZnVuY3Rpb24oZSx0KXtpZighaChlKSlyZXR1cm4gbnVsbDtpZighMD09PWUud3JpdGFibGVGaW5pc2hlZClyZXR1cm4hMDtjb25zdCBuPWUuX3dyaXRhYmxlU3RhdGU7cmV0dXJuKG51bGw9PW58fCFuLmVycm9yZWQpJiYoXCJib29sZWFuXCIhPXR5cGVvZihudWxsPT1uP3ZvaWQgMDpuLmZpbmlzaGVkKT9udWxsOiEhKG4uZmluaXNoZWR8fCExPT09dCYmITA9PT1uLmVuZGVkJiYwPT09bi5sZW5ndGgpKX0saXNXcml0YWJsZUVycm9yZWQ6ZnVuY3Rpb24oZSl7dmFyIHQsbjtyZXR1cm4gdihlKT9lLndyaXRhYmxlRXJyb3JlZD9lLndyaXRhYmxlRXJyb3JlZDpudWxsIT09KHQ9bnVsbD09PShuPWUuX3dyaXRhYmxlU3RhdGUpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmVycm9yZWQpJiZ2b2lkIDAhPT10P3Q6bnVsbDpudWxsfSxpc1NlcnZlclJlcXVlc3Q6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuXCJib29sZWFuXCI9PXR5cGVvZiBlLl9jb25zdW1pbmcmJlwiYm9vbGVhblwiPT10eXBlb2YgZS5fZHVtcGVkJiZ2b2lkIDA9PT0obnVsbD09PSh0PWUucmVxKXx8dm9pZCAwPT09dD92b2lkIDA6dC51cGdyYWRlT3JDb25uZWN0KX0saXNTZXJ2ZXJSZXNwb25zZTpPLHdpbGxFbWl0Q2xvc2U6ZnVuY3Rpb24oZSl7aWYoIXYoZSkpcmV0dXJuIG51bGw7Y29uc3QgdD1lLl93cml0YWJsZVN0YXRlLG49ZS5fcmVhZGFibGVTdGF0ZSxyPXR8fG47cmV0dXJuIXImJk8oZSl8fCEhKHImJnIuYXV0b0Rlc3Ryb3kmJnIuZW1pdENsb3NlJiYhMT09PXIuY2xvc2VkKX0saXNUcmFuc2Zvcm1TdHJlYW06bX19LDM3MzooZSx0LG4pPT57Y29uc3Qgcj1uKDUzMykse0FycmF5UHJvdG90eXBlU2xpY2U6byxFcnJvcjppLEZ1bmN0aW9uUHJvdG90eXBlU3ltYm9sSGFzSW5zdGFuY2U6YSxPYmplY3REZWZpbmVQcm9wZXJ0eTpsLE9iamVjdERlZmluZVByb3BlcnRpZXM6cyxPYmplY3RTZXRQcm90b3R5cGVPZjpjLFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlOnUsU3ltYm9sOmYsU3ltYm9sSGFzSW5zdGFuY2U6ZH09bigxOTEpO2UuZXhwb3J0cz1JLEkuV3JpdGFibGVTdGF0ZT1QO2NvbnN0e0V2ZW50RW1pdHRlcjpwfT1uKDQ2NSksaD1uKDIwMCkuU3RyZWFtLHtCdWZmZXI6dn09big0ODUpLGc9bigyMzApLHthZGRBYm9ydFNpZ25hbDpDfT1uKDM3NCkse2dldEhpZ2hXYXRlck1hcms6bSxnZXREZWZhdWx0SGlnaFdhdGVyTWFyazp5fT1uKDQ5OCkse0VSUl9JTlZBTElEX0FSR19UWVBFOncsRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQ6YixFUlJfTVVMVElQTEVfQ0FMTEJBQ0s6eCxFUlJfU1RSRUFNX0NBTk5PVF9QSVBFOl8sRVJSX1NUUkVBTV9ERVNUUk9ZRUQ6TCxFUlJfU1RSRUFNX0FMUkVBRFlfRklOSVNIRUQ6TyxFUlJfU1RSRUFNX05VTExfVkFMVUVTOkUsRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQ6UyxFUlJfVU5LTk9XTl9FTkNPRElORzpNfT1uKDE0MSkuY29kZXMse2Vycm9yT3JEZXN0cm95Omp9PWc7ZnVuY3Rpb24gaygpe31jKEkucHJvdG90eXBlLGgucHJvdG90eXBlKSxjKEksaCk7Y29uc3QgUj1mKFwia09uRmluaXNoZWRcIik7ZnVuY3Rpb24gUChlLHQscil7XCJib29sZWFuXCIhPXR5cGVvZiByJiYocj10IGluc3RhbmNlb2YgbigxODIpKSx0aGlzLm9iamVjdE1vZGU9ISghZXx8IWUub2JqZWN0TW9kZSksciYmKHRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVjdE1vZGV8fCEoIWV8fCFlLndyaXRhYmxlT2JqZWN0TW9kZSkpLHRoaXMuaGlnaFdhdGVyTWFyaz1lP20odGhpcyxlLFwid3JpdGFibGVIaWdoV2F0ZXJNYXJrXCIscik6eSghMSksdGhpcy5maW5hbENhbGxlZD0hMSx0aGlzLm5lZWREcmFpbj0hMSx0aGlzLmVuZGluZz0hMSx0aGlzLmVuZGVkPSExLHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5kZXN0cm95ZWQ9ITE7Y29uc3Qgbz0hKCFlfHwhMSE9PWUuZGVjb2RlU3RyaW5ncyk7dGhpcy5kZWNvZGVTdHJpbmdzPSFvLHRoaXMuZGVmYXVsdEVuY29kaW5nPWUmJmUuZGVmYXVsdEVuY29kaW5nfHxcInV0ZjhcIix0aGlzLmxlbmd0aD0wLHRoaXMud3JpdGluZz0hMSx0aGlzLmNvcmtlZD0wLHRoaXMuc3luYz0hMCx0aGlzLmJ1ZmZlclByb2Nlc3Npbmc9ITEsdGhpcy5vbndyaXRlPUIuYmluZCh2b2lkIDAsdCksdGhpcy53cml0ZWNiPW51bGwsdGhpcy53cml0ZWxlbj0wLHRoaXMuYWZ0ZXJXcml0ZVRpY2tJbmZvPW51bGwsQSh0aGlzKSx0aGlzLnBlbmRpbmdjYj0wLHRoaXMuY29uc3RydWN0ZWQ9ITAsdGhpcy5wcmVmaW5pc2hlZD0hMSx0aGlzLmVycm9yRW1pdHRlZD0hMSx0aGlzLmVtaXRDbG9zZT0hZXx8ITEhPT1lLmVtaXRDbG9zZSx0aGlzLmF1dG9EZXN0cm95PSFlfHwhMSE9PWUuYXV0b0Rlc3Ryb3ksdGhpcy5lcnJvcmVkPW51bGwsdGhpcy5jbG9zZWQ9ITEsdGhpcy5jbG9zZUVtaXR0ZWQ9ITEsdGhpc1tSXT1bXX1mdW5jdGlvbiBBKGUpe2UuYnVmZmVyZWQ9W10sZS5idWZmZXJlZEluZGV4PTAsZS5hbGxCdWZmZXJzPSEwLGUuYWxsTm9vcD0hMH1mdW5jdGlvbiBJKGUpe2NvbnN0IHQ9dGhpcyBpbnN0YW5jZW9mIG4oMTgyKTtpZighdCYmIWEoSSx0aGlzKSlyZXR1cm4gbmV3IEkoZSk7dGhpcy5fd3JpdGFibGVTdGF0ZT1uZXcgUChlLHRoaXMsdCksZSYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUud3JpdGUmJih0aGlzLl93cml0ZT1lLndyaXRlKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLndyaXRldiYmKHRoaXMuX3dyaXRldj1lLndyaXRldiksXCJmdW5jdGlvblwiPT10eXBlb2YgZS5kZXN0cm95JiYodGhpcy5fZGVzdHJveT1lLmRlc3Ryb3kpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuZmluYWwmJih0aGlzLl9maW5hbD1lLmZpbmFsKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbnN0cnVjdCYmKHRoaXMuX2NvbnN0cnVjdD1lLmNvbnN0cnVjdCksZS5zaWduYWwmJkMoZS5zaWduYWwsdGhpcykpLGguY2FsbCh0aGlzLGUpLGcuY29uc3RydWN0KHRoaXMsKCgpPT57Y29uc3QgZT10aGlzLl93cml0YWJsZVN0YXRlO2Uud3JpdGluZ3x8Rih0aGlzLGUpLFUodGhpcyxlKX0pKX1mdW5jdGlvbiBUKGUsdCxuLG8pe2NvbnN0IGk9ZS5fd3JpdGFibGVTdGF0ZTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuKW89bixuPWkuZGVmYXVsdEVuY29kaW5nO2Vsc2V7aWYobil7aWYoXCJidWZmZXJcIiE9PW4mJiF2LmlzRW5jb2RpbmcobikpdGhyb3cgbmV3IE0obil9ZWxzZSBuPWkuZGVmYXVsdEVuY29kaW5nO1wiZnVuY3Rpb25cIiE9dHlwZW9mIG8mJihvPWspfWlmKG51bGw9PT10KXRocm93IG5ldyBFO2lmKCFpLm9iamVjdE1vZGUpaWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpITEhPT1pLmRlY29kZVN0cmluZ3MmJih0PXYuZnJvbSh0LG4pLG49XCJidWZmZXJcIik7ZWxzZSBpZih0IGluc3RhbmNlb2YgdiluPVwiYnVmZmVyXCI7ZWxzZXtpZighaC5faXNVaW50OEFycmF5KHQpKXRocm93IG5ldyB3KFwiY2h1bmtcIixbXCJzdHJpbmdcIixcIkJ1ZmZlclwiLFwiVWludDhBcnJheVwiXSx0KTt0PWguX3VpbnQ4QXJyYXlUb0J1ZmZlcih0KSxuPVwiYnVmZmVyXCJ9bGV0IGE7cmV0dXJuIGkuZW5kaW5nP2E9bmV3IFM6aS5kZXN0cm95ZWQmJihhPW5ldyBMKFwid3JpdGVcIikpLGE/KHIubmV4dFRpY2sobyxhKSxqKGUsYSwhMCksYSk6KGkucGVuZGluZ2NiKyssZnVuY3Rpb24oZSx0LG4scixvKXtjb25zdCBpPXQub2JqZWN0TW9kZT8xOm4ubGVuZ3RoO3QubGVuZ3RoKz1pO2NvbnN0IGE9dC5sZW5ndGg8dC5oaWdoV2F0ZXJNYXJrO3JldHVybiBhfHwodC5uZWVkRHJhaW49ITApLHQud3JpdGluZ3x8dC5jb3JrZWR8fHQuZXJyb3JlZHx8IXQuY29uc3RydWN0ZWQ/KHQuYnVmZmVyZWQucHVzaCh7Y2h1bms6bixlbmNvZGluZzpyLGNhbGxiYWNrOm99KSx0LmFsbEJ1ZmZlcnMmJlwiYnVmZmVyXCIhPT1yJiYodC5hbGxCdWZmZXJzPSExKSx0LmFsbE5vb3AmJm8hPT1rJiYodC5hbGxOb29wPSExKSk6KHQud3JpdGVsZW49aSx0LndyaXRlY2I9byx0LndyaXRpbmc9ITAsdC5zeW5jPSEwLGUuX3dyaXRlKG4scix0Lm9ud3JpdGUpLHQuc3luYz0hMSksYSYmIXQuZXJyb3JlZCYmIXQuZGVzdHJveWVkfShlLGksdCxuLG8pKX1mdW5jdGlvbiBIKGUsdCxuLHIsbyxpLGEpe3Qud3JpdGVsZW49cix0LndyaXRlY2I9YSx0LndyaXRpbmc9ITAsdC5zeW5jPSEwLHQuZGVzdHJveWVkP3Qub253cml0ZShuZXcgTChcIndyaXRlXCIpKTpuP2UuX3dyaXRldihvLHQub253cml0ZSk6ZS5fd3JpdGUobyxpLHQub253cml0ZSksdC5zeW5jPSExfWZ1bmN0aW9uIFYoZSx0LG4scil7LS10LnBlbmRpbmdjYixyKG4pLCQodCksaihlLG4pfWZ1bmN0aW9uIEIoZSx0KXtjb25zdCBuPWUuX3dyaXRhYmxlU3RhdGUsbz1uLnN5bmMsaT1uLndyaXRlY2I7XCJmdW5jdGlvblwiPT10eXBlb2YgaT8obi53cml0aW5nPSExLG4ud3JpdGVjYj1udWxsLG4ubGVuZ3RoLT1uLndyaXRlbGVuLG4ud3JpdGVsZW49MCx0Pyh0LnN0YWNrLG4uZXJyb3JlZHx8KG4uZXJyb3JlZD10KSxlLl9yZWFkYWJsZVN0YXRlJiYhZS5fcmVhZGFibGVTdGF0ZS5lcnJvcmVkJiYoZS5fcmVhZGFibGVTdGF0ZS5lcnJvcmVkPXQpLG8/ci5uZXh0VGljayhWLGUsbix0LGkpOlYoZSxuLHQsaSkpOihuLmJ1ZmZlcmVkLmxlbmd0aD5uLmJ1ZmZlcmVkSW5kZXgmJkYoZSxuKSxvP251bGwhPT1uLmFmdGVyV3JpdGVUaWNrSW5mbyYmbi5hZnRlcldyaXRlVGlja0luZm8uY2I9PT1pP24uYWZ0ZXJXcml0ZVRpY2tJbmZvLmNvdW50Kys6KG4uYWZ0ZXJXcml0ZVRpY2tJbmZvPXtjb3VudDoxLGNiOmksc3RyZWFtOmUsc3RhdGU6bn0sci5uZXh0VGljayhELG4uYWZ0ZXJXcml0ZVRpY2tJbmZvKSk6WihlLG4sMSxpKSkpOmooZSxuZXcgeCl9ZnVuY3Rpb24gRCh7c3RyZWFtOmUsc3RhdGU6dCxjb3VudDpuLGNiOnJ9KXtyZXR1cm4gdC5hZnRlcldyaXRlVGlja0luZm89bnVsbCxaKGUsdCxuLHIpfWZ1bmN0aW9uIFooZSx0LG4scil7Zm9yKCF0LmVuZGluZyYmIWUuZGVzdHJveWVkJiYwPT09dC5sZW5ndGgmJnQubmVlZERyYWluJiYodC5uZWVkRHJhaW49ITEsZS5lbWl0KFwiZHJhaW5cIikpO24tLSA+MDspdC5wZW5kaW5nY2ItLSxyKCk7dC5kZXN0cm95ZWQmJiQodCksVShlLHQpfWZ1bmN0aW9uICQoZSl7aWYoZS53cml0aW5nKXJldHVybjtmb3IobGV0IG49ZS5idWZmZXJlZEluZGV4O248ZS5idWZmZXJlZC5sZW5ndGg7KytuKXt2YXIgdDtjb25zdHtjaHVuazpyLGNhbGxiYWNrOm99PWUuYnVmZmVyZWRbbl0saT1lLm9iamVjdE1vZGU/MTpyLmxlbmd0aDtlLmxlbmd0aC09aSxvKG51bGwhPT0odD1lLmVycm9yZWQpJiZ2b2lkIDAhPT10P3Q6bmV3IEwoXCJ3cml0ZVwiKSl9Y29uc3Qgbj1lW1JdLnNwbGljZSgwKTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7dmFyIHI7blt0XShudWxsIT09KHI9ZS5lcnJvcmVkKSYmdm9pZCAwIT09cj9yOm5ldyBMKFwiZW5kXCIpKX1BKGUpfWZ1bmN0aW9uIEYoZSx0KXtpZih0LmNvcmtlZHx8dC5idWZmZXJQcm9jZXNzaW5nfHx0LmRlc3Ryb3llZHx8IXQuY29uc3RydWN0ZWQpcmV0dXJuO2NvbnN0e2J1ZmZlcmVkOm4sYnVmZmVyZWRJbmRleDpyLG9iamVjdE1vZGU6aX09dCxhPW4ubGVuZ3RoLXI7aWYoIWEpcmV0dXJuO2xldCBsPXI7aWYodC5idWZmZXJQcm9jZXNzaW5nPSEwLGE+MSYmZS5fd3JpdGV2KXt0LnBlbmRpbmdjYi09YS0xO2NvbnN0IHI9dC5hbGxOb29wP2s6ZT0+e2ZvcihsZXQgdD1sO3Q8bi5sZW5ndGg7Kyt0KW5bdF0uY2FsbGJhY2soZSl9LGk9dC5hbGxOb29wJiYwPT09bD9uOm8obixsKTtpLmFsbEJ1ZmZlcnM9dC5hbGxCdWZmZXJzLEgoZSx0LCEwLHQubGVuZ3RoLGksXCJcIixyKSxBKHQpfWVsc2V7ZG97Y29uc3R7Y2h1bms6cixlbmNvZGluZzpvLGNhbGxiYWNrOmF9PW5bbF07bltsKytdPW51bGwsSChlLHQsITEsaT8xOnIubGVuZ3RoLHIsbyxhKX13aGlsZShsPG4ubGVuZ3RoJiYhdC53cml0aW5nKTtsPT09bi5sZW5ndGg/QSh0KTpsPjI1Nj8obi5zcGxpY2UoMCxsKSx0LmJ1ZmZlcmVkSW5kZXg9MCk6dC5idWZmZXJlZEluZGV4PWx9dC5idWZmZXJQcm9jZXNzaW5nPSExfWZ1bmN0aW9uIE4oZSl7cmV0dXJuIGUuZW5kaW5nJiYhZS5kZXN0cm95ZWQmJmUuY29uc3RydWN0ZWQmJjA9PT1lLmxlbmd0aCYmIWUuZXJyb3JlZCYmMD09PWUuYnVmZmVyZWQubGVuZ3RoJiYhZS5maW5pc2hlZCYmIWUud3JpdGluZyYmIWUuZXJyb3JFbWl0dGVkJiYhZS5jbG9zZUVtaXR0ZWR9ZnVuY3Rpb24gVShlLHQsbil7Tih0KSYmKGZ1bmN0aW9uKGUsdCl7dC5wcmVmaW5pc2hlZHx8dC5maW5hbENhbGxlZHx8KFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUuX2ZpbmFsfHx0LmRlc3Ryb3llZD8odC5wcmVmaW5pc2hlZD0hMCxlLmVtaXQoXCJwcmVmaW5pc2hcIikpOih0LmZpbmFsQ2FsbGVkPSEwLGZ1bmN0aW9uKGUsdCl7bGV0IG49ITE7ZnVuY3Rpb24gbyhvKXtpZihuKWooZSxudWxsIT1vP286eCgpKTtlbHNlIGlmKG49ITAsdC5wZW5kaW5nY2ItLSxvKXtjb25zdCBuPXRbUl0uc3BsaWNlKDApO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKW5bZV0obyk7aihlLG8sdC5zeW5jKX1lbHNlIE4odCkmJih0LnByZWZpbmlzaGVkPSEwLGUuZW1pdChcInByZWZpbmlzaFwiKSx0LnBlbmRpbmdjYisrLHIubmV4dFRpY2soVyxlLHQpKX10LnN5bmM9ITAsdC5wZW5kaW5nY2IrKzt0cnl7ZS5fZmluYWwobyl9Y2F0Y2goZSl7byhlKX10LnN5bmM9ITF9KGUsdCkpKX0oZSx0KSwwPT09dC5wZW5kaW5nY2ImJihuPyh0LnBlbmRpbmdjYisrLHIubmV4dFRpY2soKChlLHQpPT57Tih0KT9XKGUsdCk6dC5wZW5kaW5nY2ItLX0pLGUsdCkpOk4odCkmJih0LnBlbmRpbmdjYisrLFcoZSx0KSkpKX1mdW5jdGlvbiBXKGUsdCl7dC5wZW5kaW5nY2ItLSx0LmZpbmlzaGVkPSEwO2NvbnN0IG49dFtSXS5zcGxpY2UoMCk7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspbltlXSgpO2lmKGUuZW1pdChcImZpbmlzaFwiKSx0LmF1dG9EZXN0cm95KXtjb25zdCB0PWUuX3JlYWRhYmxlU3RhdGU7KCF0fHx0LmF1dG9EZXN0cm95JiYodC5lbmRFbWl0dGVkfHwhMT09PXQucmVhZGFibGUpKSYmZS5kZXN0cm95KCl9fVAucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiBvKHRoaXMuYnVmZmVyZWQsdGhpcy5idWZmZXJlZEluZGV4KX0sbChQLnByb3RvdHlwZSxcImJ1ZmZlcmVkUmVxdWVzdENvdW50XCIse19fcHJvdG9fXzpudWxsLGdldCgpe3JldHVybiB0aGlzLmJ1ZmZlcmVkLmxlbmd0aC10aGlzLmJ1ZmZlcmVkSW5kZXh9fSksbChJLGQse19fcHJvdG9fXzpudWxsLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiEhYSh0aGlzLGUpfHx0aGlzPT09SSYmZSYmZS5fd3JpdGFibGVTdGF0ZSBpbnN0YW5jZW9mIFB9fSksSS5wcm90b3R5cGUucGlwZT1mdW5jdGlvbigpe2oodGhpcyxuZXcgXyl9LEkucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hMD09PVQodGhpcyxlLHQsbil9LEkucHJvdG90eXBlLmNvcms9ZnVuY3Rpb24oKXt0aGlzLl93cml0YWJsZVN0YXRlLmNvcmtlZCsrfSxJLnByb3RvdHlwZS51bmNvcms9ZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMuX3dyaXRhYmxlU3RhdGU7ZS5jb3JrZWQmJihlLmNvcmtlZC0tLGUud3JpdGluZ3x8Rih0aGlzLGUpKX0sSS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nPWZ1bmN0aW9uKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlJiYoZT11KGUpKSwhdi5pc0VuY29kaW5nKGUpKXRocm93IG5ldyBNKGUpO3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZz1lLHRoaXN9LEkucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihlLHQsbil7aWYoIXRoaXMuX3dyaXRldil0aHJvdyBuZXcgYihcIl93cml0ZSgpXCIpO3RoaXMuX3dyaXRldihbe2NodW5rOmUsZW5jb2Rpbmc6dH1dLG4pfSxJLnByb3RvdHlwZS5fd3JpdGV2PW51bGwsSS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKGUsdCxuKXtjb25zdCBvPXRoaXMuX3dyaXRhYmxlU3RhdGU7bGV0IGE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZT8obj1lLGU9bnVsbCx0PW51bGwpOlwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJihuPXQsdD1udWxsKSxudWxsIT1lKXtjb25zdCBuPVQodGhpcyxlLHQpO24gaW5zdGFuY2VvZiBpJiYoYT1uKX1yZXR1cm4gby5jb3JrZWQmJihvLmNvcmtlZD0xLHRoaXMudW5jb3JrKCkpLGF8fChvLmVycm9yZWR8fG8uZW5kaW5nP28uZmluaXNoZWQ/YT1uZXcgTyhcImVuZFwiKTpvLmRlc3Ryb3llZCYmKGE9bmV3IEwoXCJlbmRcIikpOihvLmVuZGluZz0hMCxVKHRoaXMsbywhMCksby5lbmRlZD0hMCkpLFwiZnVuY3Rpb25cIj09dHlwZW9mIG4mJihhfHxvLmZpbmlzaGVkP3IubmV4dFRpY2sobixhKTpvW1JdLnB1c2gobikpLHRoaXN9LHMoSS5wcm90b3R5cGUse2Nsb3NlZDp7X19wcm90b19fOm51bGwsZ2V0KCl7cmV0dXJuISF0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmNsb3NlZH19LGRlc3Ryb3llZDp7X19wcm90b19fOm51bGwsZ2V0KCl7cmV0dXJuISF0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0KGUpe3RoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD1lKX19LHdyaXRhYmxlOntfX3Byb3RvX186bnVsbCxnZXQoKXtjb25zdCBlPXRoaXMuX3dyaXRhYmxlU3RhdGU7cmV0dXJuISghZXx8ITE9PT1lLndyaXRhYmxlfHxlLmRlc3Ryb3llZHx8ZS5lcnJvcmVkfHxlLmVuZGluZ3x8ZS5lbmRlZCl9LHNldChlKXt0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS53cml0YWJsZT0hIWUpfX0sd3JpdGFibGVGaW5pc2hlZDp7X19wcm90b19fOm51bGwsZ2V0KCl7cmV0dXJuISF0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkfX0sd3JpdGFibGVPYmplY3RNb2RlOntfX3Byb3RvX186bnVsbCxnZXQoKXtyZXR1cm4hIXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUub2JqZWN0TW9kZX19LHdyaXRhYmxlQnVmZmVyOntfX3Byb3RvX186bnVsbCxnZXQoKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19LHdyaXRhYmxlRW5kZWQ6e19fcHJvdG9fXzpudWxsLGdldCgpe3JldHVybiEhdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRpbmd9fSx3cml0YWJsZU5lZWREcmFpbjp7X19wcm90b19fOm51bGwsZ2V0KCl7Y29uc3QgZT10aGlzLl93cml0YWJsZVN0YXRlO3JldHVybiEhZSYmIWUuZGVzdHJveWVkJiYhZS5lbmRpbmcmJmUubmVlZERyYWlufX0sd3JpdGFibGVIaWdoV2F0ZXJNYXJrOntfX3Byb3RvX186bnVsbCxnZXQoKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0sd3JpdGFibGVDb3JrZWQ6e19fcHJvdG9fXzpudWxsLGdldCgpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlP3RoaXMuX3dyaXRhYmxlU3RhdGUuY29ya2VkOjB9fSx3cml0YWJsZUxlbmd0aDp7X19wcm90b19fOm51bGwsZ2V0KCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RofX0sZXJyb3JlZDp7X19wcm90b19fOm51bGwsZW51bWVyYWJsZTohMSxnZXQoKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZT90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yZWQ6bnVsbH19LHdyaXRhYmxlQWJvcnRlZDp7X19wcm90b19fOm51bGwsZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hKCExPT09dGhpcy5fd3JpdGFibGVTdGF0ZS53cml0YWJsZXx8IXRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkJiYhdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvcmVkfHx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkKX19fSk7Y29uc3Qgej1nLmRlc3Ryb3k7bGV0IEc7ZnVuY3Rpb24gcSgpe3JldHVybiB2b2lkIDA9PT1HJiYoRz17fSksR31JLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj10aGlzLl93cml0YWJsZVN0YXRlO3JldHVybiFuLmRlc3Ryb3llZCYmKG4uYnVmZmVyZWRJbmRleDxuLmJ1ZmZlcmVkLmxlbmd0aHx8bltSXS5sZW5ndGgpJiZyLm5leHRUaWNrKCQsbiksei5jYWxsKHRoaXMsZSx0KSx0aGlzfSxJLnByb3RvdHlwZS5fdW5kZXN0cm95PWcudW5kZXN0cm95LEkucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKGUsdCl7dChlKX0sSS5wcm90b3R5cGVbcC5jYXB0dXJlUmVqZWN0aW9uU3ltYm9sXT1mdW5jdGlvbihlKXt0aGlzLmRlc3Ryb3koZSl9LEkuZnJvbVdlYj1mdW5jdGlvbihlLHQpe3JldHVybiBxKCkubmV3U3RyZWFtV3JpdGFibGVGcm9tV3JpdGFibGVTdHJlYW0oZSx0KX0sSS50b1dlYj1mdW5jdGlvbihlKXtyZXR1cm4gcSgpLm5ld1dyaXRhYmxlU3RyZWFtRnJvbVN0cmVhbVdyaXRhYmxlKGUpfX0sOTA0OihlLHQsbik9Pntjb25zdHtBcnJheUlzQXJyYXk6cixBcnJheVByb3RvdHlwZUluY2x1ZGVzOm8sQXJyYXlQcm90b3R5cGVKb2luOmksQXJyYXlQcm90b3R5cGVNYXA6YSxOdW1iZXJJc0ludGVnZXI6bCxOdW1iZXJJc05hTjpzLE51bWJlck1BWF9TQUZFX0lOVEVHRVI6YyxOdW1iZXJNSU5fU0FGRV9JTlRFR0VSOnUsTnVtYmVyUGFyc2VJbnQ6ZixPYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eTpkLFJlZ0V4cFByb3RvdHlwZUV4ZWM6cCxTdHJpbmc6aCxTdHJpbmdQcm90b3R5cGVUb1VwcGVyQ2FzZTp2LFN0cmluZ1Byb3RvdHlwZVRyaW06Z309bigxOTEpLHtoaWRlU3RhY2tGcmFtZXM6Qyxjb2Rlczp7RVJSX1NPQ0tFVF9CQURfUE9SVDptLEVSUl9JTlZBTElEX0FSR19UWVBFOnksRVJSX0lOVkFMSURfQVJHX1ZBTFVFOncsRVJSX09VVF9PRl9SQU5HRTpiLEVSUl9VTktOT1dOX1NJR05BTDp4fX09bigxNDEpLHtub3JtYWxpemVFbmNvZGluZzpffT1uKDc3NSkse2lzQXN5bmNGdW5jdGlvbjpMLGlzQXJyYXlCdWZmZXJWaWV3Ok99PW4oNzc1KS50eXBlcyxFPXt9LFM9L15bMC03XSskLyxNPUMoKChlLHQsbj11LHI9Yyk9PntpZihcIm51bWJlclwiIT10eXBlb2YgZSl0aHJvdyBuZXcgeSh0LFwibnVtYmVyXCIsZSk7aWYoIWwoZSkpdGhyb3cgbmV3IGIodCxcImFuIGludGVnZXJcIixlKTtpZihlPG58fGU+cil0aHJvdyBuZXcgYih0LGA+PSAke259ICYmIDw9ICR7cn1gLGUpfSkpLGo9QygoKGUsdCxuPS0yMTQ3NDgzNjQ4LHI9MjE0NzQ4MzY0Nyk9PntpZihcIm51bWJlclwiIT10eXBlb2YgZSl0aHJvdyBuZXcgeSh0LFwibnVtYmVyXCIsZSk7aWYoIWwoZSkpdGhyb3cgbmV3IGIodCxcImFuIGludGVnZXJcIixlKTtpZihlPG58fGU+cil0aHJvdyBuZXcgYih0LGA+PSAke259ICYmIDw9ICR7cn1gLGUpfSkpLGs9QygoKGUsdCxuPSExKT0+e2lmKFwibnVtYmVyXCIhPXR5cGVvZiBlKXRocm93IG5ldyB5KHQsXCJudW1iZXJcIixlKTtpZighbChlKSl0aHJvdyBuZXcgYih0LFwiYW4gaW50ZWdlclwiLGUpO2NvbnN0IHI9bj8xOjAsbz00Mjk0OTY3Mjk1O2lmKGU8cnx8ZT5vKXRocm93IG5ldyBiKHQsYD49ICR7cn0gJiYgPD0gJHtvfWAsZSl9KSk7ZnVuY3Rpb24gUihlLHQpe2lmKFwic3RyaW5nXCIhPXR5cGVvZiBlKXRocm93IG5ldyB5KHQsXCJzdHJpbmdcIixlKX1jb25zdCBQPUMoKChlLHQsbik9PntpZighbyhuLGUpKXtjb25zdCByPWkoYShuLChlPT5cInN0cmluZ1wiPT10eXBlb2YgZT9gJyR7ZX0nYDpoKGUpKSksXCIsIFwiKTt0aHJvdyBuZXcgdyh0LGUsXCJtdXN0IGJlIG9uZSBvZjogXCIrcil9fSkpO2Z1bmN0aW9uIEEoZSx0KXtpZihcImJvb2xlYW5cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IHkodCxcImJvb2xlYW5cIixlKX1mdW5jdGlvbiBJKGUsdCxuKXtyZXR1cm4gbnVsbCE9ZSYmZChlLHQpP2VbdF06bn1jb25zdCBUPUMoKChlLHQsbj1udWxsKT0+e2NvbnN0IG89SShuLFwiYWxsb3dBcnJheVwiLCExKSxpPUkobixcImFsbG93RnVuY3Rpb25cIiwhMSk7aWYoIUkobixcIm51bGxhYmxlXCIsITEpJiZudWxsPT09ZXx8IW8mJnIoZSl8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiYoIWl8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpKXRocm93IG5ldyB5KHQsXCJPYmplY3RcIixlKX0pKSxIPUMoKChlLHQpPT57aWYobnVsbCE9ZSYmXCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IHkodCxcImEgZGljdGlvbmFyeVwiLGUpfSkpLFY9QygoKGUsdCxuPTApPT57aWYoIXIoZSkpdGhyb3cgbmV3IHkodCxcIkFycmF5XCIsZSk7aWYoZS5sZW5ndGg8bil0aHJvdyBuZXcgdyh0LGUsYG11c3QgYmUgbG9uZ2VyIHRoYW4gJHtufWApfSkpLEI9QygoKGUsdD1cImJ1ZmZlclwiKT0+e2lmKCFPKGUpKXRocm93IG5ldyB5KHQsW1wiQnVmZmVyXCIsXCJUeXBlZEFycmF5XCIsXCJEYXRhVmlld1wiXSxlKX0pKSxEPUMoKChlLHQpPT57aWYodm9pZCAwIT09ZSYmKG51bGw9PT1lfHxcIm9iamVjdFwiIT10eXBlb2YgZXx8IShcImFib3J0ZWRcImluIGUpKSl0aHJvdyBuZXcgeSh0LFwiQWJvcnRTaWduYWxcIixlKX0pKSxaPUMoKChlLHQpPT57aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgeSh0LFwiRnVuY3Rpb25cIixlKX0pKSwkPUMoKChlLHQpPT57aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZXx8TChlKSl0aHJvdyBuZXcgeSh0LFwiRnVuY3Rpb25cIixlKX0pKSxGPUMoKChlLHQpPT57aWYodm9pZCAwIT09ZSl0aHJvdyBuZXcgeSh0LFwidW5kZWZpbmVkXCIsZSl9KSksTj0vXig/OjxbXj5dKj4pKD86XFxzKjtcXHMqW147XCJcXHNdKyg/Oj0oXCIpP1teO1wiXFxzXSpcXDEpPykqJC87ZnVuY3Rpb24gVShlLHQpe2lmKHZvaWQgMD09PWV8fCFwKE4sZSkpdGhyb3cgbmV3IHcodCxlLCdtdXN0IGJlIGFuIGFycmF5IG9yIHN0cmluZyBvZiBmb3JtYXQgXCI8L3N0eWxlcy5jc3M+OyByZWw9cHJlbG9hZDsgYXM9c3R5bGVcIicpfWUuZXhwb3J0cz17aXNJbnQzMjpmdW5jdGlvbihlKXtyZXR1cm4gZT09PSgwfGUpfSxpc1VpbnQzMjpmdW5jdGlvbihlKXtyZXR1cm4gZT09PWU+Pj4wfSxwYXJzZUZpbGVNb2RlOmZ1bmN0aW9uKGUsdCxuKXtpZih2b2lkIDA9PT1lJiYoZT1uKSxcInN0cmluZ1wiPT10eXBlb2YgZSl7aWYobnVsbD09PXAoUyxlKSl0aHJvdyBuZXcgdyh0LGUsXCJtdXN0IGJlIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIgb3IgYW4gb2N0YWwgc3RyaW5nXCIpO2U9ZihlLDgpfXJldHVybiBrKGUsdCksZX0sdmFsaWRhdGVBcnJheTpWLHZhbGlkYXRlU3RyaW5nQXJyYXk6ZnVuY3Rpb24oZSx0KXtWKGUsdCk7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspUihlW25dLGAke3R9WyR7bn1dYCl9LHZhbGlkYXRlQm9vbGVhbkFycmF5OmZ1bmN0aW9uKGUsdCl7VihlLHQpO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKUEoZVtuXSxgJHt0fVske259XWApfSx2YWxpZGF0ZUJvb2xlYW46QSx2YWxpZGF0ZUJ1ZmZlcjpCLHZhbGlkYXRlRGljdGlvbmFyeTpILHZhbGlkYXRlRW5jb2Rpbmc6ZnVuY3Rpb24oZSx0KXtjb25zdCBuPV8odCkscj1lLmxlbmd0aDtpZihcImhleFwiPT09biYmciUyIT0wKXRocm93IG5ldyB3KFwiZW5jb2RpbmdcIix0LGBpcyBpbnZhbGlkIGZvciBkYXRhIG9mIGxlbmd0aCAke3J9YCl9LHZhbGlkYXRlRnVuY3Rpb246Wix2YWxpZGF0ZUludDMyOmosdmFsaWRhdGVJbnRlZ2VyOk0sdmFsaWRhdGVOdW1iZXI6ZnVuY3Rpb24oZSx0LG49dW5kZWZpbmVkLHIpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiBlKXRocm93IG5ldyB5KHQsXCJudW1iZXJcIixlKTtpZihudWxsIT1uJiZlPG58fG51bGwhPXImJmU+cnx8KG51bGwhPW58fG51bGwhPXIpJiZzKGUpKXRocm93IG5ldyBiKHQsYCR7bnVsbCE9bj9gPj0gJHtufWA6XCJcIn0ke251bGwhPW4mJm51bGwhPXI/XCIgJiYgXCI6XCJcIn0ke251bGwhPXI/YDw9ICR7cn1gOlwiXCJ9YCxlKX0sdmFsaWRhdGVPYmplY3Q6VCx2YWxpZGF0ZU9uZU9mOlAsdmFsaWRhdGVQbGFpbkZ1bmN0aW9uOiQsdmFsaWRhdGVQb3J0OmZ1bmN0aW9uKGUsdD1cIlBvcnRcIixuPSEwKXtpZihcIm51bWJlclwiIT10eXBlb2YgZSYmXCJzdHJpbmdcIiE9dHlwZW9mIGV8fFwic3RyaW5nXCI9PXR5cGVvZiBlJiYwPT09ZyhlKS5sZW5ndGh8fCtlIT0rZT4+PjB8fGU+NjU1MzV8fDA9PT1lJiYhbil0aHJvdyBuZXcgbSh0LGUsbik7cmV0dXJuIDB8ZX0sdmFsaWRhdGVTaWduYWxOYW1lOmZ1bmN0aW9uKGUsdD1cInNpZ25hbFwiKXtpZihSKGUsdCksdm9pZCAwPT09RVtlXSl7aWYodm9pZCAwIT09RVt2KGUpXSl0aHJvdyBuZXcgeChlK1wiIChzaWduYWxzIG11c3QgdXNlIGFsbCBjYXBpdGFsIGxldHRlcnMpXCIpO3Rocm93IG5ldyB4KGUpfX0sdmFsaWRhdGVTdHJpbmc6Uix2YWxpZGF0ZVVpbnQzMjprLHZhbGlkYXRlVW5kZWZpbmVkOkYsdmFsaWRhdGVVbmlvbjpmdW5jdGlvbihlLHQsbil7aWYoIW8obixlKSl0aHJvdyBuZXcgeSh0LGAoJyR7aShuLFwifFwiKX0nKWAsZSl9LHZhbGlkYXRlQWJvcnRTaWduYWw6RCx2YWxpZGF0ZUxpbmtIZWFkZXJWYWx1ZTpmdW5jdGlvbihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gVShlLFwiaGludHNcIiksZTtpZihyKGUpKXtjb25zdCB0PWUubGVuZ3RoO2xldCBuPVwiXCI7aWYoMD09PXQpcmV0dXJuIG47Zm9yKGxldCByPTA7cjx0O3IrKyl7Y29uc3Qgbz1lW3JdO1UobyxcImhpbnRzXCIpLG4rPW8sciE9PXQtMSYmKG4rPVwiLCBcIil9cmV0dXJuIG59dGhyb3cgbmV3IHcoXCJoaW50c1wiLGUsJ211c3QgYmUgYW4gYXJyYXkgb3Igc3RyaW5nIG9mIGZvcm1hdCBcIjwvc3R5bGVzLmNzcz47IHJlbD1wcmVsb2FkOyBhcz1zdHlsZVwiJyl9fX0sOTk6KGUsdCxuKT0+e2NvbnN0IHI9bigyOTIpLG89big3NjApLGk9ci5SZWFkYWJsZS5kZXN0cm95O2UuZXhwb3J0cz1yLlJlYWRhYmxlLGUuZXhwb3J0cy5fdWludDhBcnJheVRvQnVmZmVyPXIuX3VpbnQ4QXJyYXlUb0J1ZmZlcixlLmV4cG9ydHMuX2lzVWludDhBcnJheT1yLl9pc1VpbnQ4QXJyYXksZS5leHBvcnRzLmlzRGlzdHVyYmVkPXIuaXNEaXN0dXJiZWQsZS5leHBvcnRzLmlzRXJyb3JlZD1yLmlzRXJyb3JlZCxlLmV4cG9ydHMuaXNSZWFkYWJsZT1yLmlzUmVhZGFibGUsZS5leHBvcnRzLlJlYWRhYmxlPXIuUmVhZGFibGUsZS5leHBvcnRzLldyaXRhYmxlPXIuV3JpdGFibGUsZS5leHBvcnRzLkR1cGxleD1yLkR1cGxleCxlLmV4cG9ydHMuVHJhbnNmb3JtPXIuVHJhbnNmb3JtLGUuZXhwb3J0cy5QYXNzVGhyb3VnaD1yLlBhc3NUaHJvdWdoLGUuZXhwb3J0cy5hZGRBYm9ydFNpZ25hbD1yLmFkZEFib3J0U2lnbmFsLGUuZXhwb3J0cy5maW5pc2hlZD1yLmZpbmlzaGVkLGUuZXhwb3J0cy5kZXN0cm95PXIuZGVzdHJveSxlLmV4cG9ydHMuZGVzdHJveT1pLGUuZXhwb3J0cy5waXBlbGluZT1yLnBpcGVsaW5lLGUuZXhwb3J0cy5jb21wb3NlPXIuY29tcG9zZSxPYmplY3QuZGVmaW5lUHJvcGVydHkocixcInByb21pc2VzXCIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDooKT0+b30pLGUuZXhwb3J0cy5TdHJlYW09ci5TdHJlYW0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzfSwxNDE6KGUsdCxuKT0+e2NvbnN0e2Zvcm1hdDpyLGluc3BlY3Q6byxBZ2dyZWdhdGVFcnJvcjppfT1uKDc3NSksYT1nbG9iYWxUaGlzLkFnZ3JlZ2F0ZUVycm9yfHxpLGw9U3ltYm9sKFwia0lzTm9kZUVycm9yXCIpLHM9W1wic3RyaW5nXCIsXCJmdW5jdGlvblwiLFwibnVtYmVyXCIsXCJvYmplY3RcIixcIkZ1bmN0aW9uXCIsXCJPYmplY3RcIixcImJvb2xlYW5cIixcImJpZ2ludFwiLFwic3ltYm9sXCJdLGM9L14oW0EtWl1bYS16MC05XSopKyQvLHU9e307ZnVuY3Rpb24gZihlLHQpe2lmKCFlKXRocm93IG5ldyB1LkVSUl9JTlRFUk5BTF9BU1NFUlRJT04odCl9ZnVuY3Rpb24gZChlKXtsZXQgdD1cIlwiLG49ZS5sZW5ndGg7Y29uc3Qgcj1cIi1cIj09PWVbMF0/MTowO2Zvcig7bj49cis0O24tPTMpdD1gXyR7ZS5zbGljZShuLTMsbil9JHt0fWA7cmV0dXJuYCR7ZS5zbGljZSgwLG4pfSR7dH1gfWZ1bmN0aW9uIHAoZSx0LG4pe258fChuPUVycm9yKTtjbGFzcyBvIGV4dGVuZHMgbntjb25zdHJ1Y3RvciguLi5uKXtzdXBlcihmdW5jdGlvbihlLHQsbil7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdClyZXR1cm4gZih0Lmxlbmd0aDw9bi5sZW5ndGgsYENvZGU6ICR7ZX07IFRoZSBwcm92aWRlZCBhcmd1bWVudHMgbGVuZ3RoICgke24ubGVuZ3RofSkgZG9lcyBub3QgbWF0Y2ggdGhlIHJlcXVpcmVkIG9uZXMgKCR7dC5sZW5ndGh9KS5gKSx0KC4uLm4pO2NvbnN0IG89KHQubWF0Y2goLyVbZGZpam9Pc10vZyl8fFtdKS5sZW5ndGg7cmV0dXJuIGYobz09PW4ubGVuZ3RoLGBDb2RlOiAke2V9OyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzIGxlbmd0aCAoJHtuLmxlbmd0aH0pIGRvZXMgbm90IG1hdGNoIHRoZSByZXF1aXJlZCBvbmVzICgke299KS5gKSwwPT09bi5sZW5ndGg/dDpyKHQsLi4ubil9KGUsdCxuKSl9dG9TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLm5hbWV9IFske2V9XTogJHt0aGlzLm1lc3NhZ2V9YH19T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoby5wcm90b3R5cGUse25hbWU6e3ZhbHVlOm4ubmFtZSx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0sdG9TdHJpbmc6e3ZhbHVlKCl7cmV0dXJuYCR7dGhpcy5uYW1lfSBbJHtlfV06ICR7dGhpcy5tZXNzYWdlfWB9LHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfX0pLG8ucHJvdG90eXBlLmNvZGU9ZSxvLnByb3RvdHlwZVtsXT0hMCx1W2VdPW99ZnVuY3Rpb24gaChlKXtjb25zdCB0PVwiX19ub2RlX2ludGVybmFsX1wiK2UubmFtZTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJuYW1lXCIse3ZhbHVlOnR9KSxlfWNsYXNzIHYgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlPVwiVGhlIG9wZXJhdGlvbiB3YXMgYWJvcnRlZFwiLHQ9dW5kZWZpbmVkKXtpZih2b2lkIDAhPT10JiZcIm9iamVjdFwiIT10eXBlb2YgdCl0aHJvdyBuZXcgdS5FUlJfSU5WQUxJRF9BUkdfVFlQRShcIm9wdGlvbnNcIixcIk9iamVjdFwiLHQpO3N1cGVyKGUsdCksdGhpcy5jb2RlPVwiQUJPUlRfRVJSXCIsdGhpcy5uYW1lPVwiQWJvcnRFcnJvclwifX1wKFwiRVJSX0FTU0VSVElPTlwiLFwiJXNcIixFcnJvcikscChcIkVSUl9JTlZBTElEX0FSR19UWVBFXCIsKChlLHQsbik9PntmKFwic3RyaW5nXCI9PXR5cGVvZiBlLFwiJ25hbWUnIG11c3QgYmUgYSBzdHJpbmdcIiksQXJyYXkuaXNBcnJheSh0KXx8KHQ9W3RdKTtsZXQgcj1cIlRoZSBcIjtlLmVuZHNXaXRoKFwiIGFyZ3VtZW50XCIpP3IrPWAke2V9IGA6cis9YFwiJHtlfVwiICR7ZS5pbmNsdWRlcyhcIi5cIik/XCJwcm9wZXJ0eVwiOlwiYXJndW1lbnRcIn0gYCxyKz1cIm11c3QgYmUgXCI7Y29uc3QgaT1bXSxhPVtdLGw9W107Zm9yKGNvbnN0IGUgb2YgdClmKFwic3RyaW5nXCI9PXR5cGVvZiBlLFwiQWxsIGV4cGVjdGVkIGVudHJpZXMgaGF2ZSB0byBiZSBvZiB0eXBlIHN0cmluZ1wiKSxzLmluY2x1ZGVzKGUpP2kucHVzaChlLnRvTG93ZXJDYXNlKCkpOmMudGVzdChlKT9hLnB1c2goZSk6KGYoXCJvYmplY3RcIiE9PWUsJ1RoZSB2YWx1ZSBcIm9iamVjdFwiIHNob3VsZCBiZSB3cml0dGVuIGFzIFwiT2JqZWN0XCInKSxsLnB1c2goZSkpO2lmKGEubGVuZ3RoPjApe2NvbnN0IGU9aS5pbmRleE9mKFwib2JqZWN0XCIpOy0xIT09ZSYmKGkuc3BsaWNlKGksZSwxKSxhLnB1c2goXCJPYmplY3RcIikpfWlmKGkubGVuZ3RoPjApe3N3aXRjaChpLmxlbmd0aCl7Y2FzZSAxOnIrPWBvZiB0eXBlICR7aVswXX1gO2JyZWFrO2Nhc2UgMjpyKz1gb25lIG9mIHR5cGUgJHtpWzBdfSBvciAke2lbMV19YDticmVhaztkZWZhdWx0Ontjb25zdCBlPWkucG9wKCk7cis9YG9uZSBvZiB0eXBlICR7aS5qb2luKFwiLCBcIil9LCBvciAke2V9YH19KGEubGVuZ3RoPjB8fGwubGVuZ3RoPjApJiYocis9XCIgb3IgXCIpfWlmKGEubGVuZ3RoPjApe3N3aXRjaChhLmxlbmd0aCl7Y2FzZSAxOnIrPWBhbiBpbnN0YW5jZSBvZiAke2FbMF19YDticmVhaztjYXNlIDI6cis9YGFuIGluc3RhbmNlIG9mICR7YVswXX0gb3IgJHthWzFdfWA7YnJlYWs7ZGVmYXVsdDp7Y29uc3QgZT1hLnBvcCgpO3IrPWBhbiBpbnN0YW5jZSBvZiAke2Euam9pbihcIiwgXCIpfSwgb3IgJHtlfWB9fWwubGVuZ3RoPjAmJihyKz1cIiBvciBcIil9c3dpdGNoKGwubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOmxbMF0udG9Mb3dlckNhc2UoKSE9PWxbMF0mJihyKz1cImFuIFwiKSxyKz1gJHtsWzBdfWA7YnJlYWs7Y2FzZSAyOnIrPWBvbmUgb2YgJHtsWzBdfSBvciAke2xbMV19YDticmVhaztkZWZhdWx0Ontjb25zdCBlPWwucG9wKCk7cis9YG9uZSBvZiAke2wuam9pbihcIiwgXCIpfSwgb3IgJHtlfWB9fWlmKG51bGw9PW4pcis9YC4gUmVjZWl2ZWQgJHtufWA7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuJiZuLm5hbWUpcis9YC4gUmVjZWl2ZWQgZnVuY3Rpb24gJHtuLm5hbWV9YDtlbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiBuKXt2YXIgdTtudWxsIT09KHU9bi5jb25zdHJ1Y3RvcikmJnZvaWQgMCE9PXUmJnUubmFtZT9yKz1gLiBSZWNlaXZlZCBhbiBpbnN0YW5jZSBvZiAke24uY29uc3RydWN0b3IubmFtZX1gOnIrPWAuIFJlY2VpdmVkICR7byhuLHtkZXB0aDotMX0pfWB9ZWxzZXtsZXQgZT1vKG4se2NvbG9yczohMX0pO2UubGVuZ3RoPjI1JiYoZT1gJHtlLnNsaWNlKDAsMjUpfS4uLmApLHIrPWAuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2Ygbn0gKCR7ZX0pYH1yZXR1cm4gcn0pLFR5cGVFcnJvcikscChcIkVSUl9JTlZBTElEX0FSR19WQUxVRVwiLCgoZSx0LG49XCJpcyBpbnZhbGlkXCIpPT57bGV0IHI9byh0KTtyZXR1cm4gci5sZW5ndGg+MTI4JiYocj1yLnNsaWNlKDAsMTI4KStcIi4uLlwiKSxgVGhlICR7ZS5pbmNsdWRlcyhcIi5cIik/XCJwcm9wZXJ0eVwiOlwiYXJndW1lbnRcIn0gJyR7ZX0nICR7bn0uIFJlY2VpdmVkICR7cn1gfSksVHlwZUVycm9yKSxwKFwiRVJSX0lOVkFMSURfUkVUVVJOX1ZBTFVFXCIsKChlLHQsbik9Pnt2YXIgcjtyZXR1cm5gRXhwZWN0ZWQgJHtlfSB0byBiZSByZXR1cm5lZCBmcm9tIHRoZSBcIiR7dH1cIiBmdW5jdGlvbiBidXQgZ290ICR7bnVsbCE9biYmbnVsbCE9PShyPW4uY29uc3RydWN0b3IpJiZ2b2lkIDAhPT1yJiZyLm5hbWU/YGluc3RhbmNlIG9mICR7bi5jb25zdHJ1Y3Rvci5uYW1lfWA6XCJ0eXBlIFwiK3R5cGVvZiBufS5gfSksVHlwZUVycm9yKSxwKFwiRVJSX01JU1NJTkdfQVJHU1wiLCgoLi4uZSk9PntsZXQgdDtmKGUubGVuZ3RoPjAsXCJBdCBsZWFzdCBvbmUgYXJnIG5lZWRzIHRvIGJlIHNwZWNpZmllZFwiKTtjb25zdCBuPWUubGVuZ3RoO3N3aXRjaChlPShBcnJheS5pc0FycmF5KGUpP2U6W2VdKS5tYXAoKGU9PmBcIiR7ZX1cImApKS5qb2luKFwiIG9yIFwiKSxuKXtjYXNlIDE6dCs9YFRoZSAke2VbMF19IGFyZ3VtZW50YDticmVhaztjYXNlIDI6dCs9YFRoZSAke2VbMF19IGFuZCAke2VbMV19IGFyZ3VtZW50c2A7YnJlYWs7ZGVmYXVsdDp7Y29uc3Qgbj1lLnBvcCgpO3QrPWBUaGUgJHtlLmpvaW4oXCIsIFwiKX0sIGFuZCAke259IGFyZ3VtZW50c2B9fXJldHVybmAke3R9IG11c3QgYmUgc3BlY2lmaWVkYH0pLFR5cGVFcnJvcikscChcIkVSUl9PVVRfT0ZfUkFOR0VcIiwoKGUsdCxuKT0+e2xldCByO3JldHVybiBmKHQsJ01pc3NpbmcgXCJyYW5nZVwiIGFyZ3VtZW50JyksTnVtYmVyLmlzSW50ZWdlcihuKSYmTWF0aC5hYnMobik+MioqMzI/cj1kKFN0cmluZyhuKSk6XCJiaWdpbnRcIj09dHlwZW9mIG4/KHI9U3RyaW5nKG4pLChuPjJuKiozMm58fG48LSgybioqMzJuKSkmJihyPWQocikpLHIrPVwiblwiKTpyPW8obiksYFRoZSB2YWx1ZSBvZiBcIiR7ZX1cIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgJHt0fS4gUmVjZWl2ZWQgJHtyfWB9KSxSYW5nZUVycm9yKSxwKFwiRVJSX01VTFRJUExFX0NBTExCQUNLXCIsXCJDYWxsYmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXNcIixFcnJvcikscChcIkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEXCIsXCJUaGUgJXMgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZFwiLEVycm9yKSxwKFwiRVJSX1NUUkVBTV9BTFJFQURZX0ZJTklTSEVEXCIsXCJDYW5ub3QgY2FsbCAlcyBhZnRlciBhIHN0cmVhbSB3YXMgZmluaXNoZWRcIixFcnJvcikscChcIkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEVcIixcIkNhbm5vdCBwaXBlLCBub3QgcmVhZGFibGVcIixFcnJvcikscChcIkVSUl9TVFJFQU1fREVTVFJPWUVEXCIsXCJDYW5ub3QgY2FsbCAlcyBhZnRlciBhIHN0cmVhbSB3YXMgZGVzdHJveWVkXCIsRXJyb3IpLHAoXCJFUlJfU1RSRUFNX05VTExfVkFMVUVTXCIsXCJNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbVwiLFR5cGVFcnJvcikscChcIkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFXCIsXCJQcmVtYXR1cmUgY2xvc2VcIixFcnJvcikscChcIkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0ZcIixcInN0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GXCIsRXJyb3IpLHAoXCJFUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UXCIsXCJzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudFwiLEVycm9yKSxwKFwiRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkRcIixcIndyaXRlIGFmdGVyIGVuZFwiLEVycm9yKSxwKFwiRVJSX1VOS05PV05fRU5DT0RJTkdcIixcIlVua25vd24gZW5jb2Rpbmc6ICVzXCIsVHlwZUVycm9yKSxlLmV4cG9ydHM9e0Fib3J0RXJyb3I6dixhZ2dyZWdhdGVUd29FcnJvcnM6aCgoZnVuY3Rpb24oZSx0KXtpZihlJiZ0JiZlIT09dCl7aWYoQXJyYXkuaXNBcnJheSh0LmVycm9ycykpcmV0dXJuIHQuZXJyb3JzLnB1c2goZSksdDtjb25zdCBuPW5ldyBhKFt0LGVdLHQubWVzc2FnZSk7cmV0dXJuIG4uY29kZT10LmNvZGUsbn1yZXR1cm4gZXx8dH0pKSxoaWRlU3RhY2tGcmFtZXM6aCxjb2Rlczp1fX0sMTkxOmU9PntlLmV4cG9ydHM9e0FycmF5SXNBcnJheTplPT5BcnJheS5pc0FycmF5KGUpLEFycmF5UHJvdG90eXBlSW5jbHVkZXM6KGUsdCk9PmUuaW5jbHVkZXModCksQXJyYXlQcm90b3R5cGVJbmRleE9mOihlLHQpPT5lLmluZGV4T2YodCksQXJyYXlQcm90b3R5cGVKb2luOihlLHQpPT5lLmpvaW4odCksQXJyYXlQcm90b3R5cGVNYXA6KGUsdCk9PmUubWFwKHQpLEFycmF5UHJvdG90eXBlUG9wOihlLHQpPT5lLnBvcCh0KSxBcnJheVByb3RvdHlwZVB1c2g6KGUsdCk9PmUucHVzaCh0KSxBcnJheVByb3RvdHlwZVNsaWNlOihlLHQsbik9PmUuc2xpY2UodCxuKSxFcnJvcixGdW5jdGlvblByb3RvdHlwZUNhbGw6KGUsdCwuLi5uKT0+ZS5jYWxsKHQsLi4ubiksRnVuY3Rpb25Qcm90b3R5cGVTeW1ib2xIYXNJbnN0YW5jZTooZSx0KT0+RnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0uY2FsbChlLHQpLE1hdGhGbG9vcjpNYXRoLmZsb29yLE51bWJlcixOdW1iZXJJc0ludGVnZXI6TnVtYmVyLmlzSW50ZWdlcixOdW1iZXJJc05hTjpOdW1iZXIuaXNOYU4sTnVtYmVyTUFYX1NBRkVfSU5URUdFUjpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixOdW1iZXJNSU5fU0FGRV9JTlRFR0VSOk51bWJlci5NSU5fU0FGRV9JTlRFR0VSLE51bWJlclBhcnNlSW50Ok51bWJlci5wYXJzZUludCxPYmplY3REZWZpbmVQcm9wZXJ0aWVzOihlLHQpPT5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHQpLE9iamVjdERlZmluZVByb3BlcnR5OihlLHQsbik9Pk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsbiksT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOihlLHQpPT5PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCksT2JqZWN0S2V5czplPT5PYmplY3Qua2V5cyhlKSxPYmplY3RTZXRQcm90b3R5cGVPZjooZSx0KT0+T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCksUHJvbWlzZSxQcm9taXNlUHJvdG90eXBlQ2F0Y2g6KGUsdCk9PmUuY2F0Y2godCksUHJvbWlzZVByb3RvdHlwZVRoZW46KGUsdCxuKT0+ZS50aGVuKHQsbiksUHJvbWlzZVJlamVjdDplPT5Qcm9taXNlLnJlamVjdChlKSxSZWZsZWN0QXBwbHk6UmVmbGVjdC5hcHBseSxSZWdFeHBQcm90b3R5cGVUZXN0OihlLHQpPT5lLnRlc3QodCksU2FmZVNldDpTZXQsU3RyaW5nLFN0cmluZ1Byb3RvdHlwZVNsaWNlOihlLHQsbik9PmUuc2xpY2UodCxuKSxTdHJpbmdQcm90b3R5cGVUb0xvd2VyQ2FzZTplPT5lLnRvTG93ZXJDYXNlKCksU3RyaW5nUHJvdG90eXBlVG9VcHBlckNhc2U6ZT0+ZS50b1VwcGVyQ2FzZSgpLFN0cmluZ1Byb3RvdHlwZVRyaW06ZT0+ZS50cmltKCksU3ltYm9sLFN5bWJvbEZvcjpTeW1ib2wuZm9yLFN5bWJvbEFzeW5jSXRlcmF0b3I6U3ltYm9sLmFzeW5jSXRlcmF0b3IsU3ltYm9sSGFzSW5zdGFuY2U6U3ltYm9sLmhhc0luc3RhbmNlLFN5bWJvbEl0ZXJhdG9yOlN5bWJvbC5pdGVyYXRvcixUeXBlZEFycmF5UHJvdG90eXBlU2V0OihlLHQsbik9PmUuc2V0KHQsbiksVWludDhBcnJheX19LDc3NTooZSx0LG4pPT57Y29uc3Qgcj1uKDQ4NSksbz1PYmplY3QuZ2V0UHJvdG90eXBlT2YoKGFzeW5jIGZ1bmN0aW9uKCl7fSkpLmNvbnN0cnVjdG9yLGk9Z2xvYmFsVGhpcy5CbG9ifHxyLkJsb2IsYT12b2lkIDAhPT1pP2Z1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgaX06ZnVuY3Rpb24oZSl7cmV0dXJuITF9O2NsYXNzIGwgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtpZighQXJyYXkuaXNBcnJheShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgaW5wdXQgdG8gYmUgYW4gQXJyYXksIGdvdCBcIit0eXBlb2YgZSk7bGV0IHQ9XCJcIjtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl0Kz1gICAgICR7ZVtuXS5zdGFja31cXG5gO3N1cGVyKHQpLHRoaXMubmFtZT1cIkFnZ3JlZ2F0ZUVycm9yXCIsdGhpcy5lcnJvcnM9ZX19ZS5leHBvcnRzPXtBZ2dyZWdhdGVFcnJvcjpsLGtFbXB0eU9iamVjdDpPYmplY3QuZnJlZXplKHt9KSxvbmNlKGUpe2xldCB0PSExO3JldHVybiBmdW5jdGlvbiguLi5uKXt0fHwodD0hMCxlLmFwcGx5KHRoaXMsbikpfX0sY3JlYXRlRGVmZXJyZWRQcm9taXNlOmZ1bmN0aW9uKCl7bGV0IGUsdDtyZXR1cm57cHJvbWlzZTpuZXcgUHJvbWlzZSgoKG4scik9PntlPW4sdD1yfSkpLHJlc29sdmU6ZSxyZWplY3Q6dH19LHByb21pc2lmeTplPT5uZXcgUHJvbWlzZSgoKHQsbik9PntlKCgoZSwuLi5yKT0+ZT9uKGUpOnQoLi4ucikpKX0pKSxkZWJ1Z2xvZzooKT0+ZnVuY3Rpb24oKXt9LGZvcm1hdDooZSwuLi50KT0+ZS5yZXBsYWNlKC8lKFtzZGlmal0pL2csKGZ1bmN0aW9uKC4uLltlLG5dKXtjb25zdCByPXQuc2hpZnQoKTtyZXR1cm5cImZcIj09PW4/ci50b0ZpeGVkKDYpOlwialwiPT09bj9KU09OLnN0cmluZ2lmeShyKTpcInNcIj09PW4mJlwib2JqZWN0XCI9PXR5cGVvZiByP2Ake3IuY29uc3RydWN0b3IhPT1PYmplY3Q/ci5jb25zdHJ1Y3Rvci5uYW1lOlwiXCJ9IHt9YC50cmltKCk6ci50b1N0cmluZygpfSkpLGluc3BlY3QoZSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlXCJzdHJpbmdcIjppZihlLmluY2x1ZGVzKFwiJ1wiKSl7aWYoIWUuaW5jbHVkZXMoJ1wiJykpcmV0dXJuYFwiJHtlfVwiYDtpZighZS5pbmNsdWRlcyhcImBcIikmJiFlLmluY2x1ZGVzKFwiJHtcIikpcmV0dXJuYFxcYCR7ZX1cXGBgfXJldHVybmAnJHtlfSdgO2Nhc2VcIm51bWJlclwiOnJldHVybiBpc05hTihlKT9cIk5hTlwiOk9iamVjdC5pcyhlLC0wKT9TdHJpbmcoZSk6ZTtjYXNlXCJiaWdpbnRcIjpyZXR1cm5gJHtTdHJpbmcoZSl9bmA7Y2FzZVwiYm9vbGVhblwiOmNhc2VcInVuZGVmaW5lZFwiOnJldHVybiBTdHJpbmcoZSk7Y2FzZVwib2JqZWN0XCI6cmV0dXJuXCJ7fVwifX0sdHlwZXM6e2lzQXN5bmNGdW5jdGlvbjplPT5lIGluc3RhbmNlb2Ygbyxpc0FycmF5QnVmZmVyVmlldzplPT5BcnJheUJ1ZmZlci5pc1ZpZXcoZSl9LGlzQmxvYjphfSxlLmV4cG9ydHMucHJvbWlzaWZ5LmN1c3RvbT1TeW1ib2wuZm9yKFwibm9kZWpzLnV0aWwucHJvbWlzaWZ5LmN1c3RvbVwiKX0sMjkyOihlLHQsbik9Pntjb25zdHtCdWZmZXI6cn09big0ODUpLHtPYmplY3REZWZpbmVQcm9wZXJ0eTpvLE9iamVjdEtleXM6aSxSZWZsZWN0QXBwbHk6YX09bigxOTEpLHtwcm9taXNpZnk6e2N1c3RvbTpsfX09big3NzUpLHtzdHJlYW1SZXR1cm5pbmdPcGVyYXRvcnM6cyxwcm9taXNlUmV0dXJuaW5nT3BlcmF0b3JzOmN9PW4oNTU0KSx7Y29kZXM6e0VSUl9JTExFR0FMX0NPTlNUUlVDVE9SOnV9fT1uKDE0MSksZj1uKDgxOCkse3BpcGVsaW5lOmR9PW4oNzU0KSx7ZGVzdHJveWVyOnB9PW4oMjMwKSxoPW4oODYpLHY9big3NjApLGc9bigxMzIpLEM9ZS5leHBvcnRzPW4oMjAwKS5TdHJlYW07Qy5pc0Rpc3R1cmJlZD1nLmlzRGlzdHVyYmVkLEMuaXNFcnJvcmVkPWcuaXNFcnJvcmVkLEMuaXNSZWFkYWJsZT1nLmlzUmVhZGFibGUsQy5SZWFkYWJsZT1uKDg1OCk7Zm9yKGNvbnN0IHkgb2YgaShzKSl7Y29uc3Qgdz1zW3ldO2Z1bmN0aW9uIGIoLi4uZSl7aWYobmV3LnRhcmdldCl0aHJvdyB1KCk7cmV0dXJuIEMuUmVhZGFibGUuZnJvbShhKHcsdGhpcyxlKSl9byhiLFwibmFtZVwiLHtfX3Byb3RvX186bnVsbCx2YWx1ZTp3Lm5hbWV9KSxvKGIsXCJsZW5ndGhcIix7X19wcm90b19fOm51bGwsdmFsdWU6dy5sZW5ndGh9KSxvKEMuUmVhZGFibGUucHJvdG90eXBlLHkse19fcHJvdG9fXzpudWxsLHZhbHVlOmIsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1mb3IoY29uc3QgeCBvZiBpKGMpKXtjb25zdCBfPWNbeF07ZnVuY3Rpb24gTCguLi5lKXtpZihuZXcudGFyZ2V0KXRocm93IHUoKTtyZXR1cm4gYShfLHRoaXMsZSl9byhMLFwibmFtZVwiLHtfX3Byb3RvX186bnVsbCx2YWx1ZTpfLm5hbWV9KSxvKEwsXCJsZW5ndGhcIix7X19wcm90b19fOm51bGwsdmFsdWU6Xy5sZW5ndGh9KSxvKEMuUmVhZGFibGUucHJvdG90eXBlLHgse19fcHJvdG9fXzpudWxsLHZhbHVlOkwsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1DLldyaXRhYmxlPW4oMzczKSxDLkR1cGxleD1uKDE4MiksQy5UcmFuc2Zvcm09bigyMTApLEMuUGFzc1Rocm91Z2g9big0NjcpLEMucGlwZWxpbmU9ZDtjb25zdHthZGRBYm9ydFNpZ25hbDptfT1uKDM3NCk7Qy5hZGRBYm9ydFNpZ25hbD1tLEMuZmluaXNoZWQ9aCxDLmRlc3Ryb3k9cCxDLmNvbXBvc2U9ZixvKEMsXCJwcm9taXNlc1wiLHtfX3Byb3RvX186bnVsbCxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6KCk9PnZ9KSxvKGQsbCx7X19wcm90b19fOm51bGwsZW51bWVyYWJsZTohMCxnZXQ6KCk9PnYucGlwZWxpbmV9KSxvKGgsbCx7X19wcm90b19fOm51bGwsZW51bWVyYWJsZTohMCxnZXQ6KCk9PnYuZmluaXNoZWR9KSxDLlN0cmVhbT1DLEMuX2lzVWludDhBcnJheT1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl9LEMuX3VpbnQ4QXJyYXlUb0J1ZmZlcj1mdW5jdGlvbihlKXtyZXR1cm4gci5mcm9tKGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpfX0sNzYwOihlLHQsbik9Pntjb25zdHtBcnJheVByb3RvdHlwZVBvcDpyLFByb21pc2U6b309bigxOTEpLHtpc0l0ZXJhYmxlOmksaXNOb2RlU3RyZWFtOmEsaXNXZWJTdHJlYW06bH09bigxMzIpLHtwaXBlbGluZUltcGw6c309big3NTQpLHtmaW5pc2hlZDpjfT1uKDg2KTtuKDkxKSxlLmV4cG9ydHM9e2ZpbmlzaGVkOmMscGlwZWxpbmU6ZnVuY3Rpb24oLi4uZSl7cmV0dXJuIG5ldyBvKCgodCxuKT0+e2xldCBvLGM7Y29uc3QgdT1lW2UubGVuZ3RoLTFdO2lmKHUmJlwib2JqZWN0XCI9PXR5cGVvZiB1JiYhYSh1KSYmIWkodSkmJiFsKHUpKXtjb25zdCB0PXIoZSk7bz10LnNpZ25hbCxjPXQuZW5kfXMoZSwoKGUscik9PntlP24oZSk6dChyKX0pLHtzaWduYWw6byxlbmQ6Y30pfSkpfX19LDUzMzplPT57dmFyIHQsbixyPWUuZXhwb3J0cz17fTtmdW5jdGlvbiBvKCl7dGhyb3cgbmV3IEVycm9yKFwic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZFwiKX1mdW5jdGlvbiBpKCl7dGhyb3cgbmV3IEVycm9yKFwiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkXCIpfWZ1bmN0aW9uIGEoZSl7aWYodD09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigodD09PW98fCF0KSYmc2V0VGltZW91dClyZXR1cm4gdD1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIHQoZSwwKX1jYXRjaChuKXt0cnl7cmV0dXJuIHQuY2FsbChudWxsLGUsMCl9Y2F0Y2gobil7cmV0dXJuIHQuY2FsbCh0aGlzLGUsMCl9fX0hZnVuY3Rpb24oKXt0cnl7dD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6b31jYXRjaChlKXt0PW99dHJ5e249XCJmdW5jdGlvblwiPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDppfWNhdGNoKGUpe249aX19KCk7dmFyIGwscz1bXSxjPSExLHU9LTE7ZnVuY3Rpb24gZigpe2MmJmwmJihjPSExLGwubGVuZ3RoP3M9bC5jb25jYXQocyk6dT0tMSxzLmxlbmd0aCYmZCgpKX1mdW5jdGlvbiBkKCl7aWYoIWMpe3ZhciBlPWEoZik7Yz0hMDtmb3IodmFyIHQ9cy5sZW5ndGg7dDspe2ZvcihsPXMscz1bXTsrK3U8dDspbCYmbFt1XS5ydW4oKTt1PS0xLHQ9cy5sZW5ndGh9bD1udWxsLGM9ITEsZnVuY3Rpb24oZSl7aWYobj09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChuPT09aXx8IW4pJiZjbGVhclRpbWVvdXQpcmV0dXJuIG49Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChlKTt0cnl7cmV0dXJuIG4oZSl9Y2F0Y2godCl7dHJ5e3JldHVybiBuLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gbi5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIHAoZSx0KXt0aGlzLmZ1bj1lLHRoaXMuYXJyYXk9dH1mdW5jdGlvbiBoKCl7fXIubmV4dFRpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTtzLnB1c2gobmV3IHAoZSx0KSksMSE9PXMubGVuZ3RofHxjfHxhKGQpfSxwLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxyLnRpdGxlPVwiYnJvd3NlclwiLHIuYnJvd3Nlcj0hMCxyLmVudj17fSxyLmFyZ3Y9W10sci52ZXJzaW9uPVwiXCIsci52ZXJzaW9ucz17fSxyLm9uPWgsci5hZGRMaXN0ZW5lcj1oLHIub25jZT1oLHIub2ZmPWgsci5yZW1vdmVMaXN0ZW5lcj1oLHIucmVtb3ZlQWxsTGlzdGVuZXJzPWgsci5lbWl0PWgsci5wcmVwZW5kTGlzdGVuZXI9aCxyLnByZXBlbmRPbmNlTGlzdGVuZXI9aCxyLmxpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm5bXX0sci5iaW5kaW5nPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkXCIpfSxyLmN3ZD1mdW5jdGlvbigpe3JldHVyblwiL1wifSxyLmNoZGlyPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZFwiKX0sci51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0sMzc3OihlLHQsbik9Pnt2YXIgcj1uKDQ4NSksbz1yLkJ1ZmZlcjtmdW5jdGlvbiBpKGUsdCl7Zm9yKHZhciBuIGluIGUpdFtuXT1lW25dfWZ1bmN0aW9uIGEoZSx0LG4pe3JldHVybiBvKGUsdCxuKX1vLmZyb20mJm8uYWxsb2MmJm8uYWxsb2NVbnNhZmUmJm8uYWxsb2NVbnNhZmVTbG93P2UuZXhwb3J0cz1yOihpKHIsdCksdC5CdWZmZXI9YSksaShvLGEpLGEuZnJvbT1mdW5jdGlvbihlLHQsbil7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyXCIpO3JldHVybiBvKGUsdCxuKX0sYS5hbGxvYz1mdW5jdGlvbihlLHQsbil7aWYoXCJudW1iZXJcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXJcIik7dmFyIHI9byhlKTtyZXR1cm4gdm9pZCAwIT09dD9cInN0cmluZ1wiPT10eXBlb2Ygbj9yLmZpbGwodCxuKTpyLmZpbGwodCk6ci5maWxsKDApLHJ9LGEuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXJcIik7cmV0dXJuIG8oZSl9LGEuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGUpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyXCIpO3JldHVybiByLlNsb3dCdWZmZXIoZSl9fSw0NjQ6KGUsdCxuKT0+e3ZhciByPW4oMzc3KS5CdWZmZXIsbz1yLmlzRW5jb2Rpbmd8fGZ1bmN0aW9uKGUpe3N3aXRjaCgoZT1cIlwiK2UpJiZlLnRvTG93ZXJDYXNlKCkpe2Nhc2VcImhleFwiOmNhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOmNhc2VcImFzY2lpXCI6Y2FzZVwiYmluYXJ5XCI6Y2FzZVwiYmFzZTY0XCI6Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6Y2FzZVwicmF3XCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19O2Z1bmN0aW9uIGkoZSl7dmFyIHQ7c3dpdGNoKHRoaXMuZW5jb2Rpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuXCJ1dGY4XCI7Zm9yKHZhciB0Ozspc3dpdGNoKGUpe2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOnJldHVyblwidXRmOFwiO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVyblwidXRmMTZsZVwiO2Nhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOnJldHVyblwibGF0aW4xXCI7Y2FzZVwiYmFzZTY0XCI6Y2FzZVwiYXNjaWlcIjpjYXNlXCJoZXhcIjpyZXR1cm4gZTtkZWZhdWx0OmlmKHQpcmV0dXJuO2U9KFwiXCIrZSkudG9Mb3dlckNhc2UoKSx0PSEwfX0oZSk7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQmJihyLmlzRW5jb2Rpbmc9PT1vfHwhbyhlKSkpdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBlbmNvZGluZzogXCIrZSk7cmV0dXJuIHR8fGV9KGUpLHRoaXMuZW5jb2Rpbmcpe2Nhc2VcInV0ZjE2bGVcIjp0aGlzLnRleHQ9cyx0aGlzLmVuZD1jLHQ9NDticmVhaztjYXNlXCJ1dGY4XCI6dGhpcy5maWxsTGFzdD1sLHQ9NDticmVhaztjYXNlXCJiYXNlNjRcIjp0aGlzLnRleHQ9dSx0aGlzLmVuZD1mLHQ9MzticmVhaztkZWZhdWx0OnJldHVybiB0aGlzLndyaXRlPWQsdm9pZCh0aGlzLmVuZD1wKX10aGlzLmxhc3ROZWVkPTAsdGhpcy5sYXN0VG90YWw9MCx0aGlzLmxhc3RDaGFyPXIuYWxsb2NVbnNhZmUodCl9ZnVuY3Rpb24gYShlKXtyZXR1cm4gZTw9MTI3PzA6ZT4+NT09Nj8yOmU+PjQ9PTE0PzM6ZT4+Mz09MzA/NDplPj42PT0yPy0xOi0yfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCxuPWZ1bmN0aW9uKGUsdCxuKXtpZigxMjghPSgxOTImdFswXSkpcmV0dXJuIGUubGFzdE5lZWQ9MCxcIu+/vVwiO2lmKGUubGFzdE5lZWQ+MSYmdC5sZW5ndGg+MSl7aWYoMTI4IT0oMTkyJnRbMV0pKXJldHVybiBlLmxhc3ROZWVkPTEsXCLvv71cIjtpZihlLmxhc3ROZWVkPjImJnQubGVuZ3RoPjImJjEyOCE9KDE5MiZ0WzJdKSlyZXR1cm4gZS5sYXN0TmVlZD0yLFwi77+9XCJ9fSh0aGlzLGUpO3JldHVybiB2b2lkIDAhPT1uP246dGhpcy5sYXN0TmVlZDw9ZS5sZW5ndGg/KGUuY29weSh0aGlzLmxhc3RDaGFyLHQsMCx0aGlzLmxhc3ROZWVkKSx0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCkpOihlLmNvcHkodGhpcy5sYXN0Q2hhcix0LDAsZS5sZW5ndGgpLHZvaWQodGhpcy5sYXN0TmVlZC09ZS5sZW5ndGgpKX1mdW5jdGlvbiBzKGUsdCl7aWYoKGUubGVuZ3RoLXQpJTI9PTApe3ZhciBuPWUudG9TdHJpbmcoXCJ1dGYxNmxlXCIsdCk7aWYobil7dmFyIHI9bi5jaGFyQ29kZUF0KG4ubGVuZ3RoLTEpO2lmKHI+PTU1Mjk2JiZyPD01NjMxOSlyZXR1cm4gdGhpcy5sYXN0TmVlZD0yLHRoaXMubGFzdFRvdGFsPTQsdGhpcy5sYXN0Q2hhclswXT1lW2UubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09ZVtlLmxlbmd0aC0xXSxuLnNsaWNlKDAsLTEpfXJldHVybiBufXJldHVybiB0aGlzLmxhc3ROZWVkPTEsdGhpcy5sYXN0VG90YWw9Mix0aGlzLmxhc3RDaGFyWzBdPWVbZS5sZW5ndGgtMV0sZS50b1N0cmluZyhcInV0ZjE2bGVcIix0LGUubGVuZ3RoLTEpfWZ1bmN0aW9uIGMoZSl7dmFyIHQ9ZSYmZS5sZW5ndGg/dGhpcy53cml0ZShlKTpcIlwiO2lmKHRoaXMubGFzdE5lZWQpe3ZhciBuPXRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQ7cmV0dXJuIHQrdGhpcy5sYXN0Q2hhci50b1N0cmluZyhcInV0ZjE2bGVcIiwwLG4pfXJldHVybiB0fWZ1bmN0aW9uIHUoZSx0KXt2YXIgbj0oZS5sZW5ndGgtdCklMztyZXR1cm4gMD09PW4/ZS50b1N0cmluZyhcImJhc2U2NFwiLHQpOih0aGlzLmxhc3ROZWVkPTMtbix0aGlzLmxhc3RUb3RhbD0zLDE9PT1uP3RoaXMubGFzdENoYXJbMF09ZVtlLmxlbmd0aC0xXToodGhpcy5sYXN0Q2hhclswXT1lW2UubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09ZVtlLmxlbmd0aC0xXSksZS50b1N0cmluZyhcImJhc2U2NFwiLHQsZS5sZW5ndGgtbikpfWZ1bmN0aW9uIGYoZSl7dmFyIHQ9ZSYmZS5sZW5ndGg/dGhpcy53cml0ZShlKTpcIlwiO3JldHVybiB0aGlzLmxhc3ROZWVkP3QrdGhpcy5sYXN0Q2hhci50b1N0cmluZyhcImJhc2U2NFwiLDAsMy10aGlzLmxhc3ROZWVkKTp0fWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGUudG9TdHJpbmcodGhpcy5lbmNvZGluZyl9ZnVuY3Rpb24gcChlKXtyZXR1cm4gZSYmZS5sZW5ndGg/dGhpcy53cml0ZShlKTpcIlwifXQuU3RyaW5nRGVjb2Rlcj1pLGkucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm5cIlwiO3ZhciB0LG47aWYodGhpcy5sYXN0TmVlZCl7aWYodm9pZCAwPT09KHQ9dGhpcy5maWxsTGFzdChlKSkpcmV0dXJuXCJcIjtuPXRoaXMubGFzdE5lZWQsdGhpcy5sYXN0TmVlZD0wfWVsc2Ugbj0wO3JldHVybiBuPGUubGVuZ3RoP3Q/dCt0aGlzLnRleHQoZSxuKTp0aGlzLnRleHQoZSxuKTp0fHxcIlwifSxpLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5sZW5ndGg/dGhpcy53cml0ZShlKTpcIlwiO3JldHVybiB0aGlzLmxhc3ROZWVkP3QrXCLvv71cIjp0fSxpLnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQubGVuZ3RoLTE7aWYocjxuKXJldHVybiAwO3ZhciBvPWEodFtyXSk7cmV0dXJuIG8+PTA/KG8+MCYmKGUubGFzdE5lZWQ9by0xKSxvKTotLXI8bnx8LTI9PT1vPzA6KG89YSh0W3JdKSk+PTA/KG8+MCYmKGUubGFzdE5lZWQ9by0yKSxvKTotLXI8bnx8LTI9PT1vPzA6KG89YSh0W3JdKSk+PTA/KG8+MCYmKDI9PT1vP289MDplLmxhc3ROZWVkPW8tMyksbyk6MH0odGhpcyxlLHQpO2lmKCF0aGlzLmxhc3ROZWVkKXJldHVybiBlLnRvU3RyaW5nKFwidXRmOFwiLHQpO3RoaXMubGFzdFRvdGFsPW47dmFyIHI9ZS5sZW5ndGgtKG4tdGhpcy5sYXN0TmVlZCk7cmV0dXJuIGUuY29weSh0aGlzLmxhc3RDaGFyLDAsciksZS50b1N0cmluZyhcInV0ZjhcIix0LHIpfSxpLnByb3RvdHlwZS5maWxsTGFzdD1mdW5jdGlvbihlKXtpZih0aGlzLmxhc3ROZWVkPD1lLmxlbmd0aClyZXR1cm4gZS5jb3B5KHRoaXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCwwLHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKTtlLmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAsZS5sZW5ndGgpLHRoaXMubGFzdE5lZWQtPWUubGVuZ3RofX0sNTQ6KGUsdCxuKT0+e24uZCh0LHtNUzooKT0+ayxjRjooKT0+UixBSzooKT0+UCxNXzooKT0+QSxjWDooKT0+SSxCVDooKT0+cmUsX1c6KCk9PkgsUGc6KCk9PmhlLCRqOigpPT50ZSxVJDooKT0+RixVNzooKT0+Tn0pO3ZhciByPXtkOihlLHQpPT57Zm9yKHZhciBuIGluIHQpci5vKHQsbikmJiFyLm8oZSxuKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTohMCxnZXQ6dFtuXX0pfSxvOihlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0sbz17fTtyLmQobyx7TVM6KCk9PmksY0Y6KCk9PmEsQUs6KCk9PnMsTV86KCk9PmwsY1g6KCk9PmMsWWQ6KCk9Pmcsbmo6KCk9PnUsTzQ6KCk9PmosX1c6KCk9PmYsVSQ6KCk9PnAsVTc6KCk9Pmh9KTtjbGFzcyBpIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSx0KXt2YXIgbixyO3N1cGVyKGU9bnVsbCE9PShuPW51bGwhPWU/ZTpudWxsPT10P3ZvaWQgMDp0Lm1lc3NhZ2UpJiZ2b2lkIDAhPT1uP246XCJBbiB1bmV4cGVjdGVkIGVycm9yIGhhcyBvY2N1cnJlZFwiKSx0aGlzLm5hbWU9dGhpcy5jb25zdHJ1Y3Rvci5uYW1lLHRoaXMuc3RhY2s9KGU/dGhpcy5zdGFjazpudWxsIT09KHI9bnVsbD09dD92b2lkIDA6dC5zdGFjaykmJnZvaWQgMCE9PXI/cjp0aGlzLnN0YWNrKS5yZXBsYWNlKC9eKFxcdypFcnJvcikvLGAke3RoaXMuY29uc3RydWN0b3IubmFtZX1gKX19Y2xhc3MgYSBleHRlbmRzIGl7Y29uc3RydWN0b3IoZSx0LG4pe3ZhciByO3N1cGVyKGU9bnVsbCE9PShyPW51bGwhPWU/ZTpudWxsPT1uP3ZvaWQgMDpuLm1lc3NhZ2UpJiZ2b2lkIDAhPT1yP3I6XCJBbiBlcnJvciBvY2N1cnJlZCB3aGVuIGV4ZWN1dGluZyB0aGUgQVBJIHJlcXVlc3RcIixuKSx0aGlzLnN0YXR1cz10fX1jbGFzcyBsIGV4dGVuZHMgaXtjb25zdHJ1Y3RvcihlLHQpe3ZhciBuO3N1cGVyKGU9bnVsbCE9PShuPW51bGwhPWU/ZTpudWxsPT10P3ZvaWQgMDp0Lm1lc3NhZ2UpJiZ2b2lkIDAhPT1uP246XCJBbiBhdXRob3JpemF0aW9uIGVycm9yIG9jY3VycmVkXCIsdCl9fWNsYXNzIHMgZXh0ZW5kcyBpe2NvbnN0cnVjdG9yKGUsdCl7dmFyIG47c3VwZXIoZT1udWxsIT09KG49bnVsbCE9ZT9lOm51bGw9PXQ/dm9pZCAwOnQubWVzc2FnZSkmJnZvaWQgMCE9PW4/bjpcIlRoZSBBUEkgcmVxdWVzdCBmYWlsZWQgYXMgdGhlIGF1dGhvcml6YXRpb24gdG9rZW5zIGhhdmUgZXhwaXJlZFwiLHQpfX1jbGFzcyBjIGV4dGVuZHMgaXtjb25zdHJ1Y3RvcihlLHQpe3ZhciBuO3N1cGVyKGU9bnVsbCE9PShuPW51bGwhPWU/ZTpudWxsPT10P3ZvaWQgMDp0Lm1lc3NhZ2UpJiZ2b2lkIDAhPT1uP246XCJBbiBpbml0aWFsaXphdGlvbiBlcnJvciBvY2N1cnJlZFwiLHQpfX1jbGFzcyB1IGV4dGVuZHMgaXtjb25zdHJ1Y3RvcihlLHQpe3ZhciBuO3N1cGVyKGU9bnVsbCE9PShuPW51bGwhPWU/ZTpudWxsPT10P3ZvaWQgMDp0Lm1lc3NhZ2UpJiZ2b2lkIDAhPT1uP246XCJUaGUgbWV0aG9kIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZFwiLHQpfX1jbGFzcyBmIGV4dGVuZHMgaXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlPW51bGwhPWU/ZTpcIkludmFsaWQgcGFyYW1ldGVyIGRldGVjdGVkXCIpfX1jb25zdCBkPWU9PntsZXQgdD1maW4uSW50ZWdyYXRpb25zO3R8fChmaW4uSW50ZWdyYXRpb25zPXt9LHQ9ZmluLkludGVncmF0aW9ucyk7bGV0IG49dFtlXTtyZXR1cm4gbnx8KHRbZV09e30sbj10W2VdKSxufSxwPWU9PntkKGUpLmxvZ2dpbmdFbmFibGVkPSExfSxoPShlLHQ9XCIwLjAuMFwiKT0+e2QoZSkubG9nZ2luZ0VuYWJsZWQ9ITAsdihlKX0sdj1lPT5gW0BvcGVuZmluLyR7ZS50b0xvd2VyQ2FzZSgpfV1gO2NsYXNzIGd7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lPWUsdGhpcy5wcmVmaXg9dihlKSx0aGlzLmlzTG9nZ2luZ0VuYWJsZWQ9dGhpcy5pc0xvZ2dpbmdFbmFibGVkLmJpbmQodGhpcyksdGhpcy5sb2dFcnJvcj10aGlzLmxvZ0Vycm9yLmJpbmQodGhpcyksdGhpcy5sb2dJbmZvPXRoaXMubG9nSW5mby5iaW5kKHRoaXMpLHRoaXMubG9nV2FybmluZz10aGlzLmxvZ1dhcm5pbmcuYmluZCh0aGlzKX1pc0xvZ2dpbmdFbmFibGVkKCl7cmV0dXJuIGQodGhpcy5uYW1lKS5sb2dnaW5nRW5hYmxlZH1sb2dFcnJvcihlKXt0aGlzLmlzTG9nZ2luZ0VuYWJsZWQoKSYmKGUuaW5uZXJFcnJvcj9jb25zb2xlLmVycm9yKHRoaXMucHJlZml4LGUsXCJcXG5cXG4oaW5uZXIpXCIsZS5pbm5lckVycm9yKTpjb25zb2xlLmVycm9yKHRoaXMucHJlZml4LGUpKX1sb2dJbmZvKC4uLmUpe3RoaXMuaXNMb2dnaW5nRW5hYmxlZCgpJiZ0aGlzLnByZWZpeH1sb2dXYXJuaW5nKC4uLmUpe3RoaXMuaXNMb2dnaW5nRW5hYmxlZCgpJiZjb25zb2xlLndhcm4odGhpcy5wcmVmaXgsLi4uZSl9fWNvbnN0IEM9XCJvYXV0aC1hcGktYXV0aC1mbG93XCIsbT0oZSx0LG4scixvLGEsbCxzKT0+YXN5bmMgYz0+e2NvbnN0IHU9bmV3IFVSTChjKTtpZigwIT09dS5ocmVmLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihvLnRvTG93ZXJDYXNlKCkpKXJldHVybiExO2lmKHdpbmRvdy5jbGVhckludGVydmFsKHMpLHdpbmRvdy5jbGVhclRpbWVvdXQodCksd2luZG93LmNsZWFyVGltZW91dChuKSxlLnJlbW92ZUFsbExpc3RlbmVycygpLGUuY2xvc2UoITApLHUuc2VhcmNoUGFyYW1zLmdldChcImVycm9yXCIpKXtjb25zdCBlPW5ldyBpKFwiQXV0aG9yaXphdGlvbiBlcnJvclwiKTtyZXR1cm4gZS5kYXRhPXUudG9TdHJpbmcoKSxsKGUpLCEwfWlmKHUuc2VhcmNoUGFyYW1zLmdldChcInN0YXRlXCIpIT09cil7Y29uc3QgZT1uZXcgaShcIlN0YXRlIG1pc21hdGNoXCIpO3JldHVybiBlLmRhdGE9dS50b1N0cmluZygpLGwoZSksITB9Y29uc3QgZj11LnNlYXJjaFBhcmFtcy5nZXQoXCJjb2RlXCIpO2lmKCFmKXtjb25zdCBlPW5ldyBpKFwiQXV0aG9yaXphdGlvbiBjb2RlIG1pc3NpbmdcIik7cmV0dXJuIGUuZGF0YT11LnRvU3RyaW5nKCksbChlKSwhMH1yZXR1cm4gYShmKSwhMH0seT0oZSx0LG4scik9PmFzeW5jKG8sYSk9PntsZXQgbDtjb25zdCBzPXdpbmRvdy5zZXRUaW1lb3V0KCgoKT0+e3dpbmRvdy5jbGVhckludGVydmFsKGwpLHdpbmRvdy5jbGVhclRpbWVvdXQocyksZS5yZW1vdmVBbGxMaXN0ZW5lcnMoKSxlLmNsb3NlKCEwKSxhKG5ldyBpKFwiQXV0aG9yaXphdGlvbiB0aW1lZCBvdXRcIikpfSksM2U1KTtlLmFkZExpc3RlbmVyKFwiY2xvc2luZ1wiLChhc3luYygpPT57ci5sb2dJbmZvKFwiVXNlciBjbG9zZWQgYXV0aCB3aW5kb3dcIiksd2luZG93LmNsZWFySW50ZXJ2YWwobCksd2luZG93LmNsZWFyVGltZW91dChzKSxlLnJlbW92ZUFsbExpc3RlbmVycygpLGEobmV3IGkoXCJGYWlsZWQgdG8gY29tcGxldGUgYXV0aG9yaXphdGlvbiBjb2RlIGZsb3dcIikpfSkpO2NvbnN0IGM9d2luZG93LnNldFRpbWVvdXQoKGFzeW5jKCk9Pnt0cnl7YXdhaXQgZS5pc1Nob3dpbmcoKXx8KHIubG9nSW5mbyhcIlNob3dpbmcgYXV0aCB3aW5kb3dcIiksYXdhaXQgZS5zaG93KCEwKSxhd2FpdCBlLmZvY3VzKCkpfWNhdGNoKGUpe3IubG9nV2FybmluZyhcIlVuYWJsZSB0byBzaG93IGF1dGggd2luZG93XCIpfX0pLDJlMykse3ZlcnNpb246dX09YXdhaXQgZmluLlN5c3RlbS5nZXRSdW50aW1lSW5mbygpO3BhcnNlSW50KHUuc3BsaXQoXCIuXCIpWzBdLDEwKT49MzA/YXdhaXQgbShlLHMsYyx0LG4sbyxhKSgoYXdhaXQgZS5nZXRJbmZvKCkpLnVybCl8fGF3YWl0IGUuYWRkTGlzdGVuZXIoXCJ1cmwtY2hhbmdlZFwiLChpPT57ci5sb2dJbmZvKFwiQXV0aCB3aW5kb3cgbmF2aWdhdGVkIHRvXCIsaS51cmwpLG0oZSxzLGMsdCxuLG8sYSkoaS51cmwpfSkpOmw9d2luZG93LnNldEludGVydmFsKCgoKT0+KGFzeW5jKGUsdCxuLHIsbyxhLGwscyk9PntsZXQgYzt0cnl7Yz1hd2FpdCBlLmdldEluZm8oKX1jYXRjaChlKXtyZXR1cm4gd2luZG93LmNsZWFySW50ZXJ2YWwodCksd2luZG93LmNsZWFyVGltZW91dChuKSx3aW5kb3cuY2xlYXJUaW1lb3V0KHIpLHMobmV3IGkoXCJDb3VsZCBub3QgbG9jYXRlIGF1dGggd2luZG93XCIpKSwhMX1yZXR1cm4gbShlLG4scixvLGEsbCxzLHQpKGMudXJsKX0pKGUsbCxzLGMsdCxuLG8sYSkpLDUwMCl9LHc9KCk9PntsZXQgZSx0LG4scjtjb25zdCBvPWFzeW5jKHQsbj0hMSk9Pntjb25zdHtjb21tYW5kOnIsZGF0YTphLGlkOmx9PXQscz17Y29tbWFuZDpyLGlkOmx9O3RyeXtpZighZSl0aHJvdyBuZXcgRXJyb3IoXCJBY2Nlc3MgdG9rZW4gbm90IGZvdW5kXCIpO2NvbnN0e2FwaVJlcXVlc3RVcmw6cixkYXRhOmwsaGVhZGVyczpjLGh0dHBNZXRob2Q6dSxpbmNsdWRlQXV0aG9yaXphdGlvbjpmfT1hLGQ9YXdhaXQoYXN5bmModCxuLHIsbyxpKT0+e3ZhciBhLGw7Y29uc3Qgcz1PYmplY3QuYXNzaWduKHtBY2NlcHQ6XCJhcHBsaWNhdGlvbi9qc29uXCJ9LG8pO1wiUEFUQ0hcIiE9PW4mJlwiUE9TVFwiIT09biYmXCJQVVRcIiE9PW58fC9jb250ZW50LXR5cGUvaS50ZXN0KE9iamVjdC5rZXlzKHMpLmpvaW4oXCIsXCIpKXx8KHNbXCJDb250ZW50LVR5cGVcIl09XCJhcHBsaWNhdGlvbi9qc29uXCIpLGkmJihzLkF1dGhvcml6YXRpb249YEJlYXJlciAke2V9YCk7Y29uc3QgYz1hd2FpdCBmZXRjaCh0LHtib2R5Olwib2JqZWN0XCI9PXR5cGVvZiByP0pTT04uc3RyaW5naWZ5KHIpOnIsaGVhZGVyczpzLG1ldGhvZDpufSk7aWYoIWMub2spe2NvbnN0IGU9e21lc3NhZ2U6XCJGYWlsZWQgdG8gZXhlY3V0ZSBBUEkgcmVxdWVzdFwifTtyZXR1cm4obnVsbD09PShhPWMuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIikpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLmluY2x1ZGVzKFwiYXBwbGljYXRpb24vanNvblwiKSkmJihlLmRhdGE9YXdhaXQgYy5qc29uKCkpLFtjLnN0YXR1cyx2b2lkIDAsdm9pZCAwLGVdfWxldCB1O2NvbnN0IGY9bnVsbCE9PShsPWMuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIikpJiZ2b2lkIDAhPT1sP2w6XCJcIjtzd2l0Y2goITApe2Nhc2UhZjpicmVhaztjYXNlL15hcHBsaWNhdGlvblxcLyhcXHcrXFwrKT9qc29uL2kudGVzdChmKTp1PWF3YWl0IGMuanNvbigpO2JyZWFrO2Nhc2UvXm11bHRpcGFydFxcL2Zvcm0tP2RhdGF8XmFwcGxpY2F0aW9uXFwveC0/d3d3LT9mb3JtLT91cmxlbmNvZGVkL2kudGVzdChmKTp1PWF3YWl0IGMuZm9ybURhdGEoKTticmVhaztjYXNlL15hcHBsaWNhdGlvblxcLygoW14vXSspP3htbHx2bmRcXC5vcGVueG1sZm9ybWF0cyl8XnRleHRcXC98XmltYWdlXFwvc3ZnL2kudGVzdChmKTp1PWF3YWl0IGMudGV4dCgpO2JyZWFrO2RlZmF1bHQ6dT1hd2FpdCBjLmFycmF5QnVmZmVyKCl9cmV0dXJuW2Muc3RhdHVzLHUsZix2b2lkIDBdfSkocix1LGwsYyxmKSxbcCxoLHYsZ109ZDtpZihzLnN0YXR1cz1wLGcpe2lmKCFuJiY0MDE9PT1wKXtjb25zdFtlLG5dPWF3YWl0IGkoKTtyZXR1cm4gbj8ocy5zdGF0dXM9ZSxzLmVycm9yPW4scyk6YXdhaXQgbyh0LCEwKX1zLmVycm9yPWd9ZWxzZSBoJiYocy5kYXRhPWgscy50eXBlPXYpfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBFcnJvcj9zLmVycm9yPXttZXNzYWdlOmUubWVzc2FnZX06cy5lcnJvcj17bWVzc2FnZTpcIkZhaWxlZCB0byBleGVjdXRlIEFQSSByZXF1ZXN0XCJ9fXJldHVybiBQcm9taXNlLnJlc29sdmUocyl9LGk9YXN5bmMoKT0+e3ZhciBvO2lmKCFuKXRocm93IG5ldyBFcnJvcihcIkF1dGhvcml6YXRpb24gc2VydmVyIG1ldGFkYXRhIG5vdCBzZXRcIik7aWYoIXQpdGhyb3cgbmV3IEVycm9yKFwiQ2xpZW50IElEIG5vdCBzZXRcIik7Y29uc3QgaT1gZ3JhbnRfdHlwZT1yZWZyZXNoX3Rva2VuJmNsaWVudF9pZD0ke3R9JnJlZnJlc2hfdG9rZW49JHtyfWAsYT1hd2FpdCBmZXRjaChuLnRva2VuX2VuZHBvaW50LHtib2R5OmksaGVhZGVyczp7QWNjZXB0OlwiYXBwbGljYXRpb24vanNvblwiLFwiQ29udGVudC1UeXBlXCI6XCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIn0sbWV0aG9kOlwiUE9TVFwifSk7aWYoIWEub2spe2NvbnN0IGU9e21lc3NhZ2U6XCJGYWlsZWQgdG8gcmVmcmVzaCBhY2Nlc3MgdG9rZW5cIn07cmV0dXJuKG51bGw9PT0obz1hLmhlYWRlcnMuZ2V0KFwiQ29udGVudC1UeXBlXCIpKXx8dm9pZCAwPT09bz92b2lkIDA6by5pbmNsdWRlcyhcImFwcGxpY2F0aW9uL2pzb25cIikpJiYoZS5kYXRhPWF3YWl0IGEuanNvbigpKSxbYS5zdGF0dXMsZV19Y29uc3QgbD1hd2FpdCBhLmpzb24oKTtyZXR1cm4gZT1sLmFjY2Vzc190b2tlbixbYS5zdGF0dXNdfTtzZWxmLm9ubWVzc2FnZT1hc3luYyBpPT57Y29uc3R7Y29tbWFuZDphLGlkOmx9PWkuZGF0YTtsZXQgcz17Y29tbWFuZDphLGlkOmx9O3N3aXRjaChhKXtjYXNlXCJBUElfUkVRVUVTVFwiOnM9YXdhaXQgbyhpLmRhdGEpO2JyZWFrO2Nhc2VcIkNPREVfRVhDSEFOR0VcIjpzPWF3YWl0KGFzeW5jIG89Pnt2YXIgaTtjb25zdHtjb21tYW5kOmEsZGF0YTpsLGlkOnN9PW8sYz17Y29tbWFuZDphLGlkOnN9O3RyeXtpZighbil0aHJvdyBuZXcgRXJyb3IoXCJBdXRob3JpemF0aW9uIHNlcnZlciBtZXRhZGF0YSBub3Qgc2V0XCIpO2lmKCF0KXRocm93IG5ldyBFcnJvcihcIkNsaWVudCBJRCBub3Qgc2V0XCIpO2NvbnN0e2NvZGU6byxjb2RlVmVyaWZpZXI6YSxyZWRpcmVjdFVyaTpzfT1sLHU9YGdyYW50X3R5cGU9YXV0aG9yaXphdGlvbl9jb2RlJmNsaWVudF9pZD0ke3R9JmNvZGU9JHtvfSZjb2RlX3ZlcmlmaWVyPSR7YX0mcmVkaXJlY3RfdXJpPSR7c31gLGY9YXdhaXQgZmV0Y2gobi50b2tlbl9lbmRwb2ludCx7Ym9keTp1LGhlYWRlcnM6e0FjY2VwdDpcImFwcGxpY2F0aW9uL2pzb25cIixcIkNvbnRlbnQtVHlwZVwiOlwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCJ9LG1ldGhvZDpcIlBPU1RcIn0pO2lmKGYub2spe2NvbnN0IHQ9YXdhaXQgZi5qc29uKCk7ZT10LmFjY2Vzc190b2tlbixyPXQucmVmcmVzaF90b2tlbn1lbHNle2NvbnN0IGU9e21lc3NhZ2U6XCJGYWlsZWQgdG8gcmV0cmlldmUgdG9rZW5zXCJ9OyhudWxsPT09KGk9Zi5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKSl8fHZvaWQgMD09PWk/dm9pZCAwOmkuaW5jbHVkZXMoXCJhcHBsaWNhdGlvbi9qc29uXCIpKSYmKGUuZGF0YT1hd2FpdCBmLmpzb24oKSksYy5lcnJvcj1lfX1jYXRjaChlKXtlIGluc3RhbmNlb2YgRXJyb3I/Yy5lcnJvcj17bWVzc2FnZTplLm1lc3NhZ2V9OmMuZXJyb3I9e21lc3NhZ2U6XCJGYWlsZWQgdG8gcmV0cmlldmUgdG9rZW5zXCJ9fXJldHVybiBQcm9taXNlLnJlc29sdmUoYyl9KShpLmRhdGEpO2JyZWFrO2Nhc2VcIkVYUElSRV9UT0tFTlNcIjpzPWF3YWl0KGFzeW5jIHQ9Pnt2YXIgbztjb25zdHtjb21tYW5kOmksZXhwaXJlQWNjZXNzVG9rZW5Pbmx5OmEsaWQ6bH09dCxzPXtjb21tYW5kOmksaWQ6bH07dHJ5e2lmKCFhJiYhcil0aHJvdyBuZXcgRXJyb3IoXCJSZWZyZXNoIHRva2VuIG5vdCBmb3VuZFwiKTtpZighbil0aHJvdyBuZXcgRXJyb3IoXCJBdXRob3JpemF0aW9uIHNlcnZlciBtZXRhZGF0YSBub3Qgc2V0XCIpO2lmKCFuLnJldm9jYXRpb25fZW5kcG9pbnQpdGhyb3cgbmV3IEVycm9yKFwiUmV2b2NhdGlvbiBlbmRwb2ludCBtaXNzaW5nIGluIGF1dGhvcml6YXRpb24gc2VydmVyIG1ldGFkYXRhXCIpO2NvbnN0IHQ9YT9lOnIsaT1hd2FpdCBmZXRjaChgJHtuLnJldm9jYXRpb25fZW5kcG9pbnR9P3Rva2VuPSR7dH1gLHtoZWFkZXJzOntBY2NlcHQ6XCJhcHBsaWNhdGlvbi9qc29uXCJ9fSk7aWYoIWkub2spe2NvbnN0IGU9e21lc3NhZ2U6XCJGYWlsZWQgdG8gcmV2b2tlIHRva2Vuc1wifTsobnVsbD09PShvPWkuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIikpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLmluY2x1ZGVzKFwiYXBwbGljYXRpb24vanNvblwiKSkmJihlLmRhdGE9YXdhaXQgaS5qc29uKCkpLHMuZXJyb3I9ZX19Y2F0Y2goZSl7ZSBpbnN0YW5jZW9mIEVycm9yP3MuZXJyb3I9e21lc3NhZ2U6ZS5tZXNzYWdlfTpzLmVycm9yPXttZXNzYWdlOlwiRmFpbGVkIHRvIHJldm9rZSB0b2tlbnNcIn19cmV0dXJuIFByb21pc2UucmVzb2x2ZShzKX0pKGkuZGF0YSk7YnJlYWs7Y2FzZVwiSU5JVFwiOnM9YXdhaXQoYXN5bmMgZT0+e2NvbnN0e2NvbW1hbmQ6cixkYXRhOm8saWQ6aX09ZSxhPXtjb21tYW5kOnIsaWQ6aX07cmV0dXJuIHQ9by5jbGllbnRJZCxuPW8ubWV0YWRhdGEsUHJvbWlzZS5yZXNvbHZlKGEpfSkoaS5kYXRhKTticmVhaztkZWZhdWx0OnMuZXJyb3I9bmV3IEVycm9yKGBVbmV4cGVjdGVkIG9hdXRoIHdvcmtlciBjb21tYW5kOiAke2F9YCl9c2VsZi5wb3N0TWVzc2FnZShzKX19O3ZhciBiOyFmdW5jdGlvbihlKXtlLkFwaVJlcXVlc3Q9XCJBUElfUkVRVUVTVFwiLGUuQ29kZUV4Y2hhbmdlPVwiQ09ERV9FWENIQU5HRVwiLGUuRXhwaXJlVG9rZW5zPVwiRVhQSVJFX1RPS0VOU1wiLGUuSW5pdD1cIklOSVRcIn0oYnx8KGI9e30pKTtjb25zdCB4PVtdLF89ZT0+e3gucHVzaChlKX0sTD0oZSx0KT0+KG4scixvKT0+bmV3IFByb21pc2UoKChpLGEpPT57Y29uc3QgbD17Y29tbWFuZDpiLkNvZGVFeGNoYW5nZSxkYXRhOntjb2RlOm4sY29kZVZlcmlmaWVyOnIscmVkaXJlY3RVcmk6b30saWQ6RGF0ZS5ub3coKS50b1N0cmluZygpfSx7Y29tbWFuZDpzLGlkOmN9PWw7Xyh7Y29tbWFuZDpzLGlkOmMscmVqZWN0OmEscmVzb2x2ZTppfSksZS5wb3N0TWVzc2FnZShsKSx0LmxvZ0luZm8oXCJXb3JrZXIgcmVxdWVzdCBzZW50XCIsbCl9KSksTz0oZSx0LG4pPT4ocixvLGksYSxsKT0+bmV3IFByb21pc2UoKChzLGMpPT57Y29uc3QgdT17Y29tbWFuZDpiLkFwaVJlcXVlc3QsZGF0YTp7YXBpUmVxdWVzdFVybDpyLGNsaWVudElkOmUsZGF0YTppLGhlYWRlcnM6YSxodHRwTWV0aG9kOm8saW5jbHVkZUF1dGhvcml6YXRpb246bH0saWQ6RGF0ZS5ub3coKS50b1N0cmluZygpfSx7Y29tbWFuZDpmLGlkOmR9PXU7Xyh7Y29tbWFuZDpmLGlkOmQscmVqZWN0OmMscmVzb2x2ZTpzfSksdC5wb3N0TWVzc2FnZSh1KSxuLmxvZ0luZm8oXCJXb3JrZXIgcmVxdWVzdCBzZW50XCIsdSl9KSksRT0oZSx0KT0+bj0+bmV3IFByb21pc2UoKChyLG8pPT57Y29uc3QgaT17Y29tbWFuZDpiLkV4cGlyZVRva2VucyxleHBpcmVBY2Nlc3NUb2tlbk9ubHk6bixpZDpEYXRlLm5vdygpLnRvU3RyaW5nKCl9LHtjb21tYW5kOmEsaWQ6bH09aTtfKHtjb21tYW5kOmEsaWQ6bCxyZWplY3Q6byxyZXNvbHZlOnJ9KSxlLnBvc3RNZXNzYWdlKGkpLHQubG9nSW5mbyhcIldvcmtlciByZXF1ZXN0IHNlbnRcIixpKX0pKSxTPShlLHQpPT57Y29uc3Qgbj14LmZpbmRJbmRleCgobj0+bi5jb21tYW5kPT09dCYmbi5pZD09PWUpKTtuPj0wJiZ4LnNwbGljZShuLDEpfSxNPShlLHQpPT5hc3luYygpPT57dHJ5e2F3YWl0IEUoZSx0KSghMSl9Y2F0Y2goZSl7dC5sb2dXYXJuaW5nKGUubWVzc2FnZSl9ZS50ZXJtaW5hdGUoKSx0LmxvZ0luZm8oXCJXb3JrZXIgdGVybWluYXRlZFwiKX07Y2xhc3MgantnZXQgYXBpT3JpZ2luKCl7cmV0dXJuIHRoaXMuX2FwaU9yaWdpbn1nZXQgY2xpZW50SWQoKXtyZXR1cm4gdGhpcy5fY2xpZW50SWR9Z2V0IGxvZ2dlcigpe3JldHVybiB0aGlzLl9sb2dnZXJ9Z2V0IG1ldGFkYXRhKCl7cmV0dXJuIHRoaXMuX21ldGFkYXRhfWdldCB3b3JrZXIoKXtyZXR1cm4gdGhpcy5fd29ya2VyfWNvbnN0cnVjdG9yKGUsdCxuLHIsbyl7aWYodGhpcy5leGVjdXRlQXBpUmVxdWVzdD1hc3luYyhlLHQ9XCJHRVRcIixuLHIsbz0hMCxpPSExKT0+e3RoaXMuX2xvZ2dlci5sb2dJbmZvKFwiRXhlY3V0ZUFwaVJlcXVlc3Qgc3RhcnRlZFwiLGUsdCxuLHIpO3RyeXtjb25zdCBpPWF3YWl0KChlLHQpPT5hc3luYyhuLHIsbyxpLGwpPT57dHJ5e3JldHVybiBhd2FpdCB0LmV4ZWN1dGVBcGlSZXF1ZXN0KGAke2V9JHtufWAscixvLGksbCl9Y2F0Y2goZSl7bGV0IHQ7Y29uc3R7ZGF0YTpuLG1lc3NhZ2U6cixzdGF0dXM6b309ZTt0aHJvdyB0PWUgaW5zdGFuY2VvZiBFcnJvcj9uZXcgYShyLG8pOlwiRmFpbGVkIHRvIHJlZnJlc2ggYWNjZXNzIHRva2VuXCI9PT1yP25ldyBzKHIpOm5ldyBhKHIsbyksdC5kYXRhPW4sdH19KSh0aGlzLl9hcGlPcmlnaW4sdGhpcy5fd29ya2VyKShlLHQsbixyLG8pO3JldHVybiB0aGlzLl9sb2dnZXIubG9nSW5mbyhcIkV4ZWN1dGVBcGlSZXF1ZXN0IGNvbXBsZXRlZFwiLGkpLGl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGEpe2NvbnN0e2RhdGE6dCxtZXNzYWdlOm4sbmFtZTpyLHN0YWNrOm99PWUsaT10aGlzLmdldEVycm9yTWVzc2FnZUZyb21TZXJ2ZXJSZXNwb25zZSh0KTtpJiYoZS5tZXNzYWdlPWksZS5zdGFjaz1udWxsPT1vP3ZvaWQgMDpvLnJlcGxhY2UoYCR7cn06ICR7bn1gLGAke3J9OiAke2l9YCkpfXRocm93IGkmJnRoaXMubG9nZ2VyLmxvZ0Vycm9yKGUpLGV9fSwhKGUmJnQmJm4mJnImJm8pKXRocm93IG5ldyBjKFwiUHJvdmlkZXIgaGFzIG5vdCBiZWVuIHByb3Blcmx5IGluaXRpYWxpemVkIChjYWxsIGluaXQgdG8gY3JlYXRlIG5ldyBpbnN0YW5jZXMpXCIpO3RoaXMuX2FwaU9yaWdpbj1lLHRoaXMuX2NsaWVudElkPXQsdGhpcy5fbWV0YWRhdGE9bix0aGlzLl93b3JrZXI9cix0aGlzLl9sb2dnZXI9byx0aGlzLmF1dGhvcml6ZT10aGlzLmF1dGhvcml6ZS5iaW5kKHRoaXMpLHRoaXMuY2xvc2U9dGhpcy5jbG9zZS5iaW5kKHRoaXMpLHRoaXMuZXhlY3V0ZUFwaVJlcXVlc3Q9dGhpcy5leGVjdXRlQXBpUmVxdWVzdC5iaW5kKHRoaXMpLHRoaXMuZXhwaXJlVG9rZW5zPXRoaXMuZXhwaXJlVG9rZW5zLmJpbmQodGhpcyksdGhpcy5nZXRFcnJvck1lc3NhZ2VGcm9tU2VydmVyUmVzcG9uc2U9dGhpcy5nZXRFcnJvck1lc3NhZ2VGcm9tU2VydmVyUmVzcG9uc2UuYmluZCh0aGlzKX1hc3luYyBhdXRob3JpemUoZSx0LG4pe2lmKHRoaXMuX2xvZ2dlci5sb2dJbmZvKFwiQXV0aG9yaXplIHN0YXJ0ZWRcIixlLHQsbiksIXRoaXMuX21ldGFkYXRhfHwhdGhpcy5fY2xpZW50SWR8fCF0aGlzLl93b3JrZXIpdGhyb3cgbmV3IGMoXCJQcm92aWRlciBoYXMgbm90IGJlZW4gcHJvcGVybHkgaW5pdGlhbGl6ZWQgKGNhbGwgaW5pdCB0byBjcmVhdGUgbmV3IGluc3RhbmNlcylcIik7dHJ5e2F3YWl0KHI9dGhpcy5fbWV0YWRhdGEsbz10aGlzLl9jbGllbnRJZCxhPXRoaXMuX3dvcmtlcixzPXRoaXMuX2xvZ2dlcixhc3luYyhlLHQsbik9Pntjb25zdHthdXRob3JpemF0aW9uX2VuZHBvaW50Oml9PXIsbD1maW4uQXBwbGljYXRpb24uZ2V0Q3VycmVudFN5bmMoKSxjPShhd2FpdCBsLmdldENoaWxkV2luZG93cygpKS5maW5kKChlPT5lLmlkZW50aXR5Lm5hbWU9PT1DKSk7YyYmYXdhaXQgYy5jbG9zZSghMCk7Y29uc3QgdT0obmV3IERhdGUpLmdldFRpbWUoKS50b1N0cmluZygpLGY9KCgpPT57Y29uc3QgZT1uZXcgVWludDMyQXJyYXkoNjQpO3JldHVybiB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhlKSxBcnJheS5mcm9tKGUsKGU9PmAwJHtlLnRvU3RyaW5nKDE2KX1gLnNsaWNlKC0yKSkpLmpvaW4oXCJcIil9KSgpLGQ9KGF3YWl0KGFzeW5jIGU9Pntjb25zdCB0PShuZXcgVGV4dEVuY29kZXIpLmVuY29kZShlKSxuPWF3YWl0IHdpbmRvdy5jcnlwdG8uc3VidGxlLmRpZ2VzdChcIlNIQS0yNTZcIix0KSxyPWF3YWl0KGU9Pm5ldyBQcm9taXNlKCgodCxuKT0+e3RyeXtjb25zdCByPW5ldyBCbG9iKFtlXSksbz1uZXcgRmlsZVJlYWRlcjtvLm9ubG9hZD1lPT57dmFyIHIsbztjb25zdCBpPW51bGw9PT0ocj1lLnRhcmdldCl8fHZvaWQgMD09PXI/dm9pZCAwOnIucmVzdWx0O2lmKGkpe2NvbnN0WyxlXT1BcnJheS5mcm9tKG51bGwhPT0obz1pLm1hdGNoKC9iYXNlNjQsKC4qKSQvaSkpJiZ2b2lkIDAhPT1vP286W10pO3QobnVsbCE9ZT9lOlwiXCIpfW4obmV3IEVycm9yKFwiVW5leHBlY3RlZCBlbXB0eSByZXN1bHRcIikpfSxvLnJlYWRBc0RhdGFVUkwocil9Y2F0Y2goZSl7bihlKX19KSkpKG4pO3JldHVybiByLnJlcGxhY2UoL1xcKy9nLFwiLVwiKS5yZXBsYWNlKC9cXC8vZyxcIl9cIil9KShmKSkucmVwbGFjZSgvPSskLyxcIlwiKTtsZXQgcD1cIlwiO3QmJihwPVwiJlwiLHArPU9iamVjdC5lbnRyaWVzKHQpLm1hcCgoZT0+YCR7ZW5jb2RlVVJJQ29tcG9uZW50KGVbMF0pfT0ke2VuY29kZVVSSUNvbXBvbmVudChlWzFdKX1gKSkuam9pbihcIiZcIikpO2NvbnN0IGg9YCR7aX0/Y2xpZW50X2lkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KG8pfSZyZWRpcmVjdF91cmk9JHtlbmNvZGVVUklDb21wb25lbnQoZSl9JnJlc3BvbnNlX3R5cGU9Y29kZSZzdGF0ZT0ke3V9JmNvZGVfY2hhbGxlbmdlPSR7ZH0mY29kZV9jaGFsbGVuZ2VfbWV0aG9kPVMyNTYke3B9YCx2PW51bGwhPW4/bjp7fSx7ZGVmYXVsdEhlaWdodDpnLGRlZmF1bHRXaWR0aDptfT12LHc9ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSh2LFtcImRlZmF1bHRIZWlnaHRcIixcImRlZmF1bHRXaWR0aFwiXSk7cy5sb2dJbmZvKFwiU3RhcnRpbmcgT0F1dGggZmxvd1wiLGgpO2NvbnN0IGI9YXdhaXQgZmluLldpbmRvdy5jcmVhdGUoT2JqZWN0LmFzc2lnbih7YWx3YXlzT25Ub3A6ITAsbWF4aW1pemFibGU6ITEsbWluaW1pemFibGU6ITEsYXV0b1Nob3c6ITEsZGVmYXVsdENlbnRlcmVkOiEwLGRlZmF1bHRIZWlnaHQ6bnVsbCE9Zz9nOjcwMCxkZWZhdWx0V2lkdGg6bnVsbCE9bT9tOjYwMCxpbmNsdWRlSW5TbmFwc2hvdHM6ITEsbmFtZTpDLHJlc2l6YWJsZTohMSxzYXZlV2luZG93U3RhdGU6ITEsc2hvd1Rhc2tiYXJJY29uOiExLHVybDpofSx3KSkseD1hd2FpdCBuZXcgUHJvbWlzZSh5KGIsdSxlLHMpKTtzLmxvZ0luZm8oXCJSZWNlaXZlZCBhdXRob3JpemF0aW9uIGNvZGVcIiksYXdhaXQgYS5leGNoYW5nZUNvZGVGb3JUb2tlbnMoeCxmLGUpLHMubG9nSW5mbyhcIlJlY2VpdmVkIHRva2Vuc1wiKX0pKGUsdCxuKSx0aGlzLl9sb2dnZXIubG9nSW5mbyhcIkF1dGhvcml6ZSBjb21wbGV0ZWRcIil9Y2F0Y2goZSl7bGV0IHQ7aWYoZSBpbnN0YW5jZW9mIGkpe2NvbnN0e2RhdGE6bn09ZSxyPXRoaXMuZ2V0RXJyb3JNZXNzYWdlRnJvbVNlcnZlclJlc3BvbnNlKG4pO3Q9bmV3IGwocixlKSx0LmRhdGE9bn1lbHNlIHQ9bmV3IGwodm9pZCAwLGUpO3Rocm93IHRoaXMubG9nZ2VyLmxvZ0Vycm9yKHQpLHR9dmFyIHIsbyxhLHN9YXN5bmMgY2xvc2UoKXt2YXIgZTt0aGlzLl9sb2dnZXIubG9nSW5mbyhcIkNsb3NlIHN0YXJ0ZWRcIik7dHJ5e2F3YWl0KG51bGw9PT0oZT10aGlzLl93b3JrZXIpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnRlcm1pbmF0ZSgpKSx0aGlzLl93b3JrZXI9dm9pZCAwLHRoaXMuX2FwaU9yaWdpbj12b2lkIDAsdGhpcy5fY2xpZW50SWQ9dm9pZCAwLHRoaXMuX21ldGFkYXRhPXZvaWQgMCx0aGlzLl9sb2dnZXIubG9nSW5mbyhcIkNsb3NlIGNvbXBsZXRlZFwiKX1jYXRjaChlKXtjb25zdCB0PW5ldyBpKHZvaWQgMCxlKTt0aHJvdyB0aGlzLl9sb2dnZXIubG9nRXJyb3IodCksdH19YXN5bmMgZXhwaXJlVG9rZW5zKGU9ITEpe3ZhciB0O3RoaXMuX2xvZ2dlci5sb2dJbmZvKFwiRXhwaXJlVG9rZW5zIHN0YXJ0ZWRcIik7dHJ5e2F3YWl0KG51bGw9PT0odD10aGlzLl93b3JrZXIpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmV4cGlyZVRva2VucyhlKSksdGhpcy5fbG9nZ2VyLmxvZ0luZm8oXCJFeHBpcmVUb2tlbnMgY29tcGxldGVkXCIpfWNhdGNoKGUpe2NvbnN0IHQ9bmV3IGkodm9pZCAwLGUpO3Rocm93IHRoaXMuX2xvZ2dlci5sb2dFcnJvcih0KSx0fX1nZXRFcnJvck1lc3NhZ2VGcm9tU2VydmVyUmVzcG9uc2UoZSl7ZSYmdGhpcy5fbG9nZ2VyLmxvZ1dhcm5pbmcoZSl9c3RhdGljIGFzeW5jIGluaXQoZSx0LG4sciwuLi5vKXtjb25zdCBhPW5ldyBnKHIpO2xldCBsO2EubG9nSW5mbyhcIkluaXQgc3RhcnRlZFwiLGUsdCxuKTt0cnl7bD1uZXcgVVJMKHQpfWNhdGNoKGUpe2NvbnN0IHQ9bmV3IGYoXCJVbmV4cGVjdGVkIGludmFsaWQgQVBJIG9yaWdpblwiKTt0aHJvdyBhLmxvZ0Vycm9yKHQpLHR9dHJ5e2NvbnN0IHQ9YXdhaXQoYXN5bmMgZT0+e2xldCB0O3RyeXt0PW5ldyBVUkwoZSl9Y2F0Y2goZSl7dGhyb3cgbmV3IGYoXCJVbmV4cGVjdGVkIGludmFsaWQgbWV0YWRhdGEgVVJMXCIpfWNvbnN0IG49YXdhaXQgZmV0Y2godCx7aGVhZGVyczp7QWNjZXB0OlwiYXBwbGljYXRpb24vanNvblwifX0pO2lmKCFuLm9rKXRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byByZXRyaWV2ZSBhdXRob3JpemF0aW9uIHNlcnZlciBtZXRhZGF0YVwiKTtjb25zdCByPWF3YWl0IG4uanNvbigpO2lmKCFyKXRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgZW1wdHkgYXV0aG9yaXphdGlvbiBzZXJ2ZXIgbWV0YWRhdGEgcmVzcG9uc2VcIik7aWYoIXIucmVzcG9uc2VfdHlwZXNfc3VwcG9ydGVkLmZpbmQoKGU9PlwiY29kZVwiPT09ZS50b0xvd2VyQ2FzZSgpKSkpdGhyb3cgbmV3IEVycm9yKFwiQXV0aG9yaXphdGlvbiBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYXV0aG9yaXphdGlvbiBjb2RlIHJlc3BvbnNlIHR5cGVcIik7cmV0dXJuIHJ9KShlKSxyPWF3YWl0KGFzeW5jKGUsdCxuKT0+e2NvbnN0IHI9bmV3IEJsb2IoW2AoJHt3fSkoKWBdLHt0eXBlOlwidGV4dC9qYXZhc2NyaXB0XCJ9KSxvPVVSTC5jcmVhdGVPYmplY3RVUkwociksaT1uZXcgV29ya2VyKG8pO3JldHVybiBpLm9ubWVzc2FnZT0oZT0+dD0+e2UubG9nSW5mbyhcIldvcmtlciByZXNwb25zZSByZWNlaXZlZFwiLHQuZGF0YSk7Y29uc3Qgbj10LmRhdGEse2NvbW1hbmQ6cixlcnJvcjpvLGlkOml9PW4sYT1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59KG4sW1wiY29tbWFuZFwiLFwiZXJyb3JcIixcImlkXCJdKSxsPSgoZSx0KT0+eC5maW5kKChuPT5uLmNvbW1hbmQ9PT10JiZuLmlkPT09ZSkpKShpLHIpO2w/KG8/KFwic3RhdHVzXCJpbiBhJiZ2b2lkIDAhPT1hLnN0YXR1cyYmKG8uc3RhdHVzPWEuc3RhdHVzKSxsLnJlamVjdChvKSk6bC5yZXNvbHZlKGEpLFMoaSxyKSk6ZS5sb2dFcnJvcihuZXcgRXJyb3IoXCJVbmFibGUgdG8gbG9jYXRlIGF3YWl0ZWQgcmVxdWVzdFwiKSl9KShuKSxhd2FpdCgoZSx0LG4scik9Pm5ldyBQcm9taXNlKCgobyxpKT0+e2NvbnN0IGE9e2NvbW1hbmQ6Yi5Jbml0LGRhdGE6e2NsaWVudElkOnQsbWV0YWRhdGE6ZX0saWQ6RGF0ZS5ub3coKS50b1N0cmluZygpfSx7Y29tbWFuZDpsLGlkOnN9PWE7Xyh7Y29tbWFuZDpsLGlkOnMscmVqZWN0OmkscmVzb2x2ZTpvfSksbi5wb3N0TWVzc2FnZShhKSxyLmxvZ0luZm8oXCJXb3JrZXIgcmVxdWVzdCBzZW50XCIsYSl9KSkpKGUsdCxpLG4pLHtleGNoYW5nZUNvZGVGb3JUb2tlbnM6TChpLG4pLGV4ZWN1dGVBcGlSZXF1ZXN0Ok8odCxpLG4pLGV4cGlyZVRva2VuczpFKGksbiksdGVybWluYXRlOk0oaSxuKX19KSh0LG4sYSk7cmV0dXJuIGEubG9nSW5mbyhcIkluaXQgY29tcGxldGVkXCIsdCksbmV3IGoobC5vcmlnaW4sbix0LHIsYSl9Y2F0Y2goZSl7bGV0IHQ7dGhyb3cgdD1lIGluc3RhbmNlb2YgaT9lOm5ldyBjKHZvaWQgMCxlKSxhLmxvZ0Vycm9yKHQpLHR9fX12YXIgaz1vLk1TLFI9by5jRixQPW8uQUssQT1vLk1fLEk9by5jWCxUPW8uTzQsSD1vLl9XLFY9by5VJCxCPW8uVTcsRD1uKDk1MSk7Y29uc3QgWj1cIjEuMC4xXCIsJD1cIk1pY3Jvc29mdDM2NVwiLEY9KCk9PntWKCQpfSxOPSgpPT57QigkLFopfTtcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIGZpbiYmT2JqZWN0LmFzc2lnbih3aW5kb3cse2Zpbjp7fX0pLE9iamVjdC5hc3NpZ24oZmluLHtJbnRlZ3JhdGlvbnM6e01pY3Jvc29mdDM2NTp7ZW5hYmxlTG9nZ2luZzpOLGRpc2FibGVMb2dnaW5nOkZ9fX0pKTtjb25zdCBVPWU9PmFzeW5jKHQsbixyLG8saSk9Pnt2YXIgYTtyZXR1cm4gdD0oYT10KS5zdGFydHNXaXRoKFwiL1wiKT9hOmAvJHthfWAsZS5leGVjdXRlQXBpUmVxdWVzdCh0LG4scixvLGksITApfSxXPWFzeW5jKGUsdCxuPVtdKT0+e2NvbnN0IHI9W1wiaWRcIixcInVzZXJQcmluY2lwYWxOYW1lXCIsXCJ1c2VyVHlwZVwiLC4uLm5dLmpvaW4oXCIsXCIpLG89YXdhaXQoYXN5bmMoZSx0PVtdKT0+e2lmKCEobnVsbD09dD92b2lkIDA6dC5sZW5ndGgpKXJldHVybltdO2NvbnN0IG49W107Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKz0yMCl7Y29uc3Qgbz17cmVxdWVzdHM6dC5zbGljZShyLHIrMjApLm1hcCgoZT0+KGUuaWQ9Y3J5cHRvLnJhbmRvbVVVSUQoKSxlKSkpfTtuLnB1c2goZS5leGVjdXRlQXBpUmVxdWVzdChcIi92MS4wLyRiYXRjaFwiLFwiUE9TVFwiLG8pKX1jb25zdCByPShhd2FpdCBQcm9taXNlLmFsbChuKSkuZmxhdE1hcCgoZT0+ZS5kYXRhLnJlc3BvbnNlcykpO3JldHVybiB0Lm1hcCgoZT0+e3ZhciB0O3JldHVybiBudWxsPT09KHQ9ci5maW5kKCh0PT50LmlkPT09ZS5pZCkpKXx8dm9pZCAwPT09dD92b2lkIDA6dC5ib2R5fSkpfSkoZSx0Lm1hcCgoZT0+KHttZXRob2Q6XCJHRVRcIix1cmw6YC91c2Vycz8kZmlsdGVyPW1haWwgZXEgJyR7ZW5jb2RlVVJJQ29tcG9uZW50KGUpfScmJHNlbGVjdD0ke3J9YH0pKSkpLGk9by5tYXAoKGU9Pnt2YXIgdDtyZXR1cm4gbnVsbD09PSh0PWUudmFsdWUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0WzBdfSkpO3JldHVybiBlLmxvZ2dlci5sb2dJbmZvKFwiUmVzb2x2ZWQgdXNlcnMgZnJvbSBlbWFpbCBhZGRyZXNzZXNcIixpLHQpLGl9O3ZhciB6PW4oMzAwKTtjb25zdCBHPWU9PmUubWFwKChlPT5lP3tpZDplLnVzZXJQcmluY2lwYWxOYW1lLGVtYWlsQWRkcmVzczplLm1haWwsbmFtZTplLmRpc3BsYXlOYW1lfTp2b2lkIDApKSxxPWFzeW5jKGUsdCk9Pnt0cnl7YXdhaXQgZmluLlN5c3RlbS5yZWdpc3RlclVzYWdlKHt0eXBlOlwiaW50ZWdyYXRpb24tZmVhdHVyZVwiLGRhdGE6e2FwaVZlcnNpb246Wixjb21wb25lbnROYW1lOmV9fSl9Y2F0Y2gobil7dC5sb2dXYXJuaW5nKGBVbmFibGUgdG8gcmVnaXN0ZXIgdXNhZ2UgZm9yIGZlYXR1cmUgJHtlfTogJHtudWxsPT1uP3ZvaWQgMDpuLm1lc3NhZ2V9YCl9fSxZPWU9PntsZXQgdD1lO3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UuZmlsdGVyKEJvb2xlYW4pLm1hcChZKTooXCJvYmplY3RcIj09dHlwZW9mIGUmJih0PU9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKChbLGVdKT0+dm9pZCAwIT09KG51bGwhPWU/ZTp2b2lkIDApKSkubWFwKCgoW2UsdF0pPT5bZSxZKHQpXSkpKSksdCl9LEs9ZT0+LyNFWFQjQC8udGVzdChlLnVzZXJQcmluY2lwYWxOYW1lKTt2YXIgWDshZnVuY3Rpb24oZSl7ZS5NUzM2NT1cIk1TLTM2NVwiLGUuVGVhbXM9XCJNUy1URUFNU1wifShYfHwoWD17fSkpO2NsYXNzIEogZXh0ZW5kcyBUe2dldCBjdXJyZW50VXNlcigpe3JldHVybiB0aGlzLl9jdXJyZW50VXNlcn1nZXQgcmVkaXJlY3RVcmkoKXtyZXR1cm4gdGhpcy5fcmVkaXJlY3RVcml9Z2V0IHBlcm1pc3Npb25zKCl7cmV0dXJuIHRoaXMuX3Blcm1pc3Npb25zfWdldCB0ZW5hbnRJZCgpe3JldHVybiB0aGlzLl90ZW5hbnRJZH1jb25zdHJ1Y3RvcihlLHQsbixyLG8saSxhLGwpe3N1cGVyKGUsdCxpLGEsbCksdGhpcy5fcGVybWlzc2lvbnM9byx0aGlzLl9yZWRpcmVjdFVyaT1yLHRoaXMuX3RlbmFudElkPW4scShYLk1TMzY1LGwpfWFzeW5jIGF1dGhvcml6ZShlLHQsbil7YXdhaXQgc3VwZXIuYXV0aG9yaXplKGUsdCxuKTtjb25zdCByPWF3YWl0KGFzeW5jIGU9Pntjb25zdHtkYXRhOnR9PWF3YWl0IGUuZXhlY3V0ZUFwaVJlcXVlc3QoXCIvdjEuMC9tZVwiKTtyZXR1cm4gdH0pKHRoaXMpO3RoaXMuX2N1cnJlbnRVc2VyPXJ9Z2V0RXJyb3JNZXNzYWdlRnJvbVNlcnZlclJlc3BvbnNlKGUpe3ZhciB0LG4scjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSl0cnl7cmV0dXJuIG51bGw9PT0obj1udWxsPT09KHQ9bmV3IFVSTChlKS5zZWFyY2hQYXJhbXMuZ2V0KFwiZXJyb3JfZGVzY3JpcHRpb25cIikpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LnNwbGl0KC9cXHJcXG4vKSl8fHZvaWQgMD09PW4/dm9pZCAwOm5bMF19Y2F0Y2goZSl7cmV0dXJufXJldHVybiBudWxsPT09KHI9bnVsbD09ZT92b2lkIDA6ZS5lcnJvcil8fHZvaWQgMD09PXI/dm9pZCAwOnIubWVzc2FnZX1zdGF0aWMgYXN5bmMgaW5pdChlLHQsbixyLG8saSxhKXtjb25zdCBsPWF3YWl0IHN1cGVyLmluaXQoZSx0LG4scik7cmV0dXJuIG5ldyBKKHQsbixvLGksYSxudWxsPT1sP3ZvaWQgMDpsLm1ldGFkYXRhLG51bGw9PWw/dm9pZCAwOmwud29ya2VyLG51bGw9PWw/dm9pZCAwOmwubG9nZ2VyKX19Y29uc3QgUT1bXCJVc2VyLlJlYWRCYXNpYy5BbGxcIixcIlRlYW0uUmVhZEJhc2ljLkFsbFwiLFwiQ2hhbm5lbC5SZWFkQmFzaWMuQWxsXCIsXCJDaGFubmVsTWVzc2FnZS5TZW5kXCIsXCJDaGF0LkNyZWF0ZVwiLFwiQ2hhdE1lc3NhZ2UuU2VuZFwiLFwib2ZmbGluZV9hY2Nlc3NcIl07bGV0IGVlO2NvbnN0IHRlPWFzeW5jKGUsdCxuLHI9W10sbyxpKT0+e2F3YWl0IG5lKGUsdCxuLHIpO2NvbnN0IGE9T2JqZWN0LmFzc2lnbih7c2NvcGU6Wy4uLlEsLi4ucl0uam9pbihcIiBcIil9LG8pLGw9T2JqZWN0LmFzc2lnbih7ZGVmYXVsdEhlaWdodDo2MDAsZGVmYXVsdFdpZHRoOjU1MH0saSk7cmV0dXJuIGF3YWl0IGVlLmF1dGhvcml6ZShuLGEsbCkse2NsaWVudElkOmUsY3VycmVudFVzZXI6ZWUuY3VycmVudFVzZXIsZGlzY29ubmVjdDplZS5jbG9zZSxleGVjdXRlQXBpUmVxdWVzdDpVKGVlKSxwcm92aWRlcjplZSx0ZW5hbnRJZDp0fX0sbmU9YXN5bmMoZSx0LG4scik9PntpZighZSl0aHJvdyBuZXcgSChcIkludmFsaWQgY2xpZW50IElEXCIpO2lmKCF0KXRocm93IG5ldyBIKFwiSW52YWxpZCB0ZW5hbnQgSURcIik7aWYoIW4pdGhyb3cgbmV3IEgoXCJJbnZhbGlkIHJlZGlyZWN0IFVSSVwiKTtjb25zdCBvPWBodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vJHt0fS92Mi4wLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uYDsoIWVlfHxlZS5jbGllbnRJZCE9PWV8fGVlLnRlbmFudElkIT09dHx8ZWUucmVkaXJlY3RVcmkhPT1ufHwoMCxELnhvcikoZWUucGVybWlzc2lvbnMscikubGVuZ3RoPjApJiYoZWU9YXdhaXQgSi5pbml0KG8sXCJodHRwczovL2dyYXBoLm1pY3Jvc29mdC5jb21cIixlLCQsdCxuLHIpKX07Y2xhc3MgcmUgZXh0ZW5kcyBre2NvbnN0cnVjdG9yKGUsdCl7dmFyIG47c3VwZXIoZT1udWxsIT09KG49bnVsbCE9ZT9lOm51bGw9PXQ/dm9pZCAwOnQubWVzc2FnZSkmJnZvaWQgMCE9PW4/bjpcIkFuIGludGVyb3AgZXJyb3Igb2NjdXJyZWRcIix0KX19dmFyIG9lLGllLGFlLGxlLHNlLGNlOyFmdW5jdGlvbihlKXtlLkFwcE5vdEZvdW5kPVwiQXBwTm90Rm91bmRcIixlLkVycm9yT25MYXVuY2g9XCJFcnJvck9uTGF1bmNoXCIsZS5BcHBUaW1lb3V0PVwiQXBwVGltZW91dFwiLGUuUmVzb2x2ZXJVbmF2YWlsYWJsZT1cIlJlc29sdmVyVW5hdmFpbGFibGVcIn0ob2V8fChvZT17fSkpLGZ1bmN0aW9uKGUpe2UuTm9BcHBzRm91bmQ9XCJOb0FwcHNGb3VuZFwiLGUuUmVzb2x2ZXJVbmF2YWlsYWJsZT1cIlJlc29sdmVyVW5hdmFpbGFibGVcIixlLlJlc29sdmVyVGltZW91dD1cIlJlc29sdmVyVGltZW91dFwifShpZXx8KGllPXt9KSksZnVuY3Rpb24oZSl7ZS5Ob0NoYW5uZWxGb3VuZD1cIk5vQ2hhbm5lbEZvdW5kXCIsZS5BY2Nlc3NEZW5pZWQ9XCJBY2Nlc3NEZW5pZWRcIixlLkNyZWF0aW9uRmFpbGVkPVwiQ3JlYXRpb25GYWlsZWRcIn0oYWV8fChhZT17fSkpLGxlPWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUpe3ZhciB0LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGk9by5pdGVyYXRvcnx8XCJAQGl0ZXJhdG9yXCIsYT1vLmFzeW5jSXRlcmF0b3J8fFwiQEBhc3luY0l0ZXJhdG9yXCIsbD1vLnRvU3RyaW5nVGFnfHxcIkBAdG9TdHJpbmdUYWdcIjtmdW5jdGlvbiBzKGUsdCxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLGVbdF19dHJ5e3Moe30sXCJcIil9Y2F0Y2goZSl7cz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGVbdF09bn19ZnVuY3Rpb24gYyhlLHQsbixyKXt2YXIgbz10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIGc/dDpnLGk9T2JqZWN0LmNyZWF0ZShvLnByb3RvdHlwZSksYT1uZXcgTShyfHxbXSk7cmV0dXJuIGkuX2ludm9rZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZjtyZXR1cm4gZnVuY3Rpb24obyxpKXtpZihyPT09cCl0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO2lmKHI9PT1oKXtpZihcInRocm93XCI9PT1vKXRocm93IGk7cmV0dXJuIGsoKX1mb3Iobi5tZXRob2Q9byxuLmFyZz1pOzspe3ZhciBhPW4uZGVsZWdhdGU7aWYoYSl7dmFyIGw9TyhhLG4pO2lmKGwpe2lmKGw9PT12KWNvbnRpbnVlO3JldHVybiBsfX1pZihcIm5leHRcIj09PW4ubWV0aG9kKW4uc2VudD1uLl9zZW50PW4uYXJnO2Vsc2UgaWYoXCJ0aHJvd1wiPT09bi5tZXRob2Qpe2lmKHI9PT1mKXRocm93IHI9aCxuLmFyZztuLmRpc3BhdGNoRXhjZXB0aW9uKG4uYXJnKX1lbHNlXCJyZXR1cm5cIj09PW4ubWV0aG9kJiZuLmFicnVwdChcInJldHVyblwiLG4uYXJnKTtyPXA7dmFyIHM9dShlLHQsbik7aWYoXCJub3JtYWxcIj09PXMudHlwZSl7aWYocj1uLmRvbmU/aDpkLHMuYXJnPT09diljb250aW51ZTtyZXR1cm57dmFsdWU6cy5hcmcsZG9uZTpuLmRvbmV9fVwidGhyb3dcIj09PXMudHlwZSYmKHI9aCxuLm1ldGhvZD1cInRocm93XCIsbi5hcmc9cy5hcmcpfX19KGUsbixhKSxpfWZ1bmN0aW9uIHUoZSx0LG4pe3RyeXtyZXR1cm57dHlwZTpcIm5vcm1hbFwiLGFyZzplLmNhbGwodCxuKX19Y2F0Y2goZSl7cmV0dXJue3R5cGU6XCJ0aHJvd1wiLGFyZzplfX19ZS53cmFwPWM7dmFyIGY9XCJzdXNwZW5kZWRTdGFydFwiLGQ9XCJzdXNwZW5kZWRZaWVsZFwiLHA9XCJleGVjdXRpbmdcIixoPVwiY29tcGxldGVkXCIsdj17fTtmdW5jdGlvbiBnKCl7fWZ1bmN0aW9uIEMoKXt9ZnVuY3Rpb24gbSgpe312YXIgeT17fTt5W2ldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3ZhciB3PU9iamVjdC5nZXRQcm90b3R5cGVPZixiPXcmJncodyhqKFtdKSkpO2ImJmIhPT1uJiZyLmNhbGwoYixpKSYmKHk9Yik7dmFyIHg9bS5wcm90b3R5cGU9Zy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5KTtmdW5jdGlvbiBfKGUpe1tcIm5leHRcIixcInRocm93XCIsXCJyZXR1cm5cIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7cyhlLHQsKGZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pbnZva2UodCxlKX0pKX0pKX1mdW5jdGlvbiBMKGUsdCl7ZnVuY3Rpb24gbihvLGksYSxsKXt2YXIgcz11KGVbb10sZSxpKTtpZihcInRocm93XCIhPT1zLnR5cGUpe3ZhciBjPXMuYXJnLGY9Yy52YWx1ZTtyZXR1cm4gZiYmXCJvYmplY3RcIj09dHlwZW9mIGYmJnIuY2FsbChmLFwiX19hd2FpdFwiKT90LnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbihlKXtuKFwibmV4dFwiLGUsYSxsKX0pLChmdW5jdGlvbihlKXtuKFwidGhyb3dcIixlLGEsbCl9KSk6dC5yZXNvbHZlKGYpLnRoZW4oKGZ1bmN0aW9uKGUpe2MudmFsdWU9ZSxhKGMpfSksKGZ1bmN0aW9uKGUpe3JldHVybiBuKFwidGhyb3dcIixlLGEsbCl9KSl9bChzLmFyZyl9dmFyIG87dGhpcy5faW52b2tlPWZ1bmN0aW9uKGUscil7ZnVuY3Rpb24gaSgpe3JldHVybiBuZXcgdCgoZnVuY3Rpb24odCxvKXtuKGUscix0LG8pfSkpfXJldHVybiBvPW8/by50aGVuKGksaSk6aSgpfX1mdW5jdGlvbiBPKGUsbil7dmFyIHI9ZS5pdGVyYXRvcltuLm1ldGhvZF07aWYocj09PXQpe2lmKG4uZGVsZWdhdGU9bnVsbCxcInRocm93XCI9PT1uLm1ldGhvZCl7aWYoZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD1cInJldHVyblwiLG4uYXJnPXQsTyhlLG4pLFwidGhyb3dcIj09PW4ubWV0aG9kKSlyZXR1cm4gdjtuLm1ldGhvZD1cInRocm93XCIsbi5hcmc9bmV3IFR5cGVFcnJvcihcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2RcIil9cmV0dXJuIHZ9dmFyIG89dShyLGUuaXRlcmF0b3Isbi5hcmcpO2lmKFwidGhyb3dcIj09PW8udHlwZSlyZXR1cm4gbi5tZXRob2Q9XCJ0aHJvd1wiLG4uYXJnPW8uYXJnLG4uZGVsZWdhdGU9bnVsbCx2O3ZhciBpPW8uYXJnO3JldHVybiBpP2kuZG9uZT8obltlLnJlc3VsdE5hbWVdPWkudmFsdWUsbi5uZXh0PWUubmV4dExvYyxcInJldHVyblwiIT09bi5tZXRob2QmJihuLm1ldGhvZD1cIm5leHRcIixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwsdik6aToobi5tZXRob2Q9XCJ0aHJvd1wiLG4uYXJnPW5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKSxuLmRlbGVnYXRlPW51bGwsdil9ZnVuY3Rpb24gRShlKXt2YXIgdD17dHJ5TG9jOmVbMF19OzEgaW4gZSYmKHQuY2F0Y2hMb2M9ZVsxXSksMiBpbiBlJiYodC5maW5hbGx5TG9jPWVbMl0sdC5hZnRlckxvYz1lWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh0KX1mdW5jdGlvbiBTKGUpe3ZhciB0PWUuY29tcGxldGlvbnx8e307dC50eXBlPVwibm9ybWFsXCIsZGVsZXRlIHQuYXJnLGUuY29tcGxldGlvbj10fWZ1bmN0aW9uIE0oZSl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOlwicm9vdFwifV0sZS5mb3JFYWNoKEUsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gaihlKXtpZihlKXt2YXIgbj1lW2ldO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsYT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGEubmV4dD1hfX1yZXR1cm57bmV4dDprfX1mdW5jdGlvbiBrKCl7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19cmV0dXJuIEMucHJvdG90eXBlPXguY29uc3RydWN0b3I9bSxtLmNvbnN0cnVjdG9yPUMsQy5kaXNwbGF5TmFtZT1zKG0sbCxcIkdlbmVyYXRvckZ1bmN0aW9uXCIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihlKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yO3JldHVybiEhdCYmKHQ9PT1DfHxcIkdlbmVyYXRvckZ1bmN0aW9uXCI9PT0odC5kaXNwbGF5TmFtZXx8dC5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLG0pOihlLl9fcHJvdG9fXz1tLHMoZSxsLFwiR2VuZXJhdG9yRnVuY3Rpb25cIikpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeCksZX0sZS5hd3JhcD1mdW5jdGlvbihlKXtyZXR1cm57X19hd2FpdDplfX0sXyhMLnByb3RvdHlwZSksTC5wcm90b3R5cGVbYV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZS5Bc3luY0l0ZXJhdG9yPUwsZS5hc3luYz1mdW5jdGlvbih0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyBMKGModCxuLHIsbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbmU/ZS52YWx1ZTphLm5leHQoKX0pKX0sXyh4KSxzKHgsbCxcIkdlbmVyYXRvclwiKSx4W2ldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHgudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIltvYmplY3QgR2VuZXJhdG9yXVwifSxlLmtleXM9ZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciBuIGluIGUpdC5wdXNoKG4pO3JldHVybiB0LnJldmVyc2UoKSxmdW5jdGlvbiBuKCl7Zm9yKDt0Lmxlbmd0aDspe3ZhciByPXQucG9wKCk7aWYociBpbiBlKXJldHVybiBuLnZhbHVlPXIsbi5kb25lPSExLG59cmV0dXJuIG4uZG9uZT0hMCxufX0sZS52YWx1ZXM9aixNLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TSxyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9XCJuZXh0XCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChTKSwhZSlmb3IodmFyIG4gaW4gdGhpcylcInRcIj09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIGU9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoXCJ0aHJvd1wiPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiBsLnR5cGU9XCJ0aHJvd1wiLGwuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPVwibmV4dFwiLG4uYXJnPXQpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sbD1hLmNvbXBsZXRpb247aWYoXCJyb290XCI9PT1hLnRyeUxvYylyZXR1cm4gbyhcImVuZFwiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSxcImNhdGNoTG9jXCIpLGM9ci5jYWxsKGEsXCJmaW5hbGx5TG9jXCIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sXCJmaW5hbGx5TG9jXCIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoXCJicmVha1wiPT09ZXx8XCJjb250aW51ZVwiPT09ZSkmJmkudHJ5TG9jPD10JiZ0PD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9ZSxhLmFyZz10LGk/KHRoaXMubWV0aG9kPVwibmV4dFwiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2Msdik6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24oZSx0KXtpZihcInRocm93XCI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuXCJicmVha1wiPT09ZS50eXBlfHxcImNvbnRpbnVlXCI9PT1lLnR5cGU/dGhpcy5uZXh0PWUuYXJnOlwicmV0dXJuXCI9PT1lLnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz1lLmFyZyx0aGlzLm1ldGhvZD1cInJldHVyblwiLHRoaXMubmV4dD1cImVuZFwiKTpcIm5vcm1hbFwiPT09ZS50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLHZ9LGZpbmlzaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgbj10aGlzLnRyeUVudHJpZXNbdF07aWYobi5maW5hbGx5TG9jPT09ZSlyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksUyhuKSx2fX0sY2F0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIG49dGhpcy50cnlFbnRyaWVzW3RdO2lmKG4udHJ5TG9jPT09ZSl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKFwidGhyb3dcIj09PXIudHlwZSl7dmFyIG89ci5hcmc7UyhuKX1yZXR1cm4gb319dGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6aihlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSxcIm5leHRcIj09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCksdn19LGV9KGUuZXhwb3J0cyk7dHJ5e3JlZ2VuZXJhdG9yUnVudGltZT10fWNhdGNoKGUpe0Z1bmN0aW9uKFwiclwiLFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKSh0KX19LGxlKHtleHBvcnRzOnt9fSksZnVuY3Rpb24oZSl7ZS5Db250YWN0PVwiZmRjMy5jb250YWN0XCIsZS5Db250YWN0TGlzdD1cImZkYzMuY29udGFjdExpc3RcIixlLkNvdW50cnk9XCJmZGMzLmNvdW50cnlcIixlLkluc3RydW1lbnQ9XCJmZGMzLmluc3RydW1lbnRcIixlLk9yZ2FuaXphdGlvbj1cImZkYzMub3JnYW5pemF0aW9uXCIsZS5Qb3J0Zm9saW89XCJmZGMzLnBvcnRmb2xpb1wiLGUuUG9zaXRpb249XCJmZGMzLnBvc2l0aW9uXCJ9KHNlfHwoc2U9e30pKSxmdW5jdGlvbihlKXtlLlN0YXJ0Q2FsbD1cIlN0YXJ0Q2FsbFwiLGUuU3RhcnRDaGF0PVwiU3RhcnRDaGF0XCIsZS5WaWV3Q2hhcnQ9XCJWaWV3Q2hhcnRcIixlLlZpZXdDb250YWN0PVwiVmlld0NvbnRhY3RcIixlLlZpZXdRdW90ZT1cIlZpZXdRdW90ZVwiLGUuVmlld05ld3M9XCJWaWV3TmV3c1wiLGUuVmlld0luc3RydW1lbnQ9XCJWaWV3SW5zdHJ1bWVudFwiLGUuVmlld0FuYWx5c2lzPVwiVmlld0FuYWx5c2lzXCJ9KGNlfHwoY2U9e30pKTtjb25zdCB1ZT1cIm9mbXMzNjVhY3Rpb25cIixmZT1lPT5lP1wibXN0ZWFtczpcIjpcImh0dHBzOi8vdGVhbXMubWljcm9zb2Z0LmNvbVwiLGRlPWFzeW5jIGU9Pntjb25zdCB0PW51bGw9PWU/dm9pZCAwOmVbdWVdO2lmKHQpdHJ5e2NvbnN0IGU9KGU9Pntjb25zdCB0PSgwLHouZGVjb21wcmVzcykoZSx7aW5wdXRFbmNvZGluZzpcIkJhc2U2NFwiLG91dHB1dEVuY29kaW5nOlwiU3RyaW5nXCJ9KTtyZXR1cm4gSlNPTi5wYXJzZSh0KX0pKHQpLHtjb250ZXh0Om4saW50ZW50OnJ9PWUsbz17Y29udGV4dDpuLG5hbWU6cn07cmV0dXJuIGF3YWl0IGZpbi5tZS5pbnRlcm9wLmZpcmVJbnRlbnQobyksb31jYXRjaChlKXtjb25zdCB0PWUubWVzc2FnZTt0aHJvdyBuZXcgayhcIkZhaWxlZCB0byBkZWNvbXByZXNzIHNoYXJlIHBheWxvYWRcIisodD9gICgke3R9KWA6XCJcIiksZSl9fSxwZT1hc3luYyhlLHQsbik9Pntjb25zdCByPWF3YWl0KGFzeW5jKGUsdCxuPVtdKT0+e3RyeXtjb25zdCByPVtcImlkXCIsLi4ubl0uam9pbihcIixcIikse2RhdGE6b309YXdhaXQgZS5leGVjdXRlQXBpUmVxdWVzdChgL3YxLjAvdGVhbXMvJHtlbmNvZGVVUklDb21wb25lbnQodCl9PyRzZWxlY3Q9JHtyfWApO3JldHVybiBvfWNhdGNoKGUpe2lmKDQwNCE9PWUuc3RhdHVzKXRocm93IGV9fSkoZSx0LFtcImRpc3BsYXlOYW1lXCJdKTtpZighcilyZXR1cm47bGV0IG87aWYoZS5sb2dnZXIubG9nSW5mbyhcIlJlc29sdmVkIHRlYW1cIixyKSxuKXtpZihvPWF3YWl0KGFzeW5jKGUsdCxuLHI9W10pPT57dHJ5e2NvbnN0IG89W1wiaWRcIiwuLi5yXS5qb2luKFwiLFwiKSx7ZGF0YTppfT1hd2FpdCBlLmV4ZWN1dGVBcGlSZXF1ZXN0KGAvdjEuMC90ZWFtcy8ke2VuY29kZVVSSUNvbXBvbmVudChuKX0vY2hhbm5lbHMvJHtlbmNvZGVVUklDb21wb25lbnQodCl9PyRzZWxlY3Q9JHtvfWApO3JldHVybiBpfWNhdGNoKGUpe2lmKDQwNCE9PWUuc3RhdHVzKXRocm93IGV9fSkoZSxuLHQsW1wiZGlzcGxheU5hbWVcIl0pLCFvKXJldHVybiB2b2lkIGUubG9nZ2VyLmxvZ1dhcm5pbmcoYENvdWxkIG5vdCByZXNvbHZlIGNoYW5uZWwgZnJvbSBpZCAke259YCl9ZWxzZXtlLmxvZ2dlci5sb2dJbmZvKFwiTm8gY2hhbm5lbCBpZCBzdXBwbGllZCwgdXNpbmcgcHJpbWFyeSBjaGFubmVsXCIpO2NvbnN0e2RhdGE6bn09YXdhaXQgZS5leGVjdXRlQXBpUmVxdWVzdChgL3YxLjAvdGVhbXMvJHtlbmNvZGVVUklDb21wb25lbnQodCl9L3ByaW1hcnlDaGFubmVsPyRzZWxlY3Q9ZGlzcGxheU5hbWUsaWRgKTtvPW59Y29uc3QgaT17Y2hhbm5lbElkOm8uaWQsY2hhbm5lbE5hbWU6by5kaXNwbGF5TmFtZSx0ZWFtSWQ6ci5pZCx0ZWFtTmFtZTpyLmRpc3BsYXlOYW1lfTtyZXR1cm4gZS5sb2dnZXIubG9nSW5mbyhcIlJlc29sdmVkIHRlYW0gY2hhbm5lbFwiLHQsbixpKSxpfTtjbGFzcyBoZXtjb25zdHJ1Y3RvcihlLHQ9ITApe3RoaXMubG9nZ2VyPWUucHJvdmlkZXIubG9nZ2VyLHRoaXMucHJvdmlkZXI9ZS5wcm92aWRlcix0aGlzLnVzZU1zVGVhbXNQcm90b2NvbD10LHRoaXMucmVnaXN0ZXJJbnRlbnRIYW5kbGVycz10aGlzLnJlZ2lzdGVySW50ZW50SGFuZGxlcnMuYmluZCh0aGlzKSx0aGlzLnNoYXJlPXRoaXMuc2hhcmUuYmluZCh0aGlzKSx0aGlzLnN0YXJ0Q2FsbD10aGlzLnN0YXJ0Q2FsbC5iaW5kKHRoaXMpLHRoaXMuc3RhcnRDaGF0PXRoaXMuc3RhcnRDaGF0LmJpbmQodGhpcyksdGhpcy5lbmFibGVTaGFyZVBheWxvYWRIYW5kbGVyKCkscShYLlRlYW1zLHRoaXMubG9nZ2VyKX1hc3luYyBlbmFibGVTaGFyZVBheWxvYWRIYW5kbGVyKCl7Y29uc3R7aW5pdGlhbE9wdGlvbnM6ZX09YXdhaXQgZmluLkFwcGxpY2F0aW9uLmdldEN1cnJlbnRTeW5jKCkuZ2V0SW5mbygpLHt1c2VyQXBwQ29uZmlnQXJnczp0fT1lLG49YXdhaXQgZGUodCk7biYmdGhpcy5sb2dnZXIubG9nSW5mbyhcIkZpcmluZyBpbnRlbnRcIixuKSxmaW4uQXBwbGljYXRpb24uZ2V0Q3VycmVudFN5bmMoKS5hZGRMaXN0ZW5lcihcInJ1bi1yZXF1ZXN0ZWRcIiwoYXN5bmMgZT0+e3RyeXtjb25zdCB0PWF3YWl0IGRlKGUudXNlckFwcENvbmZpZ0FyZ3MpO3QmJnRoaXMubG9nZ2VyLmxvZ0luZm8oXCJGaXJpbmcgaW50ZW50XCIsdCl9Y2F0Y2goZSl7dGhpcy5sb2dnZXIubG9nRXJyb3IoZSl9fSkpfWFzeW5jIG9wZW5VcmwoZSl7dGhpcy5sb2dnZXIubG9nSW5mbyhcIm9wZW5Vcmwgc3RhcnRlZFwiLGUpO3RyeXtjb25zdCB0PXRoaXMudXNlTXNUZWFtc1Byb3RvY29sP2UucmVwbGFjZSgvXmh0dHBzOlxcL1xcL3RlYW1zLm1pY3Jvc29mdC5jb21cXC8vaSxcIm1zdGVhbXM6XCIpOmU7dGhpcy5sb2dnZXIubG9nSW5mbyhcIk9wZW5pbmcgdXJsXCIsdCksYXdhaXQgZmluLlN5c3RlbS5vcGVuVXJsV2l0aEJyb3dzZXIodCksdGhpcy5sb2dnZXIubG9nSW5mbyhcIm9wZW5VcmwgY29tcGxldGVkXCIpfWNhdGNoKGUpe3Rocm93IHRoaXMubG9nZ2VyLmxvZ0Vycm9yKGUpLGV9fWFzeW5jIHJlZ2lzdGVySW50ZW50SGFuZGxlcnMoKXtpZih0aGlzLmxvZ2dlci5sb2dJbmZvKFwicmVnaXN0ZXJJbnRlbnRIYW5kbGVycyBzdGFydGVkXCIpLHRoaXMudW5zdWJzY3JpYmVJbnRlbnRIYW5kbGVycylyZXR1cm57dW5zdWJzY3JpYmU6dGhpcy51bnN1YnNjcmliZUludGVudEhhbmRsZXJzfTt0cnl7YXdhaXQgZmluLm1lLmludGVyb3AuZ2V0Q29udGV4dEdyb3VwcygpO2NvbnN0IGU9YXdhaXQgZmluLm1lLmludGVyb3AucmVnaXN0ZXJJbnRlbnRIYW5kbGVyKChhc3luYyBlPT57dHJ5e2F3YWl0KChlLHQpPT5hc3luYyBuPT57dmFyIHIsbyxpLGE7aWYoZS5sb2dnZXIubG9nSW5mbyhcImhhbmRsZVN0YXJ0Q2FsbEludGVudCBzdGFydGVkXCIsbiksKG51bGw9PT0ocj1uLm5hbWUpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnRvTG93ZXJDYXNlKCkpIT09Y2UuU3RhcnRDYWxsLnRvTG93ZXJDYXNlKCkpdGhyb3cgbmV3IGsoYFVuZXhwZWN0ZWQgaW50ZW50IHR5cGU6ICR7bi5uYW1lfWApO2NvbnN0e2NvbnRleHQ6bH09bjtpZigobnVsbD09PShvPWwudHlwZSl8fHZvaWQgMD09PW8/dm9pZCAwOm8udG9Mb3dlckNhc2UoKSkhPT1zZS5Db250YWN0LnRvTG93ZXJDYXNlKCkmJihudWxsPT09KGk9bC50eXBlKXx8dm9pZCAwPT09aT92b2lkIDA6aS50b0xvd2VyQ2FzZSgpKSE9PXNlLkNvbnRhY3RMaXN0LnRvTG93ZXJDYXNlKCkpdGhyb3cgbmV3IGsoYFVuZXhwZWN0ZWQgY29udGV4dCB0eXBlOiAke2wudHlwZX1gKTtjb25zdCBzPShudWxsPT09KGE9bC50eXBlKXx8dm9pZCAwPT09YT92b2lkIDA6YS50b0xvd2VyQ2FzZSgpKT09PXNlLkNvbnRhY3RMaXN0LnRvTG93ZXJDYXNlKCk/bC5jb250YWN0cy5tYXAoKGU9PmUuaWQuZW1haWwpKS5maWx0ZXIoQm9vbGVhbik6W2wuaWQuZW1haWxdLGM9YXdhaXQgdChzKTtlLmxvZ2dlci5sb2dJbmZvKFwiaGFuZGxlU3RhcnRDYWxsSW50ZW50IGNvbXBsZXRlZFwiLGMpfSkodGhpcy5wcm92aWRlcix0aGlzLnN0YXJ0Q2FsbCkoZSl9Y2F0Y2goZSl7dGhyb3cgdGhpcy5sb2dnZXIubG9nRXJyb3IoZSksZX19KSxcIlN0YXJ0Q2FsbFwiKSx0PWF3YWl0IGZpbi5tZS5pbnRlcm9wLnJlZ2lzdGVySW50ZW50SGFuZGxlcigoYXN5bmMgZT0+e3RyeXthd2FpdCgoZSx0KT0+YXN5bmMgbj0+e3ZhciByLG8saSxhO2lmKGUubG9nZ2VyLmxvZ0luZm8oXCJoYW5kbGVTdGFydENoYXRJbnRlbnQgc3RhcnRlZFwiLG4pLChudWxsPT09KHI9bi5uYW1lKXx8dm9pZCAwPT09cj92b2lkIDA6ci50b0xvd2VyQ2FzZSgpKSE9PWNlLlN0YXJ0Q2hhdC50b0xvd2VyQ2FzZSgpKXRocm93IG5ldyBrKGBVbmV4cGVjdGVkIGludGVudCB0eXBlOiAke24ubmFtZX1gKTtjb25zdHtjb250ZXh0Omx9PW47aWYoKG51bGw9PT0obz1sLnR5cGUpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLnRvTG93ZXJDYXNlKCkpIT09c2UuQ29udGFjdC50b0xvd2VyQ2FzZSgpJiYobnVsbD09PShpPWwudHlwZSl8fHZvaWQgMD09PWk/dm9pZCAwOmkudG9Mb3dlckNhc2UoKSkhPT1zZS5Db250YWN0TGlzdC50b0xvd2VyQ2FzZSgpKXRocm93IG5ldyBrKGBVbmV4cGVjdGVkIGNvbnRleHQgdHlwZTogJHtsLnR5cGV9YCk7Y29uc3Qgcz0obnVsbD09PShhPWwudHlwZSl8fHZvaWQgMD09PWE/dm9pZCAwOmEudG9Mb3dlckNhc2UoKSk9PT1zZS5Db250YWN0TGlzdC50b0xvd2VyQ2FzZSgpP2wuY29udGFjdHMubWFwKChlPT5lLmlkLmVtYWlsKSkuZmlsdGVyKEJvb2xlYW4pOltsLmlkLmVtYWlsXSxjPWF3YWl0IHQoe2VtYWlsQWRkcmVzc2VzOnMsdG9waWNOYW1lOmwubmFtZX0pO2UubG9nZ2VyLmxvZ0luZm8oXCJoYW5kbGVTdGFydENoYXRJbnRlbnQgY29tcGxldGVkXCIsYyl9KSh0aGlzLnByb3ZpZGVyLHRoaXMuc3RhcnRDaGF0KShlKX1jYXRjaChlKXt0aHJvdyB0aGlzLmxvZ2dlci5sb2dFcnJvcihlKSxlfX0pLFwiU3RhcnRDaGF0XCIpO3JldHVybiB0aGlzLnVuc3Vic2NyaWJlSW50ZW50SGFuZGxlcnM9YXN5bmMoKT0+e3RoaXMubG9nZ2VyLmxvZ0luZm8oXCJ1bnN1YnNjcmliZUludGVudEhhbmRsZXJzIHN0YXJ0ZWRcIiksYXdhaXQgZS51bnN1YnNjcmliZSgpLGF3YWl0IHQudW5zdWJzY3JpYmUoKSx0aGlzLnVuc3Vic2NyaWJlSW50ZW50SGFuZGxlcnM9dm9pZCAwLHRoaXMubG9nZ2VyLmxvZ0luZm8oXCJ1bnN1YnNjcmliZUludGVudEhhbmRsZXJzIGNvbXBsZXRlZFwiKX0sdGhpcy5sb2dnZXIubG9nSW5mbyhcInJlZ2lzdGVySW50ZW50SGFuZGxlcnMgY29tcGxldGVkXCIpLHt1bnN1YnNjcmliZTp0aGlzLnVuc3Vic2NyaWJlSW50ZW50SGFuZGxlcnN9fWNhdGNoKGUpe2NvbnN0IHQ9bmV3IHJlKGUubWVzc2FnZSk7dGhyb3cgdGhpcy5sb2dnZXIubG9nRXJyb3IodCksdH19YXN5bmMgc2hhcmUoZSl7dmFyIHQsbixyLG87dGhpcy5sb2dnZXIubG9nSW5mbyhcInNoYXJlIHN0YXJ0ZWRcIixlKTt0cnl7aWYoIWUudGFyZ2V0KXRocm93IG5ldyBIKFwiVGFyZ2V0IG5vdCBwcm92aWRlZFwiKTtpZigobnVsbD09PSh0PWUuY29udGV4dCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQudHlwZS50b0xvd2VyQ2FzZSgpKSE9PXNlLkluc3RydW1lbnQudG9Mb3dlckNhc2UoKSl0aHJvdyBuZXcgSChcIlVuc3VwcG9ydGVkIGNvbnRleHQgdHlwZVwiKTtpZighKG51bGw9PT0ocj1udWxsPT09KG49ZS5jb250ZXh0KXx8dm9pZCAwPT09bj92b2lkIDA6bi5pZCl8fHZvaWQgMD09PXI/dm9pZCAwOnIudGlja2VyKSl0aHJvdyBuZXcgSChcIlRpY2tlciBub3QgcHJvdmlkZWRcIik7aWYoIWUuY2hhcnRJbWFnZSYmbnVsbD09ZS5wcmljZUN1cnJlbnQpdGhyb3cgbmV3IEgoXCJDdXJyZW50IHByaWNlIG5vdCBwcm92aWRlZFwiKTtjb25zdCBpPW51bGw9PT0obz1lLnNob3dNZXNzYWdlKXx8dm9pZCAwPT09b3x8byxhPWF3YWl0KGFzeW5jKGUsdCk9Pnt2YXIgbixyLG8saTtjb25zdHtjaGFydEltYWdlOmEsY29udGV4dDpsfT10LHtwcmljZUN1cnJlbnQ6cyxwcmljZUhpZ2g6YyxwcmljZUxvdzp1LHByaWNlT3BlbjpmfT10LGQ9KG51bGw9PT0ocj1udWxsPT09KG49bC5pZCl8fHZvaWQgMD09PW4/dm9pZCAwOm4udGlja2VyKXx8dm9pZCAwPT09cj92b2lkIDA6ci50cmltKCkpfHx2b2lkIDAscD0obnVsbD09PShvPWwubmFtZSl8fHZvaWQgMD09PW8/dm9pZCAwOm8udHJpbSgpKXx8dm9pZCAwO2xldCBoLHYsZyxDLG0seTtpZihudWxsIT10LnRpbWVzdGFtcHx8IWEpdHJ5e2g9bmV3IERhdGUobnVsbCE9PShpPXQudGltZXN0YW1wKSYmdm9pZCAwIT09aT9pOkRhdGUubm93KCkpLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvXFwuXFxkK1okLyxcIiswMDowMFwiKX1jYXRjaChuKXtlLmxvZ2dlci5sb2dXYXJuaW5nKFwiSW52YWxpZCB0aW1lc3RhbXBcIix0LnRpbWVzdGFtcCl9aWYobnVsbCE9cyYmbnVsbCE9ZiYmKHY9cy1mLGc9di9mKjEwMCxtPXY+MD9cIuKWslwiOnY8MD9cIuKWvFwiOlwi4pePXCIsQz12PjA/XCJHb29kXCI6djwwP1wiQXR0ZW50aW9uXCI6XCJXYXJuaW5nXCIpLGEpe2lmKCEvXmltYWdlXFwvKGdpZnxqcChlfGU/Zyl8cG5nKSQvaS50ZXN0KGEudHlwZSkpdGhyb3cgbmV3IEgoXCJDaGFydCBpbWFnZSBNSU1FIHR5cGUgbm90IHN1cHBvcnRlZFwiKTt0cnl7eT1hd2FpdChhc3luYyBlPT5uZXcgUHJvbWlzZSgoKHQsbik9Pntjb25zdCByPW5ldyBGaWxlUmVhZGVyO3Iub25sb2FkZW5kPSgpPT50KHIucmVzdWx0KSxyLm9uZXJyb3I9KCk9Pm4obmV3IEVycm9yKFwiRmFpbGVkIHRvIGNvbnZlcnQgYmxvYiB0byBiYXNlNjRcIikpLHIucmVhZEFzRGF0YVVSTChlKX0pKSkoYSl9Y2F0Y2goZSl7dGhyb3cgbmV3IGsoXCJGYWlsZWQgdG8gY29udmVydCBibG9iIHRvIGJhc2U2NFwiLGUpfX1jb25zdCB3PShhd2FpdCBmaW4uU3lzdGVtLmdldFJ1bnRpbWVJbmZvKCkpLm1hbmlmZXN0VXJsLGI9KHg9e2NvbnRleHQ6bCxpbnRlbnQ6YT9jZS5WaWV3Q2hhcnQ6Y2UuVmlld0luc3RydW1lbnQsdmVyc2lvbjpafSwoMCx6LmNvbXByZXNzKShKU09OLnN0cmluZ2lmeSh4KSx7b3V0cHV0RW5jb2Rpbmc6XCJCYXNlNjRcIn0pKTt2YXIgeDtjb25zdCBfPWAke3d9PyQkJHt1ZX09JHtlbmNvZGVVUklDb21wb25lbnQoYil9YCxMPWBodHRwczovL3N0YXJ0Lm9wZW5maW4uY28vP21hbmlmZXN0PSR7ZW5jb2RlVVJJQ29tcG9uZW50KF8pfWAsTz17JHNjaGVtYTpcImh0dHA6Ly9hZGFwdGl2ZWNhcmRzLmlvL3NjaGVtYXMvYWRhcHRpdmUtY2FyZC5qc29uXCIsdHlwZTpcIkFkYXB0aXZlQ2FyZFwiLHZlcnNpb246XCIxLjRcIixib2R5Olt7dHlwZTpcIkNvbHVtblNldFwiLGNvbHVtbnM6W3t0eXBlOlwiQ29sdW1uXCIsd2lkdGg6XCJzdHJldGNoXCIsaXRlbXM6W3t0eXBlOlwiQ29udGFpbmVyXCIsaXRlbXM6W3t0eXBlOlwiVGV4dEJsb2NrXCIsdGV4dDpudWxsIT1wP3A6ZC50b1VwcGVyQ2FzZSgpLHdyYXA6ITAsc2l6ZTpcIkxhcmdlXCIsc3BhY2luZzpcIk5vbmVcIn0scCYme3R5cGU6XCJUZXh0QmxvY2tcIix0ZXh0OmQudG9VcHBlckNhc2UoKSxpc1N1YnRsZTohMCx3cmFwOiEwLHNwYWNpbmc6XCJOb25lXCJ9LGgmJnt0eXBlOlwiVGV4dEJsb2NrXCIsdGV4dDpge3tEQVRFKCR7aH0sIFNIT1JUKX19IHt7VElNRSgke2h9KX19YCx3cmFwOiEwLHNpemU6XCJTbWFsbFwifV19XX0sbnVsbCE9cyYmIXkmJnt0eXBlOlwiQ29sdW1uXCIsd2lkdGg6XCJzdHJldGNoXCIsaXRlbXM6W3t0eXBlOlwiVGV4dEJsb2NrXCIsdGV4dDpzLnRvRml4ZWQoMiksc2l6ZTpcIkV4dHJhTGFyZ2VcIix3cmFwOiEwLGhvcml6b250YWxBbGlnbm1lbnQ6XCJSaWdodFwifSxudWxsIT12JiZudWxsIT1nJiZ7dHlwZTpcIlRleHRCbG9ja1wiLHRleHQ6YCR7bX0gJHt2LnRvRml4ZWQoMil9ICgke2cudG9GaXhlZCgyKX0lKWAsY29sb3I6QyxzcGFjaW5nOlwiTm9uZVwiLHdyYXA6ITAsaG9yaXpvbnRhbEFsaWdubWVudDpcIlJpZ2h0XCJ9LChudWxsIT1mfHxudWxsIT1jfHxudWxsIT11KSYme3R5cGU6XCJDb250YWluZXJcIixob3Jpem9udGFsQWxpZ25tZW50OlwiUmlnaHRcIixpdGVtczpbe3R5cGU6XCJDb2x1bW5TZXRcIixjb2x1bW5zOlt7dHlwZTpcIkNvbHVtblwiLHdpZHRoOlwic3RyZXRjaFwiLGl0ZW1zOltudWxsIT1mJiZ7dHlwZTpcIlRleHRCbG9ja1wiLHRleHQ6XCJPcGVuXCIsd3JhcDohMCxob3Jpem9udGFsQWxpZ25tZW50OlwiUmlnaHRcIixzaXplOlwiU21hbGxcIix3ZWlnaHQ6XCJCb2xkZXJcIixzcGFjaW5nOlwiTm9uZVwifSxudWxsIT1jJiZ7dHlwZTpcIlRleHRCbG9ja1wiLHRleHQ6XCJIaWdoXCIsd3JhcDohMCxzcGFjaW5nOlwiTm9uZVwiLGhvcml6b250YWxBbGlnbm1lbnQ6XCJSaWdodFwiLHNpemU6XCJTbWFsbFwiLHdlaWdodDpcIkJvbGRlclwifSxudWxsIT11JiZ7dHlwZTpcIlRleHRCbG9ja1wiLHRleHQ6XCJMb3dcIix3cmFwOiEwLHNwYWNpbmc6XCJOb25lXCIsaG9yaXpvbnRhbEFsaWdubWVudDpcIlJpZ2h0XCIsc2l6ZTpcIlNtYWxsXCIsd2VpZ2h0OlwiQm9sZGVyXCJ9XX0se3R5cGU6XCJDb2x1bW5cIix3aWR0aDpcImF1dG9cIixpdGVtczpbbnVsbCE9ZiYme3R5cGU6XCJUZXh0QmxvY2tcIix0ZXh0OmYudG9GaXhlZCgyKSx3cmFwOiEwLHNwYWNpbmc6XCJOb25lXCIsaG9yaXpvbnRhbEFsaWdubWVudDpcIlJpZ2h0XCIsc2l6ZTpcIlNtYWxsXCJ9LG51bGwhPWMmJnt0eXBlOlwiVGV4dEJsb2NrXCIsdGV4dDpjLnRvRml4ZWQoMiksd3JhcDohMCxzcGFjaW5nOlwiTm9uZVwiLGhvcml6b250YWxBbGlnbm1lbnQ6XCJSaWdodFwiLHNpemU6XCJTbWFsbFwifSxudWxsIT11JiZ7dHlwZTpcIlRleHRCbG9ja1wiLHRleHQ6dS50b0ZpeGVkKDIpLHdyYXA6ITAsc3BhY2luZzpcIk5vbmVcIixob3Jpem9udGFsQWxpZ25tZW50OlwiUmlnaHRcIixzaXplOlwiU21hbGxcIn1dfV19XSxzcGFjaW5nOlwiU21hbGxcIn1dfV19LHkmJnt0eXBlOlwiSW1hZ2VcIix1cmw6XCIuLi9ob3N0ZWRDb250ZW50cy8xLyR2YWx1ZVwiLHNwYWNpbmc6XCJTbWFsbFwifSx7dHlwZTpcIkFjdGlvblNldFwiLGFjdGlvbnM6W3t0eXBlOlwiQWN0aW9uLk9wZW5VcmxcIix1cmw6TCx0aXRsZTpcIk9wZW5cIn1dfV19LEU9e2F0dGFjaG1lbnRzOlt7aWQ6XCIxXCIsY29udGVudFR5cGU6XCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuYWRhcHRpdmVcIixjb250ZW50OkpTT04uc3RyaW5naWZ5KFkoTykpfV0sYm9keTp7Y29udGVudFR5cGU6XCJodG1sXCIsY29udGVudDonPGF0dGFjaG1lbnQgaWQ9XCIxXCI+PC9hdHRhY2htZW50Pid9LHN1bW1hcnk6XCJUZXN0IHN1bW1hcnlcIn07aWYoeSl7Y29uc3RbLGUsdF09Wy4uLnkubWF0Y2goL15kYXRhOihbXjtdKyk7YmFzZTY0LCguKykkL2kpXTtFLmhvc3RlZENvbnRlbnRzPVt7XCJAbWljcm9zb2Z0LmdyYXBoLnRlbXBvcmFyeUlkXCI6XCIxXCIsY29udGVudEJ5dGVzOnQsY29udGVudFR5cGU6ZX1dfXJldHVybiBFfSkodGhpcy5wcm92aWRlcixlKTtsZXQgbDtpZihBcnJheS5pc0FycmF5KGUudGFyZ2V0KSl7Y29uc3R7dGFyZ2V0OnR9PWUsbj1hd2FpdCBXKHRoaXMucHJvdmlkZXIsdCxbXCJkaXNwbGF5TmFtZVwiLFwibWFpbFwiXSkscj1uLmZpbHRlcihCb29sZWFuKTtpZighci5sZW5ndGgpcmV0dXJuIHRoaXMubG9nZ2VyLmxvZ1dhcm5pbmcoXCJDb3VsZCBub3QgcmVzb2x2ZSBhbnkgdmFsaWQgdXNlcnMgZnJvbSBlbWFpbCBhZGRyZXNzZXNcIix0KSx0Lm1hcCgoKCk9Pnt9KSk7Y29uc3R7aWQ6byx3ZWJVcmw6c309YXdhaXQoYXN5bmMoZSx0KT0+e2NvbnN0IG49e2NoYXRUeXBlOnQubGVuZ3RoPjI/XCJncm91cFwiOlwib25lT25PbmVcIixtZW1iZXJzOnQubWFwKCh0PT4oe1wiQG9kYXRhLnR5cGVcIjpcIiNtaWNyb3NvZnQuZ3JhcGguYWFkVXNlckNvbnZlcnNhdGlvbk1lbWJlclwiLHJvbGVzOksodCk/W1wiZ3Vlc3RcIl06W1wib3duZXJcIl0sXCJ1c2VyQG9kYXRhLmJpbmRcIjpgJHtlLmFwaU9yaWdpbn0vdjEuMC91c2VycygnJHt0LmlkfScpYH0pKSl9LHtkYXRhOnJ9PWF3YWl0IGUuZXhlY3V0ZUFwaVJlcXVlc3QoXCIvdjEuMC9jaGF0c1wiLFwiUE9TVFwiLG4pO3JldHVybiByfSkodGhpcy5wcm92aWRlcixbdGhpcy5wcm92aWRlci5jdXJyZW50VXNlciwuLi5yXSkse2RhdGE6Y309YXdhaXQgdGhpcy5wcm92aWRlci5leGVjdXRlQXBpUmVxdWVzdChgL3YxLjAvY2hhdHMvJHtlbmNvZGVVUklDb21wb25lbnQobyl9L21lc3NhZ2VzYCxcIlBPU1RcIixhKTt0aGlzLmxvZ2dlci5sb2dJbmZvKFwiU2VudCBjaGF0IG1lc3NhZ2VcIixjKSxpJiZhd2FpdCB0aGlzLm9wZW5VcmwocyksbD1HKG4pfWVsc2V7Y29uc3R7dGFyZ2V0OnR9PWUsbj1hd2FpdCBwZSh0aGlzLnByb3ZpZGVyLHQudGVhbUlkLHQuY2hhbm5lbElkKTtpZighbilyZXR1cm4gdm9pZCB0aGlzLmxvZ2dlci5sb2dXYXJuaW5nKFwiQ291bGQgbm90IHJlc29sdmUgdGVhbS9jaGFubmVsXCIsdC50ZWFtSWQsdC5jaGFubmVsSWQpO2NvbnN0e2NoYW5uZWxJZDpyLHRlYW1JZDpvfT1uLHtkYXRhOnN9PWF3YWl0IHRoaXMucHJvdmlkZXIuZXhlY3V0ZUFwaVJlcXVlc3QoYC92MS4wL3RlYW1zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KG8pfS9jaGFubmVscy8ke2VuY29kZVVSSUNvbXBvbmVudChyKX0vbWVzc2FnZXNgLFwiUE9TVFwiLGEpO3RoaXMubG9nZ2VyLmxvZ0luZm8oXCJTZW50IGNoYXQgbWVzc2FnZVwiLHMpLGkmJmF3YWl0IHRoaXMub3BlblVybChzLndlYlVybCksbD1ufXJldHVybiB0aGlzLmxvZ2dlci5sb2dJbmZvKFwic2hhcmUgY29tcGxldGVkXCIsbCksbH1jYXRjaChlKXt0aHJvdyB0aGlzLmxvZ2dlci5sb2dFcnJvcihlKSxlfX1hc3luYyBzdGFydENhbGwoZT1bXSx0PSExKXt0aGlzLmxvZ2dlci5sb2dJbmZvKFwic3RhcnRDYWxsIHN0YXJ0ZWRcIixlKTt0cnl7bGV0IG49YCR7ZmUodGhpcy51c2VNc1RlYW1zUHJvdG9jb2wpfS9sL2NhbGwvMC8wP2A7Y29uc3Qgcj1hd2FpdCBXKHRoaXMucHJvdmlkZXIsZSxbXCJkaXNwbGF5TmFtZVwiLFwibWFpbFwiXSksbz1yLmZpbHRlcihCb29sZWFuKS5tYXAoKGU9PmVuY29kZVVSSUNvbXBvbmVudChlLnVzZXJQcmluY2lwYWxOYW1lKSkpO2lmKCFvLmxlbmd0aClyZXR1cm4gdGhpcy5sb2dnZXIubG9nV2FybmluZyhcIkNvdWxkIG5vdCByZXNvbHZlIGFueSB2YWxpZCB1c2VycyBmcm9tIHN1cHBsaWVkIGVtYWlsc1wiLGUpLGUubWFwKCgoKT0+e30pKTtuKz1gdXNlcnM9JHtvLmpvaW4oXCIsXCIpfSZ3aXRoVmlkZW89JHt0fWAsdGhpcy5sb2dnZXIubG9nSW5mbyhcIk9wZW5pbmcgVGVhbXNcIixuKSxhd2FpdCBmaW4uU3lzdGVtLm9wZW5VcmxXaXRoQnJvd3NlcihuKTtjb25zdCBpPUcocik7cmV0dXJuIHRoaXMubG9nZ2VyLmxvZ0luZm8oXCJzdGFydENhbGwgY29tcGxldGVkXCIsaSksaX1jYXRjaChlKXt0aHJvdyB0aGlzLmxvZ2dlci5sb2dFcnJvcihlKSxlfX1hc3luYyBzdGFydENoYXQoZSl7dGhpcy5sb2dnZXIubG9nSW5mbyhcInN0YXJ0Q2hhdCBzdGFydGVkXCIsZSk7dHJ5e2xldCB0LG47aWYoXCJ0ZWFtSWRcImluIGUpe2NvbnN0e3RlYW1JZDpyLGNoYW5uZWxJZDpvfT1lLGk9YXdhaXQgcGUodGhpcy5wcm92aWRlcixyLG8pO2lmKCFpKXJldHVybiB2b2lkIHRoaXMubG9nZ2VyLmxvZ1dhcm5pbmcoXCJDb3VsZCBub3QgcmVzb2x2ZSB0ZWFtL2NoYW5uZWxcIixyLG8pO3Q9YCR7ZmUodGhpcy51c2VNc1RlYW1zUHJvdG9jb2wpfS9sL2NoYW5uZWwvJHtlbmNvZGVVUklDb21wb25lbnQoaS5jaGFubmVsSWQpfS8ke2VuY29kZVVSSUNvbXBvbmVudChpLmNoYW5uZWxOYW1lKX0/Z3JvdXBJZD0ke2kudGVhbUlkfSZ0ZW5hbnRJZD0ke3RoaXMucHJvdmlkZXIudGVuYW50SWR9YCxuPWl9ZWxzZXtjb25zdHtlbWFpbEFkZHJlc3NlczpyLG1lc3NhZ2U6byx0b3BpY05hbWU6aX09ZTt0PWAke2ZlKHRoaXMudXNlTXNUZWFtc1Byb3RvY29sKX0vbC9jaGF0LzAvMD9gO2NvbnN0IGE9YXdhaXQgVyh0aGlzLnByb3ZpZGVyLHIsW1wiZGlzcGxheU5hbWVcIixcIm1haWxcIl0pLGw9YS5maWx0ZXIoQm9vbGVhbikubWFwKChlPT5lbmNvZGVVUklDb21wb25lbnQoZS51c2VyUHJpbmNpcGFsTmFtZSkpKTtpZighbC5sZW5ndGgpcmV0dXJuIHRoaXMubG9nZ2VyLmxvZ1dhcm5pbmcoXCJDb3VsZCBub3QgcmVzb2x2ZSBhbnkgdmFsaWQgdXNlcnMgZnJvbSBlbWFpbCBhZGRyZXNzZXNcIixyKSxyLm1hcCgoKCk9Pnt9KSk7dCs9YHVzZXJzPSR7bC5qb2luKFwiLFwiKX1gLGkmJih0Kz1gJnRvcGljTmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudChpKX1gKSxvJiYodCs9YCZtZXNzYWdlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KG8pfWApLG49RyhhKX1yZXR1cm4gdGhpcy5sb2dnZXIubG9nSW5mbyhcIk9wZW5pbmcgVGVhbXNcIix0KSxhd2FpdCBmaW4uU3lzdGVtLm9wZW5VcmxXaXRoQnJvd3Nlcih0KSx0aGlzLmxvZ2dlci5sb2dJbmZvKFwic3RhcnRDaGF0IGNvbXBsZXRlZFwiLG4pLG59Y2F0Y2goZSl7dGhyb3cgdGhpcy5sb2dnZXIubG9nRXJyb3IoZSksZX19fX0sOTE6KCk9Pnt9fSxOPXt9O2Z1bmN0aW9uIFUoZSl7dmFyIHQ9TltlXTtpZih2b2lkIDAhPT10KXJldHVybiB0LmV4cG9ydHM7dmFyIG49TltlXT17aWQ6ZSxsb2FkZWQ6ITEsZXhwb3J0czp7fX07cmV0dXJuIEZbZV0uY2FsbChuLmV4cG9ydHMsbixuLmV4cG9ydHMsVSksbi5sb2FkZWQ9ITAsbi5leHBvcnRzfVUuYz1OLFUuZD0oZSx0KT0+e2Zvcih2YXIgbiBpbiB0KVUubyh0LG4pJiYhVS5vKGUsbikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2VudW1lcmFibGU6ITAsZ2V0OnRbbl19KX0sVS5nPWZ1bmN0aW9uKCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbFRoaXMpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfWNhdGNoKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvd319KCksVS5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxVLm5tZD1lPT4oZS5wYXRocz1bXSxlLmNoaWxkcmVufHwoZS5jaGlsZHJlbj1bXSksZSk7dmFyIFc9VShVLnM9NTQpLHo9KFcuTVMsVy5jRixXLkFLKSxHPShXLk1fLFcuY1gsVy5CVCxXLl9XLFcuUGcpLHE9Vy4kaixZPShXLlUkLFcuVTcpO2xldCBLPTA7Y29uc3QgWD17Y2hhdE1lc3NhZ2U6XCJDaGF0IE1lc3NhZ2VcIixldmVudDpcIkV2ZW50XCIsbWVzc2FnZTpcIkVtYWlsXCIsZHJpdmU6XCJEb2N1bWVudFwiLGNvbnRhY3Q6XCJDb250YWN0XCIsdXNlcjpcIlVzZXJcIixsaXN0OlwiTGlzdFwifSxKPXtwZGY6XCJQREZcIixkb2N4OlwiV29yZFwiLHBwdHg6XCJQb3dlclBvaW50XCIseGxzeDpcIkV4Y2VsXCIsb25lbm90ZTpcIk9uZU5vdGVcIn0sUT17Y2hhdE1lc3NhZ2U6W1wiQ2hhdC5SZWFkXCIsXCJDaGFubmVsTWVzc2FnZS5SZWFkLkFsbFwiXSxsaXN0OltcIlNpdGVzLlJlYWQuQWxsXCJdLGV2ZW50OltcIkNhbGVuZGFycy5SZWFkXCJdLG1lc3NhZ2U6W1wiTWFpbC5SZWFkV3JpdGUuU2hhcmVkXCJdLGNvbnRhY3Q6W1wiQ29udGFjdHMuUmVhZC5TaGFyZWRcIixcIk1haWwuUmVhZFdyaXRlLlNoYXJlZFwiXSx1c2VyOltcIlVzZXIuUmVhZC5BbGxcIixcIlByZXNlbmNlLlJlYWQuQWxsXCJdfSxlZT1cIk1JQ1JPU09GVF8zNjVfU0VBUkNIX1RZUEVfRklMVEVSXCIsdGU9XCJNSUNST1NPRlRfMzY1X1NFQVJDSF9GSUxFX1RZUEVfRklMVEVSXCIsbmU9XCJNSUNST1NPRlRfMzY1X1NFQVJDSF9ERVBBUlRNRU5UX0ZJTFRFUlwiLHJlPVwiTUlDUk9TT0ZUXzM2NV9TRUFSQ0hfSk9CX1RJVExFX0ZJTFRFUlwiLG9lPVwiVGVhbXMgQ2FsbFwiLGllPVwiVGVhbXMgQ2hhdFwiLGFlPVwiRW1haWxcIixsZT0oZSx0KT0+e2NvbnN0IG49W10scj17aXRlbTplLmNvbnRleHQuc2VsZWN0ZWRGaWx0ZXJzPy5maW5kKChlPT5lLmlkPT09ZWUpKSxkb2N1bWVudFR5cGU6ZS5jb250ZXh0LnNlbGVjdGVkRmlsdGVycz8uZmluZCgoZT0+ZS5pZD09PXRlKSl9LG89W3t2YWx1ZTpcIkRvY3VtZW50XCIsaXNTZWxlY3RlZDohIXIuaXRlbT8ub3B0aW9ucz8uZmluZCgoKHt2YWx1ZTplfSk9PlwiRmlsZVwiPT09ZSkpPy5pc1NlbGVjdGVkfSx7dmFsdWU6XCJDb250YWN0XCIsaXNTZWxlY3RlZDohIXIuaXRlbT8ub3B0aW9ucz8uZmluZCgoKHt2YWx1ZTplfSk9PlwiQ29udGFjdFwiPT09ZSkpPy5pc1NlbGVjdGVkfSx7dmFsdWU6XCJDaGF0IE1lc3NhZ2VcIixpc1NlbGVjdGVkOiEhci5pdGVtPy5vcHRpb25zPy5maW5kKCgoe3ZhbHVlOmV9KT0+XCJDaGF0IE1lc3NhZ2VcIj09PWUpKT8uaXNTZWxlY3RlZH0se3ZhbHVlOlwiRW1haWxcIixpc1NlbGVjdGVkOiEhci5pdGVtPy5vcHRpb25zPy5maW5kKCgoe3ZhbHVlOmV9KT0+XCJFbWFpbFwiPT09ZSkpPy5pc1NlbGVjdGVkfSx7dmFsdWU6XCJFdmVudFwiLGlzU2VsZWN0ZWQ6ISFyLml0ZW0/Lm9wdGlvbnM/LmZpbmQoKCh7dmFsdWU6ZX0pPT5cIkV2ZW50XCI9PT1lKSk/LmlzU2VsZWN0ZWR9LHt2YWx1ZTpcIkxpc3RcIixpc1NlbGVjdGVkOiEhci5pdGVtPy5vcHRpb25zPy5maW5kKCgoe3ZhbHVlOmV9KT0+XCJMaXN0XCI9PT1lKSk/LmlzU2VsZWN0ZWR9XTtyZXR1cm4gbi5wdXNoKHtpZDplZSx0aXRsZTpcIlR5cGVcIix0eXBlOkIuZWwuTXVsdGlTZWxlY3Qsb3B0aW9uczpvLmZpbHRlcigoZT0+dC5oYXMoZS52YWx1ZSkpKX0pLFwiRG9jdW1lbnRcIj09PXIuaXRlbT8ub3B0aW9ucz8uZmlsdGVyKChlPT5lLmlzU2VsZWN0ZWQpKT8uWzBdLnZhbHVlJiZuLnB1c2goe2lkOnRlLHRpdGxlOlwiRmlsZSBUeXBlXCIsdHlwZTpCLmVsLk11bHRpU2VsZWN0LG9wdGlvbnM6T2JqZWN0LmVudHJpZXMoSikubWFwKCgoWyxlXSk9Pih7dmFsdWU6ZSxpc1NlbGVjdGVkOiEhci5kb2N1bWVudFR5cGU/Lm9wdGlvbnM/LmZpbHRlcigoZT0+ZS5pc1NlbGVjdGVkKSk/LmZpbmQoKCh7dmFsdWU6ZX0pPT5cIkZpbGVcIj09PWUpKT8uaXNTZWxlY3RlZH0pKSl9KSxufSxzZT0oZSx0KT0+e2NvbnN0IG49dC5jb250ZXh0LnNlbGVjdGVkRmlsdGVycz8uZmluZCgoZT0+ZS5pZD09PWVlKSk/Lm9wdGlvbnM7aWYoIUFycmF5LmlzQXJyYXkobil8fCFuLmZpbmQoKGU9PlwiQ29udGFjdFwiPT09ZS52YWx1ZXx8XCJVc2VyXCI9PT1lLnZhbHVlKSk/LmlzU2VsZWN0ZWQpcmV0dXJuW107Y29uc3R7ZGVwYXJ0bWVudDpyLGpvYlRpdGxlOm99PWUucmVkdWNlKCgoZSx0KT0+KHQuZGVwYXJ0bWVudCYmZS5kZXBhcnRtZW50LmFkZCh0LmRlcGFydG1lbnQpLHQuam9iVGl0bGUmJmUuam9iVGl0bGUuYWRkKHQuam9iVGl0bGUpLGUpKSx7ZGVwYXJ0bWVudDpuZXcgU2V0LGpvYlRpdGxlOm5ldyBTZXR9KSxpPXQuY29udGV4dC5zZWxlY3RlZEZpbHRlcnM/LmZpbmQoKGU9PmUuaWQ9PT1uZSkpLGE9QXJyYXkuZnJvbShyKS5tYXAoKGU9Pih7dmFsdWU6ZSxpc1NlbGVjdGVkOiEhaT8ub3B0aW9ucz8uZmluZCgoKHt2YWx1ZTp0fSk9PnQ9PT1lKSk/LmlzU2VsZWN0ZWR9KSkpLGw9dC5jb250ZXh0LnNlbGVjdGVkRmlsdGVycz8uZmluZCgoZT0+ZS5pZD09PW5lKSkscz1BcnJheS5mcm9tKG8pLm1hcCgoZT0+KHt2YWx1ZTplLGlzU2VsZWN0ZWQ6ISFsPy5vcHRpb25zPy5maW5kKCgoe3ZhbHVlOnR9KT0+dD09PWUpKT8uaXNTZWxlY3RlZH0pKSk7cmV0dXJuW3tpZDpuZSx0aXRsZTpcIkRlcGFydG1lbnRcIix0eXBlOkIuZWwuTXVsdGlTZWxlY3Qsb3B0aW9uczphfSx7aWQ6cmUsdGl0bGU6XCJKb2IgVGl0bGVcIix0eXBlOkIuZWwuTXVsdGlTZWxlY3Qsb3B0aW9uczpzfV19LGNlPWU9Pntjb25zdCB0PWUuY29udGV4dC5zZWxlY3RlZEZpbHRlcnM/LmZpbmQoKGU9PmUuaWQ9PT1uZSkpLG49QXJyYXkuaXNBcnJheSh0Py5vcHRpb25zKT90Lm9wdGlvbnMuZmlsdGVyKChlPT5lLmlzU2VsZWN0ZWQpKS5tYXAoKGU9PmUudmFsdWUpKTpbXSxyPWUuY29udGV4dC5zZWxlY3RlZEZpbHRlcnM/LmZpbmQoKGU9PmUuaWQ9PT1yZSkpLG89QXJyYXkuaXNBcnJheShyPy5vcHRpb25zKT9yLm9wdGlvbnMuZmlsdGVyKChlPT5lLmlzU2VsZWN0ZWQpKS5tYXAoKGU9PmUudmFsdWUpKTpbXTtyZXR1cm57ZGVwYXJ0bWVudDpuLGpvYlRpdGxlOm99fSx1ZT0oZSx0KT0+e2NvbnN0e2RlcGFydG1lbnQ6bixqb2JUaXRsZTpyfT10O3JldHVybiBlLmZpbHRlcigoZT0+KCFuLmxlbmd0aHx8bi5pbmNsdWRlcyhlLmRlcGFydG1lbnQpKSYmKCFyLmxlbmd0aHx8ci5pbmNsdWRlcyhlLmpvYlRpdGxlKSkpKX0sZmU9ZT0+e2NvbnN0IHQ9QXJyYXkuaXNBcnJheShlLmNvbnRleHQuc2VsZWN0ZWRGaWx0ZXJzPy5maW5kKChlPT5lLmlkPT09dGUpKT8ub3B0aW9ucyk/ZS5jb250ZXh0LnNlbGVjdGVkRmlsdGVycy5maW5kKChlPT5lLmlkPT09dGUpKT8ub3B0aW9uczpbXTtyZXR1cm57ZmlsdGVyRmlsZXM6dCYmdC5zb21lKCgoe2lzU2VsZWN0ZWQ6ZX0pPT5lKSksc2hvd1dvcmQ6dC5maW5kKCgoe3ZhbHVlOmV9KT0+XCJXb3JkXCI9PT1lKSk/LmlzU2VsZWN0ZWQsc2hvd0V4Y2VsOnQuZmluZCgoKHt2YWx1ZTplfSk9PlwiRXhjZWxcIj09PWUpKT8uaXNTZWxlY3RlZCxzaG93UG93ZXJQb2ludDp0LmZpbmQoKCh7dmFsdWU6ZX0pPT5cIlBvd2VyUG9pbnRcIj09PWUpKT8uaXNTZWxlY3RlZCxzaG93UERGOnQuZmluZCgoKHt2YWx1ZTplfSk9PlwiUERGXCI9PT1lKSk/LmlzU2VsZWN0ZWQsc2hvd09uZU5vdGU6dC5maW5kKCgoe3ZhbHVlOmV9KT0+XCJPbmVOb3RlXCI9PT1lKSk/LmlzU2VsZWN0ZWR9fSxkZT0oZSx0KT0+e2NvbnN0IG49W107cmV0dXJuIHQuc2hvd1dvcmQmJm4ucHVzaChcIi5kb2N4XCIpLHQuc2hvd0V4Y2VsJiZuLnB1c2goXCIueGxzeFwiKSx0LnNob3dQb3dlclBvaW50JiZuLnB1c2goXCIucHB0eFwiKSx0LnNob3dQREYmJm4ucHVzaChcIi5wZGZcIiksdC5zaG93T25lTm90ZSYmbi5wdXNoKFwiLm9uZVwiKSxlLmZpbHRlcigoZT0+e2lmKGUuZmlsZSl7Y29uc3QgdD1lLm5hbWUuc3Vic3RyaW5nKGUubmFtZS5sYXN0SW5kZXhPZihcIi5cIikpO3JldHVybiBuLmluY2x1ZGVzKHQpfXJldHVybiExfSkpfSxwZT0oZT1cIlwiKT0+e3N3aXRjaChlLnNwbGl0KFwiLlwiKS5wb3AoKT8udG9Mb3dlckNhc2UoKT8/XCJcIil7Y2FzZVwiZG9jeFwiOmNhc2VcImRvY1wiOnJldHVyblwiTWljcm9zb2Z0IFdvcmRcIjtjYXNlXCJ4bHN4XCI6Y2FzZVwieGxzXCI6cmV0dXJuXCJNaWNyb3NvZnQgRXhjZWxcIjtjYXNlXCJwcHR4XCI6Y2FzZVwicHB0XCI6cmV0dXJuXCJNaWNyb3NvZnQgUG93ZXJQb2ludFwiO2Nhc2VcInBkZlwiOnJldHVyblwiUERGXCI7Y2FzZVwicG5nXCI6Y2FzZVwianBnXCI6Y2FzZVwianBlZ1wiOmNhc2VcImdpZlwiOnJldHVyblwiSW1hZ2VcIjtjYXNlXCJ0eHRcIjpyZXR1cm5cIlRleHRcIjtkZWZhdWx0OnJldHVyblwiRmlsZVwifX0saGU9KGU9XCJcIik9Pntzd2l0Y2goZS5zcGxpdChcIi5cIikucG9wKCk/LnRvTG93ZXJDYXNlKCk/P1wiXCIpe2Nhc2VcImRvY3hcIjpjYXNlXCJkb2NcIjpyZXR1cm4oMCxBLkszKShQLmRlLk1pY3Jvc29mdDM2NUFzc2V0cy5NaWNyb3NvZnQzNjVEb2N1bWVudEljb24pO2Nhc2VcInhsc3hcIjpjYXNlXCJ4bHNcIjpyZXR1cm4oMCxBLkszKShQLmRlLk1pY3Jvc29mdDM2NUFzc2V0cy5NaWNyb3NvZnQzNjVFeGNlbEljb24pO2Nhc2VcInBwdHhcIjpjYXNlXCJwcHRcIjpyZXR1cm4oMCxBLkszKShQLmRlLk1pY3Jvc29mdDM2NUFzc2V0cy5NaWNyb3NvZnQzNjVQb3dlcnBvaW50SWNvbik7Y2FzZVwicGRmXCI6cmV0dXJuKDAsQS5LMykoUC5kZS5NaWNyb3NvZnQzNjVBc3NldHMuUERGRmlsZUljb24pO2RlZmF1bHQ6cmV0dXJufX0sdmU9ZT0+ZS5yZXBsYWNlKC9cXCsvZyxcIl9cIikucmVwbGFjZSgvXFwvL2csXCItXCIpO3ZhciBnZSxDZSxtZSx5ZSx3ZSxiZSx4ZSxfZSxMZSxPZSxFZSxTZSxNZSxqZSxrZSxSZSxQZSxBZSxJZSxUZSxIZSxWZT1mdW5jdGlvbihlLHQsbixyKXtpZihcImFcIj09PW4mJiFyKXRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdD9lIT09dHx8IXI6IXQuaGFzKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7cmV0dXJuXCJtXCI9PT1uP3I6XCJhXCI9PT1uP3IuY2FsbChlKTpyP3IudmFsdWU6dC5nZXQoZSl9LEJlPWZ1bmN0aW9uKGUsdCxuLHIsbyl7aWYoXCJtXCI9PT1yKXRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGVcIik7aWYoXCJhXCI9PT1yJiYhbyl0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/ZSE9PXR8fCFvOiF0LmhhcyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7cmV0dXJuXCJhXCI9PT1yP28uY2FsbChlLG4pOm8/by52YWx1ZT1uOnQuc2V0KGUsbiksbn07Y2xhc3MgRGUgZXh0ZW5kcyAke2NvbnN0cnVjdG9yKGUpe2NvbnN0IHQ9RSh7fSx7d29ya2Zsb3dzOntzZWFyY2g6KEsrPTEse2hvbWVQcm92aWRlcjp7ZGVzY3JpcHRpb246XCJNaWNyb3NvZnQgMzY1IHNlYXJjaCByZXN1bHRzIHByb3ZpZGVyXCIsaWQ6YE1TMzY1LSR7ZmluLm1lLmlkZW50aXR5LnV1aWR9LSR7S31gLGxvZ29Vcmw6KDAsQS5LMykoUC5kZS5NaWNyb3NvZnQzNjVBc3NldHMuTWljcm9zb2Z0MzY1SWNvbiksaWNvbjooMCxBLkszKShQLmRlLk1pY3Jvc29mdDM2NUFzc2V0cy5NaWNyb3NvZnQzNjVJY29uKSx0aXRsZTpcIk1pY3Jvc29mdCAzNjUgU2VhcmNoXCIsaW5wdXRQbGFjZWhvbGRlcjpcIldoYXQgd291bGQgeW91IGxpa2UgdG8gc2VhcmNoIGluIE1pY3Jvc29mdCAzNjUgdG9kYXk/XCIsZGlzcGF0Y2hGb2N1c0V2ZW50czohMH0sbWljcm9zb2Z0RW50aXR5VHlwZUNvbmZpZzp7bWVzc2FnZTohMCxjaGF0TWVzc2FnZTohMCxkcml2ZTohMCxldmVudDohMCx1c2VyOiEwLGNvbnRhY3Q6ITAsbGlzdDohMH0sdXNlVGVhbXNEZWVwTGluazohMH0pfX0sZSk7c3VwZXIodCksZ2UuYWRkKHRoaXMpLENlLnNldCh0aGlzLHZvaWQgMCksdGhpcy53b3JrZmxvd0ludGVncmF0aW9uTmFtZT1cIk1pY3Jvc29mdCAzNjVcIixtZS5zZXQodGhpcyx2b2lkIDApLHllLnNldCh0aGlzLHZvaWQgMCksd2Uuc2V0KHRoaXMsMSksYmUuc2V0KHRoaXMsbmV3IFNldCkseGUuc2V0KHRoaXMsbmV3IEwoMTAwKSksX2Uuc2V0KHRoaXMsbmV3IEgoNmU0KSksdGhpcy5jb25uZWN0PWFzeW5jKGU9dGhpcy5jb25maWcuY29ubmVjdCk9Pntjb25zdHtjbGllbnRJZDp0LHRlbmFudElkOm4scmVkaXJlY3RVcmk6cn09ZSxvPXRoaXMuY29uZmlnLndvcmtmbG93cz8uc2VhcmNoP09iamVjdC5lbnRyaWVzKHRoaXMuY29uZmlnLndvcmtmbG93cz8uc2VhcmNoPy5taWNyb3NvZnRFbnRpdHlUeXBlQ29uZmlnPz97fSkuZmlsdGVyKCgoW2UsdF0pPT50KSkubWFwKCgoW2VdKT0+UVtlXSkpLmZpbHRlcigoZT0+dm9pZCAwIT09ZSkpLmZsYXQoKTpbXTt0aGlzLmNvbmZpZy5jb25uZWN0PWUsQmUodGhpcyxDZSxhd2FpdCBxKHQsbixyLFsuLi5uZXcgU2V0KG8pXSksXCJmXCIpfSxMZS5zZXQodGhpcywoKCk9PntpZighVmUodGhpcyxDZSxcImZcIikpdGhyb3cgbmV3IEVycm9yKFwiTWljcm9zb2Z0MzY1V29ya2Zsb3dJbnRlZ3JhdGlvbiBub3QgY29ubmVjdGVkXCIpO3JldHVybiBWZSh0aGlzLENlLFwiZlwiKX0pKSxqZS5zZXQodGhpcywoYXN5bmMgZT0+e2lmKEJlKHRoaXMseWUsZSxcImZcIiksZS5kYXRhPy5pdGVtPy5pZCl7Y29uc3QgdD1WZSh0aGlzLF9lLFwiZlwiKS5nZXQoZS5kYXRhLml0ZW0uaWQpO2lmKHQpcmV0dXJuIHZvaWQgVmUodGhpcyxtZSxcImZcIikucmVzcG9uZChbdF0pfWlmKFwidXNlclwiPT09ZS5kYXRhPy50eXBlKVZlKHRoaXMsSWUsXCJmXCIpLmNhbGwodGhpcyxlKX0pKSxrZS5zZXQodGhpcywoYXN5bmMgZT0+e2F3YWl0IGZpbi5QbGF0Zm9ybS5nZXRDdXJyZW50U3luYygpLmNyZWF0ZVdpbmRvdyh7bGF5b3V0Ontjb250ZW50Olt7dHlwZTpcInN0YWNrXCIsY29udGVudDpbe3R5cGU6XCJjb21wb25lbnRcIixjb21wb25lbnROYW1lOlwidmlld1wiLGNvbXBvbmVudFN0YXRlOnt1cmw6ZX19XX1dfSx3b3Jrc3BhY2VQbGF0Zm9ybTp2b2lkIDB9KX0pKSxSZS5zZXQodGhpcywoYXN5bmMgZT0+e2lmKGUuZGF0YS5pdGVtLmNoYW5uZWxJZGVudGl0eS50ZWFtSWQpe2NvbnN0IHQ9bmV3IFVSTChgbXN0ZWFtczovbC9jaGFubmVsLyR7ZS5kYXRhLml0ZW0uY2hhbm5lbElkZW50aXR5LmNoYW5uZWxJZH0vJHtlLmRhdGEuaXRlbS5pZH1gKTtyZXR1cm4hMT09PXRoaXMuY29uZmlnLndvcmtmbG93cz8uc2VhcmNoPy51c2VUZWFtc0RlZXBMaW5rJiYodC5wcm90b2NvbD1cImh0dHBzOlwiKSx0LnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJjb250ZXh0XCIsSlNPTi5zdHJpbmdpZnkoe2NvbnRleHRUeXBlOlwiY2hhbm5lbFwifSkpLHZvaWQgYXdhaXQgZmluLlN5c3RlbS5vcGVuVXJsV2l0aEJyb3dzZXIodC50b1N0cmluZygpKX1jb25zdCB0PW5ldyBVUkwoYG1zdGVhbXM6L2wvbWVzc2FnZS8ke2UuZGF0YS5pdGVtLmNoYXRJZH0vJHtlLmRhdGEuaXRlbS5pZH1gKTshMT09PXRoaXMuY29uZmlnLndvcmtmbG93cz8uc2VhcmNoPy51c2VUZWFtc0RlZXBMaW5rJiYodC5wcm90b2NvbD1cImh0dHBzOlwiKSx0LnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJjb250ZXh0XCIsSlNPTi5zdHJpbmdpZnkoe2NvbnRleHRUeXBlOlwiY2hhdFwifSkpLGF3YWl0IGZpbi5TeXN0ZW0ub3BlblVybFdpdGhCcm93c2VyKHQudG9TdHJpbmcoKSl9KSksUGUuc2V0KHRoaXMsKGFzeW5jIGU9Pntzd2l0Y2goZS5hY3Rpb24ubmFtZSl7Y2FzZSBvZTp7Y29uc3QgdD1uZXcgRyhWZSh0aGlzLExlLFwiZlwiKS5jYWxsKHRoaXMpLHRoaXMuY29uZmlnLndvcmtmbG93cz8uc2VhcmNoPy51c2VUZWFtc0RlZXBMaW5rKTtWZSh0aGlzLGdlLFwibVwiLE9lKS5jYWxsKHRoaXMsKCgpPT50LnN0YXJ0Q2FsbChbZS5kYXRhLml0ZW0ubWFpbF0pKSk7YnJlYWt9Y2FzZSBhZTp7Y29uc3QgdD1hd2FpdCB0aGlzLmV4ZWN1dGVBcGlSZXF1ZXN0KFwiL3YxLjAvbWUvbWVzc2FnZXNcIixcIlBPU1RcIix7dG9SZWNpcGllbnRzOlt7ZW1haWxBZGRyZXNzOnthZGRyZXNzOmUuZGF0YS5pdGVtLm1haWx9fV19KTthd2FpdCBWZSh0aGlzLGtlLFwiZlwiKS5jYWxsKHRoaXMsdC5kYXRhLndlYkxpbmspO2JyZWFrfWNhc2UgaWU6Y29uc3QgdD1WZSh0aGlzLExlLFwiZlwiKS5jYWxsKHRoaXMpLG49bmV3IEcodCx0aGlzLmNvbmZpZy53b3JrZmxvd3M/LnNlYXJjaD8udXNlVGVhbXNEZWVwTGluayk7VmUodGhpcyxnZSxcIm1cIixPZSkuY2FsbCh0aGlzLCgoKT0+bi5zdGFydENoYXQoe2VtYWlsQWRkcmVzc2VzOlt0LmN1cnJlbnRVc2VyLm1haWwsZS5kYXRhLml0ZW0ubWFpbF19KSkpO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKFwiVW5oYW5kbGVkIHVzZXIgYWN0aW9uIGZvciByZXN1bHQ6XCIsZSxgVW5rbm93biBhY3Rpb24gXCIke2UuYWN0aW9uLm5hbWV9XCJgKX19KSksQWUuc2V0KHRoaXMsKGFzeW5jIGU9Pntzd2l0Y2goZS5kYXRhLnR5cGUpe2Nhc2VcImRyaXZlSXRlbVwiOlZlKHRoaXMsa2UsXCJmXCIpLmNhbGwodGhpcyxlLmRhdGEuaXRlbS53ZWJVcmwpO2JyZWFrO2Nhc2VcImV2ZW50XCI6Y29uc3QgdD1lLmRhdGEuaXRlbSxuPWF3YWl0IHRoaXMuZXhlY3V0ZUFwaVJlcXVlc3QoYC92MS4wL21lL2V2ZW50cy8ke3QuaWR9YCk7VmUodGhpcyxrZSxcImZcIikuY2FsbCh0aGlzLG4uZGF0YS53ZWJMaW5rKTticmVhaztjYXNlXCJjaGF0TWVzc2FnZVwiOlZlKHRoaXMsUmUsXCJmXCIpLmNhbGwodGhpcyxlKTticmVhaztjYXNlXCJtZXNzYWdlXCI6VmUodGhpcyxrZSxcImZcIikuY2FsbCh0aGlzLGUuZGF0YS5pdGVtLndlYkxpbmspO2JyZWFrO2Nhc2VcImxpc3RcIjpjb25zdCByPWUuZGF0YS5pdGVtLG89YXdhaXQgdGhpcy5leGVjdXRlQXBpUmVxdWVzdChgL3YxLjAvc2l0ZXMvJHtyLnBhcmVudFJlZmVyZW5jZT8uc2l0ZUlkfS9saXN0cy8ke3IuaWR9YCk7VmUodGhpcyxrZSxcImZcIikuY2FsbCh0aGlzLG8uZGF0YS53ZWJVcmwpO2JyZWFrO2Nhc2VcInVzZXJcIjpWZSh0aGlzLFBlLFwiZlwiKS5jYWxsKHRoaXMsZSk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oXCJVbmhhbmRsZWQgdXNlciBhY3Rpb24gZm9yIHJlc3VsdDpcIixlLGBVbmtub3duIHJlc3VsdCB0eXBlIFwiJHtlLmRhdGEudHlwZX1cImApfX0pKSxJZS5zZXQodGhpcywoYXN5bmMgZT0+e2xldCB0LG47Y29uc3Qgcj1bXSxvPWUuZGF0YS5pdGVtO1ZlKHRoaXMseGUsXCJmXCIpLmhhcyhvLmlkKT90PVZlKHRoaXMseGUsXCJmXCIpLmdldChvLmlkKTpyLnB1c2goe2lkOlwiY29udGFjdFBob3RvXCIsbWV0aG9kOlwiR0VUXCIsdXJsOmAvdXNlcnMvJHtlLmRhdGEuaXRlbS5pZH0vcGhvdG8vJHZhbHVlYCxoZWFkZXJzOntDb25zaXN0ZW5jeUxldmVsOlwiZXZlbnR1YWxcIn19KSxyLnB1c2goe2lkOlwicHJlc2VuY2VcIixtZXRob2Q6XCJHRVRcIix1cmw6YC91c2Vycy8ke2UuZGF0YS5pdGVtLmlkfS9wcmVzZW5jZWB9KTt0cnl7Y29uc3QgZT1hd2FpdCBWZSh0aGlzLGdlLFwibVwiLEVlKS5jYWxsKHRoaXMsciksYT1lLmRhdGE/LnJlc3BvbnNlcy5maW5kKChlPT5cImNvbnRhY3RQaG90b1wiPT09ZS5pZCkpO2EmJjIwMCE9PWEuc3RhdHVzJiZjb25zb2xlLndhcm4oXCJFcnJvciBmZXRjaGluZyB1c2VyIHBob3RvXCIsYSksYT8uYm9keSYmMjAwPT09YT8uc3RhdHVzJiYodD1gZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwke2EuYm9keX1gLFZlKHRoaXMseGUsXCJmXCIpLnB1dChvLmlkLHQpKTtjb25zdCBsPWUuZGF0YT8ucmVzcG9uc2VzLmZpbmQoKGU9PlwicHJlc2VuY2VcIj09PWUuaWQpKTsyMDAhPT1sLnN0YXR1cyYmY29uc29sZS53YXJuKFwiRXJyb3IgZmV0Y2hpbmcgdXNlciBwcmVzZW5jZVwiLGwpLGw/LmJvZHkmJjIwMD09PWwuc3RhdHVzJiYoaT1sLmJvZHksbj17YXZhaWxhYmxlOlwiYXZhaWxhYmxlXCIsYXZhaWxhYmxlaWRsZTpcImF2YWlsYWJsZVwiLGF3YXk6XCJhd2F5XCIsYmVyaWdodGJhY2s6XCJhd2F5XCIsYnVzeTpcImJ1c3lcIixidXN5aWRsZTpcImJ1c3lcIixkb25vdGRpc3R1cmI6XCJkby1ub3QtZGlzdHVyYlwiLG9mZmxpbmU6XCJvZmZsaW5lXCIscHJlc2VuY2V1bmtub3duOlwib2ZmbGluZVwifVtpLmF2YWlsYWJpbGl0eT8udG9Mb3dlckNhc2UoKV0pfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoXCJFcnJvciBmZXRjaGluZyB1c2VyIGRhdGFcIixlKX12YXIgaTtjb25zdCBhPVtbXCJEZXBhcnRtZW50XCIsby5kZXBhcnRtZW50fHxcIk4vQVwiXSxbXCJFbWFpbFwiLG8ubWFpbHx8XCJOL0FcIl0sW1wiV29yayBQaG9uZVwiLG8uYnVzaW5lc3NQaG9uZXM/LlswXXx8XCJOL0FcIl0sW1wiTW9iaWxlXCIsby5tb2JpbGVQaG9uZXx8XCJOL0FcIl0sW1wiTG9jYXRpb25cIixvLm9mZmljZUxvY2F0aW9ufHxcIk4vQVwiXV0sbD17Li4uZSx0ZW1wbGF0ZTpCLnlXLkNvbnRhY3QsdGVtcGxhdGVDb250ZW50OntuYW1lOmUuZGF0YS5pdGVtLmRpc3BsYXlOYW1lLHRpdGxlOmUuZGF0YS5pdGVtLmpvYlRpdGxlLGRldGFpbHM6W2FdLHBob3RvVXJsOnQsb25saW5lU3RhdHVzOm4sYnV0dG9uczpbe3R5cGU6XCJidXR0b25cIixpY29uOntsaWdodDooMCxBLkszKShQLmRlLkNhbGxJY29uTGlnaHQpLGRhcms6KDAsQS5LMykoUC5kZS5DYWxsSWNvbkRhcmspfSx0b29sdGlwOlwiVGVhbXMgQ2FsbFwiLGFjdGlvbjpvZX0se3R5cGU6XCJidXR0b25cIixpY29uOntsaWdodDooMCxBLkszKShQLmRlLkNoYXRJY29uTGlnaHQpLGRhcms6KDAsQS5LMykoUC5kZS5DaGF0SWNvbkRhcmspfSx0b29sdGlwOlwiQ2hhdFwiLGFjdGlvbjppZX0se3R5cGU6XCJidXR0b25cIixpY29uOntsaWdodDooMCxBLkszKShQLmRlLk1lc3NhZ2VJY29uTGlnaHQpLGRhcms6KDAsQS5LMykoUC5kZS5NZXNzYWdlSWNvbkRhcmspfSx0b29sdGlwOlwiRS1tYWlsXCIsYWN0aW9uOmFlfV19fTtWZSh0aGlzLF9lLFwiZlwiKS5wdXQoZS5kYXRhLml0ZW0uaWQsbCksVmUodGhpcyxtZSxcImZcIikucmVzcG9uZChbbF0pfSkpLFRlLnNldCh0aGlzLChhc3luYyhlLHQpPT57aWYoVmUodGhpcyxtZSxcImZcIikmJlZlKHRoaXMsbWUsXCJmXCIpLmNsb3NlKCksQmUodGhpcyxtZSx0LFwiZlwiKSxWZSh0aGlzLG1lLFwiZlwiKS5vcGVuKCksZS5xdWVyeS5sZW5ndGg8VmUodGhpcyx3ZSxcImZcIikpcmV0dXJue3Jlc3VsdHM6W119O2NvbnN0IG49ZW5jb2RlVVJJQ29tcG9uZW50KGUucXVlcnkpLHI9W10sbz0oKGUsdCk9Pntjb25zdCBuPUFycmF5LmlzQXJyYXkoZS5jb250ZXh0LnNlbGVjdGVkRmlsdGVycz8uZmluZCgoZT0+ZS5pZD09PWVlKSk/Lm9wdGlvbnMpP2UuY29udGV4dC5zZWxlY3RlZEZpbHRlcnMuZmluZCgoZT0+ZS5pZD09PWVlKSk/Lm9wdGlvbnM6W10scj1uLmV2ZXJ5KCgoe2lzU2VsZWN0ZWQ6ZX0pPT4hZSkpO3JldHVybntzaG93RG9jdW1lbnRzOnQuaGFzKFwiRG9jdW1lbnRcIikmJihyfHwhIW4uZmluZCgoKHt2YWx1ZTplfSk9PlwiRG9jdW1lbnRcIj09PWUpKT8uaXNTZWxlY3RlZCksc2hvd0NvbnRhY3RzOnQuaGFzKFwiQ29udGFjdFwiKSYmKHJ8fCEhbi5maW5kKCgoe3ZhbHVlOmV9KT0+XCJDb250YWN0XCI9PT1lKSk/LmlzU2VsZWN0ZWQpLHNob3dDaGF0TWVzc2FnZXM6dC5oYXMoXCJDaGF0IE1lc3NhZ2VcIikmJihyfHwhIW4uZmluZCgoKHt2YWx1ZTplfSk9PlwiQ2hhdCBNZXNzYWdlXCI9PT1lKSk/LmlzU2VsZWN0ZWQpLHNob3dNZXNzYWdlczp0LmhhcyhcIkVtYWlsXCIpJiYocnx8ISFuLmZpbmQoKCh7dmFsdWU6ZX0pPT5cIkVtYWlsXCI9PT1lKSk/LmlzU2VsZWN0ZWQpLHNob3dFdmVudHM6dC5oYXMoXCJFdmVudFwiKSYmKHJ8fCEhbi5maW5kKCgoe3ZhbHVlOmV9KT0+XCJFdmVudFwiPT09ZSkpPy5pc1NlbGVjdGVkKSxzaG93TGlzdHM6dC5oYXMoXCJMaXN0XCIpJiYocnx8ISFuLmZpbmQoKCh7dmFsdWU6ZX0pPT5cIkxpc3RcIj09PWUpKT8uaXNTZWxlY3RlZCl9fSkoZSxWZSh0aGlzLGJlLFwiZlwiKSk7aWYoby5zaG93RG9jdW1lbnRzKXtjb25zdCBlPWAnJHtufSdgO3IucHVzaCh7aWQ6XCJkcml2ZUl0ZW1cIixtZXRob2Q6XCJHRVRcIix1cmw6YC9tZS9kcml2ZS9yb290L3NlYXJjaChxPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGUpfSlgLGhlYWRlcnM6e0NvbnNpc3RlbmN5TGV2ZWw6XCJldmVudHVhbFwifX0pfWlmKG8uc2hvd0V2ZW50cyYmci5wdXNoKHtpZDpcImV2ZW50XCIsdXJsOlwiL3NlYXJjaC9xdWVyeVwiLG1ldGhvZDpcIlBPU1RcIixib2R5OntyZXF1ZXN0czpbe2VudGl0eVR5cGVzOltcImV2ZW50XCJdLHF1ZXJ5OntxdWVyeVN0cmluZzplLnF1ZXJ5fSxmcm9tOjAsc2l6ZToxMH1dfSxoZWFkZXJzOntcIkNvbnRlbnQtVHlwZVwiOlwiYXBwbGljYXRpb24vanNvblwifX0pLG8uc2hvd0NvbnRhY3RzKXtjb25zdCB0PWBcIiR7ZS5xdWVyeX1cImA7ci5wdXNoKHtpZDpcImNvbnRhY3RcIixtZXRob2Q6XCJHRVRcIix1cmw6YC9tZS9jb250YWN0cz8kc2VhcmNoPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHQpfSYkdG9wPTEwYH0pO2NvbnN0IG49W1wiZGlzcGxheU5hbWVcIixcImdpdmVuTmFtZVwiLFwic3VybmFtZVwiXS5tYXAoKHQ9PmBcIiR7dH06JHtlLnF1ZXJ5fVwiYCkpLmpvaW4oXCIgT1IgXCIpO3IucHVzaCh7aWQ6XCJ1c2VyXCIsbWV0aG9kOlwiR0VUXCIsdXJsOmAvdXNlcnM/JHNlYXJjaD0ke2VuY29kZVVSSUNvbXBvbmVudChuKX0mJHRvcD0xMCYkc2VsZWN0PWlkLGRpc3BsYXlOYW1lLGRlcGFydG1lbnQsbWFpbCxidXNpbmVzc1Bob25lcyxtb2JpbGVQaG9uZSxvZmZpY2VMb2NhdGlvbixqb2JUaXRsZWAsaGVhZGVyczp7Q29uc2lzdGVuY3lMZXZlbDpcImV2ZW50dWFsXCJ9fSl9aWYoby5zaG93TWVzc2FnZXMmJnIucHVzaCh7aWQ6XCJtZXNzYWdlXCIsbWV0aG9kOlwiR0VUXCIsdXJsOmAvbWUvbWVzc2FnZXM/JHNlbGVjdD1zZW5kZXIsc3ViamVjdCxib2R5UHJldmlldyxyZWNlaXZlZERhdGVUaW1lLHdlYkxpbmsmJHNlYXJjaD0ke2VuY29kZVVSSUNvbXBvbmVudChgXCIke2UucXVlcnl9XCJgKX0mJHRvcD0xMGB9KSxvLnNob3dDaGF0TWVzc2FnZXMmJnIucHVzaCh7aWQ6XCJjaGF0TWVzc2FnZVwiLHVybDpcIi9zZWFyY2gvcXVlcnlcIixtZXRob2Q6XCJQT1NUXCIsYm9keTp7cmVxdWVzdHM6W3tlbnRpdHlUeXBlczpbXCJjaGF0TWVzc2FnZVwiXSxxdWVyeTp7cXVlcnlTdHJpbmc6ZS5xdWVyeX0sZnJvbTowLHNpemU6MTB9XX0saGVhZGVyczp7XCJDb250ZW50LVR5cGVcIjpcImFwcGxpY2F0aW9uL2pzb25cIn19KSxvLnNob3dMaXN0cyYmci5wdXNoKHtpZDpcImxpc3RcIix1cmw6XCIvc2VhcmNoL3F1ZXJ5XCIsbWV0aG9kOlwiUE9TVFwiLGJvZHk6e3JlcXVlc3RzOlt7ZW50aXR5VHlwZXM6W1wibGlzdFwiXSxxdWVyeTp7cXVlcnlTdHJpbmc6ZS5xdWVyeX0sZnJvbTowLHNpemU6MTB9XX0saGVhZGVyczp7XCJDb250ZW50LVR5cGVcIjpcImFwcGxpY2F0aW9uL2pzb25cIn19KSwwPT09ci5sZW5ndGgpcmV0dXJue3Jlc3VsdHM6W119O2NvbnN0e3Jlc3VsdHM6aSxmaWx0ZXJzOmF9PWF3YWl0IFZlKHRoaXMsZ2UsXCJtXCIsU2UpLmNhbGwodGhpcyxyLGUpO3JldHVybiBpLmZpbmQoKGU9PmUua2V5PT09VmUodGhpcyx5ZSxcImZcIik/LmtleSkpPy50ZW1wbGF0ZT09PUIueVcuTG9hZGluZyYmVmUodGhpcyxqZSxcImZcIikuY2FsbCh0aGlzLFZlKHRoaXMseWUsXCJmXCIpKSx7cmVzdWx0czppLGNvbnRleHQ6e2ZpbHRlcnM6YX19fSkpLEhlLnNldCh0aGlzLChhc3luYyBlPT57c3dpdGNoKGUuYWN0aW9uLnRyaWdnZXIpe2Nhc2UgVWUucC5Gb2N1c0NoYW5nZTpWZSh0aGlzLGplLFwiZlwiKS5jYWxsKHRoaXMsZSk7YnJlYWs7Y2FzZSBVZS5wLlVzZXJBY3Rpb246VmUodGhpcyxBZSxcImZcIikuY2FsbCh0aGlzLGUpO2JyZWFrO2Nhc2UgVWUucC5SZWxvYWQ6YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oYFVua25vd24gYWN0aW9uIHRyaWdnZXI6ICR7ZS5hY3Rpb24udHJpZ2dlcn1gKX19KSksdGhpcy5pbml0aWFsaXplV29ya2Zsb3c9YXN5bmMgZT0+e2lmKFwic2VhcmNoXCIhPT1lKXRocm93IG5ldyBFcnJvcihgQXR0ZW1wdGVkIHRvIGluaXRpYWxpemUgdW5rbm93biB3b3JrZmxvdzogJHtlfWApO2F3YWl0IGIucmVnaXN0ZXIoey4uLnRoaXMuY29uZmlnLndvcmtmbG93cy5zZWFyY2guaG9tZVByb3ZpZGVyLG9uVXNlcklucHV0OlZlKHRoaXMsVGUsXCJmXCIpLG9uUmVzdWx0RGlzcGF0Y2g6VmUodGhpcyxIZSxcImZcIil9KSxZKCksYXdhaXQgdGhpcy5jb25uZWN0KCksc3VwZXIuaW5pdGlhbGl6ZVdvcmtmbG93KGUpfSxPYmplY3QuZW50cmllcyh0LndvcmtmbG93cz8uc2VhcmNoPy5taWNyb3NvZnRFbnRpdHlUeXBlQ29uZmlnfHx7fSkuZmlsdGVyKCgoW2UsdF0pPT50KSkuZm9yRWFjaCgoKFtlXSk9PntWZSh0aGlzLGJlLFwiZlwiKS5hZGQoWFtlXSl9KSl9YXN5bmMgZXhlY3V0ZUFwaVJlcXVlc3QoLi4uZSl7cmV0dXJuIFZlKHRoaXMsZ2UsXCJtXCIsT2UpLmNhbGwodGhpcywoKCk9PlZlKHRoaXMsTGUsXCJmXCIpLmNhbGwodGhpcykuZXhlY3V0ZUFwaVJlcXVlc3QoLi4uZSkpKX19Q2U9bmV3IFdlYWtNYXAsbWU9bmV3IFdlYWtNYXAseWU9bmV3IFdlYWtNYXAsd2U9bmV3IFdlYWtNYXAsYmU9bmV3IFdlYWtNYXAseGU9bmV3IFdlYWtNYXAsX2U9bmV3IFdlYWtNYXAsTGU9bmV3IFdlYWtNYXAsamU9bmV3IFdlYWtNYXAsa2U9bmV3IFdlYWtNYXAsUmU9bmV3IFdlYWtNYXAsUGU9bmV3IFdlYWtNYXAsQWU9bmV3IFdlYWtNYXAsSWU9bmV3IFdlYWtNYXAsVGU9bmV3IFdlYWtNYXAsSGU9bmV3IFdlYWtNYXAsZ2U9bmV3IFdlYWtTZXQsT2U9YXN5bmMgZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBhd2FpdCBlKCl9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIHopcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdCgpLGUoKTt0aHJvdyB0fX0sRWU9YXN5bmMgZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZXhlY3V0ZUFwaVJlcXVlc3QoXCIvdjEuMC8kYmF0Y2hcIixcIlBPU1RcIix7cmVxdWVzdHM6ZX0pfSxTZT1hc3luYyBmdW5jdGlvbihlLHQpe3RyeXtjb25zdCBuPWF3YWl0IFZlKHRoaXMsZ2UsXCJtXCIsRWUpLmNhbGwodGhpcyxlKSxyPVsuLi5sZSh0LFZlKHRoaXMsYmUsXCJmXCIpKSwuLi5zZShuLmRhdGEucmVzcG9uc2VzLmZpbmQoKGU9PlwidXNlclwiPT09ZS5pZCkpPy5ib2R5Py52YWx1ZXx8W10sdCldO3JldHVybntmaWx0ZXJzOnIscmVzdWx0czpWZSh0aGlzLGdlLFwibVwiLE1lKS5jYWxsKHRoaXMsbix0KX19Y2F0Y2goZSl7cmV0dXJuIGNvbnNvbGUud2FybihcIkZhaWxlZCB0byBleGVjdXRlIEJhdGNoIEFQSSByZXF1ZXN0OiBcIixlKSx7ZmlsdGVyczpbXSxyZXN1bHRzOlt7a2V5OmNyeXB0by5yYW5kb21VVUlEKCksdGl0bGU6XCJFcnJvciBGZXRjaGluZyBTZWFyY2ggUmVzdWx0c1wiLGRlc2NyaXB0aW9uOlwiXCIsYWN0aW9uczpbXSx0ZW1wbGF0ZTpCLnlXLkVycm9yLHRlbXBsYXRlQ29udGVudDpgRmFpbGVkIHRvIGV4ZWN1dGUgQmF0Y2ggQVBJIHJlcXVlc3Q6ICR7SlNPTi5zdHJpbmdpZnkoZSl9YH1dfX19LE1lPWZ1bmN0aW9uKGUsdCl7bGV0IG49W107Zm9yKGNvbnN0IHIgb2YgZS5kYXRhLnJlc3BvbnNlcylpZigyMDA9PT1yLnN0YXR1cylzd2l0Y2goci5pZCl7Y2FzZVwiZHJpdmVJdGVtXCI6Y29uc3QgZT1mZSh0KSxvPWUuZmlsdGVyRmlsZXM/ZGUoci5ib2R5LnZhbHVlLGUpOnIuYm9keS52YWx1ZTtuLnB1c2goLi4uKG98fFtdKS5tYXAoKGU9Pih7a2V5OmUuaWQ/P2NyeXB0by5yYW5kb21VVUlEKCksdGl0bGU6ZS5uYW1lPz9cIlwiLGRlc2NyaXB0aW9uOmUuZmlsZT8ubWltZVR5cGU/P1wiXCIsbGFiZWw6cGUoZS5uYW1lKSxpY29uOmhlKGUubmFtZSksZGF0YTp7dHlwZTpcImRyaXZlSXRlbVwiLGl0ZW06ZX0sYWN0aW9uczpbe25hbWU6XCJMYXVuY2hcIn1dLHRlbXBsYXRlOkIueVcuUGxhaW4sdGVtcGxhdGVDb250ZW50OnZvaWQgMH0pKSkpO2JyZWFrO2Nhc2VcImV2ZW50XCI6bi5wdXNoKC4uLnIuYm9keT8udmFsdWU/LlswXT8uaGl0c0NvbnRhaW5lcnM/LlswXT8uaGl0cz8uZmlsdGVyKChlPT5lLnJlc291cmNlLnN1YmplY3QpKS5tYXAoKGU9Pntjb25zdCB0PWUucmVzb3VyY2Usbj12ZShlLmhpdElkKTtyZXR1cm57a2V5Om4sdGl0bGU6dC5zdWJqZWN0Pz9cIlwiLGxhYmVsOlwiQ2FsZW5kYXIgRXZlbnRcIixpY29uOigwLEEuSzMpKFAuZGUuTWljcm9zb2Z0MzY1QXNzZXRzLk1pY3Jvc29mdDM2NU91dGxvb2tJY29uKSxhY3Rpb25zOlt7bmFtZTpcIkxhdW5jaFwifV0sZGF0YTp7dHlwZTpcImV2ZW50XCIsaXRlbTp7Li4udCxpZDpufX0sdGVtcGxhdGU6Qi55Vy5QbGFpbix0ZW1wbGF0ZUNvbnRlbnQ6dm9pZCAwfX0pKXx8W10pO2JyZWFrO2Nhc2VcImNvbnRhY3RcIjpjb25zdCBpPWNlKHQpLGE9dWUoci5ib2R5LnZhbHVlfHxbXSxpKTtuLnB1c2goLi4uKGF8fFtdKS5tYXAoKGU9Pih7a2V5OmUuaWQ/P2NyeXB0by5yYW5kb21VVUlEKCksdGl0bGU6ZS5kaXNwbGF5TmFtZT8/XCJcIixsYWJlbDpcIk91dGxvb2sgY29udGFjdFwiLGljb246KDAsQS5LMykoUC5kZS5NaWNyb3NvZnQzNjVBc3NldHMuTWljcm9zb2Z0MzY1T3V0bG9va0ljb24pLGFjdGlvbnM6W10sZGF0YTp7dHlwZTpcImNvbnRhY3RcIixpdGVtOmV9LHRlbXBsYXRlOkIueVcuUGxhaW4sdGVtcGxhdGVDb250ZW50OnZvaWQgMH0pKSkpO2JyZWFrO2Nhc2VcInVzZXJcIjpjb25zdCBsPWNlKHQpLHM9dWUoci5ib2R5LnZhbHVlfHxbXSxsKTtuLnB1c2goLi4uKHN8fFtdKS5tYXAoKGU9Pih7a2V5OmUuaWQ/P2NyeXB0by5yYW5kb21VVUlEKCksdGl0bGU6ZS5kaXNwbGF5TmFtZT8/XCJcIixsYWJlbDpcIlRlYW1zIGNvbnRhY3RcIixpY29uOigwLEEuSzMpKFAuZGUuTWljcm9zb2Z0MzY1QXNzZXRzLk1pY3Jvc29mdDM2NVRlYW1zSWNvbiksYWN0aW9uczpbXSxkYXRhOnt0eXBlOlwidXNlclwiLGl0ZW06ZX0sdGVtcGxhdGU6Qi55Vy5Mb2FkaW5nLHRlbXBsYXRlQ29udGVudDp2b2lkIDB9KSkpKTticmVhaztjYXNlXCJtZXNzYWdlXCI6bi5wdXNoKC4uLihyLmJvZHkudmFsdWV8fFtdKS5tYXAoKGU9Pih7a2V5OmUuaWQ/P2NyeXB0by5yYW5kb21VVUlEKCksdGl0bGU6YCR7ZS5zdWJqZWN0Pz9cIlVudGl0bGVkIE1lc3NhZ2VcIn0ke2UuaXNEcmFmdD9cIiAoRHJhZnQpXCI6XCJcIn1gLGxhYmVsOlwiRW1haWxcIixpY29uOigwLEEuSzMpKFAuZGUuTWljcm9zb2Z0MzY1QXNzZXRzLk1pY3Jvc29mdDM2NU91dGxvb2tJY29uKSxhY3Rpb25zOltdLGRhdGE6e3R5cGU6XCJtZXNzYWdlXCIsaXRlbTplfSx0ZW1wbGF0ZTpCLnlXLlBsYWluLHRlbXBsYXRlQ29udGVudDp2b2lkIDB9KSkpKTticmVhaztjYXNlXCJjaGF0TWVzc2FnZVwiOm4ucHVzaCguLi5yLmJvZHk/LnZhbHVlPy5bMF0/LmhpdHNDb250YWluZXJzPy5bMF0/LmhpdHM/Lm1hcCgoZT0+e2NvbnN0IHQ9ZS5yZXNvdXJjZTtyZXR1cm57a2V5OnQuaWQ/P2NyeXB0by5yYW5kb21VVUlEKCksdGl0bGU6ZS5zdW1tYXJ5Pz9cIlVudGl0bGVkIE1lc3NhZ2VcIixsYWJlbDpcIkNoYXRcIixpY29uOigwLEEuSzMpKFAuZGUuTWljcm9zb2Z0MzY1QXNzZXRzLk1pY3Jvc29mdDM2NVRlYW1zSWNvbiksYWN0aW9uczpbXSxkYXRhOnt0eXBlOlwiY2hhdE1lc3NhZ2VcIixpdGVtOnR9LHRlbXBsYXRlOkIueVcuUGxhaW4sdGVtcGxhdGVDb250ZW50OnZvaWQgMH19KSl8fFtdKTticmVhaztjYXNlXCJsaXN0XCI6bi5wdXNoKC4uLnIuYm9keT8udmFsdWU/LlswXT8uaGl0c0NvbnRhaW5lcnM/LlswXT8uaGl0cz8ubWFwKChlPT57Y29uc3QgdD1lLnJlc291cmNlLG49dmUoZS5oaXRJZCk7cmV0dXJue2tleTpuLHRpdGxlOnQuZGlzcGxheU5hbWU/P1wiVW50aXRsZWQgTGlzdFwiLGxhYmVsOlwiTGlzdFwiLGFjdGlvbnM6W3tuYW1lOlwiTGF1bmNoXCJ9XSxkYXRhOnt0eXBlOlwibGlzdFwiLGl0ZW06ey4uLnQsaWQ6bn19LHRlbXBsYXRlOkIueVcuUGxhaW4sdGVtcGxhdGVDb250ZW50OnZvaWQgMH19KSl8fFtdKTticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybihgVW5rbm93biBiYXRjaCByZXNwb25zZSBpZDogJHtyLmlkfWAsci5ib2R5KX1lbHNlIGNvbnNvbGUud2FybihcIkJhdGNoIEFQSSByZXF1ZXN0IGZhaWxlZDogXCIscik7cmV0dXJuIG49bi5tYXAoKGU9PntpZighZS5kYXRhPy5pdGVtPy5pZClyZXR1cm4gZTtjb25zdCB0PVZlKHRoaXMsX2UsXCJmXCIpLmdldChlLmRhdGEuaXRlbS5pZCk7cmV0dXJuIHQ/ey4uLmUsdGVtcGxhdGU6dC50ZW1wbGF0ZSx0ZW1wbGF0ZUNvbnRlbnQ6dC50ZW1wbGF0ZUNvbnRlbnR9OmV9KSksbi5zb3J0KCgoZSx0KT0+ZS50aXRsZT50LnRpdGxlPzE6LTEpKX07dmFyIFplPW4oNDIwKTtjb25zdCAkZT0oKT0+WmUuaGQoKSxGZT0oKT0+KGFzeW5jKCk9Pihhd2FpdCgwLGwuRG0pKCkpLmRpc3BhdGNoKFwiZ2V0LWxlZ2FjeS13b3Jrc3BhY2VzXCIsdm9pZCAwKSkoKTt2YXIgTmU9big1MjgpLFVlPW4oMjIyKSxXZT1uKDEwOSksemU9bigxMTQpfSkoKSxtb2R1bGUuZXhwb3J0cz1yfSkoKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIi8qISBGb3IgbGljZW5zZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIG5vdGlmaWNhdGlvbnMuanMuTElDRU5TRS50eHQgKi9cbigoKT0+e3ZhciBlPXszNTE6ZT0+e3ZhciB0O3NlbGYsdD0oKT0+e3JldHVybiBlPXsxNzE4NzplPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHQsbj1cIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdD9SZWZsZWN0Om51bGwscj1uJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLmFwcGx5P24uYXBwbHk6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChlLHQsbil9O3Q9biYmXCJmdW5jdGlvblwiPT10eXBlb2Ygbi5vd25LZXlzP24ub3duS2V5czpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSl9OmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKX07dmFyIG89TnVtYmVyLmlzTmFOfHxmdW5jdGlvbihlKXtyZXR1cm4gZSE9ZX07ZnVuY3Rpb24gaSgpe2kuaW5pdC5jYWxsKHRoaXMpfWUuZXhwb3J0cz1pLGUuZXhwb3J0cy5vbmNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLHIpe2Z1bmN0aW9uIG8obil7ZS5yZW1vdmVMaXN0ZW5lcih0LGkpLHIobil9ZnVuY3Rpb24gaSgpe1wiZnVuY3Rpb25cIj09dHlwZW9mIGUucmVtb3ZlTGlzdGVuZXImJmUucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLG8pLG4oW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX1oKGUsdCxpLHtvbmNlOiEwfSksXCJlcnJvclwiIT09dCYmZnVuY3Rpb24oZSx0LG4pe1wiZnVuY3Rpb25cIj09dHlwZW9mIGUub24mJmgoZSxcImVycm9yXCIsdCx7b25jZTohMH0pfShlLG8pfSkpfSxpLkV2ZW50RW1pdHRlcj1pLGkucHJvdG90eXBlLl9ldmVudHM9dm9pZCAwLGkucHJvdG90eXBlLl9ldmVudHNDb3VudD0wLGkucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnM9dm9pZCAwO3ZhciBhPTEwO2Z1bmN0aW9uIGwoZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBlKX1mdW5jdGlvbiBjKGUpe3JldHVybiB2b2lkIDA9PT1lLl9tYXhMaXN0ZW5lcnM/aS5kZWZhdWx0TWF4TGlzdGVuZXJzOmUuX21heExpc3RlbmVyc31mdW5jdGlvbiBzKGUsdCxuLHIpe3ZhciBvLGksYSxzO2lmKGwobiksdm9pZCAwPT09KGk9ZS5fZXZlbnRzKT8oaT1lLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxlLl9ldmVudHNDb3VudD0wKToodm9pZCAwIT09aS5uZXdMaXN0ZW5lciYmKGUuZW1pdChcIm5ld0xpc3RlbmVyXCIsdCxuLmxpc3RlbmVyP24ubGlzdGVuZXI6biksaT1lLl9ldmVudHMpLGE9aVt0XSksdm9pZCAwPT09YSlhPWlbdF09biwrK2UuX2V2ZW50c0NvdW50O2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgYT9hPWlbdF09cj9bbixhXTpbYSxuXTpyP2EudW5zaGlmdChuKTphLnB1c2gobiksKG89YyhlKSk+MCYmYS5sZW5ndGg+byYmIWEud2FybmVkKXthLndhcm5lZD0hMDt2YXIgdT1uZXcgRXJyb3IoXCJQb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5IGxlYWsgZGV0ZWN0ZWQuIFwiK2EubGVuZ3RoK1wiIFwiK1N0cmluZyh0KStcIiBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0XCIpO3UubmFtZT1cIk1heExpc3RlbmVyc0V4Y2VlZGVkV2FybmluZ1wiLHUuZW1pdHRlcj1lLHUudHlwZT10LHUuY291bnQ9YS5sZW5ndGgscz11LGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKHMpfXJldHVybiBlfWZ1bmN0aW9uIHUoKXtpZighdGhpcy5maXJlZClyZXR1cm4gdGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBlLHRoaXMud3JhcEZuKSx0aGlzLmZpcmVkPSEwLDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk6dGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCxhcmd1bWVudHMpfWZ1bmN0aW9uIGQoZSx0LG4pe3ZhciByPXtmaXJlZDohMSx3cmFwRm46dm9pZCAwLHRhcmdldDplLHR5cGU6dCxsaXN0ZW5lcjpufSxvPXUuYmluZChyKTtyZXR1cm4gby5saXN0ZW5lcj1uLHIud3JhcEZuPW8sb31mdW5jdGlvbiBmKGUsdCxuKXt2YXIgcj1lLl9ldmVudHM7aWYodm9pZCAwPT09cilyZXR1cm5bXTt2YXIgbz1yW3RdO3JldHVybiB2b2lkIDA9PT1vP1tdOlwiZnVuY3Rpb25cIj09dHlwZW9mIG8/bj9bby5saXN0ZW5lcnx8b106W29dOm4/ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBBcnJheShlLmxlbmd0aCksbj0wO248dC5sZW5ndGg7KytuKXRbbl09ZVtuXS5saXN0ZW5lcnx8ZVtuXTtyZXR1cm4gdH0obyk6QyhvLG8ubGVuZ3RoKX1mdW5jdGlvbiBwKGUpe3ZhciB0PXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT10KXt2YXIgbj10W2VdO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4pcmV0dXJuIDE7aWYodm9pZCAwIT09bilyZXR1cm4gbi5sZW5ndGh9cmV0dXJuIDB9ZnVuY3Rpb24gQyhlLHQpe2Zvcih2YXIgbj1uZXcgQXJyYXkodCkscj0wO3I8dDsrK3IpbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIGgoZSx0LG4scil7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5vbilyLm9uY2U/ZS5vbmNlKHQsbik6ZS5vbih0LG4pO2Vsc2V7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZS5hZGRFdmVudExpc3RlbmVyKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImVtaXR0ZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRXZlbnRFbWl0dGVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIGUpO2UuYWRkRXZlbnRMaXN0ZW5lcih0LChmdW5jdGlvbiBvKGkpe3Iub25jZSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbyksbihpKX0pKX19T2JqZWN0LmRlZmluZVByb3BlcnR5KGksXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGF9LHNldDpmdW5jdGlvbihlKXtpZihcIm51bWJlclwiIT10eXBlb2YgZXx8ZTwwfHxvKGUpKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytlK1wiLlwiKTthPWV9fSksaS5pbml0PWZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5fZXZlbnRzJiZ0aGlzLl9ldmVudHMhPT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2V2ZW50c3x8KHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApLHRoaXMuX21heExpc3RlbmVycz10aGlzLl9tYXhMaXN0ZW5lcnN8fHZvaWQgMH0saS5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKGUpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiBlfHxlPDB8fG8oZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcIm5cIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnK2UrXCIuXCIpO3JldHVybiB0aGlzLl9tYXhMaXN0ZW5lcnM9ZSx0aGlzfSxpLnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24oKXtyZXR1cm4gYyh0aGlzKX0saS5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdC5wdXNoKGFyZ3VtZW50c1tuXSk7dmFyIG89XCJlcnJvclwiPT09ZSxpPXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT1pKW89byYmdm9pZCAwPT09aS5lcnJvcjtlbHNlIGlmKCFvKXJldHVybiExO2lmKG8pe3ZhciBhO2lmKHQubGVuZ3RoPjAmJihhPXRbMF0pLGEgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBhO3ZhciBsPW5ldyBFcnJvcihcIlVuaGFuZGxlZCBlcnJvci5cIisoYT9cIiAoXCIrYS5tZXNzYWdlK1wiKVwiOlwiXCIpKTt0aHJvdyBsLmNvbnRleHQ9YSxsfXZhciBjPWlbZV07aWYodm9pZCAwPT09YylyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBjKXIoYyx0aGlzLHQpO2Vsc2V7dmFyIHM9Yy5sZW5ndGgsdT1DKGMscyk7Zm9yKG49MDtuPHM7KytuKXIodVtuXSx0aGlzLHQpfXJldHVybiEwfSxpLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3JldHVybiBzKHRoaXMsZSx0LCExKX0saS5wcm90b3R5cGUub249aS5wcm90b3R5cGUuYWRkTGlzdGVuZXIsaS5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHModGhpcyxlLHQsITApfSxpLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGwodCksdGhpcy5vbihlLGQodGhpcyxlLHQpKSx0aGlzfSxpLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGwodCksdGhpcy5wcmVwZW5kTGlzdGVuZXIoZSxkKHRoaXMsZSx0KSksdGhpc30saS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8saSxhO2lmKGwodCksdm9pZCAwPT09KHI9dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT0obj1yW2VdKSlyZXR1cm4gdGhpcztpZihuPT09dHx8bi5saXN0ZW5lcj09PXQpMD09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTooZGVsZXRlIHJbZV0sci5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KFwicmVtb3ZlTGlzdGVuZXJcIixlLG4ubGlzdGVuZXJ8fHQpKTtlbHNlIGlmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIG4pe2ZvcihvPS0xLGk9bi5sZW5ndGgtMTtpPj0wO2ktLSlpZihuW2ldPT09dHx8bltpXS5saXN0ZW5lcj09PXQpe2E9bltpXS5saXN0ZW5lcixvPWk7YnJlYWt9aWYobzwwKXJldHVybiB0aGlzOzA9PT1vP24uc2hpZnQoKTpmdW5jdGlvbihlLHQpe2Zvcig7dCsxPGUubGVuZ3RoO3QrKyllW3RdPWVbdCsxXTtlLnBvcCgpfShuLG8pLDE9PT1uLmxlbmd0aCYmKHJbZV09blswXSksdm9pZCAwIT09ci5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KFwicmVtb3ZlTGlzdGVuZXJcIixlLGF8fHQpfXJldHVybiB0aGlzfSxpLnByb3RvdHlwZS5vZmY9aS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIsaS5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3ZhciB0LG4scjtpZih2b2lkIDA9PT0obj10aGlzLl9ldmVudHMpKXJldHVybiB0aGlzO2lmKHZvaWQgMD09PW4ucmVtb3ZlTGlzdGVuZXIpcmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoPyh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKTp2b2lkIDAhPT1uW2VdJiYoMD09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTpkZWxldGUgbltlXSksdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIG8saT1PYmplY3Qua2V5cyhuKTtmb3Iocj0wO3I8aS5sZW5ndGg7KytyKVwicmVtb3ZlTGlzdGVuZXJcIiE9PShvPWlbcl0pJiZ0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhvKTtyZXR1cm4gdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoXCJyZW1vdmVMaXN0ZW5lclwiKSx0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wLHRoaXN9aWYoXCJmdW5jdGlvblwiPT10eXBlb2YodD1uW2VdKSl0aGlzLnJlbW92ZUxpc3RlbmVyKGUsdCk7ZWxzZSBpZih2b2lkIDAhPT10KWZvcihyPXQubGVuZ3RoLTE7cj49MDtyLS0pdGhpcy5yZW1vdmVMaXN0ZW5lcihlLHRbcl0pO3JldHVybiB0aGlzfSxpLnByb3RvdHlwZS5saXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuIGYodGhpcyxlLCEwKX0saS5wcm90b3R5cGUucmF3TGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybiBmKHRoaXMsZSwhMSl9LGkubGlzdGVuZXJDb3VudD1mdW5jdGlvbihlLHQpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGUubGlzdGVuZXJDb3VudD9lLmxpc3RlbmVyQ291bnQodCk6cC5jYWxsKGUsdCl9LGkucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9cCxpLnByb3RvdHlwZS5ldmVudE5hbWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50PjA/dCh0aGlzLl9ldmVudHMpOltdfX0sNTQ0NTY6KGUsdCk9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkRlZmVycmVkUHJvbWlzZT1jbGFzc3tjb25zdHJ1Y3Rvcigpe2NvbnN0IGU9bmV3IFByb21pc2UoKChlLHQpPT57dGhpcy5fcmVzb2x2ZT1lLHRoaXMuX3JlamVjdD10fSkpO3RoaXMuX3Byb21pc2U9ZX1nZXQgcHJvbWlzZSgpe3JldHVybiB0aGlzLl9wcm9taXNlfWdldCByZXNvbHZlKCl7cmV0dXJuIHRoaXMuX3Jlc29sdmV9Z2V0IHJlamVjdCgpe3JldHVybiB0aGlzLl9yZWplY3R9fX0sMTYyNzI6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2NvbnN0IHI9big1NDQ1Nik7YXN5bmMgZnVuY3Rpb24gbyhlLHQpe2xldCBuPTA7Zm9yKGNvbnN0IHIgb2YgZSlhd2FpdCB0KHIsbixlKSxuKyt9YXN5bmMgZnVuY3Rpb24gaShlLHQpe2F3YWl0IFByb21pc2UuYWxsKGUubWFwKHQpKX1mdW5jdGlvbiBhKGUsdCxuKXtjb25zdCBvPW5ldyByLkRlZmVycmVkUHJvbWlzZSxpPWUuYWRkKCgoLi4uZSk9Pnt0KC4uLmUpJiYoaS5yZW1vdmUoKSxvLnJlc29sdmUoKSl9KSk7cmV0dXJuIG4mJm4uY2F0Y2goKGU9PntpLnJlbW92ZSgpLG8ucmVqZWN0KGUpfSkpLGwoby5wcm9taXNlKX1mdW5jdGlvbiBsKGUpe3JldHVybiBlLmNhdGNoKCgoKT0+e30pKSxlfXQuc2VyaWFsRm9yRWFjaD1vLHQuc2VyaWFsTWFwPWFzeW5jIGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1bXTtyZXR1cm4gYXdhaXQgbyhlLChhc3luYyhlLHIsbyk9PntuLnB1c2goYXdhaXQgdChlLHIsbykpfSkpLG59LHQuc2VyaWFsRmlsdGVyPWFzeW5jIGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1bXTtyZXR1cm4gYXdhaXQgbyhlLChhc3luYyhlLHIsbyk9Pnthd2FpdCB0KGUscixvKSYmbi5wdXNoKGUpfSkpLG59LHQucGFyYWxsZWxGb3JFYWNoPWksdC5wYXJhbGxlbE1hcD1hc3luYyBmdW5jdGlvbihlLHQpe2NvbnN0IG49W107cmV0dXJuIGF3YWl0IGkoZSwoYXN5bmMoZSxyLG8pPT57bltyXT1hd2FpdCB0KGUscixvKX0pKSxufSx0LnBhcmFsbGVsRmlsdGVyPWFzeW5jIGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1bXTtyZXR1cm4gYXdhaXQgaShlLChhc3luYyhlLHIsbyk9PntuW3JdPWF3YWl0IHQoZSxyLG8pfSkpLGUuZmlsdGVyKCgoZSx0KT0+blt0XSkpfSx0LndpdGhTdHJpY3RUaW1lb3V0PWZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPW5ldyBQcm9taXNlKCgodCxyKT0+c2V0VGltZW91dCgoKCk9PnIobmV3IEVycm9yKG4pKSksZSkpKTtyZXR1cm4gbChQcm9taXNlLnJhY2UoW3IsdF0pKX0sdC53aXRoVGltZW91dD1mdW5jdGlvbihlLHQpe2NvbnN0IG49bmV3IFByb21pc2UoKHQ9PnNldFRpbWVvdXQoKCgpPT50KFshMCx2b2lkIDBdKSksZSkpKSxyPXQudGhlbigoZT0+WyExLGVdKSk7cmV0dXJuIFByb21pc2UucmFjZShbbixyXSl9LHQudW50aWxUcnVlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCgpP1Byb21pc2UucmVzb2x2ZSgpOmEoZSx0LG4pfSx0LnVudGlsU2lnbmFsPWEsdC5hbGxvd1JlamVjdD1sfSw5NTg4MTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIG4gaW4gZSl0Lmhhc093blByb3BlcnR5KG4pfHwodFtuXT1lW25dKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxyKG4oMTYyNzIpKSxyKG4oNTQ0NTYpKX0sMjkxNDA6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLnNwbGl0KFwiLlwiKSxyPXQuc3BsaXQoXCIuXCIpLG89MDtvPDM7bysrKXt2YXIgaT1OdW1iZXIobltvXSksYT1OdW1iZXIocltvXSk7aWYoaT5hKXJldHVybiAxO2lmKGE+aSlyZXR1cm4tMTtpZighaXNOYU4oaSkmJmlzTmFOKGEpKXJldHVybiAxO2lmKGlzTmFOKGkpJiYhaXNOYU4oYSkpcmV0dXJuLTF9cmV0dXJuIDB9fSwxNzM4NTpmdW5jdGlvbihlLHQpe1widXNlIHN0cmljdFwiO3ZhciBuPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRXZlbnRSb3V0ZXI9dm9pZCAwLHQuRXZlbnRSb3V0ZXI9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5fZW1pdHRlclByb3ZpZGVycz17fSx0aGlzLl9kZXNlcmlhbGl6ZXJzPXt9LHRoaXMuX2RlZmF1bHRFbWl0dGVyPWV9cmVnaXN0ZXJFbWl0dGVyUHJvdmlkZXIoZSx0KXt0aGlzLl9lbWl0dGVyUHJvdmlkZXJzW2VdPXR9cmVnaXN0ZXJEZXNlcmlhbGl6ZXIoZSx0KXt0aGlzLl9kZXNlcmlhbGl6ZXJzW2VdPXR9ZGlzcGF0Y2hFdmVudChlKXtjb25zdHt0eXBlOnQsdGFyZ2V0OnJ9PWUsbz1uKGUsW1widHlwZVwiLFwidGFyZ2V0XCJdKTtsZXQgaTtpZighcil0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGV2ZW50LCBubyB0YXJnZXQgc3BlY2lmaWVkXCIpO2lmKFwiZGVmYXVsdFwiPT09cilpPXRoaXMuX2RlZmF1bHRFbWl0dGVyO2Vsc2V7aWYoIXRoaXMuX2VtaXR0ZXJQcm92aWRlcnNbci50eXBlXSl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGFyZ2V0LCBubyBwcm92aWRlciByZWdpc3RlcmVkIGZvciAnJHtyLnR5cGV9J2ApO2k9dGhpcy5fZW1pdHRlclByb3ZpZGVyc1tyLnR5cGVdKHIuaWQpfWNvbnN0IGE9T2JqZWN0LmFzc2lnbih7dHlwZTp0fSxvKSxsPXRoaXMuX2Rlc2VyaWFsaXplcnNbdF07bD9pLmVtaXQodCxsKGEpKTppLmVtaXQodCxhKX19fSwxOTY1OTooZSx0KT0+e1widXNlIHN0cmljdFwiO3ZhciBuO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQWN0aW9uQm9keUNsaWNrVHlwZT10LkFjdGlvbk5vb3BUeXBlPXQuQWN0aW9uVHJpZ2dlcj12b2lkIDAsKG49dC5BY3Rpb25UcmlnZ2VyfHwodC5BY3Rpb25UcmlnZ2VyPXt9KSkuQ09OVFJPTD1cImNvbnRyb2xcIixuLlNFTEVDVD1cInNlbGVjdFwiLG4uQ0xPU0U9XCJjbG9zZVwiLG4uRVhQSVJFPVwiZXhwaXJlXCIsbi5QUk9HUkFNTUFUSUM9XCJwcm9ncmFtbWF0aWNcIiwodC5BY3Rpb25Ob29wVHlwZXx8KHQuQWN0aW9uTm9vcFR5cGU9e30pKS5FVkVOVF9ESVNNSVNTPVwiZXZlbnRfZGlzbWlzc1wiLCh0LkFjdGlvbkJvZHlDbGlja1R5cGV8fCh0LkFjdGlvbkJvZHlDbGlja1R5cGU9e30pKS5ESVNNSVNTX0VWRU5UPVwiZGlzbWlzc19ldmVudFwifSwxMjA1MjooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZXRFdmVudFJvdXRlcj10LnRyeVNlcnZpY2VEaXNwYXRjaD10LmdldFNlcnZpY2VQcm9taXNlPXQuZXZlbnRFbWl0dGVyPXZvaWQgMDtjb25zdCByPW4oMTcxODcpLG89big5NTg4MSksaT1uKDc2NTk4KSxhPW4oMTczODUpO2xldCBsO3QuZXZlbnRFbWl0dGVyPW5ldyByLkV2ZW50RW1pdHRlcjtjb25zdCBjPW5ldyBvLkRlZmVycmVkUHJvbWlzZTtsZXQgcyx1PSExO2FzeW5jIGZ1bmN0aW9uIGQoKXtpZih3aW5kb3cubmF2aWdhdG9yLmFwcFZlcnNpb24uaW5jbHVkZXMoXCJXaW5kb3dzXCIpKXRyeXtjb25zdCBlPWF3YWl0IGZpbi5TeXN0ZW0uZ2V0UnZtSW5mbygpO3BhcnNlSW50KGUudmVyc2lvbi5zcGxpdChcIi5cIilbMF0pPj02JiYoZmluLlN5c3RlbS5sYXVuY2hNYW5pZmVzdD9maW4uU3lzdGVtLmxhdW5jaE1hbmlmZXN0KFwiZmluczovL3N5c3RlbS1hcHBzL25vdGlmaWNhdGlvbi1jZW50ZXJcIix7bm9VaTohMH0pLmNhdGNoKChlPT57Y29uc29sZS5lcnJvcihcIlVuYWJsZSB0byBsYXVuY2ggdGhlIE5vdGlmaWNhdGlvbiBDZW50ZXIgYXMgYSBzeXN0ZW0gYXBwXCIsZSl9KSk6ZmluLlN5c3RlbS5vcGVuVXJsV2l0aEJyb3dzZXIoXCJmaW5zOi8vc3lzdGVtLWFwcHMvbm90aWZpY2F0aW9uLWNlbnRlclwiKS5jYXRjaCgoKCk9Pnt9KSkpfWNhdGNoKGUpe31lbHNlIGZpbi5TeXN0ZW0ub3BlblVybFdpdGhCcm93c2VyKFwiZmluczovL3N5c3RlbS1hcHBzL25vdGlmaWNhdGlvbi1jZW50ZXJcIil9YXN5bmMgZnVuY3Rpb24gZigpe3ZhciBlO2lmKGF3YWl0IGMucHJvbWlzZSwhbCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIGZpbil7Y29uc3QgZT1cImZpbiBpcyBub3QgZGVmaW5lZC4gVGhlIG9wZW5maW4tbm90aWZpY2F0aW9ucyBtb2R1bGUgaXMgb25seSBpbnRlbmRlZCBmb3IgdXNlIGluIGFuIE9wZW5GaW4gYXBwbGljYXRpb24uXCI7cmV0dXJuIGw9UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGUpKSxsfWZpbi5TeXN0ZW0uZ2V0VmVyc2lvbigpLnRoZW4oKGU9Pntjb25zdCB0PXBhcnNlSW50KGUuc3BsaXQoXCIuXCIpWzJdKTt0PDUzJiZjb25zb2xlLndhcm4oYEFQSSB2ZXJzaW9uICR7dH0gb2YgT3BlbkZpbiB2ZXJzaW9uICR7ZX0gaXMgbGVzcyB0aGFuIDUzLiBQbGVhc2UgdXBncmFkZSB0aGUgcnVudGltZSB2ZXJzaW9uLmApfSkpO2NvbnN0e25hbWU6dCx1dWlkOm59PW51bGwhPT0oZT1maW4ubWUuaWRlbnRpdHkpJiZ2b2lkIDAhPT1lP2U6ZmluLldpbmRvdy5tZTtpZihuPT09aS5TRVJWSUNFX0lERU5USVRZLnV1aWQmJnQ9PT1pLlNFUlZJQ0VfSURFTlRJVFkubmFtZSlsPVByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIlRyeWluZyB0byBjb25uZWN0IHRvIHByb3ZpZGVyIGZyb20gcHJvdmlkZXJcIikpO2Vsc2V7Y29uc3QgZT13aW5kb3cuc2V0VGltZW91dCgoKCk9Pntjb25zb2xlLndhcm4oXCJUYWtpbmcgYSBsb25nIHRpbWUgdG8gY29ubmVjdCB0byBOb3RpZmljYXRpb25zIHNlcnZpY2UuIElzIHRoZSBOb3RpZmljYXRpb25zIHNlcnZpY2UgcnVubmluZz9cIil9KSw1ZTMpO2w9ZmluLkludGVyQXBwbGljYXRpb25CdXMuQ2hhbm5lbC5jb25uZWN0KGkuU0VSVklDRV9DSEFOTkVMLHt3YWl0OiEwLHBheWxvYWQ6e3ZlcnNpb246XCIxLjI1LjBcIn19KS50aGVuKCh0PT57d2luZG93LmNsZWFyVGltZW91dChlKTtjb25zdCBuPXAoKTtyZXR1cm4gdC5yZWdpc3RlcihcIldBUk5cIiwoZT0+Y29uc29sZS53YXJuKGUpKSksdC5yZWdpc3RlcihcImV2ZW50XCIsKGU9PntuLmRpc3BhdGNoRXZlbnQoZSl9KSksdC5zZXREZWZhdWx0QWN0aW9uKCgoKT0+ITEpKSx0Lm9uRGlzY29ubmVjdGlvbigoKCk9Pntjb25zb2xlLndhcm4oXCJEaXNjb25uZWN0ZWQgZnJvbSBOb3RpZmljYXRpb25zIHNlcnZpY2VcIiksdT0hMCxsPW51bGwsZCgpLHNldFRpbWVvdXQoKCgpPT57ZigpfSksMzAwKX0pKSx0fSkpfX1yZXR1cm4gbH1mdW5jdGlvbiBwKCl7cmV0dXJuIHN8fChzPW5ldyBhLkV2ZW50Um91dGVyKHQuZXZlbnRFbWl0dGVyKSksc30hZnVuY3Rpb24oKXt0cnl7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGZpbiYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz8oZCgpLGYoKSxcImxvYWRpbmdcIiE9PWRvY3VtZW50LnJlYWR5U3RhdGU/Yy5yZXNvbHZlKCk6KHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLCgoKT0+e2MucmVzb2x2ZSgpfSkpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsKCgpPT57Yy5yZXNvbHZlKCl9KSkpKTpjb25zb2xlLndhcm4oXCJDb3VsZCBub3QgY29ubmVjdCB0byBub3RpZmljYXRpb25zLCBgZmluYCBpcyBub3QgZGVmaW5lZFwiKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfX0oKSx0LmdldFNlcnZpY2VQcm9taXNlPWYsdC50cnlTZXJ2aWNlRGlzcGF0Y2g9YXN5bmMgZnVuY3Rpb24oZSx0KXtyZXR1cm4oYXdhaXQgZigpKS5kaXNwYXRjaChlLHQpfSx0LmdldEV2ZW50Um91dGVyPXB9LDQ5MDooZSx0KT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSw5NzQ5MDooZSx0KT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRmllbGRUeXBlPXZvaWQgMCx0LkZpZWxkVHlwZT17c3RyaW5nOlwic3RyaW5nXCIsbnVtYmVyOlwibnVtYmVyXCIsYm9vbGVhbjpcImJvb2xlYW5cIn19LDg5MTA6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDk3NDkwKSx0KSxvKG4oNzcxMyksdCl9LDc3MTM6KGUsdCk9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LldpZGdldFR5cGU9dC5Cb29sZWFuV2lkZ2V0VHlwZT10Lk51bWJlcldpZGdldFR5cGU9dC5TdHJpbmdXaWRnZXRUeXBlPXZvaWQgMCx0LlN0cmluZ1dpZGdldFR5cGU9e1RleHQ6XCJUZXh0XCJ9LHQuTnVtYmVyV2lkZ2V0VHlwZT17TnVtYmVyOlwiTnVtYmVyXCJ9LHQuQm9vbGVhbldpZGdldFR5cGU9e1RvZ2dsZTpcIlRvZ2dsZVwiLENoZWNrYm94OlwiQ2hlY2tib3hcIn0sdC5XaWRnZXRUeXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuU3RyaW5nV2lkZ2V0VHlwZSksdC5OdW1iZXJXaWRnZXRUeXBlKSx0LkJvb2xlYW5XaWRnZXRUeXBlKX0sNjE5OTU6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9KSxpPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZyKHQsZSxuKTtyZXR1cm4gbyh0LGUpLHR9LGE9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9LGw9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZXROb3RpZmljYXRpb25zQ291bnQ9dC5oaWRlPXQuc2hvdz10LnRvZ2dsZU5vdGlmaWNhdGlvbkNlbnRlcj10LmNsZWFyQWxsPXQuZ2V0QWxsPXQuY2xlYXI9dC51cGRhdGU9dC5jcmVhdGU9dC5yZW1vdmVFdmVudExpc3RlbmVyPXQuYWRkRXZlbnRMaXN0ZW5lcj10LlZFUlNJT049dC5Ob3RpZmljYXRpb25JbmRpY2F0b3JUeXBlPXQuSW5kaWNhdG9yQ29sb3I9dC5Ob3RpZmljYXRpb25JbmRpY2F0b3I9dC5Ob3RpZmljYXRpb25PcHRpb25zPXQucHJvdmlkZXI9dC5hY3Rpb25zPXZvaWQgMDtjb25zdCBjPW4oMTk2NTkpLHM9bigxMjA1MiksdT1uKDc2NTk4KSxkPWkobigzMDIwNykpO3QucHJvdmlkZXI9ZDtjb25zdCBmPW4oNzI0NzUpLHA9big1MjIxKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIk5vdGlmaWNhdGlvbkluZGljYXRvclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBwLk5vdGlmaWNhdGlvbkluZGljYXRvcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIk5vdGlmaWNhdGlvbkluZGljYXRvclR5cGVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcC5JbmRpY2F0b3JUeXBlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiSW5kaWNhdG9yQ29sb3JcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcC5JbmRpY2F0b3JDb2xvcn19KTtjb25zdCBDPW4oMTI5MDgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiTm90aWZpY2F0aW9uT3B0aW9uc1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBDLk5vdGlmaWNhdGlvbk9wdGlvbnN9fSk7Y29uc3QgaD1pKG4oMTk2NTkpKTt0LmFjdGlvbnM9aCxhKG4oMTk2NTkpLHQpLGEobig0OTApLHQpLGEobig1NTA2MyksdCksYShuKDg5MTApLHQpLGEobig4NzIyMSksdCksYShuKDQ5NzU3KSx0KSxhKG4oNzAwNSksdCksdC5WRVJTSU9OPVwiMS4yNS4wXCI7Y29uc3Qgdj0oMCxzLmdldEV2ZW50Um91dGVyKSgpO2Z1bmN0aW9uIGcoZSl7Y29uc3R7bm90aWZpY2F0aW9uOnR9PWU7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bm90aWZpY2F0aW9uOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZGF0ZTpuZXcgRGF0ZSh0LmRhdGUpLGV4cGlyZXM6bnVsbCE9PXQuZXhwaXJlcz9uZXcgRGF0ZSh0LmV4cGlyZXMpOm51bGx9KX0pfXYucmVnaXN0ZXJEZXNlcmlhbGl6ZXIoXCJub3RpZmljYXRpb24tY3JlYXRlZFwiLChlPT5nKGUpKSksdi5yZWdpc3RlckRlc2VyaWFsaXplcihcIm5vdGlmaWNhdGlvbi10b2FzdC1kaXNtaXNzZWRcIiwoZT0+ZyhlKSkpLHYucmVnaXN0ZXJEZXNlcmlhbGl6ZXIoXCJub3RpZmljYXRpb24tY2xvc2VkXCIsKGU9PmcoZSkpKSx2LnJlZ2lzdGVyRGVzZXJpYWxpemVyKFwibm90aWZpY2F0aW9uLWFjdGlvblwiLChlPT57dmFyIHQ7Y29uc3Qgbj1nKGUpLHtjb250cm9sU291cmNlOnIsY29udHJvbEluZGV4Om99PW4saT1sKG4sW1wiY29udHJvbFNvdXJjZVwiLFwiY29udHJvbEluZGV4XCJdKTtyZXR1cm4gZS50cmlnZ2VyPT09Yy5BY3Rpb25UcmlnZ2VyLkNPTlRST0w/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLHtjb250cm9sOm51bGw9PT0odD1lLm5vdGlmaWNhdGlvbltyXSl8fHZvaWQgMD09PXQ/dm9pZCAwOnRbb119KTppfSkpLHYucmVnaXN0ZXJEZXNlcmlhbGl6ZXIoXCJub3RpZmljYXRpb25zLWNvdW50LWNoYW5nZWRcIiwoZT0+ZSkpLHYucmVnaXN0ZXJEZXNlcmlhbGl6ZXIoXCJub3RpZmljYXRpb24tcmVtaW5kZXItY3JlYXRlZFwiLChlPT57Y29uc3QgdD1nKGUpLHtyZW1pbmRlckRhdGU6bn09dCxyPWwodCxbXCJyZW1pbmRlckRhdGVcIl0pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse3JlbWluZGVyRGF0ZTpuZXcgRGF0ZShuKX0pfSkpLHYucmVnaXN0ZXJEZXNlcmlhbGl6ZXIoXCJub3RpZmljYXRpb24tcmVtaW5kZXItcmVtb3ZlZFwiLChlPT5nKGUpKSksdC5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7KDAsZi52YWxpZGF0ZUVudmlyb25tZW50KSgpLGU9KDAsZi5zYW5pdGl6ZUV2ZW50VHlwZSkoZSksdD0oMCxmLnNhbml0aXplRnVuY3Rpb24pKHQpO2NvbnN0IG49cy5ldmVudEVtaXR0ZXIubGlzdGVuZXJDb3VudChlKTtzLmV2ZW50RW1pdHRlci5hZGRMaXN0ZW5lcihlLHQpLDA9PT1uJiYxPT09cy5ldmVudEVtaXR0ZXIubGlzdGVuZXJDb3VudChlKSYmKDAscy50cnlTZXJ2aWNlRGlzcGF0Y2gpKHUuQVBJVG9waWMuQUREX0VWRU5UX0xJU1RFTkVSLGUpfSx0LnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXsoMCxmLnZhbGlkYXRlRW52aXJvbm1lbnQpKCksZT0oMCxmLnNhbml0aXplRXZlbnRUeXBlKShlKSx0PSgwLGYuc2FuaXRpemVGdW5jdGlvbikodCk7Y29uc3Qgbj1zLmV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50KGUpO3MuZXZlbnRFbWl0dGVyLnJlbW92ZUxpc3RlbmVyKGUsdCksMT09PW4mJjA9PT1zLmV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50KGUpJiYoMCxzLnRyeVNlcnZpY2VEaXNwYXRjaCkodS5BUElUb3BpYy5SRU1PVkVfRVZFTlRfTElTVEVORVIsZSl9LHQuY3JlYXRlPWFzeW5jIGZ1bmN0aW9uKGUsdCl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGV8fG51bGw9PT1lKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGNyZWF0ZTogYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QgYW5kIG11c3Qgbm90IGJlIG51bGxcIik7aWYodm9pZCAwIT09ZS5kYXRlJiYhKGUuZGF0ZSBpbnN0YW5jZW9mIERhdGUpKXRocm93IG5ldyBFcnJvcignSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gY3JlYXRlOiBcImRhdGVcIiBtdXN0IGJlIGEgdmFsaWQgRGF0ZSBvYmplY3QnKTtpZih2b2lkIDAhPT1lLmV4cGlyZXMmJm51bGwhPT1lLmV4cGlyZXMmJiEoZS5leHBpcmVzIGluc3RhbmNlb2YgRGF0ZSkpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBjcmVhdGU6IFwiZXhwaXJlc1wiIG11c3QgYmUgbnVsbCBvciBhIHZhbGlkIERhdGUgb2JqZWN0Jyk7aWYodCYmdC5yZW1pbmRlckRhdGUpe2lmKCExPT09ZS5hbGxvd1JlbWluZGVyKXRocm93IG5ldyBFcnJvcignWW91IG11c3Qgbm90IHNwZWNpZnkgYSByZW1pbmRlciBkYXRlIGZvciBhIG5vdGlmaWNhdGlvbiB3aXRoIFwiYWxsb3dSZW1pbmRlclwiIG9wdGlvbiBzZXQgdG8gZmFsc2UuJyk7aWYoISh0LnJlbWluZGVyRGF0ZSBpbnN0YW5jZW9mIERhdGUpKXRocm93IG5ldyBFcnJvcignSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gcmVtaW5kZXIgT3B0aW9uczogXCJkYXRlXCIgbXVzdCBhIHZhbGlkIERhdGUgb2JqZWN0Jyk7aWYoZS5leHBpcmVzJiZlLmV4cGlyZXMuZ2V0VGltZSgpPHQucmVtaW5kZXJEYXRlLmdldFRpbWUoKSl0aHJvdyBuZXcgRXJyb3IoXCJFeHBpcmF0aW9uIGRhdGUgbXVzdCBub3QgYmUgZWFybGllciB0aGFuIHJlbWluZGVyIGRhdGUuXCIpfXZvaWQgMCE9PWUuY2F0ZWdvcnkmJm51bGwhPT1lLmNhdGVnb3J5fHwoZS5jYXRlZ29yeT1cImRlZmF1bHRcIik7Y29uc3Qgbj1hd2FpdCgwLHMudHJ5U2VydmljZURpc3BhdGNoKSh1LkFQSVRvcGljLkNSRUFURV9OT1RJRklDQVRJT04sT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtkYXRlOmUuZGF0ZSYmZS5kYXRlLnZhbHVlT2YoKSxleHBpcmVzOmUuZXhwaXJlcyYmZS5leHBpcmVzLnZhbHVlT2YoKSxyZW1pbmRlcjoobnVsbD09dD92b2lkIDA6dC5yZW1pbmRlckRhdGUpJiZ0LnJlbWluZGVyRGF0ZS52YWx1ZU9mKCl9KSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7ZGF0ZTpuZXcgRGF0ZShuLmRhdGUpLGV4cGlyZXM6bnVsbCE9PW4uZXhwaXJlcz9uZXcgRGF0ZShuLmV4cGlyZXMpOm51bGx9KX0sdC51cGRhdGU9YXN5bmMgZnVuY3Rpb24oZSl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGV8fG51bGw9PT1lKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGNyZWF0ZTogYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QgYW5kIG11c3Qgbm90IGJlIG51bGxcIik7aWYoIWUuaWQpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBjcmVhdGU6IFwiaWRcIiBtdXN0IGJlIElkIG9mIHByZXZpb3VzbHkgY3JlYXRlZCBOb3RpZmljYXRpb24nKTtjb25zdCB0PWF3YWl0KDAscy50cnlTZXJ2aWNlRGlzcGF0Y2gpKHUuQVBJVG9waWMuVVBEQVRFX05PVElGSUNBVElPTixPYmplY3QuYXNzaWduKHt9LGUpKTtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSx0KX0sdC5jbGVhcj1hc3luYyBmdW5jdGlvbihlKXtyZXR1cm4oMCxzLnRyeVNlcnZpY2VEaXNwYXRjaCkodS5BUElUb3BpYy5DTEVBUl9OT1RJRklDQVRJT04se2lkOmV9KX0sdC5nZXRBbGw9YXN5bmMgZnVuY3Rpb24oKXtyZXR1cm4oYXdhaXQoMCxzLnRyeVNlcnZpY2VEaXNwYXRjaCkodS5BUElUb3BpYy5HRVRfQVBQX05PVElGSUNBVElPTlMsdm9pZCAwKSkubWFwKChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2luZGljYXRvcjplLmluZGljYXRvcnx8bnVsbCxkYXRlOm5ldyBEYXRlKGUuZGF0ZSksZXhwaXJlczpudWxsIT09ZS5leHBpcmVzP25ldyBEYXRlKGUuZXhwaXJlcyk6bnVsbH0pKSl9LHQuY2xlYXJBbGw9YXN5bmMgZnVuY3Rpb24oKXtyZXR1cm4oMCxzLnRyeVNlcnZpY2VEaXNwYXRjaCkodS5BUElUb3BpYy5DTEVBUl9BUFBfTk9USUZJQ0FUSU9OUyx2b2lkIDApfSx0LnRvZ2dsZU5vdGlmaWNhdGlvbkNlbnRlcj1hc3luYyBmdW5jdGlvbigpe3JldHVybigwLHMudHJ5U2VydmljZURpc3BhdGNoKSh1LkFQSVRvcGljLlRPR0dMRV9OT1RJRklDQVRJT05fQ0VOVEVSLHZvaWQgMCl9LHQuc2hvdz1hc3luYyBmdW5jdGlvbihlKXtyZXR1cm4oMCxzLnRyeVNlcnZpY2VEaXNwYXRjaCkodS5BUElUb3BpYy5TSE9XX05PVElGSUNBVElPTl9DRU5URVIsZSl9LHQuaGlkZT1hc3luYyBmdW5jdGlvbigpe3JldHVybigwLHMudHJ5U2VydmljZURpc3BhdGNoKSh1LkFQSVRvcGljLkhJREVfTk9USUZJQ0FUSU9OX0NFTlRFUix2b2lkIDApfSx0LmdldE5vdGlmaWNhdGlvbnNDb3VudD1hc3luYyBmdW5jdGlvbigpe3JldHVybigwLHMudHJ5U2VydmljZURpc3BhdGNoKSh1LkFQSVRvcGljLkdFVF9OT1RJRklDQVRJT05TX0NPVU5ULHZvaWQgMCl9fSw1MjIxOihlLHQpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG4scjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkluZGljYXRvckNvbG9yPXQuSW5kaWNhdG9yVHlwZT12b2lkIDAsKHI9dC5JbmRpY2F0b3JUeXBlfHwodC5JbmRpY2F0b3JUeXBlPXt9KSkuRkFJTFVSRT1cImZhaWx1cmVcIixyLldBUk5JTkc9XCJ3YXJuaW5nXCIsci5TVUNDRVNTPVwic3VjY2Vzc1wiLChuPXQuSW5kaWNhdG9yQ29sb3J8fCh0LkluZGljYXRvckNvbG9yPXt9KSkuUkVEPVwicmVkXCIsbi5HUkVFTj1cImdyZWVuXCIsbi5ZRUxMT1c9XCJ5ZWxsb3dcIixuLkJMVUU9XCJibHVlXCIsbi5QVVJQTEU9XCJwdXJwbGVcIixuLkdSQVk9XCJncmF5XCJ9LDc2NTk4OihlLHQpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG47T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5BUElUb3BpYz10LlNFUlZJQ0VfQ0hBTk5FTD10LlNFUlZJQ0VfSURFTlRJVFk9dm9pZCAwLHQuU0VSVklDRV9JREVOVElUWT17dXVpZDpcIm5vdGlmaWNhdGlvbnMtc2VydmljZVwiLG5hbWU6XCJub3RpZmljYXRpb25zLXNlcnZpY2VcIn0sdC5TRVJWSUNFX0NIQU5ORUw9XCJvZi1ub3RpZmljYXRpb25zLXNlcnZpY2UtdjFcIiwobj10LkFQSVRvcGljfHwodC5BUElUb3BpYz17fSkpLkNSRUFURV9OT1RJRklDQVRJT049XCJjcmVhdGUtbm90aWZpY2F0aW9uXCIsbi5VUERBVEVfTk9USUZJQ0FUSU9OPVwidXBkYXRlLW5vdGlmaWNhdGlvblwiLG4uQ0xFQVJfTk9USUZJQ0FUSU9OPVwiY2xlYXItbm90aWZpY2F0aW9uXCIsbi5HRVRfQVBQX05PVElGSUNBVElPTlM9XCJmZXRjaC1hcHAtbm90aWZpY2F0aW9uc1wiLG4uQ0xFQVJfQVBQX05PVElGSUNBVElPTlM9XCJjbGVhci1hcHAtbm90aWZpY2F0aW9uc1wiLG4uVE9HR0xFX05PVElGSUNBVElPTl9DRU5URVI9XCJ0b2dnbGUtbm90aWZpY2F0aW9uLWNlbnRlclwiLG4uQUREX0VWRU5UX0xJU1RFTkVSPVwiYWRkLWV2ZW50LWxpc3RlbmVyXCIsbi5SRU1PVkVfRVZFTlRfTElTVEVORVI9XCJyZW1vdmUtZXZlbnQtbGlzdGVuZXJcIixuLkdFVF9QUk9WSURFUl9TVEFUVVM9XCJnZXQtcHJvdmlkZXItc3RhdHVzXCIsbi5HRVRfTk9USUZJQ0FUSU9OU19DT1VOVD1cImdldC1ub3RpZmljYXRpb25zLWNvdW50XCIsbi5SRUdJU1RFUl9QTEFURk9STT1cInJlZ2lzdGVyLW5vdGlmaWNhdGlvbnMtcGxhdGZvcm1cIixuLkRFUkVHSVNURVJfUExBVEZPUk09XCJkZXJlZ2lzdGVyLW5vdGlmaWNhdGlvbnMtcGxhdGZvcm1cIixuLlNIT1dfTk9USUZJQ0FUSU9OX0NFTlRFUj1cInNob3ctbm90aWZpY2F0aW9uLWNlbnRlclwiLG4uSElERV9OT1RJRklDQVRJT05fQ0VOVEVSPVwiaGlkZS1ub3RpZmljYXRpb24tY2VudGVyXCJ9LDcwMDU6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVyZWdpc3RlclBsYXRmb3JtPXQucmVnaXN0ZXJQbGF0Zm9ybT12b2lkIDA7Y29uc3Qgcj1uKDEyMDUyKSxvPW4oNzY1OTgpO3QucmVnaXN0ZXJQbGF0Zm9ybT1hc3luYyBmdW5jdGlvbihlKXtpZihcIm9iamVjdFwiIT10eXBlb2YgZXx8bnVsbD09PWUpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gcmVnaXN0ZXJQbGF0Zm9ybTogYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QgYW5kIG11c3Qgbm90IGJlIG51bGxcIik7aWYoIWUuaWQpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byByZWdpc3RlclBsYXRmb3JtOiBcImlkXCIgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcgaW4gcGxhdGZvcm0gaW5mby4nKTtjb25zdCB0PWF3YWl0KDAsci50cnlTZXJ2aWNlRGlzcGF0Y2gpKG8uQVBJVG9waWMuUkVHSVNURVJfUExBVEZPUk0sT2JqZWN0LmFzc2lnbih7fSxlKSk7cmV0dXJue25vdGlmaWNhdGlvbnNWZXJzaW9uOnQ/dC5ub3RpZmljYXRpb25zVmVyc2lvbjpcInVua25vd25cIixjbGllbnRBUElWZXJzaW9uOlwiMS4yNS4wXCJ9fSx0LmRlcmVnaXN0ZXJQbGF0Zm9ybT1hc3luYyBmdW5jdGlvbihlKXtpZighZSl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGRlcmVnaXN0ZXJQbGF0Zm9ybTogXCJpZFwiIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLicpO3JldHVybigwLHIudHJ5U2VydmljZURpc3BhdGNoKShvLkFQSVRvcGljLkRFUkVHSVNURVJfUExBVEZPUk0se2lkOmV9KX19LDMwMjA3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmlzQ29ubmVjdGVkVG9BdExlYXN0PXQuZ2V0U3RhdHVzPXZvaWQgMDtjb25zdCBvPXIobigyOTE0MCkpLGk9big5NTg4MSksYT1uKDEyMDUyKSxsPW4oNzY1OTgpO2Z1bmN0aW9uIGMoKXtyZXR1cm4oMCxpLndpdGhTdHJpY3RUaW1lb3V0KSg1MDAsKDAsYS50cnlTZXJ2aWNlRGlzcGF0Y2gpKGwuQVBJVG9waWMuR0VUX1BST1ZJREVSX1NUQVRVUyx2b2lkIDApLFwiXCIpLmNhdGNoKCgoKT0+KHtjb25uZWN0ZWQ6ITEsdmVyc2lvbjpudWxsLHRlbXBsYXRlQVBJVmVyc2lvbjpudWxsfSkpKX10LmdldFN0YXR1cz1jLHQuaXNDb25uZWN0ZWRUb0F0TGVhc3Q9YXN5bmMgZnVuY3Rpb24oZSl7Y29uc3QgdD1hd2FpdCBjKCk7aWYodC5jb25uZWN0ZWQmJm51bGwhPT10LnZlcnNpb24pe2NvbnN0IG49KDAsby5kZWZhdWx0KSh0LnZlcnNpb24sZSk7aWYoMD09PW58fDE9PT1uKXJldHVybiEwfXJldHVybiExfX0sNTUwNjM6KGUsdCk9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sODcyMjE6KGUsdCk9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sMzA2MDA6KGUsdCk9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sMjMzNzE6KGUsdCk9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sNDk3NTc6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDMwNjAwKSx0KSxvKG4oMjMzNzEpLHQpLG8obigxMjkwOCksdCksbyhuKDQ4ODc3KSx0KX0sMTI5MDg6KGUsdCk9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRlbXBsYXRlRnJhZ21lbnROYW1lcz10LlByZXNlbnRhdGlvblRlbXBsYXRlRnJhZ21lbnROYW1lcz10LkNvbnRhaW5lclRlbXBsYXRlRnJhZ21lbnROYW1lcz10LlRlbXBsYXRlTmFtZXM9dm9pZCAwLHQuVGVtcGxhdGVOYW1lcz17bWFya2Rvd246XCJtYXJrZG93blwiLGxpc3Q6XCJsaXN0XCIsY3VzdG9tOlwiY3VzdG9tXCJ9LHQuQ29udGFpbmVyVGVtcGxhdGVGcmFnbWVudE5hbWVzPXtjb250YWluZXI6XCJjb250YWluZXJcIn0sdC5QcmVzZW50YXRpb25UZW1wbGF0ZUZyYWdtZW50TmFtZXM9e3RleHQ6XCJ0ZXh0XCIsaW1hZ2U6XCJpbWFnZVwiLGxpc3Q6XCJsaXN0XCIsYWN0aW9uYWJsZVRleHQ6XCJhY3Rpb25hYmxlVGV4dFwifSx0LlRlbXBsYXRlRnJhZ21lbnROYW1lcz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5Db250YWluZXJUZW1wbGF0ZUZyYWdtZW50TmFtZXMpLHQuUHJlc2VudGF0aW9uVGVtcGxhdGVGcmFnbWVudE5hbWVzKX0sNDg4Nzc6KGUsdCk9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sNzI0NzU6KGUsdCk9PntcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKGUsdCl7bGV0IG47dHJ5e249SlNPTi5zdHJpbmdpZnkoZSl9Y2F0Y2goZSl7bj10fXJldHVybiBufU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuc2FmZVN0cmluZ2lmeT10LnZhbGlkYXRlRW52aXJvbm1lbnQ9dC5zYW5pdGl6ZUV2ZW50VHlwZT10LnNhbml0aXplRnVuY3Rpb249dm9pZCAwLHQuc2FuaXRpemVGdW5jdGlvbj1mdW5jdGlvbihlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhcmd1bWVudCBwYXNzZWQ6ICR7bihlLFwiVGhlIHByb3ZpZGVkIHZhbHVlXCIpfSBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbmApO3JldHVybiBlfSx0LnNhbml0aXplRXZlbnRUeXBlPWZ1bmN0aW9uKGUpe2lmKFwibm90aWZpY2F0aW9uLWFjdGlvblwiPT09ZXx8XCJub3RpZmljYXRpb24tY3JlYXRlZFwiPT09ZXx8XCJub3RpZmljYXRpb24tdG9hc3QtZGlzbWlzc2VkXCI9PT1lfHxcIm5vdGlmaWNhdGlvbi1jbG9zZWRcIj09PWV8fFwibm90aWZpY2F0aW9ucy1jb3VudC1jaGFuZ2VkXCI9PT1lfHxcIm5vdGlmaWNhdGlvbi1mb3JtLXN1Ym1pdHRlZFwiPT09ZXx8XCJub3RpZmljYXRpb24tcmVtaW5kZXItY3JlYXRlZFwiPT09ZXx8XCJub3RpZmljYXRpb24tcmVtaW5kZXItcmVtb3ZlZFwiPT09ZSlyZXR1cm4gZTt0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXJndW1lbnQgcGFzc2VkOiAke24oZSxcIlRoZSBwcm92aWRlZCBldmVudCB0eXBlXCIpfSBpcyBub3QgYSB2YWxpZCBOb3RpZmljYXRpb25zIGV2ZW50IHR5cGVgKX0sdC52YWxpZGF0ZUVudmlyb25tZW50PWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIGZpbil0aHJvdyBuZXcgRXJyb3IoXCJmaW4gaXMgbm90IGRlZmluZWQuIFRoZSBvcGVuZmluLW5vdGlmaWNhdGlvbnMgbW9kdWxlIGlzIG9ubHkgaW50ZW5kZWQgZm9yIHVzZSBpbiBhbiBPcGVuRmluIGFwcGxpY2F0aW9uLlwiKX0sdC5zYWZlU3RyaW5naWZ5PW59fSx0PXt9LGZ1bmN0aW9uIG4ocil7dmFyIG89dFtyXTtpZih2b2lkIDAhPT1vKXJldHVybiBvLmV4cG9ydHM7dmFyIGk9dFtyXT17ZXhwb3J0czp7fX07cmV0dXJuIGVbcl0uY2FsbChpLmV4cG9ydHMsaSxpLmV4cG9ydHMsbiksaS5leHBvcnRzfSg2MTk5NSk7dmFyIGUsdH0sZS5leHBvcnRzPXQoKX0sMzA0OihlLHQsbik9Pnt2YXIgcj17ODU5NDooZSx0LG4pPT57bi5kKHQse1o6KCk9Pm99KTt2YXIgcj0vXigoY2hpbGRyZW58ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUx8a2V5fHJlZnxhdXRvRm9jdXN8ZGVmYXVsdFZhbHVlfGRlZmF1bHRDaGVja2VkfGlubmVySFRNTHxzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmd8c3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nfHZhbHVlTGlua3xhY2NlcHR8YWNjZXB0Q2hhcnNldHxhY2Nlc3NLZXl8YWN0aW9ufGFsbG93fGFsbG93VXNlck1lZGlhfGFsbG93UGF5bWVudFJlcXVlc3R8YWxsb3dGdWxsU2NyZWVufGFsbG93VHJhbnNwYXJlbmN5fGFsdHxhc3luY3xhdXRvQ29tcGxldGV8YXV0b1BsYXl8Y2FwdHVyZXxjZWxsUGFkZGluZ3xjZWxsU3BhY2luZ3xjaGFsbGVuZ2V8Y2hhclNldHxjaGVja2VkfGNpdGV8Y2xhc3NJRHxjbGFzc05hbWV8Y29sc3xjb2xTcGFufGNvbnRlbnR8Y29udGVudEVkaXRhYmxlfGNvbnRleHRNZW51fGNvbnRyb2xzfGNvbnRyb2xzTGlzdHxjb29yZHN8Y3Jvc3NPcmlnaW58ZGF0YXxkYXRlVGltZXxkZWNvZGluZ3xkZWZhdWx0fGRlZmVyfGRpcnxkaXNhYmxlZHxkaXNhYmxlUGljdHVyZUluUGljdHVyZXxkb3dubG9hZHxkcmFnZ2FibGV8ZW5jVHlwZXxmb3JtfGZvcm1BY3Rpb258Zm9ybUVuY1R5cGV8Zm9ybU1ldGhvZHxmb3JtTm9WYWxpZGF0ZXxmb3JtVGFyZ2V0fGZyYW1lQm9yZGVyfGhlYWRlcnN8aGVpZ2h0fGhpZGRlbnxoaWdofGhyZWZ8aHJlZkxhbmd8aHRtbEZvcnxodHRwRXF1aXZ8aWR8aW5wdXRNb2RlfGludGVncml0eXxpc3xrZXlQYXJhbXN8a2V5VHlwZXxraW5kfGxhYmVsfGxhbmd8bGlzdHxsb2FkaW5nfGxvb3B8bG93fG1hcmdpbkhlaWdodHxtYXJnaW5XaWR0aHxtYXh8bWF4TGVuZ3RofG1lZGlhfG1lZGlhR3JvdXB8bWV0aG9kfG1pbnxtaW5MZW5ndGh8bXVsdGlwbGV8bXV0ZWR8bmFtZXxub25jZXxub1ZhbGlkYXRlfG9wZW58b3B0aW11bXxwYXR0ZXJufHBsYWNlaG9sZGVyfHBsYXlzSW5saW5lfHBvc3RlcnxwcmVsb2FkfHByb2ZpbGV8cmFkaW9Hcm91cHxyZWFkT25seXxyZWZlcnJlclBvbGljeXxyZWx8cmVxdWlyZWR8cmV2ZXJzZWR8cm9sZXxyb3dzfHJvd1NwYW58c2FuZGJveHxzY29wZXxzY29wZWR8c2Nyb2xsaW5nfHNlYW1sZXNzfHNlbGVjdGVkfHNoYXBlfHNpemV8c2l6ZXN8c2xvdHxzcGFufHNwZWxsQ2hlY2t8c3JjfHNyY0RvY3xzcmNMYW5nfHNyY1NldHxzdGFydHxzdGVwfHN0eWxlfHN1bW1hcnl8dGFiSW5kZXh8dGFyZ2V0fHRpdGxlfHR5cGV8dXNlTWFwfHZhbHVlfHdpZHRofHdtb2RlfHdyYXB8YWJvdXR8ZGF0YXR5cGV8aW5saXN0fHByZWZpeHxwcm9wZXJ0eXxyZXNvdXJjZXx0eXBlb2Z8dm9jYWJ8YXV0b0NhcGl0YWxpemV8YXV0b0NvcnJlY3R8YXV0b1NhdmV8Y29sb3J8aW5lcnR8aXRlbVByb3B8aXRlbVNjb3BlfGl0ZW1UeXBlfGl0ZW1JRHxpdGVtUmVmfG9ufHJlc3VsdHN8c2VjdXJpdHl8dW5zZWxlY3RhYmxlfGFjY2VudEhlaWdodHxhY2N1bXVsYXRlfGFkZGl0aXZlfGFsaWdubWVudEJhc2VsaW5lfGFsbG93UmVvcmRlcnxhbHBoYWJldGljfGFtcGxpdHVkZXxhcmFiaWNGb3JtfGFzY2VudHxhdHRyaWJ1dGVOYW1lfGF0dHJpYnV0ZVR5cGV8YXV0b1JldmVyc2V8YXppbXV0aHxiYXNlRnJlcXVlbmN5fGJhc2VsaW5lU2hpZnR8YmFzZVByb2ZpbGV8YmJveHxiZWdpbnxiaWFzfGJ5fGNhbGNNb2RlfGNhcEhlaWdodHxjbGlwfGNsaXBQYXRoVW5pdHN8Y2xpcFBhdGh8Y2xpcFJ1bGV8Y29sb3JJbnRlcnBvbGF0aW9ufGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnN8Y29sb3JQcm9maWxlfGNvbG9yUmVuZGVyaW5nfGNvbnRlbnRTY3JpcHRUeXBlfGNvbnRlbnRTdHlsZVR5cGV8Y3Vyc29yfGN4fGN5fGR8ZGVjZWxlcmF0ZXxkZXNjZW50fGRpZmZ1c2VDb25zdGFudHxkaXJlY3Rpb258ZGlzcGxheXxkaXZpc29yfGRvbWluYW50QmFzZWxpbmV8ZHVyfGR4fGR5fGVkZ2VNb2RlfGVsZXZhdGlvbnxlbmFibGVCYWNrZ3JvdW5kfGVuZHxleHBvbmVudHxleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkfGZpbGx8ZmlsbE9wYWNpdHl8ZmlsbFJ1bGV8ZmlsdGVyfGZpbHRlclJlc3xmaWx0ZXJVbml0c3xmbG9vZENvbG9yfGZsb29kT3BhY2l0eXxmb2N1c2FibGV8Zm9udEZhbWlseXxmb250U2l6ZXxmb250U2l6ZUFkanVzdHxmb250U3RyZXRjaHxmb250U3R5bGV8Zm9udFZhcmlhbnR8Zm9udFdlaWdodHxmb3JtYXR8ZnJvbXxmcnxmeHxmeXxnMXxnMnxnbHlwaE5hbWV8Z2x5cGhPcmllbnRhdGlvbkhvcml6b250YWx8Z2x5cGhPcmllbnRhdGlvblZlcnRpY2FsfGdseXBoUmVmfGdyYWRpZW50VHJhbnNmb3JtfGdyYWRpZW50VW5pdHN8aGFuZ2luZ3xob3JpekFkdlh8aG9yaXpPcmlnaW5YfGlkZW9ncmFwaGljfGltYWdlUmVuZGVyaW5nfGlufGluMnxpbnRlcmNlcHR8a3xrMXxrMnxrM3xrNHxrZXJuZWxNYXRyaXh8a2VybmVsVW5pdExlbmd0aHxrZXJuaW5nfGtleVBvaW50c3xrZXlTcGxpbmVzfGtleVRpbWVzfGxlbmd0aEFkanVzdHxsZXR0ZXJTcGFjaW5nfGxpZ2h0aW5nQ29sb3J8bGltaXRpbmdDb25lQW5nbGV8bG9jYWx8bWFya2VyRW5kfG1hcmtlck1pZHxtYXJrZXJTdGFydHxtYXJrZXJIZWlnaHR8bWFya2VyVW5pdHN8bWFya2VyV2lkdGh8bWFza3xtYXNrQ29udGVudFVuaXRzfG1hc2tVbml0c3xtYXRoZW1hdGljYWx8bW9kZXxudW1PY3RhdmVzfG9mZnNldHxvcGFjaXR5fG9wZXJhdG9yfG9yZGVyfG9yaWVudHxvcmllbnRhdGlvbnxvcmlnaW58b3ZlcmZsb3d8b3ZlcmxpbmVQb3NpdGlvbnxvdmVybGluZVRoaWNrbmVzc3xwYW5vc2UxfHBhaW50T3JkZXJ8cGF0aExlbmd0aHxwYXR0ZXJuQ29udGVudFVuaXRzfHBhdHRlcm5UcmFuc2Zvcm18cGF0dGVyblVuaXRzfHBvaW50ZXJFdmVudHN8cG9pbnRzfHBvaW50c0F0WHxwb2ludHNBdFl8cG9pbnRzQXRafHByZXNlcnZlQWxwaGF8cHJlc2VydmVBc3BlY3RSYXRpb3xwcmltaXRpdmVVbml0c3xyfHJhZGl1c3xyZWZYfHJlZll8cmVuZGVyaW5nSW50ZW50fHJlcGVhdENvdW50fHJlcGVhdER1cnxyZXF1aXJlZEV4dGVuc2lvbnN8cmVxdWlyZWRGZWF0dXJlc3xyZXN0YXJ0fHJlc3VsdHxyb3RhdGV8cnh8cnl8c2NhbGV8c2VlZHxzaGFwZVJlbmRlcmluZ3xzbG9wZXxzcGFjaW5nfHNwZWN1bGFyQ29uc3RhbnR8c3BlY3VsYXJFeHBvbmVudHxzcGVlZHxzcHJlYWRNZXRob2R8c3RhcnRPZmZzZXR8c3RkRGV2aWF0aW9ufHN0ZW1ofHN0ZW12fHN0aXRjaFRpbGVzfHN0b3BDb2xvcnxzdG9wT3BhY2l0eXxzdHJpa2V0aHJvdWdoUG9zaXRpb258c3RyaWtldGhyb3VnaFRoaWNrbmVzc3xzdHJpbmd8c3Ryb2tlfHN0cm9rZURhc2hhcnJheXxzdHJva2VEYXNob2Zmc2V0fHN0cm9rZUxpbmVjYXB8c3Ryb2tlTGluZWpvaW58c3Ryb2tlTWl0ZXJsaW1pdHxzdHJva2VPcGFjaXR5fHN0cm9rZVdpZHRofHN1cmZhY2VTY2FsZXxzeXN0ZW1MYW5ndWFnZXx0YWJsZVZhbHVlc3x0YXJnZXRYfHRhcmdldFl8dGV4dEFuY2hvcnx0ZXh0RGVjb3JhdGlvbnx0ZXh0UmVuZGVyaW5nfHRleHRMZW5ndGh8dG98dHJhbnNmb3JtfHUxfHUyfHVuZGVybGluZVBvc2l0aW9ufHVuZGVybGluZVRoaWNrbmVzc3x1bmljb2RlfHVuaWNvZGVCaWRpfHVuaWNvZGVSYW5nZXx1bml0c1BlckVtfHZBbHBoYWJldGljfHZIYW5naW5nfHZJZGVvZ3JhcGhpY3x2TWF0aGVtYXRpY2FsfHZhbHVlc3x2ZWN0b3JFZmZlY3R8dmVyc2lvbnx2ZXJ0QWR2WXx2ZXJ0T3JpZ2luWHx2ZXJ0T3JpZ2luWXx2aWV3Qm94fHZpZXdUYXJnZXR8dmlzaWJpbGl0eXx3aWR0aHN8d29yZFNwYWNpbmd8d3JpdGluZ01vZGV8eHx4SGVpZ2h0fHgxfHgyfHhDaGFubmVsU2VsZWN0b3J8eGxpbmtBY3R1YXRlfHhsaW5rQXJjcm9sZXx4bGlua0hyZWZ8eGxpbmtSb2xlfHhsaW5rU2hvd3x4bGlua1RpdGxlfHhsaW5rVHlwZXx4bWxCYXNlfHhtbG5zfHhtbG5zWGxpbmt8eG1sTGFuZ3x4bWxTcGFjZXx5fHkxfHkyfHlDaGFubmVsU2VsZWN0b3J8enx6b29tQW5kUGFufGZvcnxjbGFzc3xhdXRvZm9jdXMpfCgoW0RkXVtBYV1bVHRdW0FhXXxbQWFdW1JyXVtJaV1bQWFdfHgpLS4qKSkkLztjb25zdCBvPShpPXt9LGZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1pW2VdJiYoaVtlXT0odD1lLHIudGVzdCh0KXx8MTExPT09dC5jaGFyQ29kZUF0KDApJiYxMTA9PT10LmNoYXJDb2RlQXQoMSkmJnQuY2hhckNvZGVBdCgyKTw5MSkpLGlbZV07dmFyIHR9KTt2YXIgaX0sMTUyMTooZSx0LG4pPT57bi5yKHQpLG4uZCh0LHtBY3Rpdml0eUxvZ0ljb246KCk9PmksQWxpZ25CYXNlbGluZUljb246KCk9PmEsQWxpZ25Cb3R0b21JY29uOigpPT5sLEFsaWduQ2VudGVySG9yaXpvbnRhbGx5SWNvbjooKT0+YyxBbGlnbkNlbnRlclZlcnRpY2FsbHlJY29uOigpPT5zLEFsaWduTGVmdEljb246KCk9PnUsQWxpZ25SaWdodEljb246KCk9PmQsQWxpZ25Ub3BJY29uOigpPT5mLEFsbFNpZGVzSWNvbjooKT0+cCxBbmdsZUljb246KCk9PkMsQXJjaGl2ZUljb246KCk9PmgsQXJyb3dCb3R0b21MZWZ0SWNvbjooKT0+dixBcnJvd0JvdHRvbVJpZ2h0SWNvbjooKT0+ZyxBcnJvd0Rvd25JY29uOigpPT5tLEFycm93TGVmdEljb246KCk9PncsQXJyb3dSaWdodEljb246KCk9PnksQXJyb3dUb3BMZWZ0SWNvbjooKT0+YixBcnJvd1RvcFJpZ2h0SWNvbjooKT0+eCxBcnJvd1VwSWNvbjooKT0+TyxBc3BlY3RSYXRpb0ljb246KCk9PkwsQXZhdGFySWNvbjooKT0+XyxCYWNrcGFja0ljb246KCk9Pk0sQmFkZ2VJY29uOigpPT5qLEJhckNoYXJ0SWNvbjooKT0+RSxCZWxsSWNvbjooKT0+UyxCbGVuZGluZ01vZGVJY29uOigpPT5QLEJvb2ttYXJrSWNvbjooKT0+SCxCb3JkZXJBbGxJY29uOigpPT5rLEJvcmRlckJvdHRvbUljb246KCk9PlYsQm9yZGVyRGFzaGVkSWNvbjooKT0+UixCb3JkZXJEb3R0ZWRJY29uOigpPT5JLEJvcmRlckxlZnRJY29uOigpPT5aLEJvcmRlck5vbmVJY29uOigpPT5ULEJvcmRlclJpZ2h0SWNvbjooKT0+QSxCb3JkZXJTb2xpZEljb246KCk9PkQsQm9yZGVyU3BsaXRJY29uOigpPT5CLEJvcmRlclN0eWxlSWNvbjooKT0+JCxCb3JkZXJUb3BJY29uOigpPT5GLEJveEljb246KCk9Pk4sQm94TW9kZWxJY29uOigpPT56LEJ1dHRvbkljb246KCk9PlcsQ2FsZW5kYXJJY29uOigpPT5HLENhbWVyYUljb246KCk9PlUsQ2FyZFN0YWNrSWNvbjooKT0+cSxDYXJkU3RhY2tNaW51c0ljb246KCk9PlksQ2FyZFN0YWNrUGx1c0ljb246KCk9PkssQ2FyZXREb3duSWNvbjooKT0+WCxDYXJldExlZnRJY29uOigpPT5RLENhcmV0UmlnaHRJY29uOigpPT5KLENhcmV0U29ydEljb246KCk9PmVlLENhcmV0VXBJY29uOigpPT50ZSxDaGF0QnViYmxlSWNvbjooKT0+bmUsQ2hlY2tDaXJjbGVkSWNvbjooKT0+b2UsQ2hlY2tJY29uOigpPT5yZSxDaGVja2JveEljb246KCk9PmllLENoZXZyb25Eb3duSWNvbjooKT0+YWUsQ2hldnJvbkxlZnRJY29uOigpPT5sZSxDaGV2cm9uUmlnaHRJY29uOigpPT5jZSxDaGV2cm9uVXBJY29uOigpPT5zZSxDaXJjbGVCYWNrc2xhc2hJY29uOigpPT5kZSxDaXJjbGVJY29uOigpPT51ZSxDbGlwYm9hcmRDb3B5SWNvbjooKT0+cGUsQ2xpcGJvYXJkSWNvbjooKT0+ZmUsQ2xvY2tJY29uOigpPT5DZSxDb2RlSWNvbjooKT0+aGUsQ29kZVNhbmRib3hMb2dvSWNvbjooKT0+dmUsQ29sdW1uU3BhY2luZ0ljb246KCk9PmdlLENvbHVtbnNJY29uOigpPT5tZSxDb21taXRJY29uOigpPT53ZSxDb21wb25lbnQxSWNvbjooKT0+eWUsQ29tcG9uZW50Mkljb246KCk9PmJlLENvbXBvbmVudEJvb2xlYW5JY29uOigpPT54ZSxDb21wb25lbnRJbnN0YW5jZUljb246KCk9Pk9lLENvbXBvbmVudE5vbmVJY29uOigpPT5MZSxDb21wb25lbnRQbGFjZWhvbGRlckljb246KCk9Pl9lLENvbnRhaW5lckljb246KCk9Pk1lLENvb2tpZUljb246KCk9PmplLENvcHlJY29uOigpPT5FZSxDb3JuZXJCb3R0b21MZWZ0SWNvbjooKT0+U2UsQ29ybmVyQm90dG9tUmlnaHRJY29uOigpPT5QZSxDb3JuZXJUb3BMZWZ0SWNvbjooKT0+SGUsQ29ybmVyVG9wUmlnaHRJY29uOigpPT5rZSxDb3JuZXJzSWNvbjooKT0+VmUsQ291bnRkb3duVGltZXJJY29uOigpPT5SZSxDb3VudGVyQ2xvY2t3aXNlQ2xvY2tJY29uOigpPT5JZSxDcm9wSWNvbjooKT0+WmUsQ3Jvc3MxSWNvbjooKT0+VGUsQ3Jvc3MySWNvbjooKT0+QWUsQ3Jvc3NDaXJjbGVkSWNvbjooKT0+RGUsQ3Jvc3NoYWlyMUljb246KCk9PkJlLENyb3NzaGFpcjJJY29uOigpPT4kZSxDcnVtcGxlZFBhcGVySWNvbjooKT0+RmUsQ3ViZUljb246KCk9Pk5lLEN1cnNvckFycm93SWNvbjooKT0+emUsQ3Vyc29yVGV4dEljb246KCk9PldlLERhc2hJY29uOigpPT5HZSxEYXNoYm9hcmRJY29uOigpPT5VZSxEaW1lbnNpb25zSWNvbjooKT0+cWUsRGlzY0ljb246KCk9PlllLERpdmlkZXJIb3Jpem9udGFsSWNvbjooKT0+S2UsRGl2aWRlclZlcnRpY2FsSWNvbjooKT0+WGUsRG90RmlsbGVkSWNvbjooKT0+SmUsRG90SWNvbjooKT0+UWUsRG90c0hvcml6b250YWxJY29uOigpPT5ldCxEb3RzVmVydGljYWxJY29uOigpPT50dCxEb3VibGVBcnJvd0Rvd25JY29uOigpPT5udCxEb3VibGVBcnJvd0xlZnRJY29uOigpPT5ydCxEb3VibGVBcnJvd1JpZ2h0SWNvbjooKT0+b3QsRG91YmxlQXJyb3dVcEljb246KCk9Pml0LERvd25sb2FkSWNvbjooKT0+YXQsRHJhZ0hhbmRsZURvdHMxSWNvbjooKT0+bHQsRHJhZ0hhbmRsZURvdHMySWNvbjooKT0+Y3QsRHJhZ0hhbmRsZUhvcml6b250YWxJY29uOigpPT5zdCxEcmFnSGFuZGxlVmVydGljYWxJY29uOigpPT51dCxEcmF3aW5nUGluRmlsbGVkSWNvbjooKT0+ZnQsRHJhd2luZ1Bpbkljb246KCk9PmR0LERyb3Bkb3duTWVudUljb246KCk9PnB0LEVudGVyRnVsbFNjcmVlbkljb246KCk9Pmh0LEVudGVySWNvbjooKT0+Q3QsRW52ZWxvcGVDbG9zZWRJY29uOigpPT52dCxFbnZlbG9wZU9wZW5JY29uOigpPT5ndCxFeGNsYW1hdGlvblRyaWFuZ2xlSWNvbjooKT0+bXQsRXhpdEZ1bGxTY3JlZW5JY29uOigpPT55dCxFeGl0SWNvbjooKT0+d3QsRXh0ZXJuYWxMaW5rSWNvbjooKT0+YnQsRXllQ2xvc2VkSWNvbjooKT0+eHQsRXllTm9uZUljb246KCk9Pk90LEV5ZU9wZW5JY29uOigpPT5MdCxGYWNlSWNvbjooKT0+X3QsRmlnbWFMb2dvSWNvbjooKT0+TXQsRmlsZUljb246KCk9Pmp0LEZpbGVNaW51c0ljb246KCk9PkV0LEZpbGVQbHVzSWNvbjooKT0+U3QsRmlsZVRleHRJY29uOigpPT5QdCxGb250Qm9sZEljb246KCk9Pkh0LEZvbnRGYW1pbHlJY29uOigpPT5rdCxGb250SXRhbGljSWNvbjooKT0+VnQsRm9udFJvbWFuSWNvbjooKT0+UnQsRm9udFNpemVJY29uOigpPT5JdCxGb250U3R5bGVJY29uOigpPT5adCxGcmFtZUljb246KCk9PlR0LEZyYW1lckxvZ29JY29uOigpPT5BdCxHZWFySWNvbjooKT0+RHQsR2l0SHViTG9nb0ljb246KCk9PkJ0LEdsb2JlSWNvbjooKT0+JHQsR3JpZEljb246KCk9PkZ0LEdyb3VwSWNvbjooKT0+TnQsSGFsZjFJY29uOigpPT56dCxIYWxmMkljb246KCk9Pld0LEhhbWJ1cmdlck1lbnVJY29uOigpPT5HdCxIYW5kSWNvbjooKT0+VXQsSGVhZGluZ0ljb246KCk9PnF0LEhlaWdodEljb246KCk9Pll0LEhvbWVJY29uOigpPT5LdCxJY29uSmFyTG9nb0ljb246KCk9Plh0LElkQ2FyZEljb246KCk9PlF0LEltYWdlSWNvbjooKT0+SnQsSW5mb0NpcmNsZWRJY29uOigpPT5lbixJbnB1dEljb246KCk9PnRuLExhcFRpbWVySWNvbjooKT0+bm4sTGF5ZXJzSWNvbjooKT0+cm4sTGF5b3V0SWNvbjooKT0+b24sTGV0dGVyQ2FzZUNhcGl0YWxpemVJY29uOigpPT5hbixMZXR0ZXJDYXNlTG93ZXJjYXNlSWNvbjooKT0+bG4sTGV0dGVyQ2FzZVRvZ2dsZUljb246KCk9PmNuLExldHRlckNhc2VVcHBlcmNhc2VJY29uOigpPT5zbixMZXR0ZXJTcGFjaW5nSWNvbjooKT0+dW4sTGlnaHRuaW5nQm9sdEljb246KCk9PmRuLExpbmVIZWlnaHRJY29uOigpPT5mbixMaW5rMUljb246KCk9PnBuLExpbmsySWNvbjooKT0+Q24sTGlua0JyZWFrMUljb246KCk9PmhuLExpbmtCcmVhazJJY29uOigpPT52bixMaW5rTm9uZTFJY29uOigpPT5nbixMaW5rTm9uZTJJY29uOigpPT5tbixMaXN0QnVsbGV0SWNvbjooKT0+d24sTG9ja0Nsb3NlZEljb246KCk9PnluLExvY2tPcGVuMUljb246KCk9PmJuLExvY2tPcGVuMkljb246KCk9PnhuLExvb3BJY29uOigpPT5PbixNYWdpY1dhbmRJY29uOigpPT5MbixNYWduaWZ5aW5nR2xhc3NJY29uOigpPT5fbixNYXJnaW5JY29uOigpPT5NbixNYXNrT2ZmSWNvbjooKT0+am4sTWFza09uSWNvbjooKT0+RW4sTWludXNDaXJjbGVkSWNvbjooKT0+UG4sTWludXNJY29uOigpPT5TbixNaXhJY29uOigpPT5IbixNaXhlckhvcml6b250YWxJY29uOigpPT5rbixNaXhlclZlcnRpY2FsSWNvbjooKT0+Vm4sTW9kdWx6TG9nb0ljb246KCk9PlJuLE1vb25JY29uOigpPT5JbixNb3ZlSWNvbjooKT0+Wm4sTm90aW9uTG9nb0ljb246KCk9PlRuLE9wYWNpdHlJY29uOigpPT5BbixPdmVybGluZUljb246KCk9PkRuLFBhZGRpbmdJY29uOigpPT5CbixQYXBlclBsYW5lSWNvbjooKT0+JG4sUGF1c2VJY29uOigpPT5GbixQZW5jaWwxSWNvbjooKT0+Tm4sUGVuY2lsMkljb246KCk9PnpuLFBlcnNvbkljb246KCk9PlduLFBpZUNoYXJ0SWNvbjooKT0+R24sUGlsY3Jvd0ljb246KCk9PlVuLFBpbkJvdHRvbUljb246KCk9PnFuLFBpbkxlZnRJY29uOigpPT5ZbixQaW5SaWdodEljb246KCk9PktuLFBpblRvcEljb246KCk9PlhuLFBsYXlJY29uOigpPT5RbixQbHVzQ2lyY2xlZEljb246KCk9PmVyLFBsdXNJY29uOigpPT5KbixRdWVzdGlvbk1hcmtDaXJjbGVkSWNvbjooKT0+bnIsUXVlc3Rpb25NYXJrSWNvbjooKT0+dHIsUXVvdGVJY29uOigpPT5ycixSYWRpb2J1dHRvbkljb246KCk9Pm9yLFJlYWRlckljb246KCk9PmlyLFJlbG9hZEljb246KCk9PmFyLFJlc2V0SWNvbjooKT0+bHIsUmVzdW1lSWNvbjooKT0+Y3IsUm9ja2V0SWNvbjooKT0+c3IsUm90YXRlQ291bnRlckNsb2Nrd2lzZUljb246KCk9PnVyLFJvd1NwYWNpbmdJY29uOigpPT5kcixSb3dzSWNvbjooKT0+ZnIsUnVsZXJIb3Jpem9udGFsSWNvbjooKT0+cHIsUnVsZXJTcXVhcmVJY29uOigpPT5DcixTZWN0aW9uSWNvbjooKT0+aHIsU2V3aW5nUGluRmlsbGVkSWNvbjooKT0+Z3IsU2V3aW5nUGluSWNvbjooKT0+dnIsU2hhZG93SWNvbjooKT0+bXIsU2hhZG93SW5uZXJJY29uOigpPT53cixTaGFkb3dOb25lSWNvbjooKT0+eXIsU2hhZG93T3V0ZXJJY29uOigpPT5icixTaGFyZTFJY29uOigpPT54cixTaGFyZTJJY29uOigpPT5PcixTaHVmZmxlSWNvbjooKT0+THIsU2l6ZUljb246KCk9Pl9yLFNrZXRjaExvZ29JY29uOigpPT5NcixTbGFzaEljb246KCk9PmpyLFNsaWRlckljb246KCk9PkVyLFNwYWNlQmV0d2Vlbkhvcml6b250YWxseUljb246KCk9PlNyLFNwYWNlQmV0d2VlblZlcnRpY2FsbHlJY29uOigpPT5QcixTcGFjZUV2ZW5seUhvcml6b250YWxseUljb246KCk9PkhyLFNwYWNlRXZlbmx5VmVydGljYWxseUljb246KCk9PmtyLFNwZWFrZXJMb3VkSWNvbjooKT0+VnIsU3BlYWtlck1vZGVyYXRlSWNvbjooKT0+UnIsU3BlYWtlck9mZkljb246KCk9PklyLFNwZWFrZXJRdWlldEljb246KCk9PlpyLFNxdWFyZUljb246KCk9PlRyLFN0YWNrSWNvbjooKT0+QXIsU3RhckZpbGxlZEljb246KCk9PkJyLFN0YXJJY29uOigpPT5EcixTdGl0Y2hlc0xvZ29JY29uOigpPT4kcixTdG9wSWNvbjooKT0+RnIsU3RvcHdhdGNoSWNvbjooKT0+TnIsU3RyZXRjaEhvcml6b250YWxseUljb246KCk9PnpyLFN0cmV0Y2hWZXJ0aWNhbGx5SWNvbjooKT0+V3IsU3RyaWtldGhyb3VnaEljb246KCk9PkdyLFN1bkljb246KCk9PlVyLFN3aXRjaEljb246KCk9PnFyLFN5bWJvbEljb246KCk9PllyLFRhYmxlSWNvbjooKT0+S3IsVGFyZ2V0SWNvbjooKT0+WHIsVGV4dEFsaWduQ2VudGVySWNvbjooKT0+SnIsVGV4dEFsaWduSnVzdGlmeUljb246KCk9PmVvLFRleHRBbGlnbkxlZnRJY29uOigpPT50byxUZXh0QWxpZ25SaWdodEljb246KCk9Pm5vLFRleHRJY29uOigpPT5RcixUZXh0Tm9uZUljb246KCk9PnJvLFRoaWNrQXJyb3dEb3duSWNvbjooKT0+b28sVGhpY2tBcnJvd0xlZnRJY29uOigpPT5pbyxUaGlja0Fycm93UmlnaHRJY29uOigpPT5hbyxUaGlja0Fycm93VXBJY29uOigpPT5sbyxUaW1lckljb246KCk9PmNvLFRva2Vuc0ljb246KCk9PnNvLFRyYWNrTmV4dEljb246KCk9PnVvLFRyYWNrUHJldmlvdXNJY29uOigpPT5mbyxUcmFuc3BhcmVuY3lHcmlkSWNvbjooKT0+cG8sVHJhc2hJY29uOigpPT5DbyxUcmlhbmdsZURvd25JY29uOigpPT5obyxUcmlhbmdsZUxlZnRJY29uOigpPT52byxUcmlhbmdsZVJpZ2h0SWNvbjooKT0+Z28sVHJpYW5nbGVVcEljb246KCk9Pm1vLFR3aXR0ZXJMb2dvSWNvbjooKT0+d28sVW5kZXJsaW5lSWNvbjooKT0+eW8sVXBkYXRlSWNvbjooKT0+Ym8sVXBsb2FkSWNvbjooKT0+eG8sVmFsdWVJY29uOigpPT5PbyxWYWx1ZU5vbmVJY29uOigpPT5MbyxWZXJjZWxMb2dvSWNvbjooKT0+X28sVmlkZW9JY29uOigpPT5NbyxWaWV3R3JpZEljb246KCk9PmpvLFZpZXdIb3Jpem9udGFsSWNvbjooKT0+RW8sVmlld05vbmVJY29uOigpPT5TbyxWaWV3VmVydGljYWxJY29uOigpPT5QbyxXaWR0aEljb246KCk9PkhvLFpvb21Jbkljb246KCk9PmtvLFpvb21PdXRJY29uOigpPT5Wb30pO3ZhciByPW4oNjY4OSk7ZnVuY3Rpb24gbyhlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb312YXIgaT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMCAxLjVDMCAxLjIyMzg2IDAuMjIzODU4IDEgMC41IDFIMi41QzIuNzc2MTQgMSAzIDEuMjIzODYgMyAxLjVDMyAxLjc3NjE0IDIuNzc2MTQgMiAyLjUgMkgwLjVDMC4yMjM4NTggMiAwIDEuNzc2MTQgMCAxLjVaTTQgMS41QzQgMS4yMjM4NiA0LjIyMzg2IDEgNC41IDFIMTQuNUMxNC43NzYxIDEgMTUgMS4yMjM4NiAxNSAxLjVDMTUgMS43NzYxNCAxNC43NzYxIDIgMTQuNSAySDQuNUM0LjIyMzg2IDIgNCAxLjc3NjE0IDQgMS41Wk00IDQuNUM0IDQuMjIzODYgNC4yMjM4NiA0IDQuNSA0SDExLjVDMTEuNzc2MSA0IDEyIDQuMjIzODYgMTIgNC41QzEyIDQuNzc2MTQgMTEuNzc2MSA1IDExLjUgNUg0LjVDNC4yMjM4NiA1IDQgNC43NzYxNCA0IDQuNVpNMCA3LjVDMCA3LjIyMzg2IDAuMjIzODU4IDcgMC41IDdIMi41QzIuNzc2MTQgNyAzIDcuMjIzODYgMyA3LjVDMyA3Ljc3NjE0IDIuNzc2MTQgOCAyLjUgOEgwLjVDMC4yMjM4NTggOCAwIDcuNzc2MTQgMCA3LjVaTTQgNy41QzQgNy4yMjM4NiA0LjIyMzg2IDcgNC41IDdIMTQuNUMxNC43NzYxIDcgMTUgNy4yMjM4NiAxNSA3LjVDMTUgNy43NzYxNCAxNC43NzYxIDggMTQuNSA4SDQuNUM0LjIyMzg2IDggNCA3Ljc3NjE0IDQgNy41Wk00IDEwLjVDNCAxMC4yMjM5IDQuMjIzODYgMTAgNC41IDEwSDExLjVDMTEuNzc2MSAxMCAxMiAxMC4yMjM5IDEyIDEwLjVDMTIgMTAuNzc2MSAxMS43NzYxIDExIDExLjUgMTFINC41QzQuMjIzODYgMTEgNCAxMC43NzYxIDQgMTAuNVpNMCAxMy41QzAgMTMuMjIzOSAwLjIyMzg1OCAxMyAwLjUgMTNIMi41QzIuNzc2MTQgMTMgMyAxMy4yMjM5IDMgMTMuNUMzIDEzLjc3NjEgMi43NzYxNCAxNCAyLjUgMTRIMC41QzAuMjIzODU4IDE0IDAgMTMuNzc2MSAwIDEzLjVaTTQgMTMuNUM0IDEzLjIyMzkgNC4yMjM4NiAxMyA0LjUgMTNIMTQuNUMxNC43NzYxIDEzIDE1IDEzLjIyMzkgMTUgMTMuNUMxNSAxMy43NzYxIDE0Ljc3NjEgMTQgMTQuNSAxNEg0LjVDNC4yMjM4NiAxNCA0IDEzLjc3NjEgNCAxMy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAuNSAxLjc1MDAzQzEwLjcxMDcgMS43NTAwMyAxMC44OTg4IDEuODgyMTcgMTAuOTcwMyAyLjA4MDQyTDEzLjk3MDMgMTAuNEMxNC4wNjQgMTAuNjU5OCAxMy45MjkzIDEwLjk0NjMgMTMuNjY5NiAxMS4wNEMxMy40MDk4IDExLjEzMzYgMTMuMTIzMyAxMC45OTkgMTMuMDI5NiAxMC43MzkyTDEyLjA0NzcgOC4wMTYwNkg4Ljk1MjI3TDcuOTcwMzEgMTAuNzM5MkM3Ljg3NjY0IDEwLjk5OSA3LjU5MDEyIDExLjEzMzYgNy4zMzAzNSAxMS4wNEM3LjA3MDU4IDEwLjk0NjMgNi45MzU5MyAxMC42NTk4IDcuMDI5NiAxMC40TDEwLjAyOTYgMi4wODA0MkMxMC4xMDExIDEuODgyMTcgMTAuMjg5MiAxLjc1MDAzIDEwLjUgMS43NTAwM1pNMTAuNSAzLjcyNDAyTDExLjc0MTEgNy4xNjYwNkg5LjI1ODc3TDEwLjUgMy43MjQwMlpNMi40OTk0OSAyLjA5OTk3QzIuNzIwNCAyLjA5OTk3IDIuODk5NDkgMi4yNzkwNiAyLjg5OTQ5IDIuNDk5OTdMMi44OTk0OSA5LjUzNDI4TDQuMjE2NjQgOC4yMTcxM0M0LjM3Mjg1IDguMDYwOTIgNC42MjYxMiA4LjA2MDkyIDQuNzgyMzMgOC4yMTcxM0M0LjkzODU0IDguMzczMzQgNC45Mzg1NCA4LjYyNjYgNC43ODIzMyA4Ljc4MjgxTDIuNzgyMzMgMTAuNzgyOEMyLjcwNzMyIDEwLjg1NzggMi42MDU1NyAxMC45IDIuNDk5NDkgMTAuOUMyLjM5MzQgMTAuOSAyLjI5MTY2IDEwLjg1NzggMi4yMTY2NCAxMC43ODI4TDAuMjE2NjQ1IDguNzgyODFDMC4wNjA0MzQ5IDguNjI2NiAwLjA2MDQzNDkgOC4zNzMzNCAwLjIxNjY0NSA4LjIxNzEzQzAuMzcyODU0IDguMDYwOTIgMC42MjYxMiA4LjA2MDkyIDAuNzgyMzMgOC4yMTcxM0wyLjA5OTQ5IDkuNTM0MjhMMi4wOTk0OSAyLjQ5OTk3QzIuMDk5NDkgMi4yNzkwNiAyLjI3ODU3IDIuMDk5OTcgMi40OTk0OSAyLjA5OTk3Wk0wLjA5OTk2OTUgMTMuNTAwMUMwLjA5OTk2OTUgMTMuMjc5MSAwLjI3OTA1NiAxMy4xMDAxIDAuNDk5OTY5IDEzLjEwMDFIMTQuNUMxNC43MjA5IDEzLjEwMDEgMTQuOSAxMy4yNzkxIDE0LjkgMTMuNTAwMUMxNC45IDEzLjcyMSAxNC43MjA5IDEzLjkwMDEgMTQuNSAxMy45MDAxSDAuNDk5OTY5QzAuMjc5MDU2IDEzLjkwMDEgMC4wOTk5Njk1IDEzLjcyMSAwLjA5OTk2OTUgMTMuNTAwMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkgM0M5IDIuNDQ3NzIgOC41NTIyOSAyIDggMkg3QzYuNDQ3NzIgMiA2IDIuNDQ3NzIgNiAzTDYgMTRIMS41QzEuMjIzODYgMTQgMSAxNC4yMjM5IDEgMTQuNUMxIDE0Ljc3NjEgMS4yMjM4NiAxNSAxLjUgMTVMNiAxNUg5SDEzLjVDMTMuNzc2MSAxNSAxNCAxNC43NzYxIDE0IDE0LjVDMTQgMTQuMjIzOSAxMy43NzYxIDE0IDEzLjUgMTRIOVYzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi45OTk4OCAxQzYuNDQ3NTkgMSA1Ljk5OTg4IDEuNDQ3NzIgNS45OTk4OCAyVjdIMS40OTk4OEMxLjIyMzc0IDcgMC45OTk4NzggNy4yMjM4NiAwLjk5OTg3OCA3LjVDMC45OTk4NzggNy43NzYxNCAxLjIyMzc0IDggMS40OTk4OCA4SDUuOTk5ODhWMTNDNS45OTk4OCAxMy41NTIzIDYuNDQ3NTkgMTQgNi45OTk4OCAxNEg3Ljk5OTg4QzguNTUyMTYgMTQgOC45OTk4OCAxMy41NTIzIDguOTk5ODggMTNWOEgxMy40OTk5QzEzLjc3NiA4IDEzLjk5OTkgNy43NzYxNCAxMy45OTk5IDcuNUMxMy45OTk5IDcuMjIzODYgMTMuNzc2IDcgMTMuNDk5OSA3SDguOTk5ODhWMkM4Ljk5OTg4IDEuNDQ3NzIgOC41NTIxNiAxIDcuOTk5ODggMUw2Ljk5OTg4IDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxzPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjk5OTg4IDZDMS40NDc1OSA2IDAuOTk5ODc3IDYuNDQ3NzIgMC45OTk4NzcgN0wwLjk5OTg3NyA4QzAuOTk5ODc3IDguNTUyMjggMS40NDc1OSA5IDEuOTk5ODggOUw2Ljk5OTg4IDlMNi45OTk4OCAxMy41QzYuOTk5ODggMTMuNzc2MSA3LjIyMzc0IDE0IDcuNDk5ODggMTRDNy43NzYwMiAxNCA3Ljk5OTg4IDEzLjc3NjEgNy45OTk4OCAxMy41TDcuOTk5ODggOUwxMi45OTk5IDlDMTMuNTUyMiA5IDEzLjk5OTkgOC41NTIyOCAxMy45OTk5IDhMMTMuOTk5OSA3QzEzLjk5OTkgNi40NDc3MiAxMy41NTIyIDYgMTIuOTk5OSA2TDcuOTk5ODggNkw3Ljk5OTg4IDEuNUM3Ljk5OTg4IDEuMjIzODYgNy43NzYwMiAxIDcuNDk5ODggMUM3LjIyMzczIDEgNi45OTk4OCAxLjIyMzg2IDYuOTk5ODggMS41TDYuOTk5ODggNkwxLjk5OTg4IDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx1PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjQ5OTk5NSAwLjk5OTk5NUMwLjIyMzg1NSAwLjk5OTk5NSAtNS41ODQ1OGUtMDcgMS4yMjM4NSAtNS40NjM4OGUtMDcgMS40OTk5OUwtMi4xODU1NGUtMDggMTMuNDk5OUMtOS43ODQ5MmUtMDkgMTMuNzc2IDAuMjIzODU1IDEzLjk5OTkgMC40OTk5OTUgMTMuOTk5OUMwLjc3NjEzNiAxMy45OTk5IDAuOTk5OTkxIDEzLjc3NiAwLjk5OTk5MSAxMy40OTk5TDAuOTk5OTkxIDguOTk5OTNMMTIgOC45OTk5M0MxMi41NTIzIDguOTk5OTMgMTMgOC41NTIyMiAxMyA3Ljk5OTkzTDEzIDYuOTk5OTRDMTMgNi40NDc2NiAxMi41NTIzIDUuOTk5OTUgMTIgNS45OTk5NUwwLjk5OTk5MSA1Ljk5OTk1TDAuOTk5OTkxIDEuNDk5OTlDMC45OTk5OTEgMS4yMjM4NSAwLjc3NjEzNSAwLjk5OTk5NSAwLjQ5OTk5NSAwLjk5OTk5NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0LjQ5OTkgMUMxNC4yMjM3IDEgMTMuOTk5OSAxLjIyMzg2IDEzLjk5OTkgMS41TDEzLjk5OTkgNkwyLjk5OTg4IDZDMi40NDc1OSA2IDEuOTk5ODggNi40NDc3MiAxLjk5OTg4IDdMMS45OTk4OCA4QzEuOTk5ODggOC41NTIyOCAyLjQ0NzU5IDkgMi45OTk4OCA5TDEzLjk5OTkgOUwxMy45OTk5IDEzLjVDMTMuOTk5OSAxMy43NzYxIDE0LjIyMzcgMTQgMTQuNDk5OSAxNEMxNC43NzYgMTQgMTQuOTk5OSAxMy43NzYxIDE0Ljk5OTkgMTMuNUwxNC45OTk5IDlMMTQuOTk5OSA2TDE0Ljk5OTkgMS41QzE0Ljk5OTkgMS4yMjM4NiAxNC43NzYgMSAxNC40OTk5IDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxmPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjUgMEMxLjIyMzg2IDAgMSAwLjIyMzg1OCAxIDAuNUMxIDAuNzc2MTQyIDEuMjIzODYgMSAxLjUgMUg2VjEyQzYgMTIuNTUyMyA2LjQ0NzcyIDEzIDcgMTNIOEM4LjU1MjI4IDEzIDkgMTIuNTUyMyA5IDEyVjFIMTMuNUMxMy43NzYxIDEgMTQgMC43NzYxNDIgMTQgMC41QzE0IDAuMjIzODU4IDEzLjc3NjEgMCAxMy41IDBIOUg2SDEuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHA9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAwLjc1TDkuNzUgM0g1LjI1TDcuNSAwLjc1Wk03LjUgMTQuMjVMOS43NSAxMkg1LjI1TDcuNSAxNC4yNVpNMyA1LjI1TDAuNzUgNy41TDMgOS43NVY1LjI1Wk0xNC4yNSA3LjVMMTIgNS4yNVY5Ljc1TDE0LjI1IDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguODkxNCAyLjE5MzdDOS4xMTU4IDIuMzU0NjQgOS4xNjcyNSAyLjY2NzAxIDkuMDA2MzEgMi44OTE0MUwyLjQ3Mzg4IDEySDEzLjVDMTMuNzc2MSAxMiAxNCAxMi4yMjM5IDE0IDEyLjVDMTQgMTIuNzc2MiAxMy43NzYxIDEzIDEzLjUgMTNIMS41QzEuMzEyNTQgMTMgMS4xNDA4MiAxMi44OTUyIDEuMDU1MiAxMi43Mjg0QzAuOTY5NTc4IDEyLjU2MTYgMC45ODQ0MzggMTIuMzYxIDEuMDkzNjkgMTIuMjA4Nkw4LjE5MzY5IDIuMzA4NjJDOC4zNTQ2MiAyLjA4NDIyIDguNjY3IDIuMDMyNzcgOC44OTE0IDIuMTkzN1pNMTEuMSA2LjUwMDAxQzExLjEgNi4yMjM4NyAxMS4zMjM4IDYuMDAwMDEgMTEuNiA2LjAwMDAxQzExLjg3NjEgNi4wMDAwMSAxMi4xIDYuMjIzODcgMTIuMSA2LjUwMDAxQzEyLjEgNi43NzYxNSAxMS44NzYxIDcuMDAwMDEgMTEuNiA3LjAwMDAxQzExLjMyMzggNy4wMDAwMSAxMS4xIDYuNzc2MTUgMTEuMSA2LjUwMDAxWk0xMC40IDQuMDAwMDFDMTAuMTIzOSA0LjAwMDAxIDkuOTAwMDMgNC4yMjM4NyA5LjkwMDAzIDQuNTAwMDFDOS45MDAwMyA0Ljc3NjE1IDEwLjEyMzkgNS4wMDAwMSAxMC40IDUuMDAwMDFDMTAuNjc2MiA1LjAwMDAxIDEwLjkgNC43NzYxNSAxMC45IDQuNTAwMDFDMTAuOSA0LjIyMzg3IDEwLjY3NjIgNC4wMDAwMSAxMC40IDQuMDAwMDFaTTEyLjEgOC41MDAwMUMxMi4xIDguMjIzODcgMTIuMzIzOCA4LjAwMDAxIDEyLjYgOC4wMDAwMUMxMi44NzYxIDguMDAwMDEgMTMuMSA4LjIyMzg3IDEzLjEgOC41MDAwMUMxMy4xIDguNzc2MTUgMTIuODc2MSA5LjAwMDAxIDEyLjYgOS4wMDAwMUMxMi4zMjM4IDkuMDAwMDEgMTIuMSA4Ljc3NjE1IDEyLjEgOC41MDAwMVpNMTMuNCAxMEMxMy4xMjM5IDEwIDEyLjkgMTAuMjIzOSAxMi45IDEwLjVDMTIuOSAxMC43NzYxIDEzLjEyMzkgMTEgMTMuNCAxMUMxMy42NzYyIDExIDEzLjkgMTAuNzc2MSAxMy45IDEwLjVDMTMuOSAxMC4yMjM5IDEzLjY3NjIgMTAgMTMuNCAxMFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGg9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMzA5MDIgMUMyLjkzMDI1IDEgMi41ODM5OCAxLjIxNCAyLjQxNDU5IDEuNTUyNzlMMS4wNTI3OSA0LjI3NjM5QzEuMDE4MDcgNC4zNDU4MiAxIDQuNDIyMzggMSA0LjVWMTNDMSAxMy41NTIzIDEuNDQ3NzIgMTQgMiAxNEgxM0MxMy41NTIzIDE0IDE0IDEzLjU1MjMgMTQgMTNWNC41QzE0IDQuNDIyMzggMTMuOTgxOSA0LjM0NTgyIDEzLjk0NzIgNC4yNzYzOUwxMi41ODU0IDEuNTUyODFDMTIuNDE2IDEuMjE0MDMgMTIuMDY5OCAxLjAwMDAzIDExLjY5MSAxLjAwMDAzTDcuNSAxLjAwMDAxTDMuMzA5MDIgMVpNMy4zMDkwMiAyTDcgMi4wMDAwMVY0SDIuMzA5MDJMMy4zMDkwMiAyWk04IDRWMi4wMDAwMkwxMS42OTEgMi4wMDAwM0wxMi42OTEgNEg4Wk03LjUgNUgxM1YxM0gyVjVINy41Wk01LjUgN0M1LjIyMzg2IDcgNSA3LjIyMzg2IDUgNy41QzUgNy43NzYxNCA1LjIyMzg2IDggNS41IDhIOS41QzkuNzc2MTQgOCAxMCA3Ljc3NjE0IDEwIDcuNUMxMCA3LjIyMzg2IDkuNzc2MTQgNyA5LjUgN0g1LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx2PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS4zNTM2IDMuNjQ2NDRDMTEuNTQ4OCAzLjg0MTcgMTEuNTQ4OCA0LjE1ODI4IDExLjM1MzYgNC4zNTM1NEw0LjcwNzExIDExTDkgMTFDOS4yNzYxNCAxMSA5LjUgMTEuMjIzOSA5LjUgMTEuNUM5LjUgMTEuNzc2MSA5LjI3NjE0IDEyIDkgMTJMMy41IDEyQzMuMzY3MzkgMTIgMy4yNDAyMSAxMS45NDczIDMuMTQ2NDUgMTEuODUzNkMzLjA1MjY4IDExLjc1OTggMyAxMS42MzI2IDMgMTEuNUwzIDUuOTk5OTlDMyA1LjcyMzg1IDMuMjIzODYgNS40OTk5OSAzLjUgNS40OTk5OUMzLjc3NjE0IDUuNDk5OTkgNCA1LjcyMzg1IDQgNS45OTk5OVYxMC4yOTI5TDEwLjY0NjQgMy42NDY0M0MxMC44NDE3IDMuNDUxMTcgMTEuMTU4MyAzLjQ1MTE3IDExLjM1MzYgMy42NDY0NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNjQ2NDUgMy42NDY0NEMzLjQ1MTE4IDMuODQxNyAzLjQ1MTE4IDQuMTU4MjggMy42NDY0NSA0LjM1MzU0TDEwLjI5MjkgMTFMNiAxMUM1LjcyMzg2IDExIDUuNSAxMS4yMjM5IDUuNSAxMS41QzUuNSAxMS43NzYxIDUuNzIzODYgMTIgNiAxMkwxMS41IDEyQzExLjYzMjYgMTIgMTEuNzU5OCAxMS45NDczIDExLjg1MzYgMTEuODUzNkMxMS45NDczIDExLjc1OTggMTIgMTEuNjMyNiAxMiAxMS41TDEyIDUuOTk5OTlDMTIgNS43MjM4NSAxMS43NzYxIDUuNDk5OTkgMTEuNSA1LjQ5OTk5QzExLjIyMzkgNS40OTk5OSAxMSA1LjcyMzg1IDExIDUuOTk5OTlWMTAuMjkyOUw0LjM1MzU1IDMuNjQ2NDNDNC4xNTgyOSAzLjQ1MTE3IDMuODQxNzEgMy40NTExNyAzLjY0NjQ1IDMuNjQ2NDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxtPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMkM3Ljc3NjE0IDIgOCAyLjIyMzg2IDggMi41TDggMTEuMjkyOUwxMS4xNDY0IDguMTQ2NDVDMTEuMzQxNyA3Ljk1MTE4IDExLjY1ODMgNy45NTExOCAxMS44NTM2IDguMTQ2NDVDMTIuMDQ4OCA4LjM0MTcxIDEyLjA0ODggOC42NTgyOSAxMS44NTM2IDguODUzNTVMNy44NTM1NSAxMi44NTM2QzcuNzU5NzkgMTIuOTQ3MyA3LjYzMjYxIDEzIDcuNSAxM0M3LjM2NzM5IDEzIDcuMjQwMjEgMTIuOTQ3MyA3LjE0NjQ1IDEyLjg1MzZMMy4xNDY0NSA4Ljg1MzU1QzIuOTUxMTggOC42NTgyOSAyLjk1MTE4IDguMzQxNzEgMy4xNDY0NSA4LjE0NjQ1QzMuMzQxNzEgNy45NTExOCAzLjY1ODI5IDcuOTUxMTggMy44NTM1NSA4LjE0NjQ1TDcgMTEuMjkyOUw3IDIuNUM3IDIuMjIzODYgNy4yMjM4NiAyIDcuNSAyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi44NTM1NSAzLjE0NjQ1QzcuMDQ4ODIgMy4zNDE3MSA3LjA0ODgyIDMuNjU4MjkgNi44NTM1NSAzLjg1MzU1TDMuNzA3MTEgN0gxMi41QzEyLjc3NjEgNyAxMyA3LjIyMzg2IDEzIDcuNUMxMyA3Ljc3NjE0IDEyLjc3NjEgOCAxMi41IDhIMy43MDcxMUw2Ljg1MzU1IDExLjE0NjRDNy4wNDg4MiAxMS4zNDE3IDcuMDQ4ODIgMTEuNjU4MyA2Ljg1MzU1IDExLjg1MzZDNi42NTgyOSAxMi4wNDg4IDYuMzQxNzEgMTIuMDQ4OCA2LjE0NjQ1IDExLjg1MzZMMi4xNDY0NSA3Ljg1MzU1QzEuOTUxMTggNy42NTgyOSAxLjk1MTE4IDcuMzQxNzEgMi4xNDY0NSA3LjE0NjQ1TDYuMTQ2NDUgMy4xNDY0NUM2LjM0MTcxIDIuOTUxMTggNi42NTgyOSAyLjk1MTE4IDYuODUzNTUgMy4xNDY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguMTQ2NDUgMy4xNDY0NUM4LjM0MTcxIDIuOTUxMTggOC42NTgyOSAyLjk1MTE4IDguODUzNTUgMy4xNDY0NUwxMi44NTM2IDcuMTQ2NDVDMTMuMDQ4OCA3LjM0MTcxIDEzLjA0ODggNy42NTgyOSAxMi44NTM2IDcuODUzNTVMOC44NTM1NSAxMS44NTM2QzguNjU4MjkgMTIuMDQ4OCA4LjM0MTcxIDEyLjA0ODggOC4xNDY0NSAxMS44NTM2QzcuOTUxMTggMTEuNjU4MyA3Ljk1MTE4IDExLjM0MTcgOC4xNDY0NSAxMS4xNDY0TDExLjI5MjkgOEgyLjVDMi4yMjM4NiA4IDIgNy43NzYxNCAyIDcuNUMyIDcuMjIzODYgMi4yMjM4NiA3IDIuNSA3SDExLjI5MjlMOC4xNDY0NSAzLjg1MzU1QzcuOTUxMTggMy42NTgyOSA3Ljk1MTE4IDMuMzQxNzEgOC4xNDY0NSAzLjE0NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEuMzUzNiAxMS4zNTM2QzExLjU0ODggMTEuMTU4MyAxMS41NDg4IDEwLjg0MTcgMTEuMzUzNiAxMC42NDY1TDQuNzA3MTEgNEw5IDRDOS4yNzYxNCA0IDkuNSAzLjc3NjE0IDkuNSAzLjVDOS41IDMuMjIzODYgOS4yNzYxNCAzIDkgM0wzLjUgM0MzLjM2NzM5IDMgMy4yNDAyMSAzLjA1MjY4IDMuMTQ2NDUgMy4xNDY0NUMzLjA1MjY4IDMuMjQwMjIgMyAzLjM2NzM5IDMgMy41TDMgOS4wMDAwMUMzIDkuMjc2MTUgMy4yMjM4NiA5LjUwMDAxIDMuNSA5LjUwMDAxQzMuNzc2MTQgOS41MDAwMSA0IDkuMjc2MTUgNCA5LjAwMDAxVjQuNzA3MTFMMTAuNjQ2NCAxMS4zNTM2QzEwLjg0MTcgMTEuNTQ4OCAxMS4xNTgzIDExLjU0ODggMTEuMzUzNiAxMS4zNTM2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy42NDY0NSAxMS4zNTM2QzMuNDUxMTggMTEuMTU4MyAzLjQ1MTE4IDEwLjg0MTcgMy42NDY0NSAxMC42NDY1TDEwLjI5MjkgNEw2IDRDNS43MjM4NiA0IDUuNSAzLjc3NjE0IDUuNSAzLjVDNS41IDMuMjIzODYgNS43MjM4NiAzIDYgM0wxMS41IDNDMTEuNjMyNiAzIDExLjc1OTggMy4wNTI2OCAxMS44NTM2IDMuMTQ2NDVDMTEuOTQ3MyAzLjI0MDIyIDEyIDMuMzY3MzkgMTIgMy41TDEyIDkuMDAwMDFDMTIgOS4yNzYxNSAxMS43NzYxIDkuNTAwMDEgMTEuNSA5LjUwMDAxQzExLjIyMzkgOS41MDAwMSAxMSA5LjI3NjE1IDExIDkuMDAwMDFWNC43MDcxMUw0LjM1MzU1IDExLjM1MzZDNC4xNTgyOSAxMS41NDg4IDMuODQxNzEgMTEuNTQ4OCAzLjY0NjQ1IDExLjM1MzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxPPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjE0NjQ1IDIuMTQ2NDVDNy4zNDE3MSAxLjk1MTE4IDcuNjU4MjkgMS45NTExOCA3Ljg1MzU1IDIuMTQ2NDVMMTEuODUzNiA2LjE0NjQ1QzEyLjA0ODggNi4zNDE3MSAxMi4wNDg4IDYuNjU4MjkgMTEuODUzNiA2Ljg1MzU1QzExLjY1ODMgNy4wNDg4MiAxMS4zNDE3IDcuMDQ4ODIgMTEuMTQ2NCA2Ljg1MzU1TDggMy43MDcxMUw4IDEyLjVDOCAxMi43NzYxIDcuNzc2MTQgMTMgNy41IDEzQzcuMjIzODYgMTMgNyAxMi43NzYxIDcgMTIuNUw3IDMuNzA3MTFMMy44NTM1NSA2Ljg1MzU1QzMuNjU4MjkgNy4wNDg4MiAzLjM0MTcxIDcuMDQ4ODIgMy4xNDY0NSA2Ljg1MzU1QzIuOTUxMTggNi42NTgyOSAyLjk1MTE4IDYuMzQxNzEgMy4xNDY0NSA2LjE0NjQ1TDcuMTQ2NDUgMi4xNDY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuNSAySDEyLjVDMTIuNzc2MSAyIDEzIDIuMjIzODYgMTMgMi41VjEyLjVDMTMgMTIuNzc2MSAxMi43NzYxIDEzIDEyLjUgMTNIMi41QzIuMjIzODYgMTMgMiAxMi43NzYxIDIgMTIuNVYyLjVDMiAyLjIyMzg2IDIuMjIzODYgMiAyLjUgMlpNMSAyLjVDMSAxLjY3MTU3IDEuNjcxNTcgMSAyLjUgMUgxMi41QzEzLjMyODQgMSAxNCAxLjY3MTU3IDE0IDIuNVYxMi41QzE0IDEzLjMyODQgMTMuMzI4NCAxNCAxMi41IDE0SDIuNUMxLjY3MTU3IDE0IDEgMTMuMzI4NCAxIDEyLjVWMi41Wk03LjUgNEM3Ljc3NjE0IDQgOCAzLjc3NjE0IDggMy41QzggMy4yMjM4NiA3Ljc3NjE0IDMgNy41IDNDNy4yMjM4NiAzIDcgMy4yMjM4NiA3IDMuNUM3IDMuNzc2MTQgNy4yMjM4NiA0IDcuNSA0Wk04IDUuNUM4IDUuNzc2MTQgNy43NzYxNCA2IDcuNSA2QzcuMjIzODYgNiA3IDUuNzc2MTQgNyA1LjVDNyA1LjIyMzg2IDcuMjIzODYgNSA3LjUgNUM3Ljc3NjE0IDUgOCA1LjIyMzg2IDggNS41Wk03LjUgOEM3Ljc3NjE0IDggOCA3Ljc3NjE0IDggNy41QzggNy4yMjM4NiA3Ljc3NjE0IDcgNy41IDdDNy4yMjM4NiA3IDcgNy4yMjM4NiA3IDcuNUM3IDcuNzc2MTQgNy4yMjM4NiA4IDcuNSA4Wk0xMCA3LjVDMTAgNy43NzYxNCA5Ljc3NjE0IDggOS41IDhDOS4yMjM4NiA4IDkgNy43NzYxNCA5IDcuNUM5IDcuMjIzODYgOS4yMjM4NiA3IDkuNSA3QzkuNzc2MTQgNyAxMCA3LjIyMzg2IDEwIDcuNVpNMTEuNSA4QzExLjc3NjEgOCAxMiA3Ljc3NjE0IDEyIDcuNUMxMiA3LjIyMzg2IDExLjc3NjEgNyAxMS41IDdDMTEuMjIzOSA3IDExIDcuMjIzODYgMTEgNy41QzExIDcuNzc2MTQgMTEuMjIzOSA4IDExLjUgOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LF89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuODc3MDE0IDcuNDk5ODhDMC44NzcwMTQgMy44NDIxOSAzLjg0MjE2IDAuODc3MDQ1IDcuNDk5ODUgMC44NzcwNDVDMTEuMTU3NSAwLjg3NzA0NSAxNC4xMjI3IDMuODQyMTkgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgMTEuMTU3NSAxMS4xNTc1IDE0LjEyMjcgNy40OTk4NSAxNC4xMjI3QzMuODQyMTYgMTQuMTIyNyAwLjg3NzAxNCAxMS4xNTc1IDAuODc3MDE0IDcuNDk5ODhaTTcuNDk5ODUgMS44MjcwNEM0LjM2NjgzIDEuODI3MDQgMS44MjcwMSA0LjM2Njg2IDEuODI3MDEgNy40OTk4OEMxLjgyNzAxIDguOTcxOTYgMi4zODc3NCAxMC4zMTMxIDMuMzA3MjcgMTEuMzIxM0M0LjE5MDc0IDkuOTQxMTkgNS43MzgxOCA5LjAyNDk5IDcuNTAwMjMgOS4wMjQ5OUM5LjI2MjA2IDkuMDI0OTkgMTAuODA5MyA5Ljk0MDk3IDExLjY5MjkgMTEuMzIwOEMxMi42MTIxIDEwLjMxMjcgMTMuMTcyNyA4Ljk3MTcyIDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDQuMzY2ODYgMTAuNjMyOCAxLjgyNzA0IDcuNDk5ODUgMS44MjcwNFpNMTAuOTgxOCAxMS45Nzg3QzEwLjI4MzkgMTAuNzc5NSA4Ljk4NTcgOS45NzQ5OSA3LjUwMDIzIDkuOTc0OTlDNi4wMTQ1OCA5Ljk3NDk5IDQuNzE2MjQgMTAuNzc5NyA0LjAxODQ1IDExLjk3OTFDNC45Nzk1MiAxMi43MjcyIDYuMTg3NjUgMTMuMTcyNyA3LjQ5OTg1IDEzLjE3MjdDOC44MTIyNyAxMy4xNzI3IDEwLjAyMDYgMTIuNzI3IDEwLjk4MTggMTEuOTc4N1pNNS4xNDk5OSA2LjUwNDg3QzUuMTQ5OTkgNS4yMDcgNi4yMDIxMiA0LjE1NDg3IDcuNDk5OTkgNC4xNTQ4N0M4Ljc5Nzg2IDQuMTU0ODcgOS44NDk5OSA1LjIwNyA5Ljg0OTk5IDYuNTA0ODdDOS44NDk5OSA3LjgwMjc0IDguNzk3ODYgOC44NTQ4NyA3LjQ5OTk5IDguODU0ODdDNi4yMDIxMiA4Ljg1NDg3IDUuMTQ5OTkgNy44MDI3NCA1LjE0OTk5IDYuNTA0ODdaTTcuNDk5OTkgNS4xMDQ4N0M2LjcyNjc5IDUuMTA0ODcgNi4wOTk5OSA1LjczMTY3IDYuMDk5OTkgNi41MDQ4N0M2LjA5OTk5IDcuMjc4MDcgNi43MjY3OSA3LjkwNDg3IDcuNDk5OTkgNy45MDQ4N0M4LjI3MzE5IDcuOTA0ODcgOC44OTk5OSA3LjI3ODA3IDguODk5OTkgNi41MDQ4N0M4Ljg5OTk5IDUuNzMxNjcgOC4yNzMxOSA1LjEwNDg3IDcuNDk5OTkgNS4xMDQ4N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE09ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUgMUM1IDAuNDQ3NzE1IDUuNDQ3NzIgMCA2IDBIOUM5LjU1MjI4IDAgMTAgMC40NDc3MTUgMTAgMVYySDE0QzE0LjU1MjMgMiAxNSAyLjQ0NzcyIDE1IDNWNkMxNSA2Ljg4ODggMTQuNjEzMSA3LjY4NzM0IDE0IDguMjM2MDhWMTEuNUMxNCAxMi4zMjg0IDEzLjMyODQgMTMgMTIuNSAxM0gyLjVDMS42NzE1NyAxMyAxIDEyLjMyODQgMSAxMS41VjguMjM1OUMwLjM4Njk3IDcuNjg3MjEgMCA2Ljg4ODgzIDAgNlYzQzAgMi40NDc3MiAwLjQ0NzcxNiAyIDEgMkg1VjFaTTkgMVYySDZWMUg5Wk0xIDNINUg1LjVIOS41SDEwSDE0VjZDMTQgNi42NTQgMTMuNjg2NiA3LjIzNDY3IDEzLjE5OTcgNy42MDA0QzEyLjg2NTUgNy44NTE0NCAxMi40NTA4IDggMTIgOEg4VjcuNUM4IDcuMjIzODYgNy43NzYxNCA3IDcuNSA3QzcuMjIzODYgNyA3IDcuMjIzODYgNyA3LjVWOEgzQzIuNTQ5MyA4IDIuMTM0NiA3Ljg1MTMzIDEuODAwMjkgNy42MDAyMkMxLjMxMzM1IDcuMjM0NDYgMSA2LjY1Mzk2IDEgNlYzWk03IDlIM0MyLjY0OTYxIDkgMi4zMTI5MiA4LjkzOTcyIDIgOC44MjkwNVYxMS41QzIgMTEuNzc2MSAyLjIyMzg2IDEyIDIuNSAxMkgxMi41QzEyLjc3NjEgMTIgMTMgMTEuNzc2MSAxMyAxMS41VjguODI5MTVDMTIuNjg3MSA4LjkzOTc4IDEyLjM1MDQgOSAxMiA5SDhWOS41QzggOS43NzYxNCA3Ljc3NjE0IDEwIDcuNSAxMEM3LjIyMzg2IDEwIDcgOS43NzYxNCA3IDkuNVY5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy41IDZIMTEuNUMxMi4zMjg0IDYgMTMgNi42NzE1NyAxMyA3LjVDMTMgOC4zMjg0MyAxMi4zMjg0IDkgMTEuNSA5SDMuNUMyLjY3MTU3IDkgMiA4LjMyODQzIDIgNy41QzIgNi42NzE1NyAyLjY3MTU3IDYgMy41IDZaTTEgNy41QzEgNi4xMTkyOSAyLjExOTI5IDUgMy41IDVIMTEuNUMxMi44ODA3IDUgMTQgNi4xMTkyOSAxNCA3LjVDMTQgOC44ODA3MSAxMi44ODA3IDEwIDExLjUgMTBIMy41QzIuMTE5MjkgMTAgMSA4Ljg4MDcxIDEgNy41Wk00LjUgN0M0LjIyMzg2IDcgNCA3LjIyMzg2IDQgNy41QzQgNy43NzYxNCA0LjIyMzg2IDggNC41IDhIMTAuNUMxMC43NzYxIDggMTEgNy43NzYxNCAxMSA3LjVDMTEgNy4yMjM4NiAxMC43NzYxIDcgMTAuNSA3SDQuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjUgMUMxMS43NzYxIDEgMTIgMS4yMjM4NiAxMiAxLjVWMTMuNUMxMiAxMy43NzYxIDExLjc3NjEgMTQgMTEuNSAxNEMxMS4yMjM5IDE0IDExIDEzLjc3NjEgMTEgMTMuNVYxLjVDMTEgMS4yMjM4NiAxMS4yMjM5IDEgMTEuNSAxWk05LjUgM0M5Ljc3NjE0IDMgMTAgMy4yMjM4NiAxMCAzLjVWMTMuNUMxMCAxMy43NzYxIDkuNzc2MTQgMTQgOS41IDE0QzkuMjIzODYgMTQgOSAxMy43NzYxIDkgMTMuNVYzLjVDOSAzLjIyMzg2IDkuMjIzODYgMyA5LjUgM1pNMTMuNSAzQzEzLjc3NjEgMyAxNCAzLjIyMzg2IDE0IDMuNVYxMy41QzE0IDEzLjc3NjEgMTMuNzc2MSAxNCAxMy41IDE0QzEzLjIyMzkgMTQgMTMgMTMuNzc2MSAxMyAxMy41VjMuNUMxMyAzLjIyMzg2IDEzLjIyMzkgMyAxMy41IDNaTTUuNSA0QzUuNzc2MTQgNCA2IDQuMjIzODYgNiA0LjVWMTMuNUM2IDEzLjc3NjEgNS43NzYxNCAxNCA1LjUgMTRDNS4yMjM4NiAxNCA1IDEzLjc3NjEgNSAxMy41VjQuNUM1IDQuMjIzODYgNS4yMjM4NiA0IDUuNSA0Wk0xLjUgNUMxLjc3NjE0IDUgMiA1LjIyMzg2IDIgNS41VjEzLjVDMiAxMy43NzYxIDEuNzc2MTQgMTQgMS41IDE0QzEuMjIzODYgMTQgMSAxMy43NzYxIDEgMTMuNVY1LjVDMSA1LjIyMzg2IDEuMjIzODYgNSAxLjUgNVpNNy41IDVDNy43NzYxNCA1IDggNS4yMjM4NiA4IDUuNVYxMy41QzggMTMuNzc2MSA3Ljc3NjE0IDE0IDcuNSAxNEM3LjIyMzg2IDE0IDcgMTMuNzc2MSA3IDEzLjVWNS41QzcgNS4yMjM4NiA3LjIyMzg2IDUgNy41IDVaTTMuNSA3QzMuNzc2MTQgNyA0IDcuMjIzODYgNCA3LjVWMTMuNUM0IDEzLjc3NjEgMy43NzYxNCAxNCAzLjUgMTRDMy4yMjM4NiAxNCAzIDEzLjc3NjEgMyAxMy41VjcuNUMzIDcuMjIzODYgMy4yMjM4NiA3IDMuNSA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC42MDEyNCAxLjI1MDg2QzguNjAxMjQgMS43NTQ1OSA4LjI2Mjc4IDIuMTc5MjcgNy44MDA4NyAyLjMwOTg5QzEwLjE0NTkgMi40NjQ3IDEyIDQuNDE1ODIgMTIgNi43OTk5OVYxMC4yNUMxMiAxMS4wNTYzIDEyLjAzMjkgMTEuNzA3NCAxMi43MjM2IDEyLjA1MjhDMTIuOTMxIDEyLjE1NjUgMTMuMDM5OSAxMi4zODkyIDEyLjk4NjYgMTIuNjE0OUMxMi45MzMzIDEyLjg0MDYgMTIuNzMxOSAxMyAxMi41IDEzSDguMTYxNDRDOC4zNjkwNCAxMy4xODMyIDguNDk5OTcgMTMuNDUxMyA4LjQ5OTk3IDEzLjc1QzguNDk5OTcgMTQuMzAyMyA4LjA1MjI2IDE0Ljc1IDcuNDk5OTcgMTQuNzVDNi45NDc2OSAxNC43NSA2LjQ5OTk3IDE0LjMwMjMgNi40OTk5NyAxMy43NUM2LjQ5OTk3IDEzLjQ1MTMgNi42MzA5MSAxMy4xODMyIDYuODM4NTEgMTNIMi40OTk5OUMyLjI2ODEgMTMgMi4wNjY2NCAxMi44NDA2IDIuMDEzMzYgMTIuNjE0OUMxLjk2MDA5IDEyLjM4OTIgMi4wNjg5NyAxMi4xNTY1IDIuMjc2MzggMTIuMDUyOEMyLjk2NzA4IDExLjcwNzQgMi45OTk5OSAxMS4wNTYzIDIuOTk5OTkgMTAuMjVWNi43OTk5OUMyLjk5OTk5IDQuNDE1MzcgNC44NTQ4MSAyLjQ2Mzk2IDcuMjAwNDIgMi4zMDk4QzYuNzM4NjcgMi4xNzkwOCA2LjQwMDM2IDEuNzU0NDggNi40MDAzNiAxLjI1MDg2QzYuNDAwMzYgMC42NDMxMDQgNi44OTMwNCAwLjE1MDQyMSA3LjUwMDggMC4xNTA0MjFDOC4xMDg1NSAwLjE1MDQyMSA4LjYwMTI0IDAuNjQzMTA0IDguNjAxMjQgMS4yNTA4NlpNNy40OTk5OSAzLjI5OTk5QzUuNTY2OTkgMy4yOTk5OSAzLjk5OTk5IDQuODY2OTkgMy45OTk5OSA2Ljc5OTk5VjEwLjI1TDQuMDAwMDIgMTAuMzAwOUM0LjAwMDUgMTAuNzQ2MyA0LjAwMTIxIDExLjQwODQgMy42OTkyOSAxMkgxMS4zMDA3QzEwLjk5ODggMTEuNDA4NCAxMC45OTk1IDEwLjc0NjMgMTEgMTAuMzAwOUwxMSAxMC4yNVY2Ljc5OTk5QzExIDQuODY2OTkgOS40MzI5OSAzLjI5OTk5IDcuNDk5OTkgMy4yOTk5OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFA9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgOUMzIDYuNSA0LjUgNC4yNSA3LjUgMS41QzEwLjUgNC4yNSAxMiA2LjUgMTIgOUMxMiAxMS40ODUzIDkuOTg1MjggMTMuNSA3LjUgMTMuNUM1LjAxNDcyIDEzLjUgMyAxMS40ODUzIDMgOVpNMTAuOTUyNCA4LjMwMzA3QzkuNjczNDcgNy44MjEyMSA4LjI4NzkgOC40NjIwOCA2Ljk4OTU2IDkuMDYyNTlDNS45MzI3IDkuNTUxNDIgNC45MzM2NSAxMC4wMTM1IDQuMDk2OTUgOS44MjE1M0M0LjAzMzU3IDkuNTU4MDQgNCA5LjI4Mjk0IDQgOUM0IDcuMTEyMDMgNS4wMjY4NiA1LjI3MTk1IDcuNSAyLjg3MzU3QzkuNjY4MzcgNC45NzYzOSAxMC43MjUgNi42NTAwNCAxMC45NTI0IDguMzAzMDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxIPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zIDIuNUMzIDIuMjIzODYgMy4yMjM4NiAyIDMuNSAySDExLjVDMTEuNzc2MSAyIDEyIDIuMjIzODYgMTIgMi41VjEzLjVDMTIgMTMuNjgxOCAxMS45MDE0IDEzLjg0OTIgMTEuNzQyNCAxMy45MzczQzExLjU4MzQgMTQuMDI1NCAxMS4zODkxIDE0LjAyMDMgMTEuMjM1IDEzLjkyNEw3LjUgMTEuNTg5NkwzLjc2NSAxMy45MjRDMy42MTA4NyAxNC4wMjAzIDMuNDE2NTkgMTQuMDI1NCAzLjI1NzYyIDEzLjkzNzNDMy4wOTg2NCAxMy44NDkyIDMgMTMuNjgxOCAzIDEzLjVWMi41Wk00IDNWMTIuNTk3OUw2Ljk3IDEwLjc0MTZDNy4yOTQyNyAxMC41MzkgNy43MDU3MyAxMC41MzkgOC4wMyAxMC43NDE2TDExIDEyLjU5NzlWM0g0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC4yNSAxQzAuMjUgMC41ODU3ODYgMC41ODU3ODYgMC4yNSAxIDAuMjVIMTRDMTQuNDE0MiAwLjI1IDE0Ljc1IDAuNTg1Nzg2IDE0Ljc1IDFWMTRDMTQuNzUgMTQuNDE0MiAxNC40MTQyIDE0Ljc1IDE0IDE0Ljc1SDFDMC41ODU3ODYgMTQuNzUgMC4yNSAxNC40MTQyIDAuMjUgMTRWMVpNMS43NSAxLjc1VjEzLjI1SDEzLjI1VjEuNzVIMS43NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNVwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiM1wiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOVwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTFcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiOVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMTFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pKX0sVj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMSAxMy4yNUwxNCAxMy4yNVYxNC43NUwxIDE0Ljc1VjEzLjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNVwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNVwiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiM1wiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiM1wiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOVwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOVwiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTFcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjExXCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjlcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCI5XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjExXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCIzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCI5XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCIxMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSkpfSxSPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wIDcuNUMwIDcuMjIzODYgMC4yMjM4NTggNyAwLjUgN0gzQzMuMjc2MTQgNyAzLjUgNy4yMjM4NiAzLjUgNy41QzMuNSA3Ljc3NjE0IDMuMjc2MTQgOCAzIDhIMC41QzAuMjIzODU4IDggMCA3Ljc3NjE0IDAgNy41Wk01Ljc1IDcuNUM1Ljc1IDcuMjIzODYgNS45NzM4NiA3IDYuMjUgN0g4Ljc1QzkuMDI2MTQgNyA5LjI1IDcuMjIzODYgOS4yNSA3LjVDOS4yNSA3Ljc3NjE0IDkuMDI2MTQgOCA4Ljc1IDhINi4yNUM1Ljk3Mzg2IDggNS43NSA3Ljc3NjE0IDUuNzUgNy41Wk0xMiA3QzExLjcyMzkgNyAxMS41IDcuMjIzODYgMTEuNSA3LjVDMTEuNSA3Ljc3NjE0IDExLjcyMzkgOCAxMiA4SDE0LjVDMTQuNzc2MSA4IDE1IDcuNzc2MTQgMTUgNy41QzE1IDcuMjIzODYgMTQuNzc2MSA3IDE0LjUgN0gxMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNSA2LjYyNUMxLjAxNjc1IDYuNjI1IDAuNjI1IDcuMDE2NzUgMC42MjUgNy41QzAuNjI1IDcuOTgzMjUgMS4wMTY3NSA4LjM3NSAxLjUgOC4zNzVDMS45ODMyNSA4LjM3NSAyLjM3NSA3Ljk4MzI1IDIuMzc1IDcuNUMyLjM3NSA3LjAxNjc1IDEuOTgzMjUgNi42MjUgMS41IDYuNjI1Wk01LjUgNi42MjVDNS4wMTY3NSA2LjYyNSA0LjYyNSA3LjAxNjc1IDQuNjI1IDcuNUM0LjYyNSA3Ljk4MzI1IDUuMDE2NzUgOC4zNzUgNS41IDguMzc1QzUuOTgzMjUgOC4zNzUgNi4zNzUgNy45ODMyNSA2LjM3NSA3LjVDNi4zNzUgNy4wMTY3NSA1Ljk4MzI1IDYuNjI1IDUuNSA2LjYyNVpNOS41IDYuNjI1QzkuMDE2NzUgNi42MjUgOC42MjUgNy4wMTY3NSA4LjYyNSA3LjVDOC42MjUgNy45ODMyNSA5LjAxNjc1IDguMzc1IDkuNSA4LjM3NUM5Ljk4MzI1IDguMzc1IDEwLjM3NSA3Ljk4MzI1IDEwLjM3NSA3LjVDMTAuMzc1IDcuMDE2NzUgOS45ODMyNSA2LjYyNSA5LjUgNi42MjVaTTEyLjYyNSA3LjVDMTIuNjI1IDcuMDE2NzUgMTMuMDE2OCA2LjYyNSAxMy41IDYuNjI1QzEzLjk4MzIgNi42MjUgMTQuMzc1IDcuMDE2NzUgMTQuMzc1IDcuNUMxNC4zNzUgNy45ODMyNSAxMy45ODMyIDguMzc1IDEzLjUgOC4zNzVDMTMuMDE2OCA4LjM3NSAxMi42MjUgNy45ODMyNSAxMi42MjUgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS43NSAxTDEuNzUgMTRMMC4yNDk5OTkgMTRMMC4yNSAxTDEuNzUgMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTBcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDEwIDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEwXCIseTpcIjEzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTAgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEyXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxMiA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMlwiLHk6XCIxM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDEyIDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjEzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgOCAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiMTNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgOCA1KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTQgNSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCIzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgOCAzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCIzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTQgMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCI5XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgOCA5KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCI5XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTQgOSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCIxMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDggMTEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjExXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTQgMTEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjZcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDYgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNlwiLHk6XCIxM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDYgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjRcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDQgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNFwiLHk6XCIxM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDQgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEwXCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxMCAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMlwiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTIgMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgOCAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTQgMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNlwiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgNiAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI0XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA0IDEpXCIsZmlsbDpufSkpfSxUPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiNS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCI1LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCIzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjVcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNVwiLHk6XCIxLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjNcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjNcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI5XCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOVwiLHk6XCIxMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI5XCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTFcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCIxMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCIxLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiOS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCI5LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMTEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiMTEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCI1LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCIxMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCI5LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiMTEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSl9LEE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjI1IDFMMTMuMjUgMTRMMTQuNzUgMTRMMTQuNzUgMUwxMy4yNSAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNSA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNSAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDMgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDMgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA3IDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxIDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA3IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDcgNSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDEgNSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDcgMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDEgMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDcgOSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDEgOSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDcgMTEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxIDExKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgOSA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgOSAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDExIDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxMSAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDUgMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDMgMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDcgMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDEgMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDkgMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDExIDEpXCIsZmlsbDpufSkpfSxEPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjI1IDcuNUMxLjI1IDcuMjIzODYgMS40NzM4NiA3IDEuNzUgN0gxMy4yNUMxMy41MjYxIDcgMTMuNzUgNy4yMjM4NiAxMy43NSA3LjVDMTMuNzUgNy43NzYxNCAxMy41MjYxIDggMTMuMjUgOEgxLjc1QzEuNDczODYgOCAxLjI1IDcuNzc2MTQgMS4yNSA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxCPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiNS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjNcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI5XCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTFcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjkuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgMS40OTk5NEMxIDEuMjIzOCAxLjIyMzg2IDAuOTk5OTM5IDEuNSAwLjk5OTkzOUg2VjEuOTk5OTRIMlY1Ljk5OTk0SDFWMS40OTk5NFpNMTMgMS45OTk5NEg5VjAuOTk5OTM5SDEzLjVDMTMuNzc2MSAwLjk5OTkzOSAxNCAxLjIyMzggMTQgMS40OTk5NFY1Ljk5OTk0SDEzVjEuOTk5OTRaTTEgMTMuNDk5OVY4Ljk5OTk0SDJWMTIuOTk5OUg2VjEzLjk5OTlIMS41QzEuMjIzODYgMTMuOTk5OSAxIDEzLjc3NjEgMSAxMy40OTk5Wk0xMyAxMi45OTk5VjguOTk5OTRIMTRWMTMuNDk5OUMxNCAxMy43NzYxIDEzLjc3NjEgMTMuOTk5OSAxMy41IDEzLjk5OTlIOS41VjEyLjk5OTlIMTNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSwkPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjUgM0MxLjIyMzg2IDMgMSAzLjIyMzg2IDEgMy41QzEgMy43NzYxNCAxLjIyMzg2IDQgMS41IDRIMTMuNUMxMy43NzYxIDQgMTQgMy43NzYxNCAxNCAzLjVDMTQgMy4yMjM4NiAxMy43NzYxIDMgMTMuNSAzSDEuNVpNMSA3LjVDMSA3LjIyMzg2IDEuMjIzODYgNyAxLjUgN0gzLjVDMy43NzYxNCA3IDQgNy4yMjM4NiA0IDcuNUM0IDcuNzc2MTQgMy43NzYxNCA4IDMuNSA4SDEuNUMxLjIyMzg2IDggMSA3Ljc3NjE0IDEgNy41Wk0xIDExLjVDMSAxMS4yMjM5IDEuMjIzODYgMTEgMS41IDExQzEuNzc2MTQgMTEgMiAxMS4yMjM5IDIgMTEuNUMyIDExLjc3NjEgMS43NzYxNCAxMiAxLjUgMTJDMS4yMjM4NiAxMiAxIDExLjc3NjEgMSAxMS41Wk0zIDExLjVDMyAxMS4yMjM5IDMuMjIzODYgMTEgMy41IDExQzMuNzc2MTQgMTEgNCAxMS4yMjM5IDQgMTEuNUM0IDExLjc3NjEgMy43NzYxNCAxMiAzLjUgMTJDMy4yMjM4NiAxMiAzIDExLjc3NjEgMyAxMS41Wk01LjUgMTFDNS4yMjM4NiAxMSA1IDExLjIyMzkgNSAxMS41QzUgMTEuNzc2MSA1LjIyMzg2IDEyIDUuNSAxMkM1Ljc3NjE0IDEyIDYgMTEuNzc2MSA2IDExLjVDNiAxMS4yMjM5IDUuNzc2MTQgMTEgNS41IDExWk03IDExLjVDNyAxMS4yMjM5IDcuMjIzODYgMTEgNy41IDExQzcuNzc2MTQgMTEgOCAxMS4yMjM5IDggMTEuNUM4IDExLjc3NjEgNy43NzYxNCAxMiA3LjUgMTJDNy4yMjM4NiAxMiA3IDExLjc3NjEgNyAxMS41Wk05LjUgMTFDOS4yMjM4NiAxMSA5IDExLjIyMzkgOSAxMS41QzkgMTEuNzc2MSA5LjIyMzg2IDEyIDkuNSAxMkM5Ljc3NjE0IDEyIDEwIDExLjc3NjEgMTAgMTEuNUMxMCAxMS4yMjM5IDkuNzc2MTQgMTEgOS41IDExWk0xMSAxMS41QzExIDExLjIyMzkgMTEuMjIzOSAxMSAxMS41IDExQzExLjc3NjEgMTEgMTIgMTEuMjIzOSAxMiAxMS41QzEyIDExLjc3NjEgMTEuNzc2MSAxMiAxMS41IDEyQzExLjIyMzkgMTIgMTEgMTEuNzc2MSAxMSAxMS41Wk0xMy41IDExQzEzLjIyMzkgMTEgMTMgMTEuMjIzOSAxMyAxMS41QzEzIDExLjc3NjEgMTMuMjIzOSAxMiAxMy41IDEyQzEzLjc3NjEgMTIgMTQgMTEuNzc2MSAxNCAxMS41QzE0IDExLjIyMzkgMTMuNzc2MSAxMSAxMy41IDExWk02LjUgN0M2LjIyMzg2IDcgNiA3LjIyMzg2IDYgNy41QzYgNy43NzYxNCA2LjIyMzg2IDggNi41IDhIOC41QzguNzc2MTQgOCA5IDcuNzc2MTQgOSA3LjVDOSA3LjIyMzg2IDguNzc2MTQgNyA4LjUgN0g2LjVaTTExIDcuNUMxMSA3LjIyMzg2IDExLjIyMzkgNyAxMS41IDdIMTMuNUMxMy43NzYxIDcgMTQgNy4yMjM4NiAxNCA3LjVDMTQgNy43NzYxNCAxMy43NzYxIDggMTMuNSA4SDExLjVDMTEuMjIzOSA4IDExIDcuNzc2MTQgMTEgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTQgMS43NUwxIDEuNzVMMSAwLjI0OTk5OUwxNCAwLjI1TDE0IDEuNzVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiMTBcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDggMTApXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjJcIix5OlwiMTBcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDIgMTApXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiMTJcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDggMTIpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjJcIix5OlwiMTJcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDIgMTIpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiOFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgOCA4KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA4IDE0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIyXCIseTpcIjhcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDIgOClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMlwiLHk6XCIxNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMiAxNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTBcIix5OlwiOFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTAgOClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTBcIix5OlwiMTRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDEwIDE0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMlwiLHk6XCI4XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxMiA4KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMlwiLHk6XCIxNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTIgMTQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjZcIix5OlwiOFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgNiA4KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI2XCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA2IDE0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI0XCIseTpcIjhcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDQgOClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNFwiLHk6XCIxNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgNCAxNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCI2XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA4IDYpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjJcIix5OlwiNlwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMiA2KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDggNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMlwiLHk6XCI0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAyIDQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjEwXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxNCAxMClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiMTJcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDE0IDEyKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCI4XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxNCA4KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCIxNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTQgMTQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjZcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDE0IDYpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDE0IDQpXCIsZmlsbDpufSkpfSxOPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi41IDJIMi41QzIuMjIzODYgMiAyIDIuMjIzODYgMiAyLjVWMTIuNUMyIDEyLjc3NjEgMi4yMjM4NiAxMyAyLjUgMTNIMTIuNUMxMi43NzYxIDEzIDEzIDEyLjc3NjEgMTMgMTIuNVYyLjVDMTMgMi4yMjM4NiAxMi43NzYxIDIgMTIuNSAyWk0yLjUgMUMxLjY3MTU3IDEgMSAxLjY3MTU3IDEgMi41VjEyLjVDMSAxMy4zMjg0IDEuNjcxNTcgMTQgMi41IDE0SDEyLjVDMTMuMzI4NCAxNCAxNCAxMy4zMjg0IDE0IDEyLjVWMi41QzE0IDEuNjcxNTcgMTMuMzI4NCAxIDEyLjUgMUgyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx6PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjk5OTk4IDAuOTk5OTc2QzEuNDQ3NjkgMC45OTk5NzYgMC45OTk5NzYgMS40NDc2OSAwLjk5OTk3NiAxLjk5OTk4VjEzQzAuOTk5OTc2IDEzLjU1MjMgMS40NDc2OSAxNCAxLjk5OTk4IDE0SDEzQzEzLjU1MjMgMTQgMTQgMTMuNTUyMyAxNCAxM1YxLjk5OTk4QzE0IDEuNDQ3NjkgMTMuNTUyMyAwLjk5OTk3NiAxMyAwLjk5OTk3NkgxLjk5OTk4Wk0xLjk5OTk4IDEuOTk5OThMMTMgMS45OTk5OFYxM0gxLjk5OTk4VjEuOTk5OThaTTQuNDk5OTYgMy45OTk5NkM0LjIyMzgyIDMuOTk5OTYgMy45OTk5NiA0LjIyMzgyIDMuOTk5OTYgNC40OTk5NlYxMC41QzMuOTk5OTYgMTAuNzc2MSA0LjIyMzgyIDExIDQuNDk5OTYgMTFIMTAuNUMxMC43NzYxIDExIDExIDEwLjc3NjEgMTEgMTAuNVY0LjQ5OTk2QzExIDQuMjIzODIgMTAuNzc2MSAzLjk5OTk2IDEwLjUgMy45OTk5Nkg0LjQ5OTk2Wk00Ljk5OTk2IDkuOTk5OTZWNC45OTk5Nkg5Ljk5OTk2VjkuOTk5OTZINC45OTk5NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgNUgxM0MxMy41NTIzIDUgMTQgNS40NDc3MiAxNCA2VjlDMTQgOS41NTIyOCAxMy41NTIzIDEwIDEzIDEwSDJDMS40NDc3MiAxMCAxIDkuNTUyMjggMSA5VjZDMSA1LjQ0NzcyIDEuNDQ3NzIgNSAyIDVaTTAgNkMwIDQuODk1NDMgMC44OTU0MzEgNCAyIDRIMTNDMTQuMTA0NiA0IDE1IDQuODk1NDMgMTUgNlY5QzE1IDEwLjEwNDYgMTQuMTA0NiAxMSAxMyAxMUgyQzAuODk1NDMgMTEgMCAxMC4xMDQ2IDAgOVY2Wk00LjUgNi43NUM0LjA4NTc5IDYuNzUgMy43NSA3LjA4NTc5IDMuNzUgNy41QzMuNzUgNy45MTQyMSA0LjA4NTc5IDguMjUgNC41IDguMjVDNC45MTQyMSA4LjI1IDUuMjUgNy45MTQyMSA1LjI1IDcuNUM1LjI1IDcuMDg1NzkgNC45MTQyMSA2Ljc1IDQuNSA2Ljc1Wk02Ljc1IDcuNUM2Ljc1IDcuMDg1NzkgNy4wODU3OSA2Ljc1IDcuNSA2Ljc1QzcuOTE0MjEgNi43NSA4LjI1IDcuMDg1NzkgOC4yNSA3LjVDOC4yNSA3LjkxNDIxIDcuOTE0MjEgOC4yNSA3LjUgOC4yNUM3LjA4NTc5IDguMjUgNi43NSA3LjkxNDIxIDYuNzUgNy41Wk0xMC41IDYuNzVDMTAuMDg1OCA2Ljc1IDkuNzUgNy4wODU3OSA5Ljc1IDcuNUM5Ljc1IDcuOTE0MjEgMTAuMDg1OCA4LjI1IDEwLjUgOC4yNUMxMC45MTQyIDguMjUgMTEuMjUgNy45MTQyMSAxMS4yNSA3LjVDMTEuMjUgNy4wODU3OSAxMC45MTQyIDYuNzUgMTAuNSA2Ljc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC41IDFDNC43NzYxNCAxIDUgMS4yMjM4NiA1IDEuNVYySDEwVjEuNUMxMCAxLjIyMzg2IDEwLjIyMzkgMSAxMC41IDFDMTAuNzc2MSAxIDExIDEuMjIzODYgMTEgMS41VjJIMTIuNUMxMy4zMjg0IDIgMTQgMi42NzE1NyAxNCAzLjVWMTIuNUMxNCAxMy4zMjg0IDEzLjMyODQgMTQgMTIuNSAxNEgyLjVDMS42NzE1NyAxNCAxIDEzLjMyODQgMSAxMi41VjMuNUMxIDIuNjcxNTcgMS42NzE1NyAyIDIuNSAySDRWMS41QzQgMS4yMjM4NiA0LjIyMzg2IDEgNC41IDFaTTEwIDNWMy41QzEwIDMuNzc2MTQgMTAuMjIzOSA0IDEwLjUgNEMxMC43NzYxIDQgMTEgMy43NzYxNCAxMSAzLjVWM0gxMi41QzEyLjc3NjEgMyAxMyAzLjIyMzg2IDEzIDMuNVY1SDJWMy41QzIgMy4yMjM4NiAyLjIyMzg2IDMgMi41IDNINFYzLjVDNCAzLjc3NjE0IDQuMjIzODYgNCA0LjUgNEM0Ljc3NjE0IDQgNSAzLjc3NjE0IDUgMy41VjNIMTBaTTIgNlYxMi41QzIgMTIuNzc2MSAyLjIyMzg2IDEzIDIuNSAxM0gxMi41QzEyLjc3NjEgMTMgMTMgMTIuNzc2MSAxMyAxMi41VjZIMlpNNyA3LjVDNyA3LjIyMzg2IDcuMjIzODYgNyA3LjUgN0M3Ljc3NjE0IDcgOCA3LjIyMzg2IDggNy41QzggNy43NzYxNCA3Ljc3NjE0IDggNy41IDhDNy4yMjM4NiA4IDcgNy43NzYxNCA3IDcuNVpNOS41IDdDOS4yMjM4NiA3IDkgNy4yMjM4NiA5IDcuNUM5IDcuNzc2MTQgOS4yMjM4NiA4IDkuNSA4QzkuNzc2MTQgOCAxMCA3Ljc3NjE0IDEwIDcuNUMxMCA3LjIyMzg2IDkuNzc2MTQgNyA5LjUgN1pNMTEgNy41QzExIDcuMjIzODYgMTEuMjIzOSA3IDExLjUgN0MxMS43NzYxIDcgMTIgNy4yMjM4NiAxMiA3LjVDMTIgNy43NzYxNCAxMS43NzYxIDggMTEuNSA4QzExLjIyMzkgOCAxMSA3Ljc3NjE0IDExIDcuNVpNMTEuNSA5QzExLjIyMzkgOSAxMSA5LjIyMzg2IDExIDkuNUMxMSA5Ljc3NjE0IDExLjIyMzkgMTAgMTEuNSAxMEMxMS43NzYxIDEwIDEyIDkuNzc2MTQgMTIgOS41QzEyIDkuMjIzODYgMTEuNzc2MSA5IDExLjUgOVpNOSA5LjVDOSA5LjIyMzg2IDkuMjIzODYgOSA5LjUgOUM5Ljc3NjE0IDkgMTAgOS4yMjM4NiAxMCA5LjVDMTAgOS43NzYxNCA5Ljc3NjE0IDEwIDkuNSAxMEM5LjIyMzg2IDEwIDkgOS43NzYxNCA5IDkuNVpNNy41IDlDNy4yMjM4NiA5IDcgOS4yMjM4NiA3IDkuNUM3IDkuNzc2MTQgNy4yMjM4NiAxMCA3LjUgMTBDNy43NzYxNCAxMCA4IDkuNzc2MTQgOCA5LjVDOCA5LjIyMzg2IDcuNzc2MTQgOSA3LjUgOVpNNSA5LjVDNSA5LjIyMzg2IDUuMjIzODYgOSA1LjUgOUM1Ljc3NjE0IDkgNiA5LjIyMzg2IDYgOS41QzYgOS43NzYxNCA1Ljc3NjE0IDEwIDUuNSAxMEM1LjIyMzg2IDEwIDUgOS43NzYxNCA1IDkuNVpNMy41IDlDMy4yMjM4NiA5IDMgOS4yMjM4NiAzIDkuNUMzIDkuNzc2MTQgMy4yMjM4NiAxMCAzLjUgMTBDMy43NzYxNCAxMCA0IDkuNzc2MTQgNCA5LjVDNCA5LjIyMzg2IDMuNzc2MTQgOSAzLjUgOVpNMyAxMS41QzMgMTEuMjIzOSAzLjIyMzg2IDExIDMuNSAxMUMzLjc3NjE0IDExIDQgMTEuMjIzOSA0IDExLjVDNCAxMS43NzYxIDMuNzc2MTQgMTIgMy41IDEyQzMuMjIzODYgMTIgMyAxMS43NzYxIDMgMTEuNVpNNS41IDExQzUuMjIzODYgMTEgNSAxMS4yMjM5IDUgMTEuNUM1IDExLjc3NjEgNS4yMjM4NiAxMiA1LjUgMTJDNS43NzYxNCAxMiA2IDExLjc3NjEgNiAxMS41QzYgMTEuMjIzOSA1Ljc3NjE0IDExIDUuNSAxMVpNNyAxMS41QzcgMTEuMjIzOSA3LjIyMzg2IDExIDcuNSAxMUM3Ljc3NjE0IDExIDggMTEuMjIzOSA4IDExLjVDOCAxMS43NzYxIDcuNzc2MTQgMTIgNy41IDEyQzcuMjIzODYgMTIgNyAxMS43NzYxIDcgMTEuNVpNOS41IDExQzkuMjIzODYgMTEgOSAxMS4yMjM5IDkgMTEuNUM5IDExLjc3NjEgOS4yMjM4NiAxMiA5LjUgMTJDOS43NzYxNCAxMiAxMCAxMS43NzYxIDEwIDExLjVDMTAgMTEuMjIzOSA5Ljc3NjE0IDExIDkuNSAxMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgM0MxLjQ0NzcyIDMgMSAzLjQ0NzcyIDEgNFYxMUMxIDExLjU1MjMgMS40NDc3MiAxMiAyIDEySDEzQzEzLjU1MjMgMTIgMTQgMTEuNTUyMyAxNCAxMVY0QzE0IDMuNDQ3NzIgMTMuNTUyMyAzIDEzIDNIMlpNMCA0QzAgMi44OTU0MyAwLjg5NTQzMSAyIDIgMkgxM0MxNC4xMDQ2IDIgMTUgMi44OTU0MyAxNSA0VjExQzE1IDEyLjEwNDYgMTQuMTA0NiAxMyAxMyAxM0gyQzAuODk1NDMxIDEzIDAgMTIuMTA0NiAwIDExVjRaTTIgNC4yNUMyIDQuMTExOTMgMi4xMTE5MyA0IDIuMjUgNEg0Ljc1QzQuODg4MDcgNCA1IDQuMTExOTMgNSA0LjI1VjUuNzU0NTRDNSA1Ljg5MjYxIDQuODg4MDcgNi4wMDQ1NCA0Ljc1IDYuMDA0NTRIMi4yNUMyLjExMTkzIDYuMDA0NTQgMiA1Ljg5MjYxIDIgNS43NTQ1NFY0LjI1Wk0xMi4xMDEgNy41ODQyMUMxMi4xMDEgOS4wMjA3MyAxMC45MzY1IDEwLjE4NTMgOS40OTk5OCAxMC4xODUzQzguMDYzNDYgMTAuMTg1MyA2Ljg5ODkzIDkuMDIwNzMgNi44OTg5MyA3LjU4NDIxQzYuODk4OTMgNi4xNDc2OSA4LjA2MzQ2IDQuOTgzMTUgOS40OTk5OCA0Ljk4MzE1QzEwLjkzNjUgNC45ODMxNSAxMi4xMDEgNi4xNDc2OSAxMi4xMDEgNy41ODQyMVpNMTMuMTAxIDcuNTg0MjFDMTMuMTAxIDkuNTczMDIgMTEuNDg4OCAxMS4xODUzIDkuNDk5OTggMTEuMTg1M0M3LjUxMTE3IDExLjE4NTMgNS44OTg5MyA5LjU3MzAyIDUuODk4OTMgNy41ODQyMUM1Ljg5ODkzIDUuNTk1NCA3LjUxMTE3IDMuOTgzMTUgOS40OTk5OCAzLjk4MzE1QzExLjQ4ODggMy45ODMxNSAxMy4xMDEgNS41OTU0IDEzLjEwMSA3LjU4NDIxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiAzLjVDMiAzLjIyMzg2IDIuMjIzODYgMyAyLjUgM0gxMi41QzEyLjc3NjEgMyAxMyAzLjIyMzg2IDEzIDMuNVY5LjVDMTMgOS43NzYxNCAxMi43NzYxIDEwIDEyLjUgMTBIMi41QzIuMjIzODYgMTAgMiA5Ljc3NjE0IDIgOS41VjMuNVpNMiAxMC45MTQ2QzEuNDE3NCAxMC43MDg3IDEgMTAuMTUzMSAxIDkuNVYzLjVDMSAyLjY3MTU3IDEuNjcxNTcgMiAyLjUgMkgxMi41QzEzLjMyODQgMiAxNCAyLjY3MTU3IDE0IDMuNVY5LjVDMTQgMTAuMTUzMSAxMy41ODI2IDEwLjcwODcgMTMgMTAuOTE0NlYxMS41QzEzIDEyLjMyODQgMTIuMzI4NCAxMyAxMS41IDEzSDMuNUMyLjY3MTU3IDEzIDIgMTIuMzI4NCAyIDExLjVWMTAuOTE0NlpNMTIgMTFWMTEuNUMxMiAxMS43NzYxIDExLjc3NjEgMTIgMTEuNSAxMkgzLjVDMy4yMjM4NiAxMiAzIDExLjc3NjEgMyAxMS41VjExSDEyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi41IDNDMi4yMjM4NiAzIDIgMy4yMjM4NiAyIDMuNVY5LjVDMiA5Ljc3NjE0IDIuMjIzODYgMTAgMi41IDEwSDEyLjVDMTIuNzc2MSAxMCAxMyA5Ljc3NjE0IDEzIDkuNVYzLjVDMTMgMy4yMjM4NiAxMi43NzYxIDMgMTIuNSAzSDIuNVpNMSA5LjVDMSAxMC4xNTMxIDEuNDE3NCAxMC43MDg3IDIgMTAuOTE0NlYxMS41QzIgMTIuMzI4NCAyLjY3MTU3IDEzIDMuNSAxM0gxMS41QzEyLjMyODQgMTMgMTMgMTIuMzI4NCAxMyAxMS41VjEwLjkxNDZDMTMuNTgyNiAxMC43MDg3IDE0IDEwLjE1MzEgMTQgOS41VjMuNUMxNCAyLjY3MTU3IDEzLjMyODQgMiAxMi41IDJIMi41QzEuNjcxNTcgMiAxIDIuNjcxNTcgMSAzLjVWOS41Wk0xMiAxMS41VjExSDNWMTEuNUMzIDExLjc3NjEgMy4yMjM4NiAxMiAzLjUgMTJIMTEuNUMxMS43NzYxIDEyIDEyIDExLjc3NjEgMTIgMTEuNVpNNS41IDZDNS4yMjM4NiA2IDUgNi4yMjM4NiA1IDYuNUM1IDYuNzc2MTQgNS4yMjM4NiA3IDUuNSA3SDkuNUM5Ljc3NjE0IDcgMTAgNi43NzYxNCAxMCA2LjVDMTAgNi4yMjM4NiA5Ljc3NjE0IDYgOS41IDZINS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiAzLjVDMiAzLjIyMzg2IDIuMjIzODYgMyAyLjUgM0gxMi41QzEyLjc3NjEgMyAxMyAzLjIyMzg2IDEzIDMuNVY5LjVDMTMgOS43NzYxNCAxMi43NzYxIDEwIDEyLjUgMTBIMi41QzIuMjIzODYgMTAgMiA5Ljc3NjE0IDIgOS41VjMuNVpNMiAxMC45MTQ2QzEuNDE3NCAxMC43MDg3IDEgMTAuMTUzMSAxIDkuNVYzLjVDMSAyLjY3MTU3IDEuNjcxNTcgMiAyLjUgMkgxMi41QzEzLjMyODQgMiAxNCAyLjY3MTU3IDE0IDMuNVY5LjVDMTQgMTAuMTUzMSAxMy41ODI2IDEwLjcwODcgMTMgMTAuOTE0NlYxMS41QzEzIDEyLjMyODQgMTIuMzI4NCAxMyAxMS41IDEzSDMuNUMyLjY3MTU3IDEzIDIgMTIuMzI4NCAyIDExLjVWMTAuOTE0NlpNMTIgMTFWMTEuNUMxMiAxMS43NzYxIDExLjc3NjEgMTIgMTEuNSAxMkgzLjVDMy4yMjM4NiAxMiAzIDExLjc3NjEgMyAxMS41VjExSDEyWk01IDYuNUM1IDYuMjIzODYgNS4yMjM4NiA2IDUuNSA2SDdWNC41QzcgNC4yMjM4NiA3LjIyMzg2IDQgNy41IDRDNy43NzYxNCA0IDggNC4yMjM4NiA4IDQuNVY2SDkuNUM5Ljc3NjE0IDYgMTAgNi4yMjM4NiAxMCA2LjVDMTAgNi43NzYxNCA5Ljc3NjE0IDcgOS41IDdIOFY4LjVDOCA4Ljc3NjE0IDcuNzc2MTQgOSA3LjUgOUM3LjIyMzg2IDkgNyA4Ljc3NjE0IDcgOC41VjdINS41QzUuMjIzODYgNyA1IDYuNzc2MTQgNSA2LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxYPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjE4MTc5IDYuMTgxODFDNC4zNTc1MyA2LjAwNjA4IDQuNjQyNDUgNi4wMDYwOCA0LjgxODE5IDYuMTgxODFMNy40OTk5OSA4Ljg2MzYyTDEwLjE4MTggNi4xODE4MUMxMC4zNTc1IDYuMDA2MDggMTAuNjQyNCA2LjAwNjA4IDEwLjgxODIgNi4xODE4MUMxMC45OTM5IDYuMzU3NTUgMTAuOTkzOSA2LjY0MjQ3IDEwLjgxODIgNi44MTgyMUw3LjgxODE5IDkuODE4MjFDNy43MzM3OSA5LjkwMjYgNy42MTkzNCA5Ljk1MDAxIDcuNDk5OTkgOS45NTAwMUM3LjM4MDY0IDkuOTUwMDEgNy4yNjYxOCA5LjkwMjYgNy4xODE3OSA5LjgxODIxTDQuMTgxNzkgNi44MTgyMUM0LjAwNjA1IDYuNjQyNDcgNC4wMDYwNSA2LjM1NzU1IDQuMTgxNzkgNi4xODE4MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguODE4MDkgNC4xODE3OUM4Ljk5MzgzIDQuMzU3NTMgOC45OTM4MyA0LjY0MjQ1IDguODE4MDkgNC44MTgxOUw2LjEzNjI5IDcuNDk5OTlMOC44MTgwOSAxMC4xODE4QzguOTkzODMgMTAuMzU3NSA4Ljk5MzgzIDEwLjY0MjQgOC44MTgwOSAxMC44MTgyQzguNjQyMzYgMTAuOTkzOSA4LjM1NzQzIDEwLjk5MzkgOC4xODE3IDEwLjgxODJMNS4xODE3IDcuODE4MTlDNS4wOTczMSA3LjczMzc5IDUuMDQ5OSA3LjYxOTMzIDUuMDQ5OSA3LjQ5OTk5QzUuMDQ5OSA3LjM4MDY0IDUuMDk3MzEgNy4yNjYxOCA1LjE4MTcgNy4xODE3OUw4LjE4MTcgNC4xODE3OUM4LjM1NzQzIDQuMDA2MDUgOC42NDIzNiA0LjAwNjA1IDguODE4MDkgNC4xODE3OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEo9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuMTgxOTQgNC4xODE4NUM2LjM1NzY3IDQuMDA2MTEgNi42NDI2IDQuMDA2MTEgNi44MTgzMyA0LjE4MTg1TDkuODE4MzMgNy4xODE4NUM5LjkwMjcyIDcuMjY2MjQgOS45NTAxMyA3LjM4MDcgOS45NTAxMyA3LjUwMDA1QzkuOTUwMTMgNy42MTk0IDkuOTAyNzIgNy43MzM4NiA5LjgxODMzIDcuODE4MjVMNi44MTgzMyAxMC44MTgyQzYuNjQyNiAxMC45OTQgNi4zNTc2NyAxMC45OTQgNi4xODE5NCAxMC44MTgyQzYuMDA2MiAxMC42NDI1IDYuMDA2MiAxMC4zNTc2IDYuMTgxOTQgMTAuMTgxOUw4Ljg2Mzc0IDcuNTAwMDVMNi4xODE5NCA0LjgxODI1QzYuMDA2MiA0LjY0MjUxIDYuMDA2MiA0LjM1NzU5IDYuMTgxOTQgNC4xODE4NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGVlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjkzMTc5IDUuNDMxNzlDNC43NTYwNSA1LjYwNzUzIDQuNzU2MDUgNS44OTI0NSA0LjkzMTc5IDYuMDY4MTlDNS4xMDc1MyA2LjI0MzkyIDUuMzkyNDUgNi4yNDM5MiA1LjU2ODE5IDYuMDY4MTlMNy40OTk5OSA0LjEzNjM4TDkuNDMxNzkgNi4wNjgxOUM5LjYwNzUzIDYuMjQzOTIgOS44OTI0NSA2LjI0MzkyIDEwLjA2ODIgNi4wNjgxOUMxMC4yNDM5IDUuODkyNDUgMTAuMjQzOSA1LjYwNzUzIDEwLjA2ODIgNS40MzE3OUw3LjgxODE5IDMuMTgxNzlDNy43MzM3OSAzLjA5NzQgNy42MTkzMyAzLjA0OTk5IDcuNDk5OTkgMy4wNDk5OUM3LjM4MDY0IDMuMDQ5OTkgNy4yNjYxOCAzLjA5NzQgNy4xODE3OSAzLjE4MTc5TDQuOTMxNzkgNS40MzE3OVpNMTAuMDY4MiA5LjU2ODE5QzEwLjI0MzkgOS4zOTI0NSAxMC4yNDM5IDkuMTA3NTMgMTAuMDY4MiA4LjkzMTc5QzkuODkyNDUgOC43NTYwNiA5LjYwNzUzIDguNzU2MDYgOS40MzE3OSA4LjkzMTc5TDcuNDk5OTkgMTAuODYzNkw1LjU2ODE5IDguOTMxNzlDNS4zOTI0NSA4Ljc1NjA2IDUuMTA3NTMgOC43NTYwNiA0LjkzMTc5IDguOTMxNzlDNC43NTYwNSA5LjEwNzUzIDQuNzU2MDUgOS4zOTI0NSA0LjkzMTc5IDkuNTY4MTlMNy4xODE3OSAxMS44MTgyQzcuMzU3NTMgMTEuOTkzOSA3LjY0MjQ1IDExLjk5MzkgNy44MTgxOSAxMS44MTgyTDEwLjA2ODIgOS41NjgxOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjE4MTc5IDguODE4MTlDNC4wMDYwNSA4LjY0MjQ1IDQuMDA2MDUgOC4zNTc1MyA0LjE4MTc5IDguMTgxNzlMNy4xODE3OSA1LjE4MTc5QzcuMjY2MTggNS4wOTc0IDcuMzgwNjQgNS4wNDk5OSA3LjQ5OTk5IDUuMDQ5OTlDNy42MTkzMyA1LjA0OTk5IDcuNzMzNzkgNS4wOTc0IDcuODE4MTkgNS4xODE3OUwxMC44MTgyIDguMTgxNzlDMTAuOTkzOSA4LjM1NzUzIDEwLjk5MzkgOC42NDI0NSAxMC44MTgyIDguODE4MTlDMTAuNjQyNCA4Ljk5MzkyIDEwLjM1NzUgOC45OTM5MiAxMC4xODE4IDguODE4MTlMNy40OTk5OSA2LjEzNjM4TDQuODE4MTkgOC44MTgxOUM0LjY0MjQ1IDguOTkzOTIgNC4zNTc1MyA4Ljk5MzkyIDQuMTgxNzkgOC44MTgxOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG5lPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi41IDNMMi40OTk5OSAzLjAwMDAyQzEuNjcxNTcgMy4wMDAwMiAwLjk5OTk5OSAzLjY3MTU5IDAuOTk5OTk5IDQuNTAwMDJWOS41MDAwMkMwLjk5OTk5OSAxMC4zMjg0IDEuNjcxNTcgMTEgMi41IDExSDcuNTAwMDJDNy42MzI2MyAxMSA3Ljc1OTgxIDExLjA1MjcgNy44NTM1OCAxMS4xNDY1TDkuOTk5OTkgMTMuMjkyOVYxMS41QzkuOTk5OTkgMTEuMjIzOSAxMC4yMjM5IDExIDEwLjUgMTFIMTIuNUMxMy4zMjg0IDExIDE0IDEwLjMyODQgMTQgOS41MDAwMlY0LjVDMTQgMy42NzE1NyAxMy4zMjg0IDMgMTIuNSAzWk0yLjQ5OTk5IDIuMDAwMDJMMTIuNSAyQzEzLjg4MDcgMiAxNSAzLjExOTI4IDE1IDQuNVY5LjUwMDAyQzE1IDEwLjg4MDcgMTMuODgwNyAxMiAxMi41IDEySDExVjE0LjVDMTEgMTQuNzAyMiAxMC44NzgyIDE0Ljg4NDUgMTAuNjkxMyAxNC45NjE5QzEwLjUwNDUgMTUuMDM5MyAxMC4yODk0IDE0Ljk5NjUgMTAuMTQ2NCAxNC44NTM1TDcuMjkyOTIgMTJIMi41QzEuMTE5MjkgMTIgMCAxMC44ODA3IDAgOS41MDAwMlY0LjUwMDAyQzAgMy4xMTkzMSAxLjExOTI4IDIuMDAwMDIgMi40OTk5OSAyLjAwMDAyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjQ2NjkgMy43MjY4NEMxMS43NTU4IDMuOTE1NzQgMTEuODM2OSA0LjMwMzA4IDExLjY0OCA0LjU5MTk4TDcuMzk3OTkgMTEuMDkyQzcuMjk3ODMgMTEuMjQ1MiA3LjEzNTU2IDExLjM0NjcgNi45NTQwMiAxMS4zNjk5QzYuNzcyNDcgMTEuMzkzMSA2LjU4OTg5IDExLjMzNTUgNi40NTQ0NiAxMS4yMTI0TDMuNzA0NDYgOC43MTI0MUMzLjQ0OTA1IDguNDgwMjIgMy40MzAyMyA4LjA4NDk0IDMuNjYyNDIgNy44Mjk1M0MzLjg5NDYxIDcuNTc0MTIgNC4yODk4OSA3LjU1NTI5IDQuNTQ1MyA3Ljc4NzQ5TDYuNzUyOTIgOS43OTQ0MUwxMC42MDE4IDMuOTA3OTJDMTAuNzkwNyAzLjYxOTAyIDExLjE3OCAzLjUzNzk1IDExLjQ2NjkgMy43MjY4NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG9lPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc3MDQ1QzMuODQyMjIgMC44NzcwNDUgMC44NzcwNzUgMy44NDIxOSAwLjg3NzA3NSA3LjQ5OTg4QzAuODc3MDc1IDExLjE1NzUgMy44NDIyMiAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MxMS4xNTc2IDE0LjEyMjcgMTQuMTIyNyAxMS4xNTc1IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDMuODQyMTkgMTEuMTU3NiAwLjg3NzA0NSA3LjQ5OTkxIDAuODc3MDQ1Wk0xLjgyNzA4IDcuNDk5ODhDMS44MjcwOCA0LjM2Njg2IDQuMzY2ODkgMS44MjcwNCA3LjQ5OTkxIDEuODI3MDRDMTAuNjMyOSAxLjgyNzA0IDEzLjE3MjcgNC4zNjY4NiAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyAxMC42MzI5IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDNC4zNjY4OSAxMy4xNzI3IDEuODI3MDggMTAuNjMyOSAxLjgyNzA4IDcuNDk5ODhaTTEwLjE1ODkgNS41Mzc3NEMxMC4zMTc4IDUuMzExOTEgMTAuMjYzNiA1LjAwMDAxIDEwLjAzNzggNC44NDEwOUM5LjgxMTk0IDQuNjgyMTcgOS41MDAwNCA0LjczNjQyIDkuMzQxMTIgNC45NjIyNUw2LjUxOTc3IDguOTcxNTRMNS4zNTY4MSA3Ljc4NzA2QzUuMTYzMzQgNy41OTAwMiA0Ljg0Njc3IDcuNTg3MTEgNC42NDk3MyA3Ljc4MDU4QzQuNDUyNjggNy45NzQwNCA0LjQ0OTc4IDguMjkwNjEgNC42NDMyNSA4LjQ4NzY1TDYuMjI2NTggMTAuMTAwM0M2LjMzMDU0IDEwLjIwNjIgNi40NzYxNyAxMC4yNjA0IDYuNjI0MDcgMTAuMjQ4M0M2Ljc3MTk3IDEwLjIzNjMgNi45MDY4NiAxMC4xNTkxIDYuOTkyMjYgMTAuMDM3N0wxMC4xNTg5IDUuNTM3NzRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxpZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyAzSDEyVjEySDNMMyAzWk0yIDNDMiAyLjQ0NzcxIDIuNDQ3NzIgMiAzIDJIMTJDMTIuNTUyMyAyIDEzIDIuNDQ3NzIgMTMgM1YxMkMxMyAxMi41NTIzIDEyLjU1MjMgMTMgMTIgMTNIM0MyLjQ0NzcxIDEzIDIgMTIuNTUyMyAyIDEyVjNaTTEwLjM0OTggNS41MTEwNUMxMC41MDYgNS4yODMzNyAxMC40NDgxIDQuOTcyMTIgMTAuMjIwNCA0LjgxNTg3QzkuOTkyNzUgNC42NTk2MSA5LjY4MTUgNC43MTc1MSA5LjUyNTI1IDQuOTQ1MTlMNi42NDA0OCA5LjE0ODU3TDUuMTk3MzMgNy40MDg4OUM1LjAyMTAyIDcuMTk2MzUgNC43MDU4IDcuMTY2OTkgNC40OTMyNyA3LjM0MzI5QzQuMjgwNzMgNy41MTk2IDQuMjUxMzcgNy44MzQ4MiA0LjQyNzY3IDguMDQ3MzVMNi4yOTM0IDEwLjI5NjRDNi4zOTM0OCAxMC40MTcxIDYuNTQ0MzcgMTAuNDgzOCA2LjcwMDk3IDEwLjQ3NjdDNi44NTc1NyAxMC40Njk1IDcuMDAxNzcgMTAuMzg5NCA3LjA5MDQ3IDEwLjI2MDFMMTAuMzQ5OCA1LjUxMTA1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMTM1MjMgNi4xNTgwM0MzLjMyNDEgNS45NTY1NyAzLjY0MDUyIDUuOTQ2MzcgMy44NDE5NyA2LjEzNTIzTDcuNSA5LjU2NDY0TDExLjE1OCA2LjEzNTIzQzExLjM1OTUgNS45NDYzNyAxMS42NzU5IDUuOTU2NTcgMTEuODY0OCA2LjE1ODAzQzEyLjA1MzYgNi4zNTk0OSAxMi4wNDM0IDYuNjc1OTEgMTEuODQyIDYuODY0NzdMNy44NDE5NyAxMC42MTQ4QzcuNjQ5NjQgMTAuNzk1MSA3LjM1MDM2IDEwLjc5NTEgNy4xNTgwMyAxMC42MTQ4TDMuMTU4MDMgNi44NjQ3N0MyLjk1NjU3IDYuNjc1OTEgMi45NDYzNyA2LjM1OTQ5IDMuMTM1MjMgNi4xNTgwM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGxlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04Ljg0MTgyIDMuMTM1MTRDOS4wNDMyNyAzLjMyNDAxIDkuMDUzNDggMy42NDA0MiA4Ljg2NDYyIDMuODQxODhMNS40MzUyMSA3LjQ5OTkxTDguODY0NjIgMTEuMTU3OUM5LjA1MzQ4IDExLjM1OTQgOS4wNDMyNyAxMS42NzU4IDguODQxODIgMTEuODY0N0M4LjY0MDM2IDEyLjA1MzUgOC4zMjM5NCAxMi4wNDMzIDguMTM1MDggMTEuODQxOUw0LjM4NTA4IDcuODQxODhDNC4yMDQ3NyA3LjY0OTU1IDQuMjA0NzcgNy4zNTAyNyA0LjM4NTA4IDcuMTU3OTRMOC4xMzUwOCAzLjE1Nzk0QzguMzIzOTQgMi45NTY0OCA4LjY0MDM2IDIuOTQ2MjggOC44NDE4MiAzLjEzNTE0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sY2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuMTU4NCAzLjEzNTA4QzYuMzU5ODUgMi45NDYyMSA2LjY3NjI3IDIuOTU2NDIgNi44NjUxNCAzLjE1Nzg4TDEwLjYxNTEgNy4xNTc4OEMxMC43OTU0IDcuMzUwMiAxMC43OTU0IDcuNjQ5NDkgMTAuNjE1MSA3Ljg0MTgyTDYuODY1MTQgMTEuODQxOEM2LjY3NjI3IDEyLjA0MzMgNi4zNTk4NSAxMi4wNTM1IDYuMTU4NCAxMS44NjQ2QzUuOTU2OTQgMTEuNjc1NyA1Ljk0NjczIDExLjM1OTMgNi4xMzU2IDExLjE1NzlMOS41NjUgNy40OTk4NUw2LjEzNTYgMy44NDE4MkM1Ljk0NjczIDMuNjQwMzYgNS45NTY5NCAzLjMyMzk0IDYuMTU4NCAzLjEzNTA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sc2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMTM1MjMgOC44NDE5N0MzLjMyNDEgOS4wNDM0MyAzLjY0MDUyIDkuMDUzNjMgMy44NDE5NyA4Ljg2NDc3TDcuNSA1LjQzNTM2TDExLjE1OCA4Ljg2NDc3QzExLjM1OTUgOS4wNTM2MyAxMS42NzU5IDkuMDQzNDMgMTEuODY0OCA4Ljg0MTk3QzEyLjA1MzYgOC42NDA1MSAxMi4wNDM0IDguMzI0MDkgMTEuODQyIDguMTM1MjNMNy44NDE5NyA0LjM4NTIzQzcuNjQ5NjQgNC4yMDQ5MiA3LjM1MDM2IDQuMjA0OTIgNy4xNTgwMyA0LjM4NTIzTDMuMTU4MDMgOC4xMzUyM0MyLjk1NjU3IDguMzI0MDkgMi45NDYzNyA4LjY0MDUxIDMuMTM1MjMgOC44NDE5N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHVlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzA3NSA3LjQ5OTkxQzAuODc3MDc1IDMuODQyMjIgMy44NDIyMiAwLjg3NzA3NSA3LjQ5OTkxIDAuODc3MDc1QzExLjE1NzYgMC44NzcwNzUgMTQuMTIyNyAzLjg0MjIyIDE0LjEyMjcgNy40OTk5MUMxNC4xMjI3IDExLjE1NzYgMTEuMTU3NiAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MzLjg0MjIyIDE0LjEyMjcgMC44NzcwNzUgMTEuMTU3NiAwLjg3NzA3NSA3LjQ5OTkxWk03LjQ5OTkxIDEuODI3MDhDNC4zNjY4OSAxLjgyNzA4IDEuODI3MDggNC4zNjY4OSAxLjgyNzA4IDcuNDk5OTFDMS44MjcwOCAxMC42MzI5IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDMTAuNjMyOSAxMy4xNzI3IDEzLjE3MjcgMTAuNjMyOSAxMy4xNzI3IDcuNDk5OTFDMTMuMTcyNyA0LjM2Njg5IDEwLjYzMjkgMS44MjcwOCA3LjQ5OTkxIDEuODI3MDhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxkZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3NzA3NUMzLjg0MjIyIDAuODc3MDc1IDAuODc3MDc1IDMuODQyMjIgMC44NzcwNzUgNy40OTk5MUMwLjg3NzA3NSAxMS4xNTc2IDMuODQyMjIgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMTEuMTU3NiAxNC4xMjI3IDE0LjEyMjcgMTEuMTU3NiAxNC4xMjI3IDcuNDk5OTFDMTQuMTIyNyAzLjg0MjIyIDExLjE1NzYgMC44NzcwNzUgNy40OTk5MSAwLjg3NzA3NVpNMy44NTc2OCAzLjE1MDU3QzQuODQzMTEgMi4zMjQ0OCA2LjExMzQyIDEuODI3MDggNy40OTk5MSAxLjgyNzA4QzEwLjYzMjkgMS44MjcwOCAxMy4xNzI3IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxQzEzLjE3MjcgOC44ODYzOCAxMi42NzUzIDEwLjE1NjcgMTEuODQ5MiAxMS4xNDIxTDMuODU3NjggMy4xNTA1N1pNMy4xNTA1NyAzLjg1NzY4QzIuMzI0NDggNC44NDMxMSAxLjgyNzA4IDYuMTEzNDIgMS44MjcwOCA3LjQ5OTkxQzEuODI3MDggMTAuNjMyOSA0LjM2Njg5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzguODg2MzggMTMuMTcyNyAxMC4xNTY3IDEyLjY3NTMgMTEuMTQyMSAxMS44NDkyTDMuMTUwNTcgMy44NTc2OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGZlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDJWMUgxMFYySDVaTTQuNzUgMEM0LjMzNTc5IDAgNCAwLjMzNTc4NiA0IDAuNzVWMUgzLjVDMi42NzE1NyAxIDIgMS42NzE1NyAyIDIuNVYxMi41QzIgMTMuMzI4NCAyLjY3MTU3IDE0IDMuNSAxNEgxMS41QzEyLjMyODQgMTQgMTMgMTMuMzI4NCAxMyAxMi41VjIuNUMxMyAxLjY3MTU3IDEyLjMyODQgMSAxMS41IDFIMTFWMC43NUMxMSAwLjMzNTc4NiAxMC42NjQyIDAgMTAuMjUgMEg0Ljc1Wk0xMSAyVjIuMjVDMTEgMi42NjQyMSAxMC42NjQyIDMgMTAuMjUgM0g0Ljc1QzQuMzM1NzkgMyA0IDIuNjY0MjEgNCAyLjI1VjJIMy41QzMuMjIzODYgMiAzIDIuMjIzODYgMyAyLjVWMTIuNUMzIDEyLjc3NjEgMy4yMjM4NiAxMyAzLjUgMTNIMTEuNUMxMS43NzYxIDEzIDEyIDEyLjc3NjEgMTIgMTIuNVYyLjVDMTIgMi4yMjM4NiAxMS43NzYxIDIgMTEuNSAySDExWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUgMlYxSDEwVjJINVpNNC43NSAwQzQuMzM1NzkgMCA0IDAuMzM1Nzg2IDQgMC43NVYxSDMuNUMyLjY3MTU3IDEgMiAxLjY3MTU3IDIgMi41VjEyLjVDMiAxMy4zMjg0IDIuNjcxNTcgMTQgMy41IDE0SDdWMTNIMy41QzMuMjIzODYgMTMgMyAxMi43NzYxIDMgMTIuNVYyLjVDMyAyLjIyMzg2IDMuMjIzODYgMiAzLjUgMkg0VjIuMjVDNCAyLjY2NDIxIDQuMzM1NzkgMyA0Ljc1IDNIMTAuMjVDMTAuNjY0MiAzIDExIDIuNjY0MjEgMTEgMi4yNVYySDExLjVDMTEuNzc2MSAyIDEyIDIuMjIzODYgMTIgMi41VjdIMTNWMi41QzEzIDEuNjcxNTcgMTIuMzI4NCAxIDExLjUgMUgxMVYwLjc1QzExIDAuMzM1Nzg2IDEwLjY2NDIgMCAxMC4yNSAwSDQuNzVaTTkgOC41QzkgOC43NzYxNCA4Ljc3NjE0IDkgOC41IDlDOC4yMjM4NiA5IDggOC43NzYxNCA4IDguNUM4IDguMjIzODYgOC4yMjM4NiA4IDguNSA4QzguNzc2MTQgOCA5IDguMjIzODYgOSA4LjVaTTEwLjUgOUMxMC43NzYxIDkgMTEgOC43NzYxNCAxMSA4LjVDMTEgOC4yMjM4NiAxMC43NzYxIDggMTAuNSA4QzEwLjIyMzkgOCAxMCA4LjIyMzg2IDEwIDguNUMxMCA4Ljc3NjE0IDEwLjIyMzkgOSAxMC41IDlaTTEzIDguNUMxMyA4Ljc3NjE0IDEyLjc3NjEgOSAxMi41IDlDMTIuMjIzOSA5IDEyIDguNzc2MTQgMTIgOC41QzEyIDguMjIzODYgMTIuMjIzOSA4IDEyLjUgOEMxMi43NzYxIDggMTMgOC4yMjM4NiAxMyA4LjVaTTE0LjUgOUMxNC43NzYxIDkgMTUgOC43NzYxNCAxNSA4LjVDMTUgOC4yMjM4NiAxNC43NzYxIDggMTQuNSA4QzE0LjIyMzkgOCAxNCA4LjIyMzg2IDE0IDguNUMxNCA4Ljc3NjE0IDE0LjIyMzkgOSAxNC41IDlaTTE1IDEwLjVDMTUgMTAuNzc2MSAxNC43NzYxIDExIDE0LjUgMTFDMTQuMjIzOSAxMSAxNCAxMC43NzYxIDE0IDEwLjVDMTQgMTAuMjIzOSAxNC4yMjM5IDEwIDE0LjUgMTBDMTQuNzc2MSAxMCAxNSAxMC4yMjM5IDE1IDEwLjVaTTE0LjUgMTNDMTQuNzc2MSAxMyAxNSAxMi43NzYxIDE1IDEyLjVDMTUgMTIuMjIzOSAxNC43NzYxIDEyIDE0LjUgMTJDMTQuMjIzOSAxMiAxNCAxMi4yMjM5IDE0IDEyLjVDMTQgMTIuNzc2MSAxNC4yMjM5IDEzIDE0LjUgMTNaTTE0LjUgMTVDMTQuNzc2MSAxNSAxNSAxNC43NzYxIDE1IDE0LjVDMTUgMTQuMjIzOSAxNC43NzYxIDE0IDE0LjUgMTRDMTQuMjIzOSAxNCAxNCAxNC4yMjM5IDE0IDE0LjVDMTQgMTQuNzc2MSAxNC4yMjM5IDE1IDE0LjUgMTVaTTguNSAxMUM4Ljc3NjE0IDExIDkgMTAuNzc2MSA5IDEwLjVDOSAxMC4yMjM5IDguNzc2MTQgMTAgOC41IDEwQzguMjIzODYgMTAgOCAxMC4yMjM5IDggMTAuNUM4IDEwLjc3NjEgOC4yMjM4NiAxMSA4LjUgMTFaTTkgMTIuNUM5IDEyLjc3NjEgOC43NzYxNCAxMyA4LjUgMTNDOC4yMjM4NiAxMyA4IDEyLjc3NjEgOCAxMi41QzggMTIuMjIzOSA4LjIyMzg2IDEyIDguNSAxMkM4Ljc3NjE0IDEyIDkgMTIuMjIzOSA5IDEyLjVaTTguNSAxNUM4Ljc3NjE0IDE1IDkgMTQuNzc2MSA5IDE0LjVDOSAxNC4yMjM5IDguNzc2MTQgMTQgOC41IDE0QzguMjIzODYgMTQgOCAxNC4yMjM5IDggMTQuNUM4IDE0Ljc3NjEgOC4yMjM4NiAxNSA4LjUgMTVaTTExIDE0LjVDMTEgMTQuNzc2MSAxMC43NzYxIDE1IDEwLjUgMTVDMTAuMjIzOSAxNSAxMCAxNC43NzYxIDEwIDE0LjVDMTAgMTQuMjIzOSAxMC4yMjM5IDE0IDEwLjUgMTRDMTAuNzc2MSAxNCAxMSAxNC4yMjM5IDExIDE0LjVaTTEyLjUgMTVDMTIuNzc2MSAxNSAxMyAxNC43NzYxIDEzIDE0LjVDMTMgMTQuMjIzOSAxMi43NzYxIDE0IDEyLjUgMTRDMTIuMjIzOSAxNCAxMiAxNC4yMjM5IDEyIDE0LjVDMTIgMTQuNzc2MSAxMi4yMjM5IDE1IDEyLjUgMTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxDZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41MDAwOSAwLjg3NzAxNEMzLjg0MjQxIDAuODc3MDE0IDAuODc3MjU4IDMuODQyMTYgMC44NzcyNTggNy40OTk4NEMwLjg3NzI1OCAxMS4xNTc1IDMuODQyNCAxNC4xMjI3IDcuNTAwMDkgMTQuMTIyN0MxMS4xNTc4IDE0LjEyMjcgMTQuMTIyOSAxMS4xNTc1IDE0LjEyMjkgNy40OTk4NEMxNC4xMjI5IDMuODQyMTYgMTEuMTU3NyAwLjg3NzAxNCA3LjUwMDA5IDAuODc3MDE0Wk0xLjgyNzI2IDcuNDk5ODRDMS44MjcyNiA0LjM2NjgzIDQuMzY3MDggMS44MjcwMSA3LjUwMDA5IDEuODI3MDFDMTAuNjMzMSAxLjgyNzAxIDEzLjE3MjkgNC4zNjY4MyAxMy4xNzI5IDcuNDk5ODRDMTMuMTcyOSAxMC42MzI4IDEwLjYzMzEgMTMuMTcyNyA3LjUwMDA5IDEzLjE3MjdDNC4zNjcwOCAxMy4xNzI3IDEuODI3MjYgMTAuNjMyOCAxLjgyNzI2IDcuNDk5ODRaTTggNC41MDAwMUM4IDQuMjIzODcgNy43NzYxNCA0LjAwMDAxIDcuNSA0LjAwMDAxQzcuMjIzODYgNC4wMDAwMSA3IDQuMjIzODcgNyA0LjUwMDAxVjcuNTAwMDFDNyA3LjYzMjYyIDcuMDUyNjggNy43NTk4IDcuMTQ2NDUgNy44NTM1N0w5LjE0NjQ1IDkuODUzNTdDOS4zNDE3MSAxMC4wNDg4IDkuNjU4MjkgMTAuMDQ4OCA5Ljg1MzU1IDkuODUzNTdDMTAuMDQ4OCA5LjY1ODMxIDEwLjA0ODggOS4zNDE3MiA5Ljg1MzU1IDkuMTQ2NDZMOCA3LjI5MjkxVjQuNTAwMDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxoZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOS45NjQyNCAyLjY4NTcxQzEwLjA2NjggMi40MjkzMSA5Ljk0MjA5IDIuMTM4MzMgOS42ODU3IDIuMDM1NzdDOS40MjkzIDEuOTMzMjIgOS4xMzgzMiAyLjA1NzkyIDkuMDM1NzYgMi4zMTQzMkw1LjAzNTc2IDEyLjMxNDNDNC45MzMyIDEyLjU3MDcgNS4wNTc5MSAxMi44NjE3IDUuMzE0MyAxMi45NjQyQzUuNTcwNyAxMy4wNjY4IDUuODYxNjggMTIuOTQyMSA1Ljk2NDI0IDEyLjY4NTdMOS45NjQyNCAyLjY4NTcxWk0zLjg1MzU1IDUuMTQ2NDZDNC4wNDg4MiA1LjM0MTcyIDQuMDQ4ODIgNS42NTgzIDMuODUzNTUgNS44NTM1NkwyLjIwNzExIDcuNTAwMDFMMy44NTM1NSA5LjE0NjQ2QzQuMDQ4ODIgOS4zNDE3MiA0LjA0ODgyIDkuNjU4MyAzLjg1MzU1IDkuODUzNTZDMy42NTgyOSAxMC4wNDg4IDMuMzQxNzEgMTAuMDQ4OCAzLjE0NjQ1IDkuODUzNTZMMS4xNDY0NSA3Ljg1MzU2QzAuOTUxMTg0IDcuNjU4MyAwLjk1MTE4NCA3LjM0MTcyIDEuMTQ2NDUgNy4xNDY0NkwzLjE0NjQ1IDUuMTQ2NDZDMy4zNDE3MSA0Ljk1MTIgMy42NTgyOSA0Ljk1MTIgMy44NTM1NSA1LjE0NjQ2Wk0xMS4xNDY0IDUuMTQ2NDZDMTEuMzQxNyA0Ljk1MTIgMTEuNjU4MyA0Ljk1MTIgMTEuODUzNiA1LjE0NjQ2TDEzLjg1MzYgNy4xNDY0NkMxNC4wNDg4IDcuMzQxNzIgMTQuMDQ4OCA3LjY1ODMgMTMuODUzNiA3Ljg1MzU2TDExLjg1MzYgOS44NTM1NkMxMS42NTgzIDEwLjA0ODggMTEuMzQxNyAxMC4wNDg4IDExLjE0NjQgOS44NTM1NkMxMC45NTEyIDkuNjU4MyAxMC45NTEyIDkuMzQxNzIgMTEuMTQ2NCA5LjE0NjQ2TDEyLjc5MjkgNy41MDAwMUwxMS4xNDY0IDUuODUzNTZDMTAuOTUxMiA1LjY1ODMgMTAuOTUxMiA1LjM0MTcyIDExLjE0NjQgNS4xNDY0NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHZlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjcxMTQ0IDAuNzk2OTAyQzcuNTc3NDEgMC43MzQzNTcgNy40MjI1NyAwLjczNDM1NyA3LjI4ODU1IDAuNzk2OTAyTDEuMjg4NTUgMy41OTY5QzEuMTEyNTEgMy42NzkwNSAwLjk5OTk5MyAzLjg1NTczIDAuOTk5OTkzIDQuMDQ5OTlWMTAuOTVDMC45OTk5OTMgMTEuMTQ0MyAxLjExMjUxIDExLjMyMDkgMS4yODg1NSAxMS40MDMxTDcuMjg4NTUgMTQuMjAzMUM3LjQyMjU3IDE0LjI2NTYgNy41Nzc0MSAxNC4yNjU2IDcuNzExNDQgMTQuMjAzMUwxMy43MTE0IDExLjQwMzFDMTMuODg3NSAxMS4zMjA5IDE0IDExLjE0NDMgMTQgMTAuOTVWNC4wNDk5OUMxNCAzLjg1NTczIDEzLjg4NzUgMy42NzkwNSAxMy43MTE0IDMuNTk2OUw3LjcxMTQ0IDAuNzk2OTAyWk03LjQ5OTk5IDMuMTU2NzRMNS45ODAzOSAyLjUxMDkxTDcuNDk5OTkgMS44MDE3Nkw5LjAxOTU5IDIuNTEwOTFMNy40OTk5OSAzLjE1Njc0Wk03LjY5NTU2IDQuMTYwMThMMTAuMjM4MiAzLjA3OTU4TDEyLjI3MTkgNC4wMjg2NUw3LjQ5OTk5IDYuMDU2NzFMMi43MjgwOCA0LjAyODY1TDQuNzYxODEgMy4wNzk1OEw3LjMwNDQyIDQuMTYwMThDNy40MjkzOSA0LjIxMzMgNy41NzA1OSA0LjIxMzMgNy42OTU1NiA0LjE2MDE4Wk03Ljk5OTk5IDYuOTMwNzhMMTMgNC44MDU3OFY3LjkyOTY2TDExLjA4MjEgOC44MTE5QzEwLjcyNzMgOC45NzUwOSAxMC41IDkuMzI5ODggMTAuNSA5LjcyMDM5VjExLjc5ODJMNy45OTk5OSAxMi45NjQ5VjYuOTMwNzhaTTExLjUgMTEuMzMxNkwxMyAxMC42MzE2VjkuMDMwMzlMMTEuNSA5LjcyMDM5VjExLjMzMTZaTTYuOTk5OTkgNi45MzA3OFYxMi45NjQ5TDQuNTAyMzEgMTEuNzk5M1Y5LjcyMDM2QzQuNTAyMzEgOS4zMjk4NSA0LjI3NDk5IDguOTc1MDYgMy45MjAyMiA4LjgxMTg3TDEuOTk5OTkgNy45Mjg1NlY0LjgwNTc4TDYuOTk5OTkgNi45MzA3OFpNMS45OTk5OSAxMC42MzE2TDMuNTAyMzEgMTEuMzMyNkwzLjUwMjMxIDkuNzIwMzZMMS45OTk5OSA5LjAyOTI5VjEwLjYzMTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxnZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC4wMDAxMiAxLjVDOC4wMDAxMiAxLjIyMzg2IDcuNzc2MjYgMSA3LjUwMDEyIDFDNy4yMjM5OCAxIDcuMDAwMTIgMS4yMjM4NiA3LjAwMDEyIDEuNVYxMy41QzcuMDAwMTIgMTMuNzc2MSA3LjIyMzk4IDE0IDcuNTAwMTIgMTRDNy43NzYyNiAxNCA4LjAwMDEyIDEzLjc3NjEgOC4wMDAxMiAxMy41VjEuNVpNMy4zMTgxMiA1LjgxOEMzLjQ5Mzg2IDUuNjQyMjcgMy40OTM4NiA1LjM1NzM0IDMuMzE4MTIgNS4xODE2MUMzLjE0MjM5IDUuMDA1ODcgMi44NTc0NiA1LjAwNTg3IDIuNjgxNzMgNS4xODE2MUwwLjY4MTcyOSA3LjE4MTYxQzAuNTA1OTkzIDcuMzU3MzQgMC41MDU5OTMgNy42NDIyNyAwLjY4MTcyOSA3LjgxOEwyLjY4MTczIDkuODE4QzIuODU3NDYgOS45OTM3NCAzLjE0MjM5IDkuOTkzNzQgMy4zMTgxMiA5LjgxOEMzLjQ5Mzg2IDkuNjQyMjcgMy40OTM4NiA5LjM1NzM0IDMuMzE4MTIgOS4xODE2MUwyLjA4NjMyIDcuOTQ5OEg1LjUwMDE3QzUuNzQ4NyA3Ljk0OTggNS45NTAxNyA3Ljc0ODMzIDUuOTUwMTcgNy40OTk4QzUuOTUwMTcgNy4yNTEyOCA1Ljc0ODcgNy4wNDk4IDUuNTAwMTcgNy4wNDk4SDIuMDg2MzJMMy4zMTgxMiA1LjgxOFpNMTIuMzE4MSA1LjE4MTYxQzEyLjE0MjQgNS4wMDU4NyAxMS44NTc1IDUuMDA1ODcgMTEuNjgxNyA1LjE4MTYxQzExLjUwNiA1LjM1NzM0IDExLjUwNiA1LjY0MjI3IDExLjY4MTcgNS44MThMMTIuOTEzNSA3LjA0OThIOS41MDAxN0M5LjI1MTY0IDcuMDQ5OCA5LjA1MDE3IDcuMjUxMjggOS4wNTAxNyA3LjQ5OThDOS4wNTAxNyA3Ljc0ODMzIDkuMjUxNjQgNy45NDk4IDkuNTAwMTcgNy45NDk4SDEyLjkxMzVMMTEuNjgxNyA5LjE4MTYxQzExLjUwNiA5LjM1NzM0IDExLjUwNiA5LjY0MjI3IDExLjY4MTcgOS44MThDMTEuODU3NSA5Ljk5Mzc0IDEyLjE0MjQgOS45OTM3NCAxMi4zMTgxIDkuODE4TDE0LjMxODEgNy44MThDMTQuNDkzOSA3LjY0MjI3IDE0LjQ5MzkgNy4zNTczNCAxNC4zMTgxIDcuMTgxNjFMMTIuMzE4MSA1LjE4MTYxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuMTQ5OTggMTRWMUgwLjg0OTk3NlYxNEgyLjE0OTk4Wk02LjE0OTk4IDE0VjFINC44NDk5OFYxNEg2LjE0OTk4Wk0xMC4xNSAxVjE0SDguODQ5OThWMUgxMC4xNVpNMTQuMTUgMTRWMUgxMi44NVYxNEgxNC4xNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05Ljk0OTY5IDcuNDk5ODlDOS45NDk2OSA4Ljg1Mjg4IDguODUyODggOS45NDk2OSA3LjQ5OTg5IDkuOTQ5NjlDNi4xNDY5MSA5Ljk0OTY5IDUuMDUwMSA4Ljg1Mjg4IDUuMDUwMSA3LjQ5OTg5QzUuMDUwMSA2LjE0NjkxIDYuMTQ2OTEgNS4wNTAxIDcuNDk5ODkgNS4wNTAxQzguODUyODggNS4wNTAxIDkuOTQ5NjkgNi4xNDY5MSA5Ljk0OTY5IDcuNDk5ODlaTTEwLjg2MzIgOEMxMC42MjEzIDkuNjQwNTUgOS4yMDc2NCAxMC44OTk3IDcuNDk5ODkgMTAuODk5N0M1Ljc5MjE0IDEwLjg5OTcgNC4zNzg0NyA5LjY0MDU1IDQuMTM2NjIgOEgwLjVDMC4yMjM4NTggOCAwIDcuNzc2MTQgMCA3LjVDMCA3LjIyMzg2IDAuMjIzODU4IDcgMC41IDdINC4xMzY1OUM0LjM3ODM1IDUuMzU5MzUgNS43OTIwNiA0LjEwMDEgNy40OTk4OSA0LjEwMDFDOS4yMDc3MiA0LjEwMDEgMTAuNjIxNCA1LjM1OTM1IDEwLjg2MzIgN0gxNC41QzE0Ljc3NjEgNyAxNSA3LjIyMzg2IDE1IDcuNUMxNSA3Ljc3NjE0IDE0Ljc3NjEgOCAxNC41IDhIMTAuODYzMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHllPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjY3MTI5IDMuMTQ2MzRDNC40NzYwMyAzLjM0MTYxIDQuNDc2MDMgMy42NTgxOSA0LjY3MTI5IDMuODUzNDVMNy4xNDYxNiA2LjMyODMzQzcuMzQxNDIgNi41MjM1OSA3LjY1ODAxIDYuNTIzNTkgNy44NTMyNyA2LjMyODMzTDEwLjMyODEgMy44NTM0NUMxMC41MjM0IDMuNjU4MTkgMTAuNTIzNCAzLjM0MTYxIDEwLjMyODEgMy4xNDYzNEw3Ljg1MzI3IDAuNjcxNDcxQzcuNjU4MDEgMC40NzYyMDkgNy4zNDE0MiAwLjQ3NjIwOSA3LjE0NjE2IDAuNjcxNDcxTDQuNjcxMjkgMy4xNDYzNFpNNy40OTk3MSA1LjI2NzY2TDUuNzMxOTUgMy40OTk5TDcuNDk5NzEgMS43MzIxM0w5LjI2NzQ4IDMuNDk5OUw3LjQ5OTcxIDUuMjY3NjZaTTguNjcxMjkgNy4xNDYzNEM4LjQ3NjAzIDcuMzQxNjEgOC40NzYwMyA3LjY1ODE5IDguNjcxMjkgNy44NTM0NUwxMS4xNDYyIDEwLjMyODNDMTEuMzQxNCAxMC41MjM2IDExLjY1OCAxMC41MjM2IDExLjg1MzMgMTAuMzI4M0wxNC4zMjgxIDcuODUzNDVDMTQuNTIzNCA3LjY1ODE5IDE0LjUyMzQgNy4zNDE2MSAxNC4zMjgxIDcuMTQ2MzRMMTEuODUzMyA0LjY3MTQ3QzExLjY1OCA0LjQ3NjIxIDExLjM0MTQgNC40NzYyMSAxMS4xNDYyIDQuNjcxNDdMOC42NzEyOSA3LjE0NjM0Wk0xMS40OTk3IDkuMjY3NjZMOS43MzE5NSA3LjQ5OTlMMTEuNDk5NyA1LjczMjEzTDEzLjI2NzUgNy40OTk5TDExLjQ5OTcgOS4yNjc2NlpNNC42NzEyOSAxMS44NTM1QzQuNDc2MDMgMTEuNjU4MiA0LjQ3NjAzIDExLjM0MTYgNC42NzEyOSAxMS4xNDYzTDcuMTQ2MTYgOC42NzE0N0M3LjM0MTQyIDguNDc2MjEgNy42NTgwMSA4LjQ3NjIxIDcuODUzMjcgOC42NzE0N0wxMC4zMjgxIDExLjE0NjNDMTAuNTIzNCAxMS4zNDE2IDEwLjUyMzQgMTEuNjU4MiAxMC4zMjgxIDExLjg1MzVMNy44NTMyNyAxNC4zMjgzQzcuNjU4MDEgMTQuNTIzNiA3LjM0MTQyIDE0LjUyMzYgNy4xNDYxNiAxNC4zMjgzTDQuNjcxMjkgMTEuODUzNVpNNS43MzE5NSAxMS40OTk5TDcuNDk5NzEgMTMuMjY3N0w5LjI2NzQ4IDExLjQ5OTlMNy40OTk3MSA5LjczMjEzTDUuNzMxOTUgMTEuNDk5OVpNMC42NzEyODggNy4xNDY0OUMwLjQ3NjAyNiA3LjM0MTc1IDAuNDc2MDI2IDcuNjU4MzQgMC42NzEyODggNy44NTM2TDMuMTQ2MTYgMTAuMzI4NUMzLjM0MTQyIDEwLjUyMzcgMy42NTgwMSAxMC41MjM3IDMuODUzMjcgMTAuMzI4NUw2LjMyODE0IDcuODUzNkM2LjUyMzQgNy42NTgzNCA2LjUyMzQgNy4zNDE3NSA2LjMyODE0IDcuMTQ2NDlMMy44NTMyNyA0LjY3MTYyQzMuNjU4MDEgNC40NzYzNiAzLjM0MTQyIDQuNDc2MzYgMy4xNDYxNiA0LjY3MTYyTDAuNjcxMjg4IDcuMTQ2NDlaTTMuNDk5NzIgOS4yNjc4MUwxLjczMTk1IDcuNTAwMDVMMy40OTk3MiA1LjczMjI4TDUuMjY3NDggNy41MDAwNUwzLjQ5OTcyIDkuMjY3ODFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxiZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy44NzkzNSAxSDMuOUgxMS4xSDExLjEyMDdDMTEuNTIzMSAwLjk5OTk5NCAxMS44NTUzIDAuOTk5OTg5IDEyLjEyNTkgMS4wMjIxQzEyLjQwNyAxLjA0NTA2IDEyLjY2NTMgMS4wOTQzNCAxMi45MDggMS4yMTc5OUMxMy4yODQzIDEuNDA5NzMgMTMuNTkwMyAxLjcxNTcgMTMuNzgyIDIuMDkyMDJDMTMuOTA1NyAyLjMzNDY5IDEzLjk1NDkgMi41OTMwNCAxMy45Nzc5IDIuODc0MDlDMTQgMy4xNDQ2OCAxNCAzLjQ3Njg2IDE0IDMuODc5MzRWMy45VjExLjFWMTEuMTIwN0MxNCAxMS41MjMxIDE0IDExLjg1NTMgMTMuOTc3OSAxMi4xMjU5QzEzLjk1NDkgMTIuNDA3IDEzLjkwNTcgMTIuNjY1MyAxMy43ODIgMTIuOTA4QzEzLjU5MDMgMTMuMjg0MyAxMy4yODQzIDEzLjU5MDMgMTIuOTA4IDEzLjc4MkMxMi42NjUzIDEzLjkwNTcgMTIuNDA3IDEzLjk1NDkgMTIuMTI1OSAxMy45Nzc5QzExLjg1NTMgMTQgMTEuNTIzMSAxNCAxMS4xMjA3IDE0SDExLjFIMy45SDMuODc5MzRDMy40NzY4NiAxNCAzLjE0NDY4IDE0IDIuODc0MDkgMTMuOTc3OUMyLjU5MzA0IDEzLjk1NDkgMi4zMzQ2OSAxMy45MDU3IDIuMDkyMDIgMTMuNzgyQzEuNzE1NyAxMy41OTAzIDEuNDA5NzMgMTMuMjg0MyAxLjIxNzk5IDEyLjkwOEMxLjA5NDM0IDEyLjY2NTMgMS4wNDUwNiAxMi40MDcgMS4wMjIxIDEyLjEyNTlDMC45OTk5ODkgMTEuODU1MyAwLjk5OTk5NCAxMS41MjMxIDEgMTEuMTIwN1YxMS4xMjA3VjExLjFWMy45VjMuODc5MzVWMy44NzkzNEMwLjk5OTk5NCAzLjQ3Njg2IDAuOTk5OTg5IDMuMTQ0NjggMS4wMjIxIDIuODc0MDlDMS4wNDUwNiAyLjU5MzA0IDEuMDk0MzQgMi4zMzQ2OSAxLjIxNzk5IDIuMDkyMDJDMS40MDk3MyAxLjcxNTcgMS43MTU3IDEuNDA5NzMgMi4wOTIwMiAxLjIxNzk5QzIuMzM0NjkgMS4wOTQzNCAyLjU5MzA0IDEuMDQ1MDYgMi44NzQwOSAxLjAyMjFDMy4xNDQ2OSAwLjk5OTk4OSAzLjQ3Njg3IDAuOTk5OTk0IDMuODc5MzUgMVpNMi45NTU1MiAyLjAxODc4QzIuNzM2MzEgMi4wMzY2OSAyLjYyNDIxIDIuMDY5MTUgMi41NDYwMSAyLjEwODk5QzIuMzU3ODUgMi4yMDQ4NyAyLjIwNDg3IDIuMzU3ODUgMi4xMDg5OSAyLjU0NjAxQzIuMDY5MTUgMi42MjQyMSAyLjAzNjY5IDIuNzM2MzEgMi4wMTg3OCAyLjk1NTUyQzIuMDAwMzkgMy4xODA1NiAyIDMuNDcxNzEgMiAzLjlWN0g3VjJIMy45QzMuNDcxNzEgMiAzLjE4MDU2IDIuMDAwMzkgMi45NTU1MiAyLjAxODc4Wk03IDhIMlYxMS4xQzIgMTEuNTI4MyAyLjAwMDM5IDExLjgxOTQgMi4wMTg3OCAxMi4wNDQ1QzIuMDM2NjkgMTIuMjYzNyAyLjA2OTE1IDEyLjM3NTggMi4xMDg5OSAxMi40NTRDMi4yMDQ4NyAxMi42NDIyIDIuMzU3ODUgMTIuNzk1MSAyLjU0NjAxIDEyLjg5MUMyLjYyNDIxIDEyLjkzMDkgMi43MzYzMSAxMi45NjMzIDIuOTU1NTIgMTIuOTgxMkMzLjE4MDU2IDEyLjk5OTYgMy40NzE3MSAxMyAzLjkgMTNIN1Y4Wk04IDhIMTNWMTEuMUMxMyAxMS41MjgzIDEyLjk5OTYgMTEuODE5NCAxMi45ODEyIDEyLjA0NDVDMTIuOTYzMyAxMi4yNjM3IDEyLjkzMDkgMTIuMzc1OCAxMi44OTEgMTIuNDU0QzEyLjc5NTEgMTIuNjQyMiAxMi42NDIyIDEyLjc5NTEgMTIuNDU0IDEyLjg5MUMxMi4zNzU4IDEyLjkzMDkgMTIuMjYzNyAxMi45NjMzIDEyLjA0NDUgMTIuOTgxMkMxMS44MTk0IDEyLjk5OTYgMTEuNTI4MyAxMyAxMS4xIDEzSDhWOFpNMTMgN0g4VjJIMTEuMUMxMS41MjgzIDIgMTEuODE5NCAyLjAwMDM5IDEyLjA0NDUgMi4wMTg3OEMxMi4yNjM3IDIuMDM2NjkgMTIuMzc1OCAyLjA2OTE1IDEyLjQ1NCAyLjEwODk5QzEyLjY0MjIgMi4yMDQ4NyAxMi43OTUxIDIuMzU3ODUgMTIuODkxIDIuNTQ2MDFDMTIuOTMwOSAyLjYyNDIxIDEyLjk2MzMgMi43MzYzMSAxMi45ODEyIDIuOTU1NTJDMTIuOTk5NiAzLjE4MDU2IDEzIDMuNDcxNzEgMTMgMy45VjdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx4ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy44NTM2NyAxLjQ4OTU2QzcuNjU4NDEgMS4yOTQyOSA3LjM0MTgyIDEuMjk0MjkgNy4xNDY1NiAxLjQ4OTU2TDEuNDg5NzEgNy4xNDY0MUMxLjI5NDQ1IDcuMzQxNjcgMS4yOTQ0NSA3LjY1ODI1IDEuNDg5NzEgNy44NTM1Mkw3LjE0NjU2IDEzLjUxMDRDNy4zNDE4MiAxMy43MDU2IDcuNjU4NDEgMTMuNzA1NiA3Ljg1MzY3IDEzLjUxMDRMMTMuNTEwNSA3Ljg1MzUyQzEzLjcwNTggNy42NTgyNSAxMy43MDU4IDcuMzQxNjcgMTMuNTEwNSA3LjE0NjQxTDcuODUzNjcgMS40ODk1NlpNNy41IDIuNTUwMzNMMi41NTAzNyA3LjQ5OTk2TDcuNSAxMi40NDk2VjIuNTUwMzNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxPZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4xNDY1IDEuNDg5NTlDNy4zNDE3NiAxLjI5NDMyIDcuNjU4MzUgMS4yOTQzMiA3Ljg1MzYxIDEuNDg5NTlMMTMuNTEwNSA3LjE0NjQ0QzEzLjcwNTcgNy4zNDE3IDEzLjcwNTcgNy42NTgyOSAxMy41MTA1IDcuODUzNTVMNy44NTM2MSAxMy41MTA0QzcuNjU4MzUgMTMuNzA1NyA3LjM0MTc2IDEzLjcwNTcgNy4xNDY1IDEzLjUxMDRMMS40ODk2NSA3Ljg1MzU1QzEuMjk0MzkgNy42NTgyOSAxLjI5NDM5IDcuMzQxNyAxLjQ4OTY1IDcuMTQ2NDRMNy4xNDY1IDEuNDg5NTlaTTcuNTAwMDUgMi41NTAyNUwyLjU1MDMxIDcuNDk5OTlMNy41MDAwNSAxMi40NDk3TDEyLjQ0OTggNy40OTk5OUw3LjUwMDA1IDIuNTUwMjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxMZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy44NTM2MSAxLjQ4OTU5QzcuNjU4MzUgMS4yOTQzMiA3LjM0MTc2IDEuMjk0MzIgNy4xNDY1IDEuNDg5NTlMMS40ODk2NSA3LjE0NjQ0QzEuMjk0MzkgNy4zNDE3IDEuMjk0MzkgNy42NTgyOSAxLjQ4OTY1IDcuODUzNTVMMy45NjQ1IDEwLjMyODRMMS42NDY0NCAxMi42NDY0QzEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEzLjE1ODMgMS42NDY0NCAxMy4zNTM2QzEuODQxNzEgMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMi4zNTM1NSAxMy4zNTM2TDQuNjcxNiAxMS4wMzU1TDcuMTQ2NSAxMy41MTA0QzcuMzQxNzYgMTMuNzA1NyA3LjY1ODM1IDEzLjcwNTcgNy44NTM2MSAxMy41MTA0TDEzLjUxMDUgNy44NTM1NUMxMy43MDU3IDcuNjU4MjkgMTMuNzA1NyA3LjM0MTcgMTMuNTEwNSA3LjE0NjQ0TDExLjAzNTYgNC42NzE1NEwxMy4zNTM1IDIuMzUzNTVDMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMS44NDE3MSAxMy4zNTM1IDEuNjQ2NDVDMTMuMTU4MyAxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMi42NDY0IDEuNjQ2NDVMMTAuMzI4NSAzLjk2NDQzTDcuODUzNjEgMS40ODk1OVpNOS42MjEzNSA0LjY3MTU0TDcuNTAwMDUgMi41NTAyNUwyLjU1MDMxIDcuNDk5OTlMNC42NzE2IDkuNjIxMjlMOS42MjEzNSA0LjY3MTU0Wk01LjM3ODcxIDEwLjMyODRMNy41MDAwNSAxMi40NDk3TDEyLjQ0OTggNy40OTk5OUwxMC4zMjg1IDUuMzc4NjVMNS4zNzg3MSAxMC4zMjg0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sX2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjgwMzQgNy4xNDY0NEMxMi45OTg2IDYuOTUxMTggMTMuMzE1MiA2Ljk1MTE4IDEzLjUxMDUgNy4xNDY0NEMxMy43MDU3IDcuMzQxNyAxMy43MDU3IDcuNjU4MjkgMTMuNTEwNSA3Ljg1MzU1QzEzLjMxNTIgOC4wNDg4MSAxMi45OTg2IDguMDQ4ODEgMTIuODAzNCA3Ljg1MzU1QzEyLjYwODEgNy42NTgyOCAxMi42MDgxIDcuMzQxNyAxMi44MDM0IDcuMTQ2NDRaTTEyLjA5NjIgOC41NjA2NUMxMi4yOTE1IDguNzU1OTIgMTIuMjkxNSA5LjA3MjUgMTIuMDk2MiA5LjI2Nzc2QzExLjkwMSA5LjQ2MzAyIDExLjU4NDQgOS40NjMwMiAxMS4zODkxIDkuMjY3NzZDMTEuMTkzOSA5LjA3MjUgMTEuMTkzOSA4Ljc1NTkyIDExLjM4OTEgOC41NjA2NUMxMS41ODQ0IDguMzY1MzkgMTEuOTAxIDguMzY1MzkgMTIuMDk2MiA4LjU2MDY1Wk0xMC42ODIgOS45NzQ4N0MxMC44NzczIDEwLjE3MDEgMTAuODc3MyAxMC40ODY3IDEwLjY4MiAxMC42ODJDMTAuNDg2OCAxMC44NzcyIDEwLjE3MDIgMTAuODc3MiA5Ljk3NDkzIDEwLjY4MkM5Ljc3OTY3IDEwLjQ4NjcgOS43Nzk2NyAxMC4xNzAxIDkuOTc0OTMgOS45NzQ4N0MxMC4xNzAyIDkuNzc5NiAxMC40ODY4IDkuNzc5NiAxMC42ODIgOS45NzQ4N1pNOS4yNjc4MiAxMS4zODkxQzkuNDYzMDggMTEuNTg0MyA5LjQ2MzA4IDExLjkwMDkgOS4yNjc4MiAxMi4wOTYyQzkuMDcyNTYgMTIuMjkxNSA4Ljc1NTk4IDEyLjI5MTUgOC41NjA3MSAxMi4wOTYyQzguMzY1NDUgMTEuOTAwOSA4LjM2NTQ1IDExLjU4NDMgOC41NjA3MiAxMS4zODkxQzguNzU1OTggMTEuMTkzOCA5LjA3MjU2IDExLjE5MzggOS4yNjc4MiAxMS4zODkxWk03LjE0NjUgMTMuNTEwNEM2Ljk1MTI0IDEzLjMxNTEgNi45NTEyNCAxMi45OTg2IDcuMTQ2NSAxMi44MDMzQzcuMTcwOTEgMTIuNzc4OSA3LjE5NzIxIDEyLjc1NzUgNy4yMjQ5NCAxMi43MzkyQzcuNDE5MDEgMTIuNjExMSA3LjY4Mjc1IDEyLjYzMjQgNy44NTM2MSAxMi44MDMzQzguMDQ4ODcgMTIuOTk4NiA4LjA0ODg3IDEzLjMxNTEgNy44NTM2MSAxMy41MTA0QzcuNjU4MzUgMTMuNzA1NyA3LjM0MTc2IDEzLjcwNTcgNy4xNDY1IDEzLjUxMDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjkwMzg2IDguNTYwNjVDMi43MDg2IDguNzU1OTIgMi43MDg2IDkuMDcyNSAyLjkwMzg2IDkuMjY3NzYgMy4wOTkxMiA5LjQ2MzAyIDMuNDE1NzEgOS40NjMwMiAzLjYxMDk3IDkuMjY3NzYgMy44MDYyMyA5LjA3MjUgMy44MDYyMyA4Ljc1NTkyIDMuNjEwOTcgOC41NjA2NSAzLjQxNTcxIDguMzY1MzkgMy4wOTkxMiA4LjM2NTM5IDIuOTAzODYgOC41NjA2NXpNNC4zMTgwNyA5Ljk3NDg3QzQuMTIyODEgMTAuMTcwMSA0LjEyMjgxIDEwLjQ4NjcgNC4zMTgwNyAxMC42ODIgNC41MTMzNCAxMC44NzcyIDQuODI5OTIgMTAuODc3MiA1LjAyNTE4IDEwLjY4MiA1LjIyMDQ0IDEwLjQ4NjcgNS4yMjA0NCAxMC4xNzAxIDUuMDI1MTggOS45NzQ4NyA0LjgyOTkyIDkuNzc5NiA0LjUxMzM0IDkuNzc5NiA0LjMxODA3IDkuOTc0ODd6TTUuNzMyMjkgMTEuMzg5MUM1LjUzNzAzIDExLjU4NDMgNS41MzcwMyAxMS45MDA5IDUuNzMyMjkgMTIuMDk2MiA1LjkyNzU1IDEyLjI5MTQgNi4yNDQxMyAxMi4yOTE1IDYuNDM5MzkgMTIuMDk2MiA2LjYzNDY2IDExLjkwMDkgNi42MzQ2NiAxMS41ODQzIDYuNDM5MzkgMTEuMzg5MSA2LjI0NDEzIDExLjE5MzggNS45Mjc1NSAxMS4xOTM4IDUuNzMyMjkgMTEuMzg5MXpNMi4xOTY3NSA3Ljg1MzU1QzIuMzY3NjEgNy42ODI2OSAyLjM4ODk3IDcuNDE4OTUgMi4yNjA4MiA3LjIyNDg4IDIuMDkwNDYgNi45NjY4NCAxLjcxMDYzIDYuOTI1NDYgMS40ODk2NSA3LjE0NjQ0IDEuMjk0MzkgNy4zNDE3IDEuMjk0MzkgNy42NTgyOSAxLjQ4OTY1IDcuODUzNTUgMS42ODQ5MSA4LjA0ODgxIDIuMDAxNDkgOC4wNDg4MSAyLjE5Njc1IDcuODUzNTV6TTMuNjEwOTcgNS43MzIyM0MzLjQxNTcxIDUuNTM2OTYgMy4wOTkxMiA1LjUzNjk2IDIuOTAzODYgNS43MzIyMyAyLjcwODYgNS45Mjc0OSAyLjcwODYgNi4yNDQwNyAyLjkwMzg2IDYuNDM5MzMgMy4wOTkxMiA2LjYzNDYgMy40MTU3MSA2LjYzNDYgMy42MTA5NyA2LjQzOTMzIDMuODA2MjMgNi4yNDQwNyAzLjgwNjIzIDUuOTI3NDkgMy42MTA5NyA1LjczMjIzek01LjAyNTE4IDQuMzE4MDFDNC44Mjk5MiA0LjEyMjc1IDQuNTEzMzQgNC4xMjI3NSA0LjMxODA3IDQuMzE4MDEgNC4xMjI4MSA0LjUxMzI4IDQuMTIyODEgNC44Mjk4NiA0LjMxODA3IDUuMDI1MTIgNC41MTMzNCA1LjIyMDM4IDQuODI5OTIgNS4yMjAzOCA1LjAyNTE4IDUuMDI1MTIgNS4yMjA0NCA0LjgyOTg2IDUuMjIwNDQgNC41MTMyOCA1LjAyNTE4IDQuMzE4MDF6TTYuNDM5MzkgMi45MDM4QzYuMjQ0MTMgMi43MDg1NCA1LjkyNzU1IDIuNzA4NTQgNS43MzIyOSAyLjkwMzggNS41MzcwMyAzLjA5OTA2IDUuNTM3MDMgMy40MTU2NCA1LjczMjI5IDMuNjEwOTEgNS45Mjc1NSAzLjgwNjE3IDYuMjQ0MTMgMy44MDYxNyA2LjQzOTM5IDMuNjEwOTEgNi42MzQ2NiAzLjQxNTY0IDYuNjM0NjYgMy4wOTkwNiA2LjQzOTM5IDIuOTAzOHpNNy44NTM2MSAxLjQ4OTU5QzcuNjU4MzUgMS4yOTQzMiA3LjM0MTc2IDEuMjk0MzIgNy4xNDY1IDEuNDg5NTkgNi45NTEyNCAxLjY4NDg1IDYuOTUxMjQgMi4wMDE0MyA3LjE0NjUgMi4xOTY2OSA3LjM0MTc2IDIuMzkxOTYgNy42NTgzNSAyLjM5MTk2IDcuODUzNjEgMi4xOTY2OSA4LjA0ODg3IDIuMDAxNDMgOC4wNDg4NyAxLjY4NDg1IDcuODUzNjEgMS40ODk1OXpNOS4yNjc4MiAyLjkwMzhDOS4wNzI1NiAyLjcwODU0IDguNzU1OTggMi43MDg1NCA4LjU2MDcxIDIuOTAzOCA4LjM2NTQ1IDMuMDk5MDYgOC4zNjU0NSAzLjQxNTY0IDguNTYwNzEgMy42MTA5MSA4Ljc1NTk4IDMuODA2MTcgOS4wNzI1NiAzLjgwNjE3IDkuMjY3ODIgMy42MTA5MSA5LjQ2MzA4IDMuNDE1NjQgOS40NjMwOCAzLjA5OTA2IDkuMjY3ODIgMi45MDM4ek0xMC42ODIgNC4zMTgwMUMxMC40ODY4IDQuMTIyNzUgMTAuMTcwMiA0LjEyMjc1IDkuOTc0OTMgNC4zMTgwMSA5Ljc3OTY3IDQuNTEzMjggOS43Nzk2NyA0LjgyOTg2IDkuOTc0OTMgNS4wMjUxMiAxMC4xNzAyIDUuMjIwMzggMTAuNDg2OCA1LjIyMDM4IDEwLjY4MiA1LjAyNTEyIDEwLjg3NzMgNC44Mjk4NiAxMC44NzczIDQuNTEzMjggMTAuNjgyIDQuMzE4MDF6TTEyLjA5NjIgNS43MzIyM0MxMS45MDEgNS41MzY5NiAxMS41ODQ0IDUuNTM2OTYgMTEuMzg5MSA1LjczMjIzIDExLjE5MzkgNS45Mjc0OSAxMS4xOTM5IDYuMjQ0MDcgMTEuMzg5MSA2LjQzOTMzIDExLjU4NDQgNi42MzQ2IDExLjkwMSA2LjYzNDYgMTIuMDk2MiA2LjQzOTMzIDEyLjI5MTUgNi4yNDQwNyAxMi4yOTE1IDUuOTI3NDkgMTIuMDk2MiA1LjczMjIzelwiLGZpbGw6bn0pKX0sTWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgMS41QzIgMS43NzYxNCAxLjc3NjE0IDIgMS41IDJDMS4yMjM4NiAyIDEgMS43NzYxNCAxIDEuNUMxIDEuMjIzODYgMS4yMjM4NiAxIDEuNSAxQzEuNzc2MTQgMSAyIDEuMjIzODYgMiAxLjVaTTUgMTNIMTBWMkw1IDJMNSAxM1pNNCAxM0M0IDEzLjU1MjMgNC40NDc3MiAxNCA1IDE0SDEwQzEwLjU1MjMgMTQgMTEgMTMuNTUyMyAxMSAxM1YyQzExIDEuNDQ3NzIgMTAuNTUyMyAxIDEwIDFINUM0LjQ0NzcyIDEgNCAxLjQ0NzcxIDQgMlYxM1pNMTMuNSAyQzEzLjc3NjEgMiAxNCAxLjc3NjE0IDE0IDEuNUMxNCAxLjIyMzg2IDEzLjc3NjEgMSAxMy41IDFDMTMuMjIzOSAxIDEzIDEuMjIzODYgMTMgMS41QzEzIDEuNzc2MTQgMTMuMjIzOSAyIDEzLjUgMlpNMiAzLjVDMiAzLjc3NjE0IDEuNzc2MTQgNCAxLjUgNEMxLjIyMzg2IDQgMSAzLjc3NjE0IDEgMy41QzEgMy4yMjM4NiAxLjIyMzg2IDMgMS41IDNDMS43NzYxNCAzIDIgMy4yMjM4NiAyIDMuNVpNMTMuNSA0QzEzLjc3NjEgNCAxNCAzLjc3NjE0IDE0IDMuNUMxNCAzLjIyMzg2IDEzLjc3NjEgMyAxMy41IDNDMTMuMjIzOSAzIDEzIDMuMjIzODYgMTMgMy41QzEzIDMuNzc2MTQgMTMuMjIzOSA0IDEzLjUgNFpNMiA1LjVDMiA1Ljc3NjE0IDEuNzc2MTQgNiAxLjUgNkMxLjIyMzg2IDYgMSA1Ljc3NjE0IDEgNS41QzEgNS4yMjM4NiAxLjIyMzg2IDUgMS41IDVDMS43NzYxNCA1IDIgNS4yMjM4NiAyIDUuNVpNMTMuNSA2QzEzLjc3NjEgNiAxNCA1Ljc3NjE0IDE0IDUuNUMxNCA1LjIyMzg2IDEzLjc3NjEgNSAxMy41IDVDMTMuMjIzOSA1IDEzIDUuMjIzODYgMTMgNS41QzEzIDUuNzc2MTQgMTMuMjIzOSA2IDEzLjUgNlpNMiA3LjVDMiA3Ljc3NjE0IDEuNzc2MTQgOCAxLjUgOEMxLjIyMzg2IDggMSA3Ljc3NjE0IDEgNy41QzEgNy4yMjM4NiAxLjIyMzg2IDcgMS41IDdDMS43NzYxNCA3IDIgNy4yMjM4NiAyIDcuNVpNMTMuNSA4QzEzLjc3NjEgOCAxNCA3Ljc3NjE0IDE0IDcuNUMxNCA3LjIyMzg2IDEzLjc3NjEgNyAxMy41IDdDMTMuMjIzOSA3IDEzIDcuMjIzODYgMTMgNy41QzEzIDcuNzc2MTQgMTMuMjIzOSA4IDEzLjUgOFpNMiA5LjVDMiA5Ljc3NjE0IDEuNzc2MTQgMTAgMS41IDEwQzEuMjIzODYgMTAgMSA5Ljc3NjE0IDEgOS41QzEgOS4yMjM4NiAxLjIyMzg2IDkgMS41IDlDMS43NzYxNCA5IDIgOS4yMjM4NiAyIDkuNVpNMTMuNSAxMEMxMy43NzYxIDEwIDE0IDkuNzc2MTQgMTQgOS41QzE0IDkuMjIzODYgMTMuNzc2MSA5IDEzLjUgOUMxMy4yMjM5IDkgMTMgOS4yMjM4NiAxMyA5LjVDMTMgOS43NzYxNCAxMy4yMjM5IDEwIDEzLjUgMTBaTTIgMTEuNUMyIDExLjc3NjEgMS43NzYxNCAxMiAxLjUgMTJDMS4yMjM4NiAxMiAxIDExLjc3NjEgMSAxMS41QzEgMTEuMjIzOSAxLjIyMzg2IDExIDEuNSAxMUMxLjc3NjE0IDExIDIgMTEuMjIzOSAyIDExLjVaTTEzLjUgMTJDMTMuNzc2MSAxMiAxNCAxMS43NzYxIDE0IDExLjVDMTQgMTEuMjIzOSAxMy43NzYxIDExIDEzLjUgMTFDMTMuMjIzOSAxMSAxMyAxMS4yMjM5IDEzIDExLjVDMTMgMTEuNzc2MSAxMy4yMjM5IDEyIDEzLjUgMTJaTTIgMTMuNUMyIDEzLjc3NjEgMS43NzYxNCAxNCAxLjUgMTRDMS4yMjM4NiAxNCAxIDEzLjc3NjEgMSAxMy41QzEgMTMuMjIzOSAxLjIyMzg2IDEzIDEuNSAxM0MxLjc3NjE0IDEzIDIgMTMuMjIzOSAyIDEzLjVaTTEzLjUgMTRDMTMuNzc2MSAxNCAxNCAxMy43NzYxIDE0IDEzLjVDMTQgMTMuMjIzOSAxMy43NzYxIDEzIDEzLjUgMTNDMTMuMjIzOSAxMyAxMyAxMy4yMjM5IDEzIDEzLjVDMTMgMTMuNzc2MSAxMy4yMjM5IDE0IDEzLjUgMTRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxqZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTIuMDY5NyAxLjc2NzQ2QzEyLjQ4MDcgMS4yMTk0NyAxMS40NjA1IDAuNDU0MzExIDExLjA0OTUgMS4wMDIzQzEwLjYzODUgMS41NTAyOCAxMS42NTg4IDIuMzE1NDQgMTIuMDY5NyAxLjc2NzQ2Wk04LjM5MjYzIDEuMDc4MTFDNy4xNTU4NSAwLjk1MDYwMiA1Ljc4MjMgMS4xNjM0OCA0LjU4NDMzIDEuNzA5MzdDMy4zODU1MiAyLjI1NTYzIDIuMzI3MzUgMy4xNTMwOSAxLjc4ODQ0IDQuNDE4MzJDMS4zNzU3NCA1LjM4NzI0IDEuMDE3MTUgNi4yODExMyAxLjAwMDg4IDcuNDQzNTRDMC45ODQ3MjQgOC41OTg0NCAxLjMwNTIyIDkuOTY4OTggMi4xMzE3NCAxMS45MjhDMi42MTE0MiAxMy4wNjQ5IDQuMDM5NjMgMTMuNTQ0NiA1LjEzODk1IDEzLjgwNzlDNi40MDgzNiAxNC4xMTE5IDcuODA4NTcgMTQuMTkxNCA4LjY2NDQgMTQuMDc0MkM5LjM2NTE1IDEzLjk3ODIgMTAuMTQ0OCAxMy44Mjg0IDEwLjc5ODcgMTMuMjk3QzExLjg5NzcgMTIuNDAzOSAxMi45MDA5IDExLjM5NTUgMTMuNDk5NCAxMC4zMzkzQzE0LjEwNCA5LjI3MjIxIDE0LjMyNTYgOC4wOTIwNyAxMy43MjE2IDYuOTUzMjRDMTMuNTYyOCA2LjY1MzczIDEzLjMxNiA2LjU3NzM0IDEzLjA0MTIgNi40OTIzQzEyLjkzNzQgNi40NjAxNiAxMi44Mjk1IDYuNDI2NzggMTIuNzIwOSA2LjM3OTY2QzExLjYyMTEgNS45MDIzNCAxMC45NjQ2IDUuMzQ5NjMgMTAuOTEzNSA1LjAyODc2QzEwLjg2NTYgNC43MjgwOCAxMC45MjIxIDQuNTE0NjMgMTAuOTgxMSA0LjI5MTgxQzExLjAxMjkgNC4xNzE5OSAxMS4wNDUzIDQuMDQ5NDcgMTEuMDYyNiAzLjkwOTIyQzExLjA4MzggMy43MzczNyAxMS4wODE0IDMuMzMzMTkgMTAuNjk5NiAzLjEyNzYxQzEwLjQwNDggMi45Njg4OCAxMC4yMTY0IDIuNjU4NDMgMTAuMDQwNyAyLjM2OTA0QzkuOTk3NDIgMi4yOTc3NSA5Ljk1NDkyIDIuMjI3NzMgOS45MTE4IDIuMTYxNThDOS42MjYzNCAxLjcyMzY3IDkuMjA3NjkgMS4xNjIxMyA4LjM5MjYzIDEuMDc4MTFaTTQuOTk4OTkgMi42MTkzNUMzLjk2NDgzIDMuMDkwNTggMy4xMjU1NCAzLjgzMDk3IDIuNzA4NDYgNC44MTAxOEMyLjI5ODA4IDUuNzczNjggMi4wMTQwNiA2LjUwODczIDIuMDAwNzkgNy40NTc1M0MxLjk4NzQxIDguNDEzODUgMi4yNTA0MyA5LjYzNjggMy4wNTMxIDExLjUzOTNDMy4zOTE4MSAxMi4zNDIxIDQuNjIxNjcgMTIuNjU1NyA1LjM3MTg2IDEyLjgzNTRDNi41NDkzIDEzLjExNzQgNy44MjIgMTMuMTgwMiA4LjUyODY4IDEzLjA4MzRDOS4yMTI3MSAxMi45ODk3IDkuNzQ1NjggMTIuODY0MiAxMC4xNjgxIDEyLjUyMDlDMTEuMjI5IDExLjY1ODcgMTIuMTIxIDEwLjc0MzUgMTIuNjI5MyA5Ljg0NjM1QzEyLjkzNDkgOS4zMDcwOSAxMy41MTQxIDcuNzAyOCAxMi42MjkyIDcuMzg3M0MxMC43NTM5IDYuNzE4NzUgMTAuMjYyIDYuMDY2NjkgOS45OTAxMSA1LjQxMjY4QzkuODA5MTUgNC45Nzc0NCA5LjgyODY4IDQuNTIyODIgOS45NTc0MSA0LjA3ODg1TDkuOTU3NDEgNC4wNzg4NEM5Ljk3NjYyIDQuMDEyNiA5Ljk5NTM4IDMuOTQ3OTEgMTAuMDMzNCAzLjg4ODgyQzkuODE4NTcgMy43MzY3NiA5LjY1MTUgMy41NTE5NSA5LjUxNDY0IDMuMzcxNUM5LjQyODc2IDMuMjU4MjggOS4zNDY5IDMuMTIwOTkgOS4yNjE5NyAyLjk3ODU2QzkuMDE4NjYgMi41NzA1MiA4Ljc1MDE4IDIuMTIwMjcgOC4yOTAwOCAyLjA3MjgzQzcuMjI4ODkgMS45NjM0MyA2LjAzMzk4IDIuMTQ3NzIgNC45OTg5OSAyLjYxOTM1Wk0xMy4yMDgxIDMuNzc0NzFDMTMuNDQxIDMuMjI2NzEgMTIuNDU0NyAyLjYzNjA2IDEyLjA4MjIgMy4xMDE2M0MxMS41ODE3IDMuNzI3MzIgMTIuOTAyOSA0LjQ5MjgxIDEzLjIwODEgMy43NzQ3MVpNMTQuMzY3MiAyLjI2MDMxQzE0Ljk2NjggMi4yNzQ5MyAxNS4xNTUxIDEuMTE2MDMgMTQuNTcxOCAwLjk0OTM3MUMxMy44MDc2IDAuNzMxMDI2IDEzLjU5MTggMi4yNDEzOSAxNC4zNjcyIDIuMjYwMzFaTTE0LjI4NTcgNS4wOTA5OEMxNC44NjQ0IDUuMTAwMDQgMTUuMDQ2MiA0LjM4MjIyIDE0LjQ4MzIgNC4yNzg5OUMxMy43NDU1IDQuMTQzNzUgMTMuNTM3MyA1LjA3OTI3IDE0LjI4NTcgNS4wOTA5OFpNNi45MDc1IDQuMjg2NzJDNi40Njg5OCA0LjY2NzU0IDYuMDUyMiA0LjE1MTg1IDUuOTc5ODMgMy43MzY1QzUuODY4NDggMy4wOTc0NCA2LjMzNjk2IDIuNTY4NTYgNi45NDgyMyAyLjkxMTU2QzcuNDMzNDQgMy4xODM4MiA3LjI2Njc4IDMuOTc0NzEgNi45MDc1IDQuMjg2NzJaTTQuOTQ0NTUgNS44ODE4NEM1LjQwODg1IDUuNDE3NTQgNC41OTU2NyA0LjU3MDEzIDQuMTE0MjUgNS4wNTE1NEMzLjgzMzM4IDUuMzMyNDIgNC4wMDkzNiA1LjY1Mzc2IDQuMjM3NDQgNS44ODE4NEM0LjQzMjcxIDYuMDc3MSA0Ljc0OTI5IDYuMDc3MSA0Ljk0NDU1IDUuODgxODRaTTYuOTc3MTYgNi43MTk4NEM3LjMxMTgxIDcuMzg5MTQgOC40ODgwNCA2Ljc5MTU5IDcuOTk0MTMgNi4xNDc4OEM3Ljg2NTE5IDUuOTc5ODMgNy42ODY1NyA1Ljk0OTQgNy42MjE0NSA1Ljk0MjA3QzcuMjEyMTcgNS44OTYwMSA2Ljc2MzQ5IDYuMjkyNSA2Ljk3NzE2IDYuNzE5ODRaTTYuOTg3OTggOC43MjQ2MUM3LjE0MDY2IDkuMTE4OCA3LjUxMTIyIDkuMzE4NyA3LjkxOTE1IDkuMTYzM0M4LjI3NDM0IDkuMDI3OTkgOC4zMzE4NiA4LjM5Njg5IDguMTcxNzUgOC4wNzQyN0M4LjAyMzMxIDcuNzc1MTQgNy42Mzk1NiA3LjY3NzkzIDcuMzM3NDcgNy43OTQxN0M2Ljk4NTEyIDcuOTI5NzYgNi44NTY3MiA4LjM4NzA4IDYuOTg1NzYgOC43MTg4OUw2Ljk4Nzk4IDguNzI0NjFaTTEwLjM4ODUgOC44NDA4MUMxMC43NTc1IDguNjU2NiAxMS40NjE3IDguODI3NzEgMTEuNDYxNyA5LjMxMTk5QzExLjQ2MTcgOS43MTI4NiAxMC45NTg3IDEwLjIxNjUgMTAuNTYzNCAxMC4yODI2QzEwLjE4MTMgMTAuMzQ2NSA5LjcwNTE1IDkuOTc1ODEgOS43NjY0OCA5LjU3NzE4QzkuODE0NDUgOS4yNjUzOSAxMC4xMjE3IDguOTc0MDEgMTAuMzg4NSA4Ljg0MDgxWk03LjU2NzA0IDEwLjg0MzJDNy4zMzQ2MSAxMC43NTAyIDcuMTQzNTMgMTAuODYwMSA3LjExNDM3IDEwLjg3NjlMNy4xMTI3OSAxMC44Nzc4QzYuOTA3ODIgMTAuOTk0OSA2LjcxMzgzIDExLjI0MzkgNi42NzQ3IDExLjQ4NDJDNi41OTAxOCAxMi4wMDM0IDcuMTMxOTkgMTIuMTIzOSA3LjUyNjYxIDEyLjA5ODdDOC4yMDc0IDEyLjA1NTMgOC4wNjU0NyAxMS4wNDI2IDcuNTY3MDQgMTAuODQzMlpNNC44ODA1IDEwLjg5MzJDNS4wNjc0IDEwLjc3MjMgNS4xNTY1OCAxMC41MzYzIDUuMDgyOTMgMTAuMzE1M0M0LjkzMDQ2IDkuNzk2ODcgNC4zMjQ2IDkuNzEyNTIgMy45NjU2MSAxMC4xMjk3QzMuNzkzMzYgMTAuMzI5OSAzLjgwNzQ5IDEwLjYyNzQgMy45OTIxNCAxMC44MTA1TDMuOTk0OTUgMTAuODE0TDMuOTk3OSAxMC44MTc2QzQuMjIwMjUgMTEuMDk0MiA0LjYzNjI0IDExLjE4NTcgNC44ODA1IDEwLjg5MzJaTTMuMDQ2OTUgNy44MTMxOEMzLjMzMTQ3IDguMDk3NyAzLjYwMDc3IDguMTUwNjcgMy45ODQ0MyA4LjA1ODU5QzQuNjA4MjYgNy45MDg4NyA0LjEzODE0IDYuMjQyOTkgMy4wNDcgNi44NzI5NkMyLjcwOTM5IDcuMDY3ODggMi44NjcxNiA3LjYzMzM5IDMuMDQ2OTUgNy44MTMxOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEVlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDkuNTAwMDZDMSAxMC4zMjg1IDEuNjcxNTcgMTEuMDAwMSAyLjUgMTEuMDAwMUg0TDQgMTAuMDAwMUgyLjVDMi4yMjM4NiAxMC4wMDAxIDIgOS43NzYyIDIgOS41MDAwNkwyIDIuNTAwMDZDMiAyLjIyMzkyIDIuMjIzODYgMi4wMDAwNiAyLjUgMi4wMDAwNkw5LjUgMi4wMDAwNkM5Ljc3NjE0IDIuMDAwMDYgMTAgMi4yMjM5MiAxMCAyLjUwMDA2VjQuMDAwMDJINS41QzQuNjcxNTggNC4wMDAwMiA0IDQuNjcxNTkgNCA1LjUwMDAyVjEyLjVDNCAxMy4zMjg0IDQuNjcxNTggMTQgNS41IDE0SDEyLjVDMTMuMzI4NCAxNCAxNCAxMy4zMjg0IDE0IDEyLjVWNS41MDAwMkMxNCA0LjY3MTU5IDEzLjMyODQgNC4wMDAwMiAxMi41IDQuMDAwMDJIMTFWMi41MDAwNkMxMSAxLjY3MTYzIDEwLjMyODQgMS4wMDAwNiA5LjUgMS4wMDAwNkgyLjVDMS42NzE1NyAxLjAwMDA2IDEgMS42NzE2MyAxIDIuNTAwMDZWOS41MDAwNlpNNSA1LjUwMDAyQzUgNS4yMjM4OCA1LjIyMzg2IDUuMDAwMDIgNS41IDUuMDAwMDJIMTIuNUMxMi43NzYxIDUuMDAwMDIgMTMgNS4yMjM4OCAxMyA1LjUwMDAyVjEyLjVDMTMgMTIuNzc2MiAxMi43NzYxIDEzIDEyLjUgMTNINS41QzUuMjIzODYgMTMgNSAxMi43NzYyIDUgMTIuNVY1LjUwMDAyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sU2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuODc3MzcgMTJIOS45SDExLjVDMTEuNzc2MSAxMiAxMiAxMS43NzYxIDEyIDExLjVDMTIgMTEuMjIzOSAxMS43NzYxIDExIDExLjUgMTFIOS45QzguNzcxNjQgMTEgNy45NTU0NSAxMC45OTk2IDcuMzEzNTIgMTAuOTQ3MkM2LjY3NzQ0IDEwLjg5NTIgNi4yNTY2MiAxMC43OTQ2IDUuOTExMDMgMTAuNjE4NUM1LjI1MjQ3IDEwLjI4MyA0LjcxNzAzIDkuNzQ3NTMgNC4zODE0OCA5LjA4ODk3QzQuMjA1MzkgOC43NDMzOCA0LjEwNDgxIDguMzIyNTYgNC4wNTI4NCA3LjY4NjQ4QzQuMDAwMzkgNy4wNDQ1NSA0IDYuMjI4MzYgNCA1LjFWMy41QzQgMy4yMjM4NiAzLjc3NjE0IDMgMy41IDNDMy4yMjM4NiAzIDMgMy4yMjM4NiAzIDMuNVY1LjFWNS4xMjI2M0MzIDYuMjIzNTkgMyA3LjA4MDUyIDMuMDU2MTYgNy43Njc5MUMzLjExMzE4IDguNDY1ODQgMy4yMzA1OCA5LjAzMjkgMy40OTA0NyA5LjU0Mjk2QzMuOTIxOSAxMC4zODk3IDQuNjEwMzEgMTEuMDc4MSA1LjQ1NzA0IDExLjUwOTVDNS45NjcxIDExLjc2OTQgNi41MzQxNiAxMS44ODY4IDcuMjMyMDkgMTEuOTQzOEM3LjkxOTQ4IDEyIDguNzc2NDEgMTIgOS44NzczNyAxMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFBlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjEyMjYzIDEySDUuMUgzLjVDMy4yMjM4NiAxMiAzIDExLjc3NjEgMyAxMS41QzMgMTEuMjIzOSAzLjIyMzg2IDExIDMuNSAxMUg1LjFDNi4yMjgzNiAxMSA3LjA0NDU1IDEwLjk5OTYgNy42ODY0OCAxMC45NDcyQzguMzIyNTYgMTAuODk1MiA4Ljc0MzM4IDEwLjc5NDYgOS4wODg5NyAxMC42MTg1QzkuNzQ3NTMgMTAuMjgzIDEwLjI4MyA5Ljc0NzUzIDEwLjYxODUgOS4wODg5N0MxMC43OTQ2IDguNzQzMzggMTAuODk1MiA4LjMyMjU2IDEwLjk0NzIgNy42ODY0OEMxMC45OTk2IDcuMDQ0NTUgMTEgNi4yMjgzNiAxMSA1LjFWMy41QzExIDMuMjIzODYgMTEuMjIzOSAzIDExLjUgM0MxMS43NzYxIDMgMTIgMy4yMjM4NiAxMiAzLjVWNS4xVjUuMTIyNjNDMTIgNi4yMjM1OSAxMiA3LjA4MDUyIDExLjk0MzggNy43Njc5MUMxMS44ODY4IDguNDY1ODQgMTEuNzY5NCA5LjAzMjkgMTEuNTA5NSA5LjU0Mjk2QzExLjA3ODEgMTAuMzg5NyAxMC4zODk3IDExLjA3ODEgOS41NDI5NiAxMS41MDk1QzkuMDMyOSAxMS43Njk0IDguNDY1ODQgMTEuODg2OCA3Ljc2NzkxIDExLjk0MzhDNy4wODA1MiAxMiA2LjIyMzU5IDEyIDUuMTIyNjMgMTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxIZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOS44NzczNyAzSDkuOUgxMS41QzExLjc3NjEgMyAxMiAzLjIyMzg2IDEyIDMuNUMxMiAzLjc3NjE0IDExLjc3NjEgNCAxMS41IDRIOS45QzguNzcxNjQgNCA3Ljk1NTQ1IDQuMDAwMzkgNy4zMTM1MiA0LjA1Mjg0QzYuNjc3NDQgNC4xMDQ4MSA2LjI1NjYyIDQuMjA1MzkgNS45MTEwMyA0LjM4MTQ4QzUuMjUyNDcgNC43MTcwMyA0LjcxNzAzIDUuMjUyNDcgNC4zODE0OCA1LjkxMTAzQzQuMjA1MzkgNi4yNTY2MiA0LjEwNDgxIDYuNjc3NDQgNC4wNTI4NCA3LjMxMzUyQzQuMDAwMzkgNy45NTU0NSA0IDguNzcxNjQgNCA5LjlWMTEuNUM0IDExLjc3NjEgMy43NzYxNCAxMiAzLjUgMTJDMy4yMjM4NiAxMiAzIDExLjc3NjEgMyAxMS41VjkuOVY5Ljg3NzM3QzMgOC43NzY0MSAzIDcuOTE5NDggMy4wNTYxNiA3LjIzMjA5QzMuMTEzMTggNi41MzQxNiAzLjIzMDU4IDUuOTY3MSAzLjQ5MDQ3IDUuNDU3MDRDMy45MjE5IDQuNjEwMzEgNC42MTAzMSAzLjkyMTkgNS40NTcwNCAzLjQ5MDQ3QzUuOTY3MSAzLjIzMDU4IDYuNTM0MTYgMy4xMTMxOCA3LjIzMjA5IDMuMDU2MTZDNy45MTk0OCAzIDguNzc2NDEgMyA5Ljg3NzM3IDNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxrZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS4xMjI2MyAzSDUuMUgzLjVDMy4yMjM4NiAzIDMgMy4yMjM4NiAzIDMuNUMzIDMuNzc2MTQgMy4yMjM4NiA0IDMuNSA0SDUuMUM2LjIyODM2IDQgNy4wNDQ1NSA0LjAwMDM5IDcuNjg2NDggNC4wNTI4NEM4LjMyMjU2IDQuMTA0ODEgOC43NDMzOCA0LjIwNTM5IDkuMDg4OTcgNC4zODE0OEM5Ljc0NzUzIDQuNzE3MDMgMTAuMjgzIDUuMjUyNDcgMTAuNjE4NSA1LjkxMTAzQzEwLjc5NDYgNi4yNTY2MiAxMC44OTUyIDYuNjc3NDQgMTAuOTQ3MiA3LjMxMzUyQzEwLjk5OTYgNy45NTU0NSAxMSA4Ljc3MTY0IDExIDkuOVYxMS41QzExIDExLjc3NjEgMTEuMjIzOSAxMiAxMS41IDEyQzExLjc3NjEgMTIgMTIgMTEuNzc2MSAxMiAxMS41VjkuOVY5Ljg3NzM3QzEyIDguNzc2NDEgMTIgNy45MTk0OCAxMS45NDM4IDcuMjMyMDlDMTEuODg2OCA2LjUzNDE2IDExLjc2OTQgNS45NjcxIDExLjUwOTUgNS40NTcwNEMxMS4wNzgxIDQuNjEwMzEgMTAuMzg5NyAzLjkyMTkgOS41NDI5NiAzLjQ5MDQ3QzkuMDMyOSAzLjIzMDU4IDguNDY1ODQgMy4xMTMxOCA3Ljc2NzkxIDMuMDU2MTZDNy4wODA1MiAzIDYuMjIzNTkgMyA1LjEyMjYzIDNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxWZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAuMSAzQzEwLjUyODMgMyAxMC44MTk0IDMuMDAwMzkgMTEuMDQ0NSAzLjAxODc4QzExLjI2MzcgMy4wMzY2OSAxMS4zNzU4IDMuMDY5MTUgMTEuNDU0IDMuMTA4OTlDMTEuNjQyMiAzLjIwNDg3IDExLjc5NTEgMy4zNTc4NSAxMS44OTEgMy41NDYwMUMxMS45MzA5IDMuNjI0MjEgMTEuOTYzMyAzLjczNjMxIDExLjk4MTIgMy45NTU1MkMxMS45OTk2IDQuMTgwNTYgMTIgNC40NzE3MSAxMiA0LjlWNS41QzEyIDUuNzc2MTQgMTIuMjIzOSA2IDEyLjUgNkMxMi43NzYxIDYgMTMgNS43NzYxNCAxMyA1LjVWNC44NzkzNUMxMyA0LjQ3Njg3IDEzIDQuMTQ0NjkgMTIuOTc3OSAzLjg3NDA5QzEyLjk1NDkgMy41OTMwNCAxMi45MDU3IDMuMzM0NjkgMTIuNzgyIDMuMDkyMDJDMTIuNTkwMyAyLjcxNTcgMTIuMjg0MyAyLjQwOTczIDExLjkwOCAyLjIxNzk5QzExLjY2NTMgMi4wOTQzNCAxMS40MDcgMi4wNDUwNiAxMS4xMjU5IDIuMDIyMUMxMC44NTUzIDEuOTk5OTkgMTAuNTIzMSAxLjk5OTk5IDEwLjEyMDcgMkgxMC4xMjA2SDEwLjFIOS41QzkuMjIzODYgMiA5IDIuMjIzODYgOSAyLjVDOSAyLjc3NjE0IDkuMjIzODYgMyA5LjUgM0gxMC4xWk01LjUgMkg0Ljg3OTM1SDQuODc5MzRDNC40NzY4NiAxLjk5OTk5IDQuMTQ0NjggMS45OTk5OSAzLjg3NDA5IDIuMDIyMUMzLjU5MzA0IDIuMDQ1MDYgMy4zMzQ2OSAyLjA5NDM0IDMuMDkyMDIgMi4yMTc5OUMyLjcxNTcgMi40MDk3MyAyLjQwOTczIDIuNzE1NyAyLjIxNzk5IDMuMDkyMDJDMi4wOTQzNCAzLjMzNDY5IDIuMDQ1MDYgMy41OTMwNCAyLjAyMjEgMy44NzQwOUMxLjk5OTk5IDQuMTQ0NjggMS45OTk5OSA0LjQ3Njg2IDIgNC44NzkzNFY0Ljg3OTM1VjUuNUMyIDUuNzc2MTQgMi4yMjM4NiA2IDIuNSA2QzIuNzc2MTQgNiAzIDUuNzc2MTQgMyA1LjVWNC45QzMgNC40NzE3MSAzLjAwMDM5IDQuMTgwNTYgMy4wMTg3OCAzLjk1NTUyQzMuMDM2NjkgMy43MzYzMSAzLjA2OTE1IDMuNjI0MjEgMy4xMDg5OSAzLjU0NjAxQzMuMjA0ODcgMy4zNTc4NSAzLjM1Nzg1IDMuMjA0ODcgMy41NDYwMSAzLjEwODk5QzMuNjI0MjEgMy4wNjkxNSAzLjczNjMxIDMuMDM2NjkgMy45NTU1MiAzLjAxODc4QzQuMTgwNTYgMy4wMDAzOSA0LjQ3MTcxIDMgNC45IDNINS41QzUuNzc2MTQgMyA2IDIuNzc2MTQgNiAyLjVDNiAyLjIyMzg2IDUuNzc2MTQgMiA1LjUgMlpNMTMgOS41QzEzIDkuMjIzODYgMTIuNzc2MSA5IDEyLjUgOUMxMi4yMjM5IDkgMTIgOS4yMjM4NiAxMiA5LjVWMTAuMUMxMiAxMC41MjgzIDExLjk5OTYgMTAuODE5NCAxMS45ODEyIDExLjA0NDVDMTEuOTYzMyAxMS4yNjM3IDExLjkzMDkgMTEuMzc1OCAxMS44OTEgMTEuNDU0QzExLjc5NTEgMTEuNjQyMiAxMS42NDIyIDExLjc5NTEgMTEuNDU0IDExLjg5MUMxMS4zNzU4IDExLjkzMDkgMTEuMjYzNyAxMS45NjMzIDExLjA0NDUgMTEuOTgxMkMxMC44MTk0IDExLjk5OTYgMTAuNTI4MyAxMiAxMC4xIDEySDkuNUM5LjIyMzg2IDEyIDkgMTIuMjIzOSA5IDEyLjVDOSAxMi43NzYxIDkuMjIzODYgMTMgOS41IDEzSDEwLjEyMDZDMTAuNTIzMSAxMyAxMC44NTUzIDEzIDExLjEyNTkgMTIuOTc3OUMxMS40MDcgMTIuOTU0OSAxMS42NjUzIDEyLjkwNTcgMTEuOTA4IDEyLjc4MkMxMi4yODQzIDEyLjU5MDMgMTIuNTkwMyAxMi4yODQzIDEyLjc4MiAxMS45MDhDMTIuOTA1NyAxMS42NjUzIDEyLjk1NDkgMTEuNDA3IDEyLjk3NzkgMTEuMTI1OUMxMyAxMC44NTUzIDEzIDEwLjUyMzEgMTMgMTAuMTIwNlY5LjVaTTIuNSA5QzIuNzc2MTQgOSAzIDkuMjIzODYgMyA5LjVWMTAuMUMzIDEwLjUyODMgMy4wMDAzOSAxMC44MTk0IDMuMDE4NzggMTEuMDQ0NUMzLjAzNjY5IDExLjI2MzcgMy4wNjkxNSAxMS4zNzU4IDMuMTA4OTkgMTEuNDU0QzMuMjA0ODcgMTEuNjQyMiAzLjM1Nzg1IDExLjc5NTEgMy41NDYwMSAxMS44OTFDMy42MjQyMSAxMS45MzA5IDMuNzM2MzEgMTEuOTYzMyAzLjk1NTUyIDExLjk4MTJDNC4xODA1NiAxMS45OTk2IDQuNDcxNzEgMTIgNC45IDEySDUuNUM1Ljc3NjE0IDEyIDYgMTIuMjIzOSA2IDEyLjVDNiAxMi43NzYxIDUuNzc2MTQgMTMgNS41IDEzSDQuODc5MzVDNC40NzY4NyAxMyA0LjE0NDY5IDEzIDMuODc0MDkgMTIuOTc3OUMzLjU5MzA0IDEyLjk1NDkgMy4zMzQ2OSAxMi45MDU3IDMuMDkyMDIgMTIuNzgyQzIuNzE1NyAxMi41OTAzIDIuNDA5NzMgMTIuMjg0MyAyLjIxNzk5IDExLjkwOEMyLjA5NDM0IDExLjY2NTMgMi4wNDUwNiAxMS40MDcgMi4wMjIxIDExLjEyNTlDMS45OTk5OSAxMC44NTUzIDEuOTk5OTkgMTAuNTIzMSAyIDEwLjEyMDdWMTAuMTIwNlYxMC4xVjkuNUMyIDkuMjIzODYgMi4yMjM4NiA5IDIuNSA5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjE1IDcuNDk5OThDMTMuMTUgNC42NjQ1OCAxMC45NDAyIDEuODQ5OTggNy41MDAwMiAxLjg0OTk4QzQuNzIxNyAxLjg0OTk4IDMuMzQ4NTEgMy45MDYzNiAyLjc2MzM2IDQuOTk5OTdINC41QzQuNzc2MTQgNC45OTk5NyA1IDUuMjIzODMgNSA1LjQ5OTk3QzUgNS43NzYxMSA0Ljc3NjE0IDUuOTk5OTcgNC41IDUuOTk5OTdIMS41QzEuMjIzODYgNS45OTk5NyAxIDUuNzc2MTEgMSA1LjQ5OTk3VjIuNDk5OTdDMSAyLjIyMzgzIDEuMjIzODYgMS45OTk5NyAxLjUgMS45OTk5N0MxLjc3NjE0IDEuOTk5OTcgMiAyLjIyMzgzIDIgMi40OTk5N1Y0LjMxMzE4QzIuNzA0NTMgMy4wNzEyNiA0LjMzNDA2IDAuODQ5OTc2IDcuNTAwMDIgMC44NDk5NzZDMTEuNTYyOCAwLjg0OTk3NiAxNC4xNSA0LjE4NTM3IDE0LjE1IDcuNDk5OThDMTQuMTUgMTAuODE0NiAxMS41NjI4IDE0LjE1IDcuNTAwMDIgMTQuMTVDNS41NTYxOCAxNC4xNSAzLjkzNzc4IDEzLjM4MDggMi43ODU0OCAxMi4yMDg0QzIuMTY4NTIgMTEuNTgwNiAxLjY4NjY4IDEwLjgzOSAxLjM1ODE2IDEwLjA0MDdDMS4yNTMwNiA5Ljc4NTM2IDEuMzc0ODggOS40OTMxNSAxLjYzMDI0IDkuMzg4MDZDMS44ODU2IDkuMjgyOTYgMi4xNzc4MSA5LjQwNDc4IDIuMjgyOSA5LjY2MDE0QzIuNTYzNzQgMTAuMzQyNSAyLjk3NDk1IDEwLjk3NDUgMy40OTg3IDExLjUwNzRDNC40NzA1MiAxMi40OTYzIDUuODM0OTYgMTMuMTUgNy41MDAwMiAxMy4xNUMxMC45NDAyIDEzLjE1IDEzLjE1IDEwLjMzNTQgMTMuMTUgNy40OTk5OFpNNyAxMFY1LjAwMDAxSDhWMTBIN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEllPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy4xNSA3LjQ5OTk4QzEzLjE1IDQuNjY0NTggMTAuOTQwMiAxLjg0OTk4IDcuNTAwMDIgMS44NDk5OEM0LjcyMTY3IDEuODQ5OTggMy4zNDg0OSAzLjkwNjQgMi43NjMzNSA1SDQuNUM0Ljc3NjE0IDUgNSA1LjIyMzg2IDUgNS41QzUgNS43NzYxNCA0Ljc3NjE0IDYgNC41IDZIMS41QzEuMjIzODYgNiAxIDUuNzc2MTQgMSA1LjVWMi41QzEgMi4yMjM4NiAxLjIyMzg2IDIgMS41IDJDMS43NzYxNCAyIDIgMi4yMjM4NiAyIDIuNVY0LjMxMzE4QzIuNzA0NTMgMy4wNzEyNiA0LjMzNDA2IDAuODQ5OTc2IDcuNTAwMDIgMC44NDk5NzZDMTEuNTYyOCAwLjg0OTk3NiAxNC4xNSA0LjE4NTM3IDE0LjE1IDcuNDk5OThDMTQuMTUgMTAuODE0NiAxMS41NjI4IDE0LjE1IDcuNTAwMDIgMTQuMTVDNS41NTYxOCAxNC4xNSAzLjkzNzc4IDEzLjM4MDggMi43ODU0OCAxMi4yMDg0QzIuMTY4NTIgMTEuNTgwNiAxLjY4NjY4IDEwLjgzOSAxLjM1ODE2IDEwLjA0MDdDMS4yNTMwNiA5Ljc4NTM2IDEuMzc0ODggOS40OTMxNSAxLjYzMDI0IDkuMzg4MDZDMS44ODU2IDkuMjgyOTYgMi4xNzc4MSA5LjQwNDc4IDIuMjgyOSA5LjY2MDE0QzIuNTYzNzQgMTAuMzQyNSAyLjk3NDk1IDEwLjk3NDUgMy40OTg3IDExLjUwNzRDNC40NzA1MiAxMi40OTYzIDUuODM0OTYgMTMuMTUgNy41MDAwMiAxMy4xNUMxMC45NDAyIDEzLjE1IDEzLjE1IDEwLjMzNTQgMTMuMTUgNy40OTk5OFpNNy41IDQuMDAwMDFDNy43NzYxNCA0LjAwMDAxIDggNC4yMjM4NyA4IDQuNTAwMDFWNy4yOTI5MUw5Ljg1MzU1IDkuMTQ2NDZDMTAuMDQ4OCA5LjM0MTcyIDEwLjA0ODggOS42NTgzMSA5Ljg1MzU1IDkuODUzNTdDOS42NTgyOSAxMC4wNDg4IDkuMzQxNzEgMTAuMDQ4OCA5LjE0NjQ1IDkuODUzNTdMNy4xNDY0NSA3Ljg1MzU3QzcuMDUyNjggNy43NTk4IDcgNy42MzI2MiA3IDcuNTAwMDFWNC41MDAwMUM3IDQuMjIzODcgNy4yMjM4NiA0LjAwMDAxIDcuNSA0LjAwMDAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNSA4LjAwNjg0ZS0wN0MzLjc3NjE0IDcuODg2MTRlLTA3IDQgMC4yMjM4NTkgNCAwLjUwMDAwMUw0IDMuMDAwMDZMMTEuNSAzLjAwMDA2QzExLjc3NjEgMy4wMDAwNiAxMiAzLjIyMzkyIDEyIDMuNTAwMDZMMTIgMTEuMDAwMUwxNC41IDExQzE0Ljc3NjEgMTEgMTUgMTEuMjIzOCAxNSAxMS41QzE1IDExLjc3NjEgMTQuNzc2MiAxMiAxNC41IDEyTDEyIDEyLjAwMDFMMTIgMTQuNUMxMiAxNC43NzYxIDExLjc3NjEgMTUgMTEuNSAxNUMxMS4yMjM5IDE1IDExIDE0Ljc3NjEgMTEgMTQuNUwxMSAxMi4wMDAxTDMuNSAxMi4wMDAxQzMuMjIzODYgMTIuMDAwMSAzIDExLjc3NjIgMyAxMS41MDAxTDMgNC4wMDAwNUwwLjQ5OTk4OSA0QzAuMjIzODQ3IDQgLTYuMTA1NDFlLTA2IDMuNzc2MTMgLTUuMDI1NzZlLTA3IDMuNDk5OTlDNS4xMzAwNmUtMDYgMy4yMjM4NSAwLjIyMzg2NyAzIDAuNTAwMDEgM0wzIDMuMDAwMDVMMyAwLjUwMDAwMUMzIDAuMjIzODU5IDMuMjIzODYgOC4xMjc1NWUtMDcgMy41IDguMDA2ODRlLTA3Wk00IDQuMDAwMDZMNCAxMS4wMDAxTDExIDExLjAwMDFMMTEgNC4wMDAwNkw0IDQuMDAwMDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxUZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTIuODUzNiAyLjg1MzU1QzEzLjA0ODggMi42NTgyOSAxMy4wNDg4IDIuMzQxNzEgMTIuODUzNiAyLjE0NjQ1QzEyLjY1ODMgMS45NTExOCAxMi4zNDE3IDEuOTUxMTggMTIuMTQ2NCAyLjE0NjQ1TDcuNSA2Ljc5Mjg5TDIuODUzNTUgMi4xNDY0NUMyLjY1ODI5IDEuOTUxMTggMi4zNDE3MSAxLjk1MTE4IDIuMTQ2NDUgMi4xNDY0NUMxLjk1MTE4IDIuMzQxNzEgMS45NTExOCAyLjY1ODI5IDIuMTQ2NDUgMi44NTM1NUw2Ljc5Mjg5IDcuNUwyLjE0NjQ1IDEyLjE0NjRDMS45NTExOCAxMi4zNDE3IDEuOTUxMTggMTIuNjU4MyAyLjE0NjQ1IDEyLjg1MzZDMi4zNDE3MSAxMy4wNDg4IDIuNjU4MjkgMTMuMDQ4OCAyLjg1MzU1IDEyLjg1MzZMNy41IDguMjA3MTFMMTIuMTQ2NCAxMi44NTM2QzEyLjM0MTcgMTMuMDQ4OCAxMi42NTgzIDEzLjA0ODggMTIuODUzNiAxMi44NTM2QzEzLjA0ODggMTIuNjU4MyAxMy4wNDg4IDEyLjM0MTcgMTIuODUzNiAxMi4xNDY0TDguMjA3MTEgNy41TDEyLjg1MzYgMi44NTM1NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEFlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS43ODE2IDQuMDMxNTdDMTIuMDA2MiAzLjgwNzAyIDEyLjAwNjIgMy40NDI5NSAxMS43ODE2IDMuMjE4NEMxMS41NTcxIDIuOTkzODUgMTEuMTkzIDIuOTkzODUgMTAuOTY4NSAzLjIxODRMNy41MDAwNSA2LjY4NjgyTDQuMDMxNjQgMy4yMTg0QzMuODA3MDggMi45OTM4NSAzLjQ0MzAxIDIuOTkzODUgMy4yMTg0NiAzLjIxODRDMi45OTM5MSAzLjQ0Mjk1IDIuOTkzOTEgMy44MDcwMiAzLjIxODQ2IDQuMDMxNTdMNi42ODY4OCA3LjQ5OTk5TDMuMjE4NDYgMTAuOTY4NEMyLjk5MzkxIDExLjE5MyAyLjk5MzkxIDExLjU1NyAzLjIxODQ2IDExLjc4MTZDMy40NDMwMSAxMi4wMDYxIDMuODA3MDggMTIuMDA2MSA0LjAzMTY0IDExLjc4MTZMNy41MDAwNSA4LjMxMzE2TDEwLjk2ODUgMTEuNzgxNkMxMS4xOTMgMTIuMDA2MSAxMS41NTcxIDEyLjAwNjEgMTEuNzgxNiAxMS43ODE2QzEyLjAwNjIgMTEuNTU3IDEyLjAwNjIgMTEuMTkzIDExLjc4MTYgMTAuOTY4NEw4LjMxMzIyIDcuNDk5OTlMMTEuNzgxNiA0LjAzMTU3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuODc3MDc1IDcuNDk5ODhDMC44NzcwNzUgMy44NDIxOSAzLjg0MjIyIDAuODc3MDQ1IDcuNDk5OTEgMC44NzcwNDVDMTEuMTU3NiAwLjg3NzA0NSAxNC4xMjI3IDMuODQyMTkgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgMTEuMTU3NSAxMS4xNTc2IDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzMuODQyMjIgMTQuMTIyNyAwLjg3NzA3NSAxMS4xNTc1IDAuODc3MDc1IDcuNDk5ODhaTTcuNDk5OTEgMS44MjcwNEM0LjM2Njg5IDEuODI3MDQgMS44MjcwOCA0LjM2Njg2IDEuODI3MDggNy40OTk4OEMxLjgyNzA4IDEwLjYzMjkgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0MxMC42MzI5IDEzLjE3MjcgMTMuMTcyNyAxMC42MzI5IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDQuMzY2ODYgMTAuNjMyOSAxLjgyNzA0IDcuNDk5OTEgMS44MjcwNFpNOS44NTM1OCA1LjE0NjQ0QzEwLjA0ODggNS4zNDE3IDEwLjA0ODggNS42NTgyOSA5Ljg1MzU4IDUuODUzNTVMOC4yMDcxMyA3LjQ5OTk5TDkuODUzNTggOS4xNDY0NEMxMC4wNDg4IDkuMzQxNyAxMC4wNDg4IDkuNjU4MjkgOS44NTM1OCA5Ljg1MzU1QzkuNjU4MzIgMTAuMDQ4OCA5LjM0MTczIDEwLjA0ODggOS4xNDY0NyA5Ljg1MzU1TDcuNTAwMDIgOC4yMDcxTDUuODUzNTggOS44NTM1NUM1LjY1ODMyIDEwLjA0ODggNS4zNDE3MyAxMC4wNDg4IDUuMTQ2NDcgOS44NTM1NUM0Ljk1MTIxIDkuNjU4MjkgNC45NTEyMSA5LjM0MTcgNS4xNDY0NyA5LjE0NjQ0TDYuNzkyOTIgNy40OTk5OUw1LjE0NjQ3IDUuODUzNTVDNC45NTEyMSA1LjY1ODI5IDQuOTUxMjEgNS4zNDE3IDUuMTQ2NDcgNS4xNDY0NEM1LjM0MTczIDQuOTUxMTggNS42NTgzMiA0Ljk1MTE4IDUuODUzNTggNS4xNDY0NEw3LjUwMDAyIDYuNzkyODlMOS4xNDY0NyA1LjE0NjQ0QzkuMzQxNzMgNC45NTExOCA5LjY1ODMyIDQuOTUxMTggOS44NTM1OCA1LjE0NjQ0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuODc3MDc1IDcuNTAyMDdDMC44NzcwNzUgMy44NDMxOSAzLjg0MzE5IDAuODc3MDc1IDcuNTAyMDggMC44NzcwNzVDMTEuMTYwOSAwLjg3NzA3NSAxNC4xMjcxIDMuODQzMTkgMTQuMTI3MSA3LjUwMjA3QzE0LjEyNzEgMTEuMTYwOSAxMS4xNjA5IDE0LjEyNzEgNy41MDIwOCAxNC4xMjcxQzMuODQzMTkgMTQuMTI3MSAwLjg3NzA3NSAxMS4xNjA5IDAuODc3MDc1IDcuNTAyMDdaTTEuODQ4OTggNy4wMDAwM0MyLjA4ODYgNC4yNjYzOSA0LjI2NjM5IDIuMDg4NiA3LjAwMDAzIDEuODQ4OThWNC41MDAwM0M3LjAwMDAzIDQuNzc2MTcgNy4yMjM4OCA1LjAwMDAzIDcuNTAwMDMgNS4wMDAwM0M3Ljc3NjE3IDUuMDAwMDMgOC4wMDAwMyA0Ljc3NjE3IDguMDAwMDMgNC41MDAwM1YxLjg0ODYyQzEwLjczNTYgMi4wODY0MyAxMi45MTU0IDQuMjY1MDIgMTMuMTU1MiA3LjAwMDAzSDEwLjVDMTAuMjIzOSA3LjAwMDAzIDEwIDcuMjIzODggMTAgNy41MDAwM0MxMCA3Ljc3NjE3IDEwLjIyMzkgOC4wMDAwMyAxMC41IDguMDAwMDNIMTMuMTU1NUMxMi45MTc2IDEwLjczNjkgMTAuNzM2OSAxMi45MTc2IDguMDAwMDMgMTMuMTU1NVYxMC41QzguMDAwMDMgMTAuMjIzOSA3Ljc3NjE3IDEwIDcuNTAwMDMgMTBDNy4yMjM4OCAxMCA3LjAwMDAzIDEwLjIyMzkgNy4wMDAwMyAxMC41VjEzLjE1NTJDNC4yNjUwMiAxMi45MTU0IDIuMDg2NDMgMTAuNzM1NiAxLjg0ODYyIDguMDAwMDNINC41MDAwM0M0Ljc3NjE3IDguMDAwMDMgNS4wMDAwMyA3Ljc3NjE3IDUuMDAwMDMgNy41MDAwM0M1LjAwMDAzIDcuMjIzODggNC43NzYxNyA3LjAwMDAzIDQuNTAwMDMgNy4wMDAwM0gxLjg0ODk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sJGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAwQzcuNzc2MTQgMCA4IDAuMjIzODU4IDggMC41VjEuODA2ODdDMTAuNjkyMiAyLjA5MzUgMTIuODE2NyA0LjI4MDEyIDEzLjAwNjggN0gxNC41QzE0Ljc3NjEgNyAxNSA3LjIyMzg2IDE1IDcuNUMxNSA3Ljc3NjE0IDE0Ljc3NjEgOCAxNC41IDhIMTIuOTg4OEMxMi43MDk0IDEwLjYyNDQgMTAuNjI0NCAxMi43MDk0IDggMTIuOTg4OFYxNC41QzggMTQuNzc2MSA3Ljc3NjE0IDE1IDcuNSAxNUM3LjIyMzg2IDE1IDcgMTQuNzc2MSA3IDE0LjVWMTMuMDA2OEM0LjI4MDEyIDEyLjgxNjcgMi4wOTM1IDEwLjY5MjIgMS44MDY4NyA4SDAuNUMwLjIyMzg1OCA4IDAgNy43NzYxNCAwIDcuNUMwIDcuMjIzODYgMC4yMjM4NTggNyAwLjUgN0gxLjc4ODg2QzEuOTgzNzYgNC4yMTE2NiA0LjIxMTY2IDEuOTgzNzYgNyAxLjc4ODg2VjAuNUM3IDAuMjIzODU4IDcuMjIzODYgMCA3LjUgMFpNOCAxMi4wMzIyVjkuNUM4IDkuMjIzODYgNy43NzYxNCA5IDcuNSA5QzcuMjIzODYgOSA3IDkuMjIzODYgNyA5LjVWMTIuMDU0QzQuODA1MTcgMTEuODY4OSAzLjA0MjIyIDEwLjE2NjggMi43NjM0NCA4SDUuNUM1Ljc3NjE0IDggNiA3Ljc3NjE0IDYgNy41QzYgNy4yMjM4NiA1Ljc3NjE0IDcgNS41IDdIMi43NDE3QzIuOTMyNTIgNC43MzY2MiA0LjczNjYyIDIuOTMyNTIgNyAyLjc0MTdWNS41QzcgNS43NzYxNCA3LjIyMzg2IDYgNy41IDZDNy43NzYxNCA2IDggNS43NzYxNCA4IDUuNVYyLjc2MzQ0QzEwLjE2NjggMy4wNDIyMiAxMS44Njg5IDQuODA1MTcgMTIuMDU0IDdIOS41QzkuMjIzODYgNyA5IDcuMjIzODYgOSA3LjVDOSA3Ljc3NjE0IDkuMjIzODYgOCA5LjUgOEgxMi4wMzIyQzExLjc2MjEgMTAuMDk5MSAxMC4wOTkxIDExLjc2MjEgOCAxMi4wMzIyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNjA5MTMgMC4wNjM0Mjg3QzQuMzkwODIgMC4wMDg4NTA1IDQuMTY1NzUgMC4xMjM5MyA0LjA4MjE4IDAuMzMyODY3TDMuMTUzOCAyLjY1MzhMMC44MzI4NjYgMy41ODIxOEMwLjcwMjg4NCAzLjYzNDE3IDAuNjA0NTA0IDMuNzQzNyAwLjU2NjcwNSAzLjg3ODQ5QzAuNTI4OTA2IDQuMDEzMjkgMC41NTU5OTQgNC4xNTggMC42Mzk5OTIgNC4yNjk5OUwyLjAxMTQ4IDYuMDk4NjRMMS4wNjM0MyA5Ljg5MDg1QzEuMDA5NDQgMTAuMTA2OCAxLjEyMTQ1IDEwLjMyOTggMS4zMjY5MSAxMC40MTU0TDQuMjAxMTUgMTEuNjEzTDUuNjI1NTcgMTMuNzQ5NkM1LjczNDEyIDEzLjkxMjQgNS45MzU0NSAxMy45ODY0IDYuMTIzNjIgMTMuOTMyN0w5LjYyMzYyIDEyLjkzMjdDOS42Mjk4OCAxMi45MzA5IDkuNjM2MTEgMTIuOTI5IDkuNjQyMjkgMTIuOTI2OUwxMi42NDIzIDExLjkyNjlDMTIuNzkyMyAxMS44NzY5IDEyLjkwNSAxMS43NTE5IDEyLjkzOTMgMTEuNTk3NkwxMy45MzkzIDcuMDk3NjFDMTMuOTc3NiA2LjkyNTA2IDEzLjkxMTQgNi43NDYwNSAxMy43NyA2LjYzOTk5TDExLjk1IDUuMjc0OTlWMi45OTk5OUMxMS45NSAyLjgyOTU1IDExLjg1MzcgMi42NzM3MyAxMS43MDEyIDIuNTk3NUw4LjcwMTI0IDEuMDk3NUM4LjY3MTg3IDEuMDgyODIgOC42NDA5OCAxLjA3MTM5IDguNjA5MTMgMS4wNjM0M0w0LjYwOTEzIDAuMDYzNDI4N1pNMTEuNDMyMyA2LjAxMTczTDEyLjc3NDggNy4wMTg1OEwxMC4yMTE5IDkuMTU0MjlDMTAuMTQ3NiA5LjIwNzg2IDEwLjA5OTUgOS4yNzgzIDEwLjA3MzEgOS4zNTc2OUw5LjI1MzgyIDExLjgxNTVMNy43Mzg0OSAxMC44Njg0QzcuNTI3NzQgMTAuNzM2NyA3LjI1MDExIDEwLjgwMDcgNy4xMTgzOSAxMS4wMTE1QzYuOTg2NjcgMTEuMjIyMiA3LjA1MDc0IDExLjQ5OTkgNy4yNjE0OSAxMS42MzE2TDguNDAzNDEgMTIuMzQ1M0w2LjE5MjIxIDEyLjk3NzFMNC44NzQ0MSAxMS4wMDA0QzQuODI1MTMgMTAuOTI2NSA0Ljc1NTA4IDEwLjg2ODggNC42NzMwNyAxMC44MzQ2TDIuMDMwNDYgOS43MzM1MkwyLjg1MTM0IDYuNDQ5OTlINC45OTk5OUM1LjI0ODUyIDYuNDQ5OTkgNS40NDk5OSA2LjI0ODUyIDUuNDQ5OTkgNS45OTk5OUM1LjQ0OTk5IDUuNzUxNDYgNS4yNDg1MiA1LjU0OTk5IDQuOTk5OTkgNS41NDk5OUgyLjcyNDk5TDEuNzEyMyA0LjE5OTc0TDMuNTE0MDcgMy40NzkwM0w2LjM1NzY5IDQuNDI2OUM2LjUzNjU1IDQuNDg2NTIgNi43MzM2MSA0LjQyODMyIDYuODUxMzggNC4yODExMUw4LjYyNDEzIDIuMDY1MThMMTEuMDUgMy4yNzgxMVY1LjE5NTMzTDguODMyODcgNi4wODIxOEM4LjcwOTk2IDYuMTMxMzQgOC42MTQ5NCA2LjIzMjEyIDguNTczMDggNi4zNTc2OUw4LjA3MzA4IDcuODU3NjlDNy45OTQ0OSA4LjA5MzQ2IDguMTIxOTEgOC4zNDgzMSA4LjM1NzY5IDguNDI2OUM4LjU5MzQ2IDguNTA1NDkgOC44NDgzMSA4LjM3ODA3IDguOTI2OSA4LjE0MjI5TDkuMzYwOSA2Ljg0MDI5TDExLjQzMjMgNi4wMTE3M1pNNy43MTA1MiAxLjc2NjQ4TDYuMzQ0NjIgMy40NzM4Nkw0LjA5NTA1IDIuNzI0TDQuNzcxOTIgMS4wMzE4M0w3LjcxMDUyIDEuNzY2NDhaTTEwLjIxMTUgMTEuNzg4NUwxMi4xMTYgMTEuMTUzN0wxMi43NzQ1IDguMTkwMzRMMTAuODg2NCA5Ljc2Mzc0TDEwLjIxMTUgMTEuNzg4NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE5lPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjI4ODU2IDAuNzk2OTA4QzcuNDIyNTggMC43MzQzNjQgNy41Nzc0MiAwLjczNDM2NCA3LjcxMTQ0IDAuNzk2OTA4TDEzLjcxMTQgMy41OTY5MUMxMy44ODc1IDMuNjc5MDYgMTQgMy44NTU3NCAxNCA0LjA1VjEwLjk1QzE0IDExLjE0NDMgMTMuODg3NSAxMS4zMjA5IDEzLjcxMTQgMTEuNDAzMUw3LjcxMTQ0IDE0LjIwMzFDNy41Nzc0MiAxNC4yNjU2IDcuNDIyNTggMTQuMjY1NiA3LjI4ODU2IDE0LjIwMzFMMS4yODg1NiAxMS40MDMxQzEuMTEyNTIgMTEuMzIwOSAxIDExLjE0NDMgMSAxMC45NVY0LjA1QzEgMy44NTU3NCAxLjExMjUyIDMuNjc5MDYgMS4yODg1NiAzLjU5NjkxTDcuMjg4NTYgMC43OTY5MDhaTTIgNC44MDU3OEw3IDYuOTMwNzhWMTIuOTY0OUwyIDEwLjYzMTZWNC44MDU3OFpNOCAxMi45NjQ5TDEzIDEwLjYzMTZWNC44MDU3OEw4IDYuOTMwNzhWMTIuOTY0OVpNNy41IDYuMDU2NzJMMTIuMjcxOSA0LjAyODY2TDcuNSAxLjgwMTc2TDIuNzI4MDkgNC4wMjg2Nkw3LjUgNi4wNTY3MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHplPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjI5MjI3IDAuMDQ4OTg0QzMuNDcwMzMgLTAuMDMyMzM4IDMuNjc5NDYgLTAuMDAyMjgyMTQgMy44Mjc0IDAuMTI1ODkxTDEyLjg1ODcgNy45NTAyNkMxMy4wMTM0IDguMDg0MzIgMTMuMDcwOCA4LjI5OTE2IDEzLjAwMzUgOC40OTI1MUMxMi45MzYyIDguNjg1ODYgMTIuNzU3OCA4LjgxODY2IDEyLjU1MzMgOC44Mjc2OEw5LjIxODg3IDguOTc0NzRMMTEuMTUwNCAxMy4yMTg3QzExLjI2NDggMTMuNDcgMTEuMTUzOCAxMy43NjY0IDEwLjkwMjYgMTMuODgwOEw4Ljc1MDI0IDE0Ljg2MTNDOC40OTkgMTQuOTc1OCA4LjIwMjU1IDE0Ljg2NDkgOC4wODgwMiAxNC42MTM3TDYuMTUzMzkgMTAuMzcwM0wzLjg2Mjc5IDEyLjc4NTVDMy43MjE5NiAxMi45MzQgMy41MDQ4NyAxMi45ODE3IDMuMzE0NzkgMTIuOTA1OUMzLjEyNDcgMTIuODMwMSAzIDEyLjY0NjEgMyAxMi40NDE0VjAuNTAzNzkyQzMgMC4zMDgwNDggMy4xMTQyMiAwLjEzMDMwNiAzLjI5MjI3IDAuMDQ4OTg0Wk00IDEuNTk4NTJWMTEuMTg3N0w1LjkzNzk5IDkuMTQ0MjVDNi4wNTIzOCA5LjAyMzYzIDYuMjE5MjQgOC45Njc3NiA2LjM4MzE5IDguOTk1MTZDNi41NDcxNSA5LjAyMjU2IDYuNjg2NzcgOS4xMjk2NSA2Ljc1NTczIDkuMjgwOUw4Ljc5MDU2IDEzLjc0NDFMMTAuMDMzMiAxMy4xNzhMOC4wMDE5NSA4LjcxNDk3QzcuOTMzMTMgOC41NjM3NiA3Ljk0MzkxIDguMzg4MjQgOC4wMzA3MiA4LjI0NjU5QzguMTE3NTMgOC4xMDQ5NCA4LjI2OTAzIDguMDE1NjYgOC40MzUgOC4wMDgzNEwxMS4yNTQ5IDcuODgzOTdMNCAxLjU5ODUyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sV2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNSAxQzQuMjIzODYgMSA0IDEuMjIzODYgNCAxLjVDNCAxLjc3NjE0IDQuMjIzODYgMiA0LjUgMkM1LjQyMjE1IDIgNi4wMzk5IDIuMjMwNTQgNi40MjA3NSAyLjU2Mzc5QzYuNzkyODYgMi44ODkzOSA3IDMuMzY2MjYgNyA0VjdINS43NUM1LjQ3Mzg2IDcgNS4yNSA3LjIyMzg2IDUuMjUgNy41QzUuMjUgNy43NzYxNCA1LjQ3Mzg2IDggNS43NSA4SDdWMTFDNyAxMS42MzM3IDYuNzkyODYgMTIuMTEwNiA2LjQyMDc1IDEyLjQzNjJDNi4wMzk5IDEyLjc2OTUgNS40MjIxNSAxMyA0LjUgMTNDNC4yMjM4NiAxMyA0IDEzLjIyMzkgNCAxMy41QzQgMTMuNzc2MSA0LjIyMzg2IDE0IDQuNSAxNEM1LjU3Nzg1IDE0IDYuNDYwMSAxMy43MzA1IDcuMDc5MjUgMTMuMTg4OEM3LjI0MTY4IDEzLjA0NjcgNy4zODE2OSAxMi44ODk2IDcuNSAxMi43MTk4QzcuNjE4MzIgMTIuODg5NiA3Ljc1ODMyIDEzLjA0NjcgNy45MjA3NSAxMy4xODg4QzguNTM5OSAxMy43MzA1IDkuNDIyMTUgMTQgMTAuNSAxNEMxMC43NzYxIDE0IDExIDEzLjc3NjEgMTEgMTMuNUMxMSAxMy4yMjM5IDEwLjc3NjEgMTMgMTAuNSAxM0M5LjU3Nzg1IDEzIDguOTYwMSAxMi43Njk1IDguNTc5MjUgMTIuNDM2MkM4LjIwNzE0IDEyLjExMDYgOCAxMS42MzM3IDggMTFWOEg5LjI1QzkuNTI2MTQgOCA5Ljc1IDcuNzc2MTQgOS43NSA3LjVDOS43NSA3LjIyMzg2IDkuNTI2MTQgNyA5LjI1IDdIOFY0QzggMy4zNjYyNiA4LjIwNzE0IDIuODg5MzkgOC41NzkyNSAyLjU2Mzc5QzguOTYwMSAyLjIzMDU0IDkuNTc3ODUgMiAxMC41IDJDMTAuNzc2MSAyIDExIDEuNzc2MTQgMTEgMS41QzExIDEuMjIzODYgMTAuNzc2MSAxIDEwLjUgMUM5LjQyMjE1IDEgOC41Mzk5IDEuMjY5NDYgNy45MjA3NSAxLjgxMTIxQzcuNzU4MzIgMS45NTMzMyA3LjYxODMyIDIuMTEwNDMgNy41IDIuMjgwMjNDNy4zODE2OCAyLjExMDQzIDcuMjQxNjggMS45NTMzMyA3LjA3OTI1IDEuODExMjFDNi40NjAxIDEuMjY5NDYgNS41Nzc4NSAxIDQuNSAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sR2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUgNy41QzUgNy4yMjM4NiA1LjIyMzg2IDcgNS41IDdIOS41QzkuNzc2MTQgNyAxMCA3LjIyMzg2IDEwIDcuNUMxMCA3Ljc3NjE0IDkuNzc2MTQgOCA5LjUgOEg1LjVDNS4yMjM4NiA4IDUgNy43NzYxNCA1IDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFVlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjggMUwyLjc0OTY3IDAuOTk5OTdDMi41MjEyMiAwLjk5OTc1MiAyLjMyNDI5IDAuOTk5NTY0IDIuMTQ5ODMgMS4wNDE0NUMxLjYwMTM2IDEuMTczMTIgMS4xNzMxMiAxLjYwMTM2IDEuMDQxNDUgMi4xNDk4M0MwLjk5OTU2NCAyLjMyNDI5IDAuOTk5NzUyIDIuNTIxMjIgMC45OTk5NyAyLjc0OTY3TDEgMi44VjUuMkwwLjk5OTk3IDUuMjUwMzNDMC45OTk3NTIgNS40Nzg3OCAwLjk5OTU2NCA1LjY3NTcyIDEuMDQxNDUgNS44NTAxN0MxLjE3MzEyIDYuMzk4NjQgMS42MDEzNiA2LjgyNjg4IDIuMTQ5ODMgNi45NTg1NkMyLjMyNDI5IDcuMDAwNDQgMi41MjEyMiA3LjAwMDI1IDIuNzQ5NjcgNy4wMDAwM0wyLjggN0g1LjJMNS4yNTAzMyA3LjAwMDAzQzUuNDc4NzggNy4wMDAyNSA1LjY3NTcyIDcuMDAwNDQgNS44NTAxNyA2Ljk1ODU2QzYuMzk4NjQgNi44MjY4OCA2LjgyNjg4IDYuMzk4NjQgNi45NTg1NiA1Ljg1MDE3QzcuMDAwNDQgNS42NzU3MiA3LjAwMDI1IDUuNDc4NzggNy4wMDAwMyA1LjI1MDMzTDcgNS4yVjIuOEw3LjAwMDAzIDIuNzQ5NjdDNy4wMDAyNSAyLjUyMTIyIDcuMDAwNDQgMi4zMjQyOSA2Ljk1ODU2IDIuMTQ5ODNDNi44MjY4OCAxLjYwMTM2IDYuMzk4NjQgMS4xNzMxMiA1Ljg1MDE3IDEuMDQxNDVDNS42NzU3MiAwLjk5OTU2NCA1LjQ3ODc4IDAuOTk5NzUyIDUuMjUwMzMgMC45OTk5N0w1LjIgMUgyLjhaTTIuMzgzMjggMi4wMTM4MkMyLjQyNjMyIDIuMDAzNDggMi40OTIyMiAyIDIuOCAySDUuMkM1LjUwNzc5IDIgNS41NzM2OSAyLjAwMzQ4IDUuNjE2NzIgMi4wMTM4MkM1Ljc5OTU1IDIuMDU3NzEgNS45NDIyOSAyLjIwMDQ1IDUuOTg2MTkgMi4zODMyOEM1Ljk5NjUyIDIuNDI2MzIgNiAyLjQ5MjIyIDYgMi44VjUuMkM2IDUuNTA3NzkgNS45OTY1MiA1LjU3MzY5IDUuOTg2MTkgNS42MTY3MkM1Ljk0MjI5IDUuNzk5NTUgNS43OTk1NSA1Ljk0MjI5IDUuNjE2NzIgNS45ODYxOUM1LjU3MzY5IDUuOTk2NTIgNS41MDc3OSA2IDUuMiA2SDIuOEMyLjQ5MjIyIDYgMi40MjYzMiA1Ljk5NjUyIDIuMzgzMjggNS45ODYxOUMyLjIwMDQ1IDUuOTQyMjkgMi4wNTc3MSA1Ljc5OTU1IDIuMDEzODIgNS42MTY3MkMyLjAwMzQ4IDUuNTczNjkgMiA1LjUwNzc5IDIgNS4yVjIuOEMyIDIuNDkyMjIgMi4wMDM0OCAyLjQyNjMyIDIuMDEzODIgMi4zODMyOEMyLjA1NzcxIDIuMjAwNDUgMi4yMDA0NSAyLjA1NzcxIDIuMzgzMjggMi4wMTM4MlpNOS44IDFMOS43NDk2NyAwLjk5OTk3QzkuNTIxMjIgMC45OTk3NTIgOS4zMjQyOSAwLjk5OTU2NCA5LjE0OTgzIDEuMDQxNDVDOC42MDEzNiAxLjE3MzEyIDguMTczMTIgMS42MDEzNiA4LjA0MTQ1IDIuMTQ5ODNDNy45OTk1NiAyLjMyNDI5IDcuOTk5NzUgMi41MjEyMiA3Ljk5OTk3IDIuNzQ5NjdMOCAyLjhWNS4yTDcuOTk5OTcgNS4yNTAzM0M3Ljk5OTc1IDUuNDc4NzggNy45OTk1NiA1LjY3NTcyIDguMDQxNDUgNS44NTAxN0M4LjE3MzEyIDYuMzk4NjQgOC42MDEzNiA2LjgyNjg4IDkuMTQ5ODMgNi45NTg1NkM5LjMyNDI5IDcuMDAwNDQgOS41MjEyMiA3LjAwMDI1IDkuNzQ5NjcgNy4wMDAwM0w5LjggN0gxMi4yTDEyLjI1MDMgNy4wMDAwM0MxMi40Nzg4IDcuMDAwMjUgMTIuNjc1NyA3LjAwMDQ0IDEyLjg1MDIgNi45NTg1NkMxMy4zOTg2IDYuODI2ODggMTMuODI2OSA2LjM5ODY0IDEzLjk1ODYgNS44NTAxN0MxNC4wMDA0IDUuNjc1NzIgMTQuMDAwMyA1LjQ3ODc4IDE0IDUuMjUwMzNMMTQgNS4yVjIuOEwxNCAyLjc0OTY3QzE0LjAwMDMgMi41MjEyMiAxNC4wMDA0IDIuMzI0MjkgMTMuOTU4NiAyLjE0OTgzQzEzLjgyNjkgMS42MDEzNiAxMy4zOTg2IDEuMTczMTIgMTIuODUwMiAxLjA0MTQ1QzEyLjY3NTcgMC45OTk1NjQgMTIuNDc4OCAwLjk5OTc1MiAxMi4yNTAzIDAuOTk5OTdMMTIuMiAxSDkuOFpNOS4zODMyOCAyLjAxMzgyQzkuNDI2MzIgMi4wMDM0OCA5LjQ5MjIyIDIgOS44IDJIMTIuMkMxMi41MDc4IDIgMTIuNTczNyAyLjAwMzQ4IDEyLjYxNjcgMi4wMTM4MkMxMi43OTk1IDIuMDU3NzEgMTIuOTQyMyAyLjIwMDQ1IDEyLjk4NjIgMi4zODMyOEMxMi45OTY1IDIuNDI2MzIgMTMgMi40OTIyMiAxMyAyLjhWNS4yQzEzIDUuNTA3NzkgMTIuOTk2NSA1LjU3MzY5IDEyLjk4NjIgNS42MTY3MkMxMi45NDIzIDUuNzk5NTUgMTIuNzk5NSA1Ljk0MjI5IDEyLjYxNjcgNS45ODYxOUMxMi41NzM3IDUuOTk2NTIgMTIuNTA3OCA2IDEyLjIgNkg5LjhDOS40OTIyMiA2IDkuNDI2MzIgNS45OTY1MiA5LjM4MzI4IDUuOTg2MTlDOS4yMDA0NSA1Ljk0MjI5IDkuMDU3NzEgNS43OTk1NSA5LjAxMzgyIDUuNjE2NzJDOS4wMDM0OCA1LjU3MzY5IDkgNS41MDc3OSA5IDUuMlYyLjhDOSAyLjQ5MjIyIDkuMDAzNDggMi40MjYzMiA5LjAxMzgyIDIuMzgzMjhDOS4wNTc3MSAyLjIwMDQ1IDkuMjAwNDUgMi4wNTc3MSA5LjM4MzI4IDIuMDEzODJaTTIuNzQ5NjcgNy45OTk5N0wyLjggOEg1LjJMNS4yNTAzMyA3Ljk5OTk3QzUuNDc4NzggNy45OTk3NSA1LjY3NTcyIDcuOTk5NTYgNS44NTAxNyA4LjA0MTQ1QzYuMzk4NjQgOC4xNzMxMiA2LjgyNjg4IDguNjAxMzYgNi45NTg1NiA5LjE0OTgzQzcuMDAwNDQgOS4zMjQyOSA3LjAwMDI1IDkuNTIxMjIgNy4wMDAwMyA5Ljc0OTY3TDcgOS44VjEyLjJMNy4wMDAwMyAxMi4yNTAzQzcuMDAwMjUgMTIuNDc4OCA3LjAwMDQ0IDEyLjY3NTcgNi45NTg1NiAxMi44NTAyQzYuODI2ODggMTMuMzk4NiA2LjM5ODY0IDEzLjgyNjkgNS44NTAxNyAxMy45NTg2QzUuNjc1NzIgMTQuMDAwNCA1LjQ3ODc4IDE0LjAwMDMgNS4yNTAzMyAxNEw1LjIgMTRIMi44TDIuNzQ5NjcgMTRDMi41MjEyMiAxNC4wMDAzIDIuMzI0MjkgMTQuMDAwNCAyLjE0OTgzIDEzLjk1ODZDMS42MDEzNiAxMy44MjY5IDEuMTczMTIgMTMuMzk4NiAxLjA0MTQ1IDEyLjg1MDJDMC45OTk1NjQgMTIuNjc1NyAwLjk5OTc1MiAxMi40Nzg4IDAuOTk5OTcgMTIuMjUwM0wxIDEyLjJWOS44TDAuOTk5OTcgOS43NDk2N0MwLjk5OTc1MiA5LjUyMTIyIDAuOTk5NTY0IDkuMzI0MjkgMS4wNDE0NSA5LjE0OTgzQzEuMTczMTIgOC42MDEzNiAxLjYwMTM2IDguMTczMTIgMi4xNDk4MyA4LjA0MTQ1QzIuMzI0MjkgNy45OTk1NiAyLjUyMTIyIDcuOTk5NzUgMi43NDk2NyA3Ljk5OTk3Wk0yLjggOUMyLjQ5MjIyIDkgMi40MjYzMiA5LjAwMzQ4IDIuMzgzMjggOS4wMTM4MkMyLjIwMDQ1IDkuMDU3NzEgMi4wNTc3MSA5LjIwMDQ1IDIuMDEzODIgOS4zODMyOEMyLjAwMzQ4IDkuNDI2MzIgMiA5LjQ5MjIyIDIgOS44VjEyLjJDMiAxMi41MDc4IDIuMDAzNDggMTIuNTczNyAyLjAxMzgyIDEyLjYxNjdDMi4wNTc3MSAxMi43OTk1IDIuMjAwNDUgMTIuOTQyMyAyLjM4MzI4IDEyLjk4NjJDMi40MjYzMiAxMi45OTY1IDIuNDkyMjIgMTMgMi44IDEzSDUuMkM1LjUwNzc5IDEzIDUuNTczNjkgMTIuOTk2NSA1LjYxNjcyIDEyLjk4NjJDNS43OTk1NSAxMi45NDIzIDUuOTQyMjkgMTIuNzk5NSA1Ljk4NjE5IDEyLjYxNjdDNS45OTY1MiAxMi41NzM3IDYgMTIuNTA3OCA2IDEyLjJWOS44QzYgOS40OTIyMiA1Ljk5NjUyIDkuNDI2MzIgNS45ODYxOSA5LjM4MzI4QzUuOTQyMjkgOS4yMDA0NSA1Ljc5OTU1IDkuMDU3NzEgNS42MTY3MiA5LjAxMzgyQzUuNTczNjkgOS4wMDM0OCA1LjUwNzc5IDkgNS4yIDlIMi44Wk05LjggOEw5Ljc0OTY3IDcuOTk5OTdDOS41MjEyMiA3Ljk5OTc1IDkuMzI0MjkgNy45OTk1NiA5LjE0OTgzIDguMDQxNDVDOC42MDEzNiA4LjE3MzEyIDguMTczMTIgOC42MDEzNiA4LjA0MTQ1IDkuMTQ5ODNDNy45OTk1NiA5LjMyNDI5IDcuOTk5NzUgOS41MjEyMiA3Ljk5OTk3IDkuNzQ5NjdMOCA5LjhWMTIuMkw3Ljk5OTk3IDEyLjI1MDNDNy45OTk3NSAxMi40Nzg4IDcuOTk5NTYgMTIuNjc1NyA4LjA0MTQ1IDEyLjg1MDJDOC4xNzMxMiAxMy4zOTg2IDguNjAxMzYgMTMuODI2OSA5LjE0OTgzIDEzLjk1ODZDOS4zMjQyOSAxNC4wMDA0IDkuNTIxMjIgMTQuMDAwMyA5Ljc0OTY3IDE0TDkuOCAxNEgxMi4yTDEyLjI1MDMgMTRDMTIuNDc4OCAxNC4wMDAzIDEyLjY3NTcgMTQuMDAwNCAxMi44NTAyIDEzLjk1ODZDMTMuMzk4NiAxMy44MjY5IDEzLjgyNjkgMTMuMzk4NiAxMy45NTg2IDEyLjg1MDJDMTQuMDAwNCAxMi42NzU3IDE0LjAwMDMgMTIuNDc4OCAxNCAxMi4yNTAzTDE0IDEyLjJWOS44TDE0IDkuNzQ5NjdDMTQuMDAwMyA5LjUyMTIyIDE0LjAwMDQgOS4zMjQyOSAxMy45NTg2IDkuMTQ5ODNDMTMuODI2OSA4LjYwMTM2IDEzLjM5ODYgOC4xNzMxMiAxMi44NTAyIDguMDQxNDVDMTIuNjc1NyA3Ljk5OTU2IDEyLjQ3ODggNy45OTk3NSAxMi4yNTAzIDcuOTk5OTdMMTIuMiA4SDkuOFpNOS4zODMyOCA5LjAxMzgyQzkuNDI2MzIgOS4wMDM0OCA5LjQ5MjIyIDkgOS44IDlIMTIuMkMxMi41MDc4IDkgMTIuNTczNyA5LjAwMzQ4IDEyLjYxNjcgOS4wMTM4MkMxMi43OTk1IDkuMDU3NzEgMTIuOTQyMyA5LjIwMDQ1IDEyLjk4NjIgOS4zODMyOEMxMi45OTY1IDkuNDI2MzIgMTMgOS40OTIyMiAxMyA5LjhWMTIuMkMxMyAxMi41MDc4IDEyLjk5NjUgMTIuNTczNyAxMi45ODYyIDEyLjYxNjdDMTIuOTQyMyAxMi43OTk1IDEyLjc5OTUgMTIuOTQyMyAxMi42MTY3IDEyLjk4NjJDMTIuNTczNyAxMi45OTY1IDEyLjUwNzggMTMgMTIuMiAxM0g5LjhDOS40OTIyMiAxMyA5LjQyNjMyIDEyLjk5NjUgOS4zODMyOCAxMi45ODYyQzkuMjAwNDUgMTIuOTQyMyA5LjA1NzcxIDEyLjc5OTUgOS4wMTM4MiAxMi42MTY3QzkuMDAzNDggMTIuNTczNyA5IDEyLjUwNzggOSAxMi4yVjkuOEM5IDkuNDkyMjIgOS4wMDM0OCA5LjQyNjMyIDkuMDEzODIgOS4zODMyOEM5LjA1NzcxIDkuMjAwNDUgOS4yMDA0NSA5LjA1NzcxIDkuMzgzMjggOS4wMTM4MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHFlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjAwMDE0IDIuNzM4OTVDMy4wMDAxNCAyLjk0Njk4IDIuNzYwODcgMy4wNjQwMSAyLjU5NjY2IDIuOTM2MjhMMS4wMDM4NiAxLjY5NzQ0QzAuODc1MTc3IDEuNTk3MzUgMC44NzUxNzcgMS40MDI4NiAxLjAwMzg2IDEuMzAyNzdMMi41OTY2NiAwLjA2MzkyOEMyLjc2MDg3IC0wLjA2Mzc5NDQgMy4wMDAxNCAwLjA1MzIyOTMgMy4wMDAxNCAwLjI2MTI2NlYxLjAwMDEySDkuMDAwMDlWMC4yNjEyOTZDOS4wMDAwOSAwLjA1MzI1OTEgOS4yMzkzNiAtMC4wNjM3NjQ2IDkuNDAzNTggMC4wNjM5NTc4TDEwLjk5NjQgMS4zMDI4QzExLjEyNTEgMS40MDI4OSAxMS4xMjUxIDEuNTk3MzggMTAuOTk2NCAxLjY5NzQ3TDkuNDAzNTggMi45MzYzMUM5LjIzOTM2IDMuMDY0MDQgOS4wMDAwOSAyLjk0NzAxIDkuMDAwMDkgMi43Mzg5OFYyLjAwMDEySDMuMDAwMTRWMi43Mzg5NVpNOS41MDAwMiA0Ljk5OTk4SDIuNTAwMDJDMi4yMjM4OCA0Ljk5OTk4IDIuMDAwMDIgNS4yMjM4NCAyLjAwMDAyIDUuNDk5OThWMTIuNUMyLjAwMDAyIDEyLjc3NjEgMi4yMjM4OCAxMyAyLjUwMDAyIDEzSDkuNTAwMDJDOS43NzYxNiAxMyAxMCAxMi43NzYxIDEwIDEyLjVWNS40OTk5OEMxMCA1LjIyMzg0IDkuNzc2MTYgNC45OTk5OCA5LjUwMDAyIDQuOTk5OThaTTIuNTAwMDIgMy45OTk5OEMxLjY3MTU5IDMuOTk5OTggMS4wMDAwMiA0LjY3MTU2IDEuMDAwMDIgNS40OTk5OFYxMi41QzEuMDAwMDIgMTMuMzI4NCAxLjY3MTU5IDE0IDIuNTAwMDIgMTRIOS41MDAwMkMxMC4zMjg0IDE0IDExIDEzLjMyODQgMTEgMTIuNVY1LjQ5OTk4QzExIDQuNjcxNTYgMTAuMzI4NCAzLjk5OTk4IDkuNTAwMDIgMy45OTk5OEgyLjUwMDAyWk0xNC43Mzg5IDYuMDAwMDFIMTRWMTJIMTQuNzM4OUMxNC45NDY5IDEyIDE1LjA2NCAxMi4yMzkzIDE0LjkzNjIgMTIuNDAzNUwxMy42OTc0IDEzLjk5NjNDMTMuNTk3MyAxNC4xMjUgMTMuNDAyOCAxNC4xMjUgMTMuMzAyNyAxMy45OTYzTDEyLjA2MzkgMTIuNDAzNUMxMS45MzYyIDEyLjIzOTMgMTIuMDUzMiAxMiAxMi4yNjEyIDEySDEzVjYuMDAwMDFIMTIuMjYxMkMxMi4wNTMyIDYuMDAwMDEgMTEuOTM2MSA1Ljc2MDc0IDEyLjA2MzkgNS41OTY1M0wxMy4zMDI3IDQuMDAzNzNDMTMuNDAyOCAzLjg3NTA1IDEzLjU5NzMgMy44NzUwNSAxMy42OTc0IDQuMDAzNzRMMTQuOTM2MiA1LjU5NjUzQzE1LjA2MzkgNS43NjA3NCAxNC45NDY5IDYuMDAwMDEgMTQuNzM4OSA2LjAwMDAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzcwNzVDMy44NDIyMiAwLjg3NzA3NSAwLjg3NzA3NSAzLjg0MjIyIDAuODc3MDc1IDcuNDk5OTFDMC44NzcwNzUgMTEuMTU3NiAzLjg0MjIyIDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzExLjE1NzYgMTQuMTIyNyAxNC4xMjI3IDExLjE1NzYgMTQuMTIyNyA3LjQ5OTkxQzE0LjEyMjcgMy44NDIyMiAxMS4xNTc2IDAuODc3MDc1IDcuNDk5OTEgMC44NzcwNzVaTTEuODI3MDggNy40OTk5MUMxLjgyNzA4IDQuMzY2ODkgNC4zNjY4OSAxLjgyNzA3IDcuNDk5OTEgMS44MjcwN0MxMC42MzI5IDEuODI3MDcgMTMuMTcyNyA0LjM2Njg5IDEzLjE3MjcgNy40OTk5MUMxMy4xNzI3IDEwLjYzMjkgMTAuNjMyOSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0M0LjM2Njg5IDEzLjE3MjcgMS44MjcwOCAxMC42MzI5IDEuODI3MDggNy40OTk5MVpNOC4zNzI4NyA3LjUwMDA2QzguMzcyODcgNy45ODE5NiA3Ljk4MjIxIDguMzcyNjMgNy41MDAzIDguMzcyNjNDNy4wMTgzOSA4LjM3MjYzIDYuNjI3NzMgNy45ODE5NiA2LjYyNzczIDcuNTAwMDZDNi42Mjc3MyA3LjAxODE1IDcuMDE4MzkgNi42Mjc0OCA3LjUwMDMgNi42Mjc0OEM3Ljk4MjIxIDYuNjI3NDggOC4zNzI4NyA3LjAxODE1IDguMzcyODcgNy41MDAwNlpNOS4zMjI4NyA3LjUwMDA2QzkuMzIyODcgOC41MDY2NCA4LjUwNjg4IDkuMzIyNjMgNy41MDAzIDkuMzIyNjNDNi40OTM3MiA5LjMyMjYzIDUuNjc3NzMgOC41MDY2NCA1LjY3NzczIDcuNTAwMDZDNS42Nzc3MyA2LjQ5MzQ4IDYuNDkzNzIgNS42Nzc0OCA3LjUwMDMgNS42Nzc0OEM4LjUwNjg4IDUuNjc3NDggOS4zMjI4NyA2LjQ5MzQ4IDkuMzIyODcgNy41MDAwNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEtlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDcuNUMyIDcuMjIzODYgMi4yMjM4NiA3IDIuNSA3SDEyLjVDMTIuNzc2MSA3IDEzIDcuMjIzODYgMTMgNy41QzEzIDcuNzc2MTQgMTIuNzc2MSA4IDEyLjUgOEgyLjVDMi4yMjM4NiA4IDIgNy43NzYxNCAyIDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFhlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMkM3Ljc3NjE0IDIgOCAyLjIyMzg2IDggMi41TDggMTIuNUM4IDEyLjc3NjEgNy43NzYxNCAxMyA3LjUgMTNDNy4yMjM4NiAxMyA3IDEyLjc3NjEgNyAxMi41TDcgMi41QzcgMi4yMjM4NiA3LjIyMzg2IDIgNy41IDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxRZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDkuMTI1QzguMzk3NDYgOS4xMjUgOS4xMjUgOC4zOTc0NiA5LjEyNSA3LjVDOS4xMjUgNi42MDI1NCA4LjM5NzQ2IDUuODc1IDcuNSA1Ljg3NUM2LjYwMjU0IDUuODc1IDUuODc1IDYuNjAyNTQgNS44NzUgNy41QzUuODc1IDguMzk3NDYgNi42MDI1NCA5LjEyNSA3LjUgOS4xMjVaTTcuNSAxMC4xMjVDOC45NDk3NSAxMC4xMjUgMTAuMTI1IDguOTQ5NzUgMTAuMTI1IDcuNUMxMC4xMjUgNi4wNTAyNSA4Ljk0OTc1IDQuODc1IDcuNSA0Ljg3NUM2LjA1MDI1IDQuODc1IDQuODc1IDYuMDUwMjUgNC44NzUgNy41QzQuODc1IDguOTQ5NzUgNi4wNTAyNSAxMC4xMjUgNy41IDEwLjEyNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEplPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05Ljg3NSA3LjVDOS44NzUgOC44MTE2OCA4LjgxMTY4IDkuODc1IDcuNSA5Ljg3NUM2LjE4ODMyIDkuODc1IDUuMTI1IDguODExNjggNS4xMjUgNy41QzUuMTI1IDYuMTg4MzIgNi4xODgzMiA1LjEyNSA3LjUgNS4xMjVDOC44MTE2OCA1LjEyNSA5Ljg3NSA2LjE4ODMyIDkuODc1IDcuNVpcIixmaWxsOm59KSl9LGV0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjYyNSA3LjVDMy42MjUgOC4xMjEzMiAzLjEyMTMyIDguNjI1IDIuNSA4LjYyNUMxLjg3ODY4IDguNjI1IDEuMzc1IDguMTIxMzIgMS4zNzUgNy41QzEuMzc1IDYuODc4NjggMS44Nzg2OCA2LjM3NSAyLjUgNi4zNzVDMy4xMjEzMiA2LjM3NSAzLjYyNSA2Ljg3ODY4IDMuNjI1IDcuNVpNOC42MjUgNy41QzguNjI1IDguMTIxMzIgOC4xMjEzMiA4LjYyNSA3LjUgOC42MjVDNi44Nzg2OCA4LjYyNSA2LjM3NSA4LjEyMTMyIDYuMzc1IDcuNUM2LjM3NSA2Ljg3ODY4IDYuODc4NjggNi4zNzUgNy41IDYuMzc1QzguMTIxMzIgNi4zNzUgOC42MjUgNi44Nzg2OCA4LjYyNSA3LjVaTTEyLjUgOC42MjVDMTMuMTIxMyA4LjYyNSAxMy42MjUgOC4xMjEzMiAxMy42MjUgNy41QzEzLjYyNSA2Ljg3ODY4IDEzLjEyMTMgNi4zNzUgMTIuNSA2LjM3NUMxMS44Nzg3IDYuMzc1IDExLjM3NSA2Ljg3ODY4IDExLjM3NSA3LjVDMTEuMzc1IDguMTIxMzIgMTEuODc4NyA4LjYyNSAxMi41IDguNjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguNjI1IDIuNUM4LjYyNSAzLjEyMTMyIDguMTIxMzIgMy42MjUgNy41IDMuNjI1QzYuODc4NjggMy42MjUgNi4zNzUgMy4xMjEzMiA2LjM3NSAyLjVDNi4zNzUgMS44Nzg2OCA2Ljg3ODY4IDEuMzc1IDcuNSAxLjM3NUM4LjEyMTMyIDEuMzc1IDguNjI1IDEuODc4NjggOC42MjUgMi41Wk04LjYyNSA3LjVDOC42MjUgOC4xMjEzMiA4LjEyMTMyIDguNjI1IDcuNSA4LjYyNUM2Ljg3ODY4IDguNjI1IDYuMzc1IDguMTIxMzIgNi4zNzUgNy41QzYuMzc1IDYuODc4NjggNi44Nzg2OCA2LjM3NSA3LjUgNi4zNzVDOC4xMjEzMiA2LjM3NSA4LjYyNSA2Ljg3ODY4IDguNjI1IDcuNVpNNy41IDEzLjYyNUM4LjEyMTMyIDEzLjYyNSA4LjYyNSAxMy4xMjEzIDguNjI1IDEyLjVDOC42MjUgMTEuODc4NyA4LjEyMTMyIDExLjM3NSA3LjUgMTEuMzc1QzYuODc4NjggMTEuMzc1IDYuMzc1IDExLjg3ODcgNi4zNzUgMTIuNUM2LjM3NSAxMy4xMjEzIDYuODc4NjggMTMuNjI1IDcuNSAxMy42MjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxudD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy44NTM1NSAyLjE0NjQ1QzMuNjU4MjkgMS45NTExOCAzLjM0MTcxIDEuOTUxMTggMy4xNDY0NSAyLjE0NjQ1QzIuOTUxMTggMi4zNDE3MSAyLjk1MTE4IDIuNjU4MjkgMy4xNDY0NSAyLjg1MzU1TDcuMTQ2NDUgNi44NTM1NUM3LjM0MTcxIDcuMDQ4ODIgNy42NTgyOSA3LjA0ODgyIDcuODUzNTUgNi44NTM1NUwxMS44NTM2IDIuODUzNTVDMTIuMDQ4OCAyLjY1ODI5IDEyLjA0ODggMi4zNDE3MSAxMS44NTM2IDIuMTQ2NDVDMTEuNjU4MyAxLjk1MTE4IDExLjM0MTcgMS45NTExOCAxMS4xNDY0IDIuMTQ2NDVMNy41IDUuNzkyODlMMy44NTM1NSAyLjE0NjQ1Wk0zLjg1MzU1IDguMTQ2NDVDMy42NTgyOSA3Ljk1MTE4IDMuMzQxNzEgNy45NTExOCAzLjE0NjQ1IDguMTQ2NDVDMi45NTExOCA4LjM0MTcxIDIuOTUxMTggOC42NTgyOSAzLjE0NjQ1IDguODUzNTVMNy4xNDY0NSAxMi44NTM2QzcuMzQxNzEgMTMuMDQ4OCA3LjY1ODI5IDEzLjA0ODggNy44NTM1NSAxMi44NTM2TDExLjg1MzYgOC44NTM1NUMxMi4wNDg4IDguNjU4MjkgMTIuMDQ4OCA4LjM0MTcxIDExLjg1MzYgOC4xNDY0NUMxMS42NTgzIDcuOTUxMTggMTEuMzQxNyA3Ljk1MTE4IDExLjE0NjQgOC4xNDY0NUw3LjUgMTEuNzkyOUwzLjg1MzU1IDguMTQ2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxydD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi44NTM1NSAzLjg1MzU1QzcuMDQ4ODIgMy42NTgyOSA3LjA0ODgyIDMuMzQxNzEgNi44NTM1NSAzLjE0NjQ1QzYuNjU4MjkgMi45NTExOCA2LjM0MTcxIDIuOTUxMTggNi4xNDY0NSAzLjE0NjQ1TDIuMTQ2NDUgNy4xNDY0NUMxLjk1MTE4IDcuMzQxNzEgMS45NTExOCA3LjY1ODI5IDIuMTQ2NDUgNy44NTM1NUw2LjE0NjQ1IDExLjg1MzZDNi4zNDE3MSAxMi4wNDg4IDYuNjU4MjkgMTIuMDQ4OCA2Ljg1MzU1IDExLjg1MzZDNy4wNDg4MiAxMS42NTgzIDcuMDQ4ODIgMTEuMzQxNyA2Ljg1MzU1IDExLjE0NjRMMy4yMDcxMSA3LjVMNi44NTM1NSAzLjg1MzU1Wk0xMi44NTM2IDMuODUzNTVDMTMuMDQ4OCAzLjY1ODI5IDEzLjA0ODggMy4zNDE3MSAxMi44NTM2IDMuMTQ2NDVDMTIuNjU4MyAyLjk1MTE4IDEyLjM0MTcgMi45NTExOCAxMi4xNDY0IDMuMTQ2NDVMOC4xNDY0NSA3LjE0NjQ1QzcuOTUxMTggNy4zNDE3MSA3Ljk1MTE4IDcuNjU4MjkgOC4xNDY0NSA3Ljg1MzU1TDEyLjE0NjQgMTEuODUzNkMxMi4zNDE3IDEyLjA0ODggMTIuNjU4MyAxMi4wNDg4IDEyLjg1MzYgMTEuODUzNkMxMy4wNDg4IDExLjY1ODMgMTMuMDQ4OCAxMS4zNDE3IDEyLjg1MzYgMTEuMTQ2NEw5LjIwNzExIDcuNUwxMi44NTM2IDMuODUzNTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxvdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi4xNDY0NSAxMS4xNDY0QzEuOTUxMTggMTEuMzQxNyAxLjk1MTE4IDExLjY1ODMgMi4xNDY0NSAxMS44NTM2QzIuMzQxNzEgMTIuMDQ4OCAyLjY1ODI5IDEyLjA0ODggMi44NTM1NSAxMS44NTM2TDYuODUzNTUgNy44NTM1NUM3LjA0ODgyIDcuNjU4MjkgNy4wNDg4MiA3LjM0MTcxIDYuODUzNTUgNy4xNDY0NUwyLjg1MzU1IDMuMTQ2NDVDMi42NTgyOSAyLjk1MTE4IDIuMzQxNzEgMi45NTExOCAyLjE0NjQ1IDMuMTQ2NDVDMS45NTExOCAzLjM0MTcxIDEuOTUxMTggMy42NTgyOSAyLjE0NjQ1IDMuODUzNTVMNS43OTI4OSA3LjVMMi4xNDY0NSAxMS4xNDY0Wk04LjE0NjQ1IDExLjE0NjRDNy45NTExOCAxMS4zNDE3IDcuOTUxMTggMTEuNjU4MyA4LjE0NjQ1IDExLjg1MzZDOC4zNDE3MSAxMi4wNDg4IDguNjU4MjkgMTIuMDQ4OCA4Ljg1MzU1IDExLjg1MzZMMTIuODUzNiA3Ljg1MzU1QzEzLjA0ODggNy42NTgyOSAxMy4wNDg4IDcuMzQxNzEgMTIuODUzNiA3LjE0NjQ1TDguODUzNTUgMy4xNDY0NUM4LjY1ODI5IDIuOTUxMTggOC4zNDE3MSAyLjk1MTE4IDguMTQ2NDUgMy4xNDY0NUM3Ljk1MTE4IDMuMzQxNzEgNy45NTExOCAzLjY1ODI5IDguMTQ2NDUgMy44NTM1NUwxMS43OTI5IDcuNUw4LjE0NjQ1IDExLjE0NjRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxpdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEuMTQ2NCA2Ljg1MzU1QzExLjM0MTcgNy4wNDg4MiAxMS42NTgzIDcuMDQ4ODIgMTEuODUzNiA2Ljg1MzU1QzEyLjA0ODggNi42NTgyOSAxMi4wNDg4IDYuMzQxNzEgMTEuODUzNiA2LjE0NjQ1TDcuODUzNTUgMi4xNDY0NUM3LjY1ODI5IDEuOTUxMTggNy4zNDE3MSAxLjk1MTE4IDcuMTQ2NDUgMi4xNDY0NUwzLjE0NjQ1IDYuMTQ2NDVDMi45NTExOCA2LjM0MTcxIDIuOTUxMTggNi42NTgyOSAzLjE0NjQ1IDYuODUzNTVDMy4zNDE3MSA3LjA0ODgyIDMuNjU4MjkgNy4wNDg4MiAzLjg1MzU1IDYuODUzNTVMNy41IDMuMjA3MTFMMTEuMTQ2NCA2Ljg1MzU1Wk0xMS4xNDY0IDEyLjg1MzZDMTEuMzQxNyAxMy4wNDg4IDExLjY1ODMgMTMuMDQ4OCAxMS44NTM2IDEyLjg1MzZDMTIuMDQ4OCAxMi42NTgzIDEyLjA0ODggMTIuMzQxNyAxMS44NTM2IDEyLjE0NjRMNy44NTM1NSA4LjE0NjQ1QzcuNjU4MjkgNy45NTExOCA3LjM0MTcxIDcuOTUxMTggNy4xNDY0NSA4LjE0NjQ1TDMuMTQ2NDUgMTIuMTQ2NEMyLjk1MTE4IDEyLjM0MTcgMi45NTExOCAxMi42NTgzIDMuMTQ2NDUgMTIuODUzNkMzLjM0MTcxIDEzLjA0ODggMy42NTgyOSAxMy4wNDg4IDMuODUzNTUgMTIuODUzNkw3LjUgOS4yMDcxMUwxMS4xNDY0IDEyLjg1MzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxhdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41MDAwNSAxLjA0OTk5QzcuNzQ4NTggMS4wNDk5OSA3Ljk1MDA1IDEuMjUxNDYgNy45NTAwNSAxLjQ5OTk5VjguNDEzNTlMMTAuMTgxOSA2LjE4MTc5QzEwLjM1NzYgNi4wMDYwNSAxMC42NDI1IDYuMDA2MDUgMTAuODE4MiA2LjE4MTc5QzEwLjk5NCA2LjM1NzUzIDEwLjk5NCA2LjY0MjQ1IDEwLjgxODIgNi44MTgxOUw3LjgxODI1IDkuODE4MTlDNy42NDI1MSA5Ljk5MzkyIDcuMzU3NTkgOS45OTM5MiA3LjE4MTg1IDkuODE4MTlMNC4xODE4NSA2LjgxODE5QzQuMDA2MTEgNi42NDI0NSA0LjAwNjExIDYuMzU3NTMgNC4xODE4NSA2LjE4MTc5QzQuMzU3NTkgNi4wMDYwNSA0LjY0MjUxIDYuMDA2MDUgNC44MTgyNSA2LjE4MTc5TDcuMDUwMDUgOC40MTM1OVYxLjQ5OTk5QzcuMDUwMDUgMS4yNTE0NiA3LjI1MTUyIDEuMDQ5OTkgNy41MDAwNSAxLjA0OTk5Wk0yLjUgMTBDMi43NzYxNCAxMCAzIDEwLjIyMzkgMyAxMC41VjEyQzMgMTIuNTUzOSAzLjQ0NTY1IDEzIDMuOTk2MzUgMTNIMTEuMDAxMkMxMS41NTI5IDEzIDEyIDEyLjU1MjggMTIgMTJWMTAuNUMxMiAxMC4yMjM5IDEyLjIyMzkgMTAgMTIuNSAxMEMxMi43NzYxIDEwIDEzIDEwLjIyMzkgMTMgMTAuNVYxMkMxMyAxMy4xMDQxIDEyLjEwNjIgMTQgMTEuMDAxMiAxNEgzLjk5NjM1QzIuODkwMTkgMTQgMiAxMy4xMDMgMiAxMlYxMC41QzIgMTAuMjIzOSAyLjIyMzg2IDEwIDIuNSAxMFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGx0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjQuNVwiLGN5OlwiMi41XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjQuNVwiLGN5OlwiNC41XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjQuNVwiLGN5OlwiNi40OTlcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNC41XCIsY3k6XCI4LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI0LjVcIixjeTpcIjEwLjQ5OFwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI0LjVcIixjeTpcIjEyLjQ5OFwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI2LjVcIixjeTpcIjIuNVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI2LjVcIixjeTpcIjQuNVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI2LjVcIixjeTpcIjYuNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjYuNVwiLGN5OlwiOC40OTlcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNi41XCIsY3k6XCIxMC40OThcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNi41XCIsY3k6XCIxMi40OThcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiOC40OTlcIixjeTpcIjIuNVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI4LjQ5OVwiLGN5OlwiNC41XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjguNDk5XCIsY3k6XCI2LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI4LjQ5OVwiLGN5OlwiOC40OTlcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiOC40OTlcIixjeTpcIjEwLjQ5OFwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI4LjQ5OVwiLGN5OlwiMTIuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjEwLjQ5OVwiLGN5OlwiMi41XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjEwLjQ5OVwiLGN5OlwiNC41XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjEwLjQ5OVwiLGN5OlwiNi40OTlcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiMTAuNDk5XCIsY3k6XCI4LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCIxMC40OTlcIixjeTpcIjEwLjQ5OFwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCIxMC40OTlcIixjeTpcIjEyLjQ5OFwiLHI6XCIuNlwiLGZpbGw6bn0pKX0sY3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNSA0LjYyNUM2LjEyMTMyIDQuNjI1IDYuNjI1IDQuMTIxMzIgNi42MjUgMy41QzYuNjI1IDIuODc4NjggNi4xMjEzMiAyLjM3NSA1LjUgMi4zNzVDNC44Nzg2OCAyLjM3NSA0LjM3NSAyLjg3ODY4IDQuMzc1IDMuNUM0LjM3NSA0LjEyMTMyIDQuODc4NjggNC42MjUgNS41IDQuNjI1Wk05LjUgNC42MjVDMTAuMTIxMyA0LjYyNSAxMC42MjUgNC4xMjEzMiAxMC42MjUgMy41QzEwLjYyNSAyLjg3ODY4IDEwLjEyMTMgMi4zNzUgOS41IDIuMzc1QzguODc4NjggMi4zNzUgOC4zNzUgMi44Nzg2OCA4LjM3NSAzLjVDOC4zNzUgNC4xMjEzMiA4Ljg3ODY4IDQuNjI1IDkuNSA0LjYyNVpNMTAuNjI1IDcuNUMxMC42MjUgOC4xMjEzMiAxMC4xMjEzIDguNjI1IDkuNSA4LjYyNUM4Ljg3ODY4IDguNjI1IDguMzc1IDguMTIxMzIgOC4zNzUgNy41QzguMzc1IDYuODc4NjggOC44Nzg2OCA2LjM3NSA5LjUgNi4zNzVDMTAuMTIxMyA2LjM3NSAxMC42MjUgNi44Nzg2OCAxMC42MjUgNy41Wk01LjUgOC42MjVDNi4xMjEzMiA4LjYyNSA2LjYyNSA4LjEyMTMyIDYuNjI1IDcuNUM2LjYyNSA2Ljg3ODY4IDYuMTIxMzIgNi4zNzUgNS41IDYuMzc1QzQuODc4NjggNi4zNzUgNC4zNzUgNi44Nzg2OCA0LjM3NSA3LjVDNC4zNzUgOC4xMjEzMiA0Ljg3ODY4IDguNjI1IDUuNSA4LjYyNVpNMTAuNjI1IDExLjVDMTAuNjI1IDEyLjEyMTMgMTAuMTIxMyAxMi42MjUgOS41IDEyLjYyNUM4Ljg3ODY4IDEyLjYyNSA4LjM3NSAxMi4xMjEzIDguMzc1IDExLjVDOC4zNzUgMTAuODc4NyA4Ljg3ODY4IDEwLjM3NSA5LjUgMTAuMzc1QzEwLjEyMTMgMTAuMzc1IDEwLjYyNSAxMC44Nzg3IDEwLjYyNSAxMS41Wk01LjUgMTIuNjI1QzYuMTIxMzIgMTIuNjI1IDYuNjI1IDEyLjEyMTMgNi42MjUgMTEuNUM2LjYyNSAxMC44Nzg3IDYuMTIxMzIgMTAuMzc1IDUuNSAxMC4zNzVDNC44Nzg2OCAxMC4zNzUgNC4zNzUgMTAuODc4NyA0LjM3NSAxMS41QzQuMzc1IDEyLjEyMTMgNC44Nzg2OCAxMi42MjUgNS41IDEyLjYyNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHN0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjQ5OTk4IDQuMDk5OThDMi4yNzkwNiA0LjA5OTk4IDIuMDk5OTggNC4yNzkwNiAyLjA5OTk4IDQuNDk5OThDMi4wOTk5OCA0LjcyMDg5IDIuMjc5MDYgNC44OTk5OCAyLjQ5OTk4IDQuODk5OThIMTIuNUMxMi43MjA5IDQuODk5OTggMTIuOSA0LjcyMDg5IDEyLjkgNC40OTk5OEMxMi45IDQuMjc5MDYgMTIuNzIwOSA0LjA5OTk4IDEyLjUgNC4wOTk5OEgyLjQ5OTk4Wk0yLjQ5OTk4IDYuMDk5OThDMi4yNzkwNiA2LjA5OTk4IDIuMDk5OTggNi4yNzkwNiAyLjA5OTk4IDYuNDk5OThDMi4wOTk5OCA2LjcyMDg5IDIuMjc5MDYgNi44OTk5OCAyLjQ5OTk4IDYuODk5OThIMTIuNUMxMi43MjA5IDYuODk5OTggMTIuOSA2LjcyMDg5IDEyLjkgNi40OTk5OEMxMi45IDYuMjc5MDYgMTIuNzIwOSA2LjA5OTk4IDEyLjUgNi4wOTk5OEgyLjQ5OTk4Wk0yLjA5OTk4IDguNDk5OThDMi4wOTk5OCA4LjI3OTA2IDIuMjc5MDYgOC4wOTk5OCAyLjQ5OTk4IDguMDk5OThIMTIuNUMxMi43MjA5IDguMDk5OTggMTIuOSA4LjI3OTA2IDEyLjkgOC40OTk5OEMxMi45IDguNzIwODkgMTIuNzIwOSA4Ljg5OTk4IDEyLjUgOC44OTk5OEgyLjQ5OTk4QzIuMjc5MDYgOC44OTk5OCAyLjA5OTk4IDguNzIwODkgMi4wOTk5OCA4LjQ5OTk4Wk0yLjQ5OTk4IDEwLjFDMi4yNzkwNiAxMC4xIDIuMDk5OTggMTAuMjc5MSAyLjA5OTk4IDEwLjVDMi4wOTk5OCAxMC43MjA5IDIuMjc5MDYgMTAuOSAyLjQ5OTk4IDEwLjlIMTIuNUMxMi43MjA5IDEwLjkgMTIuOSAxMC43MjA5IDEyLjkgMTAuNUMxMi45IDEwLjI3OTEgMTIuNzIwOSAxMC4xIDEyLjUgMTAuMUgyLjQ5OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuMDk5OTggMTIuNUM0LjA5OTk4IDEyLjcyMDkgNC4yNzkwNiAxMi45IDQuNDk5OTggMTIuOUM0LjcyMDg5IDEyLjkgNC44OTk5OCAxMi43MjA5IDQuODk5OTggMTIuNUw0Ljg5OTk4IDIuNTAwMDJDNC44OTk5OCAyLjI3OTExIDQuNzIwODkgMi4xMDAwMyA0LjQ5OTk4IDIuMTAwMDNDNC4yNzkwNiAyLjEwMDAzIDQuMDk5OTggMi4yNzkxMSA0LjA5OTk4IDIuNTAwMDJMNC4wOTk5OCAxMi41Wk02LjA5OTk4IDEyLjVDNi4wOTk5OCAxMi43MjA5IDYuMjc5MDYgMTIuOSA2LjQ5OTk4IDEyLjlDNi43MjA4OSAxMi45IDYuODk5OTggMTIuNzIwOSA2Ljg5OTk4IDEyLjVMNi44OTk5OCAyLjUwMDAyQzYuODk5OTggMi4yNzkxMSA2LjcyMDg5IDIuMTAwMDMgNi40OTk5OCAyLjEwMDAzQzYuMjc5MDYgMi4xMDAwMyA2LjA5OTk4IDIuMjc5MTEgNi4wOTk5OCAyLjUwMDAyTDYuMDk5OTggMTIuNVpNOC40OTk5OCAxMi45QzguMjc5MDYgMTIuOSA4LjA5OTk4IDEyLjcyMDkgOC4wOTk5OCAxMi41TDguMDk5OTggMi41MDAwMkM4LjA5OTk4IDIuMjc5MTEgOC4yNzkwNiAyLjEwMDAyIDguNDk5OTggMi4xMDAwMkM4LjcyMDg5IDIuMTAwMDIgOC44OTk5OCAyLjI3OTExIDguODk5OTggMi41MDAwMkw4Ljg5OTk4IDEyLjVDOC44OTk5OCAxMi43MjA5IDguNzIwODkgMTIuOSA4LjQ5OTk4IDEyLjlaTTEwLjEgMTIuNUMxMC4xIDEyLjcyMDkgMTAuMjc5MSAxMi45IDEwLjUgMTIuOUMxMC43MjA5IDEyLjkgMTAuOSAxMi43MjA5IDEwLjkgMTIuNUwxMC45IDIuNTAwMDJDMTAuOSAyLjI3OTExIDEwLjcyMDkgMi4xMDAwMiAxMC41IDIuMTAwMDJDMTAuMjc5MSAyLjEwMDAyIDEwLjEgMi4yNzkxMSAxMC4xIDIuNTAwMDJMMTAuMSAxMi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwLjMyODUgMS4xMzYwN0MxMC4xMzMyIDAuOTQwODA5IDkuODE2NjIgMC45NDA4MDggOS42MjEzNiAxLjEzNjA3QzkuNDI2MDkgMS4zMzEzMyA5LjQyNjA5IDEuNjQ3OTIgOS42MjEzNiAxLjg0MzE4TDEwLjI3NDQgMi40OTYxOUw1LjQyNTYzIDYuMTMyNzRMNC4zMTgwNSA1LjAyNTE2QzQuMTIyNzkgNC44Mjk5IDMuODA2MjEgNC44Mjk5IDMuNjEwOTUgNS4wMjUxNkMzLjQxNTY5IDUuMjIwNDIgMy40MTU2OSA1LjUzNyAzLjYxMDk1IDUuNzMyMjZMNS4wMjUxNiA3LjE0NjQ4TDYuMDg1ODIgOC4yMDcxNEwyLjgxNTQ1IDExLjQ3NzVDMi42MjAxOSAxMS42NzI4IDIuNjIwMTkgMTEuOTg5NCAyLjgxNTQ1IDEyLjE4NDZDMy4wMTA3MiAxMi4zNzk5IDMuMzI3MyAxMi4zNzk5IDMuNTIyNTYgMTIuMTg0Nkw2Ljc5MjkzIDguOTE0MjVMNy44NTM1OSA5Ljk3NDkxTDkuMjY3OCAxMS4zODkxQzkuNDYzMDYgMTEuNTg0NCA5Ljc3OTY1IDExLjU4NDQgOS45NzQ5MSAxMS4zODkxQzEwLjE3MDIgMTEuMTkzOSAxMC4xNzAyIDEwLjg3NzMgOS45NzQ5MSAxMC42ODJMOC44NjczMyA5LjU3NDQzTDEyLjUwMzkgNC43MjU3TDEzLjE1NjkgNS4zNzg3MUMxMy4zNTIyIDUuNTczOTcgMTMuNjY4NyA1LjU3Mzk3IDEzLjg2NCA1LjM3ODcxQzE0LjA1OTMgNS4xODM0NSAxNC4wNTkzIDQuODY2ODcgMTMuODY0IDQuNjcxNkwxMi44MDMzIDMuNjEwOTRMMTEuMzg5MSAyLjE5NjczTDEwLjMyODUgMS4xMzYwN1pNNi4xMzk5MiA2Ljg0NzAyTDEwLjk4ODcgMy4yMTA0N0wxMS43ODk2IDQuMDExNDJMOC4xNTMwNSA4Ljg2MDE1TDYuMTM5OTIgNi44NDcwMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGZ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05LjYyMTI5IDEuMTM2MDdDOS44MTY1NiAwLjk0MDgwOCAxMC4xMzMxIDAuOTQwODA5IDEwLjMyODQgMS4xMzYwN0wxMS4zODkxIDIuMTk2NzNMMTIuODAzMyAzLjYxMDk0TDEzLjg2MzkgNC42NzE2QzE0LjA1OTIgNC44NjY4NyAxNC4wNTkyIDUuMTgzNDUgMTMuODYzOSA1LjM3ODcxQzEzLjY2ODcgNS41NzM5NyAxMy4zNTIxIDUuNTczOTcgMTMuMTU2OCA1LjM3ODcxTDEyLjUwMzggNC43MjU3TDguODY3MjcgOS41NzQ0M0w5Ljk3NDg1IDEwLjY4MkMxMC4xNzAxIDEwLjg3NzMgMTAuMTcwMSAxMS4xOTM5IDkuOTc0ODUgMTEuMzg5MUM5Ljc3OTU5IDExLjU4NDQgOS40NjMgMTEuNTg0NCA5LjI2Nzc0IDExLjM4OTFMNy44NTM1MyA5Ljk3NDkxTDYuNzkyODcgOC45MTQyNUwzLjUyMjUgMTIuMTg0NkMzLjMyNzI0IDEyLjM3OTkgMy4wMTA2NSAxMi4zNzk5IDIuODE1MzkgMTIuMTg0NkMyLjYyMDEzIDExLjk4OTQgMi42MjAxMyAxMS42NzI4IDIuODE1MzkgMTEuNDc3NUw2LjA4NTc2IDguMjA3MTRMNS4wMjUxIDcuMTQ2NDhMMy42MTA4OSA1LjczMjI2QzMuNDE1NjMgNS41MzcgMy40MTU2MiA1LjIyMDQyIDMuNjEwODkgNS4wMjUxNkMzLjgwNjE1IDQuODI5OSA0LjEyMjczIDQuODI5OSA0LjMxNzk5IDUuMDI1MTZMNS40MjU1NyA2LjEzMjc0TDEwLjI3NDMgMi40OTYxOUw5LjYyMTI5IDEuODQzMThDOS40MjYwMyAxLjY0NzkyIDkuNDI2MDMgMS4zMzEzMyA5LjYyMTI5IDEuMTM2MDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05LjYyMTI5IDEuMTM2MDdDOS44MTY1NiAwLjk0MDgwOCAxMC4xMzMxIDAuOTQwODA5IDEwLjMyODQgMS4xMzYwN0wxMS4zODkxIDIuMTk2NzNMMTIuODAzMyAzLjYxMDk0TDEzLjg2MzkgNC42NzE2QzE0LjA1OTIgNC44NjY4NyAxNC4wNTkyIDUuMTgzNDUgMTMuODYzOSA1LjM3ODcxQzEzLjY2ODcgNS41NzM5NyAxMy4zNTIxIDUuNTczOTcgMTMuMTU2OCA1LjM3ODcxTDEyLjUwMzggNC43MjU3TDguODY3MjcgOS41NzQ0M0w5Ljk3NDg1IDEwLjY4MkMxMC4xNzAxIDEwLjg3NzMgMTAuMTcwMSAxMS4xOTM5IDkuOTc0ODUgMTEuMzg5MUM5Ljc3OTU5IDExLjU4NDQgOS40NjMgMTEuNTg0NCA5LjI2Nzc0IDExLjM4OTFMNy44NTM1MyA5Ljk3NDkxTDYuNzkyODcgOC45MTQyNUwzLjUyMjUgMTIuMTg0NkMzLjMyNzI0IDEyLjM3OTkgMy4wMTA2NSAxMi4zNzk5IDIuODE1MzkgMTIuMTg0NkMyLjYyMDEzIDExLjk4OTQgMi42MjAxMyAxMS42NzI4IDIuODE1MzkgMTEuNDc3NUw2LjA4NTc2IDguMjA3MTRMNS4wMjUxIDcuMTQ2NDhMMy42MTA4OSA1LjczMjI2QzMuNDE1NjMgNS41MzcgMy40MTU2MiA1LjIyMDQyIDMuNjEwODkgNS4wMjUxNkMzLjgwNjE1IDQuODI5OSA0LjEyMjczIDQuODI5OSA0LjMxNzk5IDUuMDI1MTZMNS40MjU1NyA2LjEzMjc0TDEwLjI3NDMgMi40OTYxOUw5LjYyMTI5IDEuODQzMThDOS40MjYwMyAxLjY0NzkyIDkuNDI2MDMgMS4zMzEzMyA5LjYyMTI5IDEuMTM2MDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxwdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5OSAzLjA5OTk4QzcuMjc5MDcgMy4wOTk5OCA3LjA5OTk5IDMuMjc5MDYgNy4wOTk5OSAzLjQ5OTk4QzcuMDk5OTkgMy43MjA4OSA3LjI3OTA3IDMuODk5OTggNy40OTk5OSAzLjg5OTk4SDE0LjVDMTQuNzIwOSAzLjg5OTk4IDE0LjkgMy43MjA4OSAxNC45IDMuNDk5OThDMTQuOSAzLjI3OTA2IDE0LjcyMDkgMy4wOTk5OCAxNC41IDMuMDk5OThINy40OTk5OVpNNy40OTk5OCA1LjFDNy4yNzkwNyA1LjEgNy4wOTk5OCA1LjI3OTA4IDcuMDk5OTggNS41QzcuMDk5OTggNS43MjA5MSA3LjI3OTA3IDUuOSA3LjQ5OTk4IDUuOUgxNC41QzE0LjcyMDkgNS45IDE0LjkgNS43MjA5MSAxNC45IDUuNUMxNC45IDUuMjc5MDggMTQuNzIwOSA1LjEgMTQuNSA1LjFINy40OTk5OFpNNy4xIDcuNUM3LjEgNy4yNzkwOCA3LjI3OTA5IDcuMSA3LjUgNy4xSDE0LjVDMTQuNzIwOSA3LjEgMTQuOSA3LjI3OTA4IDE0LjkgNy41QzE0LjkgNy43MjA5MSAxNC43MjA5IDcuOSAxNC41IDcuOUg3LjVDNy4yNzkwOSA3LjkgNy4xIDcuNzIwOTEgNy4xIDcuNVpNNy40OTk5OCA5LjFDNy4yNzkwNyA5LjEgNy4wOTk5OCA5LjI3OTA4IDcuMDk5OTggOS41QzcuMDk5OTggOS43MjA5MSA3LjI3OTA3IDkuOSA3LjQ5OTk4IDkuOUgxNC41QzE0LjcyMDkgOS45IDE0LjkgOS43MjA5MSAxNC45IDkuNUMxNC45IDkuMjc5MDggMTQuNzIwOSA5LjEgMTQuNSA5LjFINy40OTk5OFpNNy4wOTk5OCAxMS41QzcuMDk5OTggMTEuMjc5MSA3LjI3OTA3IDExLjEgNy40OTk5OCAxMS4xSDE0LjVDMTQuNzIwOSAxMS4xIDE0LjkgMTEuMjc5MSAxNC45IDExLjVDMTQuOSAxMS43MjA5IDE0LjcyMDkgMTEuOSAxNC41IDExLjlINy40OTk5OEM3LjI3OTA3IDExLjkgNy4wOTk5OCAxMS43MjA5IDcuMDk5OTggMTEuNVpNMi41IDkuMjUwMDNMNSA2LjAwMDAzSDBMMi41IDkuMjUwMDNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxDdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC41IDFDNC4yMjM4NiAxIDQgMS4yMjM4NiA0IDEuNUM0IDEuNzc2MTQgNC4yMjM4NiAyIDQuNSAySDEyVjEzSDQuNUM0LjIyMzg2IDEzIDQgMTMuMjIzOSA0IDEzLjVDNCAxMy43NzYxIDQuMjIzODYgMTQgNC41IDE0SDEyQzEyLjU1MjMgMTQgMTMgMTMuNTUyMyAxMyAxM1YyQzEzIDEuNDQ3NzIgMTIuNTUyMyAxIDEyIDFINC41Wk02LjYwMzU1IDQuODk2NDVDNi40MDgyOSA0LjcwMTE4IDYuMDkxNzEgNC43MDExOCA1Ljg5NjQ1IDQuODk2NDVDNS43MDExOCA1LjA5MTcxIDUuNzAxMTggNS40MDgyOSA1Ljg5NjQ1IDUuNjAzNTVMNy4yOTI4OSA3SDAuNUMwLjIyMzg1OCA3IDAgNy4yMjM4NiAwIDcuNUMwIDcuNzc2MTQgMC4yMjM4NTggOCAwLjUgOEg3LjI5Mjg5TDUuODk2NDUgOS4zOTY0NUM1LjcwMTE4IDkuNTkxNzEgNS43MDExOCA5LjkwODI5IDUuODk2NDUgMTAuMTAzNkM2LjA5MTcxIDEwLjI5ODggNi40MDgyOSAxMC4yOTg4IDYuNjAzNTUgMTAuMTAzNkw4Ljg1MzU1IDcuODUzNTVDOS4wNDg4MiA3LjY1ODI5IDkuMDQ4ODIgNy4zNDE3MSA4Ljg1MzU1IDcuMTQ2NDVMNi42MDM1NSA0Ljg5NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgMi41QzIgMi4yMjM4NiAyLjIyMzg2IDIgMi41IDJINS41QzUuNzc2MTQgMiA2IDIuMjIzODYgNiAyLjVDNiAyLjc3NjE0IDUuNzc2MTQgMyA1LjUgM0gzVjUuNUMzIDUuNzc2MTQgMi43NzYxNCA2IDIuNSA2QzIuMjIzODYgNiAyIDUuNzc2MTQgMiA1LjVWMi41Wk05IDIuNUM5IDIuMjIzODYgOS4yMjM4NiAyIDkuNSAySDEyLjVDMTIuNzc2MSAyIDEzIDIuMjIzODYgMTMgMi41VjUuNUMxMyA1Ljc3NjE0IDEyLjc3NjEgNiAxMi41IDZDMTIuMjIzOSA2IDEyIDUuNzc2MTQgMTIgNS41VjNIOS41QzkuMjIzODYgMyA5IDIuNzc2MTQgOSAyLjVaTTIuNSA5QzIuNzc2MTQgOSAzIDkuMjIzODYgMyA5LjVWMTJINS41QzUuNzc2MTQgMTIgNiAxMi4yMjM5IDYgMTIuNUM2IDEyLjc3NjEgNS43NzYxNCAxMyA1LjUgMTNIMi41QzIuMjIzODYgMTMgMiAxMi43NzYxIDIgMTIuNVY5LjVDMiA5LjIyMzg2IDIuMjIzODYgOSAyLjUgOVpNMTIuNSA5QzEyLjc3NjEgOSAxMyA5LjIyMzg2IDEzIDkuNVYxMi41QzEzIDEyLjc3NjEgMTIuNzc2MSAxMyAxMi41IDEzSDkuNUM5LjIyMzg2IDEzIDkgMTIuNzc2MSA5IDEyLjVDOSAxMi4yMjM5IDkuMjIzODYgMTIgOS41IDEySDEyVjkuNUMxMiA5LjIyMzg2IDEyLjIyMzkgOSAxMi41IDlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx2dD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMSAyQzAuNDQ3NzE1IDIgMCAyLjQ0NzcyIDAgM1YxMkMwIDEyLjU1MjMgMC40NDc3MTUgMTMgMSAxM0gxNEMxNC41NTIzIDEzIDE1IDEyLjU1MjMgMTUgMTJWM0MxNSAyLjQ0NzcyIDE0LjU1MjMgMiAxNCAySDFaTTEgM0wxNCAzVjMuOTI0OTRDMTMuOTE3NCAzLjkyNDg2IDEzLjgzMzggMy45NDc1MSAxMy43NTg5IDMuOTk1MDVMNy41IDcuOTY3MDNMMS4yNDExMiAzLjk5NTA1QzEuMTY2MjEgMy45NDc1MSAxLjA4MjYgMy45MjQ4NiAxIDMuOTI0OTRWM1pNMSA0LjkwNzk3VjEySDE0VjQuOTA3OTdMNy43NDExMiA4Ljg3OTk1QzcuNTkzOTQgOC45NzMzNSA3LjQwNjA2IDguOTczMzUgNy4yNTg4OCA4Ljg3OTk1TDEgNC45MDc5N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGd0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03Ljk0NzIxIDAuMTY0NTk0QzcuNjY1NjkgMC4wMjM4Mjk5IDcuMzM0MzEgMC4wMjM4MzAyIDcuMDUyNzkgMC4xNjQ1OTRMMC41NTI3ODYgMy40MTQ1OUMwLjIxNDAwMiAzLjU4Mzk5IDAgMy45MzAyNSAwIDQuMzA5MDJWMTJDMCAxMi41NTIzIDAuNDQ3NzE1IDEzIDEgMTNIMTRDMTQuNTUyMyAxMyAxNSAxMi41NTIzIDE1IDEyVjQuMzA5MDJDMTUgMy45MzAyNSAxNC43ODYgMy41ODM5OSAxNC40NDcyIDMuNDE0NTlMNy45NDcyMSAwLjE2NDU5NFpNMTMuNTY4OSA0LjA5MzQ5TDcuNSAxLjA1OTAyTDEuNDMxMDUgNC4wOTM0OUw3LjUgNy4yOTEzNkwxMy41Njg5IDQuMDkzNDlaTTEgNC44ODM2NlYxMkgxNFY0Ljg4MzY2TDcuNzA5NzcgOC4xOTgxM0M3LjU3ODQ4IDguMjY3MzEgNy40MjE1MiA4LjI2NzMxIDcuMjkwMjMgOC4xOTgxM0wxIDQuODgzNjZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxtdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC40NDQ5IDAuNjA4NzY1QzguMDE4MyAtMC4xMDcwMTUgNi45ODE3IC0wLjEwNzAxNSA2LjU1NTA5IDAuNjA4NzY2TDAuMTYxMTc4IDExLjMzNjhDLTAuMjc1ODI0IDEyLjA3IDAuMjUyNTAzIDEzIDEuMTA2MDggMTNIMTMuODkzOUMxNC43NDc1IDEzIDE1LjI3NTggMTIuMDcgMTQuODM4OCAxMS4zMzY4TDguNDQ0OSAwLjYwODc2NVpNNy40MTQxIDEuMTIwNzNDNy40NTI4OCAxLjA1NTY2IDcuNTQ3MTIgMS4wNTU2NiA3LjU4NTkgMS4xMjA3M0wxMy45Nzk4IDExLjg0ODhDMTQuMDE5NiAxMS45MTU0IDEzLjk3MTUgMTIgMTMuODkzOSAxMkgxLjEwNjA4QzEuMDI4NDkgMTIgMC45ODA0NTQgMTEuOTE1NCAxLjAyMDE4IDExLjg0ODhMNy40MTQxIDEuMTIwNzNaTTYuODI2OSA0LjQ4NjExQzYuODEyMjEgNC4xMDQyMyA3LjExNzgzIDMuNzg2NjMgNy41IDMuNzg2NjNDNy44ODIxNyAzLjc4NjYzIDguMTg3NzggNC4xMDQyMyA4LjE3MzEgNC40ODYxMkw4LjAxOTIxIDguNDg3MDFDOC4wMDg0OCA4Ljc2NiA3Ljc3OTIgOC45ODY2NCA3LjUgOC45ODY2NEM3LjIyMDggOC45ODY2NCA2Ljk5MTUxIDguNzY2IDYuOTgwNzggOC40ODcwMUw2LjgyNjkgNC40ODYxMVpNOC4yNDk4OSAxMC40NzZDOC4yNDk4OSAxMC44OTAyIDcuOTE0MSAxMS4yMjYgNy40OTk4OSAxMS4yMjZDNy4wODU2NyAxMS4yMjYgNi43NDk4OSAxMC44OTAyIDYuNzQ5ODkgMTAuNDc2QzYuNzQ5ODkgMTAuMDYxOCA3LjA4NTY3IDkuNzI1OTkgNy40OTk4OSA5LjcyNTk5QzcuOTE0MSA5LjcyNTk5IDguMjQ5ODkgMTAuMDYxOCA4LjI0OTg5IDEwLjQ3NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHd0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zIDFDMi40NDc3MSAxIDIgMS40NDc3MiAyIDJWMTNDMiAxMy41NTIzIDIuNDQ3NzIgMTQgMyAxNEgxMC41QzEwLjc3NjEgMTQgMTEgMTMuNzc2MSAxMSAxMy41QzExIDEzLjIyMzkgMTAuNzc2MSAxMyAxMC41IDEzSDNWMkwxMC41IDJDMTAuNzc2MSAyIDExIDEuNzc2MTQgMTEgMS41QzExIDEuMjIzODYgMTAuNzc2MSAxIDEwLjUgMUgzWk0xMi42MDM2IDQuODk2NDVDMTIuNDA4MyA0LjcwMTE4IDEyLjA5MTcgNC43MDExOCAxMS44OTY0IDQuODk2NDVDMTEuNzAxMiA1LjA5MTcxIDExLjcwMTIgNS40MDgyOSAxMS44OTY0IDUuNjAzNTVMMTMuMjkyOSA3SDYuNUM2LjIyMzg2IDcgNiA3LjIyMzg2IDYgNy41QzYgNy43NzYxNCA2LjIyMzg2IDggNi41IDhIMTMuMjkyOUwxMS44OTY0IDkuMzk2NDVDMTEuNzAxMiA5LjU5MTcxIDExLjcwMTIgOS45MDgyOSAxMS44OTY0IDEwLjEwMzZDMTIuMDkxNyAxMC4yOTg4IDEyLjQwODMgMTAuMjk4OCAxMi42MDM2IDEwLjEwMzZMMTQuODUzNiA3Ljg1MzU1QzE1LjA0ODggNy42NTgyOSAxNS4wNDg4IDcuMzQxNzEgMTQuODUzNiA3LjE0NjQ1TDEyLjYwMzYgNC44OTY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHl0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjUgMkM1Ljc3NjE0IDIgNiAyLjIyMzg2IDYgMi41VjUuNUM2IDUuNzc2MTQgNS43NzYxNCA2IDUuNSA2SDIuNUMyLjIyMzg2IDYgMiA1Ljc3NjE0IDIgNS41QzIgNS4yMjM4NiAyLjIyMzg2IDUgMi41IDVINVYyLjVDNSAyLjIyMzg2IDUuMjIzODYgMiA1LjUgMlpNOS41IDJDOS43NzYxNCAyIDEwIDIuMjIzODYgMTAgMi41VjVIMTIuNUMxMi43NzYxIDUgMTMgNS4yMjM4NiAxMyA1LjVDMTMgNS43NzYxNCAxMi43NzYxIDYgMTIuNSA2SDkuNUM5LjIyMzg2IDYgOSA1Ljc3NjE0IDkgNS41VjIuNUM5IDIuMjIzODYgOS4yMjM4NiAyIDkuNSAyWk0yIDkuNUMyIDkuMjIzODYgMi4yMjM4NiA5IDIuNSA5SDUuNUM1Ljc3NjE0IDkgNiA5LjIyMzg2IDYgOS41VjEyLjVDNiAxMi43NzYxIDUuNzc2MTQgMTMgNS41IDEzQzUuMjIzODYgMTMgNSAxMi43NzYxIDUgMTIuNVYxMEgyLjVDMi4yMjM4NiAxMCAyIDkuNzc2MTQgMiA5LjVaTTkgOS41QzkgOS4yMjM4NiA5LjIyMzg2IDkgOS41IDlIMTIuNUMxMi43NzYxIDkgMTMgOS4yMjM4NiAxMyA5LjVDMTMgOS43NzYxNCAxMi43NzYxIDEwIDEyLjUgMTBIMTBWMTIuNUMxMCAxMi43NzYxIDkuNzc2MTQgMTMgOS41IDEzQzkuMjIzODYgMTMgOSAxMi43NzYxIDkgMTIuNVY5LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxidD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyAyQzIuNDQ3NzIgMiAyIDIuNDQ3NzIgMiAzVjEyQzIgMTIuNTUyMyAyLjQ0NzcyIDEzIDMgMTNIMTJDMTIuNTUyMyAxMyAxMyAxMi41NTIzIDEzIDEyVjguNUMxMyA4LjIyMzg2IDEyLjc3NjEgOCAxMi41IDhDMTIuMjIzOSA4IDEyIDguMjIzODYgMTIgOC41VjEySDNWM0w2LjUgM0M2Ljc3NjE0IDMgNyAyLjc3NjE0IDcgMi41QzcgMi4yMjM4NiA2Ljc3NjE0IDIgNi41IDJIM1pNMTIuODUzNiAyLjE0NjQ1QzEyLjkwMTUgMi4xOTQzOSAxMi45Mzc3IDIuMjQ5NjQgMTIuOTYyMSAyLjMwODYxQzEyLjk4NjEgMi4zNjY2OSAxMi45OTk2IDIuNDMwMyAxMyAyLjQ5N0wxMyAyLjVWMi41MDA0OVY1LjVDMTMgNS43NzYxNCAxMi43NzYxIDYgMTIuNSA2QzEyLjIyMzkgNiAxMiA1Ljc3NjE0IDEyIDUuNVYzLjcwNzExTDYuODUzNTUgOC44NTM1NUM2LjY1ODI5IDkuMDQ4ODIgNi4zNDE3MSA5LjA0ODgyIDYuMTQ2NDUgOC44NTM1NUM1Ljk1MTE4IDguNjU4MjkgNS45NTExOCA4LjM0MTcxIDYuMTQ2NDUgOC4xNDY0NUwxMS4yOTI5IDNIOS41QzkuMjIzODYgMyA5IDIuNzc2MTQgOSAyLjVDOSAyLjIyMzg2IDkuMjIzODYgMiA5LjUgMkgxMi40OTk5SDEyLjVDMTIuNTY3OCAyIDEyLjYzMjQgMi4wMTM0OSAxMi42OTE0IDIuMDM3OTRDMTIuNzUwNCAyLjA2MjM0IDEyLjgwNTYgMi4wOTg1MSAxMi44NTM2IDIuMTQ2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx4dD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTQuNzY0OSA2LjA3NTk1QzE0Ljk5OTEgNi4yMjIzMSAxNS4wNzAzIDYuNTMwNzggMTQuOTIzOSA2Ljc2NDk1QzE0LjQ4NDkgNy40Njc0MiAxMy45NjMyIDguMTA2NDQgMTMuMzcwMiA4LjY2MzA0TDE0LjU3MTIgOS44NjQwNUMxNC43NjY0IDEwLjA1OTMgMTQuNzY2NCAxMC4zNzU5IDE0LjU3MTIgMTAuNTcxMkMxNC4zNzU5IDEwLjc2NjQgMTQuMDU5MyAxMC43NjY0IDEzLjg2NDEgMTAuNTcxMkwxMi42MDExIDkuMzA4MTZDMTEuODA0OSA5LjkwMjgyIDEwLjkwODkgMTAuMzYyMSA5LjkzMzc0IDEwLjY1MUwxMC4zODMgMTIuMzI3NkMxMC40NTQ0IDEyLjU5NDQgMTAuMjk2MSAxMi44Njg1IDEwLjAyOTQgMTIuOTRDOS43NjI2NiAxMy4wMTE1IDkuNDg4NSAxMi44NTMyIDkuNDE3MDMgMTIuNTg2NEw4Ljk1OTE2IDEwLjg3NzVDOC40ODc0MiAxMC45NTggOC4wMDAzNSAxMC45OTk5IDcuNSAxMC45OTk5QzYuOTk5NjQgMTAuOTk5OSA2LjUxMjU3IDEwLjk1OCA2LjA0MDgyIDEwLjg3NzVMNS41ODI5OSAxMi41ODY0QzUuNTExNTMgMTIuODUzMiA1LjIzNzM3IDEzLjAxMTUgNC45NzA2MyAxMi45NEM0LjcwMzkgMTIuODY4NSA0LjU0NTYgMTIuNTk0NCA0LjYxNzA2IDEyLjMyNzdMNS4wNjYyNCAxMC42NTFDNC4wOTExMSAxMC4zNjIxIDMuMTk1MDMgOS45MDI4MSAyLjM5ODkgOS4zMDgxNEwxLjEzNTkgMTAuNTcxMUMwLjk0MDYzOCAxMC43NjY0IDAuNjI0MDU4IDEwLjc2NjQgMC40Mjg3OTcgMTAuNTcxMUMwLjIzMzUzNyAxMC4zNzU5IDAuMjMzNTM3IDEwLjA1OTMgMC40Mjg3OTcgOS44NjQwNEwxLjYyOTgyIDguNjYzMDJDMS4wMzY4MiA4LjEwNjQzIDAuNTE1MTEzIDcuNDY3NDIgMC4wNzYwNjc3IDYuNzY0OTVDLTAuMDcwMjg2NyA2LjUzMDc4IDAuMDAwODk4NTQ0IDYuMjIyMzEgMC4yMzUwNjQgNi4wNzU5NUMwLjQ2OTIzIDUuOTI5NiAwLjc3NzcwMyA2LjAwMDc4IDAuOTI0MDU3IDYuMjM0OTVDMS40MDM1NCA3LjAwMjEyIDEuOTg5IDcuNjgwNTYgMi42NjIzMyA4LjI0MjdDMi42NzMxNSA4LjI1MDk2IDIuNjgzNyA4LjI1OTcxIDIuNjkzOTcgOC4yNjg5N0M0LjAwODk3IDkuMzU1MjcgNS42NTUzNiA5Ljk5OTkgNy41IDkuOTk5OUMxMC4zMDc4IDkuOTk5OSAxMi42NTYzIDguNTA2MjkgMTQuMDc1OSA2LjIzNDk1QzE0LjIyMjMgNi4wMDA3OCAxNC41MzA4IDUuOTI5NiAxNC43NjQ5IDYuMDc1OTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxPdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMzUzNiAyLjM1MzU1QzEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDEuODQxNzEgMTMuMzUzNiAxLjY0NjQ1QzEzLjE1ODMgMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTIuNjQ2NCAxLjY0NjQ1TDEwLjY4MjggMy42MTAxMkM5LjcwNjUyIDMuMjE2NzEgOC42Mzc1OSAzIDcuNSAzQzQuMzA3ODYgMyAxLjY1NjM5IDQuNzA2MzggMC4wNzYwMDAyIDcuMjM1MDFDLTAuMDI1MzMzOCA3LjM5NzE1IC0wLjAyNTMzMzQgNy42MDI4OCAwLjA3NjAwMTQgNy43NjUwMUMwLjkwMjk0NSA5LjA4ODEyIDIuMDIzMTQgMTAuMTg2MSAzLjM2MDYxIDEwLjkzMjNMMS42NDY0NSAxMi42NDY0QzEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEzLjE1ODMgMS42NDY0NSAxMy4zNTM2QzEuODQxNzEgMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMi4zNTM1NSAxMy4zNTM2TDQuMzE3MjMgMTEuMzg5OUM1LjI5MzQ4IDExLjc4MzMgNi4zNjI0MSAxMiA3LjUgMTJDMTAuNjkyMSAxMiAxMy4zNDM2IDEwLjI5MzYgMTQuOTI0IDcuNzY1MDFDMTUuMDI1MyA3LjYwMjg4IDE1LjAyNTMgNy4zOTcxNSAxNC45MjQgNy4yMzUwMUMxNC4wOTcxIDUuOTExOSAxMi45NzY5IDQuODEzOTEgMTEuNjM5NCA0LjA2NzcxTDEzLjM1MzYgMi4zNTM1NVpNOS45MDQyOCA0LjM4ODYxQzkuMTUzMzIgNC4xMzYxIDguMzQ3NTkgNCA3LjUgNEM0LjgwMjg1IDQgMi41Mjk1MiA1LjM3ODE2IDEuMDk2MjIgNy41MDAwMUMxLjg3Mjg0IDguNjQ5NyAyLjg5NjA5IDkuNTgxMDYgNC4wOTk3NCAxMC4xOTMxTDkuOTA0MjggNC4zODg2MVpNNS4wOTU3MiAxMC42MTE0TDEwLjkwMDMgNC44MDY4NUMxMi4xMDM5IDUuNDE4OTQgMTMuMTI3MiA2LjM1MDMxIDEzLjkwMzggNy41MDAwMUMxMi40NzA1IDkuNjIxODMgMTAuMTk3MSAxMSA3LjUgMTFDNi42NTI0MSAxMSA1Ljg0NjY4IDEwLjg2MzkgNS4wOTU3MiAxMC42MTE0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAxMUM0LjgwMjg1IDExIDIuNTI5NTIgOS42MjE4NCAxLjA5NjIyIDcuNTAwMDFDMi41Mjk1MiA1LjM3ODE2IDQuODAyODUgNCA3LjUgNEMxMC4xOTcxIDQgMTIuNDcwNSA1LjM3ODE2IDEzLjkwMzggNy41MDAwMUMxMi40NzA1IDkuNjIxODMgMTAuMTk3MSAxMSA3LjUgMTFaTTcuNSAzQzQuMzA3ODYgMyAxLjY1NjM5IDQuNzA2MzggMC4wNzYwMDAyIDcuMjM1MDFDLTAuMDI1MzMzOCA3LjM5NzE1IC0wLjAyNTMzMzQgNy42MDI4OCAwLjA3NjAwMTQgNy43NjUwMUMxLjY1NjM5IDEwLjI5MzYgNC4zMDc4NiAxMiA3LjUgMTJDMTAuNjkyMSAxMiAxMy4zNDM2IDEwLjI5MzYgMTQuOTI0IDcuNzY1MDFDMTUuMDI1MyA3LjYwMjg4IDE1LjAyNTMgNy4zOTcxNSAxNC45MjQgNy4yMzUwMUMxMy4zNDM2IDQuNzA2MzggMTAuNjkyMSAzIDcuNSAzWk03LjUgOS41QzguNjA0NTcgOS41IDkuNSA4LjYwNDU3IDkuNSA3LjVDOS41IDYuMzk1NDMgOC42MDQ1NyA1LjUgNy41IDUuNUM2LjM5NTQzIDUuNSA1LjUgNi4zOTU0MyA1LjUgNy41QzUuNSA4LjYwNDU3IDYuMzk1NDMgOS41IDcuNSA5LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxfdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3Njg5MkMzLjg0MjIyIDAuODc2ODkyIDAuODc3MDc1IDMuODQyMDQgMC44NzcwNzUgNy40OTk3MkMwLjg3NzA3NSAxMS4xNTc0IDMuODQyMjIgMTQuMTIyNiA3LjQ5OTkxIDE0LjEyMjZDMTEuMTU3NiAxNC4xMjI2IDE0LjEyMjcgMTEuMTU3NCAxNC4xMjI3IDcuNDk5NzJDMTQuMTIyNyAzLjg0MjA0IDExLjE1NzYgMC44NzY4OTIgNy40OTk5MSAwLjg3Njg5MlpNMS44MjcwOCA3LjQ5OTcyQzEuODI3MDggNC4zNjY3MSA0LjM2Njg5IDEuODI2ODkgNy40OTk5MSAxLjgyNjg5QzEwLjYzMjkgMS44MjY4OSAxMy4xNzI3IDQuMzY2NzEgMTMuMTcyNyA3LjQ5OTcyQzEzLjE3MjcgMTAuNjMyNyAxMC42MzI5IDEzLjE3MjYgNy40OTk5MSAxMy4xNzI2QzQuMzY2ODkgMTMuMTcyNiAxLjgyNzA4IDEwLjYzMjcgMS44MjcwOCA3LjQ5OTcyWk01LjAzNzQ3IDkuMjEzOTVDNC44Nzk0OSA4Ljk4NzQ2IDQuNTY3ODIgOC45MzE5MyA0LjM0MTMzIDkuMDg5OTFDNC4xMTQ4NCA5LjI0Nzg5IDQuMDU5MzEgOS41NTk1NiA0LjIxNzI5IDkuNzg2MDVDNC45MzkyNiAxMC44MjExIDYuMTQwMzMgMTEuNSA3LjUwMDA0IDExLjVDOC44NTk3NCAxMS41IDEwLjA2MDggMTAuODIxMSAxMC43ODI4IDkuNzg2MDVDMTAuOTQwOCA5LjU1OTU2IDEwLjg4NTIgOS4yNDc4OSAxMC42NTg3IDkuMDg5OTFDMTAuNDMyMyA4LjkzMTkzIDEwLjEyMDYgOC45ODc0NiA5Ljk2MjYgOS4yMTM5NUM5LjQxOTYzIDkuOTkyMzggOC41MTkwNyAxMC41IDcuNTAwMDQgMTAuNUM2LjQ4MSAxMC41IDUuNTgwNDQgOS45OTIzOCA1LjAzNzQ3IDkuMjEzOTVaTTUuMzc1MDMgNi44NDk5OEM1Ljg1ODI4IDYuODQ5OTggNi4yNTAwMyA2LjQ1ODE1IDYuMjUwMDMgNS45NzQ5OEM2LjI1MDAzIDUuNDkxOCA1Ljg1ODI4IDUuMDk5OTggNS4zNzUwMyA1LjA5OTk4QzQuODkxNzkgNS4wOTk5OCA0LjUwMDAzIDUuNDkxOCA0LjUwMDAzIDUuOTc0OThDNC41MDAwMyA2LjQ1ODE1IDQuODkxNzkgNi44NDk5OCA1LjM3NTAzIDYuODQ5OThaTTEwLjUgNS45NzQ5OEMxMC41IDYuNDU4MTUgMTAuMTA4MyA2Ljg0OTk4IDkuNjI1MDMgNi44NDk5OEM5LjE0MTc5IDYuODQ5OTggOC43NTAwMyA2LjQ1ODE1IDguNzUwMDMgNS45NzQ5OEM4Ljc1MDAzIDUuNDkxOCA5LjE0MTc5IDUuMDk5OTggOS42MjUwMyA1LjA5OTk4QzEwLjEwODMgNS4wOTk5OCAxMC41IDUuNDkxOCAxMC41IDUuOTc0OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxNdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4wMDAwNSAyLjA0OTk5SDUuNTI1MDVDNC43MTA0MyAyLjA0OTk5IDQuMDUwMDUgMi43MTAzNyA0LjA1MDA1IDMuNTI0OTlDNC4wNTAwNSA0LjMzOTYxIDQuNzEwNDMgNC45OTk5OSA1LjUyNTA1IDQuOTk5OTlINy4wMDAwNVYyLjA0OTk5Wk03LjAwMDA1IDEuMDQ5OTlIOC4wMDAwNUg5LjQ3NTA1QzEwLjg0MiAxLjA0OTk5IDExLjk1IDIuMTU4MDggMTEuOTUgMy41MjQ5OUMxMS45NSA0LjMzMTYzIDExLjU2NDIgNS4wNDgxNSAxMC45NjY5IDUuNDk5OTlDMTEuNTY0MiA1Ljk1MTg0IDExLjk1IDYuNjY4MzYgMTEuOTUgNy40NzVDMTEuOTUgOC44NDE5IDEwLjg0MiA5Ljk1IDkuNDc1MDUgOS45NUM4LjkyMjM2IDkuOTUgOC40MTE5OCA5Ljc2ODg0IDguMDAwMDUgOS40NjI2NlY5Ljk1TDguMDAwMDUgMTEuNDI1QzguMDAwMDUgMTIuNzkxOSA2Ljg5MTk1IDEzLjkgNS41MjUwNSAxMy45QzQuMTU4MTQgMTMuOSAzLjA1MDA1IDEyLjc5MTkgMy4wNTAwNSAxMS40MjVDMy4wNTAwNSAxMC42MTgzIDMuNDM1OTMgOS45MDE4NCA0LjAzMzE3IDkuNDQ5OTlDMy40MzU5MyA4Ljk5ODE0IDMuMDUwMDUgOC4yODE2MyAzLjA1MDA1IDcuNDc1QzMuMDUwMDUgNi42NjgzNiAzLjQzNTk0IDUuOTUxODQgNC4wMzMxOSA1LjVDMy40MzU5NCA1LjA0ODE1IDMuMDUwMDUgNC4zMzE2MyAzLjA1MDA1IDMuNTI0OTlDMy4wNTAwNSAyLjE1ODA4IDQuMTU4MTQgMS4wNDk5OSA1LjUyNTA1IDEuMDQ5OTlINy4wMDAwNVpNOC4wMDAwNSAyLjA0OTk5VjQuOTk5OTlIOS40NzUwNUMxMC4yODk3IDQuOTk5OTkgMTAuOTUgNC4zMzk2MSAxMC45NSAzLjUyNDk5QzEwLjk1IDIuNzEwMzcgMTAuMjg5NyAyLjA0OTk5IDkuNDc1MDUgMi4wNDk5OUg4LjAwMDA1Wk01LjUyNTA1IDguOTQ5OThINy4wMDAwNUw3LjAwMDA1IDcuNDc4OEw3LjAwMDA1IDcuNDc1TDcuMDAwMDUgNy40NzEyVjZINS41MjUwNUM0LjcxMDQzIDYgNC4wNTAwNSA2LjY2MDM4IDQuMDUwMDUgNy40NzVDNC4wNTAwNSA4LjI4NzY3IDQuNzA3MjcgOC45NDY4NCA1LjUxOTIgOC45NDk5OUw1LjUyNTA1IDguOTQ5OThaTTQuMDUwMDUgMTEuNDI1QzQuMDUwMDUgMTAuNjEyMyA0LjcwNzI3IDkuOTUzMTUgNS41MTkyIDkuOTQ5OTlMNS41MjUwNSA5Ljk1SDcuMDAwMDVMNy4wMDAwNSAxMS40MjVDNy4wMDAwNSAxMi4yMzk2IDYuMzM5NjcgMTIuOSA1LjUyNTA1IDEyLjlDNC43MTA0MyAxMi45IDQuMDUwMDUgMTIuMjM5NiA0LjA1MDA1IDExLjQyNVpNOC4wMDAwNSA3LjQ3MjA2QzguMDAxNjQgNi42NTg3OSA4LjY2MTQxIDYgOS40NzUwNSA2QzEwLjI4OTcgNiAxMC45NSA2LjY2MDM4IDEwLjk1IDcuNDc1QzEwLjk1IDguMjg5NjIgMTAuMjg5NyA4Ljk1IDkuNDc1MDUgOC45NUM4LjY2MTQxIDguOTUgOC4wMDE2NCA4LjI5MTIxIDguMDAwMDUgNy40Nzc5NFY3LjQ3MjA2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sanQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNSAyQzMuMjIzODYgMiAzIDIuMjIzODYgMyAyLjVWMTIuNUMzIDEyLjc3NjEgMy4yMjM4NiAxMyAzLjUgMTNIMTEuNUMxMS43NzYxIDEzIDEyIDEyLjc3NjEgMTIgMTIuNVY2SDguNUM4LjIyMzg2IDYgOCA1Ljc3NjE0IDggNS41VjJIMy41Wk05IDIuNzA3MTFMMTEuMjkyOSA1SDlWMi43MDcxMVpNMiAyLjVDMiAxLjY3MTU3IDIuNjcxNTcgMSAzLjUgMUg4LjVDOC42MzI2MSAxIDguNzU5NzkgMS4wNTI2OCA4Ljg1MzU1IDEuMTQ2NDVMMTIuODUzNiA1LjE0NjQ1QzEyLjk0NzMgNS4yNDAyMSAxMyA1LjM2NzM5IDEzIDUuNVYxMi41QzEzIDEzLjMyODQgMTIuMzI4NCAxNCAxMS41IDE0SDMuNUMyLjY3MTU3IDE0IDIgMTMuMzI4NCAyIDEyLjVWMi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgMi41QzMgMi4yMjM4NiAzLjIyMzg2IDIgMy41IDJIOS4yOTI4OUwxMiA0LjcwNzExVjEyLjVDMTIgMTIuNzc2MSAxMS43NzYxIDEzIDExLjUgMTNIMy41QzMuMjIzODYgMTMgMyAxMi43NzYxIDMgMTIuNVYyLjVaTTMuNSAxQzIuNjcxNTcgMSAyIDEuNjcxNTcgMiAyLjVWMTIuNUMyIDEzLjMyODQgMi42NzE1NyAxNCAzLjUgMTRIMTEuNUMxMi4zMjg0IDE0IDEzIDEzLjMyODQgMTMgMTIuNVY0LjYwMzU1QzEzIDQuNDA0NjQgMTIuOTIxIDQuMjEzODggMTIuNzgwMyA0LjA3MzIyTDkuODUzNTUgMS4xNDY0NUM5Ljc1OTc5IDEuMDUyNjggOS42MzI2MSAxIDkuNSAxSDMuNVpNNS4yNSA3QzQuOTczODYgNyA0Ljc1IDcuMjIzODYgNC43NSA3LjVDNC43NSA3Ljc3NjE0IDQuOTczODYgOCA1LjI1IDhIOS43NUMxMC4wMjYxIDggMTAuMjUgNy43NzYxNCAxMC4yNSA3LjVDMTAuMjUgNy4yMjM4NiAxMC4wMjYxIDcgOS43NSA3SDUuMjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxTdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy41IDJDMy4yMjM4NiAyIDMgMi4yMjM4NiAzIDIuNVYxMi41QzMgMTIuNzc2MSAzLjIyMzg2IDEzIDMuNSAxM0gxMS41QzExLjc3NjEgMTMgMTIgMTIuNzc2MSAxMiAxMi41VjQuNzA3MTFMOS4yOTI4OSAySDMuNVpNMiAyLjVDMiAxLjY3MTU3IDIuNjcxNTcgMSAzLjUgMUg5LjVDOS42MzI2MSAxIDkuNzU5NzkgMS4wNTI2OCA5Ljg1MzU1IDEuMTQ2NDVMMTIuNzgwMyA0LjA3MzIyQzEyLjkyMSA0LjIxMzg4IDEzIDQuNDA0NjQgMTMgNC42MDM1NVYxMi41QzEzIDEzLjMyODQgMTIuMzI4NCAxNCAxMS41IDE0SDMuNUMyLjY3MTU3IDE0IDIgMTMuMzI4NCAyIDEyLjVWMi41Wk00Ljc1IDcuNUM0Ljc1IDcuMjIzODYgNC45NzM4NiA3IDUuMjUgN0g3VjUuMjVDNyA0Ljk3Mzg2IDcuMjIzODYgNC43NSA3LjUgNC43NUM3Ljc3NjE0IDQuNzUgOCA0Ljk3Mzg2IDggNS4yNVY3SDkuNzVDMTAuMDI2MSA3IDEwLjI1IDcuMjIzODYgMTAuMjUgNy41QzEwLjI1IDcuNzc2MTQgMTAuMDI2MSA4IDkuNzUgOEg4VjkuNzVDOCAxMC4wMjYxIDcuNzc2MTQgMTAuMjUgNy41IDEwLjI1QzcuMjIzODYgMTAuMjUgNyAxMC4wMjYxIDcgOS43NVY4SDUuMjVDNC45NzM4NiA4IDQuNzUgNy43NzYxNCA0Ljc1IDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFB0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zIDIuNUMzIDIuMjIzODYgMy4yMjM4NiAyIDMuNSAySDkuMDg1NzlDOS4yMTgzOSAyIDkuMzQ1NTcgMi4wNTI2OCA5LjQzOTM0IDIuMTQ2NDVMMTEuODUzNiA0LjU2MDY2QzExLjk0NzMgNC42NTQ0MyAxMiA0Ljc4MTYxIDEyIDQuOTE0MjFWMTIuNUMxMiAxMi43NzYxIDExLjc3NjEgMTMgMTEuNSAxM0gzLjVDMy4yMjM4NiAxMyAzIDEyLjc3NjEgMyAxMi41VjIuNVpNMy41IDFDMi42NzE1NyAxIDIgMS42NzE1NyAyIDIuNVYxMi41QzIgMTMuMzI4NCAyLjY3MTU3IDE0IDMuNSAxNEgxMS41QzEyLjMyODQgMTQgMTMgMTMuMzI4NCAxMyAxMi41VjQuOTE0MjFDMTMgNC41MTYzOSAxMi44NDIgNC4xMzQ4NiAxMi41NjA3IDMuODUzNTVMMTAuMTQ2NCAxLjQzOTM0QzkuODY1MTQgMS4xNTgwNCA5LjQ4MzYxIDEgOS4wODU3OSAxSDMuNVpNNC41IDRDNC4yMjM4NiA0IDQgNC4yMjM4NiA0IDQuNUM0IDQuNzc2MTQgNC4yMjM4NiA1IDQuNSA1SDcuNUM3Ljc3NjE0IDUgOCA0Ljc3NjE0IDggNC41QzggNC4yMjM4NiA3Ljc3NjE0IDQgNy41IDRINC41Wk00LjUgN0M0LjIyMzg2IDcgNCA3LjIyMzg2IDQgNy41QzQgNy43NzYxNCA0LjIyMzg2IDggNC41IDhIMTAuNUMxMC43NzYxIDggMTEgNy43NzYxNCAxMSA3LjVDMTEgNy4yMjM4NiAxMC43NzYxIDcgMTAuNSA3SDQuNVpNNC41IDEwQzQuMjIzODYgMTAgNCAxMC4yMjM5IDQgMTAuNUM0IDEwLjc3NjEgNC4yMjM4NiAxMSA0LjUgMTFIMTAuNUMxMC43NzYxIDExIDExIDEwLjc3NjEgMTEgMTAuNUMxMSAxMC4yMjM5IDEwLjc3NjEgMTAgMTAuNSAxMEg0LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxIdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS4xMDUwNSAxMkM0LjcwODA1IDEyIDQuNDIzNiAxMS45MTIgNC4yNTE3MSAxMS43MzZDNC4wODM5IDExLjU1NTkgNCAxMS4yNzE1IDQgMTAuODgyN1Y0LjExNzMzQzQgMy43MjAzMyA0LjA4NTk1IDMuNDM1ODggNC4yNTc4NCAzLjI2Mzk4QzQuNDMzODMgMy4wODc5OSA0LjcxNjIzIDMgNS4xMDUwNSAzQzYuNDI3NDEgMyA4LjI1NTkxIDMgOS4wMjg1MiAzQzEwLjEzNzMgMyAxMS4wNTM5IDMuOTgxNTMgMTEuMDUzOSA1LjE4NDZDMTEuMDUzOSA2LjA4NTAxIDEwLjYwMzcgNi44MTg1NSA5LjcwMzI3IDcuMjM2MDJDMTAuODY1NyA3LjQ0ODUxIDExLjUxNzYgOC42Mjc4NyAxMS41MTc2IDkuNDgxMjhDMTEuNTE3NiAxMC41MTI1IDEwLjk5MDIgMTIgOS4yNzczNCAxMkM4Ljc3NzQyIDEyIDYuNDI2MjYgMTIgNS4xMDUwNSAxMlpNOC4zNzg5MSA4LjAwMzQxSDUuOFYxMC42MzFIOC4zNzg5MUM4LjkgMTAuNjMxIDkuNjI5NiAxMC4xMjExIDkuNjI5NiA5LjI5ODc3QzkuNjI5NiA4LjQ3NjQzIDguOSA4LjAwMzQxIDguMzc4OTEgOC4wMDM0MVpNNS44IDQuMzY5MDNWNi42OTU3N0g4LjE3OTY5QzguNTM5MDYgNi42OTU3NyA5LjI3NzM0IDYuMzU5MzkgOS4yNzczNCA1LjUwMDAyQzkuMjc3MzQgNC42NDA2NCA4LjQ4MDQ3IDQuMzY5MDMgOC4xNzk2OSA0LjM2OTAzSDUuOFpcIixmaWxsOm59KSl9LGt0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjUgNC41QzIuNSAzLjA5ODg2IDMuNTk4ODYgMiA1IDJIMTIuNDk5QzEyLjc3NTIgMiAxMyAyLjIyMzg2IDEzIDIuNUMxMyAyLjc3NjE0IDEyLjc3NjEgMyAxMi41IDNIOC42OTI0NEw4LjQwNTA5IDMuODU0NThDOC4xODg2OSA0LjQ5NzUyIDcuODk0MDEgNS4zNzE5NyA3LjU4MDkxIDYuMjk3OTRDNy41MDI1OSA2LjUyOTU2IDcuNDIzMDggNi43NjQ1MyA3LjM0MzMyIDdIOC41QzguNzc2MTQgNyA5IDcuMjIzODYgOSA3LjVDOSA3Ljc3NjE0IDguNzc2MTQgOCA4LjUgOEg3LjAwNDA3QzYuNTY3MjQgOS4yODU0MyA2LjE2NDM1IDEwLjQ2MTMgNS45NTc5OSAxMS4wMzg2QzUuNjM2MjcgMTEuOTM4NiA1LjIwNzEyIDEyLjQ4NTcgNC42Njc0MSAxMi43Nzc4QzQuMTYzMzUgMTMuMDUwNyAzLjY0MTU0IDEzLjA1MDMgMy4yODM3OCAxMy4wNUwzLjI1IDEzLjA1QzIuOTQ2MjQgMTMuMDUgMi43IDEyLjgwMzcgMi43IDEyLjVDMi43IDEyLjE5NjIgMi45NDYyNCAxMS45NSAzLjI1IDExLjk1QzMuNjQxODIgMTEuOTUgMy45MDM1IDExLjk0MDUgNC4xNDM3NCAxMS44MTA1QzQuMzY0NDMgMTEuNjkxIDQuNjU1MzIgMTEuNDE0OCA0LjkyMjE3IDEwLjY2ODNDNS4xMDY5NSAxMC4xNTE0IDUuNDUzNzUgOS4xNDEzNCA1Ljg0MjIgOEg0LjVDNC4yMjM4NiA4IDQgNy43NzYxNCA0IDcuNUM0IDcuMjIzODYgNC4yMjM4NiA3IDQuNSA3SDYuMTgxODdDNi4zMDEyNyA2LjY0Nzg1IDYuNDIxMzIgNi4yOTMyMyA2LjUzODg3IDUuOTQ1NTlDNi44NTE3NSA1LjAyMDI1IDcuMTQ2MjcgNC4xNDYzMSA3LjM2MjU2IDMuNTAzNjhMNy41MzE5MiAzSDVDNC4xNTExNCAzIDMuNSAzLjY1MTE0IDMuNSA0LjVDMy41IDQuNzc2MTQgMy4yNzYxNCA1IDMgNUMyLjcyMzg2IDUgMi41IDQuNzc2MTQgMi41IDQuNVpcIixmaWxsOm59KSl9LFZ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjY3NDk0IDMuNTAwMTdDNS42NzQ5NCAzLjI1MTY0IDUuODc2NDEgMy4wNTAxNyA2LjEyNDk0IDMuMDUwMTdIMTAuNjI0OUMxMC44NzM1IDMuMDUwMTcgMTEuMDc0OSAzLjI1MTY0IDExLjA3NDkgMy41MDAxN0MxMS4wNzQ5IDMuNzQ4NyAxMC44NzM1IDMuOTUwMTcgMTAuNjI0OSAzLjk1MDE3SDkuMDA1ODdMNy4yMzA5IDExLjA1SDguODc0OTNDOS4xMjM0NSAxMS4wNSA5LjMyNDkzIDExLjI1MTUgOS4zMjQ5MyAxMS41QzkuMzI0OTMgMTEuNzQ4NiA5LjEyMzQ1IDExLjk1IDguODc0OTMgMTEuOTVINC4zNzQ5M0M0LjEyNjQgMTEuOTUgMy45MjQ5MyAxMS43NDg2IDMuOTI0OTMgMTEuNUMzLjkyNDkzIDExLjI1MTUgNC4xMjY0IDExLjA1IDQuMzc0OTMgMTEuMDVINS45OTM5N0w3Ljc2ODk0IDMuOTUwMTdINi4xMjQ5NEM1Ljg3NjQxIDMuOTUwMTcgNS42NzQ5NCAzLjc0ODcgNS42NzQ5NCAzLjUwMDE3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNzk5OTMgMy41MDAxN0M0Ljc5OTkzIDMuMjUxNjQgNS4wMDE0IDMuMDUwMTcgNS4yNDk5MyAzLjA1MDE3SDkuNzQ5OTNDOS45OTg0NSAzLjA1MDE3IDEwLjE5OTkgMy4yNTE2NCAxMC4xOTk5IDMuNTAwMTdDMTAuMTk5OSAzLjc0ODcgOS45OTg0NSAzLjk1MDE3IDkuNzQ5OTMgMy45NTAxN0g4LjA5OTkzVjExLjA1SDkuNzQ5OTRDOS45OTg0NyAxMS4wNSAxMC4xOTk5IDExLjI1MTUgMTAuMTk5OSAxMS41QzEwLjE5OTkgMTEuNzQ4NiA5Ljk5ODQ3IDExLjk1IDkuNzQ5OTQgMTEuOTVINS4yNDk5NEM1LjAwMTQxIDExLjk1IDQuNzk5OTQgMTEuNzQ4NiA0Ljc5OTk0IDExLjVDNC43OTk5NCAxMS4yNTE1IDUuMDAxNDEgMTEuMDUgNS4yNDk5NCAxMS4wNUg2Ljg5OTkzVjMuOTUwMTdINS4yNDk5M0M1LjAwMTQgMy45NTAxNyA0Ljc5OTkzIDMuNzQ4NyA0Ljc5OTkzIDMuNTAwMTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxJdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi43ODIzMyAyLjIxNzA3QzIuNzA3MzIgMi4xNDIwNiAyLjYwNTU3IDIuMDk5OTEgMi40OTk0OSAyLjA5OTkxQzIuMzkzNCAyLjA5OTkxIDIuMjkxNjYgMi4xNDIwNiAyLjIxNjY0IDIuMjE3MDdMMC4yMTY2NDUgNC4yMTcwN0MwLjA2MDQzNTEgNC4zNzMyOCAwLjA2MDQzNTEgNC42MjY1NSAwLjIxNjY0NSA0Ljc4Mjc2QzAuMzcyODU1IDQuOTM4OTcgMC42MjYxMjEgNC45Mzg5NyAwLjc4MjMzIDQuNzgyNzZMMi4wOTk0OSAzLjQ2NTZMMi4wOTk0OSAxMS41MzQyTDAuNzgyMzMgMTAuMjE3MUMwLjYyNjEyIDEwLjA2MDkgMC4zNzI4NTQgMTAuMDYwOSAwLjIxNjY0NSAxMC4yMTcxQzAuMDYwNDM0OSAxMC4zNzMzIDAuMDYwNDM0OSAxMC42MjY1IDAuMjE2NjQ1IDEwLjc4MjhMMi4yMTY2NCAxMi43ODI4QzIuMjkxNjYgMTIuODU3OCAyLjM5MzQgMTIuODk5OSAyLjQ5OTQ5IDEyLjg5OTlDMi42MDU1NyAxMi44OTk5IDIuNzA3MzEgMTIuODU3OCAyLjc4MjMzIDEyLjc4MjhMNC43ODIzMyAxMC43ODI4QzQuOTM4NTQgMTAuNjI2NSA0LjkzODU0IDEwLjM3MzMgNC43ODIzMyAxMC4yMTcxQzQuNjI2MTIgMTAuMDYwOSA0LjM3Mjg1IDEwLjA2MDkgNC4yMTY2NCAxMC4yMTcxTDIuODk5NDkgMTEuNTM0MkwyLjg5OTQ5IDMuNDY1Nkw0LjIxNjY0IDQuNzgyNzZDNC4zNzI4NSA0LjkzODk3IDQuNjI2MTIgNC45Mzg5NyA0Ljc4MjMzIDQuNzgyNzZDNC45Mzg1NCA0LjYyNjU1IDQuOTM4NTQgNC4zNzMyOCA0Ljc4MjMzIDQuMjE3MDdMMi43ODIzMyAyLjIxNzA3Wk0xMC41IDIuNzQ5OTdDMTAuNzEwNyAyLjc0OTk3IDEwLjg5ODggMi44ODIxMSAxMC45NzAzIDMuMDgwMzZMMTMuOTcwMyAxMS4zOTk5QzE0LjA2NCAxMS42NTk3IDEzLjkyOTMgMTEuOTQ2MiAxMy42Njk2IDEyLjAzOTlDMTMuNDA5OCAxMi4xMzM2IDEzLjEyMzMgMTEuOTk4OSAxMy4wMjk2IDExLjczOTJMMTIuMDQ3NyA5LjAxNkg4Ljk1MjI4TDcuOTcwMzMgMTEuNzM5MkM3Ljg3NjY2IDExLjk5ODkgNy41OTAxMyAxMi4xMzM2IDcuMzMwMzYgMTIuMDM5OUM3LjA3MDU5IDExLjk0NjIgNi45MzU5NSAxMS42NTk3IDcuMDI5NjIgMTEuMzk5OUwxMC4wMjk2IDMuMDgwMzZDMTAuMTAxMSAyLjg4MjExIDEwLjI4OTIgMi43NDk5NyAxMC41IDIuNzQ5OTdaTTEwLjUgNC43MjM5NkwxMS43NDEyIDguMTY2SDkuMjU4NzlMMTAuNSA0LjcyMzk2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuMDM3OTEgOS45ODA3NUMwLjkzNDc3NyA5LjY1ODMgMS4xMTYwMyA5LjM3NzE5IDEuNDAwMDUgOS4yNDg3MUMxLjY4NDA4IDkuMTIwMjIgMi4wOTQ2MyA5LjEzNDEyIDIuMjcwNzEgOS40NTQyNkMyLjg1MzkzIDEwLjUxNDcgMy42NDU5OSAxMC43MjgyIDQuNDg2NjUgMTAuNzI4MkM1LjUyNzIxIDEwLjcyODIgNi4yOTY1OSAxMC4yNjE1IDYuMjk2NTkgOS40NTQyNkM2LjI5NjU5IDguODA0NyA1LjkxMTkgOC40NjQxNiA0Ljg3MTM0IDguMTQyNTNMNC4xNTg3MiA3LjkyMTgxQzIuNjQ1MTggNy40NDg4MyAxLjg4ODQyIDYuNjkyMDYgMS44ODg0MiA1LjQ1NjAxQzEuODg4NDIgMy43OTc0MyAzLjI3NTgzIDIuNjg3NSA1LjI0MzQyIDIuNjg3NUM2LjkxNzMzIDIuNjg3NSA3Ljk3NDA5IDMuMzM1MzYgOC40MzgzMyA0LjMxMDY1QzguNTcwODcgNC41ODkwOSA4LjU3NjE0IDQuOTEyOTQgOC4yMjc5NCA1LjE5MTE0QzcuODc5NzQgNS40NjkzNCA3LjUyMzUxIDUuMzQ3OTkgNy4yMzMyNyA1LjAzODM5QzYuNDcyMTUgNC4yMjY1MyA1Ljk5NTQ1IDQuMDQ5NjggNS4yNTYwNCA0LjA0OTY4QzQuMTM5OCA0LjA0OTY4IDMuNTQ3IDQuNjM2MTggMy41NDcgNS4yNzk0M0MzLjU0NyA1Ljg2NTkyIDMuOTYzMjIgNi4yMzE2OSA0Ljk0NzAyIDYuNTM0NEw1LjY3ODU2IDYuNzYxNDNDNy4yMjk5NCA3LjIzNDQxIDcuOTc0MDkgNy45NTk2NCA3Ljk3NDA5IDkuMTcwNDdDNy45NzQwOSAxMC43NzIzIDYuNjkzODkgMTIuMDkwMyA0LjQ2MTQzIDEyLjA5MDNDMi44NjYxMiAxMi4wOTAzIDEuNDAwMDUgMTEuMTEzMSAxLjAzNzkxIDkuOTgwNzVaTTExLjg0OTEgOC43Nzk4NUMxMC42NjEgOC4zOTU0MyAxMC4xNjQ5IDcuODYxMTQgMTAuMTY0OSA2Ljk4ODA1QzEwLjE2NDkgNS44NjczNiAxMS4xNjM2IDUuMDQ2MzkgMTIuNjEyOCA1LjA0NjM5QzEzLjg1NDYgNS4wNDYzOSAxNC42NjI5IDUuNjMzNDUgMTQuOTc3OCA2LjYzNDZDMTUuMDQ0MyA2Ljg0NTk5IDE0Ljk1OTMgNi45ODAwNiAxNC43NDc1IDcuMDQ5MUMxNC41Mzk0IDcuMTE2OTcgMTQuMzE3NiA3LjA5OTc0IDE0LjIzOCA2Ljg5NjExQzEzLjkzNTYgNi4xMjI3MyAxMy4zNTIgNS43NjMxMSAxMi41OTk4IDUuNzYzMTFDMTEuNjQ2NyA1Ljc2MzExIDExLjAxMzUgNi4yNTE3OCAxMS4wMTM1IDYuOTE2MzhDMTEuMDEzNSA3LjQ1MDY2IDExLjM0NjQgNy43NTAzOCAxMi4yNDczIDguMDQzNThMMTIuODM0OCA4LjIzMjU0QzE0LjA2MiA4LjYyOTk5IDE0LjU1MTYgOS4xMzgyMSAxNC41NTE2IDEwLjAxNzhDMTQuNTUxNiAxMS4xOTcyIDEzLjQ4MSAxMi4wNDQyIDExLjk5MjcgMTIuMDQ0MkMxMC42NDM5IDEyLjA0NDIgOS42NTY0NCAxMS4yODA5IDkuNDE5NzkgMTAuMzM2MUM5LjM2NTM1IDEwLjExODggOS40MTE5MiAxMC4wMjg3IDkuNzAwMzkgOS45NjE4NEM5Ljk4ODg2IDkuODk0OTkgMTAuMDcxNCA5Ljg5OTE4IDEwLjE3MTUgMTAuMTM2OUMxMC40NTU1IDEwLjgxMTQgMTEuMTUzMSAxMS4zMjc1IDEyLjAzMTggMTEuMzI3NUMxMi45OTE0IDExLjMyNzUgMTMuNjgzNCAxMC43ODAyIDEzLjY4MzQgMTAuMDYzNEMxMy42ODM0IDkuNTM1NjcgMTMuMzk2MSA5LjI4ODA3IDEyLjQzNjYgOC45NzUzMkwxMS44NDkxIDguNzc5ODVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxUdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEgMS41QzExIDEuMjIzODYgMTAuNzc2MSAxIDEwLjUgMUMxMC4yMjM5IDEgMTAgMS4yMjM4NiAxMCAxLjVWNEg1VjEuNUM1IDEuMjIzODYgNC43NzYxNCAxIDQuNSAxQzQuMjIzODYgMSA0IDEuMjIzODYgNCAxLjVWNEgxLjVDMS4yMjM4NiA0IDEgNC4yMjM4NiAxIDQuNUMxIDQuNzc2MTQgMS4yMjM4NiA1IDEuNSA1SDRWMTBIMS41QzEuMjIzODYgMTAgMSAxMC4yMjM5IDEgMTAuNUMxIDEwLjc3NjEgMS4yMjM4NiAxMSAxLjUgMTFINFYxMy41QzQgMTMuNzc2MSA0LjIyMzg2IDE0IDQuNSAxNEM0Ljc3NjE0IDE0IDUgMTMuNzc2MSA1IDEzLjVWMTFIMTBWMTMuNUMxMCAxMy43NzYxIDEwLjIyMzkgMTQgMTAuNSAxNEMxMC43NzYxIDE0IDExIDEzLjc3NjEgMTEgMTMuNVYxMUgxMy41QzEzLjc3NjEgMTEgMTQgMTAuNzc2MSAxNCAxMC41QzE0IDEwLjIyMzkgMTMuNzc2MSAxMCAxMy41IDEwSDExVjVIMTMuNUMxMy43NzYxIDUgMTQgNC43NzYxNCAxNCA0LjVDMTQgNC4yMjM4NiAxMy43NzYxIDQgMTMuNSA0SDExVjEuNVpNMTAgMTBWNUg1VjEwSDEwWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMzgyNSAxLjI5NTY3QzMuNDYyNDEgMS4xMTQzMiAzLjY0MTg4IDAuOTk3Mjg0IDMuODQwMDUgMC45OTcyODRIMTEuNUMxMS43NzYxIDAuOTk3Mjg0IDEyIDEuMjIxMTQgMTIgMS40OTcyOFY1LjVDMTIgNS43NzYxNCAxMS43NzYxIDYgMTEuNSA2SDguNjM1MjFMMTEuNTI4OCA5LjE2MjQ3QzExLjY2MjYgOS4zMDg3IDExLjY5NzQgOS41MjAxNSAxMS42MTc1IDkuNzAxNTRDMTEuNTM3NiA5Ljg4MjkzIDExLjM1ODIgMTAgMTEuMTYgMTBIOFYxMy41QzggMTMuNzAyMiA3Ljg3ODE4IDEzLjg4NDUgNy42OTEzNCAxMy45NjE5QzcuNTA0NSAxNC4wMzkzIDcuMjg5NDUgMTMuOTk2NiA3LjE0NjQ1IDEzLjg1MzZMMy4xNDY0NSA5Ljg1MzU1QzMuMDUyNjggOS43NTk3OSAzIDkuNjMyNjEgMyA5LjVWNS41QzMgNS4yMjM4NiAzLjIyMzg2IDUgMy41IDVINi4zNjUzMUwzLjQ3MTA1IDEuODM0NjhDMy4zMzczMiAxLjY4ODQ0IDMuMzAyNTkgMS40NzcwMSAzLjM4MjUgMS4yOTU2N1pNNy43MjAzMiA1TDQuOTc0NzQgMS45OTcyOEgxMVY1SDcuNzIwMzJaTTcuMjc5NzggNkg0VjlINy41SDEwLjAyNDdMNy4yNzk3OCA2Wk00LjcwNzExIDEwTDcgMTIuMjkyOVYxMEg0LjcwNzExWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMDcwOTUgMC42NTAyMzhDNi42NzM5MSAwLjY1MDIzOCA2LjMyOTc3IDAuOTI1MDk2IDYuMjQxOTggMS4zMTIzMUw2LjAwMzkgMi4zNjI0N0M1LjYyNDkgMi40NzI2OSA1LjI2MzM1IDIuNjIzNjMgNC45MjQzNiAyLjgxMDEzTDQuMDEzMzUgMi4yMzU4NUMzLjY3NzQ4IDIuMDI0MTMgMy4yMzk3OCAyLjA3MzEyIDIuOTU5MDMgMi4zNTM4NkwyLjM1Mjk0IDIuOTU5OTZDMi4wNzIyIDMuMjQwNyAyLjAyMzIgMy42Nzg0IDIuMjM0OTMgNC4wMTQyN0wyLjgwOTQyIDQuOTI1NjFDMi42MjMwNyA1LjI2NDUgMi40NzIyNyA1LjYyNTk0IDIuMzYyMTYgNi4wMDQ4MUwxLjMxMjA5IDYuMjQyODdDMC45MjQ4ODMgNi4zMzA2NSAwLjY1MDAyNCA2LjY3NDggMC42NTAwMjQgNy4wNzE4M1Y3LjkyODk3QzAuNjUwMDI0IDguMzI2MDEgMC45MjQ4ODMgOC42NzAxNSAxLjMxMjA5IDguNzU3OTRMMi4zNjIyOCA4Ljk5NjAzQzIuNDcyNDYgOS4zNzUgMi42MjMzNSA5LjczNjUyIDIuODA5NzkgMTAuMDc1NUwyLjIzNTQgMTAuOTg2N0MyLjAyMzY3IDExLjMyMjUgMi4wNzI2NyAxMS43NjAyIDIuMzUzNDEgMTIuMDQxTDIuOTU5NTEgMTIuNjQ3MUMzLjI0MDI1IDEyLjkyNzggMy42Nzc5NSAxMi45NzY4IDQuMDEzODIgMTIuNzY1MUw0LjkyNTA2IDEyLjE5MDdDNS4yNjM4NCAxMi4zNzcgNS42MjUxNiAxMi41Mjc4IDYuMDAzOSAxMi42Mzc5TDYuMjQxOTggMTMuNjg4MUM2LjMyOTc3IDE0LjA3NTMgNi42NzM5MSAxNC4zNTAyIDcuMDcwOTUgMTQuMzUwMkg3LjkyODA5QzguMzI1MTIgMTQuMzUwMiA4LjY2OTI3IDE0LjA3NTMgOC43NTcwNSAxMy42ODgxTDguOTk1MDUgMTIuNjM4M0M5LjM3NDExIDEyLjUyODIgOS43MzU3MyAxMi4zNzczIDEwLjA3NDggMTIuMTkwOUwxMC45ODYgMTIuNzY1M0MxMS4zMjE4IDEyLjk3NyAxMS43NTk1IDEyLjkyOCAxMi4wNDAzIDEyLjY0NzNMMTIuNjQ2NCAxMi4wNDEyQzEyLjkyNzEgMTEuNzYwNCAxMi45NzYxIDExLjMyMjcgMTIuNzY0NCAxMC45ODY5TDEyLjE5MDIgMTAuMDc2QzEyLjM3NjggOS43MzY4OCAxMi41Mjc4IDkuMzc1MTUgMTIuNjM4IDguOTk1OTZMMTMuNjg3OSA4Ljc1Nzk0QzE0LjA3NTEgOC42NzAxNSAxNC4zNSA4LjMyNjAxIDE0LjM1IDcuOTI4OTdWNy4wNzE4M0MxNC4zNSA2LjY3NDggMTQuMDc1MSA2LjMzMDY1IDEzLjY4NzkgNi4yNDI4N0wxMi42MzgxIDYuMDA0ODhDMTIuNTI4IDUuNjI1NzggMTIuMzc3MSA1LjI2NDE0IDEyLjE5MDYgNC45MjUwN0wxMi43NjQ4IDQuMDE0MDdDMTIuOTc2NiAzLjY3ODIgMTIuOTI3NiAzLjI0MDUgMTIuNjQ2OCAyLjk1OTc1TDEyLjA0MDcgMi4zNTM2NkMxMS43NiAyLjA3MjkyIDExLjMyMjMgMi4wMjM5MiAxMC45ODY0IDIuMjM1NjVMMTAuMDc1NSAyLjgwOTg5QzkuNzM2MjIgMi42MjMyOCA5LjM3NDM3IDIuNDcyMjkgOC45OTUwNSAyLjM2MjA5TDguNzU3MDUgMS4zMTIzMUM4LjY2OTI3IDAuOTI1MDk2IDguMzI1MTIgMC42NTAyMzggNy45MjgwOSAwLjY1MDIzOEg3LjA3MDk1Wk00LjkyMDUzIDMuODEyNTFDNS40NDcyNCAzLjQ0MzM5IDYuMDU2NjUgMy4xODQyNCA2LjcxNTQzIDMuMDY4MzlMNy4wNzA5NSAxLjUwMDI0SDcuOTI4MDlMOC4yODM1NSAzLjA2ODE2QzguOTQyNjcgMy4xODM4NyA5LjU1MjQgMy40NDMwMiAxMC4wNzk0IDMuODEyMjRMMTEuNDM5NyAyLjk1NDdMMTIuMDQ1OCAzLjU2MDc5TDExLjE4ODIgNC45MjExN0MxMS41NTczIDUuNDQ3OTggMTEuODE2NCA2LjA1NzUgMTEuOTMyMSA2LjcxNjM4TDEzLjUgNy4wNzE4M1Y3LjkyODk3TDExLjkzMiA4LjI4NDQ0QzExLjgxNjIgOC45NDM0MiAxMS41NTcgOS41NTMwMSAxMS4xODc4IDEwLjA3OThMMTIuMDQ1MyAxMS40NDAyTDExLjQzOTIgMTIuMDQ2MkwxMC4wNzg3IDExLjE4ODZDOS41NTE5MiAxMS41NTc2IDguOTQyNDEgMTEuODE2NiA4LjI4MzU1IDExLjkzMjNMNy45MjgwOSAxMy41MDAySDcuMDcwOTVMNi43MTU0MyAxMS45MzJDNi4wNTY5IDExLjgxNjIgNS40NDc3MiAxMS41NTcyIDQuOTIxMTYgMTEuMTg4M0wzLjU2MDU1IDEyLjA0NkwyLjk1NDQ1IDExLjQzOTlMMy44MTIxMyAxMC4wNzk0QzMuNDQzMSA5LjU1MjY2IDMuMTg0MDMgOC45NDMyNiAzLjA2ODI1IDguMjg0NUwxLjUwMDAyIDcuOTI4OTdWNy4wNzE4M0wzLjA2ODE4IDYuNzE2MzJDMy4xODM4OCA2LjA1NzY1IDMuNDQyODMgNS40NDgzMyAzLjgxMTcxIDQuOTIxNjVMMi45NTM5OCAzLjU2MUwzLjU2MDA4IDIuOTU0OTFMNC45MjA1MyAzLjgxMjUxWk05LjAyNDk2IDcuNTAwMDhDOS4wMjQ5NiA4LjM0MjI2IDguMzQyMjMgOS4wMjQ5OSA3LjUwMDA1IDkuMDI0OTlDNi42NTc4NiA5LjAyNDk5IDUuOTc1MTMgOC4zNDIyNiA1Ljk3NTEzIDcuNTAwMDhDNS45NzUxMyA2LjY1Nzg5IDYuNjU3ODYgNS45NzUxNiA3LjUwMDA1IDUuOTc1MTZDOC4zNDIyMyA1Ljk3NTE2IDkuMDI0OTYgNi42NTc4OSA5LjAyNDk2IDcuNTAwMDhaTTkuOTI0OTYgNy41MDAwOEM5LjkyNDk2IDguODM5MzIgOC44MzkyOSA5LjkyNDk5IDcuNTAwMDUgOS45MjQ5OUM2LjE2MDggOS45MjQ5OSA1LjA3NTEzIDguODM5MzIgNS4wNzUxMyA3LjUwMDA4QzUuMDc1MTMgNi4xNjA4NCA2LjE2MDggNS4wNzUxNiA3LjUwMDA1IDUuMDc1MTZDOC44MzkyOSA1LjA3NTE2IDkuOTI0OTYgNi4xNjA4NCA5LjkyNDk2IDcuNTAwMDhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxCdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTkzNiAwLjg1MDAwNkMzLjgyNzY3IDAuODUwMDA2IDAuODQ5OTc2IDMuODI3MyAwLjg0OTk3NiA3LjUwMDIzQzAuODQ5OTc2IDEwLjQzNzkgMi43NTUyMyAxMi45MzA2IDUuMzk3NzUgMTMuODEwNEM1LjczMDQ3IDEzLjg3MTIgNS44NTE3MSAxMy42NjU4IDUuODUxNzEgMTMuNDg5NUM1Ljg1MTcxIDEzLjMzMTUgNS44NDYgMTIuOTEzNSA1Ljg0MjczIDEyLjM1ODdDMy45OTMwMSAxMi43NjA0IDMuNjAyNzMgMTEuNDY3MSAzLjYwMjczIDExLjQ2NzFDMy4zMDAyMiAxMC42OTg4IDIuODY0MjMgMTAuNDk0MiAyLjg2NDIzIDEwLjQ5NDJDMi4yNjA0NCAxMC4wODE5IDIuOTA5OTUgMTAuMDkwMSAyLjkwOTk1IDEwLjA5MDFDMy41Nzc0MiAxMC4xMzcgMy45Mjg1IDEwLjc3NTUgMy45Mjg1IDEwLjc3NTVDNC41MjE2NyAxMS43OTE2IDUuNDg1MTIgMTEuNDk4MSA1Ljg2Mzk2IDExLjMyNzlDNS45MjQzOCAxMC44OTg0IDYuMDk2MjUgMTAuNjA1MyA2LjI4NjA4IDEwLjQzOTFDNC44MDk0OCAxMC4yNzA5IDMuMjU2OTUgOS43MDA2MyAzLjI1Njk1IDcuMTUyNDFDMy4yNTY5NSA2LjQyNjE1IDMuNTE2MTggNS44MzI5OCAzLjk0MTU3IDUuMzY4QzMuODcyOTkgNS4xOTk4IDMuNjQ0NzggNC41MjM3NSA0LjAwNjg5IDMuNjA4MDdDNC4wMDY4OSAzLjYwODA3IDQuNTY0OTQgMy40MjkyNiA1LjgzNTM4IDQuMjg5NDFDNi4zNjU2OCA0LjE0MjA0IDYuOTM0NzcgNC4wNjg1NiA3LjUwMDE4IDQuMDY1N0M4LjA2NTE4IDQuMDY4NTYgOC42MzM4NiA0LjE0MjA0IDkuMTY0OTggNC4yODk0MUMxMC40MzQ2IDMuNDI5MjYgMTAuOTkxOCAzLjYwODA3IDEwLjk5MTggMy42MDgwN0MxMS4zNTQ4IDQuNTIzNzUgMTEuMTI2NiA1LjE5OTggMTEuMDU4NCA1LjM2OEMxMS40ODQ2IDUuODMyOTggMTEuNzQxOCA2LjQyNjE1IDExLjc0MTggNy4xNTI0MUMxMS43NDE4IDkuNzA3MTYgMTAuMTg2OCAxMC4yNjkzIDguNzA1NzEgMTAuNDMzOEM4Ljk0NDEyIDEwLjYzOTIgOS4xNTY4MSAxMS4wNDUgOS4xNTY4MSAxMS42NjU1QzkuMTU2ODEgMTIuNTU0MiA5LjE0ODY1IDEzLjI3MTUgOS4xNDg2NSAxMy40ODk1QzkuMTQ4NjUgMTMuNjY3NSA5LjI2ODY3IDEzLjg3NDUgOS42MDU4OCAxMy44MDk1QzEyLjI0NjQgMTIuOTI4MiAxNC4xNSAxMC40Mzc1IDE0LjE1IDcuNTAwMjNDMTQuMTUgMy44MjczIDExLjE3MjMgMC44NTAwMDYgNy40OTkzNiAwLjg1MDAwNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LCR0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTk2IDEuODAwMDJDNC4zNTE5NCAxLjgwMDAyIDEuNzk5OTYgNC4zNTIgMS43OTk5NiA3LjUwMDAyQzEuNzk5OTYgMTAuNjQ4IDQuMzUxOTQgMTMuMiA3LjQ5OTk2IDEzLjJDMTAuNjQ4IDEzLjIgMTMuMiAxMC42NDggMTMuMiA3LjUwMDAyQzEzLjIgNC4zNTIgMTAuNjQ4IDEuODAwMDIgNy40OTk5NiAxLjgwMDAyWk0wLjg5OTk2MyA3LjUwMDAyQzAuODk5OTYzIDMuODU0OTQgMy44NTQ4OCAwLjkwMDAyNCA3LjQ5OTk2IDAuOTAwMDI0QzExLjE0NSAwLjkwMDAyNCAxNC4xIDMuODU0OTQgMTQuMSA3LjUwMDAyQzE0LjEgMTEuMTQ1MSAxMS4xNDUgMTQuMSA3LjQ5OTk2IDE0LjFDMy44NTQ4OCAxNC4xIDAuODk5OTYzIDExLjE0NTEgMC44OTk5NjMgNy41MDAwMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjQ5OTkgNy44OTk5OEgxLjQ5OTk0VjcuMDk5OThIMTMuNDk5OVY3Ljg5OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4wOTk5MSAxMy41VjEuNUg3Ljg5OTkxVjEzLjVINy4wOTk5MXpNMTAuMzc1IDcuNDk5OThDMTAuMzc1IDUuMzI3MjQgOS41OTM2NCAzLjE3Nzc4IDguMDYxODMgMS43NTY1Nkw4LjUzNzkzIDEuMjQzNDFDMTAuMjM5NiAyLjgyMjE4IDExLjA3NSA1LjE3MjczIDExLjA3NSA3LjQ5OTk4IDExLjA3NSA5LjgyNzI0IDEwLjIzOTYgMTIuMTc3OCA4LjUzNzkzIDEzLjc1NjZMOC4wNjE4MyAxMy4yNDM0QzkuNTkzNjQgMTEuODIyMiAxMC4zNzUgOS42NzI3MyAxMC4zNzUgNy40OTk5OHpNMy45OTk2OSA3LjVDMy45OTk2OSA1LjE3NjExIDQuODA3ODYgMi44MjY3OCA2LjQ1NzY4IDEuMjQ3MTlMNi45NDE3NyAxLjc1MjgxQzUuNDU4MiAzLjE3MzIzIDQuNjk5NjkgNS4zMjM4OSA0LjY5OTY5IDcuNSA0LjY5OTcgOS42NzYxMSA1LjQ1ODIyIDExLjgyNjggNi45NDE3OSAxMy4yNDcyTDYuNDU3NjkgMTMuNzUyOEM0LjgwNzg4IDEyLjE3MzIgMy45OTk3IDkuODIzOSAzLjk5OTY5IDcuNXpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTYgMy45NTgwMUM5LjY2OTI4IDMuOTU4MDEgMTEuODc1MyA0LjM1OTE1IDEzLjM3MDYgNS4xOTQ0OCAxMy41Mzk0IDUuMjg4NzUgMTMuNTk5OCA1LjUwMTk3IDEzLjUwNTUgNS42NzA3MyAxMy40MTEzIDUuODM5NDggMTMuMTk4IDUuODk5ODcgMTMuMDI5MyA1LjgwNTYgMTEuNjc5NCA1LjA1MTU1IDkuNjA3OTkgNC42NTgwMSA3LjQ5OTk2IDQuNjU4MDEgNS4zOTE5MiA0LjY1ODAxIDMuMzIwNTIgNS4wNTE1NSAxLjk3MDY0IDUuODA1NiAxLjgwMTg4IDUuODk5ODcgMS41ODg2NiA1LjgzOTQ4IDEuNDk0MzkgNS42NzA3MyAxLjQwMDEzIDUuNTAxOTcgMS40NjA1MSA1LjI4ODc1IDEuNjI5MjcgNS4xOTQ0OCAzLjEyNDY2IDQuMzU5MTUgNS4zMzA2MyAzLjk1ODAxIDcuNDk5OTYgMy45NTgwMXpNNy40OTk5NiAxMC44NUM5LjY2OTI4IDEwLjg1IDExLjg3NTMgMTAuNDQ4OCAxMy4zNzA2IDkuNjEzNSAxMy41Mzk0IDkuNTE5MjQgMTMuNTk5OCA5LjMwNjAxIDEzLjUwNTUgOS4xMzcyNiAxMy40MTEzIDguOTY4NSAxMy4xOTggOC45MDgxMiAxMy4wMjkzIDkuMDAyMzggMTEuNjc5NCA5Ljc1NjQzIDkuNjA3OTkgMTAuMTUgNy40OTk5NiAxMC4xNSA1LjM5MTkyIDEwLjE1IDMuMzIwNTIgOS43NTY0MyAxLjk3MDY0IDkuMDAyMzkgMS44MDE4OCA4LjkwODEyIDEuNTg4NjYgOC45Njg1IDEuNDk0MzkgOS4xMzcyNiAxLjQwMDEzIDkuMzA2MDEgMS40NjA1MSA5LjUxOTI0IDEuNjI5MjcgOS42MTM1IDMuMTI0NjYgMTAuNDQ4OCA1LjMzMDYzIDEwLjg1IDcuNDk5OTYgMTAuODV6XCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxGdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTIuNSAySDhWN0gxM1YyLjVDMTMgMi4yMjM4NiAxMi43NzYxIDIgMTIuNSAyWk0xMyA4SDhWMTNIMTIuNUMxMi43NzYxIDEzIDEzIDEyLjc3NjEgMTMgMTIuNVY4Wk03IDdWMkgyLjVDMi4yMjM4NiAyIDIgMi4yMjM4NiAyIDIuNVY3SDdaTTIgOFYxMi41QzIgMTIuNzc2MSAyLjIyMzg2IDEzIDIuNSAxM0g3VjhIMlpNMi41IDFDMS42NzE1NyAxIDEgMS42NzE1NyAxIDIuNVYxMi41QzEgMTMuMzI4NCAxLjY3MTU3IDE0IDIuNSAxNEgxMi41QzEzLjMyODQgMTQgMTQgMTMuMzI4NCAxNCAxMi41VjIuNUMxNCAxLjY3MTU3IDEzLjMyODQgMSAxMi41IDFIMi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNDQ5OTUgMC45NDk5NTFDMS4zMTczNCAwLjk0OTk1MSAxLjE5MDE2IDEuMDAyNjMgMS4wOTY0IDEuMDk2NEMxLjAwMjYzIDEuMTkwMTcgMC45NDk5NTEgMS4zMTczNSAwLjk0OTk1MSAxLjQ0OTk1TDAuOTQ5OTY2IDMuNDQ5OTVDMC45NDk5NjkgMy43MjYxIDEuMTczODMgMy45NDk5NSAxLjQ0OTk3IDMuOTQ5OTVDMS43MjYxMSAzLjk0OTk1IDEuOTQ5OTcgMy43MjYwOSAxLjk0OTk3IDMuNDQ5OTVMMS45NDk5NSAxLjk0OTk1SDMuNDQ5OTdDMy43MjYxMSAxLjk0OTk1IDMuOTQ5OTcgMS43MjYwOSAzLjk0OTk3IDEuNDQ5OTVDMy45NDk5NyAxLjE3MzgxIDMuNzI2MTEgMC45NDk5NTEgMy40NDk5NyAwLjk0OTk1MUgxLjQ0OTk1Wk01Ljk0OTk1IDAuOTQ5OTUxQzUuNjczODEgMC45NDk5NTEgNS40NDk5NSAxLjE3MzgxIDUuNDQ5OTUgMS40NDk5NUM1LjQ0OTk1IDEuNzI2MDkgNS42NzM4MSAxLjk0OTk1IDUuOTQ5OTUgMS45NDk5NUg4Ljk0OTk1QzkuMjI2MDkgMS45NDk5NSA5LjQ0OTk1IDEuNzI2MDkgOS40NDk5NSAxLjQ0OTk1QzkuNDQ5OTUgMS4xNzM4MSA5LjIyNjA5IDAuOTQ5OTUxIDguOTQ5OTUgMC45NDk5NTFINS45NDk5NVpNNS40NDk5NSAxMy40NUM1LjQ0OTk1IDEzLjE3MzggNS42NzM4MSAxMi45NSA1Ljk0OTk1IDEyLjk1SDguOTQ5OTVDOS4yMjYwOSAxMi45NSA5LjQ0OTk1IDEzLjE3MzggOS40NDk5NSAxMy40NUM5LjQ0OTk1IDEzLjcyNjEgOS4yMjYwOSAxMy45NSA4Ljk0OTk1IDEzLjk1SDUuOTQ5OTVDNS42NzM4MSAxMy45NSA1LjQ0OTk1IDEzLjcyNjEgNS40NDk5NSAxMy40NVpNMS45NDk5NSA1Ljk0OTk1QzEuOTQ5OTUgNS42NzM4MSAxLjcyNjA5IDUuNDQ5OTUgMS40NDk5NSA1LjQ0OTk1QzEuMTczODEgNS40NDk5NSAwLjk0OTk1MSA1LjY3MzgxIDAuOTQ5OTUxIDUuOTQ5OTVWOC45NDk5NUMwLjk0OTk1MSA5LjIyNjA5IDEuMTczODEgOS40NDk5NSAxLjQ0OTk1IDkuNDQ5OTVDMS43MjYwOSA5LjQ0OTk1IDEuOTQ5OTUgOS4yMjYwOSAxLjk0OTk1IDguOTQ5OTVWNS45NDk5NVpNMTMuNDUgNS40NDk5NUMxMy43MjYxIDUuNDQ5OTUgMTMuOTUgNS42NzM4MSAxMy45NSA1Ljk0OTk1VjguOTQ5OTVDMTMuOTUgOS4yMjYwOSAxMy43MjYxIDkuNDQ5OTUgMTMuNDUgOS40NDk5NUMxMy4xNzM4IDkuNDQ5OTUgMTIuOTUgOS4yMjYwOSAxMi45NSA4Ljk0OTk1VjUuOTQ5OTVDMTIuOTUgNS42NzM4MSAxMy4xNzM4IDUuNDQ5OTUgMTMuNDUgNS40NDk5NVpNMTEuNDUgMC45NDk5NTFDMTEuMTczOCAwLjk0OTk1MSAxMC45NSAxLjE3MzgxIDEwLjk1IDEuNDQ5OTVDMTAuOTUgMS43MjYwOSAxMS4xNzM4IDEuOTQ5OTUgMTEuNDUgMS45NDk5NUgxMi45NDk5VjMuNDQ5OTVDMTIuOTQ5OSAzLjcyNjA5IDEzLjE3MzggMy45NDk5NSAxMy40NDk5IDMuOTQ5OTVDMTMuNzI2MSAzLjk0OTk1IDEzLjk0OTkgMy43MjYwOSAxMy45NDk5IDMuNDQ5OTVWMS40NDk5NUMxMy45NDk5IDEuMTczODEgMTMuNzI1MiAwLjk0OTk1MSAxMy40NDkgMC45NDk5NTFIMTEuNDVaTTEuNDQ5OTUgMTAuOTVDMS43MjYwOSAxMC45NSAxLjk0OTk1IDExLjE3MzggMS45NDk5NSAxMS40NVYxMi45NUgzLjQ0OTk3QzMuNzI2MTEgMTIuOTUgMy45NDk5NyAxMy4xNzM4IDMuOTQ5OTcgMTMuNDVDMy45NDk5NyAxMy43MjYxIDMuNzI2MTEgMTMuOTUgMy40NDk5NyAxMy45NUgxLjQ0OTk1QzEuMTczODEgMTMuOTUgMC45NDk5NTEgMTMuNzI2MSAwLjk0OTk1MSAxMy40NVYxMS40NUMwLjk0OTk1MSAxMS4xNzM4IDEuMTczODEgMTAuOTUgMS40NDk5NSAxMC45NVpNMTMuOTUgMTEuNDVDMTMuOTUgMTEuMTczOCAxMy43MjYxIDEwLjk1IDEzLjQ1IDEwLjk1QzEzLjE3MzggMTAuOTQ5OSAxMi45NSAxMS4xNzM4IDEyLjk1IDExLjQ0OTlMMTIuOTQ5MSAxMi45NUgxMS40NUMxMS4xNzM4IDEyLjk1IDEwLjk1IDEzLjE3MzggMTAuOTUgMTMuNDVDMTAuOTUgMTMuNzI2MSAxMS4xNzM4IDEzLjk1IDExLjQ1IDEzLjk1SDEzLjQ0OTlDMTMuNzI2MSAxMy45NSAxMy45NDk5IDEzLjcyNjEgMTMuOTQ5OSAxMy40NUwxMy45NSAxMS40NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHp0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc2ODkyQzMuODQyMjIgMC44NzY4OTIgMC44NzcwNzUgMy44NDIwNCAwLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDExLjE1NzQgMy44NDIyMiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMxMS4xNTc2IDE0LjEyMjYgMTQuMTIyNyAxMS4xNTc0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDMuODQyMDQgMTEuMTU3NiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyWk03LjAwMDAzIDEuODQ4NjFDNC4xMDExNCAyLjEwMTcgMS44MjcwNyA0LjUzNTE1IDEuODI3MDcgNy40OTk3MkMxLjgyNzA3IDEwLjQ2NDMgNC4xMDExNCAxMi44OTc3IDcuMDAwMDMgMTMuMTUwOFYxLjg0ODYxWk04LjAwMDAzIDEzLjE1MDhDMTAuODk4OCAxMi44OTc2IDEzLjE3MjcgMTAuNDY0MiAxMy4xNzI3IDcuNDk5NzJDMTMuMTcyNyA0LjUzNTI0IDEwLjg5ODggMi4xMDE4NSA4LjAwMDAzIDEuODQ4NjRWMTMuMTUwOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFd0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc2ODkyQzMuODQyMjIgMC44NzY4OTIgMC44NzcwNzUgMy44NDIwNCAwLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDExLjE1NzQgMy44NDIyMiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMxMS4xNTc2IDE0LjEyMjYgMTQuMTIyNyAxMS4xNTc0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDMuODQyMDQgMTEuMTU3NiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyWk03LjQ5OTg4IDEuODI2ODlDNC4zNjY4OCAxLjgyNjkgMS44MjcwNyA0LjM2NjcyIDEuODI3MDcgNy40OTk3MkMxLjgyNzA3IDEwLjYzMjcgNC4zNjY4OCAxMy4xNzI1IDcuNDk5ODggMTMuMTcyNlYxLjgyNjg5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sR3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNSAzQzEuMjIzODYgMyAxIDMuMjIzODYgMSAzLjVDMSAzLjc3NjE0IDEuMjIzODYgNCAxLjUgNEgxMy41QzEzLjc3NjEgNCAxNCAzLjc3NjE0IDE0IDMuNUMxNCAzLjIyMzg2IDEzLjc3NjEgMyAxMy41IDNIMS41Wk0xIDcuNUMxIDcuMjIzODYgMS4yMjM4NiA3IDEuNSA3SDEzLjVDMTMuNzc2MSA3IDE0IDcuMjIzODYgMTQgNy41QzE0IDcuNzc2MTQgMTMuNzc2MSA4IDEzLjUgOEgxLjVDMS4yMjM4NiA4IDEgNy43NzYxNCAxIDcuNVpNMSAxMS41QzEgMTEuMjIzOSAxLjIyMzg2IDExIDEuNSAxMUgxMy41QzEzLjc3NjEgMTEgMTQgMTEuMjIzOSAxNCAxMS41QzE0IDExLjc3NjEgMTMuNzc2MSAxMiAxMy41IDEySDEuNUMxLjIyMzg2IDEyIDEgMTEuNzc2MSAxIDExLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxVdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi44MTEzIDEuNjQ3MDZDNi42MjE4OCAyLjg3OTE4IDYuNjgyNjggMy44ODUyMyA2Ljc2ODQ4IDUuMzA0OTlDNi43ODQxNSA1LjU2NDI2IDYuODAwNjUgNS44MzczMiA2LjgxNjYxIDYuMTI4MDhDNi44MzExMSA2LjM5MjA4IDYuNjM3NTggNi42MjE3MiA2LjM3NDk1IDYuNjUyMTdDNi4xMTIzMiA2LjY4MjYyIDUuODcxMzggNi41MDMzNCA1LjgyNTA5IDYuMjQzMDRMNS43NDc1NCA1LjgwNjk4QzUuNjQ0MDIgNS4xNjUyOSA1LjQ4MzU1IDQuMjU0ODEgNS4xNzgwNyAzLjQ0NzQxQzQuODYyNDEgMi42MTMxMiA0LjQ0ODYgMi4wNDEyMSAzLjkzNDM2IDEuODYwNDRDMy42NDk5NCAxLjc2MTA0IDMuNDE5MDEgMS44NDI3OSAzLjI1ODY4IDIuMDEwNTJDMy4wODc0NiAyLjE4OTYyIDIuOTk3NiAyLjQ3MDY1IDMuMDYyNyAyLjc1Mzk5QzMuMjE0NiAzLjM0NDI0IDMuNDQ2MjcgMy45MTY3IDMuNjk4MzYgNC41MTgwMkMzLjcyMDgyIDQuNTcxNTggMy43NDM0NiA0LjYyNTQzIDMuNzY2MjEgNC42Nzk1NEMzLjk5NTQgNS4yMjQ1NyA0LjIzNjE5IDUuNzk3MiA0LjQxNjQ0IDYuMzkwODFMNC40MTY5MSA2LjM5MjM4QzQuNTYyIDYuODc1ODYgNC42NTY0NiA3LjI1OTUgNC43MzA4NiA3LjU2MTY1QzQuNzYwMzQgNy42ODEzOCA0Ljc4NjY3IDcuNzg4MzEgNC44MTE3NSA3Ljg4MzU5QzQuODY3NjggOC4wOTYwNiA0Ljc3ODM2IDguMzIwMTQgNC41OTE2MSA4LjQzNTg4QzQuNDA0ODYgOC41NTE2MSA0LjE2NDQ1IDguNTMxODggMy45OTkwNyA4LjM4NzI1QzMuNzM3NDkgOC4xNTg0OCAzLjUxNSA3LjkyNzg0IDMuMzE4MTcgNy43MTgwMkMzLjI3NjI3IDcuNjczMzUgMy4yMzYwMiA3LjYzMDE4IDMuMTk3MDUgNy41ODgzOEMzLjA0Nzc3IDcuNDI4MjYgMi45MTcxMiA3LjI4ODEyIDIuNzgzMzQgNy4xNjAyOUMyLjQ1OTg5IDYuODUxMjIgMi4xODM5OCA2LjY4MDA0IDEuODA1ODUgNi42NDM2OUwxLjgwMzI0IDYuNjQzNDNDMS41NjExNyA2LjYxODg4IDEuNDE0MDIgNi42NjQ0MSAxLjMxNzU2IDYuNzI2MjdDMS4yMTg5OSA2Ljc4OTQ3IDEuMTE5ODggNi45MDQxNCAxLjAzNzg0IDcuMTEyM0MwLjk3NjU3NiA3LjI4NDkyIDEuMDE1MTUgNy42Mjk4NyAxLjE5MjkgNy45NjkxMUwxLjE5NzI4IDcuOTc3NDdDMS40MDA4NiA4LjM4NDUyIDEuNzQ0NzUgOC44MTU4NyAyLjE4MTQxIDkuMjkyOTlDMi4zOTczOSA5LjUyODk4IDIuNjI4NzIgOS43Njg0OSAyLjg2OTM0IDEwLjAxNzRMMi44Nzk2NiAxMC4wMjgxQzMuMTE1NDYgMTAuMjcyMSAzLjM1OTYyIDEwLjUyNDcgMy41OTcxMyAxMC43ODI3QzQuNDI4OCAxMS42ODYzIDUuMjc3MDYgMTIuNzUzOCA1LjQ2MjcgMTRIMTEuNTA4N0MxMS41NjM2IDEyLjQzNTMgMTEuODc1NiAxMS4yNjggMTIuMjg3NSAxMC4xMzQ2QzEyLjQ0NTQgOS43MDA0MSAxMi42MTIxIDkuMjg0MTIgMTIuNzgyNiA4Ljg1ODI5QzEzLjEwOTcgOC4wNDEzOSAxMy40NTA5IDcuMTg5MzcgMTMuNzcwNSA2LjEwODI0QzE0LjA5ODkgNC45OTczNyAxNC4wMDk3IDQuMzcwMzMgMTMuODYxMyA0LjAzOTg0QzEzLjcxNyAzLjcxODU4IDEzLjQ5MTQgMy42MTc4NiAxMy4zODE2IDMuNTk2MDZDMTMuMTM4MSAzLjU0Nzc0IDEzLjAzODQgMy42MDk0NyAxMi45Njk4IDMuNjc5MDFDMTIuODY3IDMuNzgzMTYgMTIuNzY5OCAzLjk4MjczIDEyLjY5MjEgNC4zMDI2OUMxMi42MTY2IDQuNjEzNDUgMTIuNTc1MiA0Ljk2NTE3IDEyLjUzMyA1LjMyNTAxTDEyLjUyOTggNS4zNTI4NUMxMi40OTI0IDUuNjcyNDIgMTIuNDUwNSA2LjAzMDE2IDEyLjM2NjUgNi4zMDA5OEMxMi4zMzgzIDYuNDA2OTkgMTIuMjgxOSA2LjUwNDA3IDEyLjE5NzkgNi41NzUzOUMxMi4xMzgyIDYuNjI2MSAxMi4wMTA0IDYuNzA4MTggMTEuODMwOSA2LjY5MzEyQzExLjU0MjQgNi42Njg5MSAxMS4zNzEyIDYuNDIxNDMgMTEuMzY1IDYuMTQ3ODNDMTEuMzU2IDUuNzU0NTQgMTEuMzg4MyA1LjM1ODY0IDExLjQwNzQgNC45NjYwOEMxMS40NDI4IDQuMjM2NDYgMTEuNDc3IDMuNTMzNyAxMS40MjQ1IDIuODM0MkwxMS40MjQyIDIuODI5MzRDMTEuMzkxNiAyLjMyOTk3IDExLjA0OTMgMi4wMDIyOCAxMC43MDA3IDEuOTIyOEMxMC41MzA1IDEuODg0MDEgMTAuMzY5IDEuOTA2MDEgMTAuMjM0NyAxLjk4MzVDMTAuMTAzIDIuMDU5NDYgOS45NTUzNSAyLjIxMzE4IDkuODU3NCAyLjUxMzk0TDkuODU2MzEgMi41MTcyNkM5LjgxNTI1IDIuNjQwNCA5Ljc3Mjk4IDIuODc3NTMgOS43MzYwNiAzLjIxMjRDOS43MDA0NCAzLjUzNTQyIDkuNjczMzcgMy45MTI3OSA5LjY1MTU2IDQuMjk0MThDOS42MzI5IDQuNjIwMzMgOS42MTc4NSA0Ljk1ODQgOS42MDQzNCA1LjI2MTk0QzkuNTg3MjggNS42NDUyOSA5LjU3MjY3IDUuOTczNTcgOS41NTYzMyA2LjE1MzJDOS41NDk4MyA2LjIyNDU5IDkuNTI5MzkgNi4yOTQ5MyA5LjQ5NTAxIDYuMzU3ODVDOS40NzM1NiA2LjM5NzExIDkuMzYxMTUgNi42MDk0NyA5LjA3MTA2IDYuNjE4NDNDOC43NzkxNyA2LjYyNzQ0IDguNjM5NzUgNi40MDA1NyA4LjYxNjk4IDYuMzU5MTlDOC41NTYzNCA2LjI0ODk5IDguNTUwNjYgNi4xMTgwNyA4LjU0NzU0IDUuOTkyODNDOC41NDQ3NCA1Ljg4MDY0IDguNTQyOTQgNS43MTc5OCA4LjU0MTc0IDUuNTQ3NjdDOC41MzkzNSA1LjIwNTgyIDguNTM5MzUgNC44MTkxOSA4LjUzOTM1IDQuNzA5NTJDOC41MzkzNSAzLjY2NTcgOC41MzgzOCAyLjY1MzcyIDguNDQ3MTQgMS42NDM3MkM4LjM5MTgzIDEuMjQxMjcgOC4wNjI3OCAxLjAwNDU1IDcuNjQzNiAxLjAwMDA1QzcuMjIzOTkgMC45OTU1NTIgNi44NzkxOCAxLjIyNzA0IDYuODExMyAxLjY0NzA2Wk05LjQxMjE5IDEuMzYxN0M5LjIxNDY5IDAuNDQ4NDg0IDguMzk5MTMgMC4wMDgxMDMyNCA3LjY1NDMzIDAuMDAwMTExNTRDNi44NjQ1MiAtMC4wMDgzNjMwOCA1Ljk4NzYxIDAuNDY1ODgxIDUuODIzNjUgMS40OTAzN0w1LjgyMzE4IDEuNDkzMzRDNS43ODIzOSAxLjc1ODQgNS43NTIyOSAyLjAxNDgxIDUuNzMwOSAyLjI2NjUyQzUuMzk0MjMgMS42NzM2NCA0LjkyNjIyIDEuMTQ4OTQgNC4yNjU1IDAuOTE2ODU5QzMuNTg2NjEgMC42NzkzMTIgMi45NDkyIDAuODg3MDg3IDIuNTM1ODIgMS4zMTk1MkMyLjEzNDE1IDEuNzM5NzEgMS45NDQzOCAyLjM2NzQyIDIuMDkwMzEgMi45ODc0NkwyLjA5MjY5IDIuOTk3MTNDMi4yNjQ3OCAzLjY2ODA4IDIuNTIzOTYgNC4zMDMxNiAyLjc3NjEzIDQuOTA0NjVDMi43OTgxNCA0Ljk1NzE3IDIuODIwMSA1LjAwOTQxIDIuODQxOTQgNS4wNjEzOUMzLjAyMTM5IDUuNDg4NDIgMy4xOTM3OCA1Ljg5ODY2IDMuMzM4NzEgNi4zMTI1NkMyLjk2NDA0IDUuOTgxNDIgMi41MTkyNSA1LjcwNzk2IDEuOTAyNzYgNS42NDg0QzEuNDg4NjUgNS42MDY2MyAxLjEwMzkxIDUuNjc1MzYgMC43Nzc4MDUgNS44ODQ0NEMwLjQ1NDIzOSA2LjA5MTkgMC4yNDA2NzEgNi40MDQwNSAwLjEwNDE4NyA2Ljc1NDA2TDAuMTAwODY4IDYuNzYyODFDLTAuMTAxODQgNy4zMTI4NiAwLjA2NjMzMTIgNy45NzE1NyAwLjMwNDg5NSA4LjQyODk3QzAuNTczNzA0IDguOTY0NzQgMC45OTYxMDQgOS40NzkwNCAxLjQ0MzcyIDkuOTY4MTNDMS42NzA0NiAxMC4yMTU5IDEuOTExMzYgMTAuNDY1MiAyLjE1MDMzIDEwLjcxMjRMMi4xNTY4MiAxMC43MTkxQzIuMzk1MjQgMTAuOTY1OCAyLjYzMjE3IDExLjIxMDkgMi44NjEzNCAxMS40NTk5QzMuODA5MzcgMTIuNDkgNC41MDAwMiAxMy40NjMyIDQuNTAwMDIgMTQuNUM0LjUwMDAyIDE0Ljc3NjEgNC43MjM4OCAxNSA1LjAwMDAyIDE1SDEyQzEyLjI3NjIgMTUgMTIuNSAxNC43NzYxIDEyLjUgMTQuNUMxMi41IDEyLjgyMTIgMTIuODAyMSAxMS42NDYyIDEzLjIyNzQgMTAuNDc2MkMxMy4zNjUzIDEwLjA5NjggMTMuNTIxNiA5LjcwNTc5IDEzLjY4NjggOS4yOTI0N0MxNC4wMjM4IDguNDQ5MjIgMTQuMzk4IDcuNTEyOTggMTQuNzI5NSA2LjM5MTc1QzE1LjA5NTYgNS4xNTMyNCAxNS4wNTU5IDQuMjU5MDQgMTQuNzczNSAzLjYzMDE3QzE0LjQ4NyAyLjk5MjA4IDEzLjk3OTggMi42OTUzIDEzLjU3NjMgMi42MTUyQzEzLjEyNzYgMi41MjYxNCAxMi43MzY3IDIuNjA0NzUgMTIuNDI2OCAyLjgzMDgxQzEyLjQyNTMgMi44MDc3MyAxMi40MjM2IDIuNzg0NjggMTIuNDIxOSAyLjc2MTY3QzEyLjM1ODcgMS44MTA1IDExLjY5MDcgMS4xMjI4NSAxMC45MjMgMC45NDc4MjFDMTAuNTM0NiAwLjg1OTI4NyAxMC4xMTExIDAuOTAwMzkzIDkuNzM1MDkgMS4xMTcyNEM5LjYxODUyIDEuMTg0NDYgOS41MTA1NSAxLjI2NjIzIDkuNDEyMTkgMS4zNjE3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguNzU0MzIgMi4wNTAyQzguNTA1NzkgMi4wNTAyIDguMzA0MzIgMi4yNTE2NyA4LjMwNDMyIDIuNTAwMkM4LjMwNDMyIDIuNzQ4NzMgOC41MDU3OSAyLjk1MDIgOC43NTQzMiAyLjk1MDJIOS45NDk5N1Y3LjA1MDA0SDUuMDQ5OTdWMi45NTAySDYuMjU0MzJDNi41MDI4NSAyLjk1MDIgNi43MDQzMiAyLjc0ODczIDYuNzA0MzIgMi41MDAyQzYuNzA0MzIgMi4yNTE2NyA2LjUwMjg1IDIuMDUwMiA2LjI1NDMyIDIuMDUwMkgyLjc1NDMyQzIuNTA1NzkgMi4wNTAyIDIuMzA0MzIgMi4yNTE2NyAyLjMwNDMyIDIuNTAwMkMyLjMwNDMyIDIuNzQ4NzMgMi41MDU3OSAyLjk1MDIgMi43NTQzMiAyLjk1MDJIMy45NDk5N1YxMi4wNTAySDIuNzU0MzJDMi41MDU3OSAxMi4wNTAyIDIuMzA0MzIgMTIuMjUxNyAyLjMwNDMyIDEyLjUwMDJDMi4zMDQzMiAxMi43NDg3IDIuNTA1NzkgMTIuOTUwMiAyLjc1NDMyIDEyLjk1MDJINi4yNTQzMkM2LjUwMjg1IDEyLjk1MDIgNi43MDQzMiAxMi43NDg3IDYuNzA0MzIgMTIuNTAwMkM2LjcwNDMyIDEyLjI1MTcgNi41MDI4NSAxMi4wNTAyIDYuMjU0MzIgMTIuMDUwMkg1LjA0OTk3VjcuOTUwMDRIOS45NDk5N1YxMi4wNTAySDguNzU0MzJDOC41MDU3OSAxMi4wNTAyIDguMzA0MzIgMTIuMjUxNyA4LjMwNDMyIDEyLjUwMDJDOC4zMDQzMiAxMi43NDg3IDguNTA1NzkgMTIuOTUwMiA4Ljc1NDMyIDEyLjk1MDJIMTIuMjU0M0MxMi41MDI4IDEyLjk1MDIgMTIuNzA0MyAxMi43NDg3IDEyLjcwNDMgMTIuNTAwMkMxMi43MDQzIDEyLjI1MTcgMTIuNTAyOCAxMi4wNTAyIDEyLjI1NDMgMTIuMDUwMkgxMS4wNVYyLjk1MDJIMTIuMjU0M0MxMi41MDI4IDIuOTUwMiAxMi43MDQzIDIuNzQ4NzMgMTIuNzA0MyAyLjUwMDJDMTIuNzA0MyAyLjI1MTY3IDEyLjUwMjggMi4wNTAyIDEyLjI1NDMgMi4wNTAySDguNzU0MzJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxZdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4xODEzIDEuNjgxNzlDNy4zNTcwNCAxLjUwNjA1IDcuNjQxOTYgMS41MDYwNSA3LjgxNzcgMS42ODE3OUwxMC4zMTc3IDQuMTgxNzlDMTAuNDkzNCA0LjM1NzUzIDEwLjQ5MzQgNC42NDI0NSAxMC4zMTc3IDQuODE4MTlDMTAuMTQyIDQuOTkzOTIgOS44NTcwNCA0Ljk5MzkyIDkuNjgxMyA0LjgxODE5TDcuOTQ5NSAzLjA4NjM4TDcuOTQ5NSAxMS45MTM2TDkuNjgxMyAxMC4xODE4QzkuODU3MDQgMTAuMDA2MSAxMC4xNDIgMTAuMDA2MSAxMC4zMTc3IDEwLjE4MThDMTAuNDkzNCAxMC4zNTc1IDEwLjQ5MzQgMTAuNjQyNCAxMC4zMTc3IDEwLjgxODJMNy44MTc3IDEzLjMxODJDNy43MzMzMSAxMy40MDI2IDcuNjE4ODUgMTMuNDUgNy40OTk1IDEzLjQ1QzcuMzgwMTUgMTMuNDUgNy4yNjU2OSAxMy40MDI2IDcuMTgxMyAxMy4zMTgyTDQuNjgxMyAxMC44MTgyQzQuNTA1NTcgMTAuNjQyNCA0LjUwNTU3IDEwLjM1NzUgNC42ODEzIDEwLjE4MThDNC44NTcwNCAxMC4wMDYxIDUuMTQxOTYgMTAuMDA2MSA1LjMxNzcgMTAuMTgxOEw3LjA0OTUgMTEuOTEzNkw3LjA0OTUgMy4wODYzOEw1LjMxNzcgNC44MTgxOUM1LjE0MTk2IDQuOTkzOTIgNC44NTcwNCA0Ljk5MzkyIDQuNjgxMyA0LjgxODE5QzQuNTA1NTcgNC42NDI0NSA0LjUwNTU3IDQuMzU3NTMgNC42ODEzIDQuMTgxNzlMNy4xODEzIDEuNjgxNzlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxLdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4wNzkyNiAwLjIyMjI1M0M3LjMxMjc1IC0wLjAwNzQzNCA3LjY4NzMgLTAuMDA3NDM0IDcuOTIwNzkgMC4yMjIyNTNMMTQuNjcwOCA2Ljg2MjI3QzE0LjkwNyA3LjA5NDY1IDE0LjkxMDEgNy40NzQ1MyAxNC42Nzc4IDcuNzEwNzZDMTQuNDQ1NCA3Ljk0NyAxNC4wNjU1IDcuOTUwMTIgMTMuODI5MyA3LjcxNzczTDEzIDYuOTAyMDFWMTIuNUMxMyAxMi43NzYxIDEyLjc3NjIgMTMgMTIuNSAxM0gyLjUwMDAyQzIuMjIzODggMTMgMi4wMDAwMiAxMi43NzYxIDIuMDAwMDIgMTIuNVY2LjkwMjAxTDEuMTcwNzkgNy43MTc3M0MwLjkzNDU1OCA3Ljk1MDEyIDAuNTU0NjcyIDcuOTQ3IDAuMzIyMjkgNy43MTA3NkMwLjA4OTkwNzkgNy40NzQ1MyAwLjA5MzAyODMgNy4wOTQ2NSAwLjMyOTI2IDYuODYyMjdMNy4wNzkyNiAwLjIyMjI1M1pNNy41MDAwMiAxLjQ5MTYzTDEyIDUuOTE4MzFWMTJIMTBWOC40OTk5OUMxMCA4LjIyMzg1IDkuNzc2MTcgNy45OTk5OSA5LjUwMDAyIDcuOTk5OTlINi41MDAwMkM2LjIyMzg4IDcuOTk5OTkgNi4wMDAwMiA4LjIyMzg1IDYuMDAwMDIgOC40OTk5OVYxMkgzLjAwMDAyVjUuOTE4MzFMNy41MDAwMiAxLjQ5MTYzWk03LjAwMDAyIDEySDkuMDAwMDJWOC45OTk5OUg3LjAwMDAyVjEyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAwLjAwMzI5NTlDNi44MDQ3MyAwLjAwMzI5NTkgNi4yNDk1MyAwLjI4MTEwNiA2LjI1IDAuNzQ5OTk1QzYuMjUgMC45OTcyNTggNi40MjQ0NiAxLjEyMDE0IDYuNTc2ODcgMS4yMjc0OUM2LjY5NTA3IDEuMzEwNzQgNi44IDEuMzg0NjUgNi44IDEuNUM2LjggMS43MDcxIDYuMDYyMjQgMS43NDI2NCA1LjE5Nzg5IDEuNzg0MjdDMy45NzU1MyAxLjg0MzE0IDIuNSAxLjkxNDIxIDIuNSAyLjVDMi41IDIuNzc2MTQgMi43MjM4NiAzIDMgM0gxMkMxMi4yNzYxIDMgMTIuNSAyLjc3NjE0IDEyLjUgMi41QzEyLjUgMS45MTQyMSAxMS4wMjQ1IDEuODQzMTQgOS44MDIxMSAxLjc4NDI3QzguOTM3NzYgMS43NDI2NCA4LjIgMS43MDcxIDguMiAxLjVDOC4yIDEuMzg0NjUgOC4zMDQ5MyAxLjMxMDc0IDguNDIzMTMgMS4yMjc0OUM4LjU3NTU0IDEuMTIwMTQgOC43NSAwLjk5NzI1OCA4Ljc1IDAuNzQ5OTk1QzguNzUwNDcgMC4yODExMDYgOC4xOTUyNyAwLjAwMzI5NTkgNy41IDAuMDAzMjk1OVpNMi44OTQ1MSA2LjEyMjY2QzIuMjU4MDYgNi41MjQ3MSAxLjkwNDE3IDcuMzExMTggMi4wMjQ3MyA4LjA1NTZMMi44MzU4OCAxMi40NzcyQzMuMDA5OTMgMTMuMzU2MiAzLjc2MjkgMTQgNC42NjA2MSAxNEgxMC4zMzczQzExLjIzNTQgMTQgMTEuOTg4NCAxMy4zNTYyIDEyLjE2MjUgMTIuNDc3MkwxMi45NzM2IDguMDU2MDdDMTMuMDg5IDcuMzIzNTggMTIuODI4NCA2LjUzMjc2IDEyLjEzMzEgNi4wOTM3M0MxMS43MjgzIDUuODMwMTMgMTEuNjQxMiA1LjMzMjMxIDEyLjEzMzEgNS4xMjc5NkMxMi44Mjg0IDQuODY0MzUgMTIuNjk0OCA0IDEyIDRIMTAuMzAwMUg2LjgwMDA1SDIuOTk5OTZDMi4zMDQ2OSA0IDIuMTk4NzggNC44OTMyOCAyLjg5NDUxIDUuMTU2ODlDMy4zODY0MiA1LjMzMjMxIDMuMjk5MzkgNS44MzAxMyAyLjg5NDUxIDYuMTIyNjZaTTguMjAwMDYgNi4yNUM4LjIwMDA2IDUuODE3NjkgOC4wODU3MiA1LjM3NjE1IDcuOTA2MzUgNUw0LjExMDkzIDVDNC4yMDYyNiA1LjIxMzEyIDQuMjQxOSA1LjQzODg5IDQuMjI5MDQgNS42NTUyMUM0LjE5NTIyIDYuMjI0MTIgMy44NDU4NyA2LjY2ODk5IDMuNDgwMTYgNi45MzMyMkwzLjQ1NDkyIDYuOTUxNDZMMy40Mjg1OCA2Ljk2ODFDMy4xMzQwNyA3LjE1NDE0IDIuOTU4MDEgNy41Mzk4OSAzLjAxMDU4IDcuODg3NDlMMy44MTc5NyAxMi4yODg2QzMuOTA1MTMgMTIuNzE1NCA0LjI2MTQ4IDEzIDQuNjYwNjEgMTNIMTAuMzM3M0MxMC43MzcgMTMgMTEuMDkzMiAxMi43MTUzIDExLjE4MDQgMTIuMjg4NkwxMS45ODc0IDcuODg5OEMxMi4wNDggNy40ODI0NyAxMS44OTU0IDcuMTI2MzEgMTEuNTk5MiA2LjkzOTI3TDExLjU4NzUgNi45MzE4NEwxMS41ODc1IDYuOTMxNzZDMTEuMTk0NyA2LjY3NjAyIDEwLjgzMzEgNi4yMjc4NSAxMC43OTg2IDUuNjQ3OThDMTAuNzg0NiA1LjQxMiAxMC44MjY0IDUuMTkzOTcgMTAuOTExMiA1SDkuMDU1MTdDOS4wMTk4NyA1LjE0NjExIDkuMDAwMDYgNS4zMTIwMSA5LjAwMDA2IDUuNUM5LjAwMDA2IDUuOTc0NSA5LjIxNjc5IDYuMzcxMjcgOS40NDM2NyA2Ljc4NjYyQzkuNjkyODQgNy4yNDI3OCA5Ljk1NDI1IDcuNzIxMzYgOS45NTQyNSA4LjM0OTkzQzkuOTU0MjUgOS4yNjk4IDkuNDk4NjggOS44NDIwNSA4LjYyMTg5IDkuODQyMDVDOC4xMzIwNiA5Ljg0MjA1IDcuNTc4MTggOS40NjA5NyA3LjU3ODE4IDguNzU3ODFDNy41NzgxOCA4LjM1Mjc5IDcuNzE1NTggOC4wMTY0NiA3Ljg2MTIxIDcuNjU5OThDOC4wMjU0IDcuMjU4MDYgOC4yMDAwNiA2LjgzMDUxIDguMjAwMDYgNi4yNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFF0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNCAxMS4wMDAxVjQuMDAwMDZMMSA0LjAwMDA2TDEgMTEuMDAwMUgxNFpNMTUgNC4wMDAwNlYxMS4wMDAxQzE1IDExLjU1MjMgMTQuNTUyMyAxMi4wMDAxIDE0IDEyLjAwMDFIMUMwLjQ0NzcxNSAxMi4wMDAxIDAgMTEuNTUyMyAwIDExLjAwMDFWNC4wMDAwNkMwIDMuNDQ3NzggMC40NDc3MTUgMy4wMDAwNiAxIDMuMDAwMDZIMTRDMTQuNTUyMyAzLjAwMDA2IDE1IDMuNDQ3NzggMTUgNC4wMDAwNlpNMiA1LjI1QzIgNS4xMTE5MyAyLjExMTkzIDUgMi4yNSA1SDUuNzVDNS44ODgwNyA1IDYgNS4xMTE5MyA2IDUuMjVWOS43NUM2IDkuODg4MDcgNS44ODgwNyAxMCA1Ljc1IDEwSDIuMjVDMi4xMTE5MyAxMCAyIDkuODg4MDcgMiA5Ljc1VjUuMjVaTTcuNSA3QzcuMjIzODYgNyA3IDcuMjIzODYgNyA3LjVDNyA3Ljc3NjE0IDcuMjIzODYgOCA3LjUgOEgxMC41QzEwLjc3NjEgOCAxMSA3Ljc3NjE0IDExIDcuNUMxMSA3LjIyMzg2IDEwLjc3NjEgNyAxMC41IDdINy41Wk03IDkuNUM3IDkuMjIzODYgNy4yMjM4NiA5IDcuNSA5SDEyLjVDMTIuNzc2MSA5IDEzIDkuMjIzODYgMTMgOS41QzEzIDkuNzc2MTQgMTIuNzc2MSAxMCAxMi41IDEwSDcuNUM3LjIyMzg2IDEwIDcgOS43NzYxNCA3IDkuNVpNNy41IDVDNy4yMjM4NiA1IDcgNS4yMjM4NiA3IDUuNUM3IDUuNzc2MTQgNy4yMjM4NiA2IDcuNSA2SDExLjVDMTEuNzc2MSA2IDEyIDUuNzc2MTQgMTIgNS41QzEyIDUuMjIzODYgMTEuNzc2MSA1IDExLjUgNUg3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxKdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi41IDFIMTIuNUMxMy4zMjg0IDEgMTQgMS42NzE1NyAxNCAyLjVWMTIuNUMxNCAxMy4zMjg0IDEzLjMyODQgMTQgMTIuNSAxNEgyLjVDMS42NzE1NyAxNCAxIDEzLjMyODQgMSAxMi41VjIuNUMxIDEuNjcxNTcgMS42NzE1NyAxIDIuNSAxWk0yLjUgMkMyLjIyMzg2IDIgMiAyLjIyMzg2IDIgMi41VjguMzYzNkwzLjY4MTggNi42ODE4QzMuNzY4MDkgNi41OTU1MSAzLjg4NTcyIDYuNTQ3OTcgNC4wMDc3NCA2LjU1MDA3QzQuMTI5NzUgNi41NTIxNiA0LjI0NTY4IDYuNjAzNzIgNC4zMjg5NSA2LjY5MjkzTDcuODczNTUgMTAuNDkwMUwxMC42ODE4IDcuNjgxOEMxMC44NTc1IDcuNTA2MDcgMTEuMTQyNSA3LjUwNjA3IDExLjMxODIgNy42ODE4TDEzIDkuMzYzNlYyLjVDMTMgMi4yMjM4NiAxMi43NzYxIDIgMTIuNSAySDIuNVpNMiAxMi41VjkuNjM2NEwzLjk4ODg3IDcuNjQ3NTNMNy41MzExIDExLjQ0MjFMOC45NDExMyAxM0gyLjVDMi4yMjM4NiAxMyAyIDEyLjc3NjEgMiAxMi41Wk0xMi41IDEzSDEwLjE1NUw4LjQ4MzM2IDExLjE1M0wxMSA4LjYzNjRMMTMgMTAuNjM2NFYxMi41QzEzIDEyLjc3NjEgMTIuNzc2MSAxMyAxMi41IDEzWk02LjY0OTIyIDUuNUM2LjY0OTIyIDUuMDMwMTMgNy4wMzAxMyA0LjY0OTIyIDcuNSA0LjY0OTIyQzcuOTY5ODcgNC42NDkyMiA4LjM1MDc4IDUuMDMwMTMgOC4zNTA3OCA1LjVDOC4zNTA3OCA1Ljk2OTg3IDcuOTY5ODcgNi4zNTA3OCA3LjUgNi4zNTA3OEM3LjAzMDEzIDYuMzUwNzggNi42NDkyMiA1Ljk2OTg3IDYuNjQ5MjIgNS41Wk03LjUgMy43NDkyMkM2LjUzMzA3IDMuNzQ5MjIgNS43NDkyMiA0LjUzMzA3IDUuNzQ5MjIgNS41QzUuNzQ5MjIgNi40NjY5MyA2LjUzMzA3IDcuMjUwNzggNy41IDcuMjUwNzhDOC40NjY5MyA3LjI1MDc4IDkuMjUwNzggNi40NjY5MyA5LjI1MDc4IDUuNUM5LjI1MDc4IDQuNTMzMDcgOC40NjY5MyAzLjc0OTIyIDcuNSAzLjc0OTIyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzY4OTJDMy44NDIyMiAwLjg3Njg5MiAwLjg3NzA3NSAzLjg0MjA0IDAuODc3MDc1IDcuNDk5NzJDMC44NzcwNzUgMTEuMTU3NCAzLjg0MjIyIDE0LjEyMjYgNy40OTk5MSAxNC4xMjI2QzExLjE1NzYgMTQuMTIyNiAxNC4xMjI3IDExLjE1NzQgMTQuMTIyNyA3LjQ5OTcyQzE0LjEyMjcgMy44NDIwNCAxMS4xNTc2IDAuODc2ODkyIDcuNDk5OTEgMC44NzY4OTJaTTEuODI3MDcgNy40OTk3MkMxLjgyNzA3IDQuMzY2NzEgNC4zNjY4OSAxLjgyNjg5IDcuNDk5OTEgMS44MjY4OUMxMC42MzI5IDEuODI2ODkgMTMuMTcyNyA0LjM2NjcxIDEzLjE3MjcgNy40OTk3MkMxMy4xNzI3IDEwLjYzMjcgMTAuNjMyOSAxMy4xNzI2IDcuNDk5OTEgMTMuMTcyNkM0LjM2Njg5IDEzLjE3MjYgMS44MjcwNyAxMC42MzI3IDEuODI3MDcgNy40OTk3MlpNOC4yNDk5MiA0LjQ5OTk5QzguMjQ5OTIgNC45MTQyIDcuOTE0MTMgNS4yNDk5OSA3LjQ5OTkyIDUuMjQ5OTlDNy4wODU3MSA1LjI0OTk5IDYuNzQ5OTIgNC45MTQyIDYuNzQ5OTIgNC40OTk5OUM2Ljc0OTkyIDQuMDg1NzcgNy4wODU3MSAzLjc0OTk5IDcuNDk5OTIgMy43NDk5OUM3LjkxNDEzIDMuNzQ5OTkgOC4yNDk5MiA0LjA4NTc3IDguMjQ5OTIgNC40OTk5OVpNNi4wMDAwMyA1Ljk5OTk5SDYuNTAwMDNINy41MDAwM0M3Ljc3NjE4IDUuOTk5OTkgOC4wMDAwMyA2LjIyMzg0IDguMDAwMDMgNi40OTk5OVY5Ljk5OTk5SDguNTAwMDNIOS4wMDAwM1YxMUg4LjUwMDAzSDcuNTAwMDNINi41MDAwM0g2LjAwMDAzVjkuOTk5OTlINi41MDAwM0g3LjAwMDAzVjYuOTk5OTlINi41MDAwM0g2LjAwMDAzVjUuOTk5OTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx0bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi41IDFDNi4yMjM4NiAxIDYgMS4yMjM4NiA2IDEuNUM2IDEuNzc2MTQgNi4yMjM4NiAyIDYuNSAyQzcuMTI2NzEgMiA3LjQ1NzE4IDIuMjAwMjggNy42NTU2MyAyLjQ3ODEyQzcuODc4MSAyLjc4OTU3IDggMy4yODgzNyA4IDRWMTFDOCAxMS43MTE2IDcuODc4MSAxMi4yMTA0IDcuNjU1NjMgMTIuNTIxOUM3LjQ1NzE4IDEyLjc5OTcgNy4xMjY3MSAxMyA2LjUgMTNDNi4yMjM4NiAxMyA2IDEzLjIyMzkgNiAxMy41QzYgMTMuNzc2MSA2LjIyMzg2IDE0IDYuNSAxNEM3LjM3MzI5IDE0IDguMDQyODIgMTMuNzAwMyA4LjQ2OTM3IDEzLjEwMzFDOC40Nzk3NiAxMy4wODg2IDguNDg5OTcgMTMuMDczOSA4LjUgMTMuMDU5MUM4LjUxMDAzIDEzLjA3MzkgOC41MjAyNCAxMy4wODg2IDguNTMwNjMgMTMuMTAzMUM4Ljk1NzE4IDEzLjcwMDMgOS42MjY3MSAxNCAxMC41IDE0QzEwLjc3NjEgMTQgMTEgMTMuNzc2MSAxMSAxMy41QzExIDEzLjIyMzkgMTAuNzc2MSAxMyAxMC41IDEzQzkuODczMjkgMTMgOS41NDI4MiAxMi43OTk3IDkuMzQ0MzcgMTIuNTIxOUM5LjEyMTkgMTIuMjEwNCA5IDExLjcxMTYgOSAxMVY0QzkgMy4yODgzNyA5LjEyMTkgMi43ODk1NyA5LjM0NDM3IDIuNDc4MTJDOS41NDI4MiAyLjIwMDI4IDkuODczMjkgMiAxMC41IDJDMTAuNzc2MSAyIDExIDEuNzc2MTQgMTEgMS41QzExIDEuMjIzODYgMTAuNzc2MSAxIDEwLjUgMUM5LjYyNjcxIDEgOC45NTcxOCAxLjI5OTcyIDguNTMwNjMgMS44OTY4OEM4LjUyMDI0IDEuOTExNDMgOC41MTAwMyAxLjkyNjExIDguNSAxLjk0MDlDOC40ODk5NyAxLjkyNjExIDguNDc5NzYgMS45MTE0MyA4LjQ2OTM3IDEuODk2ODhDOC4wNDI4MiAxLjI5OTcyIDcuMzczMjkgMSA2LjUgMVpNMTQgNUgxMVY0SDE0QzE0LjU1MjMgNCAxNSA0LjQ0NzcyIDE1IDVWMTBDMTUgMTAuNTUyMyAxNC41NTIzIDExIDE0IDExSDExVjEwSDE0VjVaTTYgNFY1SDFMMSAxMEg2VjExSDFDMC40NDc3MTUgMTEgMCAxMC41NTIzIDAgMTBWNUMwIDQuNDQ3NzIgMC40NDc3MTUgNCAxIDRINlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjQ5OTk4IDAuNUM1LjQ5OTk4IDAuMjIzODU4IDUuNzIzODMgMCA1Ljk5OTk4IDBINy40OTk5OEg4Ljk5OTk4QzkuMjc2MTIgMCA5LjQ5OTk4IDAuMjIzODU4IDkuNDk5OTggMC41QzkuNDk5OTggMC43NzYxNDIgOS4yNzYxMiAxIDguOTk5OTggMUg3Ljk5OTk4VjIuMTE5MjJDOS4wOTgzMiAyLjIwNDA5IDEwLjExOSAyLjU2NjIyIDEwLjk5MiAzLjEzNTcyQzExLjAxMTYgMy4xMDg1MSAxMS4wMzM2IDMuMDgyNTIgMTEuMDU4IDMuMDU4MDZMMTIuMDU4IDIuMDU4MDZDMTIuMzAyMSAxLjgxMzk4IDEyLjY5NzggMS44MTM5OCAxMi45NDE5IDIuMDU4MDZDMTMuMTg2IDIuMzAyMTQgMTMuMTg2IDIuNjk3ODYgMTIuOTQxOSAyLjk0MTk0TDExLjk2NyAzLjkxNjgyQzEzLjE1OTUgNS4wNzkyNSAxMy45IDYuNzAzMTQgMTMuOSA4LjQ5OTk4QzEzLjkgMTIuMDM0NiAxMS4wMzQ2IDE0LjkgNy40OTk5OCAxNC45QzMuOTY1MzUgMTQuOSAxLjA5OTk4IDEyLjAzNDYgMS4wOTk5OCA4LjQ5OTk4QzEuMDk5OTggNS4xMzM2MSAzLjY5OTA0IDIuMzc0MyA2Ljk5OTk4IDIuMTE5MjJWMUg1Ljk5OTk4QzUuNzIzODMgMSA1LjQ5OTk4IDAuNzc2MTQyIDUuNDk5OTggMC41Wk0yLjA5OTk4IDguNDk5OThDMi4wOTk5OCA1LjUxNzY0IDQuNTE3NjQgMy4wOTk5OCA3LjQ5OTk4IDMuMDk5OThDMTAuNDgyMyAzLjA5OTk4IDEyLjkgNS41MTc2NCAxMi45IDguNDk5OThDMTIuOSAxMS40ODIzIDEwLjQ4MjMgMTMuOSA3LjQ5OTk4IDEzLjlDNC41MTc2NCAxMy45IDIuMDk5OTggMTEuNDgyMyAyLjA5OTk4IDguNDk5OThaTTcuNDk5OTggOC40OTk5OFY0LjA5OTk4QzUuMDY5OTIgNC4wOTk5OCAzLjA5OTk4IDYuMDY5OTIgMy4wOTk5OCA4LjQ5OTk4QzMuMDk5OTggMTAuOTMgNS4wNjk5MiAxMi45IDcuNDk5OTggMTIuOUM4LjcxNSAxMi45IDkuODE1IDEyLjQwNzUgMTAuNjExMiAxMS42MTEyTDcuNDk5OTggOC40OTk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHJuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03Ljc1NDMyIDAuODE5NTM3QzcuNTk3NDIgMC43MjY4MjEgNy40MDI1IDAuNzI2ODIxIDcuMjQ1NTkgMC44MTk1MzdMMS43NDU1OSA0LjA2OTU0QzEuNTkzMzYgNC4xNTk0OSAxLjQ5OTk2IDQuMzIzMTcgMS40OTk5NiA0LjVDMS40OTk5NiA0LjY3NjgzIDEuNTkzMzYgNC44NDA1MSAxLjc0NTU5IDQuOTMwNDZMNy4yNDU1OSA4LjE4MDQ2QzcuNDAyNSA4LjI3MzE4IDcuNTk3NDIgOC4yNzMxOCA3Ljc1NDMyIDguMTgwNDZMMTMuMjU0MyA0LjkzMDQ2QzEzLjQwNjYgNC44NDA1MSAxMy41IDQuNjc2ODMgMTMuNSA0LjVDMTMuNSA0LjMyMzE3IDEzLjQwNjYgNC4xNTk0OSAxMy4yNTQzIDQuMDY5NTRMNy43NTQzMiAwLjgxOTUzN1pNNy40OTk5NiA3LjE2OTIzTDIuOTgyOCA0LjVMNy40OTk5NiAxLjgzMDc3TDEyLjAxNzEgNC41TDcuNDk5OTYgNy4xNjkyM1pNMS41Njk1IDcuNDk1NjRDMS43MDk5OCA3LjI1NzkgMi4wMTY1OSA3LjE3OTA2IDIuMjU0MzIgNy4zMTk1NEw3LjQ5OTk2IDEwLjQxOTJMMTIuNzQ1NiA3LjMxOTU0QzEyLjk4MzMgNy4xNzkwNiAxMy4yODk5IDcuMjU3OSAxMy40MzA0IDcuNDk1NjRDMTMuNTcwOSA3LjczMzM3IDEzLjQ5MjEgOC4wMzk5OCAxMy4yNTQzIDguMTgwNDZMNy43NTQzMiAxMS40MzA1QzcuNTk3NDIgMTEuNTIzMiA3LjQwMjUgMTEuNTIzMiA3LjI0NTU5IDExLjQzMDVMMS43NDU1OSA4LjE4MDQ2QzEuNTA3ODYgOC4wMzk5OCAxLjQyOTAxIDcuNzMzMzcgMS41Njk1IDcuNDk1NjRaTTEuNTY5NDkgMTAuNDk1NkMxLjcwOTk4IDEwLjI1NzkgMi4wMTY1OCAxMC4xNzkxIDIuMjU0MzIgMTAuMzE5NUw3LjQ5OTk2IDEzLjQxOTJMMTIuNzQ1NiAxMC4zMTk1QzEyLjk4MzMgMTAuMTc5MSAxMy4yODk5IDEwLjI1NzkgMTMuNDMwNCAxMC40OTU2QzEzLjU3MDkgMTAuNzMzNCAxMy40OTIxIDExLjA0IDEzLjI1NDMgMTEuMTgwNUw3Ljc1NDMyIDE0LjQzMDVDNy41OTc0MiAxNC41MjMyIDcuNDAyNSAxNC41MjMyIDcuMjQ1NTkgMTQuNDMwNUwxLjc0NTU5IDExLjE4MDVDMS41MDc4NSAxMS4wNCAxLjQyOTAxIDEwLjczMzQgMS41Njk0OSAxMC40OTU2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sb249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkgMkg2VjEzSDlWMlpNMTAgMlYxM0gxMi41QzEyLjc3NjEgMTMgMTMgMTIuNzc2MSAxMyAxMi41VjIuNUMxMyAyLjIyMzg2IDEyLjc3NjEgMiAxMi41IDJIMTBaTTIuNSAySDVWMTNIMi41QzIuMjIzODYgMTMgMiAxMi43NzYxIDIgMTIuNVYyLjVDMiAyLjIyMzg2IDIuMjIzODYgMiAyLjUgMlpNMi41IDFDMS42NzE1NyAxIDEgMS42NzE1NyAxIDIuNVYxMi41QzEgMTMuMzI4NCAxLjY3MTU3IDE0IDIuNSAxNEgxMi41QzEzLjMyODQgMTQgMTQgMTMuMzI4NCAxNCAxMi41VjIuNUMxNCAxLjY3MTU3IDEzLjMyODQgMSAxMi41IDFIMi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNjg5NzkgMi43NUMzLjg5NjY3IDIuNzQ5NzkgNC4wODIzMiAyLjg3NzAxIDQuMTU2NzkgMy4wNzAwM0w3LjM2NjYyIDExLjM5QzcuNDY2MDIgMTEuNjQ3NyA3LjMzNzc0IDExLjkzNzEgNy4wODAxIDEyLjAzNjVDNi44MjI0NyAxMi4xMzU5IDYuNTMzMDQgMTIuMDA3NiA2LjQzMzY1IDExLjc1TDUuMzgyNSA5LjAyNTM3SDIuMDExMzNMMC45NjY5OTIgMTEuNzQ5QzAuODY4MTI4IDEyLjAwNjggMC41Nzg5NjQgMTIuMTM1NyAwLjMyMTEyNiAxMi4wMzY5QzAuMDYzMjg3OCAxMS45MzggLTAuMDY1NTg2NCAxMS42NDg4IDAuMDMzMjc3NCAxMS4zOTFMMy4yMjM0NCAzLjA3MDk5QzMuMjk3NTEgMi44Nzc4MiAzLjQ4MjkgMi43NTAyMSAzLjY4OTc5IDIuNzVaTTMuNjkxNzQgNC42NDI4NEw1LjA1NDU4IDguMTc1MzdIMi4zMzcyNEwzLjY5MTc0IDQuNjQyODRaTTEwLjg5ODkgNS4yMDcwM0M5LjI1ODE4IDUuMjA3MDMgOC4wMDkxNSA2LjY4NTY5IDguMDA5MTUgOC42MDk3MkM4LjAwOTE1IDEwLjYzMzcgOS4zNTgxOCAxMi4wMTI0IDEwLjg5ODkgMTIuMDEyNEMxMS43MjE0IDEyLjAxMjQgMTIuNTc0NCAxMS42NjkyIDEzLjE1NDMgMTEuMDIxOVYxMS41M0MxMy4xNTQzIDExLjc3ODUgMTMuMzU1NyAxMS45OCAxMy42MDQzIDExLjk4QzEzLjg1MjggMTEuOTggMTQuMDU0MyAxMS43Nzg1IDE0LjA1NDMgMTEuNTNWNS43MkMxNC4wNTQzIDUuNDcxNDcgMTMuODUyOCA1LjI3IDEzLjYwNDMgNS4yN0MxMy4zNTU3IDUuMjcgMTMuMTU0MyA1LjQ3MTQ3IDEzLjE1NDMgNS43MlY2LjIyMzE3QzEyLjYwNTQgNS42MDA5NSAxMS43OTI0IDUuMjA3MDMgMTAuODk4OSA1LjIwNzAzWk0xMy4xNTQzIDkuNzk4MjNWNy4zMDE5NUMxMi43NjM5IDYuNTgxMDEgMTEuOTQxNCA2LjA1NzU3IDExLjA4NjggNi4wNTc1N0MxMC4xMDg4IDYuMDU3NTcgOS4wMzUwMyA2Ljk2NTgxIDkuMDM1MDMgOC42MDk1NUM5LjAzNTAzIDEwLjE1MzMgMTAuMDA4OCAxMS4xNjE1IDExLjA4NjggMTEuMTYxNUMxMS45NzAxIDExLjE2MTUgMTIuNzcxOSAxMC40OTUyIDEzLjE1NDMgOS43OTgyM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGxuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjY5ODk5IDUuMjA3MDNDMi4wNTgyMyA1LjIwNzAzIDAuODA5MjA0IDYuNjg1NjkgMC44MDkyMDQgOC42MDk3MkMwLjgwOTIwNCAxMC42MzM3IDIuMTU4MjMgMTIuMDEyNCAzLjY5ODk5IDEyLjAxMjRDNC41MjEyNiAxMi4wMTI0IDUuMzc0MDIgMTEuNjY5MyA1Ljk1MzkgMTEuMDIyM1YxMS41M0M1Ljk1MzkgMTEuNzc4NSA2LjE1NTM3IDExLjk4IDYuNDAzOSAxMS45OEM2LjY1MjQzIDExLjk4IDYuODUzOSAxMS43Nzg1IDYuODUzOSAxMS41M1Y1LjcyMDAxQzYuODUzOSA1LjQ3MTQ5IDYuNjUyNDMgNS4yNzAwMSA2LjQwMzkgNS4yNzAwMUM2LjE1NTM3IDUuMjcwMDEgNS45NTM5IDUuNDcxNDkgNS45NTM5IDUuNzIwMDFWNi4yMjI2OUM1LjQwNTA2IDUuNjAwNzUgNC41OTIxOCA1LjIwNzAzIDMuNjk4OTkgNS4yMDcwM1pNNS45NTM5IDkuNzk5VjcuMzAxMTdDNS41NjMzOSA2LjU4MDY0IDQuNzQxMTggNi4wNTc1NyAzLjg4NjggNi4wNTc1N0MyLjkwODkgNi4wNTc1NyAxLjgzNTA4IDYuOTY1ODEgMS44MzUwOCA4LjYwOTU1QzEuODM1MDggMTAuMTUzMyAyLjgwODg5IDExLjE2MTUgMy44ODY4IDExLjE2MTVDNC43Njk4NCAxMS4xNjE1IDUuNTcxNDEgMTAuNDk1NyA1Ljk1MzkgOS43OTlaTTEwLjc5OSA1LjIwNzAzQzkuMTU4MjMgNS4yMDcwMyA3LjkwOTIgNi42ODU2OSA3LjkwOTIgOC42MDk3MkM3LjkwOTIgMTAuNjMzNyA5LjI1ODIzIDEyLjAxMjQgMTAuNzk5IDEyLjAxMjRDMTEuNjIxNSAxMi4wMTI0IDEyLjQ3NDQgMTEuNjY5MiAxMy4wNTQzIDExLjAyMThWMTEuNTNDMTMuMDU0MyAxMS43Nzg1IDEzLjI1NTggMTEuOTggMTMuNTA0MyAxMS45OEMxMy43NTI5IDExLjk4IDEzLjk1NDMgMTEuNzc4NSAxMy45NTQzIDExLjUzVjUuNzJDMTMuOTU0MyA1LjQ3MTQ3IDEzLjc1MjkgNS4yNyAxMy41MDQzIDUuMjdDMTMuMjU1OCA1LjI3IDEzLjA1NDMgNS40NzE0NyAxMy4wNTQzIDUuNzJWNi4yMjMxOEMxMi41MDU1IDUuNjAwOTUgMTEuNjkyNCA1LjIwNzAzIDEwLjc5OSA1LjIwNzAzWk0xMy4wNTQzIDkuNzk4MjJWNy4zMDE5NkMxMi42NjQgNi41ODEwMiAxMS44NDE1IDYuMDU3NTcgMTAuOTg2OCA2LjA1NzU3QzEwLjAwODkgNi4wNTc1NyA4LjkzNTA4IDYuOTY1ODEgOC45MzUwOCA4LjYwOTU1QzguOTM1MDggMTAuMTUzMyA5LjkwODg5IDExLjE2MTUgMTAuOTg2OCAxMS4xNjE1QzExLjg3MDIgMTEuMTYxNSAxMi42NzIgMTAuNDk1MiAxMy4wNTQzIDkuNzk4MjJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxjbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEuMjg5NSAyLjc1QzExLjQ5NjQgMi43NDk3OSAxMS42ODIxIDIuODc3MDEgMTEuNzU2NSAzLjA3MDAzTDE0Ljk2NjQgMTEuMzlDMTUuMDY1NyAxMS42NDc3IDE0LjkzNzUgMTEuOTM3MSAxNC42Nzk4IDEyLjAzNjVDMTQuNDIyMiAxMi4xMzU5IDE0LjEzMjggMTIuMDA3NiAxNC4wMzM0IDExLjc1TDEyLjk4MjIgOS4wMjUzN0g5LjYxMTA2TDguNTY2NzIgMTEuNzQ5QzguNDY3ODYgMTIuMDA2OCA4LjE3ODcgMTIuMTM1NyA3LjkyMDg2IDEyLjAzNjlDNy42NjMwMiAxMS45MzggNy41MzQxNCAxMS42NDg4IDcuNjMzMDEgMTEuMzkxTDEwLjgyMzIgMy4wNzA5OUMxMC44OTcyIDIuODc3ODIgMTEuMDgyNiAyLjc1MDIxIDExLjI4OTUgMi43NVpNMTEuMjkxNSA0LjY0Mjg0TDEyLjY1NDMgOC4xNzUzN0g5LjkzNjk4TDExLjI5MTUgNC42NDI4NFpNMi44OTg5NSA1LjIwNzAzQzEuMjU4MTggNS4yMDcwMyAwLjAwOTE1NTI3IDYuNjg1NjkgMC4wMDkxNTUyNyA4LjYwOTcyQzAuMDA5MTU1MjcgMTAuNjMzNyAxLjM1ODE4IDEyLjAxMjQgMi44OTg5NSAxMi4wMTI0QzMuNzIxNDEgMTIuMDEyNCA0LjU3NDM4IDExLjY2OTIgNS4xNTQyNyAxMS4wMjE5VjExLjUzQzUuMTU0MjcgMTEuNzc4NSA1LjM1NTc0IDExLjk4IDUuNjA0MjcgMTEuOThDNS44NTI4IDExLjk4IDYuMDU0MjcgMTEuNzc4NSA2LjA1NDI3IDExLjUzVjUuNzJDNi4wNTQyNyA1LjQ3MTQ3IDUuODUyOCA1LjI3IDUuNjA0MjcgNS4yN0M1LjM1NTc0IDUuMjcgNS4xNTQyNyA1LjQ3MTQ3IDUuMTU0MjcgNS43MlY2LjIyMzE3QzQuNjA1NDMgNS42MDA5NSAzLjc5MjM2IDUuMjA3MDMgMi44OTg5NSA1LjIwNzAzWk01LjE1NDI3IDkuNzk4MjNWNy4zMDE5NUM0Ljc2MzkzIDYuNTgxMDEgMy45NDE0NCA2LjA1NzU3IDMuMDg2NzUgNi4wNTc1N0MyLjEwODg1IDYuMDU3NTcgMS4wMzUwMyA2Ljk2NTgxIDEuMDM1MDMgOC42MDk1NUMxLjAzNTAzIDEwLjE1MzMgMi4wMDg4NSAxMS4xNjE1IDMuMDg2NzUgMTEuMTYxNUMzLjk3MDExIDExLjE2MTUgNC43NzE5NSAxMC40OTUyIDUuMTU0MjcgOS43OTgyM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHNuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjYyNTUgMi43NUMzLjgzNDc4IDIuNzUgNC4wMjE5MiAyLjg4MDM0IDQuMDk0NDggMy4wNzY2NEw3LjE2OTg1IDExLjM5NjJDNy4yNjU2IDExLjY1NTIgNy4xMzMyNCAxMS45NDI4IDYuODc0MjMgMTIuMDM4NkM2LjYxNTIyIDEyLjEzNDMgNi4zMjc2MyAxMi4wMDIgNi4yMzE4OCAxMS43NDI5TDUuMjIzODcgOS4wMTYwM0gyLjAyNzEyTDEuMDE5MTEgMTEuNzQyOUMwLjkyMzM2MiAxMi4wMDIgMC42MzU3NzQgMTIuMTM0MyAwLjM3Njc2MiAxMi4wMzg2QzAuMTE3NzQ5IDExLjk0MjggLTAuMDE0NjA1MiAxMS42NTUyIDAuMDgxMTQwMSAxMS4zOTYyTDMuMTU2NTEgMy4wNzY2NEMzLjIyOTA4IDIuODgwMzQgMy40MTYyMSAyLjc1IDMuNjI1NSAyLjc1Wk0zLjYyNTUgNC42OTIwN0w0LjkwOTY2IDguMTY2MDNIMi4zNDEzM0wzLjYyNTUgNC42OTIwN1pNMTEuMzcxOSAyLjc1QzExLjU4MTEgMi43NSAxMS43NjgzIDIuODgwMzQgMTEuODQwOCAzLjA3NjY0TDE0LjkxNjIgMTEuMzk2MkMxNS4wMTIgMTEuNjU1MiAxNC44Nzk2IDExLjk0MjggMTQuNjIwNiAxMi4wMzg2QzE0LjM2MTYgMTIuMTM0MyAxNC4wNzQgMTIuMDAyIDEzLjk3ODIgMTEuNzQyOUwxMi45NzAyIDkuMDE2MDNIOS43NzM0OEw4Ljc2NTQ3IDExLjc0MjlDOC42Njk3MiAxMi4wMDIgOC4zODIxMyAxMi4xMzQzIDguMTIzMTIgMTIuMDM4NkM3Ljg2NDExIDExLjk0MjggNy43MzE3NSAxMS42NTUyIDcuODI3NSAxMS4zOTYyTDEwLjkwMjkgMy4wNzY2NEMxMC45NzU0IDIuODgwMzQgMTEuMTYyNiAyLjc1IDExLjM3MTkgMi43NVpNMTEuMzcxOSA0LjY5MjA3TDEyLjY1NiA4LjE2NjAzSDEwLjA4NzdMMTEuMzcxOSA0LjY5MjA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNTUyOTMgMC45OTk5NjlDNC43NTI5NSAwLjk5OTk2OSA0LjkzMzcyIDEuMTE5MTcgNS4wMTI1IDEuMzAzMDFMOC4wMTEwNiA4LjI5OTgyQzguMTE5ODQgOC41NTM2MyA4LjAwMjI2IDguODQ3NTcgNy43NDg0NCA4Ljk1NjM1QzcuNDk0NjMgOS4wNjUxMiA3LjIwMDY5IDguOTQ3NTQgNy4wOTE5MSA4LjY5MzczTDYuMTE2MTMgNi40MTY4NUgyLjk4OTczTDIuMDEzOTUgOC42OTM3M0MxLjkwNTE3IDguOTQ3NTQgMS42MTEyMyA5LjA2NTEyIDEuMzU3NDIgOC45NTYzNUMxLjEwMzYgOC44NDc1NyAwLjk4NjAyMyA4LjU1MzYzIDEuMDk0OCA4LjI5OTgyTDQuMDkzMzYgMS4zMDMwMUM0LjE3MjE0IDEuMTE5MTcgNC4zNTI5MSAwLjk5OTk2OSA0LjU1MjkzIDAuOTk5OTY5Wk00LjU1MjkzIDIuNzY5MjlMNS43NTE4NiA1LjU2Njg1SDMuMzU0TDQuNTUyOTMgMi43NjkyOVpNMTEuMDU2MiA5LjAwMjE0QzExLjI2MTcgOS4wMDIxNCAxMS40NDYzIDguODc2MzMgMTEuNTIxNSA4LjY4NTAyTDE0LjI3MzMgMS42ODI5OUMxNC4zNzQzIDEuNDI1OTggMTQuMjQ3OCAxLjEzNTc1IDEzLjk5MDggMS4wMzQ3NUMxMy43MzM4IDAuOTMzNzQ3IDEzLjQ0MzYgMS4wNjAyMSAxMy4zNDI2IDEuMzE3MjJMMTEuMDU2MiA3LjEzNTE0TDguNzY5NzMgMS4zMTcyMkM4LjY2ODczIDEuMDYwMjEgOC4zNzg1IDAuOTMzNzQ3IDguMTIxNSAxLjAzNDc1QzcuODY0NDkgMS4xMzU3NSA3LjczODAyIDEuNDI1OTggNy44MzkwMiAxLjY4Mjk5TDEwLjU5MDggOC42ODUwMkMxMC42NjYgOC44NzYzMyAxMC44NTA2IDkuMDAyMTQgMTEuMDU2MiA5LjAwMjE0Wk0xNC45NTM3IDEyLjQ5OTlDMTQuOTUzNyAxMi42MDYgMTQuOTExNSAxMi43MDc3IDE0LjgzNjUgMTIuNzgyOEwxMi44MzY1IDE0Ljc4MjhDMTIuNjgwMyAxNC45MzkgMTIuNDI3MSAxNC45MzkgMTIuMjcwOCAxNC43ODI4QzEyLjExNDYgMTQuNjI2NSAxMi4xMTQ2IDE0LjM3MzMgMTIuMjcwOCAxNC4yMTcxTDEzLjU4OCAxMi44OTk5SDEuNTE5MzdMMi44MzY1MyAxNC4yMTcxQzIuOTkyNzQgMTQuMzczMyAyLjk5Mjc0IDE0LjYyNjUgMi44MzY1MyAxNC43ODI4QzIuNjgwMzIgMTQuOTM5IDIuNDI3MDUgMTQuOTM5IDIuMjcwODQgMTQuNzgyOEwwLjI3MDg0MyAxMi43ODI4QzAuMTk1ODI4IDEyLjcwNzcgMC4xNTM2ODcgMTIuNjA2IDAuMTUzNjg3IDEyLjQ5OTlDMC4xNTM2ODcgMTIuMzkzOCAwLjE5NTgyOCAxMi4yOTIxIDAuMjcwODQzIDEyLjIxNzFMMi4yNzA4NCAxMC4yMTcxQzIuNDI3MDUgMTAuMDYwOSAyLjY4MDMyIDEwLjA2MDkgMi44MzY1MyAxMC4yMTcxQzIuOTkyNzQgMTAuMzczMyAyLjk5Mjc0IDEwLjYyNjUgMi44MzY1MyAxMC43ODI4TDEuNTE5MzcgMTIuMDk5OUwxMy41ODggMTIuMDk5OUwxMi4yNzA4IDEwLjc4MjhDMTIuMTE0NiAxMC42MjY1IDEyLjExNDYgMTAuMzczMyAxMi4yNzA4IDEwLjIxNzFDMTIuNDI3MSAxMC4wNjA5IDEyLjY4MDMgMTAuMDYwOSAxMi44MzY1IDEwLjIxNzFMMTQuODM2NSAxMi4yMTcxQzE0LjkxMTUgMTIuMjkyMSAxNC45NTM3IDEyLjM5MzggMTQuOTUzNyAxMi40OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguNjk2NjYgMC4wNDAzNTRDOC45MDg1OSAwLjEzMTAzOCA5LjAzMTA1IDAuMzU0ODU2IDguOTkzMTUgMC41ODIyMzVMOC4wOTAxOSA2LjAwMDAxSDEyLjQ5OTlDMTIuNjg5MyA2LjAwMDAxIDEyLjg2MjUgNi4xMDcwMSAxMi45NDcyIDYuMjc2NEMxMy4wMzE4IDYuNDQ1NzkgMTMuMDEzNiA2LjY0ODUgMTIuODk5OSA2LjhMNi44OTk5NyAxNC44QzYuNzYxNjYgMTQuOTg0NCA2LjUxNTIgMTUuMDUwMyA2LjMwMzI3IDE0Ljk1OTZDNi4wOTEzNCAxNC44NjkgNS45Njg4OCAxNC42NDUxIDYuMDA2NzggMTQuNDE3OEw2LjkwOTc0IDguOTk5OTlIMi40OTk5OUMyLjMxMDYxIDguOTk5OTkgMi4xMzc0NyA4Ljg5Mjk5IDIuMDUyNzggOC43MjM2QzEuOTY4MDggOC41NTQyMSAxLjk4NjM2IDguMzUxNSAyLjA5OTk5IDguMkw4LjA5OTk2IDAuMjAwMDM3QzguMjM4MjcgMC4wMTU2MjU1IDguNDg0NzMgLTAuMDUwMzMwMSA4LjY5NjY2IDAuMDQwMzU0Wk0zLjQ5OTk5IDhINy40OTk5NkM3LjY0Njk0IDggNy43ODY0NyA4LjA2NDY2IDcuODgxNDcgOC4xNzY4MUM3Ljk3NjQ3IDguMjg4OTUgOC4wMTczMiA4LjQzNzIyIDcuOTkzMTYgOC41ODIxOUw3LjMzMDI2IDEyLjU1OTZMMTEuNDk5OSA3SDcuNDk5OTZDNy4zNTI5OSA3IDcuMjEzNDYgNi45MzUzNCA3LjExODQ2IDYuODIzMTlDNy4wMjM0NiA2LjcxMTA1IDYuOTgyNjEgNi41NjI3OCA3LjAwNjc3IDYuNDE3ODFMNy42Njk2NyAyLjQ0MDQyTDMuNDk5OTkgOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGZuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjc4MjMzIDIuMjE3MTNDMy43MDczMiAyLjE0MjEyIDMuNjA1NTcgMi4wOTk5OCAzLjQ5OTQ5IDIuMDk5OThDMy4zOTM0IDIuMDk5OTggMy4yOTE2NiAyLjE0MjEyIDMuMjE2NjQgMi4yMTcxM0wxLjIxNjY0IDQuMjE3MTNDMS4wNjA0NCA0LjM3MzM0IDEuMDYwNDQgNC42MjY2MSAxLjIxNjY0IDQuNzgyODJDMS4zNzI4NSA0LjkzOTAzIDEuNjI2MTIgNC45MzkwMyAxLjc4MjMzIDQuNzgyODJMMy4wOTk0OSAzLjQ2NTY2TDMuMDk5NDkgMTEuNTM0M0wxLjc4MjMzIDEwLjIxNzFDMS42MjYxMiAxMC4wNjA5IDEuMzcyODUgMTAuMDYwOSAxLjIxNjY0IDEwLjIxNzFDMS4wNjA0MyAxMC4zNzMzIDEuMDYwNDMgMTAuNjI2NiAxLjIxNjY0IDEwLjc4MjhMMy4yMTY2NCAxMi43ODI4QzMuMjkxNjYgMTIuODU3OCAzLjM5MzQgMTIuOSAzLjQ5OTQ5IDEyLjlDMy42MDU1NyAxMi45IDMuNzA3MzEgMTIuODU3OCAzLjc4MjMzIDEyLjc4MjhMNS43ODIzMyAxMC43ODI4QzUuOTM4NTQgMTAuNjI2NiA1LjkzODU0IDEwLjM3MzMgNS43ODIzMyAxMC4yMTcxQzUuNjI2MTIgMTAuMDYwOSA1LjM3Mjg1IDEwLjA2MDkgNS4yMTY2NCAxMC4yMTcxTDMuODk5NDkgMTEuNTM0M0wzLjg5OTQ5IDMuNDY1NjZMNS4yMTY2NCA0Ljc4MjgyQzUuMzcyODUgNC45MzkwMyA1LjYyNjEyIDQuOTM5MDMgNS43ODIzMyA0Ljc4MjgyQzUuOTM4NTQgNC42MjY2MSA1LjkzODU0IDQuMzczMzQgNS43ODIzMyA0LjIxNzEzTDMuNzgyMzMgMi4yMTcxM1pNOC40OTk5OCAzLjk5OTk3QzguMjIzODMgMy45OTk5NyA3Ljk5OTk4IDQuMjIzODIgNy45OTk5OCA0LjQ5OTk3QzcuOTk5OTggNC43NzYxMSA4LjIyMzgzIDQuOTk5OTcgOC40OTk5OCA0Ljk5OTk3SDE0LjVDMTQuNzc2MSA0Ljk5OTk3IDE1IDQuNzc2MTEgMTUgNC40OTk5N0MxNSA0LjIyMzgyIDE0Ljc3NjEgMy45OTk5NyAxNC41IDMuOTk5OTdIOC40OTk5OFpNNy45OTk5OCA3LjQ5OTk3QzcuOTk5OTggNy4yMjM4MiA4LjIyMzgzIDYuOTk5OTcgOC40OTk5OCA2Ljk5OTk3SDE0LjVDMTQuNzc2MSA2Ljk5OTk3IDE1IDcuMjIzODIgMTUgNy40OTk5N0MxNSA3Ljc3NjExIDE0Ljc3NjEgNy45OTk5NyAxNC41IDcuOTk5OTdIOC40OTk5OEM4LjIyMzgzIDcuOTk5OTcgNy45OTk5OCA3Ljc3NjExIDcuOTk5OTggNy40OTk5N1pNOC40OTk5OCA5Ljk5OTk3QzguMjIzODMgOS45OTk5NyA3Ljk5OTk4IDEwLjIyMzggNy45OTk5OCAxMC41QzcuOTk5OTggMTAuNzc2MSA4LjIyMzgzIDExIDguNDk5OTggMTFIMTQuNUMxNC43NzYxIDExIDE1IDEwLjc3NjEgMTUgMTAuNUMxNSAxMC4yMjM4IDE0Ljc3NjEgOS45OTk5NyAxNC41IDkuOTk5OTdIOC40OTk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHBuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjYyNDcxIDQuMDAwMDFMNC41NjQwMiA0LjAwMDAxQzQuMDQxMzQgMy45OTk5MyAzLjcwNjg3IDMuOTk5ODggMy40MTgyIDQuMDU1QzIuMjM3OSA0LjI4MDM5IDEuMjk4NDYgNS4xNzA1MyAxLjA1ODE1IDYuMzMwMzVDMC45OTk1MzggNi42MTMyMSAwLjk5OTYwNCA2LjkzOTk4IDAuOTk5NzAzIDcuNDM2ODlMMC45OTk3MTEgNy41MDAwMUwwLjk5OTcwMyA3LjU2MzEzQzAuOTk5NjA0IDguMDYwMDQgMC45OTk1MzggOC4zODY4MSAxLjA1ODE1IDguNjY5NjdDMS4yOTg0NiA5LjgyOTUgMi4yMzc5IDEwLjcxOTYgMy40MTgyIDEwLjk0NUMzLjcwNjg4IDExLjAwMDEgNC4wNDEzNSAxMS4wMDAxIDQuNTY0MDMgMTFMNC42MjQ3MSAxMUg1LjQ5OTcxQzUuNzc1ODUgMTEgNS45OTk3MSAxMC43NzYyIDUuOTk5NzEgMTAuNUM1Ljk5OTcxIDEwLjIyMzkgNS43NzU4NSAxMCA1LjQ5OTcxIDEwSDQuNjI0NzFDNC4wMjA4NCAxMCAzLjc4OTA3IDkuOTk3NzcgMy42MDU3NyA5Ljk2Mjc3QzIuODAyNjIgOS44MDk0IDIuMTkxNTcgOS4yMTEwOCAyLjAzNzM1IDguNDY2NzhDMi4wMDIzMyA4LjI5Nzc4IDEuOTk5NzEgOC4wODI1MSAxLjk5OTcxIDcuNTAwMDFDMS45OTk3MSA2LjkxNzUyIDIuMDAyMzMgNi43MDIyNSAyLjAzNzM1IDYuNTMzMjRDMi4xOTE1NyA1Ljc4ODk1IDIuODAyNjIgNS4xOTA2MiAzLjYwNTc3IDUuMDM3MjVDMy43ODkwNyA1LjAwMjI1IDQuMDIwODQgNS4wMDAwMSA0LjYyNDcxIDUuMDAwMDFINS40OTk3MUM1Ljc3NTg1IDUuMDAwMDEgNS45OTk3MSA0Ljc3NjE1IDUuOTk5NzEgNC41MDAwMUM1Ljk5OTcxIDQuMjIzODcgNS43NzU4NSA0LjAwMDAxIDUuNDk5NzEgNC4wMDAwMUg0LjYyNDcxWk0xMC4zNzQ3IDUuMDAwMDFDMTAuOTc4NiA1LjAwMDAxIDExLjIxMDQgNS4wMDIyNSAxMS4zOTM3IDUuMDM3MjVDMTIuMTk2OCA1LjE5MDYyIDEyLjgwNzkgNS43ODg5NSAxMi45NjIxIDYuNTMzMjRDMTIuOTk3MSA2LjcwMjI1IDEyLjk5OTcgNi45MTc1MiAxMi45OTk3IDcuNTAwMDFDMTIuOTk5NyA4LjA4MjUxIDEyLjk5NzEgOC4yOTc3OCAxMi45NjIxIDguNDY2NzhDMTIuODA3OSA5LjIxMTA4IDEyLjE5NjggOS44MDk0IDExLjM5MzcgOS45NjI3N0MxMS4yMTA0IDkuOTk3NzcgMTAuOTc4NiAxMCAxMC4zNzQ3IDEwSDkuNDk5NzFDOS4yMjM1NyAxMCA4Ljk5OTcxIDEwLjIyMzkgOC45OTk3MSAxMC41QzguOTk5NzEgMTAuNzc2MiA5LjIyMzU3IDExIDkuNDk5NzEgMTFIMTAuMzc0N0wxMC40MzU0IDExQzEwLjk1ODEgMTEuMDAwMSAxMS4yOTI1IDExLjAwMDEgMTEuNTgxMiAxMC45NDVDMTIuNzYxNSAxMC43MTk2IDEzLjcwMSA5LjgyOTUgMTMuOTQxMyA4LjY2OTY3QzEzLjk5OTkgOC4zODY4MSAxMy45OTk4IDguMDYwMDUgMTMuOTk5NyA3LjU2MzE0TDEzLjk5OTcgNy41MDAwMUwxMy45OTk3IDcuNDM2ODhDMTMuOTk5OCA2LjkzOTk4IDEzLjk5OTkgNi42MTMyMSAxMy45NDEzIDYuMzMwMzVDMTMuNzAxIDUuMTcwNTMgMTIuNzYxNSA0LjI4MDM5IDExLjU4MTIgNC4wNTVDMTEuMjkyNSAzLjk5OTg4IDEwLjk1ODEgMy45OTk5MyAxMC40MzU0IDQuMDAwMDFMMTAuMzc0NyA0LjAwMDAxSDkuNDk5NzFDOS4yMjM1NyA0LjAwMDAxIDguOTk5NzEgNC4yMjM4NyA4Ljk5OTcxIDQuNTAwMDFDOC45OTk3MSA0Ljc3NjE1IDkuMjIzNTcgNS4wMDAwMSA5LjQ5OTcxIDUuMDAwMDFIMTAuMzc0N1pNNS4wMDAzOCA3QzQuNzI0MjQgNyA0LjUwMDM4IDcuMjIzODYgNC41MDAzOCA3LjVDNC41MDAzOCA3Ljc3NjE0IDQuNzI0MjQgOCA1LjAwMDM4IDhIMTAuMDAwNEMxMC4yNzY1IDggMTAuNTAwNCA3Ljc3NjE0IDEwLjUwMDQgNy41QzEwLjUwMDQgNy4yMjM4NiAxMC4yNzY1IDcgMTAuMDAwNCA3SDUuMDAwMzhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxDbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC41MTE5NCAzLjAwNTQxQzkuMTg4MjkgMi41NDU5NCAxMC4wNDM1IDIuNTM2OTQgMTAuNjc4OCAyLjk1NDE5QzEwLjgyMzEgMy4wNDg5MyAxMC45NzcxIDMuMTk5MyAxMS4zODkgMy42MTExOUMxMS44MDA5IDQuMDIzMDcgMTEuOTUxMyA0LjE3NzE0IDEyLjA0NiA0LjMyMTQxQzEyLjQ2MzMgNC45NTY3NSAxMi40NTQzIDUuODExOTIgMTEuOTk0OCA2LjQ4ODI3QzExLjg4OTkgNi42NDI2NCAxMS43Mjc2IDYuODA4MTEgMTEuMzAwNiA3LjIzNTExTDEwLjY4MTkgNy44NTM4M0MxMC40ODY3IDguMDQ5MDkgMTAuNDg2NyA4LjM2NTY3IDEwLjY4MTkgOC41NjA5M0MxMC44NzcyIDguNzU2MiAxMS4xOTM4IDguNzU2MiAxMS4zODkgOC41NjA5M0wxMi4wMDc3IDcuOTQyMjFMMTIuMDUwNyA3Ljg5OTI5QzEyLjQyMDMgNy41Mjk3NiAxMi42NTY4IDcuMjkzMyAxMi44MjIgNy4wNTAyQzEzLjQ5NzIgNi4wNTYyMyAxMy41MzIxIDQuNzYyNTIgMTIuODgxOSAzLjc3MjQ4QzEyLjcyMzMgMy41MzEwMiAxMi40OTIyIDMuMzAwMDEgMTIuMTQwOCAyLjk0ODcxTDEyLjA5NjEgMi45MDQwOEwxMi4wNTE1IDIuODU5NDJDMTEuNzAwMiAyLjUwOCAxMS40NjkyIDIuMjc2ODkgMTEuMjI3NyAyLjExODMyQzEwLjIzNzcgMS40NjgxMyA4Ljk0Mzk4IDEuNTAyOTkgNy45NTAwMSAyLjE3ODIyQzcuNzA2OTEgMi4zNDMzNiA3LjQ3MDQ0IDIuNTc5OTEgNy4xMDA5IDIuOTQ5NTVMNy4wNTggMi45OTI0N0w2LjQzOTI4IDMuNjExMTlDNi4yNDQwMSAzLjgwNjQ1IDYuMjQ0MDEgNC4xMjMwMyA2LjQzOTI4IDQuMzE4MjlDNi42MzQ1NCA0LjUxMzU1IDYuOTUxMTIgNC41MTM1NSA3LjE0NjM4IDQuMzE4MjlMNy43NjUxIDMuNjk5NTdDOC4xOTIxIDMuMjcyNTcgOC4zNTc1NyAzLjExMDI3IDguNTExOTQgMy4wMDU0MVpNNC4zMTc5NiA3LjE0NjcyQzQuNTEzMjIgNi45NTE0NiA0LjUxMzIyIDYuNjM0ODcgNC4zMTc5NiA2LjQzOTYxQzQuMTIyNjkgNi4yNDQzNSAzLjgwNjExIDYuMjQ0MzUgMy42MTA4NSA2LjQzOTYxTDIuOTkyMTMgNy4wNTgzM0wyLjk0OTIyIDcuMTAxMjRDMi41Nzk1NyA3LjQ3MDc3IDIuMzQzMDMgNy43MDcyNCAyLjE3Nzg4IDcuOTUwMzVDMS41MDI2NSA4Ljk0NDMyIDEuNDY3OCAxMC4yMzggMi4xMTc5OSAxMS4yMjgxQzIuMjc2NTYgMTEuNDY5NSAyLjUwNzY2IDExLjcwMDUgMi44NTkxIDEyLjA1MThMMi45MDM3NCAxMi4wOTY1TDIuOTQ4MzcgMTIuMTQxMUMzLjI5OTY3IDEyLjQ5MjUgMy41MzA2OCAxMi43MjM3IDMuNzcyMTQgMTIuODgyMkM0Ljc2MjE5IDEzLjUzMjQgNi4wNTU4OSAxMy40OTc2IDcuMDQ5ODYgMTIuODIyM0M3LjI5Mjk2IDEyLjY1NzIgNy41Mjk0MyAxMi40MjA2IDcuODk4OTYgMTIuMDUxTDcuODk4OTcgMTIuMDUxTDcuOTQxODggMTIuMDA4MUw4LjU2MDYgMTEuMzg5NEM4Ljc1NTg2IDExLjE5NDEgOC43NTU4NiAxMC44Nzc1IDguNTYwNiAxMC42ODIzQzguMzY1MzMgMTAuNDg3IDguMDQ4NzUgMTAuNDg3IDcuODUzNDkgMTAuNjgyM0w3LjIzNDc3IDExLjMwMUM2LjgwNzc3IDExLjcyOCA2LjY0MjMgMTEuODkwMyA2LjQ4Nzk0IDExLjk5NTFDNS44MTE1OCAxMi40NTQ2IDQuOTU2NDIgMTIuNDYzNiA0LjMyMTA3IDEyLjA0NjRDNC4xNzY4MSAxMS45NTE2IDQuMDIyNzQgMTEuODAxMiAzLjYxMDg1IDExLjM4OTRDMy4xOTg5NiAxMC45Nzc1IDMuMDQ4NiAxMC44MjM0IDIuOTUzODUgMTAuNjc5MUMyLjUzNjYxIDEwLjA0MzggMi41NDU2MSA5LjE4ODYzIDMuMDA1MDcgOC41MTIyN0MzLjEwOTkzIDguMzU3OTEgMy4yNzIyNCA4LjE5MjQ0IDMuNjk5MjQgNy43NjU0NEw0LjMxNzk2IDcuMTQ2NzJaTTkuNjIxNzIgNi4wODU1OEM5LjgxNjk4IDUuODkwMzIgOS44MTY5OCA1LjU3MzczIDkuNjIxNzIgNS4zNzg0N0M5LjQyNjQ2IDUuMTgzMjEgOS4xMDk4OCA1LjE4MzIxIDguOTE0NjEgNS4zNzg0N0w1LjM3OTA4IDguOTE0MDFDNS4xODM4MiA5LjEwOTI3IDUuMTgzODIgOS40MjU4NSA1LjM3OTA4IDkuNjIxMTFDNS41NzQzNCA5LjgxNjM3IDUuODkwOTIgOS44MTYzNyA2LjA4NjE5IDkuNjIxMTFMOS42MjE3MiA2LjA4NTU4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjM1MzYgMi4zNTM1NUMxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAxLjg0MTcxIDEzLjM1MzYgMS42NDY0NUMxMy4xNTgzIDEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEyLjY0NjQgMS42NDY0NUwxLjY0NjQ1IDEyLjY0NjRDMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTMuMTU4MyAxLjY0NjQ1IDEzLjM1MzZDMS44NDE3MSAxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAyLjM1MzU1IDEzLjM1MzZMMTMuMzUzNiAyLjM1MzU1Wk0yLjAzNzM1IDguNDY2NzhDMi4xNzM5OCA5LjEyNjE5IDIuNjY5MTggOS42NzEwMyAzLjMzODg2IDkuODkzMzhMMi41NzgzMyAxMC42NTM5QzEuODA4NDMgMTAuMjUzNCAxLjIzNzg0IDkuNTM2OTMgMS4wNTgxNSA4LjY2OTY3QzAuOTk5NTM4IDguMzg2ODEgMC45OTk2MDQgOC4wNjAwNCAwLjk5OTcwMyA3LjU2MzEzTDAuOTk5NzExIDcuNTAwMDFMMC45OTk3MDMgNy40MzY4OUMwLjk5OTYwNCA2LjkzOTk4IDAuOTk5NTM4IDYuNjEzMjEgMS4wNTgxNSA2LjMzMDM1QzEuMjk4NDYgNS4xNzA1MyAyLjIzNzkgNC4yODAzOSAzLjQxODIgNC4wNTVDMy43MDY4NyAzLjk5OTg4IDQuMDQxMzQgMy45OTk5MyA0LjU2NDAyIDQuMDAwMDFMNC42MjQ3MSA0LjAwMDAxSDUuNDk5NzFDNS43NzU4NSA0LjAwMDAxIDUuOTk5NzEgNC4yMjM4NyA1Ljk5OTcxIDQuNTAwMDFDNS45OTk3MSA0Ljc3NjE1IDUuNzc1ODUgNS4wMDAwMSA1LjQ5OTcxIDUuMDAwMDFINC42MjQ3MUM0LjAyMDg0IDUuMDAwMDEgMy43ODkwNyA1LjAwMjI1IDMuNjA1NzcgNS4wMzcyNUMyLjgwMjYyIDUuMTkwNjIgMi4xOTE1NyA1Ljc4ODk1IDIuMDM3MzUgNi41MzMyNEMyLjAwMjMzIDYuNzAyMjUgMS45OTk3MSA2LjkxNzUyIDEuOTk5NzEgNy41MDAwMUMxLjk5OTcxIDguMDgyNTEgMi4wMDIzMyA4LjI5Nzc4IDIuMDM3MzUgOC40NjY3OFpNMTIuOTYyMSA2LjUzMzI0QzEyLjgyNTUgNS44NzM5NyAxMi4zMzA0IDUuMzI5MjIgMTEuNjYxIDUuMTA2NzlMMTIuNDIxNSA0LjM0NjMxQzEzLjE5MTIgNC43NDY4NiAxMy43NjE2IDUuNDYzMjMgMTMuOTQxMyA2LjMzMDM1QzEzLjk5OTkgNi42MTMyMSAxMy45OTk4IDYuOTM5OTggMTMuOTk5NyA3LjQzNjg4TDEzLjk5OTcgNy41MDAwMUwxMy45OTk3IDcuNTYzMTRDMTMuOTk5OCA4LjA2MDA1IDEzLjk5OTkgOC4zODY4MSAxMy45NDEzIDguNjY5NjdDMTMuNzAxIDkuODI5NSAxMi43NjE1IDEwLjcxOTYgMTEuNTgxMiAxMC45NDVDMTEuMjkyNSAxMS4wMDAxIDEwLjk1ODEgMTEuMDAwMSAxMC40MzU0IDExTDEwLjM3NDcgMTFIOS40OTk3MUM5LjIyMzU3IDExIDguOTk5NzEgMTAuNzc2MiA4Ljk5OTcxIDEwLjVDOC45OTk3MSAxMC4yMjM5IDkuMjIzNTcgMTAgOS40OTk3MSAxMEgxMC4zNzQ3QzEwLjk3ODYgMTAgMTEuMjEwNCA5Ljk5Nzc3IDExLjM5MzcgOS45NjI3N0MxMi4xOTY4IDkuODA5NCAxMi44MDc5IDkuMjExMDggMTIuOTYyMSA4LjQ2Njc4QzEyLjk5NzEgOC4yOTc3OCAxMi45OTk3IDguMDgyNTEgMTIuOTk5NyA3LjUwMDAxQzEyLjk5OTcgNi45MTc1MiAxMi45OTcxIDYuNzAyMjUgMTIuOTYyMSA2LjUzMzI0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNTAwMjEgMEM0Ljc3NjM1IDAgNS4wMDAyIDAuMjIzODUzIDUuMDAwMiAwLjQ5OTk5VjIuNDk5OTVDNS4wMDAyIDIuNzc2MDkgNC43NzYzNSAyLjk5OTk0IDQuNTAwMjEgMi45OTk5NEM0LjIyNDA4IDIuOTk5OTQgNC4wMDAyMiAyLjc3NjA5IDQuMDAwMjIgMi40OTk5NVYwLjQ5OTk5QzQuMDAwMjIgMC4yMjM4NTMgNC4yMjQwOCAwIDQuNTAwMjEgMFpNMC42NDY0NTEgMC42NDY0N0MwLjg0MTcxIDAuNDUxMjEyIDEuMTU4MjkgMC40NTEyMTIgMS4zNTM1NCAwLjY0NjQ3TDIuODUzNTEgMi4xNDY0NEMzLjA0ODc3IDIuMzQxNyAzLjA0ODc3IDIuNjU4MjcgMi44NTM1MSAyLjg1MzUzQzIuNjU4MjYgMy4wNDg3OSAyLjM0MTY4IDMuMDQ4NzkgMi4xNDY0MiAyLjg1MzUzTDAuNjQ2NDUyIDEuMzUzNTZDMC40NTExOTMgMS4xNTgzIDAuNDUxMTkzIDAuODQxNzI4IDAuNjQ2NDUxIDAuNjQ2NDdaTTAuMDAwMzA1MTcgNC40OTk5MUMwLjAwMDMwNTE3IDQuMjIzNzcgMC4yMjQxNTggMy45OTk5MiAwLjUwMDI5NSAzLjk5OTkySDIuNTAwMjVDMi43NzYzOSAzLjk5OTkyIDMuMDAwMjQgNC4yMjM3NyAzLjAwMDI0IDQuNDk5OTFDMy4wMDAyNCA0Ljc3NjA1IDIuNzc2MzkgNC45OTk5IDIuNTAwMjUgNC45OTk5SDAuNTAwMjk1QzAuMjI0MTU4IDQuOTk5OSAwLjAwMDMwNTE3IDQuNzc2MDUgMC4wMDAzMDUxNyA0LjQ5OTkxWk0xMi4wMDAxIDEwLjQ5OThDMTIuMDAwMSAxMC4yMjM2IDEyLjIyMzkgOS45OTk4IDEyLjUwMDEgOS45OTk4SDE0LjVDMTQuNzc2MSA5Ljk5OTggMTUgMTAuMjIzNiAxNSAxMC40OTk4QzE1IDEwLjc3NTkgMTQuNzc2MSAxMC45OTk4IDE0LjUgMTAuOTk5OEgxMi41MDAxQzEyLjIyMzkgMTAuOTk5OCAxMi4wMDAxIDEwLjc3NTkgMTIuMDAwMSAxMC40OTk4Wk0xMC41MDAxIDExLjk5OThDMTAuNzc2MiAxMS45OTk4IDExLjAwMDEgMTIuMjIzNiAxMS4wMDAxIDEyLjQ5OTdWMTQuNDk5N0MxMS4wMDAxIDE0Ljc3NTggMTAuNzc2MiAxNC45OTk3IDEwLjUwMDEgMTQuOTk5N0MxMC4yMjQgMTQuOTk5NyAxMC4wMDAxIDE0Ljc3NTggMTAuMDAwMSAxNC40OTk3VjEyLjQ5OTdDMTAuMDAwMSAxMi4yMjM2IDEwLjIyNCAxMS45OTk4IDEwLjUwMDEgMTEuOTk5OFpNMTIuMTQ2MiAxMi4xNDYyQzEyLjM0MTUgMTEuOTUxIDEyLjY1OCAxMS45NTEgMTIuODUzMyAxMi4xNDYyTDE0LjM1MzMgMTMuNjQ2MkMxNC41NDg1IDEzLjg0MTUgMTQuNTQ4NSAxNC4xNTggMTQuMzUzMyAxNC4zNTMzQzE0LjE1OCAxNC41NDg1IDEzLjg0MTQgMTQuNTQ4NSAxMy42NDYyIDE0LjM1MzNMMTIuMTQ2MiAxMi44NTMzQzExLjk1MSAxMi42NTgxIDExLjk1MSAxMi4zNDE1IDEyLjE0NjIgMTIuMTQ2MlpNNy43NjQ3OCAzLjY5OTM4QzguMTkxNzcgMy4yNzIzOCA4LjM1NzI0IDMuMTEwMDggOC41MTE2IDMuMDA1MjJDOS4xODc5NCAyLjU0NTc3IDEwLjA0MzEgMi41MzY3NyAxMC42Nzg0IDIuOTU0MDFDMTAuODIyNyAzLjA0ODc1IDEwLjk3NjcgMy4xOTkxMSAxMS4zODg2IDMuNjEwOTlDMTEuODAwNSA0LjAyMjg3IDExLjk1MDkgNC4xNzY5NCAxMi4wNDU2IDQuMzIxMkMxMi40NjI4IDQuOTU2NTMgMTIuNDUzOSA1LjgxMTY4IDExLjk5NDQgNi40ODgwMkMxMS44ODk1IDYuNjQyMzggMTEuNzI3MiA2LjgwNzg1IDExLjMwMDIgNy4yMzQ4NEwxMC42ODE1IDcuODUzNTRDMTAuNDg2MyA4LjA0ODggMTAuNDg2MyA4LjM2NTM4IDEwLjY4MTUgOC41NjA2NEMxMC44NzY4IDguNzU1ODkgMTEuMTkzNCA4Ljc1NTg5IDExLjM4ODYgOC41NjA2NEwxMi4wMDczIDcuOTQxOTNMMTIuMDUwMiA3Ljg5OTAzQzEyLjQxOTkgNy41Mjk1IDEyLjY1NjQgNy4yOTMwMyAxMi44MjE2IDcuMDQ5OTNDMTMuNDk2OCA2LjA1NTk4IDEzLjUzMTYgNC43NjIzIDEyLjg4MTUgMy43NzIyOEMxMi43MjI5IDMuNTMwODMgMTIuNDkxOCAzLjI5OTgyIDEyLjE0MDQgMi45NDg1M0wxMi4wOTU3IDIuOTAzOUwxMi4wNTExIDIuODU5MjVDMTEuNjk5OCAyLjUwNzgyIDExLjQ2ODggMi4yNzY3MiAxMS4yMjczIDIuMTE4MTZDMTAuMjM3MyAxLjQ2Nzk4IDguOTQzNjQgMS41MDI4NCA3Ljk0OTY4IDIuMTc4MDVDNy43MDY1OSAyLjM0MzE5IDcuNDcwMTIgMi41Nzk3MyA3LjEwMDYgMi45NDkzNkw3LjEwMDYgMi45NDkzN0w3LjA1NzY5IDIuOTkyMjhMNi40Mzg5OCAzLjYxMDk5QzYuMjQzNzIgMy44MDYyNSA2LjI0MzcyIDQuMTIyODIgNi40Mzg5OCA0LjMxODA4QzYuNjM0MjQgNC41MTMzNCA2Ljk1MDgxIDQuNTEzMzQgNy4xNDYwNyA0LjMxODA4TDcuNzY0NzggMy42OTkzOFpNMi45OTE5MSA3LjA1ODA3TDIuOTQ4OTkgNy4xMDA5N0MyLjU3OTM1IDcuNDcwNSAyLjM0MjgyIDcuNzA2OTcgMi4xNzc2NyA3Ljk1MDA2QzEuNTAyNDYgOC45NDQwMSAxLjQ2NzYgMTAuMjM3NyAyLjExNzc4IDExLjIyNzdDMi4yNzYzNCAxMS40NjkyIDIuNTA3NDQgMTEuNzAwMiAyLjg1ODg2IDEyLjA1MTVMMi44NTg4OCAxMi4wNTE1TDIuOTAzNTIgMTIuMDk2MUwyLjk0ODE1IDEyLjE0MDdMMi45NDgxNSAxMi4xNDA3TDIuOTQ4MTcgMTIuMTQwOEMzLjI5OTQ1IDEyLjQ5MjIgMy41MzA0NSAxMi43MjMzIDMuNzcxOSAxMi44ODE4QzQuNzYxOTMgMTMuNTMyIDYuMDU1NiAxMy40OTcyIDcuMDQ5NTYgMTIuODIxOUM3LjI5MjY1IDEyLjY1NjggNy41MjkxMiAxMi40MjAzIDcuODk4NjUgMTIuMDUwNkw3Ljk0MTU1IDEyLjAwNzdMOC41NjAyNiAxMS4zODlDOC43NTU1MiAxMS4xOTM3IDguNzU1NTIgMTAuODc3MiA4LjU2MDI2IDEwLjY4MTlDOC4zNjUgMTAuNDg2NyA4LjA0ODQyIDEwLjQ4NjcgNy44NTMxNyAxMC42ODE5TDcuMjM0NDYgMTEuMzAwNkM2LjgwNzQ3IDExLjcyNzYgNi42NDIgMTEuODg5OSA2LjQ4NzY0IDExLjk5NDhDNS44MTEzIDEyLjQ1NDIgNC45NTYxNSAxMi40NjMyIDQuMzIwODIgMTIuMDQ2QzQuMTc2NTYgMTEuOTUxMiA0LjAyMjQ5IDExLjgwMDkgMy42MTA2MSAxMS4zODlDMy4xOTg3MyAxMC45NzcxIDMuMDQ4MzcgMTAuODIzMSAyLjk1MzYzIDEwLjY3ODhDMi41MzYzOSAxMC4wNDM1IDIuNTQ1MzkgOS4xODgzMiAzLjAwNDg0IDguNTExOThDMy4xMDk3MSA4LjM1NzYxIDMuMjcyMDEgOC4xOTIxNSAzLjY5OSA3Ljc2NTE2TDQuMzE3NyA3LjE0NjQ1QzQuNTEyOTYgNi45NTExOSA0LjUxMjk2IDYuNjM0NjIgNC4zMTc3IDYuNDM5MzZDNC4xMjI0NSA2LjI0NDEgMy44MDU4NyA2LjI0NDEgMy42MTA2MSA2LjQzOTM2TDIuOTkxOTEgNy4wNTgwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGduPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjU2NDI3IDMuOTk5ODhDNC41ODQyMiAzLjk5OTg5IDQuNjA0NDUgMy45OTk4OSA0LjYyNDk2IDMuOTk5ODlINS40OTk5NkM1Ljc3NjEgMy45OTk4OSA1Ljk5OTk2IDQuMjIzNzUgNS45OTk5NiA0LjQ5OTg5QzUuOTk5OTYgNC43NzYwMyA1Ljc3NjEgNC45OTk4OSA1LjQ5OTk2IDQuOTk5ODlINC42MjQ5NkM0LjAyMTA4IDQuOTk5ODkgMy43ODkzMiA1LjAwMjEzIDMuNjA2MDEgNS4wMzcxM0MyLjgwMjg3IDUuMTkwNSAyLjE5MTgxIDUuNzg4ODMgMi4wMzc1OSA2LjUzMzEyQzIuMDAyNTcgNi43MDIxMiAxLjk5OTk2IDYuOTE3MzkgMS45OTk5NiA3LjQ5OTg5QzEuOTk5OTYgOC4wODIzOSAyLjAwMjU3IDguMjk3NjYgMi4wMzc1OSA4LjQ2NjY2QzIuMTkxODEgOS4yMTA5NSAyLjgwMjg3IDkuODA5MjggMy42MDYwMSA5Ljk2MjY1QzMuNzg5MzIgOS45OTc2NSA0LjAyMTA4IDkuOTk5ODkgNC42MjQ5NiA5Ljk5OTg5SDUuNDk5OTZDNS43NzYxIDkuOTk5ODkgNS45OTk5NiAxMC4yMjM3IDUuOTk5OTYgMTAuNDk5OUM1Ljk5OTk2IDEwLjc3NiA1Ljc3NjEgMTAuOTk5OSA1LjQ5OTk2IDEwLjk5OTlINC42MjQ5NkM0LjYwNDQ1IDEwLjk5OTkgNC41ODQyMiAxMC45OTk5IDQuNTY0MjcgMTAuOTk5OUM0LjA0MTU5IDExIDMuNzA3MTIgMTEgMy40MTg0NSAxMC45NDQ5QzIuMjM4MTQgMTAuNzE5NSAxLjI5ODcxIDkuODI5MzcgMS4wNTgzOSA4LjY2OTU1QzAuOTk5NzgyIDguMzg2NjkgMC45OTk4NDggOC4wNTk5MiAwLjk5OTk0NyA3LjU2MzAxQzAuOTk5OTUxIDcuNTQyMjcgMC45OTk5NTUgNy41MjEyMyAwLjk5OTk1NSA3LjQ5OTg5QzAuOTk5OTU1IDcuNDc4NTUgMC45OTk5NTEgNy40NTc1MSAwLjk5OTk0NyA3LjQzNjc3QzAuOTk5ODQ4IDYuOTM5ODYgMC45OTk3ODIgNi42MTMwOSAxLjA1ODM5IDYuMzMwMjNDMS4yOTg3MSA1LjE3MDQxIDIuMjM4MTQgNC4yODAyNyAzLjQxODQ1IDQuMDU0ODhDMy43MDcxMiAzLjk5OTc2IDQuMDQxNTkgMy45OTk4MSA0LjU2NDI3IDMuOTk5ODhaTTExLjM5MzkgNS4wMzcxM0MxMS4yMTA2IDUuMDAyMTMgMTAuOTc4OCA0Ljk5OTg5IDEwLjM3NSA0Ljk5OTg5SDkuNDk5OTZDOS4yMjM4MSA0Ljk5OTg5IDguOTk5OTYgNC43NzYwMyA4Ljk5OTk2IDQuNDk5ODlDOC45OTk5NiA0LjIyMzc1IDkuMjIzODEgMy45OTk4OSA5LjQ5OTk2IDMuOTk5ODlIMTAuMzc1QzEwLjM5NTUgMy45OTk4OSAxMC40MTU3IDMuOTk5ODkgMTAuNDM1NiAzLjk5OTg4QzEwLjk1ODMgMy45OTk4MSAxMS4yOTI4IDMuOTk5NzYgMTEuNTgxNSA0LjA1NDg4QzEyLjc2MTggNC4yODAyNyAxMy43MDEyIDUuMTcwNDEgMTMuOTQxNSA2LjMzMDIzQzE0LjAwMDEgNi42MTMwOSAxNC4wMDAxIDYuOTM5ODUgMTQgNy40MzY3NkMxNCA3LjQ1NzUgMTQgNy40Nzg1NCAxNCA3LjQ5OTg5QzE0IDcuNTIxMjQgMTQgNy41NDIyOCAxNCA3LjU2MzAyQzE0LjAwMDEgOC4wNTk5MiAxNC4wMDAxIDguMzg2NjkgMTMuOTQxNSA4LjY2OTU1QzEzLjcwMTIgOS44MjkzNyAxMi43NjE4IDEwLjcxOTUgMTEuNTgxNSAxMC45NDQ5QzExLjI5MjggMTEgMTAuOTU4MyAxMSAxMC40MzU2IDEwLjk5OTlDMTAuNDE1NyAxMC45OTk5IDEwLjM5NTUgMTAuOTk5OSAxMC4zNzUgMTAuOTk5OUg5LjQ5OTk2QzkuMjIzODEgMTAuOTk5OSA4Ljk5OTk2IDEwLjc3NiA4Ljk5OTk2IDEwLjQ5OTlDOC45OTk5NiAxMC4yMjM3IDkuMjIzODEgOS45OTk4OSA5LjQ5OTk2IDkuOTk5ODlIMTAuMzc1QzEwLjk3ODggOS45OTk4OSAxMS4yMTA2IDkuOTk3NjUgMTEuMzkzOSA5Ljk2MjY1QzEyLjE5NyA5LjgwOTI4IDEyLjgwODEgOS4yMTA5NSAxMi45NjIzIDguNDY2NjZDMTIuOTk3MyA4LjI5NzY2IDEzIDguMDgyMzkgMTMgNy40OTk4OUMxMyA2LjkxNzM5IDEyLjk5NzMgNi43MDIxMiAxMi45NjIzIDYuNTMzMTJDMTIuODA4MSA1Ljc4ODgzIDEyLjE5NyA1LjE5MDUgMTEuMzkzOSA1LjAzNzEzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwLjY3ODggMi45NTQxOUMxMC4wNDM1IDIuNTM2OTQgOS4xODgyOSAyLjU0NTk0IDguNTExOTQgMy4wMDU0MUM4LjM1NzU3IDMuMTEwMjcgOC4xOTIxIDMuMjcyNTcgNy43NjUxIDMuNjk5NTdMNy4xNDYzOCA0LjMxODI5QzYuOTUxMTIgNC41MTM1NSA2LjYzNDU0IDQuNTEzNTUgNi40MzkyOCA0LjMxODI5QzYuMjQ0MDEgNC4xMjMwMyA2LjI0NDAxIDMuODA2NDUgNi40MzkyOCAzLjYxMTE5TDcuMDU4IDIuOTkyNDdDNy4wNzI1IDIuOTc3OTcgNy4wODY3OSAyLjk2MzY2IDcuMTAwOSAyLjk0OTU1QzcuNDcwNDQgMi41Nzk5MSA3LjcwNjkxIDIuMzQzMzYgNy45NTAwMSAyLjE3ODIyQzguOTQzOTggMS41MDI5OSAxMC4yMzc3IDEuNDY4MTMgMTEuMjI3NyAyLjExODMyQzExLjQ2OTIgMi4yNzY4OSAxMS43MDAyIDIuNTA4IDEyLjA1MTUgMi44NTk0MkMxMi4wNjYyIDIuODc0MSAxMi4wODEgMi44ODg5OCAxMi4wOTYxIDIuOTA0MDhDMTIuMTExMiAyLjkxOTE3IDEyLjEyNjEgMi45MzQwNSAxMi4xNDA4IDIuOTQ4NzFDMTIuNDkyMiAzLjMwMDAxIDEyLjcyMzMgMy41MzEwMiAxMi44ODE5IDMuNzcyNDhDMTMuNTMyMSA0Ljc2MjUyIDEzLjQ5NzIgNi4wNTYyMyAxMi44MjIgNy4wNTAyQzEyLjY1NjggNy4yOTMzIDEyLjQyMDMgNy41Mjk3NiAxMi4wNTA3IDcuODk5MjlDMTIuMDM2NiA3LjkxMzQgMTIuMDIyMiA3LjkyNzcxIDEyLjAwNzcgNy45NDIyMUwxMS4zODkgOC41NjA5M0MxMS4xOTM4IDguNzU2MiAxMC44NzcyIDguNzU2MiAxMC42ODE5IDguNTYwOTNDMTAuNDg2NyA4LjM2NTY3IDEwLjQ4NjcgOC4wNDkwOSAxMC42ODE5IDcuODUzODNMMTEuMzAwNiA3LjIzNTExQzExLjcyNzYgNi44MDgxMSAxMS44ODk5IDYuNjQyNjQgMTEuOTk0OCA2LjQ4ODI3QzEyLjQ1NDMgNS44MTE5MiAxMi40NjMzIDQuOTU2NzUgMTIuMDQ2IDQuMzIxNDFDMTEuOTUxMyA0LjE3NzE0IDExLjgwMDkgNC4wMjMwNyAxMS4zODkgMy42MTExOUMxMC45NzcxIDMuMTk5MyAxMC44MjMxIDMuMDQ4OTMgMTAuNjc4OCAyLjk1NDE5Wk00LjMxNzk2IDYuNDM5NjFDNC41MTMyMiA2LjYzNDg3IDQuNTEzMjIgNi45NTE0NiA0LjMxNzk2IDcuMTQ2NzJMMy42OTkyNCA3Ljc2NTQ0QzMuMjcyMjQgOC4xOTI0NCAzLjEwOTkzIDguMzU3OTEgMy4wMDUwNyA4LjUxMjI3QzIuNTQ1NjEgOS4xODg2MyAyLjUzNjYxIDEwLjA0MzggMi45NTM4NSAxMC42NzkxQzMuMDQ4NiAxMC44MjM0IDMuMTk4OTYgMTAuOTc3NSAzLjYxMDg1IDExLjM4OTRDNC4wMjI3NCAxMS44MDEyIDQuMTc2ODEgMTEuOTUxNiA0LjMyMTA3IDEyLjA0NjRDNC45NTY0MiAxMi40NjM2IDUuODExNTggMTIuNDU0NiA2LjQ4Nzk0IDExLjk5NTFDNi42NDIzIDExLjg5MDMgNi44MDc3NyAxMS43MjggNy4yMzQ3NyAxMS4zMDFMNy44NTM0OSAxMC42ODIzQzguMDQ4NzUgMTAuNDg3IDguMzY1MzMgMTAuNDg3IDguNTYwNiAxMC42ODIzQzguNzU1ODYgMTAuODc3NSA4Ljc1NTg2IDExLjE5NDEgOC41NjA2IDExLjM4OTRMNy45NDE4OCAxMi4wMDgxQzcuOTI3MzggMTIuMDIyNiA3LjkxMzA3IDEyLjAzNjkgNy44OTg5NyAxMi4wNTFDNy41Mjk0MyAxMi40MjA2IDcuMjkyOTYgMTIuNjU3MiA3LjA0OTg2IDEyLjgyMjNDNi4wNTU4OSAxMy40OTc2IDQuNzYyMTkgMTMuNTMyNCAzLjc3MjE0IDEyLjg4MjJDMy41MzA2OCAxMi43MjM3IDMuMjk5NjcgMTIuNDkyNSAyLjk0ODM3IDEyLjE0MTFDMi45MzM3MSAxMi4xMjY0IDIuOTE4ODMgMTIuMTExNiAyLjkwMzc0IDEyLjA5NjVDMi44ODg2NSAxMi4wODE0IDIuODczNzcgMTIuMDY2NSAyLjg1OTEgMTIuMDUxOEMyLjUwNzY2IDExLjcwMDUgMi4yNzY1NiAxMS40Njk1IDIuMTE3OTkgMTEuMjI4MUMxLjQ2NzggMTAuMjM4IDEuNTAyNjUgOC45NDQzMiAyLjE3Nzg4IDcuOTUwMzVDMi4zNDMwMyA3LjcwNzI0IDIuNTc5NTcgNy40NzA3NyAyLjk0OTIyIDcuMTAxMjRDMi45NjMzMyA3LjA4NzEzIDIuOTc3NjMgNy4wNzI4MyAyLjk5MjEzIDcuMDU4MzNMMy42MTA4NSA2LjQzOTYxQzMuODA2MTEgNi4yNDQzNSA0LjEyMjY5IDYuMjQ0MzUgNC4zMTc5NiA2LjQzOTYxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sd249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNSA1LjI1QzEuOTE0MjEgNS4yNSAyLjI1IDQuOTE0MjEgMi4yNSA0LjVDMi4yNSA0LjA4NTc5IDEuOTE0MjEgMy43NSAxLjUgMy43NUMxLjA4NTc5IDMuNzUgMC43NSA0LjA4NTc5IDAuNzUgNC41QzAuNzUgNC45MTQyMSAxLjA4NTc5IDUuMjUgMS41IDUuMjVaTTQgNC41QzQgNC4yMjM4NiA0LjIyMzg2IDQgNC41IDRIMTMuNUMxMy43NzYxIDQgMTQgNC4yMjM4NiAxNCA0LjVDMTQgNC43NzYxNCAxMy43NzYxIDUgMTMuNSA1SDQuNUM0LjIyMzg2IDUgNCA0Ljc3NjE0IDQgNC41Wk00LjUgN0M0LjIyMzg2IDcgNCA3LjIyMzg2IDQgNy41QzQgNy43NzYxNCA0LjIyMzg2IDggNC41IDhIMTMuNUMxMy43NzYxIDggMTQgNy43NzYxNCAxNCA3LjVDMTQgNy4yMjM4NiAxMy43NzYxIDcgMTMuNSA3SDQuNVpNNC41IDEwQzQuMjIzODYgMTAgNCAxMC4yMjM5IDQgMTAuNUM0IDEwLjc3NjEgNC4yMjM4NiAxMSA0LjUgMTFIMTMuNUMxMy43NzYxIDExIDE0IDEwLjc3NjEgMTQgMTAuNUMxNCAxMC4yMjM5IDEzLjc3NjEgMTAgMTMuNSAxMEg0LjVaTTIuMjUgNy41QzIuMjUgNy45MTQyMSAxLjkxNDIxIDguMjUgMS41IDguMjVDMS4wODU3OSA4LjI1IDAuNzUgNy45MTQyMSAwLjc1IDcuNUMwLjc1IDcuMDg1NzkgMS4wODU3OSA2Ljc1IDEuNSA2Ljc1QzEuOTE0MjEgNi43NSAyLjI1IDcuMDg1NzkgMi4yNSA3LjVaTTEuNSAxMS4yNUMxLjkxNDIxIDExLjI1IDIuMjUgMTAuOTE0MiAyLjI1IDEwLjVDMi4yNSAxMC4wODU4IDEuOTE0MjEgOS43NSAxLjUgOS43NUMxLjA4NTc5IDkuNzUgMC43NSAxMC4wODU4IDAuNzUgMTAuNUMwLjc1IDEwLjkxNDIgMS4wODU3OSAxMS4yNSAxLjUgMTEuMjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx5bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSA0LjYzNjAxQzUgMy43NjAzMSA1LjI0MjE5IDMuMTA1NCA1LjY0MzIzIDIuNjczNTdDNi4wMzkzNCAyLjI0NzA1IDYuNjQ1ODIgMS45NzgzIDcuNTAxNCAxLjk3ODNDOC4zNTc0NSAxLjk3ODMgOC45NjMwNiAyLjI0NjUyIDkuMzU4MjMgMi42NzIwOEM5Ljc1ODM4IDMuMTAyOTkgMTAgMy43NTcwOCAxMCA0LjYzMzI1VjUuOTk5OTlINVY0LjYzNjAxWk00IDUuOTk5OTlWNC42MzYwMUM0IDMuNTgxNDggNC4yOTMzOSAyLjY1NzU0IDQuOTEwNDkgMS45OTMwN0M1LjUzMjUyIDEuMzIzMjkgNi40MjY3NSAwLjk3ODMwMiA3LjUwMTQgMC45NzgzMDJDOC41NzU4MyAwLjk3ODMwMiA5LjQ2OTUyIDEuMzIyMzMgMTAuMDkxIDEuOTkxNjJDMTAuNzA3NiAyLjY1NTU3IDExIDMuNTc4OTYgMTEgNC42MzMyNVY1Ljk5OTk5SDEyQzEyLjU1MjMgNS45OTk5OSAxMyA2LjQ0NzcxIDEzIDYuOTk5OTlWMTNDMTMgMTMuNTUyMyAxMi41NTIzIDE0IDEyIDE0SDNDMi40NDc3MiAxNCAyIDEzLjU1MjMgMiAxM1Y2Ljk5OTk5QzIgNi40NDc3MSAyLjQ0NzcyIDUuOTk5OTkgMyA1Ljk5OTk5SDRaTTMgNi45OTk5OUgxMlYxM0gzVjYuOTk5OTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxibj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTg2IDBDNi4zMjU3IDAgNS4zNjEwNyAwLjM4OTQzIDQuNzM3NTMgMS4xOTM2MUM0LjIzNzQ1IDEuODM4NTYgNCAyLjY4MjQyIDQgMy42MzMyNUg1QzUgMi44NDMxMyA1LjE5NjkxIDIuMjMzMTIgNS41Mjc4IDEuODA2MzZDNS45MTYxNSAxLjMwNTUyIDYuNTUxNTIgMSA3LjQ5ODYgMUM4LjM1NjgzIDEgOC45NjMzNiAxLjI2NTAyIDkuMzU4NDYgMS42ODYyM0M5Ljc1NzkzIDIuMTEyMTEgMTAgMi43NjA0NCAxMCAzLjYzNjAxVjZIM0MyLjQ0NzcyIDYgMiA2LjQ0NzcyIDIgN1YxM0MyIDEzLjU1MjMgMi40NDc3MiAxNCAzIDE0SDEyQzEyLjU1MjMgMTQgMTMgMTMuNTUyMyAxMyAxM1Y3QzEzIDYuNDQ3NzEgMTIuNTUyMyA2IDEyIDZIMTFWMy42MzYwMUMxMSAyLjU4MTM1IDEwLjcwNjUgMS42NjE2NyAxMC4wODc4IDEuMDAyMUM5LjQ2NDc3IDAuMzM3ODcxIDguNTcwNjEgMCA3LjQ5ODYgMFpNMyA3SDEyVjEzSDNWN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHhuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05IDMuNjM2MDFDOSAyLjc2MDQ0IDkuMjQyMDcgMi4xMTIxMSA5LjY0MTU0IDEuNjg2MjNDMTAuMDM2NiAxLjI2NTAyIDEwLjY0MzIgMSAxMS41MDE0IDFDMTIuNDQ4NSAxIDEzLjA4MzkgMS4zMDU1MiAxMy40NzIyIDEuODA2MzZDMTMuODAzMSAyLjIzMzEyIDE0IDIuODQzMTMgMTQgMy42MzMyNUgxNUMxNSAyLjY4MjQyIDE0Ljc2MjYgMS44Mzg1NiAxNC4yNjI1IDEuMTkzNjFDMTMuNjM4OSAwLjM4OTQzIDEyLjY3NDMgMCAxMS41MDE0IDBDMTAuNDI5NCAwIDkuNTM1MjMgMC4zMzc4NzEgOC45MTIxOCAxLjAwMjFDOC4yOTM1MSAxLjY2MTY3IDggMi41ODEzNSA4IDMuNjM2MDFWNkgxQzAuNDQ3NzE1IDYgMCA2LjQ0NzcyIDAgN1YxM0MwIDEzLjU1MjMgMC40NDc3MTUgMTQgMSAxNEgxMEMxMC41NTIzIDE0IDExIDEzLjU1MjMgMTEgMTNWN0MxMSA2LjQ0NzcyIDEwLjU1MjMgNiAxMCA2SDlWMy42MzYwMVpNMSA3SDEwVjEzSDFWN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE9uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjM1MzU1IDEuODUzNTVDMy41NDg4MiAxLjY1ODI5IDMuNTQ4ODIgMS4zNDE3MSAzLjM1MzU1IDEuMTQ2NDVDMy4xNTgyOSAwLjk1MTE4NCAyLjg0MTcxIDAuOTUxMTg0IDIuNjQ2NDUgMS4xNDY0NUwwLjY0NjQ0NyAzLjE0NjQ1QzAuNDUxMTg0IDMuMzQxNzEgMC40NTExODQgMy42NTgyOSAwLjY0NjQ0NyAzLjg1MzU1TDIuNjQ2NDUgNS44NTM1NUMyLjg0MTcxIDYuMDQ4ODIgMy4xNTgyOSA2LjA0ODgyIDMuMzUzNTUgNS44NTM1NUMzLjU0ODgyIDUuNjU4MjkgMy41NDg4MiA1LjM0MTcxIDMuMzUzNTUgNS4xNDY0NUwyLjIwNzExIDRIOS41QzExLjQzMyA0IDEzIDUuNTY3IDEzIDcuNUMxMyA3Ljc3NjE0IDEzLjIyMzkgOCAxMy41IDhDMTMuNzc2MSA4IDE0IDcuNzc2MTQgMTQgNy41QzE0IDUuMDE0NzIgMTEuOTg1MyAzIDkuNSAzSDIuMjA3MTFMMy4zNTM1NSAxLjg1MzU1Wk0yIDcuNUMyIDcuMjIzODYgMS43NzYxNCA3IDEuNSA3QzEuMjIzODYgNyAxIDcuMjIzODYgMSA3LjVDMSA5Ljk4NTI4IDMuMDE0NzIgMTIgNS41IDEySDEyLjc5MjlMMTEuNjQ2NCAxMy4xNDY0QzExLjQ1MTIgMTMuMzQxNyAxMS40NTEyIDEzLjY1ODMgMTEuNjQ2NCAxMy44NTM2QzExLjg0MTcgMTQuMDQ4OCAxMi4xNTgzIDE0LjA0ODggMTIuMzUzNiAxMy44NTM2TDE0LjM1MzYgMTEuODUzNkMxNC41NDg4IDExLjY1ODMgMTQuNTQ4OCAxMS4zNDE3IDE0LjM1MzYgMTEuMTQ2NEwxMi4zNTM2IDkuMTQ2NDVDMTIuMTU4MyA4Ljk1MTE4IDExLjg0MTcgOC45NTExOCAxMS42NDY0IDkuMTQ2NDVDMTEuNDUxMiA5LjM0MTcxIDExLjQ1MTIgOS42NTgyOSAxMS42NDY0IDkuODUzNTVMMTIuNzkyOSAxMUg1LjVDMy41NjcgMTEgMiA5LjQzMyAyIDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LExuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy45IDAuNDk5OTc2QzEzLjkgMC4yNzkwNjIgMTMuNzIwOSAwLjA5OTk3NTYgMTMuNSAwLjA5OTk3NTZDMTMuMjc5MSAwLjA5OTk3NTYgMTMuMSAwLjI3OTA2MiAxMy4xIDAuNDk5OTc2VjEuMDk5OThIMTIuNUMxMi4yNzkxIDEuMDk5OTggMTIuMSAxLjI3OTA2IDEyLjEgMS40OTk5OEMxMi4xIDEuNzIwODkgMTIuMjc5MSAxLjg5OTk4IDEyLjUgMS44OTk5OEgxMy4xVjIuNDk5OThDMTMuMSAyLjcyMDg5IDEzLjI3OTEgMi44OTk5OCAxMy41IDIuODk5OThDMTMuNzIwOSAyLjg5OTk4IDEzLjkgMi43MjA4OSAxMy45IDIuNDk5OThWMS44OTk5OEgxNC41QzE0LjcyMDkgMS44OTk5OCAxNC45IDEuNzIwODkgMTQuOSAxLjQ5OTk4QzE0LjkgMS4yNzkwNiAxNC43MjA5IDEuMDk5OTggMTQuNSAxLjA5OTk4SDEzLjlWMC40OTk5NzZaTTExLjg1MzYgMy4xNDY0MkMxMi4wNDg4IDMuMzQxNjggMTIuMDQ4OCAzLjY1ODI2IDExLjg1MzYgMy44NTM1M0wxMC44NTM2IDQuODUzNTNDMTAuNjU4MyA1LjA0ODc5IDEwLjM0MTcgNS4wNDg3OSAxMC4xNDY1IDQuODUzNTNDOS45NTEyIDQuNjU4MjcgOS45NTEyIDQuMzQxNjkgMTAuMTQ2NSA0LjE0NjQyTDExLjE0NjQgMy4xNDY0M0MxMS4zNDE3IDIuOTUxMTYgMTEuNjU4MyAyLjk1MTE2IDExLjg1MzYgMy4xNDY0MlpNOS44NTM1NyA1LjE0NjQyQzEwLjA0ODggNS4zNDE2OCAxMC4wNDg4IDUuNjU4MjcgOS44NTM1NyA1Ljg1MzUzTDIuODUzNTUgMTIuODUzNUMyLjY1ODI5IDEzLjA0ODggMi4zNDE3MSAxMy4wNDg4IDIuMTQ2NDUgMTIuODUzNUMxLjk1MTE4IDEyLjY1ODMgMS45NTExOCAxMi4zNDE3IDIuMTQ2NDUgMTIuMTQ2NEw5LjE0NjQ2IDUuMTQ2NDJDOS4zNDE3MiA0Ljk1MTE2IDkuNjU4MzEgNC45NTExNiA5Ljg1MzU3IDUuMTQ2NDJaTTEzLjUgNS4wOTk5OEMxMy43MjA5IDUuMDk5OTggMTMuOSA1LjI3OTA2IDEzLjkgNS40OTk5OFY2LjA5OTk4SDE0LjVDMTQuNzIwOSA2LjA5OTk4IDE0LjkgNi4yNzkwNiAxNC45IDYuNDk5OThDMTQuOSA2LjcyMDg5IDE0LjcyMDkgNi44OTk5OCAxNC41IDYuODk5OThIMTMuOVY3LjQ5OTk4QzEzLjkgNy43MjA4OSAxMy43MjA5IDcuODk5OTggMTMuNSA3Ljg5OTk4QzEzLjI3OTEgNy44OTk5OCAxMy4xIDcuNzIwODkgMTMuMSA3LjQ5OTk4VjYuODk5OThIMTIuNUMxMi4yNzkxIDYuODk5OTggMTIuMSA2LjcyMDg5IDEyLjEgNi40OTk5OEMxMi4xIDYuMjc5MDYgMTIuMjc5MSA2LjA5OTk4IDEyLjUgNi4wOTk5OEgxMy4xVjUuNDk5OThDMTMuMSA1LjI3OTA2IDEzLjI3OTEgNS4wOTk5OCAxMy41IDUuMDk5OThaTTguOTAwMDIgMC40OTk5NzZDOC45MDAwMiAwLjI3OTA2MiA4LjcyMDkzIDAuMDk5OTc1NiA4LjUwMDAyIDAuMDk5OTc1NkM4LjI3OTEgMC4wOTk5NzU2IDguMTAwMDIgMC4yNzkwNjIgOC4xMDAwMiAwLjQ5OTk3NlYxLjA5OTk4SDcuNTAwMDJDNy4yNzkxIDEuMDk5OTggNy4xMDAwMiAxLjI3OTA2IDcuMTAwMDIgMS40OTk5OEM3LjEwMDAyIDEuNzIwODkgNy4yNzkxIDEuODk5OTggNy41MDAwMiAxLjg5OTk4SDguMTAwMDJWMi40OTk5OEM4LjEwMDAyIDIuNzIwODkgOC4yNzkxIDIuODk5OTggOC41MDAwMiAyLjg5OTk4QzguNzIwOTMgMi44OTk5OCA4LjkwMDAyIDIuNzIwODkgOC45MDAwMiAyLjQ5OTk4VjEuODk5OThIOS41MDAwMkM5LjcyMDkzIDEuODk5OTggOS45MDAwMiAxLjcyMDg5IDkuOTAwMDIgMS40OTk5OEM5LjkwMDAyIDEuMjc5MDYgOS43MjA5MyAxLjA5OTk4IDkuNTAwMDIgMS4wOTk5OEg4LjkwMDAyVjAuNDk5OTc2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sX249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwIDYuNUMxMCA4LjQzMyA4LjQzMyAxMCA2LjUgMTBDNC41NjcgMTAgMyA4LjQzMyAzIDYuNUMzIDQuNTY3IDQuNTY3IDMgNi41IDNDOC40MzMgMyAxMCA0LjU2NyAxMCA2LjVaTTkuMzA4ODQgMTAuMDE1OUM4LjUzOTAxIDEwLjYzMTggNy41NjI1MSAxMSA2LjUgMTFDNC4wMTQ3MiAxMSAyIDguOTg1MjggMiA2LjVDMiA0LjAxNDcyIDQuMDE0NzIgMiA2LjUgMkM4Ljk4NTI4IDIgMTEgNC4wMTQ3MiAxMSA2LjVDMTEgNy41NjI1MSAxMC42MzE4IDguNTM5MDEgMTAuMDE1OSA5LjMwODg0TDEyLjg1MzYgMTIuMTQ2NEMxMy4wNDg4IDEyLjM0MTcgMTMuMDQ4OCAxMi42NTgzIDEyLjg1MzYgMTIuODUzNkMxMi42NTgzIDEzLjA0ODggMTIuMzQxNyAxMy4wNDg4IDEyLjE0NjQgMTIuODUzNkw5LjMwODg0IDEwLjAxNTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxNbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS40OTk4OCAyLjAwMDEyQzEuNzc2MDIgMi4wMDAxMiAxLjk5OTg4IDEuNzc2MjYgMS45OTk4OCAxLjUwMDEyQzEuOTk5ODggMS4yMjM5OCAxLjc3NjAyIDEuMDAwMTIgMS40OTk4OCAxLjAwMDEyQzEuMjIzNzQgMS4wMDAxMiAwLjk5OTg3OCAxLjIyMzk4IDAuOTk5ODc4IDEuNTAwMTJDMC45OTk4NzggMS43NzYyNiAxLjIyMzc0IDIuMDAwMTIgMS40OTk4OCAyLjAwMDEyWk00LjQ5OTg4IDIuMDAwMTJDNC43NzYwMiAyLjAwMDEyIDQuOTk5ODggMS43NzYyNiA0Ljk5OTg4IDEuNTAwMTJDNC45OTk4OCAxLjIyMzk4IDQuNzc2MDIgMS4wMDAxMiA0LjQ5OTg4IDEuMDAwMTJDNC4yMjM3NCAxLjAwMDEyIDMuOTk5ODggMS4yMjM5OCAzLjk5OTg4IDEuNTAwMTJDMy45OTk4OCAxLjc3NjI2IDQuMjIzNzQgMi4wMDAxMiA0LjQ5OTg4IDIuMDAwMTJaTTcuOTk5ODggMS41MDAxMkM3Ljk5OTg4IDEuNzc2MjYgNy43NzYwMiAyLjAwMDEyIDcuNDk5ODggMi4wMDAxMkM3LjIyMzc0IDIuMDAwMTIgNi45OTk4OCAxLjc3NjI2IDYuOTk5ODggMS41MDAxMkM2Ljk5OTg4IDEuMjIzOTggNy4yMjM3NCAxLjAwMDEyIDcuNDk5ODggMS4wMDAxMkM3Ljc3NjAyIDEuMDAwMTIgNy45OTk4OCAxLjIyMzk4IDcuOTk5ODggMS41MDAxMlpNMTAuNDk5OSAyLjAwMDEyQzEwLjc3NiAyLjAwMDEyIDEwLjk5OTkgMS43NzYyNiAxMC45OTk5IDEuNTAwMTJDMTAuOTk5OSAxLjIyMzk4IDEwLjc3NiAxLjAwMDEyIDEwLjQ5OTkgMS4wMDAxMkMxMC4yMjM3IDEuMDAwMTIgOS45OTk4OCAxLjIyMzk4IDkuOTk5ODggMS41MDAxMkM5Ljk5OTg4IDEuNzc2MjYgMTAuMjIzNyAyLjAwMDEyIDEwLjQ5OTkgMi4wMDAxMlpNMTMuOTk5OSAxLjUwMDEyQzEzLjk5OTkgMS43NzYyNiAxMy43NzYgMi4wMDAxMiAxMy40OTk5IDIuMDAwMTJDMTMuMjIzNyAyLjAwMDEyIDEyLjk5OTkgMS43NzYyNiAxMi45OTk5IDEuNTAwMTJDMTIuOTk5OSAxLjIyMzk4IDEzLjIyMzcgMS4wMDAxMiAxMy40OTk5IDEuMDAwMTJDMTMuNzc2IDEuMDAwMTIgMTMuOTk5OSAxLjIyMzk4IDEzLjk5OTkgMS41MDAxMlpNMS40OTk4OCAxNC4wMDAxQzEuNzc2MDIgMTQuMDAwMSAxLjk5OTg4IDEzLjc3NjMgMS45OTk4OCAxMy41MDAxQzEuOTk5ODggMTMuMjI0IDEuNzc2MDIgMTMuMDAwMSAxLjQ5OTg4IDEzLjAwMDFDMS4yMjM3NCAxMy4wMDAxIDAuOTk5ODc4IDEzLjIyNCAwLjk5OTg3OCAxMy41MDAxQzAuOTk5ODc4IDEzLjc3NjMgMS4yMjM3NCAxNC4wMDAxIDEuNDk5ODggMTQuMDAwMVpNMS45OTk4OCAxMC41MDAxQzEuOTk5ODggMTAuNzc2MyAxLjc3NjAyIDExLjAwMDEgMS40OTk4OCAxMS4wMDAxQzEuMjIzNzQgMTEuMDAwMSAwLjk5OTg3OCAxMC43NzYzIDAuOTk5ODc4IDEwLjUwMDFDMC45OTk4NzggMTAuMjI0IDEuMjIzNzQgMTAuMDAwMSAxLjQ5OTg4IDEwLjAwMDFDMS43NzYwMiAxMC4wMDAxIDEuOTk5ODggMTAuMjI0IDEuOTk5ODggMTAuNTAwMVpNMS40OTk4OCA4LjAwMDEyQzEuNzc2MDIgOC4wMDAxMiAxLjk5OTg4IDcuNzc2MjYgMS45OTk4OCA3LjUwMDEyQzEuOTk5ODggNy4yMjM5OCAxLjc3NjAyIDcuMDAwMTIgMS40OTk4OCA3LjAwMDEyQzEuMjIzNzQgNy4wMDAxMiAwLjk5OTg3OCA3LjIyMzk4IDAuOTk5ODc4IDcuNTAwMTJDMC45OTk4NzggNy43NzYyNiAxLjIyMzc0IDguMDAwMTIgMS40OTk4OCA4LjAwMDEyWk0xLjk5OTg4IDQuNTAwMTJDMS45OTk4OCA0Ljc3NjI2IDEuNzc2MDIgNS4wMDAxMiAxLjQ5OTg4IDUuMDAwMTJDMS4yMjM3NCA1LjAwMDEyIDAuOTk5ODc4IDQuNzc2MjYgMC45OTk4NzggNC41MDAxMkMwLjk5OTg3OCA0LjIyMzk4IDEuMjIzNzQgNC4wMDAxMiAxLjQ5OTg4IDQuMDAwMTJDMS43NzYwMiA0LjAwMDEyIDEuOTk5ODggNC4yMjM5OCAxLjk5OTg4IDQuNTAwMTJaTTEzLjQ5OTkgMTEuMDAwMUMxMy43NzYgMTEuMDAwMSAxMy45OTk5IDEwLjc3NjMgMTMuOTk5OSAxMC41MDAxQzEzLjk5OTkgMTAuMjI0IDEzLjc3NiAxMC4wMDAxIDEzLjQ5OTkgMTAuMDAwMUMxMy4yMjM3IDEwLjAwMDEgMTIuOTk5OSAxMC4yMjQgMTIuOTk5OSAxMC41MDAxQzEyLjk5OTkgMTAuNzc2MyAxMy4yMjM3IDExLjAwMDEgMTMuNDk5OSAxMS4wMDAxWk0xMy45OTk5IDcuNTAwMTJDMTMuOTk5OSA3Ljc3NjI2IDEzLjc3NiA4LjAwMDEyIDEzLjQ5OTkgOC4wMDAxMkMxMy4yMjM3IDguMDAwMTIgMTIuOTk5OSA3Ljc3NjI2IDEyLjk5OTkgNy41MDAxMkMxMi45OTk5IDcuMjIzOTggMTMuMjIzNyA3LjAwMDEyIDEzLjQ5OTkgNy4wMDAxMkMxMy43NzYgNy4wMDAxMiAxMy45OTk5IDcuMjIzOTggMTMuOTk5OSA3LjUwMDEyWk0xMy40OTk5IDUuMDAwMTJDMTMuNzc2IDUuMDAwMTIgMTMuOTk5OSA0Ljc3NjI2IDEzLjk5OTkgNC41MDAxMkMxMy45OTk5IDQuMjIzOTggMTMuNzc2IDQuMDAwMTIgMTMuNDk5OSA0LjAwMDEyQzEzLjIyMzcgNC4wMDAxMiAxMi45OTk5IDQuMjIzOTggMTIuOTk5OSA0LjUwMDEyQzEyLjk5OTkgNC43NzYyNiAxMy4yMjM3IDUuMDAwMTIgMTMuNDk5OSA1LjAwMDEyWk00Ljk5OTg4IDEzLjUwMDFDNC45OTk4OCAxMy43NzYzIDQuNzc2MDIgMTQuMDAwMSA0LjQ5OTg4IDE0LjAwMDFDNC4yMjM3NCAxNC4wMDAxIDMuOTk5ODggMTMuNzc2MyAzLjk5OTg4IDEzLjUwMDFDMy45OTk4OCAxMy4yMjQgNC4yMjM3NCAxMy4wMDAxIDQuNDk5ODggMTMuMDAwMUM0Ljc3NjAyIDEzLjAwMDEgNC45OTk4OCAxMy4yMjQgNC45OTk4OCAxMy41MDAxWk03LjQ5OTg4IDE0LjAwMDFDNy43NzYwMiAxNC4wMDAxIDcuOTk5ODggMTMuNzc2MyA3Ljk5OTg4IDEzLjUwMDFDNy45OTk4OCAxMy4yMjQgNy43NzYwMiAxMy4wMDAxIDcuNDk5ODggMTMuMDAwMUM3LjIyMzc0IDEzLjAwMDEgNi45OTk4OCAxMy4yMjQgNi45OTk4OCAxMy41MDAxQzYuOTk5ODggMTMuNzc2MyA3LjIyMzc0IDE0LjAwMDEgNy40OTk4OCAxNC4wMDAxWk0xMC45OTk5IDEzLjUwMDFDMTAuOTk5OSAxMy43NzYzIDEwLjc3NiAxNC4wMDAxIDEwLjQ5OTkgMTQuMDAwMUMxMC4yMjM3IDE0LjAwMDEgOS45OTk4OCAxMy43NzYzIDkuOTk5ODggMTMuNTAwMUM5Ljk5OTg4IDEzLjIyNCAxMC4yMjM3IDEzLjAwMDEgMTAuNDk5OSAxMy4wMDAxQzEwLjc3NiAxMy4wMDAxIDEwLjk5OTkgMTMuMjI0IDEwLjk5OTkgMTMuNTAwMVpNMTMuNDk5OSAxNC4wMDAxQzEzLjc3NiAxNC4wMDAxIDEzLjk5OTkgMTMuNzc2MyAxMy45OTk5IDEzLjUwMDFDMTMuOTk5OSAxMy4yMjQgMTMuNzc2IDEzLjAwMDEgMTMuNDk5OSAxMy4wMDAxQzEzLjIyMzcgMTMuMDAwMSAxMi45OTk5IDEzLjIyNCAxMi45OTk5IDEzLjUwMDFDMTIuOTk5OSAxMy43NzYzIDEzLjIyMzcgMTQuMDAwMSAxMy40OTk5IDE0LjAwMDFaTTMuOTk5ODggNS4wMDAxMkMzLjk5OTg4IDQuNDQ3ODQgNC40NDc1OSA0LjAwMDEyIDQuOTk5ODggNC4wMDAxMkg5Ljk5OTg4QzEwLjU1MjIgNC4wMDAxMiAxMC45OTk5IDQuNDQ3ODQgMTAuOTk5OSA1LjAwMDEyVjEwLjAwMDFDMTAuOTk5OSAxMC41NTI0IDEwLjU1MjIgMTEuMDAwMSA5Ljk5OTg4IDExLjAwMDFINC45OTk4OEM0LjQ0NzU5IDExLjAwMDEgMy45OTk4OCAxMC41NTI0IDMuOTk5ODggMTAuMDAwMVY1LjAwMDEyWk00Ljk5OTg4IDUuMDAwMTJIOS45OTk4OFYxMC4wMDAxSDQuOTk5ODhWNS4wMDAxMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGpuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDJIMTRWMTNIMUwxIDJaTTAgMkMwIDEuNDQ3NzIgMC40NDc3MTUgMSAxIDFIMTRDMTQuNTUyMyAxIDE1IDEuNDQ3NzIgMTUgMlYxM0MxNSAxMy41NTIzIDE0LjU1MjMgMTQgMTQgMTRIMUMwLjQ0NzcxNSAxNCAwIDEzLjU1MjMgMCAxM1YyWk00Ljg3NSA3LjVDNC44NzUgNi4wNTAyNSA2LjA1MDI1IDQuODc1IDcuNSA0Ljg3NUM4Ljk0OTc1IDQuODc1IDEwLjEyNSA2LjA1MDI1IDEwLjEyNSA3LjVDMTAuMTI1IDguOTQ5NzUgOC45NDk3NSAxMC4xMjUgNy41IDEwLjEyNUM2LjA1MDI1IDEwLjEyNSA0Ljg3NSA4Ljk0OTc1IDQuODc1IDcuNVpNNy41IDMuODc1QzUuNDk3OTcgMy44NzUgMy44NzUgNS40OTc5NyAzLjg3NSA3LjVDMy44NzUgOS41MDIwMyA1LjQ5Nzk3IDExLjEyNSA3LjUgMTEuMTI1QzkuNTAyMDMgMTEuMTI1IDExLjEyNSA5LjUwMjAzIDExLjEyNSA3LjVDMTEuMTI1IDUuNDk3OTcgOS41MDIwMyAzLjg3NSA3LjUgMy44NzVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxFbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMSAxQzAuNDQ3NzE1IDEgMCAxLjQ0NzcyIDAgMlYxM0MwIDEzLjU1MjMgMC40NDc3MTUgMTQgMSAxNEgxNEMxNC41NTIzIDE0IDE1IDEzLjU1MjMgMTUgMTNWMkMxNSAxLjQ0NzcyIDE0LjU1MjMgMSAxNCAxSDFaTTcuNSAxMC42MjVDOS4yMjU4OSAxMC42MjUgMTAuNjI1IDkuMjI1ODkgMTAuNjI1IDcuNUMxMC42MjUgNS43NzQxMSA5LjIyNTg5IDQuMzc1IDcuNSA0LjM3NUM1Ljc3NDExIDQuMzc1IDQuMzc1IDUuNzc0MTEgNC4zNzUgNy41QzQuMzc1IDkuMjI1ODkgNS43NzQxMSAxMC42MjUgNy41IDEwLjYyNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFNuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjI1IDcuNUMyLjI1IDcuMjIzODYgMi40NzM4NiA3IDIuNzUgN0gxMi4yNUMxMi41MjYxIDcgMTIuNzUgNy4yMjM4NiAxMi43NSA3LjVDMTIuNzUgNy43NzYxNCAxMi41MjYxIDggMTIuMjUgOEgyLjc1QzIuNDczODYgOCAyLjI1IDcuNzc2MTQgMi4yNSA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxQbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3Njg5MkMzLjg0MjIyIDAuODc2ODkyIDAuODc3MDc1IDMuODQyMDQgMC44NzcwNzUgNy40OTk3MkMwLjg3NzA3NSAxMS4xNTc0IDMuODQyMjIgMTQuMTIyNiA3LjQ5OTkxIDE0LjEyMjZDMTEuMTU3NiAxNC4xMjI2IDE0LjEyMjcgMTEuMTU3NCAxNC4xMjI3IDcuNDk5NzJDMTQuMTIyNyAzLjg0MjA0IDExLjE1NzYgMC44NzY4OTIgNy40OTk5MSAwLjg3Njg5MlpNMS44MjcwNyA3LjQ5OTcyQzEuODI3MDcgNC4zNjY3MSA0LjM2Njg5IDEuODI2ODkgNy40OTk5MSAxLjgyNjg5QzEwLjYzMjkgMS44MjY4OSAxMy4xNzI3IDQuMzY2NzEgMTMuMTcyNyA3LjQ5OTcyQzEzLjE3MjcgMTAuNjMyNyAxMC42MzI5IDEzLjE3MjYgNy40OTk5MSAxMy4xNzI2QzQuMzY2ODkgMTMuMTcyNiAxLjgyNzA3IDEwLjYzMjcgMS44MjcwNyA3LjQ5OTcyWk00LjUwMDAzIDdDNC4yMjM4OSA3IDQuMDAwMDMgNy4yMjM4NiA0LjAwMDAzIDcuNUM0LjAwMDAzIDcuNzc2MTQgNC4yMjM4OSA4IDQuNTAwMDMgOEgxMC41QzEwLjc3NjIgOCAxMSA3Ljc3NjE0IDExIDcuNUMxMSA3LjIyMzg2IDEwLjc3NjIgNyAxMC41IDdINC41MDAwM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEhuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjE0OTIxIDMuOTk5OTZDMi4xNDkyMSAyLjk3Nzc4IDIuOTc3ODQgMi4xNDkxNSA0LjAwMDAyIDIuMTQ5MTVDNS4wMjIxOSAyLjE0OTE1IDUuODUwODMgMi45Nzc3OCA1Ljg1MDgzIDMuOTk5OTZDNS44NTA4MyA1LjAyMjEzIDUuMDIyMTkgNS44NTA3NyA0LjAwMDAyIDUuODUwNzdDMi45Nzc4NCA1Ljg1MDc3IDIuMTQ5MjEgNS4wMjIxMyAyLjE0OTIxIDMuOTk5OTZaTTQuMDAwMDIgMS4yNDkxNUMyLjQ4MDc5IDEuMjQ5MTUgMS4yNDkyMSAyLjQ4MDczIDEuMjQ5MjEgMy45OTk5NkMxLjI0OTIxIDUuNTE5MTkgMi40ODA3OSA2Ljc1MDc3IDQuMDAwMDIgNi43NTA3N0M1LjUxOTI1IDYuNzUwNzcgNi43NTA4MyA1LjUxOTE5IDYuNzUwODMgMy45OTk5NkM2Ljc1MDgzIDIuNDgwNzMgNS41MTkyNSAxLjI0OTE1IDQuMDAwMDIgMS4yNDkxNVpNNS44MjAzNCAxMS4wMDAxTDIuNDk5OTggMTIuODM2OVY5LjE2MzMxTDUuODIwMzQgMTEuMDAwMVpNMi42Mzg4MyA4LjIxMTU5QzIuMTcyMjggNy45NTM1IDEuNTk5OTggOC4yOTA5MyAxLjU5OTk4IDguODI0MTFWMTMuMTc2MUMxLjU5OTk4IDEzLjcwOTMgMi4xNzIyOCAxNC4wNDY3IDIuNjM4ODMgMTMuNzg4Nkw2LjU3MjM1IDExLjYxMjZDNy4wNTM4OSAxMS4zNDYyIDcuMDUzODkgMTAuNjU0IDYuNTcyMzUgMTAuMzg3NkwyLjYzODgzIDguMjExNTlaTTguMzAwMDEgOS4wMDAwM0M4LjMwMDAxIDguNjEzNDMgOC42MTM0MSA4LjMwMDAzIDkuMDAwMDEgOC4zMDAwM0gxM0MxMy4zODY2IDguMzAwMDMgMTMuNyA4LjYxMzQzIDEzLjcgOS4wMDAwM1YxM0MxMy43IDEzLjM4NjYgMTMuMzg2NiAxMy43IDEzIDEzLjdIOS4wMDAwMUM4LjYxMzQxIDEzLjcgOC4zMDAwMSAxMy4zODY2IDguMzAwMDEgMTNWOS4wMDAwM1pNOS4yMDAwMSA5LjIwMDAzVjEyLjhIMTIuOFY5LjIwMDAzSDkuMjAwMDFaTTEzLjQ0MzIgMi4xOTMxMUMxMy42MTg5IDIuMDE3MzcgMTMuNjE4OSAxLjczMjQ1IDEzLjQ0MzIgMS41NTY3MUMxMy4yNjc1IDEuMzgwOTggMTIuOTgyNiAxLjM4MDk4IDEyLjgwNjggMS41NTY3MUwxMSAzLjM2MzUzTDkuMTkzMjEgMS41NTY3NEM5LjAxNzQ4IDEuMzgxIDguNzMyNTUgMS4zODEgOC41NTY4MiAxLjU1Njc0QzguMzgxMDggMS43MzI0NyA4LjM4MTA4IDIuMDE3NCA4LjU1NjgyIDIuMTkzMTNMMTAuMzYzNiAzLjk5OTkyTDguNTU2ODIgNS44MDY3MUM4LjM4MTA4IDUuOTgyNDUgOC4zODEwOCA2LjI2NzM3IDguNTU2ODIgNi40NDMxMUM4LjczMjU1IDYuNjE4ODUgOS4wMTc0OCA2LjYxODg1IDkuMTkzMjEgNi40NDMxMUwxMSA0LjYzNjMyTDEyLjgwNjggNi40NDMxNEMxMi45ODI2IDYuNjE4ODcgMTMuMjY3NSA2LjYxODg3IDEzLjQ0MzIgNi40NDMxNEMxMy42MTg5IDYuMjY3NCAxMy42MTg5IDUuOTgyNDcgMTMuNDQzMiA1LjgwNjc0TDExLjYzNjQgMy45OTk5MkwxMy40NDMyIDIuMTkzMTFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxrbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS41IDNDNC42NzE1NyAzIDQgMy42NzE1NyA0IDQuNUM0IDUuMzI4NDMgNC42NzE1NyA2IDUuNSA2QzYuMzI4NDMgNiA3IDUuMzI4NDMgNyA0LjVDNyAzLjY3MTU3IDYuMzI4NDMgMyA1LjUgM1pNMyA1QzMuMDE2NzEgNSAzLjAzMzIzIDQuOTk5MTggMy4wNDk1MiA0Ljk5NzU4QzMuMjgwMjIgNi4xMzk5IDQuMjg5NjcgNyA1LjUgN0M2LjcxMDMzIDcgNy43MTk3OCA2LjEzOTkgNy45NTA0OCA0Ljk5NzU4QzcuOTY2NzcgNC45OTkxOCA3Ljk4MzI5IDUgOCA1SDEzLjVDMTMuNzc2MSA1IDE0IDQuNzc2MTQgMTQgNC41QzE0IDQuMjIzODYgMTMuNzc2MSA0IDEzLjUgNEg4QzcuOTgzMjkgNCA3Ljk2Njc3IDQuMDAwODIgNy45NTA0OCA0LjAwMjQyQzcuNzE5NzggMi44NjAwOSA2LjcxMDMzIDIgNS41IDJDNC4yODk2NyAyIDMuMjgwMjIgMi44NjAwOSAzLjA0OTUyIDQuMDAyNDJDMy4wMzMyMyA0LjAwMDgyIDMuMDE2NzEgNCAzIDRIMS41QzEuMjIzODYgNCAxIDQuMjIzODYgMSA0LjVDMSA0Ljc3NjE0IDEuMjIzODYgNSAxLjUgNUgzWk0xMS45NTA1IDEwLjk5NzZDMTEuNzE5OCAxMi4xMzk5IDEwLjcxMDMgMTMgOS41IDEzQzguMjg5NjcgMTMgNy4yODAyMiAxMi4xMzk5IDcuMDQ5NTIgMTAuOTk3NkM3LjAzMzIzIDEwLjk5OTIgNy4wMTY3MSAxMSA3IDExSDEuNUMxLjIyMzg2IDExIDEgMTAuNzc2MSAxIDEwLjVDMSAxMC4yMjM5IDEuMjIzODYgMTAgMS41IDEwSDdDNy4wMTY3MSAxMCA3LjAzMzIzIDEwLjAwMDggNy4wNDk1MiAxMC4wMDI0QzcuMjgwMjIgOC44NjAxIDguMjg5NjcgOCA5LjUgOEMxMC43MTAzIDggMTEuNzE5OCA4Ljg2MDEgMTEuOTUwNSAxMC4wMDI0QzExLjk2NjggMTAuMDAwOCAxMS45ODMzIDEwIDEyIDEwSDEzLjVDMTMuNzc2MSAxMCAxNCAxMC4yMjM5IDE0IDEwLjVDMTQgMTAuNzc2MSAxMy43NzYxIDExIDEzLjUgMTFIMTJDMTEuOTgzMyAxMSAxMS45NjY4IDEwLjk5OTIgMTEuOTUwNSAxMC45OTc2Wk04IDEwLjVDOCA5LjY3MTU3IDguNjcxNTcgOSA5LjUgOUMxMC4zMjg0IDkgMTEgOS42NzE1NyAxMSAxMC41QzExIDExLjMyODQgMTAuMzI4NCAxMiA5LjUgMTJDOC42NzE1NyAxMiA4IDExLjMyODQgOCAxMC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUgMS41QzUgMS4yMjM4NiA0Ljc3NjE0IDEgNC41IDFDNC4yMjM4NiAxIDQgMS4yMjM4NiA0IDEuNUw0IDdDNCA3LjAxNjcxIDQuMDAwODIgNy4wMzMyMyA0LjAwMjQyIDcuMDQ5NTJDMi44NjAwOSA3LjI4MDIyIDIgOC4yODk2NyAyIDkuNUMyIDEwLjcxMDMgMi44NjAwOSAxMS43MTk4IDQuMDAyNDIgMTEuOTUwNUM0LjAwMDgyIDExLjk2NjggNCAxMS45ODMzIDQgMTJWMTMuNUM0IDEzLjc3NjEgNC4yMjM4NiAxNCA0LjUgMTRDNC43NzYxNCAxNCA1IDEzLjc3NjEgNSAxMy41VjEyQzUgMTEuOTgzMyA0Ljk5OTE4IDExLjk2NjggNC45OTc1OCAxMS45NTA1QzYuMTM5OSAxMS43MTk4IDcgMTAuNzEwMyA3IDkuNUM3IDguMjg5NjcgNi4xMzk5IDcuMjgwMjIgNC45OTc1OCA3LjA0OTUyQzQuOTk5MTggNy4wMzMyMyA1IDcuMDE2NzEgNSA3TDUgMS41Wk0xMSAxLjVDMTEgMS4yMjM4NiAxMC43NzYxIDEgMTAuNSAxQzEwLjIyMzkgMSAxMCAxLjIyMzg2IDEwIDEuNVYzQzEwIDMuMDE2NzEgMTAuMDAwOCAzLjAzMzIzIDEwLjAwMjQgMy4wNDk1MkM4Ljg2MDEgMy4yODAyMiA4IDQuMjg5NjcgOCA1LjVDOCA2LjcxMDMzIDguODYwMSA3LjcxOTc4IDEwLjAwMjQgNy45NTA0OEMxMC4wMDA4IDcuOTY2NzcgMTAgNy45ODMyOSAxMCA4VjEzLjVDMTAgMTMuNzc2MSAxMC4yMjM5IDE0IDEwLjUgMTRDMTAuNzc2MSAxNCAxMSAxMy43NzYxIDExIDEzLjVWOEMxMSA3Ljk4MzI5IDEwLjk5OTIgNy45NjY3NyAxMC45OTc2IDcuOTUwNDhDMTIuMTM5OSA3LjcxOTc4IDEzIDYuNzEwMzMgMTMgNS41QzEzIDQuMjg5NjcgMTIuMTM5OSAzLjI4MDIyIDEwLjk5NzYgMy4wNDk1MkMxMC45OTkyIDMuMDMzMjMgMTEgMy4wMTY3MSAxMSAzVjEuNVpNNC41IDhDMy42NzE1NyA4IDMgOC42NzE1NyAzIDkuNUMzIDEwLjMyODQgMy42NzE1NyAxMSA0LjUgMTFDNS4zMjg0MyAxMSA2IDEwLjMyODQgNiA5LjVDNiA4LjY3MTU3IDUuMzI4NDMgOCA0LjUgOFpNOSA1LjVDOSA0LjY3MTU3IDkuNjcxNTcgNCAxMC41IDRDMTEuMzI4NCA0IDEyIDQuNjcxNTcgMTIgNS41QzEyIDYuMzI4NDMgMTEuMzI4NCA3IDEwLjUgN0M5LjY3MTU3IDcgOSA2LjMyODQzIDkgNS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMjU5MjUgMy4xNjY2N0w0LjM3MDM2IDUuMzMzMzNWMUw3LjI1OTI1IDMuMTY2NjdaTTEgOC4yMjIyMkwzLjg4ODg5IDYuMDU1NTVMMSAzLjg4ODg5VjguMjIyMjJaTTEgMTRMMy44ODg4OSAxMS44MzMzTDEgOS42NjY2NlYxNFpNNy43NDA3MiA4LjIyMjIyTDEwLjYyOTYgNi4wNTU1NUw3Ljc0MDcyIDMuODg4ODlWOC4yMjIyMlpNMTQgMy4xNjY2N0wxMS4xMTExIDUuMzMzMzNWMUwxNCAzLjE2NjY3Wk0xMS4xMTExIDExLjExMTFMMTQgOC45NDQ0NEwxMS4xMTExIDYuNzc3NzdWMTEuMTExMVpNMy44ODg4OSAxMS4xMTExTDEgOC45NDQ0NEwzLjg4ODg5IDYuNzc3NzdWMTEuMTExMVpNNC4zNzAzNiA2LjA1NTU1TDcuMjU5MjUgOC4yMjIyMlYzLjg4ODg5TDQuMzcwMzYgNi4wNTU1NVpNMy44ODg4OSA1LjMzMzMzTDEgMy4xNjY2N0wzLjg4ODg5IDFWNS4zMzMzM1pNNy43NDA3MiAzLjE2NjY3TDEwLjYyOTYgNS4zMzMzM1YxTDcuNzQwNzIgMy4xNjY2N1pNMTQgOC4yMjIyMkwxMS4xMTExIDYuMDU1NTVMMTQgMy44ODg4OVY4LjIyMjIyWk0xMS4xMTExIDExLjgzMzNMMTQgMTRWOS42NjY2NkwxMS4xMTExIDExLjgzMzNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxJbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi44OTk5OCAwLjQ5OTk3NkMyLjg5OTk4IDAuMjc5MDYyIDIuNzIwODkgMC4wOTk5NzU2IDIuNDk5OTggMC4wOTk5NzU2QzIuMjc5MDYgMC4wOTk5NzU2IDIuMDk5OTggMC4yNzkwNjIgMi4wOTk5OCAwLjQ5OTk3NlYxLjA5OTk4SDEuNDk5OThDMS4yNzkwNiAxLjA5OTk4IDEuMDk5OTggMS4yNzkwNiAxLjA5OTk4IDEuNDk5OThDMS4wOTk5OCAxLjcyMDg5IDEuMjc5MDYgMS44OTk5OCAxLjQ5OTk4IDEuODk5OThIMi4wOTk5OFYyLjQ5OTk4QzIuMDk5OTggMi43MjA4OSAyLjI3OTA2IDIuODk5OTggMi40OTk5OCAyLjg5OTk4QzIuNzIwODkgMi44OTk5OCAyLjg5OTk4IDIuNzIwODkgMi44OTk5OCAyLjQ5OTk4VjEuODk5OThIMy40OTk5OEMzLjcyMDg5IDEuODk5OTggMy44OTk5OCAxLjcyMDg5IDMuODk5OTggMS40OTk5OEMzLjg5OTk4IDEuMjc5MDYgMy43MjA4OSAxLjA5OTk4IDMuNDk5OTggMS4wOTk5OEgyLjg5OTk4VjAuNDk5OTc2Wk01Ljg5OTk4IDMuNDk5OThDNS44OTk5OCAzLjI3OTA2IDUuNzIwODkgMy4wOTk5OCA1LjQ5OTk4IDMuMDk5OThDNS4yNzkwNiAzLjA5OTk4IDUuMDk5OTggMy4yNzkwNiA1LjA5OTk4IDMuNDk5OThWNC4wOTk5OEg0LjQ5OTk4QzQuMjc5MDYgNC4wOTk5OCA0LjA5OTk4IDQuMjc5MDYgNC4wOTk5OCA0LjQ5OTk4QzQuMDk5OTggNC43MjA4OSA0LjI3OTA2IDQuODk5OTggNC40OTk5OCA0Ljg5OTk4SDUuMDk5OThWNS40OTk5OEM1LjA5OTk4IDUuNzIwODkgNS4yNzkwNiA1Ljg5OTk4IDUuNDk5OTggNS44OTk5OEM1LjcyMDg5IDUuODk5OTggNS44OTk5OCA1LjcyMDg5IDUuODk5OTggNS40OTk5OFY0Ljg5OTk4SDYuNDk5OThDNi43MjA4OSA0Ljg5OTk4IDYuODk5OTggNC43MjA4OSA2Ljg5OTk4IDQuNDk5OThDNi44OTk5OCA0LjI3OTA2IDYuNzIwODkgNC4wOTk5OCA2LjQ5OTk4IDQuMDk5OThINS44OTk5OFYzLjQ5OTk4Wk0xLjg5OTk4IDYuNDk5OThDMS44OTk5OCA2LjI3OTA2IDEuNzIwODkgNi4wOTk5OCAxLjQ5OTk4IDYuMDk5OThDMS4yNzkwNiA2LjA5OTk4IDEuMDk5OTggNi4yNzkwNiAxLjA5OTk4IDYuNDk5OThWNy4wOTk5OEgwLjQ5OTk3NkMwLjI3OTA2MiA3LjA5OTk4IDAuMDk5OTc1NiA3LjI3OTA2IDAuMDk5OTc1NiA3LjQ5OTk4QzAuMDk5OTc1NiA3LjcyMDg5IDAuMjc5MDYyIDcuODk5OTggMC40OTk5NzYgNy44OTk5OEgxLjA5OTk4VjguNDk5OThDMS4wOTk5OCA4LjcyMDg5IDEuMjc5MDYgOC44OTk5NyAxLjQ5OTk4IDguODk5OTdDMS43MjA4OSA4Ljg5OTk3IDEuODk5OTggOC43MjA4OSAxLjg5OTk4IDguNDk5OThWNy44OTk5OEgyLjQ5OTk4QzIuNzIwODkgNy44OTk5OCAyLjg5OTk4IDcuNzIwODkgMi44OTk5OCA3LjQ5OTk4QzIuODk5OTggNy4yNzkwNiAyLjcyMDg5IDcuMDk5OTggMi40OTk5OCA3LjA5OTk4SDEuODk5OThWNi40OTk5OFpNOC41NDQwNiAwLjk4MTg0TDguMjQ2MTggMC45NDE1ODZDOC4wMzI3NSAwLjkxNzY3NiA3LjkwNjkyIDEuMTY1NSA4LjAyOTM2IDEuMzQxOTRDOC4xNzAxMyAxLjU0NDc5IDguMjk5ODEgMS43NTU5MiA4LjQxNzU0IDEuOTc0NDVDOC45MTg3OCAyLjkwNDg1IDkuMjAzMjIgMy45NjkzMiA5LjIwMzIyIDUuMTAwMjJDOS4yMDMyMiA4LjM3MjAxIDYuODIyNDcgMTEuMDg3OCAzLjY5ODg3IDExLjYwOTdDMy40NTczNiAxMS42NSAzLjIwOTg4IDExLjY3NzIgMi45NjAwOCAxMS42OTA2QzIuNzQ1NjMgMTEuNzAyIDIuNjI3MjkgMTEuOTUzNSAyLjc3NzIxIDEyLjEwNzJDMi44NDU1MSAxMi4xNzczIDIuOTE1MzUgMTIuMjQ1OCAyLjk4NjY3IDEyLjMxMjhMMy4wNTg4MyAxMi4zNzk1TDMuMzE4ODMgMTIuNjA0NUwzLjUwNjg0IDEyLjc1MzJMMy42Mjc5NiAxMi44NDMzTDMuODE0OTEgMTIuOTc0MkwzLjk5MDc5IDEzLjA4OUM0LjExMTc1IDEzLjE2NTEgNC4yMzUzNiAxMy4yMzc1IDQuMzYxNTcgMTMuMzA1OUw0LjYyNDk2IDEzLjQ0MTJMNC44ODU1MyAxMy41NjA3TDUuMTg4MzcgMTMuNjgyOEw1LjQzMTY5IDEzLjc2ODZDNS41NjU2NCAxMy44MTI4IDUuNzAxNDkgMTMuODUyOSA1LjgzODU3IDEzLjg4ODVDNS45NDI2MiAxMy45MTU1IDYuMDQ3NjcgMTMuOTQwMSA2LjE1NDA1IDEzLjk2MjJDNi4yNzk5MyAxMy45ODgzIDYuNDA3MTMgMTQuMDEwOSA2LjUzNTQ0IDE0LjAyOThMNi44NTI0MSAxNC4wNjg1TDcuMTE5MzQgMTQuMDg5MkM3LjI0NjM3IDE0LjA5NjUgNy4zNzQzNiAxNC4xMDAyIDcuNTAzMjIgMTQuMTAwMkMxMS4xNDgzIDE0LjEwMDIgMTQuMTAzMiAxMS4xNDUzIDE0LjEwMzIgNy41MDAyM0MxNC4xMDMyIDcuMjUwNDQgMTQuMDg5MyA3LjAwMzg5IDE0LjA2MjMgNi43NjEzMUwxNC4wMjU1IDYuNDg0MDdDMTMuOTkxIDYuMjYwODMgMTMuOTQ1MyA2LjA0MTI5IDEzLjg4OTEgNS44MjY0MkMxMy44MjEzIDUuNTY3MDkgMTMuNzM4MiA1LjMxMzk4IDEzLjY0MDkgNS4wNjg4MUwxMy41Mjc5IDQuODAxMzJMMTMuNDUwNyA0LjYzNTQyTDEzLjM3NjYgNC40ODY2NkMxMy4yMTc4IDQuMTc3NzMgMTMuMDM1MyAzLjg4Mjk1IDEyLjgzMTIgMy42MDQyM0wxMi42NzgyIDMuNDAzNTJMMTIuNDc5MyAzLjE2NDMyTDEyLjMxNTcgMi45ODM2MUwxMi4xOTYxIDIuODU5NTFMMTIuMDM1NSAyLjcwMjQ2TDExLjgxMzQgMi41MDE4NEwxMS40OTI1IDIuMjQxOTFMMTEuMjQ4MyAyLjA2NDk4TDEwLjk1NjIgMS44NzQ0NkwxMC42MzQ2IDEuNjg4OTRMMTAuMzA3MyAxLjUyMzc4TDEwLjE5MzggMS40NzE3Nkw5Ljk1NDg4IDEuMzcwNkw5LjY3NzkxIDEuMjY2OUw5LjQyNTY2IDEuMTg0Nkw5LjEwMDc1IDEuMDk0ODlMOC44MzU5OSAxLjAzNDg2TDguNTQ0MDYgMC45ODE4NFpNMTAuNDAzMiA1LjMwMDIzQzEwLjQwMzIgNC4yNzU4OCAxMC4yMDAyIDMuMjk4MjkgOS44MzI0NCAyLjQwNjA0QzExLjc2MjMgMy4yODk5NSAxMy4xMDMyIDUuMjM4NjIgMTMuMTAzMiA3LjUwMDIzQzEzLjEwMzIgMTAuNTkzIDEwLjU5NiAxMy4xMDAyIDcuNTAzMjIgMTMuMTAwMkM2LjYzNjQ2IDEzLjEwMDIgNS44MTU5NyAxMi45MDM2IDUuMDgzNTUgMTIuNTUyMkM2LjU0MTkgMTIuMDk0MSA3LjgxMDgxIDExLjIwODIgOC43NDMyMiAxMC4wNDE2QzguODc5NjMgMTAuMjI4NCA5LjEwMDI4IDEwLjM0OTcgOS4zNDkyOCAxMC4zNDk3QzkuNzYzNDkgMTAuMzQ5NyAxMC4wOTkzIDEwLjAxMzkgMTAuMDk5MyA5LjU5OTcxQzEwLjA5OTMgOS4yNDI1NiA5Ljg0OTY1IDguOTQzNzMgOS41MTUzNSA4Ljg2ODE2QzkuNTc3NDEgOC43NTE2NSA5LjYzNjUzIDguNjMzMzQgOS42OTI2IDguNTEzMzJDOS44ODM1OCA4LjYzMTYzIDEwLjEwODggOC42OTk5MyAxMC4zNSA4LjY5OTkzQzExLjA0MDMgOC42OTk5MyAxMS42IDguMTQwMjggMTEuNiA3LjQ0OTkzQzExLjYgNi43NTk3NiAxMS4wNDA2IDYuMjAwMjQgMTAuMzUwNSA2LjE5OTkzQzEwLjM4NTMgNS45MDQ4NyAxMC40MDMyIDUuNjA0NjQgMTAuNDAzMiA1LjMwMDIzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuODE4MTkgMC45MzE3OUM3LjY0MjQ1IDAuNzU2MDU0IDcuMzU3NTMgMC43NTYwNTQgNy4xODE3OSAwLjkzMTc5TDUuNDMxNzkgMi42ODE3OUM1LjI1NjA1IDIuODU3NTMgNS4yNTYwNSAzLjE0MjQ1IDUuNDMxNzkgMy4zMTgxOUM1LjYwNzUzIDMuNDkzOTIgNS44OTI0NSAzLjQ5MzkyIDYuMDY4MTkgMy4zMTgxOUw2Ljk5OTk5IDIuMzg2MzhWNS40OTk5OUM2Ljk5OTk5IDUuNzc2MTMgNy4yMjM4NSA1Ljk5OTk5IDcuNDk5OTkgNS45OTk5OUM3Ljc3NjEzIDUuOTk5OTkgNy45OTk5OSA1Ljc3NjEzIDcuOTk5OTkgNS40OTk5OVYyLjM4NjM4TDguOTMxNzkgMy4zMTgxOUM5LjEwNzUzIDMuNDkzOTIgOS4zOTI0NSAzLjQ5MzkyIDkuNTY4MTkgMy4zMTgxOUM5Ljc0MzkyIDMuMTQyNDUgOS43NDM5MiAyLjg1NzUzIDkuNTY4MTkgMi42ODE3OUw3LjgxODE5IDAuOTMxNzlaTTcuOTk5OTkgOS40OTk5OUM3Ljk5OTk5IDkuMjIzODUgNy43NzYxMyA4Ljk5OTk5IDcuNDk5OTkgOC45OTk5OUM3LjIyMzg1IDguOTk5OTkgNi45OTk5OSA5LjIyMzg1IDYuOTk5OTkgOS40OTk5OVYxMi42MTM2TDYuMDY4MTkgMTEuNjgxOEM1Ljg5MjQ1IDExLjUwNjEgNS42MDc1MyAxMS41MDYxIDUuNDMxNzkgMTEuNjgxOEM1LjI1NjA1IDExLjg1NzUgNS4yNTYwNSAxMi4xNDI0IDUuNDMxNzkgMTIuMzE4Mkw3LjE4MTc5IDE0LjA2ODJDNy4zNTc1MyAxNC4yNDM5IDcuNjQyNDUgMTQuMjQzOSA3LjgxODE5IDE0LjA2ODJMOS41NjgxOSAxMi4zMTgyQzkuNzQzOTIgMTIuMTQyNCA5Ljc0MzkyIDExLjg1NzUgOS41NjgxOSAxMS42ODE4QzkuMzkyNDUgMTEuNTA2MSA5LjEwNzUzIDExLjUwNjEgOC45MzE3OSAxMS42ODE4TDcuOTk5OTkgMTIuNjEzNlY5LjQ5OTk5Wk04Ljk5OTk5IDcuNDk5OTlDOC45OTk5OSA3LjIyMzg1IDkuMjIzODUgNi45OTk5OSA5LjQ5OTk5IDYuOTk5OTlIMTIuNjEzNkwxMS42ODE4IDYuMDY4MTlDMTEuNTA2MSA1Ljg5MjQ1IDExLjUwNjEgNS42MDc1MyAxMS42ODE4IDUuNDMxNzlDMTEuODU3NSA1LjI1NjA1IDEyLjE0MjQgNS4yNTYwNSAxMi4zMTgyIDUuNDMxNzlMMTQuMDY4MiA3LjE4MTc5QzE0LjI0MzkgNy4zNTc1MyAxNC4yNDM5IDcuNjQyNDUgMTQuMDY4MiA3LjgxODE5TDEyLjMxODIgOS41NjgxOUMxMi4xNDI0IDkuNzQzOTIgMTEuODU3NSA5Ljc0MzkyIDExLjY4MTggOS41NjgxOUMxMS41MDYxIDkuMzkyNDUgMTEuNTA2MSA5LjEwNzUzIDExLjY4MTggOC45MzE3OUwxMi42MTM2IDcuOTk5OTlIOS40OTk5OUM5LjIyMzg1IDcuOTk5OTkgOC45OTk5OSA3Ljc3NjEzIDguOTk5OTkgNy40OTk5OVpNMy4zMTgxOSA2LjA2ODE5TDIuMzg2MzggNi45OTk5OUg1LjQ5OTk5QzUuNzc2MTMgNi45OTk5OSA1Ljk5OTk5IDcuMjIzODUgNS45OTk5OSA3LjQ5OTk5QzUuOTk5OTkgNy43NzYxMyA1Ljc3NjEzIDcuOTk5OTkgNS40OTk5OSA3Ljk5OTk5SDIuMzg2MzhMMy4zMTgxOSA4LjkzMTc5QzMuNDkzOTIgOS4xMDc1MyAzLjQ5MzkyIDkuMzkyNDUgMy4zMTgxOSA5LjU2ODE5QzMuMTQyNDUgOS43NDM5MiAyLjg1NzUzIDkuNzQzOTIgMi42ODE3OSA5LjU2ODE5TDAuOTMxNzkgNy44MTgxOUMwLjc1NjA1NCA3LjY0MjQ1IDAuNzU2MDU0IDcuMzU3NTMgMC45MzE3OSA3LjE4MTc5TDIuNjgxNzkgNS40MzE3OUMyLjg1NzUzIDUuMjU2MDUgMy4xNDI0NSA1LjI1NjA1IDMuMzE4MTkgNS40MzE3OUMzLjQ5MzkyIDUuNjA3NTMgMy40OTM5MiA1Ljg5MjQ1IDMuMzE4MTkgNi4wNjgxOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFRuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjI1NzgxIDMuMTE2ODRDMy42Nzc3MSAzLjQ1Nzk2IDMuODM1MjMgMy40MzE5MyA0LjYyMzY5IDMuMzc5MzNMMTIuMDU3MSAyLjkzMjk5QzEyLjIxNDcgMi45MzI5OSAxMi4wODM2IDIuNzc1NzEgMTIuMDMxMSAyLjc0OTU3TDEwLjc5NjUgMS44NTcxMUMxMC41NiAxLjY3MzQ3IDEwLjI0NDggMS40NjMxNSA5LjY0MDgzIDEuNTE1NzZMMi40NDMwOCAyLjA0MDc0QzIuMTgwNTkgMi4wNjY3NyAyLjEyODE1IDIuMTk4MDEgMi4yMzI3IDIuMzAzMjJMMy4yNTc4MSAzLjExNjg0Wk0zLjcwNDEgNC44NDkxN1YxMi42NzA0QzMuNzA0MSAxMy4wOTA3IDMuOTE0MTUgMTMuMjQ4IDQuMzg2OTMgMTMuMjIyTDEyLjU1NjIgMTIuNzQ5M0MxMy4wMjkyIDEyLjcyMzMgMTMuMDgxOSAxMi40MzQxIDEzLjA4MTkgMTIuMDkyN1Y0LjMyMzk3QzEzLjA4MTkgMy45ODMwNiAxMi45NTA4IDMuNzk5MjEgMTIuNjYxMiAzLjgyNTQ1TDQuMTI0MjIgNC4zMjM5N0MzLjgwOTE4IDQuMzUwNDQgMy43MDQxIDQuNTA4MDMgMy43MDQxIDQuODQ5MTdaTTExLjc2ODggNS4yNjg3MkMxMS44MjEyIDUuNTA1MTggMTEuNzY4OCA1Ljc0MTQyIDExLjUzMTkgNS43Njc5OUwxMS4xMzgzIDUuODQ2NDFWMTEuNjIwNUMxMC43OTY1IDExLjgwNDIgMTAuNDgxNCAxMS45MDkyIDEwLjIxODggMTEuOTA5MkM5Ljc5ODM1IDExLjkwOTIgOS42OTMwNSAxMS43Nzc5IDkuMzc4MTIgMTEuMzg0NEw2LjgwMzQ1IDcuMzQyNDlWMTEuMjUzMkw3LjYxODE2IDExLjQzN0M3LjYxODE2IDExLjQzNyA3LjYxODE2IDExLjkwOTIgNi45NjA4NiAxMS45MDkyTDUuMTQ4NzkgMTIuMDE0M0M1LjA5NjE1IDExLjkwOTIgNS4xNDg3OSAxMS42NDcgNS4zMzI1OSAxMS41OTQ0TDUuODA1NDYgMTEuNDYzNFY2LjI5Mjc2TDUuMTQ4OSA2LjI0MDE1QzUuMDk2MjUgNi4wMDM2OSA1LjIyNzM5IDUuNjYyNzggNS41OTU0IDUuNjM2MzFMNy41MzkzNSA1LjUwNTI4TDEwLjIxODggOS41OTk4VjUuOTc3NjVMOS41MzU2NCA1Ljg5OTI0QzkuNDgzMiA1LjYxMDE4IDkuNjkzMDUgNS40MDAyOCA5Ljk1NTc2IDUuMzc0MjVMMTEuNzY4OCA1LjI2ODcyWk0xLjgzODc0IDEuMzMyMTJMOS4zMjU1NyAwLjc4MDc4N0MxMC4yNDUgMC43MDE5MzIgMTAuNDgxNSAwLjc1NDc1MyAxMS4wNTk0IDEuMTc0NTJMMTMuNDQ5MiAyLjg1NDI0QzEzLjg0MzYgMy4xNDMwOSAxMy45NzUgMy4yMjE3MyAxMy45NzUgMy41MzY2MVYxMi43NDkzQzEzLjk3NSAxMy4zMjY2IDEzLjc2NDcgMTMuNjY4MSAxMy4wMjkzIDEzLjcyMDNMNC4zMzQ5MiAxNC4yNDU0QzMuNzgyOTEgMTQuMjcxNyAzLjUyMDE5IDE0LjE5MyAzLjIzMTExIDEzLjgyNTNMMS40NzExNiAxMS41NDE5QzEuMTU1OCAxMS4xMjE2IDEuMDI0NjYgMTAuODA3MSAxLjAyNDY2IDEwLjQzOTJWMi4yNTA0MUMxLjAyNDY2IDEuNzc4MjUgMS4yMzUwNCAxLjM4NDQxIDEuODM4NzQgMS4zMzIxMlpcIixmaWxsOm59KSl9LEFuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMS41QzQuNSA0LjI1IDMgNi41IDMgOUMzIDExLjQ4NTMgNS4wMTQ3MiAxMy41IDcuNSAxMy41QzkuOTg1MjggMTMuNSAxMiAxMS40ODUzIDEyIDlDMTIgNi41IDEwLjUgNC4yNSA3LjUgMS41Wk0xMSA5QzExIDcuMTEyMDMgOS45NzMxNSA1LjI3MTk1IDcuNSAyLjg3MzU3QzUuMDI2ODYgNS4yNzE5NSA0IDcuMTEyMDMgNCA5QzQgMTAuOTMzIDUuNTY3IDEyLjUgNy41IDEyLjVDOS40MzMgMTIuNSAxMSAxMC45MzMgMTEgOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LERuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjQ5OTg1IDEuMTAwMDFDMy4yNzg5NCAxLjEwMDAxIDMuMDk5ODUgMS4yNzkwOSAzLjA5OTg1IDEuNTAwMDFDMy4wOTk4NSAxLjcyMDkyIDMuMjc4OTQgMS45MDAwMSAzLjQ5OTg1IDEuOTAwMDFIMTEuNDk5OUMxMS43MjA4IDEuOTAwMDEgMTEuODk5OSAxLjcyMDkyIDExLjg5OTkgMS41MDAwMUMxMS44OTk5IDEuMjc5MDkgMTEuNzIwOCAxLjEwMDAxIDExLjQ5OTkgMS4xMDAwMUgzLjQ5OTg1Wk00Ljk5OTk1IDQuMjUwMDFDNC45OTk5NSAzLjk3Mzg3IDQuNzc2MDkgMy43NTAwMSA0LjQ5OTk1IDMuNzUwMDFDNC4yMjM4MSAzLjc1MDAxIDMuOTk5OTUgMy45NzM4NyAzLjk5OTk1IDQuMjUwMDFWOS41NTAwMUMzLjk5OTk1IDExLjQ4MyA1LjU2Njk1IDEzLjA1IDcuNDk5OTUgMTMuMDVDOS40MzI5NSAxMy4wNSAxMSAxMS40ODMgMTEgOS41NTAwMVY0LjI1MDAxQzExIDMuOTczODcgMTAuNzc2MSAzLjc1MDAxIDEwLjUgMy43NTAwMUMxMC4yMjM4IDMuNzUwMDEgOS45OTk5NSAzLjk3Mzg3IDkuOTk5OTUgNC4yNTAwMVY5LjU1MDAxQzkuOTk5OTUgMTAuOTMwNyA4Ljg4MDY2IDEyLjA1IDcuNDk5OTUgMTIuMDVDNi4xMTkyNCAxMi4wNSA0Ljk5OTk1IDEwLjkzMDcgNC45OTk5NSA5LjU1MDAxVjQuMjUwMDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxCbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi44NTcxNCAySDEyLjE0MjlDMTIuNjE2MiAyIDEzIDIuMzgzNzYgMTMgMi44NTcxNFYxMi4xNDI5QzEzIDEyLjYxNjIgMTIuNjE2MiAxMyAxMi4xNDI5IDEzSDIuODU3MTRDMi4zODM3NiAxMyAyIDEyLjYxNjIgMiAxMi4xNDI5VjIuODU3MTRDMiAyLjM4Mzc2IDIuMzgzNzYgMiAyLjg1NzE0IDJaTTEgMi44NTcxNEMxIDEuODMxNDcgMS44MzE0NyAxIDIuODU3MTQgMUgxMi4xNDI5QzEzLjE2ODUgMSAxNCAxLjgzMTQ3IDE0IDIuODU3MTRWMTIuMTQyOUMxNCAxMy4xNjg1IDEzLjE2ODUgMTQgMTIuMTQyOSAxNEgyLjg1NzE0QzEuODMxNDcgMTQgMSAxMy4xNjg1IDEgMTIuMTQyOVYyLjg1NzE0Wk03LjQ5OTg4IDUuMDAwMTJDNy43NzYwMiA1LjAwMDEyIDcuOTk5ODggNC43NzYyNiA3Ljk5OTg4IDQuNTAwMTJDNy45OTk4OCA0LjIyMzk4IDcuNzc2MDIgNC4wMDAxMiA3LjQ5OTg4IDQuMDAwMTJDNy4yMjM3NCA0LjAwMDEyIDYuOTk5ODggNC4yMjM5OCA2Ljk5OTg4IDQuNTAwMTJDNi45OTk4OCA0Ljc3NjI2IDcuMjIzNzQgNS4wMDAxMiA3LjQ5OTg4IDUuMDAwMTJaTTQuNDk5ODggMTEuMDAwMUM0Ljc3NjAyIDExLjAwMDEgNC45OTk4OCAxMC43NzYzIDQuOTk5ODggMTAuNTAwMUM0Ljk5OTg4IDEwLjIyNCA0Ljc3NjAyIDEwLjAwMDEgNC40OTk4OCAxMC4wMDAxQzQuMjIzNzQgMTAuMDAwMSAzLjk5OTg4IDEwLjIyNCAzLjk5OTg4IDEwLjUwMDFDMy45OTk4OCAxMC43NzYzIDQuMjIzNzQgMTEuMDAwMSA0LjQ5OTg4IDExLjAwMDFaTTQuOTk5ODggNy41MDAxMkM0Ljk5OTg4IDcuNzc2MjYgNC43NzYwMiA4LjAwMDEyIDQuNDk5ODggOC4wMDAxMkM0LjIyMzc0IDguMDAwMTIgMy45OTk4OCA3Ljc3NjI2IDMuOTk5ODggNy41MDAxMkMzLjk5OTg4IDcuMjIzOTggNC4yMjM3NCA3LjAwMDEyIDQuNDk5ODggNy4wMDAxMkM0Ljc3NjAyIDcuMDAwMTIgNC45OTk4OCA3LjIyMzk4IDQuOTk5ODggNy41MDAxMlpNNC40OTk4OCA1LjAwMDEyQzQuNzc2MDIgNS4wMDAxMiA0Ljk5OTg4IDQuNzc2MjYgNC45OTk4OCA0LjUwMDEyQzQuOTk5ODggNC4yMjM5OCA0Ljc3NjAyIDQuMDAwMTIgNC40OTk4OCA0LjAwMDEyQzQuMjIzNzQgNC4wMDAxMiAzLjk5OTg4IDQuMjIzOTggMy45OTk4OCA0LjUwMDEyQzMuOTk5ODggNC43NzYyNiA0LjIyMzc0IDUuMDAwMTIgNC40OTk4OCA1LjAwMDEyWk0xMC45OTk5IDEwLjUwMDFDMTAuOTk5OSAxMC43NzYzIDEwLjc3NiAxMS4wMDAxIDEwLjQ5OTkgMTEuMDAwMUMxMC4yMjM3IDExLjAwMDEgOS45OTk4OCAxMC43NzYzIDkuOTk5ODggMTAuNTAwMUM5Ljk5OTg4IDEwLjIyNCAxMC4yMjM3IDEwLjAwMDEgMTAuNDk5OSAxMC4wMDAxQzEwLjc3NiAxMC4wMDAxIDEwLjk5OTkgMTAuMjI0IDEwLjk5OTkgMTAuNTAwMVpNMTAuNDk5OSA4LjAwMDEyQzEwLjc3NiA4LjAwMDEyIDEwLjk5OTkgNy43NzYyNiAxMC45OTk5IDcuNTAwMTJDMTAuOTk5OSA3LjIyMzk4IDEwLjc3NiA3LjAwMDEyIDEwLjQ5OTkgNy4wMDAxMkMxMC4yMjM3IDcuMDAwMTIgOS45OTk4OCA3LjIyMzk4IDkuOTk5ODggNy41MDAxMkM5Ljk5OTg4IDcuNzc2MjYgMTAuMjIzNyA4LjAwMDEyIDEwLjQ5OTkgOC4wMDAxMlpNMTAuOTk5OSA0LjUwMDEyQzEwLjk5OTkgNC43NzYyNiAxMC43NzYgNS4wMDAxMiAxMC40OTk5IDUuMDAwMTJDMTAuMjIzNyA1LjAwMDEyIDkuOTk5ODggNC43NzYyNiA5Ljk5OTg4IDQuNTAwMTJDOS45OTk4OCA0LjIyMzk4IDEwLjIyMzcgNC4wMDAxMiAxMC40OTk5IDQuMDAwMTJDMTAuNzc2IDQuMDAwMTIgMTAuOTk5OSA0LjIyMzk4IDEwLjk5OTkgNC41MDAxMlpNNy40OTk4OCAxMS4wMDAxQzcuNzc2MDIgMTEuMDAwMSA3Ljk5OTg4IDEwLjc3NjMgNy45OTk4OCAxMC41MDAxQzcuOTk5ODggMTAuMjI0IDcuNzc2MDIgMTAuMDAwMSA3LjQ5OTg4IDEwLjAwMDFDNy4yMjM3NCAxMC4wMDAxIDYuOTk5ODggMTAuMjI0IDYuOTk5ODggMTAuNTAwMUM2Ljk5OTg4IDEwLjc3NjMgNy4yMjM3NCAxMS4wMDAxIDcuNDk5ODggMTEuMDAwMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LCRuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjIwMzA3IDEuMDQzMTJDMS4wMDQ4MSAwLjk1NDk5OCAwLjc3MjM0IDEuMDA0OCAwLjYyNzU3NyAxLjE2NjQxQzAuNDgyODEzIDEuMzI4MDIgMC40NTg3OTQgMS41NjQ1NSAwLjU2ODExNiAxLjc1MTk2TDMuOTIxMTUgNy41MDAwMkwwLjU2ODExNiAxMy4yNDgxQzAuNDU4Nzk0IDEzLjQzNTUgMC40ODI4MTMgMTMuNjcyIDAuNjI3NTc3IDEzLjgzMzZDMC43NzIzNCAxMy45OTUyIDEuMDA0ODEgMTQuMDQ1IDEuMjAzMDcgMTMuOTU2OUwxNC43MDMxIDcuOTU2OTJDMTQuODgzNiA3Ljg3NjY3IDE1IDcuNjk3NjEgMTUgNy41MDAwMkMxNSA3LjMwMjQyIDE0Ljg4MzYgNy4xMjMzNiAxNC43MDMxIDcuMDQzMTFMMS4yMDMwNyAxLjA0MzEyWk00Ljg0NTUyIDcuMTAwMDJMMi4yMTIzNCAyLjU4NkwxMy4yNjg5IDcuNTAwMDJMMi4yMTIzNCAxMi40MTRMNC44NDU1MiA3LjkwMDAySDlDOS4yMjA5MSA3LjkwMDAyIDkuNCA3LjcyMDk0IDkuNCA3LjUwMDAyQzkuNCA3LjI3OTExIDkuMjIwOTEgNy4xMDAwMiA5IDcuMTAwMDJINC44NDU1MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEZuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02LjA0OTk1IDIuNzQ5OThDNi4wNDk5NSAyLjQ0NjIzIDUuODAzNzEgMi4xOTk5OCA1LjQ5OTk1IDIuMTk5OThDNS4xOTYxOSAyLjE5OTk4IDQuOTQ5OTUgMi40NDYyMyA0Ljk0OTk1IDIuNzQ5OThWMTIuMjVDNC45NDk5NSAxMi41NTM3IDUuMTk2MTkgMTIuOCA1LjQ5OTk1IDEyLjhDNS44MDM3MSAxMi44IDYuMDQ5OTUgMTIuNTUzNyA2LjA0OTk1IDEyLjI1VjIuNzQ5OThaTTEwLjA1IDIuNzQ5OThDMTAuMDUgMi40NDYyMyA5LjgwMzcxIDIuMTk5OTggOS40OTk5NSAyLjE5OTk4QzkuMTk2MTkgMi4xOTk5OCA4Ljk0OTk1IDIuNDQ2MjMgOC45NDk5NSAyLjc0OTk4VjEyLjI1QzguOTQ5OTUgMTIuNTUzNyA5LjE5NjE5IDEyLjggOS40OTk5NSAxMi44QzkuODAzNzEgMTIuOCAxMC4wNSAxMi41NTM3IDEwLjA1IDEyLjI1VjIuNzQ5OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxObj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEuODUzNiAxLjE0NjQ1QzExLjY1ODMgMC45NTExODQgMTEuMzQxNyAwLjk1MTE4NCAxMS4xNDY1IDEuMTQ2NDVMMy43MTQ1NSA4LjU3ODM2QzMuNjI0NTkgOC42NjgzMiAzLjU1MjYzIDguNzc0NjEgMy41MDI1MSA4Ljg5MTU1TDIuMDQwNDQgMTIuMzAzQzEuOTU5OSAxMi40OTEgMi4wMDE4OSAxMi43MDkgMi4xNDY0NiAxMi44NTM2QzIuMjkxMDMgMTIuOTk4MSAyLjUwOTA1IDEzLjA0MDEgMi42OTY5NyAxMi45NTk2TDYuMTA4NDcgMTEuNDk3NUM2LjIyNTQgMTEuNDQ3NCA2LjMzMTcgMTEuMzc1NCA2LjQyMTY2IDExLjI4NTVMMTMuODUzNiAzLjg1MzU1QzE0LjA0ODggMy42NTgyOSAxNC4wNDg4IDMuMzQxNzEgMTMuODUzNiAzLjE0NjQ1TDExLjg1MzYgMS4xNDY0NVpNNC40MjE2NiA5LjI4NTQ3TDExLjUgMi4yMDcxMUwxMi43OTI5IDMuNUw1LjcxNDU1IDEwLjU3ODRMNC4yMTkyNCAxMS4yMTkyTDMuNzgwODEgMTAuNzgwOEw0LjQyMTY2IDkuMjg1NDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx6bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTIuMTQ2NCAxLjE0NjQ1QzEyLjM0MTcgMC45NTExODQgMTIuNjU4MyAwLjk1MTE4NCAxMi44NTM1IDEuMTQ2NDVMMTQuODUzNSAzLjE0NjQ1QzE1LjA0ODggMy4zNDE3MSAxNS4wNDg4IDMuNjU4MjkgMTQuODUzNSAzLjg1MzU1TDEwLjkxMDkgNy43OTYxOEMxMC44MzQ5IDcuODcyMTggMTAuNzQ3MSA3LjkzNTQzIDEwLjY1MSA3Ljk4MzVMNi43MjM1OSA5Ljk0NzIxQzYuNTMxMDkgMTAuMDQzNSA2LjI5ODYxIDEwLjAwNTcgNi4xNDY0MyA5Ljg1MzU1QzUuOTk0MjUgOS43MDEzNyA1Ljk1NjUyIDkuNDY4ODkgNi4wNTI3NyA5LjI3NjM5TDguMDE2NDggNS4zNDg5N0M4LjA2NDU1IDUuMjUyODMgOC4xMjc4IDUuMTY1MDcgOC4yMDM4IDUuMDg5MDdMMTIuMTQ2NCAxLjE0NjQ1Wk0xMi41IDIuMjA3MTFMOC45MTA5MSA1Ljc5NjE4TDcuODcyNjYgNy44NzI2N0w4LjEyNzMxIDguMTI3MzJMMTAuMjAzOCA3LjA4OTA3TDEzLjc5MjkgMy41TDEyLjUgMi4yMDcxMVpNOS45OTk5OCAyTDguOTk5OTggM0g0LjlDNC40NzE3MSAzIDQuMTgwNTYgMy4wMDAzOSAzLjk1NTUyIDMuMDE4NzdDMy43MzYzMSAzLjAzNjY4IDMuNjI0MjEgMy4wNjkxNSAzLjU0NjAxIDMuMTA4OTlDMy4zNTc4NSAzLjIwNDg3IDMuMjA0ODcgMy4zNTc4NSAzLjEwODk5IDMuNTQ2MDFDMy4wNjkxNSAzLjYyNDIxIDMuMDM2NjkgMy43MzYzMSAzLjAxODc4IDMuOTU1NTJDMy4wMDAzOSA0LjE4MDU2IDMgNC40NzE3MSAzIDQuOVYxMS4xQzMgMTEuNTI4MyAzLjAwMDM5IDExLjgxOTQgMy4wMTg3OCAxMi4wNDQ1QzMuMDM2NjkgMTIuMjYzNyAzLjA2OTE1IDEyLjM3NTggMy4xMDg5OSAxMi40NTRDMy4yMDQ4NyAxMi42NDIyIDMuMzU3ODUgMTIuNzk1MSAzLjU0NjAxIDEyLjg5MUMzLjYyNDIxIDEyLjkzMDkgMy43MzYzMSAxMi45NjMzIDMuOTU1NTIgMTIuOTgxMkM0LjE4MDU2IDEyLjk5OTYgNC40NzE3MSAxMyA0LjkgMTNIMTEuMUMxMS41MjgzIDEzIDExLjgxOTQgMTIuOTk5NiAxMi4wNDQ1IDEyLjk4MTJDMTIuMjYzNyAxMi45NjMzIDEyLjM3NTggMTIuOTMwOSAxMi40NTQgMTIuODkxQzEyLjY0MjIgMTIuNzk1MSAxMi43OTUxIDEyLjY0MjIgMTIuODkxIDEyLjQ1NEMxMi45MzA5IDEyLjM3NTggMTIuOTYzMyAxMi4yNjM3IDEyLjk4MTIgMTIuMDQ0NUMxMi45OTk2IDExLjgxOTQgMTMgMTEuNTI4MyAxMyAxMS4xVjYuOTk5OThMMTQgNS45OTk5OFYxMS4xVjExLjEyMDdDMTQgMTEuNTIzMSAxNCAxMS44NTUzIDEzLjk3NzkgMTIuMTI1OUMxMy45NTQ5IDEyLjQwNyAxMy45MDU3IDEyLjY2NTMgMTMuNzgyIDEyLjkwOEMxMy41OTAzIDEzLjI4NDMgMTMuMjg0MyAxMy41OTAzIDEyLjkwOCAxMy43ODJDMTIuNjY1MyAxMy45MDU3IDEyLjQwNyAxMy45NTQ5IDEyLjEyNTkgMTMuOTc3OUMxMS44NTUzIDE0IDExLjUyMzEgMTQgMTEuMTIwNyAxNEgxMS4xSDQuOUg0Ljg3OTM0QzQuNDc2ODYgMTQgNC4xNDQ2OCAxNCAzLjg3NDA5IDEzLjk3NzlDMy41OTMwNCAxMy45NTQ5IDMuMzM0NjkgMTMuOTA1NyAzLjA5MjAyIDEzLjc4MkMyLjcxNTcgMTMuNTkwMyAyLjQwOTczIDEzLjI4NDMgMi4yMTc5OSAxMi45MDhDMi4wOTQzNCAxMi42NjUzIDIuMDQ1MDYgMTIuNDA3IDIuMDIyMSAxMi4xMjU5QzEuOTk5OTkgMTEuODU1MyAxLjk5OTk5IDExLjUyMzEgMiAxMS4xMjA3VjExLjEyMDZWMTEuMVY0LjlWNC44NzkzNVY0Ljg3OTMyVjQuODc5MzFDMS45OTk5OSA0LjQ3Njg1IDEuOTk5OTkgNC4xNDQ2OCAyLjAyMjEgMy44NzQwOUMyLjA0NTA2IDMuNTkzMDQgMi4wOTQzNCAzLjMzNDY5IDIuMjE3OTkgMy4wOTIwMkMyLjQwOTczIDIuNzE1NjkgMi43MTU3IDIuNDA5NzMgMy4wOTIwMiAyLjIxNzk5QzMuMzM0NjkgMi4wOTQzNCAzLjU5MzA0IDIuMDQ1MDYgMy44NzQwOSAyLjAyMjFDNC4xNDQ2OCAxLjk5OTk5IDQuNDc2ODUgMS45OTk5OSA0Ljg3OTMyIDJINC44NzkzNUg0LjlIOS45OTk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFduPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMC44NzVDNS40OTc5NyAwLjg3NSAzLjg3NSAyLjQ5Nzk3IDMuODc1IDQuNUMzLjg3NSA2LjE1Mjg4IDQuOTgxMjQgNy41NDczOCA2LjQ5MzczIDcuOTgzNTFDNS4yOTk3IDguMTI5MDEgNC4yNzU1NyA4LjU1MTM0IDMuNTA0MDcgOS4zMTE2N0MyLjUyMjE2IDEwLjI3OTQgMi4wMjUwMiAxMS43MiAyLjAyNTAyIDEzLjU5OTlDMi4wMjUwMiAxMy44NjIzIDIuMjM3NjkgMTQuMDc0OSAyLjUwMDAyIDE0LjA3NDlDMi43NjIzNiAxNC4wNzQ5IDIuOTc1MDIgMTMuODYyMyAyLjk3NTAyIDEzLjU5OTlDMi45NzUwMiAxMS44Nzk5IDMuNDI3ODYgMTAuNzIwNiA0LjE3MDkxIDkuOTg4M0M0LjkxNTM2IDkuMjU0NjMgNi4wMjY3NCA4Ljg3NDk5IDcuNDk5OTUgOC44NzQ5OUM4Ljk3MzE3IDguODc0OTkgMTAuMDg0NiA5LjI1NDYzIDEwLjgyOTEgOS45ODgzMUMxMS41NzIxIDEwLjcyMDYgMTIuMDI1IDExLjg3OTkgMTIuMDI1IDEzLjU5OTlDMTIuMDI1IDEzLjg2MjMgMTIuMjM3NiAxNC4wNzQ5IDEyLjUgMTQuMDc0OUMxMi43NjIzIDE0LjA3NSAxMi45NzUgMTMuODYyMyAxMi45NzUgMTMuNkMxMi45NzUgMTEuNzIgMTIuNDc3OCAxMC4yNzk0IDExLjQ5NTkgOS4zMTE2NkMxMC43MjQ0IDguNTUxMzUgOS43MDAyNSA4LjEyOTAzIDguNTA2MjUgNy45ODM1MkMxMC4wMTg3IDcuNTQ3NCAxMS4xMjUgNi4xNTI4OSAxMS4xMjUgNC41QzExLjEyNSAyLjQ5Nzk3IDkuNTAyMDMgMC44NzUgNy41IDAuODc1Wk00LjgyNSA0LjVDNC44MjUgMy4wMjI2NCA2LjAyMjY0IDEuODI1IDcuNSAxLjgyNUM4Ljk3NzM2IDEuODI1IDEwLjE3NSAzLjAyMjY0IDEwLjE3NSA0LjVDMTAuMTc1IDUuOTc3MzYgOC45NzczNiA3LjE3NSA3LjUgNy4xNzVDNi4wMjI2NCA3LjE3NSA0LjgyNSA1Ljk3NzM2IDQuODI1IDQuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEduPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjg1MDAxIDcuNTAwNDNDMS44NTAwMSA0LjM3OTc1IDQuMzc5NjMgMS44NTAwMSA3LjUwMDAxIDEuODUwMDFDMTAuNjIwNCAxLjg1MDAxIDEzLjE1IDQuMzc5NzUgMTMuMTUgNy41MDA0M0MxMy4xNSAxMC42MjExIDEwLjYyMDQgMTMuMTUwOSA3LjUwMDAxIDEzLjE1MDlDNC4zNzk2MyAxMy4xNTA5IDEuODUwMDEgMTAuNjIxMSAxLjg1MDAxIDcuNTAwNDNaTTcuNTAwMDEgMC44NTAwMDZDMy44MjcyOCAwLjg1MDAwNiAwLjg1MDAwNiAzLjgyNzUzIDAuODUwMDA2IDcuNTAwNDNDMC44NTAwMDYgMTEuMTczMyAzLjgyNzI4IDE0LjE1MDkgNy41MDAwMSAxNC4xNTA5QzExLjE3MjcgMTQuMTUwOSAxNC4xNSAxMS4xNzMzIDE0LjE1IDcuNTAwNDNDMTQuMTUgMy44Mjc1MyAxMS4xNzI3IDAuODUwMDA2IDcuNTAwMDEgMC44NTAwMDZaTTcuMDAwMDEgOC4wMDAwMVYzLjEyODExQzcuMTY0MTEgMy4xMDk1NCA3LjMzMDk0IDMuMTAwMDEgNy41MDAwMSAzLjEwMDAxQzkuOTMwMDYgMy4xMDAwMSAxMS45IDUuMDcwMTQgMTEuOSA3LjUwMDQzQzExLjkgNy42NjkzNSAxMS44OTA1IDcuODM2MDQgMTEuODcyIDguMDAwMDFINy4wMDAwMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFVuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zIDUuNUMzIDcuOTgzIDQuOTkxNjkgOSA3IDlWMTIuNUM3IDEyLjc3NjEgNy4yMjM4NiAxMyA3LjUgMTNDNy43NzYxNCAxMyA4IDEyLjc3NjEgOCAxMi41VjlWMy4xSDlWMTIuNUM5IDEyLjc3NjEgOS4yMjM4NiAxMyA5LjUgMTNDOS43NzYxNCAxMyAxMCAxMi43NzYxIDEwIDEyLjVWMy4xSDExLjVDMTEuODAzOCAzLjEgMTIuMDUgMi44NTM3NiAxMi4wNSAyLjU1QzEyLjA1IDIuMjQ2MjQgMTEuODAzOCAyIDExLjUgMkg5LjVIOEg3LjVIN0M0Ljk5MTY5IDIgMyAzLjAxNyAzIDUuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHFuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy41IDEzLjk1QzEzLjc0ODUgMTMuOTUgMTMuOTUgMTMuNzQ4NSAxMy45NSAxMy41QzEzLjk1IDEzLjI1MTQgMTMuNzQ4NSAxMy4wNSAxMy41IDEzLjA1TDEuNDk5OTUgMTMuMDVDMS4yNTE0MiAxMy4wNSAxLjA0OTk1IDEzLjI1MTQgMS4wNDk5NSAxMy41QzEuMDQ5OTUgMTMuNzQ4NSAxLjI1MTQyIDEzLjk1IDEuNDk5OTUgMTMuOTVMMTMuNSAxMy45NVpNMTEuMDY4MSA3LjU2ODNDMTEuMjQzOSA3LjM5MjU3IDExLjI0MzkgNy4xMDc2NCAxMS4wNjgxIDYuOTMxOTFDMTAuODkyNCA2Ljc1NjE3IDEwLjYwNzUgNi43NTYxNyAxMC40MzE3IDYuOTMxOTFMNy45NDk5MyA5LjQxMzcxTDcuOTQ5OTMgMS40OTk5OEM3Ljk0OTkzIDEuMjUxNDYgNy43NDg0NiAxLjA0OTk4IDcuNDk5OTMgMS4wNDk5OEM3LjI1MTQgMS4wNDk5OCA3LjA0OTkzIDEuMjUxNDYgNy4wNDk5MyAxLjQ5OTk4TDcuMDQ5OTMgOS40MTM3MUw0LjU2ODEzIDYuOTMxOTFDNC4zOTIzOSA2Ljc1NjE3IDQuMTA3NDYgNi43NTYxNyAzLjkzMTczIDYuOTMxOTFDMy43NTU5OSA3LjEwNzY0IDMuNzU1OTkgNy4zOTI1NyAzLjkzMTczIDcuNTY4M0w3LjE4MTczIDEwLjgxODNDNy4zNTc0NiAxMC45OTQgNy42NDIzOSAxMC45OTQgNy44MTgxMiAxMC44MTgzTDExLjA2ODEgNy41NjgzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuMDUwMDUgMTMuNUMyLjA1MDA1IDEzLjc0ODUgMi4yNTE1MiAxMy45NSAyLjUwMDA1IDEzLjk1QzIuNzQ4NTggMTMuOTUgMi45NTAwNSAxMy43NDg1IDIuOTUwMDUgMTMuNUwyLjk1MDA1IDEuNDk5OTVDMi45NTAwNSAxLjI1MTQyIDIuNzQ4NTggMS4wNDk5NSAyLjUwMDA1IDEuMDQ5OTVDMi4yNTE1MiAxLjA0OTk1IDIuMDUwMDUgMS4yNTE0MiAyLjA1MDA1IDEuNDk5OTVMMi4wNTAwNSAxMy41Wk04LjQzMTcgMTEuMDY4MUM4LjYwNzQzIDExLjI0MzkgOC44OTIzNiAxMS4yNDM5IDkuMDY4MDkgMTEuMDY4MUM5LjI0MzgzIDEwLjg5MjQgOS4yNDM4MyAxMC42MDc1IDkuMDY4MDkgMTAuNDMxN0w2LjU4NjI5IDcuOTQ5OTNMMTQuNSA3Ljk0OTkzQzE0Ljc0ODUgNy45NDk5MyAxNC45NSA3Ljc0ODQ2IDE0Ljk1IDcuNDk5OTNDMTQuOTUgNy4yNTE0IDE0Ljc0ODUgNy4wNDk5MyAxNC41IDcuMDQ5OTNMNi41ODYyOSA3LjA0OTkzTDkuMDY4MDkgNC41NjgxM0M5LjI0MzgzIDQuMzkyMzkgOS4yNDM4MyA0LjEwNzQ2IDkuMDY4MDkgMy45MzE3M0M4Ljg5MjM2IDMuNzU1OTkgOC42MDc0MyAzLjc1NTk5IDguNDMxNyAzLjkzMTczTDUuMTgxNyA3LjE4MTczQzUuMDA1OTYgNy4zNTc0NiA1LjAwNTk2IDcuNjQyMzkgNS4xODE3IDcuODE4MTJMOC40MzE3IDExLjA2ODFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxLbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTIuOTUgMS41MDAwNUMxMi45NSAxLjI1MTUyIDEyLjc0ODUgMS4wNTAwNSAxMi41IDEuMDUwMDVDMTIuMjUxNCAxLjA1MDA1IDEyLjA1IDEuMjUxNTIgMTIuMDUgMS41MDAwNUwxMi4wNSAxMy41QzEyLjA1IDEzLjc0ODYgMTIuMjUxNCAxMy45NSAxMi41IDEzLjk1QzEyLjc0ODUgMTMuOTUgMTIuOTUgMTMuNzQ4NiAxMi45NSAxMy41TDEyLjk1IDEuNTAwMDVaTTYuNTY4MyAzLjkzMTg4QzYuMzkyNTcgMy43NTYxNCA2LjEwNzY0IDMuNzU2MTQgNS45MzE5MSAzLjkzMTg4QzUuNzU2MTcgNC4xMDc2MSA1Ljc1NjE3IDQuMzkyNTQgNS45MzE5MSA0LjU2ODI3TDguNDEzNzEgNy4wNTAwN0wwLjQ5OTk4NCA3LjA1MDA3QzAuMjUxNDU2IDcuMDUwMDcgMC4wNDk5ODQ3IDcuMjUxNTUgMC4wNDk5ODQ3IDcuNTAwMDdDMC4wNDk5ODQ2IDcuNzQ4NiAwLjI1MTQ1NyA3Ljk1MDA3IDAuNDk5OTg0IDcuOTUwMDdMOC40MTM3MSA3Ljk1MDA3TDUuOTMxOTEgMTAuNDMxOUM1Ljc1NjE3IDEwLjYwNzYgNS43NTYxNyAxMC44OTI1IDUuOTMxOTEgMTEuMDY4M0M2LjEwNzY0IDExLjI0NCA2LjM5MjU3IDExLjI0NCA2LjU2ODMxIDExLjA2ODNMOS44MTgzIDcuODE4MjdDOS45OTQwNCA3LjY0MjU0IDkuOTk0MDQgNy4zNTc2MSA5LjgxODMgNy4xODE4OEw2LjU2ODMgMy45MzE4OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFhuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjUwMDA1IDEuMDUwMDVDMS4yNTE1MiAxLjA1MDA1IDEuMDUwMDUgMS4yNTE1MiAxLjA1MDA1IDEuNTAwMDVDMS4wNTAwNSAxLjc0ODU4IDEuMjUxNTIgMS45NTAwNSAxLjUwMDA1IDEuOTUwMDVMMTMuNSAxLjk1MDA1QzEzLjc0ODYgMS45NTAwNSAxMy45NSAxLjc0ODU4IDEzLjk1IDEuNTAwMDVDMTMuOTUgMS4yNTE1MiAxMy43NDg2IDEuMDUwMDUgMTMuNSAxLjA1MDA1SDEuNTAwMDVaTTMuOTMxODggNy40MzE2OUMzLjc1NjE0IDcuNjA3NDMgMy43NTYxNCA3Ljg5MjM2IDMuOTMxODggOC4wNjgwOUM0LjEwNzYxIDguMjQzODMgNC4zOTI1NCA4LjI0MzgzIDQuNTY4MjcgOC4wNjgwOUw3LjA1MDA3IDUuNTg2MjlWMTMuNUM3LjA1MDA3IDEzLjc0ODUgNy4yNTE1NSAxMy45NSA3LjUwMDA3IDEzLjk1QzcuNzQ4NiAxMy45NSA3Ljk1MDA3IDEzLjc0ODUgNy45NTAwNyAxMy41TDcuOTUwMDcgNS41ODYyOUwxMC40MzE5IDguMDY4MDlDMTAuNjA3NiA4LjI0MzgzIDEwLjg5MjUgOC4yNDM4MyAxMS4wNjgzIDguMDY4MDlDMTEuMjQ0IDcuODkyMzUgMTEuMjQ0IDcuNjA3NDMgMTEuMDY4MyA3LjQzMTY5TDcuODE4MjcgNC4xODE2OUM3LjY0MjU0IDQuMDA1OTYgNy4zNTc2MSA0LjAwNTk2IDcuMTgxODggNC4xODE2OUwzLjkzMTg4IDcuNDMxNjlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxRbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4yNDE4MiAyLjMyMTgxQzMuMzkxOSAyLjIzMTMyIDMuNTc4NCAyLjIyNjAxIDMuNzMzMzggMi4zMDc4MUwxMi43MzM0IDcuMDU3ODFDMTIuODk3NCA3LjE0NDM2IDEzIDcuMzE0NTcgMTMgNy41QzEzIDcuNjg1NDMgMTIuODk3NCA3Ljg1NTY0IDEyLjczMzQgNy45NDIxOUwzLjczMzM4IDEyLjY5MjJDMy41Nzg0IDEyLjc3NCAzLjM5MTkgMTIuNzY4NyAzLjI0MTgyIDEyLjY3ODJDMy4wOTE3NSAxMi41ODc3IDMgMTIuNDI1MiAzIDEyLjI1VjIuNzVDMyAyLjU3NDc2IDMuMDkxNzUgMi40MTIzIDMuMjQxODIgMi4zMjE4MVpNNCAzLjU3OTI1VjExLjQyMDdMMTEuNDI4OCA3LjVMNCAzLjU3OTI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTggMi43NUM4IDIuNDczODYgNy43NzYxNCAyLjI1IDcuNSAyLjI1QzcuMjIzODYgMi4yNSA3IDIuNDczODYgNyAyLjc1VjdIMi43NUMyLjQ3Mzg2IDcgMi4yNSA3LjIyMzg2IDIuMjUgNy41QzIuMjUgNy43NzYxNCAyLjQ3Mzg2IDggMi43NSA4SDdWMTIuMjVDNyAxMi41MjYxIDcuMjIzODYgMTIuNzUgNy41IDEyLjc1QzcuNzc2MTQgMTIuNzUgOCAxMi41MjYxIDggMTIuMjVWOEgxMi4yNUMxMi41MjYxIDggMTIuNzUgNy43NzYxNCAxMi43NSA3LjVDMTIuNzUgNy4yMjM4NiAxMi41MjYxIDcgMTIuMjUgN0g4VjIuNzVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxlcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3Njg5MkMzLjg0MjIyIDAuODc2ODkyIDAuODc3MDc1IDMuODQyMDQgMC44NzcwNzUgNy40OTk3MkMwLjg3NzA3NSAxMS4xNTc0IDMuODQyMjIgMTQuMTIyNiA3LjQ5OTkxIDE0LjEyMjZDMTEuMTU3NiAxNC4xMjI2IDE0LjEyMjcgMTEuMTU3NCAxNC4xMjI3IDcuNDk5NzJDMTQuMTIyNyAzLjg0MjA0IDExLjE1NzYgMC44NzY4OTIgNy40OTk5MSAwLjg3Njg5MlpNMS44MjcwNyA3LjQ5OTcyQzEuODI3MDcgNC4zNjY3MSA0LjM2Njg5IDEuODI2ODkgNy40OTk5MSAxLjgyNjg5QzEwLjYzMjkgMS44MjY4OSAxMy4xNzI3IDQuMzY2NzEgMTMuMTcyNyA3LjQ5OTcyQzEzLjE3MjcgMTAuNjMyNyAxMC42MzI5IDEzLjE3MjYgNy40OTk5MSAxMy4xNzI2QzQuMzY2ODkgMTMuMTcyNiAxLjgyNzA3IDEwLjYzMjcgMS44MjcwNyA3LjQ5OTcyWk03LjUwMDAzIDRDNy43NzYxNyA0IDguMDAwMDMgNC4yMjM4NiA4LjAwMDAzIDQuNVY3SDEwLjVDMTAuNzc2MiA3IDExIDcuMjIzODYgMTEgNy41QzExIDcuNzc2MTQgMTAuNzc2MiA4IDEwLjUgOEg4LjAwMDAzVjEwLjVDOC4wMDAwMyAxMC43NzYxIDcuNzc2MTcgMTEgNy41MDAwMyAxMUM3LjIyMzg5IDExIDcuMDAwMDMgMTAuNzc2MSA3LjAwMDAzIDEwLjVWOEg0LjUwMDAzQzQuMjIzODkgOCA0LjAwMDAzIDcuNzc2MTQgNC4wMDAwMyA3LjVDNC4wMDAwMyA3LjIyMzg2IDQuMjIzODkgNyA0LjUwMDAzIDdINy4wMDAwM1Y0LjVDNy4wMDAwMyA0LjIyMzg2IDcuMjIzODkgNCA3LjUwMDAzIDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx0cj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS4wNzUwNSA0LjEwMDAxQzUuMDc1MDUgMi45MTEwMyA2LjI1NzI3IDEuOTI1MDIgNy41MDAwNSAxLjkyNTAyQzguNzQyODMgMS45MjUwMiA5LjkyNTA1IDIuOTExMDMgOS45MjUwNSA0LjEwMDAxQzkuOTI1MDUgNS4xOTg2MSA5LjM2NzgyIDUuNzE0MzYgOC42MTg1NCA2LjM3ODg0TDguNTg3NTcgNi40MDYzQzcuODQ0ODEgNy4wNjQ2NyA2LjkyNTA1IDcuODc5OTUgNi45MjUwNSA5LjVDNi45MjUwNSA5LjgxNzU3IDcuMTgyNDggMTAuMDc1IDcuNTAwMDUgMTAuMDc1QzcuODE3NjEgMTAuMDc1IDguMDc1MDUgOS44MTc1NyA4LjA3NTA1IDkuNUM4LjA3NTA1IDguNDE1MTcgOC42Mjk0NSA3LjkwNjIzIDkuMzgxNTYgNy4yMzkyNUw5LjQwMjM4IDcuMjIwNzlDMTAuMTQ5NiA2LjU1ODI5IDExLjA3NSA1LjczNzc1IDExLjA3NSA0LjEwMDAxQzExLjA3NSAyLjEyNzU3IDkuMjE4NjkgMC43NzUwMjQgNy41MDAwNSAwLjc3NTAyNEM1Ljc4MTQgMC43NzUwMjQgMy45MjUwNSAyLjEyNzU3IDMuOTI1MDUgNC4xMDAwMUMzLjkyNTA1IDQuNDE3NTggNC4xODI0OSA0LjY3NTAxIDQuNTAwMDUgNC42NzUwMUM0LjgxNzYxIDQuNjc1MDEgNS4wNzUwNSA0LjQxNzU4IDUuMDc1MDUgNC4xMDAwMVpNNy41MDAwNSAxMy4zNTc1QzcuOTgzMyAxMy4zNTc1IDguMzc1MDUgMTIuOTY1NyA4LjM3NTA1IDEyLjQ4MjVDOC4zNzUwNSAxMS45OTkyIDcuOTgzMyAxMS42MDc1IDcuNTAwMDUgMTEuNjA3NUM3LjAxNjggMTEuNjA3NSA2LjYyNTA1IDExLjk5OTIgNi42MjUwNSAxMi40ODI1QzYuNjI1MDUgMTIuOTY1NyA3LjAxNjggMTMuMzU3NSA3LjUwMDA1IDEzLjM1NzVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxucj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwNzUgNy40OTk3MkMwLjg3NzA3NSAzLjg0MjA0IDMuODQyMjIgMC44NzY4OTIgNy40OTk5MSAwLjg3Njg5MkMxMS4xNTc2IDAuODc2ODkyIDE0LjEyMjcgMy44NDIwNCAxNC4xMjI3IDcuNDk5NzJDMTQuMTIyNyAxMS4xNTc0IDExLjE1NzYgMTQuMTIyNiA3LjQ5OTkxIDE0LjEyMjZDMy44NDIyMiAxNC4xMjI2IDAuODc3MDc1IDExLjE1NzQgMC44NzcwNzUgNy40OTk3MlpNNy40OTk5MSAxLjgyNjg5QzQuMzY2ODkgMS44MjY4OSAxLjgyNzA4IDQuMzY2NzEgMS44MjcwOCA3LjQ5OTcyQzEuODI3MDggMTAuNjMyNyA0LjM2Njg5IDEzLjE3MjYgNy40OTk5MSAxMy4xNzI2QzEwLjYzMjkgMTMuMTcyNiAxMy4xNzI3IDEwLjYzMjcgMTMuMTcyNyA3LjQ5OTcyQzEzLjE3MjcgNC4zNjY3MSAxMC42MzI5IDEuODI2ODkgNy40OTk5MSAxLjgyNjg5Wk04LjI0OTkzIDEwLjVDOC4yNDk5MyAxMC45MTQyIDcuOTE0MTQgMTEuMjUgNy40OTk5MyAxMS4yNUM3LjA4NTcxIDExLjI1IDYuNzQ5OTMgMTAuOTE0MiA2Ljc0OTkzIDEwLjVDNi43NDk5MyAxMC4wODU4IDcuMDg1NzEgOS43NSA3LjQ5OTkzIDkuNzVDNy45MTQxNCA5Ljc1IDguMjQ5OTMgMTAuMDg1OCA4LjI0OTkzIDEwLjVaTTYuMDUwMDMgNi4yNUM2LjA1MDAzIDUuNTcyMTEgNi42MzUxMSA0LjkyNSA3LjUwMDAzIDQuOTI1QzguMzY0OTYgNC45MjUgOC45NTAwMyA1LjU3MjExIDguOTUwMDMgNi4yNUM4Ljk1MDAzIDYuNzQxMTggOC42ODAwMiA2Ljk5MjEyIDguMjE0NDcgNy4yNzQ5NEM4LjE2MjUxIDcuMzA2NTEgOC4xMDI1OCA3LjM0MTMxIDguMDM4NDcgNy4zNzg1NEw4LjAzODQxIDcuMzc4NThDNy44NTUyMSA3LjQ4NDk3IDcuNjM3ODggNy42MTExOSA3LjQ3NDQ5IDcuNzM4NDlDNy4yMzIxNCA3LjkyNzMyIDYuOTUwMDMgOC4yMzE5OCA2Ljk1MDAzIDguN0M2Ljk1MDA0IDkuMDAzNzYgNy4xOTYyOCA5LjI1IDcuNTAwMDQgOS4yNUM3LjgwMjQgOS4yNSA4LjA0Nzc4IDkuMDA2MDEgOC4wNTAwMiA4LjcwNDE3TDguMDUwNTYgOC43MDMzQzguMDU5MjQgOC42ODk2IDguMDg0OTMgOC42NTczNSA4LjE1MDU4IDguNjA2MkM4LjI1MjA3IDguNTI3MTIgOC4zNjUwOCA4LjQ2MTYzIDguNTE1NjcgOC4zNzQzNkw4LjUxNTcxIDguMzc0MzNDOC41OTQyMiA4LjMyODgzIDguNjgyOTYgOC4yNzc0MSA4Ljc4NTU5IDguMjE1MDZDOS4zMjAwNCA3Ljg5MDM4IDEwLjA1IDcuMzUzODIgMTAuMDUgNi4yNUMxMC4wNSA0LjkyNzg5IDguOTM1MTEgMy44MjUgNy41MDAwMyAzLjgyNUM2LjA2NDk2IDMuODI1IDQuOTUwMDMgNC45Mjc4OSA0Ljk1MDAzIDYuMjVDNC45NTAwMyA2LjU1Mzc2IDUuMTk2MjggNi44IDUuNTAwMDMgNi44QzUuODAzNzkgNi44IDYuMDUwMDMgNi41NTM3NiA2LjA1MDAzIDYuMjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxycj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOS40MjUwMyAzLjQ0MTM2QzEwLjA1NjEgMy4yMzY1NCAxMC43ODM3IDMuMjQwMiAxMS4zNzkyIDMuNTQ2MjNDMTIuNzUzMiA0LjI1MjI0IDEzLjM0NzcgNi4wNzE5MSAxMi43OTQ2IDhDMTIuNTQ2NSA4Ljg2NDkgMTIuMTEwMiA5LjcwNDcyIDExLjE4NjEgMTAuNTUyNEMxMC4yNjIgMTEuNCA4Ljk4MDM0IDExLjkgOC4zODU3MSAxMS45QzguMTcyNjkgMTEuOSA4IDExLjczMjEgOCAxMS41MjVDOCAxMS4zMTc5IDguMTc2NDQgMTEuMTUgOC4zODU3MSAxMS4xNUM5LjA2NDk3IDExLjE1IDkuNjcxODkgMTAuNzgwNCAxMC4zOTA2IDEwLjIzNkMxMC45NDA2IDkuODE5MyAxMS4zNzAxIDkuMjg2MzMgMTEuNjA4IDguODIxOTFDMTIuMDYyOCA3LjkzMzY3IDEyLjA3ODIgNi42ODE3NCAxMS4zNDMzIDYuMzQ5MDFDMTAuOTkwNCA2LjczNDU1IDEwLjUyOTUgNi45NTk0NiA5Ljk3NzI1IDYuOTU5NDZDOC43NzczIDYuOTU5NDYgOC4wNzAxIDUuOTk0MTIgOC4xMDA1MSA1LjEyMDA5QzguMTI5NTcgNC4yODQ3NCA4LjY2MDMyIDMuNjg5NTQgOS40MjUwMyAzLjQ0MTM2Wk0zLjQyNTAzIDMuNDQxMzZDNC4wNTYxNCAzLjIzNjU0IDQuNzgzNjYgMy4yNDAyIDUuMzc5MjMgMy41NDYyM0M2Ljc1MzIgNC4yNTIyNCA3LjM0NzY2IDYuMDcxOTEgNi43OTQ2MiA4QzYuNTQ2NTQgOC44NjQ5IDYuMTEwMTkgOS43MDQ3MiA1LjE4NjEgMTAuNTUyNEM0LjI2MjAxIDExLjQgMi45ODAzNCAxMS45IDIuMzg1NzEgMTEuOUMyLjE3MjY5IDExLjkgMiAxMS43MzIxIDIgMTEuNTI1QzIgMTEuMzE3OSAyLjE3NjQ0IDExLjE1IDIuMzg1NzEgMTEuMTVDMy4wNjQ5NyAxMS4xNSAzLjY3MTg5IDEwLjc4MDQgNC4zOTA1OCAxMC4yMzZDNC45NDA2NSA5LjgxOTMgNS4zNzAxNCA5LjI4NjMzIDUuNjA3OTcgOC44MjE5MUM2LjA2MjgyIDcuOTMzNjcgNi4wNzgyMSA2LjY4MTc0IDUuMzQzMyA2LjM0OTAxQzQuOTkwMzcgNi43MzQ1NSA0LjUyOTQ4IDYuOTU5NDYgMy45NzcyNSA2Ljk1OTQ2QzIuNzc3MyA2Ljk1OTQ2IDIuMDcwMSA1Ljk5NDEyIDIuMTAwNTEgNS4xMjAwOUMyLjEyOTU3IDQuMjg0NzQgMi42NjAzMiAzLjY4OTU0IDMuNDI1MDMgMy40NDEzNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG9yPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTg1IDAuODc3MDQ1QzMuODQyMTYgMC44NzcwNDUgMC44NzcwMTQgMy44NDIxOSAwLjg3NzAxNCA3LjQ5OTg4QzAuODc3MDE0IDExLjE1NzUgMy44NDIxNiAxNC4xMjI3IDcuNDk5ODUgMTQuMTIyN0MxMS4xNTc1IDE0LjEyMjcgMTQuMTIyNyAxMS4xNTc1IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDMuODQyMTkgMTEuMTU3NSAwLjg3NzA0NSA3LjQ5OTg1IDAuODc3MDQ1Wk0xLjgyNzAxIDcuNDk5ODhDMS44MjcwMSA0LjM2Njg2IDQuMzY2ODMgMS44MjcwNCA3LjQ5OTg1IDEuODI3MDRDMTAuNjMyOCAxLjgyNzA0IDEzLjE3MjcgNC4zNjY4NiAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyAxMC42MzI5IDEwLjYzMjggMTMuMTcyNyA3LjQ5OTg1IDEzLjE3MjdDNC4zNjY4MyAxMy4xNzI3IDEuODI3MDEgMTAuNjMyOSAxLjgyNzAxIDcuNDk5ODhaTTcuNDk5OTkgOS40OTk5OUM4LjYwNDU2IDkuNDk5OTkgOS40OTk5OSA4LjYwNDU2IDkuNDk5OTkgNy40OTk5OUM5LjQ5OTk5IDYuMzk1NDIgOC42MDQ1NiA1LjQ5OTk5IDcuNDk5OTkgNS40OTk5OUM2LjM5NTQyIDUuNDk5OTkgNS40OTk5OSA2LjM5NTQyIDUuNDk5OTkgNy40OTk5OUM1LjQ5OTk5IDguNjA0NTYgNi4zOTU0MiA5LjQ5OTk5IDcuNDk5OTkgOS40OTk5OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGlyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjIgMUg0LjE3NzQxSDQuMTc3NEMzLjg2OTM2IDAuOTk5OTg4IDMuNjAzNjggMC45OTk5NzggMy4zODYwOSAxLjAyMDY3QzMuMTU1NzYgMS4wNDI1NyAyLjkyODI1IDEuMDkxMTMgMi43MTYyNSAxLjIyMTA0QzIuNTE0NDIgMS4zNDQ3MiAyLjM0NDczIDEuNTE0NDIgMi4yMjEwNCAxLjcxNjI1QzIuMDkxMTMgMS45MjgyNSAyLjA0MjU3IDIuMTU1NzYgMi4wMjA2NyAyLjM4NjA5QzEuOTk5OTggMi42MDM2NyAxLjk5OTk5IDIuODY5MzUgMiAzLjE3NzM4VjMuMTc3NFYzLjJWMTEuOFYxMS44MjI2VjExLjgyMjZDMS45OTk5OSAxMi4xMzA3IDEuOTk5OTggMTIuMzk2MyAyLjAyMDY3IDEyLjYxMzlDMi4wNDI1NyAxMi44NDQyIDIuMDkxMTMgMTMuMDcxNyAyLjIyMTA0IDEzLjI4MzdDMi4zNDQ3MyAxMy40ODU2IDIuNTE0NDIgMTMuNjU1MyAyLjcxNjI1IDEzLjc3OUMyLjkyODI1IDEzLjkwODkgMy4xNTU3NiAxMy45NTc0IDMuMzg2MDkgMTMuOTc5M0MzLjYwMzY4IDE0IDMuODY5MzcgMTQgNC4xNzc0MSAxNEg0LjJIMTAuOEgxMC44MjI2QzExLjEzMDYgMTQgMTEuMzk2MyAxNCAxMS42MTM5IDEzLjk3OTNDMTEuODQ0MiAxMy45NTc0IDEyLjA3MTcgMTMuOTA4OSAxMi4yODM3IDEzLjc3OUMxMi40ODU2IDEzLjY1NTMgMTIuNjU1MyAxMy40ODU2IDEyLjc3OSAxMy4yODM3QzEyLjkwODkgMTMuMDcxNyAxMi45NTc0IDEyLjg0NDIgMTIuOTc5MyAxMi42MTM5QzEzIDEyLjM5NjMgMTMgMTIuMTMwNiAxMyAxMS44MjI2VjExLjhWMy4yVjMuMTc3NDFDMTMgMi44NjkzNiAxMyAyLjYwMzY4IDEyLjk3OTMgMi4zODYwOUMxMi45NTc0IDIuMTU1NzYgMTIuOTA4OSAxLjkyODI1IDEyLjc3OSAxLjcxNjI1QzEyLjY1NTMgMS41MTQ0MiAxMi40ODU2IDEuMzQ0NzIgMTIuMjgzNyAxLjIyMTA0QzEyLjA3MTcgMS4wOTExMyAxMS44NDQyIDEuMDQyNTcgMTEuNjEzOSAxLjAyMDY3QzExLjM5NjMgMC45OTk5NzggMTEuMTMwNiAwLjk5OTk4OCAxMC44MjI2IDFIMTAuOEg0LjJaTTMuMjM4NzUgMi4wNzM2OEMzLjI2NzIyIDIuMDU2MjMgMy4zMjM2MiAyLjAzMTEyIDMuNDgwNzUgMi4wMTYxOEMzLjY0NTMyIDIuMDAwNTMgMy44NjI5OCAyIDQuMiAySDEwLjhDMTEuMTM3IDIgMTEuMzU0NyAyLjAwMDUzIDExLjUxOTMgMi4wMTYxOEMxMS42NzY0IDIuMDMxMTIgMTEuNzMyOCAyLjA1NjIzIDExLjc2MTMgMi4wNzM2OEMxMS44Mjg1IDIuMTE0OTEgMTEuODg1MSAyLjE3MTQ3IDExLjkyNjMgMi4yMzg3NUMxMS45NDM4IDIuMjY3MjIgMTEuOTY4OSAyLjMyMzYyIDExLjk4MzggMi40ODA3NUMxMS45OTk1IDIuNjQ1MzIgMTIgMi44NjI5OCAxMiAzLjJWMTEuOEMxMiAxMi4xMzcgMTEuOTk5NSAxMi4zNTQ3IDExLjk4MzggMTIuNTE5M0MxMS45Njg5IDEyLjY3NjQgMTEuOTQzOCAxMi43MzI4IDExLjkyNjMgMTIuNzYxM0MxMS44ODUxIDEyLjgyODUgMTEuODI4NSAxMi44ODUxIDExLjc2MTMgMTIuOTI2M0MxMS43MzI4IDEyLjk0MzggMTEuNjc2NCAxMi45Njg5IDExLjUxOTMgMTIuOTgzOEMxMS4zNTQ3IDEyLjk5OTUgMTEuMTM3IDEzIDEwLjggMTNINC4yQzMuODYyOTggMTMgMy42NDUzMiAxMi45OTk1IDMuNDgwNzUgMTIuOTgzOEMzLjMyMzYyIDEyLjk2ODkgMy4yNjcyMiAxMi45NDM4IDMuMjM4NzUgMTIuOTI2M0MzLjE3MTQ3IDEyLjg4NTEgMy4xMTQ5MSAxMi44Mjg1IDMuMDczNjggMTIuNzYxM0MzLjA1NjI0IDEyLjczMjggMy4wMzExMiAxMi42NzY0IDMuMDE2MTggMTIuNTE5M0MzLjAwMDUzIDEyLjM1NDcgMyAxMi4xMzcgMyAxMS44VjMuMkMzIDIuODYyOTggMy4wMDA1MyAyLjY0NTMyIDMuMDE2MTggMi40ODA3NUMzLjAzMTEyIDIuMzIzNjIgMy4wNTYyNCAyLjI2NzIyIDMuMDczNjggMi4yMzg3NUMzLjExNDkxIDIuMTcxNDcgMy4xNzE0NyAyLjExNDkxIDMuMjM4NzUgMi4wNzM2OFpNNSAxMEM0LjcyMzg2IDEwIDQuNSAxMC4yMjM5IDQuNSAxMC41QzQuNSAxMC43NzYxIDQuNzIzODYgMTEgNSAxMUg4QzguMjc2MTQgMTEgOC41IDEwLjc3NjEgOC41IDEwLjVDOC41IDEwLjIyMzkgOC4yNzYxNCAxMCA4IDEwSDVaTTQuNSA3LjVDNC41IDcuMjIzODYgNC43MjM4NiA3IDUgN0gxMEMxMC4yNzYxIDcgMTAuNSA3LjIyMzg2IDEwLjUgNy41QzEwLjUgNy43NzYxNCAxMC4yNzYxIDggMTAgOEg1QzQuNzIzODYgOCA0LjUgNy43NzYxNCA0LjUgNy41Wk01IDRDNC43MjM4NiA0IDQuNSA0LjIyMzg2IDQuNSA0LjVDNC41IDQuNzc2MTQgNC43MjM4NiA1IDUgNUgxMEMxMC4yNzYxIDUgMTAuNSA0Ljc3NjE0IDEwLjUgNC41QzEwLjUgNC4yMjM4NiAxMC4yNzYxIDQgMTAgNEg1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuODQ5OTggNy40OTk5OEMxLjg0OTk4IDQuNjY0NTggNC4wNTk3OSAxLjg0OTk4IDcuNDk5OTggMS44NDk5OEMxMC4yNzgzIDEuODQ5OTggMTEuNjUxNSAzLjkwNjQgMTIuMjM2NyA1SDEwLjVDMTAuMjIzOSA1IDEwIDUuMjIzODYgMTAgNS41QzEwIDUuNzc2MTQgMTAuMjIzOSA2IDEwLjUgNkgxMy41QzEzLjc3NjEgNiAxNCA1Ljc3NjE0IDE0IDUuNVYyLjVDMTQgMi4yMjM4NiAxMy43NzYxIDIgMTMuNSAyQzEzLjIyMzkgMiAxMyAyLjIyMzg2IDEzIDIuNVY0LjMxMzE4QzEyLjI5NTUgMy4wNzEyNiAxMC42NjU5IDAuODQ5OTc2IDcuNDk5OTggMC44NDk5NzZDMy40MzcxNiAwLjg0OTk3NiAwLjg0OTk3NiA0LjE4NTM3IDAuODQ5OTc2IDcuNDk5OThDMC44NDk5NzYgMTAuODE0NiAzLjQzNzE2IDE0LjE1IDcuNDk5OTggMTQuMTVDOS40NDM4MiAxNC4xNSAxMS4wNjIyIDEzLjM4MDggMTIuMjE0NSAxMi4yMDg0QzEyLjgzMTUgMTEuNTgwNiAxMy4zMTMzIDEwLjgzOSAxMy42NDE4IDEwLjA0MDdDMTMuNzQ2OSA5Ljc4NTM2IDEzLjYyNTEgOS40OTMxNSAxMy4zNjk4IDkuMzg4MDZDMTMuMTE0NCA5LjI4Mjk2IDEyLjgyMjIgOS40MDQ3OCAxMi43MTcxIDkuNjYwMTRDMTIuNDM2MyAxMC4zNDI1IDEyLjAyNTEgMTAuOTc0NSAxMS41MDEzIDExLjUwNzRDMTAuNTI5NSAxMi40OTYzIDkuMTY1MDQgMTMuMTUgNy40OTk5OCAxMy4xNUM0LjA1OTc5IDEzLjE1IDEuODQ5OTggMTAuMzM1NCAxLjg0OTk4IDcuNDk5OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxscj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC44NTM1NSAyLjE0NjQ1QzUuMDQ4ODIgMi4zNDE3MSA1LjA0ODgyIDIuNjU4MjkgNC44NTM1NSAyLjg1MzU1TDMuNzA3MTEgNEg5QzExLjQ4NTMgNCAxMy41IDYuMDE0NzIgMTMuNSA4LjVDMTMuNSAxMC45ODUzIDExLjQ4NTMgMTMgOSAxM0g1QzQuNzIzODYgMTMgNC41IDEyLjc3NjEgNC41IDEyLjVDNC41IDEyLjIyMzkgNC43MjM4NiAxMiA1IDEySDlDMTAuOTMzIDEyIDEyLjUgMTAuNDMzIDEyLjUgOC41QzEyLjUgNi41NjcgMTAuOTMzIDUgOSA1SDMuNzA3MTFMNC44NTM1NSA2LjE0NjQ1QzUuMDQ4ODIgNi4zNDE3MSA1LjA0ODgyIDYuNjU4MjkgNC44NTM1NSA2Ljg1MzU1QzQuNjU4MjkgNy4wNDg4MiA0LjM0MTcxIDcuMDQ4ODIgNC4xNDY0NSA2Ljg1MzU1TDIuMTQ2NDUgNC44NTM1NUMxLjk1MTE4IDQuNjU4MjkgMS45NTExOCA0LjM0MTcxIDIuMTQ2NDUgNC4xNDY0NUw0LjE0NjQ1IDIuMTQ2NDVDNC4zNDE3MSAxLjk1MTE4IDQuNjU4MjkgMS45NTExOCA0Ljg1MzU1IDIuMTQ2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxjcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4wNDk5NSAyLjc0OTk1QzMuMDQ5OTUgMi40NDYxOSAyLjgwMzcxIDIuMTk5OTUgMi40OTk5NSAyLjE5OTk1QzIuMTk2MTkgMi4xOTk5NSAxLjk0OTk1IDIuNDQ2MTkgMS45NDk5NSAyLjc0OTk1VjEyLjI1QzEuOTQ5OTUgMTIuNTUzNyAyLjE5NjE5IDEyLjggMi40OTk5NSAxMi44QzIuODAzNzEgMTIuOCAzLjA0OTk1IDEyLjU1MzcgMy4wNDk5NSAxMi4yNVYyLjc0OTk1Wk01LjczMzMzIDIuMzA3NzZDNS41NzgzNSAyLjIyNTk2IDUuMzkxODUgMi4yMzEyNyA1LjI0MTc3IDIuMzIxNzZDNS4wOTE3IDIuNDEyMjUgNC45OTk5NSAyLjU3NDcxIDQuOTk5OTUgMi43NDk5NVYxMi4yNUM0Ljk5OTk1IDEyLjQyNTIgNS4wOTE3IDEyLjU4NzcgNS4yNDE3NyAxMi42NzgxQzUuMzkxODUgMTIuNzY4NiA1LjU3ODM1IDEyLjc3MzkgNS43MzMzMyAxMi42OTIxTDE0LjczMzMgNy45NDIxNEMxNC44OTczIDcuODU1NTkgMTUgNy42ODUzOSAxNSA3LjQ5OTk1QzE1IDcuMzE0NTIgMTQuODk3MyA3LjE0NDMxIDE0LjczMzMgNy4wNTc3Nkw1LjczMzMzIDIuMzA3NzZaTTUuOTk5OTUgMTEuNDIwN1YzLjU3OTJMMTMuNDI4NyA3LjQ5OTk1TDUuOTk5OTUgMTEuNDIwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHNyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02Ljg1MzU3IDMuODUzNTVMNy42NTM1NSAzLjA1MzUzQzguMjk4MSAyLjQwOTAxIDkuNDI4NTggMS45NjE3MiAxMC41NTIgMS44MDEyNUMxMS4xMDU2IDEuNzIyMTcgMTEuNjI5MSAxLjcxNzI1IDEyLjA1NjQgMS43ODEyNEMxMi40OTg3IDEuODQ3NDggMTIuNzY5OCAxLjk3Njk2IDEyLjg5NjUgMi4xMDM1N0MxMy4wMjMxIDIuMjMwMTggMTMuMTUyNiAyLjUwMTI1IDEzLjIxODggMi45NDM1N0MxMy4yODI4IDMuMzcwODYgMTMuMjc3OSAzLjg5NDM5IDEzLjE5ODggNC40NDgwMUMxMy4wMzgzIDUuNTcxMzkgMTIuNTkxIDYuNzAxODggMTEuOTQ2NCA3LjM0NjQ1TDcuNDk5OTkgMTEuNzkyOUw2LjM1MzU0IDEwLjY0NjVDNi4xNTgyNyAxMC40NTEyIDUuODQxNjkgMTAuNDUxMiA1LjY0NjQzIDEwLjY0NjVDNS40NTExNyAxMC44NDE3IDUuNDUxMTcgMTEuMTU4MyA1LjY0NjQzIDExLjM1MzZMNy4xNDY0NCAxMi44NTM2QzcuMzQxNzEgMTMuMDQ4OCA3LjY1ODI5IDEzLjA0ODggNy44NTM1NSAxMi44NTM2TDguNDAwNzMgMTIuMzA2NEw5LjU3MTI0IDE0LjI1NzJDOS42NTA0NiAxNC4zODkzIDkuNzg2MDggMTQuNDc3NCA5LjkzODkgMTQuNDk2M0MxMC4wOTE3IDE0LjUxNTEgMTAuMjQ0NyAxNC40NjI0IDEwLjM1MzUgMTQuMzUzNkwxMi4zNTM1IDEyLjM1MzZDMTIuNDY0OCAxMi4yNDIzIDEyLjUxNzIgMTIuMDg1MSAxMi40OTUgMTEuOTI5M0wxMi4wMzAzIDguNjc2NzlMMTIuNjUzNiA4LjA1MzU1QzEzLjUwOSA3LjE5ODA4IDE0LjAxMTcgNS44Mjg1NSAxNC4xODg3IDQuNTg5NDNDMTQuMjc4NCAzLjk2MTggMTQuMjg5MSAzLjMzODQ3IDE0LjIwNzggMi43OTU0NkMxNC4xMjg3IDIuMjY3NDggMTMuOTUxOSAxLjc0NDgyIDEzLjYwMzUgMS4zOTY0NUMxMy4yNTUyIDEuMDQ4MDkgMTIuNzMyNSAwLjg3MTMzMiAxMi4yMDQ1IDAuNzkyMjY0QzExLjY2MTUgMC43MTA5NDUgMTEuMDM4MiAwLjcyMTY0NCAxMC40MTA1IDAuODExM0M5LjE3MTQzIDAuOTg4MzA2IDcuODAxODkgMS40OTEgNi45NDY0NCAyLjM0NjQyTDYuMzIzMjIgMi45Njk2OEwzLjA3MDcxIDIuNTA1MDRDMi45MTQ5MiAyLjQ4Mjc4IDIuNzU3NzMgMi41MzUxNyAyLjY0NjQ1IDIuNjQ2NDZMMC42NDY0NTEgNC42NDY0NUMwLjUzNzU3OSA0Ljc1NTMzIDAuNDg0OTM4IDQuOTA4MjkgMC41MDM3NSA1LjA2MTFDMC41MjI1NjMgNS4yMTM5MSAwLjYxMDczIDUuMzQ5NTQgMC43NDI3NTcgNS40Mjg3NkwyLjY5MzY0IDYuNTk5MjhMMi4xNDY0NiA3LjE0NjQ1QzIuMDUyNyA3LjI0MDIyIDIuMDAwMDIgNy4zNjc0IDIuMDAwMDIgNy41MDAwMUMyLjAwMDAyIDcuNjMyNjEgMi4wNTI3IDcuNzU5NzkgMi4xNDY0NiA3Ljg1MzU2TDMuNjQ2NDcgOS4zNTM1NkMzLjg0MTczIDkuNTQ4ODMgNC4xNTgzMSA5LjU0ODgzIDQuMzUzNTcgOS4zNTM1NkM0LjU0ODg0IDkuMTU4MyA0LjU0ODg0IDguODQxNzIgNC4zNTM1NyA4LjY0NjQ2TDMuMjA3MTIgNy41MDAwMUwzLjg1MzU3IDYuODUzNTZMNi44NTM1NyAzLjg1MzU1Wk0xMC4wOTkzIDEzLjE5MzZMOS4xMjk1OSAxMS41Nzc1TDExLjE0NjQgOS41NjA2N0wxMS40Njk3IDExLjgyMzJMMTAuMDk5MyAxMy4xOTM2Wk0zLjQyMjUxIDUuODcwNDFMNS40MzkzNSAzLjg1MzU2TDMuMTc2NzggMy41MzAzNEwxLjgwNjM4IDQuOTAwNzRMMy40MjI1MSA1Ljg3MDQxWk0yLjM1MzU2IDEwLjM1MzVDMi41NDg4MiAxMC4xNTgzIDIuNTQ4ODIgOS44NDE3IDIuMzUzNTYgOS42NDY0NEMyLjE1ODMgOS40NTExOCAxLjg0MTcxIDkuNDUxMTggMS42NDY0NSA5LjY0NjQ0TDAuNjQ2NDUxIDEwLjY0NjRDMC40NTExODggMTAuODQxNyAwLjQ1MTE4OCAxMS4xNTgzIDAuNjQ2NDUxIDExLjM1MzVDMC44NDE3MTMgMTEuNTQ4OCAxLjE1ODMgMTEuNTQ4OCAxLjM1MzU2IDExLjM1MzVMMi4zNTM1NiAxMC4zNTM1Wk0zLjg1MzU4IDExLjg1MzZDNC4wNDg4NCAxMS42NTgzIDQuMDQ4ODUgMTEuMzQxNyAzLjg1MzU5IDExLjE0NjVDMy42NTgzMyAxMC45NTEyIDMuMzQxNzUgMTAuOTUxMiAzLjE0NjQ4IDExLjE0NjVMMS4xNDY0NSAxMy4xNDY0QzAuOTUxMTkgMTMuMzQxNyAwLjk1MTE4NyAxMy42NTgzIDEuMTQ2NDUgMTMuODUzNUMxLjM0MTcxIDE0LjA0ODggMS42NTgyOSAxNC4wNDg4IDEuODUzNTUgMTMuODUzNkwzLjg1MzU4IDExLjg1MzZaTTUuMzUzNTYgMTMuMzUzNUM1LjU0ODgyIDEzLjE1ODMgNS41NDg4MiAxMi44NDE3IDUuMzUzNTYgMTIuNjQ2NEM1LjE1ODMgMTIuNDUxMiA0Ljg0MTcxIDEyLjQ1MTIgNC42NDY0NSAxMi42NDY0TDMuNjQ2NDUgMTMuNjQ2NEMzLjQ1MTE5IDEzLjg0MTcgMy40NTExOSAxNC4xNTgzIDMuNjQ2NDUgMTQuMzUzNUMzLjg0MTcxIDE0LjU0ODggNC4xNTgzIDE0LjU0ODggNC4zNTM1NiAxNC4zNTM1TDUuMzUzNTYgMTMuMzUzNVpNOS40OTk5NyA2Ljc0ODgxQzEwLjE4OTcgNi43NDg4MSAxMC43NDg4IDYuMTg5NyAxMC43NDg4IDUuNUMxMC43NDg4IDQuODEwMyAxMC4xODk3IDQuMjUxMTggOS40OTk5NyA0LjI1MTE4QzguODEwMjYgNC4yNTExOCA4LjI1MTE1IDQuODEwMyA4LjI1MTE1IDUuNUM4LjI1MTE1IDYuMTg5NyA4LjgxMDI2IDYuNzQ4ODEgOS40OTk5NyA2Ljc0ODgxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNTk2NjQgMi45MzYyOEM3Ljc2MDg1IDMuMDY0MDEgOC4wMDAxMiAyLjk0Njk4IDguMDAwMTIgMi43Mzg5NVYxLjk5OTk4QzkuOTgxNDMgMiAxMS4xODQ4IDIuMzYzNyAxMS45MTA1IDMuMDg5NDVDMTIuNjM2MyAzLjgxNTIyIDEzIDUuMDE4NiAxMyA2Ljk5OTk4QzEzIDcuMjc2MTMgMTMuMjIzOSA3LjQ5OTk4IDEzLjUgNy40OTk5OEMxMy43NzYxIDcuNDk5OTggMTQgNy4yNzYxMyAxNCA2Ljk5OTk4QzE0IDQuOTQzOCAxMy42MzI1IDMuMzk3MTkgMTIuNjE3NiAyLjM4MjM0QzExLjYwMjggMS4zNjc1MiAxMC4wNTYyIDAuOTk5OTk5IDguMDAwMTIgMC45OTk5ODRWMC4yNjEyNjZDOC4wMDAxMiAwLjA1MzIyOTMgNy43NjA4NSAtMC4wNjM3OTQ0IDcuNTk2NjQgMC4wNjM5MjhMNi4wMDM4NCAxLjMwMjc3QzUuODc1MTYgMS40MDI4NiA1Ljg3NTE2IDEuNTk3MzUgNi4wMDM4NCAxLjY5NzQ0TDcuNTk2NjQgMi45MzYyOFpNOS41IDVIMi41QzIuMjIzODYgNSAyIDUuMjIzODYgMiA1LjVWMTIuNUMyIDEyLjc3NjEgMi4yMjM4NiAxMyAyLjUgMTNIOS41QzkuNzc2MTQgMTMgMTAgMTIuNzc2MSAxMCAxMi41VjUuNUMxMCA1LjIyMzg2IDkuNzc2MTQgNSA5LjUgNVpNMi41IDRDMS42NzE1NyA0IDEgNC42NzE1NyAxIDUuNVYxMi41QzEgMTMuMzI4NCAxLjY3MTU3IDE0IDIuNSAxNEg5LjVDMTAuMzI4NCAxNCAxMSAxMy4zMjg0IDExIDEyLjVWNS41QzExIDQuNjcxNTcgMTAuMzI4NCA0IDkuNSA0SDIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGRyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjgxODMyIDAuNjgxNzlDNy42NDI1OCAwLjUwNjA1NCA3LjM1NzY2IDAuNTA2MDU0IDcuMTgxOTIgMC42ODE3OUw1LjE4MTkyIDIuNjgxNzlDNS4wMDYxOSAyLjg1NzUzIDUuMDA2MTkgMy4xNDI0NSA1LjE4MTkyIDMuMzE4MTlDNS4zNTc2NiAzLjQ5MzkyIDUuNjQyNTggMy40OTM5MiA1LjgxODMyIDMuMzE4MTlMNy4wNTAxMiAyLjA4NjM4TDcuMDUwMTIgNS41MDAyM0M3LjA1MDEyIDUuNzQ4NzYgNy4yNTE1OSA1Ljk1MDIzIDcuNTAwMTIgNS45NTAyM0M3Ljc0ODY1IDUuOTUwMjMgNy45NTAxMiA1Ljc0ODc2IDcuOTUwMTIgNS41MDAyM0w3Ljk1MDEyIDIuMDg2MzhMOS4xODE5MiAzLjMxODE5QzkuMzU3NjYgMy40OTM5MiA5LjY0MjU4IDMuNDkzOTIgOS44MTgzMiAzLjMxODE5QzkuOTk0MDYgMy4xNDI0NSA5Ljk5NDA2IDIuODU3NTMgOS44MTgzMiAyLjY4MTc5TDcuODE4MzIgMC42ODE3OVpNNy45NTAxMiAxMi45MTM2VjkuNTAwMjNDNy45NTAxMiA5LjI1MTcgNy43NDg2NSA5LjA1MDIzIDcuNTAwMTIgOS4wNTAyM0M3LjI1MTU5IDkuMDUwMjMgNy4wNTAxMiA5LjI1MTcgNy4wNTAxMiA5LjUwMDIzVjEyLjkxMzZMNS44MTgzMiAxMS42ODE4QzUuNjQyNTggMTEuNTA2MSA1LjM1NzY2IDExLjUwNjEgNS4xODE5MiAxMS42ODE4QzUuMDA2MTkgMTEuODU3NSA1LjAwNjE5IDEyLjE0MjQgNS4xODE5MiAxMi4zMTgyTDcuMTgxOTIgMTQuMzE4MkM3LjI2NjMyIDE0LjQwMjYgNy4zODA3NyAxNC40NSA3LjUwMDEyIDE0LjQ1QzcuNjE5NDcgMTQuNDUgNy43MzM5MyAxNC40MDI2IDcuODE4MzIgMTQuMzE4Mkw5LjgxODMyIDEyLjMxODJDOS45OTQwNiAxMi4xNDI0IDkuOTk0MDYgMTEuODU3NSA5LjgxODMyIDExLjY4MThDOS42NDI1OCAxMS41MDYxIDkuMzU3NjYgMTEuNTA2MSA5LjE4MTkyIDExLjY4MThMNy45NTAxMiAxMi45MTM2Wk0xLjQ5OTk0IDcuMDAwMTdDMS4yMjM4IDcuMDAwMTcgMC45OTk5MzkgNy4yMjQwMyAwLjk5OTkzOSA3LjUwMDE3QzAuOTk5OTM5IDcuNzc2MzEgMS4yMjM4IDguMDAwMTcgMS40OTk5NCA4LjAwMDE3TDEzLjQ5OTkgOC4wMDAxN0MxMy43NzYxIDguMDAwMTcgMTMuOTk5OSA3Ljc3NjMxIDEzLjk5OTkgNy41MDAxN0MxMy45OTk5IDcuMjI0MDMgMTMuNzc2MSA3LjAwMDE3IDEzLjQ5OTkgNy4wMDAxN0wxLjQ5OTk0IDcuMDAwMTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxmcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTQgMTIuODVMMSAxMi44NUwxIDE0LjE1TDE0IDE0LjE1TDE0IDEyLjg1Wk0xNCA4Ljg1MDAyTDEgOC44NTAwMkwxIDEwLjE1TDE0IDEwLjE1TDE0IDguODUwMDJaTTEgNC44NTAwM0wxNCA0Ljg1MDAzTDE0IDYuMTUwMDNMMSA2LjE1MDAyTDEgNC44NTAwM1pNMTQgMC44NTAwMjVMMSAwLjg1MDAyNUwxIDIuMTUwMDJMMTQgMi4xNTAwMkwxNCAwLjg1MDAyNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHByPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjUgNEMwLjIyMzg1OCA0IDAgNC4yMjM4NiAwIDQuNVYxMC41QzAgMTAuNzc2MSAwLjIyMzg1OCAxMSAwLjUgMTFIMTQuNUMxNC43NzYxIDExIDE1IDEwLjc3NjEgMTUgMTAuNVY0LjVDMTUgNC4yMjM4NiAxNC43NzYxIDQgMTQuNSA0SDAuNVpNMSAxMFY1SDIuMDc1VjcuNUMyLjA3NSA3LjczNDcyIDIuMjY1MjggNy45MjUgMi41IDcuOTI1QzIuNzM0NzIgNy45MjUgMi45MjUgNy43MzQ3MiAyLjkyNSA3LjVWNUg0LjA3NVY2LjVDNC4wNzUgNi43MzQ3MiA0LjI2NTI4IDYuOTI1IDQuNSA2LjkyNUM0LjczNDcyIDYuOTI1IDQuOTI1IDYuNzM0NzIgNC45MjUgNi41VjVINi4wNzVWNi41QzYuMDc1IDYuNzM0NzIgNi4yNjUyOCA2LjkyNSA2LjUgNi45MjVDNi43MzQ3MiA2LjkyNSA2LjkyNSA2LjczNDcyIDYuOTI1IDYuNVY1SDguMDc1VjcuNUM4LjA3NSA3LjczNDcyIDguMjY1MjggNy45MjUgOC41IDcuOTI1QzguNzM0NzIgNy45MjUgOC45MjUgNy43MzQ3MiA4LjkyNSA3LjVWNUgxMC4wNzVWNi41QzEwLjA3NSA2LjczNDcyIDEwLjI2NTMgNi45MjUgMTAuNSA2LjkyNUMxMC43MzQ3IDYuOTI1IDEwLjkyNSA2LjczNDcyIDEwLjkyNSA2LjVWNUgxMi4wNzVWNi41QzEyLjA3NSA2LjczNDcyIDEyLjI2NTMgNi45MjUgMTIuNSA2LjkyNUMxMi43MzQ3IDYuOTI1IDEyLjkyNSA2LjczNDcyIDEyLjkyNSA2LjVWNUgxNFYxMEgxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQ3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuNSAwQzAuMjIzODU4IDAgMCAwLjIyMzg1OCAwIDAuNVYxNC41QzAgMTQuNzc2MSAwLjIyMzg1OCAxNSAwLjUgMTVINC41QzQuNzc2MTQgMTUgNSAxNC43NzYxIDUgMTQuNVY1SDE0LjVDMTQuNzc2MSA1IDE1IDQuNzc2MTQgMTUgNC41VjAuNUMxNSAwLjIyMzg1OCAxNC43NzYxIDAgMTQuNSAwSDAuNVpNMSA0LjA3NTA1TDEgMUg0LjA3NTAyQzQuMDc1MDIgMSA0LjA3NTAyIDEgNC4wNzUwMiAxTDQuMDc1MDUgNC4wNzUwN0wxIDQuMDc1MDVaTTAuOTk5OTk3IDQuOTI1MDVMMSAxNEg0VjEyLjkyNUgyLjc1MDAyQzIuNTE1MyAxMi45MjUgMi4zMjUwMiAxMi43MzQ4IDIuMzI1MDIgMTIuNUMyLjMyNTAyIDEyLjI2NTMgMi41MTUzIDEyLjA3NSAyLjc1MDAyIDEyLjA3NUg0VjEwLjkyNUgyLjI1MDAyQzIuMDE1MyAxMC45MjUgMS44MjUwMiAxMC43MzQ3IDEuODI1MDIgMTAuNUMxLjgyNTAyIDEwLjI2NTMgMi4wMTUzIDEwLjA3NSAyLjI1MDAyIDEwLjA3NUg0VjguOTI1MDRMMi43NTAwMiA4LjkyNTAyQzIuNTE1MyA4LjkyNTAyIDIuMzI1MDIgOC43MzQ3NCAyLjMyNTAyIDguNTAwMDJDMi4zMjUwMyA4LjI2NTI5IDIuNTE1MzEgOC4wNzUwMiAyLjc1MDAzIDguMDc1MDJMNCA4LjA3NTA0VjYuOTI1MDJMMi43NDk5OSA2LjkyNUMyLjUxNTI3IDYuOTI1IDIuMzI1IDYuNzM0NzIgMi4zMjUgNi41QzIuMzI1IDYuMjY1MjggMi41MTUyOSA2LjA3NSAyLjc1MDAxIDYuMDc1TDQgNi4wNzUwMlY0LjkyNTA3TDAuOTk5OTk3IDQuOTI1MDVaTTQuOTI1MDUgNEg2LjA3NVYyLjc1MDA2QzYuMDc1IDIuNTE1MzQgNi4yNjUyOCAyLjMyNTA2IDYuNSAyLjMyNTA2QzYuNzM0NzIgMi4zMjUwNiA2LjkyNSAyLjUxNTM0IDYuOTI1IDIuNzUwMDZWNEg4LjA3NTAyVjIuNzUwMDVDOC4wNzUwMiAyLjUxNTMzIDguMjY1MyAyLjMyNTA1IDguNTAwMDIgMi4zMjUwNUM4LjczNDc0IDIuMzI1MDUgOC45MjUwMiAyLjUxNTMzIDguOTI1MDIgMi43NTAwNVY0SDEwLjA3NTFWMi4yNTAwNUMxMC4wNzUxIDIuMDE1MzMgMTAuMjY1MyAxLjgyNTA1IDEwLjUwMDEgMS44MjUwNUMxMC43MzQ4IDEuODI1MDUgMTAuOTI1MSAyLjAxNTMzIDEwLjkyNTEgMi4yNTAwNVY0SDEyLjA3NTFWMi43NTAwNUMxMi4wNzUxIDIuNTE1MzMgMTIuMjY1NCAyLjMyNTA1IDEyLjUwMDEgMi4zMjUwNUMxMi43MzQ4IDIuMzI1MDUgMTIuOTI1MSAyLjUxNTMzIDEyLjkyNTEgMi43NTAwNVY0SDE0VjFINC45MjUwMkw0LjkyNTA1IDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxocj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiAxLjVDMiAxLjc3NjE0IDEuNzc2MTQgMiAxLjUgMkMxLjIyMzg2IDIgMSAxLjc3NjE0IDEgMS41QzEgMS4yMjM4NiAxLjIyMzg2IDEgMS41IDFDMS43NzYxNCAxIDIgMS4yMjM4NiAyIDEuNVpNMiA1TDIgMTBIMTNWNUgyWk0yIDRDMS40NDc3MiA0IDEgNC40NDc3MiAxIDVWMTBDMSAxMC41NTIzIDEuNDQ3NzIgMTEgMiAxMUgxM0MxMy41NTIzIDExIDE0IDEwLjU1MjMgMTQgMTBWNUMxNCA0LjQ0NzcyIDEzLjU1MjMgNCAxMyA0SDJaTTEuNSAxNEMxLjc3NjE0IDE0IDIgMTMuNzc2MSAyIDEzLjVDMiAxMy4yMjM5IDEuNzc2MTQgMTMgMS41IDEzQzEuMjIzODYgMTMgMSAxMy4yMjM5IDEgMTMuNUMxIDEzLjc3NjEgMS4yMjM4NiAxNCAxLjUgMTRaTTQgMS41QzQgMS43NzYxNCAzLjc3NjE0IDIgMy41IDJDMy4yMjM4NiAyIDMgMS43NzYxNCAzIDEuNUMzIDEuMjIzODYgMy4yMjM4NiAxIDMuNSAxQzMuNzc2MTQgMSA0IDEuMjIzODYgNCAxLjVaTTMuNSAxNEMzLjc3NjE0IDE0IDQgMTMuNzc2MSA0IDEzLjVDNCAxMy4yMjM5IDMuNzc2MTQgMTMgMy41IDEzQzMuMjIzODYgMTMgMyAxMy4yMjM5IDMgMTMuNUMzIDEzLjc3NjEgMy4yMjM4NiAxNCAzLjUgMTRaTTYgMS41QzYgMS43NzYxNCA1Ljc3NjE0IDIgNS41IDJDNS4yMjM4NiAyIDUgMS43NzYxNCA1IDEuNUM1IDEuMjIzODYgNS4yMjM4NiAxIDUuNSAxQzUuNzc2MTQgMSA2IDEuMjIzODYgNiAxLjVaTTUuNSAxNEM1Ljc3NjE0IDE0IDYgMTMuNzc2MSA2IDEzLjVDNiAxMy4yMjM5IDUuNzc2MTQgMTMgNS41IDEzQzUuMjIzODYgMTMgNSAxMy4yMjM5IDUgMTMuNUM1IDEzLjc3NjEgNS4yMjM4NiAxNCA1LjUgMTRaTTggMS41QzggMS43NzYxNCA3Ljc3NjE0IDIgNy41IDJDNy4yMjM4NiAyIDcgMS43NzYxNCA3IDEuNUM3IDEuMjIzODYgNy4yMjM4NiAxIDcuNSAxQzcuNzc2MTQgMSA4IDEuMjIzODYgOCAxLjVaTTcuNSAxNEM3Ljc3NjE0IDE0IDggMTMuNzc2MSA4IDEzLjVDOCAxMy4yMjM5IDcuNzc2MTQgMTMgNy41IDEzQzcuMjIzODYgMTMgNyAxMy4yMjM5IDcgMTMuNUM3IDEzLjc3NjEgNy4yMjM4NiAxNCA3LjUgMTRaTTEwIDEuNUMxMCAxLjc3NjE0IDkuNzc2MTQgMiA5LjUgMkM5LjIyMzg2IDIgOSAxLjc3NjE0IDkgMS41QzkgMS4yMjM4NiA5LjIyMzg2IDEgOS41IDFDOS43NzYxNCAxIDEwIDEuMjIzODYgMTAgMS41Wk05LjUgMTRDOS43NzYxNCAxNCAxMCAxMy43NzYxIDEwIDEzLjVDMTAgMTMuMjIzOSA5Ljc3NjE0IDEzIDkuNSAxM0M5LjIyMzg2IDEzIDkgMTMuMjIzOSA5IDEzLjVDOSAxMy43NzYxIDkuMjIzODYgMTQgOS41IDE0Wk0xMiAxLjVDMTIgMS43NzYxNCAxMS43NzYxIDIgMTEuNSAyQzExLjIyMzkgMiAxMSAxLjc3NjE0IDExIDEuNUMxMSAxLjIyMzg2IDExLjIyMzkgMSAxMS41IDFDMTEuNzc2MSAxIDEyIDEuMjIzODYgMTIgMS41Wk0xMS41IDE0QzExLjc3NjEgMTQgMTIgMTMuNzc2MSAxMiAxMy41QzEyIDEzLjIyMzkgMTEuNzc2MSAxMyAxMS41IDEzQzExLjIyMzkgMTMgMTEgMTMuMjIzOSAxMSAxMy41QzExIDEzLjc3NjEgMTEuMjIzOSAxNCAxMS41IDE0Wk0xNCAxLjVDMTQgMS43NzYxNCAxMy43NzYxIDIgMTMuNSAyQzEzLjIyMzkgMiAxMyAxLjc3NjE0IDEzIDEuNUMxMyAxLjIyMzg2IDEzLjIyMzkgMSAxMy41IDFDMTMuNzc2MSAxIDE0IDEuMjIzODYgMTQgMS41Wk0xMy41IDE0QzEzLjc3NjEgMTQgMTQgMTMuNzc2MSAxNCAxMy41QzE0IDEzLjIyMzkgMTMuNzc2MSAxMyAxMy41IDEzQzEzLjIyMzkgMTMgMTMgMTMuMjIzOSAxMyAxMy41QzEzIDEzLjc3NjEgMTMuMjIzOSAxNCAxMy41IDE0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYgMy41QzYgMi42NzE1NyA2LjY3MTU3IDIgNy41IDJDOC4zMjg0MyAyIDkgMi42NzE1NyA5IDMuNUM5IDQuMzI4NDMgOC4zMjg0MyA1IDcuNSA1QzYuNjcxNTcgNSA2IDQuMzI4NDMgNiAzLjVaTTggNS45NDk5OUM5LjE0MTEyIDUuNzE4MzYgMTAgNC43MDk0OCAxMCAzLjVDMTAgMi4xMTkyOSA4Ljg4MDcxIDEgNy41IDFDNi4xMTkyOSAxIDUgMi4xMTkyOSA1IDMuNUM1IDQuNzA5NDggNS44NTg4OCA1LjcxODM2IDcgNS45NDk5OVYxMy41QzcgMTMuNzc2MSA3LjIyMzg2IDE0IDcuNSAxNEM3Ljc3NjE0IDE0IDggMTMuNzc2MSA4IDEzLjVWNS45NDk5OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGdyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMCAzLjVDMTAgNC43MDk0OCA5LjE0MTEyIDUuNzE4MzYgOCA1Ljk0OTk5VjEzLjVDOCAxMy43NzYxIDcuNzc2MTQgMTQgNy41IDE0QzcuMjIzODYgMTQgNyAxMy43NzYxIDcgMTMuNVY1Ljk0OTk5QzUuODU4ODggNS43MTgzNiA1IDQuNzA5NDggNSAzLjVDNSAyLjExOTI5IDYuMTE5MjkgMSA3LjUgMUM4Ljg4MDcxIDEgMTAgMi4xMTkyOSAxMCAzLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxtcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwNzUgNy40OTk4OEMwLjg3NzA3NSAzLjg0MjE5IDMuODQyMjIgMC44NzcwNDUgNy40OTk5MSAwLjg3NzA0NUMxMS4xNTc2IDAuODc3MDQ1IDE0LjEyMjcgMy44NDIxOSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAxMS4xNTc1IDExLjE1NzYgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMy44NDIyMiAxNC4xMjI3IDAuODc3MDc1IDExLjE1NzUgMC44NzcwNzUgNy40OTk4OFpNNy40OTk5MSAxLjgyNzA0QzQuMzY2ODkgMS44MjcwNCAxLjgyNzA4IDQuMzY2ODYgMS44MjcwOCA3LjQ5OTg4QzEuODI3MDggMTAuNjMyOSA0LjM2Njg5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzEwLjYzMjkgMTMuMTcyNyAxMy4xNzI3IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNC4zNjY4NiAxMC42MzI5IDEuODI3MDQgNy40OTk5MSAxLjgyNzA0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMDVcIixkOlwiTTYuNzgyOTYgMTMuMzc2QzguNzM5MDQgOS45NTI4NCA4LjczOTA0IDUuMDQ3MTkgNi43ODI5NiAxLjYyNDA1TDcuMjE3MDggMS4zNzU5OEM5LjI2MSA0Ljk1MjgzIDkuMjYxIDEwLjA0NzIgNy4yMTcwOCAxMy42MjRMNi43ODI5NiAxMy4zNzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4xXCIsZDpcIk03LjI4MjA0IDEzLjQ3NzVDOS4yMzkyOSA5Ljk5NTIzIDkuMjM5MjkgNS4wMDQ3NSA3LjI4MjA0IDEuNTIyNDhMNy43MTc5MSAxLjI3NzVDOS43NjA2NyA0LjkxMTkgOS43NjA2NyAxMC4wODgxIDcuNzE3OTEgMTMuNzIyNUw3LjI4MjA0IDEzLjQ3NzVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4xNVwiLGQ6XCJNNy44MjA5OCAxMy41MDY0QzkuNzI1MDIgOS45OTUyMyA5LjcyNjM2IDUuMDE0MTEgNy44MjQ5MiAxLjUwMDg0TDguMjY0NjUgMS4yNjI4NUMxMC4yNDY1IDQuOTI0NjYgMTAuMjQ1MSAxMC4wODUgOC4yNjA1MiAxMy43NDQ4TDcuODIwOTggMTMuNTA2NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjJcIixkOlwiTTguNDEyODQgMTMuNDI5QzEwLjE5NTIgOS45Mjg0MiAxMC4xOTU3IDUuMDc1MzcgOC40MTQzNSAxLjU3NDAyTDguODU5OTkgMS4zNDcyOUMxMC43MTM5IDQuOTkxMTMgMTAuNzEzMyAxMC4wMTI4IDguODU4NDEgMTMuNjU1OUw4LjQxMjg0IDEzLjQyOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjI1XCIsZDpcIk05LjAyNDQxIDEzLjI5NTZDMTAuNjU2NyA5LjgzNzkgMTAuNjU4NiA1LjE3NzE1IDkuMDMwMDUgMS43MTY1Nkw5LjQ4MjQ1IDEuNTAzNjZDMTEuMTc0NSA1LjA5OTE5IDExLjE3MjYgOS45MTYyOSA5LjQ3NjU3IDEzLjUwOTFMOS4wMjQ0MSAxMy4yOTU2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuM1wiLGQ6XCJNOS42NjgwOSAxMy4wNjU1QzExLjEwOTcgOS42OTU3MiAxMS4xMTA3IDUuMzEyMSA5LjY3MDg4IDEuOTQwOTVMMTAuMTMwNyAxLjc0NDU3QzExLjYyNDEgNS4yNDEyMSAxMS42MjMxIDkuNzY2ODMgMTAuMTI3OCAxMy4yNjIyTDkuNjY4MDkgMTMuMDY1NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjM1XCIsZDpcIk0xMC4zMzEgMTIuNzQ1NkMxMS41NTUxIDkuNTIwNzMgMTEuNTU2NCA1LjQ5MTAzIDEwLjMzNDcgMi4yNjQ0NEwxMC44MDI0IDIuMDg3NEMxMi4wNjcyIDUuNDI4MTUgMTIuMDY1OSA5LjU4Mzk0IDEwLjc5ODUgMTIuOTIzMUwxMC4zMzEgMTIuNzQ1NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjRcIixkOlwiTTExLjAxNTUgMTIuMjk4NkMxMS45OTM4IDkuMjk3NDQgMTEuOTk0OCA1LjcxMjk2IDExLjAxODQgMi43MTA2N0wxMS40OTM5IDIuNTU2MDNDMTIuNTAzIDUuNjU4OSAxMi41MDIgOS4zNTE3OCAxMS40OTA5IDEyLjQ1MzVMMTEuMDE1NSAxMi4yOTg2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNDVcIixkOlwiTTExLjcyMTQgMTEuNjY4QzEyLjQyNTQgOS4wMTMwMyAxMi40MjYyIDUuOTk2OTEgMTEuNzIzNyAzLjM0MTE2TDEyLjIwNzEgMy4yMTMyOUMxMi45MzE4IDUuOTUyOTIgMTIuOTMxIDkuMDU3MjggMTIuMjA0NyAxMS43OTYxTDExLjcyMTQgMTEuNjY4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNVwiLGQ6XCJNMTIuNDQzMiAxMC43NTJDMTIuODUyNCA4LjYzNzYyIDEyLjg1MjMgNi4zNjA4OSAxMi40NDI5IDQuMjQ2NkwxMi45MzM4IDQuMTUxNTVDMTMuMzU1MyA2LjMyODYxIDEzLjM1NTQgOC42Njk4NSAxMi45MzQxIDEwLjg0N0wxMi40NDMyIDEwLjc1MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHdyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzA3NSA3LjQ5OTg4QzAuODc3MDc1IDMuODQyMTkgMy44NDIyMiAwLjg3NzA0NSA3LjQ5OTkxIDAuODc3MDQ1QzExLjE1NzYgMC44NzcwNDUgMTQuMTIyNyAzLjg0MjE5IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDExLjE1NzUgMTEuMTU3NiAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MzLjg0MjIyIDE0LjEyMjcgMC44NzcwNzUgMTEuMTU3NSAwLjg3NzA3NSA3LjQ5OTg4Wk03LjQ5OTkxIDEuODI3MDRDNC4zNjY4OSAxLjgyNzA0IDEuODI3MDggNC4zNjY4NiAxLjgyNzA4IDcuNDk5ODhDMS44MjcwOCAxMC42MzI5IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDMTAuNjMyOSAxMy4xNzI3IDEzLjE3MjcgMTAuNjMyOSAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyA0LjM2Njg2IDEwLjYzMjkgMS44MjcwNCA3LjQ5OTkxIDEuODI3MDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4wNVwiLGQ6XCJNMTIuMTYxOSAzLjg1MTgyQzguMzU4MTcgNC44ODkxOCA0Ljg4OTM2IDguMzU4IDMuODUxOTkgMTIuMTYxN0wzLjM2OTYgMTIuMDMwMUM0LjQ1MzU2IDguMDU1NjQgOC4wNTU4MSA0LjQ1MzM5IDEyLjAzMDMgMy4zNjk0M0wxMi4xNjE5IDMuODUxODJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4xXCIsZDpcIk0xMS44ODA3IDMuNDI3MDdDOC4wMzQ0MSA0LjUwNTQyIDQuNTA1NjEgOC4wMzQyMiAzLjQyNzI2IDExLjg4MDVMMi45NDU4MiAxMS43NDU2QzQuMDcxMjkgNy43MzEyMSA3LjczMTQgNC4wNzExIDExLjc0NTggMi45NDU2M0wxMS44ODA3IDMuNDI3MDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4xNVwiLGQ6XCJNMTEuNTIwMSAzLjAyNTU2QzcuNjkwOTIgNC4xNjE5OSA0LjE2Nzc5IDcuNjgzMjMgMy4wMjgwNSAxMS41MTJMMi41NDg4MyAxMS4zNjk0QzMuNzM2NzYgNy4zNzg2OSA3LjM4NjU5IDMuNzMwNzYgMTEuMzc3OCAyLjU0NjIzTDExLjUyMDEgMy4wMjU1NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjJcIixkOlwiTTExLjA0NjggMi42NjE2OUM3LjMxMTE3IDMuODc2NjQgMy44NzkxOCA3LjMwNzkgMi42NjI5OCAxMS4wNDM0TDIuMTg3NTQgMTAuODg4NkMzLjQ1MzI0IDcuMDAxMDkgNy4wMDQ0NSAzLjQ1MDYyIDEwLjg5MjEgMi4xODYyMUwxMS4wNDY4IDIuNjYxNjlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4yNVwiLGQ6XCJNMTAuNTIwMSAyLjMyMzY1QzYuOTIwOTEgMy42MTQ0NyAzLjYyMzkxIDYuOTA4NzYgMi4zMjg0NSAxMC41MDczTDEuODU4IDEwLjMzOEMzLjIwMzk4IDYuNTk5MDkgNi42MTE1NSAzLjE5NDI0IDEwLjM1MTMgMS44NTMwMUwxMC41MjAxIDIuMzIzNjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4zXCIsZDpcIk05LjkwMjIyIDIuMDMxMjJDNi41MDAwMyAzLjM5NDY1IDMuMzk5NjggNi40OTM2NyAyLjAzMzk5IDkuODk1NTFMMS41Njk5OCA5LjcwOTI0QzIuOTg2NTEgNi4xODA3NiA2LjE4NzI4IDIuOTgxMzMgOS43MTYyMiAxLjU2NzFMOS45MDIyMiAyLjAzMTIyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMzVcIixkOlwiTTkuMjA3MjcgMS43ODg3M0M2LjA2MTM2IDMuMjAzNDkgMy4yMTEwMyA2LjA1MjAzIDEuNzkzMzEgOS4xOTczOEwxLjMzNzQ3IDguOTkxOTJDMi44MDUzNiA1LjczNTI4IDUuNzQ0ODUgMi43OTc2IDkuMDAyMiAxLjMzMjcyTDkuMjA3MjcgMS43ODg3M1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjRcIixkOlwiTTguNDA3MTMgMS42MjA4NUM1LjU5MzIzIDMuMDUxMTcgMy4wNTc5NCA1LjU4NTA5IDEuNjI1NDQgOC4zOTg0N0wxLjE3OTg3IDguMTcxNkMyLjY2MDM2IDUuMjYzOTcgNS4yNzIzMiAyLjY1MzQgOC4xODA1NyAxLjE3NTEzTDguNDA3MTMgMS42MjA4NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjQ1XCIsZDpcIk03LjQ2MjA3IDEuNTY3NDdDNS4wODY4OSAyLjk0Njk1IDIuOTUzNjIgNS4wNzkxMiAxLjU3MjQ5IDcuNDUzNzlMMS4xNDAyOCA3LjIwMjQxQzIuNTY1MDMgNC43NTI3MyA0Ljc2MDcgMi41NTgxOCA3LjIxMDk2IDEuMTM1MUw3LjQ2MjA3IDEuNTY3NDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi41XCIsZDpcIk02LjMwNDA3IDEuNzA0ODdDNC41MTk2NCAyLjkxMDYzIDIuOTA5ODMgNC41MjA2MSAxLjcwNDMgNi4zMDUxM0wxLjI4OTk4IDYuMDI1MjRDMi41MzEzIDQuMTg3NzMgNC4xODY3MyAyLjUzMjE0IDYuMDI0MTMgMS4yOTA1OUw2LjMwNDA3IDEuNzA0ODdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx5cj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3NzA0NUMzLjg0MjIyIDAuODc3MDQ1IDAuODc3MDc1IDMuODQyMTkgMC44NzcwNzUgNy40OTk4OEMwLjg3NzA3NSA5LjE0ODggMS40Nzk2OSAxMC42NTcgMi40NzY3IDExLjgxNjJMMS42NDY0NyAxMi42NDY0QzEuNDUxMjEgMTIuODQxNyAxLjQ1MTIxIDEzLjE1ODMgMS42NDY0NyAxMy4zNTM1QzEuODQxNzMgMTMuNTQ4OCAyLjE1ODMyIDEzLjU0ODggMi4zNTM1OCAxMy4zNTM1TDMuMTgzODMgMTIuNTIzM0M0LjM0MzAyIDEzLjUyMDIgNS44NTExIDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzExLjE1NzYgMTQuMTIyNyAxNC4xMjI3IDExLjE1NzUgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgNS44NTEwNyAxMy41MjAyIDQuMzQyOTggMTIuNTIzMyAzLjE4MzhMMTMuMzUzNiAyLjM1MzU1QzEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDEuODQxNyAxMy4zNTM2IDEuNjQ2NDRDMTMuMTU4MyAxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMi42NDY1IDEuNjQ2NDRMMTEuODE2MiAyLjQ3NjY3QzEwLjY1NyAxLjQ3OTY2IDkuMTQ4ODMgMC44NzcwNDUgNy40OTk5MSAwLjg3NzA0NVpNMTEuMTQyMyAzLjE1MDY1QzEwLjE1NjggMi4zMjQ0OSA4Ljg4NjQ0IDEuODI3MDQgNy40OTk5MSAxLjgyNzA0QzQuMzY2ODkgMS44MjcwNCAxLjgyNzA4IDQuMzY2ODYgMS44MjcwOCA3LjQ5OTg4QzEuODI3MDggOC44ODY0MSAyLjMyNDUyIDEwLjE1NjggMy4xNTA2OSAxMS4xNDIyTDExLjE0MjMgMy4xNTA2NVpNMy44NTc4MSAxMS44NDkzQzQuODQzMjIgMTIuNjc1MyA2LjExMzQ4IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzEwLjYzMjkgMTMuMTcyNyAxMy4xNzI3IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNi4xMTM0NSAxMi42NzU0IDQuODQzMTkgMTEuODQ5MyAzLjg1Nzc4TDMuODU3ODEgMTEuODQ5M1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjA1XCIsZDpcIk02Ljc4Mjk2IDEzLjM3NkM4LjczOTA0IDkuOTUyODQgOC43MzkwNCA1LjA0NzE5IDYuNzgyOTYgMS42MjQwNUw3LjIxNzA4IDEuMzc1OThDOS4yNjEgNC45NTI4MyA5LjI2MSAxMC4wNDcyIDcuMjE3MDggMTMuNjI0TDYuNzgyOTYgMTMuMzc2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMVwiLGQ6XCJNNy4yODIwNCAxMy40Nzc1QzkuMjM5MjkgOS45OTUyMyA5LjIzOTI5IDUuMDA0NzUgNy4yODIwNCAxLjUyMjQ4TDcuNzE3OTEgMS4yNzc1QzkuNzYwNjcgNC45MTE5IDkuNzYwNjcgMTAuMDg4MSA3LjcxNzkxIDEzLjcyMjVMNy4yODIwNCAxMy40Nzc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMTVcIixkOlwiTTcuODIwOTggMTMuNTA2NEM5LjcyNTAyIDkuOTk1MjMgOS43MjYzNiA1LjAxNDExIDcuODI0OTIgMS41MDA4NEw4LjI2NDY1IDEuMjYyODVDMTAuMjQ2NSA0LjkyNDY2IDEwLjI0NTEgMTAuMDg1IDguMjYwNTIgMTMuNzQ0OEw3LjgyMDk4IDEzLjUwNjRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4yXCIsZDpcIk04LjQxMjg0IDEzLjQyOUMxMC4xOTUyIDkuOTI4NDIgMTAuMTk1NyA1LjA3NTM3IDguNDE0MzUgMS41NzQwMkw4Ljg1OTk5IDEuMzQ3MjlDMTAuNzEzOSA0Ljk5MTEzIDEwLjcxMzMgMTAuMDEyOCA4Ljg1ODQxIDEzLjY1NTlMOC40MTI4NCAxMy40MjlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4yNVwiLGQ6XCJNOS4wMjQ0MSAxMy4yOTU2QzEwLjY1NjcgOS44Mzc5IDEwLjY1ODYgNS4xNzcxNSA5LjAzMDA1IDEuNzE2NTZMOS40ODI0NSAxLjUwMzY2QzExLjE3NDUgNS4wOTkxOSAxMS4xNzI2IDkuOTE2MjkgOS40NzY1NyAxMy41MDkxTDkuMDI0NDEgMTMuMjk1NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjNcIixkOlwiTTkuNjY4MDkgMTMuMDY1NUMxMS4xMDk3IDkuNjk1NzIgMTEuMTEwNyA1LjMxMjEgOS42NzA4OCAxLjk0MDk1TDEwLjEzMDcgMS43NDQ1N0MxMS42MjQxIDUuMjQxMjEgMTEuNjIzMSA5Ljc2NjgzIDEwLjEyNzggMTMuMjYyMkw5LjY2ODA5IDEzLjA2NTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4zNVwiLGQ6XCJNMTAuMzMxIDEyLjc0NTZDMTEuNTU1MSA5LjUyMDczIDExLjU1NjQgNS40OTEwMyAxMC4zMzQ3IDIuMjY0NDRMMTAuODAyNCAyLjA4NzRDMTIuMDY3MiA1LjQyODE1IDEyLjA2NTkgOS41ODM5NCAxMC43OTg1IDEyLjkyMzFMMTAuMzMxIDEyLjc0NTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi40XCIsZDpcIk0xMS4wMTU1IDEyLjI5ODZDMTEuOTkzOCA5LjI5NzQ0IDExLjk5NDggNS43MTI5NiAxMS4wMTg0IDIuNzEwNjdMMTEuNDkzOSAyLjU1NjAzQzEyLjUwMyA1LjY1ODkgMTIuNTAyIDkuMzUxNzggMTEuNDkwOSAxMi40NTM1TDExLjAxNTUgMTIuMjk4NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjQ1XCIsZDpcIk0xMS43MjE0IDExLjY2OEMxMi40MjU0IDkuMDEzMDMgMTIuNDI2MiA1Ljk5NjkxIDExLjcyMzcgMy4zNDExNkwxMi4yMDcxIDMuMjEzMjlDMTIuOTMxOCA1Ljk1MjkyIDEyLjkzMSA5LjA1NzI4IDEyLjIwNDcgMTEuNzk2MUwxMS43MjE0IDExLjY2OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjVcIixkOlwiTTEyLjQ0MzIgMTAuNzUyQzEyLjg1MjQgOC42Mzc2MiAxMi44NTIzIDYuMzYwODkgMTIuNDQyOSA0LjI0NjZMMTIuOTMzOCA0LjE1MTU1QzEzLjM1NTMgNi4zMjg2MSAxMy4zNTU0IDguNjY5ODUgMTIuOTM0MSAxMC44NDdMMTIuNDQzMiAxMC43NTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxicj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMDVcIixkOlwiTTEyLjEzOTggMy44ODYxNkMxMy44NTUzIDQuOTQxNTkgMTUgNi44MzcgMTUgOC45OTk5OUMxNSAxMi4zMTM3IDEyLjMxMzcgMTUgOS4wMDAwMSAxNUM2Ljg0MzUgMTUgNC45NTI5NSAxMy44NjIxIDMuODk1NjkgMTIuMTU1Mkw0LjMyMDc1IDExLjg5MTlDNS4yOTA2OSAxMy40NTc4IDcuMDIzNzUgMTQuNSA5LjAwMDAxIDE0LjVDMTIuMDM3NSAxNC41IDE0LjUgMTIuMDM3NSAxNC41IDguOTk5OTlDMTQuNSA3LjAxNzggMTMuNDUxNiA1LjI4MDI2IDExLjg3NzggNC4zMTIwMkwxMi4xMzk4IDMuODg2MTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4yXCIsZDpcIk0xMi44NTEgNS4wNzMyQzEzLjg2ODQgNi4wNzEwNSAxNC41IDcuNDYxOTggMTQuNSA4Ljk5OTk5QzE0LjUgMTIuMDM3NSAxMi4wMzc2IDE0LjUgOS4wMDAwMiAxNC41QzcuNDYyMTQgMTQuNSA2LjA3MTMxIDEzLjg2ODUgNS4wNzM0OCAxMi44NTEyTDUuNDMwNDIgMTIuNTAxMUM2LjMzODA5IDEzLjQyNjQgNy42MDE4NSAxNCA5LjAwMDAyIDE0QzExLjc2MTQgMTQgMTQgMTEuNzYxNCAxNCA4Ljk5OTk5QzE0IDcuNjAxNyAxMy40MjY0IDYuMzM3ODUgMTIuNTAwOSA1LjQzMDE3TDEyLjg1MSA1LjA3MzJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4zNVwiLGQ6XCJNMTMuMzAyMSA2LjQ1MDcxQzEzLjc0NTUgNy4xOTczNyAxNCA4LjA2OTM0IDE0IDlDMTQgMTEuNzYxNCAxMS43NjE0IDE0IDkuMDAwMDEgMTRDOC4wNDg2NyAxNCA3LjE1ODY3IDEzLjczNDEgNi40MDExOCAxMy4yNzIzTDYuNjYxNDEgMTIuODQ1NEM3LjM0Mjc0IDEzLjI2MDcgOC4xNDMwNSAxMy41IDkuMDAwMDEgMTMuNUMxMS40ODUzIDEzLjUgMTMuNSAxMS40ODUzIDEzLjUgOUMxMy41IDguMTYxNjQgMTMuMjcxIDcuMzc3NTMgMTIuODcyMiA2LjcwNTk4TDEzLjMwMjEgNi40NTA3MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjVcIixkOlwiTTEzLjM3NDQgNy45NDAyMUMxMy40NTY2IDguMjgwMyAxMy41IDguNjM1MjQgMTMuNSA5QzEzLjUgMTEuNDg1MyAxMS40ODUzIDEzLjUgOS4wMDAwMiAxMy41QzguNjExMDMgMTMuNSA4LjIzMzIxIDEzLjQ1MDYgNy44NzI2NyAxMy4zNTc2TDcuOTk3NTggMTIuODczNEM4LjMxNzY3IDEyLjk1NiA4LjY1MzUyIDEzIDkuMDAwMDIgMTNDMTEuMjA5MSAxMyAxMyAxMS4yMDkxIDEzIDlDMTMgOC42NzUwNyAxMi45NjEzIDguMzU5NTIgMTIuODg4NCA4LjA1NzU2TDEzLjM3NDQgNy45NDAyMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjY1XCIsZDpcIk0xMi45MTU1IDkuODIxMzJDMTIuNTg5OCAxMS4zODEzIDExLjM1NjIgMTIuNjA3MiA5Ljc5MjAzIDEyLjkyMTVMOS42OTM1MyAxMi40MzEzQzExLjA2MTMgMTIuMTU2NSAxMi4xNDEzIDExLjA4MzMgMTIuNDI2MSA5LjcxOTEzTDEyLjkxNTUgOS44MjEzMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuMjc3MSA3LjUwMjUyQzEuMjc3MSA0LjA2NDU1IDQuMDY0MTMgMS4yNzc1MyA3LjUwMjA5IDEuMjc3NTNDMTAuOTQgMS4yNzc1MyAxMy43MjcxIDQuMDY0NTUgMTMuNzI3MSA3LjUwMjUyQzEzLjcyNzEgMTAuOTQwNSAxMC45NCAxMy43Mjc1IDcuNTAyMDkgMTMuNzI3NUM0LjA2NDEyIDEzLjcyNzUgMS4yNzcxIDEwLjk0MDUgMS4yNzcxIDcuNTAyNTJaTTcuNTAyMDkgMi4yMjc1MkM0LjU4ODggMi4yMjc1MiAyLjIyNzEgNC41ODkyMiAyLjIyNzEgNy41MDI1MkMyLjIyNzEgMTAuNDE1OCA0LjU4ODggMTIuNzc3NSA3LjUwMjA5IDEyLjc3NzVDMTAuNDE1NCAxMi43Nzc1IDEyLjc3NzEgMTAuNDE1OCAxMi43NzcxIDcuNTAyNTJDMTIuNzc3MSA0LjU4OTIyIDEwLjQxNTQgMi4yMjc1MiA3LjUwMjA5IDIuMjI3NTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx4cj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSA3LjUwMDAzQzUgOC4zMjg0NSA0LjMyODQzIDkuMDAwMDMgMy41IDkuMDAwMDNDMi42NzE1NyA5LjAwMDAzIDIgOC4zMjg0NSAyIDcuNTAwMDNDMiA2LjY3MTYgMi42NzE1NyA2LjAwMDAzIDMuNSA2LjAwMDAzQzQuMzI4NDMgNi4wMDAwMyA1IDYuNjcxNiA1IDcuNTAwMDNaTTUuNzEzMTMgOC42NjM4OEM1LjI5NDQ1IDkuNDU4MzggNC40NjA0OCAxMCAzLjUgMTBDMi4xMTkyOSAxMCAxIDguODgwNzQgMSA3LjUwMDAzQzEgNi4xMTkzMSAyLjExOTI5IDUuMDAwMDMgMy41IDUuMDAwMDNDNC40NjA0OCA1LjAwMDAzIDUuMjk0NDUgNS41NDE2NyA1LjcxMzEzIDYuMzM2MTZMOS4xMDQyNCA0LjIxNjcxQzkuMDM2NDMgMy45ODk2OCA5IDMuNzQ5MTEgOSAzLjUwMDAzQzkgMi4xMTkzMiAxMC4xMTkzIDEuMDAwMDMgMTEuNSAxLjAwMDAzQzEyLjg4MDcgMS4wMDAwMyAxNCAyLjExOTMyIDE0IDMuNTAwMDNDMTQgNC44ODA3NCAxMi44ODA3IDYuMDAwMDMgMTEuNSA2LjAwMDAzQzEwLjY5MTUgNi4wMDAwMyA5Ljk3MjY0IDUuNjE2MjQgOS41MTU2NiA1LjAyMDlMNS45ODUzIDcuMjI3MzhDNS45OTUwMiA3LjMxNjkyIDYgNy40MDc4OSA2IDcuNTAwMDNDNiA3LjU5MjE2IDUuOTk1MDIgNy42ODMxMiA1Ljk4NTMgNy43NzI2N0w5LjUxNTY3IDkuOTc5MTVDOS45NzI2NSA5LjM4MzgyIDEwLjY5MTUgOS4wMDAwMyAxMS41IDkuMDAwMDNDMTIuODgwNyA5LjAwMDAzIDE0IDEwLjExOTMgMTQgMTEuNUMxNCAxMi44ODA3IDEyLjg4MDcgMTQgMTEuNSAxNEMxMC4xMTkzIDE0IDkgMTIuODgwNyA5IDExLjVDOSAxMS4yNTA5IDkuMDM2NDMgMTEuMDEwNCA5LjEwNDI1IDEwLjc4MzNMNS43MTMxMyA4LjY2Mzg4Wk0xMS41IDUuMDAwMDNDMTIuMzI4NCA1LjAwMDAzIDEzIDQuMzI4NDYgMTMgMy41MDAwM0MxMyAyLjY3MTYgMTIuMzI4NCAyLjAwMDAzIDExLjUgMi4wMDAwM0MxMC42NzE2IDIuMDAwMDMgMTAgMi42NzE2IDEwIDMuNTAwMDNDMTAgNC4zMjg0NiAxMC42NzE2IDUuMDAwMDMgMTEuNSA1LjAwMDAzWk0xMyAxMS41QzEzIDEyLjMyODUgMTIuMzI4NCAxMyAxMS41IDEzQzEwLjY3MTYgMTMgMTAgMTIuMzI4NSAxMCAxMS41QzEwIDEwLjY3MTYgMTAuNjcxNiAxMCAxMS41IDEwQzEyLjMyODQgMTAgMTMgMTAuNjcxNiAxMyAxMS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sT3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNSA1LjAwMDA2QzMuMjIzODYgNS4wMDAwNiAzIDUuMjIzOTIgMyA1LjUwMDA2TDMgMTEuNTAwMUMzIDExLjc3NjIgMy4yMjM4NiAxMi4wMDAxIDMuNSAxMi4wMDAxTDExLjUgMTIuMDAwMUMxMS43NzYxIDEyLjAwMDEgMTIgMTEuNzc2MiAxMiAxMS41MDAxTDEyIDUuNTAwMDZDMTIgNS4yMjM5MiAxMS43NzYxIDUuMDAwMDYgMTEuNSA1LjAwMDA2TDEwLjI1IDUuMDAwMDZDOS45NzM4NiA1LjAwMDA2IDkuNzUgNC43NzYyIDkuNzUgNC41MDAwNkM5Ljc1IDQuMjIzOTIgOS45NzM4NiA0LjAwMDA2IDEwLjI1IDQuMDAwMDZMMTEuNSA0LjAwMDA2QzEyLjMyODQgNC4wMDAwNiAxMyA0LjY3MTYzIDEzIDUuNTAwMDZMMTMgMTEuNTAwMUMxMyAxMi4zMjg1IDEyLjMyODQgMTMuMDAwMSAxMS41IDEzLjAwMDFMMy41IDEzLjAwMDFDMi42NzE1NyAxMy4wMDAxIDIgMTIuMzI4NSAyIDExLjUwMDFMMiA1LjUwMDA2QzIgNC42NzE2MyAyLjY3MTU3IDQuMDAwMDYgMy41IDQuMDAwMDZMNC43NSA0LjAwMDA2QzUuMDI2MTQgNC4wMDAwNiA1LjI1IDQuMjIzOTIgNS4yNSA0LjUwMDA2QzUuMjUgNC43NzYyIDUuMDI2MTQgNS4wMDAwNiA0Ljc1IDUuMDAwMDZMMy41IDUuMDAwMDZaTTcgMS42MzY0TDUuNTY4MiAzLjA2ODJDNS4zOTI0NiAzLjI0MzkzIDUuMTA3NTQgMy4yNDM5MyA0LjkzMTggMy4wNjgyQzQuNzU2MDcgMi44OTI0NiA0Ljc1NjA3IDIuNjA3NTQgNC45MzE4IDIuNDMxOEw3LjE4MTggMC4xODE4MDJDNy4yNjYxOSAwLjA5NzQxIDcuMzgwNjUgMC4wNDk5OTkgNy41IDAuMDQ5OTk5QzcuNjE5MzUgMC4wNDk5OTkgNy43MzM4MSAwLjA5NzQxIDcuODE4MiAwLjE4MTgwMkwxMC4wNjgyIDIuNDMxOEMxMC4yNDM5IDIuNjA3NTQgMTAuMjQzOSAyLjg5MjQ2IDEwLjA2ODIgMy4wNjgyQzkuODkyNDYgMy4yNDM5MyA5LjYwNzU0IDMuMjQzOTMgOS40MzE4IDMuMDY4Mkw4IDEuNjM2NEw4IDguNUM4IDguNzc2MTQgNy43NzYxNCA5IDcuNSA5QzcuMjIzODYgOSA3IDguNzc2MTQgNyA4LjVMNyAxLjYzNjRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxMcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTIuMzUzNiAxLjE0NjQ1QzEyLjE1ODMgMC45NTExODQgMTEuODQxNyAwLjk1MTE4NCAxMS42NDY0IDEuMTQ2NDVDMTEuNDUxMiAxLjM0MTcxIDExLjQ1MTIgMS42NTgyOSAxMS42NDY0IDEuODUzNTVMMTIuNzkyOSAzSDEyQzEwLjcwMzcgMyA5LjcxMTExIDMuNTg0MjMgOC44NzI0OCA0LjM4OTMxQzguMjAwNjUgNS4wMzQyNyA3LjU5MzQ5IDUuODU2ODQgNi45OTQ2MSA2LjY2ODJDNi44NjI4NyA2Ljg0NjY4IDYuNzMxNTQgNy4wMjQ2MiA2LjYgNy4yQzUuMTA4NzQgOS4xODgzNSAzLjQ5MDM3IDExIDAuNSAxMUMwLjIyMzg1OCAxMSAwIDExLjIyMzkgMCAxMS41QzAgMTEuNzc2MSAwLjIyMzg1OCAxMiAwLjUgMTJDNC4wMDk2MyAxMiA1Ljg5MTI2IDkuODExNjUgNy40IDcuOEM3LjU0MzY3IDcuNjA4NDUgNy42ODMyIDcuNDE5NjIgNy44MTk5NiA3LjIzNDU0TDcuODIwMDUgNy4yMzQ0M0w3LjgyMDA2IDcuMjM0NDFDOC40MTY3NCA2LjQyNjk1IDguOTYwNjkgNS42OTA4NSA5LjU2NTAyIDUuMTEwNjlDMTAuMjg4OSA0LjQxNTc3IDExLjA0NjMgNCAxMiA0SDEyLjc5MjlMMTEuNjQ2NCA1LjE0NjQ1QzExLjQ1MTIgNS4zNDE3MSAxMS40NTEyIDUuNjU4MjkgMTEuNjQ2NCA1Ljg1MzU1QzExLjg0MTcgNi4wNDg4MiAxMi4xNTgzIDYuMDQ4ODIgMTIuMzUzNiA1Ljg1MzU1TDE0LjM1MzYgMy44NTM1NUMxNC41NDg4IDMuNjU4MjkgMTQuNTQ4OCAzLjM0MTcxIDE0LjM1MzYgMy4xNDY0NUwxMi4zNTM2IDEuMTQ2NDVaTTAuNSAzQzMuMzUyNzggMyA1LjEyOTkyIDQuNDQ1ODggNi41MDU0OCA2LjA2NzQ2TDYuMzc2MiA2LjI0MjY2QzYuMjQ4MyA2LjQxNjEgNi4xMjI5MyA2LjU4NjA5IDYgNi43NUM1Ljk2Mzk3IDYuNzk4MDQgNS45Mjc5OCA2Ljg0NTgxIDUuODkyIDYuODkzMzFDNC41NzM0OCA1LjI5MzA2IDMuMDI2MzcgNCAwLjUgNEMwLjIyMzg1OCA0IDAgMy43NzYxNCAwIDMuNUMwIDMuMjIzODYgMC4yMjM4NTggMyAwLjUgM1pNOC44NzI0OCAxMC42MTA3QzguMzcyODQgMTAuMTMxIDcuOTA4OTcgOS41NTMxNCA3LjQ1NzY3IDguOTU0NjhDNy42NDY4OCA4LjcxNjkzIDcuODI3MDQgOC40ODA2MSA4IDguMjVMOC4wODk4NyA4LjEyOTg3QzguNTg0MTIgOC43OTQwMiA5LjA1Mjg4IDkuMzk3NjYgOS41NjUwMiA5Ljg4OTMxQzEwLjI4ODkgMTAuNTg0MiAxMS4wNDYzIDExIDEyIDExSDEyLjc5MjlMMTEuNjQ2NCA5Ljg1MzU1QzExLjQ1MTIgOS42NTgyOSAxMS40NTEyIDkuMzQxNzEgMTEuNjQ2NCA5LjE0NjQ1QzExLjg0MTcgOC45NTExOCAxMi4xNTgzIDguOTUxMTggMTIuMzUzNiA5LjE0NjQ1TDE0LjM1MzYgMTEuMTQ2NEMxNC41NDg4IDExLjM0MTcgMTQuNTQ4OCAxMS42NTgzIDE0LjM1MzYgMTEuODUzNkwxMi4zNTM2IDEzLjg1MzZDMTIuMTU4MyAxNC4wNDg4IDExLjg0MTcgMTQuMDQ4OCAxMS42NDY0IDEzLjg1MzZDMTEuNDUxMiAxMy42NTgzIDExLjQ1MTIgMTMuMzQxNyAxMS42NDY0IDEzLjE0NjRMMTIuNzkyOSAxMkgxMkMxMC43MDM3IDEyIDkuNzExMTEgMTEuNDE1OCA4Ljg3MjQ4IDEwLjYxMDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxfcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEuNSAzLjA0OTk5QzExLjc0ODUgMy4wNDk5OSAxMS45NSAzLjI1MTQ2IDExLjk1IDMuNDk5OTlWNy40OTk5OUMxMS45NSA3Ljc0ODUyIDExLjc0ODUgNy45NDk5OSAxMS41IDcuOTQ5OTlDMTEuMjUxNSA3Ljk0OTk5IDExLjA1IDcuNzQ4NTIgMTEuMDUgNy40OTk5OVY0LjU4NjM5TDQuNTg2MzggMTEuMDVINy40OTk5OUM3Ljc0ODUyIDExLjA1IDcuOTQ5OTkgMTEuMjUxNSA3Ljk0OTk5IDExLjVDNy45NDk5OSAxMS43NDg1IDcuNzQ4NTIgMTEuOTUgNy40OTk5OSAxMS45NUwzLjQ5OTk5IDExLjk1QzMuMzgwNjQgMTEuOTUgMy4yNjYxOCAxMS45MDI2IDMuMTgxNzkgMTEuODE4MkMzLjA5NzQgMTEuNzMzOCAzLjA0OTk5IDExLjYxOTMgMy4wNDk5OSAxMS41TDMuMDQ5OTkgNy40OTk5OUMzLjA0OTk5IDcuMjUxNDYgMy4yNTE0NiA3LjA0OTk5IDMuNDk5OTkgNy4wNDk5OUMzLjc0ODUyIDcuMDQ5OTkgMy45NDk5OSA3LjI1MTQ2IDMuOTQ5OTkgNy40OTk5OUwzLjk0OTk5IDEwLjQxMzZMMTAuNDEzNiAzLjk0OTk5TDcuNDk5OTkgMy45NDk5OUM3LjI1MTQ2IDMuOTQ5OTkgNy4wNDk5OSAzLjc0ODUyIDcuMDQ5OTkgMy40OTk5OUM3LjA0OTk5IDMuMjUxNDYgNy4yNTE0NiAzLjA0OTk5IDcuNDk5OTkgMy4wNDk5OUwxMS41IDMuMDQ5OTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxNcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41MzczMSAwLjgyNjg3M0M3LjUxMjUgMC44MjQzOTIgNy40ODc1IDAuODI0MzkyIDcuNDYyNjkgMC44MjY4NzNMMy45NjI2OSAxLjE3Njg3QzMuODU2NzIgMS4xODc0NyAzLjc2MDI1IDEuMjQyNjIgMy42OTczNiAxLjMyODU3TDAuNjk5NzcxIDUuNDI1MjhDMC42NTQwNDYgNS40ODYyNyAwLjYyNjQ3IDUuNTYxNjUgMC42MjUwNTcgNS42NDM0QzAuNjI1MDE5IDUuNjQ1NiAwLjYyNSA1LjY0NzgxIDAuNjI1IDUuNjUwMDFDMC42MjUgNS42NTA1MiAwLjYyNTAwMSA1LjY1MTAzIDAuNjI1MDAzIDUuNjUxNTNDMC42MjUzNjMgNS43NDIzNyAwLjY1ODAyMSA1LjgyNTU5IDAuNzEyMDg3IDUuODkwM0w3LjIxMDQyIDEzLjc4ODNDNy4yODE2NSAxMy44NzQ5IDcuMzg3ODkgMTMuOTI1IDcuNSAxMy45MjVDNy42MTIxMSAxMy45MjUgNy43MTgzNSAxMy44NzQ5IDcuNzg5NTggMTMuNzg4M0wxNC4yODc5IDUuODkwMzFDMTQuMzQyIDUuODI1NiAxNC4zNzQ2IDUuNzQyMzcgMTQuMzc1IDUuNjUxNTNDMTQuMzc1IDUuNjUxMDMgMTQuMzc1IDUuNjUwNTIgMTQuMzc1IDUuNjUwMDFDMTQuMzc1IDUuNjQ4NDkgMTQuMzc1IDUuNjQ2OTcgMTQuMzc1IDUuNjQ1NDVDMTQuMzc0OSA1LjYzOTYzIDE0LjM3NDcgNS42MzM4MiAxNC4zNzQ0IDUuNjI4MDFDMTQuMzcgNS41NTIxOSAxNC4zNDMxIDUuNDgyNDIgMTQuMzAwMiA1LjQyNTI3TDExLjMwMjYgMS4zMjg1N0MxMS4yMzk3IDEuMjQyNjIgMTEuMTQzMyAxLjE4NzQ3IDExLjAzNzMgMS4xNzY4N0w3LjUzNzMxIDAuODI2ODczWk0xMC45MjUgNS4yNzUwMVY1LjI1MjM2TDEwLjkyMjMgNS4yNzUwMUgxMC45MjVaTTEwLjkzNDIgNS4xNzQ5OEgxMy4xODc3TDExLjI0OTUgMi41MjYxTDEwLjkzNDIgNS4xNzQ5OFpNMTAuNTcwNyAxLjg4Mzk1TDguMDQ0MzIgMS42MzEzMUwxMC4xNzQ3IDUuMjEwMzRMMTAuNTcwNyAxLjg4Mzk1Wk02Ljk1NTY4IDEuNjMxMzFMNC40MjkzMSAxLjg4Mzk1TDQuODI1MzEgNS4yMTAzNEw2Ljk1NTY4IDEuNjMxMzFaTTMuNzUwNDYgMi41MjYxTDEuODEyMjYgNS4xNzQ5OEg0LjA2NThMMy43NTA0NiAyLjUyNjFaTTEuNzk0MTYgNi4wMjUwMUw2Ljc1ODYxIDEyLjA1ODdMNC4yMjM3MSA2LjA2NjlDNC4yMTc4NyA2LjA1MzEgNC4yMTMxNCA2LjAzOTEgNC4yMDk0OSA2LjAyNTAxSDEuNzk0MTZaTTUuMTUwNTUgNi4wMjUwMUw3LjQ5OTk5IDEyLjEwODVMOS44NDk0MyA2LjAyNTAxSDkuNzg2ODFINS4yMTMxOUg1LjE1MDU1Wk0xMC43OTA1IDYuMDI1MDFDMTAuNzg2OSA2LjAzOTEgMTAuNzgyMSA2LjA1MzEgMTAuNzc2MyA2LjA2NjlMOC4yNDEzOSAxMi4wNTg3TDEzLjIwNTggNi4wMjUwMUgxMC43OTA1Wk03LjUgMi4xODMxN0w5LjM0MDM4IDUuMjc1MDFINS42NTk2Mkw3LjUgMi4xODMxN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGpyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjEwODc2IDE0TDkuNDY1ODIgMUgxMC44MTc4TDUuNDYwNzQgMTRINC4xMDg3NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEVyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMC4zMDA0IDcuNDk5OTFDMTAuMzAwNCA4LjQ5NDMgOS40OTQyNiA5LjMwMDQxIDguNDk5ODggOS4zMDA0MUM3LjUwNTQ5IDkuMzAwNDEgNi42OTkzOCA4LjQ5NDMgNi42OTkzOCA3LjQ5OTkxQzYuNjk5MzggNi41MDU1MyA3LjUwNTQ5IDUuNjk5NDIgOC40OTk4OCA1LjY5OTQyQzkuNDk0MjYgNS42OTk0MiAxMC4zMDA0IDYuNTA1NTMgMTAuMzAwNCA3LjQ5OTkxWk0xMS4yMDUgOEMxMC45Njk5IDkuMjgwMjkgOS44NDgxNiAxMC4yNTA0IDguNDk5ODggMTAuMjUwNEM3LjE1MTYgMTAuMjUwNCA2LjAyOTkgOS4yODAyOSA1Ljc5NDczIDhIMC41QzAuMjIzODU4IDggMCA3Ljc3NjE0IDAgNy41QzAgNy4yMjM4NiAwLjIyMzg1OCA3IDAuNSA3SDUuNzk0N0M2LjAyOTggNS43MTk2MiA3LjE1MTU0IDQuNzQ5NDIgOC40OTk4OCA0Ljc0OTQyQzkuODQ4MjIgNC43NDk0MiAxMC45Njk5IDUuNzE5NjIgMTEuMjA1MSA3SDE0LjVDMTQuNzc2MSA3IDE1IDcuMjIzODYgMTUgNy41QzE1IDcuNzc2MTQgMTQuNzc2MSA4IDE0LjUgOEgxMS4yMDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxTcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTQuNDk5OSAwLjk5OTk5NEMxNC4yMjM3IDAuOTk5OTk0IDEzLjk5OTkgMS4yMjM4NSAxMy45OTk5IDEuNDk5OTlMMTMuOTk5OSA1Ljk5OTk1TDkuOTk5OTIgNS45OTk5NUM5LjQ0NzY0IDUuOTk5OTUgOC45OTk5MyA2LjQ0NzY2IDguOTk5OTMgNi45OTk5NEw4Ljk5OTkzIDcuOTk5OTRDOC45OTk5MyA4LjU1MjIyIDkuNDQ3NjQgOC45OTk5MyA5Ljk5OTkyIDguOTk5OTNMMTMuOTk5OSA4Ljk5OTkzTDEzLjk5OTkgMTMuNDk5OUMxMy45OTk5IDEzLjc3NiAxNC4yMjM3IDEzLjk5OTkgMTQuNDk5OSAxMy45OTk5QzE0Ljc3NiAxMy45OTk5IDE0Ljk5OTkgMTMuNzc2IDE0Ljk5OTkgMTMuNDk5OUwxNC45OTk5IDEuNDk5OTlDMTQuOTk5OSAxLjIyMzg1IDE0Ljc3NiAwLjk5OTk5NCAxNC40OTk5IDAuOTk5OTk0Wk00Ljk5OTk2IDUuOTk5OTVMMC45OTk5OTIgNS45OTk5NUwwLjk5OTk5MiAxLjQ5OTk5QzAuOTk5OTkyIDEuMjIzODUgMC43NzYxMzYgMC45OTk5OTQgMC40OTk5OTYgMC45OTk5OTRDMC4yMjM4NTYgMC45OTk5OTQgLTkuNzg1MmUtMDkgMS4yMjM4NSAtMi4xODU1N2UtMDggMS40OTk5OUw0LjA3Mjc5ZS0wNyAxMy40OTk5QzMuOTUyMDhlLTA3IDEzLjc3NiAwLjIyMzg1NSAxMy45OTk5IDAuNDk5OTk2IDEzLjk5OTlDMC43NzYxMzYgMTMuOTk5OSAwLjk5OTk5MiAxMy43NzYgMC45OTk5OTIgMTMuNDk5OUwwLjk5OTk5MiA4Ljk5OTkzTDQuOTk5OTYgOC45OTk5M0M1LjU1MjI0IDguOTk5OTMgNS45OTk5NSA4LjU1MjIyIDUuOTk5OTUgNy45OTk5M0w1Ljk5OTk1IDYuOTk5OTRDNS45OTk5NSA2LjQ0NzY2IDUuNTUyMjQgNS45OTk5NSA0Ljk5OTk2IDUuOTk5OTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxQcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC45OTk4NzggMC41QzAuOTk5ODc4IDAuMjIzODU4IDEuMjIzNzQgMCAxLjQ5OTg4IDBIMTMuNDk5OUMxMy43NzYgMCAxMy45OTk5IDAuMjIzODU4IDEzLjk5OTkgMC41QzEzLjk5OTkgMC43NzYxNDIgMTMuNzc2IDEgMTMuNDk5OSAxTDkgMVY1QzkgNS41NTIyOCA4LjU1MjI4IDYgOCA2SDdDNi40NDc3MiA2IDYgNS41NTIyOCA2IDVWMUgxLjQ5OTg4QzEuMjIzNzQgMSAwLjk5OTg3OCAwLjc3NjE0MiAwLjk5OTg3OCAwLjVaTTcgOUM2LjQ0NzcyIDkgNiA5LjQ0NzcxIDYgMTBWMTRIMS40OTk4OEMxLjIyMzc0IDE0IDAuOTk5ODc4IDE0LjIyMzkgMC45OTk4NzggMTQuNUMwLjk5OTg3OCAxNC43NzYxIDEuMjIzNzQgMTUgMS40OTk4OCAxNUgxMy40OTk5QzEzLjc3NiAxNSAxMy45OTk5IDE0Ljc3NjEgMTMuOTk5OSAxNC41QzEzLjk5OTkgMTQuMjIzOSAxMy43NzYgMTQgMTMuNDk5OSAxNEg5VjEwQzkgOS40NDc3MiA4LjU1MjI4IDkgOCA5SDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxIcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTQuNDk5OSAwLjk5OTk5MkMxNC4yMjM3IDAuOTk5OTkyIDEzLjk5OTkgMS4yMjM4NSAxMy45OTk5IDEuNDk5OTlMMTMuOTk5OSAxMy40OTk5QzEzLjk5OTkgMTMuNzc2IDE0LjIyMzcgMTMuOTk5OSAxNC40OTk5IDEzLjk5OTlDMTQuNzc2IDEzLjk5OTkgMTQuOTk5OSAxMy43NzYgMTQuOTk5OSAxMy40OTk5TDE0Ljk5OTkgMS40OTk5OUMxNC45OTk5IDEuMjIzODUgMTQuNzc2IDAuOTk5OTkyIDE0LjQ5OTkgMC45OTk5OTJaTTAuNDk5OTk2IDAuOTk5OTkyQzAuMjIzODU2IDAuOTk5OTkyIC05Ljc4NTA5ZS0wOSAxLjIyMzg1IC0yLjE4NTU2ZS0wOCAxLjQ5OTk5TDQuMDcyNzllLTA3IDEzLjQ5OTlDMy45NTIwOGUtMDcgMTMuNzc2IDAuMjIzODU1IDEzLjk5OTkgMC40OTk5OTYgMTMuOTk5OUMwLjc3NjEzNiAxMy45OTk5IDAuOTk5OTkyIDEzLjc3NiAwLjk5OTk5MiAxMy40OTk5TDAuOTk5OTkyIDEuNDk5OTlDMC45OTk5OTIgMS4yMjM4NSAwLjc3NjEzNiAwLjk5OTk5MiAwLjQ5OTk5NiAwLjk5OTk5MlpNMS45OTk5OCA2Ljk5OTk0QzEuOTk5OTggNi40NDc2NiAyLjQ0NzY5IDUuOTk5OTUgMi45OTk5OCA1Ljk5OTk1TDUuOTk5OTUgNS45OTk5NUM2LjU1MjIzIDUuOTk5OTUgNi45OTk5NCA2LjQ0NzY2IDYuOTk5OTQgNi45OTk5NEw2Ljk5OTk0IDcuOTk5OTNDNi45OTk5NCA4LjU1MjIxIDYuNTUyMjMgOC45OTk5MiA1Ljk5OTk1IDguOTk5OTJMMi45OTk5OCA4Ljk5OTkyQzIuNDQ3NyA4Ljk5OTkyIDEuOTk5OTggOC41NTIyMSAxLjk5OTk4IDcuOTk5OTNMMS45OTk5OCA2Ljk5OTk0Wk04Ljk5OTkzIDUuOTk5OTVDOC40NDc2NSA1Ljk5OTk1IDcuOTk5OTMgNi40NDc2NiA3Ljk5OTkzIDYuOTk5OTRMNy45OTk5MyA3Ljk5OTkzQzcuOTk5OTMgOC41NTIyMSA4LjQ0NzY1IDguOTk5OTIgOC45OTk5MyA4Ljk5OTkyTDExLjk5OTkgOC45OTk5MkMxMi41NTIyIDguOTk5OTIgMTIuOTk5OSA4LjU1MjIxIDEyLjk5OTkgNy45OTk5M0wxMi45OTk5IDYuOTk5OTRDMTIuOTk5OSA2LjQ0NzY2IDEyLjU1MjIgNS45OTk5NSAxMS45OTk5IDUuOTk5OTVMOC45OTk5MyA1Ljk5OTk1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sa3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuOTk5ODc4IDAuNUMwLjk5OTg3OCAwLjIyMzg1OCAxLjIyMzc0IDAgMS40OTk4OCAwSDEzLjQ5OTlDMTMuNzc2IDAgMTMuOTk5OSAwLjIyMzg1OCAxMy45OTk5IDAuNUMxMy45OTk5IDAuNzc2MTQyIDEzLjc3NiAxIDEzLjQ5OTkgMUgxLjQ5OTg4QzEuMjIzNzQgMSAwLjk5OTg3OCAwLjc3NjE0MiAwLjk5OTg3OCAwLjVaTTcgMkM2LjQ0NzcyIDIgNiAyLjQ0NzcyIDYgM1Y2QzYgNi41NTIyOCA2LjQ0NzcyIDcgNyA3SDhDOC41NTIyOCA3IDkgNi41NTIyOCA5IDZWM0M5IDIuNDQ3NzIgOC41NTIyOCAyIDggMkg3Wk03IDhDNi40NDc3MiA4IDYgOC40NDc3MSA2IDlWMTJDNiAxMi41NTIzIDYuNDQ3NzIgMTMgNyAxM0g4QzguNTUyMjggMTMgOSAxMi41NTIzIDkgMTJWOUM5IDguNDQ3NzIgOC41NTIyOCA4IDggOEg3Wk0xLjQ5OTg4IDE0QzEuMjIzNzQgMTQgMC45OTk4NzggMTQuMjIzOSAwLjk5OTg3OCAxNC41QzAuOTk5ODc4IDE0Ljc3NjEgMS4yMjM3NCAxNSAxLjQ5OTg4IDE1SDEzLjQ5OTlDMTMuNzc2IDE1IDEzLjk5OTkgMTQuNzc2MSAxMy45OTk5IDE0LjVDMTMuOTk5OSAxNC4yMjM5IDEzLjc3NiAxNCAxMy40OTk5IDE0SDEuNDk5ODhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxWcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40Njk2OCAxLjA1MDg1QzcuNjQxMjIgMS4xMzQ3NSA3Ljc1IDEuMzA5MDQgNy43NSAxLjVWMTMuNUM3Ljc1IDEzLjY5MSA3LjY0MTIyIDEzLjg2NTMgNy40Njk2OCAxMy45NDkyQzcuMjk4MTMgMTQuMDMzMSA3LjA5Mzc3IDE0LjAxMTkgNi45NDMwMyAxMy44OTQ3TDMuMjIxMyAxMUgxLjVDMC42NzE1NzEgMTEgMCAxMC4zMjg0IDAgOS41VjUuNUMwIDQuNjcxNTggMC42NzE1NzMgNCAxLjUgNEgzLjIyMTNMNi45NDMwMyAxLjEwNTMzQzcuMDkzNzcgMC45ODgwODUgNy4yOTgxMyAwLjk2Njk0NSA3LjQ2OTY4IDEuMDUwODVaTTYuNzUgMi41MjIzMkwzLjY5OTgzIDQuODk0NjhDMy42MTIwNiA0Ljk2Mjk0IDMuNTA0MDUgNSAzLjM5Mjg2IDVIMS41QzEuMjIzODYgNSAxIDUuMjIzODYgMSA1LjVWOS41QzEgOS43NzYxNSAxLjIyMzg2IDEwIDEuNSAxMEgzLjM5Mjg2QzMuNTA0MDUgMTAgMy42MTIwNiAxMC4wMzcxIDMuNjk5ODMgMTAuMTA1M0w2Ljc1IDEyLjQ3NzdWMi41MjIzMlpNMTAuMjc4NCAzLjg0ODA0QzEwLjQ2MjMgMy43MjU2NyAxMC43MTA2IDMuNzc1NTcgMTAuODMzIDMuOTU5NDlDMTIuMjU1OCA2LjA5Nzk4IDEyLjI1NTggOC45MDE5OSAxMC44MzMgMTEuMDQwNUMxMC43MTA2IDExLjIyNDQgMTAuNDYyMyAxMS4yNzQzIDEwLjI3ODQgMTEuMTUxOUMxMC4wOTQ0IDExLjAyOTYgMTAuMDQ0NSAxMC43ODEzIDEwLjE2NjkgMTAuNTk3M0MxMS40MTExIDguNzI3MjggMTEuNDExMSA2LjI3MjY5IDEwLjE2NjkgNC40MDI2NEMxMC4wNDQ1IDQuMjE4NzEgMTAuMDk0NCAzLjk3MDQxIDEwLjI3ODQgMy44NDgwNFpNMTIuNjc4NSAxLjQzMDQ0QzEyLjUzNTYgMS4yNjE5IDEyLjI4MzIgMS4yNDEwNCAxMi4xMTQ3IDEuMzgzODZDMTEuOTQ2MiAxLjUyNjY3IDExLjkyNTMgMS43NzkwOCAxMi4wNjgxIDEuOTQ3NjJDMTQuNzc3MyA1LjE0NDg4IDE0Ljc3NzMgOS44NTUxMyAxMi4wNjgxIDEzLjA1MjRDMTEuOTI1MyAxMy4yMjA5IDExLjk0NjIgMTMuNDczMyAxMi4xMTQ3IDEzLjYxNjFDMTIuMjgzMiAxMy43NTkgMTIuNTM1NiAxMy43MzgxIDEyLjY3ODUgMTMuNTY5NkMxNS42NDA2IDEwLjA3MzkgMTUuNjQwNiA0LjkyNjEyIDEyLjY3ODUgMS40MzA0NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFJyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04IDEuNUM4IDEuMzEwNjIgNy44OTMgMS4xMzc0OSA3LjcyMzYxIDEuMDUyNzlDNy41NTQyMSAwLjk2ODA5MyA3LjM1MTUxIDAuOTg2MzcxIDcuMiAxLjFMMy4zMzMzMyA0SDEuNUMwLjY3MTU3MyA0IDAgNC42NzE1OCAwIDUuNVY5LjVDMCAxMC4zMjg0IDAuNjcxNTczIDExIDEuNSAxMUgzLjMzMzMzTDcuMiAxMy45QzcuMzUxNTEgMTQuMDEzNiA3LjU1NDIxIDE0LjAzMTkgNy43MjM2MSAxMy45NDcyQzcuODkzIDEzLjg2MjUgOCAxMy42ODk0IDggMTMuNVYxLjVaTTMuOCA0LjlMNyAyLjVWMTIuNUwzLjggMTAuMUMzLjcxMzQ1IDEwLjAzNTEgMy42MDgxOSAxMCAzLjUgMTBIMS41QzEuMjIzODYgMTAgMSA5Ljc3NjE0IDEgOS41VjUuNUMxIDUuMjIzODYgMS4yMjM4NiA1IDEuNSA1SDMuNUMzLjYwODE5IDUgMy43MTM0NSA0Ljk2NDkxIDMuOCA0LjlaTTEwLjgzMyAzLjk1OTQ5QzEwLjcxMDYgMy43NzU1NyAxMC40NjIzIDMuNzI1NjcgMTAuMjc4NCAzLjg0ODA0QzEwLjA5NDQgMy45NzA0MSAxMC4wNDQ1IDQuMjE4NzEgMTAuMTY2OSA0LjQwMjY0QzExLjQxMTEgNi4yNzI2OCAxMS40MTExIDguNzI3MjggMTAuMTY2OSAxMC41OTczQzEwLjA0NDUgMTAuNzgxMyAxMC4wOTQ0IDExLjAyOTYgMTAuMjc4NCAxMS4xNTE5QzEwLjQ2MjMgMTEuMjc0MyAxMC43MTA2IDExLjIyNDQgMTAuODMzIDExLjA0MDVDMTIuMjU1OCA4LjkwMTk5IDEyLjI1NTggNi4wOTc5OCAxMC44MzMgMy45NTk0OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LElyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjcyMzYxIDEuMDUyNzlDNy44OTMgMS4xMzc0OSA4IDEuMzEwNjIgOCAxLjVWMTMuNUM4IDEzLjY4OTQgNy44OTMgMTMuODYyNSA3LjcyMzYxIDEzLjk0NzJDNy41NTQyMSAxNC4wMzE5IDcuMzUxNTEgMTQuMDEzNiA3LjIgMTMuOUwzLjMzMzMzIDExSDEuNUMwLjY3MTU3MyAxMSAwIDEwLjMyODQgMCA5LjVWNS41QzAgNC42NzE1OCAwLjY3MTU3MyA0IDEuNSA0SDMuMzMzMzNMNy4yIDEuMUM3LjM1MTUxIDAuOTg2MzcxIDcuNTU0MjEgMC45NjgwOTMgNy43MjM2MSAxLjA1Mjc5Wk03IDIuNUwzLjggNC45QzMuNzEzNDUgNC45NjQ5MSAzLjYwODE5IDUgMy41IDVIMS41QzEuMjIzODYgNSAxIDUuMjIzODYgMSA1LjVWOS41QzEgOS43NzYxNCAxLjIyMzg2IDEwIDEuNSAxMEgzLjVDMy42MDgxOSAxMCAzLjcxMzQ1IDEwLjAzNTEgMy44IDEwLjFMNyAxMi41VjIuNVpNMTQuODUzNiA1LjE0NjQ1QzE1LjA0ODggNS4zNDE3MSAxNS4wNDg4IDUuNjU4MjkgMTQuODUzNiA1Ljg1MzU1TDEzLjIwNzEgNy41TDE0Ljg1MzYgOS4xNDY0NUMxNS4wNDg4IDkuMzQxNzEgMTUuMDQ4OCA5LjY1ODI5IDE0Ljg1MzYgOS44NTM1NUMxNC42NTgzIDEwLjA0ODggMTQuMzQxNyAxMC4wNDg4IDE0LjE0NjQgOS44NTM1NUwxMi41IDguMjA3MTFMMTAuODUzNiA5Ljg1MzU1QzEwLjY1ODMgMTAuMDQ4OCAxMC4zNDE3IDEwLjA0ODggMTAuMTQ2NCA5Ljg1MzU1QzkuOTUxMTggOS42NTgyOSA5Ljk1MTE4IDkuMzQxNzEgMTAuMTQ2NCA5LjE0NjQ1TDExLjc5MjkgNy41TDEwLjE0NjQgNS44NTM1NUM5Ljk1MTE4IDUuNjU4MjkgOS45NTExOCA1LjM0MTcxIDEwLjE0NjQgNS4xNDY0NUMxMC4zNDE3IDQuOTUxMTggMTAuNjU4MyA0Ljk1MTE4IDEwLjg1MzYgNS4xNDY0NUwxMi41IDYuNzkyODlMMTQuMTQ2NCA1LjE0NjQ1QzE0LjM0MTcgNC45NTExOCAxNC42NTgzIDQuOTUxMTggMTQuODUzNiA1LjE0NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTggMS41QzggMS4zMTA2MiA3Ljg5MyAxLjEzNzQ5IDcuNzIzNjEgMS4wNTI3OUM3LjU1NDIxIDAuOTY4MDkzIDcuMzUxNTEgMC45ODYzNzEgNy4yIDEuMUwzLjMzMzMzIDRIMS41QzAuNjcxNTczIDQgMCA0LjY3MTU4IDAgNS41VjkuNUMwIDEwLjMyODQgMC42NzE1NzMgMTEgMS41IDExSDMuMzMzMzNMNy4yIDEzLjlDNy4zNTE1MSAxNC4wMTM2IDcuNTU0MjEgMTQuMDMxOSA3LjcyMzYxIDEzLjk0NzJDNy44OTMgMTMuODYyNSA4IDEzLjY4OTQgOCAxMy41VjEuNVpNMy44IDQuOUw3IDIuNVYxMi41TDMuOCAxMC4xQzMuNzEzNDUgMTAuMDM1MSAzLjYwODE5IDEwIDMuNSAxMEgxLjVDMS4yMjM4NiAxMCAxIDkuNzc2MTQgMSA5LjVWNS41QzEgNS4yMjM4NiAxLjIyMzg2IDUgMS41IDVIMy41QzMuNjA4MTkgNSAzLjcxMzQ1IDQuOTY0OTEgMy44IDQuOVpNMTAuMDgzIDUuMDU1NzdDOS45NjA2NiA0Ljg3MTg1IDkuNzEyMzUgNC44MjE5NSA5LjUyODQzIDQuOTQ0MzJDOS4zNDQ1IDUuMDY2NjkgOS4yOTQ2IDUuMzE0OTkgOS40MTY5NyA1LjQ5ODkyQzEwLjIyMDcgNi43MDY5MyAxMC4yMjA3IDguMjkzMDMgOS40MTY5NyA5LjUwMTA0QzkuMjk0NiA5LjY4NDk2IDkuMzQ0NSA5LjkzMzI2IDkuNTI4NDMgMTAuMDU1NkM5LjcxMjM1IDEwLjE3OCA5Ljk2MDY2IDEwLjEyODEgMTAuMDgzIDkuOTQ0MThDMTEuMDY1MyA4LjQ2NzczIDExLjA2NTMgNi41MzIyMiAxMC4wODMgNS4wNTU3N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFRyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDFIMS41SDEzLjVIMTRWMS41VjEzLjVWMTRIMTMuNUgxLjVIMVYxMy41VjEuNVYxWk0yIDJWMTNIMTNWMkgyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNzU0MzIgMS44MTk1NEM3LjU5NzQyIDEuNzI2ODIgNy40MDI1IDEuNzI2ODIgNy4yNDU1OSAxLjgxOTU0TDEuNzQ1NTkgNS4wNjk1NEMxLjU5MzM2IDUuMTU5NDkgMS40OTk5NiA1LjMyMzE3IDEuNDk5OTYgNS41QzEuNDk5OTYgNS42NzY4MyAxLjU5MzM2IDUuODQwNTEgMS43NDU1OSA1LjkzMDQ2TDcuMjQ1NTkgOS4xODA0NkM3LjQwMjUgOS4yNzMxOCA3LjU5NzQyIDkuMjczMTggNy43NTQzMiA5LjE4MDQ2TDEzLjI1NDMgNS45MzA0NkMxMy40MDY2IDUuODQwNTEgMTMuNSA1LjY3NjgzIDEzLjUgNS41QzEzLjUgNS4zMjMxNyAxMy40MDY2IDUuMTU5NDkgMTMuMjU0MyA1LjA2OTU0TDcuNzU0MzIgMS44MTk1NFpNNy40OTk5NiA4LjE2OTIzTDIuOTgyOCA1LjVMNy40OTk5NiAyLjgzMDc3TDEyLjAxNzEgNS41TDcuNDk5OTYgOC4xNjkyM1pNMi4yNTQzMiA4LjMxOTU0QzIuMDE2NTggOC4xNzkwNiAxLjcwOTk4IDguMjU3OSAxLjU2OTQ5IDguNDk1NjRDMS40MjkwMSA4LjczMzM3IDEuNTA3ODUgOS4wMzk5OCAxLjc0NTU5IDkuMTgwNDZMNy4yNDU1OSAxMi40MzA1QzcuNDAyNSAxMi41MjMyIDcuNTk3NDIgMTIuNTIzMiA3Ljc1NDMyIDEyLjQzMDVMMTMuMjU0MyA5LjE4MDQ2QzEzLjQ5MjEgOS4wMzk5OCAxMy41NzA5IDguNzMzMzcgMTMuNDMwNCA4LjQ5NTY0QzEzLjI4OTkgOC4yNTc5IDEyLjk4MzMgOC4xNzkwNiAxMi43NDU2IDguMzE5NTRMNy40OTk5NiAxMS40MTkyTDIuMjU0MzIgOC4zMTk1NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LERyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02Ljk3OTQyIDEuMjUxNzFMNi45NTg1IDEuMzAxOTlMNS41ODY2MiA0LjYwMDM5QzUuNTQzNDIgNC43MDQyNiA1LjQ0NTczIDQuNzc1MjMgNS4zMzM2IDQuNzg0MjJMMS43NzI3IDUuMDY5N0wxLjcxODQxIDUuMDc0MDVMMS4zODY4NyA1LjEwMDYzTDEuMDg2MDggNS4xMjQ3NUMwLjgyMDA4NSA1LjE0NjA3IDAuNzEyMjI4IDUuNDc4MDIgMC45MTQ4ODkgNS42NTE2MkwxLjE0NDA2IDUuODQ3OTNMMS4zOTY2NiA2LjA2NDMxTDEuNDM4MDIgNi4wOTk3NEw0LjE1MTA1IDguNDIzNzRDNC4yMzY0OCA4LjQ5NjkyIDQuMjczOCA4LjYxMTc2IDQuMjQ3NjkgOC43MjExOEwzLjQxODgyIDEyLjE5NkwzLjQwNjE4IDEyLjI0OUwzLjMyOTAxIDEyLjU3MjVMMy4yNTg5OSAxMi44NjZDMy4xOTcwOCAxMy4xMjU2IDMuNDc5NDUgMTMuMzMwOCAzLjcwNzE4IDEzLjE5MTdMMy45NjQ3IDEzLjAzNDRMNC4yNDg1NCAxMi44NjFMNC4yOTUwMiAxMi44MzI2TDcuMzQzNjUgMTAuOTcwNUM3LjQzOTY1IDEwLjkxMTkgNy41NjA0IDEwLjkxMTkgNy42NTY0IDEwLjk3MDVMMTAuNzA1IDEyLjgzMjZMMTAuNzUxNSAxMi44NjFMMTEuMDM1NCAxMy4wMzQ0TDExLjI5MjkgMTMuMTkxN0MxMS41MjA2IDEzLjMzMDggMTEuODAzIDEzLjEyNTYgMTEuNzQxMSAxMi44NjZMMTEuNjcxIDEyLjU3MjVMMTEuNTkzOSAxMi4yNDlMMTEuNTgxMiAxMi4xOTZMMTAuNzUyNCA4LjcyMTE4QzEwLjcyNjMgOC42MTE3NiAxMC43NjM2IDguNDk2OTIgMTAuODQ5IDguNDIzNzRMMTMuNTYyIDYuMDk5NzRMMTMuNjAzNCA2LjA2NDMxTDEzLjg1NiA1Ljg0NzkzTDE0LjA4NTIgNS42NTE2MkMxNC4yODc4IDUuNDc4MDIgMTQuMTggNS4xNDYwNyAxMy45MTQgNS4xMjQ3NUwxMy42MTMyIDUuMTAwNjNMMTMuMjgxNiA1LjA3NDA1TDEzLjIyNzQgNS4wNjk3TDkuNjY2NDUgNC43ODQyMkM5LjU1NDMyIDQuNzc1MjMgOS40NTY2MyA0LjcwNDI2IDkuNDEzNDMgNC42MDAzOUw4LjA0MTU1IDEuMzAxOTlMOC4wMjA2NCAxLjI1MTcxTDcuODkyOTEgMC45NDQ2MDlMNy43NzcwMiAwLjY2NTk5MkM3LjY3NDU0IDAuNDE5NjA0IDcuMzI1NTEgMC40MTk2MDQgNy4yMjMwMyAwLjY2NTk5Mkw3LjEwNzE1IDAuOTQ0NjA5TDYuOTc5NDIgMS4yNTE3MVpNNy41MDAwMyAyLjYwMzk3TDYuNTA5OTQgNC45ODQ0MkM2LjMyMjczIDUuNDM0NTMgNS44OTk0NCA1Ljc0MjA3IDUuNDEzNTEgNS43ODEwM0wyLjg0MzYxIDUuOTg3MDVMNC44MDE2IDcuNjY0MjhDNS4xNzE4MyA3Ljk4MTQyIDUuMzMzNTEgOC40NzkwMyA1LjIyMDQgOC45NTMyMUw0LjYyMjIxIDExLjQ2MUw2LjgyMjQgMTAuMTE3MUM3LjIzODQyIDkuODYzMDIgNy43NjE2NCA5Ljg2MzAyIDguMTc3NjYgMTAuMTE3MUwxMC4zNzc4IDExLjQ2MUw5Ljc3OTY1IDguOTUzMjFDOS42NjY1NCA4LjQ3OTAzIDkuODI4MjIgNy45ODE0MiAxMC4xOTg0IDcuNjY0MjhMMTIuMTU2NCA1Ljk4NzA1TDkuNTg2NTQgNS43ODEwM0M5LjEwMDYxIDUuNzQyMDcgOC42NzczMiA1LjQzNDUzIDguNDkwMTEgNC45ODQ0Mkw3LjUwMDAzIDIuNjAzOTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxCcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4yMjMwMyAwLjY2NTk5MkM3LjMyNTUxIDAuNDE5NjA0IDcuNjc0NTQgMC40MTk2MDQgNy43NzcwMiAwLjY2NTk5Mkw5LjQxMzQzIDQuNjAwMzlDOS40NTY2MyA0LjcwNDI2IDkuNTU0MzIgNC43NzUyMyA5LjY2NjQ1IDQuNzg0MjJMMTMuOTE0IDUuMTI0NzVDMTQuMTggNS4xNDYwNyAxNC4yODc4IDUuNDc4MDIgMTQuMDg1MiA1LjY1MTYyTDEwLjg0OSA4LjQyMzc0QzEwLjc2MzYgOC40OTY5MiAxMC43MjYzIDguNjExNzYgMTAuNzUyNCA4LjcyMTE4TDExLjc0MTEgMTIuODY2QzExLjgwMyAxMy4xMjU2IDExLjUyMDYgMTMuMzMwOCAxMS4yOTI5IDEzLjE5MTdMNy42NTY0IDEwLjk3MDVDNy41NjA0IDEwLjkxMTkgNy40Mzk2NSAxMC45MTE5IDcuMzQzNjUgMTAuOTcwNUwzLjcwNzE4IDEzLjE5MTdDMy40Nzk0NSAxMy4zMzA4IDMuMTk3MDggMTMuMTI1NiAzLjI1ODk5IDEyLjg2Nkw0LjI0NzY5IDguNzIxMThDNC4yNzM4IDguNjExNzYgNC4yMzY0OCA4LjQ5NjkyIDQuMTUxMDUgOC40MjM3NEwwLjkxNDg4OSA1LjY1MTYyQzAuNzEyMjI4IDUuNDc4MDIgMC44MjAwODYgNS4xNDYwNyAxLjA4NjA4IDUuMTI0NzVMNS4zMzM2IDQuNzg0MjJDNS40NDU3MyA0Ljc3NTIzIDUuNTQzNDIgNC43MDQyNiA1LjU4NjYyIDQuNjAwMzlMNy4yMjMwMyAwLjY2NTk5MlpcIixmaWxsOm59KSl9LCRyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjg0OTk4IDcuNDk5OThDMS44NDk5OCA3LjIxMzIxIDEuODcxMzQgNi45MzE0MyAxLjkxMjU2IDYuNjU2MTVMOS41NjM3NCAyLjIzODc1QzkuODYzMTEgMi4zNTYyNyAxMC4xNSAyLjQ5ODYxIDEwLjQyMTkgMi42NjMyMkwzLjc3MDY1IDYuNTAzMzJDMy43MzY2OSA2LjUyMTgzIDMuNzA0ODIgNi41NDQ5IDMuNjc2MDIgNi41NzIzOEMzLjU5MTEgNi42NTMwOCAzLjU0MjQ1IDYuNzYyODYgMy41MzY4MiA2Ljg3NjU4QzMuNTMzNTkgNi45NDE4IDMuNTQ0NTEgNy4wMDgzMSAzLjU3MDg2IDcuMDcxMzdDMy41ODkyNyA3LjExNTcgMy42MTQ5IDcuMTU3NDIgMy42NDc0NCA3LjE5NDU4QzMuNjczMDYgNy4yMjM5NiAzLjcwMiA3LjI0OTQxIDMuNzMzMzcgNy4yNzA2OUw3LjMyNTMzIDkuODM4MTNMMy44NzIzMiAxMS44MzE3QzIuNjM2MDQgMTAuNzk1MyAxLjg0OTk4IDkuMjM5NDQgMS44NDk5OCA3LjQ5OTk4Wk04LjM2ODQzIDEwLjI3NTFDOC4zNzY4MiAxMC4yNzA2IDguMzg1MDkgMTAuMjY1OSA4LjM5MzIyIDEwLjI2MDhMOS44NDA5MSA5LjQyNDk5QzkuODQ3MDYgOS40MjE2MyA5Ljg1MzE0IDkuNDE4MTIgOS44NTkxNSA5LjQxNDQ2TDExLjMxMDEgOC41NzY3N0MxMS4zNjU1IDguNTQ2NDkgMTEuNDE1NCA4LjUwNCAxMS40NTU0IDguNDQ5OTVDMTEuNjAzNCA4LjI1MDMxIDExLjU2MTYgNy45Njg0OCAxMS4zNjIgNy44MjA0Nkw3LjgyNzc5IDUuMjAwMTdMMTEuMjE2MSAzLjI0MzkzQzEyLjQwMTMgNC4yNzk2MyAxMy4xNSA1LjgwMjM3IDEzLjE1IDcuNDk5OThDMTMuMTUgNy44MzU0NiAxMy4xMjA3IDguMTY0MTEgMTMuMDY0NyA4LjQ4MzUzTDUuNTY4NzUgMTIuODExM0M1LjI2MTM4IDEyLjY5OTUgNC45NjY0NiAxMi41NjE4IDQuNjg2NjIgMTIuNDAwOEw4LjM2ODQzIDEwLjI3NTFaTTguMTgxNDkgOS4zNDM4M0w0LjgxNjU5IDYuOTM4NjhMNS41MDkxOCA2LjUzODgxTDguODA2MDQgOC45ODMyNEw4LjE4MTQ5IDkuMzQzODNaTTYuMzU4NzUgNi4wNDgzMkw2Ljk3ODIyIDUuNjkwNjdMMTAuMjc1MSA4LjEzNTA2TDkuNjU1NiA4LjQ5Mjc1TDYuMzU4NzUgNi4wNDgzMlpNOC4zMzE4IDEuOTEwNzhMMi4yNDI2MyA1LjQyNjM2QzMuMDY5NDEgMy4zMzE4OCA1LjExMTY0IDEuODQ5OTggNy40OTk5OCAxLjg0OTk4QzcuNzgyNTggMS44NDk5OCA4LjA2MDMzIDEuODcwNzIgOC4zMzE4IDEuOTEwNzhaTTYuODQ2ODQgMTMuMTEyNkM3LjA2MTE0IDEzLjEzNzMgNy4yNzkwOCAxMy4xNSA3LjQ5OTk4IDEzLjE1QzkuODI0NiAxMy4xNSAxMS44MjEzIDExLjc0NjEgMTIuNjg4NiA5LjczOTlMNi44NDY4NCAxMy4xMTI2Wk03LjQ5OTk4IDAuODQ5OTc2QzMuODI3MjggMC44NDk5NzYgMC44NDk5NzYgMy44MjcyOCAwLjg0OTk3NiA3LjQ5OTk4QzAuODQ5OTc2IDExLjE3MjcgMy44MjcyOCAxNC4xNSA3LjQ5OTk4IDE0LjE1QzExLjE3MjcgMTQuMTUgMTQuMTUgMTEuMTcyNyAxNC4xNSA3LjQ5OTk4QzE0LjE1IDMuODI3MjggMTEuMTcyNyAwLjg0OTk3NiA3LjQ5OTk4IDAuODQ5OTc2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgM0MyIDIuNDQ3NzIgMi40NDc3MiAyIDMgMkgxMkMxMi41NTIzIDIgMTMgMi40NDc3MiAxMyAzVjEyQzEzIDEyLjU1MjMgMTIuNTUyMyAxMyAxMiAxM0gzQzIuNDQ3NzIgMTMgMiAxMi41NTIzIDIgMTJWM1pNMTIgM0gzVjEySDEyVjNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxOcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS40OTk5OCAwLjVDNS40OTk5OCAwLjIyMzg1OCA1LjcyMzgzIDAgNS45OTk5OCAwSDcuNDk5OThIOC45OTk5OEM5LjI3NjEyIDAgOS40OTk5OCAwLjIyMzg1OCA5LjQ5OTk4IDAuNUM5LjQ5OTk4IDAuNzc2MTQyIDkuMjc2MTIgMSA4Ljk5OTk4IDFINy45OTk5OFYyLjExOTIyQzkuMDk4MzIgMi4yMDQwOSAxMC4xMTkgMi41NjYyMiAxMC45OTIgMy4xMzU3MkMxMS4wMTE2IDMuMTA4NTEgMTEuMDMzNiAzLjA4MjUyIDExLjA1OCAzLjA1ODA2TDExLjg1OCAyLjI1ODA2QzEyLjEwMjEgMi4wMTM5OCAxMi40OTc4IDIuMDEzOTggMTIuNzQxOSAyLjI1ODA2QzEyLjk4NiAyLjUwMjE0IDEyLjk4NiAyLjg5Nzg2IDEyLjc0MTkgMy4xNDE5NEwxMS45NjcgMy45MTY4MkMxMy4xNTk1IDUuMDc5MjUgMTMuOSA2LjcwMzE0IDEzLjkgOC40OTk5OEMxMy45IDEyLjAzNDYgMTEuMDM0NiAxNC45IDcuNDk5OTggMTQuOUMzLjk2NTM1IDE0LjkgMS4wOTk5OCAxMi4wMzQ2IDEuMDk5OTggOC40OTk5OEMxLjA5OTk4IDUuMTMzNjIgMy42OTkwNCAyLjM3NDMgNi45OTk5OCAyLjExOTIyVjFINS45OTk5OEM1LjcyMzgzIDEgNS40OTk5OCAwLjc3NjE0MiA1LjQ5OTk4IDAuNVpNMi4wOTk5OCA4LjQ5OTk4QzIuMDk5OTggNS41MTc2NCA0LjUxNzY0IDMuMDk5OTggNy40OTk5OCAzLjA5OTk4QzEwLjQ4MjMgMy4wOTk5OCAxMi45IDUuNTE3NjQgMTIuOSA4LjQ5OTk4QzEyLjkgMTEuNDgyMyAxMC40ODIzIDEzLjkgNy40OTk5OCAxMy45QzQuNTE3NjQgMTMuOSAyLjA5OTk4IDExLjQ4MjMgMi4wOTk5OCA4LjQ5OTk4Wk03Ljk5OTk4IDQuNUM3Ljk5OTk4IDQuMjIzODYgNy43NzYxMiA0IDcuNDk5OTggNEM3LjIyMzgzIDQgNi45OTk5OCA0LjIyMzg2IDYuOTk5OTggNC41VjkuNUM2Ljk5OTk4IDkuNzc2MTQgNy4yMjM4MyAxMCA3LjQ5OTk4IDEwQzcuNzc2MTIgMTAgNy45OTk5OCA5Ljc3NjE0IDcuOTk5OTggOS41VjQuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHpyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNC40OTk5IDAuOTk5OTkyQzE0LjIyMzcgMC45OTk5OTIgMTMuOTk5OSAxLjIyMzg1IDEzLjk5OTkgMS40OTk5OUwxMy45OTk5IDUuOTk5OTVMMC45OTk5OTIgNS45OTk5NUwwLjk5OTk5MiAxLjQ5OTk5QzAuOTk5OTkyIDEuMjIzODUgMC43NzYxMzYgMC45OTk5OTIgMC40OTk5OTYgMC45OTk5OTJDMC4yMjM4NTYgMC45OTk5OTIgLTkuNzg1MDllLTA5IDEuMjIzODUgLTIuMTg1NTZlLTA4IDEuNDk5OTlMNC4wNzI3OWUtMDcgMTMuNDk5OUMzLjk1MjA4ZS0wNyAxMy43NzYgMC4yMjM4NTUgMTMuOTk5OSAwLjQ5OTk5NiAxMy45OTk5QzAuNzc2MTM2IDEzLjk5OTkgMC45OTk5OTIgMTMuNzc2IDAuOTk5OTkyIDEzLjQ5OTlMMC45OTk5OTIgOC45OTk5MkwxMy45OTk5IDguOTk5OTJMMTMuOTk5OSAxMy40OTk5QzEzLjk5OTkgMTMuNzc2IDE0LjIyMzcgMTMuOTk5OSAxNC40OTk5IDEzLjk5OTlDMTQuNzc2IDEzLjk5OTkgMTQuOTk5OSAxMy43NzYgMTQuOTk5OSAxMy40OTk5TDE0Ljk5OTkgMS40OTk5OUMxNC45OTk5IDEuMjIzODUgMTQuNzc2IDAuOTk5OTkyIDE0LjQ5OTkgMC45OTk5OTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxXcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC45OTk4NzggMC41QzAuOTk5ODc4IDAuMjIzODU4IDEuMjIzNzQgMCAxLjQ5OTg4IDBIMTMuNDk5OUMxMy43NzYgMCAxMy45OTk5IDAuMjIzODU4IDEzLjk5OTkgMC41QzEzLjk5OTkgMC43NzYxNDIgMTMuNzc2IDEgMTMuNDk5OSAxSDZIMS40OTk4OEMxLjIyMzc0IDEgMC45OTk4NzggMC43NzYxNDIgMC45OTk4NzggMC41Wk05IDE0VjFMNiAxVjE0SDEuNDk5ODhDMS4yMjM3NCAxNCAwLjk5OTg3OCAxNC4yMjM5IDAuOTk5ODc4IDE0LjVDMC45OTk4NzggMTQuNzc2MSAxLjIyMzc0IDE1IDEuNDk5ODggMTVIMTMuNDk5OUMxMy43NzYgMTUgMTMuOTk5OSAxNC43NzYxIDEzLjk5OTkgMTQuNUMxMy45OTk5IDE0LjIyMzkgMTMuNzc2IDE0IDEzLjQ5OTkgMTRIOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEdyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjAwMDAzIDMuMjVDNS4wMDAwMyAyLjk3Mzg2IDQuNzc2MTcgMi43NSA0LjUwMDAzIDIuNzVDNC4yMjM4OSAyLjc1IDQuMDAwMDMgMi45NzM4NiA0LjAwMDAzIDMuMjVWNy4xMDAwM0gyLjQ5OTk4QzIuMjc5MDYgNy4xMDAwMyAyLjA5OTk4IDcuMjc5MTIgMi4wOTk5OCA3LjUwMDAzQzIuMDk5OTggNy43MjA5NCAyLjI3OTA2IDcuOTAwMDMgMi40OTk5OCA3LjkwMDAzSDQuMDAwMDNWOC41NUM0LjAwMDAzIDEwLjQ4MyA1LjU2NzAzIDEyLjA1IDcuNTAwMDMgMTIuMDVDOS40MzMwMyAxMi4wNSAxMSAxMC40ODMgMTEgOC41NVY3LjkwMDAzSDEyLjVDMTIuNzIwOSA3LjkwMDAzIDEyLjkgNy43MjA5NCAxMi45IDcuNTAwMDNDMTIuOSA3LjI3OTEyIDEyLjcyMDkgNy4xMDAwMyAxMi41IDcuMTAwMDNIMTFWMy4yNUMxMSAyLjk3Mzg2IDEwLjc3NjIgMi43NSAxMC41IDIuNzVDMTAuMjIzOSAyLjc1IDEwIDIuOTczODYgMTAgMy4yNVY3LjEwMDAzSDUuMDAwMDNWMy4yNVpNNS4wMDAwMyA3LjkwMDAzVjguNTVDNS4wMDAwMyA5LjkzMDcxIDYuMTE5MzIgMTEuMDUgNy41MDAwMyAxMS4wNUM4Ljg4MDc0IDExLjA1IDEwIDkuOTMwNzEgMTAgOC41NVY3LjkwMDAzSDUuMDAwMDNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxVcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDBDNy43NzYxNCAwIDggMC4yMjM4NTggOCAwLjVWMi41QzggMi43NzYxNCA3Ljc3NjE0IDMgNy41IDNDNy4yMjM4NiAzIDcgMi43NzYxNCA3IDIuNVYwLjVDNyAwLjIyMzg1OCA3LjIyMzg2IDAgNy41IDBaTTIuMTk2NyAyLjE5NjdDMi4zOTE5NiAyLjAwMTQ0IDIuNzA4NTQgMi4wMDE0NCAyLjkwMzgxIDIuMTk2N0w0LjMxODAyIDMuNjEwOTFDNC41MTMyOCAzLjgwNjE3IDQuNTEzMjggNC4xMjI3NiA0LjMxODAyIDQuMzE4MDJDNC4xMjI3NiA0LjUxMzI4IDMuODA2MTcgNC41MTMyOCAzLjYxMDkxIDQuMzE4MDJMMi4xOTY3IDIuOTAzODFDMi4wMDE0NCAyLjcwODU0IDIuMDAxNDQgMi4zOTE5NiAyLjE5NjcgMi4xOTY3Wk0wLjUgN0MwLjIyMzg1OCA3IDAgNy4yMjM4NiAwIDcuNUMwIDcuNzc2MTQgMC4yMjM4NTggOCAwLjUgOEgyLjVDMi43NzYxNCA4IDMgNy43NzYxNCAzIDcuNUMzIDcuMjIzODYgMi43NzYxNCA3IDIuNSA3SDAuNVpNMi4xOTY3IDEyLjgwMzNDMi4wMDE0NCAxMi42MDggMi4wMDE0NCAxMi4yOTE1IDIuMTk2NyAxMi4wOTYyTDMuNjEwOTEgMTAuNjgyQzMuODA2MTcgMTAuNDg2NyA0LjEyMjc2IDEwLjQ4NjcgNC4zMTgwMiAxMC42ODJDNC41MTMyOCAxMC44NzcyIDQuNTEzMjggMTEuMTkzOCA0LjMxODAyIDExLjM4OTFMMi45MDM4MSAxMi44MDMzQzIuNzA4NTQgMTIuOTk4NiAyLjM5MTk2IDEyLjk5ODYgMi4xOTY3IDEyLjgwMzNaTTEyLjUgN0MxMi4yMjM5IDcgMTIgNy4yMjM4NiAxMiA3LjVDMTIgNy43NzYxNCAxMi4yMjM5IDggMTIuNSA4SDE0LjVDMTQuNzc2MSA4IDE1IDcuNzc2MTQgMTUgNy41QzE1IDcuMjIzODYgMTQuNzc2MSA3IDE0LjUgN0gxMi41Wk0xMC42ODIgNC4zMTgwMkMxMC40ODY3IDQuMTIyNzYgMTAuNDg2NyAzLjgwNjE3IDEwLjY4MiAzLjYxMDkxTDEyLjA5NjIgMi4xOTY3QzEyLjI5MTUgMi4wMDE0NCAxMi42MDggMi4wMDE0NCAxMi44MDMzIDIuMTk2N0MxMi45OTg2IDIuMzkxOTYgMTIuOTk4NiAyLjcwODU0IDEyLjgwMzMgMi45MDM4MUwxMS4zODkxIDQuMzE4MDJDMTEuMTkzOCA0LjUxMzI4IDEwLjg3NzIgNC41MTMyOCAxMC42ODIgNC4zMTgwMlpNOCAxMi41QzggMTIuMjIzOSA3Ljc3NjE0IDEyIDcuNSAxMkM3LjIyMzg2IDEyIDcgMTIuMjIzOSA3IDEyLjVWMTQuNUM3IDE0Ljc3NjEgNy4yMjM4NiAxNSA3LjUgMTVDNy43NzYxNCAxNSA4IDE0Ljc3NjEgOCAxNC41VjEyLjVaTTEwLjY4MiAxMC42ODJDMTAuODc3MiAxMC40ODY3IDExLjE5MzggMTAuNDg2NyAxMS4zODkxIDEwLjY4MkwxMi44MDMzIDEyLjA5NjJDMTIuOTk4NiAxMi4yOTE1IDEyLjk5ODYgMTIuNjA4IDEyLjgwMzMgMTIuODAzM0MxMi42MDggMTIuOTk4NiAxMi4yOTE1IDEyLjk5ODYgMTIuMDk2MiAxMi44MDMzTDEwLjY4MiAxMS4zODkxQzEwLjQ4NjcgMTEuMTkzOCAxMC40ODY3IDEwLjg3NzIgMTAuNjgyIDEwLjY4MlpNNS41IDcuNUM1LjUgNi4zOTU0MyA2LjM5NTQzIDUuNSA3LjUgNS41QzguNjA0NTcgNS41IDkuNSA2LjM5NTQzIDkuNSA3LjVDOS41IDguNjA0NTcgOC42MDQ1NyA5LjUgNy41IDkuNUM2LjM5NTQzIDkuNSA1LjUgOC42MDQ1NyA1LjUgNy41Wk03LjUgNC41QzUuODQzMTUgNC41IDQuNSA1Ljg0MzE1IDQuNSA3LjVDNC41IDkuMTU2ODUgNS44NDMxNSAxMC41IDcuNSAxMC41QzkuMTU2ODUgMTAuNSAxMC41IDkuMTU2ODUgMTAuNSA3LjVDMTAuNSA1Ljg0MzE1IDkuMTU2ODUgNC41IDcuNSA0LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxxcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAuNSA0QzguNTY3IDQgNyA1LjU2NyA3IDcuNUM3IDkuNDMzIDguNTY3IDExIDEwLjUgMTFDMTIuNDMzIDExIDE0IDkuNDMzIDE0IDcuNUMxNCA1LjU2NyAxMi40MzMgNCAxMC41IDRaTTcuNjcxMzMgMTFDNi42NTE4MyAxMC4xNzUgNiA4LjkxMzYzIDYgNy41QzYgNi4wODYzNyA2LjY1MTgzIDQuODI0OTggNy42NzEzMyA0SDQuNUMyLjU2NyA0IDEgNS41NjcgMSA3LjVDMSA5LjQzMyAyLjU2NyAxMSA0LjUgMTFINy42NzEzM1pNMCA3LjVDMCA1LjAxNDcyIDIuMDE0NzIgMyA0LjUgM0gxMC41QzEyLjk4NTMgMyAxNSA1LjAxNDcyIDE1IDcuNUMxNSA5Ljk4NTI4IDEyLjk4NTMgMTIgMTAuNSAxMkg0LjVDMi4wMTQ3MiAxMiAwIDkuOTg1MjggMCA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxZcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS45MDMyMSA3LjI5Njc3QzEuOTAzMjEgMTAuMzQxIDQuMTEwNDEgMTIuNDE0NyA2LjU4ODkzIDEyLjg0MzlDNi44NzI1NSAxMi44OTMgNy4wNjI2NiAxMy4xNjI3IDcuMDEzNTUgMTMuNDQ2NEM2Ljk2NDQ0IDEzLjczIDYuNjk0NzEgMTMuOTIwMSA2LjQxMTA5IDEzLjg3MUMzLjQ5OTQyIDEzLjM2NjggMC44NjA4NCAxMC45MTI3IDAuODYwODQgNy4yOTY3N0MwLjg2MDgzOSA1Ljc2MDA5IDEuNTU5OTYgNC41NTI0NSAyLjM3NjM5IDMuNjMzNzdDMi45NjEyNCAyLjk3NTY4IDMuNjMwMzQgMi40NDEzNSA0LjE2ODQ2IDIuMDMyMDJMMi41MzIwNSAyLjAzMjAyQzIuMjU1OTEgMi4wMzIwMiAyLjAzMjA1IDEuODA4MTYgMi4wMzIwNSAxLjUzMjAyQzIuMDMyMDUgMS4yNTU4OCAyLjI1NTkxIDEuMDMyMDIgMi41MzIwNSAxLjAzMjAyTDUuNTMyMDUgMS4wMzIwMkM1LjgwODE5IDEuMDMyMDIgNi4wMzIwNSAxLjI1NTg4IDYuMDMyMDUgMS41MzIwMkw2LjAzMjA1IDQuNTMyMDJDNi4wMzIwNSA0LjgwODE2IDUuODA4MTkgNS4wMzIwMiA1LjUzMjA1IDUuMDMyMDJDNS4yNTU5MSA1LjAzMjAyIDUuMDMyMDUgNC44MDgxNiA1LjAzMjA1IDQuNTMyMDJMNS4wMzIwNSAyLjY4NjQ1TDUuMDMwNTQgMi42ODc1OUw1LjAzMDQ1IDIuNjg3NjZMNS4wMzA0NCAyLjY4NzY3TDUuMDMwNDMgMi42ODc2N0M0LjQ1ODk2IDMuMTE4NjggMy43NjA1OSAzLjY0NTM4IDMuMTU1NTQgNC4zMjYyQzIuNDQxMDIgNS4xMzAyMSAxLjkwMzIxIDYuMTAxNTQgMS45MDMyMSA3LjI5Njc3Wk0xMy4wMTA5IDcuNzAzMjFDMTMuMDEwOSA0LjY5MTE1IDEwLjg1MDUgMi42Mjk2IDguNDAzODQgMi4xNzAyOUM4LjEyMDkzIDIuMTE3MTggNy45MzQ2NSAxLjg0NDc5IDcuOTg3NzYgMS41NjE4OEM4LjA0MDg3IDEuMjc4OTggOC4zMTMyNiAxLjA5MjcgOC41OTYxNiAxLjE0NTgxQzExLjQ3MDQgMS42ODU0MSAxNC4wNTMyIDQuMTI2MDUgMTQuMDUzMiA3LjcwMzIxQzE0LjA1MzIgOS4yMzk4OCAxMy4zNTQxIDEwLjQ0NzUgMTIuNTM3NyAxMS4zNjYyQzExLjk1MjggMTIuMDI0MyAxMS4yODM3IDEyLjU1ODYgMTAuNzQ1NiAxMi45NjhMMTIuMzgyMSAxMi45NjhDMTIuNjU4MiAxMi45NjggMTIuODgyMSAxMy4xOTE4IDEyLjg4MjEgMTMuNDY4QzEyLjg4MjEgMTMuNzQ0MSAxMi42NTgyIDEzLjk2OCAxMi4zODIxIDEzLjk2OEw5LjM4MjA1IDEzLjk2OEM5LjEwNTkxIDEzLjk2OCA4Ljg4MjA1IDEzLjc0NDEgOC44ODIwNSAxMy40NjhMOC44ODIwNSAxMC40NjhDOC44ODIwNSAxMC4xOTE4IDkuMTA1OTEgOS45Njc5NiA5LjM4MjA1IDkuOTY3OTZDOS42NTgxOSA5Ljk2Nzk2IDkuODgyMDUgMTAuMTkxOCA5Ljg4MjA1IDEwLjQ2OEw5Ljg4MjA1IDEyLjMxMzVMOS44ODM2MiAxMi4zMTIzQzEwLjQ1NTEgMTEuODgxMyAxMS4xNTM1IDExLjM1NDYgMTEuNzU4NSAxMC42NzM4QzEyLjQ3MzEgOS44Njk3NiAxMy4wMTA5IDguODk4NDQgMTMuMDEwOSA3LjcwMzIxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sS3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTggMkgxMi41QzEyLjc3NjEgMiAxMyAyLjIyMzg2IDEzIDIuNVY1SDhWMlpNNyA1VjJIMi41QzIuMjIzODYgMiAyIDIuMjIzODYgMiAyLjVWNUg3Wk0yIDZWOUg3VjZIMlpNOCA2SDEzVjlIOFY2Wk04IDEwSDEzVjEyLjVDMTMgMTIuNzc2MSAxMi43NzYxIDEzIDEyLjUgMTNIOFYxMFpNMiAxMi41VjEwSDdWMTNIMi41QzIuMjIzODYgMTMgMiAxMi43NzYxIDIgMTIuNVpNMSAyLjVDMSAxLjY3MTU3IDEuNjcxNTcgMSAyLjUgMUgxMi41QzEzLjMyODQgMSAxNCAxLjY3MTU3IDE0IDIuNVYxMi41QzE0IDEzLjMyODQgMTMuMzI4NCAxNCAxMi41IDE0SDIuNUMxLjY3MTU3IDE0IDEgMTMuMzI4NCAxIDEyLjVWMi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuOTAwMDI0IDcuNTAwMDJDMC45MDAwMjQgMy44NTQ5NSAzLjg1NDk1IDAuOTAwMDI0IDcuNTAwMDIgMC45MDAwMjRDMTEuMTQ1MSAwLjkwMDAyNCAxNC4xIDMuODU0OTUgMTQuMSA3LjUwMDAyQzE0LjEgMTEuMTQ1MSAxMS4xNDUxIDE0LjEgNy41MDAwMiAxNC4xQzMuODU0OTUgMTQuMSAwLjkwMDAyNCAxMS4xNDUxIDAuOTAwMDI0IDcuNTAwMDJaTTcuNTAwMDIgMS44MDAwMkM0LjM1MjAxIDEuODAwMDIgMS44MDAwMiA0LjM1MjAxIDEuODAwMDIgNy41MDAwMkMxLjgwMDAyIDEwLjY0OCA0LjM1MjAxIDEzLjIgNy41MDAwMiAxMy4yQzEwLjY0OCAxMy4yIDEzLjIgMTAuNjQ4IDEzLjIgNy41MDAwMkMxMy4yIDQuMzUyMDEgMTAuNjQ4IDEuODAwMDIgNy41MDAwMiAxLjgwMDAyWk0zLjA3NTA0IDcuNTAwMDJDMy4wNzUwNCA1LjA1NjE3IDUuMDU2MTggMy4wNzUwMiA3LjUwMDA0IDMuMDc1MDJDOS45NDM4OCAzLjA3NTAyIDExLjkyNSA1LjA1NjE3IDExLjkyNSA3LjUwMDAyQzExLjkyNSA5Ljk0Mzg2IDkuOTQzODggMTEuOTI1IDcuNTAwMDQgMTEuOTI1QzUuMDU2MTggMTEuOTI1IDMuMDc1MDQgOS45NDM4NiAzLjA3NTA0IDcuNTAwMDJaTTcuNTAwMDQgMy45MjUwMkM1LjUyNTYyIDMuOTI1MDIgMy45MjUwNCA1LjUyNTYxIDMuOTI1MDQgNy41MDAwMkMzLjkyNTA0IDkuNDc0NDIgNS41MjU2MyAxMS4wNzUgNy41MDAwNCAxMS4wNzVDOS40NzQ0NCAxMS4wNzUgMTEuMDc1IDkuNDc0NDIgMTEuMDc1IDcuNTAwMDJDMTEuMDc1IDUuNTI1NjEgOS40NzQ0NCAzLjkyNTAyIDcuNTAwMDQgMy45MjUwMlpNNy41MDAwNCA1LjI1MDAyQzYuMjU3NCA1LjI1MDAyIDUuMjUwMDQgNi4yNTczOSA1LjI1MDA0IDcuNTAwMDJDNS4yNTAwNCA4Ljc0MjY2IDYuMjU3NCA5Ljc1MDAyIDcuNTAwMDQgOS43NTAwMkM4Ljc0MjY3IDkuNzUwMDIgOS43NTAwNCA4Ljc0MjY2IDkuNzUwMDQgNy41MDAwMkM5Ljc1MDA0IDYuMjU3MzggOC43NDI2NyA1LjI1MDAyIDcuNTAwMDQgNS4yNTAwMlpNNi4wNTAwNCA3LjUwMDAyQzYuMDUwMDQgNi42OTkyMSA2LjY5OTIzIDYuMDUwMDIgNy41MDAwNCA2LjA1MDAyQzguMzAwODQgNi4wNTAwMiA4Ljk1MDA0IDYuNjk5MjEgOC45NTAwNCA3LjUwMDAyQzguOTUwMDQgOC4zMDA4MyA4LjMwMDg0IDguOTUwMDIgNy41MDAwNCA4Ljk1MDAyQzYuNjk5MjMgOC45NTAwMiA2LjA1MDA0IDguMzAwODMgNi4wNTAwNCA3LjUwMDAyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuOTQ5OTMgMi45NTAwMkwzLjk0OTkzIDQuNDk5OThDMy45NDk5MyA0Ljc0ODUxIDMuNzQ4NDUgNC45NDk5OCAzLjQ5OTkzIDQuOTQ5OThDMy4yNTE0IDQuOTQ5OTggMy4wNDk5MyA0Ljc0ODUxIDMuMDQ5OTMgNC40OTk5OFYyLjUwMDA0QzMuMDQ5OTMgMi40NTI0NiAzLjA1NzMxIDIuNDA2NjEgMy4wNzA5OSAyLjM2MzU3QzMuMTI4NzggMi4xODE3NSAzLjI5ODk3IDIuMDUwMDIgMy40OTk5MyAyLjA1MDAySDExLjQ5OTlDMTEuNjU1MyAyLjA1MDAyIDExLjc5MjIgMi4xMjg3MiAxMS44NzMxIDIuMjQ4NDJDMTEuOTIxNiAyLjMyMDI0IDExLjk0OTkgMi40MDY4MiAxMS45NDk5IDIuNTAwMDJMMTEuOTQ5OSAyLjUwMDA0VjQuNDk5OThDMTEuOTQ5OSA0Ljc0ODUxIDExLjc0ODUgNC45NDk5OCAxMS40OTk5IDQuOTQ5OThDMTEuMjUxNCA0Ljk0OTk4IDExLjA0OTkgNC43NDg1MSAxMS4wNDk5IDQuNDk5OThWMi45NTAwMkg4LjA0OTkzVjEyLjA1SDkuMjU0MjhDOS41MDI4MSAxMi4wNSA5LjcwNDI4IDEyLjI1MTUgOS43MDQyOCAxMi41QzkuNzA0MjggMTIuNzQ4NiA5LjUwMjgxIDEyLjk1IDkuMjU0MjggMTIuOTVINS43NTQyOEM1LjUwNTc1IDEyLjk1IDUuMzA0MjggMTIuNzQ4NiA1LjMwNDI4IDEyLjVDNS4zMDQyOCAxMi4yNTE1IDUuNTA1NzUgMTIuMDUgNS43NTQyOCAxMi4wNUg2Ljk0OTkzVjIuOTUwMDJIMy45NDk5M1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEpyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDQuNUMyIDQuMjIzODYgMi4yMjM4NiA0IDIuNSA0SDEyLjVDMTIuNzc2MSA0IDEzIDQuMjIzODYgMTMgNC41QzEzIDQuNzc2MTQgMTIuNzc2MSA1IDEyLjUgNUgyLjVDMi4yMjM4NiA1IDIgNC43NzYxNCAyIDQuNVpNNCA3LjVDNCA3LjIyMzg2IDQuMjIzODYgNyA0LjUgN0gxMC41QzEwLjc3NjEgNyAxMSA3LjIyMzg2IDExIDcuNUMxMSA3Ljc3NjE0IDEwLjc3NjEgOCAxMC41IDhINC41QzQuMjIzODYgOCA0IDcuNzc2MTQgNCA3LjVaTTMgMTAuNUMzIDEwLjIyMzkgMy4yMjM4NiAxMCAzLjUgMTBIMTEuNUMxMS43NzYxIDEwIDEyIDEwLjIyMzkgMTIgMTAuNUMxMiAxMC43NzYxIDExLjc3NjEgMTEgMTEuNSAxMUgzLjVDMy4yMjM4NiAxMSAzIDEwLjc3NjEgMyAxMC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuNSA0QzIuMjIzODYgNCAyIDQuMjIzODYgMiA0LjVDMiA0Ljc3NjE0IDIuMjIzODYgNSAyLjUgNUgxMi41QzEyLjc3NjEgNSAxMyA0Ljc3NjE0IDEzIDQuNUMxMyA0LjIyMzg2IDEyLjc3NjEgNCAxMi41IDRIMi41Wk0yIDcuNUMyIDcuMjIzODYgMi4yMjM4NiA3IDIuNSA3SDEyLjVDMTIuNzc2MSA3IDEzIDcuMjIzODYgMTMgNy41QzEzIDcuNzc2MTQgMTIuNzc2MSA4IDEyLjUgOEgyLjVDMi4yMjM4NiA4IDIgNy43NzYxNCAyIDcuNVpNMiAxMC41QzIgMTAuMjIzOSAyLjIyMzg2IDEwIDIuNSAxMEgxMi41QzEyLjc3NjEgMTAgMTMgMTAuMjIzOSAxMyAxMC41QzEzIDEwLjc3NjEgMTIuNzc2MSAxMSAxMi41IDExSDIuNUMyLjIyMzg2IDExIDIgMTAuNzc2MSAyIDEwLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx0bz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiA0LjVDMiA0LjIyMzg2IDIuMjIzODYgNCAyLjUgNEgxMi41QzEyLjc3NjEgNCAxMyA0LjIyMzg2IDEzIDQuNUMxMyA0Ljc3NjE0IDEyLjc3NjEgNSAxMi41IDVIMi41QzIuMjIzODYgNSAyIDQuNzc2MTQgMiA0LjVaTTIgNy41QzIgNy4yMjM4NiAyLjIyMzg2IDcgMi41IDdINy41QzcuNzc2MTQgNyA4IDcuMjIzODYgOCA3LjVDOCA3Ljc3NjE0IDcuNzc2MTQgOCA3LjUgOEgyLjVDMi4yMjM4NiA4IDIgNy43NzYxNCAyIDcuNVpNMiAxMC41QzIgMTAuMjIzOSAyLjIyMzg2IDEwIDIuNSAxMEgxMC41QzEwLjc3NjEgMTAgMTEgMTAuMjIzOSAxMSAxMC41QzExIDEwLjc3NjEgMTAuNzc2MSAxMSAxMC41IDExSDIuNUMyLjIyMzg2IDExIDIgMTAuNzc2MSAyIDEwLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxubz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiA0LjVDMiA0LjIyMzg2IDIuMjIzODYgNCAyLjUgNEgxMi41QzEyLjc3NjEgNCAxMyA0LjIyMzg2IDEzIDQuNUMxMyA0Ljc3NjE0IDEyLjc3NjEgNSAxMi41IDVIMi41QzIuMjIzODYgNSAyIDQuNzc2MTQgMiA0LjVaTTcgNy41QzcgNy4yMjM4NiA3LjIyMzg2IDcgNy41IDdIMTIuNUMxMi43NzYxIDcgMTMgNy4yMjM4NiAxMyA3LjVDMTMgNy43NzYxNCAxMi43NzYxIDggMTIuNSA4SDcuNUM3LjIyMzg2IDggNyA3Ljc3NjE0IDcgNy41Wk00IDEwLjVDNCAxMC4yMjM5IDQuMjIzODYgMTAgNC41IDEwSDEyLjVDMTIuNzc2MSAxMCAxMyAxMC4yMjM5IDEzIDEwLjVDMTMgMTAuNzc2MSAxMi43NzYxIDExIDEyLjUgMTFINC41QzQuMjIzODYgMTEgNCAxMC43NzYxIDQgMTAuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHJvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy4zNTM2IDIuMzUzNTVDMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMS44NDE3MSAxMy4zNTM2IDEuNjQ2NDVDMTMuMTU4MyAxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMi42NDY0IDEuNjQ2NDVMMTEuOTI5MSAyLjM2MzgzQzExLjkxNTkgMi4zMjI0NiAxMS44OTcgMi4yODM2OCAxMS44NzMyIDIuMjQ4NDVDMTEuNzkyMyAyLjEyODc1IDExLjY1NTQgMi4wNTAwNSAxMS41MDAxIDIuMDUwMDVIMy41MDAwNUMzLjI5OTA5IDIuMDUwMDUgMy4xMjg5IDIuMTgxNzggMy4wNzExMSAyLjM2MzZDMy4wNTc0MyAyLjQwNjY1IDMuMDUwMDUgMi40NTI0OSAzLjA1MDA1IDIuNTAwMDdWNC41MDAwMUMzLjA1MDA1IDQuNzQ4NTQgMy4yNTE1MiA0Ljk1MDAxIDMuNTAwMDUgNC45NTAwMUMzLjc0ODU4IDQuOTUwMDEgMy45NTAwNSA0Ljc0ODU0IDMuOTUwMDUgNC41MDAwMVYyLjk1MDA1SDYuOTUwMDZWNy4zNDI4NEwxLjY0NjQ1IDEyLjY0NjRDMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTMuMTU4MyAxLjY0NjQ1IDEzLjM1MzZDMS44NDE3MSAxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAyLjM1MzU1IDEzLjM1MzZMNi45NTAwNiA4Ljc1NzA1VjEyLjA1MDFINS43NTQ0QzUuNTA1ODcgMTIuMDUwMSA1LjMwNDQgMTIuMjUxNSA1LjMwNDQgMTIuNTAwMUM1LjMwNDQgMTIuNzQ4NiA1LjUwNTg3IDEyLjk1MDEgNS43NTQ0IDEyLjk1MDFIOS4yNTQ0QzkuNTAyOTMgMTIuOTUwMSA5LjcwNDQgMTIuNzQ4NiA5LjcwNDQgMTIuNTAwMUM5LjcwNDQgMTIuMjUxNSA5LjUwMjkzIDEyLjA1MDEgOS4yNTQ0IDEyLjA1MDFIOC4wNTAwNlY3LjY1NzA1TDEzLjM1MzYgMi4zNTM1NVpNOC4wNTAwNiA2LjI0Mjg0TDExLjA1MDEgMy4yNDI4M1YyLjk1MDA1SDguMDUwMDZWNi4yNDI4NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG9vPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDMuNUM1IDMuMjIzODYgNS4yMjM4NiAzIDUuNSAzSDkuNUM5Ljc3NjE0IDMgMTAgMy4yMjM4NiAxMCAzLjVWNkgxMi41QzEyLjY4NzMgNiAxMi44NTg5IDYuMTA0NjcgMTIuOTQ0NiA2LjI3MTIxQzEzLjAzMDMgNi40Mzc3NCAxMy4wMTU3IDYuNjM4MjEgMTIuOTA2OSA2Ljc5MDYyTDcuOTA2ODcgMTMuNzkwNkM3LjgxMzAxIDEzLjkyMiA3LjY2MTQ4IDE0IDcuNSAxNEM3LjMzODUzIDE0IDcuMTg2OTkgMTMuOTIyIDcuMDkzMTQgMTMuNzkwNkwyLjA5MzE0IDYuNzkwNjJDMS45ODQyNyA2LjYzODIxIDEuOTY5NzIgNi40Mzc3NCAyLjA1NTQyIDYuMjcxMjFDMi4xNDExMiA2LjEwNDY3IDIuMzEyNzEgNiAyLjUgNkg1VjMuNVpNNiA0VjYuNUM2IDYuNzc2MTQgNS43NzYxNCA3IDUuNSA3SDMuNDcxNkw3LjUgMTIuNjM5OEwxMS41Mjg0IDdIOS41QzkuMjIzODYgNyA5IDYuNzc2MTQgOSA2LjVWNEg2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgNy41QzEgNy42NjE0OCAxLjA3Nzk4IDcuODEzMDEgMS4yMDkzOCA3LjkwNjg3TDguMjA5MzggMTIuOTA2OUM4LjM2MTc5IDEzLjAxNTcgOC41NjIyNiAxMy4wMzAzIDguNzI4NzkgMTIuOTQ0NkM4Ljg5NTMzIDEyLjg1ODkgOSAxMi42ODczIDkgMTIuNUw5IDEwTDExLjUgMTBDMTEuNzc2MSAxMCAxMiA5Ljc3NjE0IDEyIDkuNUwxMiA1LjVDMTIgNS4yMjM4NiAxMS43NzYxIDUgMTEuNSA1TDkgNUw5IDIuNUM5IDIuMzEyNzEgOC44OTUzMyAyLjE0MTEyIDguNzI4NzkgMi4wNTU0MkM4LjU2MjI2IDEuOTY5NzIgOC4zNjE3OSAxLjk4NDI3IDguMjA5MzggMi4wOTMxM0wxLjIwOTM4IDcuMDkzMTRDMS4wNzc5OCA3LjE4Njk5IDEgNy4zMzg1MyAxIDcuNVpNOCAzLjQ3MTZMOCA1LjVDOCA1Ljc3NjE0IDguMjIzODYgNiA4LjUgNkwxMSA2TDExIDlMOC41IDlDOC4yMjM4NiA5IDggOS4yMjM4NiA4IDkuNUw4IDExLjUyODRMMi4zNjAyMyA3LjVMOCAzLjQ3MTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxhbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTQgNy41QzE0IDcuNjYxNDggMTMuOTIyIDcuODEzMDEgMTMuNzkwNiA3LjkwNjg3TDYuNzkwNjIgMTIuOTA2OUM2LjYzODIxIDEzLjAxNTcgNi40Mzc3NCAxMy4wMzAzIDYuMjcxMjEgMTIuOTQ0NkM2LjEwNDY3IDEyLjg1ODkgNiAxMi42ODczIDYgMTIuNUw2IDEwTDMuNSAxMEMzLjIyMzg2IDEwIDMgOS43NzYxNCAzIDkuNUwzIDUuNUMzIDUuMjIzODYgMy4yMjM4NiA1IDMuNSA1TDYgNUw2IDIuNUM2IDIuMzEyNzEgNi4xMDQ2NyAyLjE0MTEyIDYuMjcxMjEgMi4wNTU0MkM2LjQzNzc0IDEuOTY5NzIgNi42MzgyMSAxLjk4NDI3IDYuNzkwNjIgMi4wOTMxM0wxMy43OTA2IDcuMDkzMTRDMTMuOTIyIDcuMTg2OTkgMTQgNy4zMzg1MyAxNCA3LjVaTTcgMy40NzE2TDcgNS41QzcgNS43NzYxNCA2Ljc3NjE0IDYgNi41IDZMNCA2TDQgOUw2LjUgOUM2Ljc3NjE0IDkgNyA5LjIyMzg2IDcgOS41TDcgMTEuNTI4NEwxMi42Mzk4IDcuNUw3IDMuNDcxNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGxvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMUM3LjY2MTQ4IDEgNy44MTMwMSAxLjA3Nzk4IDcuOTA2ODcgMS4yMDkzOEwxMi45MDY5IDguMjA5MzhDMTMuMDE1NyA4LjM2MTc5IDEzLjAzMDMgOC41NjIyNiAxMi45NDQ2IDguNzI4NzlDMTIuODU4OSA4Ljg5NTMzIDEyLjY4NzMgOSAxMi41IDlIMTBWMTEuNUMxMCAxMS43NzYxIDkuNzc2MTQgMTIgOS41IDEySDUuNUM1LjIyMzg2IDEyIDUgMTEuNzc2MSA1IDExLjVWOUgyLjVDMi4zMTI3MSA5IDIuMTQxMTIgOC44OTUzMyAyLjA1NTQyIDguNzI4NzlDMS45Njk3MiA4LjU2MjI2IDEuOTg0MjcgOC4zNjE3OSAyLjA5MzE0IDguMjA5MzhMNy4wOTMxNCAxLjIwOTM4QzcuMTg2OTkgMS4wNzc5OCA3LjMzODUzIDEgNy41IDFaTTMuNDcxNiA4SDUuNUM1Ljc3NjE0IDggNiA4LjIyMzg2IDYgOC41VjExSDlWOC41QzkgOC4yMjM4NiA5LjIyMzg2IDggOS41IDhIMTEuNTI4NEw3LjUgMi4zNjAyM0wzLjQ3MTYgOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGNvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTk4IDAuODQ5OTc2QzcuMjIzODMgMC44NDk5NzYgNi45OTk5OCAxLjA3MzgzIDYuOTk5OTggMS4zNDk5OFYzLjUyMjM0QzYuOTk5OTggMy43OTg0OCA3LjIyMzgzIDQuMDIyMzQgNy40OTk5OCA0LjAyMjM0QzcuNzc2MTIgNC4wMjIzNCA3Ljk5OTk4IDMuNzk4NDggNy45OTk5OCAzLjUyMjM0VjEuODcxOEMxMC44ODYyIDIuMTI0ODggMTMuMTUgNC41NDgwNiAxMy4xNSA3LjQ5OTk4QzEzLjE1IDEwLjYyMDQgMTAuNjIwNCAxMy4xNSA3LjQ5OTk4IDEzLjE1QzQuMzc5NTcgMTMuMTUgMS44NDk5OCAxMC42MjA0IDEuODQ5OTggNy40OTk5OEMxLjg0OTk4IDYuMTA2MTIgMi4zNTQwNyA0LjgzMTI4IDMuMTkwNDkgMy44NDU5QzMuMzY5MTkgMy42MzUzOCAzLjM0MzM5IDMuMzE5ODUgMy4xMzI4NiAzLjE0MTE1QzIuOTIyMzQgMi45NjI0NSAyLjYwNjgxIDIuOTg4MjUgMi40MjgxMSAzLjE5ODc3QzEuNDQ0MDUgNC4zNTgwOCAwLjg0OTk3NiA1Ljg2MDI5IDAuODQ5OTc2IDcuNDk5OThDMC44NDk5NzYgMTEuMTcyNyAzLjgyNzI4IDE0LjE1IDcuNDk5OTggMTQuMTVDMTEuMTcyNyAxNC4xNSAxNC4xNSAxMS4xNzI3IDE0LjE1IDcuNDk5OThDMTQuMTUgMy44MjcyOCAxMS4xNzI3IDAuODQ5OTc2IDcuNDk5OTggMC44NDk5NzZaTTYuNzQwNDkgOC4wODA3Mkw0LjIyMzYzIDQuNTcyMzdDNC4xNTIzMSA0LjQ3Mjk1IDQuMTYzNDYgNC4zMzY1MiA0LjI0OTk4IDQuMjVDNC4zMzY0OSA0LjE2MzQ4IDQuNDcyOTMgNC4xNTIzMyA0LjU3MjM0IDQuMjIzNjVMOC4wODA2OSA2Ljc0MDUxQzguNTYyMjcgNy4wODU5OSA4LjYxOTA2IDcuNzgwOTEgOC4xOTk5OCA4LjJDNy43ODA4OSA4LjYxOTA5IDcuMDg1OTcgOC41NjIyOSA2Ljc0MDQ5IDguMDgwNzJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxzbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC41IDJDMy4xMTkyOSAyIDIgMy4xMTkyOSAyIDQuNUMyIDUuODgwNzIgMy4xMTkyOSA3IDQuNSA3QzUuODgwNzIgNyA3IDUuODgwNzIgNyA0LjVDNyAzLjExOTI5IDUuODgwNzIgMiA0LjUgMlpNMyA0LjVDMyAzLjY3MTU3IDMuNjcxNTcgMyA0LjUgM0M1LjMyODQzIDMgNiAzLjY3MTU3IDYgNC41QzYgNS4zMjg0MyA1LjMyODQzIDYgNC41IDZDMy42NzE1NyA2IDMgNS4zMjg0MyAzIDQuNVpNMTAuNSAyQzkuMTE5MjkgMiA4IDMuMTE5MjkgOCA0LjVDOCA1Ljg4MDcyIDkuMTE5MjkgNyAxMC41IDdDMTEuODgwNyA3IDEzIDUuODgwNzIgMTMgNC41QzEzIDMuMTE5MjkgMTEuODgwNyAyIDEwLjUgMlpNOSA0LjVDOSAzLjY3MTU3IDkuNjcxNTcgMyAxMC41IDNDMTEuMzI4NCAzIDEyIDMuNjcxNTcgMTIgNC41QzEyIDUuMzI4NDMgMTEuMzI4NCA2IDEwLjUgNkM5LjY3MTU3IDYgOSA1LjMyODQzIDkgNC41Wk0yIDEwLjVDMiA5LjExOTI5IDMuMTE5MjkgOCA0LjUgOEM1Ljg4MDcyIDggNyA5LjExOTI5IDcgMTAuNUM3IDExLjg4MDcgNS44ODA3MiAxMyA0LjUgMTNDMy4xMTkyOSAxMyAyIDExLjg4MDcgMiAxMC41Wk00LjUgOUMzLjY3MTU3IDkgMyA5LjY3MTU3IDMgMTAuNUMzIDExLjMyODQgMy42NzE1NyAxMiA0LjUgMTJDNS4zMjg0MyAxMiA2IDExLjMyODQgNiAxMC41QzYgOS42NzE1NyA1LjMyODQzIDkgNC41IDlaTTEwLjUgOEM5LjExOTI5IDggOCA5LjExOTI5IDggMTAuNUM4IDExLjg4MDcgOS4xMTkyOSAxMyAxMC41IDEzQzExLjg4MDcgMTMgMTMgMTEuODgwNyAxMyAxMC41QzEzIDkuMTE5MjkgMTEuODgwNyA4IDEwLjUgOFpNOSAxMC41QzkgOS42NzE1NyA5LjY3MTU3IDkgMTAuNSA5QzExLjMyODQgOSAxMiA5LjY3MTU3IDEyIDEwLjVDMTIgMTEuMzI4NCAxMS4zMjg0IDEyIDEwLjUgMTJDOS42NzE1NyAxMiA5IDExLjMyODQgOSAxMC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjA1MDIgMi43NDk4OUMxMy4wNTAyIDIuNDQ2MTMgMTIuODA0IDIuMTk5ODkgMTIuNTAwMiAyLjE5OTg5QzEyLjE5NjUgMi4xOTk4OSAxMS45NTAyIDIuNDQ2MTMgMTEuOTUwMiAyLjc0OTg5VjcuMjgyNUMxMS45MDQ2IDcuMTg4MDIgMTEuODI5NSA3LjEwODUxIDExLjczMzQgNy4wNTc3NkwyLjczMzM4IDIuMzA3NzZDMi41Nzg0IDIuMjI1OTYgMi4zOTE5IDIuMjMxMjcgMi4yNDE4MiAyLjMyMTc2QzIuMDkxNzUgMi40MTIyNSAyIDIuNTc0NzEgMiAyLjc0OTk1VjEyLjI1QzIgMTIuNDI1MiAyLjA5MTc1IDEyLjU4NzcgMi4yNDE4MiAxMi42NzgxQzIuMzkxOSAxMi43Njg2IDIuNTc4NCAxMi43NzM5IDIuNzMzMzggMTIuNjkyMUwxMS43MzM0IDcuOTQyMTRDMTEuODI5NSA3Ljg5MTM5IDExLjkwNDYgNy44MTE4OCAxMS45NTAyIDcuNzE3NFYxMi4yNDk5QzExLjk1MDIgMTIuNTUzNiAxMi4xOTY1IDEyLjc5OTkgMTIuNTAwMiAxMi43OTk5QzEyLjgwNCAxMi43OTk5IDEzLjA1MDIgMTIuNTUzNiAxMy4wNTAyIDEyLjI0OTlWMi43NDk4OVpNMyAxMS40MjA3VjMuNTc5MkwxMC40Mjg4IDcuNDk5OTVMMyAxMS40MjA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZm89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuOTQ5NzYgMi43NDk4OUMxLjk0OTc2IDIuNDQ2MTMgMi4xOTYgMi4xOTk4OSAyLjQ5OTc2IDIuMTk5ODlDMi44MDM1MSAyLjE5OTg5IDMuMDQ5NzYgMi40NDYxMyAzLjA0OTc2IDIuNzQ5ODlWNy4yODI1QzMuMDk1NCA3LjE4ODAyIDMuMTcwNDYgNy4xMDg1MSAzLjI2NjYyIDcuMDU3NzZMMTIuMjY2NiAyLjMwNzc2QzEyLjQyMTYgMi4yMjU5NiAxMi42MDgxIDIuMjMxMjcgMTIuNzU4MiAyLjMyMTc2QzEyLjkwODMgMi40MTIyNSAxMyAyLjU3NDcxIDEzIDIuNzQ5OTVWMTIuMjVDMTMgMTIuNDI1MiAxMi45MDgzIDEyLjU4NzcgMTIuNzU4MiAxMi42NzgxQzEyLjYwODEgMTIuNzY4NiAxMi40MjE2IDEyLjc3MzkgMTIuMjY2NiAxMi42OTIxTDMuMjY2NjIgNy45NDIxNEMzLjE3MDQ2IDcuODkxMzkgMy4wOTU0IDcuODExODggMy4wNDk3NiA3LjcxNzRWMTIuMjQ5OUMzLjA0OTc2IDEyLjU1MzYgMi44MDM1MSAxMi43OTk5IDIuNDk5NzYgMTIuNzk5OUMyLjE5NiAxMi43OTk5IDEuOTQ5NzYgMTIuNTUzNiAxLjk0OTc2IDEyLjI0OTlWMi43NDk4OVpNNC41NzEyMiA3LjQ5OTk1TDEyIDExLjQyMDdWMy41NzkyTDQuNTcxMjIgNy40OTk5NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHBvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4yNVwiLGQ6XCJNMCAwSDNWM0gwVjBaTTYgM0gzVjZIMFY5SDNWMTJIMFYxNUgzVjEySDZWMTVIOVYxMkgxMlYxNUgxNVYxMkgxMlY5SDE1VjZIMTJWM0gxNVYwSDEyVjNIOVYwSDZWM1pNNiA2VjNIOVY2SDZaTTYgOUgzVjZINlY5Wk05IDlWNkgxMlY5SDlaTTkgOUg2VjEySDlWOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LENvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjUgMUM1LjIyMzg2IDEgNSAxLjIyMzg2IDUgMS41QzUgMS43NzYxNCA1LjIyMzg2IDIgNS41IDJIOS41QzkuNzc2MTQgMiAxMCAxLjc3NjE0IDEwIDEuNUMxMCAxLjIyMzg2IDkuNzc2MTQgMSA5LjUgMUg1LjVaTTMgMy41QzMgMy4yMjM4NiAzLjIyMzg2IDMgMy41IDNINUgxMEgxMS41QzExLjc3NjEgMyAxMiAzLjIyMzg2IDEyIDMuNUMxMiAzLjc3NjE0IDExLjc3NjEgNCAxMS41IDRIMTFWMTJDMTEgMTIuNTUyMyAxMC41NTIzIDEzIDEwIDEzSDVDNC40NDc3MiAxMyA0IDEyLjU1MjMgNCAxMlY0TDMuNSA0QzMuMjIzODYgNCAzIDMuNzc2MTQgMyAzLjVaTTUgNEgxMFYxMkg1VjRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxobz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNCA2SDExTDcuNSAxMC41TDQgNlpcIixmaWxsOm59KSl9LHZvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05IDRMOSAxMUw0LjUgNy41TDkgNFpcIixmaWxsOm59KSl9LGdvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02IDExTDYgNEwxMC41IDcuNUw2IDExWlwiLGZpbGw6bn0pKX0sbW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQgOUgxMUw3LjUgNC41TDQgOVpcIixmaWxsOm59KSl9LHdvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjIzMzM2IDQuNjk2MjlDNy4yMzMzNiAyLjk2ODg0IDguNjMzMzUgMS41Njg1NyAxMC4zNiAxLjU2ODU3QzExLjM3MzYgMS41Njg1NyAxMi4xODMgMi4wNDgwNCAxMi43MjU0IDIuNzQzODVDMTMuMzA3OSAyLjYyNDY3IDEzLjg1NTcgMi40MDkxMyAxNC4zNTEzIDIuMTE1MDhDMTQuMTU1OSAyLjcyNTk4IDEzLjc0MjQgMy4yMzk2IDEzLjIwMzMgMy41NjQ2M0MxMy4yMDM4IDMuNTY1NjggMTMuMjA0MiAzLjU2Njc0IDEzLjIwNDcgMy41Njc3OUMxMy43MzM0IDMuNTAzNjEgMTQuMjM2NCAzLjM2MzAyIDE0LjcwNDggMy4xNTU0NkwxNC43MDM3IDMuMTU3MTVDMTQuMzY2NyAzLjY2MTgzIDEzLjk0MzEgNC4xMDczNiAxMy40NTYxIDQuNDcwMzRDMTMuNDgyMyA0LjY0NjcyIDEzLjQ5NTYgNC44MjQyNyAxMy40OTU2IDUuMDAwNzlDMTMuNDk1NiA4LjY4NzEgMTAuNjg3MyAxMi45NzQ2IDUuNTIxMjIgMTIuOTc0NkMzLjkzOTA2IDEyLjk3NDYgMi40NjU0NCAxMi41MTEgMS4yMjUwNSAxMS43MTUyQzAuOTkyNjMyIDExLjU2NjEgMC45MjUxMDggMTEuMjU2OCAxLjA3NDIzIDExLjAyNDRDMS4wODc0IDExLjAwMzggMS4xMDE4MyAxMC45ODQ2IDEuMTE3MzQgMTAuOTY2NkMxLjIwNTgyIDEwLjgyMDIgMS4zNzQzOCAxMC43MzA5IDEuNTU1NCAxMC43NTIyQzIuNDcwNjYgMTAuODYwMSAzLjM4NTY4IDEwLjc0ODUgNC4xOTIxOSAxMC4zOTYyQzMuMzkyMjYgMTAuMDQzNCAyLjc3MTI5IDkuMzU5NzUgMi41MDIwNCA4LjUxOTc0QzIuNDUzNTkgOC4zNjg2IDIuNDg4MzUgOC4yMDMxMSAyLjU5MzUxIDguMDg0MjJDMi41OTcxNiA4LjA4MDEgMi42MDA4NyA4LjA3NjA2IDIuNjA0NjQgOC4wNzIxQzEuOTYzOTEgNy41MDgxOSAxLjU1OTczIDYuNjgyMDggMS41NTk3MyA1Ljc2MTQzVjUuNzI3NTlDMS41NTk3MyA1LjU2ODE0IDEuNjQ0MTEgNS40MjA1OSAxLjc4MTU1IDUuMzM5NzRDMS44MjY3MSA1LjMxMzE3IDEuODc1MzcgNS4yOTUxMSAxLjkyNTMyIDUuMjg1NThDMS43MDU0OSA0Ljg2MTU0IDEuNTgxMTYgNC4zNzk4NCAxLjU4MTE2IDMuODY5NThDMS41ODExNiAzLjQwMTY1IDEuNTgzODQgMi44MTE5MiAxLjkxMzMyIDIuMjgwODFDMS45ODcxOCAyLjE2MTc1IDIuMTA3NTggMi4wODkxNSAyLjIzNjQgMi4wNzE5NUMyLjQyNTg4IDIuMDEyMzcgMi42NDA4NyAyLjA2OTY5IDIuNzc0MDYgMi4yMzMwMkMzLjg2NTM2IDMuNTcxMjYgNS40NDA2NiA0LjQ5NTgzIDcuMjMzNjYgNC43Mzk2MUw3LjIzMzM2IDQuNjk2MjlaTTUuNTIxMjIgMTEuOTc0NkM0LjczMzg3IDExLjk3NDYgMy45Nzc4MSAxMS44NDM1IDMuMjcyNDggMTEuNjAyM0M0LjEzMDEyIDExLjQ1MzggNC45NTMwNyAxMS4xMTU5IDUuNjYyMTggMTAuNTYwMkM1LjgxMjExIDEwLjQ0MjcgNS44NzE4MiAxMC4yNDM1IDUuODExMjYgMTAuMDYyOUM1Ljc1MDcgOS44ODIzNCA1LjU4MyA5Ljc1OTQzIDUuMzkyNTUgOS43NTYwN0M0LjY4OTY4IDkuNzQzNjYgNC4wNjcxMiA5LjM5NzE2IDMuNjc3OTMgOC44Njg0NUMzLjg2ODI4IDguODUzMDYgNC4wNTQyOCA4LjgyMDM5IDQuMjM0NDUgOC43NzE2N0M0LjQzNjAzIDguNzE3MTYgNC41NzM2MyA4LjUzMTE0IDQuNTY2NzQgOC4zMjI0M0M0LjU1OTg1IDguMTEzNzIgNC40MTAyOSA3LjkzNzE4IDQuMjA1NTUgNy44OTYwN0MzLjQyNjk0IDcuNzM5NzcgMi43OTg4MyA3LjE2NzY0IDIuNTYxNjkgNi40MjE3NEMyLjc2MjU1IDYuNDcwMjUgMi45NzEwMiA2LjQ5OTEgMy4xODQ4MiA2LjUwNjFDMy4zODU2MyA2LjUxMjY3IDMuNTY2NDYgNi4zODUzMyAzLjYyNzk1IDYuMTk0MDVDMy42ODk0MyA2LjAwMjc3IDMuNjE2NjYgNS43OTM5MSAzLjQ0OTYzIDUuNjgyMjRDMi44NjUyMyA1LjI5MTU1IDIuNDgxMTYgNC42MjQ2NCAyLjQ4MTE2IDMuODY5NThDMi40ODExNiAzLjcwMjEzIDIuNDgzNTIgMy41NTI2OCAyLjQ5MzU1IDMuNDE3MTlDMy44NTExNSA0Ljc5OTEzIDUuNzA4NzMgNS42ODkzMSA3Ljc3NTg4IDUuNzkzMzhDNy45MzIyNSA1LjgwMTI2IDguMDgzMjggNS43MzU0MyA4LjE4Mzk1IDUuNjE1NTNDOC4yODQ2MyA1LjQ5NTYyIDguMzIzMzIgNS4zMzU0OCA4LjI4ODUxIDUuMTgyODRDOC4yNTI1NSA1LjAyNTE3IDguMjMzMzYgNC44NjI4NCA4LjIzMzM2IDQuNjk2MjlDOC4yMzMzNiAzLjUyMDg1IDkuMTg1OTEgMi41Njg1NyAxMC4zNiAyLjU2ODU3QzExLjU5NDMgMi41Njg1NyAxMi40OTU2IDMuNzEyMDggMTIuNDk1NiA1LjAwMDc5QzEyLjQ5NTYgOC4yNTcwOSAxMC4wMjAyIDExLjk3NDYgNS41MjEyMiAxMS45NzQ2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuMDAwMDEgMi43NUM1LjAwMDAxIDIuNDczODYgNC43NzYxNSAyLjI1IDQuNTAwMDEgMi4yNUM0LjIyMzg3IDIuMjUgNC4wMDAwMSAyLjQ3Mzg2IDQuMDAwMDEgMi43NVY4LjA1QzQuMDAwMDEgOS45ODMgNS41NjcwMiAxMS41NSA3LjUwMDAxIDExLjU1QzkuNDMzMDEgMTEuNTUgMTEgOS45ODMgMTEgOC4wNVYyLjc1QzExIDIuNDczODYgMTAuNzc2MiAyLjI1IDEwLjUgMi4yNUMxMC4yMjM5IDIuMjUgMTAgMi40NzM4NiAxMCAyLjc1VjguMDVDMTAgOS40MzA3MSA4Ljg4MDcyIDEwLjU1IDcuNTAwMDEgMTAuNTVDNi4xMTkzIDEwLjU1IDUuMDAwMDEgOS40MzA3MSA1LjAwMDAxIDguMDVWMi43NVpNMy40OTk5OCAxMy4xMDAxQzMuMjc5MDYgMTMuMTAwMSAzLjA5OTk4IDEzLjI3OTEgMy4wOTk5OCAxMy41MDAxQzMuMDk5OTggMTMuNzIxIDMuMjc5MDYgMTMuOTAwMSAzLjQ5OTk4IDEzLjkwMDFIMTEuNUMxMS43MjA5IDEzLjkwMDEgMTEuOSAxMy43MjEgMTEuOSAxMy41MDAxQzExLjkgMTMuMjc5MSAxMS43MjA5IDEzLjEwMDEgMTEuNSAxMy4xMDAxSDMuNDk5OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxibz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS45MDMyMSA3LjI5Njc3QzEuOTAzMjEgMTAuMzQxIDQuMTEwNDEgMTIuNDE0NyA2LjU4ODkzIDEyLjg0MzlDNi44NzI1NSAxMi44OTMgNy4wNjI2NiAxMy4xNjI3IDcuMDEzNTUgMTMuNDQ2NEM2Ljk2NDQ0IDEzLjczIDYuNjk0NzEgMTMuOTIwMSA2LjQxMTA5IDEzLjg3MUMzLjQ5OTQyIDEzLjM2NjggMC44NjA4NCAxMC45MTI3IDAuODYwODQgNy4yOTY3N0MwLjg2MDgzOSA1Ljc2MDA5IDEuNTU5OTYgNC41NTI0NSAyLjM3NjM5IDMuNjMzNzdDMi45NjEyNCAyLjk3NTY4IDMuNjMwMzQgMi40NDEzNSA0LjE2ODQ2IDIuMDMyMDJMMi41MzIwNSAyLjAzMjAyQzIuMjU1OTEgMi4wMzIwMiAyLjAzMjA1IDEuODA4MTYgMi4wMzIwNSAxLjUzMjAyQzIuMDMyMDUgMS4yNTU4OCAyLjI1NTkxIDEuMDMyMDIgMi41MzIwNSAxLjAzMjAyTDUuNTMyMDUgMS4wMzIwMkM1LjgwODE5IDEuMDMyMDIgNi4wMzIwNSAxLjI1NTg4IDYuMDMyMDUgMS41MzIwMkw2LjAzMjA1IDQuNTMyMDJDNi4wMzIwNSA0LjgwODE2IDUuODA4MTkgNS4wMzIwMiA1LjUzMjA1IDUuMDMyMDJDNS4yNTU5MSA1LjAzMjAyIDUuMDMyMDUgNC44MDgxNiA1LjAzMjA1IDQuNTMyMDJMNS4wMzIwNSAyLjY4NjQ1TDUuMDMwNTQgMi42ODc1OUw1LjAzMDQ1IDIuNjg3NjZMNS4wMzA0NCAyLjY4NzY3TDUuMDMwNDMgMi42ODc2N0M0LjQ1ODk2IDMuMTE4NjggMy43NjA1OSAzLjY0NTM4IDMuMTU1NTQgNC4zMjYyQzIuNDQxMDIgNS4xMzAyMSAxLjkwMzIxIDYuMTAxNTQgMS45MDMyMSA3LjI5Njc3Wk0xMy4wMTA5IDcuNzAzMjFDMTMuMDEwOSA0LjY5MTE1IDEwLjg1MDUgMi42Mjk2IDguNDAzODQgMi4xNzAyOUM4LjEyMDkzIDIuMTE3MTggNy45MzQ2NSAxLjg0NDc5IDcuOTg3NzYgMS41NjE4OEM4LjA0MDg3IDEuMjc4OTggOC4zMTMyNiAxLjA5MjcgOC41OTYxNiAxLjE0NTgxQzExLjQ3MDQgMS42ODU0MSAxNC4wNTMyIDQuMTI2MDUgMTQuMDUzMiA3LjcwMzIxQzE0LjA1MzIgOS4yMzk4OCAxMy4zNTQxIDEwLjQ0NzUgMTIuNTM3NyAxMS4zNjYyQzExLjk1MjggMTIuMDI0MyAxMS4yODM3IDEyLjU1ODYgMTAuNzQ1NiAxMi45NjhMMTIuMzgyMSAxMi45NjhDMTIuNjU4MiAxMi45NjggMTIuODgyMSAxMy4xOTE4IDEyLjg4MjEgMTMuNDY4QzEyLjg4MjEgMTMuNzQ0MSAxMi42NTgyIDEzLjk2OCAxMi4zODIxIDEzLjk2OEw5LjM4MjA1IDEzLjk2OEM5LjEwNTkxIDEzLjk2OCA4Ljg4MjA1IDEzLjc0NDEgOC44ODIwNSAxMy40NjhMOC44ODIwNSAxMC40NjhDOC44ODIwNSAxMC4xOTE4IDkuMTA1OTEgOS45Njc5NiA5LjM4MjA1IDkuOTY3OTZDOS42NTgxOSA5Ljk2Nzk2IDkuODgyMDUgMTAuMTkxOCA5Ljg4MjA1IDEwLjQ2OEw5Ljg4MjA1IDEyLjMxMzVMOS44ODM2MiAxMi4zMTIzQzEwLjQ1NTEgMTEuODgxMyAxMS4xNTM1IDExLjM1NDYgMTEuNzU4NSAxMC42NzM4QzEyLjQ3MzEgOS44Njk3NiAxMy4wMTA5IDguODk4NDQgMTMuMDEwOSA3LjcwMzIxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuODE4MjUgMS4xODE4OEM3LjY0MjUxIDEuMDA2MTUgNy4zNTc1OSAxLjAwNjE1IDcuMTgxODUgMS4xODE4OEw0LjE4MTg1IDQuMTgxODhDNC4wMDYxMSA0LjM1NzYyIDQuMDA2MTEgNC42NDI1NCA0LjE4MTg1IDQuODE4MjhDNC4zNTc1OSA0Ljk5NDAxIDQuNjQyNTEgNC45OTQwMSA0LjgxODI1IDQuODE4MjhMNy4wNTAwNSAyLjU4NjQ4VjkuNDk5OTZDNy4wNTAwNSA5Ljc0ODQ5IDcuMjUxNTIgOS45NDk5NiA3LjUwMDA1IDkuOTQ5OTZDNy43NDg1OCA5Ljk0OTk2IDcuOTUwMDUgOS43NDg0OSA3Ljk1MDA1IDkuNDk5OTZWMi41ODY0OEwxMC4xODE5IDQuODE4MjhDMTAuMzU3NiA0Ljk5NDAxIDEwLjY0MjUgNC45OTQwMSAxMC44MTgyIDQuODE4MjhDMTAuOTk0IDQuNjQyNTQgMTAuOTk0IDQuMzU3NjIgMTAuODE4MiA0LjE4MTg4TDcuODE4MjUgMS4xODE4OFpNMi41IDkuOTk5OTdDMi43NzYxNCA5Ljk5OTk3IDMgMTAuMjIzOCAzIDEwLjVWMTJDMyAxMi41NTM4IDMuNDQ1NjUgMTMgMy45OTYzNSAxM0gxMS4wMDEyQzExLjU1MjkgMTMgMTIgMTIuNTUyOCAxMiAxMlYxMC41QzEyIDEwLjIyMzggMTIuMjIzOSA5Ljk5OTk3IDEyLjUgOS45OTk5N0MxMi43NzYxIDkuOTk5OTcgMTMgMTAuMjIzOCAxMyAxMC41VjEyQzEzIDEzLjEwNCAxMi4xMDYyIDE0IDExLjAwMTIgMTRIMy45OTYzNUMyLjg5MDE5IDE0IDIgMTMuMTAzIDIgMTJWMTAuNUMyIDEwLjIyMzggMi4yMjM4NiA5Ljk5OTk3IDIuNSA5Ljk5OTk3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sT289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuODc3MDc1IDcuNDk5ODhDMC44NzcwNzUgMy44NDIxOSAzLjg0MjIyIDAuODc3MDQ1IDcuNDk5OTEgMC44NzcwNDVDMTEuMTU3NiAwLjg3NzA0NSAxNC4xMjI3IDMuODQyMTkgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgMTEuMTU3NSAxMS4xNTc2IDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzMuODQyMjIgMTQuMTIyNyAwLjg3NzA3NSAxMS4xNTc1IDAuODc3MDc1IDcuNDk5ODhaTTcuNDk5OTEgMS44MjcwNEM0LjM2Njg5IDEuODI3MDQgMS44MjcwOCA0LjM2Njg2IDEuODI3MDggNy40OTk4OEMxLjgyNzA4IDEwLjYzMjkgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0MxMC42MzI5IDEzLjE3MjcgMTMuMTcyNyAxMC42MzI5IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDQuMzY2ODYgMTAuNjMyOSAxLjgyNzA0IDcuNDk5OTEgMS44MjcwNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LExvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTg1IDAuODc3MDQ1QzMuODQyMTYgMC44NzcwNDUgMC44NzcwMTQgMy44NDIxOSAwLjg3NzAxNCA3LjQ5OTg4QzAuODc3MDE0IDkuMTQ4OCAxLjQ3OTYzIDEwLjY1NyAyLjQ3NjY1IDExLjgxNjJMMS42NDY0MyAxMi42NDY0QzEuNDUxMTcgMTIuODQxNyAxLjQ1MTE3IDEzLjE1ODMgMS42NDY0MyAxMy4zNTM1QzEuODQxNyAxMy41NDg4IDIuMTU4MjggMTMuNTQ4OCAyLjM1MzU0IDEzLjM1MzVMMy4xODM3NyAxMi41MjMzQzQuMzQyOTYgMTMuNTIwMiA1Ljg1MTA0IDE0LjEyMjcgNy40OTk4NSAxNC4xMjI3QzExLjE1NzUgMTQuMTIyNyAxNC4xMjI3IDExLjE1NzUgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgNS44NTEwNyAxMy41MjAyIDQuMzQyOTkgMTIuNTIzMyAzLjE4MzhMMTMuMzUzNSAyLjM1MzU0QzEzLjU0ODggMi4xNTgyNyAxMy41NDg4IDEuODQxNjkgMTMuMzUzNSAxLjY0NjQzQzEzLjE1ODMgMS40NTExNyAxMi44NDE3IDEuNDUxMTcgMTIuNjQ2NCAxLjY0NjQzTDExLjgxNjIgMi40NzY2OEMxMC42NTcgMS40Nzk2NiA5LjE0ODc3IDAuODc3MDQ1IDcuNDk5ODUgMC44NzcwNDVaTTExLjE0MjIgMy4xNTA2NkMxMC4xNTY3IDIuMzI0NDkgOC44ODYzOSAxLjgyNzA0IDcuNDk5ODUgMS44MjcwNEM0LjM2NjgzIDEuODI3MDQgMS44MjcwMSA0LjM2Njg2IDEuODI3MDEgNy40OTk4OEMxLjgyNzAxIDguODg2NDIgMi4zMjQ0NiAxMC4xNTY4IDMuMTUwNjMgMTEuMTQyMkwxMS4xNDIyIDMuMTUwNjZaTTMuODU3NzYgMTEuODQ5M0M0Ljg0MzE3IDEyLjY3NTMgNi4xMTM0MyAxMy4xNzI3IDcuNDk5ODUgMTMuMTcyN0MxMC42MzI4IDEzLjE3MjcgMTMuMTcyNyAxMC42MzI5IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDYuMTEzNDYgMTIuNjc1MyA0Ljg0MzIgMTEuODQ5MyAzLjg1Nzc5TDMuODU3NzYgMTEuODQ5M1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LF9vPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTk4IDFMNi45MjMyMSAyLjAwMzA3TDEuMTc0OTggMTJMMC41OTk5NzYgMTNIMS43NTM1SDEzLjI0NjRIMTQuNEwxMy44MjUgMTJMOC4wNzY3NCAyLjAwMzA3TDcuNDk5OTggMVpNNy40OTk5OCAzLjAwNjEzTDIuMzI4NSAxMkgxMi42NzE0TDcuNDk5OTggMy4wMDYxM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE1vPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00Ljc2NDQ3IDMuMTIxOTlDNS42MzE1MSAzLjA0ODU5IDYuNTYwODIgMyA3LjUgM0M4LjQzOTE4IDMgOS4zNjg0OSAzLjA0ODU5IDEwLjIzNTUgMy4xMjE5OUMxMS4yNzk2IDMuMjEwMzcgMTEuOTU1MyAzLjI3MDA4IDEyLjQ3MiAzLjM5MjAzQzEyLjk0MjUgMy41MDMwNCAxMy4yMDQ4IDMuNjQ5NzYgMTMuNDMwNiAzLjg4MDg2QzEzLjQ1NTMgMy45MDYxOCAxMy40OTAyIDMuOTQ0MTQgMTMuNTEzMyAzLjk3MDkyQzEzLjcxMjYgNC4yMDE0OSAxMy44NDM1IDQuNDg4NyAxMy45MTggNS4wMzI4M0MxMy45OTc4IDUuNjE1NiAxNCA2LjM3NjQ0IDE0IDcuNTI0OTNDMTQgOC42NjAyNiAxMy45OTc4IDkuNDEwMTkgMTMuOTE4MSA5Ljk4NTM4QzEzLjg0MzkgMTAuNTIwNiAxMy43MTM3IDEwLjgwNjEgMTMuNTEyNSAxMS4wMzg3QzEzLjQ4OTYgMTEuMDY1MSAxMy40NTQxIDExLjEwMzggMTMuNDI5NiAxMS4xMjg3QzEzLjIwMDkgMTEuMzYyNSAxMi45NDA2IDExLjUwNzYgMTIuNDgxOCAxMS42MTY0QzExLjk3NTIgMTEuNzM2NSAxMS4zMTQzIDExLjc5NDIgMTAuMjg3OCAxMS44Nzk3QzkuNDE5NDggMTEuOTUyMSA4LjQ3NTY2IDEyIDcuNSAxMkM2LjUyNDM0IDEyIDUuNTgwNTIgMTEuOTUyMSA0LjcxMjIgMTEuODc5N0MzLjY4NTcyIDExLjc5NDIgMy4wMjQ3NyAxMS43MzY1IDIuNTE4MTYgMTEuNjE2NEMyLjA1OTM2IDExLjUwNzYgMS43OTkxIDExLjM2MjUgMS41NzAzNyAxMS4xMjg3QzEuNTQ1OTMgMTEuMTAzOCAxLjUxMDM1IDExLjA2NTEgMS40ODc0OCAxMS4wMzg3QzEuMjg2MjggMTAuODA2MSAxLjE1NjEyIDEwLjUyMDYgMS4wODE5MyA5Ljk4NTM4QzEuMDAyMjEgOS40MTAxOSAxIDguNjYwMjYgMSA3LjUyNDkzQzEgNi4zNzY0NCAxLjAwMjE2IDUuNjE1NiAxLjA4MiA1LjAzMjgzQzEuMTU2NTQgNC40ODg3IDEuMjg3NDQgNC4yMDE0OSAxLjQ4NjY2IDMuOTcwOTJDMS41MDk4IDMuOTQ0MTQgMS41NDQ2OCAzLjkwNjE4IDEuNTY5NDIgMy44ODA4NkMxLjc5NTIgMy42NDk3NiAyLjA1NzUyIDMuNTAzMDQgMi41Mjc5NiAzLjM5MjAzQzMuMDQ0NzMgMy4yNzAwOCAzLjcyMDQgMy4yMTAzNyA0Ljc2NDQ3IDMuMTIxOTlaTTAgNy41MjQ5M0MwIDUuMjgyOTYgMCA0LjE2MTk4IDAuNzI5OTg1IDMuMzE3MTNDMC43NjY0NTcgMy4yNzQ5MSAwLjgxNTEzOSAzLjIyMTk0IDAuODU0MTIzIDMuMTgyMDRDMS42MzQzOSAyLjM4MzM5IDIuNjQ5NjMgMi4yOTc0NCA0LjY4MDEyIDIuMTI1NTVDNS41NjkyMyAyLjA1MDI4IDYuNTI3MjQgMiA3LjUgMkM4LjQ3Mjc2IDIgOS40MzA3NyAyLjA1MDI4IDEwLjMxOTkgMi4xMjU1NUMxMi4zNTA0IDIuMjk3NDQgMTMuMzY1NiAyLjM4MzM5IDE0LjE0NTkgMy4xODIwNEMxNC4xODQ5IDMuMjIxOTQgMTQuMjMzNSAzLjI3NDkxIDE0LjI3IDMuMzE3MTNDMTUgNC4xNjE5OCAxNSA1LjI4Mjk2IDE1IDcuNTI0OTNDMTUgOS43NDAxMiAxNSAxMC44NDc3IDE0LjI2ODggMTEuNjkyOUMxNC4yMzI2IDExLjczNDggMTQuMTgzMiAxMS43ODg1IDE0LjE0NDQgMTEuODI4MUMxMy4zNjI5IDEyLjYyNjkgMTIuMzY1NSAxMi43MSAxMC4zNzA5IDEyLjg3NjNDOS40Nzk3MSAxMi45NTA1IDguNTA3ODIgMTMgNy41IDEzQzYuNDkyMTggMTMgNS41MjAyOCAxMi45NTA1IDQuNjI5MTUgMTIuODc2M0MyLjYzNDQ2IDEyLjcxIDEuNjM3MTIgMTIuNjI2OSAwLjg1NTU1OCAxMS44MjgxQzAuODE2ODQ0IDExLjc4ODUgMC43Njc0NDIgMTEuNzM0OCAwLjczMTIyMSAxMS42OTI5QzAgMTAuODQ3NyAwIDkuNzQwMTIgMCA3LjUyNDkzWk01LjI1IDUuMzgyNjRDNS4yNSA1LjIwMjI1IDUuNDM1MjIgNS4wODEyNCA1LjYwMDQxIDUuMTUzNjlMMTAuNDI4IDcuMjcxMDVDMTAuNjI3NCA3LjM1ODUzIDEwLjYyNzQgNy42NDE0NyAxMC40MjggNy43Mjg5NUw1LjYwMDQxIDkuODQ2MzFDNS40MzUyMiA5LjkxODc2IDUuMjUgOS43OTc3NSA1LjI1IDkuNjE3MzZWNS4zODI2NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGpvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03IDJIMS41QzEuMjIzODYgMiAxIDIuMjIzODYgMSAyLjVWN0g3VjJaTTggMlY3SDE0VjIuNUMxNCAyLjIyMzg2IDEzLjc3NjEgMiAxMy41IDJIOFpNNyA4SDFWMTIuNUMxIDEyLjc3NjEgMS4yMjM4NiAxMyAxLjUgMTNIN1Y4Wk04IDEzVjhIMTRWMTIuNUMxNCAxMi43NzYxIDEzLjc3NjEgMTMgMTMuNSAxM0g4Wk0xLjUgMUMwLjY3MTU3MyAxIDAgMS42NzE1NyAwIDIuNVYxMi41QzAgMTMuMzI4NCAwLjY3MTU3MyAxNCAxLjUgMTRIMTMuNUMxNC4zMjg0IDE0IDE1IDEzLjMyODQgMTUgMTIuNVYyLjVDMTUgMS42NzE1NyAxNC4zMjg0IDEgMTMuNSAxSDEuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEVvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjUgMkgxMy41QzEzLjc3NjEgMiAxNCAyLjIyMzg2IDE0IDIuNVY3SDFWMi41QzEgMi4yMjM4NiAxLjIyMzg2IDIgMS41IDJaTTEgOFYxMi41QzEgMTIuNzc2MSAxLjIyMzg2IDEzIDEuNSAxM0gxMy41QzEzLjc3NjEgMTMgMTQgMTIuNzc2MSAxNCAxMi41VjhIMVpNMCAyLjVDMCAxLjY3MTU3IDAuNjcxNTczIDEgMS41IDFIMTMuNUMxNC4zMjg0IDEgMTUgMS42NzE1NyAxNSAyLjVWMTIuNUMxNSAxMy4zMjg0IDE0LjMyODQgMTQgMTMuNSAxNEgxLjVDMC42NzE1NzMgMTQgMCAxMy4zMjg0IDAgMTIuNVYyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxTbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTQgMi41ODcxMUwxLjg1MTYzIDEzSDEzLjVDMTMuNzc2MSAxMyAxNCAxMi43NzYxIDE0IDEyLjVWMi41ODcxMVpNMC43NjI4NzkgMTMuODA2N0wwLjgyNTM5NiAxMy44Nzk2TDAuODU0NzE3IDEzLjg1NDVDMS4wNTAxNyAxMy45NDc4IDEuMjY4OTkgMTQgMS41IDE0SDEzLjVDMTQuMzI4NCAxNCAxNSAxMy4zMjg0IDE1IDEyLjVWMi41QzE1IDEuOTM5NDkgMTQuNjkyNiAxLjQ1MDc4IDE0LjIzNzEgMS4xOTMzMUwxNC4xNzQ2IDEuMTIwMzdMMTQuMTQ1MyAxLjE0NTVDMTMuOTQ5OCAxLjA1MjIyIDEzLjczMSAxIDEzLjUgMUgxLjVDMC42NzE1NzMgMSAwIDEuNjcxNTcgMCAyLjVWMTIuNUMwIDEzLjA2MDUgMC4zMDc0MzUgMTMuNTQ5MiAwLjc2Mjg3OSAxMy44MDY3Wk0xIDEyLjQxMjlMMTMuMTQ4NCAySDEuNUMxLjIyMzg2IDIgMSAyLjIyMzg2IDEgMi41VjEyLjQxMjlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxQbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOCAySDEzLjVDMTMuNzc2MSAyIDE0IDIuMjIzODYgMTQgMi41VjEyLjVDMTQgMTIuNzc2MSAxMy43NzYxIDEzIDEzLjUgMTNIOFYyWk03IDJIMS41QzEuMjIzODYgMiAxIDIuMjIzODYgMSAyLjVWMTIuNUMxIDEyLjc3NjEgMS4yMjM4NiAxMyAxLjUgMTNIN1YyWk0wIDIuNUMwIDEuNjcxNTcgMC42NzE1NzMgMSAxLjUgMUgxMy41QzE0LjMyODQgMSAxNSAxLjY3MTU3IDE1IDIuNVYxMi41QzE1IDEzLjMyODQgMTQuMzI4NCAxNCAxMy41IDE0SDEuNUMwLjY3MTU3MyAxNCAwIDEzLjMyODQgMCAxMi41VjIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEhvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjgxODEyIDQuNjgxNjFDNC45OTM4NiA0Ljg1NzM0IDQuOTkzODYgNS4xNDIyNyA0LjgxODEyIDUuMzE4TDMuMDg2MzIgNy4wNDk4SDExLjkxMzVMMTAuMTgxNyA1LjMxOEMxMC4wMDYgNS4xNDIyNyAxMC4wMDYgNC44NTczNCAxMC4xODE3IDQuNjgxNjFDMTAuMzU3NSA0LjUwNTg3IDEwLjY0MjQgNC41MDU4NyAxMC44MTgxIDQuNjgxNjFMMTMuMzE4MSA3LjE4MTYxQzEzLjQ5MzkgNy4zNTczNCAxMy40OTM5IDcuNjQyMjcgMTMuMzE4MSA3LjgxOEwxMC44MTgxIDEwLjMxOEMxMC42NDI0IDEwLjQ5MzcgMTAuMzU3NSAxMC40OTM3IDEwLjE4MTcgMTAuMzE4QzEwLjAwNiAxMC4xNDIzIDEwLjAwNiA5Ljg1NzM0IDEwLjE4MTcgOS42ODE2MUwxMS45MTM1IDcuOTQ5OEgzLjA4NjMyTDQuODE4MTIgOS42ODE2MUM0Ljk5Mzg2IDkuODU3MzQgNC45OTM4NiAxMC4xNDIzIDQuODE4MTIgMTAuMzE4QzQuNjQyMzkgMTAuNDkzNyA0LjM1NzQ2IDEwLjQ5MzcgNC4xODE3MyAxMC4zMThMMS42ODE3MyA3LjgxOEMxLjUwNTk5IDcuNjQyMjcgMS41MDU5OSA3LjM1NzM0IDEuNjgxNzMgNy4xODE2MUw0LjE4MTczIDQuNjgxNjFDNC4zNTc0NiA0LjUwNTg3IDQuNjQyMzkgNC41MDU4NyA0LjgxODEyIDQuNjgxNjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxrbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAgNi41QzEwIDguNDMzIDguNDMzIDEwIDYuNSAxMEM0LjU2NyAxMCAzIDguNDMzIDMgNi41QzMgNC41NjcgNC41NjcgMyA2LjUgM0M4LjQzMyAzIDEwIDQuNTY3IDEwIDYuNVpNOS4zMDg4NCAxMC4wMTU5QzguNTM5MDEgMTAuNjMxOCA3LjU2MjUxIDExIDYuNSAxMUM0LjAxNDcyIDExIDIgOC45ODUyOCAyIDYuNUMyIDQuMDE0NzIgNC4wMTQ3MiAyIDYuNSAyQzguOTg1MjggMiAxMSA0LjAxNDcyIDExIDYuNUMxMSA3LjU2MjUxIDEwLjYzMTggOC41MzkwMSAxMC4wMTU5IDkuMzA4ODRMMTIuODUzNiAxMi4xNDY0QzEzLjA0ODggMTIuMzQxNyAxMy4wNDg4IDEyLjY1ODMgMTIuODUzNiAxMi44NTM2QzEyLjY1ODMgMTMuMDQ4OCAxMi4zNDE3IDEzLjA0ODggMTIuMTQ2NCAxMi44NTM2TDkuMzA4ODQgMTAuMDE1OVpNNC4yNSA2LjVDNC4yNSA2LjIyMzg2IDQuNDczODYgNiA0Ljc1IDZINlY0Ljc1QzYgNC40NzM4NiA2LjIyMzg2IDQuMjUgNi41IDQuMjVDNi43NzYxNCA0LjI1IDcgNC40NzM4NiA3IDQuNzVWNkg4LjI1QzguNTI2MTQgNiA4Ljc1IDYuMjIzODYgOC43NSA2LjVDOC43NSA2Ljc3NjE0IDguNTI2MTQgNyA4LjI1IDdIN1Y4LjI1QzcgOC41MjYxNCA2Ljc3NjE0IDguNzUgNi41IDguNzVDNi4yMjM4NiA4Ljc1IDYgOC41MjYxNCA2IDguMjVWN0g0Ljc1QzQuNDczODYgNyA0LjI1IDYuNzc2MTQgNC4yNSA2LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxWbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi41IDEwQzguNDMzIDEwIDEwIDguNDMzIDEwIDYuNUMxMCA0LjU2NyA4LjQzMyAzIDYuNSAzQzQuNTY3IDMgMyA0LjU2NyAzIDYuNUMzIDguNDMzIDQuNTY3IDEwIDYuNSAxMFpNNi41IDExQzcuNTYyNTEgMTEgOC41MzkwMSAxMC42MzE4IDkuMzA4ODQgMTAuMDE1OUwxMi4xNDY0IDEyLjg1MzZDMTIuMzQxNyAxMy4wNDg4IDEyLjY1ODMgMTMuMDQ4OCAxMi44NTM2IDEyLjg1MzZDMTMuMDQ4OCAxMi42NTgzIDEzLjA0ODggMTIuMzQxNyAxMi44NTM2IDEyLjE0NjRMMTAuMDE1OSA5LjMwODg0QzEwLjYzMTggOC41MzkwMSAxMSA3LjU2MjUxIDExIDYuNUMxMSA0LjAxNDcyIDguOTg1MjggMiA2LjUgMkM0LjAxNDcyIDIgMiA0LjAxNDcyIDIgNi41QzIgOC45ODUyOCA0LjAxNDcyIDExIDYuNSAxMVpNNC43NSA2QzQuNDczODYgNiA0LjI1IDYuMjIzODYgNC4yNSA2LjVDNC4yNSA2Ljc3NjE0IDQuNDczODYgNyA0Ljc1IDdIOC4yNUM4LjUyNjE0IDcgOC43NSA2Ljc3NjE0IDguNzUgNi41QzguNzUgNi4yMjM4NiA4LjUyNjE0IDYgOC4yNSA2SDQuNzVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfX0sNTI5OTooZSx0LG4pPT57bi5yKHQpLG4uZCh0LHtkZWZhdWx0OigpPT5sfSk7dmFyIHI9big4MDgxKSxvPW4ubihyKSxpPW4oMzY0NSksYT1uLm4oaSkoKShvKCkpO2EucHVzaChbZS5pZCxcIi5yZWFjdC1jYWxlbmRhciB7XFxuICB3aWR0aDogMzUwcHg7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNhMGEwOTY7XFxuICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcXG4gIGxpbmUtaGVpZ2h0OiAxLjEyNWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXItLWRvdWJsZVZpZXcge1xcbiAgd2lkdGg6IDcwMHB4O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXItLWRvdWJsZVZpZXcgLnJlYWN0LWNhbGVuZGFyX192aWV3Q29udGFpbmVyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBtYXJnaW46IC0wLjVlbTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyLS1kb3VibGVWaWV3IC5yZWFjdC1jYWxlbmRhcl9fdmlld0NvbnRhaW5lciA+ICoge1xcbiAgd2lkdGg6IDUwJTtcXG4gIG1hcmdpbjogMC41ZW07XFxufVxcbi5yZWFjdC1jYWxlbmRhcixcXG4ucmVhY3QtY2FsZW5kYXIgKixcXG4ucmVhY3QtY2FsZW5kYXIgKjpiZWZvcmUsXFxuLnJlYWN0LWNhbGVuZGFyICo6YWZ0ZXIge1xcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuLnJlYWN0LWNhbGVuZGFyIGJ1dHRvbiB7XFxuICBtYXJnaW46IDA7XFxuICBib3JkZXI6IDA7XFxuICBvdXRsaW5lOiBub25lO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXIgYnV0dG9uOmVuYWJsZWQ6aG92ZXIge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb24ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGhlaWdodDogNDRweDtcXG4gIG1hcmdpbi1ib3R0b206IDFlbTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uIGJ1dHRvbiB7XFxuICBtaW4td2lkdGg6IDQ0cHg7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb24gYnV0dG9uOmRpc2FibGVkIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiBidXR0b246ZW5hYmxlZDpob3ZlcixcXG4ucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb24gYnV0dG9uOmVuYWJsZWQ6Zm9jdXMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X193ZWVrZGF5cyB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICBmb250LXNpemU6IDAuNzVlbTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X193ZWVrZGF5c19fd2Vla2RheSB7XFxuICBwYWRkaW5nOiAwLjVlbTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X193ZWVrTnVtYmVycyAucmVhY3QtY2FsZW5kYXJfX3RpbGUge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGZvbnQtc2l6ZTogMC43NWVtO1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fZGF5c19fZGF5LS13ZWVrZW5kIHtcXG4gIGNvbG9yOiAjZDEwMDAwO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX2RheXNfX2RheS0tbmVpZ2hib3JpbmdNb250aCB7XFxuICBjb2xvcjogIzc1NzU3NTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX195ZWFyLXZpZXcgLnJlYWN0LWNhbGVuZGFyX190aWxlLFxcbi5yZWFjdC1jYWxlbmRhcl9fZGVjYWRlLXZpZXcgLnJlYWN0LWNhbGVuZGFyX190aWxlLFxcbi5yZWFjdC1jYWxlbmRhcl9fY2VudHVyeS12aWV3IC5yZWFjdC1jYWxlbmRhcl9fdGlsZSB7XFxuICBwYWRkaW5nOiAyZW0gMC41ZW07XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZSB7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICBwYWRkaW5nOiAxMHB4IDYuNjY2N3B4O1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGU6ZGlzYWJsZWQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlOmVuYWJsZWQ6aG92ZXIsXFxuLnJlYWN0LWNhbGVuZGFyX190aWxlOmVuYWJsZWQ6Zm9jdXMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1ub3cge1xcbiAgYmFja2dyb3VuZDogI2ZmZmY3NjtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1ub3c6ZW5hYmxlZDpob3ZlcixcXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLW5vdzplbmFibGVkOmZvY3VzIHtcXG4gIGJhY2tncm91bmQ6ICNmZmZmYTk7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0taGFzQWN0aXZlIHtcXG4gIGJhY2tncm91bmQ6ICM3NmJhZmY7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0taGFzQWN0aXZlOmVuYWJsZWQ6aG92ZXIsXFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1oYXNBY3RpdmU6ZW5hYmxlZDpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kOiAjYTlkNGZmO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kOiAjMDA2ZWRjO1xcbiAgY29sb3I6IHdoaXRlO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWFjdGl2ZTplbmFibGVkOmhvdmVyLFxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tYWN0aXZlOmVuYWJsZWQ6Zm9jdXMge1xcbiAgYmFja2dyb3VuZDogIzEwODdmZjtcXG59XFxuLnJlYWN0LWNhbGVuZGFyLS1zZWxlY3RSYW5nZSAucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XFxufVxcblwiLFwiXCJdKTtjb25zdCBsPWF9LDM2NDU6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1bXTtyZXR1cm4gdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49XCJcIixyPXZvaWQgMCE9PXRbNV07cmV0dXJuIHRbNF0mJihuKz1cIkBzdXBwb3J0cyAoXCIuY29uY2F0KHRbNF0sXCIpIHtcIikpLHRbMl0mJihuKz1cIkBtZWRpYSBcIi5jb25jYXQodFsyXSxcIiB7XCIpKSxyJiYobis9XCJAbGF5ZXJcIi5jb25jYXQodFs1XS5sZW5ndGg+MD9cIiBcIi5jb25jYXQodFs1XSk6XCJcIixcIiB7XCIpKSxuKz1lKHQpLHImJihuKz1cIn1cIiksdFsyXSYmKG4rPVwifVwiKSx0WzRdJiYobis9XCJ9XCIpLG59KSkuam9pbihcIlwiKX0sdC5pPWZ1bmN0aW9uKGUsbixyLG8saSl7XCJzdHJpbmdcIj09dHlwZW9mIGUmJihlPVtbbnVsbCxlLHZvaWQgMF1dKTt2YXIgYT17fTtpZihyKWZvcih2YXIgbD0wO2w8dGhpcy5sZW5ndGg7bCsrKXt2YXIgYz10aGlzW2xdWzBdO251bGwhPWMmJihhW2NdPSEwKX1mb3IodmFyIHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIHU9W10uY29uY2F0KGVbc10pO3ImJmFbdVswXV18fCh2b2lkIDAhPT1pJiYodm9pZCAwPT09dVs1XXx8KHVbMV09XCJAbGF5ZXJcIi5jb25jYXQodVs1XS5sZW5ndGg+MD9cIiBcIi5jb25jYXQodVs1XSk6XCJcIixcIiB7XCIpLmNvbmNhdCh1WzFdLFwifVwiKSksdVs1XT1pKSxuJiYodVsyXT8odVsxXT1cIkBtZWRpYSBcIi5jb25jYXQodVsyXSxcIiB7XCIpLmNvbmNhdCh1WzFdLFwifVwiKSx1WzJdPW4pOnVbMl09biksbyYmKHVbNF0/KHVbMV09XCJAc3VwcG9ydHMgKFwiLmNvbmNhdCh1WzRdLFwiKSB7XCIpLmNvbmNhdCh1WzFdLFwifVwiKSx1WzRdPW8pOnVbNF09XCJcIi5jb25jYXQobykpLHQucHVzaCh1KSl9fSx0fX0sODA4MTplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlWzFdfX0sNDQ4MzooZSx0LG4pPT57ZnVuY3Rpb24gcihlKXtyZXR1cm4gcj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxyKGUpfWZ1bmN0aW9uIG8oZSx0KXtyZXR1cm4gbz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LG8oZSx0KX1mdW5jdGlvbiBpKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiBlfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIGE9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LGEoZSl9ZnVuY3Rpb24gbChlKXt2YXIgdD1mdW5jdGlvbihlLHQpe2lmKFwib2JqZWN0XCIhPT1yKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09bil7dmFyIG89bi5jYWxsKGUsXCJzdHJpbmdcIik7aWYoXCJvYmplY3RcIiE9PXIobykpcmV0dXJuIG87dGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpfXJldHVybiBTdHJpbmcoZSl9KGUpO3JldHVyblwic3ltYm9sXCI9PT1yKHQpP3Q6U3RyaW5nKHQpfXZhciBjPW4oNjY4OSkscz1uKDU2OTcpLHU9big1MzAzKS5jcmVhdGVGb2N1c1RyYXAsZD1uKDgzODgpLmlzRm9jdXNhYmxlLGY9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInByb3RvdHlwZVwiLHt3cml0YWJsZTohMX0pLHQmJm8oZSx0KX0ocCxlKTt2YXIgdCxuLHMsdSxmPShzPXAsdT1mdW5jdGlvbigpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIGUsdD1hKHMpO2lmKHUpe3ZhciBuPWEodGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdCh0LGFyZ3VtZW50cyxuKX1lbHNlIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKFwib2JqZWN0XCI9PT1yKHQpfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4gaShlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIHAoZSl7dmFyIHQsbixyLG87IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxwKSxuPWkodD1mLmNhbGwodGhpcyxlKSksbz1mdW5jdGlvbihlKXt2YXIgdCxuPW51bGwhPT0odD10aGlzLmludGVybmFsT3B0aW9uc1tlXSkmJnZvaWQgMCE9PXQ/dDp0aGlzLm9yaWdpbmFsT3B0aW9uc1tlXTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuKXtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyPjE/ci0xOjApLGk9MTtpPHI7aSsrKW9baS0xXT1hcmd1bWVudHNbaV07bj1uLmFwcGx5KHZvaWQgMCxvKX1pZighMD09PW4mJihuPXZvaWQgMCksIW4pe2lmKHZvaWQgMD09PW58fCExPT09bilyZXR1cm4gbjt0aHJvdyBuZXcgRXJyb3IoXCJgXCIuY29uY2F0KGUsXCJgIHdhcyBzcGVjaWZpZWQgYnV0IHdhcyBub3QgYSBub2RlLCBvciBkaWQgbm90IHJldHVybiBhIG5vZGVcIikpfXZhciBhLGw9bjtpZihcInN0cmluZ1wiPT10eXBlb2YgbiYmIShsPW51bGw9PT0oYT10aGlzLmdldERvY3VtZW50KCkpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnF1ZXJ5U2VsZWN0b3IobikpKXRocm93IG5ldyBFcnJvcihcImBcIi5jb25jYXQoZSxcImAgYXMgc2VsZWN0b3IgcmVmZXJzIHRvIG5vIGtub3duIG5vZGVcIikpO3JldHVybiBsfSwocj1sKHI9XCJnZXROb2RlRm9yT3B0aW9uXCIpKWluIG4/T2JqZWN0LmRlZmluZVByb3BlcnR5KG4scix7dmFsdWU6byxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOm5bcl09byx0LmhhbmRsZURlYWN0aXZhdGU9dC5oYW5kbGVEZWFjdGl2YXRlLmJpbmQoaSh0KSksdC5oYW5kbGVQb3N0RGVhY3RpdmF0ZT10LmhhbmRsZVBvc3REZWFjdGl2YXRlLmJpbmQoaSh0KSksdC5oYW5kbGVDbGlja091dHNpZGVEZWFjdGl2YXRlcz10LmhhbmRsZUNsaWNrT3V0c2lkZURlYWN0aXZhdGVzLmJpbmQoaSh0KSksdC5pbnRlcm5hbE9wdGlvbnM9e3JldHVybkZvY3VzT25EZWFjdGl2YXRlOiExLGNoZWNrQ2FuUmV0dXJuRm9jdXM6bnVsbCxvbkRlYWN0aXZhdGU6dC5oYW5kbGVEZWFjdGl2YXRlLG9uUG9zdERlYWN0aXZhdGU6dC5oYW5kbGVQb3N0RGVhY3RpdmF0ZSxjbGlja091dHNpZGVEZWFjdGl2YXRlczp0LmhhbmRsZUNsaWNrT3V0c2lkZURlYWN0aXZhdGVzfSx0Lm9yaWdpbmFsT3B0aW9ucz17cmV0dXJuRm9jdXNPbkRlYWN0aXZhdGU6ITAsb25EZWFjdGl2YXRlOm51bGwsb25Qb3N0RGVhY3RpdmF0ZTpudWxsLGNoZWNrQ2FuUmV0dXJuRm9jdXM6bnVsbCxjbGlja091dHNpZGVEZWFjdGl2YXRlczohMX07dmFyIGE9ZS5mb2N1c1RyYXBPcHRpb25zO2Zvcih2YXIgYyBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpJiYoXCJyZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZVwiIT09YyYmXCJvbkRlYWN0aXZhdGVcIiE9PWMmJlwib25Qb3N0RGVhY3RpdmF0ZVwiIT09YyYmXCJjaGVja0NhblJldHVybkZvY3VzXCIhPT1jJiZcImNsaWNrT3V0c2lkZURlYWN0aXZhdGVzXCIhPT1jP3QuaW50ZXJuYWxPcHRpb25zW2NdPWFbY106dC5vcmlnaW5hbE9wdGlvbnNbY109YVtjXSk7cmV0dXJuIHQub3V0c2lkZUNsaWNrPW51bGwsdC5mb2N1c1RyYXBFbGVtZW50cz1lLmNvbnRhaW5lckVsZW1lbnRzfHxbXSx0LnVwZGF0ZVByZXZpb3VzRWxlbWVudCgpLHR9cmV0dXJuIHQ9cCwobj1be2tleTpcImdldERvY3VtZW50XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5mb2N1c1RyYXBPcHRpb25zLmRvY3VtZW50fHwoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OnZvaWQgMCl9fSx7a2V5OlwiZ2V0UmV0dXJuRm9jdXNOb2RlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldE5vZGVGb3JPcHRpb24oXCJzZXRSZXR1cm5Gb2N1c1wiLHRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50KTtyZXR1cm4gZXx8ITEhPT1lJiZ0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudH19LHtrZXk6XCJ1cGRhdGVQcmV2aW91c0VsZW1lbnRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0RG9jdW1lbnQoKTtlJiYodGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ9ZS5hY3RpdmVFbGVtZW50KX19LHtrZXk6XCJkZWFjdGl2YXRlVHJhcFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5mb2N1c1RyYXAmJnRoaXMuZm9jdXNUcmFwLmFjdGl2ZSYmdGhpcy5mb2N1c1RyYXAuZGVhY3RpdmF0ZSh7cmV0dXJuRm9jdXM6ITEsY2hlY2tDYW5SZXR1cm5Gb2N1czpudWxsLG9uRGVhY3RpdmF0ZTp0aGlzLm9yaWdpbmFsT3B0aW9ucy5vbkRlYWN0aXZhdGV9KX19LHtrZXk6XCJoYW5kbGVDbGlja091dHNpZGVEZWFjdGl2YXRlc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMub3JpZ2luYWxPcHRpb25zLmNsaWNrT3V0c2lkZURlYWN0aXZhdGVzP3RoaXMub3JpZ2luYWxPcHRpb25zLmNsaWNrT3V0c2lkZURlYWN0aXZhdGVzLmNhbGwobnVsbCxlKTp0aGlzLm9yaWdpbmFsT3B0aW9ucy5jbGlja091dHNpZGVEZWFjdGl2YXRlcztyZXR1cm4gdCYmKHRoaXMub3V0c2lkZUNsaWNrPXt0YXJnZXQ6ZS50YXJnZXQsYWxsb3dEZWFjdGl2YXRpb246dH0pLHR9fSx7a2V5OlwiaGFuZGxlRGVhY3RpdmF0ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5vcmlnaW5hbE9wdGlvbnMub25EZWFjdGl2YXRlJiZ0aGlzLm9yaWdpbmFsT3B0aW9ucy5vbkRlYWN0aXZhdGUuY2FsbChudWxsKSx0aGlzLmRlYWN0aXZhdGVUcmFwKCl9fSx7a2V5OlwiaGFuZGxlUG9zdERlYWN0aXZhdGVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1mdW5jdGlvbigpe3ZhciB0PWUuZ2V0UmV0dXJuRm9jdXNOb2RlKCksbj0hKCFlLm9yaWdpbmFsT3B0aW9ucy5yZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZXx8bnVsbD09dHx8IXQuZm9jdXN8fGUub3V0c2lkZUNsaWNrJiYoIWUub3V0c2lkZUNsaWNrLmFsbG93RGVhY3RpdmF0aW9ufHxkKGUub3V0c2lkZUNsaWNrLnRhcmdldCxlLmludGVybmFsT3B0aW9ucy50YWJiYWJsZU9wdGlvbnMpKSkscj1lLmludGVybmFsT3B0aW9ucy5wcmV2ZW50U2Nyb2xsLG89dm9pZCAwIT09ciYmcjtuJiZ0LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOm99KSxlLm9yaWdpbmFsT3B0aW9ucy5vblBvc3REZWFjdGl2YXRlJiZlLm9yaWdpbmFsT3B0aW9ucy5vblBvc3REZWFjdGl2YXRlLmNhbGwobnVsbCksZS5vdXRzaWRlQ2xpY2s9bnVsbH07dGhpcy5vcmlnaW5hbE9wdGlvbnMuY2hlY2tDYW5SZXR1cm5Gb2N1cz90aGlzLm9yaWdpbmFsT3B0aW9ucy5jaGVja0NhblJldHVybkZvY3VzLmNhbGwobnVsbCx0aGlzLmdldFJldHVybkZvY3VzTm9kZSgpKS50aGVuKHQsdCk6dCgpfX0se2tleTpcInNldHVwRm9jdXNUcmFwXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmZvY3VzVHJhcD90aGlzLnByb3BzLmFjdGl2ZSYmIXRoaXMuZm9jdXNUcmFwLmFjdGl2ZSYmKHRoaXMuZm9jdXNUcmFwLmFjdGl2YXRlKCksdGhpcy5wcm9wcy5wYXVzZWQmJnRoaXMuZm9jdXNUcmFwLnBhdXNlKCkpOnRoaXMuZm9jdXNUcmFwRWxlbWVudHMuc29tZShCb29sZWFuKSYmKHRoaXMuZm9jdXNUcmFwPXRoaXMucHJvcHMuX2NyZWF0ZUZvY3VzVHJhcCh0aGlzLmZvY3VzVHJhcEVsZW1lbnRzLHRoaXMuaW50ZXJuYWxPcHRpb25zKSx0aGlzLnByb3BzLmFjdGl2ZSYmdGhpcy5mb2N1c1RyYXAuYWN0aXZhdGUoKSx0aGlzLnByb3BzLnBhdXNlZCYmdGhpcy5mb2N1c1RyYXAucGF1c2UoKSl9fSx7a2V5OlwiY29tcG9uZW50RGlkTW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucHJvcHMuYWN0aXZlJiZ0aGlzLnNldHVwRm9jdXNUcmFwKCl9fSx7a2V5OlwiY29tcG9uZW50RGlkVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYodGhpcy5mb2N1c1RyYXApe2UuY29udGFpbmVyRWxlbWVudHMhPT10aGlzLnByb3BzLmNvbnRhaW5lckVsZW1lbnRzJiZ0aGlzLmZvY3VzVHJhcC51cGRhdGVDb250YWluZXJFbGVtZW50cyh0aGlzLnByb3BzLmNvbnRhaW5lckVsZW1lbnRzKTt2YXIgdD0hZS5hY3RpdmUmJnRoaXMucHJvcHMuYWN0aXZlLG49ZS5hY3RpdmUmJiF0aGlzLnByb3BzLmFjdGl2ZSxyPSFlLnBhdXNlZCYmdGhpcy5wcm9wcy5wYXVzZWQsbz1lLnBhdXNlZCYmIXRoaXMucHJvcHMucGF1c2VkO2lmKHQmJih0aGlzLnVwZGF0ZVByZXZpb3VzRWxlbWVudCgpLHRoaXMuZm9jdXNUcmFwLmFjdGl2YXRlKCkpLG4pcmV0dXJuIHZvaWQgdGhpcy5kZWFjdGl2YXRlVHJhcCgpO3ImJnRoaXMuZm9jdXNUcmFwLnBhdXNlKCksbyYmdGhpcy5mb2N1c1RyYXAudW5wYXVzZSgpfWVsc2UgZS5jb250YWluZXJFbGVtZW50cyE9PXRoaXMucHJvcHMuY29udGFpbmVyRWxlbWVudHMmJih0aGlzLmZvY3VzVHJhcEVsZW1lbnRzPXRoaXMucHJvcHMuY29udGFpbmVyRWxlbWVudHMpLHRoaXMucHJvcHMuYWN0aXZlJiYodGhpcy51cGRhdGVQcmV2aW91c0VsZW1lbnQoKSx0aGlzLnNldHVwRm9jdXNUcmFwKCkpfX0se2tleTpcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRlYWN0aXZhdGVUcmFwKCl9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcy5jaGlsZHJlbj9jLkNoaWxkcmVuLm9ubHkodGhpcy5wcm9wcy5jaGlsZHJlbik6dm9pZCAwO2lmKHQpe2lmKHQudHlwZSYmdC50eXBlPT09Yy5GcmFnbWVudCl0aHJvdyBuZXcgRXJyb3IoXCJBIGZvY3VzLXRyYXAgY2Fubm90IHVzZSBhIEZyYWdtZW50IGFzIGl0cyBjaGlsZCBjb250YWluZXIuIFRyeSByZXBsYWNpbmcgaXQgd2l0aCBhIDxkaXY+IGVsZW1lbnQuXCIpO3JldHVybiBjLmNsb25lRWxlbWVudCh0LHtyZWY6ZnVuY3Rpb24obil7dmFyIHI9ZS5wcm9wcy5jb250YWluZXJFbGVtZW50czt0JiYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC5yZWY/dC5yZWYobik6dC5yZWYmJih0LnJlZi5jdXJyZW50PW4pKSxlLmZvY3VzVHJhcEVsZW1lbnRzPXJ8fFtuXX19KX1yZXR1cm4gbnVsbH19XSkmJmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGwoci5rZXkpLHIpfX0odC5wcm90b3R5cGUsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSxwfShjLkNvbXBvbmVudCkscD1cInVuZGVmaW5lZFwiPT10eXBlb2YgRWxlbWVudD9GdW5jdGlvbjpFbGVtZW50O2YucHJvcFR5cGVzPXthY3RpdmU6cy5ib29sLHBhdXNlZDpzLmJvb2wsZm9jdXNUcmFwT3B0aW9uczpzLnNoYXBlKHtkb2N1bWVudDpzLm9iamVjdCxvbkFjdGl2YXRlOnMuZnVuYyxvblBvc3RBY3RpdmF0ZTpzLmZ1bmMsY2hlY2tDYW5Gb2N1c1RyYXA6cy5mdW5jLG9uRGVhY3RpdmF0ZTpzLmZ1bmMsb25Qb3N0RGVhY3RpdmF0ZTpzLmZ1bmMsY2hlY2tDYW5SZXR1cm5Gb2N1czpzLmZ1bmMsaW5pdGlhbEZvY3VzOnMub25lT2ZUeXBlKFtzLmluc3RhbmNlT2YocCkscy5zdHJpbmcscy5ib29sLHMuZnVuY10pLGZhbGxiYWNrRm9jdXM6cy5vbmVPZlR5cGUoW3MuaW5zdGFuY2VPZihwKSxzLnN0cmluZyxzLmZ1bmNdKSxlc2NhcGVEZWFjdGl2YXRlczpzLm9uZU9mVHlwZShbcy5ib29sLHMuZnVuY10pLGNsaWNrT3V0c2lkZURlYWN0aXZhdGVzOnMub25lT2ZUeXBlKFtzLmJvb2wscy5mdW5jXSkscmV0dXJuRm9jdXNPbkRlYWN0aXZhdGU6cy5ib29sLHNldFJldHVybkZvY3VzOnMub25lT2ZUeXBlKFtzLmluc3RhbmNlT2YocCkscy5zdHJpbmcscy5ib29sLHMuZnVuY10pLGFsbG93T3V0c2lkZUNsaWNrOnMub25lT2ZUeXBlKFtzLmJvb2wscy5mdW5jXSkscHJldmVudFNjcm9sbDpzLmJvb2wsdGFiYmFibGVPcHRpb25zOnMuc2hhcGUoe2Rpc3BsYXlDaGVjazpzLm9uZU9mKFtcImZ1bGxcIixcImxlZ2FjeS1mdWxsXCIsXCJub24temVyby1hcmVhXCIsXCJub25lXCJdKSxnZXRTaGFkb3dSb290OnMub25lT2ZUeXBlKFtzLmJvb2wscy5mdW5jXSl9KSx0cmFwU3RhY2s6cy5hcnJheSxpc0tleUZvcndhcmQ6cy5mdW5jLGlzS2V5QmFja3dhcmQ6cy5mdW5jfSksY29udGFpbmVyRWxlbWVudHM6cy5hcnJheU9mKHMuaW5zdGFuY2VPZihwKSksY2hpbGRyZW46cy5vbmVPZlR5cGUoW3MuZWxlbWVudCxzLmluc3RhbmNlT2YocCldKX0sZi5kZWZhdWx0UHJvcHM9e2FjdGl2ZTohMCxwYXVzZWQ6ITEsZm9jdXNUcmFwT3B0aW9uczp7fSxfY3JlYXRlRm9jdXNUcmFwOnV9LGUuZXhwb3J0cz1mfSw1MzAzOihlLHQsbik9PntuLnIodCksbi5kKHQse2NyZWF0ZUZvY3VzVHJhcDooKT0+aH0pO3ZhciByPW4oODM4OCk7ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gaShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9vKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7YShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6byhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBhKGUsdCxuKXtyZXR1cm4odD1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQpe2lmKFwib2JqZWN0XCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09bil7dmFyIHI9bi5jYWxsKGUsXCJzdHJpbmdcIik7aWYoXCJvYmplY3RcIiE9dHlwZW9mIHIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpfXJldHVybiBTdHJpbmcoZSl9KGUpO3JldHVyblwic3ltYm9sXCI9PXR5cGVvZiB0P3Q6U3RyaW5nKHQpfSh0KSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgbD1mdW5jdGlvbihlKXtyZXR1cm5cIlRhYlwiPT09ZS5rZXl8fDk9PT1lLmtleUNvZGV9LGM9ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSkmJiFlLnNoaWZ0S2V5fSxzPWZ1bmN0aW9uKGUpe3JldHVybiBsKGUpJiZlLnNoaWZ0S2V5fSx1PWZ1bmN0aW9uKGUpe3JldHVybiBzZXRUaW1lb3V0KGUsMCl9LGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj0tMTtyZXR1cm4gZS5ldmVyeSgoZnVuY3Rpb24oZSxyKXtyZXR1cm4hdChlKXx8KG49ciwhMSl9KSksbn0sZj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0PjE/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZT9lLmFwcGx5KHZvaWQgMCxuKTplfSxwPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRhcmdldC5zaGFkb3dSb290JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbXBvc2VkUGF0aD9lLmNvbXBvc2VkUGF0aCgpWzBdOmUudGFyZ2V0fSxDPVtdLGg9ZnVuY3Rpb24oZSx0KXt2YXIgbixvPShudWxsPT10P3ZvaWQgMDp0LmRvY3VtZW50KXx8ZG9jdW1lbnQsYT0obnVsbD09dD92b2lkIDA6dC50cmFwU3RhY2spfHxDLGg9aSh7cmV0dXJuRm9jdXNPbkRlYWN0aXZhdGU6ITAsZXNjYXBlRGVhY3RpdmF0ZXM6ITAsZGVsYXlJbml0aWFsRm9jdXM6ITAsaXNLZXlGb3J3YXJkOmMsaXNLZXlCYWNrd2FyZDpzfSx0KSx2PXtjb250YWluZXJzOltdLGNvbnRhaW5lckdyb3VwczpbXSx0YWJiYWJsZUdyb3VwczpbXSxub2RlRm9jdXNlZEJlZm9yZUFjdGl2YXRpb246bnVsbCxtb3N0UmVjZW50bHlGb2N1c2VkTm9kZTpudWxsLGFjdGl2ZTohMSxwYXVzZWQ6ITEsZGVsYXlJbml0aWFsRm9jdXNUaW1lcjp2b2lkIDB9LGc9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlJiZ2b2lkIDAhPT1lW3RdP2VbdF06aFtufHx0XX0sbT1mdW5jdGlvbihlKXtyZXR1cm4gdi5jb250YWluZXJHcm91cHMuZmluZEluZGV4KChmdW5jdGlvbih0KXt2YXIgbj10LmNvbnRhaW5lcixyPXQudGFiYmFibGVOb2RlcztyZXR1cm4gbi5jb250YWlucyhlKXx8ci5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdD09PWV9KSl9KSl9LHc9ZnVuY3Rpb24oZSl7dmFyIHQ9aFtlXTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShuPjE/bi0xOjApLGk9MTtpPG47aSsrKXJbaS0xXT1hcmd1bWVudHNbaV07dD10LmFwcGx5KHZvaWQgMCxyKX1pZighMD09PXQmJih0PXZvaWQgMCksIXQpe2lmKHZvaWQgMD09PXR8fCExPT09dClyZXR1cm4gdDt0aHJvdyBuZXcgRXJyb3IoXCJgXCIuY29uY2F0KGUsXCJgIHdhcyBzcGVjaWZpZWQgYnV0IHdhcyBub3QgYSBub2RlLCBvciBkaWQgbm90IHJldHVybiBhIG5vZGVcIikpfXZhciBhPXQ7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQmJiEoYT1vLnF1ZXJ5U2VsZWN0b3IodCkpKXRocm93IG5ldyBFcnJvcihcImBcIi5jb25jYXQoZSxcImAgYXMgc2VsZWN0b3IgcmVmZXJzIHRvIG5vIGtub3duIG5vZGVcIikpO3JldHVybiBhfSx5PWZ1bmN0aW9uKCl7dmFyIGU9dyhcImluaXRpYWxGb2N1c1wiKTtpZighMT09PWUpcmV0dXJuITE7aWYodm9pZCAwPT09ZSlpZihtKG8uYWN0aXZlRWxlbWVudCk+PTApZT1vLmFjdGl2ZUVsZW1lbnQ7ZWxzZXt2YXIgdD12LnRhYmJhYmxlR3JvdXBzWzBdO2U9dCYmdC5maXJzdFRhYmJhYmxlTm9kZXx8dyhcImZhbGxiYWNrRm9jdXNcIil9aWYoIWUpdGhyb3cgbmV3IEVycm9yKFwiWW91ciBmb2N1cy10cmFwIG5lZWRzIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGZvY3VzYWJsZSBlbGVtZW50XCIpO3JldHVybiBlfSxiPWZ1bmN0aW9uKCl7aWYodi5jb250YWluZXJHcm91cHM9di5jb250YWluZXJzLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQ9KDAsci50YWJiYWJsZSkoZSxoLnRhYmJhYmxlT3B0aW9ucyksbj0oMCxyLmZvY3VzYWJsZSkoZSxoLnRhYmJhYmxlT3B0aW9ucyk7cmV0dXJue2NvbnRhaW5lcjplLHRhYmJhYmxlTm9kZXM6dCxmb2N1c2FibGVOb2RlczpuLGZpcnN0VGFiYmFibGVOb2RlOnQubGVuZ3RoPjA/dFswXTpudWxsLGxhc3RUYWJiYWJsZU5vZGU6dC5sZW5ndGg+MD90W3QubGVuZ3RoLTFdOm51bGwsbmV4dFRhYmJhYmxlTm9kZTpmdW5jdGlvbihlKXt2YXIgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLG89bi5maW5kSW5kZXgoKGZ1bmN0aW9uKHQpe3JldHVybiB0PT09ZX0pKTtpZighKG88MCkpcmV0dXJuIHQ/bi5zbGljZShvKzEpLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybigwLHIuaXNUYWJiYWJsZSkoZSxoLnRhYmJhYmxlT3B0aW9ucyl9KSk6bi5zbGljZSgwLG8pLnJldmVyc2UoKS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4oMCxyLmlzVGFiYmFibGUpKGUsaC50YWJiYWJsZU9wdGlvbnMpfSkpfX19KSksdi50YWJiYWJsZUdyb3Vwcz12LmNvbnRhaW5lckdyb3Vwcy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRhYmJhYmxlTm9kZXMubGVuZ3RoPjB9KSksdi50YWJiYWJsZUdyb3Vwcy5sZW5ndGg8PTAmJiF3KFwiZmFsbGJhY2tGb2N1c1wiKSl0aHJvdyBuZXcgRXJyb3IoXCJZb3VyIGZvY3VzLXRyYXAgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBjb250YWluZXIgd2l0aCBhdCBsZWFzdCBvbmUgdGFiYmFibGUgbm9kZSBpbiBpdCBhdCBhbGwgdGltZXNcIil9LHg9ZnVuY3Rpb24gZSh0KXshMSE9PXQmJnQhPT1vLmFjdGl2ZUVsZW1lbnQmJih0JiZ0LmZvY3VzPyh0LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEhaC5wcmV2ZW50U2Nyb2xsfSksdi5tb3N0UmVjZW50bHlGb2N1c2VkTm9kZT10LGZ1bmN0aW9uKGUpe3JldHVybiBlLnRhZ05hbWUmJlwiaW5wdXRcIj09PWUudGFnTmFtZS50b0xvd2VyQ2FzZSgpJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnNlbGVjdH0odCkmJnQuc2VsZWN0KCkpOmUoeSgpKSl9LE89ZnVuY3Rpb24oZSl7dmFyIHQ9dyhcInNldFJldHVybkZvY3VzXCIsZSk7cmV0dXJuIHR8fCExIT09dCYmZX0sTD1mdW5jdGlvbihlKXt2YXIgdD1wKGUpO20odCk+PTB8fChmKGguY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXMsZSk/bi5kZWFjdGl2YXRlKHtyZXR1cm5Gb2N1czpoLnJldHVybkZvY3VzT25EZWFjdGl2YXRlfSk6ZihoLmFsbG93T3V0c2lkZUNsaWNrLGUpfHxlLnByZXZlbnREZWZhdWx0KCkpfSxfPWZ1bmN0aW9uKGUpe3ZhciB0PXAoZSksbj1tKHQpPj0wO258fHQgaW5zdGFuY2VvZiBEb2N1bWVudD9uJiYodi5tb3N0UmVjZW50bHlGb2N1c2VkTm9kZT10KTooZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx4KHYubW9zdFJlY2VudGx5Rm9jdXNlZE5vZGV8fHkoKSkpfSxNPWZ1bmN0aW9uKGUpe2lmKChcIkVzY2FwZVwiPT09KHQ9ZSkua2V5fHxcIkVzY1wiPT09dC5rZXl8fDI3PT09dC5rZXlDb2RlKSYmITEhPT1mKGguZXNjYXBlRGVhY3RpdmF0ZXMsZSkpcmV0dXJuIGUucHJldmVudERlZmF1bHQoKSx2b2lkIG4uZGVhY3RpdmF0ZSgpO3ZhciB0OyhoLmlzS2V5Rm9yd2FyZChlKXx8aC5pc0tleUJhY2t3YXJkKGUpKSYmZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxuPXAoZSk7YigpO3ZhciBvPW51bGw7aWYodi50YWJiYWJsZUdyb3Vwcy5sZW5ndGg+MCl7dmFyIGk9bShuKSxhPWk+PTA/di5jb250YWluZXJHcm91cHNbaV06dm9pZCAwO2lmKGk8MClvPXQ/di50YWJiYWJsZUdyb3Vwc1t2LnRhYmJhYmxlR3JvdXBzLmxlbmd0aC0xXS5sYXN0VGFiYmFibGVOb2RlOnYudGFiYmFibGVHcm91cHNbMF0uZmlyc3RUYWJiYWJsZU5vZGU7ZWxzZSBpZih0KXt2YXIgYz1kKHYudGFiYmFibGVHcm91cHMsKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZmlyc3RUYWJiYWJsZU5vZGU7cmV0dXJuIG49PT10fSkpO2lmKGM8MCYmKGEuY29udGFpbmVyPT09bnx8KDAsci5pc0ZvY3VzYWJsZSkobixoLnRhYmJhYmxlT3B0aW9ucykmJiEoMCxyLmlzVGFiYmFibGUpKG4saC50YWJiYWJsZU9wdGlvbnMpJiYhYS5uZXh0VGFiYmFibGVOb2RlKG4sITEpKSYmKGM9aSksYz49MCl7dmFyIHM9MD09PWM/di50YWJiYWJsZUdyb3Vwcy5sZW5ndGgtMTpjLTE7bz12LnRhYmJhYmxlR3JvdXBzW3NdLmxhc3RUYWJiYWJsZU5vZGV9ZWxzZSBsKGUpfHwobz1hLm5leHRUYWJiYWJsZU5vZGUobiwhMSkpfWVsc2V7dmFyIHU9ZCh2LnRhYmJhYmxlR3JvdXBzLChmdW5jdGlvbihlKXt2YXIgdD1lLmxhc3RUYWJiYWJsZU5vZGU7cmV0dXJuIG49PT10fSkpO2lmKHU8MCYmKGEuY29udGFpbmVyPT09bnx8KDAsci5pc0ZvY3VzYWJsZSkobixoLnRhYmJhYmxlT3B0aW9ucykmJiEoMCxyLmlzVGFiYmFibGUpKG4saC50YWJiYWJsZU9wdGlvbnMpJiYhYS5uZXh0VGFiYmFibGVOb2RlKG4pKSYmKHU9aSksdT49MCl7dmFyIGY9dT09PXYudGFiYmFibGVHcm91cHMubGVuZ3RoLTE/MDp1KzE7bz12LnRhYmJhYmxlR3JvdXBzW2ZdLmZpcnN0VGFiYmFibGVOb2RlfWVsc2UgbChlKXx8KG89YS5uZXh0VGFiYmFibGVOb2RlKG4pKX19ZWxzZSBvPXcoXCJmYWxsYmFja0ZvY3VzXCIpO28mJihsKGUpJiZlLnByZXZlbnREZWZhdWx0KCkseChvKSl9KGUsaC5pc0tleUJhY2t3YXJkKGUpKX0saj1mdW5jdGlvbihlKXt2YXIgdD1wKGUpO20odCk+PTB8fGYoaC5jbGlja091dHNpZGVEZWFjdGl2YXRlcyxlKXx8ZihoLmFsbG93T3V0c2lkZUNsaWNrLGUpfHwoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfSxFPWZ1bmN0aW9uKCl7aWYodi5hY3RpdmUpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoZS5sZW5ndGg+MCl7dmFyIG49ZVtlLmxlbmd0aC0xXTtuIT09dCYmbi5wYXVzZSgpfXZhciByPWUuaW5kZXhPZih0KTstMT09PXJ8fGUuc3BsaWNlKHIsMSksZS5wdXNoKHQpfShhLG4pLHYuZGVsYXlJbml0aWFsRm9jdXNUaW1lcj1oLmRlbGF5SW5pdGlhbEZvY3VzP3UoKGZ1bmN0aW9uKCl7eCh5KCkpfSkpOngoeSgpKSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsXywhMCksby5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsTCx7Y2FwdHVyZTohMCxwYXNzaXZlOiExfSksby5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLEwse2NhcHR1cmU6ITAscGFzc2l2ZTohMX0pLG8uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsaix7Y2FwdHVyZTohMCxwYXNzaXZlOiExfSksby5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLE0se2NhcHR1cmU6ITAscGFzc2l2ZTohMX0pLG59LFM9ZnVuY3Rpb24oKXtpZih2LmFjdGl2ZSlyZXR1cm4gby5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNpblwiLF8sITApLG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLEwsITApLG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIixMLCEwKSxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLGosITApLG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixNLCEwKSxufTtyZXR1cm4obj17Z2V0IGFjdGl2ZSgpe3JldHVybiB2LmFjdGl2ZX0sZ2V0IHBhdXNlZCgpe3JldHVybiB2LnBhdXNlZH0sYWN0aXZhdGU6ZnVuY3Rpb24oZSl7aWYodi5hY3RpdmUpcmV0dXJuIHRoaXM7dmFyIHQ9ZyhlLFwib25BY3RpdmF0ZVwiKSxuPWcoZSxcIm9uUG9zdEFjdGl2YXRlXCIpLHI9ZyhlLFwiY2hlY2tDYW5Gb2N1c1RyYXBcIik7cnx8YigpLHYuYWN0aXZlPSEwLHYucGF1c2VkPSExLHYubm9kZUZvY3VzZWRCZWZvcmVBY3RpdmF0aW9uPW8uYWN0aXZlRWxlbWVudCx0JiZ0KCk7dmFyIGk9ZnVuY3Rpb24oKXtyJiZiKCksRSgpLG4mJm4oKX07cmV0dXJuIHI/KHIodi5jb250YWluZXJzLmNvbmNhdCgpKS50aGVuKGksaSksdGhpcyk6KGkoKSx0aGlzKX0sZGVhY3RpdmF0ZTpmdW5jdGlvbihlKXtpZighdi5hY3RpdmUpcmV0dXJuIHRoaXM7dmFyIHQ9aSh7b25EZWFjdGl2YXRlOmgub25EZWFjdGl2YXRlLG9uUG9zdERlYWN0aXZhdGU6aC5vblBvc3REZWFjdGl2YXRlLGNoZWNrQ2FuUmV0dXJuRm9jdXM6aC5jaGVja0NhblJldHVybkZvY3VzfSxlKTtjbGVhclRpbWVvdXQodi5kZWxheUluaXRpYWxGb2N1c1RpbWVyKSx2LmRlbGF5SW5pdGlhbEZvY3VzVGltZXI9dm9pZCAwLFMoKSx2LmFjdGl2ZT0hMSx2LnBhdXNlZD0hMSxmdW5jdGlvbihlLHQpe3ZhciBuPWUuaW5kZXhPZih0KTstMSE9PW4mJmUuc3BsaWNlKG4sMSksZS5sZW5ndGg+MCYmZVtlLmxlbmd0aC0xXS51bnBhdXNlKCl9KGEsbik7dmFyIHI9Zyh0LFwib25EZWFjdGl2YXRlXCIpLG89Zyh0LFwib25Qb3N0RGVhY3RpdmF0ZVwiKSxsPWcodCxcImNoZWNrQ2FuUmV0dXJuRm9jdXNcIiksYz1nKHQsXCJyZXR1cm5Gb2N1c1wiLFwicmV0dXJuRm9jdXNPbkRlYWN0aXZhdGVcIik7ciYmcigpO3ZhciBzPWZ1bmN0aW9uKCl7dSgoZnVuY3Rpb24oKXtjJiZ4KE8odi5ub2RlRm9jdXNlZEJlZm9yZUFjdGl2YXRpb24pKSxvJiZvKCl9KSl9O3JldHVybiBjJiZsPyhsKE8odi5ub2RlRm9jdXNlZEJlZm9yZUFjdGl2YXRpb24pKS50aGVuKHMscyksdGhpcyk6KHMoKSx0aGlzKX0scGF1c2U6ZnVuY3Rpb24oKXtyZXR1cm4gdi5wYXVzZWR8fCF2LmFjdGl2ZXx8KHYucGF1c2VkPSEwLFMoKSksdGhpc30sdW5wYXVzZTpmdW5jdGlvbigpe3JldHVybiB2LnBhdXNlZCYmdi5hY3RpdmU/KHYucGF1c2VkPSExLGIoKSxFKCksdGhpcyk6dGhpc30sdXBkYXRlQ29udGFpbmVyRWxlbWVudHM6ZnVuY3Rpb24oZSl7dmFyIHQ9W10uY29uY2F0KGUpLmZpbHRlcihCb29sZWFuKTtyZXR1cm4gdi5jb250YWluZXJzPXQubWFwKChmdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9vLnF1ZXJ5U2VsZWN0b3IoZSk6ZX0pKSx2LmFjdGl2ZSYmYigpLHRoaXN9fSkudXBkYXRlQ29udGFpbmVyRWxlbWVudHMoZSksbn19LDkxNDE6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPW4oNjU1KSxvPW4oNjY4OSksaT1uKDQzOTQpLGE9bigzNTczKSxsPW4oOTI5NCksYz1uKDQ4MzkpO2Z1bmN0aW9uIHMoZSl7cmV0dXJuIGUmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZcImRlZmF1bHRcImluIGU/ZTp7ZGVmYXVsdDplfX12YXIgdT1mdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZSYmT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24obil7aWYoXCJkZWZhdWx0XCIhPT1uKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbixyLmdldD9yOntlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlW25dfX0pfX0pKSx0LmRlZmF1bHQ9ZSxPYmplY3QuZnJlZXplKHQpfShvKSxkPXMobyksZj1zKGMpLHA9ZnVuY3Rpb24oZSl7cmV0dXJue2lzRW5hYmxlZDpmdW5jdGlvbih0KXtyZXR1cm4gZS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4hIXRbZV19KSl9fX0sQz17bWVhc3VyZUxheW91dDpwKFtcImxheW91dFwiLFwibGF5b3V0SWRcIixcImRyYWdcIixcIl9sYXlvdXRSZXNldFRyYW5zZm9ybVwiXSksYW5pbWF0aW9uOnAoW1wiYW5pbWF0ZVwiLFwiZXhpdFwiLFwidmFyaWFudHNcIixcIndoaWxlSG92ZXJcIixcIndoaWxlVGFwXCIsXCJ3aGlsZUZvY3VzXCIsXCJ3aGlsZURyYWdcIl0pLGV4aXQ6cChbXCJleGl0XCJdKSxkcmFnOnAoW1wiZHJhZ1wiLFwiZHJhZ0NvbnRyb2xzXCJdKSxmb2N1czpwKFtcIndoaWxlRm9jdXNcIl0pLGhvdmVyOnAoW1wid2hpbGVIb3ZlclwiLFwib25Ib3ZlclN0YXJ0XCIsXCJvbkhvdmVyRW5kXCJdKSx0YXA6cChbXCJ3aGlsZVRhcFwiLFwib25UYXBcIixcIm9uVGFwU3RhcnRcIixcIm9uVGFwQ2FuY2VsXCJdKSxwYW46cChbXCJvblBhblwiLFwib25QYW5TdGFydFwiLFwib25QYW5TZXNzaW9uU3RhcnRcIixcIm9uUGFuRW5kXCJdKSxsYXlvdXRBbmltYXRpb246cChbXCJsYXlvdXRcIixcImxheW91dElkXCJdKX07ZnVuY3Rpb24gaChlKXtmb3IodmFyIHQgaW4gZSl7dmFyIG49ZVt0XTtudWxsIT09biYmKENbdF0uQ29tcG9uZW50PW4pfX12YXIgdj1vLmNyZWF0ZUNvbnRleHQoe3N0cmljdDohMX0pLGc9T2JqZWN0LmtleXMoQyksbT1nLmxlbmd0aCx3PW8uY3JlYXRlQ29udGV4dCh7dHJhbnNmb3JtUGFnZVBvaW50OmZ1bmN0aW9uKGUpe3JldHVybiBlfSxpc1N0YXRpYzohMX0pLHk9by5jcmVhdGVDb250ZXh0KHt9KTtmdW5jdGlvbiBiKCl7cmV0dXJuIG8udXNlQ29udGV4dCh5KS52aXN1YWxFbGVtZW50fXZhciB4PW8uY3JlYXRlQ29udGV4dChudWxsKTtmdW5jdGlvbiBPKGUpe3ZhciB0PW8udXNlUmVmKG51bGwpO3JldHVybiBudWxsPT09dC5jdXJyZW50JiYodC5jdXJyZW50PWUoKSksdC5jdXJyZW50fWZ1bmN0aW9uIEwoKXt2YXIgZT1vLnVzZUNvbnRleHQoeCk7aWYobnVsbD09PWUpcmV0dXJuWyEwLG51bGxdO3ZhciB0PWUuaXNQcmVzZW50LG49ZS5vbkV4aXRDb21wbGV0ZSxyPWUucmVnaXN0ZXIsaT1FKCk7cmV0dXJuIG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiByKGkpfSksW10pLCF0JiZuP1shMSxmdW5jdGlvbigpe3JldHVybiBudWxsPT1uP3ZvaWQgMDpuKGkpfV06WyEwXX1mdW5jdGlvbiBfKGUpe3JldHVybiBudWxsPT09ZXx8ZS5pc1ByZXNlbnR9dmFyIE09MCxqPWZ1bmN0aW9uKCl7cmV0dXJuIE0rK30sRT1mdW5jdGlvbigpe3JldHVybiBPKGopfSxTPW8uY3JlYXRlQ29udGV4dChudWxsKSxQPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3csSD1QP28udXNlTGF5b3V0RWZmZWN0Om8udXNlRWZmZWN0O2Z1bmN0aW9uIGsoZSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLFwiY3VycmVudFwiKX1mdW5jdGlvbiBWKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIFIoZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV8fFYoZSl9ZnVuY3Rpb24gSShlLHQsbixyLG8pe3ZhciBpO3JldHVybiB2b2lkIDA9PT1yJiYocj17fSksdm9pZCAwPT09byYmKG89e30pLFwic3RyaW5nXCI9PXR5cGVvZiB0JiYodD1udWxsPT09KGk9ZS52YXJpYW50cyl8fHZvaWQgMD09PWk/dm9pZCAwOmlbdF0pLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dChudWxsIT1uP246ZS5jdXN0b20scixvKTp0fWZ1bmN0aW9uIFooZSx0LG4pe3ZhciByPWUuZ2V0UHJvcHMoKTtyZXR1cm4gSShyLHQsbnVsbCE9bj9uOnIuY3VzdG9tLGZ1bmN0aW9uKGUpe3ZhciB0PXt9O3JldHVybiBlLmZvckVhY2hWYWx1ZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdFtuXT1lLmdldCgpfSkpLHR9KGUpLGZ1bmN0aW9uKGUpe3ZhciB0PXt9O3JldHVybiBlLmZvckVhY2hWYWx1ZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdFtuXT1lLmdldFZlbG9jaXR5KCl9KSksdH0oZSkpfWZ1bmN0aW9uIFQoZSl7dmFyIHQ7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YobnVsbD09PSh0PWUuYW5pbWF0ZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuc3RhcnQpfHxSKGUuaW5pdGlhbCl8fFIoZS5hbmltYXRlKXx8UihlLndoaWxlSG92ZXIpfHxSKGUud2hpbGVEcmFnKXx8UihlLndoaWxlVGFwKXx8UihlLndoaWxlRm9jdXMpfHxSKGUuZXhpdCl9ZnVuY3Rpb24gQShlKXtyZXR1cm4gQm9vbGVhbihUKGUpfHxlLnZhcmlhbnRzKX1mdW5jdGlvbiBEKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2Uuam9pbihcIiBcIik6ZX1mdW5jdGlvbiBCKGUpe3ZhciB0PWUucHJlbG9hZGVkRmVhdHVyZXMsbj1lLmNyZWF0ZVZpc3VhbEVsZW1lbnQsaT1lLnVzZVJlbmRlcixhPWUudXNlVmlzdWFsU3RhdGUsbD1lLkNvbXBvbmVudDtyZXR1cm4gdCYmaCh0KSxvLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIGM9by51c2VDb250ZXh0KHcpLmlzU3RhdGljLHM9bnVsbCxkPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSx0KXtpZihUKGUpKXt2YXIgbj1lLmluaXRpYWwscj1lLmFuaW1hdGU7cmV0dXJue2luaXRpYWw6ITE9PT1ufHxSKG4pP246dm9pZCAwLGFuaW1hdGU6UihyKT9yOnZvaWQgMH19cmV0dXJuITEhPT1lLmluaGVyaXQ/dDp7fX0oZSxvLnVzZUNvbnRleHQoeSkpLHI9bi5pbml0aWFsLGk9bi5hbmltYXRlO3JldHVybiBvLnVzZU1lbW8oKGZ1bmN0aW9uKCl7cmV0dXJue2luaXRpYWw6cixhbmltYXRlOml9fSksdD9bRChyKSxEKGkpXTpbXSl9KGUsYyksZj1hKGUsYyk7cmV0dXJuIWMmJlAmJihkLnZpc3VhbEVsZW1lbnQ9ZnVuY3Rpb24oZSx0LG4saSl7dmFyIGE9by51c2VDb250ZXh0KHcpLGw9by51c2VDb250ZXh0KHYpLGM9YigpLHM9by51c2VDb250ZXh0KHgpLHU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sYXlvdXRJZCxuPW8udXNlQ29udGV4dChTKTtyZXR1cm4gbiYmdm9pZCAwIT09dD9uK1wiLVwiK3Q6dH0obiksZD1vLnVzZVJlZih2b2lkIDApO2l8fChpPWwucmVuZGVyZXIpLCFkLmN1cnJlbnQmJmkmJihkLmN1cnJlbnQ9aShlLHt2aXN1YWxTdGF0ZTp0LHBhcmVudDpjLHByb3BzOnIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxuKSx7bGF5b3V0SWQ6dX0pLHByZXNlbmNlSWQ6bnVsbD09cz92b2lkIDA6cy5pZCxibG9ja0luaXRpYWxBbmltYXRpb246ITE9PT0obnVsbD09cz92b2lkIDA6cy5pbml0aWFsKX0pKTt2YXIgZj1kLmN1cnJlbnQ7cmV0dXJuIEgoKGZ1bmN0aW9uKCl7ZiYmKGYuc2V0UHJvcHMoci5fX2Fzc2lnbihyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sYSksbikse2xheW91dElkOnV9KSksZi5pc1ByZXNlbnQ9XyhzKSxmLmlzUHJlc2VuY2VSb290PSFjfHxjLnByZXNlbmNlSWQhPT0obnVsbD09cz92b2lkIDA6cy5pZCksZi5zeW5jUmVuZGVyKCkpfSkpLG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3ZhciBlO2YmJihudWxsPT09KGU9Zi5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PWV8fGUuYW5pbWF0ZUNoYW5nZXMoKSl9KSksSCgoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09Zj92b2lkIDA6Zi5ub3RpZnlVbm1vdW50KCl9fSksW10pLGZ9KGwsZixlLG4pLHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPVtdO2lmKG8udXNlQ29udGV4dCh2KSwhdClyZXR1cm4gbnVsbDtmb3IodmFyIGE9MDthPG07YSsrKXt2YXIgbD1nW2FdLGM9Q1tsXSxzPWMuaXNFbmFibGVkLGQ9Yy5Db21wb25lbnQ7cyhlKSYmZCYmaS5wdXNoKHUuY3JlYXRlRWxlbWVudChkLHIuX19hc3NpZ24oe2tleTpsfSxlLHt2aXN1YWxFbGVtZW50OnR9KSkpfXJldHVybiBpfShlLGQudmlzdWFsRWxlbWVudCkpLHUuY3JlYXRlRWxlbWVudCh1LkZyYWdtZW50LG51bGwsdS5jcmVhdGVFbGVtZW50KHkuUHJvdmlkZXIse3ZhbHVlOmR9LGkobCxlLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gby51c2VDYWxsYmFjaygoZnVuY3Rpb24ocil7dmFyIG87ciYmKG51bGw9PT0obz1lLm1vdW50KXx8dm9pZCAwPT09b3x8by5jYWxsKGUscikpLHQmJihyP3QubW91bnQocik6dC51bm1vdW50KCkpLG4mJihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuP24ocik6ayhuKSYmKG4uY3VycmVudD1yKSl9KSxbdF0pfShmLGQudmlzdWFsRWxlbWVudCx0KSxmLGMpKSxzKX0pKX1mdW5jdGlvbiAkKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49e30pLEIoZSh0LG4pKX12YXIgbj1uZXcgTWFwO3JldHVybiBuZXcgUHJveHkodCx7Z2V0OmZ1bmN0aW9uKGUscil7cmV0dXJuIG4uaGFzKHIpfHxuLnNldChyLHQocikpLG4uZ2V0KHIpfX0pfXZhciBGPVtcImFuaW1hdGVcIixcImNpcmNsZVwiLFwiZGVmc1wiLFwiZGVzY1wiLFwiZWxsaXBzZVwiLFwiZ1wiLFwiaW1hZ2VcIixcImxpbmVcIixcImZpbHRlclwiLFwibWFya2VyXCIsXCJtYXNrXCIsXCJtZXRhZGF0YVwiLFwicGF0aFwiLFwicGF0dGVyblwiLFwicG9seWdvblwiLFwicG9seWxpbmVcIixcInJlY3RcIixcInN0b3BcIixcInN2Z1wiLFwic3dpdGNoXCIsXCJzeW1ib2xcIixcInRleHRcIixcInRzcGFuXCIsXCJ1c2VcIixcInZpZXdcIl07ZnVuY3Rpb24gTihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmIWUuaW5jbHVkZXMoXCItXCIpJiYhIShGLmluZGV4T2YoZSk+LTF8fC9bQS1aXS8udGVzdChlKSl9dmFyIHo9e307ZnVuY3Rpb24gVyhlKXtmb3IodmFyIHQgaW4gZSl6W3RdPWVbdF19dmFyIEc9W1wiXCIsXCJYXCIsXCJZXCIsXCJaXCJdLFU9W1widHJhbnNmb3JtUGVyc3BlY3RpdmVcIixcInhcIixcInlcIixcInpcIl07ZnVuY3Rpb24gcShlLHQpe3JldHVybiBVLmluZGV4T2YoZSktVS5pbmRleE9mKHQpfVtcInRyYW5zbGF0ZVwiLFwic2NhbGVcIixcInJvdGF0ZVwiLFwic2tld1wiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gRy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gVS5wdXNoKGUrdCl9KSl9KSk7dmFyIFk9bmV3IFNldChVKTtmdW5jdGlvbiBLKGUpe3JldHVybiBZLmhhcyhlKX12YXIgWD1uZXcgU2V0KFtcIm9yaWdpblhcIixcIm9yaWdpbllcIixcIm9yaWdpblpcIl0pO2Z1bmN0aW9uIFEoZSl7cmV0dXJuIFguaGFzKGUpfWZ1bmN0aW9uIEooZSx0KXt2YXIgbj10LmxheW91dCxyPXQubGF5b3V0SWQ7cmV0dXJuIEsoZSl8fFEoZSl8fChufHx2b2lkIDAhPT1yKSYmKCEheltlXXx8XCJvcGFjaXR5XCI9PT1lKX12YXIgZWU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmZS5nZXRWZWxvY2l0eX0sdGU9e3g6XCJ0cmFuc2xhdGVYXCIseTpcInRyYW5zbGF0ZVlcIix6OlwidHJhbnNsYXRlWlwiLHRyYW5zZm9ybVBlcnNwZWN0aXZlOlwicGVyc3BlY3RpdmVcIn07ZnVuY3Rpb24gbmUoZSl7cmV0dXJuIGUuc3RhcnRzV2l0aChcIi0tXCIpfXZhciByZT1mdW5jdGlvbihlLHQpe3JldHVybiB0JiZcIm51bWJlclwiPT10eXBlb2YgZT90LnRyYW5zZm9ybShlKTplfSxvZT1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sYS5udW1iZXIpLHt0cmFuc2Zvcm06TWF0aC5yb3VuZH0pLGllPXtib3JkZXJXaWR0aDphLnB4LGJvcmRlclRvcFdpZHRoOmEucHgsYm9yZGVyUmlnaHRXaWR0aDphLnB4LGJvcmRlckJvdHRvbVdpZHRoOmEucHgsYm9yZGVyTGVmdFdpZHRoOmEucHgsYm9yZGVyUmFkaXVzOmEucHgscmFkaXVzOmEucHgsYm9yZGVyVG9wTGVmdFJhZGl1czphLnB4LGJvcmRlclRvcFJpZ2h0UmFkaXVzOmEucHgsYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6YS5weCxib3JkZXJCb3R0b21MZWZ0UmFkaXVzOmEucHgsd2lkdGg6YS5weCxtYXhXaWR0aDphLnB4LGhlaWdodDphLnB4LG1heEhlaWdodDphLnB4LHNpemU6YS5weCx0b3A6YS5weCxyaWdodDphLnB4LGJvdHRvbTphLnB4LGxlZnQ6YS5weCxwYWRkaW5nOmEucHgscGFkZGluZ1RvcDphLnB4LHBhZGRpbmdSaWdodDphLnB4LHBhZGRpbmdCb3R0b206YS5weCxwYWRkaW5nTGVmdDphLnB4LG1hcmdpbjphLnB4LG1hcmdpblRvcDphLnB4LG1hcmdpblJpZ2h0OmEucHgsbWFyZ2luQm90dG9tOmEucHgsbWFyZ2luTGVmdDphLnB4LHJvdGF0ZTphLmRlZ3JlZXMscm90YXRlWDphLmRlZ3JlZXMscm90YXRlWTphLmRlZ3JlZXMscm90YXRlWjphLmRlZ3JlZXMsc2NhbGU6YS5zY2FsZSxzY2FsZVg6YS5zY2FsZSxzY2FsZVk6YS5zY2FsZSxzY2FsZVo6YS5zY2FsZSxza2V3OmEuZGVncmVlcyxza2V3WDphLmRlZ3JlZXMsc2tld1k6YS5kZWdyZWVzLGRpc3RhbmNlOmEucHgsdHJhbnNsYXRlWDphLnB4LHRyYW5zbGF0ZVk6YS5weCx0cmFuc2xhdGVaOmEucHgseDphLnB4LHk6YS5weCx6OmEucHgscGVyc3BlY3RpdmU6YS5weCx0cmFuc2Zvcm1QZXJzcGVjdGl2ZTphLnB4LG9wYWNpdHk6YS5hbHBoYSxvcmlnaW5YOmEucHJvZ3Jlc3NQZXJjZW50YWdlLG9yaWdpblk6YS5wcm9ncmVzc1BlcmNlbnRhZ2Usb3JpZ2luWjphLnB4LHpJbmRleDpvZSxmaWxsT3BhY2l0eTphLmFscGhhLHN0cm9rZU9wYWNpdHk6YS5hbHBoYSxudW1PY3RhdmVzOm9lfTtmdW5jdGlvbiBhZShlLHQsbixyLG8saSxhLGwpe3ZhciBjLHM9ZS5zdHlsZSx1PWUudmFycyxkPWUudHJhbnNmb3JtLGY9ZS50cmFuc2Zvcm1LZXlzLHA9ZS50cmFuc2Zvcm1PcmlnaW47Zi5sZW5ndGg9MDt2YXIgQz0hMSxoPSExLHY9ITA7Zm9yKHZhciBnIGluIHQpe3ZhciBtPXRbZ107aWYobmUoZykpdVtnXT1tO2Vsc2V7dmFyIHc9aWVbZ10seT1yZShtLHcpO2lmKEsoZykpe2lmKEM9ITAsZFtnXT15LGYucHVzaChnKSwhdiljb250aW51ZTttIT09KG51bGwhPT0oYz13LmRlZmF1bHQpJiZ2b2lkIDAhPT1jP2M6MCkmJih2PSExKX1lbHNlIGlmKFEoZykpcFtnXT15LGg9ITA7ZWxzZSBpZigobnVsbD09bj92b2lkIDA6bi5pc0h5ZHJhdGVkKSYmKG51bGw9PXI/dm9pZCAwOnIuaXNIeWRyYXRlZCkmJnpbZ10pe3ZhciBiPXpbZ10ucHJvY2VzcyhtLHIsbikseD16W2ddLmFwcGx5VG87aWYoeClmb3IodmFyIE89eC5sZW5ndGgsTD0wO0w8TztMKyspc1t4W0xdXT1iO2Vsc2Ugc1tnXT1ifWVsc2Ugc1tnXT15fX1yJiZuJiZhJiZsPyhzLnRyYW5zZm9ybT1hKHIuZGVsdGFGaW5hbCxyLnRyZWVTY2FsZSxDP2Q6dm9pZCAwKSxpJiYocy50cmFuc2Zvcm09aShkLHMudHJhbnNmb3JtKSkscy50cmFuc2Zvcm1PcmlnaW49bChyKSk6KEMmJihzLnRyYW5zZm9ybT1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1lLnRyYW5zZm9ybSxpPWUudHJhbnNmb3JtS2V5cyxhPXQuZW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRpb24sbD12b2lkIDA9PT1hfHxhLGM9dC5hbGxvd1RyYW5zZm9ybU5vbmUscz12b2lkIDA9PT1jfHxjLHU9XCJcIjtpLnNvcnQocSk7Zm9yKHZhciBkPSExLGY9aS5sZW5ndGgscD0wO3A8ZjtwKyspe3ZhciBDPWlbcF07dSs9KHRlW0NdfHxDKStcIihcIitvW0NdK1wiKSBcIixcInpcIj09PUMmJihkPSEwKX1yZXR1cm4hZCYmbD91Kz1cInRyYW5zbGF0ZVooMClcIjp1PXUudHJpbSgpLHI/dT1yKG8sbj9cIlwiOnUpOnMmJm4mJih1PVwibm9uZVwiKSx1fShlLG8sdixpKSksaCYmKHMudHJhbnNmb3JtT3JpZ2luPWZ1bmN0aW9uKGUpe3ZhciB0PWUub3JpZ2luWCxuPXZvaWQgMD09PXQ/XCI1MCVcIjp0LHI9ZS5vcmlnaW5ZLG89dm9pZCAwPT09cj9cIjUwJVwiOnIsaT1lLm9yaWdpblo7cmV0dXJuIG4rXCIgXCIrbytcIiBcIisodm9pZCAwPT09aT8wOmkpfShwKSkpfXZhciBsZT1mdW5jdGlvbigpe3JldHVybntzdHlsZTp7fSx0cmFuc2Zvcm06e30sdHJhbnNmb3JtS2V5czpbXSx0cmFuc2Zvcm1PcmlnaW46e30sdmFyczp7fX19O2Z1bmN0aW9uIGNlKGUsdCxuKXtmb3IodmFyIHIgaW4gdCllZSh0W3JdKXx8SihyLG4pfHwoZVtyXT10W3JdKX1mdW5jdGlvbiBzZShlLHQsbil7dmFyIGk9e30sYT1mdW5jdGlvbihlLHQsbil7dmFyIGk9e307cmV0dXJuIGNlKGksZS5zdHlsZXx8e30sZSksT2JqZWN0LmFzc2lnbihpLGZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1lLnRyYW5zZm9ybVRlbXBsYXRlO3JldHVybiBvLnVzZU1lbW8oKGZ1bmN0aW9uKCl7dmFyIGU9bGUoKTthZShlLHQsdm9pZCAwLHZvaWQgMCx7ZW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRpb246IW59LGkpO3ZhciBvPWUudmFycyxhPWUuc3R5bGU7cmV0dXJuIHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxvKSxhKX0pLFt0XSl9KGUsdCxuKSksZS50cmFuc2Zvcm1WYWx1ZXMmJihpPWUudHJhbnNmb3JtVmFsdWVzKGkpKSxpfShlLHQsbik7cmV0dXJuIEJvb2xlYW4oZS5kcmFnKSYmKGkuZHJhZ2dhYmxlPSExLGEudXNlclNlbGVjdD1hLldlYmtpdFVzZXJTZWxlY3Q9YS5XZWJraXRUb3VjaENhbGxvdXQ9XCJub25lXCIsYS50b3VjaEFjdGlvbj0hMD09PWUuZHJhZz9cIm5vbmVcIjpcInBhbi1cIisoXCJ4XCI9PT1lLmRyYWc/XCJ5XCI6XCJ4XCIpKSxpLnN0eWxlPWEsaX12YXIgdWU9bmV3IFNldChbXCJpbml0aWFsXCIsXCJhbmltYXRlXCIsXCJleGl0XCIsXCJzdHlsZVwiLFwidmFyaWFudHNcIixcInRyYW5zaXRpb25cIixcInRyYW5zZm9ybVRlbXBsYXRlXCIsXCJ0cmFuc2Zvcm1WYWx1ZXNcIixcImN1c3RvbVwiLFwiaW5oZXJpdFwiLFwibGF5b3V0XCIsXCJsYXlvdXRJZFwiLFwiX2xheW91dFJlc2V0VHJhbnNmb3JtXCIsXCJvbkxheW91dEFuaW1hdGlvbkNvbXBsZXRlXCIsXCJvblZpZXdwb3J0Qm94VXBkYXRlXCIsXCJvbkxheW91dE1lYXN1cmVcIixcIm9uQmVmb3JlTGF5b3V0TWVhc3VyZVwiLFwib25BbmltYXRpb25TdGFydFwiLFwib25BbmltYXRpb25Db21wbGV0ZVwiLFwib25VcGRhdGVcIixcIm9uRHJhZ1N0YXJ0XCIsXCJvbkRyYWdcIixcIm9uRHJhZ0VuZFwiLFwib25NZWFzdXJlRHJhZ0NvbnN0cmFpbnRzXCIsXCJvbkRpcmVjdGlvbkxvY2tcIixcIm9uRHJhZ1RyYW5zaXRpb25FbmRcIixcImRyYWdcIixcImRyYWdDb250cm9sc1wiLFwiZHJhZ0xpc3RlbmVyXCIsXCJkcmFnQ29uc3RyYWludHNcIixcImRyYWdEaXJlY3Rpb25Mb2NrXCIsXCJfZHJhZ1hcIixcIl9kcmFnWVwiLFwiZHJhZ0VsYXN0aWNcIixcImRyYWdNb21lbnR1bVwiLFwiZHJhZ1Byb3BhZ2F0aW9uXCIsXCJkcmFnVHJhbnNpdGlvblwiLFwid2hpbGVEcmFnXCIsXCJvblBhblwiLFwib25QYW5TdGFydFwiLFwib25QYW5FbmRcIixcIm9uUGFuU2Vzc2lvblN0YXJ0XCIsXCJvblRhcFwiLFwib25UYXBTdGFydFwiLFwib25UYXBDYW5jZWxcIixcIm9uSG92ZXJTdGFydFwiLFwib25Ib3ZlckVuZFwiLFwid2hpbGVGb2N1c1wiLFwid2hpbGVUYXBcIixcIndoaWxlSG92ZXJcIl0pO2Z1bmN0aW9uIGRlKGUpe3JldHVybiB1ZS5oYXMoZSl9dmFyIGZlPWZ1bmN0aW9uKGUpe3JldHVybiFkZShlKX07dHJ5e3ZhciBwZT1uKDg1OTQpLlo7ZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3RhcnRzV2l0aChcIm9uXCIpPyFkZShlKTpwZShlKX19Y2F0Y2goZSl7fWZ1bmN0aW9uIENlKGUsdCxuKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9lOmEucHgudHJhbnNmb3JtKHQrbiplKX12YXIgaGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYS5weC50cmFuc2Zvcm0oZSp0KX0sdmU9e29mZnNldDpcInN0cm9rZS1kYXNob2Zmc2V0XCIsYXJyYXk6XCJzdHJva2UtZGFzaGFycmF5XCJ9LGdlPXtvZmZzZXQ6XCJzdHJva2VEYXNob2Zmc2V0XCIsYXJyYXk6XCJzdHJva2VEYXNoYXJyYXlcIn07ZnVuY3Rpb24gbWUoZSx0LG4sbyxpLGEsbCxjKXt2YXIgcz10LmF0dHJYLHU9dC5hdHRyWSxkPXQub3JpZ2luWCxmPXQub3JpZ2luWSxwPXQucGF0aExlbmd0aCxDPXQucGF0aFNwYWNpbmcsaD12b2lkIDA9PT1DPzE6Qyx2PXQucGF0aE9mZnNldCxnPXZvaWQgMD09PXY/MDp2O2FlKGUsci5fX3Jlc3QodCxbXCJhdHRyWFwiLFwiYXR0cllcIixcIm9yaWdpblhcIixcIm9yaWdpbllcIixcInBhdGhMZW5ndGhcIixcInBhdGhTcGFjaW5nXCIsXCJwYXRoT2Zmc2V0XCJdKSxuLG8saSxhLGwsYyksZS5hdHRycz1lLnN0eWxlLGUuc3R5bGU9e307dmFyIG09ZS5hdHRycyx3PWUuc3R5bGUseT1lLmRpbWVuc2lvbnMsYj1lLnRvdGFsUGF0aExlbmd0aDttLnRyYW5zZm9ybSYmKHkmJih3LnRyYW5zZm9ybT1tLnRyYW5zZm9ybSksZGVsZXRlIG0udHJhbnNmb3JtKSx5JiYodm9pZCAwIT09ZHx8dm9pZCAwIT09Znx8dy50cmFuc2Zvcm0pJiYody50cmFuc2Zvcm1PcmlnaW49ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBDZSh0LGUueCxlLndpZHRoKStcIiBcIitDZShuLGUueSxlLmhlaWdodCl9KHksdm9pZCAwIT09ZD9kOi41LHZvaWQgMCE9PWY/ZjouNSkpLHZvaWQgMCE9PXMmJihtLng9cyksdm9pZCAwIT09dSYmKG0ueT11KSx2b2lkIDAhPT1iJiZ2b2lkIDAhPT1wJiZmdW5jdGlvbihlLHQsbixyLG8saSl7dm9pZCAwPT09ciYmKHI9MSksdm9pZCAwPT09byYmKG89MCksdm9pZCAwPT09aSYmKGk9ITApO3ZhciBhPWk/dmU6Z2U7ZVthLm9mZnNldF09aGUoLW8sdCk7dmFyIGw9aGUobix0KSxjPWhlKHIsdCk7ZVthLmFycmF5XT1sK1wiIFwiK2N9KG0sYixwLGgsZywhMSl9dmFyIHdlPWZ1bmN0aW9uKCl7cmV0dXJuIHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxsZSgpKSx7YXR0cnM6e319KX07ZnVuY3Rpb24geWUoZSx0KXt2YXIgbj1vLnVzZU1lbW8oKGZ1bmN0aW9uKCl7dmFyIG49d2UoKTtyZXR1cm4gbWUobix0LHZvaWQgMCx2b2lkIDAse2VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0aW9uOiExfSxlLnRyYW5zZm9ybVRlbXBsYXRlKSxyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbi5hdHRycykse3N0eWxlOnIuX19hc3NpZ24oe30sbi5zdHlsZSl9KX0pLFt0XSk7aWYoZS5zdHlsZSl7dmFyIGk9e307Y2UoaSxlLnN0eWxlLGUpLG4uc3R5bGU9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGkpLG4uc3R5bGUpfXJldHVybiBufWZ1bmN0aW9uIGJlKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksZnVuY3Rpb24odCxuLGksYSxsKXt2YXIgYz1hLmxhdGVzdFZhbHVlcyxzPShOKHQpP3llOnNlKShuLGMsbCksdT1mdW5jdGlvbihlLHQsbil7dmFyIHI9e307Zm9yKHZhciBvIGluIGUpKGZlKG8pfHwhMD09PW4mJmRlKG8pfHwhdCYmIWRlKG8pKSYmKHJbb109ZVtvXSk7cmV0dXJuIHJ9KG4sXCJzdHJpbmdcIj09dHlwZW9mIHQsZSksZD1yLl9fYXNzaWduKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSx1KSxzKSx7cmVmOml9KTtyZXR1cm4gby5jcmVhdGVFbGVtZW50KHQsZCl9fXZhciB4ZT0vKFthLXpdKShbQS1aXSkvZyxPZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKHhlLFwiJDEtJDJcIikudG9Mb3dlckNhc2UoKX07ZnVuY3Rpb24gTGUoZSx0KXt2YXIgbj10LnN0eWxlLHI9dC52YXJzO2Zvcih2YXIgbyBpbiBPYmplY3QuYXNzaWduKGUuc3R5bGUsbikscillLnN0eWxlLnNldFByb3BlcnR5KG8scltvXSl9dmFyIF9lPW5ldyBTZXQoW1wiYmFzZUZyZXF1ZW5jeVwiLFwiZGlmZnVzZUNvbnN0YW50XCIsXCJrZXJuZWxNYXRyaXhcIixcImtlcm5lbFVuaXRMZW5ndGhcIixcImtleVNwbGluZXNcIixcImtleVRpbWVzXCIsXCJsaW1pdGluZ0NvbmVBbmdsZVwiLFwibWFya2VySGVpZ2h0XCIsXCJtYXJrZXJXaWR0aFwiLFwibnVtT2N0YXZlc1wiLFwidGFyZ2V0WFwiLFwidGFyZ2V0WVwiLFwic3VyZmFjZVNjYWxlXCIsXCJzcGVjdWxhckNvbnN0YW50XCIsXCJzcGVjdWxhckV4cG9uZW50XCIsXCJzdGREZXZpYXRpb25cIixcInRhYmxlVmFsdWVzXCIsXCJ2aWV3Qm94XCIsXCJncmFkaWVudFRyYW5zZm9ybVwiXSk7ZnVuY3Rpb24gTWUoZSx0KXtmb3IodmFyIG4gaW4gTGUoZSx0KSx0LmF0dHJzKWUuc2V0QXR0cmlidXRlKF9lLmhhcyhuKT9uOk9lKG4pLHQuYXR0cnNbbl0pfWZ1bmN0aW9uIGplKGUpe3ZhciB0PWUuc3R5bGUsbj17fTtmb3IodmFyIHIgaW4gdCkoZWUodFtyXSl8fEoocixlKSkmJihuW3JdPXRbcl0pO3JldHVybiBufWZ1bmN0aW9uIEVlKGUpe3ZhciB0PWplKGUpO2Zvcih2YXIgbiBpbiBlKWVlKGVbbl0pJiYodFtcInhcIj09PW58fFwieVwiPT09bj9cImF0dHJcIituLnRvVXBwZXJDYXNlKCk6bl09ZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gU2UoZSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuc3RhcnR9dmFyIFBlPWZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpfSxIZT1mdW5jdGlvbihlKXtyZXR1cm4gQm9vbGVhbihlJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmZS5taXgmJmUudG9WYWx1ZSl9LGtlPWZ1bmN0aW9uKGUpe3JldHVybiBQZShlKT9lW2UubGVuZ3RoLTFdfHwwOmV9O2Z1bmN0aW9uIFZlKGUpe3ZhciB0PWVlKGUpP2UuZ2V0KCk6ZTtyZXR1cm4gSGUodCk/dC50b1ZhbHVlKCk6dH1mdW5jdGlvbiBSZShlLHQsbixyKXt2YXIgbz1lLnNjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wcyxpPWUuY3JlYXRlUmVuZGVyU3RhdGUsYT1lLm9uTW91bnQsbD17bGF0ZXN0VmFsdWVzOlplKHQsbixyLG8pLHJlbmRlclN0YXRlOmkoKX07cmV0dXJuIGEmJihsLm1vdW50PWZ1bmN0aW9uKGUpe3JldHVybiBhKHQsZSxsKX0pLGx9dmFyIEllPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciByPW8udXNlQ29udGV4dCh5KSxpPW8udXNlQ29udGV4dCh4KTtyZXR1cm4gbj9SZShlLHQscixpKTpPKChmdW5jdGlvbigpe3JldHVybiBSZShlLHQscixpKX0pKX19O2Z1bmN0aW9uIFplKGUsdCxuLG8pe3ZhciBpPXt9LGE9ITE9PT0obnVsbD09bj92b2lkIDA6bi5pbml0aWFsKSxsPW8oZSk7Zm9yKHZhciBjIGluIGwpaVtjXT1WZShsW2NdKTt2YXIgcz1lLmluaXRpYWwsdT1lLmFuaW1hdGUsZD1UKGUpLGY9QShlKTt0JiZmJiYhZCYmITEhPT1lLmluaGVyaXQmJihudWxsIT1zfHwocz10LmluaXRpYWwpLG51bGwhPXV8fCh1PXQuYW5pbWF0ZSkpO3ZhciBwPWF8fCExPT09cz91OnM7cmV0dXJuIHAmJlwiYm9vbGVhblwiIT10eXBlb2YgcCYmIVNlKHApJiYoQXJyYXkuaXNBcnJheShwKT9wOltwXSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49SShlLHQpO2lmKG4pe3ZhciBvPW4udHJhbnNpdGlvbkVuZDtuLnRyYW5zaXRpb247dmFyIGE9ci5fX3Jlc3QobixbXCJ0cmFuc2l0aW9uRW5kXCIsXCJ0cmFuc2l0aW9uXCJdKTtmb3IodmFyIGwgaW4gYSlpW2xdPWFbbF07Zm9yKHZhciBsIGluIG8paVtsXT1vW2xdfX0pKSxpfXZhciBUZSxBZT17dXNlVmlzdWFsU3RhdGU6SWUoe3NjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczpFZSxjcmVhdGVSZW5kZXJTdGF0ZTp3ZSxvbk1vdW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uLnJlbmRlclN0YXRlLG89bi5sYXRlc3RWYWx1ZXM7dHJ5e3IuZGltZW5zaW9ucz1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmdldEJCb3g/dC5nZXRCQm94KCk6dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChlKXtyLmRpbWVuc2lvbnM9e3g6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MH19XCJwYXRoXCI9PT10LnRhZ05hbWUmJihyLnRvdGFsUGF0aExlbmd0aD10LmdldFRvdGFsTGVuZ3RoKCkpLG1lKHIsbyx2b2lkIDAsdm9pZCAwLHtlbmFibGVIYXJkd2FyZUFjY2VsZXJhdGlvbjohMX0sZS50cmFuc2Zvcm1UZW1wbGF0ZSksTWUodCxyKX19KX0sRGU9e3VzZVZpc3VhbFN0YXRlOkllKHtzY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM6amUsY3JlYXRlUmVuZGVyU3RhdGU6bGV9KX07ZnVuY3Rpb24gQmUoZSx0LG4sbyl7dmFyIGk9dC5mb3J3YXJkTW90aW9uUHJvcHMsYT12b2lkIDAhPT1pJiZpLGw9TihlKT9BZTpEZTtyZXR1cm4gci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGwpLHtwcmVsb2FkZWRGZWF0dXJlczpuLHVzZVJlbmRlcjpiZShhKSxjcmVhdGVWaXN1YWxFbGVtZW50Om8sQ29tcG9uZW50OmV9KX1mdW5jdGlvbiAkZShlLHQsbixyKXtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyKHQsbixyKSxmdW5jdGlvbigpe3JldHVybiBlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLHIpfX1mdW5jdGlvbiBGZShlLHQsbixyKXtvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXt2YXIgbz1lLmN1cnJlbnQ7aWYobiYmbylyZXR1cm4gJGUobyx0LG4scil9KSxbZSx0LG4scl0pfWZ1bmN0aW9uIE5lKGUpe3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBQb2ludGVyRXZlbnQmJmUgaW5zdGFuY2VvZiBQb2ludGVyRXZlbnQ/IShcIm1vdXNlXCIhPT1lLnBvaW50ZXJUeXBlKTplIGluc3RhbmNlb2YgTW91c2VFdmVudH1mdW5jdGlvbiB6ZShlKXtyZXR1cm4hIWUudG91Y2hlc30hZnVuY3Rpb24oZSl7ZS5BbmltYXRlPVwiYW5pbWF0ZVwiLGUuSG92ZXI9XCJ3aGlsZUhvdmVyXCIsZS5UYXA9XCJ3aGlsZVRhcFwiLGUuRHJhZz1cIndoaWxlRHJhZ1wiLGUuRm9jdXM9XCJ3aGlsZUZvY3VzXCIsZS5FeGl0PVwiZXhpdFwifShUZXx8KFRlPXt9KSk7dmFyIFdlPXtwYWdlWDowLHBhZ2VZOjB9O2Z1bmN0aW9uIEdlKGUsdCl7dm9pZCAwPT09dCYmKHQ9XCJwYWdlXCIpO3ZhciBuPWUudG91Y2hlc1swXXx8ZS5jaGFuZ2VkVG91Y2hlc1swXXx8V2U7cmV0dXJue3g6blt0K1wiWFwiXSx5Om5bdCtcIllcIl19fWZ1bmN0aW9uIFVlKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PVwicGFnZVwiKSx7eDplW3QrXCJYXCJdLHk6ZVt0K1wiWVwiXX19ZnVuY3Rpb24gcWUoZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9XCJwYWdlXCIpLHtwb2ludDp6ZShlKT9HZShlLHQpOlVlKGUsdCl9fXZhciBZZT1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PSExKTt2YXIgbixyPWZ1bmN0aW9uKHQpe3JldHVybiBlKHQscWUodCkpfTtyZXR1cm4gdD8obj1yLGZ1bmN0aW9uKGUpe3ZhciB0PWUgaW5zdGFuY2VvZiBNb3VzZUV2ZW50OyghdHx8dCYmMD09PWUuYnV0dG9uKSYmbihlKX0pOnJ9LEtlPWZ1bmN0aW9uKCl7cmV0dXJuIFAmJm51bGw9PT13aW5kb3cub25wb2ludGVyZG93bn0sWGU9ZnVuY3Rpb24oKXtyZXR1cm4gUCYmbnVsbD09PXdpbmRvdy5vbnRvdWNoc3RhcnR9LFFlPWZ1bmN0aW9uKCl7cmV0dXJuIFAmJm51bGw9PT13aW5kb3cub25tb3VzZWRvd259LEplPXtwb2ludGVyZG93bjpcIm1vdXNlZG93blwiLHBvaW50ZXJtb3ZlOlwibW91c2Vtb3ZlXCIscG9pbnRlcnVwOlwibW91c2V1cFwiLHBvaW50ZXJjYW5jZWw6XCJtb3VzZWNhbmNlbFwiLHBvaW50ZXJvdmVyOlwibW91c2VvdmVyXCIscG9pbnRlcm91dDpcIm1vdXNlb3V0XCIscG9pbnRlcmVudGVyOlwibW91c2VlbnRlclwiLHBvaW50ZXJsZWF2ZTpcIm1vdXNlbGVhdmVcIn0sZXQ9e3BvaW50ZXJkb3duOlwidG91Y2hzdGFydFwiLHBvaW50ZXJtb3ZlOlwidG91Y2htb3ZlXCIscG9pbnRlcnVwOlwidG91Y2hlbmRcIixwb2ludGVyY2FuY2VsOlwidG91Y2hjYW5jZWxcIn07ZnVuY3Rpb24gdHQoZSl7cmV0dXJuIEtlKCk/ZTpYZSgpP2V0W2VdOlFlKCk/SmVbZV06ZX1mdW5jdGlvbiBudChlLHQsbixyKXtyZXR1cm4gJGUoZSx0dCh0KSxZZShuLFwicG9pbnRlcmRvd25cIj09PXQpLHIpfWZ1bmN0aW9uIHJ0KGUsdCxuLHIpe3JldHVybiBGZShlLHR0KHQpLG4mJlllKG4sXCJwb2ludGVyZG93blwiPT09dCkscil9ZnVuY3Rpb24gb3QoZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09PXQmJih0PWUsZnVuY3Rpb24oKXt0PW51bGx9KX19dmFyIGl0PW90KFwiZHJhZ0hvcml6b250YWxcIiksYXQ9b3QoXCJkcmFnVmVydGljYWxcIik7ZnVuY3Rpb24gbHQoZSl7dmFyIHQ9ITE7aWYoXCJ5XCI9PT1lKXQ9YXQoKTtlbHNlIGlmKFwieFwiPT09ZSl0PWl0KCk7ZWxzZXt2YXIgbj1pdCgpLHI9YXQoKTtuJiZyP3Q9ZnVuY3Rpb24oKXtuKCkscigpfToobiYmbigpLHImJnIoKSl9cmV0dXJuIHR9ZnVuY3Rpb24gY3QoKXt2YXIgZT1sdCghMCk7cmV0dXJuIWV8fChlKCksITEpfWZ1bmN0aW9uIHN0KGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24ocixvKXt2YXIgaTtOZShyKSYmIWN0KCkmJihudWxsPT1ufHxuKHIsbyksbnVsbD09PShpPWUuYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1pfHxpLnNldEFjdGl2ZShUZS5Ib3Zlcix0KSl9fXZhciB1dD1mdW5jdGlvbihlLHQpe3JldHVybiEhdCYmKGU9PT10fHx1dChlLHQucGFyZW50RWxlbWVudCkpfTtmdW5jdGlvbiBkdChlKXtyZXR1cm4gby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUoKX19KSxbXSl9dmFyIGZ0PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZSh0KSxudWxsfX0scHQ9e3RhcDpmdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vblRhcCxuPWUub25UYXBTdGFydCxyPWUub25UYXBDYW5jZWwsaT1lLndoaWxlVGFwLGE9ZS52aXN1YWxFbGVtZW50LGM9dHx8bnx8cnx8aSxzPW8udXNlUmVmKCExKSx1PW8udXNlUmVmKG51bGwpO2Z1bmN0aW9uIGQoKXt2YXIgZTtudWxsPT09KGU9dS5jdXJyZW50KXx8dm9pZCAwPT09ZXx8ZS5jYWxsKHUpLHUuY3VycmVudD1udWxsfWZ1bmN0aW9uIGYoKXt2YXIgZTtyZXR1cm4gZCgpLHMuY3VycmVudD0hMSxudWxsPT09KGU9YS5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PWV8fGUuc2V0QWN0aXZlKFRlLlRhcCwhMSksIWN0KCl9ZnVuY3Rpb24gcChlLG4pe2YoKSYmKHV0KGEuZ2V0SW5zdGFuY2UoKSxlLnRhcmdldCk/bnVsbD09dHx8dChlLG4pOm51bGw9PXJ8fHIoZSxuKSl9ZnVuY3Rpb24gQyhlLHQpe2YoKSYmKG51bGw9PXJ8fHIoZSx0KSl9cnQoYSxcInBvaW50ZXJkb3duXCIsYz9mdW5jdGlvbihlLHQpe3ZhciByO2QoKSxzLmN1cnJlbnR8fChzLmN1cnJlbnQ9ITAsdS5jdXJyZW50PWwucGlwZShudCh3aW5kb3csXCJwb2ludGVydXBcIixwKSxudCh3aW5kb3csXCJwb2ludGVyY2FuY2VsXCIsQykpLG51bGw9PW58fG4oZSx0KSxudWxsPT09KHI9YS5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PXJ8fHIuc2V0QWN0aXZlKFRlLlRhcCwhMCkpfTp2b2lkIDApLGR0KGQpfSkpLGZvY3VzOmZ0KChmdW5jdGlvbihlKXt2YXIgdD1lLndoaWxlRm9jdXMsbj1lLnZpc3VhbEVsZW1lbnQ7RmUobixcImZvY3VzXCIsdD9mdW5jdGlvbigpe3ZhciBlO251bGw9PT0oZT1uLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09ZXx8ZS5zZXRBY3RpdmUoVGUuRm9jdXMsITApfTp2b2lkIDApLEZlKG4sXCJibHVyXCIsdD9mdW5jdGlvbigpe3ZhciBlO251bGw9PT0oZT1uLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09ZXx8ZS5zZXRBY3RpdmUoVGUuRm9jdXMsITEpfTp2b2lkIDApfSkpLGhvdmVyOmZ0KChmdW5jdGlvbihlKXt2YXIgdD1lLm9uSG92ZXJTdGFydCxuPWUub25Ib3ZlckVuZCxyPWUud2hpbGVIb3ZlcixvPWUudmlzdWFsRWxlbWVudDtydChvLFwicG9pbnRlcmVudGVyXCIsdHx8cj9zdChvLCEwLHQpOnZvaWQgMCkscnQobyxcInBvaW50ZXJsZWF2ZVwiLG58fHI/c3QobywhMSxuKTp2b2lkIDApfSkpfTtmdW5jdGlvbiBDdChlLHQpe2lmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiExO3ZhciBuPXQubGVuZ3RoO2lmKG4hPT1lLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIHI9MDtyPG47cisrKWlmKHRbcl0hPT1lW3JdKXJldHVybiExO3JldHVybiEwfXZhciBodD1mdW5jdGlvbihlKXtyZXR1cm4gMWUzKmV9LHZ0PXtsaW5lYXI6bC5saW5lYXIsZWFzZUluOmwuZWFzZUluLGVhc2VJbk91dDpsLmVhc2VJbk91dCxlYXNlT3V0OmwuZWFzZU91dCxjaXJjSW46bC5jaXJjSW4sY2lyY0luT3V0OmwuY2lyY0luT3V0LGNpcmNPdXQ6bC5jaXJjT3V0LGJhY2tJbjpsLmJhY2tJbixiYWNrSW5PdXQ6bC5iYWNrSW5PdXQsYmFja091dDpsLmJhY2tPdXQsYW50aWNpcGF0ZTpsLmFudGljaXBhdGUsYm91bmNlSW46bC5ib3VuY2VJbixib3VuY2VJbk91dDpsLmJvdW5jZUluT3V0LGJvdW5jZU91dDpsLmJvdW5jZU91dH0sZ3Q9ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7aS5pbnZhcmlhbnQoND09PWUubGVuZ3RoLFwiQ3ViaWMgYmV6aWVyIGFycmF5cyBtdXN0IGNvbnRhaW4gZm91ciBudW1lcmljYWwgdmFsdWVzLlwiKTt2YXIgdD1yLl9fcmVhZChlLDQpLG49dFswXSxvPXRbMV0sYT10WzJdLGM9dFszXTtyZXR1cm4gbC5jdWJpY0JlemllcihuLG8sYSxjKX1yZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT8oaS5pbnZhcmlhbnQodm9pZCAwIT09dnRbZV0sXCJJbnZhbGlkIGVhc2luZyB0eXBlICdcIitlK1wiJ1wiKSx2dFtlXSk6ZX0sbXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJlwibnVtYmVyXCIhPXR5cGVvZiBlWzBdfSx3dD1mdW5jdGlvbihlLHQpe3JldHVybiEoXCJ6SW5kZXhcIj09PWV8fFwibnVtYmVyXCIhPXR5cGVvZiB0JiYhQXJyYXkuaXNBcnJheSh0KSYmKFwic3RyaW5nXCIhPXR5cGVvZiB0fHwhYS5jb21wbGV4LnRlc3QodCl8fHQuc3RhcnRzV2l0aChcInVybChcIikpKX0seXQ9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpcInNwcmluZ1wiLHN0aWZmbmVzczo1MDAsZGFtcGluZzoyNSxyZXN0RGVsdGE6LjUscmVzdFNwZWVkOjEwfX0sYnQ9ZnVuY3Rpb24oZSl7cmV0dXJue3R5cGU6XCJzcHJpbmdcIixzdGlmZm5lc3M6NTUwLGRhbXBpbmc6MD09PWU/MipNYXRoLnNxcnQoNTUwKTozMCxyZXN0RGVsdGE6LjAxLHJlc3RTcGVlZDoxMH19LHh0PWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6XCJrZXlmcmFtZXNcIixlYXNlOlwibGluZWFyXCIsZHVyYXRpb246LjN9fSxPdD1mdW5jdGlvbihlKXtyZXR1cm57dHlwZTpcImtleWZyYW1lc1wiLGR1cmF0aW9uOi44LHZhbHVlczplfX0sTHQ9e3g6eXQseTp5dCx6Onl0LHJvdGF0ZTp5dCxyb3RhdGVYOnl0LHJvdGF0ZVk6eXQscm90YXRlWjp5dCxzY2FsZVg6YnQsc2NhbGVZOmJ0LHNjYWxlOmJ0LG9wYWNpdHk6eHQsYmFja2dyb3VuZENvbG9yOnh0LGNvbG9yOnh0LGRlZmF1bHQ6YnR9LF90PWZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIG49UGUodCk/T3Q6THRbZV18fEx0LmRlZmF1bHQsci5fX2Fzc2lnbih7dG86dH0sbih0KSl9LE10PXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxpZSkse2NvbG9yOmEuY29sb3IsYmFja2dyb3VuZENvbG9yOmEuY29sb3Isb3V0bGluZUNvbG9yOmEuY29sb3IsZmlsbDphLmNvbG9yLHN0cm9rZTphLmNvbG9yLGJvcmRlckNvbG9yOmEuY29sb3IsYm9yZGVyVG9wQ29sb3I6YS5jb2xvcixib3JkZXJSaWdodENvbG9yOmEuY29sb3IsYm9yZGVyQm90dG9tQ29sb3I6YS5jb2xvcixib3JkZXJMZWZ0Q29sb3I6YS5jb2xvcixmaWx0ZXI6YS5maWx0ZXIsV2Via2l0RmlsdGVyOmEuZmlsdGVyfSksanQ9ZnVuY3Rpb24oZSl7cmV0dXJuIE10W2VdfTtmdW5jdGlvbiBFdChlLHQpe3ZhciBuLHI9anQoZSk7cmV0dXJuIHIhPT1hLmZpbHRlciYmKHI9YS5jb21wbGV4KSxudWxsPT09KG49ci5nZXRBbmltYXRhYmxlTm9uZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uY2FsbChyLHQpfXZhciBTdD0hMTtmdW5jdGlvbiBQdChlKXtyZXR1cm4gMD09PWV8fFwic3RyaW5nXCI9PXR5cGVvZiBlJiYwPT09cGFyc2VGbG9hdChlKSYmLTE9PT1lLmluZGV4T2YoXCIgXCIpfWZ1bmN0aW9uIEh0KGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlPzA6RXQoXCJcIixlKX1mdW5jdGlvbiBrdChlLHQpe3JldHVybiBlW3RdfHxlLmRlZmF1bHR8fGV9ZnVuY3Rpb24gVnQoZSx0LG4sbyl7cmV0dXJuIHZvaWQgMD09PW8mJihvPXt9KSx0LnN0YXJ0KChmdW5jdGlvbihhKXt2YXIgYyxzLHU9ZnVuY3Rpb24oZSx0LG4sbyxhKXt2YXIgYyxzPWt0KG8sZSksdT1udWxsIT09KGM9cy5mcm9tKSYmdm9pZCAwIT09Yz9jOnQuZ2V0KCksZD13dChlLG4pO1wibm9uZVwiPT09dSYmZCYmXCJzdHJpbmdcIj09dHlwZW9mIG4/dT1FdChlLG4pOlB0KHUpJiZcInN0cmluZ1wiPT10eXBlb2Ygbj91PUh0KG4pOiFBcnJheS5pc0FycmF5KG4pJiZQdChuKSYmXCJzdHJpbmdcIj09dHlwZW9mIHUmJihuPUh0KHUpKTt2YXIgZj13dChlLHUpO3JldHVybiBpLndhcm5pbmcoZj09PWQsXCJZb3UgYXJlIHRyeWluZyB0byBhbmltYXRlIFwiK2UrJyBmcm9tIFwiJyt1KydcIiB0byBcIicrbisnXCIuICcrdStcIiBpcyBub3QgYW4gYW5pbWF0YWJsZSB2YWx1ZSAtIHRvIGVuYWJsZSB0aGlzIGFuaW1hdGlvbiBzZXQgXCIrdStcIiB0byBhIHZhbHVlIGFuaW1hdGFibGUgdG8gXCIrbitcIiB2aWEgdGhlIGBzdHlsZWAgcHJvcGVydHkuXCIpLGYmJmQmJiExIT09cy50eXBlP2Z1bmN0aW9uKCl7dmFyIG89e2Zyb206dSx0bzpuLHZlbG9jaXR5OnQuZ2V0VmVsb2NpdHkoKSxvbkNvbXBsZXRlOmEsb25VcGRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuc2V0KGUpfX07cmV0dXJuXCJpbmVydGlhXCI9PT1zLnR5cGV8fFwiZGVjYXlcIj09PXMudHlwZT9sLmluZXJ0aWEoci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG8pLHMpKTpsLmFuaW1hdGUoci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgbztyZXR1cm4gQXJyYXkuaXNBcnJheSh0LnRvKSYmKG51bGwhPT0obz1lLmR1cmF0aW9uKSYmdm9pZCAwIT09b3x8KGUuZHVyYXRpb249LjgpKSxmdW5jdGlvbihlKXtBcnJheS5pc0FycmF5KGUudG8pJiZudWxsPT09ZS50b1swXSYmKGUudG89ci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKGUudG8pKSxlLnRvWzBdPWUuZnJvbSl9KHQpLGZ1bmN0aW9uKGUpe2Uud2hlbixlLmRlbGF5LGUuZGVsYXlDaGlsZHJlbixlLnN0YWdnZXJDaGlsZHJlbixlLnN0YWdnZXJEaXJlY3Rpb24sZS5yZXBlYXQsZS5yZXBlYXRUeXBlLGUucmVwZWF0RGVsYXksZS5mcm9tO3ZhciB0PXIuX19yZXN0KGUsW1wid2hlblwiLFwiZGVsYXlcIixcImRlbGF5Q2hpbGRyZW5cIixcInN0YWdnZXJDaGlsZHJlblwiLFwic3RhZ2dlckRpcmVjdGlvblwiLFwicmVwZWF0XCIsXCJyZXBlYXRUeXBlXCIsXCJyZXBlYXREZWxheVwiLFwiZnJvbVwiXSk7cmV0dXJuISFPYmplY3Qua2V5cyh0KS5sZW5ndGh9KGUpfHwoZT1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sZSksX3Qobix0LnRvKSkpLHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSx0KSxmdW5jdGlvbihlKXt2YXIgdD1lLmVhc2Usbj1lLnRpbWVzLG89ZS55b3lvLGE9ZS5mbGlwLGw9ZS5sb29wLGM9ci5fX3Jlc3QoZSxbXCJlYXNlXCIsXCJ0aW1lc1wiLFwieW95b1wiLFwiZmxpcFwiLFwibG9vcFwiXSkscz1yLl9fYXNzaWduKHt9LGMpO3JldHVybiBuJiYocy5vZmZzZXQ9biksYy5kdXJhdGlvbiYmKHMuZHVyYXRpb249aHQoYy5kdXJhdGlvbikpLGMucmVwZWF0RGVsYXkmJihzLnJlcGVhdERlbGF5PWh0KGMucmVwZWF0RGVsYXkpKSx0JiYocy5lYXNlPW10KHQpP3QubWFwKGd0KTpndCh0KSksXCJ0d2VlblwiPT09Yy50eXBlJiYocy50eXBlPVwia2V5ZnJhbWVzXCIpLChvfHxsfHxhKSYmKGkud2FybmluZyghU3QsXCJ5b3lvLCBsb29wIGFuZCBmbGlwIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIEFQSS4gUmVwbGFjZSB3aXRoIHJlcGVhdCBhbmQgcmVwZWF0VHlwZSBvcHRpb25zLlwiKSxTdD0hMCxvP3MucmVwZWF0VHlwZT1cInJldmVyc2VcIjpsP3MucmVwZWF0VHlwZT1cImxvb3BcIjphJiYocy5yZXBlYXRUeXBlPVwibWlycm9yXCIpLHMucmVwZWF0PWx8fG98fGF8fGMucmVwZWF0KSxcInNwcmluZ1wiIT09Yy50eXBlJiYocy50eXBlPVwia2V5ZnJhbWVzXCIpLHN9KGUpKX0ocyxvLGUpKSx7b25VcGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ7by5vblVwZGF0ZShlKSxudWxsPT09KHQ9cy5vblVwZGF0ZSl8fHZvaWQgMD09PXR8fHQuY2FsbChzLGUpfSxvbkNvbXBsZXRlOmZ1bmN0aW9uKCl7dmFyIGU7by5vbkNvbXBsZXRlKCksbnVsbD09PShlPXMub25Db21wbGV0ZSl8fHZvaWQgMD09PWV8fGUuY2FsbChzKX19KSl9OmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHQuc2V0KG4pLGEoKSxudWxsPT09KGU9bnVsbD09cz92b2lkIDA6cy5vbkNvbXBsZXRlKXx8dm9pZCAwPT09ZXx8ZS5jYWxsKHMpLHtzdG9wOmZ1bmN0aW9uKCl7fX19fShlLHQsbixvLGEpLGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gbnVsbCE9PShuPShrdChlLHQpfHx7fSkuZGVsYXkpJiZ2b2lkIDAhPT1uP246MH0obyxlKSxmPWZ1bmN0aW9uKCl7cmV0dXJuIHM9dSgpfTtyZXR1cm4gZD9jPXNldFRpbWVvdXQoZixodChkKSk6ZigpLGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGMpLG51bGw9PXN8fHMuc3RvcCgpfX0pKX1mdW5jdGlvbiBSdChlLHQpey0xPT09ZS5pbmRleE9mKHQpJiZlLnB1c2godCl9ZnVuY3Rpb24gSXQoZSx0KXt2YXIgbj1lLmluZGV4T2YodCk7bj4tMSYmZS5zcGxpY2UobiwxKX12YXIgWnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5zdWJzY3JpcHRpb25zPVtdfXJldHVybiBlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gUnQodGhpcy5zdWJzY3JpcHRpb25zLGUpLGZ1bmN0aW9uKCl7cmV0dXJuIEl0KHQuc3Vic2NyaXB0aW9ucyxlKX19LGUucHJvdG90eXBlLm5vdGlmeT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5zdWJzY3JpcHRpb25zLmxlbmd0aDtpZihyKWlmKDE9PT1yKXRoaXMuc3Vic2NyaXB0aW9uc1swXShlLHQsbik7ZWxzZSBmb3IodmFyIG89MDtvPHI7bysrKXt2YXIgaT10aGlzLnN1YnNjcmlwdGlvbnNbb107aSYmaShlLHQsbil9fSxlLnByb3RvdHlwZS5nZXRTaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3Vic2NyaXB0aW9ucy5sZW5ndGh9LGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zdWJzY3JpcHRpb25zLmxlbmd0aD0wfSxlfSgpLFR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgdCxuPXRoaXM7dGhpcy50aW1lRGVsdGE9MCx0aGlzLmxhc3RVcGRhdGVkPTAsdGhpcy51cGRhdGVTdWJzY3JpYmVycz1uZXcgWnQsdGhpcy52ZWxvY2l0eVVwZGF0ZVN1YnNjcmliZXJzPW5ldyBadCx0aGlzLnJlbmRlclN1YnNjcmliZXJzPW5ldyBadCx0aGlzLmNhblRyYWNrVmVsb2NpdHk9ITEsdGhpcy51cGRhdGVBbmROb3RpZnk9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0hMCksbi5wcmV2PW4uY3VycmVudCxuLmN1cnJlbnQ9ZTt2YXIgcj1jLmdldEZyYW1lRGF0YSgpLG89ci5kZWx0YSxpPXIudGltZXN0YW1wO24ubGFzdFVwZGF0ZWQhPT1pJiYobi50aW1lRGVsdGE9byxuLmxhc3RVcGRhdGVkPWksZi5kZWZhdWx0LnBvc3RSZW5kZXIobi5zY2hlZHVsZVZlbG9jaXR5Q2hlY2spKSxuLnByZXYhPT1uLmN1cnJlbnQmJm4udXBkYXRlU3Vic2NyaWJlcnMubm90aWZ5KG4uY3VycmVudCksbi52ZWxvY2l0eVVwZGF0ZVN1YnNjcmliZXJzLmdldFNpemUoKSYmbi52ZWxvY2l0eVVwZGF0ZVN1YnNjcmliZXJzLm5vdGlmeShuLmdldFZlbG9jaXR5KCkpLHQmJm4ucmVuZGVyU3Vic2NyaWJlcnMubm90aWZ5KG4uY3VycmVudCl9LHRoaXMuc2NoZWR1bGVWZWxvY2l0eUNoZWNrPWZ1bmN0aW9uKCl7cmV0dXJuIGYuZGVmYXVsdC5wb3N0UmVuZGVyKG4udmVsb2NpdHlDaGVjayl9LHRoaXMudmVsb2NpdHlDaGVjaz1mdW5jdGlvbihlKXtlLnRpbWVzdGFtcCE9PW4ubGFzdFVwZGF0ZWQmJihuLnByZXY9bi5jdXJyZW50LG4udmVsb2NpdHlVcGRhdGVTdWJzY3JpYmVycy5ub3RpZnkobi5nZXRWZWxvY2l0eSgpKSl9LHRoaXMuaGFzQW5pbWF0ZWQ9ITEsdGhpcy5wcmV2PXRoaXMuY3VycmVudD1lLHRoaXMuY2FuVHJhY2tWZWxvY2l0eT0odD10aGlzLmN1cnJlbnQsIWlzTmFOKHBhcnNlRmxvYXQodCkpKX1yZXR1cm4gZS5wcm90b3R5cGUub25DaGFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudXBkYXRlU3Vic2NyaWJlcnMuYWRkKGUpfSxlLnByb3RvdHlwZS5jbGVhckxpc3RlbmVycz1mdW5jdGlvbigpe3RoaXMudXBkYXRlU3Vic2NyaWJlcnMuY2xlYXIoKX0sZS5wcm90b3R5cGUub25SZW5kZXJSZXF1ZXN0PWZ1bmN0aW9uKGUpe3JldHVybiBlKHRoaXMuZ2V0KCkpLHRoaXMucmVuZGVyU3Vic2NyaWJlcnMuYWRkKGUpfSxlLnByb3RvdHlwZS5hdHRhY2g9ZnVuY3Rpb24oZSl7dGhpcy5wYXNzaXZlRWZmZWN0PWV9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PSEwKSx0JiZ0aGlzLnBhc3NpdmVFZmZlY3Q/dGhpcy5wYXNzaXZlRWZmZWN0KGUsdGhpcy51cGRhdGVBbmROb3RpZnkpOnRoaXMudXBkYXRlQW5kTm90aWZ5KGUsdCl9LGUucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnR9LGUucHJvdG90eXBlLmdldFByZXZpb3VzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldn0sZS5wcm90b3R5cGUuZ2V0VmVsb2NpdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW5UcmFja1ZlbG9jaXR5P2wudmVsb2NpdHlQZXJTZWNvbmQocGFyc2VGbG9hdCh0aGlzLmN1cnJlbnQpLXBhcnNlRmxvYXQodGhpcy5wcmV2KSx0aGlzLnRpbWVEZWx0YSk6MH0sZS5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5zdG9wKCksbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4pe3QuaGFzQW5pbWF0ZWQ9ITAsdC5zdG9wQW5pbWF0aW9uPWUobil9KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdC5jbGVhckFuaW1hdGlvbigpfSkpfSxlLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7dGhpcy5zdG9wQW5pbWF0aW9uJiZ0aGlzLnN0b3BBbmltYXRpb24oKSx0aGlzLmNsZWFyQW5pbWF0aW9uKCl9LGUucHJvdG90eXBlLmlzQW5pbWF0aW5nPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnN0b3BBbmltYXRpb259LGUucHJvdG90eXBlLmNsZWFyQW5pbWF0aW9uPWZ1bmN0aW9uKCl7dGhpcy5zdG9wQW5pbWF0aW9uPW51bGx9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLnVwZGF0ZVN1YnNjcmliZXJzLmNsZWFyKCksdGhpcy5yZW5kZXJTdWJzY3JpYmVycy5jbGVhcigpLHRoaXMuc3RvcCgpfSxlfSgpO2Z1bmN0aW9uIEF0KGUpe3JldHVybiBuZXcgVHQoZSl9dmFyIER0PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdC50ZXN0KGUpfX0sQnQ9W2EubnVtYmVyLGEucHgsYS5wZXJjZW50LGEuZGVncmVlcyxhLnZ3LGEudmgse3Rlc3Q6ZnVuY3Rpb24oZSl7cmV0dXJuXCJhdXRvXCI9PT1lfSxwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm4gZX19XSwkdD1mdW5jdGlvbihlKXtyZXR1cm4gQnQuZmluZChEdChlKSl9LEZ0PXIuX19zcHJlYWRBcnJheShyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQoQnQpKSxbYS5jb2xvcixhLmNvbXBsZXhdKTtmdW5jdGlvbiBOdChlLHQsbil7ZS5oYXNWYWx1ZSh0KT9lLmdldFZhbHVlKHQpLnNldChuKTplLmFkZFZhbHVlKHQsQXQobikpfWZ1bmN0aW9uIHp0KGUsdCl7dmFyIG49WihlLHQpLG89bj9lLm1ha2VUYXJnZXRBbmltYXRhYmxlKG4sITEpOnt9LGk9by50cmFuc2l0aW9uRW5kLGE9dm9pZCAwPT09aT97fTppO28udHJhbnNpdGlvbjt2YXIgbD1yLl9fcmVzdChvLFtcInRyYW5zaXRpb25FbmRcIixcInRyYW5zaXRpb25cIl0pO2Zvcih2YXIgYyBpbiBsPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxsKSxhKSlOdChlLGMsa2UobFtjXSkpfWZ1bmN0aW9uIFd0KGUsdCl7ci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKHQpKS5yZXZlcnNlKCkuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIHIsbz1lLmdldFZhcmlhbnQobik7byYmenQoZSxvKSxudWxsPT09KHI9ZS52YXJpYW50Q2hpbGRyZW4pfHx2b2lkIDA9PT1yfHxyLmZvckVhY2goKGZ1bmN0aW9uKGUpe1d0KGUsdCl9KSl9KSl9ZnVuY3Rpb24gR3QoZSx0LG4pe3ZhciByLG8saSxsLGMscz1PYmplY3Qua2V5cyh0KS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiFlLmhhc1ZhbHVlKHQpfSkpLHU9cy5sZW5ndGg7aWYodSlmb3IodmFyIGQ9MDtkPHU7ZCsrKXt2YXIgZj1zW2RdLHA9dFtmXSxDPW51bGw7QXJyYXkuaXNBcnJheShwKSYmKEM9cFswXSksbnVsbD09PUMmJihDPW51bGwhPT0obz1udWxsIT09KHI9bltmXSkmJnZvaWQgMCE9PXI/cjplLnJlYWRWYWx1ZShmKSkmJnZvaWQgMCE9PW8/bzp0W2ZdKSxudWxsIT1DJiYoXCJzdHJpbmdcIj09dHlwZW9mIEMmJi9eXFwtP1xcZCpcXC4/XFxkKyQvLnRlc3QoQyk/Qz1wYXJzZUZsb2F0KEMpOihjPUMsIUZ0LmZpbmQoRHQoYykpJiZhLmNvbXBsZXgudGVzdChwKSYmKEM9RXQoZixwKSkpLGUuYWRkVmFsdWUoZixBdChDKSksbnVsbCE9PShpPShsPW4pW2ZdKSYmdm9pZCAwIT09aXx8KGxbZl09QyksZS5zZXRCYXNlVGFyZ2V0KGYsQykpfX1mdW5jdGlvbiBVdChlLHQpe2lmKHQpcmV0dXJuKHRbZV18fHQuZGVmYXVsdHx8dCkuZnJvbX1mdW5jdGlvbiBxdChlLHQsbil7dmFyIHIsbyxpPXt9O2Zvcih2YXIgYSBpbiBlKWlbYV09bnVsbCE9PShyPVV0KGEsdCkpJiZ2b2lkIDAhPT1yP3I6bnVsbD09PShvPW4uZ2V0VmFsdWUoYSkpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLmdldCgpO3JldHVybiBpfWZ1bmN0aW9uIFl0KGUsdCxuKXt2YXIgcjtpZih2b2lkIDA9PT1uJiYobj17fSksZS5ub3RpZnlBbmltYXRpb25TdGFydCgpLEFycmF5LmlzQXJyYXkodCkpe3ZhciBvPXQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gS3QoZSx0LG4pfSkpO3I9UHJvbWlzZS5hbGwobyl9ZWxzZSBpZihcInN0cmluZ1wiPT10eXBlb2YgdClyPUt0KGUsdCxuKTtlbHNle3ZhciBpPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/WihlLHQsbi5jdXN0b20pOnQ7cj1YdChlLGksbil9cmV0dXJuIHIudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gZS5ub3RpZnlBbmltYXRpb25Db21wbGV0ZSh0KX0pKX1mdW5jdGlvbiBLdChlLHQsbil7dmFyIG87dm9pZCAwPT09biYmKG49e30pO3ZhciBpPVooZSx0LG4uY3VzdG9tKSxhPShpfHx7fSkudHJhbnNpdGlvbixsPXZvaWQgMD09PWE/ZS5nZXREZWZhdWx0VHJhbnNpdGlvbigpfHx7fTphO24udHJhbnNpdGlvbk92ZXJyaWRlJiYobD1uLnRyYW5zaXRpb25PdmVycmlkZSk7dmFyIGM9aT9mdW5jdGlvbigpe3JldHVybiBYdChlLGksbil9OmZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSxzPShudWxsPT09KG89ZS52YXJpYW50Q2hpbGRyZW4pfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLnNpemUpP2Z1bmN0aW9uKG8pe3ZvaWQgMD09PW8mJihvPTApO3ZhciBpPWwuZGVsYXlDaGlsZHJlbixhPXZvaWQgMD09PWk/MDppLGM9bC5zdGFnZ2VyQ2hpbGRyZW4scz1sLnN0YWdnZXJEaXJlY3Rpb247cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLG8saSxhKXt2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1vJiYobz0wKSx2b2lkIDA9PT1pJiYoaT0xKTt2YXIgbD1bXSxjPShlLnZhcmlhbnRDaGlsZHJlbi5zaXplLTEpKm8scz0xPT09aT9mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9MCksZSpvfTpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9MCksYy1lKm99O3JldHVybiBBcnJheS5mcm9tKGUudmFyaWFudENoaWxkcmVuKS5zb3J0KFF0KS5mb3JFYWNoKChmdW5jdGlvbihlLG8pe2wucHVzaChLdChlLHQsci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGEpLHtkZWxheTpuK3Mobyl9KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gZS5ub3RpZnlBbmltYXRpb25Db21wbGV0ZSh0KX0pKSl9KSksUHJvbWlzZS5hbGwobCl9KGUsdCxhK28sYyxzLG4pfTpmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX0sdT1sLndoZW47aWYodSl7dmFyIGQ9ci5fX3JlYWQoXCJiZWZvcmVDaGlsZHJlblwiPT09dT9bYyxzXTpbcyxjXSwyKSxmPWRbMF0scD1kWzFdO3JldHVybiBmKCkudGhlbihwKX1yZXR1cm4gUHJvbWlzZS5hbGwoW2MoKSxzKG4uZGVsYXkpXSl9ZnVuY3Rpb24gWHQoZSx0LG4pe3ZhciBvLGk9dm9pZCAwPT09bj97fTpuLGE9aS5kZWxheSxsPXZvaWQgMD09PWE/MDphLGM9aS50cmFuc2l0aW9uT3ZlcnJpZGUscz1pLnR5cGUsdT1lLm1ha2VUYXJnZXRBbmltYXRhYmxlKHQpLGQ9dS50cmFuc2l0aW9uLGY9dm9pZCAwPT09ZD9lLmdldERlZmF1bHRUcmFuc2l0aW9uKCk6ZCxwPXUudHJhbnNpdGlvbkVuZCxDPXIuX19yZXN0KHUsW1widHJhbnNpdGlvblwiLFwidHJhbnNpdGlvbkVuZFwiXSk7YyYmKGY9Yyk7dmFyIGg9W10sdj1zJiYobnVsbD09PShvPWUuYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLmdldFN0YXRlKClbc10pO2Zvcih2YXIgZyBpbiBDKXt2YXIgbT1lLmdldFZhbHVlKGcpLHc9Q1tnXTtpZighKCFtfHx2b2lkIDA9PT13fHx2JiZKdCh2LGcpKSl7dmFyIHk9VnQoZyxtLHcsci5fX2Fzc2lnbih7ZGVsYXk6bH0sZikpO2gucHVzaCh5KX19cmV0dXJuIFByb21pc2UuYWxsKGgpLnRoZW4oKGZ1bmN0aW9uKCl7cCYmenQoZSxwKX0pKX1mdW5jdGlvbiBRdChlLHQpe3JldHVybiBlLnNvcnROb2RlUG9zaXRpb24odCl9ZnVuY3Rpb24gSnQoZSx0KXt2YXIgbj1lLnByb3RlY3RlZEtleXMscj1lLm5lZWRzQW5pbWF0aW5nLG89bi5oYXNPd25Qcm9wZXJ0eSh0KSYmITAhPT1yW3RdO3JldHVybiByW3RdPSExLG99dmFyIGVuPVtUZS5BbmltYXRlLFRlLkhvdmVyLFRlLlRhcCxUZS5EcmFnLFRlLkZvY3VzLFRlLkV4aXRdLHRuPXIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZChlbikpLnJldmVyc2UoKSxubj1lbi5sZW5ndGg7ZnVuY3Rpb24gcm4oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSx7aXNBY3RpdmU6ZSxwcm90ZWN0ZWRLZXlzOnt9LG5lZWRzQW5pbWF0aW5nOnt9LHByZXZSZXNvbHZlZFZhbHVlczp7fX19dmFyIG9uPXthbmltYXRpb246ZnQoKGZ1bmN0aW9uKGUpe3ZhciB0PWUudmlzdWFsRWxlbWVudCxuPWUuYW5pbWF0ZTt0LmFuaW1hdGlvblN0YXRlfHwodC5hbmltYXRpb25TdGF0ZT1mdW5jdGlvbihlKXt2YXIgdCxuPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gUHJvbWlzZS5hbGwodC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuYW5pbWF0aW9uLHI9dC5vcHRpb25zO3JldHVybiBZdChlLG4scil9KSkpfX0oZSksbz0oKHQ9e30pW1RlLkFuaW1hdGVdPXJuKCEwKSx0W1RlLkhvdmVyXT1ybigpLHRbVGUuVGFwXT1ybigpLHRbVGUuRHJhZ109cm4oKSx0W1RlLkZvY3VzXT1ybigpLHRbVGUuRXhpdF09cm4oKSx0KSxpPXt9LGE9ITAsbD1mdW5jdGlvbih0LG4pe3ZhciBvPVooZSxuKTtpZihvKXtvLnRyYW5zaXRpb247dmFyIGk9by50cmFuc2l0aW9uRW5kLGE9ci5fX3Jlc3QobyxbXCJ0cmFuc2l0aW9uXCIsXCJ0cmFuc2l0aW9uRW5kXCJdKTt0PXIuX19hc3NpZ24oci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHQpLGEpLGkpfXJldHVybiB0fTtmdW5jdGlvbiBjKHQsYyl7Zm9yKHZhciBzLHU9ZS5nZXRQcm9wcygpLGQ9ZS5nZXRWYXJpYW50Q29udGV4dCghMCl8fHt9LGY9W10scD1uZXcgU2V0LEM9e30saD0xLzAsdj1mdW5jdGlvbihuKXt2YXIgaT10bltuXSx2PW9baV0sZz1udWxsIT09KHM9dVtpXSkmJnZvaWQgMCE9PXM/czpkW2ldLG09UihnKSx3PWk9PT1jP3YuaXNBY3RpdmU6bnVsbDshMT09PXcmJihoPW4pO3ZhciB5PWc9PT1kW2ldJiZnIT09dVtpXSYmbTtpZih5JiZhJiZlLm1hbnVhbGx5QW5pbWF0ZU9uTW91bnQmJih5PSExKSx2LnByb3RlY3RlZEtleXM9ci5fX2Fzc2lnbih7fSxDKSwhdi5pc0FjdGl2ZSYmbnVsbD09PXd8fCFnJiYhdi5wcmV2UHJvcHx8U2UoZyl8fFwiYm9vbGVhblwiPT10eXBlb2YgZylyZXR1cm5cImNvbnRpbnVlXCI7dmFyIGI9ZnVuY3Rpb24oZSx0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD90IT09ZTohIVYodCkmJiFDdCh0LGUpfSh2LnByZXZQcm9wLGcpfHxpPT09YyYmdi5pc0FjdGl2ZSYmIXkmJm18fG4+aCYmbSx4PUFycmF5LmlzQXJyYXkoZyk/ZzpbZ10sTz14LnJlZHVjZShsLHt9KTshMT09PXcmJihPPXt9KTt2YXIgTD12LnByZXZSZXNvbHZlZFZhbHVlcyxfPXZvaWQgMD09PUw/e306TCxNPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxfKSxPKSxqPWZ1bmN0aW9uKGUpe2I9ITAscC5kZWxldGUoZSksdi5uZWVkc0FuaW1hdGluZ1tlXT0hMH07Zm9yKHZhciBFIGluIE0pe3ZhciBTPU9bRV0sUD1fW0VdO0MuaGFzT3duUHJvcGVydHkoRSl8fChTIT09UD9QZShTKSYmUGUoUCk/Q3QoUyxQKT92LnByb3RlY3RlZEtleXNbRV09ITA6aihFKTp2b2lkIDAhPT1TP2ooRSk6cC5hZGQoRSk6dm9pZCAwIT09UyYmcC5oYXMoRSk/aihFKTp2LnByb3RlY3RlZEtleXNbRV09ITApfXYucHJldlByb3A9Zyx2LnByZXZSZXNvbHZlZFZhbHVlcz1PLHYuaXNBY3RpdmUmJihDPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxDKSxPKSksYSYmZS5ibG9ja0luaXRpYWxBbmltYXRpb24mJihiPSExKSxiJiYheSYmZi5wdXNoLmFwcGx5KGYsci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKHgubWFwKChmdW5jdGlvbihlKXtyZXR1cm57YW5pbWF0aW9uOmUsb3B0aW9uczpyLl9fYXNzaWduKHt0eXBlOml9LHQpfX0pKSkpKX0sZz0wO2c8bm47ZysrKXYoZyk7aWYoaT1yLl9fYXNzaWduKHt9LEMpLHAuc2l6ZSl7dmFyIG09e307cC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj1lLmdldEJhc2VUYXJnZXQodCk7dm9pZCAwIT09biYmKG1bdF09bil9KSksZi5wdXNoKHthbmltYXRpb246bX0pfXZhciB3PUJvb2xlYW4oZi5sZW5ndGgpO3JldHVybiBhJiYhMT09PXUuaW5pdGlhbCYmIWUubWFudWFsbHlBbmltYXRlT25Nb3VudCYmKHc9ITEpLGE9ITEsdz9uKGYpOlByb21pc2UucmVzb2x2ZSgpfXJldHVybntpc0FuaW1hdGVkOmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1pW2VdfSxhbmltYXRlQ2hhbmdlczpjLHNldEFjdGl2ZTpmdW5jdGlvbih0LG4scil7dmFyIGk7cmV0dXJuIG9bdF0uaXNBY3RpdmU9PT1uP1Byb21pc2UucmVzb2x2ZSgpOihudWxsPT09KGk9ZS52YXJpYW50Q2hpbGRyZW4pfHx2b2lkIDA9PT1pfHxpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByO3JldHVybiBudWxsPT09KHI9ZS5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuc2V0QWN0aXZlKHQsbil9KSksb1t0XS5pc0FjdGl2ZT1uLGMocix0KSl9LHNldEFuaW1hdGVGdW5jdGlvbjpmdW5jdGlvbih0KXtuPXQoZSl9LGdldFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIG99fX0odCkpLFNlKG4pJiZvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gbi5zdWJzY3JpYmUodCl9KSxbbl0pfSkpLGV4aXQ6ZnQoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuY3VzdG9tLG49ZS52aXN1YWxFbGVtZW50LGk9ci5fX3JlYWQoTCgpLDIpLGE9aVswXSxsPWlbMV0sYz1vLnVzZUNvbnRleHQoeCk7by51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7dmFyIGUscixvPW51bGw9PT0oZT1uLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5zZXRBY3RpdmUoVGUuRXhpdCwhYSx7Y3VzdG9tOm51bGwhPT0ocj1udWxsPT1jP3ZvaWQgMDpjLmN1c3RvbSkmJnZvaWQgMCE9PXI/cjp0fSk7IWEmJihudWxsPT1vfHxvLnRoZW4obCkpfSksW2FdKX0pKX0sYW49ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuKXt2YXIgbz10aGlzLGk9KHZvaWQgMD09PW4/e306bikudHJhbnNmb3JtUGFnZVBvaW50O2lmKHRoaXMuc3RhcnRFdmVudD1udWxsLHRoaXMubGFzdE1vdmVFdmVudD1udWxsLHRoaXMubGFzdE1vdmVFdmVudEluZm89bnVsbCx0aGlzLmhhbmRsZXJzPXt9LHRoaXMudXBkYXRlUG9pbnQ9ZnVuY3Rpb24oKXtpZihvLmxhc3RNb3ZlRXZlbnQmJm8ubGFzdE1vdmVFdmVudEluZm8pe3ZhciBlPXNuKG8ubGFzdE1vdmVFdmVudEluZm8sby5oaXN0b3J5KSx0PW51bGwhPT1vLnN0YXJ0RXZlbnQsbj1sLmRpc3RhbmNlKGUub2Zmc2V0LHt4OjAseTowfSk+PTM7aWYodHx8bil7dmFyIGk9ZS5wb2ludCxhPWMuZ2V0RnJhbWVEYXRhKCkudGltZXN0YW1wO28uaGlzdG9yeS5wdXNoKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxpKSx7dGltZXN0YW1wOmF9KSk7dmFyIHM9by5oYW5kbGVycyx1PXMub25TdGFydCxkPXMub25Nb3ZlO3R8fCh1JiZ1KG8ubGFzdE1vdmVFdmVudCxlKSxvLnN0YXJ0RXZlbnQ9by5sYXN0TW92ZUV2ZW50KSxkJiZkKG8ubGFzdE1vdmVFdmVudCxlKX19fSx0aGlzLmhhbmRsZVBvaW50ZXJNb3ZlPWZ1bmN0aW9uKGUsdCl7by5sYXN0TW92ZUV2ZW50PWUsby5sYXN0TW92ZUV2ZW50SW5mbz1sbih0LG8udHJhbnNmb3JtUGFnZVBvaW50KSxOZShlKSYmMD09PWUuYnV0dG9ucz9vLmhhbmRsZVBvaW50ZXJVcChlLHQpOmYuZGVmYXVsdC51cGRhdGUoby51cGRhdGVQb2ludCwhMCl9LHRoaXMuaGFuZGxlUG9pbnRlclVwPWZ1bmN0aW9uKGUsdCl7by5lbmQoKTt2YXIgbj1vLmhhbmRsZXJzLHI9bi5vbkVuZCxpPW4ub25TZXNzaW9uRW5kLGE9c24obG4odCxvLnRyYW5zZm9ybVBhZ2VQb2ludCksby5oaXN0b3J5KTtvLnN0YXJ0RXZlbnQmJnImJnIoZSxhKSxpJiZpKGUsYSl9LCEoemUoZSkmJmUudG91Y2hlcy5sZW5ndGg+MSkpe3RoaXMuaGFuZGxlcnM9dCx0aGlzLnRyYW5zZm9ybVBhZ2VQb2ludD1pO3ZhciBhPWxuKHFlKGUpLHRoaXMudHJhbnNmb3JtUGFnZVBvaW50KSxzPWEucG9pbnQsdT1jLmdldEZyYW1lRGF0YSgpLnRpbWVzdGFtcDt0aGlzLmhpc3Rvcnk9W3IuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxzKSx7dGltZXN0YW1wOnV9KV07dmFyIGQ9dC5vblNlc3Npb25TdGFydDtkJiZkKGUsc24oYSx0aGlzLmhpc3RvcnkpKSx0aGlzLnJlbW92ZUxpc3RlbmVycz1sLnBpcGUobnQod2luZG93LFwicG9pbnRlcm1vdmVcIix0aGlzLmhhbmRsZVBvaW50ZXJNb3ZlKSxudCh3aW5kb3csXCJwb2ludGVydXBcIix0aGlzLmhhbmRsZVBvaW50ZXJVcCksbnQod2luZG93LFwicG9pbnRlcmNhbmNlbFwiLHRoaXMuaGFuZGxlUG9pbnRlclVwKSl9fXJldHVybiBlLnByb3RvdHlwZS51cGRhdGVIYW5kbGVycz1mdW5jdGlvbihlKXt0aGlzLmhhbmRsZXJzPWV9LGUucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3RoaXMucmVtb3ZlTGlzdGVuZXJzJiZ0aGlzLnJlbW92ZUxpc3RlbmVycygpLGMuY2FuY2VsU3luYy51cGRhdGUodGhpcy51cGRhdGVQb2ludCl9LGV9KCk7ZnVuY3Rpb24gbG4oZSx0KXtyZXR1cm4gdD97cG9pbnQ6dChlLnBvaW50KX06ZX1mdW5jdGlvbiBjbihlLHQpe3JldHVybnt4OmUueC10LngseTplLnktdC55fX1mdW5jdGlvbiBzbihlLHQpe3ZhciBuPWUucG9pbnQ7cmV0dXJue3BvaW50Om4sZGVsdGE6Y24obixkbih0KSksb2Zmc2V0OmNuKG4sdW4odCkpLHZlbG9jaXR5OmZuKHQsLjEpfX1mdW5jdGlvbiB1bihlKXtyZXR1cm4gZVswXX1mdW5jdGlvbiBkbihlKXtyZXR1cm4gZVtlLmxlbmd0aC0xXX1mdW5jdGlvbiBmbihlLHQpe2lmKGUubGVuZ3RoPDIpcmV0dXJue3g6MCx5OjB9O2Zvcih2YXIgbj1lLmxlbmd0aC0xLHI9bnVsbCxvPWRuKGUpO24+PTAmJihyPWVbbl0sIShvLnRpbWVzdGFtcC1yLnRpbWVzdGFtcD5odCh0KSkpOyluLS07aWYoIXIpcmV0dXJue3g6MCx5OjB9O3ZhciBpPShvLnRpbWVzdGFtcC1yLnRpbWVzdGFtcCkvMWUzO2lmKDA9PT1pKXJldHVybnt4OjAseTowfTt2YXIgYT17eDooby54LXIueCkvaSx5OihvLnktci55KS9pfTtyZXR1cm4gYS54PT09MS8wJiYoYS54PTApLGEueT09PTEvMCYmKGEueT0wKSxhfWZ1bmN0aW9uIHBuKGUpe3JldHVybiBlfWZ1bmN0aW9uIENuKGUpe3ZhciB0PWUudG9wO3JldHVybnt4OnttaW46ZS5sZWZ0LG1heDplLnJpZ2h0fSx5OnttaW46dCxtYXg6ZS5ib3R0b219fX12YXIgaG49e3RyYW5zbGF0ZTowLHNjYWxlOjEsb3JpZ2luOjAsb3JpZ2luUG9pbnQ6MH07ZnVuY3Rpb24gdm4oKXtyZXR1cm57eDpyLl9fYXNzaWduKHt9LGhuKSx5OnIuX19hc3NpZ24oe30saG4pfX1mdW5jdGlvbiBnbihlKXtyZXR1cm5bZShcInhcIiksZShcInlcIildfWZ1bmN0aW9uIG1uKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09biYmKG49LjAxKSxsLmRpc3RhbmNlKGUsdCk8bn1mdW5jdGlvbiB3bihlKXtyZXR1cm4gZS5tYXgtZS5taW59ZnVuY3Rpb24geW4oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9LjUpLGUub3JpZ2luPXIsZS5vcmlnaW5Qb2ludD1sLm1peCh0Lm1pbix0Lm1heCxlLm9yaWdpbiksZS5zY2FsZT13bihuKS93bih0KSxtbihlLnNjYWxlLDEsMWUtNCkmJihlLnNjYWxlPTEpLGUudHJhbnNsYXRlPWwubWl4KG4ubWluLG4ubWF4LGUub3JpZ2luKS1lLm9yaWdpblBvaW50LG1uKGUudHJhbnNsYXRlKSYmKGUudHJhbnNsYXRlPTApfWZ1bmN0aW9uIGJuKGUsdCxuLHIpe3luKGUueCx0Lngsbi54LHhuKHIub3JpZ2luWCkpLHluKGUueSx0Lnksbi55LHhuKHIub3JpZ2luWSkpfWZ1bmN0aW9uIHhuKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlP2U6LjV9ZnVuY3Rpb24gT24oZSx0LG4pe2UubWluPW4ubWluK3QubWluLGUubWF4PWUubWluK3duKHQpfWZ1bmN0aW9uIExuKGUsdCxuKXt2YXIgcj10Lm1pbixvPXQubWF4O3JldHVybiB2b2lkIDAhPT1yJiZlPHI/ZT1uP2wubWl4KHIsZSxuLm1pbik6TWF0aC5tYXgoZSxyKTp2b2lkIDAhPT1vJiZlPm8mJihlPW4/bC5taXgobyxlLG4ubWF4KTpNYXRoLm1pbihlLG8pKSxlfWZ1bmN0aW9uIF9uKGUsdCxuKXtyZXR1cm57bWluOnZvaWQgMCE9PXQ/ZS5taW4rdDp2b2lkIDAsbWF4OnZvaWQgMCE9PW4/ZS5tYXgrbi0oZS5tYXgtZS5taW4pOnZvaWQgMH19ZnVuY3Rpb24gTW4oZSx0KXt2YXIgbixvPXQubWluLWUubWluLGk9dC5tYXgtZS5tYXg7cmV0dXJuIHQubWF4LXQubWluPGUubWF4LWUubWluJiYobz0obj1yLl9fcmVhZChbaSxvXSwyKSlbMF0saT1uWzFdKSx7bWluOmUubWluK28sbWF4OmUubWluK2l9fWZ1bmN0aW9uIGpuKGUsdCxuKXtyZXR1cm57bWluOkVuKGUsdCksbWF4OkVuKGUsbil9fWZ1bmN0aW9uIEVuKGUsdCl7dmFyIG47cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGU/ZTpudWxsIT09KG49ZVt0XSkmJnZvaWQgMCE9PW4/bjowfWZ1bmN0aW9uIFNuKGUsdCl7cmV0dXJuIENuKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS50b3Ascj1lLmxlZnQsbz1lLmJvdHRvbSxpPWUucmlnaHQ7dm9pZCAwPT09dCYmKHQ9cG4pO3ZhciBhPXQoe3g6cix5Om59KSxsPXQoe3g6aSx5Om99KTtyZXR1cm57dG9wOmEueSxsZWZ0OmEueCxib3R0b206bC55LHJpZ2h0OmwueH19KGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdCkpfXZhciBQbj1mdW5jdGlvbihlLHQpe3JldHVybiBlLmRlcHRoLXQuZGVwdGh9O2Z1bmN0aW9uIEhuKGUpe3JldHVybiBlLnByb2plY3Rpb24uaXNFbmFibGVkfHxlLnNob3VsZFJlc2V0VHJhbnNmb3JtKCl9ZnVuY3Rpb24ga24oZSx0KXt2b2lkIDA9PT10JiYodD1bXSk7dmFyIG49ZS5wYXJlbnQ7cmV0dXJuIG4mJmtuKG4sdCksSG4oZSkmJnQucHVzaChlKSx0fWZ1bmN0aW9uIFZuKGUpe2lmKCFlLnNob3VsZFJlc2V0VHJhbnNmb3JtKCkpe3ZhciB0LG49ZS5nZXRMYXlvdXRTdGF0ZSgpO2Uubm90aWZ5QmVmb3JlTGF5b3V0TWVhc3VyZShuLmxheW91dCksbi5pc0h5ZHJhdGVkPSEwLG4ubGF5b3V0PWUubWVhc3VyZVZpZXdwb3J0Qm94KCksbi5sYXlvdXRDb3JyZWN0ZWQ9KHQ9bi5sYXlvdXQse3g6ci5fX2Fzc2lnbih7fSx0LngpLHk6ci5fX2Fzc2lnbih7fSx0LnkpfSksZS5ub3RpZnlMYXlvdXRNZWFzdXJlKG4ubGF5b3V0LGUucHJldlZpZXdwb3J0Qm94fHxuLmxheW91dCksZi5kZWZhdWx0LnVwZGF0ZSgoZnVuY3Rpb24oKXtyZXR1cm4gZS5yZWJhc2VQcm9qZWN0aW9uVGFyZ2V0KCl9KSl9fWZ1bmN0aW9uIFJuKGUpe2Uuc2hvdWxkUmVzZXRUcmFuc2Zvcm0oKXx8KGUucHJldlZpZXdwb3J0Qm94PWUubWVhc3VyZVZpZXdwb3J0Qm94KCExKSxlLnJlYmFzZVByb2plY3Rpb25UYXJnZXQoITEsZS5wcmV2Vmlld3BvcnRCb3gpKX1mdW5jdGlvbiBJbihlLHQpe3JldHVybnttaW46dC5taW4tZS5taW4sbWF4OnQubWF4LWUubWlufX1mdW5jdGlvbiBabihlLHQpe3JldHVybnt4OkluKGUueCx0LngpLHk6SW4oZS55LHQueSl9fWZ1bmN0aW9uIFRuKGUpe3ZhciB0PWUuZ2V0UHJvcHMoKSxuPXQuZHJhZyxyPXQuX2RyYWdYO3JldHVybiBuJiYhcn1mdW5jdGlvbiBBbihlLHQpe2UubWluPXQubWluLGUubWF4PXQubWF4fWZ1bmN0aW9uIERuKGUsdCxuKXtyZXR1cm4gbit0KihlLW4pfWZ1bmN0aW9uIEJuKGUsdCxuLHIsbyl7cmV0dXJuIHZvaWQgMCE9PW8mJihlPURuKGUsbyxyKSksRG4oZSxuLHIpK3R9ZnVuY3Rpb24gJG4oZSx0LG4scixvKXt2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1uJiYobj0xKSxlLm1pbj1CbihlLm1pbix0LG4scixvKSxlLm1heD1CbihlLm1heCx0LG4scixvKX1mdW5jdGlvbiBGbihlLHQpe3ZhciBuPXQueCxyPXQueTskbihlLngsbi50cmFuc2xhdGUsbi5zY2FsZSxuLm9yaWdpblBvaW50KSwkbihlLnksci50cmFuc2xhdGUsci5zY2FsZSxyLm9yaWdpblBvaW50KX1mdW5jdGlvbiBObihlLHQsbixvKXt2YXIgaT1yLl9fcmVhZChvLDMpLGE9aVswXSxjPWlbMV0scz1pWzJdO2UubWluPXQubWluLGUubWF4PXQubWF4O3ZhciB1PXZvaWQgMCE9PW5bc10/bltzXTouNSxkPWwubWl4KHQubWluLHQubWF4LHUpOyRuKGUsblthXSxuW2NdLGQsbi5zY2FsZSl9dmFyIHpuPVtcInhcIixcInNjYWxlWFwiLFwib3JpZ2luWFwiXSxXbj1bXCJ5XCIsXCJzY2FsZVlcIixcIm9yaWdpbllcIl07ZnVuY3Rpb24gR24oZSx0LG4pe05uKGUueCx0Lngsbix6biksTm4oZS55LHQueSxuLFduKX1mdW5jdGlvbiBVbihlLHQsbixyLG8pe3JldHVybiBlPURuKGUtPXQsMS9uLHIpLHZvaWQgMCE9PW8mJihlPURuKGUsMS9vLHIpKSxlfWZ1bmN0aW9uIHFuKGUsdCxuKXt2YXIgbz1yLl9fcmVhZChuLDMpLGk9b1swXSxhPW9bMV0sYz1vWzJdOyFmdW5jdGlvbihlLHQsbixyLG8pe3ZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PW4mJihuPTEpLHZvaWQgMD09PXImJihyPS41KTt2YXIgaT1sLm1peChlLm1pbixlLm1heCxyKS10O2UubWluPVVuKGUubWluLHQsbixpLG8pLGUubWF4PVVuKGUubWF4LHQsbixpLG8pfShlLHRbaV0sdFthXSx0W2NdLHQuc2NhbGUpfWZ1bmN0aW9uIFluKGUsdCl7cW4oZS54LHQsem4pLHFuKGUueSx0LFduKX12YXIgS249bmV3IFNldDtmdW5jdGlvbiBYbihlLHQsbil7ZVtuXXx8KGVbbl09W10pLGVbbl0ucHVzaCh0KX1mdW5jdGlvbiBRbihlKXtyZXR1cm4gS24uYWRkKGUpLGZ1bmN0aW9uKCl7cmV0dXJuIEtuLmRlbGV0ZShlKX19ZnVuY3Rpb24gSm4oKXtpZihLbi5zaXplKXt2YXIgZT0wLHQ9W1tdXSxuPVtdLHI9ZnVuY3Rpb24obil7cmV0dXJuIFhuKHQsbixlKX0sbz1mdW5jdGlvbih0KXtYbihuLHQsZSksZSsrfTtLbi5mb3JFYWNoKChmdW5jdGlvbih0KXt0KHIsbyksZT0wfSkpLEtuLmNsZWFyKCk7Zm9yKHZhciBpPW4ubGVuZ3RoLGE9MDthPD1pO2ErKyl0W2FdJiZ0W2FdLmZvckVhY2godHIpLG5bYV0mJm5bYV0uZm9yRWFjaCh0cil9fXZhciBlcix0cj1mdW5jdGlvbihlKXtyZXR1cm4gZSgpfSxucj1uZXcgV2Vha01hcCxycj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQ9ZS52aXN1YWxFbGVtZW50O3RoaXMuaXNEcmFnZ2luZz0hMSx0aGlzLmN1cnJlbnREaXJlY3Rpb249bnVsbCx0aGlzLmNvbnN0cmFpbnRzPSExLHRoaXMuZWxhc3RpYz17eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX0sdGhpcy5wcm9wcz17fSx0aGlzLmhhc011dGF0ZWRDb25zdHJhaW50cz0hMSx0aGlzLmN1cnNvclByb2dyZXNzPXt4Oi41LHk6LjV9LHRoaXMub3JpZ2luUG9pbnQ9e30sdGhpcy5vcGVuR2xvYmFsTG9jaz1udWxsLHRoaXMucGFuU2Vzc2lvbj1udWxsLHRoaXMudmlzdWFsRWxlbWVudD10LHRoaXMudmlzdWFsRWxlbWVudC5lbmFibGVMYXlvdXRQcm9qZWN0aW9uKCksbnIuc2V0KHQsdGhpcyl9cmV0dXJuIGUucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxvPXZvaWQgMD09PXQ/e306dCxpPW8uc25hcFRvQ3Vyc29yLGE9dm9pZCAwIT09aSYmaSxzPW8uY3Vyc29yUHJvZ3Jlc3MsdT10aGlzLnByb3BzLnRyYW5zZm9ybVBhZ2VQb2ludDt0aGlzLnBhblNlc3Npb249bmV3IGFuKGUse29uU2Vzc2lvblN0YXJ0OmZ1bmN0aW9uKGUpe3ZhciB0O24uc3RvcE1vdGlvbigpO3ZhciBvPWZ1bmN0aW9uKGUpe3JldHVybiBxZShlLFwiY2xpZW50XCIpfShlKS5wb2ludDtudWxsPT09KHQ9bi5jYW5jZWxMYXlvdXQpfHx2b2lkIDA9PT10fHx0LmNhbGwobiksbi5jYW5jZWxMYXlvdXQ9UW4oKGZ1bmN0aW9uKGUsdCl7dmFyIGk9a24obi52aXN1YWxFbGVtZW50KSx1PWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49ZnVuY3Rpb24oZSl7SG4oZSkmJnQucHVzaChlKSxlLmNoaWxkcmVuLmZvckVhY2gobil9O3JldHVybiBlLmNoaWxkcmVuLmZvckVhY2gobiksdC5zb3J0KFBuKX0obi52aXN1YWxFbGVtZW50KSxkPXIuX19zcHJlYWRBcnJheShyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQoaSkpLHIuX19yZWFkKHUpKSxmPSExO24uaXNMYXlvdXREcmFnKCkmJm4udmlzdWFsRWxlbWVudC5sb2NrUHJvamVjdGlvblRhcmdldCgpLHQoKGZ1bmN0aW9uKCl7ZC5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXNldFRyYW5zZm9ybSgpfSkpfSkpLGUoKGZ1bmN0aW9uKCl7Vm4obi52aXN1YWxFbGVtZW50KSx1LmZvckVhY2goVm4pfSkpLHQoKGZ1bmN0aW9uKCl7ZC5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXN0b3JlVHJhbnNmb3JtKCl9KSksYSYmKGY9bi5zbmFwVG9DdXJzb3IobykpfSkpLGUoKGZ1bmN0aW9uKCl7Qm9vbGVhbihuLmdldEF4aXNNb3Rpb25WYWx1ZShcInhcIikmJiFuLmlzRXh0ZXJuYWxEcmFnKCkpfHxuLnZpc3VhbEVsZW1lbnQucmViYXNlUHJvamVjdGlvblRhcmdldCghMCxuLnZpc3VhbEVsZW1lbnQubWVhc3VyZVZpZXdwb3J0Qm94KCExKSksbi52aXN1YWxFbGVtZW50LnNjaGVkdWxlVXBkYXRlTGF5b3V0UHJvamVjdGlvbigpO3ZhciBlPW4udmlzdWFsRWxlbWVudC5wcm9qZWN0aW9uO2duKChmdW5jdGlvbih0KXtpZighZil7dmFyIHI9ZS50YXJnZXRbdF0saT1yLm1pbixhPXIubWF4O24uY3Vyc29yUHJvZ3Jlc3NbdF09cz9zW3RdOmwucHJvZ3Jlc3MoaSxhLG9bdF0pfXZhciBjPW4uZ2V0QXhpc01vdGlvblZhbHVlKHQpO2MmJihuLm9yaWdpblBvaW50W3RdPWMuZ2V0KCkpfSkpfSkpLHQoKGZ1bmN0aW9uKCl7Yy5mbHVzaFN5bmMudXBkYXRlKCksYy5mbHVzaFN5bmMucHJlUmVuZGVyKCksYy5mbHVzaFN5bmMucmVuZGVyKCksYy5mbHVzaFN5bmMucG9zdFJlbmRlcigpfSkpLGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG4ucmVzb2x2ZURyYWdDb25zdHJhaW50cygpfSkpfSkpfSxvblN0YXJ0OmZ1bmN0aW9uKGUsdCl7dmFyIHIsbyxpLGE9bi5wcm9wcyxsPWEuZHJhZyxjPWEuZHJhZ1Byb3BhZ2F0aW9uOyghbHx8Y3x8KG4ub3Blbkdsb2JhbExvY2smJm4ub3Blbkdsb2JhbExvY2soKSxuLm9wZW5HbG9iYWxMb2NrPWx0KGwpLG4ub3Blbkdsb2JhbExvY2spKSYmKEpuKCksbi5pc0RyYWdnaW5nPSEwLG4uY3VycmVudERpcmVjdGlvbj1udWxsLG51bGw9PT0obz0ocj1uLnByb3BzKS5vbkRyYWdTdGFydCl8fHZvaWQgMD09PW98fG8uY2FsbChyLGUsdCksbnVsbD09PShpPW4udmlzdWFsRWxlbWVudC5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PWl8fGkuc2V0QWN0aXZlKFRlLkRyYWcsITApKX0sb25Nb3ZlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbyxpLGEsbD1uLnByb3BzLGM9bC5kcmFnUHJvcGFnYXRpb24scz1sLmRyYWdEaXJlY3Rpb25Mb2NrO2lmKGN8fG4ub3Blbkdsb2JhbExvY2spe3ZhciB1PXQub2Zmc2V0O2lmKHMmJm51bGw9PT1uLmN1cnJlbnREaXJlY3Rpb24pcmV0dXJuIG4uY3VycmVudERpcmVjdGlvbj1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PTEwKTt2YXIgbj1udWxsO3JldHVybiBNYXRoLmFicyhlLnkpPnQ/bj1cInlcIjpNYXRoLmFicyhlLngpPnQmJihuPVwieFwiKSxufSh1KSx2b2lkKG51bGwhPT1uLmN1cnJlbnREaXJlY3Rpb24mJihudWxsPT09KG89KHI9bi5wcm9wcykub25EaXJlY3Rpb25Mb2NrKXx8dm9pZCAwPT09b3x8by5jYWxsKHIsbi5jdXJyZW50RGlyZWN0aW9uKSkpO24udXBkYXRlQXhpcyhcInhcIix0LnBvaW50LHUpLG4udXBkYXRlQXhpcyhcInlcIix0LnBvaW50LHUpLG51bGw9PT0oYT0oaT1uLnByb3BzKS5vbkRyYWcpfHx2b2lkIDA9PT1hfHxhLmNhbGwoaSxlLHQpLGVyPWV9fSxvblNlc3Npb25FbmQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5zdG9wKGUsdCl9fSx7dHJhbnNmb3JtUGFnZVBvaW50OnV9KX0sZS5wcm90b3R5cGUucmVzb2x2ZURyYWdDb25zdHJhaW50cz1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49dC5kcmFnQ29uc3RyYWludHMscj10LmRyYWdFbGFzdGljLG89dGhpcy52aXN1YWxFbGVtZW50LmdldExheW91dFN0YXRlKCkubGF5b3V0Q29ycmVjdGVkO3RoaXMuY29uc3RyYWludHM9ISFuJiYoayhuKT90aGlzLnJlc29sdmVSZWZDb25zdHJhaW50cyhvLG4pOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC50b3Ascj10LmxlZnQsbz10LmJvdHRvbSxpPXQucmlnaHQ7cmV0dXJue3g6X24oZS54LHIsaSkseTpfbihlLnksbixvKX19KG8sbikpLHRoaXMuZWxhc3RpYz1mdW5jdGlvbihlKXtyZXR1cm4hMT09PWU/ZT0wOiEwPT09ZSYmKGU9LjM1KSx7eDpqbihlLFwibGVmdFwiLFwicmlnaHRcIikseTpqbihlLFwidG9wXCIsXCJib3R0b21cIil9fShyKSx0aGlzLmNvbnN0cmFpbnRzJiYhdGhpcy5oYXNNdXRhdGVkQ29uc3RyYWludHMmJmduKChmdW5jdGlvbih0KXtlLmdldEF4aXNNb3Rpb25WYWx1ZSh0KSYmKGUuY29uc3RyYWludHNbdF09ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtyZXR1cm4gdm9pZCAwIT09dC5taW4mJihuLm1pbj10Lm1pbi1lLm1pbiksdm9pZCAwIT09dC5tYXgmJihuLm1heD10Lm1heC1lLm1pbiksbn0ob1t0XSxlLmNvbnN0cmFpbnRzW3RdKSl9KSl9LGUucHJvdG90eXBlLnJlc29sdmVSZWZDb25zdHJhaW50cz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucHJvcHMscj1uLm9uTWVhc3VyZURyYWdDb25zdHJhaW50cyxvPW4udHJhbnNmb3JtUGFnZVBvaW50LGE9dC5jdXJyZW50O2kuaW52YXJpYW50KG51bGwhPT1hLFwiSWYgYGRyYWdDb25zdHJhaW50c2AgaXMgc2V0IGFzIGEgUmVhY3QgcmVmLCB0aGF0IHJlZiBtdXN0IGJlIHBhc3NlZCB0byBhbm90aGVyIGNvbXBvbmVudCdzIGByZWZgIHByb3AuXCIpLHRoaXMuY29uc3RyYWludHNCb3g9U24oYSxvKTt2YXIgbD1mdW5jdGlvbihlLHQpe3JldHVybnt4Ok1uKGUueCx0LngpLHk6TW4oZS55LHQueSl9fShlLHRoaXMuY29uc3RyYWludHNCb3gpO2lmKHIpe3ZhciBjPXIoZnVuY3Rpb24oZSl7dmFyIHQ9ZS54LG49ZS55O3JldHVybnt0b3A6bi5taW4sYm90dG9tOm4ubWF4LGxlZnQ6dC5taW4scmlnaHQ6dC5tYXh9fShsKSk7dGhpcy5oYXNNdXRhdGVkQ29uc3RyYWludHM9ISFjLGMmJihsPUNuKGMpKX1yZXR1cm4gbH0sZS5wcm90b3R5cGUuY2FuY2VsRHJhZz1mdW5jdGlvbigpe3ZhciBlLHQ7dGhpcy52aXN1YWxFbGVtZW50LnVubG9ja1Byb2plY3Rpb25UYXJnZXQoKSxudWxsPT09KGU9dGhpcy5jYW5jZWxMYXlvdXQpfHx2b2lkIDA9PT1lfHxlLmNhbGwodGhpcyksdGhpcy5pc0RyYWdnaW5nPSExLHRoaXMucGFuU2Vzc2lvbiYmdGhpcy5wYW5TZXNzaW9uLmVuZCgpLHRoaXMucGFuU2Vzc2lvbj1udWxsLCF0aGlzLnByb3BzLmRyYWdQcm9wYWdhdGlvbiYmdGhpcy5vcGVuR2xvYmFsTG9jayYmKHRoaXMub3Blbkdsb2JhbExvY2soKSx0aGlzLm9wZW5HbG9iYWxMb2NrPW51bGwpLG51bGw9PT0odD10aGlzLnZpc3VhbEVsZW1lbnQuYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT10fHx0LnNldEFjdGl2ZShUZS5EcmFnLCExKX0sZS5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbztudWxsPT09KG49dGhpcy5wYW5TZXNzaW9uKXx8dm9pZCAwPT09bnx8bi5lbmQoKSx0aGlzLnBhblNlc3Npb249bnVsbDt2YXIgaT10aGlzLmlzRHJhZ2dpbmc7aWYodGhpcy5jYW5jZWxEcmFnKCksaSl7dmFyIGE9dC52ZWxvY2l0eTt0aGlzLmFuaW1hdGVEcmFnRW5kKGEpLG51bGw9PT0obz0ocj10aGlzLnByb3BzKS5vbkRyYWdFbmQpfHx2b2lkIDA9PT1vfHxvLmNhbGwocixlLHQpfX0sZS5wcm90b3R5cGUuc25hcFRvQ3Vyc29yPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIGduKChmdW5jdGlvbihuKXtpZihvcihuLHQucHJvcHMuZHJhZyx0LmN1cnJlbnREaXJlY3Rpb24pKXt2YXIgcj10LmdldEF4aXNNb3Rpb25WYWx1ZShuKTtpZighcilyZXR1cm4gdC5jdXJzb3JQcm9ncmVzc1tuXT0uNSwhMDt2YXIgbz10LnZpc3VhbEVsZW1lbnQuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXQsaT1vW25dLm1heC1vW25dLm1pbixhPW9bbl0ubWluK2kvMixsPWVbbl0tYTt0Lm9yaWdpblBvaW50W25dPWVbbl0sci5zZXQobCl9fSkpLmluY2x1ZGVzKCEwKX0sZS5wcm90b3R5cGUudXBkYXRlQXhpcz1mdW5jdGlvbihlLHQsbil7aWYob3IoZSx0aGlzLnByb3BzLmRyYWcsdGhpcy5jdXJyZW50RGlyZWN0aW9uKSlyZXR1cm4gdGhpcy5nZXRBeGlzTW90aW9uVmFsdWUoZSk/dGhpcy51cGRhdGVBeGlzTW90aW9uVmFsdWUoZSxuKTp0aGlzLnVwZGF0ZVZpc3VhbEVsZW1lbnRBeGlzKGUsdCl9LGUucHJvdG90eXBlLnVwZGF0ZUF4aXNNb3Rpb25WYWx1ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0QXhpc01vdGlvblZhbHVlKGUpO2lmKHQmJm4pe3ZhciByPXRoaXMub3JpZ2luUG9pbnRbZV0rdFtlXSxvPXRoaXMuY29uc3RyYWludHM/TG4ocix0aGlzLmNvbnN0cmFpbnRzW2VdLHRoaXMuZWxhc3RpY1tlXSk6cjtuLnNldChvKX19LGUucHJvdG90eXBlLnVwZGF0ZVZpc3VhbEVsZW1lbnRBeGlzPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj10aGlzLnZpc3VhbEVsZW1lbnQuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXRbZV0sbz1yLm1heC1yLm1pbixpPXRoaXMuY3Vyc29yUHJvZ3Jlc3NbZV0sYT1mdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpPWUtdCpuO3JldHVybiByP0xuKGkscixvKTppfSh0W2VdLG8saSxudWxsPT09KG49dGhpcy5jb25zdHJhaW50cyl8fHZvaWQgMD09PW4/dm9pZCAwOm5bZV0sdGhpcy5lbGFzdGljW2VdKTt0aGlzLnZpc3VhbEVsZW1lbnQuc2V0UHJvamVjdGlvblRhcmdldEF4aXMoZSxhLGErbyl9LGUucHJvdG90eXBlLnNldFByb3BzPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZHJhZyxuPXZvaWQgMCE9PXQmJnQsbz1lLmRyYWdEaXJlY3Rpb25Mb2NrLGk9dm9pZCAwIT09byYmbyxhPWUuZHJhZ1Byb3BhZ2F0aW9uLGw9dm9pZCAwIT09YSYmYSxjPWUuZHJhZ0NvbnN0cmFpbnRzLHM9dm9pZCAwIT09YyYmYyx1PWUuZHJhZ0VsYXN0aWMsZD12b2lkIDA9PT11Py4zNTp1LGY9ZS5kcmFnTW9tZW50dW0scD12b2lkIDA9PT1mfHxmLEM9ci5fX3Jlc3QoZSxbXCJkcmFnXCIsXCJkcmFnRGlyZWN0aW9uTG9ja1wiLFwiZHJhZ1Byb3BhZ2F0aW9uXCIsXCJkcmFnQ29uc3RyYWludHNcIixcImRyYWdFbGFzdGljXCIsXCJkcmFnTW9tZW50dW1cIl0pO3RoaXMucHJvcHM9ci5fX2Fzc2lnbih7ZHJhZzpuLGRyYWdEaXJlY3Rpb25Mb2NrOmksZHJhZ1Byb3BhZ2F0aW9uOmwsZHJhZ0NvbnN0cmFpbnRzOnMsZHJhZ0VsYXN0aWM6ZCxkcmFnTW9tZW50dW06cH0sQyl9LGUucHJvdG90eXBlLmdldEF4aXNNb3Rpb25WYWx1ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLG49dC5sYXlvdXQscj10LmxheW91dElkLG89XCJfZHJhZ1wiK2UudG9VcHBlckNhc2UoKTtyZXR1cm4gdGhpcy5wcm9wc1tvXT90aGlzLnByb3BzW29dOm58fHZvaWQgMCE9PXI/dm9pZCAwOnRoaXMudmlzdWFsRWxlbWVudC5nZXRWYWx1ZShlLDApfSxlLnByb3RvdHlwZS5pc0xheW91dERyYWc9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5nZXRBeGlzTW90aW9uVmFsdWUoXCJ4XCIpfSxlLnByb3RvdHlwZS5pc0V4dGVybmFsRHJhZz1mdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLl9kcmFnWCxuPWUuX2RyYWdZO3JldHVybiB0fHxufSxlLnByb3RvdHlwZS5hbmltYXRlRHJhZ0VuZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy5wcm9wcyxvPW4uZHJhZyxpPW4uZHJhZ01vbWVudHVtLGE9bi5kcmFnRWxhc3RpYyxsPW4uZHJhZ1RyYW5zaXRpb24sYz1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PSEwKTt2YXIgbixyPWUuZ2V0UHJvamVjdGlvblBhcmVudCgpO3JldHVybiEhciYmKHQ/WW4obj1abihyLnByb2plY3Rpb24udGFyZ2V0LGUucHJvamVjdGlvbi50YXJnZXQpLHIuZ2V0TGF0ZXN0VmFsdWVzKCkpOm49Wm4oci5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dCxlLmdldExheW91dFN0YXRlKCkubGF5b3V0KSxnbigoZnVuY3Rpb24odCl7cmV0dXJuIGUuc2V0UHJvamVjdGlvblRhcmdldEF4aXModCxuW3RdLm1pbixuW3RdLm1heCwhMCl9KSksITApfSh0aGlzLnZpc3VhbEVsZW1lbnQsdGhpcy5pc0xheW91dERyYWcoKSYmIXRoaXMuaXNFeHRlcm5hbERyYWcoKSkscz10aGlzLmNvbnN0cmFpbnRzfHx7fTtpZihjJiZPYmplY3Qua2V5cyhzKS5sZW5ndGgmJnRoaXMuaXNMYXlvdXREcmFnKCkpe3ZhciB1PXRoaXMudmlzdWFsRWxlbWVudC5nZXRQcm9qZWN0aW9uUGFyZW50KCk7aWYodSl7dmFyIGQ9Wm4odS5wcm9qZWN0aW9uLnRhcmdldEZpbmFsLHMpO2duKChmdW5jdGlvbihlKXt2YXIgdD1kW2VdLG49dC5taW4scj10Lm1heDtzW2VdPXttaW46aXNOYU4obik/dm9pZCAwOm4sbWF4OmlzTmFOKHIpP3ZvaWQgMDpyfX0pKX19dmFyIGY9Z24oKGZ1bmN0aW9uKG4pe3ZhciB1O2lmKG9yKG4sbyx0LmN1cnJlbnREaXJlY3Rpb24pKXt2YXIgZD1udWxsIT09KHU9bnVsbD09cz92b2lkIDA6c1tuXSkmJnZvaWQgMCE9PXU/dTp7fSxmPWE/MjAwOjFlNixwPWE/NDA6MWU3LEM9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt0eXBlOlwiaW5lcnRpYVwiLHZlbG9jaXR5Omk/ZVtuXTowLGJvdW5jZVN0aWZmbmVzczpmLGJvdW5jZURhbXBpbmc6cCx0aW1lQ29uc3RhbnQ6NzUwLHJlc3REZWx0YToxLHJlc3RTcGVlZDoxMH0sbCksZCk7cmV0dXJuIHQuZ2V0QXhpc01vdGlvblZhbHVlKG4pP3Quc3RhcnRBeGlzVmFsdWVBbmltYXRpb24obixDKTp0LnZpc3VhbEVsZW1lbnQuc3RhcnRMYXlvdXRBbmltYXRpb24obixDLGMpfX0pKTtyZXR1cm4gUHJvbWlzZS5hbGwoZikudGhlbigoZnVuY3Rpb24oKXt2YXIgZSxuO251bGw9PT0obj0oZT10LnByb3BzKS5vbkRyYWdUcmFuc2l0aW9uRW5kKXx8dm9pZCAwPT09bnx8bi5jYWxsKGUpfSkpfSxlLnByb3RvdHlwZS5zdG9wTW90aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztnbigoZnVuY3Rpb24odCl7dmFyIG49ZS5nZXRBeGlzTW90aW9uVmFsdWUodCk7bj9uLnN0b3AoKTplLnZpc3VhbEVsZW1lbnQuc3RvcExheW91dEFuaW1hdGlvbigpfSkpfSxlLnByb3RvdHlwZS5zdGFydEF4aXNWYWx1ZUFuaW1hdGlvbj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0QXhpc01vdGlvblZhbHVlKGUpO2lmKG4pe3ZhciByPW4uZ2V0KCk7cmV0dXJuIG4uc2V0KHIpLG4uc2V0KHIpLFZ0KGUsbiwwLHQpfX0sZS5wcm90b3R5cGUuc2NhbGVQb2ludD1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49dC5kcmFnO2lmKGsodC5kcmFnQ29uc3RyYWludHMpJiZ0aGlzLmNvbnN0cmFpbnRzQm94KXt0aGlzLnN0b3BNb3Rpb24oKTt2YXIgcj17eDowLHk6MH07Z24oKGZ1bmN0aW9uKHQpe3ZhciBuLG8saSxhLGMscztyW3RdPShuPWUudmlzdWFsRWxlbWVudC5wcm9qZWN0aW9uLnRhcmdldFt0XSxvPWUuY29uc3RyYWludHNCb3hbdF0sYT0uNSxjPXduKG4pLChzPXduKG8pKT5jP2E9bC5wcm9ncmVzcyhvLm1pbixvLm1heC1jLG4ubWluKTpjPnMmJihhPWwucHJvZ3Jlc3Mobi5taW4sbi5tYXgtcyxvLm1pbikpLGk9YSxsLmNsYW1wKDAsMSxpKSl9KSksdGhpcy51cGRhdGVDb25zdHJhaW50cygoZnVuY3Rpb24oKXtnbigoZnVuY3Rpb24odCl7aWYob3IodCxuLG51bGwpKXt2YXIgbz1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5tYXgtZS5taW4sbz1sLm1peCh0Lm1pbix0Lm1heC1yLG4pO3JldHVybnttaW46byxtYXg6bytyfX0oZS52aXN1YWxFbGVtZW50LnByb2plY3Rpb24udGFyZ2V0W3RdLGUuY29uc3RyYWludHNCb3hbdF0sclt0XSksaT1vLm1pbixhPW8ubWF4O2UudmlzdWFsRWxlbWVudC5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyh0LGksYSl9fSkpfSkpLHNldFRpbWVvdXQoSm4sMSl9fSxlLnByb3RvdHlwZS51cGRhdGVDb25zdHJhaW50cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3RoaXMuY2FuY2VsTGF5b3V0PVFuKChmdW5jdGlvbihuLHIpe3ZhciBvPWtuKHQudmlzdWFsRWxlbWVudCk7cigoZnVuY3Rpb24oKXtyZXR1cm4gby5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXNldFRyYW5zZm9ybSgpfSkpfSkpLG4oKGZ1bmN0aW9uKCl7cmV0dXJuIFZuKHQudmlzdWFsRWxlbWVudCl9KSkscigoZnVuY3Rpb24oKXtyZXR1cm4gby5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXN0b3JlVHJhbnNmb3JtKCl9KSl9KSksbigoZnVuY3Rpb24oKXt0LnJlc29sdmVEcmFnQ29uc3RyYWludHMoKX0pKSxlJiZyKGUpfSkpfSxlLnByb3RvdHlwZS5tb3VudD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLG49bnQoZS5nZXRJbnN0YW5jZSgpLFwicG9pbnRlcmRvd25cIiwoZnVuY3Rpb24oZSl7dmFyIG49dC5wcm9wcyxyPW4uZHJhZyxvPW4uZHJhZ0xpc3RlbmVyO3ImJih2b2lkIDA9PT1vfHxvKSYmdC5zdGFydChlKX0pKSxyPSRlKHdpbmRvdyxcInJlc2l6ZVwiLChmdW5jdGlvbigpe3Quc2NhbGVQb2ludCgpfSkpLG89ZS5vbkxheW91dFVwZGF0ZSgoZnVuY3Rpb24oKXt0LmlzRHJhZ2dpbmcmJnQucmVzb2x2ZURyYWdDb25zdHJhaW50cygpfSkpLGk9ZS5wcmV2RHJhZ0N1cnNvcjtyZXR1cm4gaSYmdGhpcy5zdGFydChlcix7Y3Vyc29yUHJvZ3Jlc3M6aX0pLGZ1bmN0aW9uKCl7bnVsbD09bnx8bigpLG51bGw9PXJ8fHIoKSxudWxsPT1vfHxvKCksdC5jYW5jZWxEcmFnKCl9fSxlfSgpO2Z1bmN0aW9uIG9yKGUsdCxuKXtyZXR1cm4hKCEwIT09dCYmdCE9PWV8fG51bGwhPT1uJiZuIT09ZSl9dmFyIGlyLGFyLGxyPXtwYW46ZnQoKGZ1bmN0aW9uKGUpe3ZhciB0PWUub25QYW4sbj1lLm9uUGFuU3RhcnQscj1lLm9uUGFuRW5kLGk9ZS5vblBhblNlc3Npb25TdGFydCxhPWUudmlzdWFsRWxlbWVudCxsPXR8fG58fHJ8fGksYz1vLnVzZVJlZihudWxsKSxzPW8udXNlQ29udGV4dCh3KS50cmFuc2Zvcm1QYWdlUG9pbnQsdT17b25TZXNzaW9uU3RhcnQ6aSxvblN0YXJ0Om4sb25Nb3ZlOnQsb25FbmQ6ZnVuY3Rpb24oZSx0KXtjLmN1cnJlbnQ9bnVsbCxyJiZyKGUsdCl9fTtvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtudWxsIT09Yy5jdXJyZW50JiZjLmN1cnJlbnQudXBkYXRlSGFuZGxlcnModSl9KSkscnQoYSxcInBvaW50ZXJkb3duXCIsbCYmZnVuY3Rpb24oZSl7Yy5jdXJyZW50PW5ldyBhbihlLHUse3RyYW5zZm9ybVBhZ2VQb2ludDpzfSl9KSxkdCgoZnVuY3Rpb24oKXtyZXR1cm4gYy5jdXJyZW50JiZjLmN1cnJlbnQuZW5kKCl9KSl9KSksZHJhZzpmdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kcmFnQ29udHJvbHMsbj1lLnZpc3VhbEVsZW1lbnQsaT1vLnVzZUNvbnRleHQodykudHJhbnNmb3JtUGFnZVBvaW50LGE9TygoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHJyKHt2aXN1YWxFbGVtZW50Om59KX0pKTthLnNldFByb3BzKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxlKSx7dHJhbnNmb3JtUGFnZVBvaW50Oml9KSksby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHQmJnQuc3Vic2NyaWJlKGEpfSksW2FdKSxvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gYS5tb3VudChuKX0pLFtdKX0pKX07ZnVuY3Rpb24gY3IoZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGUmJmUuc3RhcnRzV2l0aChcInZhcigtLVwiKX0hZnVuY3Rpb24oZSl7ZVtlLkVudGVyaW5nPTBdPVwiRW50ZXJpbmdcIixlW2UuUHJlc2VudD0xXT1cIlByZXNlbnRcIixlW2UuRXhpdGluZz0yXT1cIkV4aXRpbmdcIn0oaXJ8fChpcj17fSkpLHQuVmlzaWJpbGl0eUFjdGlvbj12b2lkIDAsKGFyPXQuVmlzaWJpbGl0eUFjdGlvbnx8KHQuVmlzaWJpbGl0eUFjdGlvbj17fSkpW2FyLkhpZGU9MF09XCJIaWRlXCIsYXJbYXIuU2hvdz0xXT1cIlNob3dcIjt2YXIgc3I9L3ZhclxcKCgtLVthLXpBLVowLTktX10rKSw/ID8oW2EtekEtWjAtOSAoKSUjLiwtXSspP1xcKS87ZnVuY3Rpb24gdXIoZSx0LG4pe3ZvaWQgMD09PW4mJihuPTEpLGkuaW52YXJpYW50KG48PTQsJ01heCBDU1MgdmFyaWFibGUgZmFsbGJhY2sgZGVwdGggZGV0ZWN0ZWQgaW4gcHJvcGVydHkgXCInK2UrJ1wiLiBUaGlzIG1heSBpbmRpY2F0ZSBhIGNpcmN1bGFyIGZhbGxiYWNrIGRlcGVuZGVuY3kuJyk7dmFyIG89ci5fX3JlYWQoZnVuY3Rpb24oZSl7dmFyIHQ9c3IuZXhlYyhlKTtpZighdClyZXR1cm5bLF07dmFyIG49ci5fX3JlYWQodCwzKTtyZXR1cm5bblsxXSxuWzJdXX0oZSksMiksYT1vWzBdLGw9b1sxXTtpZihhKXt2YXIgYz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KS5nZXRQcm9wZXJ0eVZhbHVlKGEpO3JldHVybiBjP2MudHJpbSgpOmNyKGwpP3VyKGwsdCxuKzEpOmx9fWZ1bmN0aW9uIGRyKGUsdCl7cmV0dXJuIGUvKHQubWF4LXQubWluKSoxMDB9dmFyIGZyPVwiXyRjc3NcIixwcj17cHJvY2VzczpmdW5jdGlvbihlLHQsbil7dmFyIHI9bi50YXJnZXQ7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpe2lmKCFhLnB4LnRlc3QoZSkpcmV0dXJuIGU7ZT1wYXJzZUZsb2F0KGUpfXJldHVybiBkcihlLHIueCkrXCIlIFwiK2RyKGUsci55KStcIiVcIn19LENyPXtib3JkZXJSYWRpdXM6ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHByKSx7YXBwbHlUbzpbXCJib3JkZXJUb3BMZWZ0UmFkaXVzXCIsXCJib3JkZXJUb3BSaWdodFJhZGl1c1wiLFwiYm9yZGVyQm90dG9tTGVmdFJhZGl1c1wiLFwiYm9yZGVyQm90dG9tUmlnaHRSYWRpdXNcIl19KSxib3JkZXJUb3BMZWZ0UmFkaXVzOnByLGJvcmRlclRvcFJpZ2h0UmFkaXVzOnByLGJvcmRlckJvdHRvbUxlZnRSYWRpdXM6cHIsYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6cHIsYm94U2hhZG93Ontwcm9jZXNzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5kZWx0YSxyPXQudHJlZVNjYWxlLG89ZSxpPWUuaW5jbHVkZXMoXCJ2YXIoXCIpLGM9W107aSYmKGU9ZS5yZXBsYWNlKHNyLChmdW5jdGlvbihlKXtyZXR1cm4gYy5wdXNoKGUpLGZyfSkpKTt2YXIgcz1hLmNvbXBsZXgucGFyc2UoZSk7aWYocy5sZW5ndGg+NSlyZXR1cm4gbzt2YXIgdT1hLmNvbXBsZXguY3JlYXRlVHJhbnNmb3JtZXIoZSksZD1cIm51bWJlclwiIT10eXBlb2Ygc1swXT8xOjAsZj1uLnguc2NhbGUqci54LHA9bi55LnNjYWxlKnIueTtzWzArZF0vPWYsc1sxK2RdLz1wO3ZhciBDPWwubWl4KGYscCwuNSk7XCJudW1iZXJcIj09dHlwZW9mIHNbMitkXSYmKHNbMitkXS89QyksXCJudW1iZXJcIj09dHlwZW9mIHNbMytkXSYmKHNbMytkXS89Qyk7dmFyIGg9dShzKTtpZihpKXt2YXIgdj0wO2g9aC5yZXBsYWNlKGZyLChmdW5jdGlvbigpe3ZhciBlPWNbdl07cmV0dXJuIHYrKyxlfSkpfXJldHVybiBofX19LGhyPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oKXt2YXIgbj1udWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIG4uZnJhbWVUYXJnZXQ9e3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19LG4uY3VycmVudEFuaW1hdGlvblRhcmdldD17eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX0sbi5pc0FuaW1hdGluZz17eDohMSx5OiExfSxuLnN0b3BBeGlzQW5pbWF0aW9uPXt4OnZvaWQgMCx5OnZvaWQgMH0sbi5pc0FuaW1hdGluZ1RyZWU9ITEsbi5hbmltYXRlPWZ1bmN0aW9uKGUsbyxpKXt2b2lkIDA9PT1pJiYoaT17fSk7dmFyIGE9aS5vcmlnaW5Cb3gsbD1pLnRhcmdldEJveCxjPWkudmlzaWJpbGl0eUFjdGlvbixzPWkuc2hvdWxkU3RhY2tBbmltYXRlLHU9aS5vbkNvbXBsZXRlLGQ9aS5wcmV2UGFyZW50LGY9ci5fX3Jlc3QoaSxbXCJvcmlnaW5Cb3hcIixcInRhcmdldEJveFwiLFwidmlzaWJpbGl0eUFjdGlvblwiLFwic2hvdWxkU3RhY2tBbmltYXRlXCIsXCJvbkNvbXBsZXRlXCIsXCJwcmV2UGFyZW50XCJdKSxwPW4ucHJvcHMsQz1wLnZpc3VhbEVsZW1lbnQsaD1wLmxheW91dDtpZighMT09PXMpcmV0dXJuIG4uaXNBbmltYXRpbmdUcmVlPSExLG4uc2FmZVRvUmVtb3ZlKCk7aWYoIW4uaXNBbmltYXRpbmdUcmVlfHwhMD09PXMpe3MmJihuLmlzQW5pbWF0aW5nVHJlZT0hMCksbz1hfHxvLGU9bHx8ZTt2YXIgdixnLG0sdz0hMSx5PUMuZ2V0UHJvamVjdGlvblBhcmVudCgpO2lmKHkpe3ZhciBiPXkucHJldlZpZXdwb3J0Qm94LHg9eS5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dDtkJiYobCYmKHg9ZC5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dCksYSYmKGc9eSwodj1kKS5nZXRMYXlvdXRJZCgpPT09KG09Zy5nZXRMYXlvdXRJZCgpKSYmKHZvaWQgMCE9PW18fHY9PT1nKSkmJmQucHJldlZpZXdwb3J0Qm94JiYoYj1kLnByZXZWaWV3cG9ydEJveCkpLGImJmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZXx8IWUmJiEodHx8bil9KGQsYSxsKSYmKHc9ITAsbz1abihiLG8pLGU9Wm4oeCxlKSl9dmFyIE8sTCxfPShMPWUsIShncihPPW8pfHxncihMKXx8bXIoTy54LEwueCkmJm1yKE8ueSxMLnkpKSksTT1nbigoZnVuY3Rpb24oaSl7dmFyIGEsbDtpZihcInBvc2l0aW9uXCI9PT1oKXt2YXIgcz1lW2ldLm1heC1lW2ldLm1pbjtvW2ldLm1heD1vW2ldLm1pbitzfWlmKCFDLnByb2plY3Rpb24uaXNUYXJnZXRMb2NrZWQpcmV0dXJuIHZvaWQgMD09PWM/Xz9uLmFuaW1hdGVBeGlzKGksZVtpXSxvW2ldLHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxmKSx7aXNSZWxhdGl2ZTp3fSkpOihudWxsPT09KGw9KGE9bi5zdG9wQXhpc0FuaW1hdGlvbilbaV0pfHx2b2lkIDA9PT1sfHxsLmNhbGwoYSksQy5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyhpLGVbaV0ubWluLGVbaV0ubWF4LHcpKTp2b2lkIEMuc2V0VmlzaWJpbGl0eShjPT09dC5WaXNpYmlsaXR5QWN0aW9uLlNob3cpfSkpO3JldHVybiBDLnN5bmNSZW5kZXIoKSxQcm9taXNlLmFsbChNKS50aGVuKChmdW5jdGlvbigpe24uaXNBbmltYXRpbmdUcmVlPSExLHUmJnUoKSxDLm5vdGlmeUxheW91dEFuaW1hdGlvbkNvbXBsZXRlKCl9KSl9fSxufXJldHVybiByLl9fZXh0ZW5kcyhuLGUpLG4ucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMudmlzdWFsRWxlbWVudDt0LmFuaW1hdGVNb3Rpb25WYWx1ZT1WdCx0LmVuYWJsZUxheW91dFByb2plY3Rpb24oKSx0aGlzLnVuc3ViTGF5b3V0UmVhZHk9dC5vbkxheW91dFVwZGF0ZSh0aGlzLmFuaW1hdGUpLHQubGF5b3V0U2FmZVRvUmVtb3ZlPWZ1bmN0aW9uKCl7cmV0dXJuIGUuc2FmZVRvUmVtb3ZlKCl9LFcoQ3IpfSxuLnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy51bnN1YkxheW91dFJlYWR5KCksZ24oKGZ1bmN0aW9uKHQpe3ZhciBuLHI7cmV0dXJuIG51bGw9PT0ocj0obj1lLnN0b3BBeGlzQW5pbWF0aW9uKVt0XSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuY2FsbChuKX0pKX0sbi5wcm90b3R5cGUuYW5pbWF0ZUF4aXM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG8saSxhPXRoaXMsYz12b2lkIDA9PT1yP3t9OnIscz1jLnRyYW5zaXRpb24sdT1jLmlzUmVsYXRpdmU7aWYoIXRoaXMuaXNBbmltYXRpbmdbZV18fCFtcih0LHRoaXMuY3VycmVudEFuaW1hdGlvblRhcmdldFtlXSkpe251bGw9PT0oaT0obz10aGlzLnN0b3BBeGlzQW5pbWF0aW9uKVtlXSl8fHZvaWQgMD09PWl8fGkuY2FsbChvKSx0aGlzLmlzQW5pbWF0aW5nW2VdPSEwO3ZhciBkPXRoaXMucHJvcHMudmlzdWFsRWxlbWVudCxmPXRoaXMuZnJhbWVUYXJnZXRbZV0scD1kLmdldFByb2plY3Rpb25BbmltYXRpb25Qcm9ncmVzcygpW2VdO3AuY2xlYXJMaXN0ZW5lcnMoKSxwLnNldCgwKSxwLnNldCgwKTt2YXIgQz1mdW5jdGlvbigpe3ZhciByPXAuZ2V0KCkvMWUzOyFmdW5jdGlvbihlLHQsbixyKXtlLm1pbj1sLm1peCh0Lm1pbixuLm1pbixyKSxlLm1heD1sLm1peCh0Lm1heCxuLm1heCxyKX0oZixuLHQsciksZC5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyhlLGYubWluLGYubWF4LHUpfTtDKCk7dmFyIGg9cC5vbkNoYW5nZShDKTt0aGlzLnN0b3BBeGlzQW5pbWF0aW9uW2VdPWZ1bmN0aW9uKCl7YS5pc0FuaW1hdGluZ1tlXT0hMSxwLnN0b3AoKSxoKCl9LHRoaXMuY3VycmVudEFuaW1hdGlvblRhcmdldFtlXT10O3ZhciB2PXN8fGQuZ2V0RGVmYXVsdFRyYW5zaXRpb24oKXx8d3I7cmV0dXJuIFZ0KFwieFwiPT09ZT9cImxheW91dFhcIjpcImxheW91dFlcIixwLDFlMyx2JiZrdCh2LFwibGF5b3V0XCIpKS50aGVuKHRoaXMuc3RvcEF4aXNBbmltYXRpb25bZV0pfX0sbi5wcm90b3R5cGUuc2FmZVRvUmVtb3ZlPWZ1bmN0aW9uKCl7dmFyIGUsdDtudWxsPT09KHQ9KGU9dGhpcy5wcm9wcykuc2FmZVRvUmVtb3ZlKXx8dm9pZCAwPT09dHx8dC5jYWxsKGUpfSxuLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sbn0odS5Db21wb25lbnQpLHZyPXttaW46MCxtYXg6MH07ZnVuY3Rpb24gZ3IoZSl7cmV0dXJuIG1yKGUueCx2cikmJm1yKGUueSx2cil9ZnVuY3Rpb24gbXIoZSx0KXtyZXR1cm4gZS5taW49PT10Lm1pbiYmZS5tYXg9PT10Lm1heH12YXIgd3I9e2R1cmF0aW9uOi40NSxlYXNlOlsuNCwwLC4xLDFdfSx5cj17bGF5b3V0UmVhZHk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubm90aWZ5TGF5b3V0UmVhZHkoKX19O2Z1bmN0aW9uIGJyKCl7dmFyIGU9bmV3IFNldDtyZXR1cm57YWRkOmZ1bmN0aW9uKHQpe3JldHVybiBlLmFkZCh0KX0sZmx1c2g6ZnVuY3Rpb24odCl7dmFyIG49dm9pZCAwPT09dD95cjp0LG89bi5sYXlvdXRSZWFkeSxpPW4ucGFyZW50O1FuKChmdW5jdGlvbih0LG4pe3ZhciBhPUFycmF5LmZyb20oZSkuc29ydChQbiksbD1pP2tuKGkpOltdO24oKGZ1bmN0aW9uKCl7ci5fX3NwcmVhZEFycmF5KHIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZChsKSksci5fX3JlYWQoYSkpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc2V0VHJhbnNmb3JtKCl9KSl9KSksdCgoZnVuY3Rpb24oKXthLmZvckVhY2goVm4pfSkpLG4oKGZ1bmN0aW9uKCl7bC5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXN0b3JlVHJhbnNmb3JtKCl9KSksYS5mb3JFYWNoKG8pfSkpLHQoKGZ1bmN0aW9uKCl7YS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmlzUHJlc2VudCYmKGUucHJlc2VuY2U9aXIuUHJlc2VudCl9KSl9KSksbigoZnVuY3Rpb24oKXtjLmZsdXNoU3luYy5wcmVSZW5kZXIoKSxjLmZsdXNoU3luYy5yZW5kZXIoKX0pKSx0KChmdW5jdGlvbigpe2YuZGVmYXVsdC5wb3N0UmVuZGVyKChmdW5jdGlvbigpe3JldHVybiBhLmZvckVhY2goeHIpfSkpLGUuY2xlYXIoKX0pKX0pKSxKbigpfX19ZnVuY3Rpb24geHIoZSl7ZS5wcmV2Vmlld3BvcnRCb3g9ZS5wcm9qZWN0aW9uLnRhcmdldH12YXIgT3I9by5jcmVhdGVDb250ZXh0KGJyKCkpLExyPW8uY3JlYXRlQ29udGV4dChicigpKTtmdW5jdGlvbiBfcihlKXtyZXR1cm4hIWUuZm9yY2VVcGRhdGV9dmFyIE1yPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiByLl9fZXh0ZW5kcyh0LGUpLHQucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuc3luY0xheW91dCxuPWUuZnJhbWVyU3luY0xheW91dCxyPWUudmlzdWFsRWxlbWVudDtfcih0KSYmdC5yZWdpc3RlcihyKSxfcihuKSYmbi5yZWdpc3RlcihyKSxyLm9uVW5tb3VudCgoZnVuY3Rpb24oKXtfcih0KSYmdC5yZW1vdmUociksX3IobikmJm4ucmVtb3ZlKHIpfSkpfSx0LnByb3RvdHlwZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLnN5bmNMYXlvdXQsbj1lLnZpc3VhbEVsZW1lbnQ7cmV0dXJuIF9yKHQpP3Quc3luY1VwZGF0ZSgpOihSbihuKSx0LmFkZChuKSksbnVsbH0sdC5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcy5zeW5jTGF5b3V0O19yKGUpfHxlLmZsdXNoKCl9LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0fShkLmRlZmF1bHQuQ29tcG9uZW50KSxqcj17bWVhc3VyZUxheW91dDpmdW5jdGlvbihlKXt2YXIgdD1vLnVzZUNvbnRleHQoT3IpLG49by51c2VDb250ZXh0KExyKTtyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoTXIsci5fX2Fzc2lnbih7fSxlLHtzeW5jTGF5b3V0OnQsZnJhbWVyU3luY0xheW91dDpufSkpfSxsYXlvdXRBbmltYXRpb246ZnVuY3Rpb24oZSl7dmFyIHQ9ci5fX3JlYWQoTCgpLDIpWzFdO3JldHVybiB1LmNyZWF0ZUVsZW1lbnQoaHIsci5fX2Fzc2lnbih7fSxlLHtzYWZlVG9SZW1vdmU6dH0pKX19O2Z1bmN0aW9uIEVyKCl7cmV0dXJue2lzSHlkcmF0ZWQ6ITEsbGF5b3V0Ont4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fSxsYXlvdXRDb3JyZWN0ZWQ6e3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19LHRyZWVTY2FsZTp7eDoxLHk6MX0sZGVsdGE6dm4oKSxkZWx0YUZpbmFsOnZuKCksZGVsdGFUcmFuc2Zvcm06XCJcIn19dmFyIFNyPUVyKCk7ZnVuY3Rpb24gUHIoZSx0LG4pe3ZhciByPWUueCxvPWUueSxpPVwidHJhbnNsYXRlM2QoXCIrci50cmFuc2xhdGUvdC54K1wicHgsIFwiK28udHJhbnNsYXRlL3QueStcInB4LCAwKSBcIjtpZihuKXt2YXIgYT1uLnJvdGF0ZSxsPW4ucm90YXRlWCxjPW4ucm90YXRlWTthJiYoaSs9XCJyb3RhdGUoXCIrYStcIikgXCIpLGwmJihpKz1cInJvdGF0ZVgoXCIrbCtcIikgXCIpLGMmJihpKz1cInJvdGF0ZVkoXCIrYytcIikgXCIpfXJldHVybiBpKz1cInNjYWxlKFwiK3Iuc2NhbGUrXCIsIFwiK28uc2NhbGUrXCIpXCIsbnx8aSE9PWtyP2k6XCJcIn1mdW5jdGlvbiBIcihlKXt2YXIgdD1lLmRlbHRhRmluYWw7cmV0dXJuIDEwMCp0Lngub3JpZ2luK1wiJSBcIisxMDAqdC55Lm9yaWdpbitcIiUgMFwifXZhciBrcj1QcihTci5kZWx0YSxTci50cmVlU2NhbGUse3g6MSx5OjF9KSxWcj1bXCJMYXlvdXRNZWFzdXJlXCIsXCJCZWZvcmVMYXlvdXRNZWFzdXJlXCIsXCJMYXlvdXRVcGRhdGVcIixcIlZpZXdwb3J0Qm94VXBkYXRlXCIsXCJVcGRhdGVcIixcIlJlbmRlclwiLFwiQW5pbWF0aW9uQ29tcGxldGVcIixcIkxheW91dEFuaW1hdGlvbkNvbXBsZXRlXCIsXCJBbmltYXRpb25TdGFydFwiLFwiU2V0QXhpc1RhcmdldFwiLFwiVW5tb3VudFwiXSxScj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLmNoaWxkcmVuPVtdLHRoaXMuaXNEaXJ0eT0hMX1yZXR1cm4gZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe1J0KHRoaXMuY2hpbGRyZW4sZSksdGhpcy5pc0RpcnR5PSEwfSxlLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZSl7SXQodGhpcy5jaGlsZHJlbixlKSx0aGlzLmlzRGlydHk9ITB9LGUucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oZSl7dGhpcy5pc0RpcnR5JiZ0aGlzLmNoaWxkcmVuLnNvcnQoUG4pLHRoaXMuaXNEaXJ0eT0hMSx0aGlzLmNoaWxkcmVuLmZvckVhY2goZSl9LGV9KCksSXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50cmVlVHlwZSxuPXZvaWQgMD09PXQ/XCJcIjp0LG89ZS5idWlsZCxpPWUuZ2V0QmFzZVRhcmdldCxhPWUubWFrZVRhcmdldEFuaW1hdGFibGUscz1lLm1lYXN1cmVWaWV3cG9ydEJveCx1PWUucmVuZGVyLGQ9ZS5yZWFkVmFsdWVGcm9tSW5zdGFuY2UscD1lLnJlc2V0VHJhbnNmb3JtLEM9ZS5yZXN0b3JlVHJhbnNmb3JtLGg9ZS5yZW1vdmVWYWx1ZUZyb21SZW5kZXJTdGF0ZSx2PWUuc29ydE5vZGVQb3NpdGlvbixnPWUuc2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzO3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciBtPWUucGFyZW50LHc9ZS5wcm9wcyx5PWUucHJlc2VuY2VJZCxiPWUuYmxvY2tJbml0aWFsQW5pbWF0aW9uLHg9ZS52aXN1YWxTdGF0ZTt2b2lkIDA9PT10JiYodD17fSk7dmFyIE8sTCxfLE0saixFLFM9eC5sYXRlc3RWYWx1ZXMsUD14LnJlbmRlclN0YXRlLEg9ZnVuY3Rpb24oKXt2YXIgZT1Wci5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBadH0pKSx0PXt9LG49e2NsZWFyQWxsTGlzdGVuZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xlYXIoKX0pKX0sdXBkYXRlUHJvcExpc3RlbmVyczpmdW5jdGlvbihlKXtyZXR1cm4gVnIuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIG87bnVsbD09PShvPXRbcl0pfHx2b2lkIDA9PT1vfHxvLmNhbGwodCk7dmFyIGk9XCJvblwiK3IsYT1lW2ldO2EmJih0W3JdPW5baV0oYSkpfSkpfX07cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtuW1wib25cIitWclt0XV09ZnVuY3Rpb24odCl7cmV0dXJuIGUuYWRkKHQpfSxuW1wibm90aWZ5XCIrVnJbdF1dPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiBlLm5vdGlmeS5hcHBseShlLHIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZCh0KSkpfX0pKSxufSgpLGs9e2lzRW5hYmxlZDohMSxpc0h5ZHJhdGVkOiExLGlzVGFyZ2V0TG9ja2VkOiExLHRhcmdldDp7eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX0sdGFyZ2V0RmluYWw6e3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19fSxWPWssST1TLFo9RXIoKSxEPSExLEI9bmV3IE1hcCwkPW5ldyBNYXAsRj17fSxOPXIuX19hc3NpZ24oe30sUyk7ZnVuY3Rpb24geigpe08mJihKLmlzUHJvamVjdGlvblJlYWR5KCkmJihHbihWLnRhcmdldEZpbmFsLFYudGFyZ2V0LEkpLGJuKFouZGVsdGFGaW5hbCxaLmxheW91dENvcnJlY3RlZCxWLnRhcmdldEZpbmFsLFMpKSxXKCksdShPLFApKX1mdW5jdGlvbiBXKCl7dmFyIGU9UztpZihNJiZNLmlzQWN0aXZlKCkpe3ZhciBuPU0uZ2V0Q3Jvc3NmYWRlU3RhdGUoSik7biYmKGU9bil9byhKLFAsZSxWLFosdCx3KX1mdW5jdGlvbiBHKCl7SC5ub3RpZnlVcGRhdGUoUyl9ZnVuY3Rpb24gVSgpe0oubGF5b3V0VHJlZS5mb3JFYWNoKFRyKX12YXIgcT1nKHcpO2Zvcih2YXIgWSBpbiBxKXt2YXIgSz1xW1ldO3ZvaWQgMCE9PVNbWV0mJmVlKEspJiZLLnNldChTW1ldLCExKX12YXIgWD1UKHcpLFE9QSh3KSxKPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7dHJlZVR5cGU6bixjdXJyZW50Om51bGwsZGVwdGg6bT9tLmRlcHRoKzE6MCxwYXJlbnQ6bSxjaGlsZHJlbjpuZXcgU2V0LHBhdGg6bT9yLl9fc3ByZWFkQXJyYXkoci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKG0ucGF0aCkpLFttXSk6W10sbGF5b3V0VHJlZTptP20ubGF5b3V0VHJlZTpuZXcgUnIscHJlc2VuY2VJZDp5LHByb2plY3Rpb246ayx2YXJpYW50Q2hpbGRyZW46UT9uZXcgU2V0OnZvaWQgMCxpc1Zpc2libGU6dm9pZCAwLG1hbnVhbGx5QW5pbWF0ZU9uTW91bnQ6Qm9vbGVhbihudWxsPT1tP3ZvaWQgMDptLmlzTW91bnRlZCgpKSxibG9ja0luaXRpYWxBbmltYXRpb246Yixpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbihPKX0sbW91bnQ6ZnVuY3Rpb24oZSl7Tz1KLmN1cnJlbnQ9ZSxKLnBvaW50VG8oSiksUSYmbSYmIVgmJihFPW51bGw9PW0/dm9pZCAwOm0uYWRkVmFyaWFudENoaWxkKEopKSxudWxsPT1tfHxtLmNoaWxkcmVuLmFkZChKKX0sdW5tb3VudDpmdW5jdGlvbigpe2MuY2FuY2VsU3luYy51cGRhdGUoRyksYy5jYW5jZWxTeW5jLnJlbmRlcih6KSxjLmNhbmNlbFN5bmMucHJlUmVuZGVyKEoudXBkYXRlTGF5b3V0UHJvamVjdGlvbiksJC5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSkpLEouc3RvcExheW91dEFuaW1hdGlvbigpLEoubGF5b3V0VHJlZS5yZW1vdmUoSiksbnVsbD09RXx8RSgpLG51bGw9PW18fG0uY2hpbGRyZW4uZGVsZXRlKEopLG51bGw9PV98fF8oKSxILmNsZWFyQWxsTGlzdGVuZXJzKCl9LGFkZFZhcmlhbnRDaGlsZDpmdW5jdGlvbihlKXt2YXIgdCxuPUouZ2V0Q2xvc2VzdFZhcmlhbnROb2RlKCk7aWYobilyZXR1cm4gbnVsbD09PSh0PW4udmFyaWFudENoaWxkcmVuKXx8dm9pZCAwPT09dHx8dC5hZGQoZSksZnVuY3Rpb24oKXtyZXR1cm4gbi52YXJpYW50Q2hpbGRyZW4uZGVsZXRlKGUpfX0sc29ydE5vZGVQb3NpdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4gdiYmbj09PWUudHJlZVR5cGU/dihKLmdldEluc3RhbmNlKCksZS5nZXRJbnN0YW5jZSgpKTowfSxnZXRDbG9zZXN0VmFyaWFudE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gUT9KOm51bGw9PW0/dm9pZCAwOm0uZ2V0Q2xvc2VzdFZhcmlhbnROb2RlKCl9LHNjaGVkdWxlVXBkYXRlTGF5b3V0UHJvamVjdGlvbjptP20uc2NoZWR1bGVVcGRhdGVMYXlvdXRQcm9qZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZGVmYXVsdC5wcmVSZW5kZXIoSi51cGRhdGVUcmVlTGF5b3V0UHJvamVjdGlvbiwhMSwhMCl9LGdldExheW91dElkOmZ1bmN0aW9uKCl7cmV0dXJuIHcubGF5b3V0SWR9LGdldEluc3RhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIE99LGdldFN0YXRpY1ZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBTW2VdfSxzZXRTdGF0aWNWYWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBTW2VdPXR9LGdldExhdGVzdFZhbHVlczpmdW5jdGlvbigpe3JldHVybiBTfSxzZXRWaXNpYmlsaXR5OmZ1bmN0aW9uKGUpe0ouaXNWaXNpYmxlIT09ZSYmKEouaXNWaXNpYmxlPWUsSi5zY2hlZHVsZVJlbmRlcigpKX0sbWFrZVRhcmdldEFuaW1hdGFibGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITApLGEoSixlLHcsdCl9LGFkZFZhbHVlOmZ1bmN0aW9uKGUsdCl7Si5oYXNWYWx1ZShlKSYmSi5yZW1vdmVWYWx1ZShlKSxCLnNldChlLHQpLFNbZV09dC5nZXQoKSxmdW5jdGlvbihlLHQpe3ZhciBuPXQub25DaGFuZ2UoKGZ1bmN0aW9uKHQpe1NbZV09dCx3Lm9uVXBkYXRlJiZmLmRlZmF1bHQudXBkYXRlKEcsITEsITApfSkpLHI9dC5vblJlbmRlclJlcXVlc3QoSi5zY2hlZHVsZVJlbmRlcik7JC5zZXQoZSwoZnVuY3Rpb24oKXtuKCkscigpfSkpfShlLHQpfSxyZW1vdmVWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtCLmRlbGV0ZShlKSxudWxsPT09KHQ9JC5nZXQoZSkpfHx2b2lkIDA9PT10fHx0KCksJC5kZWxldGUoZSksZGVsZXRlIFNbZV0saChlLFApfSxoYXNWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gQi5oYXMoZSl9LGdldFZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49Qi5nZXQoZSk7cmV0dXJuIHZvaWQgMD09PW4mJnZvaWQgMCE9PXQmJihuPUF0KHQpLEouYWRkVmFsdWUoZSxuKSksbn0sZm9yRWFjaFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBCLmZvckVhY2goZSl9LHJlYWRWYWx1ZTpmdW5jdGlvbihlKXt2YXIgbjtyZXR1cm4gbnVsbCE9PShuPVNbZV0pJiZ2b2lkIDAhPT1uP246ZChPLGUsdCl9LHNldEJhc2VUYXJnZXQ6ZnVuY3Rpb24oZSx0KXtOW2VdPXR9LGdldEJhc2VUYXJnZXQ6ZnVuY3Rpb24oZSl7aWYoaSl7dmFyIHQ9aSh3LGUpO2lmKHZvaWQgMCE9PXQmJiFlZSh0KSlyZXR1cm4gdH1yZXR1cm4gTltlXX19LEgpLHtidWlsZDpmdW5jdGlvbigpe3JldHVybiBXKCksUH0sc2NoZWR1bGVSZW5kZXI6ZnVuY3Rpb24oKXtmLmRlZmF1bHQucmVuZGVyKHosITEsITApfSxzeW5jUmVuZGVyOnosc2V0UHJvcHM6ZnVuY3Rpb24oZSl7dz1lLEgudXBkYXRlUHJvcExpc3RlbmVycyhlKSxGPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtmb3IodmFyIG8gaW4gdCl7dmFyIGk9dFtvXSxhPW5bb107aWYoZWUoaSkpZS5hZGRWYWx1ZShvLGkpO2Vsc2UgaWYoZWUoYSkpZS5hZGRWYWx1ZShvLEF0KGkpKTtlbHNlIGlmKGEhPT1pKWlmKGUuaGFzVmFsdWUobykpe3ZhciBsPWUuZ2V0VmFsdWUobyk7IWwuaGFzQW5pbWF0ZWQmJmwuc2V0KGkpfWVsc2UgZS5hZGRWYWx1ZShvLEF0KG51bGwhPT0ocj1lLmdldFN0YXRpY1ZhbHVlKG8pKSYmdm9pZCAwIT09cj9yOmkpKX1mb3IodmFyIG8gaW4gbil2b2lkIDA9PT10W29dJiZlLnJlbW92ZVZhbHVlKG8pO3JldHVybiB0fShKLGcodyksRil9LGdldFByb3BzOmZ1bmN0aW9uKCl7cmV0dXJuIHd9LGdldFZhcmlhbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIG51bGw9PT0odD13LnZhcmlhbnRzKXx8dm9pZCAwPT09dD92b2lkIDA6dFtlXX0sZ2V0RGVmYXVsdFRyYW5zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gdy50cmFuc2l0aW9ufSxnZXRWYXJpYW50Q29udGV4dDpmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lJiYoZT0hMSksZSlyZXR1cm4gbnVsbD09bT92b2lkIDA6bS5nZXRWYXJpYW50Q29udGV4dCgpO2lmKCFYKXt2YXIgdD0obnVsbD09bT92b2lkIDA6bS5nZXRWYXJpYW50Q29udGV4dCgpKXx8e307cmV0dXJuIHZvaWQgMCE9PXcuaW5pdGlhbCYmKHQuaW5pdGlhbD13LmluaXRpYWwpLHR9Zm9yKHZhciBuPXt9LHI9MDtyPEJyO3IrKyl7dmFyIG89RHJbcl0saT13W29dOyhSKGkpfHwhMT09PWkpJiYobltvXT1pKX1yZXR1cm4gbn0sZW5hYmxlTGF5b3V0UHJvamVjdGlvbjpmdW5jdGlvbigpe2suaXNFbmFibGVkPSEwLEoubGF5b3V0VHJlZS5hZGQoSil9LGxvY2tQcm9qZWN0aW9uVGFyZ2V0OmZ1bmN0aW9uKCl7ay5pc1RhcmdldExvY2tlZD0hMH0sdW5sb2NrUHJvamVjdGlvblRhcmdldDpmdW5jdGlvbigpe0ouc3RvcExheW91dEFuaW1hdGlvbigpLGsuaXNUYXJnZXRMb2NrZWQ9ITF9LGdldExheW91dFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIFp9LHNldENyb3NzZmFkZXI6ZnVuY3Rpb24oZSl7TT1lfSxpc1Byb2plY3Rpb25SZWFkeTpmdW5jdGlvbigpe3JldHVybiBrLmlzRW5hYmxlZCYmay5pc0h5ZHJhdGVkJiZaLmlzSHlkcmF0ZWR9LHN0YXJ0TGF5b3V0QW5pbWF0aW9uOmZ1bmN0aW9uKGUsdCxuKXt2b2lkIDA9PT1uJiYobj0hMSk7dmFyIHI9Si5nZXRQcm9qZWN0aW9uQW5pbWF0aW9uUHJvZ3Jlc3MoKVtlXSxvPW4/ay5yZWxhdGl2ZVRhcmdldFtlXTprLnRhcmdldFtlXSxpPW8ubWluLGE9by5tYXgtaTtyZXR1cm4gci5jbGVhckxpc3RlbmVycygpLHIuc2V0KGkpLHIuc2V0KGkpLHIub25DaGFuZ2UoKGZ1bmN0aW9uKHQpe0ouc2V0UHJvamVjdGlvblRhcmdldEF4aXMoZSx0LHQrYSxuKX0pKSxKLmFuaW1hdGVNb3Rpb25WYWx1ZShlLHIsMCx0KX0sc3RvcExheW91dEFuaW1hdGlvbjpmdW5jdGlvbigpe2duKChmdW5jdGlvbihlKXtyZXR1cm4gSi5nZXRQcm9qZWN0aW9uQW5pbWF0aW9uUHJvZ3Jlc3MoKVtlXS5zdG9wKCl9KSl9LG1lYXN1cmVWaWV3cG9ydEJveDpmdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT0hMCk7dmFyIG49cyhPLHQpO3JldHVybiBlfHxZbihuLFMpLG59LGdldFByb2plY3Rpb25BbmltYXRpb25Qcm9ncmVzczpmdW5jdGlvbigpe3JldHVybiBqfHwoaj17eDpBdCgwKSx5OkF0KDApfSksan0sc2V0UHJvamVjdGlvblRhcmdldEF4aXM6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG87dm9pZCAwPT09ciYmKHI9ITEpLHI/KGsucmVsYXRpdmVUYXJnZXR8fChrLnJlbGF0aXZlVGFyZ2V0PXt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fSksbz1rLnJlbGF0aXZlVGFyZ2V0W2VdKTooay5yZWxhdGl2ZVRhcmdldD12b2lkIDAsbz1rLnRhcmdldFtlXSksay5pc0h5ZHJhdGVkPSEwLG8ubWluPXQsby5tYXg9bixEPSEwLEgubm90aWZ5U2V0QXhpc1RhcmdldCgpfSxyZWJhc2VQcm9qZWN0aW9uVGFyZ2V0OmZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9Wi5sYXlvdXQpO3ZhciBuPUouZ2V0UHJvamVjdGlvbkFuaW1hdGlvblByb2dyZXNzKCkscj1uLngsbz1uLnksaT0hKGsucmVsYXRpdmVUYXJnZXR8fGsuaXNUYXJnZXRMb2NrZWR8fHIuaXNBbmltYXRpbmcoKXx8by5pc0FuaW1hdGluZygpKTsoZXx8aSkmJmduKChmdW5jdGlvbihlKXt2YXIgbj10W2VdLHI9bi5taW4sbz1uLm1heDtKLnNldFByb2plY3Rpb25UYXJnZXRBeGlzKGUscixvKX0pKX0sbm90aWZ5TGF5b3V0UmVhZHk6ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0UHJvamVjdGlvblBhcmVudCgpO2lmKHQpe3ZhciBuPVpuKHQuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXQsZS5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dCk7Z24oKGZ1bmN0aW9uKHQpe2Uuc2V0UHJvamVjdGlvblRhcmdldEF4aXModCxuW3RdLm1pbixuW3RdLm1heCwhMCl9KSl9ZWxzZSBlLnJlYmFzZVByb2plY3Rpb25UYXJnZXQoKX0oSiksSi5ub3RpZnlMYXlvdXRVcGRhdGUoWi5sYXlvdXQsSi5wcmV2Vmlld3BvcnRCb3h8fFoubGF5b3V0LGUpfSxyZXNldFRyYW5zZm9ybTpmdW5jdGlvbigpe3JldHVybiBwKEosTyx3KX0scmVzdG9yZVRyYW5zZm9ybTpmdW5jdGlvbigpe3JldHVybiBDKE8sUCl9LHVwZGF0ZUxheW91dFByb2plY3Rpb246ZnVuY3Rpb24oKXtpZihKLmlzUHJvamVjdGlvblJlYWR5KCkpe3ZhciBlPVouZGVsdGEsdD1aLnRyZWVTY2FsZSxuPXQueCxyPXQueSxvPVouZGVsdGFUcmFuc2Zvcm07KGZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGksYT1lLmRlbHRhLGw9ZS5sYXlvdXQsYz1lLmxheW91dENvcnJlY3RlZCxzPWUudHJlZVNjYWxlLHU9dC50YXJnZXQ7aT1sLEFuKChvPWMpLngsaS54KSxBbihvLnksaS55KSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bi5sZW5ndGg7aWYocil7dmFyIG8saTt0Lng9dC55PTE7Zm9yKHZhciBhPTA7YTxyO2ErKylpPShvPW5bYV0pLmdldExheW91dFN0YXRlKCkuZGVsdGEsdC54Kj1pLnguc2NhbGUsdC55Kj1pLnkuc2NhbGUsRm4oZSxpKSxUbihvKSYmR24oZSxlLG8uZ2V0TGF0ZXN0VmFsdWVzKCkpfX0oYyxzLG4pLGJuKGEsYyx1LHIpfSkoWixWLEoucGF0aCxTKSxEJiZKLm5vdGlmeVZpZXdwb3J0Qm94VXBkYXRlKFYudGFyZ2V0LGUpLEQ9ITE7dmFyIGk9UHIoZSx0KTtpPT09byYmbj09PXQueCYmcj09PXQueXx8Si5zY2hlZHVsZVJlbmRlcigpLFouZGVsdGFUcmFuc2Zvcm09aX19LHVwZGF0ZVRyZWVMYXlvdXRQcm9qZWN0aW9uOmZ1bmN0aW9uKCl7Si5sYXlvdXRUcmVlLmZvckVhY2goWnIpLGYuZGVmYXVsdC5wcmVSZW5kZXIoVSwhMSwhMCl9LGdldFByb2plY3Rpb25QYXJlbnQ6ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT1MKXtmb3IodmFyIGU9ITEsdD1KLnBhdGgubGVuZ3RoLTE7dD49MDt0LS0pe3ZhciBuPUoucGF0aFt0XTtpZihuLnByb2plY3Rpb24uaXNFbmFibGVkKXtlPW47YnJlYWt9fUw9ZX1yZXR1cm4gTH0scmVzb2x2ZVJlbGF0aXZlVGFyZ2V0Qm94OmZ1bmN0aW9uKCl7dmFyIGU9Si5nZXRQcm9qZWN0aW9uUGFyZW50KCk7aWYoay5yZWxhdGl2ZVRhcmdldCYmZSYmKGZ1bmN0aW9uKGUsdCl7T24oZS50YXJnZXQueCxlLnJlbGF0aXZlVGFyZ2V0LngsdC50YXJnZXQueCksT24oZS50YXJnZXQueSxlLnJlbGF0aXZlVGFyZ2V0LnksdC50YXJnZXQueSl9KGssZS5wcm9qZWN0aW9uKSxUbihlKSkpe3ZhciB0PWsudGFyZ2V0O0duKHQsdCxlLmdldExhdGVzdFZhbHVlcygpKX19LHNob3VsZFJlc2V0VHJhbnNmb3JtOmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4ody5fbGF5b3V0UmVzZXRUcmFuc2Zvcm0pfSxwb2ludFRvOmZ1bmN0aW9uKGUpe1Y9ZS5wcm9qZWN0aW9uLEk9ZS5nZXRMYXRlc3RWYWx1ZXMoKSxudWxsPT1ffHxfKCksXz1sLnBpcGUoZS5vblNldEF4aXNUYXJnZXQoSi5zY2hlZHVsZVVwZGF0ZUxheW91dFByb2plY3Rpb24pLGUub25MYXlvdXRBbmltYXRpb25Db21wbGV0ZSgoZnVuY3Rpb24oKXt2YXIgZTtKLmlzUHJlc2VudD9KLnByZXNlbmNlPWlyLlByZXNlbnQ6bnVsbD09PShlPUoubGF5b3V0U2FmZVRvUmVtb3ZlKXx8dm9pZCAwPT09ZXx8ZS5jYWxsKEopfSkpKX0saXNQcmVzZW50OiEwLHByZXNlbmNlOmlyLkVudGVyaW5nfSk7cmV0dXJuIEp9fTtmdW5jdGlvbiBacihlKXtlLnJlc29sdmVSZWxhdGl2ZVRhcmdldEJveCgpfWZ1bmN0aW9uIFRyKGUpe2UudXBkYXRlTGF5b3V0UHJvamVjdGlvbigpfXZhciBBcixEcj1yLl9fc3ByZWFkQXJyYXkoW1wiaW5pdGlhbFwiXSxyLl9fcmVhZChlbikpLEJyPURyLmxlbmd0aCwkcj1uZXcgU2V0KFtcIndpZHRoXCIsXCJoZWlnaHRcIixcInRvcFwiLFwibGVmdFwiLFwicmlnaHRcIixcImJvdHRvbVwiLFwieFwiLFwieVwiXSksRnI9ZnVuY3Rpb24oZSl7cmV0dXJuICRyLmhhcyhlKX0sTnI9ZnVuY3Rpb24oZSx0KXtlLnNldCh0LCExKSxlLnNldCh0KX0senI9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1hLm51bWJlcnx8ZT09PWEucHh9OyFmdW5jdGlvbihlKXtlLndpZHRoPVwid2lkdGhcIixlLmhlaWdodD1cImhlaWdodFwiLGUubGVmdD1cImxlZnRcIixlLnJpZ2h0PVwicmlnaHRcIixlLnRvcD1cInRvcFwiLGUuYm90dG9tPVwiYm90dG9tXCJ9KEFyfHwoQXI9e30pKTt2YXIgV3I9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcGFyc2VGbG9hdChlLnNwbGl0KFwiLCBcIilbdF0pfSxHcj1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe3ZhciBvPXIudHJhbnNmb3JtO2lmKFwibm9uZVwiPT09b3x8IW8pcmV0dXJuIDA7dmFyIGk9by5tYXRjaCgvXm1hdHJpeDNkXFwoKC4rKVxcKSQvKTtpZihpKXJldHVybiBXcihpWzFdLHQpO3ZhciBhPW8ubWF0Y2goL15tYXRyaXhcXCgoLispXFwpJC8pO3JldHVybiBhP1dyKGFbMV0sZSk6MH19LFVyPW5ldyBTZXQoW1wieFwiLFwieVwiLFwielwiXSkscXI9VS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiFVci5oYXMoZSl9KSksWXI9e3dpZHRoOmZ1bmN0aW9uKGUpe3ZhciB0PWUueDtyZXR1cm4gdC5tYXgtdC5taW59LGhlaWdodDpmdW5jdGlvbihlKXt2YXIgdD1lLnk7cmV0dXJuIHQubWF4LXQubWlufSx0b3A6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnRvcDtyZXR1cm4gcGFyc2VGbG9hdChuKX0sbGVmdDpmdW5jdGlvbihlLHQpe3ZhciBuPXQubGVmdDtyZXR1cm4gcGFyc2VGbG9hdChuKX0sYm90dG9tOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS55LHI9dC50b3A7cmV0dXJuIHBhcnNlRmxvYXQocikrKG4ubWF4LW4ubWluKX0scmlnaHQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLngscj10LmxlZnQ7cmV0dXJuIHBhcnNlRmxvYXQocikrKG4ubWF4LW4ubWluKX0seDpHcig0LDEzKSx5OkdyKDUsMTQpfTtmdW5jdGlvbiBLcihlLHQsbixvKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLnNvbWUoRnIpfSh0KT9mdW5jdGlvbihlLHQsbixvKXt2b2lkIDA9PT1uJiYobj17fSksdm9pZCAwPT09byYmKG89e30pLHQ9ci5fX2Fzc2lnbih7fSx0KSxvPXIuX19hc3NpZ24oe30sbyk7dmFyIGw9T2JqZWN0LmtleXModCkuZmlsdGVyKEZyKSxjPVtdLHM9ITEsdT1bXTtpZihsLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ZhciBsPWUuZ2V0VmFsdWUocik7aWYoZS5oYXNWYWx1ZShyKSl7dmFyIGQsZj1uW3JdLHA9dFtyXSxDPSR0KGYpO2lmKFBlKHApKWZvcih2YXIgaD1wLmxlbmd0aCx2PW51bGw9PT1wWzBdPzE6MDt2PGg7disrKWQ/aS5pbnZhcmlhbnQoJHQocFt2XSk9PT1kLFwiQWxsIGtleWZyYW1lcyBtdXN0IGJlIG9mIHRoZSBzYW1lIHR5cGVcIik6KGQ9JHQocFt2XSksaS5pbnZhcmlhbnQoZD09PUN8fHpyKEMpJiZ6cihkKSxcIktleWZyYW1lcyBtdXN0IGJlIG9mIHRoZSBzYW1lIGRpbWVuc2lvbiBhcyB0aGUgY3VycmVudCB2YWx1ZVwiKSk7ZWxzZSBkPSR0KHApO2lmKEMhPT1kKWlmKHpyKEMpJiZ6cihkKSl7dmFyIGc9bC5nZXQoKTtcInN0cmluZ1wiPT10eXBlb2YgZyYmbC5zZXQocGFyc2VGbG9hdChnKSksXCJzdHJpbmdcIj09dHlwZW9mIHA/dFtyXT1wYXJzZUZsb2F0KHApOkFycmF5LmlzQXJyYXkocCkmJmQ9PT1hLnB4JiYodFtyXT1wLm1hcChwYXJzZUZsb2F0KSl9ZWxzZShudWxsPT1DP3ZvaWQgMDpDLnRyYW5zZm9ybSkmJihudWxsPT1kP3ZvaWQgMDpkLnRyYW5zZm9ybSkmJigwPT09Znx8MD09PXApPzA9PT1mP2wuc2V0KGQudHJhbnNmb3JtKGYpKTp0W3JdPUMudHJhbnNmb3JtKHApOihzfHwoYz1mdW5jdGlvbihlKXt2YXIgdD1bXTtyZXR1cm4gcXIuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIHI9ZS5nZXRWYWx1ZShuKTt2b2lkIDAhPT1yJiYodC5wdXNoKFtuLHIuZ2V0KCldKSxyLnNldChuLnN0YXJ0c1dpdGgoXCJzY2FsZVwiKT8xOjApKX0pKSx0Lmxlbmd0aCYmZS5zeW5jUmVuZGVyKCksdH0oZSkscz0hMCksdS5wdXNoKHIpLG9bcl09dm9pZCAwIT09b1tyXT9vW3JdOnRbcl0sTnIobCxwKSl9fSkpLHUubGVuZ3RoKXt2YXIgZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dC5tZWFzdXJlVmlld3BvcnRCb3goKSxvPXQuZ2V0SW5zdGFuY2UoKSxpPWdldENvbXB1dGVkU3R5bGUobyksYT1pLmRpc3BsYXksbD17dG9wOmkudG9wLGxlZnQ6aS5sZWZ0LGJvdHRvbTppLmJvdHRvbSxyaWdodDppLnJpZ2h0LHRyYW5zZm9ybTppLnRyYW5zZm9ybX07XCJub25lXCI9PT1hJiZ0LnNldFN0YXRpY1ZhbHVlKFwiZGlzcGxheVwiLGUuZGlzcGxheXx8XCJibG9ja1wiKSx0LnN5bmNSZW5kZXIoKTt2YXIgYz10Lm1lYXN1cmVWaWV3cG9ydEJveCgpO3JldHVybiBuLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBvPXQuZ2V0VmFsdWUobik7TnIobyxZcltuXShyLGwpKSxlW25dPVlyW25dKGMsaSl9KSksZX0odCxlLHUpO3JldHVybiBjLmxlbmd0aCYmYy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj1yLl9fcmVhZCh0LDIpLG89blswXSxpPW5bMV07ZS5nZXRWYWx1ZShvKS5zZXQoaSl9KSksZS5zeW5jUmVuZGVyKCkse3RhcmdldDpkLHRyYW5zaXRpb25FbmQ6b319cmV0dXJue3RhcmdldDp0LHRyYW5zaXRpb25FbmQ6b319KGUsdCxuLG8pOnt0YXJnZXQ6dCx0cmFuc2l0aW9uRW5kOm99fXZhciBYcj17dHJlZVR5cGU6XCJkb21cIixyZWFkVmFsdWVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSx0KXtpZihLKHQpKXt2YXIgbj1qdCh0KTtyZXR1cm4gbiYmbi5kZWZhdWx0fHwwfXZhciByLG89KHI9ZSx3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShyKSk7cmV0dXJuKG5lKHQpP28uZ2V0UHJvcGVydHlWYWx1ZSh0KTpvW3RdKXx8MH0sc29ydE5vZGVQb3NpdGlvbjpmdW5jdGlvbihlLHQpe3JldHVybiAyJmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCk/MTotMX0sZ2V0QmFzZVRhcmdldDpmdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBudWxsPT09KG49ZS5zdHlsZSl8fHZvaWQgMD09PW4/dm9pZCAwOm5bdF19LG1lYXN1cmVWaWV3cG9ydEJveDpmdW5jdGlvbihlLHQpe3JldHVybiBTbihlLHQudHJhbnNmb3JtUGFnZVBvaW50KX0scmVzZXRUcmFuc2Zvcm06ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4udHJhbnNmb3JtVGVtcGxhdGU7dC5zdHlsZS50cmFuc2Zvcm09cj9yKHt9LFwiXCIpOlwibm9uZVwiLGUuc2NoZWR1bGVSZW5kZXIoKX0scmVzdG9yZVRyYW5zZm9ybTpmdW5jdGlvbihlLHQpe2Uuc3R5bGUudHJhbnNmb3JtPXQuc3R5bGUudHJhbnNmb3JtfSxyZW1vdmVWYWx1ZUZyb21SZW5kZXJTdGF0ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXQudmFycyxyPXQuc3R5bGU7ZGVsZXRlIG5bZV0sZGVsZXRlIHJbZV19LG1ha2VUYXJnZXRBbmltYXRhYmxlOmZ1bmN0aW9uKGUsdCxuLG8pe3ZhciBpPW4udHJhbnNmb3JtVmFsdWVzO3ZvaWQgMD09PW8mJihvPSEwKTt2YXIgYT10LnRyYW5zaXRpb24sbD10LnRyYW5zaXRpb25FbmQsYz1yLl9fcmVzdCh0LFtcInRyYW5zaXRpb25cIixcInRyYW5zaXRpb25FbmRcIl0pLHM9cXQoYyxhfHx7fSxlKTtpZihpJiYobCYmKGw9aShsKSksYyYmKGM9aShjKSkscyYmKHM9aShzKSkpLG8pe0d0KGUsYyxzKTt2YXIgdT1mdW5jdGlvbihlLHQsbixvKXt2YXIgaT1mdW5jdGlvbihlLHQsbil7dmFyIG8saT1yLl9fcmVzdCh0LFtdKSxhPWUuZ2V0SW5zdGFuY2UoKTtpZighKGEgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpcmV0dXJue3RhcmdldDppLHRyYW5zaXRpb25FbmQ6bn07Zm9yKHZhciBsIGluIG4mJihuPXIuX19hc3NpZ24oe30sbikpLGUuZm9yRWFjaFZhbHVlKChmdW5jdGlvbihlKXt2YXIgdD1lLmdldCgpO2lmKGNyKHQpKXt2YXIgbj11cih0LGEpO24mJmUuc2V0KG4pfX0pKSxpKXt2YXIgYz1pW2xdO2lmKGNyKGMpKXt2YXIgcz11cihjLGEpO3MmJihpW2xdPXMsbiYmKG51bGwhPT0obz1uW2xdKSYmdm9pZCAwIT09b3x8KG5bbF09YykpKX19cmV0dXJue3RhcmdldDppLHRyYW5zaXRpb25FbmQ6bn19KGUsdCxvKTtyZXR1cm4gS3IoZSx0PWkudGFyZ2V0LG4sbz1pLnRyYW5zaXRpb25FbmQpfShlLGMscyxsKTtsPXUudHJhbnNpdGlvbkVuZCxjPXUudGFyZ2V0fXJldHVybiByLl9fYXNzaWduKHt0cmFuc2l0aW9uOmEsdHJhbnNpdGlvbkVuZDpsfSxjKX0sc2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzOmplLGJ1aWxkOmZ1bmN0aW9uKGUsdCxuLHIsbyxpLGEpe3ZvaWQgMCE9PWUuaXNWaXNpYmxlJiYodC5zdHlsZS52aXNpYmlsaXR5PWUuaXNWaXNpYmxlP1widmlzaWJsZVwiOlwiaGlkZGVuXCIpO3ZhciBsPXIuaXNFbmFibGVkJiZvLmlzSHlkcmF0ZWQ7YWUodCxuLHIsbyxpLGEudHJhbnNmb3JtVGVtcGxhdGUsbD9Qcjp2b2lkIDAsbD9Icjp2b2lkIDApfSxyZW5kZXI6TGV9LFFyPUlyKFhyKSxKcj1JcihyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sWHIpLHtnZXRCYXNlVGFyZ2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF19LHJlYWRWYWx1ZUZyb21JbnN0YW5jZTpmdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBLKHQpPyhudWxsPT09KG49anQodCkpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmRlZmF1bHQpfHwwOih0PV9lLmhhcyh0KT90Ok9lKHQpLGUuZ2V0QXR0cmlidXRlKHQpKX0sc2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzOkVlLGJ1aWxkOmZ1bmN0aW9uKGUsdCxuLHIsbyxpLGEpe3ZhciBsPXIuaXNFbmFibGVkJiZvLmlzSHlkcmF0ZWQ7bWUodCxuLHIsbyxpLGEudHJhbnNmb3JtVGVtcGxhdGUsbD9Qcjp2b2lkIDAsbD9Icjp2b2lkIDApfSxyZW5kZXI6TWV9KSksZW89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTihlKT9Kcih0LHtlbmFibGVIYXJkd2FyZUFjY2VsZXJhdGlvbjohMX0pOlFyKHQse2VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0aW9uOiEwfSl9LHRvPXIuX19hc3NpZ24oci5fX2Fzc2lnbihyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sb24pLHB0KSxsciksanIpLG5vPSQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIEJlKGUsdCx0byxlbyl9KSkscm89JChCZSksb289MDtmdW5jdGlvbiBpbygpe3ZhciBlPW9vO3JldHVybiBvbysrLGV9dmFyIGFvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1lLmluaXRpYWwscj1lLmlzUHJlc2VudCxpPWUub25FeGl0Q29tcGxldGUsYT1lLmN1c3RvbSxsPWUucHJlc2VuY2VBZmZlY3RzTGF5b3V0LGM9Tyhsbykscz1PKGlvKSxkPW8udXNlTWVtbygoZnVuY3Rpb24oKXtyZXR1cm57aWQ6cyxpbml0aWFsOm4saXNQcmVzZW50OnIsY3VzdG9tOmEsb25FeGl0Q29tcGxldGU6ZnVuY3Rpb24oZSl7Yy5zZXQoZSwhMCk7dmFyIHQ9ITA7Yy5mb3JFYWNoKChmdW5jdGlvbihlKXtlfHwodD0hMSl9KSksdCYmKG51bGw9PWl8fGkoKSl9LHJlZ2lzdGVyOmZ1bmN0aW9uKGUpe3JldHVybiBjLnNldChlLCExKSxmdW5jdGlvbigpe3JldHVybiBjLmRlbGV0ZShlKX19fX0pLGw/dm9pZCAwOltyXSk7cmV0dXJuIG8udXNlTWVtbygoZnVuY3Rpb24oKXtjLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGMuc2V0KHQsITEpfSkpfSksW3JdKSx1LnVzZUVmZmVjdCgoZnVuY3Rpb24oKXshciYmIWMuc2l6ZSYmKG51bGw9PWl8fGkoKSl9KSxbcl0pLHUuY3JlYXRlRWxlbWVudCh4LlByb3ZpZGVyLHt2YWx1ZTpkfSx0KX07ZnVuY3Rpb24gbG8oKXtyZXR1cm4gbmV3IE1hcH1mdW5jdGlvbiBjbyhlKXtyZXR1cm4gZS5rZXl8fFwiXCJ9ZnVuY3Rpb24gc28oZSx0LG4pe3ZvaWQgMD09PW4mJihuPXt9KTt2YXIgcj1lZShlKT9lOkF0KGUpO3JldHVybiBWdChcIlwiLHIsdCxuKSx7c3RvcDpmdW5jdGlvbigpe3JldHVybiByLnN0b3AoKX19fWZ1bmN0aW9uIHVvKCl7dmFyIGU9QXQoMSksdD17bGVhZDp2b2lkIDAsZm9sbG93OnZvaWQgMCxjcm9zc2ZhZGVPcGFjaXR5OiExLHByZXNlcnZlRm9sbG93T3BhY2l0eTohMX0sbj1yLl9fYXNzaWduKHt9LHQpLG89e30saT17fSxhPSExLHM9bnVsbCx1PTA7ZnVuY3Rpb24gZChuLG8pe3ZhciBpPXQubGVhZCxsPXQuZm9sbG93O2E9ITAscz1udWxsO3ZhciB1PSExLGQ9ZnVuY3Rpb24oKXt1PSEwLGkmJmkuc2NoZWR1bGVSZW5kZXIoKSxsJiZsLnNjaGVkdWxlUmVuZGVyKCl9LHA9ZnVuY3Rpb24oKXthPSExLHM9Yy5nZXRGcmFtZURhdGEoKS50aW1lc3RhbXB9O3JldHVybiBvPW8mJmt0KG8sXCJjcm9zc2ZhZGVcIiksc28oZSxuLHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxvKSx7b25VcGRhdGU6ZCxvbkNvbXBsZXRlOmZ1bmN0aW9uKCl7dT9wKCk6KGUuc2V0KG4pLGYuZGVmYXVsdC5yZWFkKHApKSxkKCl9fSkpfXJldHVybntpc0FjdGl2ZTpmdW5jdGlvbigpe3JldHVybiBvJiYoYXx8Yy5nZXRGcmFtZURhdGEoKS50aW1lc3RhbXA9PT1zKX0sZnJvbUxlYWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGQoMCxlKX0sdG9MZWFkOmZ1bmN0aW9uKHIpe3ZhciBvPTA7cmV0dXJuIHQucHJldlZhbHVlc3x8dC5mb2xsb3c/bi5sZWFkPT09dC5mb2xsb3cmJm4uZm9sbG93PT09dC5sZWFkJiYobz0xLWUuZ2V0KCkpOm89MSxlLnNldChvKSxkKDEscil9LHJlc2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuc2V0KDEpfSxzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIGUuc3RvcCgpfSxnZXRDcm9zc2ZhZGVTdGF0ZTpmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbixyLGE9Yy5nZXRGcmFtZURhdGEoKS50aW1lc3RhbXAscz10LmxlYWQsZD10LmZvbGxvdztpZihhIT09dSYmcyl7dT1hO3ZhciBmPXMuZ2V0TGF0ZXN0VmFsdWVzKCk7T2JqZWN0LmFzc2lnbihvLGYpO3ZhciBwPWQ/ZC5nZXRMYXRlc3RWYWx1ZXMoKTp0LnByZXZWYWx1ZXM7T2JqZWN0LmFzc2lnbihpLHApO3ZhciBDPWUuZ2V0KCksaD1udWxsIT09KG49Zi5vcGFjaXR5KSYmdm9pZCAwIT09bj9uOjEsdj1udWxsIT09KHI9bnVsbD09cD92b2lkIDA6cC5vcGFjaXR5KSYmdm9pZCAwIT09cj9yOjE7dC5jcm9zc2ZhZGVPcGFjaXR5JiZkPyhvLm9wYWNpdHk9bC5taXgoITEhPT1kLmlzVmlzaWJsZT8wOnYsaCxmbyhDKSksaS5vcGFjaXR5PXQucHJlc2VydmVGb2xsb3dPcGFjaXR5P3Y6bC5taXgodiwwLHBvKEMpKSk6ZHx8KG8ub3BhY2l0eT1sLm1peCh2LGgsQykpLGZ1bmN0aW9uKGUsdCxuLHIsbyxpKXtmb3IodmFyIGE9MDthPHZvO2ErKyl7dmFyIGM9XCJib3JkZXJcIitob1thXStcIlJhZGl1c1wiLHM9Z28ocixjKSx1PWdvKG4sYyk7aWYoKHZvaWQgMCE9PXN8fHZvaWQgMCE9PXUpJiYoc3x8KHM9MCksdXx8KHU9MCksXCJudW1iZXJcIj09dHlwZW9mIHMmJlwibnVtYmVyXCI9PXR5cGVvZiB1KSl7dmFyIGQ9TWF0aC5tYXgobC5taXgocyx1LGkpLDApO2VbY109dFtjXT1kfX1pZihyLnJvdGF0ZXx8bi5yb3RhdGUpe3ZhciBmPWwubWl4KHIucm90YXRlfHwwLG4ucm90YXRlfHwwLGkpO2Uucm90YXRlPXQucm90YXRlPWZ9IW8mJm4uYmFja2dyb3VuZENvbG9yJiZyLmJhY2tncm91bmRDb2xvciYmKGUuYmFja2dyb3VuZENvbG9yPXQuYmFja2dyb3VuZENvbG9yPWwubWl4Q29sb3Ioci5iYWNrZ3JvdW5kQ29sb3Isbi5iYWNrZ3JvdW5kQ29sb3IpKGkpKX0obyxpLGYscHx8e30sQm9vbGVhbihkKSxDKX19KCksbj09PXQubGVhZD9vOm49PT10LmZvbGxvdz9pOnZvaWQgMH0sc2V0T3B0aW9uczpmdW5jdGlvbihlKXtuPXQsdD1lLG89e30saT17fX0sZ2V0TGF0ZXN0VmFsdWVzOmZ1bmN0aW9uKCl7cmV0dXJuIG99fX12YXIgZm89Q28oMCwuNSxsLmNpcmNPdXQpLHBvPUNvKC41LC45NSxsLmxpbmVhcik7ZnVuY3Rpb24gQ28oZSx0LG4pe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gcjxlPzA6cj50PzE6bihsLnByb2dyZXNzKGUsdCxyKSl9fXZhciBobz1bXCJUb3BMZWZ0XCIsXCJUb3BSaWdodFwiLFwiQm90dG9tTGVmdFwiLFwiQm90dG9tUmlnaHRcIl0sdm89aG8ubGVuZ3RoO2Z1bmN0aW9uIGdvKGUsdCl7dmFyIG47cmV0dXJuIG51bGwhPT0obj1lW3RdKSYmdm9pZCAwIT09bj9uOmUuYm9yZGVyUmFkaXVzfXZhciBtbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIHQ9bnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiB0LmNoaWxkcmVuPW5ldyBTZXQsdC5zdGFja3M9bmV3IE1hcCx0Lmhhc01vdW50ZWQ9ITEsdC51cGRhdGVTY2hlZHVsZWQ9ITEsdC5yZW5kZXJTY2hlZHVsZWQ9ITEsdC5zeW5jQ29udGV4dD1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sYnIoKSkse3N5bmNVcGRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuc2NoZWR1bGVVcGRhdGUoZSl9LGZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7dC5zeW5jQ29udGV4dD1yLl9fYXNzaWduKHt9LHQuc3luY0NvbnRleHQpLHQuc2NoZWR1bGVVcGRhdGUoITApfSxyZWdpc3RlcjpmdW5jdGlvbihlKXtyZXR1cm4gdC5hZGRDaGlsZChlKX0scmVtb3ZlOmZ1bmN0aW9uKGUpe3JldHVybiB0LnJlbW92ZUNoaWxkKGUpfX0pLHR9cmV0dXJuIHIuX19leHRlbmRzKHQsZSksdC5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt0aGlzLmhhc01vdW50ZWQ9ITB9LHQucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuc3RhcnRMYXlvdXRBbmltYXRpb24oKX0sdC5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyU2NoZWR1bGVkPSEwLCEwfSx0LnByb3RvdHlwZS5zdGFydExheW91dEFuaW1hdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5yZW5kZXJTY2hlZHVsZWQ9dGhpcy51cGRhdGVTY2hlZHVsZWQ9ITE7dmFyIHQ9dGhpcy5wcm9wcy50eXBlO3RoaXMuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5pc1ByZXNlbnQ/ZS5wcmVzZW5jZSE9PWlyLkVudGVyaW5nJiYoZS5wcmVzZW5jZT1lLnByZXNlbmNlPT09aXIuRXhpdGluZz9pci5FbnRlcmluZzppci5QcmVzZW50KTplLnByZXNlbmNlPWlyLkV4aXRpbmd9KSksdGhpcy51cGRhdGVTdGFja3MoKTt2YXIgbj17bGF5b3V0UmVhZHk6ZnVuY3Rpb24obil7dm9pZCAwIT09bi5nZXRMYXlvdXRJZCgpP2UuZ2V0U3RhY2sobikuYW5pbWF0ZShuLFwiY3Jvc3NmYWRlXCI9PT10KTpuLm5vdGlmeUxheW91dFJlYWR5KCl9LHBhcmVudDp0aGlzLmNvbnRleHQudmlzdWFsRWxlbWVudH07dGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5zeW5jQ29udGV4dC5hZGQodCl9KSksdGhpcy5zeW5jQ29udGV4dC5mbHVzaChuKSx0aGlzLnN0YWNrcy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5jbGVhclNuYXBzaG90KCl9KSl9LHQucHJvdG90eXBlLnVwZGF0ZVN0YWNrcz1mdW5jdGlvbigpe3RoaXMuc3RhY2tzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnVwZGF0ZUxlYWRBbmRGb2xsb3coKX0pKX0sdC5wcm90b3R5cGUuc2NoZWR1bGVVcGRhdGU9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9ITEpLCFlJiZ0aGlzLnVwZGF0ZVNjaGVkdWxlZHx8KHRoaXMudXBkYXRlU2NoZWR1bGVkPSEwLHRoaXMuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0hMSxuPXt9LHI9MDtyPEcubGVuZ3RoO3IrKyl7dmFyIG89XCJyb3RhdGVcIitHW3JdO2UuaGFzVmFsdWUobykmJjAhPT1lLmdldFN0YXRpY1ZhbHVlKG8pJiYodD0hMCxuW29dPWUuZ2V0U3RhdGljVmFsdWUobyksZS5zZXRTdGF0aWNWYWx1ZShvLDApKX1pZih0KXtmb3IodmFyIG8gaW4gZS5zeW5jUmVuZGVyKCksbillLnNldFN0YXRpY1ZhbHVlKG8sbltvXSk7ZS5zY2hlZHVsZVJlbmRlcigpfX0oZSksZS5zaG91bGRSZXNldFRyYW5zZm9ybSgpJiZlLnJlc2V0VHJhbnNmb3JtKCl9KSksdGhpcy5jaGlsZHJlbi5mb3JFYWNoKFJuKSx0aGlzLnN0YWNrcy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS51cGRhdGVTbmFwc2hvdCgpfSkpLCFlJiZ0aGlzLnJlbmRlclNjaGVkdWxlZHx8KHRoaXMucmVuZGVyU2NoZWR1bGVkPSEwLHRoaXMuZm9yY2VVcGRhdGUoKSkpfSx0LnByb3RvdHlwZS5hZGRDaGlsZD1mdW5jdGlvbihlKXt0aGlzLmNoaWxkcmVuLmFkZChlKSx0aGlzLmFkZFRvU3RhY2soZSksZS5wcmVzZW5jZT10aGlzLmhhc01vdW50ZWQ/aXIuRW50ZXJpbmc6aXIuUHJlc2VudH0sdC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24oZSl7dGhpcy5zY2hlZHVsZVVwZGF0ZSgpLHRoaXMuY2hpbGRyZW4uZGVsZXRlKGUpLHRoaXMucmVtb3ZlRnJvbVN0YWNrKGUpfSx0LnByb3RvdHlwZS5hZGRUb1N0YWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0U3RhY2soZSk7bnVsbD09dHx8dC5hZGQoZSl9LHQucHJvdG90eXBlLnJlbW92ZUZyb21TdGFjaz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldFN0YWNrKGUpO251bGw9PXR8fHQucmVtb3ZlKGUpfSx0LnByb3RvdHlwZS5nZXRTdGFjaz1mdW5jdGlvbihlKXt2YXIgdCxuLG8saSxhLGwsYyxzLHU9ZS5nZXRMYXlvdXRJZCgpO2lmKHZvaWQgMCE9PXUpcmV0dXJuIXRoaXMuc3RhY2tzLmhhcyh1KSYmdGhpcy5zdGFja3Muc2V0KHUsKGk9bmV3IFNldCxhPXtsZWFkSXNFeGl0aW5nOiExfSxsPXIuX19hc3NpZ24oe30sYSksYz11bygpLHM9ITEse2FkZDpmdW5jdGlvbihlKXtlLnNldENyb3NzZmFkZXIoYyksaS5hZGQoZSksbyYmKGUucHJldkRyYWdDdXJzb3I9byksYS5sZWFkfHwoYS5sZWFkPWUpfSxyZW1vdmU6ZnVuY3Rpb24oZSl7aS5kZWxldGUoZSl9LGdldExlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5sZWFkfSx1cGRhdGVTbmFwc2hvdDpmdW5jdGlvbigpe2lmKGEubGVhZCl7dD1jLmlzQWN0aXZlKCk/Yy5nZXRMYXRlc3RWYWx1ZXMoKTphLmxlYWQuZ2V0TGF0ZXN0VmFsdWVzKCksbj1hLmxlYWQucHJldlZpZXdwb3J0Qm94O3ZhciBlPW5yLmdldChhLmxlYWQpO2UmJmUuaXNEcmFnZ2luZyYmKG89ZS5jdXJzb3JQcm9ncmVzcyl9fSxjbGVhclNuYXBzaG90OmZ1bmN0aW9uKCl7bz1uPXZvaWQgMH0sdXBkYXRlTGVhZEFuZEZvbGxvdzpmdW5jdGlvbigpe3ZhciBlLG4sbztsPXIuX19hc3NpZ24oe30sYSk7Zm9yKHZhciB1PUFycmF5LmZyb20oaSksZD11Lmxlbmd0aDtkLS07ZD49MCl7dmFyIGY9dVtkXTtpZihuJiYobnVsbCE9b3x8KG89ZikpLG51bGwhPW58fChuPWYpLG4mJm8pYnJlYWt9YS5sZWFkPW4sYS5mb2xsb3c9byxhLmxlYWRJc0V4aXRpbmc9KG51bGw9PT0oZT1hLmxlYWQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnByZXNlbmNlKT09PWlyLkV4aXRpbmcsYy5zZXRPcHRpb25zKHtsZWFkOm4sZm9sbG93Om8scHJldlZhbHVlczp0LGNyb3NzZmFkZU9wYWNpdHk6KG51bGw9PW8/dm9pZCAwOm8uaXNQcmVzZW5jZVJvb3QpfHwobnVsbD09bj92b2lkIDA6bi5pc1ByZXNlbmNlUm9vdCl9KSxhLmxlYWQ9PT1sLmZvbGxvd3x8bC5sZWFkPT09YS5sZWFkJiZsLmxlYWRJc0V4aXRpbmc9PT1hLmxlYWRJc0V4aXRpbmd8fChzPSEwKX0sYW5pbWF0ZTpmdW5jdGlvbihlLHQpe3ZhciByO2lmKHZvaWQgMD09PXQmJih0PSExKSxlPT09YS5sZWFkKXt0P2UucG9pbnRUbyhhLmxlYWQpOmUuc2V0VmlzaWJpbGl0eSghMCk7dmFyIG89e30saT1udWxsPT09KHI9YS5mb2xsb3cpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmdldFByb2plY3Rpb25QYXJlbnQoKTtpZihpJiYoby5wcmV2UGFyZW50PWkpLGUucHJlc2VuY2U9PT1pci5FbnRlcmluZz9vLm9yaWdpbkJveD1hLmZvbGxvdz9hLmZvbGxvdy5wcmV2Vmlld3BvcnRCb3g6bjplLnByZXNlbmNlPT09aXIuRXhpdGluZyYmKG8udGFyZ2V0Qm94PWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIG51bGw9PT0oZT1hLmZvbGxvdyl8fHZvaWQgMD09PWU/dm9pZCAwOmUuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXR9KCkpLHMpe3M9ITE7dmFyIGw9ZS5nZXREZWZhdWx0VHJhbnNpdGlvbigpO2UucHJlc2VuY2U9PT1pci5FbnRlcmluZz9jLnRvTGVhZChsKTpjLmZyb21MZWFkKGwpfWUubm90aWZ5TGF5b3V0UmVhZHkobyl9ZWxzZSB0P2EubGVhZCYmZS5wb2ludFRvKGEubGVhZCk6ZS5zZXRWaXNpYmlsaXR5KCExKX19KSksdGhpcy5zdGFja3MuZ2V0KHUpfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdS5jcmVhdGVFbGVtZW50KE9yLlByb3ZpZGVyLHt2YWx1ZTp0aGlzLnN5bmNDb250ZXh0fSx0aGlzLnByb3BzLmNoaWxkcmVuKX0sdC5jb250ZXh0VHlwZT15LHR9KHUuQ29tcG9uZW50KTtmdW5jdGlvbiB3byhlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlfXZhciB5bz1yLl9fYXNzaWduKHIuX19hc3NpZ24oe3JlbmRlcmVyOmVvfSxvbikscHQpLGJvPXIuX19hc3NpZ24oci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHlvKSxsciksanIpO2Z1bmN0aW9uIHhvKGUpe3ZhciB0PU8oKGZ1bmN0aW9uKCl7cmV0dXJuIEF0KGUpfSkpO2lmKG8udXNlQ29udGV4dCh3KS5pc1N0YXRpYyl7dmFyIG49ci5fX3JlYWQoby51c2VTdGF0ZShlKSwyKVsxXTtvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdC5vbkNoYW5nZShuKX0pLFtdKX1yZXR1cm4gdH1mdW5jdGlvbiBPbyhlLHQpe28udXNlRWZmZWN0KChmdW5jdGlvbigpe2lmKGVlKGUpKXJldHVybiBlLm9uQ2hhbmdlKHQpfSksW3RdKX1mdW5jdGlvbiBMbyhlLHQpe3ZhciBuPXhvKHQoKSkscj1mdW5jdGlvbigpe3JldHVybiBuLnNldCh0KCkpfTtyZXR1cm4gcigpLGZ1bmN0aW9uKGUsdCl7by51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7dmFyIG49ZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLm9uQ2hhbmdlKHQpfSkpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9KSl9fSkpfShlLChmdW5jdGlvbigpe3JldHVybiBmLmRlZmF1bHQudXBkYXRlKHIsITEsITApfSkpLG59dmFyIF9vLE1vPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmZS5taXh9KGUpP2UubWl4OnZvaWQgMH07ZnVuY3Rpb24gam8oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0XT1hcmd1bWVudHNbdF07dmFyIG49IUFycmF5LmlzQXJyYXkoZVswXSksbz1uPzA6LTEsaT1lWzArb10sYT1lWzErb10sYz1lWzIrb10scz1lWzMrb10sdT1sLmludGVycG9sYXRlKGEsYyxyLl9fYXNzaWduKHttaXhlcjpNbyhjWzBdKX0scykpO3JldHVybiBuP3UoaSk6dX1mdW5jdGlvbiBFbyhlLHQsbixvKXt2YXIgaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3Q6am8odCxuLG8pO3JldHVybiBBcnJheS5pc0FycmF5KGUpP1NvKGUsaSk6U28oW2VdLChmdW5jdGlvbihlKXt2YXIgdD1yLl9fcmVhZChlLDEpWzBdO3JldHVybiBpKHQpfSkpfWZ1bmN0aW9uIFNvKGUsdCl7dmFyIG49TygoZnVuY3Rpb24oKXtyZXR1cm5bXX0pKTtyZXR1cm4gTG8oZSwoZnVuY3Rpb24oKXtuLmxlbmd0aD0wO2Zvcih2YXIgcj1lLmxlbmd0aCxvPTA7bzxyO28rKyluW29dPWVbb10uZ2V0KCk7cmV0dXJuIHQobil9KSl9ZnVuY3Rpb24gUG8oKXtyZXR1cm57c2Nyb2xsWDpBdCgwKSxzY3JvbGxZOkF0KDApLHNjcm9sbFhQcm9ncmVzczpBdCgwKSxzY3JvbGxZUHJvZ3Jlc3M6QXQoMCl9fWZ1bmN0aW9uIEhvKGUsdCxuKXtuLnNldChlJiZ0P2UvdDowKX1mdW5jdGlvbiBrbyhlLHQpe3ZhciBuPWZ1bmN0aW9uKCl7dmFyIG49dCgpLHI9bi54T2Zmc2V0LG89bi55T2Zmc2V0LGk9bi54TWF4T2Zmc2V0LGE9bi55TWF4T2Zmc2V0O2Uuc2Nyb2xsWC5zZXQociksZS5zY3JvbGxZLnNldChvKSxIbyhyLGksZS5zY3JvbGxYUHJvZ3Jlc3MpLEhvKG8sYSxlLnNjcm9sbFlQcm9ncmVzcyl9O3JldHVybiBuKCksbn1mdW5jdGlvbiBWbygpe3JldHVybnt4T2Zmc2V0OndpbmRvdy5wYWdlWE9mZnNldCx5T2Zmc2V0OndpbmRvdy5wYWdlWU9mZnNldCx4TWF4T2Zmc2V0OmRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgtd2luZG93LmlubmVyV2lkdGgseU1heE9mZnNldDpkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodC13aW5kb3cuaW5uZXJIZWlnaHR9fXZhciBSbyxJbz0hMTtmdW5jdGlvbiBabygpe3ZhciBlPSExLHQ9W10sbj1uZXcgU2V0LG89e3N1YnNjcmliZTpmdW5jdGlvbihlKXtyZXR1cm4gbi5hZGQoZSksZnVuY3Rpb24oKXtuLmRlbGV0ZShlKX19LHN0YXJ0OmZ1bmN0aW9uKHIsbyl7aWYoZSl7dmFyIGk9W107cmV0dXJuIG4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7aS5wdXNoKFl0KGUscix7dHJhbnNpdGlvbk92ZXJyaWRlOm99KSl9KSksUHJvbWlzZS5hbGwoaSl9cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlKXt0LnB1c2goe2FuaW1hdGlvbjpbcixvXSxyZXNvbHZlOmV9KX0pKX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBpLmludmFyaWFudChlLFwiY29udHJvbHMuc2V0KCkgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGEgY29tcG9uZW50IGhhcyBtb3VudGVkLiBDb25zaWRlciBjYWxsaW5nIHdpdGhpbiBhIHVzZUVmZmVjdCBob29rLlwiKSxuLmZvckVhY2goKGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe0FycmF5LmlzQXJyYXkodCk/V3QoZSx0KTpcInN0cmluZ1wiPT10eXBlb2YgdD9XdChlLFt0XSk6enQoZSx0KX0oZSx0KX0pKX0sc3RvcDpmdW5jdGlvbigpe24uZm9yRWFjaCgoZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUpe2UuZm9yRWFjaFZhbHVlKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zdG9wKCl9KSl9KGUpfSkpfSxtb3VudDpmdW5jdGlvbigpe3JldHVybiBlPSEwLHQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hbmltYXRpb24sbj1lLnJlc29sdmU7by5zdGFydC5hcHBseShvLHIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZCh0KSkpLnRoZW4obil9KSksZnVuY3Rpb24oKXtlPSExLG8uc3RvcCgpfX19O3JldHVybiBvfXZhciBUbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLmNvbXBvbmVudENvbnRyb2xzPW5ldyBTZXR9cmV0dXJuIGUucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLmNvbXBvbmVudENvbnRyb2xzLmFkZChlKSxmdW5jdGlvbigpe3JldHVybiB0LmNvbXBvbmVudENvbnRyb2xzLmRlbGV0ZShlKX19LGUucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGUsdCl7dGhpcy5jb21wb25lbnRDb250cm9scy5mb3JFYWNoKChmdW5jdGlvbihuKXtuLnN0YXJ0KGUubmF0aXZlRXZlbnR8fGUsdCl9KSl9LGUucHJvdG90eXBlLnVwZGF0ZUNvbnN0cmFpbnRzPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSEwKSx0aGlzLmNvbXBvbmVudENvbnRyb2xzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UudXBkYXRlQ29uc3RyYWludHMoKX0pKSxlJiZKbigpfSxlfSgpLEFvPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBUb30sRG89ZnVuY3Rpb24oKXtyZXR1cm57fX0sQm89SXIoe2J1aWxkOmZ1bmN0aW9uKCl7fSxtZWFzdXJlVmlld3BvcnRCb3g6ZnVuY3Rpb24oKXtyZXR1cm57eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX19LHJlc2V0VHJhbnNmb3JtOmZ1bmN0aW9uKCl7fSxyZXN0b3JlVHJhbnNmb3JtOmZ1bmN0aW9uKCl7fSxyZW1vdmVWYWx1ZUZyb21SZW5kZXJTdGF0ZTpmdW5jdGlvbigpe30scmVuZGVyOmZ1bmN0aW9uKCl7fSxzY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM6RG8scmVhZFZhbHVlRnJvbUluc3RhbmNlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbi5pbml0aWFsU3RhdGVbdF18fDB9LG1ha2VUYXJnZXRBbmltYXRhYmxlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC50cmFuc2l0aW9uLG89dC50cmFuc2l0aW9uRW5kLGk9ci5fX3Jlc3QodCxbXCJ0cmFuc2l0aW9uXCIsXCJ0cmFuc2l0aW9uRW5kXCJdKTtyZXR1cm4gR3QoZSxpLHF0KGksbnx8e30sZSkpLHIuX19hc3NpZ24oe3RyYW5zaXRpb246bix0cmFuc2l0aW9uRW5kOm99LGkpfX0pLCRvPUllKHtzY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM6RG8sY3JlYXRlUmVuZGVyU3RhdGU6RG99KSxGbz1mdW5jdGlvbihlKXtyZXR1cm4gZT4uMDAxPzEvZToxZTV9LE5vPSExO3QuQW5pbWF0ZVByZXNlbmNlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1lLmN1c3RvbSxpPWUuaW5pdGlhbCxhPXZvaWQgMD09PWl8fGksbD1lLm9uRXhpdENvbXBsZXRlLGM9ZS5leGl0QmVmb3JlRW50ZXIscz1lLnByZXNlbmNlQWZmZWN0c0xheW91dCxkPXZvaWQgMD09PXN8fHMsZj1mdW5jdGlvbigpe3ZhciBlPW8udXNlUmVmKCExKSx0PXIuX19yZWFkKG8udXNlU3RhdGUoMCksMiksbj10WzBdLGk9dFsxXTtyZXR1cm4gZHQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuY3VycmVudD0hMH0pKSxvLnVzZUNhbGxiYWNrKChmdW5jdGlvbigpeyFlLmN1cnJlbnQmJmkobisxKX0pLFtuXSl9KCkscD1vLnVzZUNvbnRleHQoT3IpO19yKHApJiYoZj1wLmZvcmNlVXBkYXRlKTt2YXIgQz1vLnVzZVJlZighMCksaD1mdW5jdGlvbihlKXt2YXIgdD1bXTtyZXR1cm4gby5DaGlsZHJlbi5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe28uaXNWYWxpZEVsZW1lbnQoZSkmJnQucHVzaChlKX0pKSx0fSh0KSx2PW8udXNlUmVmKGgpLGc9by51c2VSZWYobmV3IE1hcCkuY3VycmVudCxtPW8udXNlUmVmKG5ldyBTZXQpLmN1cnJlbnQ7aWYoZnVuY3Rpb24oZSx0KXtlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWNvKGUpO3Quc2V0KG4sZSl9KSl9KGgsZyksQy5jdXJyZW50KXJldHVybiBDLmN1cnJlbnQ9ITEsdS5jcmVhdGVFbGVtZW50KHUuRnJhZ21lbnQsbnVsbCxoLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHUuY3JlYXRlRWxlbWVudChhbyx7a2V5OmNvKGUpLGlzUHJlc2VudDohMCxpbml0aWFsOiEhYSYmdm9pZCAwLHByZXNlbmNlQWZmZWN0c0xheW91dDpkfSxlKX0pKSk7Zm9yKHZhciB3PXIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZChoKSkseT12LmN1cnJlbnQubWFwKGNvKSxiPWgubWFwKGNvKSx4PXkubGVuZ3RoLE89MDtPPHg7TysrKXt2YXIgTD15W09dOy0xPT09Yi5pbmRleE9mKEwpP20uYWRkKEwpOm0uZGVsZXRlKEwpfXJldHVybiBjJiZtLnNpemUmJih3PVtdKSxtLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKC0xPT09Yi5pbmRleE9mKGUpKXt2YXIgdD1nLmdldChlKTtpZih0KXt2YXIgcj15LmluZGV4T2YoZSk7dy5zcGxpY2UociwwLHUuY3JlYXRlRWxlbWVudChhbyx7a2V5OmNvKHQpLGlzUHJlc2VudDohMSxvbkV4aXRDb21wbGV0ZTpmdW5jdGlvbigpe2cuZGVsZXRlKGUpLG0uZGVsZXRlKGUpO3ZhciB0PXYuY3VycmVudC5maW5kSW5kZXgoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmtleT09PWV9KSk7di5jdXJyZW50LnNwbGljZSh0LDEpLG0uc2l6ZXx8KHYuY3VycmVudD1oLGYoKSxsJiZsKCkpfSxjdXN0b206bixwcmVzZW5jZUFmZmVjdHNMYXlvdXQ6ZH0sdCkpfX19KSksdz13Lm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5rZXk7cmV0dXJuIG0uaGFzKHQpP2U6dS5jcmVhdGVFbGVtZW50KGFvLHtrZXk6Y28oZSksaXNQcmVzZW50OiEwLHByZXNlbmNlQWZmZWN0c0xheW91dDpkfSxlKX0pKSx2LmN1cnJlbnQ9dyx1LmNyZWF0ZUVsZW1lbnQodS5GcmFnbWVudCxudWxsLG0uc2l6ZT93OncubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gby5jbG9uZUVsZW1lbnQoZSl9KSkpfSx0LkFuaW1hdGVTaGFyZWRMYXlvdXQ9bW8sdC5EcmFnQ29udHJvbHM9VG8sdC5GbGF0VHJlZT1Scix0LkZyYW1lclRyZWVMYXlvdXRDb250ZXh0PUxyLHQuTGF5b3V0R3JvdXBDb250ZXh0PVMsdC5MYXp5TW90aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1lLmZlYXR1cmVzLGk9ZS5zdHJpY3QsYT12b2lkIDAhPT1pJiZpLGw9ci5fX3JlYWQoby51c2VTdGF0ZSghd28obikpLDIpWzFdLGM9by51c2VSZWYodm9pZCAwKTtpZighd28obikpe3ZhciBzPW4ucmVuZGVyZXIsZD1yLl9fcmVzdChuLFtcInJlbmRlcmVyXCJdKTtjLmN1cnJlbnQ9cyxoKGQpfXJldHVybiBvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXt3byhuKSYmbigpLnRoZW4oKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVuZGVyZXI7aChyLl9fcmVzdChlLFtcInJlbmRlcmVyXCJdKSksYy5jdXJyZW50PXQsbCghMCl9KSl9KSxbXSksdS5jcmVhdGVFbGVtZW50KHYuUHJvdmlkZXIse3ZhbHVlOntyZW5kZXJlcjpjLmN1cnJlbnQsc3RyaWN0OmF9fSx0KX0sdC5Nb3Rpb25Db25maWc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPXIuX19yZXN0KGUsW1wiY2hpbGRyZW5cIl0pOyhuPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxvLnVzZUNvbnRleHQodykpLG4pKS5pc1N0YXRpYz1PKChmdW5jdGlvbigpe3JldHVybiBuLmlzU3RhdGljfSkpO3ZhciBpPVwib2JqZWN0XCI9PXR5cGVvZiBuLnRyYW5zaXRpb24/bi50cmFuc2l0aW9uLnRvU3RyaW5nKCk6XCJcIixhPW8udXNlTWVtbygoZnVuY3Rpb24oKXtyZXR1cm4gbn0pLFtpLG4udHJhbnNmb3JtUGFnZVBvaW50XSk7cmV0dXJuIHUuY3JlYXRlRWxlbWVudCh3LlByb3ZpZGVyLHt2YWx1ZTphfSx0KX0sdC5Nb3Rpb25Db25maWdDb250ZXh0PXcsdC5Nb3Rpb25WYWx1ZT1UdCx0LlByZXNlbmNlQ29udGV4dD14LHQuU2hhcmVkTGF5b3V0Q29udGV4dD1Pcix0LmFkZFNjYWxlQ29ycmVjdGlvbj1XLHQuYW5pbWF0ZT1zbyx0LmFuaW1hdGVWaXN1YWxFbGVtZW50PVl0LHQuYW5pbWF0aW9uQ29udHJvbHM9Wm8sdC5iYXRjaExheW91dD1Rbix0LmNyZWF0ZUJhdGNoZXI9YnIsdC5jcmVhdGVDcm9zc2ZhZGVyPXVvLHQuY3JlYXRlRG9tTW90aW9uQ29tcG9uZW50PWZ1bmN0aW9uKGUpe3JldHVybiBCKEJlKGUse2ZvcndhcmRNb3Rpb25Qcm9wczohMX0sdG8sZW8pKX0sdC5jcmVhdGVNb3Rpb25Db21wb25lbnQ9Qix0LmRvbUFuaW1hdGlvbj15byx0LmRvbU1heD1ibyx0LmZsdXNoTGF5b3V0PUpuLHQuaXNWYWxpZE1vdGlvblByb3A9ZGUsdC5tPXJvLHQubW90aW9uPW5vLHQubW90aW9uVmFsdWU9QXQsdC5yZXNvbHZlTW90aW9uVmFsdWU9VmUsdC5zbmFwc2hvdFZpZXdwb3J0Qm94PVJuLHQudHJhbnNmb3JtPWpvLHQudXNlQW5pbWF0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9Tyhabyk7cmV0dXJuIG8udXNlRWZmZWN0KGUubW91bnQsW10pLGV9LHQudXNlQ3ljbGU9ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0XT1hcmd1bWVudHNbdF07dmFyIG49by51c2VSZWYoMCksaT1yLl9fcmVhZChvLnVzZVN0YXRlKGVbbi5jdXJyZW50XSksMiksYT1pWzBdLGM9aVsxXTtyZXR1cm5bYSxmdW5jdGlvbih0KXtuLmN1cnJlbnQ9XCJudW1iZXJcIiE9dHlwZW9mIHQ/bC53cmFwKDAsZS5sZW5ndGgsbi5jdXJyZW50KzEpOnQsYyhlW24uY3VycmVudF0pfV19LHQudXNlRGVwcmVjYXRlZEFuaW1hdGVkU3RhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5fX3JlYWQoby51c2VTdGF0ZShlKSwyKSxuPXRbMF0saT10WzFdLGE9JG8oe30sITEpLGw9TygoZnVuY3Rpb24oKXtyZXR1cm4gQm8oe3Byb3BzOnt9LHZpc3VhbFN0YXRlOmF9LHtpbml0aWFsU3RhdGU6ZX0pfSkpO3JldHVybiBvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gbC5tb3VudCh7fSksbC51bm1vdW50KCl9KSxbXSksby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7bC5zZXRQcm9wcyh7b25VcGRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoci5fX2Fzc2lnbih7fSxlKSl9fSl9KSksW24sTygoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIFl0KGwsZSl9fSkpXX0sdC51c2VEZXByZWNhdGVkSW52ZXJ0ZWRTY2FsZT1mdW5jdGlvbihlKXt2YXIgdD14bygxKSxuPXhvKDEpLHI9YigpO3JldHVybiBpLmludmFyaWFudCghKCFlJiYhciksXCJJZiBubyBzY2FsZSB2YWx1ZXMgYXJlIHByb3ZpZGVkLCB1c2VJbnZlcnRlZFNjYWxlIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBjaGlsZCBvZiBhbm90aGVyIG1vdGlvbiBjb21wb25lbnQuXCIpLGkud2FybmluZyhObyxcInVzZUludmVydGVkU2NhbGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuMC4gVXNlIHRoZSBsYXlvdXQgcHJvcCBpbnN0ZWFkLlwiKSxObz0hMCxlPyh0PWUuc2NhbGVYfHx0LG49ZS5zY2FsZVl8fG4pOnImJih0PXIuZ2V0VmFsdWUoXCJzY2FsZVhcIiwxKSxuPXIuZ2V0VmFsdWUoXCJzY2FsZVlcIiwxKSkse3NjYWxlWDpFbyh0LEZvKSxzY2FsZVk6RW8obixGbyl9fSx0LnVzZURvbUV2ZW50PUZlLHQudXNlRHJhZ0NvbnRyb2xzPWZ1bmN0aW9uKCl7cmV0dXJuIE8oQW8pfSx0LnVzZUVsZW1lbnRTY3JvbGw9ZnVuY3Rpb24oZSl7dmFyIHQ9TyhQbyk7cmV0dXJuIEgoKGZ1bmN0aW9uKCl7dmFyIG49ZS5jdXJyZW50O2lmKGkuaW52YXJpYW50KCEhbixcInJlZiBwcm92aWRlZCB0byB1c2VTY3JvbGwgbXVzdCBiZSBwYXNzZWQgaW50byBhIEhUTUwgZWxlbWVudC5cIiksbil7dmFyIHI9a28odCxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm57eE9mZnNldDplLnNjcm9sbExlZnQseU9mZnNldDplLnNjcm9sbFRvcCx4TWF4T2Zmc2V0OmUuc2Nyb2xsV2lkdGgtZS5vZmZzZXRXaWR0aCx5TWF4T2Zmc2V0OmUuc2Nyb2xsSGVpZ2h0LWUub2Zmc2V0SGVpZ2h0fX19KG4pKSxvPSRlKG4sXCJzY3JvbGxcIixyLHtwYXNzaXZlOiEwfSksYT0kZShuLFwicmVzaXplXCIscik7cmV0dXJuIGZ1bmN0aW9uKCl7byYmbygpLGEmJmEoKX19fSksW10pLHR9LHQudXNlSXNQcmVzZW50PWZ1bmN0aW9uKCl7cmV0dXJuIF8oby51c2VDb250ZXh0KHgpKX0sdC51c2VNb3Rpb25UZW1wbGF0ZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTt2YXIgcj1lLmxlbmd0aDtyZXR1cm4gTG8odCwoZnVuY3Rpb24oKXtmb3IodmFyIG49XCJcIixvPTA7bzxyO28rKyluKz1lW29dLHRbb10mJihuKz10W29dLmdldCgpKTtyZXR1cm4gbn0pKX0sdC51c2VNb3Rpb25WYWx1ZT14byx0LnVzZVByZXNlbmNlPUwsdC51c2VSZWR1Y2VkTW90aW9uPWZ1bmN0aW9uKCl7IVJvJiZmdW5jdGlvbigpe2lmKFJvPUF0KG51bGwpLFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cpaWYod2luZG93Lm1hdGNoTWVkaWEpe3ZhciBlPXdpbmRvdy5tYXRjaE1lZGlhKFwiKHByZWZlcnMtcmVkdWNlZC1tb3Rpb24pXCIpLHQ9ZnVuY3Rpb24oKXtyZXR1cm4gUm8uc2V0KGUubWF0Y2hlcyl9O2UuYWRkTGlzdGVuZXIodCksdCgpfWVsc2UgUm8uc2V0KCExKX0oKTt2YXIgZT1yLl9fcmVhZChvLnVzZVN0YXRlKFJvLmdldCgpKSwyKSx0PWVbMF0sbj1lWzFdO3JldHVybiBPbyhSbyxuKSx0fSx0LnVzZVNwcmluZz1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgbj1vLnVzZUNvbnRleHQodykuaXNTdGF0aWMsaT1vLnVzZVJlZihudWxsKSxhPXhvKGVlKGUpP2UuZ2V0KCk6ZSk7cmV0dXJuIG8udXNlTWVtbygoZnVuY3Rpb24oKXtyZXR1cm4gYS5hdHRhY2goKGZ1bmN0aW9uKGUsbyl7cmV0dXJuIG4/byhlKTooaS5jdXJyZW50JiZpLmN1cnJlbnQuc3RvcCgpLGkuY3VycmVudD1sLmFuaW1hdGUoci5fX2Fzc2lnbihyLl9fYXNzaWduKHtmcm9tOmEuZ2V0KCksdG86ZSx2ZWxvY2l0eTphLmdldFZlbG9jaXR5KCl9LHQpLHtvblVwZGF0ZTpvfSkpLGEuZ2V0KCkpfSkpfSksT2JqZWN0LnZhbHVlcyh0KSksT28oZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuc2V0KHBhcnNlRmxvYXQoZSkpfSkpLGF9LHQudXNlVHJhbnNmb3JtPUVvLHQudXNlVmVsb2NpdHk9ZnVuY3Rpb24oZSl7dmFyIHQ9eG8oZS5nZXRWZWxvY2l0eSgpKTtyZXR1cm4gby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIGUudmVsb2NpdHlVcGRhdGVTdWJzY3JpYmVycy5hZGQoKGZ1bmN0aW9uKGUpe3Quc2V0KGUpfSkpfSksW2VdKSx0fSx0LnVzZVZpZXdwb3J0U2Nyb2xsPWZ1bmN0aW9uKCl7cmV0dXJuIF9vfHwoX289UG8oKSksSCgoZnVuY3Rpb24oKXshSW8mJmZ1bmN0aW9uKCl7aWYoSW89ITAsXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyl7dmFyIGU9a28oX28sVm8pOyRlKHdpbmRvdyxcInNjcm9sbFwiLGUse3Bhc3NpdmU6ITB9KSwkZSh3aW5kb3csXCJyZXNpemVcIixlKX19KCl9KSxbXSksX299LHQudmlzdWFsRWxlbWVudD1Jcn0sNDgzOTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBuPTEvNjAqMWUzLHI9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHBlcmZvcm1hbmNlP2Z1bmN0aW9uKCl7cmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpfTpmdW5jdGlvbigpe3JldHVybiBEYXRlLm5vdygpfSxvPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/ZnVuY3Rpb24oZSl7cmV0dXJuIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBlKHIoKSl9KSxuKX0saT0hMCxhPSExLGw9ITEsYz17ZGVsdGE6MCx0aW1lc3RhbXA6MH0scz1bXCJyZWFkXCIsXCJ1cGRhdGVcIixcInByZVJlbmRlclwiLFwicmVuZGVyXCIsXCJwb3N0UmVuZGVyXCJdLHU9cy5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF09ZnVuY3Rpb24oZSl7dmFyIHQ9W10sbj1bXSxyPTAsbz0hMSxpPW5ldyBXZWFrU2V0LGE9e3NjaGVkdWxlOmZ1bmN0aW9uKGUsYSxsKXt2b2lkIDA9PT1hJiYoYT0hMSksdm9pZCAwPT09bCYmKGw9ITEpO3ZhciBjPWwmJm8scz1jP3Q6bjtyZXR1cm4gYSYmaS5hZGQoZSksLTE9PT1zLmluZGV4T2YoZSkmJihzLnB1c2goZSksYyYmbyYmKHI9dC5sZW5ndGgpKSxlfSxjYW5jZWw6ZnVuY3Rpb24oZSl7dmFyIHQ9bi5pbmRleE9mKGUpOy0xIT09dCYmbi5zcGxpY2UodCwxKSxpLmRlbGV0ZShlKX0scHJvY2VzczpmdW5jdGlvbihsKXt2YXIgYztpZihvPSEwLHQ9KGM9W24sdF0pWzBdLChuPWNbMV0pLmxlbmd0aD0wLHI9dC5sZW5ndGgpZm9yKHZhciBzPTA7czxyO3MrKyl7dmFyIHU9dFtzXTt1KGwpLGkuaGFzKHUpJiYoYS5zY2hlZHVsZSh1KSxlKCkpfW89ITF9fTtyZXR1cm4gYX0oKGZ1bmN0aW9uKCl7cmV0dXJuIGE9ITB9KSksZX0pLHt9KSxkPXMucmVkdWNlKChmdW5jdGlvbihlLHQpe3ZhciBuPXVbdF07cmV0dXJuIGVbdF09ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB2b2lkIDA9PT10JiYodD0hMSksdm9pZCAwPT09ciYmKHI9ITEpLGF8fHYoKSxuLnNjaGVkdWxlKGUsdCxyKX0sZX0pLHt9KSxmPXMucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlW3RdPXVbdF0uY2FuY2VsLGV9KSx7fSkscD1zLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XT1mdW5jdGlvbigpe3JldHVybiB1W3RdLnByb2Nlc3MoYyl9LGV9KSx7fSksQz1mdW5jdGlvbihlKXtyZXR1cm4gdVtlXS5wcm9jZXNzKGMpfSxoPWZ1bmN0aW9uKGUpe2E9ITEsYy5kZWx0YT1pP246TWF0aC5tYXgoTWF0aC5taW4oZS1jLnRpbWVzdGFtcCw0MCksMSksYy50aW1lc3RhbXA9ZSxsPSEwLHMuZm9yRWFjaChDKSxsPSExLGEmJihpPSExLG8oaCkpfSx2PWZ1bmN0aW9uKCl7YT0hMCxpPSEwLGx8fG8oaCl9O3QuY2FuY2VsU3luYz1mLHQuZGVmYXVsdD1kLHQuZmx1c2hTeW5jPXAsdC5nZXRGcmFtZURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gY319LDQzOTQ6KGUsdCxuKT0+e24ucih0KSxuLmQodCx7aW52YXJpYW50OigpPT5vLHdhcm5pbmc6KCk9PnJ9KTt2YXIgcj1mdW5jdGlvbigpe30sbz1mdW5jdGlvbigpe319LDc3MzooZSx0LG4pPT57dmFyIHIsbz1cIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX19cIixpPS9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC8sYT1cIm9iamVjdFwiPT10eXBlb2Ygbi5nJiZuLmcmJm4uZy5PYmplY3Q9PT1PYmplY3QmJm4uZyxsPVwib2JqZWN0XCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixjPWF8fGx8fEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSxzPUFycmF5LnByb3RvdHlwZSx1PUZ1bmN0aW9uLnByb3RvdHlwZSxkPU9iamVjdC5wcm90b3R5cGUsZj1jW1wiX19jb3JlLWpzX3NoYXJlZF9fXCJdLHA9KHI9L1teLl0rJC8uZXhlYyhmJiZmLmtleXMmJmYua2V5cy5JRV9QUk9UT3x8XCJcIikpP1wiU3ltYm9sKHNyYylfMS5cIityOlwiXCIsQz11LnRvU3RyaW5nLGg9ZC5oYXNPd25Qcm9wZXJ0eSx2PWQudG9TdHJpbmcsZz1SZWdFeHAoXCJeXCIrQy5jYWxsKGgpLnJlcGxhY2UoL1tcXFxcXiQuKis/KClbXFxde318XS9nLFwiXFxcXCQmXCIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csXCIkMS4qP1wiKStcIiRcIiksbT1zLnNwbGljZSx3PU0oYyxcIk1hcFwiKSx5PU0oT2JqZWN0LFwiY3JlYXRlXCIpO2Z1bmN0aW9uIGIoZSl7dmFyIHQ9LTEsbj1lP2UubGVuZ3RoOjA7Zm9yKHRoaXMuY2xlYXIoKTsrK3Q8bjspe3ZhciByPWVbdF07dGhpcy5zZXQoclswXSxyWzFdKX19ZnVuY3Rpb24geChlKXt2YXIgdD0tMSxuPWU/ZS5sZW5ndGg6MDtmb3IodGhpcy5jbGVhcigpOysrdDxuOyl7dmFyIHI9ZVt0XTt0aGlzLnNldChyWzBdLHJbMV0pfX1mdW5jdGlvbiBPKGUpe3ZhciB0PS0xLG49ZT9lLmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PG47KXt2YXIgcj1lW3RdO3RoaXMuc2V0KHJbMF0sclsxXSl9fWZ1bmN0aW9uIEwoZSx0KXtmb3IodmFyIG4scixvPWUubGVuZ3RoO28tLTspaWYoKG49ZVtvXVswXSk9PT0ocj10KXx8biE9biYmciE9cilyZXR1cm4gbztyZXR1cm4tMX1mdW5jdGlvbiBfKGUsdCl7dmFyIG4scixvPWUuX19kYXRhX187cmV0dXJuKFwic3RyaW5nXCI9PShyPXR5cGVvZihuPXQpKXx8XCJudW1iZXJcIj09cnx8XCJzeW1ib2xcIj09cnx8XCJib29sZWFuXCI9PXI/XCJfX3Byb3RvX19cIiE9PW46bnVsbD09PW4pP29bXCJzdHJpbmdcIj09dHlwZW9mIHQ/XCJzdHJpbmdcIjpcImhhc2hcIl06by5tYXB9ZnVuY3Rpb24gTShlLHQpe3ZhciBuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmVbdF19KGUsdCk7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCFFKGUpfHxwJiZwIGluIGUpcmV0dXJuITE7dmFyIHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9RShlKT92LmNhbGwoZSk6XCJcIjtyZXR1cm5cIltvYmplY3QgRnVuY3Rpb25dXCI9PXR8fFwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl1cIj09dH0oZSl8fGZ1bmN0aW9uKGUpe3ZhciB0PSExO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGUudG9TdHJpbmcpdHJ5e3Q9ISEoZStcIlwiKX1jYXRjaChlKXt9cmV0dXJuIHR9KGUpP2c6aTtyZXR1cm4gdC50ZXN0KGZ1bmN0aW9uKGUpe2lmKG51bGwhPWUpe3RyeXtyZXR1cm4gQy5jYWxsKGUpfWNhdGNoKGUpe310cnl7cmV0dXJuIGUrXCJcIn1jYXRjaChlKXt9fXJldHVyblwiXCJ9KGUpKX0obik/bjp2b2lkIDB9ZnVuY3Rpb24gaihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGV8fHQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIGEgZnVuY3Rpb25cIik7dmFyIG49ZnVuY3Rpb24oKXt2YXIgcj1hcmd1bWVudHMsbz10P3QuYXBwbHkodGhpcyxyKTpyWzBdLGk9bi5jYWNoZTtpZihpLmhhcyhvKSlyZXR1cm4gaS5nZXQobyk7dmFyIGE9ZS5hcHBseSh0aGlzLHIpO3JldHVybiBuLmNhY2hlPWkuc2V0KG8sYSksYX07cmV0dXJuIG4uY2FjaGU9bmV3KGouQ2FjaGV8fE8pLG59ZnVuY3Rpb24gRShlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4hIWUmJihcIm9iamVjdFwiPT10fHxcImZ1bmN0aW9uXCI9PXQpfWIucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz15P3kobnVsbCk6e319LGIucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5oYXMoZSkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW2VdfSxiLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXztpZih5KXt2YXIgbj10W2VdO3JldHVybiBuPT09bz92b2lkIDA6bn1yZXR1cm4gaC5jYWxsKHQsZSk/dFtlXTp2b2lkIDB9LGIucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO3JldHVybiB5P3ZvaWQgMCE9PXRbZV06aC5jYWxsKHQsZSl9LGIucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9fZGF0YV9fW2VdPXkmJnZvaWQgMD09PXQ/bzp0LHRoaXN9LHgucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXX0seC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18sbj1MKHQsZSk7cmV0dXJuIShuPDB8fChuPT10Lmxlbmd0aC0xP3QucG9wKCk6bS5jYWxsKHQsbiwxKSwwKSl9LHgucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fLG49TCh0LGUpO3JldHVybiBuPDA/dm9pZCAwOnRbbl1bMV19LHgucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gTCh0aGlzLl9fZGF0YV9fLGUpPi0xfSx4LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9fZGF0YV9fLHI9TChuLGUpO3JldHVybiByPDA/bi5wdXNoKFtlLHRdKTpuW3JdWzFdPXQsdGhpc30sTy5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBiLG1hcDpuZXcod3x8eCksc3RyaW5nOm5ldyBifX0sTy5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3JldHVybiBfKHRoaXMsZSkuZGVsZXRlKGUpfSxPLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odGhpcyxlKS5nZXQoZSl9LE8ucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gXyh0aGlzLGUpLmhhcyhlKX0sTy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIF8odGhpcyxlKS5zZXQoZSx0KSx0aGlzfSxqLkNhY2hlPU8sZS5leHBvcnRzPWp9LDc0MTg6ZT0+e3ZhciB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsbj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHI9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIGU9bmV3IFN0cmluZyhcImFiY1wiKTtpZihlWzVdPVwiZGVcIixcIjVcIj09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBdKXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFtcIl9cIitTdHJpbmcuZnJvbUNoYXJDb2RlKG4pXT1uO2lmKFwiMDEyMzQ1Njc4OVwiIT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pKS5qb2luKFwiXCIpKXJldHVybiExO3ZhciByPXt9O3JldHVyblwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIi5zcGxpdChcIlwiKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyW2VdPWV9KSksXCJhYmNkZWZnaGlqa2xtbm9wcXJzdFwiPT09T2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxyKSkuam9pbihcIlwiKX1jYXRjaChlKXtyZXR1cm4hMX19KCk/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihlLG8pe2Zvcih2YXIgaSxhLGw9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWRcIik7cmV0dXJuIE9iamVjdChlKX0oZSksYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe2Zvcih2YXIgcyBpbiBpPU9iamVjdChhcmd1bWVudHNbY10pKW4uY2FsbChpLHMpJiYobFtzXT1pW3NdKTtpZih0KXthPXQoaSk7Zm9yKHZhciB1PTA7dTxhLmxlbmd0aDt1Kyspci5jYWxsKGksYVt1XSkmJihsW2FbdV1dPWlbYVt1XV0pfX1yZXR1cm4gbH19LDkyOTQ6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPW4oNjU1KSxvPW4oNDM5NCksaT1uKDM1NzMpLGE9big0ODM5KTt2YXIgbD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJlwiZGVmYXVsdFwiaW4gZT9lOntkZWZhdWx0OmV9fShhKSxjPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgobixlKSx0KX0scz0uMDAxLHU9LjAxLGQ9MTAsZj0uMDUscD0xLEM9MTI7ZnVuY3Rpb24gaChlLHQpe3JldHVybiBlKk1hdGguc3FydCgxLXQqdCl9dmFyIHY9W1wiZHVyYXRpb25cIixcImJvdW5jZVwiXSxnPVtcInN0aWZmbmVzc1wiLFwiZGFtcGluZ1wiLFwibWFzc1wiXTtmdW5jdGlvbiBtKGUsdCl7cmV0dXJuIHQuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PWVbdF19KSl9ZnVuY3Rpb24gdyhlKXt2YXIgdD1lLmZyb20sbj12b2lkIDA9PT10PzA6dCxpPWUudG8sYT12b2lkIDA9PT1pPzE6aSxsPWUucmVzdFNwZWVkLHc9dm9pZCAwPT09bD8yOmwsYj1lLnJlc3REZWx0YSx4PXIuX19yZXN0KGUsW1wiZnJvbVwiLFwidG9cIixcInJlc3RTcGVlZFwiLFwicmVzdERlbHRhXCJdKSxPPXtkb25lOiExLHZhbHVlOm59LEw9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5fX2Fzc2lnbih7dmVsb2NpdHk6MCxzdGlmZm5lc3M6MTAwLGRhbXBpbmc6MTAsbWFzczoxLGlzUmVzb2x2ZWRGcm9tRHVyYXRpb246ITF9LGUpO2lmKCFtKGUsZykmJm0oZSx2KSl7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWUuZHVyYXRpb24saT12b2lkIDA9PT1yPzgwMDpyLGE9ZS5ib3VuY2UsbD12b2lkIDA9PT1hPy4yNTphLHY9ZS52ZWxvY2l0eSxnPXZvaWQgMD09PXY/MDp2LG09ZS5tYXNzLHc9dm9pZCAwPT09bT8xOm07by53YXJuaW5nKGk8PTFlMypkLFwiU3ByaW5nIGR1cmF0aW9uIG11c3QgYmUgMTAgc2Vjb25kcyBvciBsZXNzXCIpO3ZhciB5PTEtbDt5PWMoZixwLHkpLGk9Yyh1LGQsaS8xZTMpLHk8MT8odD1mdW5jdGlvbihlKXt2YXIgdD1lKnksbj10Kmkscj10LWcsbz1oKGUseSksYT1NYXRoLmV4cCgtbik7cmV0dXJuIHMtci9vKmF9LG49ZnVuY3Rpb24oZSl7dmFyIG49ZSp5Kmkscj1uKmcrZyxvPU1hdGgucG93KHksMikqTWF0aC5wb3coZSwyKSppLGE9TWF0aC5leHAoLW4pLGw9aChNYXRoLnBvdyhlLDIpLHkpO3JldHVybigtdChlKStzPjA/LTE6MSkqKChyLW8pKmEpL2x9KToodD1mdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5leHAoLWUqaSkqKChlLWcpKmkrMSktc30sbj1mdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5leHAoLWUqaSkqKGkqaSooZy1lKSl9KTt2YXIgYj1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPW4sbz0xO288QztvKyspci09ZShyKS90KHIpO3JldHVybiByfSh0LG4sNS9pKTtpZihpKj0xZTMsaXNOYU4oYikpcmV0dXJue3N0aWZmbmVzczoxMDAsZGFtcGluZzoxMCxkdXJhdGlvbjppfTt2YXIgeD1NYXRoLnBvdyhiLDIpKnc7cmV0dXJue3N0aWZmbmVzczp4LGRhbXBpbmc6Mip5Kk1hdGguc3FydCh3KngpLGR1cmF0aW9uOml9fShlKTsodD1yLl9fYXNzaWduKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSx0KSxuKSx7dmVsb2NpdHk6MCxtYXNzOjF9KSkuaXNSZXNvbHZlZEZyb21EdXJhdGlvbj0hMH1yZXR1cm4gdH0oeCksXz1MLnN0aWZmbmVzcyxNPUwuZGFtcGluZyxqPUwubWFzcyxFPUwudmVsb2NpdHksUz1MLmR1cmF0aW9uLFA9TC5pc1Jlc29sdmVkRnJvbUR1cmF0aW9uLEg9eSxrPXk7ZnVuY3Rpb24gVigpe3ZhciBlPUU/LUUvMWUzOjAsdD1hLW4scj1NLygyKk1hdGguc3FydChfKmopKSxvPU1hdGguc3FydChfL2opLzFlMztpZihudWxsIT1ifHwoYj1NYXRoLmFicyhhLW4pPD0xPy4wMTouNCkscjwxKXt2YXIgaT1oKG8scik7SD1mdW5jdGlvbihuKXt2YXIgbD1NYXRoLmV4cCgtcipvKm4pO3JldHVybiBhLWwqKChlK3Iqbyp0KS9pKk1hdGguc2luKGkqbikrdCpNYXRoLmNvcyhpKm4pKX0saz1mdW5jdGlvbihuKXt2YXIgYT1NYXRoLmV4cCgtcipvKm4pO3JldHVybiByKm8qYSooTWF0aC5zaW4oaSpuKSooZStyKm8qdCkvaSt0Kk1hdGguY29zKGkqbikpLWEqKE1hdGguY29zKGkqbikqKGUrcipvKnQpLWkqdCpNYXRoLnNpbihpKm4pKX19ZWxzZSBpZigxPT09cilIPWZ1bmN0aW9uKG4pe3JldHVybiBhLU1hdGguZXhwKC1vKm4pKih0KyhlK28qdCkqbil9O2Vsc2V7dmFyIGw9bypNYXRoLnNxcnQocipyLTEpO0g9ZnVuY3Rpb24obil7dmFyIGk9TWF0aC5leHAoLXIqbypuKSxjPU1hdGgubWluKGwqbiwzMDApO3JldHVybiBhLWkqKChlK3Iqbyp0KSpNYXRoLnNpbmgoYykrbCp0Kk1hdGguY29zaChjKSkvbH19fXJldHVybiBWKCkse25leHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9SChlKTtpZihQKU8uZG9uZT1lPj1TO2Vsc2V7dmFyIG49MWUzKmsoZSkscj1NYXRoLmFicyhuKTw9dyxvPU1hdGguYWJzKGEtdCk8PWI7Ty5kb25lPXImJm99cmV0dXJuIE8udmFsdWU9Ty5kb25lP2E6dCxPfSxmbGlwVGFyZ2V0OmZ1bmN0aW9uKCl7dmFyIGU7RT0tRSxuPShlPVthLG5dKVswXSxhPWVbMV0sVigpfX19dy5uZWVkc0ludGVycG9sYXRpb249ZnVuY3Rpb24oZSx0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZXx8XCJzdHJpbmdcIj09dHlwZW9mIHR9O3ZhciB5PWZ1bmN0aW9uKGUpe3JldHVybiAwfSxiPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LWU7cmV0dXJuIDA9PT1yPzE6KG4tZSkvcn0seD1mdW5jdGlvbihlLHQsbil7cmV0dXJuLW4qZStuKnQrZX0sTz1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZSplLG89dCp0O3JldHVybiBNYXRoLnNxcnQoTWF0aC5tYXgoMCxuKihvLXIpK3IpKX0sTD1baS5oZXgsaS5yZ2JhLGkuaHNsYV0sXz1mdW5jdGlvbihlKXtyZXR1cm4gTC5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC50ZXN0KGUpfSkpfSxNPWZ1bmN0aW9uKGUpe3JldHVyblwiJ1wiK2UrXCInIGlzIG5vdCBhbiBhbmltYXRhYmxlIGNvbG9yLiBVc2UgdGhlIGVxdWl2YWxlbnQgY29sb3IgY29kZSBpbnN0ZWFkLlwifSxqPWZ1bmN0aW9uKGUsdCl7dmFyIG49XyhlKSxhPV8odCk7by5pbnZhcmlhbnQoISFuLE0oZSkpLG8uaW52YXJpYW50KCEhYSxNKHQpKSxvLmludmFyaWFudChuLnRyYW5zZm9ybT09PWEudHJhbnNmb3JtLFwiQm90aCBjb2xvcnMgbXVzdCBiZSBoZXgvUkdCQSwgT1IgYm90aCBtdXN0IGJlIEhTTEEuXCIpO3ZhciBsPW4ucGFyc2UoZSksYz1hLnBhcnNlKHQpLHM9ci5fX2Fzc2lnbih7fSxsKSx1PW49PT1pLmhzbGE/eDpPO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gcylcImFscGhhXCIhPT10JiYoc1t0XT11KGxbdF0sY1t0XSxlKSk7cmV0dXJuIHMuYWxwaGE9eChsLmFscGhhLGMuYWxwaGEsZSksbi50cmFuc2Zvcm0ocyl9fSxFPXt4OjAseTowLHo6MH0sUz1mdW5jdGlvbihlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZX0sUD1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdChlKG4pKX19LEg9ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0XT1hcmd1bWVudHNbdF07cmV0dXJuIGUucmVkdWNlKFApfTtmdW5jdGlvbiBrKGUsdCl7cmV0dXJuIFMoZSk/ZnVuY3Rpb24obil7cmV0dXJuIHgoZSx0LG4pfTppLmNvbG9yLnRlc3QoZSk/aihlLHQpOlooZSx0KX12YXIgVj1mdW5jdGlvbihlLHQpe3ZhciBuPXIuX19zcHJlYWRBcnJheShbXSxlKSxvPW4ubGVuZ3RoLGk9ZS5tYXAoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGsoZSx0W25dKX0pKTtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxvO3QrKyluW3RdPWlbdF0oZSk7cmV0dXJuIG59fSxSPWZ1bmN0aW9uKGUsdCl7dmFyIG49ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGUpLHQpLG89e307Zm9yKHZhciBpIGluIG4pdm9pZCAwIT09ZVtpXSYmdm9pZCAwIT09dFtpXSYmKG9baV09ayhlW2ldLHRbaV0pKTtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIG8pblt0XT1vW3RdKGUpO3JldHVybiBufX07ZnVuY3Rpb24gSShlKXtmb3IodmFyIHQ9aS5jb21wbGV4LnBhcnNlKGUpLG49dC5sZW5ndGgscj0wLG89MCxhPTAsbD0wO2w8bjtsKyspcnx8XCJudW1iZXJcIj09dHlwZW9mIHRbbF0/cisrOnZvaWQgMCE9PXRbbF0uaHVlP2ErKzpvKys7cmV0dXJue3BhcnNlZDp0LG51bU51bWJlcnM6cixudW1SR0I6byxudW1IU0w6YX19dmFyIFo9ZnVuY3Rpb24oZSx0KXt2YXIgbj1pLmNvbXBsZXguY3JlYXRlVHJhbnNmb3JtZXIodCkscj1JKGUpLGE9SSh0KTtyZXR1cm4gby5pbnZhcmlhbnQoci5udW1IU0w9PT1hLm51bUhTTCYmci5udW1SR0I9PT1hLm51bVJHQiYmci5udW1OdW1iZXJzPj1hLm51bU51bWJlcnMsXCJDb21wbGV4IHZhbHVlcyAnXCIrZStcIicgYW5kICdcIit0K1wiJyB0b28gZGlmZmVyZW50IHRvIG1peC4gRW5zdXJlIGFsbCBjb2xvcnMgYXJlIG9mIHRoZSBzYW1lIHR5cGUuXCIpLEgoVihyLnBhcnNlZCxhLnBhcnNlZCksbil9LFQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHgoZSx0LG4pfX07ZnVuY3Rpb24gQShlLHQsbil7dmFyIHI9dm9pZCAwPT09bj97fTpuLGE9ci5jbGFtcCxsPXZvaWQgMD09PWF8fGEscz1yLmVhc2UsdT1yLm1peGVyLGQ9ZS5sZW5ndGg7by5pbnZhcmlhbnQoZD09PXQubGVuZ3RoLFwiQm90aCBpbnB1dCBhbmQgb3V0cHV0IHJhbmdlcyBtdXN0IGJlIHRoZSBzYW1lIGxlbmd0aFwiKSxvLmludmFyaWFudCghc3x8IUFycmF5LmlzQXJyYXkocyl8fHMubGVuZ3RoPT09ZC0xLFwiQXJyYXkgb2YgZWFzaW5nIGZ1bmN0aW9ucyBtdXN0IGJlIG9mIGxlbmd0aCBgaW5wdXQubGVuZ3RoIC0gMWAsIGFzIGl0IGFwcGxpZXMgdG8gdGhlIHRyYW5zaXRpb25zICoqYmV0d2VlbioqIHRoZSBkZWZpbmVkIHZhbHVlcy5cIiksZVswXT5lW2QtMV0mJihlPVtdLmNvbmNhdChlKSx0PVtdLmNvbmNhdCh0KSxlLnJldmVyc2UoKSx0LnJldmVyc2UoKSk7dmFyIGY9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcixvPVtdLGE9bnx8KFwibnVtYmVyXCI9PXR5cGVvZihyPWVbMF0pP1Q6XCJzdHJpbmdcIj09dHlwZW9mIHI/aS5jb2xvci50ZXN0KHIpP2o6WjpBcnJheS5pc0FycmF5KHIpP1Y6XCJvYmplY3RcIj09dHlwZW9mIHI/Ujp2b2lkIDApLGw9ZS5sZW5ndGgtMSxjPTA7YzxsO2MrKyl7dmFyIHM9YShlW2NdLGVbYysxXSk7aWYodCl7dmFyIHU9QXJyYXkuaXNBcnJheSh0KT90W2NdOnQ7cz1IKHUscyl9by5wdXNoKHMpfXJldHVybiBvfSh0LHMsdSkscD0yPT09ZD9mdW5jdGlvbihlLHQpe3ZhciBuPWVbMF0scj1lWzFdLG89dFswXTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG8oYihuLHIsZSkpfX0oZSxmKTpmdW5jdGlvbihlLHQpe3ZhciBuPWUubGVuZ3RoLHI9bi0xO3JldHVybiBmdW5jdGlvbihvKXt2YXIgaT0wLGE9ITE7aWYobzw9ZVswXT9hPSEwOm8+PWVbcl0mJihpPXItMSxhPSEwKSwhYSl7Zm9yKHZhciBsPTE7bDxuJiYhKGVbbF0+b3x8bD09PXIpO2wrKyk7aT1sLTF9dmFyIGM9YihlW2ldLGVbaSsxXSxvKTtyZXR1cm4gdFtpXShjKX19KGUsZik7cmV0dXJuIGw/ZnVuY3Rpb24odCl7cmV0dXJuIHAoYyhlWzBdLGVbZC0xXSx0KSl9OnB9dmFyIEQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiAxLWUoMS10KX19LEI9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0PD0uNT9lKDIqdCkvMjooMi1lKDIqKDEtdCkpKS8yfX0sJD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KHQsZSl9fSxGPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdCp0KigoZSsxKSp0LWUpfX0sTj1mdW5jdGlvbihlKXt2YXIgdD1GKGUpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4oZSo9Mik8MT8uNSp0KGUpOi41KigyLU1hdGgucG93KDIsLTEwKihlLTEpKSl9fSx6PWZ1bmN0aW9uKGUpe3JldHVybiBlfSxXPSQoMiksRz1EKFcpLFU9QihXKSxxPWZ1bmN0aW9uKGUpe3JldHVybiAxLU1hdGguc2luKE1hdGguYWNvcyhlKSl9LFk9RChxKSxLPUIoWSksWD1GKDEuNTI1KSxRPUQoWCksSj1CKFgpLGVlPU4oMS41MjUpLHRlPWZ1bmN0aW9uKGUpe2lmKDE9PT1lfHwwPT09ZSlyZXR1cm4gZTt2YXIgdD1lKmU7cmV0dXJuIGU8LjM2MzYzNjM2MzYzNjM2MzY1PzcuNTYyNSp0OmU8LjcyNzI3MjcyNzI3MjcyNzM/OS4wNzUqdC05LjkqZSszLjQ6ZTwuOT8xMi4wNjY0ODE5OTQ0NTk4MzMqdC0xOS42MzU0NTcwNjM3MTE5MSplKzguODk4MDYwOTQxODI4MjU1OjEwLjgqZSplLTIwLjUyKmUrMTAuNzJ9LG5lPUQodGUpO2Z1bmN0aW9uIHJlKGUsdCl7cmV0dXJuIGUubWFwKChmdW5jdGlvbigpe3JldHVybiB0fHxVfSkpLnNwbGljZSgwLGUubGVuZ3RoLTEpfWZ1bmN0aW9uIG9lKGUpe3ZhciB0PWUuZnJvbSxuPXZvaWQgMD09PXQ/MDp0LHI9ZS50byxvPXZvaWQgMD09PXI/MTpyLGk9ZS5lYXNlLGE9ZS5vZmZzZXQsbD1lLmR1cmF0aW9uLGM9dm9pZCAwPT09bD8zMDA6bCxzPXtkb25lOiExLHZhbHVlOm59LHU9QXJyYXkuaXNBcnJheShvKT9vOltuLG9dLGQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlKnR9KSl9KGEmJmEubGVuZ3RoPT09dS5sZW5ndGg/YTpmdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aDtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIDAhPT1uP24vKHQtMSk6MH0pKX0odSksYyk7ZnVuY3Rpb24gZigpe3JldHVybiBBKGQsdSx7ZWFzZTpBcnJheS5pc0FycmF5KGkpP2k6cmUodSxpKX0pfXZhciBwPWYoKTtyZXR1cm57bmV4dDpmdW5jdGlvbihlKXtyZXR1cm4gcy52YWx1ZT1wKGUpLHMuZG9uZT1lPj1jLHN9LGZsaXBUYXJnZXQ6ZnVuY3Rpb24oKXt1LnJldmVyc2UoKSxwPWYoKX19fWZ1bmN0aW9uIGllKGUpe3ZhciB0PWUudmVsb2NpdHksbj12b2lkIDA9PT10PzA6dCxyPWUuZnJvbSxvPXZvaWQgMD09PXI/MDpyLGk9ZS5wb3dlcixhPXZvaWQgMD09PWk/Ljg6aSxsPWUudGltZUNvbnN0YW50LGM9dm9pZCAwPT09bD8zNTA6bCxzPWUucmVzdERlbHRhLHU9dm9pZCAwPT09cz8uNTpzLGQ9ZS5tb2RpZnlUYXJnZXQsZj17ZG9uZTohMSx2YWx1ZTpvfSxwPWEqbixDPW8rcCxoPXZvaWQgMD09PWQ/QzpkKEMpO3JldHVybiBoIT09QyYmKHA9aC1vKSx7bmV4dDpmdW5jdGlvbihlKXt2YXIgdD0tcCpNYXRoLmV4cCgtZS9jKTtyZXR1cm4gZi5kb25lPSEodD51fHx0PC11KSxmLnZhbHVlPWYuZG9uZT9oOmgrdCxmfSxmbGlwVGFyZ2V0OmZ1bmN0aW9uKCl7fX19dmFyIGFlPXtrZXlmcmFtZXM6b2Usc3ByaW5nOncsZGVjYXk6aWV9O2Z1bmN0aW9uIGxlKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49MCksZS10LW59dmFyIGNlPWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKHQpe3ZhciBuPXQuZGVsdGE7cmV0dXJuIGUobil9O3JldHVybntzdGFydDpmdW5jdGlvbigpe3JldHVybiBsLmRlZmF1bHQudXBkYXRlKHQsITApfSxzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIGEuY2FuY2VsU3luYy51cGRhdGUodCl9fX07ZnVuY3Rpb24gc2UoZSl7dmFyIHQsbixvLGksYSxsPWUuZnJvbSxjPWUuYXV0b3BsYXkscz12b2lkIDA9PT1jfHxjLHU9ZS5kcml2ZXIsZD12b2lkIDA9PT11P2NlOnUsZj1lLmVsYXBzZWQscD12b2lkIDA9PT1mPzA6ZixDPWUucmVwZWF0LGg9dm9pZCAwPT09Qz8wOkMsdj1lLnJlcGVhdFR5cGUsZz12b2lkIDA9PT12P1wibG9vcFwiOnYsbT1lLnJlcGVhdERlbGF5LHk9dm9pZCAwPT09bT8wOm0sYj1lLm9uUGxheSx4PWUub25TdG9wLE89ZS5vbkNvbXBsZXRlLEw9ZS5vblJlcGVhdCxfPWUub25VcGRhdGUsTT1yLl9fcmVzdChlLFtcImZyb21cIixcImF1dG9wbGF5XCIsXCJkcml2ZXJcIixcImVsYXBzZWRcIixcInJlcGVhdFwiLFwicmVwZWF0VHlwZVwiLFwicmVwZWF0RGVsYXlcIixcIm9uUGxheVwiLFwib25TdG9wXCIsXCJvbkNvbXBsZXRlXCIsXCJvblJlcGVhdFwiLFwib25VcGRhdGVcIl0pLGo9TS50byxFPTAsUz1NLmR1cmF0aW9uLFA9ITEsSD0hMCxrPWZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZS50bykpcmV0dXJuIG9lO2lmKGFlW2UudHlwZV0pcmV0dXJuIGFlW2UudHlwZV07dmFyIHQ9bmV3IFNldChPYmplY3Qua2V5cyhlKSk7cmV0dXJuIHQuaGFzKFwiZWFzZVwiKXx8dC5oYXMoXCJkdXJhdGlvblwiKSYmIXQuaGFzKFwiZGFtcGluZ1JhdGlvXCIpP29lOnQuaGFzKFwiZGFtcGluZ1JhdGlvXCIpfHx0LmhhcyhcInN0aWZmbmVzc1wiKXx8dC5oYXMoXCJtYXNzXCIpfHx0LmhhcyhcImRhbXBpbmdcIil8fHQuaGFzKFwicmVzdFNwZWVkXCIpfHx0LmhhcyhcInJlc3REZWx0YVwiKT93Om9lfShNKTsobnVsbD09PShuPSh0PWspLm5lZWRzSW50ZXJwb2xhdGlvbil8fHZvaWQgMD09PW4/dm9pZCAwOm4uY2FsbCh0LGwsaikpJiYoYT1BKFswLDEwMF0sW2wsal0se2NsYW1wOiExfSksbD0wLGo9MTAwKTt2YXIgVj1rKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxNKSx7ZnJvbTpsLHRvOmp9KSk7cmV0dXJuIHMmJihudWxsPT1ifHxiKCksKG89ZCgoZnVuY3Rpb24oZSl7aWYoSHx8KGU9LWUpLHArPWUsIVApe3ZhciB0PVYubmV4dChNYXRoLm1heCgwLHApKTtpPXQudmFsdWUsYSYmKGk9YShpKSksUD1IP3QuZG9uZTpwPD0wfW51bGw9PV98fF8oaSksUCYmKDA9PT1FJiYobnVsbCE9U3x8KFM9cCkpLEU8aD9mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gcj9lPj10K246ZTw9LW59KHAsUyx5LEgpJiYoRSsrLFwicmV2ZXJzZVwiPT09Zz9wPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1yJiYocj0hMCkscj9sZSh0Ky1lLHQsbik6dC0oZS10KStufShwLFMseSxIPUUlMj09MCk6KHA9bGUocCxTLHkpLFwibWlycm9yXCI9PT1nJiZWLmZsaXBUYXJnZXQoKSksUD0hMSxMJiZMKCkpOihvLnN0b3AoKSxPJiZPKCkpKX0pKSkuc3RhcnQoKSkse3N0b3A6ZnVuY3Rpb24oKXtudWxsPT14fHx4KCksby5zdG9wKCl9fX1mdW5jdGlvbiB1ZShlLHQpe3JldHVybiB0P2UqKDFlMy90KTowfXZhciBkZT1mdW5jdGlvbihlKXtyZXR1cm4gMTgwKmUvTWF0aC5QSX0sZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHBlPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1mZSksZnVuY3Rpb24odCxuLHIpe3ZhciBvPW4tcixpPS0oMC10KzEpKigwLWUoTWF0aC5hYnMobykpKTtyZXR1cm4gbzw9MD9uK2k6bi1pfX0sQ2U9cGUoKSxoZT1wZShNYXRoLnNxcnQpLHZlPWZ1bmN0aW9uKGUpe3JldHVybiBlKk1hdGguUEkvMTgwfSxnZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5oYXNPd25Qcm9wZXJ0eShcInhcIikmJmUuaGFzT3duUHJvcGVydHkoXCJ5XCIpfSxtZT1mdW5jdGlvbihlKXtyZXR1cm4gZ2UoZSkmJmUuaGFzT3duUHJvcGVydHkoXCJ6XCIpfSx3ZT1mdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLmFicyhlLXQpfSx5ZT1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0yKSx0PU1hdGgucG93KDEwLHQpLE1hdGgucm91bmQoZSp0KS90fSxiZT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9MCkseWUoZStuKih0LWUpL01hdGgubWF4KHIsbikpfSx4ZT1mdW5jdGlvbihlLHQpe3JldHVybiAxLTMqdCszKmV9LE9lPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDMqdC02KmV9LExlPWZ1bmN0aW9uKGUpe3JldHVybiAzKmV9LF9lPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4oKHhlKHQsbikqZStPZSh0LG4pKSplK0xlKHQpKSplfSxNZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIDMqeGUodCxuKSplKmUrMipPZSh0LG4pKmUrTGUodCl9LGplPS4xO3QuYW5nbGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9RSksZGUoTWF0aC5hdGFuMih0LnktZS55LHQueC1lLngpKX0sdC5hbmltYXRlPXNlLHQuYW50aWNpcGF0ZT1lZSx0LmFwcGx5T2Zmc2V0PWZ1bmN0aW9uKGUsdCl7dmFyIG49ITA7cmV0dXJuIHZvaWQgMD09PXQmJih0PWUsbj0hMSksZnVuY3Rpb24ocil7cmV0dXJuIG4/ci1lK3Q6KGU9cixuPSEwLHQpfX0sdC5hdHRyYWN0PUNlLHQuYXR0cmFjdEV4cG89aGUsdC5iYWNrSW49WCx0LmJhY2tJbk91dD1KLHQuYmFja091dD1RLHQuYm91bmNlSW49bmUsdC5ib3VuY2VJbk91dD1mdW5jdGlvbihlKXtyZXR1cm4gZTwuNT8uNSooMS10ZSgxLTIqZSkpOi41KnRlKDIqZS0xKSsuNX0sdC5ib3VuY2VPdXQ9dGUsdC5jaXJjSW49cSx0LmNpcmNJbk91dD1LLHQuY2lyY091dD1ZLHQuY2xhbXA9Yyx0LmNyZWF0ZUFudGljaXBhdGU9Tix0LmNyZWF0ZUF0dHJhY3Rvcj1wZSx0LmNyZWF0ZUJhY2tJbj1GLHQuY3JlYXRlRXhwb0luPSQsdC5jdWJpY0Jlemllcj1mdW5jdGlvbihlLHQsbixyKXtpZihlPT09dCYmbj09PXIpcmV0dXJuIHo7Zm9yKHZhciBvPW5ldyBGbG9hdDMyQXJyYXkoMTEpLGk9MDtpPDExOysraSlvW2ldPV9lKGkqamUsZSxuKTtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIDA9PT1pfHwxPT09aT9pOl9lKGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj0wLGk9MTsxMCE9PWkmJm9baV08PXQ7KytpKXIrPWplOy0taTt2YXIgYT1yKyh0LW9baV0pLyhvW2krMV0tb1tpXSkqamUsbD1NZShhLGUsbik7cmV0dXJuIGw+PS4wMDE/ZnVuY3Rpb24oZSx0LG4scil7Zm9yKHZhciBvPTA7bzw4Oysrbyl7dmFyIGk9TWUodCxuLHIpO2lmKDA9PT1pKXJldHVybiB0O3QtPShfZSh0LG4sciktZSkvaX1yZXR1cm4gdH0odCxhLGUsbik6MD09PWw/YTpmdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpLGEsbD0wO2RveyhpPV9lKGE9dCsobi10KS8yLHIsbyktZSk+MD9uPWE6dD1hfXdoaWxlKE1hdGguYWJzKGkpPjFlLTcmJisrbDwxMCk7cmV0dXJuIGF9KHQscixyK2plLGUsbil9KGkpLHQscil9fSx0LmRlY2F5PWllLHQuZGVncmVlc1RvUmFkaWFucz12ZSx0LmRpc3RhbmNlPWZ1bmN0aW9uKGUsdCl7aWYoUyhlKSYmUyh0KSlyZXR1cm4gd2UoZSx0KTtpZihnZShlKSYmZ2UodCkpe3ZhciBuPXdlKGUueCx0LngpLHI9d2UoZS55LHQueSksbz1tZShlKSYmbWUodCk/d2UoZS56LHQueik6MDtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KG4sMikrTWF0aC5wb3cociwyKStNYXRoLnBvdyhvLDIpKX19LHQuZWFzZUluPVcsdC5lYXNlSW5PdXQ9VSx0LmVhc2VPdXQ9Ryx0LmluZXJ0aWE9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLmZyb20sbz12b2lkIDA9PT1uPzA6bixpPWUudmVsb2NpdHksbD12b2lkIDA9PT1pPzA6aSxjPWUubWluLHM9ZS5tYXgsdT1lLnBvd2VyLGQ9dm9pZCAwPT09dT8uODp1LGY9ZS50aW1lQ29uc3RhbnQscD12b2lkIDA9PT1mPzc1MDpmLEM9ZS5ib3VuY2VTdGlmZm5lc3MsaD12b2lkIDA9PT1DPzUwMDpDLHY9ZS5ib3VuY2VEYW1waW5nLGc9dm9pZCAwPT09dj8xMDp2LG09ZS5yZXN0RGVsdGEsdz12b2lkIDA9PT1tPzE6bSx5PWUubW9kaWZ5VGFyZ2V0LGI9ZS5kcml2ZXIseD1lLm9uVXBkYXRlLE89ZS5vbkNvbXBsZXRlO2Z1bmN0aW9uIEwoZSl7cmV0dXJuIHZvaWQgMCE9PWMmJmU8Y3x8dm9pZCAwIT09cyYmZT5zfWZ1bmN0aW9uIF8oZSl7cmV0dXJuIHZvaWQgMD09PWM/czp2b2lkIDA9PT1zfHxNYXRoLmFicyhjLWUpPE1hdGguYWJzKHMtZSk/YzpzfWZ1bmN0aW9uIE0oZSl7bnVsbD09dHx8dC5zdG9wKCksdD1zZShyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sZSkse2RyaXZlcjpiLG9uVXBkYXRlOmZ1bmN0aW9uKHQpe3ZhciBuO251bGw9PXh8fHgodCksbnVsbD09PShuPWUub25VcGRhdGUpfHx2b2lkIDA9PT1ufHxuLmNhbGwoZSx0KX0sb25Db21wbGV0ZTpPfSkpfWZ1bmN0aW9uIGooZSl7TShyLl9fYXNzaWduKHt0eXBlOlwic3ByaW5nXCIsc3RpZmZuZXNzOmgsZGFtcGluZzpnLHJlc3REZWx0YTp3fSxlKSl9aWYoTChvKSlqKHtmcm9tOm8sdmVsb2NpdHk6bCx0bzpfKG8pfSk7ZWxzZXt2YXIgRT1kKmwrbzt2b2lkIDAhPT15JiYoRT15KEUpKTt2YXIgUyxQLEg9XyhFKSxrPUg9PT1jPy0xOjE7TSh7dHlwZTpcImRlY2F5XCIsZnJvbTpvLHZlbG9jaXR5OmwsdGltZUNvbnN0YW50OnAscG93ZXI6ZCxyZXN0RGVsdGE6dyxtb2RpZnlUYXJnZXQ6eSxvblVwZGF0ZTpMKEUpP2Z1bmN0aW9uKGUpe1M9UCxQPWUsbD11ZShlLVMsYS5nZXRGcmFtZURhdGEoKS5kZWx0YSksKDE9PT1rJiZlPkh8fC0xPT09ayYmZTxIKSYmaih7ZnJvbTplLHRvOkgsdmVsb2NpdHk6bH0pfTp2b2lkIDB9KX1yZXR1cm57c3RvcDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0LnN0b3AoKX19fSx0LmludGVycG9sYXRlPUEsdC5pc1BvaW50PWdlLHQuaXNQb2ludDNEPW1lLHQua2V5ZnJhbWVzPW9lLHQubGluZWFyPXosdC5taXJyb3JFYXNpbmc9Qix0Lm1peD14LHQubWl4Q29sb3I9aix0Lm1peENvbXBsZXg9Wix0LnBpcGU9SCx0LnBvaW50RnJvbVZlY3Rvcj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHQ9dmUodCkse3g6bipNYXRoLmNvcyh0KStlLngseTpuKk1hdGguc2luKHQpK2UueX19LHQucHJvZ3Jlc3M9Yix0LnJhZGlhbnNUb0RlZ3JlZXM9ZGUsdC5yZXZlcnNlRWFzaW5nPUQsdC5zbW9vdGg9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9NTApO3ZhciB0PTAsbj0wO3JldHVybiBmdW5jdGlvbihyKXt2YXIgbz1hLmdldEZyYW1lRGF0YSgpLnRpbWVzdGFtcCxpPW8hPT1uP28tbjowLGw9aT9iZSh0LHIsaSxlKTp0O3JldHVybiBuPW8sdD1sLGx9fSx0LnNtb290aEZyYW1lPWJlLHQuc25hcD1mdW5jdGlvbihlKXtpZihcIm51bWJlclwiPT10eXBlb2YgZSlyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodC9lKSplfTt2YXIgdD0wLG49ZS5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBvPU1hdGguYWJzKGVbMF0tcik7Zm9yKHQ9MTt0PG47dCsrKXt2YXIgaT1lW3RdLGE9TWF0aC5hYnMoaS1yKTtpZigwPT09YSlyZXR1cm4gaTtpZihhPm8pcmV0dXJuIGVbdC0xXTtpZih0PT09bi0xKXJldHVybiBpO289YX19fSx0LnNwcmluZz13LHQuc3RlcHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9XCJlbmRcIiksZnVuY3Rpb24obil7dmFyIHI9KG49XCJlbmRcIj09PXQ/TWF0aC5taW4obiwuOTk5KTpNYXRoLm1heChuLC4wMDEpKSplLG89XCJlbmRcIj09PXQ/TWF0aC5mbG9vcihyKTpNYXRoLmNlaWwocik7cmV0dXJuIGMoMCwxLG8vZSl9fSx0LnRvRGVjaW1hbD15ZSx0LnZlbG9jaXR5UGVyRnJhbWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS8oMWUzL3QpfSx0LnZlbG9jaXR5UGVyU2Vjb25kPXVlLHQud3JhcD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dC1lO3JldHVybigobi1lKSVyK3IpJXIrZX19LDI3MDM6KGUsdCxuKT0+e3ZhciByPW4oNDE0KTtmdW5jdGlvbiBvKCl7fWZ1bmN0aW9uIGkoKXt9aS5yZXNldFdhcm5pbmdDYWNoZT1vLGUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4sbyxpLGEpe2lmKGEhPT1yKXt2YXIgbD1uZXcgRXJyb3IoXCJDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiBVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiBSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzXCIpO3Rocm93IGwubmFtZT1cIkludmFyaWFudCBWaW9sYXRpb25cIixsfX1mdW5jdGlvbiB0KCl7cmV0dXJuIGV9ZS5pc1JlcXVpcmVkPWU7dmFyIG49e2FycmF5OmUsYmlnaW50OmUsYm9vbDplLGZ1bmM6ZSxudW1iZXI6ZSxvYmplY3Q6ZSxzdHJpbmc6ZSxzeW1ib2w6ZSxhbnk6ZSxhcnJheU9mOnQsZWxlbWVudDplLGVsZW1lbnRUeXBlOmUsaW5zdGFuY2VPZjp0LG5vZGU6ZSxvYmplY3RPZjp0LG9uZU9mOnQsb25lT2ZUeXBlOnQsc2hhcGU6dCxleGFjdDp0LGNoZWNrUHJvcFR5cGVzOmkscmVzZXRXYXJuaW5nQ2FjaGU6b307cmV0dXJuIG4uUHJvcFR5cGVzPW4sbn19LDU2OTc6KGUsdCxuKT0+e2UuZXhwb3J0cz1uKDI3MDMpKCl9LDQxNDplPT57ZS5leHBvcnRzPVwiU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRURcIn0sNzI5MjooZSx0LG4pPT57bi5yKHQpLG4uZCh0LHtDYWxlbmRhcjooKT0+UW4sQ2VudHVyeVZpZXc6KCk9PlB0LERlY2FkZVZpZXc6KCk9PkZ0LE1vbnRoVmlldzooKT0+am4sTmF2aWdhdGlvbjooKT0+RmUsWWVhclZpZXc6KCk9PnRuLGRlZmF1bHQ6KCk9PnRyfSk7dmFyIHI9big2Njg5KSxvPW4ubihyKSxpPW4oNTY5NyksYT1uLm4oaSk7ZnVuY3Rpb24gbChlKXt2YXIgdCxuLHI9XCJcIjtpZihcInN0cmluZ1wiPT10eXBlb2YgZXx8XCJudW1iZXJcIj09dHlwZW9mIGUpcis9ZTtlbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiBlKWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdJiYobj1sKGVbdF0pKSYmKHImJihyKz1cIiBcIikscis9bik7ZWxzZSBmb3IodCBpbiBlKWVbdF0mJihyJiYocis9XCIgXCIpLHIrPXQpO3JldHVybiByfWNvbnN0IGM9ZnVuY3Rpb24oKXtmb3IodmFyIGUsdCxuPTAscj1cIlwiO248YXJndW1lbnRzLmxlbmd0aDspKGU9YXJndW1lbnRzW24rK10pJiYodD1sKGUpKSYmKHImJihyKz1cIiBcIikscis9dCk7cmV0dXJuIHJ9O3ZhciBzPW4oNzczKSx1PW4ubihzKTtmdW5jdGlvbiBkKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShlKX12YXIgZj11KCkoKGZ1bmN0aW9uKGUpe3ZhciB0LG49dm9pZCAwPT09ZT97fTplLHI9bi51c2VGYWxsYmFja0xvY2FsZSxvPXZvaWQgMD09PXJ8fHIsaT1uLmZhbGxiYWNrTG9jYWxlLGE9dm9pZCAwPT09aT9cImVuLVVTXCI6aSxsPVtdO2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cpe3ZhciBjPXdpbmRvdy5uYXZpZ2F0b3I7bD1sLmNvbmNhdChjLmxhbmd1YWdlcyxjLmxhbmd1YWdlLGMudXNlckxhbmd1YWdlLGMuYnJvd3Nlckxhbmd1YWdlLGMuc3lzdGVtTGFuZ3VhZ2UpfXJldHVybiBvJiZsLnB1c2goYSksZnVuY3Rpb24oZSl7cmV0dXJuIGUubWFwKChmdW5jdGlvbihlKXtpZighZXx8LTE9PT1lLmluZGV4T2YoXCItXCIpfHxlLnRvTG93ZXJDYXNlKCkhPT1lKXJldHVybiBlO3ZhciB0PWUuc3BsaXQoXCItXCIpO3JldHVybiB0WzBdK1wiLVwiK3RbMV0udG9VcHBlckNhc2UoKX0pKX0oKHQ9bCkuZmlsdGVyKChmdW5jdGlvbihlLG4pe3JldHVybiBlJiZ0LmluZGV4T2YoZSk9PT1ufSkpKX0pLGQpLHA9dSgpKChmdW5jdGlvbihlKXtyZXR1cm4gZihlKVswXXx8bnVsbH0pLGQpO2NvbnN0IEM9cDtmdW5jdGlvbiBoKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24ocixvKXt2b2lkIDA9PT1vJiYobz1uKTt2YXIgaT1lKHIpK287cmV0dXJuIHQoaSl9fWZ1bmN0aW9uIHYoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZShlKHQpLmdldFRpbWUoKS0xKX19ZnVuY3Rpb24gZyhlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm5bZShuKSx0KG4pXX19ZnVuY3Rpb24gbShlKXtpZihlIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gZS5nZXRGdWxsWWVhcigpO2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXJldHVybiBlO3ZhciB0PXBhcnNlSW50KGUsMTApO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlJiYhaXNOYU4odCkpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIGdldCB5ZWFyIGZyb20gZGF0ZTogXCIuY29uY2F0KGUsXCIuXCIpKX1mdW5jdGlvbiB3KGUpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBlLmdldE1vbnRoKCk7dGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIGdldCBtb250aCBmcm9tIGRhdGU6IFwiLmNvbmNhdChlLFwiLlwiKSl9ZnVuY3Rpb24geShlKXtpZihlIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gZS5nZXREYXRlKCk7dGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIGdldCB5ZWFyIGZyb20gZGF0ZTogXCIuY29uY2F0KGUsXCIuXCIpKX1mdW5jdGlvbiBiKGUpe3ZhciB0PW0oZSksbj10KygxLXQpJTEwMCxyPW5ldyBEYXRlO3JldHVybiByLnNldEZ1bGxZZWFyKG4sMCwxKSxyLnNldEhvdXJzKDAsMCwwLDApLHJ9dmFyIHg9aChtLGIsLTEwMCksTz1oKG0sYiwxMDApLEw9dihPKSxfPWgobSxMLC0xMDApLE09KGgobSxMLDEwMCksZyhiLEwpKTtmdW5jdGlvbiBqKGUpe3ZhciB0PW0oZSksbj10KygxLXQpJTEwLHI9bmV3IERhdGU7cmV0dXJuIHIuc2V0RnVsbFllYXIobiwwLDEpLHIuc2V0SG91cnMoMCwwLDAsMCkscn12YXIgRT1oKG0saiwtMTApLFM9aChtLGosMTApLFA9dihTKSxIPWgobSxQLC0xMCksaz0oaChtLFAsMTApLGcoaixQKSk7ZnVuY3Rpb24gVihlKXt2YXIgdD1tKGUpLG49bmV3IERhdGU7cmV0dXJuIG4uc2V0RnVsbFllYXIodCwwLDEpLG4uc2V0SG91cnMoMCwwLDAsMCksbn12YXIgUj1oKG0sViwtMSksST1oKG0sViwxKSxaPXYoSSksVD1oKG0sWiwtMSksQT0oaChtLFosMSksZyhWLFopKTtmdW5jdGlvbiBEKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dm9pZCAwPT09ciYmKHI9dCk7dmFyIG89bShuKSxpPXcobikrcixhPW5ldyBEYXRlO3JldHVybiBhLnNldEZ1bGxZZWFyKG8saSwxKSxhLnNldEhvdXJzKDAsMCwwLDApLGUoYSl9fWZ1bmN0aW9uIEIoZSl7dmFyIHQ9bShlKSxuPXcoZSkscj1uZXcgRGF0ZTtyZXR1cm4gci5zZXRGdWxsWWVhcih0LG4sMSksci5zZXRIb3VycygwLDAsMCwwKSxyfXZhciAkPUQoQiwtMSksRj1EKEIsMSksTj12KEYpLHo9RChOLC0xKSxXPShEKE4sMSksZyhCLE4pKTtmdW5jdGlvbiBHKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dm9pZCAwPT09ciYmKHI9dCk7dmFyIG89bShuKSxpPXcobiksYT15KG4pK3IsbD1uZXcgRGF0ZTtyZXR1cm4gbC5zZXRGdWxsWWVhcihvLGksYSksbC5zZXRIb3VycygwLDAsMCwwKSxlKGwpfX1mdW5jdGlvbiBVKGUpe3ZhciB0PW0oZSksbj13KGUpLHI9eShlKSxvPW5ldyBEYXRlO3JldHVybiBvLnNldEZ1bGxZZWFyKHQsbixyKSxvLnNldEhvdXJzKDAsMCwwLDApLG99RyhVLC0xKTt2YXIgcSxZPXYoRyhVLDEpKSxLPShHKFksLTEpLEcoWSwxKSxnKFUsWSkpO2Z1bmN0aW9uIFgoZSl7cmV0dXJuIHkoTihlKSl9ZnVuY3Rpb24gUShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIEooZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBlZSx0ZT17QVJBQklDOlwiQXJhYmljXCIsSEVCUkVXOlwiSGVicmV3XCIsSVNPXzg2MDE6XCJJU08gODYwMVwiLFVTOlwiVVNcIn0sbmU9KEoocT17fSx0ZS5VUyxbXCJlbi1DQVwiLFwiZW4tVVNcIixcImVzLUFSXCIsXCJlcy1CT1wiLFwiZXMtQ0xcIixcImVzLUNPXCIsXCJlcy1DUlwiLFwiZXMtRE9cIixcImVzLUVDXCIsXCJlcy1HVFwiLFwiZXMtSE5cIixcImVzLU1YXCIsXCJlcy1OSVwiLFwiZXMtUEFcIixcImVzLVBFXCIsXCJlcy1QUlwiLFwiZXMtU1ZcIixcImVzLVZFXCIsXCJwdC1CUlwiXSksSihxLHRlLkFSQUJJQyxbXCJhclwiLFwiYXItQUVcIixcImFyLUJIXCIsXCJhci1EWlwiLFwiYXItRUdcIixcImFyLUlRXCIsXCJhci1KT1wiLFwiYXItS1dcIixcImFyLUxZXCIsXCJhci1PTVwiLFwiYXItUUFcIixcImFyLVNBXCIsXCJhci1TRFwiLFwiYXItU1lcIixcImFyLVlFXCIsXCJkdlwiLFwiZHYtTVZcIixcInBzXCIsXCJwcy1BUlwiXSksSihxLHRlLkhFQlJFVyxbXCJoZVwiLFwiaGUtSUxcIl0pLHEpLHJlPShlZT1BcnJheSg3KSxmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBRKGUpfShlZSl8fGZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVtcIkBAaXRlcmF0b3JcIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KGVlKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gUShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm5cIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4/QXJyYXkuZnJvbShlKTpcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/UShlLHQpOnZvaWQgMH19KGVlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSkubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiB0fSkpLG9lPW5ldyBNYXA7ZnVuY3Rpb24gaWUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciByPXR8fEMoKTtvZS5oYXMocil8fG9lLnNldChyLG5ldyBNYXApO3ZhciBvPW9lLmdldChyKTtyZXR1cm4gby5oYXMoZSl8fG8uc2V0KGUsbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQocixlKS5mb3JtYXQpLG8uZ2V0KGUpKG4pfX0oZSkodCxmdW5jdGlvbihlKXt2YXIgdD1uZXcgRGF0ZShlKTtyZXR1cm4gbmV3IERhdGUodC5zZXRIb3VycygxMikpfShuKSl9fWllKHtkYXk6XCJudW1lcmljXCIsbW9udGg6XCJudW1lcmljXCIseWVhcjpcIm51bWVyaWNcIn0pO3ZhciBhZT1pZSh7ZGF5OlwibnVtZXJpY1wifSksbGU9aWUoe2RheTpcIm51bWVyaWNcIixtb250aDpcImxvbmdcIix5ZWFyOlwibnVtZXJpY1wifSksY2U9aWUoe21vbnRoOlwibG9uZ1wifSksc2U9aWUoe21vbnRoOlwibG9uZ1wiLHllYXI6XCJudW1lcmljXCJ9KSx1ZT1pZSh7d2Vla2RheTpcInNob3J0XCJ9KSxkZT1pZSh7d2Vla2RheTpcImxvbmdcIn0pLGZlPWllKHt5ZWFyOlwibnVtZXJpY1wifSkscGU9cmVbMF0sQ2U9cmVbNV0saGU9cmVbNl07ZnVuY3Rpb24gdmUoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRlLklTT184NjAxLG49ZS5nZXREYXkoKTtzd2l0Y2godCl7Y2FzZSB0ZS5JU09fODYwMTpyZXR1cm4obis2KSU3O2Nhc2UgdGUuQVJBQklDOnJldHVybihuKzEpJTc7Y2FzZSB0ZS5IRUJSRVc6Y2FzZSB0ZS5VUzpyZXR1cm4gbjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGNhbGVuZGFyIHR5cGUuXCIpfX1mdW5jdGlvbiBnZShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGUuSVNPXzg2MDEsbj1tKGUpLHI9dyhlKSxvPWUuZ2V0RGF0ZSgpLXZlKGUsdCk7cmV0dXJuIG5ldyBEYXRlKG4scixvKX1mdW5jdGlvbiBtZShlLHQpe3N3aXRjaChlKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIGIodCk7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIGoodCk7Y2FzZVwieWVhclwiOnJldHVybiBWKHQpO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIEIodCk7Y2FzZVwiZGF5XCI6cmV0dXJuIFUodCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19ZnVuY3Rpb24gd2UoZSx0KXtzd2l0Y2goZSl7Y2FzZVwiY2VudHVyeVwiOnJldHVybiBPKHQpO2Nhc2VcImRlY2FkZVwiOnJldHVybiBTKHQpO2Nhc2VcInllYXJcIjpyZXR1cm4gSSh0KTtjYXNlXCJtb250aFwiOnJldHVybiBGKHQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fXZhciB5ZT1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gRSh0LC0xMDApO2Nhc2VcInllYXJcIjpyZXR1cm4gUih0LC0xMCk7Y2FzZVwibW9udGhcIjpyZXR1cm4gJCh0LC0xMik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19LGJlPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImRlY2FkZVwiOnJldHVybiBTKHQsMTAwKTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIEkodCwxMCk7Y2FzZVwibW9udGhcIjpyZXR1cm4gRih0LDEyKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX07ZnVuY3Rpb24geGUoZSx0KXtzd2l0Y2goZSl7Y2FzZVwiY2VudHVyeVwiOnJldHVybiBMKHQpO2Nhc2VcImRlY2FkZVwiOnJldHVybiBQKHQpO2Nhc2VcInllYXJcIjpyZXR1cm4gWih0KTtjYXNlXCJtb250aFwiOnJldHVybiBOKHQpO2Nhc2VcImRheVwiOnJldHVybiBZKHQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fXZhciBPZT1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gSCh0LC0xMDApO2Nhc2VcInllYXJcIjpyZXR1cm4gVCh0LC0xMCk7Y2FzZVwibW9udGhcIjpyZXR1cm4geih0LC0xMik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19O2Z1bmN0aW9uIExlKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4gTSh0KTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gayh0KTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIEEodCk7Y2FzZVwibW9udGhcIjpyZXR1cm4gVyh0KTtjYXNlXCJkYXlcIjpyZXR1cm4gSyh0KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX1mdW5jdGlvbiBfZShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ZmU7cmV0dXJuKGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKS5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiB0KGUsbil9KSkuam9pbihcIiDigJMgXCIpfWZ1bmN0aW9uIE1lKGUsdCxuKXtyZXR1cm4gX2UoZSx0LGsobikpfWZ1bmN0aW9uIGplKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0ZS5JU09fODYwMSxuPWUuZ2V0RGF5KCk7c3dpdGNoKHQpe2Nhc2UgdGUuQVJBQklDOmNhc2UgdGUuSEVCUkVXOnJldHVybiBuPT09Q2V8fG49PT1oZTtjYXNlIHRlLklTT184NjAxOmNhc2UgdGUuVVM6cmV0dXJuIG49PT1oZXx8bj09PXBlO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgY2FsZW5kYXIgdHlwZS5cIil9fWZ1bmN0aW9uIEVlKGUpe3JldHVybiBFZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxFZShlKX12YXIgU2U9T2JqZWN0LnZhbHVlcyh0ZSksUGU9W1wiY2VudHVyeVwiLFwiZGVjYWRlXCIsXCJ5ZWFyXCIsXCJtb250aFwiXSxIZT1hKCkub25lT2YoU2UpLGtlPWEoKS5vbmVPZlR5cGUoW2EoKS5zdHJpbmcsYSgpLmFycmF5T2YoYSgpLnN0cmluZyldKSxWZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZVt0XTtpZighcilyZXR1cm4gbnVsbDtpZighKHIgaW5zdGFuY2VvZiBEYXRlKSlyZXR1cm4gbmV3IEVycm9yKFwiSW52YWxpZCBwcm9wIGBcIi5jb25jYXQodCxcImAgb2YgdHlwZSBgXCIpLmNvbmNhdChFZShyKSxcImAgc3VwcGxpZWQgdG8gYFwiKS5jb25jYXQobixcImAsIGV4cGVjdGVkIGluc3RhbmNlIG9mIGBEYXRlYC5cIikpO3ZhciBvPWUubWF4RGF0ZTtyZXR1cm4gbyYmcj5vP25ldyBFcnJvcihcIkludmFsaWQgcHJvcCBgXCIuY29uY2F0KHQsXCJgIG9mIHR5cGUgYFwiKS5jb25jYXQoRWUociksXCJgIHN1cHBsaWVkIHRvIGBcIikuY29uY2F0KG4sXCJgLCBtaW5EYXRlIGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBtYXhEYXRlLlwiKSk6bnVsbH0sUmU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWVbdF07aWYoIXIpcmV0dXJuIG51bGw7aWYoIShyIGluc3RhbmNlb2YgRGF0ZSkpcmV0dXJuIG5ldyBFcnJvcihcIkludmFsaWQgcHJvcCBgXCIuY29uY2F0KHQsXCJgIG9mIHR5cGUgYFwiKS5jb25jYXQoRWUociksXCJgIHN1cHBsaWVkIHRvIGBcIikuY29uY2F0KG4sXCJgLCBleHBlY3RlZCBpbnN0YW5jZSBvZiBgRGF0ZWAuXCIpKTt2YXIgbz1lLm1pbkRhdGU7cmV0dXJuIG8mJnI8bz9uZXcgRXJyb3IoXCJJbnZhbGlkIHByb3AgYFwiLmNvbmNhdCh0LFwiYCBvZiB0eXBlIGBcIikuY29uY2F0KEVlKHIpLFwiYCBzdXBwbGllZCB0byBgXCIpLmNvbmNhdChuLFwiYCwgbWF4RGF0ZSBjYW5ub3QgYmUgc21hbGxlciB0aGFuIG1pbkRhdGUuXCIpKTpudWxsfSxJZT1hKCkub25lT2ZUeXBlKFthKCkuZnVuYyxhKCkuc2hhcGUoe2N1cnJlbnQ6YSgpLmFueX0pXSksWmU9YSgpLm9uZU9mVHlwZShbYSgpLmluc3RhbmNlT2YoRGF0ZSksYSgpLmFycmF5T2YoYSgpLmluc3RhbmNlT2YoRGF0ZSkpXSksVGU9YSgpLmFycmF5T2YoYSgpLm9uZU9mKFBlKSksQWU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWVbdF0sbz1lLnZpZXdzfHxQZTtyZXR1cm4gdm9pZCAwIT09ciYmLTE9PT1vLmluZGV4T2Yocik/bmV3IEVycm9yKFwiSW52YWxpZCBwcm9wIGBcIi5jb25jYXQodCxcImAgb2YgdmFsdWUgYFwiKS5jb25jYXQocixcImAgc3VwcGxpZWQgdG8gYFwiKS5jb25jYXQobixcImAsIGV4cGVjdGVkIG9uZSBvZiBbXCIpLmNvbmNhdChvLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuJ1wiJy5jb25jYXQoZSwnXCInKX0pKS5qb2luKFwiLCBcIiksXCJdLlwiKSk6bnVsbH07QWUuaXNSZXF1aXJlZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZVt0XTtyZXR1cm4gcj9BZShlLHQsbik6bmV3IEVycm9yKFwiVGhlIHByb3AgYFwiLmNvbmNhdCh0LFwiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gYFwiKS5jb25jYXQobixcImAsIGJ1dCBpdHMgdmFsdWUgaXMgYFwiKS5jb25jYXQocixcImAuXCIpKX07dmFyIERlPXthY3RpdmVTdGFydERhdGU6YSgpLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxob3ZlcjphKCkuaW5zdGFuY2VPZihEYXRlKSxsb2NhbGU6YSgpLnN0cmluZyxtYXhEYXRlOlJlLG1pbkRhdGU6VmUsb25DbGljazphKCkuZnVuYyxvbk1vdXNlT3ZlcjphKCkuZnVuYyx0aWxlQ2xhc3NOYW1lOmEoKS5vbmVPZlR5cGUoW2EoKS5mdW5jLGtlXSksdGlsZUNvbnRlbnQ6YSgpLm9uZU9mVHlwZShbYSgpLmZ1bmMsYSgpLm5vZGVdKSx2YWx1ZTpaZSx2YWx1ZVR5cGU6YSgpLnN0cmluZ30sQmU9e2FjdGl2ZVN0YXJ0RGF0ZTphKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLGNsYXNzZXM6YSgpLmFycmF5T2YoYSgpLnN0cmluZykuaXNSZXF1aXJlZCxkYXRlOmEoKS5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsbG9jYWxlOmEoKS5zdHJpbmcsbWF4RGF0ZTpSZSxtaW5EYXRlOlZlLG9uQ2xpY2s6YSgpLmZ1bmMsb25Nb3VzZU92ZXI6YSgpLmZ1bmMsc3R5bGU6YSgpLm9iamVjdE9mKGEoKS5vbmVPZlR5cGUoW2EoKS5zdHJpbmcsYSgpLm51bWJlcl0pKSx0aWxlQ2xhc3NOYW1lOmEoKS5vbmVPZlR5cGUoW2EoKS5mdW5jLGtlXSksdGlsZUNvbnRlbnQ6YSgpLm9uZU9mVHlwZShbYSgpLmZ1bmMsYSgpLm5vZGVdKSx0aWxlRGlzYWJsZWQ6YSgpLmZ1bmN9LCRlPVwicmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb25cIjtmdW5jdGlvbiBGZShlKXt2YXIgdCxuPWUuYWN0aXZlU3RhcnREYXRlLHI9ZS5kcmlsbFVwLGk9ZS5mb3JtYXRNb250aFllYXIsYT12b2lkIDA9PT1pP3NlOmksbD1lLmZvcm1hdFllYXIsYz12b2lkIDA9PT1sP2ZlOmwscz1lLmxvY2FsZSx1PWUubWF4RGF0ZSxkPWUubWluRGF0ZSxmPWUubmF2aWdhdGlvbkFyaWFMYWJlbCxDPXZvaWQgMD09PWY/XCJcIjpmLGg9ZS5uYXZpZ2F0aW9uQXJpYUxpdmUsdj1lLm5hdmlnYXRpb25MYWJlbCxnPWUubmV4dDJBcmlhTGFiZWwsbT12b2lkIDA9PT1nP1wiXCI6Zyx3PWUubmV4dDJMYWJlbCx5PXZvaWQgMD09PXc/XCLCu1wiOncsYj1lLm5leHRBcmlhTGFiZWwsTz12b2lkIDA9PT1iP1wiXCI6YixMPWUubmV4dExhYmVsLGo9dm9pZCAwPT09TD9cIuKAulwiOkwsUz1lLnByZXYyQXJpYUxhYmVsLFA9dm9pZCAwPT09Uz9cIlwiOlMsaz1lLnByZXYyTGFiZWwsVj12b2lkIDA9PT1rP1wiwqtcIjprLEk9ZS5wcmV2QXJpYUxhYmVsLFo9dm9pZCAwPT09ST9cIlwiOkksQT1lLnByZXZMYWJlbCxEPXZvaWQgMD09PUE/XCLigLlcIjpBLEI9ZS5zZXRBY3RpdmVTdGFydERhdGUsRj1lLnNob3dEb3VibGVWaWV3LE49ZS52aWV3LFc9ZS52aWV3cy5pbmRleE9mKE4pPjAsRz1cImNlbnR1cnlcIiE9PU4sVT1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIHgodCk7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIEUodCk7Y2FzZVwieWVhclwiOnJldHVybiBSKHQpO2Nhc2VcIm1vbnRoXCI6cmV0dXJuICQodCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19KE4sbikscT1HJiZ5ZShOLG4pLFk9d2UoTixuKSxLPUcmJmJlKE4sbiksWD1mdW5jdGlvbigpe2lmKFUuZ2V0RnVsbFllYXIoKTwwKXJldHVybiEwO3ZhciBlPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4gXyh0KTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gSCh0KTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIFQodCk7Y2FzZVwibW9udGhcIjpyZXR1cm4geih0KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX0oTixuKTtyZXR1cm4gZCYmZD49ZX0oKSxRPUcmJmZ1bmN0aW9uKCl7aWYocS5nZXRGdWxsWWVhcigpPDApcmV0dXJuITA7dmFyIGU9T2UoTixuKTtyZXR1cm4gZCYmZD49ZX0oKSxKPXUmJnU8WSxlZT1HJiZ1JiZ1PEs7ZnVuY3Rpb24gdGUoZSl7dmFyIHQ9ZnVuY3Rpb24oKXtzd2l0Y2goTil7Y2FzZVwiY2VudHVyeVwiOnJldHVybiBmdW5jdGlvbihlLHQsbil7cmV0dXJuIF9lKGUsdCxNKG4pKX0ocyxjLGUpO2Nhc2VcImRlY2FkZVwiOnJldHVybiBNZShzLGMsZSk7Y2FzZVwieWVhclwiOnJldHVybiBjKHMsZSk7Y2FzZVwibW9udGhcIjpyZXR1cm4gYShzLGUpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB2aWV3OiBcIi5jb25jYXQoTixcIi5cIikpfX0oKTtyZXR1cm4gdj92KHtkYXRlOmUsbGFiZWw6dCxsb2NhbGU6c3x8cCgpLHZpZXc6Tn0pOnR9cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTokZX0sbnVsbCE9PVYmJkcmJm8oKS5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse1wiYXJpYS1sYWJlbFwiOlAsY2xhc3NOYW1lOlwiXCIuY29uY2F0KCRlLFwiX19hcnJvdyBcIikuY29uY2F0KCRlLFwiX19wcmV2Mi1idXR0b25cIiksZGlzYWJsZWQ6USxvbkNsaWNrOmZ1bmN0aW9uKCl7QihxLFwicHJldjJcIil9LHR5cGU6XCJidXR0b25cIn0sViksbnVsbCE9PUQmJm8oKS5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse1wiYXJpYS1sYWJlbFwiOlosY2xhc3NOYW1lOlwiXCIuY29uY2F0KCRlLFwiX19hcnJvdyBcIikuY29uY2F0KCRlLFwiX19wcmV2LWJ1dHRvblwiKSxkaXNhYmxlZDpYLG9uQ2xpY2s6ZnVuY3Rpb24oKXtCKFUsXCJwcmV2XCIpfSx0eXBlOlwiYnV0dG9uXCJ9LEQpLCh0PVwiXCIuY29uY2F0KCRlLFwiX19sYWJlbFwiKSxvKCkuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHtcImFyaWEtbGFiZWxcIjpDLFwiYXJpYS1saXZlXCI6aCxjbGFzc05hbWU6dCxkaXNhYmxlZDohVyxvbkNsaWNrOnIsc3R5bGU6e2ZsZXhHcm93OjF9LHR5cGU6XCJidXR0b25cIn0sbygpLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIse2NsYXNzTmFtZTpcIlwiLmNvbmNhdCh0LFwiX19sYWJlbFRleHQgXCIpLmNvbmNhdCh0LFwiX19sYWJlbFRleHQtLWZyb21cIil9LHRlKG4pKSxGJiZvKCkuY3JlYXRlRWxlbWVudChvKCkuRnJhZ21lbnQsbnVsbCxvKCkuY3JlYXRlRWxlbWVudChcInNwYW5cIix7Y2xhc3NOYW1lOlwiXCIuY29uY2F0KHQsXCJfX2RpdmlkZXJcIil9LFwiIOKAkyBcIiksbygpLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIse2NsYXNzTmFtZTpcIlwiLmNvbmNhdCh0LFwiX19sYWJlbFRleHQgXCIpLmNvbmNhdCh0LFwiX19sYWJlbFRleHQtLXRvXCIpfSx0ZShZKSkpKSksbnVsbCE9PWomJm8oKS5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse1wiYXJpYS1sYWJlbFwiOk8sY2xhc3NOYW1lOlwiXCIuY29uY2F0KCRlLFwiX19hcnJvdyBcIikuY29uY2F0KCRlLFwiX19uZXh0LWJ1dHRvblwiKSxkaXNhYmxlZDpKLG9uQ2xpY2s6ZnVuY3Rpb24oKXtCKFksXCJuZXh0XCIpfSx0eXBlOlwiYnV0dG9uXCJ9LGopLG51bGwhPT15JiZHJiZvKCkuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHtcImFyaWEtbGFiZWxcIjptLGNsYXNzTmFtZTpcIlwiLmNvbmNhdCgkZSxcIl9fYXJyb3cgXCIpLmNvbmNhdCgkZSxcIl9fbmV4dDItYnV0dG9uXCIpLGRpc2FibGVkOmVlLG9uQ2xpY2s6ZnVuY3Rpb24oKXtCKEssXCJuZXh0MlwiKX0sdHlwZTpcImJ1dHRvblwifSx5KSl9RmUucHJvcFR5cGVzPXthY3RpdmVTdGFydERhdGU6YSgpLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxkcmlsbFVwOmEoKS5mdW5jLmlzUmVxdWlyZWQsZm9ybWF0TW9udGhZZWFyOmEoKS5mdW5jLGZvcm1hdFllYXI6YSgpLmZ1bmMsbG9jYWxlOmEoKS5zdHJpbmcsbWF4RGF0ZTphKCkuaW5zdGFuY2VPZihEYXRlKSxtaW5EYXRlOmEoKS5pbnN0YW5jZU9mKERhdGUpLG5hdmlnYXRpb25BcmlhTGFiZWw6YSgpLnN0cmluZyxuYXZpZ2F0aW9uQXJpYUxpdmU6YSgpLnN0cmluZyxuYXZpZ2F0aW9uTGFiZWw6YSgpLmZ1bmMsbmV4dDJBcmlhTGFiZWw6YSgpLnN0cmluZyxuZXh0MkxhYmVsOmEoKS5ub2RlLG5leHRBcmlhTGFiZWw6YSgpLnN0cmluZyxuZXh0TGFiZWw6YSgpLm5vZGUscHJldjJBcmlhTGFiZWw6YSgpLnN0cmluZyxwcmV2MkxhYmVsOmEoKS5ub2RlLHByZXZBcmlhTGFiZWw6YSgpLnN0cmluZyxwcmV2TGFiZWw6YSgpLm5vZGUsc2V0QWN0aXZlU3RhcnREYXRlOmEoKS5mdW5jLmlzUmVxdWlyZWQsc2hvd0RvdWJsZVZpZXc6YSgpLmJvb2wsdmlldzpBZS5pc1JlcXVpcmVkLHZpZXdzOlRlLmlzUmVxdWlyZWR9O3ZhciBOZT1bXCJjaGlsZHJlblwiLFwiY2xhc3NOYW1lXCIsXCJkaXJlY3Rpb25cIixcImNvdW50XCIsXCJvZmZzZXRcIixcInN0eWxlXCIsXCJ3cmFwXCJdO2Z1bmN0aW9uIHplKCl7cmV0dXJuIHplPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0semUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFdlKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBHZShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9XZShPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe1VlKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpXZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBVZShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gcWUoZSl7cmV0dXJuXCJcIi5jb25jYXQoZSxcIiVcIil9ZnVuY3Rpb24gWWUoZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuY2xhc3NOYW1lLHI9ZS5kaXJlY3Rpb24saT1lLmNvdW50LGE9ZS5vZmZzZXQsbD1lLnN0eWxlLGM9ZS53cmFwLHM9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLE5lKTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix6ZSh7Y2xhc3NOYW1lOm4sc3R5bGU6R2Uoe2Rpc3BsYXk6XCJmbGV4XCIsZmxleERpcmVjdGlvbjpyLGZsZXhXcmFwOmM/XCJ3cmFwXCI6XCJuby13cmFwXCJ9LGwpfSxzKSxvKCkuQ2hpbGRyZW4ubWFwKHQsKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8oKS5jbG9uZUVsZW1lbnQoZSxHZShHZSh7fSxlLnByb3BzKSx7fSx7c3R5bGU6e2ZsZXhCYXNpczpxZSgxMDAvaSksZmxleFNocmluazowLGZsZXhHcm93OjAsb3ZlcmZsb3c6XCJoaWRkZW5cIixtYXJnaW5MZWZ0OmEmJjA9PT10P3FlKDEwMCphL2kpOm51bGx9fSkpfSkpKX1mdW5jdGlvbiBLZShlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gWGUoZSl9KGUpfHxmdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbXCJAQGl0ZXJhdG9yXCJdKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gWGUoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uP0FycmF5LmZyb20oZSk6XCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP1hlKGUsdCk6dm9pZCAwfX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gWGUoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBRZShlLHQpe3JldHVybiB0WzBdPD1lJiZ0WzFdPj1lfWZ1bmN0aW9uIEplKGUsdCl7cmV0dXJuIFFlKGVbMF0sdCl8fFFlKGVbMV0sdCl9ZnVuY3Rpb24gZXQoZSx0LG4pe3ZhciByPVtdO2lmKEplKHQsZSkpe3IucHVzaChuKTt2YXIgbz1RZShlWzBdLHQpLGk9UWUoZVsxXSx0KTtvJiZyLnB1c2goXCJcIi5jb25jYXQobixcIlN0YXJ0XCIpKSxpJiZyLnB1c2goXCJcIi5jb25jYXQobixcIkVuZFwiKSksbyYmaSYmci5wdXNoKFwiXCIuY29uY2F0KG4sXCJCb3RoRW5kc1wiKSl9cmV0dXJuIHJ9ZnVuY3Rpb24gdHQoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD1lLnZhbHVlLG49ZS52YWx1ZVR5cGUscj1lLmRhdGUsbz1lLmRhdGVUeXBlLGk9ZS5ob3ZlcixhPVwicmVhY3QtY2FsZW5kYXJfX3RpbGVcIixsPVthXTtpZighcilyZXR1cm4gbDtpZighQXJyYXkuaXNBcnJheShyKSYmIW8pdGhyb3cgbmV3IEVycm9yKFwiZ2V0VGlsZUNsYXNzZXMoKTogVW5hYmxlIHRvIGdldCB0aWxlIGFjdGl2aXR5IGNsYXNzZXMgYmVjYXVzZSBvbmUgb3IgbW9yZSByZXF1aXJlZCBhcmd1bWVudHMgd2VyZSBub3QgcGFzc2VkLlwiKTt2YXIgYz1uZXcgRGF0ZSxzPUFycmF5LmlzQXJyYXkocik/cjpMZShvLHIpO2lmKFFlKGMscykmJmwucHVzaChcIlwiLmNvbmNhdChhLFwiLS1ub3dcIikpLCF0KXJldHVybiBsO2lmKCFBcnJheS5pc0FycmF5KHQpJiYhbil0aHJvdyBuZXcgRXJyb3IoXCJnZXRUaWxlQ2xhc3NlcygpOiBVbmFibGUgdG8gZ2V0IHRpbGUgYWN0aXZpdHkgY2xhc3NlcyBiZWNhdXNlIG9uZSBvciBtb3JlIHJlcXVpcmVkIGFyZ3VtZW50cyB3ZXJlIG5vdCBwYXNzZWQuXCIpO3ZhciB1LGQsZj1BcnJheS5pc0FycmF5KHQpP3Q6TGUobix0KTtkPXMsKHU9ZilbMF08PWRbMF0mJnVbMV0+PWRbMV0/bC5wdXNoKFwiXCIuY29uY2F0KGEsXCItLWFjdGl2ZVwiKSk6SmUoZixzKSYmbC5wdXNoKFwiXCIuY29uY2F0KGEsXCItLWhhc0FjdGl2ZVwiKSk7dmFyIHA9ZXQoZixzLFwiXCIuY29uY2F0KGEsXCItLXJhbmdlXCIpKTtsLnB1c2guYXBwbHkobCxLZShwKSk7dmFyIEM9W10uY29uY2F0KHQpO2lmKGkmJjE9PT1DLmxlbmd0aCl7dmFyIGg9ZXQoaT5mWzBdP1tmWzBdLGldOltpLGZbMF1dLHMsXCJcIi5jb25jYXQoYSxcIi0taG92ZXJcIikpO2wucHVzaC5hcHBseShsLEtlKGgpKX1yZXR1cm4gbH1ZZS5wcm9wVHlwZXM9e2NoaWxkcmVuOmEoKS5ub2RlLGNsYXNzTmFtZTphKCkuc3RyaW5nLGNvdW50OmEoKS5udW1iZXIuaXNSZXF1aXJlZCxkaXJlY3Rpb246YSgpLnN0cmluZyxvZmZzZXQ6YSgpLm51bWJlcixzdHlsZTphKCkub2JqZWN0T2YoYSgpLm9uZU9mVHlwZShbYSgpLnN0cmluZyxhKCkubnVtYmVyXSkpLHdyYXA6YSgpLmJvb2x9O3ZhciBudD1bXCJjbGFzc05hbWVcIixcImNvdW50XCIsXCJkYXRlVHJhbnNmb3JtXCIsXCJkYXRlVHlwZVwiLFwiZW5kXCIsXCJob3ZlclwiLFwib2Zmc2V0XCIsXCJzdGFydFwiLFwic3RlcFwiLFwidGlsZVwiLFwidmFsdWVcIixcInZhbHVlVHlwZVwiXTtmdW5jdGlvbiBydChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gb3QoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/cnQoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtpdChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6cnQoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gaXQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIGF0KCl7cmV0dXJuIGF0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sYXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGx0KGUpe2Zvcih2YXIgdD1lLmNsYXNzTmFtZSxuPWUuY291bnQscj12b2lkIDA9PT1uPzM6bixpPWUuZGF0ZVRyYW5zZm9ybSxhPWUuZGF0ZVR5cGUsbD1lLmVuZCxjPWUuaG92ZXIscz1lLm9mZnNldCx1PWUuc3RhcnQsZD1lLnN0ZXAsZj12b2lkIDA9PT1kPzE6ZCxwPWUudGlsZSxDPWUudmFsdWUsaD1lLnZhbHVlVHlwZSx2PWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxudCksZz1bXSxtPXU7bTw9bDttKz1mKXt2YXIgdz1pKG0pO2cucHVzaChvKCkuY3JlYXRlRWxlbWVudChwLGF0KHtrZXk6dy5nZXRUaW1lKCksY2xhc3Nlczp0dCh7dmFsdWU6Qyx2YWx1ZVR5cGU6aCxkYXRlOncsZGF0ZVR5cGU6YSxob3ZlcjpjfSksZGF0ZTp3LHBvaW50Om19LHYpKSl9cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFllLHtjbGFzc05hbWU6dCxjb3VudDpyLG9mZnNldDpzLHdyYXA6ITB9LGcpfWZ1bmN0aW9uIGN0KGUpe3JldHVybiBjdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxjdChlKX1mdW5jdGlvbiBzdChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gdXQoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/c3QoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtodChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6c3QoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gZHQoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fWZ1bmN0aW9uIGZ0KGUsdCl7cmV0dXJuIGZ0PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sZnQoZSx0KX1mdW5jdGlvbiBwdChlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gZX1mdW5jdGlvbiBDdChlKXtyZXR1cm4gQ3Q9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LEN0KGUpfWZ1bmN0aW9uIGh0KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiB2dChlLHQpe3JldHVybiBlJiYhdHx8IWUmJnR8fGUmJnQmJmUuZ2V0VGltZSgpIT09dC5nZXRUaW1lKCl9ZnVuY3Rpb24gZ3QoZSx0KXt2YXIgbj1lLmFjdGl2ZVN0YXJ0RGF0ZSxyPWUuZGF0ZSxvPWUudmlldztyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3Qoe2FjdGl2ZVN0YXJ0RGF0ZTpuLGRhdGU6cix2aWV3Om99KTp0fWx0LnByb3BUeXBlcz1vdChvdCh7fSxEZSkse30se2FjdGl2ZVN0YXJ0RGF0ZTphKCkuaW5zdGFuY2VPZihEYXRlKSxjb3VudDphKCkubnVtYmVyLGRhdGVUcmFuc2Zvcm06YSgpLmZ1bmMuaXNSZXF1aXJlZCxkYXRlVHlwZTphKCkuc3RyaW5nLG9mZnNldDphKCkubnVtYmVyLHN0ZXA6YSgpLm51bWJlcix0aWxlOmEoKS5mdW5jLmlzUmVxdWlyZWR9KTt2YXIgbXQ9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInByb3RvdHlwZVwiLHt3cml0YWJsZTohMX0pLHQmJmZ0KGUsdCl9KHMsZSk7dmFyIHQsbixyLGksYSxsPShpPXMsYT1mdW5jdGlvbigpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIGUsdD1DdChpKTtpZihhKXt2YXIgbj1DdCh0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KHQsYXJndW1lbnRzLG4pfWVsc2UgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZih0JiYoXCJvYmplY3RcIj09PWN0KHQpfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4gcHQoZSl9KHRoaXMsZSl9KTtmdW5jdGlvbiBzKCl7dmFyIGU7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxzKTtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyluW3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4gaHQocHQoZT1sLmNhbGwuYXBwbHkobCxbdGhpc10uY29uY2F0KG4pKSksXCJzdGF0ZVwiLHt9KSxlfXJldHVybiB0PXMscj1be2tleTpcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5hY3RpdmVTdGFydERhdGUscj1lLnRpbGVDbGFzc05hbWUsbz1lLnRpbGVDb250ZW50LGk9e307cmV0dXJuKHIhPT10LnRpbGVDbGFzc05hbWVQcm9wc3x8dnQobix0LmFjdGl2ZVN0YXJ0RGF0ZVByb3BzKSkmJihpLnRpbGVDbGFzc05hbWU9Z3QoZSxyKSxpLnRpbGVDbGFzc05hbWVQcm9wcz1yKSwobyE9PXQudGlsZUNvbnRlbnRQcm9wc3x8dnQobix0LmFjdGl2ZVN0YXJ0RGF0ZVByb3BzKSkmJihpLnRpbGVDb250ZW50PWd0KGUsbyksaS50aWxlQ29udGVudFByb3BzPW8pLGkuYWN0aXZlU3RhcnREYXRlUHJvcHM9bixpfX1dLChuPVt7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5hY3RpdmVTdGFydERhdGUsbj1lLmNoaWxkcmVuLHI9ZS5jbGFzc2VzLGk9ZS5kYXRlLGE9ZS5mb3JtYXRBYmJyLGw9ZS5sb2NhbGUscz1lLm1heERhdGUsdT1lLm1heERhdGVUcmFuc2Zvcm0sZD1lLm1pbkRhdGUsZj1lLm1pbkRhdGVUcmFuc2Zvcm0scD1lLm9uQ2xpY2ssQz1lLm9uTW91c2VPdmVyLGg9ZS5zdHlsZSx2PWUudGlsZURpc2FibGVkLGc9ZS52aWV3LG09dGhpcy5zdGF0ZSx3PW0udGlsZUNsYXNzTmFtZSx5PW0udGlsZUNvbnRlbnQ7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse2NsYXNzTmFtZTpjKHIsdyksZGlzYWJsZWQ6ZCYmZihkKT5pfHxzJiZ1KHMpPGl8fHYmJnYoe2FjdGl2ZVN0YXJ0RGF0ZTp0LGRhdGU6aSx2aWV3Omd9KSxvbkNsaWNrOnAmJmZ1bmN0aW9uKGUpe3JldHVybiBwKGksZSl9LG9uRm9jdXM6QyYmZnVuY3Rpb24oKXtyZXR1cm4gQyhpKX0sb25Nb3VzZU92ZXI6QyYmZnVuY3Rpb24oKXtyZXR1cm4gQyhpKX0sc3R5bGU6aCx0eXBlOlwiYnV0dG9uXCJ9LGE/bygpLmNyZWF0ZUVsZW1lbnQoXCJhYmJyXCIse1wiYXJpYS1sYWJlbFwiOmEobCxpKX0sbik6bix5KX19XSkmJmR0KHQucHJvdG90eXBlLG4pLHImJmR0KHQsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSxzfShyLkNvbXBvbmVudCk7bXQucHJvcFR5cGVzPXV0KHV0KHt9LEJlKSx7fSx7Y2hpbGRyZW46YSgpLm5vZGUuaXNSZXF1aXJlZCxmb3JtYXRBYmJyOmEoKS5mdW5jLG1heERhdGVUcmFuc2Zvcm06YSgpLmZ1bmMuaXNSZXF1aXJlZCxtaW5EYXRlVHJhbnNmb3JtOmEoKS5mdW5jLmlzUmVxdWlyZWR9KTt2YXIgd3Q9W1wiY2xhc3Nlc1wiLFwiZm9ybWF0WWVhclwiXTtmdW5jdGlvbiB5dChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gYnQoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/eXQoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXt4dChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6eXQoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24geHQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIE90KCl7cmV0dXJuIE90PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sT3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBMdD1cInJlYWN0LWNhbGVuZGFyX19jZW50dXJ5LXZpZXdfX2RlY2FkZXNfX2RlY2FkZVwiO2Z1bmN0aW9uIF90KGUpe3ZhciB0PWUuY2xhc3NlcyxuPWUuZm9ybWF0WWVhcixyPXZvaWQgMD09PW4/ZmU6bixpPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSx3dCksYT1pLmRhdGUsbD1pLmxvY2FsZTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQobXQsT3Qoe30saSx7Y2xhc3NlczpbXS5jb25jYXQodCxMdCksbWF4RGF0ZVRyYW5zZm9ybTpQLG1pbkRhdGVUcmFuc2Zvcm06aix2aWV3OlwiY2VudHVyeVwifSksTWUobCxyLGEpKX1mdW5jdGlvbiBNdChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24ganQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIEV0KCl7cmV0dXJuIEV0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sRXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFN0KGUpe3ZhciB0PW0oYihlLmFjdGl2ZVN0YXJ0RGF0ZSkpLG49dCs5OTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQobHQsRXQoe30sZSx7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX2NlbnR1cnktdmlld19fZGVjYWRlc1wiLGRhdGVUcmFuc2Zvcm06aixkYXRlVHlwZTpcImRlY2FkZVwiLGVuZDpuLHN0YXJ0OnQsc3RlcDoxMCx0aWxlOl90fSkpfWZ1bmN0aW9uIFB0KGUpe3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6XCJyZWFjdC1jYWxlbmRhcl9fY2VudHVyeS12aWV3XCJ9LG8oKS5jcmVhdGVFbGVtZW50KFN0LGUpKX1fdC5wcm9wVHlwZXM9YnQoYnQoe30sQmUpLHt9LHtmb3JtYXRZZWFyOmEoKS5mdW5jfSksU3QucHJvcFR5cGVzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP010KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7anQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOk10KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfSh7fSxEZSk7dmFyIEh0PVtcImNsYXNzZXNcIixcImZvcm1hdFllYXJcIl07ZnVuY3Rpb24ga3QoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFZ0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2t0KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7UnQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmt0KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIFJ0KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBJdCgpe3JldHVybiBJdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LEl0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgWnQ9XCJyZWFjdC1jYWxlbmRhcl9fZGVjYWRlLXZpZXdfX3llYXJzX195ZWFyXCI7ZnVuY3Rpb24gVHQoZSl7dmFyIHQ9ZS5jbGFzc2VzLG49ZS5mb3JtYXRZZWFyLHI9dm9pZCAwPT09bj9mZTpuLGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLEh0KSxhPWkuZGF0ZSxsPWkubG9jYWxlO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChtdCxJdCh7fSxpLHtjbGFzc2VzOltdLmNvbmNhdCh0LFp0KSxtYXhEYXRlVHJhbnNmb3JtOlosbWluRGF0ZVRyYW5zZm9ybTpWLHZpZXc6XCJkZWNhZGVcIn0pLHIobCxhKSl9ZnVuY3Rpb24gQXQoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIER0KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBCdCgpe3JldHVybiBCdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LEJ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiAkdChlKXt2YXIgdD1tKGooZS5hY3RpdmVTdGFydERhdGUpKSxuPXQrOTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQobHQsQnQoe30sZSx7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX2RlY2FkZS12aWV3X195ZWFyc1wiLGRhdGVUcmFuc2Zvcm06ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IERhdGU7cmV0dXJuIHQuc2V0RnVsbFllYXIoZSwwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCksdH0sZGF0ZVR5cGU6XCJ5ZWFyXCIsZW5kOm4sc3RhcnQ6dCx0aWxlOlR0fSkpfWZ1bmN0aW9uIEZ0KGUpe3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6XCJyZWFjdC1jYWxlbmRhcl9fZGVjYWRlLXZpZXdcIn0sbygpLmNyZWF0ZUVsZW1lbnQoJHQsZSkpfVR0LnByb3BUeXBlcz1WdChWdCh7fSxCZSkse30se2Zvcm1hdFllYXI6YSgpLmZ1bmN9KSwkdC5wcm9wVHlwZXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/QXQoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtEdChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6QXQoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9KHt9LERlKTt2YXIgTnQ9W1wiY2xhc3Nlc1wiLFwiZm9ybWF0TW9udGhcIixcImZvcm1hdE1vbnRoWWVhclwiXTtmdW5jdGlvbiB6dChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gV3QoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/enQoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtHdChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6enQoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gR3QoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFV0KCl7cmV0dXJuIFV0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sVXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBxdD1cInJlYWN0LWNhbGVuZGFyX195ZWFyLXZpZXdfX21vbnRoc19fbW9udGhcIjtmdW5jdGlvbiBZdChlKXt2YXIgdD1lLmNsYXNzZXMsbj1lLmZvcm1hdE1vbnRoLHI9dm9pZCAwPT09bj9jZTpuLGk9ZS5mb3JtYXRNb250aFllYXIsYT12b2lkIDA9PT1pP3NlOmksbD1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsTnQpLGM9bC5kYXRlLHM9bC5sb2NhbGU7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KG10LFV0KHt9LGwse2NsYXNzZXM6W10uY29uY2F0KHQscXQpLGZvcm1hdEFiYnI6YSxtYXhEYXRlVHJhbnNmb3JtOk4sbWluRGF0ZVRyYW5zZm9ybTpCLHZpZXc6XCJ5ZWFyXCJ9KSxyKHMsYykpfWZ1bmN0aW9uIEt0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBYdChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9LdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe1F0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpLdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBRdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gSnQoKXtyZXR1cm4gSnQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxKdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gZW4oZSl7dmFyIHQ9bShlLmFjdGl2ZVN0YXJ0RGF0ZSk7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KGx0LEp0KHt9LGUse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX195ZWFyLXZpZXdfX21vbnRoc1wiLGRhdGVUcmFuc2Zvcm06ZnVuY3Rpb24oZSl7dmFyIG49bmV3IERhdGU7cmV0dXJuIG4uc2V0RnVsbFllYXIodCxlLDEpLG4uc2V0SG91cnMoMCwwLDAsMCksbn0sZGF0ZVR5cGU6XCJtb250aFwiLGVuZDoxMSxzdGFydDowLHRpbGU6WXR9KSl9ZnVuY3Rpb24gdG4oZSl7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX195ZWFyLXZpZXdcIn0sbygpLmNyZWF0ZUVsZW1lbnQoZW4sZSkpfVl0LnByb3BUeXBlcz1XdChXdCh7fSxCZSkse30se2Zvcm1hdE1vbnRoOmEoKS5mdW5jLGZvcm1hdE1vbnRoWWVhcjphKCkuZnVuY30pLGVuLnByb3BUeXBlcz1YdChYdCh7fSxEZSkse30se2xvY2FsZTphKCkuc3RyaW5nfSk7dmFyIG5uPVtcImZvcm1hdERheVwiLFwiZm9ybWF0TG9uZ0RhdGVcIixcImNhbGVuZGFyVHlwZVwiLFwiY2xhc3Nlc1wiLFwiY3VycmVudE1vbnRoSW5kZXhcIl07ZnVuY3Rpb24gcm4oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIG9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3JuKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7YW4oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnJuKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGFuKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBsbigpe3JldHVybiBsbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGxuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgY249XCJyZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fZGF5c19fZGF5XCI7ZnVuY3Rpb24gc24oZSl7dmFyIHQ9ZS5mb3JtYXREYXksbj12b2lkIDA9PT10P2FlOnQscj1lLmZvcm1hdExvbmdEYXRlLGk9dm9pZCAwPT09cj9sZTpyLGE9ZS5jYWxlbmRhclR5cGUsbD1lLmNsYXNzZXMsYz1lLmN1cnJlbnRNb250aEluZGV4LHM9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLG5uKSx1PXMuZGF0ZSxkPXMubG9jYWxlO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChtdCxsbih7fSxzLHtjbGFzc2VzOltdLmNvbmNhdChsLGNuLGplKHUsYSk/XCJcIi5jb25jYXQoY24sXCItLXdlZWtlbmRcIik6bnVsbCx1LmdldE1vbnRoKCkhPT1jP1wiXCIuY29uY2F0KGNuLFwiLS1uZWlnaGJvcmluZ01vbnRoXCIpOm51bGwpLGZvcm1hdEFiYnI6aSxtYXhEYXRlVHJhbnNmb3JtOlksbWluRGF0ZVRyYW5zZm9ybTpVLHZpZXc6XCJtb250aFwifSksbihkLHUpKX1zbi5wcm9wVHlwZXM9b24ob24oe30sQmUpLHt9LHtjdXJyZW50TW9udGhJbmRleDphKCkubnVtYmVyLmlzUmVxdWlyZWQsZm9ybWF0RGF5OmEoKS5mdW5jLGZvcm1hdExvbmdEYXRlOmEoKS5mdW5jfSk7dmFyIHVuPVtcInNob3dGaXhlZE51bWJlck9mV2Vla3NcIixcInNob3dOZWlnaGJvcmluZ01vbnRoXCJdO2Z1bmN0aW9uIGRuKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBmbihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gcG4oKXtyZXR1cm4gcG49T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxwbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gQ24oZSl7dmFyIHQ9ZS5hY3RpdmVTdGFydERhdGUsbj1lLmNhbGVuZGFyVHlwZSxyPWUuc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrcyxpPWUuc2hvd05laWdoYm9yaW5nTW9udGgsYT1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsdW4pLGw9bSh0KSxjPXcodCkscz1yfHxpLHU9dmUodCxuKSxkPXM/MDp1LGY9MSsocz8tdTowKSxwPWZ1bmN0aW9uKCl7aWYocilyZXR1cm4gZis0Mi0xO3ZhciBlPVgodCk7aWYoaSl7dmFyIG89bmV3IERhdGU7cmV0dXJuIG8uc2V0RnVsbFllYXIobCxjLGUpLG8uc2V0SG91cnMoMCwwLDAsMCksZSsoNy12ZShvLG4pLTEpfXJldHVybiBlfSgpO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChsdCxwbih7fSxhLHtjbGFzc05hbWU6XCJyZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fZGF5c1wiLGNvdW50OjcsY3VycmVudE1vbnRoSW5kZXg6YyxkYXRlVHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlO3JldHVybiB0LnNldEZ1bGxZZWFyKGwsYyxlKSx0LnNldEhvdXJzKDAsMCwwLDApLHR9LGRhdGVUeXBlOlwiZGF5XCIsZW5kOnAsb2Zmc2V0OmQsc3RhcnQ6Zix0aWxlOnNufSkpfUNuLnByb3BUeXBlcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9kbihPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2ZuKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpkbihPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX0oe2NhbGVuZGFyVHlwZTpIZS5pc1JlcXVpcmVkLHNob3dGaXhlZE51bWJlck9mV2Vla3M6YSgpLmJvb2wsc2hvd05laWdoYm9yaW5nTW9udGg6YSgpLmJvb2x9LERlKTt2YXIgaG49XCJyZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fd2Vla2RheXNcIix2bj1cIlwiLmNvbmNhdChobixcIl9fd2Vla2RheVwiKTtmdW5jdGlvbiBnbihlKXtmb3IodmFyIHQ9ZS5jYWxlbmRhclR5cGUsbj1lLmZvcm1hdFNob3J0V2Vla2RheSxyPXZvaWQgMD09PW4/dWU6bixpPWUuZm9ybWF0V2Vla2RheSxhPXZvaWQgMD09PWk/ZGU6aSxsPWUubG9jYWxlLHM9ZS5vbk1vdXNlTGVhdmUsdT1CKG5ldyBEYXRlKSxkPW0odSksZj13KHUpLHA9W10sQz0xO0M8PTc7Qys9MSl7dmFyIGg9bmV3IERhdGUoZCxmLEMtdmUodSx0KSksdj1hKGwsaCk7cC5wdXNoKG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2tleTpDLGNsYXNzTmFtZTpjKHZuLGplKGgsdCkmJlwiXCIuY29uY2F0KHZuLFwiLS13ZWVrZW5kXCIpKX0sbygpLmNyZWF0ZUVsZW1lbnQoXCJhYmJyXCIse1wiYXJpYS1sYWJlbFwiOnYsdGl0bGU6dn0scihsLGgpLnJlcGxhY2UoXCIuXCIsXCJcIikpKSl9cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFllLHtjbGFzc05hbWU6aG4sY291bnQ6NyxvbkZvY3VzOnMsb25Nb3VzZU92ZXI6c30scCl9Z24ucHJvcFR5cGVzPXtjYWxlbmRhclR5cGU6SGUuaXNSZXF1aXJlZCxmb3JtYXRTaG9ydFdlZWtkYXk6YSgpLmZ1bmMsZm9ybWF0V2Vla2RheTphKCkuZnVuYyxsb2NhbGU6YSgpLnN0cmluZyxvbk1vdXNlTGVhdmU6YSgpLmZ1bmN9O3ZhciBtbj1bXCJkYXRlXCIsXCJvbkNsaWNrV2Vla051bWJlclwiLFwid2Vla051bWJlclwiXTtmdW5jdGlvbiB3bigpe3JldHVybiB3bj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LHduLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB5bihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gYm4oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciB4bj1cInJlYWN0LWNhbGVuZGFyX190aWxlXCI7ZnVuY3Rpb24gT24oZSl7dmFyIHQ9ZS5kYXRlLG49ZS5vbkNsaWNrV2Vla051bWJlcixyPWUud2Vla051bWJlcixpPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxtbiksYT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj95bihPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2JuKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTp5bihPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX0oe2NsYXNzTmFtZTp4bn0saSksbD1vKCkuY3JlYXRlRWxlbWVudChcInNwYW5cIixudWxsLHIpO3JldHVybiBuP28oKS5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsd24oe30sYSx7b25DbGljazpmdW5jdGlvbihlKXtyZXR1cm4gbihyLHQsZSl9LHR5cGU6XCJidXR0b25cIn0pLGwpOm8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsYSxsKX1mdW5jdGlvbiBMbihlKXt2YXIgdD1lLmFjdGl2ZVN0YXJ0RGF0ZSxuPWUuY2FsZW5kYXJUeXBlLHI9ZS5vbkNsaWNrV2Vla051bWJlcixpPWUub25Nb3VzZUxlYXZlLGE9ZS5zaG93Rml4ZWROdW1iZXJPZldlZWtzLGw9ZnVuY3Rpb24oKXtpZihhKXJldHVybiA2O3ZhciBlPVgodCktKDctdmUodCxuKSk7cmV0dXJuIDErTWF0aC5jZWlsKGUvNyl9KCksYz1mdW5jdGlvbigpe2Zvcih2YXIgZT1tKHQpLHI9dyh0KSxvPXkodCksaT1bXSxhPTA7YTxsO2ErPTEpaS5wdXNoKGdlKG5ldyBEYXRlKGUscixvKzcqYSksbikpO3JldHVybiBpfSgpLHM9Yy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdCxuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0ZS5JU09fODYwMSxyPW49PT10ZS5VUz90ZS5VUzp0ZS5JU09fODYwMSxvPWdlKGUsbiksaT1tKGUpKzE7ZG97dD1nZShuZXcgRGF0ZShpLDAscj09PXRlLklTT184NjAxPzQ6MSksbiksaS09MX13aGlsZShlPHQpO3JldHVybiBNYXRoLnJvdW5kKChvLXQpLzYwNDhlNSkrMX0oZSxuKX0pKTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoWWUse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X193ZWVrTnVtYmVyc1wiLGNvdW50OmwsZGlyZWN0aW9uOlwiY29sdW1uXCIsb25Gb2N1czppLG9uTW91c2VPdmVyOmksc3R5bGU6e2ZsZXhCYXNpczpcImNhbGMoMTAwJSAqICgxIC8gOClcIixmbGV4U2hyaW5rOjB9fSxzLm1hcCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoT24se2tleTplLGRhdGU6Y1t0XSxvbkNsaWNrV2Vla051bWJlcjpyLHdlZWtOdW1iZXI6ZX0pfSkpKX1Pbi5wcm9wVHlwZXM9e2RhdGU6YSgpLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxvbkNsaWNrV2Vla051bWJlcjphKCkuZnVuYyx3ZWVrTnVtYmVyOmEoKS5ub2RlLmlzUmVxdWlyZWR9LExuLnByb3BUeXBlcz17YWN0aXZlU3RhcnREYXRlOmEoKS5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsY2FsZW5kYXJUeXBlOkhlLmlzUmVxdWlyZWQsb25DbGlja1dlZWtOdW1iZXI6YSgpLmZ1bmMsb25Nb3VzZUxlYXZlOmEoKS5mdW5jLHNob3dGaXhlZE51bWJlck9mV2Vla3M6YSgpLmJvb2x9O3ZhciBfbj1bXCJjYWxlbmRhclR5cGVcIixcImZvcm1hdFNob3J0V2Vla2RheVwiLFwiZm9ybWF0V2Vla2RheVwiLFwib25DbGlja1dlZWtOdW1iZXJcIixcInNob3dXZWVrTnVtYmVyc1wiXTtmdW5jdGlvbiBNbigpe3JldHVybiBNbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LE1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBqbihlKXt2YXIgdD1lLmFjdGl2ZVN0YXJ0RGF0ZSxuPWUubG9jYWxlLHI9ZS5vbk1vdXNlTGVhdmUsaT1lLnNob3dGaXhlZE51bWJlck9mV2Vla3MsYT1lLmNhbGVuZGFyVHlwZSxsPXZvaWQgMD09PWE/ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5rZXlzKG5lKS5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gbmVbdF0uaW5jbHVkZXMoZSl9KSl8fHRlLklTT184NjAxfShuKTphLHM9ZS5mb3JtYXRTaG9ydFdlZWtkYXksdT1lLmZvcm1hdFdlZWtkYXksZD1lLm9uQ2xpY2tXZWVrTnVtYmVyLGY9ZS5zaG93V2Vla051bWJlcnMscD1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsX24pLEM9XCJyZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld1wiO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6YyhDLGY/XCJcIi5jb25jYXQoQyxcIi0td2Vla051bWJlcnNcIik6XCJcIil9LG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0eWxlOntkaXNwbGF5OlwiZmxleFwiLGFsaWduSXRlbXM6XCJmbGV4LWVuZFwifX0sZj9vKCkuY3JlYXRlRWxlbWVudChMbix7YWN0aXZlU3RhcnREYXRlOnQsY2FsZW5kYXJUeXBlOmwsb25DbGlja1dlZWtOdW1iZXI6ZCxvbk1vdXNlTGVhdmU6cixzaG93Rml4ZWROdW1iZXJPZldlZWtzOml9KTpudWxsLG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0eWxlOntmbGV4R3JvdzoxLHdpZHRoOlwiMTAwJVwifX0sbygpLmNyZWF0ZUVsZW1lbnQoZ24se2NhbGVuZGFyVHlwZTpsLGZvcm1hdFNob3J0V2Vla2RheTpzLGZvcm1hdFdlZWtkYXk6dSxsb2NhbGU6bixvbk1vdXNlTGVhdmU6cn0pLG8oKS5jcmVhdGVFbGVtZW50KENuLE1uKHtjYWxlbmRhclR5cGU6bH0scCkpKSkpfWpuLnByb3BUeXBlcz17YWN0aXZlU3RhcnREYXRlOmEoKS5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsY2FsZW5kYXJUeXBlOkhlLGZvcm1hdFNob3J0V2Vla2RheTphKCkuZnVuYyxmb3JtYXRXZWVrZGF5OmEoKS5mdW5jLGxvY2FsZTphKCkuc3RyaW5nLG9uQ2xpY2tXZWVrTnVtYmVyOmEoKS5mdW5jLG9uTW91c2VMZWF2ZTphKCkuZnVuYyxzaG93Rml4ZWROdW1iZXJPZldlZWtzOmEoKS5ib29sLHNob3dXZWVrTnVtYmVyczphKCkuYm9vbH07dmFyIEVuPVtcImFjdGl2ZVN0YXJ0RGF0ZVwiLFwiZGVmYXVsdEFjdGl2ZVN0YXJ0RGF0ZVwiLFwiZGVmYXVsdFZhbHVlXCIsXCJkZWZhdWx0Vmlld1wiLFwibWF4RGV0YWlsXCIsXCJtaW5EZXRhaWxcIixcInZhbHVlXCIsXCJ2aWV3XCJdO2Z1bmN0aW9uIFNuKCl7cmV0dXJuIFNuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sU24uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFBuKGUpe3JldHVybiBQbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxQbihlKX1mdW5jdGlvbiBIbihlLHQpe3JldHVybiBIbj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LEhuKGUsdCl9ZnVuY3Rpb24ga24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIGV9ZnVuY3Rpb24gVm4oZSl7cmV0dXJuIFZuPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxWbihlKX1mdW5jdGlvbiBSbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gSW4oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/Um4oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtabihlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6Um4oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gWm4oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFRuKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIEFuPW5ldyBEYXRlO0FuLnNldEZ1bGxZZWFyKDEsMCwxKSxBbi5zZXRIb3VycygwLDAsMCwwKTt2YXIgRG49bmV3IERhdGUoODY0ZTEzKSxCbj1cInJlYWN0LWNhbGVuZGFyXCIsJG49W1wiY2VudHVyeVwiLFwiZGVjYWRlXCIsXCJ5ZWFyXCIsXCJtb250aFwiXSxGbj1bXS5jb25jYXQoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIFRuKGUpfShlKXx8ZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lW1wiQEBpdGVyYXRvclwiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIFRuKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVyblwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bj9BcnJheS5mcm9tKGUpOlwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9UbihlLHQpOnZvaWQgMH19KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfSgkbi5zbGljZSgxKSksW1wiZGF5XCJdKTtmdW5jdGlvbiBObihlLHQpe3JldHVybiAkbi5zbGljZSgkbi5pbmRleE9mKGUpLCRuLmluZGV4T2YodCkrMSl9ZnVuY3Rpb24gem4oZSx0LG4pe3JldHVybiBmdW5jdGlvbihlLHQsbil7cmV0dXJuLTEhPT1Obih0LG4pLmluZGV4T2YoZSl9KGUsdCxuKT9lOm59ZnVuY3Rpb24gV24oZSl7cmV0dXJuIEZuWyRuLmluZGV4T2YoZSldfWZ1bmN0aW9uIEduKGUsdCl7dmFyIG49ZS52YWx1ZSxyPWUubWluRGF0ZSxvPWUubWF4RGF0ZSxpPWUubWF4RGV0YWlsLGE9ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm4gbnVsbDt2YXIgbj1BcnJheS5pc0FycmF5KGUpJiYyPT09ZS5sZW5ndGg/ZVt0XTplO2lmKCFuKXJldHVybiBudWxsO3ZhciByPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRGF0ZT9lOm5ldyBEYXRlKGUpfShuKTtpZihpc05hTihyLmdldFRpbWUoKSkpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBkYXRlOiBcIi5jb25jYXQoZSkpO3JldHVybiByfShuLHQpO2lmKCFhKXJldHVybiBudWxsO3ZhciBsPVduKGkpO3JldHVybiBmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQmJnQ+ZT90Om4mJm48ZT9uOmV9KFttZSx4ZV1bdF0obCxhKSxyLG8pfXZhciBVbj1mdW5jdGlvbihlKXtyZXR1cm4gR24oZSwwKX0scW49ZnVuY3Rpb24oZSl7cmV0dXJuIEduKGUsMSl9LFluPWZ1bmN0aW9uKGUpe3ZhciB0PWUudmFsdWU7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dDpbVW4scW5dLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQoZSl9KSl9O2Z1bmN0aW9uIEtuKGUpe3ZhciB0PWUubWF4RGF0ZSxuPWUubWF4RGV0YWlsLHI9ZS5taW5EYXRlLG89ZS5taW5EZXRhaWwsaT1lLnZhbHVlO3JldHVybiBtZSh6bihlLnZpZXcsbyxuKSxVbih7dmFsdWU6aSxtaW5EYXRlOnIsbWF4RGF0ZTp0LG1heERldGFpbDpufSl8fG5ldyBEYXRlKX12YXIgWG49ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJjE9PT1bXS5jb25jYXQoZSkubGVuZ3RofSxRbj1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksdCYmSG4oZSx0KX0obCxlKTt2YXIgdCxuLHIsaSxhPShyPWwsaT1mdW5jdGlvbigpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIGUsdD1WbihyKTtpZihpKXt2YXIgbj1Wbih0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KHQsYXJndW1lbnRzLG4pfWVsc2UgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZih0JiYoXCJvYmplY3RcIj09PVBuKHQpfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4ga24oZSl9KHRoaXMsZSl9KTtmdW5jdGlvbiBsKCl7dmFyIGU7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxsKTtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyluW3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4gWm4oa24oZT1hLmNhbGwuYXBwbHkoYSxbdGhpc10uY29uY2F0KG4pKSksXCJzdGF0ZVwiLHthY3RpdmVTdGFydERhdGU6ZS5wcm9wcy5kZWZhdWx0QWN0aXZlU3RhcnREYXRlLHZhbHVlOmUucHJvcHMuZGVmYXVsdFZhbHVlLHZpZXc6ZS5wcm9wcy5kZWZhdWx0Vmlld30pLFpuKGtuKGUpLFwic2V0U3RhdGVBbmRDYWxsQ2FsbGJhY2tzXCIsKGZ1bmN0aW9uKHQsbixyKXt2YXIgbz1rbihlKSxpPW8uYWN0aXZlU3RhcnREYXRlLGE9by52aWV3LGw9ZS5wcm9wcyxjPWwuYWxsb3dQYXJ0aWFsUmFuZ2Uscz1sLm9uQWN0aXZlU3RhcnREYXRlQ2hhbmdlLHU9bC5vbkNoYW5nZSxkPWwub25WaWV3Q2hhbmdlLGY9bC5zZWxlY3RSYW5nZSxwPXthY3RpdmVTdGFydERhdGU6aSx2aWV3OmF9O2Uuc2V0U3RhdGUodCwoZnVuY3Rpb24oKXt2YXIgbz17YWN0aW9uOnQuYWN0aW9uLGFjdGl2ZVN0YXJ0RGF0ZTp0LmFjdGl2ZVN0YXJ0RGF0ZXx8ZS5hY3RpdmVTdGFydERhdGUsdmFsdWU6dC52YWx1ZXx8ZS52YWx1ZSx2aWV3OnQudmlld3x8ZS52aWV3fTtmdW5jdGlvbiBpKGUpe3JldHVybiBlIGluIHQmJihQbih0W2VdKSE9PVBuKHBbZV0pfHwodFtlXWluc3RhbmNlb2YgRGF0ZT90W2VdLmdldFRpbWUoKSE9PXBbZV0uZ2V0VGltZSgpOnRbZV0hPT1wW2VdKSl9aShcImFjdGl2ZVN0YXJ0RGF0ZVwiKSYmcyYmcyhvKSxpKFwidmlld1wiKSYmZCYmZChvKSxpKFwidmFsdWVcIikmJnUmJihmJiZYbih0LnZhbHVlKT9jJiZ1KFt0LnZhbHVlXSxuKTp1KHQudmFsdWUsbikpLHImJnIobyl9KSl9KSksWm4oa24oZSksXCJzZXRBY3RpdmVTdGFydERhdGVcIiwoZnVuY3Rpb24odCxuKXtlLnNldFN0YXRlQW5kQ2FsbENhbGxiYWNrcyh7YWN0aW9uOm4sYWN0aXZlU3RhcnREYXRlOnR9KX0pKSxabihrbihlKSxcImRyaWxsRG93blwiLChmdW5jdGlvbih0LG4pe2lmKGUuZHJpbGxEb3duQXZhaWxhYmxlKXtlLm9uQ2xpY2tUaWxlKHQsbik7dmFyIHI9a24oZSksbz1yLnZpZXcsaT1yLnZpZXdzLGE9ZS5wcm9wcy5vbkRyaWxsRG93bixsPWlbaS5pbmRleE9mKG8pKzFdO2Uuc2V0U3RhdGVBbmRDYWxsQ2FsbGJhY2tzKHthY3Rpb246XCJkcmlsbERvd25cIixhY3RpdmVTdGFydERhdGU6dCx2aWV3Omx9LHZvaWQgMCxhKX19KSksWm4oa24oZSksXCJkcmlsbFVwXCIsKGZ1bmN0aW9uKCl7aWYoZS5kcmlsbFVwQXZhaWxhYmxlKXt2YXIgdD1rbihlKSxuPXQuYWN0aXZlU3RhcnREYXRlLHI9dC52aWV3LG89dC52aWV3cyxpPWUucHJvcHMub25EcmlsbFVwLGE9b1tvLmluZGV4T2YociktMV0sbD1tZShhLG4pO2Uuc2V0U3RhdGVBbmRDYWxsQ2FsbGJhY2tzKHthY3Rpb246XCJkcmlsbFVwXCIsYWN0aXZlU3RhcnREYXRlOmwsdmlldzphfSx2b2lkIDAsaSl9fSkpLFpuKGtuKGUpLFwib25DaGFuZ2VcIiwoZnVuY3Rpb24odCxuKXt2YXIgcj1rbihlKS52YWx1ZSxvPWUucHJvcHMsaT1vLmdvVG9SYW5nZVN0YXJ0T25TZWxlY3QsYT1vLnNlbGVjdFJhbmdlO2Uub25DbGlja1RpbGUodCxuKTt2YXIgbCxjLHMsdT1hJiYhWG4ocik7aWYoYSl7dmFyIGQ9a24oZSkudmFsdWVUeXBlO2w9dT9tZShkLHQpOlttZShjPWQsKHM9W3IsdF0uc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS10fSkpKVswXSkseGUoYyxzWzFdKV19ZWxzZSBsPWUuZ2V0UHJvY2Vzc2VkVmFsdWUodCk7dmFyIGY9IWF8fHV8fGk/S24oSW4oSW4oe30sZS5wcm9wcykse30se3ZhbHVlOmx9KSk6bnVsbDtuLnBlcnNpc3QoKSxlLnNldFN0YXRlQW5kQ2FsbENhbGxiYWNrcyh7YWN0aW9uOlwib25DaGFuZ2VcIixhY3RpdmVTdGFydERhdGU6Zix2YWx1ZTpsfSxuKX0pKSxabihrbihlKSxcIm9uQ2xpY2tUaWxlXCIsKGZ1bmN0aW9uKHQsbil7dmFyIHI9a24oZSkudmlldyxvPWUucHJvcHMsaT1vLm9uQ2xpY2tEYXksYT1vLm9uQ2xpY2tEZWNhZGUsbD1vLm9uQ2xpY2tNb250aCxjPW8ub25DbGlja1llYXIscz1mdW5jdGlvbigpe3N3aXRjaChyKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIGE7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIGM7Y2FzZVwieWVhclwiOnJldHVybiBsO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIGk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHZpZXc6IFwiLmNvbmNhdChyLFwiLlwiKSl9fSgpO3MmJnModCxuKX0pKSxabihrbihlKSxcIm9uTW91c2VPdmVyXCIsKGZ1bmN0aW9uKHQpe2Uuc2V0U3RhdGUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmhvdmVyJiZlLmhvdmVyLmdldFRpbWUoKT09PXQuZ2V0VGltZSgpP251bGw6e2hvdmVyOnR9fSkpfSkpLFpuKGtuKGUpLFwib25Nb3VzZUxlYXZlXCIsKGZ1bmN0aW9uKCl7ZS5zZXRTdGF0ZSh7aG92ZXI6bnVsbH0pfSkpLGV9cmV0dXJuIHQ9bCxuPVt7a2V5OlwiYWN0aXZlU3RhcnREYXRlXCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsbyxpLGEsbCxjLHMsdSxkLGY9dGhpcy5wcm9wcy5hY3RpdmVTdGFydERhdGUscD10aGlzLnN0YXRlLmFjdGl2ZVN0YXJ0RGF0ZTtyZXR1cm4gZnx8cHx8KHQ9KGU9dGhpcy5wcm9wcykuYWN0aXZlU3RhcnREYXRlLG49ZS5kZWZhdWx0QWN0aXZlU3RhcnREYXRlLHI9ZS5kZWZhdWx0VmFsdWUsbz1lLmRlZmF1bHRWaWV3LGk9ZS5tYXhEZXRhaWwsYT1lLm1pbkRldGFpbCxsPWUudmFsdWUsYz1lLnZpZXcscz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsRW4pLHU9em4oYyxhLGkpLChkPXR8fG4pP21lKHUsZCk6S24oSW4oe21heERldGFpbDppLG1pbkRldGFpbDphLHZhbHVlOmx8fHIsdmlldzpjfHxvfSxzKSkpfX0se2tleTpcInZhbHVlXCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuc2VsZWN0UmFuZ2Usbj1lLnZhbHVlLHI9dGhpcy5zdGF0ZS52YWx1ZTtyZXR1cm4gdCYmWG4ocik/cjp2b2lkIDAhPT1uP246cn19LHtrZXk6XCJ2YWx1ZVR5cGVcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gV24odGhpcy5wcm9wcy5tYXhEZXRhaWwpfX0se2tleTpcInZpZXdcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5taW5EZXRhaWwsbj1lLm1heERldGFpbCxyPWUudmlldyxvPXRoaXMuc3RhdGUudmlldztyZXR1cm4gem4ocnx8byx0LG4pfX0se2tleTpcInZpZXdzXCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcztyZXR1cm4gTm4oZS5taW5EZXRhaWwsZS5tYXhEZXRhaWwpfX0se2tleTpcImhvdmVyXCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcy5zZWxlY3RSYW5nZSx0PXRoaXMuc3RhdGUuaG92ZXI7cmV0dXJuIGU/dDpudWxsfX0se2tleTpcImRyaWxsRG93bkF2YWlsYWJsZVwiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMudmlldyx0PXRoaXMudmlld3M7cmV0dXJuIHQuaW5kZXhPZihlKTx0Lmxlbmd0aC0xfX0se2tleTpcImRyaWxsVXBBdmFpbGFibGVcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnZpZXc7cmV0dXJuIHRoaXMudmlld3MuaW5kZXhPZihlKT4wfX0se2tleTpcImdldFByb2Nlc3NlZFZhbHVlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQubWluRGF0ZSxyPXQubWF4RGF0ZSxvPXQubWF4RGV0YWlsLGk9dC5yZXR1cm5WYWx1ZTtyZXR1cm4gZnVuY3Rpb24oKXtzd2l0Y2goaSl7Y2FzZVwic3RhcnRcIjpyZXR1cm4gVW47Y2FzZVwiZW5kXCI6cmV0dXJuIHFuO2Nhc2VcInJhbmdlXCI6cmV0dXJuIFluO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByZXR1cm5WYWx1ZS5cIil9fSgpKHt2YWx1ZTplLG1pbkRhdGU6bixtYXhEYXRlOnIsbWF4RGV0YWlsOm99KX19LHtrZXk6XCJyZW5kZXJDb250ZW50XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5hY3RpdmVTdGFydERhdGUsbj10aGlzLm9uTW91c2VPdmVyLHI9dGhpcy52YWx1ZVR5cGUsaT10aGlzLnZhbHVlLGE9dGhpcy52aWV3LGw9dGhpcy5wcm9wcyxjPWwuY2FsZW5kYXJUeXBlLHM9bC5sb2NhbGUsdT1sLm1heERhdGUsZD1sLm1pbkRhdGUsZj1sLnNlbGVjdFJhbmdlLHA9bC50aWxlQ2xhc3NOYW1lLEM9bC50aWxlQ29udGVudCxoPWwudGlsZURpc2FibGVkLHY9dGhpcy5ob3ZlcixnPXthY3RpdmVTdGFydERhdGU6ZT93ZShhLHQpOm1lKGEsdCksaG92ZXI6dixsb2NhbGU6cyxtYXhEYXRlOnUsbWluRGF0ZTpkLG9uQ2xpY2s6dGhpcy5kcmlsbERvd25BdmFpbGFibGU/dGhpcy5kcmlsbERvd246dGhpcy5vbkNoYW5nZSxvbk1vdXNlT3ZlcjpmP246bnVsbCx0aWxlQ2xhc3NOYW1lOnAsdGlsZUNvbnRlbnQ6Qyx0aWxlRGlzYWJsZWQ6aCx2YWx1ZTppLHZhbHVlVHlwZTpyfTtzd2l0Y2goYSl7Y2FzZVwiY2VudHVyeVwiOnZhciBtPXRoaXMucHJvcHMuZm9ybWF0WWVhcjtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoUHQsU24oe2Zvcm1hdFllYXI6bX0sZykpO2Nhc2VcImRlY2FkZVwiOnZhciB3PXRoaXMucHJvcHMuZm9ybWF0WWVhcjtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoRnQsU24oe2Zvcm1hdFllYXI6d30sZykpO2Nhc2VcInllYXJcIjp2YXIgeT10aGlzLnByb3BzLGI9eS5mb3JtYXRNb250aCx4PXkuZm9ybWF0TW9udGhZZWFyO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudCh0bixTbih7Zm9ybWF0TW9udGg6Yixmb3JtYXRNb250aFllYXI6eH0sZykpO2Nhc2VcIm1vbnRoXCI6dmFyIE89dGhpcy5wcm9wcyxMPU8uZm9ybWF0RGF5LF89Ty5mb3JtYXRMb25nRGF0ZSxNPU8uZm9ybWF0U2hvcnRXZWVrZGF5LGo9Ty5mb3JtYXRXZWVrZGF5LEU9Ty5vbkNsaWNrV2Vla051bWJlcixTPU8uc2hvd0RvdWJsZVZpZXcsUD1PLnNob3dGaXhlZE51bWJlck9mV2Vla3MsSD1PLnNob3dOZWlnaGJvcmluZ01vbnRoLGs9Ty5zaG93V2Vla051bWJlcnMsVj10aGlzLm9uTW91c2VMZWF2ZTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoam4sU24oe2NhbGVuZGFyVHlwZTpjLGZvcm1hdERheTpMLGZvcm1hdExvbmdEYXRlOl8sZm9ybWF0U2hvcnRXZWVrZGF5Ok0sZm9ybWF0V2Vla2RheTpqLG9uQ2xpY2tXZWVrTnVtYmVyOkUsb25Nb3VzZUxlYXZlOmY/VjpudWxsLHNob3dGaXhlZE51bWJlck9mV2Vla3M6dm9pZCAwIT09UD9QOlMsc2hvd05laWdoYm9yaW5nTW9udGg6SCxzaG93V2Vla051bWJlcnM6a30sZykpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB2aWV3OiBcIi5jb25jYXQoYSxcIi5cIikpfX19LHtrZXk6XCJyZW5kZXJOYXZpZ2F0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5wcm9wcy5zaG93TmF2aWdhdGlvbilyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmFjdGl2ZVN0YXJ0RGF0ZSx0PXRoaXMudmlldyxuPXRoaXMudmlld3Mscj10aGlzLnByb3BzLGk9ci5mb3JtYXRNb250aFllYXIsYT1yLmZvcm1hdFllYXIsbD1yLmxvY2FsZSxjPXIubWF4RGF0ZSxzPXIubWluRGF0ZSx1PXIubmF2aWdhdGlvbkFyaWFMYWJlbCxkPXIubmF2aWdhdGlvbkFyaWFMaXZlLGY9ci5uYXZpZ2F0aW9uTGFiZWwscD1yLm5leHQyQXJpYUxhYmVsLEM9ci5uZXh0MkxhYmVsLGg9ci5uZXh0QXJpYUxhYmVsLHY9ci5uZXh0TGFiZWwsZz1yLnByZXYyQXJpYUxhYmVsLG09ci5wcmV2MkxhYmVsLHc9ci5wcmV2QXJpYUxhYmVsLHk9ci5wcmV2TGFiZWwsYj1yLnNob3dEb3VibGVWaWV3O3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChGZSx7YWN0aXZlU3RhcnREYXRlOmUsZHJpbGxVcDp0aGlzLmRyaWxsVXAsZm9ybWF0TW9udGhZZWFyOmksZm9ybWF0WWVhcjphLGxvY2FsZTpsLG1heERhdGU6YyxtaW5EYXRlOnMsbmF2aWdhdGlvbkFyaWFMYWJlbDp1LG5hdmlnYXRpb25BcmlhTGl2ZTpkLG5hdmlnYXRpb25MYWJlbDpmLG5leHQyQXJpYUxhYmVsOnAsbmV4dDJMYWJlbDpDLG5leHRBcmlhTGFiZWw6aCxuZXh0TGFiZWw6dixwcmV2MkFyaWFMYWJlbDpnLHByZXYyTGFiZWw6bSxwcmV2QXJpYUxhYmVsOncscHJldkxhYmVsOnksc2V0QWN0aXZlU3RhcnREYXRlOnRoaXMuc2V0QWN0aXZlU3RhcnREYXRlLHNob3dEb3VibGVWaWV3OmIsdmlldzp0LHZpZXdzOm59KX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmNsYXNzTmFtZSxuPWUuaW5wdXRSZWYscj1lLnNlbGVjdFJhbmdlLGk9ZS5zaG93RG91YmxlVmlldyxhPXRoaXMub25Nb3VzZUxlYXZlLGw9dGhpcy52YWx1ZSxzPVtdLmNvbmNhdChsKTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOmMoQm4sciYmMT09PXMubGVuZ3RoJiZcIlwiLmNvbmNhdChCbixcIi0tc2VsZWN0UmFuZ2VcIiksaSYmXCJcIi5jb25jYXQoQm4sXCItLWRvdWJsZVZpZXdcIiksdCkscmVmOm59LHRoaXMucmVuZGVyTmF2aWdhdGlvbigpLG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpcIlwiLmNvbmNhdChCbixcIl9fdmlld0NvbnRhaW5lclwiKSxvbkJsdXI6cj9hOm51bGwsb25Nb3VzZUxlYXZlOnI/YTpudWxsfSx0aGlzLnJlbmRlckNvbnRlbnQoKSxpJiZ0aGlzLnJlbmRlckNvbnRlbnQoITApKSl9fV0sbiYmZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fSh0LnByb3RvdHlwZSxuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInByb3RvdHlwZVwiLHt3cml0YWJsZTohMX0pLGx9KHIuQ29tcG9uZW50KTtRbi5kZWZhdWx0UHJvcHM9e2dvVG9SYW5nZVN0YXJ0T25TZWxlY3Q6ITAsbWF4RGF0ZTpEbixtYXhEZXRhaWw6XCJtb250aFwiLG1pbkRhdGU6QW4sbWluRGV0YWlsOlwiY2VudHVyeVwiLHJldHVyblZhbHVlOlwic3RhcnRcIixzaG93TmF2aWdhdGlvbjohMCxzaG93TmVpZ2hib3JpbmdNb250aDohMH07dmFyIEpuPWEoKS5pbnN0YW5jZU9mKERhdGUpLGVyPWEoKS5vbmVPZlR5cGUoW2EoKS5zdHJpbmcsWmVdKTtRbi5wcm9wVHlwZXM9e2FjdGl2ZVN0YXJ0RGF0ZTpKbixhbGxvd1BhcnRpYWxSYW5nZTphKCkuYm9vbCxjYWxlbmRhclR5cGU6SGUsY2xhc3NOYW1lOmtlLGRlZmF1bHRBY3RpdmVTdGFydERhdGU6Sm4sZGVmYXVsdFZhbHVlOmVyLGRlZmF1bHRWaWV3OkFlLGZvcm1hdERheTphKCkuZnVuYyxmb3JtYXRMb25nRGF0ZTphKCkuZnVuYyxmb3JtYXRNb250aDphKCkuZnVuYyxmb3JtYXRNb250aFllYXI6YSgpLmZ1bmMsZm9ybWF0U2hvcnRXZWVrZGF5OmEoKS5mdW5jLGZvcm1hdFdlZWtkYXk6YSgpLmZ1bmMsZm9ybWF0WWVhcjphKCkuZnVuYyxnb1RvUmFuZ2VTdGFydE9uU2VsZWN0OmEoKS5ib29sLGlucHV0UmVmOkllLGxvY2FsZTphKCkuc3RyaW5nLG1heERhdGU6UmUsbWF4RGV0YWlsOmEoKS5vbmVPZigkbiksbWluRGF0ZTpWZSxtaW5EZXRhaWw6YSgpLm9uZU9mKCRuKSxuYXZpZ2F0aW9uQXJpYUxhYmVsOmEoKS5zdHJpbmcsbmF2aWdhdGlvbkFyaWFMaXZlOmEoKS5vbmVPZihbXCJvZmZcIixcInBvbGl0ZVwiLFwiYXNzZXJ0aXZlXCJdKSxuYXZpZ2F0aW9uTGFiZWw6YSgpLmZ1bmMsbmV4dDJBcmlhTGFiZWw6YSgpLnN0cmluZyxuZXh0MkxhYmVsOmEoKS5ub2RlLG5leHRBcmlhTGFiZWw6YSgpLnN0cmluZyxuZXh0TGFiZWw6YSgpLm5vZGUsb25BY3RpdmVTdGFydERhdGVDaGFuZ2U6YSgpLmZ1bmMsb25DaGFuZ2U6YSgpLmZ1bmMsb25DbGlja0RheTphKCkuZnVuYyxvbkNsaWNrRGVjYWRlOmEoKS5mdW5jLG9uQ2xpY2tNb250aDphKCkuZnVuYyxvbkNsaWNrV2Vla051bWJlcjphKCkuZnVuYyxvbkNsaWNrWWVhcjphKCkuZnVuYyxvbkRyaWxsRG93bjphKCkuZnVuYyxvbkRyaWxsVXA6YSgpLmZ1bmMsb25WaWV3Q2hhbmdlOmEoKS5mdW5jLHByZXYyQXJpYUxhYmVsOmEoKS5zdHJpbmcscHJldjJMYWJlbDphKCkubm9kZSxwcmV2QXJpYUxhYmVsOmEoKS5zdHJpbmcscHJldkxhYmVsOmEoKS5ub2RlLHJldHVyblZhbHVlOmEoKS5vbmVPZihbXCJzdGFydFwiLFwiZW5kXCIsXCJyYW5nZVwiXSksc2VsZWN0UmFuZ2U6YSgpLmJvb2wsc2hvd0RvdWJsZVZpZXc6YSgpLmJvb2wsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczphKCkuYm9vbCxzaG93TmF2aWdhdGlvbjphKCkuYm9vbCxzaG93TmVpZ2hib3JpbmdNb250aDphKCkuYm9vbCxzaG93V2Vla051bWJlcnM6YSgpLmJvb2wsdGlsZUNsYXNzTmFtZTphKCkub25lT2ZUeXBlKFthKCkuZnVuYyxrZV0pLHRpbGVDb250ZW50OmEoKS5vbmVPZlR5cGUoW2EoKS5mdW5jLGEoKS5ub2RlXSksdGlsZURpc2FibGVkOmEoKS5mdW5jLHZhbHVlOmVyLHZpZXc6QWV9O2NvbnN0IHRyPVFufSw1MjUxOihlLHQsbik9PntuKDc0MTgpO3ZhciByPW4oNjY4OSksbz02MDEwMztpZih0LkZyYWdtZW50PTYwMTA3LFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcil7dmFyIGk9U3ltYm9sLmZvcjtvPWkoXCJyZWFjdC5lbGVtZW50XCIpLHQuRnJhZ21lbnQ9aShcInJlYWN0LmZyYWdtZW50XCIpfXZhciBhPXIuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIsbD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGM9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtmdW5jdGlvbiBzKGUsdCxuKXt2YXIgcixpPXt9LHM9bnVsbCx1PW51bGw7Zm9yKHIgaW4gdm9pZCAwIT09biYmKHM9XCJcIituKSx2b2lkIDAhPT10LmtleSYmKHM9XCJcIit0LmtleSksdm9pZCAwIT09dC5yZWYmJih1PXQucmVmKSx0KWwuY2FsbCh0LHIpJiYhYy5oYXNPd25Qcm9wZXJ0eShyKSYmKGlbcl09dFtyXSk7aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKHIgaW4gdD1lLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT1pW3JdJiYoaVtyXT10W3JdKTtyZXR1cm57JCR0eXBlb2Y6byx0eXBlOmUsa2V5OnMscmVmOnUscHJvcHM6aSxfb3duZXI6YS5jdXJyZW50fX10LmpzeD1zLHQuanN4cz1zfSw1ODkzOihlLHQsbik9PntlLmV4cG9ydHM9big1MjUxKX0sMzU3MzooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9big2NTUpLG89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIE1hdGgubWF4KE1hdGgubWluKG4sdCksZSl9fSxpPWZ1bmN0aW9uKGUpe3JldHVybiBlJTE/TnVtYmVyKGUudG9GaXhlZCg1KSk6ZX0sYT0vKC0pPyhbXFxkXSpcXC4/W1xcZF0pKy9nLGw9LygjWzAtOWEtZl17Nn18I1swLTlhLWZdezN9fCMoPzpbMC05YS1mXXsyfSl7Miw0fXwocmdifGhzbClhP1xcKCgtP1tcXGRcXC5dKyU/WyxcXHNdKyl7MiwzfVxccypcXC8qXFxzKltcXGRcXC5dKyU/XFwpKS9naSxjPS9eKCNbMC05YS1mXXszfXwjKD86WzAtOWEtZl17Mn0pezIsNH18KHJnYnxoc2wpYT9cXCgoLT9bXFxkXFwuXSslP1ssXFxzXSspezIsM31cXHMqXFwvKlxccypbXFxkXFwuXSslP1xcKSkkL2k7ZnVuY3Rpb24gcyhlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZX12YXIgdT17dGVzdDpmdW5jdGlvbihlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZX0scGFyc2U6cGFyc2VGbG9hdCx0cmFuc2Zvcm06ZnVuY3Rpb24oZSl7cmV0dXJuIGV9fSxkPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSx1KSx7dHJhbnNmb3JtOm8oMCwxKX0pLGY9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHUpLHtkZWZhdWx0OjF9KSxwPWZ1bmN0aW9uKGUpe3JldHVybnt0ZXN0OmZ1bmN0aW9uKHQpe3JldHVybiBzKHQpJiZ0LmVuZHNXaXRoKGUpJiYxPT09dC5zcGxpdChcIiBcIikubGVuZ3RofSxwYXJzZTpwYXJzZUZsb2F0LHRyYW5zZm9ybTpmdW5jdGlvbih0KXtyZXR1cm5cIlwiK3QrZX19fSxDPXAoXCJkZWdcIiksaD1wKFwiJVwiKSx2PXAoXCJweFwiKSxnPXAoXCJ2aFwiKSxtPXAoXCJ2d1wiKSx3PXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxoKSx7cGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGgucGFyc2UoZSkvMTAwfSx0cmFuc2Zvcm06ZnVuY3Rpb24oZSl7cmV0dXJuIGgudHJhbnNmb3JtKDEwMCplKX19KSx5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBCb29sZWFuKHMobikmJmMudGVzdChuKSYmbi5zdGFydHNXaXRoKGUpfHx0JiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KSl9fSxiPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG87aWYoIXMocikpcmV0dXJuIHI7dmFyIGk9ci5tYXRjaChhKSxsPWlbMF0sYz1pWzFdLHU9aVsyXSxkPWlbM107cmV0dXJuKG89e30pW2VdPXBhcnNlRmxvYXQobCksb1t0XT1wYXJzZUZsb2F0KGMpLG9bbl09cGFyc2VGbG9hdCh1KSxvLmFscGhhPXZvaWQgMCE9PWQ/cGFyc2VGbG9hdChkKToxLG99fSx4PXt0ZXN0OnkoXCJoc2xcIixcImh1ZVwiKSxwYXJzZTpiKFwiaHVlXCIsXCJzYXR1cmF0aW9uXCIsXCJsaWdodG5lc3NcIiksdHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3ZhciB0PWUuaHVlLG49ZS5zYXR1cmF0aW9uLHI9ZS5saWdodG5lc3Msbz1lLmFscGhhLGE9dm9pZCAwPT09bz8xOm87cmV0dXJuXCJoc2xhKFwiK01hdGgucm91bmQodCkrXCIsIFwiK2gudHJhbnNmb3JtKGkobikpK1wiLCBcIitoLnRyYW5zZm9ybShpKHIpKStcIiwgXCIraShkLnRyYW5zZm9ybShhKSkrXCIpXCJ9fSxPPW8oMCwyNTUpLEw9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHUpLHt0cmFuc2Zvcm06ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucm91bmQoTyhlKSl9fSksXz17dGVzdDp5KFwicmdiXCIsXCJyZWRcIikscGFyc2U6YihcInJlZFwiLFwiZ3JlZW5cIixcImJsdWVcIiksdHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3ZhciB0PWUucmVkLG49ZS5ncmVlbixyPWUuYmx1ZSxvPWUuYWxwaGEsYT12b2lkIDA9PT1vPzE6bztyZXR1cm5cInJnYmEoXCIrTC50cmFuc2Zvcm0odCkrXCIsIFwiK0wudHJhbnNmb3JtKG4pK1wiLCBcIitMLnRyYW5zZm9ybShyKStcIiwgXCIraShkLnRyYW5zZm9ybShhKSkrXCIpXCJ9fSxNPXt0ZXN0OnkoXCIjXCIpLHBhcnNlOmZ1bmN0aW9uKGUpe3ZhciB0PVwiXCIsbj1cIlwiLHI9XCJcIixvPVwiXCI7cmV0dXJuIGUubGVuZ3RoPjU/KHQ9ZS5zdWJzdHIoMSwyKSxuPWUuc3Vic3RyKDMsMikscj1lLnN1YnN0cig1LDIpLG89ZS5zdWJzdHIoNywyKSk6KHQ9ZS5zdWJzdHIoMSwxKSxuPWUuc3Vic3RyKDIsMSkscj1lLnN1YnN0cigzLDEpLG89ZS5zdWJzdHIoNCwxKSx0Kz10LG4rPW4scis9cixvKz1vKSx7cmVkOnBhcnNlSW50KHQsMTYpLGdyZWVuOnBhcnNlSW50KG4sMTYpLGJsdWU6cGFyc2VJbnQociwxNiksYWxwaGE6bz9wYXJzZUludChvLDE2KS8yNTU6MX19LHRyYW5zZm9ybTpfLnRyYW5zZm9ybX0saj17dGVzdDpmdW5jdGlvbihlKXtyZXR1cm4gXy50ZXN0KGUpfHxNLnRlc3QoZSl8fHgudGVzdChlKX0scGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIF8udGVzdChlKT9fLnBhcnNlKGUpOngudGVzdChlKT94LnBhcnNlKGUpOk0ucGFyc2UoZSl9LHRyYW5zZm9ybTpmdW5jdGlvbihlKXtyZXR1cm4gcyhlKT9lOmUuaGFzT3duUHJvcGVydHkoXCJyZWRcIik/Xy50cmFuc2Zvcm0oZSk6eC50cmFuc2Zvcm0oZSl9fSxFPVwiJHtjfVwiLFM9XCIke259XCI7ZnVuY3Rpb24gUChlKXt2YXIgdD1bXSxuPTAscj1lLm1hdGNoKGwpO3ImJihuPXIubGVuZ3RoLGU9ZS5yZXBsYWNlKGwsRSksdC5wdXNoLmFwcGx5KHQsci5tYXAoai5wYXJzZSkpKTt2YXIgbz1lLm1hdGNoKGEpO3JldHVybiBvJiYoZT1lLnJlcGxhY2UoYSxTKSx0LnB1c2guYXBwbHkodCxvLm1hcCh1LnBhcnNlKSkpLHt2YWx1ZXM6dCxudW1Db2xvcnM6bix0b2tlbmlzZWQ6ZX19ZnVuY3Rpb24gSChlKXtyZXR1cm4gUChlKS52YWx1ZXN9ZnVuY3Rpb24gayhlKXt2YXIgdD1QKGUpLG49dC52YWx1ZXMscj10Lm51bUNvbG9ycyxvPXQudG9rZW5pc2VkLGE9bi5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1vLG49MDtuPGE7bisrKXQ9dC5yZXBsYWNlKG48cj9FOlMsbjxyP2oudHJhbnNmb3JtKGVbbl0pOmkoZVtuXSkpO3JldHVybiB0fX12YXIgVj1mdW5jdGlvbihlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT8wOmV9LFI9e3Rlc3Q6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG87cmV0dXJuIGlzTmFOKGUpJiZzKGUpJiYobnVsbCE9PShuPW51bGw9PT0odD1lLm1hdGNoKGEpKXx8dm9pZCAwPT09dD92b2lkIDA6dC5sZW5ndGgpJiZ2b2lkIDAhPT1uP246MCkrKG51bGwhPT0obz1udWxsPT09KHI9ZS5tYXRjaChsKSl8fHZvaWQgMD09PXI/dm9pZCAwOnIubGVuZ3RoKSYmdm9pZCAwIT09bz9vOjApPjB9LHBhcnNlOkgsY3JlYXRlVHJhbnNmb3JtZXI6ayxnZXRBbmltYXRhYmxlTm9uZTpmdW5jdGlvbihlKXt2YXIgdD1IKGUpO3JldHVybiBrKGUpKHQubWFwKFYpKX19LEk9bmV3IFNldChbXCJicmlnaHRuZXNzXCIsXCJjb250cmFzdFwiLFwic2F0dXJhdGVcIixcIm9wYWNpdHlcIl0pO2Z1bmN0aW9uIFooZSl7dmFyIHQ9ZS5zbGljZSgwLC0xKS5zcGxpdChcIihcIiksbj10WzBdLHI9dFsxXTtpZihcImRyb3Atc2hhZG93XCI9PT1uKXJldHVybiBlO3ZhciBvPShyLm1hdGNoKGEpfHxbXSlbMF07aWYoIW8pcmV0dXJuIGU7dmFyIGk9ci5yZXBsYWNlKG8sXCJcIiksbD1JLmhhcyhuKT8xOjA7cmV0dXJuIG8hPT1yJiYobCo9MTAwKSxuK1wiKFwiK2wraStcIilcIn12YXIgVD0vKFthLXotXSopXFwoLio/XFwpL2csQT1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sUikse2dldEFuaW1hdGFibGVOb25lOmZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goVCk7cmV0dXJuIHQ/dC5tYXAoWikuam9pbihcIiBcIik6ZX19KTt0LmFscGhhPWQsdC5jb2xvcj1qLHQuY29tcGxleD1SLHQuZGVncmVlcz1DLHQuZmlsdGVyPUEsdC5oZXg9TSx0LmhzbGE9eCx0Lm51bWJlcj11LHQucGVyY2VudD1oLHQucHJvZ3Jlc3NQZXJjZW50YWdlPXcsdC5weD12LHQucmdiVW5pdD1MLHQucmdiYT1fLHQuc2NhbGU9Zix0LnZoPWcsdC52dz1tfSw4Mzg4OihlLHQsbik9PntuLnIodCksbi5kKHQse2ZvY3VzYWJsZTooKT0+eSxpc0ZvY3VzYWJsZTooKT0+Tyxpc1RhYmJhYmxlOigpPT5iLHRhYmJhYmxlOigpPT53fSk7dmFyIHI9W1wiaW5wdXQ6bm90KFtpbmVydF0pXCIsXCJzZWxlY3Q6bm90KFtpbmVydF0pXCIsXCJ0ZXh0YXJlYTpub3QoW2luZXJ0XSlcIixcImFbaHJlZl06bm90KFtpbmVydF0pXCIsXCJidXR0b246bm90KFtpbmVydF0pXCIsXCJbdGFiaW5kZXhdOm5vdChzbG90KTpub3QoW2luZXJ0XSlcIixcImF1ZGlvW2NvbnRyb2xzXTpub3QoW2luZXJ0XSlcIixcInZpZGVvW2NvbnRyb2xzXTpub3QoW2luZXJ0XSlcIiwnW2NvbnRlbnRlZGl0YWJsZV06bm90KFtjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiXSk6bm90KFtpbmVydF0pJyxcImRldGFpbHM+c3VtbWFyeTpmaXJzdC1vZi10eXBlOm5vdChbaW5lcnRdKVwiLFwiZGV0YWlsczpub3QoW2luZXJ0XSlcIl0sbz1yLmpvaW4oXCIsXCIpLGk9XCJ1bmRlZmluZWRcIj09dHlwZW9mIEVsZW1lbnQsYT1pP2Z1bmN0aW9uKCl7fTpFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzfHxFbGVtZW50LnByb3RvdHlwZS5tc01hdGNoZXNTZWxlY3Rvcnx8RWxlbWVudC5wcm90b3R5cGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yLGw9IWkmJkVsZW1lbnQucHJvdG90eXBlLmdldFJvb3ROb2RlP2Z1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBudWxsPT1lfHxudWxsPT09KHQ9ZS5nZXRSb290Tm9kZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuY2FsbChlKX06ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmUub3duZXJEb2N1bWVudH0sYz1mdW5jdGlvbiBlKHQsbil7dmFyIHI7dm9pZCAwPT09biYmKG49ITApO3ZhciBvPW51bGw9PXR8fG51bGw9PT0ocj10LmdldEF0dHJpYnV0ZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuY2FsbCh0LFwiaW5lcnRcIik7cmV0dXJuXCJcIj09PW98fFwidHJ1ZVwiPT09b3x8biYmdCYmZSh0LnBhcmVudE5vZGUpfSxzPWZ1bmN0aW9uKGUsdCxuKXtpZihjKGUpKXJldHVybltdO3ZhciByPUFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShlLnF1ZXJ5U2VsZWN0b3JBbGwobykpO3JldHVybiB0JiZhLmNhbGwoZSxvKSYmci51bnNoaWZ0KGUpLHIuZmlsdGVyKG4pfSx1PWZ1bmN0aW9uIGUodCxuLHIpe2Zvcih2YXIgaT1bXSxsPUFycmF5LmZyb20odCk7bC5sZW5ndGg7KXt2YXIgcz1sLnNoaWZ0KCk7aWYoIWMocywhMSkpaWYoXCJTTE9UXCI9PT1zLnRhZ05hbWUpe3ZhciB1PXMuYXNzaWduZWRFbGVtZW50cygpLGQ9ZSh1Lmxlbmd0aD91OnMuY2hpbGRyZW4sITAscik7ci5mbGF0dGVuP2kucHVzaC5hcHBseShpLGQpOmkucHVzaCh7c2NvcGVQYXJlbnQ6cyxjYW5kaWRhdGVzOmR9KX1lbHNle2EuY2FsbChzLG8pJiZyLmZpbHRlcihzKSYmKG58fCF0LmluY2x1ZGVzKHMpKSYmaS5wdXNoKHMpO3ZhciBmPXMuc2hhZG93Um9vdHx8XCJmdW5jdGlvblwiPT10eXBlb2Ygci5nZXRTaGFkb3dSb290JiZyLmdldFNoYWRvd1Jvb3QocykscD0hYyhmLCExKSYmKCFyLnNoYWRvd1Jvb3RGaWx0ZXJ8fHIuc2hhZG93Um9vdEZpbHRlcihzKSk7aWYoZiYmcCl7dmFyIEM9ZSghMD09PWY/cy5jaGlsZHJlbjpmLmNoaWxkcmVuLCEwLHIpO3IuZmxhdHRlbj9pLnB1c2guYXBwbHkoaSxDKTppLnB1c2goe3Njb3BlUGFyZW50OnMsY2FuZGlkYXRlczpDfSl9ZWxzZSBsLnVuc2hpZnQuYXBwbHkobCxzLmNoaWxkcmVuKX19cmV0dXJuIGl9LGQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50YWJJbmRleDwwJiYodHx8L14oQVVESU98VklERU98REVUQUlMUykkLy50ZXN0KGUudGFnTmFtZSl8fGZ1bmN0aW9uKGUpe3ZhciB0LG49bnVsbD09ZXx8bnVsbD09PSh0PWUuZ2V0QXR0cmlidXRlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5jYWxsKGUsXCJjb250ZW50ZWRpdGFibGVcIik7cmV0dXJuXCJcIj09PW58fFwidHJ1ZVwiPT09bn0oZSkpJiZpc05hTihwYXJzZUludChlLmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpLDEwKSk/MDplLnRhYkluZGV4fSxmPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudGFiSW5kZXg9PT10LnRhYkluZGV4P2UuZG9jdW1lbnRPcmRlci10LmRvY3VtZW50T3JkZXI6ZS50YWJJbmRleC10LnRhYkluZGV4fSxwPWZ1bmN0aW9uKGUpe3JldHVyblwiSU5QVVRcIj09PWUudGFnTmFtZX0sQz1mdW5jdGlvbihlKXt2YXIgdD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49dC53aWR0aCxyPXQuaGVpZ2h0O3JldHVybiAwPT09biYmMD09PXJ9LGg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hKHQuZGlzYWJsZWR8fGModCl8fGZ1bmN0aW9uKGUpe3JldHVybiBwKGUpJiZcImhpZGRlblwiPT09ZS50eXBlfSh0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRpc3BsYXlDaGVjayxyPXQuZ2V0U2hhZG93Um9vdDtpZihcImhpZGRlblwiPT09Z2V0Q29tcHV0ZWRTdHlsZShlKS52aXNpYmlsaXR5KXJldHVybiEwO3ZhciBvPWEuY2FsbChlLFwiZGV0YWlscz5zdW1tYXJ5OmZpcnN0LW9mLXR5cGVcIik/ZS5wYXJlbnRFbGVtZW50OmU7aWYoYS5jYWxsKG8sXCJkZXRhaWxzOm5vdChbb3Blbl0pICpcIikpcmV0dXJuITA7aWYobiYmXCJmdWxsXCIhPT1uJiZcImxlZ2FjeS1mdWxsXCIhPT1uKXtpZihcIm5vbi16ZXJvLWFyZWFcIj09PW4pcmV0dXJuIEMoZSl9ZWxzZXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiByKXtmb3IodmFyIGk9ZTtlOyl7dmFyIGM9ZS5wYXJlbnRFbGVtZW50LHM9bChlKTtpZihjJiYhYy5zaGFkb3dSb290JiYhMD09PXIoYykpcmV0dXJuIEMoZSk7ZT1lLmFzc2lnbmVkU2xvdD9lLmFzc2lnbmVkU2xvdDpjfHxzPT09ZS5vd25lckRvY3VtZW50P2M6cy5ob3N0fWU9aX1pZihmdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxpPWUmJmwoZSksYT1udWxsPT09KHQ9aSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaG9zdCxjPSExO2lmKGkmJmkhPT1lKWZvcihjPSEhKG51bGwhPT0obj1hKSYmdm9pZCAwIT09biYmbnVsbCE9PShyPW4ub3duZXJEb2N1bWVudCkmJnZvaWQgMCE9PXImJnIuY29udGFpbnMoYSl8fG51bGwhPWUmJm51bGwhPT0obz1lLm93bmVyRG9jdW1lbnQpJiZ2b2lkIDAhPT1vJiZvLmNvbnRhaW5zKGUpKTshYyYmYTspe3ZhciBzLHUsZDtjPSEobnVsbD09PSh1PWE9bnVsbD09PShzPWk9bChhKSl8fHZvaWQgMD09PXM/dm9pZCAwOnMuaG9zdCl8fHZvaWQgMD09PXV8fG51bGw9PT0oZD11Lm93bmVyRG9jdW1lbnQpfHx2b2lkIDA9PT1kfHwhZC5jb250YWlucyhhKSl9cmV0dXJuIGN9KGUpKXJldHVybiFlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoO2lmKFwibGVnYWN5LWZ1bGxcIiE9PW4pcmV0dXJuITB9cmV0dXJuITF9KHQsZSl8fGZ1bmN0aW9uKGUpe3JldHVyblwiREVUQUlMU1wiPT09ZS50YWdOYW1lJiZBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoZS5jaGlsZHJlbikuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuXCJTVU1NQVJZXCI9PT1lLnRhZ05hbWV9KSl9KHQpfHxmdW5jdGlvbihlKXtpZigvXihJTlBVVHxCVVRUT058U0VMRUNUfFRFWFRBUkVBKSQvLnRlc3QoZS50YWdOYW1lKSlmb3IodmFyIHQ9ZS5wYXJlbnRFbGVtZW50O3Q7KXtpZihcIkZJRUxEU0VUXCI9PT10LnRhZ05hbWUmJnQuZGlzYWJsZWQpe2Zvcih2YXIgbj0wO248dC5jaGlsZHJlbi5sZW5ndGg7bisrKXt2YXIgcj10LmNoaWxkcmVuLml0ZW0obik7aWYoXCJMRUdFTkRcIj09PXIudGFnTmFtZSlyZXR1cm4hIWEuY2FsbCh0LFwiZmllbGRzZXRbZGlzYWJsZWRdICpcIil8fCFyLmNvbnRhaW5zKGUpfXJldHVybiEwfXQ9dC5wYXJlbnRFbGVtZW50fXJldHVybiExfSh0KSl9LHY9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gcChlKSYmXCJyYWRpb1wiPT09ZS50eXBlfShlKSYmIWZ1bmN0aW9uKGUpe2lmKCFlLm5hbWUpcmV0dXJuITA7dmFyIHQsbj1lLmZvcm18fGwoZSkscj1mdW5jdGlvbihlKXtyZXR1cm4gbi5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwicmFkaW9cIl1bbmFtZT1cIicrZSsnXCJdJyl9O2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJnZvaWQgMCE9PXdpbmRvdy5DU1MmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHdpbmRvdy5DU1MuZXNjYXBlKXQ9cih3aW5kb3cuQ1NTLmVzY2FwZShlLm5hbWUpKTtlbHNlIHRyeXt0PXIoZS5uYW1lKX1jYXRjaChlKXtyZXR1cm4gY29uc29sZS5lcnJvcihcIkxvb2tzIGxpa2UgeW91IGhhdmUgYSByYWRpbyBidXR0b24gd2l0aCBhIG5hbWUgYXR0cmlidXRlIGNvbnRhaW5pbmcgaW52YWxpZCBDU1Mgc2VsZWN0b3IgY2hhcmFjdGVycyBhbmQgbmVlZCB0aGUgQ1NTLmVzY2FwZSBwb2x5ZmlsbDogJXNcIixlLm1lc3NhZ2UpLCExfXZhciBvPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaWYoZVtuXS5jaGVja2VkJiZlW25dLmZvcm09PT10KXJldHVybiBlW25dfSh0LGUuZm9ybSk7cmV0dXJuIW98fG89PT1lfShlKX0odCl8fGQodCk8MHx8IWgoZSx0KSl9LGc9ZnVuY3Rpb24oZSl7dmFyIHQ9cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKSwxMCk7cmV0dXJuISEoaXNOYU4odCl8fHQ+PTApfSxtPWZ1bmN0aW9uIGUodCl7dmFyIG49W10scj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG8pe3ZhciBpPSEhdC5zY29wZVBhcmVudCxhPWk/dC5zY29wZVBhcmVudDp0LGw9ZChhLGkpLGM9aT9lKHQuY2FuZGlkYXRlcyk6YTswPT09bD9pP24ucHVzaC5hcHBseShuLGMpOm4ucHVzaChhKTpyLnB1c2goe2RvY3VtZW50T3JkZXI6byx0YWJJbmRleDpsLGl0ZW06dCxpc1Njb3BlOmksY29udGVudDpjfSl9KSksci5zb3J0KGYpLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5pc1Njb3BlP2UucHVzaC5hcHBseShlLHQuY29udGVudCk6ZS5wdXNoKHQuY29udGVudCksZX0pLFtdKS5jb25jYXQobil9LHc9ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gbj0odD10fHx7fSkuZ2V0U2hhZG93Um9vdD91KFtlXSx0LmluY2x1ZGVDb250YWluZXIse2ZpbHRlcjp2LmJpbmQobnVsbCx0KSxmbGF0dGVuOiExLGdldFNoYWRvd1Jvb3Q6dC5nZXRTaGFkb3dSb290LHNoYWRvd1Jvb3RGaWx0ZXI6Z30pOnMoZSx0LmluY2x1ZGVDb250YWluZXIsdi5iaW5kKG51bGwsdCkpLG0obil9LHk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4odD10fHx7fSkuZ2V0U2hhZG93Um9vdD91KFtlXSx0LmluY2x1ZGVDb250YWluZXIse2ZpbHRlcjpoLmJpbmQobnVsbCx0KSxmbGF0dGVuOiEwLGdldFNoYWRvd1Jvb3Q6dC5nZXRTaGFkb3dSb290fSk6cyhlLHQuaW5jbHVkZUNvbnRhaW5lcixoLmJpbmQobnVsbCx0KSl9LGI9ZnVuY3Rpb24oZSx0KXtpZih0PXR8fHt9LCFlKXRocm93IG5ldyBFcnJvcihcIk5vIG5vZGUgcHJvdmlkZWRcIik7cmV0dXJuITEhPT1hLmNhbGwoZSxvKSYmdih0LGUpfSx4PXIuY29uY2F0KFwiaWZyYW1lXCIpLmpvaW4oXCIsXCIpLE89ZnVuY3Rpb24oZSx0KXtpZih0PXR8fHt9LCFlKXRocm93IG5ldyBFcnJvcihcIk5vIG5vZGUgcHJvdmlkZWRcIik7cmV0dXJuITEhPT1hLmNhbGwoZSx4KSYmaCh0LGUpfX0sNDI0OTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJ1dHRvblRleHRPbmx5PXQuQnV0dG9uU2Vjb25kYXJ5PXQuQnV0dG9uUHJpbWFyeT10LkJ1dHRvbj12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGE9byhuKDc1MTgpKSxsPW4oMTMzNSksYz1uKDk1MDcpLHM9big2MTI2KTt0LkJ1dHRvbj1lPT57dmFye2xhYmVsOnQsY2hpbGRyZW46bixzaXplOm89XCJiYXNlXCIsc2hhcGU6YT1cInNxdWFyZVwiLGtpbmQ6bD1cInByaW1hcnlcIixsYXlvdXQ6Yz1cImZpdFwiLGhyZWY6c309ZSxmPXIoZSxbXCJsYWJlbFwiLFwiY2hpbGRyZW5cIixcInNpemVcIixcInNoYXBlXCIsXCJraW5kXCIsXCJsYXlvdXRcIixcImhyZWZcIl0pO3JldHVybigwLGkuanN4KSh1LE9iamVjdC5hc3NpZ24oe2FzOnM/XCJhXCI6XCJidXR0b25cIixzaXplOm8sc2hhcGU6YSxraW5kOmwsbGF5b3V0OmN9LGYse2NoaWxkcmVuOnQ/KDAsaS5qc3gpKGQsT2JqZWN0LmFzc2lnbih7YWxpZ25JdGVtczpcImNlbnRlclwiLGp1c3RpZnlDb250ZW50OlwiY2VudGVyXCJ9LHtjaGlsZHJlbjp0fSkpOm59KSl9O2NvbnN0IHU9YS5kZWZhdWx0LmJ1dHRvbmBcbiAgLyogRGVmYXVsdCB2YWx1ZXMgdGhhdCBnZXQgb3ZlcnJpZGRlbiBieSB2YXJpYW50cyAqL1xuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kfTtcbiAgYm9yZGVyOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0QmFja2dyb3VuZH07XG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5VGV4dH07XG5cbiAgLyogSW5qZWN0IHZhcmlhbnRzICovXG4gICR7KDAsYy5nZXRWYXJpYW50Q1NTKShzLnZhcmlhbnRzLHMuVmFyaWFudC5zaXplKX1cbiAgJHsoMCxjLmdldFZhcmlhbnRDU1MpKHMudmFyaWFudHMscy5WYXJpYW50LnNoYXBlKX1cbiAgJHsoMCxjLmdldFZhcmlhbnRDU1MpKHMudmFyaWFudHMscy5WYXJpYW50LmtpbmQpfVxuICAkeygwLGMuZ2V0VmFyaWFudENTUykocy52YXJpYW50cyxzLlZhcmlhbnQubGF5b3V0KX1cblxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAgb3V0bGluZTogbm9uZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5saW5lSGVpZ2h0LnVpfTtcbiAgZm9udC13ZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuZm9udFdlaWdodC5ib2xkfTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbik7XG5cbiAgJjpub3QoOmRpc2FibGVkKSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgJjpkaXNhYmxlZCxcbiAgJjphY3RpdmU6ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0UGxhY2Vob2xkZXJ9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIH1cbmAsZD0oMCxhLmRlZmF1bHQpKGwuQm94KWBcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YDAgJHtlLnB4LnhzbWFsbH1gfTtcbmA7dC5CdXR0b25QcmltYXJ5PWU9PigwLGkuanN4KSh0LkJ1dHRvbixPYmplY3QuYXNzaWduKHt9LGUse2tpbmQ6XCJwcmltYXJ5XCJ9KSksdC5CdXR0b25TZWNvbmRhcnk9ZT0+KDAsaS5qc3gpKHQuQnV0dG9uLE9iamVjdC5hc3NpZ24oe30sZSx7a2luZDpcInNlY29uZGFyeVwifSkpLHQuQnV0dG9uVGV4dE9ubHk9ZT0+KDAsaS5qc3gpKHQuQnV0dG9uLE9iamVjdC5hc3NpZ24oe30sZSx7a2luZDpcInRleHRPbmx5XCJ9KSl9LDYxMjY6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudmFyaWFudHM9dC5CdXR0b25TaGFwZT10LkJ1dHRvbkxheW91dD10LkJ1dHRvblNpemU9dC5CdXR0b25LaW5kPXQuVmFyaWFudD12b2lkIDA7Y29uc3Qgcj1uKDc1MTgpO3QuVmFyaWFudD17c2hhcGU6XCJzaGFwZVwiLHNpemU6XCJzaXplXCIsa2luZDpcImtpbmRcIixsYXlvdXQ6XCJsYXlvdXRcIn0sdC5CdXR0b25LaW5kPXtwcmltYXJ5OlwicHJpbWFyeVwiLHNlY29uZGFyeTpcInNlY29uZGFyeVwiLHRleHRPbmx5OlwidGV4dE9ubHlcIn0sdC5CdXR0b25TaXplPXtzbWFsbDpcInNtYWxsXCIsYmFzZTpcImJhc2VcIixsYXJnZTpcImxhcmdlXCJ9LHQuQnV0dG9uTGF5b3V0PXtmaXQ6XCJmaXRcIixmdWxsOlwiZnVsbFwifSx0LkJ1dHRvblNoYXBlPXtzcXVhcmU6XCJzcXVhcmVcIixwaWxsOlwicGlsbFwifSx0LnZhcmlhbnRzPXtbdC5WYXJpYW50LnNpemVdOntbdC5CdXR0b25TaXplLmJhc2VdOnIuY3NzYFxuICAgICAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH0gJHtlLnB4LmxhcmdlfWB9O1xuICAgICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICAgIGAsW3QuQnV0dG9uU2l6ZS5zbWFsbF06ci5jc3NgXG4gICAgICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnhzbWFsbH0gJHtlLnB4LmJhc2V9YH07XG4gICAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuc21hbGx9O1xuICAgIGAsW3QuQnV0dG9uU2l6ZS5sYXJnZV06ci5jc3NgXG4gICAgICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LmJhc2V9ICR7ZS5weC54bGFyZ2V9YH07XG4gICAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUubGFyZ2V9O1xuICAgIGB9LFt0LlZhcmlhbnQuc2hhcGVdOntbdC5CdXR0b25TaGFwZS5zcXVhcmVdOnIuY3NzYFxuICAgICAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICAgIGAsW3QuQnV0dG9uU2hhcGUucGlsbF06ci5jc3NgXG4gICAgICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5waWxsfTtcbiAgICBgfSxbdC5WYXJpYW50LmxheW91dF06e1t0LkJ1dHRvbkxheW91dC5maXRdOnIuY3NzYFxuICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgIGAsW3QuQnV0dG9uTGF5b3V0LmZ1bGxdOnIuY3NzYFxuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgYH0sW3QuVmFyaWFudC5raW5kXTp7W3QuQnV0dG9uS2luZC5wcmltYXJ5XTpyLmNzc2BcbiAgICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9O1xuICAgICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5fTtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnlIb3Zlcn07XG4gICAgICB9XG5cbiAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeUFjdGl2ZX07XG4gICAgICB9XG5cbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnlGb2N1c2VkfTtcbiAgICAgIH1cbiAgICBgLFt0LkJ1dHRvbktpbmQuc2Vjb25kYXJ5XTpyLmNzc2BcbiAgICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFNlY29uZGFyeX07XG4gICAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFNlY29uZGFyeX07XG4gICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kU2Vjb25kYXJ5VGV4dH07XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnlIb3Zlcn07XG4gICAgICB9XG5cbiAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kU2Vjb25kYXJ5QWN0aXZlfTtcbiAgICAgIH1cblxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kU2Vjb25kYXJ5Rm9jdXNlZH07XG4gICAgICB9XG4gICAgYCxbdC5CdXR0b25LaW5kLnRleHRPbmx5XTpyLmNzc2BcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuXG4gICAgICAmOmFjdGl2ZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgIH1cblxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Rm9jdXNlZH07XG4gICAgICB9XG4gICAgYH19fSw0MTMwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig0MjQ5KSx0KSxvKG4oNjEyNiksdCl9LDM5MTE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2FyZENvbnRhaW5lcj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpLGk9cihuKDc1MTgpKSxhPW4oOTUwNyksbD1uKDEzMzUpO3QuQ2FyZENvbnRhaW5lcj1lPT4oMCxvLmpzeCkoYyxPYmplY3QuYXNzaWduKHtzdHlsZTp7bWF4SGVpZ2h0OmUubWF4SGVpZ2h0LG92ZXJmbG93WTpcImF1dG9cIn0saWQ6XCJjYXJkLWNvbnRhaW5lclwiLFwiZGF0YS10ZXN0aWRcIjpcImNhcmQtY29udGFpbmVyXCJ9LHtjaGlsZHJlbjooMCxvLmpzeCkocyx7Y2hpbGRyZW46ZS5jaGlsZHJlbn0pfSkpO2NvbnN0IGM9KDAsaS5kZWZhdWx0KShsLkJveClgXG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kM307XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDV9O1xuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH0gJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9XG4gICAgJHsoe3RoZW1lOmV9KT0+ZS5weC5sYXJnZX0gMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgJHthLk1peGlucy5zY3JvbGxiYXIuYmFzZX07XG4gIGdhcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbmAscz1pLmRlZmF1bHQuZGl2YFxuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfSAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfSAwcHhcbiAgICAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICB3aWR0aDogMTAwJTtcbmB9LDEyNDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db2xsYXBzaWJsZUNhcmQ9dm9pZCAwO2NvbnN0IG89big1ODkzKSxpPW4oNjY4OSksYT1yKG4oNzUxOCkpLGw9bigzMTM2KSxjPW4oOTYzNCkscz1uKDEzMzUpLHU9bigzOTExKSxkPW4oNzc2OSksZj1uKDk1MDcpO3QuQ29sbGFwc2libGVDYXJkPWU9Pntjb25zdFt0LG5dPSgwLGkudXNlU3RhdGUpKGUuZXhwYW5kZWR8fCExKSxyPWU9PntuKG51bGwhPWU/ZTohdCl9O3JldHVybigwLG8uanN4cykocCxPYmplY3QuYXNzaWduKHtcImRhdGEtdGVzdGlkXCI6XCJjb2xsYXBzaWJsZS1jYXJkXCJ9LHtjaGlsZHJlbjpbKDAsby5qc3hzKShoLE9iamVjdC5hc3NpZ24oe1wiYXJpYS1leHBhbmRlZFwiOnQsXCJkYXRhLXRlc3RpZFwiOlwiaGVhZGluZy1jb250YWluZXJcIixzdHlsZTp7cG9zaXRpb246ZS5maXhlZEhlYWRlcj9cInN0aWNreVwiOnZvaWQgMCx0b3A6MH0sb25DbGljazooKT0+cigpLHRhYkluZGV4OjAsb25LZXlEb3duOmU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlXCJFbnRlclwiOmNhc2VcIlNwYWNlXCI6ZS5wcmV2ZW50RGVmYXVsdCgpLHIoKX19fSx7Y2hpbGRyZW46WygwLG8uanN4KShDLHtjaGlsZHJlbjplLnRpdGxlfSksKDAsby5qc3hzKShcImRpdlwiLE9iamVjdC5hc3NpZ24oe2lkOlwiaWNvbi1jb250YWluZXJcIn0se2NoaWxkcmVuOlt2b2lkIDAhPT1lLmJhZGdlVGV4dCYmKDAsby5qc3gpKGwuQmFkZ2Use2NvdW50OmUuYmFkZ2VUZXh0LGlkOlwiY29sbGFwc2libGUtY2FyZC1oZWFkaW5nLWJhZGdlXCIsXCJkYXRhLXRlc3RpZFwiOlwiY29sbGFwc2libGUtY2FyZC1oZWFkaW5nLWJhZGdlXCJ9KSwoMCxvLmpzeCkoYy5JY29uLHtpY29uOnQ/XCJDaGV2cm9uVXBJY29uXCI6XCJDaGV2cm9uRG93bkljb25cIn0pXX0pKV19KSksdCYmKDAsby5qc3gpKHUuQ2FyZENvbnRhaW5lcixPYmplY3QuYXNzaWduKHttYXhIZWlnaHQ6ZS5tYXhIZWlnaHR8fFwibm9uZVwifSx7Y2hpbGRyZW46KDAsby5qc3gpKFwiZGl2XCIse2NoaWxkcmVuOmUuY2hpbGRyZW59KX0pKV19KSl9O2NvbnN0IHA9YS5kZWZhdWx0LmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuYCxDPSgwLGEuZGVmYXVsdCkoZC5UZXh0KWBcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gICR7Zi5NaXhpbnMudGV4dE92ZXJmbG93fTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbmAsaD0oMCxhLmRlZmF1bHQpKHMuQm94KWBcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQzfTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNX07XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDV9O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBnYXA6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmxpbmVIZWlnaHQuaGVhZGluZ307XG4gIG91dGxpbmU6IG5vbmU7XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbik7XG4gIHdpZHRoOiAxMDAlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICNpY29uLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICB9XG5cbiAgI2NvbGxhcHNpYmxlLWNhcmQtaGVhZGluZy1iYWRnZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX07XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQyfTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ1fTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ1fTtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYm9yZGVyTmV1dHJhbH07XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5ib3JkZXJOZXV0cmFsfTtcbiAgfVxuYH0sNzQwMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMTI0KSx0KX0sOTY0NDooZSx0KT0+e3ZhciBuO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRXhwYW5kRGlyZWN0aW9uPXZvaWQgMCwobj10LkV4cGFuZERpcmVjdGlvbnx8KHQuRXhwYW5kRGlyZWN0aW9uPXt9KSlbbi5VcD0wXT1cIlVwXCIsbltuLkRvd249MV09XCJEb3duXCJ9LDQwMjE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRXhwYW5kYWJsZUJ1dHRvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpLGk9big2Njg5KSxhPW4oNDEzMCksbD1yKG4oNzUxOCkpLGM9big5NjM0KSxzPW4oOTE0MSksdT1uKDMwMzApLGQ9bigxMzM1KSxmPW4oOTY0NCk7dC5FeHBhbmRhYmxlQnV0dG9uPWU9Pnt2YXIgdCxuLHIsbCxjLHA7Y29uc3RbeSxiXT0oMCxpLnVzZVN0YXRlKSh7c2hvdzohMSxyZXF1ZXN0ZWRCeUNvbGxhcHNlOiExfSkseD17c2l6ZTplLnNpemUsa2luZDplLmtpbmQsZGlzYWJsZWQ6ZS5kaXNhYmxlZH0sTz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse3NoYXBlOmEuQnV0dG9uU2hhcGUuc3F1YXJlLFwiYXJpYS1sYWJlbFwiOm51bGwhPT0odD1lW1wiYXJpYS1sYWJlbFwiXSkmJnZvaWQgMCE9PXQ/dDpgUHJpbWFyeSBCdXR0b24gJHtlLnRpdGxlfWB9KSxMPW51bGwhPT0obj1lLmV4cGFuZERpcmVjdGlvbikmJnZvaWQgMCE9PW4/bjpmLkV4cGFuZERpcmVjdGlvbi5Eb3duO3JldHVybigwLGkudXNlRWZmZWN0KSgoKCk9PntpZigheS5yZXF1ZXN0ZWRCeUNvbGxhcHNlKXJldHVybjtjb25zdCBlPXNldFRpbWVvdXQoKCgpPT5iKHtyZXF1ZXN0ZWRCeUNvbGxhcHNlOiExLHNob3c6ITF9KSksMjAwKTtyZXR1cm4oKT0+Y2xlYXJUaW1lb3V0KGUpfSksW3kucmVxdWVzdGVkQnlDb2xsYXBzZV0pLCgwLG8uanN4cykodyx7Y2hpbGRyZW46WygwLG8uanN4cykobSx7Y2hpbGRyZW46WygwLG8uanN4KShoLE9iamVjdC5hc3NpZ24oe30sTyx7Y2hpbGRyZW46KDAsby5qc3gpKHYse2NoaWxkcmVuOm51bGwhPT0ocj1lLmNoaWxkcmVuKSYmdm9pZCAwIT09cj9yOk8udGl0bGV9KX0pKSxlLnNlY29uZGFyeUJ1dHRvbnMmJmUuc2Vjb25kYXJ5QnV0dG9ucy5sZW5ndGg+MCYmKDAsby5qc3gpKGQuQm94LE9iamVjdC5hc3NpZ24oe2lkOlwiZHJvcGRvd24tY29udGFpbmVyXCJ9LHtjaGlsZHJlbjooMCxvLmpzeHMpKGcsT2JqZWN0LmFzc2lnbih7fSx4LHtyb2xlOlwiY29tYm9ib3hcIixvbkNsaWNrOigpPT57eS5yZXF1ZXN0ZWRCeUNvbGxhcHNlfHxiKHtyZXF1ZXN0ZWRCeUNvbGxhcHNlOiExLHNob3c6IXkuc2hvd30pfSxcImFyaWEtbGFiZWxcIjpcIkV4cGFuZCBTZWNvbmRhcnkgQnV0dG9ucyBQYW5lbFwiLFwiYXJpYS1leHBhbmRlZFwiOnkuc2hvd30se2NoaWxkcmVuOltMPT09Zi5FeHBhbmREaXJlY3Rpb24uRG93biYmKDAsby5qc3gpKEMse2tpbmQ6bnVsbCE9PShsPWUua2luZCkmJnZvaWQgMCE9PWw/bDphLkJ1dHRvbktpbmQucHJpbWFyeSxpY29uOlwiQ2FyZXREb3duSWNvblwifSksTD09PWYuRXhwYW5kRGlyZWN0aW9uLlVwJiYoMCxvLmpzeCkoQyx7a2luZDpudWxsIT09KGM9ZS5raW5kKSYmdm9pZCAwIT09Yz9jOmEuQnV0dG9uS2luZC5wcmltYXJ5LGljb246XCJDYXJldFVwSWNvblwifSldfSkpfSkpXX0pLGUuc2Vjb25kYXJ5QnV0dG9ucyYmZS5zZWNvbmRhcnlCdXR0b25zLmxlbmd0aD4wJiYoMCxvLmpzeCkocy5BbmltYXRlUHJlc2VuY2Use2NoaWxkcmVuOnkuc2hvdyYmKDAsby5qc3gpKHUuRXhwYW5kYWJsZVBhbmVsLHtleHBhbmREaXJlY3Rpb246TCxzZWNvbmRhcnlCdXR0b25zOm51bGwhPT0ocD1lLnNlY29uZGFyeUJ1dHRvbnMpJiZ2b2lkIDAhPT1wP3A6W10sc3RyZXRjaDplLnN0cmV0Y2hFeHBhbmRhYmxlUGFuZWwsY2xvc2VQYW5lbE9uU2Vjb25kYXJ5QnV0dG9uQ2xpY2s6ZS5jbG9zZVBhbmVsT25TZWNvbmRhcnlCdXR0b25DbGljayxvbkNvbGxhcHNlUmVxdWVzdDooKT0+Yih7c2hvdzohMSxyZXF1ZXN0ZWRCeUNvbGxhcHNlOiEwfSksYnV0dG9uU2l6ZTplLnNpemUsZG9jdW1lbnQ6ZS5kb2N1bWVudH0pfSldfSl9O2NvbnN0IHA9e1thLkJ1dHRvbktpbmQucHJpbWFyeV06ZT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeVRleHQsW2EuQnV0dG9uS2luZC5zZWNvbmRhcnldOmU9PmUucGFsZXR0ZS5icmFuZFNlY29uZGFyeVRleHQsW2EuQnV0dG9uS2luZC50ZXh0T25seV06ZT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fSxDPSgwLGwuZGVmYXVsdCkoYy5JY29uKWBcbiAgc3ZnIHBhdGgge1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZSxraW5kOnR9KT0+cFt0XShlKX07XG4gIH1cbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUubGluZUhlaWdodC51aX07XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRXZWlnaHQuYm9sZH07XG5gLGg9KDAsbC5kZWZhdWx0KShhLkJ1dHRvbilgXG4gIG1hcmdpbi1yaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuYCx2PSgwLGwuZGVmYXVsdCkoZC5Cb3gpYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gLGc9KDAsbC5kZWZhdWx0KShhLkJ1dHRvbilgXG4gIHdpZHRoOiAke2U9PmUudGhlbWUucHgueHhsYXJnZX07XG4gIHBhZGRpbmc6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuYCxtPWwuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gLHc9bC5kZWZhdWx0LmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5gfSwyMTI4OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnNldHVwRXhwYW5kYWJsZVBhbmVsPXZvaWQgMDtjb25zdCByPW4oOTY0NCk7dC5zZXR1cEV4cGFuZGFibGVQYW5lbD0oZSx0LG49ITEpPT57aWYoIWV8fDA9PT1lLmNoaWxkTm9kZXMubGVuZ3RoKXJldHVybjtjb25zdCBvPWUucGFyZW50RWxlbWVudCxpPW51bGw9PW8/dm9pZCAwOm8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKCFpKXJldHVybjtjb25zdCBsPWEuaGVpZ2h0LGM9YS53aWR0aDw9aS53aWR0aHx8bj9hLndpZHRoOmkud2lkdGgscz1pLngrYz5kb2N1bWVudC5ib2R5LmNsaWVudFdpZHRofHxjPGkud2lkdGg7ZS5zdHlsZS53aWR0aD1gJHtjfXB4YCxlLnN0eWxlLm9wYWNpdHk9XCIxXCIscz9lLnN0eWxlLnJpZ2h0PVwiMHB4XCI6ZS5zdHlsZS5sZWZ0PVwiMHB4XCIsdD09PXIuRXhwYW5kRGlyZWN0aW9uLkRvd24mJihlLnN0eWxlLnRvcD1gJHtpLmhlaWdodH1weGApLHQ9PT1yLkV4cGFuZERpcmVjdGlvbi5VcCYmKGUuc3R5bGUudG9wPS0xKmwrXCJweFwiKX19LDMwMzA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRXhwYW5kYWJsZVBhbmVsPXZvaWQgMDtjb25zdCBvPW4oNTg5MyksaT1yKG4oNzUxOCkpLGE9big5MTQxKSxsPW4oNDEzMCksYz1uKDEzMzUpLHM9bigyMTI4KSx1PXIobig0NDgzKSksZD17dHlwZTpcInNwcmluZ1wiLGR1cmF0aW9uOi4yLGJvdW5jZTouMjV9O3QuRXhwYW5kYWJsZVBhbmVsPWU9Pnt2YXIgdDtjb25zdCBuPWAke2UucGFuZWxJZH0tZXhwYW5kYWJsZS1wYW5lbGA7cmV0dXJuKDAsby5qc3gpKHUuZGVmYXVsdCxPYmplY3QuYXNzaWduKHtmb2N1c1RyYXBPcHRpb25zOntmYWxsYmFja0ZvY3VzOmAjJHtufWAsY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM6ITAsb25EZWFjdGl2YXRlOmUub25Db2xsYXBzZVJlcXVlc3QsaW5pdGlhbEZvY3VzOiExLGRvY3VtZW50OmUuZG9jdW1lbnR9fSx7Y2hpbGRyZW46KDAsby5qc3gpKEMsT2JqZWN0LmFzc2lnbih7cmVmOnQ9PigwLHMuc2V0dXBFeHBhbmRhYmxlUGFuZWwpKHQsZS5leHBhbmREaXJlY3Rpb24sZS5zdHJldGNoKSx0YWJJbmRleDowLGlkOm4saW5pdGlhbDpcImluaXRpYWxcIixleGl0OlwiaGlkZGVuXCIsYnV0dG9uU2l6ZTpudWxsIT09KHQ9ZS5idXR0b25TaXplKSYmdm9pZCAwIT09dD90OmwuQnV0dG9uU2l6ZS5iYXNlLGFuaW1hdGU6XCJ2aXNpYmxlXCIscm9sZTpcIm1lbnVcIix0cmFuc2l0aW9uOmQsb25Nb3VzZU92ZXI6KCk9Pnt2YXIgZTtyZXR1cm4gbnVsbD09PShlPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmJsdXIoKX19LHtjaGlsZHJlbjplLnNlY29uZGFyeUJ1dHRvbnMubWFwKCgodCxuKT0+KDAsby5qc3gpKGwuQnV0dG9uLE9iamVjdC5hc3NpZ24oe2NsYXNzTmFtZTpcIm1lbnUtaXRlbVwiLHRhYkluZGV4Om4rMSx0aXRsZTp0LnRpdGxlLHJvbGU6XCJtZW51aXRlbVwiLHNpemU6ZS5idXR0b25TaXplLGRpc2FibGVkOnQuZGlzYWJsZWQsa2luZDpcInRleHRPbmx5XCIsb25DbGljazpuPT4oKHQsbik9PntlLmNsb3NlUGFuZWxPblNlY29uZGFyeUJ1dHRvbkNsaWNrPyhuLm9uQ2xpY2sodCksZS5vbkNvbGxhcHNlUmVxdWVzdCgpKTpuLm9uQ2xpY2sodCwoKCk9PmUub25Db2xsYXBzZVJlcXVlc3QoKSkpfSkobix0KSxcImFyaWEtbGFiZWxcIjp0LnRpdGxlfSx7Y2hpbGRyZW46KDAsby5qc3gpKGYsT2JqZWN0LmFzc2lnbih7XCJhcmlhLWxhYmVsXCI6dC50aXRsZX0se2NoaWxkcmVuOnQudGl0bGV9KSl9KSxuKSkpfSksXCJleHBhbmRhYmxlUGFuZWxcIil9KSl9O2NvbnN0IGY9KDAsaS5kZWZhdWx0KShjLkJveClgXG4gIHBhZGRpbmctYm90dG9tOiAxcHg7XG4gIHBhZGRpbmctdG9wOiAxcHg7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbmAscD17W2wuQnV0dG9uU2l6ZS5zbWFsbF06ZT0+ZS5weC5zbWFsbCxbbC5CdXR0b25TaXplLmJhc2VdOmU9PmUucHguYmFzZSxbbC5CdXR0b25TaXplLmxhcmdlXTplPT5lLnB4LmxhcmdlfSxDPSgwLGkuZGVmYXVsdCkoYS5tb3Rpb24uZGl2KWBcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICBvcGFjaXR5OiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogJHtlPT5lLnRoZW1lLnB4Lnh4eGxhcmdlfTtcbiAgbWF4LXdpZHRoOiBtYXgtY29udGVudDtcbiAgbWluLXdpZHRoOiA4MHB4O1xuICBiYWNrZ3JvdW5kOiAke2U9PmUudGhlbWUucGFsZXR0ZS5iYWNrZ3JvdW5kNH07XG4gIGJveC1zaGFkb3c6ICR7ZT0+ZS50aGVtZS5zaGFkb3cuYmFzZX07XG4gIGhlaWdodDogbWF4LWNvbnRlbnQ7XG4gIHotaW5kZXg6IDEwMDtcblxuICAubWVudS1pdGVtIHtcbiAgICBib3JkZXItcmFkaXVzOiB1bnNldDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogdHJhbnNwYXJlbnQ7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgb3ZlcmZsb3c6IGNsaXA7XG4gICAgJiA+ICoge1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG4gICAgZm9udC13ZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuZm9udFdlaWdodC5ub3JtYWx9O1xuICAgIHBhZGRpbmctdG9wOiAkeyh7dGhlbWU6ZSxidXR0b25TaXplOnR9KT0+cFt0XShlKX07XG4gICAgcGFkZGluZy1ib3R0b206ICR7KHt0aGVtZTplLGJ1dHRvblNpemU6dH0pPT5wW3RdKGUpfTtcbiAgICBwYWRkaW5nLWxlZnQ6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuXG4gICAgOmZpcnN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gICAgfVxuXG4gICAgOmxhc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLFxuICAgICY6aG92ZXIge1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZ3JvdW5kOiAke2U9PmUudGhlbWUucGFsZXR0ZS5iYWNrZ3JvdW5kMn07XG4gICAgfVxuXG4gICAgJjpkaXNhYmxlZCxcbiAgICAmOmFjdGl2ZTpkaXNhYmxlZCB7XG4gICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHRJbmFjdGl2ZX07XG4gICAgICBiYWNrZ3JvdW5kOiAke2U9PmUudGhlbWUucGFsZXR0ZS5iYWNrZ3JvdW5kNH07XG4gICAgICBvcGFjaXR5OiB1bnNldDtcbiAgICB9XG4gIH1cbmB9LDQ5MjU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDQwMjEpLHQpLG8obig5NjQ0KSx0KX0sMjYwOTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNTk3MSksdCl9LDU5NzE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Ub2dnbGU9dm9pZCAwO2NvbnN0IGk9big1ODkzKSxhPW4oNjY4OSksbD1vKG4oNzUxOCkpLGM9big4NTEwKSxzPW4oMTMzNSk7dC5Ub2dnbGU9ZT0+e3ZhcntpZDp0LGxhYmVsOm4sb25DaGFuZ2U6byxsYWJlbFNpZGU6bD1cInJpZ2h0XCIsdHlwZTpjPVwiY2hlY2tib3hcIn09ZSxzPXIoZSxbXCJpZFwiLFwibGFiZWxcIixcIm9uQ2hhbmdlXCIsXCJsYWJlbFNpZGVcIixcInR5cGVcIl0pO2NvbnN0W2gsdl09KDAsYS51c2VTdGF0ZSkocy5jaGVja2VkKTtyZXR1cm4oMCxhLnVzZUVmZmVjdCkoKCgpPT57dihzLmNoZWNrZWQpfSksW3MuY2hlY2tlZF0pLCgwLGkuanN4cykodSxPYmplY3QuYXNzaWduKHtsYWJlbFNpZGU6bH0se2NoaWxkcmVuOltuPygwLGkuanN4KShDLE9iamVjdC5hc3NpZ24oe2h0bWxGb3I6dH0se2NoaWxkcmVuOm59KSk6dm9pZCAwLCgwLGkuanN4cykoZCxPYmplY3QuYXNzaWduKHtpc0NoZWNrZWQ6aH0se2NoaWxkcmVuOlsoMCxpLmpzeCkocCxPYmplY3QuYXNzaWduKHt9LHMse2lkOnQsdHlwZTpjLG9uQ2hhbmdlOmU9Pnt2KGUudGFyZ2V0LmNoZWNrZWQpLG51bGw9PW98fG8oZSl9fSkpLCgwLGkuanN4KShmLHt0YWJJbmRleDotMSxcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCIsaXNDaGVja2VkOmh9KV19KSldfSkpfTtjb25zdCB1PWwuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogJHsoe3RoZW1lOmV9KT0+ZS5weC54bGFyZ2V9O1xuICBmbGV4LWRpcmVjdGlvbjogJHsoe2xhYmVsU2lkZTplfSk9PlwibGVmdFwiPT09ZT9cInJvd1wiOlwicm93LXJldmVyc2VcIn07XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhsYXJnZX07XG5gLGQ9KDAsbC5kZWZhdWx0KShzLkJveClgXG4gIC0tcHgtdG9nZ2xlOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhsYXJnZX07XG4gIC0tcHgta25vYjogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogdmFyKC0tcHgtdG9nZ2xlKTtcbiAgd2lkdGg6IGNhbGMoMiAqIHZhcigtLXB4LXRvZ2dsZSkpO1xuICBib3JkZXI6IDFweCBzb2xpZFxuICAgICR7KHtpc0NoZWNrZWQ6ZSx0aGVtZTp0fSk9PmU/dC5wYWxldHRlLmJyYW5kUHJpbWFyeTp0LnBhbGV0dGUuYmFja2dyb3VuZDZ9O1xuICBib3JkZXItcmFkaXVzOiBjYWxjKDAuNSAqIHZhcigtLXB4LXRvZ2dsZSkpO1xuXG4gIGJhY2tncm91bmQ6ICR7KHtpc0NoZWNrZWQ6ZSx0aGVtZTp0fSk9PmU/dC5wYWxldHRlLmJyYW5kUHJpbWFyeTp0LnBhbGV0dGUuYmFja2dyb3VuZDZ9O1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbiksXG4gICAgYm9yZGVyLWNvbG9yIHZhcigtLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pO1xuXG4gICY6Zm9jdXMtd2l0aGluIHtcbiAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEZvY3VzZWR9O1xuICB9XG5gLGY9bC5kZWZhdWx0LmJ1dHRvbmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogdmFyKC0tcHgta25vYik7XG4gIGhlaWdodDogdmFyKC0tcHgta25vYik7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kOiAkeyh7aXNDaGVja2VkOmUsdGhlbWU6dH0pPT5lP3QucGFsZXR0ZS5icmFuZFByaW1hcnlUZXh0OnQucGFsZXR0ZS5pbnB1dENvbG9yfTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICB0cmFuc2l0aW9uOiBsZWZ0IHZhcigtLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbiksIGJhY2tncm91bmQgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7IC8qIEFsbG93IHBhc3MtdGhydSBmb3IgbmF0aXZlIGlucHV0ICovXG5gLHA9KDAsbC5kZWZhdWx0KShjLlJhd0lucHV0KWBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9wYWNpdHk6IDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgZGlzcGxheTogYmxvY2s7XG5cbiAgJjpjaGVja2VkICsgJHtmfSB7XG4gICAgbGVmdDogY2FsYygxMDAlIC0gJHsoe3RoZW1lOmV9KT0+ZS5weC5sYXJnZX0pO1xuICB9XG4gICY6ZGlzYWJsZWQgKyAke2Z9IHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gIH1cbiAgJjpub3QoOmRpc2FibGVkKSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5gLEM9bC5kZWZhdWx0LmxhYmVsYGB9LDUzMDA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CYWRnZT12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGE9byhuKDc1MTgpKSxsPW4oMTMzNSk7dC5CYWRnZT1lPT57dmFye2NvdW50OnQ9MCxtYXg6bn09ZSxvPXIoZSxbXCJjb3VudFwiLFwibWF4XCJdKTtsZXQgYT10LnRvU3RyaW5nKCk7cmV0dXJuIG4mJnQ+biYmKGE9YCR7bn0rYCksKDAsaS5qc3gpKGMsT2JqZWN0LmFzc2lnbih7fSxvLHtjaGlsZHJlbjphfSkpfTtjb25zdCBjPSgwLGEuZGVmYXVsdCkobC5Cb3gpYFxuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuc3RhdHVzQ3JpdGljYWx9O1xuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5waWxsfTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUuX2NvbG9yLndoaXRlfTtcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLnNtYWxsfTtcbiAgbWluLXdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhsYXJnZX07XG4gIHBhZGRpbmc6IDJweCA2cHg7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm94LXNoYWRvdzogJHsoe3RoZW1lOmV9KT0+ZS5zaGFkb3cuYmFzZX07XG5gfSwzMTM2OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig1MzAwKSx0KX0sNjg5NTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGk9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH0sYT10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNhbGVuZGFyPXZvaWQgMDtjb25zdCBsPW4oNTg5MyksYz1uKDY2ODkpLHM9YShuKDc1MTgpKSx1PW4oNzI5MiksZD1uKDQxMzApLGY9bigxMzM1KSxwPW4oOTUwNyksQz1pKG4oNTI5OSkpO3QuQ2FsZW5kYXI9KHt2YWx1ZTplLG9uQ2hhbmdlOnQsb25EaXNtaXNzOm59KT0+e2NvbnN0W3JdPSgwLGMudXNlU3RhdGUpKGUpLFtvLGldPSgwLGMudXNlU3RhdGUpKGUpLGE9KDAsYy51c2VDYWxsYmFjaykoKGU9PntpKGUpLG51bGw9PXR8fHQoZSl9KSxbXSkscz0oMCxjLnVzZUNhbGxiYWNrKSgoKCk9PnthKHIpLG51bGw9PW58fG4oKX0pLFtdKTtyZXR1cm4oMCxsLmpzeHMpKGcsT2JqZWN0LmFzc2lnbih7XCJkYXRhLXRlc3RpZFwiOlwicmVhY3QtY2FsZW5kYXJcIn0se2NoaWxkcmVuOlsoMCxsLmpzeCkodS5DYWxlbmRhcix7dmFsdWU6byxvbkNoYW5nZTphLGNhbGVuZGFyVHlwZTpcIlVTXCIsZGVmYXVsdFZpZXc6XCJtb250aFwiLG1pbkRldGFpbDpcInllYXJcIixuZXh0MkxhYmVsOm51bGwscHJldjJMYWJlbDpudWxsLHNob3dGaXhlZE51bWJlck9mV2Vla3M6ITAsbWluRGF0ZTpuZXcgRGF0ZX0pLCgwLGwuanN4cykoaCx7Y2hpbGRyZW46WygwLGwuanN4KSh2LHtcImRhdGEtdGVzdGlkXCI6XCJjYWxlbmRhci1jYW5jZWwtYnV0dG9uXCIsXCJhcmlhLWxhYmVsXCI6XCJjYW5jZWwtYnV0dG9uXCIsbGFiZWw6XCJDYW5jZWxcIixzaXplOlwiYmFzZVwiLGtpbmQ6XCJ0ZXh0T25seVwiLG9uQ2xpY2s6c30pLCgwLGwuanN4KSh2LHtcImRhdGEtdGVzdGlkXCI6XCJjYWxlbmRhci1hcHBseS1idXR0b25cIixcImFyaWEtbGFiZWxcIjpcImFwcGx5LWJ1dHRvblwiLGxhYmVsOlwiQXBwbHlcIixzaXplOlwiYmFzZVwiLGtpbmQ6XCJwcmltYXJ5XCIsb25DbGljazpufSldfSldfSkpfTtjb25zdCBoPSgwLHMuZGVmYXVsdCkoZi5Cb3gpYFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH0gMHB4YH07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIG1hcmdpbi1yaWdodDogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH1gfTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgYm9yZGVyOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ2fTtcbiAgYm9yZGVyLXRvcDogbm9uZTtcbmAsdj0oMCxzLmRlZmF1bHQpKGQuQnV0dG9uKWBcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH0gJHtlLnB4LnNtYWxsfWB9O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9YH07XG5gLGc9KDAscy5kZWZhdWx0KShmLkJveClgXG4gICR7Q31cbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZm9udC1mYW1pbHk6ICR7cC5Gb250U3RhY2t9O1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC5yZWFjdC1jYWxlbmRhciB7XG4gICAgbWluLXdpZHRoOiAyMzBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9O1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDZ9O1xuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uX19hcnJvdyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5sYXJnZX07XG4gICAgOmRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gICAgfVxuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbl9fbGFiZWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH0gIWltcG9ydGFudDtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX192aWV3Q29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dENvbG9yfTtcbiAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X193ZWVrZGF5cyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICAgIGFiYnIge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX3RpbGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gICAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gICAgYXNwZWN0LXJhdGlvOiAxLzE7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIDpkaXNhYmxlZCB7XG4gICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHRJbmFjdGl2ZX07XG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgICA6aG92ZXIge1xuICAgICAgYm9yZGVyOiAycHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX07XG4gICAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgICB9XG4gICAgOmZvY3VzIHtcbiAgICAgIGJvcmRlcjogMnB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9O1xuICAgICAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gICAgfVxuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tbm93IHtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5fSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5fSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5VGV4dH07XG4gICAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gICAgOmZvY3VzIHtcbiAgICAgIGJvcmRlcjogMnB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9O1xuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gICAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgICB9XG4gIH1cbmB9LDk3MzQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDY4OTUpLHQpfSw2MDYyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkRyb3Bkb3duTWVudT12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpLGk9big2Njg5KSxhPW4oMTMzNSksbD1uKDk2MzQpLGM9cihuKDc1MTgpKSxzPW4oNzI2MSksdT1uKDI3OSksZD1uKDM0Nyk7dC5Ecm9wZG93bk1lbnU9KHtsYWJlbDplLG9wdGlvbnM6dD1bW11dLHBsYWNlaG9sZGVyOm49XCJTZWxlY3QgYW4gb3B0aW9uXCIsc2VsZWN0ZWQ6cixvbk9wdGlvbkhvdmVyOmMsb25DaGFuZ2U6aCxyZW5kZXJMYWJlbDp2LGZpdENvbnRlbnQ6Z30pPT57dmFyIG0sdztjb25zdFt5LGJdPSgwLGkudXNlU3RhdGUpKCExKTsoMCxpLnVzZUVmZmVjdCkoKCgpPT57MT09PXRbMF0ubGVuZ3RoJiZ4KCExKX0pLFt0XSk7Y29uc3QgeD1lPT57YihudWxsIT1lP2U6IXkpfSx7Zm9jdXNlZE9wdGlvbjpPLGhhbmRsZUtleURvd246TH09KDAsZC51c2VEcm9wZG93bktleWJvYXJkTmF2aWdhdGlvbikodCxyLHkseCxoKTtyZXR1cm4oMCxvLmpzeCkoZixPYmplY3QuYXNzaWduKHtmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsb25CbHVyOmU9PntlLmN1cnJlbnRUYXJnZXQuY29udGFpbnMoZS5yZWxhdGVkVGFyZ2V0KXx8YighMSl9LG9uS2V5RG93bjpMfSx7Y2hpbGRyZW46KDAsby5qc3hzKShhLkJveCxPYmplY3QuYXNzaWduKHtnYXA6XCJiYXNlXCIsZmxleERpcmVjdGlvbjpcImNvbHVtblwiLHN0eWxlOnt3aWR0aDpcIjEwMCVcIn19LHtjaGlsZHJlbjpbZSYmKDAsby5qc3gpKFwibGFiZWxcIixPYmplY3QuYXNzaWduKHtodG1sRm9yOlwiZHJvcGRvd24tYnV0dG9uXCJ9LHtjaGlsZHJlbjooMCxvLmpzeCkocy5PcHRpb25UaXRsZSx7Y2hpbGRyZW46ZX0pfSkpLCgwLG8uanN4cykocCx7Y2hpbGRyZW46W3Y/dihyfHx7dGl0bGU6bix2YWx1ZTpudWxsfSx5LHgsTyk6KDAsby5qc3hzKShDLE9iamVjdC5hc3NpZ24oe3JvbGU6XCJjb21ib3hib3hcIix0YWJJbmRleDowLFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6YG1lbnUtb3B0aW9uLSR7bnVsbD09Tz92b2lkIDA6Ty52YWx1ZX1gLFwiYXJpYS1leHBhbmRlZFwiOnksXCJhcmlhLWhhc3BvcHVwXCI6XCJsaXN0Ym94XCIsXCJhcmlhLWNvbnRyb2xzXCI6XCJkcm9wZG93bi1saXN0Ym94XCIsb25DbGljazooKT0+eCgpLGFzOlwiYnV0dG9uXCIsXCJkYXRhLXRlc3RpZFwiOlwiZHJvcGRvd24tYnV0dG9uXCIsdGl0bGU6bnVsbCE9PShtPW51bGw9PXI/dm9pZCAwOnIudGl0bGUpJiZ2b2lkIDAhPT1tP206bn0se2NoaWxkcmVuOlsobnVsbD09cj92b2lkIDA6ci5pY29uVXJsKSYmKDAsby5qc3gpKHUuQnV0dG9uSW1hZ2Use3NyYzpyLmljb25Vcmx9KSwoMCxvLmpzeCkocy5PcHRpb25UaXRsZSxPYmplY3QuYXNzaWduKHtcImFyaWEtbGl2ZVwiOlwicG9saXRlXCIsXCJkYXRhLXRlc3RpZFwiOlwic2VsZWN0ZWQtb3B0aW9uXCJ9LHtjaGlsZHJlbjpudWxsIT09KHc9bnVsbD09cj92b2lkIDA6ci50aXRsZSkmJnZvaWQgMCE9PXc/dzpufSkpLCgwLG8uanN4KShsLkljb24se2ljb246eSYmdFswXS5sZW5ndGg+MT9cIkNoZXZyb25VcEljb25cIjpcIkNoZXZyb25Eb3duSWNvblwifSldfSkpLHQubGVuZ3RoJiZ0WzBdLmxlbmd0aD4xJiZ5JiYoMCxvLmpzeCkodS5NZW51LHttZW51SWQ6XCJkcm9wZG93bi1saXN0Ym94XCIsb3B0aW9uczp0LHNlbGVjdGVkOnIsaGFuZGxlRXhwYW5kTWVudTp4LG9uT3B0aW9uSG92ZXI6YyxvbkNoYW5nZTpoLGZpdENvbnRlbnQ6Zyxmb2N1c2VkT3B0aW9uOk8sYWJzb2x1dGVQb3NpdGlvbjohMH0pXX0pXX0pKX0pKX07Y29uc3QgZj0oMCxjLmRlZmF1bHQpKGEuQm94KWBcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmAscD0oMCxjLmRlZmF1bHQpKGEuQm94KWBgLEM9KDAsYy5kZWZhdWx0KShhLkJveClgXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEJhY2tncm91bmR9O1xuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0LmJvbGR9O1xuICBnYXA6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmxpbmVIZWlnaHQudWl9O1xuICBvdXRsaW5lOiBub25lO1xuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfSAke2UucHguc21hbGx9YH07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKTtcbiAgd2lkdGg6IDEwMCU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgJHtsLkljb259IHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgfVxuXG4gICY6Zm9jdXMtd2l0aGluIHtcbiAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEZvY3VzZWR9O1xuICB9XG5gfSw2MDI2OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig2MDYyKSx0KSxvKG4oMjc5KSx0KX0sMjc5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJ1dHRvbkltYWdlPXQuTWVudT12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpLGk9cihuKDY2ODkpKSxhPXIobig3NTE4KSksbD1uKDk2MzQpLGM9bigxMzM1KSxzPW4oNzI2MSk7dC5NZW51PSh7b3B0aW9uczplLHNlbGVjdGVkOm4sbWVudUlkOnIsaGFuZGxlRXhwYW5kTWVudTphLG9uT3B0aW9uSG92ZXI6bCxvbkNoYW5nZTpjLHdpZHRoOmgsaGVpZ2h0OnYsaGVhZGVyOmcsZm9jdXNlZE9wdGlvbjptLGFic29sdXRlUG9zaXRpb246d30pPT57Y29uc3QgeT1lPT57bnVsbD09bHx8bChlKX07cmV0dXJuKDAsby5qc3hzKSh1LE9iamVjdC5hc3NpZ24oe3JvbGU6XCJsaXN0Ym94XCIsZmxleERpcmVjdGlvbjpcImNvbHVtblwiLG9uTW91c2VMZWF2ZTooKT0+e3kobnVsbCl9LFwiZGF0YS10ZXN0aWRcIjpcIm1lbnVcIixpZDpyLHdpZHRoOmgsaGVpZ2h0OnYsYWJzb2x1dGVQb3NpdGlvbjp3fSx7Y2hpbGRyZW46W2cmJigwLG8uanN4cykoaS5kZWZhdWx0LkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsby5qc3gpKGYse2NoaWxkcmVuOigwLG8uanN4KShzLk9wdGlvblRpdGxlLHtjaGlsZHJlbjpnfSl9KSwoMCxvLmpzeCkoQyx7fSldfSksZS5tYXAoKChlLHIpPT4oMCxvLmpzeHMpKGkuZGVmYXVsdC5GcmFnbWVudCx7Y2hpbGRyZW46WzAhPT1yJiYoMCxvLmpzeCkoQyx7fSksZS5tYXAoKChlLHIpPT4oMCxvLmpzeHMpKGQsT2JqZWN0LmFzc2lnbih7cm9sZTpcIm9wdGlvblwiLGlzRm9jdXNlZDoobnVsbD09bT92b2lkIDA6bS52YWx1ZSk9PT1lLnZhbHVlLFwiYXJpYS1zZWxlY3RlZFwiOihudWxsPT1uP3ZvaWQgMDpuLnZhbHVlKT09PWUudmFsdWUsYWxpZ25JdGVtczpcImNlbnRlclwiLGFzOlwiYnV0dG9uXCIsXCJkYXRhLXRlc3RpZFwiOmBtZW51LW9wdGlvbi0ke3J9YCxpZDpgbWVudS1vcHRpb24tJHtlLnZhbHVlfWAsdGl0bGU6ZS50aXRsZSxvbkNsaWNrOigpPT57ZS5vdmVycmlkZU9uQ2xpY2s/ZS5vdmVycmlkZU9uQ2xpY2soZSk6YyhlKSxudWxsPT1hfHxhKCl9LG9uTW91c2VPdmVyOigpPT55KGUudmFsdWUpfSx7Y2hpbGRyZW46WyhudWxsPT1lP3ZvaWQgMDplLmljb25VcmwpJiYoMCxvLmpzeCkodC5CdXR0b25JbWFnZSx7c3JjOmUuaWNvblVybCxzdHlsZTp7bWFyZ2luUmlnaHQ6XCI4cHhcIn19KSwoMCxvLmpzeCkocy5PcHRpb25UaXRsZSx7Y2hpbGRyZW46ZS50aXRsZX0pLChudWxsPT1uP3ZvaWQgMDpuLnZhbHVlKT09PWUudmFsdWU/KDAsby5qc3gpKHAse2ljb246XCJDaGVja0ljb25cIn0pOigwLG8uanN4KShwLHtjaGlsZHJlbjooMCxvLmpzeCkoby5GcmFnbWVudCx7fSl9KV19KSxyKSkpXX0scikpKV19KSl9O2NvbnN0IHU9KDAsYS5kZWZhdWx0KShjLkJveClgXG4gIHdpZHRoOiAkeyh7d2lkdGg6ZSxmaXRDb250ZW50OnR9KT0+ZXx8KHQ/XCJmaXQtY29udGVudFwiOlwiMTAwJVwiKX07XG4gIG1heC1oZWlnaHQ6ICR7KHtoZWlnaHQ6ZX0pPT5udWxsIT1lP2U6XCJmaXQtY29udGVudFwifTtcbiAgdG9wOiAkeyh7dGhlbWU6ZX0pPT5gY2FsYygxMDAlICsgJHtlLnB4LnhzbWFsbH0pYH07XG4gIHJpZ2h0OiAwO1xuICBib3gtc2hhZG93OiAwcHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9O1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgei1pbmRleDogMTA7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEJhY2tncm91bmR9O1xuICBwb3NpdGlvbjogJHsoe2Fic29sdXRlUG9zaXRpb246ZX0pPT5lP1wiYWJzb2x1dGVcIjpcImluaXRpYWxcIn07XG5gLGQ9KDAsYS5kZWZhdWx0KShjLkJveClgXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIGJvcmRlcjogJHsoe2lzRm9jdXNlZDplLHRoZW1lOnR9KT0+ZT9gMXB4IHNvbGlkICR7dC5wYWxldHRlLmJvcmRlck5ldXRyYWx9YDpcIjFweCBzb2xpZCB0cmFuc3BhcmVudFwifTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfSAke2UucHguc21hbGx9YH07XG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kMn07XG4gIH1cbmAsZj0oMCxhLmRlZmF1bHQpKGMuQm94KWBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dEhlbHB9O1xuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfSAke2UucHguc21hbGx9YH07XG5gLHA9KDAsYS5kZWZhdWx0KShsLkljb24pYFxuICBtYXJnaW4tbGVmdDogYXV0bztcbmAsQz0oMCxhLmRlZmF1bHQpKGMuQm94KWBcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEJhY2tncm91bmR9O1xuYDt0LkJ1dHRvbkltYWdlPWEuZGVmYXVsdC5pbWdgXG4gIGhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54bGFyZ2V9O1xuICB3aWR0aDogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54bGFyZ2V9O1xuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG5gfSw3MjYxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudXNlVG9vbHRpcD10LmlzRWxlbWVudE92ZXJmbG93bj10Lk9wdGlvblRpdGxlPXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1uKDY2ODkpLGw9big3NzY5KSxjPW4oOTUwNykscz1vKG4oNzUxOCkpO3QuT3B0aW9uVGl0bGU9ZT0+e3ZhcntjaGlsZHJlbjpufT1lLG89cihlLFtcImNoaWxkcmVuXCJdKTtyZXR1cm4oMCxpLmpzeCkodSxPYmplY3QuYXNzaWduKHtyZWY6KDAsdC51c2VUb29sdGlwKShuKX0sbyx7Y2hpbGRyZW46bn0pKX07Y29uc3QgdT0oMCxzLmRlZmF1bHQpKGwuVGV4dClgXG4gICR7Yy5NaXhpbnMudGV4dE92ZXJmbG93fTtcbiAgbWFyZ2luLWxlZnQ6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbmA7ZnVuY3Rpb24gZChlKXtyZXR1cm4gZS5zY3JvbGxIZWlnaHQ+ZS5jbGllbnRIZWlnaHR8fGUuc2Nyb2xsV2lkdGg+ZS5jbGllbnRXaWR0aH10LmlzRWxlbWVudE92ZXJmbG93bj1kLHQudXNlVG9vbHRpcD1lPT4oMCxhLnVzZUNhbGxiYWNrKSgodD0+e3QmJmUmJmQodCkmJih0LnRpdGxlPWUpfSksW10pfSw3MDA2OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuSWNvbj12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGE9byhuKDc1MTgpKSxsPW4oMTMzNSksYz1uKDk1MDcpLHM9bigzNDcxKSx1PW4oOTY2OSk7dC5JY29uPSgwLGEuZGVmYXVsdCkoKGU9Pnt2YXJ7aWNvbjp0LGNoaWxkcmVuOm4sc2l6ZTpvPVwiYmFzZVwiLGNvbnRhaW5lclNpemU6YSxcImRhdGEtdGVzdGlkXCI6bH09ZSxjPXIoZSxbXCJpY29uXCIsXCJjaGlsZHJlblwiLFwic2l6ZVwiLFwiY29udGFpbmVyU2l6ZVwiLFwiZGF0YS10ZXN0aWRcIl0pO3JldHVybigwLGkuanN4KShmLE9iamVjdC5hc3NpZ24oe30sYyx7aWNvblNpemU6byxjb250YWluZXJTaXplOmF8fG8sanVzdGlmeUNvbnRlbnQ6XCJjZW50ZXJcIixhbGlnbkl0ZW1zOlwiY2VudGVyXCIsXCJkYXRhLXRlc3RpZFwiOmx9LHtjaGlsZHJlbjp0PygwLGkuanN4KShkLE9iamVjdC5hc3NpZ24oe2FyaWFMYWJlbDpjW1wiYXJpYS1sYWJlbFwiXSxpY29uOnR9LGMpKTpufSkpfSkpYGA7Y29uc3QgZD0oMCxhLmRlZmF1bHQpKChlPT57dmFye2ljb246dCxhcmlhTGFiZWw6bn09ZSxvPXIoZSxbXCJpY29uXCIsXCJhcmlhTGFiZWxcIl0pO2NvbnN0IGE9cy5JY29uU2V0W3RdO3JldHVybigwLGkuanN4KShhLE9iamVjdC5hc3NpZ24oe3JvbGU6XCJpbWdcIixcImFyaWEtbGFiZWxcIjpufSxvKSl9KSlgYCxmPSgwLGEuZGVmYXVsdCkobC5Cb3gpYFxuICAvKipcbiAgICogMS4gSW5pdGlhbGl6ZSBsb2NhbCB2YXJpYWJsZXMgd2l0aCByZWFzb25hYmxlIGRlZmF1bHRzXG4gICAqL1xuICAtLXB4LWRlZmF1bHQ6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUuYmFzZX07XG5cbiAgLyoqXG4gICAqIDIuIEluamVjdCB2YXJpYW50cyAtLSA/IFdoYXQgYXJlIFZhcmlhbnRzXG4gICAqL1xuICAkeygwLGMuZ2V0VmFyaWFudENTUykodS52YXJpYW50cyx1LlZhcmlhbnQuY29udGFpbmVyU2l6ZSl9XG4gICR7KDAsYy5nZXRWYXJpYW50Q1NTKSh1LnZhcmlhbnRzLHUuVmFyaWFudC5pY29uU2l6ZSl9XG5cbiAgd2lkdGg6IHZhcigtLXB4LWNvbnRhaW5lciwgdmFyKC0tcHgtZGVmYXVsdCkpO1xuICBoZWlnaHQ6IHZhcigtLXB4LWNvbnRhaW5lciwgdmFyKC0tcHgtZGVmYXVsdCkpO1xuXG4gIC8qIFNWRyBBc3NldCAqL1xuICAmID4gKixcbiAgJHtkfSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IHZhcigtLXB4LWljb24sIHZhcigtLXB4LWRlZmF1bHQpKTtcbiAgICBoZWlnaHQ6IHZhcigtLXB4LWljb24sIHZhcigtLXB4LWRlZmF1bHQpKTtcbiAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICB9XG5gfSw5NjY5OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnZhcmlhbnRzPXQuVmFyaWFudD12b2lkIDA7Y29uc3Qgcj1uKDc1MTgpO3QuVmFyaWFudD17aWNvblNpemU6XCJpY29uU2l6ZVwiLGNvbnRhaW5lclNpemU6XCJjb250YWluZXJTaXplXCJ9LHQudmFyaWFudHM9e1t0LlZhcmlhbnQuaWNvblNpemVdOnt4c21hbGw6ci5jc3NgXG4gICAgICAtLXB4LWljb246ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueHNtYWxsfTtcbiAgICBgLHNtYWxsOnIuY3NzYFxuICAgICAgLS1weC1pY29uOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnNtYWxsfTtcbiAgICBgLGJhc2U6ci5jc3NgXG4gICAgICAtLXB4LWljb246ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUuYmFzZX07XG4gICAgYCxsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5sYXJnZX07XG4gICAgYCx4bGFyZ2U6ci5jc3NgXG4gICAgICAtLXB4LWljb246ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueGxhcmdlfTtcbiAgICBgLHh4bGFyZ2U6ci5jc3NgXG4gICAgICAtLXB4LWljb246ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueHhsYXJnZX07XG4gICAgYCx4eHhsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54eHhsYXJnZX07XG4gICAgYH0sW3QuVmFyaWFudC5jb250YWluZXJTaXplXTp7eHNtYWxsOnIuY3NzYFxuICAgICAgLS1weC1jb250YWluZXI6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueHNtYWxsfTtcbiAgICBgLHNtYWxsOnIuY3NzYFxuICAgICAgLS1weC1jb250YWluZXI6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUuc21hbGx9O1xuICAgIGAsYmFzZTpyLmNzc2BcbiAgICAgIC0tcHgtY29udGFpbmVyOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLmJhc2V9O1xuICAgIGAsbGFyZ2U6ci5jc3NgXG4gICAgICAtLXB4LWNvbnRhaW5lcjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5sYXJnZX07XG4gICAgYCx4bGFyZ2U6ci5jc3NgXG4gICAgICAtLXB4LWNvbnRhaW5lcjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54bGFyZ2V9O1xuICAgIGAseHhsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtY29udGFpbmVyOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnh4bGFyZ2V9O1xuICAgIGAseHh4bGFyZ2U6ci5jc3NgXG4gICAgICAtLXB4LWNvbnRhaW5lcjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54eHhsYXJnZX07XG4gICAgYH19fSw5NjM0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig3MDA2KSx0KX0sOTI4NTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CZWxsRmlsbGVkSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuQmVsbEZpbGxlZEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4cykoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjIwXCIsaGVpZ2h0OlwiMjBcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOlsoMCxvLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMTIgMkMxMS4yMjk2IDIgMTAuNTg0NSAyLjU4Mzc5IDEwLjUwNzggMy4zNTA0MUMxMC40OTUyIDMuNDc2NzcgMTAuNDA1NyAzLjU4MTU3IDEwLjI4NDYgMy42MTk3MUM4LjA2NTU0IDQuMzE4NTEgNi40MjIzOCA2LjMzNzk2IDYuMzAwMzMgOC43Nzg5M0w2LjEyMzgyIDEyLjMwOTFDNi4wOTkzNiAxMi43OTgyIDUuODEzMzEgMTMuMjM2MiA1LjM3NTMgMTMuNDU1Mkw0LjYwNzM5IDEzLjgzOTJDNC4xNDc2MSAxNC4wNjkxIDMuODU3MTggMTQuNTM5IDMuODU3MTggMTUuMDUzMVYxNi4yNUMzLjg1NzE4IDE2LjYyNDggNC4xNjA5OCAxNi45Mjg2IDQuNTM1NzUgMTYuOTI4NkgxOS40NjQzQzE5LjgzOTEgMTYuOTI4NiAyMC4xNDI5IDE2LjYyNDggMjAuMTQyOSAxNi4yNVYxNS4wNTMxQzIwLjE0MjkgMTQuNTM5IDE5Ljg1MjUgMTQuMDY5MSAxOS4zOTI3IDEzLjgzOTJMMTguNjI0NyAxMy40NTUyQzE4LjE4NjcgMTMuMjM2MiAxNy45MDA2IDEyLjc5ODIgMTcuODc2MiAxMi4zMDkxTDE3LjY5OTcgOC43Nzg5M0MxNy41Nzc2IDYuMzM3OTYgMTUuOTM0NCA0LjMxODUxIDEzLjcxNTQgMy42MTk3MkMxMy41OTQyIDMuNTgxNTcgMTMuNTA0OCAzLjQ3Njc4IDEzLjQ5MjIgMy4zNTA0MUMxMy40MTU1IDIuNTgzOCAxMi43NzA0IDIgMTIgMlpcIixmaWxsOnR9KSwoMCxvLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNOS4yODU3MSAxOC4yODU3QzkuMjg1NzEgMTkuNzg0OCAxMC41MDA5IDIxIDEyIDIxQzEzLjQ5OTEgMjEgMTQuNzE0MyAxOS43ODQ4IDE0LjcxNDMgMTguMjg1N0w5LjI4NTcxIDE4LjI4NTdaXCIsZmlsbDp0fSldfSkpfX0sNDcxODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CZWxsSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuQmVsbEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTcuNDczMDYgMS4yMjk0M0M2LjUxOTMgMS4yMjk0MyA1Ljg3MjkxIDEuOTgzOTkgNS42NTM3MSAyLjcyNjk3QzUuNjUyMDcgMi43MjkzMiA1LjY0OTIxIDIuNzMzMDMgNS42NDQ4NSAyLjczNzU2QzUuNjM5MiAyLjc0MzQyIDUuNjMyNjQgMi43NDg5NiA1LjYyNTk5IDIuNzUzNTVDNS42MTkyNiAyLjc1ODE5IDUuNjE0NTIgMi43NjA0IDUuNjEzIDIuNzYxMDJMNS42MTI2NSAyLjc2MTE3QzUuMDUwODggMi45OTI1MSA0LjM5MTkzIDMuMzYwMjIgMy44NzY5NyA0LjAzMzU3QzMuMzU4MTUgNC43MTE5NiAzLjAxOTQ5IDUuNjU1NzEgMy4wMTk0NSA2Ljk3NzQ5TDUuNjUzNzEgMi43MjY5N0wzLjAxOTQ1IDYuOTc3NzZDMy4wMTg2NiA4LjMwMTY1IDIuODc4NzEgOS4wMzEzIDIuNjcwOTEgOS41MzQzOUMyLjQ4ODc5IDkuOTc1MzEgMi4yNDg4OSAxMC4yNjU4IDEuOTEyIDEwLjY3MzhMMS45MTE4NSAxMC42NzRDMS44NjI2MyAxMC43MzM2IDEuODExMzUgMTAuNzk1NyAxLjc1Nzg3IDEwLjg2MTJDMS4xNDkyMyAxMS42MDYgMS43MjcyOSAxMi42NDE5IDIuNjU5ODYgMTIuNjQxOUg1LjA5MDE5QzUuMjExOTEgMTIuOTggNS40MDcyNiAxMy4yOTA2IDUuNjY2MTggMTMuNTQ5NUM2LjEyODI3IDE0LjAxMTYgNi43NTQ5OSAxNC4yNzEyIDcuNDA4NDggMTQuMjcxMkM4LjA2MTk3IDE0LjI3MTIgOC42ODg3IDE0LjAxMTYgOS4xNTA3OCAxMy41NDk1QzkuNDA5NzEgMTMuMjkwNiA5LjYwNTA1IDEyLjk4IDkuNzI2NzggMTIuNjQxOUgxMi4yODk0QzEzLjIyMzQgMTIuNjQxOSAxMy43OTIgMTEuNjAwOCAxMy4xODg0IDEwLjg2MTNMMTMuMTg4MyAxMC44NjEyQzEzLjEzNDggMTAuNzk1NyAxMy4wODM1IDEwLjczMzYgMTMuMDM0MiAxMC42NzRDMTIuNjk3MyAxMC4yNjU5IDEyLjQ1NzQgOS45NzU0IDEyLjI3NTUgOS41MzQ1MUMxMi4wNjc4IDkuMDMxNDcgMTEuOTI4MiA4LjMwMTgyIDExLjkyODIgNi45Nzc3NkMxMS45MjgyIDUuNjU2ODggMTEuNTg5MSA0LjcxMjk5IDExLjA3MDMgNC4wMzQzM0MxMC41NTUzIDMuMzYwNzUgOS44OTY1MiAyLjk5MjM0IDkuMzM0OTkgMi43NjExNUw5LjMzNDY3IDIuNzYxMDJDOS4zMzQwOSAyLjc2MDc5IDkuMzI5ODIgMi43NTg4OCA5LjMyMzEzIDIuNzU0MjRDOS4zMTY1NSAyLjc0OTY3IDkuMzA5ODEgMi43NDM5NCA5LjMwMzgyIDIuNzM3N0M5LjI5ODc1IDIuNzMyNDEgOS4yOTU0NSAyLjcyODAzIDkuMjkzNjMgMi43MjUzMUM5LjA3MjY0IDEuOTgzNzggOC40MjY5MSAxLjIyOTQzIDcuNDczMDYgMS4yMjk0M1pNOC42ODY1NCAxMi42NDE5SDYuMTMwNDJDNi4xODc2IDEyLjcyOTUgNi4yNTQwMyAxMi44MTE1IDYuMzI5MSAxMi44ODY2QzYuNjE1MzcgMTMuMTcyOSA3LjAwMzYzIDEzLjMzMzcgNy40MDg0OCAxMy4zMzM3QzcuODEzMzMgMTMuMzMzNyA4LjIwMTYgMTMuMTcyOSA4LjQ4Nzg3IDEyLjg4NjZDOC41NjI5MyAxMi44MTE1IDguNjI5MzcgMTIuNzI5NSA4LjY4NjU0IDEyLjY0MTlaTTYuNTUxNDUgMi45OTcxNkM2LjY5NTcxIDIuNTAwODUgNy4wNzEyMSAyLjE2NjkzIDcuNDczMDYgMi4xNjY5M0M3Ljg3NDkyIDIuMTY2OTMgOC4yNTA1IDIuNTAwNjEgOC4zOTY2IDIuOTk3ODVMOC4zOTY5NSAyLjk5OTA0QzguNDg0OTkgMy4yOTU3NSA4LjcyODQzIDMuNTI1MzggOC45NzgwOSAzLjYyODA2QzkuNDU2MjUgMy44MjQ5MiA5Ljk0ODk0IDQuMTExMTkgMTAuMzI1NSA0LjYwMzczQzEwLjY5ODIgNS4wOTExOSAxMC45OTA3IDUuODI0ODYgMTAuOTkwNyA2Ljk3Nzc2QzEwLjk5MDcgOC4zNTUwNiAxMS4xMzM3IDkuMjI1NSAxMS40MDg5IDkuODkyMTdDMTEuNjQ4MyAxMC40NzIzIDExLjk4MjMgMTAuODc0OSAxMi4zMTY3IDExLjI3OEMxMi4zNjUzIDExLjMzNjYgMTIuNDEzOSAxMS4zOTUxIDEyLjQ2MjIgMTEuNDU0MkMxMi41MDE2IDExLjUwMjUgMTIuNTA0NiAxMS41NTUyIDEyLjQ3OTMgMTEuNjA1QzEyLjQ1NTMgMTEuNjUyNCAxMi4zOTk2IDExLjcwNDQgMTIuMjg5NCAxMS43MDQ0SDIuNjU5ODZDMi41NDYwNCAxMS43MDQ0IDIuNDg5NTUgMTEuNjUwOSAyLjQ2NTg4IDExLjYwNDVDMi40NDExOSAxMS41NTYyIDIuNDQzMjUgMTEuNTA0IDIuNDgzOCAxMS40NTQ0TDIuNDgzODMgMTEuNDU0NEMyLjUzMjE1IDExLjM5NTIgMi41ODA3NSAxMS4zMzY2IDIuNjI5MzQgMTEuMjc4MUwyLjYyOTQ2IDExLjI3NzlDMi45NjM4OSAxMC44NzQ4IDMuMjk3ODUgMTAuNDcyMyAzLjUzNzQgOS44OTIyOUMzLjgxMjczIDkuMjI1NzEgMy45NTYxNSA4LjM1NTMzIDMuOTU2OTUgNi45NzgwM1Y2Ljk3Nzc2QzMuOTU2OTUgNS44MjM0MSA0LjI0OTI4IDUuMDg5OTkgNC42MjE2NSA0LjYwMzA5QzQuOTk3OTIgNC4xMTExIDUuNDkwNDQgMy44MjUzNyA1Ljk2OTYzIDMuNjI4MDVDNi4yMTY2MSAzLjUyNjQ1IDYuNDYyNTcgMy4zMDAwMiA2LjU1MTExIDIuOTk4MzNMNi41NTE0NSAyLjk5NzE2WlwiLGZpbGw6dCxyb2xlOlwiaW1nXCJ9KX0pKX19LDgyNjU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQnJva2VuTGlua0ljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkJyb2tlbkxpbmtJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeHMpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIzMlwiLGhlaWdodDpcIjMyXCIsdmlld0JveDpcIjAgMCAzMiAzMlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjpbKDAsby5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTYuMzMzNSAzLjcwMDJDNi4wNTczNSAzLjcwMDIgNS44MzM1IDMuOTI0MDUgNS44MzM1IDQuMjAwMlYyNy44MDAyQzUuODMzNSAyOC4wNzYzIDYuMDU3MzUgMjguMzAwMiA2LjMzMzUgMjguMzAwMkgyNS42NjY4QzI1Ljk0MyAyOC4zMDAyIDI2LjE2NjggMjguMDc2MyAyNi4xNjY4IDI3LjgwMDJWMTIuMjMzNUgxOC4xMzM1QzE3Ljg1NzQgMTIuMjMzNSAxNy42MzM1IDEyLjAwOTcgMTcuNjMzNSAxMS43MzM1VjMuNzAwMkg2LjMzMzVaTTE4LjYzMzUgNC40MDczTDI1LjQ1OTcgMTEuMjMzNUgxOC42MzM1VjQuNDA3M1pNNC44MzM1IDQuMjAwMkM0LjgzMzUgMy4zNzE3NyA1LjUwNTA3IDIuNzAwMiA2LjMzMzUgMi43MDAySDE4LjEzMzVDMTguMjY2MSAyLjcwMDIgMTguMzkzMyAyLjc1Mjg3IDE4LjQ4NyAyLjg0NjY0TDI3LjAyMDQgMTEuMzhDMjcuMTE0MSAxMS40NzM3IDI3LjE2NjggMTEuNjAwOSAyNy4xNjY4IDExLjczMzVWMjcuODAwMkMyNy4xNjY4IDI4LjYyODYgMjYuNDk1MyAyOS4zMDAyIDI1LjY2NjggMjkuMzAwMkg2LjMzMzVDNS41MDUwNyAyOS4zMDAyIDQuODMzNSAyOC42Mjg2IDQuODMzNSAyNy44MDAyVjQuMjAwMlpcIixmaWxsOnR9KSwoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTQuMjQ4IDIxLjkwODRWMjEuODQwOUMxNC4yNTI4IDIxLjQwMDYgMTQuMjk2NiAyMS4wNTAyIDE0LjM3OTQgMjAuNzg5OEMxNC40NjQ3IDIwLjUyOTQgMTQuNTg1NCAyMC4zMTg3IDE0Ljc0MTcgMjAuMTU3N0MxNC44OTc5IDE5Ljk5NjcgMTUuMDg2MSAxOS44NDk5IDE1LjMwNjMgMTkuNzE3M0MxNS40NDgzIDE5LjYyNzQgMTUuNTc2MiAxOS41MjY4IDE1LjY4OTggMTkuNDE1NUMxNS44MDM0IDE5LjMwNDIgMTUuODkzNCAxOS4xNzY0IDE1Ljk1OTcgMTkuMDMyQzE2LjAyNiAxOC44ODc1IDE2LjA1OTEgMTguNzI3NyAxNi4wNTkxIDE4LjU1MjZDMTYuMDU5MSAxOC4zNDE5IDE2LjAwOTQgMTguMTU5NiAxNS45MSAxOC4wMDU3QzE1LjgxMDUgMTcuODUxOCAxNS42NzggMTcuNzMzNCAxNS41MTIzIDE3LjY1MDZDMTUuMzQ4OSAxNy41NjUzIDE1LjE2NjYgMTcuNTIyNyAxNC45NjU0IDE3LjUyMjdDMTQuNzgzMSAxNy41MjI3IDE0LjYwOTEgMTcuNTYwNiAxNC40NDM0IDE3LjYzNjRDMTQuMjc3NiAxNy43MTIxIDE0LjE0MDMgMTcuODMwNSAxNC4wMzE0IDE3Ljk5MTVDMTMuOTIyNSAxOC4xNTAxIDEzLjg1OTggMTguMzU0OSAxMy44NDMyIDE4LjYwNThIMTIuNzYzN0MxMi43ODAyIDE4LjE3OTcgMTIuODg4IDE3LjgxOTggMTMuMDg2OCAxNy41MjYzQzEzLjI4NTcgMTcuMjMwNCAxMy41NDg1IDE3LjAwNjYgMTMuODc1MiAxNi44NTUxQzE0LjIwNDIgMTYuNzAzNiAxNC41Njc2IDE2LjYyNzggMTQuOTY1NCAxNi42Mjc4QzE1LjQwMSAxNi42Mjc4IDE1Ljc4MjEgMTYuNzA5NSAxNi4xMDg4IDE2Ljg3MjlDMTYuNDM1NSAxNy4wMzM5IDE2LjY4ODkgMTcuMjU5OSAxNi44Njg4IDE3LjU1MTFDMTcuMDUxMSAxNy44NCAxNy4xNDIyIDE4LjE3NzMgMTcuMTQyMiAxOC41NjMyQzE3LjE0MjIgMTguODI4NCAxNy4xMDA4IDE5LjA2NzUgMTcuMDE3OSAxOS4yODA1QzE2LjkzNTEgMTkuNDkxMiAxNi44MTY3IDE5LjY3OTUgMTYuNjYyOCAxOS44NDUyQzE2LjUxMTMgMjAuMDEwOSAxNi4zMjkgMjAuMTU3NyAxNi4xMTU5IDIwLjI4NTVDMTUuOTE0NyAyMC40MTEgMTUuNzUxNCAyMC41NDEyIDE1LjYyNTkgMjAuNjc2MUMxNS41MDI4IDIwLjgxMTEgMTUuNDEyOCAyMC45NzA5IDE1LjM1NiAyMS4xNTU1QzE1LjI5OTIgMjEuMzQwMiAxNS4yNjg0IDIxLjU2ODcgMTUuMjYzNyAyMS44NDA5VjIxLjkwODRIMTQuMjQ4Wk0xNC43ODQzIDI0LjA2NzVDMTQuNTkwMSAyNC4wNjc1IDE0LjQyMzIgMjMuOTk4OCAxNC4yODM2IDIzLjg2MTVDMTQuMTQzOSAyMy43MjE4IDE0LjA3NCAyMy41NTM3IDE0LjA3NCAyMy4zNTcyQzE0LjA3NCAyMy4xNjMxIDE0LjE0MzkgMjIuOTk3NCAxNC4yODM2IDIyLjg2MDFDMTQuNDIzMiAyMi43MjA0IDE0LjU5MDEgMjIuNjUwNiAxNC43ODQzIDIyLjY1MDZDMTQuOTc2IDIyLjY1MDYgMTUuMTQxNyAyMi43MjA0IDE1LjI4MTQgMjIuODYwMUMxNS40MjM1IDIyLjk5NzQgMTUuNDk0NSAyMy4xNjMxIDE1LjQ5NDUgMjMuMzU3MkMxNS40OTQ1IDIzLjQ4NzUgMTUuNDYxNCAyMy42MDcgMTUuMzk1MSAyMy43MTU5QzE1LjMzMTEgMjMuODIyNCAxNS4yNDU5IDIzLjkwNzcgMTUuMTM5NCAyMy45NzE2QzE1LjAzMjggMjQuMDM1NSAxNC45MTQ1IDI0LjA2NzUgMTQuNzg0MyAyNC4wNjc1WlwiLGZpbGw6dH0pXX0pKX19LDY0NDc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2hldnJvbkRvd25JY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5DaGV2cm9uRG93bkljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix3aWR0aDpcIjI0XCIsaGVpZ2h0OlwiMjRcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIn0se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIixPYmplY3QuYXNzaWduKHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTUuMDUyODIgOS44ODcwN0M1LjMzNjEyIDkuNTg0ODkgNS44MTA3NSA5LjU2OTU4IDYuMTEyOTMgOS44NTI4N0wxMiAxNS4zNzJMMTcuODg3IDkuODUyODdDMTguMTg5MiA5LjU2OTU4IDE4LjY2MzggOS41ODQ4OSAxOC45NDcxIDkuODg3MDdDMTkuMjMwNCAxMC4xODkzIDE5LjIxNTEgMTAuNjYzOSAxOC45MTI5IDEwLjk0NzJMMTIuNTEyOSAxNi45NDcyQzEyLjIyNDQgMTcuMjE3NiAxMS43NzU1IDE3LjIxNzYgMTEuNDg3IDE2Ljk0NzJMNS4wODcwMiAxMC45NDcyQzQuNzg0ODQgMTAuNjYzOSA0Ljc2OTUyIDEwLjE4OTMgNS4wNTI4MiA5Ljg4NzA3WlwiLGZpbGw6dH0sbikpfSkpfX0sMjE0NzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DaGV2cm9uTGVmdEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkNoZXZyb25MZWZ0SWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMjRcIixoZWlnaHQ6XCIyNFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwifSx7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLE9iamVjdC5hc3NpZ24oe2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMTQuMTEyNyA1LjA1MjcyQzE0LjQxNDkgNS4zMzYwMSAxNC40MzAyIDUuODEwNjQgMTQuMTQ2OSA2LjExMjgyTDguNjI3ODQgMTEuOTk5OUwxNC4xNDY5IDE3Ljg4NjlDMTQuNDMwMiAxOC4xODkxIDE0LjQxNDkgMTguNjYzNyAxNC4xMTI3IDE4Ljk0N0MxMy44MTA2IDE5LjIzMDMgMTMuMzM1OSAxOS4yMTUgMTMuMDUyNiAxOC45MTI4TDcuMDUyNjQgMTIuNTEyOEM2Ljc4MjE4IDEyLjIyNDMgNi43ODIxOCAxMS43NzU0IDcuMDUyNjQgMTEuNDg2OUwxMy4wNTI2IDUuMDg2OTFDMTMuMzM1OSA0Ljc4NDczIDEzLjgxMDYgNC43Njk0MiAxNC4xMTI3IDUuMDUyNzJaXCIsZmlsbDp0fSxuKSl9KSl9fSwyNDAyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoZXZyb25SaWdodEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkNoZXZyb25SaWdodEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix3aWR0aDpcIjI0XCIsaGVpZ2h0OlwiMjRcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIn0se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIixPYmplY3QuYXNzaWduKHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTkuODY5ODYgNi42Njk3MkMxMC4xNjI4IDYuMzc2ODMgMTAuNjM3NiA2LjM3NjgzIDEwLjkzMDUgNi42Njk3MkwxNS43MzA1IDExLjQ2OTdDMTUuODcxMiAxMS42MTA0IDE1Ljk1MDIgMTEuODAxMSAxNS45NTAyIDEyQzE1Ljk1MDIgMTIuMTk5IDE1Ljg3MTIgMTIuMzg5NyAxNS43MzA1IDEyLjUzMDRMMTAuOTMwNSAxNy4zMzA0QzEwLjYzNzYgMTcuNjIzMyAxMC4xNjI4IDE3LjYyMzMgOS44Njk4NiAxNy4zMzA0QzkuNTc2OTYgMTcuMDM3NSA5LjU3Njk2IDE2LjU2MjYgOS44Njk4NiAxNi4yNjk3TDE0LjEzOTUgMTJMOS44Njk4NiA3LjczMDM4QzkuNTc2OTYgNy40Mzc0OSA5LjU3Njk2IDYuOTYyNjEgOS44Njk4NiA2LjY2OTcyWlwiLGZpbGw6dH0sbikpfSkpfX0sNDgyNTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DaGV2cm9uVXBJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5DaGV2cm9uVXBJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIyNFwiLGhlaWdodDpcIjI0XCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCJ9LHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIsT2JqZWN0LmFzc2lnbih7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk01LjA1Mjg1IDE0LjExMjlDNS4zMzYxNSAxNC40MTUxIDUuODEwNzggMTQuNDMwNCA2LjExMjk2IDE0LjE0NzFMMTIgOC42MjgwMkwxNy44ODcgMTQuMTQ3MUMxOC4xODkyIDE0LjQzMDQgMTguNjYzOSAxNC40MTUxIDE4Ljk0NzIgMTQuMTEyOUMxOS4yMzA1IDEzLjgxMDcgMTkuMjE1MSAxMy4zMzYxIDE4LjkxMyAxMy4wNTI4TDEyLjUxMyA3LjA1MjgyQzEyLjIyNDUgNi43ODIzNiAxMS43NzU1IDYuNzgyMzYgMTEuNDg3MSA3LjA1MjgyTDUuMDg3MDUgMTMuMDUyOEM0Ljc4NDg3IDEzLjMzNjEgNC43Njk1NiAxMy44MTA3IDUuMDUyODUgMTQuMTEyOVpcIixmaWxsOnR9LG4pKX0pKX19LDEyODE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRXhjbGFtYXRpb25DaXJjbGVkRmlsbGVkSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpLGk9big3NTE4KSxhPW4oNjY4OSksbD1uKDM0NzEpO3QuRXhjbGFtYXRpb25DaXJjbGVkRmlsbGVkSWNvbj1lPT57dmFye3NlY29uZGFyeUNvbG9yOnQsY29sb3I6bj1cImN1cnJlbnRDb2xvclwifT1lLGM9cihlLFtcInNlY29uZGFyeUNvbG9yXCIsXCJjb2xvclwiXSk7Y29uc3Qgcz0oMCxhLnVzZUNvbnRleHQpKGkuVGhlbWVDb250ZXh0KS5zZWxlY3RlZFNjaGVtZTtyZXR1cm4gdHx8KHQ9XCJkYXJrXCI9PT1zP2wuQ29sb3IuZGFya0dyYXk1OmwuQ29sb3Iud2hpdGUpLCgwLG8uanN4cykoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTdcIix2aWV3Qm94OlwiMCAwIDE2IDE3XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGMse2NoaWxkcmVuOlsoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNNy45OTk4OCAxNS4zMzE3QzExLjc3MjkgMTUuMzMxNyAxNC44MzE2IDEyLjI3MzEgMTQuODMxNiA4LjUwMDA3QzE0LjgzMTYgNC43MjcwNCAxMS43NzI5IDEuNjY4NCA3Ljk5OTg4IDEuNjY4NEM0LjIyNjg2IDEuNjY4NCAxLjE2ODIxIDQuNzI3MDQgMS4xNjgyMSA4LjUwMDA3QzEuMTY4MjEgMTIuMjczMSA0LjIyNjg2IDE1LjMzMTcgNy45OTk4OCAxNS4zMzE3WlwiLGZpbGw6bn0pLCgwLG8uanN4KShcIm1hc2tcIixPYmplY3QuYXNzaWduKHtpZDpcInBhdGgtMi1pbnNpZGUtMV82XzI2MjAzM1wiLGZpbGw6dH0se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk03Ljk5OTkzIDQuMzczODRDNy41NzUyNSA0LjM3Mzg0IDcuMjM1NjQgNC43MjY3NiA3LjI1MTk2IDUuMTUxMTNMNy40MjI5NiA5LjU5NzA2QzcuNDM0ODkgOS45MDcwOCA3LjY4OTY4IDEwLjE1MjMgNy45OTk5MyAxMC4xNTIzQzguMzEwMTkgMTAuMTUyMyA4LjU2NDk4IDkuOTA3MDggOC41NzY5IDkuNTk3MDZMOC43NDc5IDUuMTUxMTNDOC43NjQyMiA0LjcyNjc2IDguNDI0NjEgNC4zNzM4NCA3Ljk5OTkzIDQuMzczODRaTTcuOTk5OTMgMTIuNjQwNkM4LjQ2MDIyIDEyLjY0MDYgOC44MzMzNSAxMi4yNjc1IDguODMzMzUgMTEuODA3MkM4LjgzMzM1IDExLjM0NjkgOC40NjAyMiAxMC45NzM4IDcuOTk5OTMgMTAuOTczOEM3LjUzOTY0IDEwLjk3MzggNy4xNjY1IDExLjM0NjkgNy4xNjY1IDExLjgwNzJDNy4xNjY1IDEyLjI2NzUgNy41Mzk2NCAxMi42NDA2IDcuOTk5OTMgMTIuNjQwNlpcIn0pfSkpLCgwLG8uanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk03Ljk5OTkzIDQuMzczODRDNy41NzUyNSA0LjM3Mzg0IDcuMjM1NjQgNC43MjY3NiA3LjI1MTk2IDUuMTUxMTNMNy40MjI5NiA5LjU5NzA2QzcuNDM0ODkgOS45MDcwOCA3LjY4OTY4IDEwLjE1MjMgNy45OTk5MyAxMC4xNTIzQzguMzEwMTkgMTAuMTUyMyA4LjU2NDk4IDkuOTA3MDggOC41NzY5IDkuNTk3MDZMOC43NDc5IDUuMTUxMTNDOC43NjQyMiA0LjcyNjc2IDguNDI0NjEgNC4zNzM4NCA3Ljk5OTkzIDQuMzczODRaTTcuOTk5OTMgMTIuNjQwNkM4LjQ2MDIyIDEyLjY0MDYgOC44MzMzNSAxMi4yNjc1IDguODMzMzUgMTEuODA3MkM4LjgzMzM1IDExLjM0NjkgOC40NjAyMiAxMC45NzM4IDcuOTk5OTMgMTAuOTczOEM3LjUzOTY0IDEwLjk3MzggNy4xNjY1IDExLjM0NjkgNy4xNjY1IDExLjgwNzJDNy4xNjY1IDEyLjI2NzUgNy41Mzk2NCAxMi42NDA2IDcuOTk5OTMgMTIuNjQwNlpcIixmaWxsOnR9KSwoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNNy4yNTE5NiA1LjE1MTEzTDUuNjQ4NzQgNS4yMTI3OUw1LjY0ODc0IDUuMjEyNzlMNy4yNTE5NiA1LjE1MTEzWk03LjQyMjk2IDkuNTk3MDZMOS4wMjYxOCA5LjUzNTRMOS4wMjYxOCA5LjUzNTRMNy40MjI5NiA5LjU5NzA2Wk04LjU3NjkgOS41OTcwNkwxMC4xODAxIDkuNjU4NzJMOC41NzY5IDkuNTk3MDZaTTguNzQ3OSA1LjE1MTEzTDEwLjM1MTEgNS4yMTI3OUwxMC4zNTExIDUuMjEyNzlMOC43NDc5IDUuMTUxMTNaTTguODU1MTkgNS4wODk0N0M4Ljg3Mzg1IDUuNTc0NyA4LjQ4NTUzIDUuOTc4MjUgNy45OTk5MyA1Ljk3ODI1VjIuNzY5NDNDNi42NjQ5OCAyLjc2OTQzIDUuNTk3NDQgMy44Nzg4MiA1LjY0ODc0IDUuMjEyNzlMOC44NTUxOSA1LjA4OTQ3Wk05LjAyNjE4IDkuNTM1NEw4Ljg1NTE5IDUuMDg5NDdMNS42NDg3NCA1LjIxMjc5TDUuODE5NzQgOS42NTg3Mkw5LjAyNjE4IDkuNTM1NFpNNy45OTk5MyA4LjU0Nzg2QzguNTUxNzcgOC41NDc4NiA5LjAwNDk4IDguOTgzOTYgOS4wMjYxOCA5LjUzNTRMNS44MTk3NCA5LjY1ODcyQzUuODY0OCAxMC44MzAyIDYuODI3NTggMTEuNzU2NyA3Ljk5OTkzIDExLjc1NjdWOC41NDc4NlpNNi45NzM2OCA5LjUzNTRDNi45OTQ4OSA4Ljk4Mzk2IDcuNDQ4MDkgOC41NDc4NiA3Ljk5OTkzIDguNTQ3ODZWMTEuNzU2N0M5LjE3MjI4IDExLjc1NjcgMTAuMTM1MSAxMC44MzAyIDEwLjE4MDEgOS42NTg3Mkw2Ljk3MzY4IDkuNTM1NFpNNy4xNDQ2OCA1LjA4OTQ3TDYuOTczNjggOS41MzU0TDEwLjE4MDEgOS42NTg3MkwxMC4zNTExIDUuMjEyNzlMNy4xNDQ2OCA1LjA4OTQ3Wk03Ljk5OTkzIDUuOTc4MjVDNy41MTQzNCA1Ljk3ODI1IDcuMTI2MDIgNS41NzQ3IDcuMTQ0NjggNS4wODk0N0wxMC4zNTExIDUuMjEyNzlDMTAuNDAyNCAzLjg3ODgyIDkuMzM0ODkgMi43Njk0MyA3Ljk5OTkzIDIuNzY5NDNWNS45NzgyNVpNNy4yMjg5NSAxMS44MDcyQzcuMjI4OTUgMTEuMzgxNCA3LjU3NDEzIDExLjAzNjIgNy45OTk5MyAxMS4wMzYyVjE0LjI0NUM5LjM0NjMxIDE0LjI0NSAxMC40Mzc4IDEzLjE1MzYgMTAuNDM3OCAxMS44MDcySDcuMjI4OTVaTTcuOTk5OTMgMTIuNTc4MkM3LjU3NDEzIDEyLjU3ODIgNy4yMjg5NSAxMi4yMzMgNy4yMjg5NSAxMS44MDcySDEwLjQzNzhDMTAuNDM3OCAxMC40NjA4IDkuMzQ2MzEgOS4zNjkzNyA3Ljk5OTkzIDkuMzY5MzdWMTIuNTc4MlpNOC43NzA5MSAxMS44MDcyQzguNzcwOTEgMTIuMjMzIDguNDI1NzMgMTIuNTc4MiA3Ljk5OTkzIDEyLjU3ODJWOS4zNjkzN0M2LjY1MzU1IDkuMzY5MzcgNS41NjIxIDEwLjQ2MDggNS41NjIxIDExLjgwNzJIOC43NzA5MVpNNy45OTk5MyAxMS4wMzYyQzguNDI1NzMgMTEuMDM2MiA4Ljc3MDkxIDExLjM4MTQgOC43NzA5MSAxMS44MDcySDUuNTYyMUM1LjU2MjEgMTMuMTUzNiA2LjY1MzU1IDE0LjI0NSA3Ljk5OTkzIDE0LjI0NVYxMS4wMzYyWlwiLGZpbGw6dCxtYXNrOlwidXJsKCNwYXRoLTItaW5zaWRlLTFfNl8yNjIwMzMpXCJ9KV19KSl9fSw2Nzk1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkZpbHRlckljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkZpbHRlckljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTJcIixoZWlnaHQ6XCI3XCIsdmlld0JveDpcIjAgMCAxMiA3XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZDpcIk00IDYuNUM0IDYuMzY3MzkgNC4wNTI2OCA2LjI0MDIxIDQuMTQ2NDUgNi4xNDY0NUM0LjI0MDIxIDYuMDUyNjggNC4zNjczOSA2IDQuNSA2SDcuNUM3LjYzMjYxIDYgNy43NTk3OSA2LjA1MjY4IDcuODUzNTUgNi4xNDY0NUM3Ljk0NzMyIDYuMjQwMjEgOCA2LjM2NzM5IDggNi41QzggNi42MzI2MSA3Ljk0NzMyIDYuNzU5NzkgNy44NTM1NSA2Ljg1MzU1QzcuNzU5NzkgNi45NDczMiA3LjYzMjYxIDcgNy41IDdINC41QzQuMzY3MzkgNyA0LjI0MDIxIDYuOTQ3MzIgNC4xNDY0NSA2Ljg1MzU1QzQuMDUyNjggNi43NTk3OSA0IDYuNjMyNjEgNCA2LjVaTTIgMy41QzIgMy4zNjczOSAyLjA1MjY4IDMuMjQwMjEgMi4xNDY0NSAzLjE0NjQ1QzIuMjQwMjEgMy4wNTI2OCAyLjM2NzM5IDMgMi41IDNIOS41QzkuNjMyNjEgMyA5Ljc1OTc5IDMuMDUyNjggOS44NTM1NSAzLjE0NjQ1QzkuOTQ3MzIgMy4yNDAyMSAxMCAzLjM2NzM5IDEwIDMuNUMxMCAzLjYzMjYxIDkuOTQ3MzIgMy43NTk3OSA5Ljg1MzU1IDMuODUzNTVDOS43NTk3OSAzLjk0NzMyIDkuNjMyNjEgNCA5LjUgNEgyLjVDMi4zNjczOSA0IDIuMjQwMjEgMy45NDczMiAyLjE0NjQ1IDMuODUzNTVDMi4wNTI2OCAzLjc1OTc5IDIgMy42MzI2MSAyIDMuNVpNMCAwLjVDMCAwLjM2NzM5MiAwLjA1MjY3ODUgMC4yNDAyMTUgMC4xNDY0NDcgMC4xNDY0NDdDMC4yNDAyMTUgMC4wNTI2Nzg1IDAuMzY3MzkyIDAgMC41IDBIMTEuNUMxMS42MzI2IDAgMTEuNzU5OCAwLjA1MjY3ODUgMTEuODUzNiAwLjE0NjQ0N0MxMS45NDczIDAuMjQwMjE1IDEyIDAuMzY3MzkyIDEyIDAuNUMxMiAwLjYzMjYwOCAxMS45NDczIDAuNzU5Nzg1IDExLjg1MzYgMC44NTM1NTNDMTEuNzU5OCAwLjk0NzMyMSAxMS42MzI2IDEgMTEuNSAxSDAuNUMwLjM2NzM5MiAxIDAuMjQwMjE1IDAuOTQ3MzIxIDAuMTQ2NDQ3IDAuODUzNTUzQzAuMDUyNjc4NSAwLjc1OTc4NSAwIDAuNjMyNjA4IDAgMC41WlwiLGZpbGw6dH0pfSkpfX0sMTE3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkZsb3BweURpc2tJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5GbG9wcHlEaXNrSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMlwiLGhlaWdodDpcIjEyXCIsdmlld0JveDpcIjAgMCAxMiAxMlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNMS44NzUgMi4xODc1QzEuODc1IDIuMTUyOTggMS45MDI5OCAyLjEyNSAxLjkzNzUgMi4xMjVIOC4yMzAzOUM4LjI0Njk3IDIuMTI1IDguMjYyODcgMi4xMzE1OCA4LjI3NDU5IDIuMTQzMzFMOS45ODE2OSAzLjg1MDQxQzkuOTkzNDEgMy44NjIxMyAxMCAzLjg3ODAzIDEwIDMuODk0NjFWMTAuMTg3NUMxMCAxMC4yMjIgOS45NzIwMiAxMC4yNSA5LjkzNzUgMTAuMjVIMS45Mzc1QzEuOTAyOTggMTAuMjUgMS44NzUgMTAuMjIyIDEuODc1IDEwLjE4NzVWMi4xODc1Wk0xLjkzNzUgMS4yNUMxLjQxOTczIDEuMjUgMSAxLjY2OTczIDEgMi4xODc1VjEwLjE4NzVDMSAxMC43MDUzIDEuNDE5NzMgMTEuMTI1IDEuOTM3NSAxMS4xMjVIOS45Mzc1QzEwLjQ1NTMgMTEuMTI1IDEwLjg3NSAxMC43MDUzIDEwLjg3NSAxMC4xODc1VjMuODk0NjFDMTAuODc1IDMuNjQ1OTcgMTAuNzc2MiAzLjQwNzUxIDEwLjYwMDQgMy4yMzE2OUw4Ljg5MzMxIDEuNTI0NTlDOC43MTc0OSAxLjM0ODc3IDguNDc5MDMgMS4yNSA4LjIzMDM5IDEuMjVIMS45Mzc1Wk0yLjg0OTI0IDMuNDA4MUMyLjg0OTI0IDMuMjM3NTQgMi45ODc1MSAzLjA5OTI3IDMuMTU4MDcgMy4wOTkyN0g3LjQ4MTZDNy42NTIxNSAzLjA5OTI3IDcuNzkwNDIgMy4yMzc1NCA3Ljc5MDQyIDMuNDA4MVY0LjY0MzM5QzcuNzkwNDIgNC44MTM5NSA3LjY1MjE1IDQuOTUyMjEgNy40ODE2IDQuOTUyMjFIMy4xNTgwN0MyLjk4NzUxIDQuOTUyMjEgMi44NDkyNCA0LjgxMzk1IDIuODQ5MjQgNC42NDMzOVYzLjQwODFaTTQuNTM2OCA2LjYzOTc3QzQuODI2MzggNi4zNTAxOSA1LjIxOTEzIDYuMTg3NTEgNS42Mjg2NSA2LjE4NzUxQzYuMDM4MTggNi4xODc1MSA2LjQzMDkzIDYuMzUwMTkgNi43MjA1MSA2LjYzOTc3QzcuMDEwMDkgNi45MjkzNSA3LjE3Mjc3IDcuMzIyMSA3LjE3Mjc3IDcuNzMxNjNDNy4xNzI3NyA4LjE0MTE1IDcuMDEwMDkgOC41MzM5IDYuNzIwNTEgOC44MjM0OEM2LjQzMDkzIDkuMTEzMDYgNi4wMzgxOCA5LjI3NTc0IDUuNjI4NjUgOS4yNzU3NEM1LjIxOTEzIDkuMjc1NzQgNC44MjYzOCA5LjExMzA2IDQuNTM2OCA4LjgyMzQ4QzQuMjQ3MjIgOC41MzM5IDQuMDg0NTQgOC4xNDExNSA0LjA4NDU0IDcuNzMxNjNDNC4wODQ1NCA3LjMyMjEgNC4yNDcyMiA2LjkyOTM1IDQuNTM2OCA2LjYzOTc3WlwiLGZpbGw6dCxyb2xlOlwiaW1nXCJ9KX0pKX19LDUyOTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5GcmFnbWVudHNJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5GcmFnbWVudHNJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjIwXCIsaGVpZ2h0OlwiMjBcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZDpcIk04LjgwMDAxIDQuODAwMDJINC44MDAwMUMzLjkxNzYxIDQuODAwMDIgMy4yMDAwMSA1LjUxNzYyIDMuMjAwMDEgNi40MDAwMlYxMC40QzMuMjAwMDEgMTEuMjgyNCAzLjkxNzYxIDEyIDQuODAwMDEgMTJIOC44MDAwMUM5LjY4MjQxIDEyIDEwLjQgMTEuMjgyNCAxMC40IDEwLjRWNi40MDAwMkMxMC40IDUuNTE3NjIgOS42ODI0MSA0LjgwMDAyIDguODAwMDEgNC44MDAwMlpNMjAuMzU5MiA2LjQ2ODgyTDE3LjUzMTIgMy42NDAwMkMxNi45MDggMy4wMTYwMiAxNS44OTIgMy4wMTYwMiAxNS4yNjg4IDMuNjQwMDJMMTIuNDQwOCA2LjQ2ODgyQzExLjgxNjggNy4wOTI4MiAxMS44MTY4IDguMTA3MjIgMTIuNDQwOCA4LjczMTIyTDE1LjI2ODggMTEuNTZDMTUuNTgwOCAxMS44NzIgMTUuOTkwNCAxMi4wMjggMTYuNCAxMi4wMjhDMTYuODA5NiAxMi4wMjggMTcuMjE5MiAxMS44NzIgMTcuNTMxMiAxMS41NkwyMC4zNTkyIDguNzMxMjJDMjAuOTgzMiA4LjEwNzIyIDIwLjk4MzIgNy4wOTI4MiAyMC4zNTkyIDYuNDY4ODJaTTguODAwMDEgMTMuNkg0LjgwMDAxQzMuOTE3NjEgMTMuNiAzLjIwMDAxIDE0LjMxNzYgMy4yMDAwMSAxNS4yVjE5LjJDMy4yMDAwMSAyMC4wODI0IDMuOTE3NjEgMjAuOCA0LjgwMDAxIDIwLjhIOC44MDAwMUM5LjY4MjQxIDIwLjggMTAuNCAyMC4wODI0IDEwLjQgMTkuMlYxNS4yQzEwLjQgMTQuMzE3NiA5LjY4MjQxIDEzLjYgOC44MDAwMSAxMy42Wk0xNy42IDEzLjZIMTMuNkMxMi43MTc2IDEzLjYgMTIgMTQuMzE3NiAxMiAxNS4yVjE5LjJDMTIgMjAuMDgyNCAxMi43MTc2IDIwLjggMTMuNiAyMC44SDE3LjZDMTguNDgyNCAyMC44IDE5LjIgMjAuMDgyNCAxOS4yIDE5LjJWMTUuMkMxOS4yIDE0LjMxNzYgMTguNDgyNCAxMy42IDE3LjYgMTMuNlpcIixmaWxsOnR9KX0pKX19LDc3ODg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTGlnaHRCdWxiRmlsbGVkSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuTGlnaHRCdWxiRmlsbGVkSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3hzKShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTBcIixoZWlnaHQ6XCIxMlwiLHZpZXdCb3g6XCIwIDAgMTAgMTJcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46WygwLG8uanN4KShcInBhdGhcIix7ZDpcIk0xLjgzIDEuMzEwMDhDMi4yNDQwOSAwLjg5MTY2NyAyLjczNzY4IDAuNTYwMzA3IDMuMjgxNzQgMC4zMzU1MDRDMy44MjU4MSAwLjExMDcwMSA0LjQwOTM0IC0wLjAwMzAwMzMzIDQuOTk4IDAuMDAxMDgyOTFDNi4xODYyOCAtMC4wMDMxMDc4NSA3LjMyOTA1IDAuNDU3NzMzIDguMTgyIDEuMjg1MDhDOC41OTg4MSAxLjY4NzE5IDguOTMwNDYgMi4xNjkwMyA5LjE1NzIzIDIuNzAxOTRDOS4zODQgMy4yMzQ4NSA5LjUwMTI1IDMuODA3OTMgOS41MDIgNC4zODcwOEM5LjUwMiA1LjY4MDA4IDguOTE3IDYuODMwMDggNy44ODMgNy44MjUwOEw3LjU3NyA5LjAwMDA4SDIuNDY2TDIuMjM2IDguMDM3MDhDMS4xNTQgNi45MDcwOCAwLjU1NiA1LjgxOTA4IDAuNSA0LjU4MjA4VjQuNTQ0MDhDMC41NCAzLjI0ODA4IDEuMDMzIDIuMTIxMDggMS44MzEgMS4zMTEwOEwxLjgzIDEuMzEwMDhaXCIsZmlsbDp0fSksKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTIuNzA0MSAxMEwyLjkzNzEgMTAuOTc4TDIuOTQ1MSAxMUMzLjA0NTEgMTEuMjk3IDMuMjM3MSAxMS41NDQgMy40NzkxIDExLjcxN0MzLjczMDEgMTEuODk3IDQuMDM3MSAxMS45OTkgNC4zNjExIDExLjk5OUg0LjM2MzFMNS43NDYxIDExLjk5NUw1Ljc2NzEgMTEuOTkzQzYuMDc1ODcgMTEuOTY2OSA2LjM2OTEzIDExLjg0NjUgNi42MDcxIDExLjY0OEM2LjgzODEgMTEuNDU0IDcuMDEzMSAxMS4xODggNy4wODcxIDEwLjg3NEw3LjMxNjEgMTBIMi43MDQxVjEwWlwiLGZpbGw6dH0pXX0pKX19LDM3MDM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTGlnaHRCdWxiT3V0bGluZWRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5MaWdodEJ1bGJPdXRsaW5lZEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTBcIixoZWlnaHQ6XCIxMlwiLHZpZXdCb3g6XCIwIDAgMTAgMTJcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTQuOTk3NjYgMC4wMDEwMDE0OUMzLjc2ODY2IDAuMDAxMDAxNDkgMi42NDc2NiAwLjQ4MjAwMiAxLjgyOTY2IDEuMzExQzEuMDMxNjYgMi4xMjEgMC41Mzk2NTcgMy4yNDggMC40OTk2NTcgNC41NDRMMC40OTg2NTcgNC41NjNWNC41ODNDMC41NTU2NTcgNS44MTkgMS4xNTM2NiA2LjkwNyAyLjIzNTY2IDguMDM3TDIuOTM3NjYgMTAuOTc4TDIuOTQ0NjYgMTFDMy4wNDQ2NiAxMS4yOTcgMy4yMzY2NiAxMS41NDQgMy40Nzg2NiAxMS43MTdDMy43Mjk2NiAxMS44OTcgNC4wMzY2NiAxMS45OTkgNC4zNjE2NiAxMS45OTlMNS43NDU2NiAxMS45OTVMNS43NjY2NiAxMS45OTNDNi4wNzU0MiAxMS45NjY5IDYuMzY4NjkgMTEuODQ2NSA2LjYwNjY2IDExLjY0OEM2LjgzNzY2IDExLjQ1NCA3LjAxMjY2IDExLjE4OCA3LjA4NjY2IDEwLjg3NEw3Ljg4MjY2IDcuODI0QzguOTE2NjYgNi44MyA5LjUwMDY2IDUuNjggOS41MDA2NiA0LjM4N0M5LjQ5OTkxIDMuODA3ODUgOS4zODI2NiAzLjIzNDc3IDkuMTU1ODkgMi43MDE4NkM4LjkyOTEyIDIuMTY4OTUgOC41OTc0NiAxLjY4NzExIDguMTgwNjYgMS4yODVDNy4zMjc5NiAwLjQ1Nzg5NCA2LjE4NTU5IC0wLjAwMjkyNzg4IDQuOTk3NjYgMC4wMDEwMDE0OVpNMi41NDI2NiAyLjAxM0MyLjg2MzQ0IDEuNjg4NzEgMy4yNDU5NiAxLjQzMTk4IDMuNjY3NjIgMS4yNThDNC4wODkyOCAxLjA4NDAxIDQuNTQxNTMgMC45OTYyODMgNC45OTc2NiAxQzUuOTI1MTQgMC45OTU3ODQgNi44MTc0NCAxLjM1NDcxIDcuNDgzNjYgMkM3LjgwNDcxIDIuMzA5MDQgOC4wNjAyMyAyLjY3OTU3IDguMjM0OTYgMy4wODk1MUM4LjQwOTY5IDMuNDk5NDUgOC41MDAwNSAzLjk0MDM4IDguNTAwNjYgNC4zODZDOC41MDA2NiA1LjM3NyA4LjA0NzY2IDYuMzEyIDcuMDk2NjYgNy4xOTFMNi45ODg2NiA3LjI5MUw2LjU0MjY2IDlIMy40OTM2NkwzLjE0NDY2IDcuNTM2TDMuMDQ3NjYgNy40MzZDMS45OTk2NiA2LjM3MiAxLjU0NzY2IDUuNDggMS40OTg2NiA0LjU1N0MxLjUzNjY2IDMuNTA5IDEuOTMyNjYgMi42MzIgMi41NDI2NiAyLjAxNFYyLjAxM1pNMy43MzI2NiAxMEg2LjI4MjY2TDYuMTE3NjYgMTAuNjI3TDYuMTE0NjYgMTAuNjRDNi4wOTIxMSAxMC43MzQyIDYuMDM5NDQgMTAuODE4NSA1Ljk2NDY2IDEwLjg4QzUuODg4NzMgMTAuOTQzNSA1Ljc5NTk1IDEwLjk4MzQgNS42OTc2NiAxMC45OTVMNC4zNjA2NiAxMUM0LjI1MzIxIDExLjAwMDMgNC4xNDgzMyAxMC45NjcxIDQuMDYwNjYgMTAuOTA1QzMuOTg3NyAxMC44NTM2IDMuOTMxMzkgMTAuNzgyIDMuODk4NjYgMTAuNjk5TDMuNzMxNjYgMTBIMy43MzI2NlpcIixmaWxsOnR9KX0pKX19LDgzMTE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTG9ja2VkQ2xvc2VkRmlsbGVkSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuTG9ja2VkQ2xvc2VkRmlsbGVkSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNNS4wMDAwMyA0LjYzNjIzQzUuMDAwMDMgMy43NjA1MiA1LjI0MjIyIDMuMTA1NjEgNS42NDMyNyAyLjY3Mzc4QzYuMDM5MzggMi4yNDcyNyA2LjY0NTg1IDEuOTc4NTIgNy41MDE0MyAxLjk3ODUyQzguMzU3NDggMS45Nzg1MiA4Ljk2MzA5IDIuMjQ2NzMgOS4zNTgyNyAyLjY3MjNDOS43NTg0MSAzLjEwMzIxIDEwIDMuNzU3MjkgMTAgNC42MzM0NlY2LjUwMDIxSDExVjQuNjMzNDZDMTEgMy41NzkxNyAxMC43MDc2IDIuNjU1NzggMTAuMDkxMSAxLjk5MTgzQzkuNDY5NTUgMS4zMjI1NCA4LjU3NTg2IDAuOTc4NTE2IDcuNTAxNDMgMC45Nzg1MTZDNi40MjY3OCAwLjk3ODUxNiA1LjUzMjU1IDEuMzIzNSA0LjkxMDUyIDEuOTkzMjhDNC4yOTM0MiAyLjY1Nzc1IDQuMDAwMDMgMy41ODE2OSA0LjAwMDAzIDQuNjM2MjNWNi41MDAyMUg1LjAwMDAzVjQuNjM2MjNaTTMgNi41MDAyMUMyLjcyMzg2IDYuNTAwMjEgMi41IDYuNzI0MDcgMi41IDcuMDAwMjFWMTMuMDAwMkMyLjUgMTMuMjc2NCAyLjcyMzg2IDEzLjUwMDIgMyAxMy41MDAySDEyQzEyLjI3NjEgMTMuNTAwMiAxMi41IDEzLjI3NjQgMTIuNSAxMy4wMDAyVjcuMDAwMjFDMTIuNSA2LjcyNDA3IDEyLjI3NjEgNi41MDAyMSAxMiA2LjUwMDIxSDNaXCIsZmlsbDp0LHJvbGU6XCJpbWdcIn0pfSkpfX0sNTcyOTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5NaW5pbWl6ZUljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0Lk1pbmltaXplSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMi4xNjYwMiAxMkMyLjE2NjAyIDExLjcyMzkgMi4zODk4NyAxMS41IDIuNjY2MDIgMTEuNUgxMy4zMzI3QzEzLjYwODggMTEuNSAxMy44MzI3IDExLjcyMzkgMTMuODMyNyAxMkMxMy44MzI3IDEyLjI3NjEgMTMuNjA4OCAxMi41IDEzLjMzMjcgMTIuNUgyLjY2NjAyQzIuMzg5ODcgMTIuNSAyLjE2NjAyIDEyLjI3NjEgMi4xNjYwMiAxMlpcIixmaWxsOnQscm9sZTpcImltZ1wifSl9KSl9fSwzNzk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT3BlbkZpbkljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0Lk9wZW5GaW5JY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZDpcIk0xNC4yNjg1IDUuNzM5MTZDMTQuMTc4NSA1LjY0OTA2IDE0LjA4MTcgNS41NjU5MiAxMy45NzkgNS40OTA0N0wxMy45NDEyIDUuNDY0MjlDMTMuOTE5NiA1LjQ0OTE5IDEzLjg5ODQgNS40MzM1OCAxMy44NzYzIDUuNDE4OThDMTMuODU0MSA1LjQwNDM4IDEzLjgyODQgNS4zODg3OCAxMy44MDQ4IDUuMzc0MThMMTMuNzcxNSA1LjM1MzU0QzEzLjc0MTggNS4zMzU5MiAxMy43MTE2IDUuMzE5MyAxMy42ODE0IDUuMzAzMTlMMTMuNjYzOCA1LjI5MzYzQzEzLjMwNjUgNS4xMDYxOCAxMi45MDkxIDUuMDA4MDcgMTIuNTA1NyA1LjAwNzY4QzExLjg0MTcgNS4wMDcxNSAxMS4yMDUyIDQuNzQyOTEgMTAuNzM2MiA0LjI3MzFDMTAuMjY3MSAzLjgwMzMgMTAuMDA0IDMuMTY2NDIgMTAuMDA0NiAyLjUwMjYyQzEwLjAwNjUgMS40OTIyMiA5LjM5OTMzIDAuNTgwMjE5IDguNDY2MzQgMC4xOTE5MTFDNy41MzMzNSAtMC4xOTYzOTcgNi40NTgyNiAwLjAxNTQ2NiA1Ljc0MjQ0IDAuNzI4NzAxQzUuMDI2NjEgMS40NDE5NCA0LjgxMTAzIDIuNTE2MDcgNS4xOTYyMSAzLjQ1MDJDNS41ODE0IDQuMzg0MzMgNi40OTE1IDQuOTk0NDcgNy41MDIxIDQuOTk2MUM4LjE2NjAzIDQuOTk2NjQgOC44MDI1NiA1LjI2MDg4IDkuMjcxNjEgNS43MzA2OEM5Ljc0MDY2IDYuMjAwNDkgMTAuMDAzOCA2LjgzNzM2IDEwLjAwMzEgNy41MDExN0MxMC4wMDI2IDguMTY0OTcgOS43MzgzIDguODAxMzcgOS4yNjg0IDkuMjcwMzJDOC43OTg1IDkuNzM5MjggOC4xNjE1IDEwLjAwMjQgNy40OTc1NiAxMC4wMDE3QzYuODM0MTMgMTAuMDAyMiA2LjE5NzcyIDkuNzM4OTQgNS43Mjg2NSA5LjI2OTg3QzUuMjU5NTggOC44MDA4IDQuOTk2MzYgOC4xNjQ0NyA0Ljk5NzAzIDcuNTAxMTdDNC45OTcwMyA2LjEyMTU1IDMuODc4NDEgNS4wMDMxNSAyLjQ5ODUyIDUuMDAzMTVDMS4xMTg2MiA1LjAwMzE1IDAgNi4xMjE1NSAwIDcuNTAxMTdDMCA4Ljg4MDc4IDEuMTE4NjIgOS45OTkxOCAyLjQ5ODUyIDkuOTk5MThDMy44Nzg0MSA5Ljk5OTE4IDQuOTk3MDMgMTEuMTE3NiA0Ljk5NzAzIDEyLjQ5NzJDNC45OTcwMyAxMy44Nzk1IDYuMTE3OCAxNSA3LjUwMDMzIDE1QzguODgyODcgMTUgMTAuMDAzNiAxMy44Nzk1IDEwLjAwMzYgMTIuNDk3MkMxMC4wMDM2IDExLjExNzYgMTEuMTIyMyA5Ljk5OTE4IDEyLjUwMjEgOS45OTkxOEMxMi45NDgyIDkuOTk5NDggMTMuMzg2MiA5Ljg4MDIyIDEzLjc3MDUgOS42NTM4M0MxMy44MDM4IDkuNjM0MiAxMy44MzY1IDkuNjEzNTYgMTMuODcxMiA5LjU5MjQxTDEzLjg3ODMgOS41ODc4OEMxMy45MDg1IDkuNTY3NzUgMTMuOTM4NyA5LjU0NjYgMTMuOTY3OSA5LjUyNTQ2TDEzLjk4MSA5LjUxNjRDMTQuMDA3MiA5LjQ5NzI3IDE0LjAzMTQgOS40NzY2MiAxNC4wNTkxIDkuNDU1OThMMTQuMDgxMiA5LjQzODg3QzE0LjEwNTQgOS40MTkyMyAxNC4xMjg2IDkuMzk4NTkgMTQuMTUyMiA5LjM3Nzk1TDE0LjE3NzkgOS4zNTU4QzE0LjIwODEgOS4zMjg2MiAxNC4yMzc4IDkuMzAwNDIgMTQuMjY3IDkuMjcxMjNMMTQuMjcxNiA5LjI2NzJDMTQuMzc5NCA5LjE1ODg3IDE0LjQ3NzIgOS4wNDA5MSAxNC41NjM2IDguOTE0OEMxNC41ODI0IDguODg3NjEgMTQuNjAwNSA4Ljg2MDA5IDE0LjYxOCA4LjgzMjIzQzE1LjIzNyA3Ljg0NTg0IDE1LjA5MiA2LjU2MjY3IDE0LjI2ODUgNS43MzkxNlpcIixmaWxsOnQscm9sZTpcImltZ1wifSl9KSl9fSwxNTM5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlN0YWNrSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuU3RhY2tJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjIwXCIsaGVpZ2h0OlwiMjBcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZDpcIk0xNC4yMTc4IDMuMDAwOTJDMTQuMTUwNCAzLjAwNTE0IDE0LjA4MzkgMy4wMTg0NCAxNC4wMiAzLjA0MDQ3TDMuNTE5ODYgNi40Mjg3QzMuMzY4NjQgNi40Nzc0MyAzLjIzNjgxIDYuNTcyOTEgMy4xNDMzNSA2LjcwMTM4QzMuMDQ5ODkgNi44Mjk4NiAyLjk5OTY0IDYuOTg0NjkgMi45OTk4MyA3LjE0MzU2VjE1Ljc1NEMyLjk5ODQzIDE1Ljg1MzQgMy4wMTY3OSAxNS45NTIxIDMuMDUzODUgMTYuMDQ0M0MzLjA5MDkxIDE2LjEzNjYgMy4xNDU5MyAxNi4yMjA1IDMuMjE1NzEgMTYuMjkxM0MzLjI4NTUgMTYuMzYyMSAzLjM2ODY1IDE2LjQxODMgMy40NjAzNSAxNi40NTY2QzMuNTUyMDQgMTYuNDk1IDMuNjUwNDUgMTYuNTE0NyAzLjc0OTg0IDE2LjUxNDdDMy44NDkyNCAxNi41MTQ3IDMuOTQ3NjQgMTYuNDk1IDQuMDM5MzQgMTYuNDU2NkM0LjEzMTAzIDE2LjQxODMgNC4yMTQxOSAxNi4zNjIxIDQuMjgzOTcgMTYuMjkxM0M0LjM1Mzc1IDE2LjIyMDUgNC40MDg3OCAxNi4xMzY2IDQuNDQ1ODQgMTYuMDQ0M0M0LjQ4MjkgMTUuOTUyMSA0LjUwMTI2IDE1Ljg1MzQgNC40OTk4NSAxNS43NTRWNy42ODg0OUwxNC40OCA0LjQ2NzI1QzE0LjY0OSA0LjQxNTI5IDE0Ljc5NDIgNC4zMDUzMiAxNC44OSA0LjE1Njc0QzE0Ljk4NTggNC4wMDgxNSAxNS4wMjYgMy44MzA1IDE1LjAwMzYgMy42NTUxNEMxNC45ODEyIDMuNDc5NzcgMTQuODk3NSAzLjMxNzk3IDE0Ljc2NzQgMy4xOTgyN0MxNC42MzczIDMuMDc4NTcgMTQuNDY5MSAzLjAwODY4IDE0LjI5MjUgMy4wMDA5MkMxNC4yNjc2IDIuOTk5NjcgMTQuMjQyNyAyLjk5OTY3IDE0LjIxNzggMy4wMDA5MlpNMTcuMjE3OCA1LjI1MDk1QzE3LjE1MDQgNS4yNTUxNyAxNy4wODM5IDUuMjY4NDggMTcuMDIwMSA1LjI5MDVMNi41MTk5IDguNjc4NzRDNi4zNjg2OSA4LjcyNzQ2IDYuMjM2ODUgOC44MjI5NCA2LjE0MzM5IDguOTUxNDJDNi4wNDk5MyA5LjA3OTg5IDUuOTk5NjggOS4yMzQ3MiA1Ljk5OTg4IDkuMzkzNTlWMTguMDA0MUM1Ljk5ODQ3IDE4LjEwMzUgNi4wMTY4MyAxOC4yMDIxIDYuMDUzODkgMTguMjk0NEM2LjA5MDk1IDE4LjM4NjYgNi4xNDU5NyAxOC40NzA1IDYuMjE1NzYgMTguNTQxM0M2LjI4NTU0IDE4LjYxMjEgNi4zNjg3IDE4LjY2ODMgNi40NjAzOSAxOC43MDY2QzYuNTUyMDkgMTguNzQ1IDYuNjUwNDkgMTguNzY0OCA2Ljc0OTg5IDE4Ljc2NDhDNi44NDkyOCAxOC43NjQ4IDYuOTQ3NjkgMTguNzQ1IDcuMDM5MzggMTguNzA2NkM3LjEzMTA4IDE4LjY2ODMgNy4yMTQyMyAxOC42MTIxIDcuMjg0MDIgMTguNTQxM0M3LjM1MzggMTguNDcwNSA3LjQwODgyIDE4LjM4NjYgNy40NDU4OCAxOC4yOTQ0QzcuNDgyOTQgMTguMjAyMSA3LjUwMTMgMTguMTAzNSA3LjQ5OTkgMTguMDA0MVY5LjkzODUyTDE3LjQ4IDYuNzE3MjhDMTcuNjQ5IDYuNjY1MzMgMTcuNzk0MiA2LjU1NTM1IDE3Ljg5IDYuNDA2NzdDMTcuOTg1OCA2LjI1ODE4IDE4LjAyNjEgNi4wODA1NCAxOC4wMDM2IDUuOTA1MTdDMTcuOTgxMiA1LjcyOTgxIDE3Ljg5NzYgNS41NjggMTcuNzY3NSA1LjQ0ODNDMTcuNjM3NCA1LjMyODYxIDE3LjQ2OTEgNS4yNTg3MSAxNy4yOTI1IDUuMjUwOTVDMTcuMjY3NiA1LjI0OTcxIDE3LjI0MjcgNS4yNDk3MSAxNy4yMTc4IDUuMjUwOTVaTTIwLjE5MyA3LjUwNTM4QzIwLjEzNDQgNy41MDk4MiAyMC4wNzU4IDcuNTIxOTcgMjAuMDE4NiA3LjU0MDUzTDkuNTE4NDggMTAuOTI4OEM5LjIwOTQ4IDExLjAyOTMgOC45OTk5MiAxMS4zMTgxIDguOTk5OTIgMTEuNjQzNlYyMC4yNTQxQzguOTk5OTIgMjAuNDk3OSA5LjExODI5IDIwLjcyNjIgOS4zMTc4IDIwLjg2NjRDOS40NDYwNSAyMC45NTcyIDkuNTk2OTMgMjEuMDA0MSA5Ljc0OTkzIDIxLjAwNDFDOS44MzQ2OCAyMS4wMDQxIDkuOTIwMTQgMjAuOTg5NCAxMC4wMDE5IDIwLjk2MDJMMjAuNTAyIDE3LjIxMDFDMjAuODAwNiAxNy4xMDQ0IDIxLjAwMDEgMTYuODIxMyAyMS4wMDAxIDE2LjUwNFY4LjI1MzkyQzIxLjAwMDEgOC4wMTQ2NyAyMC44ODUzIDcuNzg5MjIgMjAuNjkxIDcuNjQ3NDdDMjAuNTQ1OSA3LjU0MTcyIDIwLjM2ODggNy40OTIwNSAyMC4xOTMgNy41MDUzOFpcIixmaWxsOnR9KX0pKX19LDQwMjA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuU3RvcmVmcm9udEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LlN0b3JlZnJvbnRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjIwXCIsaGVpZ2h0OlwiMjBcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZDpcIk01IDNDNC40NDggMyA0IDMuNDQ4IDQgNEM0IDQuNTUyIDQuNDQ4IDUgNSA1SDE5QzE5LjU1MiA1IDIwIDQuNTUyIDIwIDRDMjAgMy40NDggMTkuNTUyIDMgMTkgM0g1Wk00LjYxNzE5IDdDNC4yMzgxOSA3IDMuODkzNjEgNy4yMTM3MyAzLjcyNDYxIDcuNTUyNzNMMi4xMDU0NyAxMC43ODkxQzIuMDM1NDcgMTAuOTI4MSAyIDExLjA4MTMgMiAxMS4yMzYzVjEyQzIgMTIuNTUyIDIuNDQ4IDEzIDMgMTNWMTlDMyAyMC4xMDUgMy44OTUgMjEgNSAyMUgxOUMyMC4xMDUgMjEgMjEgMjAuMTA1IDIxIDE5VjEzQzIxLjU1MiAxMyAyMiAxMi41NTIgMjIgMTJWMTEuMjM2M0MyMiAxMS4wODEzIDIxLjk2NDUgMTAuOTI4MSAyMS44OTQ1IDEwLjc4OTFMMjAuMjc1NCA3LjU1MjczQzIwLjEwNjQgNy4yMTM3MyAxOS43NjE4IDcgMTkuMzgyOCA3SDQuNjE3MTlaTTYgMTNIMThDMTguNTUyIDEzIDE5IDEzLjQ0OCAxOSAxNFYxOEMxOSAxOC41NTIgMTguNTUyIDE5IDE4IDE5SDZDNS40NDggMTkgNSAxOC41NTIgNSAxOFYxNEM1IDEzLjQ0OCA1LjQ0OCAxMyA2IDEzWlwiLGZpbGw6dH0pfSkpfX0sNzkzNzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Xb3Jrc3BhY2VJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5Xb3Jrc3BhY2VJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeHMpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHJvbGU6XCJpbWdcIn0sbix7Y2hpbGRyZW46WygwLG8uanN4KShcInBhdGhcIix7ZDpcIk02LjczODExIDIuODEyNUgzLjUzMTM3QzMuMTM0NDIgMi44MTI1IDIuODEyNjIgMy4xMzQzIDIuODEyNjIgMy41MzEyNVY3LjUxMjA0QzIuODEyNjIgNy45MDkgMy4xMzQ0MiA4LjIzMDc5IDMuNTMxMzcgOC4yMzA3OUg2LjczODExQzcuMTM1MDYgOC4yMzA3OSA3LjQ1Njg2IDcuOTA5IDcuNDU2ODYgNy41MTIwNFYzLjUzMTI1QzcuNDU2ODYgMy4xMzQzIDcuMTM1MDYgMi44MTI1IDYuNzM4MTEgMi44MTI1WlwiLGZpbGw6dH0pLCgwLG8uanN4KShcInBhdGhcIix7ZDpcIk0xMi4xNTY1IDYuMjY3NThIOC45NDk3MUM4Ljc1MTIzIDYuMjY3NTggOC41OTAzMyA2LjQyODQ4IDguNTkwMzMgNi42MjY5NlYxMS4zODE4QzguNTkwMzMgMTEuNTgwMyA4Ljc1MTIzIDExLjc0MTIgOC45NDk3MSAxMS43NDEySDEyLjE1NjVDMTIuMzU0OSAxMS43NDEyIDEyLjUxNTggMTEuNTgwMyAxMi41MTU4IDExLjM4MThWNi42MjY5NkMxMi41MTU4IDYuNDI4NDggMTIuMzU0OSA2LjI2NzU4IDEyLjE1NjUgNi4yNjc1OFpcIixzdHJva2U6dCxzdHJva2VXaWR0aDpcIjAuNzE4NzUzXCJ9KSwoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTIuMTU2NCAyLjgxMjVIOC45NDk3MUM4LjU1Mjc1IDIuODEyNSA4LjIzMDk2IDMuMTM0MyA4LjIzMDk2IDMuNTMxMjVWNC40MTU4N0M4LjIzMDk2IDQuODEyODMgOC41NTI3NSA1LjEzNDYzIDguOTQ5NzEgNS4xMzQ2M0gxMi4xNTY0QzEyLjU1MzQgNS4xMzQ2MyAxMi44NzUyIDQuODEyODMgMTIuODc1MiA0LjQxNTg3VjMuNTMxMjVDMTIuODc1MiAzLjEzNDMgMTIuNTUzNCAyLjgxMjUgMTIuMTU2NCAyLjgxMjVaXCIsZmlsbDp0fSksKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTYuNzM3OTggOS4wMDQ4OEgzLjUzMTI1QzMuMTM0MyA5LjAwNDg4IDIuODEyNSA5LjMyNjY4IDIuODEyNSA5LjcyMzY0VjExLjM4MjNDMi44MTI1IDExLjc3OTMgMy4xMzQzIDEyLjEwMTEgMy41MzEyNSAxMi4xMDExSDYuNzM3OThDNy4xMzQ5NCAxMi4xMDExIDcuNDU2NzQgMTEuNzc5MyA3LjQ1Njc0IDExLjM4MjNWOS43MjM2NEM3LjQ1Njc0IDkuMzI2NjggNy4xMzQ5NCA5LjAwNDg4IDYuNzM3OTggOS4wMDQ4OFpcIixmaWxsOnR9KV19KSl9fSwyNzcyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigzNzkpLHQpLG8obig0NzE4KSx0KSxvKG4oNzkzNyksdCksbyhuKDgzMTEpLHQpLG8obig1NzI5KSx0KSxvKG4oNzc4OCksdCksbyhuKDM3MDMpLHQpLG8obig2Nzk1KSx0KSxvKG4oODI2NSksdCksbyhuKDExNyksdCksbyhuKDE1MzkpLHQpLG8obig5Mjg1KSx0KSxvKG4oNDAyMCksdCksbyhuKDUyOSksdCksbyhuKDI0MDIpLHQpLG8obigyMTQ3KSx0KSxvKG4oNDgyNSksdCksbyhuKDY0NDcpLHQpLG8obigxMjgxKSx0KX0sMzExNzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lkljb25XaXRoQmFkZ2U9dm9pZCAwO2NvbnN0IGk9big1ODkzKSxhPW8obig3NTE4KSksbD1uKDcwMDYpLGM9bigzMTM2KSxzPW4oMTMzNSk7dC5JY29uV2l0aEJhZGdlPWU9Pnt2YXJ7Y291bnQ6dD0wLG1heDpufT1lLG89cihlLFtcImNvdW50XCIsXCJtYXhcIl0pO3JldHVybigwLGkuanN4cykodSx7Y2hpbGRyZW46WygwLGkuanN4KShsLkljb24sT2JqZWN0LmFzc2lnbih7fSxvKSksdD4wJiYoMCxpLmpzeCkoZCx7Y291bnQ6dCxtYXg6bn0pXX0pfTtjb25zdCB1PSgwLGEuZGVmYXVsdCkocy5Cb3gpYFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gLGQ9KDAsYS5kZWZhdWx0KShjLkJhZGdlKWBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2Zvcm06IHNjYWxlKDcwJSk7XG4gIHJpZ2h0OiAtJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgdG9wOiAtJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG5gfSwxNDQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDMxMTcpLHQpfSw5MjM5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig4Mjc1KSx0KSxvKG4oNjkzKSx0KX0sODI3NTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkxvYWRlcj12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGE9byhuKDc1MTgpKSxsPW4oOTYzNCk7dC5Mb2FkZXI9KDAsYS5kZWZhdWx0KSgoZT0+e3ZhciB0PXIoZSxbXSk7cmV0dXJuKDAsaS5qc3gpKGwuSWNvbixPYmplY3QuYXNzaWduKHt9LHQse2NoaWxkcmVuOigwLGkuanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTAwJVwiLGhlaWdodDpcIjEwMCVcIix2aWV3Qm94OlwiMCAwIDM4IDM4XCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHN0cm9rZTpcImN1cnJlbnRDb2xvclwifSx7Y2hpbGRyZW46KDAsaS5qc3gpKFwiZ1wiLE9iamVjdC5hc3NpZ24oe2ZpbGw6XCJub25lXCIsZmlsbFJ1bGU6XCJldmVub2RkXCJ9LHtjaGlsZHJlbjooMCxpLmpzeHMpKFwiZ1wiLE9iamVjdC5hc3NpZ24oe3RyYW5zZm9ybTpcInRyYW5zbGF0ZSgxIDEpXCIsc3Ryb2tlV2lkdGg6XCIyXCJ9LHtjaGlsZHJlbjpbKDAsaS5qc3gpKFwiY2lyY2xlXCIse3N0cm9rZU9wYWNpdHk6XCIuNVwiLGN4OlwiMThcIixjeTpcIjE4XCIscjpcIjE4XCJ9KSwoMCxpLmpzeCkoXCJwYXRoXCIsT2JqZWN0LmFzc2lnbih7ZDpcIk0zNiAxOGMwLTkuOTQtOC4wNi0xOC0xOC0xOFwifSx7Y2hpbGRyZW46KDAsaS5qc3gpKFwiYW5pbWF0ZVRyYW5zZm9ybVwiLHthdHRyaWJ1dGVOYW1lOlwidHJhbnNmb3JtXCIsdHlwZTpcInJvdGF0ZVwiLGZyb206XCIwIDE4IDE4XCIsdG86XCIzNjAgMTggMThcIixkdXI6XCIxc1wiLHJlcGVhdENvdW50OlwiaW5kZWZpbml0ZVwifSl9KSldfSkpfSkpfSkpfSkpfSkpYGB9LDY5MzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGk9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH0sYT10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk9wZW5maW5Mb2FkZXI9dm9pZCAwO2NvbnN0IGw9big1ODkzKSxjPWkobig3NTE4KSkscz1uKDk2MzQpO3QuT3BlbmZpbkxvYWRlcj0oMCxjLmRlZmF1bHQpKChlPT57dmFyIHQ9YShlLFtdKTtyZXR1cm4oMCxsLmpzeCkocy5JY29uLE9iamVjdC5hc3NpZ24oe30sdCx7Y2hpbGRyZW46KDAsbC5qc3hzKShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTAwJVwiLGhlaWdodDpcIjEwMCVcIix2aWV3Qm94OlwiMCAwIDE4IDE4XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LHtjaGlsZHJlbjpbKDAsbC5qc3gpKHUse2Q6XCJcXG4gICAgICAgICAgICBNIDE3LjEyMjIgNi44ODdcXG4gICAgICAgICAgICBDIDE3LjAxNDEgNi43Nzg4NyAxNi44OTggNi42NzkxMSAxNi43NzQ4IDYuNTg4NTZcXG4gICAgICAgICAgICBMIDE2LjcyOTUgNi41NTcxNVxcbiAgICAgICAgICAgIEMgMTYuNzAzNSA2LjUzOTAzIDE2LjY3ODEgNi41MjAzIDE2LjY1MTUgNi41MDI3OFxcbiAgICAgICAgICAgIEMgMTYuNjI1IDYuNDg1MjYgMTYuNTk0MSA2LjQ2NjUzIDE2LjU2NTcgNi40NDkwMVxcbiAgICAgICAgICAgIEwgMTYuNTI1OSA2LjQyNDI0XFxuICAgICAgICAgICAgQyAxNi40OTAyIDYuNDAzMSAxNi40NTQgNi4zODMxNiAxNi40MTc3IDYuMzYzODNcXG4gICAgICAgICAgICBMIDE2LjM5NjYgNi4zNTIzNlxcbiAgICAgICAgICAgIEMgMTUuOTY3OCA2LjEyNzQyIDE1LjQ5MSA2LjAwOTY4IDE1LjAwNjggNi4wMDkyMlxcbiAgICAgICAgICAgIEMgMTQuMjEwMSA2LjAwODU4IDEzLjQ0NjMgNS42OTE0OSAxMi44ODM0IDUuMTI3NzJcXG4gICAgICAgICAgICBDIDEyLjMyMDUgNC41NjM5NSAxMi4wMDQ4IDMuNzk5NzEgMTIuMDA1NiAzLjAwMzE0XFxuICAgICAgICAgICAgQyAxMi4wMDc4IDEuNzkwNjYgMTEuMjc5MiAwLjY5NjI2MyAxMC4xNTk2IDAuMjMwMjkzXFxuICAgICAgICAgICAgQyA5LjA0MDAyIC0wLjIzNTY3NiA3Ljc0OTkyIDAuMDE4NTU5MiA2Ljg5MDkzIDAuODc0NDQxXFxuICAgICAgICAgICAgQyA2LjAzMTk0IDEuNzMwMzIgNS43NzMyMyAzLjAxOTI4IDYuMjM1NDYgNC4xNDAyNFxcbiAgICAgICAgICAgIEMgNi42OTc2OCA1LjI2MTE5IDcuNzg5OCA1Ljk5MzM3IDkuMDAyNTEgNS45OTUzMlxcbiAgICAgICAgICAgIEMgOS43OTkyNCA1Ljk5NTk2IDEwLjU2MzEgNi4zMTMwNSAxMS4xMjU5IDYuODc2ODJcXG4gICAgICAgICAgICBDIDExLjY4ODggNy40NDA1OSAxMi4wMDQ2IDguMjA0ODQgMTIuMDAzOCA5LjAwMTRcXG4gICAgICAgICAgICBDIDEyLjAwMzEgOS43OTc5NyAxMS42ODYgMTAuNTYxNiAxMS4xMjIxIDExLjEyNDRcXG4gICAgICAgICAgICBDIDEwLjU1ODIgMTEuNjg3MSA5Ljc5MzggMTIuMDAyOCA4Ljk5NzA4IDEyLjAwMlxcbiAgICAgICAgICAgIEMgOC4yMDA5NiAxMi4wMDI3IDcuNDM3MjcgMTEuNjg2NyA2Ljg3NDM4IDExLjEyMzhcXG4gICAgICAgICAgICBDIDYuMzExNSAxMC41NjEgNS45OTU2NCA5Ljc5NzM2IDUuOTk2NDQgOS4wMDE0XFxuICAgICAgICAgICAgQyA1Ljk5NjQ0IDcuMzQ1ODYgNC42NTQwOSA2LjAwMzc4IDIuOTk4MjIgNi4wMDM3OFxcbiAgICAgICAgICAgIEMgMS4zNDIzNSA2LjAwMzc4IDAgNy4zNDU4NiAwIDkuMDAxNFxcbiAgICAgICAgICAgIEMgMCAxMC42NTY5IDEuMzQyMzUgMTEuOTk5IDIuOTk4MjIgMTEuOTk5XFxuICAgICAgICAgICAgQyA0LjY1NDA5IDExLjk5OSA1Ljk5NjQ0IDEzLjM0MTEgNS45OTY0NCAxNC45OTY2XFxuICAgICAgICAgICAgQyA1Ljk5NjQ0IDE2LjY1NTMgNy4zNDEzNiAxOCA5LjAwMDQgMThcXG4gICAgICAgICAgICBDIDEwLjY1OTQgMTggMTIuMDA0NCAxNi42NTUzIDEyLjAwNDQgMTQuOTk2NlxcbiAgICAgICAgICAgIEMgMTIuMDA0NCAxMy4zNDExIDEzLjM0NjcgMTEuOTk5IDE1LjAwMjYgMTEuOTk5XFxuICAgICAgICAgICAgQyAxNS41Mzc5IDExLjk5OTQgMTYuMDYzNSAxMS44NTYzIDE2LjUyNDcgMTEuNTg0NlxcbiAgICAgICAgICAgIEMgMTYuNTY0NSAxMS41NjEgMTYuNjAzOCAxMS41MzYzIDE2LjY0NTUgMTEuNTEwOVxcbiAgICAgICAgICAgIEwgMTYuNjU0IDExLjUwNTVcXG4gICAgICAgICAgICBDIDE2LjY5MDIgMTEuNDgxMyAxNi43MjY1IDExLjQ1NTkgMTYuNzYxNSAxMS40MzA1XFxuICAgICAgICAgICAgTCAxNi43NzcyIDExLjQxOTdcXG4gICAgICAgICAgICBDIDE2LjgwODYgMTEuMzk2NyAxNi44Mzc2IDExLjM3MiAxNi44NzA5IDExLjM0NzJcXG4gICAgICAgICAgICBMIDE2Ljg5NzUgMTEuMzI2NlxcbiAgICAgICAgICAgIEMgMTYuOTI2NSAxMS4zMDMxIDE2Ljk1NDMgMTEuMjc4MyAxNi45ODI3IDExLjI1MzVcXG4gICAgICAgICAgICBMIDE3LjAxMzUgMTEuMjI3XFxuICAgICAgICAgICAgQyAxNy4wNDk3IDExLjE5NDMgMTcuMDg1NCAxMS4xNjA1IDE3LjEyMDQgMTEuMTI1NVxcbiAgICAgICAgICAgIEwgMTcuMTI1OSAxMS4xMjA2XFxuICAgICAgICAgICAgQyAxNy4yNTUzIDEwLjk5MDYgMTcuMzcyNiAxMC44NDkxIDE3LjQ3NjMgMTAuNjk3OFxcbiAgICAgICAgICAgIEMgMTcuNDk4OSAxMC42NjUxIDE3LjUyMDYgMTAuNjMyMSAxNy41NDE2IDEwLjU5ODdcXG4gICAgICAgICAgICBDIDE4LjI4NDMgOS40MTUgMTguMTEwNCA3Ljg3NTIgMTcuMTIyMiA2Ljg4N1pcXG4gICAgICAgICAgICBcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KSwoMCxsLmpzeCkoZCx7Y3g6XCI5XCIsY3k6XCIzXCIscjpcIjIuOVwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixhbmdsZTowfSksKDAsbC5qc3gpKGQse2N4OlwiMTVcIixjeTpcIjlcIixyOlwiMi43NVwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixhbmdsZTotOTB9KSwoMCxsLmpzeCkoZCx7Y3g6XCI5XCIsY3k6XCIxNVwiLHI6XCIyLjVcIixmaWxsOlwiY3VycmVudENvbG9yXCIsYW5nbGU6LTE4MH0pLCgwLGwuanN4KShkLHtjeDpcIjNcIixjeTpcIjlcIixyOlwiMi4yNVwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixhbmdsZTotMjcwfSldfSkpfSkpfSkpYGA7Y29uc3QgdT1jLmRlZmF1bHQucGF0aGBcbiAgQGtleWZyYW1lcyBsb2dvQW5pbWF0aW9uIHtcbiAgICAwJSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICAyNSUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgMzUlIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICAgIDYwJSB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICA3NSUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIGFuaW1hdGlvbjogbG9nb0FuaW1hdGlvbiAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbmAsZD1jLmRlZmF1bHQuY2lyY2xlYFxuICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7XG4gIGFuaW1hdGlvbjogJHsoe2FuZ2xlOmV9KT0+KGU9PmMua2V5ZnJhbWVzYFxuICAgIDAlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gICAgMjUlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgMzAlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgNTAlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKCR7ZX1kZWcpO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgNzAlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0zNjBkZWcpO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgNzUlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0zNjBkZWcpO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMzYwZGVnKTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuYCkoZSl9IDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuYH0sMzU4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuU3R5bGVkSW5wdXRGaWVsZD10LkJhc2VJbnB1dD12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGE9big2Njg5KSxsPW8obig3NTE4KSksYz1uKDEzMzUpLHM9big5NTA3KSx1PW4oNzc2OSksZD1uKDk2MzQpO3QuQmFzZUlucHV0PSgwLGEuZm9yd2FyZFJlZikoKChlLG4pPT57dmFye2NsYXNzTmFtZTpvLHJlbmRlcklucHV0OmEsbWVzc2FnZTpsLGxhYmVsOmMsc3RhdHVzOnMsbmFtZTp1LGljb246ZCx0eXBlOmc9XCJ0ZXh0XCJ9PWUsbT1yKGUsW1wiY2xhc3NOYW1lXCIsXCJyZW5kZXJJbnB1dFwiLFwibWVzc2FnZVwiLFwibGFiZWxcIixcInN0YXR1c1wiLFwibmFtZVwiLFwiaWNvblwiLFwidHlwZVwiXSk7Y29uc3Qgdz1cImNoZWNrYm94XCI9PT1nfHxcInJhZGlvXCI9PT1nO3JldHVybigwLGkuanN4cykodixPYmplY3QuYXNzaWduKHtmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsYWxpZ25JdGVtczpcImZsZXgtc3RhcnRcIn0se2NoaWxkcmVuOlsoMCxpLmpzeHMpKGYsT2JqZWN0LmFzc2lnbih7aW5saW5lOnd9LHtjaGlsZHJlbjpbISFjJiYoMCxpLmpzeCkoQyxPYmplY3QuYXNzaWduKHthczpcImxhYmVsXCIsaHRtbEZvcjp1LHdlaWdodDpcImJvbGRcIn0se2NoaWxkcmVuOmN9KSksISFkJiYoMCxpLmpzeCkocCx7aWNvbjpkfSksISFhJiZhKE9iamVjdC5hc3NpZ24oe25hbWU6dSxzdGF0dXM6cyx0eXBlOmd9LG0pKSwhYSYmKDAsaS5qc3gpKHQuU3R5bGVkSW5wdXRGaWVsZCxPYmplY3QuYXNzaWduKHtjbGFzc05hbWU6byxuYW1lOnUsc3RhdHVzOnMsdHlwZTpnfSxtLHtyZWY6bn0pKV19KSksISFsJiYoMCxpLmpzeCkoaCxPYmplY3QuYXNzaWduKHtzdGF0dXM6c30se2NoaWxkcmVuOmx9KSldfSkpfSkpLHQuQmFzZUlucHV0LmRpc3BsYXlOYW1lPVwiQmFzZUlucHV0XCI7Y29uc3QgZj0oMCxsLmRlZmF1bHQpKGMuQm94KWBcbiAgYWxpZ24taXRlbXM6ICR7KHtpbmxpbmU6ZX0pPT5lP1wiY2VudGVyXCI6XCJmbGV4LXN0YXJ0XCJ9O1xuICBmbGV4LWRpcmVjdGlvbjogJHsoe2lubGluZTplfSk9PmU/XCJyb3ctcmV2ZXJzZVwiOlwiY29sdW1uXCJ9O1xuICBqdXN0aWZ5LWNvbnRlbnQ6ICR7KHtpbmxpbmU6ZX0pPT5lP1wiZmxleC1lbmRcIjpcImZsZXgtc3RhcnRcIn07XG4gIHdpZHRoOiAxMDAlO1xuXG4gICR7KHtpbmxpbmU6ZSx0aGVtZTp0fSk9PmUmJmBcXG4gICAgJHtDfSB7XFxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XFxuICAgICAgbWFyZ2luLWxlZnQ6ICR7dC5weC5zbWFsbH07XFxuICAgICAgZm9udC13ZWlnaHQ6ICR7dC5mb250V2VpZ2h0Lm5vcm1hbH07XFxuICAgIH1cXG4gIGB9XG5gLHA9KDAsbC5kZWZhdWx0KShkLkljb24pYFxuICBtYXJnaW4tbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICBtaW4td2lkdGg6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUuc21hbGx9O1xuICBtaW4taGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnNtYWxsfTtcbmAsQz0oMCxsLmRlZmF1bHQpKHUuVGV4dClgXG4gIG1hcmdpbi1ib3R0b206ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbmAsaD0oMCxsLmRlZmF1bHQpKHUuVGV4dClgXG4gIGNvbG9yOiAkeyh7dGhlbWU6ZSxzdGF0dXM6dH0pPT4oMCxzLmdldFN0YXR1c0NvbG9yKShlLHQsXCJ0ZXh0SGVscFwiKX07XG4gIG1hcmdpbi10b3A6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuYCx2PSgwLGwuZGVmYXVsdCkoYy5Cb3gpYFxuICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gIHVzZXItc2VsZWN0OiBub25lO1xuYDt0LlN0eWxlZElucHV0RmllbGQ9bC5kZWZhdWx0LmlucHV0YFxuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDV9O1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDZ9O1xuICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplLHN0YXR1czp0fSk9PigwLHMuZ2V0U3RhdHVzQ29sb3IpKGUsdCxcImlucHV0Qm9yZGVyXCIpfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICBib3gtc2hhZG93OiAkeyh7dGhlbWU6ZX0pPT5lLnNoYWRvdy5iYXNlfTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dENvbG9yfTtcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfSAke2UucHguYmFzZX1gfTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbik7XG4gIHdpZHRoOiAxMDAlO1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7XG4gICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZSxzdGF0dXM6dH0pPT4oMCxzLmdldFN0YXR1c0NvbG9yKShlLHQsXCJpbnB1dEZvY3VzZWRcIil9O1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgfVxuXG4gICY6ZGlzYWJsZWQ6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBoYWNrIHRvIGludmVydCB0aGUgY2FsZW5kYXIgaWNvbi4gVGhpcyBvbmx5IHdvcmtzIGluIGRhcmsgbW9kZS5cbiAgICogVW50aWwgZWl0aGVyIGxpZ2h0IG1vZGUgaXMgYSB0aGluZyBvciB3ZSBnZXQgYSBkYXRldGltZSBwaWNrZXIgZGVzaWduLCB0aGlzIHdpbGwgZG8uXG4gICAqL1xuICA6Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciB7XG4gICAgZmlsdGVyOiBpbnZlcnQoMSk7XG4gIH1cbmB9LDg4Nzg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDM1OCksdCl9LDE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9KSxpPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZyKHQsZSxuKTtyZXR1cm4gbyh0LGUpLHR9LGE9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbD10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoZWNrYm94PXZvaWQgMDtjb25zdCBjPW4oNTg5Mykscz1pKG4oNjY4OSkpLHU9bChuKDc1MTgpKSxkPW4oODg3OCksZj1uKDk2MzQpLHA9big5NTA3KTt0LkNoZWNrYm94PXMuZm9yd2FyZFJlZigoKGUsdCk9Pnt2YXJ7c3RhdHVzOm59PWUscj1hKGUsW1wic3RhdHVzXCJdKTtyZXR1cm4oMCxjLmpzeCkoZC5CYXNlSW5wdXQsT2JqZWN0LmFzc2lnbih7fSxyLHt0eXBlOlwiY2hlY2tib3hcIixzdGF0dXM6bixyZW5kZXJJbnB1dDplPT57dmFyIHI9YShlLFtdKTtyZXR1cm4oMCxjLmpzeHMpKEMse2NoaWxkcmVuOlsoMCxjLmpzeCkoZyxPYmplY3QuYXNzaWduKHtyZWY6dCxpZDpyLm5hbWUsdHlwZTpcImNoZWNrYm94XCJ9LHIpKSwoMCxjLmpzeCkoaCxPYmplY3QuYXNzaWduKHtzdGF0dXM6bn0se2NoaWxkcmVuOigwLGMuanN4KSh2LHt9KX0pKV19KX19KSl9KSksdC5DaGVja2JveC5kaXNwbGF5TmFtZT1cIkNoZWNrYm94XCI7Y29uc3QgQz11LmRlZmF1bHQuZGl2YFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmAsaD11LmRlZmF1bHQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICB3aWR0aDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgYm9yZGVyOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZSxzdGF0dXM6dH0pPT4oMCxwLmdldFN0YXR1c0NvbG9yKShlLHQsXCJ0ZXh0RGVmYXVsdFwiKX07XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5gLHY9KDAsdS5kZWZhdWx0KShmLkljb24pLmF0dHJzKHtpY29uOlwiQ2hlY2tJY29uXCIsc2l6ZTpcInNtYWxsXCJ9KWBcbiAgb3BhY2l0eTogMDtcbmAsZz11LmRlZmF1bHQuaW5wdXRgXG4gIG9wYWNpdHk6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6Y2hlY2tlZCArICR7aCtcIiBcIit2fSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gICY6aG92ZXIgKyAke2h9IHtcbiAgICBib3gtc2hhZG93OiAwIDAgMXB4IDFweCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRGb2N1c2VkfTtcbiAgfVxuXG4gICY6Zm9jdXMgKyAke2h9IHtcbiAgICBib3gtc2hhZG93OiAwIDAgMXB4IDFweCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRGb2N1c2VkfTtcbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIH1cblxuICAmOmRpc2FibGVkICsgJHtofSB7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG5gfSw4MDUxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigxKSx0KX0sOTAyMjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGk9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DaGVja2JveEdyb3VwPXZvaWQgMDtjb25zdCBhPW4oNTg5MyksbD1pKG4oNjY4OSkpLGM9aShuKDc1MTgpKSxzPW4oMTMzNSksdT1uKDc3NjkpLGQ9bigxKTt0LkNoZWNrYm94R3JvdXA9KHtkaXNhYmxlZDplLGdhcDp0PVwic21hbGxcIixtZXNzYWdlOm4sbmFtZTpyLGNoaWxkcmVuOm99KT0+KDAsYS5qc3hzKShmLHtjaGlsZHJlbjpbKDAsYS5qc3gpKHAsT2JqZWN0LmFzc2lnbih7Z2FwOnR9LHtjaGlsZHJlbjpsLkNoaWxkcmVuLm1hcChvLCh0PT57Y29uc3Qgbj10O3JldHVybiBuLnR5cGU9PT1kLkNoZWNrYm94P2wuY2xvbmVFbGVtZW50KG4se25hbWU6cixkaXNhYmxlZDplfSk6bn0pKX0pKSxuPygwLGEuanN4KShDLE9iamVjdC5hc3NpZ24oe2Rpc2FibGVkOmV9LHtjaGlsZHJlbjpufSkpOm51bGxdfSk7Y29uc3QgZj0oMCxjLmRlZmF1bHQpKHMuQm94KWBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IG1heC1jb250ZW50O1xuYCxwPSgwLGMuZGVmYXVsdCkocy5Cb3gpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gIHdpZHRoOiBmaXQtY29udGVudDtcbmAsQz0oMCxjLmRlZmF1bHQpKHUuVGV4dClgXG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcn07XG4gIG1hcmdpbi10b3A6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG5cbiAgJHsoe2Rpc2FibGVkOmV9KT0+ZSYmYy5jc3NgXG4gICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICAgIGB9XG5gfSw0MTY5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig5MDIyKSx0KX0sOTM2ODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkRhdGVJbnB1dD12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGE9big2Njg5KSxsPW8obig3NTE4KSksYz1uKDk2MzQpLHM9bigxMzM1KSx1PW4oOTUwNyksZD1uKDg4NzgpO3QuRGF0ZUlucHV0PSgwLGEuZm9yd2FyZFJlZikoKChlLHQpPT57dmFye3ZhbHVlOm49XCJcIix0eXBlOm89XCJkYXRlXCIsZXhwYW5kZWQ6bD0hMSxvbkNoYW5nZTpjfT1lLHM9cihlLFtcInZhbHVlXCIsXCJ0eXBlXCIsXCJleHBhbmRlZFwiLFwib25DaGFuZ2VcIl0pO2NvbnN0W3UscF09KDAsYS51c2VTdGF0ZSkobik7cmV0dXJuKDAsYS51c2VFZmZlY3QpKCgoKT0+cChuKSksW10pLCgwLGkuanN4KShkLkJhc2VJbnB1dCxPYmplY3QuYXNzaWduKHt0eXBlOm99LHMse3JlbmRlcklucHV0OmU9Pnt2YXIgbj1yKGUsW10pO3JldHVybigwLGkuanN4KShmLE9iamVjdC5hc3NpZ24oe3JlZjp0LHR5cGU6byxvbkNoYW5nZTplPT57Y29uc3R7dmFsdWU6dH09ZS50YXJnZXQ7dCYmcCh0KSxudWxsPT1jfHxjKGUpfSx2YWx1ZTp1LGV4cGFuZGVkOmx9LG4pKX19KSl9KSksdC5EYXRlSW5wdXQuZGlzcGxheU5hbWU9XCJEYXRlSW5wdXRcIjtjb25zdCBmPSgwLGEuZm9yd2FyZFJlZikoKChlLHQpPT57dmFye3R5cGU6bixleHBhbmRlZDpvLG9uRXhwYW5kOmF9PWUsbD1yKGUsW1widHlwZVwiLFwiZXhwYW5kZWRcIixcIm9uRXhwYW5kXCJdKTtyZXR1cm4oMCxpLmpzeHMpKHAse2NoaWxkcmVuOlsoMCxpLmpzeCkoaCx7Y2hpbGRyZW46KDAsaS5qc3gpKGMuSWNvbix7aWNvbjpcInRpbWVcIj09PW4/XCJDbG9ja0ljb25cIjpcIkNhbGVuZGFySWNvblwifSl9KSwoMCxpLmpzeCkoZyxPYmplY3QuYXNzaWduKHtyZWY6dCx0eXBlOm4sb25LZXlEb3duOmU9PntcIiBcIj09PWUua2V5JiZlLnByZXZlbnREZWZhdWx0KCl9fSxsKSksKDAsaS5qc3gpKHYsT2JqZWN0LmFzc2lnbih7ZmxleERpcmVjdGlvbjpcImNvbHVtblwiLGRpc2FibGVkOmwuZGlzYWJsZWQsb25DbGljazphfSx7Y2hpbGRyZW46KDAsaS5qc3gpKGMuSWNvbix7aWNvbjpvP1wiQ2hldnJvblVwSWNvblwiOlwiQ2hldnJvbkRvd25JY29uXCJ9KX0pKV19KX0pKTtmLmRpc3BsYXlOYW1lPVwiU3R5bGVkRGF0ZUlucHV0XCI7Y29uc3QgcD1sLmRlZmF1bHQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgd2lkdGg6IDEwMCU7XG5gLEM9KDAsbC5kZWZhdWx0KShzLkJveClgXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDJweCk7XG5gLGg9KDAsbC5kZWZhdWx0KShDKWBcbiAgbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCx2PSgwLGwuZGVmYXVsdCkoQylgXG4gIHJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAgcG9pbnRlci1ldmVudHM6ICR7KHtkaXNhYmxlZDplfSk9PmU/XCJub25lXCI6dm9pZCAwfTtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDZ9O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuYCxnPSgwLGwuZGVmYXVsdCkoZC5TdHlsZWRJbnB1dEZpZWxkKWBcbiAgYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICBmb250LWZhbWlseTogJHt1LkZvbnRTdGFja307XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgueHh4bGFyZ2V9O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHt0aGVtZTplfSk9PmUucHgueHh4bGFyZ2V9O1xuICA6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG4gIDo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cbmB9LDk2NTQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDkzNjgpLHQpfSwxOTc4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig2ODg0KSx0KX0sNjg4NDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk51bWJlcklucHV0PXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1uKDY2ODkpLGw9byhuKDc1MTgpKSxjPW4oNjYwNikscz1uKDk2MzQpLHU9bigxMzM1KSxkPW4oODg3OCk7dmFyIGY7IWZ1bmN0aW9uKGUpe2VbZS5VcD0xXT1cIlVwXCIsZVtlLkRvd249LTFdPVwiRG93blwifShmfHwoZj17fSkpLHQuTnVtYmVySW5wdXQ9KDAsYS5mb3J3YXJkUmVmKSgoKGUsdCk9Pnt2YXJ7bWluOm4sbWF4Om8sb25DaGFuZ2U6bCxzdGVwOnM9MSx2YWx1ZTp1fT1lLEM9cihlLFtcIm1pblwiLFwibWF4XCIsXCJvbkNoYW5nZVwiLFwic3RlcFwiLFwidmFsdWVcIl0pO2NvbnN0IGg9TnVtYmVyKHMpLFt2LGddPSgwLGEudXNlU3RhdGUpKE51bWJlcih1KSk7KDAsYS51c2VFZmZlY3QpKCgoKT0+ZyhOdW1iZXIodSkpKSxbXSk7Y29uc3QgbT1lPT57Y29uc3QgdD12P051bWJlcih2KTowLHI9bj9OdW1iZXIobik6dm9pZCAwLGk9bz9OdW1iZXIobyk6dm9pZCAwLGE9KDAsYy5jbGFtcCkodCtoKmUscixpKTtnKGEpfTtyZXR1cm4oMCxpLmpzeCkoZC5CYXNlSW5wdXQsT2JqZWN0LmFzc2lnbih7dHlwZTpcIm51bWJlclwifSxDLHtyZW5kZXJJbnB1dDplPT57dmFyIGE9cihlLFtdKTtyZXR1cm4oMCxpLmpzeCkocCxPYmplY3QuYXNzaWduKHtyZWY6dCxvbkluY3JlbWVudDooKT0+bShmLlVwKSxvbkRlY3JlbWVudDooKT0+bShmLkRvd24pLG9uQ2hhbmdlOmU9Pntjb25zdHt2YWx1ZTp0fT1lLnRhcmdldDt0JiZnKE51bWJlcih0KSksbCYmbChlKX0sbWluOm4sbWF4Om8sc3RlcDpzfSxhLHt2YWx1ZTp2fSkpfX0pKX0pKSx0Lk51bWJlcklucHV0LmRpc3BsYXlOYW1lPVwiTnVtYmVySW5wdXRcIjtjb25zdCBwPSgwLGEuZm9yd2FyZFJlZikoKChlLHQpPT57dmFye29uSW5jcmVtZW50Om4sb25EZWNyZW1lbnQ6b309ZSxhPXIoZSxbXCJvbkluY3JlbWVudFwiLFwib25EZWNyZW1lbnRcIl0pO3JldHVybigwLGkuanN4cykoQyx7Y2hpbGRyZW46WygwLGkuanN4KShnLE9iamVjdC5hc3NpZ24oe3JlZjp0fSxhKSksKDAsaS5qc3hzKShoLE9iamVjdC5hc3NpZ24oe2ZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixkaXNhYmxlZDphLmRpc2FibGVkfSx7Y2hpbGRyZW46WygwLGkuanN4KSh2LE9iamVjdC5hc3NpZ24oe29uQ2xpY2s6bixkaXNhYmxlZDphLmRpc2FibGVkfSx7Y2hpbGRyZW46KDAsaS5qc3gpKHMuSWNvbix7aWNvbjpcIlRyaWFuZ2xlVXBJY29uXCJ9KX0pKSwoMCxpLmpzeCkodixPYmplY3QuYXNzaWduKHtvbkNsaWNrOm8sZGlzYWJsZWQ6YS5kaXNhYmxlZH0se2NoaWxkcmVuOigwLGkuanN4KShzLkljb24se2ljb246XCJUcmlhbmdsZURvd25JY29uXCJ9KX0pKV19KSldfSl9KSk7cC5kaXNwbGF5TmFtZT1cIlN0eWxlZE51bWJlcklucHV0XCI7Y29uc3QgQz1sLmRlZmF1bHQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgd2lkdGg6IDEwMCU7XG5gLGg9KDAsbC5kZWZhdWx0KSh1LkJveClgXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDFweDtcbiAgdG9wOiAxcHg7XG4gIGdhcDogMXB4O1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDJweCk7XG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmAwICR7ZS5yYWRpdXMuc21hbGx9ICR7ZS5yYWRpdXMuc21hbGx9IDBgfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICBwb2ludGVyLWV2ZW50czogJHsoe2Rpc2FibGVkOmV9KT0+ZT9cIm5vbmVcIjp2b2lkIDB9O1xuYCx2PSgwLGwuZGVmYXVsdCkodS5Cb3gpYFxuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgcGFkZGluZzogMCAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBoZWlnaHQ6IDUwJTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgY29sb3I6ICR7KHtkaXNhYmxlZDplLHRoZW1lOnR9KT0+ZT90LnBhbGV0dGUudGV4dEhlbHA6dC5wYWxldHRlLnRleHREZWZhdWx0fTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRGb2N1c2VkfTtcbiAgfVxuXG4gICY6YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRDb2xvcn07XG4gIH1cbmAsZz0oMCxsLmRlZmF1bHQpKGQuU3R5bGVkSW5wdXRGaWVsZClgXG4gIGFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgcGFkZGluZy1yaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC54eHhsYXJnZX07XG5cbiAgOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuICA6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5gfSw1MjE1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigyMjU1KSx0KX0sMjI1NTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGk9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5SYWRpb0dyb3VwPXZvaWQgMDtjb25zdCBhPW4oNTg5MyksbD1pKG4oNjY4OSkpLGM9aShuKDc1MTgpKSxzPW4oMTMzNSksdT1uKDc3NjkpLGQ9bigyNTY1KTt0LlJhZGlvR3JvdXA9KHtkaXJlY3Rpb246ZT1cImNvbHVtblwiLGRpc2FibGVkOnQsbGFiZWxTaWRlOm49XCJyaWdodFwiLGdhcDpyPVwic21hbGxcIixtZXNzYWdlOm8sbmFtZTppLGNoaWxkcmVuOmN9KT0+KDAsYS5qc3hzKShmLHtjaGlsZHJlbjpbKDAsYS5qc3gpKHAsT2JqZWN0LmFzc2lnbih7ZGlyZWN0aW9uOmUsbGFiZWxTaWRlOm4sZ2FwOnJ9LHtjaGlsZHJlbjpsLkNoaWxkcmVuLm1hcChjLChlPT57Y29uc3Qgcj1lO3JldHVybiByLnR5cGU9PT1kLlJhZGlvSW5wdXQ/bC5jbG9uZUVsZW1lbnQocix7bmFtZTppLGxhYmVsU2lkZTpuLGRpc2FibGVkOnR9KTpyfSkpfSkpLG8/KDAsYS5qc3gpKEMsT2JqZWN0LmFzc2lnbih7ZGlzYWJsZWQ6dH0se2NoaWxkcmVuOm99KSk6bnVsbF19KTtjb25zdCBmPSgwLGMuZGVmYXVsdCkocy5Cb3gpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG5gLHA9KDAsYy5kZWZhdWx0KShzLkJveClgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiAke2U9PmUuZGlyZWN0aW9ufTtcbiAgYWxpZ24taXRlbXM6ICR7ZT0+e3N3aXRjaChlLmxhYmVsU2lkZSl7Y2FzZVwibGVmdFwiOnJldHVyblwiZW5kXCI7Y2FzZVwicmlnaHRcIjpyZXR1cm5cInN0YXJ0XCI7ZGVmYXVsdDpyZXR1cm5cImNlbnRlclwifX19O1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG5gLEM9KDAsYy5kZWZhdWx0KSh1LlRleHQpYFxuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0UGxhY2Vob2xkZXJ9O1xuICBtYXJnaW4tdG9wOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuXG4gICR7KHtkaXNhYmxlZDplfSk9PmUmJmMuY3NzYFxuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgICBgfVxuYH0sMzY0MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMjU2NSksdCl9LDI1NjU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9KSxpPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZyKHQsZSxuKTtyZXR1cm4gbyh0LGUpLHR9LGE9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5SYWRpb0lucHV0PXZvaWQgMDtjb25zdCBsPW4oNTg5MyksYz1uKDc3NjkpLHM9aShuKDY2ODkpKSx1PWkobig3NTE4KSksZD1uKDEzMzUpLGY9big5NjM0KTt0LlJhZGlvSW5wdXQ9cy5mb3J3YXJkUmVmKCgoZSx0KT0+e3ZhcntkaXNhYmxlZDpuLGlkOnIsbGFiZWw6byxsYWJlbFNpZGU6aSxpY29uOmN9PWUscz1hKGUsW1wiZGlzYWJsZWRcIixcImlkXCIsXCJsYWJlbFwiLFwibGFiZWxTaWRlXCIsXCJpY29uXCJdKTtyZXR1cm4oMCxsLmpzeCkocCx7Y2hpbGRyZW46KDAsbC5qc3hzKSh2LE9iamVjdC5hc3NpZ24oe2FzOlwibGFiZWxcIixodG1sRm9yOnIsbGFiZWxTaWRlOmksZGlzYWJsZWQ6bn0se2NoaWxkcmVuOlsoMCxsLmpzeCkoaCxPYmplY3QuYXNzaWduKHtyZWY6dCx0eXBlOlwicmFkaW9cIixkaXNhYmxlZDpufSxzKSksKDAsbC5qc3gpKEMse30pLCEhYyYmKDAsbC5qc3gpKGYuSWNvbix7aWNvbjpjfSksb3x8XCJcIl19KSl9KX0pKSx0LlJhZGlvSW5wdXQuZGlzcGxheU5hbWU9XCJSYWRpb0lucHV0XCI7Y29uc3QgcD0oMCx1LmRlZmF1bHQpKGQuQm94KWBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbmAsQz11LmRlZmF1bHQuZGl2YFxuICB3aWR0aDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogMnB4O1xuICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuXG4gIGlucHV0OmNoZWNrZWQgfiAmOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgICB3aWR0aDogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICAgIGhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICB9XG5cbiAgaW5wdXQ6ZGlzYWJsZWQgfiAmIHtcbiAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgfVxuXG4gIGlucHV0OmRpc2FibGVkIH4gJjphZnRlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICB9XG5gLGg9dS5kZWZhdWx0LmlucHV0YFxuICBvcGFjaXR5OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAmOmRpc2FibGVkIHtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gIH1cbmAsdj0oMCx1LmRlZmF1bHQpKGMuVGV4dClgXG4gIHdpZHRoOiBmaXQtY29udGVudDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246ICR7KHtsYWJlbFNpZGU6ZX0pPT57c3dpdGNoKGV8fFwicmlnaHRcIil7Y2FzZVwibGVmdFwiOnJldHVyblwicm93LXJldmVyc2VcIjtjYXNlXCJyaWdodFwiOnJldHVyblwicm93XCI7Y2FzZVwidG9wXCI6cmV0dXJuXCJjb2x1bW4tcmV2ZXJzZVwiO2Nhc2VcImJvdHRvbVwiOnJldHVyblwiY29sdW1uXCJ9fX07XG4gIGdhcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAkeyh7ZGlzYWJsZWQ6ZX0pPT5lP3UuY3NzYFxuICAgICAgICAgICYge1xuICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gICAgICAgIGA6bnVsbH1cbmB9LDg1MTA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDc0MjkpLHQpfSw3NDI5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlJhd0lucHV0PXZvaWQgMDtjb25zdCBvPXIobig3NTE4KSk7dC5SYXdJbnB1dD1vLmRlZmF1bHQuaW5wdXRgYCx0LlJhd0lucHV0LmRpc3BsYXlOYW1lPVwiUmF3SW5wdXRcIn0sMzExOTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNzk5KSx0KX0sNzk5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRleHRBcmVhPXZvaWQgMDtjb25zdCBvPW4oNTg5MyksaT1uKDY2ODkpLGE9cihuKDc1MTgpKSxsPW4oOTUwNyksYz1uKDk1MDcpLHM9big5NTA3KTt0LlRleHRBcmVhPSgwLGkuZm9yd2FyZFJlZikoKChlLHQpPT4oMCxvLmpzeCkodSxPYmplY3QuYXNzaWduKHtyZWY6dH0sZSx7b25DaGFuZ2U6ZS5vbkNoYW5nZX0pKSkpLHQuVGV4dEFyZWEuZGlzcGxheU5hbWU9XCJUZXh0QXJlYVwiO2NvbnN0IHU9YS5kZWZhdWx0LnRleHRhcmVhYFxuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9O1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRCb3JkZXJ9O1xuICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplLHN0YXR1czp0fSk9PigwLHMuZ2V0U3RhdHVzQ29sb3IpKGUsdCxcImlucHV0Qm9yZGVyXCIpfTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICB3aWR0aDogMTAwJTtcbiAgcmVzaXplOiBub25lO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICAke2wuTWl4aW5zLnNjcm9sbGJhci5zbWFsbH07XG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRDb2xvcn07XG4gIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUubGluZUhlaWdodC50ZXh0fTtcbiAgZm9udC13ZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuZm9udFdlaWdodC5ub3JtYWx9O1xuICBmb250LWZhbWlseTogJHtjLkZvbnRTdGFja307XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9IDBweFxuICAgICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7XG4gICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZSxzdGF0dXM6dH0pPT4oMCxzLmdldFN0YXR1c0NvbG9yKShlLHQsXCJpbnB1dEZvY3VzZWRcIil9O1xuICB9XG5cbiAgJjpkaXNhYmxlZDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gIH1cbmB9LDg5NTE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDIzNTIpLHQpfSwyMzUyOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRleHRJbnB1dD12b2lkIDA7Y29uc3Qgcj1uKDU4OTMpLG89big2Njg5KSxpPW4oODg3OCk7dC5UZXh0SW5wdXQ9KDAsby5mb3J3YXJkUmVmKSgoKGUsdCk9PigwLHIuanN4KShpLkJhc2VJbnB1dCxPYmplY3QuYXNzaWduKHtyZWY6dCx0eXBlOlwidGV4dFwifSxlKSkpKSx0LlRleHRJbnB1dC5kaXNwbGF5TmFtZT1cIlRleHRJbnB1dFwifSwzMzM5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJveD12b2lkIDA7Y29uc3Qgbz1yKG4oNzUxOCkpLGk9big4NzMyKSxhPW4oNTQ1OSksbD17MTphLlBhbGV0dGUuYmFja2dyb3VuZDEsMjphLlBhbGV0dGUuYmFja2dyb3VuZDIsMzphLlBhbGV0dGUuYmFja2dyb3VuZDMsNDphLlBhbGV0dGUuYmFja2dyb3VuZDQsNTphLlBhbGV0dGUuYmFja2dyb3VuZDUsNjphLlBhbGV0dGUuYmFja2dyb3VuZDZ9O3QuQm94PW8uZGVmYXVsdC5kaXZgXG4gIC8qKlxuICAgKiBTdHlsZSBTY3JvbGxiYXIgZm9yIEJveGVzIHdpdGggb3ZlcmZsb3dcbiAgICovXG4gICR7aS5NaXhpbnMuc2Nyb2xsYmFyLmJhc2V9XG5cbiAgZGlzcGxheTogJHsoe2Rpc3BsYXk6ZT1cImZsZXhcIn0pPT5lfTtcbiAgZmxleC1kaXJlY3Rpb246ICR7KHtmbGV4RGlyZWN0aW9uOmU9XCJyb3dcIn0pPT5lfTtcbiAgZmxleC13cmFwOiAkeyh7ZmxleFdyYXA6ZT1cIm5vd3JhcFwifSk9PmV9O1xuICBhbGlnbi1pdGVtczogJHsoe2FsaWduSXRlbXM6ZX0pPT5lfTtcbiAganVzdGlmeS1jb250ZW50OiAkeyh7anVzdGlmeUNvbnRlbnQ6ZX0pPT5lfTtcbiAgZ2FwOiAkeyh7dGhlbWU6ZSxnYXA6dH0pPT50JiZlLnB4W3RdfTtcbiAgYWxpZ24tc2VsZjogJHsoe2FsaWduU2VsZjplfSk9PmV9O1xuICBmbGV4LWJhc2lzOiAkeyh7ZmxleEJhc2lzOmV9KT0+ZX07XG4gIGZsZXgtZ3JvdzogJHsoe2ZsZXhHcm93OmV9KT0+ZX07XG4gIGZsZXgtc2hyaW5rOiAkeyh7ZmxleFNocmluazplfSk9PmV9O1xuICBvcmRlcjogJHsoe29yZGVyOmV9KT0+ZX07XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplLHBhZGRpbmc6dH0pPT50JiZlLnB4W3RdfTtcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmUsYmFja2dyb3VuZDp0fSk9PnQmJmUucGFsZXR0ZVtsW3RdXX07XG5gLHQuQm94LmRpc3BsYXlOYW1lPVwiQm94XCJ9LDEzMzU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDMzMzkpLHQpfSw2NzEwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRGVmaW5pdGlvbkxpc3Q9dm9pZCAwO2NvbnN0IGk9big1ODkzKSxhPW8obig3NTE4KSk7dC5EZWZpbml0aW9uTGlzdD1lPT57dmFye2RlZmluaXRpb25zOnR9PWUsbj1yKGUsW1wiZGVmaW5pdGlvbnNcIl0pO3JldHVybigwLGkuanN4KShjLE9iamVjdC5hc3NpZ24oe30sbix7cm9sZTpcImxpc3RcIn0se2NoaWxkcmVuOihBcnJheS5pc0FycmF5KHQpP3Q6QXJyYXkuZnJvbSh0KSkubWFwKCgoW2UsdF0sbik9PigwLGkuanN4cykobCxPYmplY3QuYXNzaWduKHtyb2xlOlwibGlzdGl0ZW1cIn0se2NoaWxkcmVuOlsoMCxpLmpzeCkocyxPYmplY3QuYXNzaWduKHtpZDpgdGVybSR7bn1gfSx7Y2hpbGRyZW46ZX0pKSwoMCxpLmpzeCkodSxPYmplY3QuYXNzaWduKHtcImFyaWEtbGFiZWxsZWRieVwiOmB0ZXJtJHtufWB9LHtjaGlsZHJlbjp0fSkpXX0pLGAke2V9LSR7bn1gKSkpfSkpfTtjb25zdCBsPWEuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDNmcjtcbmAsYz1hLmRlZmF1bHQuZGxgXG4gIGdhcDogJHsoe3RoZW1lOmV9KT0+YDAgJHtlLnB4LmxhcmdlfWB9O1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfSAke2UucHguYmFzZX1gfTtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbmAscz1hLmRlZmF1bHQuZHRgXG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dEhlbHB9O1xuICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuc21hbGx9O1xuICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0Lm5vcm1hbH07XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5gLHU9YS5kZWZhdWx0LmRkYFxuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLnNtYWxsfTtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbmB9LDUzNzc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDY3MTApLHQpfSw5NDMxOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lkdsb2JhbFN0eWxlcz12b2lkIDA7Y29uc3Qgcj1uKDc1MTgpLG89bigzNDcxKSxpPW4oNTc1KTt0Lkdsb2JhbFN0eWxlcz1yLmNyZWF0ZUdsb2JhbFN0eWxlYFxuICAvKiogLT4gRGVmaW5lIEdsb2JhbCBDU1MgVmFycyAqL1xuICA6cm9vdCB7XG4gICAgLS1vcGVuZmluLXVpLWdsb2JhbEJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kMX07XG4gICAgLS1vcGVuZmluLXVpLWdsb2JhbFRleHQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gICAgLS1vcGVuZmluLXVpLWdsb2JhbFBsYWNlaG9sZGVyOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcn07XG4gICAgLS1vcGVuZmluLXVpLWdsb2JhbFR5cG9ncmFwaHk6ICR7by5UeXBvZ3JhcGh5LmJhc2V9O1xuICAgIC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uOiAkeyh7dGhlbWU6ZX0pPT5lLnRyYW5zaXRpb24uYmFzZX07XG5cbiAgICAvKiBNYXAgb3ZlciB0aGUgcGFsZXR0ZSBrZXlzIGFuZCBjcmVhdGUgdmFyaWFibGVzIG91dCBvZiB0aGVtICovXG4gICAgJHtpLmdldFJvb3RDc3NWYXJzfVxuICB9XG5cbiAgLyoqIC0+IEBmb250LWZhY2UgRGVjbGFyYXRpb24gKi9cbiAgJHtpLmdldEZvbnRGYWNlc31cblxuICAvKiogLT4gTWljcm8gUmVzZXQgKi9cbiAgKiB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICAvKipcbiAgICAgKiBQcmV2ZW50IGJyb3dzZXIgYXV0by13ZWlnaHRpbmdcbiAgICAgKiBAbGluayBodHRwczovL2Nzcy10cmlja3MuY29tL2FsbWFuYWMvcHJvcGVydGllcy9mL2ZvbnQtc3ludGhlc2lzL1xuICAgICAqL1xuICAgIGZvbnQtc3ludGhlc2lzOiBub25lO1xuICB9XG5cbiAgLyoqIC0+IEFwcGx5IEdsb2JhbCBTdHlsZXMgKi9cbiAgOnJvb3QsXG4gIGJvZHkge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLW9wZW5maW4tdWktZ2xvYmFsQmFja2dyb3VuZCk7XG4gICAgY29sb3I6IHZhcigtLW9wZW5maW4tdWktZ2xvYmFsVGV4dCk7XG4gICAgZm9udDogdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUeXBvZ3JhcGh5KTtcbiAgfVxuXG4gIDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFBsYWNlaG9sZGVyKTtcbiAgfVxuXG4gIC8qKiAtPiBSZWR1Y2VkIE1vdGlvbiAoQWNjZXNzaWJpbGl0eSkgKi9cbiAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uKSB7XG4gICAgOnJvb3Qge1xuICAgICAgLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb246ICR7KHt0aGVtZTplfSk9PmUudHJhbnNpdGlvbi5ub25lfTtcbiAgICB9XG4gIH1cbmB9LDEwNjk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDk0MzEpLHQpfSw5NTA3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigzNDcxKSx0KSxvKG4oNjcxNCksdCksbyhuKDkyNzIpLHQpLG8obig1NzUpLHQpLG8obigxNDQxKSx0KSxvKG4oODczMiksdCksbyhuKDU0NTkpLHQpLG8obig1MzE3KSx0KSxvKG4oNDIwKSx0KX0sOTk4NDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZXRNb3N0UmVhZGFibGU9dC5kYXJrZW5Db2xvcj10LmxpZ2h0ZW5Db2xvcj12b2lkIDA7Y29uc3Qgbz1yKG4oODIwNykpO3QubGlnaHRlbkNvbG9yPShlLHQpPT5pKGUsXCJsaWdodGVuXCIsdCksdC5kYXJrZW5Db2xvcj0oZSx0KT0+aShlLFwiZGFya2VuXCIsdCk7Y29uc3QgaT0oZSx0LG4pPT57aWYobiYmKG48MHx8bj4xMDApKXRocm93IG5ldyBFcnJvcihgJHtufSBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMTAwYCk7cmV0dXJuKDAsby5kZWZhdWx0KShlKVt0XShuKS50b1N0cmluZygpfTt0LmdldE1vc3RSZWFkYWJsZT0oZSx0KT0+by5kZWZhdWx0Lm1vc3RSZWFkYWJsZShlLHQpLnRvSGV4U3RyaW5nKCl9LDgwMjk6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNvbmZpZ3VyYXRpb249dm9pZCAwLHQuQ29uZmlndXJhdGlvbj17Zm9udExvYWRpbmc6XCJjZG5cIn19LDM0NzE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9KSxpPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZyKHQsZSxuKTtyZXR1cm4gbyh0LGUpLHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuY2RuRm9udEZhY2VDc3M9dC5JY29uU2l6ZT10Lkljb25TZXQ9dC5UcmFuc2l0aW9uPXQuVHlwb2dyYXBoeT10LkxpbmVIZWlnaHQ9dC5Gb250V2VpZ2h0PXQuRm9udFNpemU9dC5Gb250U3RhY2s9dC5TaGFkb3c9dC5SYWRpdXM9dC5Vbml0UHg9dC5Vbml0PXQuU2l6ZU5hbWU9dC5TaXplPXQuQ29sb3I9dm9pZCAwO2NvbnN0IGE9aShuKDE1MjEpKSxsPWkobigyNzcyKSksYz1uKDkyNzIpO3QuQ29sb3I9e3doaXRlOlwiI0ZGRkZGRlwiLGxpZ2h0R3JheTE6XCIjRkFGQkZFXCIsbGlnaHRHcmF5MjpcIiNGM0Y1RjhcIixsaWdodEdyYXkzOlwiI0VDRUVGMVwiLGxpZ2h0R3JheTQ6XCIjRERERkU0XCIsbGlnaHRHcmF5NTpcIiNDOUNCRDJcIixuZXV0cmFsR3JheTpcIiM3RDgwOEFcIixuZXV0cmFsR3JheTgwOlwicmdiYSgxMjUsMTI4LDEzOCwwLjgpXCIsc2lsdmVyR3JheTpcIiNDMEMxQzJcIixkYXJrR3JheTE6XCIjNTM1NjVGXCIsZGFya0dyYXkyOlwiIzM4M0E0MFwiLGRhcmtHcmF5MzpcIiMyRjMxMzZcIixkYXJrR3JheTQ6XCIjMjQyNjJCXCIsZGFya0dyYXk1OlwiIzFFMUYyM1wiLGRhcmtHcmF5NjpcIiMxMTEyMTRcIixvcGVuRmluRGFya2VzdDpcIiMzRDM5Q0RcIixvcGVuRmluRGFya2VyOlwiIzQ2NDJFMFwiLG9wZW5GaW46XCIjNTA0Q0ZGXCIsb3BlbkZpbkxpZ2h0OlwiIzUyNTRGQlwiLG9wZW5GaW5MaWdodGVyOlwiIzVDNUVGRVwiLG9wZW5GaW5MaWdodGVzdDpcIiM2ODY0RkZcIixmdW5jdGlvbmFsMTpcIiMyMDc3MzVcIixmdW5jdGlvbmFsMjpcIiM0NkM4RjFcIixmdW5jdGlvbmFsMzpcIiMwQTc2RDNcIixmdW5jdGlvbmFsNDpcIiM2Q0FERTVcIixmdW5jdGlvbmFsNTpcIiMwQTc2RDNcIixmdW5jdGlvbmFsNjpcIiM4ODJCRkVcIixmdW5jdGlvbmFsNzpcIiNGMzE4MThcIixmdW5jdGlvbmFsODpcIiNDOTM0MDBcIixmdW5jdGlvbmFsOTpcIiNGRjVFNjBcIixmdW5jdGlvbmFsMTA6XCIjRjQ4RjAwXCIscHVycGxlOlwiIzhDNjFGRlwiLGxpZ2h0Ymx1ZTpcIiMzNkMzRkVcIixhcXVhOlwiIzAwQ0M4OFwiLHllbGxvdzpcIiNGRkVCMDBcIixzYWxtb246XCIjRkY4QzRDXCIscGluazpcIiNGRjVFNjBcIixsaWdodHBpbms6XCIjRkY4RkI4XCIsd2hpdGUwMDpcInJnYmEoMjU1LDI1NSwyNTUsMC4wKVwiLHdoaXRlMTA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuMSlcIix3aGl0ZTIwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjIpXCIsd2hpdGUzMDpcInJnYmEoMjU1LDI1NSwyNTUsMC4zKVwiLHdoaXRlNDA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNClcIix3aGl0ZTUwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjUpXCIsd2hpdGU2MDpcInJnYmEoMjU1LDI1NSwyNTUsMC42KVwiLHdoaXRlNzA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNylcIix3aGl0ZTgwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjgpXCIsd2hpdGU5MDpcInJnYmEoMjU1LDI1NSwyNTUsMC45KVwiLGJsYWNrMDA6XCJyZ2JhKDAsMCwwLDAuMClcIixibGFjazEwOlwicmdiYSgwLDAsMCwwLjEpXCIsYmxhY2syMDpcInJnYmEoMCwwLDAsMC4yKVwiLGJsYWNrMzA6XCJyZ2JhKDAsMCwwLDAuMylcIixibGFjazQwOlwicmdiYSgwLDAsMCwwLjQpXCIsYmxhY2s1MDpcInJnYmEoMCwwLDAsMC41KVwiLGJsYWNrNjA6XCJyZ2JhKDAsMCwwLDAuNilcIixibGFjazcwOlwicmdiYSgwLDAsMCwwLjcpXCIsYmxhY2s4MDpcInJnYmEoMCwwLDAsMC44KVwiLGJsYWNrOTA6XCJyZ2JhKDAsMCwwLDAuOSlcIix0cmFuc3BhcmVudDpcInRyYW5zcGFyZW50XCJ9LHQuU2l6ZT17eHNtYWxsOlwieHNtYWxsXCIsc21hbGw6XCJzbWFsbFwiLGJhc2U6XCJiYXNlXCIsbGFyZ2U6XCJsYXJnZVwiLHhsYXJnZTpcInhsYXJnZVwiLHh4bGFyZ2U6XCJ4eGxhcmdlXCIseHh4bGFyZ2U6XCJ4eHhsYXJnZVwiLHh4eHhsYXJnZTpcInh4eHhsYXJnZVwifSx0LlNpemVOYW1lPXtbdC5TaXplLnhzbWFsbF06XCJFeHRyYSBTbWFsbFwiLFt0LlNpemUuc21hbGxdOlwiU21hbGxcIixbdC5TaXplLmJhc2VdOlwiQmFzZVwiLFt0LlNpemUubGFyZ2VdOlwiTGFyZ2VcIixbdC5TaXplLnhsYXJnZV06XCJFeHRyYSBMYXJnZVwiLFt0LlNpemUueHhsYXJnZV06XCIyWCBMYXJnZVwiLFt0LlNpemUueHh4bGFyZ2VdOlwiM1ggTGFyZ2VcIixbdC5TaXplLnh4eHhsYXJnZV06XCI0WCBMYXJnZVwifSx0LlVuaXQ9e1t0LlNpemUueHNtYWxsXTo0LFt0LlNpemUuc21hbGxdOjgsW3QuU2l6ZS5iYXNlXToxMixbdC5TaXplLmxhcmdlXToxNixbdC5TaXplLnhsYXJnZV06MjAsW3QuU2l6ZS54eGxhcmdlXToyNCxbdC5TaXplLnh4eGxhcmdlXTozMixbdC5TaXplLnh4eHhsYXJnZV06NDh9LHQuVW5pdFB4PXtbdC5TaXplLnhzbWFsbF06XCI0cHhcIixbdC5TaXplLnNtYWxsXTpcIjhweFwiLFt0LlNpemUuYmFzZV06XCIxMnB4XCIsW3QuU2l6ZS5sYXJnZV06XCIxNnB4XCIsW3QuU2l6ZS54bGFyZ2VdOlwiMjBweFwiLFt0LlNpemUueHhsYXJnZV06XCIyNHB4XCIsW3QuU2l6ZS54eHhsYXJnZV06XCIzMnB4XCIsW3QuU2l6ZS54eHh4bGFyZ2VdOlwiNDhweFwifSx0LlJhZGl1cz17W3QuU2l6ZS54c21hbGxdOlwiMnB4XCIsW3QuU2l6ZS5zbWFsbF06XCI0cHhcIixbdC5TaXplLmJhc2VdOlwiOHB4XCIsW3QuU2l6ZS5sYXJnZV06XCIyNHB4XCIscGlsbDpcIjEwMHZoXCIscm91bmQ6XCI1MCVcIixub25lOlwiMFwifSx0LlNoYWRvdz17W3QuU2l6ZS5iYXNlXTpcIjAgNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMjUpXCJ9LHQuRm9udFN0YWNrPVtcIkludGVyXCIsXCItYXBwbGUtc3lzdGVtXCIsXCJCbGlua01hY1N5c3RlbUZvbnRcIixcIlNlZ29lIFVJXCIsXCJSb2JvdG9cIixcIk94eWdlbi1TYW5zXCIsXCJVYnVudHVcIixcIkNhbnRhcmVsbFwiLFwiSGVsdmV0aWNhIE5ldWVcIixcInNhbnMtc2VyaWZcIl0uam9pbihcIiwgXCIpLHQuRm9udFNpemU9e1t0LlNpemUueHNtYWxsXTpcIjhweFwiLFt0LlNpemUuc21hbGxdOlwiMTBweFwiLFt0LlNpemUuYmFzZV06XCIxMnB4XCIsW3QuU2l6ZS5sYXJnZV06XCIxNHB4XCIsW3QuU2l6ZS54bGFyZ2VdOlwiMTZweFwiLFt0LlNpemUueHhsYXJnZV06XCIxOHB4XCIsW3QuU2l6ZS54eHhsYXJnZV06XCIyMHB4XCIsW3QuU2l6ZS54eHh4bGFyZ2VdOlwiNDBweFwifSx0LkZvbnRXZWlnaHQ9e25vcm1hbDo0MDAsYm9sZDo2MDB9LHQuTGluZUhlaWdodD17dWk6MSxoZWFkaW5nOjEuMix0ZXh0OjEuNX0sdC5UeXBvZ3JhcGh5PXtiYXNlOmAke3QuRm9udFNpemUuYmFzZX0vJHt0LkxpbmVIZWlnaHQudGV4dH0gJHt0LkZvbnRTdGFja31gfSx0LlRyYW5zaXRpb249e2Jhc2U6XCIyMDBtcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKVwiLG5vbmU6XCIwbXNcIn0sdC5JY29uU2V0PU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSxsKSx0Lkljb25TaXplPXtbdC5TaXplLnhzbWFsbF06dC5Vbml0UHguc21hbGwsW3QuU2l6ZS5zbWFsbF06dC5Vbml0UHguYmFzZSxbdC5TaXplLmJhc2VdOlwiMTVweFwiLFt0LlNpemUubGFyZ2VdOnQuVW5pdFB4LnhsYXJnZSxbdC5TaXplLnhsYXJnZV06dC5Vbml0UHgueHhsYXJnZSxbdC5TaXplLnh4bGFyZ2VdOnQuVW5pdFB4Lnh4eGxhcmdlLFt0LlNpemUueHh4bGFyZ2VdOnQuVW5pdFB4Lnh4eHhsYXJnZX0sdC5jZG5Gb250RmFjZUNzcz0oMCxjLmNyZWF0ZUZvbnRGYWNlQ3NzKSh7cmVndWxhcjpcIi8vY2RuLm9wZW5maW4uY28vZm9udHMvaW50ZXIvSW50ZXItUmVndWxhci53b2ZmMj92My4xNVwiLGl0YWxpYzpcIi8vY2RuLm9wZW5maW4uY28vZm9udHMvaW50ZXIvSW50ZXItSXRhbGljLndvZmYyP3YzLjE1XCIsc2VtaUJvbGQ6XCIvL2Nkbi5vcGVuZmluLmNvL2ZvbnRzL2ludGVyL0ludGVyLVNlbWlCb2xkLndvZmYyP3YzLjE1XCIsc2VtaUJvbGRJdGFsaWM6XCIvL2Nkbi5vcGVuZmluLmNvL2ZvbnRzL2ludGVyL0ludGVyLVNlbWlCb2xkSXRhbGljLndvZmYyP3YzLjE1XCJ9KX0sOTI3MjooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5jcmVhdGVGb250RmFjZUNzcz12b2lkIDA7Y29uc3Qgcj1uKDc1MTgpLG89bigzNDcxKTt0LmNyZWF0ZUZvbnRGYWNlQ3NzPWZ1bmN0aW9uKGUpe3JldHVybiByLmNzc2BcbiAgICBAZm9udC1mYWNlIHtcbiAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInO1xuICAgICAgc3JjOiB1cmwoJHtlLnJlZ3VsYXJ9KSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgICBmb250LXdlaWdodDogJHtvLkZvbnRXZWlnaHQubm9ybWFsfTtcbiAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICB9XG4gICAgQGZvbnQtZmFjZSB7XG4gICAgICBmb250LWZhbWlseTogJ0ludGVyJztcbiAgICAgIHNyYzogdXJsKCR7ZS5pdGFsaWN9KSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgICBmb250LXdlaWdodDogJHtvLkZvbnRXZWlnaHQubm9ybWFsfTtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICB9XG5cbiAgICBAZm9udC1mYWNlIHtcbiAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInO1xuICAgICAgc3JjOiB1cmwoJHtlLnNlbWlCb2xkfSkgZm9ybWF0KCd3b2ZmMicpO1xuICAgICAgZm9udC13ZWlnaHQ6ICR7by5Gb250V2VpZ2h0LmJvbGR9O1xuICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgIH1cblxuICAgIEBmb250LWZhY2Uge1xuICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICBzcmM6IHVybCgke2Uuc2VtaUJvbGRJdGFsaWN9KSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgICBmb250LXdlaWdodDogJHtvLkZvbnRXZWlnaHQuYm9sZH07XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgfVxuICBgfX0sNjcxNDooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5jcmVhdGVUaGVtZT12b2lkIDA7Y29uc3Qgcj1uKDgwMjkpLG89bigzNDcxKSxpPW4oOTk4NCksYT1uKDU0NTkpLGw9e19jb25maWc6ci5Db25maWd1cmF0aW9uLF9jb2xvcjpvLkNvbG9yLGZvbnRTaXplOm8uRm9udFNpemUsZm9udFdlaWdodDpvLkZvbnRXZWlnaHQsbGluZUhlaWdodDpvLkxpbmVIZWlnaHQsaWNvblNpemU6by5JY29uU2l6ZSxyYWRpdXM6by5SYWRpdXMsc2hhZG93Om8uU2hhZG93LHRyYW5zaXRpb246by5UcmFuc2l0aW9uLHVuaXQ6by5Vbml0LHB4Om8uVW5pdFB4fSxjPShlLHQpPT4oe1tgJHtlfUFjdGl2ZWBdOigwLGkuZGFya2VuQ29sb3IpKHQsMiksW2Ake2V9SG92ZXJgXTooMCxpLmxpZ2h0ZW5Db2xvcikodCw1KSxbYCR7ZX1Gb2N1c2VkYF06KDAsaS5nZXRNb3N0UmVhZGFibGUpKHQsW28uQ29sb3Iud2hpdGUsby5Db2xvci5kYXJrR3JheTVdKSxbYCR7ZX1UZXh0YF06KDAsaS5nZXRNb3N0UmVhZGFibGUpKHQsW28uQ29sb3Iud2hpdGUsby5Db2xvci5kYXJrR3JheTVdKX0pO3QuY3JlYXRlVGhlbWU9KGUsdD1cImRhcmtcIik9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxsKSx7cGFsZXR0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSxjKGEuUGFsZXR0ZS5icmFuZFByaW1hcnksZS5icmFuZFByaW1hcnkpKSxjKGEuUGFsZXR0ZS5icmFuZFNlY29uZGFyeSxlLmJyYW5kU2Vjb25kYXJ5KSl9KTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtzZWxlY3RlZFNjaGVtZTp0fSl9fSw1NzU6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZ2V0U3RhdHVzQ29sb3I9dC5nZXRGb250RmFjZXM9dC5nZXRSb290Q3NzVmFycz10LmdldFZhcmlhbnRDU1M9dm9pZCAwO2NvbnN0IHI9bigzNDcxKSxvPW4oNTQ1OSk7dC5nZXRWYXJpYW50Q1NTPShlLHQpPT5uPT5lW3RdW25bdF1dLHQuZ2V0Um9vdENzc1ZhcnM9KHt0aGVtZTplfSk9Pk9iamVjdC5rZXlzKG8uUGFsZXR0ZSkubWFwKCh0PT5gLS1vcGVuZmluLXVpLSR7dH06ICR7ZS5wYWxldHRlW3RdfTtgKSkuam9pbihcIlxcblwiKSx0LmdldEZvbnRGYWNlcz0oe3RoZW1lOmV9KT0+XCJpbXBvcnRcIj09PWUuX2NvbmZpZy5mb250TG9hZGluZz9lLl9jb25maWcuZm9udENzczpyLmNkbkZvbnRGYWNlQ3NzLHQuZ2V0U3RhdHVzQ29sb3I9KGUsdCxuKT0+e3N3aXRjaCh0KXtjYXNlXCJhY3RpdmVcIjpyZXR1cm4gZS5wYWxldHRlLnN0YXR1c0FjdGl2ZTtjYXNlXCJjcml0aWNhbFwiOnJldHVybiBlLnBhbGV0dGUuc3RhdHVzQ3JpdGljYWw7Y2FzZVwid2FybmluZ1wiOnJldHVybiBlLnBhbGV0dGUuc3RhdHVzV2FybmluZztjYXNlXCJzdWNjZXNzXCI6cmV0dXJuIGUucGFsZXR0ZS5zdGF0dXNTdWNjZXNzO2RlZmF1bHQ6cmV0dXJuIG4/ZS5wYWxldHRlW25dOlwiaW5oZXJpdFwifX19LDE0NDE6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sODczMjooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5NaXhpbnM9dm9pZCAwO2NvbnN0IHI9bigzNDcxKSxvPW4oNzUxOCksaT1vLmNzc2BcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG5gLGE9by5jc3NgXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYCxsPW8uY3NzYFxuICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgd2lkdGg6IHZhcigtLXNjcm9sbGJhclNpemUsICR7ci5Vbml0UHgueHNtYWxsfSk7XG4gICAgaGVpZ2h0OiB2YXIoLS1zY3JvbGxiYXJTaXplLCAke3IuVW5pdFB4LnhzbWFsbH0pO1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgIGJhY2tncm91bmQ6ICR7ci5Db2xvci5uZXV0cmFsR3JheTgwfTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zY3JvbGxiYXJTaXplLCAke3IuVW5pdFB4LnhzbWFsbH0pO1xuICAgIG9wYWNpdHk6IDAuODtcbiAgfVxuXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kOiAke3IuQ29sb3Iud2hpdGU4MH07XG4gICAgd2lkdGg6IHZhcigtLXNjcm9sbGJhclNpemUsICR7ci5Vbml0UHgueHNtYWxsfSk7XG4gICAgaGVpZ2h0OiB2YXIoLS1zY3JvbGxiYXJTaXplLCAke3IuVW5pdFB4LnhzbWFsbH0pO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNjcm9sbGJhclNpemUsICR7ci5Vbml0UHgueHNtYWxsfSk7XG4gICAgb3BhY2l0eTogMC44O1xuICB9XG5gLGM9by5jc3NgXG4gIC0tc2Nyb2xsYmFyU2l6ZTogMnB4O1xuICAke2x9O1xuYCxzPW8uY3NzYFxuICAtd2Via2l0LWFwcC1yZWdpb246IGRyYWc7XG5gLHU9by5jc3NgXG4gIC13ZWJraXQtYXBwLXJlZ2lvbjogbm8tZHJhZztcbmA7dC5NaXhpbnM9e25vU2VsZWN0OmksdGV4dE92ZXJmbG93OmEsc2Nyb2xsYmFyOntbci5TaXplLmJhc2VdOmwsW3IuU2l6ZS5zbWFsbF06Y30sYXBwUmVnaW9uOntkcmFnOnMsbm9EcmFnOnV9fX0sNTQ1OTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuUGFsZXR0ZT12b2lkIDAsdC5QYWxldHRlPXtiYWNrZ3JvdW5kMTpcImJhY2tncm91bmQxXCIsYmFja2dyb3VuZDI6XCJiYWNrZ3JvdW5kMlwiLGJhY2tncm91bmQzOlwiYmFja2dyb3VuZDNcIixiYWNrZ3JvdW5kNDpcImJhY2tncm91bmQ0XCIsYmFja2dyb3VuZDU6XCJiYWNrZ3JvdW5kNVwiLGJhY2tncm91bmQ2OlwiYmFja2dyb3VuZDZcIixicmFuZFByaW1hcnk6XCJicmFuZFByaW1hcnlcIixicmFuZFNlY29uZGFyeTpcImJyYW5kU2Vjb25kYXJ5XCIsYnJhbmRQcmltYXJ5QWN0aXZlOlwiYnJhbmRQcmltYXJ5QWN0aXZlXCIsYnJhbmRQcmltYXJ5SG92ZXI6XCJicmFuZFByaW1hcnlIb3ZlclwiLGJyYW5kUHJpbWFyeUZvY3VzZWQ6XCJicmFuZFByaW1hcnlGb2N1c2VkXCIsYnJhbmRQcmltYXJ5VGV4dDpcImJyYW5kUHJpbWFyeVRleHRcIixicmFuZFNlY29uZGFyeUFjdGl2ZTpcImJyYW5kU2Vjb25kYXJ5QWN0aXZlXCIsYnJhbmRTZWNvbmRhcnlIb3ZlcjpcImJyYW5kU2Vjb25kYXJ5SG92ZXJcIixicmFuZFNlY29uZGFyeUZvY3VzZWQ6XCJicmFuZFNlY29uZGFyeUZvY3VzZWRcIixicmFuZFNlY29uZGFyeVRleHQ6XCJicmFuZFNlY29uZGFyeVRleHRcIixpbnB1dEJhY2tncm91bmQ6XCJpbnB1dEJhY2tncm91bmRcIixpbnB1dENvbG9yOlwiaW5wdXRDb2xvclwiLGlucHV0UGxhY2Vob2xkZXI6XCJpbnB1dFBsYWNlaG9sZGVyXCIsaW5wdXREaXNhYmxlZDpcImlucHV0RGlzYWJsZWRcIixpbnB1dEZvY3VzZWQ6XCJpbnB1dEZvY3VzZWRcIixpbnB1dEJvcmRlcjpcImlucHV0Qm9yZGVyXCIsc3RhdHVzU3VjY2VzczpcInN0YXR1c1N1Y2Nlc3NcIixzdGF0dXNXYXJuaW5nOlwic3RhdHVzV2FybmluZ1wiLHN0YXR1c0NyaXRpY2FsOlwic3RhdHVzQ3JpdGljYWxcIixzdGF0dXNBY3RpdmU6XCJzdGF0dXNBY3RpdmVcIix0ZXh0RGVmYXVsdDpcInRleHREZWZhdWx0XCIsdGV4dEhlbHA6XCJ0ZXh0SGVscFwiLHRleHRJbmFjdGl2ZTpcInRleHRJbmFjdGl2ZVwiLGJvcmRlck5ldXRyYWw6XCJib3JkZXJOZXV0cmFsXCIsY29udGVudEJhY2tncm91bmQxOlwiY29udGVudEJhY2tncm91bmQxXCIsY29udGVudEJhY2tncm91bmQyOlwiY29udGVudEJhY2tncm91bmQyXCIsY29udGVudEJhY2tncm91bmQzOlwiY29udGVudEJhY2tncm91bmQzXCIsY29udGVudEJhY2tncm91bmQ0OlwiY29udGVudEJhY2tncm91bmQ0XCIsY29udGVudEJhY2tncm91bmQ1OlwiY29udGVudEJhY2tncm91bmQ1XCIsbGlua0RlZmF1bHQ6XCJsaW5rRGVmYXVsdFwiLGxpbmtIb3ZlcjpcImxpbmtIb3ZlclwifX0sNTMxNzooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSw0MjY2OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig5NDgzKSx0KX0sOTQ4MzooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5PcGVuRmluRGFya1RoZW1lPXQuT3BlbkZpbkxpZ2h0VGhlbWU9dm9pZCAwO2NvbnN0IHI9big1NDU5KSxvPW4oMzQ3MSksaT1uKDY3MTQpLGE9e1tyLlBhbGV0dGUuYnJhbmRQcmltYXJ5XTpvLkNvbG9yLm9wZW5GaW4sW3IuUGFsZXR0ZS5zdGF0dXNTdWNjZXNzXTpvLkNvbG9yLmZ1bmN0aW9uYWwxLFtyLlBhbGV0dGUuc3RhdHVzV2FybmluZ106by5Db2xvci5mdW5jdGlvbmFsMTAsW3IuUGFsZXR0ZS5zdGF0dXNDcml0aWNhbF06by5Db2xvci5mdW5jdGlvbmFsNyxbci5QYWxldHRlLnN0YXR1c0FjdGl2ZV06by5Db2xvci5mdW5jdGlvbmFsMyxbci5QYWxldHRlLmJvcmRlck5ldXRyYWxdOm8uQ29sb3Iuc2lsdmVyR3JheSxbci5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kMV06by5Db2xvci5vcGVuRmluLFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQyXTpcIiMwMDAwMDBcIixbci5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kM106XCIjMDAwMDAwXCIsW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDRdOlwiIzAwMDAwMFwiLFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQ1XTpcIiMwMDAwMDBcIixbci5QYWxldHRlLmxpbmtEZWZhdWx0XTpvLkNvbG9yLmZ1bmN0aW9uYWw0LFtyLlBhbGV0dGUubGlua0hvdmVyXTpvLkNvbG9yLmZ1bmN0aW9uYWw1fTt0Lk9wZW5GaW5MaWdodFRoZW1lPSgwLGkuY3JlYXRlVGhlbWUpKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx7W3IuUGFsZXR0ZS5iYWNrZ3JvdW5kMV06by5Db2xvci53aGl0ZSxbci5QYWxldHRlLmJhY2tncm91bmQyXTpvLkNvbG9yLmxpZ2h0R3JheTEsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kM106by5Db2xvci5saWdodEdyYXkyLFtyLlBhbGV0dGUuYmFja2dyb3VuZDRdOm8uQ29sb3IubGlnaHRHcmF5Myxbci5QYWxldHRlLmJhY2tncm91bmQ1XTpvLkNvbG9yLmxpZ2h0R3JheTMsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNl06by5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUuYnJhbmRTZWNvbmRhcnldOm8uQ29sb3IubGlnaHRHcmF5NCxbci5QYWxldHRlLmlucHV0QmFja2dyb3VuZF06by5Db2xvci5saWdodEdyYXkzLFtyLlBhbGV0dGUuaW5wdXRDb2xvcl06by5Db2xvci5kYXJrR3JheTUsW3IuUGFsZXR0ZS5pbnB1dFBsYWNlaG9sZGVyXTpvLkNvbG9yLmRhcmtHcmF5Mixbci5QYWxldHRlLmlucHV0RGlzYWJsZWRdOm8uQ29sb3IubmV1dHJhbEdyYXksW3IuUGFsZXR0ZS5pbnB1dEZvY3VzZWRdOm8uQ29sb3IubGlnaHRHcmF5NSxbci5QYWxldHRlLmlucHV0Qm9yZGVyXTpvLkNvbG9yLm5ldXRyYWxHcmF5LFtyLlBhbGV0dGUudGV4dERlZmF1bHRdOm8uQ29sb3IuZGFya0dyYXk1LFtyLlBhbGV0dGUudGV4dEhlbHBdOm8uQ29sb3IubmV1dHJhbEdyYXksW3IuUGFsZXR0ZS50ZXh0SW5hY3RpdmVdOm8uQ29sb3IubmV1dHJhbEdyYXl9KSxcImxpZ2h0XCIpLHQuT3BlbkZpbkRhcmtUaGVtZT0oMCxpLmNyZWF0ZVRoZW1lKShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYSkse1tyLlBhbGV0dGUuYmFja2dyb3VuZDFdOm8uQ29sb3IuZGFya0dyYXk2LFtyLlBhbGV0dGUuYmFja2dyb3VuZDJdOm8uQ29sb3IuZGFya0dyYXk1LFtyLlBhbGV0dGUuYmFja2dyb3VuZDNdOm8uQ29sb3IuZGFya0dyYXk0LFtyLlBhbGV0dGUuYmFja2dyb3VuZDRdOm8uQ29sb3IuZGFya0dyYXkzLFtyLlBhbGV0dGUuYmFja2dyb3VuZDVdOm8uQ29sb3IuZGFya0dyYXkyLFtyLlBhbGV0dGUuYmFja2dyb3VuZDZdOm8uQ29sb3IuZGFya0dyYXkxLFtyLlBhbGV0dGUuYnJhbmRTZWNvbmRhcnldOm8uQ29sb3IuZGFya0dyYXkyLFtyLlBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kXTpvLkNvbG9yLmRhcmtHcmF5MSxbci5QYWxldHRlLmlucHV0Q29sb3JdOm8uQ29sb3Iud2hpdGUsW3IuUGFsZXR0ZS5pbnB1dFBsYWNlaG9sZGVyXTpvLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS5pbnB1dERpc2FibGVkXTpvLkNvbG9yLm5ldXRyYWxHcmF5LFtyLlBhbGV0dGUuaW5wdXRGb2N1c2VkXTpvLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS5pbnB1dEJvcmRlcl06by5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLnRleHREZWZhdWx0XTpvLkNvbG9yLndoaXRlLFtyLlBhbGV0dGUudGV4dEhlbHBdOm8uQ29sb3IubGlnaHRHcmF5NSxbci5QYWxldHRlLnRleHRJbmFjdGl2ZV06by5Db2xvci5uZXV0cmFsR3JheX0pLFwiZGFya1wiKX0sNDIwOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRoZW1lUHJvdmlkZXI9dm9pZCAwO2NvbnN0IHI9big1ODkzKSxvPW4oNzUxOCksaT1uKDcwODgpLGE9bigxMDY5KTt0LlRoZW1lUHJvdmlkZXI9KHtjaGlsZHJlbjplLHRoZW1lczp0LHNjaGVtZTpuLGNvbmZpZzpsLGluY2x1ZGVHbG9iYWxTdHlsZXM6Yz0hMH0pPT57Y29uc3Qgcz0oMCxpLnVzZVRoZW1lKSh7dGhlbWVzOnQsc2NoZW1lOm4sY29uZmlnOmx9KTtyZXR1cm4oMCxyLmpzeCkoby5UaGVtZVByb3ZpZGVyLE9iamVjdC5hc3NpZ24oe3RoZW1lOnN9LHtjaGlsZHJlbjooMCxyLmpzeHMpKHIuRnJhZ21lbnQse2NoaWxkcmVuOltjJiYoMCxyLmpzeCkoYS5HbG9iYWxTdHlsZXMse30pLGVdfSl9KSl9fSw5NzU4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNvbnRhY3RTdGF0dXNJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5MyksaT1yKG4oNzUxOCkpLGE9bigxMzMzKSxsPXthdmFpbGFibGU6KDAsby5qc3gpKGEuQ2hlY2tTVkcse30pLGF3YXk6KDAsby5qc3gpKGEuQnVzeVNWRyx7fSksXCJkby1ub3QtZGlzdHVyYlwiOigwLG8uanN4KShhLkRvTm90RGlzdHVyYlNWRyx7fSksb2ZmbGluZTooMCxvLmpzeCkoYS5PZmZsaW5lU1ZHLHt9KSxidXN5Om51bGx9O3QuQ29udGFjdFN0YXR1c0ljb249KHtvbmxpbmVTdGF0dXM6ZX0pPT5lPygwLG8uanN4KShjLE9iamVjdC5hc3NpZ24oe29ubGluZVN0YXR1czplfSx7Y2hpbGRyZW46bFtlXXx8bnVsbH0pKTpudWxsO2NvbnN0IGM9aS5kZWZhdWx0LmRpdmBcbiAgYm9yZGVyOiAxLjZweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDF9O1xuXG4gIGJhY2tncm91bmQ6ICR7KHtvbmxpbmVTdGF0dXM6ZSx0aGVtZTp0fSk9PlwiYnVzeVwiPT09ZT9cIiNDMjEzMTNcIjp0LnBhbGV0dGUuYmFja2dyb3VuZDF9O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmxhcmdlfTtcbiAgd2lkdGg6ICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9O1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNzguOTUlO1xuICByaWdodDogLTcuMDIlO1xuICB0b3A6IDc3LjEyJTtcbiAgYm90dG9tOiAtNC4yNCU7XG5gfSwxMzMzOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk9mZmxpbmVTVkc9dC5Eb05vdERpc3R1cmJTVkc9dC5CdXN5U1ZHPXQuQ2hlY2tTVkc9dm9pZCAwO2NvbnN0IHI9big1ODkzKTt0LkNoZWNrU1ZHPSgpPT4oMCxyLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIix2aWV3Qm94OlwiMCAwIDE2IDE2XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LHtjaGlsZHJlbjooMCxyLmpzeCkoXCJwYXRoXCIse2Q6XCJNOCAwQzguNzM0MzggMCA5LjQ0MDEgMC4wOTYzNTQyIDEwLjExNzIgMC4yODkwNjNDMTAuNzk0MyAwLjQ4MTc3MSAxMS40Mjk3IDAuNzUyNjA0IDEyLjAyMzQgMS4xMDE1NkMxMi42MTcyIDEuNDUwNTIgMTMuMTU2MyAxLjg2OTc5IDEzLjY0MDYgMi4zNTkzOEMxNC4xMzAyIDIuODQzNzUgMTQuNTQ5NSAzLjM4MjgxIDE0Ljg5ODQgMy45NzY1NkMxNS4yNDc0IDQuNTcwMzEgMTUuNTE4MiA1LjIwNTczIDE1LjcxMDkgNS44ODI4MUMxNS45MDM2IDYuNTU5OSAxNiA3LjI2NTYzIDE2IDhDMTYgOC43MjkxNyAxNS45MDM2IDkuNDM0OSAxNS43MTA5IDEwLjExNzJDMTUuNTE4MiAxMC43OTQzIDE1LjI0NzQgMTEuNDI5NyAxNC44OTg0IDEyLjAyMzRDMTQuNTQ5NSAxMi42MTcyIDE0LjEzMDIgMTMuMTU4OSAxMy42NDA2IDEzLjY0ODRDMTMuMTU2MyAxNC4xMzI4IDEyLjYxNzIgMTQuNTQ5NSAxMi4wMjM0IDE0Ljg5ODRDMTEuNDI5NyAxNS4yNDc0IDEwLjc5MTcgMTUuNTE4MiAxMC4xMDk0IDE1LjcxMDlDOS40MzIyOSAxNS45MDM2IDguNzI5MTcgMTYgOCAxNkM3LjI3MDgzIDE2IDYuNTY1MSAxNS45MDM2IDUuODgyODEgMTUuNzEwOUM1LjIwNTczIDE1LjUxODIgNC41NzAzMSAxNS4yNDc0IDMuOTc2NTYgMTQuODk4NEMzLjM4MjgxIDE0LjU0OTUgMi44NDExNSAxNC4xMzI4IDIuMzUxNTYgMTMuNjQ4NEMxLjg2NzE5IDEzLjE1ODkgMS40NTA1MiAxMi42MTcyIDEuMTAxNTYgMTIuMDIzNEMwLjc1MjYwNCAxMS40Mjk3IDAuNDgxNzcxIDEwLjc5NDMgMC4yODkwNjMgMTAuMTE3MkMwLjA5NjM1NDIgOS40MzQ5IDAgOC43MjkxNyAwIDhDMCA3LjI3MDgzIDAuMDk2MzU0MiA2LjU2NzcxIDAuMjg5MDYzIDUuODkwNjNDMC40ODE3NzEgNS4yMDgzMyAwLjc1MjYwNCA0LjU3MDMxIDEuMTAxNTYgMy45NzY1NkMxLjQ1MDUyIDMuMzgyODEgMS44NjcxOSAyLjg0Mzc1IDIuMzUxNTYgMi4zNTkzOEMyLjg0MTE1IDEuODY5NzkgMy4zODI4MSAxLjQ1MDUyIDMuOTc2NTYgMS4xMDE1NkM0LjU3MDMxIDAuNzUyNjA0IDUuMjA1NzMgMC40ODE3NzEgNS44ODI4MSAwLjI4OTA2M0M2LjU2NTEgMC4wOTYzNTQyIDcuMjcwODMgMCA4IDBaTTEwLjYzMjggNS42ODc1QzEwLjQyNDUgNS42ODc1IDEwLjI0NzQgNS43NjA0MiAxMC4xMDE2IDUuOTA2MjVMNy4yNzM0NCA4Ljc1TDYuMjY1NjMgNy43NUM2LjExOTc5IDcuNjA0MTcgNS45NDUzMSA3LjUzMTI1IDUuNzQyMTkgNy41MzEyNUM1LjY0MzIzIDcuNTMxMjUgNS41NDk0OCA3LjU1MjA4IDUuNDYwOTQgNy41OTM3NUM1LjM3MjQgNy42MzU0MiA1LjI5MTY3IDcuNjkyNzEgNS4yMTg3NSA3Ljc2NTYzQzUuMTUxMDQgNy44MzMzMyA1LjA5NjM1IDcuOTExNDYgNS4wNTQ2OSA4QzUuMDEzMDIgOC4wODg1NCA0Ljk5MjE5IDguMTgyMjkgNC45OTIxOSA4LjI4MTI1QzQuOTkyMTkgOC40ODk1OCA1LjA2NTEgOC42NjY2NyA1LjIxMDk0IDguODEyNUw2Ljc0MjE5IDEwLjM0MzhDNi44ODgwMiAxMC40ODk2IDcuMDY1MSAxMC41NjI1IDcuMjczNDQgMTAuNTYyNUM3LjQ4MTc3IDEwLjU2MjUgNy42NTg4NSAxMC40ODk2IDcuODA0NjkgMTAuMzQzOEwxMS4xNjQxIDYuOTY4NzVDMTEuMzA5OSA2LjgyMjkyIDExLjM4MjggNi42NDU4MyAxMS4zODI4IDYuNDM3NUMxMS4zODI4IDYuMzM4NTQgMTEuMzYyIDYuMjQ0NzkgMTEuMzIwMyA2LjE1NjI1QzExLjI3ODYgNi4wNjc3MSAxMS4yMjE0IDUuOTg5NTggMTEuMTQ4NCA1LjkyMTg4QzExLjA4MDcgNS44NDg5NiAxMS4wMDI2IDUuNzkxNjcgMTAuOTE0MSA1Ljc1QzEwLjgyNTUgNS43MDgzMyAxMC43MzE4IDUuNjg3NSAxMC42MzI4IDUuNjg3NVpcIixmaWxsOlwiIzIwNzczNVwifSl9KSksdC5CdXN5U1ZHPSgpPT4oMCxyLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTdcIix2aWV3Qm94OlwiMCAwIDE2IDE3XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LHtjaGlsZHJlbjooMCxyLmpzeCkoXCJwYXRoXCIse2Q6XCJNOCAwLjc5MDIzN0M4LjczNDM4IDAuNzkwMjM3IDkuNDQwMSAwLjg4NjU5MiAxMC4xMTcyIDEuMDc5M0MxMC43OTQzIDEuMjcyMDEgMTEuNDI5NyAxLjU0Mjg0IDEyLjAyMzQgMS44OTE4QzEyLjYxNzIgMi4yNDA3NiAxMy4xNTYzIDIuNjYwMDMgMTMuNjQwNiAzLjE0OTYxQzE0LjEzMDIgMy42MzM5OSAxNC41NDk1IDQuMTczMDUgMTQuODk4NCA0Ljc2NjhDMTUuMjQ3NCA1LjM2MDU1IDE1LjUxODIgNS45OTU5NyAxNS43MTA5IDYuNjczMDVDMTUuOTAzNiA3LjM1MDEzIDE2IDguMDU1ODYgMTYgOC43OTAyNEMxNiA5LjUxOTQgMTUuOTAzNiAxMC4yMjUxIDE1LjcxMDkgMTAuOTA3NEMxNS41MTgyIDExLjU4NDUgMTUuMjQ3NCAxMi4yMTk5IDE0Ljg5ODQgMTIuODEzN0MxNC41NDk1IDEzLjQwNzQgMTQuMTMwMiAxMy45NDkxIDEzLjY0MDYgMTQuNDM4N0MxMy4xNTYzIDE0LjkyMzEgMTIuNjE3MiAxNS4zMzk3IDEyLjAyMzQgMTUuNjg4N0MxMS40Mjk3IDE2LjAzNzYgMTAuNzkxNyAxNi4zMDg1IDEwLjEwOTQgMTYuNTAxMkM5LjQzMjI5IDE2LjY5MzkgOC43MjkxNyAxNi43OTAyIDggMTYuNzkwMkM3LjI3MDgzIDE2Ljc5MDIgNi41NjUxIDE2LjY5MzkgNS44ODI4MSAxNi41MDEyQzUuMjA1NzMgMTYuMzA4NSA0LjU3MDMxIDE2LjAzNzYgMy45NzY1NiAxNS42ODg3QzMuMzgyODEgMTUuMzM5NyAyLjg0MTE1IDE0LjkyMzEgMi4zNTE1NiAxNC40Mzg3QzEuODY3MTkgMTMuOTQ5MSAxLjQ1MDUyIDEzLjQwNzQgMS4xMDE1NiAxMi44MTM3QzAuNzUyNjA0IDEyLjIxOTkgMC40ODE3NzEgMTEuNTg0NSAwLjI4OTA2MyAxMC45MDc0QzAuMDk2MzU0MiAxMC4yMjUxIDAgOS41MTk0IDAgOC43OTAyNEMwIDguMDYxMDcgMC4wOTYzNTQyIDcuMzU3OTUgMC4yODkwNjMgNi42ODA4NkMwLjQ4MTc3MSA1Ljk5ODU3IDAuNzUyNjA0IDUuMzYwNTUgMS4xMDE1NiA0Ljc2NjhDMS40NTA1MiA0LjE3MzA1IDEuODY3MTkgMy42MzM5OSAyLjM1MTU2IDMuMTQ5NjFDMi44NDExNSAyLjY2MDAzIDMuMzgyODEgMi4yNDA3NiAzLjk3NjU2IDEuODkxOEM0LjU3MDMxIDEuNTQyODQgNS4yMDU3MyAxLjI3MjAxIDUuODgyODEgMS4wNzkzQzYuNTY1MSAwLjg4NjU5MiA3LjI3MDgzIDAuNzkwMjM3IDggMC43OTAyMzdaTTcuMzIwMzEgNC4wNDgwNUM3LjIxMDk0IDQuMDQ4MDUgNy4xMDY3NyA0LjA3MTQ5IDcuMDA3ODEgNC4xMTgzNkM2LjkxNDA2IDQuMTYwMDMgNi44MjgxMyA0LjIxOTkyIDYuNzUgNC4yOTgwNUM2LjY3NzA4IDQuMzcwOTcgNi42MTcxOSA0LjQ1NjkgNi41NzAzMSA0LjU1NTg2QzYuNTI4NjUgNC42NDk2MSA2LjUwNzgxIDQuNzUxMTcgNi41MDc4MSA0Ljg2MDU1VjkuMTk2NDlDNi41MDc4MSA5LjMwNTg2IDYuNTI4NjUgOS40MTI2MyA2LjU3MDMxIDkuNTE2OEM2LjYxMTk4IDkuNjIwOTcgNi42NzE4OCA5LjcxMjExIDYuNzUgOS43OTAyNEw5LjE4NzUgMTIuMjEyMUM5LjM0ODk2IDEyLjM3MzYgOS41NDE2NyAxMi40NTQzIDkuNzY1NjMgMTIuNDU0M0M5Ljg3NSAxMi40NTQzIDkuOTc5MTcgMTIuNDMzNSAxMC4wNzgxIDEyLjM5MThDMTAuMTc3MSAxMi4zNDQ5IDEwLjI2MyAxMi4yODUgMTAuMzM1OSAxMi4yMTIxQzEwLjQwODkgMTIuMTM0IDEwLjQ2NjEgMTIuMDQ1NCAxMC41MDc4IDExLjk0NjVDMTAuNTU0NyAxMS44NDc1IDEwLjU3ODEgMTEuNzQzNCAxMC41NzgxIDExLjYzNEMxMC41NzgxIDExLjUyOTggMTAuNTU0NyAxMS40MjgzIDEwLjUwNzggMTEuMzI5M0MxMC40NjYxIDExLjIyNTEgMTAuNDA4OSAxMS4xMzY2IDEwLjMzNTkgMTEuMDYzN0w4LjEzMjgxIDguODc2MThWNC44NjA1NUM4LjEzMjgxIDQuNzUxMTcgOC4xMDkzOCA0LjY0NzAxIDguMDYyNSA0LjU0ODA1QzguMDIwODMgNC40NDkwOSA3Ljk2MzU0IDQuMzYzMTUgNy44OTA2MyA0LjI5MDI0QzcuODE3NzEgNC4yMTczMiA3LjczMTc3IDQuMTYwMDMgNy42MzI4MSA0LjExODM2QzcuNTMzODUgNC4wNzE0OSA3LjQyOTY5IDQuMDQ4MDUgNy4zMjAzMSA0LjA0ODA1WlwiLGZpbGw6XCIjRkU5RjREXCJ9KX0pKSx0LkRvTm90RGlzdHVyYlNWRz0oKT0+KDAsci5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE3XCIsdmlld0JveDpcIjAgMCAxNiAxN1wiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSx7Y2hpbGRyZW46KDAsci5qc3gpKFwicGF0aFwiLHtkOlwiTTggMC41OTAyNTZDOC43MzQzOCAwLjU5MDI1NiA5LjQ0MDEgMC42ODY2MSAxMC4xMTcyIDAuODc5MzE4QzEwLjc5NDMgMS4wNzIwMyAxMS40Mjk3IDEuMzQyODYgMTIuMDIzNCAxLjY5MTgyQzEyLjYxNzIgMi4wNDA3OCAxMy4xNTYyIDIuNDYwMDUgMTMuNjQwNiAyLjk0OTYzQzE0LjEzMDIgMy40MzQwMSAxNC41NDk1IDMuOTczMDcgMTQuODk4NCA0LjU2NjgyQzE1LjI0NzQgNS4xNjA1NyAxNS41MTgyIDUuNzk1OTggMTUuNzEwOSA2LjQ3MzA3QzE1LjkwMzYgNy4xNTAxNSAxNiA3Ljg1NTg4IDE2IDguNTkwMjZDMTYgOS4zMTk0MiAxNS45MDM2IDEwLjAyNTIgMTUuNzEwOSAxMC43MDc0QzE1LjUxODIgMTEuMzg0NSAxNS4yNDc0IDEyLjAxOTkgMTQuODk4NCAxMi42MTM3QzE0LjU0OTUgMTMuMjA3NCAxNC4xMzAyIDEzLjc0OTEgMTMuNjQwNiAxNC4yMzg3QzEzLjE1NjIgMTQuNzIzMSAxMi42MTcyIDE1LjEzOTcgMTIuMDIzNCAxNS40ODg3QzExLjQyOTcgMTUuODM3NyAxMC43OTE3IDE2LjEwODUgMTAuMTA5NCAxNi4zMDEyQzkuNDMyMjkgMTYuNDkzOSA4LjcyOTE3IDE2LjU5MDMgOCAxNi41OTAzQzcuMjcwODMgMTYuNTkwMyA2LjU2NTEgMTYuNDkzOSA1Ljg4MjgxIDE2LjMwMTJDNS4yMDU3MyAxNi4xMDg1IDQuNTcwMzEgMTUuODM3NyAzLjk3NjU2IDE1LjQ4ODdDMy4zODI4MSAxNS4xMzk3IDIuODQxMTUgMTQuNzIzMSAyLjM1MTU2IDE0LjIzODdDMS44NjcxOSAxMy43NDkxIDEuNDUwNTIgMTMuMjA3NCAxLjEwMTU2IDEyLjYxMzdDMC43NTI2MDQgMTIuMDE5OSAwLjQ4MTc3MSAxMS4zODQ1IDAuMjg5MDYyIDEwLjcwNzRDMC4wOTYzNTQyIDEwLjAyNTIgMCA5LjMxOTQyIDAgOC41OTAyNkMwIDcuODYxMDkgMC4wOTYzNTQyIDcuMTU3OTYgMC4yODkwNjIgNi40ODA4OEMwLjQ4MTc3MSA1Ljc5ODU5IDAuNzUyNjA0IDUuMTYwNTcgMS4xMDE1NiA0LjU2NjgyQzEuNDUwNTIgMy45NzMwNyAxLjg2NzE5IDMuNDM0MDEgMi4zNTE1NiAyLjk0OTYzQzIuODQxMTUgMi40NjAwNSAzLjM4MjgxIDIuMDQwNzggMy45NzY1NiAxLjY5MTgyQzQuNTcwMzEgMS4zNDI4NiA1LjIwNTczIDEuMDcyMDMgNS44ODI4MSAwLjg3OTMxOEM2LjU2NTEgMC42ODY2MSA3LjI3MDgzIDAuNTkwMjU2IDggMC41OTAyNTZaTTUuNDc2NTYgNy43NDY1MUM1LjM2NzE5IDcuNzQ2NTEgNS4yNjA0MiA3Ljc2OTk0IDUuMTU2MjUgNy44MTY4MkM1LjA1NzI5IDcuODYzNjkgNC45Njg3NSA3LjkyNjE5IDQuODkwNjIgOC4wMDQzMkM0LjgxMjUgOC4wODI0NCA0Ljc1IDguMTczNTkgNC43MDMxMiA4LjI3Nzc2QzQuNjU2MjUgOC4zNzY3MSA0LjYzMjgxIDguNDgwODggNC42MzI4MSA4LjU5MDI2QzQuNjMyODEgOC42OTk2MyA0LjY1NjI1IDguODA2NCA0LjcwMzEyIDguOTEwNTdDNC43NSA5LjAwOTUzIDQuODEyNSA5LjA5ODA3IDQuODkwNjIgOS4xNzYxOUM0Ljk2ODc1IDkuMjU0MzIgNS4wNTcyOSA5LjMxNjgyIDUuMTU2MjUgOS4zNjM2OUM1LjI2MDQyIDkuNDEwNTcgNS4zNjcxOSA5LjQzNDAxIDUuNDc2NTYgOS40MzQwMUgxMC41MjM0QzEwLjYzMjggOS40MzQwMSAxMC43MzcgOS40MTA1NyAxMC44MzU5IDkuMzYzNjlDMTAuOTQwMSA5LjMxNjgyIDExLjAzMTIgOS4yNTQzMiAxMS4xMDk0IDkuMTc2MTlDMTEuMTg3NSA5LjA5ODA3IDExLjI1IDkuMDA5NTMgMTEuMjk2OSA4LjkxMDU3QzExLjM0MzggOC44MDY0IDExLjM2NzIgOC42OTk2MyAxMS4zNjcyIDguNTkwMjZDMTEuMzY3MiA4LjQ4MDg4IDExLjM0MzggOC4zNzY3MSAxMS4yOTY5IDguMjc3NzZDMTEuMjUgOC4xNzM1OSAxMS4xODc1IDguMDgyNDQgMTEuMTA5NCA4LjAwNDMyQzExLjAzMTIgNy45MjYxOSAxMC45NDAxIDcuODYzNjkgMTAuODM1OSA3LjgxNjgyQzEwLjczNyA3Ljc2OTk0IDEwLjYzMjggNy43NDY1MSAxMC41MjM0IDcuNzQ2NTFINS40NzY1NlpcIixmaWxsOlwiI0MyMTMxM1wifSl9KSksdC5PZmZsaW5lU1ZHPSgpPT4oMCxyLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTdcIix2aWV3Qm94OlwiMCAwIDE2IDE3XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LHtjaGlsZHJlbjooMCxyLmpzeCkoXCJwYXRoXCIse2Q6XCJNOCAwLjk5MDI1MkM4LjczNDM4IDAuOTkwMjUyIDkuNDQwMSAxLjA4NjYxIDEwLjExNzIgMS4yNzkzMUMxMC43OTQzIDEuNDcyMDIgMTEuNDI5NyAxLjc0Mjg2IDEyLjAyMzQgMi4wOTE4MUMxMi42MTcyIDIuNDQwNzcgMTMuMTU2MiAyLjg2MDA0IDEzLjY0MDYgMy4zNDk2M0MxNC4xMzAyIDMuODM0IDE0LjU0OTUgNC4zNzMwNiAxNC44OTg0IDQuOTY2ODFDMTUuMjQ3NCA1LjU2MDU2IDE1LjUxODIgNi4xOTU5OCAxNS43MTA5IDYuODczMDZDMTUuOTAzNiA3LjU1MDE1IDE2IDguMjU1ODggMTYgOC45OTAyNUMxNiA5LjcxOTQyIDE1LjkwMzYgMTAuNDI1MSAxNS43MTA5IDExLjEwNzRDMTUuNTE4MiAxMS43ODQ1IDE1LjI0NzQgMTIuNDE5OSAxNC44OTg0IDEzLjAxMzdDMTQuNTQ5NSAxMy42MDc0IDE0LjEzMDIgMTQuMTQ5MSAxMy42NDA2IDE0LjYzODdDMTMuMTU2MiAxNS4xMjMxIDEyLjYxNzIgMTUuNTM5NyAxMi4wMjM0IDE1Ljg4ODdDMTEuNDI5NyAxNi4yMzc2IDEwLjc5MTcgMTYuNTA4NSAxMC4xMDk0IDE2LjcwMTJDOS40MzIyOSAxNi44OTM5IDguNzI5MTcgMTYuOTkwMyA4IDE2Ljk5MDNDNy4yNzA4MyAxNi45OTAzIDYuNTY1MSAxNi44OTM5IDUuODgyODEgMTYuNzAxMkM1LjIwNTczIDE2LjUwODUgNC41NzAzMSAxNi4yMzc2IDMuOTc2NTYgMTUuODg4N0MzLjM4MjgxIDE1LjUzOTcgMi44NDExNSAxNS4xMjMxIDIuMzUxNTYgMTQuNjM4N0MxLjg2NzE5IDE0LjE0OTEgMS40NTA1MiAxMy42MDc0IDEuMTAxNTYgMTMuMDEzN0MwLjc1MjYwNCAxMi40MTk5IDAuNDgxNzcxIDExLjc4NDUgMC4yODkwNjIgMTEuMTA3NEMwLjA5NjM1NDIgMTAuNDI1MSAwIDkuNzE5NDIgMCA4Ljk5MDI1QzAgOC4yNjEwOSAwLjA5NjM1NDIgNy41NTc5NiAwLjI4OTA2MiA2Ljg4MDg4QzAuNDgxNzcxIDYuMTk4NTkgMC43NTI2MDQgNS41NjA1NiAxLjEwMTU2IDQuOTY2ODFDMS40NTA1MiA0LjM3MzA2IDEuODY3MTkgMy44MzQgMi4zNTE1NiAzLjM0OTYzQzIuODQxMTUgMi44NjAwNCAzLjM4MjgxIDIuNDQwNzcgMy45NzY1NiAyLjA5MTgxQzQuNTcwMzEgMS43NDI4NiA1LjIwNTczIDEuNDcyMDIgNS44ODI4MSAxLjI3OTMxQzYuNTY1MSAxLjA4NjYxIDcuMjcwODMgMC45OTAyNTIgOCAwLjk5MDI1MlpNOCAyLjY3Nzc1QzcuNDIxODggMi42Nzc3NSA2Ljg2NDU4IDIuNzUzMjcgNi4zMjgxMiAyLjkwNDMxQzUuNzkxNjcgMy4wNTUzNiA1LjI4OTA2IDMuMjY4OSA0LjgyMDMxIDMuNTQ0OTRDNC4zNTE1NiAzLjgyMDk4IDMuOTI0NDggNC4xNTE3MSAzLjUzOTA2IDQuNTM3MTNDMy4xNTg4NSA0LjkxNzM0IDIuODMwNzMgNS4zNDE4MSAyLjU1NDY5IDUuODEwNTZDMi4yNzg2NSA2LjI3OTMxIDIuMDY1MSA2Ljc4MTkyIDEuOTE0MDYgNy4zMTgzOEMxLjc2MzAyIDcuODU0ODQgMS42ODc1IDguNDEyMTMgMS42ODc1IDguOTkwMjVDMS42ODc1IDkuNTY4MzggMS43NjMwMiAxMC4xMjU3IDEuOTE0MDYgMTAuNjYyMUMyLjA2NTEgMTEuMTk4NiAyLjI3ODY1IDExLjcwMTIgMi41NTQ2OSAxMi4xNjk5QzIuODMwNzMgMTIuNjM4NyAzLjE1ODg1IDEzLjA2NTggMy41MzkwNiAxMy40NTEyQzMuOTI0NDggMTMuODMxNCA0LjM1MTU2IDE0LjE1OTUgNC44MjAzMSAxNC40MzU2QzUuMjg5MDYgMTQuNzExNiA1Ljc5MTY3IDE0LjkyNTEgNi4zMjgxMiAxNS4wNzYyQzYuODY0NTggMTUuMjI3MiA3LjQyMTg4IDE1LjMwMjggOCAxNS4zMDI4QzguNTc4MTIgMTUuMzAyOCA5LjEzNTQyIDE1LjIyNzIgOS42NzE4OCAxNS4wNzYyQzEwLjIwODMgMTQuOTI1MSAxMC43MTA5IDE0LjcxMTYgMTEuMTc5NyAxNC40MzU2QzExLjY0ODQgMTQuMTU5NSAxMi4wNzI5IDEzLjgzMTQgMTIuNDUzMSAxMy40NTEyQzEyLjgzODUgMTMuMDY1OCAxMy4xNjkzIDEyLjYzODcgMTMuNDQ1MyAxMi4xNjk5QzEzLjcyMTQgMTEuNzAxMiAxMy45MzQ5IDExLjE5ODYgMTQuMDg1OSAxMC42NjIxQzE0LjIzNyAxMC4xMjU3IDE0LjMxMjUgOS41NjgzOCAxNC4zMTI1IDguOTkwMjVDMTQuMzEyNSA4LjQxMjEzIDE0LjIzNyA3Ljg1NDg0IDE0LjA4NTkgNy4zMTgzOEMxMy45MzQ5IDYuNzgxOTIgMTMuNzIxNCA2LjI3OTMxIDEzLjQ0NTMgNS44MTA1NkMxMy4xNjkzIDUuMzQxODEgMTIuODM4NSA0LjkxNzM0IDEyLjQ1MzEgNC41MzcxM0MxMi4wNzI5IDQuMTUxNzEgMTEuNjQ4NCAzLjgyMDk4IDExLjE3OTcgMy41NDQ5NEMxMC43MTA5IDMuMjY4OSAxMC4yMDgzIDMuMDU1MzYgOS42NzE4OCAyLjkwNDMxQzkuMTM1NDIgMi43NTMyNyA4LjU3ODEyIDIuNjc3NzUgOCAyLjY3Nzc1WlwiLGZpbGw6XCIjOTc5Nzk3XCJ9KX0pKX0sMzQyOTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGk9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH0sYT10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxsPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29udGFjdENhcmQ9dm9pZCAwO2NvbnN0IGM9big1ODkzKSxzPWkobig2Njg5KSksdT1sKG4oNzUxOCkpLGQ9big1Mzc3KSxmPW4oNzQ0NCkscD1uKDk3NTgpLEM9big4ODMyKTt0LkNvbnRhY3RDYXJkPWU9Pnt2YXJ7bmFtZTp0LHRpdGxlOm4scGhvdG9Vcmw6cix1c2VJbml0aWFsczpvPSExLGRldGFpbHM6aSxvbmxpbmVTdGF0dXM6bH09ZSx1PWEoZSxbXCJuYW1lXCIsXCJ0aXRsZVwiLFwicGhvdG9VcmxcIixcInVzZUluaXRpYWxzXCIsXCJkZXRhaWxzXCIsXCJvbmxpbmVTdGF0dXNcIl0pO2NvbnN0IGQ9cnx8byxNPSgwLHMudXNlTWVtbykoKCgpPT4oMCxmLmdldEluaXRpYWxzKSh0KSksW3RdKSxqPSgwLHMudXNlTWVtbykoKCgpPT4oMCxDLmdlbmVyYXRlQ29sb3JGcm9tU3RyaW5nKSh0KSksW3RdKTtyZXR1cm4oMCxjLmpzeHMpKGgsT2JqZWN0LmFzc2lnbih7fSx1LHtjaGlsZHJlbjpbKDAsYy5qc3hzKSh2LHtjaGlsZHJlbjpbZCYmKDAsYy5qc3hzKShnLE9iamVjdC5hc3NpZ24oe2ljb25Db2xvcjpqfSx7Y2hpbGRyZW46W3I/KDAsYy5qc3gpKHcse2FsdDpuLHNyYzpyfSk6KDAsYy5qc3gpKG0se2NoaWxkcmVuOk19KSwoMCxjLmpzeCkocC5Db250YWN0U3RhdHVzSWNvbix7b25saW5lU3RhdHVzOmx9KV19KSksKDAsYy5qc3hzKSh5LHtjaGlsZHJlbjpbKDAsYy5qc3hzKShiLHtjaGlsZHJlbjpbXCIgXCIsdCxcIiBcIl19KSxuJiYoMCxjLmpzeHMpKHgse2NoaWxkcmVuOltcIiBcIixuLFwiIFwiXX0pXX0pXX0pLCgwLGMuanN4KShMLHt9KSwoMCxjLmpzeCkoTyx7Y2hpbGRyZW46KG51bGw9PWk/dm9pZCAwOmkubGVuZ3RoKT4wP2kubWFwKCgoZSxuKT0+KDAsYy5qc3hzKShzLmRlZmF1bHQuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxjLmpzeCkoXyx7ZGVmaW5pdGlvbnM6ZX0pLG48aS5sZW5ndGgtMSYmKDAsYy5qc3gpKEwse3BhZGRpbmc6ITB9KV19LGAke3R9LWRldGFpbHMtJHtufWApKSk6KDAsYy5qc3gpKFwicFwiLHtjaGlsZHJlbjpcIk5vIGluZm9ybWF0aW9uIGF2YWlsYWJsZS5cIn0pfSldfSkpfTtjb25zdCBoPXUuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbmAsdj11LmRlZmF1bHQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoe3RoZW1lOmV9KT0+ZS5weC5sYXJnZX07XG5gLGc9dS5kZWZhdWx0LmRpdmBcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtlPT5lLmljb25Db2xvcn07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgaGVpZ2h0OiA2MHB4O1xuICB3aWR0aDogNjBweDtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gLG09dS5kZWZhdWx0LnNwYW5gXG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbmAsdz11LmRlZmF1bHQuaW1nYFxuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbmAseT11LmRlZmF1bHQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIG1pbi13aWR0aDogMDtcbiAgbWFyZ2luLWxlZnQ6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG5gLGI9dS5kZWZhdWx0LnNwYW5gXG4gIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5sYXJnZX07XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmxhcmdlfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZy1ib3R0b206ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgZm9udC13ZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuZm9udFdlaWdodC5ib2xkfTtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5gLHg9dS5kZWZhdWx0LnNwYW5gXG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dEhlbHB9O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZy1ib3R0b206IDJweDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5gLE89dS5kZWZhdWx0LmRpdmBcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBmbGV4OiAxO1xuICBtYXJnaW4tdG9wOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmxhcmdlfTtcbiAgbWFyZ2luLWJvdHRvbTogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgcGFkZGluZy1yaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbmAsTD11LmRlZmF1bHQuZGl2YFxuICBib3JkZXItYm90dG9tOiBzb2xpZCAxcHggJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ2fTtcbiAgbWFyZ2luLWJvdHRvbTogJHsoe3RoZW1lOmUscGFkZGluZzp0fSk9PnQmJmUucHguYmFzZX07XG5gLF89KDAsdS5kZWZhdWx0KShkLkRlZmluaXRpb25MaXN0KWBcbiAgZHQge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gIH1cblxuICBkZCB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB9XG5gfSwzMTg4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigzNDI5KSx0KX0sNzQ0NDooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZ2V0SW5pdGlhbHM9dm9pZCAwLHQuZ2V0SW5pdGlhbHM9ZT0+e2NvbnN0IHQ9ZS50cmltKCksbj10Lmxhc3RJbmRleE9mKFwiIFwiKTtyZXR1cm4gbj4tMT9bdC5jaGFyQXQoMCksdC5jaGFyQXQobisxKV0uam9pbihcIlwiKTp0LnNsaWNlKDAsMil9fSwxOTk2OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuSDY9dC5INT10Lkg0PXQuSDM9dC5IMj10LkgxPXQuSGVhZGluZz10LmRlZmF1bHRTaXplPXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1vKG4oNzUxOCkpLGw9bigzNDcxKSxjPW4oNzc2OSk7dC5kZWZhdWx0U2l6ZT17aDE6bC5TaXplLnh4eGxhcmdlLGgyOmwuU2l6ZS54eGxhcmdlLGgzOmwuU2l6ZS54bGFyZ2UsaDQ6bC5TaXplLmxhcmdlLGg1OmwuU2l6ZS5iYXNlLGg2OmwuU2l6ZS5zbWFsbH0sdC5IZWFkaW5nPWU9Pnt2YXJ7bGV2ZWw6bj0xLGNsYXNzTmFtZTpvfT1lLGE9cihlLFtcImxldmVsXCIsXCJjbGFzc05hbWVcIl0pO2NvbnN0IGw9YGgke259YDtyZXR1cm4oMCxpLmpzeCkocyxPYmplY3QuYXNzaWduKHtjbGFzc05hbWU6byxhczpsLHNpemU6dC5kZWZhdWx0U2l6ZVtsXSx3ZWlnaHQ6XCJib2xkXCJ9LGEpKX07Y29uc3Qgcz0oMCxhLmRlZmF1bHQpKGMuVGV4dClgXG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmxpbmVIZWlnaHQuaGVhZGluZ307XG5gO3QuSDE9KDAsYS5kZWZhdWx0KSh0LkhlYWRpbmcpLmF0dHJzKChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2xldmVsOjF9KSkpYGAsdC5IMj0oMCxhLmRlZmF1bHQpKHQuSGVhZGluZykuYXR0cnMoKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bGV2ZWw6Mn0pKSlgYCx0LkgzPSgwLGEuZGVmYXVsdCkodC5IZWFkaW5nKS5hdHRycygoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtsZXZlbDozfSkpKWBgLHQuSDQ9KDAsYS5kZWZhdWx0KSh0LkhlYWRpbmcpLmF0dHJzKChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2xldmVsOjR9KSkpYGAsdC5INT0oMCxhLmRlZmF1bHQpKHQuSGVhZGluZykuYXR0cnMoKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bGV2ZWw6NX0pKSlgYCx0Lkg2PSgwLGEuZGVmYXVsdCkodC5IZWFkaW5nKS5hdHRycygoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtsZXZlbDo2fSkpKWBgfSw3MDYzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigxOTk2KSx0KX0sNzc2OTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNTQzMSksdCl9LDU0MzE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVGV4dD12b2lkIDA7Y29uc3Qgbz1yKG4oNzUxOCkpO3QuVGV4dD1vLmRlZmF1bHQuc3BhbmBcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmUsc2l6ZTp0PVwiYmFzZVwifSk9PmUuZm9udFNpemVbdF19O1xuICBmb250LXdlaWdodDogJHsoe3RoZW1lOmUsd2VpZ2h0OnQ9XCJub3JtYWxcIn0pPT5lLmZvbnRXZWlnaHRbdF19O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5saW5lSGVpZ2h0LnRleHR9O1xuYCx0LlRleHQuZGlzcGxheU5hbWU9XCJUZXh0XCJ9LDMxOTA6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudXNlQ29sb3JTY2hlbWU9dC5Db2xvclNjaGVtZT12b2lkIDA7Y29uc3Qgcj1uKDY2ODkpO3QuQ29sb3JTY2hlbWU9e2Rhcms6XCJkYXJrXCIsbGlnaHQ6XCJsaWdodFwiLHN5c3RlbTpcInN5c3RlbVwifTtjb25zdCBvPVwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKVwiO3QudXNlQ29sb3JTY2hlbWU9KHtyZXF1ZXN0ZWRTY2hlbWU6ZSxmYWxsYmFja1NjaGVtZTpuPXQuQ29sb3JTY2hlbWUubGlnaHR9KT0+e2NvbnN0W2ksYV09KDAsci51c2VTdGF0ZSkobiksbD1lPT5hKGUubWF0Y2hlcz9cImRhcmtcIjpcImxpZ2h0XCIpO3JldHVybigwLHIudXNlRWZmZWN0KSgoKCk9PntpZihcImxpZ2h0XCI9PT1lfHxcImRhcmtcIj09PWUpcmV0dXJuIHZvaWQgYShlKTtjb25zdCB0PXdpbmRvdy5tYXRjaE1lZGlhKG8pO3JldHVybiBhKHQubWF0Y2hlcz9cImRhcmtcIjpcImxpZ2h0XCIpLHQuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLGwpLCgpPT50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIixsKX0pLFtlLGksb10pLGl9fSwzNDc6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudXNlRHJvcGRvd25LZXlib2FyZE5hdmlnYXRpb249dm9pZCAwO2NvbnN0IHI9big2Njg5KTt0LnVzZURyb3Bkb3duS2V5Ym9hcmROYXZpZ2F0aW9uPShlLHQsbixvLGkpPT57Y29uc3RbYSxsXT0oMCxyLnVzZVN0YXRlKSgwKSxbYyxzXT0oMCxyLnVzZVN0YXRlKShcIlwiKTtsZXQgdTtpZigoMCxyLnVzZUVmZmVjdCkoKCgpPT57aWYodCYmIW4pe2NvbnN0IG49ZS5mbGF0KCkuZmluZEluZGV4KChlPT5lLnZhbHVlPT09dC52YWx1ZSkpO24+PTAmJmwobil9fSksW2UsdCxuXSksKDAsci51c2VFZmZlY3QpKCgoKT0+e258fHMoXCJcIil9KSxbbl0pLCgwLHIudXNlRWZmZWN0KSgoKCk9PntpZihjKXtjb25zdCB0PWUuZmxhdCgpLmZpbmRJbmRleCgoZT0+ZS50aXRsZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoYy50b0xvd2VyQ2FzZSgpKSkpO3Q+PTAmJmwodCl9fSksW2UsY10pLGVbMF0ubGVuZ3RoPjApe2NvbnN0W3Qsbl09W01hdGguZmxvb3IoYS9lWzBdLmxlbmd0aCksYSVlWzBdLmxlbmd0aF07dT1lW3RdW25dfXJldHVybigwLHIudXNlRWZmZWN0KSgoKCk9Pntjb25zdCBlPXNldFRpbWVvdXQoKCgpPT57cyhcIlwiKX0pLDUwMCk7cmV0dXJuKCk9PmNsZWFyVGltZW91dChlKX0pLFtjXSkse2ZvY3VzZWRPcHRpb246dSxoYW5kbGVLZXlEb3duOnQ9Pntzd2l0Y2godC5jb2RlKXtjYXNlXCJBcnJvd1VwXCI6dC5wcmV2ZW50RGVmYXVsdCgpLGE+MCYmbChhLTEpO2JyZWFrO2Nhc2VcIkFycm93RG93blwiOnQucHJldmVudERlZmF1bHQoKSxhPGUuZmxhdCgpLmxlbmd0aC0xJiZsKGErMSk7YnJlYWs7Y2FzZVwiRW50ZXJcIjpjYXNlXCJTcGFjZVwiOnQucHJldmVudERlZmF1bHQoKSxuPygobnVsbD09dT92b2lkIDA6dS5vdmVycmlkZU9uQ2xpY2spP3Uub3ZlcnJpZGVPbkNsaWNrKCk6aShudWxsIT11P3U6ZVswXVswXSksbygpKTpvKCk7YnJlYWs7Y2FzZVwiRXNjYXBlXCI6dC5wcmV2ZW50RGVmYXVsdCgpLG8oITEpO2JyZWFrO2RlZmF1bHQ6L15bYS16MC05XSQvaS50ZXN0KHQua2V5KSYmcygoZT0+ZSt0LmtleSkpfX19fX0sNDQ4MTooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC51c2VMYXlvdXRNZWRpYVF1ZXJ5PXQudXNlTWVkaWFRdWVyeT12b2lkIDA7Y29uc3Qgcj1uKDY2ODkpLG89ZT0+dD0+e2NvbnN0W24sb109KDAsci51c2VTdGF0ZSkoITEpO3JldHVybiBlKCgoKT0+e2NvbnN0IGU9d2luZG93Lm1hdGNoTWVkaWEodCk7aWYoZSl7ZS5tYXRjaGVzIT09biYmbyhlLm1hdGNoZXMpO2NvbnN0IHQ9KCk9Pm8oZS5tYXRjaGVzKSxyPSgpPT5lLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIix0KTtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsdCkscn19KSxbbix0XSksbn07dC51c2VNZWRpYVF1ZXJ5PW8oci51c2VFZmZlY3QpLHQudXNlTGF5b3V0TWVkaWFRdWVyeT1vKHIudXNlTGF5b3V0RWZmZWN0KX0sMjc3NjooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC51c2VQcmV2aW91cz12b2lkIDA7Y29uc3Qgcj1uKDY2ODkpO3QudXNlUHJldmlvdXM9ZT0+e2NvbnN0IHQ9KDAsci51c2VSZWYpKCk7cmV0dXJuKDAsci51c2VFZmZlY3QpKCgoKT0+e3QuY3VycmVudD1lfSksW2VdKSx0LmN1cnJlbnR9fSw3MDg4OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnVzZVRoZW1lPXZvaWQgMDtjb25zdCByPW4oNjY4OSksbz1uKDQyNjYpLGk9bigzMTkwKSxhPW4oOTUwNyksbD17W2kuQ29sb3JTY2hlbWUuZGFya106by5PcGVuRmluRGFya1RoZW1lLFtpLkNvbG9yU2NoZW1lLmxpZ2h0XTpvLk9wZW5GaW5MaWdodFRoZW1lfTt0LnVzZVRoZW1lPSh7dGhlbWVzOmUsc2NoZW1lOnQsY29uZmlnOm59KT0+e2NvbnN0IG89KDAsaS51c2VDb2xvclNjaGVtZSkoe3JlcXVlc3RlZFNjaGVtZTp0fSksYz0oMCxyLnVzZU1lbW8pKCgoKT0+dm9pZCAwPT09ZT9sW29dOigwLGEuY3JlYXRlVGhlbWUpKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxsW29dLnBhbGV0dGUpLGVbb10ucGFsZXR0ZSksbykpLFtlLG9dKTtyZXR1cm4gbj9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYykse19jb25maWc6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGMuX2NvbmZpZyksbil9KTpjfX0sMzQxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig0MTMwKSx0KSxvKG4oNzQwMSksdCksbyhuKDQ5MjUpLHQpLG8obigyNjA5KSx0KSxvKG4oMzEzNiksdCksbyhuKDk3MzQpLHQpLG8obig2MDI2KSx0KSxvKG4oOTYzNCksdCksbyhuKDE0NCksdCksbyhuKDkyMzkpLHQpLG8obig4ODc4KSx0KSxvKG4oODUxMCksdCksbyhuKDg5NTEpLHQpLG8obigxOTc4KSx0KSxvKG4oODA1MSksdCksbyhuKDQxNjkpLHQpLG8obigzNjQxKSx0KSxvKG4oNTIxNSksdCksbyhuKDk2NTQpLHQpLG8obigzMTE5KSx0KSxvKG4oMTMzNSksdCksbyhuKDUzNzcpLHQpLG8obigxMDY5KSx0KSxvKG4oOTUwNyksdCksbyhuKDMxODgpLHQpLG8obig3MDYzKSx0KSxvKG4oNzc2OSksdCksbyhuKDMxOTApLHQpLG8obig0NDgxKSx0KSxvKG4oMjc3NiksdCksbyhuKDM0NyksdCksbyhuKDQ5OTEpLHQpLG8obig4ODMyKSx0KX0sODgzMjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZ2VuZXJhdGVDb2xvckZyb21TdHJpbmc9dm9pZCAwLHQuZ2VuZXJhdGVDb2xvckZyb21TdHJpbmc9ZnVuY3Rpb24oZT1cIlwiLHQ9NzAsbj01MCl7bGV0IHI9MDtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylyPWUuY2hhckNvZGVBdCh0KSsoKHI8PDUpLXIpLHImPXI7cmV0dXJuYGhzbCgke3IlMzYwfSwgJHt0fSUsICR7bn0lKWB9fSw2NjA2OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZW5lcmF0ZVJhbmRvbUludGVnZXI9dC5jbGFtcD12b2lkIDAsdC5jbGFtcD0oZSx0LG4pPT50JiZuP01hdGgubWluKE1hdGgubWF4KGUsdCksbik6biYmIXQ/TWF0aC5taW4oZSxuKTp0JiYhbj9NYXRoLm1heChlLHQpOmUsdC5nZW5lcmF0ZVJhbmRvbUludGVnZXI9KCk9Pk1hdGguZmxvb3IoMWUzKk1hdGgucmFuZG9tKCkpfSw0OTkxOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC53aGVuRmluPXZvaWQgMCx0LndoZW5GaW49ZnVuY3Rpb24oZSx0KXtjb25zdCBuPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBmaW4/ZTp0O3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIG4/bigpOm59fSw2NTU6KGUsdCxuKT0+e24ucih0KSxuLmQodCx7X19hc3NpZ246KCk9PmksX19hc3luY0RlbGVnYXRvcjooKT0+XyxfX2FzeW5jR2VuZXJhdG9yOigpPT5MLF9fYXN5bmNWYWx1ZXM6KCk9Pk0sX19hd2FpdDooKT0+TyxfX2F3YWl0ZXI6KCk9PkMsX19jbGFzc1ByaXZhdGVGaWVsZEdldDooKT0+SCxfX2NsYXNzUHJpdmF0ZUZpZWxkSW46KCk9PlYsX19jbGFzc1ByaXZhdGVGaWVsZFNldDooKT0+ayxfX2NyZWF0ZUJpbmRpbmc6KCk9PnYsX19kZWNvcmF0ZTooKT0+bCxfX2VzRGVjb3JhdGU6KCk9PnMsX19leHBvcnRTdGFyOigpPT5nLF9fZXh0ZW5kczooKT0+byxfX2dlbmVyYXRvcjooKT0+aCxfX2ltcG9ydERlZmF1bHQ6KCk9PlAsX19pbXBvcnRTdGFyOigpPT5TLF9fbWFrZVRlbXBsYXRlT2JqZWN0OigpPT5qLF9fbWV0YWRhdGE6KCk9PnAsX19wYXJhbTooKT0+YyxfX3Byb3BLZXk6KCk9PmQsX19yZWFkOigpPT53LF9fcmVzdDooKT0+YSxfX3J1bkluaXRpYWxpemVyczooKT0+dSxfX3NldEZ1bmN0aW9uTmFtZTooKT0+ZixfX3NwcmVhZDooKT0+eSxfX3NwcmVhZEFycmF5OigpPT54LF9fc3ByZWFkQXJyYXlzOigpPT5iLF9fdmFsdWVzOigpPT5tfSk7dmFyIHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSl9LHIoZSx0KX07ZnVuY3Rpb24gbyhlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPWV9cihlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KG4ucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyBuKX12YXIgaT1mdW5jdGlvbigpe3JldHVybiBpPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPTEscj1hcmd1bWVudHMubGVuZ3RoO248cjtuKyspZm9yKHZhciBvIGluIHQ9YXJndW1lbnRzW25dKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtyZXR1cm4gZX0saS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIGEoZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufWZ1bmN0aW9uIGwoZSx0LG4scil7dmFyIG8saT1hcmd1bWVudHMubGVuZ3RoLGE9aTwzP3Q6bnVsbD09PXI/cj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik6cjtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlhPVJlZmxlY3QuZGVjb3JhdGUoZSx0LG4scik7ZWxzZSBmb3IodmFyIGw9ZS5sZW5ndGgtMTtsPj0wO2wtLSkobz1lW2xdKSYmKGE9KGk8Mz9vKGEpOmk+Mz9vKHQsbixhKTpvKHQsbikpfHxhKTtyZXR1cm4gaT4zJiZhJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLGEpLGF9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe3QobixyLGUpfX1mdW5jdGlvbiBzKGUsdCxuLHIsbyxpKXtmdW5jdGlvbiBhKGUpe2lmKHZvaWQgMCE9PWUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZ1bmN0aW9uIGV4cGVjdGVkXCIpO3JldHVybiBlfWZvcih2YXIgbCxjPXIua2luZCxzPVwiZ2V0dGVyXCI9PT1jP1wiZ2V0XCI6XCJzZXR0ZXJcIj09PWM/XCJzZXRcIjpcInZhbHVlXCIsdT0hdCYmZT9yLnN0YXRpYz9lOmUucHJvdG90eXBlOm51bGwsZD10fHwodT9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHUsci5uYW1lKTp7fSksZj0hMSxwPW4ubGVuZ3RoLTE7cD49MDtwLS0pe3ZhciBDPXt9O2Zvcih2YXIgaCBpbiByKUNbaF09XCJhY2Nlc3NcIj09PWg/e306cltoXTtmb3IodmFyIGggaW4gci5hY2Nlc3MpQy5hY2Nlc3NbaF09ci5hY2Nlc3NbaF07Qy5hZGRJbml0aWFsaXplcj1mdW5jdGlvbihlKXtpZihmKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWRcIik7aS5wdXNoKGEoZXx8bnVsbCkpfTt2YXIgdj0oMCxuW3BdKShcImFjY2Vzc29yXCI9PT1jP3tnZXQ6ZC5nZXQsc2V0OmQuc2V0fTpkW3NdLEMpO2lmKFwiYWNjZXNzb3JcIj09PWMpe2lmKHZvaWQgMD09PXYpY29udGludWU7aWYobnVsbD09PXZ8fFwib2JqZWN0XCIhPXR5cGVvZiB2KXRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWRcIik7KGw9YSh2LmdldCkpJiYoZC5nZXQ9bCksKGw9YSh2LnNldCkpJiYoZC5zZXQ9bCksKGw9YSh2LmluaXQpKSYmby5wdXNoKGwpfWVsc2UobD1hKHYpKSYmKFwiZmllbGRcIj09PWM/by5wdXNoKGwpOmRbc109bCl9dSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHUsci5uYW1lLGQpLGY9ITB9ZnVuY3Rpb24gdShlLHQsbil7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGg+MixvPTA7bzx0Lmxlbmd0aDtvKyspbj1yP3Rbb10uY2FsbChlLG4pOnRbb10uY2FsbChlKTtyZXR1cm4gcj9uOnZvaWQgMH1mdW5jdGlvbiBkKGUpe3JldHVyblwic3ltYm9sXCI9PXR5cGVvZiBlP2U6XCJcIi5jb25jYXQoZSl9ZnVuY3Rpb24gZihlLHQsbil7cmV0dXJuXCJzeW1ib2xcIj09dHlwZW9mIHQmJih0PXQuZGVzY3JpcHRpb24/XCJbXCIuY29uY2F0KHQuZGVzY3JpcHRpb24sXCJdXCIpOlwiXCIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwibmFtZVwiLHtjb25maWd1cmFibGU6ITAsdmFsdWU6bj9cIlwiLmNvbmNhdChuLFwiIFwiLHQpOnR9KX1mdW5jdGlvbiBwKGUsdCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QubWV0YWRhdGEpcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEoZSx0KX1mdW5jdGlvbiBDKGUsdCxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihvLGkpe2Z1bmN0aW9uIGEoZSl7dHJ5e2Moci5uZXh0KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiBsKGUpe3RyeXtjKHIudGhyb3coZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIGMoZSl7dmFyIHQ7ZS5kb25lP28oZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKGEsbCl9Yygocj1yLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfWZ1bmN0aW9uIGgoZSx0KXt2YXIgbixyLG8saSxhPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJm9bMF0pdGhyb3cgb1sxXTtyZXR1cm4gb1sxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBpPXtuZXh0OmwoMCksdGhyb3c6bCgxKSxyZXR1cm46bCgyKX0sXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiYoaVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxpO2Z1bmN0aW9uIGwobCl7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBmdW5jdGlvbihsKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7aSYmKGk9MCxsWzBdJiYoYT0wKSksYTspdHJ5e2lmKG49MSxyJiYobz0yJmxbMF0/ci5yZXR1cm46bFswXT9yLnRocm93fHwoKG89ci5yZXR1cm4pJiZvLmNhbGwociksMCk6ci5uZXh0KSYmIShvPW8uY2FsbChyLGxbMV0pKS5kb25lKXJldHVybiBvO3N3aXRjaChyPTAsbyYmKGw9WzImbFswXSxvLnZhbHVlXSksbFswXSl7Y2FzZSAwOmNhc2UgMTpvPWw7YnJlYWs7Y2FzZSA0OnJldHVybiBhLmxhYmVsKysse3ZhbHVlOmxbMV0sZG9uZTohMX07Y2FzZSA1OmEubGFiZWwrKyxyPWxbMV0sbD1bMF07Y29udGludWU7Y2FzZSA3Omw9YS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgobz0obz1hLnRyeXMpLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdKXx8NiE9PWxbMF0mJjIhPT1sWzBdKSl7YT0wO2NvbnRpbnVlfWlmKDM9PT1sWzBdJiYoIW98fGxbMV0+b1swXSYmbFsxXTxvWzNdKSl7YS5sYWJlbD1sWzFdO2JyZWFrfWlmKDY9PT1sWzBdJiZhLmxhYmVsPG9bMV0pe2EubGFiZWw9b1sxXSxvPWw7YnJlYWt9aWYobyYmYS5sYWJlbDxvWzJdKXthLmxhYmVsPW9bMl0sYS5vcHMucHVzaChsKTticmVha31vWzJdJiZhLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWV9bD10LmNhbGwoZSxhKX1jYXRjaChlKXtsPVs2LGVdLHI9MH1maW5hbGx5e249bz0wfWlmKDUmbFswXSl0aHJvdyBsWzFdO3JldHVybnt2YWx1ZTpsWzBdP2xbMV06dm9pZCAwLGRvbmU6ITB9fShbbCxjXSl9fX12YXIgdj1PYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19O2Z1bmN0aW9uIGcoZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHx2KHQsZSxuKX1mdW5jdGlvbiBtKGUpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLG49dCYmZVt0XSxyPTA7aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKGUmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmxlbmd0aClyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiBlJiZyPj1lLmxlbmd0aCYmKGU9dm9pZCAwKSx7dmFsdWU6ZSYmZVtyKytdLGRvbmU6IWV9fX07dGhyb3cgbmV3IFR5cGVFcnJvcih0P1wiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIjpcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIil9ZnVuY3Rpb24gdyhlLHQpe3ZhciBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdO2lmKCFuKXJldHVybiBlO3ZhciByLG8saT1uLmNhbGwoZSksYT1bXTt0cnl7Zm9yKDsodm9pZCAwPT09dHx8dC0tID4wKSYmIShyPWkubmV4dCgpKS5kb25lOylhLnB1c2goci52YWx1ZSl9Y2F0Y2goZSl7bz17ZXJyb3I6ZX19ZmluYWxseXt0cnl7ciYmIXIuZG9uZSYmKG49aS5yZXR1cm4pJiZuLmNhbGwoaSl9ZmluYWxseXtpZihvKXRocm93IG8uZXJyb3J9fXJldHVybiBhfWZ1bmN0aW9uIHkoKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZT1lLmNvbmNhdCh3KGFyZ3VtZW50c1t0XSkpO3JldHVybiBlfWZ1bmN0aW9uIGIoKXtmb3IodmFyIGU9MCx0PTAsbj1hcmd1bWVudHMubGVuZ3RoO3Q8bjt0KyspZSs9YXJndW1lbnRzW3RdLmxlbmd0aDt2YXIgcj1BcnJheShlKSxvPTA7Zm9yKHQ9MDt0PG47dCsrKWZvcih2YXIgaT1hcmd1bWVudHNbdF0sYT0wLGw9aS5sZW5ndGg7YTxsO2ErKyxvKyspcltvXT1pW2FdO3JldHVybiByfWZ1bmN0aW9uIHgoZSx0LG4pe2lmKG58fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgcixvPTAsaT10Lmxlbmd0aDtvPGk7bysrKSFyJiZvIGluIHR8fChyfHwocj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDAsbykpLHJbb109dFtvXSk7cmV0dXJuIGUuY29uY2F0KHJ8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKX1mdW5jdGlvbiBPKGUpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgTz8odGhpcy52PWUsdGhpcyk6bmV3IE8oZSl9ZnVuY3Rpb24gTChlLHQsbil7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7dmFyIHIsbz1uLmFwcGx5KGUsdHx8W10pLGk9W107cmV0dXJuIHI9e30sYShcIm5leHRcIiksYShcInRocm93XCIpLGEoXCJyZXR1cm5cIikscltTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30scjtmdW5jdGlvbiBhKGUpe29bZV0mJihyW2VdPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixyKXtpLnB1c2goW2UsdCxuLHJdKT4xfHxsKGUsdCl9KSl9KX1mdW5jdGlvbiBsKGUsdCl7dHJ5eyhuPW9bZV0odCkpLnZhbHVlIGluc3RhbmNlb2YgTz9Qcm9taXNlLnJlc29sdmUobi52YWx1ZS52KS50aGVuKGMscyk6dShpWzBdWzJdLG4pfWNhdGNoKGUpe3UoaVswXVszXSxlKX12YXIgbn1mdW5jdGlvbiBjKGUpe2woXCJuZXh0XCIsZSl9ZnVuY3Rpb24gcyhlKXtsKFwidGhyb3dcIixlKX1mdW5jdGlvbiB1KGUsdCl7ZSh0KSxpLnNoaWZ0KCksaS5sZW5ndGgmJmwoaVswXVswXSxpWzBdWzFdKX19ZnVuY3Rpb24gXyhlKXt2YXIgdCxuO3JldHVybiB0PXt9LHIoXCJuZXh0XCIpLHIoXCJ0aHJvd1wiLChmdW5jdGlvbihlKXt0aHJvdyBlfSkpLHIoXCJyZXR1cm5cIiksdFtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHQ7ZnVuY3Rpb24gcihyLG8pe3Rbcl09ZVtyXT9mdW5jdGlvbih0KXtyZXR1cm4obj0hbik/e3ZhbHVlOk8oZVtyXSh0KSksZG9uZTohMX06bz9vKHQpOnR9Om99fWZ1bmN0aW9uIE0oZSl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7dmFyIHQsbj1lW1N5bWJvbC5hc3luY0l0ZXJhdG9yXTtyZXR1cm4gbj9uLmNhbGwoZSk6KGU9bShlKSx0PXt9LHIoXCJuZXh0XCIpLHIoXCJ0aHJvd1wiKSxyKFwicmV0dXJuXCIpLHRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHQpO2Z1bmN0aW9uIHIobil7dFtuXT1lW25dJiZmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7IWZ1bmN0aW9uKGUsdCxuLHIpe1Byb21pc2UucmVzb2x2ZShyKS50aGVuKChmdW5jdGlvbih0KXtlKHt2YWx1ZTp0LGRvbmU6bn0pfSksdCl9KHIsbywodD1lW25dKHQpKS5kb25lLHQudmFsdWUpfSkpfX19ZnVuY3Rpb24gaihlLHQpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHk/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJyYXdcIix7dmFsdWU6dH0pOmUucmF3PXQsZX12YXIgRT1PYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fTtmdW5jdGlvbiBTKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnYodCxlLG4pO3JldHVybiBFKHQsZSksdH1mdW5jdGlvbiBQKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBIKGUsdCxuLHIpe2lmKFwiYVwiPT09biYmIXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P2UhPT10fHwhcjohdC5oYXMoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtyZXR1cm5cIm1cIj09PW4/cjpcImFcIj09PW4/ci5jYWxsKGUpOnI/ci52YWx1ZTp0LmdldChlKX1mdW5jdGlvbiBrKGUsdCxuLHIsbyl7aWYoXCJtXCI9PT1yKXRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGVcIik7aWYoXCJhXCI9PT1yJiYhbyl0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/ZSE9PXR8fCFvOiF0LmhhcyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7cmV0dXJuXCJhXCI9PT1yP28uY2FsbChlLG4pOm8/by52YWx1ZT1uOnQuc2V0KGUsbiksbn1mdW5jdGlvbiBWKGUsdCl7aWYobnVsbD09PXR8fFwib2JqZWN0XCIhPXR5cGVvZiB0JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgdXNlICdpbicgb3BlcmF0b3Igb24gbm9uLW9iamVjdFwiKTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlP3Q9PT1lOmUuaGFzKHQpfX0sNjY4OTplPT57ZS5leHBvcnRzPW4oMzc4KX0sNzUxODplPT57ZS5leHBvcnRzPW4oOTIxKX0sODIwNzpmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3JldHVybihlPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9KSh0KX12YXIgdD0vXlxccysvLG49L1xccyskLztmdW5jdGlvbiByKG8saSl7aWYoaT1pfHx7fSwobz1vfHxcIlwiKWluc3RhbmNlb2YgcilyZXR1cm4gbztpZighKHRoaXMgaW5zdGFuY2VvZiByKSlyZXR1cm4gbmV3IHIobyxpKTt2YXIgYT1mdW5jdGlvbihyKXt2YXIgbyxpLGEsbD17cjowLGc6MCxiOjB9LGM9MSxzPW51bGwsdT1udWxsLGQ9bnVsbCxmPSExLHA9ITE7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHImJihyPWZ1bmN0aW9uKGUpe2U9ZS5yZXBsYWNlKHQsXCJcIikucmVwbGFjZShuLFwiXCIpLnRvTG93ZXJDYXNlKCk7dmFyIHIsbz0hMTtpZih5W2VdKWU9eVtlXSxvPSEwO2Vsc2UgaWYoXCJ0cmFuc3BhcmVudFwiPT1lKXJldHVybntyOjAsZzowLGI6MCxhOjAsZm9ybWF0OlwibmFtZVwifTtyZXR1cm4ocj1WLnJnYi5leGVjKGUpKT97cjpyWzFdLGc6clsyXSxiOnJbM119OihyPVYucmdiYS5leGVjKGUpKT97cjpyWzFdLGc6clsyXSxiOnJbM10sYTpyWzRdfToocj1WLmhzbC5leGVjKGUpKT97aDpyWzFdLHM6clsyXSxsOnJbM119OihyPVYuaHNsYS5leGVjKGUpKT97aDpyWzFdLHM6clsyXSxsOnJbM10sYTpyWzRdfToocj1WLmhzdi5leGVjKGUpKT97aDpyWzFdLHM6clsyXSx2OnJbM119OihyPVYuaHN2YS5leGVjKGUpKT97aDpyWzFdLHM6clsyXSx2OnJbM10sYTpyWzRdfToocj1WLmhleDguZXhlYyhlKSk/e3I6XyhyWzFdKSxnOl8oclsyXSksYjpfKHJbM10pLGE6UyhyWzRdKSxmb3JtYXQ6bz9cIm5hbWVcIjpcImhleDhcIn06KHI9Vi5oZXg2LmV4ZWMoZSkpP3tyOl8oclsxXSksZzpfKHJbMl0pLGI6XyhyWzNdKSxmb3JtYXQ6bz9cIm5hbWVcIjpcImhleFwifToocj1WLmhleDQuZXhlYyhlKSk/e3I6XyhyWzFdK1wiXCIrclsxXSksZzpfKHJbMl0rXCJcIityWzJdKSxiOl8oclszXStcIlwiK3JbM10pLGE6UyhyWzRdK1wiXCIrcls0XSksZm9ybWF0Om8/XCJuYW1lXCI6XCJoZXg4XCJ9OiEhKHI9Vi5oZXgzLmV4ZWMoZSkpJiZ7cjpfKHJbMV0rXCJcIityWzFdKSxnOl8oclsyXStcIlwiK3JbMl0pLGI6XyhyWzNdK1wiXCIrclszXSksZm9ybWF0Om8/XCJuYW1lXCI6XCJoZXhcIn19KHIpKSxcIm9iamVjdFwiPT1lKHIpJiYoUihyLnIpJiZSKHIuZykmJlIoci5iKT8obz1yLnIsaT1yLmcsYT1yLmIsbD17cjoyNTUqTyhvLDI1NSksZzoyNTUqTyhpLDI1NSksYjoyNTUqTyhhLDI1NSl9LGY9ITAscD1cIiVcIj09PVN0cmluZyhyLnIpLnN1YnN0cigtMSk/XCJwcmdiXCI6XCJyZ2JcIik6UihyLmgpJiZSKHIucykmJlIoci52KT8ocz1qKHIucyksdT1qKHIudiksbD1mdW5jdGlvbihlLHQsbil7ZT02Kk8oZSwzNjApLHQ9Tyh0LDEwMCksbj1PKG4sMTAwKTt2YXIgcj1NYXRoLmZsb29yKGUpLG89ZS1yLGk9biooMS10KSxhPW4qKDEtbyp0KSxsPW4qKDEtKDEtbykqdCksYz1yJTY7cmV0dXJue3I6MjU1KltuLGEsaSxpLGwsbl1bY10sZzoyNTUqW2wsbixuLGEsaSxpXVtjXSxiOjI1NSpbaSxpLGwsbixuLGFdW2NdfX0oci5oLHMsdSksZj0hMCxwPVwiaHN2XCIpOlIoci5oKSYmUihyLnMpJiZSKHIubCkmJihzPWooci5zKSxkPWooci5sKSxsPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGk7ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIG48MCYmKG4rPTEpLG4+MSYmKG4tPTEpLG48MS82P2UrNioodC1lKSpuOm48LjU/dDpuPDIvMz9lKyh0LWUpKigyLzMtbikqNjplfWlmKGU9TyhlLDM2MCksdD1PKHQsMTAwKSxuPU8obiwxMDApLDA9PT10KXI9bz1pPW47ZWxzZXt2YXIgbD1uPC41P24qKDErdCk6bit0LW4qdCxjPTIqbi1sO3I9YShjLGwsZSsxLzMpLG89YShjLGwsZSksaT1hKGMsbCxlLTEvMyl9cmV0dXJue3I6MjU1KnIsZzoyNTUqbyxiOjI1NSppfX0oci5oLHMsZCksZj0hMCxwPVwiaHNsXCIpLHIuaGFzT3duUHJvcGVydHkoXCJhXCIpJiYoYz1yLmEpKSxjPXgoYykse29rOmYsZm9ybWF0OnIuZm9ybWF0fHxwLHI6TWF0aC5taW4oMjU1LE1hdGgubWF4KGwuciwwKSksZzpNYXRoLm1pbigyNTUsTWF0aC5tYXgobC5nLDApKSxiOk1hdGgubWluKDI1NSxNYXRoLm1heChsLmIsMCkpLGE6Y319KG8pO3RoaXMuX29yaWdpbmFsSW5wdXQ9byx0aGlzLl9yPWEucix0aGlzLl9nPWEuZyx0aGlzLl9iPWEuYix0aGlzLl9hPWEuYSx0aGlzLl9yb3VuZEE9TWF0aC5yb3VuZCgxMDAqdGhpcy5fYSkvMTAwLHRoaXMuX2Zvcm1hdD1pLmZvcm1hdHx8YS5mb3JtYXQsdGhpcy5fZ3JhZGllbnRUeXBlPWkuZ3JhZGllbnRUeXBlLHRoaXMuX3I8MSYmKHRoaXMuX3I9TWF0aC5yb3VuZCh0aGlzLl9yKSksdGhpcy5fZzwxJiYodGhpcy5fZz1NYXRoLnJvdW5kKHRoaXMuX2cpKSx0aGlzLl9iPDEmJih0aGlzLl9iPU1hdGgucm91bmQodGhpcy5fYikpLHRoaXMuX29rPWEub2t9ZnVuY3Rpb24gbyhlLHQsbil7ZT1PKGUsMjU1KSx0PU8odCwyNTUpLG49TyhuLDI1NSk7dmFyIHIsbyxpPU1hdGgubWF4KGUsdCxuKSxhPU1hdGgubWluKGUsdCxuKSxsPShpK2EpLzI7aWYoaT09YSlyPW89MDtlbHNle3ZhciBjPWktYTtzd2l0Y2gobz1sPi41P2MvKDItaS1hKTpjLyhpK2EpLGkpe2Nhc2UgZTpyPSh0LW4pL2MrKHQ8bj82OjApO2JyZWFrO2Nhc2UgdDpyPShuLWUpL2MrMjticmVhaztjYXNlIG46cj0oZS10KS9jKzR9ci89Nn1yZXR1cm57aDpyLHM6byxsfX1mdW5jdGlvbiBpKGUsdCxuKXtlPU8oZSwyNTUpLHQ9Tyh0LDI1NSksbj1PKG4sMjU1KTt2YXIgcixvLGk9TWF0aC5tYXgoZSx0LG4pLGE9TWF0aC5taW4oZSx0LG4pLGw9aSxjPWktYTtpZihvPTA9PT1pPzA6Yy9pLGk9PWEpcj0wO2Vsc2V7c3dpdGNoKGkpe2Nhc2UgZTpyPSh0LW4pL2MrKHQ8bj82OjApO2JyZWFrO2Nhc2UgdDpyPShuLWUpL2MrMjticmVhaztjYXNlIG46cj0oZS10KS9jKzR9ci89Nn1yZXR1cm57aDpyLHM6byx2Omx9fWZ1bmN0aW9uIGEoZSx0LG4scil7dmFyIG89W00oTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikpLE0oTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNikpLE0oTWF0aC5yb3VuZChuKS50b1N0cmluZygxNikpXTtyZXR1cm4gciYmb1swXS5jaGFyQXQoMCk9PW9bMF0uY2hhckF0KDEpJiZvWzFdLmNoYXJBdCgwKT09b1sxXS5jaGFyQXQoMSkmJm9bMl0uY2hhckF0KDApPT1vWzJdLmNoYXJBdCgxKT9vWzBdLmNoYXJBdCgwKStvWzFdLmNoYXJBdCgwKStvWzJdLmNoYXJBdCgwKTpvLmpvaW4oXCJcIil9ZnVuY3Rpb24gbChlLHQsbixyKXtyZXR1cm5bTShFKHIpKSxNKE1hdGgucm91bmQoZSkudG9TdHJpbmcoMTYpKSxNKE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpKSxNKE1hdGgucm91bmQobikudG9TdHJpbmcoMTYpKV0uam9pbihcIlwiKX1mdW5jdGlvbiBjKGUsdCl7dD0wPT09dD8wOnR8fDEwO3ZhciBuPXIoZSkudG9Ic2woKTtyZXR1cm4gbi5zLT10LzEwMCxuLnM9TChuLnMpLHIobil9ZnVuY3Rpb24gcyhlLHQpe3Q9MD09PXQ/MDp0fHwxMDt2YXIgbj1yKGUpLnRvSHNsKCk7cmV0dXJuIG4ucys9dC8xMDAsbi5zPUwobi5zKSxyKG4pfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIHIoZSkuZGVzYXR1cmF0ZSgxMDApfWZ1bmN0aW9uIGQoZSx0KXt0PTA9PT10PzA6dHx8MTA7dmFyIG49cihlKS50b0hzbCgpO3JldHVybiBuLmwrPXQvMTAwLG4ubD1MKG4ubCkscihuKX1mdW5jdGlvbiBmKGUsdCl7dD0wPT09dD8wOnR8fDEwO3ZhciBuPXIoZSkudG9SZ2IoKTtyZXR1cm4gbi5yPU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LG4uci1NYXRoLnJvdW5kKC10LzEwMCoyNTUpKSksbi5nPU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LG4uZy1NYXRoLnJvdW5kKC10LzEwMCoyNTUpKSksbi5iPU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LG4uYi1NYXRoLnJvdW5kKC10LzEwMCoyNTUpKSkscihuKX1mdW5jdGlvbiBwKGUsdCl7dD0wPT09dD8wOnR8fDEwO3ZhciBuPXIoZSkudG9Ic2woKTtyZXR1cm4gbi5sLT10LzEwMCxuLmw9TChuLmwpLHIobil9ZnVuY3Rpb24gQyhlLHQpe3ZhciBuPXIoZSkudG9Ic2woKSxvPShuLmgrdCklMzYwO3JldHVybiBuLmg9bzwwPzM2MCtvOm8scihuKX1mdW5jdGlvbiBoKGUpe3ZhciB0PXIoZSkudG9Ic2woKTtyZXR1cm4gdC5oPSh0LmgrMTgwKSUzNjAscih0KX1mdW5jdGlvbiB2KGUsdCl7aWYoaXNOYU4odCl8fHQ8PTApdGhyb3cgbmV3IEVycm9yKFwiQXJndW1lbnQgdG8gcG9seWFkIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXJcIik7Zm9yKHZhciBuPXIoZSkudG9Ic2woKSxvPVtyKGUpXSxpPTM2MC90LGE9MTthPHQ7YSsrKW8ucHVzaChyKHtoOihuLmgrYSppKSUzNjAsczpuLnMsbDpuLmx9KSk7cmV0dXJuIG99ZnVuY3Rpb24gZyhlKXt2YXIgdD1yKGUpLnRvSHNsKCksbj10Lmg7cmV0dXJuW3IoZSkscih7aDoobis3MiklMzYwLHM6dC5zLGw6dC5sfSkscih7aDoobisyMTYpJTM2MCxzOnQucyxsOnQubH0pXX1mdW5jdGlvbiBtKGUsdCxuKXt0PXR8fDYsbj1ufHwzMDt2YXIgbz1yKGUpLnRvSHNsKCksaT0zNjAvbixhPVtyKGUpXTtmb3Ioby5oPShvLmgtKGkqdD4+MSkrNzIwKSUzNjA7LS10OylvLmg9KG8uaCtpKSUzNjAsYS5wdXNoKHIobykpO3JldHVybiBhfWZ1bmN0aW9uIHcoZSx0KXt0PXR8fDY7Zm9yKHZhciBuPXIoZSkudG9Ic3YoKSxvPW4uaCxpPW4ucyxhPW4udixsPVtdLGM9MS90O3QtLTspbC5wdXNoKHIoe2g6byxzOmksdjphfSkpLGE9KGErYyklMTtyZXR1cm4gbH1yLnByb3RvdHlwZT17aXNEYXJrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QnJpZ2h0bmVzcygpPDEyOH0saXNMaWdodDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmlzRGFyaygpfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29rfSxnZXRPcmlnaW5hbElucHV0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsSW5wdXR9LGdldEZvcm1hdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb3JtYXR9LGdldEFscGhhOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2F9LGdldEJyaWdodG5lc3M6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnRvUmdiKCk7cmV0dXJuKDI5OSplLnIrNTg3KmUuZysxMTQqZS5iKS8xZTN9LGdldEx1bWluYW5jZTpmdW5jdGlvbigpe3ZhciBlLHQsbixyPXRoaXMudG9SZ2IoKTtyZXR1cm4gZT1yLnIvMjU1LHQ9ci5nLzI1NSxuPXIuYi8yNTUsLjIxMjYqKGU8PS4wMzkyOD9lLzEyLjkyOk1hdGgucG93KChlKy4wNTUpLzEuMDU1LDIuNCkpKy43MTUyKih0PD0uMDM5Mjg/dC8xMi45MjpNYXRoLnBvdygodCsuMDU1KS8xLjA1NSwyLjQpKSsuMDcyMioobjw9LjAzOTI4P24vMTIuOTI6TWF0aC5wb3coKG4rLjA1NSkvMS4wNTUsMi40KSl9LHNldEFscGhhOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hPXgoZSksdGhpcy5fcm91bmRBPU1hdGgucm91bmQoMTAwKnRoaXMuX2EpLzEwMCx0aGlzfSx0b0hzdjpmdW5jdGlvbigpe3ZhciBlPWkodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpO3JldHVybntoOjM2MCplLmgsczplLnMsdjplLnYsYTp0aGlzLl9hfX0sdG9Ic3ZTdHJpbmc6ZnVuY3Rpb24oKXt2YXIgZT1pKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iKSx0PU1hdGgucm91bmQoMzYwKmUuaCksbj1NYXRoLnJvdW5kKDEwMCplLnMpLHI9TWF0aC5yb3VuZCgxMDAqZS52KTtyZXR1cm4gMT09dGhpcy5fYT9cImhzdihcIit0K1wiLCBcIituK1wiJSwgXCIrcitcIiUpXCI6XCJoc3ZhKFwiK3QrXCIsIFwiK24rXCIlLCBcIityK1wiJSwgXCIrdGhpcy5fcm91bmRBK1wiKVwifSx0b0hzbDpmdW5jdGlvbigpe3ZhciBlPW8odGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpO3JldHVybntoOjM2MCplLmgsczplLnMsbDplLmwsYTp0aGlzLl9hfX0sdG9Ic2xTdHJpbmc6ZnVuY3Rpb24oKXt2YXIgZT1vKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iKSx0PU1hdGgucm91bmQoMzYwKmUuaCksbj1NYXRoLnJvdW5kKDEwMCplLnMpLHI9TWF0aC5yb3VuZCgxMDAqZS5sKTtyZXR1cm4gMT09dGhpcy5fYT9cImhzbChcIit0K1wiLCBcIituK1wiJSwgXCIrcitcIiUpXCI6XCJoc2xhKFwiK3QrXCIsIFwiK24rXCIlLCBcIityK1wiJSwgXCIrdGhpcy5fcm91bmRBK1wiKVwifSx0b0hleDpmdW5jdGlvbihlKXtyZXR1cm4gYSh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYixlKX0sdG9IZXhTdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuXCIjXCIrdGhpcy50b0hleChlKX0sdG9IZXg4OmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpPVtNKE1hdGgucm91bmQoZSkudG9TdHJpbmcoMTYpKSxNKE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpKSxNKE1hdGgucm91bmQobikudG9TdHJpbmcoMTYpKSxNKEUocikpXTtyZXR1cm4gbyYmaVswXS5jaGFyQXQoMCk9PWlbMF0uY2hhckF0KDEpJiZpWzFdLmNoYXJBdCgwKT09aVsxXS5jaGFyQXQoMSkmJmlbMl0uY2hhckF0KDApPT1pWzJdLmNoYXJBdCgxKSYmaVszXS5jaGFyQXQoMCk9PWlbM10uY2hhckF0KDEpP2lbMF0uY2hhckF0KDApK2lbMV0uY2hhckF0KDApK2lbMl0uY2hhckF0KDApK2lbM10uY2hhckF0KDApOmkuam9pbihcIlwiKX0odGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsdGhpcy5fYSxlKX0sdG9IZXg4U3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVyblwiI1wiK3RoaXMudG9IZXg4KGUpfSx0b1JnYjpmdW5jdGlvbigpe3JldHVybntyOk1hdGgucm91bmQodGhpcy5fciksZzpNYXRoLnJvdW5kKHRoaXMuX2cpLGI6TWF0aC5yb3VuZCh0aGlzLl9iKSxhOnRoaXMuX2F9fSx0b1JnYlN0cmluZzpmdW5jdGlvbigpe3JldHVybiAxPT10aGlzLl9hP1wicmdiKFwiK01hdGgucm91bmQodGhpcy5fcikrXCIsIFwiK01hdGgucm91bmQodGhpcy5fZykrXCIsIFwiK01hdGgucm91bmQodGhpcy5fYikrXCIpXCI6XCJyZ2JhKFwiK01hdGgucm91bmQodGhpcy5fcikrXCIsIFwiK01hdGgucm91bmQodGhpcy5fZykrXCIsIFwiK01hdGgucm91bmQodGhpcy5fYikrXCIsIFwiK3RoaXMuX3JvdW5kQStcIilcIn0sdG9QZXJjZW50YWdlUmdiOmZ1bmN0aW9uKCl7cmV0dXJue3I6TWF0aC5yb3VuZCgxMDAqTyh0aGlzLl9yLDI1NSkpK1wiJVwiLGc6TWF0aC5yb3VuZCgxMDAqTyh0aGlzLl9nLDI1NSkpK1wiJVwiLGI6TWF0aC5yb3VuZCgxMDAqTyh0aGlzLl9iLDI1NSkpK1wiJVwiLGE6dGhpcy5fYX19LHRvUGVyY2VudGFnZVJnYlN0cmluZzpmdW5jdGlvbigpe3JldHVybiAxPT10aGlzLl9hP1wicmdiKFwiK01hdGgucm91bmQoMTAwKk8odGhpcy5fciwyNTUpKStcIiUsIFwiK01hdGgucm91bmQoMTAwKk8odGhpcy5fZywyNTUpKStcIiUsIFwiK01hdGgucm91bmQoMTAwKk8odGhpcy5fYiwyNTUpKStcIiUpXCI6XCJyZ2JhKFwiK01hdGgucm91bmQoMTAwKk8odGhpcy5fciwyNTUpKStcIiUsIFwiK01hdGgucm91bmQoMTAwKk8odGhpcy5fZywyNTUpKStcIiUsIFwiK01hdGgucm91bmQoMTAwKk8odGhpcy5fYiwyNTUpKStcIiUsIFwiK3RoaXMuX3JvdW5kQStcIilcIn0sdG9OYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9hP1widHJhbnNwYXJlbnRcIjohKHRoaXMuX2E8MSkmJihiW2EodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsITApXXx8ITEpfSx0b0ZpbHRlcjpmdW5jdGlvbihlKXt2YXIgdD1cIiNcIitsKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLHRoaXMuX2EpLG49dCxvPXRoaXMuX2dyYWRpZW50VHlwZT9cIkdyYWRpZW50VHlwZSA9IDEsIFwiOlwiXCI7aWYoZSl7dmFyIGk9cihlKTtuPVwiI1wiK2woaS5fcixpLl9nLGkuX2IsaS5fYSl9cmV0dXJuXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoXCIrbytcInN0YXJ0Q29sb3JzdHI9XCIrdCtcIixlbmRDb2xvcnN0cj1cIituK1wiKVwifSx0b1N0cmluZzpmdW5jdGlvbihlKXt2YXIgdD0hIWU7ZT1lfHx0aGlzLl9mb3JtYXQ7dmFyIG49ITEscj10aGlzLl9hPDEmJnRoaXMuX2E+PTA7cmV0dXJuIHR8fCFyfHxcImhleFwiIT09ZSYmXCJoZXg2XCIhPT1lJiZcImhleDNcIiE9PWUmJlwiaGV4NFwiIT09ZSYmXCJoZXg4XCIhPT1lJiZcIm5hbWVcIiE9PWU/KFwicmdiXCI9PT1lJiYobj10aGlzLnRvUmdiU3RyaW5nKCkpLFwicHJnYlwiPT09ZSYmKG49dGhpcy50b1BlcmNlbnRhZ2VSZ2JTdHJpbmcoKSksXCJoZXhcIiE9PWUmJlwiaGV4NlwiIT09ZXx8KG49dGhpcy50b0hleFN0cmluZygpKSxcImhleDNcIj09PWUmJihuPXRoaXMudG9IZXhTdHJpbmcoITApKSxcImhleDRcIj09PWUmJihuPXRoaXMudG9IZXg4U3RyaW5nKCEwKSksXCJoZXg4XCI9PT1lJiYobj10aGlzLnRvSGV4OFN0cmluZygpKSxcIm5hbWVcIj09PWUmJihuPXRoaXMudG9OYW1lKCkpLFwiaHNsXCI9PT1lJiYobj10aGlzLnRvSHNsU3RyaW5nKCkpLFwiaHN2XCI9PT1lJiYobj10aGlzLnRvSHN2U3RyaW5nKCkpLG58fHRoaXMudG9IZXhTdHJpbmcoKSk6XCJuYW1lXCI9PT1lJiYwPT09dGhpcy5fYT90aGlzLnRvTmFtZSgpOnRoaXMudG9SZ2JTdHJpbmcoKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLnRvU3RyaW5nKCkpfSxfYXBwbHlNb2RpZmljYXRpb246ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmFwcGx5KG51bGwsW3RoaXNdLmNvbmNhdChbXS5zbGljZS5jYWxsKHQpKSk7cmV0dXJuIHRoaXMuX3I9bi5fcix0aGlzLl9nPW4uX2csdGhpcy5fYj1uLl9iLHRoaXMuc2V0QWxwaGEobi5fYSksdGhpc30sbGlnaHRlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihkLGFyZ3VtZW50cyl9LGJyaWdodGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGYsYXJndW1lbnRzKX0sZGFya2VuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKHAsYXJndW1lbnRzKX0sZGVzYXR1cmF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihjLGFyZ3VtZW50cyl9LHNhdHVyYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKHMsYXJndW1lbnRzKX0sZ3JleXNjYWxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKHUsYXJndW1lbnRzKX0sc3BpbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihDLGFyZ3VtZW50cyl9LF9hcHBseUNvbWJpbmF0aW9uOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuYXBwbHkobnVsbCxbdGhpc10uY29uY2F0KFtdLnNsaWNlLmNhbGwodCkpKX0sYW5hbG9nb3VzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24obSxhcmd1bWVudHMpfSxjb21wbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24oaCxhcmd1bWVudHMpfSxtb25vY2hyb21hdGljOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24odyxhcmd1bWVudHMpfSxzcGxpdGNvbXBsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihnLGFyZ3VtZW50cyl9LHRyaWFkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24odixbM10pfSx0ZXRyYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbih2LFs0XSl9fSxyLmZyb21SYXRpbz1mdW5jdGlvbih0LG4pe2lmKFwib2JqZWN0XCI9PWUodCkpe3ZhciBvPXt9O2Zvcih2YXIgaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJihvW2ldPVwiYVwiPT09aT90W2ldOmoodFtpXSkpO3Q9b31yZXR1cm4gcih0LG4pfSxyLmVxdWFscz1mdW5jdGlvbihlLHQpe3JldHVybiEoIWV8fCF0KSYmcihlKS50b1JnYlN0cmluZygpPT1yKHQpLnRvUmdiU3RyaW5nKCl9LHIucmFuZG9tPWZ1bmN0aW9uKCl7cmV0dXJuIHIuZnJvbVJhdGlvKHtyOk1hdGgucmFuZG9tKCksZzpNYXRoLnJhbmRvbSgpLGI6TWF0aC5yYW5kb20oKX0pfSxyLm1peD1mdW5jdGlvbihlLHQsbil7bj0wPT09bj8wOm58fDUwO3ZhciBvPXIoZSkudG9SZ2IoKSxpPXIodCkudG9SZ2IoKSxhPW4vMTAwO3JldHVybiByKHtyOihpLnItby5yKSphK28ucixnOihpLmctby5nKSphK28uZyxiOihpLmItby5iKSphK28uYixhOihpLmEtby5hKSphK28uYX0pfSxyLnJlYWRhYmlsaXR5PWZ1bmN0aW9uKGUsdCl7dmFyIG49cihlKSxvPXIodCk7cmV0dXJuKE1hdGgubWF4KG4uZ2V0THVtaW5hbmNlKCksby5nZXRMdW1pbmFuY2UoKSkrLjA1KS8oTWF0aC5taW4obi5nZXRMdW1pbmFuY2UoKSxvLmdldEx1bWluYW5jZSgpKSsuMDUpfSxyLmlzUmVhZGFibGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvLGksYSxsLGMscz1yLnJlYWRhYmlsaXR5KGUsdCk7c3dpdGNoKGk9ITEsKGE9bixcIkFBXCIhPT0obD0oKGE9YXx8e2xldmVsOlwiQUFcIixzaXplOlwic21hbGxcIn0pLmxldmVsfHxcIkFBXCIpLnRvVXBwZXJDYXNlKCkpJiZcIkFBQVwiIT09bCYmKGw9XCJBQVwiKSxcInNtYWxsXCIhPT0oYz0oYS5zaXplfHxcInNtYWxsXCIpLnRvTG93ZXJDYXNlKCkpJiZcImxhcmdlXCIhPT1jJiYoYz1cInNtYWxsXCIpLG89e2xldmVsOmwsc2l6ZTpjfSkubGV2ZWwrby5zaXplKXtjYXNlXCJBQXNtYWxsXCI6Y2FzZVwiQUFBbGFyZ2VcIjppPXM+PTQuNTticmVhaztjYXNlXCJBQWxhcmdlXCI6aT1zPj0zO2JyZWFrO2Nhc2VcIkFBQXNtYWxsXCI6aT1zPj03fXJldHVybiBpfSxyLm1vc3RSZWFkYWJsZT1mdW5jdGlvbihlLHQsbil7dmFyIG8saSxhLGwsYz1udWxsLHM9MDtpPShuPW58fHt9KS5pbmNsdWRlRmFsbGJhY2tDb2xvcnMsYT1uLmxldmVsLGw9bi5zaXplO2Zvcih2YXIgdT0wO3U8dC5sZW5ndGg7dSsrKShvPXIucmVhZGFiaWxpdHkoZSx0W3VdKSk+cyYmKHM9byxjPXIodFt1XSkpO3JldHVybiByLmlzUmVhZGFibGUoZSxjLHtsZXZlbDphLHNpemU6bH0pfHwhaT9jOihuLmluY2x1ZGVGYWxsYmFja0NvbG9ycz0hMSxyLm1vc3RSZWFkYWJsZShlLFtcIiNmZmZcIixcIiMwMDBcIl0sbikpfTt2YXIgeT1yLm5hbWVzPXthbGljZWJsdWU6XCJmMGY4ZmZcIixhbnRpcXVld2hpdGU6XCJmYWViZDdcIixhcXVhOlwiMGZmXCIsYXF1YW1hcmluZTpcIjdmZmZkNFwiLGF6dXJlOlwiZjBmZmZmXCIsYmVpZ2U6XCJmNWY1ZGNcIixiaXNxdWU6XCJmZmU0YzRcIixibGFjazpcIjAwMFwiLGJsYW5jaGVkYWxtb25kOlwiZmZlYmNkXCIsYmx1ZTpcIjAwZlwiLGJsdWV2aW9sZXQ6XCI4YTJiZTJcIixicm93bjpcImE1MmEyYVwiLGJ1cmx5d29vZDpcImRlYjg4N1wiLGJ1cm50c2llbm5hOlwiZWE3ZTVkXCIsY2FkZXRibHVlOlwiNWY5ZWEwXCIsY2hhcnRyZXVzZTpcIjdmZmYwMFwiLGNob2NvbGF0ZTpcImQyNjkxZVwiLGNvcmFsOlwiZmY3ZjUwXCIsY29ybmZsb3dlcmJsdWU6XCI2NDk1ZWRcIixjb3Juc2lsazpcImZmZjhkY1wiLGNyaW1zb246XCJkYzE0M2NcIixjeWFuOlwiMGZmXCIsZGFya2JsdWU6XCIwMDAwOGJcIixkYXJrY3lhbjpcIjAwOGI4YlwiLGRhcmtnb2xkZW5yb2Q6XCJiODg2MGJcIixkYXJrZ3JheTpcImE5YTlhOVwiLGRhcmtncmVlbjpcIjAwNjQwMFwiLGRhcmtncmV5OlwiYTlhOWE5XCIsZGFya2toYWtpOlwiYmRiNzZiXCIsZGFya21hZ2VudGE6XCI4YjAwOGJcIixkYXJrb2xpdmVncmVlbjpcIjU1NmIyZlwiLGRhcmtvcmFuZ2U6XCJmZjhjMDBcIixkYXJrb3JjaGlkOlwiOTkzMmNjXCIsZGFya3JlZDpcIjhiMDAwMFwiLGRhcmtzYWxtb246XCJlOTk2N2FcIixkYXJrc2VhZ3JlZW46XCI4ZmJjOGZcIixkYXJrc2xhdGVibHVlOlwiNDgzZDhiXCIsZGFya3NsYXRlZ3JheTpcIjJmNGY0ZlwiLGRhcmtzbGF0ZWdyZXk6XCIyZjRmNGZcIixkYXJrdHVycXVvaXNlOlwiMDBjZWQxXCIsZGFya3Zpb2xldDpcIjk0MDBkM1wiLGRlZXBwaW5rOlwiZmYxNDkzXCIsZGVlcHNreWJsdWU6XCIwMGJmZmZcIixkaW1ncmF5OlwiNjk2OTY5XCIsZGltZ3JleTpcIjY5Njk2OVwiLGRvZGdlcmJsdWU6XCIxZTkwZmZcIixmaXJlYnJpY2s6XCJiMjIyMjJcIixmbG9yYWx3aGl0ZTpcImZmZmFmMFwiLGZvcmVzdGdyZWVuOlwiMjI4YjIyXCIsZnVjaHNpYTpcImYwZlwiLGdhaW5zYm9ybzpcImRjZGNkY1wiLGdob3N0d2hpdGU6XCJmOGY4ZmZcIixnb2xkOlwiZmZkNzAwXCIsZ29sZGVucm9kOlwiZGFhNTIwXCIsZ3JheTpcIjgwODA4MFwiLGdyZWVuOlwiMDA4MDAwXCIsZ3JlZW55ZWxsb3c6XCJhZGZmMmZcIixncmV5OlwiODA4MDgwXCIsaG9uZXlkZXc6XCJmMGZmZjBcIixob3RwaW5rOlwiZmY2OWI0XCIsaW5kaWFucmVkOlwiY2Q1YzVjXCIsaW5kaWdvOlwiNGIwMDgyXCIsaXZvcnk6XCJmZmZmZjBcIixraGFraTpcImYwZTY4Y1wiLGxhdmVuZGVyOlwiZTZlNmZhXCIsbGF2ZW5kZXJibHVzaDpcImZmZjBmNVwiLGxhd25ncmVlbjpcIjdjZmMwMFwiLGxlbW9uY2hpZmZvbjpcImZmZmFjZFwiLGxpZ2h0Ymx1ZTpcImFkZDhlNlwiLGxpZ2h0Y29yYWw6XCJmMDgwODBcIixsaWdodGN5YW46XCJlMGZmZmZcIixsaWdodGdvbGRlbnJvZHllbGxvdzpcImZhZmFkMlwiLGxpZ2h0Z3JheTpcImQzZDNkM1wiLGxpZ2h0Z3JlZW46XCI5MGVlOTBcIixsaWdodGdyZXk6XCJkM2QzZDNcIixsaWdodHBpbms6XCJmZmI2YzFcIixsaWdodHNhbG1vbjpcImZmYTA3YVwiLGxpZ2h0c2VhZ3JlZW46XCIyMGIyYWFcIixsaWdodHNreWJsdWU6XCI4N2NlZmFcIixsaWdodHNsYXRlZ3JheTpcIjc4OVwiLGxpZ2h0c2xhdGVncmV5OlwiNzg5XCIsbGlnaHRzdGVlbGJsdWU6XCJiMGM0ZGVcIixsaWdodHllbGxvdzpcImZmZmZlMFwiLGxpbWU6XCIwZjBcIixsaW1lZ3JlZW46XCIzMmNkMzJcIixsaW5lbjpcImZhZjBlNlwiLG1hZ2VudGE6XCJmMGZcIixtYXJvb246XCI4MDAwMDBcIixtZWRpdW1hcXVhbWFyaW5lOlwiNjZjZGFhXCIsbWVkaXVtYmx1ZTpcIjAwMDBjZFwiLG1lZGl1bW9yY2hpZDpcImJhNTVkM1wiLG1lZGl1bXB1cnBsZTpcIjkzNzBkYlwiLG1lZGl1bXNlYWdyZWVuOlwiM2NiMzcxXCIsbWVkaXVtc2xhdGVibHVlOlwiN2I2OGVlXCIsbWVkaXVtc3ByaW5nZ3JlZW46XCIwMGZhOWFcIixtZWRpdW10dXJxdW9pc2U6XCI0OGQxY2NcIixtZWRpdW12aW9sZXRyZWQ6XCJjNzE1ODVcIixtaWRuaWdodGJsdWU6XCIxOTE5NzBcIixtaW50Y3JlYW06XCJmNWZmZmFcIixtaXN0eXJvc2U6XCJmZmU0ZTFcIixtb2NjYXNpbjpcImZmZTRiNVwiLG5hdmFqb3doaXRlOlwiZmZkZWFkXCIsbmF2eTpcIjAwMDA4MFwiLG9sZGxhY2U6XCJmZGY1ZTZcIixvbGl2ZTpcIjgwODAwMFwiLG9saXZlZHJhYjpcIjZiOGUyM1wiLG9yYW5nZTpcImZmYTUwMFwiLG9yYW5nZXJlZDpcImZmNDUwMFwiLG9yY2hpZDpcImRhNzBkNlwiLHBhbGVnb2xkZW5yb2Q6XCJlZWU4YWFcIixwYWxlZ3JlZW46XCI5OGZiOThcIixwYWxldHVycXVvaXNlOlwiYWZlZWVlXCIscGFsZXZpb2xldHJlZDpcImRiNzA5M1wiLHBhcGF5YXdoaXA6XCJmZmVmZDVcIixwZWFjaHB1ZmY6XCJmZmRhYjlcIixwZXJ1OlwiY2Q4NTNmXCIscGluazpcImZmYzBjYlwiLHBsdW06XCJkZGEwZGRcIixwb3dkZXJibHVlOlwiYjBlMGU2XCIscHVycGxlOlwiODAwMDgwXCIscmViZWNjYXB1cnBsZTpcIjY2MzM5OVwiLHJlZDpcImYwMFwiLHJvc3licm93bjpcImJjOGY4ZlwiLHJveWFsYmx1ZTpcIjQxNjllMVwiLHNhZGRsZWJyb3duOlwiOGI0NTEzXCIsc2FsbW9uOlwiZmE4MDcyXCIsc2FuZHlicm93bjpcImY0YTQ2MFwiLHNlYWdyZWVuOlwiMmU4YjU3XCIsc2Vhc2hlbGw6XCJmZmY1ZWVcIixzaWVubmE6XCJhMDUyMmRcIixzaWx2ZXI6XCJjMGMwYzBcIixza3libHVlOlwiODdjZWViXCIsc2xhdGVibHVlOlwiNmE1YWNkXCIsc2xhdGVncmF5OlwiNzA4MDkwXCIsc2xhdGVncmV5OlwiNzA4MDkwXCIsc25vdzpcImZmZmFmYVwiLHNwcmluZ2dyZWVuOlwiMDBmZjdmXCIsc3RlZWxibHVlOlwiNDY4MmI0XCIsdGFuOlwiZDJiNDhjXCIsdGVhbDpcIjAwODA4MFwiLHRoaXN0bGU6XCJkOGJmZDhcIix0b21hdG86XCJmZjYzNDdcIix0dXJxdW9pc2U6XCI0MGUwZDBcIix2aW9sZXQ6XCJlZTgyZWVcIix3aGVhdDpcImY1ZGViM1wiLHdoaXRlOlwiZmZmXCIsd2hpdGVzbW9rZTpcImY1ZjVmNVwiLHllbGxvdzpcImZmMFwiLHllbGxvd2dyZWVuOlwiOWFjZDMyXCJ9LGI9ci5oZXhOYW1lcz1mdW5jdGlvbihlKXt2YXIgdD17fTtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtlW25dXT1uKTtyZXR1cm4gdH0oeSk7ZnVuY3Rpb24geChlKXtyZXR1cm4gZT1wYXJzZUZsb2F0KGUpLChpc05hTihlKXx8ZTwwfHxlPjEpJiYoZT0xKSxlfWZ1bmN0aW9uIE8oZSx0KXsoZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGUmJi0xIT1lLmluZGV4T2YoXCIuXCIpJiYxPT09cGFyc2VGbG9hdChlKX0pKGUpJiYoZT1cIjEwMCVcIik7dmFyIG49ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGUmJi0xIT1lLmluZGV4T2YoXCIlXCIpfShlKTtyZXR1cm4gZT1NYXRoLm1pbih0LE1hdGgubWF4KDAscGFyc2VGbG9hdChlKSkpLG4mJihlPXBhcnNlSW50KGUqdCwxMCkvMTAwKSxNYXRoLmFicyhlLXQpPDFlLTY/MTplJXQvcGFyc2VGbG9hdCh0KX1mdW5jdGlvbiBMKGUpe3JldHVybiBNYXRoLm1pbigxLE1hdGgubWF4KDAsZSkpfWZ1bmN0aW9uIF8oZSl7cmV0dXJuIHBhcnNlSW50KGUsMTYpfWZ1bmN0aW9uIE0oZSl7cmV0dXJuIDE9PWUubGVuZ3RoP1wiMFwiK2U6XCJcIitlfWZ1bmN0aW9uIGooZSl7cmV0dXJuIGU8PTEmJihlPTEwMCplK1wiJVwiKSxlfWZ1bmN0aW9uIEUoZSl7cmV0dXJuIE1hdGgucm91bmQoMjU1KnBhcnNlRmxvYXQoZSkpLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBTKGUpe3JldHVybiBfKGUpLzI1NX12YXIgUCxILGssVj0oSD1cIltcXFxcc3xcXFxcKF0rKFwiKyhQPVwiKD86Wy1cXFxcK10/XFxcXGQqXFxcXC5cXFxcZCslPyl8KD86Wy1cXFxcK10/XFxcXGQrJT8pXCIpK1wiKVssfFxcXFxzXSsoXCIrUCtcIilbLHxcXFxcc10rKFwiK1ArXCIpXFxcXHMqXFxcXCk/XCIsaz1cIltcXFxcc3xcXFxcKF0rKFwiK1ArXCIpWyx8XFxcXHNdKyhcIitQK1wiKVssfFxcXFxzXSsoXCIrUCtcIilbLHxcXFxcc10rKFwiK1ArXCIpXFxcXHMqXFxcXCk/XCIse0NTU19VTklUOm5ldyBSZWdFeHAoUCkscmdiOm5ldyBSZWdFeHAoXCJyZ2JcIitIKSxyZ2JhOm5ldyBSZWdFeHAoXCJyZ2JhXCIrayksaHNsOm5ldyBSZWdFeHAoXCJoc2xcIitIKSxoc2xhOm5ldyBSZWdFeHAoXCJoc2xhXCIrayksaHN2Om5ldyBSZWdFeHAoXCJoc3ZcIitIKSxoc3ZhOm5ldyBSZWdFeHAoXCJoc3ZhXCIrayksaGV4MzovXiM/KFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pJC8saGV4NjovXiM/KFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pJC8saGV4NDovXiM/KFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KSQvLGhleDg6L14jPyhbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkkL30pO2Z1bmN0aW9uIFIoZSl7cmV0dXJuISFWLkNTU19VTklULmV4ZWMoZSl9cmV0dXJuIHJ9KCl9fSxvPXt9O2Z1bmN0aW9uIGkoZSl7dmFyIHQ9b1tlXTtpZih2b2lkIDAhPT10KXJldHVybiB0LmV4cG9ydHM7dmFyIG49b1tlXT17aWQ6ZSxleHBvcnRzOnt9fTtyZXR1cm4gcltlXS5jYWxsKG4uZXhwb3J0cyxuLG4uZXhwb3J0cyxpKSxuLmV4cG9ydHN9aS5uPWU9Pnt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/KCk9PmUuZGVmYXVsdDooKT0+ZTtyZXR1cm4gaS5kKHQse2E6dH0pLHR9LGkuZD0oZSx0KT0+e2Zvcih2YXIgbiBpbiB0KWkubyh0LG4pJiYhaS5vKGUsbikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2VudW1lcmFibGU6ITAsZ2V0OnRbbl19KX0saS5nPWZ1bmN0aW9uKCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbFRoaXMpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfWNhdGNoKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvd319KCksaS5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxpLnI9ZT0+e1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9O3ZhciBhPWkoMzQxKSxsPXQ7Zm9yKHZhciBjIGluIGEpbFtjXT1hW2NdO2EuX19lc01vZHVsZSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LDE5ODooZSx0LG4pPT57dmFyIHI9TmFOLG89XCJbb2JqZWN0IFN5bWJvbF1cIixpPS9eXFxzK3xcXHMrJC9nLGE9L15bLStdMHhbMC05YS1mXSskL2ksbD0vXjBiWzAxXSskL2ksYz0vXjBvWzAtN10rJC9pLHM9cGFyc2VJbnQsdT1cIm9iamVjdFwiPT10eXBlb2Ygbi5nJiZuLmcmJm4uZy5PYmplY3Q9PT1PYmplY3QmJm4uZyxkPVwib2JqZWN0XCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixmPXV8fGR8fEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSxwPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsQz1NYXRoLm1heCxoPU1hdGgubWluLHY9ZnVuY3Rpb24oKXtyZXR1cm4gZi5EYXRlLm5vdygpfTtmdW5jdGlvbiBnKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiEhZSYmKFwib2JqZWN0XCI9PXR8fFwiZnVuY3Rpb25cIj09dCl9ZnVuY3Rpb24gbShlKXtpZihcIm51bWJlclwiPT10eXBlb2YgZSlyZXR1cm4gZTtpZihmdW5jdGlvbihlKXtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgZXx8ZnVuY3Rpb24oZSl7cmV0dXJuISFlJiZcIm9iamVjdFwiPT10eXBlb2YgZX0oZSkmJnAuY2FsbChlKT09b30oZSkpcmV0dXJuIHI7aWYoZyhlKSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgZS52YWx1ZU9mP2UudmFsdWVPZigpOmU7ZT1nKHQpP3QrXCJcIjp0fWlmKFwic3RyaW5nXCIhPXR5cGVvZiBlKXJldHVybiAwPT09ZT9lOitlO2U9ZS5yZXBsYWNlKGksXCJcIik7dmFyIG49bC50ZXN0KGUpO3JldHVybiBufHxjLnRlc3QoZSk/cyhlLnNsaWNlKDIpLG4/Mjo4KTphLnRlc3QoZSk/cjorZX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saSxhLGwsYyxzPTAsdT0hMSxkPSExLGY9ITA7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBmdW5jdGlvblwiKTtmdW5jdGlvbiBwKHQpe3ZhciBuPXIsaT1vO3JldHVybiByPW89dm9pZCAwLHM9dCxhPWUuYXBwbHkoaSxuKX1mdW5jdGlvbiB3KGUpe3ZhciBuPWUtYztyZXR1cm4gdm9pZCAwPT09Y3x8bj49dHx8bjwwfHxkJiZlLXM+PWl9ZnVuY3Rpb24geSgpe3ZhciBlPXYoKTtpZih3KGUpKXJldHVybiBiKGUpO2w9c2V0VGltZW91dCh5LGZ1bmN0aW9uKGUpe3ZhciBuPXQtKGUtYyk7cmV0dXJuIGQ/aChuLGktKGUtcykpOm59KGUpKX1mdW5jdGlvbiBiKGUpe3JldHVybiBsPXZvaWQgMCxmJiZyP3AoZSk6KHI9bz12b2lkIDAsYSl9ZnVuY3Rpb24geCgpe3ZhciBlPXYoKSxuPXcoZSk7aWYocj1hcmd1bWVudHMsbz10aGlzLGM9ZSxuKXtpZih2b2lkIDA9PT1sKXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gcz1lLGw9c2V0VGltZW91dCh5LHQpLHU/cChlKTphfShjKTtpZihkKXJldHVybiBsPXNldFRpbWVvdXQoeSx0KSxwKGMpfXJldHVybiB2b2lkIDA9PT1sJiYobD1zZXRUaW1lb3V0KHksdCkpLGF9cmV0dXJuIHQ9bSh0KXx8MCxnKG4pJiYodT0hIW4ubGVhZGluZyxpPShkPVwibWF4V2FpdFwiaW4gbik/QyhtKG4ubWF4V2FpdCl8fDAsdCk6aSxmPVwidHJhaWxpbmdcImluIG4/ISFuLnRyYWlsaW5nOmYpLHguY2FuY2VsPWZ1bmN0aW9uKCl7dm9pZCAwIT09bCYmY2xlYXJUaW1lb3V0KGwpLHM9MCxyPWM9bz1sPXZvaWQgMH0seC5mbHVzaD1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1sP2E6Yih2KCkpfSx4fX0sNTI1OmU9PntcInVzZSBzdHJpY3RcIjt2YXIgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLG49T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxyPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3ZhciBlPW5ldyBTdHJpbmcoXCJhYmNcIik7aWYoZVs1XT1cImRlXCIsXCI1XCI9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30sbj0wO248MTA7bisrKXRbXCJfXCIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjtpZihcIjAxMjM0NTY3ODlcIiE9PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSkuam9pbihcIlwiKSlyZXR1cm4hMTt2YXIgcj17fTtyZXR1cm5cImFiY2RlZmdoaWprbG1ub3BxcnN0XCIuc3BsaXQoXCJcIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cltlXT1lfSkpLFwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIj09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30scikpLmpvaW4oXCJcIil9Y2F0Y2goZSl7cmV0dXJuITF9fSgpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oZSxvKXtmb3IodmFyIGksYSxsPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBPYmplY3QoZSl9KGUpLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXtmb3IodmFyIHMgaW4gaT1PYmplY3QoYXJndW1lbnRzW2NdKSluLmNhbGwoaSxzKSYmKGxbc109aVtzXSk7aWYodCl7YT10KGkpO2Zvcih2YXIgdT0wO3U8YS5sZW5ndGg7dSsrKXIuY2FsbChpLGFbdV0pJiYobFthW3VdXT1pW2FbdV1dKX19cmV0dXJuIGx9fSw3MDI6KGUsdCk9PntcInVzZSBzdHJpY3RcIjt2YXIgbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3Iscj1uP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLG89bj9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LGk9bj9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcsYT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCxsPW4/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LGM9bj9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDkscz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLHU9bj9TeW1ib2wuZm9yKFwicmVhY3QuYXN5bmNfbW9kZVwiKTo2MDExMSxkPW4/U3ltYm9sLmZvcihcInJlYWN0LmNvbmN1cnJlbnRfbW9kZVwiKTo2MDExMSxmPW4/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLHA9bj9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIik6NjAxMTMsQz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpOjYwMTIwLGg9bj9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSx2PW4/U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik6NjAxMTYsZz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5ibG9ja1wiKTo2MDEyMSxtPW4/U3ltYm9sLmZvcihcInJlYWN0LmZ1bmRhbWVudGFsXCIpOjYwMTE3LHc9bj9TeW1ib2wuZm9yKFwicmVhY3QucmVzcG9uZGVyXCIpOjYwMTE4LHk9bj9TeW1ib2wuZm9yKFwicmVhY3Quc2NvcGVcIik6NjAxMTk7ZnVuY3Rpb24gYihlKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUpe3ZhciB0PWUuJCR0eXBlb2Y7c3dpdGNoKHQpe2Nhc2Ugcjpzd2l0Y2goZT1lLnR5cGUpe2Nhc2UgdTpjYXNlIGQ6Y2FzZSBpOmNhc2UgbDpjYXNlIGE6Y2FzZSBwOnJldHVybiBlO2RlZmF1bHQ6c3dpdGNoKGU9ZSYmZS4kJHR5cGVvZil7Y2FzZSBzOmNhc2UgZjpjYXNlIHY6Y2FzZSBoOmNhc2UgYzpyZXR1cm4gZTtkZWZhdWx0OnJldHVybiB0fX1jYXNlIG86cmV0dXJuIHR9fX1mdW5jdGlvbiB4KGUpe3JldHVybiBiKGUpPT09ZH10LkZvcndhcmRSZWY9Zix0LmlzVmFsaWRFbGVtZW50VHlwZT1mdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZXx8XCJmdW5jdGlvblwiPT10eXBlb2YgZXx8ZT09PWl8fGU9PT1kfHxlPT09bHx8ZT09PWF8fGU9PT1wfHxlPT09Q3x8XCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lJiYoZS4kJHR5cGVvZj09PXZ8fGUuJCR0eXBlb2Y9PT1ofHxlLiQkdHlwZW9mPT09Y3x8ZS4kJHR5cGVvZj09PXN8fGUuJCR0eXBlb2Y9PT1mfHxlLiQkdHlwZW9mPT09bXx8ZS4kJHR5cGVvZj09PXd8fGUuJCR0eXBlb2Y9PT15fHxlLiQkdHlwZW9mPT09Zyl9fSwxODU6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uKDcwMil9LDUzNTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big1MjUpLG89NjAxMDMsaT02MDEwNjt0LkZyYWdtZW50PTYwMTA3LHQuU3RyaWN0TW9kZT02MDEwOCx0LlByb2ZpbGVyPTYwMTE0O3ZhciBhPTYwMTA5LGw9NjAxMTAsYz02MDExMjt0LlN1c3BlbnNlPTYwMTEzO3ZhciBzPTYwMTE1LHU9NjAxMTY7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yKXt2YXIgZD1TeW1ib2wuZm9yO289ZChcInJlYWN0LmVsZW1lbnRcIiksaT1kKFwicmVhY3QucG9ydGFsXCIpLHQuRnJhZ21lbnQ9ZChcInJlYWN0LmZyYWdtZW50XCIpLHQuU3RyaWN0TW9kZT1kKFwicmVhY3Quc3RyaWN0X21vZGVcIiksdC5Qcm9maWxlcj1kKFwicmVhY3QucHJvZmlsZXJcIiksYT1kKFwicmVhY3QucHJvdmlkZXJcIiksbD1kKFwicmVhY3QuY29udGV4dFwiKSxjPWQoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSx0LlN1c3BlbnNlPWQoXCJyZWFjdC5zdXNwZW5zZVwiKSxzPWQoXCJyZWFjdC5tZW1vXCIpLHU9ZChcInJlYWN0LmxhenlcIil9dmFyIGY9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gcChlKXtmb3IodmFyIHQ9XCJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD1cIitlLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXQrPVwiJmFyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW25dKTtyZXR1cm5cIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIitlK1wiOyB2aXNpdCBcIit0K1wiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIn12YXIgQz17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKCl7fX0saD17fTtmdW5jdGlvbiB2KGUsdCxuKXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPWgsdGhpcy51cGRhdGVyPW58fEN9ZnVuY3Rpb24gZygpe31mdW5jdGlvbiBtKGUsdCxuKXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPWgsdGhpcy51cGRhdGVyPW58fEN9di5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSx2LnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihlLHQpe2lmKFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT1lKXRocm93IEVycm9yKHAoODUpKTt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsZSx0LFwic2V0U3RhdGVcIil9LHYucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxlLFwiZm9yY2VVcGRhdGVcIil9LGcucHJvdG90eXBlPXYucHJvdG90eXBlO3ZhciB3PW0ucHJvdG90eXBlPW5ldyBnO3cuY29uc3RydWN0b3I9bSxyKHcsdi5wcm90b3R5cGUpLHcuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIHk9e2N1cnJlbnQ6bnVsbH0sYj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHg9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtmdW5jdGlvbiBPKGUsdCxuKXt2YXIgcixpPXt9LGE9bnVsbCxsPW51bGw7aWYobnVsbCE9dClmb3IociBpbiB2b2lkIDAhPT10LnJlZiYmKGw9dC5yZWYpLHZvaWQgMCE9PXQua2V5JiYoYT1cIlwiK3Qua2V5KSx0KWIuY2FsbCh0LHIpJiYheC5oYXNPd25Qcm9wZXJ0eShyKSYmKGlbcl09dFtyXSk7dmFyIGM9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1jKWkuY2hpbGRyZW49bjtlbHNlIGlmKDE8Yyl7Zm9yKHZhciBzPUFycmF5KGMpLHU9MDt1PGM7dSsrKXNbdV09YXJndW1lbnRzW3UrMl07aS5jaGlsZHJlbj1zfWlmKGUmJmUuZGVmYXVsdFByb3BzKWZvcihyIGluIGM9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09aVtyXSYmKGlbcl09Y1tyXSk7cmV0dXJueyQkdHlwZW9mOm8sdHlwZTplLGtleTphLHJlZjpsLHByb3BzOmksX293bmVyOnkuY3VycmVudH19ZnVuY3Rpb24gTChlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUmJmUuJCR0eXBlb2Y9PT1vfXZhciBfPS9cXC8rL2c7ZnVuY3Rpb24gTShlLHQpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmbnVsbCE9ZS5rZXk/ZnVuY3Rpb24oZSl7dmFyIHQ9e1wiPVwiOlwiPTBcIixcIjpcIjpcIj0yXCJ9O3JldHVyblwiJFwiK2UucmVwbGFjZSgvWz06XS9nLChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pKX0oXCJcIitlLmtleSk6dC50b1N0cmluZygzNil9ZnVuY3Rpb24gaihlLHQsbixyLGEpe3ZhciBsPXR5cGVvZiBlO1widW5kZWZpbmVkXCIhPT1sJiZcImJvb2xlYW5cIiE9PWx8fChlPW51bGwpO3ZhciBjPSExO2lmKG51bGw9PT1lKWM9ITA7ZWxzZSBzd2l0Y2gobCl7Y2FzZVwic3RyaW5nXCI6Y2FzZVwibnVtYmVyXCI6Yz0hMDticmVhaztjYXNlXCJvYmplY3RcIjpzd2l0Y2goZS4kJHR5cGVvZil7Y2FzZSBvOmNhc2UgaTpjPSEwfX1pZihjKXJldHVybiBhPWEoYz1lKSxlPVwiXCI9PT1yP1wiLlwiK00oYywwKTpyLEFycmF5LmlzQXJyYXkoYSk/KG49XCJcIixudWxsIT1lJiYobj1lLnJlcGxhY2UoXyxcIiQmL1wiKStcIi9cIiksaihhLHQsbixcIlwiLChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKSk6bnVsbCE9YSYmKEwoYSkmJihhPWZ1bmN0aW9uKGUsdCl7cmV0dXJueyQkdHlwZW9mOm8sdHlwZTplLnR5cGUsa2V5OnQscmVmOmUucmVmLHByb3BzOmUucHJvcHMsX293bmVyOmUuX293bmVyfX0oYSxuKyghYS5rZXl8fGMmJmMua2V5PT09YS5rZXk/XCJcIjooXCJcIithLmtleSkucmVwbGFjZShfLFwiJCYvXCIpK1wiL1wiKStlKSksdC5wdXNoKGEpKSwxO2lmKGM9MCxyPVwiXCI9PT1yP1wiLlwiOnIrXCI6XCIsQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIHU9citNKGw9ZVtzXSxzKTtjKz1qKGwsdCxuLHUsYSl9ZWxzZSBpZih1PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZXx8XCJvYmplY3RcIiE9dHlwZW9mIGU/bnVsbDpcImZ1bmN0aW9uXCI9PXR5cGVvZihlPWYmJmVbZl18fGVbXCJAQGl0ZXJhdG9yXCJdKT9lOm51bGx9KGUpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHUpZm9yKGU9dS5jYWxsKGUpLHM9MDshKGw9ZS5uZXh0KCkpLmRvbmU7KWMrPWoobD1sLnZhbHVlLHQsbix1PXIrTShsLHMrKyksYSk7ZWxzZSBpZihcIm9iamVjdFwiPT09bCl0aHJvdyB0PVwiXCIrZSxFcnJvcihwKDMxLFwiW29iamVjdCBPYmplY3RdXCI9PT10P1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoZSkuam9pbihcIiwgXCIpK1wifVwiOnQpKTtyZXR1cm4gY31mdW5jdGlvbiBFKGUsdCxuKXtpZihudWxsPT1lKXJldHVybiBlO3ZhciByPVtdLG89MDtyZXR1cm4gaihlLHIsXCJcIixcIlwiLChmdW5jdGlvbihlKXtyZXR1cm4gdC5jYWxsKG4sZSxvKyspfSkpLHJ9ZnVuY3Rpb24gUyhlKXtpZigtMT09PWUuX3N0YXR1cyl7dmFyIHQ9ZS5fcmVzdWx0O3Q9dCgpLGUuX3N0YXR1cz0wLGUuX3Jlc3VsdD10LHQudGhlbigoZnVuY3Rpb24odCl7MD09PWUuX3N0YXR1cyYmKHQ9dC5kZWZhdWx0LGUuX3N0YXR1cz0xLGUuX3Jlc3VsdD10KX0pLChmdW5jdGlvbih0KXswPT09ZS5fc3RhdHVzJiYoZS5fc3RhdHVzPTIsZS5fcmVzdWx0PXQpfSkpfWlmKDE9PT1lLl9zdGF0dXMpcmV0dXJuIGUuX3Jlc3VsdDt0aHJvdyBlLl9yZXN1bHR9dmFyIFA9e2N1cnJlbnQ6bnVsbH07ZnVuY3Rpb24gSCgpe3ZhciBlPVAuY3VycmVudDtpZihudWxsPT09ZSl0aHJvdyBFcnJvcihwKDMyMSkpO3JldHVybiBlfXZhciBrPXtSZWFjdEN1cnJlbnREaXNwYXRjaGVyOlAsUmVhY3RDdXJyZW50QmF0Y2hDb25maWc6e3RyYW5zaXRpb246MH0sUmVhY3RDdXJyZW50T3duZXI6eSxJc1NvbWVSZW5kZXJlckFjdGluZzp7Y3VycmVudDohMX0sYXNzaWduOnJ9O3QuQ2hpbGRyZW49e21hcDpFLGZvckVhY2g6ZnVuY3Rpb24oZSx0LG4pe0UoZSwoZnVuY3Rpb24oKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLG4pfSxjb3VudDpmdW5jdGlvbihlKXt2YXIgdD0wO3JldHVybiBFKGUsKGZ1bmN0aW9uKCl7dCsrfSkpLHR9LHRvQXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIEUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSl8fFtdfSxvbmx5OmZ1bmN0aW9uKGUpe2lmKCFMKGUpKXRocm93IEVycm9yKHAoMTQzKSk7cmV0dXJuIGV9fSx0LkNvbXBvbmVudD12LHQuUHVyZUNvbXBvbmVudD1tLHQuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9ayx0LmNsb25lRWxlbWVudD1mdW5jdGlvbihlLHQsbil7aWYobnVsbD09ZSl0aHJvdyBFcnJvcihwKDI2NyxlKSk7dmFyIGk9cih7fSxlLnByb3BzKSxhPWUua2V5LGw9ZS5yZWYsYz1lLl9vd25lcjtpZihudWxsIT10KXtpZih2b2lkIDAhPT10LnJlZiYmKGw9dC5yZWYsYz15LmN1cnJlbnQpLHZvaWQgMCE9PXQua2V5JiYoYT1cIlwiK3Qua2V5KSxlLnR5cGUmJmUudHlwZS5kZWZhdWx0UHJvcHMpdmFyIHM9ZS50eXBlLmRlZmF1bHRQcm9wcztmb3IodSBpbiB0KWIuY2FsbCh0LHUpJiYheC5oYXNPd25Qcm9wZXJ0eSh1KSYmKGlbdV09dm9pZCAwPT09dFt1XSYmdm9pZCAwIT09cz9zW3VdOnRbdV0pfXZhciB1PWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09dSlpLmNoaWxkcmVuPW47ZWxzZSBpZigxPHUpe3M9QXJyYXkodSk7Zm9yKHZhciBkPTA7ZDx1O2QrKylzW2RdPWFyZ3VtZW50c1tkKzJdO2kuY2hpbGRyZW49c31yZXR1cm57JCR0eXBlb2Y6byx0eXBlOmUudHlwZSxrZXk6YSxyZWY6bCxwcm9wczppLF9vd25lcjpjfX0sdC5jcmVhdGVDb250ZXh0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PW51bGwpLChlPXskJHR5cGVvZjpsLF9jYWxjdWxhdGVDaGFuZ2VkQml0czp0LF9jdXJyZW50VmFsdWU6ZSxfY3VycmVudFZhbHVlMjplLF90aHJlYWRDb3VudDowLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbH0pLlByb3ZpZGVyPXskJHR5cGVvZjphLF9jb250ZXh0OmV9LGUuQ29uc3VtZXI9ZX0sdC5jcmVhdGVFbGVtZW50PU8sdC5jcmVhdGVGYWN0b3J5PWZ1bmN0aW9uKGUpe3ZhciB0PU8uYmluZChudWxsLGUpO3JldHVybiB0LnR5cGU9ZSx0fSx0LmNyZWF0ZVJlZj1mdW5jdGlvbigpe3JldHVybntjdXJyZW50Om51bGx9fSx0LmZvcndhcmRSZWY9ZnVuY3Rpb24oZSl7cmV0dXJueyQkdHlwZW9mOmMscmVuZGVyOmV9fSx0LmlzVmFsaWRFbGVtZW50PUwsdC5sYXp5PWZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjp1LF9wYXlsb2FkOntfc3RhdHVzOi0xLF9yZXN1bHQ6ZX0sX2luaXQ6U319LHQubWVtbz1mdW5jdGlvbihlLHQpe3JldHVybnskJHR5cGVvZjpzLHR5cGU6ZSxjb21wYXJlOnZvaWQgMD09PXQ/bnVsbDp0fX0sdC51c2VDYWxsYmFjaz1mdW5jdGlvbihlLHQpe3JldHVybiBIKCkudXNlQ2FsbGJhY2soZSx0KX0sdC51c2VDb250ZXh0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEgoKS51c2VDb250ZXh0KGUsdCl9LHQudXNlRGVidWdWYWx1ZT1mdW5jdGlvbigpe30sdC51c2VFZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSCgpLnVzZUVmZmVjdChlLHQpfSx0LnVzZUltcGVyYXRpdmVIYW5kbGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBIKCkudXNlSW1wZXJhdGl2ZUhhbmRsZShlLHQsbil9LHQudXNlTGF5b3V0RWZmZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEgoKS51c2VMYXlvdXRFZmZlY3QoZSx0KX0sdC51c2VNZW1vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEgoKS51c2VNZW1vKGUsdCl9LHQudXNlUmVkdWNlcj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIEgoKS51c2VSZWR1Y2VyKGUsdCxuKX0sdC51c2VSZWY9ZnVuY3Rpb24oZSl7cmV0dXJuIEgoKS51c2VSZWYoZSl9LHQudXNlU3RhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIEgoKS51c2VTdGF0ZShlKX0sdC52ZXJzaW9uPVwiMTcuMC4yXCJ9LDM3ODooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4oNTM1KX0sOTIxOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQse1NlcnZlclN0eWxlU2hlZXQ6KCk9PnB0LFN0eWxlU2hlZXRDb25zdW1lcjooKT0+aHQsU3R5bGVTaGVldENvbnRleHQ6KCk9PkN0LFN0eWxlU2hlZXRNYW5hZ2VyOigpPT52dCxUaGVtZUNvbnN1bWVyOigpPT5kdCxUaGVtZUNvbnRleHQ6KCk9PnV0LFRoZW1lUHJvdmlkZXI6KCk9PmZ0LF9fRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9IQVVOVEVEX0JZX1NQT09LWV9HSE9TVFM6KCk9Pk10LGNyZWF0ZUdsb2JhbFN0eWxlOigpPT54dCxjc3M6KCk9PlRlLGRlZmF1bHQ6KCk9Pmp0LGlzU3R5bGVkQ29tcG9uZW50OigpPT5GLGtleWZyYW1lczooKT0+THQsd2l0aFRoZW1lOigpPT5fdH0pO3ZhciByPW4oOTQ2KSxvPW4ubihyKSxpPW4oMjQ2KSxhPW4ubihpKSxsPW4oMzc4KTtjb25zdCBjPXthbmltYXRpb25JdGVyYXRpb25Db3VudDoxLGJvcmRlckltYWdlT3V0c2V0OjEsYm9yZGVySW1hZ2VTbGljZToxLGJvcmRlckltYWdlV2lkdGg6MSxib3hGbGV4OjEsYm94RmxleEdyb3VwOjEsYm94T3JkaW5hbEdyb3VwOjEsY29sdW1uQ291bnQ6MSxjb2x1bW5zOjEsZmxleDoxLGZsZXhHcm93OjEsZmxleFBvc2l0aXZlOjEsZmxleFNocmluazoxLGZsZXhOZWdhdGl2ZToxLGZsZXhPcmRlcjoxLGdyaWRSb3c6MSxncmlkUm93RW5kOjEsZ3JpZFJvd1NwYW46MSxncmlkUm93U3RhcnQ6MSxncmlkQ29sdW1uOjEsZ3JpZENvbHVtbkVuZDoxLGdyaWRDb2x1bW5TcGFuOjEsZ3JpZENvbHVtblN0YXJ0OjEsbXNHcmlkUm93OjEsbXNHcmlkUm93U3BhbjoxLG1zR3JpZENvbHVtbjoxLG1zR3JpZENvbHVtblNwYW46MSxmb250V2VpZ2h0OjEsbGluZUhlaWdodDoxLG9wYWNpdHk6MSxvcmRlcjoxLG9ycGhhbnM6MSx0YWJTaXplOjEsd2lkb3dzOjEsekluZGV4OjEsem9vbToxLFdlYmtpdExpbmVDbGFtcDoxLGZpbGxPcGFjaXR5OjEsZmxvb2RPcGFjaXR5OjEsc3RvcE9wYWNpdHk6MSxzdHJva2VEYXNoYXJyYXk6MSxzdHJva2VEYXNob2Zmc2V0OjEsc3Ryb2tlTWl0ZXJsaW1pdDoxLHN0cm9rZU9wYWNpdHk6MSxzdHJva2VXaWR0aDoxfTt2YXIgcz1uKDE4NSksdT1OdW1iZXIuaXNOYU58fGZ1bmN0aW9uKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlJiZlIT1lfTtmdW5jdGlvbiBkKGUsdCl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihyPWVbbl0sbz10W25dLCEocj09PW98fHUocikmJnUobykpKXJldHVybiExO3ZhciByLG87cmV0dXJuITB9Y29uc3QgZj1mdW5jdGlvbihlLHQpe3ZhciBuO3ZvaWQgMD09PXQmJih0PWQpO3ZhciByLG89W10saT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGE9W10sbD0wO2w8YXJndW1lbnRzLmxlbmd0aDtsKyspYVtsXT1hcmd1bWVudHNbbF07cmV0dXJuIGkmJm49PT10aGlzJiZ0KGEsbyl8fChyPWUuYXBwbHkodGhpcyxhKSxpPSEwLG49dGhpcyxvPWEpLHJ9fTt2YXIgcD0vXigoY2hpbGRyZW58ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUx8a2V5fHJlZnxhdXRvRm9jdXN8ZGVmYXVsdFZhbHVlfGRlZmF1bHRDaGVja2VkfGlubmVySFRNTHxzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmd8c3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nfHZhbHVlTGlua3xhY2NlcHR8YWNjZXB0Q2hhcnNldHxhY2Nlc3NLZXl8YWN0aW9ufGFsbG93fGFsbG93VXNlck1lZGlhfGFsbG93UGF5bWVudFJlcXVlc3R8YWxsb3dGdWxsU2NyZWVufGFsbG93VHJhbnNwYXJlbmN5fGFsdHxhc3luY3xhdXRvQ29tcGxldGV8YXV0b1BsYXl8Y2FwdHVyZXxjZWxsUGFkZGluZ3xjZWxsU3BhY2luZ3xjaGFsbGVuZ2V8Y2hhclNldHxjaGVja2VkfGNpdGV8Y2xhc3NJRHxjbGFzc05hbWV8Y29sc3xjb2xTcGFufGNvbnRlbnR8Y29udGVudEVkaXRhYmxlfGNvbnRleHRNZW51fGNvbnRyb2xzfGNvbnRyb2xzTGlzdHxjb29yZHN8Y3Jvc3NPcmlnaW58ZGF0YXxkYXRlVGltZXxkZWNvZGluZ3xkZWZhdWx0fGRlZmVyfGRpcnxkaXNhYmxlZHxkaXNhYmxlUGljdHVyZUluUGljdHVyZXxkb3dubG9hZHxkcmFnZ2FibGV8ZW5jVHlwZXxmb3JtfGZvcm1BY3Rpb258Zm9ybUVuY1R5cGV8Zm9ybU1ldGhvZHxmb3JtTm9WYWxpZGF0ZXxmb3JtVGFyZ2V0fGZyYW1lQm9yZGVyfGhlYWRlcnN8aGVpZ2h0fGhpZGRlbnxoaWdofGhyZWZ8aHJlZkxhbmd8aHRtbEZvcnxodHRwRXF1aXZ8aWR8aW5wdXRNb2RlfGludGVncml0eXxpc3xrZXlQYXJhbXN8a2V5VHlwZXxraW5kfGxhYmVsfGxhbmd8bGlzdHxsb2FkaW5nfGxvb3B8bG93fG1hcmdpbkhlaWdodHxtYXJnaW5XaWR0aHxtYXh8bWF4TGVuZ3RofG1lZGlhfG1lZGlhR3JvdXB8bWV0aG9kfG1pbnxtaW5MZW5ndGh8bXVsdGlwbGV8bXV0ZWR8bmFtZXxub25jZXxub1ZhbGlkYXRlfG9wZW58b3B0aW11bXxwYXR0ZXJufHBsYWNlaG9sZGVyfHBsYXlzSW5saW5lfHBvc3RlcnxwcmVsb2FkfHByb2ZpbGV8cmFkaW9Hcm91cHxyZWFkT25seXxyZWZlcnJlclBvbGljeXxyZWx8cmVxdWlyZWR8cmV2ZXJzZWR8cm9sZXxyb3dzfHJvd1NwYW58c2FuZGJveHxzY29wZXxzY29wZWR8c2Nyb2xsaW5nfHNlYW1sZXNzfHNlbGVjdGVkfHNoYXBlfHNpemV8c2l6ZXN8c2xvdHxzcGFufHNwZWxsQ2hlY2t8c3JjfHNyY0RvY3xzcmNMYW5nfHNyY1NldHxzdGFydHxzdGVwfHN0eWxlfHN1bW1hcnl8dGFiSW5kZXh8dGFyZ2V0fHRpdGxlfHR5cGV8dXNlTWFwfHZhbHVlfHdpZHRofHdtb2RlfHdyYXB8YWJvdXR8ZGF0YXR5cGV8aW5saXN0fHByZWZpeHxwcm9wZXJ0eXxyZXNvdXJjZXx0eXBlb2Z8dm9jYWJ8YXV0b0NhcGl0YWxpemV8YXV0b0NvcnJlY3R8YXV0b1NhdmV8Y29sb3J8aW5lcnR8aXRlbVByb3B8aXRlbVNjb3BlfGl0ZW1UeXBlfGl0ZW1JRHxpdGVtUmVmfG9ufHJlc3VsdHN8c2VjdXJpdHl8dW5zZWxlY3RhYmxlfGFjY2VudEhlaWdodHxhY2N1bXVsYXRlfGFkZGl0aXZlfGFsaWdubWVudEJhc2VsaW5lfGFsbG93UmVvcmRlcnxhbHBoYWJldGljfGFtcGxpdHVkZXxhcmFiaWNGb3JtfGFzY2VudHxhdHRyaWJ1dGVOYW1lfGF0dHJpYnV0ZVR5cGV8YXV0b1JldmVyc2V8YXppbXV0aHxiYXNlRnJlcXVlbmN5fGJhc2VsaW5lU2hpZnR8YmFzZVByb2ZpbGV8YmJveHxiZWdpbnxiaWFzfGJ5fGNhbGNNb2RlfGNhcEhlaWdodHxjbGlwfGNsaXBQYXRoVW5pdHN8Y2xpcFBhdGh8Y2xpcFJ1bGV8Y29sb3JJbnRlcnBvbGF0aW9ufGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnN8Y29sb3JQcm9maWxlfGNvbG9yUmVuZGVyaW5nfGNvbnRlbnRTY3JpcHRUeXBlfGNvbnRlbnRTdHlsZVR5cGV8Y3Vyc29yfGN4fGN5fGR8ZGVjZWxlcmF0ZXxkZXNjZW50fGRpZmZ1c2VDb25zdGFudHxkaXJlY3Rpb258ZGlzcGxheXxkaXZpc29yfGRvbWluYW50QmFzZWxpbmV8ZHVyfGR4fGR5fGVkZ2VNb2RlfGVsZXZhdGlvbnxlbmFibGVCYWNrZ3JvdW5kfGVuZHxleHBvbmVudHxleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkfGZpbGx8ZmlsbE9wYWNpdHl8ZmlsbFJ1bGV8ZmlsdGVyfGZpbHRlclJlc3xmaWx0ZXJVbml0c3xmbG9vZENvbG9yfGZsb29kT3BhY2l0eXxmb2N1c2FibGV8Zm9udEZhbWlseXxmb250U2l6ZXxmb250U2l6ZUFkanVzdHxmb250U3RyZXRjaHxmb250U3R5bGV8Zm9udFZhcmlhbnR8Zm9udFdlaWdodHxmb3JtYXR8ZnJvbXxmcnxmeHxmeXxnMXxnMnxnbHlwaE5hbWV8Z2x5cGhPcmllbnRhdGlvbkhvcml6b250YWx8Z2x5cGhPcmllbnRhdGlvblZlcnRpY2FsfGdseXBoUmVmfGdyYWRpZW50VHJhbnNmb3JtfGdyYWRpZW50VW5pdHN8aGFuZ2luZ3xob3JpekFkdlh8aG9yaXpPcmlnaW5YfGlkZW9ncmFwaGljfGltYWdlUmVuZGVyaW5nfGlufGluMnxpbnRlcmNlcHR8a3xrMXxrMnxrM3xrNHxrZXJuZWxNYXRyaXh8a2VybmVsVW5pdExlbmd0aHxrZXJuaW5nfGtleVBvaW50c3xrZXlTcGxpbmVzfGtleVRpbWVzfGxlbmd0aEFkanVzdHxsZXR0ZXJTcGFjaW5nfGxpZ2h0aW5nQ29sb3J8bGltaXRpbmdDb25lQW5nbGV8bG9jYWx8bWFya2VyRW5kfG1hcmtlck1pZHxtYXJrZXJTdGFydHxtYXJrZXJIZWlnaHR8bWFya2VyVW5pdHN8bWFya2VyV2lkdGh8bWFza3xtYXNrQ29udGVudFVuaXRzfG1hc2tVbml0c3xtYXRoZW1hdGljYWx8bW9kZXxudW1PY3RhdmVzfG9mZnNldHxvcGFjaXR5fG9wZXJhdG9yfG9yZGVyfG9yaWVudHxvcmllbnRhdGlvbnxvcmlnaW58b3ZlcmZsb3d8b3ZlcmxpbmVQb3NpdGlvbnxvdmVybGluZVRoaWNrbmVzc3xwYW5vc2UxfHBhaW50T3JkZXJ8cGF0aExlbmd0aHxwYXR0ZXJuQ29udGVudFVuaXRzfHBhdHRlcm5UcmFuc2Zvcm18cGF0dGVyblVuaXRzfHBvaW50ZXJFdmVudHN8cG9pbnRzfHBvaW50c0F0WHxwb2ludHNBdFl8cG9pbnRzQXRafHByZXNlcnZlQWxwaGF8cHJlc2VydmVBc3BlY3RSYXRpb3xwcmltaXRpdmVVbml0c3xyfHJhZGl1c3xyZWZYfHJlZll8cmVuZGVyaW5nSW50ZW50fHJlcGVhdENvdW50fHJlcGVhdER1cnxyZXF1aXJlZEV4dGVuc2lvbnN8cmVxdWlyZWRGZWF0dXJlc3xyZXN0YXJ0fHJlc3VsdHxyb3RhdGV8cnh8cnl8c2NhbGV8c2VlZHxzaGFwZVJlbmRlcmluZ3xzbG9wZXxzcGFjaW5nfHNwZWN1bGFyQ29uc3RhbnR8c3BlY3VsYXJFeHBvbmVudHxzcGVlZHxzcHJlYWRNZXRob2R8c3RhcnRPZmZzZXR8c3RkRGV2aWF0aW9ufHN0ZW1ofHN0ZW12fHN0aXRjaFRpbGVzfHN0b3BDb2xvcnxzdG9wT3BhY2l0eXxzdHJpa2V0aHJvdWdoUG9zaXRpb258c3RyaWtldGhyb3VnaFRoaWNrbmVzc3xzdHJpbmd8c3Ryb2tlfHN0cm9rZURhc2hhcnJheXxzdHJva2VEYXNob2Zmc2V0fHN0cm9rZUxpbmVjYXB8c3Ryb2tlTGluZWpvaW58c3Ryb2tlTWl0ZXJsaW1pdHxzdHJva2VPcGFjaXR5fHN0cm9rZVdpZHRofHN1cmZhY2VTY2FsZXxzeXN0ZW1MYW5ndWFnZXx0YWJsZVZhbHVlc3x0YXJnZXRYfHRhcmdldFl8dGV4dEFuY2hvcnx0ZXh0RGVjb3JhdGlvbnx0ZXh0UmVuZGVyaW5nfHRleHRMZW5ndGh8dG98dHJhbnNmb3JtfHUxfHUyfHVuZGVybGluZVBvc2l0aW9ufHVuZGVybGluZVRoaWNrbmVzc3x1bmljb2RlfHVuaWNvZGVCaWRpfHVuaWNvZGVSYW5nZXx1bml0c1BlckVtfHZBbHBoYWJldGljfHZIYW5naW5nfHZJZGVvZ3JhcGhpY3x2TWF0aGVtYXRpY2FsfHZhbHVlc3x2ZWN0b3JFZmZlY3R8dmVyc2lvbnx2ZXJ0QWR2WXx2ZXJ0T3JpZ2luWHx2ZXJ0T3JpZ2luWXx2aWV3Qm94fHZpZXdUYXJnZXR8dmlzaWJpbGl0eXx3aWR0aHN8d29yZFNwYWNpbmd8d3JpdGluZ01vZGV8eHx4SGVpZ2h0fHgxfHgyfHhDaGFubmVsU2VsZWN0b3J8eGxpbmtBY3R1YXRlfHhsaW5rQXJjcm9sZXx4bGlua0hyZWZ8eGxpbmtSb2xlfHhsaW5rU2hvd3x4bGlua1RpdGxlfHhsaW5rVHlwZXx4bWxCYXNlfHhtbG5zfHhtbG5zWGxpbmt8eG1sTGFuZ3x4bWxTcGFjZXx5fHkxfHkyfHlDaGFubmVsU2VsZWN0b3J8enx6b29tQW5kUGFufGZvcnxjbGFzc3xhdXRvZm9jdXMpfCgoW0RkXVtBYV1bVHRdW0FhXXxbQWFdW1JyXVtJaV1bQWFdfHgpLS4qKSkkLztjb25zdCBDPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdm9pZCAwPT09dFtuXSYmKHRbbl09ZShuKSksdFtuXX19KChmdW5jdGlvbihlKXtyZXR1cm4gcC50ZXN0KGUpfHwxMTE9PT1lLmNoYXJDb2RlQXQoMCkmJjExMD09PWUuY2hhckNvZGVBdCgxKSYmZS5jaGFyQ29kZUF0KDIpPDkxfSkpO2Z1bmN0aW9uIGgoZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKX1mdW5jdGlvbiB2KGUpe3JldHVyblwiVW5kZWZpbmVkXCI9PT1oKGUpfWZ1bmN0aW9uIGcoZSl7cmV0dXJuXCJOdWxsXCI9PT1oKGUpfWZ1bmN0aW9uIG0oZSl7cmV0dXJuXCJPYmplY3RcIj09PWgoZSkmJihlLmNvbnN0cnVjdG9yPT09T2JqZWN0JiZPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk9PT1PYmplY3QucHJvdG90eXBlKX1mdW5jdGlvbiB3KGUpe3JldHVyblwiQXJyYXlcIj09PWgoZSl9ZnVuY3Rpb24geShlKXtyZXR1cm5cIlN5bWJvbFwiPT09aChlKX12YXIgYix4LE8sTCxfO2I9Zyx4PXY7ZnVuY3Rpb24gTSgpe2Zvcih2YXIgZT0wLHQ9MCxuPWFyZ3VtZW50cy5sZW5ndGg7dDxuO3QrKyllKz1hcmd1bWVudHNbdF0ubGVuZ3RoO3ZhciByPUFycmF5KGUpLG89MDtmb3IodD0wO3Q8bjt0KyspZm9yKHZhciBpPWFyZ3VtZW50c1t0XSxhPTAsbD1pLmxlbmd0aDthPGw7YSsrLG8rKylyW29dPWlbYV07cmV0dXJuIHJ9ZnVuY3Rpb24gaihlLHQsbixyKXt2YXIgbz1yLnByb3BlcnR5SXNFbnVtZXJhYmxlKHQpP1wiZW51bWVyYWJsZVwiOlwibm9uZW51bWVyYWJsZVwiO1wiZW51bWVyYWJsZVwiPT09byYmKGVbdF09biksXCJub25lbnVtZXJhYmxlXCI9PT1vJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9ZnVuY3Rpb24gRShlLHQsbil7aWYoIW0odCkpcmV0dXJuIG4mJncobikmJm4uZm9yRWFjaCgoZnVuY3Rpb24obil7dD1uKGUsdCl9KSksdDt2YXIgcj17fTttKGUpJiYocj1NKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSkpLnJlZHVjZSgoZnVuY3Rpb24obixyKXt2YXIgbz1lW3JdO3JldHVybigheShyKSYmIU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmluY2x1ZGVzKHIpfHx5KHIpJiYhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KS5pbmNsdWRlcyhyKSkmJmoobixyLG8sZSksbn0pLHt9KSk7cmV0dXJuIE0oT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCksT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KSkucmVkdWNlKChmdW5jdGlvbihyLG8pe3ZhciBpPXRbb10sYT1tKGUpP2Vbb106dm9pZCAwO3JldHVybiBuJiZ3KG4pJiZuLmZvckVhY2goKGZ1bmN0aW9uKGUpe2k9ZShhLGkpfSkpLHZvaWQgMCE9PWEmJm0oaSkmJihpPUUoYSxpLG4pKSxqKHIsbyxpLHQpLHJ9KSxyKX1jb25zdCBTPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3ZhciByPW51bGwsbz1lO3JldHVybiBtKGUpJiZlLmV4dGVuc2lvbnMmJjE9PT1PYmplY3Qua2V5cyhlKS5sZW5ndGgmJihvPXt9LHI9ZS5leHRlbnNpb25zKSx0LnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gRShlLHQscil9KSxvKX07dmFyIFA9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W2VbMF1dLHI9MCxvPXQubGVuZ3RoO3I8bztyKz0xKW4ucHVzaCh0W3JdLGVbcisxXSk7cmV0dXJuIG59LEg9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0saz1mdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9LFY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxSPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LEk9ZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0sWj1mdW5jdGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4hdHx8XCJvYmplY3RcIiE9dHlwZW9mIHQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHQ/ZTp0fSxUPWZ1bmN0aW9uKGUpe3JldHVyblwib2JqZWN0XCI9PT0odm9pZCAwPT09ZT9cInVuZGVmaW5lZFwiOkgoZSkpJiZlLmNvbnN0cnVjdG9yPT09T2JqZWN0fSxBPU9iamVjdC5mcmVlemUoW10pLEQ9T2JqZWN0LmZyZWV6ZSh7fSk7ZnVuY3Rpb24gQihlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlfWZ1bmN0aW9uICQoZSl7cmV0dXJuIGUuZGlzcGxheU5hbWV8fGUubmFtZXx8XCJDb21wb25lbnRcIn1mdW5jdGlvbiBGKGUpe3JldHVybiBlJiZcInN0cmluZ1wiPT10eXBlb2YgZS5zdHlsZWRDb21wb25lbnRJZH12YXIgTj1cInVuZGVmaW5lZFwiIT10eXBlb2YgcHJvY2VzcyYmKHByb2Nlc3MuZW52LlJFQUNUX0FQUF9TQ19BVFRSfHxwcm9jZXNzLmVudi5TQ19BVFRSKXx8XCJkYXRhLXN0eWxlZFwiLHo9XCJkYXRhLXN0eWxlZC12ZXJzaW9uXCIsVz1cImRhdGEtc3R5bGVkLXN0cmVhbWVkXCIsRz1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZcIkhUTUxFbGVtZW50XCJpbiB3aW5kb3csVT1cImJvb2xlYW5cIj09dHlwZW9mIFNDX0RJU0FCTEVfU1BFRURZJiZTQ19ESVNBQkxFX1NQRUVEWXx8XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJihwcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFl8fHByb2Nlc3MuZW52LlNDX0RJU0FCTEVfU1BFRURZKXx8ITEscT17fTt2YXIgWT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe2sodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPUFycmF5KHI+MT9yLTE6MCksaT0xO2k8cjtpKyspb1tpLTFdPWFyZ3VtZW50c1tpXTt2YXIgYT1aKHRoaXMsZS5jYWxsKHRoaXMsXCJBbiBlcnJvciBvY2N1cnJlZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zdHlsZWQtY29tcG9uZW50cy9zdHlsZWQtY29tcG9uZW50cy9ibG9iL21hc3Rlci9wYWNrYWdlcy9zdHlsZWQtY29tcG9uZW50cy9zcmMvdXRpbHMvZXJyb3JzLm1kI1wiK24rXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXCIrKG8ubGVuZ3RoPjA/XCIgQWRkaXRpb25hbCBhcmd1bWVudHM6IFwiK28uam9pbihcIiwgXCIpOlwiXCIpKSk7cmV0dXJuIFooYSl9cmV0dXJuIEkodCxlKSx0fShFcnJvciksSz0vXlteXFxTXFxuXSo/XFwvXFwqIHNjLWNvbXBvbmVudC1pZDpcXHMqKFxcUyspXFxzK1xcKlxcLy9nbSxYPWZ1bmN0aW9uKGUpe3ZhciB0PVwiXCIrKGV8fFwiXCIpLG49W107cmV0dXJuIHQucmVwbGFjZShLLChmdW5jdGlvbihlLHQscil7cmV0dXJuIG4ucHVzaCh7Y29tcG9uZW50SWQ6dCxtYXRjaEluZGV4OnJ9KSxlfSkpLG4ubWFwKChmdW5jdGlvbihlLHIpe3ZhciBvPWUuY29tcG9uZW50SWQsaT1lLm1hdGNoSW5kZXgsYT1uW3IrMV07cmV0dXJue2NvbXBvbmVudElkOm8sY3NzRnJvbURPTTphP3Quc2xpY2UoaSxhLm1hdGNoSW5kZXgpOnQuc2xpY2UoaSl9fSkpfSxRPS9eXFxzKlxcL1xcLy4qJC9nbSxKPW5ldyhvKCkpKHtnbG9iYWw6ITEsY2FzY2FkZTohMCxrZXlmcmFtZTohMSxwcmVmaXg6ITEsY29tcHJlc3M6ITEsc2VtaWNvbG9uOiEwfSksZWU9bmV3KG8oKSkoe2dsb2JhbDohMSxjYXNjYWRlOiEwLGtleWZyYW1lOiExLHByZWZpeDohMCxjb21wcmVzczohMSxzZW1pY29sb246ITF9KSx0ZT1bXSxuZT1mdW5jdGlvbihlKXtpZigtMj09PWUpe3ZhciB0PXRlO3JldHVybiB0ZT1bXSx0fX0scmU9YSgpKChmdW5jdGlvbihlKXt0ZS5wdXNoKGUpfSkpLG9lPXZvaWQgMCxpZT12b2lkIDAsYWU9dm9pZCAwLGxlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD4wJiYtMSE9PW4uc2xpY2UoMCx0KS5pbmRleE9mKGllKSYmbi5zbGljZSh0LWllLmxlbmd0aCx0KSE9PWllP1wiLlwiK29lOmV9O2VlLnVzZShbZnVuY3Rpb24oZSx0LG4pezI9PT1lJiZuLmxlbmd0aCYmblswXS5sYXN0SW5kZXhPZihpZSk+MCYmKG5bMF09blswXS5yZXBsYWNlKGFlLGxlKSl9LHJlLG5lXSksSi51c2UoW3JlLG5lXSk7dmFyIGNlPWZ1bmN0aW9uKGUpe3JldHVybiBKKFwiXCIsZSl9O2Z1bmN0aW9uIHNlKGUsdCxuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106XCImXCIsbz1lLmpvaW4oXCJcIikucmVwbGFjZShRLFwiXCIpLGk9dCYmbj9uK1wiIFwiK3QrXCIgeyBcIitvK1wiIH1cIjpvO3JldHVybiBvZT1yLGllPXQsYWU9bmV3IFJlZ0V4cChcIlxcXFxcIitpZStcIlxcXFxiXCIsXCJnXCIpLGVlKG58fCF0P1wiXCI6dCxpKX12YXIgdWU9ZnVuY3Rpb24oKXtyZXR1cm4gbi5uY30sZGU9ZnVuY3Rpb24oZSx0LG4pe24mJigoZVt0XXx8KGVbdF09T2JqZWN0LmNyZWF0ZShudWxsKSkpW25dPSEwKX0sZmU9ZnVuY3Rpb24oZSx0KXtlW3RdPU9iamVjdC5jcmVhdGUobnVsbCl9LHBlPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiB2b2lkIDAhPT1lW3RdJiZlW3RdW25dfX0sQ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIjtmb3IodmFyIG4gaW4gZSl0Kz1PYmplY3Qua2V5cyhlW25dKS5qb2luKFwiIFwiKStcIiBcIjtyZXR1cm4gdC50cmltKCl9LGhlPWZ1bmN0aW9uKGUpe2lmKGUuc2hlZXQpcmV0dXJuIGUuc2hlZXQ7Zm9yKHZhciB0PWUub3duZXJEb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGgsbj0wO248dDtuKz0xKXt2YXIgcj1lLm93bmVyRG9jdW1lbnQuc3R5bGVTaGVldHNbbl07aWYoci5vd25lck5vZGU9PT1lKXJldHVybiByfXRocm93IG5ldyBZKDEwKX0sdmU9ZnVuY3Rpb24oZSx0LG4pe2lmKCF0KXJldHVybiExO3ZhciByPWUuY3NzUnVsZXMubGVuZ3RoO3RyeXtlLmluc2VydFJ1bGUodCxuPD1yP246cil9Y2F0Y2goZSl7cmV0dXJuITF9cmV0dXJuITB9LGdlPWZ1bmN0aW9uKGUpe3JldHVyblwiXFxuLyogc2MtY29tcG9uZW50LWlkOiBcIitlK1wiICovXFxuXCJ9LG1lPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAscj0wO3I8PXQ7cis9MSluKz1lW3JdO3JldHVybiBufSx3ZT1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgcj11ZSgpO3JldHVyblwiPHN0eWxlIFwiK1tyJiYnbm9uY2U9XCInK3IrJ1wiJyxOKyc9XCInK0NlKHQpKydcIicseisnPVwiNC40LjFcIicsbl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpK1wiPlwiK2UoKStcIjwvc3R5bGU+XCJ9fSx5ZT1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuLHI9KChuPXt9KVtOXT1DZSh0KSxuW3pdPVwiNC40LjFcIixuKSxvPXVlKCk7cmV0dXJuIG8mJihyLm5vbmNlPW8pLGwuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsUih7fSxyLHtkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOmUoKX19KSl9fSxiZT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMoZSl9fSx4ZT1mdW5jdGlvbihlLHQpe3JldHVybiBlLmNyZWF0ZVRleHROb2RlKGdlKHQpKX0sT2U9ZnVuY3Rpb24gZSh0LG4pe3ZhciByPXZvaWQgMD09PXQ/T2JqZWN0LmNyZWF0ZShudWxsKTp0LG89dm9pZCAwPT09bj9PYmplY3QuY3JlYXRlKG51bGwpOm4saT1mdW5jdGlvbihlKXt2YXIgdD1vW2VdO3JldHVybiB2b2lkIDAhPT10P3Q6b1tlXT1bXCJcIl19LGE9ZnVuY3Rpb24oKXt2YXIgZT1cIlwiO2Zvcih2YXIgdCBpbiBvKXt2YXIgbj1vW3RdWzBdO24mJihlKz1nZSh0KStuKX1yZXR1cm4gZX0sbD17Y2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcih2YXIgbiBpbiBlKXRbbl09Uih7fSxlW25dKTtyZXR1cm4gdH0ociksbj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcih2YXIgaSBpbiBvKW5baV09W29baV1bMF1dO3JldHVybiBlKHQsbil9LGNzczphLGdldElkczpiZShvKSxoYXNOYW1lRm9ySWQ6cGUociksaW5zZXJ0TWFya2VyOmksaW5zZXJ0UnVsZXM6ZnVuY3Rpb24oZSx0LG4pe2koZSlbMF0rPXQuam9pbihcIiBcIiksZGUocixlLG4pfSxyZW1vdmVSdWxlczpmdW5jdGlvbihlKXt2YXIgdD1vW2VdO3ZvaWQgMCE9PXQmJih0WzBdPVwiXCIsZmUocixlKSl9LHNlYWxlZDohMSxzdHlsZVRhZzpudWxsLHRvRWxlbWVudDp5ZShhLHIpLHRvSFRNTDp3ZShhLHIpfTtyZXR1cm4gbH0sTGU9ZnVuY3Rpb24oZSx0LG4scixvKXtpZihHJiYhbil7dmFyIGk9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWRvY3VtZW50O2U/cj1lLm93bmVyRG9jdW1lbnQ6dCYmKHI9dC5vd25lckRvY3VtZW50KTt2YXIgbz1yLmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtvLnNldEF0dHJpYnV0ZShOLFwiXCIpLG8uc2V0QXR0cmlidXRlKHosXCI0LjQuMVwiKTt2YXIgaT11ZSgpO2lmKGkmJm8uc2V0QXR0cmlidXRlKFwibm9uY2VcIixpKSxvLmFwcGVuZENoaWxkKHIuY3JlYXRlVGV4dE5vZGUoXCJcIikpLGUmJiF0KWUuYXBwZW5kQ2hpbGQobyk7ZWxzZXtpZighdHx8IWV8fCF0LnBhcmVudE5vZGUpdGhyb3cgbmV3IFkoNik7dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShvLG4/dDp0Lm5leHRTaWJsaW5nKX1yZXR1cm4gb30oZSx0LHIpO3JldHVybiBVP2Z1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPU9iamVjdC5jcmVhdGUobnVsbCksbz12b2lkIDAhPT10LGk9ITEsYT1mdW5jdGlvbih0KXt2YXIgbz1yW3RdO3JldHVybiB2b2lkIDAhPT1vP286KHJbdF09eGUoZS5vd25lckRvY3VtZW50LHQpLGUuYXBwZW5kQ2hpbGQoclt0XSksblt0XT1PYmplY3QuY3JlYXRlKG51bGwpLHJbdF0pfSxsPWZ1bmN0aW9uKCl7dmFyIGU9XCJcIjtmb3IodmFyIHQgaW4gcillKz1yW3RdLmRhdGE7cmV0dXJuIGV9O3JldHVybntjbG9uZTpmdW5jdGlvbigpe3Rocm93IG5ldyBZKDUpfSxjc3M6bCxnZXRJZHM6YmUociksaGFzTmFtZUZvcklkOnBlKG4pLGluc2VydE1hcmtlcjphLGluc2VydFJ1bGVzOmZ1bmN0aW9uKGUscixsKXtmb3IodmFyIGM9YShlKSxzPVtdLHU9ci5sZW5ndGgsZD0wO2Q8dTtkKz0xKXt2YXIgZj1yW2RdLHA9bztpZihwJiYtMSE9PWYuaW5kZXhPZihcIkBpbXBvcnRcIikpcy5wdXNoKGYpO2Vsc2V7cD0hMTt2YXIgQz1kPT09dS0xP1wiXCI6XCIgXCI7Yy5hcHBlbmREYXRhKFwiXCIrZitDKX19ZGUobixlLGwpLG8mJnMubGVuZ3RoPjAmJihpPSEwLHQoKS5pbnNlcnRSdWxlcyhlK1wiLWltcG9ydFwiLHMpKX0scmVtb3ZlUnVsZXM6ZnVuY3Rpb24oYSl7dmFyIGw9clthXTtpZih2b2lkIDAhPT1sKXt2YXIgYz14ZShlLm93bmVyRG9jdW1lbnQsYSk7ZS5yZXBsYWNlQ2hpbGQoYyxsKSxyW2FdPWMsZmUobixhKSxvJiZpJiZ0KCkucmVtb3ZlUnVsZXMoYStcIi1pbXBvcnRcIil9fSxzZWFsZWQ6ITEsc3R5bGVUYWc6ZSx0b0VsZW1lbnQ6eWUobCxuKSx0b0hUTUw6d2UobCxuKX19KGksbyk6ZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9T2JqZWN0LmNyZWF0ZShudWxsKSxvPVtdLGk9dm9pZCAwIT09dCxhPSExLGw9ZnVuY3Rpb24oZSl7dmFyIHQ9cltlXTtyZXR1cm4gdm9pZCAwIT09dD90OihyW2VdPW8ubGVuZ3RoLG8ucHVzaCgwKSxmZShuLGUpLHJbZV0pfSxjPWZ1bmN0aW9uKCl7dmFyIHQ9aGUoZSkuY3NzUnVsZXMsbj1cIlwiO2Zvcih2YXIgaSBpbiByKXtuKz1nZShpKTtmb3IodmFyIGE9cltpXSxsPW1lKG8sYSksYz1sLW9bYV07YzxsO2MrPTEpe3ZhciBzPXRbY107dm9pZCAwIT09cyYmKG4rPXMuY3NzVGV4dCl9fXJldHVybiBufTtyZXR1cm57Y2xvbmU6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgWSg1KX0sY3NzOmMsZ2V0SWRzOmJlKHIpLGhhc05hbWVGb3JJZDpwZShuKSxpbnNlcnRNYXJrZXI6bCxpbnNlcnRSdWxlczpmdW5jdGlvbihyLGMscyl7Zm9yKHZhciB1PWwociksZD1oZShlKSxmPW1lKG8sdSkscD0wLEM9W10saD1jLmxlbmd0aCx2PTA7djxoO3YrPTEpe3ZhciBnPWNbdl0sbT1pO20mJi0xIT09Zy5pbmRleE9mKFwiQGltcG9ydFwiKT9DLnB1c2goZyk6dmUoZCxnLGYrcCkmJihtPSExLHArPTEpfWkmJkMubGVuZ3RoPjAmJihhPSEwLHQoKS5pbnNlcnRSdWxlcyhyK1wiLWltcG9ydFwiLEMpKSxvW3VdKz1wLGRlKG4scixzKX0scmVtb3ZlUnVsZXM6ZnVuY3Rpb24obCl7dmFyIGM9cltsXTtpZih2b2lkIDAhPT1jJiYhMSE9PWUuaXNDb25uZWN0ZWQpe3ZhciBzPW9bY107IWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9dC1uLG89dDtvPnI7by09MSllLmRlbGV0ZVJ1bGUobyl9KGhlKGUpLG1lKG8sYyktMSxzKSxvW2NdPTAsZmUobixsKSxpJiZhJiZ0KCkucmVtb3ZlUnVsZXMobCtcIi1pbXBvcnRcIil9fSxzZWFsZWQ6ITEsc3R5bGVUYWc6ZSx0b0VsZW1lbnQ6eWUoYyxuKSx0b0hUTUw6d2UoYyxuKX19KGksbyl9cmV0dXJuIE9lKCl9LF9lPS9cXHMrLyxNZT12b2lkIDA7TWU9Rz9VPzQwOjFlMzotMTt2YXIgamU9MCxFZT12b2lkIDAsU2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dmFyIHQ9dGhpcyxuPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpHP2RvY3VtZW50LmhlYWQ6bnVsbCxyPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07ayh0aGlzLGUpLHRoaXMuZ2V0SW1wb3J0UnVsZVRhZz1mdW5jdGlvbigpe3ZhciBlPXQuaW1wb3J0UnVsZVRhZztpZih2b2lkIDAhPT1lKXJldHVybiBlO3ZhciBuPXQudGFnc1swXTtyZXR1cm4gdC5pbXBvcnRSdWxlVGFnPUxlKHQudGFyZ2V0LG4/bi5zdHlsZVRhZzpudWxsLHQuZm9yY2VTZXJ2ZXIsITApfSxqZSs9MSx0aGlzLmlkPWplLHRoaXMuZm9yY2VTZXJ2ZXI9cix0aGlzLnRhcmdldD1yP251bGw6bix0aGlzLnRhZ01hcD17fSx0aGlzLmRlZmVycmVkPXt9LHRoaXMucmVoeWRyYXRlZE5hbWVzPXt9LHRoaXMuaWdub3JlUmVoeWRyYXRlZE5hbWVzPXt9LHRoaXMudGFncz1bXSx0aGlzLmNhcGFjaXR5PTEsdGhpcy5jbG9uZXM9W119cmV0dXJuIGUucHJvdG90eXBlLnJlaHlkcmF0ZT1mdW5jdGlvbigpe2lmKCFHfHx0aGlzLmZvcmNlU2VydmVyKXJldHVybiB0aGlzO3ZhciBlPVtdLHQ9W10sbj0hMSxyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzdHlsZVtcIitOK1wiXVtcIit6Kyc9XCI0LjQuMVwiXScpLG89ci5sZW5ndGg7aWYoIW8pcmV0dXJuIHRoaXM7Zm9yKHZhciBpPTA7aTxvO2krPTEpe3ZhciBhPXJbaV07bnx8KG49ISFhLmdldEF0dHJpYnV0ZShXKSk7Zm9yKHZhciBsLGM9KGEuZ2V0QXR0cmlidXRlKE4pfHxcIlwiKS50cmltKCkuc3BsaXQoX2UpLHM9Yy5sZW5ndGgsdT0wO3U8czt1Kz0xKWw9Y1t1XSx0aGlzLnJlaHlkcmF0ZWROYW1lc1tsXT0hMDt0LnB1c2guYXBwbHkodCxYKGEudGV4dENvbnRlbnQpKSxlLnB1c2goYSl9dmFyIGQ9dC5sZW5ndGg7aWYoIWQpcmV0dXJuIHRoaXM7dmFyIGY9dGhpcy5tYWtlVGFnKG51bGwpOyFmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsbz1uLmxlbmd0aDtyPG87cis9MSl7dmFyIGk9bltyXSxhPWkuY29tcG9uZW50SWQsbD1pLmNzc0Zyb21ET00sYz1jZShsKTtlLmluc2VydFJ1bGVzKGEsYyl9Zm9yKHZhciBzPTAsdT10Lmxlbmd0aDtzPHU7cys9MSl7dmFyIGQ9dFtzXTtkLnBhcmVudE5vZGUmJmQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkKX19KGYsZSx0KSx0aGlzLmNhcGFjaXR5PU1hdGgubWF4KDEsTWUtZCksdGhpcy50YWdzLnB1c2goZik7Zm9yKHZhciBwPTA7cDxkO3ArPTEpdGhpcy50YWdNYXBbdFtwXS5jb21wb25lbnRJZF09ZjtyZXR1cm4gdGhpc30sZS5yZXNldD1mdW5jdGlvbigpe0VlPW5ldyBlKHZvaWQgMCxhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdKS5yZWh5ZHJhdGUoKX0sZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgZSh0aGlzLnRhcmdldCx0aGlzLmZvcmNlU2VydmVyKTtyZXR1cm4gdGhpcy5jbG9uZXMucHVzaCh0KSx0LnRhZ3M9dGhpcy50YWdzLm1hcCgoZnVuY3Rpb24oZSl7Zm9yKHZhciBuPWUuZ2V0SWRzKCkscj1lLmNsb25lKCksbz0wO288bi5sZW5ndGg7bys9MSl0LnRhZ01hcFtuW29dXT1yO3JldHVybiByfSkpLHQucmVoeWRyYXRlZE5hbWVzPVIoe30sdGhpcy5yZWh5ZHJhdGVkTmFtZXMpLHQuZGVmZXJyZWQ9Uih7fSx0aGlzLmRlZmVycmVkKSx0fSxlLnByb3RvdHlwZS5zZWFsQWxsVGFncz1mdW5jdGlvbigpe3RoaXMuY2FwYWNpdHk9MSx0aGlzLnRhZ3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5zZWFsZWQ9ITB9KSl9LGUucHJvdG90eXBlLm1ha2VUYWc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZT9lLnN0eWxlVGFnOm51bGw7cmV0dXJuIExlKHRoaXMudGFyZ2V0LHQsdGhpcy5mb3JjZVNlcnZlciwhMSx0aGlzLmdldEltcG9ydFJ1bGVUYWcpfSxlLnByb3RvdHlwZS5nZXRUYWdGb3JJZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnRhZ01hcFtlXTtpZih2b2lkIDAhPT10JiYhdC5zZWFsZWQpcmV0dXJuIHQ7dmFyIG49dGhpcy50YWdzW3RoaXMudGFncy5sZW5ndGgtMV07cmV0dXJuIHRoaXMuY2FwYWNpdHktPTEsMD09PXRoaXMuY2FwYWNpdHkmJih0aGlzLmNhcGFjaXR5PU1lLG49dGhpcy5tYWtlVGFnKG4pLHRoaXMudGFncy5wdXNoKG4pKSx0aGlzLnRhZ01hcFtlXT1ufSxlLnByb3RvdHlwZS5oYXNJZD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy50YWdNYXBbZV19LGUucHJvdG90eXBlLmhhc05hbWVGb3JJZD1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMD09PXRoaXMuaWdub3JlUmVoeWRyYXRlZE5hbWVzW2VdJiZ0aGlzLnJlaHlkcmF0ZWROYW1lc1t0XSlyZXR1cm4hMDt2YXIgbj10aGlzLnRhZ01hcFtlXTtyZXR1cm4gdm9pZCAwIT09biYmbi5oYXNOYW1lRm9ySWQoZSx0KX0sZS5wcm90b3R5cGUuZGVmZXJyZWRJbmplY3Q9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT10aGlzLnRhZ01hcFtlXSl7Zm9yKHZhciBuPXRoaXMuY2xvbmVzLHI9MDtyPG4ubGVuZ3RoO3IrPTEpbltyXS5kZWZlcnJlZEluamVjdChlLHQpO3RoaXMuZ2V0VGFnRm9ySWQoZSkuaW5zZXJ0TWFya2VyKGUpLHRoaXMuZGVmZXJyZWRbZV09dH19LGUucHJvdG90eXBlLmluamVjdD1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPXRoaXMuY2xvbmVzLG89MDtvPHIubGVuZ3RoO28rPTEpcltvXS5pbmplY3QoZSx0LG4pO3ZhciBpPXRoaXMuZ2V0VGFnRm9ySWQoZSk7aWYodm9pZCAwIT09dGhpcy5kZWZlcnJlZFtlXSl7dmFyIGE9dGhpcy5kZWZlcnJlZFtlXS5jb25jYXQodCk7aS5pbnNlcnRSdWxlcyhlLGEsbiksdGhpcy5kZWZlcnJlZFtlXT12b2lkIDB9ZWxzZSBpLmluc2VydFJ1bGVzKGUsdCxuKX0sZS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudGFnTWFwW2VdO2lmKHZvaWQgMCE9PXQpe2Zvcih2YXIgbj10aGlzLmNsb25lcyxyPTA7cjxuLmxlbmd0aDtyKz0xKW5bcl0ucmVtb3ZlKGUpO3QucmVtb3ZlUnVsZXMoZSksdGhpcy5pZ25vcmVSZWh5ZHJhdGVkTmFtZXNbZV09ITAsdGhpcy5kZWZlcnJlZFtlXT12b2lkIDB9fSxlLnByb3RvdHlwZS50b0hUTUw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWdzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9IVE1MKCl9KSkuam9pbihcIlwiKX0sZS5wcm90b3R5cGUudG9SZWFjdEVsZW1lbnRzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5pZDtyZXR1cm4gdGhpcy50YWdzLm1hcCgoZnVuY3Rpb24odCxuKXt2YXIgcj1cInNjLVwiK2UrXCItXCIrbjtyZXR1cm4oMCxsLmNsb25lRWxlbWVudCkodC50b0VsZW1lbnQoKSx7a2V5OnJ9KX0pKX0sVihlLG51bGwsW3trZXk6XCJtYXN0ZXJcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRWV8fChFZT0obmV3IGUpLnJlaHlkcmF0ZSgpKX19LHtrZXk6XCJpbnN0YW5jZVwiLGdldDpmdW5jdGlvbigpe3JldHVybiBlLm1hc3Rlcn19XSksZX0oKSxQZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuKXt2YXIgcj10aGlzO2sodGhpcyxlKSx0aGlzLmluamVjdD1mdW5jdGlvbihlKXtlLmhhc05hbWVGb3JJZChyLmlkLHIubmFtZSl8fGUuaW5qZWN0KHIuaWQsci5ydWxlcyxyLm5hbWUpfSx0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IFkoMTIsU3RyaW5nKHIubmFtZSkpfSx0aGlzLm5hbWU9dCx0aGlzLnJ1bGVzPW4sdGhpcy5pZD1cInNjLWtleWZyYW1lcy1cIit0fXJldHVybiBlLnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZX0sZX0oKSxIZT0vKFtBLVpdKS9nLGtlPS9ebXMtLztmdW5jdGlvbiBWZShlKXtyZXR1cm4gZS5yZXBsYWNlKEhlLFwiLSQxXCIpLnRvTG93ZXJDYXNlKCkucmVwbGFjZShrZSxcIi1tcy1cIil9dmFyIFJlPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHwhMT09PWV8fFwiXCI9PT1lfSxJZT1mdW5jdGlvbiBlKHQsbil7dmFyIHI9W107cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe2lmKCFSZSh0W25dKSl7aWYoVCh0W25dKSlyZXR1cm4gci5wdXNoLmFwcGx5KHIsZSh0W25dLG4pKSxyO2lmKEIodFtuXSkpcmV0dXJuIHIucHVzaChWZShuKStcIjpcIix0W25dLFwiO1wiKSxyO3IucHVzaChWZShuKStcIjogXCIrKG89biwobnVsbD09KGk9dFtuXSl8fFwiYm9vbGVhblwiPT10eXBlb2YgaXx8XCJcIj09PWk/XCJcIjpcIm51bWJlclwiIT10eXBlb2YgaXx8MD09PWl8fG8gaW4gYz9TdHJpbmcoaSkudHJpbSgpOmkrXCJweFwiKStcIjtcIikpfXZhciBvLGk7cmV0dXJuIHJ9KSksbj9bbitcIiB7XCJdLmNvbmNhdChyLFtcIn1cIl0pOnJ9O2Z1bmN0aW9uIFplKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHIsbz1bXSxpPTAsYT1lLmxlbmd0aDtpPGE7aSs9MSludWxsIT09KHI9WmUoZVtpXSx0LG4pKSYmKEFycmF5LmlzQXJyYXkocik/by5wdXNoLmFwcGx5KG8scik6by5wdXNoKHIpKTtyZXR1cm4gb31yZXR1cm4gUmUoZSk/bnVsbDpGKGUpP1wiLlwiK2Uuc3R5bGVkQ29tcG9uZW50SWQ6QihlKT9cImZ1bmN0aW9uXCIhPXR5cGVvZihsPWUpfHxsLnByb3RvdHlwZSYmbC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudHx8IXQ/ZTpaZShlKHQpLHQsbik6ZSBpbnN0YW5jZW9mIFBlP24/KGUuaW5qZWN0KG4pLGUuZ2V0TmFtZSgpKTplOlQoZSk/SWUoZSk6ZS50b1N0cmluZygpO3ZhciBsfWZ1bmN0aW9uIFRlKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkodD4xP3QtMTowKSxyPTE7cjx0O3IrKyluW3ItMV09YXJndW1lbnRzW3JdO3JldHVybiBCKGUpfHxUKGUpP1plKFAoQSxbZV0uY29uY2F0KG4pKSk6WmUoUChlLG4pKX1mdW5jdGlvbiBBZShlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpEO2lmKCEoMCxzLmlzVmFsaWRFbGVtZW50VHlwZSkodCkpdGhyb3cgbmV3IFkoMSxTdHJpbmcodCkpO3ZhciByPWZ1bmN0aW9uKCl7cmV0dXJuIGUodCxuLFRlLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKX07cmV0dXJuIHIud2l0aENvbmZpZz1mdW5jdGlvbihyKXtyZXR1cm4gQWUoZSx0LFIoe30sbixyKSl9LHIuYXR0cnM9ZnVuY3Rpb24ocil7cmV0dXJuIEFlKGUsdCxSKHt9LG4se2F0dHJzOkFycmF5LnByb3RvdHlwZS5jb25jYXQobi5hdHRycyxyKS5maWx0ZXIoQm9vbGVhbil9KSl9LHJ9ZnVuY3Rpb24gRGUoZSl7Zm9yKHZhciB0LG49MHxlLmxlbmd0aCxyPTB8bixvPTA7bj49NDspdD0xNTQwNDgzNDc3Kig2NTUzNSYodD0yNTUmZS5jaGFyQ29kZUF0KG8pfCgyNTUmZS5jaGFyQ29kZUF0KCsrbykpPDw4fCgyNTUmZS5jaGFyQ29kZUF0KCsrbykpPDwxNnwoMjU1JmUuY2hhckNvZGVBdCgrK28pKTw8MjQpKSsoKDE1NDA0ODM0NzcqKHQ+Pj4xNikmNjU1MzUpPDwxNikscj0xNTQwNDgzNDc3Kig2NTUzNSZyKSsoKDE1NDA0ODM0NzcqKHI+Pj4xNikmNjU1MzUpPDwxNileKHQ9MTU0MDQ4MzQ3NyooNjU1MzUmKHRePXQ+Pj4yNCkpKygoMTU0MDQ4MzQ3NyoodD4+PjE2KSY2NTUzNSk8PDE2KSksbi09NCwrK287c3dpdGNoKG4pe2Nhc2UgMzpyXj0oMjU1JmUuY2hhckNvZGVBdChvKzIpKTw8MTY7Y2FzZSAyOnJePSgyNTUmZS5jaGFyQ29kZUF0KG8rMSkpPDw4O2Nhc2UgMTpyPTE1NDA0ODM0NzcqKDY1NTM1JihyXj0yNTUmZS5jaGFyQ29kZUF0KG8pKSkrKCgxNTQwNDgzNDc3KihyPj4+MTYpJjY1NTM1KTw8MTYpfXJldHVybigocj0xNTQwNDgzNDc3Kig2NTUzNSYocl49cj4+PjEzKSkrKCgxNTQwNDgzNDc3KihyPj4+MTYpJjY1NTM1KTw8MTYpKV5yPj4+MTUpPj4+MH12YXIgQmU9NTIsJGU9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZSsoZT4yNT8zOTo5NykpfTtmdW5jdGlvbiBGZShlKXt2YXIgdD1cIlwiLG49dm9pZCAwO2ZvcihuPWU7bj5CZTtuPU1hdGguZmxvb3Iobi9CZSkpdD0kZShuJUJlKSt0O3JldHVybiAkZShuJUJlKSt0fWZ1bmN0aW9uIE5lKGUsdCl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKz0xKXt2YXIgcj1lW25dO2lmKEFycmF5LmlzQXJyYXkocikmJiFOZShyLHQpKXJldHVybiExO2lmKEIocikmJiFGKHIpKXJldHVybiExfXJldHVybiF0LnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBCKGUpfHxmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZSlpZihCKGVbdF0pKXJldHVybiEwO3JldHVybiExfShlKX0pKX12YXIgemUsV2U9ZnVuY3Rpb24oZSl7cmV0dXJuIEZlKERlKGUpKX0sR2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbixyKXtrKHRoaXMsZSksdGhpcy5ydWxlcz10LHRoaXMuaXNTdGF0aWM9TmUodCxuKSx0aGlzLmNvbXBvbmVudElkPXIsU2UubWFzdGVyLmhhc0lkKHIpfHxTZS5tYXN0ZXIuZGVmZXJyZWRJbmplY3QocixbXSl9cmV0dXJuIGUucHJvdG90eXBlLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5pc1N0YXRpYyxyPXRoaXMuY29tcG9uZW50SWQsbz10aGlzLmxhc3RDbGFzc05hbWU7aWYoRyYmbiYmXCJzdHJpbmdcIj09dHlwZW9mIG8mJnQuaGFzTmFtZUZvcklkKHIsbykpcmV0dXJuIG87dmFyIGk9WmUodGhpcy5ydWxlcyxlLHQpLGE9V2UodGhpcy5jb21wb25lbnRJZCtpLmpvaW4oXCJcIikpO3JldHVybiB0Lmhhc05hbWVGb3JJZChyLGEpfHx0LmluamVjdCh0aGlzLmNvbXBvbmVudElkLHNlKGksXCIuXCIrYSx2b2lkIDAsciksYSksdGhpcy5sYXN0Q2xhc3NOYW1lPWEsYX0sZS5nZW5lcmF0ZU5hbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIFdlKGUpfSxlfSgpLFVlPWZ1bmN0aW9uKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOkQscj0hIW4mJmUudGhlbWU9PT1uLnRoZW1lO3JldHVybiBlLnRoZW1lJiYhcj9lLnRoZW1lOnR8fG4udGhlbWV9LHFlPS9bW1xcXS4jKiQ+PCt+PXxeOigpLFwiJ2AtXSsvZyxZZT0vKF4tfC0kKS9nO2Z1bmN0aW9uIEtlKGUpe3JldHVybiBlLnJlcGxhY2UocWUsXCItXCIpLnJlcGxhY2UoWWUsXCJcIil9ZnVuY3Rpb24gWGUoZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGUmJiEwfXZhciBRZT17Y2hpbGRDb250ZXh0VHlwZXM6ITAsY29udGV4dFR5cGVzOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LEplPXtuYW1lOiEwLGxlbmd0aDohMCxwcm90b3R5cGU6ITAsY2FsbGVyOiEwLGNhbGxlZTohMCxhcmd1bWVudHM6ITAsYXJpdHk6ITB9LGV0PSgoemU9e30pW3MuRm9yd2FyZFJlZl09eyQkdHlwZW9mOiEwLHJlbmRlcjohMH0semUpLHR0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxudD1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyxydD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLG90PXZvaWQgMD09PXJ0P2Z1bmN0aW9uKCl7cmV0dXJuW119OnJ0LGl0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsYXQ9T2JqZWN0LmdldFByb3RvdHlwZU9mLGx0PU9iamVjdC5wcm90b3R5cGUsY3Q9QXJyYXkucHJvdG90eXBlO2Z1bmN0aW9uIHN0KGUsdCxuKXtpZihcInN0cmluZ1wiIT10eXBlb2YgdCl7dmFyIHI9YXQodCk7ciYmciE9PWx0JiZzdChlLHIsbik7Zm9yKHZhciBvPWN0LmNvbmNhdChudCh0KSxvdCh0KSksaT1ldFtlLiQkdHlwZW9mXXx8UWUsYT1ldFt0LiQkdHlwZW9mXXx8UWUsbD1vLmxlbmd0aCxjPXZvaWQgMCxzPXZvaWQgMDtsLS07KWlmKHM9b1tsXSwhKEplW3NdfHxuJiZuW3NdfHxhJiZhW3NdfHxpJiZpW3NdKSYmKGM9aXQodCxzKSkpdHJ5e3R0KGUscyxjKX1jYXRjaChlKXt9cmV0dXJuIGV9cmV0dXJuIGV9dmFyIHV0PSgwLGwuY3JlYXRlQ29udGV4dCkoKSxkdD11dC5Db25zdW1lcixmdD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe2sodGhpcyx0KTt2YXIgcj1aKHRoaXMsZS5jYWxsKHRoaXMsbikpO3JldHVybiByLmdldENvbnRleHQ9ZihyLmdldENvbnRleHQuYmluZChyKSksci5yZW5kZXJJbm5lcj1yLnJlbmRlcklubmVyLmJpbmQocikscn1yZXR1cm4gSSh0LGUpLHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuP2wuY3JlYXRlRWxlbWVudCh1dC5Db25zdW1lcixudWxsLHRoaXMucmVuZGVySW5uZXIpOm51bGx9LHQucHJvdG90eXBlLnJlbmRlcklubmVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0Q29udGV4dCh0aGlzLnByb3BzLnRoZW1lLGUpO3JldHVybiBsLmNyZWF0ZUVsZW1lbnQodXQuUHJvdmlkZXIse3ZhbHVlOnR9LHRoaXMucHJvcHMuY2hpbGRyZW4pfSx0LnByb3RvdHlwZS5nZXRUaGVtZT1mdW5jdGlvbihlLHQpe2lmKEIoZSkpcmV0dXJuIGUodCk7aWYobnVsbD09PWV8fEFycmF5LmlzQXJyYXkoZSl8fFwib2JqZWN0XCIhPT0odm9pZCAwPT09ZT9cInVuZGVmaW5lZFwiOkgoZSkpKXRocm93IG5ldyBZKDgpO3JldHVybiBSKHt9LHQsZSl9LHQucHJvdG90eXBlLmdldENvbnRleHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5nZXRUaGVtZShlLHQpfSx0fShsLkNvbXBvbmVudCkscHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7ayh0aGlzLGUpLHRoaXMubWFzdGVyU2hlZXQ9U2UubWFzdGVyLHRoaXMuaW5zdGFuY2U9dGhpcy5tYXN0ZXJTaGVldC5jbG9uZSgpLHRoaXMuc2VhbGVkPSExfXJldHVybiBlLnByb3RvdHlwZS5zZWFsPWZ1bmN0aW9uKCl7aWYoIXRoaXMuc2VhbGVkKXt2YXIgZT10aGlzLm1hc3RlclNoZWV0LmNsb25lcy5pbmRleE9mKHRoaXMuaW5zdGFuY2UpO3RoaXMubWFzdGVyU2hlZXQuY2xvbmVzLnNwbGljZShlLDEpLHRoaXMuc2VhbGVkPSEwfX0sZS5wcm90b3R5cGUuY29sbGVjdFN0eWxlcz1mdW5jdGlvbihlKXtpZih0aGlzLnNlYWxlZCl0aHJvdyBuZXcgWSgyKTtyZXR1cm4gbC5jcmVhdGVFbGVtZW50KHZ0LHtzaGVldDp0aGlzLmluc3RhbmNlfSxlKX0sZS5wcm90b3R5cGUuZ2V0U3R5bGVUYWdzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VhbCgpLHRoaXMuaW5zdGFuY2UudG9IVE1MKCl9LGUucHJvdG90eXBlLmdldFN0eWxlRWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlYWwoKSx0aGlzLmluc3RhbmNlLnRvUmVhY3RFbGVtZW50cygpfSxlLnByb3RvdHlwZS5pbnRlcmxlYXZlV2l0aE5vZGVTdHJlYW09ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IFkoMyl9LGV9KCksQ3Q9KDAsbC5jcmVhdGVDb250ZXh0KSgpLGh0PUN0LkNvbnN1bWVyLHZ0PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7ayh0aGlzLHQpO3ZhciByPVoodGhpcyxlLmNhbGwodGhpcyxuKSk7cmV0dXJuIHIuZ2V0Q29udGV4dD1mKHIuZ2V0Q29udGV4dCkscn1yZXR1cm4gSSh0LGUpLHQucHJvdG90eXBlLmdldENvbnRleHQ9ZnVuY3Rpb24oZSx0KXtpZihlKXJldHVybiBlO2lmKHQpcmV0dXJuIG5ldyBTZSh0KTt0aHJvdyBuZXcgWSg0KX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuY2hpbGRyZW4sbj1lLnNoZWV0LHI9ZS50YXJnZXQ7cmV0dXJuIGwuY3JlYXRlRWxlbWVudChDdC5Qcm92aWRlcix7dmFsdWU6dGhpcy5nZXRDb250ZXh0KG4scil9LHQpfSx0fShsLkNvbXBvbmVudCksZ3Q9e307dmFyIG10PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtrKHRoaXMsdCk7dmFyIG49Wih0aGlzLGUuY2FsbCh0aGlzKSk7cmV0dXJuIG4uYXR0cnM9e30sbi5yZW5kZXJPdXRlcj1uLnJlbmRlck91dGVyLmJpbmQobiksbi5yZW5kZXJJbm5lcj1uLnJlbmRlcklubmVyLmJpbmQobiksbn1yZXR1cm4gSSh0LGUpLHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiBsLmNyZWF0ZUVsZW1lbnQoaHQsbnVsbCx0aGlzLnJlbmRlck91dGVyKX0sdC5wcm90b3R5cGUucmVuZGVyT3V0ZXI9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06U2UubWFzdGVyO3JldHVybiB0aGlzLnN0eWxlU2hlZXQ9ZSx0aGlzLnByb3BzLmZvcndhcmRlZENvbXBvbmVudC5jb21wb25lbnRTdHlsZS5pc1N0YXRpYz90aGlzLnJlbmRlcklubmVyKCk6bC5jcmVhdGVFbGVtZW50KGR0LG51bGwsdGhpcy5yZW5kZXJJbm5lcil9LHQucHJvdG90eXBlLnJlbmRlcklubmVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMuZm9yd2FyZGVkQ29tcG9uZW50LG49dC5jb21wb25lbnRTdHlsZSxyPXQuZGVmYXVsdFByb3BzLG89KHQuZGlzcGxheU5hbWUsdC5mb2xkZWRDb21wb25lbnRJZHMpLGk9dC5zdHlsZWRDb21wb25lbnRJZCxhPXQudGFyZ2V0LGM9dm9pZCAwO2M9bi5pc1N0YXRpYz90aGlzLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzKEQsdGhpcy5wcm9wcyk6dGhpcy5nZW5lcmF0ZUFuZEluamVjdFN0eWxlcyhVZSh0aGlzLnByb3BzLGUscil8fEQsdGhpcy5wcm9wcyk7dmFyIHM9dGhpcy5wcm9wcy5hc3x8dGhpcy5hdHRycy5hc3x8YSx1PVhlKHMpLGQ9e30sZj1SKHt9LHRoaXMucHJvcHMsdGhpcy5hdHRycykscD12b2lkIDA7Zm9yKHAgaW4gZilcImZvcndhcmRlZENvbXBvbmVudFwiIT09cCYmXCJhc1wiIT09cCYmKFwiZm9yd2FyZGVkUmVmXCI9PT1wP2QucmVmPWZbcF06XCJmb3J3YXJkZWRBc1wiPT09cD9kLmFzPWZbcF06dSYmIUMocCl8fChkW3BdPWZbcF0pKTtyZXR1cm4gdGhpcy5wcm9wcy5zdHlsZSYmdGhpcy5hdHRycy5zdHlsZSYmKGQuc3R5bGU9Uih7fSx0aGlzLmF0dHJzLnN0eWxlLHRoaXMucHJvcHMuc3R5bGUpKSxkLmNsYXNzTmFtZT1BcnJheS5wcm90b3R5cGUuY29uY2F0KG8saSxjIT09aT9jOm51bGwsdGhpcy5wcm9wcy5jbGFzc05hbWUsdGhpcy5hdHRycy5jbGFzc05hbWUpLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKSwoMCxsLmNyZWF0ZUVsZW1lbnQpKHMsZCl9LHQucHJvdG90eXBlLmJ1aWxkRXhlY3V0aW9uQ29udGV4dD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyxvPVIoe30sdCx7dGhlbWU6ZX0pO3JldHVybiBuLmxlbmd0aD8odGhpcy5hdHRycz17fSxuLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0LG49ZSxpPSExLGE9dm9pZCAwLGw9dm9pZCAwO2ZvcihsIGluIEIobikmJihuPW4obyksaT0hMCksbilhPW5bbF0saXx8IUIoYSl8fCh0PWEpJiZ0LnByb3RvdHlwZSYmdC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudHx8RihhKXx8KGE9YShvKSksci5hdHRyc1tsXT1hLG9bbF09YX0pKSxvKTpvfSx0LnByb3RvdHlwZS5nZW5lcmF0ZUFuZEluamVjdFN0eWxlcz1mdW5jdGlvbihlLHQpe3ZhciBuPXQuZm9yd2FyZGVkQ29tcG9uZW50LHI9bi5hdHRycyxvPW4uY29tcG9uZW50U3R5bGU7bi53YXJuVG9vTWFueUNsYXNzZXM7cmV0dXJuIG8uaXNTdGF0aWMmJiFyLmxlbmd0aD9vLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzKEQsdGhpcy5zdHlsZVNoZWV0KTpvLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzKHRoaXMuYnVpbGRFeGVjdXRpb25Db250ZXh0KGUsdCxyKSx0aGlzLnN0eWxlU2hlZXQpfSx0fShsLkNvbXBvbmVudCk7ZnVuY3Rpb24gd3QoZSx0LG4pe3ZhciByPUYoZSksbz0hWGUoZSksaT10LmRpc3BsYXlOYW1lLGE9dm9pZCAwPT09aT9mdW5jdGlvbihlKXtyZXR1cm4gWGUoZSk/XCJzdHlsZWQuXCIrZTpcIlN0eWxlZChcIiskKGUpK1wiKVwifShlKTppLGM9dC5jb21wb25lbnRJZCxzPXZvaWQgMD09PWM/ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVwic3RyaW5nXCIhPXR5cGVvZiB0P1wic2NcIjpLZSh0KSxvPShndFtyXXx8MCkrMTtndFtyXT1vO3ZhciBpPXIrXCItXCIrZS5nZW5lcmF0ZU5hbWUocitvKTtyZXR1cm4gbj9uK1wiLVwiK2k6aX0oR2UsdC5kaXNwbGF5TmFtZSx0LnBhcmVudENvbXBvbmVudElkKTpjLHU9dC5QYXJlbnRDb21wb25lbnQsZD12b2lkIDA9PT11P210OnUsZj10LmF0dHJzLHA9dm9pZCAwPT09Zj9BOmYsQz10LmRpc3BsYXlOYW1lJiZ0LmNvbXBvbmVudElkP0tlKHQuZGlzcGxheU5hbWUpK1wiLVwiK3QuY29tcG9uZW50SWQ6dC5jb21wb25lbnRJZHx8cyxoPXImJmUuYXR0cnM/QXJyYXkucHJvdG90eXBlLmNvbmNhdChlLmF0dHJzLHApLmZpbHRlcihCb29sZWFuKTpwLHY9bmV3IEdlKHI/ZS5jb21wb25lbnRTdHlsZS5ydWxlcy5jb25jYXQobik6bixoLEMpLGc9dm9pZCAwLG09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbC5jcmVhdGVFbGVtZW50KGQsUih7fSxlLHtmb3J3YXJkZWRDb21wb25lbnQ6Zyxmb3J3YXJkZWRSZWY6dH0pKX07cmV0dXJuIG0uZGlzcGxheU5hbWU9YSwoZz1sLmZvcndhcmRSZWYobSkpLmRpc3BsYXlOYW1lPWEsZy5hdHRycz1oLGcuY29tcG9uZW50U3R5bGU9dixnLmZvbGRlZENvbXBvbmVudElkcz1yP0FycmF5LnByb3RvdHlwZS5jb25jYXQoZS5mb2xkZWRDb21wb25lbnRJZHMsZS5zdHlsZWRDb21wb25lbnRJZCk6QSxnLnN0eWxlZENvbXBvbmVudElkPUMsZy50YXJnZXQ9cj9lLnRhcmdldDplLGcud2l0aENvbXBvbmVudD1mdW5jdGlvbihlKXt2YXIgcj10LmNvbXBvbmVudElkLG89ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSl0LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiYobltyXT1lW3JdKTtyZXR1cm4gbn0odCxbXCJjb21wb25lbnRJZFwiXSksaT1yJiZyK1wiLVwiKyhYZShlKT9lOktlKCQoZSkpKTtyZXR1cm4gd3QoZSxSKHt9LG8se2F0dHJzOmgsY29tcG9uZW50SWQ6aSxQYXJlbnRDb21wb25lbnQ6ZH0pLG4pfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZyxcImRlZmF1bHRQcm9wc1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9sZGVkRGVmYXVsdFByb3BzfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fZm9sZGVkRGVmYXVsdFByb3BzPXI/UyhlLmRlZmF1bHRQcm9wcyx0KTp0fX0pLGcudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIi5cIitnLnN0eWxlZENvbXBvbmVudElkfSxvJiZzdChnLGUse2F0dHJzOiEwLGNvbXBvbmVudFN0eWxlOiEwLGRpc3BsYXlOYW1lOiEwLGZvbGRlZENvbXBvbmVudElkczohMCxzdHlsZWRDb21wb25lbnRJZDohMCx0YXJnZXQ6ITAsd2l0aENvbXBvbmVudDohMH0pLGd9dmFyIHl0PWZ1bmN0aW9uKGUpe3JldHVybiBBZSh3dCxlKX07W1wiYVwiLFwiYWJiclwiLFwiYWRkcmVzc1wiLFwiYXJlYVwiLFwiYXJ0aWNsZVwiLFwiYXNpZGVcIixcImF1ZGlvXCIsXCJiXCIsXCJiYXNlXCIsXCJiZGlcIixcImJkb1wiLFwiYmlnXCIsXCJibG9ja3F1b3RlXCIsXCJib2R5XCIsXCJiclwiLFwiYnV0dG9uXCIsXCJjYW52YXNcIixcImNhcHRpb25cIixcImNpdGVcIixcImNvZGVcIixcImNvbFwiLFwiY29sZ3JvdXBcIixcImRhdGFcIixcImRhdGFsaXN0XCIsXCJkZFwiLFwiZGVsXCIsXCJkZXRhaWxzXCIsXCJkZm5cIixcImRpYWxvZ1wiLFwiZGl2XCIsXCJkbFwiLFwiZHRcIixcImVtXCIsXCJlbWJlZFwiLFwiZmllbGRzZXRcIixcImZpZ2NhcHRpb25cIixcImZpZ3VyZVwiLFwiZm9vdGVyXCIsXCJmb3JtXCIsXCJoMVwiLFwiaDJcIixcImgzXCIsXCJoNFwiLFwiaDVcIixcImg2XCIsXCJoZWFkXCIsXCJoZWFkZXJcIixcImhncm91cFwiLFwiaHJcIixcImh0bWxcIixcImlcIixcImlmcmFtZVwiLFwiaW1nXCIsXCJpbnB1dFwiLFwiaW5zXCIsXCJrYmRcIixcImtleWdlblwiLFwibGFiZWxcIixcImxlZ2VuZFwiLFwibGlcIixcImxpbmtcIixcIm1haW5cIixcIm1hcFwiLFwibWFya1wiLFwibWFycXVlZVwiLFwibWVudVwiLFwibWVudWl0ZW1cIixcIm1ldGFcIixcIm1ldGVyXCIsXCJuYXZcIixcIm5vc2NyaXB0XCIsXCJvYmplY3RcIixcIm9sXCIsXCJvcHRncm91cFwiLFwib3B0aW9uXCIsXCJvdXRwdXRcIixcInBcIixcInBhcmFtXCIsXCJwaWN0dXJlXCIsXCJwcmVcIixcInByb2dyZXNzXCIsXCJxXCIsXCJycFwiLFwicnRcIixcInJ1YnlcIixcInNcIixcInNhbXBcIixcInNjcmlwdFwiLFwic2VjdGlvblwiLFwic2VsZWN0XCIsXCJzbWFsbFwiLFwic291cmNlXCIsXCJzcGFuXCIsXCJzdHJvbmdcIixcInN0eWxlXCIsXCJzdWJcIixcInN1bW1hcnlcIixcInN1cFwiLFwidGFibGVcIixcInRib2R5XCIsXCJ0ZFwiLFwidGV4dGFyZWFcIixcInRmb290XCIsXCJ0aFwiLFwidGhlYWRcIixcInRpbWVcIixcInRpdGxlXCIsXCJ0clwiLFwidHJhY2tcIixcInVcIixcInVsXCIsXCJ2YXJcIixcInZpZGVvXCIsXCJ3YnJcIixcImNpcmNsZVwiLFwiY2xpcFBhdGhcIixcImRlZnNcIixcImVsbGlwc2VcIixcImZvcmVpZ25PYmplY3RcIixcImdcIixcImltYWdlXCIsXCJsaW5lXCIsXCJsaW5lYXJHcmFkaWVudFwiLFwibWFya2VyXCIsXCJtYXNrXCIsXCJwYXRoXCIsXCJwYXR0ZXJuXCIsXCJwb2x5Z29uXCIsXCJwb2x5bGluZVwiLFwicmFkaWFsR3JhZGllbnRcIixcInJlY3RcIixcInN0b3BcIixcInN2Z1wiLFwidGV4dFwiLFwidHNwYW5cIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7eXRbZV09eXQoZSl9KSk7dmFyIGJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe2sodGhpcyxlKSx0aGlzLnJ1bGVzPXQsdGhpcy5jb21wb25lbnRJZD1uLHRoaXMuaXNTdGF0aWM9TmUodCxBKSxTZS5tYXN0ZXIuaGFzSWQobil8fFNlLm1hc3Rlci5kZWZlcnJlZEluamVjdChuLFtdKX1yZXR1cm4gZS5wcm90b3R5cGUuY3JlYXRlU3R5bGVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49c2UoWmUodGhpcy5ydWxlcyxlLHQpLFwiXCIpO3QuaW5qZWN0KHRoaXMuY29tcG9uZW50SWQsbil9LGUucHJvdG90eXBlLnJlbW92ZVN0eWxlcz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNvbXBvbmVudElkO2UuaGFzSWQodCkmJmUucmVtb3ZlKHQpfSxlLnByb3RvdHlwZS5yZW5kZXJTdHlsZXM9ZnVuY3Rpb24oZSx0KXt0aGlzLnJlbW92ZVN0eWxlcyh0KSx0aGlzLmNyZWF0ZVN0eWxlcyhlLHQpfSxlfSgpO2Z1bmN0aW9uIHh0KGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkodD4xP3QtMTowKSxyPTE7cjx0O3IrKyluW3ItMV09YXJndW1lbnRzW3JdO3ZhciBvPVRlLmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KG4pKSxpPVwic2MtZ2xvYmFsLVwiK0RlKEpTT04uc3RyaW5naWZ5KG8pKSxhPW5ldyBidChvLGkpLGM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtrKHRoaXMsdCk7dmFyIHI9Wih0aGlzLGUuY2FsbCh0aGlzLG4pKSxvPXIuY29uc3RydWN0b3IsaT1vLmdsb2JhbFN0eWxlLGE9by5zdHlsZWRDb21wb25lbnRJZDtyZXR1cm4gRyYmKHdpbmRvdy5zY0NHU0hNUkNhY2hlW2FdPSh3aW5kb3cuc2NDR1NITVJDYWNoZVthXXx8MCkrMSksci5zdGF0ZT17Z2xvYmFsU3R5bGU6aSxzdHlsZWRDb21wb25lbnRJZDphfSxyfXJldHVybiBJKHQsZSksdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXt3aW5kb3cuc2NDR1NITVJDYWNoZVt0aGlzLnN0YXRlLnN0eWxlZENvbXBvbmVudElkXSYmKHdpbmRvdy5zY0NHU0hNUkNhY2hlW3RoaXMuc3RhdGUuc3R5bGVkQ29tcG9uZW50SWRdLT0xKSwwPT09d2luZG93LnNjQ0dTSE1SQ2FjaGVbdGhpcy5zdGF0ZS5zdHlsZWRDb21wb25lbnRJZF0mJnRoaXMuc3RhdGUuZ2xvYmFsU3R5bGUucmVtb3ZlU3R5bGVzKHRoaXMuc3R5bGVTaGVldCl9LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGwuY3JlYXRlRWxlbWVudChodCxudWxsLChmdW5jdGlvbih0KXtlLnN0eWxlU2hlZXQ9dHx8U2UubWFzdGVyO3ZhciBuPWUuc3RhdGUuZ2xvYmFsU3R5bGU7cmV0dXJuIG4uaXNTdGF0aWM/KG4ucmVuZGVyU3R5bGVzKHEsZS5zdHlsZVNoZWV0KSxudWxsKTpsLmNyZWF0ZUVsZW1lbnQoZHQsbnVsbCwoZnVuY3Rpb24odCl7dmFyIHI9ZS5jb25zdHJ1Y3Rvci5kZWZhdWx0UHJvcHMsbz1SKHt9LGUucHJvcHMpO3JldHVybiB2b2lkIDAhPT10JiYoby50aGVtZT1VZShlLnByb3BzLHQscikpLG4ucmVuZGVyU3R5bGVzKG8sZS5zdHlsZVNoZWV0KSxudWxsfSkpfSkpfSx0fShsLkNvbXBvbmVudCk7cmV0dXJuIGMuZ2xvYmFsU3R5bGU9YSxjLnN0eWxlZENvbXBvbmVudElkPWksY31HJiYod2luZG93LnNjQ0dTSE1SQ2FjaGU9e30pO3ZhciBPdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9cXHN8XFxcXG4vZyxcIlwiKX07ZnVuY3Rpb24gTHQoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0PjE/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07dmFyIG89VGUuYXBwbHkodm9pZCAwLFtlXS5jb25jYXQobikpLGk9RmUoRGUoT3QoSlNPTi5zdHJpbmdpZnkobykpKSk7cmV0dXJuIG5ldyBQZShpLHNlKG8saSxcIkBrZXlmcmFtZXNcIikpfXZhciBfdD1mdW5jdGlvbihlKXt2YXIgdD1sLmZvcndhcmRSZWYoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGwuY3JlYXRlRWxlbWVudChkdCxudWxsLChmdW5jdGlvbihyKXt2YXIgbz1lLmRlZmF1bHRQcm9wcyxpPVVlKHQscixvKTtyZXR1cm4gbC5jcmVhdGVFbGVtZW50KGUsUih7fSx0LHt0aGVtZTppLHJlZjpufSkpfSkpfSkpO3JldHVybiBzdCh0LGUpLHQuZGlzcGxheU5hbWU9XCJXaXRoVGhlbWUoXCIrJChlKStcIilcIix0fSxNdD17U3R5bGVTaGVldDpTZX07Y29uc3QganQ9eXR9LDI0NjplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PVwiLyp8Ki9cIixuPXQrXCJ9XCI7ZnVuY3Rpb24gcih0KXtpZih0KXRyeXtlKHQrXCJ9XCIpfWNhdGNoKGUpe319cmV0dXJuIGZ1bmN0aW9uKG8saSxhLGwsYyxzLHUsZCxmLHApe3N3aXRjaChvKXtjYXNlIDE6aWYoMD09PWYmJjY0PT09aS5jaGFyQ29kZUF0KDApKXJldHVybiBlKGkrXCI7XCIpLFwiXCI7YnJlYWs7Y2FzZSAyOmlmKDA9PT1kKXJldHVybiBpK3Q7YnJlYWs7Y2FzZSAzOnN3aXRjaChkKXtjYXNlIDEwMjpjYXNlIDExMjpyZXR1cm4gZShhWzBdK2kpLFwiXCI7ZGVmYXVsdDpyZXR1cm4gaSsoMD09PXA/dDpcIlwiKX1jYXNlLTI6aS5zcGxpdChuKS5mb3JFYWNoKHIpfX19fSgpfSw5NDY6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbiBlKHQpe1widXNlIHN0cmljdFwiO3ZhciBuPS9eXFwwKy9nLHI9L1tcXDBcXHJcXGZdL2csbz0vOiAqL2csaT0vem9vfGdyYS8sYT0vKFssOiBdKSh0cmFuc2Zvcm0pL2csbD0vLCtcXHMqKD8hW14oXSpbKV0pL2csYz0vICtcXHMqKD8hW14oXSpbKV0pL2cscz0vICpbXFwwXSAqL2csdT0vLFxccis/L2csZD0vKFtcXHRcXHJcXG4gXSkqXFxmPyYvZyxmPS86Z2xvYmFsXFwoKCg/OlteXFwoXFwpXFxbXFxdXSp8XFxbLipcXF18XFwoW15cXChcXCldKlxcKSkqKVxcKS9nLHA9L1xcVysvZyxDPS9AKGtcXHcrKVxccyooXFxTKilcXHMqLyxoPS86OihwbGFjZSkvZyx2PS86KHJlYWQtb25seSkvZyxnPS9cXHMrKD89W3tcXF07PTo+XSkvZyxtPS8oW1t9PTo+XSlcXHMrL2csdz0vKFxce1tee10rPyk7KD89XFx9KS9nLHk9L1xcc3syLH0vZyxiPS8oW15cXChdKSg6KykgKi9nLHg9L1tzdmhdXFx3Ky1bdGJscl17Mn0vLE89L1xcKFxccyooLiopXFxzKlxcKS9nLEw9LyhbXFxzXFxTXSo/KTsvZyxfPS8tc2VsZnxmbGV4LS9nLE09L1teXSo/KDpbcnBdW2VsXWFbXFx3LV0rKVteXSovLGo9L3N0cmV0Y2h8OlxccypcXHcrXFwtKD86Y29udGV8YXZhaWwpLyxFPS8oW14tXSkoaW1hZ2Utc2V0XFwoKS8sUz1cIi13ZWJraXQtXCIsUD1cIi1tb3otXCIsSD1cIi1tcy1cIixrPTU5LFY9MTI1LFI9MTIzLEk9NDAsWj00MSxUPTkxLEE9OTMsRD0xMCxCPTEzLCQ9OSxGPTY0LE49MzIsej0zOCxXPTQ1LEc9OTUsVT00MixxPTQ0LFk9NTgsSz0zOSxYPTM0LFE9NDcsSj02MixlZT00Myx0ZT0xMjYsbmU9MCxyZT0xMixvZT0xMSxpZT0xMDcsYWU9MTA5LGxlPTExNSxjZT0xMTIsc2U9MTExLHVlPTEwNSxkZT05OSxmZT0xMDAscGU9MTEyLENlPTEsaGU9MSx2ZT0wLGdlPTEsbWU9MSx3ZT0xLHllPTAsYmU9MCx4ZT0wLE9lPVtdLExlPVtdLF9lPTAsTWU9bnVsbCxqZT0tMixFZT0tMSxTZT0wLFBlPTEsSGU9MixrZT0zLFZlPTAsUmU9MSxJZT1cIlwiLFplPVwiXCIsVGU9XCJcIjtmdW5jdGlvbiBBZShlLHQsbyxpLGEpe2Zvcih2YXIgbCxjLHU9MCxkPTAsZj0wLHA9MCxnPTAsbT0wLHc9MCx5PTAseD0wLEw9MCxfPTAsTT0wLGo9MCxFPTAsRz0wLHllPTAsTGU9MCxNZT0wLGplPTAsRWU9by5sZW5ndGgsQmU9RWUtMSxHZT1cIlwiLFVlPVwiXCIscWU9XCJcIixZZT1cIlwiLEtlPVwiXCIsWGU9XCJcIjtHPEVlOyl7aWYodz1vLmNoYXJDb2RlQXQoRyksRz09PUJlJiZkK3ArZit1IT09MCYmKDAhPT1kJiYodz1kPT09UT9EOlEpLHA9Zj11PTAsRWUrKyxCZSsrKSxkK3ArZit1PT09MCl7aWYoRz09PUJlJiYoeWU+MCYmKFVlPVVlLnJlcGxhY2UocixcIlwiKSksVWUudHJpbSgpLmxlbmd0aD4wKSl7c3dpdGNoKHcpe2Nhc2UgTjpjYXNlICQ6Y2FzZSBrOmNhc2UgQjpjYXNlIEQ6YnJlYWs7ZGVmYXVsdDpVZSs9by5jaGFyQXQoRyl9dz1rfWlmKDE9PT1MZSlzd2l0Y2godyl7Y2FzZSBSOmNhc2UgVjpjYXNlIGs6Y2FzZSBYOmNhc2UgSzpjYXNlIEk6Y2FzZSBaOmNhc2UgcTpMZT0wO2Nhc2UgJDpjYXNlIEI6Y2FzZSBEOmNhc2UgTjpicmVhaztkZWZhdWx0OmZvcihMZT0wLGplPUcsZz13LEctLSx3PWs7amU8RWU7KXN3aXRjaChvLmNoYXJDb2RlQXQoamUrKykpe2Nhc2UgRDpjYXNlIEI6Y2FzZSBrOisrRyx3PWcsamU9RWU7YnJlYWs7Y2FzZSBZOnllPjAmJigrK0csdz1nKTtjYXNlIFI6amU9RWV9fXN3aXRjaCh3KXtjYXNlIFI6Zm9yKGc9KFVlPVVlLnRyaW0oKSkuY2hhckNvZGVBdCgwKSxfPTEsamU9KytHO0c8RWU7KXtzd2l0Y2godz1vLmNoYXJDb2RlQXQoRykpe2Nhc2UgUjpfKys7YnJlYWs7Y2FzZSBWOl8tLTticmVhaztjYXNlIFE6c3dpdGNoKG09by5jaGFyQ29kZUF0KEcrMSkpe2Nhc2UgVTpjYXNlIFE6Rz1XZShtLEcsQmUsbyl9YnJlYWs7Y2FzZSBUOncrKztjYXNlIEk6dysrO2Nhc2UgWDpjYXNlIEs6Zm9yKDtHKys8QmUmJm8uY2hhckNvZGVBdChHKSE9PXc7KTt9aWYoMD09PV8pYnJlYWs7RysrfWlmKHFlPW8uc3Vic3RyaW5nKGplLEcpLGc9PT1uZSYmKGc9KFVlPVVlLnJlcGxhY2UobixcIlwiKS50cmltKCkpLmNoYXJDb2RlQXQoMCkpLGc9PT1GKXtzd2l0Y2goeWU+MCYmKFVlPVVlLnJlcGxhY2UocixcIlwiKSksbT1VZS5jaGFyQ29kZUF0KDEpKXtjYXNlIGZlOmNhc2UgYWU6Y2FzZSBsZTpjYXNlIFc6bD10O2JyZWFrO2RlZmF1bHQ6bD1PZX1pZihqZT0ocWU9QWUodCxsLHFlLG0sYSsxKSkubGVuZ3RoLHhlPjAmJjA9PT1qZSYmKGplPVVlLmxlbmd0aCksX2U+MCYmKGw9RGUoT2UsVWUsTWUpLGM9emUoa2UscWUsbCx0LGhlLENlLGplLG0sYSxpKSxVZT1sLmpvaW4oXCJcIiksdm9pZCAwIT09YyYmMD09PShqZT0ocWU9Yy50cmltKCkpLmxlbmd0aCkmJihtPTAscWU9XCJcIikpLGplPjApc3dpdGNoKG0pe2Nhc2UgbGU6VWU9VWUucmVwbGFjZShPLE5lKTtjYXNlIGZlOmNhc2UgYWU6Y2FzZSBXOnFlPVVlK1wie1wiK3FlK1wifVwiO2JyZWFrO2Nhc2UgaWU6cWU9KFVlPVVlLnJlcGxhY2UoQyxcIiQxICQyXCIrKFJlPjA/SWU6XCJcIikpKStcIntcIitxZStcIn1cIixxZT0xPT09bWV8fDI9PT1tZSYmRmUoXCJAXCIrcWUsMyk/XCJAXCIrUytxZStcIkBcIitxZTpcIkBcIitxZTticmVhaztkZWZhdWx0OnFlPVVlK3FlLGk9PT1wZSYmKFllKz1xZSxxZT1cIlwiKX1lbHNlIHFlPVwiXCJ9ZWxzZSBxZT1BZSh0LERlKHQsVWUsTWUpLHFlLGksYSsxKTtLZSs9cWUsTT0wLExlPTAsRT0wLHllPTAsTWU9MCxqPTAsVWU9XCJcIixxZT1cIlwiLHc9by5jaGFyQ29kZUF0KCsrRyk7YnJlYWs7Y2FzZSBWOmNhc2UgazppZigoamU9KFVlPSh5ZT4wP1VlLnJlcGxhY2UocixcIlwiKTpVZSkudHJpbSgpKS5sZW5ndGgpPjEpc3dpdGNoKDA9PT1FJiYoKGc9VWUuY2hhckNvZGVBdCgwKSk9PT1XfHxnPjk2JiZnPDEyMykmJihqZT0oVWU9VWUucmVwbGFjZShcIiBcIixcIjpcIikpLmxlbmd0aCksX2U+MCYmdm9pZCAwIT09KGM9emUoUGUsVWUsdCxlLGhlLENlLFllLmxlbmd0aCxpLGEsaSkpJiYwPT09KGplPShVZT1jLnRyaW0oKSkubGVuZ3RoKSYmKFVlPVwiXFwwXFwwXCIpLGc9VWUuY2hhckNvZGVBdCgwKSxtPVVlLmNoYXJDb2RlQXQoMSksZyl7Y2FzZSBuZTpicmVhaztjYXNlIEY6aWYobT09PXVlfHxtPT09ZGUpe1hlKz1VZStvLmNoYXJBdChHKTticmVha31kZWZhdWx0OmlmKFVlLmNoYXJDb2RlQXQoamUtMSk9PT1ZKWJyZWFrO1llKz0kZShVZSxnLG0sVWUuY2hhckNvZGVBdCgyKSl9TT0wLExlPTAsRT0wLHllPTAsTWU9MCxVZT1cIlwiLHc9by5jaGFyQ29kZUF0KCsrRyl9fXN3aXRjaCh3KXtjYXNlIEI6Y2FzZSBEOmlmKGQrcCtmK3UrYmU9PT0wKXN3aXRjaChMKXtjYXNlIFo6Y2FzZSBLOmNhc2UgWDpjYXNlIEY6Y2FzZSB0ZTpjYXNlIEo6Y2FzZSBVOmNhc2UgZWU6Y2FzZSBROmNhc2UgVzpjYXNlIFk6Y2FzZSBxOmNhc2UgazpjYXNlIFI6Y2FzZSBWOmJyZWFrO2RlZmF1bHQ6RT4wJiYoTGU9MSl9ZD09PVE/ZD0wOmdlK009PT0wJiZpIT09aWUmJlVlLmxlbmd0aD4wJiYoeWU9MSxVZSs9XCJcXDBcIiksX2UqVmU+MCYmemUoU2UsVWUsdCxlLGhlLENlLFllLmxlbmd0aCxpLGEsaSksQ2U9MSxoZSsrO2JyZWFrO2Nhc2UgazpjYXNlIFY6aWYoZCtwK2YrdT09PTApe0NlKys7YnJlYWt9ZGVmYXVsdDpzd2l0Y2goQ2UrKyxHZT1vLmNoYXJBdChHKSx3KXtjYXNlICQ6Y2FzZSBOOmlmKHArdStkPT09MClzd2l0Y2goeSl7Y2FzZSBxOmNhc2UgWTpjYXNlICQ6Y2FzZSBOOkdlPVwiXCI7YnJlYWs7ZGVmYXVsdDp3IT09TiYmKEdlPVwiIFwiKX1icmVhaztjYXNlIG5lOkdlPVwiXFxcXDBcIjticmVhaztjYXNlIHJlOkdlPVwiXFxcXGZcIjticmVhaztjYXNlIG9lOkdlPVwiXFxcXHZcIjticmVhaztjYXNlIHo6cCtkK3U9PT0wJiZnZT4wJiYoTWU9MSx5ZT0xLEdlPVwiXFxmXCIrR2UpO2JyZWFrO2Nhc2UgMTA4OmlmKHArZCt1K3ZlPT09MCYmRT4wKXN3aXRjaChHLUUpe2Nhc2UgMjp5PT09Y2UmJm8uY2hhckNvZGVBdChHLTMpPT09WSYmKHZlPXkpO2Nhc2UgODp4PT09c2UmJih2ZT14KX1icmVhaztjYXNlIFk6cCtkK3U9PT0wJiYoRT1HKTticmVhaztjYXNlIHE6ZCtmK3ArdT09PTAmJih5ZT0xLEdlKz1cIlxcclwiKTticmVhaztjYXNlIFg6Y2FzZSBLOjA9PT1kJiYocD1wPT09dz8wOjA9PT1wP3c6cCk7YnJlYWs7Y2FzZSBUOnArZCtmPT09MCYmdSsrO2JyZWFrO2Nhc2UgQTpwK2QrZj09PTAmJnUtLTticmVhaztjYXNlIFo6cCtkK3U9PT0wJiZmLS07YnJlYWs7Y2FzZSBJOnArZCt1PT09MCYmKDA9PT1NJiYoMip5KzMqeD09NTMzfHwoXz0wLE09MSkpLGYrKyk7YnJlYWs7Y2FzZSBGOmQrZitwK3UrRStqPT09MCYmKGo9MSk7YnJlYWs7Y2FzZSBVOmNhc2UgUTppZihwK3UrZj4wKWJyZWFrO3N3aXRjaChkKXtjYXNlIDA6c3dpdGNoKDIqdyszKm8uY2hhckNvZGVBdChHKzEpKXtjYXNlIDIzNTpkPVE7YnJlYWs7Y2FzZSAyMjA6amU9RyxkPVV9YnJlYWs7Y2FzZSBVOnc9PT1RJiZ5PT09VSYmamUrMiE9PUcmJigzMz09PW8uY2hhckNvZGVBdChqZSsyKSYmKFllKz1vLnN1YnN0cmluZyhqZSxHKzEpKSxHZT1cIlwiLGQ9MCl9fWlmKDA9PT1kKXtpZihnZStwK3Uraj09PTAmJmkhPT1pZSYmdyE9PWspc3dpdGNoKHcpe2Nhc2UgcTpjYXNlIHRlOmNhc2UgSjpjYXNlIGVlOmNhc2UgWjpjYXNlIEk6aWYoMD09PU0pe3N3aXRjaCh5KXtjYXNlICQ6Y2FzZSBOOmNhc2UgRDpjYXNlIEI6R2UrPVwiXFwwXCI7YnJlYWs7ZGVmYXVsdDpHZT1cIlxcMFwiK0dlKyh3PT09cT9cIlwiOlwiXFwwXCIpfXllPTF9ZWxzZSBzd2l0Y2godyl7Y2FzZSBJOkUrNz09PUcmJjEwOD09PXkmJihFPTApLE09KytfO2JyZWFrO2Nhc2UgWjowPT0oTT0tLV8pJiYoeWU9MSxHZSs9XCJcXDBcIil9YnJlYWs7Y2FzZSAkOmNhc2UgTjpzd2l0Y2goeSl7Y2FzZSBuZTpjYXNlIFI6Y2FzZSBWOmNhc2UgazpjYXNlIHE6Y2FzZSByZTpjYXNlICQ6Y2FzZSBOOmNhc2UgRDpjYXNlIEI6YnJlYWs7ZGVmYXVsdDowPT09TSYmKHllPTEsR2UrPVwiXFwwXCIpfX1VZSs9R2UsdyE9PU4mJnchPT0kJiYoTD13KX19eD15LHk9dyxHKyt9aWYoamU9WWUubGVuZ3RoLHhlPjAmJjA9PT1qZSYmMD09PUtlLmxlbmd0aCYmMD09PXRbMF0ubGVuZ3RoPT0wJiYoaSE9PWFlfHwxPT09dC5sZW5ndGgmJihnZT4wP1plOlRlKT09PXRbMF0pJiYoamU9dC5qb2luKFwiLFwiKS5sZW5ndGgrMiksamU+MCl7aWYobD0wPT09Z2UmJmkhPT1pZT9mdW5jdGlvbihlKXtmb3IodmFyIHQsbixvPTAsaT1lLmxlbmd0aCxhPUFycmF5KGkpO288aTsrK28pe2Zvcih2YXIgbD1lW29dLnNwbGl0KHMpLGM9XCJcIix1PTAsZD0wLGY9MCxwPTAsQz1sLmxlbmd0aDt1PEM7Kyt1KWlmKCEoMD09PShkPShuPWxbdV0pLmxlbmd0aCkmJkM+MSkpe2lmKGY9Yy5jaGFyQ29kZUF0KGMubGVuZ3RoLTEpLHA9bi5jaGFyQ29kZUF0KDApLHQ9XCJcIiwwIT09dSlzd2l0Y2goZil7Y2FzZSBVOmNhc2UgdGU6Y2FzZSBKOmNhc2UgZWU6Y2FzZSBOOmNhc2UgSTpicmVhaztkZWZhdWx0OnQ9XCIgXCJ9c3dpdGNoKHApe2Nhc2UgejpuPXQrWmU7Y2FzZSB0ZTpjYXNlIEo6Y2FzZSBlZTpjYXNlIE46Y2FzZSBaOmNhc2UgSTpicmVhaztjYXNlIFQ6bj10K24rWmU7YnJlYWs7Y2FzZSBZOnN3aXRjaCgyKm4uY2hhckNvZGVBdCgxKSszKm4uY2hhckNvZGVBdCgyKSl7Y2FzZSA1MzA6aWYod2U+MCl7bj10K24uc3Vic3RyaW5nKDgsZC0xKTticmVha31kZWZhdWx0Oih1PDF8fGxbdS0xXS5sZW5ndGg8MSkmJihuPXQrWmUrbil9YnJlYWs7Y2FzZSBxOnQ9XCJcIjtkZWZhdWx0Om49ZD4xJiZuLmluZGV4T2YoXCI6XCIpPjA/dCtuLnJlcGxhY2UoYixcIiQxXCIrWmUrXCIkMlwiKTp0K24rWmV9Yys9bn1hW29dPWMucmVwbGFjZShyLFwiXCIpLnRyaW0oKX1yZXR1cm4gYX0odCk6dCxfZT4wJiZ2b2lkIDAhPT0oYz16ZShIZSxZZSxsLGUsaGUsQ2UsamUsaSxhLGkpKSYmMD09PShZZT1jKS5sZW5ndGgpcmV0dXJuIFhlK1llK0tlO2lmKFllPWwuam9pbihcIixcIikrXCJ7XCIrWWUrXCJ9XCIsbWUqdmUhPTApe3N3aXRjaCgyIT09bWV8fEZlKFllLDIpfHwodmU9MCksdmUpe2Nhc2Ugc2U6WWU9WWUucmVwbGFjZSh2LFwiOlwiK1ArXCIkMVwiKStZZTticmVhaztjYXNlIGNlOlllPVllLnJlcGxhY2UoaCxcIjo6XCIrUytcImlucHV0LSQxXCIpK1llLnJlcGxhY2UoaCxcIjo6XCIrUCtcIiQxXCIpK1llLnJlcGxhY2UoaCxcIjpcIitIK1wiaW5wdXQtJDFcIikrWWV9dmU9MH19cmV0dXJuIFhlK1llK0tlfWZ1bmN0aW9uIERlKGUsdCxuKXt2YXIgcj10LnRyaW0oKS5zcGxpdCh1KSxvPXIsaT1yLmxlbmd0aCxhPWUubGVuZ3RoO3N3aXRjaChhKXtjYXNlIDA6Y2FzZSAxOmZvcih2YXIgbD0wLGM9MD09PWE/XCJcIjplWzBdK1wiIFwiO2w8aTsrK2wpb1tsXT1CZShjLG9bbF0sbixhKS50cmltKCk7YnJlYWs7ZGVmYXVsdDpsPTA7dmFyIHM9MDtmb3Iobz1bXTtsPGk7KytsKWZvcih2YXIgZD0wO2Q8YTsrK2Qpb1tzKytdPUJlKGVbZF0rXCIgXCIscltsXSxuLGEpLnRyaW0oKX1yZXR1cm4gb31mdW5jdGlvbiBCZShlLHQsbixyKXt2YXIgbz10LGk9by5jaGFyQ29kZUF0KDApO3N3aXRjaChpPDMzJiYoaT0obz1vLnRyaW0oKSkuY2hhckNvZGVBdCgwKSksaSl7Y2FzZSB6OnN3aXRjaChnZStyKXtjYXNlIDA6Y2FzZSAxOmlmKDA9PT1lLnRyaW0oKS5sZW5ndGgpYnJlYWs7ZGVmYXVsdDpyZXR1cm4gby5yZXBsYWNlKGQsXCIkMVwiK2UudHJpbSgpKX1icmVhaztjYXNlIFk6aWYoMTAzIT09by5jaGFyQ29kZUF0KDEpKXJldHVybiBlLnRyaW0oKStvLnJlcGxhY2UoZCxcIiQxXCIrZS50cmltKCkpO2lmKHdlPjAmJmdlPjApcmV0dXJuIG8ucmVwbGFjZShmLFwiJDFcIikucmVwbGFjZShkLFwiJDFcIitUZSk7ZGVmYXVsdDppZihuKmdlPjAmJm8uaW5kZXhPZihcIlxcZlwiKT4wKXJldHVybiBvLnJlcGxhY2UoZCwoZS5jaGFyQ29kZUF0KDApPT09WT9cIlwiOlwiJDFcIikrZS50cmltKCkpfXJldHVybiBlK299ZnVuY3Rpb24gJGUoZSx0LG4scil7dmFyIHMsdT0wLGQ9ZStcIjtcIixmPTIqdCszKm4rNCpyO2lmKDk0ND09PWYpcmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoLG49ZS5pbmRleE9mKFwiOlwiLDkpKzEscj1lLnN1YnN0cmluZygwLG4pLnRyaW0oKSxvPWUuc3Vic3RyaW5nKG4sdC0xKS50cmltKCk7c3dpdGNoKGUuY2hhckNvZGVBdCg5KSpSZSl7Y2FzZSAwOmJyZWFrO2Nhc2UgVzppZigxMTAhPT1lLmNoYXJDb2RlQXQoMTApKWJyZWFrO2RlZmF1bHQ6dmFyIGk9by5zcGxpdCgobz1cIlwiLGwpKSxhPTA7Zm9yKG49MCx0PWkubGVuZ3RoO2E8dDtuPTAsKythKXtmb3IodmFyIHM9aVthXSx1PXMuc3BsaXQoYyk7cz11W25dOyl7dmFyIGQ9cy5jaGFyQ29kZUF0KDApO2lmKDE9PT1SZSYmKGQ+RiYmZDw5MHx8ZD45NiYmZDwxMjN8fGQ9PT1HfHxkPT09VyYmcy5jaGFyQ29kZUF0KDEpIT09VykmJmlzTmFOKHBhcnNlRmxvYXQocykpKygtMSE9PXMuaW5kZXhPZihcIihcIikpPT09MSlzd2l0Y2gocyl7Y2FzZVwiaW5maW5pdGVcIjpjYXNlXCJhbHRlcm5hdGVcIjpjYXNlXCJiYWNrd2FyZHNcIjpjYXNlXCJydW5uaW5nXCI6Y2FzZVwibm9ybWFsXCI6Y2FzZVwiZm9yd2FyZHNcIjpjYXNlXCJib3RoXCI6Y2FzZVwibm9uZVwiOmNhc2VcImxpbmVhclwiOmNhc2VcImVhc2VcIjpjYXNlXCJlYXNlLWluXCI6Y2FzZVwiZWFzZS1vdXRcIjpjYXNlXCJlYXNlLWluLW91dFwiOmNhc2VcInBhdXNlZFwiOmNhc2VcInJldmVyc2VcIjpjYXNlXCJhbHRlcm5hdGUtcmV2ZXJzZVwiOmNhc2VcImluaGVyaXRcIjpjYXNlXCJpbml0aWFsXCI6Y2FzZVwidW5zZXRcIjpjYXNlXCJzdGVwLXN0YXJ0XCI6Y2FzZVwic3RlcC1lbmRcIjpicmVhaztkZWZhdWx0OnMrPUllfXVbbisrXT1zfW8rPSgwPT09YT9cIlwiOlwiLFwiKSt1LmpvaW4oXCIgXCIpfX1yZXR1cm4gbz1yK28rXCI7XCIsMT09PW1lfHwyPT09bWUmJkZlKG8sMSk/UytvK286b30oZCk7aWYoMD09PW1lfHwyPT09bWUmJiFGZShkLDEpKXJldHVybiBkO3N3aXRjaChmKXtjYXNlIDEwMTU6cmV0dXJuIDk3PT09ZC5jaGFyQ29kZUF0KDEwKT9TK2QrZDpkO2Nhc2UgOTUxOnJldHVybiAxMTY9PT1kLmNoYXJDb2RlQXQoMyk/UytkK2Q6ZDtjYXNlIDk2MzpyZXR1cm4gMTEwPT09ZC5jaGFyQ29kZUF0KDUpP1MrZCtkOmQ7Y2FzZSAxMDA5OmlmKDEwMCE9PWQuY2hhckNvZGVBdCg0KSlicmVhaztjYXNlIDk2OTpjYXNlIDk0MjpyZXR1cm4gUytkK2Q7Y2FzZSA5Nzg6cmV0dXJuIFMrZCtQK2QrZDtjYXNlIDEwMTk6Y2FzZSA5ODM6cmV0dXJuIFMrZCtQK2QrSCtkK2Q7Y2FzZSA4ODM6cmV0dXJuIGQuY2hhckNvZGVBdCg4KT09PVc/UytkK2Q6ZC5pbmRleE9mKFwiaW1hZ2Utc2V0KFwiLDExKT4wP2QucmVwbGFjZShFLFwiJDFcIitTK1wiJDJcIikrZDpkO2Nhc2UgOTMyOmlmKGQuY2hhckNvZGVBdCg0KT09PVcpc3dpdGNoKGQuY2hhckNvZGVBdCg1KSl7Y2FzZSAxMDM6cmV0dXJuIFMrXCJib3gtXCIrZC5yZXBsYWNlKFwiLWdyb3dcIixcIlwiKStTK2QrSCtkLnJlcGxhY2UoXCJncm93XCIsXCJwb3NpdGl2ZVwiKStkO2Nhc2UgMTE1OnJldHVybiBTK2QrSCtkLnJlcGxhY2UoXCJzaHJpbmtcIixcIm5lZ2F0aXZlXCIpK2Q7Y2FzZSA5ODpyZXR1cm4gUytkK0grZC5yZXBsYWNlKFwiYmFzaXNcIixcInByZWZlcnJlZC1zaXplXCIpK2R9cmV0dXJuIFMrZCtIK2QrZDtjYXNlIDk2NDpyZXR1cm4gUytkK0grXCJmbGV4LVwiK2QrZDtjYXNlIDEwMjM6aWYoOTkhPT1kLmNoYXJDb2RlQXQoOCkpYnJlYWs7cmV0dXJuIHM9ZC5zdWJzdHJpbmcoZC5pbmRleE9mKFwiOlwiLDE1KSkucmVwbGFjZShcImZsZXgtXCIsXCJcIikucmVwbGFjZShcInNwYWNlLWJldHdlZW5cIixcImp1c3RpZnlcIiksUytcImJveC1wYWNrXCIrcytTK2QrSCtcImZsZXgtcGFja1wiK3MrZDtjYXNlIDEwMDU6cmV0dXJuIGkudGVzdChkKT9kLnJlcGxhY2UobyxcIjpcIitTKStkLnJlcGxhY2UobyxcIjpcIitQKStkOmQ7Y2FzZSAxZTM6c3dpdGNoKHU9KHM9ZC5zdWJzdHJpbmcoMTMpLnRyaW0oKSkuaW5kZXhPZihcIi1cIikrMSxzLmNoYXJDb2RlQXQoMCkrcy5jaGFyQ29kZUF0KHUpKXtjYXNlIDIyNjpzPWQucmVwbGFjZSh4LFwidGJcIik7YnJlYWs7Y2FzZSAyMzI6cz1kLnJlcGxhY2UoeCxcInRiLXJsXCIpO2JyZWFrO2Nhc2UgMjIwOnM9ZC5yZXBsYWNlKHgsXCJsclwiKTticmVhaztkZWZhdWx0OnJldHVybiBkfXJldHVybiBTK2QrSCtzK2Q7Y2FzZSAxMDE3OmlmKC0xPT09ZC5pbmRleE9mKFwic3RpY2t5XCIsOSkpcmV0dXJuIGQ7Y2FzZSA5NzU6c3dpdGNoKHU9KGQ9ZSkubGVuZ3RoLTEwLGY9KHM9KDMzPT09ZC5jaGFyQ29kZUF0KHUpP2Quc3Vic3RyaW5nKDAsdSk6ZCkuc3Vic3RyaW5nKGUuaW5kZXhPZihcIjpcIiw3KSsxKS50cmltKCkpLmNoYXJDb2RlQXQoMCkrKDB8cy5jaGFyQ29kZUF0KDcpKSl7Y2FzZSAyMDM6aWYocy5jaGFyQ29kZUF0KDgpPDExMSlicmVhaztjYXNlIDExNTpkPWQucmVwbGFjZShzLFMrcykrXCI7XCIrZDticmVhaztjYXNlIDIwNzpjYXNlIDEwMjpkPWQucmVwbGFjZShzLFMrKGY+MTAyP1wiaW5saW5lLVwiOlwiXCIpK1wiYm94XCIpK1wiO1wiK2QucmVwbGFjZShzLFMrcykrXCI7XCIrZC5yZXBsYWNlKHMsSCtzK1wiYm94XCIpK1wiO1wiK2R9cmV0dXJuIGQrXCI7XCI7Y2FzZSA5Mzg6aWYoZC5jaGFyQ29kZUF0KDUpPT09Vylzd2l0Y2goZC5jaGFyQ29kZUF0KDYpKXtjYXNlIDEwNTpyZXR1cm4gcz1kLnJlcGxhY2UoXCItaXRlbXNcIixcIlwiKSxTK2QrUytcImJveC1cIitzK0grXCJmbGV4LVwiK3MrZDtjYXNlIDExNTpyZXR1cm4gUytkK0grXCJmbGV4LWl0ZW0tXCIrZC5yZXBsYWNlKF8sXCJcIikrZDtkZWZhdWx0OnJldHVybiBTK2QrSCtcImZsZXgtbGluZS1wYWNrXCIrZC5yZXBsYWNlKFwiYWxpZ24tY29udGVudFwiLFwiXCIpLnJlcGxhY2UoXyxcIlwiKStkfWJyZWFrO2Nhc2UgOTczOmNhc2UgOTg5OmlmKGQuY2hhckNvZGVBdCgzKSE9PVd8fDEyMj09PWQuY2hhckNvZGVBdCg0KSlicmVhaztjYXNlIDkzMTpjYXNlIDk1MzppZighMD09PWoudGVzdChlKSlyZXR1cm4gMTE1PT09KHM9ZS5zdWJzdHJpbmcoZS5pbmRleE9mKFwiOlwiKSsxKSkuY2hhckNvZGVBdCgwKT8kZShlLnJlcGxhY2UoXCJzdHJldGNoXCIsXCJmaWxsLWF2YWlsYWJsZVwiKSx0LG4scikucmVwbGFjZShcIjpmaWxsLWF2YWlsYWJsZVwiLFwiOnN0cmV0Y2hcIik6ZC5yZXBsYWNlKHMsUytzKStkLnJlcGxhY2UocyxQK3MucmVwbGFjZShcImZpbGwtXCIsXCJcIikpK2Q7YnJlYWs7Y2FzZSA5NjI6aWYoZD1TK2QrKDEwMj09PWQuY2hhckNvZGVBdCg1KT9IK2Q6XCJcIikrZCxuK3I9PT0yMTEmJjEwNT09PWQuY2hhckNvZGVBdCgxMykmJmQuaW5kZXhPZihcInRyYW5zZm9ybVwiLDEwKT4wKXJldHVybiBkLnN1YnN0cmluZygwLGQuaW5kZXhPZihcIjtcIiwyNykrMSkucmVwbGFjZShhLFwiJDFcIitTK1wiJDJcIikrZH1yZXR1cm4gZH1mdW5jdGlvbiBGZShlLHQpe3ZhciBuPWUuaW5kZXhPZigxPT09dD9cIjpcIjpcIntcIikscj1lLnN1YnN0cmluZygwLDMhPT10P246MTApLG89ZS5zdWJzdHJpbmcobisxLGUubGVuZ3RoLTEpO3JldHVybiBNZSgyIT09dD9yOnIucmVwbGFjZShNLFwiJDFcIiksbyx0KX1mdW5jdGlvbiBOZShlLHQpe3ZhciBuPSRlKHQsdC5jaGFyQ29kZUF0KDApLHQuY2hhckNvZGVBdCgxKSx0LmNoYXJDb2RlQXQoMikpO3JldHVybiBuIT09dCtcIjtcIj9uLnJlcGxhY2UoTCxcIiBvciAoJDEpXCIpLnN1YnN0cmluZyg0KTpcIihcIit0K1wiKVwifWZ1bmN0aW9uIHplKGUsdCxuLHIsbyxpLGEsbCxjLHMpe2Zvcih2YXIgdSxkPTAsZj10O2Q8X2U7KytkKXN3aXRjaCh1PUxlW2RdLmNhbGwoVWUsZSxmLG4scixvLGksYSxsLGMscykpe2Nhc2Ugdm9pZCAwOmNhc2UhMTpjYXNlITA6Y2FzZSBudWxsOmJyZWFrO2RlZmF1bHQ6Zj11fWlmKGYhPT10KXJldHVybiBmfWZ1bmN0aW9uIFdlKGUsdCxuLHIpe2Zvcih2YXIgbz10KzE7bzxuOysrbylzd2l0Y2goci5jaGFyQ29kZUF0KG8pKXtjYXNlIFE6aWYoZT09PVUmJnIuY2hhckNvZGVBdChvLTEpPT09VSYmdCsyIT09bylyZXR1cm4gbysxO2JyZWFrO2Nhc2UgRDppZihlPT09USlyZXR1cm4gbysxfXJldHVybiBvfWZ1bmN0aW9uIEdlKGUpe2Zvcih2YXIgdCBpbiBlKXt2YXIgbj1lW3RdO3N3aXRjaCh0KXtjYXNlXCJrZXlmcmFtZVwiOlJlPTB8bjticmVhaztjYXNlXCJnbG9iYWxcIjp3ZT0wfG47YnJlYWs7Y2FzZVwiY2FzY2FkZVwiOmdlPTB8bjticmVhaztjYXNlXCJjb21wcmVzc1wiOnllPTB8bjticmVhaztjYXNlXCJzZW1pY29sb25cIjpiZT0wfG47YnJlYWs7Y2FzZVwicHJlc2VydmVcIjp4ZT0wfG47YnJlYWs7Y2FzZVwicHJlZml4XCI6TWU9bnVsbCxuP1wiZnVuY3Rpb25cIiE9dHlwZW9mIG4/bWU9MToobWU9MixNZT1uKTptZT0wfX1yZXR1cm4gR2V9ZnVuY3Rpb24gVWUodCxuKXtpZih2b2lkIDAhPT10aGlzJiZ0aGlzLmNvbnN0cnVjdG9yPT09VWUpcmV0dXJuIGUodCk7dmFyIG89dCxpPW8uY2hhckNvZGVBdCgwKTtpPDMzJiYoaT0obz1vLnRyaW0oKSkuY2hhckNvZGVBdCgwKSksUmU+MCYmKEllPW8ucmVwbGFjZShwLGk9PT1UP1wiXCI6XCItXCIpKSxpPTEsMT09PWdlP1RlPW86WmU9bzt2YXIgYSxsPVtUZV07X2U+MCYmdm9pZCAwIT09KGE9emUoRWUsbixsLGwsaGUsQ2UsMCwwLDAsMCkpJiZcInN0cmluZ1wiPT10eXBlb2YgYSYmKG49YSk7dmFyIGM9QWUoT2UsbCxuLDAsMCk7cmV0dXJuIF9lPjAmJnZvaWQgMCE9PShhPXplKGplLGMsbCxsLGhlLENlLGMubGVuZ3RoLDAsMCwwKSkmJlwic3RyaW5nXCIhPXR5cGVvZihjPWEpJiYoaT0wKSxJZT1cIlwiLFRlPVwiXCIsWmU9XCJcIix2ZT0wLGhlPTEsQ2U9MSx5ZSppPT0wP2M6Yy5yZXBsYWNlKHIsXCJcIikucmVwbGFjZShnLFwiXCIpLnJlcGxhY2UobSxcIiQxXCIpLnJlcGxhY2UodyxcIiQxXCIpLnJlcGxhY2UoeSxcIiBcIil9cmV0dXJuIFVlLnVzZT1mdW5jdGlvbiBlKHQpe3N3aXRjaCh0KXtjYXNlIHZvaWQgMDpjYXNlIG51bGw6X2U9TGUubGVuZ3RoPTA7YnJlYWs7ZGVmYXVsdDppZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KUxlW19lKytdPXQ7ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgdClmb3IodmFyIG49MCxyPXQubGVuZ3RoO248cjsrK24pZSh0W25dKTtlbHNlIFZlPTB8ISF0fXJldHVybiBlfSxVZS5zZXQ9R2Usdm9pZCAwIT09dCYmR2UodCksVWV9KG51bGwpfSwzMzc6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHthOigpPT5mLE46KCk9PmR9KTt2YXIgcj1uKDY3OCksbz1uKDQzOCksaT1uKDEwMCksYT1uKDEyNyk7Y29uc3QgbD1lPT4oe2lkZW50aXR5OmUsb3BlbmZpbldpbmRvdzpmaW4uV2luZG93LndyYXBTeW5jKGUpLGdldFBhZ2VzOmFzeW5jKCk9Pihhd2FpdCgwLG8ueHApKGUpKS5kaXNwYXRjaChvLmZuLkdldFBhZ2VzRm9yV2luZG93LGUpLGdldFBhZ2U6YXN5bmMgdD0+KGF3YWl0KDAsby54cCkoZSkpLmRpc3BhdGNoKG8uZm4uR2V0UGFnZUZvcldpbmRvdyx7aWRlbnRpdHk6ZSxwYWdlSWQ6dH0pLGFkZFBhZ2U6YXN5bmMgdD0+e2NvbnN0IG49YXdhaXQoMCxvLnhwKShlKTt0Py50aXRsZXx8KHQudGl0bGU9YXdhaXQgbi5kaXNwYXRjaChvLmZuLkdldFVuaXF1ZVBhZ2VUaXRsZSx2b2lkIDApKTtjb25zdCByPShhd2FpdCBuLmRpc3BhdGNoKG8uZm4uR2V0QWxsQXR0YWNoZWRQYWdlcyx2b2lkIDApKS5maW5kKChlPT5lLnBhZ2VJZD09PXQucGFnZUlkfHxlLnRpdGxlPT09dC50aXRsZSkpO2lmKHIpdGhyb3cgci5wYWdlSWQ9PT10LnBhZ2VJZD9uZXcgRXJyb3IoYHBhZ2Ugd2l0aCBpZCAke3QucGFnZUlkfSBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIGEgYnJvd3NlciB3aW5kb3cgJHtyLnBhcmVudElkZW50aXR5Lm5hbWV9YCk6bmV3IEVycm9yKGBwYWdlIHdpdGggdGl0bGUgJHt0LnRpdGxlfSBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIGEgYnJvd3NlciB3aW5kb3cgJHtyLnBhcmVudElkZW50aXR5Lm5hbWV9YCk7Y29uc3QgaT17aWRlbnRpdHk6ZSxwYWdlczpbdF19O3JldHVybiBuLmRpc3BhdGNoKG8uZm4uQXR0YWNoUGFnZXNUb1dpbmRvdyxpKX0scmVtb3ZlUGFnZTphc3luYyB0PT4oYXdhaXQoMCxvLnhwKShlKSkuZGlzcGF0Y2goby5mbi5EZXRhY2hQYWdlc0Zyb21XaW5kb3cse2lkZW50aXR5OmUscGFnZUlkczpbdF19KSxzZXRBY3RpdmVQYWdlOmFzeW5jIHQ9Pihhd2FpdCgwLG8ueHApKGUpKS5kaXNwYXRjaChvLmZuLlNldEFjdGl2ZVBhZ2Use2lkZW50aXR5OmUscGFnZUlkOnR9KSx1cGRhdGVQYWdlOmFzeW5jIHQ9Pntjb25zdCBuPWF3YWl0KDAsby54cCkoZSk7cmV0dXJuIHQuaWRlbnRpdHk9ZSxuLmRpc3BhdGNoKG8uZm4uVXBkYXRlUGFnZUZvcldpbmRvdyx0KX0scmVvcmRlclBhZ2VzOmFzeW5jIHQ9Pntjb25zdCBuPWF3YWl0KDAsby54cCkoZSk7cmV0dXJuIHQuaWRlbnRpdHk9ZSxuLmRpc3BhdGNoKG8uZm4uUmVvcmRlclBhZ2VzRm9yV2luZG93LHQpfSxfb3Blbkdsb2JhbENvbnRleHRNZW51OmFzeW5jIHQ9Pntjb25zdCBuPWF3YWl0KDAsby54cCkoZSk7cmV0dXJuIHQuaWRlbnRpdHk9ZSxuLmRpc3BhdGNoKG8uZm4uT3Blbkdsb2JhbENvbnRleHRNZW51SW50ZXJuYWwsdCl9LHJlcGxhY2VUb29sYmFyT3B0aW9uczphc3luYyB0PT57YXdhaXQoMCxvLnhwKShlKTtjb25zdCBuPWZpbi5XaW5kb3cud3JhcFN5bmMoZSk7YXdhaXQgbi51cGRhdGVPcHRpb25zKHt3b3Jrc3BhY2VQbGF0Zm9ybTp7dG9vbGJhck9wdGlvbnM6dH19KX0scmVwbGFjZVdpbmRvd1N0YXRlQnV0dG9uT3B0aW9uczphc3luYyB0PT57YXdhaXQoMCxvLnhwKShlKTtjb25zdCBuPWZpbi5XaW5kb3cud3JhcFN5bmMoZSk7YXdhaXQgbi51cGRhdGVPcHRpb25zKHt3b3Jrc3BhY2VQbGF0Zm9ybTp7d2luZG93U3RhdGVCdXR0b25PcHRpb25zOnR9fSl9LF9vcGVuVmlld1RhYkNvbnRleHRNZW51OmFzeW5jIHQ9Pntjb25zdCBuPWF3YWl0KDAsby54cCkoZSk7cmV0dXJuIHQuaWRlbnRpdHk9ZSxuLmRpc3BhdGNoKG8uZm4uT3BlblZpZXdUYWJDb250ZXh0TWVudUludGVybmFsLHQpfSxfb3BlblBhZ2VUYWJDb250ZXh0TWVudTphc3luYyB0PT57Y29uc3Qgbj1hd2FpdCgwLG8ueHApKGUpO3JldHVybiB0LmlkZW50aXR5PWUsbi5kaXNwYXRjaChvLmZuLk9wZW5QYWdlVGFiQ29udGV4dE1lbnVJbnRlcm5hbCx0KX0sX29wZW5TYXZlTW9kYWw6YXN5bmMgdD0+e2F3YWl0KDAsby54cCkoZSk7cmV0dXJuKGF3YWl0KDAsYS5EbSkoZSkpLmRpc3BhdGNoKGEueXouT3BlblNhdmVNb2RhbEludGVybmFsLHQpfSxfb3BlblNhdmVCdXR0b25Db250ZXh0TWVudTphc3luYyB0PT57Y29uc3Qgbj1hd2FpdCgwLG8ueHApKGUpO3JldHVybiB0LmlkZW50aXR5PWUsbi5kaXNwYXRjaChvLmZuLk9wZW5TYXZlQnV0dG9uQ29udGV4dE1lbnVJbnRlcm5hbCx0KX19KSxjPWU9Pntjb25zdCB0PWZpbi5QbGF0Zm9ybS53cmFwU3luYyhlKTtyZXR1cm57d3JhcFN5bmM6ZT0+bChlKSxjcmVhdGVXaW5kb3c6YXN5bmMgbj0+e2F3YWl0KDAsby54cCkoZSk7Y29uc3Qgcj1hd2FpdCB0LmNyZWF0ZVdpbmRvdyhuKTtyZXR1cm4gbChyLmlkZW50aXR5KX0sZ2V0QWxsQXR0YWNoZWRQYWdlczphc3luYygpPT4oYXdhaXQoMCxvLnhwKShlKSkuZGlzcGF0Y2goby5mbi5HZXRBbGxBdHRhY2hlZFBhZ2VzLHZvaWQgMCksZ2V0QWxsV2luZG93czphc3luYygpPT57YXdhaXQoMCxvLnhwKShlKTtyZXR1cm4oYXdhaXQgZmluLkFwcGxpY2F0aW9uLndyYXBTeW5jKGUpLmdldENoaWxkV2luZG93cygpKS5maWx0ZXIoKGU9PmUuaWRlbnRpdHkubmFtZS5zdGFydHNXaXRoKFwiaW50ZXJuYWwtZ2VuZXJhdGVkLXdpbmRvdy1cIikpKS5tYXAoKGU9PmwoZS5pZGVudGl0eSkpKX0sZ2V0VW5pcXVlUGFnZVRpdGxlOmFzeW5jIHQ9Pihhd2FpdCgwLG8ueHApKGUpKS5kaXNwYXRjaChvLmZuLkdldFVuaXF1ZVBhZ2VUaXRsZSx0KSxnZXRMYXN0Rm9jdXNlZFdpbmRvdzphc3luYygpPT4oYXdhaXQoMCxvLnhwKShlKSkuZGlzcGF0Y2goby5mbi5HZXRMYXN0Rm9jdXNlZEJyb3dzZXJXaW5kb3csdm9pZCAwKX19LHM9ZT0+KHtjcmVhdGVQYWdlOmFzeW5jIHQ9Pihhd2FpdCgwLG8ueHApKGUpKS5kaXNwYXRjaChvLmZuLkNyZWF0ZVNhdmVkUGFnZUludGVybmFsLHQpLGRlbGV0ZVBhZ2U6YXN5bmMgdD0+KGF3YWl0KDAsby54cCkoZSkpLmRpc3BhdGNoKG8uZm4uRGVsZXRlU2F2ZWRQYWdlSW50ZXJuYWwsdCksdXBkYXRlUGFnZTphc3luYyB0PT4oYXdhaXQoMCxvLnhwKShlKSkuZGlzcGF0Y2goby5mbi5VcGRhdGVTYXZlZFBhZ2VJbnRlcm5hbCx0KSxnZXRQYWdlOmFzeW5jIHQ9Pihhd2FpdCgwLG8ueHApKGUpKS5kaXNwYXRjaChvLmZuLkdldFNhdmVkUGFnZSx0KSxnZXRQYWdlczphc3luYyB0PT4oYXdhaXQoMCxvLnhwKShlKSkuZGlzcGF0Y2goby5mbi5HZXRTYXZlZFBhZ2VzLHQpLHNhdmVQYWdlOmFzeW5jIHQ9Pihhd2FpdCgwLG8ueHApKGUpKS5kaXNwYXRjaChvLmZuLlNhdmVQYWdlLHQpLGNyZWF0ZVdvcmtzcGFjZTphc3luYyB0PT4oYXdhaXQoMCxvLmo3KShlKSkuZGlzcGF0Y2goby5mbi5DcmVhdGVTYXZlZFdvcmtzcGFjZSx0KSxkZWxldGVXb3Jrc3BhY2U6YXN5bmMgdD0+e2NvbnN0IG49ZigpLHI9YXdhaXQgbi5nZXRDdXJyZW50V29ya3NwYWNlKCk7aWYoci53b3Jrc3BhY2VJZD09PXQpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZGVsZXRlIGN1cnJlbnQgYWN0aXZlIHdvcmtzcGFjZSAke3IudGl0bGV9YCk7cmV0dXJuKGF3YWl0KDAsby5qNykoZSkpLmRpc3BhdGNoKG8uZm4uRGVsZXRlU2F2ZWRXb3Jrc3BhY2UsdCl9LHVwZGF0ZVdvcmtzcGFjZTphc3luYyB0PT4oYXdhaXQoMCxvLmo3KShlKSkuZGlzcGF0Y2goby5mbi5VcGRhdGVTYXZlZFdvcmtzcGFjZSx0KSxnZXRXb3Jrc3BhY2U6YXN5bmMgdD0+KGF3YWl0KDAsby5qNykoZSkpLmRpc3BhdGNoKG8uZm4uR2V0U2F2ZWRXb3Jrc3BhY2UsdCksZ2V0V29ya3NwYWNlczphc3luYyB0PT4oYXdhaXQoMCxvLmo3KShlKSkuZGlzcGF0Y2goby5mbi5HZXRTYXZlZFdvcmtzcGFjZXMsdCksc2F2ZVdvcmtzcGFjZTphc3luYyB0PT4oYXdhaXQoMCxvLmo3KShlKSkuZGlzcGF0Y2goby5mbi5TYXZlV29ya3NwYWNlLHQpLGdldERvY2tQcm92aWRlckNvbmZpZzphc3luYyB0PT4oYXdhaXQoMCxvLmo3KShlKSkuZGlzcGF0Y2goby5mbi5HZXREb2NrUHJvdmlkZXJDb25maWcsdCksc2F2ZURvY2tQcm92aWRlckNvbmZpZzphc3luYyB0PT4oYXdhaXQoMCxvLmo3KShlKSkuZGlzcGF0Y2goby5mbi5TYXZlRG9ja1Byb3ZpZGVyQ29uZmlnLHQpfSk7dmFyIHU9big3MDUpO2NvbnN0IGQ9ZT0+e2NvbnN0IHQ9ZmluLlBsYXRmb3JtLndyYXBTeW5jKGUpO2xldCBuO3JldHVybiBPYmplY3QuYXNzaWduKHQse2FwcGx5U25hcHNob3Q6YXN5bmModCxuKT0+e2lmKFwic3RyaW5nXCIhPXR5cGVvZiB0JiYhdD8ud2luZG93cyl0aHJvdyBuZXcgRXJyb3IoXCJOb3QgYSB2YWxpZCBicm93c2VyIHNuYXBzaG90XCIpO3JldHVybiBmaW4uUGxhdGZvcm0ud3JhcFN5bmMoZSkuYXBwbHlTbmFwc2hvdCh0LG4pfSxnZXRTbmFwc2hvdDooKT0+ZmluLlBsYXRmb3JtLndyYXBTeW5jKGUpLmdldFNuYXBzaG90KCkudGhlbigoZT0+ZSkpLGxhdW5jaEFwcDphc3luYyB0PT57Y29uc29sZS53YXJuKFwibGF1bmNoQXBwIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgY3JlYXRlVmlldyAtIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuZmluLmNvL29mLWRvY3MvZG9jcy9wbGF0Zm9ybS1nZXR0aW5nLXN0YXJ0ZWQjYWRkLWEtdmlldy10by1hbi1leGlzdGluZy13aW5kb3cgb3IgIGNyZWF0ZVdpbmRvdyAtIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuZmluLmNvL29mLWRvY3MvZG9jcy9wbGF0Zm9ybS1nZXR0aW5nLXN0YXJ0ZWQjY3JlYXRlLWEtcGxhdGZvcm0td2luZG93IGluc3RlYWQuXCIpLHQudGFyZ2V0fHwodC50YXJnZXQ9e3V1aWQ6ci5BQixuYW1lOnIub0MsZW50aXR5VHlwZTpyLkNMfHxcInVua25vd25cIn0pO3JldHVybihhd2FpdCgwLG8uajcpKGUpKS5kaXNwYXRjaChvLmZuLkxhdW5jaEFwcCx0KX0sX2ludm9rZUN1c3RvbUFjdGlvbjphc3luYyh0LG4pPT57Y29uc3Qgcj1hd2FpdCgwLG8uajcpKGUpLGE9e2FjdGlvbklkOnQscGF5bG9hZDp7Li4ubixjYWxsZXJUeXBlOm4uY2FsbGVyVHlwZXx8aS4kZy5BUEl9fTtyZXR1cm4gci5kaXNwYXRjaChvLmZuLkludm9rZUN1c3RvbUFjdGlvbkludGVybmFsLGEpfSxfcmVxdWVzdFF1aXRQbGF0Zm9ybURpYWxvZzphc3luYyB0PT4oYXdhaXQoMCxvLmo3KShlKSkuZGlzcGF0Y2goby5mbi5SZXF1ZXN0UXVpdFBsYXRmb3JtRGlhbG9nSW50ZXJuYWwsdCksZ2V0Q3VycmVudFdvcmtzcGFjZTphc3luYygpPT4oYXdhaXQoMCxvLmo3KShlKSkuZGlzcGF0Y2goby5mbi5HZXRDdXJyZW50V29ya3NwYWNlLHZvaWQgMCksYXBwbHlXb3Jrc3BhY2U6YXN5bmModCxuKT0+KGF3YWl0KDAsby5qNykoZSkpLmRpc3BhdGNoKG8uZm4uQXBwbHlXb3Jrc3BhY2Usey4uLnQsb3B0aW9uczpufSksc2V0QWN0aXZlV29ya3NwYWNlOmFzeW5jIHQ9Pihhd2FpdCgwLG8uajcpKGUpKS5kaXNwYXRjaChvLmZuLlNldEFjdGl2ZVdvcmtzcGFjZSx0KSxfcmFpc2VBbmFseXRpY3M6YXN5bmMgdD0+e2lmKG58fChuPWF3YWl0KDAsby5IaCkoZSkpLFwib2JqZWN0XCI9PXR5cGVvZiBuJiZuPy5hbmFseXRpY3M/LmlzU3VwcG9ydGVkKXtyZXR1cm4oYXdhaXQoMCxvLmo3KShlKSkuZGlzcGF0Y2goby5mbi5BbmFseXRpY3MsdCl9ZS51dWlkfSxUaGVtZTooMCx1LlAwKShlKSxCcm93c2VyOmMoZSksU3RvcmFnZTpzKGUpfSl9LGY9KCk9PmQoZmluLm1lLmlkZW50aXR5KX0sNzA1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7UDA6KCk9PmF9KTtuKDYxKSxuKDcyOCksbigxMjEpLG4oMTI3KTt2YXIgcj1uKDExNyk7dmFyIG87IWZ1bmN0aW9uKGUpe2UuVXBkYXRlUGxhdGZvcm1UaGVtZVNjaGVtZT1cInVwZGF0ZS1wbGF0Zm9ybS10aGVtZS1zY2hlbWVcIn0ob3x8KG89e30pKTsoMCxyLlopKFwib2Ytd29ya3NwYWNlLW5vdGlmaWNhdGlvbnMtc3luY1wiKTtuKDE1MCk7dmFyIGk9big0MzgpO2NvbnN0IGE9ZT0+KHtnZXRUaGVtZXM6YXN5bmMoKT0+KGF3YWl0KDAsaS5qNykoZSkpLmRpc3BhdGNoKGkuZm4uR2V0VGhlbWVzLHZvaWQgMCksc2V0U2VsZWN0ZWRTY2hlbWU6YXN5bmMgdD0+KGF3YWl0KDAsaS5qNykoZSkpLmRpc3BhdGNoKGkuZm4uU2V0U2VsZWN0ZWRTY2hlbWUsdCksZ2V0U2VsZWN0ZWRTY2hlbWU6YXN5bmMoKT0+KGF3YWl0KDAsaS5qNykoZSkpLmRpc3BhdGNoKGkuZm4uR2V0U2VsZWN0ZWRTY2hlbWUsdm9pZCAwKX0pfSwxMDA6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHskZzooKT0+cyxpRDooKT0+byx3aDooKT0+cn0pO3ZhciByLG8saSxhLGwsYyxzLHU7big1NjQpLG4oNDk1KTshZnVuY3Rpb24oZSl7ZS5OZXdXaW5kb3c9XCJOZXdXaW5kb3dcIixlLk5ld1BhZ2U9XCJOZXdQYWdlXCIsZS5TYXZlUGFnZT1cIlNhdmVQYWdlXCIsZS5TYXZlUGFnZUFzPVwiU2F2ZVBhZ2VBc1wiLGUuUHJpbnQ9XCJQcmludFwiLGUuUHJpbnRBbGw9XCJQcmludEFsbFwiLGUuUHJpbnRTY3JlZW49XCJQcmludFNjcmVlblwiLGUuQ2xvc2VXaW5kb3c9XCJDbG9zZVdpbmRvd1wiLGUuUmVzdG9yZUNoYW5nZXM9XCJSZXN0b3JlQ2hhbmdlc1wiLGUuU2F2ZVdvcmtzcGFjZT1cIlNhdmVXb3Jrc3BhY2VcIixlLlNhdmVXb3Jrc3BhY2VBcz1cIlNhdmVXb3Jrc3BhY2VBc1wiLGUuUmVuYW1lV29ya3NwYWNlPVwiUmVuYW1lV29ya3NwYWNlXCIsZS5Td2l0Y2hXb3Jrc3BhY2U9XCJTd2l0Y2hXb3Jrc3BhY2VcIixlLkRlbGV0ZVdvcmtzcGFjZT1cIkRlbGV0ZVdvcmtzcGFjZVwiLGUuT3BlblN0b3JlZnJvbnQ9XCJPcGVuU3RvcmVmcm9udFwiLGUuQXBwZWFyYW5jZT1cIkFwcGVhcmFuY2VcIixlLlF1aXQ9XCJRdWl0XCIsZS5DdXN0b209XCJDdXN0b21cIn0ocnx8KHI9e30pKSxmdW5jdGlvbihlKXtlLkxpZ2h0PVwibGlnaHRcIixlLkRhcms9XCJkYXJrXCIsZS5TeXN0ZW09XCJzeXN0ZW1cIn0ob3x8KG89e30pKSxmdW5jdGlvbihlKXtlLkNsb3NlPVwiQ2xvc2VcIixlLkR1cGxpY2F0ZT1cIkR1cGxpY2F0ZVwiLGUuUmVuYW1lPVwiUmVuYW1lXCIsZS5TYXZlPVwiU2F2ZVwiLGUuU2F2ZUFzPVwiU2F2ZSBBc1wiLGUuQ3VzdG9tPVwiQ3VzdG9tXCJ9KGl8fChpPXt9KSksZnVuY3Rpb24oZSl7ZS5OZXdWaWV3PVwiTmV3Vmlld1wiLGUuRHVwbGljYXRlVmlld3M9XCJEdXBsaWNhdGVWaWV3XCIsZS5PcGVuV2l0aERlZmF1bHRCcm93c2VyPVwiT3BlbldpdGhEZWZhdWx0QnJvd3NlclwiLGUuUmVsb2FkVmlld3M9XCJSZWxvYWRUYWJcIixlLkNsb3NlVmlld3M9XCJDbG9zZVRhYlwiLGUuQWRkVG9DaGFubmVsPVwiQWRkVG9DaGFubmVsXCIsZS5SZW1vdmVGcm9tQ2hhbm5lbD1cIlJlbW92ZUZyb21DaGFubmVsXCIsZS5CYWNrPVwiQmFja1wiLGUuRm9yd2FyZD1cIkZvcndhcmRcIixlLlByaW50PVwiUHJpbnRcIixlLlByaW50QWxsPVwiUHJpbnRBbGxcIixlLlByaW50U2NyZWVuPVwiUHJpbnRTY3JlZW5cIixlLkN1c3RvbT1cIkN1c3RvbVwifShhfHwoYT17fSkpLGZ1bmN0aW9uKGUpe2UuU2hvd0hpZGVUYWJzPVwiU2hvd0hpZGVUYWJzXCIsZS5Db2xvckxpbmtpbmc9XCJDb2xvckxpbmtpbmdcIixlLlByZXNldExheW91dHM9XCJQcmVzZXRMYXlvdXRzXCIsZS5Mb2NrVW5sb2NrUGFnZT1cIkxvY2tVbmxvY2tQYWdlXCIsZS5TYXZlTWVudT1cIlNhdmVNZW51XCIsZS5TYXZlUGFnZT1cIlNhdmVQYWdlXCIsZS5NaW5pbWlzZT1cIk1pbmltaXNlXCIsZS5NYXhpbWlzZT1cIk1heGltaXNlXCIsZS5DbG9zZT1cIkNsb3NlXCIsZS5DdXN0b209XCJDdXN0b21cIn0obHx8KGw9e30pKSxmdW5jdGlvbihlKXtlLlNhdmVQYWdlPVwiU2F2ZVBhZ2VcIixlLlNhdmVXb3Jrc3BhY2U9XCJTYXZlV29ya3NwYWNlXCIsZS5TYXZlUGFnZUFzPVwiU2F2ZVBhZ2VBc1wiLGUuU2F2ZVdvcmtzcGFjZUFzPVwiU2F2ZVdvcmtzcGFjZUFzXCIsZS5DdXN0b209XCJDdXN0b21cIn0oY3x8KGM9e30pKSxmdW5jdGlvbihlKXtlLkN1c3RvbUJ1dHRvbj1cIkN1c3RvbUJ1dHRvblwiLGUuU3RvcmVDdXN0b21CdXR0b249XCJTdG9yZUN1c3RvbUJ1dHRvblwiLGUuQ3VzdG9tRHJvcGRvd25JdGVtPVwiQ3VzdG9tRHJvcGRvd25JdGVtXCIsZS5HbG9iYWxDb250ZXh0TWVudT1cIkdsb2JhbENvbnRleHRNZW51XCIsZS5WaWV3VGFiQ29udGV4dE1lbnU9XCJWaWV3VGFiQ29udGV4dE1lbnVcIixlLlBhZ2VUYWJDb250ZXh0TWVudT1cIlBhZ2VUYWJDb250ZXh0TWVudVwiLGUuU2F2ZUJ1dHRvbkNvbnRleHRNZW51PVwiU2F2ZUJ1dHRvbkNvbnRleHRNZW51XCIsZS5BUEk9XCJBUElcIn0oc3x8KHM9e30pKSxmdW5jdGlvbihlKXtlLlNBVkVfUEFHRT1cIlNBVkVfUEFHRVwiLGUuU0FWRV9XT1JLU1BBQ0U9XCJTQVZFX1dPUktTUEFDRVwiLGUuU0FWRV9QQUdFX0FTPVwiU0FWRV9QQUdFX0FTXCIsZS5TQVZFX1dPUktTUEFDRV9BUz1cIlNBVkVfV09SS1NQQUNFX0FTXCIsZS5SRU5BTUVfUEFHRT1cIlJFTkFNRV9QQUdFXCIsZS5SRU5BTUVfV09SS1NQQUNFPVwiUkVOQU1FX1dPUktTUEFDRVwifSh1fHwodT17fSkpfSwyMjI6KCk9PntcInVzZSBzdHJpY3RcIjt2YXIgZSx0LG47IWZ1bmN0aW9uKGUpe2UuRmV0Y2hpbmc9XCJmZXRjaGluZ1wiLGUuRmV0Y2hlZD1cImZldGNoZWRcIixlLkNvbXBsZXRlPVwiY29tcGxldGVcIn0oZXx8KGU9e30pKSxmdW5jdGlvbihlKXtlLlVzZXJBY3Rpb249XCJ1c2VyLWFjdGlvblwiLGUuRm9jdXNDaGFuZ2U9XCJmb2N1cy1jaGFuZ2VcIixlLlJlbG9hZD1cInJlbG9hZFwifSh0fHwodD17fSkpLGZ1bmN0aW9uKGUpe2UuQWN0aXZlPVwiYWN0aXZlXCIsZS5EZWZhdWx0PVwiZGVmYXVsdFwifShufHwobj17fSkpfSw0Mjc6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByOyFmdW5jdGlvbihlKXtlLkFjdGlvbkJ1dHRvbj1cIkFjdGlvbkJ1dHRvblwiLGUuRHJvcGRvd25CdXR0b249XCJEcm9wZG93bkJ1dHRvblwifShyfHwocj17fSkpfSw3NTg6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByLG8saTshZnVuY3Rpb24oZSl7ZS5TdWdnZXN0aW9uPVwic3VnZ2VzdGlvblwifShyfHwocj17fSkpLGZ1bmN0aW9uKGUpe2UuQ29udGFjdD1cIkNvbnRhY3RcIixlLkN1c3RvbT1cIkN1c3RvbVwiLGUuTGlzdD1cIkxpc3RcIixlLlBsYWluPVwiUGxhaW5cIixlLlNpbXBsZVRleHQ9XCJTaW1wbGVUZXh0XCIsZS5Mb2FkaW5nPVwiTG9hZGluZ1wiLGUuRXJyb3I9XCJFcnJvclwifShvfHwobz17fSkpLGZ1bmN0aW9uKGUpe2UuTXVsdGlTZWxlY3Q9XCJNdWx0aVNlbGVjdFwifShpfHwoaT17fSkpfSw1NjQ6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24oMjIyKSxuKDc1OCksbigxMTQpLG4oMTA5KSxuKDQyNyl9LDExNDooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHIsbzshZnVuY3Rpb24oZSl7ZS5TbmFwc2hvdD1cInNuYXBzaG90XCIsZS5NYW5pZmVzdD1cIm1hbmlmZXN0XCIsZS5WaWV3PVwidmlld1wiLGUuRXh0ZXJuYWw9XCJleHRlcm5hbFwifShyfHwocj17fSkpLGZ1bmN0aW9uKGUpe2UuTGFuZGluZ1BhZ2U9XCJsYW5kaW5nUGFnZVwiLGUuQXBwR3JpZD1cImFwcEdyaWRcIn0ob3x8KG89e30pKX0sMTA5OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcjshZnVuY3Rpb24oZSl7ZS5QcmltYXJ5PVwicHJpbWFyeVwiLGUuU2Vjb25kYXJ5PVwic2Vjb25kYXJ5XCIsZS5UZXh0T25seT1cInRleHRPbmx5XCJ9KHJ8fChyPXt9KSl9LDQyMDooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bigzMTEpLG4oOTEyKSxuKDE1MCl9LDQ5NTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHI7IWZ1bmN0aW9uKGUpe2UuTGVmdD1cIkxlZnRcIixlLlJpZ2h0PVwiUmlnaHRcIixlLlRvcD1cIlRvcFwiLGUuQm90dG9tPVwiQm90dG9tXCJ9KHJ8fChyPXt9KSl9LDEyNzooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse0RtOigpPT5hLHl6OigpPT5zfSk7dmFyIHI9bigxMTcpO24oMTIxKTtjb25zdCBvPWU9PmBfX2Jyb3dzZXJfd2luZG93X18tJHtlLnV1aWR9LSR7ZS5uYW1lfWAsaT1uZXcgTWFwLGE9ZT0+e2NvbnN0IHQ9byhlKTtyZXR1cm4gaS5oYXModCl8fGkuc2V0KHQsKDAsci5aKSh0KSksaS5nZXQodCkoKX07dmFyIGwsYzshZnVuY3Rpb24oZSl7ZS5DbG9zZUJyb3dzZXJXaW5kb3c9XCJjbG9zZS1icm93c2VyLXdpbmRvd1wiLGUuUXVpdFBsYXRmb3JtPVwicXVpdC1wbGF0Zm9ybVwiLGUuQ2xvc2VQYWdlPVwiY2xvc2UtcGFnZVwiLGUuQWRkVG9DaGFubmVsPVwiYWRkLXRvLWNoYW5uZWxcIixlLlJlbW92ZUZyb21DaGFubmVsPVwicmVtb3ZlLWZyb20tY2hhbm5lbFwiLGUuT3BlblNhdmVNb2RhbEludGVybmFsPVwib3Blbi1zYXZlLW1vZGFsLWludGVybmFsXCIsZS5EdXBsaWNhdGVQYWdlPVwiZHVwbGljYXRlLXBhZ2VcIixlLlNldFNlbGVjdGVkU2NoZW1lPVwic2V0LXNlbGVjdGVkLXNjaGVtZVwifShsfHwobD17fSkpLGZ1bmN0aW9uKGUpe2UuR2V0UGFnZXM9XCJnZXQtcGFnZXNcIixlLkdldEFjdGl2ZVBhZ2VGb3JXaW5kb3c9XCJnZXQtYWN0aXZlLXBhZ2UtZm9yLXdpbmRvd1wiLGUuQXR0YWNoUGFnZXNUb1dpbmRvdz1cImF0dGFjaC1wYWdlcy10by13aW5kb3dcIixlLkRldGFjaFBhZ2VzRnJvbVdpbmRvdz1cImRldGFjaC1wYWdlcy1mcm9tLXdpbmRvd1wiLGUuU2V0QWN0aXZlUGFnZUZvcldpbmRvdz1cInNldC1hY3RpdmUtcGFnZS1mb3Itd2luZG93XCIsZS5SZW5hbWVQYWdlPVwicmVuYW1lLXBhZ2VcIixlLlJlb3JkZXJQYWdlc0ZvcldpbmRvdz1cInJlb3JkZXItcGFnZXMtZm9yLXdpbmRvd1wiLGUuVXBkYXRlUGFnZUZvcldpbmRvdz1cInVwZGF0ZS1wYWdlLWZvci13aW5kb3dcIixlLlVwZGF0ZVBhZ2VzV2luZG93T3B0aW9ucz1cInVwZGF0ZS1wYWdlcy13aW5kb3ctb3B0aW9uc1wiLGUuSXNEZXRhY2hpbmdQYWdlcz1cImlzLWRldGFjaGluZy1wYWdlc1wiLGUuSXNBY3RpdmVQYWdlQ2hhbmdpbmc9XCJpcy1hY3RpdmUtcGFnZS1jaGFuZ2luZ1wifShjfHwoYz17fSkpO2NvbnN0IHM9ey4uLmwsLi4uY319LDQzODooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHI7bi5kKHQse0hoOigpPT5pLGZuOigpPT5yLGo3OigpPT5hLHhwOigpPT5sfSksZnVuY3Rpb24oZSl7ZS5MYXVuY2hBcHA9XCJsYXVuY2hBcHBcIixlLlNhdmVQYWdlPVwic2F2ZVBhZ2VcIixlLkdldFNhdmVkUGFnZT1cImdldFNhdmVkUGFnZVwiLGUuQ3JlYXRlU2F2ZWRQYWdlPVwiY3JlYXRlU2F2ZWRQYWdlXCIsZS5VcGRhdGVTYXZlZFBhZ2U9XCJ1cGRhdGVTYXZlZFBhZ2VcIixlLkRlbGV0ZVNhdmVkUGFnZT1cImRlbGV0ZVNhdmVkUGFnZVwiLGUuR2V0U2F2ZWRQYWdlcz1cImdldFNhdmVkUGFnZXNcIixlLkNyZWF0ZVNhdmVkUGFnZUludGVybmFsPVwiY3JlYXRlU2F2ZWRQYWdlSW50ZXJuYWxcIixlLlVwZGF0ZVNhdmVkUGFnZUludGVybmFsPVwidXBkYXRlU2F2ZWRQYWdlSW50ZXJuYWxcIixlLkRlbGV0ZVNhdmVkUGFnZUludGVybmFsPVwiZGVsZXRlU2F2ZWRQYWdlSW50ZXJuYWxcIixlLlNoYXJlUGFnZT1cInNoYXJlUGFnZVwiLGUuVXBkYXRlUGFnZUZvcldpbmRvdz1cInVwZGF0ZVBhZ2VGb3JXaW5kb3dcIixlLkF0dGFjaFBhZ2VzVG9XaW5kb3c9XCJhdHRhY2hQYWdlc1RvV2luZG93XCIsZS5EZXRhY2hQYWdlc0Zyb21XaW5kb3c9XCJkZXRhY2hQYWdlc0Zyb21XaW5kb3dcIixlLlJlb3JkZXJQYWdlc0ZvcldpbmRvdz1cInJlb3JkZXJQYWdlc0ZvcldpbmRvd1wiLGUuU2V0QWN0aXZlUGFnZT1cInNldEFjdGl2ZVBhZ2VcIixlLkdldEFsbEF0dGFjaGVkUGFnZXM9XCJnZXRBbGxBdHRhY2hlZFBhZ2VzXCIsZS5HZXRBY3RpdmVQYWdlSWRGb3JXaW5kb3c9XCJnZXRBY3RpdmVQYWdlSWRGb3JXaW5kb3dcIixlLkdldFBhZ2VzRm9yV2luZG93PVwiZ2V0UGFnZXNGb3JXaW5kb3dcIixlLkdldFBhZ2VGb3JXaW5kb3c9XCJnZXRQYWdlRm9yV2luZG93XCIsZS5HZXRTYXZlZFBhZ2VNZXRhZGF0YT1cImdldFNhdmVkUGFnZU1ldGFkYXRhXCIsZS5HZXRVbmlxdWVQYWdlVGl0bGU9XCJnZXRVbmlxdWVQYWdlVGl0bGVcIixlLkdldExhc3RGb2N1c2VkQnJvd3NlcldpbmRvdz1cImdldExhc3RGb2N1c2VkQnJvd3NlcldpbmRvd1wiLGUuR2V0VGhlbWVzPVwiZ2V0VGhlbWVzXCIsZS5HZXRTZWxlY3RlZFNjaGVtZT1cImdldFNlbGVjdGVkU2NoZW1lXCIsZS5TZXRTZWxlY3RlZFNjaGVtZT1cInNldFNlbGVjdGVkU2NoZW1lXCIsZS5PcGVuR2xvYmFsQ29udGV4dE1lbnVJbnRlcm5hbD1cIm9wZW5HbG9iYWxDb250ZXh0TWVudUludGVybmFsXCIsZS5PcGVuVmlld1RhYkNvbnRleHRNZW51SW50ZXJuYWw9XCJvcGVuVmlld1RhYkNvbnRleHRNZW51SW50ZXJuYWxcIixlLk9wZW5QYWdlVGFiQ29udGV4dE1lbnVJbnRlcm5hbD1cIm9wZW5QYWdlVGFiQ29udGV4dE1lbnVJbnRlcm5hbFwiLGUuT3BlblNhdmVCdXR0b25Db250ZXh0TWVudUludGVybmFsPVwib3BlblNhdmVCdXR0b25Db250ZXh0TWVudUludGVybmFsXCIsZS5JbnZva2VDdXN0b21BY3Rpb25JbnRlcm5hbD1cImludm9rZUN1c3RvbUFjdGlvbkludGVybmFsXCIsZS5SZXF1ZXN0UXVpdFBsYXRmb3JtRGlhbG9nSW50ZXJuYWw9XCJyZXF1ZXN0UXVpdFBsYXRmb3JtRGlhbG9nSW50ZXJuYWxcIixlLkdldFNhdmVkV29ya3NwYWNlPVwiZ2V0U2F2ZWRXb3Jrc3BhY2VcIixlLkNyZWF0ZVNhdmVkV29ya3NwYWNlPVwiY3JlYXRlU2F2ZWRXb3Jrc3BhY2VcIixlLlVwZGF0ZVNhdmVkV29ya3NwYWNlPVwidXBkYXRlU2F2ZWRXb3Jrc3BhY2VcIixlLkRlbGV0ZVNhdmVkV29ya3NwYWNlPVwiZGVsZXRlU2F2ZWRXb3Jrc3BhY2VcIixlLkdldFNhdmVkV29ya3NwYWNlcz1cImdldFNhdmVkV29ya3NwYWNlc1wiLGUuU2F2ZVdvcmtzcGFjZT1cInNhdmVXb3Jrc3BhY2VcIixlLkdldEN1cnJlbnRXb3Jrc3BhY2U9XCJnZXRDdXJyZW50V29ya3NwYWNlXCIsZS5BcHBseVdvcmtzcGFjZT1cImFwcGx5V29ya3NwYWNlXCIsZS5TZXRBY3RpdmVXb3Jrc3BhY2U9XCJzZXRBY3RpdmVXb3Jrc3BhY2VcIixlLklzQnJvd3NlckluaXRpYWxpemVkPVwiaXNCcm93c2VySW5pdGlhbGl6ZWRcIixlLkFuYWx5dGljcz1cImFuYWx5dGljc0ludGVybmFsXCIsZS5HZXREb2NrUHJvdmlkZXJDb25maWc9XCJnZXREb2NrUHJvdmlkZXJDb25maWdcIixlLlNhdmVEb2NrUHJvdmlkZXJDb25maWc9XCJzYXZlRG9ja1Byb3ZpZGVyQ29uZmlnXCJ9KHJ8fChyPXt9KSk7Y29uc3Qgbz1hc3luYyBlPT5maW4uUGxhdGZvcm0ud3JhcFN5bmMoZSkuZ2V0Q2xpZW50KCksaT1hc3luYyBlPT57Y29uc3QgdD1hd2FpdCBvKGUpLG49XCJUYXJnZXQgaXMgbm90IGEgV29ya3NwYWNlIFBsYXRmb3JtLiBUYXJnZXQgbXVzdCBjYWxsIFdvcmtzcGFjZVBsYXRmb3JtLmluaXRcIjtsZXQgcjt0cnl7cj1hd2FpdCB0LmRpc3BhdGNoKFwiaXNXb3Jrc3BhY2VQbGF0Zm9ybVwiKX1jYXRjaChlKXt0aHJvdyBuZXcgRXJyb3Iobil9aWYoXCJib29sZWFuXCI9PXR5cGVvZiByJiZyKXJldHVybiBjb25zb2xlLndhcm4oXCJZb3UgYXJlIHVzaW5nIGFuIG9sZGVyIHZlcnNpb24gb2YgdGhlIHdvcmtzcGFjZSBwbGF0Zm9ybS4gUGxlYXNlIHVwZGF0ZSB5b3VyIHdvcmtzcGFjZSBwbGF0Zm9ybS5cIikscjtpZihcIm9iamVjdFwiPT10eXBlb2YgciYmci5pc1dvcmtzcGFjZVBsYXRmb3JtKXJldHVybiByO3Rocm93IG5ldyBFcnJvcihuKX0sYT1hc3luYyBlPT4oYXdhaXQgaShlKSxvKGUpKSxsPWFzeW5jIGU9Pntjb25zdCB0PWF3YWl0IGkoZSk7aWYoXCJvYmplY3RcIj09dHlwZW9mIHQmJiEwIT09dD8uaXNCcm93c2VySW5pdGlhbGl6ZWQpdGhyb3cgbmV3IEVycm9yKFwiVGFyZ2V0IGlzIG5vdCBhIEJyb3dzZXItZW5hYmxlZCBXb3Jrc3BhY2UgUGxhdGZvcm0uXCIpO3JldHVybiBvKGUpfX0sMTUwOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDExNyksbz0obig2NzgpLG4oMTIxKSxuKDQ2KSk7KDAsci5aKShcIl9fb2Zfd29ya3NwYWNlX3Byb3RvY29sX19cIiksKDAsci5aKShvLlF4KX0sODI6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtSUjooKT0+cn0pO24oMTUwKTtjb25zdCByPSh7cGxhdGZvcm1JZGVudGl0eTplLGlkOnQ9XCJcIn0pPT5gJHtlLm5hbWV9LSR7ZS51dWlkfS0ke3R9YH0sNDY6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtReDooKT0+b30pO3ZhciByPW4oMTIxKTsoMCxuKDgyKS5SUikoe2lkOlwiaG9tZS1jb21tYW5kc1wiLHBsYXRmb3JtSWRlbnRpdHk6ci5PSX0pO2NvbnN0IG89XCJfX3NlYXJjaC1vcGVuZmluLWJyb3dzZXItaG9tZS10b3BpY19fXCI7dmFyIGksYTshZnVuY3Rpb24oZSl7ZS5GZXRjaGluZz1cImZldGNoaW5nXCIsZS5GZXRjaGVkPVwiZmV0Y2hlZFwiLGUuQ29tcGxldGU9XCJjb21wbGV0ZVwifShpfHwoaT17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Jbml0aWFsPTBdPVwiSW5pdGlhbFwiLGVbZS5PcGVuPTFdPVwiT3BlblwiLGVbZS5DbG9zZT0yXT1cIkNsb3NlXCJ9KGF8fChhPXt9KSl9LDY1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7VmI6KCk9PmZ9KTt2YXIgcj1uKDMwNCksbz1uKDUxMyksaT1uKDMzNyksYT1uKDEwMCk7bigxNTApO2NvbnN0IGw9e1tyLlBhbGV0dGUuYnJhbmRQcmltYXJ5XTpcIiMwQTc2RDNcIixbci5QYWxldHRlLnN0YXR1c1N1Y2Nlc3NdOnIuQ29sb3IuZnVuY3Rpb25hbDEsW3IuUGFsZXR0ZS5zdGF0dXNXYXJuaW5nXTpyLkNvbG9yLmZ1bmN0aW9uYWwxMCxbci5QYWxldHRlLnN0YXR1c0NyaXRpY2FsXTpyLkNvbG9yLmZ1bmN0aW9uYWw3LFtyLlBhbGV0dGUuc3RhdHVzQWN0aXZlXTpyLkNvbG9yLmZ1bmN0aW9uYWwzLFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQxXTpcIiMwQTc2RDNcIixbci5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kMl06XCIjMDAwMDAwXCIsW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDNdOlwiIzAwMDAwMFwiLFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQ0XTpcIiMwMDAwMDBcIixbci5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kNV06XCIjMDAwMDAwXCJ9LGM9ey4uLmwsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kMV06ci5Db2xvci53aGl0ZSxbci5QYWxldHRlLmJhY2tncm91bmQyXTpyLkNvbG9yLmxpZ2h0R3JheTEsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kM106ci5Db2xvci5saWdodEdyYXkyLFtyLlBhbGV0dGUuYmFja2dyb3VuZDRdOnIuQ29sb3IubGlnaHRHcmF5Myxbci5QYWxldHRlLmJhY2tncm91bmQ1XTpyLkNvbG9yLmxpZ2h0R3JheTQsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNl06ci5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUuYnJhbmRTZWNvbmRhcnldOnIuQ29sb3IuZGFya0dyYXk1LFtyLlBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kXTpyLkNvbG9yLmxpZ2h0R3JheTMsW3IuUGFsZXR0ZS5pbnB1dENvbG9yXTpyLkNvbG9yLmRhcmtHcmF5NSxbci5QYWxldHRlLmlucHV0UGxhY2Vob2xkZXJdOnIuQ29sb3IuZGFya0dyYXkyLFtyLlBhbGV0dGUuaW5wdXREaXNhYmxlZF06ci5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLmlucHV0Rm9jdXNlZF06ci5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUuaW5wdXRCb3JkZXJdOnIuQ29sb3IubmV1dHJhbEdyYXksW3IuUGFsZXR0ZS50ZXh0RGVmYXVsdF06ci5Db2xvci5kYXJrR3JheTUsW3IuUGFsZXR0ZS50ZXh0SGVscF06ci5Db2xvci5kYXJrR3JheTMsW3IuUGFsZXR0ZS50ZXh0SW5hY3RpdmVdOnIuQ29sb3IubmV1dHJhbEdyYXl9LHM9ey4uLmwsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kMV06ci5Db2xvci5kYXJrR3JheTYsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kMl06ci5Db2xvci5kYXJrR3JheTUsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kM106ci5Db2xvci5kYXJrR3JheTQsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNF06ci5Db2xvci5kYXJrR3JheTMsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNV06ci5Db2xvci5kYXJrR3JheTIsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNl06ci5Db2xvci5kYXJrR3JheTEsW3IuUGFsZXR0ZS5icmFuZFNlY29uZGFyeV06ci5Db2xvci5kYXJrR3JheTIsW3IuUGFsZXR0ZS5pbnB1dEJhY2tncm91bmRdOnIuQ29sb3IuZGFya0dyYXkxLFtyLlBhbGV0dGUuaW5wdXRDb2xvcl06ci5Db2xvci53aGl0ZSxbci5QYWxldHRlLmlucHV0UGxhY2Vob2xkZXJdOnIuQ29sb3IubGlnaHRHcmF5NSxbci5QYWxldHRlLmlucHV0RGlzYWJsZWRdOnIuQ29sb3IubmV1dHJhbEdyYXksW3IuUGFsZXR0ZS5pbnB1dEZvY3VzZWRdOnIuQ29sb3IubGlnaHRHcmF5NSxbci5QYWxldHRlLmlucHV0Qm9yZGVyXTpyLkNvbG9yLm5ldXRyYWxHcmF5LFtyLlBhbGV0dGUudGV4dERlZmF1bHRdOnIuQ29sb3Iud2hpdGUsW3IuUGFsZXR0ZS50ZXh0SGVscF06ci5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUudGV4dEluYWN0aXZlXTpyLkNvbG9yLm5ldXRyYWxHcmF5fSx1PVt7bGFiZWw6XCJPcGVuRmluIERlZmF1bHQgTGlnaHQgYW5kIERhcmsgVGhlbWVcIixwYWxldHRlczp7bGlnaHQ6ey4uLmMsYnJhbmRQcmltYXJ5OlwiIzBBNzZEM1wiLGJyYW5kU2Vjb25kYXJ5OnIuQ29sb3IuZGFya0dyYXk1LGJhY2tncm91bmRQcmltYXJ5OnIuQ29sb3IuZGFya0dyYXk1fSxkYXJrOnsuLi5zLGJyYW5kUHJpbWFyeTpcIiMwQTc2RDNcIixicmFuZFNlY29uZGFyeTpyLkNvbG9yLmRhcmtHcmF5MixiYWNrZ3JvdW5kUHJpbWFyeTpyLkNvbG9yLmRhcmtHcmF5NX19fV0sZD0oZSx0KT0+e2NvbnN0IG49ey4uLmV9LHI9ey4uLnR9O2xldCBpPXQuYmFja2dyb3VuZFByaW1hcnk/KDAsby50eikodC5iYWNrZ3JvdW5kUHJpbWFyeSwhMCk6e30sYT1lLmJhY2tncm91bmRQcmltYXJ5PygwLG8udHopKGUuYmFja2dyb3VuZFByaW1hcnkpOnt9O2k9ey4uLmksLi4ucn0sYT17Li4uYSwuLi5ufTtyZXR1cm57bGlnaHQ6ey4uLnQsLi4uaX0sZGFyazp7Li4uZSwuLi5hfX19LGY9YXN5bmMgZT0+e2xldCB0LG49YXdhaXQoMCxpLk4pKGUpLlRoZW1lLmdldFRoZW1lcygpO24mJjAhPT1uPy5sZW5ndGh8fChuPXUpO3RyeXt0PWF3YWl0KDAsaS5OKShlKS5UaGVtZS5nZXRTZWxlY3RlZFNjaGVtZSgpfWNhdGNoKGUpe2NvbnNvbGUud2FybihcIkZhaWxlZCB0byBnZXQgc2VsZWN0ZWQgc2NoZW1lIGZyb20gcGxhdGZvcm1cIixlKX1jb25zdCBsPSgoZSx0KT0+ZS5tYXAoKGU9PntsZXQgbixpLGwsdT1hLmlELkRhcms7aWYoXCJwYWxldHRlc1wiaW4gZSl7Y29uc3QgdD1lLnBhbGV0dGVzO2UuZGVmYXVsdCYmKHU9ZS5kZWZhdWx0KSxuPSgwLG8ub2IpKHMsdC5kYXJrKSxpPSgwLG8ub2IpKGMsdC5saWdodCksbD1kKHQuZGFyayx0LmxpZ2h0KX1lbHNlIGlmKFwicGFsZXR0ZVwiaW4gZSl7Y29uc3QgdD1lLnBhbGV0dGU7bj0oMCxvLm9iKShzLHQpLGk9KDAsby5vYikoYyx0KSxsPWQodCx0KX1jb25zdCBmPSgwLHIuY3JlYXRlVGhlbWUpKHsuLi5uLC4uLmw/LmRhcmt9KSxwPSgwLHIuY3JlYXRlVGhlbWUpKHsuLi5pLC4uLmw/LmxpZ2h0fSk7cmV0dXJue2xhYmVsOmUubGFiZWwsbG9nb1VybDplLmxvZ29VcmwsdGhlbWU6e2Rhcms6ZixsaWdodDpwfSxkZWZhdWx0U2NoZW1lOnR8fHV9fSkpKShuLHQpWzBdO3JldHVybiBsfX0sODA2OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7RDk6KCk9PmMscTk6KCk9PnJ9KTt2YXIgcixvLGk9big2NzgpOyFmdW5jdGlvbihlKXtlLldvcmtzcGFjZT1cIm9wZW5maW4td29ya3NwYWNlXCIsZS5PbGRXb3Jrc3BhY2U9XCJvcGVuZmluLWJyb3dzZXJcIn0ocnx8KHI9e30pKSxmdW5jdGlvbihlKXtlLkZpblByb3RvY29sPVwiZmluLXByb3RvY29sXCJ9KG98fChvPXt9KSk7Y29uc3QgYT17dXVpZDppLkFCfSxsPShyLldvcmtzcGFjZSxlPT57aWYoIWkuc1MpdGhyb3cgbmV3IEVycm9yKFwiZ2V0QXBwbGljYXRpb24gY2Fubm90IGJlIHVzZWQgaW4gYSBub24gT3BlbkZpbiBlbnYuIEF2b2lkIHVzaW5nIHRoaXMgZHVyaW5nIHByZS1yZW5kZXJpbmcuXCIpO3JldHVybiBmaW4uQXBwbGljYXRpb24ud3JhcFN5bmMoZSl9KSxjPSgpPT5sKGEpfSwxMTc6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtaOigpPT5pfSk7dmFyIHI9big2NzgpO2NvbnN0IG89ci5BeCYmXCJjb21wbGV0ZVwiIT09ZG9jdW1lbnQucmVhZHlTdGF0ZSYmbmV3IFByb21pc2UoKGU9PmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJyZWFkeXN0YXRlY2hhbmdlXCIsKCgpPT57XCJjb21wbGV0ZVwiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSYmZSgpfSkpKSk7ZnVuY3Rpb24gaShlKXtsZXQgdDtjb25zdCBuPW5ldyBTZXQ7cmV0dXJuKCk9PntpZighci5zUyl0aHJvdyBuZXcgRXJyb3IoXCJnZXRDaGFubmVsQ2xpZW50IGNhbm5vdCBiZSB1c2VkIG91dHNpZGUgYW4gT3BlbkZpbiBlbnYuIEF2b2lkIHVzaW5nIHRoaXMgbWV0aG9kIGR1cmluZyBwcmUtcmVuZGVyaW5nLlwiKTtyZXR1cm4gdHx8KHQ9KGFzeW5jKCk9Pnthd2FpdCBvO2NvbnN0IGk9e2NsaWVudEFQSVZlcnNpb246ci51MH0sYT1hd2FpdCBmaW4uSW50ZXJBcHBsaWNhdGlvbkJ1cy5DaGFubmVsLmNvbm5lY3QoZSx7cGF5bG9hZDppfSk7cmV0dXJuIGEub25EaXNjb25uZWN0aW9uKChhc3luYygpPT57bi5mb3JFYWNoKChlPT5lKCkpKSxuLmNsZWFyKCksY29uc29sZS53YXJuKGBkaXNjb25uZWN0ZWQgZnJvbSBjaGFubmVsIHByb3ZpZGVyICR7ZX1gKSx0PXZvaWQgMH0pKSxhfSkoKS50aGVuKChlPT4oZS5hZGREaXNjb25uZWN0aW9uTGlzdGVuZXI9ZT0+e24uYWRkKGUpfSxlKSkpLmNhdGNoKChuPT57dGhyb3cgdD12b2lkIDAsbmV3IEVycm9yKGBmYWlsZWQgdG8gY29ubmVjdCB0byBjaGFubmVsIHByb3ZpZGVyICR7ZX06ICR7bn1gKX0pKSksdH19fSw2Nzg6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByO24uZCh0LHtBQjooKT0+YyxBeDooKT0+aSxDTDooKT0+dSxfVjooKT0+YSxvQzooKT0+cyxyeDooKT0+ZixzUzooKT0+byx1MDooKT0+cH0pLGZ1bmN0aW9uKGUpe2UuTG9jYWw9XCJsb2NhbFwiLGUuRGV2PVwiZGV2XCIsZS5TdGFnaW5nPVwic3RhZ2luZ1wiLGUuUHJvZD1cInByb2RcIn0ocnx8KHI9e30pKTtjb25zdCBvPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBmaW4saT0oXCJ1bmRlZmluZWRcIj09dHlwZW9mIHByb2Nlc3N8fHByb2Nlc3MuZW52Py5KRVNUX1dPUktFUl9JRCxcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93KSxhPWkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBpbmRleGVkREIsbD1pP3dpbmRvdy5vcmlnaW46ci5Mb2NhbCxjPW8mJmZpbi5tZS51dWlkLHM9byYmZmluLm1lLm5hbWUsdT1vJiZmaW4ubWUuZW50aXR5VHlwZSxkPShyLkxvY2FsLHIuRGV2LHIuU3RhZ2luZyxyLlByb2QsZT0+ZS5zdGFydHNXaXRoKFwiaHR0cDovL1wiKXx8ZS5zdGFydHNXaXRoKFwiaHR0cHM6Ly9cIik/ZTpsK2UpLGY9KGQoXCJodHRwczovL3dvcmtzcGFjZS5vcGVuZmluLmNvL3dvcmtzcGFjZS8xNC4wLjIyXCIpLGQoXCJodHRwczovL3dvcmtzcGFjZS5vcGVuZmluLmNvL3dvcmtzcGFjZS8xNC4wLjIyXCIpKSxwPShcInVuZGVmaW5lZFwiIT10eXBlb2YgV09SS1NQQUNFX0RPQ1NfUExBVEZPUk1fVVJMJiZkKFdPUktTUEFDRV9ET0NTX1BMQVRGT1JNX1VSTCksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFdPUktTUEFDRV9ET0NTX0NMSUVOVF9VUkwmJmQoV09SS1NQQUNFX0RPQ1NfQ0xJRU5UX1VSTCksXCIxNC4wLjIyXCIpO1widW5kZWZpbmVkXCIhPXR5cGVvZiBXT1JLU1BBQ0VfQlVJTERfU0hBJiZXT1JLU1BBQ0VfQlVJTERfU0hBfSwzMTE6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtDJDooKT0+cn0pO24oNjc4KSxuKDEyMSk7Y29uc3Qgcj1lPT57Y29uc3QgdD1bXTtyZXR1cm4oZSYmQXJyYXkuaXNBcnJheShlKT9lOltdKS5mb3JFYWNoKChlPT57aWYoXCJjb21wb25lbnRcIj09PWUudHlwZSlyZXR1cm4gdC5wdXNoKGUuY29tcG9uZW50U3RhdGUpO2NvbnN0IG49cihlLmNvbnRlbnQpO3QucHVzaCguLi5uKX0pKSx0fTtuZXcgTWFwfSw2MTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHI7bi5kKHQse1o6KCk9Pm99KSxmdW5jdGlvbihlKXtlLkN1cnJlbnRXb3Jrc3BhY2VJZD1cImN1cnJlbnRXb3Jrc3BhY2VJZFwiLGUuTGFzdEZvY3VzZWRCcm93c2VyV2luZG93PVwibGFzdEZvY3VzZWRCcm93c2VyV2luZG93XCIsZS5NYWNoaW5lTmFtZT1cIm1hY2hpbmVOYW1lXCIsZS5OZXdUYWJQYWdlTGF5b3V0PVwiTmV3VGFiUGFnZUxheW91dFwiLGUuTmV3VGFiUGFnZVNvcnQ9XCJOZXdUYWJQYWdlU29ydFwiLGUuRG9ja1Bvc2l0aW9uPVwiRG9ja1Bvc2l0aW9uXCIsZS5TZWxlY3RlZENvbG9yU2NoZW1lPVwiU2VsZWN0ZWRDb2xvclNjaGVtZVwiLGUuSGFzTW92ZWRTdG9yZT1cIkhhc01vdmVkU3RvcmVcIn0ocnx8KHI9e30pKTtjb25zdCBvPXJ9LDcyODooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse0w6KCk9Pm8scjooKT0+aX0pO3ZhciByPW4oNjc4KTtjb25zdCBvPShlLHQpPT57bG9jYWxTdG9yYWdlLnNldEl0ZW0oYCR7ci5BQn0tJHtlfWAsdCl9LGk9ZT0+bG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7ci5BQn0tJHtlfWApfSw1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcjtuLmQodCx7WlA6KCk9Pml9KSxmdW5jdGlvbihlKXtlLkhvbWU9XCIvaG9tZS9cIixlLkhvbWVTZWFyY2g9XCIvaG9tZS8/ZGVlcGxpbms9c2VhcmNoXCIsZS5Ib21lUGFnZXNSZW5hbWU9XCIvaG9tZS9wYWdlcy9yZW5hbWUvXCIsZS5Eb2NrPVwiL2RvY2svXCIsZS5Ccm93c2VyPVwiL2Jyb3dzZXIvXCIsZS5Ccm93c2VyUG9wdXBNZW51PVwiL2Jyb3dzZXIvcG9wdXAtbWVudS9cIixlLlByb3ZpZGVyPVwiL3Byb3ZpZGVyL1wiLGUuQnJvd3NlclBvcHVwTWVudVNoYXJlUGFnZT1cIi9icm93c2VyL3BvcHVwLW1lbnUvc2hhcmUtcGFnZS9cIixlLkJyb3dzZXJQb3B1cE1lbnVTYXZlTW9kYWw9XCIvYnJvd3Nlci9wb3B1cC1tZW51L3NhdmUtbW9kYWwvXCIsZS5Ccm93c2VyUG9wdXBNZW51TGF5b3V0cz1cIi9icm93c2VyL3BvcHVwLW1lbnUvbGF5b3V0cy9sYXlvdXRzL1wiLGUuQnJvd3NlclBvcHVwTWVudUNvbG9yTGlua2luZz1cIi9icm93c2VyL3BvcHVwLW1lbnUvY29sb3ItbGlua2luZy9jb2xvci1saW5raW5nL1wiLGUuQnJvd3NlckluZGljYXRvcj1cIi9icm93c2VyL2luZGljYXRvci9cIixlLlJlc3BvbnNlTW9kYWw9XCIvYnJvd3Nlci9wb3B1cC1tZW51L3Jlc3BvbnNlLW1vZGFsL1wiLGUuRG9jcz1cIi9wcm92aWRlci9kb2NzL1wiLGUuU3RvcmVmcm9udD1cIi9zdG9yZWZyb250L1wiLGUuRGVwcmVjYXRlZEFsZXJ0PVwiL3Byb3ZpZGVyL2RlcHJlY2F0ZWQtYWxlcnQvXCIsZS5BbmFseXRpY3M9XCIvcHJvdmlkZXIvYW5hbHl0aWNzL1wifShyfHwocj17fSkpO3ZhciBvOyFmdW5jdGlvbihlKXtlLlNlYXJjaD1cInNlYXJjaFwifShvfHwobz17fSkpO2NvbnN0IGk9cn0sNjUwOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcjtuKDY3OCk7IWZ1bmN0aW9uKGUpe2UuSG9tZT1cIi9ob21lXCIsZS5Ccm93c2VyPVwiL2Jyb3dzZXJcIixlLlByb3ZpZGVyPVwiL3Byb3ZpZGVyXCIsZS5TdG9yZWZyb250PVwiL3N0b3JlZnJvbnRcIixlLkRvY2s9XCIvZG9ja1wifShyfHwocj17fSkpfSw5MTI6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24oMzExKSxuKDYxKX0sNTEzOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7b2I6KCk9PmwsdHo6KCk9PmF9KTtjb25zdCByPWU9PmUucmVwbGFjZSgvW15cXGQsXS9nLFwiXCIpLnNwbGl0KFwiLFwiKSxvPWU9PntpZihlLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgY29sb3Igb2JqZWN0LCBjYW5ub3QgY29udmVydCB0byBIU0wuXCIpO2NvbnN0IHQ9ZVswXS8yNTUsbj1lWzFdLzI1NSxyPWVbMl0vMjU1LG89TWF0aC5taW4odCxuLHIpLGk9TWF0aC5tYXgodCxuLHIpLGE9aS1vO2xldCBsPTAsYz0wLHM9MDtyZXR1cm4gbD0wPT09YT8wOmk9PT10PyhuLXIpL2ElNjppPT09bj8oci10KS9hKzI6KHQtbikvYSs0LGw9TWF0aC5yb3VuZCg2MCpsKSxsPDAmJihsKz0zNjApLHM9KGkrbykvMixjPTA9PWE/MDphLygxLU1hdGguYWJzKDIqcy0xKSksYz0rKDEwMCpjKS50b0ZpeGVkKDEpLHM9KygxMDAqcykudG9GaXhlZCgxKSx7aHNsOmBoc2woJHtsfSwgJHtjfSUsICR7c30lKWAsaHNsYTpgaHNsKCR7bH0sICR7Y30lLCAke3N9JSwgMSlgLGh1ZTpsLGxpZ2h0bmVzczpzLHNhdHVyYXRpb246Y319LGk9ZT0+e2lmKCFlKXRocm93IG5ldyBFcnJvcihcIkNvbG9yIGlzIG5vdCBkZWZpbmVkXCIpO2NvbnN0IHQ9ZS50b0xvd2VyQ2FzZSgpO2xldCBuO2lmKHQuaW5jbHVkZXMoXCJyZ2JcIikpe2NvbnN0IGU9cih0KTtlLmxlbmd0aD4zJiZlLnBvcCgpLG49byhlKS5odWV9aWYodC5pbmNsdWRlcyhcIiNcIikpe2NvbnN0IGU9KGU9PntpZighZS5pbmNsdWRlcyhcIiNcIikpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBoZXggdmFsdWUsIGNhbm5vdCBjb252ZXJ0IHRvIFJHQi4gSGV4IHZhbHVlIGJlZ2lucyB3aXRoIGEgaGFzaHRhZy5cIik7bGV0IHQ9MCxuPTAscj0wO2lmKDQ9PT1lLmxlbmd0aCl0PWAweCR7ZVsxXX0ke2VbMV19YCxuPWAweCR7ZVsyXX0ke2VbMl19YCxyPWAweCR7ZVszXX0ke2VbM119YDtlbHNle2lmKDchPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGhleCBzdHJpbmcgbGVuZ3RoLCBjYW5ub3QgY29udmVydCB0byBSR0IuXCIpO3Q9YDB4JHtlWzFdfSR7ZVsyXX1gLG49YDB4JHtlWzNdfSR7ZVs0XX1gLHI9YDB4JHtlWzVdfSR7ZVs2XX1gfXJldHVyblsrdCwrbiwrcl19KSh0KTtuPW8oZSkuaHVlfWlmKHQuaW5jbHVkZXMoXCJoc2xcIikpe249cih0KVswXX1jb25zdCBpPW4/LnRvU3RyaW5nKCk7aWYoIWkpdGhyb3cgbmV3IEVycm9yKGBIdWUgd2FzIHVuYWJsZSB0byBiZSBleHRyYWN0ZWQgZnJvbSBcIiR7dH1cIiwgY2hlY2sgY29sb3IgZm9ybWF0LiBBY2NlcHRlZCBmb3JtYXRzIGFyZTogcmdiKCksIHJnYmEoKSwgaGV4LCBoc2woKSwgYW5kIGhzbGEoKWApO3JldHVybiBpfSxhPShlLHQ9ITEpPT57Y29uc3Qgbj1pKGUpO3JldHVybiB0P3tiYWNrZ3JvdW5kMTpgaHNsYSgke259LCAwJSwgMTAwJSwgMSlgLGJhY2tncm91bmQyOmBoc2xhKCR7bn0sIDY3JSwgOTklLCAxKWAsYmFja2dyb3VuZDM6YGhzbGEoJHtufSwgMjYlLCA5NiUsIDEpYCxiYWNrZ3JvdW5kNDpgaHNsYSgke259LCAxNSUsIDk0JSwgMSlgLGJhY2tncm91bmQ1OmBoc2xhKCR7bn0sIDEwJSwgODglLCAxKWAsYmFja2dyb3VuZDY6YGhzbGEoJHtufSwgODAlLCA4MCUsIDEpYH06e2JhY2tncm91bmQxOmBoc2xhKCR7bn0sIDglLCA3JSwgMSlgLGJhY2tncm91bmQyOmBoc2xhKCR7bn0sIDglLCAxMyUsIDEpYCxiYWNrZ3JvdW5kMzpgaHNsYSgke259LCA5JSwgMTUlLCAxKWAsYmFja2dyb3VuZDQ6YGhzbGEoJHtufSwgNiUsIDIzJSwgMSlgLGJhY2tncm91bmQ1OmBoc2xhKCR7bn0sIDIxJSwgMjglLCAxKWAsYmFja2dyb3VuZDY6YGhzbGEoJHtufSwgNSUsIDUxJSwgMSlgfX0sbD0oZSx0KT0+e2NvbnN0IG49e307cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKHI9PntuW3JdPXRbcl0/dFtyXTplW3JdfSkpLG59fSw3NzI6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHt0ajooKT0+Wn0pO3ZhciByPW4oNjc4KSxvPW4oMTIxKSxpPW4oMTAwKTtuKDM3OCk7dmFyIGE9big4MDYpO3ZhciBsPW4oNSksYz1uKDEyNyk7big0MzgpO3ZhciBzPW4oMzExKTtjb25zdCB1PWFzeW5jKCk9Pntjb25zdCBlPWF3YWl0KDAsby5HUCkoKTtyZXR1cm4oYXdhaXQgUHJvbWlzZS5hbGwoZS5tYXAoKGFzeW5jIGU9Pnt0cnl7cmV0dXJuKGFzeW5jIGU9Pntjb25zdCB0PWF3YWl0KDAsYy5EbSkoZSk7cmV0dXJuIGF3YWl0IHQuZGlzcGF0Y2goYy55ei5HZXRQYWdlcyl9KShlLmlkZW50aXR5KX1jYXRjaCh0KXtKU09OLnN0cmluZ2lmeShlLmlkZW50aXR5KTtjb25zdCBuPWF3YWl0IGUuZ2V0T3B0aW9ucygpO3JldHVybiBuLndvcmtzcGFjZVBsYXRmb3JtPy5wYWdlc3x8W119fSkpKSkucmVkdWNlKCgoZSx0KT0+ZS5jb25jYXQodCkpLFtdKX07bmV3IE1hcDt2YXIgZDshZnVuY3Rpb24oZSl7ZS5FUlJPUj1cImVycm9yXCIsZS5TVUNDRVNTPVwic3VjY2Vzc1wiLGUuSU5GTz1cImluZm9cIn0oZHx8KGQ9e30pKTtjb25zdCBmPSgoZSx0KT0+e2NvbnN0IG49ZTtyZXR1cm4gbi53b3Jrc3BhY2VQbGF0Zm9ybXx8KG4ud29ya3NwYWNlUGxhdGZvcm09e30pLG4ud29ya3NwYWNlUGxhdGZvcm0uX2ludGVybmFsRGVmZXJTaG93T3B0aW9ucz17c2V0QXNGb3JlZ3JvdW5kOiEhdCxkZWZlclNob3dFbmFibGVkOiEwLGF1dG9TaG93Om4ud29ya3NwYWNlUGxhdGZvcm0/Ll9pbnRlcm5hbEF1dG9TaG93fHxuLndvcmtzcGFjZVBsYXRmb3JtPy5faW50ZXJuYWxEZWZlclNob3dPcHRpb25zPy5hdXRvU2hvd3x8dm9pZCAwPT09bi5hdXRvU2hvd3x8bi5hdXRvU2hvd30sbi5hdXRvU2hvdz0hMSxufSkoe2Fsd2F5c09uVG9wOiEwLGF1dG9TaG93OiExLGZyYW1lOiExLHJlc2l6YWJsZTohMSxzaG93VGFza2Jhckljb246ITF9KTt2YXIgcDshZnVuY3Rpb24oZSl7ZS5Mb2NrZWQ9XCJMb2NrQ2xvc2VkSWNvblwiLGUuVW5sb2NrZWQ9XCJMb2NrT3BlbjFJY29uXCJ9KHB8fChwPXt9KSk7IWZ1bmN0aW9uKGU9Zil7Y29uc3QgdD1uZXcgTWFwfSgpO3ZhciBDPW4oNjEpLGg9big3MjgpO24oNjUwKTtjb25zdCB2PShlLHQ9MCk9PntsZXQgbixyLG89ITE7Y29uc3QgaT1hc3luYyByPT57Y29uc3QgYT1hd2FpdCBlKC4uLnIpO2lmKG8pe2F3YWl0IG5ldyBQcm9taXNlKChlPT5zZXRUaW1lb3V0KGUsdCkpKTtjb25zdCBlPW47cmV0dXJuIG49dm9pZCAwLG89ITEsaShlKX1yZXR1cm4gYX07cmV0dXJuKC4uLmUpPT4ocj8obz0hMCxuPWUpOnI9aShlKS5jYXRjaCgoZT0+e3Rocm93IGNvbnNvbGUuZXJyb3IoXCJtYWtlRGVib3VuY2VkRnVuY1wiLGUpLGV9KSkuZmluYWxseSgoKCk9PntyPXZvaWQgMH0pKSxyKX07ZnVuY3Rpb24gZyhlLHQpe3JldHVybiBhc3luYyhuLC4uLnIpPT57ZS5oYXMobikmJmUuZ2V0KG4pLmZvckVhY2goKGU9PmUoLi4ucikpKSx0JiZhd2FpdCB0KHtldmVudDpuLHBheWxvYWQ6cn0pfX1mdW5jdGlvbiBtKGUsdCl7cmV0dXJuIHQmJnQoKHQ9Pntjb25zdHtldmVudDpuLHBheWxvYWQ6cn09dDtlLmhhcyhuKSYmZS5nZXQobikuZm9yRWFjaCgoZT0+ZSguLi5yKSkpfSkpLCh0LG4pPT57ZS5oYXModCl8fGUuc2V0KHQsbmV3IFNldCksZS5nZXQodCkuYWRkKG4pfX1mdW5jdGlvbiB3KGUpe3JldHVybih0LG4pPT57ZS5oYXModCl8fGUuc2V0KHQsbmV3IFNldCk7Y29uc3Qgcj1lLmdldCh0KSxvPSguLi5lKT0+e24oLi4uZSksci5kZWxldGUobyl9O3IuYWRkKG8pfX1mdW5jdGlvbiB5KGUpe3JldHVybih0LG4pPT57ZS5oYXModCkmJmUuZ2V0KHQpLmRlbGV0ZShuKX19big2NSk7by5JQS5Ccm93c2VyTWVudTsoZnVuY3Rpb24oZSl7Y29uc3QgdD1uZXcgTWFwO2codCwodD0+ci5zUyYmZmluLkludGVyQXBwbGljYXRpb25CdXMucHVibGlzaChlLHQpKSksbSh0LCh0PT5yLnNTJiZmaW4uSW50ZXJBcHBsaWNhdGlvbkJ1cy5zdWJzY3JpYmUoe3V1aWQ6ZmluLm1lLnV1aWR9LGUsdCkpKSx5KHQpLHcodCl9KShcIndpbmRvdy5tZW51XCIpLHYoKCgpPT4oMCxhLkQ5KSgpLmdldENoaWxkV2luZG93cygpKSw1MDApO25ldyBNYXA7dmFyIGI9bigxOTgpLHg9bi5uKGIpO2NvbnN0IE89ZT0+YCR7ZS5uYW1lfWAsTD1hc3luYygpPT57Y29uc3QgZT1hd2FpdCB1KCksdD1uZXcgU2V0O3JldHVybiBlLmZvckVhY2goKGU9PntbLi4uKDAscy5DJCkoZS5sYXlvdXQuY29udGVudCksLi4uKGUucGFuZWxzfHxbXSkubWFwKChlPT5lLnZpZXdPcHRpb25zKSldLmZvckVhY2goKGU9Pntjb25zdCBuPU8oZSk7biYmdC5hZGQobil9KSl9KSksdH07eCgpKCgoKT0+YXN5bmMgZnVuY3Rpb24oKXtjb25zdCBlPWF3YWl0IEwoKSx0PSgwLG8ubFEpKCksbj0oYXdhaXQgdC5nZXRDdXJyZW50Vmlld3MoKSkuZmlsdGVyKCgoe2lkZW50aXR5OnR9KT0+IWUuaGFzKE8odCkpKSk7bi5sZW5ndGgmJnNldFRpbWVvdXQoKGFzeW5jKCk9Pntjb25zdCBlPWF3YWl0IEwoKTtuLmZvckVhY2goKCh7aWRlbnRpdHk6dH0pPT57Y29uc3Qgbj1PKHQpO2UuaGFzKG4pfHxmaW4uVmlldy53cmFwU3luYyh0KS5kZXN0cm95KCl9KSl9KSwyNTAwKX0oKS5jYXRjaCgoZT0+Y29uc29sZS5kZWJ1ZyhcImVycm9yIGluIHNjaGVkdWxlVmlld0NsZWFudXBcIixlKSkpKSw1ZTMse2xlYWRpbmc6ITEsdHJhaWxpbmc6ITB9KTt4KCkoKGFzeW5jKCk9Pntjb25zdCBlPWF3YWl0IGZpbi5QbGF0Zm9ybS5nZXRDdXJyZW50U3luYygpLkFwcGxpY2F0aW9uLmdldENoaWxkV2luZG93cygpO2xldCB0LG49ITE7Zm9yKGNvbnN0IHIgb2YgZSlpZihyLmlkZW50aXR5Lm5hbWU9PT1vLklBLkJyb3dzZXJNZW51P3Q9cjphd2FpdCgwLG8uQikoci5pZGVudGl0eSkmJihuPSEwKSxuKWJyZWFrOyFuJiZ0JiZ0LmNsb3NlKCl9KSwxMDAse2xlYWRpbmc6ITEsdHJhaWxpbmc6ITB9KTtuKDkxMik7ZnVuY3Rpb24gXyhlKXtyZXR1cm4gbmV3IFByb21pc2UoKCh0LG4pPT57ZS5vbmNvbXBsZXRlPWUub25zdWNjZXNzPSgpPT50KGUucmVzdWx0KSxlLm9uYWJvcnQ9ZS5vbmVycm9yPSgpPT5uKGUuZXJyb3IpfSkpfWZ1bmN0aW9uIE0oZSx0KXtjb25zdCBuPWluZGV4ZWREQi5vcGVuKGUpO24ub251cGdyYWRlbmVlZGVkPSgpPT5uLnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSh0KTtjb25zdCByPV8obik7cmV0dXJuKGUsbik9PnIudGhlbigocj0+bihyLnRyYW5zYWN0aW9uKHQsZSkub2JqZWN0U3RvcmUodCkpKSl9bGV0IGo7ZnVuY3Rpb24gRSgpe3JldHVybiBqfHwoaj1NKFwia2V5dmFsLXN0b3JlXCIsXCJrZXl2YWxcIikpLGp9ZnVuY3Rpb24gUyhlLHQpe3JldHVybiBlLm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3M9ZnVuY3Rpb24oKXt0aGlzLnJlc3VsdCYmKHQodGhpcy5yZXN1bHQpLHRoaXMucmVzdWx0LmNvbnRpbnVlKCkpfSxfKGUudHJhbnNhY3Rpb24pfWNvbnN0IFA9YXN5bmMoZSx0LG4pPT57Y29uc3Qgcj1oLnIoQy5aLkhhc01vdmVkU3RvcmUpLG89cj9KU09OLnBhcnNlKHIpOnt9O2lmKG8mJm9bbl0pcmV0dXJuO29bbl09ITAsaC5MKEMuWi5IYXNNb3ZlZFN0b3JlLEpTT04uc3RyaW5naWZ5KG8pKTtjb25zdCBpPWF3YWl0IGZ1bmN0aW9uKGU9RSgpKXtyZXR1cm4gZShcInJlYWRvbmx5XCIsKHQ9PntpZih0LmdldEFsbCYmdC5nZXRBbGxLZXlzKXJldHVybiBQcm9taXNlLmFsbChbXyh0LmdldEFsbEtleXMoKSksXyh0LmdldEFsbCgpKV0pLnRoZW4oKChbZSx0XSk9PmUubWFwKCgoZSxuKT0+W2UsdFtuXV0pKSkpO2NvbnN0IG49W107cmV0dXJuIGUoXCJyZWFkb25seVwiLChlPT5TKGUsKGU9Pm4ucHVzaChbZS5rZXksZS52YWx1ZV0pKSkudGhlbigoKCk9Pm4pKSkpfSkpfShlKTthd2FpdCBmdW5jdGlvbihlLHQ9RSgpKXtyZXR1cm4gdChcInJlYWR3cml0ZVwiLCh0PT4oZS5mb3JFYWNoKChlPT50LnB1dChlWzFdLGVbMF0pKSksXyh0LnRyYW5zYWN0aW9uKSkpKX0oaSx0KX0sSD0oZSx0KT0+TShlK1wiLVwiK2Zpbi5tZS51dWlkLHQpLGs9KGUsdCk9Pntjb25zdCBuPUgoZSx0KSxyPU0oZSx0KTtyZXR1cm4gUChyLG4sZSksbn07ci5fViYmci5zUyYmayhcIm9wZW5maW4taG9tZS1wYWdlc1wiLFwicGFnZXNcIik7dmFyIFY7IWZ1bmN0aW9uKGUpe2UuTGFiZWw9XCJub3JtYWxcIixlLlNlcGFyYXRvcj1cInNlcGFyYXRvclwiLGUuU3VibWVudT1cInN1Ym1lbnVcIixlLkNoZWNrYm94PVwiY2hlY2tib3hcIn0oVnx8KFY9e30pKTtWLlNlcGFyYXRvcjtuKDQyMCksbigzMzcpO1YuTGFiZWwsaS53aC5DbG9zZVdpbmRvdyxWLkxhYmVsLGkud2guT3BlblN0b3JlZnJvbnQsVi5MYWJlbCxpLndoLlF1aXQsVi5MYWJlbCxpLndoLk5ld1dpbmRvdyxWLkxhYmVsLGkud2guU2F2ZVBhZ2UsVi5MYWJlbCxpLndoLlNhdmVQYWdlQXMsVi5MYWJlbCxpLndoLlJlc3RvcmVDaGFuZ2VzLFYuTGFiZWwsaS53aC5TYXZlV29ya3NwYWNlLFYuTGFiZWwsaS53aC5TYXZlV29ya3NwYWNlQXMsVi5MYWJlbCxpLndoLlJlbmFtZVdvcmtzcGFjZTtyLl9WJiZyLnNTJiZIKFwiZG9jay1wcm92aWRlci1jb25maWdzXCIsXCJkb2NrLXByb3ZpZGVyLWNvbmZpZ3NcIik7big3MDUpO3IuX1YmJnIuc1MmJmsoXCJvcGVuZmluLXdvcmtzcGFjZS1wbGF0Zm9ybS13b3Jrc3BhY2VzXCIsXCJ3b3Jrc3BhY2VzXCIpO24oNTY0KTtuKDQ5NSk7ci5yeCxsLlpQLkJyb3dzZXIsci5yeDt2YXIgUjshZnVuY3Rpb24oZSl7ZS5Ccm93c2VyPVwiQnJvd3NlclwiLGUuRG9jaz1cIkRvY2tcIixlLkhvbWU9XCJIb21lXCIsZS5Ob3RpZmljYXRpb249XCJOb3RpZmljYXRpb25cIixlLlN0b3JlZnJvbnQ9XCJTdG9yZWZyb250XCIsZS5QbGF0Zm9ybT1cIlBsYXRmb3JtXCIsZS5UaGVtaW5nPVwiVGhlbWluZ1wiLGUuTWljcm9mbG93PVwiTWljcm9mbG93XCJ9KFJ8fChSPXt9KSk7Y29uc3QgST1hc3luYyhlLHQpPT57Y29uc3Qgbj17YXBpVmVyc2lvbjp0LmFwaVZlcnNpb258fHIudTAsY29tcG9uZW50TmFtZTplLGNvbXBvbmVudFZlcnNpb246dC5jb21wb25lbnRWZXJzaW9ufHxyLnUwLGFsbG93ZWQ6dC5hbGxvd2VkLHJlamVjdGlvbkNvZGU6dC5yZWplY3Rpb25Db2RlfTtmaW4uU3lzdGVtLnJlZ2lzdGVyVXNhZ2Uoe3R5cGU6XCJ3b3Jrc3BhY2UtbGljZW5zaW5nXCIsZGF0YTpufSl9O2NvbnN0IFo9ZT0+e0koUi5Ob3RpZmljYXRpb24sZSl9O3ZhciBUOyFmdW5jdGlvbihlKXtlLkJyb3dzZXI9XCJCcm93c2VyXCIsZS5Eb2NrPVwiRG9ja1wiLGUuSG9tZT1cIkhvbWVcIixlLk5vdGlmaWNhdGlvbj1cIk5vdGlmaWNhdGlvblwiLGUuU3RvcmVmcm9udD1cIlN0b3JlZnJvbnRcIixlLlBsYXRmb3JtPVwiUGxhdGZvcm1cIixlLlRoZW1pbmc9XCJUaGVtaW5nXCIsZS5JbnRlcm9wPVwiSW50ZXJvcFwifShUfHwoVD17fSkpO25ldyBNYXB9LDEyMTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse0I6KCk9PnUsR1A6KCk9PmQsSUE6KCk9PnIsT0k6KCk9PnMsbFE6KCk9PmN9KTt2YXIgcixvPW4oODA2KSxpPW4oNjc4KTshZnVuY3Rpb24oZSl7ZS5Ib21lPVwib3BlbmZpbi1ob21lXCIsZS5Eb2NrPVwib3BlbmZpbi1kb2NrXCIsZS5TdG9yZWZyb250PVwib3BlbmZpbi1zdG9yZWZyb250XCIsZS5Ib21lSW50ZXJuYWw9XCJvcGVuZmluLWhvbWUtaW50ZXJuYWxcIixlLkJyb3dzZXJNZW51PVwib3BlbmZpbi1icm93c2VyLW1lbnVcIixlLkJyb3dzZXJJbmRpY2F0b3I9XCJvcGVuZmluLWJyb3dzZXItaW5kaWNhdG9yXCIsZS5Ccm93c2VyV2luZG93PVwiaW50ZXJuYWwtZ2VuZXJhdGVkLXdpbmRvd1wiLGUuQ2xhc3NpY1dpbmRvdz1cImludGVybmFsLWdlbmVyYXRlZC1jbGFzc2ljLXdpbmRvd1wifShyfHwocj17fSkpO2Z1bmN0aW9uIGEoZSl7aWYoIWkuc1MpdGhyb3cgbmV3IEVycm9yKFwiZ2V0T0ZXaW5kb3cgY2FuIG9ubHkgYmUgdXNlZCBpbiBhbiBPcGVuRmluIGVudi4gQXZvaWQgY2FsbGluZyB0aGlzIG1ldGhvZCBkdXJpbmcgcHJlLXJlbmRlcmluZy5cIik7cmV0dXJuIGZpbi5XaW5kb3cud3JhcFN5bmMoZSl9Y29uc3QgbD17bmFtZTppLm9DLHV1aWQ6aS5BQn07ZnVuY3Rpb24gYygpe3JldHVybiBhKGwpfWNvbnN0IHM9e25hbWU6ci5Ib21lLHV1aWQ6by5xOS5Xb3Jrc3BhY2V9O3IuRG9jayxvLnE5LldvcmtzcGFjZSxyLlN0b3JlZnJvbnQsby5xOS5Xb3Jrc3BhY2Usby5xOS5Xb3Jrc3BhY2Usby5xOS5Xb3Jrc3BhY2U7Y29uc3QgdT1hc3luYyBlPT57aWYoIWUubmFtZS5zdGFydHNXaXRoKHIuQnJvd3NlcldpbmRvdykpcmV0dXJuITE7Y29uc3QgdD1hd2FpdCBmaW4uV2luZG93LndyYXBTeW5jKHtuYW1lOmUubmFtZSx1dWlkOmUudXVpZD8/ZmluLm1lLnV1aWR9KS5nZXRPcHRpb25zKCk7cmV0dXJuISF0LndvcmtzcGFjZVBsYXRmb3JtPy5wYWdlc307YXN5bmMgZnVuY3Rpb24gZCgpe2NvbnN0IGU9YXdhaXQgZmluLkFwcGxpY2F0aW9uLmdldEN1cnJlbnRTeW5jKCkuZ2V0Q2hpbGRXaW5kb3dzKCksdD1hd2FpdCBQcm9taXNlLmFsbChlLm1hcCgoYXN5bmMgZT0+dShlLmlkZW50aXR5KSkpKTtyZXR1cm4gZS5maWx0ZXIoKChlLG4pPT50W25dKSl9fX0sdD17fTtmdW5jdGlvbiBuKHIpe3ZhciBvPXRbcl07aWYodm9pZCAwIT09bylyZXR1cm4gby5leHBvcnRzO3ZhciBpPXRbcl09e2V4cG9ydHM6e319O3JldHVybiBlW3JdKGksaS5leHBvcnRzLG4pLGkuZXhwb3J0c31uLm49ZT0+e3ZhciB0PWUmJmUuX19lc01vZHVsZT8oKT0+ZS5kZWZhdWx0OigpPT5lO3JldHVybiBuLmQodCx7YTp0fSksdH0sbi5kPShlLHQpPT57Zm9yKHZhciByIGluIHQpbi5vKHQscikmJiFuLm8oZSxyKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSxuLmc9ZnVuY3Rpb24oKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsVGhpcylyZXR1cm4gZ2xvYmFsVGhpczt0cnl7cmV0dXJuIHRoaXN8fG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCl9Y2F0Y2goZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93fX0oKSxuLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpLG4ucj1lPT57XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sbi5uYz12b2lkIDA7dmFyIHI9e307KCgpPT57XCJ1c2Ugc3RyaWN0XCI7bi5yKHIpLG4uZChyLHtkZXJlZ2lzdGVyOigpPT5zLHJlZ2lzdGVyOigpPT5jfSk7dmFyIGU9bigzNTEpLHQ9big3NzIpLG89big2NSksaT17fTtmb3IoY29uc3QgdCBpbiBlKVtcImRlZmF1bHRcIixcInJlZ2lzdGVyXCIsXCJkZXJlZ2lzdGVyXCJdLmluZGV4T2YodCk8MCYmKGlbdF09KCk9PmVbdF0pO24uZChyLGkpO2NvbnN0IGE9YXN5bmMgdD0+e2lmKHQgaW5zdGFuY2VvZiBFcnJvcil7bGV0IG49dC5tZXNzYWdlO2lmKHQubWVzc2FnZS5pbmNsdWRlcyhcInJlZ2lzdGVyLW5vdGlmaWNhdGlvbnMtcGxhdGZvcm1cIikpe2lmKG49XCJOb3RpZmljYXRpb25zIHBsYXRmb3JtcyBhcmUgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9ucyBiZWxvdyAxLjEzLjAsIHRyeSB1cGRhdGluZyB5b3VyIG5vdGlmaWNhdGlvbnMtc2VydmljZS5cIixlPy5wcm92aWRlcj8uZ2V0U3RhdHVzKXtjb25zdHt2ZXJzaW9uOnR9PWF3YWl0IGUucHJvdmlkZXIuZ2V0U3RhdHVzKCk7bis9YCBZb3VyIHZlcnNpb24gaXM6ICR7dH1gfXJldHVybiBufXJldHVybiB0Lm1lc3NhZ2V9cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/dDpcInVua25vd24gZXJyb3IgcmVnaXN0ZXJpbmcgTm90aWZpY2F0aW9uc1wifSxsPWFzeW5jIGU9PntpZihlIGluc3RhbmNlb2YgRXJyb3ImJmUubWVzc2FnZS5pbmNsdWRlcyhcInJlZ2lzdGVyLW5vdGlmaWNhdGlvbnMtcGxhdGZvcm1cIikpdGhyb3cgbmV3IEVycm9yKGF3YWl0IGEoZSkpO3Rocm93IGV9LGM9YXN5bmMgbj0+e2NvbnN0IHI9YXdhaXQoMCxvLlZiKShmaW4ubWUuaWRlbnRpdHkpO3RyeXtjb25zdCBvPWF3YWl0IGUucmVnaXN0ZXJQbGF0Zm9ybSh7Li4ubix0aGVtZTpyLnRoZW1lLHNjaGVtZTpyLmRlZmF1bHRTY2hlbWUsd29ya3NwYWNlUGxhdGZvcm06e2lkZW50aXR5OmZpbi5QbGF0Zm9ybS5nZXRDdXJyZW50U3luYygpLmlkZW50aXR5LGFuYWx5dGljczp7aXNTdXBwb3J0ZWQ6ITB9fX0pO3JldHVybigwLHQudGopKHthbGxvd2VkOiEwLGFwaVZlcnNpb246ZS5WRVJTSU9OLGNvbXBvbmVudFZlcnNpb246by5ub3RpZmljYXRpb25zVmVyc2lvbn0pLG99Y2F0Y2gobil7KDAsdC50aikoe2FsbG93ZWQ6ITEscmVqZWN0aW9uQ29kZTphd2FpdCBhKG4pLGFwaVZlcnNpb246ZS5WRVJTSU9OfSksYXdhaXQgbChuKX19LHM9YXN5bmMgdD0+e3RyeXthd2FpdCBlLmRlcmVnaXN0ZXJQbGF0Zm9ybSh0KX1jYXRjaChlKXthd2FpdCBsKGUpfX19KSgpLG1vZHVsZS5leHBvcnRzPXJ9KSgpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bm90aWZpY2F0aW9ucy5qcy5tYXAiLCJpbXBvcnQgdHlwZSBPcGVuRmluIGZyb20gXCJAb3BlbmZpbi9jb3JlXCI7XG5pbXBvcnQge1xuXHRDdXN0b21BY3Rpb25DYWxsZXJUeXBlLFxuXHRnZXRDdXJyZW50U3luYyxcblx0dHlwZSBCcm93c2VyQ3JlYXRlV2luZG93UmVxdWVzdCxcblx0dHlwZSBDdXN0b21BY3Rpb25QYXlsb2FkLFxuXHR0eXBlIEN1c3RvbUFjdGlvbnNNYXBcbn0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZS1wbGF0Zm9ybVwiO1xuaW1wb3J0IHsgdG9nZ2xlTm90aWZpY2F0aW9uQ2VudGVyIH0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZS9ub3RpZmljYXRpb25zXCI7XG5pbXBvcnQgeyBnZXRBcHAgfSBmcm9tIFwiLi9hcHBzXCI7XG5pbXBvcnQgKiBhcyBhdXRoUHJvdmlkZXIgZnJvbSBcIi4vYXV0aFwiO1xuaW1wb3J0IHsgdXBkYXRlVG9vbGJhckJ1dHRvbnMgfSBmcm9tIFwiLi9idXR0b25zXCI7XG5pbXBvcnQgKiBhcyBmYXZvcml0ZVByb3ZpZGVyIGZyb20gXCIuL2Zhdm9yaXRlXCI7XG5pbXBvcnQgeyBsYXVuY2ggfSBmcm9tIFwiLi9sYXVuY2hcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHsgY2xvc2Vkb3duTW9kdWxlcywgaW5pdGlhbGl6ZU1vZHVsZXMsIGxvYWRNb2R1bGVzIH0gZnJvbSBcIi4vbW9kdWxlc1wiO1xuaW1wb3J0IHsgbGF1bmNoVmlldyB9IGZyb20gXCIuL3BsYXRmb3JtL2Jyb3dzZXJcIjtcbmltcG9ydCB0eXBlIHsgQWN0aW9uSGVscGVycywgQWN0aW9ucywgQWN0aW9uc1Byb3ZpZGVyT3B0aW9ucyB9IGZyb20gXCIuL3NoYXBlcy9hY3Rpb25zLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBGYXZvcml0ZUVudHJ5IH0gZnJvbSBcIi4vc2hhcGVzL2Zhdm9yaXRlLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVFbnRyeSwgTW9kdWxlSGVscGVycyB9IGZyb20gXCIuL3NoYXBlcy9tb2R1bGUtc2hhcGVzXCI7XG5pbXBvcnQgeyBzaG93U2hhcmVPcHRpb25zIH0gZnJvbSBcIi4vc2hhcmVcIjtcbmltcG9ydCB7IHRvZ2dsZVNjaGVtZSB9IGZyb20gXCIuL3RoZW1lc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSwgaXNTdHJpbmdWYWx1ZSB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyBzaG93IH0gZnJvbSBcIi4vd29ya3NwYWNlL2hvbWVcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiQWN0aW9uc1wiKTtcblxubGV0IG1vZHVsZXM6IE1vZHVsZUVudHJ5PEFjdGlvbnM+W10gfCB1bmRlZmluZWQ7XG5jb25zdCBjdXN0b21BY3Rpb25NYXA6IEN1c3RvbUFjdGlvbnNNYXAgPSB7fTtcbmxldCBwbGF0Zm9ybUFjdGlvbk1hcDogQ3VzdG9tQWN0aW9uc01hcCB8IHVuZGVmaW5lZDtcbmxldCBpc0luaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cbi8qKlxuICogVGhlc2UgSWRzIGFyZSBmb3IgYWN0aW9ucyBidWlsdCBpbiB0byB0aGUgcGxhdGZvcm0uXG4gKi9cbmV4cG9ydCBjb25zdCBQTEFURk9STV9BQ1RJT05fSURTID0ge1xuXHRtb3ZlVmlld1RvTmV3V2luZG93OiBcIm1vdmUtdmlldy10by1uZXctd2luZG93XCIsXG5cdG1vdmVQYWdlVG9OZXdXaW5kb3c6IFwibW92ZS1wYWdlLXRvLW5ldy13aW5kb3dcIixcblx0cGluV2luZG93OiBcInBpbi13aW5kb3dcIixcblx0dW5waW5XaW5kb3c6IFwidW5waW4td2luZG93XCIsXG5cdGhvbWVTaG93OiBcImhvbWUtc2hvd1wiLFxuXHRub3RpZmljYXRpb25Ub2dnbGU6IFwibm90aWZpY2F0aW9uLXRvZ2dsZVwiLFxuXHRzaGFyZTogXCJzaGFyZVwiLFxuXHRxdWl0OiBcInF1aXRcIixcblx0bG9nb3V0QW5kUXVpdDogXCJsb2dvdXQtYW5kLXF1aXRcIixcblx0bGF1bmNoQXBwOiBcImxhdW5jaC1hcHBcIixcblx0bGF1bmNoVmlldzogXCJsYXVuY2gtdmlld1wiLFxuXHR0b2dnbGVTY2hlbWU6IFwidG9nZ2xlLXNjaGVtZVwiLFxuXHRmYXZvcml0ZUFkZDogXCJmYXZvcml0ZS1hZGRcIixcblx0ZmF2b3JpdGVSZW1vdmU6IFwiZmF2b3JpdGUtcmVtb3ZlXCJcbn07XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgYWN0aW9ucyBwcm92aWRlci5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSBhY3Rpb25zIHByb3ZpZGVyLlxuICogQHBhcmFtIGhlbHBlcnMgTW9kdWxlIGhlbHBlcnMgdG8gcGFzcyB0byBhbnkgbG9hZGVkIG1vZHVsZXMuXG4gKiBAcmV0dXJucyBUaGUgcGxhdGZvcm0gYWN0aW9uIG1hcC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQoXG5cdG9wdGlvbnM6IEFjdGlvbnNQcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQsXG5cdGhlbHBlcnM6IE1vZHVsZUhlbHBlcnNcbik6IFByb21pc2U8Q3VzdG9tQWN0aW9uc01hcCB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoaXNJbml0aWFsaXplZCkge1xuXHRcdGxvZ2dlci5lcnJvcihcIlRoZSBhY3Rpb25zIGNhbiBvbmx5IGJlIHVzZWQgb25jZSB3aGVuIGNvbmZpZ3VyaW5nIHRoZSBwbGF0Zm9ybVwiKTtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpc0luaXRpYWxpemVkID0gdHJ1ZTtcblxuXHRpZiAob3B0aW9ucykge1xuXHRcdGxvZ2dlci5pbmZvKFwiSW5pdGlhbGl6aW5nIHdpdGggb3B0aW9uc1wiLCBvcHRpb25zKTtcblxuXHRcdC8vIExvYWQgYW55IG1vZHVsZXMgdGhhdCBoYXZlIGFuIGFjdGlvbnMgZW5kcG9pbnRcblx0XHRtb2R1bGVzID0gYXdhaXQgbG9hZE1vZHVsZXM8QWN0aW9ucywgQWN0aW9uSGVscGVycz4ob3B0aW9ucywgXCJhY3Rpb25zXCIpO1xuXG5cdFx0Ly8gSW5pdGlhbGl6ZSB0aGUgbW9kdWxlc1xuXHRcdGF3YWl0IGluaXRpYWxpemVNb2R1bGVzPEFjdGlvbnMsIEFjdGlvbkhlbHBlcnM+KG1vZHVsZXMsIHtcblx0XHRcdC4uLmhlbHBlcnMsXG5cdFx0XHR1cGRhdGVUb29sYmFyQnV0dG9uc1xuXHRcdH0pO1xuXHR9XG5cblx0YXdhaXQgYnVpbGRBY3Rpb25zKCk7XG5cblx0cmV0dXJuIHBsYXRmb3JtQWN0aW9uTWFwO1xufVxuXG4vKipcbiAqIENsb3NlIGRvd24gdGhlIGFjdGlvbnMgcHJvdmlkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjbG9zZWRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG5cdGF3YWl0IGNsb3NlZG93bk1vZHVsZXMoXCJhY3Rpb25zXCIpO1xufVxuXG4vKipcbiAqIENhbGwgYW4gYWN0aW9uLlxuICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgYWN0aW9uIHRvIGNhbGwuXG4gKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBmb3IgdGhlIGFjdGlvbi5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGFjdGlvbiBleGlzdHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjYWxsQWN0aW9uKGlkOiBzdHJpbmcsIHBheWxvYWQ6IEN1c3RvbUFjdGlvblBheWxvYWQpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0aWYgKCFpc0VtcHR5KHBsYXRmb3JtQWN0aW9uTWFwKSAmJiBwbGF0Zm9ybUFjdGlvbk1hcFtpZF0pIHtcblx0XHRhd2FpdCBwbGF0Zm9ybUFjdGlvbk1hcFtpZF0ocGF5bG9hZCk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIEdldCBhbGwgdGhlIGFjdGlvbnMgd2Ugd2FudCB0byByZWdpc3RlciB3aXRoIHRoZSBwbGF0Zm9ybS5cbiAqIEByZXR1cm5zIFRoZSBtYXAgb2YgYWxsIHRoZSBjdXN0b20gYWN0aW9ucy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gYnVpbGRBY3Rpb25zKCk6IFByb21pc2U8dm9pZD4ge1xuXHQvLyBHZXQgdGhlIHBsYXRmb3JtIGFjdGlvbnNcblx0cGxhdGZvcm1BY3Rpb25NYXAgPSBhd2FpdCBnZXRQbGF0Zm9ybUFjdGlvbnMoKTtcblxuXHQvLyBNZXJnZSBpbiBhbnkgY3VzdG9tIGFjdGlvbnMgcmVnaXN0ZXJlZCB3aXRoIHJlZ2lzdGVyQWN0aW9uXG5cdHBsYXRmb3JtQWN0aW9uTWFwID0geyAuLi5wbGF0Zm9ybUFjdGlvbk1hcCwgLi4uY3VzdG9tQWN0aW9uTWFwIH07XG5cblx0aWYgKCFpc0VtcHR5KG1vZHVsZXMpKSB7XG5cdFx0Ly8gTWVyZ2UgdGhlIG1vZHVsZSBhY3Rpb25zXG5cdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdGZvciAoY29uc3QgYWN0aW9uTW9kdWxlIG9mIG1vZHVsZXMpIHtcblx0XHRcdGNvbnN0IG1vZEFjdGlvbnMgPSBhd2FpdCBhY3Rpb25Nb2R1bGUuaW1wbGVtZW50YXRpb24uZ2V0KHBsYXRmb3JtKTtcblx0XHRcdHBsYXRmb3JtQWN0aW9uTWFwID0ge1xuXHRcdFx0XHQuLi5wbGF0Zm9ybUFjdGlvbk1hcCxcblx0XHRcdFx0Li4ubW9kQWN0aW9uc1xuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRsb2dnZXIuaW5mbyhcIkFjdGlvbiBJZHNcIiwgT2JqZWN0LmtleXMocGxhdGZvcm1BY3Rpb25NYXApKTtcbn1cblxuLyoqXG4gKiBNYW51YWxseSByZWdpc3RlciBhbiBhY3Rpb24gd2l0aCB0aGUgcGxhdGZvcm0sIG11c3QgYmUgZG9uZSBiZWZvcmUgZ2V0QWN0aW9ucyBpcyBjYWxsZWQuXG4gKiBAcGFyYW0gYWN0aW9uTmFtZSBUaGUgbmFtZSBvZiB0aGUgYWN0aW9ucy5cbiAqIEBwYXJhbSBhY3Rpb24gVGhlIGFjdGlvbiB0byBiZSBwZXJmb3JtZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckFjdGlvbihhY3Rpb25OYW1lOiBzdHJpbmcsIGFjdGlvbjogKCkgPT4gUHJvbWlzZTx2b2lkPik6IHZvaWQge1xuXHRpZiAoaXNJbml0aWFsaXplZCkge1xuXHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdGByZWdpc3RlckFjdGlvbiBoYXMgYmVlbiBjYWxsZWQgZm9yIGFjdGlvbiAke2FjdGlvbk5hbWV9IGJ1dCBpdCBpcyB0b28gbGF0ZSBmb3IgdGhlIGFjdGlvbiB0byBiZSB1c2VkIGJ5IHRoZSBwbGF0Zm9ybWBcblx0XHQpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGlmICghaXNTdHJpbmdWYWx1ZShhY3Rpb25OYW1lKSkge1xuXHRcdGxvZ2dlci53YXJuKFwiVW5hYmxlIHRvIHJlZ2lzdGVyIGFjdGlvbi4gVGhlIGFjdGlvbiBuYW1lIHdhcyBub3Qgc3BlY2lmaWVkLlwiKTtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpZiAoaXNFbXB0eShhY3Rpb24pKSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJVbmFibGUgdG8gcmVnaXN0ZXIgYWN0aW9uIGFzIG5vIGFjdGlvbiB3YXMgcGFzc2VkLlwiKTtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpZiAoIWlzRW1wdHkoY3VzdG9tQWN0aW9uTWFwW2FjdGlvbk5hbWVdKSkge1xuXHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0YFVuYWJsZSB0byBhZGQgYWN0aW9uIHRvIGN1c3RvbSBhY3Rpb25zIGFzIGFuIGFjdGlvbiB3aXRoIHRoZSBuYW1lICR7YWN0aW9uTmFtZX0gaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkYFxuXHRcdCk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y3VzdG9tQWN0aW9uTWFwW2FjdGlvbk5hbWVdID0gYWN0aW9uO1xuXHRsb2dnZXIuaW5mbyhgUmVnaXN0ZXJlZCBhY3Rpb246ICR7YWN0aW9uTmFtZX1gKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGluYnVpbHQgYWN0aW9ucyBmb3IgdGhlIHBsYXRmb3JtLlxuICogQHJldHVybnMgVGhlIG1hcCBvZiBwbGF0Zm9ybSBhY3Rpb25zLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRQbGF0Zm9ybUFjdGlvbnMoKTogUHJvbWlzZTxDdXN0b21BY3Rpb25zTWFwPiB7XG5cdGNvbnN0IGFjdGlvbk1hcDogQ3VzdG9tQWN0aW9uc01hcCA9IHt9O1xuXG5cdGFjdGlvbk1hcFtQTEFURk9STV9BQ1RJT05fSURTLm1vdmVWaWV3VG9OZXdXaW5kb3ddID0gYXN5bmMgKFxuXHRcdHBheWxvYWQ6IEN1c3RvbUFjdGlvblBheWxvYWRcblx0KTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0aWYgKHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5WaWV3VGFiQ29udGV4dE1lbnUpIHtcblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdGNvbnN0IGluaXRpYWxWaWV3ID0gYXdhaXQgcGxhdGZvcm0uY3JlYXRlVmlldyh7XG5cdFx0XHRcdG5hbWU6IHBheWxvYWQuc2VsZWN0ZWRWaWV3c1swXS5uYW1lXG5cdFx0XHR9IGFzIE9wZW5GaW4uUGxhdGZvcm1WaWV3Q3JlYXRpb25PcHRpb25zKTtcblx0XHRcdGlmIChwYXlsb2FkLnNlbGVjdGVkVmlld3MubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRjb25zdCB3aW5kb3dJZGVudGl0eSA9IGF3YWl0IGdldFZpZXdXaW5kb3dJZGVudGl0eShpbml0aWFsVmlldyk7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAxOyBpIDwgcGF5bG9hZC5zZWxlY3RlZFZpZXdzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0YXdhaXQgcGxhdGZvcm0uY3JlYXRlVmlldyhcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogcGF5bG9hZC5zZWxlY3RlZFZpZXdzW2ldLm5hbWVcblx0XHRcdFx0XHRcdH0gYXMgT3BlbkZpbi5QbGF0Zm9ybVZpZXdDcmVhdGlvbk9wdGlvbnMsXG5cdFx0XHRcdFx0XHR3aW5kb3dJZGVudGl0eSxcblx0XHRcdFx0XHRcdGluaXRpYWxWaWV3LmlkZW50aXR5XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcblxuXHRhY3Rpb25NYXBbUExBVEZPUk1fQUNUSU9OX0lEUy5tb3ZlUGFnZVRvTmV3V2luZG93XSA9IGFzeW5jIChcblx0XHRwYXlsb2FkOiBDdXN0b21BY3Rpb25QYXlsb2FkXG5cdCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdGlmIChwYXlsb2FkLmNhbGxlclR5cGUgPT09IEN1c3RvbUFjdGlvbkNhbGxlclR5cGUuUGFnZVRhYkNvbnRleHRNZW51KSB7XG5cdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHRjb25zdCB3aW4gPSBwbGF0Zm9ybS5Ccm93c2VyLndyYXBTeW5jKHBheWxvYWQud2luZG93SWRlbnRpdHkpO1xuXHRcdFx0Y29uc3QgcGFnZSA9IGF3YWl0IHdpbi5nZXRQYWdlKHBheWxvYWQucGFnZUlkKTtcblx0XHRcdGF3YWl0IHBsYXRmb3JtLmNyZWF0ZVdpbmRvdyh7XG5cdFx0XHRcdHdvcmtzcGFjZVBsYXRmb3JtOiB7XG5cdFx0XHRcdFx0cGFnZXM6IFtwYWdlXVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdGF3YWl0IHdpbi5yZW1vdmVQYWdlKHBhZ2UucGFnZUlkKTtcblx0XHR9XG5cdH07XG5cblx0YWN0aW9uTWFwW1BMQVRGT1JNX0FDVElPTl9JRFMucGluV2luZG93XSA9IGFzeW5jIChwYXlsb2FkOiBDdXN0b21BY3Rpb25QYXlsb2FkKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0aWYgKHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5DdXN0b21CdXR0b24pIHtcblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdGNvbnN0IGJyb3dzZXJXaW5kb3cgPSBwbGF0Zm9ybS5Ccm93c2VyLndyYXBTeW5jKHBheWxvYWQud2luZG93SWRlbnRpdHkpO1xuXHRcdFx0Y29uc3Qgb3B0aW9ucyA9IGF3YWl0IGJyb3dzZXJXaW5kb3cub3BlbmZpbldpbmRvdy5nZXRPcHRpb25zKCk7XG5cdFx0XHRjb25zdCBjdXJyZW50VG9vbGJhck9wdGlvbnMgPSAob3B0aW9ucyBhcyBCcm93c2VyQ3JlYXRlV2luZG93UmVxdWVzdCkud29ya3NwYWNlUGxhdGZvcm0udG9vbGJhck9wdGlvbnM7XG5cdFx0XHRhd2FpdCBicm93c2VyV2luZG93Lm9wZW5maW5XaW5kb3cudXBkYXRlT3B0aW9ucyh7IGFsd2F5c09uVG9wOiB0cnVlIH0pO1xuXHRcdFx0aWYgKGN1cnJlbnRUb29sYmFyT3B0aW9ucykge1xuXHRcdFx0XHRjb25zdCBuZXdCdXR0b25zID0gYXdhaXQgdXBkYXRlVG9vbGJhckJ1dHRvbnMoXG5cdFx0XHRcdFx0Y3VycmVudFRvb2xiYXJPcHRpb25zLmJ1dHRvbnMsXG5cdFx0XHRcdFx0cGF5bG9hZC5jdXN0b21EYXRhLnNvdXJjZUlkIGFzIHN0cmluZyxcblx0XHRcdFx0XHRwYXlsb2FkLmN1c3RvbURhdGEucmVwbGFjZW1lbnRJZCBhcyBzdHJpbmdcblx0XHRcdFx0KTtcblx0XHRcdFx0YXdhaXQgYnJvd3NlcldpbmRvdy5yZXBsYWNlVG9vbGJhck9wdGlvbnMoeyBidXR0b25zOiBuZXdCdXR0b25zIH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChwYXlsb2FkLmNhbGxlclR5cGUgPT09IEN1c3RvbUFjdGlvbkNhbGxlclR5cGUuVmlld1RhYkNvbnRleHRNZW51KSB7XG5cdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHRjb25zdCBicm93c2VyV2luZG93ID0gcGxhdGZvcm0uQnJvd3Nlci53cmFwU3luYyhwYXlsb2FkLndpbmRvd0lkZW50aXR5KTtcblx0XHRcdGNvbnN0IG9wdGlvbnMgPSBhd2FpdCBicm93c2VyV2luZG93Lm9wZW5maW5XaW5kb3cuZ2V0T3B0aW9ucygpO1xuXHRcdFx0Y29uc3QgY3VycmVudFRvb2xiYXJPcHRpb25zID0gKG9wdGlvbnMgYXMgQnJvd3NlckNyZWF0ZVdpbmRvd1JlcXVlc3QpLndvcmtzcGFjZVBsYXRmb3JtLnRvb2xiYXJPcHRpb25zO1xuXHRcdFx0YXdhaXQgYnJvd3NlcldpbmRvdy5vcGVuZmluV2luZG93LnVwZGF0ZU9wdGlvbnMoeyBhbHdheXNPblRvcDogdHJ1ZSB9KTtcblx0XHRcdGlmICghaXNFbXB0eShjdXJyZW50VG9vbGJhck9wdGlvbnMpKSB7XG5cdFx0XHRcdGNvbnN0IG5ld0J1dHRvbnMgPSBhd2FpdCB1cGRhdGVUb29sYmFyQnV0dG9ucyhcblx0XHRcdFx0XHRjdXJyZW50VG9vbGJhck9wdGlvbnMuYnV0dG9ucyxcblx0XHRcdFx0XHRwYXlsb2FkLmN1c3RvbURhdGEuc291cmNlSWQgYXMgc3RyaW5nLFxuXHRcdFx0XHRcdHBheWxvYWQuY3VzdG9tRGF0YS5yZXBsYWNlbWVudElkIGFzIHN0cmluZ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRhd2FpdCBicm93c2VyV2luZG93LnJlcGxhY2VUb29sYmFyT3B0aW9ucyh7IGJ1dHRvbnM6IG5ld0J1dHRvbnMgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdGFjdGlvbk1hcFtQTEFURk9STV9BQ1RJT05fSURTLnVucGluV2luZG93XSA9IGFzeW5jIChwYXlsb2FkOiBDdXN0b21BY3Rpb25QYXlsb2FkKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0aWYgKHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5DdXN0b21CdXR0b24pIHtcblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdGNvbnN0IGJyb3dzZXJXaW5kb3cgPSBwbGF0Zm9ybS5Ccm93c2VyLndyYXBTeW5jKHBheWxvYWQud2luZG93SWRlbnRpdHkpO1xuXHRcdFx0Y29uc3Qgb3B0aW9ucyA9IGF3YWl0IGJyb3dzZXJXaW5kb3cub3BlbmZpbldpbmRvdy5nZXRPcHRpb25zKCk7XG5cdFx0XHRjb25zdCBjdXJyZW50VG9vbGJhck9wdGlvbnMgPSAob3B0aW9ucyBhcyBCcm93c2VyQ3JlYXRlV2luZG93UmVxdWVzdCkud29ya3NwYWNlUGxhdGZvcm0udG9vbGJhck9wdGlvbnM7XG5cdFx0XHRhd2FpdCBicm93c2VyV2luZG93Lm9wZW5maW5XaW5kb3cudXBkYXRlT3B0aW9ucyh7IGFsd2F5c09uVG9wOiBmYWxzZSB9KTtcblx0XHRcdGlmICghaXNFbXB0eShjdXJyZW50VG9vbGJhck9wdGlvbnMpKSB7XG5cdFx0XHRcdGNvbnN0IG5ld0J1dHRvbnMgPSBhd2FpdCB1cGRhdGVUb29sYmFyQnV0dG9ucyhcblx0XHRcdFx0XHRjdXJyZW50VG9vbGJhck9wdGlvbnMuYnV0dG9ucyxcblx0XHRcdFx0XHRwYXlsb2FkLmN1c3RvbURhdGEuc291cmNlSWQgYXMgc3RyaW5nLFxuXHRcdFx0XHRcdHBheWxvYWQuY3VzdG9tRGF0YS5yZXBsYWNlbWVudElkIGFzIHN0cmluZ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRhd2FpdCBicm93c2VyV2luZG93LnJlcGxhY2VUb29sYmFyT3B0aW9ucyh7IGJ1dHRvbnM6IG5ld0J1dHRvbnMgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdGFjdGlvbk1hcFtQTEFURk9STV9BQ1RJT05fSURTLmhvbWVTaG93XSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRhd2FpdCBzaG93KCk7XG5cdH07XG5cblx0YWN0aW9uTWFwW1BMQVRGT1JNX0FDVElPTl9JRFMubm90aWZpY2F0aW9uVG9nZ2xlXSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRhd2FpdCB0b2dnbGVOb3RpZmljYXRpb25DZW50ZXIoKTtcblx0fTtcblxuXHRhY3Rpb25NYXBbUExBVEZPUk1fQUNUSU9OX0lEUy5zaGFyZV0gPSBhc3luYyAocGF5bG9hZDogQ3VzdG9tQWN0aW9uUGF5bG9hZCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdGlmIChwYXlsb2FkLmNhbGxlclR5cGUgPT09IEN1c3RvbUFjdGlvbkNhbGxlclR5cGUuQ3VzdG9tQnV0dG9uKSB7XG5cdFx0XHRhd2FpdCBzaG93U2hhcmVPcHRpb25zKHBheWxvYWQpO1xuXHRcdH1cblx0fTtcblxuXHRhY3Rpb25NYXBbUExBVEZPUk1fQUNUSU9OX0lEUy5xdWl0XSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRhd2FpdCBmaW4uUGxhdGZvcm0uZ2V0Q3VycmVudFN5bmMoKS5xdWl0KCk7XG5cdH07XG5cblx0YWN0aW9uTWFwW1BMQVRGT1JNX0FDVElPTl9JRFMubG9nb3V0QW5kUXVpdF0gPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0YXdhaXQgYXV0aFByb3ZpZGVyLmxvZ291dCgpO1xuXHR9O1xuXG5cdGFjdGlvbk1hcFtQTEFURk9STV9BQ1RJT05fSURTLmxhdW5jaEFwcF0gPSBhc3luYyAocGF5bG9hZDogQ3VzdG9tQWN0aW9uUGF5bG9hZCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdGlmIChcblx0XHRcdHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5DdXN0b21CdXR0b24gfHxcblx0XHRcdHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5DdXN0b21Ecm9wZG93bkl0ZW0gfHxcblx0XHRcdHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5TdG9yZUN1c3RvbUJ1dHRvblxuXHRcdCkge1xuXHRcdFx0aWYgKHBheWxvYWQuY3VzdG9tRGF0YT8uYXBwSWQpIHtcblx0XHRcdFx0Y29uc3QgYXBwID0gYXdhaXQgZ2V0QXBwKHBheWxvYWQuY3VzdG9tRGF0YS5hcHBJZCBhcyBzdHJpbmcpO1xuXHRcdFx0XHRpZiAoYXBwKSB7XG5cdFx0XHRcdFx0YXdhaXQgbGF1bmNoKGFwcCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XHRcdFx0YFVuYWJsZSB0byBmaW5kIGFwcCB3aXRoIGlkICcke1xuXHRcdFx0XHRcdFx0XHRwYXlsb2FkLmN1c3RvbURhdGEuYXBwSWRcblx0XHRcdFx0XHRcdH0nIGluIGNhbGwgdG8gbGF1bmNoQXBwIGFjdGlvbiBmcm9tIHNvdXJjZSAnJHtwYXlsb2FkLmN1c3RvbURhdGE/LnNvdXJjZSA/PyBcInVua25vd24gc291cmNlXCJ9J2Bcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJObyBhcHBJZCBzcGVjaWZpZWQgaW4gcGF5bG9hZC5jdXN0b21EYXRhIGluIGxhdW5jaEFwcCBhY3Rpb25cIik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdGFjdGlvbk1hcFtQTEFURk9STV9BQ1RJT05fSURTLmxhdW5jaFZpZXddID0gYXN5bmMgKHBheWxvYWQ6IEN1c3RvbUFjdGlvblBheWxvYWQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRpZiAoXG5cdFx0XHRwYXlsb2FkLmNhbGxlclR5cGUgPT09IEN1c3RvbUFjdGlvbkNhbGxlclR5cGUuQ3VzdG9tQnV0dG9uIHx8XG5cdFx0XHRwYXlsb2FkLmNhbGxlclR5cGUgPT09IEN1c3RvbUFjdGlvbkNhbGxlclR5cGUuQ3VzdG9tRHJvcGRvd25JdGVtXG5cdFx0KSB7XG5cdFx0XHRpZiAocGF5bG9hZC5jdXN0b21EYXRhPy51cmwpIHtcblx0XHRcdFx0YXdhaXQgbGF1bmNoVmlldyhwYXlsb2FkLmN1c3RvbURhdGE/LnVybCBhcyBzdHJpbmcpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLmVycm9yKFwiTm8gdXJsIHNwZWNpZmllZCBpbiBwYXlsb2FkLmN1c3RvbURhdGEgaW4gbGF1bmNoVmlldyBhY3Rpb25cIik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdGFjdGlvbk1hcFtQTEFURk9STV9BQ1RJT05fSURTLnRvZ2dsZVNjaGVtZV0gPSBhc3luYyAocGF5bG9hZDogQ3VzdG9tQWN0aW9uUGF5bG9hZCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdGlmIChcblx0XHRcdHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5DdXN0b21CdXR0b24gfHxcblx0XHRcdHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5DdXN0b21Ecm9wZG93bkl0ZW1cblx0XHQpIHtcblx0XHRcdGF3YWl0IHRvZ2dsZVNjaGVtZSgpO1xuXHRcdH1cblx0fTtcblxuXHRhY3Rpb25NYXBbUExBVEZPUk1fQUNUSU9OX0lEUy5mYXZvcml0ZUFkZF0gPSBhc3luYyAocGF5bG9hZDogQ3VzdG9tQWN0aW9uUGF5bG9hZCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdGlmIChcblx0XHRcdHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5DdXN0b21CdXR0b24gfHxcblx0XHRcdHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5TdG9yZUN1c3RvbUJ1dHRvblxuXHRcdCkge1xuXHRcdFx0Y29uc3QgZmF2b3JpdGU6IEZhdm9yaXRlRW50cnkgPSBwYXlsb2FkLmN1c3RvbURhdGE7XG5cdFx0XHRpZiAoaXNFbXB0eShmYXZvcml0ZSkpIHtcblx0XHRcdFx0bG9nZ2VyLmVycm9yKFwiQ2FuIG9ubHkgYWRkIHRvIGZhdm9yaXRlcyBpZiBmYXZvcml0ZSBkYXRhIGlzIHByb3ZpZGVkIGluIGN1c3RvbURhdGFcIik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRhd2FpdCBmYXZvcml0ZVByb3ZpZGVyLnNldFNhdmVkRmF2b3JpdGUoZmF2b3JpdGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblxuXHRhY3Rpb25NYXBbUExBVEZPUk1fQUNUSU9OX0lEUy5mYXZvcml0ZVJlbW92ZV0gPSBhc3luYyAocGF5bG9hZDogQ3VzdG9tQWN0aW9uUGF5bG9hZCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdGlmIChcblx0XHRcdHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5DdXN0b21CdXR0b24gfHxcblx0XHRcdHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5TdG9yZUN1c3RvbUJ1dHRvblxuXHRcdCkge1xuXHRcdFx0Y29uc3QgZmF2b3JpdGU6IEZhdm9yaXRlRW50cnkgPSBwYXlsb2FkLmN1c3RvbURhdGE7XG5cdFx0XHRpZiAoaXNFbXB0eShmYXZvcml0ZSkpIHtcblx0XHRcdFx0bG9nZ2VyLmVycm9yKFwiQ2FuIG9ubHkgcmVtb3ZlIGZyb20gZmF2b3JpdGVzIGlmIGZhdm9yaXRlIGRhdGEgaXMgcHJvdmlkZWQgaW4gY3VzdG9tRGF0YVwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGF3YWl0IGZhdm9yaXRlUHJvdmlkZXIuZGVsZXRlU2F2ZWRGYXZvcml0ZShmYXZvcml0ZS5pZCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdHJldHVybiBhY3Rpb25NYXA7XG59XG5cbi8qKlxuICogR2V0IHRoZSBpZGVudGl0eSBvZiB0aGUgd2luZG93IGNvbnRhaW5pbmcgYSB2aWV3LlxuICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdG8gZ2V0IHRoZSBjb250YWluaW5nIHdpbmRvdyBpZGVudGl0eS5cbiAqIEByZXR1cm5zIFRoZSBpZGVudGl0eSBvZiB0aGUgY29udGFpbmluZyB3aW5kb3cuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldFZpZXdXaW5kb3dJZGVudGl0eSh2aWV3OiBPcGVuRmluLlZpZXcpOiBQcm9taXNlPE9wZW5GaW4uSWRlbnRpdHk+IHtcblx0Y29uc3QgY3VycmVudFdpbmRvdyA9IGF3YWl0IHZpZXcuZ2V0Q3VycmVudFdpbmRvdygpO1xuXG5cdC8vIElmIHRoZSB2aWV3IGRvZXMgaXMgbm90IHlldCBhdHRhY2hlZCB0byBhIHdpbmRvdywgd2FpdCBmb3IgdGhlXG5cdC8vIHRhcmdldC1jaGFuZ2VkIGV2ZW4gd2hpY2ggbWVhbnMgaXQgaGFzIGJlZW4gYXR0YWNoZWRcblx0aWYgKGlzRW1wdHkoY3VycmVudFdpbmRvdy5pZGVudGl0eS5uYW1lKSB8fCBjdXJyZW50V2luZG93LmlkZW50aXR5Lm5hbWUgPT09IGZpbi5tZS5pZGVudGl0eS51dWlkKSB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlPE9wZW5GaW4uSWRlbnRpdHk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdHZpZXdcblx0XHRcdFx0Lm9uY2UoXCJ0YXJnZXQtY2hhbmdlZFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgaG9zdFdpbmRvdyA9IGF3YWl0IHZpZXcuZ2V0Q3VycmVudFdpbmRvdygpO1xuXHRcdFx0XHRcdHJlc29sdmUoaG9zdFdpbmRvdy5pZGVudGl0eSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaCgoKSA9PiB7fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRyZXR1cm4gY3VycmVudFdpbmRvdy5pZGVudGl0eTtcbn1cbiIsImltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHsgY2xvc2Vkb3duTW9kdWxlcywgaW5pdGlhbGl6ZU1vZHVsZXMsIGxvYWRNb2R1bGVzIH0gZnJvbSBcIi4vbW9kdWxlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRBbmFseXRpY3NNb2R1bGUsXG5cdEFuYWx5dGljc1Byb3ZpZGVyT3B0aW9ucyxcblx0UGxhdGZvcm1BbmFseXRpY3NFdmVudFxufSBmcm9tIFwiLi9zaGFwZXMvYW5hbHl0aWNzLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVFbnRyeSwgTW9kdWxlSGVscGVycyB9IGZyb20gXCIuL3NoYXBlcy9tb2R1bGUtc2hhcGVzXCI7XG5cbmxldCBtb2R1bGVzOiBNb2R1bGVFbnRyeTxBbmFseXRpY3NNb2R1bGU+W10gPSBbXTtcbmxldCBpc0FuYWx5dGljc0VuYWJsZWQgPSBmYWxzZTtcbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIkFuYWx5dGljc1wiKTtcblxuLyoqXG4gKiBJbml0aWFsaXplIHRoZSBhbmFseXRpY3MgcHJvdmlkZXIuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgdGhlIGFuYWx5dGljcyBwcm92aWRlci5cbiAqIEBwYXJhbSBoZWxwZXJzIE1vZHVsZSBoZWxwZXJzIHRvIHBhc3MgdG8gYW55IGxvYWRlZCBtb2R1bGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdChcblx0b3B0aW9uczogQW5hbHl0aWNzUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkLFxuXHRoZWxwZXJzOiBNb2R1bGVIZWxwZXJzXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKG9wdGlvbnMpIHtcblx0XHRsb2dnZXIuaW5mbyhcIkluaXRpYWxpemluZyB3aXRoIG9wdGlvbnNcIiwgb3B0aW9ucyk7XG5cdFx0bW9kdWxlcyA9IGF3YWl0IGxvYWRNb2R1bGVzPEFuYWx5dGljc01vZHVsZT4ob3B0aW9ucywgXCJhbmFseXRpY3NcIik7XG5cdFx0YXdhaXQgaW5pdGlhbGl6ZU1vZHVsZXMobW9kdWxlcywgaGVscGVycyk7XG5cdFx0aXNBbmFseXRpY3NFbmFibGVkID0gbW9kdWxlcy5sZW5ndGggPiAwO1xuXHR9XG59XG5cbi8qKlxuICogQ2xvc2UgZG93biB0aGUgYW5hbHl0aWNzIHByb3ZpZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xvc2Vkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuXHRhd2FpdCBjbG9zZWRvd25Nb2R1bGVzKFwiYW5hbHl0aWNzXCIpO1xufVxuXG4vKipcbiAqIElzIHRoZSBhbmFseXRpY3MgcHJvdmlkZXIgZW5hYmxlZC5cbiAqIEByZXR1cm5zIFRydWUgaWYgYW5hbHl0aWNzIGlzIGVuYWJsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VuYWJsZWQoKTogYm9vbGVhbiB7XG5cdHJldHVybiBpc0FuYWx5dGljc0VuYWJsZWQ7XG59XG5cbi8qKlxuICogSGFuZGxlIGEgbGlzdCBvZiBhbmFseXRpY3MgZXZlbnRzLlxuICogQHBhcmFtIGV2ZW50cyBUaGUgZXZlbnRzIHRvIGhhbmRsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZUFuYWx5dGljcyhldmVudHM6IFBsYXRmb3JtQW5hbHl0aWNzRXZlbnRbXSk6IFByb21pc2U8dm9pZD4ge1xuXHRmb3IgKGNvbnN0IGFuYWx5dGljc01vZHVsZSBvZiBtb2R1bGVzKSB7XG5cdFx0YXdhaXQgYW5hbHl0aWNzTW9kdWxlLmltcGxlbWVudGF0aW9uLmhhbmRsZUFuYWx5dGljcyhldmVudHMpO1xuXHR9XG59XG4iLCJpbXBvcnQgeyBnZXRDdXJyZW50U3luYyB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB7IGdldENvbm5lY3RlZEFwcHMgfSBmcm9tIFwiLi9jb25uZWN0aW9uc1wiO1xuaW1wb3J0IHsgYWRkRGlyZWN0b3J5RW5kcG9pbnQsIGdldFBsYXRmb3JtQXBwcywgaW5pdCBhcyBkaXJlY3RvcnlJbml0IH0gZnJvbSBcIi4vZGlyZWN0b3J5XCI7XG5pbXBvcnQgeyBmaXJlTGlmZWN5Y2xlRXZlbnQgfSBmcm9tIFwiLi9saWZlY3ljbGVcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHsgTUFOSUZFU1RfVFlQRVMgfSBmcm9tIFwiLi9tYW5pZmVzdC10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBBcHBGaWx0ZXJPcHRpb25zLCBBcHBQcm92aWRlck9wdGlvbnMsIEFwcHNGb3JJbnRlbnQsIFBsYXRmb3JtQXBwIH0gZnJvbSBcIi4vc2hhcGVzL2FwcC1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgRW5kcG9pbnRQcm92aWRlciB9IGZyb20gXCIuL3NoYXBlcy9lbmRwb2ludC1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgQXBwSW50ZW50cyB9IGZyb20gXCIuL3NoYXBlcy9mZGMzLTItMC1zaGFwZXNcIjtcbmltcG9ydCB7IGlzRW1wdHksIGlzTnVtYmVyLCByYW5kb21VVUlEIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiQXBwc1wiKTtcblxubGV0IGNhY2hlZEFwcHM6IFBsYXRmb3JtQXBwW10gPSBbXTtcbmxldCBjYWNoZUR1cmF0aW9uOiBudW1iZXIgPSAwO1xubGV0IGNhY2hlUmV0cmlldmFsU3RyYXRlZ3k6IFwib24tZGVtYW5kXCIgfCBcImludGVydmFsXCIgPSBcIm9uLWRlbWFuZFwiO1xubGV0IGxhc3RDYWNoZVVwZGF0ZTogbnVtYmVyID0gMDtcbmxldCBpc0luaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5sZXQgc3VwcG9ydGVkTWFuaWZlc3RUeXBlczogc3RyaW5nW107XG5sZXQgZ2V0RW50cmllc1Jlc29sdmVyczogKChhcHBzOiBQbGF0Zm9ybUFwcFtdKSA9PiB2b2lkKVtdIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIEluaXRpYWxpemUgdGhlIGFwcGxpY2F0aW9uIHByb3ZpZGVyLlxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIGFjdGlvbnMgcHJvdmlkZXIuXG4gKiBAcGFyYW0gZW5kcG9pbnRQcm92aWRlciBUaGUgZW5kcG9pbnQgcHJvdmlkZXIgdG8gaGVscCByZXRyaWV2ZSBhcHBzIGZyb20gZW5kcG9pbnRzLlxuICogQHJldHVybnMgTm90aGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQoXG5cdG9wdGlvbnM6IEFwcFByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCxcblx0ZW5kcG9pbnRQcm92aWRlcjogRW5kcG9pbnRQcm92aWRlclxuKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChpc0luaXRpYWxpemVkKSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJUaGUgYXBwIHNlcnZpY2UgaXMgYWxyZWFkeSBpbml0aWFsaXplZFwiKTtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpZiAob3B0aW9ucykge1xuXHRcdGlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXHRcdGF3YWl0IGRpcmVjdG9yeUluaXQoZW5kcG9pbnRQcm92aWRlcik7XG5cblx0XHRpZiAoIWlzRW1wdHkob3B0aW9ucz8uYXBwc1NvdXJjZVVybCkpIHtcblx0XHRcdC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgc3VwcG9ydFxuXHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFwiVXNpbmcgYXBwc1NvdXJjZVVybCBhcyBpdCB3YXMgc3BlY2lmaWVkLiBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBtb2RlLiBUcnkgdG8gdXNlIHRoZSBlbmRwb2ludElkcyBzZXR0aW5nIGluc3RlYWQgYW5kIGRlZmluZSBzb21lIGVuZHBvaW50c1wiXG5cdFx0XHQpO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucz8uYXBwc1NvdXJjZVVybCkpIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJhcHBzU291cmNlVXJsIHNwZWNpZmllZCBhcyBhbiBhcnJheSBvZiB1cmxzXCIpO1xuXHRcdFx0XHRjb25zdCBhcHBVcmxzOiBzdHJpbmdbXSA9IG9wdGlvbnM/LmFwcHNTb3VyY2VVcmwgfHwgW107XG5cdFx0XHRcdGZvciAoY29uc3QgdXJsIG9mIGFwcFVybHMpIHtcblx0XHRcdFx0XHRhZGREaXJlY3RvcnlFbmRwb2ludCh7XG5cdFx0XHRcdFx0XHRpZDogcmFuZG9tVVVJRCgpLFxuXHRcdFx0XHRcdFx0dXJsOiB7IHBhdGg6IHVybCwgY3JlZGVudGlhbHM6IG9wdGlvbnM/LmluY2x1ZGVDcmVkZW50aWFsT25Tb3VyY2VSZXF1ZXN0IH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJhcHBzU291cmNlVXJsIHNwZWNpZmllZCBhcyBhIHNpbmdsZSB1cmxcIik7XG5cdFx0XHRcdGFkZERpcmVjdG9yeUVuZHBvaW50KHtcblx0XHRcdFx0XHRpZDogcmFuZG9tVVVJRCgpLFxuXHRcdFx0XHRcdHVybDogeyBwYXRoOiBvcHRpb25zPy5hcHBzU291cmNlVXJsLCBjcmVkZW50aWFsczogb3B0aW9ucz8uaW5jbHVkZUNyZWRlbnRpYWxPblNvdXJjZVJlcXVlc3QgfVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucz8uZW5kcG9pbnRJZHMpKSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIlVzaW5nIHRoZSBmb2xsb3dpbmcgcGFzc2VkIGVuZHBvaW50c1wiLCBvcHRpb25zLmVuZHBvaW50SWRzKTtcblx0XHRcdGZvciAoY29uc3QgZW5kcG9pbnRJZCBvZiBvcHRpb25zLmVuZHBvaW50SWRzKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgZW5kcG9pbnRJZCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdGlmIChlbmRwb2ludElkLnN0YXJ0c1dpdGgoXCJodHRwXCIpKSB7XG5cdFx0XHRcdFx0XHRhZGREaXJlY3RvcnlFbmRwb2ludCh7XG5cdFx0XHRcdFx0XHRcdGlkOiByYW5kb21VVUlEKCksXG5cdFx0XHRcdFx0XHRcdHVybDogeyBwYXRoOiBlbmRwb2ludElkLCBjcmVkZW50aWFsczogb3B0aW9ucz8uaW5jbHVkZUNyZWRlbnRpYWxPblNvdXJjZVJlcXVlc3QgfVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGFkZERpcmVjdG9yeUVuZHBvaW50KHtcblx0XHRcdFx0XHRcdFx0aWQ6IHJhbmRvbVVVSUQoKSxcblx0XHRcdFx0XHRcdFx0ZW5kcG9pbnRJZFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGFkZERpcmVjdG9yeUVuZHBvaW50KHtcblx0XHRcdFx0XHRcdGlkOiByYW5kb21VVUlEKCksXG5cdFx0XHRcdFx0XHRtYXA6IGVuZHBvaW50SWRcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChpc051bWJlcihvcHRpb25zPy5jYWNoZUR1cmF0aW9uSW5TZWNvbmRzKSkge1xuXHRcdFx0Y2FjaGVEdXJhdGlvbiArPSBvcHRpb25zPy5jYWNoZUR1cmF0aW9uSW5TZWNvbmRzICogMTAwMDtcblx0XHR9XG5cblx0XHRpZiAoaXNOdW1iZXIob3B0aW9ucz8uY2FjaGVEdXJhdGlvbkluTWludXRlcykpIHtcblx0XHRcdGNhY2hlRHVyYXRpb24gKz0gb3B0aW9ucz8uY2FjaGVEdXJhdGlvbkluTWludXRlcyAqIDYwICogMTAwMDtcblx0XHR9XG5cdFx0c3VwcG9ydGVkTWFuaWZlc3RUeXBlcyA9IG9wdGlvbnM/Lm1hbmlmZXN0VHlwZXMgPz8gW107XG5cblx0XHRjYWNoZVJldHJpZXZhbFN0cmF0ZWd5ID0gb3B0aW9ucz8uY2FjaGVSZXRyaWV2YWxTdHJhdGVneSA/PyBjYWNoZVJldHJpZXZhbFN0cmF0ZWd5O1xuXHRcdGlmIChjYWNoZUR1cmF0aW9uID4gMCAmJiBjYWNoZVJldHJpZXZhbFN0cmF0ZWd5ID09PSBcImludGVydmFsXCIpIHtcblx0XHRcdGxldCB1cGRhdGVJblByb2dyZXNzID0gZmFsc2U7XG5cdFx0XHR3aW5kb3cuc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRpZiAoIXVwZGF0ZUluUHJvZ3Jlc3MpIHtcblx0XHRcdFx0XHR1cGRhdGVJblByb2dyZXNzID0gdHJ1ZTtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0YXdhaXQgZ2V0RW50cmllcygpO1xuXHRcdFx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdFx0XHR1cGRhdGVJblByb2dyZXNzID0gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LCBjYWNoZUR1cmF0aW9uKTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIGxpc3Qgb2YgYXBwbGljYXRpb25zIGFuZCBmaWx0ZXIgaWYgcmVxdWVzdGVkLlxuICogQHBhcmFtIGFwcEZpbHRlciBUaGUgb3B0aW9ucyBmaWx0ZXJzLlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBcHBzKGFwcEZpbHRlcj86IEFwcEZpbHRlck9wdGlvbnMpOiBQcm9taXNlPFBsYXRmb3JtQXBwW10+IHtcblx0aWYgKGlzSW5pdGlhbGl6ZWQpIHtcblx0XHRsb2dnZXIuaW5mbyhcIlJlcXVlc3RpbmcgYXBwc1wiKTtcblxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBhcHBzID0gYXdhaXQgZ2V0RW50cmllcygpO1xuXG5cdFx0XHRpZiAoYXBwRmlsdGVyKSB7XG5cdFx0XHRcdGlmICghaXNFbXB0eShhcHBGaWx0ZXIucHJpdmF0ZSkgJiYgIWlzRW1wdHkoYXBwRmlsdGVyLmF1dG9zdGFydCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gYXBwcy5maWx0ZXIoKGFwcFRvRmlsdGVyKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBpc1ByaXZhdGUgPSBhcHBUb0ZpbHRlci5wcml2YXRlID8/IGZhbHNlO1xuXHRcdFx0XHRcdFx0Y29uc3QgYXV0b3N0YXJ0ID0gYXBwVG9GaWx0ZXIuYXV0b3N0YXJ0ID8/IGZhbHNlO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGFwcEZpbHRlci5wcml2YXRlID09PSBpc1ByaXZhdGUgJiYgYXBwRmlsdGVyLmF1dG9zdGFydCA9PT0gYXV0b3N0YXJ0O1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghaXNFbXB0eShhcHBGaWx0ZXIucHJpdmF0ZSkpIHtcblx0XHRcdFx0XHRyZXR1cm4gYXBwcy5maWx0ZXIoKGFwcFRvRmlsdGVyKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBpc1ByaXZhdGUgPSBhcHBUb0ZpbHRlci5wcml2YXRlID8/IGZhbHNlO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGFwcEZpbHRlci5wcml2YXRlID09PSBpc1ByaXZhdGU7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFpc0VtcHR5KGFwcEZpbHRlci5hdXRvc3RhcnQpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGFwcHMuZmlsdGVyKChhcHBUb0ZpbHRlcikgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgYXV0b3N0YXJ0ID0gYXBwVG9GaWx0ZXIuYXV0b3N0YXJ0ID8/IGZhbHNlO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGFwcEZpbHRlci5hdXRvc3RhcnQgPT09IGF1dG9zdGFydDtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFwcHM7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRsb2dnZXIuZXJyb3IoXCJFcnJvciByZXRyaWV2aW5nIGFwcHMuIFJldHVybmluZyBlbXB0eSBsaXN0XCIsIGVycik7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGxvZ2dlci53YXJuKFwiQ2FsbGluZyBnZXRBcHBzIGJlZm9yZSBhcHAgcHJvdmlkZXIgaXMgaW5pdGlhbGl6ZWRcIik7XG5cdH1cblxuXHRyZXR1cm4gW107XG59XG5cbi8qKlxuICogR2V0IHRoZSBsaXN0IG9mIGFwcHMgZnJvbSB0aGUgc3BlY2lmaWVkIGVudHJpZXMuXG4gKiBAcmV0dXJucyBUaGUgYXBwIGVudHJpZXMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEVudHJpZXMoKTogUHJvbWlzZTxQbGF0Zm9ybUFwcFtdPiB7XG5cdGlmIChpc0VtcHR5KGdldEVudHJpZXNSZXNvbHZlcnMpKSB7XG5cdFx0bGV0IHBlcmZvcm1SZXF1ZXN0ID0gdHJ1ZTtcblx0XHRpZiAoY2FjaGVSZXRyaWV2YWxTdHJhdGVneSA9PT0gXCJvbi1kZW1hbmRcIikge1xuXHRcdFx0cGVyZm9ybVJlcXVlc3QgPSBmYWxzZTtcblxuXHRcdFx0Y29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblx0XHRcdGlmIChub3cgLSBsYXN0Q2FjaGVVcGRhdGUgPiBjYWNoZUR1cmF0aW9uKSB7XG5cdFx0XHRcdGxhc3RDYWNoZVVwZGF0ZSA9IG5vdztcblx0XHRcdFx0cGVyZm9ybVJlcXVlc3QgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChwZXJmb3JtUmVxdWVzdCkge1xuXHRcdFx0Z2V0RW50cmllc1Jlc29sdmVycyA9IFtdO1xuXG5cdFx0XHRsb2dnZXIuaW5mbyhcIkFwcHMgY2FjaGUgZXhwaXJlZCByZWZyZXNoaW5nXCIpO1xuXG5cdFx0XHRjb25zdCBhcHBzOiBQbGF0Zm9ybUFwcFtdID0gW107XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcIkdldHRpbmcgZGlyZWN0b3J5IGFwcHMuXCIpO1xuXHRcdFx0XHRjb25zdCBkaXJlY3RvcnlBcHBzID0gYXdhaXQgZ2V0UGxhdGZvcm1BcHBzKCk7XG5cdFx0XHRcdGFwcHMucHVzaCguLi5kaXJlY3RvcnlBcHBzKTtcblxuXHRcdFx0XHRsb2dnZXIuaW5mbyhcIkdldHRpbmcgY29ubmVjdGVkIGFwcHMuXCIpO1xuXHRcdFx0XHRjb25zdCBjb25uZWN0ZWRBcHBzID0gYXdhaXQgZ2V0Q29ubmVjdGVkQXBwcygpO1xuXHRcdFx0XHRpZiAoY29ubmVjdGVkQXBwcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFx0XHRgQWRkaW5nICR7Y29ubmVjdGVkQXBwcy5sZW5ndGh9IGFwcHMgZnJvbSBjb25uZWN0ZWQgYXBwcyB0byB0aGUgYXBwcyBsaXN0IHRvIGJlIHZhbGlkYXRlZGBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGFwcHMucHVzaCguLi5jb25uZWN0ZWRBcHBzKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0bG9nZ2VyLmVycm9yKFwiRXJyb3IgZmV0Y2hpbmcgYXBwcy5cIiwgZXJyb3IpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBsYXN0Q2FjaGVkQXBwc0pzb24gPSBKU09OLnN0cmluZ2lmeShjYWNoZWRBcHBzKTtcblxuXHRcdFx0Y2FjaGVkQXBwcyA9IGF3YWl0IHZhbGlkYXRlRW50cmllcyhhcHBzKTtcblxuXHRcdFx0aWYgKGdldEVudHJpZXNSZXNvbHZlcnMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcIlJlc29sdmluZyBnZXRFbnRyeSBwcm9taXNlc1wiKTtcblxuXHRcdFx0XHRmb3IgKGNvbnN0IGdldEVudHJpZXNSZXNvbHZlciBvZiBnZXRFbnRyaWVzUmVzb2x2ZXJzKSB7XG5cdFx0XHRcdFx0Z2V0RW50cmllc1Jlc29sdmVyKGNhY2hlZEFwcHMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGdldEVudHJpZXNSZXNvbHZlcnMgPSB1bmRlZmluZWQ7XG5cblx0XHRcdGNvbnN0IGNhY2hlZEFwcEpzb24gPSBKU09OLnN0cmluZ2lmeShjYWNoZWRBcHBzKTtcblxuXHRcdFx0aWYgKGNhY2hlZEFwcEpzb24gIT09IGxhc3RDYWNoZWRBcHBzSnNvbikge1xuXHRcdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHRcdGF3YWl0IGZpcmVMaWZlY3ljbGVFdmVudChwbGF0Zm9ybSwgXCJhcHBzLWNoYW5nZWRcIik7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNhY2hlZEFwcHM7XG5cdH1cblxuXHRyZXR1cm4gbmV3IFByb21pc2U8UGxhdGZvcm1BcHBbXT4oKHJlc29sdmUpID0+IHtcblx0XHRpZiAoZ2V0RW50cmllc1Jlc29sdmVycykge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJTdG9yaW5nIGdldEVudHJ5IHJlc29sdmVyXCIpO1xuXHRcdFx0Z2V0RW50cmllc1Jlc29sdmVycy5wdXNoKHJlc29sdmUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXNvbHZlKGNhY2hlZEFwcHMpO1xuXHRcdH1cblx0fSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgdGhlIGxpc3Qgb2YgYXBwIGVudHJpZXMgYWdhaW5zdCBzdXBwb3J0ZWQgbWFuaWZlc3QgdHlwZXMgYW5kIHBlcm1pc3Npb25zLlxuICogQHBhcmFtIGFwcHMgVGhlIGxpc3Qgb2YgYXBwcyB0byB2YWxpZGF0aW9uLlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgdmFsaWRhdGVkIGFwcHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlRW50cmllcyhhcHBzOiBQbGF0Zm9ybUFwcFtdKTogUHJvbWlzZTxQbGF0Zm9ybUFwcFtdPiB7XG5cdGNvbnN0IGhhc0xhdW5jaEV4dGVybmFsUHJvY2VzcyA9IGF3YWl0IGdldENhbkxhdW5jaEV4dGVybmFsUHJvY2VzcygpO1xuXHRjb25zdCBoYXNEb3dubG9hZEFwcEFzc2V0cyA9IGF3YWl0IGdldENhbkRvd25sb2FkQXBwQXNzZXRzKCk7XG5cblx0Y29uc3QgdmFsaWRhdGVkQXBwczogUGxhdGZvcm1BcHBbXSA9IFtdO1xuXHRjb25zdCByZWplY3RlZEFwcElkcyA9IFtdO1xuXG5cdGZvciAoY29uc3QgYXBwIG9mIGFwcHMpIHtcblx0XHRjb25zdCBtYW5pZmVzdFR5cGUgPSBhcHAubWFuaWZlc3RUeXBlO1xuXG5cdFx0aWYgKG1hbmlmZXN0VHlwZSkge1xuXHRcdFx0bGV0IHZhbGlkQXBwID0gdHJ1ZTtcblx0XHRcdGlmICghaXNFbXB0eShzdXBwb3J0ZWRNYW5pZmVzdFR5cGVzKSAmJiBzdXBwb3J0ZWRNYW5pZmVzdFR5cGVzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dmFsaWRBcHAgPSBzdXBwb3J0ZWRNYW5pZmVzdFR5cGVzLmluY2x1ZGVzKG1hbmlmZXN0VHlwZSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh2YWxpZEFwcCkge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0bWFuaWZlc3RUeXBlICE9PSBNQU5JRkVTVF9UWVBFUy5FeHRlcm5hbC5pZCAmJlxuXHRcdFx0XHRcdG1hbmlmZXN0VHlwZSAhPT0gTUFOSUZFU1RfVFlQRVMuSW5saW5lRXh0ZXJuYWwuaWQgJiZcblx0XHRcdFx0XHRtYW5pZmVzdFR5cGUgIT09IE1BTklGRVNUX1RZUEVTLkFwcGFzc2V0LmlkICYmXG5cdFx0XHRcdFx0bWFuaWZlc3RUeXBlICE9PSBNQU5JRkVTVF9UWVBFUy5JbmxpbmVBcHBBc3NldC5pZFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHR2YWxpZGF0ZWRBcHBzLnB1c2goYXBwKTtcblx0XHRcdFx0fSBlbHNlIGlmICghaGFzTGF1bmNoRXh0ZXJuYWxQcm9jZXNzKSB7XG5cdFx0XHRcdFx0cmVqZWN0ZWRBcHBJZHMucHVzaChhcHAuYXBwSWQpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRcdChtYW5pZmVzdFR5cGUgPT09IE1BTklGRVNUX1RZUEVTLkFwcGFzc2V0LmlkIHx8XG5cdFx0XHRcdFx0XHRtYW5pZmVzdFR5cGUgPT09IE1BTklGRVNUX1RZUEVTLklubGluZUFwcEFzc2V0LmlkKSAmJlxuXHRcdFx0XHRcdCFoYXNEb3dubG9hZEFwcEFzc2V0c1xuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZWplY3RlZEFwcElkcy5wdXNoKGFwcC5hcHBJZCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dmFsaWRhdGVkQXBwcy5wdXNoKGFwcCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFwiQXBwbGljYXRpb24gaXMgbm90IGluIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBtYW5pZmVzdCB0eXBlc1wiLCBhcHAuYXBwSWQsIG1hbmlmZXN0VHlwZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZ2dlci53YXJuKFwiQXBwbGljYXRpb24gZG9lcyBub3QgaGF2ZSBhIG1hbmlmZXN0VHlwZVwiLCBhcHAuYXBwSWQpO1xuXHRcdH1cblx0fVxuXG5cdGlmIChyZWplY3RlZEFwcElkcy5sZW5ndGggPiAwKSB7XG5cdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcIk5vdCBwYXNzaW5nIHRoZSBmb2xsb3dpbmcgbGlzdCBvZiBhcHBsaWNhdGlvbnMgYXMgdGhleSB3aWxsIG5vdCBiZSBhYmxlIHRvIHJ1biBvbiB0aGlzIG1hY2hpbmUgZHVlIHRvIG1pc3NpbmcgcGVybWlzc2lvbnMuIEFsdGVybmF0aXZlbHkgdGhpcyBsb2dpYyBjb3VsZCBiZSBtb3ZlZCB0byB0aGUgbGF1bmNoIGZ1bmN0aW9uIHdoZXJlIGEgc2VsZWN0aW9uIGlzIG5vdCBsYXVuY2hlZCBidXQgdGhlIHVzZXIgaXMgcHJlc2VudGVkIHdpdGggYSBtb2RhbCBzYXlpbmcgdGhleSBjYW4ndCBsYXVuY2ggaXQgZHVlIHRvIHBlcm1pc3Npb25zXCIsXG5cdFx0XHRyZWplY3RlZEFwcElkc1xuXHRcdCk7XG5cdH1cblxuXHRyZXR1cm4gdmFsaWRhdGVkQXBwcztcbn1cblxuLyoqXG4gKiBHZXQgYSBsaXN0IG9mIGFwcGxpY2F0aW9uIHRoYXQgbWF0Y2ggdGhlIHNwZWNpZmllZCB0YWdzLlxuICogQHBhcmFtIHRhZ3MgVGhlIHRhZ3MgdG8gbWF0Y2guXG4gKiBAcGFyYW0gbXVzdE1hdGNoQWxsIFRoZSBhcHBsaWNhdGlvbiBtdXN0IGhhdmUgYWxsIHRoZSB0YWdzLFxuICogQHBhcmFtIGFwcEZpbHRlciBBZGRpdGlvbmFsIGZpbHRlcnMgdG8gYXBwbHkgdG8gdGhlIGxpc3Qgb2YgYXBwbGljYXRpb25zLlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgYXBwbGljYXRpb24gdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIHRhZ3MuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBcHBzQnlUYWcoXG5cdHRhZ3M6IHN0cmluZ1tdLFxuXHRtdXN0TWF0Y2hBbGwgPSBmYWxzZSxcblx0YXBwRmlsdGVyPzogQXBwRmlsdGVyT3B0aW9uc1xuKTogUHJvbWlzZTxQbGF0Zm9ybUFwcFtdPiB7XG5cdGNvbnN0IGFwcHMgPSBhd2FpdCBnZXRBcHBzKGFwcEZpbHRlcik7XG5cblx0cmV0dXJuIGFwcHMuZmlsdGVyKCh2YWx1ZSkgPT4ge1xuXHRcdGlmIChpc0VtcHR5KHZhbHVlLnRhZ3MpKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGxldCBtYXRjaEZvdW5kID0gZmFsc2U7XG5cdFx0Zm9yIChjb25zdCB0YWcgb2YgdGFncykge1xuXHRcdFx0aWYgKHZhbHVlLnRhZ3MuaW5jbHVkZXModGFnKSkge1xuXHRcdFx0XHRpZiAobXVzdE1hdGNoQWxsKSB7XG5cdFx0XHRcdFx0bWF0Y2hGb3VuZCA9IHRydWU7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAobXVzdE1hdGNoQWxsKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG1hdGNoRm91bmQ7XG5cdH0pO1xufVxuXG4vKipcbiAqIFRoZSB0aGUgYXBwIGJ5IGl0cyBpZC5cbiAqIEBwYXJhbSBhcHBJZCBUaGUgaWQgb2YgdGhlIHJlcXVlc3RlZCBhcHAuXG4gKiBAcmV0dXJucyBUaGUgYXBwIGlmIGl0IHdhcyBmb3VuZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEFwcChhcHBJZDogc3RyaW5nKTogUHJvbWlzZTxQbGF0Zm9ybUFwcCB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoIWFwcElkKSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGNvbnN0IGFwcHMgPSBhd2FpdCBnZXRBcHBzKCk7XG5cdGxldCBhcHAgPSBhcHBzLmZpbmQoKGVudHJ5KSA9PiBlbnRyeS5hcHBJZCA9PT0gYXBwSWQpO1xuXG5cdGlmIChpc0VtcHR5KGFwcCkpIHtcblx0XHRhcHAgPSBhcHBzLmZpbmQoKGVudHJ5KSA9PiBlbnRyeS5uYW1lID09PSBhcHBJZCk7XG5cdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRgQXBwIG5vdCBmb3VuZCB3aGVuIHVzaW5nIGxvb2t1cCBpZDogJHthcHBJZH0gYWdhaW5zdCBhcHBJZC4gRmVsbCBiYWNrIHRvIG5hbWUgdG8gc2VlIGlmIGl0IGlzIGEgcmVmZXJlbmNlIGFnYWluc3QgbmFtZS4gQXBwIGZvdW5kOiAkeyFpc0VtcHR5KFxuXHRcdFx0XHRhcHBcblx0XHRcdCl9YFxuXHRcdCk7XG5cdH1cblxuXHRyZXR1cm4gYXBwO1xufVxuXG4vKipcbiAqIEdldCB0aGUgYXBwbGljYXRpb24gdGhhdCBzdXBwb3J0IHRoZSByZXF1ZXN0ZWQgaW50ZW50LlxuICogQHBhcmFtIGludGVudCBUaGUgaW50ZW50IHRoZSBhcHBsaWNhdGlvbiBtdXN0IHN1cHBvcnQuXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBhcHBsaWNhdGlvbiB0aGF0IHN1cHBvcnQgdGhlIGludGVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEFwcHNCeUludGVudChpbnRlbnQ6IHN0cmluZyk6IFByb21pc2U8UGxhdGZvcm1BcHBbXT4ge1xuXHRjb25zdCBhcHBzID0gYXdhaXQgZ2V0QXBwcygpO1xuXHRyZXR1cm4gYXBwcy5maWx0ZXIoKGFwcCkgPT4ge1xuXHRcdGNvbnN0IGxpc3RlbnNGb3IgPSBhcHAuaW50ZXJvcD8uaW50ZW50cz8ubGlzdGVuc0ZvcjtcblxuXHRcdGlmIChpc0VtcHR5KGxpc3RlbnNGb3IpKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGNvbnN0IGludGVudE5hbWVzID0gT2JqZWN0LmtleXMobGlzdGVuc0Zvcik7XG5cdFx0Zm9yIChjb25zdCBpbnRlbnROYW1lIG9mIGludGVudE5hbWVzKSB7XG5cdFx0XHRpZiAoaW50ZW50TmFtZS50b0xvd2VyQ2FzZSgpID09PSBpbnRlbnQudG9Mb3dlckNhc2UoKSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9KTtcbn1cblxuLyoqXG4gKiBHZXQgYW4gaW50ZW50IGFuZCB0aGUgYXBwcyB0aGF0IHN1cHBvcnQgaXQuXG4gKiBAcGFyYW0gaW50ZW50IFRoZSBpbnRlbnQgdG8gbG9vayBmb3IuXG4gKiBAcGFyYW0gY29udGV4dFR5cGUgT3B0aW9uYWwgY29udGV4dCB0eXBlIHRvIGxvb2sgZm9yLlxuICogQHBhcmFtIHJlc3VsdFR5cGUgT3B0aW9uYWwgcmVzdWx0IHR5cGUgdG8gbG9vayBmb3IuXG4gKiBAcmV0dXJucyBUaGUgaW50ZW50IGFuZCBpdHMgc3VwcG9ydGluZyBhcHBzIGlmIGZvdW5kLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0SW50ZW50KFxuXHRpbnRlbnQ6IHN0cmluZyxcblx0Y29udGV4dFR5cGU/OiBzdHJpbmcsXG5cdHJlc3VsdFR5cGU/OiBzdHJpbmdcbik6IFByb21pc2U8QXBwc0ZvckludGVudCB8IHVuZGVmaW5lZD4ge1xuXHRjb25zdCBhcHBzID0gYXdhaXQgZ2V0QXBwcygpO1xuXG5cdGlmIChhcHBzLmxlbmd0aCA9PT0gMCkge1xuXHRcdGxvZ2dlci53YXJuKFwiVGhlcmUgd2FzIG5vIGFwcHMgcmV0dXJuZWQgc28gd2UgYXJlIHVuYWJsZSB0byBmaW5kIGFwcHMgdGhhdCBzdXBwb3J0IGFuIGludGVudFwiKTtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBpbnRlbnRzTWFwOiB7IFtrZXk6IHN0cmluZ106IEFwcHNGb3JJbnRlbnQgfSA9IHt9O1xuXG5cdGZvciAoY29uc3QgYXBwIG9mIGFwcHMpIHtcblx0XHRpZiAoYXBwLmludGVyb3A/LmludGVudHM/Lmxpc3RlbnNGb3IpIHtcblx0XHRcdGNvbnN0IHN1cHBvcnRlZEludGVudHMgPSBPYmplY3Qua2V5cyhhcHAuaW50ZXJvcC5pbnRlbnRzLmxpc3RlbnNGb3IpO1xuXHRcdFx0Zm9yIChjb25zdCBzdXBwb3J0ZWRJbnRlbnQgb2Ygc3VwcG9ydGVkSW50ZW50cykge1xuXHRcdFx0XHRjb25zdCBhcHBJbnRlbnQgPSBhcHAuaW50ZXJvcC5pbnRlbnRzLmxpc3RlbnNGb3Jbc3VwcG9ydGVkSW50ZW50XTtcblx0XHRcdFx0Y29uc3QgaW5jbHVkZSA9IGFwcEludGVudENvbnRhaW5zKGFwcEludGVudCwgY29udGV4dFR5cGUsIHJlc3VsdFR5cGUpO1xuXHRcdFx0XHRpZiAoaW5jbHVkZSkge1xuXHRcdFx0XHRcdHVwZGF0ZUFwcEludGVudHNNYXAoaW50ZW50c01hcCwgc3VwcG9ydGVkSW50ZW50LCBhcHBJbnRlbnQuZGlzcGxheU5hbWUsIGFwcCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRjb25zdCByZXN1bHRzID0gT2JqZWN0LnZhbHVlcyhpbnRlbnRzTWFwKTtcblx0aWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG5cdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRgTm8gcmVzdWx0cyBmb3VuZCBmb3IgZmluZEludGVudCBmb3IgaW50ZW50ICR7aW50ZW50fSBhbmQgY29udGV4dCAke2NvbnRleHRUeXBlfSBhbmQgcmVzdWx0VHlwZSAke3Jlc3VsdFR5cGV9YFxuXHRcdCk7XG5cdFx0cmV0dXJuO1xuXHR9IGVsc2UgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAxKSB7XG5cdFx0cmV0dXJuIHJlc3VsdHNbMF07XG5cdH1cblxuXHRsb2dnZXIud2Fybihcblx0XHRgUmVjZWl2ZWQgbW9yZSB0aGFuIG9uZSByZXN1bHQgZm9yIGZpbmRJbnRlbnQgZm9yIGludGVudCAke2ludGVudH0gYW5kIGNvbnRleHQgJHtjb250ZXh0VHlwZX0gYW5kIHJlc3VsdFR5cGUgJHtyZXN1bHRUeXBlfS4gUmV0dXJuaW5nIHRoZSBmaXJzdCBlbnRyeS5gXG5cdCk7XG5cdHJldHVybiByZXN1bHRzWzBdO1xufVxuXG4vKipcbiAqIEdldCB0aGUgYXBwcyB0aGF0IHN1cHBvcnQgaW50ZW50cyBieSB0aGUgY29udGV4dCB0eXBlLlxuICogQHBhcmFtIGNvbnRleHRUeXBlIFRoZSBjb250ZXh0IHR5cGUgdGhlIGFwcCBtdXN0IHN1cHBvcnQuXG4gKiBAcGFyYW0gcmVzdWx0VHlwZSBUaGUgb3B0aW9uYWwgcmVzdWx0IHR5cGUgdG8gbWF0Y2ggYXMgd2VsbC5cbiAqIEByZXR1cm5zIFRoZSBhcHBzIGZvciB0aGUgc3BlY2lmaWVkIGludGVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEludGVudHNCeUNvbnRleHQoXG5cdGNvbnRleHRUeXBlOiBzdHJpbmcsXG5cdHJlc3VsdFR5cGU/OiBzdHJpbmdcbik6IFByb21pc2U8QXBwc0ZvckludGVudFtdPiB7XG5cdGNvbnN0IGFwcHMgPSBhd2FpdCBnZXRBcHBzKCk7XG5cblx0aWYgKGFwcHMubGVuZ3RoID09PSAwKSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJVbmFibGUgdG8gZ2V0IGFwcHMgc28gd2UgY2FuIG5vdCBnZXQgYXBwcyBhbmQgaW50ZW50cyB0aGF0IHN1cHBvcnQgYSBwYXJ0aWN1bGFyIGNvbnRleHRcIik7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG5cblx0Y29uc3QgaW50ZW50czogeyBba2V5OiBzdHJpbmddOiBBcHBzRm9ySW50ZW50IH0gPSB7fTtcblxuXHRmb3IgKGNvbnN0IGFwcCBvZiBhcHBzKSB7XG5cdFx0Y29uc3QgbGlzdGVuc0ZvciA9IGFwcC5pbnRlcm9wPy5pbnRlbnRzPy5saXN0ZW5zRm9yO1xuXG5cdFx0aWYgKCFpc0VtcHR5KGxpc3RlbnNGb3IpKSB7XG5cdFx0XHRjb25zdCBzdXBwb3J0ZWRJbnRlbnRzID0gT2JqZWN0LmtleXMobGlzdGVuc0Zvcik7XG5cdFx0XHRmb3IgKGNvbnN0IHN1cHBvcnRlZEludGVudCBvZiBzdXBwb3J0ZWRJbnRlbnRzKSB7XG5cdFx0XHRcdGNvbnN0IGFwcEludGVudCA9IGxpc3RlbnNGb3Jbc3VwcG9ydGVkSW50ZW50XTtcblx0XHRcdFx0Y29uc3QgaW5jbHVkZSA9IGFwcEludGVudENvbnRhaW5zKGFwcEludGVudCwgY29udGV4dFR5cGUsIHJlc3VsdFR5cGUpO1xuXHRcdFx0XHRpZiAoaW5jbHVkZSkge1xuXHRcdFx0XHRcdHVwZGF0ZUFwcEludGVudHNNYXAoaW50ZW50cywgc3VwcG9ydGVkSW50ZW50LCBhcHBJbnRlbnQuZGlzcGxheU5hbWUsIGFwcCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnRlbnRzKTtcbn1cblxuLyoqXG4gKiBDaGVjayB0byBzZWUgaWYgdGhlIHN1cHBsaWVkIGFwcEludGVudCBzdXBwb3J0cyB0aGUgY29udGV4dCBhbmQgcmVzdWx0IHR5cGVzLlxuICogQHBhcmFtIGFwcEludGVudCBUaGUgYXBwIGludGVudCB0byBjaGVjay5cbiAqIEBwYXJhbSBjb250ZXh0VHlwZSBUaGUgb3B0aW9uYWwgY29udGV4dCB0eXBlIHRvIGxvb2sgZm9yLlxuICogQHBhcmFtIHJlc3VsdFR5cGUgVGhlIG9wdGlvbmFsIHJlc3VsdCB0eXBlIHRvIGxvb2sgZm9yLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYXBwIGludGVudCBtYXRjaGVzLlxuICovXG5mdW5jdGlvbiBhcHBJbnRlbnRDb250YWlucyhcblx0YXBwSW50ZW50OiBBcHBJbnRlbnRzLFxuXHRjb250ZXh0VHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRyZXN1bHRUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IGJvb2xlYW4ge1xuXHRpZiAoIWlzRW1wdHkoY29udGV4dFR5cGUpICYmICFpc0VtcHR5KHJlc3VsdFR5cGUpKSB7XG5cdFx0aWYgKCFhcHBJbnRlbnQ/LmNvbnRleHRzPy5pbmNsdWRlcyhjb250ZXh0VHlwZSkgfHwgIWFwcEludGVudC5yZXN1bHRUeXBlPy5pbmNsdWRlcyhyZXN1bHRUeXBlKSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fSBlbHNlIGlmICghaXNFbXB0eShjb250ZXh0VHlwZSkgJiYgIWFwcEludGVudD8uY29udGV4dHM/LmluY2x1ZGVzKGNvbnRleHRUeXBlKSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fSBlbHNlIGlmICghaXNFbXB0eShyZXN1bHRUeXBlKSAmJiAhYXBwSW50ZW50Py5yZXN1bHRUeXBlPy5pbmNsdWRlcyhyZXN1bHRUeXBlKSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBEbyB3ZSBoYXZlIHRoZSBwZXJtaXNzaW9ucyB0byBsYXVuY2ggZXh0ZXJuYWwgcHJvY2Vzc2VzLlxuICogQHJldHVybnMgVHJ1ZSBpZiB3ZSBoYXZlIHBlcm1pc3Npb24uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldENhbkxhdW5jaEV4dGVybmFsUHJvY2VzcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0bGV0IGNhbkxhdW5jaEV4dGVybmFsUHJvY2VzcyA9IGZhbHNlO1xuXG5cdHRyeSB7XG5cdFx0Y29uc3QgY2FuTGF1bmNoRXh0ZXJuYWxQcm9jZXNzUmVzcG9uc2UgPSBhd2FpdCBmaW4uU3lzdGVtLnF1ZXJ5UGVybWlzc2lvbkZvckN1cnJlbnRDb250ZXh0KFxuXHRcdFx0XCJTeXN0ZW0ubGF1bmNoRXh0ZXJuYWxQcm9jZXNzXCJcblx0XHQpO1xuXG5cdFx0Y2FuTGF1bmNoRXh0ZXJuYWxQcm9jZXNzID0gY2FuTGF1bmNoRXh0ZXJuYWxQcm9jZXNzUmVzcG9uc2U/LmdyYW50ZWQ7XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0bG9nZ2VyLmVycm9yKFwiRXJyb3Igd2hpbGUgcXVlcnlpbmcgZm9yIFN5c3RlbS5sYXVuY2hFeHRlcm5hbFByb2Nlc3MgcGVybWlzc2lvblwiLCBlcnJvcik7XG5cdH1cblxuXHRyZXR1cm4gY2FuTGF1bmNoRXh0ZXJuYWxQcm9jZXNzO1xufVxuXG4vKipcbiAqIERvIHdlIGhhdmUgdGhlIHBlcm1pc3Npb25zIHRvIGRvd25sb2FkIGFwcCBhc3NldHMuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHdlIGhhdmUgcGVybWlzc2lvbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0Q2FuRG93bmxvYWRBcHBBc3NldHMoKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGxldCBjYW5Eb3dubG9hZEFwcEFzc2V0cyA9IGZhbHNlO1xuXG5cdHRyeSB7XG5cdFx0Y29uc3QgY2FuRG93bmxvYWRBcHBBc3NldHNSZXNwb25zZSA9XG5cdFx0XHRhd2FpdCBmaW4uU3lzdGVtLnF1ZXJ5UGVybWlzc2lvbkZvckN1cnJlbnRDb250ZXh0KFwiU3lzdGVtLmRvd25sb2FkQXNzZXRcIik7XG5cdFx0Y2FuRG93bmxvYWRBcHBBc3NldHMgPSBjYW5Eb3dubG9hZEFwcEFzc2V0c1Jlc3BvbnNlPy5ncmFudGVkO1xuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdGxvZ2dlci5lcnJvcihcIkVycm9yIHdoaWxlIHF1ZXJ5aW5nIGZvciBTeXN0ZW0uZG93bmxvYWRBc3NldCBwZXJtaXNzaW9uXCIsIGVycm9yKTtcblx0fVxuXG5cdHJldHVybiBjYW5Eb3dubG9hZEFwcEFzc2V0cztcbn1cblxuLyoqXG4gKiBVcGRhdGUgdGhlIG1hcCBjb250YWluaW5nIHRoZSBpbnRlbnQgdG8gYXBwcy5cbiAqIEBwYXJhbSBpbnRlbnRzTWFwIFRoZSBtYXAgdG8gdXBkYXRlLlxuICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGludGVudC5cbiAqIEBwYXJhbSBkaXNwbGF5TmFtZSBUaGUgT3B0aW9ucyBkaXNwbGF5IG5hbWUgdG8gdXBkYXRlIHdpdGguXG4gKiBAcGFyYW0gYXBwIFRoZSBhcHBsaWNhdGlvbiB0byB1cGRhdGUuXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZUFwcEludGVudHNNYXAoXG5cdGludGVudHNNYXA6IHtcblx0XHRba2V5OiBzdHJpbmddOiBBcHBzRm9ySW50ZW50O1xuXHR9LFxuXHRuYW1lOiBzdHJpbmcsXG5cdGRpc3BsYXlOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdGFwcDogUGxhdGZvcm1BcHBcbik6IHZvaWQge1xuXHRpZiAoaXNFbXB0eShpbnRlbnRzTWFwW25hbWVdKSkge1xuXHRcdC8vIGluIGEgcHJvZHVjdGlvbiBhcHAgeW91IHdvdWxkIGVpdGhlciBuZWVkIHRvIGVuc3VyZSB0aGF0IGV2ZXJ5IGFwcCB3YXMgcG9wdWxhdGVkIHdpdGggdGhlIHNhbWUgbmFtZSAmIGRpc3BsYXlOYW1lIGZvciBhbiBpbnRlbnQgZnJvbSBhIGdvbGRlbiBzb3VyY2UgKGUuZy4gaW50ZW50cyB0YWJsZSkgc28gcGlja2luZyB0aGUgZmlyc3QgZW50cnkgd291bGRuJ3QgbWFrZSBhIGRpZmZlcmVuY2UuXG5cdFx0Ly8gb3IgeW91IGNvdWxkIHB1bGwgaW4gYSBnb2xkZW4gc291cmNlIG9mIGludGVudHMgZnJvbSBhIHNlcnZpY2UgYW5kIHRoZW4gZG8gYSBsb29rdXAgdXNpbmcgdGhlIGludGVudCBuYW1lIHRvIGdldCBhbiBvYmplY3Qgd2l0aCBpbnRlbnQgbmFtZSBhbmQgb2ZmaWNpYWwgZGlzcGxheSBuYW1lLlxuXHRcdGludGVudHNNYXBbbmFtZV0gPSB7XG5cdFx0XHRpbnRlbnQ6IHtcblx0XHRcdFx0bmFtZSxcblx0XHRcdFx0ZGlzcGxheU5hbWVcblx0XHRcdH0sXG5cdFx0XHRhcHBzOiBbXVxuXHRcdH07XG5cdH1cblx0aW50ZW50c01hcFtuYW1lXS5hcHBzLnB1c2goYXBwKTtcbn1cbiIsImltcG9ydCAqIGFzIGF1dGhQcm92aWRlciBmcm9tIFwiLi9hdXRoXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0SGVscGVycyB9IGZyb20gXCIuL21vZHVsZXNcIjtcbmltcG9ydCAqIGFzIHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIgZnJvbSBcIi4vcGxhdGZvcm0vcGxhdGZvcm0tc3BsYXNoXCI7XG5pbXBvcnQgeyBpc1ZhbGlkSG9zdEZvck1hbmlmZXN0IH0gZnJvbSBcIi4vc2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIHsgQXV0aFByb3ZpZGVyT3B0aW9ucywgTG9nZ2VyLCBNb2R1bGVIZWxwZXJzIH0gZnJvbSBcIi4vc2hhcGVzXCI7XG5cbmxldCBwbGF0Zm9ybUluaXRpYWxpemVkID0gZmFsc2U7XG5sZXQgbG9nZ2VyOiBMb2dnZXIgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgYXV0aGVudGljYXRpb24gZmxvdy5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSBhdXRoIHByb3ZpZGVyLlxuICogQHBhcmFtIG5leHQgVGhlIG5leHQgbWV0aG9kIHRvIGNhbGwgaW4gdGhlIGF1dGggY2hhaW4uXG4gKiBAcGFyYW0gaW5pdExvZ2dlciBMb2dnZXIgZm9yIG91dHB1dHRpbmcgYW55IGluZm9ybWF0aW9uLlxuICogQHBhcmFtIGxpc3RlbkZvckF1dGhDaGFuZ2VzIExpc3RlbiBmb3IgdGhlIGV2ZW50cyBmcm9tIHRoZSBhdXRoIHByb3ZpZGVyLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgbmV4dCBtZXRob2QgY2FsbC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQoXG5cdG9wdGlvbnM6IEF1dGhQcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQsXG5cdG5leHQ6ICgpID0+IFByb21pc2U8Ym9vbGVhbj4sXG5cdGluaXRMb2dnZXI6IExvZ2dlcixcblx0bGlzdGVuRm9yQXV0aENoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZVxuKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGxvZ2dlciA9IGluaXRMb2dnZXI7XG5cblx0aWYgKCEoYXdhaXQgaXNWYWxpZEhvc3RGb3JNYW5pZmVzdCgpKSkge1xuXHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFwiVGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBzdGFydHVwIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIHNldHRpbmcgdXNlZCB0byBib290c3RyYXAgdGhpcyBhcHBsaWNhdGlvbiBpcyBub3QgZnJvbSBhIHZhbGlkIGhvc3QuIFBsZWFzZSB1cGRhdGUgdGhlIHRoZSBsaXN0IG9yIHRoaXMgbG9naWMgaWYgcmVxdWlyZWRcIlxuXHRcdCk7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0bG9nZ2VyLmluZm8oXCJJbml0aWFsaXppbmcgQXV0aCBDaGVja1wiKTtcblx0Y29uc3QgbW9kdWxlSGVscGVyczogTW9kdWxlSGVscGVycyA9IGdldERlZmF1bHRIZWxwZXJzKCk7XG5cdGF3YWl0IGF1dGhQcm92aWRlci5pbml0KG9wdGlvbnMsIG1vZHVsZUhlbHBlcnMpO1xuXG5cdGlmIChhdXRoUHJvdmlkZXIuaXNBdXRoZW50aWNhdGlvbkVuYWJsZWQoKSkge1xuXHRcdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJBdXRoZW50aWNhdGlvblwiKTtcblxuXHRcdGNvbnN0IGF1dGhlbnRpY2F0aW9uUmVxdWlyZWQgPSBhd2FpdCBhdXRoUHJvdmlkZXIuaXNBdXRoZW50aWNhdGlvblJlcXVpcmVkKCk7XG5cdFx0aWYgKGxpc3RlbkZvckF1dGhDaGFuZ2VzKSB7XG5cdFx0XHQvLyBjaGVjayBmb3Igc2Vzc2lvbiBleHBpcnlcblx0XHRcdGF1dGhQcm92aWRlci5zdWJzY3JpYmUoXCJzZXNzaW9uLWV4cGlyZWRcIiwgbWFuYWdlQXV0aEZsb3cpO1xuXG5cdFx0XHQvLyBjaGVjayBmb3IgbG9nb3V0XG5cdFx0XHRhdXRoUHJvdmlkZXIuc3Vic2NyaWJlKFwibG9nZ2VkLW91dFwiLCBvbkxvZ091dE9yQ2FuY2VsKTtcblx0XHR9XG5cdFx0aWYgKGF1dGhlbnRpY2F0aW9uUmVxdWlyZWQpIHtcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdGNvbnN0IGxvZ2dlZEluU3Vic2NyaXB0aW9uID0gYXV0aFByb3ZpZGVyLnN1YnNjcmliZShcImxvZ2dlZC1pblwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0aW5pdExvZ2dlci5pbmZvKFwiUGxhdGZvcm0gbG9nZ2VkIGluLiBTZXR0aW5nIHVwIHBsYXRmb3JtXCIpO1xuXHRcdFx0XHRcdHBsYXRmb3JtSW5pdGlhbGl6ZWQgPSBhd2FpdCBuZXh0KCk7XG5cdFx0XHRcdFx0aW5pdExvZ2dlci5pbmZvKFwiVW5zdWJzY3JpYmluZyBmcm9tIGxvZ2dlZCBpbiBldmVudHMgYXMgcGxhdGZvcm0gaGFzIGJlZW4gaW5pdGlhbGl6ZWRcIik7XG5cdFx0XHRcdFx0aWYgKGxvZ2dlZEluU3Vic2NyaXB0aW9uKSB7XG5cdFx0XHRcdFx0XHRhdXRoUHJvdmlkZXIudW5zdWJzY3JpYmUobG9nZ2VkSW5TdWJzY3JpcHRpb24pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXNvbHZlKHBsYXRmb3JtSW5pdGlhbGl6ZWQpO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRtYW5hZ2VBdXRoRmxvdygpXG5cdFx0XHRcdFx0LnRoZW4oKF8pID0+IHtcblx0XHRcdFx0XHRcdGluaXRMb2dnZXIuaW5mbyhcIk1hbmFnZSBBdXRoIEZsb3cgZXhlY3V0ZWQuXCIpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQuY2F0Y2goKHJlYXNvbikgPT4ge1xuXHRcdFx0XHRcdFx0cmVqZWN0KHJlYXNvbik7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG5leHQoKTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzIHRoZSBhdXRoZW50aWNhdGlvbiBmbG93IGJlaW5nIGNhbmNlbGxlZCBvciBsb2dnZWQgb3V0LlxuICovXG5hc3luYyBmdW5jdGlvbiBvbkxvZ091dE9yQ2FuY2VsKCk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAocGxhdGZvcm1Jbml0aWFsaXplZCkge1xuXHRcdGxvZ2dlcj8uaW5mbyhcIkNhbGxpbmcgcXVpdCBvbiBwbGF0Zm9ybVwiKTtcblx0XHRjb25zdCBwbGF0ID0gZmluLlBsYXRmb3JtLmdldEN1cnJlbnRTeW5jKCk7XG5cdFx0YXdhaXQgcGxhdC5xdWl0KCk7XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyPy5pbmZvKFwiUGxhdGZvcm0gbm90IHlldCBpbml0aWFsaXplZC4gQ2xvc2luZyBwcm92aWRlciB3aW5kb3dcIik7XG5cdFx0Y29uc3QgcGxhdGZvcm1XaW5kb3cgPSBmaW4uV2luZG93LndyYXBTeW5jKGZpbi5tZS5pZGVudGl0eSk7XG5cdFx0YXdhaXQgcGxhdGZvcm1XaW5kb3cuY2xvc2UodHJ1ZSk7XG5cdH1cbn1cbi8qKlxuICogTG9naW4gdGhlIHVzZXIgYW5kIGhhbmRsZSByZXN1bHRzLlxuICovXG5hc3luYyBmdW5jdGlvbiBtYW5hZ2VBdXRoRmxvdygpOiBQcm9taXNlPHZvaWQ+IHtcblx0bG9nZ2VyPy5pbmZvKFwiQXV0aGVudGljYXRpb24gcmVxdWlyZWQuIFJlcXVlc3RpbmcgbG9naW5cIik7XG5cdGNvbnN0IHVzZXJMb2dnZWRJbiA9IGF3YWl0IGF1dGhQcm92aWRlci5sb2dpbigpO1xuXHRpZiAodXNlckxvZ2dlZEluKSB7XG5cdFx0bG9nZ2VyPy5pbmZvKFwiTG9nZ2VkIGluXCIpO1xuXHR9IGVsc2Uge1xuXHRcdC8vIHVzZXIgY2FuY2VsbGVkIHRoZSBsb2dpbiBwcm9jZXNzLlxuXHRcdC8vIG9yIGV4Y2VlZGVkIHRyaWVzLlxuXHRcdC8vIHN0b3AgdGhlIHBsYXRmb3JtIGZyb20gc3RhcnRpbmcuXG5cdFx0bG9nZ2VyPy53YXJuKFxuXHRcdFx0XCJVc2VyIHByb2Nlc3Mgd2FzIGNhbmNlbGxlZC4gQXQgdGhpcyBwb2ludCB5b3Ugc2hvdWxkIGNsb3NlIHRoZSBhcHBsaWNhdGlvbiBzbyB0aGF0IHRoZSB1c2VyIGNhbiByZWxhdW5jaCBhbmQgdHJ5IGFnYWluLiBXZSBhcmUgY2xvc2luZyB0aGUgcGxhdGZvcm1cIlxuXHRcdCk7XG5cdFx0YXdhaXQgb25Mb2dPdXRPckNhbmNlbCgpO1xuXHR9XG59XG4iLCJpbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiLi9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB7IGluaXRpYWxpemVNb2R1bGUsIGxvYWRNb2R1bGVzIH0gZnJvbSBcIi4vbW9kdWxlc1wiO1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVIZWxwZXJzIH0gZnJvbSBcIi4vc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IEF1dGhQcm92aWRlciwgQXV0aFByb3ZpZGVyT3B0aW9ucyB9IGZyb20gXCIuL3NoYXBlcy9hdXRoLXNoYXBlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIkF1dGhcIik7XG5cbmxldCBhdXRoT3B0aW9uczogQXV0aFByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZDtcbmxldCBhdXRoUHJvdmlkZXI6IEF1dGhQcm92aWRlcjtcbmxldCBpc0luaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5sZXQgYXV0aEVuYWJsZWQgPSBmYWxzZTtcblxuLyoqXG4gKiBJbml0aWFsaXplIHRoZSBhdXRoZW50aWNhdGlvbiBwcm92aWRlci5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgYXV0aGVudGljYXRpb24gcHJvdmlkZXIuXG4gKiBAcGFyYW0gaGVscGVycyBNb2R1bGUgaGVscGVycyB0byBwYXNzIHRvIGFueSBsb2FkZWQgbW9kdWxlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQob3B0aW9uczogQXV0aFByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCwgaGVscGVyczogTW9kdWxlSGVscGVycyk6IFByb21pc2U8dm9pZD4ge1xuXHRhdXRoT3B0aW9ucyA9IG9wdGlvbnM7XG5cdGlmIChpc0VtcHR5KGF1dGhPcHRpb25zKSkge1xuXHRcdGxvZ2dlci5pbmZvKFxuXHRcdFx0XCJVbmFibGUgdG8gaW5pdGlhbGl6ZSBhdXRoZW50aWNhdGlvbiB3aXRob3V0IHNldHRpbmdzLiBJZiB0aGlzIHBsYXRmb3JtIHJlcXVpcmVzIGF1dGggcGxlYXNlIGVuc3VyZSB5b3UgaGF2ZSBzZXQgdGhlIGF1dGhQcm92aWRlciBzZXR0aW5nc1wiXG5cdFx0KTtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpZiAoIWlzSW5pdGlhbGl6ZWQpIHtcblx0XHRpc0luaXRpYWxpemVkID0gdHJ1ZTtcblxuXHRcdGNvbnN0IGF1dGhNb2R1bGVzID0gYXdhaXQgbG9hZE1vZHVsZXM8QXV0aFByb3ZpZGVyPihhdXRoT3B0aW9ucywgXCJhdXRoXCIpO1xuXHRcdGlmIChhdXRoTW9kdWxlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRpZiAoYXV0aE1vZHVsZXMubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRsb2dnZXIud2FybihcIllvdSBoYXZlIG1vcmUgdGhhbiBvbmUgYXV0aCBtb2R1bGUgZW5hYmxlZCwgb25seSB0aGUgZmlyc3Qgd2lsbCBiZSB1c2VkXCIpO1xuXHRcdFx0fVxuXG5cdFx0XHRhd2FpdCBpbml0aWFsaXplTW9kdWxlPEF1dGhQcm92aWRlcj4oYXV0aE1vZHVsZXNbMF0sIGhlbHBlcnMpO1xuXHRcdFx0YXV0aFByb3ZpZGVyID0gYXV0aE1vZHVsZXNbMF0uaW1wbGVtZW50YXRpb247XG5cdFx0XHRhdXRoRW5hYmxlZCA9IHRydWU7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGxvZ2dlci53YXJuKFwiVGhlIGF1dGggcHJvdmlkZXIgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZFwiKTtcblx0fVxufVxuXG4vKipcbiAqIElzIHRoZSBhdXRoZW50aWNhdGlvbiBlbmFibGVkLlxuICogQHJldHVybnMgVHJ1ZSBpZiBhdXRoZW50aWNhdGlvbiBpcyBlbmFibGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBdXRoZW50aWNhdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdHJldHVybiBhdXRoRW5hYmxlZDtcbn1cblxuLyoqXG4gKiBTdWJzY3JpYmUgdG8gdGhlIGF1dGhlbnRpY2F0aW9uIGV2ZW50cy5cbiAqIEBwYXJhbSB0byBUaGUgZXZlbnQgdG8gc3Vic2NyaWJlIHRvLlxuICogQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIGV2ZW50IG9jY3Vycy5cbiAqIEByZXR1cm5zIEEgc3Vic2NyaXB0aW9uIGlkIHRvIHVuc3Vic2NyaWJlIHdpdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YnNjcmliZShcblx0dG86IFwibG9nZ2VkLWluXCIgfCBcImJlZm9yZS1sb2dnZWQtb3V0XCIgfCBcImxvZ2dlZC1vdXRcIiB8IFwic2Vzc2lvbi1leHBpcmVkXCIsXG5cdGNhbGxiYWNrOiAocGF5bG9hZD86IHVua25vd24pID0+IFByb21pc2U8dm9pZD5cbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmIChpc0VtcHR5KGF1dGhQcm92aWRlcikpIHtcblx0XHRsb2dnZXIud2FybihcIlBsZWFzZSBpbml0aWFsaXplIGF1dGggYmVmb3JlIHRyeWluZyB0byB1c2Ugc3Vic2NyaWJlXCIpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIElmIHRoZSBzdWJzY3JpcHRpb24gaXMgZm9yIGxvZ2dlZC1pbiBldmVudCB0aGVuIHdlIHdyYXAgdGhlIGNhbGxiYWNrXG5cdC8vIHNvIHRoYXQgd2UgY2FuIG9wdGlvbmFsbHkgcGFzcyB0aGUgdXNlciBpbmZvIGJhY2sgdG8gc3Vic2NyaWJlcnNcblx0bGV0IHdyYXBwZWRDYWxsYmFjazogKCgpID0+IFByb21pc2U8dm9pZD4pIHwgdW5kZWZpbmVkO1xuXHRpZiAodG8gPT09IFwibG9nZ2VkLWluXCIpIHtcblx0XHR3cmFwcGVkQ2FsbGJhY2sgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0XHRzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcblx0XHRcdFx0YXdhaXQgY2FsbGJhY2soYXV0aE9wdGlvbnM/LmluY2x1ZGVMb2dnZWRJblVzZXJJbmZvID8/IHRydWUgPyBhd2FpdCBnZXRVc2VySW5mbygpIDogdW5kZWZpbmVkKTtcblx0XHRcdH0sIDApO1xuXHRcdH07XG5cdH1cblxuXHRjb25zdCBzdWJzY3JpcHRpb25JZCA9IGF1dGhQcm92aWRlci5zdWJzY3JpYmUodG8sIHdyYXBwZWRDYWxsYmFjayA/PyBjYWxsYmFjayk7XG5cblx0Ly8gSWYgd2UgYXJlIGFscmVhZHkgbG9nZ2VkIGluIHRoZW4gY2FsbCB0aGUgbWV0aG9kIGltbWVkaWF0ZWx5IG9uIHRoZSBuZXh0IHJlZnJlc2ggY3ljbGVcblx0aWYgKHRvID09PSBcImxvZ2dlZC1pblwiKSB7XG5cdFx0c2V0VGltZW91dChhc3luYyAoKSA9PiB7XG5cdFx0XHRpZiAod3JhcHBlZENhbGxiYWNrICYmICEoYXdhaXQgaXNBdXRoZW50aWNhdGlvblJlcXVpcmVkKCkpKSB7XG5cdFx0XHRcdGF3YWl0IHdyYXBwZWRDYWxsYmFjaygpO1xuXHRcdFx0fVxuXHRcdH0sIDApO1xuXHR9XG5cblx0cmV0dXJuIHN1YnNjcmlwdGlvbklkO1xufVxuXG4vKipcbiAqIFVuc3Vic2NyaWJlIHRoZSBzdXBwbGllZCBzdWJzY3JpcHRpb24gaWQuXG4gKiBAcGFyYW0gc3Vic2NyaXB0aW9uSWQgU3Vic2NyaXB0aW9uIGlkLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdW5zdWJzY3JpYmUgd2FzIHN1Y2Nlc3NmdWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnN1YnNjcmliZShzdWJzY3JpcHRpb25JZDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdGlmIChpc0VtcHR5KGF1dGhQcm92aWRlcikpIHtcblx0XHRsb2dnZXIud2FybihcIlBsZWFzZSBpbml0aWFsaXplIGF1dGggYmVmb3JlIHRyeWluZyB0byB1c2UgdW5zdWJzY3JpYmVcIik7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdHJldHVybiBhdXRoUHJvdmlkZXIudW5zdWJzY3JpYmUoc3Vic2NyaXB0aW9uSWQpO1xufVxuXG4vKipcbiAqIFN0YXJ0IHRoZSBsb2dpbiB3b3JrZmxvdyBmb3IgYXV0aGVudGljYXRpb24uXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBsb2dpbiB3YXMgc3VjY2Vzc2Z1bC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvZ2luKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRpZiAoaXNFbXB0eShhdXRoUHJvdmlkZXIpKSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJQbGVhc2UgaW5pdGlhbGl6ZSBhdXRoIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGxvZ2luXCIpO1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRsb2dnZXIuaW5mbyhcIkxvZyBpbiByZXF1ZXN0ZWRcIik7XG5cdHJldHVybiBhdXRoUHJvdmlkZXIubG9naW4oKTtcbn1cblxuLyoqXG4gKiBTdGFydCB0aGUgbG9nb3V0IHdvcmtmbG93LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgbG9nb3V0IHdhcyBzdWNjZXNzZnVsLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9nb3V0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRpZiAoaXNFbXB0eShhdXRoUHJvdmlkZXIpKSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJQbGVhc2UgaW5pdGlhbGl6ZSBhdXRoIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGxvZ291dFwiKTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0bG9nZ2VyLmluZm8oXCJMb2cgb3V0IHJlcXVlc3RlZFwiKTtcblx0cmV0dXJuIGF1dGhQcm92aWRlci5sb2dvdXQoKTtcbn1cblxuLyoqXG4gKiBEb2VzIHRoZSBwbGF0Zm9ybSByZXF1aXJlIGF1dGhlbnRpY2F0aW9uLlxuICogQHJldHVybnMgVHJ1ZSBpZiBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzQXV0aGVudGljYXRpb25SZXF1aXJlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0aWYgKGlzRW1wdHkoYXV0aFByb3ZpZGVyKSkge1xuXHRcdGxvZ2dlci5pbmZvKFxuXHRcdFx0XCJBdXRoIG1heSBub3QgYmUgcmVxdWlyZWQgZm9yIHRoaXMgYXBwLiBJZiBpdCBpcyBwbGVhc2UgaW5pdGlhbGl6ZSBhdXRoIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGlzQXV0aGVudGljYXRpb25SZXF1aXJlZFwiXG5cdFx0KTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0bG9nZ2VyLmluZm8oXCJpc0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQgcmVxdWVzdGVkXCIpO1xuXHRyZXR1cm4gYXV0aFByb3ZpZGVyLmlzQXV0aGVudGljYXRpb25SZXF1aXJlZCgpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgdXNlciBpbmZvcm1hdGlvbiBmb3IgdGhlIGxvZ2dlZCBpbiB1c2VyLlxuICogQHJldHVybnMgVGhlIHVzZXIgaW5mby5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFVzZXJJbmZvKCk6IFByb21pc2U8dW5rbm93bj4ge1xuXHRpZiAoaXNFbXB0eShhdXRoUHJvdmlkZXIpKSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJQbGVhc2UgaW5pdGlhbGl6ZSBhdXRoIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGdldFVzZXJJbmZvXCIpO1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cdGxvZ2dlci5pbmZvKFwiZ2V0VXNlckluZm8gcmVxdWVzdGVkXCIpO1xuXHRyZXR1cm4gYXV0aFByb3ZpZGVyLmdldFVzZXJJbmZvKCk7XG59XG4iLCJpbXBvcnQgdHlwZSB7IEhvbWVSZWdpc3RyYXRpb24sIFJlZ2lzdHJhdGlvbk1ldGFJbmZvIH0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZVwiO1xuaW1wb3J0IHsgZ2V0Q3VycmVudFN5bmMgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgKiBhcyBhbmFseXRpY3NQcm92aWRlciBmcm9tIFwiLi9hbmFseXRpY3NcIjtcbmltcG9ydCB7IGdldEFwcHMgfSBmcm9tIFwiLi9hcHBzXCI7XG5pbXBvcnQgKiBhcyBhdXRoUHJvdmlkZXIgZnJvbSBcIi4vYXV0aFwiO1xuaW1wb3J0IHsgaXNBdXRoZW50aWNhdGlvbkVuYWJsZWQgfSBmcm9tIFwiLi9hdXRoXCI7XG5pbXBvcnQgeyByZWdpc3RlckFjdGlvbiB9IGZyb20gXCIuL2Nvbm5lY3Rpb25zXCI7XG5pbXBvcnQgeyBpbml0IGFzIHJlZ2lzdGVySW5pdE9wdGlvbnNMaXN0ZW5lciB9IGZyb20gXCIuL2luaXQtb3B0aW9uc1wiO1xuaW1wb3J0IHsgY2xvc2Vkb3duIGFzIGRlcmVnaXN0ZXJJbnRlZ3JhdGlvbiwgaW5pdCBhcyByZWdpc3RlckludGVncmF0aW9uIH0gZnJvbSBcIi4vaW50ZWdyYXRpb25zXCI7XG5pbXBvcnQgeyBsYXVuY2ggfSBmcm9tIFwiLi9sYXVuY2hcIjtcbmltcG9ydCB7IGZpcmVMaWZlY3ljbGVFdmVudCB9IGZyb20gXCIuL2xpZmVjeWNsZVwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0SGVscGVycyB9IGZyb20gXCIuL21vZHVsZXNcIjtcbmltcG9ydCAqIGFzIHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIgZnJvbSBcIi4vcGxhdGZvcm0vcGxhdGZvcm0tc3BsYXNoXCI7XG5pbXBvcnQgeyBnZXRTZXR0aW5ncyB9IGZyb20gXCIuL3NldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IFBsYXRmb3JtQW5hbHl0aWNzRXZlbnQgfSBmcm9tIFwiLi9zaGFwZXMvYW5hbHl0aWNzLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBCb290c3RyYXBDb21wb25lbnRzLCBCb290c3RyYXBPcHRpb25zIH0gZnJvbSBcIi4vc2hhcGVzL2Jvb3RzdHJhcC1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgTG9nZ2VkSW5MaWZlY3ljbGVQYXlsb2FkIH0gZnJvbSBcIi4vc2hhcGVzL2xpZmVjeWNsZS1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgTW9kdWxlSGVscGVycyB9IGZyb20gXCIuL3NoYXBlcy9tb2R1bGUtc2hhcGVzXCI7XG5pbXBvcnQgKiBhcyB0cmF5UHJvdmlkZXIgZnJvbSBcIi4vdHJheVwiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyB2ZXJzaW9uUHJvdmlkZXIgZnJvbSBcIi4vdmVyc2lvblwiO1xuaW1wb3J0ICogYXMgZG9ja0NvbXBvbmVudCBmcm9tIFwiLi93b3Jrc3BhY2UvZG9ja1wiO1xuaW1wb3J0ICogYXMgaG9tZUNvbXBvbmVudCBmcm9tIFwiLi93b3Jrc3BhY2UvaG9tZVwiO1xuaW1wb3J0ICogYXMgbG93Q29kZUludGVncmF0aW9uUHJvdmlkZXIgZnJvbSBcIi4vd29ya3NwYWNlL2xvdy1jb2RlLWludGVncmF0aW9uc1wiO1xuaW1wb3J0ICogYXMgbm90aWZpY2F0aW9uc0NvbXBvbmVudCBmcm9tIFwiLi93b3Jrc3BhY2Uvbm90aWZpY2F0aW9uc1wiO1xuaW1wb3J0ICogYXMgc3RvcmVDb21wb25lbnQgZnJvbSBcIi4vd29ya3NwYWNlL3N0b3JlXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIkJvb3RzdHJhcHBlclwiKTtcblxubGV0IGJvb3RzdHJhcE9wdGlvbnM6IEJvb3RzdHJhcE9wdGlvbnMgfCB1bmRlZmluZWQ7XG5sZXQgZGVyZWdpc3RlcmVkID0gZmFsc2U7XG5cbi8qKlxuICogQm9vdHN0cmFwIHRoZSB3b3Jrc3BhY2UgY29tcG9uZW50cy5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHBsYXRmb3JtIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0Ly8geW91IGNhbiBraWNrIG9mZiB5b3VyIGJvb3RzdHJhcHBpbmcgcHJvY2VzcyBoZXJlIHdoZXJlIHlvdSBtYXkgZGVjaWRlIHRvIHByb21wdCBmb3IgYXV0aGVudGljYXRpb24sXG5cdC8vIGdhdGhlciByZWZlcmVuY2UgZGF0YSBldGMgYmVmb3JlIHN0YXJ0aW5nIHdvcmtzcGFjZSBhbmQgaW50ZXJhY3Rpbmcgd2l0aCBpdC5cblx0bG9nZ2VyLmluZm8oXCJJbml0aWFsaXppbmcgdGhlIGJvb3RzdHJhcHBlclwiKTtcblx0Y29uc3QgY3VzdG9tU2V0dGluZ3MgPSBhd2FpdCBnZXRTZXR0aW5ncygpO1xuXG5cdGJvb3RzdHJhcE9wdGlvbnMgPSB7IC4uLmN1c3RvbVNldHRpbmdzLmJvb3RzdHJhcCB9O1xuXHRib290c3RyYXBPcHRpb25zLmhvbWUgPSBib290c3RyYXBPcHRpb25zLmhvbWUgPz8gdHJ1ZTtcblx0Ym9vdHN0cmFwT3B0aW9ucy5zdG9yZSA9IGJvb3RzdHJhcE9wdGlvbnMuc3RvcmUgPz8gZmFsc2U7XG5cdGJvb3RzdHJhcE9wdGlvbnMuZG9jayA9IGJvb3RzdHJhcE9wdGlvbnMuZG9jayA/PyBmYWxzZTtcblx0Ym9vdHN0cmFwT3B0aW9ucy5ub3RpZmljYXRpb25zID0gYm9vdHN0cmFwT3B0aW9ucy5ub3RpZmljYXRpb25zID8/IGZhbHNlO1xuXHRib290c3RyYXBPcHRpb25zLmF1dG9TaG93ID0gYm9vdHN0cmFwT3B0aW9ucy5hdXRvU2hvdyA/PyBbXTtcblx0Ym9vdHN0cmFwT3B0aW9ucy5hdXRvc3RhcnRBcHBzID0gYm9vdHN0cmFwT3B0aW9ucy5hdXRvc3RhcnRBcHBzID8/IHRydWU7XG5cblx0Y29uc3QgbW9kdWxlSGVscGVyczogTW9kdWxlSGVscGVycyA9IGdldERlZmF1bHRIZWxwZXJzKCk7XG5cblx0Y29uc3QgcmVnaXN0ZXJlZENvbXBvbmVudHM6IEJvb3RzdHJhcENvbXBvbmVudHNbXSA9IFtdO1xuXHRsZXQgaG9tZVJlZ2lzdHJhdGlvbjogSG9tZVJlZ2lzdHJhdGlvbiB8IHVuZGVmaW5lZDtcblx0bGV0IHdvcmtzcGFjZU1ldGFJbmZvOiBSZWdpc3RyYXRpb25NZXRhSW5mbyB8IHVuZGVmaW5lZDtcblx0bGV0IG5vdGlmaWNhdGlvbk1ldGFJbmZvOiBSZWdpc3RyYXRpb25NZXRhSW5mbyB8IHVuZGVmaW5lZDtcblxuXHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiSW50ZWdyYXRpb25zXCIpO1xuXHRsb2dnZXIuaW5mbyhcIlJlZ2lzdGVyaW5nIGludGVncmF0aW9uc1wiKTtcblx0YXdhaXQgcmVnaXN0ZXJJbnRlZ3JhdGlvbihjdXN0b21TZXR0aW5ncy5pbnRlZ3JhdGlvblByb3ZpZGVyLCBtb2R1bGVIZWxwZXJzLCBhc3luYyAocXVlcnkpID0+IHtcblx0XHRpZiAoaG9tZVJlZ2lzdHJhdGlvbj8uc2V0U2VhcmNoUXVlcnkpIHtcblx0XHRcdGF3YWl0IGhvbWVSZWdpc3RyYXRpb24/LnNldFNlYXJjaFF1ZXJ5KHF1ZXJ5KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bG9nZ2VyLndhcm4oXCJIb21lIHJlZ2lzdHJhdGlvbiBzZXRTZWFyY2hRdWVyeSBjYWxsZWQgYnkgaW50ZWdyYXRpb24sIGJ1dCBpdCBpcyBub3QgYXZhaWxhYmxlXCIpO1xuXHRcdH1cblx0fSk7XG5cblx0aWYgKGJvb3RzdHJhcE9wdGlvbnMuaG9tZSkge1xuXHRcdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJIb21lXCIpO1xuXG5cdFx0Ly8gb25seSByZWdpc3RlciBzZWFyY2ggbG9naWMgb25jZSB3b3Jrc3BhY2UgaXMgcnVubmluZ1xuXHRcdGhvbWVSZWdpc3RyYXRpb24gPSBhd2FpdCBob21lQ29tcG9uZW50LnJlZ2lzdGVyKGN1c3RvbVNldHRpbmdzLmhvbWVQcm92aWRlcik7XG5cdFx0aWYgKGhvbWVSZWdpc3RyYXRpb24pIHtcblx0XHRcdHdvcmtzcGFjZU1ldGFJbmZvID0ge1xuXHRcdFx0XHR3b3Jrc3BhY2VWZXJzaW9uOiBob21lUmVnaXN0cmF0aW9uLndvcmtzcGFjZVZlcnNpb24sXG5cdFx0XHRcdGNsaWVudEFQSVZlcnNpb246IGhvbWVSZWdpc3RyYXRpb24uY2xpZW50QVBJVmVyc2lvblxuXHRcdFx0fTtcblx0XHRcdHJlZ2lzdGVyZWRDb21wb25lbnRzLnB1c2goXCJob21lXCIpO1xuXHRcdFx0cmVnaXN0ZXJIb21lU3VwcG9ydGVkQWN0aW9ucygpO1xuXHRcdH1cblx0fVxuXG5cdGlmIChib290c3RyYXBPcHRpb25zLnN0b3JlKSB7XG5cdFx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci51cGRhdGVQcm9ncmVzcyhcIlN0b3JlXCIpO1xuXG5cdFx0Y29uc3Qgc3RvcmVSZWdpc3RyYXRpb24gPSBhd2FpdCBzdG9yZUNvbXBvbmVudC5yZWdpc3RlcihjdXN0b21TZXR0aW5ncy5zdG9yZWZyb250UHJvdmlkZXIpO1xuXHRcdGlmIChzdG9yZVJlZ2lzdHJhdGlvbikge1xuXHRcdFx0aWYgKCF3b3Jrc3BhY2VNZXRhSW5mbykge1xuXHRcdFx0XHR3b3Jrc3BhY2VNZXRhSW5mbyA9IHN0b3JlUmVnaXN0cmF0aW9uO1xuXHRcdFx0fVxuXHRcdFx0cmVnaXN0ZXJlZENvbXBvbmVudHMucHVzaChcInN0b3JlXCIpO1xuXHRcdFx0cmVnaXN0ZXJTdG9yZVN1cHBvcnRlZEFjdGlvbnMoKTtcblx0XHR9XG5cdH1cblxuXHRpZiAoYm9vdHN0cmFwT3B0aW9ucy5kb2NrKSB7XG5cdFx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci51cGRhdGVQcm9ncmVzcyhcIkRvY2tcIik7XG5cblx0XHRjb25zdCBkb2NrUmVnaXN0cmF0aW9uID0gYXdhaXQgZG9ja0NvbXBvbmVudC5yZWdpc3RlcihjdXN0b21TZXR0aW5ncy5kb2NrUHJvdmlkZXIsIGJvb3RzdHJhcE9wdGlvbnMpO1xuXHRcdGlmIChkb2NrUmVnaXN0cmF0aW9uKSB7XG5cdFx0XHRpZiAoIXdvcmtzcGFjZU1ldGFJbmZvKSB7XG5cdFx0XHRcdHdvcmtzcGFjZU1ldGFJbmZvID0gZG9ja1JlZ2lzdHJhdGlvbjtcblx0XHRcdH1cblx0XHRcdHJlZ2lzdGVyZWRDb21wb25lbnRzLnB1c2goXCJkb2NrXCIpO1xuXHRcdFx0cmVnaXN0ZXJEb2NrU3VwcG9ydGVkQWN0aW9ucygpO1xuXHRcdH1cblx0fVxuXG5cdGlmICghaXNFbXB0eSh3b3Jrc3BhY2VNZXRhSW5mbykpIHtcblx0XHQvLyB3ZSBtYXRjaCB0aGUgdmVyc2lvbnMgb2Ygd29ya3NwYWNlIHJlbGF0ZWQgcGFja2FnZXNcblx0XHR2ZXJzaW9uUHJvdmlkZXIuc2V0VmVyc2lvbihcIndvcmtzcGFjZVBsYXRmb3JtQ2xpZW50XCIsIHdvcmtzcGFjZU1ldGFJbmZvLmNsaWVudEFQSVZlcnNpb24pO1xuXHRcdHZlcnNpb25Qcm92aWRlci5zZXRWZXJzaW9uKFwid29ya3NwYWNlQ2xpZW50XCIsIHdvcmtzcGFjZU1ldGFJbmZvLmNsaWVudEFQSVZlcnNpb24pO1xuXHRcdHZlcnNpb25Qcm92aWRlci5zZXRWZXJzaW9uKFwid29ya3NwYWNlXCIsIHdvcmtzcGFjZU1ldGFJbmZvLndvcmtzcGFjZVZlcnNpb24pO1xuXHR9XG5cblx0aWYgKGJvb3RzdHJhcE9wdGlvbnMubm90aWZpY2F0aW9ucykge1xuXHRcdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJOb3RpZmljYXRpb25zXCIpO1xuXG5cdFx0bm90aWZpY2F0aW9uTWV0YUluZm8gPSBhd2FpdCBub3RpZmljYXRpb25zQ29tcG9uZW50LnJlZ2lzdGVyKGN1c3RvbVNldHRpbmdzLm5vdGlmaWNhdGlvblByb3ZpZGVyKTtcblx0XHRyZWdpc3Rlck5vdGlmaWNhdGlvblN1cHBvcnRlZEFjdGlvbnMoKTtcblx0fVxuXG5cdGlmICghaXNFbXB0eShub3RpZmljYXRpb25NZXRhSW5mbykpIHtcblx0XHR2ZXJzaW9uUHJvdmlkZXIuc2V0VmVyc2lvbihcIm5vdGlmaWNhdGlvbkNlbnRlclwiLCBub3RpZmljYXRpb25NZXRhSW5mby53b3Jrc3BhY2VWZXJzaW9uKTtcblx0fVxuXG5cdGNvbnN0IHZlcnNpb25TdGF0dXMgPSBhd2FpdCB2ZXJzaW9uUHJvdmlkZXIuZ2V0VmVyc2lvblN0YXR1cygpO1xuXHRjb25zdCB2ZXJzaW9uSW5mbyA9IGF3YWl0IHZlcnNpb25Qcm92aWRlci5nZXRWZXJzaW9uSW5mbygpO1xuXG5cdGxvZ2dlci5pbmZvKFwiTG9hZGVkIHdpdGggdGhlIGZvbGxvd2luZyB2ZXJzaW9ucy5cIiwgdmVyc2lvbkluZm8pO1xuXHRpZiAoYW5hbHl0aWNzUHJvdmlkZXIuaXNFbmFibGVkKCkpIHtcblx0XHRsb2dnZXIuaW5mbyhcIkFuYWx5dGljcyBQcm92aWRlciBlbmFibGVkLiBDYXB0dXJpbmcgdmVyc2lvbmluZyBpbmZvcm1hdGlvbi5cIik7XG5cdFx0Y29uc3QgYW5hbHl0aWNzRXZlbnQ6IFBsYXRmb3JtQW5hbHl0aWNzRXZlbnQgPSB7XG5cdFx0XHRzb3VyY2U6IFwiV29ya3NwYWNlUGxhdGZvcm1cIixcblx0XHRcdHR5cGU6IFwidmVyc2lvblwiLFxuXHRcdFx0dGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuXHRcdFx0ZGF0YTogdmVyc2lvbkluZm8sXG5cdFx0XHRhY3Rpb246IFwibG9hZFwiXG5cdFx0fTtcblx0XHRhd2FpdCBhbmFseXRpY3NQcm92aWRlci5oYW5kbGVBbmFseXRpY3MoW2FuYWx5dGljc0V2ZW50XSk7XG5cdH1cblxuXHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiVmVyc2lvbnNcIik7XG5cblx0bG9nZ2VyLmluZm8oXCJDaGVja2luZyB0byBzZWUgaWYgdmVyc2lvbiBtYW5hZ2VtZW50IGlzIHJlcXVpcmVkLlwiKTtcblx0aWYgKGF3YWl0IHZlcnNpb25Qcm92aWRlci5tYW5hZ2VWZXJzaW9uU3RhdHVzKHZlcnNpb25TdGF0dXMpKSB7XG5cdFx0Ly8gdmVyc2lvbiBzdGF0dXMgaGFkIHRvIGJlIG1hbmFnZWQgc28gaXQgY291bGRuJ3QganVzdCBjb250aW51ZS4gU3RvcCBpbml0aWFsaXphdGlvbi5cblx0XHRhd2FpdCBkZXJlZ2lzdGVyKCk7XG5cdFx0bG9nZ2VyLndhcm4oXCJQbGF0Zm9ybSBib290c3RyYXBwaW5nIHN0b3BwZWQgYXMgdGhlIGN1cnJlbnQgdmVyc2lvbmluZyByZXF1aXJlZCBzdG9wcGluZy5cIik7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0bG9nZ2VyLmluZm8oXCJDaGVja2luZyB0byBzZWUgaWYgdmVyc2lvbiBtb25pdG9yaW5nIGlzIHJlcXVpcmVkLlwiKTtcblx0YXdhaXQgdmVyc2lvblByb3ZpZGVyLk1vbml0b3JWZXJzaW9uU3RhdHVzKCk7XG5cblx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci51cGRhdGVQcm9ncmVzcyhcIkxvdyBDb2RlIEludGVncmF0aW9uc1wiKTtcblxuXHQvLyByZWdpc3RlciBhbnkgaW5zdGFudGlhdGVkIGxvdyBjb2RlIGludGVncmF0aW9ucyB0aGF0IHJlcXVpcmUgcmVnaXN0ZXJpbmdcblx0YXdhaXQgbG93Q29kZUludGVncmF0aW9uUHJvdmlkZXIuaW5pdGlhbGl6ZVdvcmtmbG93cygpO1xuXHRpZiAobG93Q29kZUludGVncmF0aW9uUHJvdmlkZXIuaGFzUmVnaXN0ZXJlZEludGVncmF0aW9ucygpICYmICFyZWdpc3RlcmVkQ29tcG9uZW50cy5pbmNsdWRlcyhcImhvbWVcIikpIHtcblx0XHRyZWdpc3RlcmVkQ29tcG9uZW50cy5wdXNoKFwiaG9tZVwiKTtcblx0XHRyZWdpc3RlckhvbWVTdXBwb3J0ZWRBY3Rpb25zKCk7XG5cdH1cblxuXHRsb2dnZXIuaW5mbyhcIlZhbGlkYXRpbmcgYXV0byBzaG93IGxpc3Q6XCIsIGJvb3RzdHJhcE9wdGlvbnMuYXV0b1Nob3cpO1xuXHQvLyBSZW1vdmUgYW55IGVudHJpZXMgZnJvbSBhdXRvU2hvdyB0aGF0IGhhdmUgbm90IGJlZW4gcmVnaXN0ZXJlZFxuXHRib290c3RyYXBPcHRpb25zLmF1dG9TaG93ID0gYm9vdHN0cmFwT3B0aW9ucy5hdXRvU2hvdy5maWx0ZXIoXG5cdFx0KGNvbXBvbmVudCkgPT4gcmVnaXN0ZXJlZENvbXBvbmVudHMuaW5jbHVkZXMoY29tcG9uZW50KSB8fCBjb21wb25lbnQgPT09IFwibm9uZVwiXG5cdCk7XG5cdGxvZ2dlci5pbmZvKFwiVmFsaWRhdGVkIGF1dG8gc2hvdyBsaXN0OlwiLCBib290c3RyYXBPcHRpb25zLmF1dG9TaG93KTtcblxuXHQvLyBJZiB0aGUgYXV0b1Nob3cgb3B0aW9ucyBpcyBub3QgZW1wdHksIGRlZmF1bHQgdG8gdGhlIGZpcnN0IHJlZ2lzdGVyZWQgY29tcG9uZW50LlxuXHRpZiAoYm9vdHN0cmFwT3B0aW9ucy5hdXRvU2hvdy5sZW5ndGggPT09IDAgJiYgcmVnaXN0ZXJlZENvbXBvbmVudHMubGVuZ3RoID4gMCkge1xuXHRcdGxvZ2dlci5pbmZvKFxuXHRcdFx0YE5vIGF1dG8gc2hvdyBvcHRpb25zIHNwZWNpZmllZCBidXQgYXQgbGVhc3Qgb25lIFdvcmtzcGFjZSBDb21wb25lbnQgaXMgcmVnaXN0ZXJlZC4gU2hvd2luZyB0aGUgZmlyc3QgcmVnaXN0ZXJlZCBjb21wb25lbnQ6ICR7cmVnaXN0ZXJlZENvbXBvbmVudHNbMF19YFxuXHRcdCk7XG5cdFx0Ym9vdHN0cmFwT3B0aW9ucy5hdXRvU2hvdyA9IFtyZWdpc3RlcmVkQ29tcG9uZW50c1swXV07XG5cdH1cblxuXHRmb3IgKGNvbnN0IGF1dG9TaG93IG9mIGJvb3RzdHJhcE9wdGlvbnMuYXV0b1Nob3cpIHtcblx0XHRpZiAoYXV0b1Nob3cgPT09IFwiaG9tZVwiKSB7XG5cdFx0XHRhd2FpdCBob21lQ29tcG9uZW50LnNob3coKTtcblx0XHR9IGVsc2UgaWYgKGF1dG9TaG93ID09PSBcInN0b3JlXCIpIHtcblx0XHRcdGF3YWl0IHN0b3JlQ29tcG9uZW50LnNob3coKTtcblx0XHR9IGVsc2UgaWYgKGF1dG9TaG93ID09PSBcImRvY2tcIikge1xuXHRcdFx0YXdhaXQgZG9ja0NvbXBvbmVudC5zaG93KCk7XG5cdFx0fVxuXHR9XG5cblx0aWYgKCFpc0VtcHR5KGN1c3RvbVNldHRpbmdzPy50cmF5UHJvdmlkZXIpICYmIGN1c3RvbVNldHRpbmdzLnRyYXlQcm92aWRlci5lbmFibGVkKSB7XG5cdFx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci51cGRhdGVQcm9ncmVzcyhcIlRyYXlcIik7XG5cdFx0YXdhaXQgdHJheVByb3ZpZGVyLmluaXQoY3VzdG9tU2V0dGluZ3M/LnRyYXlQcm92aWRlcik7XG5cdH1cblxuXHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cblx0aWYgKGlzQXV0aGVudGljYXRpb25FbmFibGVkKCkpIHtcblx0XHRsb2dnZXIuaW5mbyhcIlNldHRpbmcgdXAgbGlzdGVuZXJzIGZvciBhdXRoZW50aWNhdGlvbiBldmVudHNcIik7XG5cdFx0Ly8gcGxhdGZvcm0gaXMgaW5zdGFudGlhdGVkIGFuZCBhdXRoZW50aWNhdGlvbiBpZiByZXF1aXJlZCBpcyBnaXZlbi4gV2F0Y2ggZm9yIHNlc3Npb25cblx0XHQvLyBleHBpcnlcblx0XHRhdXRoUHJvdmlkZXIuc3Vic2NyaWJlKFwibG9nZ2VkLWluXCIsIGFzeW5jICh1c2VyPzogdW5rbm93bikgPT4ge1xuXHRcdFx0Ly8gd2hhdCBiZWhhdmlvciBkbyB5b3Ugd2FudCB0byBkbyB3aGVuIHNvbWVvbmUgbG9ncyBpblxuXHRcdFx0Ly8gcG90ZW50aWFsbHkgdGhlIGludmVyc2UgaWYgeW91IGhpZCBzb21ldGhpbmcgb24gc2Vzc2lvbiBleHBpcmF0aW9uXG5cdFx0XHRhd2FpdCBmaXJlTGlmZWN5Y2xlRXZlbnQocGxhdGZvcm0sIFwiYXV0aC1sb2dnZWQtaW5cIiwge1xuXHRcdFx0XHR1c2VyXG5cdFx0XHR9IGFzIExvZ2dlZEluTGlmZWN5Y2xlUGF5bG9hZCk7XG5cdFx0fSk7XG5cblx0XHRhdXRoUHJvdmlkZXIuc3Vic2NyaWJlKFwic2Vzc2lvbi1leHBpcmVkXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdC8vIHNlc3Npb24gZXhwaXJlZC4gV2hhdCBkbyB5b3Ugd2FudCB0byBkbyB3aXRoIHRoZSBwbGF0Zm9ybSB3aGVuIHRoZSB1c2VyIG5lZWRzIHRvIGxvZyBiYWNrIGluLlxuXHRcdFx0YXdhaXQgZmlyZUxpZmVjeWNsZUV2ZW50KHBsYXRmb3JtLCBcImF1dGgtc2Vzc2lvbi1leHBpcmVkXCIpO1xuXHRcdH0pO1xuXG5cdFx0YXV0aFByb3ZpZGVyLnN1YnNjcmliZShcImJlZm9yZS1sb2dnZWQtb3V0XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdC8vIHdoYXQgYmVoYXZpb3IgZG8geW91IHdhbnQgdG8gZG8gd2hlbiBzb21lb25lIGxvZ3MgaW5cblx0XHRcdC8vIGRvIHlvdSB3YW50IHRvIHNhdmUgYW55dGhpbmcgYmVmb3JlIHRoZXkgbG9nIHRoZW1zZWx2ZXMgb3V0XG5cdFx0XHRhd2FpdCBmaXJlTGlmZWN5Y2xlRXZlbnQocGxhdGZvcm0sIFwiYXV0aC1iZWZvcmUtbG9nZ2VkLW91dFwiKTtcblx0XHR9KTtcblx0fVxuXG5cdGxvZ2dlci5pbmZvKFwiU2V0dGluZyB1cCBkaXNwb3NlIGhhbmRsZXIuXCIpO1xuXHRjb25zdCBwcm92aWRlcldpbmRvdyA9IGZpbi5XaW5kb3cuZ2V0Q3VycmVudFN5bmMoKTtcblx0YXdhaXQgcHJvdmlkZXJXaW5kb3cub25jZShcImNsb3NlLXJlcXVlc3RlZFwiLCBhc3luYyAoZXZlbnQpID0+IHtcblx0XHRhd2FpdCBkZXJlZ2lzdGVyKCk7XG5cdFx0YXdhaXQgZmluLlBsYXRmb3JtLmdldEN1cnJlbnRTeW5jKCkucXVpdCgpO1xuXHR9KTtcblxuXHQvLyBPbmNlIHRoZSBwbGF0Zm9ybSBpcyBzdGFydGVkIGFuZCBldmVyeXRoaW5nIGlzIGJvb3RzdHJhcHBlZCBpbml0aWFsaXplIHRoZSBpbml0IG9wdGlvbnNcblx0Ly8gbGlzdGVuZXIgc28gdGhhdCBpdCBpcyByZWFkeSB0byBoYW5kbGUgaW5pdGlhbCBwYXJhbXMgb3Igc3Vic2VxdWVudCByZXF1ZXN0cy5cblx0YXdhaXQgcmVnaXN0ZXJJbml0T3B0aW9uc0xpc3RlbmVyKGN1c3RvbVNldHRpbmdzPy5pbml0T3B0aW9uc1Byb3ZpZGVyLCBtb2R1bGVIZWxwZXJzLCBcImFmdGVyLWJvb3RzdHJhcFwiKTtcblxuXHQvLyBMZXQgYW55IG90aGVyIG1vZHVsZXMgcGFydGljaXBhdGUgaW4gdGhlIGxpZmVjeWNsZVxuXHRhd2FpdCBmaXJlTGlmZWN5Y2xlRXZlbnQocGxhdGZvcm0sIFwiYWZ0ZXItYm9vdHN0cmFwXCIpO1xuXG5cdC8vIHN0YXJ0IHVwIGFueSBhcHBzIHRoYXQgaGF2ZSByZXF1ZXN0ZWQgdG8gYmUgc3RhcnRlZCB1cCBhdCB0aGUgZW5kIG9mIHRoZSBib290c3RyYXBwaW5nIHByb2Nlc3Ncblx0aWYgKGJvb3RzdHJhcE9wdGlvbnMuYXV0b3N0YXJ0QXBwcykge1xuXHRcdGF3YWl0IGF1dG9TdGFydEFwcHMoKTtcblx0fVxuXG5cdGxvZ2dlci5pbmZvKFwiRmluaXNoZWQgdGhlIGJvb3RzdHJhcHBpbmcgcHJvY2Vzcy5cIik7XG5cdHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFN0YXJ0IGFueSBhcHBzIHRoYXQgYXJlIGxpc3RlZCBpbiB0aGUgYXV0byBzdGFydCBvcHRpb25zIGZvciB0aGUgYm9vdHN0cmFwIHByb2Nlc3MuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGF1dG9TdGFydEFwcHMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IGFwcHMgPSBhd2FpdCBnZXRBcHBzKHsgYXV0b3N0YXJ0OiB0cnVlIH0pO1xuXHRpZiAoQXJyYXkuaXNBcnJheShhcHBzKSAmJiBhcHBzLmxlbmd0aCA+IDApIHtcblx0XHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiQXV0byBTdGFydCBBcHBzXCIpO1xuXHRcdGxvZ2dlci5pbmZvKFxuXHRcdFx0YEFwcHMgaGF2ZSBiZWVuIG1hcmtlZCB0aGF0IHRoZXkgc2hvdWxkIGF1dG9zdGFydCBhZnRlciB0aGUgYm9vdHN0cmFwcGluZyBwcm9jZXNzIGFuZCB0aGUgcGxhdGZvcm0gaGFzIG5vdCBzZXQgYXV0b3N0YXJ0QXBwcyB0byBmYWxzZSBpbiB0aGUgYm9vdHN0cmFwcGluZyBvcHRpb25zLiAke2FwcHMubGVuZ3RofSBhcHAocykgd2lsbCBiZSBsYXVuY2hlZC5gXG5cdFx0KTtcblx0XHRmb3IgKGNvbnN0IGFwcCBvZiBhcHBzKSB7XG5cdFx0XHRzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHQvLyB3ZSBzaG91bGQgbm90IHdhaXQgZm9yIGV2ZXJ5IHNpbmdsZSBhcHAgdG8gbGF1bmNoIGluIGNhc2UgdGhlcmUgYXJlIHNsb3cgbGF1bmNoaW5nIGFwcHMgb3IgZGVsYXlzXG5cdFx0XHRcdFx0Ly8gdGhlIGdvYWwgaXMgdG8gbGF1bmNoIGFsbCBvZiB0aGUgYXBwcyB0aGF0IGhhdmUgcmVxdWVzdGVkIGl0XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oYExhdW5jaGluZyBhcHA6ICR7YXBwLmFwcElkfWApO1xuXHRcdFx0XHRcdGNvbnN0IGFwcElkZW50aWZpZXIgPSBhd2FpdCBsYXVuY2goYXBwKTtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhgQXBwOiAke2FwcC5hcHBJZH0gbGF1bmNoZWQgd2l0aCB0aGUgZm9sbG93aW5nIGlkZW50aWZpZXJgLCBhcHBJZGVudGlmaWVyKTtcblx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0XHRsb2dnZXIuZXJyb3IoYEVycm9yIGxhdW5jaGluZyBhcHA6ICR7YXBwLmFwcElkfS5gLCBlcnJvcik7XG5cdFx0XHRcdH1cblx0XHRcdH0sIDEwMDApO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIERlcmVnaXN0ZXIgYW55IG9mIHRoZSBjb21wb25lbnRzIHJlZ2lzdGVyZWQgb24gc3RhcnR1cC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGVyZWdpc3RlcigpOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKCFkZXJlZ2lzdGVyZWQpIHtcblx0XHRsb2dnZXIuaW5mbyhcIkRlcmVnaXN0ZXIgaGFzIGJlZW4gY2FsbGVkLlwiKTtcblx0XHRhd2FpdCBkZXJlZ2lzdGVySW50ZWdyYXRpb24oKTtcblx0XHRpZiAoYm9vdHN0cmFwT3B0aW9ucz8uZG9jaykge1xuXHRcdFx0YXdhaXQgZG9ja0NvbXBvbmVudC5kZXJlZ2lzdGVyKCk7XG5cdFx0fVxuXHRcdGlmIChib290c3RyYXBPcHRpb25zPy5zdG9yZSkge1xuXHRcdFx0YXdhaXQgc3RvcmVDb21wb25lbnQuZGVyZWdpc3RlcigpO1xuXHRcdH1cblx0XHRpZiAoYm9vdHN0cmFwT3B0aW9ucz8uaG9tZSkge1xuXHRcdFx0YXdhaXQgaG9tZUNvbXBvbmVudC5kZXJlZ2lzdGVyKCk7XG5cdFx0fVxuXHRcdGlmIChib290c3RyYXBPcHRpb25zPy5ub3RpZmljYXRpb25zKSB7XG5cdFx0XHRhd2FpdCBub3RpZmljYXRpb25zQ29tcG9uZW50LmRlcmVnaXN0ZXIoKTtcblx0XHR9XG5cdFx0bG9nZ2VyLmluZm8oXCJGaW5pc2hlZCBkZXJlZ2lzdGVyLlwiKTtcblx0XHRkZXJlZ2lzdGVyZWQgPSB0cnVlO1xuXHR9XG59XG5cbi8qKlxuICogVXNlZCB0byByZWdpc3RlciBob21lIHJlbGF0ZWQgYWN0aW9ucy5cbiAqL1xuZnVuY3Rpb24gcmVnaXN0ZXJIb21lU3VwcG9ydGVkQWN0aW9ucygpOiB2b2lkIHtcblx0cmVnaXN0ZXJBY3Rpb24oXCJzaG93LWhvbWVcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdGF3YWl0IGhvbWVDb21wb25lbnQuc2hvdygpO1xuXHR9KTtcblx0cmVnaXN0ZXJBY3Rpb24oXCJoaWRlLWhvbWVcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdGF3YWl0IGhvbWVDb21wb25lbnQuaGlkZSgpO1xuXHR9KTtcbn1cblxuLyoqXG4gKiBVc2VkIHRvIHJlZ2lzdGVyIHN0b3JlIHJlbGF0ZWQgYWN0aW9ucy5cbiAqL1xuZnVuY3Rpb24gcmVnaXN0ZXJTdG9yZVN1cHBvcnRlZEFjdGlvbnMoKTogdm9pZCB7XG5cdHJlZ2lzdGVyQWN0aW9uKFwic2hvdy1zdG9yZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0YXdhaXQgc3RvcmVDb21wb25lbnQuc2hvdygpO1xuXHR9KTtcblx0cmVnaXN0ZXJBY3Rpb24oXCJoaWRlLXN0b3JlXCIsIGFzeW5jICgpID0+IHtcblx0XHRhd2FpdCBzdG9yZUNvbXBvbmVudC5oaWRlKCk7XG5cdH0pO1xufVxuXG4vKipcbiAqIFVzZWQgdG8gcmVnaXN0ZXIgZG9jayByZWxhdGVkIGFjdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIHJlZ2lzdGVyRG9ja1N1cHBvcnRlZEFjdGlvbnMoKTogdm9pZCB7XG5cdHJlZ2lzdGVyQWN0aW9uKFwic2hvdy1kb2NrXCIsIGFzeW5jICgpID0+IHtcblx0XHRhd2FpdCBkb2NrQ29tcG9uZW50LnNob3coKTtcblx0fSk7XG5cdHJlZ2lzdGVyQWN0aW9uKFwibWluaW1pemUtZG9ja1wiLCBhc3luYyAoKSA9PiB7XG5cdFx0YXdhaXQgZG9ja0NvbXBvbmVudC5taW5pbWl6ZSgpO1xuXHR9KTtcbn1cblxuLyoqXG4gKiBVc2VkIHRvIHJlZ2lzdGVyIG5vdGlmaWNhdGlvbiByZWxhdGVkIGFjdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIHJlZ2lzdGVyTm90aWZpY2F0aW9uU3VwcG9ydGVkQWN0aW9ucygpOiB2b2lkIHtcblx0cmVnaXN0ZXJBY3Rpb24oXCJzaG93LW5vdGlmaWNhdGlvbnNcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdGF3YWl0IG5vdGlmaWNhdGlvbnNDb21wb25lbnQuc2hvdygpO1xuXHR9KTtcblx0cmVnaXN0ZXJBY3Rpb24oXCJoaWRlLW5vdGlmaWNhdGlvbnNcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdGF3YWl0IG5vdGlmaWNhdGlvbnNDb21wb25lbnQuaGlkZSgpO1xuXHR9KTtcbn1cbiIsImltcG9ydCB0eXBlIE9wZW5GaW4gZnJvbSBcIkBvcGVuZmluL2NvcmVcIjtcbmltcG9ydCB0eXBlIHsgQ3VzdG9tQnV0dG9uQ29uZmlnIH0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZVwiO1xuaW1wb3J0IHtcblx0QnJvd3NlckJ1dHRvblR5cGUsXG5cdGdldEN1cnJlbnRTeW5jLFxuXHR0eXBlIEJyb3dzZXJDcmVhdGVXaW5kb3dSZXF1ZXN0LFxuXHR0eXBlIEJyb3dzZXJXaW5kb3dNb2R1bGUsXG5cdHR5cGUgQ3VzdG9tQnJvd3NlckJ1dHRvbkNvbmZpZyxcblx0dHlwZSBUb29sYmFyQnV0dG9uXG59IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB7IGNoZWNrQ29uZGl0aW9ucyB9IGZyb20gXCIuL2NvbmRpdGlvbnNcIjtcbmltcG9ydCB7IHN1YnNjcmliZUxpZmVjeWNsZUV2ZW50IH0gZnJvbSBcIi4vbGlmZWN5Y2xlXCI7XG5pbXBvcnQgeyBnZXRTZXR0aW5ncyB9IGZyb20gXCIuL3NldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IFdvcmtzcGFjZVBsYXRmb3JtVG9vbGJhckJ1dHRvbiB9IGZyb20gXCIuL3NoYXBlcy9icm93c2VyLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDb2xvclNjaGVtZU1vZGUgfSBmcm9tIFwiLi9zaGFwZXMvdGhlbWUtc2hhcGVzXCI7XG5pbXBvcnQgeyBnZXRDdXJyZW50Q29sb3JTY2hlbWVNb2RlLCBnZXRDdXJyZW50SWNvbkZvbGRlciB9IGZyb20gXCIuL3RoZW1lc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSwgb2JqZWN0Q2xvbmUgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5sZXQgY29uZmlnVG9vbGJhckJ1dHRvbnM6IFdvcmtzcGFjZVBsYXRmb3JtVG9vbGJhckJ1dHRvbltdIHwgdW5kZWZpbmVkO1xubGV0IGNvbmZpZ0J1dHRvbnNSZXRyaWV2ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuLyoqXG4gKiBHZXQgdGhlIHRvb2xiYXIgYnV0dG9ucyB0byBzaG93IG9uIGEgYnJvd3NlciB3aW5kb3cuXG4gKiBAcGFyYW0gd2luZG93Q3JlYXRlT3B0aW9ucyBUaGUgb3B0aW9ucyB0aGUgd2luZG93IHdpbGwgYmUgY3JlYXRlZCB3aXRoLlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgYnV0dG9ucyB0byBzaG93LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VG9vbGJhckJ1dHRvbnMoXG5cdHdpbmRvd0NyZWF0ZU9wdGlvbnM/OiBPcGVuRmluLlBsYXRmb3JtV2luZG93Q3JlYXRpb25PcHRpb25zXG4pOiBQcm9taXNlPFRvb2xiYXJCdXR0b25bXSB8IHVuZGVmaW5lZD4ge1xuXHRsZXQgdG9vbGJhckJ1dHRvbnM6IFRvb2xiYXJCdXR0b25bXSB8IHVuZGVmaW5lZDtcblxuXHRjb25zdCBhbGxUb29sYmFyQnV0dG9ucyA9IGF3YWl0IGdldENvbmZpZ1Rvb2xiYXJCdXR0b25zKCk7XG5cblx0aWYgKCFpc0VtcHR5KGFsbFRvb2xiYXJCdXR0b25zKSkge1xuXHRcdGNvbnN0IGljb25Gb2xkZXIgPSBhd2FpdCBnZXRDdXJyZW50SWNvbkZvbGRlcigpO1xuXHRcdGNvbnN0IGNvbG9yU2NoZW1lTW9kZSA9IGF3YWl0IGdldEN1cnJlbnRDb2xvclNjaGVtZU1vZGUoKTtcblxuXHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblxuXHRcdHRvb2xiYXJCdXR0b25zID0gW107XG5cdFx0Zm9yIChjb25zdCBlbnRyeSBvZiBhbGxUb29sYmFyQnV0dG9ucykge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRlbnRyeS5pbmNsdWRlICYmXG5cdFx0XHRcdChhd2FpdCBjaGVja0NvbmRpdGlvbnMocGxhdGZvcm0sIGVudHJ5LmNvbmRpdGlvbnMsIHtcblx0XHRcdFx0XHRjYWxsZXJUeXBlOiBcImJyb3dzZXJcIixcblx0XHRcdFx0XHRjdXN0b21EYXRhOiB3aW5kb3dDcmVhdGVPcHRpb25zXG5cdFx0XHRcdH0pKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRvb2xiYXJCdXR0b25zLnB1c2godGhlbWVCdXR0b24oZW50cnkuYnV0dG9uLCBpY29uRm9sZGVyLCBjb2xvclNjaGVtZU1vZGUpKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdG9vbGJhckJ1dHRvbnM7XG59XG5cbi8qKlxuICogVXBkYXRlIHRoZSB0b29sYmFyIGJ1dHRvbnMsIHJlcGxhY2luZyBvbmUgb2YgdGhlIGl0ZW1zLlxuICogQHBhcmFtIGJ1dHRvbnMgVGhlIGN1cnJlbnQgdG9vbGJhciBidXR0b25zLlxuICogQHBhcmFtIGJ1dHRvbklkIFRoZSBidXR0b24gaWQgdG8gcmVwbGFjZS5cbiAqIEBwYXJhbSByZXBsYWNlbWVudEJ1dHRvbklkIFRoZSBpZCBvZiB0aGUgYnV0dG9uIHRvIHJlcGxhY2UgaXQgd2l0aC5cbiAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIGJ1dHRvbnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVUb29sYmFyQnV0dG9ucyhcblx0YnV0dG9uczogVG9vbGJhckJ1dHRvbltdLFxuXHRidXR0b25JZDogc3RyaW5nLFxuXHRyZXBsYWNlbWVudEJ1dHRvbklkOiBzdHJpbmdcbik6IFByb21pc2U8VG9vbGJhckJ1dHRvbltdPiB7XG5cdGNvbnN0IGluZGV4ID0gYnV0dG9ucy5maW5kSW5kZXgoKGVudHJ5KSA9PiB7XG5cdFx0aWYgKFxuXHRcdFx0ZW50cnkudHlwZSA9PT0gQnJvd3NlckJ1dHRvblR5cGUuQ3VzdG9tICYmXG5cdFx0XHQoZW50cnkgYXMgQ3VzdG9tQnJvd3NlckJ1dHRvbkNvbmZpZykuYWN0aW9uLmN1c3RvbURhdGEuc291cmNlSWQgPT09IGJ1dHRvbklkXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9KTtcblxuXHRpZiAoaW5kZXggIT09IC0xKSB7XG5cdFx0Y29uc3QgYXZhaWxhYmxlVG9vbGJhckJ1dHRvbnMgPSBhd2FpdCBnZXRDb25maWdUb29sYmFyQnV0dG9ucygpO1xuXHRcdGlmICghaXNFbXB0eShhdmFpbGFibGVUb29sYmFyQnV0dG9ucykpIHtcblx0XHRcdGNvbnN0IHJlcGxhY2VtZW50ID0gYXZhaWxhYmxlVG9vbGJhckJ1dHRvbnMuZmluZCgoZW50cnkpID0+IHtcblx0XHRcdFx0aWYgKGVudHJ5LmJ1dHRvbi50eXBlID09PSBCcm93c2VyQnV0dG9uVHlwZS5DdXN0b20pIHtcblx0XHRcdFx0XHRjb25zdCBjdXN0b21CdXR0b24gPSBlbnRyeS5idXR0b24gYXMgQ3VzdG9tQnJvd3NlckJ1dHRvbkNvbmZpZztcblx0XHRcdFx0XHRyZXR1cm4gY3VzdG9tQnV0dG9uPy5hY3Rpb24/LmN1c3RvbURhdGE/LnNvdXJjZUlkID09PSByZXBsYWNlbWVudEJ1dHRvbklkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0pO1xuXHRcdFx0aWYgKHJlcGxhY2VtZW50KSB7XG5cdFx0XHRcdGNvbnN0IGljb25Gb2xkZXIgPSBhd2FpdCBnZXRDdXJyZW50SWNvbkZvbGRlcigpO1xuXHRcdFx0XHRjb25zdCBjb2xvclNjaGVtZU1vZGUgPSBhd2FpdCBnZXRDdXJyZW50Q29sb3JTY2hlbWVNb2RlKCk7XG5cdFx0XHRcdGJ1dHRvbnNbaW5kZXhdID0gdGhlbWVCdXR0b24ocmVwbGFjZW1lbnQuYnV0dG9uLCBpY29uRm9sZGVyLCBjb2xvclNjaGVtZU1vZGUpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGJ1dHRvbnM7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGJ1dHRvbnM7XG59XG5cbi8qKlxuICogVXBkYXRlIGFsbCB0aGUgdG9vbGJhciBidXR0b25zIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbG9yIHNjaGVtZS5cbiAqIEBwYXJhbSBicm93c2VyV2luZG93IFRoZSBicm93c2VyIHdpbmRvdyB0byB1cGRhdGUgdGhlIGJ1dHRvbnMgZm9yLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlQnJvd3NlcldpbmRvd0J1dHRvbnNDb2xvclNjaGVtZShcblx0YnJvd3NlcldpbmRvdzogQnJvd3NlcldpbmRvd01vZHVsZVxuKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChjb25maWdUb29sYmFyQnV0dG9ucykge1xuXHRcdGNvbnN0IG9wdGlvbnMgPSBhd2FpdCBicm93c2VyV2luZG93Lm9wZW5maW5XaW5kb3cuZ2V0T3B0aW9ucygpO1xuXHRcdGNvbnN0IGN1cnJlbnRUb29sYmFyQnV0dG9ucyA9IChvcHRpb25zIGFzIEJyb3dzZXJDcmVhdGVXaW5kb3dSZXF1ZXN0KS53b3Jrc3BhY2VQbGF0Zm9ybS50b29sYmFyT3B0aW9uc1xuXHRcdFx0Py5idXR0b25zO1xuXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkoY3VycmVudFRvb2xiYXJCdXR0b25zKSkge1xuXHRcdFx0Y29uc3QgdXBkYXRlZEJ1dHRvbnMgPSBbXTtcblx0XHRcdGNvbnN0IGljb25Gb2xkZXIgPSBhd2FpdCBnZXRDdXJyZW50SWNvbkZvbGRlcigpO1xuXHRcdFx0Y29uc3QgY29sb3JTY2hlbWVNb2RlID0gYXdhaXQgZ2V0Q3VycmVudENvbG9yU2NoZW1lTW9kZSgpO1xuXG5cdFx0XHRmb3IgKGNvbnN0IGJ1dHRvbiBvZiBjdXJyZW50VG9vbGJhckJ1dHRvbnMpIHtcblx0XHRcdFx0aWYgKGJ1dHRvbi50eXBlID09PSBCcm93c2VyQnV0dG9uVHlwZS5DdXN0b20pIHtcblx0XHRcdFx0XHRjb25zdCBidXR0b25JZCA9IChidXR0b24gYXMgQ3VzdG9tQnJvd3NlckJ1dHRvbkNvbmZpZykuYWN0aW9uPy5pZDtcblx0XHRcdFx0XHRpZiAoYnV0dG9uSWQpIHtcblx0XHRcdFx0XHRcdC8vIEZpbmQgdGhlIG9yaWdpbmFsIGJ1dHRvbiBmcm9tIGNvbmZpZyBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlIG9yaWdpbmFsXG5cdFx0XHRcdFx0XHQvLyBpY29uVXJsIHdpdGggYW55IHNjaGVtYSBwbGFjZWhvbGRlcnNcblx0XHRcdFx0XHRcdGNvbnN0IG9yaWdpbmFsQnV0dG9uID0gY29uZmlnVG9vbGJhckJ1dHRvbnMuZmluZChcblx0XHRcdFx0XHRcdFx0KGIpID0+IChiLmJ1dHRvbiBhcyBDdXN0b21Ccm93c2VyQnV0dG9uQ29uZmlnKS5hY3Rpb24/LmlkID09PSBidXR0b25JZFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGNvbnN0IGJ0biA9IG9yaWdpbmFsQnV0dG9uPy5idXR0b24gYXMgQ3VzdG9tQnV0dG9uQ29uZmlnO1xuXHRcdFx0XHRcdFx0aWYgKGJ0bj8uaWNvblVybCkge1xuXHRcdFx0XHRcdFx0XHRidXR0b24uaWNvblVybCA9IHRoZW1lVXJsKGJ0bi5pY29uVXJsLCBpY29uRm9sZGVyLCBjb2xvclNjaGVtZU1vZGUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHR1cGRhdGVkQnV0dG9ucy5wdXNoKGJ1dHRvbik7XG5cdFx0XHR9XG5cblx0XHRcdGF3YWl0IGJyb3dzZXJXaW5kb3cucmVwbGFjZVRvb2xiYXJPcHRpb25zKHsgYnV0dG9uczogdXBkYXRlZEJ1dHRvbnMgfSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogR2V0IHRoZSBsaXN0IG9mIGJ1dHRvbnMgYXMgdGhleSBhcmUgZGVmaW5lZCBpbiB0aGUgY29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gYnV0dG9ucy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0Q29uZmlnVG9vbGJhckJ1dHRvbnMoKTogUHJvbWlzZTxXb3Jrc3BhY2VQbGF0Zm9ybVRvb2xiYXJCdXR0b25bXSB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoY29uZmlnQnV0dG9uc1JldHJpZXZlZCkge1xuXHRcdHJldHVybiBjb25maWdUb29sYmFyQnV0dG9ucztcblx0fVxuXG5cdGNvbnN0IHNldHRpbmdzID0gYXdhaXQgZ2V0U2V0dGluZ3MoKTtcblx0Y29uZmlnVG9vbGJhckJ1dHRvbnMgPSBzZXR0aW5ncz8uYnJvd3NlclByb3ZpZGVyPy50b29sYmFyQnV0dG9ucztcblx0Y29uZmlnQnV0dG9uc1JldHJpZXZlZCA9IHRydWU7XG5cblx0c3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQoXCJ0aGVtZS1jaGFuZ2VkXCIsIGFzeW5jICgpID0+IHtcblx0XHQvLyBVcGRhdGUgYWxsIHRoZSBicm93c2VyIHdpbmRvd3Mgd2l0aCB0aGUgbmV3IGJ1dHRvbnMuXG5cdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdGNvbnN0IGJyb3dzZXJXaW5kb3dzID0gYXdhaXQgcGxhdGZvcm0uQnJvd3Nlci5nZXRBbGxXaW5kb3dzKCk7XG5cdFx0Zm9yIChjb25zdCBicm93c2VyV2luZG93IG9mIGJyb3dzZXJXaW5kb3dzKSB7XG5cdFx0XHRhd2FpdCB1cGRhdGVCcm93c2VyV2luZG93QnV0dG9uc0NvbG9yU2NoZW1lKGJyb3dzZXJXaW5kb3cpO1xuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIGNvbmZpZ1Rvb2xiYXJCdXR0b25zO1xufVxuXG4vKipcbiAqIEFwcGx5IGEgdGhlbWUgdG8gYSBidXR0b24uXG4gKiBAcGFyYW0gYnV0dG9uIFRoZSBidXR0b24gdG8gYXBwbHkgdGhlIHRoZW1lIHRvLlxuICogQHBhcmFtIGljb25Gb2xkZXIgVGhlIGZvbGRlciB3aGVyZSB0aGUgaWNvbnMgYXJlIGxvY2F0ZWQuXG4gKiBAcGFyYW0gY29sb3JTY2hlbWVNb2RlIFRoZSBjb2xvciBzY2hlbWUgZm9yIHRoZSB0aGVtZS5cbiAqIEByZXR1cm5zIFRoZSB0aGVtZWQgYnV0dG9uLlxuICovXG5mdW5jdGlvbiB0aGVtZUJ1dHRvbihcblx0YnV0dG9uOiBUb29sYmFyQnV0dG9uICYgeyBpY29uVXJsPzogc3RyaW5nIH0sXG5cdGljb25Gb2xkZXI6IHN0cmluZyxcblx0Y29sb3JTY2hlbWVNb2RlOiBDb2xvclNjaGVtZU1vZGVcbik6IFRvb2xiYXJCdXR0b24gJiB7IGljb25Vcmw/OiBzdHJpbmcgfSB7XG5cdC8vIFdlIG5lZWQgdG8gZHVwbGljYXRlIHRoZSBidXR0b24sIGFzIHdlIGRvbid0IHdhbnQgdG8gbG9zZVxuXHQvLyBhbnkgcGxhY2Vob2xkZXJzIGluIHRoZSBpY29uVXJsXG5cdGNvbnN0IGJ1dHRvbkNvcHk6IFRvb2xiYXJCdXR0b24gJiB7IGljb25Vcmw/OiBzdHJpbmcgfSA9IG9iamVjdENsb25lKGJ1dHRvbik7XG5cblx0YnV0dG9uQ29weS5pY29uVXJsID0gdGhlbWVVcmwoYnV0dG9uQ29weS5pY29uVXJsLCBpY29uRm9sZGVyLCBjb2xvclNjaGVtZU1vZGUpO1xuXG5cdHJldHVybiBidXR0b25Db3B5O1xufVxuXG4vKipcbiAqIEFwcGx5IGEgdGhlbWUgdG8gYSB1cmwuXG4gKiBAcGFyYW0gdXJsIFRoZSB1cmwgdG8gYXBwbHkgdGhlIHRoZW1lIHRvLlxuICogQHBhcmFtIGljb25Gb2xkZXIgVGhlIGZvbGRlciB3aGVyZSB0aGUgaWNvbnMgYXJlIGxvY2F0ZWQuXG4gKiBAcGFyYW0gY29sb3JTY2hlbWVNb2RlIFRoZSBjb2xvciBzY2hlbWUgZm9yIHRoZSB0aGVtZS5cbiAqIEByZXR1cm5zIFRoZSB0aGVtZWQgdXJsLlxuICovXG5mdW5jdGlvbiB0aGVtZVVybChcblx0dXJsOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdGljb25Gb2xkZXI6IHN0cmluZyxcblx0Y29sb3JTY2hlbWVNb2RlOiBDb2xvclNjaGVtZU1vZGVcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiB1cmwgPyB1cmwucmVwbGFjZSgve3RoZW1lfS9nLCBpY29uRm9sZGVyKS5yZXBsYWNlKC97c2NoZW1lfS9nLCBjb2xvclNjaGVtZU1vZGUpIDogdW5kZWZpbmVkO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBXb3Jrc3BhY2VQbGF0Zm9ybU1vZHVsZSB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZU1vZHVsZXMsIGxvYWRNb2R1bGVzIH0gZnJvbSBcIi4vbW9kdWxlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRDb25kaXRpb25Db250ZXh0VHlwZXMsXG5cdENvbmRpdGlvbk1hcCxcblx0Q29uZGl0aW9ucyxcblx0Q29uZGl0aW9uc1Byb3ZpZGVyT3B0aW9uc1xufSBmcm9tIFwiLi9zaGFwZXMvY29uZGl0aW9ucy1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgTW9kdWxlRGVmaW5pdGlvbiwgTW9kdWxlRW50cnksIE1vZHVsZUhlbHBlcnMgfSBmcm9tIFwiLi9zaGFwZXMvbW9kdWxlLXNoYXBlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIkNvbmRpdGlvblByb3ZpZGVyXCIpO1xuY29uc3QgYWxsQ29uZGl0aW9uczogQ29uZGl0aW9uTWFwID0ge307XG5sZXQgbW9kdWxlczogTW9kdWxlRW50cnk8Q29uZGl0aW9ucywgdW5rbm93biwgdW5rbm93biwgTW9kdWxlRGVmaW5pdGlvbj5bXSA9IFtdO1xuXG4vKipcbiAqIEluaXRpYWxpemUgdGhlIGNvbmRpdGlvbnMgcHJvdmlkZXIuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgY29uZGl0aW9ucyBwcm92aWRlci5cbiAqIEBwYXJhbSBoZWxwZXJzIE1vZHVsZSBoZWxwZXJzIHRvIHBhc3MgdG8gYW55IGxvYWRlZCBtb2R1bGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdChcblx0b3B0aW9uczogQ29uZGl0aW9uc1Byb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCxcblx0aGVscGVyczogTW9kdWxlSGVscGVyc1xuKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChvcHRpb25zKSB7XG5cdFx0bW9kdWxlcyA9IGF3YWl0IGxvYWRNb2R1bGVzPENvbmRpdGlvbnM+KG9wdGlvbnMsIFwiY29uZGl0aW9uc1wiKTtcblx0XHRhd2FpdCBpbml0aWFsaXplTW9kdWxlczxDb25kaXRpb25zPihtb2R1bGVzLCBoZWxwZXJzKTtcblxuXHRcdGxvZ2dlci5pbmZvKFwiR2V0dGluZyBjb25kaXRpb25zLi4uXCIpO1xuXHRcdGZvciAoY29uc3QgY29uZGl0aW9uTW9kdWxlIG9mIG1vZHVsZXMpIHtcblx0XHRcdGNvbnN0IGNvbmRpdGlvbnMgPSBhd2FpdCBjb25kaXRpb25Nb2R1bGUuaW1wbGVtZW50YXRpb24uZ2V0KCk7XG5cdFx0XHRmb3IgKGNvbnN0IGNvbmRpdGlvbiBpbiBjb25kaXRpb25zKSB7XG5cdFx0XHRcdGFsbENvbmRpdGlvbnNbY29uZGl0aW9uXSA9IGNvbmRpdGlvbnNbY29uZGl0aW9uXTtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYEFkZGVkIGNvbmRpdGlvbjogJHtjb25kaXRpb259YCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGxvZ2dlci5pbmZvKFwiRmluaXNoZWQgZ2V0dGluZyBjb25kaXRpb25zLlwiKTtcblx0fVxufVxuXG4vKipcbiAqIE1hbnVhbGx5IHJlZ2lzdGVyIGEgY29uZGl0aW9uLlxuICogQHBhcmFtIGNvbmRpdGlvbk5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvbmRpdGlvbi5cbiAqIEBwYXJhbSBjb25kaXRpb25DaGVja2VyIFRoZSBtZXRob2QgdG8gY2FsbCB0byBjaGVjayB0aGUgY29uZGl0aW9uLlxuICogQHBhcmFtIG92ZXJyaWRlIE92ZXJyaWRlIGFuIGV4aXN0aW5nIGNvbmRpdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQ29uZGl0aW9uKFxuXHRjb25kaXRpb25OYW1lOiBzdHJpbmcsXG5cdGNvbmRpdGlvbkNoZWNrZXI6ICgpID0+IFByb21pc2U8Ym9vbGVhbj4sXG5cdG92ZXJyaWRlOiBib29sZWFuID0gdHJ1ZVxuKTogdm9pZCB7XG5cdGlmICghaXNFbXB0eShhbGxDb25kaXRpb25zW2NvbmRpdGlvbk5hbWVdKSkge1xuXHRcdGlmIChvdmVycmlkZSkge1xuXHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFwiUmVwbGFjaW5nIGV4aXN0aW5nIGNvbmRpdGlvbiBjaGVja2VyIHRoYXQgaGFzIGJlZW4gcmVnaXN0ZXJlZCB3aXRoIHRoaXMgbmFtZTpcIixcblx0XHRcdFx0Y29uZGl0aW9uTmFtZVxuXHRcdFx0KTtcblx0XHRcdGFsbENvbmRpdGlvbnNbY29uZGl0aW9uTmFtZV0gPSBjb25kaXRpb25DaGVja2VyO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XCJOb3QgcmVwbGFjaW5nIGV4aXN0aW5nIGNvbmRpdGlvbiBjaGVja2VyIHRoYXQgaGFzIGJlZW4gcmVnaXN0ZXJlZCB3aXRoIHRoaXMgbmFtZTpcIixcblx0XHRcdFx0Y29uZGl0aW9uTmFtZVxuXHRcdFx0KTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyLmluZm8oXCJSZWdpc3RlcmluZyBjb25kaXRpb25cIiwgY29uZGl0aW9uTmFtZSk7XG5cdFx0YWxsQ29uZGl0aW9uc1tjb25kaXRpb25OYW1lXSA9IGNvbmRpdGlvbkNoZWNrZXI7XG5cdH1cbn1cblxuLyoqXG4gKiBDaGVjayB0aGUgY29uZGl0aW9uIHRvIHNlZSBpZiBhbGwgb2YgdGhlIGNvbmRpdGlvbnMgYXJlIHRydWUuXG4gKiBAcGFyYW0gcGxhdGZvcm0gVGhlIHBsYXRmb3JtLlxuICogQHBhcmFtIGNvbmRpdGlvbklkcyBUaGUgY29uZGl0aW9ucyB0byBjaGVjay5cbiAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0IG9mIHRoZSBjYWxsZXIuXG4gKiBAcmV0dXJucyBUcnVlIGlmIGFsbCBvZiB0aGUgY29uZGl0aW9ucyBhcmUgdHJ1ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrQ29uZGl0aW9ucyhcblx0cGxhdGZvcm06IFdvcmtzcGFjZVBsYXRmb3JtTW9kdWxlLFxuXHRjb25kaXRpb25JZHM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkLFxuXHRjb250ZXh0PzogQ29uZGl0aW9uQ29udGV4dFR5cGVzXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0aWYgKEFycmF5LmlzQXJyYXkoY29uZGl0aW9uSWRzKSkge1xuXHRcdGZvciAoY29uc3QgY29uZGl0aW9uSWQgb2YgY29uZGl0aW9uSWRzKSB7XG5cdFx0XHRpZiAoIShhd2FpdCBjaGVja0NvbmRpdGlvbihwbGF0Zm9ybSwgY29uZGl0aW9uSWQsIGNvbnRleHQpKSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIGEgc2luZ2xlIGNvbmRpdGlvbiBpcyB0cnVlLlxuICogQHBhcmFtIHBsYXRmb3JtIFRoZSBwbGF0Zm9ybS5cbiAqIEBwYXJhbSBjb25kaXRpb25JZCBUaGUgY29uZGl0aW9uIHRvIGNoZWNrLlxuICogQHBhcmFtIGNvbnRleHQgVGhlIGNvbnRleHQgb2YgdGhlIGNhbGxlci5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGNvbmRpdGlvbiBpcyB0cnVlLCBvciBpdCBkb2VzIG5vdCBleGlzdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrQ29uZGl0aW9uKFxuXHRwbGF0Zm9ybTogV29ya3NwYWNlUGxhdGZvcm1Nb2R1bGUsXG5cdGNvbmRpdGlvbklkOiBzdHJpbmcsXG5cdGNvbnRleHQ/OiBDb25kaXRpb25Db250ZXh0VHlwZXNcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRpZiAoaXNFbXB0eShhbGxDb25kaXRpb25zW2NvbmRpdGlvbklkXSkpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuIGFsbENvbmRpdGlvbnNbY29uZGl0aW9uSWRdKHBsYXRmb3JtLCBjb250ZXh0KTtcbn1cbiIsImltcG9ydCB0eXBlIE9wZW5GaW4gZnJvbSBcIkBvcGVuZmluL2NvcmVcIjtcbmltcG9ydCAqIGFzIGVuZHBvaW50UHJvdmlkZXIgZnJvbSBcIi4vZW5kcG9pbnRcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHsgTUFOSUZFU1RfVFlQRVMgfSBmcm9tIFwiLi9tYW5pZmVzdC10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBQbGF0Zm9ybUFwcCB9IGZyb20gXCIuL3NoYXBlcy9hcHAtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFwcFNvdXJjZUNvbm5lY3Rpb24sXG5cdENvbm5lY3Rpb24sXG5cdENvbm5lY3Rpb25QYXlsb2FkVmVyaWZpY2F0aW9uUmVxdWVzdCxcblx0Q29ubmVjdGlvblBheWxvYWRWZXJpZmljYXRpb25SZXNwb25zZSxcblx0Q29ubmVjdGlvblByb3ZpZGVyT3B0aW9ucyxcblx0Q29ubmVjdGlvblZhbGlkYXRpb25PcHRpb25zLFxuXHRDb25uZWN0aW9uVmFsaWRhdGlvblJlc3BvbnNlLFxuXHRTbmFwc2hvdFNvdXJjZUNvbm5lY3Rpb25cbn0gZnJvbSBcIi4vc2hhcGVzL2Nvbm5lY3Rpb24tc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5LCBpc1N0cmluZ1ZhbHVlLCBvYmplY3RDbG9uZSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IEFQUF9TT1VSQ0VfVFlQRV9JRCA9IFwiYXBwU291cmNlXCI7XG5jb25zdCBTTkFQU0hPVF9TT1VSQ0VfVFlQRV9JRCA9IFwic25hcHNob3RTb3VyY2VcIjtcbmNvbnN0IEFDVElPTlNfVFlQRV9JRCA9IFwiYWN0aW9uc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJDb25uZWN0aW9uc1wiKTtcblxuY29uc3QgY29ubmVjdGVkQ2xpZW50czogeyBba2V5OiBzdHJpbmddOiBDb25uZWN0aW9uIH0gPSB7fTtcbmNvbnN0IHJlZ2lzdGVyZWRBY3Rpb25zOiB7IFtrZXk6IHN0cmluZ106ICgpID0+IFByb21pc2U8dm9pZD4gfSA9IHt9O1xubGV0IGNvbm5lY3Rpb25PcHRpb25zOiBDb25uZWN0aW9uUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xubGV0IGNvbm5lY3Rpb25TZXJ2aWNlOiBPcGVuRmluLkNoYW5uZWxQcm92aWRlcjtcbmxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4vKipcbiAqIEluaXRpYWxpemUgdGhlIGNvbm5lY3Rpb25zLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgdG8gaW5pdGlhbGl6ZSB0aGUgY29ubmVjdGlvbnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KG9wdGlvbnM6IENvbm5lY3Rpb25Qcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQpOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKGluaXRpYWxpemVkKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0aW5pdGlhbGl6ZWQgPSB0cnVlO1xuXHRjb25uZWN0aW9uT3B0aW9ucyA9IG9wdGlvbnM7XG5cblx0Y29uc3QgY29ubmVjdGlvbklkID0gY29ubmVjdGlvbk9wdGlvbnM/LmNvbm5lY3Rpb25JZDtcblx0aWYgKCFpc0VtcHR5KGNvbm5lY3Rpb25JZCkpIHtcblx0XHR0cnkge1xuXHRcdFx0Y29ubmVjdGlvblNlcnZpY2UgPSBhd2FpdCBmaW4uSW50ZXJBcHBsaWNhdGlvbkJ1cy5DaGFubmVsLmNyZWF0ZShcblx0XHRcdFx0YCR7ZmluLm1lLmlkZW50aXR5LnV1aWR9LSR7Y29ubmVjdGlvbklkfWBcblx0XHRcdCk7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIkNvbmZpZ3VyaW5nIGNvbm5lY3Rpb24gcHJvdmlkZXJcIik7XG5cdFx0XHRjb25uZWN0aW9uU2VydmljZS5vbkNvbm5lY3Rpb24oYXN5bmMgKGlkZW50aXR5LCBwYXlsb2FkKSA9PiB7XG5cdFx0XHRcdC8vIGNhbiByZWplY3QgYSBjb25uZWN0aW9uIGhlcmUgYnkgdGhyb3dpbmcgYW4gZXJyb3Jcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJDbGllbnQgY29ubmVjdGlvbiByZXF1ZXN0IGlkZW50aXR5XCIsIEpTT04uc3RyaW5naWZ5KGlkZW50aXR5KSk7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiQ2xpZW50IGNvbm5lY3Rpb24gaGFzIHJlcXVlc3QgcGF5bG9hZFwiLCAhaXNFbXB0eShwYXlsb2FkKSk7XG5cblx0XHRcdFx0Y29uc3QgdmFsaWRhdGVkQ29ubmVjdGlvbiA9IGF3YWl0IGdldENvbm5lY3Rpb25MaXN0aW5nKGlkZW50aXR5KTtcblx0XHRcdFx0bGV0IGlzVmFsaWQgPSBmYWxzZTtcblx0XHRcdFx0bGV0IGVycm9yTWVzc2FnZSA9XG5cdFx0XHRcdFx0XCJUaGlzIGNvbm5lY3Rpb24gaGFzIGZhaWxlZCB0aGUgdmFsaWRhdGlvbiBjaGVjayBhbmQgY2Fubm90IGNvbm5lY3QgdG8gdGhlIHJlcXVlc3RlZCBhcHBsaWNhdGlvblwiO1xuXHRcdFx0XHRpZiAoIWlzRW1wdHkodmFsaWRhdGVkQ29ubmVjdGlvbikpIHtcblx0XHRcdFx0XHRpc1ZhbGlkID0gdHJ1ZTtcblx0XHRcdFx0XHRpZiAodmFsaWRhdGVkQ29ubmVjdGlvbi52YWxpZGF0ZVBheWxvYWQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgaXNDb25uZWN0aW9uVmFsaWQoaWRlbnRpdHksIHBheWxvYWQpO1xuXHRcdFx0XHRcdFx0aXNWYWxpZCA9IHJlc3BvbnNlLmlzVmFsaWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChpc1ZhbGlkKSB7XG5cdFx0XHRcdFx0XHRpZiAoIWlzRW1wdHkoY29ubmVjdGVkQ2xpZW50c1tpZGVudGl0eS51dWlkXSkpIHtcblx0XHRcdFx0XHRcdFx0aXNWYWxpZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRlcnJvck1lc3NhZ2UgPSBgVGhpcyBwbGF0Zm9ybSBjYW4gb25seSBhY2NlcHQgb25lIGNvbm5lY3Rpb24gZnJvbSBhbiBleHRlcm5hbCBjb25uZWN0aW9uLiBUaGUgdXVpZCAoJHtpZGVudGl0eS51dWlkfSkgaXMgYWxyZWFkeSByZWdpc3RlcmVkLmA7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBhc3NpZ24gdGhlIHBhc3NlZCBpZGVudGl0eVxuXHRcdFx0XHRcdFx0XHR2YWxpZGF0ZWRDb25uZWN0aW9uLmlkZW50aXR5ID0gaWRlbnRpdHk7XG5cdFx0XHRcdFx0XHRcdGNvbm5lY3RlZENsaWVudHNbaWRlbnRpdHkudXVpZF0gPSB2YWxpZGF0ZWRDb25uZWN0aW9uO1xuXHRcdFx0XHRcdFx0XHRsb2dnZXIuaW5mbyhgVGhlIGZvbGxvd2luZyBjb25uZWN0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBjb25uZWN0ZWQgbGlzdDogJHtpZGVudGl0eS51dWlkfWApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghaXNWYWxpZCkge1xuXHRcdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdFx0YFRoZSBmb2xsb3dpbmcgY29ubmVjdGlvbiBoYXMgbm90IGJlZW4gYWRkZWQgdG8gdGhlIGNvbm5lY3RlZCBsaXN0OiAke2lkZW50aXR5LnV1aWR9IGFzIGl0IGZhaWxlZCB2YWxpZGF0aW9uYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRjb25uZWN0aW9uU2VydmljZS5vbkRpc2Nvbm5lY3Rpb24oYXN5bmMgKGlkZW50aXR5KSA9PiB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBDbGllbnQgZGlzY29ubmVjdGVkIHV1aWQ6ICR7aWRlbnRpdHkudXVpZH0sIG5hbWU6ICR7aWRlbnRpdHkubmFtZX1gKTtcblx0XHRcdFx0YXdhaXQgZGlzY29ubmVjdChpZGVudGl0eSk7XG5cdFx0XHR9KTtcblxuXHRcdFx0Y29ubmVjdGlvblNlcnZpY2UucmVnaXN0ZXIoXCJhY3Rpb25cIiwgYXN5bmMgKHBheWxvYWQsIGlkZW50aXR5KSA9PiB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiQWN0aW9uIHJlY2VpdmVkIGZyb20gY2xpZW50XCIsIGlkZW50aXR5LCBwYXlsb2FkKTtcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY3V0ZUFjdGlvbihpZGVudGl0eSwgcGF5bG9hZCBhcyB7IGFjdGlvbjogc3RyaW5nIH0pO1xuXHRcdFx0XHRyZXR1cm4geyByZXN1bHQgfTtcblx0XHRcdH0pO1xuXG5cdFx0XHRjb25uZWN0aW9uU2VydmljZS5yZWdpc3RlcihcImNhbkFjdGlvblwiLCBhc3luYyAocGF5bG9hZCwgaWRlbnRpdHkpID0+IHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJDaGVjayBmb3IgYWN0aW9uIHBlcm1pc3Npb24gcmVjZWl2ZWQgZnJvbSBjbGllbnRcIiwgaWRlbnRpdHksIHBheWxvYWQpO1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBpc0FjdGlvblN1cHBvcnRlZChpZGVudGl0eSwgcGF5bG9hZCBhcyB7IGFjdGlvbjogc3RyaW5nIH0pO1xuXHRcdFx0XHRyZXR1cm4geyByZXN1bHQgfTtcblx0XHRcdH0pO1xuXG5cdFx0XHRjb25uZWN0aW9uU2VydmljZS5yZWdpc3RlcihcImRpc2Nvbm5lY3RcIiwgYXN5bmMgKHBheWxvYWQsIGlkZW50aXR5KSA9PiB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiUmVxdWVzdCBmb3IgZGlzY29ubmVjdGlvbiByZWNlaXZlZCBmcm9tIGNsaWVudFwiLCBpZGVudGl0eSwgcGF5bG9hZCk7XG5cdFx0XHRcdGF3YWl0IGRpc2Nvbm5lY3QoaWRlbnRpdHkpO1xuXHRcdFx0fSk7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFx0XCJUaGVyZSB3YXMgYW4gZXJyb3IgdHJ5aW5nIHRvIGNyZWF0ZSB0aGUgY2hhbm5lbCB0aGF0IHdpbGwgYWN0IGFzIGNvbm5lY3Rpb24gcHJvdmlkZXIuIFRoaXMgZnVuY3Rpb25hbGl0eSB3aWxsIG5vdCBiZSBhdmFpbGFibGVcIixcblx0XHRcdFx0ZXJyb3Jcblx0XHRcdCk7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGxvZ2dlci5pbmZvKFwiVGhpcyBwbGF0Zm9ybSBpcyBub3QgY29uZmlndXJlZCB0byBzdXBwb3J0IGEgY29ubmVjdGlvblByb3ZpZGVyXCIpO1xuXHR9XG59XG5cbi8qKlxuICogTWFudWFsbHkgcmVnaXN0ZXIgYW4gYWN0aW9uLlxuICogQHBhcmFtIGFjdGlvbk5hbWUgVGhlIG5hbWUgb2YgdGhlIGFjdGlvbnMuXG4gKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb25zIG1ldGhvZCB0byBjYWxsLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYWN0aW9uIHdhcyByZWdpc3RlcmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJBY3Rpb24oYWN0aW9uTmFtZTogc3RyaW5nLCBhY3Rpb246ICgpID0+IFByb21pc2U8dm9pZD4pOiBib29sZWFuIHtcblx0aWYgKGlzRW1wdHkocmVnaXN0ZXJlZEFjdGlvbnNbYWN0aW9uTmFtZV0pKSB7XG5cdFx0bG9nZ2VyLmluZm8oYEFkZGluZyBhY3Rpb24gJHthY3Rpb25OYW1lfSB0byBhdmFpbGFibGUgYWN0aW9ucyBsaXN0YCk7XG5cdFx0cmVnaXN0ZXJlZEFjdGlvbnNbYWN0aW9uTmFtZV0gPSBhY3Rpb247XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0bG9nZ2VyLndhcm4oYE5vdCBhZGRpbmcgYWN0aW9uICR7YWN0aW9uTmFtZX0gdG8gYXZhaWxhYmxlIGFjdGlvbnMgbGlzdCBhcyBpdCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFJlbW92ZSBhIHJlZ2lzdGVyZWQgYWN0aW9ucy5cbiAqIEBwYXJhbSBhY3Rpb25OYW1lIFRoZSBuYW1lIG9mIHRoZSBhY3Rpb24gdG8gcmVtb3ZlLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYWN0aW9uIHdhcyByZW1vdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJBY3Rpb24oYWN0aW9uTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdGlmIChpc0VtcHR5KHJlZ2lzdGVyZWRBY3Rpb25zW2FjdGlvbk5hbWVdKSkge1xuXHRcdGxvZ2dlci53YXJuKGBDYW5ub3QgcmVtb3ZlIGFjdGlvbiAke2FjdGlvbk5hbWV9IGZyb20gYXZhaWxhYmxlIGFjdGlvbnMgbGlzdCBhcyBpdCBpcyBub3QgcmVnaXN0ZXJlZGApO1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRkZWxldGUgcmVnaXN0ZXJlZEFjdGlvbnNbYWN0aW9uTmFtZV07XG5cdGxvZ2dlci5pbmZvKGBBY3Rpb24gJHthY3Rpb25OYW1lfSBjbGVhcmVkIGZyb20gYXZhaWxhYmxlIGFjdGlvbnMgbGlzdGApO1xuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBHZXQgYW55IGNvbm5lY3Rpb25zIHRoYXQgc3VwcG9ydCBhcHBzLlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgY29ubmVjdGlvbnMgc3VwcG9ydGluZyBhcHBzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q29ubmVjdGVkQXBwU291cmNlQ2xpZW50cygpOiBQcm9taXNlPFxuXHR7XG5cdFx0aWRlbnRpdHk6IE9wZW5GaW4uSWRlbnRpdHk7XG5cdFx0Y29ubmVjdGlvbkRhdGE6IEFwcFNvdXJjZUNvbm5lY3Rpb247XG5cdH1bXVxuPiB7XG5cdGNvbnN0IGNvbm5lY3Rpb25zVG9SZXR1cm46IHtcblx0XHRpZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eTtcblx0XHRjb25uZWN0aW9uRGF0YTogQXBwU291cmNlQ29ubmVjdGlvbjtcblx0fVtdID0gW107XG5cblx0Y29uc3QgYXZhaWxhYmxlQ29ubmVjdGlvbnMgPSBPYmplY3QudmFsdWVzKGNvbm5lY3RlZENsaWVudHMpO1xuXHRmb3IgKGNvbnN0IGNvbm5lY3Rpb24gb2YgYXZhaWxhYmxlQ29ubmVjdGlvbnMpIHtcblx0XHRjb25zdCBtYXRjaGVkQ29ubmVjdGlvbiA9IGNvbm5lY3Rpb24uY29ubmVjdGlvblR5cGVzLmZpbmQoXG5cdFx0XHQoc3VwcG9ydGVkQ29ubmVjdGlvblR5cGUpID0+IHN1cHBvcnRlZENvbm5lY3Rpb25UeXBlLnR5cGUgPT09IEFQUF9TT1VSQ0VfVFlQRV9JRFxuXHRcdCk7XG5cblx0XHRpZiAobWF0Y2hlZENvbm5lY3Rpb24/LnR5cGUgPT09IEFQUF9TT1VSQ0VfVFlQRV9JRCkge1xuXHRcdFx0Y29ubmVjdGlvbnNUb1JldHVybi5wdXNoKHsgaWRlbnRpdHk6IGNvbm5lY3Rpb24uaWRlbnRpdHksIGNvbm5lY3Rpb25EYXRhOiBtYXRjaGVkQ29ubmVjdGlvbiB9KTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gY29ubmVjdGlvbnNUb1JldHVybjtcbn1cblxuLyoqXG4gKiBHZXQgYW55IGNvbm5lY3RlZCBhcHBzLlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgY29ubmVjdGVkIGFwcHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDb25uZWN0ZWRBcHBzKCk6IFByb21pc2U8UGxhdGZvcm1BcHBbXT4ge1xuXHRjb25zdCBjb25uZWN0ZWRTb3VyY2VzID0gYXdhaXQgZ2V0Q29ubmVjdGVkQXBwU291cmNlQ2xpZW50cygpO1xuXHRjb25zdCBhcHBzOiBQbGF0Zm9ybUFwcFtdID0gW107XG5cblx0Zm9yIChjb25zdCBjb25uZWN0ZWRTb3VyY2Ugb2YgY29ubmVjdGVkU291cmNlcykge1xuXHRcdGNvbnN0IGNvbm5lY3Rpb25BcHBzOiBQbGF0Zm9ybUFwcFtdID0gYXdhaXQgY29ubmVjdGlvblNlcnZpY2UuZGlzcGF0Y2goXG5cdFx0XHRjb25uZWN0ZWRTb3VyY2UuaWRlbnRpdHksXG5cdFx0XHRcImdldEFwcHNcIlxuXHRcdCk7XG5cdFx0Y29uc3Qgc3VwcG9ydGVkTWFuaWZlc3RUeXBlczogc3RyaW5nW10gPSBjb25uZWN0ZWRTb3VyY2U/LmNvbm5lY3Rpb25EYXRhPy5tYW5pZmVzdFR5cGVzID8/IFtdO1xuXHRcdGxldCB2YWxpZGF0ZWRBcHBzOiBQbGF0Zm9ybUFwcFtdID0gW107XG5cdFx0aWYgKHN1cHBvcnRlZE1hbmlmZXN0VHlwZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0dmFsaWRhdGVkQXBwcyA9IGNvbm5lY3Rpb25BcHBzLmZpbHRlcihcblx0XHRcdFx0KGNvbm5lY3Rpb25BcHApID0+XG5cdFx0XHRcdFx0Y29ubmVjdGlvbkFwcC5tYW5pZmVzdFR5cGUgJiYgc3VwcG9ydGVkTWFuaWZlc3RUeXBlcy5pbmNsdWRlcyhjb25uZWN0aW9uQXBwLm1hbmlmZXN0VHlwZSlcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhbGlkYXRlZEFwcHMgPSBjb25uZWN0aW9uQXBwcztcblx0XHR9XG5cblx0XHRmb3IgKGNvbnN0IGFwcCBvZiB2YWxpZGF0ZWRBcHBzKSB7XG5cdFx0XHRpZiAoYXBwLm1hbmlmZXN0VHlwZSA9PT0gTUFOSUZFU1RfVFlQRVMuQ29ubmVjdGlvbi5pZCkge1xuXHRcdFx0XHQvLyBlbnN1cmUgdGhhdCBpZiBhbiBhcHAgZnJvbSBhIGNvbm5lY3Rpb24gaXMgbWFya2VkIGFzIGNvbm5lY3Rpb25cblx0XHRcdFx0Ly8gdGhlbiBpdCBzaG91bGQgb25seSBiZSBzZW50IHRvIGl0c2VsZiBhbmQgbm90IGFub3RoZXIgdXVpZFxuXHRcdFx0XHRhcHAubWFuaWZlc3QgPSBjb25uZWN0ZWRTb3VyY2UuaWRlbnRpdHkudXVpZDtcblx0XHRcdH1cblx0XHR9XG5cdFx0YXBwcy5wdXNoKC4uLnZhbGlkYXRlZEFwcHMpO1xuXHR9XG5cblx0cmV0dXJuIGFwcHM7XG59XG5cbi8qKlxuICogTGF1bmNoIGEgY29ubmVjdGVkIGFwcC5cbiAqIEBwYXJhbSBhcHAgVGhlIGFwcCB0byBsYXVuY2guXG4gKiBAcmV0dXJucyBUaGUgaWRlbnRpdHkgb2YgdGhlIGNvbm5lY3Rpb24gYXBwLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGF1bmNoQ29ubmVjdGVkQXBwKGFwcDogUGxhdGZvcm1BcHApOiBQcm9taXNlPE9wZW5GaW4uSWRlbnRpdHkgfCB1bmRlZmluZWQ+IHtcblx0Y29uc3QgY29ubmVjdGVkU291cmNlcyA9IGF3YWl0IGdldENvbm5lY3RlZEFwcFNvdXJjZUNsaWVudHMoKTtcblx0Y29uc3QgY29ubmVjdGVkU291cmNlID0gY29ubmVjdGVkU291cmNlcy5maW5kKChlbnRyeSkgPT4gZW50cnkuaWRlbnRpdHkudXVpZCA9PT0gYXBwLm1hbmlmZXN0KTtcblx0aWYgKGFwcC5tYW5pZmVzdFR5cGUgPT09IE1BTklGRVNUX1RZUEVTLkNvbm5lY3Rpb24uaWQgJiYgIWlzRW1wdHkoY29ubmVjdGVkU291cmNlKSkge1xuXHRcdGxvZ2dlci5pbmZvKGBMYXVuY2hpbmcgYXBwOiAke2FwcC5hcHBJZH0gYWdhaW5zdCBjb25uZWN0aW9uOiAke2Nvbm5lY3RlZFNvdXJjZS5pZGVudGl0eS51dWlkfWApO1xuXHRcdGF3YWl0IGNvbm5lY3Rpb25TZXJ2aWNlLmRpc3BhdGNoKGNvbm5lY3RlZFNvdXJjZS5pZGVudGl0eSwgXCJsYXVuY2hBcHBcIiwgYXBwKTtcblx0XHRyZXR1cm4gY29ubmVjdGVkU291cmNlLmlkZW50aXR5O1xuXHR9XG5cdGxvZ2dlci53YXJuKFxuXHRcdGBBIHJlcXVlc3QgdG8gbGF1bmNoIGFwcCAke2FwcC5hcHBJZH0gd2FzIG5vdCBzdWNjZXNzZnVsLiBFaXRoZXIgdGhlIG1hbmlmZXN0VHlwZSBpcyBub3QgJHtNQU5JRkVTVF9UWVBFUy5Db25uZWN0aW9uLmlkfToke2FwcC5tYW5pZmVzdFR5cGV9IG9yIHRoZSBjb25uZWN0aW9uICR7YXBwLm1hbmlmZXN0fSBpcyBlaXRoZXIgbm90IHJlZ2lzdGVyZWQgaW4gdGhlIGNvbm5lY3Rpb25Qcm92aWRlciB3aXRoICR7QVBQX1NPVVJDRV9UWVBFX0lEfSBzdXBwb3J0IG9yIGhhc24ndCBjb25uZWN0ZWQgdG8gdGhpcyBwbGF0Zm9ybS5gXG5cdCk7XG59XG5cbi8qKlxuICogR2V0IGNvbm5lY3Rpb24gc25hcHNob3Qgc291cmNlIGNsaWVudHMuXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBjb25uZWN0ZWQgc25hcHNob3Qgc291cmNlIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDb25uZWN0ZWRTbmFwc2hvdFNvdXJjZUNsaWVudHMoKTogUHJvbWlzZTxcblx0eyBpZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eTsgY29ubmVjdGlvbkRhdGE6IFNuYXBzaG90U291cmNlQ29ubmVjdGlvbiB9W11cbj4ge1xuXHRjb25zdCBjb25uZWN0aW9uc1RvUmV0dXJuOiB7IGlkZW50aXR5OiBPcGVuRmluLklkZW50aXR5OyBjb25uZWN0aW9uRGF0YTogU25hcHNob3RTb3VyY2VDb25uZWN0aW9uIH1bXSA9IFtdO1xuXG5cdGNvbnN0IGF2YWlsYWJsZUNvbm5lY3Rpb25zID0gT2JqZWN0LnZhbHVlcyhjb25uZWN0ZWRDbGllbnRzKTtcblx0Zm9yIChjb25zdCBjb25uZWN0aW9uIG9mIGF2YWlsYWJsZUNvbm5lY3Rpb25zKSB7XG5cdFx0Y29uc3QgbWF0Y2hlZENvbm5lY3Rpb24gPSBjb25uZWN0aW9uLmNvbm5lY3Rpb25UeXBlcy5maW5kKFxuXHRcdFx0KHN1cHBvcnRlZENvbm5lY3Rpb25UeXBlKSA9PiBzdXBwb3J0ZWRDb25uZWN0aW9uVHlwZS50eXBlID09PSBTTkFQU0hPVF9TT1VSQ0VfVFlQRV9JRFxuXHRcdCk7XG5cblx0XHRpZiAobWF0Y2hlZENvbm5lY3Rpb24/LnR5cGUgPT09IFNOQVBTSE9UX1NPVVJDRV9UWVBFX0lEKSB7XG5cdFx0XHRjb25uZWN0aW9uc1RvUmV0dXJuLnB1c2goeyBpZGVudGl0eTogY29ubmVjdGlvbi5pZGVudGl0eSwgY29ubmVjdGlvbkRhdGE6IG1hdGNoZWRDb25uZWN0aW9uIH0pO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjb25uZWN0aW9uc1RvUmV0dXJuO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgY29ubmVjdGlvbiBpcyB2YWxpZC5cbiAqIEBwYXJhbSBpZGVudGl0eSBUaGUgaWRlbnRpdHkgb2YgdGhlIGNvbm5lY3Rpb24gdG8gY2hlY2suXG4gKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCB0byBwYXNzIHdoZW4gY2hlY2tpbmcgdGhlIGNvbm5lY3Rpb24uXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgY2hlY2tpbmcgdGhlIGNvbm5lY3Rpb24uXG4gKiBAcmV0dXJucyBSZXNwb25zZSBkZXRlcm1pbmluZyBpZiB0aGUgY29ubmVjdGlvbiBpcyB2YWxpZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzQ29ubmVjdGlvblZhbGlkPFQ+KFxuXHRpZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eSxcblx0cGF5bG9hZD86IHVua25vd24sXG5cdG9wdGlvbnM/OiBDb25uZWN0aW9uVmFsaWRhdGlvbk9wdGlvbnM8VD5cbik6IFByb21pc2U8Q29ubmVjdGlvblZhbGlkYXRpb25SZXNwb25zZT4ge1xuXHRjb25zdCByZXNwb25zZVRvUmV0dXJuOiBDb25uZWN0aW9uVmFsaWRhdGlvblJlc3BvbnNlID0geyBpc1ZhbGlkOiBmYWxzZSB9O1xuXG5cdHRyeSB7XG5cdFx0aWYgKGlzRW1wdHkoaWRlbnRpdHk/LnV1aWQpKSB7XG5cdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XCJBbiBpZGVudGl0eSB3aXRob3V0IGEgVVVJRCB3YXMgcGFzc2VkIHRvIHRoZSB2YWxpZGF0ZSBjb25uZWN0aW9uIGZ1bmN0aW9uLiBWYWxpZGF0aW9uIGNhbm5vdCBoYXBwZW4uXCIsXG5cdFx0XHRcdGlkZW50aXR5LFxuXHRcdFx0XHRvcHRpb25zXG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuIHJlc3BvbnNlVG9SZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKGlzRW1wdHkoY29ubmVjdGlvbk9wdGlvbnM/LmNvbm5lY3Rpb25zKSkge1xuXHRcdFx0aWYgKG9wdGlvbnM/LnR5cGUgPT09IFwiYnJva2VyXCIpIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFx0XCJObyBjb25uZWN0aW9uIHByb3ZpZGVyIG9wdGlvbnMgc3BlY2lmaWVkIGFuZCBicm9rZXIgY29ubmVjdGlvbiByZXF1ZXN0ZWQuIEltcGxlbWVudGluZyBkZWZhdWx0IGJyb2tlciBiZWhhdmlvciB3aGljaCBpcyB0byBhbGxvdyBhIGNvbm5lY3Rpb24uXCJcblx0XHRcdFx0KTtcblx0XHRcdFx0cmVzcG9uc2VUb1JldHVybi5pc1ZhbGlkID0gdHJ1ZTtcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlVG9SZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XCJBIGNvbm5lY3Rpb24gdmVyaWZpY2F0aW9uIHJlcXVlc3Qgd2FzIG1hZGUgYnV0IGNvbm5lY3Rpb24gcHJvdmlkZXIgb3B0aW9ucyBoYXZlIG5vdCBiZWVuIGRlZmluZWQgc28gd2UgY2Fubm90IHZhbGlkYXRlIHRoZSBjb25uZWN0aW9uIHJlcXVlc3QuXCJcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm4gcmVzcG9uc2VUb1JldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBsaXN0ZWRDb25uZWN0aW9uID0gYXdhaXQgZ2V0Q29ubmVjdGlvbkxpc3RpbmcoaWRlbnRpdHkpO1xuXG5cdFx0aWYgKGlzRW1wdHkobGlzdGVkQ29ubmVjdGlvbikpIHtcblx0XHRcdGxvZ2dlci53YXJuKFwiQ29ubmVjdGlvbiBpcyBub3QgYWxsb3dlZCBzbyB1bmFibGUgdG8gdmFsaWRhdGUgcmVxdWVzdFwiLCBpZGVudGl0eSk7XG5cdFx0XHRyZXR1cm4gcmVzcG9uc2VUb1JldHVybjtcblx0XHR9XG5cdFx0aWYgKGxpc3RlZENvbm5lY3Rpb24udmFsaWRhdGVQYXlsb2FkKSB7XG5cdFx0XHRjb25zdCBjb25uZWN0aW9uVmFsaWRhdGlvbkVuZHBvaW50ID0gY29ubmVjdGlvbk9wdGlvbnM/LmNvbm5lY3Rpb25WYWxpZGF0aW9uRW5kcG9pbnQ7XG5cdFx0XHRpZiAoIWlzU3RyaW5nVmFsdWUoY29ubmVjdGlvblZhbGlkYXRpb25FbmRwb2ludCkpIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0XCJUaGlzIGNvbm5lY3Rpb24gaGFzIGJlZW4gZGVmaW5lZCBhcyByZXF1aXJpbmcgcGF5bG9hZCB2ZXJpZmljYXRpb24gYnV0IHRoZSBwbGF0Zm9ybSBoYXMgbm90IHByb3ZpZGVkIGEgY29ubmVjdGlvbiB2YWxpZGF0aW9uIGVuZHBvaW50IHRvIHVzZSBmb3IgdGhlIHZlcmlmaWNhdGlvbiBwcm9jZXNzLiBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgdGhpcyBjb25uZWN0aW9uIGlzIHZhbGlkIHVubGVzcyB0aGUgYnJva2VyIHNwZWNpZmllcyBpdCB3aXNoZXMgdG8gdmFsaWRhdGUuXCJcblx0XHRcdFx0KTtcblx0XHRcdFx0cmVzcG9uc2VUb1JldHVybi5pc1ZhbGlkID0gdHJ1ZTtcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlVG9SZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoZW5kcG9pbnRQcm92aWRlci5oYXNFbmRwb2ludChjb25uZWN0aW9uVmFsaWRhdGlvbkVuZHBvaW50KSkge1xuXHRcdFx0XHRjb25zdCByZXF1ZXN0ID0geyBpZGVudGl0eSwgcGF5bG9hZCwgb3B0aW9ucyB9O1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgQ29ubmVjdGlvbiB2YWxpZGF0aW9uIGJlaW5nIGhhbmRsZWQgYnkgZW5kcG9pbnQ6ICR7Y29ubmVjdGlvblZhbGlkYXRpb25FbmRwb2ludH1gKTtcblx0XHRcdFx0Y29uc3QgcmVzcG9uc2UgPSBhd2FpdCBlbmRwb2ludFByb3ZpZGVyLnJlcXVlc3RSZXNwb25zZTxcblx0XHRcdFx0XHRDb25uZWN0aW9uUGF5bG9hZFZlcmlmaWNhdGlvblJlcXVlc3QsXG5cdFx0XHRcdFx0Q29ubmVjdGlvblBheWxvYWRWZXJpZmljYXRpb25SZXNwb25zZVxuXHRcdFx0XHQ+KGNvbm5lY3Rpb25WYWxpZGF0aW9uRW5kcG9pbnQsIHJlcXVlc3QpO1xuXHRcdFx0XHRpZiAoIXJlc3BvbnNlPy5pc1ZhbGlkKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLndhcm4oYENvbm5lY3Rpb24gdmFsaWRhdGlvbiByZXF1ZXN0IGZvciAke0pTT04uc3RyaW5naWZ5KGlkZW50aXR5KX0gZmFpbGVkIHZhbGlkYXRpb25gKTtcblx0XHRcdFx0XHRyZXR1cm4gcmVzcG9uc2VUb1JldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRsb2dnZXIuaW5mbyhcIkNvbm5lY3Rpb24gaGFzIHBhc3NlZCB2YWxpZGF0aW9uLlwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdFwiVGhpcyBjb25uZWN0aW9uIGhhcyBiZWVuIGRlZmluZWQgYXMgcmVxdWlyaW5nIHBheWxvYWQgdmVyaWZpY2F0aW9uIGJ1dCB0aGUgc3BlY2lmaWVkIGNvbm5lY3Rpb25WYWxpZGF0aW9uRW5kcG9pbnQgaXMgbm90IGEgdmFsaWQgZW5kcG9pbnQuXCJcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlVG9SZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb3B0aW9uc1R5cGUgPSBvcHRpb25zPy50eXBlO1xuXHRcdGlmICghaXNFbXB0eShvcHRpb25zVHlwZSkpIHtcblx0XHRcdGNvbnN0IHN1cHBvcnRlZFR5cGUgPSBsaXN0ZWRDb25uZWN0aW9uLmNvbm5lY3Rpb25UeXBlcy5maW5kKChlbnRyeSkgPT4gZW50cnkudHlwZSA9PT0gb3B0aW9uc1R5cGUpO1xuXHRcdFx0aWYgKGlzRW1wdHkoc3VwcG9ydGVkVHlwZSkpIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0YFRoZSBjb25uZWN0aW9uIHRoYXQgaXMgYmVpbmcgdmFsaWRhdGVkIGRvZXMgbm90IHN1cHBvcnQgdGhlIHJlcXVpcmVkIGNvbm5lY3Rpb24gdHlwZTogJHtvcHRpb25zVHlwZX1gXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiByZXNwb25zZVRvUmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0bG9nZ2VyLmluZm8oXCJDb25uZWN0aW9uIHR5cGUgcmVxdWVzdGVkIGlzIHN1cHBvcnRlZC5cIik7XG5cdFx0fVxuXHRcdHJlc3BvbnNlVG9SZXR1cm4uaXNWYWxpZCA9IHRydWU7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdGxvZ2dlci5lcnJvcihcIkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byB2YWxpZCBhIGNvbm5lY3Rpb24gcmVxdWVzdC5cIiwgZXJyKTtcblx0fVxuXHRsb2dnZXIuaW5mbyhcIlJldHVybmluZzogXCIsIHJlc3BvbnNlVG9SZXR1cm4pO1xuXG5cdHJldHVybiByZXNwb25zZVRvUmV0dXJuO1xufVxuXG4vKipcbiAqIElzIHRoZSBzcGVjaWZpZWQgYWN0aW9uIHN1cHBvcnRlZCBieSB0aGUgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSBpZGVudGl0eSBUaGUgaWRlbnRpdHkgb2YgdGhlIGNvbm5lY3Rpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIGNvbnRhaW5pbmcgdGhlIGFjdGlvbnMgdG8gdGVzdC5cbiAqIEBwYXJhbSBwYXlsb2FkLmFjdGlvbiBUaGUgYWN0aW9ucyB0byB0ZXN0LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYWN0aW9uIGlzIHN1cHBvcnRlZC5cbiAqL1xuZnVuY3Rpb24gaXNBY3Rpb25TdXBwb3J0ZWQoaWRlbnRpdHk6IE9wZW5GaW4uSWRlbnRpdHksIHBheWxvYWQ6IHsgYWN0aW9uOiBzdHJpbmcgfSk6IGJvb2xlYW4ge1xuXHRjb25zdCByZXF1ZXN0aW5nQ2xpZW50ID0gY29ubmVjdGVkQ2xpZW50c1tpZGVudGl0eS51dWlkXTtcblx0Y29uc3QgYWN0aW9uSWQgPSBwYXlsb2FkPy5hY3Rpb247XG5cdGNvbnN0IHJlcXVlc3RlZEFjdGlvbiA9IHJlZ2lzdGVyZWRBY3Rpb25zW2FjdGlvbklkXTtcblx0Y29uc3QgYWN0aW9uU2V0dGluZ3MgPSByZXF1ZXN0aW5nQ2xpZW50LmNvbm5lY3Rpb25UeXBlcy5maW5kKChlbnRyeSkgPT4gZW50cnkudHlwZSA9PT0gQUNUSU9OU19UWVBFX0lEKTtcblx0bGV0IHN1cHBvcnRlZEFjdGlvbnMgPSBjb25uZWN0aW9uT3B0aW9ucz8uc3VwcG9ydGVkQWN0aW9ucyA/PyBbXTtcblxuXHRpZiAoYWN0aW9uU2V0dGluZ3M/LnR5cGUgPT09IEFDVElPTlNfVFlQRV9JRCkge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGFjdGlvblNldHRpbmdzLnN1cHBvcnRlZEFjdGlvbnMpICYmIGFjdGlvblNldHRpbmdzLnN1cHBvcnRlZEFjdGlvbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0c3VwcG9ydGVkQWN0aW9ucyA9IGFjdGlvblNldHRpbmdzLnN1cHBvcnRlZEFjdGlvbnM7XG5cdFx0fVxuXHRcdGlmICghaXNFbXB0eShyZXF1ZXN0ZWRBY3Rpb24pICYmIHN1cHBvcnRlZEFjdGlvbnMuaW5jbHVkZXMoYWN0aW9uSWQpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIEV4ZWN1dGUgYW4gYWN0aW9uIG9uIGEgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSBpZGVudGl0eSBUaGUgaWRlbnRpdHkgb2YgdGhlIGNvbm5lY3Rpb24gdG8gcGVyZm9ybSB0aGUgYWN0aW9uIG9uLlxuICogQHBhcmFtIHBheWxvYWQgVGhlIHBheWxvYWQgY29udGFpbmluZyB0aGUgYWN0aW9uLlxuICogQHBhcmFtIHBheWxvYWQuYWN0aW9uIFRoZSBhY3Rpb24gdG8gZXhlY3V0ZS5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGFjdGlvbiB3YXMgZXhlY3V0ZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVBY3Rpb24oaWRlbnRpdHk6IE9wZW5GaW4uSWRlbnRpdHksIHBheWxvYWQ6IHsgYWN0aW9uOiBzdHJpbmcgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRjb25zdCBhY3Rpb25JZCA9IHBheWxvYWQ/LmFjdGlvbjtcblx0aWYgKGlzQWN0aW9uU3VwcG9ydGVkKGlkZW50aXR5LCBwYXlsb2FkKSkge1xuXHRcdGNvbnN0IHJlcXVlc3RlZEFjdGlvbiA9IHJlZ2lzdGVyZWRBY3Rpb25zW2FjdGlvbklkXTtcblx0XHRsb2dnZXIuaW5mbyhgRXhlY3V0aW5nIGFjdGlvbjogJHthY3Rpb25JZH0gb24gYmVoYWxmIG9mIGNvbm5lY3Rpb246ICR7aWRlbnRpdHkudXVpZH1gKTtcblx0XHRhd2FpdCByZXF1ZXN0ZWRBY3Rpb24oKTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGxvZ2dlci5pbmZvKFxuXHRcdGBOb3QgRXhlY3V0aW5nIGFjdGlvbjogJHthY3Rpb25JZH0gb24gYmVoYWxmIG9mIGNvbm5lY3Rpb246ICR7aWRlbnRpdHkudXVpZH0gYXMgdGhlIGFjdGlvbiB3YXMgZWl0aGVyIG5vdCBwcm92aWRlZCBvciBub3QgbGlzdGVkIGluIHRoZSBzdXBwb3J0ZWQgJHtBQ1RJT05TX1RZUEVfSUR9IGRlZmluaXRpb24uYFxuXHQpO1xuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogRGlzY29ubmVjdCB0aGUgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSBpZGVudGl0eSBUaGUgaWRlbnRpdHkgb2YgdGhlIGNvbm5lY3Rpb24gdG8gZGlzY29ubmVjdC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGlzY29ubmVjdChpZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eSk6IFByb21pc2U8dm9pZD4ge1xuXHRkZWxldGUgY29ubmVjdGVkQ2xpZW50c1tpZGVudGl0eS51dWlkXTtcblx0Y29uc3QgY29ubmVjdGVkQ2xpZW50SWRzID0gT2JqZWN0LmtleXMoY29ubmVjdGVkQ2xpZW50cyk7XG5cdC8vIGRpc2Nvbm5lY3QgZnJvbSBjaGFubmVsP1xuXHRpZiAoY29ubmVjdGVkQ2xpZW50SWRzLmxlbmd0aCA9PT0gMCkge1xuXHRcdC8vIHRoaXMgbG9naWMgY2FuIGJlIHVwZGF0ZWQgdG8gbm90IGRpc2Nvbm5lY3Qgb3IgZGlzY29ubmVjdCBhZnRlciBhIHdpbmRvdyBvZiB0aW1lXG5cdFx0bG9nZ2VyLmluZm8oXCJObyBjb25uZWN0aW9ucyBsZWZ0XCIpO1xuXHR9XG59XG5cbi8qKlxuICogR2V0cyB0aGUgY29ubmVjdGlvbiBhc3NvY2lhdGVkIHdpdGggYW4gaWRlbnRpdHkuXG4gKiBAcGFyYW0gaWRlbnRpdHkgVGhlIGlkZW50aXR5IHRvIGdldCB0aGUgY29ubmVjdGlvbiBmb3IuXG4gKiBAcmV0dXJucyBUaGUgY29ubmVjdGlvbiBpZiB0aGVyZSBpcyBvbmUuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldENvbm5lY3Rpb25MaXN0aW5nKGlkZW50aXR5OiBPcGVuRmluLklkZW50aXR5KTogUHJvbWlzZTxDb25uZWN0aW9uIHwgdW5kZWZpbmVkPiB7XG5cdC8vIExvb2sgZm9yIGEgY29ubmVjdGlvbiB3aXRoIGEgc3BlY2lmaWVkIHV1aWRcblx0Y29uc3QgbGlzdGVkQ29ubmVjdGlvbiA9IGNvbm5lY3Rpb25PcHRpb25zPy5jb25uZWN0aW9ucy5maW5kKFxuXHRcdChlbnRyeSkgPT4gZW50cnkuaWRlbnRpdHkudXVpZCA9PT0gaWRlbnRpdHkudXVpZFxuXHQpO1xuXG5cdGlmICghaXNFbXB0eShsaXN0ZWRDb25uZWN0aW9uKSkge1xuXHRcdHJldHVybiBsaXN0ZWRDb25uZWN0aW9uO1xuXHR9XG5cblx0Ly8gTm8gY29ubmVjdGlvbiBmb3VuZCBzbyBsb29rIGZvciBhIHdpbGRjYXJkIHV1aWRcblx0Y29uc3QgZGVmYXVsdENvbm5lY3Rpb24gPSBjb25uZWN0aW9uT3B0aW9ucz8uY29ubmVjdGlvbnMuZmluZCgoZW50cnkpID0+IGVudHJ5LmlkZW50aXR5LnV1aWQgPT09IFwiKlwiKTtcblx0aWYgKCFpc0VtcHR5KGRlZmF1bHRDb25uZWN0aW9uKSkge1xuXHRcdGxvZ2dlci5pbmZvKFxuXHRcdFx0YEEgc3BlY2lmaWMgbGlzdGluZyBmb3IgY29ubmVjdGlvbiAke2lkZW50aXR5LnV1aWR9IGlzbid0IGxpc3RlZCBidXQgdGhlcmUgaXMgYSBkZWZhdWx0ICogZW50cnkgYW5kIGl0IHdpbGwgYmUgdXNlZCBmb3IgdGhpcyBjb25uZWN0aW9uLmBcblx0XHQpO1xuXHRcdGNvbnN0IGlkZW50aXR5V2l0aERlZmF1bHRzOiBDb25uZWN0aW9uID0gb2JqZWN0Q2xvbmUoZGVmYXVsdENvbm5lY3Rpb24pO1xuXHRcdGlkZW50aXR5V2l0aERlZmF1bHRzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG5cdFx0cmV0dXJuIGlkZW50aXR5V2l0aERlZmF1bHRzO1xuXHR9XG5cblx0cmV0dXJuIGRlZmF1bHRDb25uZWN0aW9uO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBDdXN0b21QYWxldHRlU2V0IH0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZS1wbGF0Zm9ybVwiO1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IGRhcmsgYW5kIGxpZ2h0IHBhbGV0dGVzLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9QQUxFVFRFUzoge1xuXHRkYXJrOiBDdXN0b21QYWxldHRlU2V0O1xuXHRsaWdodDogQ3VzdG9tUGFsZXR0ZVNldDtcbn0gPSB7XG5cdGxpZ2h0OiB7XG5cdFx0YnJhbmRQcmltYXJ5OiBcIiMwQTc2RDNcIixcblx0XHRicmFuZFNlY29uZGFyeTogXCIjMUUxRjIzXCIsXG5cdFx0YmFja2dyb3VuZFByaW1hcnk6IFwiI0ZBRkJGRVwiLFxuXHRcdGJhY2tncm91bmQxOiBcIiNGRkZGRkZcIixcblx0XHRiYWNrZ3JvdW5kMjogXCIjRkFGQkZFXCIsXG5cdFx0YmFja2dyb3VuZDM6IFwiI0YzRjVGOFwiLFxuXHRcdGJhY2tncm91bmQ0OiBcIiNFQ0VFRjFcIixcblx0XHRiYWNrZ3JvdW5kNTogXCIjRERERkU0XCIsXG5cdFx0YmFja2dyb3VuZDY6IFwiI0M5Q0JEMlwiLFxuXHRcdHN0YXR1c1N1Y2Nlc3M6IFwiIzM1Qzc1OVwiLFxuXHRcdHN0YXR1c1dhcm5pbmc6IFwiI0Y0OEYwMFwiLFxuXHRcdHN0YXR1c0NyaXRpY2FsOiBcIiNCRTFEMUZcIixcblx0XHRzdGF0dXNBY3RpdmU6IFwiIzA0OThGQlwiLFxuXHRcdGlucHV0QmFja2dyb3VuZDogXCIjRUNFRUYxXCIsXG5cdFx0aW5wdXRDb2xvcjogXCIjMUUxRjIzXCIsXG5cdFx0aW5wdXRQbGFjZWhvbGRlcjogXCIjMzgzQTQwXCIsXG5cdFx0aW5wdXREaXNhYmxlZDogXCIjN0Q4MDhBXCIsXG5cdFx0aW5wdXRGb2N1c2VkOiBcIiNDOUNCRDJcIixcblx0XHR0ZXh0RGVmYXVsdDogXCIjMUUxRjIzXCIsXG5cdFx0dGV4dEhlbHA6IFwiIzJGMzEzNlwiLFxuXHRcdHRleHRJbmFjdGl2ZTogXCIjN0Q4MDhBXCIsXG5cdFx0Y29udGVudEJhY2tncm91bmQxOiBcIiMwQTc2RDNcIixcblx0XHRjb250ZW50QmFja2dyb3VuZDI6IFwiIzAwMDAwMFwiLFxuXHRcdGNvbnRlbnRCYWNrZ3JvdW5kMzogXCIjMDAwMDAwXCIsXG5cdFx0Y29udGVudEJhY2tncm91bmQ0OiBcIiMwMDAwMDBcIixcblx0XHRjb250ZW50QmFja2dyb3VuZDU6IFwiIzAwMDAwMFwiLFxuXHRcdGxpbmtEZWZhdWx0OiBcIiM2Q0FERTVcIixcblx0XHRsaW5rSG92ZXI6IFwiIzBBNzZEM1wiXG5cdH0sXG5cdGRhcms6IHtcblx0XHRicmFuZFByaW1hcnk6IFwiIzBBNzZEM1wiLFxuXHRcdGJyYW5kU2Vjb25kYXJ5OiBcIiMzODNBNDBcIixcblx0XHRiYWNrZ3JvdW5kUHJpbWFyeTogXCIjMUUxRjIzXCIsXG5cdFx0YmFja2dyb3VuZDE6IFwiIzExMTIxNFwiLFxuXHRcdGJhY2tncm91bmQyOiBcIiMxRTFGMjNcIixcblx0XHRiYWNrZ3JvdW5kMzogXCIjMjQyNjJCXCIsXG5cdFx0YmFja2dyb3VuZDQ6IFwiIzJGMzEzNlwiLFxuXHRcdGJhY2tncm91bmQ1OiBcIiMzODNBNDBcIixcblx0XHRiYWNrZ3JvdW5kNjogXCIjNTM1NjVGXCIsXG5cdFx0c3RhdHVzU3VjY2VzczogXCIjMzVDNzU5XCIsXG5cdFx0c3RhdHVzV2FybmluZzogXCIjRjQ4RjAwXCIsXG5cdFx0c3RhdHVzQ3JpdGljYWw6IFwiI0JFMUQxRlwiLFxuXHRcdHN0YXR1c0FjdGl2ZTogXCIjMDQ5OEZCXCIsXG5cdFx0aW5wdXRCYWNrZ3JvdW5kOiBcIiM1MzU2NUZcIixcblx0XHRpbnB1dENvbG9yOiBcIiNGRkZGRkZcIixcblx0XHRpbnB1dFBsYWNlaG9sZGVyOiBcIiNDOUNCRDJcIixcblx0XHRpbnB1dERpc2FibGVkOiBcIiM3RDgwOEFcIixcblx0XHRpbnB1dEZvY3VzZWQ6IFwiI0M5Q0JEMlwiLFxuXHRcdHRleHREZWZhdWx0OiBcIiNGRkZGRkZcIixcblx0XHR0ZXh0SGVscDogXCIjQzlDQkQyXCIsXG5cdFx0dGV4dEluYWN0aXZlOiBcIiM3RDgwOEFcIixcblx0XHRjb250ZW50QmFja2dyb3VuZDE6IFwiIzBBNzZEM1wiLFxuXHRcdGNvbnRlbnRCYWNrZ3JvdW5kMjogXCIjMDAwMDAwXCIsXG5cdFx0Y29udGVudEJhY2tncm91bmQzOiBcIiMwMDAwMDBcIixcblx0XHRjb250ZW50QmFja2dyb3VuZDQ6IFwiIzAwMDAwMFwiLFxuXHRcdGNvbnRlbnRCYWNrZ3JvdW5kNTogXCIjMDAwMDAwXCIsXG5cdFx0bGlua0RlZmF1bHQ6IFwiIzZDQURFNVwiLFxuXHRcdGxpbmtIb3ZlcjogXCIjMEE3NkQzXCJcblx0fVxufTtcbiIsImltcG9ydCB7IG1hcEludGVyb3BGcm9tRkRDMywgbWFwVG9QbGF0Zm9ybUFwcCBhcyBtYXBGREMzT25lUG9pbnRUd29Ub1BsYXRmb3JtQXBwIH0gZnJvbSBcIi4vZmRjMy8xLjIvbWFwcGVyXCI7XG5pbXBvcnQgeyBtYXBJbnRlbnRzRnJvbUZEQzMsIG1hcFRvUGxhdGZvcm1BcHAgYXMgbWFwRkRDM1R3b1BvaW50WmVyb1RvUGxhdGZvcm1BcHAgfSBmcm9tIFwiLi9mZGMzLzIuMC9tYXBwZXJcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgeyBFbmRwb2ludFByb3ZpZGVyLCBQbGF0Zm9ybUFwcCB9IGZyb20gXCIuL3NoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3RvcnlBcHBzLCBEaXJlY3RvcnlFbmRwb2ludCB9IGZyb20gXCIuL3NoYXBlcy9kaXJlY3Rvcnktc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IEZEQzNWT25lUG9pbnRUd29BcHBEaXJlY3RvcnlSZXNwb25zZSB9IGZyb20gXCIuL3NoYXBlcy9mZGMzLTEtMi1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgRkRDM1ZUd29Qb2ludFplcm9BcHBEaXJlY3RvcnlSZXNwb25zZSB9IGZyb20gXCIuL3NoYXBlcy9mZGMzLTItMC1zaGFwZXNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJEaXJlY3RvcnlcIik7XG5sZXQgZW5kcG9pbnRzOiBFbmRwb2ludFByb3ZpZGVyIHwgdW5kZWZpbmVkO1xubGV0IGRpcmVjdG9yaWVzOiBEaXJlY3RvcnlFbmRwb2ludFtdID0gW107XG5cbmxldCBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgZW5kcG9pbnQgcHJvdmlkZXIuXG4gKiBAcGFyYW0gZW5kcG9pbnRQcm92aWRlciBUaGUgZW5kcG9pbnQgcHJvdmlkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KGVuZHBvaW50UHJvdmlkZXI6IEVuZHBvaW50UHJvdmlkZXIpOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKGlzSW5pdGlhbGl6ZWQpIHtcblx0XHRsb2dnZXIud2FybihcIlRoZSBhcHAgc2VydmljZSBpcyBhbHJlYWR5IGluaXRpYWxpemVkXCIpO1xuXHRcdHJldHVybjtcblx0fVxuXHRpc0luaXRpYWxpemVkID0gdHJ1ZTtcblx0ZW5kcG9pbnRzID0gZW5kcG9pbnRQcm92aWRlcjtcbn1cblxuLyoqXG4gKiBBZGQgYW4gYW4gZGlyZWN0b3J5IGVuZHBvaW50LlxuICogQHBhcmFtIGVuZHBvaW50IFRoZSBlbmRwb2ludCB0byBhZGQgdG8gdGhlIGRpcmVjdG9yeS5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGVuZHBvaW50IHdhcyBzdWNjZXNzZnVsbHkgYWRkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGREaXJlY3RvcnlFbmRwb2ludChlbmRwb2ludDogRGlyZWN0b3J5RW5kcG9pbnQpOiBib29sZWFuIHtcblx0aWYgKGVuZHBvaW50cykge1xuXHRcdGlmIChpc0VtcHR5KGVuZHBvaW50Py5pZCkpIHtcblx0XHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFx0XCJBIGRpcmVjdG9yeSBlbnRyeSBkaWRuJ3Qgc3BlY2lmeSBhbiBpZCBhbmQgaXQgbmVlZHMgYW4gaWQgdG8gYmUgcmVnaXN0ZXJlZC4gSXQgY2Fubm90IGJlIGFkZGVkIGFzIGEgZGlyZWN0b3J5IGVuZHBvaW50LlwiLFxuXHRcdFx0XHRlbmRwb2ludFxuXHRcdFx0KTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRpZiAoZGlyZWN0b3JpZXMubGVuZ3RoICE9PSAwICYmIGRpcmVjdG9yaWVzLmZpbmRJbmRleCgoZW50cnkpID0+IGVudHJ5LmlkID09PSBlbmRwb2ludC5pZCkgIT09IC0xKSB7XG5cdFx0XHRsb2dnZXIuZXJyb3IoXG5cdFx0XHRcdGBBIGRpcmVjdG9yeSBlbnRyeSB3aXRoIHRoaXMgaWQ6ICR7ZW5kcG9pbnQuaWR9IGFscmVhZHkgZXhpc3RzIHNvIHRoaXMgcGFzc2VkIGVuZHBvaW50IGNhbm5vdCBiZSBhZGRlZC5gLFxuXHRcdFx0XHRlbmRwb2ludFxuXHRcdFx0KTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRpZiAoaXNFbXB0eShlbmRwb2ludC5lbmRwb2ludElkKSAmJiBpc0VtcHR5KGVuZHBvaW50Lm1hcCkgJiYgaXNFbXB0eShlbmRwb2ludC51cmwpKSB7XG5cdFx0XHRsb2dnZXIuZXJyb3IoXCJBIGRpcmVjdG9yeSBlbmRwb2ludCBtdXN0IGVpdGhlciBzcGVjaWZ5IGEgdXJsLCBlbmRwb2ludCBvciBhIG1hcC5cIik7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0aWYgKCFpc0VtcHR5KGVuZHBvaW50Py5lbmRwb2ludElkKSAmJiAhZW5kcG9pbnRzLmhhc0VuZHBvaW50KGVuZHBvaW50LmVuZHBvaW50SWQpKSB7XG5cdFx0XHRsb2dnZXIuZXJyb3IoXG5cdFx0XHRcdGBBIGRpcmVjdG9yeSBlbnRyeSBzcGVjaWZpZXMgYW4gZW5kcG9pbnQgdGhhdCBkb2VzIG5vdCBleGlzdDogJHtlbmRwb2ludC5lbmRwb2ludElkfSBhbmQgaXQgY2FuIHRoZXJlZm9yZSBub3QgYmUgYWRkZWQgYXMgYSBkaXJlY3RvcnkgZW5kcG9pbnQuIElkOiAke2VuZHBvaW50LmlkfWAsXG5cdFx0XHRcdGVuZHBvaW50XG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gZWxzZSBpZiAoIWlzRW1wdHkoZW5kcG9pbnQ/Lm1hcCkpIHtcblx0XHRcdGlmICghZW5kcG9pbnRzLmhhc0VuZHBvaW50KGVuZHBvaW50Lm1hcC5pbnB1dElkKSkge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXG5cdFx0XHRcdFx0YEEgZGlyZWN0b3J5IGVudHJ5IHNwZWNpZmllcyBhbiBlbmRwb2ludCBtYXAgaW5wdXQgaWQgdGhhdCBkb2VzIG5vdCBleGlzdDogJHtlbmRwb2ludC5tYXAuaW5wdXRJZH0gYW5kIGl0IGNhbiB0aGVyZWZvcmUgbm90IGJlIGFkZGVkIGFzIGEgZGlyZWN0b3J5IGVuZHBvaW50LiBJZDogJHtlbmRwb2ludC5pZH1gLFxuXHRcdFx0XHRcdGVuZHBvaW50XG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGlmIChlbmRwb2ludC5tYXAub3V0cHV0SWQgJiYgIWVuZHBvaW50cy5oYXNFbmRwb2ludChlbmRwb2ludC5tYXAub3V0cHV0SWQpKSB7XG5cdFx0XHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFx0XHRgQSBkaXJlY3RvcnkgZW50cnkgc3BlY2lmaWVzIGFuIGVuZHBvaW50IG1hcCBvdXRwdXQgaWQgdGhhdCBkb2VzIG5vdCBleGlzdDogJHtlbmRwb2ludC5tYXAub3V0cHV0SWR9IGFuZCBpdCBjYW4gdGhlcmVmb3JlIG5vdCBiZSBhZGRlZCBhcyBhIGRpcmVjdG9yeSBlbmRwb2ludC4gSWQ6ICR7ZW5kcG9pbnQuaWR9YCxcblx0XHRcdFx0XHRlbmRwb2ludFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdCFpc0VtcHR5KGVuZHBvaW50Py51cmwpICYmXG5cdFx0XHQoZW5kcG9pbnQudXJsLnBhdGgudHJpbSgpLmxlbmd0aCA9PT0gMCB8fCAhZW5kcG9pbnQudXJsLnBhdGguc3RhcnRzV2l0aChcImh0dHBcIikpXG5cdFx0KSB7XG5cdFx0XHRsb2dnZXIuZXJyb3IoXG5cdFx0XHRcdGBBIGRpcmVjdG9yeSBlbnRyeSBzcGVjaWZpZXMgYW4gZW5kcG9pbnQgdXJsIHBhdGggdGhhdCBpcyBlaXRoZXIgbm90IHNwZWNpZmllZCBvciBpcyBpbiB0aGUgd3JvbmcgZm9ybWF0OiAke2VuZHBvaW50Py51cmw/LnBhdGh9IGFuZCBpdCBjYW4gdGhlcmVmb3JlIG5vdCBiZSBhZGRlZCBhcyBhIGRpcmVjdG9yeSBlbmRwb2ludC4gSWQ6ICR7ZW5kcG9pbnQuaWR9YCxcblx0XHRcdFx0ZW5kcG9pbnRcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGRpcmVjdG9yaWVzLnB1c2goZW5kcG9pbnQpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFJlbW92ZSBhIGRpcmVjdG9yeSBieSBpZC5cbiAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGRpcmVjdG9yeSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBkaXJlY3Rvcnkgd2FzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEaXJlY3RvcnkoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRjb25zdCB1cGRhdGVkRGlyZWN0b3J5TGlzdCA9IGRpcmVjdG9yaWVzLmZpbHRlcigoZW50cnkpID0+IGVudHJ5LmlkICE9PSBpZCk7XG5cdGlmICh1cGRhdGVkRGlyZWN0b3J5TGlzdC5sZW5ndGggPT09IGRpcmVjdG9yaWVzLmxlbmd0aCAtIDEpIHtcblx0XHRsb2dnZXIuZXJyb3IoYFVuYWJsZSB0byByZW1vdmUgZGlyZWN0b3J5IGVudHJ5IHdpdGggaWQ6ICR7aWR9IGFzIGl0IGRvZXNuJ3QgZXhpc3RgKTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRkaXJlY3RvcmllcyA9IHVwZGF0ZWREaXJlY3RvcnlMaXN0O1xuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGFwcHMgZnJvbSB0aGUgZGlyZWN0b3J5LlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgYXBwbGljYXRpb25zIGZyb20gdGhlIGRpcmVjdG9yaWVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UGxhdGZvcm1BcHBzKCk6IFByb21pc2U8UGxhdGZvcm1BcHBbXT4ge1xuXHRpZiAoZGlyZWN0b3JpZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG5cdGNvbnN0IGRpcmVjdG9yaWVzVG9DYWxsID0gWy4uLmRpcmVjdG9yaWVzXTtcblx0Y29uc3QgYXBwczogUGxhdGZvcm1BcHBbXSA9IFtdO1xuXG5cdGZvciAoY29uc3QgZGlyZWN0b3J5IG9mIGRpcmVjdG9yaWVzVG9DYWxsKSB7XG5cdFx0dHJ5IHtcblx0XHRcdGxvZ2dlci5pbmZvKGBGZXRjaGluZyBhcHBzIGZyb20gZGlyZWN0b3J5IGlkOiAke2RpcmVjdG9yeS5pZH0uYCk7XG5cdFx0XHRjb25zdCByZXRyaWV2ZWRBcHBzID0gYXdhaXQgZ2V0UmVzdWx0cyhkaXJlY3RvcnkpO1xuXHRcdFx0bG9nZ2VyLmluZm8oYEZldGNoZWQgJHtyZXRyaWV2ZWRBcHBzLmxlbmd0aH0gYXBwcyBmcm9tIGRpcmVjdG9yeSBpZDogJHtkaXJlY3RvcnkuaWR9LmApO1xuXHRcdFx0YXBwcy5wdXNoKC4uLnJldHJpZXZlZEFwcHMpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRsb2dnZXIuZXJyb3IoYEVycm9yIGZldGNoaW5nIGFwcHMgZnJvbSBkaXJlY3RvcnkgJHtKU09OLnN0cmluZ2lmeShkaXJlY3RvcnkpfWAsIGVycm9yKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gYXBwcztcbn1cblxuLyoqXG4gKiBHZXQgYSBsaXN0IG9mIHBsYXRmb3JtIGFwcHMgbWFwcGVkIGZyb20gZGlmZmVyZW50IGZvcm1hdHMuXG4gKiBAcGFyYW0gcmVzdWx0cyBUaGUgcmVzdWx0IHRvIG1hcCB0byBwbGF0Zm9ybSBhcHBzLlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgbWFwcGVkIGFwcHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEFwcHMocmVzdWx0czogRGlyZWN0b3J5QXBwcyk6IFByb21pc2U8UGxhdGZvcm1BcHBbXT4ge1xuXHRpZiAoQXJyYXkuaXNBcnJheShyZXN1bHRzKSkge1xuXHRcdGNvbnN0IG9wZW5maW5BcHBzID0gbWFwT3BlbkZpblJlc3VsdHMocmVzdWx0cyk7XG5cdFx0cmV0dXJuIG9wZW5maW5BcHBzO1xuXHR9IGVsc2UgaWYgKHJlc3VsdHMubWV0YWRhdGE/LnR5cGUgPT09IFwiZmRjM1wiICYmICFpc0VtcHR5KHJlc3VsdHM/Lm1ldGFkYXRhPy52ZXJzaW9uKSkge1xuXHRcdGNvbnN0IHZlcnNpb24gPSByZXN1bHRzLm1ldGFkYXRhLnZlcnNpb247XG5cdFx0c3dpdGNoICh2ZXJzaW9uKSB7XG5cdFx0XHRjYXNlIFwiMS4yXCI6IHtcblx0XHRcdFx0cmV0dXJuIChyZXN1bHRzIGFzIEZEQzNWT25lUG9pbnRUd29BcHBEaXJlY3RvcnlSZXNwb25zZSkuYXBwbGljYXRpb25zLm1hcCgoYSkgPT5cblx0XHRcdFx0XHRtYXBGREMzT25lUG9pbnRUd29Ub1BsYXRmb3JtQXBwKGEpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiMi4wXCI6IHtcblx0XHRcdFx0cmV0dXJuIChyZXN1bHRzIGFzIEZEQzNWVHdvUG9pbnRaZXJvQXBwRGlyZWN0b3J5UmVzcG9uc2UpLmFwcGxpY2F0aW9ucy5tYXAoKGEpID0+XG5cdFx0XHRcdFx0bWFwRkRDM1R3b1BvaW50WmVyb1RvUGxhdGZvcm1BcHAoYSlcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGRlZmF1bHQ6IHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBVbmtub3duL1Vuc3VwcG9ydGVkIEZEQzMgdmVyc2lvbiBzcGVjaWZpZWQ6ICR7dmVyc2lvbn1gKTtcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHRzLmFwcGxpY2F0aW9ucykgJiYgcmVzdWx0cy5hcHBsaWNhdGlvbnMubGVuZ3RoID4gMCkge1xuXHRcdGlmIChcInR5cGVcIiBpbiByZXN1bHRzLmFwcGxpY2F0aW9uc1swXSkge1xuXHRcdFx0cmV0dXJuIChyZXN1bHRzIGFzIEZEQzNWVHdvUG9pbnRaZXJvQXBwRGlyZWN0b3J5UmVzcG9uc2UpLmFwcGxpY2F0aW9ucy5tYXAoKGEpID0+XG5cdFx0XHRcdG1hcEZEQzNUd29Qb2ludFplcm9Ub1BsYXRmb3JtQXBwKGEpXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gKHJlc3VsdHMgYXMgRkRDM1ZPbmVQb2ludFR3b0FwcERpcmVjdG9yeVJlc3BvbnNlKS5hcHBsaWNhdGlvbnMubWFwKChhKSA9PlxuXHRcdFx0bWFwRkRDM09uZVBvaW50VHdvVG9QbGF0Zm9ybUFwcChhKVxuXHRcdCk7XG5cdH1cblx0cmV0dXJuIFtdO1xufVxuXG4vKipcbiAqIE1hcCBwbGF0Zm9ybSBhcHBzIGZyb20gdGhlIE9wZW5GaW4gZm9ybWF0IHRvIHN0YW5kYXJkIFBsYXRmb3JtQXBwLlxuICogQHBhcmFtIGFwcGxpY2F0aW9ucyBUaGUgYXBwbGljYXRpb25zIHRvIG1hcC5cbiAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIG1hcHBlZCBhcHBsaWNhdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIG1hcE9wZW5GaW5SZXN1bHRzKGFwcGxpY2F0aW9uczogUGxhdGZvcm1BcHBbXSk6IFBsYXRmb3JtQXBwW10ge1xuXHRjb25zdCBwbGF0Zm9ybUFwcHM6IFBsYXRmb3JtQXBwW10gPSBbXTtcblxuXHRmb3IgKGNvbnN0IGFwcCBvZiBhcHBsaWNhdGlvbnMpIHtcblx0XHRpZiAoQXJyYXkuaXNBcnJheShhcHAuaW50ZW50cykgJiYgaXNFbXB0eShhcHAuaW50ZXJvcCkpIHtcblx0XHRcdGFwcC5pbnRlcm9wID0gbWFwSW50ZXJvcEZyb21GREMzKGFwcC5pbnRlbnRzKTtcblx0XHR9IGVsc2UgaWYgKCFpc0VtcHR5KGFwcC5pbnRlcm9wKSAmJiAhQXJyYXkuaXNBcnJheShhcHAuaW50ZW50cykpIHtcblx0XHRcdGFwcC5pbnRlbnRzID0gbWFwSW50ZW50c0Zyb21GREMzKGFwcC5pbnRlcm9wKTtcblx0XHR9XG5cdFx0cGxhdGZvcm1BcHBzLnB1c2goYXBwKTtcblx0fVxuXG5cdHJldHVybiBwbGF0Zm9ybUFwcHM7XG59XG5cbi8qKlxuICogR2V0IGEgbGlzdCBmb3IgdGhlIHBsYXRmb3JtIGFwcHMgZnJvbSB0aGUgZW5kcG9pbnRzLlxuICogQHBhcmFtIGRpcmVjdG9yeUVuZHBvaW50IFRoZSBkaXJlY3RvcnkgdG8gdXNlIGZvciB0aGUgYXBwbGljYXRpb24uXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBhcHBsaWNhdGlvbiBmcm9tIHRoZSBlbmRwb2ludC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0UmVzdWx0cyhkaXJlY3RvcnlFbmRwb2ludDogRGlyZWN0b3J5RW5kcG9pbnQpOiBQcm9taXNlPFBsYXRmb3JtQXBwW10+IHtcblx0aWYgKGVuZHBvaW50cykge1xuXHRcdGlmICghaXNFbXB0eShkaXJlY3RvcnlFbmRwb2ludC5lbmRwb2ludElkKSkge1xuXHRcdFx0bG9nZ2VyLmluZm8oYEZldGNoaW5nIGFwcHMgZnJvbSBlbmRwb2ludCBpZDogJHtkaXJlY3RvcnlFbmRwb2ludC5lbmRwb2ludElkfS5gKTtcblx0XHRcdGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBlbmRwb2ludHMucmVxdWVzdFJlc3BvbnNlPG5ldmVyLCBEaXJlY3RvcnlBcHBzPihkaXJlY3RvcnlFbmRwb2ludC5lbmRwb2ludElkKTtcblx0XHRcdGlmIChyZXN1bHRzKSB7XG5cdFx0XHRcdHJldHVybiBnZXRBcHBzKHJlc3VsdHMpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoIWlzRW1wdHkoZGlyZWN0b3J5RW5kcG9pbnQudXJsKSkge1xuXHRcdFx0bG9nZ2VyLmluZm8oYEZldGNoaW5nIGFwcHMgZnJvbSB1cmw6ICR7ZGlyZWN0b3J5RW5kcG9pbnQudXJsLnBhdGh9YCk7XG5cdFx0XHRjb25zdCByZXNwID0gYXdhaXQgZmV0Y2goZGlyZWN0b3J5RW5kcG9pbnQudXJsLnBhdGgsIHtcblx0XHRcdFx0Y3JlZGVudGlhbHM6IGRpcmVjdG9yeUVuZHBvaW50LnVybC5jcmVkZW50aWFsc1xuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCByZXN1bHRzOlxuXHRcdFx0XHR8IFBsYXRmb3JtQXBwW11cblx0XHRcdFx0fCBGREMzVlR3b1BvaW50WmVyb0FwcERpcmVjdG9yeVJlc3BvbnNlXG5cdFx0XHRcdHwgRkRDM1ZPbmVQb2ludFR3b0FwcERpcmVjdG9yeVJlc3BvbnNlID0gYXdhaXQgcmVzcC5qc29uKCk7XG5cdFx0XHRyZXR1cm4gZ2V0QXBwcyhyZXN1bHRzKTtcblx0XHR9IGVsc2UgaWYgKCFpc0VtcHR5KGRpcmVjdG9yeUVuZHBvaW50Lm1hcCkpIHtcblx0XHRcdGlmICghZGlyZWN0b3J5RW5kcG9pbnQubWFwLm91dHB1dElkKSB7XG5cdFx0XHRcdGxvZ2dlci5lcnJvcihgTWFwcGluZyBmcm9tIEFwcCBTb3VyY2U6ICR7ZGlyZWN0b3J5RW5kcG9pbnQubWFwLmlucHV0SWR9IGhhcyBubyBvdXRwdXRJZGApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFx0YE1hcHBpbmcgZnJvbSBBcHAgU291cmNlOiAke2RpcmVjdG9yeUVuZHBvaW50Lm1hcC5pbnB1dElkfSB0byBQbGF0Zm9ybSBBcHAgdXNpbmc6ICR7ZGlyZWN0b3J5RW5kcG9pbnQubWFwLm91dHB1dElkfWBcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3QgaW5wdXRSZXN1bHRzID0gYXdhaXQgZW5kcG9pbnRzLnJlcXVlc3RSZXNwb25zZTxuZXZlciwgdW5rbm93bj4oZGlyZWN0b3J5RW5kcG9pbnQubWFwLmlucHV0SWQpO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgUmVjZWl2ZWQgcmVzcG9uc2UgZnJvbSAke2RpcmVjdG9yeUVuZHBvaW50Lm1hcC5pbnB1dElkfWApO1xuXHRcdFx0XHRjb25zdCBvdXRwdXRSZXN1bHRzID0gYXdhaXQgZW5kcG9pbnRzLnJlcXVlc3RSZXNwb25zZTx1bmtub3duLCBEaXJlY3RvcnlBcHBzPihcblx0XHRcdFx0XHRkaXJlY3RvcnlFbmRwb2ludC5tYXAub3V0cHV0SWQsXG5cdFx0XHRcdFx0aW5wdXRSZXN1bHRzXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKG91dHB1dFJlc3VsdHMpIHtcblx0XHRcdFx0XHRyZXR1cm4gZ2V0QXBwcyhvdXRwdXRSZXN1bHRzKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGxvZ2dlci5lcnJvcihcblx0XHRgRGlyZWN0b3J5IGVudHJ5ICR7ZGlyZWN0b3J5RW5kcG9pbnQuaWR9IGRvZXMgbm90IGhhdmUgYW55IHN1cHBvcnRlZCB3YXkgb2YgZmV0Y2hpbmcgYXBwbGljYXRpb25zLmBcblx0KTtcblx0cmV0dXJuIFtdO1xufVxuIiwiaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBpbml0aWFsaXplTW9kdWxlcywgbG9hZE1vZHVsZXMgfSBmcm9tIFwiLi9tb2R1bGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEVuZHBvaW50LFxuXHRFbmRwb2ludERlZmluaXRpb24sXG5cdEVuZHBvaW50UHJvdmlkZXJPcHRpb25zLFxuXHRGZXRjaE9wdGlvbnNcbn0gZnJvbSBcIi4vc2hhcGVzL2VuZHBvaW50LXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVFbnRyeSwgTW9kdWxlSGVscGVycyB9IGZyb20gXCIuL3NoYXBlcy9tb2R1bGUtc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5LCBpc1N0cmluZ1ZhbHVlLCBvYmplY3RDbG9uZSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFNVUFBPUlRFRF9IVFRQX01FVEhPRFM6IHN0cmluZ1tdID0gW1wiR0VUXCIsIFwiUE9TVFwiLCBcIkRFTEVURVwiLCBcIlBVVFwiLCBcIlBBVENIXCJdO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJFbmRwb2ludFwiKTtcbmNvbnN0IGVuZHBvaW50RGVmaW5pdGlvbnM6IEVuZHBvaW50RGVmaW5pdGlvbltdID0gW107XG5sZXQgbW9kdWxlczogTW9kdWxlRW50cnk8RW5kcG9pbnQ+W10gPSBbXTtcblxuLyoqXG4gKiBJbml0aWFsaXplIHRoZSBlbmRwb2ludCBwcm92aWRlci5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgZW5kcG9pbnQgcHJvdmlkZXIuXG4gKiBAcGFyYW0gaGVscGVycyBNb2R1bGUgaGVscGVycyB0byBwYXNzIHRvIGFueSBsb2FkZWQgbW9kdWxlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQoXG5cdG9wdGlvbnM6IEVuZHBvaW50UHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkLFxuXHRoZWxwZXJzOiBNb2R1bGVIZWxwZXJzXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKG9wdGlvbnMpIHtcblx0XHRjb25zdCBuZXdFbmRwb2ludHMgPSBvcHRpb25zLmVuZHBvaW50cyA/PyBbXTtcblxuXHRcdGlmIChuZXdFbmRwb2ludHMubGVuZ3RoID4gMCkge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJBZGRpbmcgdGhlIGZvbGxvd2luZyBlbmRwb2ludHMgdG8gdGhlIGVuZHBvaW50IHByb3ZpZGVyXCIsIG5ld0VuZHBvaW50cyk7XG5cdFx0XHRlbmRwb2ludERlZmluaXRpb25zLnB1c2goLi4ubmV3RW5kcG9pbnRzKTtcblx0XHR9XG5cblx0XHRtb2R1bGVzID0gYXdhaXQgbG9hZE1vZHVsZXM8bmV2ZXIsIEVuZHBvaW50PihvcHRpb25zLCBcImVuZHBvaW50XCIpO1xuXHRcdGF3YWl0IGluaXRpYWxpemVNb2R1bGVzKG1vZHVsZXMsIGhlbHBlcnMpO1xuXHR9XG59XG5cbi8qKlxuICogRG9lcyB0aGUgZW5kcG9pbnQgd2l0aCB0aGUgc3BlY2lmaWVkIGlkIGV4aXN0LlxuICogQHBhcmFtIGlkIFRoZSBpZCB0byBjaGVjayBmb3IgZXhpc3RlbmNlLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZW5kcG9pbnQgZXhpc3RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzRW5kcG9pbnQoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gZW5kcG9pbnREZWZpbml0aW9ucy5zb21lKChlbnRyeSkgPT4gZW50cnkuaWQgPT09IGlkKTtcbn1cblxuLyoqXG4gKiBQZXJmb3JtIGFuIGFjdGlvbiBvbiBhbiBlbmRwb2ludC5cbiAqIEBwYXJhbSBlbmRwb2ludElkIFRoZSBpZCBvZiB0aGUgZW5kcG9pbnQgdG8gcGVyZm9ybSB0aGUgYWN0aW9uIG9uLlxuICogQHBhcmFtIHJlcXVlc3QgVGhlIHJlcXVlc3QgdG8gc2VuZC5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGFjdGlvbiB3YXMgcGVyZm9ybWVkIHN1Y2Nlc3NmdWxseS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbjxUPihlbmRwb2ludElkOiBzdHJpbmcsIHJlcXVlc3Q/OiBUKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGNvbnN0IGVuZHBvaW50ID0gZ2V0RW5kcG9pbnREZWZpbml0aW9uKGVuZHBvaW50SWQpO1xuXG5cdGlmIChpc0VtcHR5KGVuZHBvaW50KSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGNvbnN0IGVuZHBvaW50VHlwZSA9IGVuZHBvaW50LnR5cGU7XG5cblx0Ly8gY3VycmVudGx5IG9ubHkgZmV0Y2ggaXMgc3VwcG9ydGVkIGJ1dCB5b3UgY291bGQgbG9hZCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9mIHRoaXMgaW50ZW50IGJhc2VkIG9uIHR5cGVcblx0aWYgKGVuZHBvaW50VHlwZSA9PT0gXCJmZXRjaFwiKSB7XG5cdFx0Y29uc3QgeyB1cmwsIC4uLm9wdGlvbnMgfSA9IGVuZHBvaW50Lm9wdGlvbnM7XG5cdFx0aWYgKHVybCkge1xuXHRcdFx0Y29uc3QgcmVxID0gZ2V0UmVxdWVzdE9wdGlvbnModXJsLCBvcHRpb25zLCByZXF1ZXN0KTtcblx0XHRcdGlmICghaXNTdHJpbmdWYWx1ZShyZXEub3B0aW9ucy5tZXRob2QpIHx8ICFTVVBQT1JURURfSFRUUF9NRVRIT0RTLmluY2x1ZGVzKHJlcS5vcHRpb25zLm1ldGhvZCkpIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0YCR7ZW5kcG9pbnRJZH0gc3BlY2lmaWVzIGEgdHlwZTogJHtlbmRwb2ludFR5cGV9IHdpdGggYSBtZXRob2QgJHtyZXEub3B0aW9ucy5tZXRob2R9IHRoYXQgaXMgbm90IHN1cHBvcnRlZC5gXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2gocmVxLnVybCwgcmVxLm9wdGlvbnMpO1xuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2Uub2s7XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0bG9nZ2VyLmVycm9yKGAke2VuZHBvaW50SWR9IGFjdGlvbiByZXR1cm5lZCBhbiBlcnJvciBkdXJpbmcgZmV0Y2hgLCBlcnIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGlmIChlbmRwb2ludFR5cGUgPT09IFwibW9kdWxlXCIpIHtcblx0XHRjb25zdCByZXNvbHZlZEVuZHBvaW50ID0gYXdhaXQgZ2V0TW9kdWxlRW5kcG9pbnQoZW5kcG9pbnQudHlwZUlkKTtcblxuXHRcdGlmICghcmVzb2x2ZWRFbmRwb2ludD8uYWN0aW9uKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiByZXNvbHZlZEVuZHBvaW50LmFjdGlvbihlbmRwb2ludCwgcmVxdWVzdCk7XG5cdH1cblx0bG9nZ2VyLndhcm4oYCR7ZW5kcG9pbnRJZH0gc3BlY2lmaWVzIGEgdHlwZTogJHtlbmRwb2ludFR5cGV9IHRoYXQgaXMgbm90IHN1cHBvcnRlZGApO1xuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogUGVyZm9ybSBhIHJlcXVlc3QvcmVzcG9uc2Ugb24gYW4gZW5kcG9pbnQuXG4gKiBAcGFyYW0gZW5kcG9pbnRJZCBUaGUgaWQgb2YgdGhlIGVuZHBvaW50IHRvIHBlcmZvcm0gdGhlIHJlcXVlc3QvcmVzcG9uc2Ugb24uXG4gKiBAcGFyYW0gcmVxdWVzdCBUaGUgcmVxdWVzdCB0byBzZW5kLlxuICogQHJldHVybnMgVGhlIHJlc3BvbnNlIGZyb20gdGhlIGVuZHBvaW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVxdWVzdFJlc3BvbnNlPFQsIFI+KGVuZHBvaW50SWQ6IHN0cmluZywgcmVxdWVzdD86IFQpOiBQcm9taXNlPFIgfCB1bmRlZmluZWQ+IHtcblx0Y29uc3QgZW5kcG9pbnQgPSBlbmRwb2ludERlZmluaXRpb25zLmZpbmQoKGVudHJ5KSA9PiBlbnRyeS5pZCA9PT0gZW5kcG9pbnRJZCk7XG5cblx0aWYgKGlzRW1wdHkoZW5kcG9pbnQpKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3QgZW5kcG9pbnRUeXBlID0gZW5kcG9pbnQudHlwZTtcblxuXHQvLyBjdXJyZW50bHkgb25seSBmZXRjaCBpcyBzdXBwb3J0ZWQgYnV0IHlvdSBjb3VsZCBsb2FkIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBpbnRlbnQgYmFzZWQgb24gdHlwZVxuXHRpZiAoZW5kcG9pbnRUeXBlID09PSBcImZldGNoXCIpIHtcblx0XHRjb25zdCB7IHVybCwgLi4ub3B0aW9ucyB9ID0gZW5kcG9pbnQub3B0aW9ucztcblx0XHRpZiAodXJsKSB7XG5cdFx0XHRjb25zdCByZXEgPSBnZXRSZXF1ZXN0T3B0aW9ucyh1cmwsIG9wdGlvbnMsIHJlcXVlc3QpO1xuXHRcdFx0aWYgKCFpc1N0cmluZ1ZhbHVlKHJlcS5vcHRpb25zLm1ldGhvZCkgfHwgIVNVUFBPUlRFRF9IVFRQX01FVEhPRFMuaW5jbHVkZXMocmVxLm9wdGlvbnMubWV0aG9kKSkge1xuXHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRgJHtlbmRwb2ludElkfSBzcGVjaWZpZXMgYSB0eXBlOiAke2VuZHBvaW50VHlwZX0gd2l0aCBhIG1ldGhvZCAke3JlcS5vcHRpb25zLm1ldGhvZH0gdGhhdCBpcyBub3Qgc3VwcG9ydGVkLmBcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZXEudXJsLCByZXEub3B0aW9ucyk7XG5cblx0XHRcdFx0aWYgKHJlc3BvbnNlLm9rKSB7XG5cdFx0XHRcdFx0Y29uc3QganNvbiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblx0XHRcdFx0XHRyZXR1cm4ganNvbiBhcyBSO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0bG9nZ2VyLmVycm9yKGAke2VuZHBvaW50SWR9IHJlcXVlc3RSZXNwb25zZSByZXR1cm5lZCBhbiBlcnJvciBkdXJpbmcgZmV0Y2hgLCBlcnIpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm47XG5cdH0gZWxzZSBpZiAoZW5kcG9pbnRUeXBlID09PSBcIm1vZHVsZVwiKSB7XG5cdFx0Y29uc3QgcmVzb2x2ZWRFbmRwb2ludCA9IGF3YWl0IGdldE1vZHVsZUVuZHBvaW50KGVuZHBvaW50LnR5cGVJZCk7XG5cblx0XHRpZiAoIXJlc29sdmVkRW5kcG9pbnQ/LnJlcXVlc3RSZXNwb25zZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRyZXR1cm4gcmVzb2x2ZWRFbmRwb2ludC5yZXF1ZXN0UmVzcG9uc2UoZW5kcG9pbnQsIHJlcXVlc3QpIGFzIFI7XG5cdH1cblx0bG9nZ2VyLndhcm4oYCR7ZW5kcG9pbnRJZH0gc3BlY2lmaWVzIGEgdHlwZTogJHtlbmRwb2ludFR5cGV9IHRoYXQgaXMgbm90IHN1cHBvcnRlZGApO1xufVxuXG4vKipcbiAqIEdldCBhIG1vZHVsZSBlbmRwb2ludCBieSBpdHMgaWQuXG4gKiBAcGFyYW0gbW9kdWxlSWQgVGhlIG1vZHVsZSBpZCB0byBnZXQgdGhlIGVuZHBvaW50IGZvci5cbiAqIEByZXR1cm5zIFRoZSBlbmRwb2ludCBmb3IgdGhlIG1vZHVsZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TW9kdWxlRW5kcG9pbnQobW9kdWxlSWQ6IHN0cmluZyk6IFByb21pc2U8RW5kcG9pbnQgfCB1bmRlZmluZWQ+IHtcblx0Y29uc3QgZW5kcG9pbnRzID0gbW9kdWxlcy5maW5kKChlbnRyeSkgPT4gZW50cnkuZGVmaW5pdGlvbi5pZCA9PT0gbW9kdWxlSWQpO1xuXG5cdGlmIChpc0VtcHR5KGVuZHBvaW50cykpIHtcblx0XHRsb2dnZXIud2FybihgU3BlY2lmaWVkIEVuZHBvaW50IE1vZHVsZSBJZDogJHttb2R1bGVJZH0gaXMgbm90IGF2YWlsYWJsZWApO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHJldHVybiBlbmRwb2ludHMuaW1wbGVtZW50YXRpb247XG59XG5cbi8qKlxuICogR2V0IHRoZSBlbmRwb2ludCBkZWZpbml0aW9uLlxuICogQHBhcmFtIGVuZHBvaW50SWQgVGhlIGVuZHBvaW50IGlkIHRvIGdldCB0aGUgZGVmaW5pdGlvbiBmb3IuXG4gKiBAcmV0dXJucyBUaGUgZW5kcG9pbnQgZGVmaW5pdGlvbi5cbiAqL1xuZnVuY3Rpb24gZ2V0RW5kcG9pbnREZWZpbml0aW9uKGVuZHBvaW50SWQ6IHN0cmluZyk6IEVuZHBvaW50RGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IGVuZHBvaW50ID0gZW5kcG9pbnREZWZpbml0aW9ucy5maW5kKChlbnRyeSkgPT4gZW50cnkuaWQgPT09IGVuZHBvaW50SWQpO1xuXG5cdGlmIChpc0VtcHR5KGVuZHBvaW50KSkge1xuXHRcdGxvZ2dlci53YXJuKGBTcGVjaWZpZWQgRW5kcG9pbnQgSWQgJHtlbmRwb2ludElkfSBpcyBub3QgYXZhaWxhYmxlYCk7XG5cdH1cblxuXHRyZXR1cm4gZW5kcG9pbnQ7XG59XG5cbi8qKlxuICogR2V0IHRoZSByZXF1ZXN0IG9wdGlvbnMgZnJvbSB0aGUgZmV0Y2ggb3B0aW9ucy5cbiAqIEBwYXJhbSB1cmwgVGhlIHVybC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBmZXRjaCBvcHRpb25zLlxuICogQHBhcmFtIHJlcXVlc3QgVGhlIHF1ZXN0aW9uIHRvIGdldCB0aGUgb3B0aW9ucyBmb3JtLlxuICogQHJldHVybnMgVGhlIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0LlxuICovXG5mdW5jdGlvbiBnZXRSZXF1ZXN0T3B0aW9ucyhcblx0dXJsOiBzdHJpbmcsXG5cdG9wdGlvbnM6IEZldGNoT3B0aW9ucyxcblx0cmVxdWVzdDogdW5rbm93blxuKTogeyB1cmw6IHN0cmluZzsgb3B0aW9uczogRmV0Y2hPcHRpb25zIH0ge1xuXHRjb25zdCByZXF1ZXN0Q2xvbmUgPSBvYmplY3RDbG9uZShyZXF1ZXN0KSBhcyB7IFtpZDogc3RyaW5nXTogc3RyaW5nIH07XG5cblx0aWYgKCFpc0VtcHR5KHJlcXVlc3RDbG9uZSkpIHtcblx0XHQvLyBSZXBsYWNlIGFueSB1cmwgcGFyYW1zIHdpdGggcmVxdWVzdCBvYmplY3QgcGFyYW1ldGVyc1xuXHRcdC8vIGFuZCByZW1vdmUgdGhlbSBmcm9tIHRoZSByZXF1ZXN0Q2xvbmUgZm9yIGFsbCBIVFRQIG1ldGhvZHNcblx0XHRjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVxdWVzdENsb25lKTtcblx0XHRmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG5cdFx0XHRjb25zdCBzdWJzdGl0dXRlS2V5ID0gYFske2tleX1dYDtcblx0XHRcdGlmICh1cmwuaW5jbHVkZXMoc3Vic3RpdHV0ZUtleSkpIHtcblx0XHRcdFx0dXJsID0gdXJsLnJlcGxhY2Uoc3Vic3RpdHV0ZUtleSwgZW5jb2RlVVJJQ29tcG9uZW50KHJlcXVlc3RDbG9uZVtrZXldKSk7XG5cdFx0XHRcdGRlbGV0ZSByZXF1ZXN0Q2xvbmVba2V5XTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRvcHRpb25zLmhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgPz8ge307XG5cdFx0b3B0aW9ucy5oZWFkZXJzLkFjY2VwdCA9IFwiYXBwbGljYXRpb24vanNvblwiO1xuXG5cdFx0Ly8gU2VuZCB0aGUgYm9keSBhcyBKU09OIG9ubHkgZm9yIHBvc3QsIHB1dCBhbmQgcGF0Y2hcblx0XHRpZiAob3B0aW9ucy5tZXRob2QgPT09IFwiUE9TVFwiIHx8IG9wdGlvbnMubWV0aG9kID09PSBcIlBVVFwiIHx8IG9wdGlvbnMubWV0aG9kID09PSBcIlBBVENIXCIpIHtcblx0XHRcdG9wdGlvbnMuYm9keSA9IEpTT04uc3RyaW5naWZ5KHJlcXVlc3RDbG9uZSk7XG5cdFx0XHRvcHRpb25zLmhlYWRlcnNbXCJDb250ZW50LVR5cGVcIl0gPSBcImFwcGxpY2F0aW9uL2pzb25cIjtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4geyB1cmwsIG9wdGlvbnMgfTtcbn1cbiIsImltcG9ydCB7IGdldEN1cnJlbnRTeW5jIH0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZS1wbGF0Zm9ybVwiO1xuaW1wb3J0ICogYXMgY29uZGl0aW9uc1Byb3ZpZGVyIGZyb20gXCIuL2NvbmRpdGlvbnNcIjtcbmltcG9ydCB7IGZpcmVMaWZlY3ljbGVFdmVudCB9IGZyb20gXCIuL2xpZmVjeWNsZVwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50UHJvdmlkZXIgfSBmcm9tIFwiLi9zaGFwZXMvZW5kcG9pbnQtc2hhcGVzXCI7XG5pbXBvcnQge1xuXHRGQVZPUklURV9UWVBFX05BTUVfQVBQLFxuXHRGQVZPUklURV9UWVBFX05BTUVfUEFHRSxcblx0RkFWT1JJVEVfVFlQRV9OQU1FX1FVRVJZLFxuXHRGQVZPUklURV9UWVBFX05BTUVfV09SS1NQQUNFLFxuXHR0eXBlIEVuZHBvaW50RmF2b3JpdGVHZXRSZXF1ZXN0LFxuXHR0eXBlIEVuZHBvaW50RmF2b3JpdGVHZXRSZXNwb25zZSxcblx0dHlwZSBFbmRwb2ludEZhdm9yaXRlTGlzdFJlcXVlc3QsXG5cdHR5cGUgRW5kcG9pbnRGYXZvcml0ZUxpc3RSZXNwb25zZSxcblx0dHlwZSBFbmRwb2ludEZhdm9yaXRlUmVtb3ZlUmVxdWVzdCxcblx0dHlwZSBFbmRwb2ludEZhdm9yaXRlU2V0UmVxdWVzdCxcblx0dHlwZSBGYXZvcml0ZUVudHJ5LFxuXHR0eXBlIEZhdm9yaXRlSW5mbyxcblx0dHlwZSBGYXZvcml0ZVByb3ZpZGVyT3B0aW9ucyxcblx0dHlwZSBGYXZvcml0ZVR5cGVOYW1lc1xufSBmcm9tIFwiLi9zaGFwZXMvZmF2b3JpdGUtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IEZhdm9yaXRlQ2hhbmdlZExpZmVjeWNsZVBheWxvYWQgfSBmcm9tIFwiLi9zaGFwZXMvbGlmZWN5Y2xlLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBWZXJzaW9uSW5mbyB9IGZyb20gXCIuL3NoYXBlcy92ZXJzaW9uLXNoYXBlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIkZhdm9yaXRlc1wiKTtcblxubGV0IGlzSW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxubGV0IGZhdm9yaXRlT3B0aW9uczogRmF2b3JpdGVQcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQ7XG5cbmxldCBlbmRwb2ludHM6IEVuZHBvaW50UHJvdmlkZXI7XG5cbmxldCBjdXJyZW50VmVyc2lvbkluZm86IFZlcnNpb25JbmZvO1xuXG5jb25zdCBGQVZPUklURV9FTkRQT0lOVF9JRF9MSVNUID0gXCJmYXZvcml0ZS1saXN0XCI7XG5jb25zdCBGQVZPUklURV9FTkRQT0lOVF9JRF9HRVQgPSBcImZhdm9yaXRlLWdldFwiO1xuY29uc3QgRkFWT1JJVEVfRU5EUE9JTlRfSURfU0VUID0gXCJmYXZvcml0ZS1zZXRcIjtcbmNvbnN0IEZBVk9SSVRFX0VORFBPSU5UX0lEX1JFTU9WRSA9IFwiZmF2b3JpdGUtcmVtb3ZlXCI7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgZmF2b3JpdGUgcHJvdmlkZXIuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgZmF2b3JpdGUgcHJvdmlkZXIuXG4gKiBAcGFyYW0gdmVyc2lvbkluZm8gVGhlIGN1cnJlbnQgdmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgdGhpcyBwbGF0Zm9ybS5cbiAqIEBwYXJhbSBlbmRwb2ludFByb3ZpZGVyIFRoZSBlbmRwb2ludCBwcm92aWRlciB0byBoZWxwIHJldHJpZXZlIGZhdm9yaXRlcyBmcm9tIGVuZHBvaW50cy5cbiAqIEByZXR1cm5zIE5vdGhpbmcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KFxuXHRvcHRpb25zOiBGYXZvcml0ZVByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCxcblx0dmVyc2lvbkluZm86IFZlcnNpb25JbmZvLFxuXHRlbmRwb2ludFByb3ZpZGVyOiBFbmRwb2ludFByb3ZpZGVyXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKGlzSW5pdGlhbGl6ZWQpIHtcblx0XHRsb2dnZXIud2FybihcIlRoZSBmYXZvcml0ZSBzZXJ2aWNlIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWRcIik7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGN1cnJlbnRWZXJzaW9uSW5mbyA9IHZlcnNpb25JbmZvO1xuXHRlbmRwb2ludHMgPSBlbmRwb2ludFByb3ZpZGVyO1xuXHRpZiAoIWlzRW1wdHkob3B0aW9ucykpIHtcblx0XHRpc0luaXRpYWxpemVkID0gdHJ1ZTtcblx0XHRmYXZvcml0ZU9wdGlvbnMgPSBvcHRpb25zO1xuXHR9IGVsc2Uge1xuXHRcdGxvZ2dlci53YXJuKFwiT3B0aW9ucyB3ZXJlIG5vdCBwYXNzZWQgdG8gdGhlIGZhdm9yaXRlIHByb3ZpZGVyIHNvIGl0IGNhbm5vdCBiZSBpbml0aWFsaXplZC5cIik7XG5cdH1cblxuXHRjb25kaXRpb25zUHJvdmlkZXIucmVnaXN0ZXJDb25kaXRpb24oXCJmYXZvcml0ZXNcIiwgYXN5bmMgKCkgPT4gb3B0aW9ucz8uZW5hYmxlZCA/PyBmYWxzZSk7XG5cblx0Zm9yIChjb25zdCB0eXBlIG9mIFtcblx0XHRGQVZPUklURV9UWVBFX05BTUVfQVBQLFxuXHRcdEZBVk9SSVRFX1RZUEVfTkFNRV9XT1JLU1BBQ0UsXG5cdFx0RkFWT1JJVEVfVFlQRV9OQU1FX1BBR0UsXG5cdFx0RkFWT1JJVEVfVFlQRV9OQU1FX1FVRVJZXG5cdF0pIHtcblx0XHRjb25kaXRpb25zUHJvdmlkZXIucmVnaXN0ZXJDb25kaXRpb24oXG5cdFx0XHRgZmF2b3JpdGVzLSR7dHlwZX1gLFxuXHRcdFx0YXN5bmMgKCkgPT5cblx0XHRcdFx0KG9wdGlvbnM/LmVuYWJsZWQgPz8gZmFsc2UpICYmXG5cdFx0XHRcdChpc0VtcHR5KG9wdGlvbnM/LnN1cHBvcnRlZEZhdm9yaXRlVHlwZXMpIHx8XG5cdFx0XHRcdFx0KG9wdGlvbnM/LnN1cHBvcnRlZEZhdm9yaXRlVHlwZXMgPz8gW10pLmluY2x1ZGVzKHR5cGUgYXMgRmF2b3JpdGVUeXBlTmFtZXMpKVxuXHRcdCk7XG5cdH1cbn1cblxuLyoqXG4gKiBMZXRzIHlvdSBnZXQgZmF2b3JpdGVzIHRoYXQgaGF2ZSBiZWVuIHNhdmVkLlxuICogQHBhcmFtIGJ5VHlwZSBkbyB5b3Ugd2lzaCB0byBmaWx0ZXIgc28gaXQgb25seSByZXR1cm5zIGEgcGFydGljdWxhciB0eXBlIG9mIGZhdm9yaXRlXG4gKiBAcmV0dXJucyBhbiBhcnJheSBvZiBmYXZvcml0ZXMgb3IgdW5kZWZpbmVkIGlmIHRoZSBlbmRwb2ludCBpcyBub3QgY29uZmlndXJlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNhdmVkRmF2b3JpdGVzKGJ5VHlwZT86IEZhdm9yaXRlVHlwZU5hbWVzKTogUHJvbWlzZTxGYXZvcml0ZUVudHJ5W10gfCB1bmRlZmluZWQ+IHtcblx0aWYgKGVuZHBvaW50cy5oYXNFbmRwb2ludChGQVZPUklURV9FTkRQT0lOVF9JRF9MSVNUKSkge1xuXHRcdGNvbnN0IGZhdm9yaXRlcyA9IGF3YWl0IGVuZHBvaW50cy5yZXF1ZXN0UmVzcG9uc2U8XG5cdFx0XHRFbmRwb2ludEZhdm9yaXRlTGlzdFJlcXVlc3QsXG5cdFx0XHRFbmRwb2ludEZhdm9yaXRlTGlzdFJlc3BvbnNlXG5cdFx0PihGQVZPUklURV9FTkRQT0lOVF9JRF9MSVNULCB7XG5cdFx0XHRmYXZvcml0ZVR5cGU6IGJ5VHlwZSxcblx0XHRcdHBsYXRmb3JtOiBmaW4ubWUuaWRlbnRpdHkudXVpZFxuXHRcdH0pO1xuXHRcdGlmICghaXNFbXB0eShmYXZvcml0ZXMpICYmIEFycmF5LmlzQXJyYXkoZmF2b3JpdGVzLmVudHJpZXMpKSB7XG5cdFx0XHRpZiAoIWlzRW1wdHkoYnlUeXBlKSkge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgUmV0dXJuaW5nIHNhdmVkIGZhdm9yaXRlcyBieSB0eXBlICR7YnlUeXBlfSBmcm9tIGN1c3RvbSBzdG9yYWdlYCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcIlJldHVybmluZyBzYXZlZCBmYXZvcml0ZXMgZnJvbSBjdXN0b20gc3RvcmFnZVwiKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBmYXZvcml0ZXMuZW50cmllcy5tYXAoKGZhdikgPT4gZmF2LnBheWxvYWQpO1xuXHRcdH1cblx0XHRsb2dnZXIud2FybihcIk5vIHJlc3BvbnNlIGdldHRpbmcgc2F2ZWQgZmF2b3JpdGVzIGZyb20gY3VzdG9tIHN0b3JhZ2VcIik7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG5cdGxvZ2dlci53YXJuKGBUaGVyZSBoYXMgYmVlbiBhIHJlcXVlc3QgZm9yIGEgbGlzdCBvZiBmYXZvcml0ZXMgYnV0IG5vIGVuZHBvaW50IHdpdGggdGhlIFxuICAgIGlkOiAke0ZBVk9SSVRFX0VORFBPSU5UX0lEX0xJU1R9IGlzIGxpc3RlZCBpbiB5b3VyIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24uYCk7XG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogTGV0cyB5b3UgZ2V0IGEgZmF2b3JpdGUgYnkgaWQuXG4gKiBAcGFyYW0gaWQgdGhlIGlkIG9mIHRoZSBmYXZvcml0ZSBlbnRyeSB5b3Ugd2lzaCB0byBnZXRcbiAqIEByZXR1cm5zIEZhdm9yaXRlRW50cnlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNhdmVkRmF2b3JpdGUoaWQ6IHN0cmluZyk6IFByb21pc2U8RmF2b3JpdGVFbnRyeSB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoZW5kcG9pbnRzLmhhc0VuZHBvaW50KEZBVk9SSVRFX0VORFBPSU5UX0lEX0dFVCkpIHtcblx0XHRjb25zdCBmYXZvcml0ZSA9IGF3YWl0IGVuZHBvaW50cy5yZXF1ZXN0UmVzcG9uc2U8RW5kcG9pbnRGYXZvcml0ZUdldFJlcXVlc3QsIEVuZHBvaW50RmF2b3JpdGVHZXRSZXNwb25zZT4oXG5cdFx0XHRGQVZPUklURV9FTkRQT0lOVF9JRF9HRVQsXG5cdFx0XHR7XG5cdFx0XHRcdGlkLFxuXHRcdFx0XHRwbGF0Zm9ybTogZmluLm1lLmlkZW50aXR5LnV1aWRcblx0XHRcdH1cblx0XHQpO1xuXHRcdGlmIChmYXZvcml0ZSkge1xuXHRcdFx0bG9nZ2VyLmluZm8oYFJldHVybmluZyBzYXZlZCBmYXZvcml0ZSB3aXRoIGlkICR7aWR9IGZyb20gY3VzdG9tIHN0b3JhZ2VgKTtcblx0XHRcdHJldHVybiBmYXZvcml0ZS5wYXlsb2FkO1xuXHRcdH1cblx0XHRsb2dnZXIud2FybihgTm8gcmVzcG9uc2UgZ2V0dGluZyBzYXZlZCBmYXZvcml0ZSB3aXRoIGlkICR7aWR9IGZyb20gY3VzdG9tIHN0b3JhZ2VgKTtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGxvZ2dlci53YXJuKGBUaGVyZSBoYXMgYmVlbiBhIHJlcXVlc3QgZm9yIGEgZmF2b3JpdGUgYnV0IG5vIGVuZHBvaW50IHdpdGggdGhlIFxuICAgIGlkOiAke0ZBVk9SSVRFX0VORFBPSU5UX0lEX0dFVH0gaXMgbGlzdGVkIGluIHlvdXIgZW5kcG9pbnQgY29uZmlndXJhdGlvbi5gKTtcblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBMZXRzIHlvdSBzZXQgYSBmYXZvcml0ZS5cbiAqIEBwYXJhbSBmYXZvcml0ZSB0aGUgZmF2b3JpdGUgZW50cnkgeW91IHdpc2ggdG8gc2F2ZVxuICogQHJldHVybnMgYm9vbGVhbiB3YXMgaXQgYSBzdWNjZXNzZnVsIHNhdmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldFNhdmVkRmF2b3JpdGUoZmF2b3JpdGU6IEZhdm9yaXRlRW50cnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0aWYgKGlzRW1wdHkoZmF2b3JpdGUuaWQpKSB7XG5cdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcIk5vIGlkIHdhcyBwYXNzZWQgZm9yIHRoZSBmYXZvcml0ZSB0byBzYXZlIHNvIHdlIGFyZSB1bmFibGUgdG8gc2F2ZSBpdC4gSWYgaXQgaXMgYSBuZXcgZW50cnkgcGxlYXNlIGdlbmVyYXRlIGEgZ3VpZC5cIlxuXHRcdCk7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGlmIChpc0VtcHR5KGZhdm9yaXRlLnRpbWVzdGFtcCkpIHtcblx0XHRsb2dnZXIuaW5mbyhcIlNldHRpbmcgdGltZXN0YW1wLlwiKTtcblx0XHRmYXZvcml0ZS50aW1lc3RhbXAgPSBuZXcgRGF0ZSgpO1xuXHR9XG5cdGlmIChlbmRwb2ludHMuaGFzRW5kcG9pbnQoRkFWT1JJVEVfRU5EUE9JTlRfSURfU0VUKSkge1xuXHRcdGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBlbmRwb2ludHMuYWN0aW9uPEVuZHBvaW50RmF2b3JpdGVTZXRSZXF1ZXN0PihGQVZPUklURV9FTkRQT0lOVF9JRF9TRVQsIHtcblx0XHRcdGlkOiBmYXZvcml0ZS5pZCxcblx0XHRcdHBsYXRmb3JtOiBmaW4ubWUuaWRlbnRpdHkudXVpZCxcblx0XHRcdG1ldGFEYXRhOiB7XG5cdFx0XHRcdHZlcnNpb246IHtcblx0XHRcdFx0XHR3b3Jrc3BhY2VQbGF0Zm9ybUNsaWVudDogY3VycmVudFZlcnNpb25JbmZvLndvcmtzcGFjZVBsYXRmb3JtQ2xpZW50LFxuXHRcdFx0XHRcdHBsYXRmb3JtQ2xpZW50OiBjdXJyZW50VmVyc2lvbkluZm8ucGxhdGZvcm1DbGllbnRcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHBheWxvYWQ6IGZhdm9yaXRlXG5cdFx0fSk7XG5cdFx0aWYgKHN1Y2Nlc3MpIHtcblx0XHRcdGxvZ2dlci5pbmZvKGBTYXZlZCBmYXZvcml0ZSB3aXRoIGlkOiAke2Zhdm9yaXRlLmlkfSB0byBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdFx0YXdhaXQgZmlyZUxpZmVjeWNsZUV2ZW50PEZhdm9yaXRlQ2hhbmdlZExpZmVjeWNsZVBheWxvYWQ+KHBsYXRmb3JtLCBcImZhdm9yaXRlLWNoYW5nZWRcIiwge1xuXHRcdFx0XHRhY3Rpb246IFwic2V0XCIsXG5cdFx0XHRcdGZhdm9yaXRlXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bG9nZ2VyLmluZm8oYFVuYWJsZSB0byBzYXZlIGZhdm9yaXRlIHdpdGggaWQ6ICR7ZmF2b3JpdGUuaWR9IHRvIGN1c3RvbSBzdG9yYWdlYCk7XG5cdFx0fVxuXHRcdHJldHVybiBzdWNjZXNzO1xuXHR9XG5cdGxvZ2dlci53YXJuKGBUaGVyZSBoYXMgYmVlbiBhIHJlcXVlc3QgdG8gc2F2ZSBhIGZhdm9yaXRlIGJ1dCBubyBlbmRwb2ludCB3aXRoIHRoZSBcbiAgICBpZDogJHtGQVZPUklURV9FTkRQT0lOVF9JRF9TRVR9IGlzIGxpc3RlZCBpbiB5b3VyIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24uYCk7XG5cdHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBMZXRzIHlvdSBkZWxldGUgYSBmYXZvcml0ZS5cbiAqIEBwYXJhbSBpZCB0aGUgaWQgb2YgdGhlIGZhdm9yaXRlIGVudHJ5IHlvdSB3aXNoIHRvIGRlbGV0ZVxuICogQHJldHVybnMgYm9vbGVhbiB3YXMgaXQgYSBzdWNjZXNzZnVsIGRlbGV0ZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsZXRlU2F2ZWRGYXZvcml0ZShpZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGlmIChpc0VtcHR5KGlkKSkge1xuXHRcdGxvZ2dlci53YXJuKFwiTm8gaWQgd2FzIHBhc3NlZCBmb3IgdGhlIGZhdm9yaXRlIHRvIGRlbGV0ZSBzbyB3ZSBhcmUgdW5hYmxlIHRvIGRlbGV0ZSBpdC5cIik7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGlmIChlbmRwb2ludHMuaGFzRW5kcG9pbnQoRkFWT1JJVEVfRU5EUE9JTlRfSURfUkVNT1ZFKSkge1xuXHRcdGNvbnN0IGZhdm9yaXRlID0gYXdhaXQgZ2V0U2F2ZWRGYXZvcml0ZShpZCk7XG5cblx0XHRsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXHRcdGlmIChpc0VtcHR5KGZhdm9yaXRlKSkge1xuXHRcdFx0bG9nZ2VyLndhcm4oYFVuYWJsZSB0byBkZWxldGUgZmF2b3JpdGUgd2l0aCBpZDogJHtpZH0gZnJvbSBjdXN0b20gc3RvcmFnZSBhcyBpdCBkb2VzIG5vdCBleGlzdGApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdWNjZXNzID0gYXdhaXQgZW5kcG9pbnRzLmFjdGlvbjxFbmRwb2ludEZhdm9yaXRlUmVtb3ZlUmVxdWVzdD4oRkFWT1JJVEVfRU5EUE9JTlRfSURfUkVNT1ZFLCB7XG5cdFx0XHRcdGlkLFxuXHRcdFx0XHRwbGF0Zm9ybTogZmluLm1lLmlkZW50aXR5LnV1aWRcblx0XHRcdH0pO1xuXHRcdFx0aWYgKHN1Y2Nlc3MpIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYFNhdmVkIGZhdm9yaXRlIHdpdGggaWQ6ICR7aWR9IHdhcyBkZWxldGVkIGZyb20gY3VzdG9tIHN0b3JhZ2VgKTtcblx0XHRcdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdFx0XHRhd2FpdCBmaXJlTGlmZWN5Y2xlRXZlbnQ8RmF2b3JpdGVDaGFuZ2VkTGlmZWN5Y2xlUGF5bG9hZD4ocGxhdGZvcm0sIFwiZmF2b3JpdGUtY2hhbmdlZFwiLCB7XG5cdFx0XHRcdFx0YWN0aW9uOiBcImRlbGV0ZVwiLFxuXHRcdFx0XHRcdGZhdm9yaXRlXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oYFVuYWJsZSB0byBkZWxldGUgZmF2b3JpdGUgd2l0aCBpZDogJHtpZH0gZnJvbSBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc3VjY2Vzcztcblx0fVxuXHRsb2dnZXIud2FybihgVGhlcmUgaGFzIGJlZW4gYSByZXF1ZXN0IHRvIGRlbGV0ZSBhIGZhdm9yaXRlIGJ1dCBubyBlbmRwb2ludCB3aXRoIHRoZSBcbiAgICBpZDogJHtGQVZPUklURV9FTkRQT0lOVF9JRF9SRU1PVkV9IGlzIGxpc3RlZCBpbiB5b3VyIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24uYCk7XG5cdHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBHZXRzIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlIGZhdm9yaXRlcyBzdWNoIGFzIHRoZSB0eXBlcyBlbmFibGVkIGFuZCB3aGV0aGVyIHRoZSBwcm92aWRlciBpcyBlbmFibGVkLlxuICogQHJldHVybnMgQW4gaW5mbyBvYmplY3Qgd2l0aCB0aGUgZGV0YWlscyB0aGF0IGNhbiBiZSB1c2VkIHRvIGhlbHAgYnVpbGQgc3VwcG9ydCBmb3IgZmF2b3JpdGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5mbygpOiBGYXZvcml0ZUluZm8ge1xuXHRpZiAoaXNFbXB0eShmYXZvcml0ZU9wdGlvbnMpKSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJUaGUgb3B0aW9ucyBmb3IgZmF2b3JpdGVzIGhhcyBub3QgYmVlbiBzZXQgeWV0LlwiKTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0aXNFbmFibGVkOiBmYWxzZVxuXHRcdH07XG5cdH1cblx0cmV0dXJuIHtcblx0XHRpc0VuYWJsZWQ6IGZhdm9yaXRlT3B0aW9ucy5lbmFibGVkID8/IHRydWUsXG5cdFx0ZmF2b3JpdGVJY29uOiBmYXZvcml0ZU9wdGlvbnMuZmF2b3JpdGVJY29uLFxuXHRcdHVuZmF2b3JpdGVJY29uOiBmYXZvcml0ZU9wdGlvbnMudW5mYXZvcml0ZUljb24sXG5cdFx0Y29tbWFuZDogZmF2b3JpdGVPcHRpb25zLmZhdm9yaXRlQ29tbWFuZCxcblx0XHRlbmFibGVkVHlwZXM6IGZhdm9yaXRlT3B0aW9ucy5zdXBwb3J0ZWRGYXZvcml0ZVR5cGVzXG5cdH07XG59XG4iLCJpbXBvcnQgdHlwZSB7IEltYWdlIH0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZVwiO1xuaW1wb3J0IHR5cGUgeyBQbGF0Zm9ybUFwcCB9IGZyb20gXCIuLi8uLi9zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0QXBwRGVmaW5pdGlvbixcblx0QXBwSWNvbixcblx0QXBwSW1hZ2UsXG5cdEFwcEludGVudHMsXG5cdEFwcE1ldGFkYXRhLFxuXHRDdXN0b21Db25maWdcbn0gZnJvbSBcIi4uLy4uL3NoYXBlcy9mZGMzLTEtMi1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgQXBwSW50ZXJvcCwgQXBwSW50ZW50cyBhcyBGREMzVHdvUG9pbnRaZXJvQXBwSW50ZW50cyB9IGZyb20gXCIuLi8uLi9zaGFwZXMvZmRjMy0yLTAtc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0Jvb2xlYW4sIGlzRW1wdHksIGlzU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuLyoqXG4gKiBNYXAgdGhlIGFwcCBkZWZpbml0aW9uIHRvIGEgcGxhdGZvcm0gYXBwLlxuICogQHBhcmFtIGFwcCBUaGUgYXBwIGRlZmluaXRpb24gdG8gbWFwLlxuICogQHJldHVybnMgVGhlIHBsYXRmb3JtIGFwcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvUGxhdGZvcm1BcHAoYXBwOiBBcHBEZWZpbml0aW9uKTogUGxhdGZvcm1BcHAge1xuXHRjb25zdCBwbGF0Zm9ybUFwcDogUGxhdGZvcm1BcHAgPSB7XG5cdFx0YXBwSWQ6IGFwcC5hcHBJZCxcblx0XHRuYW1lOiBhcHAubmFtZSA/PyBhcHAuYXBwSWQsXG5cdFx0dGl0bGU6IGFwcC50aXRsZSA/PyBhcHAubmFtZSxcblx0XHRtYW5pZmVzdFR5cGU6IGFwcC5tYW5pZmVzdFR5cGUsXG5cdFx0bWFuaWZlc3Q6IGdldE1hbmlmZXN0RnJvbUZEQzMoYXBwKSBhcyBzdHJpbmcsXG5cdFx0ZGVzY3JpcHRpb246IGFwcC5kZXNjcmlwdGlvbixcblx0XHRjdXN0b21Db25maWc6IGFwcC5jdXN0b21Db25maWcsXG5cdFx0aW50ZW50czogYXBwLmludGVudHMsXG5cdFx0aW50ZXJvcDogbWFwSW50ZXJvcEZyb21GREMzKGFwcC5pbnRlbnRzKSxcblx0XHR0YWdzOiBtYXBUYWdzRnJvbUZEQzMoYXBwKSxcblx0XHR2ZXJzaW9uOiBhcHAudmVyc2lvbixcblx0XHRwdWJsaXNoZXI6IGFwcC5wdWJsaXNoZXIgPz8gXCJcIixcblx0XHRjb250YWN0RW1haWw6IGFwcC5jb250YWN0RW1haWwsXG5cdFx0c3VwcG9ydEVtYWlsOiBhcHAuc3VwcG9ydEVtYWlsLFxuXHRcdGljb25zOiBtYXBJY29uc0Zyb21GREMzKGFwcC5pY29ucyksXG5cdFx0aW1hZ2VzOiBtYXBJbWFnZXNGcm9tRkRDMyhhcHAuaW1hZ2VzKSxcblx0XHRwcml2YXRlOiBtYXBQcml2YXRlRnJvbUZEQzMoYXBwKSxcblx0XHRhdXRvc3RhcnQ6IG1hcEF1dG9zdGFydEZyb21GREMzKGFwcCksXG5cdFx0aW5zdGFuY2VNb2RlOiBhcHAuY3VzdG9tQ29uZmlnPy5pbnN0YW5jZU1vZGUsXG5cdFx0dG9vbHRpcDogYXBwLnRvb2x0aXBcblx0fTtcblx0cmV0dXJuIHBsYXRmb3JtQXBwO1xufVxuXG4vKipcbiAqIE1hcCBhIHBsYXRmb3JtIGFwcCB0byBhbiBGREMzIDEuMiBhcHAgZGVmaW5pdGlvbi5cbiAqIEBwYXJhbSBhcHAgVGhlIGFwcCBkZWZpbml0aW9uIHRvIG1hcC5cbiAqIEByZXR1cm5zIFRoZSBmZGMzIDEuMiBhcHAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb0ZEQzNBcHAoYXBwOiBQbGF0Zm9ybUFwcCk6IEFwcERlZmluaXRpb24ge1xuXHRjb25zdCBtYW5pZmVzdFR5cGU6IHN0cmluZyA9IGAke2FwcC5tYW5pZmVzdFR5cGV9YDtcblxuXHRjb25zdCBmZGMzQXBwOiBBcHBEZWZpbml0aW9uID0ge1xuXHRcdGFwcElkOiBhcHAuYXBwSWQsXG5cdFx0bmFtZTogYXBwLm5hbWUgPz8gYXBwLmFwcElkLFxuXHRcdHRpdGxlOiBhcHAudGl0bGUgPz8gYXBwLm5hbWUsXG5cdFx0bWFuaWZlc3RUeXBlLFxuXHRcdG1hbmlmZXN0OiBhcHAubWFuaWZlc3QgYXMgc3RyaW5nLFxuXHRcdGRlc2NyaXB0aW9uOiBhcHAuZGVzY3JpcHRpb24sXG5cdFx0Y3VzdG9tQ29uZmlnOiBtYXBDdXN0b21Db25maWdGcm9tUGxhdGZvcm1BcHAoYXBwKSxcblx0XHRpbnRlbnRzOiBtYXBJbnRlbnRzRnJvbVBsYXRmb3JtQXBwKGFwcCksXG5cdFx0Y2F0ZWdvcmllczogYXBwLnRhZ3MgPz8gW10sXG5cdFx0dmVyc2lvbjogYXBwLnZlcnNpb24sXG5cdFx0cHVibGlzaGVyOiBhcHAucHVibGlzaGVyID8/IFwiXCIsXG5cdFx0Y29udGFjdEVtYWlsOiBhcHAuY29udGFjdEVtYWlsLFxuXHRcdHN1cHBvcnRFbWFpbDogYXBwLnN1cHBvcnRFbWFpbCxcblx0XHRpY29uczogbWFwSWNvbnNGcm9tUGxhdGZvcm1BcHAoYXBwKSxcblx0XHRpbWFnZXM6IG1hcEltYWdlc0Zyb21QbGF0Zm9ybUFwcChhcHApLFxuXHRcdHRvb2x0aXA6IGFwcC50b29sdGlwXG5cdH07XG5cdHJldHVybiBmZGMzQXBwO1xufVxuXG4vKipcbiAqIE1hcCB0aGUgcGxhdGZvcm0gYXBwIHRvIGFwcCBtZXRhZGF0YS5cbiAqIEBwYXJhbSBhcHAgVGhlIGFwcGxpY2F0aW9uIHRvIG1hcC5cbiAqIEByZXR1cm5zIFRoZSBhcHAgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb0FwcE1ldGFEYXRhKGFwcDogUGxhdGZvcm1BcHApOiBBcHBNZXRhZGF0YSB7XG5cdGNvbnN0IGljb25zOiBzdHJpbmdbXSA9IFtdO1xuXHRjb25zdCBpbWFnZXM6IHN0cmluZ1tdID0gW107XG5cdGlmIChBcnJheS5pc0FycmF5KGFwcC5pY29ucykpIHtcblx0XHRmb3IgKGNvbnN0IGljb24gb2YgYXBwLmljb25zKSB7XG5cdFx0XHRpZiAoIWlzRW1wdHkoaWNvbi5zcmMpKSB7XG5cdFx0XHRcdGljb25zLnB1c2goaWNvbi5zcmMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRpZiAoQXJyYXkuaXNBcnJheShhcHAuaW1hZ2VzKSkge1xuXHRcdGZvciAoY29uc3QgaW1hZ2Ugb2YgYXBwLmltYWdlcykge1xuXHRcdFx0aWYgKCFpc0VtcHR5KGltYWdlLnNyYykpIHtcblx0XHRcdFx0aW1hZ2VzLnB1c2goaW1hZ2Uuc3JjKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0Y29uc3QgYXBwTWV0YURhdGE6IEFwcE1ldGFkYXRhID0ge1xuXHRcdGFwcElkOiBhcHAuYXBwSWQsXG5cdFx0ZGVzY3JpcHRpb246IGFwcC5kZXNjcmlwdGlvbixcblx0XHRpY29ucyxcblx0XHRpbWFnZXMsXG5cdFx0bmFtZTogYXBwLmFwcElkLFxuXHRcdHRpdGxlOiBhcHAudGl0bGUsXG5cdFx0dG9vbHRpcDogYXBwLnRvb2x0aXAsXG5cdFx0dmVyc2lvbjogYXBwLnZlcnNpb25cblx0fTtcblx0cmV0dXJuIGFwcE1ldGFEYXRhO1xufVxuXG4vKipcbiAqIE1hcCB0aGUgYXBwIGRlZmluaXRpb24gaW50ZXJvcCBkYXRhIHRvIGFwcCBpbnRlcm9wIGZvcm1hdC5cbiAqIEBwYXJhbSBpbnRlbnRzIFRoZSBpbnRlbnRzIHRvIG1hcC5cbiAqIEByZXR1cm5zIFRoZSBhcHAgaW50ZXJvcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcEludGVyb3BGcm9tRkRDMyhpbnRlbnRzOiBBcHBJbnRlbnRzW10gfCB1bmRlZmluZWQpOiBBcHBJbnRlcm9wIHwgdW5kZWZpbmVkIHtcblx0aWYgKGlzRW1wdHkoaW50ZW50cykpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBsaXN0ZW5zRm9yOiB7IFtrZXk6IHN0cmluZ106IEZEQzNUd29Qb2ludFplcm9BcHBJbnRlbnRzIH0gPSB7fTtcblxuXHRmb3IgKGNvbnN0IGludGVudCBvZiBpbnRlbnRzKSB7XG5cdFx0bGlzdGVuc0ZvcltpbnRlbnQubmFtZV0gPSB7XG5cdFx0XHRjb250ZXh0czogaW50ZW50LmNvbnRleHRzLFxuXHRcdFx0Y3VzdG9tQ29uZmlnOiBpbnRlbnQuY3VzdG9tQ29uZmlnLFxuXHRcdFx0ZGlzcGxheU5hbWU6IGludGVudC5kaXNwbGF5TmFtZVxuXHRcdH07XG5cdH1cblxuXHRjb25zdCBpbnRlcm9wOiBBcHBJbnRlcm9wID0ge1xuXHRcdGludGVudHM6IHsgbGlzdGVuc0ZvciB9XG5cdH07XG5cblx0cmV0dXJuIGludGVyb3A7XG59XG5cbi8qKlxuICogTWFwcyB0aGUgaW50ZW50cyBmcm9tIGEgcGxhdGZvcm0gYXBwIHRvIGFuIEZEQzMgMS4yIGludGVudHMgYXJyYXkuXG4gKiBAcGFyYW0gYXBwIFRoZSBwbGF0Zm9ybSBhcHAgdG8gdXNlIGFzIGEgc291cmNlXG4gKiBAcmV0dXJucyBhbiBBcnJheSBvZiBJbnRlbnRzIGluIEZEQzMgMS4yIGZvcm1hdFxuICovXG5mdW5jdGlvbiBtYXBJbnRlbnRzRnJvbVBsYXRmb3JtQXBwKGFwcDogUGxhdGZvcm1BcHApOiBBcHBJbnRlbnRzW10ge1xuXHRjb25zdCBpbnRlbnRzOiBBcHBJbnRlbnRzW10gPSBbXTtcblx0Y29uc3QgcGFzc2VkSW50ZW50cyA9IGFwcC5pbnRlcm9wPy5pbnRlbnRzPy5saXN0ZW5zRm9yO1xuXHRpZiAoIWlzRW1wdHkocGFzc2VkSW50ZW50cykpIHtcblx0XHRjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocGFzc2VkSW50ZW50cyk7XG5cdFx0Zm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuXHRcdFx0Y29uc3QgZGlzcGxheU5hbWU6IHN0cmluZyA9IHBhc3NlZEludGVudHNba2V5XS5kaXNwbGF5TmFtZSA/PyBrZXk7XG5cdFx0XHRpbnRlbnRzLnB1c2goe1xuXHRcdFx0XHRuYW1lOiBrZXksXG5cdFx0XHRcdGRpc3BsYXlOYW1lLFxuXHRcdFx0XHRjb250ZXh0czogcGFzc2VkSW50ZW50c1trZXldLmNvbnRleHRzLFxuXHRcdFx0XHRjdXN0b21Db25maWc6IHBhc3NlZEludGVudHNba2V5XS5jdXN0b21Db25maWdcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXHRpZiAoaW50ZW50cy5sZW5ndGggPT09IDAgJiYgIWlzRW1wdHkoYXBwLmludGVudHMpKSB7XG5cdFx0cmV0dXJuIGFwcC5pbnRlbnRzO1xuXHR9XG5cdHJldHVybiBpbnRlbnRzO1xufVxuXG4vKipcbiAqIFRha2VzIGEgcGxhdGZvcm0gYXBwIGFuZCByZXR1cm5zIGFuIEZEQzMgY3VzdG9tIGNvbmZpZyBvYmplY3QuXG4gKiBAcGFyYW0gYXBwIFRoZSBwbGF0Zm9ybSBhcHAgdG8gbWFwIGludG8gYSBjdXN0b21Db25maWcgb2JqZWN0LlxuICogQHJldHVybnMgYW4gRkRDMyAxLjIgY3VzdG9tQ29uZmlnIG9iamVjdCBiYXNlZCBvbiB0aGUgcGxhdGZvcm0gYXBwIHNldHRpbmdzLlxuICovXG5mdW5jdGlvbiBtYXBDdXN0b21Db25maWdGcm9tUGxhdGZvcm1BcHAoYXBwOiBQbGF0Zm9ybUFwcCk6IEN1c3RvbUNvbmZpZyB7XG5cdGNvbnN0IGNvbmZpZzogQ3VzdG9tQ29uZmlnID0ge1xuXHRcdGF1dG9zdGFydDogbWFwQm9vbGVhblZhbHVlKGFwcD8uYXV0b3N0YXJ0LCBmYWxzZSkudG9TdHJpbmcoKSxcblx0XHRpbnN0YW5jZU1vZGU6IGFwcC5pbnN0YW5jZU1vZGUsXG5cdFx0cHJpdmF0ZTogbWFwQm9vbGVhblZhbHVlKGFwcC5wcml2YXRlLCBmYWxzZSkudG9TdHJpbmcoKVxuXHR9O1xuXHRyZXR1cm4gY29uZmlnO1xufVxuXG4vKipcbiAqIE1hcCB0aGUgaWNvbiBmb3JtYXQuXG4gKiBAcGFyYW0gaWNvbnMgVGhlIGljb25zIHRvIG1hcC5cbiAqIEByZXR1cm5zIFRoZSBtYXBwZWQgaWNvbnMuXG4gKi9cbmZ1bmN0aW9uIG1hcEljb25zRnJvbUZEQzMoaWNvbnM6IEFwcEljb25bXSB8IHVuZGVmaW5lZCk6IEltYWdlW10ge1xuXHRpZiAoIUFycmF5LmlzQXJyYXkoaWNvbnMpKSB7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG5cdGNvbnN0IGFwcEljb25zOiBJbWFnZVtdID0gW107XG5cdGZvciAoY29uc3QgYXBwSWNvbiBvZiBpY29ucykge1xuXHRcdGFwcEljb25zLnB1c2goeyBzcmM6IGFwcEljb24uaWNvbiB9KTtcblx0fVxuXHRyZXR1cm4gYXBwSWNvbnM7XG59XG5cbi8qKlxuICogVGFrZXMgYSBQbGF0Zm9ybSBBcHAgYW5kIGNvbnZlcnRzIGljb25zIHNvIHRoZXkgYXJlIGluIEZEQzMgMS4yIGZvcm1hdC5cbiAqIEBwYXJhbSBhcHAgVGhlIHBsYXRmb3JtIGFwcCB0byB1c2UgYXMgYSBzb3VyY2UuXG4gKiBAcmV0dXJucyBUaGUgYXJyYXkgb2YgYXBwIGljb25zIGluIEZEQzMgMS4yIGZvcm1hdC5cbiAqL1xuZnVuY3Rpb24gbWFwSWNvbnNGcm9tUGxhdGZvcm1BcHAoYXBwOiBQbGF0Zm9ybUFwcCk6IEFwcEljb25bXSB7XG5cdGlmICghQXJyYXkuaXNBcnJheShhcHAuaWNvbnMpKSB7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG5cdGNvbnN0IGFwcEljb25zOiBBcHBJY29uW10gPSBbXTtcblx0Zm9yIChjb25zdCBhcHBJY29uIG9mIGFwcC5pY29ucykge1xuXHRcdGFwcEljb25zLnB1c2goeyBpY29uOiBhcHBJY29uLnNyYyB9KTtcblx0fVxuXHRyZXR1cm4gYXBwSWNvbnM7XG59XG5cbi8qKlxuICogTWFwIHRoZSBpbWFnZSBmb3JtYXQuXG4gKiBAcGFyYW0gaW1hZ2VzIFRoZSBpbWFnZXMgdG8gbWFwLlxuICogQHJldHVybnMgVGhlIG1hcHBlZCBpbWFnZXMuXG4gKi9cbmZ1bmN0aW9uIG1hcEltYWdlc0Zyb21GREMzKGltYWdlczogQXBwSW1hZ2VbXSB8IHVuZGVmaW5lZCk6IEltYWdlW10ge1xuXHRpZiAoIUFycmF5LmlzQXJyYXkoaW1hZ2VzKSkge1xuXHRcdHJldHVybiBbXTtcblx0fVxuXHRjb25zdCBhcHBJbWFnZXM6IEltYWdlW10gPSBbXTtcblx0Zm9yIChjb25zdCBhcHBJbWFnZSBvZiBpbWFnZXMpIHtcblx0XHRhcHBJbWFnZXMucHVzaCh7IHNyYzogYXBwSW1hZ2UudXJsIH0pO1xuXHR9XG5cdHJldHVybiBhcHBJbWFnZXM7XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBhcnJheSBvZiBpbWFnZXMgaW4gRkRDMyAxLjIgZm9ybWF0IGZyb20gYSBQbGF0Zm9ybSBBcHAuXG4gKiBAcGFyYW0gYXBwIFRoZSBwbGF0Zm9ybSBhcHAgdG8gdXNlIGFzIGEgc291cmNlLlxuICogQHJldHVybnMgVGhlIG1hcHBlZCBpbWFnZXMuXG4gKi9cbmZ1bmN0aW9uIG1hcEltYWdlc0Zyb21QbGF0Zm9ybUFwcChhcHA6IFBsYXRmb3JtQXBwKTogQXBwSW1hZ2VbXSB7XG5cdGlmICghQXJyYXkuaXNBcnJheShhcHAuaW1hZ2VzKSkge1xuXHRcdHJldHVybiBbXTtcblx0fVxuXHRjb25zdCBhcHBJbWFnZXM6IEFwcEltYWdlW10gPSBbXTtcblx0Zm9yIChjb25zdCBhcHBJbWFnZSBvZiBhcHAuaW1hZ2VzKSB7XG5cdFx0YXBwSW1hZ2VzLnB1c2goeyB1cmw6IGFwcEltYWdlLnNyYyB9KTtcblx0fVxuXHRyZXR1cm4gYXBwSW1hZ2VzO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbWFuaWZlc3Qgd2hpY2ggY2FuIGJlIHBsYWluIHN0cmluZyBvciBKU09OLlxuICogQHBhcmFtIGFwcCBUaGUgYXBwIHRvIGdldCB0aGUgbWFuaWZlc3QgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdC5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFuaWZlc3RGcm9tRkRDMyhhcHA6IEFwcERlZmluaXRpb24pOiB1bmtub3duIHtcblx0aWYgKHR5cGVvZiBhcHAubWFuaWZlc3QgPT09IFwic3RyaW5nXCIgJiYgYXBwLm1hbmlmZXN0LnN0YXJ0c1dpdGgoXCJ7XCIpKSB7XG5cdFx0cmV0dXJuIEpTT04ucGFyc2UoYXBwLm1hbmlmZXN0KTtcblx0fVxuXG5cdHJldHVybiBhcHAubWFuaWZlc3Q7XG59XG5cbi8qKlxuICogTWFwIHRoZSB0YWdzLlxuICogQHBhcmFtIGFwcCBUaGUgYXBwIGRlZmluaXRpb24gdG8gbWFwIHRoZSB0YWdzIGZvci5cbiAqIEByZXR1cm5zIFRoZSBtYXBwZWQgdGFncyxcbiAqL1xuZnVuY3Rpb24gbWFwVGFnc0Zyb21GREMzKGFwcDogQXBwRGVmaW5pdGlvbiAmIHsgdGFncz86IHN0cmluZ1tdIH0pOiBzdHJpbmdbXSB7XG5cdGNvbnN0IHRhZ3M6IHN0cmluZ1tdID0gYXBwLnRhZ3MgPz8gYXBwLmNhdGVnb3JpZXMgPz8gW107XG5cdGlmICh0YWdzLmxlbmd0aCA9PT0gMCkge1xuXHRcdHRhZ3MucHVzaChhcHAubWFuaWZlc3RUeXBlKTtcblx0fVxuXG5cdHJldHVybiB0YWdzO1xufVxuXG4vKipcbiAqIE1hcCB0aGUgcHJpdmF0ZSBmbGFnLlxuICogQHBhcmFtIGFwcCBUaGUgYXBwIGNvbnRhaW5pbmcgdGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBmbGFnIG9yIGZhbHNlIGlmIG5vdCBmb3VuZC5cbiAqL1xuZnVuY3Rpb24gbWFwUHJpdmF0ZUZyb21GREMzKGFwcDogQXBwRGVmaW5pdGlvbik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gbWFwQm9vbGVhblZhbHVlKGFwcD8uY3VzdG9tQ29uZmlnPy5wcml2YXRlLCBmYWxzZSk7XG59XG5cbi8qKlxuICogTWFwIHRoZSBhdXRvc3RhcnQgZmxhZy5cbiAqIEBwYXJhbSBhcHAgVGhlIGFwcCBjb250YWluaW5nIHRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgZmxhZyBvciBmYWxzZSBpZiBub3QgZm91bmQuXG4gKi9cbmZ1bmN0aW9uIG1hcEF1dG9zdGFydEZyb21GREMzKGFwcDogQXBwRGVmaW5pdGlvbik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gbWFwQm9vbGVhblZhbHVlKGFwcD8uY3VzdG9tQ29uZmlnPy5hdXRvc3RhcnQsIGZhbHNlKTtcbn1cblxuLyoqXG4gKiBNYXAgYSBib29sZWFuIG9yIHN0cmluZyB0byBhIHJlYWwgYm9vbGVhbiB2YWx1ZS5cbiAqIEBwYXJhbSBmbGFnIFRoZSBmbGFnIHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0gZGVmYXVsdEZsYWcgVGhlIGRlZmF1bHQgdmFsdWUgaWYgbWlzc2luZy5cbiAqIEByZXR1cm5zIFRoZSBtYXBwZWQgZmxhZy5cbiAqL1xuZnVuY3Rpb24gbWFwQm9vbGVhblZhbHVlKGZsYWc6IHN0cmluZyB8IGJvb2xlYW4gfCB1bmRlZmluZWQsIGRlZmF1bHRGbGFnOiBib29sZWFuKTogYm9vbGVhbiB7XG5cdGlmIChpc1N0cmluZ1ZhbHVlKGZsYWcpIHx8IGlzQm9vbGVhbihmbGFnKSkge1xuXHRcdHN3aXRjaCAoZmxhZykge1xuXHRcdFx0Y2FzZSBcIkZhbHNlXCI6XG5cdFx0XHRjYXNlIFwiZmFsc2VcIjpcblx0XHRcdGNhc2UgZmFsc2U6XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdGNhc2UgXCJUcnVlXCI6XG5cdFx0XHRjYXNlIFwidHJ1ZVwiOlxuXHRcdFx0Y2FzZSB0cnVlOlxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdC8vIGlmIHNvbWVvbmUgaGFzIGRlZmluZWQgYSBmbGFnIHRoZW4gdGhlIGxpa2VseSBob29kIHdhcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCB2YWx1ZVxuXHRcdFx0XHRyZXR1cm4gIWRlZmF1bHRGbGFnO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZGVmYXVsdEZsYWc7XG59XG4iLCJpbXBvcnQgdHlwZSB7IEFwcE1ldGFkYXRhIH0gZnJvbSBcIkBmaW5vcy9mZGMzXCI7XG5pbXBvcnQgdHlwZSB7IEFwcEludGVudCB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2VcIjtcbmltcG9ydCB0eXBlIHsgUGxhdGZvcm1BcHAgfSBmcm9tIFwiLi4vLi4vc2hhcGVzL2FwcC1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0QXBwRGVmaW5pdGlvbixcblx0V2ViQXBwRGV0YWlscyxcblx0TmF0aXZlQXBwRGV0YWlscyxcblx0T25saW5lTmF0aXZlQXBwRGV0YWlscyxcblx0QXBwSW50ZXJvcCxcblx0QXBwRGVmaW5pdGlvblR5cGUsXG5cdEFwcEludGVudHMsXG5cdEhvc3RNYW5pZmVzdHNcbn0gZnJvbSBcIi4uLy4uL3NoYXBlcy9mZGMzLTItMC1zaGFwZXNcIjtcbmltcG9ydCB7IGlzRW1wdHksIGlzT2JqZWN0IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbi8qKlxuICogTWFwIHRoZSBhcHAgZGVmaW5pdGlvbiB0byBhIHBsYXRmb3JtIGFwcC5cbiAqIEBwYXJhbSBhcHAgVGhlIGFwcCBkZWZpbml0aW9uIHRvIG1hcC5cbiAqIEByZXR1cm5zIFRoZSBwbGF0Zm9ybSBhcHAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1BsYXRmb3JtQXBwKGFwcDogQXBwRGVmaW5pdGlvbik6IFBsYXRmb3JtQXBwIHtcblx0Y29uc3QgcGxhdGZvcm1BcHA6IFBsYXRmb3JtQXBwID0ge1xuXHRcdGFwcElkOiBhcHAuYXBwSWQsXG5cdFx0bmFtZTogYXBwLm5hbWUgPz8gYXBwLmFwcElkLFxuXHRcdHRpdGxlOiBhcHAudGl0bGUgPz8gYXBwLm5hbWUsXG5cdFx0bWFuaWZlc3RUeXBlOiBtYXBNYW5pZmVzdFR5cGVGcm9tRkRDMyhhcHApLFxuXHRcdG1hbmlmZXN0OiBnZXRNYW5pZmVzdEZyb21GREMzKGFwcCkgYXMgc3RyaW5nLFxuXHRcdGRlc2NyaXB0aW9uOiBhcHAuZGVzY3JpcHRpb24sXG5cdFx0aW5zdGFuY2VNb2RlOiBhcHA/Lmhvc3RNYW5pZmVzdHM/Lk9wZW5GaW4/LmNvbmZpZz8uaW5zdGFuY2VNb2RlLFxuXHRcdGludGVudHM6IG1hcEludGVudHNGcm9tRkRDMyhhcHAuaW50ZXJvcCksXG5cdFx0aW50ZXJvcDogYXBwLmludGVyb3AsXG5cdFx0Y3VzdG9tQ29uZmlnOiBhcHAuY3VzdG9tQ29uZmlnLFxuXHRcdHRhZ3M6IGFwcC5jYXRlZ29yaWVzLFxuXHRcdHZlcnNpb246IGFwcC52ZXJzaW9uLFxuXHRcdHB1Ymxpc2hlcjogYXBwLnB1Ymxpc2hlciA/PyBcIlwiLFxuXHRcdGNvbnRhY3RFbWFpbDogYXBwLmNvbnRhY3RFbWFpbCxcblx0XHRzdXBwb3J0RW1haWw6IGFwcC5zdXBwb3J0RW1haWwsXG5cdFx0aWNvbnM6IGFwcC5pY29ucyA/PyBbXSxcblx0XHRpbWFnZXM6IGFwcC5zY3JlZW5zaG90cyxcblx0XHRwcml2YXRlOiBhcHA/Lmhvc3RNYW5pZmVzdHM/Lk9wZW5GaW4/LmNvbmZpZz8ucHJpdmF0ZSxcblx0XHRhdXRvc3RhcnQ6IGFwcD8uaG9zdE1hbmlmZXN0cz8uT3BlbkZpbj8uY29uZmlnPy5hdXRvc3RhcnRcblx0fTtcblx0cmV0dXJuIHBsYXRmb3JtQXBwO1xufVxuXG4vKipcbiAqIE1hcCBhIHBsYXRmb3JtIGFwcCB0byBhbiBGREMzIDIuMCBhcHAgZGVmaW5pdGlvbi5cbiAqIEBwYXJhbSBhcHAgVGhlIGFwcCBkZWZpbml0aW9uIHRvIG1hcC5cbiAqIEByZXR1cm5zIFRoZSBmZGMzIDIuMCBhcHAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb0ZEQzNBcHAoYXBwOiBQbGF0Zm9ybUFwcCk6IEFwcERlZmluaXRpb24ge1xuXHRjb25zdCBmZGMzQXBwOiBBcHBEZWZpbml0aW9uID0ge1xuXHRcdGFwcElkOiBhcHAuYXBwSWQsXG5cdFx0bmFtZTogYXBwLm5hbWUgPz8gYXBwLmFwcElkLFxuXHRcdHRpdGxlOiBhcHAudGl0bGUgPz8gYXBwLm5hbWUsXG5cdFx0dHlwZTogbWFwVHlwZUZyb21QbGF0Zm9ybUFwcChhcHApLFxuXHRcdGRldGFpbHM6IHt9LFxuXHRcdGRlc2NyaXB0aW9uOiBhcHAuZGVzY3JpcHRpb24sXG5cdFx0Y2F0ZWdvcmllczogYXBwLnRhZ3MgPz8gW10sXG5cdFx0dmVyc2lvbjogYXBwLnZlcnNpb24sXG5cdFx0cHVibGlzaGVyOiBhcHAucHVibGlzaGVyID8/IFwiXCIsXG5cdFx0Y29udGFjdEVtYWlsOiBhcHAuY29udGFjdEVtYWlsLFxuXHRcdHN1cHBvcnRFbWFpbDogYXBwLnN1cHBvcnRFbWFpbCxcblx0XHRpY29uczogYXBwLmljb25zLFxuXHRcdHNjcmVlbnNob3RzOiBhcHAuaW1hZ2VzLFxuXHRcdHRvb2x0aXA6IGFwcC50b29sdGlwLFxuXHRcdGludGVyb3A6IGdldEludGVyb3BGcm9tUGxhdGZvcm1BcHAoYXBwKSxcblx0XHRob3N0TWFuaWZlc3RzOiBnZXRIb3N0TWFuaWZlc3RzRnJvbVBsYXRmb3JtQXBwKGFwcClcblx0fTtcblx0cmV0dXJuIGZkYzNBcHA7XG59XG5cbi8qKlxuICogTWFwIHRoZSBwbGF0Zm9ybSBhcHAgdG8gYXBwIG1ldGFkYXRhLlxuICogQHBhcmFtIGFwcCBUaGUgYXBwbGljYXRpb24gdG8gbWFwLlxuICogQHBhcmFtIHJlc3VsdFR5cGUgVGhlIHJlc3VsdCB0eXBlIHRvIGluY2x1ZGUgaW4gdGhlIGRhdGEuXG4gKiBAcmV0dXJucyBUaGUgYXBwIG1ldGFkYXRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9BcHBNZXRhRGF0YShhcHA6IFBsYXRmb3JtQXBwLCByZXN1bHRUeXBlPzogc3RyaW5nKTogQXBwTWV0YWRhdGEge1xuXHRjb25zdCBhcHBNZXRhRGF0YTogQXBwTWV0YWRhdGEgPSB7XG5cdFx0YXBwSWQ6IGFwcC5hcHBJZCxcblx0XHRkZXNjcmlwdGlvbjogYXBwLmRlc2NyaXB0aW9uLFxuXHRcdGljb25zOiBhcHAuaWNvbnMsXG5cdFx0bmFtZTogYXBwLm5hbWUsXG5cdFx0c2NyZWVuc2hvdHM6IGFwcC5pbWFnZXMsXG5cdFx0dGl0bGU6IGFwcC50aXRsZSxcblx0XHR0b29sdGlwOiBhcHAudG9vbHRpcCxcblx0XHR2ZXJzaW9uOiBhcHAudmVyc2lvbixcblx0XHRyZXN1bHRUeXBlXG5cdH07XG5cdHJldHVybiBhcHBNZXRhRGF0YTtcbn1cblxuLyoqXG4gKiBNYXAgdGhlIGFwcCBkZWZpbml0aW9uIGludGVyb3AgZGF0YSB0byBhcHAgaW50ZXJvcCBmb3JtYXQuXG4gKiBAcGFyYW0gaW50ZXJvcCBUaGUgaW50ZXJvcCB0byBtYXAuXG4gKiBAcmV0dXJucyBUaGUgYXBwIGludGVyb3AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBJbnRlbnRzRnJvbUZEQzMoaW50ZXJvcDogQXBwSW50ZXJvcCB8IHVuZGVmaW5lZCk6IEFwcEludGVudFtdIHtcblx0Y29uc3QgaW50ZW50czogQXBwSW50ZW50W10gPSBbXTtcblxuXHRjb25zdCBsaXN0ZW5zRm9yID0gaW50ZXJvcD8uaW50ZW50cz8ubGlzdGVuc0Zvcjtcblx0aWYgKGlzRW1wdHkobGlzdGVuc0ZvcikpIHtcblx0XHRyZXR1cm4gaW50ZW50cztcblx0fVxuXG5cdGNvbnN0IGludGVudElkcyA9IE9iamVjdC5rZXlzKGxpc3RlbnNGb3IpO1xuXHRmb3IgKGNvbnN0IGludGVudE5hbWUgb2YgaW50ZW50SWRzKSB7XG5cdFx0aW50ZW50cy5wdXNoKHtcblx0XHRcdG5hbWU6IGludGVudE5hbWUsXG5cdFx0XHRkaXNwbGF5TmFtZTogbGlzdGVuc0ZvcltpbnRlbnROYW1lXS5kaXNwbGF5TmFtZSA/PyBcIlwiLFxuXHRcdFx0Y29udGV4dHM6IGxpc3RlbnNGb3JbaW50ZW50TmFtZV0uY29udGV4dHNcblx0XHR9KTtcblx0fVxuXG5cdHJldHVybiBpbnRlbnRzO1xufVxuXG4vKipcbiAqIEdldCB0aGUgaW50ZXJvcCBkYXRhIGZyb20gYSBQbGF0Zm9ybSBBcHAgaW4gRkRDMyAyLjAgZm9ybWF0LlxuICogQHBhcmFtIGFwcCBUaGUgcGxhdGZvcm0gYXBwIHRvIHVzZSBhcyBhIHNvdXJjZS5cbiAqIEByZXR1cm5zIFRoZSBhcHAgaW50ZXJvcCBkZWZpbml0aW9uLlxuICovXG5mdW5jdGlvbiBnZXRJbnRlcm9wRnJvbVBsYXRmb3JtQXBwKGFwcDogUGxhdGZvcm1BcHApOiBBcHBJbnRlcm9wIHtcblx0aWYgKCFpc0VtcHR5KGFwcC5pbnRlcm9wKSkge1xuXHRcdHJldHVybiBhcHAuaW50ZXJvcDtcblx0fVxuXHRjb25zdCBpbnRlcm9wOiBBcHBJbnRlcm9wID0ge1xuXHRcdGludGVudHM6IHtcblx0XHRcdGxpc3RlbnNGb3I6IHt9XG5cdFx0fVxuXHR9O1xuXG5cdGlmIChBcnJheS5pc0FycmF5KGFwcC5pbnRlbnRzKSAmJiBhcHAuaW50ZW50cy5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc3QgbGlzdGVuc0ZvcjogeyBba2V5OiBzdHJpbmddOiBBcHBJbnRlbnRzIH0gPSB7fTtcblx0XHRmb3IgKGNvbnN0IGludGVudCBvZiBhcHAuaW50ZW50cykge1xuXHRcdFx0bGlzdGVuc0ZvcltpbnRlbnQubmFtZV0gPSB7IGRpc3BsYXlOYW1lOiBpbnRlbnQuZGlzcGxheU5hbWUsIGNvbnRleHRzOiBpbnRlbnQuY29udGV4dHMgfTtcblx0XHR9XG5cdFx0aWYgKCFpc0VtcHR5KGludGVyb3AuaW50ZW50cykpIHtcblx0XHRcdGludGVyb3AuaW50ZW50cy5saXN0ZW5zRm9yID0gbGlzdGVuc0Zvcjtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gaW50ZXJvcDtcbn1cblxuLyoqXG4gKiBNYXAgdGhlIG1hbmlmZXN0IHR5cGUuXG4gKiBAcGFyYW0gYXBwIFRoZSBhcHAgZGVmaW5pdGlvbiB0byBtYXAgdGhlIG1hbmlmZXN0IHR5cGUgZm9yLlxuICogQHJldHVybnMgVGhlIG1hcHBlZCBtYW5pZmVzdCB0eXBlLlxuICovXG5mdW5jdGlvbiBtYXBNYW5pZmVzdFR5cGVGcm9tRkRDMyhhcHA6IEFwcERlZmluaXRpb24pOiBzdHJpbmcge1xuXHRsZXQgbWFuaWZlc3RUeXBlOiBzdHJpbmc7XG5cblx0c3dpdGNoIChhcHAudHlwZSkge1xuXHRcdGNhc2UgXCJ3ZWJcIjoge1xuXHRcdFx0bWFuaWZlc3RUeXBlID0gXCJpbmxpbmUtdmlld1wiO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNhc2UgXCJuYXRpdmVcIjoge1xuXHRcdFx0bWFuaWZlc3RUeXBlID0gXCJpbmxpbmUtZXh0ZXJuYWxcIjtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRjYXNlIFwib25saW5lTmF0aXZlXCI6IHtcblx0XHRcdG1hbmlmZXN0VHlwZSA9IFwiZGVza3RvcC1icm93c2VyXCI7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBcIm90aGVyXCI6IHtcblx0XHRcdG1hbmlmZXN0VHlwZSA9IGFwcC5ob3N0TWFuaWZlc3RzPy5PcGVuRmluPy50eXBlID8/IFwiXCI7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0ZGVmYXVsdDoge1xuXHRcdFx0bWFuaWZlc3RUeXBlID0gYXBwLnR5cGU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtYW5pZmVzdFR5cGU7XG59XG5cbi8qKlxuICogTWFwcyB0byBhbiBGREMzIDIuMCB0eXBlIGZyb20gdGhlIG1hbmlmZXN0IHR5cGUgc3BlY2lmaWVkIGJ5IGEgcGxhdGZvcm0gYXBwLlxuICogQHBhcmFtIGFwcCB0aGUgcGxhdGZvcm0gYXBwIHRvIHVzZSBhcyBhIHNvdXJjZVxuICogQHJldHVybnMgdGhlIEZEQzMgMi4wIGFwcCBkZWZpbml0aW9uIHR5cGVcbiAqL1xuZnVuY3Rpb24gbWFwVHlwZUZyb21QbGF0Zm9ybUFwcChhcHA6IFBsYXRmb3JtQXBwKTogQXBwRGVmaW5pdGlvblR5cGUge1xuXHRsZXQgdHlwZTogQXBwRGVmaW5pdGlvblR5cGUgPSBcIm90aGVyXCI7XG5cdGlmIChpc0VtcHR5KGFwcC5tYW5pZmVzdFR5cGUpKSB7XG5cdFx0cmV0dXJuIHR5cGU7XG5cdH1cblx0c3dpdGNoIChhcHAubWFuaWZlc3RUeXBlKSB7XG5cdFx0Y2FzZSBcImlubGluZS12aWV3XCI6IHtcblx0XHRcdHR5cGUgPSBcIndlYlwiO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNhc2UgXCJpbmxpbmUtZXh0ZXJuYWxcIjoge1xuXHRcdFx0dHlwZSA9IFwibmF0aXZlXCI7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBcImRlc2t0b3AtYnJvd3NlclwiOiB7XG5cdFx0XHR0eXBlID0gXCJvbmxpbmVOYXRpdmVcIjtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHlwZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG1hbmlmZXN0IHdoaWNoIGNhbiBiZSBwbGFpbiBzdHJpbmcgb3IgSlNPTi5cbiAqIEBwYXJhbSBhcHAgVGhlIGFwcCB0byBnZXQgdGhlIG1hbmlmZXN0IGZyb20uXG4gKiBAcmV0dXJucyBUaGUgbWFuaWZlc3QuXG4gKi9cbmZ1bmN0aW9uIGdldE1hbmlmZXN0RnJvbUZEQzMoYXBwOiBBcHBEZWZpbml0aW9uKTogc3RyaW5nIHwgdW5rbm93biB7XG5cdGxldCBtYW5pZmVzdDogc3RyaW5nIHwgdW5rbm93bjtcblxuXHRzd2l0Y2ggKGFwcC50eXBlKSB7XG5cdFx0Y2FzZSBcIndlYlwiOiB7XG5cdFx0XHRpZiAoIWlzRW1wdHkoYXBwPy5kZXRhaWxzKSkge1xuXHRcdFx0XHRjb25zdCBob3N0RGV0YWlscyA9IGFwcC5ob3N0TWFuaWZlc3RzPy5PcGVuRmluPy5kZXRhaWxzO1xuXHRcdFx0XHRpZiAoaXNPYmplY3QoaG9zdERldGFpbHMpKSB7XG5cdFx0XHRcdFx0bWFuaWZlc3QgPSB7XG5cdFx0XHRcdFx0XHR1cmw6IChhcHA/LmRldGFpbHMgYXMgV2ViQXBwRGV0YWlscykudXJsLFxuXHRcdFx0XHRcdFx0ZmRjM0ludGVyb3BBcGk6IFwiMi4wXCIsXG5cdFx0XHRcdFx0XHQuLi5ob3N0RGV0YWlsc1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bWFuaWZlc3QgPSB7XG5cdFx0XHRcdFx0XHR1cmw6IChhcHA/LmRldGFpbHMgYXMgV2ViQXBwRGV0YWlscykudXJsLFxuXHRcdFx0XHRcdFx0ZmRjM0ludGVyb3BBcGk6IFwiMi4wXCJcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBcIm5hdGl2ZVwiOiB7XG5cdFx0XHRpZiAoIWlzRW1wdHkoYXBwPy5kZXRhaWxzKSkge1xuXHRcdFx0XHQvLyBvdXIgbmF0aXZlIGFwaSBzdXBwb3J0cyBwYXRoIGFuZCBhcmd1bWVudHMuXG5cdFx0XHRcdG1hbmlmZXN0ID0gYXBwLmRldGFpbHMgYXMgTmF0aXZlQXBwRGV0YWlscztcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRjYXNlIFwib25saW5lTmF0aXZlXCI6IHtcblx0XHRcdGlmICghaXNFbXB0eShhcHA/LmRldGFpbHMpKSB7XG5cdFx0XHRcdG1hbmlmZXN0ID0gKGFwcD8uZGV0YWlscyBhcyBPbmxpbmVOYXRpdmVBcHBEZXRhaWxzKS51cmw7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBcIm90aGVyXCI6IHtcblx0XHRcdG1hbmlmZXN0ID0gYXBwLmhvc3RNYW5pZmVzdHM/Lk9wZW5GaW4/LmRldGFpbHM7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0ZGVmYXVsdDoge1xuXHRcdFx0bWFuaWZlc3QgPSBhcHAuZGV0YWlscztcblx0XHR9XG5cdH1cblx0cmV0dXJuIG1hbmlmZXN0O1xufVxuXG4vKipcbiAqIEdldCB0aGUgSG9zdCBEZXRhaWxzIGZyb20gdGhlIHBsYXRmb3JtIGFwcCBmb3IgdGhpcyBGREMzIDIuMCBBcHAgRGVmaW5pdGlvbi5cbiAqIEBwYXJhbSBhcHAgVGhlIHBsYXRmb3JtIGFwcCB0byBnZXQgdGhlIGluZm9ybWF0aW9uIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgaG9zdCBzcGVjaWZpYyBkZXRhaWxzLlxuICovXG5mdW5jdGlvbiBnZXRIb3N0TWFuaWZlc3RzRnJvbVBsYXRmb3JtQXBwKGFwcDogUGxhdGZvcm1BcHApOiBIb3N0TWFuaWZlc3RzIHtcblx0Y29uc3QgaG9zdE1hbmlmZXN0czogSG9zdE1hbmlmZXN0cyA9IHtcblx0XHRPcGVuRmluOiB7XG5cdFx0XHR0eXBlOiBhcHAubWFuaWZlc3RUeXBlLFxuXHRcdFx0ZGV0YWlsczogYXBwLm1hbmlmZXN0LFxuXHRcdFx0Y29uZmlnOiB7XG5cdFx0XHRcdGF1dG9zdGFydDogYXBwLmF1dG9zdGFydCxcblx0XHRcdFx0cHJpdmF0ZTogYXBwLnByaXZhdGUsXG5cdFx0XHRcdGluc3RhbmNlTW9kZTogYXBwLmluc3RhbmNlTW9kZVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0cmV0dXJuIGhvc3RNYW5pZmVzdHM7XG59XG4iLCJpbXBvcnQgdHlwZSBPcGVuRmluIGZyb20gXCJAb3BlbmZpbi9jb3JlXCI7XG5pbXBvcnQgeyBnZXRDdXJyZW50U3luYyB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB7IGNoZWNrQ29uZGl0aW9ucyB9IGZyb20gXCIuL2NvbmRpdGlvbnNcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZU1vZHVsZXMsIGxvYWRNb2R1bGVzIH0gZnJvbSBcIi4vbW9kdWxlc1wiO1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVIZWxwZXJzIH0gZnJvbSBcIi4vc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEluaXRPcHRpb25zSGFuZGxlcixcblx0SW5pdE9wdGlvbnNIYW5kbGVyT3B0aW9ucyxcblx0SW5pdE9wdGlvbnNMaWZlY3ljbGUsXG5cdEluaXRPcHRpb25zUHJvdmlkZXJPcHRpb25zLFxuXHRVc2VyQXBwQ29uZmlnQXJnc1xufSBmcm9tIFwiLi9zaGFwZXMvaW5pdC1vcHRpb25zLXNoYXBlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSwgcmFuZG9tVVVJRCB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IEFDVElPTl9QQVJBTV9OQU1FID0gXCJhY3Rpb25cIjtcbmNvbnN0IEFDVElPTl9QQVlMT0FEX1BBUkFNX05BTUUgPSBcInBheWxvYWRcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiSW5pdE9wdGlvbnNcIik7XG5cbmxldCBhY3Rpb25MaXN0ZW5lcnM6IHtcblx0W2FjdGlvbjogc3RyaW5nXToge1xuXHRcdFtzdWJzY3JpcHRpb25JZDogc3RyaW5nXToge1xuXHRcdFx0bGlmZWN5Y2xlOiBJbml0T3B0aW9uc0xpZmVjeWNsZTtcblx0XHRcdGFjdGlvbkhhbmRsZXI6IDxUPihyZXF1ZXN0ZWRBY3Rpb246IHN0cmluZywgcGF5bG9hZD86IFQpID0+IFByb21pc2U8dm9pZD47XG5cdFx0fTtcblx0fTtcbn0gPSB7fTtcbmxldCBhY3Rpb25MaXN0ZW5lck1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuY29uc3QgbGlzdGVuZXJzOiB7XG5cdFtwYXJhbU5hbWU6IHN0cmluZ106IHtcblx0XHRbc3Vic2NyaXB0aW9uSWQ6IHN0cmluZ106IChpbml0T3B0aW9uczogVXNlckFwcENvbmZpZ0FyZ3MpID0+IFByb21pc2U8dm9pZD47XG5cdH07XG59ID0ge307XG5jb25zdCBsaXN0ZW5lck1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG4vKipcbiAqIEluaXRpYWxpemUgdGhlIGluaXQgb3B0aW9ucyBwcm92aWRlci5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgaW5pdCBvcHRpb25zIHByb3ZpZGVyLlxuICogQHBhcmFtIGhlbHBlcnMgTW9kdWxlIGhlbHBlcnMgdG8gcGFzcyB0byBhbnkgbG9hZGVkIG1vZHVsZXMuXG4gKiBAcGFyYW0gbGlmZWN5Y2xlIFdoZW4gaXMgdGhlIGluaXQgYmVpbmcgY2FsbGVkIGR1cmluZyB0aGUgYm9vdHN0cmFwIGxpZmVjeWNsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQoXG5cdG9wdGlvbnM6IEluaXRPcHRpb25zUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkLFxuXHRoZWxwZXJzOiBNb2R1bGVIZWxwZXJzLFxuXHRsaWZlY3ljbGU6IEluaXRPcHRpb25zTGlmZWN5Y2xlXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0Ly8gSW5pdCBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLCBzbyByZXNldCBhbnkgYWN0aW9uIGxpc3RlbmVycyBmcm9tIG1vZHVsZXNcblx0YWN0aW9uTGlzdGVuZXJzID0ge307XG5cdGFjdGlvbkxpc3RlbmVyTWFwID0ge307XG5cblx0bG9nZ2VyLmluZm8oXCJJbml0aWFsaXppbmcgaW5pdCBvcHRpb25zIHByb3ZpZGVyLlwiKTtcblx0Y29uc3QgaW5pdE9wdGlvbnNNb2R1bGVzID0gYXdhaXQgbG9hZE1vZHVsZXM8SW5pdE9wdGlvbnNIYW5kbGVyLCB1bmtub3duLCBJbml0T3B0aW9uc0hhbmRsZXJPcHRpb25zPihcblx0XHRvcHRpb25zLFxuXHRcdFwiaW5pdE9wdGlvbnNcIlxuXHQpO1xuXG5cdGF3YWl0IGluaXRpYWxpemVNb2R1bGVzPEluaXRPcHRpb25zSGFuZGxlciwgTW9kdWxlSGVscGVycywgSW5pdE9wdGlvbnNIYW5kbGVyT3B0aW9ucz4oXG5cdFx0aW5pdE9wdGlvbnNNb2R1bGVzLFxuXHRcdGhlbHBlcnNcblx0KTtcblxuXHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cblx0Zm9yIChjb25zdCBpbml0T3B0aW9uc01vZHVsZSBvZiBpbml0T3B0aW9uc01vZHVsZXMpIHtcblx0XHRjb25zdCBzdXBwb3J0ZWRBY3Rpb25zID0gaW5pdE9wdGlvbnNNb2R1bGUuZGVmaW5pdGlvbi5kYXRhPy5zdXBwb3J0ZWRBY3Rpb25zID8/IFtdO1xuXHRcdGZvciAoY29uc3Qgc3VwcG9ydGVkQWN0aW9uIG9mIHN1cHBvcnRlZEFjdGlvbnMpIHtcblx0XHRcdHJlZ2lzdGVyQWN0aW9uTGlzdGVuZXIoXG5cdFx0XHRcdHN1cHBvcnRlZEFjdGlvbixcblx0XHRcdFx0aW5pdE9wdGlvbnNNb2R1bGUuZGVmaW5pdGlvbi5kYXRhPy5saWZlY3ljbGUgPz8gXCJhZnRlci1ib290c3RyYXBcIixcblx0XHRcdFx0YXN5bmMgKHJlcXVlc3RlZEFjdGlvbjogc3RyaW5nLCBwYXlsb2FkPzogdW5rbm93bikgPT4ge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdGF3YWl0IGNoZWNrQ29uZGl0aW9ucyhwbGF0Zm9ybSwgaW5pdE9wdGlvbnNNb2R1bGUuZGVmaW5pdGlvbi5kYXRhPy5jb25kaXRpb25zLCB7XG5cdFx0XHRcdFx0XHRcdGNhbGxlclR5cGU6IFwiaW5pdC1vcHRpb25zXCIsXG5cdFx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IHtcblx0XHRcdFx0XHRcdFx0XHRtb2R1bGU6IGluaXRPcHRpb25zTW9kdWxlLFxuXHRcdFx0XHRcdFx0XHRcdHN1cHBvcnRlZEFjdGlvblxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFx0XHRcdGBBY3Rpb246ICR7cmVxdWVzdGVkQWN0aW9ufSBiZWluZyBoYW5kbGVkIGJ5IG1vZHVsZSAke2luaXRPcHRpb25zTW9kdWxlLmRlZmluaXRpb24uaWR9YFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGF3YWl0IGluaXRPcHRpb25zTW9kdWxlLmltcGxlbWVudGF0aW9uLmFjdGlvbihyZXF1ZXN0ZWRBY3Rpb24sIHBheWxvYWQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBhcHAgPSBmaW4uQXBwbGljYXRpb24uZ2V0Q3VycmVudFN5bmMoKTtcblx0Y29uc3QgYXBwSW5mbyA9IGF3YWl0IGFwcC5nZXRJbmZvKCk7XG5cdGNvbnN0IGN1c3RvbUluaXRPcHRpb25zID0gYXBwSW5mby5pbml0aWFsT3B0aW9ucyBhcyBPcGVuRmluLkFwcGxpY2F0aW9uQ3JlYXRpb25PcHRpb25zICYge1xuXHRcdHVzZXJBcHBDb25maWdBcmdzPzogVXNlckFwcENvbmZpZ0FyZ3M7XG5cdH07XG5cblx0aWYgKCFpc0VtcHR5KGN1c3RvbUluaXRPcHRpb25zPy51c2VyQXBwQ29uZmlnQXJncykpIHtcblx0XHRsb2dnZXIuaW5mbyhcIlJlY2VpdmVkIGR1cmluZyBzdGFydHVwXCIsIGN1c3RvbUluaXRPcHRpb25zPy51c2VyQXBwQ29uZmlnQXJncyk7XG5cdFx0aWYgKCFpc0VtcHR5KGN1c3RvbUluaXRPcHRpb25zPy51c2VyQXBwQ29uZmlnQXJnc1tBQ1RJT05fUEFSQU1fTkFNRV0pKSB7XG5cdFx0XHRhd2FpdCBub3RpZnlBY3Rpb25MaXN0ZW5lcnMoY3VzdG9tSW5pdE9wdGlvbnM/LnVzZXJBcHBDb25maWdBcmdzLCBsaWZlY3ljbGUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhd2FpdCBub3RpZnlMaXN0ZW5lcnMoY3VzdG9tSW5pdE9wdGlvbnM/LnVzZXJBcHBDb25maWdBcmdzKTtcblx0XHR9XG5cdH1cblxuXHRpZiAobGlmZWN5Y2xlID09PSBcImFmdGVyLWJvb3RzdHJhcFwiKSB7XG5cdFx0YXdhaXQgcGxhdGZvcm0uQXBwbGljYXRpb24uYWRkTGlzdGVuZXIoXCJydW4tcmVxdWVzdGVkXCIsIHF1ZXJ5V2hpbGVSdW5uaW5nKTtcblx0fVxuXHRsb2dnZXIuaW5mbyhcIkluaXQgb3B0aW9ucyBwcm92aWRlciBpbml0aWFsaXplZC5cIik7XG59XG5cbi8qKlxuICogTWFudWFsbHkgcmVnaXN0ZXIgYW4gYWN0aW9uIGxpc3RlbmVyLlxuICogQHBhcmFtIGFjdGlvbiBUaGUgYWN0aW9uIHRvIHJlZ2lzdGVyLlxuICogQHBhcmFtIGxpZmVjeWNsZSBUaGUgbGlmZWN5Y2xlIGV2ZW50IGl0IGlzIHVzZWQgYnkuXG4gKiBAcGFyYW0gYWN0aW9uSGFuZGxlciBUaGUgaGFuZGxlIHRvIGNhbGwgd2hlbiBpdCBpcyB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJucyBBIHN1YnNjcmlwdGlvbiBpZCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlbW92ZSB0aGUgbGlzdGVuZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckFjdGlvbkxpc3RlbmVyKFxuXHRhY3Rpb246IHN0cmluZyxcblx0bGlmZWN5Y2xlOiBJbml0T3B0aW9uc0xpZmVjeWNsZSxcblx0YWN0aW9uSGFuZGxlcjogPFQ+KHJlcXVlc3RlZEFjdGlvbjogc3RyaW5nLCBwYXlsb2FkPzogVCkgPT4gUHJvbWlzZTx2b2lkPlxuKTogc3RyaW5nIHtcblx0Y29uc3Qgc3Vic2NyaXB0aW9uSWQgPSByYW5kb21VVUlEKCk7XG5cdGlmICghYWN0aW9uTGlzdGVuZXJzW2FjdGlvbl0pIHtcblx0XHRhY3Rpb25MaXN0ZW5lcnNbYWN0aW9uXSA9IHt9O1xuXHR9XG5cdGFjdGlvbkxpc3RlbmVyc1thY3Rpb25dW3N1YnNjcmlwdGlvbklkXSA9IHtcblx0XHRsaWZlY3ljbGUsXG5cdFx0YWN0aW9uSGFuZGxlclxuXHR9O1xuXHRhY3Rpb25MaXN0ZW5lck1hcFtzdWJzY3JpcHRpb25JZF0gPSBhY3Rpb247XG5cdHJldHVybiBzdWJzY3JpcHRpb25JZDtcbn1cblxuLyoqXG4gKiBNYW51YWxseSByZWdpc3RlciBhIGxpc3RlbmVyLlxuICogQHBhcmFtIHBhcmFtTmFtZSBUaGUgcGFyYW0gbmFtZSB0byBsb29rIGZvciBpbiB0aGUgaW5pdCBvcHRpb24uXG4gKiBAcGFyYW0gaGFuZGxlciBUaGUgaGFuZGxlciB0byBjYWxsIHdoZW4gYSBtYXRjaCBvbiB0aGUgcGFyYW0gbmFtZSBvY2N1cnMuXG4gKiBAcmV0dXJucyBUaGUgc3Vic2NyaXB0aW9uIGlkIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVtb3ZlIHRoZSBsaXN0ZW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTGlzdGVuZXIoXG5cdHBhcmFtTmFtZTogc3RyaW5nLFxuXHRoYW5kbGVyOiAoaW5pdE9wdGlvbnM6IFVzZXJBcHBDb25maWdBcmdzKSA9PiBQcm9taXNlPHZvaWQ+XG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRpZiAocGFyYW1OYW1lID09PSBBQ1RJT05fUEFSQU1fTkFNRSkge1xuXHRcdGxvZ2dlci53YXJuKFwiUGxlYXNlIHVzZSByZWdpc3RlckFjdGlvbkxpc3RlbmVyIGlmIHlvdSB3aXNoIHRvIGxpc3RlbiBmb3IgYW4gYWN0aW9uXCIpO1xuXHRcdHJldHVybjtcblx0fVxuXHRjb25zdCBzdWJzY3JpcHRpb25JZCA9IHJhbmRvbVVVSUQoKTtcblx0aWYgKCFsaXN0ZW5lcnNbcGFyYW1OYW1lXSkge1xuXHRcdGxpc3RlbmVyc1twYXJhbU5hbWVdID0ge307XG5cdH1cblx0bGlzdGVuZXJzW3BhcmFtTmFtZV1bc3Vic2NyaXB0aW9uSWRdID0gaGFuZGxlcjtcblx0bGlzdGVuZXJNYXBbc3Vic2NyaXB0aW9uSWRdID0gcGFyYW1OYW1lO1xuXHRyZXR1cm4gc3Vic2NyaXB0aW9uSWQ7XG59XG5cbi8qKlxuICogUmVtb3ZlIGEgbGlzdGVuZXIgYnkgc3Vic2NyaXB0aW9uIGlkLlxuICogQHBhcmFtIHN1YnNjcmlwdGlvbklkIFRoZSBpZCB0byByZW1vdmUuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBpdGVtIHdhcyByZW1vdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIoc3Vic2NyaXB0aW9uSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRsZXQgcmVtb3ZlZCA9IGZhbHNlO1xuXHRpZiAoIWlzRW1wdHkobGlzdGVuZXJNYXBbc3Vic2NyaXB0aW9uSWRdKSkge1xuXHRcdGNvbnN0IHBhcmFtTmFtZSA9IGxpc3RlbmVyTWFwW3N1YnNjcmlwdGlvbklkXTtcblx0XHRjb25zdCBsaXN0ZW5lciA9IGxpc3RlbmVyc1twYXJhbU5hbWVdO1xuXHRcdGRlbGV0ZSBsaXN0ZW5lck1hcFtzdWJzY3JpcHRpb25JZF07XG5cdFx0aWYgKGxpc3RlbmVyW3N1YnNjcmlwdGlvbklkXSkge1xuXHRcdFx0ZGVsZXRlIGxpc3RlbmVyW3N1YnNjcmlwdGlvbklkXTtcblx0XHRcdHJlbW92ZWQgPSB0cnVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVtb3ZlZDtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYW4gYWN0aW9uIGxpc3RlbmVyIGJ5IHN1YnNjcmlwdGlvbiBpZC5cbiAqIEBwYXJhbSBpZCBUaGUgaWQgdG8gcmVtb3ZlLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgaXRlbSB3YXMgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUFjdGlvbkxpc3RlbmVyKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcblx0bGV0IHJlbW92ZWQgPSBmYWxzZTtcblx0aWYgKCFpc0VtcHR5KGFjdGlvbkxpc3RlbmVyTWFwW2lkXSkpIHtcblx0XHRjb25zdCBhY3Rpb24gPSBhY3Rpb25MaXN0ZW5lck1hcFtpZF07XG5cdFx0Y29uc3QgYWN0aW9uTGlzdGVuZXIgPSBhY3Rpb25MaXN0ZW5lcnNbYWN0aW9uXTtcblx0XHRkZWxldGUgYWN0aW9uTGlzdGVuZXJNYXBbaWRdO1xuXHRcdGlmIChhY3Rpb25MaXN0ZW5lcltpZF0pIHtcblx0XHRcdGRlbGV0ZSBhY3Rpb25MaXN0ZW5lcltpZF07XG5cdFx0XHRyZW1vdmVkID0gdHJ1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlbW92ZWQ7XG59XG5cbi8qKlxuICogVHJ5IGFuZCBleHRyYWN0IHBhcmFtcyBmcm9tIHRoZSBpbml0IG9wdGlvbnMgcGFyYW1zLlxuICogQHBhcmFtIGluaXRPcHRpb25zIFRoZSBpbml0IHBhcmFtIHRvIGV4dHJhY3QgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBleHRyYWN0IHBheWxvYWQuXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RQYXlsb2FkRnJvbVBhcmFtczxUPihpbml0T3B0aW9ucz86IFVzZXJBcHBDb25maWdBcmdzKTogVCB8IHVuZGVmaW5lZCB7XG5cdHRyeSB7XG5cdFx0aWYgKHR5cGVvZiBpbml0T3B0aW9ucz8ucGF5bG9hZCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0Y29uc3QgcGxhaW5Kc29uID0gYXRvYihpbml0T3B0aW9ucz8ucGF5bG9hZCk7XG5cdFx0XHRjb25zdCBwYXlsb2FkID0gSlNPTi5wYXJzZShwbGFpbkpzb24pIGFzIFQ7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIkV4dHJhY3RlZCBwYXlsb2FkXCIsIHBheWxvYWQpO1xuXHRcdFx0cmV0dXJuIHBheWxvYWQ7XG5cdFx0fVxuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRsb2dnZXIuZXJyb3IoXCJFcnJvciBkZWNvZGluZyBwYXlsb2FkLCBpdCBzaG91bGQgYmUgQmFzZTY0IGVuY29kZWRcIiwgaW5pdE9wdGlvbnMsIGVycik7XG5cdH1cbn1cblxuLyoqXG4gKiBOb3RpZnkgYW55Ym9keSBzdWJzY3JpYmVkIHRvIHRoZSBhY3Rpb24gbGlzdGVuZXJzLlxuICogQHBhcmFtIGluaXRPcHRpb25zIFRoZSBpbml0IG9wdGlvbnMgdG8gZXh0cmFjdCBmcm9tLlxuICogQHBhcmFtIGxpZmVjeWNsZSBUaGUgbGlmZWN5Y2xlIGV2ZW50IHRvIHVzZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbm90aWZ5QWN0aW9uTGlzdGVuZXJzKFxuXHRpbml0T3B0aW9uczogVXNlckFwcENvbmZpZ0FyZ3MsXG5cdGxpZmVjeWNsZTogSW5pdE9wdGlvbnNMaWZlY3ljbGVcbik6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBhY3Rpb24gPSBpbml0T3B0aW9uc1tBQ1RJT05fUEFSQU1fTkFNRV07XG5cdGNvbnN0IHBheWxvYWQgPSAhaXNFbXB0eShpbml0T3B0aW9uc1tBQ1RJT05fUEFZTE9BRF9QQVJBTV9OQU1FXSlcblx0XHQ/IGV4dHJhY3RQYXlsb2FkRnJvbVBhcmFtcyhpbml0T3B0aW9ucylcblx0XHQ6IHVuZGVmaW5lZDtcblx0Y29uc3QgYXZhaWxhYmxlTGlzdGVuZXJzID0gYWN0aW9uTGlzdGVuZXJzW2FjdGlvbl07XG5cdGlmICghaXNFbXB0eShhdmFpbGFibGVMaXN0ZW5lcnMpKSB7XG5cdFx0Y29uc3Qgc3Vic2NyaWJlcklkcyA9IE9iamVjdC5rZXlzKGF2YWlsYWJsZUxpc3RlbmVycyk7XG5cblx0XHRmb3IgKGNvbnN0IHN1YnNjcmliZXJJZCBvZiBzdWJzY3JpYmVySWRzKSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhgTm90aWZ5aW5nIHN1YnNjcmliZXIgd2l0aCBzdWJzY3JpcHRpb24gSWQ6ICR7c3Vic2NyaWJlcklkfSBvZiBhY3Rpb246ICR7YWN0aW9ufWApO1xuXHRcdFx0Y29uc3QgbGlzdGVuZXIgPSBhdmFpbGFibGVMaXN0ZW5lcnNbc3Vic2NyaWJlcklkXTtcblxuXHRcdFx0aWYgKGxpc3RlbmVyPy5saWZlY3ljbGUgPT09IGxpZmVjeWNsZSkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGNvbnN0IGxpc3RlbiA9IGF2YWlsYWJsZUxpc3RlbmVyc1tzdWJzY3JpYmVySWRdO1xuXHRcdFx0XHRcdGlmIChsaXN0ZW4pIHtcblx0XHRcdFx0XHRcdGF3YWl0IGxpc3Rlbi5hY3Rpb25IYW5kbGVyKGFjdGlvbiwgcGF5bG9hZCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFx0XHRcdGBFcnJvciBleGVjdXRpbmcgYWN0aW9uOiAke2FjdGlvbn0gYWdhaW5zdCByZWdpc3RlcmVkIGxpc3RlbmVyOiAke3N1YnNjcmliZXJJZH0uYCxcblx0XHRcdFx0XHRcdGVycm9yXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIE5vdGlmeSBhbnlib2R5IHN1YnNjcmliZWQgdG8gdGhlIGxpc3RlbmVycy5cbiAqIEBwYXJhbSBpbml0T3B0aW9ucyBUaGUgaW5pdCBvcHRpb25zIHRvIGV4dHJhY3QgZnJvbS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbm90aWZ5TGlzdGVuZXJzKGluaXRPcHRpb25zOiBVc2VyQXBwQ29uZmlnQXJncyk6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBjdXN0b21QYXJhbUlkcyA9IE9iamVjdC5rZXlzKGxpc3RlbmVycyk7XG5cdGxldCBsaXN0ZW5lcklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0Zm9yIChjb25zdCBpZCBvZiBjdXN0b21QYXJhbUlkcykge1xuXHRcdGlmICghaXNFbXB0eShpbml0T3B0aW9uc1tpZF0pKSB7XG5cdFx0XHRsaXN0ZW5lcklkID0gaWQ7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHRpZiAoIWlzRW1wdHkobGlzdGVuZXJJZCkpIHtcblx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdGBJbml0IHBhcmFtIGhhcyBiZWVuIHBhc3NlZCBhbmQgaXQgaGFzIGEgbWF0Y2hpbmcgbGlzdGVuZXIgKCR7bGlzdGVuZXJJZH0pLiBQYXNzaW5nIG9uIGluaXQgb3B0aW9ucyB0byBsaXN0ZW5lcnNgXG5cdFx0KTtcblx0XHRjb25zdCBhdmFpbGFibGVMaXN0ZW5lcnMgPSBsaXN0ZW5lcnNbbGlzdGVuZXJJZF07XG5cdFx0aWYgKCFpc0VtcHR5KGF2YWlsYWJsZUxpc3RlbmVycykpIHtcblx0XHRcdGNvbnN0IHN1YnNjcmliZXJJZHMgPSBPYmplY3Qua2V5cyhhdmFpbGFibGVMaXN0ZW5lcnMpO1xuXG5cdFx0XHRmb3IgKGNvbnN0IHN1YnNjcmliZXJJZCBvZiBzdWJzY3JpYmVySWRzKSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBOb3RpZnlpbmcgc3Vic2NyaWJlciB3aXRoIHN1YnNjcmlwdGlvbiBJZDogJHtzdWJzY3JpYmVySWR9IG9mIHJlcXVlc3Q6ICR7bGlzdGVuZXJJZH1gKTtcblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGNvbnN0IGxpc3RlbiA9IGF2YWlsYWJsZUxpc3RlbmVyc1tzdWJzY3JpYmVySWRdO1xuXHRcdFx0XHRcdGlmIChsaXN0ZW4pIHtcblx0XHRcdFx0XHRcdGF3YWl0IGxpc3Rlbihpbml0T3B0aW9ucyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFx0XHRcdGBFcnJvciBleGVjdXRpbmcgaGFuZGxlciBmb3IgcGFyYW1ldGVyOiAke2xpc3RlbmVySWR9IGFnYWluc3QgcmVnaXN0ZXJlZCBsaXN0ZW5lcjogJHtzdWJzY3JpYmVySWR9LmAsXG5cdFx0XHRcdFx0XHRlcnJvclxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBIYW5kbGUgYW4gaW5pdCBvcHRpb25zIGV2ZW50IHRyaWdnZXJlZCB3aGVuIHRoZSBhcHAgd2FzIGFscmVhZHkgc3RhcnRlZC5cbiAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgY29udGFpbmVyIHRoZSBuZXcgaW5pdCBvcHRpb25zLlxuICogQHBhcmFtIGV2ZW50LnVzZXJBcHBDb25maWdBcmdzIFRoZSBjb25maWcgYXJncyBjb250YWluaW5nIHRoZSBpbml0IG9wdGlvbnMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHF1ZXJ5V2hpbGVSdW5uaW5nKGV2ZW50OiB7IHVzZXJBcHBDb25maWdBcmdzPzogVXNlckFwcENvbmZpZ0FyZ3MgfSk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoIWlzRW1wdHkoZXZlbnQ/LnVzZXJBcHBDb25maWdBcmdzKSkge1xuXHRcdGxvZ2dlci5pbmZvKFwiUmVjZWl2ZWQgd2hpbGUgcGxhdGZvcm0gaXMgcnVubmluZ1wiLCBldmVudC51c2VyQXBwQ29uZmlnQXJncyk7XG5cdFx0aWYgKCFpc0VtcHR5KGV2ZW50LnVzZXJBcHBDb25maWdBcmdzW0FDVElPTl9QQVJBTV9OQU1FXSkpIHtcblx0XHRcdGF3YWl0IG5vdGlmeUFjdGlvbkxpc3RlbmVycyhldmVudC51c2VyQXBwQ29uZmlnQXJncywgXCJhZnRlci1ib290c3RyYXBcIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGF3YWl0IG5vdGlmeUxpc3RlbmVycyhldmVudC51c2VyQXBwQ29uZmlnQXJncyk7XG5cdFx0fVxuXHR9XG59XG4iLCJpbXBvcnQgdHlwZSBPcGVuRmluIGZyb20gXCJAb3BlbmZpbi9jb3JlXCI7XG5pbXBvcnQge1xuXHRCdXR0b25TdHlsZSxcblx0Q0xJVGVtcGxhdGUsXG5cdHR5cGUgQ0xJRmlsdGVyLFxuXHR0eXBlIEhvbWVEaXNwYXRjaGVkU2VhcmNoUmVzdWx0LFxuXHR0eXBlIEhvbWVTZWFyY2hMaXN0ZW5lclJlc3BvbnNlLFxuXHR0eXBlIEhvbWVTZWFyY2hSZXNwb25zZSxcblx0dHlwZSBIb21lU2VhcmNoUmVzdWx0XG59IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2VcIjtcbmltcG9ydCB7IGdldEN1cnJlbnRTeW5jIH0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZS1wbGF0Zm9ybVwiO1xuaW1wb3J0IHsgY2hlY2tDb25kaXRpb24gfSBmcm9tIFwiLi9jb25kaXRpb25zXCI7XG5pbXBvcnQgKiBhcyBlbmRwb2ludFByb3ZpZGVyIGZyb20gXCIuL2VuZHBvaW50XCI7XG5pbXBvcnQgeyBsYXVuY2ggfSBmcm9tIFwiLi9sYXVuY2hcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHsgTUFOSUZFU1RfVFlQRVMgfSBmcm9tIFwiLi9tYW5pZmVzdC10eXBlc1wiO1xuaW1wb3J0IHtcblx0Y2xvc2Vkb3duTW9kdWxlLFxuXHRjbG9zZWRvd25Nb2R1bGVzLFxuXHRpbml0aWFsaXplTW9kdWxlLFxuXHRpbml0aWFsaXplTW9kdWxlcyxcblx0bG9hZE1vZHVsZXNcbn0gZnJvbSBcIi4vbW9kdWxlc1wiO1xuaW1wb3J0IHsgbGF1bmNoUGFnZSwgbGF1bmNoVmlldyB9IGZyb20gXCIuL3BsYXRmb3JtL2Jyb3dzZXJcIjtcbmltcG9ydCAqIGFzIHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIgZnJvbSBcIi4vcGxhdGZvcm0vcGxhdGZvcm0tc3BsYXNoXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEVuZHBvaW50SW50ZWdyYXRpb25zUHJlZmVyZW5jZXNHZXRSZXF1ZXN0LFxuXHRFbmRwb2ludEludGVncmF0aW9uc1ByZWZlcmVuY2VzR2V0UmVzcG9uc2UsXG5cdEVuZHBvaW50SW50ZWdyYXRpb25zUHJlZmVyZW5jZXNTZXRSZXF1ZXN0LFxuXHRJbnRlZ3JhdGlvbkhlbHBlcnMsXG5cdEludGVncmF0aW9uTW9kdWxlLFxuXHRJbnRlZ3JhdGlvbk1vZHVsZURlZmluaXRpb24sXG5cdEludGVncmF0aW9uUHJvdmlkZXJPcHRpb25zXG59IGZyb20gXCIuL3NoYXBlcy9pbnRlZ3JhdGlvbnMtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IE1vZHVsZUVudHJ5LCBNb2R1bGVIZWxwZXJzIH0gZnJvbSBcIi4vc2hhcGVzL21vZHVsZS1zaGFwZXNcIjtcbmltcG9ydCB7IHNoYXJlIH0gZnJvbSBcIi4vc2hhcmVcIjtcbmltcG9ydCAqIGFzIHRlbXBsYXRlSGVscGVycyBmcm9tIFwiLi90ZW1wbGF0ZXNcIjtcbmltcG9ydCB7IGNyZWF0ZUJ1dHRvbiwgY3JlYXRlQ29udGFpbmVyLCBjcmVhdGVIZWxwLCBjcmVhdGVJbWFnZSwgY3JlYXRlVGV4dCwgY3JlYXRlVGl0bGUgfSBmcm9tIFwiLi90ZW1wbGF0ZXNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJJbnRlZ3JhdGlvbnNcIik7XG5cbmxldCBpbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9uczogSW50ZWdyYXRpb25Qcm92aWRlck9wdGlvbnM7XG5sZXQgaW50ZWdyYXRpb25Nb2R1bGVzOiBNb2R1bGVFbnRyeTxcblx0SW50ZWdyYXRpb25Nb2R1bGUsXG5cdEludGVncmF0aW9uSGVscGVycyxcblx0dW5rbm93bixcblx0SW50ZWdyYXRpb25Nb2R1bGVEZWZpbml0aW9uXG4+W10gPSBbXTtcbmxldCBpbnRlZ3JhdGlvbkhlbHBlcnM6IEludGVncmF0aW9uSGVscGVycztcblxuY29uc3QgUE9QVUxBVEVfUVVFUlkgPSBcIlBvcHVsYXRlIFF1ZXJ5XCI7XG5cbmNvbnN0IElOVEVHUkFUSU9OU19QUkVGRVJFTkNFX0VORFBPSU5UX1NFVCA9IFwiaW50ZWdyYXRpb24tcHJlZmVyZW5jZXMtc2V0XCI7XG5jb25zdCBJTlRFR1JBVElPTlNfUFJFRkVSRU5DRV9FTkRQT0lOVF9HRVQgPSBcImludGVncmF0aW9uLXByZWZlcmVuY2VzLWdldFwiO1xuXG4vKipcbiAqIEluaXRpYWxpemUgYWxsIHRoZSBpbnRlZ3JhdGlvbnMuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgaW50ZWdyYXRpb24gcHJvdmlkZXIgc2V0dGluZ3MuXG4gKiBAcGFyYW0gaGVscGVycyBNb2R1bGUgaGVscGVycyB0byBwYXNzIHRvIGFueSBsb2FkZWQgbW9kdWxlcy5cbiAqIEBwYXJhbSBzZXRTZWFyY2hRdWVyeSBUaGUgc2V0IHNlYXJjaCBxdWVyeSBmb3IgdGhlIGhvbWUgY29tcG9uZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdChcblx0b3B0aW9uczogSW50ZWdyYXRpb25Qcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQsXG5cdGhlbHBlcnM6IE1vZHVsZUhlbHBlcnMsXG5cdHNldFNlYXJjaFF1ZXJ5OiAocXVlcnk6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChvcHRpb25zKSB7XG5cdFx0b3B0aW9ucy5tb2R1bGVzID0gb3B0aW9ucy5tb2R1bGVzID8/IG9wdGlvbnMuaW50ZWdyYXRpb25zO1xuXHRcdGxvZ2dlci5pbmZvKFwiSW5pdGlhbGl6aW5nIGludGVncmF0aW9ucy5cIik7XG5cdFx0aW50ZWdyYXRpb25Qcm92aWRlck9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdGludGVncmF0aW9uSGVscGVycyA9IHtcblx0XHRcdC4uLmhlbHBlcnMsXG5cdFx0XHR0ZW1wbGF0ZUhlbHBlcnMsXG5cdFx0XHRsYXVuY2hWaWV3LFxuXHRcdFx0bGF1bmNoUGFnZSxcblx0XHRcdGxhdW5jaFNuYXBzaG90OiBhc3luYyAobWFuaWZlc3RVcmwpOiBQcm9taXNlPE9wZW5GaW4uSWRlbnRpdHlbXT4gPT4ge1xuXHRcdFx0XHRjb25zdCBpZGVudGl0aWVzID0gYXdhaXQgbGF1bmNoKHtcblx0XHRcdFx0XHRtYW5pZmVzdFR5cGU6IE1BTklGRVNUX1RZUEVTLlNuYXBzaG90LmlkLFxuXHRcdFx0XHRcdG1hbmlmZXN0OiBtYW5pZmVzdFVybCxcblx0XHRcdFx0XHRhcHBJZDogXCJcIixcblx0XHRcdFx0XHR0aXRsZTogXCJcIixcblx0XHRcdFx0XHRpY29uczogW10sXG5cdFx0XHRcdFx0cHVibGlzaGVyOiBcIlwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gaWRlbnRpdGllcyA/IGlkZW50aXRpZXMubWFwKChpZGVudGl0eSkgPT4gKHsgdXVpZDogaWRlbnRpdHkudXVpZCwgbmFtZTogaWRlbnRpdHkubmFtZSB9KSkgOiBbXTtcblx0XHRcdH0sXG5cdFx0XHRvcGVuVXJsOiBhc3luYyAodXJsKSA9PiBmaW4uU3lzdGVtLm9wZW5VcmxXaXRoQnJvd3Nlcih1cmwpLFxuXHRcdFx0c2V0U2VhcmNoUXVlcnksXG5cdFx0XHRjb25kaXRpb246IGFzeW5jIChjb25kaXRpb25JZCk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuXHRcdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHRcdHJldHVybiBjaGVja0NvbmRpdGlvbihwbGF0Zm9ybSwgY29uZGl0aW9uSWQpO1xuXHRcdFx0fSxcblx0XHRcdHNoYXJlLFxuXHRcdFx0Z2V0UGxhdGZvcm06IGdldEN1cnJlbnRTeW5jXG5cdFx0fTtcblxuXHRcdC8vIE1hcCB0aGUgb2xkIG1vZHVsZVVybCBwcm9wZXJ0aWVzIHRvIHVybFxuXHRcdGlmIChvcHRpb25zLm1vZHVsZXMpIHtcblx0XHRcdGZvciAoY29uc3QgaW50ZWdyYXRpb24gb2Ygb3B0aW9ucy5tb2R1bGVzKSB7XG5cdFx0XHRcdGludGVncmF0aW9uLnVybCA9IGludGVncmF0aW9uLnVybCA/PyBpbnRlZ3JhdGlvbi5tb2R1bGVVcmw7XG5cdFx0XHRcdGRlbGV0ZSBpbnRlZ3JhdGlvbi5tb2R1bGVVcmw7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gTG9hZCB0aGUgbW9kdWxlc1xuXHRcdGludGVncmF0aW9uTW9kdWxlcyA9IGF3YWl0IGxvYWRNb2R1bGVzPFxuXHRcdFx0SW50ZWdyYXRpb25Nb2R1bGUsXG5cdFx0XHRJbnRlZ3JhdGlvbkhlbHBlcnMsXG5cdFx0XHR1bmtub3duLFxuXHRcdFx0SW50ZWdyYXRpb25Nb2R1bGVEZWZpbml0aW9uXG5cdFx0PihvcHRpb25zLCBcImludGVncmF0aW9uc1wiKTtcblxuXHRcdC8vIE5vdyBmaWx0ZXIgdGhlIGxpc3QgdG8gdGhvc2Ugd2l0aCBhdXRvU3RhcnQgc2V0LCBvciBub3RoaW5nIHNldFxuXHRcdGNvbnN0IGluaXRNb2R1bGVzOiBNb2R1bGVFbnRyeTxJbnRlZ3JhdGlvbk1vZHVsZSwgSW50ZWdyYXRpb25IZWxwZXJzPltdID0gW107XG5cdFx0Zm9yIChjb25zdCBpbnRlZ3JhdGlvbiBvZiBpbnRlZ3JhdGlvbk1vZHVsZXMpIHtcblx0XHRcdGNvbnN0IGludGVncmF0aW9uUHJlZmVyZW5jZSA9IGF3YWl0IGdldFByZWZlcmVuY2VzKGludGVncmF0aW9uLmRlZmluaXRpb24uaWQpO1xuXHRcdFx0aW50ZWdyYXRpb24uZGVmaW5pdGlvbi5hdXRvU3RhcnQgPVxuXHRcdFx0XHRpbnRlZ3JhdGlvblByZWZlcmVuY2U/LmF1dG9TdGFydCA/PyBpbnRlZ3JhdGlvbi5kZWZpbml0aW9uLmF1dG9TdGFydCA/PyB0cnVlO1xuXHRcdFx0aWYgKGludGVncmF0aW9uLmRlZmluaXRpb24uYXV0b1N0YXJ0KSB7XG5cdFx0XHRcdGluaXRNb2R1bGVzLnB1c2goaW50ZWdyYXRpb24pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEluaXRpYWxpemUganVzdCB0aGUgYXV0byBzdGFydCBtb2R1bGVzXG5cdFx0YXdhaXQgaW5pdGlhbGl6ZU1vZHVsZXMoaW5pdE1vZHVsZXMsIGludGVncmF0aW9uSGVscGVycywgYXN5bmMgKGRlZikgPT4ge1xuXHRcdFx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci51cGRhdGVQcm9ncmVzcyhgJHtkZWYudGl0bGV9IEludGVncmF0aW9uYCk7XG5cdFx0fSk7XG5cdFx0bG9nZ2VyLmluZm8oXCJJbnRlZ3JhdGlvbnMgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuXCIpO1xuXHR9XG59XG5cbi8qKlxuICogQ2xvc2UgZG93biBhbGwgdGhlIGludGVncmF0aW9ucy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNsb3NlZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcblx0YXdhaXQgY2xvc2Vkb3duTW9kdWxlcyhcImludGVncmF0aW9uc1wiKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHNlYXJjaCByZXN1bHRzIGZyb20gYWxsIHRoZSBpbnRlZ3JhdGlvbiBwcm92aWRlcnMuXG4gKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IHRvIGdldCB0aGUgc2VhcmNoIHJlc3VsdHMgZm9yLlxuICogQHBhcmFtIGZpbHRlcnMgVGhlIGZpbHRlcnMgdG8gYXBwbHkgdG8gdGhlIHNlYXJjaCByZXN1bHRzLlxuICogQHBhcmFtIGxhc3RSZXNwb25zZSBUaGUgbGFzdCBzZWFyY2ggcmVzcG9uc2UgdXNlZCBmb3IgdXBkYXRpbmcgZXhpc3RpbmcgcmVzdWx0cy5cbiAqIEBwYXJhbSBzZWxlY3RlZFNvdXJjZXMgU2VsZWN0ZWQgc291cmNlcyBmaWx0ZXJzIGxpc3QuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgc2VhcmNoIHF1ZXJ5LlxuICogQHBhcmFtIG9wdGlvbnMucXVlcnlNaW5MZW5ndGggVGhlIG1pbmltdW0gbGVuZ3RoIGJlZm9yZSBhIHF1ZXJ5IGlzIGFjdGlvbmVkLlxuICogQHBhcmFtIG9wdGlvbnMucXVlcnlBZ2FpbnN0IFRoZSBmaWVsZHMgaW4gdGhlIGRhdGEgdG8gcXVlcnkgYWdhaW5zdC5cbiAqIEBwYXJhbSBvcHRpb25zLmlzU3VnZ2VzdGlvbiBJcyB0aGUgcXVlcnkgZnJvbSBhIHN1Z2dlc3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgc2VhcmNoIHJlc3VsdHMgYW5kIG5ldyBmaWx0ZXJzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2VhcmNoUmVzdWx0cyhcblx0cXVlcnk6IHN0cmluZyxcblx0ZmlsdGVyczogQ0xJRmlsdGVyW10sXG5cdGxhc3RSZXNwb25zZTogSG9tZVNlYXJjaExpc3RlbmVyUmVzcG9uc2UsXG5cdHNlbGVjdGVkU291cmNlczogc3RyaW5nW10sXG5cdG9wdGlvbnM6IHtcblx0XHRxdWVyeU1pbkxlbmd0aDogbnVtYmVyO1xuXHRcdHF1ZXJ5QWdhaW5zdDogc3RyaW5nW107XG5cdFx0aXNTdWdnZXN0aW9uPzogYm9vbGVhbjtcblx0fVxuKTogUHJvbWlzZTxIb21lU2VhcmNoUmVzcG9uc2UgJiB7IHNvdXJjZUZpbHRlcnM/OiBzdHJpbmdbXSB9PiB7XG5cdGNvbnN0IGhvbWVSZXNwb25zZTogSG9tZVNlYXJjaFJlc3BvbnNlICYgeyBzb3VyY2VGaWx0ZXJzPzogc3RyaW5nW10gfSA9IHtcblx0XHRyZXN1bHRzOiBbXSxcblx0XHRjb250ZXh0OiB7XG5cdFx0XHRmaWx0ZXJzOiBbXVxuXHRcdH0sXG5cdFx0c291cmNlRmlsdGVyczogW11cblx0fTtcblxuXHRpZiAoXG5cdFx0aW50ZWdyYXRpb25Qcm92aWRlck9wdGlvbnMuaXNNYW5hZ2VtZW50RW5hYmxlZCAmJlxuXHRcdHF1ZXJ5LnN0YXJ0c1dpdGgoYC8ke2ludGVncmF0aW9uUHJvdmlkZXJPcHRpb25zLmNvbW1hbmQgPz8gXCJpbnRlZ3JhdGlvbnNcIn1gKVxuXHQpIHtcblx0XHRyZXR1cm4gZ2V0TWFuYWdlbWVudFJlc3VsdHMoKTtcblx0fVxuXG5cdGNvbnN0IHByb21pc2VzOiBQcm9taXNlPEhvbWVTZWFyY2hSZXNwb25zZT5bXSA9IFtdO1xuXHRjb25zdCBzb3VyY2VGaWx0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuXHRmb3IgKGNvbnN0IGludGVncmF0aW9uTW9kdWxlIG9mIGludGVncmF0aW9uTW9kdWxlcykge1xuXHRcdGlmIChcblx0XHRcdGludGVncmF0aW9uTW9kdWxlLmlzSW5pdGlhbGl6ZWQgJiZcblx0XHRcdGludGVncmF0aW9uTW9kdWxlLmltcGxlbWVudGF0aW9uLmdldFNlYXJjaFJlc3VsdHMgJiZcblx0XHRcdCgoaW50ZWdyYXRpb25Nb2R1bGUuZGVmaW5pdGlvbi5leGNsdWRlRnJvbVNvdXJjZUZpbHRlciA/PyBzZWxlY3RlZFNvdXJjZXMubGVuZ3RoID09PSAwKSB8fFxuXHRcdFx0XHRzZWxlY3RlZFNvdXJjZXMuaW5jbHVkZXMoaW50ZWdyYXRpb25Nb2R1bGUuZGVmaW5pdGlvbi50aXRsZSkpXG5cdFx0KSB7XG5cdFx0XHRwcm9taXNlcy5wdXNoKGludGVncmF0aW9uTW9kdWxlLmltcGxlbWVudGF0aW9uLmdldFNlYXJjaFJlc3VsdHMocXVlcnksIGZpbHRlcnMsIGxhc3RSZXNwb25zZSwgb3B0aW9ucykpO1xuXHRcdH1cblx0XHRpZiAoIWludGVncmF0aW9uTW9kdWxlLmRlZmluaXRpb24uZXhjbHVkZUZyb21Tb3VyY2VGaWx0ZXIpIHtcblx0XHRcdHNvdXJjZUZpbHRlcnMucHVzaChpbnRlZ3JhdGlvbk1vZHVsZS5kZWZpbml0aW9uLnRpdGxlKTtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBwcm9taXNlUmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChwcm9taXNlcyk7XG5cdGZvciAoY29uc3QgcHJvbWlzZVJlc3VsdCBvZiBwcm9taXNlUmVzdWx0cykge1xuXHRcdGlmIChwcm9taXNlUmVzdWx0LnN0YXR1cyA9PT0gXCJmdWxmaWxsZWRcIikge1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkocHJvbWlzZVJlc3VsdC52YWx1ZS5yZXN1bHRzKSkge1xuXHRcdFx0XHRob21lUmVzcG9uc2UucmVzdWx0cyA9IGhvbWVSZXNwb25zZS5yZXN1bHRzLmNvbmNhdChwcm9taXNlUmVzdWx0LnZhbHVlLnJlc3VsdHMpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbmV3RmlsdGVycyA9IHByb21pc2VSZXN1bHQudmFsdWUuY29udGV4dD8uZmlsdGVycztcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KG5ld0ZpbHRlcnMpICYmIGhvbWVSZXNwb25zZS5jb250ZXh0Py5maWx0ZXJzKSB7XG5cdFx0XHRcdGhvbWVSZXNwb25zZS5jb250ZXh0LmZpbHRlcnMgPSBob21lUmVzcG9uc2UuY29udGV4dC5maWx0ZXJzLmNvbmNhdChuZXdGaWx0ZXJzKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0bG9nZ2VyLmVycm9yKHByb21pc2VSZXN1bHQucmVhc29uKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdC4uLmhvbWVSZXNwb25zZSxcblx0XHRzb3VyY2VGaWx0ZXJzXG5cdH07XG59XG5cbi8qKlxuICogR2V0IHRoZSBoZWxwIHNlYXJjaCBlbnRyaWVzIGZvciBhbGwgdGhlIGludGVncmF0aW9uIHByb3ZpZGVycy5cbiAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGhlbHAgZW50cmllcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEhlbHBTZWFyY2hFbnRyaWVzKCk6IFByb21pc2U8SG9tZVNlYXJjaFJlc3VsdFtdPiB7XG5cdGlmICghaW50ZWdyYXRpb25Qcm92aWRlck9wdGlvbnMpIHtcblx0XHRsb2dnZXIuZXJyb3IoXCJJbnRlZ3JhdGlvblByb3ZpZGVyIGlzIG5vdCBhdmFpbGFibGUsIG1ha2Ugc3VyZSB5b3VyIGhhdmUgY2FsbGVkIGluaXRcIik7XG5cdH1cblxuXHRsZXQgcmVzdWx0czogSG9tZVNlYXJjaFJlc3VsdFtdID0gW107XG5cblx0aWYgKGludGVncmF0aW9uUHJvdmlkZXJPcHRpb25zLmlzTWFuYWdlbWVudEVuYWJsZWQpIHtcblx0XHRjb25zdCBjb21tYW5kS2V5d29yZCA9IGludGVncmF0aW9uUHJvdmlkZXJPcHRpb25zLmNvbW1hbmQgPz8gXCJpbnRlZ3JhdGlvbnNcIjtcblx0XHRjb25zdCBjb21tYW5kID0gYC8ke2NvbW1hbmRLZXl3b3JkfWA7XG5cblx0XHRjb25zdCBoZWxwRW50cnk6IEhvbWVTZWFyY2hSZXN1bHQgPSB7XG5cdFx0XHRrZXk6IFwiaW50ZWdyYXRpb24tcHJvdmlkZXItaGVscFwiLFxuXHRcdFx0dGl0bGU6IGNvbW1hbmQsXG5cdFx0XHRsYWJlbDogXCJIZWxwXCIsXG5cdFx0XHRpY29uOiBpbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9ucy5pY29uLFxuXHRcdFx0YWN0aW9uczogW10sXG5cdFx0XHRkYXRhOiB7XG5cdFx0XHRcdHByb3ZpZGVySWQ6IFwiaW50ZWdyYXRpb24tcHJvdmlkZXJcIlxuXHRcdFx0fSxcblx0XHRcdHRlbXBsYXRlOiBDTElUZW1wbGF0ZS5DdXN0b20sXG5cdFx0XHR0ZW1wbGF0ZUNvbnRlbnQ6IGF3YWl0IGNyZWF0ZUhlbHAoXG5cdFx0XHRcdGNvbW1hbmQsXG5cdFx0XHRcdFtcblx0XHRcdFx0XHRpbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9ucy5jb21tYW5kRGVzY3JpcHRpb24gPz9cblx0XHRcdFx0XHRcdGBBbGxvd3MgdGhlIG1hbmFnZW1lbnQgb2YgJHtjb21tYW5kS2V5d29yZH0gZm9yIHRoaXMgcGxhdGZvcm0uIFlvdSBjYW4gZGVjaWRlIHdoZXRoZXIgZW5hYmxlZCBpbnRlZ3JhdGlvbnMgc2hvdWxkIGJlIGluY2x1ZGVkIHdoZW4gYSBxdWVyeSBpcyBlbnRlcmVkLmBcblx0XHRcdFx0XSxcblx0XHRcdFx0W2NvbW1hbmRdXG5cdFx0XHQpXG5cdFx0fTtcblxuXHRcdHJlc3VsdHMucHVzaChoZWxwRW50cnkpO1xuXHR9XG5cblx0Zm9yIChjb25zdCBpbnRlZ3JhdGlvbk1vZHVsZSBvZiBpbnRlZ3JhdGlvbk1vZHVsZXMpIHtcblx0XHRpZiAoaW50ZWdyYXRpb25Nb2R1bGUuaXNJbml0aWFsaXplZCAmJiBpbnRlZ3JhdGlvbk1vZHVsZS5pbXBsZW1lbnRhdGlvbi5nZXRIZWxwU2VhcmNoRW50cmllcykge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgaGVscFNlYXJjaEVudHJpZXMgPSBhd2FpdCBpbnRlZ3JhdGlvbk1vZHVsZS5pbXBsZW1lbnRhdGlvbi5nZXRIZWxwU2VhcmNoRW50cmllcygpO1xuXG5cdFx0XHRcdGlmIChpbnRlZ3JhdGlvbkhlbHBlcnM/LnNldFNlYXJjaFF1ZXJ5KSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBoZWxwRW50cnkgb2YgaGVscFNlYXJjaEVudHJpZXMpIHtcblx0XHRcdFx0XHRcdGlmIChoZWxwRW50cnkuZGF0YT8ucG9wdWxhdGVRdWVyeSkge1xuXHRcdFx0XHRcdFx0XHRoZWxwRW50cnkuYWN0aW9ucyA9IGhlbHBFbnRyeS5hY3Rpb25zID8/IFtdO1xuXHRcdFx0XHRcdFx0XHRoZWxwRW50cnkuYWN0aW9ucy5wdXNoKHsgbmFtZTogUE9QVUxBVEVfUVVFUlksIGhvdGtleTogXCJlbnRlclwiIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJlc3VsdHMgPSByZXN1bHRzLmNvbmNhdChoZWxwU2VhcmNoRW50cmllcyk7XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0bG9nZ2VyLmVycm9yKGBGYWlsZWQgY3JlYXRpbmcgc2VhcmNoIGVudHJpZXMgZm9yIG1vZHVsZSAke2ludGVncmF0aW9uTW9kdWxlLmRlZmluaXRpb24uaWR9YCwgZXJyKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0cztcbn1cblxuLyoqXG4gKiBUaGUgaXRlbSBmb3Igb25lIG9mIHRoZSBwcm92aWRlcnMgd2FzIHNlbGVjdGVkLlxuICogQHBhcmFtIHJlc3VsdCBUaGUgcmVzdWx0IG9mIHRoZSBzZWxlY3Rpb24uXG4gKiBAcGFyYW0gbGFzdFJlc3BvbnNlIFRoZSBsYXN0IHJlc3BvbnNlLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc2VsZWN0aW9uIHdhcyBoYW5kbGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXRlbVNlbGVjdGlvbihcblx0cmVzdWx0OiBIb21lRGlzcGF0Y2hlZFNlYXJjaFJlc3VsdCxcblx0bGFzdFJlc3BvbnNlOiBIb21lU2VhcmNoTGlzdGVuZXJSZXNwb25zZVxuKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGlmIChyZXN1bHQuZGF0YSkge1xuXHRcdGlmIChcblx0XHRcdGludGVncmF0aW9uSGVscGVycz8uc2V0U2VhcmNoUXVlcnkgJiZcblx0XHRcdHJlc3VsdC5hY3Rpb24udHJpZ2dlciA9PT0gXCJ1c2VyLWFjdGlvblwiICYmXG5cdFx0XHRyZXN1bHQuYWN0aW9uLm5hbWUgPT09IFBPUFVMQVRFX1FVRVJZICYmXG5cdFx0XHR0eXBlb2YgcmVzdWx0LmRhdGE/LnBvcHVsYXRlUXVlcnkgPT09IFwic3RyaW5nXCJcblx0XHQpIHtcblx0XHRcdGF3YWl0IGludGVncmF0aW9uSGVscGVycy5zZXRTZWFyY2hRdWVyeShyZXN1bHQuZGF0YS5wb3B1bGF0ZVF1ZXJ5IGFzIHN0cmluZyk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAocmVzdWx0LmRhdGE/LnByb3ZpZGVySWQgPT09IFwiaW50ZWdyYXRpb24tcHJvdmlkZXJcIikge1xuXHRcdFx0aWYgKHJlc3VsdC5hY3Rpb24udHJpZ2dlciA9PT0gXCJ1c2VyLWFjdGlvblwiKSB7XG5cdFx0XHRcdGNvbnN0IGludGVncmF0aW9uSWQ6IHN0cmluZyA9IHJlc3VsdC5kYXRhLmludGVncmF0aW9uSWQ7XG5cdFx0XHRcdGNvbnN0IGF1dG9TdGFydDogYm9vbGVhbiA9IHJlc3VsdC5kYXRhLmF1dG9TdGFydDtcblx0XHRcdFx0cmV0dXJuIHVwZGF0ZUludGVncmF0aW9uU3RhdHVzKGxhc3RSZXNwb25zZSwgaW50ZWdyYXRpb25JZCwgIWF1dG9TdGFydCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZm91bmRJbnRlZ3JhdGlvbiA9IGludGVncmF0aW9uTW9kdWxlcy5maW5kKChoaSkgPT4gaGkuZGVmaW5pdGlvbi5pZCA9PT0gcmVzdWx0LmRhdGE/LnByb3ZpZGVySWQpO1xuXHRcdGlmIChmb3VuZEludGVncmF0aW9uPy5pbXBsZW1lbnRhdGlvbj8uaXRlbVNlbGVjdGlvbikge1xuXHRcdFx0cmV0dXJuIGZvdW5kSW50ZWdyYXRpb24uaW1wbGVtZW50YXRpb24uaXRlbVNlbGVjdGlvbihyZXN1bHQsIGxhc3RSZXNwb25zZSk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgaG9tZSByZXN1bHRzIGZvciBpbnRlZ3JhdGlvbiBtYW5hZ2VtZW50LlxuICogQHJldHVybnMgVGhlIGhvbWUgcmVzdWx0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE1hbmFnZW1lbnRSZXN1bHRzKCk6IFByb21pc2U8SG9tZVNlYXJjaFJlc3BvbnNlPiB7XG5cdGlmICghaW50ZWdyYXRpb25Qcm92aWRlck9wdGlvbnMpIHtcblx0XHRsb2dnZXIuZXJyb3IoXCJJbnRlZ3JhdGlvblByb3ZpZGVyIGlzIG5vdCBhdmFpbGFibGUsIG1ha2Ugc3VyZSB5b3VyIGhhdmUgY2FsbGVkIGluaXRcIik7XG5cdH1cblxuXHRjb25zdCBob21lUmVzcG9uc2U6IEhvbWVTZWFyY2hSZXNwb25zZSA9IHtcblx0XHRyZXN1bHRzOiBbXSxcblx0XHRjb250ZXh0OiB7XG5cdFx0XHRmaWx0ZXJzOiBbXVxuXHRcdH1cblx0fTtcblxuXHRmb3IgKGNvbnN0IGludGVncmF0aW9uTW9kdWxlIG9mIGludGVncmF0aW9uTW9kdWxlcykge1xuXHRcdGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNyZWF0ZVJlc3VsdChcblx0XHRcdGludGVncmF0aW9uTW9kdWxlLmRlZmluaXRpb24uaWQsXG5cdFx0XHRpbnRlZ3JhdGlvbk1vZHVsZS5kZWZpbml0aW9uLnRpdGxlLFxuXHRcdFx0aW50ZWdyYXRpb25Nb2R1bGUuZGVmaW5pdGlvbi5kZXNjcmlwdGlvbixcblx0XHRcdGludGVncmF0aW9uTW9kdWxlLmRlZmluaXRpb24uaWNvbixcblx0XHRcdGludGVncmF0aW9uTW9kdWxlPy5pc0luaXRpYWxpemVkID8/IGZhbHNlXG5cdFx0KTtcblx0XHRob21lUmVzcG9uc2UucmVzdWx0cy5wdXNoKHJlc3VsdCk7XG5cdH1cblxuXHRpZiAoaG9tZVJlc3BvbnNlLnJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG5cdFx0Y29uc3QgZGVzY3JpcHRpb24gPVxuXHRcdFx0XCJZb3UgZWl0aGVyIGhhdmUgbm8gaW50ZWdyYXRpb25zIGxpc3RlZCBvciBub25lIG9mIHRoZW0gYXJlIGVuYWJsZWQuIFBsZWFzZSBjaGVjayB3aXRoIHN1cHBvcnQgaWYgeW91IGJlbGlldmUgeW91IHNob3VsZCBoYXZlIGFjY2VzcyB0byBpbnRlZ3JhdGlvbnNcIjtcblx0XHRjb25zdCBub0VudHJpZXM6IEhvbWVTZWFyY2hSZXN1bHQgPSB7XG5cdFx0XHRrZXk6IFwiaW50ZWdyYXRpb24tcHJvdmlkZXItbm8tcmVzdWx0c1wiLFxuXHRcdFx0dGl0bGU6IFwiTm8gaW50ZWdyYXRpb25zIGF2YWlsYWJsZVwiLFxuXHRcdFx0ZGF0YToge30sXG5cdFx0XHRhY3Rpb25zOiBbXSxcblx0XHRcdGljb246IGludGVncmF0aW9uUHJvdmlkZXJPcHRpb25zLmljb24sXG5cdFx0XHRkZXNjcmlwdGlvbixcblx0XHRcdHNob3J0RGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuXHRcdFx0dGVtcGxhdGU6IENMSVRlbXBsYXRlLlNpbXBsZVRleHQsXG5cdFx0XHR0ZW1wbGF0ZUNvbnRlbnQ6IGRlc2NyaXB0aW9uXG5cdFx0fTtcblx0XHRob21lUmVzcG9uc2UucmVzdWx0cy5wdXNoKG5vRW50cmllcyk7XG5cdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XCJJbnRlZ3JhdGlvbiBtYW5hZ2VtZW50IGlzIGVuYWJsZWQgYnV0IHlvdSBoYXZlIG5vIGludGVncmF0aW9ucyBsaXN0ZWQgaW4geW91ciBzZXR0aW5ncyBvciBub25lIG9mIHRoZW0gYXJlIGVuYWJsZWRcIlxuXHRcdCk7XG5cdH1cblxuXHRyZXR1cm4gaG9tZVJlc3BvbnNlO1xufVxuXG4vKipcbiAqIFNldCBhIHByZWZlcmVuY2VzIHVzaW5nIGFuIGVuZHBvaW50LlxuICogQHBhcmFtIGludGVncmF0aW9uSWQgVGhlIGludGVncmF0aW9uIGlkIHRvIHNldCB0aGUgcHJlZmVyZW5jZSBmb3IuXG4gKiBAcGFyYW0gcHJlZmVyZW5jZXMgVGhlIHByZWZlcmVuY2VzIGZvciB0aGUgaW50ZWdyYXRpb24uXG4gKiBAcGFyYW0gcHJlZmVyZW5jZXMuYXV0b1N0YXJ0IFRoZSBhdXRvU3RhcnQgcHJlZmVyZW5jZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2V0UHJlZmVyZW5jZXMoaW50ZWdyYXRpb25JZDogc3RyaW5nLCBwcmVmZXJlbmNlczogeyBhdXRvU3RhcnQ6IGJvb2xlYW4gfSk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoZW5kcG9pbnRQcm92aWRlci5oYXNFbmRwb2ludChJTlRFR1JBVElPTlNfUFJFRkVSRU5DRV9FTkRQT0lOVF9TRVQpKSB7XG5cdFx0Y29uc3Qgc3VjY2VzcyA9IGF3YWl0IGVuZHBvaW50UHJvdmlkZXIuYWN0aW9uPEVuZHBvaW50SW50ZWdyYXRpb25zUHJlZmVyZW5jZXNTZXRSZXF1ZXN0Pihcblx0XHRcdElOVEVHUkFUSU9OU19QUkVGRVJFTkNFX0VORFBPSU5UX1NFVCxcblx0XHRcdHsgaWQ6IGludGVncmF0aW9uSWQsIHBheWxvYWQ6IHByZWZlcmVuY2VzIH1cblx0XHQpO1xuXHRcdGlmIChzdWNjZXNzKSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhgU2F2ZWQgaW50ZWdyYXRpb246ICR7aW50ZWdyYXRpb25JZH0gcHJlZmVyZW5jZS4gQXV0b1N0YXJ0OiAke3ByZWZlcmVuY2VzLmF1dG9TdGFydH1gKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdGBVbmFibGUgdG8gc2F2ZSBpbnRlZ3JhdGlvbjogJHtpbnRlZ3JhdGlvbklkfSBwcmVmZXJlbmNlLiBBdXRvU3RhcnQ6ICR7cHJlZmVyZW5jZXMuYXV0b1N0YXJ0fWBcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogR2V0IHRoZSBwcmVmZXJlbmNlcyBmb3IgdGhlIGludGVncmF0aW9uLlxuICogQHBhcmFtIGludGVncmF0aW9uSWQgVGhlIGludGVncmF0aW9uIHRvIGdldCB0aGUgcHJlZmVyZW5jZXMgZm9yLlxuICogQHJldHVybnMgVGhlIHByZWZlcmVuY2VzIGlmIHRoZXkgZXhpc3QuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldFByZWZlcmVuY2VzKGludGVncmF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8eyBhdXRvU3RhcnQ6IGJvb2xlYW4gfSB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoZW5kcG9pbnRQcm92aWRlci5oYXNFbmRwb2ludChJTlRFR1JBVElPTlNfUFJFRkVSRU5DRV9FTkRQT0lOVF9HRVQpKSB7XG5cdFx0Y29uc3QgcHJlZmVyZW5jZXMgPSBhd2FpdCBlbmRwb2ludFByb3ZpZGVyLnJlcXVlc3RSZXNwb25zZTxcblx0XHRcdEVuZHBvaW50SW50ZWdyYXRpb25zUHJlZmVyZW5jZXNHZXRSZXF1ZXN0LFxuXHRcdFx0RW5kcG9pbnRJbnRlZ3JhdGlvbnNQcmVmZXJlbmNlc0dldFJlc3BvbnNlXG5cdFx0PihJTlRFR1JBVElPTlNfUFJFRkVSRU5DRV9FTkRQT0lOVF9HRVQsIHsgaWQ6IGludGVncmF0aW9uSWQgfSk7XG5cdFx0aWYgKCFpc0VtcHR5KHByZWZlcmVuY2VzKSkge1xuXHRcdFx0bG9nZ2VyLmluZm8oYFJldHJpZXZlZCBwcmVmZXJlbmNlIGZvciBpbnRlZ3JhdGlvbjogJHtpbnRlZ3JhdGlvbklkfWApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhgVW5hYmxlIHRvIGdldCBwcmVmZXJlbmNlIGZvciBpbnRlZ3JhdGlvbjogJHtpbnRlZ3JhdGlvbklkfWApO1xuXHRcdH1cblx0XHRyZXR1cm4gcHJlZmVyZW5jZXM7XG5cdH1cbn1cblxuLyoqXG4gKiBVcGRhdGUgdGhlIHN0YXR1cyBvZiBhbiBpbnRlZ3JhdGlvbiByZXN1bHQuXG4gKiBAcGFyYW0gbGFzdFJlc3BvbnNlIFRoZSBsYXN0IHJlc3BvbnNlIHRvIHVzZSBmb3IgdGhlIHVwZGF0ZS5cbiAqIEBwYXJhbSBpbnRlZ3JhdGlvbklkIFRoZSBpbnRlZ3JhdGlvbiB0byB1cGRhdGUuXG4gKiBAcGFyYW0gc2hvdWxkQXV0b1N0YXJ0IFRoZSBhdXRvU3RhcnQgZmxhZy5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGludGVncmF0aW9uIHN0YXR1cyB3YXMgdXBkYXRlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gdXBkYXRlSW50ZWdyYXRpb25TdGF0dXMoXG5cdGxhc3RSZXNwb25zZTogSG9tZVNlYXJjaExpc3RlbmVyUmVzcG9uc2UsXG5cdGludGVncmF0aW9uSWQ6IHN0cmluZyxcblx0c2hvdWxkQXV0b1N0YXJ0OiBib29sZWFuXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0aWYgKCFpbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9ucykge1xuXHRcdGxvZ2dlci5lcnJvcihcIkludGVncmF0aW9uUHJvdmlkZXIgaXMgbm90IGF2YWlsYWJsZSwgbWFrZSBzdXJlIHlvdXIgaGF2ZSBjYWxsZWQgaW5pdFwiKTtcblx0fVxuXG5cdGNvbnN0IGludGVncmF0aW9uID0gaW50ZWdyYXRpb25Nb2R1bGVzLmZpbmQoKGVudHJ5KSA9PiBlbnRyeS5kZWZpbml0aW9uLmlkID09PSBpbnRlZ3JhdGlvbklkKTtcblx0aWYgKGlzRW1wdHkoaW50ZWdyYXRpb24pKSB7XG5cdFx0bG9nZ2VyLndhcm4oYFVuYWJsZSB0byBmaW5kIHNwZWNpZmllZCBpbnRlZ3JhdGlvbjogJHtpbnRlZ3JhdGlvbklkfSBpbiBlbmFibGVkIG1vZHVsZXNgKTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRpZiAoc2hvdWxkQXV0b1N0YXJ0ICYmICFpbnRlZ3JhdGlvbi5pc0luaXRpYWxpemVkKSB7XG5cdFx0YXdhaXQgaW5pdGlhbGl6ZU1vZHVsZShpbnRlZ3JhdGlvbiwgaW50ZWdyYXRpb25IZWxwZXJzKTtcblx0fSBlbHNlIGlmICghc2hvdWxkQXV0b1N0YXJ0ICYmIGludGVncmF0aW9uLmlzSW5pdGlhbGl6ZWQpIHtcblx0XHRhd2FpdCBjbG9zZWRvd25Nb2R1bGUoaW50ZWdyYXRpb24pO1xuXHR9XG5cblx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgY3JlYXRlUmVzdWx0KFxuXHRcdGludGVncmF0aW9uLmRlZmluaXRpb24uaWQsXG5cdFx0aW50ZWdyYXRpb24uZGVmaW5pdGlvbi50aXRsZSxcblx0XHRpbnRlZ3JhdGlvbi5kZWZpbml0aW9uLmRlc2NyaXB0aW9uLFxuXHRcdGludGVncmF0aW9uLmRlZmluaXRpb24uaWNvbixcblx0XHRzaG91bGRBdXRvU3RhcnRcblx0KTtcblx0bGFzdFJlc3BvbnNlLnJlc3BvbmQoW3Jlc3VsdF0pO1xuXG5cdGF3YWl0IHNldFByZWZlcmVuY2VzKGludGVncmF0aW9uLmRlZmluaXRpb24uaWQsIHsgYXV0b1N0YXJ0OiBzaG91bGRBdXRvU3RhcnQgfSk7XG5cblx0cmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIGludGVncmF0aW9uIHJlc3VsdC5cbiAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGludGVncmF0aW9uLlxuICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGludGVncmF0aW9uLlxuICogQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgaW50ZWdyYXRpb24uXG4gKiBAcGFyYW0gaWNvbiBUaGUgaWNvbiBvZiB0aGUgaW50ZWdyYXRpb24uXG4gKiBAcGFyYW0gYXV0b1N0YXJ0IERvZXMgdGhlIGludGVncmF0aW9uIGF1dG8gc3RhcnQuXG4gKiBAcmV0dXJucyBUaGUgc2VhcmNoIHJlc3VsdC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVzdWx0KFxuXHRpZDogc3RyaW5nLFxuXHRuYW1lOiBzdHJpbmcsXG5cdGRlc2NyaXB0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdGljb246IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0YXV0b1N0YXJ0OiBib29sZWFuXG4pOiBQcm9taXNlPEhvbWVTZWFyY2hSZXN1bHQ+IHtcblx0Y29uc3QgYnV0dG9uQWN0aW9uID0gYXV0b1N0YXJ0ID8gXCJUdXJuIE9mZiBJbnRlZ3JhdGlvblwiIDogXCJUdXJuIE9uIEludGVncmF0aW9uXCI7XG5cblx0cmV0dXJuIHtcblx0XHRrZXk6IGBpbnRlZ3JhdGlvbi0ke2lkfWAsXG5cdFx0dGl0bGU6IGAke25hbWV9YCxcblx0XHRpY29uLFxuXHRcdGFjdGlvbnM6IFtdLFxuXHRcdGRhdGE6IHtcblx0XHRcdHByb3ZpZGVySWQ6IFwiaW50ZWdyYXRpb24tcHJvdmlkZXJcIixcblx0XHRcdGludGVncmF0aW9uSWQ6IGlkLFxuXHRcdFx0YXV0b1N0YXJ0XG5cdFx0fSxcblx0XHR0ZW1wbGF0ZTogQ0xJVGVtcGxhdGUuQ3VzdG9tLFxuXHRcdHRlbXBsYXRlQ29udGVudDoge1xuXHRcdFx0bGF5b3V0OiBhd2FpdCBjcmVhdGVDb250YWluZXIoXG5cdFx0XHRcdFwiY29sdW1uXCIsXG5cdFx0XHRcdFtcblx0XHRcdFx0XHRhd2FpdCBjcmVhdGVDb250YWluZXIoXG5cdFx0XHRcdFx0XHRcImNvbHVtblwiLFxuXHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHRhd2FpdCBjcmVhdGVDb250YWluZXIoXG5cdFx0XHRcdFx0XHRcdFx0XCJyb3dcIixcblx0XHRcdFx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRcdFx0XHRhd2FpdCBjcmVhdGVJbWFnZShcImljb25cIiwgbmFtZSwgeyB3aWR0aDogXCIzMnB4XCIsIGhlaWdodDogXCIzMnB4XCIgfSksXG5cdFx0XHRcdFx0XHRcdFx0XHRhd2FpdCBjcmVhdGVUaXRsZShcInRpdGxlXCIpXG5cdFx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0Z2FwOiBcIjEwcHhcIlxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0YXdhaXQgY3JlYXRlVGV4dChcImRlc2NyaXB0aW9uXCIsIDEyKVxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0Z2FwOiBcIjIwcHhcIlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0YXdhaXQgY3JlYXRlQ29udGFpbmVyKFwiY29sdW1uXCIsIFtcblx0XHRcdFx0XHRcdGF3YWl0IGNyZWF0ZVRleHQoXCJzdGF0dXNcIiwgMTIsIHsgcGFkZGluZ0JvdHRvbTogXCIxMHB4XCIsIGZvbnRGYW1pbHk6IFwibW9ub3NwYWNlXCIgfSksXG5cdFx0XHRcdFx0XHRhd2FpdCBjcmVhdGVCdXR0b24oXG5cdFx0XHRcdFx0XHRcdGF1dG9TdGFydCA/IEJ1dHRvblN0eWxlLlByaW1hcnkgOiBCdXR0b25TdHlsZS5TZWNvbmRhcnksXG5cdFx0XHRcdFx0XHRcdFwiYnRuVGV4dFwiLFxuXHRcdFx0XHRcdFx0XHRidXR0b25BY3Rpb25cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRdKVxuXHRcdFx0XHRdLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0cGFkZGluZzogXCIxMHB4XCIsXG5cdFx0XHRcdFx0ZmxleDogMSxcblx0XHRcdFx0XHRqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCJcblx0XHRcdFx0fVxuXHRcdFx0KSxcblx0XHRcdGRhdGE6IHtcblx0XHRcdFx0dGl0bGU6IG5hbWUsXG5cdFx0XHRcdGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiA/PyBcIllvdSBjYW4gZW5hYmxlL2Rpc2FibGUgYW4gaW50ZWdyYXRpb25zIGZlYXR1cmVzXCIsXG5cdFx0XHRcdGljb246IGljb24gPz8gXCJcIixcblx0XHRcdFx0c3RhdHVzOiBgSW50ZWdyYXRpb24gU3RhdGU6ICR7YXV0b1N0YXJ0ID8gXCJPblwiIDogXCJPZmZcIn1gLFxuXHRcdFx0XHRidG5UZXh0OiBidXR0b25BY3Rpb25cblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG4iLCJpbXBvcnQgdHlwZSBPcGVuRmluIGZyb20gXCJAb3BlbmZpbi9jb3JlXCI7XG5pbXBvcnQgeyBnZXRDdXJyZW50U3luYywgdHlwZSBCcm93c2VyU25hcHNob3QgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgeyBsYXVuY2hDb25uZWN0ZWRBcHAgfSBmcm9tIFwiLi9jb25uZWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgZW5kcG9pbnRQcm92aWRlciBmcm9tIFwiLi9lbmRwb2ludFwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBNQU5JRkVTVF9UWVBFUyB9IGZyb20gXCIuL21hbmlmZXN0LXR5cGVzXCI7XG5pbXBvcnQge1xuXHRicmluZ1ZpZXdUb0Zyb250LFxuXHRicmluZ1dpbmRvd1RvRnJvbnQsXG5cdGRvZXNWaWV3RXhpc3QsXG5cdGRvZXNXaW5kb3dFeGlzdCxcblx0ZmluZFZpZXdOYW1lc1xufSBmcm9tIFwiLi9wbGF0Zm9ybS9icm93c2VyXCI7XG5pbXBvcnQgdHlwZSB7IFBsYXRmb3JtQXBwLCBQbGF0Zm9ybUFwcElkZW50aWZpZXIgfSBmcm9tIFwiLi9zaGFwZXMvYXBwLXNoYXBlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSwgb2JqZWN0Q2xvbmUsIHJhbmRvbVVVSUQgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJMYXVuY2hcIik7XG5cbi8qKlxuICogTGF1bmNoIGFuIGFwcGxpY2F0aW9uIGluIHRoZSB3YXkgc3BlY2lmaWVkIGJ5IGl0cyBtYW5pZmVzdCB0eXBlLlxuICogQHBhcmFtIHBsYXRmb3JtQXBwIFRoZSBhcHBsaWNhdGlvbiB0byBsYXVuY2guXG4gKiBAcmV0dXJucyBJZGVudGlmaWVycyBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhcHBsaWNhdGlvbiBsYXVuY2hlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxhdW5jaChwbGF0Zm9ybUFwcDogUGxhdGZvcm1BcHApOiBQcm9taXNlPFBsYXRmb3JtQXBwSWRlbnRpZmllcltdIHwgdW5kZWZpbmVkPiB7XG5cdHRyeSB7XG5cdFx0bG9nZ2VyLmluZm8oXCJBcHBsaWNhdGlvbiBsYXVuY2ggcmVxdWVzdGVkXCIsIHBsYXRmb3JtQXBwKTtcblxuXHRcdGlmIChpc0VtcHR5KHBsYXRmb3JtQXBwKSkge1xuXHRcdFx0bG9nZ2VyLndhcm4oXCJBbiBlbXB0eSBhcHAgZGVmaW5pdGlvbiB3YXMgcGFzc2VkIHRvIGxhdW5jaFwiKTtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cdFx0Y29uc3QgYXBwID0gb2JqZWN0Q2xvbmUocGxhdGZvcm1BcHApO1xuXG5cdFx0Y29uc3QgcGxhdGZvcm1BcHBJZGVudGl0aWVzOiBQbGF0Zm9ybUFwcElkZW50aWZpZXJbXSA9IFtdO1xuXHRcdHN3aXRjaCAoYXBwLm1hbmlmZXN0VHlwZSkge1xuXHRcdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5FeHRlcm5hbC5pZDpcblx0XHRcdGNhc2UgTUFOSUZFU1RfVFlQRVMuSW5saW5lRXh0ZXJuYWwuaWQ6IHtcblx0XHRcdFx0Y29uc3QgcGxhdGZvcm1JZGVudGl0eSA9IGF3YWl0IGxhdW5jaEV4dGVybmFsKGFwcCk7XG5cdFx0XHRcdGlmIChwbGF0Zm9ybUlkZW50aXR5KSB7XG5cdFx0XHRcdFx0cGxhdGZvcm1BcHBJZGVudGl0aWVzLnB1c2gocGxhdGZvcm1JZGVudGl0eSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLkFwcGFzc2V0LmlkOlxuXHRcdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5JbmxpbmVBcHBBc3NldC5pZDoge1xuXHRcdFx0XHRjb25zdCBwbGF0Zm9ybUlkZW50aXR5ID0gYXdhaXQgbGF1bmNoQXBwQXNzZXQoYXBwKTtcblx0XHRcdFx0aWYgKHBsYXRmb3JtSWRlbnRpdHkpIHtcblx0XHRcdFx0XHRwbGF0Zm9ybUFwcElkZW50aXRpZXMucHVzaChwbGF0Zm9ybUlkZW50aXR5KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgTUFOSUZFU1RfVFlQRVMuSW5saW5lVmlldy5pZDpcblx0XHRcdGNhc2UgTUFOSUZFU1RfVFlQRVMuVmlldy5pZDoge1xuXHRcdFx0XHRjb25zdCBwbGF0Zm9ybUlkZW50aXR5ID0gYXdhaXQgbGF1bmNoVmlldyhhcHApO1xuXHRcdFx0XHRpZiAocGxhdGZvcm1JZGVudGl0eSkge1xuXHRcdFx0XHRcdHBsYXRmb3JtQXBwSWRlbnRpdGllcy5wdXNoKHBsYXRmb3JtSWRlbnRpdHkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5XaW5kb3cuaWQ6XG5cdFx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLklubGluZVdpbmRvdy5pZDoge1xuXHRcdFx0XHRjb25zdCBwbGF0Zm9ybUlkZW50aXR5ID0gYXdhaXQgbGF1bmNoV2luZG93KGFwcCk7XG5cdFx0XHRcdGlmIChwbGF0Zm9ybUlkZW50aXR5KSB7XG5cdFx0XHRcdFx0cGxhdGZvcm1BcHBJZGVudGl0aWVzLnB1c2gocGxhdGZvcm1JZGVudGl0eSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLlNuYXBzaG90LmlkOlxuXHRcdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5JbmxpbmVTbmFwc2hvdC5pZDoge1xuXHRcdFx0XHRjb25zdCBpZGVudGl0aWVzID0gYXdhaXQgbGF1bmNoU25hcHNob3QoYXBwKTtcblx0XHRcdFx0aWYgKGlkZW50aXRpZXMpIHtcblx0XHRcdFx0XHRwbGF0Zm9ybUFwcElkZW50aXRpZXMucHVzaCguLi5pZGVudGl0aWVzKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgTUFOSUZFU1RfVFlQRVMuTWFuaWZlc3QuaWQ6IHtcblx0XHRcdFx0Y29uc3QgbWFuaWZlc3RBcHAgPSBhd2FpdCBmaW4uQXBwbGljYXRpb24uc3RhcnRGcm9tTWFuaWZlc3QoYXBwLm1hbmlmZXN0KTtcblx0XHRcdFx0Y29uc3QgbWFuaWZlc3RVVUlEID0gbWFuaWZlc3RBcHA/LmlkZW50aXR5Py51dWlkO1xuXHRcdFx0XHRpZiAoIWlzRW1wdHkobWFuaWZlc3RVVUlEKSkge1xuXHRcdFx0XHRcdHBsYXRmb3JtQXBwSWRlbnRpdGllcy5wdXNoKHtcblx0XHRcdFx0XHRcdHV1aWQ6IG1hbmlmZXN0VVVJRCxcblx0XHRcdFx0XHRcdG5hbWU6IG1hbmlmZXN0VVVJRCxcblx0XHRcdFx0XHRcdGFwcElkOiBhcHAuYXBwSWRcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgTUFOSUZFU1RfVFlQRVMuRGVza3RvcEJyb3dzZXIuaWQ6IHtcblx0XHRcdFx0YXdhaXQgZmluLlN5c3RlbS5vcGVuVXJsV2l0aEJyb3dzZXIoYXBwLm1hbmlmZXN0KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLkVuZHBvaW50LmlkOiB7XG5cdFx0XHRcdGlmIChlbmRwb2ludFByb3ZpZGVyLmhhc0VuZHBvaW50KGFwcC5tYW5pZmVzdCkpIHtcblx0XHRcdFx0XHRjb25zdCBpZGVudGl0eSA9IGF3YWl0IGVuZHBvaW50UHJvdmlkZXIucmVxdWVzdFJlc3BvbnNlPHsgcGF5bG9hZDogUGxhdGZvcm1BcHAgfSwgT3BlbkZpbi5JZGVudGl0eT4oXG5cdFx0XHRcdFx0XHRhcHAubWFuaWZlc3QsXG5cdFx0XHRcdFx0XHR7IHBheWxvYWQ6IGFwcCB9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpZiAoaXNFbXB0eShpZGVudGl0eSkpIHtcblx0XHRcdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdFx0XHRgQXBwIHdpdGggaWQ6ICR7YXBwLmFwcElkfSBlbmNvdW50ZXJlZCB3aGVuIGxhdW5jaGVkIHVzaW5nIGVuZHBvaW50OiAke2FwcC5tYW5pZmVzdH0uYFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cGxhdGZvcm1BcHBJZGVudGl0aWVzLnB1c2goeyAuLi5pZGVudGl0eSwgYXBwSWQ6IGFwcC5hcHBJZCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0XHRgQXBwIHdpdGggaWQ6ICR7YXBwLmFwcElkfSBjb3VsZCBub3QgYmUgbGF1bmNoZWQgYXMgaXQgaXMgb2YgbWFuaWZlc3RUeXBlOiAke2FwcC5tYW5pZmVzdFR5cGV9IGFuZCB0aGUgZW5kcG9pbnQ6ICR7YXBwLm1hbmlmZXN0fSBpcyBub3QgYXZhaWxhYmxlLmBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5Db25uZWN0aW9uLmlkOiB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFxuXHRcdFx0XHRcdFwiQW4gYXBwIGRlZmluZWQgYnkgYSBjb25uZWN0aW9uIChjb25uZWN0ZWQgYXBwKSBoYXMgYmVlbiBzZWxlY3RlZC4gUGFzc2luZyBzZWxlY3Rpb24gdG8gY29ubmVjdGlvblwiXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IGlkZW50aXR5ID0gYXdhaXQgbGF1bmNoQ29ubmVjdGVkQXBwKGFwcCk7XG5cdFx0XHRcdGlmICghaXNFbXB0eShpZGVudGl0eSkpIHtcblx0XHRcdFx0XHRwbGF0Zm9ybUFwcElkZW50aXRpZXMucHVzaCh7IC4uLmlkZW50aXR5LCBhcHBJZDogYXBwLmFwcElkIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0ZGVmYXVsdDoge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJXZSBkbyBub3Qgc3VwcG9ydCB0aGUgbWFuaWZlc3QgdHlwZSBzbyB0aGlzIGFwcCBjYW5ub3QgYmUgbGF1bmNoZWQuXCIsIGFwcCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bG9nZ2VyLmluZm8oXCJGaW5pc2hlZCBhcHBsaWNhdGlvbiBsYXVuY2ggcmVxdWVzdFwiKTtcblx0XHRyZXR1cm4gcGxhdGZvcm1BcHBJZGVudGl0aWVzO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRsb2dnZXIuZXJyb3IoXCJGYWlsZWQgZHVyaW5nIGFwcGxpY2F0aW9uIGxhdW5jaCByZXF1ZXN0XCIsIGVycik7XG5cdH1cbn1cblxuLyoqXG4gKiBCcmluZyB0aGUgYXBwbGljYXRpb25zIHZpZXdzIHRvIHRoZSBmcm9udC5cbiAqIEBwYXJhbSBwbGF0Zm9ybUFwcCBUaGUgYXBwbGljYXRpb24gdG8gYnJpbmcgdG8gdGhlIGZyb250LlxuICogQHBhcmFtIHBsYXRmb3JtQXBwSWRlbnRpZmllcnMgQWRkaXRpb25hbCBhcHAgaWRlbnRpZmllcnMgdG8gYnJpbmcgdG8gdGhlIGZyb250LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnJpbmdUb0Zyb250KFxuXHRwbGF0Zm9ybUFwcDogUGxhdGZvcm1BcHAsXG5cdHBsYXRmb3JtQXBwSWRlbnRpZmllcnM6IFBsYXRmb3JtQXBwSWRlbnRpZmllcltdXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0c3dpdGNoIChwbGF0Zm9ybUFwcC5tYW5pZmVzdFR5cGUpIHtcblx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLkV4dGVybmFsLmlkOlxuXHRcdGNhc2UgTUFOSUZFU1RfVFlQRVMuSW5saW5lRXh0ZXJuYWwuaWQ6XG5cdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5NYW5pZmVzdC5pZDpcblx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLkRlc2t0b3BCcm93c2VyLmlkOlxuXHRcdGNhc2UgTUFOSUZFU1RfVFlQRVMuRW5kcG9pbnQuaWQ6XG5cdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5Db25uZWN0aW9uLmlkOiB7XG5cdFx0XHRsb2dnZXIuaW5mbyhgQnJpbmdpbmcgYXBwcyBvZiB0eXBlOiAke3BsYXRmb3JtQXBwLm1hbmlmZXN0VHlwZX0gdG8gZnJvbnQgaXMgbm90IHN1cHBvcnRlZC5gKTtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLklubGluZVZpZXcuaWQ6XG5cdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5WaWV3LmlkOiB7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShwbGF0Zm9ybUFwcElkZW50aWZpZXJzKSAmJiBwbGF0Zm9ybUFwcElkZW50aWZpZXJzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRhd2FpdCBicmluZ1ZpZXdUb0Zyb250KHsgaWRlbnRpdHk6IHBsYXRmb3JtQXBwSWRlbnRpZmllcnNbMF0gfSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRgQSByZXF1ZXN0IHRvIGJyaW5nIGEgdmlldyBhcHAgdG8gZnJvbnQgd2FzIHJlY2VpdmVkIGJ1dCB3ZSBkaWRuJ3QgcmVjZWl2ZSBleGFjdGx5IG9uZSBpZGVudGl0eSBmb3IgYXBwOiAke3BsYXRmb3JtQXBwLmFwcElkfS5gXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5XaW5kb3cuaWQ6XG5cdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5JbmxpbmVXaW5kb3cuaWQ6IHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHBsYXRmb3JtQXBwSWRlbnRpZmllcnMpICYmIHBsYXRmb3JtQXBwSWRlbnRpZmllcnMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdGF3YWl0IGJyaW5nV2luZG93VG9Gcm9udCh7IGlkZW50aXR5OiBwbGF0Zm9ybUFwcElkZW50aWZpZXJzWzBdIH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0YEEgcmVxdWVzdCB0byBicmluZyBhIHdpbmRvdyBhcHAgdG8gZnJvbnQgd2FzIHJlY2VpdmVkIGJ1dCB3ZSBkaWRuJ3QgcmVjZWl2ZSBleGFjdGx5IG9uZSBpZGVudGl0eSBmb3IgYXBwOiAke3BsYXRmb3JtQXBwLmFwcElkfS5gXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5VbnJlZ2lzdGVyZWRBcHAuaWQ6IHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHBsYXRmb3JtQXBwSWRlbnRpZmllcnMpICYmIHBsYXRmb3JtQXBwSWRlbnRpZmllcnMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdC8vIGlzVmlldyAtIHRoaXMgc2hvdWxkIGJlIHRoZSBtYWpvcml0eSBvZiBjYXNlcyBmb3IgYW4gdW5yZWdpc3RlcmVkIGFwcFxuXHRcdFx0XHRsZXQgaXNWaWV3ID0gdHJ1ZTtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjb25zdCB2aWV3ID0gZmluLlZpZXcud3JhcFN5bmMocGxhdGZvcm1BcHBJZGVudGlmaWVyc1swXSk7XG5cdFx0XHRcdFx0Y29uc3Qgdmlld0luZm8gPSBhd2FpdCB2aWV3LmdldEluZm8oKTtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcIlZpZXcgSW5mb1wiLCB2aWV3SW5mbyk7XG5cdFx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRcdGlzVmlldyA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChpc1ZpZXcpIHtcblx0XHRcdFx0XHRhd2FpdCBicmluZ1ZpZXdUb0Zyb250KHsgaWRlbnRpdHk6IHBsYXRmb3JtQXBwSWRlbnRpZmllcnNbMF0gfSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YXdhaXQgYnJpbmdXaW5kb3dUb0Zyb250KHsgaWRlbnRpdHk6IHBsYXRmb3JtQXBwSWRlbnRpZmllcnNbMF0gfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdGBBIHJlcXVlc3QgdG8gYnJpbmcgYSB3aW5kb3cgYXBwIHRvIGZyb250IHdhcyByZWNlaXZlZCBidXQgd2UgZGlkbid0IHJlY2VpdmUgZXhhY3RseSBvbmUgaWRlbnRpdHkgZm9yIGFwcDogJHtwbGF0Zm9ybUFwcC5hcHBJZH0uYFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNhc2UgTUFOSUZFU1RfVFlQRVMuU25hcHNob3QuaWQ6IHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHBsYXRmb3JtQXBwSWRlbnRpZmllcnMpICYmIHBsYXRmb3JtQXBwSWRlbnRpZmllcnMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRmb3IgKGNvbnN0IGlkZW50aXR5IG9mIHBsYXRmb3JtQXBwSWRlbnRpZmllcnMpIHtcblx0XHRcdFx0XHRhd2FpdCBicmluZ1ZpZXdUb0Zyb250KHsgaWRlbnRpdHkgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdGBBIHJlcXVlc3QgdG8gYnJpbmcgYSBzbmFwc2hvdCBhcHAgdG8gZnJvbnQgd2FzIHJlY2VpdmVkIGJ1dCB3ZSBkaWRuJ3QgcmVjZWl2ZSBhdCBsZWFzdCBvbmUgdmlldyBmb3IgYXBwOiAke3BsYXRmb3JtQXBwLmFwcElkfS5gXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0ZGVmYXVsdDoge1xuXHRcdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XHRcIldlIGRvIG5vdCBzdXBwb3J0IHRoZSBtYW5pZmVzdCB0eXBlIHNvIHRoaXMgYXBwIGNhbm5vdCBiZSBicm91Z2h0IHRvIGZyb250LlwiLFxuXHRcdFx0XHRwbGF0Zm9ybUFwcFxuXHRcdFx0KTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIHBsYXRmb3JtIGFwcCBpZGVudGlmaWVycyBvZiBhbGwgdGhlIHZpZXdzIGluIGEgd2luZG93LlxuICogQHBhcmFtIG5hbWUgVGhlIGlkZW50aXR5IG5hbWUgb2YgdGhlIHdpbmRvdy5cbiAqIEBwYXJhbSB1dWlkIFRoZSBpZGVudGl0eSB1dWlkIG9mIHRoZSB3aW5kb3cuXG4gKiBAcGFyYW0gYXBwSWQgVGhlIGFwcGxpY2F0aW9uIHRvIG1hcCB0aGUgdmlldyBpZGVudGl0aWVzIHdpdGguXG4gKiBAcmV0dXJucyBMaXN0IG9mIHBsYXRmb3JtIGFwcCBpZGVudGlmaWVycy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0Vmlld0lkZW50aXRpZXMoXG5cdG5hbWU6IHN0cmluZyxcblx0dXVpZDogc3RyaW5nLFxuXHRhcHBJZDogc3RyaW5nXG4pOiBQcm9taXNlPFBsYXRmb3JtQXBwSWRlbnRpZmllcltdPiB7XG5cdGNvbnN0IGlkZW50aXR5ID0geyB1dWlkLCBuYW1lIH07XG5cdGNvbnN0IHdpbiA9IGZpbi5XaW5kb3cud3JhcFN5bmMoaWRlbnRpdHkpO1xuXHRjb25zdCB2aWV3cyA9IGF3YWl0IHdpbi5nZXRDdXJyZW50Vmlld3MoKTtcblx0Y29uc3Qgdmlld0lkZW50aXRpZXMgPSB2aWV3cy5tYXAoKHZpZXcpID0+ICh7IC4uLnZpZXcuaWRlbnRpdHksIGFwcElkIH0pKTtcblx0YXdhaXQgd2luLnNldEFzRm9yZWdyb3VuZCgpO1xuXHRyZXR1cm4gdmlld0lkZW50aXRpZXM7XG59XG5cbi8qKlxuICogR2V0IGEgbWFuaWZlc3QgYXMgZWl0aGVyIGEgc3RyaW5nIG9yIGEgc3BlY2lmaWMgb2JqZWN0IHR5cGUuXG4gKiBAcGFyYW0gcGxhdGZvcm1BcHAgVGhlIGFwcGxpY2F0aW9uIHRvIGdldCB0aGUgbWFuaWZlc3QgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGdldE1hbmlmZXN0PFQ+KHBsYXRmb3JtQXBwOiBQbGF0Zm9ybUFwcCk6IFQge1xuXHRpZiAodHlwZW9mIHBsYXRmb3JtQXBwLm1hbmlmZXN0ID09PSBcInN0cmluZ1wiICYmIHBsYXRmb3JtQXBwLm1hbmlmZXN0LnN0YXJ0c1dpdGgoXCJ7XCIpKSB7XG5cdFx0cmV0dXJuIEpTT04ucGFyc2UocGxhdGZvcm1BcHAubWFuaWZlc3QpIGFzIFQ7XG5cdH1cblxuXHRyZXR1cm4gcGxhdGZvcm1BcHAubWFuaWZlc3QgYXMgVDtcbn1cblxuLyoqXG4gKiBMYXVuY2ggYSB3aW5kb3cgZm9yIHRoZSBwbGF0Zm9ybSBhcHAuXG4gKiBAcGFyYW0gd2luZG93QXBwIFRoZSBhcHAgdG8gbGF1bmNoIHRoZSB3aW5kb3cgZm9yLlxuICogQHJldHVybnMgVGhlIGlkZW50aXR5IG9mIHRoZSB3aW5kb3cgbGF1bmNoZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxhdW5jaFdpbmRvdyh3aW5kb3dBcHA6IFBsYXRmb3JtQXBwKTogUHJvbWlzZTxQbGF0Zm9ybUFwcElkZW50aWZpZXIgfCB1bmRlZmluZWQ+IHtcblx0aWYgKGlzRW1wdHkod2luZG93QXBwKSkge1xuXHRcdGxvZ2dlci53YXJuKFwiTm8gYXBwIHdhcyBwYXNzZWQgdG8gbGF1bmNoV2luZG93XCIpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGlmIChcblx0XHR3aW5kb3dBcHAubWFuaWZlc3RUeXBlICE9PSBNQU5JRkVTVF9UWVBFUy5XaW5kb3cuaWQgJiZcblx0XHR3aW5kb3dBcHAubWFuaWZlc3RUeXBlICE9PSBNQU5JRkVTVF9UWVBFUy5JbmxpbmVXaW5kb3cuaWRcblx0KSB7XG5cdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRgVGhlIGFwcCBwYXNzZWQgd2FzIG5vdCBvZiBtYW5pZmVzdFR5cGUgJHtNQU5JRkVTVF9UWVBFUy5XaW5kb3cuaWR9IG9yICR7TUFOSUZFU1RfVFlQRVMuSW5saW5lV2luZG93LmlkfS5gXG5cdFx0KTtcblx0XHRyZXR1cm47XG5cdH1cblx0bGV0IG1hbmlmZXN0OiBPcGVuRmluLldpbmRvd09wdGlvbnM7XG5cblx0aWYgKHdpbmRvd0FwcC5tYW5pZmVzdFR5cGUgPT09IE1BTklGRVNUX1RZUEVTLldpbmRvdy5pZCkge1xuXHRcdGNvbnN0IG1hbmlmZXN0UmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh3aW5kb3dBcHAubWFuaWZlc3QpO1xuXHRcdG1hbmlmZXN0ID0gYXdhaXQgbWFuaWZlc3RSZXNwb25zZS5qc29uKCk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gY29udmVyc2lvbiBiZWNhdXNlIG9mIG1hbmlmZXN0VHlwZS4gSW4gbW9zdCB1c2UgY2FzZXMgbWFuaWZlc3QgaXMgYWx3YXlzIGEgcGF0aCB0byBhbiBleGVjdXRhYmxlIG9yIHRvIGEgbWFuaWZlc3QgZmlsZS4gRm9yIGNsYXNzaWMgd2luZG93cyB3ZSBhcmUgZGVtb25zdHJhdGluZyBob3cgaXQgY291bGQgYmUgdXNlZFxuXHRcdC8vIGZvciBwYXNzaW5nIHRoZSBtYW5pZmVzdCBpbmxpbmVcblx0XHRtYW5pZmVzdCA9IGdldE1hbmlmZXN0KHdpbmRvd0FwcCk7XG5cdH1cblxuXHRsZXQgbmFtZSA9IG1hbmlmZXN0Lm5hbWU7XG5cdGxldCB3YXNOYW1lU3BlY2lmaWVkID0gIWlzRW1wdHkobmFtZSk7XG5cblx0aWYgKCF3YXNOYW1lU3BlY2lmaWVkICYmIHdpbmRvd0FwcD8uaW5zdGFuY2VNb2RlID09PSBcInNpbmdsZVwiKSB7XG5cdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRgQSB1bmlxdWUgbmFtZSB3YXMgbm90IHByb3ZpZGVkIGluIHRoZSBtYW5pZmVzdCBvZiB0aGlzIHdpbmRvdyBidXQgdGhlIGN1c3RvbSBjb25maWcgaW5kaWNhdGVzIHRoYXQgdGhpcyBhcHAgaXMgc3VwcG9zZWQgdG8gaGF2ZSBhIHNpbmdsZSBpbnN0YW5jZSBzbyB3ZSBhcmUgdXNpbmcgdGhlIGFwcElkOiAke3dpbmRvd0FwcC5hcHBJZH0gYXMgdGhlIHVuaXF1ZSBuYW1lLmBcblx0XHQpO1xuXHRcdG5hbWUgPSB3aW5kb3dBcHAuYXBwSWQ7XG5cdFx0Ly8gYXNzaWduIHRoZSBuZXcgbmFtZSB0byB0aGUgbWFuaWZlc3QgaW4gY2FzZSB0aGUgdmlldyBkb2Vzbid0IGV4aXN0IHlldCAoYXMgaXQgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFuZCBub3QgcGFydCBvZiB0aGUgYXBwJ3MgbWFuaWZlc3QpXG5cdFx0bWFuaWZlc3QubmFtZSA9IG5hbWU7XG5cdFx0d2FzTmFtZVNwZWNpZmllZCA9IHRydWU7XG5cdH0gZWxzZSBpZiAoIXdhc05hbWVTcGVjaWZpZWQpIHtcblx0XHRuYW1lID0gYCR7d2luZG93QXBwLmFwcElkfS8ke3JhbmRvbVVVSUQoKX1gO1xuXHRcdG1hbmlmZXN0Lm5hbWUgPSBuYW1lO1xuXHR9XG5cblx0bGV0IGlkZW50aXR5ID0geyB1dWlkOiBmaW4ubWUuaWRlbnRpdHkudXVpZCwgbmFtZSB9O1xuXG5cdGxldCB3aW5kb3dFeGlzdHMgPSBmYWxzZTtcblxuXHRpZiAod2FzTmFtZVNwZWNpZmllZCkge1xuXHRcdHdpbmRvd0V4aXN0cyA9IGF3YWl0IGRvZXNXaW5kb3dFeGlzdChpZGVudGl0eSwgdHJ1ZSk7XG5cdH1cblxuXHRpZiAoIXdpbmRvd0V4aXN0cykge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHRjb25zdCBjcmVhdGVkV2luZG93ID0gYXdhaXQgcGxhdGZvcm0uY3JlYXRlV2luZG93KG1hbmlmZXN0KTtcblx0XHRcdGlkZW50aXR5ID0gY3JlYXRlZFdpbmRvdy5pZGVudGl0eTtcblx0XHRcdGF3YWl0IGJyaW5nV2luZG93VG9Gcm9udCh7IHdpbmRvdzogY3JlYXRlZFdpbmRvdyB9KTtcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdGxvZ2dlci5lcnJvcihcIkVycm9yIGxhdW5jaGluZyB3aW5kb3dcIiwgZXJyKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHsgLi4uaWRlbnRpdHksIGFwcElkOiB3aW5kb3dBcHAuYXBwSWQgfTtcbn1cblxuLyoqXG4gKiBMYXVuY2ggYSB2aWV3IGZvciB0aGUgcGxhdGZvcm0gYXBwLlxuICogQHBhcmFtIHZpZXdBcHAgVGhlIGFwcCB0byBsYXVuY2ggdGhlIHZpZXcgZm9yLlxuICogQHJldHVybnMgVGhlIGlkZW50aXR5IG9mIHRoZSB2aWV3IGxhdW5jaGVkLlxuICovXG5hc3luYyBmdW5jdGlvbiBsYXVuY2hWaWV3KHZpZXdBcHA6IFBsYXRmb3JtQXBwKTogUHJvbWlzZTxQbGF0Zm9ybUFwcElkZW50aWZpZXIgfCB1bmRlZmluZWQ+IHtcblx0aWYgKGlzRW1wdHkodmlld0FwcCkpIHtcblx0XHRsb2dnZXIud2FybihcIk5vIGFwcCB3YXMgcGFzc2VkIHRvIGxhdW5jaFZpZXdcIik7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0aWYgKFxuXHRcdHZpZXdBcHAubWFuaWZlc3RUeXBlICE9PSBNQU5JRkVTVF9UWVBFUy5WaWV3LmlkICYmXG5cdFx0dmlld0FwcC5tYW5pZmVzdFR5cGUgIT09IE1BTklGRVNUX1RZUEVTLklubGluZVZpZXcuaWRcblx0KSB7XG5cdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRgVGhlIGFwcCBwYXNzZWQgd2FzIG5vdCBvZiBtYW5pZmVzdFR5cGUgJHtNQU5JRkVTVF9UWVBFUy5WaWV3LmlkfSBvciAke01BTklGRVNUX1RZUEVTLklubGluZVZpZXcuaWR9LmBcblx0XHQpO1xuXHRcdHJldHVybjtcblx0fVxuXHRsZXQgbWFuaWZlc3Q6IE9wZW5GaW4uVmlld09wdGlvbnM7XG5cblx0aWYgKHZpZXdBcHAubWFuaWZlc3RUeXBlID09PSBNQU5JRkVTVF9UWVBFUy5WaWV3LmlkKSB7XG5cdFx0Y29uc3QgbWFuaWZlc3RSZXNwb25zZSA9IGF3YWl0IGZldGNoKHZpZXdBcHAubWFuaWZlc3QpO1xuXHRcdG1hbmlmZXN0ID0gYXdhaXQgbWFuaWZlc3RSZXNwb25zZS5qc29uKCk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gY29udmVyc2lvbiBiZWNhdXNlIG9mIG1hbmlmZXN0VHlwZS4gSW4gbW9zdCB1c2UgY2FzZXMgbWFuaWZlc3QgaXMgYWx3YXlzIGEgcGF0aCB0byBhbiBleGVjdXRhYmxlIG9yIHRvIGEgbWFuaWZlc3QgZmlsZS4gRm9yIHZpZXdzIHdlIGFyZSBkZW1vbnN0cmF0aW5nIGhvdyBpdCBjb3VsZCBiZSB1c2VkXG5cdFx0Ly8gZm9yIHBhc3NpbmcgdGhlIG1hbmlmZXN0IGlubGluZVxuXHRcdG1hbmlmZXN0ID0gZ2V0TWFuaWZlc3Qodmlld0FwcCk7XG5cdH1cblxuXHRsZXQgbmFtZSA9IG1hbmlmZXN0Lm5hbWU7XG5cblx0bGV0IHdhc05hbWVTcGVjaWZpZWQgPSAhaXNFbXB0eShuYW1lKTtcblxuXHRpZiAoIXdhc05hbWVTcGVjaWZpZWQgJiYgdmlld0FwcD8uaW5zdGFuY2VNb2RlID09PSBcInNpbmdsZVwiKSB7XG5cdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRgQSB1bmlxdWUgbmFtZSB3YXMgbm90IHByb3ZpZGVkIGluIHRoZSBtYW5pZmVzdCBvZiB0aGlzIHZpZXcgYnV0IHRoZSBjdXN0b20gY29uZmlnIGluZGljYXRlcyB0aGF0IHRoaXMgYXBwIGlzIHN1cHBvc2VkIHRvIGhhdmUgYSBzaW5nbGUgaW5zdGFuY2Ugc28gd2UgYXJlIHVzaW5nIHRoZSBhcHBJZDogJHt2aWV3QXBwLmFwcElkfSBhcyB0aGUgdW5pcXVlIG5hbWUuYFxuXHRcdCk7XG5cdFx0bmFtZSA9IHZpZXdBcHAuYXBwSWQ7XG5cdFx0Ly8gYXNzaWduIHRoZSBuZXcgbmFtZSB0byB0aGUgbWFuaWZlc3QgaW4gY2FzZSB0aGUgdmlldyBkb2Vzbid0IGV4aXN0IHlldCAoYXMgaXQgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFuZCBub3QgcGFydCBvZiB0aGUgYXBwJ3MgbWFuaWZlc3QpXG5cdFx0bWFuaWZlc3QubmFtZSA9IG5hbWU7XG5cdFx0d2FzTmFtZVNwZWNpZmllZCA9IHRydWU7XG5cdH0gZWxzZSBpZiAoIXdhc05hbWVTcGVjaWZpZWQpIHtcblx0XHRuYW1lID0gYCR7dmlld0FwcC5hcHBJZH0vJHtyYW5kb21VVUlEKCl9YDtcblx0XHRtYW5pZmVzdC5uYW1lID0gbmFtZTtcblx0fVxuXG5cdGxldCBpZGVudGl0eSA9IHsgdXVpZDogZmluLm1lLmlkZW50aXR5LnV1aWQsIG5hbWUgfTtcblxuXHRsZXQgdmlld0V4aXN0cyA9IGZhbHNlO1xuXG5cdGlmICh3YXNOYW1lU3BlY2lmaWVkKSB7XG5cdFx0dmlld0V4aXN0cyA9IGF3YWl0IGRvZXNWaWV3RXhpc3QoaWRlbnRpdHksIHRydWUpO1xuXHR9XG5cblx0aWYgKCF2aWV3RXhpc3RzKSB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdGNvbnN0IGNyZWF0ZWRWaWV3ID0gYXdhaXQgcGxhdGZvcm0uY3JlYXRlVmlldyhtYW5pZmVzdCk7XG5cdFx0XHRpZGVudGl0eSA9IGNyZWF0ZWRWaWV3LmlkZW50aXR5O1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0bG9nZ2VyLmVycm9yKFwiRXJyb3IgbGF1bmNoaW5nIHZpZXdcIiwgZXJyKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHsgLi4uaWRlbnRpdHksIGFwcElkOiB2aWV3QXBwLmFwcElkIH07XG59XG5cbi8qKlxuICogTGF1bmNoIGEgc25hcHNob3QgZm9yIHRoZSBwbGF0Zm9ybSBhcHAuXG4gKiBAcGFyYW0gc25hcHNob3RBcHAgVGhlIGFwcCB0byBsYXVuY2ggc25hcHNob3QgdmlldyBmb3IuXG4gKiBAcmV0dXJucyBUaGUgaWRlbnRpdGllcyBvZiB0aGUgc25hcHNob3QgcGFydHMgbGF1bmNoZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxhdW5jaFNuYXBzaG90KHNuYXBzaG90QXBwOiBQbGF0Zm9ybUFwcCk6IFByb21pc2U8UGxhdGZvcm1BcHBJZGVudGlmaWVyW10gfCB1bmRlZmluZWQ+IHtcblx0aWYgKGlzRW1wdHkoc25hcHNob3RBcHApKSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJObyBhcHAgd2FzIHBhc3NlZCB0byBsYXVuY2hTbmFwc2hvdFwiKTtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpZiAoXG5cdFx0c25hcHNob3RBcHAubWFuaWZlc3RUeXBlICE9PSBNQU5JRkVTVF9UWVBFUy5TbmFwc2hvdC5pZCAmJlxuXHRcdHNuYXBzaG90QXBwLm1hbmlmZXN0VHlwZSAhPT0gTUFOSUZFU1RfVFlQRVMuSW5saW5lU25hcHNob3QuaWRcblx0KSB7XG5cdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRgVGhlIGFwcCBwYXNzZWQgd2FzIG5vdCBvZiBtYW5pZmVzdFR5cGUgJHtNQU5JRkVTVF9UWVBFUy5TbmFwc2hvdC5pZH0gb3IgJHtNQU5JRkVTVF9UWVBFUy5JbmxpbmVTbmFwc2hvdC5pZH1gXG5cdFx0KTtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRsZXQgbWFuaWZlc3Q6IEJyb3dzZXJTbmFwc2hvdDtcblxuXHRpZiAoc25hcHNob3RBcHAubWFuaWZlc3RUeXBlID09PSBNQU5JRkVTVF9UWVBFUy5TbmFwc2hvdC5pZCkge1xuXHRcdGxvZ2dlci5pbmZvKGBGZXRjaGluZyBzbmFwc2hvdCBmb3IgYXBwICR7c25hcHNob3RBcHAuYXBwSWR9IGZyb20gdXJsOiAke3NuYXBzaG90QXBwLm1hbmlmZXN0fWApO1xuXHRcdGNvbnN0IG1hbmlmZXN0UmVzcG9uc2UgPSBhd2FpdCBmZXRjaChzbmFwc2hvdEFwcC5tYW5pZmVzdCk7XG5cdFx0bWFuaWZlc3QgPSBhd2FpdCBtYW5pZmVzdFJlc3BvbnNlLmpzb24oKTtcblx0fSBlbHNlIHtcblx0XHRsb2dnZXIuaW5mbyhgVXNpbmcgc25hcHNob3QgZGVmaW5lZCBpbiBtYW5pZmVzdCBzZXR0aW5nIG9mIGFwcCAke3NuYXBzaG90QXBwLmFwcElkfWApO1xuXHRcdG1hbmlmZXN0ID0gZ2V0TWFuaWZlc3Qoc25hcHNob3RBcHApO1xuXHR9XG5cblx0Y29uc3Qgd2luZG93cyA9IG1hbmlmZXN0LndpbmRvd3M7XG5cdGNvbnN0IHdpbmRvd3NUb0NyZWF0ZSA9IFtdO1xuXG5cdGlmIChBcnJheS5pc0FycmF5KHdpbmRvd3MpKSB7XG5cdFx0Y29uc3Qgd2luZG93c1RvR2F0aGVyOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGNvbnN0IHZpZXdJZHM6IFBsYXRmb3JtQXBwSWRlbnRpZmllcltdID0gW107XG5cblx0XHRmb3IgKGNvbnN0IGN1cnJlbnRXaW5kb3cgb2Ygd2luZG93cykge1xuXHRcdFx0bGV0IGdldFZpZXdJZHNGb3JMYXlvdXQgPSBmaW5kVmlld05hbWVzKGN1cnJlbnRXaW5kb3cubGF5b3V0KTtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRXaW5kb3cud29ya3NwYWNlUGxhdGZvcm0/LnBhZ2VzKSkge1xuXHRcdFx0XHRmb3IgKGNvbnN0IHBhZ2Ugb2YgY3VycmVudFdpbmRvdy53b3Jrc3BhY2VQbGF0Zm9ybS5wYWdlcykge1xuXHRcdFx0XHRcdGdldFZpZXdJZHNGb3JMYXlvdXQgPSBnZXRWaWV3SWRzRm9yTGF5b3V0LmNvbmNhdChmaW5kVmlld05hbWVzKHBhZ2UubGF5b3V0KSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGdldFZpZXdJZHNGb3JMYXlvdXQgPSBbLi4ubmV3IFNldChnZXRWaWV3SWRzRm9yTGF5b3V0KV07XG5cblx0XHRcdGlmIChnZXRWaWV3SWRzRm9yTGF5b3V0Lmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRjb25zdCB1dWlkID0gcmFuZG9tVVVJRCgpO1xuXHRcdFx0XHRjb25zdCBuYW1lID0gYCR7c25hcHNob3RBcHAuYXBwSWR9LyR7dXVpZH1gO1xuXHRcdFx0XHRjdXJyZW50V2luZG93Lm5hbWUgPSBuYW1lO1xuXHRcdFx0XHR3aW5kb3dzVG9DcmVhdGUucHVzaChjdXJyZW50V2luZG93KTtcblx0XHRcdFx0d2luZG93c1RvR2F0aGVyLnB1c2gobmFtZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyB3ZSBoYXZlIHZpZXdzLiBHcmFiIHRoZSBmaXJzdCBvbmUgdG8gdmFsaWRhdGUgZXhpc3RlbmNlLlxuXHRcdFx0XHRjb25zdCB2aWV3SWQgPSBnZXRWaWV3SWRzRm9yTGF5b3V0WzBdO1xuXG5cdFx0XHRcdGZvciAoY29uc3QgZW50cnkgb2YgZ2V0Vmlld0lkc0ZvckxheW91dCkge1xuXHRcdFx0XHRcdHZpZXdJZHMucHVzaCh7IG5hbWU6IGVudHJ5LCB1dWlkOiBmaW4ubWUuaWRlbnRpdHkudXVpZCwgYXBwSWQ6IHNuYXBzaG90QXBwLmFwcElkIH0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gdGhlc2Ugdmlld3Mgc2hvdWxkIGJlIHJlYWRvbmx5IGFuZCBjYW5ub3QgYmUgcHVsbGVkIG91dCBvZiB0aGUgcGFnZSBvciBjbG9zZWRcblx0XHRcdFx0aWYgKCEoYXdhaXQgZG9lc1ZpZXdFeGlzdCh7IG5hbWU6IHZpZXdJZCwgdXVpZDogZmluLm1lLmlkZW50aXR5LnV1aWQgfSkpKSB7XG5cdFx0XHRcdFx0d2luZG93c1RvQ3JlYXRlLnB1c2goY3VycmVudFdpbmRvdyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRtYW5pZmVzdC53aW5kb3dzID0gd2luZG93c1RvQ3JlYXRlO1xuXG5cdFx0aWYgKHdpbmRvd3NUb0NyZWF0ZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRhd2FpdCBwbGF0Zm9ybS5hcHBseVNuYXBzaG90KG1hbmlmZXN0KTtcblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJFcnJvciB0cnlpbmcgdG8gYXBwbHkgc25hcHNob3QgdG8gcGxhdGZvcm1cIiwgZXJyLCBtYW5pZmVzdCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Zm9yIChjb25zdCB0YXJnZXRXaW5kb3cgb2Ygd2luZG93c1RvR2F0aGVyKSB7XG5cdFx0XHRjb25zdCB3aW5kb3dWaWV3SWRzID0gYXdhaXQgZ2V0Vmlld0lkZW50aXRpZXModGFyZ2V0V2luZG93LCBmaW4ubWUuaWRlbnRpdHkudXVpZCwgc25hcHNob3RBcHAuYXBwSWQpO1xuXHRcdFx0dmlld0lkcy5wdXNoKC4uLndpbmRvd1ZpZXdJZHMpO1xuXHRcdH1cblxuXHRcdHJldHVybiB2aWV3SWRzO1xuXHR9XG59XG5cbi8qKlxuICogTGF1bmNoIGFuIGFwcCBhc3NldCBmb3IgdGhlIHBsYXRmb3JtIGFwcC5cbiAqIEBwYXJhbSBhcHBBc3NldEFwcCBUaGUgYXBwIHRvIGxhdW5jaCBhcHAgYXNzZXQgdmlldyBmb3IuXG4gKiBAcmV0dXJucyBUaGUgaWRlbnRpdGllcyBvZiB0aGUgc25hcHNob3QgcGFydHMgbGF1bmNoZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxhdW5jaEFwcEFzc2V0KGFwcEFzc2V0QXBwOiBQbGF0Zm9ybUFwcCk6IFByb21pc2U8UGxhdGZvcm1BcHBJZGVudGlmaWVyIHwgdW5kZWZpbmVkPiB7XG5cdGNvbnN0IG9wdGlvbnM6IE9wZW5GaW4uRXh0ZXJuYWxQcm9jZXNzUmVxdWVzdFR5cGUgPSB7fTtcblx0bG9nZ2VyLmluZm8oYFJlcXVlc3QgdG8gbGF1bmNoIGFwcCBhc3NldCBhcHAgb2YgdHlwZSAke2FwcEFzc2V0QXBwLm1hbmlmZXN0VHlwZX1gKTtcblx0aWYgKGFwcEFzc2V0QXBwLm1hbmlmZXN0VHlwZSA9PT0gTUFOSUZFU1RfVFlQRVMuQXBwYXNzZXQuaWQpIHtcblx0XHRvcHRpb25zLmFsaWFzID0gYXBwQXNzZXRBcHAubWFuaWZlc3Q7XG5cdH0gZWxzZSBpZiAoYXBwQXNzZXRBcHAubWFuaWZlc3RUeXBlID09PSBNQU5JRkVTVF9UWVBFUy5JbmxpbmVBcHBBc3NldC5pZCkge1xuXHRcdGNvbnN0IGFwcEFzc2V0SW5mbzogT3BlbkZpbi5BcHBBc3NldEluZm8gPSBnZXRNYW5pZmVzdChhcHBBc3NldEFwcCk7XG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IGZpbi5TeXN0ZW0uZG93bmxvYWRBc3NldChhcHBBc3NldEluZm8sIChwcm9ncmVzcykgPT4ge1xuXHRcdFx0XHRjb25zdCBkb3dubG9hZGVkUGVyY2VudCA9IE1hdGguZmxvb3IoKHByb2dyZXNzLmRvd25sb2FkZWRCeXRlcyAvIHByb2dyZXNzLnRvdGFsQnl0ZXMpICogMTAwKTtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYERvd25sb2FkZWQgJHtkb3dubG9hZGVkUGVyY2VudH0lIG9mIGFwcCBhc3NldCB3aXRoIGFwcElkIG9mICR7YXBwQXNzZXRBcHAuYXBwSWR9YCk7XG5cdFx0XHR9KTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0bG9nZ2VyLmVycm9yKGBFcnJvciB0cnlpbmcgdG8gZG93bmxvYWQgYXBwIGFzc2V0IHdpdGggYXBwIGlkOiAke2FwcEFzc2V0QXBwLmFwcElkfWAsIGVycm9yKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0b3B0aW9ucy5hbGlhcyA9IGFwcEFzc2V0SW5mby5hbGlhcztcblx0XHRvcHRpb25zLmFyZ3VtZW50cyA9IGFwcEFzc2V0SW5mby5hcmdzO1xuXHR9IGVsc2Uge1xuXHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XCJBbiBhcHAgYXNzZXQgYXBwIHdhcyBwYXNzZWQgdG8gbGF1bmNoIGFwcCBhc3NldCBidXQgaXQgZGlkbid0IG1hdGNoIHRoZSBzdXBwb3J0ZWQgbWFuaWZlc3QgdHlwZXMuXCJcblx0XHQpO1xuXHRcdHJldHVybjtcblx0fVxuXHRpZiAoYXBwQXNzZXRBcHAuaW5zdGFuY2VNb2RlID09PSBcInNpbmdsZVwiKSB7XG5cdFx0Ly8gdXNlIHRoZSBhcHBJZCBhcyB0aGUgVVVJRCBhbmQgT3BlbkZpbiB3aWxsIG9ubHkgYmUgYWJsZSB0byBsYXVuY2ggYSBzaW5nbGUgaW5zdGFuY2Vcblx0XHRvcHRpb25zLnV1aWQgPSBhcHBBc3NldEFwcC5hcHBJZDtcblx0fVxuXHRsb2dnZXIuaW5mbyhgTGF1bmNoaW5nIGFwcCBhc3NldCB3aXRoIGFwcElkOiAke2FwcEFzc2V0QXBwLmFwcElkfSB3aXRoIHRoZSBmb2xsb3dpbmcgb3B0aW9uczpgLCBvcHRpb25zKTtcblx0dHJ5IHtcblx0XHRjb25zdCBpZGVudGl0eSA9IGF3YWl0IGZpbi5TeXN0ZW0ubGF1bmNoRXh0ZXJuYWxQcm9jZXNzKG9wdGlvbnMpO1xuXHRcdGxvZ2dlci5pbmZvKGBBcHAgYXNzZXQgd2l0aCBhcHBJZDogJHthcHBBc3NldEFwcC5hcHBJZH0gbGF1bmNoZWQgd2l0aCB0aGUgZm9sbG93aW5nIGlkZW50aXR5YCwgaWRlbnRpdHkpO1xuXHRcdHJldHVybiB7IC4uLmlkZW50aXR5LCBhcHBJZDogYXBwQXNzZXRBcHAuYXBwSWQgfTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRsb2dnZXIuZXJyb3IoYEVycm9yIHRyeWluZyB0byBsYXVuY2ggYXBwIGFzc2V0IHdpdGggYXBwSWQ6ICR7YXBwQXNzZXRBcHAuYXBwSWR9fWAsIGVycm9yKTtcblx0fVxufVxuXG4vKipcbiAqIExhdW5jaCBhbiBleHRlcm5hbCBmb3IgdGhlIHBsYXRmb3JtIGFwcC5cbiAqIEBwYXJhbSBleHRlcm5hbEFwcCBUaGUgYXBwIHRvIGxhdW5jaCBleHRlcm5hbCB2aWV3IGZvci5cbiAqIEByZXR1cm5zIFRoZSBpZGVudGl0aWVzIG9mIHRoZSBzbmFwc2hvdCBwYXJ0cyBsYXVuY2hlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbGF1bmNoRXh0ZXJuYWwoZXh0ZXJuYWxBcHA6IFBsYXRmb3JtQXBwKTogUHJvbWlzZTxQbGF0Zm9ybUFwcElkZW50aWZpZXIgfCB1bmRlZmluZWQ+IHtcblx0bGV0IG9wdGlvbnM6IE9wZW5GaW4uRXh0ZXJuYWxQcm9jZXNzUmVxdWVzdFR5cGUgPSB7fTtcblx0bG9nZ2VyLmluZm8oYFJlcXVlc3QgdG8gZXh0ZXJuYWwgYXBwIG9mIHR5cGUgJHtleHRlcm5hbEFwcC5tYW5pZmVzdFR5cGV9YCk7XG5cdGlmIChleHRlcm5hbEFwcC5tYW5pZmVzdFR5cGUgPT09IE1BTklGRVNUX1RZUEVTLkV4dGVybmFsLmlkKSB7XG5cdFx0b3B0aW9ucy5wYXRoID0gZXh0ZXJuYWxBcHAubWFuaWZlc3Q7XG5cdH0gZWxzZSBpZiAoZXh0ZXJuYWxBcHAubWFuaWZlc3RUeXBlID09PSBNQU5JRkVTVF9UWVBFUy5JbmxpbmVFeHRlcm5hbC5pZCkge1xuXHRcdG9wdGlvbnMgPSBnZXRNYW5pZmVzdChleHRlcm5hbEFwcCk7XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJBbiBleHRlcm5hbCBhcHAgd2FzIHBhc3NlZCB0byBsYXVuY2ggYnV0IGl0IGRpZG4ndCBtYXRjaCB0aGUgc3VwcG9ydGVkIG1hbmlmZXN0IHR5cGVzLlwiKTtcblx0XHRyZXR1cm47XG5cdH1cblx0aWYgKGV4dGVybmFsQXBwLmluc3RhbmNlTW9kZSA9PT0gXCJzaW5nbGVcIikge1xuXHRcdC8vIHVzZSB0aGUgYXBwSWQgYXMgdGhlIFVVSUQgYW5kIE9wZW5GaW4gd2lsbCBvbmx5IGJlIGFibGUgdG8gbGF1bmNoIGEgc2luZ2xlIGluc3RhbmNlXG5cdFx0b3B0aW9ucy51dWlkID0gZXh0ZXJuYWxBcHAuYXBwSWQ7XG5cdH1cblx0dHJ5IHtcblx0XHRjb25zdCBpZGVudGl0eSA9IGF3YWl0IGZpbi5TeXN0ZW0ubGF1bmNoRXh0ZXJuYWxQcm9jZXNzKG9wdGlvbnMpO1xuXHRcdHJldHVybiB7IC4uLmlkZW50aXR5LCBhcHBJZDogZXh0ZXJuYWxBcHAuYXBwSWQgfTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0bG9nZ2VyLmVycm9yKGBFcnJvciB0cnlpbmcgdG8gbGF1bmNoIGV4dGVybmFsIHdpdGggYXBwSWQ6ICR7ZXh0ZXJuYWxBcHAuYXBwSWR9YCwgZXJyKTtcblx0fVxufVxuIiwiaW1wb3J0IHR5cGUgeyBXb3Jrc3BhY2VQbGF0Zm9ybU1vZHVsZSB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZU1vZHVsZXMsIGxvYWRNb2R1bGVzIH0gZnJvbSBcIi4vbW9kdWxlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRMaWZlY3ljbGUsXG5cdExpZmVjeWNsZUV2ZW50cyxcblx0TGlmZWN5Y2xlSGFuZGxlcixcblx0TGlmZWN5Y2xlUHJvdmlkZXJPcHRpb25zXG59IGZyb20gXCIuL3NoYXBlcy9saWZlY3ljbGUtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IE1vZHVsZURlZmluaXRpb24sIE1vZHVsZUVudHJ5LCBNb2R1bGVIZWxwZXJzIH0gZnJvbSBcIi4vc2hhcGVzL21vZHVsZS1zaGFwZXNcIjtcbmltcG9ydCB7IGlzRW1wdHksIHJhbmRvbVVVSUQgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5sZXQgbW9kdWxlczogTW9kdWxlRW50cnk8TGlmZWN5Y2xlLCB1bmtub3duLCB1bmtub3duLCBNb2R1bGVEZWZpbml0aW9uPltdID0gW107XG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJMaWZlY3ljbGVcIik7XG5jb25zdCBhbGxMaWZlY3ljbGVFdmVudHM6IHtcblx0W2tleSBpbiBMaWZlY3ljbGVFdmVudHNdPzoge1xuXHRcdHN1YnNjcmliZXJzOiB7XG5cdFx0XHRpZDogc3RyaW5nO1xuXHRcdFx0aGFuZGxlcjogTGlmZWN5Y2xlSGFuZGxlcjtcblx0XHR9W107XG5cdFx0cGxhdGZvcm0/OiBXb3Jrc3BhY2VQbGF0Zm9ybU1vZHVsZTtcblx0XHRsYXN0UGF5bG9hZD86IHVua25vd247XG5cdH07XG59ID0ge307XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgbGlmZWN5Y2xlIHByb3ZpZGVyLlxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIGxpZmVjeWNsZSBwcm92aWRlci5cbiAqIEBwYXJhbSBoZWxwZXJzIE1vZHVsZSBoZWxwZXJzIHRvIHBhc3MgdG8gYW55IGxvYWRlZCBtb2R1bGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdChcblx0b3B0aW9uczogTGlmZWN5Y2xlUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkLFxuXHRoZWxwZXJzOiBNb2R1bGVIZWxwZXJzXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKG9wdGlvbnMpIHtcblx0XHRsb2dnZXIuaW5mbyhcIkluaXRpYWxpemluZyBsaWZlY3ljbGUgcHJvdmlkZXJcIik7XG5cdFx0bW9kdWxlcyA9IGF3YWl0IGxvYWRNb2R1bGVzPExpZmVjeWNsZT4ob3B0aW9ucywgXCJsaWZlY3ljbGVcIik7XG5cdFx0YXdhaXQgaW5pdGlhbGl6ZU1vZHVsZXM8TGlmZWN5Y2xlPihtb2R1bGVzLCBoZWxwZXJzKTtcblxuXHRcdGZvciAoY29uc3QgbGlmZWN5Y2xlTW9kdWxlIG9mIG1vZHVsZXMpIHtcblx0XHRcdGNvbnN0IGxpZmVjeWNsZUV2ZW50cyA9IGF3YWl0IGxpZmVjeWNsZU1vZHVsZS5pbXBsZW1lbnRhdGlvbi5nZXQoKTtcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIGxpZmVjeWNsZUV2ZW50cykge1xuXHRcdFx0XHRjb25zdCBsaWZlY3ljbGVFdmVudDogTGlmZWN5Y2xlRXZlbnRzID0ga2V5IGFzIExpZmVjeWNsZUV2ZW50cztcblx0XHRcdFx0Y29uc3QgZXZ0ID0gbGlmZWN5Y2xlRXZlbnRzW2xpZmVjeWNsZUV2ZW50XTtcblx0XHRcdFx0aWYgKGV2dCkge1xuXHRcdFx0XHRcdHN1YnNjcmliZUxpZmVjeWNsZUV2ZW50KGxpZmVjeWNsZUV2ZW50LCBldnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogRmlyZSBhIGxpZmVjeWNsZSBldmVudC5cbiAqIEBwYXJhbSBwbGF0Zm9ybSBUaGUgcGxhdGZvcm0uXG4gKiBAcGFyYW0gbGlmZWN5Y2xlRXZlbnQgVGhlIGV2ZW50IHRvIGZpcmUuXG4gKiBAcGFyYW0gcGF5bG9hZCBBbnkgY3VzdG9tIGRhdGEgdG8gcGFzcyB0byB0aGUgaGFuZGxlcnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaXJlTGlmZWN5Y2xlRXZlbnQ8VCA9IHVua25vd24+KFxuXHRwbGF0Zm9ybTogV29ya3NwYWNlUGxhdGZvcm1Nb2R1bGUsXG5cdGxpZmVjeWNsZUV2ZW50OiBMaWZlY3ljbGVFdmVudHMsXG5cdHBheWxvYWQ/OiBUXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0bG9nZ2VyLmluZm8oYFJlcXVlc3QgdG8gZmlyZSBsaWZlY3ljbGUgZXZlbnQgJHtsaWZlY3ljbGVFdmVudH0gcmVjZWl2ZWRgKTtcblx0Y29uc3QgZXZlbnRIYW5kbGVycyA9IGFsbExpZmVjeWNsZUV2ZW50c1tsaWZlY3ljbGVFdmVudF07XG5cdGlmICghaXNFbXB0eShldmVudEhhbmRsZXJzKSkge1xuXHRcdGV2ZW50SGFuZGxlcnMucGxhdGZvcm0gPSBwbGF0Zm9ybTtcblx0XHRldmVudEhhbmRsZXJzLmxhc3RQYXlsb2FkID0gcGF5bG9hZDtcblx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdGBOb3RpZnlpbmcgJHtldmVudEhhbmRsZXJzLnN1YnNjcmliZXJzLmxlbmd0aH0gc3Vic2NyaWJlcnMgb2YgbGlmZWN5Y2xlIGV2ZW50ICR7bGlmZWN5Y2xlRXZlbnR9YFxuXHRcdCk7XG5cdFx0Ly8gQ2xvbmUgdGhlIHN1YnNjcmliZXJzLCBvdGhlcndpc2UgaWYgY2FsbGluZyB0aGUgaGFuZGxlciBwZXJmb3JtcyBhbiB1bnN1YnNjcmliZVxuXHRcdC8vIHRoZSBsb29wIGdldHMgb3V0IG9mIHN5bmMgYW5kIGl0ZW1zIGNhbiBiZSBtaXNzZWRcblx0XHRjb25zdCBzdWJzY3JpYmVycyA9IFsuLi5ldmVudEhhbmRsZXJzLnN1YnNjcmliZXJzXTtcblx0XHRmb3IgKGNvbnN0IGlkSGFuZGxlciBvZiBzdWJzY3JpYmVycykge1xuXHRcdFx0bG9nZ2VyLmluZm8oYE5vdGlmeWluZyBzdWJzY3JpYmVyICR7aWRIYW5kbGVyLmlkfSBvZiBldmVudCAke2xpZmVjeWNsZUV2ZW50fWApO1xuXHRcdFx0YXdhaXQgaWRIYW5kbGVyLmhhbmRsZXIocGxhdGZvcm0sIHBheWxvYWQpO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIFN1YnNjcmliZSB0byBhIGxpZmVjeWNsZSBldmVudC5cbiAqIEBwYXJhbSBsaWZlY3ljbGVFdmVudCBUaGUgZXZlbnQgdG8gc3Vic2NyaWJlIHRvLlxuICogQHBhcmFtIGxpZmVjeWNsZUhhbmRsZXIgVGhlIGhhbmRsZXIgdG8gY2FsbCBmb3IgdGhlIGV2ZW50LlxuICogQHJldHVybnMgVGhlIHN1YnNjcmlwdGlvbiBpZCB3aGljaCBjYW4gYmUgdXNlZCB0byB1bnN1YnNjcmliZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YnNjcmliZUxpZmVjeWNsZUV2ZW50PFQgPSB1bmtub3duPihcblx0bGlmZWN5Y2xlRXZlbnQ6IExpZmVjeWNsZUV2ZW50cyxcblx0bGlmZWN5Y2xlSGFuZGxlcjogTGlmZWN5Y2xlSGFuZGxlcjxUPlxuKTogc3RyaW5nIHtcblx0Y29uc3Qgc3Vic2NyaXB0aW9uSWQgPSByYW5kb21VVUlEKCk7XG5cdGNvbnN0IGhhbmRsZXJzOiB7XG5cdFx0c3Vic2NyaWJlcnM6IHtcblx0XHRcdGlkOiBzdHJpbmc7XG5cdFx0XHRoYW5kbGVyOiBMaWZlY3ljbGVIYW5kbGVyO1xuXHRcdH1bXTtcblx0XHRsYXN0UGF5bG9hZD86IHVua25vd247XG5cdFx0cGxhdGZvcm0/OiBXb3Jrc3BhY2VQbGF0Zm9ybU1vZHVsZTtcblx0fSA9IGFsbExpZmVjeWNsZUV2ZW50c1tsaWZlY3ljbGVFdmVudF0gPz8geyBzdWJzY3JpYmVyczogW10gfTtcblx0aGFuZGxlcnMuc3Vic2NyaWJlcnMucHVzaCh7XG5cdFx0aWQ6IHN1YnNjcmlwdGlvbklkLFxuXHRcdGhhbmRsZXI6IGxpZmVjeWNsZUhhbmRsZXIgYXMgTGlmZWN5Y2xlSGFuZGxlclxuXHR9KTtcblx0YWxsTGlmZWN5Y2xlRXZlbnRzW2xpZmVjeWNsZUV2ZW50XSA9IGhhbmRsZXJzO1xuXHRsb2dnZXIuaW5mbyhcblx0XHRgU3Vic2NyaXB0aW9uIGZvciBsaWZlY3ljbGUgZXZlbnQgJHtsaWZlY3ljbGVFdmVudH0gcmVjZWl2ZWQuIFN1YnNjcmlwdGlvbiBpZDogJHtzdWJzY3JpcHRpb25JZH0gcmV0dXJuZWRgXG5cdCk7XG5cblx0Ly8gQ2FsbCB0aGUgbGlmZWN5Y2xlIGhhbmRsZXIgaW1tZWRpYXRlbHkgb24gdGhlIG5leHQgY3ljbGUgd2l0aCB0aGUgbGFzdCBwYXlsb2FkXG5cdC8vIElmIHRoZSBwbGF0Zm9ybSBpcyBzZXQgdGhlbiBmaXJlTGlmZWN5Y2xlRXZlbnQgaGFzIGJlZW4gY2FsbGVkIGF0IGxlYXN0IG9uY2Vcblx0aWYgKCFpc0VtcHR5KGhhbmRsZXJzLnBsYXRmb3JtKSkge1xuXHRcdHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuXHRcdFx0aWYgKCFpc0VtcHR5KGhhbmRsZXJzLnBsYXRmb3JtKSkge1xuXHRcdFx0XHRhd2FpdCBsaWZlY3ljbGVIYW5kbGVyKGhhbmRsZXJzLnBsYXRmb3JtLCBoYW5kbGVycy5sYXN0UGF5bG9hZCBhcyBUKTtcblx0XHRcdH1cblx0XHR9LCAwKTtcblx0fVxuXG5cdHJldHVybiBzdWJzY3JpcHRpb25JZDtcbn1cblxuLyoqXG4gKiBVbnN1YnNjcmliZSBmcm9tIGEgbGlmZWN5Y2xlIGV2ZW50LlxuICogQHBhcmFtIHN1YnNjcmlwdGlvbklkIFRoZSBzdWJzY3JpcHRpb24gaWQgdG8gdW5zdWJzY3JpYmUuXG4gKiBAcGFyYW0gbGlmZWN5Y2xlRXZlbnQgVGhlIGV2ZW50IHRvIHVuc3Vic2NyaWJlIGZyb20uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnN1YnNjcmliZUxpZmVjeWNsZUV2ZW50KHN1YnNjcmlwdGlvbklkOiBzdHJpbmcsIGxpZmVjeWNsZUV2ZW50OiBMaWZlY3ljbGVFdmVudHMpOiB2b2lkIHtcblx0bG9nZ2VyLmluZm8oYFJlcXVlc3QgdG8gdW5zdWJzY3JpYmUgZnJvbSBsaWZlY3ljbGUgZXZlbnQgJHtsaWZlY3ljbGVFdmVudH0gd2l0aCBpZDogJHtzdWJzY3JpcHRpb25JZH1gKTtcblx0Y29uc3QgZXZlbnRIYW5kbGVycyA9IGFsbExpZmVjeWNsZUV2ZW50c1tsaWZlY3ljbGVFdmVudF07XG5cdGlmICghaXNFbXB0eShldmVudEhhbmRsZXJzKSkge1xuXHRcdGNvbnN0IHN1YnNjcmliZXJzID0gZXZlbnRIYW5kbGVycy5zdWJzY3JpYmVycztcblx0XHRjb25zdCBpZHggPSBzdWJzY3JpYmVycy5maW5kSW5kZXgoKGwpID0+IGwuaWQgPT09IHN1YnNjcmlwdGlvbklkKTtcblx0XHRpZiAoaWR4ID49IDApIHtcblx0XHRcdHN1YnNjcmliZXJzLnNwbGljZShpZHgsIDEpO1xuXHRcdH1cblx0fVxufVxuIiwiaW1wb3J0IHsgY2xvc2Vkb3duTW9kdWxlcywgaW5pdGlhbGl6ZU1vZHVsZXMsIGxvYWRNb2R1bGVzIH0gZnJvbSBcIi4vbW9kdWxlc1wiO1xuaW1wb3J0IHR5cGUgeyBMb2dnZXIsIExvZ2dlclByb3ZpZGVyT3B0aW9ucywgTG9nTGV2ZWwsIExvZ1Byb3ZpZGVyIH0gZnJvbSBcIi4vc2hhcGVzL2xvZ2dlci1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgTW9kdWxlRW50cnksIE1vZHVsZUhlbHBlcnMgfSBmcm9tIFwiLi9zaGFwZXMvbW9kdWxlLXNoYXBlc1wiO1xuXG5sZXQgbW9kdWxlczogTW9kdWxlRW50cnk8TG9nUHJvdmlkZXI+W10gPSBbXTtcblxuLyoqXG4gKiBJbml0aWFsaXplIHRoZSBsb2dnZXIgcHJvdmlkZXIuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgbG9nZ2VyIHByb3ZpZGVyLlxuICogQHBhcmFtIGhlbHBlcnMgTW9kdWxlIGhlbHBlcnMgdG8gcGFzcyB0byBhbnkgbG9hZGVkIG1vZHVsZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KFxuXHRvcHRpb25zOiBMb2dnZXJQcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQsXG5cdGhlbHBlcnM6IE1vZHVsZUhlbHBlcnNcbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAob3B0aW9ucykge1xuXHRcdG1vZHVsZXMgPSBhd2FpdCBsb2FkTW9kdWxlczxMb2dQcm92aWRlcj4ob3B0aW9ucywgXCJsb2dcIik7XG5cdFx0YXdhaXQgaW5pdGlhbGl6ZU1vZHVsZXMobW9kdWxlcywgaGVscGVycyk7XG5cdH1cbn1cblxuLyoqXG4gKiBDbG9zZSBkb3duIHRoZSBsb2dnZXIgcHJvdmlkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjbG9zZWRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG5cdGF3YWl0IGNsb3NlZG93bk1vZHVsZXMoXCJsb2dcIik7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbG9nZ2VyLlxuICogQHBhcmFtIGdyb3VwIFRoZSBncm91cCB0byBlbmNhcHN1bGF0ZSB0aGUgbG9nZSBlbnRyaWVzIHdpdGguXG4gKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBsb2dnZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2dnZXIoZ3JvdXA6IHN0cmluZyk6IExvZ2dlciB7XG5cdHJldHVybiB7XG5cdFx0aW5mbzogKG1lc3NhZ2U6IHVua25vd24sIC4uLm9wdGlvbmFsUGFyYW1zOiB1bmtub3duW10pID0+IGxvZyhncm91cCwgXCJpbmZvXCIsIG1lc3NhZ2UsIC4uLm9wdGlvbmFsUGFyYW1zKSxcblx0XHR3YXJuOiAobWVzc2FnZTogdW5rbm93biwgLi4ub3B0aW9uYWxQYXJhbXM6IHVua25vd25bXSkgPT4gbG9nKGdyb3VwLCBcIndhcm5cIiwgbWVzc2FnZSwgLi4ub3B0aW9uYWxQYXJhbXMpLFxuXHRcdGVycm9yOiAobWVzc2FnZTogdW5rbm93biwgLi4ub3B0aW9uYWxQYXJhbXM6IHVua25vd25bXSkgPT5cblx0XHRcdGxvZyhncm91cCwgXCJlcnJvclwiLCBtZXNzYWdlLCAuLi5vcHRpb25hbFBhcmFtcyksXG5cdFx0dHJhY2U6IChtZXNzYWdlOiB1bmtub3duLCAuLi5vcHRpb25hbFBhcmFtczogdW5rbm93bltdKSA9PlxuXHRcdFx0bG9nKGdyb3VwLCBcInRyYWNlXCIsIG1lc3NhZ2UsIC4uLm9wdGlvbmFsUGFyYW1zKSxcblx0XHRkZWJ1ZzogKG1lc3NhZ2U6IHVua25vd24sIC4uLm9wdGlvbmFsUGFyYW1zOiB1bmtub3duW10pID0+IGxvZyhncm91cCwgXCJkZWJ1Z1wiLCBtZXNzYWdlLCAuLi5vcHRpb25hbFBhcmFtcylcblx0fTtcbn1cblxuLyoqXG4gKiBMb2cgZGF0YSBhcyBpbmZvcm1hdGlvbi5cbiAqIEBwYXJhbSBncm91cCBUaGUgZ3JvdXAgc2VuZGluZyB0aGUgbG9nIG1lc3NhZ2UuXG4gKiBAcGFyYW0gbGV2ZWwgVGhlIGxldmVsIG9mIHRoZSBtZXNzYWdlIHRvIGxvZy5cbiAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGxvZy5cbiAqIEBwYXJhbSBvcHRpb25hbFBhcmFtcyBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBkZXRhaWxzLlxuICovXG5mdW5jdGlvbiBsb2coZ3JvdXA6IHN0cmluZywgbGV2ZWw6IExvZ0xldmVsLCBtZXNzYWdlOiB1bmtub3duLCAuLi5vcHRpb25hbFBhcmFtczogdW5rbm93bltdKTogdm9pZCB7XG5cdGxldCBoYXNMb2dnZWQgPSBmYWxzZTtcblx0Zm9yIChjb25zdCBsb2dQcm92aWRlckVudHJ5IG9mIG1vZHVsZXMpIHtcblx0XHRoYXNMb2dnZWQgPSB0cnVlO1xuXHRcdGxvZ1Byb3ZpZGVyRW50cnkuaW1wbGVtZW50YXRpb24ubG9nKGZpbi5tZS5pZGVudGl0eS5uYW1lLCBncm91cCwgbGV2ZWwsIG1lc3NhZ2UsIC4uLm9wdGlvbmFsUGFyYW1zKTtcblx0fVxuXG5cdGlmICghaGFzTG9nZ2VkKSB7XG5cdFx0Y29uc29sZVtsZXZlbF0oYFske2dyb3VwfV1gLCBgWyR7ZmluLm1lLmlkZW50aXR5Lm5hbWV9XWAsIG1lc3NhZ2UsIC4uLm9wdGlvbmFsUGFyYW1zKTtcblx0fVxufVxuIiwiaW1wb3J0IHR5cGUgeyBNYW5pZmVzdFR5cGVzIH0gZnJvbSBcIi4vc2hhcGVzXCI7XG5cbmV4cG9ydCBjb25zdCBNQU5JRkVTVF9UWVBFUzogTWFuaWZlc3RUeXBlcyA9IHtcblx0Vmlldzoge1xuXHRcdGlkOiBcInZpZXdcIixcblx0XHRsYWJlbDogXCJWaWV3XCIsXG5cdFx0ZGVzY3JpcHRpb246XG5cdFx0XHRcIlRoaXMgbWFuaWZlc3QgdHlwZSBleHBlY3RzIHRoZSBtYW5pZmVzdCBzZXR0aW5nIHRvIGJlIHBvaW50ZWQgdG8gYSBqc29uIGZpbGUgdGhhdCBjb250YWlucyB2aWV3IG9wdGlvbnMuXCJcblx0fSxcblx0SW5saW5lVmlldzoge1xuXHRcdGlkOiBcImlubGluZS12aWV3XCIsXG5cdFx0bGFiZWw6IFwiVmlld1wiLFxuXHRcdGRlc2NyaXB0aW9uOlxuXHRcdFx0XCJUaGlzIG1hbmlmZXN0IHR5cGUgZXhwZWN0cyB0aGUgbWFuaWZlc3Qgc2V0dGluZyB0byBoYXZlIHRoZSBvcHRpb25zIGlubGluZSByYXRoZXIgdGhhbiBhIHVybCB0byBhIGpzb24gZmlsZS5cIlxuXHR9LFxuXHRXaW5kb3c6IHtcblx0XHRpZDogXCJ3aW5kb3dcIixcblx0XHRsYWJlbDogXCJXaW5kb3dcIixcblx0XHRkZXNjcmlwdGlvbjpcblx0XHRcdFwiVGhpcyBtYW5pZmVzdCB0eXBlIGV4cGVjdHMgdGhlIG1hbmlmZXN0IHNldHRpbmcgdG8gcG9pbnQgdG8gYSBqc29uIGZpbGUgdGhhdCBjb250YWlucyBjbGFzc2ljIHdpbmRvdyBvcHRpb25zLlwiXG5cdH0sXG5cdElubGluZVdpbmRvdzoge1xuXHRcdGlkOiBcImlubGluZS13aW5kb3dcIixcblx0XHRsYWJlbDogXCJXaW5kb3dcIixcblx0XHRkZXNjcmlwdGlvbjpcblx0XHRcdFwiVGhpcyBtYW5pZmVzdCB0eXBlIGV4cGVjdHMgdGhlIG1hbmlmZXN0IHNldHRpbmcgdG8gaGF2ZSB0aGUgY2xhc3NpYyB3aW5kb3cgb3B0aW9ucyBpbmxpbmUgcmF0aGVyIHRoYW4gYSB1cmwgdG8gYSBqc29uIGZpbGUuXCJcblx0fSxcblx0U25hcHNob3Q6IHtcblx0XHRpZDogXCJzbmFwc2hvdFwiLFxuXHRcdGxhYmVsOiBcIlNuYXBzaG90XCIsXG5cdFx0ZGVzY3JpcHRpb246XG5cdFx0XHRcIlRoaXMgbWFuaWZlc3QgdHlwZSBleHBlY3RzIHRoZSBtYW5pZmVzdCBzZXR0aW5nIHRvIHBvaW50IHRvIGEganNvbiBmaWxlIHRoYXQgY29udGFpbnMgYSBzbmFwc2hvdCAob25lIG9yIG1vcmUgd2luZG93cylcIlxuXHR9LFxuXHRJbmxpbmVTbmFwc2hvdDoge1xuXHRcdGlkOiBcImlubGluZS1zbmFwc2hvdFwiLFxuXHRcdGxhYmVsOiBcIlNuYXBzaG90XCIsXG5cdFx0ZGVzY3JpcHRpb246XG5cdFx0XHRcIlRoaXMgbWFuaWZlc3QgdHlwZSBleHBlY3RzIHRoZSBtYW5pZmVzdCBzZXR0aW5nIHRvIGhhdmUgYSBzbmFwc2hvdCBpbmxpbmUgcmF0aGVyIHRoYW4gYSB1cmwgdG8gYSBqc29uIGZpbGUgdGhhdCBjb250YWlucyBhIHNuYXBzaG90IChvbmUgb3IgbW9yZSB3aW5kb3dzKVwiXG5cdH0sXG5cdE1hbmlmZXN0OiB7XG5cdFx0aWQ6IFwibWFuaWZlc3RcIixcblx0XHRsYWJlbDogXCJBcHBcIixcblx0XHRkZXNjcmlwdGlvbjpcblx0XHRcdFwiVGhpcyBtYW5pZmVzdCB0eXBlIGV4cGVjdHMgdGhlIG1hbmlmZXN0IHNldHRpbmcgdG8gcG9pbnQgdG8gYSBqc29uIGZpbGUgdGhhdCBpcyBhbiBvcGVuZmluIG1hbmlmZXN0LiBBbiBvcGVuZmluIGFwcC5cIlxuXHR9LFxuXHRFeHRlcm5hbDoge1xuXHRcdGlkOiBcImV4dGVybmFsXCIsXG5cdFx0bGFiZWw6IFwiTmF0aXZlIEFwcFwiLFxuXHRcdGRlc2NyaXB0aW9uOiBcIlRoaXMgbWFuaWZlc3QgdHlwZSBleHBlY3RzIHRoZSBtYW5pZmVzdCBzZXR0aW5nIHRvIHBvaW50IHRvIGFuIGV4ZS5cIlxuXHR9LFxuXHRJbmxpbmVFeHRlcm5hbDoge1xuXHRcdGlkOiBcImlubGluZS1leHRlcm5hbFwiLFxuXHRcdGxhYmVsOiBcIk5hdGl2ZSBBcHBcIixcblx0XHRkZXNjcmlwdGlvbjpcblx0XHRcdFwiVGhpcyBtYW5pZmVzdCB0eXBlIGV4cGVjdHMgdGhlIG1hbmlmZXN0IHNldHRpbmcgdG8gcG9pbnQgdG8gYW4gZXhlIHVzaW5nIGFuIGlubGluZSBsYXVuY2ggZXh0ZXJuYWwgcHJvY2VzcyByZXF1ZXN0LlwiXG5cdH0sXG5cdEFwcGFzc2V0OiB7XG5cdFx0aWQ6IFwiYXBwYXNzZXRcIixcblx0XHRsYWJlbDogXCJOYXRpdmUgQXBwXCIsXG5cdFx0ZGVzY3JpcHRpb246IFwiVGhpcyBtYW5pZmVzdCB0eXBlIGV4cGVjdHMgdGhlIG1hbmlmZXN0IHNldHRpbmcgdG8gcG9pbnQgdG8gYW4gYXBwIGFzc2V0IG5hbWUuXCJcblx0fSxcblx0SW5saW5lQXBwQXNzZXQ6IHtcblx0XHRpZDogXCJpbmxpbmUtYXBwYXNzZXRcIixcblx0XHRsYWJlbDogXCJOYXRpdmUgQXBwXCIsXG5cdFx0ZGVzY3JpcHRpb246XG5cdFx0XHRcIlRoaXMgbWFuaWZlc3QgdHlwZSBleHBlY3RzIHRoZSBtYW5pZmVzdCBzZXR0aW5nIHRvIHBvaW50IHRvIGFuIGFwcCBhc3NldCBjb25maWcgdXNpbmcgYW4gaW5saW5lIGxhdW5jaCBleHRlcm5hbCBwcm9jZXNzIHJlcXVlc3QuXCJcblx0fSxcblx0RGVza3RvcEJyb3dzZXI6IHtcblx0XHRpZDogXCJkZXNrdG9wLWJyb3dzZXJcIixcblx0XHRsYWJlbDogXCJEZXNrdG9wIEJyb3dzZXJcIixcblx0XHRkZXNjcmlwdGlvbjpcblx0XHRcdFwiVGhpcyBtYW5pZmVzdCB0eXBlIGV4cGVjdHMgdGhlIG1hbmlmZXN0IHNldHRpbmcgdG8gcG9pbnQgdG8gYSB1cmwgd2hpY2ggd2lsbCBiZSBsYXVuY2hlZCBpbiB0aGUgZGVmYXVsdCBkZXNrdG9wIGJyb3dzZXIuXCJcblx0fSxcblx0RW5kcG9pbnQ6IHtcblx0XHRpZDogXCJlbmRwb2ludFwiLFxuXHRcdGxhYmVsOiBcIkVuZHBvaW50XCIsXG5cdFx0ZGVzY3JpcHRpb246XG5cdFx0XHRcIlRoaXMgbWFuaWZlc3QgdHlwZSBleHBlY3RzIHRoZSBtYW5pZmVzdCBzZXR0aW5nIHRvIHBvaW50IHRvIGFuIGVuZHBvaW50ICh3aGljaCBzaG91bGQgYmUgZGVmaW5lZCBpbiB0aGUgZW5kcG9pbnRQcm92aWRlcikuIEFjdGlvbiB3aWxsIGJlIGNhbGxlZCBvbiB0aGF0IGVuZHBvaW50IGFuZCBwYXNzZWQgdGhlIHNwZWNpZmllZCBhcHAuXCJcblx0fSxcblx0Q29ubmVjdGlvbjoge1xuXHRcdGlkOiBcImNvbm5lY3Rpb25cIixcblx0XHRsYWJlbDogXCJDb25uZWN0ZWQgQXBwXCIsXG5cdFx0ZGVzY3JpcHRpb246XG5cdFx0XHRcIlRoaXMgbWFuaWZlc3QgdHlwZSBleHBlY3RzIHRoZSBtYW5pZmVzdCBzZXR0aW5nIHRvIGhhdmUgYSB1dWlkLiBUaGlzIG11c3QgbWF0Y2ggdG8gYSBjb25uZWN0aW9uIHJlZ2lzdGVyZWQgaW4gdGhlIGNvbm5lY3Rpb25Qcm92aWRlciB3aXRoIGFwcCBzdXBwb3J0LlwiXG5cdH0sXG5cdFVucmVnaXN0ZXJlZEFwcDoge1xuXHRcdGlkOiBcInVucmVnaXN0ZXJlZC1hcHBcIixcblx0XHRsYWJlbDogXCJVbnJlZ2lzdGVyZWQgQXBwXCIsXG5cdFx0ZGVzY3JpcHRpb246XG5cdFx0XHRcIlRoaXMgbWFuaWZlc3QgdHlwZSByZXByZXNlbnRzIHdlYiBwYWdlIGluc3RhbmNlcyB0aGF0IGhhdmUgYmVlbiBsYXVuY2hlZCB0aGF0IGFyZSBub3QgbGlua2VkIHRvIGFuIGFwcC4gVGhpcyBtYW5pZmVzdCB0eXBlIHNob3VsZCBub3QgYmUgaW4gdGhlIHBlcm1pdHRlZCBtYW5pZmVzdCB0eXBlIGxpc3QgZm9yIGFwcCBmZWVkcyBhcyBpdCBpcyBmb3IgZHluYW1pYyB1cmxzLlwiXG5cdH1cbn07XG4iLCJpbXBvcnQgdHlwZSBPcGVuRmluIGZyb20gXCJAb3BlbmZpbi9jb3JlXCI7XG5pbXBvcnQge1xuXHRnZXRDdXJyZW50U3luYyxcblx0dHlwZSBHbG9iYWxDb250ZXh0TWVudUl0ZW1UZW1wbGF0ZSxcblx0dHlwZSBHbG9iYWxDb250ZXh0TWVudU9wdGlvblR5cGUsXG5cdHR5cGUgUGFnZVRhYkNvbnRleHRNZW51SXRlbVRlbXBsYXRlLFxuXHR0eXBlIFBhZ2VUYWJDb250ZXh0TWVudU9wdGlvblR5cGUsXG5cdHR5cGUgVmlld1RhYkNvbnRleHRNZW51VGVtcGxhdGUsXG5cdHR5cGUgVmlld1RhYk1lbnVPcHRpb25UeXBlXG59IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB7IGNoZWNrQ29uZGl0aW9ucyB9IGZyb20gXCIuL2NvbmRpdGlvbnNcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZU1vZHVsZXMsIGxvYWRNb2R1bGVzIH0gZnJvbSBcIi4vbW9kdWxlc1wiO1xuaW1wb3J0IHsgZ2V0U2V0dGluZ3MgfSBmcm9tIFwiLi9zZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVFbnRyeSwgTW9kdWxlSGVscGVycyB9IGZyb20gXCIuL3NoYXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRNZW51RW50cnksXG5cdE1lbnVPcHRpb25UeXBlLFxuXHRNZW51UG9zaXRpb25PcGVyYXRpb24sXG5cdE1lbnVzLFxuXHRNZW51c1Byb3ZpZGVyT3B0aW9ucyxcblx0TWVudVRlbXBsYXRlVHlwZSxcblx0TWVudVR5cGUsXG5cdFJlbGF0ZWRNZW51SWRcbn0gZnJvbSBcIi4vc2hhcGVzL21lbnUtc2hhcGVzXCI7XG5pbXBvcnQgeyBnZXRDdXJyZW50UGFsZXR0ZSB9IGZyb20gXCIuL3RoZW1lc1wiO1xuaW1wb3J0IHsgaXNCb29sZWFuLCBpc0VtcHR5LCByYW5kb21VVUlEIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiTWVudVwiKTtcbmxldCBtb2R1bGVzOiBNb2R1bGVFbnRyeTxNZW51cz5bXSA9IFtdO1xubGV0IG1lbnVQcm92aWRlck9wdGlvbnM6IE1lbnVzUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xubGV0IHBsYXRmb3JtUm9vdFVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIEluaXRpYWxpemUgdGhlIG1lbnUgcHJvdmlkZXIuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgbWVudSBwcm92aWRlci5cbiAqIEBwYXJhbSBoZWxwZXJzIE1vZHVsZSBoZWxwZXJzIHRvIHBhc3MgdG8gYW55IGxvYWRlZCBtb2R1bGVzLlxuICogQHBhcmFtIHJvb3RVcmwgVGhlIHJvb3QgdXJsIGZvciBsb2FkaW5nIGNvbnRlbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KFxuXHRvcHRpb25zOiBNZW51c1Byb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCxcblx0aGVscGVyczogTW9kdWxlSGVscGVycyxcblx0cm9vdFVybDogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKCFpc0VtcHR5KG9wdGlvbnMpKSB7XG5cdFx0cGxhdGZvcm1Sb290VXJsID0gcm9vdFVybDtcblx0XHRtZW51UHJvdmlkZXJPcHRpb25zID0gb3B0aW9ucztcblx0XHRtb2R1bGVzID0gYXdhaXQgbG9hZE1vZHVsZXM8TWVudXM+KG9wdGlvbnMsIFwibWVudXNcIik7XG5cdFx0YXdhaXQgaW5pdGlhbGl6ZU1vZHVsZXM8TWVudXM+KG1vZHVsZXMsIGhlbHBlcnMpO1xuXHR9XG59XG5cbi8qKlxuICogQnVpbGQgYSBtZW51IGZyb20gdGhlIGRlZmF1bHQgZW50cmllcyBhbmQgdGhlIGVudHJpZXMgZnJvbSBjb25maWcuXG4gKiBAcGFyYW0gZGVmYXVsdEVudHJpZXMgVGhlIGRlZmF1bHQgbWVudSBlbnRyaWVzLlxuICogQHBhcmFtIGNvbmZpZ0VudHJpZXMgVGhlIGNvbmZpZyBtZW51IGVudHJpZXMuXG4gKiBAcmV0dXJucyBUaGUgY29tYmluZWQgbWVudSBlbnRyaWVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRNZW51PFQgZXh0ZW5kcyBNZW51VGVtcGxhdGVUeXBlLCBVIGV4dGVuZHMgTWVudU9wdGlvblR5cGU8VD4+KFxuXHRkZWZhdWx0RW50cmllcz86IFRbXSxcblx0Y29uZmlnRW50cmllcz86IE1lbnVFbnRyeTxVPltdXG4pOiBQcm9taXNlPFRbXT4ge1xuXHRjb25zdCBtZW51SXRlbXMgPSBkZWZhdWx0RW50cmllcyA/PyBbXTtcblxuXHRpZiAoQXJyYXkuaXNBcnJheShjb25maWdFbnRyaWVzKSkge1xuXHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblxuXHRcdGZvciAoY29uc3QgbWVudUl0ZW0gb2YgY29uZmlnRW50cmllcykge1xuXHRcdFx0Y29uc3QgeyBwb3NpdGlvbiwgaW5jbHVkZSwgY29uZGl0aW9ucywgc2VwYXJhdG9yLCAuLi5tZW51SXRlbVRlbXBsYXRlIH0gPSBtZW51SXRlbTtcblxuXHRcdFx0aWYgKGluY2x1ZGUgPz8gaXNFbXB0eShpbmNsdWRlKSkge1xuXHRcdFx0XHRjb25zdCBjYW5TaG93ID0gYXdhaXQgY2hlY2tDb25kaXRpb25zKHBsYXRmb3JtLCBjb25kaXRpb25zLCB7XG5cdFx0XHRcdFx0Y2FsbGVyVHlwZTogXCJtZW51XCIsXG5cdFx0XHRcdFx0Y3VzdG9tRGF0YTogbWVudUl0ZW1cblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0aWYgKGNhblNob3cpIHtcblx0XHRcdFx0XHRjb25zdCBpbnNlcnRlZEluZGV4ID0gdXBkYXRlTWVudUVudHJpZXMoXG5cdFx0XHRcdFx0XHRtZW51SXRlbXMsXG5cdFx0XHRcdFx0XHRwb3NpdGlvbj8udHlwZSxcblx0XHRcdFx0XHRcdHBvc2l0aW9uPy5vcGVyYXRpb24sXG5cdFx0XHRcdFx0XHRwb3NpdGlvbj8uY3VzdG9tSWQsXG5cdFx0XHRcdFx0XHRtZW51SXRlbVRlbXBsYXRlIGFzIHVua25vd24gYXMgVFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRJbmRleCA+PSAwKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzZXAgPSB7IHR5cGU6IFwic2VwYXJhdG9yXCIgfSBhcyBUO1xuXHRcdFx0XHRcdFx0aWYgKHNlcGFyYXRvciA9PT0gXCJiZWZvcmVcIikge1xuXHRcdFx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRJbmRleCA9PT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdG1lbnVJdGVtcy51bnNoaWZ0KHNlcCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0bWVudUl0ZW1zLnNwbGljZShpbnNlcnRlZEluZGV4LCAwLCBzZXApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHNlcGFyYXRvciA9PT0gXCJhZnRlclwiKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChpbnNlcnRlZEluZGV4ID09PSBtZW51SXRlbXMubGVuZ3RoIC0gMSkge1xuXHRcdFx0XHRcdFx0XHRcdG1lbnVJdGVtcy5wdXNoKHNlcCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0bWVudUl0ZW1zLnNwbGljZShpbnNlcnRlZEluZGV4ICsgMSwgMCwgc2VwKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBtZW51SXRlbXM7XG59XG5cbi8qKlxuICogR2V0IHRoZSBlbnRyaWVzIGZvciB0aGUgZ2xvYmFsIG1lbnUuXG4gKiBAcGFyYW0gZGVmYXVsdEdsb2JhbENvbnRleHRNZW51IFRoZSBkZWZhdWx0IGVudHJpZXMgZm9yIHRoZSBnbG9iYWwgY29udGV4dCBtZW51LlxuICogQHBhcmFtIHJlbGF0ZWRNZW51SWQgVGhlIGlkZW50aXR5IHRvIGFzc29jaWF0ZSB0aGUgbWVudS5cbiAqIEByZXR1cm5zIFRoZSBtZW51IGVudHJpZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRHbG9iYWxNZW51KFxuXHRkZWZhdWx0R2xvYmFsQ29udGV4dE1lbnU/OiBHbG9iYWxDb250ZXh0TWVudUl0ZW1UZW1wbGF0ZVtdLFxuXHRyZWxhdGVkTWVudUlkPzogUmVsYXRlZE1lbnVJZFxuKTogUHJvbWlzZTxHbG9iYWxDb250ZXh0TWVudUl0ZW1UZW1wbGF0ZVtdPiB7XG5cdGNvbnN0IHNldHRpbmdzID0gYXdhaXQgZ2V0U2V0dGluZ3MoKTtcblx0Y29uc3QgbWVudUVudHJpZXMgPSAoc2V0dGluZ3M/LmJyb3dzZXJQcm92aWRlcj8uZ2xvYmFsTWVudSA/PyBbXSkuY29uY2F0KFxuXHRcdGF3YWl0IGdldE1vZHVsZU1lbnVFbnRyaWVzPEdsb2JhbENvbnRleHRNZW51T3B0aW9uVHlwZT4oXCJnbG9iYWxcIiwgcmVsYXRlZE1lbnVJZClcblx0KTtcblx0Y29uc3QgZ2xvYmFsTWVudSA9IHNldHRpbmdzPy5icm93c2VyUHJvdmlkZXI/Lm1lbnVPcHRpb25zPy5pbmNsdWRlRGVmYXVsdHM/Lmdsb2JhbE1lbnU7XG5cdGlmIChpc0Jvb2xlYW4oZ2xvYmFsTWVudSkgJiYgIWdsb2JhbE1lbnUpIHtcblx0XHRyZXR1cm4gYnVpbGRNZW51KHVuZGVmaW5lZCwgbWVudUVudHJpZXMpO1xuXHR9XG5cdHJldHVybiBidWlsZE1lbnUoZGVmYXVsdEdsb2JhbENvbnRleHRNZW51LCBtZW51RW50cmllcyk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBlbnRyaWVzIGZvciB0aGUgcGFnZSBtZW51LlxuICogQHBhcmFtIGRlZmF1bHRQYWdlQ29udGV4dE1lbnUgVGhlIGRlZmF1bHQgZW50cmllcyBmb3IgdGhlIHBhZ2UgY29udGV4dCBtZW51LlxuICogQHBhcmFtIHJlbGF0ZWRNZW51SWQgVGhlIGlkZW50aXR5IHRvIGFzc29jaWF0ZSB0aGUgbWVudS5cbiAqIEByZXR1cm5zIFRoZSBtZW51IGVudHJpZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQYWdlTWVudShcblx0ZGVmYXVsdFBhZ2VDb250ZXh0TWVudTogUGFnZVRhYkNvbnRleHRNZW51SXRlbVRlbXBsYXRlW10sXG5cdHJlbGF0ZWRNZW51SWQ/OiBSZWxhdGVkTWVudUlkXG4pOiBQcm9taXNlPFBhZ2VUYWJDb250ZXh0TWVudUl0ZW1UZW1wbGF0ZVtdPiB7XG5cdGNvbnN0IHNldHRpbmdzID0gYXdhaXQgZ2V0U2V0dGluZ3MoKTtcblx0Y29uc3QgbWVudUVudHJpZXMgPSAoc2V0dGluZ3M/LmJyb3dzZXJQcm92aWRlcj8ucGFnZU1lbnUgPz8gW10pLmNvbmNhdChcblx0XHRhd2FpdCBnZXRNb2R1bGVNZW51RW50cmllczxQYWdlVGFiQ29udGV4dE1lbnVPcHRpb25UeXBlPihcInBhZ2VcIiwgcmVsYXRlZE1lbnVJZClcblx0KTtcblx0Y29uc3QgcGFnZU1lbnUgPSBzZXR0aW5ncz8uYnJvd3NlclByb3ZpZGVyPy5tZW51T3B0aW9ucz8uaW5jbHVkZURlZmF1bHRzPy5wYWdlTWVudTtcblx0aWYgKGlzQm9vbGVhbihwYWdlTWVudSkgJiYgIXBhZ2VNZW51KSB7XG5cdFx0cmV0dXJuIGJ1aWxkTWVudSh1bmRlZmluZWQsIG1lbnVFbnRyaWVzKTtcblx0fVxuXHRyZXR1cm4gYnVpbGRNZW51KGRlZmF1bHRQYWdlQ29udGV4dE1lbnUsIG1lbnVFbnRyaWVzKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGVudHJpZXMgZm9yIHRoZSB2aWV3IG1lbnUuXG4gKiBAcGFyYW0gZGVmYXVsdFZpZXdDb250ZXh0TWVudSBUaGUgZGVmYXVsdCBlbnRyaWVzIGZvciB0aGUgdmlldyBjb250ZXh0IG1lbnUuXG4gKiBAcGFyYW0gcmVsYXRlZE1lbnVJZCBUaGUgaWRlbnRpdHkgdG8gYXNzb2NpYXRlIHRoZSBtZW51LlxuICogQHJldHVybnMgVGhlIG1lbnUgZW50cmllcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFZpZXdNZW51KFxuXHRkZWZhdWx0Vmlld0NvbnRleHRNZW51OiBWaWV3VGFiQ29udGV4dE1lbnVUZW1wbGF0ZVtdLFxuXHRyZWxhdGVkTWVudUlkPzogUmVsYXRlZE1lbnVJZFxuKTogUHJvbWlzZTxWaWV3VGFiQ29udGV4dE1lbnVUZW1wbGF0ZVtdPiB7XG5cdGNvbnN0IHNldHRpbmdzID0gYXdhaXQgZ2V0U2V0dGluZ3MoKTtcblx0Y29uc3QgbWVudUVudHJpZXMgPSAoc2V0dGluZ3M/LmJyb3dzZXJQcm92aWRlcj8udmlld01lbnUgPz8gW10pLmNvbmNhdChcblx0XHRhd2FpdCBnZXRNb2R1bGVNZW51RW50cmllczxWaWV3VGFiTWVudU9wdGlvblR5cGU+KFwidmlld1wiLCByZWxhdGVkTWVudUlkKVxuXHQpO1xuXHRjb25zdCB2aWV3TWVudSA9IHNldHRpbmdzPy5icm93c2VyUHJvdmlkZXI/Lm1lbnVPcHRpb25zPy5pbmNsdWRlRGVmYXVsdHM/LnZpZXdNZW51O1xuXHRpZiAoaXNCb29sZWFuKHZpZXdNZW51KSAmJiAhdmlld01lbnUpIHtcblx0XHRyZXR1cm4gYnVpbGRNZW51KHVuZGVmaW5lZCwgbWVudUVudHJpZXMpO1xuXHR9XG5cdHJldHVybiBidWlsZE1lbnUoZGVmYXVsdFZpZXdDb250ZXh0TWVudSwgbWVudUVudHJpZXMpO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBhIGxpc3Qgb2YgbWVudSBlbnRyaWVzIGJhc2VkIG9uIGEgc3BlY2lmaWMgb3BlcmF0aW9uLlxuICogQHBhcmFtIG1lbnVFbnRyaWVzIFRoZSBtZW51IGVudHJpZXMgdG8gdXBkYXRlLlxuICogQHBhcmFtIHBvc2l0aW9uVHlwZSBUaGUgdHlwZSBvZiBwb3NpdGlvbmluZy5cbiAqIEBwYXJhbSBwb3NpdGlvbk9wZXJhdGlvbiBUaGUgb3BlcmF0aW9uIHRvIHBlcmZvcm0uXG4gKiBAcGFyYW0gcG9zaXRpb25DdXN0b21JZCBBIGN1c3RvbSBpZCBmb3IgbG9va3VwLlxuICogQHBhcmFtIGVudHJ5IFRoZSBlbnRyeSB0byBvcGVyYXRlIHdpdGguXG4gKiBAcmV0dXJucyBUaGUgaW5kZXggb2YgdGhlIG5ldyBpdGVtLlxuICovXG5mdW5jdGlvbiB1cGRhdGVNZW51RW50cmllczxUIGV4dGVuZHMgTWVudVRlbXBsYXRlVHlwZSwgVSBleHRlbmRzIE1lbnVPcHRpb25UeXBlPFQ+Pihcblx0bWVudUVudHJpZXM6IFRbXSxcblx0cG9zaXRpb25UeXBlPzogVSxcblx0cG9zaXRpb25PcGVyYXRpb24/OiBNZW51UG9zaXRpb25PcGVyYXRpb24sXG5cdHBvc2l0aW9uQ3VzdG9tSWQ/OiBzdHJpbmcsXG5cdGVudHJ5PzogVFxuKTogbnVtYmVyIHtcblx0aWYgKHBvc2l0aW9uT3BlcmF0aW9uID09PSBcInN0YXJ0XCIpIHtcblx0XHRpZiAoZW50cnkpIHtcblx0XHRcdG1lbnVFbnRyaWVzLnVuc2hpZnQoZW50cnkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsb2dnZXIud2FybihcIkVudHJ5IHR5cGUgaXMgc3BlY2lmaWVkIGFzIHN0YXJ0IGJ1dCBubyBlbnRyeSBwcm92aWRlZFwiKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAocG9zaXRpb25PcGVyYXRpb24gPT09IFwiZW5kXCIpIHtcblx0XHRpZiAoZW50cnkpIHtcblx0XHRcdG1lbnVFbnRyaWVzLnB1c2goZW50cnkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsb2dnZXIud2FybihcIkVudHJ5IHR5cGUgaXMgc3BlY2lmaWVkIGFzIGVuZCBidXQgbm8gZW50cnkgcHJvdmlkZWRcIik7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGxldCBlbnRyeUluZGV4OiBudW1iZXI7XG5cblx0XHRpZiAocG9zaXRpb25UeXBlID09PSBcIkN1c3RvbVwiKSB7XG5cdFx0XHRpZiAoaXNFbXB0eShwb3NpdGlvbkN1c3RvbUlkKSkge1xuXHRcdFx0XHRsb2dnZXIud2FybihcIkVudHJ5IHR5cGUgaXMgc3BlY2lmaWVkIGFzIGN1c3RvbSBidXQgbm8gY3VzdG9tSWQgd2FzIHByb3ZpZGVkXCIpO1xuXHRcdFx0fVxuXG5cdFx0XHRlbnRyeUluZGV4ID0gbWVudUVudHJpZXMuZmluZEluZGV4KFxuXHRcdFx0XHQobWVudUVudHJ5KSA9PlxuXHRcdFx0XHRcdG1lbnVFbnRyeS5kYXRhPy50eXBlID09PSBwb3NpdGlvblR5cGUgJiYgbWVudUVudHJ5LmRhdGE/LmFjdGlvbj8uaWQgPT09IHBvc2l0aW9uQ3VzdG9tSWRcblx0XHRcdCk7XG5cblx0XHRcdGlmIChlbnRyeUluZGV4ID09PSAtMSkge1xuXHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRgVW5hYmxlIHRvIGZpbmQgbWVudSB3aXRoIGVudHJ5IHR5cGU6ICR7SlNPTi5zdHJpbmdpZnkoXG5cdFx0XHRcdFx0XHRwb3NpdGlvblR5cGVcblx0XHRcdFx0XHQpfSBhbmQgY3VzdG9tSWQ6ICR7cG9zaXRpb25DdXN0b21JZH1gXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVudHJ5SW5kZXggPSBtZW51RW50cmllcy5maW5kSW5kZXgoKG1lbnVFbnRyeSkgPT4gbWVudUVudHJ5LmRhdGE/LnR5cGUgPT09IHBvc2l0aW9uVHlwZSk7XG5cblx0XHRcdGlmIChlbnRyeUluZGV4ID09PSAtMSkge1xuXHRcdFx0XHRsb2dnZXIud2FybihgVW5hYmxlIHRvIGZpbmQgbWVudSB3aXRoIGVudHJ5IHR5cGU6ICR7cG9zaXRpb25UeXBlfWApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChlbnRyeUluZGV4ICE9PSAtMSAmJiBwb3NpdGlvbk9wZXJhdGlvbikge1xuXHRcdFx0c3dpdGNoIChwb3NpdGlvbk9wZXJhdGlvbikge1xuXHRcdFx0XHRjYXNlIFwiZGVsZXRlXCI6IHtcblx0XHRcdFx0XHRtZW51RW50cmllcy5zcGxpY2UoZW50cnlJbmRleCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2FzZSBcInJlcGxhY2VMYWJlbFwiOiB7XG5cdFx0XHRcdFx0Y29uc3QgbGFiZWwgPSBlbnRyeT8ubGFiZWw7XG5cdFx0XHRcdFx0aWYgKGlzRW1wdHkobGFiZWwpKSB7XG5cdFx0XHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRcdFx0YEFza2VkIHRvIHJlcGxhY2UgbGFiZWwgb2YgbWVudSBlbnRyeSBidXQgbm90IHByb3ZpZGVkIGFuIGVudHJ5IHRvIGdyYWIgYSBsYWJlbCBmcm9tIG9yIGdpdmVuIGFuIGVtcHR5IGxhYmVsLiBUYXJnZXQgbWVudSBkYXRhIHR5cGU6ICR7cG9zaXRpb25UeXBlfWBcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG1lbnVFbnRyaWVzW2VudHJ5SW5kZXhdLmxhYmVsID0gbGFiZWw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNhc2UgXCJhZnRlclwiOiB7XG5cdFx0XHRcdFx0aWYgKGlzRW1wdHkoZW50cnkpKSB7XG5cdFx0XHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRcdFx0YFlvdSBjYW5ub3QgaW5zZXJ0IGEgbWVudSBlbnRyeSBhZnRlciB0aGUgbWVudSBlbnRyeSB3aXRoIGRhdGEgdHlwZTogJHtwb3NpdGlvblR5cGV9IGlmIHlvdSBkbyBub3Qgc3BlY2lmeSBhIG1lbnUgZW50cnlgXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRtZW51RW50cmllcy5zcGxpY2UoZW50cnlJbmRleCArIDEsIDAsIGVudHJ5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2FzZSBcImJlZm9yZVwiOiB7XG5cdFx0XHRcdFx0aWYgKGlzRW1wdHkoZW50cnkpKSB7XG5cdFx0XHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRcdFx0YFlvdSBjYW5ub3QgaW5zZXJ0IGEgbWVudSBlbnRyeSBiZWZvcmUgdGhlIG1lbnUgZW50cnkgd2l0aCBkYXRhIHR5cGU6ICR7cG9zaXRpb25UeXBlfSBpZiB5b3UgZG8gbm90IHNwZWNpZnkgYSBtZW51IGVudHJ5YFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGVudHJ5SW5kZXggPT09IDApIHtcblx0XHRcdFx0XHRcdG1lbnVFbnRyaWVzLnVuc2hpZnQoZW50cnkpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRtZW51RW50cmllcy5zcGxpY2UoZW50cnlJbmRleCwgMCwgZW50cnkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gZW50cnkgPyBtZW51RW50cmllcy5pbmRleE9mKGVudHJ5KSA6IC0xO1xufVxuXG4vKipcbiAqIEdldCB0aGUgZW50cmllcyBmb3IgdGhlIHNwZWNpZmllZCBtZW51IHR5cGUgZnJvbSB0aGUgbW9kdWxlcy5cbiAqIEBwYXJhbSBtZW51VHlwZSBUaGUgbWVudSB0eXBlIHRvIGxvb2sgZm9yLlxuICogQHBhcmFtIHJlbGF0ZWRNZW51SWQgVGhlIGlkZW50aXR5IHRvIGFzc29jaWF0ZSB0aGUgbWVudS5cbiAqIEByZXR1cm5zIFRoZSBtZW51IGVudHJpZXMgZnJvbSB0aGUgbW9kdWxlIGZvciB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldE1vZHVsZU1lbnVFbnRyaWVzPFQgZXh0ZW5kcyBNZW51T3B0aW9uVHlwZTxNZW51VGVtcGxhdGVUeXBlPj4oXG5cdG1lbnVUeXBlOiBNZW51VHlwZSxcblx0cmVsYXRlZE1lbnVJZD86IFJlbGF0ZWRNZW51SWRcbik6IFByb21pc2U8TWVudUVudHJ5PFQ+W10+IHtcblx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRsZXQgbWVudUVudHJpZXM6IE1lbnVFbnRyeTxUPltdID0gW107XG5cdGZvciAoY29uc3QgbWVudU1vZHVsZSBvZiBtb2R1bGVzKSB7XG5cdFx0Y29uc3QgZW50cmllcyA9IGF3YWl0IG1lbnVNb2R1bGUuaW1wbGVtZW50YXRpb24uZ2V0KG1lbnVUeXBlLCBwbGF0Zm9ybSwgcmVsYXRlZE1lbnVJZCk7XG5cdFx0aWYgKGVudHJpZXMpIHtcblx0XHRcdG1lbnVFbnRyaWVzID0gbWVudUVudHJpZXMuY29uY2F0KGVudHJpZXMgYXMgTWVudUVudHJ5PFQ+W10pO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbWVudUVudHJpZXM7XG59XG5cbi8qKlxuICogU2hvdyBhIGN1c3RvbSBtZW51LlxuICogQHBhcmFtIHBvc2l0aW9uIFRoZSBwb3NpdGlvbiB0byBzaG93IHRoZSBtZW51LlxuICogQHBhcmFtIHBvc2l0aW9uLnggVGhlIHggcG9zaXRpb24gdG8gc2hvdyB0aGUgbWVudS5cbiAqIEBwYXJhbSBwb3NpdGlvbi55IFRoZSB5IHBvc2l0aW9uIHRvIHNob3cgdGhlIG1lbnUuXG4gKiBAcGFyYW0gcGFyZW50SWRlbnRpdHkgVGhlIGlkZW50aXR5IG9mIHRoZSBwYXJlbnQgd2luZG93LlxuICogQHBhcmFtIG5vRW50cnlUZXh0IFRoZSB0ZXh0IHRvIGRpc3BsYXkgaWYgdGhlcmUgYXJlIG5vIGVudHJpZXMuXG4gKiBAcGFyYW0gbWVudUVudHJpZXMgVGhlIG1lbnUgZW50cmllcyB0byBkaXNwbGF5LlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIGRpc3BsYXlpbmcgdGhlIG1lbnUuXG4gKiBAcGFyYW0gb3B0aW9ucy5tb2RlIERpc3BsYXkgYXMgbmF0aXZlIG1lbnUgb3IgY3VzdG9tIHBvcHVwLlxuICogQHJldHVybnMgVGhlIG1lbnUgZW50cnkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaG93UG9wdXBNZW51PFQgPSB1bmtub3duPihcblx0cG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSxcblx0cGFyZW50SWRlbnRpdHk6IE9wZW5GaW4uSWRlbnRpdHksXG5cdG5vRW50cnlUZXh0OiBzdHJpbmcsXG5cdG1lbnVFbnRyaWVzOiB7IGxhYmVsOiBzdHJpbmc7IGN1c3RvbURhdGE6IFQ7IGljb24/OiBzdHJpbmcgfVtdLFxuXHRvcHRpb25zPzoge1xuXHRcdG1vZGU/OiBcIm5hdGl2ZVwiIHwgXCJjdXN0b21cIjtcblx0fVxuKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG5cdGlmICgob3B0aW9ucz8ubW9kZSA/PyBcIm5hdGl2ZVwiKSA9PT0gXCJuYXRpdmVcIikge1xuXHRcdHJldHVybiBzaG93TmF0aXZlUG9wdXBNZW51KHBvc2l0aW9uLCBwYXJlbnRJZGVudGl0eSwgbm9FbnRyeVRleHQsIG1lbnVFbnRyaWVzKTtcblx0fVxuXG5cdHJldHVybiBzaG93SHRtbFBvcHVwTWVudShwb3NpdGlvbiwgcGFyZW50SWRlbnRpdHksIG5vRW50cnlUZXh0LCBtZW51RW50cmllcyk7XG59XG5cbi8qKlxuICogU2hvdyBhIGN1c3RvbSBtZW51IHVzaW5nIHBvcHVwIHdpbmRvdy5cbiAqIEBwYXJhbSBwb3NpdGlvbiBUaGUgcG9zaXRpb24gdG8gc2hvdyB0aGUgbWVudS5cbiAqIEBwYXJhbSBwb3NpdGlvbi54IFRoZSB4IHBvc2l0aW9uIHRvIHNob3cgdGhlIG1lbnUuXG4gKiBAcGFyYW0gcG9zaXRpb24ueSBUaGUgeSBwb3NpdGlvbiB0byBzaG93IHRoZSBtZW51LlxuICogQHBhcmFtIHBhcmVudElkZW50aXR5IFRoZSBpZGVudGl0eSBvZiB0aGUgcGFyZW50IHdpbmRvdy5cbiAqIEBwYXJhbSBub0VudHJ5VGV4dCBUaGUgdGV4dCB0byBkaXNwbGF5IGlmIHRoZXJlIGFyZSBubyBlbnRyaWVzLlxuICogQHBhcmFtIG1lbnVFbnRyaWVzIFRoZSBtZW51IGVudHJpZXMgdG8gZGlzcGxheS5cbiAqIEByZXR1cm5zIFRoZSBtZW51IGVudHJ5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hvd0h0bWxQb3B1cE1lbnU8VCA9IHVua25vd24+KFxuXHRwb3NpdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9LFxuXHRwYXJlbnRJZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eSxcblx0bm9FbnRyeVRleHQ6IHN0cmluZyxcblx0bWVudUVudHJpZXM6IHsgbGFiZWw6IHN0cmluZzsgY3VzdG9tRGF0YTogVDsgaWNvbj86IHN0cmluZyB9W11cbik6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuXHRjb25zdCBwYXJlbnRXaW5kb3cgPSBmaW4uV2luZG93LndyYXBTeW5jKHBhcmVudElkZW50aXR5KTtcblx0Y29uc3QgcGFyZW50Qm91bmRzID0gYXdhaXQgcGFyZW50V2luZG93LmdldEJvdW5kcygpO1xuXG5cdGNvbnN0IHBsYXRmb3JtV2luZG93ID0gZmluLldpbmRvdy53cmFwU3luYyhmaW4ubWUuaWRlbnRpdHkpO1xuXG5cdGNvbnN0IGN1cnJlbnRQYWxldHRlID0gYXdhaXQgZ2V0Q3VycmVudFBhbGV0dGUoKTtcblxuXHRjb25zdCByZXN1bHQgPSBhd2FpdCBwbGF0Zm9ybVdpbmRvdy5zaG93UG9wdXBXaW5kb3coe1xuXHRcdG5hbWU6IHJhbmRvbVVVSUQoKSxcblx0XHRpbml0aWFsT3B0aW9uczoge1xuXHRcdFx0c2hvd1Rhc2tiYXJJY29uOiBmYWxzZSxcblx0XHRcdGJhY2tncm91bmRDb2xvcjogY3VycmVudFBhbGV0dGU/LmJhY2tncm91bmRQcmltYXJ5LFxuXHRcdFx0Y3VzdG9tRGF0YToge1xuXHRcdFx0XHRub0VudHJ5VGV4dCxcblx0XHRcdFx0bWVudUVudHJpZXMsXG5cdFx0XHRcdHBhbGV0dGU6IHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kUHJpbWFyeTogY3VycmVudFBhbGV0dGU/LmJhY2tncm91bmRQcmltYXJ5LFxuXHRcdFx0XHRcdHRleHREZWZhdWx0OiBjdXJyZW50UGFsZXR0ZT8udGV4dERlZmF1bHQsXG5cdFx0XHRcdFx0aW5wdXRCYWNrZ3JvdW5kOiBjdXJyZW50UGFsZXR0ZT8uaW5wdXRCYWNrZ3JvdW5kXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXHRcdHVybDogbWVudVByb3ZpZGVyT3B0aW9ucz8ucG9wdXBIdG1sID8/IGAke3BsYXRmb3JtUm9vdFVybH0vY29tbW9uL3BvcHVwcy9tZW51L2luZGV4Lmh0bWxgLFxuXHRcdHg6IHBhcmVudEJvdW5kcy5sZWZ0ICsgcG9zaXRpb24ueCxcblx0XHR5OiBwYXJlbnRCb3VuZHMudG9wICsgcG9zaXRpb24ueSxcblx0XHR3aWR0aDogbWVudVByb3ZpZGVyT3B0aW9ucz8ubWVudVdpZHRoID8/IDIwMCxcblx0XHRoZWlnaHQ6IG1lbnVFbnRyaWVzLmxlbmd0aCAqIChtZW51UHJvdmlkZXJPcHRpb25zPy5tZW51SXRlbUhlaWdodCA/PyAzMilcblx0fSk7XG5cblx0aWYgKHJlc3VsdC5yZXN1bHQgPT09IFwiY2xpY2tlZFwiKSB7XG5cdFx0cmV0dXJuIHJlc3VsdC5kYXRhIGFzIFQ7XG5cdH1cbn1cblxuLyoqXG4gKiBTaG93IHRoZSBwb3B1cCBtZW51LlxuICogQHBhcmFtIHBvc2l0aW9uIFRoZSBwb3NpdGlvbiB0byBkaXNwbGF5IHRoZSBtZW51LlxuICogQHBhcmFtIHBvc2l0aW9uLnggVGhlIHggcG9zaXRpb24gdG8gZGlzcGxheSB0aGUgbWVudS5cbiAqIEBwYXJhbSBwb3NpdGlvbi55IFRoZSB5IHBvc2l0aW9uIHRvIGRpc3BsYXkgdGhlIG1lbnUuXG4gKiBAcGFyYW0gcGFyZW50SWRlbnRpdHkgVGhlIGlkZW50aXR5IG9mIHRoZSB3aW5kb3cgdG8gdXNlIGZvciBzaG93aW5nIHRoZSBwb3B1cC5cbiAqIEBwYXJhbSBub0VudHJ5VGV4dCBUaGUgdGV4dCB0byBkaXNwbGF5IGlmIHRoZXJlIGFyZSBubyBlbnRyaWVzLlxuICogQHBhcmFtIG1lbnVFbnRyaWVzIFRoZSBtZW51IGVudHJpZXMgdG8gZGlzcGxheS5cbiAqIEByZXR1cm5zIFRoZSBzZWxlY3RlZCBlbnRyeSBvciB1bmRlZmluZWQgaWYgbWVudSB3YXMgZGlzbWlzc2VkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hvd05hdGl2ZVBvcHVwTWVudTxUID0gdW5rbm93bj4oXG5cdHBvc2l0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0sXG5cdHBhcmVudElkZW50aXR5OiBPcGVuRmluLklkZW50aXR5LFxuXHRub0VudHJ5VGV4dDogc3RyaW5nLFxuXHRtZW51RW50cmllczogeyBsYWJlbDogc3RyaW5nOyBjdXN0b21EYXRhOiBUOyBpY29uPzogc3RyaW5nIH1bXVxuKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG5cdGNvbnN0IHBhcmVudFdpbmRvdyA9IGZpbi5XaW5kb3cud3JhcFN5bmMocGFyZW50SWRlbnRpdHkpO1xuXG5cdGNvbnN0IHRlbXBsYXRlOiBPcGVuRmluLk1lbnVJdGVtVGVtcGxhdGVbXSA9IG1lbnVFbnRyaWVzLm1hcCgobSkgPT4gKHtcblx0XHRsYWJlbDogbS5sYWJlbCxcblx0XHRpY29uOiBtLmljb24sXG5cdFx0ZGF0YTogbS5jdXN0b21EYXRhXG5cdH0pKTtcblxuXHRpZiAoaXNFbXB0eSh0ZW1wbGF0ZSkgfHwgdGVtcGxhdGUubGVuZ3RoID09PSAwKSB7XG5cdFx0dGVtcGxhdGUucHVzaCh7XG5cdFx0XHRsYWJlbDogbm9FbnRyeVRleHQsXG5cdFx0XHRlbmFibGVkOiBmYWxzZVxuXHRcdH0pO1xuXHR9XG5cblx0Y29uc3QgciA9IGF3YWl0IHBhcmVudFdpbmRvdy5zaG93UG9wdXBNZW51KHtcblx0XHR0ZW1wbGF0ZSxcblx0XHR4OiBwb3NpdGlvbi54LFxuXHRcdHk6IHBvc2l0aW9uLnlcblx0fSk7XG5cblx0aWYgKHIucmVzdWx0ID09PSBcImNsaWNrZWRcIikge1xuXHRcdHJldHVybiByLmRhdGEgYXMgVDtcblx0fVxufVxuIiwiaW1wb3J0IHR5cGUgT3BlbkZpbiBmcm9tIFwiQG9wZW5maW4vY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBXb3Jrc3BhY2VQbGF0Zm9ybU1vZHVsZSB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB7IGdldEFwcCwgZ2V0QXBwcyB9IGZyb20gXCIuL2FwcHNcIjtcbmltcG9ydCAqIGFzIGZhdm9yaXRlUHJvdmlkZXIgZnJvbSBcIi4vZmF2b3JpdGVcIjtcbmltcG9ydCB7IGxhdW5jaCB9IGZyb20gXCIuL2xhdW5jaFwiO1xuaW1wb3J0IHsgc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQsIHVuc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQgfSBmcm9tIFwiLi9saWZlY3ljbGVcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHsgc2hvd1BvcHVwTWVudSB9IGZyb20gXCIuL21lbnVcIjtcbmltcG9ydCB7IGxhdW5jaFBhZ2UgfSBmcm9tIFwiLi9wbGF0Zm9ybS9icm93c2VyXCI7XG5pbXBvcnQgdHlwZSB7IFBsYXRmb3JtQXBwIH0gZnJvbSBcIi4vc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IEZhdm9yaXRlQ2xpZW50IH0gZnJvbSBcIi4vc2hhcGVzL2Zhdm9yaXRlLXNoYXBlc1wiO1xuXG5pbXBvcnQgdHlwZSB7XG5cdE1vZHVsZSxcblx0TW9kdWxlRGVmaW5pdGlvbixcblx0TW9kdWxlRW50cnksXG5cdE1vZHVsZUVudHJ5VHlwZXMsXG5cdE1vZHVsZUhlbHBlcnMsXG5cdE1vZHVsZUltcGxlbWVudGF0aW9uLFxuXHRNb2R1bGVMaXN0LFxuXHRNb2R1bGVUeXBlc1xufSBmcm9tIFwiLi9zaGFwZXMvbW9kdWxlLXNoYXBlc1wiO1xuaW1wb3J0IHtcblx0Z2V0Q3VycmVudENvbG9yU2NoZW1lTW9kZSxcblx0Z2V0Q3VycmVudEljb25Gb2xkZXIsXG5cdGdldEN1cnJlbnRQYWxldHRlLFxuXHRnZXRDdXJyZW50VGhlbWVJZFxufSBmcm9tIFwiLi90aGVtZXNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgZ2V0VmVyc2lvbkluZm8gfSBmcm9tIFwiLi92ZXJzaW9uXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIk1vZHVsZXNcIik7XG5sZXQgcGFzc2VkU2Vzc2lvbklkOiBzdHJpbmc7XG5sZXQgYm9vdHN0cmFwcGVkID0gZmFsc2U7XG5cbi8qKlxuICogQWxsIHRoZSBsb2FkZWQgbW9kdWxlcy5cbiAqL1xuY29uc3QgbG9hZGVkTW9kdWxlczoge1xuXHRbdXJsOiBzdHJpbmddOiBNb2R1bGVFbnRyeVR5cGVzO1xufSA9IHt9O1xuXG4vKipcbiAqIFNldHVwIGFueSByZXF1aXJlZCBsaXN0ZW5lcnMgbmVlZGVkIGJ5IHRoaXMgbW9kdWxlIGFuZCBzcGVjaWZ5IHRoZSBzZXNzaW9uIGlkIGZvciB0aGlzIGluc3RhbmNlIG9mIHRoZSBwbGF0Zm9ybS5cbiAqIEBwYXJhbSBzZXNzaW9uSWQgU2Vzc2lvbiBpZCB0byBtYWtlIGF2YWlsYWJsZSB0byBtb2R1bGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdChzZXNzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRsb2dnZXIuaW5mbyhcblx0XHRgSW5pdGlhbGl6aW5nIGFuZCBsaXN0ZW5pbmcgZm9yIHRoZSBhZnRlciBib290c3RyYXAgbGlmZWN5Y2xlIGV2ZW50IGFuZCBzZXR0aW5nIHRoZSBwYXNzZWQgc2Vzc2lvbklkOiAke3Nlc3Npb25JZH1gXG5cdCk7XG5cdHBhc3NlZFNlc3Npb25JZCA9IHNlc3Npb25JZDtcblx0Y29uc3QgYm9vdHN0cmFwcGVkTGlmZUN5Y2xlSWQ6IHN0cmluZyA9IHN1YnNjcmliZUxpZmVjeWNsZUV2ZW50KFxuXHRcdFwiYWZ0ZXItYm9vdHN0cmFwXCIsXG5cdFx0YXN5bmMgKF9wbGF0Zm9ybTogV29ya3NwYWNlUGxhdGZvcm1Nb2R1bGUpID0+IHtcblx0XHRcdGJvb3RzdHJhcHBlZCA9IHRydWU7XG5cdFx0XHR1bnN1YnNjcmliZUxpZmVjeWNsZUV2ZW50KGJvb3RzdHJhcHBlZExpZmVDeWNsZUlkLCBcImFmdGVyLWJvb3RzdHJhcFwiKTtcblx0XHR9XG5cdCk7XG59XG5cbi8qKlxuICogTG9hZCB0aGUgbW9kdWxlcyBmcm9tIHRoZSBsaXN0LlxuICogQHBhcmFtIG1vZHVsZUxpc3QgVGhlIGxpc3Qgb2YgbW9kdWxlcyB0byBsb2FkLlxuICogQHBhcmFtIG1vZHVsZVR5cGUgVGhlIHR5cGUgb2YgbW9kdWxlcyB0byBsb2FkLlxuICogQHJldHVybnMgTm90aGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRNb2R1bGVzPFxuXHRNIGV4dGVuZHMgTW9kdWxlSW1wbGVtZW50YXRpb248TywgSD4sXG5cdEggPSBNb2R1bGVIZWxwZXJzLFxuXHRPID0gdW5rbm93bixcblx0RCBleHRlbmRzIE1vZHVsZURlZmluaXRpb248Tz4gPSBNb2R1bGVEZWZpbml0aW9uPE8+XG4+KG1vZHVsZUxpc3Q6IE1vZHVsZUxpc3QgfCB1bmRlZmluZWQsIG1vZHVsZVR5cGU6IE1vZHVsZVR5cGVzKTogUHJvbWlzZTxNb2R1bGVFbnRyeTxNLCBILCBPLCBEPltdPiB7XG5cdGNvbnN0IGxvYWRlZDogTW9kdWxlRW50cnk8TSwgSCwgTywgRD5bXSA9IFtdO1xuXG5cdGNvbnN0IG1vZHVsZXMgPSBtb2R1bGVMaXN0Py5tb2R1bGVzO1xuXHRpZiAoQXJyYXkuaXNBcnJheShtb2R1bGVzKSkge1xuXHRcdGZvciAoY29uc3QgbW9kdWxlRGVmaW5pdGlvbiBvZiBtb2R1bGVzKSB7XG5cdFx0XHRjb25zdCBtb2R1bGUgPSBhd2FpdCBsb2FkTW9kdWxlPE0sIEgsIE8sIEQ+KG1vZHVsZURlZmluaXRpb24sIG1vZHVsZVR5cGUpO1xuXHRcdFx0aWYgKG1vZHVsZSkge1xuXHRcdFx0XHRsb2FkZWQucHVzaChtb2R1bGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBsb2FkZWQ7XG59XG5cbi8qKlxuICogTG9hZCBhIG1vZHVsZSBpZiBpdCBpcyBlbmFibGVkIGFuZCBhZGQgaXQgdG8gdGhlIGxvYWRlZCBsaXN0LlxuICogQHBhcmFtIG1vZHVsZURlZmluaXRpb24gVGhlIG1vZHVsZSBkZWZpbml0aW9uIHRvIGxvYWQuXG4gKiBAcGFyYW0gbW9kdWxlVHlwZSBUaGUgdHlwZSBvZiBtb2R1bGUgdG8gbG9hZC5cbiAqIEByZXR1cm5zIE5vdGhpbmcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkTW9kdWxlPFxuXHRNIGV4dGVuZHMgTW9kdWxlSW1wbGVtZW50YXRpb248TywgSD4sXG5cdEggPSBNb2R1bGVIZWxwZXJzLFxuXHRPID0gdW5rbm93bixcblx0RCBleHRlbmRzIE1vZHVsZURlZmluaXRpb248Tz4gPSBNb2R1bGVEZWZpbml0aW9uPE8+XG4+KG1vZHVsZURlZmluaXRpb246IE1vZHVsZURlZmluaXRpb24sIG1vZHVsZVR5cGU6IE1vZHVsZVR5cGVzKTogUHJvbWlzZTxNb2R1bGVFbnRyeTxNLCBILCBPLCBEPiB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoIW1vZHVsZURlZmluaXRpb24uaWQpIHtcblx0XHRsb2dnZXIud2FybihcIk1vZHVsZSBkb2VzIG5vdCBoYXZlIGFuIGlkIGRlZmluZWRcIik7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGlmIChtb2R1bGVEZWZpbml0aW9uLmVuYWJsZWQgPz8gdHJ1ZSkge1xuXHRcdGlmICghbW9kdWxlRGVmaW5pdGlvbi51cmwpIHtcblx0XHRcdGxvZ2dlci5lcnJvcihgTW9kdWxlICcke21vZHVsZURlZmluaXRpb24uaWR9JyBjYW4gbm90IGJlIGxvYWRlZCB3aXRob3V0IGEgdXJsYCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmICghbG9hZGVkTW9kdWxlc1ttb2R1bGVEZWZpbml0aW9uLnVybF0pIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBMb2FkaW5nIG1vZHVsZSAnJHttb2R1bGVEZWZpbml0aW9uLnVybH0nIGZvciB0eXBlICR7bW9kdWxlVHlwZX1gKTtcblx0XHRcdFx0Y29uc3QgbW9kOiBNb2R1bGUgPSBhd2FpdCBpbXBvcnQoLyogd2VicGFja0lnbm9yZTogdHJ1ZSAqLyBtb2R1bGVEZWZpbml0aW9uLnVybCk7XG5cdFx0XHRcdGlmICghbW9kLmVudHJ5UG9pbnRzKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmVycm9yKGBNb2R1bGUgJyR7bW9kdWxlRGVmaW5pdGlvbi5pZH0nIGhhcyBubyBleHBvcnRlZCBlbnRyeVBvaW50c2ApO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBlbnRyeVBvaW50cyA9IE9iamVjdC5rZXlzKG1vZC5lbnRyeVBvaW50cyk7XG5cdFx0XHRcdGlmICghZW50cnlQb2ludHMuaW5jbHVkZXMobW9kdWxlVHlwZSkpIHtcblx0XHRcdFx0XHRsb2dnZXIuZXJyb3IoXG5cdFx0XHRcdFx0XHRgTW9kdWxlIHdhcyBsb2FkZWQsIGJ1dCBpcyBkb2VzIG5vdCBjb250YWluIGFuIGVudHJ5IHBvaW50IGZvciB0eXBlICR7bW9kdWxlVHlwZX0sIGl0IG9ubHkgY29udGFpbnMgJHtlbnRyeVBvaW50cy5qb2luKFxuXHRcdFx0XHRcdFx0XHRcIiwgXCJcblx0XHRcdFx0XHRcdCl9YFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBNb2R1bGUgY29udGFpbnMgaW1wbGVtZW50YXRpb25zIGZvciAke2VudHJ5UG9pbnRzLmpvaW4oXCIsIFwiKX1gKTtcblx0XHRcdFx0bG9hZGVkTW9kdWxlc1ttb2R1bGVEZWZpbml0aW9uLnVybF0gPSB7fTtcblxuXHRcdFx0XHQvLyBTdG9yZSBhbGwgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhlIG1vZHVsZXNcblx0XHRcdFx0Zm9yIChjb25zdCBlbnRyeVBvaW50IG9mIGVudHJ5UG9pbnRzKSB7XG5cdFx0XHRcdFx0bG9hZGVkTW9kdWxlc1ttb2R1bGVEZWZpbml0aW9uLnVybF1bZW50cnlQb2ludCBhcyBNb2R1bGVUeXBlc10gPSB7XG5cdFx0XHRcdFx0XHQvLyBJZiB0aGUgbW9kdWxlVHlwZSBpcyB0aGUgdHlwZSBiZWluZyBsb2FkZWQgdGhlbiB3ZSBjYW4gc3RvcmUgdGhlXG5cdFx0XHRcdFx0XHQvLyBkZWZpbml0aW9uIGFzIHdlbGwsIG90aGVyd2lzZSBjcmVhdGUgYSBkdW1teSBlbnRyeVxuXHRcdFx0XHRcdFx0ZGVmaW5pdGlvbjogZW50cnlQb2ludCA9PT0gbW9kdWxlVHlwZSA/IG1vZHVsZURlZmluaXRpb24gOiAoe30gYXMgTW9kdWxlRGVmaW5pdGlvbiksXG5cdFx0XHRcdFx0XHRpc0luaXRpYWxpemVkOiBmYWxzZSxcblx0XHRcdFx0XHRcdC8vIFN0b3JlIHRoZSBlbnRyeSBwb2ludCBvciBhIGR1bW15IGltcGxlbWVudGF0aW9uIGZvciBvdGhlciB0eXBlc1xuXHRcdFx0XHRcdFx0aW1wbGVtZW50YXRpb246IG1vZC5lbnRyeVBvaW50c1tlbnRyeVBvaW50IGFzIE1vZHVsZVR5cGVzXSA/PyAoe30gYXMgTW9kdWxlSW1wbGVtZW50YXRpb24pXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdGxvZ2dlci5lcnJvcihgRXJyb3IgbG9hZGluZyBtb2R1bGUgJHttb2R1bGVEZWZpbml0aW9uLnVybH1gLCBlcnIpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZ2dlci5pbmZvKGBNb2R1bGUgYWxyZWFkeSBsb2FkZWQgJyR7bW9kdWxlRGVmaW5pdGlvbi51cmx9JyB1c2luZyBjYWNoZWQgdmVyc2lvbmApO1xuXHRcdFx0Y29uc3QgbG9hZGVkID0gbG9hZGVkTW9kdWxlc1ttb2R1bGVEZWZpbml0aW9uLnVybF1bbW9kdWxlVHlwZV07XG5cdFx0XHRpZiAoIWxvYWRlZCkge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoYE1vZHVsZSBmcm9tIGNhY2hlIGRvZXMgbm90IGNvbnRhaW4gYW4gZW50cnkgcG9pbnQgZm9yIHR5cGUgJHttb2R1bGVUeXBlfWApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRsb2FkZWQuZGVmaW5pdGlvbiA9IG1vZHVsZURlZmluaXRpb247XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGxvYWRlZE1vZHVsZXNbbW9kdWxlRGVmaW5pdGlvbi51cmxdW21vZHVsZVR5cGVdIGFzIE1vZHVsZUVudHJ5PE0sIEgsIE8sIEQ+O1xuXHR9XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBtb2R1bGVzIG9mIHRoZSBnaXZlbiB0eXBlLlxuICogQHBhcmFtIG1vZHVsZUVudHJpZXMgVGhlIHR5cGUgb2YgbW9kdWxlcyB0byBpbml0aWFsaXplLlxuICogQHBhcmFtIGhlbHBlcnMgSGVscGVyIG1ldGhvZHMgdG8gcGFzcyB0byBhbGwgdGhlIG1vZHVsZXMuXG4gKiBAcGFyYW0gcHJvZ3Jlc3MgUHJvZ3Jlc3MgY2FsbGJhY2sgZm9yIG1vbml0b3IgbW9kdWxlIGluaXRpYWxpemF0aW9uLlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgaW5pdGlhbGl6ZWQgbW9kdWxlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRpYWxpemVNb2R1bGVzPFxuXHRNIGV4dGVuZHMgTW9kdWxlSW1wbGVtZW50YXRpb248TywgSD4sXG5cdEggPSBNb2R1bGVIZWxwZXJzLFxuXHRPID0gdW5rbm93bixcblx0RCBleHRlbmRzIE1vZHVsZURlZmluaXRpb248Tz4gPSBNb2R1bGVEZWZpbml0aW9uPE8+XG4+KFxuXHRtb2R1bGVFbnRyaWVzOiBNb2R1bGVFbnRyeTxNLCBILCBPLCBEPltdLFxuXHRoZWxwZXJzOiBILFxuXHRwcm9ncmVzcz86IChkZWZpbml0aW9uOiBNb2R1bGVEZWZpbml0aW9uKSA9PiBQcm9taXNlPHZvaWQ+XG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0Zm9yIChjb25zdCBtb2R1bGVFbnRyeSBvZiBtb2R1bGVFbnRyaWVzKSB7XG5cdFx0aWYgKHByb2dyZXNzKSB7XG5cdFx0XHRhd2FpdCBwcm9ncmVzcyhtb2R1bGVFbnRyeS5kZWZpbml0aW9uKTtcblx0XHR9XG5cdFx0YXdhaXQgaW5pdGlhbGl6ZU1vZHVsZTxNLCBILCBPLCBEPihtb2R1bGVFbnRyeSwgaGVscGVycyk7XG5cdH1cbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIGEgc2luZ2xlIG1vZHVsZSBlbnRyeS5cbiAqIEBwYXJhbSBtb2R1bGVFbnRyeSBUaGUgZW50cnkgdG8gaW5pdGlhbGl6ZS5cbiAqIEBwYXJhbSBoZWxwZXJzIEhlbHBlciBtZXRob2RzIHRvIHBhc3MgdG8gdGhlIG1vZHVsZS5cbiAqIEByZXR1cm5zIFRoZSBpbml0aWFsaXplZCBtb2R1bGUgaW1wbGVtZW50YXRpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0aWFsaXplTW9kdWxlPFxuXHRNIGV4dGVuZHMgTW9kdWxlSW1wbGVtZW50YXRpb248TywgSD4sXG5cdEggPSBNb2R1bGVIZWxwZXJzLFxuXHRPID0gdW5rbm93bixcblx0RCBleHRlbmRzIE1vZHVsZURlZmluaXRpb248Tz4gPSBNb2R1bGVEZWZpbml0aW9uPE8+XG4+KG1vZHVsZUVudHJ5OiBNb2R1bGVFbnRyeTxNLCBILCBPLCBEPiwgaGVscGVyczogSCk6IFByb21pc2U8TSB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoIW1vZHVsZUVudHJ5LmlzSW5pdGlhbGl6ZWQpIHtcblx0XHRpZiAobW9kdWxlRW50cnkuaW1wbGVtZW50YXRpb24/LmluaXRpYWxpemUpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBJbml0aWFsaXppbmcgbW9kdWxlICcke21vZHVsZUVudHJ5LmRlZmluaXRpb24uaWR9J2ApO1xuXHRcdFx0XHRhd2FpdCBtb2R1bGVFbnRyeS5pbXBsZW1lbnRhdGlvbi5pbml0aWFsaXplKG1vZHVsZUVudHJ5LmRlZmluaXRpb24sIGNyZWF0ZUxvZ2dlciwgaGVscGVycyk7XG5cdFx0XHRcdG1vZHVsZUVudHJ5LmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdGxvZ2dlci5lcnJvcihgRXJyb3IgaW5pdGlhbGl6aW5nIG1vZHVsZSAke21vZHVsZUVudHJ5LmRlZmluaXRpb24uaWR9YCwgZXJyKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0bW9kdWxlRW50cnkuaXNJbml0aWFsaXplZCA9IHRydWU7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG1vZHVsZUVudHJ5LmlzSW5pdGlhbGl6ZWQgPyBtb2R1bGVFbnRyeS5pbXBsZW1lbnRhdGlvbiA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDbG9zZSBkb3duIG1vZHVsZXMgb2YgdGhlIGdpdmVuIHR5cGUuXG4gKiBAcGFyYW0gbW9kdWxlVHlwZSBUaGUgdHlwZSBvZiBtb2R1bGVzIHRvIGNsb3NlIGRvd24uXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xvc2Vkb3duTW9kdWxlcyhtb2R1bGVUeXBlOiBNb2R1bGVUeXBlcyk6IFByb21pc2U8dm9pZD4ge1xuXHRmb3IgKGNvbnN0IHVybCBpbiBsb2FkZWRNb2R1bGVzKSB7XG5cdFx0Y29uc3QgbW9kdWxlRW50cnkgPSBsb2FkZWRNb2R1bGVzW3VybF1bbW9kdWxlVHlwZV07XG5cdFx0aWYgKG1vZHVsZUVudHJ5KSB7XG5cdFx0XHRhd2FpdCBjbG9zZWRvd25Nb2R1bGUobW9kdWxlRW50cnkpO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIENsb3NlIGRvd24gYSBzaW5nbGUgbW9kdWxlIGVudHJ5LlxuICogQHBhcmFtIG1vZHVsZUVudHJ5IFRoZSBlbnRyeSB0byBjbG9zZSBkb3duLlxuICogQHJldHVybnMgTm90aGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNsb3NlZG93bk1vZHVsZTxcblx0TSBleHRlbmRzIE1vZHVsZUltcGxlbWVudGF0aW9uPE8sIEg+LFxuXHRIID0gTW9kdWxlSGVscGVycyxcblx0TyA9IHVua25vd24sXG5cdEQgZXh0ZW5kcyBNb2R1bGVEZWZpbml0aW9uPE8+ID0gTW9kdWxlRGVmaW5pdGlvbjxPPlxuPihtb2R1bGVFbnRyeTogTW9kdWxlRW50cnk8TSwgSCwgTywgRD4pOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKG1vZHVsZUVudHJ5LmlzSW5pdGlhbGl6ZWQpIHtcblx0XHRpZiAobW9kdWxlRW50cnkuaW1wbGVtZW50YXRpb24/LmNsb3NlZG93bikge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYENsb3NpbmcgZG93biBtb2R1bGUgJyR7bW9kdWxlRW50cnkuZGVmaW5pdGlvbi5pZH0nYCk7XG5cdFx0XHRcdGF3YWl0IG1vZHVsZUVudHJ5LmltcGxlbWVudGF0aW9uLmNsb3NlZG93bigpO1xuXHRcdFx0XHRtb2R1bGVFbnRyeS5pc0luaXRpYWxpemVkID0gZmFsc2U7XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0bG9nZ2VyLmVycm9yKGBFcnJvciBjbG9zaW5nIGRvd24gbW9kdWxlICR7bW9kdWxlRW50cnkuZGVmaW5pdGlvbi5pZH1gLCBlcnIpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRtb2R1bGVFbnRyeS5pc0luaXRpYWxpemVkID0gZmFsc2U7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogR2V0IHRoZSBkZWZhdWx0IGhlbHBlcnMgZm9yIG1vZHVsZXMuXG4gKiBAcmV0dXJucyBUaGUgbW9kdWxlIGhlbHBlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0SGVscGVycygpOiBNb2R1bGVIZWxwZXJzIHtcblx0cmV0dXJuIHtcblx0XHRzZXNzaW9uSWQ6IHBhc3NlZFNlc3Npb25JZCxcblx0XHRnZXRBcHBzOiBhc3luYyAoKTogUHJvbWlzZTxQbGF0Zm9ybUFwcFtdPiA9PiB7XG5cdFx0XHRsb2dnZXIuaW5mbyhcImdldEFwcHM6IGdldHRpbmcgcHVibGljIGFwcHMgZm9yIG1vZHVsZS5cIik7XG5cdFx0XHRyZXR1cm4gZ2V0QXBwcyh7IHByaXZhdGU6IGZhbHNlIH0pO1xuXHRcdH0sXG5cdFx0Z2V0QXBwLFxuXHRcdGdldEN1cnJlbnRUaGVtZUlkLFxuXHRcdGdldEN1cnJlbnRJY29uRm9sZGVyLFxuXHRcdGdldEN1cnJlbnRQYWxldHRlLFxuXHRcdGdldEN1cnJlbnRDb2xvclNjaGVtZU1vZGUsXG5cdFx0Z2V0VmVyc2lvbkluZm8sXG5cdFx0Z2V0SW50ZXJvcENsaWVudCxcblx0XHRnZXRGYXZvcml0ZUNsaWVudCxcblx0XHRsYXVuY2hBcHA6IGFzeW5jIChhcHBJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0XHRsb2dnZXIuaW5mbyhgbGF1bmNoQXBwOiBMb29raW5nIHVwIGFwcElkOiAke2FwcElkfWApO1xuXHRcdFx0Y29uc3QgYXBwID0gYXdhaXQgZ2V0QXBwKGFwcElkKTtcblx0XHRcdGlmIChpc0VtcHR5KGFwcCkpIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oYGxhdW5jaEFwcDogVGhlIHNwZWNpZmllZCBhcHBJZDogJHthcHBJZH0gaXMgbm90IGxpc3RlZCBpbiB0aGlzIHBsYXRmb3JtLmApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYGxhdW5jaEFwcDogTGF1bmNoaW5nIGFwcCB3aXRoIGFwcElkOiAke2FwcElkfWApO1xuXHRcdFx0XHRhd2FpdCBsYXVuY2goYXBwKTtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYGxhdW5jaEFwcDogQXBwIHdpdGggYXBwSWQ6ICR7YXBwSWR9IGxhdW5jaGVkLmApO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0bGF1bmNoUGFnZSxcblx0XHRzdWJzY3JpYmVMaWZlY3ljbGVFdmVudCxcblx0XHR1bnN1YnNjcmliZUxpZmVjeWNsZUV2ZW50LFxuXHRcdHNob3dQb3B1cE1lbnVcblx0fTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGludGVyb3AgY2xpZW50IHRvIHVzZSB3aXRoIHRoZSBtb2R1bGVzLlxuICogQHJldHVybnMgVGhlIGludGVyb3AgY2xpZW50LlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRJbnRlcm9wQ2xpZW50KCk6IFByb21pc2U8T3BlbkZpbi5JbnRlcm9wQ2xpZW50IHwgdW5kZWZpbmVkPiB7XG5cdGlmIChib290c3RyYXBwZWQpIHtcblx0XHQvLyBpZiBhbiBpbnRlcm9wIGJyb2tlciBoYXMgYmVlbiBhc3NpZ25lZCBmb3IgdGhlIHBsYXRmb3JtXG5cdFx0Ly8gcHJvdmlkZSBhIHByb3h5IHRvIHRoZSByZXF1ZXN0aW5nIGludGVncmF0aW9uXG5cdFx0cmV0dXJuIGZpbi5JbnRlcm9wLmNvbm5lY3RTeW5jKGZpbi5tZS51dWlkLCB7fSk7XG5cdH1cblx0Ly8gb3RoZXJ3aXNlIHJldHVybmVkIHVuZGVmaW5lZCBhcyB0aGV5IHNob3VsZCBiZSBjYWxsaW5nIGFmdGVyIHRoZSBib290c3RyYXBwZWQgbGlmZWN5Y2xlIGV2ZW50XG5cdGxvZ2dlci53YXJuKFxuXHRcdFwiQSByZXF1ZXN0IHdhcyBtYWRlIGZvciB0aGUgaW50ZXJvcCBjbGllbnQgYmVmb3JlIGJvb3RzdHJhcHBpbmcgaGFkIGNvbXBsZXRlZC4gUGxlYXNlIGxpc3RlbiBmb3IgdGhlIGxpZmVDeWNsZSBldmVudCAnYWZ0ZXItYm9vdHN0cmFwJyBiZWZvcmUgdXNlLlwiXG5cdCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBmYXZvcml0ZSBjbGllbnQgdG8gdXNlIHdpdGggdGhlIG1vZHVsZXMuXG4gKiBAcmV0dXJucyBUaGUgZmF2b3JpdGUgY2xpZW50LlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRGYXZvcml0ZUNsaWVudCgpOiBQcm9taXNlPEZhdm9yaXRlQ2xpZW50IHwgdW5kZWZpbmVkPiB7XG5cdGlmICghZmF2b3JpdGVQcm92aWRlci5nZXRJbmZvKCkuaXNFbmFibGVkKSB7XG5cdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcIkEgcmVxdWVzdCB3YXMgbWFkZSBmb3IgdGhlIGZhdm9yaXRlIGNsaWVudCBidXQgZmF2b3JpdGVzIGlzIG5vdCBjb25maWd1cmVkIGZvciB0aGlzIHBsYXRmb3JtLlwiXG5cdFx0KTtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdC8vIHJpZ2h0IG5vdyB3ZSByZXR1cm4gYWxsIGZ1bmN0aW9ucyBidXQgdGhlIG9wdGlvbmFsIGFkZHMgc2NvcGUgZm9yIGRlY2lkaW5nIHdobyBnZXRzIHRoZSBhYmlsaXR5IHRvIHNldC9yZW1vdmUgZmF2b3JpdGVzXG5cdHJldHVybiBmYXZvcml0ZVByb3ZpZGVyO1xufVxuIiwiaW1wb3J0IHR5cGUgT3BlbkZpbiBmcm9tIFwiQG9wZW5maW4vY29yZVwiO1xuaW1wb3J0IHtcblx0Z2V0Q3VycmVudFN5bmMsXG5cdHR5cGUgQXR0YWNoZWRQYWdlLFxuXHR0eXBlIEJyb3dzZXJDcmVhdGVXaW5kb3dSZXF1ZXN0LFxuXHR0eXBlIEJyb3dzZXJXaW5kb3dNb2R1bGUsXG5cdHR5cGUgUGFnZSxcblx0dHlwZSBQYWdlTGF5b3V0XG59IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB0eXBlIHsgQnJvd3NlclByb3ZpZGVyT3B0aW9ucywgTG9nZ2VyIH0gZnJvbSBcIndvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyL3NoYXBlc1wiO1xuaW1wb3J0IHsgZ2V0VG9vbGJhckJ1dHRvbnMgfSBmcm9tIFwiLi4vYnV0dG9uc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSwgaXNTdHJpbmdWYWx1ZSB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG4vKipcbiAqIEdldCB0aGUgZGVmYXVsdCB3aW5kb3cgb3B0aW9ucyBmb3IgdGhlIGJyb3dzZXIuXG4gKiBAcGFyYW0gYnJvd3NlclByb3ZpZGVyIFRoZSBicm93c2VyIHByb3ZpZGVyIHNldHRpbmdzXG4gKiBAcmV0dXJucyBUaGUgZGVmYXVsdCB3aW5kb3cgb3B0aW9ucyBmb3IgdGhlIGJyb3dzZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREZWZhdWx0V2luZG93T3B0aW9ucyhcblx0YnJvd3NlclByb3ZpZGVyOiBCcm93c2VyUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPFBhcnRpYWw8QnJvd3NlckNyZWF0ZVdpbmRvd1JlcXVlc3Q+PiB7XG5cdGNvbnN0IGxlZ2FjeVdpbmRvd09wdGlvbnMgPSBicm93c2VyUHJvdmlkZXI/LndpbmRvd09wdGlvbnMgPz8ge307XG5cdGNvbnN0IGRlZmF1bHRXaW5kb3dPcHRpb25zID0gYnJvd3NlclByb3ZpZGVyPy5kZWZhdWx0V2luZG93T3B0aW9ucyA/PyB7fTtcblxuXHRsZXQgd3NQbGF0Zm9ybSA9IGRlZmF1bHRXaW5kb3dPcHRpb25zLndvcmtzcGFjZVBsYXRmb3JtO1xuXG5cdGlmIChpc0VtcHR5KHdzUGxhdGZvcm0pKSB7XG5cdFx0Ly8gUGFnZXMgaGFzIHRvIGJlIG51bGxcblx0XHR3c1BsYXRmb3JtID0ge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcblx0XHRcdHBhZ2VzOiBudWxsIGFzIHVua25vd24gYXMgYW55XG5cdFx0fTtcblx0fVxuXG5cdGlmICh3c1BsYXRmb3JtKSB7XG5cdFx0Ly8gc3RhcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblx0XHRpZiAoaXNTdHJpbmdWYWx1ZShsZWdhY3lXaW5kb3dPcHRpb25zLnRpdGxlKSAmJiAhaXNTdHJpbmdWYWx1ZSh3c1BsYXRmb3JtLnRpdGxlKSkge1xuXHRcdFx0d3NQbGF0Zm9ybS50aXRsZSA9IGxlZ2FjeVdpbmRvd09wdGlvbnMudGl0bGU7XG5cdFx0fVxuXG5cdFx0aWYgKGlzU3RyaW5nVmFsdWUobGVnYWN5V2luZG93T3B0aW9ucy5uZXdQYWdlVXJsKSAmJiAhaXNTdHJpbmdWYWx1ZSh3c1BsYXRmb3JtPy5uZXdQYWdlVXJsKSkge1xuXHRcdFx0d3NQbGF0Zm9ybS5uZXdQYWdlVXJsID0gbGVnYWN5V2luZG93T3B0aW9ucy5uZXdQYWdlVXJsO1xuXHRcdH1cblxuXHRcdGlmIChpc1N0cmluZ1ZhbHVlKGxlZ2FjeVdpbmRvd09wdGlvbnMubmV3VGFiVXJsKSAmJiAhaXNTdHJpbmdWYWx1ZSh3c1BsYXRmb3JtPy5uZXdUYWJVcmwpKSB7XG5cdFx0XHR3c1BsYXRmb3JtLm5ld1RhYlVybCA9IGxlZ2FjeVdpbmRvd09wdGlvbnMubmV3VGFiVXJsO1xuXHRcdH1cblxuXHRcdGlmIChpc1N0cmluZ1ZhbHVlKGxlZ2FjeVdpbmRvd09wdGlvbnM/Lmljb24pICYmICFpc1N0cmluZ1ZhbHVlKGRlZmF1bHRXaW5kb3dPcHRpb25zPy5pY29uKSkge1xuXHRcdFx0ZGVmYXVsdFdpbmRvd09wdGlvbnMuaWNvbiA9IGxlZ2FjeVdpbmRvd09wdGlvbnMuaWNvbjtcblx0XHR9XG5cblx0XHRpZiAoXG5cdFx0XHRpc1N0cmluZ1ZhbHVlKGRlZmF1bHRXaW5kb3dPcHRpb25zPy5pY29uKSAmJlxuXHRcdFx0IWlzU3RyaW5nVmFsdWUoZGVmYXVsdFdpbmRvd09wdGlvbnM/LndvcmtzcGFjZVBsYXRmb3JtPy5mYXZpY29uKVxuXHRcdCkge1xuXHRcdFx0d3NQbGF0Zm9ybS5mYXZpY29uID0gZGVmYXVsdFdpbmRvd09wdGlvbnMuaWNvbjtcblx0XHR9XG5cdFx0Ly8gZW5kIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cblx0XHQvLyB3ZSBhcmUgZ29pbmcgdG8gb3ZlcnJpZGUgdGhlIG9uZXMgc3BlY2lmaWVkIGF0IHRoZSB3b3Jrc3BhY2UgcGxhdGZvcm0gbGV2ZWxcblx0XHQvLyBhcyB0aGlzIGlzIG91ciBtb3JlIGZsZXhpYmxlIGV4dGVuc2lvbiB3aXRoIGNvbmRpdGlvbnNcblx0XHRjb25zdCBidXR0b25zID0gYXdhaXQgZ2V0VG9vbGJhckJ1dHRvbnMoKTtcblx0XHRpZiAoIWlzRW1wdHkoYnV0dG9ucykpIHtcblx0XHRcdHdzUGxhdGZvcm0udG9vbGJhck9wdGlvbnMgPSB7XG5cdFx0XHRcdGJ1dHRvbnNcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0ZGVmYXVsdFdpbmRvd09wdGlvbnMud29ya3NwYWNlUGxhdGZvcm0gPSB3c1BsYXRmb3JtO1xuXHR9XG5cblx0cmV0dXJuIGRlZmF1bHRXaW5kb3dPcHRpb25zO1xufVxuXG4vKipcbiAqIEZpbmQgdGhlIG5hbWVkIG9mIGFsbCB0aGUgdmlld3MgaW4gYSBsYXlvdXQuXG4gKiBAcGFyYW0gbGF5b3V0IFRoZSBsYXlvdXQgdG8gZmluZCB0aGUgdmlldyBuYW1lcyBmcm9tLlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgdmlldyBuYW1lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRWaWV3TmFtZXMobGF5b3V0OiBQYWdlTGF5b3V0KTogc3RyaW5nW10ge1xuXHRjb25zdCBjb2xsZWN0ZWROYW1lczogc3RyaW5nW10gPSBbXTtcblxuXHRKU09OLnN0cmluZ2lmeShsYXlvdXQsIChfLCBuZXN0ZWRWYWx1ZSkgPT4ge1xuXHRcdC8vIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHdlIGhhdmUgYSBuYW1lIGZpZWxkIGFuZCB0aGF0IHdlIGFsc28gaGF2ZSBhIHVybCBmaWVsZCBpbiB0aGlzIG9iamVjdCAoaW4gY2FzZSBuYW1lIHdhcyBhZGRlZCB0byBhIHJhbmRvbSBwYXJ0IG9mIHRoZSBsYXlvdXQpXG5cdFx0aWYgKG5lc3RlZFZhbHVlPy5uYW1lPy5sZW5ndGggJiYgIWlzRW1wdHkobmVzdGVkVmFsdWUudXJsKSkge1xuXHRcdFx0Y29sbGVjdGVkTmFtZXMucHVzaChuZXN0ZWRWYWx1ZS5uYW1lIGFzIHN0cmluZyk7XG5cdFx0fVxuXHRcdHJldHVybiBuZXN0ZWRWYWx1ZSBhcyB1bmtub3duO1xuXHR9KTtcblxuXHRyZXR1cm4gY29sbGVjdGVkTmFtZXM7XG59XG5cbi8qKlxuICogRG9lcyB0aGUgc3BlY2lmaWVkIHZpZXcgZXhpc3QuXG4gKiBAcGFyYW0gaWRlbnRpdHkgVGhlIGlkZW50aXR5IG9mIHRoZSB2aWV3LlxuICogQHBhcmFtIGJyaW5nVG9Gcm9udElmRXhpc3RzIElmIHRoZSB2aWV3IGV4aXN0cyB0aGVuIGJyaW5nIGl0IHRvIGZyb250LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmlldyBleGlzdHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb2VzVmlld0V4aXN0KFxuXHRpZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eSxcblx0YnJpbmdUb0Zyb250SWZFeGlzdHM6IGJvb2xlYW4gPSBmYWxzZVxuKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGNvbnN0IHZpZXcgPSBmaW4uVmlldy53cmFwU3luYyhpZGVudGl0eSk7XG5cdGxldCBleGlzdHMgPSBmYWxzZTtcblx0dHJ5IHtcblx0XHQvLyBXZSBjYWxsIGdldEluZm8gYmVjYXVzZSB1c2luZyB3cmFwU3luYyBkb2Vzbid0IGZhaWwgZm9yIGEgbWlzc2luZyB2aWV3XG5cdFx0Ly8gaXQgd2lsbCBvbmx5IGZhaWwgd2l0aCBhbiBleGNlcHRpb24gaWYgd2UgY2FsbCBhIG1ldGhvZCBvbiB0aGUgY2hhbm5lbFxuXHRcdGF3YWl0IHZpZXcuZ2V0SW5mbygpO1xuXG5cdFx0aWYgKGJyaW5nVG9Gcm9udElmRXhpc3RzKSB7XG5cdFx0XHRhd2FpdCBicmluZ1ZpZXdUb0Zyb250KHsgdmlldyB9KTtcblx0XHR9XG5cdFx0ZXhpc3RzID0gdHJ1ZTtcblx0fSBjYXRjaCB7XG5cdFx0ZXhpc3RzID0gZmFsc2U7XG5cdH1cblx0cmV0dXJuIGV4aXN0cztcbn1cblxuLyoqXG4gKiBCcmluZyBhIHZpZXcgdG8gdGhlIGZyb250LlxuICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IGlkZW50aXR5IG9mIHRoZSB2aWV3LlxuICogQHBhcmFtIHRhcmdldC5pZGVudGl0eSBUaGUgaWRlbnRpdHkuXG4gKiBAcGFyYW0gdGFyZ2V0LnZpZXcgVGhlIHZpZXcgZGV0YWlscy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJyaW5nVmlld1RvRnJvbnQodGFyZ2V0OiB7XG5cdGlkZW50aXR5PzogT3BlbkZpbi5JZGVudGl0eTtcblx0dmlldz86IE9wZW5GaW4uVmlldztcbn0pOiBQcm9taXNlPHZvaWQ+IHtcblx0bGV0IHRhcmdldFZpZXc6IE9wZW5GaW4uVmlldyB8IHVuZGVmaW5lZDtcblxuXHRpZiAoIWlzRW1wdHkodGFyZ2V0LmlkZW50aXR5KSkge1xuXHRcdHRhcmdldFZpZXcgPSBmaW4uVmlldy53cmFwU3luYyh0YXJnZXQuaWRlbnRpdHkpO1xuXHR9IGVsc2UgaWYgKCFpc0VtcHR5KHRhcmdldC52aWV3KSkge1xuXHRcdHRhcmdldFZpZXcgPSB0YXJnZXQudmlldztcblx0fVxuXG5cdGlmICghaXNFbXB0eSh0YXJnZXRWaWV3KSkge1xuXHRcdGNvbnN0IGhvc3RQYWdlID0gYXdhaXQgZ2V0UGFnZUZvclZpZXcodGFyZ2V0Vmlldyk7XG5cdFx0aWYgKCFpc0VtcHR5KGhvc3RQYWdlKSkge1xuXHRcdFx0YXdhaXQgYnJpbmdQYWdlVG9Gcm9udCh7IHBhZ2U6IGhvc3RQYWdlIH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCB3aW5kb3dIb3N0ID0gYXdhaXQgdGFyZ2V0Vmlldy5nZXRDdXJyZW50V2luZG93KCk7XG5cdFx0XHRhd2FpdCBicmluZ1dpbmRvd1RvRnJvbnQoeyB3aW5kb3c6IHdpbmRvd0hvc3QgfSk7XG5cdFx0fVxuXHRcdGF3YWl0IHRhcmdldFZpZXcuZm9jdXMoKTtcblx0fVxufVxuXG4vKipcbiAqIERvZXMgYSB3aW5kb3cgZXhpc3QuXG4gKiBAcGFyYW0gaWRlbnRpdHkgVGhlIGlkZW50aXR5IG9mIHRoZSB3aW5kb3cgdG8gbG9vayBmb3IuXG4gKiBAcGFyYW0gYnJpbmdUb0Zyb250SWZFeGlzdHMgQnJpbmcgdGhlIHdpbmRvdyB0byB0aGUgZnJvbnQgaWYgaXQgZXhpc3RzLlxuICogQHJldHVybnMgVHJ1ZSBpZiBpdCBleGlzdHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb2VzV2luZG93RXhpc3QoXG5cdGlkZW50aXR5OiBPcGVuRmluLklkZW50aXR5LFxuXHRicmluZ1RvRnJvbnRJZkV4aXN0czogYm9vbGVhbiA9IGZhbHNlXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0Y29uc3Qgd2luID0gZmluLldpbmRvdy53cmFwU3luYyhpZGVudGl0eSk7XG5cdGxldCBleGlzdHMgPSBmYWxzZTtcblx0dHJ5IHtcblx0XHQvLyBXZSBjYWxsIGdldEluZm8gYmVjYXVzZSB1c2luZyB3cmFwU3luYyBkb2Vzbid0IGZhaWwgZm9yIGEgbWlzc2luZyB3aW5kb3dcblx0XHQvLyBpdCB3aWxsIG9ubHkgZmFpbCB3aXRoIGFuIGV4Y2VwdGlvbiBpZiB3ZSBjYWxsIGEgbWV0aG9kIG9uIHRoZSBjaGFubmVsXG5cdFx0YXdhaXQgd2luLmdldEluZm8oKTtcblxuXHRcdGV4aXN0cyA9IHRydWU7XG5cdFx0aWYgKGJyaW5nVG9Gcm9udElmRXhpc3RzKSB7XG5cdFx0XHRhd2FpdCBicmluZ1dpbmRvd1RvRnJvbnQoeyB3aW5kb3c6IHdpbiB9KTtcblx0XHR9XG5cdH0gY2F0Y2gge1xuXHRcdGV4aXN0cyA9IGZhbHNlO1xuXHR9XG5cblx0cmV0dXJuIGV4aXN0cztcbn1cblxuLyoqXG4gKiBCcmluZyBhIHdpbmRvdyB0byB0aGUgZnJvbnQgb2YgdGhlIHZpZXcgc3RhY2suXG4gKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgd2luZG93LlxuICogQHBhcmFtIHRhcmdldC5pZGVudGl0eSBUaGUgaWRlbnRpdHkgb2YgdGhlIHdpbmRvdy5cbiAqIEBwYXJhbSB0YXJnZXQud2luZG93IFRoZSB3aW5kb3cgb2JqZWN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnJpbmdXaW5kb3dUb0Zyb250KHRhcmdldDoge1xuXHRpZGVudGl0eT86IE9wZW5GaW4uSWRlbnRpdHk7XG5cdHdpbmRvdz86IE9wZW5GaW4uV2luZG93O1xufSk6IFByb21pc2U8dm9pZD4ge1xuXHRsZXQgdGFyZ2V0V2luZG93OiBPcGVuRmluLldpbmRvdyB8IHVuZGVmaW5lZDtcblxuXHRpZiAoIWlzRW1wdHkodGFyZ2V0LmlkZW50aXR5KSkge1xuXHRcdHRhcmdldFdpbmRvdyA9IGZpbi5XaW5kb3cud3JhcFN5bmModGFyZ2V0LmlkZW50aXR5KTtcblx0fSBlbHNlIGlmICghaXNFbXB0eSh0YXJnZXQud2luZG93KSkge1xuXHRcdHRhcmdldFdpbmRvdyA9IHRhcmdldC53aW5kb3c7XG5cdH1cblxuXHRpZiAodGFyZ2V0V2luZG93KSB7XG5cdFx0Y29uc3Qgd2luZG93U3RhdGUgPSBhd2FpdCB0YXJnZXRXaW5kb3cuZ2V0U3RhdGUoKTtcblx0XHRpZiAod2luZG93U3RhdGUgPT09IFwibWluaW1pemVkXCIpIHtcblx0XHRcdGF3YWl0IHRhcmdldFdpbmRvdy5yZXN0b3JlKCk7XG5cdFx0fVxuXHRcdGlmIChhd2FpdCB0YXJnZXRXaW5kb3cuaXNTaG93aW5nKCkpIHtcblx0XHRcdGF3YWl0IHRhcmdldFdpbmRvdy5zZXRBc0ZvcmVncm91bmQoKTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBCcmluZyBhIHBhZ2UgdG8gdGhlIGZyb250LlxuICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IHBhZ2UgdG8gYnJpbmcgdG8gdGhlIGZvbnQuXG4gKiBAcGFyYW0gdGFyZ2V0LmlkZW50aXR5IFRoZSBpZGVudGl0eSBvZiB0aGUgcGFnZS5cbiAqIEBwYXJhbSB0YXJnZXQuaWRlbnRpdHkud2luZG93IFRoZSB3aW5kb3cgd2hpY2ggY29udGFpbnMgdGhlIHBhZ2UuXG4gKiBAcGFyYW0gdGFyZ2V0LmlkZW50aXR5LnBhZ2VJZCBUaGUgaWQgb2YgdGhlIHBhZ2UuXG4gKiBAcGFyYW0gdGFyZ2V0LnBhZ2UgVGhlIHBhZ2Ugb2JqZWN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnJpbmdQYWdlVG9Gcm9udCh0YXJnZXQ6IHtcblx0aWRlbnRpdHk/OiB7IHdpbmRvdzogT3BlbkZpbi5JZGVudGl0eTsgcGFnZUlkOiBzdHJpbmcgfTtcblx0cGFnZT86IEF0dGFjaGVkUGFnZTtcbn0pOiBQcm9taXNlPHZvaWQ+IHtcblx0bGV0IHRhcmdldFBhZ2U6IEF0dGFjaGVkUGFnZSB8IHVuZGVmaW5lZDtcblx0bGV0IHBhcmVudFdpbmRvdzogQnJvd3NlcldpbmRvd01vZHVsZSB8IHVuZGVmaW5lZDtcblx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXG5cdGNvbnN0IHBhZ2VJZCA9IHRhcmdldC5pZGVudGl0eT8ucGFnZUlkO1xuXHRjb25zdCB3aW5kb3cgPSB0YXJnZXQ/LmlkZW50aXR5Py53aW5kb3c7XG5cdGNvbnN0IHBhZ2UgPSB0YXJnZXQucGFnZTtcblx0aWYgKCFpc0VtcHR5KHBhZ2VJZCkgJiYgIWlzRW1wdHkod2luZG93KSkge1xuXHRcdHBhcmVudFdpbmRvdyA9IHBsYXRmb3JtLkJyb3dzZXIud3JhcFN5bmMod2luZG93KTtcblx0XHR0YXJnZXRQYWdlID0gYXdhaXQgcGFyZW50V2luZG93LmdldFBhZ2UocGFnZUlkKTtcblx0fSBlbHNlIGlmICghaXNFbXB0eShwYWdlKSAmJiAhaXNFbXB0eShwYWdlLnBhcmVudElkZW50aXR5KSkge1xuXHRcdHRhcmdldFBhZ2UgPSBwYWdlO1xuXHRcdHBhcmVudFdpbmRvdyA9IHBsYXRmb3JtLkJyb3dzZXIud3JhcFN5bmMocGFnZS5wYXJlbnRJZGVudGl0eSk7XG5cdH1cblxuXHRpZiAoIWlzRW1wdHkocGFyZW50V2luZG93KSkge1xuXHRcdGlmICghaXNFbXB0eSh0YXJnZXRQYWdlKSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgcGFnZXMgPSBhd2FpdCBwYXJlbnRXaW5kb3cuZ2V0UGFnZXMoKTtcblx0XHRcdFx0aWYgKHBhZ2VzLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0XHRhd2FpdCBwYXJlbnRXaW5kb3cuc2V0QWN0aXZlUGFnZSh0YXJnZXRQYWdlLnBhZ2VJZCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHQvLyB0aGlzIHdpbmRvdyBtYXkgb25seSBzdXBwb3J0IGEgc2luZ2xlIHBhZ2UuXG5cdFx0XHR9XG5cdFx0fVxuXHRcdGF3YWl0IGJyaW5nV2luZG93VG9Gcm9udCh7IGlkZW50aXR5OiBwYXJlbnRXaW5kb3cuaWRlbnRpdHkgfSk7XG5cdH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIHBhZ2Ugd2luZG93IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgdmlldy5cbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRvIGZpbmQgdGhlIGNvbnRhaW5pbmcgcGFnZS5cbiAqIEByZXR1cm5zIFRoZSBwYWdlIGNvbnRhaW5pbmcgdGhlIHZpZXcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQYWdlRm9yVmlldyh2aWV3OiBPcGVuRmluLlZpZXcpOiBQcm9taXNlPEF0dGFjaGVkUGFnZSB8IHVuZGVmaW5lZD4ge1xuXHRjb25zdCBwYXJlbnRXaW5kb3c6IE9wZW5GaW4uV2luZG93ID0gYXdhaXQgdmlldy5nZXRDdXJyZW50V2luZG93KCk7XG5cdGxldCBwYWdlc1RvSW5zcGVjdDogQXR0YWNoZWRQYWdlW10gPSBbXTtcblx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXG5cdGlmIChwYXJlbnRXaW5kb3cuaWRlbnRpdHkubmFtZSA9PT0gZmluLm1lLmlkZW50aXR5LnV1aWQpIHtcblx0XHQvLyB0aGlzIHZpZXcgaXMgbm90IGN1cnJlbnRseSBob29rZWQgaW50byB0aGUgd2luZG93IGFzIHRoZSBwYWdlIGRvZXNuJ3QgaGF2ZSBmb2N1c1xuXHRcdHBhZ2VzVG9JbnNwZWN0ID0gYXdhaXQgcGxhdGZvcm0uQnJvd3Nlci5nZXRBbGxBdHRhY2hlZFBhZ2VzKCk7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgYnJvd3NlcldpbmRvdyA9IHBsYXRmb3JtLkJyb3dzZXIud3JhcFN5bmMocGFyZW50V2luZG93LmlkZW50aXR5KTtcblx0XHRwYWdlc1RvSW5zcGVjdCA9IGF3YWl0IGJyb3dzZXJXaW5kb3cuZ2V0UGFnZXMoKTtcblx0fVxuXG5cdGxldCBtYXRjaGluZ1BhZ2U6IEF0dGFjaGVkUGFnZSB8IHVuZGVmaW5lZDtcblxuXHRmb3IgKGNvbnN0IHBhZ2Ugb2YgcGFnZXNUb0luc3BlY3QpIHtcblx0XHRjb25zdCB2aWV3SWRzID0gZmluZFZpZXdOYW1lcyhwYWdlLmxheW91dCk7XG5cdFx0aWYgKHZpZXdJZHMuaW5jbHVkZXModmlldy5pZGVudGl0eS5uYW1lKSkge1xuXHRcdFx0bWF0Y2hpbmdQYWdlID0gcGFnZTtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBtYXRjaGluZ1BhZ2U7XG59XG5cbi8qKlxuICogR2V0IHRoZSBib3VuZHMgb2YgdGhlIHNwZWNpZmllZCBwYWdlLlxuICogQHBhcmFtIHBhZ2VJZCBUaGUgaWYgb2YgdGhlIHBhZ2UgdG8gZ2V0IHRoZSBib3VuZHMgZm9yLlxuICogQHBhcmFtIGZyb21TdG9yYWdlIEdldCB0aGUgYm91bmRzIGZyb20gc3RvcmFnZSBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwgcGFnZSBpZiBhdmFpbGFibGUuXG4gKiBAcmV0dXJucyBUaGUgYm91bmRzIGZvciB0aGUgcGFnZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFBhZ2VCb3VuZHMoXG5cdHBhZ2VJZDogc3RyaW5nLFxuXHRmcm9tU3RvcmFnZSA9IGZhbHNlXG4pOiBQcm9taXNlPE9wZW5GaW4uQm91bmRzIHwgdW5kZWZpbmVkPiB7XG5cdGxldCBib3VuZHM6IE9wZW5GaW4uQm91bmRzIHwgdW5kZWZpbmVkO1xuXHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdGlmIChmcm9tU3RvcmFnZSkge1xuXHRcdGNvbnN0IHBhZ2UgPSBhd2FpdCBwbGF0Zm9ybS5TdG9yYWdlLmdldFBhZ2UocGFnZUlkKTtcblx0XHRpZiAoIWlzRW1wdHkocGFnZT8uY3VzdG9tRGF0YT8ud2luZG93Qm91bmRzKSkge1xuXHRcdFx0cmV0dXJuIHBhZ2U/LmN1c3RvbURhdGE/LndpbmRvd0JvdW5kcztcblx0XHR9XG5cdH1cblxuXHRjb25zdCBwYWdlcyA9IGF3YWl0IHBsYXRmb3JtLkJyb3dzZXIuZ2V0QWxsQXR0YWNoZWRQYWdlcygpO1xuXHRsZXQgd2luZG93SWQ6IE9wZW5GaW4uSWRlbnRpdHkgfCB1bmRlZmluZWQ7XG5cblx0Zm9yIChjb25zdCBwYWdlIG9mIHBhZ2VzKSB7XG5cdFx0aWYgKHBhZ2UucGFnZUlkID09PSBwYWdlSWQpIHtcblx0XHRcdHdpbmRvd0lkID0gcGFnZS5wYXJlbnRJZGVudGl0eTtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdGlmIChpc0VtcHR5KHdpbmRvd0lkKSkge1xuXHRcdC8vIGNoZWNrIHRvIHNlZSBpZiB3ZSBhcmUgdGFsa2luZyBhYm91dCBhIHNhdmVkIHBhZ2UgdGhhdCBpc24ndCBjdXJyZW50bHkgb3BlblxuXHRcdGNvbnN0IHNhdmVkUGFnZSA9IGF3YWl0IHBsYXRmb3JtLlN0b3JhZ2UuZ2V0UGFnZShwYWdlSWQpO1xuXHRcdGlmICghaXNFbXB0eShzYXZlZFBhZ2UpKSB7XG5cdFx0XHQvLyB0aGUgcmVxdWVzdGVkIHBhZ2UgaXMgbm90IGN1cnJlbnRseSBvcGVuIGJ1dCBpcyBhIHNhdmVkIHBhZ2Ugc28gdHJ5IGFuZCBmZXRjaCBpdCBmcm9tIHN0b3JhZ2UgYXMgYSBmYWxsYmFja1xuXHRcdFx0cmV0dXJuIHNhdmVkUGFnZT8uY3VzdG9tRGF0YT8ud2luZG93Qm91bmRzO1xuXHRcdH1cblx0XHQvLyBpdCBpcyBub3QgYW4gYWN0aXZlIHBhZ2UgYW5kIGl0IGlzbid0IHNhdmVkIHNvIGl0IGlzIGxpa2VseSBhIG5ldyBpbnN0YW5jZSBvZiBhbiBleGlzdGluZyBwYWdlIChzYXZlIGFzKVxuXHRcdC8vIHVzZSB0aGUgY3VycmVudCB3aW5kb3dJZFxuXHRcdHdpbmRvd0lkID0gYXdhaXQgcGxhdGZvcm0uQnJvd3Nlci5nZXRMYXN0Rm9jdXNlZFdpbmRvdygpO1xuXHR9XG5cblx0aWYgKCFpc0VtcHR5KHdpbmRvd0lkKSkge1xuXHRcdGNvbnN0IGhvc3RXaW5kb3cgPSBwbGF0Zm9ybS5Ccm93c2VyLndyYXBTeW5jKHdpbmRvd0lkKTtcblx0XHRib3VuZHMgPSBhd2FpdCBob3N0V2luZG93Lm9wZW5maW5XaW5kb3cuZ2V0Qm91bmRzKCk7XG5cdH1cblxuXHRyZXR1cm4gYm91bmRzO1xufVxuXG4vKipcbiAqIExhdW5jaCBhIHBhZ2UgaW4gdGhlIHdvcmtzcGFjZS5cbiAqIEBwYXJhbSBwYWdlIFRoZSBwYWdlIHRvIGxhdW5jaC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgbGF1bmNoLlxuICogQHBhcmFtIG9wdGlvbnMuYm91bmRzIFRoZSBvcHRpb25hbCBib3VuZHMgZm9yIHRoZSBwYWdlLlxuICogQHBhcmFtIG9wdGlvbnMudGFyZ2V0V2luZG93SWRlbnRpdHkgVGhlIG9wdGlvbmFsIHRhcmdldCB3aW5kb3cgZm9yIHRoZSBwYWdlLlxuICogQHBhcmFtIG9wdGlvbnMuY3JlYXRlQ29weUlmRXhpc3RzIENyZWF0ZSBhIGNvcHkgb2YgdGhlIHBhZ2UgaWYgaXQgZXhpc3RzLlxuICogQHBhcmFtIGxvZ2dlciBMb2cgb3V0cHV0IGZyb20gdGhlIG9wZXJhdGlvbi5cbiAqIEByZXR1cm5zIFRoZSB3aW5kb3cgY3JlYXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxhdW5jaFBhZ2UoXG5cdHBhZ2U6IFBhZ2UsXG5cdG9wdGlvbnM/OiB7XG5cdFx0Ym91bmRzPzogT3BlbkZpbi5Cb3VuZHM7XG5cdFx0dGFyZ2V0V2luZG93SWRlbnRpdHk/OiBPcGVuRmluLklkZW50aXR5O1xuXHRcdGNyZWF0ZUNvcHlJZkV4aXN0cz86IGJvb2xlYW47XG5cdH0sXG5cdGxvZ2dlcj86IExvZ2dlclxuKTogUHJvbWlzZTxCcm93c2VyV2luZG93TW9kdWxlPiB7XG5cdGlmIChpc0VtcHR5KHBhZ2UpKSB7XG5cdFx0bG9nZ2VyPy5lcnJvcihcIlBhZ2UgaXMgZW1wdHkgYW5kIGNhbm5vdCBiZSBhdHRhY2hlZCB0byBhIHdpbmRvdy5cIik7XG5cdH1cblxuXHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cblx0Ly8gRmlyc3QgZmluZCBvdXQgaWYgdGhlIHBhZ2UgaXMgYWxyZWFkeSBhdHRhY2hlZCB0byBhIGJyb3dzZXIgd2luZG93XG5cdGNvbnN0IGF0dGFjaGVkUGFnZXMgPSBhd2FpdCBwbGF0Zm9ybS5Ccm93c2VyLmdldEFsbEF0dGFjaGVkUGFnZXMoKTtcblx0Y29uc3QgYXR0YWNoZWRXaW5kb3dJZDogT3BlbkZpbi5JZGVudGl0eSB8IHVuZGVmaW5lZCA9IGF0dGFjaGVkUGFnZXMuZmluZCgocGcpID0+IHBnLnBhZ2VJZCA9PT0gcGFnZS5wYWdlSWQpXG5cdFx0Py5wYXJlbnRJZGVudGl0eTtcblxuXHRjb25zdCB0YXJnZXRXaW5kb3dJZGVudGl0eSA9IG9wdGlvbnM/LnRhcmdldFdpbmRvd0lkZW50aXR5O1xuXHRpZiAoIWlzRW1wdHkodGFyZ2V0V2luZG93SWRlbnRpdHkpKSB7XG5cdFx0Ly8gSWYgd2UgaGF2ZSBhIHRhcmdldCB3aW5kb3cgaWRlbnRpdHkgYW5kIGl0cyBub3QgdGhlIHNhbWUgYXMgYXR0YWNoZWQgd2luZG93IGlkXG5cdFx0Ly8gdGhlbiBhY3RpdmF0ZSB0aGUgZXhpc3Rpbmcgd2luZG93LCB1bmxlc3MgdGhlIGNyZWF0ZUNvcHkgZmxhZyBpcyBzZXRcblx0XHRpZiAoXG5cdFx0XHQhaXNFbXB0eShhdHRhY2hlZFdpbmRvd0lkKSAmJlxuXHRcdFx0YXR0YWNoZWRXaW5kb3dJZC5uYW1lICE9PSB0YXJnZXRXaW5kb3dJZGVudGl0eS5uYW1lICYmXG5cdFx0XHQhb3B0aW9ucz8uY3JlYXRlQ29weUlmRXhpc3RzXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBhdHRhY2hlZFdpbmRvdyA9IHBsYXRmb3JtLkJyb3dzZXIud3JhcFN5bmMoYXR0YWNoZWRXaW5kb3dJZCk7XG5cdFx0XHRhd2FpdCBhdHRhY2hlZFdpbmRvdy5zZXRBY3RpdmVQYWdlKHBhZ2UucGFnZUlkKTtcblx0XHRcdGxvZ2dlcj8ud2FybihcIkFjdGl2YXRpbmcgcGFnZSBpbiB3aW5kb3cgd2hpY2ggaXMgbm90IHRoZSBzcGVjaWZpZWQgdGFyZ2V0IHdpbmRvd1wiLCB7XG5cdFx0XHRcdHBhZ2VJZDogcGFnZS5wYWdlSWQsXG5cdFx0XHRcdGF0dGFjaGVkV2luZG93SWQ6IGF0dGFjaGVkV2luZG93SWQubmFtZSxcblx0XHRcdFx0dGFyZ2V0V2luZG93SWRlbnRpdHk6IHRhcmdldFdpbmRvd0lkZW50aXR5Lm5hbWVcblx0XHRcdH0pO1xuXHRcdFx0YXdhaXQgYnJpbmdXaW5kb3dUb0Zyb250KHsgaWRlbnRpdHk6IGF0dGFjaGVkV2luZG93LmlkZW50aXR5IH0pO1xuXHRcdFx0cmV0dXJuIGF0dGFjaGVkV2luZG93O1xuXHRcdH1cblxuXHRcdGNvbnN0IHRhcmdldFdpbmRvdyA9IHBsYXRmb3JtLkJyb3dzZXIud3JhcFN5bmModGFyZ2V0V2luZG93SWRlbnRpdHkpO1xuXG5cdFx0Y29uc3QgcGFnZXMgPSBhd2FpdCB0YXJnZXRXaW5kb3cuZ2V0UGFnZXMoKTtcblx0XHRjb25zdCBoYXNQYWdlID0gcGFnZXMuZmluZCgocGcpID0+IHBnLnBhZ2VJZCA9PT0gcGFnZS5wYWdlSWQpO1xuXG5cdFx0Ly8gVGhlIHRhcmdldCB3aW5kb3cgZWl0aGVyIGRvZXMgbm90IGFscmVhZHkgaGF2ZSB0aGUgcGFnZSwgb3Igd2UgYXJlIGNyZWF0aW5nXG5cdFx0Ly8gYSBjb3B5IGV2ZW4gaXQgaXQgZG9lcyBleGlzdFxuXHRcdGlmICghaGFzUGFnZSB8fCBvcHRpb25zPy5jcmVhdGVDb3B5SWZFeGlzdHMpIHtcblx0XHRcdGlmICghaGFzUGFnZSkge1xuXHRcdFx0XHRsb2dnZXI/LmluZm8oXCJQYWdlIGRvZXMgbm90IGV4aXN0IGluIHRhcmdldCB3aW5kb3csIGFkZGluZ1wiLCB7XG5cdFx0XHRcdFx0cGFnZUlkOiBwYWdlLnBhZ2VJZCxcblx0XHRcdFx0XHR0YXJnZXRXaW5kb3dJZGVudGl0eTogdGFyZ2V0V2luZG93SWRlbnRpdHkubmFtZVxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlcj8uaW5mbyhcIlBhZ2UgZXhpc3RzIGluIHRhcmdldCB3aW5kb3csIGJ1dCBjcmVhdGVDb3B5SWZFeGlzdHMgZmxhZyBpcyBzZXQsIGFkZGluZ1wiLCB7XG5cdFx0XHRcdFx0cGFnZUlkOiBwYWdlLnBhZ2VJZCxcblx0XHRcdFx0XHR0YXJnZXRXaW5kb3dJZGVudGl0eTogdGFyZ2V0V2luZG93SWRlbnRpdHkubmFtZVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGF3YWl0IHRhcmdldFdpbmRvdy5hZGRQYWdlKHBhZ2UpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsb2dnZXI/LmluZm8oXCJQYWdlIGV4aXN0cyBpbiB0YXJnZXQgd2luZG93LCBhY3RpdmF0aW5nXCIsIHtcblx0XHRcdFx0cGFnZUlkOiBwYWdlLnBhZ2VJZCxcblx0XHRcdFx0dGFyZ2V0V2luZG93SWRlbnRpdHk6IHRhcmdldFdpbmRvd0lkZW50aXR5Lm5hbWVcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRhd2FpdCB0YXJnZXRXaW5kb3cuc2V0QWN0aXZlUGFnZShwYWdlLnBhZ2VJZCk7XG5cdFx0YXdhaXQgYnJpbmdXaW5kb3dUb0Zyb250KHsgaWRlbnRpdHk6IHRhcmdldFdpbmRvdy5pZGVudGl0eSB9KTtcblx0XHRyZXR1cm4gdGFyZ2V0V2luZG93O1xuXHR9XG5cblx0Ly8gVGhlcmUgd2FzIG5vIHRhcmdldCBzcGVjaWZpZWQgc28gaWYgaXRzIGFscmVhZHkgYXR0YWNoZWQgdG8gYSB3aW5kb3dcblx0Ly8gd2UganVzdCBhY3RpdmF0ZSBpdCwgdW5sZXNzIHRoZSBjcmVhdGUgY29weSBmbGFnIGlzIHNldFxuXHRpZiAoIWlzRW1wdHkoYXR0YWNoZWRXaW5kb3dJZCkgJiYgIW9wdGlvbnM/LmNyZWF0ZUNvcHlJZkV4aXN0cykge1xuXHRcdGNvbnN0IGF0dGFjaGVkV2luZG93ID0gcGxhdGZvcm0uQnJvd3Nlci53cmFwU3luYyhhdHRhY2hlZFdpbmRvd0lkKTtcblx0XHRsb2dnZXI/LmluZm8oXCJQYWdlIGV4aXN0cyBpbiB0YXJnZXQgd2luZG93LCBhY3RpdmF0aW5nXCIsIHtcblx0XHRcdHBhZ2VJZDogcGFnZS5wYWdlSWQsXG5cdFx0XHRhdHRhY2hlZFdpbmRvd0lkOiBhdHRhY2hlZFdpbmRvd0lkLm5hbWVcblx0XHR9KTtcblx0XHRhd2FpdCBhdHRhY2hlZFdpbmRvdy5zZXRBY3RpdmVQYWdlKHBhZ2UucGFnZUlkKTtcblx0XHRhd2FpdCBicmluZ1dpbmRvd1RvRnJvbnQoeyBpZGVudGl0eTogYXR0YWNoZWRXaW5kb3cuaWRlbnRpdHkgfSk7XG5cdFx0cmV0dXJuIGF0dGFjaGVkV2luZG93O1xuXHR9XG5cblx0bGV0IGN1c3RvbUJvdW5kcyA9IG9wdGlvbnM/LmJvdW5kcztcblx0aWYgKGlzRW1wdHkoY3VzdG9tQm91bmRzKSAmJiAhaXNFbXB0eShwYWdlLmN1c3RvbURhdGE/LndpbmRvd0JvdW5kcykpIHtcblx0XHRjdXN0b21Cb3VuZHMgPSBwYWdlLmN1c3RvbURhdGEud2luZG93Qm91bmRzO1xuXHR9XG5cblx0Y29uc3QgbmV3V2luZG93UmVxdWVzdDogQnJvd3NlckNyZWF0ZVdpbmRvd1JlcXVlc3QgPSB7XG5cdFx0d29ya3NwYWNlUGxhdGZvcm06IHtcblx0XHRcdHBhZ2VzOiBbcGFnZV1cblx0XHR9XG5cdH07XG5cblx0aWYgKCFpc0VtcHR5KGN1c3RvbUJvdW5kcykpIHtcblx0XHRjb25zdCBtb25pdG9ycyA9IGF3YWl0IGZpbi5TeXN0ZW0uZ2V0TW9uaXRvckluZm8oKTtcblxuXHRcdG5ld1dpbmRvd1JlcXVlc3QuaGVpZ2h0ID0gY3VzdG9tQm91bmRzLmhlaWdodDtcblx0XHRuZXdXaW5kb3dSZXF1ZXN0LndpZHRoID0gY3VzdG9tQm91bmRzLndpZHRoO1xuXHRcdG5ld1dpbmRvd1JlcXVlc3QuZGVmYXVsdEhlaWdodCA9IGN1c3RvbUJvdW5kcy5oZWlnaHQ7XG5cdFx0bmV3V2luZG93UmVxdWVzdC5kZWZhdWx0V2lkdGggPSBjdXN0b21Cb3VuZHMud2lkdGg7XG5cblx0XHRpZiAoIWlzRW1wdHkobW9uaXRvcnMudmlydHVhbFNjcmVlbikpIHtcblx0XHRcdGlmICghaXNFbXB0eShtb25pdG9ycy52aXJ0dWFsU2NyZWVuLmxlZnQpICYmIGN1c3RvbUJvdW5kcy5sZWZ0ID49IG1vbml0b3JzLnZpcnR1YWxTY3JlZW4ubGVmdCkge1xuXHRcdFx0XHRuZXdXaW5kb3dSZXF1ZXN0LnggPSBjdXN0b21Cb3VuZHMubGVmdDtcblx0XHRcdFx0bmV3V2luZG93UmVxdWVzdC5kZWZhdWx0TGVmdCA9IGN1c3RvbUJvdW5kcy5sZWZ0O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIWlzRW1wdHkobW9uaXRvcnMudmlydHVhbFNjcmVlbi50b3ApICYmIGN1c3RvbUJvdW5kcy50b3AgPj0gbW9uaXRvcnMudmlydHVhbFNjcmVlbi50b3ApIHtcblx0XHRcdFx0bmV3V2luZG93UmVxdWVzdC55ID0gY3VzdG9tQm91bmRzLnRvcDtcblx0XHRcdFx0bmV3V2luZG93UmVxdWVzdC5kZWZhdWx0VG9wID0gY3VzdG9tQm91bmRzLnRvcDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRjb25zdCBuZXdXaW5kb3cgPSBhd2FpdCBwbGF0Zm9ybS5Ccm93c2VyLmNyZWF0ZVdpbmRvdyhuZXdXaW5kb3dSZXF1ZXN0KTtcblxuXHRsb2dnZXI/LmluZm8oXCJQYWdlIGRvZXMgbm90IGV4aXN0LCBjcmVhdGluZyBuZXcgd2luZG93IGFuZCBhZGRpbmcgcGFnZVwiLCB7XG5cdFx0cGFnZUlkOiBwYWdlLnBhZ2VJZCxcblx0XHRuZXdXaW5kb3dJZDogbmV3V2luZG93LmlkZW50aXR5Lm5hbWVcblx0fSk7XG5cblx0cmV0dXJuIG5ld1dpbmRvdztcbn1cblxuLyoqXG4gKiBMYXVuY2ggYSB2aWV3LlxuICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdG8gbGF1bmNoLlxuICogQHBhcmFtIHRhcmdldElkZW50aXR5IFRoZSB0YXJnZXQgaWRlbnRpdHkgb2YgdGhlIHdpbmRvdyB0byBhdHRhY2ggdGhlIHZpZXcgdG8uXG4gKiBAcmV0dXJucyBUaGUgbGF1bmNoZWQgdmlldy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxhdW5jaFZpZXcoXG5cdHZpZXc6IE9wZW5GaW4uUGxhdGZvcm1WaWV3Q3JlYXRpb25PcHRpb25zIHwgc3RyaW5nLFxuXHR0YXJnZXRJZGVudGl0eT86IE9wZW5GaW4uSWRlbnRpdHlcbik6IFByb21pc2U8T3BlbkZpbi5WaWV3PiB7XG5cdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0bGV0IHZpZXdPcHRpb25zOiBPcGVuRmluLlBsYXRmb3JtVmlld0NyZWF0aW9uT3B0aW9ucztcblx0aWYgKHR5cGVvZiB2aWV3ID09PSBcInN0cmluZ1wiKSB7XG5cdFx0dmlld09wdGlvbnMgPSB7IHVybDogdmlldywgdGFyZ2V0OiB1bmRlZmluZWQgfTtcblx0fSBlbHNlIHtcblx0XHR2aWV3T3B0aW9ucyA9IHZpZXc7XG5cdH1cblx0cmV0dXJuIHBsYXRmb3JtLmNyZWF0ZVZpZXcodmlld09wdGlvbnMsIHRhcmdldElkZW50aXR5KTtcbn1cblxuLyoqXG4gKiBHZXQgYSBsaXN0IG9mIGFsbCB0aGUgdmlzaWJsZSB3aW5kb3dzIGluIHRoZSBwbGF0Zm9ybS5cbiAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIHZpc2libGUgd2luZG93cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEFsbFZpc2libGVXaW5kb3dzKCk6IFByb21pc2U8T3BlbkZpbi5XaW5kb3dbXT4ge1xuXHRjb25zdCBwbGF0Zm9ybSA9IGZpbi5QbGF0Zm9ybS5nZXRDdXJyZW50U3luYygpO1xuXHRjb25zdCB3aW5kb3dzID0gYXdhaXQgcGxhdGZvcm0uQXBwbGljYXRpb24uZ2V0Q2hpbGRXaW5kb3dzKCk7XG5cdGNvbnN0IGF2YWlsYWJsZVdpbmRvd3M6IE9wZW5GaW4uV2luZG93W10gPSBbXTtcblx0Zm9yIChjb25zdCBjdXJyZW50V2luZG93IG9mIHdpbmRvd3MpIHtcblx0XHRjb25zdCBpc1Nob3dpbmcgPSBhd2FpdCBjdXJyZW50V2luZG93LmlzU2hvd2luZygpO1xuXHRcdGlmIChpc1Nob3dpbmcpIHtcblx0XHRcdGF2YWlsYWJsZVdpbmRvd3MucHVzaChjdXJyZW50V2luZG93KTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGF2YWlsYWJsZVdpbmRvd3M7XG59XG4iLCJpbXBvcnQge1xuXHRPcGVuRXJyb3IsXG5cdFJlc29sdmVFcnJvcixcblx0dHlwZSBBcHBJZGVudGlmaWVyLFxuXHR0eXBlIEFwcE1ldGFkYXRhLFxuXHR0eXBlIEltcGxlbWVudGF0aW9uTWV0YWRhdGEsXG5cdHR5cGUgSW50ZW50UmVzb2x1dGlvblxufSBmcm9tIFwiQGZpbm9zL2ZkYzNcIjtcbmltcG9ydCB0eXBlIE9wZW5GaW4gZnJvbSBcIkBvcGVuZmluL2NvcmVcIjtcbmltcG9ydCB0eXBlIHsgQXBwSW50ZW50IH0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZS1wbGF0Zm9ybVwiO1xuaW1wb3J0IHsgZ2V0QXBwLCBnZXRBcHBzQnlJbnRlbnQsIGdldEludGVudCwgZ2V0SW50ZW50c0J5Q29udGV4dCB9IGZyb20gXCIuLi9hcHBzXCI7XG5pbXBvcnQgKiBhcyBjb25uZWN0aW9uUHJvdmlkZXIgZnJvbSBcIi4uL2Nvbm5lY3Rpb25zXCI7XG5pbXBvcnQgeyBoYXNFbmRwb2ludCwgcmVxdWVzdFJlc3BvbnNlIH0gZnJvbSBcIi4uL2VuZHBvaW50XCI7XG5pbXBvcnQgeyBtYXBUb0FwcE1ldGFEYXRhIGFzIG1hcFRvMTJBcHBNZXRhRGF0YSB9IGZyb20gXCIuLi9mZGMzLzEuMi9tYXBwZXJcIjtcbmltcG9ydCB7IG1hcFRvQXBwTWV0YURhdGEgYXMgbWFwVG8yMEFwcE1ldGFEYXRhIH0gZnJvbSBcIi4uL2ZkYzMvMi4wL21hcHBlclwiO1xuaW1wb3J0IHsgYnJpbmdUb0Zyb250LCBsYXVuY2ggfSBmcm9tIFwiLi4vbGF1bmNoXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiLi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBNQU5JRkVTVF9UWVBFUyB9IGZyb20gXCIuLi9tYW5pZmVzdC10eXBlc1wiO1xuaW1wb3J0IHsgZ2V0U2V0dGluZ3MgfSBmcm9tIFwiLi4vc2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIHsgQXBwc0ZvckludGVudCwgUGxhdGZvcm1BcHAsIFBsYXRmb3JtQXBwSWRlbnRpZmllciB9IGZyb20gXCIuLi9zaGFwZXMvYXBwLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBBcHBNZXRhZGF0YSBhcyBBcHBNZXRhZGF0YVYxUG9pbnQyIH0gZnJvbSBcIi4uL3NoYXBlcy9mZGMzLTEtMi1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0QXBpTWV0YWRhdGEsXG5cdENhcHR1cmVBcGlQYXlsb2FkLFxuXHRDb250ZXh0VG9Qcm9jZXNzLFxuXHRJbnRlbnRPcHRpb25zLFxuXHRJbnRlbnRQaWNrZXJSZXNwb25zZSxcblx0SW50ZW50UmVnaXN0cmF0aW9uRW50cnksXG5cdEludGVudFJlZ2lzdHJhdGlvblBheWxvYWQsXG5cdEludGVudFJlc29sdmVyT3B0aW9ucyxcblx0SW50ZW50VGFyZ2V0TWV0YURhdGEsXG5cdFByb2Nlc3NlZENvbnRleHRcbn0gZnJvbSBcIi4uL3NoYXBlcy9pbnRlcm9wYnJva2VyLXNoYXBlc1wiO1xuaW1wb3J0IHsgZm9ybWF0RXJyb3IsIGlzRW1wdHksIGlzU3RyaW5nLCBpc1N0cmluZ1ZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIkludGVyb3BCcm9rZXJcIik7XG5cbi8qKlxuICogT3ZlcnJpZGUgdGhlIHBsYXRmb3JtIGludGVyb3AuXG4gKiBAcGFyYW0gSW50ZXJvcEJyb2tlciBUaGUgYmFzZSBpbnRlcm9wIGJyb2tlciBjbGFzcy5cbiAqIEByZXR1cm5zIFRoZSBvdmVybG9hZGVkIGJyb2tlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludGVyb3BPdmVycmlkZShcblx0SW50ZXJvcEJyb2tlcjogT3BlbkZpbi5Db25zdHJ1Y3RvcjxPcGVuRmluLkludGVyb3BCcm9rZXI+XG4pOiBPcGVuRmluLkludGVyb3BCcm9rZXIge1xuXHQvKipcblx0ICogRXh0ZW5kIHRoZSBJbnRlcm9wQnJva2VyIHRvIGhhbmRsZSBpbnRlbnRzLlxuXHQgKi9cblx0Y2xhc3MgSW50ZXJvcE92ZXJyaWRlIGV4dGVuZHMgSW50ZXJvcEJyb2tlciB7XG5cdFx0cHJpdmF0ZSByZWFkb25seSBfdHJhY2tlZEludGVudEhhbmRsZXJzOiB7IFtrZXk6IHN0cmluZ106IEludGVudFJlZ2lzdHJhdGlvbkVudHJ5W10gfSA9IHt9O1xuXG5cdFx0cHJpdmF0ZSByZWFkb25seSBfY2xpZW50UmVhZHlSZXF1ZXN0czogeyBba2V5OiBzdHJpbmddOiAoaW5zdGFuY2VJZDogc3RyaW5nKSA9PiB2b2lkIH0gPSB7fTtcblxuXHRcdHByaXZhdGUgcmVhZG9ubHkgX3RyYWNrZWRDbGllbnRDb25uZWN0aW9uczogeyBba2V5OiBzdHJpbmddOiBBcGlNZXRhZGF0YSB9ID0ge307XG5cblx0XHRwcml2YXRlIF9pbnRlbnRSZXNvbHZlck9wdGlvbnM/OiBJbnRlbnRSZXNvbHZlck9wdGlvbnM7XG5cblx0XHRwcml2YXRlIF9pbnRlbnRPcHRpb25zPzogSW50ZW50T3B0aW9ucztcblxuXHRcdHByaXZhdGUgX3VucmVnaXN0ZXJlZEFwcDogUGxhdGZvcm1BcHAgfCB1bmRlZmluZWQ7XG5cblx0XHQvKipcblx0XHQgKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgSW50ZXJvcEJyb2tlci5cblx0XHQgKi9cblx0XHRjb25zdHJ1Y3RvcigpIHtcblx0XHRcdHN1cGVyKCk7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIkludGVyb3AgQnJva2VyIENvbnN0cnVjdG9yIGZldGNoaW5nIHNldHRpbmdzLlwiKTtcblx0XHRcdGdldFNldHRpbmdzKClcblx0XHRcdFx0LnRoZW4oKGN1c3RvbVNldHRpbmdzKSA9PiB7XG5cdFx0XHRcdFx0aWYgKCFpc0VtcHR5KGN1c3RvbVNldHRpbmdzPy5wbGF0Zm9ybVByb3ZpZGVyKSkge1xuXHRcdFx0XHRcdFx0bGV0IGludGVudFJlc29sdmVyT3B0aW9uczogSW50ZW50UmVzb2x2ZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRpc0VtcHR5KGN1c3RvbVNldHRpbmdzPy5wbGF0Zm9ybVByb3ZpZGVyPy5pbnRlcm9wPy5pbnRlbnRSZXNvbHZlcikgJiZcblx0XHRcdFx0XHRcdFx0IWlzRW1wdHkoY3VzdG9tU2V0dGluZ3M/LnBsYXRmb3JtUHJvdmlkZXI/LmludGVudFBpY2tlcilcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRcdFx0XHRcIlBsZWFzZSB1c2UgcGxhdGZvcm1Qcm92aWRlci5pbnRlcm9wLmludGVudFJlc29sdmVyIGluc3RlYWQgb2YgcGxhdGZvcm1Qcm92aWRlci5pbnRlbnRQaWNrZXIgZm9yIHlvdXIgc2V0dGluZ3MuXCJcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0aW50ZW50UmVzb2x2ZXJPcHRpb25zID0gY3VzdG9tU2V0dGluZ3MucGxhdGZvcm1Qcm92aWRlci5pbnRlbnRQaWNrZXI7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbnRlbnRSZXNvbHZlck9wdGlvbnMgPSBjdXN0b21TZXR0aW5ncz8ucGxhdGZvcm1Qcm92aWRlcj8uaW50ZXJvcD8uaW50ZW50UmVzb2x2ZXI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGlzLl9pbnRlbnRSZXNvbHZlck9wdGlvbnMgPSB7XG5cdFx0XHRcdFx0XHRcdGhlaWdodDogNzE1LFxuXHRcdFx0XHRcdFx0XHR3aWR0aDogNjY1LFxuXHRcdFx0XHRcdFx0XHRmZGMzSW50ZXJvcEFwaTogXCIyLjBcIixcblx0XHRcdFx0XHRcdFx0dXJsOiBgJHtjdXN0b21TZXR0aW5ncz8ucGxhdGZvcm1Qcm92aWRlcj8ucm9vdFVybH0vY29tbW9uL3dpbmRvd3MvaW50ZW50cy9pbnN0YW5jZS1waWNrZXIuaHRtbGAsXG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIkludGVudCBSZXNvbHZlclwiLFxuXHRcdFx0XHRcdFx0XHQuLi5pbnRlbnRSZXNvbHZlck9wdGlvbnNcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR0aGlzLl9pbnRlbnRPcHRpb25zID0ge1xuXHRcdFx0XHRcdFx0XHRpbnRlbnRUaW1lb3V0OiA1MDAwLFxuXHRcdFx0XHRcdFx0XHQuLi5jdXN0b21TZXR0aW5ncz8ucGxhdGZvcm1Qcm92aWRlcj8uaW50ZXJvcD8uaW50ZW50T3B0aW9uc1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdHRoaXMuX3VucmVnaXN0ZXJlZEFwcCA9IGN1c3RvbVNldHRpbmdzPy5wbGF0Zm9ybVByb3ZpZGVyPy5pbnRlcm9wPy51bnJlZ2lzdGVyZWRBcHA7XG5cdFx0XHRcdFx0XHRpZiAoIWlzRW1wdHkodGhpcy5fdW5yZWdpc3RlcmVkQXBwKSkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLl91bnJlZ2lzdGVyZWRBcHAubWFuaWZlc3RUeXBlID0gTUFOSUZFU1RfVFlQRVMuVW5yZWdpc3RlcmVkQXBwLmlkO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge1xuXHRcdFx0XHRcdGxvZ2dlci5lcnJvcihcIlNldHRpbmdzIHVuYXZhaWxhYmxlIGF0IGJyb2tlciBjb25zdHJ1Y3Rpb24uXCIsIGVycm9yKTtcblx0XHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSXMgdGhlIGNvbm5lY3Rpb24gYXV0aG9yaXplZC5cblx0XHQgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBjbGllbnQgaWRlbnRpdHkgdG8gY2hlY2suXG5cdFx0ICogQHBhcmFtIHBheWxvYWQgVGhlIHBheWxvYWQgdG8gc2VuZCB3aXRoIHRoZSBhdXRob3JpemF0aW9uIGNoZWNrLlxuXHRcdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgYXV0aG9yaXplZC5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgaXNDb25uZWN0aW9uQXV0aG9yaXplZChpZDogT3BlbkZpbi5DbGllbnRJZGVudGl0eSwgcGF5bG9hZD86IHVua25vd24pOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0XHRcdGxvZ2dlci5pbmZvKFwiSW50ZXJvcCBjb25uZWN0aW9uIGJlaW5nIG1hZGUgYnkgdGhlIGZvbGxvd2luZyBpZGVudGl0eS4gQWJvdXQgdG8gdmVyaWZ5IGNvbm5lY3Rpb25cIiwgaWQpO1xuXHRcdFx0Y29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjb25uZWN0aW9uUHJvdmlkZXIuaXNDb25uZWN0aW9uVmFsaWQoaWQsIHBheWxvYWQsIHsgdHlwZTogXCJicm9rZXJcIiB9KTtcblx0XHRcdGlmICghcmVzcG9uc2UuaXNWYWxpZCkge1xuXHRcdFx0XHRsb2dnZXIud2FybihgQ29ubmVjdGlvbiByZXF1ZXN0IGZyb20gJHtKU09OLnN0cmluZ2lmeShpZCl9IHdhcyB2YWxpZGF0ZWQgYW5kIHJlamVjdGVkLmApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJDb25uZWN0aW9uIHZhbGlkYXRpb24gcmVxdWVzdCB3YXMgdmFsaWRhdGVkIGFuZCBpcyB2YWxpZC5cIik7XG5cdFx0XHRcdGlmIChpZC51dWlkID09PSBmaW4ubWUuaWRlbnRpdHkudXVpZCkge1xuXHRcdFx0XHRcdC8vIGRldGVybWluZSB3aGF0IGFwaSB0aGV5IGFyZSB1c2luZy5cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKHJlc3BvbnNlLmlzVmFsaWQpIHtcblx0XHRcdFx0YXdhaXQgdGhpcy5jYXB0dXJlQXBpVmVyc2lvbihpZCwgcGF5bG9hZCBhcyBDYXB0dXJlQXBpUGF5bG9hZCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzcG9uc2UuaXNWYWxpZDtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBJcyB0aGUgYWN0aW9uIGF1dGhvcml6ZWQuXG5cdFx0ICogQHBhcmFtIGFjdGlvbiBUaGUgYWN0aW9uIHRvIGNoZWNrIGZvciBhdXRob3JpemF0aW9uLlxuXHRcdCAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIHRvIHNlbmQgd2hpbGUgY2hlY2tpbmcgdGhlIGF1dGhvcml6YXRpb24uXG5cdFx0ICogQHBhcmFtIGlkZW50aXR5IFRoZSBpZGVudGl0eSBvZiB0aGUgY2xpZW50LlxuXHRcdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGFjdGlvbiBpcyBhdXRob3JpemVkLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBpc0FjdGlvbkF1dGhvcml6ZWQoXG5cdFx0XHRhY3Rpb246IHN0cmluZyxcblx0XHRcdHBheWxvYWQ6IHVua25vd24sXG5cdFx0XHRpZGVudGl0eTogT3BlbkZpbi5DbGllbnRJZGVudGl0eVxuXHRcdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJJcyBhY3Rpb24gYXV0aG9yaXplZFwiLCBhY3Rpb24sIHBheWxvYWQsIGlkZW50aXR5KTtcblx0XHRcdC8vIHBlcmZvcm0gY2hlY2sgaGVyZSBpZiB5b3Ugd2lzaCBhbmQgcmV0dXJuIHRydWUvZmFsc2UgYWNjb3JkaW5nbHlcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIFNldHMgYSBjb250ZXh0IGZvciB0aGUgY29udGV4dCBncm91cCBvZiB0aGUgaW5jb21pbmcgY3VycmVudCBlbnRpdHkuXG5cdFx0ICogQHBhcmFtIHNlbnRDb250ZXh0IE5ldyBjb250ZXh0IHRvIHNldC5cblx0XHQgKiBAcGFyYW0gc2VudENvbnRleHQuY29udGV4dCBUaGUgY29udGV4dCB0byBzZW5kLlxuXHRcdCAqIEBwYXJhbSBjbGllbnRJZGVudGl0eSBJZGVudGl0eSBvZiB0aGUgY2xpZW50IHNlbmRlci5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgc2V0Q29udGV4dChcblx0XHRcdHNlbnRDb250ZXh0OiB7IGNvbnRleHQ6IE9wZW5GaW4uQ29udGV4dCB9LFxuXHRcdFx0Y2xpZW50SWRlbnRpdHk6IE9wZW5GaW4uQ2xpZW50SWRlbnRpdHlcblx0XHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdHNlbnRDb250ZXh0LmNvbnRleHQgPSBhd2FpdCB0aGlzLnByb2Nlc3NDb250ZXh0KHNlbnRDb250ZXh0LmNvbnRleHQpO1xuXHRcdFx0c3VwZXIuc2V0Q29udGV4dChzZW50Q29udGV4dCwgY2xpZW50SWRlbnRpdHkpO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEhhbmRsZSB0aGUgaW5mb3JtYXRpb24gZm9yIGludGVudHMgYnkgY29udGV4dC5cblx0XHQgKiBAcGFyYW0gY29udGV4dE9wdGlvbnMgVGhlIGNvbnRleHQgb3B0aW9ucy5cblx0XHQgKiBAcGFyYW0gY2xpZW50SWRlbnRpdHkgVGhlIGNsaWVudC5cblx0XHQgKiBAcmV0dXJucyBUaGUgaW50ZW50cyBtYXBwZWQgdG8gYXBwIG1ldGFkYXRhLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBoYW5kbGVJbmZvRm9ySW50ZW50c0J5Q29udGV4dChcblx0XHRcdGNvbnRleHRPcHRpb25zOiBPcGVuRmluLkNvbnRleHQgfCBPcGVuRmluLkZpbmRJbnRlbnRzQnlDb250ZXh0T3B0aW9ucyxcblx0XHRcdGNsaWVudElkZW50aXR5OiBPcGVuRmluLkNsaWVudElkZW50aXR5XG5cdFx0KTogUHJvbWlzZTxcblx0XHRcdHtcblx0XHRcdFx0aW50ZW50OiB7IG5hbWU6IHN0cmluZzsgZGlzcGxheU5hbWU/OiBzdHJpbmcgfTtcblx0XHRcdFx0YXBwczogKEFwcE1ldGFkYXRhVjFQb2ludDIgfCBBcHBNZXRhZGF0YSlbXTtcblx0XHRcdH1bXVxuXHRcdD4ge1xuXHRcdFx0bGV0IHJlcXVlc3RlZENvbnRleHRUeXBlOiBzdHJpbmc7XG5cdFx0XHRsZXQgcmVxdWVzdGVkUmVzdWx0VHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdFx0bGV0IHJlcXVlc3Q6IHsgY29udGV4dDogeyB0eXBlOiBzdHJpbmcgfTsgbWV0YWRhdGE6IHsgcmVzdWx0VHlwZTogc3RyaW5nIH0gfTtcblx0XHRcdGNvbnN0IGFwaVZlcnNpb246IEFwaU1ldGFkYXRhID0gdGhpcy5nZXRBcGlWZXJzaW9uKGNsaWVudElkZW50aXR5KTtcblxuXHRcdFx0aWYgKFwidHlwZVwiIGluIGNvbnRleHRPcHRpb25zKSB7XG5cdFx0XHRcdHJlcXVlc3RlZENvbnRleHRUeXBlID0gY29udGV4dE9wdGlvbnMudHlwZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlcXVlc3QgPSBjb250ZXh0T3B0aW9ucyBhcyB7IGNvbnRleHQ6IHsgdHlwZTogc3RyaW5nIH07IG1ldGFkYXRhOiB7IHJlc3VsdFR5cGU6IHN0cmluZyB9IH07XG5cdFx0XHRcdHJlcXVlc3RlZENvbnRleHRUeXBlID0gcmVxdWVzdC5jb250ZXh0LnR5cGU7XG5cdFx0XHRcdHJlcXVlc3RlZFJlc3VsdFR5cGUgPSByZXF1ZXN0Lm1ldGFkYXRhLnJlc3VsdFR5cGU7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBpbnRlbnRzID0gYXdhaXQgZ2V0SW50ZW50c0J5Q29udGV4dChyZXF1ZXN0ZWRDb250ZXh0VHlwZSwgcmVxdWVzdGVkUmVzdWx0VHlwZSk7XG5cblx0XHRcdGlmIChpbnRlbnRzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoUmVzb2x2ZUVycm9yLk5vQXBwc0ZvdW5kKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgaXNGREMzMiA9IGFwaVZlcnNpb24/LnR5cGUgPT09IFwiZmRjM1wiICYmIGFwaVZlcnNpb24udmVyc2lvbiA9PT0gXCIyLjBcIjtcblx0XHRcdGNvbnN0IG1hcHBlZEludGVudHMgPSBpbnRlbnRzLm1hcCgoZW50cnkpID0+ICh7XG5cdFx0XHRcdGludGVudDogZW50cnkuaW50ZW50LFxuXHRcdFx0XHRhcHBzOiBlbnRyeS5hcHBzLm1hcCgoYXBwKSA9PiB7XG5cdFx0XHRcdFx0bGV0IHJlc3VsdFR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRjb25zdCBsaXN0ZW5zRm9yID0gYXBwPy5pbnRlcm9wPy5pbnRlbnRzPy5saXN0ZW5zRm9yO1xuXHRcdFx0XHRcdGlmICghaXNFbXB0eShsaXN0ZW5zRm9yKSAmJiAhaXNFbXB0eShsaXN0ZW5zRm9yW2VudHJ5LmludGVudC5uYW1lXSkpIHtcblx0XHRcdFx0XHRcdHJlc3VsdFR5cGUgPSBsaXN0ZW5zRm9yW2VudHJ5LmludGVudC5uYW1lXS5yZXN1bHRUeXBlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCBhcHBFbnRyeSA9IGlzRkRDMzIgPyBtYXBUbzIwQXBwTWV0YURhdGEoYXBwLCByZXN1bHRUeXBlKSA6IG1hcFRvMTJBcHBNZXRhRGF0YShhcHApO1xuXG5cdFx0XHRcdFx0cmV0dXJuIGFwcEVudHJ5O1xuXHRcdFx0XHR9KVxuXHRcdFx0fSkpO1xuXG5cdFx0XHRyZXR1cm4gbWFwcGVkSW50ZW50cztcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBIYW5kbGUgdGhlIGluZm9ybWF0aW9uIGZvciBhbmQgaW50ZW50LlxuXHRcdCAqIEBwYXJhbSBpbnRlbnRPcHRpb25zIFRoZSBpbnRlbnQgb3B0aW9ucy5cblx0XHQgKiBAcGFyYW0gY2xpZW50SWRlbnRpdHkgVGhlIGNsaWVudC5cblx0XHQgKiBAcmV0dXJucyBUaGUgaW50ZW50cyBtYXBwZWQgdG8gYXBwIG1ldGFkYXRhLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBoYW5kbGVJbmZvRm9ySW50ZW50KFxuXHRcdFx0aW50ZW50T3B0aW9uczogT3BlbkZpbi5JbmZvRm9ySW50ZW50T3B0aW9ucyxcblx0XHRcdGNsaWVudElkZW50aXR5OiBPcGVuRmluLkNsaWVudElkZW50aXR5XG5cdFx0KTogUHJvbWlzZTx7XG5cdFx0XHRpbnRlbnQ6IHsgbmFtZTogc3RyaW5nOyBkaXNwbGF5TmFtZT86IHN0cmluZyB9O1xuXHRcdFx0YXBwczogKEFwcE1ldGFkYXRhVjFQb2ludDIgfCBBcHBNZXRhZGF0YSlbXTtcblx0XHR9PiB7XG5cdFx0XHRjb25zdCBhcGlWZXJzaW9uOiBBcGlNZXRhZGF0YSA9IHRoaXMuZ2V0QXBpVmVyc2lvbihjbGllbnRJZGVudGl0eSk7XG5cdFx0XHRsZXQgY29udGV4dFR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRcdFx0Y29uc3Qgb3B0Q29udGV4dFR5cGUgPSBpbnRlbnRPcHRpb25zPy5jb250ZXh0Py50eXBlO1xuXHRcdFx0aWYgKCFpc0VtcHR5KG9wdENvbnRleHRUeXBlKSAmJiBvcHRDb250ZXh0VHlwZSAhPT0gXCJmZGMzLm5vdGhpbmdcIikge1xuXHRcdFx0XHRjb250ZXh0VHlwZSA9IG9wdENvbnRleHRUeXBlO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRJbnRlbnQoaW50ZW50T3B0aW9ucy5uYW1lLCBjb250ZXh0VHlwZSwgaW50ZW50T3B0aW9ucz8ubWV0YWRhdGE/LnJlc3VsdFR5cGUpO1xuXHRcdFx0aWYgKGlzRW1wdHkocmVzdWx0KSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoUmVzb2x2ZUVycm9yLk5vQXBwc0ZvdW5kKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgaXNGREMzMiA9IGFwaVZlcnNpb24/LnR5cGUgPT09IFwiZmRjM1wiICYmIGFwaVZlcnNpb24udmVyc2lvbiA9PT0gXCIyLjBcIjtcblx0XHRcdGNvbnN0IHJlc3BvbnNlID0ge1xuXHRcdFx0XHRpbnRlbnQ6IHJlc3VsdC5pbnRlbnQsXG5cdFx0XHRcdGFwcHM6IHJlc3VsdC5hcHBzLm1hcCgoYXBwKSA9PiB7XG5cdFx0XHRcdFx0bGV0IHJlc3VsdFR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRjb25zdCBsaXN0ZW5zRm9yID0gYXBwPy5pbnRlcm9wPy5pbnRlbnRzPy5saXN0ZW5zRm9yO1xuXHRcdFx0XHRcdGlmICghaXNFbXB0eShsaXN0ZW5zRm9yKSAmJiAhaXNFbXB0eShsaXN0ZW5zRm9yW3Jlc3VsdC5pbnRlbnQubmFtZV0pKSB7XG5cdFx0XHRcdFx0XHRyZXN1bHRUeXBlID0gbGlzdGVuc0ZvcltyZXN1bHQuaW50ZW50Lm5hbWVdLnJlc3VsdFR5cGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IGFwcEVudHJ5ID0gaXNGREMzMiA/IG1hcFRvMjBBcHBNZXRhRGF0YShhcHAsIHJlc3VsdFR5cGUpIDogbWFwVG8xMkFwcE1ldGFEYXRhKGFwcCk7XG5cblx0XHRcdFx0XHRyZXR1cm4gYXBwRW50cnk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9O1xuXG5cdFx0XHRyZXR1cm4gcmVzcG9uc2U7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSGFuZGxlIHRoZSBmaXJlZCBpbnRlbnQgZm9yIGNvbnRleHQuXG5cdFx0ICogQHBhcmFtIGNvbnRleHRGb3JJbnRlbnQgVGhlIGNvbnRleHQgZm9yIHRoZSBpbnRlbnQuXG5cdFx0ICogQHBhcmFtIGNvbnRleHRGb3JJbnRlbnQudHlwZSBUaGUgdHlwZSBvZiB0aGUgaW50ZW50LlxuXHRcdCAqIEBwYXJhbSBjb250ZXh0Rm9ySW50ZW50Lm1ldGFkYXRhIFRoZSBtZXRhZGF0YSBmb3IgdGhlIGludGVudC5cblx0XHQgKiBAcGFyYW0gY2xpZW50SWRlbnRpdHkgVGhlIGNsaWVudCBpZGVudGl0eS5cblx0XHQgKiBAcmV0dXJucyBUaGUgaW50ZW50IHJlc29sdXRpb24uXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGhhbmRsZUZpcmVkSW50ZW50Rm9yQ29udGV4dChcblx0XHRcdGNvbnRleHRGb3JJbnRlbnQ6IHsgdHlwZTogc3RyaW5nOyBtZXRhZGF0YT86IE9wZW5GaW4uSW50ZW50TWV0YWRhdGE8SW50ZW50VGFyZ2V0TWV0YURhdGE+IH0sXG5cdFx0XHRjbGllbnRJZGVudGl0eTogT3BlbkZpbi5DbGllbnRJZGVudGl0eVxuXHRcdCk6IFByb21pc2U8T21pdDxJbnRlbnRSZXNvbHV0aW9uLCBcImdldFJlc3VsdFwiPiB8IHsgc291cmNlOiBzdHJpbmc7IHZlcnNpb24/OiBzdHJpbmcgfT4ge1xuXHRcdFx0Y29uc3QgdGFyZ2V0QXBwSWRlbnRpZmllciA9IHRoaXMuZ2V0QXBwbGljYXRpb25JZGVudGl0eShjb250ZXh0Rm9ySW50ZW50Lm1ldGFkYXRhKTtcblx0XHRcdGNvbnN0IHVzZXNBcHBJZGVudGl0eSA9IHRoaXMudXNlc0FwcGxpY2F0aW9uSWRlbnRpdHkoY2xpZW50SWRlbnRpdHkpO1xuXHRcdFx0Y29uc3QgaW50ZW50OiBQYXJ0aWFsPE9wZW5GaW4uSW50ZW50ICYgeyBkaXNwbGF5TmFtZT86IHN0cmluZyB9PiA9IHtcblx0XHRcdFx0Y29udGV4dDogY29udGV4dEZvckludGVudFxuXHRcdFx0fTtcblxuXHRcdFx0Ly8gYXBwIHNwZWNpZmllZCBmbG93XG5cdFx0XHRpZiAoIWlzRW1wdHkodGFyZ2V0QXBwSWRlbnRpZmllcikpIHtcblx0XHRcdFx0Y29uc3QgaW50ZW50UmVzb2x2ZXIgPSBhd2FpdCB0aGlzLmhhbmRsZVRhcmdldGVkSW50ZW50KFxuXHRcdFx0XHRcdHRhcmdldEFwcElkZW50aWZpZXIsXG5cdFx0XHRcdFx0aW50ZW50IGFzIE9wZW5GaW4uSW50ZW50LFxuXHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0Y2xpZW50SWRlbnRpdHlcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuIHRoaXMuc2hhcGVJbnRlbnRSZXNvbHZlcihpbnRlbnRSZXNvbHZlciwgdXNlc0FwcElkZW50aXR5KTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgaW50ZW50c0ZvclNlbGVjdGlvbjogQXBwc0ZvckludGVudFtdID0gYXdhaXQgZ2V0SW50ZW50c0J5Q29udGV4dChjb250ZXh0Rm9ySW50ZW50LnR5cGUpO1xuXG5cdFx0XHQvLyBjaGVjayBmb3IgdW5yZWdpc3RlcmVkIGFwcCBpbnRlbnQgaGFuZGxlcnMgKGlmIGVuYWJsZWQpXG5cdFx0XHRjb25zdCB1bnJlZ2lzdGVyZWRBcHBJbnRlbnRzID0gYXdhaXQgdGhpcy5nZXRVbnJlZ2lzdGVyZWRBcHBJbnRlbnRCeUNvbnRleHQoXG5cdFx0XHRcdGNvbnRleHRGb3JJbnRlbnQudHlwZSxcblx0XHRcdFx0Y2xpZW50SWRlbnRpdHlcblx0XHRcdCk7XG5cblx0XHRcdGlmICh1bnJlZ2lzdGVyZWRBcHBJbnRlbnRzLmxlbmd0aCA+IDAgJiYgIWlzRW1wdHkodGhpcy5fdW5yZWdpc3RlcmVkQXBwKSkge1xuXHRcdFx0XHRjb25zdCBtYXRjaGVkSW50ZW50czogc3RyaW5nW10gPSBbXTtcblx0XHRcdFx0Zm9yIChjb25zdCBpbnRlbnRGb3JTZWxlY3Rpb24gb2YgaW50ZW50c0ZvclNlbGVjdGlvbikge1xuXHRcdFx0XHRcdGlmICh1bnJlZ2lzdGVyZWRBcHBJbnRlbnRzLmluY2x1ZGVzKGludGVudEZvclNlbGVjdGlvbi5pbnRlbnQubmFtZSkpIHtcblx0XHRcdFx0XHRcdGludGVudEZvclNlbGVjdGlvbi5hcHBzLnB1c2godGhpcy5fdW5yZWdpc3RlcmVkQXBwKTtcblx0XHRcdFx0XHRcdG1hdGNoZWRJbnRlbnRzLnB1c2goaW50ZW50Rm9yU2VsZWN0aW9uLmludGVudC5uYW1lKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgbWlzc2luZ0ludGVudE1hdGNoZXMgPSB1bnJlZ2lzdGVyZWRBcHBJbnRlbnRzLmZpbHRlcihcblx0XHRcdFx0XHQoaW50ZW50TmFtZSkgPT4gIW1hdGNoZWRJbnRlbnRzLmluY2x1ZGVzKGludGVudE5hbWUpXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Zm9yIChjb25zdCBtaXNzaW5nSW50ZW50TWF0Y2ggb2YgbWlzc2luZ0ludGVudE1hdGNoZXMpIHtcblx0XHRcdFx0XHRjb25zdCBtaXNzaW5nSW50ZW50ID0gdGhpcy5fdW5yZWdpc3RlcmVkQXBwLmludGVudHM/LmZpbmQoXG5cdFx0XHRcdFx0XHQoZW50cnkpID0+IGVudHJ5Lm5hbWUgPT09IG1pc3NpbmdJbnRlbnRNYXRjaFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKG1pc3NpbmdJbnRlbnQpIHtcblx0XHRcdFx0XHRcdGludGVudHNGb3JTZWxlY3Rpb24ucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGludGVudDogeyBuYW1lOiBtaXNzaW5nSW50ZW50Lm5hbWUsIGRpc3BsYXlOYW1lOiBtaXNzaW5nSW50ZW50LmRpc3BsYXlOYW1lIH0sXG5cdFx0XHRcdFx0XHRcdGFwcHM6IFt0aGlzLl91bnJlZ2lzdGVyZWRBcHBdXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKGludGVudHNGb3JTZWxlY3Rpb24ubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdC8vIG5vIGF2YWlsYWJsZSBpbnRlbnRzIGZvciB0aGUgY29udGV4dFxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoUmVzb2x2ZUVycm9yLk5vQXBwc0ZvdW5kKTtcblx0XHRcdH1cblxuXHRcdFx0bGV0IHVzZXJTZWxlY3Rpb246IEludGVudFBpY2tlclJlc3BvbnNlO1xuXG5cdFx0XHRpZiAoaW50ZW50c0ZvclNlbGVjdGlvbi5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0Y29uc3QgaW50ZW50Rm9yU2VsZWN0aW9uID0gaW50ZW50c0ZvclNlbGVjdGlvblswXTtcblx0XHRcdFx0Ly8gb25seSBvbmUgaW50ZW50IG1hdGNoZXMgdGhlIHBhc3NlZCBjb250ZXh0XG5cdFx0XHRcdGludGVudC5uYW1lID0gaW50ZW50Rm9yU2VsZWN0aW9uLmludGVudC5uYW1lO1xuXHRcdFx0XHRpbnRlbnQuZGlzcGxheU5hbWUgPSBpbnRlbnRGb3JTZWxlY3Rpb24uaW50ZW50LmRpc3BsYXlOYW1lO1xuXG5cdFx0XHRcdGlmIChpbnRlbnRGb3JTZWxlY3Rpb24uYXBwcy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0XHRjb25zdCBhcHBJbnN0YW5jZXMgPSBhd2FpdCB0aGlzLmZkYzNIYW5kbGVGaW5kSW5zdGFuY2VzKGludGVudEZvclNlbGVjdGlvbi5hcHBzWzBdLCBjbGllbnRJZGVudGl0eSk7XG5cdFx0XHRcdFx0Ly8gaWYgdGhlcmUgYXJlIG5vIGluc3RhbmNlcyBsYXVuY2ggYSBuZXcgb25lIG90aGVyd2lzZSBwcmVzZW50IHRoZSBjaG9pY2UgdG8gdGhlIHVzZXJcblx0XHRcdFx0XHQvLyBieSBmYWxsaW5nIHRocm91Z2ggdG8gdGhlIG5leHQgY29kZSBibG9ja1xuXHRcdFx0XHRcdGlmIChhcHBJbnN0YW5jZXMubGVuZ3RoID09PSAwIHx8IHRoaXMuY3JlYXRlTmV3SW5zdGFuY2UoaW50ZW50Rm9yU2VsZWN0aW9uLmFwcHNbMF0pKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBpbnRlbnRSZXNvbHZlciA9IGF3YWl0IHRoaXMubGF1bmNoQXBwV2l0aEludGVudChcblx0XHRcdFx0XHRcdFx0aW50ZW50Rm9yU2VsZWN0aW9uLmFwcHNbMF0sXG5cdFx0XHRcdFx0XHRcdGludGVudCBhcyBPcGVuRmluLkludGVudFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGlmIChpc0VtcHR5KGludGVudFJlc29sdmVyKSkge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoUmVzb2x2ZUVycm9yLk5vQXBwc0ZvdW5kKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLnNoYXBlSW50ZW50UmVzb2x2ZXIoaW50ZW50UmVzb2x2ZXIsIHVzZXNBcHBJZGVudGl0eSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHVzZXJTZWxlY3Rpb24gPSBhd2FpdCB0aGlzLmxhdW5jaEludGVudFBpY2tlcih7XG5cdFx0XHRcdFx0YXBwczogaW50ZW50c0ZvclNlbGVjdGlvblswXS5hcHBzLFxuXHRcdFx0XHRcdGludGVudFxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHVzZXJTZWxlY3Rpb24gPSBhd2FpdCB0aGlzLmxhdW5jaEludGVudFBpY2tlcih7XG5cdFx0XHRcdFx0aW50ZW50LFxuXHRcdFx0XHRcdGludGVudHM6IGludGVudHNGb3JTZWxlY3Rpb25cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHQvLyB1cGRhdGUgaW50ZW50IHdpdGggdXNlciBzZWxlY3Rpb25cblx0XHRcdGludGVudC5kaXNwbGF5TmFtZSA9IHVzZXJTZWxlY3Rpb24uaW50ZW50LmRpc3BsYXlOYW1lO1xuXHRcdFx0aW50ZW50Lm5hbWUgPSB1c2VyU2VsZWN0aW9uLmludGVudC5uYW1lO1xuXHRcdFx0Y29uc3QgaW50ZW50UmVzb2x2ZXIgPSBhd2FpdCB0aGlzLmhhbmRsZUludGVudFBpY2tlclNlbGVjdGlvbih1c2VyU2VsZWN0aW9uLCBpbnRlbnQgYXMgT3BlbkZpbi5JbnRlbnQpO1xuXHRcdFx0cmV0dXJuIHRoaXMuc2hhcGVJbnRlbnRSZXNvbHZlcihpbnRlbnRSZXNvbHZlciwgdXNlc0FwcElkZW50aXR5KTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBIYW5kbGUgYSBmaXJlZCBpbnRlbnQuXG5cdFx0ICogQHBhcmFtIGludGVudCBUaGUgaW50ZW50IHRvIGhhbmRsZS5cblx0XHQgKiBAcGFyYW0gY2xpZW50SWRlbnRpdHkgVGhlIGNsaWVudCBpZGVudGl0eS5cblx0XHQgKiBAcmV0dXJucyBUaGUgaW50ZW50IHJlc29sdXRpb24uXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGhhbmRsZUZpcmVkSW50ZW50KFxuXHRcdFx0aW50ZW50OiBPcGVuRmluLkludGVudDxPcGVuRmluLkludGVudE1ldGFkYXRhPEludGVudFRhcmdldE1ldGFEYXRhPj4sXG5cdFx0XHRjbGllbnRJZGVudGl0eTogT3BlbkZpbi5DbGllbnRJZGVudGl0eVxuXHRcdCk6IFByb21pc2U8T21pdDxJbnRlbnRSZXNvbHV0aW9uLCBcImdldFJlc3VsdFwiPiB8IHsgc291cmNlOiBzdHJpbmc7IHZlcnNpb24/OiBzdHJpbmcgfT4ge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJSZWNlaXZlZCByZXF1ZXN0IGZvciBhIHJhaXNlZCBpbnRlbnRcIiwgaW50ZW50KTtcblx0XHRcdGNvbnN0IHRhcmdldEFwcElkZW50aWZpZXIgPSB0aGlzLmdldEFwcGxpY2F0aW9uSWRlbnRpdHkoaW50ZW50Lm1ldGFkYXRhKTtcblx0XHRcdGNvbnN0IHVzZXNBcHBJZGVudGlmaWVyID0gdGhpcy51c2VzQXBwbGljYXRpb25JZGVudGl0eShjbGllbnRJZGVudGl0eSk7XG5cblx0XHRcdGlmICghaXNFbXB0eSh0YXJnZXRBcHBJZGVudGlmaWVyKSkge1xuXHRcdFx0XHRjb25zdCBpbnRlbnRSZXNvbHZlciA9IGF3YWl0IHRoaXMuaGFuZGxlVGFyZ2V0ZWRJbnRlbnQoXG5cdFx0XHRcdFx0dGFyZ2V0QXBwSWRlbnRpZmllcixcblx0XHRcdFx0XHRpbnRlbnQsXG5cdFx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdFx0Y2xpZW50SWRlbnRpdHlcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuIHRoaXMuc2hhcGVJbnRlbnRSZXNvbHZlcihpbnRlbnRSZXNvbHZlciwgdXNlc0FwcElkZW50aWZpZXIpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBpbnRlbnRBcHBzID0gYXdhaXQgZ2V0QXBwc0J5SW50ZW50KGludGVudC5uYW1lKTtcblxuXHRcdFx0aWYgKHRoaXMuX3VucmVnaXN0ZXJlZEFwcCAmJiAoYXdhaXQgdGhpcy5jYW5BZGRVbnJlZ2lzdGVyZWRBcHAoY2xpZW50SWRlbnRpdHksIGludGVudC5uYW1lKSkpIHtcblx0XHRcdFx0Ly8gV2UgaGF2ZSB1bnJlZ2lzdGVyZWQgYXBwIGluc3RhbmNlcyB0aGF0IHN1cHBvcnQgdGhpcyBpbnRlbnQgYW5kIHN1cHBvcnQgZm9yIHVucmVnaXN0ZXJlZCBpbnN0YW5jZXMgaXMgZW5hYmxlZFxuXHRcdFx0XHRpbnRlbnRBcHBzLnB1c2godGhpcy5fdW5yZWdpc3RlcmVkQXBwKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGludGVudEFwcHMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiTm8gYXBwcyBzdXBwb3J0IHRoaXMgaW50ZW50XCIpO1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoUmVzb2x2ZUVycm9yLk5vQXBwc0ZvdW5kKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGludGVudEFwcHMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdC8vIGhhbmRsZSBzaW5nbGUgZW50cnlcblx0XHRcdFx0Y29uc3QgYXBwSW5zdGFuY2VzID0gYXdhaXQgdGhpcy5mZGMzSGFuZGxlRmluZEluc3RhbmNlcyhpbnRlbnRBcHBzWzBdLCBjbGllbnRJZGVudGl0eSk7XG5cdFx0XHRcdC8vIGlmIHRoZXJlIGFyZSBubyBpbnN0YW5jZXMgbGF1bmNoIGEgbmV3IG9uZSBvdGhlcndpc2UgcHJlc2VudCB0aGUgY2hvaWNlIHRvIHRoZSB1c2VyXG5cdFx0XHRcdC8vIGJ5IGZhbGxpbmcgdGhyb3VnaCB0byB0aGUgbmV4dCBjb2RlIGJsb2NrXG5cdFx0XHRcdGxldCBhcHBJbnN0YW5jZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGlmIChhcHBJbnN0YW5jZXMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdFx0YXBwSW5zdGFuY2VJZCA9IGFwcEluc3RhbmNlc1swXS5pbnN0YW5jZUlkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRhcHBJbnN0YW5jZXMubGVuZ3RoID09PSAwIHx8XG5cdFx0XHRcdFx0dGhpcy51c2VTaW5nbGVJbnN0YW5jZShpbnRlbnRBcHBzWzBdKSB8fFxuXHRcdFx0XHRcdHRoaXMuY3JlYXRlTmV3SW5zdGFuY2UoaW50ZW50QXBwc1swXSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Y29uc3QgaW50ZW50UmVzb2x2ZXIgPSBhd2FpdCB0aGlzLmxhdW5jaEFwcFdpdGhJbnRlbnQoaW50ZW50QXBwc1swXSwgaW50ZW50LCBhcHBJbnN0YW5jZUlkKTtcblx0XHRcdFx0XHRpZiAoaXNFbXB0eShpbnRlbnRSZXNvbHZlcikpIHtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihSZXNvbHZlRXJyb3IuTm9BcHBzRm91bmQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5zaGFwZUludGVudFJlc29sdmVyKGludGVudFJlc29sdmVyLCB1c2VzQXBwSWRlbnRpZmllcik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgdXNlclNlbGVjdGlvbiA9IGF3YWl0IHRoaXMubGF1bmNoSW50ZW50UGlja2VyKHtcblx0XHRcdFx0YXBwczogaW50ZW50QXBwcyxcblx0XHRcdFx0aW50ZW50XG5cdFx0XHR9KTtcblxuXHRcdFx0Y29uc3QgaW50ZW50UmVzb2x2ZXIgPSBhd2FpdCB0aGlzLmhhbmRsZUludGVudFBpY2tlclNlbGVjdGlvbih1c2VyU2VsZWN0aW9uLCBpbnRlbnQpO1xuXHRcdFx0cmV0dXJuIHRoaXMuc2hhcGVJbnRlbnRSZXNvbHZlcihpbnRlbnRSZXNvbHZlciwgdXNlc0FwcElkZW50aWZpZXIpO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEhhbmRsZSB0aGUgRkRDMyBvcGVuLlxuXHRcdCAqIEBwYXJhbSBmZGMzT3Blbk9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSBvcGVuLlxuXHRcdCAqIEBwYXJhbSBmZGMzT3Blbk9wdGlvbnMuYXBwIFRoZSBwbGF0Zm9ybSBhcHAgb3IgaXRzIGlkLlxuXHRcdCAqIEBwYXJhbSBmZGMzT3Blbk9wdGlvbnMuY29udGV4dCBUaGUgY29udGV4dCBiZWluZyBvcGVuZWQuXG5cdFx0ICogQHBhcmFtIGNsaWVudElkZW50aXR5IFRoZSBjbGllbnQgaWRlbnRpdHkuXG5cdFx0ICogQHJldHVybnMgVGhlIGFwcGxpY2F0aW9uIGlkZW50aWZpZXIuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGZkYzNIYW5kbGVPcGVuKFxuXHRcdFx0ZmRjM09wZW5PcHRpb25zOiB7IGFwcDogUGxhdGZvcm1BcHAgfCBzdHJpbmc7IGNvbnRleHQ6IE9wZW5GaW4uQ29udGV4dCB9LFxuXHRcdFx0Y2xpZW50SWRlbnRpdHk6IE9wZW5GaW4uQ2xpZW50SWRlbnRpdHlcblx0XHQpOiBQcm9taXNlPEFwcElkZW50aWZpZXI+IHtcblx0XHRcdGlmIChpc0VtcHR5KGZkYzNPcGVuT3B0aW9ucz8uYXBwKSkge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJBIHJlcXVlc3QgdG8gZmRjMy5vcGVuIGRpZCBub3QgcGFzcyBhbiBmZGMzT3Blbk9wdGlvbnMgb2JqZWN0XCIpO1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoUmVzb2x2ZUVycm9yLk5vQXBwc0ZvdW5kKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgcmVxdWVzdGVkSWQgPVxuXHRcdFx0XHR0eXBlb2YgZmRjM09wZW5PcHRpb25zLmFwcCA9PT0gXCJzdHJpbmdcIlxuXHRcdFx0XHRcdD8gZmRjM09wZW5PcHRpb25zLmFwcFxuXHRcdFx0XHRcdDogZmRjM09wZW5PcHRpb25zLmFwcC5hcHBJZCA/PyBmZGMzT3Blbk9wdGlvbnMuYXBwLm5hbWU7XG5cdFx0XHRjb25zdCBvcGVuQXBwSW50ZW50OiBPcGVuRmluLkludGVudCA9IHtcblx0XHRcdFx0Y29udGV4dDogZmRjM09wZW5PcHRpb25zLmNvbnRleHQsXG5cdFx0XHRcdG5hbWU6IFwiT3BlbkFwcFwiLFxuXHRcdFx0XHRtZXRhZGF0YToge1xuXHRcdFx0XHRcdHRhcmdldDogeyBhcHBJZDogcmVxdWVzdGVkSWQgfVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdGBBIHJlcXVlc3QgdG8gT3BlbiBoYXMgYmVlbiBzZW50IHRvIHRoZSBwbGF0Zm9ybSBieSB1dWlkOiAke2NsaWVudElkZW50aXR5Py51dWlkfSwgbmFtZTogJHtjbGllbnRJZGVudGl0eT8ubmFtZX0sIGVuZHBvaW50SWQ6ICR7Y2xpZW50SWRlbnRpdHkuZW5kcG9pbnRJZH0gd2l0aCBwYXNzZWQgY29udGV4dDpgLFxuXHRcdFx0XHRmZGMzT3Blbk9wdGlvbnMuY29udGV4dFxuXHRcdFx0KTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHJlcXVlc3RlZEFwcCA9IGF3YWl0IGdldEFwcChyZXF1ZXN0ZWRJZCk7XG5cdFx0XHRcdGlmIChpc0VtcHR5KHJlcXVlc3RlZEFwcCkpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoT3BlbkVycm9yLkFwcE5vdEZvdW5kKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmxhdW5jaEFwcFdpdGhJbnRlbnQocmVxdWVzdGVkQXBwLCBvcGVuQXBwSW50ZW50KTtcblx0XHRcdFx0bGV0IGFwcElkOiBzdHJpbmc7XG5cdFx0XHRcdGxldCBpbnN0YW5jZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGlmICh0eXBlb2YgcmVzdWx0LnNvdXJjZSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdGFwcElkID0gcmVzdWx0LnNvdXJjZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhcHBJZCA9IHJlc3VsdC5zb3VyY2UuYXBwSWQ7XG5cdFx0XHRcdFx0aW5zdGFuY2VJZCA9IHJlc3VsdC5zb3VyY2UuaW5zdGFuY2VJZDtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4geyBhcHBJZCwgaW5zdGFuY2VJZCB9O1xuXHRcdFx0fSBjYXRjaCAoaW50ZW50RXJyb3IpIHtcblx0XHRcdFx0Y29uc3QgZXJyb3IgPSBmb3JtYXRFcnJvcihpbnRlbnRFcnJvcik7XG5cdFx0XHRcdGlmIChlcnJvciA9PT0gUmVzb2x2ZUVycm9yLlRhcmdldEluc3RhbmNlVW5hdmFpbGFibGUgfHwgZXJyb3IgPT09IFJlc29sdmVFcnJvci5JbnRlbnREZWxpdmVyeUZhaWxlZCkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihPcGVuRXJyb3IuQXBwVGltZW91dCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhyb3cgaW50ZW50RXJyb3I7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogVGhlIGNsaWVudCBoYXMgZGlzY29ubmVjdGVkIGZvcm0gdGhlIGJyb2tlci5cblx0XHQgKiBAcGFyYW0gY2xpZW50SWRlbnRpdHkgVGhlIGlkZW50aXR5IG9mIHRoZSBjbGllbnQgdGhhdCBkaXNjb25uZWN0ZWQuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGNsaWVudERpc2Nvbm5lY3RlZChjbGllbnRJZGVudGl0eTogT3BlbkZpbi5DbGllbnRJZGVudGl0eSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJDbGllbnQgRGlzY29ubmVjdGVkLlwiLCBjbGllbnRJZGVudGl0eSk7XG5cblx0XHRcdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX3RyYWNrZWRJbnRlbnRIYW5kbGVycykpIHtcblx0XHRcdFx0dGhpcy5fdHJhY2tlZEludGVudEhhbmRsZXJzW2tleV0gPSB2YWx1ZS5maWx0ZXIoXG5cdFx0XHRcdFx0KGVudHJ5KSA9PiBlbnRyeS5jbGllbnRJZGVudGl0eS5lbmRwb2ludElkICE9PSBjbGllbnRJZGVudGl0eS5lbmRwb2ludElkXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnJlbW92ZUFwaVZlcnNpb24oY2xpZW50SWRlbnRpdHkpO1xuXHRcdFx0YXdhaXQgc3VwZXIuY2xpZW50RGlzY29ubmVjdGVkKGNsaWVudElkZW50aXR5KTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBIYW5kbGUgRkRDMyBmaW5kIGluc3RhbmNlcy5cblx0XHQgKiBAcGFyYW0gYXBwIFRoZSBhcHAgaWRlbnRpZmllciB0byBmaW5kLlxuXHRcdCAqIEBwYXJhbSBjbGllbnRJZGVudGl0eSBUaGUgY2xpZW50IGlkZW50aXR5LlxuXHRcdCAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBvZiB0aGUgYXBwLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBmZGMzSGFuZGxlRmluZEluc3RhbmNlcyhcblx0XHRcdGFwcDogQXBwSWRlbnRpZmllcixcblx0XHRcdGNsaWVudElkZW50aXR5OiBPcGVuRmluLkNsaWVudElkZW50aXR5XG5cdFx0KTogUHJvbWlzZTxBcHBJZGVudGlmaWVyW10+IHtcblx0XHRcdGNvbnN0IGVuZHBvaW50QXBwczogeyBba2V5OiBzdHJpbmddOiBBcHBJZGVudGlmaWVyIH0gPSB7fTtcblxuXHRcdFx0Zm9yIChjb25zdCBbLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fdHJhY2tlZEludGVudEhhbmRsZXJzKSkge1xuXHRcdFx0XHRjb25zdCBlbnRyaWVzID0gdmFsdWUuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkuYXBwSWQgPT09IGFwcC5hcHBJZCk7XG5cdFx0XHRcdGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuXHRcdFx0XHRcdGVuZHBvaW50QXBwc1tlbnRyeS5jbGllbnRJZGVudGl0eS5lbmRwb2ludElkXSA9IHtcblx0XHRcdFx0XHRcdGFwcElkOiBlbnRyeS5hcHBJZCA/PyBcIlwiLFxuXHRcdFx0XHRcdFx0aW5zdGFuY2VJZDogZW50cnkuY2xpZW50SWRlbnRpdHkuZW5kcG9pbnRJZFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIE9iamVjdC52YWx1ZXMoZW5kcG9pbnRBcHBzKTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBIYW5kbGUgcmVxdWVzdCB0byBnZXQgRkRDMyBhcHAgbWV0YWRhdGEuXG5cdFx0ICogQHBhcmFtIGFwcCBUaGUgYXBwIHRvIGdldCB0aGUgbWV0YWRhdGEgZm9yLlxuXHRcdCAqIEBwYXJhbSBjbGllbnRJZGVudGl0eSBUaGUgY2xpZW50IGlkZW50aXR5LlxuXHRcdCAqIEByZXR1cm5zIFRoZSBhcHAgbWV0YWRhdGEuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGZkYzNIYW5kbGVHZXRBcHBNZXRhZGF0YShcblx0XHRcdGFwcDogQXBwSWRlbnRpZmllcixcblx0XHRcdGNsaWVudElkZW50aXR5OiBPcGVuRmluLkNsaWVudElkZW50aXR5XG5cdFx0KTogUHJvbWlzZTxBcHBNZXRhZGF0YT4ge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJmZGMzSGFuZGxlR2V0QXBwTWV0YWRhdGEgY2FsbCByZWNlaXZlZC5cIiwgYXBwLCBjbGllbnRJZGVudGl0eSk7XG5cdFx0XHQvLyB0aGlzIHdpbGwgb25seSBiZSBjYWxsZWQgYnkgRkRDMyAyLjArXG5cdFx0XHRsZXQgcGxhdGZvcm1BcHAgPSBhd2FpdCBnZXRBcHAoYXBwLmFwcElkKTtcblx0XHRcdGlmIChpc0VtcHR5KHBsYXRmb3JtQXBwKSAmJiBhcHAuYXBwSWQgPT09IHRoaXMuX3VucmVnaXN0ZXJlZEFwcD8uYXBwSWQpIHtcblx0XHRcdFx0cGxhdGZvcm1BcHAgPSB0aGlzLl91bnJlZ2lzdGVyZWRBcHA7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWlzRW1wdHkocGxhdGZvcm1BcHApKSB7XG5cdFx0XHRcdGNvbnN0IGFwcE1ldGFEYXRhOiBBcHBNZXRhZGF0YSA9IG1hcFRvMjBBcHBNZXRhRGF0YShwbGF0Zm9ybUFwcCk7XG5cdFx0XHRcdGlmICghaXNFbXB0eShhcHAuaW5zdGFuY2VJZCkpIHtcblx0XHRcdFx0XHRjb25zdCBhbGxDb25uZWN0ZWRDbGllbnRzID0gYXdhaXQgdGhpcy5nZXRBbGxDbGllbnRJbmZvKCk7XG5cdFx0XHRcdFx0Y29uc3QgY29ubmVjdGVkQ2xpZW50ID0gYWxsQ29ubmVjdGVkQ2xpZW50cy5maW5kKChjbGllbnQpID0+IGNsaWVudC5lbmRwb2ludElkID09PSBhcHAuaW5zdGFuY2VJZCk7XG5cdFx0XHRcdFx0aWYgKCFpc0VtcHR5KGNvbm5lY3RlZENsaWVudCkgJiYgY29ubmVjdGVkQ2xpZW50LnV1aWQgPT09IGZpbi5tZS5pZGVudGl0eS51dWlkKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBpZGVudGl0eSA9IHsgdXVpZDogY29ubmVjdGVkQ2xpZW50LnV1aWQsIG5hbWU6IGNvbm5lY3RlZENsaWVudC5uYW1lIH07XG5cdFx0XHRcdFx0XHRsZXQgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdGxldCBwcmV2aWV3OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRpZiAoY29ubmVjdGVkQ2xpZW50LmVudGl0eVR5cGUgPT09IFwid2luZG93XCIpIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBpbnN0YW5jZVdpbmRvdyA9IGZpbi5XaW5kb3cud3JhcFN5bmMoaWRlbnRpdHkpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGlzVmlzaWJsZVVzZXJXaW5kb3cgPSBhd2FpdCBpbnN0YW5jZVdpbmRvdy5pc1Nob3dpbmcoKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoaXNWaXNpYmxlVXNlcldpbmRvdykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qgd2luZG93SW5mbyA9IGF3YWl0IGluc3RhbmNlV2luZG93LmdldEluZm8oKTtcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlID0gd2luZG93SW5mby50aXRsZTtcblx0XHRcdFx0XHRcdFx0XHRcdHByZXZpZXcgPSBhd2FpdCB0aGlzLmdldFByZXZpZXdJbWFnZShpbnN0YW5jZVdpbmRvdyk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGluc3RhbmNlVmlldyA9IGZpbi5WaWV3LndyYXBTeW5jKGlkZW50aXR5KTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCB2aWV3SW5mbyA9IGF3YWl0IGluc3RhbmNlVmlldy5nZXRJbmZvKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGUgPSB2aWV3SW5mby50aXRsZTtcblx0XHRcdFx0XHRcdFx0XHRwcmV2aWV3ID0gYXdhaXQgdGhpcy5nZXRQcmV2aWV3SW1hZ2UoaW5zdGFuY2VWaWV3KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0XHRcdFx0YEEgY29ubmVjdGVkIGNsaWVudCBjb3VsZCBub3QgYmUgcXVlcmllZCBmb3IgZGF0YS4gSXQgY291bGQgYmUgaXQgaGFzbid0IHVucmVnaXN0ZXJlZCBpdHNlbGYgZnJvbSB0aGUgYnJva2VyLiBBcHBJZDogJHthcHAuYXBwSWR9LCBpbnN0YW5jZUlkOiAke2FwcC5pbnN0YW5jZUlkfSwgbmFtZTogJHtpZGVudGl0eS5uYW1lfWAsXG5cdFx0XHRcdFx0XHRcdFx0ZXJyb3Jcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmICghaXNFbXB0eSh0aXRsZSkpIHtcblx0XHRcdFx0XHRcdFx0Ly8gZW5zdXJlIG5vIGVsZW1lbnQgdGFncyBhcmUgcHJvdmlkZWQgaW4gdGhlIHRpdGxlXG5cdFx0XHRcdFx0XHRcdC8vIHdlIGRvbid0IGtub3cgaG93IHRoaXMgaW5mb3JtYXRpb24gd2lsbCBiZSB1c2VkXG5cdFx0XHRcdFx0XHRcdC8vIGFuZCB0aXRsZSBoYXNuJ3QgY29tZSBmcm9tIHRoZSBhcHAgZGlyZWN0b3J5XG5cdFx0XHRcdFx0XHRcdHRpdGxlID0gdGl0bGUucmVwbGFjZSgvPFtePl0qPj8vZ20sIFwiXCIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y29uc3QgaW5zdGFuY2VBcHBNZXRhOiBBcHBNZXRhZGF0YSA9IHtcblx0XHRcdFx0XHRcdFx0Li4uYXBwTWV0YURhdGEsXG5cdFx0XHRcdFx0XHRcdGluc3RhbmNlSWQ6IGFwcC5pbnN0YW5jZUlkLFxuXHRcdFx0XHRcdFx0XHRpbnN0YW5jZU1ldGFkYXRhOiB7IHRpdGxlLCBwcmV2aWV3IH1cblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRyZXR1cm4gaW5zdGFuY2VBcHBNZXRhO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYXBwTWV0YURhdGE7XG5cdFx0XHR9XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJUYXJnZXRBcHBVbmF2YWlsYWJsZVwiKTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBIYW5kbGUgdGhlIHJlcXVlc3QgdG8gZ2V0IEZEQzMgaW5mby5cblx0XHQgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZC5cblx0XHQgKiBAcGFyYW0gcGF5bG9hZC5mZGMzVmVyc2lvbiBUaGUgdmVyc2lvbiBpbmZvIHRvIGdldC5cblx0XHQgKiBAcGFyYW0gY2xpZW50SWRlbnRpdHkgVGhlIGNsaWVudCBpZGVudGl0eS5cblx0XHQgKiBAcmV0dXJucyBUaGUgaW5mby5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgZmRjM0hhbmRsZUdldEluZm8oXG5cdFx0XHRwYXlsb2FkOiB7XG5cdFx0XHRcdGZkYzNWZXJzaW9uOiBzdHJpbmc7XG5cdFx0XHR9LFxuXHRcdFx0Y2xpZW50SWRlbnRpdHk6IE9wZW5GaW4uQ2xpZW50SWRlbnRpdHlcblx0XHQpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRcdGxvZ2dlci5pbmZvKFwiZmRjM0hhbmRsZUdldEluZm9cIiwgcGF5bG9hZCwgY2xpZW50SWRlbnRpdHkpO1xuXHRcdFx0aWYgKHBheWxvYWQ/LmZkYzNWZXJzaW9uID09PSBcIjIuMFwiKSB7XG5cdFx0XHRcdGNvbnN0IHJlc3BvbnNlOiBJbXBsZW1lbnRhdGlvbk1ldGFkYXRhID0gKGF3YWl0IHN1cGVyLmZkYzNIYW5kbGVHZXRJbmZvKFxuXHRcdFx0XHRcdHBheWxvYWQsXG5cdFx0XHRcdFx0Y2xpZW50SWRlbnRpdHlcblx0XHRcdFx0KSkgYXMgSW1wbGVtZW50YXRpb25NZXRhZGF0YTtcblx0XHRcdFx0Y29uc3QgYXBwSWQgPSBhd2FpdCB0aGlzLmxvb2t1cEFwcElkKGNsaWVudElkZW50aXR5KTtcblx0XHRcdFx0aWYgKCFpc0VtcHR5KGFwcElkKSkge1xuXHRcdFx0XHRcdGNvbnN0IHVwZGF0ZWRSZXNwb25zZSA9IHtcblx0XHRcdFx0XHRcdC4uLnJlc3BvbnNlLFxuXHRcdFx0XHRcdFx0YXBwTWV0YWRhdGE6IHsgYXBwSWQsIGluc3RhbmNlSWQ6IGNsaWVudElkZW50aXR5LmVuZHBvaW50SWQgfVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0cmV0dXJuIHVwZGF0ZWRSZXNwb25zZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gc3VwZXIuZmRjM0hhbmRsZUdldEluZm8ocGF5bG9hZCwgY2xpZW50SWRlbnRpdHkpO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEhhbmRsZSBhbiBpbnRlbnQgaGFuZGxlciBiZWluZyByZWdpc3RlcmVkLlxuXHRcdCAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkLlxuXHRcdCAqIEBwYXJhbSBjbGllbnRJZGVudGl0eSBUaGUgY2xpZW50IGlkZW50aXR5LlxuXHRcdCAqIEByZXR1cm5zIE5vdGhpbmcuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGludGVudEhhbmRsZXJSZWdpc3RlcmVkKFxuXHRcdFx0cGF5bG9hZDogSW50ZW50UmVnaXN0cmF0aW9uUGF5bG9hZCxcblx0XHRcdGNsaWVudElkZW50aXR5OiBPcGVuRmluLkNsaWVudElkZW50aXR5XG5cdFx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0XHRsb2dnZXIuaW5mbyhcImludGVudEhhbmRsZXJSZWdpc3RlcmVkOlwiLCBwYXlsb2FkLCBjbGllbnRJZGVudGl0eSk7XG5cdFx0XHRpZiAoIWlzRW1wdHkocGF5bG9hZCkpIHtcblx0XHRcdFx0Y29uc3QgaW50ZW50TmFtZTogc3RyaW5nID0gcGF5bG9hZC5oYW5kbGVySWQucmVwbGFjZShcImludGVudC1oYW5kbGVyLVwiLCBcIlwiKTtcblxuXHRcdFx0XHRsZXQgdHJhY2tlZEludGVudEhhbmRsZXIgPSB0aGlzLl90cmFja2VkSW50ZW50SGFuZGxlcnNbaW50ZW50TmFtZV07XG5cblx0XHRcdFx0aWYgKGlzRW1wdHkodHJhY2tlZEludGVudEhhbmRsZXIpKSB7XG5cdFx0XHRcdFx0dHJhY2tlZEludGVudEhhbmRsZXIgPSBbXTtcblx0XHRcdFx0XHR0aGlzLl90cmFja2VkSW50ZW50SGFuZGxlcnNbaW50ZW50TmFtZV0gPSB0cmFja2VkSW50ZW50SGFuZGxlcjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHRyYWNrZWRIYW5kbGVyID0gdGhpcy5fdHJhY2tlZEludGVudEhhbmRsZXJzW2ludGVudE5hbWVdLmZpbmQoXG5cdFx0XHRcdFx0KGVudHJ5KSA9PiBlbnRyeS5jbGllbnRJZGVudGl0eS5lbmRwb2ludElkID09PSBjbGllbnRJZGVudGl0eS5lbmRwb2ludElkXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKGlzRW1wdHkodHJhY2tlZEhhbmRsZXIpKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFx0XHRgaW50ZW50SGFuZGxlciBlbmRwb2ludCBub3QgcmVnaXN0ZXJlZC4gUmVnaXN0ZXJpbmcgJHtjbGllbnRJZGVudGl0eS5lbmRwb2ludElkfSBhZ2FpbnN0IGludGVudCAke2ludGVudE5hbWV9IGFuZCBsb29raW5nIHVwIGFwcCBuYW1lLmBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGNvbnN0IGFwcElkID0gYXdhaXQgdGhpcy5sb29rdXBBcHBJZChjbGllbnRJZGVudGl0eSk7XG5cblx0XHRcdFx0XHRpZiAoaXNFbXB0eShhcHBJZCkpIHtcblx0XHRcdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdFx0XHRcIlVuYWJsZSB0byBkZXRlcm1pbmUgYXBwIGlkIGJhc2VkIG9uIG5hbWUuIFRoaXMgYXBwIHdpbGwgbm90IGJlIHRyYWNrZWQgdmlhIGludGVudCBoYW5kbGVyIHJlZ2lzdHJhdGlvbi5cIlxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5fdHJhY2tlZEludGVudEhhbmRsZXJzW2ludGVudE5hbWVdLnB1c2goe1xuXHRcdFx0XHRcdFx0ZmRjM1ZlcnNpb246IHBheWxvYWQuZmRjM1ZlcnNpb24sXG5cdFx0XHRcdFx0XHRjbGllbnRJZGVudGl0eSxcblx0XHRcdFx0XHRcdGFwcElkXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFx0XHRgaW50ZW50SGFuZGxlciBlbmRwb2ludDogJHtjbGllbnRJZGVudGl0eS5lbmRwb2ludElkfSByZWdpc3RlcmVkIGFnYWluc3QgaW50ZW50OiAke2ludGVudE5hbWV9IGFuZCBhcHAgSWQ6ICR7YXBwSWR9LmBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgY2xpZW50UmVhZHlLZXkgPSB0aGlzLmdldENsaWVudFJlYWR5S2V5KGNsaWVudElkZW50aXR5LCBpbnRlbnROYW1lKTtcblx0XHRcdFx0aWYgKCFpc0VtcHR5KHRoaXMuX2NsaWVudFJlYWR5UmVxdWVzdHNbY2xpZW50UmVhZHlLZXldKSkge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKFwiUmVzb2x2aW5nIGNsaWVudCByZWFkeSByZXF1ZXN0LlwiKTtcblx0XHRcdFx0XHR0aGlzLl9jbGllbnRSZWFkeVJlcXVlc3RzW2NsaWVudFJlYWR5S2V5XShjbGllbnRJZGVudGl0eS5lbmRwb2ludElkKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0YXdhaXQgc3VwZXIuaW50ZW50SGFuZGxlclJlZ2lzdGVyZWQocGF5bG9hZCwgY2xpZW50SWRlbnRpdHkpO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIExhdW5jaCBhbiBhcHAgd2l0aCBpbnRlbnQuXG5cdFx0ICogQHBhcmFtIGFwcCBUaGUgYXBwbGljYXRpb24gdG8gbGF1bmNoLlxuXHRcdCAqIEBwYXJhbSBpbnRlbnQgVGhlIGludGVudCB0byBvcGVuIGl0IHdpdGguXG5cdFx0ICogQHBhcmFtIGluc3RhbmNlSWQgVGhlIGluc3RhbmNlIG9mIHRoZSBhcHAuXG5cdFx0ICogQHJldHVybnMgVGhlIGludGVudCByZXNvbHV0aW9uLlxuXHRcdCAqL1xuXHRcdHByaXZhdGUgYXN5bmMgbGF1bmNoQXBwV2l0aEludGVudChcblx0XHRcdGFwcDogUGxhdGZvcm1BcHAsXG5cdFx0XHRpbnRlbnQ6IE9wZW5GaW4uSW50ZW50LFxuXHRcdFx0aW5zdGFuY2VJZD86IHN0cmluZ1xuXHRcdCk6IFByb21pc2U8T21pdDxJbnRlbnRSZXNvbHV0aW9uLCBcImdldFJlc3VsdFwiPj4ge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJMYXVuY2hpbmcgYXBwIHdpdGggaW50ZW50XCIpO1xuXHRcdFx0bGV0IHBsYXRmb3JtSWRlbnRpdGllczogUGxhdGZvcm1BcHBJZGVudGlmaWVyW10gfCB1bmRlZmluZWQgPSBbXTtcblx0XHRcdGxldCBleGlzdGluZ0luc3RhbmNlID0gdHJ1ZTtcblxuXHRcdFx0aWYgKCFpc0VtcHR5KGludGVudD8uY29udGV4dCkpIHtcblx0XHRcdFx0aW50ZW50LmNvbnRleHQgPSBhd2FpdCB0aGlzLnByb2Nlc3NDb250ZXh0KGludGVudC5jb250ZXh0KTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCFpc0VtcHR5KGluc3RhbmNlSWQpKSB7XG5cdFx0XHRcdC8vIGFuIGluc3RhbmNlIG9mIGFuIGFwcGxpY2F0aW9uIHdhcyBzZWxlY3RlZFxuXHRcdFx0XHRjb25zdCBhbGxDb25uZWN0ZWRDbGllbnRzID0gYXdhaXQgdGhpcy5nZXRBbGxDbGllbnRJbmZvKCk7XG5cdFx0XHRcdGNvbnN0IGNsaWVudEluZm8gPSBhbGxDb25uZWN0ZWRDbGllbnRzLmZpbmQoXG5cdFx0XHRcdFx0KGNvbm5lY3RlZENsaWVudCkgPT4gY29ubmVjdGVkQ2xpZW50LmVuZHBvaW50SWQgPT09IGluc3RhbmNlSWRcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKCFpc0VtcHR5KGNsaWVudEluZm8pKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oYEFwcCBJZDogJHthcHAuYXBwSWR9IGFuZCBpbnN0YW5jZSBJZDogJHtpbnN0YW5jZUlkfSB3YXMgcHJvdmlkZWQgYW5kIGZvdW5kLmApO1xuXHRcdFx0XHRcdC8vIHRoZSBjb25uZWN0ZWQgaW5zdGFuY2UgaXMgYXZhaWxhYmxlXG5cdFx0XHRcdFx0cGxhdGZvcm1JZGVudGl0aWVzLnB1c2goe1xuXHRcdFx0XHRcdFx0dXVpZDogY2xpZW50SW5mby51dWlkLFxuXHRcdFx0XHRcdFx0bmFtZTogY2xpZW50SW5mby5uYW1lLFxuXHRcdFx0XHRcdFx0YXBwSWQ6IGFwcC5hcHBJZCxcblx0XHRcdFx0XHRcdGluc3RhbmNlSWQ6IGNsaWVudEluZm8uZW5kcG9pbnRJZFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihSZXNvbHZlRXJyb3IuVGFyZ2V0SW5zdGFuY2VVbmF2YWlsYWJsZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKHBsYXRmb3JtSWRlbnRpdGllcy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0cGxhdGZvcm1JZGVudGl0aWVzID0gYXdhaXQgbGF1bmNoKGFwcCk7XG5cdFx0XHRcdGlmICghcGxhdGZvcm1JZGVudGl0aWVzPy5sZW5ndGgpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoUmVzb2x2ZUVycm9yLkludGVudERlbGl2ZXJ5RmFpbGVkKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRleGlzdGluZ0luc3RhbmNlID0gZmFsc2U7XG5cdFx0XHRcdGlmIChwbGF0Zm9ybUlkZW50aXRpZXMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdFx0Y29uc3QgaW50ZW50VGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdGhpcy5faW50ZW50T3B0aW9ucz8uaW50ZW50VGltZW91dDtcblx0XHRcdFx0XHQvLyBpZiB3ZSBoYXZlIGEgc25hcHNob3QgYW5kIG11bHRpcGxlIGlkZW50aXRpZXMgd2Ugd2lsbCBub3Qgd2FpdCBhcyBub3QgYWxsIG9mIHRoZW0gbWlnaHQgbm90IHN1cHBvcnQgaW50ZW50cy5cblx0XHRcdFx0XHRpbnN0YW5jZUlkID0gYXdhaXQgdGhpcy5vbkNsaWVudFJlYWR5KHBsYXRmb3JtSWRlbnRpdGllc1swXSwgaW50ZW50Lm5hbWUsIGludGVudFRpbWVvdXQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoY29uc3QgdGFyZ2V0IG9mIHBsYXRmb3JtSWRlbnRpdGllcykge1xuXHRcdFx0XHRhd2FpdCBzdXBlci5zZXRJbnRlbnRUYXJnZXQoaW50ZW50LCB0YXJnZXQpO1xuXHRcdFx0XHRpZiAoZXhpc3RpbmdJbnN0YW5jZSkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRhd2FpdCBicmluZ1RvRnJvbnQoYXBwLCBbdGFyZ2V0XSk7XG5cdFx0XHRcdFx0fSBjYXRjaCAoYnJpbmdUb0Zyb250RXJyb3IpIHtcblx0XHRcdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdFx0XHRgVGhlcmUgd2FzIGFuIGVycm9yIGJyaW5naW5nIGFwcDogJHt0YXJnZXQuYXBwSWR9LCBhbmQgaW5zdGFuY2UgJHt0YXJnZXQuaW5zdGFuY2VJZH0gd2l0aCBuYW1lOiAke3RhcmdldC5uYW1lfSB0byBmcm9udC5gLFxuXHRcdFx0XHRcdFx0XHRicmluZ1RvRnJvbnRFcnJvclxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0c291cmNlOiB7IGFwcElkOiBhcHAuYXBwSWQsIGluc3RhbmNlSWQgfSxcblx0XHRcdFx0dmVyc2lvbjogYXBwLnZlcnNpb24sXG5cdFx0XHRcdGludGVudDogaW50ZW50Lm5hbWVcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogTGF1bmNoIHRoZSBpbnRlbnQgcGlja2VyLlxuXHRcdCAqIEBwYXJhbSBsYXVuY2hPcHRpb25zIFRoZSBvcHRpb25zIGZvciBsYXVuY2hpbmcgdGhlIHBpY2tlci5cblx0XHQgKiBAcGFyYW0gbGF1bmNoT3B0aW9ucy5hcHBzIFRoZSBhcHBzIHRvIHBpY2sgZnJvbS5cblx0XHQgKiBAcGFyYW0gbGF1bmNoT3B0aW9ucy5pbnRlbnQgVGhlIGludGVudCB0byBwaWNrLlxuXHRcdCAqIEBwYXJhbSBsYXVuY2hPcHRpb25zLmludGVudHMgVGhlIGludGVudHMgdG8gcGljayBmcm9tLlxuXHRcdCAqIEByZXR1cm5zIFRoZSByZXNwb25zZSBmcm9tIHRoZSBpbnRlbnQgcGlja2VyLlxuXHRcdCAqL1xuXHRcdHByaXZhdGUgYXN5bmMgbGF1bmNoSW50ZW50UGlja2VyKGxhdW5jaE9wdGlvbnM6IHtcblx0XHRcdGFwcHM/OiBQbGF0Zm9ybUFwcFtdO1xuXHRcdFx0aW50ZW50PzogUGFydGlhbDxBcHBJbnRlbnQ+O1xuXHRcdFx0aW50ZW50cz86IHsgaW50ZW50OiBQYXJ0aWFsPEFwcEludGVudD47IGFwcHM6IFBsYXRmb3JtQXBwW10gfVtdO1xuXHRcdH0pOiBQcm9taXNlPEludGVudFBpY2tlclJlc3BvbnNlPiB7XG5cdFx0XHQvLyBsYXVuY2ggYSBuZXcgd2luZG93IGFuZCBvcHRpb25hbGx5IHBhc3MgdGhlIGF2YWlsYWJsZSBpbnRlbnRzIGFzIGN1c3RvbURhdGEuYXBwcyBhcyBwYXJ0IG9mIHRoZSB3aW5kb3dcblx0XHRcdC8vIG9wdGlvbnMgdGhlIHdpbmRvdyBjYW4gdGhlbiB1c2UgcmFpc2VJbnRlbnQgYWdhaW5zdCBhIHNwZWNpZmljIGFwcCAodGhlIHNlbGVjdGVkIG9uZSkuIHRoaXMgbG9naWMgcnVucyBpblxuXHRcdFx0Ly8gdGhlIHByb3ZpZGVyIHNvIHdlIGFyZSB1c2luZyBpdCBhcyBhIHdheSBvZiBkZXRlcm1pbmluZyB0aGUgcm9vdCAoc28gaXQgd29ya3Mgd2l0aCByb290IGhvc3RpbmcgYW5kXG5cdFx0XHQvLyBzdWJkaXJlY3RvcnkgYmFzZWQgaG9zdGluZyBpZiBhIHVybCBpcyBub3QgcHJvdmlkZWQpXG5cdFx0XHRjb25zdCB3aW5PcHRpb24gPSB7XG5cdFx0XHRcdG5hbWU6IFwiaW50ZW50LXBpY2tlclwiLFxuXHRcdFx0XHRpbmNsdWRlSW5TbmFwc2hvdDogZmFsc2UsXG5cdFx0XHRcdGZkYzNJbnRlcm9wQXBpOiB0aGlzLl9pbnRlbnRSZXNvbHZlck9wdGlvbnM/LmZkYzNJbnRlcm9wQXBpLFxuXHRcdFx0XHRkZWZhdWx0V2lkdGg6IHRoaXMuX2ludGVudFJlc29sdmVyT3B0aW9ucz8ud2lkdGgsXG5cdFx0XHRcdGRlZmF1bHRIZWlnaHQ6IHRoaXMuX2ludGVudFJlc29sdmVyT3B0aW9ucz8uaGVpZ2h0LFxuXHRcdFx0XHRzaG93VGFza2Jhckljb246IGZhbHNlLFxuXHRcdFx0XHRzYXZlV2luZG93U3RhdGU6IGZhbHNlLFxuXHRcdFx0XHRkZWZhdWx0Q2VudGVyZWQ6IHRydWUsXG5cdFx0XHRcdGN1c3RvbURhdGE6IHtcblx0XHRcdFx0XHR0aXRsZTogdGhpcy5faW50ZW50UmVzb2x2ZXJPcHRpb25zPy50aXRsZSxcblx0XHRcdFx0XHRhcHBzOiBsYXVuY2hPcHRpb25zLmFwcHMsXG5cdFx0XHRcdFx0aW50ZW50OiBsYXVuY2hPcHRpb25zLmludGVudCxcblx0XHRcdFx0XHRpbnRlbnRzOiBsYXVuY2hPcHRpb25zLmludGVudHMsXG5cdFx0XHRcdFx0dW5yZWdpc3RlcmVkQXBwSWQ6IHRoaXMuX3VucmVnaXN0ZXJlZEFwcD8uYXBwSWRcblx0XHRcdFx0fSxcblx0XHRcdFx0dXJsOiB0aGlzLl9pbnRlbnRSZXNvbHZlck9wdGlvbnM/LnVybCxcblx0XHRcdFx0ZnJhbWU6IGZhbHNlLFxuXHRcdFx0XHRhdXRvU2hvdzogdHJ1ZSxcblx0XHRcdFx0YWx3YXlzT25Ub3A6IHRydWVcblx0XHRcdH07XG5cblx0XHRcdGNvbnN0IHdpbiA9IGF3YWl0IGZpbi5XaW5kb3cuY3JlYXRlKHdpbk9wdGlvbik7XG5cdFx0XHRjb25zdCB3ZWJXaW5kb3cgPSB3aW4uZ2V0V2ViV2luZG93KCk7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2RvdC1ub3RhdGlvbiwgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXHRcdFx0XHRjb25zdCBzZWxlY3RlZEFwcElkID0gYXdhaXQgKHdlYldpbmRvdyBhcyB1bmtub3duIGFzIGFueSlbXCJnZXRJbnRlbnRTZWxlY3Rpb25cIl0oKTtcblx0XHRcdFx0cmV0dXJuIHNlbGVjdGVkQXBwSWQgYXMge1xuXHRcdFx0XHRcdGFwcElkOiBzdHJpbmc7XG5cdFx0XHRcdFx0aW5zdGFuY2VJZD86IHN0cmluZztcblx0XHRcdFx0XHRpbnRlbnQ6IEFwcEludGVudDtcblx0XHRcdFx0fTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBmb3JtYXRFcnJvcihlcnJvcik7XG5cblx0XHRcdFx0aWYgKG1lc3NhZ2U/LmluY2x1ZGVzKFJlc29sdmVFcnJvci5Vc2VyQ2FuY2VsbGVkKSkge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKFwiQXBwIGZvciBpbnRlbnQgbm90IHNlbGVjdGVkL2xhdW5jaGVkIGJ5IHVzZXJcIiwgbGF1bmNoT3B0aW9ucy5pbnRlbnQpO1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJVbmV4cGVjdGVkIGVycm9yIGZyb20gaW50ZW50IHBpY2tlci9yZXNvbHZlciBmb3IgaW50ZW50XCIsIGxhdW5jaE9wdGlvbnMuaW50ZW50KTtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFJlc29sdmVFcnJvci5SZXNvbHZlclVuYXZhaWxhYmxlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBIYW5kbGUgdGhlIGludGVudCBwaWNrZXIgc2VsZWN0aW9uLlxuXHRcdCAqIEBwYXJhbSB1c2VyU2VsZWN0aW9uIFRoZSB1c2VyIHNlbGVjdGlvbiBmcm9tIHRoZSBpbnRlbnQgcGlja2VyLlxuXHRcdCAqIEBwYXJhbSBpbnRlbnQgVGhlIGludGVudC5cblx0XHQgKiBAcmV0dXJucyBUaGUgaW50ZW50IHJlc29sdXRpb24uXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSBhc3luYyBoYW5kbGVJbnRlbnRQaWNrZXJTZWxlY3Rpb24oXG5cdFx0XHR1c2VyU2VsZWN0aW9uOiBJbnRlbnRQaWNrZXJSZXNwb25zZSxcblx0XHRcdGludGVudDogT3BlbkZpbi5JbnRlbnQ8T3BlbkZpbi5JbnRlbnRNZXRhZGF0YTxJbnRlbnRUYXJnZXRNZXRhRGF0YT4+XG5cdFx0KTogUHJvbWlzZTxPbWl0PEludGVudFJlc29sdXRpb24sIFwiZ2V0UmVzdWx0XCI+PiB7XG5cdFx0XHRsZXQgc2VsZWN0ZWRBcHAgPSBhd2FpdCBnZXRBcHAodXNlclNlbGVjdGlvbi5hcHBJZCk7XG5cdFx0XHRpZiAoaXNFbXB0eShzZWxlY3RlZEFwcCkgJiYgIWlzRW1wdHkodGhpcy5fdW5yZWdpc3RlcmVkQXBwKSkge1xuXHRcdFx0XHRzZWxlY3RlZEFwcCA9IHRoaXMuX3VucmVnaXN0ZXJlZEFwcDtcblx0XHRcdH1cblx0XHRcdGlmIChpc0VtcHR5KHNlbGVjdGVkQXBwKSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoUmVzb2x2ZUVycm9yLk5vQXBwc0ZvdW5kKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGluc3RhbmNlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVzZXJTZWxlY3Rpb24uaW5zdGFuY2VJZDtcblx0XHRcdGNvbnN0IGludGVudFJlc29sdmVyID0gYXdhaXQgdGhpcy5sYXVuY2hBcHBXaXRoSW50ZW50KHNlbGVjdGVkQXBwLCBpbnRlbnQsIGluc3RhbmNlSWQpO1xuXHRcdFx0aWYgKGlzRW1wdHkoaW50ZW50UmVzb2x2ZXIpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihSZXNvbHZlRXJyb3IuTm9BcHBzRm91bmQpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGludGVudFJlc29sdmVyO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEhhbmRsZSBhIHRhcmdldGVkIGludGVudC5cblx0XHQgKiBAcGFyYW0gdGFyZ2V0QXBwSWRlbnRpZmllciBUaGUgaWRlbnRpZmllciBmb3IgdGhlIHRhcmdldCBhcHAuXG5cdFx0ICogQHBhcmFtIGludGVudCBUaGUgaW50ZW50LlxuXHRcdCAqIEBwYXJhbSB0YXJnZXRCeUNvbnRleHQgUGVyZm9ybSB0aGUgdGFyZ2V0IGJ5IGNvbnRleHQuXG5cdFx0ICogQHBhcmFtIGNsaWVudElkZW50aXR5IFRoZSBjbGllbnQgaWRlbnRpdHkuXG5cdFx0ICogQHJldHVybnMgVGhlIGludGVudCByZXNvbHV0aW9uLlxuXHRcdCAqL1xuXHRcdHByaXZhdGUgYXN5bmMgaGFuZGxlVGFyZ2V0ZWRJbnRlbnQoXG5cdFx0XHR0YXJnZXRBcHBJZGVudGlmaWVyOiBBcHBJZGVudGlmaWVyLFxuXHRcdFx0aW50ZW50OiBPcGVuRmluLkludGVudCxcblx0XHRcdHRhcmdldEJ5Q29udGV4dDogYm9vbGVhbixcblx0XHRcdGNsaWVudElkZW50aXR5OiBPcGVuRmluLkNsaWVudElkZW50aXR5XG5cdFx0KTogUHJvbWlzZTxPbWl0PEludGVudFJlc29sdXRpb24sIFwiZ2V0UmVzdWx0XCI+PiB7XG5cdFx0XHQvLyBhcHAgc3BlY2lmaWVkIGZsb3dcblx0XHRcdGNvbnN0IGludGVudHNGb3JTZWxlY3Rpb246IEFwcHNGb3JJbnRlbnRbXSA9IFtdO1xuXHRcdFx0bGV0IHRhcmdldEFwcCA9IGF3YWl0IGdldEFwcCh0YXJnZXRBcHBJZGVudGlmaWVyLmFwcElkKTtcblxuXHRcdFx0Ly8gaWYgdGhlIHNwZWNpZmllZCBhcHAgaXNuJ3QgYXZhaWxhYmxlIHRoZW4gbGV0IHRoZSBjYWxsZXIga25vd1xuXHRcdFx0aWYgKGlzRW1wdHkodGFyZ2V0QXBwKSkge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0IWlzRW1wdHkodGFyZ2V0QXBwSWRlbnRpZmllci5pbnN0YW5jZUlkKSAmJlxuXHRcdFx0XHRcdHRhcmdldEFwcElkZW50aWZpZXIuYXBwSWQgPT09IHRoaXMuX3VucmVnaXN0ZXJlZEFwcD8uYXBwSWRcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dGFyZ2V0QXBwID0gdGhpcy5fdW5yZWdpc3RlcmVkQXBwO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihSZXNvbHZlRXJyb3IuVGFyZ2V0QXBwVW5hdmFpbGFibGUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBpZiBhbiBpbnN0YW5jZUlkIGlzIHNwZWNpZmllZCB0aGVuIGNoZWNrIHRvIHNlZSBpZiBpdCBpcyB2YWxpZCBhbmQgaWYgaXQgaXNuJ3QgaW5mb3JtIHRoZSBjYWxsZXJcblx0XHRcdGlmICghaXNFbXB0eSh0YXJnZXRBcHBJZGVudGlmaWVyLmluc3RhbmNlSWQpKSB7XG5cdFx0XHRcdGNvbnN0IGF2YWlsYWJsZUFwcEluc3RhbmNlcyA9IGF3YWl0IHRoaXMuZmRjM0hhbmRsZUZpbmRJbnN0YW5jZXModGFyZ2V0QXBwSWRlbnRpZmllciwgY2xpZW50SWRlbnRpdHkpO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0YXZhaWxhYmxlQXBwSW5zdGFuY2VzLmxlbmd0aCA9PT0gMCB8fFxuXHRcdFx0XHRcdCFhdmFpbGFibGVBcHBJbnN0YW5jZXMuc29tZShcblx0XHRcdFx0XHRcdChlbnRyeSkgPT5cblx0XHRcdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cblx0XHRcdFx0XHRcdFx0ZW50cnkuYXBwSWQgPT09IHRhcmdldEFwcElkZW50aWZpZXIuYXBwSWQgJiYgZW50cnkuaW5zdGFuY2VJZCA9PT0gdGFyZ2V0QXBwSWRlbnRpZmllci5pbnN0YW5jZUlkXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoUmVzb2x2ZUVycm9yLlRhcmdldEluc3RhbmNlVW5hdmFpbGFibGUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICghQXJyYXkuaXNBcnJheSh0YXJnZXRBcHAuaW50ZW50cykgfHwgdGFyZ2V0QXBwLmludGVudHMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdC8vIGFuIGFwcCB3YXMgc3BlY2lmaWVkIGJ1dCBpdCBkb2Vzbid0IGhhdmUgYW55IGludGVudHMuIEluZGljYXRlIHRoYXQgc29tZXRoaW5nIGlzIHdyb25nXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihSZXNvbHZlRXJyb3IuVGFyZ2V0QXBwVW5hdmFpbGFibGUpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBzdXBwb3J0ZWRJbnRlbnRzID0gdGFyZ2V0QXBwLmludGVudHMuZmlsdGVyKChpbnRlbnRFbnRyeSkgPT4ge1xuXHRcdFx0XHRsZXQgY29udGV4dE1hdGNoOiBib29sZWFuID0gdHJ1ZTtcblx0XHRcdFx0Y29uc3QgY29udGV4dFR5cGUgPSBpbnRlbnQuY29udGV4dD8udHlwZTtcblx0XHRcdFx0aWYgKCFpc0VtcHR5KGNvbnRleHRUeXBlKSkge1xuXHRcdFx0XHRcdGNvbnRleHRNYXRjaCA9IGludGVudEVudHJ5LmNvbnRleHRzPy5pbmNsdWRlcyhjb250ZXh0VHlwZSk7XG5cdFx0XHRcdFx0aWYgKHRhcmdldEJ5Q29udGV4dCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGNvbnRleHRNYXRjaDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGludGVudEVudHJ5Lm5hbWUgPT09IGludGVudC5uYW1lICYmIGNvbnRleHRNYXRjaDtcblx0XHRcdH0pO1xuXG5cdFx0XHRpZiAoc3VwcG9ydGVkSW50ZW50cy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0Ly8gdGhlIHNwZWNpZmllZCBhcHAgZG9lcyBoYXZlIGludGVudCBzdXBwb3J0IGJ1dCBqdXN0IG5vbmUgdGhhdCBzdXBwb3J0IHRoaXMgY29udGV4dCB0eXBlXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihSZXNvbHZlRXJyb3IuVGFyZ2V0QXBwVW5hdmFpbGFibGUpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc3VwcG9ydGVkSW50ZW50cy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0Ly8gYSBwcmVmZXJyZWQgbmFtZSBmb3IgYW4gYXBwIHdhcyBnaXZlbiB3aXRoIHRoZSBjb250ZXh0IG9iamVjdFxuXHRcdFx0XHQvLyB0aGUgYXBwIGV4aXN0ZWQgYW5kIGl0IHN1cHBvcnRlZCB0aGUgY29udGV4dCB0eXBlIGFuZCB0aGVyZSB3YXMgb25seSBvbmUgaW50ZW50IHRoYXQgc3VwcG9ydGVkXG5cdFx0XHRcdC8vIHRoYXQgY29udGV4dCB0eXBlLiBMYXVuY2ggdGhlIGFwcCB3aXRoIHRoYXQgaW50ZW50IG90aGVyd2lzZSBwcmVzZW50IHRoZSB1c2VyIHdpdGggYSBsaXN0IG9mXG5cdFx0XHRcdC8vIGV2ZXJ5dGhpbmcgdGhhdCBzdXBwb3J0cyB0aGF0IGNvbnRleHQgdHlwZVxuXHRcdFx0XHRpbnRlbnQubmFtZSA9IHN1cHBvcnRlZEludGVudHNbMF0ubmFtZTtcblx0XHRcdFx0Ly8gY2hlY2sgZm9yIGluc3RhbmNlc1xuXHRcdFx0XHRpZiAoIWlzRW1wdHkodGFyZ2V0QXBwSWRlbnRpZmllci5pbnN0YW5jZUlkKSkge1xuXHRcdFx0XHRcdGNvbnN0IGludGVudFJlc29sdmVyID0gYXdhaXQgdGhpcy5sYXVuY2hBcHBXaXRoSW50ZW50KFxuXHRcdFx0XHRcdFx0dGFyZ2V0QXBwLFxuXHRcdFx0XHRcdFx0aW50ZW50LFxuXHRcdFx0XHRcdFx0dGFyZ2V0QXBwSWRlbnRpZmllci5pbnN0YW5jZUlkXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRyZXR1cm4gaW50ZW50UmVzb2x2ZXI7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3Qgc3BlY2lmaWVkQXBwSW5zdGFuY2VzID0gYXdhaXQgdGhpcy5mZGMzSGFuZGxlRmluZEluc3RhbmNlcyh0YXJnZXRBcHAsIGNsaWVudElkZW50aXR5KTtcblx0XHRcdFx0aWYgKHNwZWNpZmllZEFwcEluc3RhbmNlcy5sZW5ndGggPT09IDAgfHwgdGhpcy5jcmVhdGVOZXdJbnN0YW5jZSh0YXJnZXRBcHApKSB7XG5cdFx0XHRcdFx0Y29uc3QgaW50ZW50UmVzb2x2ZXIgPSBhd2FpdCB0aGlzLmxhdW5jaEFwcFdpdGhJbnRlbnQodGFyZ2V0QXBwLCBpbnRlbnQpO1xuXHRcdFx0XHRcdGlmIChpc0VtcHR5KGludGVudFJlc29sdmVyKSkge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFJlc29sdmVFcnJvci5JbnRlbnREZWxpdmVyeUZhaWxlZCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBpbnRlbnRSZXNvbHZlcjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IHN1cHBvcnRlZEludGVudCBvZiBzdXBwb3J0ZWRJbnRlbnRzKSB7XG5cdFx0XHRcdGNvbnN0IGFwcEZvckludGVudDogQXBwc0ZvckludGVudCA9IHtcblx0XHRcdFx0XHRhcHBzOiBbdGFyZ2V0QXBwXSxcblx0XHRcdFx0XHRpbnRlbnQ6IHsgbmFtZTogc3VwcG9ydGVkSW50ZW50Lm5hbWUsIGRpc3BsYXlOYW1lOiBzdXBwb3J0ZWRJbnRlbnQuZGlzcGxheU5hbWUgfVxuXHRcdFx0XHR9O1xuXHRcdFx0XHRpbnRlbnRzRm9yU2VsZWN0aW9uLnB1c2goYXBwRm9ySW50ZW50KTtcblx0XHRcdH1cblx0XHRcdGxldCB1c2VyU2VsZWN0aW9uOiBJbnRlbnRQaWNrZXJSZXNwb25zZTtcblx0XHRcdGlmIChpbnRlbnRzRm9yU2VsZWN0aW9uLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0IWlzU3RyaW5nVmFsdWUoaW50ZW50Lm5hbWUpICYmXG5cdFx0XHRcdFx0IWlzRW1wdHkoaW50ZW50c0ZvclNlbGVjdGlvblswXT8uaW50ZW50Py5uYW1lKSAmJlxuXHRcdFx0XHRcdCFpc0VtcHR5KGludGVudD8uY29udGV4dCkgJiZcblx0XHRcdFx0XHQhaXNFbXB0eShpbnRlbnQ/LmNvbnRleHQ/LnR5cGUpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKFxuXHRcdFx0XHRcdFx0YEEgcmVxdWVzdCB0byByYWlzZSBhbiBpbnRlbnQgd2FzIHBhc3NlZCBhbmQgdGhlIGludGVudCBuYW1lIHdhcyBub3QgcGFzc2VkIGJ1dCBhIGNvbnRleHQgd2FzICR7aW50ZW50Py5jb250ZXh0Py50eXBlfSB3aXRoIDEgbWF0Y2hpbmcgaW50ZW50LiBOYW1lOiAke2ludGVudHNGb3JTZWxlY3Rpb25bMF0/LmludGVudD8ubmFtZX0sICBEaXNwbGF5IE5hbWU6ICR7aW50ZW50c0ZvclNlbGVjdGlvblswXT8uaW50ZW50Py5kaXNwbGF5TmFtZX0uIFVwZGF0aW5nIGludGVudCBvYmplY3QuYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aW50ZW50Lm5hbWUgPSBpbnRlbnRzRm9yU2VsZWN0aW9uWzBdPy5pbnRlbnQ/Lm5hbWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0dXNlclNlbGVjdGlvbiA9IGF3YWl0IHRoaXMubGF1bmNoSW50ZW50UGlja2VyKHtcblx0XHRcdFx0XHRhcHBzOiBpbnRlbnRzRm9yU2VsZWN0aW9uWzBdLmFwcHMsXG5cdFx0XHRcdFx0aW50ZW50XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dXNlclNlbGVjdGlvbiA9IGF3YWl0IHRoaXMubGF1bmNoSW50ZW50UGlja2VyKHtcblx0XHRcdFx0XHRpbnRlbnQsXG5cdFx0XHRcdFx0aW50ZW50czogaW50ZW50c0ZvclNlbGVjdGlvblxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKCFpc1N0cmluZ1ZhbHVlKGludGVudC5uYW1lKSAmJiAhaXNFbXB0eSh1c2VyU2VsZWN0aW9uPy5pbnRlbnQ/Lm5hbWUpKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFx0XHRgQSByZXF1ZXN0IHRvIHJhaXNlIGFuIGludGVudCB3YXMgcGFzc2VkIGFuZCB0aGUgZm9sbG93aW5nIGludGVudCB3YXMgc2VsZWN0ZWQgKGZyb20gYSBzZWxlY3Rpb24gb2YgJHtpbnRlbnRzRm9yU2VsZWN0aW9uLmxlbmd0aH0pLiBOYW1lOiAke3VzZXJTZWxlY3Rpb24/LmludGVudD8ubmFtZX0sICBEaXNwbGF5IE5hbWU6ICR7dXNlclNlbGVjdGlvbj8uaW50ZW50Py5kaXNwbGF5TmFtZX0uIFVwZGF0aW5nIGludGVudCBvYmplY3QuYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aW50ZW50Lm5hbWUgPSB1c2VyU2VsZWN0aW9uPy5pbnRlbnQ/Lm5hbWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHRoaXMuaGFuZGxlSW50ZW50UGlja2VyU2VsZWN0aW9uKHVzZXJTZWxlY3Rpb24sIGludGVudCk7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogU2hhcGUgdGhlIGludGVudCByZXNvbHZlci5cblx0XHQgKiBAcGFyYW0gaW50ZW50UmVzb2x2ZXIgVGhlIGludGVudCByZXNvbHZlciB0byBzaGFwZS5cblx0XHQgKiBAcGFyYW0gdXNlc0FwcElkZW50aWZpZXIgU2hvdWxkIGl0IHVzZSB0aGUgYXBwIGlkZW50aWZpZXIuXG5cdFx0ICogQHJldHVybnMgVGhlIHNoYXBlZCBpbnRlbnQgcmVzb2x2ZXIuXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSBzaGFwZUludGVudFJlc29sdmVyKFxuXHRcdFx0aW50ZW50UmVzb2x2ZXI6IE9taXQ8SW50ZW50UmVzb2x1dGlvbiwgXCJnZXRSZXN1bHRcIj4sXG5cdFx0XHR1c2VzQXBwSWRlbnRpZmllcjogYm9vbGVhblxuXHRcdCk6IE9taXQ8SW50ZW50UmVzb2x1dGlvbiwgXCJnZXRSZXN1bHRcIj4gfCB7IHNvdXJjZTogc3RyaW5nOyB2ZXJzaW9uPzogc3RyaW5nIH0ge1xuXHRcdFx0aWYgKHVzZXNBcHBJZGVudGlmaWVyKSB7XG5cdFx0XHRcdHJldHVybiBpbnRlbnRSZXNvbHZlcjtcblx0XHRcdH1cblx0XHRcdHJldHVybiB7IHNvdXJjZTogaW50ZW50UmVzb2x2ZXIuc291cmNlLmFwcElkLCB2ZXJzaW9uOiBpbnRlbnRSZXNvbHZlci52ZXJzaW9uIH07XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogU2hvdWxkIHdlIHVzZSBhIHNpbmdsZSBpbnN0YW5jZSBvZiB0aGUgYXBwLlxuXHRcdCAqIEBwYXJhbSBhcHAgVGhlIGFwcCB0byBjaGVjay5cblx0XHQgKiBAcmV0dXJucyBUcnVlIGlmIHdlIHNob3VsZCB1c2UgYSBzaW5nbGUgaW5zdGFuY2UuXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSB1c2VTaW5nbGVJbnN0YW5jZShhcHA6IFBsYXRmb3JtQXBwKTogYm9vbGVhbiB7XG5cdFx0XHRyZXR1cm4gYXBwPy5pbnN0YW5jZU1vZGUgPT09IFwic2luZ2xlXCI7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogU2hvdWxkIHdlIGFsd2F5cyB1c2UgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGFwcC5cblx0XHQgKiBAcGFyYW0gYXBwIFRoZSBhcHAgdG8gY2hlY2suXG5cdFx0ICogQHJldHVybnMgVHJ1ZSBpZiB3ZSBzaG91bGQgYWx3YXlzIHVzZSBhIG5ldyBpbnN0YW5jZS5cblx0XHQgKi9cblx0XHRwcml2YXRlIGNyZWF0ZU5ld0luc3RhbmNlKGFwcDogUGxhdGZvcm1BcHApOiBib29sZWFuIHtcblx0XHRcdHJldHVybiBhcHA/Lmluc3RhbmNlTW9kZSA9PT0gXCJuZXdcIjtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBHZXQgdGhlIGZkYzMgdXNhZ2UgZnJvbSBhIHdpbmRvdy5cblx0XHQgKiBAcGFyYW0gaWQgVGhlIGlmIG9mIHRoZSB2aWV3IHRvIGdldCB0aGUgaW5mbyBmcm9tLlxuXHRcdCAqIEByZXR1cm5zIFRoZSBhcGkgbWV0YWRhdGEuXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSBhc3luYyBjYXB0dXJlV2luZG93QXBpVXNhZ2UoaWQ6IE9wZW5GaW4uQ2xpZW50SWRlbnRpdHkpOiBQcm9taXNlPEFwaU1ldGFkYXRhIHwgdW5kZWZpbmVkPiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB0YXJnZXQgPSBmaW4uV2luZG93LndyYXBTeW5jKGlkKTtcblx0XHRcdFx0Y29uc3Qgb3B0aW9ucyA9IGF3YWl0IHRhcmdldC5nZXRPcHRpb25zKCk7XG5cdFx0XHRcdGlmICghaXNFbXB0eShvcHRpb25zLmZkYzNJbnRlcm9wQXBpKSkge1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcImZkYzNcIixcblx0XHRcdFx0XHRcdHZlcnNpb246IG9wdGlvbnMuZmRjM0ludGVyb3BBcGlcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIHt9XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogR2V0IHRoZSBkYzMgdXNhZ2UgZnJvbSBhIHZpZXcuXG5cdFx0ICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgd2luZG93IHRvIGdldCB0aGUgaW5mbyBmcm9tLlxuXHRcdCAqIEByZXR1cm5zIFRoZSBhcGkgbWV0YWRhdGEuXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSBhc3luYyBjYXB0dXJlVmlld0FwaVVzYWdlKGlkOiBPcGVuRmluLkNsaWVudElkZW50aXR5KTogUHJvbWlzZTxBcGlNZXRhZGF0YSB8IHVuZGVmaW5lZD4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0ID0gZmluLlZpZXcud3JhcFN5bmMoaWQpO1xuXHRcdFx0XHRjb25zdCBvcHRpb25zID0gYXdhaXQgdGFyZ2V0LmdldE9wdGlvbnMoKTtcblx0XHRcdFx0aWYgKCFpc0VtcHR5KG9wdGlvbnMuZmRjM0ludGVyb3BBcGkpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdHR5cGU6IFwiZmRjM1wiLFxuXHRcdFx0XHRcdFx0dmVyc2lvbjogb3B0aW9ucy5mZGMzSW50ZXJvcEFwaVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2gge31cblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBDYXB0dXJlIHRoZSBBUEkgdmVyc2lvbi5cblx0XHQgKiBAcGFyYW0gaWQgVGhlIGNsaWVudCBpZGVudGl0eSB0byBjYXB0dXJlIGZyb20uXG5cdFx0ICogQHBhcmFtIHBheWxvYWQgVGhlIHBheWxvYWQuXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSBhc3luYyBjYXB0dXJlQXBpVmVyc2lvbihcblx0XHRcdGlkOiBPcGVuRmluLkNsaWVudElkZW50aXR5ICYgeyBjb25uZWN0aW9uVXJsPzogc3RyaW5nOyBlbnRpdHlUeXBlPzogc3RyaW5nIH0sXG5cdFx0XHRwYXlsb2FkPzogQ2FwdHVyZUFwaVBheWxvYWRcblx0XHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdGNvbnN0IGtleSA9IGAke2lkLnV1aWR9LSR7aWQubmFtZX1gO1xuXHRcdFx0bGV0IGFwaVZlcnNpb246IEFwaU1ldGFkYXRhIHwgdW5kZWZpbmVkO1xuXHRcdFx0aWYgKGlzRW1wdHkodGhpcy5fdHJhY2tlZENsaWVudENvbm5lY3Rpb25zW2tleV0pKSB7XG5cdFx0XHRcdGlmIChpZC51dWlkICE9PSBmaW4ubWUuaWRlbnRpdHkudXVpZCkge1xuXHRcdFx0XHRcdGNvbnN0IHBheWxvYWRBcGlWZXJzaW9uID0gcGF5bG9hZD8uYXBpVmVyc2lvbjtcblx0XHRcdFx0XHRpZiAoIWlzRW1wdHkocGF5bG9hZEFwaVZlcnNpb24pICYmICFpc0VtcHR5KHBheWxvYWRBcGlWZXJzaW9uPy50eXBlKSkge1xuXHRcdFx0XHRcdFx0dGhpcy5fdHJhY2tlZENsaWVudENvbm5lY3Rpb25zW2tleV0gPSBwYXlsb2FkQXBpVmVyc2lvbjtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKCFpc0VtcHR5KGlkLmNvbm5lY3Rpb25VcmwpKSB7XG5cdFx0XHRcdFx0XHQvLyBpZiB0aGV5IGhhdmVuJ3Qgc3BlY2lmaWVkIGFwaVZlcnNpb24gbWV0YSBkYXRhIGFuZCBpdCBpcyBleHRlcm5hbCBhbmQgaGFzIGEgdXJsIHRoZW4gd2Ugd2lsbCBhc3N1bWUgZmRjMyAyLjBcblx0XHRcdFx0XHRcdHRoaXMuX3RyYWNrZWRDbGllbnRDb25uZWN0aW9uc1trZXldID0geyB0eXBlOiBcImZkYzNcIiwgdmVyc2lvbjogXCIyLjBcIiB9O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyBpZiBhIG5hdGl2ZSBhcHAgaGFzIHNwZWNpZmllZCBhIHByZWZlcmVuY2UgdGhyb3VnaCBhcGlWZXJzaW9uIHRoZW4gd2UgYXNzdW1lIGludGVyb3Bcblx0XHRcdFx0XHRcdHRoaXMuX3RyYWNrZWRDbGllbnRDb25uZWN0aW9uc1trZXldID0geyB0eXBlOiBcImludGVyb3BcIiB9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gaWQuZW50aXR5VHlwZTtcblx0XHRcdFx0XHRpZiAoIWlzRW1wdHkoZW50aXR5VHlwZSkpIHtcblx0XHRcdFx0XHRcdHN3aXRjaCAoZW50aXR5VHlwZSkge1xuXHRcdFx0XHRcdFx0XHRjYXNlIFwid2luZG93XCI6IHtcblx0XHRcdFx0XHRcdFx0XHRhcGlWZXJzaW9uID0gYXdhaXQgdGhpcy5jYXB0dXJlV2luZG93QXBpVXNhZ2UoaWQpO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGNhc2UgXCJ2aWV3XCI6IHtcblx0XHRcdFx0XHRcdFx0XHRhcGlWZXJzaW9uID0gYXdhaXQgdGhpcy5jYXB0dXJlVmlld0FwaVVzYWdlKGlkKTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdFx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0XHRcdFx0XHRgV2UgY3VycmVudGx5IGRvIG5vdCBjaGVjayBmb3IgZW50aXR5IHR5cGVzIHRoYXQgYXJlIG5vdCB2aWV3cyBvciB3aW5kb3dzLiBFbnRpdHkgdHlwZTogJHtlbnRpdHlUeXBlfWBcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGFwaVZlcnNpb24gPSBhd2FpdCB0aGlzLmNhcHR1cmVWaWV3QXBpVXNhZ2UoaWQpO1xuXHRcdFx0XHRcdFx0aWYgKGlzRW1wdHkoYXBpVmVyc2lvbikpIHtcblx0XHRcdFx0XHRcdFx0Ly8gcGVyaGFwcyBpdCBpcyBhIHdpbmRvd1xuXHRcdFx0XHRcdFx0XHRhcGlWZXJzaW9uID0gYXdhaXQgdGhpcy5jYXB0dXJlV2luZG93QXBpVXNhZ2UoaWQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKCFpc0VtcHR5KGFwaVZlcnNpb24pKSB7XG5cdFx0XHRcdHRoaXMuX3RyYWNrZWRDbGllbnRDb25uZWN0aW9uc1trZXldID0gYXBpVmVyc2lvbjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBHZXQgdGhlIGFwaSB2ZXJzaW9uIGZvciB0aGUgaWRlbnRpdHkuXG5cdFx0ICogQHBhcmFtIGlkIFRoZSBpZGVudGl0eSB0byBnZXQgdGhlIGFwaSB2ZXJzaW9uIGZvci5cblx0XHQgKiBAcmV0dXJucyBUaGUgYXBpIG1ldGFkYXRhLlxuXHRcdCAqL1xuXHRcdHByaXZhdGUgZ2V0QXBpVmVyc2lvbihpZDogT3BlbkZpbi5JZGVudGl0eSk6IEFwaU1ldGFkYXRhIHtcblx0XHRcdGNvbnN0IGtleSA9IGAke2lkLnV1aWR9LSR7aWQubmFtZX1gO1xuXHRcdFx0Y29uc3QgYXBpVmVyc2lvbjogQXBpTWV0YWRhdGEgPSB0aGlzLl90cmFja2VkQ2xpZW50Q29ubmVjdGlvbnNba2V5XTtcblx0XHRcdHJldHVybiBhcGlWZXJzaW9uO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIFJlbW92ZSB0aGUgYXBpIHZlcnNpb24gZm9yIHRoZSBpZGVudGl0eS5cblx0XHQgKiBAcGFyYW0gaWQgVGhlIGlkZW50aXR5IHRvIHJlbW92ZSB0aGUgYXBpIHZlcnNpb24gZm9yLlxuXHRcdCAqL1xuXHRcdHByaXZhdGUgcmVtb3ZlQXBpVmVyc2lvbihpZDogT3BlbkZpbi5JZGVudGl0eSk6IHZvaWQge1xuXHRcdFx0Y29uc3Qga2V5ID0gYCR7aWQudXVpZH0tJHtpZC5uYW1lfWA7XG5cdFx0XHRkZWxldGUgdGhpcy5fdHJhY2tlZENsaWVudENvbm5lY3Rpb25zW2tleV07XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogR2V0IGEga2V5IHRoYXQgY2FuIGJlIHVzZWQgZm9yIGFuIGlkZW50aXR5IGFuZCBjbGllbnQuXG5cdFx0ICogQHBhcmFtIGlkZW50aXR5IFRoZSBpZGVudGl0eSB0byB1c2UgaW4gdGhlIGtleS5cblx0XHQgKiBAcGFyYW0gaW50ZW50TmFtZSBUaGUgaW50ZW50IHRvIHVzZSBpbiB0aGUga2V5XG5cdFx0ICogQHJldHVybnMgVGhlIGtleS5cblx0XHQgKi9cblx0XHRwcml2YXRlIGdldENsaWVudFJlYWR5S2V5KGlkZW50aXR5OiBPcGVuRmluLklkZW50aXR5LCBpbnRlbnROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdFx0cmV0dXJuIGAke2lkZW50aXR5LnV1aWR9LyR7aWRlbnRpdHkubmFtZX0vJHtpbnRlbnROYW1lfWA7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSGFuZGxlIGNsaWVudCByZWFkeSBldmVudC5cblx0XHQgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIGlkZW50aXR5IG9mIHRoZSBjbGllbnQuXG5cdFx0ICogQHBhcmFtIGludGVudE5hbWUgVGhlIGludGVudCBuYW1lLlxuXHRcdCAqIEBwYXJhbSB0aW1lb3V0IFRoZSB0aW1lb3V0IHRvIHdhaXQgZm9yIHRoZSBjbGllbnQuXG5cdFx0ICogQHJldHVybnMgVGhlIGluc3RhbmNlIGlkLlxuXHRcdCAqL1xuXHRcdHByaXZhdGUgYXN5bmMgb25DbGllbnRSZWFkeShcblx0XHRcdGlkZW50aXR5OiBPcGVuRmluLklkZW50aXR5LFxuXHRcdFx0aW50ZW50TmFtZTogc3RyaW5nLFxuXHRcdFx0dGltZW91dDogbnVtYmVyID0gNTAwMFxuXHRcdCk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHJlZ2lzdGVyZWRIYW5kbGVycyA9IHRoaXMuX3RyYWNrZWRJbnRlbnRIYW5kbGVyc1tpbnRlbnROYW1lXTtcblx0XHRcdFx0bGV0IGV4aXN0aW5nSW5zdGFuY2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRpZiAoIWlzRW1wdHkocmVnaXN0ZXJlZEhhbmRsZXJzKSkge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgaGFuZGxlciBvZiByZWdpc3RlcmVkSGFuZGxlcnMpIHtcblx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0aGFuZGxlci5jbGllbnRJZGVudGl0eS51dWlkID09PSBpZGVudGl0eS51dWlkICYmXG5cdFx0XHRcdFx0XHRcdGhhbmRsZXIuY2xpZW50SWRlbnRpdHkubmFtZSA9PT0gaWRlbnRpdHkubmFtZVxuXHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdGV4aXN0aW5nSW5zdGFuY2VJZCA9IGhhbmRsZXIuY2xpZW50SWRlbnRpdHkuZW5kcG9pbnRJZDtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghaXNFbXB0eShleGlzdGluZ0luc3RhbmNlSWQpKSB7XG5cdFx0XHRcdFx0cmVzb2x2ZShleGlzdGluZ0luc3RhbmNlSWQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGtleSA9IHRoaXMuZ2V0Q2xpZW50UmVhZHlLZXkoaWRlbnRpdHksIGludGVudE5hbWUpO1xuXHRcdFx0XHRjb25zdCB0aW1lcklkID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKCFpc0VtcHR5KHRoaXMuX2NsaWVudFJlYWR5UmVxdWVzdHNba2V5XSkpIHtcblx0XHRcdFx0XHRcdGRlbGV0ZSB0aGlzLl9jbGllbnRSZWFkeVJlcXVlc3RzW2tleV07XG5cdFx0XHRcdFx0XHRyZWplY3QoUmVzb2x2ZUVycm9yLkludGVudERlbGl2ZXJ5RmFpbGVkKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sIHRpbWVvdXQpO1xuXHRcdFx0XHR0aGlzLl9jbGllbnRSZWFkeVJlcXVlc3RzW2tleV0gPSAoaW5zdGFuY2VJZDogc3RyaW5nKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0Y2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuXHRcdFx0XHRcdC8vIGNsZWFyIHRoZSBjYWxsYmFjayBhc3luY2hyb25vdXNseVxuXHRcdFx0XHRcdGRlbGV0ZSB0aGlzLl9jbGllbnRSZWFkeVJlcXVlc3RzW2tleV07XG5cdFx0XHRcdFx0cmVzb2x2ZShpbnN0YW5jZUlkKTtcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEdldCBhIHByZXZpZXcgaW1hZ2UgZm9yIGEgd2luZG93L3ZpZXcuXG5cdFx0ICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IGlkZW50aXR5IHRvIGNhcHR1cmUuXG5cdFx0ICogQHBhcmFtIHRhcmdldC5jYXB0dXJlUGFnZSBUaGUgY2FwdHVyZSBwYWdlIG1ldGhvZCBvZiB0aGUgZW50aXR5LlxuXHRcdCAqIEBwYXJhbSB0YXJnZXQuaWRlbnRpdHkgVGhlIGlkZW50aXR5IG9mIHRoZSBlbnRpdHkgYmVpbmcgY2FwdHVyZWQuXG5cdFx0ICogQHJldHVybnMgVGhlIGNhcHR1cmVkIHByZXZpZXcgaW1hZ2UuXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSBhc3luYyBnZXRQcmV2aWV3SW1hZ2UodGFyZ2V0OiB7XG5cdFx0XHRjYXB0dXJlUGFnZTogKG9wdGlvbnM/OiBPcGVuRmluLkNhcHR1cmVQYWdlT3B0aW9ucykgPT4gUHJvbWlzZTxzdHJpbmc+O1xuXHRcdFx0aWRlbnRpdHk6IE9wZW5GaW4uSWRlbnRpdHk7XG5cdFx0fSk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBwcmV2aWV3ID0gYXdhaXQgdGFyZ2V0LmNhcHR1cmVQYWdlKHsgZm9ybWF0OiBcImpwZ1wiLCBxdWFsaXR5OiA4NSB9KTtcblx0XHRcdFx0aWYgKGlzU3RyaW5nVmFsdWUocHJldmlldykpIHtcblx0XHRcdFx0XHRyZXR1cm4gcHJldmlldztcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XHRcdGBFcnJvciB3aGlsZSB0cnlpbmcgdG8gY2FwdHVyZSBhIHByZXZpZXcgaW1hZ2Ugb2YgdGhlIHZpZXcvd2luZG93OiAke3RhcmdldC5pZGVudGl0eS5uYW1lfWAsXG5cdFx0XHRcdFx0ZXJyb3Jcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBHZXQgdGhlIHVucmVnaXN0ZXJlZCBhcHAgaW50ZW50IGJ5IGNvbnRleHQuXG5cdFx0ICogQHBhcmFtIHR5cGUgVGhlIGNvbnRleHQgdHlwZSB0byBnZXQuXG5cdFx0ICogQHBhcmFtIGNsaWVudElkZW50aXR5IFRoZSBjbGllbnQgaWRlbnRpdHkuXG5cdFx0ICogQHJldHVybnMgVGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGludGVudHMuXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSBhc3luYyBnZXRVbnJlZ2lzdGVyZWRBcHBJbnRlbnRCeUNvbnRleHQoXG5cdFx0XHR0eXBlOiBzdHJpbmcsXG5cdFx0XHRjbGllbnRJZGVudGl0eTogT3BlbkZpbi5DbGllbnRJZGVudGl0eVxuXHRcdCk6IFByb21pc2U8c3RyaW5nW10+IHtcblx0XHRcdGNvbnN0IGludGVudE5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdFx0Y29uc3Qgc3VwcG9ydGVkSW50ZW50TmFtZXM6IHN0cmluZ1tdID0gW107XG5cdFx0XHRpZiAoaXNFbXB0eSh0aGlzPy5fdW5yZWdpc3RlcmVkQXBwKSkge1xuXHRcdFx0XHRyZXR1cm4gaW50ZW50TmFtZXM7XG5cdFx0XHR9XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzPy5fdW5yZWdpc3RlcmVkQXBwPy5pbnRlbnRzKSkge1xuXHRcdFx0XHRmb3IgKGNvbnN0IGludGVudCBvZiB0aGlzLl91bnJlZ2lzdGVyZWRBcHAuaW50ZW50cykge1xuXHRcdFx0XHRcdGlmIChpbnRlbnQuY29udGV4dHMuaW5jbHVkZXModHlwZSkpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGludGVudE5hbWU6IHN0cmluZyA9IGludGVudC5uYW1lO1xuXHRcdFx0XHRcdFx0aW50ZW50TmFtZXMucHVzaChpbnRlbnROYW1lKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKGludGVudE5hbWVzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Ly8gbm93IHdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBpbnN0YW5jZXMgYXMgdGhpcyBhcHAgY2FuIG5vdCBiZSBsYXVuY2hlZCBhcyBpdCBpcyBhIHBsYWNlaG9sZGVyIGZvciB1bnJlZ2lzdGVyZWQgaW5zdGFuY2VzXG5cdFx0XHRcdGZvciAoY29uc3QgaW50ZW50TmFtZSBvZiBpbnRlbnROYW1lcykge1xuXHRcdFx0XHRcdGlmIChhd2FpdCB0aGlzLmNhbkFkZFVucmVnaXN0ZXJlZEFwcChjbGllbnRJZGVudGl0eSwgaW50ZW50TmFtZSkpIHtcblx0XHRcdFx0XHRcdHN1cHBvcnRlZEludGVudE5hbWVzLnB1c2goaW50ZW50TmFtZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyB0aGUgdW5yZWdpc3RlcmVkQXBwTWV0YSBkYXRhIGxpc3RzIHRoZSBzdXBwb3J0ZWQgaW50ZW50cyBidXQgd2Ugb25seSB3YW50IHRvIHJldHVybiBpbnRlbnRzIHRoYXQgaGF2ZSBhY3RpdmUgaW5zdGFuY2VzIHJlYWR5XG5cdFx0XHRyZXR1cm4gc3VwcG9ydGVkSW50ZW50TmFtZXM7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogQ2FuIHdlIGFkZCBhbiB1bnJlZ2lzdGVyZWQgYXBwLlxuXHRcdCAqIEBwYXJhbSBjbGllbnRJZGVudGl0eSBUaGUgY2xpZW50IGlkZW50aXR5LlxuXHRcdCAqIEBwYXJhbSBpbnRlbnROYW1lIFRoZSBpbnRlbnQgbmFtZS5cblx0XHQgKiBAcmV0dXJucyBUcnVlIGlmIHdlIGNhbiBhZGQgdGhlIGFwcC5cblx0XHQgKi9cblx0XHRwcml2YXRlIGFzeW5jIGNhbkFkZFVucmVnaXN0ZXJlZEFwcChcblx0XHRcdGNsaWVudElkZW50aXR5OiBPcGVuRmluLkNsaWVudElkZW50aXR5LFxuXHRcdFx0aW50ZW50TmFtZT86IHN0cmluZ1xuXHRcdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdFx0aWYgKGlzRW1wdHkodGhpcz8uX3VucmVnaXN0ZXJlZEFwcCkpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFxuXHRcdFx0XHQhaXNFbXB0eShpbnRlbnROYW1lKSAmJlxuXHRcdFx0XHR0aGlzLl91bnJlZ2lzdGVyZWRBcHAuaW50ZW50cz8uZmluZEluZGV4KChpbnRlbnQpID0+IGludGVudC5uYW1lID09PSBpbnRlbnROYW1lKSA9PT0gLTFcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBpbnN0YW5jZXMgPSBhd2FpdCB0aGlzLmZkYzNIYW5kbGVGaW5kSW5zdGFuY2VzKFxuXHRcdFx0XHR7IGFwcElkOiB0aGlzLl91bnJlZ2lzdGVyZWRBcHAuYXBwSWQgfSxcblx0XHRcdFx0Y2xpZW50SWRlbnRpdHlcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm4gaW5zdGFuY2VzLmxlbmd0aCA+IDA7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogR2V0IGFuIGFwcGxpY2F0aW9uIGlkZW50aXR5LlxuXHRcdCAqIEBwYXJhbSBtZXRhZGF0YSBUaGUgbWV0YWRhdGEgZm9yIHRoZSBhcHAuXG5cdFx0ICogQHJldHVybnMgVGhlIGFwcCBpZGVudGlmaWVyLlxuXHRcdCAqL1xuXHRcdHByaXZhdGUgZ2V0QXBwbGljYXRpb25JZGVudGl0eShcblx0XHRcdG1ldGFkYXRhOiBPcGVuRmluLkludGVudE1ldGFkYXRhPEludGVudFRhcmdldE1ldGFEYXRhPiB8IHVuZGVmaW5lZFxuXHRcdCk6IEFwcElkZW50aWZpZXIgfCB1bmRlZmluZWQge1xuXHRcdFx0Y29uc3QgdGFyZ2V0ID0gbWV0YWRhdGE/LnRhcmdldDtcblx0XHRcdGlmIChpc0VtcHR5KHRhcmdldCkpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGlzU3RyaW5nKHRhcmdldCkpIHtcblx0XHRcdFx0aWYgKHRhcmdldC50cmltKCkubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4geyBhcHBJZDogdGFyZ2V0IH07XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpc0VtcHR5KHRhcmdldC5hcHBJZCkpIHtcblx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHsgYXBwSWQ6IHRhcmdldC5hcHBJZCwgaW5zdGFuY2VJZDogdGFyZ2V0Lmluc3RhbmNlSWQgfTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBEb2VzIHRoZSBhcHAgdXNlIGFwcGxpY2F0aW9uIGlkZW50aXR5LlxuXHRcdCAqIEBwYXJhbSBjbGllbnRJZGVudGl0eSBUaGUgY2xpZW50IGFwcCB0byBjaGVjay5cblx0XHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBhcHAgdXNlcyBhcHBsaWNhdGlvbiBpZGVudGl0eS5cblx0XHQgKi9cblx0XHRwcml2YXRlIHVzZXNBcHBsaWNhdGlvbklkZW50aXR5KGNsaWVudElkZW50aXR5OiBPcGVuRmluLkNsaWVudElkZW50aXR5KTogYm9vbGVhbiB7XG5cdFx0XHRjb25zdCBhcGlNZXRhZGF0YSA9IHRoaXMuZ2V0QXBpVmVyc2lvbihjbGllbnRJZGVudGl0eSk7XG5cdFx0XHRpZiAoaXNFbXB0eShhcGlNZXRhZGF0YSkpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFwaU1ldGFkYXRhLnR5cGUgPT09IFwiZmRjM1wiICYmIGFwaU1ldGFkYXRhLnZlcnNpb24gPT09IFwiMi4wXCI7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogTG9va3VwIGFuIGFwcGxpY2F0aW9uIGlkZW50aXR5LlxuXHRcdCAqIEBwYXJhbSBjbGllbnRJZGVudGl0eSBUaGUgY2xpZW50IGlkZW50aXR5IHRvIHVzZS5cblx0XHQgKiBAcmV0dXJucyBUaGUgYXBwbGljYXRpb24gaWRlbnRpdHkuXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSBhc3luYyBsb29rdXBBcHBJZChjbGllbnRJZGVudGl0eTogT3BlbkZpbi5DbGllbnRJZGVudGl0eSk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG5cdFx0XHRjb25zdCBuYW1lUGFydHMgPSBjbGllbnRJZGVudGl0eS5uYW1lLnNwbGl0KFwiL1wiKTtcblx0XHRcdGxldCBhcHA6IFBsYXRmb3JtQXBwIHwgdW5kZWZpbmVkO1xuXG5cdFx0XHRpZiAobmFtZVBhcnRzLmxlbmd0aCA9PT0gMSB8fCBuYW1lUGFydHMubGVuZ3RoID09PSAyKSB7XG5cdFx0XHRcdGFwcCA9IGF3YWl0IGdldEFwcChuYW1lUGFydHNbMF0pO1xuXHRcdFx0fVxuXHRcdFx0aWYgKG5hbWVQYXJ0cy5sZW5ndGggPiAyKSB7XG5cdFx0XHRcdGFwcCA9IGF3YWl0IGdldEFwcChgJHtuYW1lUGFydHNbMF19LyR7bmFtZVBhcnRzWzFdfWApO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBhcHBOb3RGb3VuZCA9IGlzRW1wdHkoYXBwKTtcblxuXHRcdFx0aWYgKGFwcE5vdEZvdW5kICYmIGNsaWVudElkZW50aXR5LnV1aWQgIT09IGZpbi5tZS5pZGVudGl0eS51dWlkKSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFwiTG9va3VwIG1hZGUgYnkgYSBub24tcmVnaXN0ZXJlZCBhcHAgdGhhdCBpcyBvdXRzaWRlIG9mIHRoaXMgcGxhdGZvcm0uXCIsIGNsaWVudElkZW50aXR5KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoYXBwTm90Rm91bmQgJiYgaXNFbXB0eSh0aGlzLl91bnJlZ2lzdGVyZWRBcHApKSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdFwiTG9va3VwIG1hZGUgYnkgYSBub24tcmVnaXN0ZXJlZCBhcHAgdGhhdCBmYWxscyB1bmRlciB0aGlzIHBsYXRmb3JtLiBObyB1bnJlZ2lzdGVyZWQgcGxhY2Vob2xkZXIgYXBwIGlzIHNwZWNpZmllZC5cIixcblx0XHRcdFx0XHRjbGllbnRJZGVudGl0eVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmIChhcHBOb3RGb3VuZCkge1xuXHRcdFx0XHRhcHAgPSB0aGlzLl91bnJlZ2lzdGVyZWRBcHA7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiQXNzaWduZWQgdGhlIGZvbGxvd2luZyB1bnJlZ2lzdGVyZWQgYXBwIHRvIHJlcHJlc2VudCB0aGUgYXBwLlwiLCBhcHApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFwcD8uYXBwSWQ7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogUHJvY2VzcyBhIGNvbnRleHQuXG5cdFx0ICogQHBhcmFtIGNvbnRleHQgVGhlIGNvbnRleHQgdG8gcHJvY2Vzcy5cblx0XHQgKiBAcmV0dXJucyBUaGUgcHJvY2Vzc2VkIGNvbnRleHQuXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSBhc3luYyBwcm9jZXNzQ29udGV4dChjb250ZXh0OiBPcGVuRmluLkNvbnRleHQpOiBQcm9taXNlPE9wZW5GaW4uQ29udGV4dD4ge1xuXHRcdFx0Y29uc3QgZW5kcG9pbnRJZCA9IGBpbnRlcm9wYnJva2VyLnByb2Nlc3MuJHtjb250ZXh0LnR5cGV9YDtcblx0XHRcdGlmIChoYXNFbmRwb2ludChlbmRwb2ludElkKSkge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgUHJvY2Vzc2luZyBjb250ZXh0ICR7Y29udGV4dC50eXBlfSB3aXRoIGVuZHBvaW50ICR7ZW5kcG9pbnRJZH1gKTtcblx0XHRcdFx0Y29uc3QgcHJvY2Vzc2VkQ29udGV4dCA9IGF3YWl0IHJlcXVlc3RSZXNwb25zZTxDb250ZXh0VG9Qcm9jZXNzLCBQcm9jZXNzZWRDb250ZXh0PihlbmRwb2ludElkLCB7XG5cdFx0XHRcdFx0Y29udGV4dFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKHByb2Nlc3NlZENvbnRleHQ/LmNvbnRleHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gcHJvY2Vzc2VkQ29udGV4dD8uY29udGV4dDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGNvbnRleHQ7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG5ldyBJbnRlcm9wT3ZlcnJpZGUoKTtcbn1cbiIsImltcG9ydCB0eXBlIE9wZW5GaW4gZnJvbSBcIkBvcGVuZmluL2NvcmVcIjtcbmltcG9ydCB0eXBlIHsgQnJvd3NlclNuYXBzaG90V2luZG93LCBQYWdlLCBQYWdlTGF5b3V0LCBXb3Jrc3BhY2UgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgeyBpc0VtcHR5LCBvYmplY3RDbG9uZSB9IGZyb20gXCJ3b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci91dGlsc1wiO1xuXG4vKipcbiAqIEFsbCB0aGUgd29ya3NwYWNlIGtleXMuXG4gKi9cbnR5cGUgV29ya3NwYWNlS2V5cyA9IGtleW9mIFdvcmtzcGFjZTtcblxuLyoqXG4gKiBBbGwgdGhlIHdvcmtzcGFjZSBzbmFwc2hvdCBrZXlzLlxuICovXG50eXBlIFdvcmtzcGFjZVNuYXBzaG90S2V5cyA9IFwid2luZG93c1wiIHwgXCJzbmFwc2hvdERldGFpbHNcIiB8IFwiaW50ZXJvcFNuYXBzaG90RGV0YWlsc1wiO1xuXG4vKipcbiAqIEFsbCB0aGUgYnJvd3NlciB3aW5kb3cga2V5cy5cbiAqL1xudHlwZSBCcm93c2VyV2luZG93S2V5cyA9XG5cdHwga2V5b2YgQnJvd3NlclNuYXBzaG90V2luZG93XG5cdHwgXCJ0aXRsZVwiXG5cdHwgXCJjZW50ZXJcIlxuXHR8IFwidHJhbnNwYXJlbnRcIlxuXHR8IFwiYWx3YXlzT25Cb3R0b21cIlxuXHR8IFwiYmFja2dyb3VuZFRocm90dGxpbmdcIlxuXHR8IFwiZHJhZ2dhYmxlXCJcblx0fCBcInJlc2l6ZVwiXG5cdHwgXCJzcGVsbENoZWNrXCJcblx0fCBcImVuYWJsZUJlZm9yZVVubG9hZFwiO1xuXG4vKipcbiAqIEFsbCB0aGUgd29ya3NwYWNlIHBsYXRmb3JtIGtleXMuXG4gKi9cbnR5cGUgV29ya3NwYWNlUGxhdGZvcm1LZXlzID1cblx0fCBcInBhZ2VzXCJcblx0fCBcImZhdmljb25cIlxuXHR8IFwidGl0bGVcIlxuXHR8IFwibmV3VGFiVXJsXCJcblx0fCBcIm5ld1BhZ2VVcmxcIlxuXHR8IFwidG9vbGJhck9wdGlvbnNcIlxuXHR8IFwid2luZG93U3RhdGVCdXR0b25PcHRpb25zXCJcblx0fCBcImRpc2FibGVNdWx0aXBsZVBhZ2VzXCJcblx0fCBcImlzTG9ja2VkXCJcblx0fCBcInByZXZlbnRQYWdlRHJhZ0luXCJcblx0fCBcInByZXZlbnRQYWdlRHJhZ091dFwiXG5cdHwgXCJwcmV2ZW50UGFnZURyYWdcIlxuXHR8IFwicHJldmVudFBhZ2VDbG9zZVwiXG5cdHwgXCJfaW50ZXJuYWxEZWZlclNob3dPcHRpb25zXCI7XG5cbi8qKlxuICogQWxsIHRoZSBrZXlzIGZvciBwYWdlLlxuICovXG50eXBlIFBhZ2VLZXlzID1cblx0fCBcInBhZ2VJZFwiXG5cdHwgXCJ0aXRsZVwiXG5cdHwgXCJsYXlvdXRcIlxuXHR8IFwiaXNSZWFkT25seVwiXG5cdHwgXCJpc0FjdGl2ZVwiXG5cdHwgXCJwYW5lbHNcIlxuXHR8IFwiY3VzdG9tRGF0YVwiXG5cdHwgXCJoYXNVbnNhdmVkQ2hhbmdlc1wiO1xuXG4vKipcbiAqIEFsbCB0aGUga2V5cyBmb3IgcGFnZSBsYXlvdXQuXG4gKi9cbnR5cGUgUGFnZUxheW91dEtleXMgPVxuXHR8IFwic2V0dGluZ3NcIlxuXHR8IFwiZGltZW5zaW9uc1wiXG5cdHwgXCJsYWJlbHNcIlxuXHR8IFwiY29udGVudFwiXG5cdHwgXCJpc0Nsb3NhYmxlXCJcblx0fCBcInJlb3JkZXJFbmFibGVkXCJcblx0fCBcInRpdGxlXCJcblx0fCBcIm9wZW5Qb3BvdXRzXCJcblx0fCBcImxheW91dERldGFpbHNcIlxuXHR8IFwibWF4aW1pc2VkSXRlbUlkXCI7XG5cbi8qKlxuICogQWxsIHRoZSBrZXlzIGZvciBwYWdlIGxheW91dCBzZXR0aW5ncy5cbiAqL1xudHlwZSBQYWdlTGF5b3V0U2V0dGluZ3NLZXlzID1cblx0fCBcImNvbnN0cmFpbkRyYWdUb0NvbnRhaW5lclwiXG5cdHwgXCJjb25zdHJhaW5EcmFnVG9IZWFkZXJzXCJcblx0fCBcInNob3dQb3BvdXRJY29uXCJcblx0fCBcInNob3dNYXhpbWlzZUljb25cIlxuXHR8IFwic2hvd0Nsb3NlSWNvblwiXG5cdHwgXCJoYXNIZWFkZXJzXCJcblx0fCBcInJlb3JkZXJFbmFibGVkXCJcblx0fCBcInByZXZlbnREcmFnT3V0XCJcblx0fCBcInByZXZlbnREcmFnSW5cIlxuXHR8IFwicG9wb3V0V2hvbGVTdGFja1wiXG5cdHwgXCJzZWxlY3Rpb25FbmFibGVkXCJcblx0fCBcImJsb2NrZWRQb3BvdXRzVGhyb3dFcnJvclwiXG5cdHwgXCJjbG9zZVBvcG91dHNPblVubG9hZFwiXG5cdHwgXCJyZXNwb25zaXZlTW9kZVwiXG5cdHwgXCJ0YWJPdmVybGFwQWxsb3dhbmNlXCJcblx0fCBcInJlb3JkZXJPblRhYk1lbnVDbGlja1wiXG5cdHwgXCJ0YWJDb250cm9sT2Zmc2V0XCJcblx0fCBcIm5ld1RhYkJ1dHRvblwiO1xuXG4vKipcbiAqIEFsbCB0aGUgY29tcG9uZW50IHR5cGVzLlxuICovXG50eXBlIENvbXBvbmVudFR5cGUgPVxuXHR8IE9wZW5GaW4uTGF5b3V0SXRlbUNvbmZpZ1xuXHR8IE9wZW5GaW4uTGF5b3V0Um93XG5cdHwgT3BlbkZpbi5MYXlvdXRDb2x1bW5cblx0fCBPcGVuRmluLkxheW91dENvbXBvbmVudDtcblxuLyoqXG4gKiBBbGwgdGhlIGNvbXBvbmVudCBrZXlzXG4gKi9cbnR5cGUgQ29tcG9uZW50S2V5ID1cblx0fCBrZXlvZiBPcGVuRmluLkxheW91dEl0ZW1Db25maWdcblx0fCBrZXlvZiBPcGVuRmluLkxheW91dFJvd1xuXHR8IGtleW9mIE9wZW5GaW4uTGF5b3V0Q29sdW1uXG5cdHwga2V5b2YgT3BlbkZpbi5MYXlvdXRDb21wb25lbnRcblx0fCBcInJlb3JkZXJFbmFibGVkXCJcblx0fCBcImFjdGl2ZUl0ZW1JbmRleFwiO1xuXG4vKipcbiAqIEFsbCB0aGUga2V5cyBmb3IgdGhlIGNvbXBvbmVudCBzdGF0ZS5cbiAqL1xudHlwZSBDb21wb25lbnRTdGF0ZUtleXMgPVxuXHR8IGtleW9mIE9wZW5GaW4uVmlld0NyZWF0aW9uT3B0aW9uc1xuXHR8IFwiYmFja2dyb3VuZFRocm90dGxpbmdcIlxuXHR8IFwidXVpZFwiXG5cdHwgXCJpbml0aWFsVXJsXCJcblx0fCBcImNvbXBvbmVudE5hbWVcIjtcblxuLyoqXG4gKiBNYXAgdGhlIHBsYXRmb3JtIHdvcmtzcGFjZSBkYXRhIHRvIHN0b3JhZ2UgdmVyc2lvbi5cbiAqIEBwYXJhbSB3b3Jrc3BhY2UgVGhlIHdvcmtzcGFjZSB0byBtYXAuXG4gKiBAcmV0dXJucyBUaGUgc3RvcmFnZSB3b3Jrc3BhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBQbGF0Zm9ybVdvcmtzcGFjZVRvU3RvcmFnZSh3b3Jrc3BhY2U6IFdvcmtzcGFjZSB8IHVuZGVmaW5lZCk6IFdvcmtzcGFjZSB7XG5cdGlmIChpc0VtcHR5KHdvcmtzcGFjZSkpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXHRcdHJldHVybiB1bmRlZmluZWQgYXMgYW55IGFzIFdvcmtzcGFjZTtcblx0fVxuXG5cdGNvbnN0IGNsb25lOiBXb3Jrc3BhY2UgPSBvYmplY3RDbG9uZSh3b3Jrc3BhY2UpO1xuXG5cdGZvciAoY29uc3Qgd2luIG9mIGNsb25lLnNuYXBzaG90LndpbmRvd3MpIHtcblx0XHRwbGF0Zm9ybVdvcmtzcGFjZVdpbmRvd1RvU3RvcmFnZSh3aW4pO1xuXHR9XG5cblx0Ly8gUmVtb3ZlIHBsYXRmb3JtIGRlcGVuZGVudCBpbmZvcm1hdGlvblxuXHRyZW1vdmVQcm9wPFdvcmtzcGFjZSwgV29ya3NwYWNlS2V5cz4oY2xvbmUsIFwibWV0YWRhdGFcIik7XG5cblx0Y29uc3Qgd29ya3NwYWNlU25hcHNob3REZWZhdWx0czoge1xuXHRcdHByb3BOYW1lOiBXb3Jrc3BhY2VTbmFwc2hvdEtleXM7XG5cdFx0ZGVmYXVsdFZhbHVlOiB1bmtub3duO1xuXHR9W10gPSBbXG5cdFx0e1xuXHRcdFx0cHJvcE5hbWU6IFwiaW50ZXJvcFNuYXBzaG90RGV0YWlsc1wiLFxuXHRcdFx0ZGVmYXVsdFZhbHVlOiB7XG5cdFx0XHRcdGNvbnRleHRHcm91cFN0YXRlczoge1xuXHRcdFx0XHRcdGdyZWVuOiB7fSxcblx0XHRcdFx0XHRwdXJwbGU6IHt9LFxuXHRcdFx0XHRcdG9yYW5nZToge30sXG5cdFx0XHRcdFx0cmVkOiB7fSxcblx0XHRcdFx0XHRwaW5rOiB7fSxcblx0XHRcdFx0XHR5ZWxsb3c6IHt9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gU2tpcCB0byBtYWtlIHBsYXRmb3JtIGRlcGVuZGVudCBhbmQgcmVtb3ZlIGJlbG93XG5cdFx0Ly8geyBwcm9wTmFtZTogXCJzbmFwc2hvdERldGFpbHNcIiwgZGVmYXVsdFZhbHVlOiBcIlwiIH0sXG5cdF07XG5cblx0Zm9yIChjb25zdCB3b3Jrc3BhY2VTbmFwc2hvdERlZmF1bHQgb2Ygd29ya3NwYWNlU25hcHNob3REZWZhdWx0cykge1xuXHRcdHJlbW92ZVByb3BJZk5vbkRlZmF1bHQ8dW5rbm93biwgV29ya3NwYWNlU25hcHNob3RLZXlzPihcblx0XHRcdGNsb25lLnNuYXBzaG90LFxuXHRcdFx0d29ya3NwYWNlU25hcHNob3REZWZhdWx0LnByb3BOYW1lLFxuXHRcdFx0d29ya3NwYWNlU25hcHNob3REZWZhdWx0LmRlZmF1bHRWYWx1ZVxuXHRcdCk7XG5cdH1cblxuXHQvLyByZW1vdmUgcGxhdGZvcm0gZGVwZW5kZW50IHByb3BzXG5cdHJlbW92ZVByb3A8dW5rbm93biwgV29ya3NwYWNlU25hcHNob3RLZXlzPihjbG9uZS5zbmFwc2hvdCwgXCJzbmFwc2hvdERldGFpbHNcIik7XG5cblx0cmV0dXJuIGNsb25lO1xufVxuXG4vKipcbiAqIE1hcCB0aGUgcGxhdGZvcm0gcGFnZSBkYXRhIHRvIHN0b3JhZ2UgdmVyc2lvbi5cbiAqIEBwYXJhbSBwYWdlIFRoZSBwYWdlIHRvIG1hcC5cbiAqIEByZXR1cm5zIFRoZSBtYXBwZWQgcGFnZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFBsYXRmb3JtUGFnZVRvU3RvcmFnZShwYWdlOiBQYWdlIHwgdW5kZWZpbmVkKTogUGFnZSB7XG5cdGlmIChpc0VtcHR5KHBhZ2UpKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcblx0XHRyZXR1cm4gdW5kZWZpbmVkIGFzIGFueSBhcyBQYWdlO1xuXHR9XG5cblx0Y29uc3QgY2xvbmUgPSBvYmplY3RDbG9uZShwYWdlKTtcblx0cGxhdGZvcm1QYWdlVG9TdG9yYWdlKGNsb25lKTtcblx0cmV0dXJuIGNsb25lO1xufVxuXG4vKipcbiAqIE1hcCB0aGUgcGxhdGZvcm0gd2luZG93IGRhdGEgdG8gc3RvcmFnZS5cbiAqIEBwYXJhbSB3aW5kb3cgVGhlIHdpbmRvdyB0byBtYXAuXG4gKi9cbmZ1bmN0aW9uIHBsYXRmb3JtV29ya3NwYWNlV2luZG93VG9TdG9yYWdlKHdpbmRvdzogQnJvd3NlclNuYXBzaG90V2luZG93KTogdm9pZCB7XG5cdGNvbnN0IHdpbmRvd0RlZmF1bHRzOiB7XG5cdFx0cHJvcE5hbWU6IEJyb3dzZXJXaW5kb3dLZXlzO1xuXHRcdGRlZmF1bHRWYWx1ZTogdW5rbm93bjtcblx0fVtdID0gW1xuXHRcdHsgcHJvcE5hbWU6IFwidXVpZFwiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSxcblx0XHR7IHByb3BOYW1lOiBcInVybFwiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSxcblx0XHR7IHByb3BOYW1lOiBcInRpdGxlXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiYWx3YXlzT25Ub3BcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiZnJhbWVcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiaWNvblwiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSxcblx0XHR7IHByb3BOYW1lOiBcInhcIiwgZGVmYXVsdFZhbHVlOiAtMSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwieVwiLCBkZWZhdWx0VmFsdWU6IC0xIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJ3aWR0aFwiLCBkZWZhdWx0VmFsdWU6IC0xIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJoZWlnaHRcIiwgZGVmYXVsdFZhbHVlOiAtMSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiY2VudGVyXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHR7IHByb3BOYW1lOiBcImRlZmF1bHRMZWZ0XCIsIGRlZmF1bHRWYWx1ZTogMCB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiZGVmYXVsdFRvcFwiLCBkZWZhdWx0VmFsdWU6IDAgfSxcblx0XHR7IHByb3BOYW1lOiBcImRlZmF1bHRXaWR0aFwiLCBkZWZhdWx0VmFsdWU6IC0xIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJkZWZhdWx0SGVpZ2h0XCIsIGRlZmF1bHRWYWx1ZTogLTEgfSxcblx0XHR7IHByb3BOYW1lOiBcIm1pbldpZHRoXCIsIGRlZmF1bHRWYWx1ZTogMjAwIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJtaW5IZWlnaHRcIiwgZGVmYXVsdFZhbHVlOiAyMDAgfSxcblx0XHR7IHByb3BOYW1lOiBcIm1heFdpZHRoXCIsIGRlZmF1bHRWYWx1ZTogLTEgfSxcblx0XHR7IHByb3BOYW1lOiBcIm1heEhlaWdodFwiLCBkZWZhdWx0VmFsdWU6IC0xIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJtaW5pbWl6YWJsZVwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSxcblx0XHR7IHByb3BOYW1lOiBcIm1heGltaXphYmxlXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwic3RhdGVcIiwgZGVmYXVsdFZhbHVlOiBcIm5vcm1hbFwiIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJvcGFjaXR5XCIsIGRlZmF1bHRWYWx1ZTogMSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwidHJhbnNwYXJlbnRcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdHtcblx0XHRcdHByb3BOYW1lOiBcInJlc2l6ZVJlZ2lvblwiLFxuXHRcdFx0ZGVmYXVsdFZhbHVlOiB7XG5cdFx0XHRcdGJvdHRvbVJpZ2h0Q29ybmVyOiAyMCxcblx0XHRcdFx0c2l6ZTogNyxcblx0XHRcdFx0c2lkZXM6IHtcblx0XHRcdFx0XHR0b3A6IHRydWUsXG5cdFx0XHRcdFx0cmlnaHQ6IHRydWUsXG5cdFx0XHRcdFx0Ym90dG9tOiB0cnVlLFxuXHRcdFx0XHRcdGxlZnQ6IHRydWVcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0cHJvcE5hbWU6IFwiYWNjZWxlcmF0b3JcIixcblx0XHRcdGRlZmF1bHRWYWx1ZToge1xuXHRcdFx0XHRkZXZ0b29sczogZmFsc2UsXG5cdFx0XHRcdHpvb206IGZhbHNlLFxuXHRcdFx0XHRyZWxvYWQ6IGZhbHNlLFxuXHRcdFx0XHRyZWxvYWRJZ25vcmluZ0NhY2hlOiBmYWxzZVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0cHJvcE5hbWU6IFwiYWxwaGFNYXNrXCIsXG5cdFx0XHRkZWZhdWx0VmFsdWU6IHtcblx0XHRcdFx0Ymx1ZTogLTEsXG5cdFx0XHRcdGdyZWVuOiAtMSxcblx0XHRcdFx0cmVkOiAtMVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0eyBwcm9wTmFtZTogXCJhbHdheXNPbkJvdHRvbVwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0e1xuXHRcdFx0cHJvcE5hbWU6IFwiYXBpXCIsXG5cdFx0XHRkZWZhdWx0VmFsdWU6IHtcblx0XHRcdFx0aWZyYW1lOiB7XG5cdFx0XHRcdFx0Y3Jvc3NPcmlnaW5JbmplY3Rpb246IGZhbHNlLFxuXHRcdFx0XHRcdHNhbWVPcmlnaW5JbmplY3Rpb246IHRydWUsXG5cdFx0XHRcdFx0ZW5hYmxlRGVwcmVjYXRlZFNoYXJlZE5hbWU6IGZhbHNlXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXHRcdHsgcHJvcE5hbWU6IFwiYXBwbGljYXRpb25JY29uXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiYXNwZWN0UmF0aW9cIiwgZGVmYXVsdFZhbHVlOiAwIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJhdXRvU2hvd1wiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJiYWNrZ3JvdW5kVGhyb3R0bGluZ1wiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSxcblx0XHR7XG5cdFx0XHRwcm9wTmFtZTogXCJjb250ZW50TmF2aWdhdGlvblwiLFxuXHRcdFx0ZGVmYXVsdFZhbHVlOiB7XG5cdFx0XHRcdHdoaXRlbGlzdDogW1wiPGFsbF91cmxzPlwiXSxcblx0XHRcdFx0YmxhY2tsaXN0OiBbXVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0cHJvcE5hbWU6IFwiY29udGVudFJlZGlyZWN0XCIsXG5cdFx0XHRkZWZhdWx0VmFsdWU6IHtcblx0XHRcdFx0d2hpdGVsaXN0OiBbXCI8YWxsX3VybHM+XCJdLFxuXHRcdFx0XHRibGFja2xpc3Q6IFtdXG5cdFx0XHR9XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRwcm9wTmFtZTogXCJjb250ZW50Q3JlYXRpb25cIixcblx0XHRcdGRlZmF1bHRWYWx1ZToge1xuXHRcdFx0XHRydWxlczogW11cblx0XHRcdH1cblx0XHR9LFxuXHRcdHtcblx0XHRcdHByb3BOYW1lOiBcImNvbnRleHRNZW51U2V0dGluZ3NcIixcblx0XHRcdGRlZmF1bHRWYWx1ZToge1xuXHRcdFx0XHRlbmFibGU6IHRydWUsXG5cdFx0XHRcdGRldnRvb2xzOiB0cnVlLFxuXHRcdFx0XHRyZWxvYWQ6IGZhbHNlXG5cdFx0XHR9XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRwcm9wTmFtZTogXCJjb3JuZXJSb3VuZGluZ1wiLFxuXHRcdFx0ZGVmYXVsdFZhbHVlOiB7XG5cdFx0XHRcdGhlaWdodDogMCxcblx0XHRcdFx0d2lkdGg6IDBcblx0XHRcdH1cblx0XHR9LFxuXHRcdHsgcHJvcE5hbWU6IFwiY2xvc2VPbkxhc3RWaWV3UmVtb3ZlZFwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJkcmFnZ2FibGVcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiaW5jbHVkZUluU25hcHNob3RzXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwicmVzaXphYmxlXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwicmVzaXplXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwic2F2ZVdpbmRvd1N0YXRlXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHR7IHByb3BOYW1lOiBcInNoYWRvd1wiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJzaG93VGFza2Jhckljb25cIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJzaG93QmFja2dyb3VuZEltYWdlc1wiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJzbWFsbFdpbmRvd1wiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJzcGVsbENoZWNrXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHR7IHByb3BOYW1lOiBcInRhc2tiYXJJY29uXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdHsgcHJvcE5hbWU6IFwid2FpdEZvclBhZ2VMb2FkXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHR7IHByb3BOYW1lOiBcImJhY2tncm91bmRDb2xvclwiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSxcblx0XHR7IHByb3BOYW1lOiBcImZkYzNJbnRlcm9wQXBpXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiZW5hYmxlQmVmb3JlVW5sb2FkXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHQvLyBTa2lwIHRvIG1ha2UgcGxhdGZvcm0gZGVwZW5kZW50IGFuZCByZW1vdmUgYmVsb3dcblx0XHQvLyB7IHByb3BOYW1lOiBcImhvdGtleXNcIiwgZGVmYXVsdFZhbHVlOiBbXSB9LFxuXHRcdC8vIHsgcHJvcE5hbWU6IFwidGFza2Jhckljb25Hcm91cFwiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSxcblx0XHR7XG5cdFx0XHRwcm9wTmFtZTogXCJ2aWV3VmlzaWJpbGl0eVwiLFxuXHRcdFx0ZGVmYXVsdFZhbHVlOiB7XG5cdFx0XHRcdHNob3dWaWV3c09uU3BsaXR0ZXJEcmFnOiB7XG5cdFx0XHRcdFx0ZW5hYmxlZDogdHJ1ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzaG93Vmlld3NPbldpbmRvd1Jlc2l6ZToge1xuXHRcdFx0XHRcdGVuYWJsZWQ6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0c2hvd1ZpZXdzT25UYWJEcmFnOiB7XG5cdFx0XHRcdFx0ZW5hYmxlZDogdHJ1ZVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHR7IHByb3BOYW1lOiBcImF1dG9wbGF5UG9saWN5XCIsIGRlZmF1bHRWYWx1ZTogXCJuby11c2VyLWdlc3R1cmUtcmVxdWlyZWRcIiB9LFxuXHRcdHsgcHJvcE5hbWU6IFwicGVybWlzc2lvbnNcIiwgZGVmYXVsdFZhbHVlOiB7fSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiY29udGV4dE1lbnVcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0e1xuXHRcdFx0cHJvcE5hbWU6IFwiY29udGV4dE1lbnVPcHRpb25zXCIsXG5cdFx0XHRkZWZhdWx0VmFsdWU6IHtcblx0XHRcdFx0dGVtcGxhdGU6IFtdLFxuXHRcdFx0XHRlbmFibGVkOiBmYWxzZVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0eyBwcm9wTmFtZTogXCJpZ25vcmVTYXZlZFdpbmRvd1N0YXRlXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwicHJlbG9hZFNjcmlwdHNcIiwgZGVmYXVsdFZhbHVlOiBbXSB9XG5cdF07XG5cblx0Zm9yIChjb25zdCB3aW5kb3dEZWZhdWx0IG9mIHdpbmRvd0RlZmF1bHRzKSB7XG5cdFx0cmVtb3ZlUHJvcElmTm9uRGVmYXVsdDxCcm93c2VyU25hcHNob3RXaW5kb3csIEJyb3dzZXJXaW5kb3dLZXlzPihcblx0XHRcdHdpbmRvdyxcblx0XHRcdHdpbmRvd0RlZmF1bHQucHJvcE5hbWUsXG5cdFx0XHR3aW5kb3dEZWZhdWx0LmRlZmF1bHRWYWx1ZVxuXHRcdCk7XG5cdH1cblxuXHQvLyByZW1vdmUgcGxhdGZvcm0gZGVwZW5kZW50IHByb3BzXG5cdHJlbW92ZVByb3A8QnJvd3NlclNuYXBzaG90V2luZG93LCBCcm93c2VyV2luZG93S2V5cz4od2luZG93LCBcImhvdGtleXNcIik7XG5cdHJlbW92ZVByb3A8QnJvd3NlclNuYXBzaG90V2luZG93LCBCcm93c2VyV2luZG93S2V5cz4od2luZG93LCBcInRhc2tiYXJJY29uR3JvdXBcIik7XG5cdHJlbW92ZVByb3A8QnJvd3NlclNuYXBzaG90V2luZG93LCBCcm93c2VyV2luZG93S2V5cz4od2luZG93LCBcImV4cGVyaW1lbnRhbFwiKTtcblxuXHRpZiAod2luZG93LndvcmtzcGFjZVBsYXRmb3JtKSB7XG5cdFx0Ly8gSWYgdGhpcyBpcyBhIHdvcmtzcGFjZSBwbGF0Zm9ybSB0aGVuIHJlbW92ZSB0aGUgbGF5b3V0IHByb3AgZnJvbSB0aGUgd2luZG93XG5cdFx0Ly8gdG8gYXZvaWQgZHVwbGljYXRpb25cblx0XHRyZW1vdmVQcm9wPEJyb3dzZXJTbmFwc2hvdFdpbmRvdywgQnJvd3NlcldpbmRvd0tleXM+KHdpbmRvdywgXCJsYXlvdXRcIik7XG5cblx0XHRjb25zdCB3b3Jrc3BhY2VQbGF0Zm9ybURlZmF1bHRzOiB7XG5cdFx0XHRwcm9wTmFtZTogV29ya3NwYWNlUGxhdGZvcm1LZXlzO1xuXHRcdFx0ZGVmYXVsdFZhbHVlOiB1bmtub3duO1xuXHRcdH1bXSA9IFtcblx0XHRcdHsgcHJvcE5hbWU6IFwiZmF2aWNvblwiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwidGl0bGVcIiwgZGVmYXVsdFZhbHVlOiBcIlwiIH0sXG5cdFx0XHQvLyBTa2lwIHRvIG1ha2UgcGxhdGZvcm0gZGVwZW5kZW50IGFuZCByZW1vdmUgYmVsb3dcblx0XHRcdC8vIHsgcHJvcE5hbWU6IFwibmV3VGFiVXJsXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdFx0Ly8geyBwcm9wTmFtZTogXCJuZXdQYWdlVXJsXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdFx0Ly8geyBwcm9wTmFtZTogXCJ0b29sYmFyT3B0aW9uc1wiLCBkZWZhdWx0VmFsdWU6IHsgfSB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJ3aW5kb3dTdGF0ZUJ1dHRvbk9wdGlvbnNcIiwgZGVmYXVsdFZhbHVlOiB1bmRlZmluZWQgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwiZGlzYWJsZU11bHRpcGxlUGFnZXNcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJpc0xvY2tlZFwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0XHR7IHByb3BOYW1lOiBcInByZXZlbnRQYWdlRHJhZ0luXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwicHJldmVudFBhZ2VEcmFnT3V0XCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwicHJldmVudFBhZ2VEcmFnXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwicHJldmVudFBhZ2VDbG9zZVwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH1cblx0XHRdO1xuXG5cdFx0Zm9yIChjb25zdCB3b3Jrc3BhY2VQbGF0Zm9ybURlZmF1bHQgb2Ygd29ya3NwYWNlUGxhdGZvcm1EZWZhdWx0cykge1xuXHRcdFx0cmVtb3ZlUHJvcElmTm9uRGVmYXVsdDx1bmtub3duLCBXb3Jrc3BhY2VQbGF0Zm9ybUtleXM+KFxuXHRcdFx0XHR3aW5kb3cud29ya3NwYWNlUGxhdGZvcm0sXG5cdFx0XHRcdHdvcmtzcGFjZVBsYXRmb3JtRGVmYXVsdC5wcm9wTmFtZSxcblx0XHRcdFx0d29ya3NwYWNlUGxhdGZvcm1EZWZhdWx0LmRlZmF1bHRWYWx1ZVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHQvLyByZW1vdmUgcGxhdGZvcm0gZGVwZW5kZW50IHByb3BzXG5cdFx0cmVtb3ZlUHJvcDx1bmtub3duLCBXb3Jrc3BhY2VQbGF0Zm9ybUtleXM+KHdpbmRvdy53b3Jrc3BhY2VQbGF0Zm9ybSwgXCJuZXdUYWJVcmxcIik7XG5cdFx0cmVtb3ZlUHJvcDx1bmtub3duLCBXb3Jrc3BhY2VQbGF0Zm9ybUtleXM+KHdpbmRvdy53b3Jrc3BhY2VQbGF0Zm9ybSwgXCJuZXdQYWdlVXJsXCIpO1xuXHRcdHJlbW92ZVByb3A8dW5rbm93biwgV29ya3NwYWNlUGxhdGZvcm1LZXlzPih3aW5kb3cud29ya3NwYWNlUGxhdGZvcm0sIFwidG9vbGJhck9wdGlvbnNcIik7XG5cdFx0cmVtb3ZlUHJvcDx1bmtub3duLCBXb3Jrc3BhY2VQbGF0Zm9ybUtleXM+KHdpbmRvdy53b3Jrc3BhY2VQbGF0Zm9ybSwgXCJfaW50ZXJuYWxEZWZlclNob3dPcHRpb25zXCIpO1xuXG5cdFx0Zm9yIChjb25zdCBwYWdlIG9mIHdpbmRvdy53b3Jrc3BhY2VQbGF0Zm9ybS5wYWdlcykge1xuXHRcdFx0cGxhdGZvcm1QYWdlVG9TdG9yYWdlKHBhZ2UpO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIE1hcCB0aGUgcGxhdGZvcm0gcGFnZSBkYXRhIHRvIHN0b3JhZ2UuXG4gKiBAcGFyYW0gcGFnZSBUaGUgcGFnZSB0byBtYXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwbGF0Zm9ybVBhZ2VUb1N0b3JhZ2UocGFnZTogUGFnZSk6IHZvaWQge1xuXHRjb25zdCBwYWdlRGVmYXVsdHM6IHtcblx0XHRwcm9wTmFtZTogUGFnZUtleXM7XG5cdFx0ZGVmYXVsdFZhbHVlOiB1bmtub3duO1xuXHR9W10gPSBbXG5cdFx0eyBwcm9wTmFtZTogXCJpc0FjdGl2ZVwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJpc1JlYWRPbmx5XCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHR7IHByb3BOYW1lOiBcImhhc1Vuc2F2ZWRDaGFuZ2VzXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHR7IHByb3BOYW1lOiBcInBhbmVsc1wiLCBkZWZhdWx0VmFsdWU6IFtdIH1cblx0XTtcblxuXHRmb3IgKGNvbnN0IHBhZ2VEZWZhdWx0IG9mIHBhZ2VEZWZhdWx0cykge1xuXHRcdHJlbW92ZVByb3BJZk5vbkRlZmF1bHQ8dW5rbm93biwgUGFnZUtleXM+KHBhZ2UsIHBhZ2VEZWZhdWx0LnByb3BOYW1lLCBwYWdlRGVmYXVsdC5kZWZhdWx0VmFsdWUpO1xuXHR9XG5cblx0cGxhdGZvcm1QYWdlTGF5b3V0VG9TdG9yYWdlKHBhZ2UubGF5b3V0KTtcbn1cblxuLyoqXG4gKiBNYXAgdGhlIHBhZ2UgbGF5b3V0IHRvIHN0b3JhZ2UuXG4gKiBAcGFyYW0gcGFnZUxheW91dCBUaGUgcGFnZSBsYXlvdXQgdG8gbWFwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGxhdGZvcm1QYWdlTGF5b3V0VG9TdG9yYWdlKHBhZ2VMYXlvdXQ6IFBhZ2VMYXlvdXQpOiB2b2lkIHtcblx0Y29uc3QgcGFnZUxheW91dERlZmF1bHRzOiB7XG5cdFx0cHJvcE5hbWU6IFBhZ2VMYXlvdXRLZXlzO1xuXHRcdGRlZmF1bHRWYWx1ZTogdW5rbm93bjtcblx0fVtdID0gW1xuXHRcdHtcblx0XHRcdHByb3BOYW1lOiBcImRpbWVuc2lvbnNcIixcblx0XHRcdGRlZmF1bHRWYWx1ZToge1xuXHRcdFx0XHRib3JkZXJXaWR0aDogMyxcblx0XHRcdFx0Ym9yZGVyR3JhYldpZHRoOiAxNSxcblx0XHRcdFx0bWluSXRlbUhlaWdodDogMTAsXG5cdFx0XHRcdG1pbkl0ZW1XaWR0aDogMTAsXG5cdFx0XHRcdGhlYWRlckhlaWdodDogMzAsXG5cdFx0XHRcdGRyYWdQcm94eVdpZHRoOiAzMDAsXG5cdFx0XHRcdGRyYWdQcm94eUhlaWdodDogMjAwXG5cdFx0XHR9XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRwcm9wTmFtZTogXCJsYWJlbHNcIixcblx0XHRcdGRlZmF1bHRWYWx1ZToge1xuXHRcdFx0XHRjbG9zZTogXCJjbG9zZVwiLFxuXHRcdFx0XHRtYXhpbWlzZTogXCJtYXhpbWlzZVwiLFxuXHRcdFx0XHRtaW5pbWlzZTogXCJtaW5pbWlzZVwiLFxuXHRcdFx0XHRwb3BvdXQ6IFwib3BlbiBpbiBuZXcgd2luZG93XCIsXG5cdFx0XHRcdHBvcGluOiBcInBvcCBpblwiLFxuXHRcdFx0XHR0YWJEcm9wZG93bjogXCJhZGRpdGlvbmFsIHRhYnNcIlxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0eyBwcm9wTmFtZTogXCJpc0Nsb3NhYmxlXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwicmVvcmRlckVuYWJsZWRcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJ0aXRsZVwiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSxcblx0XHR7IHByb3BOYW1lOiBcIm9wZW5Qb3BvdXRzXCIsIGRlZmF1bHRWYWx1ZTogW10gfSxcblx0XHR7IHByb3BOYW1lOiBcIm1heGltaXNlZEl0ZW1JZFwiLCBkZWZhdWx0VmFsdWU6IG51bGwgfVxuXHRcdC8vIFNraXAgdG8gbWFrZSBwbGF0Zm9ybSBkZXBlbmRlbnQgYW5kIHJlbW92ZSBiZWxvd1xuXHRcdC8vIHsgcHJvcE5hbWU6IFwibGF5b3V0RGV0YWlsc1wiLCBkZWZhdWx0VmFsdWU6IHsgfSB9XG5cdF07XG5cblx0Zm9yIChjb25zdCBwYWdlTGF5b3V0RGVmYXVsdCBvZiBwYWdlTGF5b3V0RGVmYXVsdHMpIHtcblx0XHRyZW1vdmVQcm9wSWZOb25EZWZhdWx0PHVua25vd24sIFBhZ2VMYXlvdXRLZXlzPihcblx0XHRcdHBhZ2VMYXlvdXQsXG5cdFx0XHRwYWdlTGF5b3V0RGVmYXVsdC5wcm9wTmFtZSxcblx0XHRcdHBhZ2VMYXlvdXREZWZhdWx0LmRlZmF1bHRWYWx1ZVxuXHRcdCk7XG5cdH1cblxuXHQvLyBSZW1vdmUgUGxhdGZvcm0gZGVwZW5kZW50IHByb3BzXG5cdHJlbW92ZVByb3A8dW5rbm93biwgUGFnZUxheW91dEtleXM+KHBhZ2VMYXlvdXQsIFwibGF5b3V0RGV0YWlsc1wiKTtcblxuXHRpZiAocGFnZUxheW91dC5zZXR0aW5ncykge1xuXHRcdGNvbnN0IHBhZ2VTZXR0aW5nc0RlZmF1bHRzOiB7XG5cdFx0XHRwcm9wTmFtZTogUGFnZUxheW91dFNldHRpbmdzS2V5cztcblx0XHRcdGRlZmF1bHRWYWx1ZTogdW5rbm93bjtcblx0XHR9W10gPSBbXG5cdFx0XHR7IHByb3BOYW1lOiBcImhhc0hlYWRlcnNcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0XHR7IHByb3BOYW1lOiBcInJlb3JkZXJFbmFibGVkXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJzZWxlY3Rpb25FbmFibGVkXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwicG9wb3V0V2hvbGVTdGFja1wiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0XHR7IHByb3BOYW1lOiBcImJsb2NrZWRQb3BvdXRzVGhyb3dFcnJvclwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwiY2xvc2VQb3BvdXRzT25VbmxvYWRcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0XHR7IHByb3BOYW1lOiBcInNob3dQb3BvdXRJY29uXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwic2hvd01heGltaXNlSWNvblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0XHR7IHByb3BOYW1lOiBcInNob3dDbG9zZUljb25cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJyZXNwb25zaXZlTW9kZVwiLCBkZWZhdWx0VmFsdWU6IFwib25sb2FkXCIgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwidGFiT3ZlcmxhcEFsbG93YW5jZVwiLCBkZWZhdWx0VmFsdWU6IDAgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwicmVvcmRlck9uVGFiTWVudUNsaWNrXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJ0YWJDb250cm9sT2Zmc2V0XCIsIGRlZmF1bHRWYWx1ZTogMTAgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwicHJldmVudERyYWdPdXRcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJwcmV2ZW50RHJhZ0luXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwiY29uc3RyYWluRHJhZ1RvQ29udGFpbmVyXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJjb25zdHJhaW5EcmFnVG9IZWFkZXJzXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfVxuXHRcdFx0Ly8gU2tpcCB0byBtYWtlIHBsYXRmb3JtIGRlcGVuZGVudCBhbmQgcmVtb3ZlIGJlbG93XG5cdFx0XHQvLyB7IHByb3BOYW1lOiBcIm5ld1RhYkJ1dHRvblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH1cblx0XHRdO1xuXG5cdFx0Zm9yIChjb25zdCBwYWdlU2V0dGluZ3NEZWZhdWx0IG9mIHBhZ2VTZXR0aW5nc0RlZmF1bHRzKSB7XG5cdFx0XHRyZW1vdmVQcm9wSWZOb25EZWZhdWx0PHVua25vd24sIFBhZ2VMYXlvdXRTZXR0aW5nc0tleXM+KFxuXHRcdFx0XHRwYWdlTGF5b3V0LnNldHRpbmdzLFxuXHRcdFx0XHRwYWdlU2V0dGluZ3NEZWZhdWx0LnByb3BOYW1lLFxuXHRcdFx0XHRwYWdlU2V0dGluZ3NEZWZhdWx0LmRlZmF1bHRWYWx1ZVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgUGxhdGZvcm0gZGVwZW5kZW50IHByb3BzXG5cdFx0cmVtb3ZlUHJvcDx1bmtub3duLCBQYWdlTGF5b3V0U2V0dGluZ3NLZXlzPihwYWdlTGF5b3V0LnNldHRpbmdzLCBcIm5ld1RhYkJ1dHRvblwiKTtcblxuXHRcdGlmIChPYmplY3Qua2V5cyhwYWdlTGF5b3V0LnNldHRpbmdzKS5sZW5ndGggPT09IDApIHtcblx0XHRcdGRlbGV0ZSBwYWdlTGF5b3V0LnNldHRpbmdzO1xuXHRcdH1cblx0fVxuXG5cdGlmIChwYWdlTGF5b3V0LmNvbnRlbnQpIHtcblx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBwYWdlTGF5b3V0LmNvbnRlbnQpIHtcblx0XHRcdHBsYXRmb3JtTGF5b3V0Q29tcG9uZW50VG9TdG9yYWdlKGNvbXBvbmVudCk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogTWFwIHRoZSBwbGF0Zm9ybSBsYXlvdXQgY29udGVudCBkYXRhIHRvIHN0b3JhZ2UuXG4gKiBAcGFyYW0gY29tcG9uZW50IFRoZSBsYXlvdXQgY29udGVudCB0byBtYXAuXG4gKi9cbmZ1bmN0aW9uIHBsYXRmb3JtTGF5b3V0Q29tcG9uZW50VG9TdG9yYWdlKGNvbXBvbmVudDogQ29tcG9uZW50VHlwZSk6IHZvaWQge1xuXHRjb25zdCBjb21wb25lbnREZWZhdWx0czoge1xuXHRcdHByb3BOYW1lOiBDb21wb25lbnRLZXk7XG5cdFx0ZGVmYXVsdFZhbHVlOiB1bmtub3duO1xuXHR9W10gPSBbXG5cdFx0eyBwcm9wTmFtZTogXCJ0aXRsZVwiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSxcblx0XHR7IHByb3BOYW1lOiBcIndpZHRoXCIsIGRlZmF1bHRWYWx1ZTogMCB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiaGVpZ2h0XCIsIGRlZmF1bHRWYWx1ZTogMCB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiY29tcG9uZW50TmFtZVwiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSxcblx0XHR7IHByb3BOYW1lOiBcImlzQ2xvc2FibGVcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJyZW9yZGVyRW5hYmxlZFwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSxcblx0XHR7IHByb3BOYW1lOiBcImFjdGl2ZUl0ZW1JbmRleFwiLCBkZWZhdWx0VmFsdWU6IDAgfVxuXHRdO1xuXG5cdGZvciAoY29uc3QgY29tcG9uZW50RGVmYXVsdCBvZiBjb21wb25lbnREZWZhdWx0cykge1xuXHRcdHJlbW92ZVByb3BJZk5vbkRlZmF1bHQ8Q29tcG9uZW50VHlwZSwgQ29tcG9uZW50S2V5Pihcblx0XHRcdGNvbXBvbmVudCxcblx0XHRcdGNvbXBvbmVudERlZmF1bHQucHJvcE5hbWUsXG5cdFx0XHRjb21wb25lbnREZWZhdWx0LmRlZmF1bHRWYWx1ZVxuXHRcdCk7XG5cdH1cblxuXHRpZiAoXCJjb21wb25lbnRTdGF0ZVwiIGluIGNvbXBvbmVudCkge1xuXHRcdGNvbnN0IGNvbXBvbmVudFN0YXRlOiBQYXJ0aWFsPE9wZW5GaW4uVmlld0NyZWF0aW9uT3B0aW9ucz4gfCB1bmRlZmluZWQgPSBjb21wb25lbnQuY29tcG9uZW50U3RhdGU7XG5cblx0XHRpZiAoY29tcG9uZW50U3RhdGUpIHtcblx0XHRcdGNvbnN0IGNvbXBvbmVudFN0YXRlRGVmYXVsdHM6IHsgcHJvcE5hbWU6IENvbXBvbmVudFN0YXRlS2V5czsgZGVmYXVsdFZhbHVlOiB1bmtub3duIH1bXSA9IFtcblx0XHRcdFx0eyBwcm9wTmFtZTogXCJuYW1lXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcInVybFwiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSxcblx0XHRcdFx0eyBwcm9wTmFtZTogXCJ1dWlkXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcImNvbXBvbmVudE5hbWVcIiwgZGVmYXVsdFZhbHVlOiBcInZpZXdcIiB9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcImluaXRpYWxVcmxcIiwgZGVmYXVsdFZhbHVlOiBcIlwiIH0sXG5cdFx0XHRcdHsgcHJvcE5hbWU6IFwicHJvY2Vzc0FmZmluaXR5XCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcImlzQ2xvc2FibGVcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0XHRcdHsgcHJvcE5hbWU6IFwiYm91bmRzXCIsIGRlZmF1bHRWYWx1ZTogeyB4OiAxLCB5OiAxLCB3aWR0aDogMCwgaGVpZ2h0OiAwIH0gfSxcblx0XHRcdFx0eyBwcm9wTmFtZTogXCJkZXRhY2hPbkNsb3NlXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcImlzQ2xvc2FibGVcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0XHRcdHsgcHJvcE5hbWU6IFwicHJldmVudERyYWdPdXRcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcImFjY2VsZXJhdG9yXCIsIGRlZmF1bHRWYWx1ZTogeyB6b29tOiB0cnVlIH0gfSxcblx0XHRcdFx0eyBwcm9wTmFtZTogXCJ6b29tTGV2ZWxcIiwgZGVmYXVsdFZhbHVlOiAwIH0sXG5cdFx0XHRcdHsgcHJvcE5hbWU6IFwicGVybWlzc2lvbnNcIiwgZGVmYXVsdFZhbHVlOiB7fSB9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcImNvbnRleHRNZW51XCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0cHJvcE5hbWU6IFwiY29udGV4dE1lbnVPcHRpb25zXCIsXG5cdFx0XHRcdFx0ZGVmYXVsdFZhbHVlOiB7XG5cdFx0XHRcdFx0XHRlbmFibGVkOiB0cnVlLFxuXHRcdFx0XHRcdFx0dGVtcGxhdGU6IFtcblx0XHRcdFx0XHRcdFx0XCJzcGVsbENoZWNrXCIsXG5cdFx0XHRcdFx0XHRcdFwic2VwYXJhdG9yXCIsXG5cdFx0XHRcdFx0XHRcdFwicHJpbnRcIixcblx0XHRcdFx0XHRcdFx0XCJzZXBhcmF0b3JcIixcblx0XHRcdFx0XHRcdFx0XCJjdXRcIixcblx0XHRcdFx0XHRcdFx0XCJjb3B5XCIsXG5cdFx0XHRcdFx0XHRcdFwicGFzdGVcIixcblx0XHRcdFx0XHRcdFx0XCJ1bmRvXCIsXG5cdFx0XHRcdFx0XHRcdFwicmVkb1wiLFxuXHRcdFx0XHRcdFx0XHRcInNlbGVjdEFsbFwiLFxuXHRcdFx0XHRcdFx0XHRcImluc3BlY3RcIixcblx0XHRcdFx0XHRcdFx0XCJyZWxvYWRcIlxuXHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0eyBwcm9wTmFtZTogXCJwcmVsb2FkU2NyaXB0c1wiLCBkZWZhdWx0VmFsdWU6IFtdIH0sXG5cdFx0XHRcdC8vIFNraXAgdG8gbWFrZSBwbGF0Zm9ybSBkZXBlbmRlbnQgYW5kIHJlbW92ZSBiZWxvd1xuXHRcdFx0XHQvLyB7IHByb3BOYW1lOiBcImhvdGtleXNcIiwgZGVmYXVsdFZhbHVlOiBbXSB9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcImVuYWJsZUJlZm9yZVVubG9hZFwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0XHRcdHsgcHJvcE5hbWU6IFwiYmFja2dyb3VuZFRocm90dGxpbmdcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRwcm9wTmFtZTogXCJhdXRvUmVzaXplXCIsXG5cdFx0XHRcdFx0ZGVmYXVsdFZhbHVlOiB7XG5cdFx0XHRcdFx0XHR3aWR0aDogZmFsc2UsXG5cdFx0XHRcdFx0XHRoZWlnaHQ6IGZhbHNlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcInpvb21MZXZlbFwiLCBkZWZhdWx0VmFsdWU6IDAgfSxcblx0XHRcdFx0eyBwcm9wTmFtZTogXCJmZGMzSW50ZXJvcEFwaVwiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSxcblx0XHRcdFx0eyBwcm9wTmFtZTogXCJpbnRlcm9wXCIsIGRlZmF1bHRWYWx1ZToge30gfSxcblx0XHRcdFx0eyBwcm9wTmFtZTogXCJjdXN0b21EYXRhXCIsIGRlZmF1bHRWYWx1ZToge30gfSxcblx0XHRcdFx0eyBwcm9wTmFtZTogXCJjb250ZW50TmF2aWdhdGlvblwiLCBkZWZhdWx0VmFsdWU6IHt9IH1cblx0XHRcdF07XG5cblx0XHRcdGZvciAoY29uc3QgY29tcG9uZW50U3RhdGVEZWZhdWx0IG9mIGNvbXBvbmVudFN0YXRlRGVmYXVsdHMpIHtcblx0XHRcdFx0cmVtb3ZlUHJvcElmTm9uRGVmYXVsdDxPcGVuRmluLlZpZXdDcmVhdGlvbk9wdGlvbnMsIENvbXBvbmVudFN0YXRlS2V5cz4oXG5cdFx0XHRcdFx0Y29tcG9uZW50U3RhdGUsXG5cdFx0XHRcdFx0Y29tcG9uZW50U3RhdGVEZWZhdWx0LnByb3BOYW1lLFxuXHRcdFx0XHRcdGNvbXBvbmVudFN0YXRlRGVmYXVsdC5kZWZhdWx0VmFsdWVcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gcmVtb3ZlIHBsYXRmb3JtIGRlcGVuZGVudCBwcm9wc1xuXHRcdFx0cmVtb3ZlUHJvcDxPcGVuRmluLlZpZXdDcmVhdGlvbk9wdGlvbnMsIENvbXBvbmVudFN0YXRlS2V5cz4oY29tcG9uZW50U3RhdGUsIFwiaG90a2V5c1wiKTtcblx0XHR9XG5cdH1cblxuXHRpZiAoY29tcG9uZW50LmNvbnRlbnQpIHtcblx0XHRmb3IgKGNvbnN0IGNvbXAgb2YgY29tcG9uZW50LmNvbnRlbnQpIHtcblx0XHRcdHBsYXRmb3JtTGF5b3V0Q29tcG9uZW50VG9TdG9yYWdlKGNvbXApO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIFJlbW92ZSBhIHByb3BlcnR5IGZvciBhbiBvYmplY3QgYnV0IGlmIGlzIGRpZmZlcmVudCBmcm9tIGRlZmF1bHQuXG4gKiBAcGFyYW0gb2JqIFRoZSBvYmplY3QgdG8gdXBkYXRlLlxuICogQHBhcmFtIHByb3BOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBjaGVjay5cbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlUHJvcElmTm9uRGVmYXVsdDxULCBLIGV4dGVuZHMga2V5b2YgVCB8IHN0cmluZz4oXG5cdG9iajogUGFydGlhbDxUPixcblx0cHJvcE5hbWU6IEssXG5cdGRlZmF1bHRWYWx1ZTogdW5rbm93blxuKTogdm9pZCB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5cdGlmIChwcm9wTmFtZSBpbiBvYmogJiYgSlNPTi5zdHJpbmdpZnkoKG9iaiBhcyBhbnkpW3Byb3BOYW1lXSkgPT09IEpTT04uc3RyaW5naWZ5KGRlZmF1bHRWYWx1ZSkpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXHRcdGRlbGV0ZSAob2JqIGFzIGFueSlbcHJvcE5hbWVdO1xuXHR9XG59XG5cbi8qKlxuICogUmVtb3ZlIGEgcHJvcGVydHkgZm9yIGFuIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byByZW1vdmUgZnJvbS5cbiAqIEBwYXJhbSBwcm9wTmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gY29weS5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlUHJvcDxULCBLIGV4dGVuZHMga2V5b2YgVCB8IHN0cmluZz4ob2JqOiBQYXJ0aWFsPFQ+LCBwcm9wTmFtZTogSyk6IHZvaWQge1xuXHRpZiAocHJvcE5hbWUgaW4gb2JqKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcblx0XHRkZWxldGUgKG9iaiBhcyBhbnkpW3Byb3BOYW1lXTtcblx0fVxufVxuIiwiaW1wb3J0IHR5cGUgT3BlbkZpbiBmcm9tIFwiQG9wZW5maW4vY29yZVwiO1xuaW1wb3J0IHtcblx0Z2V0Q3VycmVudFN5bmMsXG5cdHR5cGUgQW5hbHl0aWNzRXZlbnQsXG5cdHR5cGUgQ29sb3JTY2hlbWVPcHRpb25UeXBlLFxuXHR0eXBlIENyZWF0ZVNhdmVkUGFnZVJlcXVlc3QsXG5cdHR5cGUgQ3JlYXRlU2F2ZWRXb3Jrc3BhY2VSZXF1ZXN0LFxuXHR0eXBlIE9wZW5HbG9iYWxDb250ZXh0TWVudVBheWxvYWQsXG5cdHR5cGUgT3BlblBhZ2VUYWJDb250ZXh0TWVudVBheWxvYWQsXG5cdHR5cGUgT3BlblZpZXdUYWJDb250ZXh0TWVudVBheWxvYWQsXG5cdHR5cGUgUGFnZSxcblx0dHlwZSBVcGRhdGVTYXZlZFBhZ2VSZXF1ZXN0LFxuXHR0eXBlIFVwZGF0ZVNhdmVkV29ya3NwYWNlUmVxdWVzdCxcblx0dHlwZSBXb3Jrc3BhY2UsXG5cdHR5cGUgV29ya3NwYWNlUGxhdGZvcm1Qcm92aWRlclxufSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgKiBhcyBhbmFseXRpY3NQcm92aWRlciBmcm9tIFwiLi4vYW5hbHl0aWNzXCI7XG5pbXBvcnQgeyBnZXRUb29sYmFyQnV0dG9ucywgdXBkYXRlQnJvd3NlcldpbmRvd0J1dHRvbnNDb2xvclNjaGVtZSB9IGZyb20gXCIuLi9idXR0b25zXCI7XG5pbXBvcnQgKiBhcyBlbmRwb2ludFByb3ZpZGVyIGZyb20gXCIuLi9lbmRwb2ludFwiO1xuaW1wb3J0IHsgZmlyZUxpZmVjeWNsZUV2ZW50IH0gZnJvbSBcIi4uL2xpZmVjeWNsZVwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4uL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHsgZ2V0R2xvYmFsTWVudSwgZ2V0UGFnZU1lbnUsIGdldFZpZXdNZW51IH0gZnJvbSBcIi4uL21lbnVcIjtcbmltcG9ydCB7IGdldFNldHRpbmdzIH0gZnJvbSBcIi4uL3NldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IFBsYXRmb3JtQW5hbHl0aWNzRXZlbnQgfSBmcm9tIFwiLi4vc2hhcGVzL2FuYWx5dGljcy1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgQ2FzY2FkaW5nV2luZG93T2Zmc2V0U3RyYXRlZ3kgfSBmcm9tIFwiLi4vc2hhcGVzL2Jyb3dzZXItc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdFBhZ2VDaGFuZ2VkTGlmZWN5Y2xlUGF5bG9hZCxcblx0V29ya3NwYWNlQ2hhbmdlZExpZmVjeWNsZVBheWxvYWRcbn0gZnJvbSBcIi4uL3NoYXBlcy9saWZlY3ljbGUtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEVuZHBvaW50UGFnZUdldFJlcXVlc3QsXG5cdEVuZHBvaW50UGFnZUdldFJlc3BvbnNlLFxuXHRFbmRwb2ludFBhZ2VMaXN0UmVxdWVzdCxcblx0RW5kcG9pbnRQYWdlTGlzdFJlc3BvbnNlLFxuXHRFbmRwb2ludFBhZ2VSZW1vdmVSZXF1ZXN0LFxuXHRFbmRwb2ludFBhZ2VTZXRSZXF1ZXN0LFxuXHRFbmRwb2ludFdvcmtzcGFjZUdldFJlcXVlc3QsXG5cdEVuZHBvaW50V29ya3NwYWNlR2V0UmVzcG9uc2UsXG5cdEVuZHBvaW50V29ya3NwYWNlTGlzdFJlcXVlc3QsXG5cdEVuZHBvaW50V29ya3NwYWNlTGlzdFJlc3BvbnNlLFxuXHRFbmRwb2ludFdvcmtzcGFjZVJlbW92ZVJlcXVlc3QsXG5cdEVuZHBvaW50V29ya3NwYWNlU2V0UmVxdWVzdCxcblx0UGxhdGZvcm1Qcm92aWRlck9wdGlvbnNcbn0gZnJvbSBcIi4uL3NoYXBlcy9wbGF0Zm9ybS1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgVmVyc2lvbkluZm8gfSBmcm9tIFwiLi4vc2hhcGVzL3ZlcnNpb24tc2hhcGVzXCI7XG5pbXBvcnQgeyBhcHBseUNsaWVudFNuYXBzaG90LCBkZWNvcmF0ZVNuYXBzaG90IH0gZnJvbSBcIi4uL3NuYXBzaG90LXNvdXJjZVwiO1xuaW1wb3J0IHsgc2V0Q3VycmVudENvbG9yU2NoZW1lTW9kZSB9IGZyb20gXCIuLi90aGVtZXNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IGdldEFsbFZpc2libGVXaW5kb3dzLCBnZXRQYWdlQm91bmRzIH0gZnJvbSBcIi4vYnJvd3NlclwiO1xuaW1wb3J0IHsgY2xvc2Vkb3duIGFzIGNsb3NlZG93blBsYXRmb3JtIH0gZnJvbSBcIi4vcGxhdGZvcm1cIjtcbmltcG9ydCB7IG1hcFBsYXRmb3JtUGFnZVRvU3RvcmFnZSwgbWFwUGxhdGZvcm1Xb3Jrc3BhY2VUb1N0b3JhZ2UgfSBmcm9tIFwiLi9wbGF0Zm9ybS1tYXBwZXJcIjtcblxuY29uc3QgV09SS1NQQUNFX0VORFBPSU5UX0lEX0xJU1QgPSBcIndvcmtzcGFjZS1saXN0XCI7XG5jb25zdCBXT1JLU1BBQ0VfRU5EUE9JTlRfSURfR0VUID0gXCJ3b3Jrc3BhY2UtZ2V0XCI7XG5jb25zdCBXT1JLU1BBQ0VfRU5EUE9JTlRfSURfU0VUID0gXCJ3b3Jrc3BhY2Utc2V0XCI7XG5jb25zdCBXT1JLU1BBQ0VfRU5EUE9JTlRfSURfUkVNT1ZFID0gXCJ3b3Jrc3BhY2UtcmVtb3ZlXCI7XG5cbmNvbnN0IFBBR0VfRU5EUE9JTlRfSURfTElTVCA9IFwicGFnZS1saXN0XCI7XG5jb25zdCBQQUdFX0VORFBPSU5UX0lEX0dFVCA9IFwicGFnZS1nZXRcIjtcbmNvbnN0IFBBR0VfRU5EUE9JTlRfSURfUkVNT1ZFID0gXCJwYWdlLXJlbW92ZVwiO1xuY29uc3QgUEFHRV9FTkRQT0lOVF9JRF9TRVQgPSBcInBhZ2Utc2V0XCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIlBsYXRmb3JtT3ZlcnJpZGVcIik7XG5cbmxldCB3aW5kb3dEZWZhdWx0TGVmdDogbnVtYmVyIHwgdW5kZWZpbmVkO1xubGV0IHdpbmRvd0RlZmF1bHRUb3A6IG51bWJlciB8IHVuZGVmaW5lZDtcbmxldCB3aW5kb3dQb3NpdGlvbmluZ1N0cmF0ZWd5OiBDYXNjYWRpbmdXaW5kb3dPZmZzZXRTdHJhdGVneSB8IHVuZGVmaW5lZDtcbmxldCBkaXNhYmxlU3RvcmFnZU1hcHBpbmc6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogT3ZlcnJpZGUgbWV0aG9kcyBpbiB0aGUgcGxhdGZvcm0uXG4gKiBAcGFyYW0gV29ya3NwYWNlUGxhdGZvcm1Qcm92aWRlciBUaGUgd29ya3NwYWNlIHBsYXRmb3JtIGNsYXNzIHRvIGV4dGVuZC5cbiAqIEBwYXJhbSBwbGF0Zm9ybVByb3ZpZGVyU2V0dGluZ3MgVGhlIHNldHRpbmdzIGZvciB0aGUgcGxhdGZvcm0gcHJvdmlkZXIuXG4gKiBAcGFyYW0gdmVyc2lvbkluZm8gVGhlIGFwcCB2ZXJzaW9uIGluZm8uXG4gKiBAcmV0dXJucyBUaGUgb3ZlcnJpZGRlbiBjbGFzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG92ZXJyaWRlQ2FsbGJhY2soXG5cdFdvcmtzcGFjZVBsYXRmb3JtUHJvdmlkZXI6IE9wZW5GaW4uQ29uc3RydWN0b3I8V29ya3NwYWNlUGxhdGZvcm1Qcm92aWRlcj4sXG5cdHBsYXRmb3JtUHJvdmlkZXJTZXR0aW5nczogUGxhdGZvcm1Qcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQsXG5cdHZlcnNpb25JbmZvOiBWZXJzaW9uSW5mb1xuKTogV29ya3NwYWNlUGxhdGZvcm1Qcm92aWRlciB7XG5cdGRpc2FibGVTdG9yYWdlTWFwcGluZyA9IHBsYXRmb3JtUHJvdmlkZXJTZXR0aW5ncz8uZGlzYWJsZVN0b3JhZ2VNYXBwaW5nID8/IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGUgYSBjbGFzcyB3aGljaCBvdmVycmlkZXMgdGhlIHBsYXRmb3JtIHByb3ZpZGVyLlxuXHQgKi9cblx0Y2xhc3MgT3ZlcnJpZGUgZXh0ZW5kcyBXb3Jrc3BhY2VQbGF0Zm9ybVByb3ZpZGVyIHtcblx0XHQvKipcblx0XHQgKiBHZXRzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHdpbmRvd3MgYW5kIHRoZWlyIHZpZXdzIGFuZCByZXR1cm5zIGEgc25hcHNob3Qgb2JqZWN0IGNvbnRhaW5pbmcgdGhhdCBpbmZvLlxuXHRcdCAqIEBwYXJhbSBwYXlsb2FkIFVuZGVmaW5lZCB1bmxlc3MgeW91J3ZlIGRlZmluZWQgYSBjdXN0b20gYGdldFNuYXBzaG90YCBwcm90b2NvbC5cblx0XHQgKiBAcGFyYW0gaWRlbnRpdHkgSWRlbnRpdHkgb2YgdGhlIGVudGl0eSB0aGF0IGNhbGxlZCBnZXRTbmFwc2hvdC5cblx0XHQgKiBAcmV0dXJucyBTbmFwc2hvdCBvZiBjdXJyZW50IHBsYXRmb3JtIHN0YXRlLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBnZXRTbmFwc2hvdChwYXlsb2FkOiB1bmRlZmluZWQsIGlkZW50aXR5OiBPcGVuRmluLklkZW50aXR5KTogUHJvbWlzZTxPcGVuRmluLlNuYXBzaG90PiB7XG5cdFx0XHRjb25zdCBzbmFwc2hvdCA9IGF3YWl0IHN1cGVyLmdldFNuYXBzaG90KHBheWxvYWQsIGlkZW50aXR5KTtcblxuXHRcdFx0Ly8gRGVjb3JhdGUgdGhlIGRlZmF1bHQgc25hcHNob3Qgd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBjb25uZWN0aW9uIGNsaWVudHMuXG5cdFx0XHRyZXR1cm4gZGVjb3JhdGVTbmFwc2hvdChzbmFwc2hvdCk7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSGFuZGxlcyByZXF1ZXN0cyB0byBhcHBseSBhIHNuYXBzaG90IHRvIHRoZSBjdXJyZW50IFBsYXRmb3JtLlxuXHRcdCAqIEBwYXJhbSBwYXlsb2FkIFBheWxvYWQgY29udGFpbmluZyB0aGUgc25hcHNob3QgdG8gYmUgYXBwbGllZCwgYXMgd2VsbCBhcyBhbnkgb3B0aW9ucy5cblx0XHQgKiBAcGFyYW0gaWRlbnRpdHkgSWRlbnRpdHkgb2YgdGhlIGVudGl0eSB0aGF0IGNhbGxlZCBhcHBseVNuYXBzaG90LlxuXHRcdCAqIFVuZGVmaW5lZCBpZiBjYWxsZWQgaW50ZXJuYWxseSAoZS5nLiB3aGVuIG9wZW5pbmcgdGhlIGluaXRpYWwgc25hcHNob3QpLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBhcHBseVNuYXBzaG90KFxuXHRcdFx0cGF5bG9hZDogT3BlbkZpbi5BcHBseVNuYXBzaG90UGF5bG9hZCxcblx0XHRcdGlkZW50aXR5PzogT3BlbkZpbi5JZGVudGl0eVxuXHRcdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0Ly8gVXNlIHRoZSBkZWNvcmF0ZWQgc25hcHNob3QgdG8gb3BlbiBhbnkgY29ubmVjdGVkIGNsaWVudHNcblx0XHRcdGF3YWl0IFByb21pc2UuYWxsKFtzdXBlci5hcHBseVNuYXBzaG90KHBheWxvYWQsIGlkZW50aXR5KSwgYXBwbHlDbGllbnRTbmFwc2hvdChwYXlsb2FkLnNuYXBzaG90KV0pO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciBnZXR0aW5nIGEgbGlzdCBvZiBzYXZlZCB3b3Jrc3BhY2VzIGZyb20gcGVyc2lzdGVudCBzdG9yYWdlLlxuXHRcdCAqIEBwYXJhbSBxdWVyeSBhbiBvcHRpb25hbCBxdWVyeS5cblx0XHQgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBzYXZlZCB3b3Jrc3BhY2VzLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBnZXRTYXZlZFdvcmtzcGFjZXMocXVlcnk/OiBzdHJpbmcpOiBQcm9taXNlPFdvcmtzcGFjZVtdPiB7XG5cdFx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gaW1wbGVtZW50YXRpb24gaGVyZSBpZiB5b3UgYXJlIHN0b3JpbmcgeW91ciB3b3Jrc3BhY2VzXG5cdFx0XHQvLyBpbiBub24tZGVmYXVsdCBsb2NhdGlvbiAoZS5nLiBvbiB0aGUgc2VydmVyIGluc3RlYWQgb2YgbG9jYWxseSlcblx0XHRcdGlmICghaXNFbXB0eShxdWVyeSkpIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYFNhdmVkIHdvcmtzcGFjZXMgcmVxdWVzdGVkIHdpdGggcXVlcnk6ICR7cXVlcnl9YCk7XG5cdFx0XHR9XG5cdFx0XHRsb2dnZXIuaW5mbyhgQ2hlY2tpbmcgZm9yIGN1c3RvbSB3b3Jrc3BhY2Ugc3RvcmFnZSB3aXRoIGVuZHBvaW50IGlkOiAke1dPUktTUEFDRV9FTkRQT0lOVF9JRF9MSVNUfWApO1xuXHRcdFx0aWYgKGVuZHBvaW50UHJvdmlkZXIuaGFzRW5kcG9pbnQoV09SS1NQQUNFX0VORFBPSU5UX0lEX0xJU1QpKSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiUmVxdWVzdGluZyBzYXZlZCB3b3Jrc3BhY2VzIGZyb20gY3VzdG9tIHN0b3JhZ2VcIik7XG5cdFx0XHRcdGNvbnN0IHdvcmtzcGFjZXNSZXNwb25zZSA9IGF3YWl0IGVuZHBvaW50UHJvdmlkZXIucmVxdWVzdFJlc3BvbnNlPFxuXHRcdFx0XHRcdEVuZHBvaW50V29ya3NwYWNlTGlzdFJlcXVlc3QsXG5cdFx0XHRcdFx0RW5kcG9pbnRXb3Jrc3BhY2VMaXN0UmVzcG9uc2Vcblx0XHRcdFx0PihXT1JLU1BBQ0VfRU5EUE9JTlRfSURfTElTVCwgeyBwbGF0Zm9ybTogZmluLm1lLmlkZW50aXR5LnV1aWQsIHF1ZXJ5IH0pO1xuXG5cdFx0XHRcdGlmICh3b3Jrc3BhY2VzUmVzcG9uc2UpIHtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcIlJldHVybmluZyBzYXZlZCB3b3Jrc3BhY2VzIGZyb20gY3VzdG9tIHN0b3JhZ2VcIik7XG5cdFx0XHRcdFx0cmV0dXJuIE9iamVjdC52YWx1ZXMod29ya3NwYWNlc1Jlc3BvbnNlKS5tYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZS5wYXlsb2FkKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRsb2dnZXIud2FybihcIk5vIHJlc3BvbnNlIGdldHRpbmcgc2F2ZWQgd29ya3NwYWNlcyBmcm9tIGN1c3RvbSBzdG9yYWdlXCIpO1xuXHRcdFx0XHRyZXR1cm4gW107XG5cdFx0XHR9XG5cdFx0XHRsb2dnZXIuaW5mbyhcIlJlcXVlc3Rpbmcgc2F2ZWQgd29ya3NwYWNlcyBmcm9tIGRlZmF1bHQgc3RvcmFnZVwiKTtcblx0XHRcdGNvbnN0IHNhdmVkV29ya3NwYWNlcyA9IGF3YWl0IHN1cGVyLmdldFNhdmVkV29ya3NwYWNlcyhxdWVyeSk7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIlJldHVybmluZyBzYXZlZCB3b3Jrc3BhY2VzIGZyb20gZGVmYXVsdCBzdG9yYWdlXCIpO1xuXHRcdFx0cmV0dXJuIHNhdmVkV29ya3NwYWNlcztcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBJbXBsZW1lbnRhdGlvbiBmb3IgZ2V0dGluZyBhIHNpbmdsZSB3b3Jrc3BhY2UgaW4gcGVyc2lzdGVudCBzdG9yYWdlLlxuXHRcdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIHdvcmtzcGFjZSB0byBnZXQuXG5cdFx0ICogQHJldHVybnMgVGhlIHdvcmtzcGFjZS5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgZ2V0U2F2ZWRXb3Jrc3BhY2UoaWQ6IHN0cmluZyk6IFByb21pc2U8V29ya3NwYWNlPiB7XG5cdFx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gaW1wbGVtZW50YXRpb24gaGVyZSBpZiB5b3UgYXJlIHN0b3JpbmcgeW91ciB3b3Jrc3BhY2VzXG5cdFx0XHQvLyBpbiBub24tZGVmYXVsdCBsb2NhdGlvbiAoZS5nLiBvbiB0aGUgc2VydmVyIGluc3RlYWQgb2YgbG9jYWxseSlcblx0XHRcdGxvZ2dlci5pbmZvKGBDaGVja2luZyBmb3IgY3VzdG9tIHdvcmtzcGFjZSBzdG9yYWdlIHdpdGggZW5kcG9pbnQgaWQ6ICR7V09SS1NQQUNFX0VORFBPSU5UX0lEX0dFVH1gKTtcblx0XHRcdGlmIChlbmRwb2ludFByb3ZpZGVyLmhhc0VuZHBvaW50KFdPUktTUEFDRV9FTkRQT0lOVF9JRF9HRVQpKSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBSZXF1ZXN0aW5nIHNhdmVkIHdvcmtzcGFjZSBmcm9tIGN1c3RvbSBzdG9yYWdlIGZvciB3b3Jrc3BhY2UgaWQ6ICR7aWR9YCk7XG5cdFx0XHRcdGNvbnN0IHdvcmtzcGFjZVJlc3BvbnNlID0gYXdhaXQgZW5kcG9pbnRQcm92aWRlci5yZXF1ZXN0UmVzcG9uc2U8XG5cdFx0XHRcdFx0RW5kcG9pbnRXb3Jrc3BhY2VHZXRSZXF1ZXN0LFxuXHRcdFx0XHRcdEVuZHBvaW50V29ya3NwYWNlR2V0UmVzcG9uc2Vcblx0XHRcdFx0PihXT1JLU1BBQ0VfRU5EUE9JTlRfSURfR0VULCB7IHBsYXRmb3JtOiBmaW4ubWUuaWRlbnRpdHkudXVpZCwgaWQgfSk7XG5cdFx0XHRcdGlmICh3b3Jrc3BhY2VSZXNwb25zZSkge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBSZXR1cm5pbmcgc2F2ZWQgd29ya3NwYWNlIGZyb20gY3VzdG9tIHN0b3JhZ2UgZm9yIHdvcmtzcGFjZSBpZDogJHtpZH1gKTtcblx0XHRcdFx0XHRyZXR1cm4gd29ya3NwYWNlUmVzcG9uc2UucGF5bG9hZDtcblx0XHRcdFx0fVxuXHRcdFx0XHRsb2dnZXIud2FybihgTm8gcmVzcG9uc2UgZ2V0dGluZyBzYXZlZCB3b3Jrc3BhY2UgZnJvbSBjdXN0b20gc3RvcmFnZSBmb3Igd29ya3NwYWNlIGlkOiAke2lkfWApO1xuXHRcdFx0XHRyZXR1cm4ge30gYXMgV29ya3NwYWNlO1xuXHRcdFx0fVxuXHRcdFx0bG9nZ2VyLmluZm8oYFJlcXVlc3Rpbmcgc2F2ZWQgd29ya3NwYWNlIGZyb20gZGVmYXVsdCBzdG9yYWdlIGZvciB3b3Jrc3BhY2UgaWQ6ICR7aWR9YCk7XG5cdFx0XHRjb25zdCBzYXZlZFdvcmtzcGFjZSA9IGF3YWl0IHN1cGVyLmdldFNhdmVkV29ya3NwYWNlKGlkKTtcblx0XHRcdGxvZ2dlci5pbmZvKGBSZXR1cm5pbmcgc2F2ZWQgd29ya3NwYWNlIGZyb20gZGVmYXVsdCBzdG9yYWdlIGZvciB3b3Jrc3BhY2UgaWQ6ICR7aWR9YCk7XG5cdFx0XHRyZXR1cm4gc2F2ZWRXb3Jrc3BhY2U7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSW1wbGVtZW50YXRpb24gZm9yIGNyZWF0aW5nIGEgc2F2ZWQgd29ya3NwYWNlIGluIHBlcnNpc3RlbnQgc3RvcmFnZS5cblx0XHQgKiBAcGFyYW0gcmVxIHRoZSBjcmVhdGUgc2F2ZWQgd29ya3NwYWNlIHJlcXVlc3QuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGNyZWF0ZVNhdmVkV29ya3NwYWNlKHJlcTogQ3JlYXRlU2F2ZWRXb3Jrc3BhY2VSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gaW1wbGVtZW50YXRpb24gaGVyZSBpZiB5b3UgYXJlIHN0b3JpbmcgeW91ciB3b3Jrc3BhY2VzXG5cdFx0XHQvLyBpbiBub24tZGVmYXVsdCBsb2NhdGlvbiAoZS5nLiBvbiB0aGUgc2VydmVyIGluc3RlYWQgb2YgbG9jYWxseSlcblx0XHRcdGxvZ2dlci5pbmZvKGBDaGVja2luZyBmb3IgY3VzdG9tIHdvcmtzcGFjZSBzdG9yYWdlIHdpdGggZW5kcG9pbnQgaWQ6ICR7V09SS1NQQUNFX0VORFBPSU5UX0lEX1NFVH1gKTtcblx0XHRcdGlmIChlbmRwb2ludFByb3ZpZGVyLmhhc0VuZHBvaW50KFdPUktTUEFDRV9FTkRQT0lOVF9JRF9TRVQpKSB7XG5cdFx0XHRcdGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBlbmRwb2ludFByb3ZpZGVyLmFjdGlvbjxFbmRwb2ludFdvcmtzcGFjZVNldFJlcXVlc3Q+KFxuXHRcdFx0XHRcdFdPUktTUEFDRV9FTkRQT0lOVF9JRF9TRVQsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0cGxhdGZvcm06IGZpbi5tZS5pZGVudGl0eS51dWlkLFxuXHRcdFx0XHRcdFx0aWQ6IHJlcS53b3Jrc3BhY2Uud29ya3NwYWNlSWQsXG5cdFx0XHRcdFx0XHRtZXRhRGF0YToge1xuXHRcdFx0XHRcdFx0XHR2ZXJzaW9uOiB7XG5cdFx0XHRcdFx0XHRcdFx0d29ya3NwYWNlUGxhdGZvcm1DbGllbnQ6IHZlcnNpb25JbmZvLndvcmtzcGFjZVBsYXRmb3JtQ2xpZW50LFxuXHRcdFx0XHRcdFx0XHRcdHBsYXRmb3JtQ2xpZW50OiB2ZXJzaW9uSW5mby5wbGF0Zm9ybUNsaWVudFxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0cGF5bG9hZDogZGlzYWJsZVN0b3JhZ2VNYXBwaW5nID8gcmVxLndvcmtzcGFjZSA6IG1hcFBsYXRmb3JtV29ya3NwYWNlVG9TdG9yYWdlKHJlcS53b3Jrc3BhY2UpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcykge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBTYXZlZCB3b3Jrc3BhY2Ugd2l0aCBpZDogJHtyZXEud29ya3NwYWNlLndvcmtzcGFjZUlkfSB0byBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBVbmFibGUgdG8gc2F2ZSB3b3Jrc3BhY2Ugd2l0aCBpZDogJHtyZXEud29ya3NwYWNlLndvcmtzcGFjZUlkfSB0byBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgU2F2aW5nIHdvcmtzcGFjZSB0byBkZWZhdWx0IHN0b3JhZ2UgZm9yIHdvcmtzcGFjZSBpZDogJHtyZXEud29ya3NwYWNlLndvcmtzcGFjZUlkfWApO1xuXHRcdFx0XHRhd2FpdCBzdXBlci5jcmVhdGVTYXZlZFdvcmtzcGFjZShyZXEpO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgU2F2ZWQgd29ya3NwYWNlIHRvIGRlZmF1bHQgc3RvcmFnZSBmb3Igd29ya3NwYWNlIGlkOiAke3JlcS53b3Jrc3BhY2Uud29ya3NwYWNlSWR9YCk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdGF3YWl0IGZpcmVMaWZlY3ljbGVFdmVudDxXb3Jrc3BhY2VDaGFuZ2VkTGlmZWN5Y2xlUGF5bG9hZD4ocGxhdGZvcm0sIFwid29ya3NwYWNlLWNoYW5nZWRcIiwge1xuXHRcdFx0XHRhY3Rpb246IFwiY3JlYXRlXCIsXG5cdFx0XHRcdGlkOiByZXEud29ya3NwYWNlLndvcmtzcGFjZUlkLFxuXHRcdFx0XHR3b3Jrc3BhY2U6IHJlcS53b3Jrc3BhY2Vcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciB1cGRhdGluZyBhIHNhdmVkIHdvcmtzcGFjZSBpbiBwZXJzaXN0ZW50IHN0b3JhZ2UuXG5cdFx0ICogQHBhcmFtIHJlcSB0aGUgdXBkYXRlIHNhdmVkIHdvcmtzcGFjZSByZXF1ZXN0LlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyB1cGRhdGVTYXZlZFdvcmtzcGFjZShyZXE6IFVwZGF0ZVNhdmVkV29ya3NwYWNlUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0Ly8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIGltcGxlbWVudGF0aW9uIGhlcmUgaWYgeW91IGFyZSBzdG9yaW5nIHlvdXIgd29ya3NwYWNlc1xuXHRcdFx0Ly8gaW4gbm9uLWRlZmF1bHQgbG9jYXRpb24gKGUuZy4gb24gdGhlIHNlcnZlciBpbnN0ZWFkIG9mIGxvY2FsbHkpXG5cdFx0XHRsb2dnZXIuaW5mbyhgQ2hlY2tpbmcgZm9yIGN1c3RvbSB3b3Jrc3BhY2Ugc3RvcmFnZSB3aXRoIGVuZHBvaW50IGlkOiAke1dPUktTUEFDRV9FTkRQT0lOVF9JRF9TRVR9YCk7XG5cdFx0XHRpZiAoZW5kcG9pbnRQcm92aWRlci5oYXNFbmRwb2ludChXT1JLU1BBQ0VfRU5EUE9JTlRfSURfU0VUKSkge1xuXHRcdFx0XHRjb25zdCBzdWNjZXNzID0gYXdhaXQgZW5kcG9pbnRQcm92aWRlci5hY3Rpb248RW5kcG9pbnRXb3Jrc3BhY2VTZXRSZXF1ZXN0Pihcblx0XHRcdFx0XHRXT1JLU1BBQ0VfRU5EUE9JTlRfSURfU0VULFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHBsYXRmb3JtOiBmaW4ubWUuaWRlbnRpdHkudXVpZCxcblx0XHRcdFx0XHRcdGlkOiByZXEud29ya3NwYWNlLndvcmtzcGFjZUlkLFxuXHRcdFx0XHRcdFx0bWV0YURhdGE6IHtcblx0XHRcdFx0XHRcdFx0dmVyc2lvbjoge1xuXHRcdFx0XHRcdFx0XHRcdHdvcmtzcGFjZVBsYXRmb3JtQ2xpZW50OiB2ZXJzaW9uSW5mby53b3Jrc3BhY2VQbGF0Zm9ybUNsaWVudCxcblx0XHRcdFx0XHRcdFx0XHRwbGF0Zm9ybUNsaWVudDogdmVyc2lvbkluZm8ucGxhdGZvcm1DbGllbnRcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHBheWxvYWQ6IGRpc2FibGVTdG9yYWdlTWFwcGluZyA/IHJlcS53b3Jrc3BhY2UgOiBtYXBQbGF0Zm9ybVdvcmtzcGFjZVRvU3RvcmFnZShyZXEud29ya3NwYWNlKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MpIHtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhgVXBkYXRlZCB3b3Jrc3BhY2Ugd2l0aCBpZDogJHtyZXEud29ya3NwYWNlLndvcmtzcGFjZUlkfSBhZ2FpbnN0IGN1c3RvbSBzdG9yYWdlYCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFx0XHRgVW5hYmxlIHRvIHVwZGF0ZSB3b3Jrc3BhY2Ugd2l0aCBpZDogJHtyZXEud29ya3NwYWNlLndvcmtzcGFjZUlkfSBhZ2FpbnN0IGN1c3RvbSBzdG9yYWdlYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFxuXHRcdFx0XHRcdGBTYXZpbmcgdXBkYXRlZCB3b3Jrc3BhY2UgdG8gZGVmYXVsdCBzdG9yYWdlIGZvciB3b3Jrc3BhY2UgaWQ6ICR7cmVxLndvcmtzcGFjZS53b3Jrc3BhY2VJZH0uYFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRhd2FpdCBzdXBlci51cGRhdGVTYXZlZFdvcmtzcGFjZShyZXEpO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0XHRgU2F2ZWQgdXBkYXRlZCB3b3Jrc3BhY2UgdG8gZGVmYXVsdCBzdG9yYWdlIGZvciB3b3Jrc3BhY2UgaWQ6ICR7cmVxLndvcmtzcGFjZS53b3Jrc3BhY2VJZH0uYFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHRhd2FpdCBmaXJlTGlmZWN5Y2xlRXZlbnQ8V29ya3NwYWNlQ2hhbmdlZExpZmVjeWNsZVBheWxvYWQ+KHBsYXRmb3JtLCBcIndvcmtzcGFjZS1jaGFuZ2VkXCIsIHtcblx0XHRcdFx0YWN0aW9uOiBcInVwZGF0ZVwiLFxuXHRcdFx0XHRpZDogcmVxLndvcmtzcGFjZS53b3Jrc3BhY2VJZCxcblx0XHRcdFx0d29ya3NwYWNlOiByZXEud29ya3NwYWNlXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBJbXBsZW1lbnRhdGlvbiBmb3IgZGVsZXRpbmcgYSBzYXZlZCB3b3Jrc3BhY2UgaW4gcGVyc2lzdGVudCBzdG9yYWdlLlxuXHRcdCAqIEBwYXJhbSBpZCBvZiB0aGUgaWQgb2YgdGhlIHdvcmtzcGFjZSB0byBkZWxldGUuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGRlbGV0ZVNhdmVkV29ya3NwYWNlKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdC8vIHlvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBoZXJlIGlmIHlvdSBhcmUgc3RvcmluZyB5b3VyIHdvcmtzcGFjZXNcblx0XHRcdC8vIGluIG5vbi1kZWZhdWx0IGxvY2F0aW9uIChlLmcuIG9uIHRoZSBzZXJ2ZXIgaW5zdGVhZCBvZiBsb2NhbGx5KVxuXHRcdFx0bG9nZ2VyLmluZm8oYENoZWNraW5nIGZvciBjdXN0b20gd29ya3NwYWNlIHN0b3JhZ2Ugd2l0aCBlbmRwb2ludCBpZDogJHtXT1JLU1BBQ0VfRU5EUE9JTlRfSURfUkVNT1ZFfWApO1xuXHRcdFx0aWYgKGVuZHBvaW50UHJvdmlkZXIuaGFzRW5kcG9pbnQoV09SS1NQQUNFX0VORFBPSU5UX0lEX1JFTU9WRSkpIHtcblx0XHRcdFx0Y29uc3Qgc3VjY2VzcyA9IGF3YWl0IGVuZHBvaW50UHJvdmlkZXIuYWN0aW9uPEVuZHBvaW50V29ya3NwYWNlUmVtb3ZlUmVxdWVzdD4oXG5cdFx0XHRcdFx0V09SS1NQQUNFX0VORFBPSU5UX0lEX1JFTU9WRSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRwbGF0Zm9ybTogZmluLm1lLmlkZW50aXR5LnV1aWQsXG5cdFx0XHRcdFx0XHRpZFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MpIHtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhgUmVtb3ZlZCB3b3Jrc3BhY2Ugd2l0aCBpZDogJHtpZH0gZnJvbSBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBVbmFibGUgdG8gcmVtb3ZlIHdvcmtzcGFjZSB3aXRoIGlkOiAke2lkfSBmcm9tIGN1c3RvbSBzdG9yYWdlYCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBEZWxldGluZyB3b3Jrc3BhY2UgZnJvbSBkZWZhdWx0IHN0b3JhZ2UgZm9yIHdvcmtzcGFjZSBpZDogJHtpZH1gKTtcblx0XHRcdFx0YXdhaXQgc3VwZXIuZGVsZXRlU2F2ZWRXb3Jrc3BhY2UoaWQpO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgRGVsZXRlZCB3b3Jrc3BhY2UgZnJvbSBkZWZhdWx0IHN0b3JhZ2UgZm9yIHdvcmtzcGFjZSBpZDogJHtpZH1gKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdFx0YXdhaXQgZmlyZUxpZmVjeWNsZUV2ZW50PFdvcmtzcGFjZUNoYW5nZWRMaWZlY3ljbGVQYXlsb2FkPihwbGF0Zm9ybSwgXCJ3b3Jrc3BhY2UtY2hhbmdlZFwiLCB7XG5cdFx0XHRcdGFjdGlvbjogXCJkZWxldGVcIixcblx0XHRcdFx0aWRcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciBnZXR0aW5nIGEgbGlzdCBvZiBzYXZlZCBwYWdlcyBmcm9tIHBlcnNpc3RlbnQgc3RvcmFnZS5cblx0XHQgKiBAcGFyYW0gcXVlcnkgYW4gb3B0aW9uYWwgcXVlcnkuXG5cdFx0ICogQHJldHVybnMgVGhlIGxpc3Qgb2YgcGFnZXMuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGdldFNhdmVkUGFnZXMocXVlcnk/OiBzdHJpbmcpOiBQcm9taXNlPFBhZ2VbXT4ge1xuXHRcdFx0Ly8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIGltcGxlbWVudGF0aW9uIGhlcmUgaWYgeW91IGFyZSBzdG9yaW5nIHlvdXIgcGFnZXNcblx0XHRcdC8vIGluIG5vbi1kZWZhdWx0IGxvY2F0aW9uIChlLmcuIG9uIHRoZSBzZXJ2ZXIgaW5zdGVhZCBvZiBsb2NhbGx5KVxuXHRcdFx0aWYgKCFpc0VtcHR5KHF1ZXJ5KSkge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgU2F2ZWQgcGFnZXMgcmVxdWVzdGVkIHdpdGggcXVlcnk6ICR7cXVlcnl9YCk7XG5cdFx0XHR9XG5cdFx0XHRsb2dnZXIuaW5mbyhgQ2hlY2tpbmcgZm9yIGN1c3RvbSBwYWdlIHN0b3JhZ2Ugd2l0aCBlbmRwb2ludCBpZDogJHtQQUdFX0VORFBPSU5UX0lEX0xJU1R9YCk7XG5cdFx0XHRpZiAoZW5kcG9pbnRQcm92aWRlci5oYXNFbmRwb2ludChQQUdFX0VORFBPSU5UX0lEX0xJU1QpKSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiR2V0dGluZyBzYXZlZCBwYWdlcyBmcm9tIGN1c3RvbSBzdG9yYWdlXCIpO1xuXHRcdFx0XHRjb25zdCBwYWdlc1Jlc3BvbnNlID0gYXdhaXQgZW5kcG9pbnRQcm92aWRlci5yZXF1ZXN0UmVzcG9uc2U8XG5cdFx0XHRcdFx0RW5kcG9pbnRQYWdlTGlzdFJlcXVlc3QsXG5cdFx0XHRcdFx0RW5kcG9pbnRQYWdlTGlzdFJlc3BvbnNlXG5cdFx0XHRcdD4oUEFHRV9FTkRQT0lOVF9JRF9MSVNULCB7IHBsYXRmb3JtOiBmaW4ubWUuaWRlbnRpdHkudXVpZCwgcXVlcnkgfSk7XG5cdFx0XHRcdGlmIChwYWdlc1Jlc3BvbnNlKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oXCJSZXR1cm5pbmcgc2F2ZWQgcGFnZXMgZnJvbSBjdXN0b20gc3RvcmFnZVwiKTtcblx0XHRcdFx0XHRyZXR1cm4gT2JqZWN0LnZhbHVlcyhwYWdlc1Jlc3BvbnNlKS5tYXAoKHdzKSA9PiB3cy5wYXlsb2FkKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRsb2dnZXIud2FybihcIk5vIHJlc3BvbnNlIGdldHRpbmcgc2F2ZWQgcGFnZXMgZnJvbSBjdXN0b20gc3RvcmFnZVwiKTtcblx0XHRcdFx0cmV0dXJuIFtdO1xuXHRcdFx0fVxuXHRcdFx0bG9nZ2VyLmluZm8oXCJHZXR0aW5nIHNhdmVkIHBhZ2VzIGZyb20gZGVmYXVsdCBzdG9yYWdlXCIpO1xuXHRcdFx0Y29uc3QgcGFnZXNSZXNwb25zZSA9IGF3YWl0IHN1cGVyLmdldFNhdmVkUGFnZXMocXVlcnkpO1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJSZXR1cm5pbmcgc2F2ZWQgcGFnZXMgZnJvbSBkZWZhdWx0IHN0b3JhZ2VcIik7XG5cdFx0XHRyZXR1cm4gcGFnZXNSZXNwb25zZTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBJbXBsZW1lbnRhdGlvbiBmb3IgZ2V0dGluZyBhIHNpbmdsZSBwYWdlIGluIHBlcnNpc3RlbnQgc3RvcmFnZS5cblx0XHQgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBwYWdlIHRvIGdldC5cblx0XHQgKiBAcmV0dXJucyBUaGUgcGFnZS5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgZ2V0U2F2ZWRQYWdlKGlkOiBzdHJpbmcpOiBQcm9taXNlPFBhZ2U+IHtcblx0XHRcdC8vIHlvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBoZXJlIGlmIHlvdSBhcmUgc3RvcmluZyB5b3VyIHBhZ2VzXG5cdFx0XHQvLyBpbiBub24tZGVmYXVsdCBsb2NhdGlvbiAoZS5nLiBvbiB0aGUgc2VydmVyIGluc3RlYWQgb2YgbG9jYWxseSlcblx0XHRcdGxvZ2dlci5pbmZvKGBDaGVja2luZyBmb3IgY3VzdG9tIHBhZ2Ugc3RvcmFnZSB3aXRoIGVuZHBvaW50IGlkOiAke1BBR0VfRU5EUE9JTlRfSURfR0VUfWApO1xuXHRcdFx0aWYgKGVuZHBvaW50UHJvdmlkZXIuaGFzRW5kcG9pbnQoUEFHRV9FTkRQT0lOVF9JRF9HRVQpKSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBHZXR0aW5nIHNhdmVkIHBhZ2UgZnJvbSBjdXN0b20gc3RvcmFnZSBmb3IgcGFnZSBpZDogJHtpZH1gKTtcblx0XHRcdFx0Y29uc3QgcGFnZVJlc3BvbnNlID0gYXdhaXQgZW5kcG9pbnRQcm92aWRlci5yZXF1ZXN0UmVzcG9uc2U8XG5cdFx0XHRcdFx0RW5kcG9pbnRQYWdlR2V0UmVxdWVzdCxcblx0XHRcdFx0XHRFbmRwb2ludFBhZ2VHZXRSZXNwb25zZVxuXHRcdFx0XHQ+KFBBR0VfRU5EUE9JTlRfSURfR0VULCB7XG5cdFx0XHRcdFx0cGxhdGZvcm06IGZpbi5tZS5pZGVudGl0eS51dWlkLFxuXHRcdFx0XHRcdGlkXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAocGFnZVJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oYFJldHVybmluZyBzYXZlZCBwYWdlIGZyb20gY3VzdG9tIHN0b3JhZ2UgZm9yIHBhZ2UgaWQ6ICR7aWR9YCk7XG5cdFx0XHRcdFx0cmV0dXJuIHBhZ2VSZXNwb25zZS5wYXlsb2FkO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bG9nZ2VyLndhcm4oYE5vIHJlc3BvbnNlIGdldHRpbmcgc2F2ZWQgcGFnZSBmcm9tIGN1c3RvbSBzdG9yYWdlIGZvciBwYWdlIGlkOiAke2lkfWApO1xuXHRcdFx0XHRyZXR1cm4ge30gYXMgUGFnZTtcblx0XHRcdH1cblx0XHRcdGxvZ2dlci5pbmZvKGBHZXR0aW5nIHNhdmVkIHBhZ2Ugd2l0aCBpZCAke2lkfSBmcm9tIGRlZmF1bHQgc3RvcmFnZWApO1xuXHRcdFx0Y29uc3QgcGFnZVJlc3BvbnNlID0gYXdhaXQgc3VwZXIuZ2V0U2F2ZWRQYWdlKGlkKTtcblx0XHRcdGxvZ2dlci5pbmZvKGBSZXR1cm5pbmcgc2F2ZWQgcGFnZSB3aXRoIGlkICR7aWR9IGZyb20gZGVmYXVsdCBzdG9yYWdlYCk7XG5cdFx0XHRyZXR1cm4gcGFnZVJlc3BvbnNlO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciBjcmVhdGluZyBhIHNhdmVkIHBhZ2UgaW4gcGVyc2lzdGVudCBzdG9yYWdlLlxuXHRcdCAqIEBwYXJhbSByZXEgdGhlIGNyZWF0ZSBzYXZlZCBwYWdlIHJlcXVlc3QuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGNyZWF0ZVNhdmVkUGFnZShyZXE6IENyZWF0ZVNhdmVkUGFnZVJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblxuXHRcdFx0aWYgKGlzRW1wdHkocmVxLnBhZ2UuY3VzdG9tRGF0YSkpIHtcblx0XHRcdFx0cmVxLnBhZ2UuY3VzdG9tRGF0YSA9IHt9O1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgd2luZG93Qm91bmRzID0gYXdhaXQgZ2V0UGFnZUJvdW5kcyhyZXEucGFnZS5wYWdlSWQpO1xuXG5cdFx0XHRpZiAoaXNFbXB0eSh3aW5kb3dCb3VuZHMpKSB7XG5cdFx0XHRcdC8vIGxpa2VseSB0aGlzIGlzIGEgbmV3IHNhdmUgcGFnZSBhcyBpbXBsZW1lbnRhdGlvbiBhcyB3ZSB3ZXJlIHVuYWJsZSB0byBmaW5kIHRoaXMgcGFnZSBpZCBpbiB0aGUgYXZhaWxhYmxlIHBhZ2VzXG5cdFx0XHRcdGNvbnN0IHBhcmVudElkZW50aXR5ID0gYXdhaXQgcGxhdGZvcm0uQnJvd3Nlci5nZXRMYXN0Rm9jdXNlZFdpbmRvdygpO1xuXHRcdFx0XHRjb25zdCBwYXJlbnRXaW5kb3cgPSBmaW4uV2luZG93LndyYXBTeW5jKHBhcmVudElkZW50aXR5KTtcblx0XHRcdFx0d2luZG93Qm91bmRzID0gYXdhaXQgcGFyZW50V2luZG93LmdldEJvdW5kcygpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIWlzRW1wdHkod2luZG93Qm91bmRzKSkge1xuXHRcdFx0XHRyZXEucGFnZS5jdXN0b21EYXRhLndpbmRvd0JvdW5kcyA9IHdpbmRvd0JvdW5kcztcblx0XHRcdH1cblxuXHRcdFx0Ly8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIGltcGxlbWVudGF0aW9uIGhlcmUgaWYgeW91IGFyZSBzdG9yaW5nIHlvdXIgcGFnZXNcblx0XHRcdC8vIGluIG5vbi1kZWZhdWx0IGxvY2F0aW9uIChlLmcuIG9uIHRoZSBzZXJ2ZXIgaW5zdGVhZCBvZiBsb2NhbGx5KVxuXHRcdFx0bG9nZ2VyLmluZm8oYENoZWNraW5nIGZvciBjdXN0b20gcGFnZSBzdG9yYWdlIHdpdGggZW5kcG9pbnQgaWQ6ICR7UEFHRV9FTkRQT0lOVF9JRF9TRVR9YCk7XG5cdFx0XHRpZiAoZW5kcG9pbnRQcm92aWRlci5oYXNFbmRwb2ludChQQUdFX0VORFBPSU5UX0lEX1NFVCkpIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYFNhdmluZyBwYWdlIHdpdGggaWQ6ICR7cmVxLnBhZ2UucGFnZUlkfSB0byBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHRjb25zdCBzdWNjZXNzID0gYXdhaXQgZW5kcG9pbnRQcm92aWRlci5hY3Rpb248RW5kcG9pbnRQYWdlU2V0UmVxdWVzdD4oUEFHRV9FTkRQT0lOVF9JRF9TRVQsIHtcblx0XHRcdFx0XHRwbGF0Zm9ybTogZmluLm1lLmlkZW50aXR5LnV1aWQsXG5cdFx0XHRcdFx0aWQ6IHJlcS5wYWdlLnBhZ2VJZCxcblx0XHRcdFx0XHRtZXRhRGF0YToge1xuXHRcdFx0XHRcdFx0dmVyc2lvbjoge1xuXHRcdFx0XHRcdFx0XHR3b3Jrc3BhY2VQbGF0Zm9ybUNsaWVudDogdmVyc2lvbkluZm8ud29ya3NwYWNlUGxhdGZvcm1DbGllbnQsXG5cdFx0XHRcdFx0XHRcdHBsYXRmb3JtQ2xpZW50OiB2ZXJzaW9uSW5mby5wbGF0Zm9ybUNsaWVudFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0cGF5bG9hZDogZGlzYWJsZVN0b3JhZ2VNYXBwaW5nID8gcmVxLnBhZ2UgOiBtYXBQbGF0Zm9ybVBhZ2VUb1N0b3JhZ2UocmVxLnBhZ2UpXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcykge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBTYXZlZCBwYWdlIHdpdGggaWQ6ICR7cmVxLnBhZ2UucGFnZUlkfSB0byBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBVbmFibGUgdG8gc2F2ZSBwYWdlIHdpdGggaWQ6ICR7cmVxLnBhZ2UucGFnZUlkfSB0byBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgY3JlYXRpbmcgc2F2ZWQgcGFnZSBhbmQgc2F2aW5nIHRvIGRlZmF1bHQgc3RvcmFnZS4gUGFnZUlkOiAke3JlcS5wYWdlLnBhZ2VJZH1gKTtcblx0XHRcdFx0YXdhaXQgc3VwZXIuY3JlYXRlU2F2ZWRQYWdlKHJlcSk7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBTYXZlZCBwYWdlIHdpdGggaWQ6ICR7cmVxLnBhZ2UucGFnZUlkfSB0byBkZWZhdWx0IHN0b3JhZ2VgKTtcblx0XHRcdH1cblxuXHRcdFx0YXdhaXQgZmlyZUxpZmVjeWNsZUV2ZW50PFBhZ2VDaGFuZ2VkTGlmZWN5Y2xlUGF5bG9hZD4ocGxhdGZvcm0sIFwicGFnZS1jaGFuZ2VkXCIsIHtcblx0XHRcdFx0YWN0aW9uOiBcImNyZWF0ZVwiLFxuXHRcdFx0XHRpZDogcmVxLnBhZ2UucGFnZUlkLFxuXHRcdFx0XHRwYWdlOiByZXEucGFnZVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSW1wbGVtZW50YXRpb24gZm9yIHVwZGF0aW5nIGEgc2F2ZWQgcGFnZSBpbiBwZXJzaXN0ZW50IHN0b3JhZ2UuXG5cdFx0ICogQHBhcmFtIHJlcSB0aGUgdXBkYXRlIHNhdmVkIHBhZ2UgcmVxdWVzdC5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgdXBkYXRlU2F2ZWRQYWdlKHJlcTogVXBkYXRlU2F2ZWRQYWdlUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0Y29uc3Qgd2luZG93Qm91bmRzID0gYXdhaXQgZ2V0UGFnZUJvdW5kcyhyZXEucGFnZS5wYWdlSWQpO1xuXHRcdFx0aWYgKCFpc0VtcHR5KHdpbmRvd0JvdW5kcykpIHtcblx0XHRcdFx0aWYgKGlzRW1wdHkocmVxLnBhZ2UuY3VzdG9tRGF0YSkpIHtcblx0XHRcdFx0XHRyZXEucGFnZS5jdXN0b21EYXRhID0ge307XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVxLnBhZ2UuY3VzdG9tRGF0YS53aW5kb3dCb3VuZHMgPSB3aW5kb3dCb3VuZHM7XG5cdFx0XHR9XG5cdFx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gaW1wbGVtZW50YXRpb24gaGVyZSBpZiB5b3UgYXJlIHN0b3JpbmcgeW91ciBwYWdlc1xuXHRcdFx0Ly8gaW4gbm9uLWRlZmF1bHQgbG9jYXRpb24gKGUuZy4gb24gdGhlIHNlcnZlciBpbnN0ZWFkIG9mIGxvY2FsbHkpXG5cdFx0XHRsb2dnZXIuaW5mbyhgQ2hlY2tpbmcgZm9yIGN1c3RvbSBwYWdlIHN0b3JhZ2Ugd2l0aCBlbmRwb2ludCBpZDogJHtQQUdFX0VORFBPSU5UX0lEX1NFVH1gKTtcblx0XHRcdGlmIChlbmRwb2ludFByb3ZpZGVyLmhhc0VuZHBvaW50KFBBR0VfRU5EUE9JTlRfSURfU0VUKSkge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgVXBkYXRpbmcgc2F2ZWQgcGFnZSBhbmQgc2F2aW5nIHRvIGN1c3RvbSBzdG9yYWdlIHdpdGggcGFnZSBpZDogJHtyZXEucGFnZS5wYWdlSWR9YCk7XG5cdFx0XHRcdGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBlbmRwb2ludFByb3ZpZGVyLmFjdGlvbjxFbmRwb2ludFBhZ2VTZXRSZXF1ZXN0PihQQUdFX0VORFBPSU5UX0lEX1NFVCwge1xuXHRcdFx0XHRcdHBsYXRmb3JtOiBmaW4ubWUuaWRlbnRpdHkudXVpZCxcblx0XHRcdFx0XHRpZDogcmVxLnBhZ2UucGFnZUlkLFxuXHRcdFx0XHRcdG1ldGFEYXRhOiB7XG5cdFx0XHRcdFx0XHR2ZXJzaW9uOiB7XG5cdFx0XHRcdFx0XHRcdHdvcmtzcGFjZVBsYXRmb3JtQ2xpZW50OiB2ZXJzaW9uSW5mby53b3Jrc3BhY2VQbGF0Zm9ybUNsaWVudCxcblx0XHRcdFx0XHRcdFx0cGxhdGZvcm1DbGllbnQ6IHZlcnNpb25JbmZvLnBsYXRmb3JtQ2xpZW50XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRwYXlsb2FkOiBkaXNhYmxlU3RvcmFnZU1hcHBpbmcgPyByZXEucGFnZSA6IG1hcFBsYXRmb3JtUGFnZVRvU3RvcmFnZShyZXEucGFnZSlcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmIChzdWNjZXNzKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oYFVwZGF0ZWQgcGFnZSB3aXRoIGlkOiAke3JlcS5wYWdlLnBhZ2VJZH0gYWdhaW5zdCBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBVbmFibGUgdG8gc2F2ZSBwYWdlIHdpdGggaWQ6ICR7cmVxLnBhZ2UucGFnZUlkfSBhZ2FpbnN0IGN1c3RvbSBzdG9yYWdlYCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGB1cGRhdGluZyBzYXZlZCBwYWdlIGFuZCBzYXZpbmcgdG8gZGVmYXVsdCBzdG9yYWdlIHdpdGggcGFnZSBpZDogJHtyZXEucGFnZS5wYWdlSWR9YCk7XG5cdFx0XHRcdGF3YWl0IHN1cGVyLnVwZGF0ZVNhdmVkUGFnZShyZXEpO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgVXBkYXRlZCBwYWdlIHdpdGggaWQ6ICR7cmVxLnBhZ2UucGFnZUlkfSBhZ2FpbnN0IGRlZmF1bHQgc3RvcmFnZWApO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHRhd2FpdCBmaXJlTGlmZWN5Y2xlRXZlbnQ8UGFnZUNoYW5nZWRMaWZlY3ljbGVQYXlsb2FkPihwbGF0Zm9ybSwgXCJwYWdlLWNoYW5nZWRcIiwge1xuXHRcdFx0XHRhY3Rpb246IFwidXBkYXRlXCIsXG5cdFx0XHRcdGlkOiByZXEucGFnZS5wYWdlSWQsXG5cdFx0XHRcdHBhZ2U6IHJlcS5wYWdlXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBJbXBsZW1lbnRhdGlvbiBmb3IgZGVsZXRpbmcgYSBzYXZlZCBwYWdlIGluIHBlcnNpc3RlbnQgc3RvcmFnZS5cblx0XHQgKiBAcGFyYW0gaWQgb2YgdGhlIGlkIG9mIHRoZSBwYWdlIHRvIGRlbGV0ZS5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgZGVsZXRlU2F2ZWRQYWdlKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdC8vIHlvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBoZXJlIGlmIHlvdSBhcmUgc3RvcmluZyB5b3VyIHBhZ2VzXG5cdFx0XHQvLyBpbiBub24tZGVmYXVsdCBsb2NhdGlvbiAoZS5nLiBvbiB0aGUgc2VydmVyIGluc3RlYWQgb2YgbG9jYWxseSlcblx0XHRcdGxvZ2dlci5pbmZvKGBDaGVja2luZyBmb3IgY3VzdG9tIHBhZ2Ugc3RvcmFnZSB3aXRoIGVuZHBvaW50IGlkOiAke1BBR0VfRU5EUE9JTlRfSURfUkVNT1ZFfWApO1xuXHRcdFx0aWYgKGVuZHBvaW50UHJvdmlkZXIuaGFzRW5kcG9pbnQoUEFHRV9FTkRQT0lOVF9JRF9SRU1PVkUpKSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBkZWxldGluZyBzYXZlZCBwYWdlIGZyb20gY3VzdG9tIHN0b3JhZ2UuIFBhZ2VJZDogJHtpZH1gKTtcblx0XHRcdFx0Y29uc3Qgc3VjY2VzcyA9IGF3YWl0IGVuZHBvaW50UHJvdmlkZXIuYWN0aW9uPEVuZHBvaW50UGFnZVJlbW92ZVJlcXVlc3Q+KFBBR0VfRU5EUE9JTlRfSURfUkVNT1ZFLCB7XG5cdFx0XHRcdFx0cGxhdGZvcm06IGZpbi5tZS5pZGVudGl0eS51dWlkLFxuXHRcdFx0XHRcdGlkXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcykge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBSZW1vdmVkIHBhZ2Ugd2l0aCBpZDogJHtpZH0gZnJvbSBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBVbmFibGUgdG8gcmVtb3ZlIHBhZ2Ugd2l0aCBpZDogJHtpZH0gZnJvbSBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgZGVsZXRpbmcgc2F2ZWQgcGFnZSBmcm9tIGRlZmF1bHQgc3RvcmFnZS4gUGFnZUlkOiAke2lkfWApO1xuXHRcdFx0XHRhd2FpdCBzdXBlci5kZWxldGVTYXZlZFBhZ2UoaWQpO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgUmVtb3ZlZCBwYWdlIHdpdGggaWQ6ICR7aWR9IGZyb20gY3VzdG9tIHN0b3JhZ2VgKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdGF3YWl0IGZpcmVMaWZlY3ljbGVFdmVudDxQYWdlQ2hhbmdlZExpZmVjeWNsZVBheWxvYWQ+KHBsYXRmb3JtLCBcInBhZ2UtY2hhbmdlZFwiLCB7XG5cdFx0XHRcdGFjdGlvbjogXCJkZWxldGVcIixcblx0XHRcdFx0aWRcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciBzaG93aW5nIGEgZ2xvYmFsIGNvbnRleHQgbWVudSBnaXZlbiBhIG1lbnUgdGVtcGxhdGUsXG5cdFx0ICogaGFuZGxlciBjYWxsYmFjaywgYW5kIHNjcmVlbiBjb29yZGluYXRlcy5cblx0XHQgKiBAcGFyYW0gcmVxIHRoZSBwYXlsb2FkIHJlY2VpdmVkIGJ5IHRoZSBwcm92aWRlciBjYWxsXG5cdFx0ICogQHBhcmFtIGNhbGxlcklkZW50aXR5IE9GIGlkZW50aXR5IG9mIHRoZSBlbnRpdHkgZnJvbSB3aGljaCB0aGUgcmVxdWVzdCBvcmlnaW5hdGVkXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIG9wZW5HbG9iYWxDb250ZXh0TWVudShcblx0XHRcdHJlcTogT3Blbkdsb2JhbENvbnRleHRNZW51UGF5bG9hZCxcblx0XHRcdGNhbGxlcklkZW50aXR5OiBPcGVuRmluLklkZW50aXR5XG5cdFx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZSA9IGF3YWl0IGdldEdsb2JhbE1lbnUocmVxLnRlbXBsYXRlLCB7IHdpbmRvd0lkZW50aXR5OiByZXEuaWRlbnRpdHkgfSk7XG5cdFx0XHRpZiAodGVtcGxhdGU/Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0YXdhaXQgc3VwZXIub3Blbkdsb2JhbENvbnRleHRNZW51KFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdC4uLnJlcSxcblx0XHRcdFx0XHRcdHRlbXBsYXRlXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRjYWxsZXJJZGVudGl0eVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciBzaG93aW5nIGEgdmlldyB0YWIgY29udGV4dCBtZW51IGdpdmVuIGEgbWVudSB0ZW1wbGF0ZSxcblx0XHQgKiBoYW5kbGVyIGNhbGxiYWNrLCBhbmQgc2NyZWVuIGNvb3JkaW5hdGVzLlxuXHRcdCAqIEBwYXJhbSByZXEgdGhlIHBheWxvYWQgcmVjZWl2ZWQgYnkgdGhlIHByb3ZpZGVyIGNhbGxcblx0XHQgKiBAcGFyYW0gY2FsbGVySWRlbnRpdHkgT0YgaWRlbnRpdHkgb2YgdGhlIGVudGl0eSBmcm9tIHdoaWNoIHRoZSByZXF1ZXN0IG9yaWdpbmF0ZWRcblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgb3BlblZpZXdUYWJDb250ZXh0TWVudShcblx0XHRcdHJlcTogT3BlblZpZXdUYWJDb250ZXh0TWVudVBheWxvYWQsXG5cdFx0XHRjYWxsZXJJZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eVxuXHRcdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0Y29uc3QgdGVtcGxhdGUgPSBhd2FpdCBnZXRWaWV3TWVudShyZXEudGVtcGxhdGUsIHtcblx0XHRcdFx0d2luZG93SWRlbnRpdHk6IHJlcS5pZGVudGl0eSxcblx0XHRcdFx0dmlld3M6IHJlcS5zZWxlY3RlZFZpZXdzXG5cdFx0XHR9KTtcblx0XHRcdGlmICh0ZW1wbGF0ZT8ubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRhd2FpdCBzdXBlci5vcGVuVmlld1RhYkNvbnRleHRNZW51KFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdC4uLnJlcSxcblx0XHRcdFx0XHRcdHRlbXBsYXRlXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRjYWxsZXJJZGVudGl0eVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciBzaG93aW5nIGEgcGFnZSB0YWIgY29udGV4dCBtZW51IGdpdmVuIGEgbWVudSB0ZW1wbGF0ZSxcblx0XHQgKiBoYW5kbGVyIGNhbGxiYWNrLCBhbmQgc2NyZWVuIGNvb3JkaW5hdGVzLlxuXHRcdCAqIEBwYXJhbSByZXEgdGhlIHBheWxvYWQgcmVjZWl2ZWQgYnkgdGhlIHByb3ZpZGVyIGNhbGxcblx0XHQgKiBAcGFyYW0gY2FsbGVySWRlbnRpdHkgT0YgaWRlbnRpdHkgb2YgdGhlIGVudGl0eSBmcm9tIHdoaWNoIHRoZSByZXF1ZXN0IG9yaWdpbmF0ZWRcblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgb3BlblBhZ2VUYWJDb250ZXh0TWVudShcblx0XHRcdHJlcTogT3BlblBhZ2VUYWJDb250ZXh0TWVudVBheWxvYWQsXG5cdFx0XHRjYWxsZXJJZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eVxuXHRcdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0Y29uc3QgdGVtcGxhdGUgPSBhd2FpdCBnZXRQYWdlTWVudShyZXEudGVtcGxhdGUsIHsgd2luZG93SWRlbnRpdHk6IHJlcS5pZGVudGl0eSwgcGFnZUlkOiByZXEucGFnZUlkIH0pO1xuXHRcdFx0aWYgKHRlbXBsYXRlPy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGF3YWl0IHN1cGVyLm9wZW5QYWdlVGFiQ29udGV4dE1lbnUoXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Li4ucmVxLFxuXHRcdFx0XHRcdFx0dGVtcGxhdGVcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGNhbGxlcklkZW50aXR5XG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogQ2xvc2VzIHRoZSBjdXJyZW50IFBsYXRmb3JtIGFuZCBhbGwgY2hpbGQgd2luZG93cyBhbmQgdmlld3MuXG5cdFx0ICogQHBhcmFtIHBheWxvYWQgVW5kZWZpbmVkIHVubGVzcyB5b3UgaGF2ZSBpbXBsZW1lbnRlZCBhIGN1c3RvbSBxdWl0ZSBwcm90b2NvbC5cblx0XHQgKiBAcGFyYW0gY2FsbGVySWRlbnRpdHkgSWRlbnRpdHkgb2YgdGhlIGVudGl0eSB0aGF0IGNhbGxlZCBxdWl0LlxuXHRcdCAqIEByZXR1cm5zIE5vdGhpbmcuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIHF1aXQocGF5bG9hZDogdW5kZWZpbmVkLCBjYWxsZXJJZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdFx0YXdhaXQgZmlyZUxpZmVjeWNsZUV2ZW50KHBsYXRmb3JtLCBcImJlZm9yZS1xdWl0XCIpO1xuXG5cdFx0XHRhd2FpdCBjbG9zZWRvd25QbGF0Zm9ybSgpO1xuXG5cdFx0XHRyZXR1cm4gc3VwZXIucXVpdChwYXlsb2FkLCBjYWxsZXJJZGVudGl0eSk7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSGFuZGxlcyByZXF1ZXN0cyB0byBjcmVhdGUgYSB3aW5kb3cgaW4gdGhlIGN1cnJlbnQgcGxhdGZvcm0uXG5cdFx0ICogQHBhcmFtIG9wdGlvbnMgV2luZG93IG9wdGlvbnMgZm9yIHRoZSB3aW5kb3cgdG8gYmUgY3JlYXRlZC5cblx0XHQgKiBAcGFyYW0gaWRlbnRpdHkgSWYgY3JlYXRlV2luZG93IHdhcyBjYWxsZWQsIHRoZSBpZGVudGl0eSBvZiB0aGUgY2FsbGVyIHdpbGwgYmUgaGVyZS4gSWYgYGNyZWF0ZVdpbmRvd2Agd2FzXG5cdFx0ICogY2FsbGVkIGFzIHBhcnQgb2YgYXBwbHlpbmcgYSBzbmFwc2hvdCBvciBjcmVhdGluZyBhIHZpZXcgd2l0aG91dCBhIHRhcmdldCB3aW5kb3csIGBpZGVudGl0eWAgd2lsbCBiZVxuXHRcdCAqIHVuZGVmaW5lZC5cblx0XHQgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCB3aW5kb3cuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGNyZWF0ZVdpbmRvdyhcblx0XHRcdG9wdGlvbnM6IE9wZW5GaW4uUGxhdGZvcm1XaW5kb3dDcmVhdGlvbk9wdGlvbnMsXG5cdFx0XHRpZGVudGl0eT86IE9wZW5GaW4uSWRlbnRpdHlcblx0XHQpOiBQcm9taXNlPE9wZW5GaW4uV2luZG93PiB7XG5cdFx0XHQvLyBBdXRvU2hvdyBpcyBub3QgZGVmaW5lZCBhcyBvcHRpb25hbCwgYnV0IGl0IGNhbiBiZSB1bmRlZmluZWRcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktYm9vbGVhbi1saXRlcmFsLWNvbXBhcmVcblx0XHRcdGlmIChvcHRpb25zLmF1dG9TaG93ID09PSBmYWxzZSkge1xuXHRcdFx0XHQvLyBXZSB1c2UgdGhpcyBjYXNlIHRvIG1hdGNoIG1vZGFsIHdpbmRvd3Ncblx0XHRcdFx0Ly8gc28gd2UgZG9uJ3QgdGhlbWUgb3IgcG9zaXRpb24gdGhlbVxuXHRcdFx0XHRyZXR1cm4gc3VwZXIuY3JlYXRlV2luZG93KG9wdGlvbnMsIGlkZW50aXR5KTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCF3aW5kb3dQb3NpdGlvbmluZ1N0cmF0ZWd5IHx8IGlzRW1wdHkod2luZG93RGVmYXVsdExlZnQpIHx8IGlzRW1wdHkod2luZG93RGVmYXVsdFRvcCkpIHtcblx0XHRcdFx0Y29uc3QgYXBwID0gYXdhaXQgZmluLkFwcGxpY2F0aW9uLmdldEN1cnJlbnQoKTtcblx0XHRcdFx0Y29uc3QgcGxhdGZvcm1NYW5pZmVzdDogT3BlbkZpbi5NYW5pZmVzdCA9IGF3YWl0IGFwcC5nZXRNYW5pZmVzdCgpO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcIlBsYXRmb3JtIERlZmF1bHQgV2luZG93IE9wdGlvbnNcIiwgcGxhdGZvcm1NYW5pZmVzdD8ucGxhdGZvcm0/LmRlZmF1bHRXaW5kb3dPcHRpb25zKTtcblxuXHRcdFx0XHRjb25zdCBzZXR0aW5ncyA9IGF3YWl0IGdldFNldHRpbmdzKCk7XG5cblx0XHRcdFx0d2luZG93RGVmYXVsdExlZnQgPVxuXHRcdFx0XHRcdHNldHRpbmdzLmJyb3dzZXJQcm92aWRlcj8uZGVmYXVsdFdpbmRvd09wdGlvbnM/LmRlZmF1bHRMZWZ0ID8/XG5cdFx0XHRcdFx0cGxhdGZvcm1NYW5pZmVzdD8ucGxhdGZvcm0/LmRlZmF1bHRXaW5kb3dPcHRpb25zPy5kZWZhdWx0TGVmdCA/P1xuXHRcdFx0XHRcdDA7XG5cdFx0XHRcdHdpbmRvd0RlZmF1bHRUb3AgPVxuXHRcdFx0XHRcdHNldHRpbmdzLmJyb3dzZXJQcm92aWRlcj8uZGVmYXVsdFdpbmRvd09wdGlvbnM/LmRlZmF1bHRUb3AgPz9cblx0XHRcdFx0XHRwbGF0Zm9ybU1hbmlmZXN0Py5wbGF0Zm9ybT8uZGVmYXVsdFdpbmRvd09wdGlvbnM/LmRlZmF1bHRUb3AgPz9cblx0XHRcdFx0XHQwO1xuXG5cdFx0XHRcdHdpbmRvd1Bvc2l0aW9uaW5nU3RyYXRlZ3kgPSBzZXR0aW5ncy5icm93c2VyUHJvdmlkZXI/LndpbmRvd1Bvc2l0aW9uaW5nU3RyYXRlZ3k7XG5cdFx0XHR9XG5cblx0XHRcdGxvZ2dlci5pbmZvKFwiQ3JlYXRlIFdpbmRvd1wiLCBvcHRpb25zKTtcblxuXHRcdFx0Y29uc3QgaGFzTGVmdCA9ICFpc0VtcHR5KG9wdGlvbnM/LmRlZmF1bHRMZWZ0KTtcblx0XHRcdGNvbnN0IGhhc1RvcCA9ICFpc0VtcHR5KG9wdGlvbnM/LmRlZmF1bHRUb3ApO1xuXG5cdFx0XHRpZiAoIWhhc0xlZnQgfHwgIWhhc1RvcCkge1xuXHRcdFx0XHQvLyBHZXQgdGhlIGF2YWlsYWJsZSByZWN0IGZvciB0aGUgZGlzcGxheSBzbyB3ZSBjYW4gdGFrZSBpbiB0byBhY2NvdW50XG5cdFx0XHRcdC8vIE9TIG1lbnVzLCB0YXNrIGJhciBldGNcblx0XHRcdFx0Y29uc3QgbW9uaXRvckluZm8gPSBhd2FpdCBmaW4uU3lzdGVtLmdldE1vbml0b3JJbmZvKCk7XG5cdFx0XHRcdGNvbnN0IGF2YWlsYWJsZUxlZnQgPSBtb25pdG9ySW5mby5wcmltYXJ5TW9uaXRvci5hdmFpbGFibGVSZWN0LmxlZnQ7XG5cdFx0XHRcdGNvbnN0IGF2YWlsYWJsZVRvcCA9IG1vbml0b3JJbmZvLnByaW1hcnlNb25pdG9yLmF2YWlsYWJsZVJlY3QudG9wO1xuXG5cdFx0XHRcdGNvbnN0IHdpbmRvd09mZnNldHNYOiBudW1iZXIgPSB3aW5kb3dQb3NpdGlvbmluZ1N0cmF0ZWd5Py54ID8/IDMwO1xuXHRcdFx0XHRjb25zdCB3aW5kb3dPZmZzZXRzWTogbnVtYmVyID0gd2luZG93UG9zaXRpb25pbmdTdHJhdGVneT8ueSA/PyAzMDtcblx0XHRcdFx0Y29uc3Qgd2luZG93T2Zmc2V0c01heEluY3JlbWVudHM6IG51bWJlciA9IHdpbmRvd1Bvc2l0aW9uaW5nU3RyYXRlZ3k/Lm1heEluY3JlbWVudHMgPz8gODtcblxuXHRcdFx0XHRjb25zdCB2aXNpYmxlV2luZG93cyA9IGF3YWl0IGdldEFsbFZpc2libGVXaW5kb3dzKCk7XG5cblx0XHRcdFx0Ly8gR2V0IHRoZSB0b3AgbGVmdCBib3VuZHMgZm9yIGFsbCB0aGUgdmlzaWJsZSB3aW5kb3dzXG5cdFx0XHRcdGNvbnN0IHRvcExlZnRCb3VuZHMgPSBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdFx0XHR2aXNpYmxlV2luZG93cy5tYXAoYXN5bmMgKHdpbikgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgYm91bmRzID0gYXdhaXQgd2luLmdldEJvdW5kcygpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0bGVmdDogYm91bmRzLmxlZnQsXG5cdFx0XHRcdFx0XHRcdHRvcDogYm91bmRzLnRvcCxcblx0XHRcdFx0XHRcdFx0cmlnaHQ6IGJvdW5kcy5sZWZ0ICsgd2luZG93T2Zmc2V0c1gsXG5cdFx0XHRcdFx0XHRcdGJvdHRvbTogYm91bmRzLnRvcCArIHdpbmRvd09mZnNldHNZXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0bGV0IG1pbkNvdW50VmFsOiBudW1iZXIgPSAxMDAwO1xuXHRcdFx0XHRsZXQgbWluQ291bnRJbmRleCA9IHdpbmRvd09mZnNldHNNYXhJbmNyZW1lbnRzO1xuXG5cdFx0XHRcdC8vIE5vdyBzZWUgaG93IG1hbnkgd2luZG93cyBhcHBlYXIgaW4gZWFjaCBpbmNyZW1lbnQgc2xvdFxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHdpbmRvd09mZnNldHNNYXhJbmNyZW1lbnRzOyBpKyspIHtcblx0XHRcdFx0XHRjb25zdCB4UG9zID0gaSAqIHdpbmRvd09mZnNldHNYO1xuXHRcdFx0XHRcdGNvbnN0IHlQb3MgPSBpICogd2luZG93T2Zmc2V0c1k7XG5cdFx0XHRcdFx0Y29uc3QgbGVmdFBvcyA9IHdpbmRvd0RlZmF1bHRMZWZ0ICsgeFBvcztcblx0XHRcdFx0XHRjb25zdCB0b3BQb3MgPSB3aW5kb3dEZWZhdWx0VG9wICsgeVBvcztcblx0XHRcdFx0XHRjb25zdCBmb3VuZFdpbnMgPSB0b3BMZWZ0Qm91bmRzLmZpbHRlcihcblx0XHRcdFx0XHRcdCh0b3BMZWZ0V2luQm91bmRzKSA9PlxuXHRcdFx0XHRcdFx0XHR0b3BMZWZ0V2luQm91bmRzLmxlZnQgPj0gbGVmdFBvcyAmJlxuXHRcdFx0XHRcdFx0XHR0b3BMZWZ0V2luQm91bmRzLnJpZ2h0IDw9IGxlZnRQb3MgKyB3aW5kb3dPZmZzZXRzWCArIGF2YWlsYWJsZUxlZnQgJiZcblx0XHRcdFx0XHRcdFx0dG9wTGVmdFdpbkJvdW5kcy50b3AgPj0gdG9wUG9zICYmXG5cdFx0XHRcdFx0XHRcdHRvcExlZnRXaW5Cb3VuZHMuYm90dG9tIDw9IHRvcFBvcyArIHdpbmRvd09mZnNldHNZICsgYXZhaWxhYmxlVG9wXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdC8vIElmIHRoaXMgc2xvdCBoYXMgbGVzcyB0aGFuIHRoZSBjdXJyZW50IG1pbmltdW0gdXNlIHRoaXMgc2xvdFxuXHRcdFx0XHRcdGlmIChmb3VuZFdpbnMubGVuZ3RoIDwgbWluQ291bnRWYWwpIHtcblx0XHRcdFx0XHRcdG1pbkNvdW50VmFsID0gZm91bmRXaW5zLmxlbmd0aDtcblx0XHRcdFx0XHRcdG1pbkNvdW50SW5kZXggPSBpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghaGFzTGVmdCkge1xuXHRcdFx0XHRcdGNvbnN0IHhPZmZzZXQgPSBtaW5Db3VudEluZGV4ICogd2luZG93T2Zmc2V0c1g7XG5cdFx0XHRcdFx0b3B0aW9ucy5kZWZhdWx0TGVmdCA9IHdpbmRvd0RlZmF1bHRMZWZ0ICsgeE9mZnNldCArIGF2YWlsYWJsZUxlZnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFoYXNUb3ApIHtcblx0XHRcdFx0XHRjb25zdCB5T2Zmc2V0ID0gbWluQ291bnRJbmRleCAqIHdpbmRvd09mZnNldHNZO1xuXHRcdFx0XHRcdG9wdGlvbnMuZGVmYXVsdFRvcCA9IHdpbmRvd0RlZmF1bHRUb3AgKyB5T2Zmc2V0ICsgYXZhaWxhYmxlVG9wO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IG92ZXJyaWRlRGVmYXVsdEJ1dHRvbnMgPSBBcnJheS5pc0FycmF5KG9wdGlvbnM/LndvcmtzcGFjZVBsYXRmb3JtPy50b29sYmFyT3B0aW9ucz8uYnV0dG9ucyk7XG5cblx0XHRcdGlmICghb3ZlcnJpZGVEZWZhdWx0QnV0dG9ucykge1xuXHRcdFx0XHQvLyBUaGUgd2luZG93IG9wdGlvbnMgZG9uJ3Qgb3ZlcnJpZGUgdGhlIHRvb2xiYXIgYnV0dG9uc1xuXHRcdFx0XHQvLyBzbyB3ZSBhc3N1bWUgd2UgYXJlIHVzaW5nIHRoZSB3b3Jrc3BhY2UgZGVmYXVsdHNcblx0XHRcdFx0Ly8gU2luY2UgdGhlIGRlZmF1bHRzIHdlcmUgY3JlYXRlZCB1c2luZyB0aGUgdGhlbWUgYXQgc3RhcnR1cFxuXHRcdFx0XHQvLyB3ZSBuZWVkIHRvIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBjdXJyZW50IHNldCBvZiBkZWZhdWx0XG5cdFx0XHRcdC8vIGJ1dHRvbnMgd2hpY2ggYXJlIHRoZW1lIGFuZCBjb25kaXRpb24gYXdhcmVcblx0XHRcdFx0b3B0aW9ucy53b3Jrc3BhY2VQbGF0Zm9ybSA9IG9wdGlvbnMud29ya3NwYWNlUGxhdGZvcm0gPz8ge307XG5cdFx0XHRcdG9wdGlvbnMud29ya3NwYWNlUGxhdGZvcm0udG9vbGJhck9wdGlvbnMgPSBvcHRpb25zLndvcmtzcGFjZVBsYXRmb3JtLnRvb2xiYXJPcHRpb25zID8/IHt9O1xuXHRcdFx0XHRjb25zdCBidXR0b25zID0gYXdhaXQgZ2V0VG9vbGJhckJ1dHRvbnMob3B0aW9ucyk7XG5cdFx0XHRcdGlmICghaXNFbXB0eShidXR0b25zKSkge1xuXHRcdFx0XHRcdG9wdGlvbnMud29ya3NwYWNlUGxhdGZvcm0udG9vbGJhck9wdGlvbnMuYnV0dG9ucyA9IGJ1dHRvbnM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Y29uc3Qgd2luZG93ID0gYXdhaXQgc3VwZXIuY3JlYXRlV2luZG93KG9wdGlvbnMsIGlkZW50aXR5KTtcblxuXHRcdFx0bG9nZ2VyLmluZm8oXCJBZnRlciBDcmVhdGUgV2luZG93XCIsIGF3YWl0IHdpbmRvdy5nZXRPcHRpb25zKCkpO1xuXG5cdFx0XHQvLyBJZiB0aGUgZGVmYXVsdCBidXR0b25zIHdlcmUgb3ZlcndyaXR0ZW4gdGhlbiBob3BlZnVsbHkgdGhlIGNyZWF0b3Jcblx0XHRcdC8vIHVzZWQgY29ycmVjdGx5IHRoZW1lZCB2ZXJzaW9ucywgYnV0IGluIGNhc2UgdGhleSBkaWRuJ3Qgd2Ugc2VuZFxuXHRcdFx0Ly8gYW4gdXBkYXRlIGZvciB0aGUgY29sb3JzLlxuXHRcdFx0aWYgKG92ZXJyaWRlRGVmYXVsdEJ1dHRvbnMpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHRcdFx0Y29uc3QgYnJvd3NlcldpbmRvdyA9IHBsYXRmb3JtLkJyb3dzZXIud3JhcFN5bmMod2luZG93LmlkZW50aXR5KTtcblx0XHRcdFx0XHRhd2FpdCB1cGRhdGVCcm93c2VyV2luZG93QnV0dG9uc0NvbG9yU2NoZW1lKGJyb3dzZXJXaW5kb3cpO1xuXHRcdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0XHQvLyBQcm9iYWJseSBub3QgYSBicm93c2VyIHdpbmRvd1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB3aW5kb3c7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSW1wbGVtZW50YXRpb24gZm9yIHNldHRpbmcgc2VsZWN0ZWQgc2NoZW1lLlxuXHRcdCAqIEBwYXJhbSBzY2hlbWVUeXBlIFNjaGVtZSB0byBiZSBzZXRcblx0XHQgKiBAcmV0dXJucyBOb3RoaW5nLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBzZXRTZWxlY3RlZFNjaGVtZShzY2hlbWVUeXBlOiBDb2xvclNjaGVtZU9wdGlvblR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdC8vIFRoZSBjb2xvciBzY2hlbWUgaGFzIGJlZW4gdXBkYXRlZCwgc28gdXBkYXRlIHRoZSB0aGVtZVxuXHRcdFx0YXdhaXQgc2V0Q3VycmVudENvbG9yU2NoZW1lTW9kZShzY2hlbWVUeXBlKTtcblxuXHRcdFx0cmV0dXJuIHN1cGVyLnNldFNlbGVjdGVkU2NoZW1lKHNjaGVtZVR5cGUpO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciBoYW5kbGluZyBXb3Jrc3BhY2UgYW5hbHl0aWNzIGV2ZW50cy5cblx0XHQgKiBAcGFyYW0gZXZlbnRzIFRoZSBsaXN0IG9mIGFuYWx5dGljcyBldmVudHMgdG8gcHJvY2Vzcy5cblx0XHQgKiBAcmV0dXJucyBOb3RoaW5nLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBoYW5kbGVBbmFseXRpY3MoZXZlbnRzOiBBbmFseXRpY3NFdmVudFtdKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0XHRpZiAoYW5hbHl0aWNzUHJvdmlkZXIuaXNFbmFibGVkKCkpIHtcblx0XHRcdFx0Y29uc3QgcGxhdGZvcm1FdmVudHM6IFBsYXRmb3JtQW5hbHl0aWNzRXZlbnRbXSA9IFtdO1xuXHRcdFx0XHRjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGFuYWx5dGljRXZlbnQgb2YgZXZlbnRzKSB7XG5cdFx0XHRcdFx0cGxhdGZvcm1FdmVudHMucHVzaCh7IHRpbWVzdGFtcCwgLi4uYW5hbHl0aWNFdmVudCB9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhd2FpdCBhbmFseXRpY3NQcm92aWRlci5oYW5kbGVBbmFseXRpY3MocGxhdGZvcm1FdmVudHMpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gc3VwZXIuaGFuZGxlQW5hbHl0aWNzKGV2ZW50cyk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBuZXcgT3ZlcnJpZGUoKTtcbn1cbiIsImltcG9ydCB0eXBlIE9wZW5GaW4gZnJvbSBcIkBvcGVuZmluL2NvcmVcIjtcbmltcG9ydCB7IGdldE1hbmlmZXN0Q3VzdG9tU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2V0dGluZ3NcIjtcbmltcG9ydCB7IGZvcm1hdEVycm9yLCBpc1N0cmluZ1ZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmxldCB3aW46IE9wZW5GaW4uV2luZG93IHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIE9wZW4gYSBzcGxhc2ggc2NyZWVuLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlbigpOiBQcm9taXNlPHZvaWQ+IHtcblx0Y29uc3QgYXBwID0gYXdhaXQgZmluLkFwcGxpY2F0aW9uLmdldEN1cnJlbnQoKTtcblx0Y29uc3QgbWFuaWZlc3QgPSBhd2FpdCBhcHAuZ2V0TWFuaWZlc3QoKTtcblxuXHRpZiAobWFuaWZlc3Q/LnBsYXRmb3JtPy5wcmV2ZW50UXVpdE9uTGFzdFdpbmRvd0Nsb3NlZCAhPT0gdHJ1ZSkge1xuXHRcdGNvbnNvbGUud2Fybihcblx0XHRcdFwiVGhlIG1hbmlmZXN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIHBsYXRmb3JtLnByZXZlbnRRdWl0T25MYXN0V2luZG93Q2xvc2VkIGZsYWcgc2V0IHRvIHRydWUsIHRoZSBzcGxhc2ggc2NyZWVuIGNhbiBub3QgYmUgc2hvd24gd2l0aG91dCB0aGlzIGZsYWcgc2V0XCJcblx0XHQpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IGN1c3RvbVNldHRpbmdzID0gYXdhaXQgZ2V0TWFuaWZlc3RDdXN0b21TZXR0aW5ncygpO1xuXG5cdGNvbnN0IGRpc2FibGVkID0gY3VzdG9tU2V0dGluZ3M/LnNwbGFzaFNjcmVlblByb3ZpZGVyPy5kaXNhYmxlZCA/PyBmYWxzZTtcblxuXHRpZiAoIWRpc2FibGVkKSB7XG5cdFx0dHJ5IHtcblx0XHRcdHdpbiA9IGF3YWl0IGZpbi5XaW5kb3cuY3JlYXRlKHtcblx0XHRcdFx0bmFtZTogXCJwbGF0Zm9ybS1zcGxhc2hcIixcblx0XHRcdFx0dXJsOiBgJHt3aW5kb3cubG9jYXRpb24uaHJlZi5yZXBsYWNlKFwicHJvdmlkZXIuaHRtbFwiLCBcInNwbGFzaC5odG1sXCIpfWAsXG5cdFx0XHRcdGFsd2F5c09uVG9wOiB0cnVlLFxuXHRcdFx0XHRtYXhpbWl6YWJsZTogZmFsc2UsXG5cdFx0XHRcdG1pbmltaXphYmxlOiBmYWxzZSxcblx0XHRcdFx0ZnJhbWU6IGZhbHNlLFxuXHRcdFx0XHRhdXRvU2hvdzogZmFsc2UsXG5cdFx0XHRcdGRlZmF1bHRDZW50ZXJlZDogdHJ1ZSxcblx0XHRcdFx0ZGVmYXVsdFdpZHRoOiBjdXN0b21TZXR0aW5ncz8uc3BsYXNoU2NyZWVuUHJvdmlkZXI/LndpZHRoID8/IDQwMCxcblx0XHRcdFx0ZGVmYXVsdEhlaWdodDogY3VzdG9tU2V0dGluZ3M/LnNwbGFzaFNjcmVlblByb3ZpZGVyPy5oZWlnaHQgPz8gMTMwLFxuXHRcdFx0XHRpbmNsdWRlSW5TbmFwc2hvdHM6IGZhbHNlLFxuXHRcdFx0XHRyZXNpemFibGU6IGZhbHNlLFxuXHRcdFx0XHRzYXZlV2luZG93U3RhdGU6IGZhbHNlLFxuXHRcdFx0XHRzaG93VGFza2Jhckljb246IHRydWVcblx0XHRcdH0pO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0Y29uc29sZS5lcnJvcihcIlVuYWJsZSB0byBkaXNwbGF5IHNwbGFzaCBzY3JlZW5cIiwgZm9ybWF0RXJyb3IoZXJyKSk7XG5cdFx0fVxuXG5cdFx0aWYgKHdpbikge1xuXHRcdFx0YXdhaXQgd2luLnVwZGF0ZU9wdGlvbnMoeyBhbHdheXNPblRvcDogZmFsc2UgfSk7XG5cblx0XHRcdGNvbnN0IHdlYldpbiA9IHdpbi5nZXRXZWJXaW5kb3coKTtcblx0XHRcdGlmICh3ZWJXaW4pIHtcblx0XHRcdFx0Y29uc3QgdGl0bGUgPSBjdXN0b21TZXR0aW5ncy5zcGxhc2hTY3JlZW5Qcm92aWRlcj8udGl0bGUgPz8gbWFuaWZlc3Quc2hvcnRjdXQ/Lm5hbWUgPz8gXCJPcGVuRmluXCI7XG5cdFx0XHRcdGNvbnN0IGljb24gPVxuXHRcdFx0XHRcdGN1c3RvbVNldHRpbmdzLnNwbGFzaFNjcmVlblByb3ZpZGVyPy5pY29uID8/XG5cdFx0XHRcdFx0bWFuaWZlc3QucGxhdGZvcm0/Lmljb24gPz9cblx0XHRcdFx0XHRcIi4uL2NvbW1vbi9pbWFnZXMvaWNvbi1ibHVlLnBuZ1wiO1xuXHRcdFx0XHRsZXQgYmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBjdXN0b21TZXR0aW5ncy5zcGxhc2hTY3JlZW5Qcm92aWRlcj8uYmFja2dyb3VuZENvbG9yO1xuXHRcdFx0XHRsZXQgdGV4dENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBjdXN0b21TZXR0aW5ncy5zcGxhc2hTY3JlZW5Qcm92aWRlcj8udGV4dENvbG9yO1xuXHRcdFx0XHRsZXQgYm9yZGVyQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGN1c3RvbVNldHRpbmdzLnNwbGFzaFNjcmVlblByb3ZpZGVyPy5ib3JkZXJDb2xvcjtcblxuXHRcdFx0XHR3ZWJXaW4uZG9jdW1lbnQudGl0bGUgPSB0aXRsZTtcblxuXHRcdFx0XHRjb25zdCBpY29uRWxlbSA9IHdlYldpbi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxJbWFnZUVsZW1lbnQ+KFwiI2ljb25cIik7XG5cdFx0XHRcdGlmIChpY29uRWxlbSkge1xuXHRcdFx0XHRcdGljb25FbGVtLnNyYyA9IGljb247XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBoZWFkaW5nRWxlbSA9IHdlYldpbi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihcIiNoZWFkaW5nXCIpO1xuXHRcdFx0XHRpZiAoaGVhZGluZ0VsZW0pIHtcblx0XHRcdFx0XHRoZWFkaW5nRWxlbS50ZXh0Q29udGVudCA9IHRpdGxlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgaGFzQmFja2dyb3VuZCA9IGlzU3RyaW5nVmFsdWUoYmFja2dyb3VuZENvbG9yKTtcblx0XHRcdFx0Y29uc3QgaGFzVGV4dCA9IGlzU3RyaW5nVmFsdWUodGV4dENvbG9yKTtcblx0XHRcdFx0Y29uc3QgaGFzQm9yZGVyID0gaXNTdHJpbmdWYWx1ZShib3JkZXJDb2xvcik7XG5cdFx0XHRcdGlmICgoIWhhc0JhY2tncm91bmQgfHwgIWhhc1RleHQgfHwgIWhhc0JvcmRlcikgJiYgY3VzdG9tU2V0dGluZ3M/LnRoZW1lUHJvdmlkZXI/LnRoZW1lcz8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Y29uc3QgdGhlbWUgPSBjdXN0b21TZXR0aW5ncy50aGVtZVByb3ZpZGVyLnRoZW1lc1swXTtcblx0XHRcdFx0XHRpZiAoXCJwYWxldHRlc1wiIGluIHRoZW1lKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBwYWxldHRlID1cblx0XHRcdFx0XHRcdFx0dGhlbWUucGFsZXR0ZXNbdGhlbWUuZGVmYXVsdCA/PyAoT2JqZWN0LmtleXModGhlbWUucGFsZXR0ZXMpWzBdIGFzIFwiZGFya1wiIHwgXCJsaWdodFwiKV07XG5cblx0XHRcdFx0XHRcdGlmICghaGFzQmFja2dyb3VuZCkge1xuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3IgPSBwYWxldHRlPy5iYWNrZ3JvdW5kUHJpbWFyeTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0aWYgKCFoYXNUZXh0KSB7XG5cdFx0XHRcdFx0XHRcdHRleHRDb2xvciA9IHBhbGV0dGU/LnRleHREZWZhdWx0O1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRpZiAoIWhhc0JvcmRlcikge1xuXHRcdFx0XHRcdFx0XHRib3JkZXJDb2xvciA9IHBhbGV0dGU/LmJhY2tncm91bmQ0O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChiYWNrZ3JvdW5kQ29sb3IpIHtcblx0XHRcdFx0XHR3ZWJXaW4uZG9jdW1lbnQuYm9keS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3I7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodGV4dENvbG9yKSB7XG5cdFx0XHRcdFx0aWYgKGhlYWRpbmdFbGVtKSB7XG5cdFx0XHRcdFx0XHRoZWFkaW5nRWxlbS5zdHlsZS5jb2xvciA9IHRleHRDb2xvcjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgcHJvZ3Jlc3NFbGVtID0gd2ViV2luLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KFwiI3Byb2dyZXNzXCIpO1xuXHRcdFx0XHRcdGlmIChwcm9ncmVzc0VsZW0pIHtcblx0XHRcdFx0XHRcdHByb2dyZXNzRWxlbS5zdHlsZS5jb2xvciA9IHRleHRDb2xvcjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgbG9hZGVyRWxlbSA9IHdlYldpbi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihcIiNsb2FkZXJcIik7XG5cdFx0XHRcdFx0aWYgKGxvYWRlckVsZW0pIHtcblx0XHRcdFx0XHRcdGxvYWRlckVsZW0uc3R5bGUuY29sb3IgPSB0ZXh0Q29sb3I7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGJvcmRlckNvbG9yKSB7XG5cdFx0XHRcdFx0Y29uc3QgaGVhZGVyRWxlbSA9IHdlYldpbi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihcImhlYWRlclwiKTtcblx0XHRcdFx0XHRpZiAoaGVhZGVyRWxlbSkge1xuXHRcdFx0XHRcdFx0aGVhZGVyRWxlbS5zdHlsZS5ib3JkZXJCb3R0b21Db2xvciA9IGJvcmRlckNvbG9yO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0YXdhaXQgd2luLnNob3coKTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBDbG9zZSBhIHNwbGFzaCBzY3JlZW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKHdpbikge1xuXHRcdGF3YWl0IHdpbi5jbG9zZSgpO1xuXHRcdHdpbiA9IHVuZGVmaW5lZDtcblx0fVxufVxuXG4vKipcbiAqIFVwZGF0ZSB0aGUgcHJvZ3Jlc3Mgb24gdGhlIHNwbGFzaCB3aW5kb3cuXG4gKiBAcGFyYW0gcHJvZ3Jlc3MgVGhlIHByb2dyZXNzIHRleHQgdG8gZGlzcGxheS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVByb2dyZXNzKHByb2dyZXNzOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKHdpbikge1xuXHRcdGNvbnN0IHdlYldpbiA9IHdpbi5nZXRXZWJXaW5kb3coKTtcblx0XHRpZiAod2ViV2luKSB7XG5cdFx0XHRjb25zdCBlbGVtID0gd2ViV2luLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjcHJvZ3Jlc3NcIik7XG5cdFx0XHRpZiAoZWxlbSkge1xuXHRcdFx0XHRlbGVtLnRleHRDb250ZW50ID0gYEluaXRpYWxpemluZyAke3Byb2dyZXNzfS4uLmA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG4iLCIvLyBHZW5lcmF0ZWQgZnJvbSBwYWNrYWdlLmpzb24gdmVyc2lvbiBhdCBidWlsZCB0aW1lLiBEbyBub3QgbW9kaWZ5IGRpcmVjdGx5LlxuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX1ZFUlNJT04gPSBcIjE0LjAuMjJcIjtcbiIsImltcG9ydCB7XG5cdGdldEN1cnJlbnRTeW5jLFxuXHRpbml0IGFzIHdvcmtzcGFjZVBsYXRmb3JtSW5pdCxcblx0dHlwZSBCcm93c2VySW5pdENvbmZpZ1xufSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgKiBhcyBhY3Rpb25zUHJvdmlkZXIgZnJvbSBcIi4uL2FjdGlvbnNcIjtcbmltcG9ydCAqIGFzIGFuYWx5dGljc1Byb3ZpZGVyIGZyb20gXCIuLi9hbmFseXRpY3NcIjtcbmltcG9ydCAqIGFzIGFwcFByb3ZpZGVyIGZyb20gXCIuLi9hcHBzXCI7XG5pbXBvcnQgKiBhcyBhdXRoIGZyb20gXCIuLi9hdXRoXCI7XG5pbXBvcnQgKiBhcyBhdXRoRmxvdyBmcm9tIFwiLi4vYXV0aC1mbG93XCI7XG5pbXBvcnQgKiBhcyBjb25kaXRpb25zUHJvdmlkZXIgZnJvbSBcIi4uL2NvbmRpdGlvbnNcIjtcbmltcG9ydCAqIGFzIGNvbm5lY3Rpb25Qcm92aWRlciBmcm9tIFwiLi4vY29ubmVjdGlvbnNcIjtcbmltcG9ydCAqIGFzIGVuZHBvaW50UHJvdmlkZXIgZnJvbSBcIi4uL2VuZHBvaW50XCI7XG5pbXBvcnQgKiBhcyBmYXZvcml0ZVByb3ZpZGVyIGZyb20gXCIuLi9mYXZvcml0ZVwiO1xuaW1wb3J0ICogYXMgaW5pdE9wdGlvbnNQcm92aWRlciBmcm9tIFwiLi4vaW5pdC1vcHRpb25zXCI7XG5pbXBvcnQgKiBhcyBsaWZlY3ljbGVQcm92aWRlciBmcm9tIFwiLi4vbGlmZWN5Y2xlXCI7XG5pbXBvcnQgKiBhcyBsb2dnZXJQcm92aWRlciBmcm9tIFwiLi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgKiBhcyBtZW51c1Byb3ZpZGVyIGZyb20gXCIuLi9tZW51XCI7XG5pbXBvcnQgKiBhcyBtb2R1bGVzIGZyb20gXCIuLi9tb2R1bGVzXCI7XG5pbXBvcnQgeyBnZXRNYW5pZmVzdEN1c3RvbVNldHRpbmdzLCBnZXRTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21TZXR0aW5ncywgTW9kdWxlSGVscGVycyB9IGZyb20gXCIuLi9zaGFwZXNcIjtcbmltcG9ydCAqIGFzIHNoYXJlUHJvdmlkZXIgZnJvbSBcIi4uL3NoYXJlXCI7XG5pbXBvcnQgeyBnZXRUaGVtZXMsIG5vdGlmeUNvbG9yU2NoZW1lLCBzdXBwb3J0c0NvbG9yU2NoZW1lcyB9IGZyb20gXCIuLi90aGVtZXNcIjtcbmltcG9ydCB7IGlzRW1wdHksIHJhbmRvbVVVSUQgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHZlcnNpb25Qcm92aWRlciBmcm9tIFwiLi4vdmVyc2lvblwiO1xuaW1wb3J0ICogYXMgbG93Q29kZUludGVncmF0aW9uUHJvdmlkZXIgZnJvbSBcIi4uL3dvcmtzcGFjZS9sb3ctY29kZS1pbnRlZ3JhdGlvbnNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRXaW5kb3dPcHRpb25zIH0gZnJvbSBcIi4vYnJvd3NlclwiO1xuaW1wb3J0IHsgaW50ZXJvcE92ZXJyaWRlIH0gZnJvbSBcIi4vaW50ZXJvcGJyb2tlclwiO1xuaW1wb3J0IHsgb3ZlcnJpZGVDYWxsYmFjayB9IGZyb20gXCIuL3BsYXRmb3JtLW92ZXJyaWRlXCI7XG5pbXBvcnQgKiBhcyBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyIGZyb20gXCIuL3BsYXRmb3JtLXNwbGFzaFwiO1xuaW1wb3J0IHsgUExBVEZPUk1fVkVSU0lPTiB9IGZyb20gXCIuL3BsYXRmb3JtLXZlcnNpb25cIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nZ2VyUHJvdmlkZXIuY3JlYXRlTG9nZ2VyKFwiUGxhdGZvcm1cIik7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgcGxhdGZvcm0uXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBwbGF0Zm9ybSB3YXMgaW5pdGlhbGl6ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiUGxhdGZvcm1cIik7XG5cblx0Y29uc3QgY3VzdG9tU2V0dGluZ3MgPSBhd2FpdCBnZXRNYW5pZmVzdEN1c3RvbVNldHRpbmdzKCk7XG5cblx0Y29uc3QgaXNWYWxpZCA9IGF3YWl0IGF1dGhGbG93LmluaXQoXG5cdFx0Y3VzdG9tU2V0dGluZ3MuYXV0aFByb3ZpZGVyLFxuXHRcdGFzeW5jICgpID0+IHNldHVwUGxhdGZvcm0oY3VzdG9tU2V0dGluZ3MpLFxuXHRcdGxvZ2dlcixcblx0XHR0cnVlXG5cdCk7XG5cblx0aWYgKCFpc1ZhbGlkKSB7XG5cdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XCJUaGUgcGxhdGZvcm0gY2Fubm90IHN0YXJ0dXAgYXMgdGhlcmUgd2FzIGEgcHJvYmxlbSB3aXRoIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgYXV0aCBmbG93LlwiXG5cdFx0KTtcblx0fVxuXG5cdHJldHVybiBpc1ZhbGlkO1xufVxuXG4vKipcbiAqIFNldHVwIHRoZSBwbGF0Zm9ybS5cbiAqIEBwYXJhbSBtYW5pZmVzdFNldHRpbmdzIFRoZSBjdXN0b20gc2V0dGluZyB0byB1c2UgZm9yIHNldHRpbmcgdXAgdGhlIHBsYXRmb3JtLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcGxhdGZvcm0gc2V0dXAgd2FzIHN1Y2Nlc3NmdWwuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNldHVwUGxhdGZvcm0obWFuaWZlc3RTZXR0aW5nczogQ3VzdG9tU2V0dGluZ3MpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0Ly8gTG9hZCB0aGUgaW5pdCBvcHRpb25zIGZyb20gdGhlIGluaXRpYWwgbWFuaWZlc3Rcblx0Ly8gYW5kIG5vdGlmeSBhbnkgYWN0aW9ucyB3aXRoIHRoZSBhZnRlciBhdXRoIGxpZmVjeWNsZVxuXHRhd2FpdCBtb2R1bGVzLmluaXQocmFuZG9tVVVJRCgpKTtcblxuXHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiSW5pdCBPcHRpb25zXCIpO1xuXG5cdGNvbnN0IGhlbHBlcnM6IE1vZHVsZUhlbHBlcnMgPSBtb2R1bGVzLmdldERlZmF1bHRIZWxwZXJzKCk7XG5cblx0YXdhaXQgaW5pdE9wdGlvbnNQcm92aWRlci5pbml0KG1hbmlmZXN0U2V0dGluZ3M/LmluaXRPcHRpb25zUHJvdmlkZXIsIGhlbHBlcnMsIFwiYWZ0ZXItYXV0aFwiKTtcblxuXHQvLyBXZSByZWxvYWQgdGhlIHNldHRpbmdzIG5vdyB0aGF0IGVuZHBvaW50cyBoYXZlIGJlZW4gY29uZmlndXJlZC5cblx0Y29uc3QgY3VzdG9tU2V0dGluZ3M6IEN1c3RvbVNldHRpbmdzID0gYXdhaXQgZ2V0U2V0dGluZ3MoKTtcblxuXHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiTG9nZ2VyXCIpO1xuXG5cdGF3YWl0IGxvZ2dlclByb3ZpZGVyLmluaXQoY3VzdG9tU2V0dGluZ3M/LmxvZ2dlclByb3ZpZGVyLCBoZWxwZXJzKTtcblxuXHRsb2dnZXIuaW5mbyhcIkluaXRpYWxpemluZyBDb3JlIFNlcnZpY2VzXCIpO1xuXG5cdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJFbmRwb2ludHNcIik7XG5cblx0YXdhaXQgZW5kcG9pbnRQcm92aWRlci5pbml0KGN1c3RvbVNldHRpbmdzPy5lbmRwb2ludFByb3ZpZGVyLCBoZWxwZXJzKTtcblxuXHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiVmVyc2lvbmluZ1wiKTtcblxuXHRjb25zdCBydW50aW1lVmVyc2lvbiA9IGF3YWl0IGZpbi5TeXN0ZW0uZ2V0VmVyc2lvbigpO1xuXG5cdGF3YWl0IHZlcnNpb25Qcm92aWRlci5pbml0KGN1c3RvbVNldHRpbmdzPy52ZXJzaW9uUHJvdmlkZXIsIGVuZHBvaW50UHJvdmlkZXIpO1xuXHR2ZXJzaW9uUHJvdmlkZXIuc2V0VmVyc2lvbihcInJ1bnRpbWVcIiwgcnVudGltZVZlcnNpb24pO1xuXHR0cnkge1xuXHRcdGNvbnN0IHJ2bUluZm8gPSBhd2FpdCBmaW4uU3lzdGVtLmdldFJ2bUluZm8oKTtcblx0XHR2ZXJzaW9uUHJvdmlkZXIuc2V0VmVyc2lvbihcInJ2bVwiLCBydm1JbmZvLnZlcnNpb24pO1xuXHR9IGNhdGNoIHtcblx0XHRsb2dnZXIud2FybihcIlJWTSB2ZXJzaW9uIGluZm9ybWF0aW9uIHVuYXZhaWxhYmxlLlwiKTtcblx0fVxuXHR2ZXJzaW9uUHJvdmlkZXIuc2V0VmVyc2lvbihcInBsYXRmb3JtQ2xpZW50XCIsIFBMQVRGT1JNX1ZFUlNJT04pO1xuXG5cdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJDb25uZWN0aW9uc1wiKTtcblx0YXdhaXQgY29ubmVjdGlvblByb3ZpZGVyLmluaXQoY3VzdG9tU2V0dGluZ3M/LmNvbm5lY3Rpb25Qcm92aWRlcik7XG5cblx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci51cGRhdGVQcm9ncmVzcyhcIk1lbnVzXCIpO1xuXHRhd2FpdCBtZW51c1Byb3ZpZGVyLmluaXQoY3VzdG9tU2V0dGluZ3M/Lm1lbnVzUHJvdmlkZXIsIGhlbHBlcnMsIGN1c3RvbVNldHRpbmdzPy5wbGF0Zm9ybVByb3ZpZGVyPy5yb290VXJsKTtcblxuXHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiQW5hbHl0aWNzXCIpO1xuXHRhd2FpdCBhbmFseXRpY3NQcm92aWRlci5pbml0KGN1c3RvbVNldHRpbmdzPy5hbmFseXRpY3NQcm92aWRlciwgaGVscGVycyk7XG5cblx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci51cGRhdGVQcm9ncmVzcyhcIkFwcHNcIik7XG5cdGF3YWl0IGFwcFByb3ZpZGVyLmluaXQoY3VzdG9tU2V0dGluZ3M/LmFwcFByb3ZpZGVyLCBlbmRwb2ludFByb3ZpZGVyKTtcblxuXHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiQ29uZGl0aW9uc1wiKTtcblx0YXdhaXQgY29uZGl0aW9uc1Byb3ZpZGVyLmluaXQoY3VzdG9tU2V0dGluZ3M/LmNvbmRpdGlvbnNQcm92aWRlciwgaGVscGVycyk7XG5cdGNvbmRpdGlvbnNQcm92aWRlci5yZWdpc3RlckNvbmRpdGlvbihcblx0XHRcImF1dGhlbnRpY2F0ZWRcIixcblx0XHRhc3luYyAoKSA9PiBhdXRoLmlzQXV0aGVudGljYXRpb25FbmFibGVkKCkgJiYgIShhd2FpdCBhdXRoLmlzQXV0aGVudGljYXRpb25SZXF1aXJlZCgpKSxcblx0XHRmYWxzZVxuXHQpO1xuXHRjb25kaXRpb25zUHJvdmlkZXIucmVnaXN0ZXJDb25kaXRpb24oXCJzaGFyaW5nXCIsIGFzeW5jICgpID0+IHNoYXJlUHJvdmlkZXIuaXNTaGFyZUVuYWJsZWQoKSwgZmFsc2UpO1xuXHRjb25kaXRpb25zUHJvdmlkZXIucmVnaXN0ZXJDb25kaXRpb24oXCJ0aGVtZWRcIiwgYXN5bmMgKCkgPT4gc3VwcG9ydHNDb2xvclNjaGVtZXMoKSwgZmFsc2UpO1xuXG5cdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJMaWZlY3ljbGVzXCIpO1xuXHRhd2FpdCBsaWZlY3ljbGVQcm92aWRlci5pbml0KGN1c3RvbVNldHRpbmdzPy5saWZlY3ljbGVQcm92aWRlciwgaGVscGVycyk7XG5cblx0Y29uc3Qgc2hhcmluZ0VuYWJsZWQgPSBjdXN0b21TZXR0aW5ncy5wbGF0Zm9ybVByb3ZpZGVyPy5zaGFyaW5nID8/IHRydWU7XG5cdGlmIChzaGFyaW5nRW5hYmxlZCkge1xuXHRcdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJTaGFyaW5nXCIpO1xuXHRcdGF3YWl0IHNoYXJlUHJvdmlkZXIuaW5pdCh7IGVuYWJsZWQ6IHNoYXJpbmdFbmFibGVkIH0pO1xuXHR9XG5cblx0aWYgKCFpc0VtcHR5KGN1c3RvbVNldHRpbmdzPy5mYXZvcml0ZVByb3ZpZGVyKSAmJiAoY3VzdG9tU2V0dGluZ3M/LmZhdm9yaXRlUHJvdmlkZXIuZW5hYmxlZCA/PyB0cnVlKSkge1xuXHRcdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJGYXZvcml0ZXNcIik7XG5cdFx0YXdhaXQgZmF2b3JpdGVQcm92aWRlci5pbml0KFxuXHRcdFx0Y3VzdG9tU2V0dGluZ3M/LmZhdm9yaXRlUHJvdmlkZXIsXG5cdFx0XHRhd2FpdCB2ZXJzaW9uUHJvdmlkZXIuZ2V0VmVyc2lvbkluZm8oKSxcblx0XHRcdGVuZHBvaW50UHJvdmlkZXJcblx0XHQpO1xuXHR9XG5cblx0bG9nZ2VyLmluZm8oXCJJbml0aWFsaXppbmcgcGxhdGZvcm1cIik7XG5cdGNvbnN0IGJyb3dzZXI6IEJyb3dzZXJJbml0Q29uZmlnID0ge307XG5cblx0aWYgKCFpc0VtcHR5KGN1c3RvbVNldHRpbmdzPy5icm93c2VyUHJvdmlkZXIpKSB7XG5cdFx0YnJvd3Nlci5kZWZhdWx0V2luZG93T3B0aW9ucyA9IGF3YWl0IGdldERlZmF1bHRXaW5kb3dPcHRpb25zKGN1c3RvbVNldHRpbmdzLmJyb3dzZXJQcm92aWRlcik7XG5cdH1cblx0aWYgKCFpc0VtcHR5KGN1c3RvbVNldHRpbmdzPy5icm93c2VyUHJvdmlkZXI/LmRlZmF1bHRQYWdlT3B0aW9ucykpIHtcblx0XHRicm93c2VyLmRlZmF1bHRQYWdlT3B0aW9ucyA9IGN1c3RvbVNldHRpbmdzLmJyb3dzZXJQcm92aWRlcj8uZGVmYXVsdFBhZ2VPcHRpb25zO1xuXHR9XG5cdGlmICghaXNFbXB0eShjdXN0b21TZXR0aW5ncz8uYnJvd3NlclByb3ZpZGVyPy5kZWZhdWx0Vmlld09wdGlvbnMpKSB7XG5cdFx0YnJvd3Nlci5kZWZhdWx0Vmlld09wdGlvbnMgPSBjdXN0b21TZXR0aW5ncy5icm93c2VyUHJvdmlkZXI/LmRlZmF1bHRWaWV3T3B0aW9ucztcblx0fVxuXG5cdGxvZ2dlci5pbmZvKFwiU3BlY2lmeWluZyBmb2xsb3dpbmcgYnJvd3NlciBvcHRpb25zXCIsIGJyb3dzZXIpO1xuXG5cdGNvbnN0IGN1c3RvbUFjdGlvbnMgPSBhd2FpdCBhY3Rpb25zUHJvdmlkZXIuaW5pdChjdXN0b21TZXR0aW5ncz8uYWN0aW9uc1Byb3ZpZGVyLCBoZWxwZXJzKTtcblx0Y29uc3QgdGhlbWUgPSBhd2FpdCBnZXRUaGVtZXMoKTtcblxuXHRhd2FpdCBsb3dDb2RlSW50ZWdyYXRpb25Qcm92aWRlci5pbml0KGN1c3RvbVNldHRpbmdzPy5sb3dDb2RlSW50ZWdyYXRpb25Qcm92aWRlcik7XG5cdGNvbnN0IGludGVncmF0aW9ucyA9IGF3YWl0IGxvd0NvZGVJbnRlZ3JhdGlvblByb3ZpZGVyLnJlZ2lzdGVyKCk7XG5cblx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRhd2FpdCBwbGF0Zm9ybS5vbmNlKFwicGxhdGZvcm0tYXBpLXJlYWR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRsb2dnZXIuaW5mbyhcIlBsYXRmb3JtIEFQSSBSZWFkeVwiKTtcblx0XHRmaW4ubWUuaW50ZXJvcCA9IGZpbi5JbnRlcm9wLmNvbm5lY3RTeW5jKGZpbi5tZS51dWlkLCB7fSk7XG5cdFx0YXdhaXQgbm90aWZ5Q29sb3JTY2hlbWUoKTtcblx0fSk7XG5cblx0YXdhaXQgd29ya3NwYWNlUGxhdGZvcm1Jbml0KHtcblx0XHRicm93c2VyLFxuXHRcdHRoZW1lLFxuXHRcdGN1c3RvbUFjdGlvbnMsXG5cdFx0aW50ZXJvcE92ZXJyaWRlLFxuXHRcdG92ZXJyaWRlQ2FsbGJhY2s6IGFzeW5jIChwbGF0Zm9ybUNvbnN0cnVjdG9yKSA9PlxuXHRcdFx0b3ZlcnJpZGVDYWxsYmFjayhcblx0XHRcdFx0cGxhdGZvcm1Db25zdHJ1Y3Rvcixcblx0XHRcdFx0Y3VzdG9tU2V0dGluZ3M/LnBsYXRmb3JtUHJvdmlkZXIsXG5cdFx0XHRcdGF3YWl0IHZlcnNpb25Qcm92aWRlci5nZXRWZXJzaW9uSW5mbygpXG5cdFx0XHQpLFxuXHRcdGludGVncmF0aW9ucyxcblx0XHRhbmFseXRpY3M6IGN1c3RvbVNldHRpbmdzPy5hbmFseXRpY3NQcm92aWRlcj8uc2VuZFRvT3BlbkZpbiA/IHsgc2VuZFRvT3BlbkZpbjogdHJ1ZSB9IDogdW5kZWZpbmVkXG5cdH0pO1xuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBDbG9zZWRvd24gdGhlIHBsYXRmb3JtLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xvc2Vkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuXHRhd2FpdCBzaGFyZVByb3ZpZGVyLmNsb3NlZG93bigpO1xufVxuIiwiaW1wb3J0IHR5cGUgT3BlbkZpbiBmcm9tIFwiQG9wZW5maW4vY29yZVwiO1xuaW1wb3J0ICogYXMgZW5kcG9pbnRQcm92aWRlciBmcm9tIFwiLi9lbmRwb2ludFwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0SGVscGVycyB9IGZyb20gXCIuL21vZHVsZXNcIjtcbmltcG9ydCB0eXBlIHsgTW9kdWxlSGVscGVycyB9IGZyb20gXCIuL3NoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21TZXR0aW5ncyB9IGZyb20gXCIuL3NoYXBlcy9zZXR0aW5nLXNoYXBlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmxldCBjdXN0b21TZXR0aW5nczogQ3VzdG9tU2V0dGluZ3MgfCB1bmRlZmluZWQ7XG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJTZXR0aW5nc1wiKTtcblxuY29uc3QgUExBVEZPUk1fU0VUVElOR1NfRU5EUE9JTlRfR0VUID0gXCJwbGF0Zm9ybS1zZXR0aW5nc1wiO1xuXG4vKipcbiAqIExvYWQgdGhlIGN1c3RvbVNldHRpbmdzIHNlY3Rpb24gZnJvbSB0aGUgYXBwbGljYXRpb24gbWFuaWZlc3QuXG4gKiBAcmV0dXJucyBUaGUgY3VzdG9tIHNldHRpbmdzIGZyb20gdGhlIG1hbmlmZXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TWFuaWZlc3RDdXN0b21TZXR0aW5ncygpOiBQcm9taXNlPEN1c3RvbVNldHRpbmdzPiB7XG5cdGNvbnN0IGFwcCA9IGF3YWl0IGZpbi5BcHBsaWNhdGlvbi5nZXRDdXJyZW50KCk7XG5cdGNvbnN0IG1hbmlmZXN0OiBPcGVuRmluLk1hbmlmZXN0ICYgeyBjdXN0b21TZXR0aW5ncz86IEN1c3RvbVNldHRpbmdzIH0gPSBhd2FpdCBhcHAuZ2V0TWFuaWZlc3QoKTtcblx0cmV0dXJuIG1hbmlmZXN0LmN1c3RvbVNldHRpbmdzID8/IHt9O1xufVxuXG4vKipcbiAqIEdldCB0aGUgc2V0dGluZ3MgZm9yIHRoZSBhcHBsaWNhdGlvbiwgZWl0aGVyIGZyb20gbWFuaWZlc3Qgb3Igc2V0dGluZ3MgZW5kcG9pbnQuXG4gKiBAcmV0dXJucyBUaGUgY3VzdG9tIHNldHRpbmdzIGZvciB0aGUgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRTZXR0aW5ncygpOiBQcm9taXNlPEN1c3RvbVNldHRpbmdzPiB7XG5cdGlmIChpc0VtcHR5KGN1c3RvbVNldHRpbmdzKSkge1xuXHRcdC8vIEdldCB0aGUgc2V0dGluZ3MgZnJvbSB0aGUgbWFuaWZlc3Rcblx0XHRjdXN0b21TZXR0aW5ncyA9IGF3YWl0IGdldE1hbmlmZXN0Q3VzdG9tU2V0dGluZ3MoKTtcblxuXHRcdC8vIElmIHRoZSBtYW5pZmVzdCBoYXMgZW5kcG9pbnQgc3VwcG9ydCB0aGVuIHNlZSBpZiB0aGVyZSBpcyBhIHNldHRpbmdzIGVuZHBvaW50XG5cdFx0Ly8gdGhhdCB3ZSBjYW4gbG9hZCBhZGRpdGlvbmFsIHNldHRpbmdzIGZyb21cblx0XHRpZiAoY3VzdG9tU2V0dGluZ3MuZW5kcG9pbnRQcm92aWRlcikge1xuXHRcdFx0Y29uc3QgbW9kdWxlSGVscGVyczogTW9kdWxlSGVscGVycyA9IGdldERlZmF1bHRIZWxwZXJzKCk7XG5cdFx0XHRhd2FpdCBlbmRwb2ludFByb3ZpZGVyLmluaXQoY3VzdG9tU2V0dGluZ3MuZW5kcG9pbnRQcm92aWRlciwgbW9kdWxlSGVscGVycyk7XG5cblx0XHRcdGlmIChlbmRwb2ludFByb3ZpZGVyLmhhc0VuZHBvaW50KFBMQVRGT1JNX1NFVFRJTkdTX0VORFBPSU5UX0dFVCkpIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYCR7UExBVEZPUk1fU0VUVElOR1NfRU5EUE9JTlRfR0VUfSBlbmRwb2ludCBzcGVjaWZpZWQuIEZldGNoaW5nIHBsYXRmb3JtIHNldHRpbmdzLmApO1xuXHRcdFx0XHRjb25zdCBzZXJ2ZXJTZXR0aW5ncyA9IGF3YWl0IGVuZHBvaW50UHJvdmlkZXIucmVxdWVzdFJlc3BvbnNlPHVua25vd24sIEN1c3RvbVNldHRpbmdzPihcblx0XHRcdFx0XHRQTEFURk9STV9TRVRUSU5HU19FTkRQT0lOVF9HRVRcblx0XHRcdFx0KTtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJNZXJnaW5nIHBsYXRmb3JtLXNldHRpbmdzIG92ZXIgbWFuaWZlc3Qgc2V0dGluZ3MuXCIpO1xuXHRcdFx0XHRjdXN0b21TZXR0aW5ncyA9IHsgLi4uY3VzdG9tU2V0dGluZ3MsIC4uLnNlcnZlclNldHRpbmdzIH07XG5cdFx0XHRcdHJldHVybiBjdXN0b21TZXR0aW5ncztcblx0XHRcdH1cblx0XHR9XG5cblx0XHRsb2dnZXIuaW5mbyhcIlNldHRpbmdzIGJhc2VkIG9uIG1hbmlmZXN0IHNldHRpbmdzLlwiKTtcblx0fVxuXG5cdHJldHVybiBjdXN0b21TZXR0aW5ncztcbn1cblxuLyoqXG4gKiBDaGVjayB0aGF0IHRoZSBtYW5pZmVzdCBoYXMgYmVlbiBsb2FkZWQgZnJvbSBvbmUgb2YgdGhlIHZhbGlkIGhvc3RzLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgaG9zdCBpcyB2YWxpZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzVmFsaWRIb3N0Rm9yTWFuaWZlc3QoKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGxvZ2dlci5pbmZvKFwiVmFsaWRhdGluZyBzb3VyY2Ugb2YgaW5pdGlhbCBzZXR0aW5nc1wiKTtcblx0Y29uc3QgaG9zdCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnRvTG93ZXJDYXNlKCk7XG5cdGNvbnN0IHBvc3NpYmxlSG9zdHMgPSBbXCJwbGF0Zm9ybS9wcm92aWRlci5odG1sXCIsIFwicHJvdmlkZXIuaHRtbFwiLCBcInNoZWxsL3NoZWxsLmh0bWxcIiwgXCJzaGVsbC5odG1sXCJdO1xuXHRjb25zdCBob3N0UGFnZSA9IHBvc3NpYmxlSG9zdHMuZmluZCgoaCkgPT4gaG9zdC5lbmRzV2l0aChoKSk7XG5cblx0bGV0IHZhbGlkYXRpb25Vcmw6IHN0cmluZztcblx0bGV0IHZhbGlkSG9zdHM6IHN0cmluZ1tdID0gW107XG5cblx0aWYgKCFpc0VtcHR5KGhvc3RQYWdlKSkge1xuXHRcdHZhbGlkYXRpb25VcmwgPSBob3N0LnJlcGxhY2UoaG9zdFBhZ2UsIFwibWFuaWZlc3QtaG9zdHMuanNvblwiKTtcblx0XHRsb2dnZXIuaW5mbyhcIlVzaW5nIGhvc3RzIHZhbGlkYXRpb24gdXJsOlwiLCB2YWxpZGF0aW9uVXJsKTtcblx0XHR2YWxpZEhvc3RzID0gYXdhaXQgZ2V0VmFsaWRIb3N0cyh2YWxpZGF0aW9uVXJsKTtcblx0fVxuXG5cdGNvbnN0IGFwcCA9IGF3YWl0IGZpbi5BcHBsaWNhdGlvbi5nZXRDdXJyZW50KCk7XG5cdGNvbnN0IGluZm8gPSBhd2FpdCBhcHAuZ2V0SW5mbygpO1xuXHRjb25zdCBtYW5pZmVzdFVybCA9IGluZm8ubWFuaWZlc3RVcmw7XG5cdGxvZ2dlci5pbmZvKGBTb3VyY2Ugb2YgaW5pdGlhbCBzZXR0aW5nczogJHttYW5pZmVzdFVybH1gKTtcblxuXHRsZXQgc291cmNlVXJsSG9zdE5hbWUgPSBtYXRjaFVybChsb2NhdGlvbi5ocmVmLCB2YWxpZEhvc3RzKTtcblx0aWYgKGlzRW1wdHkoc291cmNlVXJsSG9zdE5hbWUpKSB7XG5cdFx0c291cmNlVXJsSG9zdE5hbWUgPSBsb2NhdGlvbi5ob3N0bmFtZTtcblx0XHRsb2dnZXIuaW5mbyhcIkFkZGluZyBjdXJyZW50IGhvc3QgdG8gdGhlIGxpc3Qgb2YgdmFsaWQgaG9zdHM6XCIsIHNvdXJjZVVybEhvc3ROYW1lKTtcblx0XHR2YWxpZEhvc3RzLnB1c2goc291cmNlVXJsSG9zdE5hbWUpO1xuXHR9XG5cblx0Y29uc3QgdXJsSG9zdE5hbWUgPSBtYXRjaFVybChtYW5pZmVzdFVybCwgdmFsaWRIb3N0cyk7XG5cdGxvZ2dlci5pbmZvKGBDaGVja2luZyBtYW5pZmVzdCBob3N0OiAke3VybEhvc3ROYW1lfSB2cyB2YWxpZCBsaXN0OiAke0pTT04uc3RyaW5naWZ5KHZhbGlkSG9zdHMpfWApO1xuXHRpZiAodXJsSG9zdE5hbWUpIHtcblx0XHRsb2dnZXIuaW5mbyhcIlRoZSBzb3VyY2Ugb2YgdGhlIGluaXRpYWwgc2V0dGluZ3MgaXMgdmFsaWRcIik7XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRgVGhlIHNvdXJjZSBvZiB0aGUgaW5pdGlhbCBzZXR0aW5ncyAke21hbmlmZXN0VXJsfSBkb2VzIG5vdCBtYXRjaCBhbnkgb2YgdGhlIHZhbGlkIGhvc3QgbmFtZXMuIFBsZWFzZSB1cGRhdGUgdGhlIGxpc3QgaWYgcmVxdWlyZWQuYFxuXHRcdCk7XG5cdH1cblx0cmV0dXJuICFpc0VtcHR5KHVybEhvc3ROYW1lKTtcbn1cblxuLyoqXG4gKiBNYXRjaCBhIHVybCB0byB0aGUgdmFsaWQgaG9zdHMuXG4gKiBAcGFyYW0gdXJsIFRoZSB1cmwgdG8gdHJ5IGFuZCBtYXRjaC5cbiAqIEBwYXJhbSB2YWxpZEhvc3RzIFRoZSBsaXN0IG9mIHZhbGlkIGhvc3RzLlxuICogQHJldHVybnMgVGhlIHZhbGlkIHBhcnQgb2YgdGhlIG5hbWUgaWYgaXQgbWF0Y2hlcy5cbiAqL1xuZnVuY3Rpb24gbWF0Y2hVcmwodXJsOiBzdHJpbmcsIHZhbGlkSG9zdHM6IHN0cmluZ1tdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKHVybC5zdGFydHNXaXRoKFwiZmlsZTovLy9cIikpIHtcblx0XHRjb25zdCBwYXRoID0gdXJsLnJlcGxhY2UoXCJmaWxlOi8vL1wiLCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xuXHRcdHJldHVybiB2YWxpZEhvc3RzLnNvbWUoKHZoKSA9PiBwYXRoLnN0YXJ0c1dpdGgodmgudG9Mb3dlckNhc2UoKSkpID8gcGF0aCA6IHVuZGVmaW5lZDtcblx0fVxuXHRjb25zdCB1ID0gbmV3IFVSTCh1cmwpO1xuXHRyZXR1cm4gdmFsaWRIb3N0cy5pbmNsdWRlcyh1Lmhvc3RuYW1lKSA/IHUuaG9zdG5hbWUgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0IGEgbGlzdCBvZiB0aGUgdmFsaWQgaG9zdHMgZnJvbSB0aGUgZW5kcG9pbnQuXG4gKiBAcGFyYW0gdmFsaWRhdGlvblVybCBUaGUgdXJsIHRvIGxvYWQgdGhlIGhvc3QgbGlzdHMgZnJvbS5cbiAqIEByZXR1cm5zIEEgbGlzdCBvZiB0aGUgdmFsaWQgaG9zdHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldFZhbGlkSG9zdHModmFsaWRhdGlvblVybDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuXHRjb25zdCBtYW5pZmVzdEhvc3RzUGF0aCA9IHZhbGlkYXRpb25Vcmw7XG5cdHRyeSB7XG5cdFx0bG9nZ2VyLmluZm8oYEdldHRpbmcgdmFsaWQgaG9zdHMgZm9yIGluaXRpYWwgc2V0dGluZ3MgZnJvbSAke21hbmlmZXN0SG9zdHNQYXRofWApO1xuXHRcdGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaChtYW5pZmVzdEhvc3RzUGF0aCk7XG5cdFx0Y29uc3QganNvblJlc3VsdHM6IHN0cmluZ1tdID0gYXdhaXQgcmVzcC5qc29uKCk7XG5cdFx0cmV0dXJuIGpzb25SZXN1bHRzO1xuXHR9IGNhdGNoIHtcblx0XHRsb2dnZXIuaW5mbyhgVmFsaWQgaG9zdHMgZW5kcG9pbnQgKCR7bWFuaWZlc3RIb3N0c1BhdGh9KSBub3QgcHJvdmlkZWQuYCk7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG59XG4iLCJpbXBvcnQgdHlwZSB7IFBsYXRmb3JtU3RvcmFnZU1ldGFkYXRhIH0gZnJvbSBcIi4vcGxhdGZvcm0tc2hhcGVzXCI7XG5cbi8qKlxuICogRmF2b3JpdGUgdHlwZSBmb3IgQXBwLlxuICovXG5leHBvcnQgY29uc3QgRkFWT1JJVEVfVFlQRV9OQU1FX0FQUCA9IFwiYXBwXCI7XG5cbi8qKlxuICogRmF2b3JpdGUgdHlwZSBmb3IgV29ya3NwYWNlLlxuICovXG5leHBvcnQgY29uc3QgRkFWT1JJVEVfVFlQRV9OQU1FX1dPUktTUEFDRSA9IFwid29ya3NwYWNlXCI7XG5cbi8qKlxuICogRmF2b3JpdGUgdHlwZSBmb3IgUGFnZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEZBVk9SSVRFX1RZUEVfTkFNRV9QQUdFID0gXCJwYWdlXCI7XG5cbi8qKlxuICogRmF2b3JpdGUgdHlwZSBmb3IgUXVlcnkuXG4gKi9cbmV4cG9ydCBjb25zdCBGQVZPUklURV9UWVBFX05BTUVfUVVFUlkgPSBcInF1ZXJ5XCI7XG5cbi8qKlxuICogTmFtZXMgZm9yIGFsbCB0aGUgZmF2b3JpdGUgdHlwZXMuXG4gKi9cbmV4cG9ydCB0eXBlIEZhdm9yaXRlVHlwZU5hbWVzID1cblx0fCB0eXBlb2YgRkFWT1JJVEVfVFlQRV9OQU1FX0FQUFxuXHR8IHR5cGVvZiBGQVZPUklURV9UWVBFX05BTUVfV09SS1NQQUNFXG5cdHwgdHlwZW9mIEZBVk9SSVRFX1RZUEVfTkFNRV9QQUdFXG5cdHwgdHlwZW9mIEZBVk9SSVRFX1RZUEVfTkFNRV9RVUVSWTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZmF2b3JpdGUgcHJvdmlkZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmF2b3JpdGVQcm92aWRlck9wdGlvbnMge1xuXHQvKipcblx0ICogSXMgdGhlIHByb3ZpZGVyIGVuYWJsZWQsIGRlZmF1bHRzIHRvIHRydWUuXG5cdCAqL1xuXHRlbmFibGVkPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogVGhlIGljb24gdGhhdCBzaG91bGQgYmUgdXNlZCBpZiB5b3Ugd2FudCB0byBpbmRpY2F0ZSB0aGlzIGlzIGEgZmF2b3JpdGUgYWN0aW9uXG5cdCAqL1xuXHRmYXZvcml0ZUljb246IHN0cmluZztcblxuXHQvKipcblx0ICogVGhlIGljb24gdG8gdXNlIHRvIGluZGljYXRlIHRoYXQgdGhpcyBmYXZvcml0ZSBjYW4gYmUgdW5zZXRcblx0ICovXG5cdHVuZmF2b3JpdGVJY29uOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFdoYXQgY29tbWFuZHMgc2hvdWxkIGludGVncmF0aW9ucyBjaGVjayBmb3IgaWYgdGhleSBpbnRlbnQgdG8gc3VwcG9ydCB0aGUgZGlzcGxheSBvZiBmYXZvcml0ZXNcblx0ICovXG5cdGZhdm9yaXRlQ29tbWFuZD86IHN0cmluZztcblxuXHQvKipcblx0ICogVGhlIGNvbm5lY3Rpb24gcHJvdmlkZXIgY2FuIGhhdmUgYWN0aW9ucyByZWdpc3RlcmVkIGFnYWluc3QgaXQgZnJvbSB0aGUgcGxhdGZvcm0uIFRoaXMgcHJvdmlkZXMgYSBkZWZhdWx0IGxpc3Qgb2Zcblx0ICogYWN0aW9ucyB0aGF0IGNvbm5lY3Rpb25zIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBpZiBhY3Rpb25zIGFyZSBlbmFibGVkIGZvciB0aGF0IGNvbm5lY3Rpb24uXG5cdCAqL1xuXHRzdXBwb3J0ZWRGYXZvcml0ZVR5cGVzPzogRmF2b3JpdGVUeXBlTmFtZXNbXTtcbn1cblxuLyoqXG4gKiBXaGVuIGFuIGVudHJ5IGlzIG1hZGUgaXQgcmVwcmVzZW50cyBhIHR5cGUgc3VwcG9ydGVkIGJ5IHRoaXMgcGxhdGZvcm0uIFRoaXMgY2FuIGJlIHVzZWQgdG8gbG9va3VwIGFuZCBsYXVuY2ggdGhlIHRoaW5nIHRoaXMgZW50cnkgcmVmZXJzIHRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZhdm9yaXRlRW50cnkge1xuXHQvKipcblx0ICogQSB1bmlxdWUgZ3VpZCB0byByZXByZXNlbnQgdGhpcyBmYXZvcml0ZSBlbnRyeSBzbyB0aGF0IGl0IGNhbiBiZSB1cGRhdGVkIG9yIHJlbW92ZWRcblx0ICovXG5cdGlkOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFRoZSBpZCBmb3IgdGhlIGZhdm9yaXRlIHR5cGUgdGhpcyBlbnRyeSByZXByZXNlbnRzXG5cdCAqL1xuXHR0eXBlSWQ6IHN0cmluZztcblxuXHQvKipcblx0ICogV2hhdCB0eXBlIG9mIGZhdm9yaXRlIGVudHJ5IGRvZXMgdGhpcyBlbnRyeSByZXByZXNlbnRcblx0ICovXG5cdHR5cGU6IEZhdm9yaXRlVHlwZU5hbWVzO1xuXG5cdC8qKlxuXHQgKiBUaGUgdGltZXN0YW1wIGZvciB0aGUgZW50cnkuXG5cdCAqL1xuXHR0aW1lc3RhbXA/OiBEYXRlO1xuXG5cdC8qKlxuXHQgKiBEb2VzIHRoaXMgZmF2b3JpdGUgaGF2ZSBhIHN1Z2dlc3RlZCBsYWJlbCB0aGF0IGNhbiBiZSB1c2VkIHRvIGF2b2lkIGEgbG9va3VwXG5cdCAqL1xuXHRsYWJlbD86IHN0cmluZztcblxuXHQvKipcblx0ICogRG9lcyB0aGlzIGZhdm9yaXRlIGhhdmUgYSBzdWdnZXN0ZWQgaWNvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGF2b2lkIGEgbG9va3VwXG5cdCAqL1xuXHRpY29uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEluZm8gdG8gcmV0dXJuIHRvIGludGVyZXN0ZWQgcGFydGllcyB0byBoZWxwIHRoZW0gc3VwcG9ydCBmYXZvcml0ZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGYXZvcml0ZUluZm8ge1xuXHQvKipcblx0ICogVGhlIHBhdGggdG8gYW4gaWNvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIHRoZSBhYmlsaXR5IHRvIGZhdm9yaXRlXG5cdCAqL1xuXHRmYXZvcml0ZUljb24/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgcGF0aCB0byBhbiBpY29uIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhlIGFiaWxpdHkgdG8gcmVtb3ZlIHRoaXMgZmF2b3JpdGVcblx0ICovXG5cdHVuZmF2b3JpdGVJY29uPzogc3RyaW5nO1xuXHQvKipcblx0ICogQSBjb21tYW5kIHRoYXQgc3VwcG9ydGluZyBtb2R1bGVzIHNob3VsZCBsaXN0ZW4gZm9yIGlmIHRoZXkgYXJlIHRvIGRpc3BsYXkgZmF2b3JpdGVzIHRoYXQgZmFsbCB1bmRlciB0aGVtXG5cdCAqL1xuXHRjb21tYW5kPzogc3RyaW5nO1xuXHQvKipcblx0ICogV2hhdCB0eXBlcyBvZiBmYXZvcml0ZSBpdGVtIGFyZSBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybVxuXHQgKi9cblx0ZW5hYmxlZFR5cGVzPzogRmF2b3JpdGVUeXBlTmFtZXNbXTtcblx0LyoqXG5cdCAqIElzIGZhdm9yaXRlIHN1cHBvcnQgZW5hYmxlZCBvbiB0aGlzIHBsYXRmb3JtLlxuXHQgKi9cblx0aXNFbmFibGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgY2xpZW50IHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJvdmlkZSBhY2Nlc3MgdG8gc29tZSBvciBhbGwgb2YgdGhlIGZhdm9yaXRlIGZ1bmN0aW9uYWxpdHlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGYXZvcml0ZUNsaWVudCB7XG5cdC8qKlxuXHQgKiBUaGUgYWJpbGl0eSB0byByZXF1ZXN0IHN1cHBvcnRpbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hldGhlciBmYXZvcml0ZXMgYXJlIGluaXRpYWxpemVkIGZvciB0aGUgcGxhdGZvcm0gYW5kIHN1cHBvcnRpbmcgaW5mb3JtYXRpb24uXG5cdCAqIEByZXR1cm5zIFN1cHBvcnRpbmcgaW5mb3JtYXRpb24uXG5cdCAqL1xuXHRnZXRJbmZvKCk6IEZhdm9yaXRlSW5mbztcblx0LyoqXG5cdCAqIFRoZSBhYmlsaXR5IHRvIHJlcXVlc3QgYWxsIChvciBzb21lIGlmIGJ5IHR5cGUpIG9mIHRoZSBzYXZlZCBmYXZvcml0ZXNcblx0ICogQHBhcmFtIGJ5VHlwZSB0aGUgdHlwZSBvZiBzYXZlZCBmYXZvcml0ZSB5b3UgYXJlIGxvb2tpbmcgZm9yXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHNhdmVkIGZhdm9yaXRlcyBvciBhbiBlbXB0eSBhcnJheSBpZiBpdCB3YXMgdW5hYmxlIHRvIGdldCBhbnkgYmFja1xuXHQgKi9cblx0Z2V0U2F2ZWRGYXZvcml0ZXMoYnlUeXBlPzogRmF2b3JpdGVUeXBlTmFtZXMpOiBQcm9taXNlPEZhdm9yaXRlRW50cnlbXSB8IHVuZGVmaW5lZD47XG5cdC8qKlxuXHQgKiBUaGUgYWJpbGl0eSB0byByZXF1ZXN0IGEgcGFydGljdWxhciBzYXZlZCBmYXZvcml0ZS5cblx0ICogQHBhcmFtIGlkIHRoZSBpZCBvZiB0aGUgZmF2b3JpdGUgeW91IGFyZSBsb29raW5nIGZvclxuXHQgKiBAcmV0dXJucyB0aGUgc2F2ZWQgZmF2b3JpdGUgaWYgYXZhaWxhYmxlIG9yIGZhbHNlIGlmIGl0IGRpZG4ndCBleGlzdFxuXHQgKi9cblx0Z2V0U2F2ZWRGYXZvcml0ZShpZDogc3RyaW5nKTogUHJvbWlzZTxGYXZvcml0ZUVudHJ5IHwgdW5kZWZpbmVkPjtcblx0LyoqXG5cdCAqIFRoZSBhYmlsaXR5IHRvIHNhdmUgYSBmYXZvcml0ZS5cblx0ICogQHBhcmFtIGZhdm9yaXRlIHRoZSBGYXZvcml0ZSB5b3Ugd2lzaCB0byBzYXZlXG5cdCAqIEByZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBmYXZvcml0ZSB3YXMgc2F2ZWRcblx0ICovXG5cdHNldFNhdmVkRmF2b3JpdGU/KGZhdm9yaXRlOiBGYXZvcml0ZUVudHJ5KTogUHJvbWlzZTxib29sZWFuPjtcblx0LyoqXG5cdCAqIFRoZSBhYmlsaXR5IHRvIHJlbW92ZS9kZWxldGUgYSBzYXZlZCBmYXZvcml0ZS5cblx0ICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgZmF2b3JpdGUgdG8gZGVsZXRlXG5cdCAqIEByZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBmYXZvcml0ZSB3YXMgZGVsZXRlZC5cblx0ICovXG5cdGRlbGV0ZVNhdmVkRmF2b3JpdGU/KGlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+O1xufVxuXG4vKipcbiAqIEFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgYSBmYXZvcml0ZSBhbmQgbWV0YSBkYXRhIHJlbGF0ZWQgdG8gaXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludEZhdm9yaXRlRW50cnkge1xuXHQvKipcblx0ICogSW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgcGxhdGZvcm0gcHJvdmlkaW5nIHRoZSBwYXlsb2FkLlxuXHQgKi9cblx0bWV0YURhdGE6IFBsYXRmb3JtU3RvcmFnZU1ldGFkYXRhO1xuXHQvKipcblx0ICogVGhlIGZhdm9yaXRlIGVudHJ5XG5cdCAqL1xuXHRwYXlsb2FkOiBGYXZvcml0ZUVudHJ5O1xufVxuXG4vKipcbiAqIEEgcmVxdWVzdCB0eXBlIGZvciB0aGUgRmF2b3JpdGVFbmRwb2ludCB0aGF0IGdldHMgYWxsIHNhdmVkIGZhdm9yaXRlIGVudHJpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludEZhdm9yaXRlTGlzdFJlcXVlc3Qge1xuXHQvKipcblx0ICogVGhlIGlkIG9mIHRoZSBwbGF0Zm9ybSBtYWtpbmcgdGhlIHJlcXVlc3Rcblx0ICovXG5cdHBsYXRmb3JtOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgdHlwZSBpZiBzcGVjaWZpZWQgc2hvdWxkIGJlIHVzZWQgdG8gZmlsdGVyIHRoZSByZXNwb25zZSB0byBvbmx5IHNlbmQgdGhlIGVudHJpZXMgdGhhdCBhcmUgcmVsZXZhbnRcblx0ICovXG5cdGZhdm9yaXRlVHlwZT86IEZhdm9yaXRlVHlwZU5hbWVzO1xufVxuXG4vKipcbiAqIFRoZSByZXNwb25zZSBhZnRlciB0aGUgcmVxdWVzdCBmb3IgZmF2b3JpdGVzIHdhcyBmdWxmaWxsZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludEZhdm9yaXRlTGlzdFJlc3BvbnNlIHtcblx0LyoqXG5cdCAqIFRoZSBsaXN0IG9mIGZhdm9yaXRlIGVudHJpZXMgd2l0aCBpbmZvcm1hdGlvbiBvZiB3aGF0IHBsYXRmb3JtIHZlcnNpb25zIHRoZXkgd2VyZSBvcmlnaW5hbGx5IHNhdmVkIGFnYWluc3Rcblx0ICovXG5cdGVudHJpZXM6IEVuZHBvaW50RmF2b3JpdGVFbnRyeVtdO1xufVxuXG4vKipcbiAqIFRoZSByZXF1ZXN0IGZvciBnZXR0aW5nIGEgc3BlY2lmaWMgZmF2b3JpdGUgZW50cnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludEZhdm9yaXRlR2V0UmVxdWVzdCB7XG5cdC8qKlxuXHQgKiBUaGUgaWQgb2YgdGhlIHBsYXRmb3JtIG1ha2luZyB0aGUgcmVxdWVzdFxuXHQgKi9cblx0cGxhdGZvcm06IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSBpZCBvZiB0aGUgc3BlY2lmaWMgZW50cnkgdGhhdCBoYXMgYmVlbiBzYXZlZFxuXHQgKi9cblx0aWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcmVzcG9uc2UgYWZ0ZXIgdGhlIHJlcXVlc3QgZm9yIGEgc3BlY2lmaWMgZmF2b3JpdGUgd2FzIGZ1bGZpbGxlZFxuICovXG5leHBvcnQgdHlwZSBFbmRwb2ludEZhdm9yaXRlR2V0UmVzcG9uc2UgPSBFbmRwb2ludEZhdm9yaXRlRW50cnk7XG5cbi8qKlxuICogVGhlIHJlcXVlc3QgZm9yIGdldHRpbmcgYSBzcGVjaWZpYyBmYXZvcml0ZSBlbnRyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50RmF2b3JpdGVTZXRSZXF1ZXN0IGV4dGVuZHMgRW5kcG9pbnRGYXZvcml0ZUVudHJ5IHtcblx0LyoqXG5cdCAqIFRoZSBpZCBvZiB0aGUgcGxhdGZvcm0gbWFraW5nIHRoZSByZXF1ZXN0XG5cdCAqL1xuXHRwbGF0Zm9ybTogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIGlkIG9mIHRoZSBzcGVjaWZpYyBlbnRyeSB0aGF0IGlzIHRvIGJlIHNldFxuXHQgKi9cblx0aWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcmVxdWVzdCBmb3IgcmVtb3ZpbmcgYSBzcGVjaWZpYyBmYXZvcml0ZSBlbnRyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50RmF2b3JpdGVSZW1vdmVSZXF1ZXN0IHtcblx0LyoqXG5cdCAqIFRoZSBpZCBvZiB0aGUgcGxhdGZvcm0gbWFraW5nIHRoZSByZXF1ZXN0XG5cdCAqL1xuXHRwbGF0Zm9ybTogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIGlkIG9mIHRoZSBzcGVjaWZpYyBlbnRyeSB0aGF0IGlzIHRvIGJlIHJlbW92ZWRcblx0ICovXG5cdGlkOiBzdHJpbmc7XG59XG4iLCJpbXBvcnQgdHlwZSB7IEN1c3RvbVRoZW1lT3B0aW9ucywgQ3VzdG9tVGhlbWVPcHRpb25zV2l0aFNjaGVtZSB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcblxuLyoqXG4gKiBQbGF0Zm9ybSB0aGVtZSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGhlbWVQcm92aWRlck9wdGlvbnMge1xuXHQvKipcblx0ICogVGhlIFRoZW1lcyB5b3Ugd2lzaCB5b3VyIHBsYXRmb3JtIHRvIHN1cHBvcnRcblx0ICovXG5cdHRoZW1lczogUGxhdGZvcm1DdXN0b21UaGVtZXM7XG5cblx0LyoqXG5cdCAqIElmIHByb3ZpZGluZyB0aGUgcGFsZXR0ZSB0aHJvdWdoIGNzcyB2YXJpYWJsZXMgd291bGQgeW91IGxpa2UgYSBzcGVjaWZpYyBjdXN0b20gcHJlZml4P1xuXHQgKi9cblx0Y3NzVmFyUHJlZml4Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBJZiBwcm92aWRpbmcgYSBjbGFzcyBhdCB0aGUgcm9vdCBkb2N1bWVudCBmb3IgY29udGVudCBwcm92aWRlcnMgdG8gaW5kaWNhdGUgbGlnaHQvZGFyayB3b3VsZCB5b3UgbGlrZSB0byBwcm92aWRlXG5cdCAqIHNvbWV0aGluZyBvdGhlciB0aGFuIHRoZSBkZWZhdWx0LlxuXHQgKi9cblx0c2NoZW1hTmFtZXM/OiB7XG5cdFx0ZGFyaz86IHN0cmluZztcblx0XHRsaWdodD86IHN0cmluZztcblx0fTtcbn1cblxuLyoqXG4gKiBDb2xvciBzY2hlbWVzLCBsaWdodCBvciBkYXJrLlxuICovXG5leHBvcnQgZW51bSBDb2xvclNjaGVtZU1vZGUge1xuXHRMaWdodCA9IFwibGlnaHRcIixcblx0RGFyayA9IFwiZGFya1wiXG59XG5cbi8qKlxuICogRXh0ZW5kZWQgcHJvcGVydGllcyBmb3IgYSBjdXN0b20gdGhlbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxhdGZvcm1DdXN0b21UaGVtZUV4dGVuZGVkIHtcblx0LyoqXG5cdCAqIEFuIGlkIHRvIGhlbHAgaWRlbnRpZnkgdGhpcyB0aGVtZSBhcyBsYWJlbHMgY2FuIGNoYW5nZSBvdmVyIHRpbWUgYW5kIGFyZSB1c2VkIGZvciBkaXNwbGF5XG5cdCAqL1xuXHRpZDogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBJZiB0aGVyZSBpcyBhIHNoYXJlZCBmb2xkZXIgYWNyb3NzIHRoZW1lcyB0aGF0IGhhdmUgbGlnaHQgYW5kIGRhcmsgaWNvbnMgeW91IGNhbiBzcGVjaWZ5IGEgZm9sZGVyIG5hbWUgdG8gdXNlXG5cdCAqIGluc3RlYWQgb2YgdGhlIHRoZW1lIGlkIChvciBsYWJlbCBpZiB0aGVyZSBpcyBubyBpZClcblx0ICovXG5cdGljb25Gb2xkZXI/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIElmIHlvdSBhcmUgc3BlY2lmeWluZyBhIHNpbmdsZSBwYWxldHRlIGluIHlvdXIgdGhlbWUgYW5kIGl0IGlzIGEgbGlnaHQgcGFsZXR0ZSB0aGVuIHlvdSBjYW4gaW5kaWNhdGUgdGhhdCBieVxuXHQgKiBzcGVjaWZ5aW5nIHRoZSBkZWZhdWx0IG9mIGxpZ2h0IChvdGhlcndpc2Ugd2Ugd2lsbCBhc3N1bWUgaXQgaXMgZGFyaykgSWYgeW91IHNwZWNpZnkgcGFsZXR0ZXMgYW5kIGhhdmUgYSBsaWdodFxuXHQgKiBhbmQgYSBkYXJrIHBhbGV0dGUgdGhlbiB0aGlzIHNldHRpbmcgc3BlY2lmaWVzIGEgZGVmYXVsdCBwcmVmZXJlbmNlIChpdCBkZWZhdWx0cyB0byBwaWNraW5nIHRoZSBkYXJrIHBhbGV0dGUgaWYgYVxuXHQgKiBkZWZhdWx0IGlzIG5vdCBzcGVjaWZpZWQpXG5cdCAqL1xuXHRkZWZhdWx0PzogXCJsaWdodFwiIHwgXCJkYXJrXCI7XG59XG5cbi8qKlxuICogUGxhdGZvcm0gY3VzdG9tIHRoZW1lIHdpdGggb3B0aW9ucyB1c2luZyBleHRlbmRlZCB0eXBlcy5cbiAqL1xuZXhwb3J0IHR5cGUgUGxhdGZvcm1DdXN0b21UaGVtZU9wdGlvbnMgPSBDdXN0b21UaGVtZU9wdGlvbnMgJiBQbGF0Zm9ybUN1c3RvbVRoZW1lRXh0ZW5kZWQ7XG5cbi8qKlxuICogUGxhdGZvcm0gY3VzdG9tIHRoZW1lIHdpdGggb3B0aW9ucyBhbmQgc2NoZW1lIHVzaW5nIGV4dGVuZGVkIHR5cGVzLlxuICovXG5leHBvcnQgdHlwZSBQbGF0Zm9ybUN1c3RvbVRoZW1lT3B0aW9uc1dpdGhTY2hlbWUgPSBDdXN0b21UaGVtZU9wdGlvbnNXaXRoU2NoZW1lICYgUGxhdGZvcm1DdXN0b21UaGVtZUV4dGVuZGVkO1xuXG4vKipcbiAqIFBsYXRmb3JtIGN1c3RvbSB0aGVtZSBlaXRoZXIgd2l0aCBvciB3aXRob3V0IG9wdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFBsYXRmb3JtQ3VzdG9tVGhlbWUgPSBQbGF0Zm9ybUN1c3RvbVRoZW1lT3B0aW9ucyB8IFBsYXRmb3JtQ3VzdG9tVGhlbWVPcHRpb25zV2l0aFNjaGVtZTtcblxuLyoqXG4gKiBMaXN0IG9mIGV4dGVuZGVkIGN1c3RvbSB0aGVtZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFBsYXRmb3JtQ3VzdG9tVGhlbWVzID0gUGxhdGZvcm1DdXN0b21UaGVtZVtdO1xuIiwiaW1wb3J0IHR5cGUgT3BlbkZpbiBmcm9tIFwiQG9wZW5maW4vY29yZVwiO1xuaW1wb3J0IHsgZ2V0Q3VycmVudFN5bmMsIHR5cGUgUGFnZSB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB7IGNyZWF0ZSwgSW5kaWNhdG9yQ29sb3IsIHR5cGUgTm90aWZpY2F0aW9uT3B0aW9ucyB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2Uvbm90aWZpY2F0aW9uc1wiO1xuaW1wb3J0IHsgcmVxdWVzdFJlc3BvbnNlIH0gZnJvbSBcIi4vZW5kcG9pbnRcIjtcbmltcG9ydCB7IHJlZ2lzdGVyTGlzdGVuZXIsIHJlbW92ZUxpc3RlbmVyIH0gZnJvbSBcIi4vaW5pdC1vcHRpb25zXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiLi9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB7IGdldFBhZ2VCb3VuZHMsIGxhdW5jaFBhZ2UgfSBmcm9tIFwiLi9wbGF0Zm9ybS9icm93c2VyXCI7XG5pbXBvcnQgeyBnZXRTZXR0aW5ncyB9IGZyb20gXCIuL3NldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IFNoYXJlU3RvcmVFbnRyeSwgU2hhcmVQYWdlRGF0YSwgU2hhcmVXb3Jrc3BhY2VEYXRhIH0gZnJvbSBcIi4vc2hhcGVzL3NoYXJlLXNoYXBlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIlNoYXJlXCIpO1xuXG5sZXQgc2hhcmVFbmFibGVkID0gZmFsc2U7XG5sZXQgc2hhcmVSZWdpc3RlcmVkID0gZmFsc2U7XG5sZXQgaW5pdE9wdGlvbnNMaXN0ZW5lcklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgc2hhcmluZy5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBzaGFyaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdChvcHRpb25zOiB7IGVuYWJsZWQ6IGJvb2xlYW4gfSB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAob3B0aW9ucykge1xuXHRcdHNoYXJlRW5hYmxlZCA9IG9wdGlvbnM/LmVuYWJsZWQ7XG5cblx0XHRpZiAoc2hhcmVFbmFibGVkKSB7XG5cdFx0XHRpZiAoIXNoYXJlUmVnaXN0ZXJlZCkge1xuXHRcdFx0XHRzaGFyZVJlZ2lzdGVyZWQgPSB0cnVlO1xuXHRcdFx0XHRpbml0T3B0aW9uc0xpc3RlbmVySWQgPSByZWdpc3Rlckxpc3RlbmVyKFwic2hhcmVJZFwiLCBhc3luYyAoaW5pdE9wdGlvbnMpID0+IHtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcIlJlY2VpdmVkIHNoYXJlIHJlcXVlc3QuXCIpO1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgaW5pdE9wdGlvbnMuc2hhcmVJZCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdFx0YXdhaXQgbG9hZFNoYXJlZEVudHJ5KGluaXRPcHRpb25zLnNoYXJlSWQpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRsb2dnZXIud2FybihcInNoYXJlSWQgcGFzc2VkIGJ1dCBpdCB3YXNuJ3QgYSBzdHJpbmdcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFwiU2hhcmUgY2Fubm90IGJlIHJlZ2lzdGVyZWQgbW9yZSB0aGFuIG9uY2UuXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIENsb3NlZG93biB0aGUgc2hhcmUgcHJvdmlkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjbG9zZWRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChzaGFyZUVuYWJsZWQpIHtcblx0XHRpZiAoc2hhcmVSZWdpc3RlcmVkKSB7XG5cdFx0XHRpZiAoaW5pdE9wdGlvbnNMaXN0ZW5lcklkKSB7XG5cdFx0XHRcdHJlbW92ZUxpc3RlbmVyKGluaXRPcHRpb25zTGlzdGVuZXJJZCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZ2dlci53YXJuKFwiU2hhcmUgaXNuJ3QgcmVnaXN0ZXJlZCB5ZXQgc28gY2Fubm90IGJlIGRlcmVnaXN0ZXJlZC5cIik7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogSXMgc2hhcmluZyBlbmFibGVkLlxuICogQHJldHVybnMgVHJ1ZSBpZiBzaGFyaW5nIGlzIGVuYWJsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NoYXJlRW5hYmxlZCgpOiBib29sZWFuIHtcblx0cmV0dXJuIHNoYXJlRW5hYmxlZDtcbn1cblxuLyoqXG4gKiBTaG93IHRoZSBzaGFyZSBvcHRpb25zIG1lbnUuXG4gKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIGluZm9ybWF0aW9uIHRvIHVzZSBmb3IgcG9zaXRpb25pbmcuXG4gKiBAcGFyYW0gcGF5bG9hZC53aW5kb3dJZGVudGl0eSBUaGUgd2luZG93IHRoYXQgaW5pdGlhdGVkIHRoZSBtZW51IHJlcXVlc3QuXG4gKiBAcGFyYW0gcGF5bG9hZC54IFRoZSB4IHBvc2l0aW9uIG9mIHRoZSBtb3VzZSBjbGljay5cbiAqIEBwYXJhbSBwYXlsb2FkLnkgVGhlIHkgcG9zaXRpb24gb2YgdGhlIG1vdXNlIGNsaWNrLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hvd1NoYXJlT3B0aW9ucyhwYXlsb2FkOiB7XG5cdHdpbmRvd0lkZW50aXR5OiBPcGVuRmluLklkZW50aXR5O1xuXHR4OiBudW1iZXI7XG5cdHk6IG51bWJlcjtcbn0pOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKHNoYXJlUmVnaXN0ZXJlZCkge1xuXHRcdGxvZ2dlci5pbmZvKFwiU2hhcmUgY2FsbGVkIHdpdGggcGF5bG9hZDpcIiwgcGF5bG9hZCk7XG5cblx0XHRjb25zdCB3aW5kb3dJZGVudGl0eSA9IHBheWxvYWQud2luZG93SWRlbnRpdHk7XG5cdFx0bGV0IHBhZ2VJZDtcblxuXHRcdGNvbnN0IHBsYXRmb3JtV29ya3NwYWNlID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRjb25zdCBjdXJyZW50V2luZG93ID0gcGxhdGZvcm1Xb3Jrc3BhY2UuQnJvd3Nlci53cmFwU3luYyh3aW5kb3dJZGVudGl0eSk7XG5cdFx0Y29uc3QgY3VycmVudFBhZ2VzID0gYXdhaXQgY3VycmVudFdpbmRvdy5nZXRQYWdlcygpO1xuXG5cdFx0Zm9yIChjb25zdCBwYWdlIG9mIGN1cnJlbnRQYWdlcykge1xuXHRcdFx0aWYgKHBhZ2UuaXNBY3RpdmUpIHtcblx0XHRcdFx0cGFnZUlkID0gcGFnZS5wYWdlSWQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGVtcGxhdGU6IE9wZW5GaW4uTWVudUl0ZW1UZW1wbGF0ZVtdID0gW1xuXHRcdFx0e1xuXHRcdFx0XHRsYWJlbDogXCJTaGFyZSBQYWdlXCIsXG5cdFx0XHRcdGRhdGE6IHsgaWRlbnRpdHk6IHsgd2luZG93SWRlbnRpdHksIHBhZ2VJZCB9LCB0eXBlOiBcInBhZ2VcIiB9XG5cdFx0XHR9LFxuXHRcdFx0eyB0eXBlOiBcInNlcGFyYXRvclwiLCBkYXRhOiB7fSB9LFxuXHRcdFx0e1xuXHRcdFx0XHRsYWJlbDogXCJTaGFyZSBXb3Jrc3BhY2VcIixcblx0XHRcdFx0ZGF0YTogeyBpZGVudGl0eToge30sIHR5cGU6IFwid29ya3NwYWNlXCIgfVxuXHRcdFx0fVxuXHRcdF07XG5cblx0XHRjb25zdCByID0gYXdhaXQgY3VycmVudFdpbmRvdy5vcGVuZmluV2luZG93LnNob3dQb3B1cE1lbnUoe1xuXHRcdFx0dGVtcGxhdGUsXG5cdFx0XHR4OiBwYXlsb2FkLngsXG5cdFx0XHR5OiBwYXlsb2FkLnlcblx0XHR9KTtcblxuXHRcdGlmIChyLnJlc3VsdCA9PT0gXCJjbG9zZWRcIikge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJzaGFyZSBtZW51IGRpc21pc3NlZC5cIik7XG5cdFx0fSBlbHNlIGlmIChyLmRhdGEudHlwZSA9PT0gXCJwYWdlXCIpIHtcblx0XHRcdGF3YWl0IHNhdmVTaGFyZWRQYWdlKHIuZGF0YS5pZGVudGl0eSk7XG5cdFx0fSBlbHNlIGlmIChyLmRhdGEudHlwZSA9PT0gXCJ3b3Jrc3BhY2VcIikge1xuXHRcdFx0YXdhaXQgc2F2ZVNoYXJlZFdvcmtzcGFjZSgpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRsb2dnZXIud2FybihcIlNoYXJlIGNhbm5vdCBiZSB0cmlnZ2VyZWQgYXMgaXQgaGFzbid0IGJlZW4gcmVnaXN0ZXJlZCB5ZXQuXCIpO1xuXHR9XG59XG5cbi8qKlxuICogU2hhcmUgdGhlIHNwZWNpZmllZCBkYXRhLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGRhdGEgdG8gc2hhcmUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaGFyZShvcHRpb25zOiBTaGFyZVBhZ2VEYXRhIHwgU2hhcmVXb3Jrc3BhY2VEYXRhKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChzaGFyZVJlZ2lzdGVyZWQpIHtcblx0XHRpZiAob3B0aW9ucykge1xuXHRcdFx0aWYgKG9wdGlvbnMudHlwZSA9PT0gXCJ3b3Jrc3BhY2VcIikge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcIkEgcmVxdWVzdCB0byBzaGFyZSB0aGUgd29ya3NwYWNlIGhhcyBiZWVuIHJhaXNlZC5cIik7XG5cdFx0XHRcdGF3YWl0IHNhdmVTaGFyZWRXb3Jrc3BhY2Uob3B0aW9ucyk7XG5cdFx0XHR9IGVsc2UgaWYgKG9wdGlvbnMudHlwZSA9PT0gXCJwYWdlXCIpIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJTaGFyZSBjYWxsZWQgd2l0aCBwYXlsb2FkOiA9XCIsIG9wdGlvbnMpO1xuXHRcdFx0XHRhd2FpdCBzYXZlU2hhcmVkUGFnZShvcHRpb25zKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0bG9nZ2VyLndhcm4oXCJObyBvcHRpb25zIHByb3ZpZGVkIHRvIHNoYXJlLlwiKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJTaGFyZSBjYW5ub3QgYmUgdHJpZ2dlcmVkIGFzIGl0IGhhc24ndCBiZWVuIHJlZ2lzdGVyZWQgeWV0LlwiKTtcblx0fVxufVxuXG4vKipcbiAqIFNob3cgYSBzdWNjZXNzZnVsIGxvYWQgbm90aWZpY2F0aW9uLlxuICovXG5hc3luYyBmdW5jdGlvbiBub3RpZnlPZlN1Y2Nlc3NmdWxMb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBzZXR0aW5ncyA9IGF3YWl0IGdldFNldHRpbmdzKCk7XG5cblx0Y29uc3Qgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25PcHRpb25zID0ge1xuXHRcdGV4cGlyZXM6IG5ldyBEYXRlKERhdGUubm93KCkgKyAzMDAwMCksXG5cdFx0Ym9keTogXCJUaGUgc2hhcmUgcmVxdWVzdCBoYXMgYmVlbiBmZXRjaGVkIGFuZCBhcHBsaWVkLlwiLFxuXHRcdGJ1dHRvbnM6IFtcblx0XHRcdHtcblx0XHRcdFx0c3VibWl0OiBmYWxzZSxcblx0XHRcdFx0b25DbGljazogbnVsbCxcblx0XHRcdFx0aW5kZXg6IDMsXG5cdFx0XHRcdGljb25Vcmw6IFwiXCIsXG5cdFx0XHRcdGN0YTogZmFsc2UsXG5cdFx0XHRcdHRpdGxlOiBcIkRpc21pc3NcIixcblx0XHRcdFx0dHlwZTogXCJidXR0b25cIlxuXHRcdFx0fVxuXHRcdF0sXG5cdFx0c3RyZWFtOiB7XG5cdFx0XHRpZDogXCJzaGFyZS1yZXF1ZXN0c1wiLFxuXHRcdFx0ZGlzcGxheU5hbWU6IFwiU2hhcmUgUmVxdWVzdFwiLFxuXHRcdFx0YXBwSWQ6IGZpbi5tZS5pZGVudGl0eS51dWlkXG5cdFx0fSxcblx0XHRwcmlvcml0eTogMSxcblx0XHRpY29uOlxuXHRcdFx0c2V0dGluZ3MuYnJvd3NlclByb3ZpZGVyPy5kZWZhdWx0V2luZG93T3B0aW9ucz8uaWNvbiA/PyBzZXR0aW5ncy5icm93c2VyUHJvdmlkZXI/LndpbmRvd09wdGlvbnM/Lmljb24sXG5cdFx0aW5kaWNhdG9yOiB7XG5cdFx0XHRjb2xvcjogSW5kaWNhdG9yQ29sb3IuR1JFRU4sXG5cdFx0XHR0ZXh0OiBcIlNoYXJlIFJlcXVlc3QgQXBwbGllZFwiXG5cdFx0fSxcblx0XHRjYXRlZ29yeTogXCJzaGFyZVwiLFxuXHRcdHRpdGxlOiBcIlNoYXJlIFJlcXVlc3QgQXBwbGllZFwiLFxuXHRcdHRlbXBsYXRlOiBcIm1hcmtkb3duXCJcblx0fTtcblx0YXdhaXQgY3JlYXRlKG5vdGlmaWNhdGlvbik7XG59XG5cbi8qKlxuICogU2hvdyBhIHN1Y2Nlc3Mgbm90aWZpY2F0aW9uLlxuICogQHBhcmFtIHVybCBUaGUgdXJsIHRvIHNob3cgaW4gdGhlIG5vdGlmaWNhdGlvbiBib2R5LlxuICogQHBhcmFtIGV4cGlyeUluSG91cnMgVGhlIGV4cGlyeSB0aW1lIGZvciB0aGUgbm90aWZpY2F0aW9uLlxuICovXG5hc3luYyBmdW5jdGlvbiBub3RpZnlPZlN1Y2Nlc3ModXJsOiBzdHJpbmcsIGV4cGlyeUluSG91cnM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBzZXR0aW5ncyA9IGF3YWl0IGdldFNldHRpbmdzKCk7XG5cblx0Y29uc3Qgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25PcHRpb25zID0ge1xuXHRcdGV4cGlyZXM6IG5ldyBEYXRlKERhdGUubm93KCkgKyAzMDAwMCksXG5cdFx0Ym9keTogYFRoZSBzaGFyZSByZXF1ZXN0IHlvdSByYWlzZWQgaGFzIGJlZW4gY29waWVkIHRvIHRoZSAqKmNsaXBib2FyZCoqIGFuZCB3aWxsIGJlIHZhbGlkIGZvciAke2V4cGlyeUluSG91cnN9IGhvdXJzLiBcXG4gU2hhcmUgVXJsOiBcXG4gKiAqKiR7dXJsfSoqYCxcblx0XHRidXR0b25zOiBbXG5cdFx0XHR7XG5cdFx0XHRcdHN1Ym1pdDogZmFsc2UsXG5cdFx0XHRcdG9uQ2xpY2s6IG51bGwsXG5cdFx0XHRcdGluZGV4OiAzLFxuXHRcdFx0XHRpY29uVXJsOiBcIlwiLFxuXHRcdFx0XHRjdGE6IGZhbHNlLFxuXHRcdFx0XHR0aXRsZTogXCJEaXNtaXNzXCIsXG5cdFx0XHRcdHR5cGU6IFwiYnV0dG9uXCJcblx0XHRcdH1cblx0XHRdLFxuXHRcdHN0cmVhbToge1xuXHRcdFx0aWQ6IFwic2hhcmUtcmVxdWVzdHNcIixcblx0XHRcdGRpc3BsYXlOYW1lOiBcIlNoYXJlIFJlcXVlc3RcIixcblx0XHRcdGFwcElkOiBmaW4ubWUuaWRlbnRpdHkudXVpZFxuXHRcdH0sXG5cdFx0cHJpb3JpdHk6IDEsXG5cdFx0aWNvbjpcblx0XHRcdHNldHRpbmdzLmJyb3dzZXJQcm92aWRlcj8uZGVmYXVsdFdpbmRvd09wdGlvbnM/Lmljb24gPz8gc2V0dGluZ3MuYnJvd3NlclByb3ZpZGVyPy53aW5kb3dPcHRpb25zPy5pY29uLFxuXHRcdGluZGljYXRvcjoge1xuXHRcdFx0Y29sb3I6IEluZGljYXRvckNvbG9yLkJMVUUsXG5cdFx0XHR0ZXh0OiBcIlNoYXJlIFJlcXVlc3QgUmFpc2VkXCJcblx0XHR9LFxuXHRcdGNhdGVnb3J5OiBcInNoYXJlXCIsXG5cdFx0dGl0bGU6IFwiU2hhcmUgUmVxdWVzdCBSYWlzZWRcIixcblx0XHR0ZW1wbGF0ZTogXCJtYXJrZG93blwiXG5cdH07XG5cdGF3YWl0IGNyZWF0ZShub3RpZmljYXRpb24pO1xufVxuXG4vKipcbiAqIE5vdGlmeSBvZiBmYWlsdXJlLlxuICogQHBhcmFtIGJvZHkgVGhlIG1lc3NhZ2UgZm9yIHRoZSBmYWlsdXJlLlxuICovXG5hc3luYyBmdW5jdGlvbiBub3RpZnlPZkZhaWx1cmUoYm9keTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IHNldHRpbmdzID0gYXdhaXQgZ2V0U2V0dGluZ3MoKTtcblxuXHRjb25zdCBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbk9wdGlvbnMgPSB7XG5cdFx0ZXhwaXJlczogbmV3IERhdGUoRGF0ZS5ub3coKSArIDMwMDAwKSxcblx0XHRib2R5LFxuXHRcdGJ1dHRvbnM6IFtcblx0XHRcdHtcblx0XHRcdFx0c3VibWl0OiBmYWxzZSxcblx0XHRcdFx0b25DbGljazogbnVsbCxcblx0XHRcdFx0aW5kZXg6IDMsXG5cdFx0XHRcdGljb25Vcmw6IFwiXCIsXG5cdFx0XHRcdGN0YTogZmFsc2UsXG5cdFx0XHRcdHRpdGxlOiBcIkRpc21pc3NcIixcblx0XHRcdFx0dHlwZTogXCJidXR0b25cIlxuXHRcdFx0fVxuXHRcdF0sXG5cdFx0c3RyZWFtOiB7XG5cdFx0XHRpZDogXCJzaGFyZS1yZXF1ZXN0c1wiLFxuXHRcdFx0ZGlzcGxheU5hbWU6IFwiU2hhcmUgUmVxdWVzdFwiLFxuXHRcdFx0YXBwSWQ6IGZpbi5tZS5pZGVudGl0eS51dWlkXG5cdFx0fSxcblx0XHRwcmlvcml0eTogMSxcblx0XHRpY29uOlxuXHRcdFx0c2V0dGluZ3MuYnJvd3NlclByb3ZpZGVyPy5kZWZhdWx0V2luZG93T3B0aW9ucz8uaWNvbiA/PyBzZXR0aW5ncy5icm93c2VyUHJvdmlkZXI/LndpbmRvd09wdGlvbnM/Lmljb24sXG5cdFx0aW5kaWNhdG9yOiB7XG5cdFx0XHRjb2xvcjogSW5kaWNhdG9yQ29sb3IuUkVELFxuXHRcdFx0dGV4dDogXCJTaGFyZSBSZXF1ZXN0IEZhaWxlZFwiXG5cdFx0fSxcblx0XHRjYXRlZ29yeTogXCJzaGFyZVwiLFxuXHRcdHRpdGxlOiBcIlNoYXJlIFJlcXVlc3QgRmFpbGVkXCIsXG5cdFx0dGVtcGxhdGU6IFwibWFya2Rvd25cIlxuXHR9O1xuXHRhd2FpdCBjcmVhdGUobm90aWZpY2F0aW9uKTtcbn1cblxuLyoqXG4gKiBOb3RpZnkgdGhhdCBhIHNoYXJlIHJlcXVlc3QgaGFzIGV4cGlyZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG5vdGlmeU9mRXhwaXJ5KCk6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBzZXR0aW5ncyA9IGF3YWl0IGdldFNldHRpbmdzKCk7XG5cblx0Y29uc3Qgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25PcHRpb25zID0ge1xuXHRcdGV4cGlyZXM6IG5ldyBEYXRlKERhdGUubm93KCkgKyAzMDAwMCksXG5cdFx0Ym9keTogXCJUaGUgc2hhcmUgcmVxdWVzdCBoYXMgZXhwaXJlZCBhbmQgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS5cIixcblx0XHRidXR0b25zOiBbXG5cdFx0XHR7XG5cdFx0XHRcdHN1Ym1pdDogZmFsc2UsXG5cdFx0XHRcdG9uQ2xpY2s6IG51bGwsXG5cdFx0XHRcdGluZGV4OiAzLFxuXHRcdFx0XHRpY29uVXJsOiBcIlwiLFxuXHRcdFx0XHRjdGE6IGZhbHNlLFxuXHRcdFx0XHR0aXRsZTogXCJEaXNtaXNzXCIsXG5cdFx0XHRcdHR5cGU6IFwiYnV0dG9uXCJcblx0XHRcdH1cblx0XHRdLFxuXHRcdHN0cmVhbToge1xuXHRcdFx0aWQ6IFwic2hhcmUtcmVxdWVzdHNcIixcblx0XHRcdGRpc3BsYXlOYW1lOiBcIlNoYXJlIFJlcXVlc3RcIixcblx0XHRcdGFwcElkOiBmaW4ubWUuaWRlbnRpdHkudXVpZFxuXHRcdH0sXG5cdFx0cHJpb3JpdHk6IDEsXG5cdFx0aWNvbjpcblx0XHRcdHNldHRpbmdzLmJyb3dzZXJQcm92aWRlcj8uZGVmYXVsdFdpbmRvd09wdGlvbnM/Lmljb24gPz8gc2V0dGluZ3MuYnJvd3NlclByb3ZpZGVyPy53aW5kb3dPcHRpb25zPy5pY29uLFxuXHRcdGluZGljYXRvcjoge1xuXHRcdFx0Y29sb3I6IEluZGljYXRvckNvbG9yLlJFRCxcblx0XHRcdHRleHQ6IFwiU2hhcmUgUmVxdWVzdCBFeHBpcmVkXCJcblx0XHR9LFxuXHRcdGNhdGVnb3J5OiBcInNoYXJlXCIsXG5cdFx0dGl0bGU6IFwiU2hhcmUgUmVxdWVzdCBFeHBpcmVkXCIsXG5cdFx0dGVtcGxhdGU6IFwibWFya2Rvd25cIlxuXHR9O1xuXHRhd2FpdCBjcmVhdGUobm90aWZpY2F0aW9uKTtcbn1cblxuLyoqXG4gKiBTYXZlIGEgc2hhcmVkIHBhZ2UuXG4gKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBmb3IgdGhlIHNoYXJlLlxuICovXG5hc3luYyBmdW5jdGlvbiBzYXZlU2hhcmVkUGFnZShkYXRhOiBTaGFyZVBhZ2VEYXRhKTogUHJvbWlzZTx2b2lkPiB7XG5cdGxldCBwYWdlOiBQYWdlIHwgdW5kZWZpbmVkO1xuXHRpZiAoIWlzRW1wdHkoZGF0YS5wYWdlKSkge1xuXHRcdHBhZ2UgPSBkYXRhLnBhZ2U7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdGxldCB1c2VTdG9yYWdlID0gdHJ1ZTtcblx0XHR0cnkge1xuXHRcdFx0aWYgKGRhdGEud2luZG93SWRlbnRpdHkpIHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0V2luZG93ID0gcGxhdGZvcm0uQnJvd3Nlci53cmFwU3luYyhkYXRhLndpbmRvd0lkZW50aXR5KTtcblx0XHRcdFx0cGFnZSA9IGF3YWl0IHRhcmdldFdpbmRvdy5nZXRQYWdlKGRhdGEucGFnZUlkKTtcblx0XHRcdFx0aWYgKGlzRW1wdHkocGFnZT8uY3VzdG9tRGF0YSkpIHtcblx0XHRcdFx0XHRwYWdlLmN1c3RvbURhdGEgPSB7fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRwYWdlLmN1c3RvbURhdGEud2luZG93Qm91bmRzID0gYXdhaXQgdGFyZ2V0V2luZG93Lm9wZW5maW5XaW5kb3cuZ2V0Qm91bmRzKCk7XG5cdFx0XHRcdHVzZVN0b3JhZ2UgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIHt9XG5cdFx0aWYgKGlzRW1wdHkocGFnZSkgJiYgIWlzRW1wdHkoZGF0YS5wYWdlSWQpKSB7XG5cdFx0XHQvLyB3ZSBoYXZlbid0IGdvdCBhIHBhc3NlZCBwYWdlIGFuZCB3ZSB3ZXJlIG5vdCBnaXZlbiBhIHdpbmRvdyBpZGVudGl0eSBidXQgd2UgZG8gaGF2ZSBhIHBhZ2VJZFxuXHRcdFx0Ly8gY2hlY2sgdG8gc2VlIGlmIGl0IGlzIGFuIGFjdGl2ZSBwYWdlIHRvIGdldCB0aGUgbGF0ZXN0IGluZm9ybWF0aW9uXG5cdFx0XHRjb25zdCBhdHRhY2hlZFBhZ2VzID0gYXdhaXQgcGxhdGZvcm0uQnJvd3Nlci5nZXRBbGxBdHRhY2hlZFBhZ2VzKCk7XG5cdFx0XHRmb3IgKGNvbnN0IGF0dGFjaGVkUGFnZSBvZiBhdHRhY2hlZFBhZ2VzKSB7XG5cdFx0XHRcdGlmIChhdHRhY2hlZFBhZ2UucGFnZUlkID09PSBkYXRhLnBhZ2VJZCkge1xuXHRcdFx0XHRcdHBhZ2UgPSB7IC4uLmF0dGFjaGVkUGFnZSB9O1xuXHRcdFx0XHRcdGlmIChpc0VtcHR5KHBhZ2UuY3VzdG9tRGF0YSkpIHtcblx0XHRcdFx0XHRcdHBhZ2UuY3VzdG9tRGF0YSA9IHt9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRwYWdlLmN1c3RvbURhdGEud2luZG93Qm91bmRzID0gZ2V0UGFnZUJvdW5kcyhkYXRhLnBhZ2VJZCk7XG5cdFx0XHRcdFx0dXNlU3RvcmFnZSA9IGZhbHNlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICh1c2VTdG9yYWdlKSB7XG5cdFx0XHRwYWdlID0gYXdhaXQgcGxhdGZvcm0uU3RvcmFnZS5nZXRQYWdlKGRhdGEucGFnZUlkKTtcblx0XHR9XG5cdH1cblx0Y29uc3QgcGF5bG9hZCA9IHtcblx0XHR0eXBlOiBcInBhZ2VcIixcblx0XHRkYXRhOiB7XG5cdFx0XHRwYWdlXG5cdFx0fVxuXHR9O1xuXHRhd2FpdCBzYXZlU2hhcmVSZXF1ZXN0KHBheWxvYWQpO1xufVxuXG4vKipcbiAqIFNhdmUgYSB3b3Jrc3BhY2UuXG4gKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBmb3IgdGhlIHNoYXJlLlxuICovXG5hc3luYyBmdW5jdGlvbiBzYXZlU2hhcmVkV29ya3NwYWNlKGRhdGE/OiBTaGFyZVdvcmtzcGFjZURhdGEpOiBQcm9taXNlPHZvaWQ+IHtcblx0bGV0IHNuYXBzaG90ID0gbnVsbDtcblxuXHRjb25zdCB3b3Jrc3BhY2VJZCA9IGRhdGE/LndvcmtzcGFjZUlkO1xuXHRpZiAoaXNFbXB0eSh3b3Jrc3BhY2VJZCkpIHtcblx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0c25hcHNob3QgPSBhd2FpdCBwbGF0Zm9ybS5nZXRTbmFwc2hvdCgpO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRjb25zdCBzYXZlZFdvcmtzcGFjZSA9IGF3YWl0IHBsYXRmb3JtLlN0b3JhZ2UuZ2V0V29ya3NwYWNlKHdvcmtzcGFjZUlkKTtcblx0XHRpZiAoIWlzRW1wdHkoc2F2ZWRXb3Jrc3BhY2UpKSB7XG5cdFx0XHRzbmFwc2hvdCA9IHNhdmVkV29ya3NwYWNlLnNuYXBzaG90O1xuXHRcdH1cblx0fVxuXG5cdGlmIChpc0VtcHR5KHNuYXBzaG90KSkge1xuXHRcdGF3YWl0IG5vdGlmeU9mRmFpbHVyZShcIlVuYWJsZSB0byBhY3Rpb24geW91ciB3b3Jrc3BhY2Ugc2hhcmUgcmVxdWVzdC5cIik7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgcGF5bG9hZCA9IHtcblx0XHRcdHR5cGU6IFwid29ya3NwYWNlXCIsXG5cdFx0XHRkYXRhOiB7XG5cdFx0XHRcdHNuYXBzaG90XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRhd2FpdCBzYXZlU2hhcmVSZXF1ZXN0KHBheWxvYWQpO1xuXHR9XG59XG5cbi8qKlxuICogU2F2ZSB0aGUgcmVxdWVzdC5cbiAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIHRvIHNhdmUuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNhdmVTaGFyZVJlcXVlc3QocGF5bG9hZDogdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuXHR0cnkge1xuXHRcdGNvbnN0IGV4cGlyeUluSG91cnMgPSAyNDtcblx0XHRjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RSZXNwb25zZTx1bmtub3duLCB7IHVybDogc3RyaW5nOyBpZD86IHN0cmluZyB9PihcInNoYXJlLXNhdmVcIiwgcGF5bG9hZCk7XG5cblx0XHRpZiAocmVzcG9uc2UpIHtcblx0XHRcdGxldCBpZCA9IHJlc3BvbnNlLmlkO1xuXHRcdFx0aWYgKGlzRW1wdHkoaWQpKSB7XG5cdFx0XHRcdGNvbnN0IGluZGV4T2ZJZCA9IHJlc3BvbnNlLnVybC5sYXN0SW5kZXhPZihcIi9cIik7XG5cdFx0XHRcdGlmIChpbmRleE9mSWQgIT09IC0xKSB7XG5cdFx0XHRcdFx0aWQgPSByZXNwb25zZS51cmwuc2xpY2UoaW5kZXhPZklkICsgMSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKGlzRW1wdHkoaWQpKSB7XG5cdFx0XHRcdGF3YWl0IG5vdGlmeU9mRmFpbHVyZShcIlRoZSBzaGFyZSByZXF1ZXN0IHlvdSByYWlzZWQgY291bGQgbm90IGJlIGdlbmVyYXRlZC5cIik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdFx0Y29uc3QgcGxhdGZvcm1JbmZvID0gYXdhaXQgcGxhdGZvcm0uQXBwbGljYXRpb24uZ2V0SW5mbygpO1xuXHRcdFx0bGV0IGZpbnNMaW5rOiBzdHJpbmc7XG5cblx0XHRcdGlmIChwbGF0Zm9ybUluZm8ubWFuaWZlc3RVcmwuc3RhcnRzV2l0aChcImh0dHBcIikpIHtcblx0XHRcdFx0Zmluc0xpbmsgPSBgJHtwbGF0Zm9ybUluZm8ubWFuaWZlc3RVcmwucmVwbGFjZShcImh0dHBcIiwgXCJmaW5cIil9PyQkc2hhcmVJZD0ke2lkfWA7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXG5cdFx0XHRcdFx0XCJXZSBkbyBub3Qgc3VwcG9ydCBmaWxlIGJhc2VkIG1hbmlmZXN0IGxhdW5jaGVzLiBUaGUgbWFuaWZlc3QgaGFzIHRvIGJlIHNlcnZlZCBvdmVyIGh0dHAvaHR0cHM6XCIsXG5cdFx0XHRcdFx0cGxhdGZvcm1JbmZvLm1hbmlmZXN0VXJsXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGF3YWl0IG5vdGlmeU9mRmFpbHVyZShcIlRoZSBzaGFyZSByZXF1ZXN0IHlvdSByYWlzZWQgY291bGQgbm90IGJlIGdlbmVyYXRlZC5cIik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0YXdhaXQgZmluLkNsaXBib2FyZC53cml0ZVRleHQoe1xuXHRcdFx0XHRkYXRhOiBmaW5zTGlua1xuXHRcdFx0fSk7XG5cdFx0XHRhd2FpdCBub3RpZnlPZlN1Y2Nlc3MoZmluc0xpbmssIGV4cGlyeUluSG91cnMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhd2FpdCBub3RpZnlPZkZhaWx1cmUoXCJUaGUgc2hhcmUgcmVxdWVzdCB5b3UgcmFpc2VkIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQuXCIpO1xuXHRcdH1cblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRsb2dnZXIuZXJyb3IoXCJFcnJvciBzYXZpbmcgc2hhcmUgcmVxdWVzdDpcIiwgZXJyb3IpO1xuXHRcdGF3YWl0IG5vdGlmeU9mRmFpbHVyZShcIlRoZSBzaGFyZSByZXF1ZXN0IHlvdSByYWlzZWQgY291bGQgbm90IGJlIGdlbmVyYXRlZC5cIik7XG5cdH1cbn1cblxuLyoqXG4gKiBMb2FkIGEgc2hhcmVkIGVudHJ5LlxuICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgZW50cnkgdG8gbG9hZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZFNoYXJlZEVudHJ5KGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0dHJ5IHtcblx0XHRjb25zdCBzaGFyZUVudHJ5ID0gYXdhaXQgcmVxdWVzdFJlc3BvbnNlPHsgaWQ6IHN0cmluZyB9LCBTaGFyZVN0b3JlRW50cnk+KFwic2hhcmUtZ2V0XCIsIHsgaWQgfSk7XG5cdFx0aWYgKCFpc0VtcHR5KHNoYXJlRW50cnkpKSB7XG5cdFx0XHRpZiAoc2hhcmVFbnRyeS50eXBlID09PSBcInBhZ2VcIikge1xuXHRcdFx0XHRhd2FpdCBsYXVuY2hQYWdlKHNoYXJlRW50cnkuZGF0YS5wYWdlLCB1bmRlZmluZWQsIGxvZ2dlcik7XG5cdFx0XHR9IGVsc2UgaWYgKHNoYXJlRW50cnkudHlwZSA9PT0gXCJ3b3Jrc3BhY2VcIikge1xuXHRcdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHRcdGF3YWl0IHBsYXRmb3JtLmFwcGx5U25hcHNob3Qoc2hhcmVFbnRyeS5kYXRhLnNuYXBzaG90KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKGBTaGFyZSBlbnRyeSBvZiB1bmtub3duIHR5cGUgc3BlY2lmaWVkOiAke3NoYXJlRW50cnkudHlwZX1gKTtcblx0XHRcdFx0YXdhaXQgbm90aWZ5T2ZGYWlsdXJlKFwiVGhlIHNwZWNpZmllZCBzaGFyZSBsaW5rIGlzIG5vdCBzdXBwb3J0ZWQgYW5kIGNhbm5vdCBiZSBsb2FkZWQuXCIpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRhd2FpdCBub3RpZnlPZlN1Y2Nlc3NmdWxMb2FkKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGF3YWl0IG5vdGlmeU9mRXhwaXJ5KCk7XG5cdFx0fVxuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdGxvZ2dlci5lcnJvcihcIlRoZXJlIGhhcyBiZWVuIGFuIGVycm9yIHRyeWluZyB0byBsb2FkIGFuZCBhcHBseSB0aGUgc2hhcmUgbGluay5cIiwgZXJyb3IpO1xuXHRcdGF3YWl0IG5vdGlmeU9mRmFpbHVyZShcIlRoZSBzcGVjaWZpZWQgc2hhcmUgbGluayBjYW5ub3QgYmUgbG9hZGVkLlwiKTtcblx0fVxufVxuIiwiaW1wb3J0IHR5cGUgT3BlbkZpbiBmcm9tIFwiQG9wZW5maW4vY29yZVwiO1xuaW1wb3J0IHsgZ2V0Q29ubmVjdGVkU25hcHNob3RTb3VyY2VDbGllbnRzIH0gZnJvbSBcIi4vY29ubmVjdGlvbnNcIjtcbmltcG9ydCB7IGxhdW5jaCB9IGZyb20gXCIuL2xhdW5jaFwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSB7IENsaWVudFNuYXBzaG90LCBQbGF0Zm9ybUFwcCB9IGZyb20gXCIuL3NoYXBlcy9hcHAtc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiU25hcHNob3RTb3VyY2VcIik7XG5cbi8qKlxuICogRGVjb3JhdGUgYSBzbmFwc2hvdCB3aXRoIHRoZSBuYXRpdmUgd2luZG93IGluZm9ybWF0aW9uLlxuICogQHBhcmFtIHNuYXBzaG90IFRoZSBzbmFwc2hvdCB0byBkZWNvcmF0ZS5cbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgc25hcHNob3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWNvcmF0ZVNuYXBzaG90KHNuYXBzaG90OiBPcGVuRmluLlNuYXBzaG90KTogUHJvbWlzZTxPcGVuRmluLlNuYXBzaG90PiB7XG5cdGNvbnN0IHNvdXJjZXMgPSBhd2FpdCBnZXRDb25uZWN0ZWRTbmFwc2hvdFNvdXJjZUNsaWVudHMoKTtcblxuXHRpZiAoc291cmNlcy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4gc25hcHNob3Q7XG5cdH1cblxuXHRjb25zdCBjbGllbnRTbmFwc2hvdHM6IChDbGllbnRTbmFwc2hvdCB8IHVuZGVmaW5lZClbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuXHRcdHNvdXJjZXMubWFwKGFzeW5jIChlbnRyeSkgPT4ge1xuXHRcdFx0Y29uc3Qgc25hcFNob3RTb3VyY2UgPSBhd2FpdCBmaW4uU25hcHNob3RTb3VyY2Uud3JhcCh7IHV1aWQ6IGVudHJ5LmlkZW50aXR5LnV1aWQgfSk7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgU25hcHNob3Qgc291cmNlOiAke2VudHJ5LmlkZW50aXR5LnV1aWR9LiBSZXF1ZXN0aW5nIGEgc25hcHNob3QuYCk7XG5cdFx0XHRcdGNvbnN0IHNvdXJjZVNuYXBzaG90ID0gYXdhaXQgc25hcFNob3RTb3VyY2UuZ2V0U25hcHNob3QoKTtcblx0XHRcdFx0cmV0dXJuIHsgaWRlbnRpdHk6IGVudHJ5LmlkZW50aXR5LCBzbmFwc2hvdDogc291cmNlU25hcHNob3QgfTtcblx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgU25hcHNob3Qgc291cmNlOiAke2VudHJ5LmlkZW50aXR5LnV1aWR9IHdhcyBub3QgYXZhaWxhYmxlLmApO1xuXHRcdFx0fVxuXHRcdH0pXG5cdCk7XG5cblx0Y29uc3QgZGVjb3JhdGVkU25hcHNob3Q6IE9wZW5GaW4uU25hcHNob3QgPSBPYmplY3QuYXNzaWduKHNuYXBzaG90LCB7XG5cdFx0Y2xpZW50U25hcHNob3RzOiBjbGllbnRTbmFwc2hvdHMuZmlsdGVyKChzbmFwc2hvdFNvdXJjZSkgPT4gIWlzRW1wdHkoc25hcHNob3RTb3VyY2UpKVxuXHR9KTtcblxuXHRyZXR1cm4gZGVjb3JhdGVkU25hcHNob3Q7XG59XG5cbi8qKlxuICogQXBwbHkgY29ubmVjdGVkIGNsaWVudCB0byBhIHNuYXBzaG90LlxuICogQHBhcmFtIHNuYXBzaG90IFRoZSBzbmFwc2hvdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5Q2xpZW50U25hcHNob3QoXG5cdHNuYXBzaG90OiBPcGVuRmluLlNuYXBzaG90ICYgeyBjbGllbnRTbmFwc2hvdHM/OiBDbGllbnRTbmFwc2hvdFtdIH1cbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoQXJyYXkuaXNBcnJheShzbmFwc2hvdD8uY2xpZW50U25hcHNob3RzKSkge1xuXHRcdGNvbnN0IHNvdXJjZXMgPSBhd2FpdCBnZXRDb25uZWN0ZWRTbmFwc2hvdFNvdXJjZUNsaWVudHMoKTtcblx0XHRhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdHNuYXBzaG90LmNsaWVudFNuYXBzaG90cy5tYXAoYXN5bmMgKGNsaWVudFNuYXBzaG90OiBDbGllbnRTbmFwc2hvdCkgPT4ge1xuXHRcdFx0XHRpZiAoY2xpZW50U25hcHNob3QpIHtcblx0XHRcdFx0XHRpZiAoc291cmNlcy5zb21lKChzb3VyY2UpID0+IHNvdXJjZS5pZGVudGl0eS51dWlkID09PSBjbGllbnRTbmFwc2hvdC5pZGVudGl0eS51dWlkKSkge1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc25hcFNob3RTb3VyY2UgPSBhd2FpdCBmaW4uU25hcHNob3RTb3VyY2Uud3JhcChjbGllbnRTbmFwc2hvdC5pZGVudGl0eSk7XG5cdFx0XHRcdFx0XHRcdGxvZ2dlci5pbmZvKFxuXHRcdFx0XHRcdFx0XHRcdGBTbmFwc2hvdCBzb3VyY2U6ICR7Y2xpZW50U25hcHNob3QuaWRlbnRpdHkudXVpZH0gaXMgcnVubmluZyBhbmQgaGFzIGEgc25hcHNob3QgZW50cnkuIEFwcGx5aW5nIHNuYXBzaG90LmBcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0YXdhaXQgc25hcFNob3RTb3VyY2UuYXBwbHlTbmFwc2hvdChjbGllbnRTbmFwc2hvdC5zbmFwc2hvdCk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0XHRcdFx0YFNuYXBzaG90IHNvdXJjZTogJHtjbGllbnRTbmFwc2hvdC5pZGVudGl0eS51dWlkfSBpcyBub3QgYWJsZSB0byBhcHBseSB0aGUgc25hcHNob3QuYFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoIWlzRW1wdHkoY2xpZW50U25hcHNob3Q/LnNuYXBzaG90KSkge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc24gPSBjbGllbnRTbmFwc2hvdD8uc25hcHNob3Q7XG5cdFx0XHRcdFx0XHRjb25zdCBhcHA6IFBsYXRmb3JtQXBwIHwgdW5kZWZpbmVkID0gc24/LkFwcCA/PyBzbj8uYXBwO1xuXHRcdFx0XHRcdFx0aWYgKCFpc0VtcHR5KGFwcCkpIHtcblx0XHRcdFx0XHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFx0XHRcdFx0YENsaWVudCBub3QgY29ubmVjdGVkIGJ1dCBzbmFwc2hvdCBjb250YWlucyBhbiBhcHAgZGVmaW5pdGlvbi4gTGF1bmNoaW5nIGFwcCBkZWZpbml0aW9uIGZvciAke2NsaWVudFNuYXBzaG90LmlkZW50aXR5LnV1aWR9YFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRsb2dnZXIuZGVidWcoXCJDbGllbnQgYXBwIGRlZmluaXRpb246XCIsIGFwcCk7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IGxhdW5jaChhcHApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRcdFx0YENsaWVudCBzbmFwc2hvdCB3YXMgYXZhaWxhYmxlIGJ1dCB0aGUgc291cmNlICR7Y2xpZW50U25hcHNob3QuaWRlbnRpdHkudXVpZH0gd2FzIG5vdCBjb25uZWN0ZWQgYW5kIGl0IGRpZG4ndCBwcm92aWRlIGFuIGFwcC9BcHAgZW50cnkgYXMgcGFydCBvZiB0aGUgc25hcHNob3QgdG8gdHJpZ2dlciBhIGxhdW5jaC5gXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG59XG4iLCJpbXBvcnQge1xuXHRCdXR0b25TdHlsZSxcblx0VGVtcGxhdGVGcmFnbWVudFR5cGVzLFxuXHR0eXBlIEJ1dHRvblRlbXBsYXRlRnJhZ21lbnQsXG5cdHR5cGUgSW1hZ2VUZW1wbGF0ZUZyYWdtZW50LFxuXHR0eXBlIFBsYWluQ29udGFpbmVyVGVtcGxhdGVGcmFnbWVudCxcblx0dHlwZSBUZW1wbGF0ZUZyYWdtZW50LFxuXHR0eXBlIFRleHRUZW1wbGF0ZUZyYWdtZW50XG59IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2VcIjtcbmltcG9ydCB0eXBlICogYXMgQ1NTIGZyb20gXCJjc3N0eXBlXCI7XG5pbXBvcnQgdHlwZSB7IFBsYXRmb3JtQXBwIH0gZnJvbSBcIi4vc2hhcGVzL2FwcC1zaGFwZXNcIjtcbmltcG9ydCB7IENvbG9yU2NoZW1lTW9kZSB9IGZyb20gXCIuL3NoYXBlcy90aGVtZS1zaGFwZXNcIjtcbmltcG9ydCB7IGdldEN1cnJlbnRDb2xvclNjaGVtZU1vZGUsIGdldEN1cnJlbnRQYWxldHRlIH0gZnJvbSBcIi4vdGhlbWVzXCI7XG5cbi8qKlxuICogQ3JlYXRlIGEgdGVtcGxhdGUgZm9yIGRpc3BsYXlpbmcgaGVscC5cbiAqIEBwYXJhbSB0aXRsZSBUaGUgdGl0bGUgYXQgdGhlIHRvcCBvZiB0aGUgdGVtcGxhdGUuXG4gKiBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSB0ZW1wbGF0ZS5cbiAqIEBwYXJhbSBleGFtcGxlcyBFeGFtcGxlIHRvIGRpc3BsYXkuXG4gKiBAcmV0dXJucyBUaGUgbGF5b3V0IGFuZCBkYXRhIGZvciB0aGUgdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVIZWxwKFxuXHR0aXRsZTogc3RyaW5nLFxuXHRkZXNjcmlwdGlvbjogc3RyaW5nW10sXG5cdGV4YW1wbGVzOiBzdHJpbmdbXVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKTogUHJvbWlzZTx7IGxheW91dDogUGxhaW5Db250YWluZXJUZW1wbGF0ZUZyYWdtZW50OyBkYXRhOiBhbnkgfT4ge1xuXHRjb25zdCBwYWxldHRlID0gYXdhaXQgZ2V0Q3VycmVudFBhbGV0dGUoKTtcblx0Y29uc3QgYWRkaXRpb25hbERhdGE6IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXHRjb25zdCBmcmFnbWVudHM6IFRlbXBsYXRlRnJhZ21lbnRbXSA9IFtdO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGRlc2NyaXB0aW9uLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgZGVzY3JpcHRpb25LZXkgPSBgZGVzYy0ke2l9YDtcblx0XHRhZGRpdGlvbmFsRGF0YVtkZXNjcmlwdGlvbktleV0gPSBkZXNjcmlwdGlvbltpXTtcblx0XHRmcmFnbWVudHMucHVzaChcblx0XHRcdGF3YWl0IGNyZWF0ZVRleHQoZGVzY3JpcHRpb25LZXksIDEyLCB7XG5cdFx0XHRcdHBhZGRpbmc6IFwiNnB4IDBweFwiXG5cdFx0XHR9KVxuXHRcdCk7XG5cdH1cblx0Y29uc3QgZXhhbXBsZUZyYWdtZW50czogVGVtcGxhdGVGcmFnbWVudFtdID0gW107XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgZXhhbXBsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRjb25zdCBleGFtcGxlS2V5ID0gYGxpbmUtJHtpfWA7XG5cdFx0YWRkaXRpb25hbERhdGFbZXhhbXBsZUtleV0gPSBleGFtcGxlc1tpXTtcblx0XHRleGFtcGxlRnJhZ21lbnRzLnB1c2goXG5cdFx0XHRhd2FpdCBjcmVhdGVUZXh0KGV4YW1wbGVLZXksIDEyLCB7XG5cdFx0XHRcdGZvbnRGYW1pbHk6IFwibW9ub3NwYWNlXCIsXG5cdFx0XHRcdHdoaXRlU3BhY2U6IFwibm93cmFwXCJcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXHRpZiAoZXhhbXBsZUZyYWdtZW50cy5sZW5ndGggPiAwKSB7XG5cdFx0ZnJhZ21lbnRzLnB1c2goXG5cdFx0XHRhd2FpdCBjcmVhdGVDb250YWluZXIoXCJjb2x1bW5cIiwgZXhhbXBsZUZyYWdtZW50cywge1xuXHRcdFx0XHRwYWRkaW5nOiBcIjEwcHhcIixcblx0XHRcdFx0bWFyZ2luVG9wOiBcIjZweFwiLFxuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I6IHBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kLFxuXHRcdFx0XHRjb2xvcjogcGFsZXR0ZS5pbnB1dENvbG9yLFxuXHRcdFx0XHRib3JkZXJSYWRpdXM6IFwiNXB4XCIsXG5cdFx0XHRcdG92ZXJmbG93OiBcImF1dG9cIlxuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG5cblx0Y29uc3QgbGF5b3V0RGF0YSA9IGF3YWl0IGNyZWF0ZUxheW91dCh0aXRsZSwgdW5kZWZpbmVkLCBmcmFnbWVudHMpO1xuXG5cdHJldHVybiB7XG5cdFx0bGF5b3V0OiBsYXlvdXREYXRhLmxheW91dCxcblx0XHRkYXRhOiB7XG5cdFx0XHQuLi5sYXlvdXREYXRhLmRhdGEsXG5cdFx0XHQuLi5hZGRpdGlvbmFsRGF0YVxuXHRcdH1cblx0fTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBjb250YWluZXIgZWxlbWVudCBmb3IgdGhlIGhvbWUgdGVtcGxhdGUuXG4gKiBAcGFyYW0gY29udGFpbmVyVHlwZSBUaGUgdHlwZSBvZiBjb250YWluZXIuXG4gKiBAcGFyYW0gY2hpbGRyZW4gVGhlIGNoaWxkcmVuIHRvIGluY2x1ZGUgaW4gdGhlIGNvbnRhaW5lci5cbiAqIEBwYXJhbSBzdHlsZSBBZGRpdGlvbmFsIENTUyBwcm9wZXJ0aWVzIHRvIHVzZS5cbiAqIEByZXR1cm5zIFRoZSBjb250YWluZXIgZnJhZ21lbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb250YWluZXIoXG5cdGNvbnRhaW5lclR5cGU6IFwiY29sdW1uXCIgfCBcInJvd1wiLFxuXHRjaGlsZHJlbjogVGVtcGxhdGVGcmFnbWVudFtdLFxuXHRzdHlsZT86IENTUy5Qcm9wZXJ0aWVzXG4pOiBQcm9taXNlPFBsYWluQ29udGFpbmVyVGVtcGxhdGVGcmFnbWVudD4ge1xuXHRyZXR1cm4ge1xuXHRcdHR5cGU6IFRlbXBsYXRlRnJhZ21lbnRUeXBlcy5Db250YWluZXIsXG5cdFx0c3R5bGU6IHtcblx0XHRcdGRpc3BsYXk6IFwiZmxleFwiLFxuXHRcdFx0ZmxleERpcmVjdGlvbjogY29udGFpbmVyVHlwZSxcblx0XHRcdC4uLnN0eWxlXG5cdFx0fSxcblx0XHRjaGlsZHJlblxuXHR9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHRpdGxlIGVsZW1lbnQuXG4gKiBAcGFyYW0gZGF0YUtleSBUaGUgZGF0YSBrZXkgZm9yIHRoZSB0aXRsZSB0ZXh0LlxuICogQHBhcmFtIGZvbnRTaXplIFRoZSBmb250IHNpemUuXG4gKiBAcGFyYW0gZm9udFdlaWdodCBUaGUgZm9udCB3ZWlnaHQuXG4gKiBAcGFyYW0gc3R5bGUgQWRkaXRpb25hbCBDU1MgcHJvcGVydGllcyB0byB1c2UuXG4gKiBAcmV0dXJucyBUaGUgdGl0bGUgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRpdGxlKFxuXHRkYXRhS2V5OiBzdHJpbmcsXG5cdGZvbnRTaXplOiBudW1iZXIgPSAxMixcblx0Zm9udFdlaWdodDogc3RyaW5nID0gXCJib2xkXCIsXG5cdHN0eWxlPzogQ1NTLlByb3BlcnRpZXNcbik6IFByb21pc2U8VGV4dFRlbXBsYXRlRnJhZ21lbnQ+IHtcblx0Y29uc3QgcGFsZXR0ZSA9IGF3YWl0IGdldEN1cnJlbnRQYWxldHRlKCk7XG5cdHJldHVybiB7XG5cdFx0dHlwZTogVGVtcGxhdGVGcmFnbWVudFR5cGVzLlRleHQsXG5cdFx0ZGF0YUtleSxcblx0XHRzdHlsZToge1xuXHRcdFx0Y29sb3I6IHBhbGV0dGUudGV4dERlZmF1bHQgPz8gXCIjZmZmZmZmXCIsXG5cdFx0XHRmb250U2l6ZTogYCR7Zm9udFNpemUgPz8gMTJ9cHhgLFxuXHRcdFx0Zm9udFdlaWdodCxcblx0XHRcdG92ZXJmbG93OiBcImhpZGRlblwiLFxuXHRcdFx0d2hpdGVTcGFjZTogXCJub3dyYXBcIixcblx0XHRcdHRleHRPdmVyZmxvdzogXCJlbGxpcHNpc1wiLFxuXHRcdFx0Li4uc3R5bGVcblx0XHR9XG5cdH07XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgdGV4dCBlbGVtZW50LlxuICogQHBhcmFtIGRhdGFLZXkgVGhlIGRhdGEga2V5IHRvIGxvb2t1cCBpbiB0aGUgZGF0YSBvYmplY3QuXG4gKiBAcGFyYW0gZm9udFNpemUgVGhlIHNpemUgb2YgdGhlIGZvbnQuXG4gKiBAcGFyYW0gc3R5bGUgQWRkaXRpb25hbCBDU1MgcHJvcGVydGllcyB0byB1c2UuXG4gKiBAcmV0dXJucyBUaGUgdGV4dCBmcmFnbWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRleHQoXG5cdGRhdGFLZXk6IHN0cmluZyxcblx0Zm9udFNpemU6IG51bWJlciA9IDEyLFxuXHRzdHlsZT86IENTUy5Qcm9wZXJ0aWVzXG4pOiBQcm9taXNlPFRleHRUZW1wbGF0ZUZyYWdtZW50PiB7XG5cdHJldHVybiB7XG5cdFx0dHlwZTogVGVtcGxhdGVGcmFnbWVudFR5cGVzLlRleHQsXG5cdFx0ZGF0YUtleSxcblx0XHRzdHlsZToge1xuXHRcdFx0Zm9udFNpemU6IGAke2ZvbnRTaXplID8/IDEyfXB4YCxcblx0XHRcdC4uLnN0eWxlXG5cdFx0fVxuXHR9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBpbWFnZSBlbGVtZW50LlxuICogQHBhcmFtIGRhdGFLZXkgVGhlIGRhdGEga2V5IGZvciB0aGUgaW1hZ2UgdXJsLlxuICogQHBhcmFtIGFsdGVybmF0aXZlVGV4dCBBbHRlcm5hdGl2ZSB0ZXh0IGZvciB0aGUgaW1hZ2UuXG4gKiBAcGFyYW0gc3R5bGUgQWRkaXRpb25hbCBDU1MgcHJvcGVydGllcyB0byB1c2UuXG4gKiBAcmV0dXJucyBUaGUgaW1hZ2UgZnJhZ21lbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVJbWFnZShcblx0ZGF0YUtleTogc3RyaW5nLFxuXHRhbHRlcm5hdGl2ZVRleHQ6IHN0cmluZyxcblx0c3R5bGU/OiBDU1MuUHJvcGVydGllc1xuKTogUHJvbWlzZTxJbWFnZVRlbXBsYXRlRnJhZ21lbnQ+IHtcblx0cmV0dXJuIHtcblx0XHR0eXBlOiBUZW1wbGF0ZUZyYWdtZW50VHlwZXMuSW1hZ2UsXG5cdFx0ZGF0YUtleSxcblx0XHRhbHRlcm5hdGl2ZVRleHQsXG5cdFx0c3R5bGU6IHtcblx0XHRcdC4uLnN0eWxlXG5cdFx0fVxuXHR9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGJ1dHRvbiBlbGVtZW50LlxuICogQHBhcmFtIGJ1dHRvblN0eWxlIFRoZSBzdHlsZSBvZiB0aGUgYnV0dG9uLlxuICogQHBhcmFtIHRpdGxlS2V5IFRoZSBkYXRhIGtleSB0byBsb29rdXAgaW4gdGhlIGRhdGEgb2JqZWN0IGZvciB0aGUgdGl0bGUuXG4gKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gdG8gc2VuZCBvbiB0aGUgYnV0dG9uIGNsaWNrLlxuICogQHBhcmFtIHN0eWxlIEFkZGl0aW9uYWwgQ1NTIHByb3BlcnRpZXMgdG8gdXNlLlxuICogQHBhcmFtIGNoaWxkcmVuIEFueSBjaGlsZCBlbGVtZW50cyBmb3IgdGhlIGJ1dHRvbi5cbiAqIEByZXR1cm5zIFRoZSBidXR0b24gZnJhZ21lbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVCdXR0b24oXG5cdGJ1dHRvblN0eWxlOiBCdXR0b25TdHlsZSxcblx0dGl0bGVLZXk6IHN0cmluZyxcblx0YWN0aW9uOiBzdHJpbmcsXG5cdHN0eWxlPzogQ1NTLlByb3BlcnRpZXMsXG5cdGNoaWxkcmVuPzogVGVtcGxhdGVGcmFnbWVudFtdXG4pOiBQcm9taXNlPEJ1dHRvblRlbXBsYXRlRnJhZ21lbnQ+IHtcblx0Y29uc3QgcGFsZXR0ZSA9IGF3YWl0IGdldEN1cnJlbnRQYWxldHRlKCk7XG5cdGNvbnN0IGJ1dHRvbk9wdGlvbnMgPVxuXHRcdGJ1dHRvblN0eWxlID09PSBCdXR0b25TdHlsZS5TZWNvbmRhcnlcblx0XHRcdD8ge1xuXHRcdFx0XHRcdGJvcmRlcjogYDFweCBzb2xpZCAke3BhbGV0dGUuaW5wdXRDb2xvcn1gXG5cdFx0XHQgIH1cblx0XHRcdDoge307XG5cdHJldHVybiB7XG5cdFx0dHlwZTogVGVtcGxhdGVGcmFnbWVudFR5cGVzLkJ1dHRvbixcblx0XHRidXR0b25TdHlsZSxcblx0XHRjaGlsZHJlbjogY2hpbGRyZW4gPz8gW2F3YWl0IGNyZWF0ZVRleHQodGl0bGVLZXksIDEyKV0sXG5cdFx0YWN0aW9uLFxuXHRcdHN0eWxlOiB7XG5cdFx0XHQuLi5idXR0b25PcHRpb25zLFxuXHRcdFx0Li4uc3R5bGVcblx0XHR9XG5cdH07XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbGFiZWxsZWQgdmFsdWUuXG4gKiBAcGFyYW0gbGFiZWxLZXkgVGhlIGRhdGEga2V5IHRvIGxvb2t1cCBpbiB0aGUgZGF0YSBvYmplY3QgZm9yIHRoZSBsYWJlbC5cbiAqIEBwYXJhbSB2YWx1ZUtleSBUaGUgZGF0YSBrZXkgdG8gbG9va3VwIGluIHRoZSBkYXRhIG9iamVjdCBmb3IgdGhlIHZhbHVlLlxuICogQHBhcmFtIHN0eWxlIEFkZGl0aW9uYWwgQ1NTIHByb3BlcnRpZXMgdG8gdXNlLlxuICogQHJldHVybnMgVGhlIGxhYmVsIGFuZCB2YWx1ZSBmcmFnbWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUxhYmVsbGVkVmFsdWUoXG5cdGxhYmVsS2V5OiBzdHJpbmcsXG5cdHZhbHVlS2V5OiBzdHJpbmcsXG5cdHN0eWxlPzogQ1NTLlByb3BlcnRpZXNcbik6IFByb21pc2U8UGxhaW5Db250YWluZXJUZW1wbGF0ZUZyYWdtZW50PiB7XG5cdGNvbnN0IHBhbGV0dGUgPSBhd2FpdCBnZXRDdXJyZW50UGFsZXR0ZSgpO1xuXHRyZXR1cm4ge1xuXHRcdHR5cGU6IFRlbXBsYXRlRnJhZ21lbnRUeXBlcy5Db250YWluZXIsXG5cdFx0c3R5bGU6IHtcblx0XHRcdGRpc3BsYXk6IFwiZmxleFwiLFxuXHRcdFx0ZmxleERpcmVjdGlvbjogXCJjb2x1bW5cIixcblx0XHRcdG1hcmdpbkJvdHRvbTogXCI5cHhcIixcblx0XHRcdC4uLnN0eWxlXG5cdFx0fSxcblx0XHRjaGlsZHJlbjogW1xuXHRcdFx0YXdhaXQgY3JlYXRlVGV4dChsYWJlbEtleSwgMTEsIHsgZm9udFdlaWdodDogXCJib2xkXCIsIGNvbG9yOiBwYWxldHRlLmJyYW5kUHJpbWFyeSB9KSxcblx0XHRcdGF3YWl0IGNyZWF0ZVRleHQodmFsdWVLZXksIDE0KVxuXHRcdF1cblx0fTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSB0YWJsZS5cbiAqIEBwYXJhbSB0YWJsZURhdGEgYXMgYW4gdGFibGUgdHdvIGRpbWVuc2lvbmFsIGFycmF5LlxuICogQHBhcmFtIGNvbFNwYW5zIFNwYW5zIGZvciB0aGUgY29sdW1ucy5cbiAqIEBwYXJhbSB0YWJsZUluZGV4IFRoZSBpbmRleCBmb3IgdGhlIHRhYmxlIHNvIHRoYXQga2V5cyBkb24ndCBjbGFzaC5cbiAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIG9iamVjdCB0byBwb3B1bGF0ZS5cbiAqIEByZXR1cm5zIFRoZSB0YWJsZSBmcmFnbWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRhYmxlKFxuXHR0YWJsZURhdGE6IHN0cmluZ1tdW10sXG5cdGNvbFNwYW5zOiBudW1iZXJbXSxcblx0dGFibGVJbmRleDogbnVtYmVyLFxuXHRkYXRhOiB7IFtpZDogc3RyaW5nXTogc3RyaW5nIH1cbik6IFByb21pc2U8VGVtcGxhdGVGcmFnbWVudD4ge1xuXHRjb25zdCBwYWxldHRlID0gYXdhaXQgZ2V0Q3VycmVudFBhbGV0dGUoKTtcblx0Y29uc3Qgc2NoZW1lID0gYXdhaXQgZ2V0Q3VycmVudENvbG9yU2NoZW1lTW9kZSgpO1xuXG5cdGNvbnN0IGhlYWRlckNvbG9yID0gc2NoZW1lID09PSBDb2xvclNjaGVtZU1vZGUuRGFyayA/IHBhbGV0dGUuYmFja2dyb3VuZDIgOiBwYWxldHRlLmJhY2tncm91bmQ1O1xuXHRjb25zdCBjZWxsQ29sb3IgPSBzY2hlbWUgPT09IENvbG9yU2NoZW1lTW9kZS5EYXJrID8gcGFsZXR0ZS5iYWNrZ3JvdW5kNSA6IHBhbGV0dGUuYmFja2dyb3VuZDI7XG5cblx0Y29uc3QgY2VsbHM6IFRlbXBsYXRlRnJhZ21lbnRbXSA9IFtdO1xuXHRjb25zdCBmaW5hbENvbFNwYW5zID0gY29sU3BhbnMuc2xpY2UoKTtcblx0Zm9yIChsZXQgY29sID0gMDsgY29sIDwgdGFibGVEYXRhWzBdLmxlbmd0aDsgY29sKyspIHtcblx0XHRjb25zdCBoZWFkZXJLZXkgPSBgdGFibGUke3RhYmxlSW5kZXh9X2hlYWRlciR7Y29sfWA7XG5cdFx0ZGF0YVtoZWFkZXJLZXldID0gdGFibGVEYXRhWzBdW2NvbF0gPz8gXCJcIjtcblx0XHRjZWxscy5wdXNoKFxuXHRcdFx0YXdhaXQgY3JlYXRlVGV4dChoZWFkZXJLZXksIDEwLCB7XG5cdFx0XHRcdHBhZGRpbmc6IFwiM3B4XCIsXG5cdFx0XHRcdHdoaXRlU3BhY2U6IFwibm93cmFwXCIsXG5cdFx0XHRcdGZvbnRXZWlnaHQ6IFwiYm9sZFwiLFxuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I6IGhlYWRlckNvbG9yXG5cdFx0XHR9KVxuXHRcdCk7XG5cblx0XHRpZiAoY29sU3BhbnMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRmaW5hbENvbFNwYW5zLnB1c2goMSk7XG5cdFx0fVxuXHR9XG5cblx0Zm9yIChsZXQgcm93ID0gMTsgcm93IDwgdGFibGVEYXRhLmxlbmd0aDsgcm93KyspIHtcblx0XHRmb3IgKGxldCBjb2wgPSAwOyBjb2wgPCB0YWJsZURhdGFbMF0ubGVuZ3RoOyBjb2wrKykge1xuXHRcdFx0Y29uc3Qgcm93Q29sS2V5ID0gYHRhYmxlJHt0YWJsZUluZGV4fV9jb2wke2NvbH1fcm93JHtyb3d9YDtcblx0XHRcdGRhdGFbcm93Q29sS2V5XSA9IHRhYmxlRGF0YVtyb3ddW2NvbF0gPz8gXCJcIjtcblx0XHRcdGNlbGxzLnB1c2goYXdhaXQgY3JlYXRlVGV4dChyb3dDb2xLZXksIDEwLCB7IHBhZGRpbmc6IFwiM3B4XCIsIHdoaXRlU3BhY2U6IFwibm93cmFwXCIgfSkpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjcmVhdGVDb250YWluZXIoXCJyb3dcIiwgY2VsbHMsIHtcblx0XHRkaXNwbGF5OiBcImdyaWRcIixcblx0XHRncmlkVGVtcGxhdGVDb2x1bW5zOiBmaW5hbENvbFNwYW5zLm1hcCgocykgPT4gYCR7c31mcmApLmpvaW4oXCIgXCIpLFxuXHRcdG1hcmdpbkJvdHRvbTogXCIxMHB4XCIsXG5cdFx0b3ZlcmZsb3c6IFwiYXV0b1wiLFxuXHRcdGJhY2tncm91bmQ6IGNlbGxDb2xvcixcblx0XHRib3JkZXI6IGAxcHggc29saWQgJHtoZWFkZXJDb2xvcn1gXG5cdH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGxpbmsgZWxlbWVudC5cbiAqIEBwYXJhbSBsYWJlbEtleSBUaGUgZGF0YSBrZXkgZm9yIHRoZSBsYWJlbCB0ZXh0LlxuICogQHBhcmFtIGFjdGlvbiBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gb24gY2xpY2tpbmcgdGhlIGxpbmsuXG4gKiBAcGFyYW0gZm9udFNpemUgVGhlIGZvbnQgc2l6ZSBmb3IgdGhlIGxpbmsuXG4gKiBAcGFyYW0gc3R5bGUgQWRkaXRpb25hbCBDU1MgcHJvcGVydGllcyB0byB1c2UuXG4gKiBAcmV0dXJucyBUaGUgbGluayBmcmFnbWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUxpbmsoXG5cdGxhYmVsS2V5OiBzdHJpbmcsXG5cdGFjdGlvbjogc3RyaW5nLFxuXHRmb250U2l6ZTogbnVtYmVyID0gMTAsXG5cdHN0eWxlPzogQ1NTLlByb3BlcnRpZXNcbik6IFByb21pc2U8VGVtcGxhdGVGcmFnbWVudD4ge1xuXHRyZXR1cm4ge1xuXHRcdHR5cGU6IFRlbXBsYXRlRnJhZ21lbnRUeXBlcy5CdXR0b24sXG5cdFx0YnV0dG9uU3R5bGU6IEJ1dHRvblN0eWxlLlRleHRPbmx5LFxuXHRcdGNoaWxkcmVuOiBbYXdhaXQgY3JlYXRlVGV4dChsYWJlbEtleSwgZm9udFNpemUpXSxcblx0XHRhY3Rpb24sXG5cdFx0c3R5bGU6IHtcblx0XHRcdHBhZGRpbmc6IDAsXG5cdFx0XHRib3JkZXI6IDAsXG5cdFx0XHRmb250V2VpZ2h0OiBcIm5vcm1hbFwiLFxuXHRcdFx0dGV4dERlY29yYXRpb246IFwidW5kZXJsaW5lXCIsXG5cdFx0XHQuLi5zdHlsZVxuXHRcdH1cblx0fTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSB0ZW1wbGF0ZSBsYXlvdXQuXG4gKiBAcGFyYW0gdGl0bGUgVGhlIHRpdGxlIGZvciB0aGUgdGVtcGxhdGUuXG4gKiBAcGFyYW0gaWNvbiBUaGUgaWNvbiBmb3IgdGhlIHRlbXBsYXRlLlxuICogQHBhcmFtIGJvZHlGcmFnbWVudHMgVGhlIGZyYWdtZW50cyB0byBnbyBpbiB0aGUgYm9keS5cbiAqIEBwYXJhbSBidXR0b25zIFRoZSBidXR0b25zIGZvciB0aGUgZm9vdGVyLlxuICogQHBhcmFtIGhlYWRlckJ1dHRvbnMgSWNvbnMgYnV0dG9ucyB3aGljaCBjYW4gYmUgZGlzcGxheSBpbiB0aGUgdGl0bGUuXG4gKiBAcmV0dXJucyBUaGUgbGF5b3V0IGZyYWdtZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlTGF5b3V0KFxuXHR0aXRsZTogc3RyaW5nLFxuXHRpY29uOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdGJvZHlGcmFnbWVudHM6IFRlbXBsYXRlRnJhZ21lbnRbXSxcblx0YnV0dG9ucz86IHsgdGl0bGU6IHN0cmluZzsgYWN0aW9uOiBzdHJpbmcgfVtdLFxuXHRoZWFkZXJCdXR0b25zPzogeyBpY29uOiBzdHJpbmc7IGFjdGlvbjogc3RyaW5nIH1bXVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKTogUHJvbWlzZTx7IGxheW91dDogUGxhaW5Db250YWluZXJUZW1wbGF0ZUZyYWdtZW50OyBkYXRhOiBhbnkgfT4ge1xuXHRjb25zdCBwYWxldHRlID0gYXdhaXQgZ2V0Q3VycmVudFBhbGV0dGUoKTtcblx0Y29uc3QgYWRkaXRpb25hbERhdGE6IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcblx0XHR0aXRsZVxuXHR9O1xuXG5cdGNvbnN0IGhlYWRlcjogVGVtcGxhdGVGcmFnbWVudFtdID0gW107XG5cdGlmIChpY29uKSB7XG5cdFx0aGVhZGVyLnB1c2goXG5cdFx0XHRhd2FpdCBjcmVhdGVJbWFnZShcImljb25cIiwgXCJcIiwge1xuXHRcdFx0XHR3aWR0aDogXCIxNnB4XCIsXG5cdFx0XHRcdGhlaWdodDogXCIxNnB4XCJcblx0XHRcdH0pXG5cdFx0KTtcblx0XHRhZGRpdGlvbmFsRGF0YS5pY29uID0gaWNvbjtcblx0fVxuXHRoZWFkZXIucHVzaChhd2FpdCBjcmVhdGVUaXRsZShcInRpdGxlXCIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB7IGZsZXg6IFwiMVwiIH0pKTtcblxuXHRpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJCdXR0b25zKSkge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVyQnV0dG9ucy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aGVhZGVyLnB1c2goXG5cdFx0XHRcdGF3YWl0IGNyZWF0ZUJ1dHRvbihcblx0XHRcdFx0XHRCdXR0b25TdHlsZS5QcmltYXJ5LFxuXHRcdFx0XHRcdFwiXCIsXG5cdFx0XHRcdFx0aGVhZGVyQnV0dG9uc1tpXS5hY3Rpb24sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZDogXCJub25lXCIsXG5cdFx0XHRcdFx0XHRib3JkZXI6IDAsXG5cdFx0XHRcdFx0XHRwYWRkaW5nOiAwXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRhd2FpdCBjcmVhdGVJbWFnZShgaGVhZGVyQnV0dG9uSWNvbiR7aX1gLCBcIlwiLCB7XG5cdFx0XHRcdFx0XHRcdHdpZHRoOiBcIjE2cHhcIixcblx0XHRcdFx0XHRcdFx0aGVpZ2h0OiBcIjE2cHhcIlxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRdXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0XHRhZGRpdGlvbmFsRGF0YVtgaGVhZGVyQnV0dG9uSWNvbiR7aX1gXSA9IGhlYWRlckJ1dHRvbnNbaV0uaWNvbjtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBidXR0b25zRnJhZ21lbnRzOiBUZW1wbGF0ZUZyYWdtZW50W10gPSBbXTtcblx0aWYgKEFycmF5LmlzQXJyYXkoYnV0dG9ucykpIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJ1dHRvbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGJ1dHRvbnNGcmFnbWVudHMucHVzaChhd2FpdCBjcmVhdGVCdXR0b24oQnV0dG9uU3R5bGUuUHJpbWFyeSwgYGJ1dHRvblRpdGxlJHtpfWAsIGJ1dHRvbnNbaV0uYWN0aW9uKSk7XG5cdFx0XHRhZGRpdGlvbmFsRGF0YVtgYnV0dG9uVGl0bGUke2l9YF0gPSBidXR0b25zW2ldLnRpdGxlO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7XG5cdFx0bGF5b3V0OiBhd2FpdCBjcmVhdGVDb250YWluZXIoXG5cdFx0XHRcImNvbHVtblwiLFxuXHRcdFx0W1xuXHRcdFx0XHRhd2FpdCBjcmVhdGVDb250YWluZXIoXCJyb3dcIiwgaGVhZGVyLCB7XG5cdFx0XHRcdFx0Ym9yZGVyQm90dG9tOiBgMXB4IHNvbGlkICR7cGFsZXR0ZS5iYWNrZ3JvdW5kNn1gLFxuXHRcdFx0XHRcdHBhZGRpbmdCb3R0b206IFwiNXB4XCIsXG5cdFx0XHRcdFx0Z2FwOiBcIjVweFwiLFxuXHRcdFx0XHRcdGFsaWduSXRlbXM6IFwiY2VudGVyXCJcblx0XHRcdFx0fSksXG5cdFx0XHRcdGF3YWl0IGNyZWF0ZUNvbnRhaW5lcihcImNvbHVtblwiLCBib2R5RnJhZ21lbnRzLCB7XG5cdFx0XHRcdFx0ZmxleDogXCIxXCIsXG5cdFx0XHRcdFx0Z2FwOiBcIjEwcHhcIlxuXHRcdFx0XHR9KSxcblx0XHRcdFx0YXdhaXQgY3JlYXRlQ29udGFpbmVyKFwicm93XCIsIGJ1dHRvbnNGcmFnbWVudHMsIHtcblx0XHRcdFx0XHRqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcblx0XHRcdFx0XHRnYXA6IFwiMTBweFwiXG5cdFx0XHRcdH0pXG5cdFx0XHRdLFxuXHRcdFx0e1xuXHRcdFx0XHRwYWRkaW5nOiBcIjEwcHhcIixcblx0XHRcdFx0Z2FwOiBcIjEwcHhcIixcblx0XHRcdFx0ZmxleDogXCIxXCJcblx0XHRcdH1cblx0XHQpLFxuXHRcdGRhdGE6IGFkZGl0aW9uYWxEYXRhXG5cdH07XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgdGVtcGxhdGUgZm9yIGFuIGFwcC5cbiAqIEBwYXJhbSBhcHAgVGhlIGFwcCB0byBjcmVhdGUgdGhlIHRlbXBsYXRlIGZvci5cbiAqIEBwYXJhbSBhcHBJY29uIFRoZSBpY29uIGZvciB0aGUgYXBwLlxuICogQHBhcmFtIGFjdGlvbiBUaGUgYWN0aW9uIHRvIGxhdW5jaCB0aGUgYXBwLlxuICogQHBhcmFtIGhlYWRlckJ1dHRvbnMgSWNvbnMgYnV0dG9ucyB3aGljaCBjYW4gYmUgZGlzcGxheSBpbiB0aGUgdGl0bGUuXG4gKiBAcmV0dXJucyBUaGUgYXBwIGZyYWdtZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQXBwKFxuXHRhcHA6IFBsYXRmb3JtQXBwLFxuXHRhcHBJY29uOiBzdHJpbmcsXG5cdGFjdGlvbjogc3RyaW5nLFxuXHRoZWFkZXJCdXR0b25zPzogeyBpY29uOiBzdHJpbmc7IGFjdGlvbjogc3RyaW5nIH1bXVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKTogUHJvbWlzZTx7IGxheW91dDogUGxhaW5Db250YWluZXJUZW1wbGF0ZUZyYWdtZW50OyBkYXRhOiBhbnkgfT4ge1xuXHRjb25zdCBwYWxldHRlID0gYXdhaXQgZ2V0Q3VycmVudFBhbGV0dGUoKTtcblx0Y29uc3QgYWRkaXRpb25hbERhdGE6IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG5cdGNvbnN0IGJvZHk6IFRlbXBsYXRlRnJhZ21lbnRbXSA9IFtdO1xuXHRpZiAoYXBwLmRlc2NyaXB0aW9uKSB7XG5cdFx0Ym9keS5wdXNoKGF3YWl0IGNyZWF0ZVRleHQoXCJkZXNjcmlwdGlvblwiLCAxMikpO1xuXHRcdGFkZGl0aW9uYWxEYXRhLmRlc2NyaXB0aW9uID0gYXBwLmRlc2NyaXB0aW9uO1xuXHR9XG5cblx0aWYgKEFycmF5LmlzQXJyYXkoYXBwLmltYWdlcykgJiYgYXBwLmltYWdlcy5sZW5ndGggPiAwICYmIGFwcC5pbWFnZXNbMF0uc3JjKSB7XG5cdFx0Ym9keS5wdXNoKFxuXHRcdFx0YXdhaXQgY3JlYXRlSW1hZ2UoXCJzY3JlZW5zaG90XCIsIFwiU2NyZWVuc2hvdFwiLCB7XG5cdFx0XHRcdGJvcmRlcjogYDFweCBzb2xpZCAke3BhbGV0dGUuYmFja2dyb3VuZDZ9YFxuXHRcdFx0fSlcblx0XHQpO1xuXHRcdGFkZGl0aW9uYWxEYXRhLnNjcmVlbnNob3QgPSBhcHAuaW1hZ2VzWzBdLnNyYztcblx0fVxuXG5cdGNvbnN0IGxheW91dERhdGEgPSBhd2FpdCBjcmVhdGVMYXlvdXQoYXBwLnRpdGxlLCBhcHBJY29uLCBib2R5LCBbeyB0aXRsZTogYWN0aW9uLCBhY3Rpb24gfV0sIGhlYWRlckJ1dHRvbnMpO1xuXG5cdHJldHVybiB7XG5cdFx0bGF5b3V0OiBsYXlvdXREYXRhLmxheW91dCxcblx0XHRkYXRhOiB7XG5cdFx0XHQuLi5sYXlvdXREYXRhLmRhdGEsXG5cdFx0XHQuLi5hZGRpdGlvbmFsRGF0YVxuXHRcdH1cblx0fTtcbn1cbiIsImltcG9ydCB0eXBlIE9wZW5GaW4gZnJvbSBcIkBvcGVuZmluL2NvcmVcIjtcbmltcG9ydCB0eXBlIHsgQ3VzdG9tUGFsZXR0ZVNldCB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB7IENvbG9yU2NoZW1lT3B0aW9uVHlwZSwgZ2V0Q3VycmVudFN5bmMgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgeyBERUZBVUxUX1BBTEVUVEVTIH0gZnJvbSBcIi4vZGVmYXVsdC1wYWxldHRlc1wiO1xuaW1wb3J0IHsgZmlyZUxpZmVjeWNsZUV2ZW50IH0gZnJvbSBcIi4vbGlmZWN5Y2xlXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiLi9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB7IGdldFNldHRpbmdzIH0gZnJvbSBcIi4vc2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIHsgVGhlbWVDaGFuZ2VkTGlmZWN5Y2xlUGF5bG9hZCB9IGZyb20gXCIuL3NoYXBlcy9saWZlY3ljbGUtc2hhcGVzXCI7XG5pbXBvcnQgeyBDb2xvclNjaGVtZU1vZGUsIHR5cGUgUGxhdGZvcm1DdXN0b21UaGVtZSwgdHlwZSBQbGF0Zm9ybUN1c3RvbVRoZW1lcyB9IGZyb20gXCIuL3NoYXBlcy90aGVtZS1zaGFwZXNcIjtcbmltcG9ydCB7IGlzRW1wdHksIGlzU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJUaGVtZXNcIik7XG5cbmxldCB2YWxpZGF0ZWRUaGVtZXM6IFBsYXRmb3JtQ3VzdG9tVGhlbWVzO1xubGV0IGNvbG9yU2NoZW1lTW9kZTogQ29sb3JTY2hlbWVNb2RlO1xuXG4vKipcbiAqIERvZXMgdGhlIHBsYXRmb3JtIHN1cHBvcnQgY29sb3Igc2NoZW1lcy5cbiAqIEByZXR1cm5zIFRydWUgaWYgY29sb3Igc2NoZW1lcyBhcmUgc3VwcG9ydGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3VwcG9ydHNDb2xvclNjaGVtZXMoKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGNvbnN0IHRoZW1lcyA9IGF3YWl0IGdldFRoZW1lcygpO1xuXHRpZiAodGhlbWVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdC8vIG91dCBvZiB0aGUgYm94IHdlIHN1cHBvcnQgYSBsaWdodCBhbmQgZGFyayBjb2xvciBzY2hlbWVcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGlmIChcInBhbGV0dGVcIiBpbiB0aGVtZXNbMF0pIHtcblx0XHQvLyB0aGUgb2xkIHBhbGV0dGUgc3RydWN0dXJlIGRvZXNuJ3Qgc3VwcG9ydCBsaWdodCBhbmQgZGFyayBjb2xvciBzY2hlbWVzXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogR2V0IHRoZSBjdXJyZW50IHBhbGV0dGUuXG4gKiBAcmV0dXJucyBUaGUgY3VycmVudCBwYWxldHRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudFBhbGV0dGUoKTogUHJvbWlzZTxDdXN0b21QYWxldHRlU2V0PiB7XG5cdGNvbnN0IHRoZW1lcyA9IGF3YWl0IGdldFRoZW1lcygpO1xuXHRjb25zdCBjb2xvclNjaGVtZSA9IGF3YWl0IGdldEN1cnJlbnRDb2xvclNjaGVtZU1vZGUoKTtcblxuXHRpZiAodGhlbWVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiBERUZBVUxUX1BBTEVUVEVTW2NvbG9yU2NoZW1lXTtcblx0fVxuXG5cdGlmIChcInBhbGV0dGVcIiBpbiB0aGVtZXNbMF0pIHtcblx0XHRyZXR1cm4gdGhlbWVzWzBdLnBhbGV0dGU7XG5cdH1cblxuXHRyZXR1cm4gdGhlbWVzWzBdLnBhbGV0dGVzW2NvbG9yU2NoZW1lXTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGN1cnJlbnQgY29sb3Igc2NoZW1lIG1vZGUuXG4gKiBAcmV0dXJucyBUaGUgY29sb3Igc2NoZW1lIG1vZGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDdXJyZW50Q29sb3JTY2hlbWVNb2RlKCk6IFByb21pc2U8Q29sb3JTY2hlbWVNb2RlPiB7XG5cdGlmICghY29sb3JTY2hlbWVNb2RlKSB7XG5cdFx0Ly8gTm8gdGhlbWUgY3VycmVudGx5IHNldCBzbyB0cnkgYW5kIHdvcmsgaXQgb3V0XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdC8vIEdldCB0aGUgc2VsZWN0ZWQgdGhlbWUgZnJvbSB0aGUgcGxhdGZvcm1cblx0XHRcdGNvbnN0IHNlbGVjdGVkVGhlbWUgPSBhd2FpdCBwbGF0Zm9ybS5UaGVtZS5nZXRTZWxlY3RlZFNjaGVtZSgpO1xuXG5cdFx0XHRpZiAoc2VsZWN0ZWRUaGVtZSA9PT0gQ29sb3JTY2hlbWVPcHRpb25UeXBlLlN5c3RlbSkge1xuXHRcdFx0XHQvLyBJZiBzZXQgdG8gc3lzdGVtIHRoZW4gZmluZCBvdXQgd2hhdCB0aGF0IHJlYWxseSBtZWFuc1xuXHRcdFx0XHRjb2xvclNjaGVtZU1vZGUgPSBnZXRTeXN0ZW1QcmVmZXJyZWRDb2xvclNjaGVtZSgpO1xuXHRcdFx0fSBlbHNlIGlmIChzZWxlY3RlZFRoZW1lID09PSBDb2xvclNjaGVtZU9wdGlvblR5cGUuRGFyaykge1xuXHRcdFx0XHRjb2xvclNjaGVtZU1vZGUgPSBDb2xvclNjaGVtZU1vZGUuRGFyaztcblx0XHRcdH0gZWxzZSBpZiAoc2VsZWN0ZWRUaGVtZSA9PT0gQ29sb3JTY2hlbWVPcHRpb25UeXBlLkxpZ2h0KSB7XG5cdFx0XHRcdGNvbG9yU2NoZW1lTW9kZSA9IENvbG9yU2NoZW1lTW9kZS5MaWdodDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVGhlIHRoZW1lIGZyb20gdGhlIHBsYXRmb3JtIGNvdWxkIGJlIG51bGwgaWYgbm9uZSBzZWxlY3RlZFxuXHRcdFx0Ly8gc28gdXNlIHRoZSB0aGVtZXMgY29uZmlnIHRvIHdvcmsgaXQgb3V0XG5cdFx0XHRpZiAoIWNvbG9yU2NoZW1lTW9kZSkge1xuXHRcdFx0XHRjb2xvclNjaGVtZU1vZGUgPSBDb2xvclNjaGVtZU1vZGUuRGFyaztcblxuXHRcdFx0XHRjb25zdCB0aGVtZXMgPSBhd2FpdCBnZXRUaGVtZXMoKTtcblx0XHRcdFx0aWYgKHRoZW1lcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0Ly8gd2Ugd2FudCB0byBjaGVjayBmb3IgZGVmYXVsdCByZWdhcmRsZXNzIG9mIHBhbGV0dGUgb3IgcGFsZXR0ZXMgYXMgYSB3YXkgb2YgaW5kaWNhdGluZ1xuXHRcdFx0XHRcdC8vIHdoYXQgc2NoZW1lIHRoZSBwYWxldHRlIGZvbGxvd3MgaWYgaXQgaXMgYSBzaW5nbGUgcGFsZXR0ZSBvciB0aGUgb25lIHRvIHBpY2sgaWYgdGhlcmVcblx0XHRcdFx0XHQvLyBpcyBhIGxpZ2h0IGFuZCBkYXJrIHBhbGV0dGUgcmF0aGVyIHRoYW4ganVzdCBkZWZhdWx0aW5nIHRvIGRhcmsgaWYgdGhlIGxhYmVsIG1hdGNoIGlzXG5cdFx0XHRcdFx0Ly8gdW5zdWNjZXNzZnVsXG5cdFx0XHRcdFx0Y29sb3JTY2hlbWVNb2RlID0gKHRoZW1lc1swXS5kZWZhdWx0IGFzIENvbG9yU2NoZW1lTW9kZSkgPz8gQ29sb3JTY2hlbWVNb2RlLkRhcms7XG5cblx0XHRcdFx0XHQvLyBJZiB0aGlzIGlzIGFuIG9sZCBmb3JtYXQgdGhlbWUganVzdCBzZWUgaWYgdGhlIGxhYmVsIG1hdGNoZXMgbGlnaHRcblx0XHRcdFx0XHRpZiAoXCJwYWxldHRlXCIgaW4gdGhlbWVzWzBdICYmIHRoZW1lc1swXS5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwibGlnaHRcIikpIHtcblx0XHRcdFx0XHRcdGNvbG9yU2NoZW1lTW9kZSA9IENvbG9yU2NoZW1lTW9kZS5MaWdodDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGNhdGNoIHtcblx0XHRcdC8vIFBsYXRmb3JtIHByb2JhYmx5IG5vdCBydW5uaW5nIHlldCwgZG9uJ3Qgc2V0IGEgZGVmYXVsdCBhcyB3ZSB3YW50XG5cdFx0XHQvLyBzdWJzZXF1ZW50IHN1Y2Nlc3NmdWwgY2FsbHMgdG8gcG9wdWxhdGUgaXQgd2hlbiB0aGUgcGxhdGZvcm0gaXMgcnVubmluZ1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjb2xvclNjaGVtZU1vZGUgPz8gQ29sb3JTY2hlbWVNb2RlLkRhcms7XG59XG5cbi8qKlxuICogU2V0IHRoZSBjb2xvciBzY2hlbWUgbW9kZSBhbmQgbm90aWZ5IGFueWJvZHkgbGlzdGVuaW5nIHRvIHRoZSBjaGFuZ2UuXG4gKiBAcGFyYW0gY29sb3JTY2hlbWUgVGhlIGNvbG9yIHNjaGVtZSB0byBzZXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRDdXJyZW50Q29sb3JTY2hlbWVNb2RlKGNvbG9yU2NoZW1lOiBDb2xvclNjaGVtZU9wdGlvblR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKGNvbG9yU2NoZW1lID09PSBDb2xvclNjaGVtZU9wdGlvblR5cGUuU3lzdGVtKSB7XG5cdFx0Y29sb3JTY2hlbWVNb2RlID0gZ2V0U3lzdGVtUHJlZmVycmVkQ29sb3JTY2hlbWUoKTtcblx0fSBlbHNlIGlmIChjb2xvclNjaGVtZSA9PT0gQ29sb3JTY2hlbWVPcHRpb25UeXBlLkxpZ2h0KSB7XG5cdFx0Y29sb3JTY2hlbWVNb2RlID0gQ29sb3JTY2hlbWVNb2RlLkxpZ2h0O1xuXHR9IGVsc2Uge1xuXHRcdGNvbG9yU2NoZW1lTW9kZSA9IENvbG9yU2NoZW1lTW9kZS5EYXJrO1xuXHR9XG5cblx0YXdhaXQgbm90aWZ5Q29sb3JTY2hlbWUoKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGlkIG9mIHRoZSBjdXJyZW50IHRoZW1lLlxuICogQHJldHVybnMgVGhlIGN1cnJlbnQgdGhlbWUgaWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDdXJyZW50VGhlbWVJZCgpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRjb25zdCB0aGVtZXMgPSBhd2FpdCBnZXRUaGVtZXMoKTtcblx0aWYgKHRoZW1lcy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4gXCJkZWZhdWx0XCI7XG5cdH1cblxuXHRyZXR1cm4gdGhlbWVzWzBdLmlkID8/IHRoZW1lc1swXS5sYWJlbDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGN1cnJlbnQgaWNvbiBmb2xkZXIuXG4gKiBAcmV0dXJucyBUaGUgY3VycmVudCBpY29uIGZvbGRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRJY29uRm9sZGVyKCk6IFByb21pc2U8c3RyaW5nPiB7XG5cdGNvbnN0IHRoZW1lcyA9IGF3YWl0IGdldFRoZW1lcygpO1xuXHRpZiAodGhlbWVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiBcImRlZmF1bHRcIjtcblx0fVxuXG5cdHJldHVybiB0aGVtZXNbMF0uaWNvbkZvbGRlciA/PyB0aGVtZXNbMF0uaWQgPz8gdGhlbWVzWzBdLmxhYmVsO1xufVxuXG4vKipcbiAqIE5vdGlmeSB0aGF0IHRoZSBjb2xvciBzY2hlbWUgaGFzIGNoYW5nZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBub3RpZnlDb2xvclNjaGVtZSgpOiBQcm9taXNlPHZvaWQ+IHtcblx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRjb25zdCBzZXR0aW5ncyA9IGF3YWl0IGdldFNldHRpbmdzKCk7XG5cblx0Y29uc3Qgc2NoZW1lVHlwZSA9IGF3YWl0IGdldEN1cnJlbnRDb2xvclNjaGVtZU1vZGUoKTtcblx0Y29uc3QgcGFsZXR0ZSA9IGF3YWl0IGdldEN1cnJlbnRQYWxldHRlKCk7XG5cblx0YXdhaXQgZmlyZUxpZmVjeWNsZUV2ZW50KHBsYXRmb3JtLCBcInRoZW1lLWNoYW5nZWRcIiwge1xuXHRcdHNjaGVtZVR5cGUsXG5cdFx0cGFsZXR0ZVxuXHR9IGFzIFRoZW1lQ2hhbmdlZExpZmVjeWNsZVBheWxvYWQpO1xuXG5cdGNvbnN0IGFwcFNlc3Npb25Db250ZXh0R3JvdXAgPSBhd2FpdCBmaW4ubWUuaW50ZXJvcC5qb2luU2Vzc2lvbkNvbnRleHRHcm91cChcInBsYXRmb3JtL2V2ZW50c1wiKTtcblxuXHRhd2FpdCBhcHBTZXNzaW9uQ29udGV4dEdyb3VwLnNldENvbnRleHQoe1xuXHRcdHR5cGU6IFwicGxhdGZvcm0udGhlbWVcIixcblx0XHRwcmVmaXg6IHNldHRpbmdzPy50aGVtZVByb3ZpZGVyPy5jc3NWYXJQcmVmaXgsXG5cdFx0c2NoZW1lTmFtZXM6IHNldHRpbmdzPy50aGVtZVByb3ZpZGVyPy5zY2hlbWFOYW1lcyxcblx0XHRzY2hlbWVUeXBlLFxuXHRcdHBhbGV0dGVcblx0fSBhcyBPcGVuRmluLkNvbnRleHQpO1xufVxuXG4vKipcbiAqIEdldCBhbGwgdGhlIHRoZW1lcy5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZGF0ZSB0aGVtZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRUaGVtZXMoKTogUHJvbWlzZTxQbGF0Zm9ybUN1c3RvbVRoZW1lcz4ge1xuXHRpZiAoIXZhbGlkYXRlZFRoZW1lcykge1xuXHRcdGNvbnN0IHNldHRpbmdzID0gYXdhaXQgZ2V0U2V0dGluZ3MoKTtcblx0XHR2YWxpZGF0ZWRUaGVtZXMgPSB2YWxpZGF0ZVRoZW1lcyhzZXR0aW5ncz8udGhlbWVQcm92aWRlcj8udGhlbWVzKTtcblx0fVxuXHRyZXR1cm4gdmFsaWRhdGVkVGhlbWVzLnNsaWNlKCk7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYW55IGN1c3RvbSB0aGVtZXMuXG4gKiBAcGFyYW0gdGhlbWVzIFRoZSB0aGVtZXMgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIHRoZW1lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGhlbWVzKHRoZW1lcz86IFBsYXRmb3JtQ3VzdG9tVGhlbWVzKTogUGxhdGZvcm1DdXN0b21UaGVtZXMge1xuXHRjb25zdCBwbGF0Zm9ybVRoZW1lczogUGxhdGZvcm1DdXN0b21UaGVtZXMgPSBbXTtcblxuXHRpZiAoQXJyYXkuaXNBcnJheSh0aGVtZXMpKSB7XG5cdFx0Y29uc3QgcHJlZmVycmVkQ29sb3JTY2hlbWUgPSBnZXRTeXN0ZW1QcmVmZXJyZWRDb2xvclNjaGVtZSgpO1xuXG5cdFx0Zm9yIChjb25zdCB0aGVtZSBvZiB0aGVtZXMpIHtcblx0XHRcdGNvbnN0IHRoZW1lVG9WYWxpZGF0ZTogUGFydGlhbDxQbGF0Zm9ybUN1c3RvbVRoZW1lPiA9IHRoZW1lO1xuXG5cdFx0XHQvLyBwZXJmb3JtIGRlZmVuc2l2ZSBjaGVjayBpbiBjYXNlIG51bGwgb3IgdW5kZWZpbmVkIGlzIHNwZWNpZmllZC5cblx0XHRcdGlmIChcInBhbGV0dGVcIiBpbiB0aGVtZVRvVmFsaWRhdGUgJiYgaXNFbXB0eSh0aGVtZVRvVmFsaWRhdGUucGFsZXR0ZSkpIHtcblx0XHRcdFx0ZGVsZXRlIHRoZW1lVG9WYWxpZGF0ZS5wYWxldHRlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoXCJwYWxldHRlc1wiIGluIHRoZW1lVG9WYWxpZGF0ZSAmJiBpc0VtcHR5KHRoZW1lVG9WYWxpZGF0ZS5wYWxldHRlcykpIHtcblx0XHRcdFx0ZGVsZXRlIHRoZW1lVG9WYWxpZGF0ZS5wYWxldHRlcztcblx0XHRcdH1cblxuXHRcdFx0aWYgKFwicGFsZXR0ZVwiIGluIHRoZW1lVG9WYWxpZGF0ZSB8fCBcInBhbGV0dGVzXCIgaW4gdGhlbWVUb1ZhbGlkYXRlKSB7XG5cdFx0XHRcdGxldCBpc1ZhbGlkID0gZmFsc2U7XG5cdFx0XHRcdGlmIChcInBhbGV0dGVcIiBpbiB0aGVtZVRvVmFsaWRhdGUpIHtcblx0XHRcdFx0XHR0aGVtZVRvVmFsaWRhdGUucGFsZXR0ZSA9IHZhbGlkYXRlUGFsZXR0ZShcblx0XHRcdFx0XHRcdHRoZW1lVG9WYWxpZGF0ZS5wYWxldHRlLFxuXHRcdFx0XHRcdFx0dGhlbWVUb1ZhbGlkYXRlLmxhYmVsID8/IFwiXCIsXG5cdFx0XHRcdFx0XHRERUZBVUxUX1BBTEVUVEVTW0NvbG9yU2NoZW1lTW9kZS5EYXJrXVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aXNWYWxpZCA9ICFpc0VtcHR5KHRoZW1lVG9WYWxpZGF0ZS5wYWxldHRlKTtcblx0XHRcdFx0fSBlbHNlIGlmIChcInBhbGV0dGVzXCIgaW4gdGhlbWVUb1ZhbGlkYXRlKSB7XG5cdFx0XHRcdFx0Y29uc3QgcGFsZXR0ZXMgPSB7XG5cdFx0XHRcdFx0XHRkYXJrOiB2YWxpZGF0ZVBhbGV0dGUoXG5cdFx0XHRcdFx0XHRcdHRoZW1lVG9WYWxpZGF0ZS5wYWxldHRlcz8uW0NvbG9yU2NoZW1lTW9kZS5EYXJrXSxcblx0XHRcdFx0XHRcdFx0dGhlbWVUb1ZhbGlkYXRlLmxhYmVsID8/IFwiXCIsXG5cdFx0XHRcdFx0XHRcdERFRkFVTFRfUEFMRVRURVNbQ29sb3JTY2hlbWVNb2RlLkRhcmtdXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0bGlnaHQ6IHZhbGlkYXRlUGFsZXR0ZShcblx0XHRcdFx0XHRcdFx0dGhlbWVUb1ZhbGlkYXRlLnBhbGV0dGVzPy5bQ29sb3JTY2hlbWVNb2RlLkxpZ2h0XSxcblx0XHRcdFx0XHRcdFx0dGhlbWVUb1ZhbGlkYXRlLmxhYmVsID8/IFwiXCIsXG5cdFx0XHRcdFx0XHRcdERFRkFVTFRfUEFMRVRURVNbQ29sb3JTY2hlbWVNb2RlLkxpZ2h0XVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0aXNWYWxpZCA9ICFpc0VtcHR5KHBhbGV0dGVzW0NvbG9yU2NoZW1lTW9kZS5EYXJrXSkgJiYgIWlzRW1wdHkocGFsZXR0ZXNbQ29sb3JTY2hlbWVNb2RlLkxpZ2h0XSk7XG5cblx0XHRcdFx0XHR0aGVtZVRvVmFsaWRhdGUucGFsZXR0ZXMgPSBwYWxldHRlcyBhcyB7IGRhcms6IEN1c3RvbVBhbGV0dGVTZXQ7IGxpZ2h0OiBDdXN0b21QYWxldHRlU2V0IH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoaXNWYWxpZCkge1xuXHRcdFx0XHRcdGlmIChoYXNTY2hlbWUodGhlbWVUb1ZhbGlkYXRlIGFzIFBsYXRmb3JtQ3VzdG9tVGhlbWUsIHByZWZlcnJlZENvbG9yU2NoZW1lKSkge1xuXHRcdFx0XHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFx0XHRcdGBGb3VuZCBhIHRoZW1lIHRoYXQgbWF0Y2hlcyBzeXN0ZW0gY29sb3Igc2NoZW1lIHByZWZlcmVuY2VzIGFuZCBtYWtpbmcgaXQgdGhlIGRlZmF1bHQgdGhlbWU6ICR7cHJlZmVycmVkQ29sb3JTY2hlbWV9YFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHBsYXRmb3JtVGhlbWVzLnVuc2hpZnQodGhlbWVUb1ZhbGlkYXRlIGFzIFBsYXRmb3JtQ3VzdG9tVGhlbWUpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRwbGF0Zm9ybVRoZW1lcy5wdXNoKHRoZW1lVG9WYWxpZGF0ZSBhcyBQbGF0Zm9ybUN1c3RvbVRoZW1lKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0XHRgRm91bmQgYSB0aGVtZSB0aGF0IGRvZXMgbm90IGNvbnRhaW4gYW55IGNvbG9yczogJHt0aGVtZVRvVmFsaWRhdGUuaWQgPz8gdGhlbWVUb1ZhbGlkYXRlLmxhYmVsfWBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHBsYXRmb3JtVGhlbWVzO1xufVxuXG4vKipcbiAqIFRvZ2dsZSB0aGUgY29sb3Igc2NoZW1lLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdG9nZ2xlU2NoZW1lKCk6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdGlmIChjb2xvclNjaGVtZU1vZGUgPT09IENvbG9yU2NoZW1lTW9kZS5MaWdodCkge1xuXHRcdGF3YWl0IHBsYXRmb3JtLlRoZW1lLnNldFNlbGVjdGVkU2NoZW1lKENvbG9yU2NoZW1lT3B0aW9uVHlwZS5EYXJrKTtcblx0fSBlbHNlIHtcblx0XHRhd2FpdCBwbGF0Zm9ybS5UaGVtZS5zZXRTZWxlY3RlZFNjaGVtZShDb2xvclNjaGVtZU9wdGlvblR5cGUuTGlnaHQpO1xuXHR9XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYSBwYWxldHRlLlxuICogQHBhcmFtIHRoZW1lUGFsZXR0ZSBUaGUgcGFsZXR0ZSB0byB2YWxpZGF0ZS5cbiAqIEBwYXJhbSB0aGVtZUxhYmVsIFRoZSBsYWJlbCBmb3IgdGhlIHRoZW1lLlxuICogQHBhcmFtIGRlZmF1bHRQYWxldHRlIFRoZSBkZWZhdWx0IHBhbGV0dGUgdG8gYmFja2ZpbGwgbWlzc2luZyBjb2xvcnMuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIHBhbGV0dGUuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlUGFsZXR0ZShcblx0dGhlbWVQYWxldHRlOiBDdXN0b21QYWxldHRlU2V0IHwgdW5kZWZpbmVkLFxuXHR0aGVtZUxhYmVsOiBzdHJpbmcsXG5cdGRlZmF1bHRQYWxldHRlOiBDdXN0b21QYWxldHRlU2V0XG4pOiBDdXN0b21QYWxldHRlU2V0IHwgdW5kZWZpbmVkIHtcblx0aWYgKCF0aGVtZVBhbGV0dGUpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Y29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoZW1lUGFsZXR0ZSkgYXMgKGtleW9mIEN1c3RvbVBhbGV0dGVTZXQpW107XG5cdGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvLyBGaWxsIGFsbCB0aGUgcGFsZXR0ZSBwcm9wZXJ0aWVzIGZyb20gdGhlIGRlZmF1bHQgcGFsZXR0ZSBhcyBhIGRlZmF1bHRcblx0Y29uc3QgY29tYmluZWRQYWxldHRlID0ge1xuXHRcdC4uLmRlZmF1bHRQYWxldHRlXG5cdH07XG5cblx0Ly8gVGhlbiBvdmVycmlkZSB3aXRoIGFueSBmcm9tIHRoZSB0aGVtZSBwYWxldHRlXG5cdGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcblx0XHRjb25zdCB2YWwgPSB0aGVtZVBhbGV0dGVba2V5XTtcblx0XHRpZiAoaXNTdHJpbmdWYWx1ZSh2YWwpKSB7XG5cdFx0XHRjb21iaW5lZFBhbGV0dGVba2V5XSA9IHZhbDtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBicmFuZFByaW1hcnlLZXkgPSBcImJyYW5kUHJpbWFyeVwiO1xuXHRjb25zdCBicmFuZFNlY29uZGFyeUtleSA9IFwiYnJhbmRTZWNvbmRhcnlcIjtcblx0Y29uc3QgYmFja2dyb3VuZFByaW1hcnlLZXkgPSBcImJhY2tncm91bmRQcmltYXJ5XCI7XG5cblx0aWYgKCF0aGVtZVBhbGV0dGVbYnJhbmRQcmltYXJ5S2V5XSkge1xuXHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0YFRoZW1lOiAke3RoZW1lTGFiZWx9IDogJHticmFuZFByaW1hcnlLZXl9IG5vdCBzcGVjaWZpZWQgKGl0IGlzIHJlcXVpcmVkIGlmIHNwZWNpZnlpbmcgb3RoZXIgdGhlbWUgcGFsZXR0ZSBzZXR0aW5ncykuIFByb3ZpZGluZyBkZWZhdWx0IG9mOiAke2RlZmF1bHRQYWxldHRlW2JyYW5kUHJpbWFyeUtleV19YFxuXHRcdCk7XG5cdH1cblxuXHRpZiAoIXRoZW1lUGFsZXR0ZVticmFuZFNlY29uZGFyeUtleV0pIHtcblx0XHRsb2dnZXIud2Fybihcblx0XHRcdGBUaGVtZTogJHt0aGVtZUxhYmVsfSA6ICR7YnJhbmRTZWNvbmRhcnlLZXl9IG5vdCBzcGVjaWZpZWQgKGl0IGlzIHJlcXVpcmVkIGlmIHNwZWNpZnlpbmcgb3RoZXIgdGhlbWUgcGFsZXR0ZSBzZXR0aW5ncykuIFByb3ZpZGluZyBkZWZhdWx0IG9mOiAke2RlZmF1bHRQYWxldHRlW2JyYW5kU2Vjb25kYXJ5S2V5XX1gXG5cdFx0KTtcblx0fVxuXG5cdGlmICghdGhlbWVQYWxldHRlW2JhY2tncm91bmRQcmltYXJ5S2V5XSkge1xuXHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0YFRoZW1lOiAke3RoZW1lTGFiZWx9IDogJHtiYWNrZ3JvdW5kUHJpbWFyeUtleX0gbm90IHNwZWNpZmllZCAoaXQgaXMgcmVxdWlyZWQgaWYgc3BlY2lmeWluZyBvdGhlciB0aGVtZSBwYWxldHRlIHNldHRpbmdzKS4gUHJvdmlkaW5nIGRlZmF1bHQgb2Y6ICR7ZGVmYXVsdFBhbGV0dGVbYmFja2dyb3VuZFByaW1hcnlLZXldfWBcblx0XHQpO1xuXHR9XG5cblx0cmV0dXJuIGNvbWJpbmVkUGFsZXR0ZTtcbn1cblxuLyoqXG4gKiBEbyB3ZSBoYXZlIHRoZSByZXF1ZXN0ZWQgY29sb3Igc2NoZW1lLlxuICogQHBhcmFtIHRoZW1lIFRoZSB0aGVtZSB0byB0ZXN0LlxuICogQHBhcmFtIHNjaGVtZSBUaGUgc2NoZW1lIHRvIGxvb2sgZm9yLlxuICogQHJldHVybnMgVHJ1ZSBpZiB3ZSBoYXZlIHRoZSBjb2xvciBzY2hlbWUgaW4gb3VyIHRoZW1lLlxuICovXG5mdW5jdGlvbiBoYXNTY2hlbWUodGhlbWU6IFBsYXRmb3JtQ3VzdG9tVGhlbWUsIHNjaGVtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdGlmIChcInBhbGV0dGVcIiBpbiB0aGVtZSkge1xuXHRcdHJldHVybiB0aGVtZS5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNjaGVtZSk7XG5cdH1cblxuXHRpZiAoXCJwYWxldHRlc1wiIGluIHRoZW1lKSB7XG5cdFx0cmV0dXJuICFpc0VtcHR5KHRoZW1lLnBhbGV0dGVzW3NjaGVtZSBhcyBDb2xvclNjaGVtZU1vZGVdKTtcblx0fVxuXG5cdHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHN5c3RlbSBwcmVmZXJyZWQgY29sb3Igc2NoZW1lLlxuICogQHJldHVybnMgVGhlIHN5c3RlbSBjb2xvciBzY2hlbWUuXG4gKi9cbmZ1bmN0aW9uIGdldFN5c3RlbVByZWZlcnJlZENvbG9yU2NoZW1lKCk6IENvbG9yU2NoZW1lTW9kZSB7XG5cdGlmICh3aW5kb3cubWF0Y2hNZWRpYT8uKFwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKVwiKS5tYXRjaGVzKSB7XG5cdFx0cmV0dXJuIENvbG9yU2NoZW1lTW9kZS5EYXJrO1xuXHR9XG5cdHJldHVybiBDb2xvclNjaGVtZU1vZGUuTGlnaHQ7XG59XG4iLCJpbXBvcnQgdHlwZSB7IEN1c3RvbUFjdGlvblNwZWNpZmllciB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2VcIjtcbmltcG9ydCB7IEN1c3RvbUFjdGlvbkNhbGxlclR5cGUgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgeyBjYWxsQWN0aW9uIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBidWlsZE1lbnUgfSBmcm9tIFwiLi9tZW51XCI7XG5pbXBvcnQgdHlwZSB7IFRyYXlQcm92aWRlck9wdGlvbnMgfSBmcm9tIFwiLi9zaGFwZXNcIjtcbmltcG9ydCB7IGlzRW1wdHksIGlzU3RyaW5nVmFsdWUsIHJhbmRvbVVVSUQgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJUcmF5XCIpO1xuXG4vKipcbiAqIEluaXRpYWxpemUgdGhlIHRyYXkgcHJvdmlkZXIuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgdHJheSBwcm92aWRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQob3B0aW9uczogVHJheVByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAob3B0aW9ucz8uZW5hYmxlZCkge1xuXHRcdGxvZ2dlci5pbmZvKFwiSW5pdGlhbGl6aW5nIFRyYXlcIik7XG5cblx0XHRjb25zdCBhcHAgPSBhd2FpdCBmaW4uQXBwbGljYXRpb24uZ2V0Q3VycmVudCgpO1xuXG5cdFx0bGV0IGljb24gPSBvcHRpb25zPy5pY29uO1xuXG5cdFx0aWYgKCFpc1N0cmluZ1ZhbHVlKGljb24pKSB7XG5cdFx0XHRjb25zdCBtYW5pZmVzdCA9IGF3YWl0IGFwcC5nZXRNYW5pZmVzdCgpO1xuXHRcdFx0aWNvbiA9IG1hbmlmZXN0LnBsYXRmb3JtPy5pY29uID8/IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2NvbW1vbi9pbWFnZXMvaWNvbi1ibHVlLnBuZ1wiO1xuXHRcdH1cblxuXHRcdGF3YWl0IGFwcC5zZXRUcmF5SWNvbihpY29uKTtcblxuXHRcdGNvbnN0IG1lbnVFbnRyaWVzID0gb3B0aW9ucz8ubWVudUVudHJpZXM7XG5cdFx0Y29uc3QgZGVmYXVsdEFjdGlvbiA9IG9wdGlvbnM/LmRlZmF1bHRBY3Rpb247XG5cdFx0aWYgKGlzRW1wdHkoZGVmYXVsdEFjdGlvbikgJiYgaXNFbXB0eShtZW51RW50cmllcykpIHtcblx0XHRcdGxvZ2dlci53YXJuKFwiWW91IGhhdmUgbm8gZGVmYXVsdCBhY3Rpb24gb3IgbWVudSBlbnRyaWVzIGRlZmluZWQgZm9yIHRoZSB0cmF5XCIpO1xuXHRcdH0gZWxzZSBpZiAoIWlzRW1wdHkoZGVmYXVsdEFjdGlvbikgJiYgIWlzRW1wdHkobWVudUVudHJpZXMpKSB7XG5cdFx0XHRsb2dnZXIud2FybihcIllvdSBjYW5ub3QgZGVmaW5lIGEgZGVmYXVsdCBhY3Rpb24gYW5kIG1lbnUgZW50cmllcyBmb3IgdGhlIHRyYXlcIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGF3YWl0IGFwcC5hZGRMaXN0ZW5lcihcInRyYXktaWNvbi1jbGlja2VkXCIsIGFzeW5jICh0cmF5SW5mbykgPT4ge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcIlRyYXkgQ2xpY2tlZFwiLCB0cmF5SW5mbyk7XG5cblx0XHRcdFx0Y29uc3QgYWN0aXZhdGVCdXR0b24gPSBvcHRpb25zPy5hY3RpdmF0ZUJ1dHRvbiA/PyBcImFueVwiO1xuXHRcdFx0XHRjb25zdCBjbGlja2VkQnV0dG9uID0gdHJheUluZm8uYnV0dG9uID8/IDA7XG5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGFjdGl2YXRlQnV0dG9uID09PSBcImFueVwiIHx8XG5cdFx0XHRcdFx0KGNsaWNrZWRCdXR0b24gPT09IDAgJiYgYWN0aXZhdGVCdXR0b24gPT09IFwibGVmdFwiKSB8fFxuXHRcdFx0XHRcdChjbGlja2VkQnV0dG9uID09PSAyICYmIGFjdGl2YXRlQnV0dG9uID09PSBcInJpZ2h0XCIpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGxldCBhY3Rpb25Ub1RyaWdnZXI6IEN1c3RvbUFjdGlvblNwZWNpZmllciB8IHVuZGVmaW5lZDtcblxuXHRcdFx0XHRcdGlmICghaXNFbXB0eShkZWZhdWx0QWN0aW9uKSkge1xuXHRcdFx0XHRcdFx0YWN0aW9uVG9UcmlnZ2VyID0gZGVmYXVsdEFjdGlvbjtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKCFpc0VtcHR5KG1lbnVFbnRyaWVzKSkge1xuXHRcdFx0XHRcdFx0bGV0IHdpbjtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdC8vIENyZWF0ZSBhIGR1bW15IGludmlzaWJsZSBhbHdheXMgb24gdG9wIHdpbmRvdyB0aGF0IHdlIGNhbiB1c2Vcblx0XHRcdFx0XHRcdFx0Ly8gdG8gc2hvdyB0aGUgcG9wdXAgbWVudSwgdGhpcyB3YXkgdGhlIG1lbnUgd2lsbCBhbHdheXMgYXBwZWFyXG5cdFx0XHRcdFx0XHRcdC8vIG9uIHRvcCBvZiBvdGhlciB3aW5kb3dzXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHdpbk9wdGlvbiA9IHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiByYW5kb21VVUlEKCksXG5cdFx0XHRcdFx0XHRcdFx0aW5jbHVkZUluU25hcHNob3Q6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdHNob3dUYXNrYmFySWNvbjogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0c2F2ZVdpbmRvd1N0YXRlOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0V2lkdGg6IDAsXG5cdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdEhlaWdodDogMCxcblx0XHRcdFx0XHRcdFx0XHR1cmw6IFwiYWJvdXQ6YmxhbmtcIixcblx0XHRcdFx0XHRcdFx0XHRmcmFtZTogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0YWx3YXlzT25Ub3A6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0c21hbGxXaW5kb3c6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0b3BhY2l0eTogMFxuXHRcdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRcdHdpbiA9IGF3YWl0IGZpbi5XaW5kb3cuY3JlYXRlKHdpbk9wdGlvbik7XG5cdFx0XHRcdFx0XHRcdC8vIFNldHRpbmcgdGhlIGZvY3VzIHRvIHRoZSBpbnZpc2libGUgd2luZG93IG1ha2VzIHN1cmUgdGhhdFxuXHRcdFx0XHRcdFx0XHQvLyB0aGUgY29udGV4dCBtZW51IGlzIGRpc21pc3NlZCB3aGVuIGNsaWNrZWQgYXdheSBmcm9tXG5cdFx0XHRcdFx0XHRcdGF3YWl0IHdpbi5mb2N1cygpO1xuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRlbXBsYXRlID0gYXdhaXQgYnVpbGRNZW51KHVuZGVmaW5lZCwgbWVudUVudHJpZXMpO1xuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHIgPSBhd2FpdCB3aW4uc2hvd1BvcHVwTWVudSh7XG5cdFx0XHRcdFx0XHRcdFx0dGVtcGxhdGUsXG5cdFx0XHRcdFx0XHRcdFx0eDogdHJheUluZm8ueCAtIDIwLFxuXHRcdFx0XHRcdFx0XHRcdHk6IHRyYXlJbmZvLnkgLSAyMFxuXHRcdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoci5yZXN1bHQgPT09IFwiY2xpY2tlZFwiKSB7XG5cdFx0XHRcdFx0XHRcdFx0bG9nZ2VyLmluZm8oXCJUcmF5IEl0ZW0gU2VsZWN0ZWRcIiwgci5kYXRhKTtcblx0XHRcdFx0XHRcdFx0XHRhY3Rpb25Ub1RyaWdnZXIgPSByLmRhdGEuYWN0aW9uO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGZpbmFsbHkge1xuXHRcdFx0XHRcdFx0XHRpZiAod2luKSB7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgd2luLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoIWlzRW1wdHkoYWN0aW9uVG9UcmlnZ2VyKSAmJiBpc1N0cmluZ1ZhbHVlKGFjdGlvblRvVHJpZ2dlci5pZCkpIHtcblx0XHRcdFx0XHRcdGF3YWl0IGNhbGxBY3Rpb24oYWN0aW9uVG9UcmlnZ2VyLmlkLCB7XG5cdFx0XHRcdFx0XHRcdGNhbGxlclR5cGU6IEN1c3RvbUFjdGlvbkNhbGxlclR5cGUuQ3VzdG9tQnV0dG9uLFxuXHRcdFx0XHRcdFx0XHR4OiB0cmF5SW5mby54LFxuXHRcdFx0XHRcdFx0XHR5OiB0cmF5SW5mby55LFxuXHRcdFx0XHRcdFx0XHR3aW5kb3dJZGVudGl0eTogZmluLm1lLmlkZW50aXR5LFxuXHRcdFx0XHRcdFx0XHRjdXN0b21EYXRhOiBhY3Rpb25Ub1RyaWdnZXIuY3VzdG9tRGF0YVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cbiIsIi8qKlxuICogVGVzdCBpZiBhIHZhbHVlIGlzIGEgdW5kZWZpbmVkIG9yIG51bGwuXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHRlc3QuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2YWx1ZSBpcyBudWxsIG9yIHVuZGVmaW5lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkIHtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG5cdHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsO1xufVxuXG4vKipcbiAqIFRlc3QgaWYgYSB2YWx1ZSBpcyBhbiBvYmplY3QuXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHRlc3QuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2YWx1ZSBpcyBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG9iamVjdCB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuXHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCI7XG59XG5cbi8qKlxuICogVGVzdCBpZiBhIHZhbHVlIGlzIGEgc3RyaW5nLlxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB0ZXN0LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYSBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZyB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuXHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XG59XG5cbi8qKlxuICogVGVzdCBpZiBhIHZhbHVlIGlzIGEgc3RyaW5nIHRoYXQgaXMgbm90IGVtcHR5LlxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB0ZXN0LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYSBzdHJpbmcgdGhhdCBpcyBub3QgZW1wdHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZ1ZhbHVlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgc3RyaW5nIHtcblx0cmV0dXJuIGlzU3RyaW5nKHZhbHVlKSAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMDtcbn1cblxuLyoqXG4gKiBUZXN0IGlmIGEgdmFsdWUgaXMgYSBudW1iZXIuXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHRlc3QuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2YWx1ZSBpcyBhIG51bWJlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgbnVtYmVyIHtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG5cdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIjtcbn1cblxuLyoqXG4gKiBUZXN0IGlmIGEgdmFsdWUgaXMgYSBib29sZWFuLlxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB0ZXN0LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYSBib29sZWFuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgYm9vbGVhbiB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuXHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiO1xufVxuXG4vKipcbiAqIFRlc3QgaWYgYSB2YWx1ZSBpcyBhbiBpbnRlZ2VyLlxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB0ZXN0LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYW4gaW50ZWdlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW50ZWdlcih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG51bWJlciB7XG5cdHJldHVybiBpc051bWJlcih2YWx1ZSkgJiYgTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSk7XG59XG5cbi8qKlxuICogRGVlcCBjbG9uZSBhbiBvYmplY3QuXG4gKiBAcGFyYW0gb2JqIFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyBUaGUgY2xvbmUgb2YgdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdENsb25lPFQ+KG9iajogVCk6IFQge1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcblx0cmV0dXJuIG9iaiA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKTtcbn1cblxuLyoqXG4gKiBQb2x5ZmlsbHMgcmFuZG9tVVVJRCBpZiBydW5uaW5nIGluIGEgbm9uLXNlY3VyZSBjb250ZXh0LlxuICogQHJldHVybnMgVGhlIHJhbmRvbSBVVUlELlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tVVVJRCgpOiBzdHJpbmcge1xuXHRpZiAoXCJyYW5kb21VVUlEXCIgaW4gd2luZG93LmNyeXB0bykge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuXHRcdHJldHVybiB3aW5kb3cuY3J5cHRvLnJhbmRvbVVVSUQoKTtcblx0fVxuXHQvLyBQb2x5ZmlsbCB0aGUgd2luZG93LmNyeXB0by5yYW5kb21VVUlEIGlmIHdlIGFyZSBydW5uaW5nIGluIGEgbm9uIHNlY3VyZSBjb250ZXh0IHRoYXQgZG9lc24ndCBoYXZlIGl0XG5cdC8vIHdlIGFyZSBzdGlsbCB1c2luZyB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyB3aGljaCBpcyBhbHdheXMgYXZhaWxhYmxlXG5cdC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMTE3NTIzLzI4MDAyMThcblx0LyoqXG5cdCAqIEdldCByYW5kb20gaGV4IHZhbHVlLlxuXHQgKiBAcGFyYW0gYyBUaGUgbnVtYmVyIHRvIGJhc2UgdGhlIHJhbmRvbSB2YWx1ZSBvbi5cblx0ICogQHJldHVybnMgVGhlIHJhbmRvbSB2YWx1ZS5cblx0ICovXG5cdGZ1bmN0aW9uIGdldFJhbmRvbUhleChjOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG5cdFx0Y29uc3Qgcm5kID0gd2luZG93LmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMSkpWzBdICYgKDE1ID4+IChOdW1iZXIoYykgLyA0KSk7XG5cdFx0cmV0dXJuIChcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG5cdFx0XHQoTnVtYmVyKGMpIF4gcm5kKS50b1N0cmluZygxNilcblx0XHQpO1xuXHR9XG5cdHJldHVybiBcIjEwMDAwMDAwLTEwMDAtNDAwMC04MDAwLTEwMDAwMDAwMDAwMFwiLnJlcGxhY2UoL1swMThdL2csIGdldFJhbmRvbUhleCk7XG59XG5cbi8qKlxuICogRm9ybWF0IGFuIGVycm9yIHRvIGEgcmVhZGFibGUgc3RyaW5nLlxuICogQHBhcmFtIGVyciBUaGUgZXJyb3IgdG8gZm9ybWF0LlxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBlcnJvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEVycm9yKGVycjogdW5rbm93bik6IHN0cmluZyB7XG5cdGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuXHRcdHJldHVybiBlcnIubWVzc2FnZTtcblx0fSBlbHNlIGlmICh0eXBlb2YgZXJyID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIGVycjtcblx0fVxuXHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZXJyKTtcbn1cbiIsImltcG9ydCB0eXBlIE9wZW5GaW4gZnJvbSBcIkBvcGVuZmluL2NvcmVcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgeyBFbmRwb2ludFByb3ZpZGVyIH0gZnJvbSBcIi4vc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdE1heGltdW1WZXJzaW9uLFxuXHRNaW5pbXVtVmVyc2lvbixcblx0VmVyc2lvbkluZm8sXG5cdFZlcnNpb25Qcm92aWRlck9wdGlvbnMsXG5cdFZlcnNpb25SZXF1ZXN0LFxuXHRWZXJzaW9uUmVzcG9uc2UsXG5cdFZlcnNpb25TdGF0dXMsXG5cdFZlcnNpb25TdGF0dXNEYXRhLFxuXHRWZXJzaW9uVHlwZVxufSBmcm9tIFwiLi9zaGFwZXMvdmVyc2lvbi1zaGFwZXNcIjtcbmltcG9ydCB7IGlzRW1wdHksIGlzSW50ZWdlciB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IHZlcnNpb25JbmZvOiBWZXJzaW9uSW5mbyA9IHt9O1xubGV0IHZlcnNpb25PcHRpb25zOiBWZXJzaW9uUHJvdmlkZXJPcHRpb25zO1xubGV0IG1pblZlcnNpb246IE1pbmltdW1WZXJzaW9uIHwgdW5kZWZpbmVkO1xubGV0IG1heFZlcnNpb246IE1heGltdW1WZXJzaW9uIHwgdW5kZWZpbmVkO1xubGV0IHZlcnNpb25XaW5kb3dDb25maWd1cmF0aW9uOiBPcGVuRmluLldpbmRvd09wdGlvbnMgfCB1bmRlZmluZWQ7XG5sZXQgZW5kcG9pbnRQcm92aWRlcjogRW5kcG9pbnRQcm92aWRlciB8IHVuZGVmaW5lZDtcbmxldCBlbmRwb2ludElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5sZXQgbWluRmFpbDogVmVyc2lvblR5cGVbXSA9IFtdO1xubGV0IG1heEZhaWw6IFZlcnNpb25UeXBlW10gPSBbXTtcbmxldCBzZXR0aW5nc0Jhc2VkV2luZG93Q29uZmlndXJhdGlvbiA9IGZhbHNlO1xubGV0IGlzTW9uaXRvcmluZ0VuYWJsZWQgPSBmYWxzZTtcbmxldCBtb25pdG9yaW5nSWQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbmxldCB2ZXJzaW9uQ2hlY2tJbnRlcnZhbEluU2Vjb25kczogbnVtYmVyO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJWZXJzaW9uUHJvdmlkZXJcIik7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgVmVyc2lvbiBQcm92aWRlci5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIHRoYXQgZ3VpZGUgaG93IHRoaXMgdmVyc2lvbiBwcm92aWRlciBiZWhhdmVzXG4gKiBAcGFyYW0gaW5pdEVuZHBvaW50UHJvdmlkZXIgVGhlIHByb3ZpZGVyIHRoYXQgYWxsb3dzIHRoZSBzZXR0aW5nIGFuZCByZXRyaWV2YWwgb2YgZGF0YSB3aXRob3V0IG5lZWRpbmcgdG8ga25vdyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQoXG5cdG9wdGlvbnM/OiBWZXJzaW9uUHJvdmlkZXJPcHRpb25zLFxuXHRpbml0RW5kcG9pbnRQcm92aWRlcj86IEVuZHBvaW50UHJvdmlkZXJcbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoaXNFbXB0eShvcHRpb25zKSkge1xuXHRcdGxvZ2dlci5pbmZvKFwiVmVyc2lvbiBwcm92aWRlciBvcHRpb25zIG5vdCBwYXNzZWRcIik7XG5cdH0gZWxzZSB7XG5cdFx0dmVyc2lvbk9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdHZlcnNpb25JbmZvLmFwcCA9IG9wdGlvbnMuYXBwVmVyc2lvbjtcblx0XHRtaW5WZXJzaW9uID0gb3B0aW9ucy5taW5WZXJzaW9uO1xuXHRcdG1heFZlcnNpb24gPSBvcHRpb25zLm1heFZlcnNpb247XG5cdFx0dmVyc2lvbldpbmRvd0NvbmZpZ3VyYXRpb24gPSBvcHRpb25zLnZlcnNpb25XaW5kb3cgYXMgT3BlbkZpbi5XaW5kb3dPcHRpb25zO1xuXHRcdGVuZHBvaW50SWQgPSBvcHRpb25zLmVuZHBvaW50SWQ7XG5cdFx0c2V0dGluZ3NCYXNlZFdpbmRvd0NvbmZpZ3VyYXRpb24gPSAhaXNFbXB0eSh2ZXJzaW9uV2luZG93Q29uZmlndXJhdGlvbik7XG5cblx0XHRpZiAoaXNJbnRlZ2VyKG9wdGlvbnMudmVyc2lvbkNoZWNrSW50ZXJ2YWxJblNlY29uZHMpKSB7XG5cdFx0XHR2ZXJzaW9uQ2hlY2tJbnRlcnZhbEluU2Vjb25kcyA9IG9wdGlvbnMudmVyc2lvbkNoZWNrSW50ZXJ2YWxJblNlY29uZHM7XG5cdFx0fVxuXG5cdFx0aWYgKGluaXRFbmRwb2ludFByb3ZpZGVyKSB7XG5cdFx0XHRpc01vbml0b3JpbmdFbmFibGVkID1cblx0XHRcdFx0IWlzRW1wdHkodmVyc2lvbkNoZWNrSW50ZXJ2YWxJblNlY29uZHMpICYmXG5cdFx0XHRcdCFpc0VtcHR5KG9wdGlvbnMuZW5kcG9pbnRJZCkgJiZcblx0XHRcdFx0aW5pdEVuZHBvaW50UHJvdmlkZXIuaGFzRW5kcG9pbnQob3B0aW9ucy5lbmRwb2ludElkKTtcblx0XHR9XG5cdFx0bG9nZ2VyLmluZm8oXCJJbml0aWFsaXplZCB3aXRoIHRoZSBmb2xsb3dpbmcgc2V0dGluZ3NcIiwgb3B0aW9ucyk7XG5cdH1cblx0ZW5kcG9pbnRQcm92aWRlciA9IGluaXRFbmRwb2ludFByb3ZpZGVyO1xufVxuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIHByb3ZpZGVyIGRvZXMgbm90IGxvb2sgdXAgYWxsIHRoZSB2ZXJzaW9uaW5nIGluZm9ybWF0aW9uIGFzIHRoaXMgY2FuXG4gKiBjb21lIGZyb20gbXVsdGlwbGUgc291cmNlcy4gSXQgZG9lcyBrbm93IHdoYXQgc291cmNlcyBpdCBzdXBwb3J0cyBhbmQgYWxsb3dzIHRoZSBwbGF0Zm9ybVxuICogdG8gZmVlZCB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZSBwcm92aWRlci5cbiAqIEBwYXJhbSB2ZXJzaW9uVHlwZSBUaGUgdHlwZSBvZiB2ZXJzaW9uIG51bWJlciB5b3Ugd2FudCB0byBzZXQgKGUuZy4gd29ya3NwYWNlKVxuICogQHBhcmFtIHZlcnNpb25OdW1iZXIgVGhlIG51bWJlciB5b3Ugd2lzaCB0byBhc3NpZ24gYWdhaW5zdCB0aGlzIHZlcnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFZlcnNpb24odmVyc2lvblR5cGU6IFZlcnNpb25UeXBlLCB2ZXJzaW9uTnVtYmVyOiBzdHJpbmcpOiB2b2lkIHtcblx0bGV0IHZlcnNpb25MYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRsZXQgc2V0VmVyc2lvbk51bWJlciA9IGZhbHNlO1xuXG5cdHN3aXRjaCAodmVyc2lvblR5cGUpIHtcblx0XHRjYXNlIFwiYXBwXCI6IHtcblx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcIllvdSBjYW5ub3Qgc2V0IHRoZSB2ZXJzaW9uIGZvciBhcHAgYXMgdGhpcyBjYW4gb25seSBiZSBzcGVjaWZpZWQgdmlhIHRoZSBzZXR0aW5ncyBwcm92aWRlZCBvbiBhcHBsaWNhdGlvbiBsYXVuY2ggaW5zaWRlIG9mIHRoZSB2ZXJzaW9uIHByb3ZpZGVyIHNldHRpbmdzLlwiXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNhc2UgXCJub3RpZmljYXRpb25DZW50ZXJcIjoge1xuXHRcdFx0dmVyc2lvbkxhYmVsID0gXCJOb3RpZmljYXRpb24gQ2VudGVyIFZlcnNpb25cIjtcblx0XHRcdHNldFZlcnNpb25OdW1iZXIgPSBpc0VtcHR5KHZlcnNpb25JbmZvLm5vdGlmaWNhdGlvbkNlbnRlcik7XG5cdFx0XHRpZiAoc2V0VmVyc2lvbk51bWJlcikge1xuXHRcdFx0XHR2ZXJzaW9uSW5mby5ub3RpZmljYXRpb25DZW50ZXIgPSB2ZXJzaW9uTnVtYmVyO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0YCR7dmVyc2lvbkxhYmVsfSBhbHJlYWR5IHNldCB0bzogJHt2ZXJzaW9uSW5mby5ub3RpZmljYXRpb25DZW50ZXJ9IHNvIHdlIGFyZSB1bmFibGUgdG8gc2V0IGl0IHRvICR7dmVyc2lvbk51bWJlcn1gXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBcInBsYXRmb3JtQ2xpZW50XCI6IHtcblx0XHRcdHZlcnNpb25MYWJlbCA9IFwiUGxhdGZvcm0gQ2xpZW50IFZlcnNpb25cIjtcblx0XHRcdHNldFZlcnNpb25OdW1iZXIgPSBpc0VtcHR5KHZlcnNpb25JbmZvLnBsYXRmb3JtQ2xpZW50KTtcblx0XHRcdGlmIChzZXRWZXJzaW9uTnVtYmVyKSB7XG5cdFx0XHRcdHZlcnNpb25JbmZvLnBsYXRmb3JtQ2xpZW50ID0gdmVyc2lvbk51bWJlcjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdGAke3ZlcnNpb25MYWJlbH0gYWxyZWFkeSBzZXQgdG86ICR7dmVyc2lvbkluZm8ucGxhdGZvcm1DbGllbnR9IHNvIHdlIGFyZSB1bmFibGUgdG8gc2V0IGl0IHRvICR7dmVyc2lvbk51bWJlcn1gXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBcInJ2bVwiOiB7XG5cdFx0XHR2ZXJzaW9uTGFiZWwgPSBcIlJWTSBWZXJzaW9uXCI7XG5cdFx0XHRzZXRWZXJzaW9uTnVtYmVyID0gaXNFbXB0eSh2ZXJzaW9uSW5mby5ydm0pO1xuXHRcdFx0aWYgKHNldFZlcnNpb25OdW1iZXIpIHtcblx0XHRcdFx0dmVyc2lvbkluZm8ucnZtID0gdmVyc2lvbk51bWJlcjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdGAke3ZlcnNpb25MYWJlbH0gYWxyZWFkeSBzZXQgdG86ICR7dmVyc2lvbkluZm8ucnZtfSBzbyB3ZSBhcmUgdW5hYmxlIHRvIHNldCBpdCB0byAke3ZlcnNpb25OdW1iZXJ9YFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNhc2UgXCJydW50aW1lXCI6IHtcblx0XHRcdHZlcnNpb25MYWJlbCA9IFwiUnVudGltZSBWZXJzaW9uXCI7XG5cdFx0XHRzZXRWZXJzaW9uTnVtYmVyID0gaXNFbXB0eSh2ZXJzaW9uSW5mby5ydW50aW1lKTtcblx0XHRcdGlmIChzZXRWZXJzaW9uTnVtYmVyKSB7XG5cdFx0XHRcdHZlcnNpb25JbmZvLnJ1bnRpbWUgPSB2ZXJzaW9uTnVtYmVyO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0YCR7dmVyc2lvbkxhYmVsfSBhbHJlYWR5IHNldCB0bzogJHt2ZXJzaW9uSW5mby5ydW50aW1lfSBzbyB3ZSBhcmUgdW5hYmxlIHRvIHNldCBpdCB0byAke3ZlcnNpb25OdW1iZXJ9YFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNhc2UgXCJ3b3Jrc3BhY2VQbGF0Zm9ybUNsaWVudFwiOiB7XG5cdFx0XHR2ZXJzaW9uTGFiZWwgPSBcIldvcmtzcGFjZSBQbGF0Zm9ybSBDbGllbnQgVmVyc2lvblwiO1xuXHRcdFx0c2V0VmVyc2lvbk51bWJlciA9IGlzRW1wdHkodmVyc2lvbkluZm8ud29ya3NwYWNlUGxhdGZvcm1DbGllbnQpO1xuXHRcdFx0aWYgKHNldFZlcnNpb25OdW1iZXIpIHtcblx0XHRcdFx0dmVyc2lvbkluZm8ud29ya3NwYWNlUGxhdGZvcm1DbGllbnQgPSB2ZXJzaW9uTnVtYmVyO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0YCR7dmVyc2lvbkxhYmVsfSBhbHJlYWR5IHNldCB0bzogJHt2ZXJzaW9uSW5mby53b3Jrc3BhY2VQbGF0Zm9ybUNsaWVudH0gc28gd2UgYXJlIHVuYWJsZSB0byBzZXQgaXQgdG8gJHt2ZXJzaW9uTnVtYmVyfWBcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRjYXNlIFwid29ya3NwYWNlXCI6IHtcblx0XHRcdHZlcnNpb25MYWJlbCA9IFwiV29ya3NwYWNlIFZlcnNpb25cIjtcblx0XHRcdHNldFZlcnNpb25OdW1iZXIgPSBpc0VtcHR5KHZlcnNpb25JbmZvLndvcmtzcGFjZSk7XG5cdFx0XHRpZiAoc2V0VmVyc2lvbk51bWJlcikge1xuXHRcdFx0XHR2ZXJzaW9uSW5mby53b3Jrc3BhY2UgPSB2ZXJzaW9uTnVtYmVyO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0YCR7dmVyc2lvbkxhYmVsfSBhbHJlYWR5IHNldCB0bzogJHt2ZXJzaW9uSW5mby53b3Jrc3BhY2V9IHNvIHdlIGFyZSB1bmFibGUgdG8gc2V0IGl0IHRvICR7dmVyc2lvbk51bWJlcn1gXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBcIndvcmtzcGFjZUNsaWVudFwiOiB7XG5cdFx0XHR2ZXJzaW9uTGFiZWwgPSBcIldvcmtzcGFjZSBDbGllbnQgVmVyc2lvblwiO1xuXHRcdFx0c2V0VmVyc2lvbk51bWJlciA9IGlzRW1wdHkodmVyc2lvbkluZm8ud29ya3NwYWNlQ2xpZW50KTtcblx0XHRcdGlmIChzZXRWZXJzaW9uTnVtYmVyKSB7XG5cdFx0XHRcdHZlcnNpb25JbmZvLndvcmtzcGFjZUNsaWVudCA9IHZlcnNpb25OdW1iZXI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRgJHt2ZXJzaW9uTGFiZWx9IGFscmVhZHkgc2V0IHRvOiAke3ZlcnNpb25JbmZvLndvcmtzcGFjZUNsaWVudH0gc28gd2UgYXJlIHVuYWJsZSB0byBzZXQgaXQgdG8gJHt2ZXJzaW9uTnVtYmVyfWBcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdGlmIChzZXRWZXJzaW9uTnVtYmVyKSB7XG5cdFx0bG9nZ2VyLmluZm8oYCR7dmVyc2lvbkxhYmVsfSBoYXMgYmVlbiBzZXQgdG8gJHt2ZXJzaW9uTnVtYmVyfWApO1xuXHR9XG59XG5cbi8qKlxuICogVmVyc2lvbiBpbmZvcm1hdGlvbiBjYW4gYmUgc2V0IGFnYWluc3QgdGhlIHZlcnNpb24gcHJvdmlkZXIgYW5kIGVhc2lseSByZXRyaWV2ZWQgdXNpbmcgdGhpcyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFZlcnNpb25JbmZvIC0gYW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGlzIHBsYXRmb3JtIGFuZCBpdCdzIGRlcGVuZGVuY2llc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VmVyc2lvbkluZm8oKTogUHJvbWlzZTxWZXJzaW9uSW5mbz4ge1xuXHRyZXR1cm4gdmVyc2lvbkluZm87XG59XG5cbi8qKlxuICogSW5zcGVjdCB0aGUgcGxhdGZvcm0gYW5kIHBsYXRmb3JtIHJlcXVpcmVtZW50cyBhbmQgcmV0dXJuIGEgc3RhdHVzIHRvIGluZGljYXRlIHZlcnNpb24gc3RhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmVyc2lvbiBzdGF0dXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRWZXJzaW9uU3RhdHVzKCk6IFByb21pc2U8VmVyc2lvblN0YXR1cz4ge1xuXHRpZiAoaXNFbXB0eShtaW5WZXJzaW9uKSkge1xuXHRcdGxvZ2dlci5pbmZvKFwiTm8gbWluaW11bSB2ZXJzaW9ucyBoYXZlIGJlZW4gc3BlY2lmaWVkLlwiKTtcblx0fSBlbHNlIHtcblx0XHRjb25zdCBjaGVja3MgPSBPYmplY3Qua2V5cyhtaW5WZXJzaW9uKSBhcyBWZXJzaW9uVHlwZVtdO1xuXG5cdFx0Zm9yIChjb25zdCBjaGVjayBvZiBjaGVja3MpIHtcblx0XHRcdGNvbnN0IHZlcnNpb25Ub0NoZWNrID0gY2hlY2s7XG5cdFx0XHRpZiAoIWlzRW1wdHkodmVyc2lvbkluZm9bdmVyc2lvblRvQ2hlY2tdKSkge1xuXHRcdFx0XHRjb25zdCBjdXJyZW50VmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdmVyc2lvbkluZm9bdmVyc2lvblRvQ2hlY2tdO1xuXHRcdFx0XHRjb25zdCBsaW1pdFZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9IG1pblZlcnNpb25bdmVyc2lvblRvQ2hlY2tdO1xuXHRcdFx0XHRjb21wYXJlVmVyc2lvbih2ZXJzaW9uVG9DaGVjaywgdHJ1ZSwgY3VycmVudFZlcnNpb24sIGxpbWl0VmVyc2lvbik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKGlzRW1wdHkobWF4VmVyc2lvbikpIHtcblx0XHRsb2dnZXIuaW5mbyhcIk5vIG1heGltdW0gdmVyc2lvbnMgaGF2ZSBiZWVuIHNwZWNpZmllZC5cIik7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgY2hlY2tzID0gT2JqZWN0LmtleXMobWF4VmVyc2lvbikgYXMgVmVyc2lvblR5cGVbXTtcblxuXHRcdGZvciAoY29uc3QgY2hlY2sgb2YgY2hlY2tzKSB7XG5cdFx0XHRjb25zdCB2ZXJzaW9uVG9DaGVjayA9IGNoZWNrO1xuXHRcdFx0aWYgKCFpc0VtcHR5KHZlcnNpb25JbmZvW3ZlcnNpb25Ub0NoZWNrXSkpIHtcblx0XHRcdFx0Y29uc3QgY3VycmVudFZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9IHZlcnNpb25JbmZvW3ZlcnNpb25Ub0NoZWNrXTtcblx0XHRcdFx0Y29uc3QgbGltaXRWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBtYXhWZXJzaW9uW3ZlcnNpb25Ub0NoZWNrXTtcblx0XHRcdFx0Y29tcGFyZVZlcnNpb24odmVyc2lvblRvQ2hlY2ssIGZhbHNlLCBjdXJyZW50VmVyc2lvbiwgbGltaXRWZXJzaW9uKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoIWlzRW1wdHkoZW5kcG9pbnRJZCkgJiYgIWlzRW1wdHkoZW5kcG9pbnRQcm92aWRlcikgJiYgZW5kcG9pbnRQcm92aWRlci5oYXNFbmRwb2ludChlbmRwb2ludElkKSkge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCByZXNwb25zZSA9IGF3YWl0IGVuZHBvaW50UHJvdmlkZXIucmVxdWVzdFJlc3BvbnNlPFZlcnNpb25SZXF1ZXN0LCBWZXJzaW9uUmVzcG9uc2U+KFxuXHRcdFx0XHRlbmRwb2ludElkLFxuXHRcdFx0XHRnZXRWZXJzaW9uU3RhdHVzRGF0YSgpXG5cdFx0XHQpO1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJSZXNwb25zZSByZWNlaXZlZCBmcm9tIHZlcnNpb24gZW5kcG9pbnQ6IFwiLCByZXNwb25zZSk7XG5cdFx0XHRjb25zdCBzdGF0dXMgPSByZXNwb25zZT8uc3RhdHVzO1xuXHRcdFx0aWYgKCFpc0VtcHR5KHN0YXR1cykpIHtcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoc3RhdHVzLm1pbkZhaWwpKSB7XG5cdFx0XHRcdFx0bWluRmFpbCA9IHN0YXR1cz8ubWluRmFpbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShzdGF0dXMubWF4RmFpbCkpIHtcblx0XHRcdFx0XHRtYXhGYWlsID0gc3RhdHVzLm1heEZhaWw7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChzdGF0dXM/Lm1pblZlcnNpb24pIHtcblx0XHRcdFx0bWluVmVyc2lvbiA9IHN0YXR1cy5taW5WZXJzaW9uO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHN0YXR1cz8ubWF4VmVyc2lvbikge1xuXHRcdFx0XHRtYXhWZXJzaW9uID0gc3RhdHVzLm1heFZlcnNpb247XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB3aW5kb3dPcHRpb25zID0gcmVzcG9uc2U/LndpbmRvd09wdGlvbnM7XG5cdFx0XHRpZiAoIWlzRW1wdHkod2luZG93T3B0aW9ucykpIHtcblx0XHRcdFx0c2V0dGluZ3NCYXNlZFdpbmRvd0NvbmZpZ3VyYXRpb24gPSBmYWxzZTtcblx0XHRcdFx0dmVyc2lvbldpbmRvd0NvbmZpZ3VyYXRpb24gPSB2YWxpZGF0ZVZlcnNpb25XaW5kb3cod2luZG93T3B0aW9ucyk7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiRmV0Y2hlZCB2ZXJzaW9uIHdpbmRvdyBjb25maWd1cmF0aW9uIGZyb20gZW5kcG9pbnQ6XCIsIGVuZHBvaW50SWQpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRsb2dnZXIuZXJyb3IoXCJFcnJvciB3aGlsZSBjaGVja2luZyBmb3IgdmVyc2lvbiBzdGF0dXMuXCIsIGVycm9yKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAodmVyc2lvbk9wdGlvbnMpIHtcblx0XHRzZXR0aW5nc0Jhc2VkV2luZG93Q29uZmlndXJhdGlvbiA9IHRydWU7XG5cdFx0dmVyc2lvbldpbmRvd0NvbmZpZ3VyYXRpb24gPSB2YWxpZGF0ZVZlcnNpb25XaW5kb3codmVyc2lvbk9wdGlvbnMudmVyc2lvbldpbmRvdyBhcyBPcGVuRmluLldpbmRvd09wdGlvbnMpO1xuXHR9XG5cblx0bGV0IHN0YXR1czogVmVyc2lvblN0YXR1cztcblx0aWYgKG1pbkZhaWwuaW5jbHVkZXMoXCJhcHBcIikpIHtcblx0XHRzdGF0dXMgPSBcInVwZ3JhZGVhYmxlXCI7XG5cdH0gZWxzZSB7XG5cdFx0c3RhdHVzID0gbWluRmFpbC5sZW5ndGggPT09IDAgJiYgbWF4RmFpbC5sZW5ndGggPT09IDAgPyBcImNvbXBhdGlibGVcIiA6IFwiaW5jb21wYXRpYmxlXCI7XG5cdH1cblxuXHRsb2dnZXIuaW5mbyhcIkN1cnJlbnQgdmVyc2lvbiBzdGF0dXM6IFwiLCBzdGF0dXMpO1xuXHRyZXR1cm4gc3RhdHVzO1xufVxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGNoZWNrcyBhIHBhc3NlZCBzdGF0dXMgYW5kIHJlYWN0cyBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIG9mIHRoZSB2ZXJzaW9uIHByb3ZpZGVyXG4gKiBJZiB0aGUgc3RhdHVzIGlzIG5vdCB2YWxpZCB0aGVuIGl0IHdpbGwgbmVlZCB0byBiZSBtYW5hZ2VkIGFuZCB0cnVlIHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBPdGhlcndpc2UgdGhlIHBsYXRmb3JtIGlzIGluIGEgdmFsaWQgc3RhdGUgdmVyc2lvbiB3aXNlIGFuZCBmYWxzZSB3aWxsIGJlIHJldHVybmVkIGFzIG5vdGhpbmdcbiAqIG5lZWRlZCB0byBiZSBtYW5hZ2VkLlxuICogQHBhcmFtIHN0YXR1cyBUaGUgc3RhdHVzIHRoYXQgY2FtZSBmcm9tIHRoZSBnZXRWZXJzaW9uU3RhdHVzIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBzdGF0dXMgaW5kaWNhdGVzIHRoYXQgaXQgaXMgbm90IGNvbXBhdGlibGUgYW5kIHRoYXQgYW4gYWN0aW9uIHdhcyBuZWVkZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYW5hZ2VWZXJzaW9uU3RhdHVzKHN0YXR1czogVmVyc2lvblN0YXR1cyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRpZiAoc3RhdHVzICE9PSBcImNvbXBhdGlibGVcIikge1xuXHRcdGNvbnN0IHdpbmRvd09wdGlvbnMgPSB2YWxpZGF0ZVZlcnNpb25XaW5kb3codmVyc2lvbldpbmRvd0NvbmZpZ3VyYXRpb24pO1xuXHRcdGlmIChpc0VtcHR5KHdpbmRvd09wdGlvbnMpKSB7XG5cdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XCJUaGUgc3RhdHVzIG9mIHRoZSBwbGF0Zm9ybSB2ZXJzaW9uIGlzIGluIGEgbm9uIGNvbXBhdGlibGUgc3RhdGUgYnV0IHdlIGRvIG5vdCBoYXZlIGEgd2luZG93IHRvIGxhdW5jaCB0byByZWFjdCB0byB0aGlzIHN0YXRlLlwiXG5cdFx0XHQpO1xuXHRcdFx0Ly8gd2Ugc3RpbGwgcmV0dXJuIHRoYXQgdGhlIHN0YXRlIGhhZCB0byBiZSBtYW5hZ2VkIGV2ZW4gdGhvdWdoIHdlIHdlcmUgdW5hYmxlIHRvIGRvIHNvIGFzIHdlIGRvIG5vdCB3YW50IHRoZSBwbGF0Zm9ybSB0byBjb250aW51ZSBydW5uaW5nXG5cdFx0XHQvLyBvciBwb2xsaW5nIG9mIHRoZSBlbmRwb2ludCB0byBjb250aW51ZSBpZiBhbiBhY3Rpb24gdG8gZXhlY3V0ZSBpcyBub3QgYmVpbmcgcmV0dXJuZWQuXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0Y29uc3Qgb3Blbldhcm5pbmdXaW5kb3cgPSBhd2FpdCBmaW4uV2luZG93LmNyZWF0ZSh3aW5kb3dPcHRpb25zKTtcblx0XHRpZiAod2luZG93T3B0aW9ucy5hdXRvU2hvdykge1xuXHRcdFx0YXdhaXQgb3Blbldhcm5pbmdXaW5kb3cuc2V0QXNGb3JlZ3JvdW5kKCk7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBJZiBjb25maWd1cmVkIHZpYSBWZXJzaW9uIFByb3ZpZGVyIFNldHRpbmdzLCB0aGlzIG1ldGhvZCB3aWxsIHN0YXJ0IG1vbml0b3JpbmcgdG8gc2VlIGlmIGFuIHVwZ3JhZGUgaXMgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gTW9uaXRvclZlcnNpb25TdGF0dXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChpc01vbml0b3JpbmdFbmFibGVkKSB7XG5cdFx0aWYgKGlzRW1wdHkobW9uaXRvcmluZ0lkKSkge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJNb25pdG9yaW5nIGlzIGVuYWJsZWQgYW5kIG5vdCBydW5uaW5nLiBTdGFydGluZyB0aGUgbW9uaXRvcmluZyBwcm9jZXNzLlwiKTtcblx0XHRcdGF3YWl0IHN0YXJ0TW9uaXRvcmluZygpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIk1vbml0b3JpbmcgaGFzIGJlZW4gcmVxdWVzdGVkIGJ1dCBpcyBhbHJlYWR5IHJ1bm5pbmcuXCIpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRsb2dnZXIud2FybihcIk1vbml0b3JpbmcgaXMgbm90IHNldHVwIHZpYSB0aGUgdmVyc2lvbiBwcm92aWRlciBzZXR0aW5ncy5cIik7XG5cdH1cbn1cblxuLyoqXG4gKiBTdGFydCBtb25pdG9yaW5nIHRoZSB2ZXJzaW9ucy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc3RhcnRNb25pdG9yaW5nKCk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoIWlzRW1wdHkobW9uaXRvcmluZ0lkKSkge1xuXHRcdGNsZWFyVGltZW91dChtb25pdG9yaW5nSWQpO1xuXHRcdG1vbml0b3JpbmdJZCA9IHVuZGVmaW5lZDtcblx0fVxuXHRtb25pdG9yaW5nSWQgPSB3aW5kb3cuc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG5cdFx0Y29uc3Qgc3RhdHVzID0gYXdhaXQgZ2V0VmVyc2lvblN0YXR1cygpO1xuXHRcdGNvbnN0IG5lZWRlZE1hbmFnZW1lbnQgPSBhd2FpdCBtYW5hZ2VWZXJzaW9uU3RhdHVzKHN0YXR1cyk7XG5cdFx0aWYgKCFuZWVkZWRNYW5hZ2VtZW50KSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhgVmVyc2lvbiBzdGF0dXMgaXMgZ29vZDogJHtzdGF0dXN9LiBDb250aW51aW5nIG1vbml0b3JpbmcuYCk7XG5cdFx0XHRhd2FpdCBzdGFydE1vbml0b3JpbmcoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bG9nZ2VyLmluZm8oYFZlcnNpb24gc3RhdHVzIG5lZWRlZCBtYW5hZ2VtZW50OiAke3N0YXR1c30uIFN0b3BwaW5nIG1vbml0b3JpbmcuYCk7XG5cdFx0fVxuXHR9LCB2ZXJzaW9uQ2hlY2tJbnRlcnZhbEluU2Vjb25kcyAqIDEwMDApO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoZSB2ZXJzaW9uIHdpbmRvdyBvcHRpb25zLlxuICogQHBhcmFtIHdpbmRvd09wdGlvbnNUb1ZhbGlkYXRlIFRoZSB3aW5kb3cgb3B0aW9ucyB0byB2YWxpZGF0ZS5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZGF0ZSB3aW5kb3cgb3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVWZXJzaW9uV2luZG93KFxuXHR3aW5kb3dPcHRpb25zVG9WYWxpZGF0ZTogT3BlbkZpbi5XaW5kb3dPcHRpb25zIHwgdW5kZWZpbmVkXG4pOiBPcGVuRmluLldpbmRvd09wdGlvbnMgfCB1bmRlZmluZWQge1xuXHRpZiAoaXNFbXB0eSh3aW5kb3dPcHRpb25zVG9WYWxpZGF0ZSkpIHtcblx0XHRsb2dnZXIuaW5mbyhcIk5vIHZlcnNpb24gd2luZG93IGNvbmZpZ3VyYXRpb24gcHJvdmlkZWQuXCIpO1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRjb25zdCB2YWxpZGF0ZWRXaW5kb3dPcHRpb25zID0geyAuLi53aW5kb3dPcHRpb25zVG9WYWxpZGF0ZSB9O1xuXG5cdGlmIChpc0VtcHR5KHZhbGlkYXRlZFdpbmRvd09wdGlvbnMudXJsKSkge1xuXHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFwiQSB2ZXJzaW9uIHdpbmRvdyBjb25maWd1cmF0aW9uIHdhcyBzZXQgYnV0IGEgdXJsIHdhcyBub3QgcHJvdmlkZWQuIEEgd2luZG93IGNhbm5vdCBiZSBsYXVuY2hlZC5cIlxuXHRcdCk7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHRpZiAoaXNFbXB0eSh2YWxpZGF0ZWRXaW5kb3dPcHRpb25zLm5hbWUpKSB7XG5cdFx0dmFsaWRhdGVkV2luZG93T3B0aW9ucy5uYW1lID0gYCR7ZmluLm1lLmlkZW50aXR5LnV1aWR9LXZlcnNpb25pbmdgO1xuXHR9XG5cblx0aWYgKHNldHRpbmdzQmFzZWRXaW5kb3dDb25maWd1cmF0aW9uKSB7XG5cdFx0aWYgKCFpc0VtcHR5KHZhbGlkYXRlZFdpbmRvd09wdGlvbnMuY3VzdG9tRGF0YSkpIHtcblx0XHRcdGxvZ2dlci5pbmZvKFwiRW5yaWNoaW5nIGN1c3RvbURhdGEgcHJvdmlkZWQgYnkgdmVyc2lvbiB3aW5kb3cgY29uZmlndXJhdGlvbi5cIik7XG5cdFx0XHR2YWxpZGF0ZWRXaW5kb3dPcHRpb25zLmN1c3RvbURhdGEgPSB7XG5cdFx0XHRcdC4uLnZhbGlkYXRlZFdpbmRvd09wdGlvbnMuY3VzdG9tRGF0YSxcblx0XHRcdFx0Li4uZ2V0VmVyc2lvblN0YXR1c0RhdGEoKVxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJTZXR0aW5nIGN1c3RvbURhdGEgZm9yIHZlcnNpb24gd2luZG93IGNvbmZpZ3VyYXRpb24uXCIpO1xuXHRcdFx0dmFsaWRhdGVkV2luZG93T3B0aW9ucy5jdXN0b21EYXRhID0gZ2V0VmVyc2lvblN0YXR1c0RhdGEoKTtcblx0XHR9XG5cdH1cblxuXHRsb2dnZXIuaW5mbyhcIlJldHVybmluZyB2ZXJzaW9uIHdpbmRvdyBjb25maWd1cmF0aW9uLlwiKTtcblx0cmV0dXJuIHZhbGlkYXRlZFdpbmRvd09wdGlvbnM7XG59XG5cbi8qKlxuICogR2V0IHRoZSB2ZXJzaW9uIGRhdGEgYXMgYW4gb2JqZWN0LlxuICogQHJldHVybnMgVGhlIGNvbWJpbmVkIHZlcnNpb24gZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0VmVyc2lvblN0YXR1c0RhdGEoKTogVmVyc2lvblN0YXR1c0RhdGEge1xuXHRyZXR1cm4geyBtaW5WZXJzaW9uLCBtYXhWZXJzaW9uLCB2ZXJzaW9uSW5mbywgbWluRmFpbCwgbWF4RmFpbCB9O1xufVxuXG4vKipcbiAqIENoZWNrIHRoZSB2ZXJzaW9uIHRvIHNlZSBpZiBpdCBpcyBpbiByYW5nZS5cbiAqIEBwYXJhbSB2ZXJzaW9uVG9DaGVjayBUaGUgdmVyc2lvbiB0byBjb21wYXJlLlxuICogQHBhcmFtIGlzTWluTGltaXQgSXMgdGhpcyBhIG1pbmltdW0gbGltaXQgdmVyc2lvbiBjaGVjay5cbiAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIHZlcnNpb24gYmVpbmcgY2hlY2tlZC5cbiAqIEBwYXJhbSBiYXNlVmVyc2lvbiBUaGUgYmFzZSB2ZXJzaW9uIHRvIGNvbXBhcmUgdG8uXG4gKiBAcGFyYW0gbGltaXRWZXJzaW9uIFRoZSBsaW1pdCBvZiB0aGUgdmVyc2lvbiBiZWluZyBjaGVja2VkLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmVyc2lvbiBpcyBvdXQgb2YgcmFuZ2UuXG4gKi9cbmZ1bmN0aW9uIGlzR3JlYXRlclRoYW5Pckxlc3NUaGFuKFxuXHR2ZXJzaW9uVG9DaGVjazogc3RyaW5nLFxuXHRpc01pbkxpbWl0OiBib29sZWFuLFxuXHR0eXBlOiBzdHJpbmcsXG5cdGJhc2VWZXJzaW9uOiBzdHJpbmcsXG5cdGxpbWl0VmVyc2lvbjogc3RyaW5nXG4pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgbWF4T3JNaW5MYWJlbCA9IGlzTWluTGltaXQgPyBcIm1pbmltdW1cIiA6IFwibWF4aW11bVwiO1xuXHRpZiAoTnVtYmVyLnBhcnNlSW50KGJhc2VWZXJzaW9uLCAxMCkgPiBOdW1iZXIucGFyc2VJbnQobGltaXRWZXJzaW9uLCAxMCkpIHtcblx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdGBGaW5pc2hlZCBjaGVjayBmb3IgJHt2ZXJzaW9uVG9DaGVja30uIEN1cnJlbnQgJHt0eXBlfSB2ZXJzaW9uOiAke2Jhc2VWZXJzaW9ufSBpcyBncmVhdGVyIHRoYW4gJHttYXhPck1pbkxhYmVsfSAke3R5cGV9IHZlcnNpb246ICR7bGltaXRWZXJzaW9ufWBcblx0XHQpO1xuXHRcdGlmIChpc01pbkxpbWl0KSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9IGVsc2UgaWYgKE51bWJlci5wYXJzZUludChiYXNlVmVyc2lvbiwgMTApIDwgTnVtYmVyLnBhcnNlSW50KGxpbWl0VmVyc2lvbiwgMTApKSB7XG5cdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRgRmluaXNoZWQgY2hlY2sgZm9yICR7dmVyc2lvblRvQ2hlY2t9LiBDdXJyZW50ICR7dHlwZX0gdmVyc2lvbjogJHtiYXNlVmVyc2lvbn0gaXMgbGVzcyB0aGFuICR7bWF4T3JNaW5MYWJlbH0gJHt0eXBlfSB2ZXJzaW9uOiAke2xpbWl0VmVyc2lvbn1gXG5cdFx0KTtcblx0XHRpZiAoaXNNaW5MaW1pdCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxufVxuXG4vKipcbiAqIENvbXBhcmUgdGhlIHZlcnNpb25zLlxuICogQHBhcmFtIHZlcnNpb25Ub0NoZWNrIFRoZSB2ZXJzaW9uIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0gaXNNaW5MaW1pdCBJcyB0aGlzIGEgbWluaW11bSBsaW1pdCB2ZXJzaW9uIGNoZWNrLlxuICogQHBhcmFtIGN1cnJlbnRWZXJzaW9uIFRoZSBjdXJyZW50IHZlcnNpb24gdG8gY29tcGFyZSB0by5cbiAqIEBwYXJhbSBsaW1pdFZlcnNpb24gVGhlIGxpbWl0IG9mIHRoZSB2ZXJzaW9uIGJlaW5nIGNoZWNrZWQuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2ZXJzaW9uIGlzIG91dCBvZiByYW5nZS5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZVZlcnNpb24oXG5cdHZlcnNpb25Ub0NoZWNrOiBWZXJzaW9uVHlwZSxcblx0aXNNaW5MaW1pdDogYm9vbGVhbixcblx0Y3VycmVudFZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0bGltaXRWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRpZiAoaXNFbXB0eShjdXJyZW50VmVyc2lvbikgfHwgaXNFbXB0eShsaW1pdFZlcnNpb24pKSB7XG5cdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRgQSBjaGVjayB3YXMgcmVxdWVzdGVkIGZvciAke3ZlcnNpb25Ub0NoZWNrfSBidXQgZWl0aGVyIHRoZSBiYXNlIHZlcnNpb24gb3IgbGltaXQgdmVyc2lvbiB3YXMgbm90IHNwZWNpZmllZC5gXG5cdFx0KTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRjb25zdCBjdXJyZW50VmVyc2lvbkxpc3QgPSBjdXJyZW50VmVyc2lvbi5zcGxpdChcIi5cIik7XG5cdGNvbnN0IGxpbWl0VmVyc2lvbkxpc3QgPSBsaW1pdFZlcnNpb24uc3BsaXQoXCIuXCIpO1xuXG5cdGNvbnN0IG1heE9yTWluTGltaXQgPSBpc01pbkxpbWl0ID8gXCJtaW5pbXVtXCIgOiBcIm1heGltdW1cIjtcblxuXHRpZiAobGltaXRWZXJzaW9uTGlzdC5sZW5ndGggIT09IGN1cnJlbnRWZXJzaW9uTGlzdC5sZW5ndGgpIHtcblx0XHRsb2dnZXIud2Fybihcblx0XHRcdGBBIGN1cnJlbnQgdmVyc2lvbiAke2N1cnJlbnRWZXJzaW9ufSBhbmQgJHttYXhPck1pbkxpbWl0fSB2ZXJzaW9uICR7bGltaXRWZXJzaW9ufSBmb3IgJHt2ZXJzaW9uVG9DaGVja30gd2FzIHNwZWNpZmllZCBidXQgYm90aCBuZWVkIHRvIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGRpZ2l0cy5gXG5cdFx0KTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGNvbnN0IHZlcnNpb25QYXJ0cyA9IFtcIk1ham9yXCIsIFwiTWlub3JcIiwgXCJQYXRjaFwiLCBcIkJ1aWxkXCJdO1xuXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgY3VycmVudFZlcnNpb24ubGVuZ3RoOyBpKyspIHtcblx0XHRjb25zdCBpc1ZhbGlkID0gaXNHcmVhdGVyVGhhbk9yTGVzc1RoYW4oXG5cdFx0XHR2ZXJzaW9uVG9DaGVjayxcblx0XHRcdGlzTWluTGltaXQsXG5cdFx0XHR2ZXJzaW9uUGFydHNbaV0sXG5cdFx0XHRjdXJyZW50VmVyc2lvbkxpc3RbaV0sXG5cdFx0XHRsaW1pdFZlcnNpb25MaXN0W2ldXG5cdFx0KTtcblxuXHRcdGlmICghaXNFbXB0eShpc1ZhbGlkKSkge1xuXHRcdFx0aWYgKCFpc1ZhbGlkKSB7XG5cdFx0XHRcdGlmIChpc01pbkxpbWl0KSB7XG5cdFx0XHRcdFx0bWluRmFpbC5wdXNoKHZlcnNpb25Ub0NoZWNrKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRtYXhGYWlsLnB1c2godmVyc2lvblRvQ2hlY2spO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gaXNWYWxpZDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdHJ1ZTtcbn1cbiIsImltcG9ydCB7XG5cdERvY2ssXG5cdERvY2tCdXR0b25OYW1lcyxcblx0dHlwZSBDdXN0b21BY3Rpb25TcGVjaWZpZXIsXG5cdHR5cGUgQ3VzdG9tQnV0dG9uQ29uZmlnLFxuXHR0eXBlIERvY2tCdXR0b24sXG5cdHR5cGUgRG9ja1Byb3ZpZGVyLFxuXHR0eXBlIERvY2tQcm92aWRlclJlZ2lzdHJhdGlvblxufSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlXCI7XG5pbXBvcnQgeyBnZXRDdXJyZW50U3luYywgdHlwZSBXb3Jrc3BhY2VQbGF0Zm9ybU1vZHVsZSB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB7IGNoZWNrQ29uZGl0aW9ucyB9IGZyb20gXCJ3b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci9jb25kaXRpb25zXCI7XG5pbXBvcnQgeyBQTEFURk9STV9BQ1RJT05fSURTIH0gZnJvbSBcIi4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEFwcCwgZ2V0QXBwc0J5VGFnIH0gZnJvbSBcIi4uL2FwcHNcIjtcbmltcG9ydCB7IHN1YnNjcmliZUxpZmVjeWNsZUV2ZW50LCB1bnN1YnNjcmliZUxpZmVjeWNsZUV2ZW50IH0gZnJvbSBcIi4uL2xpZmVjeWNsZVwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4uL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgeyBQbGF0Zm9ybUFwcCB9IGZyb20gXCIuLi9zaGFwZXMvYXBwLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBCb290c3RyYXBPcHRpb25zIH0gZnJvbSBcIi4uL3NoYXBlcy9ib290c3RyYXAtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdERvY2tCdXR0b25BY3Rpb24sXG5cdERvY2tCdXR0b25BcHAsXG5cdERvY2tCdXR0b25BcHBzQnlUYWcsXG5cdERvY2tCdXR0b25Ecm9wZG93bixcblx0RG9ja1Byb3ZpZGVyT3B0aW9uc1xufSBmcm9tIFwiLi4vc2hhcGVzL2RvY2stc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yU2NoZW1lTW9kZSB9IGZyb20gXCIuLi9zaGFwZXMvdGhlbWUtc2hhcGVzXCI7XG5pbXBvcnQgeyBnZXRDdXJyZW50Q29sb3JTY2hlbWVNb2RlLCBnZXRDdXJyZW50SWNvbkZvbGRlciB9IGZyb20gXCIuLi90aGVtZXNcIjtcbmltcG9ydCB7IGlzRW1wdHksIGlzU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiRG9ja1wiKTtcblxubGV0IHJlZ2lzdHJhdGlvbkluZm86IERvY2tQcm92aWRlclJlZ2lzdHJhdGlvbiB8IHVuZGVmaW5lZDtcbmxldCBkb2NrUHJvdmlkZXJPcHRpb25zOiBEb2NrUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xubGV0IHJlZ2lzdGVyZWRCb290c3RyYXBPcHRpb25zOiBCb290c3RyYXBPcHRpb25zIHwgdW5kZWZpbmVkO1xubGV0IHRoZW1lQ2hhbmdlZFN1YnNjcmlwdGlvbklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5sZXQgYXBwc0NoYW5nZWRTdWJzY3JpcHRpb25JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xubGV0IHJlZ2lzdGVyZWRCdXR0b25zOiBEb2NrQnV0dG9uW107XG5cbi8qKlxuICogUmVnaXN0ZXIgdGhlIGRvY2sgY29tcG9uZW50LlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGRvY2sgcHJvdmlkZXIgb3B0aW9ucy5cbiAqIEBwYXJhbSBib290c3RyYXBPcHRpb25zIFRoZSBib290c3RyYXAgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBtZXRhIGluZm8gZnJvbSB0aGUgcmVnaXN0cmF0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXIoXG5cdG9wdGlvbnM6IERvY2tQcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQsXG5cdGJvb3RzdHJhcE9wdGlvbnM/OiBCb290c3RyYXBPcHRpb25zXG4pOiBQcm9taXNlPERvY2tQcm92aWRlclJlZ2lzdHJhdGlvbiB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoIXJlZ2lzdHJhdGlvbkluZm8gJiYgb3B0aW9ucykge1xuXHRcdGRvY2tQcm92aWRlck9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdHJlZ2lzdGVyZWRCb290c3RyYXBPcHRpb25zID0gYm9vdHN0cmFwT3B0aW9ucztcblxuXHRcdGNvbnN0IGJ1dHRvbnMgPSBhd2FpdCBidWlsZEJ1dHRvbnMoKTtcblx0XHRsb2dnZXIuaW5mbyhcIkRvY2sgcmVnaXN0ZXIgYWJvdXQgdG8gYmUgY2FsbGVkLlwiKTtcblxuXHRcdGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IGJ1aWxkRG9ja1Byb3ZpZGVyKGJ1dHRvbnMpO1xuXG5cdFx0aWYgKHJlZ2lzdHJhdGlvbikge1xuXHRcdFx0cmVnaXN0cmF0aW9uSW5mbyA9IGF3YWl0IERvY2sucmVnaXN0ZXIocmVnaXN0cmF0aW9uKTtcblxuXHRcdFx0bG9nZ2VyLmluZm8oXCJWZXJzaW9uOlwiLCByZWdpc3RyYXRpb25JbmZvKTtcblx0XHRcdGxvZ2dlci5pbmZvKFwiRG9jayBwcm92aWRlciBpbml0aWFsaXplZFwiKTtcblxuXHRcdFx0dGhlbWVDaGFuZ2VkU3Vic2NyaXB0aW9uSWQgPSBzdWJzY3JpYmVMaWZlY3ljbGVFdmVudChcInRoZW1lLWNoYW5nZWRcIiwgYXN5bmMgKCkgPT4gcmVmcmVzaERvY2soKSk7XG5cdFx0XHRhcHBzQ2hhbmdlZFN1YnNjcmlwdGlvbklkID0gc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQoXCJhcHBzLWNoYW5nZWRcIiwgYXN5bmMgKCkgPT4gcmVmcmVzaERvY2soKSk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHJlZ2lzdHJhdGlvbkluZm87XG59XG5cbi8qKlxuICogRGVyZWdpc3RlciB0aGUgZG9jayBjb21wb25lbnQuXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVyZWdpc3RlcigpOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKHJlZ2lzdHJhdGlvbkluZm8pIHtcblx0XHRpZiAodGhlbWVDaGFuZ2VkU3Vic2NyaXB0aW9uSWQpIHtcblx0XHRcdHVuc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQodGhlbWVDaGFuZ2VkU3Vic2NyaXB0aW9uSWQsIFwidGhlbWUtY2hhbmdlZFwiKTtcblx0XHR9XG5cdFx0dGhlbWVDaGFuZ2VkU3Vic2NyaXB0aW9uSWQgPSB1bmRlZmluZWQ7XG5cdFx0aWYgKGFwcHNDaGFuZ2VkU3Vic2NyaXB0aW9uSWQpIHtcblx0XHRcdHVuc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQoYXBwc0NoYW5nZWRTdWJzY3JpcHRpb25JZCwgXCJhcHBzLWNoYW5nZWRcIik7XG5cdFx0fVxuXHRcdGFwcHNDaGFuZ2VkU3Vic2NyaXB0aW9uSWQgPSB1bmRlZmluZWQ7XG5cdFx0cmVnaXN0cmF0aW9uSW5mbyA9IHVuZGVmaW5lZDtcblx0XHRkb2NrUHJvdmlkZXJPcHRpb25zID0gdW5kZWZpbmVkO1xuXHRcdGxvZ2dlci5pbmZvKFwiRG9jayBkZXJlZ2lzdGVyIGFib3V0IHRvIGJlIGNhbGxlZC5cIik7XG5cdFx0cmV0dXJuIERvY2suZGVyZWdpc3RlcigpO1xuXHR9XG5cdGxvZ2dlci53YXJuKFwiVW5hYmxlIHRvIGRlcmVnaXN0ZXIgZG9jayBhcyB0aGVyZSBpcyBhbiBpbmRpY2F0aW9uIGl0IHdhcyBuZXZlciByZWdpc3RlcmVkXCIpO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBkb2NrIHJlZ2lzdHJhdGlvbi5cbiAqIEBwYXJhbSBidXR0b25zIFRoZSBidXR0b25zIHRvIGRpc3BsYXkgb24gdGhlIGRvY2suXG4gKiBAcmV0dXJucyBUaGUgZG9jayBwcm92aWRlciBvcHRpb25zLlxuICovXG5hc3luYyBmdW5jdGlvbiBidWlsZERvY2tQcm92aWRlcihidXR0b25zOiBEb2NrQnV0dG9uW10pOiBQcm9taXNlPERvY2tQcm92aWRlciB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoZG9ja1Byb3ZpZGVyT3B0aW9ucykge1xuXHRcdHJlZ2lzdGVyZWRCdXR0b25zID0gYnV0dG9ucztcblxuXHRcdHJldHVybiB7XG5cdFx0XHRpZDogZG9ja1Byb3ZpZGVyT3B0aW9ucy5pZCxcblx0XHRcdHRpdGxlOiBkb2NrUHJvdmlkZXJPcHRpb25zLnRpdGxlLFxuXHRcdFx0aWNvbjogZG9ja1Byb3ZpZGVyT3B0aW9ucy5pY29uLFxuXHRcdFx0d29ya3NwYWNlQ29tcG9uZW50czoge1xuXHRcdFx0XHRoaWRlV29ya3NwYWNlc0J1dHRvbjogZG9ja1Byb3ZpZGVyT3B0aW9ucy53b3Jrc3BhY2VDb21wb25lbnRzPy5oaWRlV29ya3NwYWNlc0J1dHRvbixcblx0XHRcdFx0aGlkZUhvbWVCdXR0b246XG5cdFx0XHRcdFx0IXJlZ2lzdGVyZWRCb290c3RyYXBPcHRpb25zPy5ob21lIHx8IGRvY2tQcm92aWRlck9wdGlvbnMud29ya3NwYWNlQ29tcG9uZW50cz8uaGlkZUhvbWVCdXR0b24sXG5cdFx0XHRcdGhpZGVTdG9yZWZyb250QnV0dG9uOlxuXHRcdFx0XHRcdCFyZWdpc3RlcmVkQm9vdHN0cmFwT3B0aW9ucz8uc3RvcmUgfHwgZG9ja1Byb3ZpZGVyT3B0aW9ucy53b3Jrc3BhY2VDb21wb25lbnRzPy5oaWRlU3RvcmVmcm9udEJ1dHRvbixcblx0XHRcdFx0aGlkZU5vdGlmaWNhdGlvbnNCdXR0b246XG5cdFx0XHRcdFx0IXJlZ2lzdGVyZWRCb290c3RyYXBPcHRpb25zPy5ub3RpZmljYXRpb25zIHx8XG5cdFx0XHRcdFx0ZG9ja1Byb3ZpZGVyT3B0aW9ucy53b3Jrc3BhY2VDb21wb25lbnRzPy5oaWRlTm90aWZpY2F0aW9uc0J1dHRvblxuXHRcdFx0fSxcblx0XHRcdGJ1dHRvbnMsXG5cdFx0XHRza2lwU2F2ZWREb2NrUHJvdmlkZXJDb25maWc6IHRydWUsXG5cdFx0XHRkaXNhYmxlVXNlclJlYXJyYW5nZW1lbnQ6IHRydWVcblx0XHR9O1xuXHR9XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIGJ1dHRvbnMgdG8gZGlzcGxheSBvbiB0aGUgZG9jayBmcm9tIGNvbmZpZy5cbiAqIEByZXR1cm5zIFRoZSBkb2NrIGJ1dHRvbnMgdG8gZGlzcGxheS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gYnVpbGRCdXR0b25zKCk6IFByb21pc2U8RG9ja0J1dHRvbltdPiB7XG5cdGNvbnN0IGJ1dHRvbnM6IERvY2tCdXR0b25bXSA9IFtdO1xuXG5cdGlmIChkb2NrUHJvdmlkZXJPcHRpb25zKSB7XG5cdFx0Y29uc3QgaWNvbkZvbGRlciA9IGF3YWl0IGdldEN1cnJlbnRJY29uRm9sZGVyKCk7XG5cdFx0Y29uc3QgY29sb3JTY2hlbWVNb2RlID0gYXdhaXQgZ2V0Q3VycmVudENvbG9yU2NoZW1lTW9kZSgpO1xuXHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblxuXHRcdGNvbnN0IGVudHJpZXMgPSBBcnJheS5pc0FycmF5KGRvY2tQcm92aWRlck9wdGlvbnMuZW50cmllcykgPyBbLi4uZG9ja1Byb3ZpZGVyT3B0aW9ucy5lbnRyaWVzXSA6IFtdO1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGRvY2tQcm92aWRlck9wdGlvbnMuYXBwcykpIHtcblx0XHRcdGVudHJpZXMucHVzaCguLi5kb2NrUHJvdmlkZXJPcHRpb25zLmFwcHMpO1xuXHRcdH1cblx0XHRpZiAoQXJyYXkuaXNBcnJheShkb2NrUHJvdmlkZXJPcHRpb25zLmJ1dHRvbnMpKSB7XG5cdFx0XHRlbnRyaWVzLnB1c2goLi4uZG9ja1Byb3ZpZGVyT3B0aW9ucy5idXR0b25zKTtcblx0XHR9XG5cblx0XHRmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcblx0XHRcdGlmIChhd2FpdCBjaGVja0NvbmRpdGlvbnMocGxhdGZvcm0sIGVudHJ5LmNvbmRpdGlvbnMsIHsgY2FsbGVyVHlwZTogXCJkb2NrXCIsIGN1c3RvbURhdGE6IGVudHJ5IH0pKSB7XG5cdFx0XHRcdGlmIChcImFwcElkXCIgaW4gZW50cnkpIHtcblx0XHRcdFx0XHRhd2FpdCBhZGRFbnRyeUFzQXBwKGJ1dHRvbnMsIGVudHJ5LCBpY29uRm9sZGVyLCBjb2xvclNjaGVtZU1vZGUpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKFwiYWN0aW9uXCIgaW4gZW50cnkpIHtcblx0XHRcdFx0XHRhd2FpdCBhZGRFbnRyeUFzQWN0aW9uKGJ1dHRvbnMsIGVudHJ5LCBpY29uRm9sZGVyLCBjb2xvclNjaGVtZU1vZGUpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKFwib3B0aW9uc1wiIGluIGVudHJ5KSB7XG5cdFx0XHRcdFx0YXdhaXQgYWRkRW50cmllc0FzRHJvcGRvd24oYnV0dG9ucywgZW50cnksIGljb25Gb2xkZXIsIGNvbG9yU2NoZW1lTW9kZSwgcGxhdGZvcm0pO1xuXHRcdFx0XHR9IGVsc2UgaWYgKFwidGFnc1wiIGluIGVudHJ5KSB7XG5cdFx0XHRcdFx0YXdhaXQgYWRkRW50cmllc0J5QXBwVGFnKGJ1dHRvbnMsIGVudHJ5LCBpY29uRm9sZGVyLCBjb2xvclNjaGVtZU1vZGUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGJ1dHRvbnM7XG59XG5cbi8qKlxuICogQWRkIGFuIGVudHJ5IHRvIHRoZSBkb2NrIGFzIGFuIGFwcC5cbiAqIEBwYXJhbSBidXR0b25zIFRoZSBsaXN0IG9mIGJ1dHRvbnMgdG8gYWRkIHRvLlxuICogQHBhcmFtIGVudHJ5IFRoZSBlbnRyeSBkZXRhaWxzLlxuICogQHBhcmFtIGljb25Gb2xkZXIgVGhlIGZvbGRlciBmb3IgaWNvbnMuXG4gKiBAcGFyYW0gY29sb3JTY2hlbWVNb2RlIFRoZSBjb2xvciBzY2hlbWVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gYWRkRW50cnlBc0FwcChcblx0YnV0dG9uczogRG9ja0J1dHRvbltdLFxuXHRlbnRyeTogRG9ja0J1dHRvbkFwcCxcblx0aWNvbkZvbGRlcjogc3RyaW5nLFxuXHRjb2xvclNjaGVtZU1vZGU6IENvbG9yU2NoZW1lTW9kZVxuKTogUHJvbWlzZTx2b2lkPiB7XG5cdC8vIElmIHRoZSBidXR0b24gaGFzIGFuIGFwcElkIHdlIGFyZSBnb2luZyB0byBsYXVuY2ggdGhhdFxuXHQvLyBidXQgdGhlIGNvbmZpZyBjYW4gb3ZlcnJpZGUgdGhlIHRvb2x0aXAgb3IgaWNvblxuXHRsZXQgdG9vbHRpcCA9IGVudHJ5LnRvb2x0aXA7XG5cdGxldCBpY29uVXJsID0gZW50cnkuaWNvblVybDtcblxuXHRpZiAoIWlzU3RyaW5nVmFsdWUodG9vbHRpcCkgfHwgIWlzU3RyaW5nVmFsdWUoaWNvblVybCkpIHtcblx0XHQvLyBObyB0b29sdGlwIG9yIGljb24gc2V0LCBzbyB1c2UgdGhlIHZhbHVlcyBmcm9tIHRoZSBhcHBcblx0XHRjb25zdCBhcHAgPSBhd2FpdCBnZXRBcHAoZW50cnkuYXBwSWQpO1xuXHRcdGlmIChhcHApIHtcblx0XHRcdGlmICghaXNTdHJpbmdWYWx1ZSh0b29sdGlwKSkge1xuXHRcdFx0XHR0b29sdGlwID0gYXBwLnRpdGxlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFpc1N0cmluZ1ZhbHVlKGljb25VcmwpKSB7XG5cdFx0XHRcdGljb25VcmwgPSBnZXRBcHBJY29uKGFwcCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0YnV0dG9ucy5wdXNoKHtcblx0XHR0eXBlOiBEb2NrQnV0dG9uTmFtZXMuQWN0aW9uQnV0dG9uLFxuXHRcdHRvb2x0aXA6IHRvb2x0aXAgPz8gXCJcIixcblx0XHRpY29uVXJsOiB0aGVtZVVybChpY29uVXJsLCBpY29uRm9sZGVyLCBjb2xvclNjaGVtZU1vZGUpLFxuXHRcdGFjdGlvbjoge1xuXHRcdFx0aWQ6IFBMQVRGT1JNX0FDVElPTl9JRFMubGF1bmNoQXBwLFxuXHRcdFx0Y3VzdG9tRGF0YToge1xuXHRcdFx0XHRzb3VyY2U6IFwiZG9ja1wiLFxuXHRcdFx0XHRhcHBJZDogZW50cnkuYXBwSWRcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEFkZCBhbiBlbnRyeSB0byB0aGUgZG9jayBhcyBhbiBhY3Rpb24uXG4gKiBAcGFyYW0gYnV0dG9ucyBUaGUgbGlzdCBvZiBidXR0b25zIHRvIGFkZCB0by5cbiAqIEBwYXJhbSBlbnRyeSBUaGUgZW50cnkgZGV0YWlscy5cbiAqIEBwYXJhbSBpY29uRm9sZGVyIFRoZSBmb2xkZXIgZm9yIGljb25zLlxuICogQHBhcmFtIGNvbG9yU2NoZW1lTW9kZSBUaGUgY29sb3Igc2NoZW1lXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFkZEVudHJ5QXNBY3Rpb24oXG5cdGJ1dHRvbnM6IERvY2tCdXR0b25bXSxcblx0ZW50cnk6IERvY2tCdXR0b25BY3Rpb24sXG5cdGljb25Gb2xkZXI6IHN0cmluZyxcblx0Y29sb3JTY2hlbWVNb2RlOiBDb2xvclNjaGVtZU1vZGVcbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoIWlzU3RyaW5nVmFsdWUoZW50cnkudG9vbHRpcCkgfHwgIWlzU3RyaW5nVmFsdWUoZW50cnkuaWNvblVybCkpIHtcblx0XHRsb2dnZXIuZXJyb3IoXCJZb3UgbXVzdCBzcGVjaWZ5IHRoZSB0b29sdGlwIGFuZCBpY29uVXJsIGZvciBhIERvY2tCdXR0b25BY3Rpb25cIik7XG5cdH0gZWxzZSB7XG5cdFx0YnV0dG9ucy5wdXNoKHtcblx0XHRcdHR5cGU6IERvY2tCdXR0b25OYW1lcy5BY3Rpb25CdXR0b24sXG5cdFx0XHR0b29sdGlwOiBlbnRyeS50b29sdGlwLFxuXHRcdFx0aWNvblVybDogdGhlbWVVcmwoZW50cnkuaWNvblVybCwgaWNvbkZvbGRlciwgY29sb3JTY2hlbWVNb2RlKSxcblx0XHRcdGFjdGlvbjogZW50cnkuYWN0aW9uXG5cdFx0fSk7XG5cdH1cbn1cblxuLyoqXG4gKiBBZGQgYW4gZW50cnkgdG8gdGhlIGRvY2sgYXMgYW4gZHJvcCBkb3duLlxuICogQHBhcmFtIGJ1dHRvbnMgVGhlIGxpc3Qgb2YgYnV0dG9ucyB0byBhZGQgdG8uXG4gKiBAcGFyYW0gZW50cnkgVGhlIGVudHJ5IGRldGFpbHMuXG4gKiBAcGFyYW0gaWNvbkZvbGRlciBUaGUgZm9sZGVyIGZvciBpY29ucy5cbiAqIEBwYXJhbSBjb2xvclNjaGVtZU1vZGUgVGhlIGNvbG9yIHNjaGVtZVxuICogQHBhcmFtIHBsYXRmb3JtIFRoZSB3b3Jrc3BhY2UgcGxhdGZvcm0gZm9yIGNoZWNraW5nIGNvbmRpdGlvbnMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFkZEVudHJpZXNBc0Ryb3Bkb3duKFxuXHRidXR0b25zOiBEb2NrQnV0dG9uW10sXG5cdGVudHJ5OiBEb2NrQnV0dG9uRHJvcGRvd24sXG5cdGljb25Gb2xkZXI6IHN0cmluZyxcblx0Y29sb3JTY2hlbWVNb2RlOiBDb2xvclNjaGVtZU1vZGUsXG5cdHBsYXRmb3JtOiBXb3Jrc3BhY2VQbGF0Zm9ybU1vZHVsZVxuKTogUHJvbWlzZTx2b2lkPiB7XG5cdC8vIE9wdGlvbnMgYXJlIHByZXNlbnQgc28gdGhpcyBpcyBhIGRyb3AgZG93blxuXHQvLyBUaGUgaXRlbXMgaW4gdGhlIGRyb3AgZG93biBjYW4gYmUgYW4gYXBwSWQgb3IgYSBjdXN0b20gYWN0aW9uXG5cdGlmICghaXNTdHJpbmdWYWx1ZShlbnRyeS50b29sdGlwKSB8fCAhaXNTdHJpbmdWYWx1ZShlbnRyeS5pY29uVXJsKSkge1xuXHRcdGxvZ2dlci5lcnJvcihcIllvdSBtdXN0IHNwZWNpZnkgdGhlIHRvb2x0aXAgYW5kIGljb25VcmwgZm9yIGEgRG9ja0J1dHRvbkRyb3Bkb3duXCIpO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IG9wdHM6IEN1c3RvbUJ1dHRvbkNvbmZpZ1tdID0gW107XG5cblx0XHRmb3IgKGNvbnN0IG9wdGlvbiBvZiBlbnRyeS5vcHRpb25zKSB7XG5cdFx0XHRpZiAoYXdhaXQgY2hlY2tDb25kaXRpb25zKHBsYXRmb3JtLCBvcHRpb24uY29uZGl0aW9ucywgeyBjYWxsZXJUeXBlOiBcImRvY2tcIiwgY3VzdG9tRGF0YTogb3B0aW9uIH0pKSB7XG5cdFx0XHRcdGxldCBvcHRpb25Ub29sdGlwID0gb3B0aW9uLnRvb2x0aXA7XG5cdFx0XHRcdGxldCBhY3Rpb246IEN1c3RvbUFjdGlvblNwZWNpZmllciB8IHVuZGVmaW5lZDtcblxuXHRcdFx0XHQvLyBJZiB0aGUgb3B0aW9ucyBoYXMgYW4gYXBwSWQgd2UgYXJlIGdvaW5nIHRvIGxhdW5jaCB0aGF0XG5cdFx0XHRcdC8vIG90aGVyd2lzZSB3ZSB1c2UgdGhlIGN1c3RvbSBhY3Rpb24uXG5cdFx0XHRcdGlmIChcImFwcElkXCIgaW4gb3B0aW9uKSB7XG5cdFx0XHRcdFx0aWYgKCFpc1N0cmluZ1ZhbHVlKG9wdGlvblRvb2x0aXApKSB7XG5cdFx0XHRcdFx0XHQvLyBJZiB0aGUgdG9vbHRpcCBpcyBub3Qgc2V0IHdlIGNhbiB1c2UgdGhlIGFwcCB0aXRsZVxuXHRcdFx0XHRcdFx0Y29uc3QgYXBwID0gYXdhaXQgZ2V0QXBwKG9wdGlvbi5hcHBJZCk7XG5cdFx0XHRcdFx0XHRvcHRpb25Ub29sdGlwID0gYXBwPy50aXRsZSA/PyBcIlwiO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRhY3Rpb24gPSB7XG5cdFx0XHRcdFx0XHRpZDogUExBVEZPUk1fQUNUSU9OX0lEUy5sYXVuY2hBcHAsXG5cdFx0XHRcdFx0XHRjdXN0b21EYXRhOiB7XG5cdFx0XHRcdFx0XHRcdHNvdXJjZTogXCJkb2NrXCIsXG5cdFx0XHRcdFx0XHRcdGFwcElkOiBvcHRpb24uYXBwSWRcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFpc1N0cmluZ1ZhbHVlKG9wdGlvblRvb2x0aXApKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmVycm9yKFwiWW91IG11c3Qgc3BlY2lmeSB0aGUgdG9vbHRpcCBmb3IgYSBEb2NrQnV0dG9uQWN0aW9uIGluIGEgRG9ja0J1dHRvbkRyb3Bkb3duXCIpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGFjdGlvbiA9IG9wdGlvbi5hY3Rpb247XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIWlzRW1wdHkoYWN0aW9uKSkge1xuXHRcdFx0XHRcdG9wdHMucHVzaCh7XG5cdFx0XHRcdFx0XHR0b29sdGlwOiBvcHRpb25Ub29sdGlwID8/IFwiXCIsXG5cdFx0XHRcdFx0XHRhY3Rpb25cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChvcHRzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0b3B0cy5wdXNoKHtcblx0XHRcdFx0dG9vbHRpcDogZW50cnkubm9FbnRyaWVzID8/IFwiVGhlcmUgYXJlIG5vIGVudHJpZXNcIixcblx0XHRcdFx0ZGlzYWJsZWQ6IHRydWUsXG5cdFx0XHRcdGFjdGlvbjoge1xuXHRcdFx0XHRcdGlkOiBcIm5vb3BcIlxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRidXR0b25zLnB1c2goe1xuXHRcdFx0dHlwZTogRG9ja0J1dHRvbk5hbWVzLkRyb3Bkb3duQnV0dG9uLFxuXHRcdFx0dG9vbHRpcDogZW50cnkudG9vbHRpcCxcblx0XHRcdGljb25Vcmw6IHRoZW1lVXJsKGVudHJ5Lmljb25VcmwsIGljb25Gb2xkZXIsIGNvbG9yU2NoZW1lTW9kZSksXG5cdFx0XHRvcHRpb25zOiBvcHRzXG5cdFx0fSk7XG5cdH1cbn1cblxuLyoqXG4gKiBBZGQgZW50cmllcyB0byB0aGUgZG9jayBiYXNlZCBvbiB0aGVpciBhcHAgdGFncyBhcyBlaXRoZXIgbXVsdGlwbGUgYnV0dG9ucyBvciBhIGRyb3AgZG93bi5cbiAqIEBwYXJhbSBidXR0b25zIFRoZSBsaXN0IG9mIGJ1dHRvbnMgdG8gYWRkIHRvLlxuICogQHBhcmFtIGVudHJ5IFRoZSBlbnRyeSBkZXRhaWxzLlxuICogQHBhcmFtIGljb25Gb2xkZXIgVGhlIGZvbGRlciBmb3IgaWNvbnMuXG4gKiBAcGFyYW0gY29sb3JTY2hlbWVNb2RlIFRoZSBjb2xvciBzY2hlbWVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gYWRkRW50cmllc0J5QXBwVGFnKFxuXHRidXR0b25zOiBEb2NrQnV0dG9uW10sXG5cdGVudHJ5OiBEb2NrQnV0dG9uQXBwc0J5VGFnLFxuXHRpY29uRm9sZGVyOiBzdHJpbmcsXG5cdGNvbG9yU2NoZW1lTW9kZTogQ29sb3JTY2hlbWVNb2RlXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKCFBcnJheS5pc0FycmF5KGVudHJ5LnRhZ3MpKSB7XG5cdFx0bG9nZ2VyLmVycm9yKFwiWW91IG11c3Qgc3BlY2lmeSBhbiBhcnJheSBmb3IgdGhlIHRhZ3MgcGFyYW1ldGVyIGZvciBhbiBEb2NrQnV0dG9uQXBwc0J5VGFnXCIpO1xuXHR9IGVsc2Uge1xuXHRcdC8vIElmIHRoZXJlIGFyZSB0YWdzIHRoZW4gdGhpcyBjb3VsZCBiZSBhIGdyb3VwIG9mIGFwcHMgd2UgdGhlbiBkaXNwbGF5IHNlcGFyYXRlXG5cdFx0Ly8gYnV0dG9ucyBvciBhIGRyb3AgZG93biBiYXNlZCBvbiB0aGUgZGlzcGxheSBwcm9wZXJ0eVxuXHRcdGNvbnN0IGRvY2tBcHBzID0gYXdhaXQgZ2V0QXBwc0J5VGFnKGVudHJ5LnRhZ3MsIGZhbHNlLCB7IHByaXZhdGU6IGZhbHNlIH0pO1xuXG5cdFx0aWYgKGVudHJ5LmRpc3BsYXkgPT09IFwiaW5kaXZpZHVhbFwiKSB7XG5cdFx0XHQvLyBJbmRpdmlkdWFsIHNvIHNob3cgYSBidXR0b24gZm9yIGVhY2ggYXBwXG5cdFx0XHRmb3IgKGNvbnN0IGRvY2tBcHAgb2YgZG9ja0FwcHMpIHtcblx0XHRcdFx0Y29uc3QgaWNvbiA9IGVudHJ5Lmljb25VcmwgPz8gZ2V0QXBwSWNvbihkb2NrQXBwKTtcblx0XHRcdFx0YnV0dG9ucy5wdXNoKHtcblx0XHRcdFx0XHR0b29sdGlwOiBlbnRyeS50b29sdGlwID8/IGRvY2tBcHAudGl0bGUsXG5cdFx0XHRcdFx0aWNvblVybDogdGhlbWVVcmwoaWNvbiwgaWNvbkZvbGRlciwgY29sb3JTY2hlbWVNb2RlKSxcblx0XHRcdFx0XHRhY3Rpb246IHtcblx0XHRcdFx0XHRcdGlkOiBQTEFURk9STV9BQ1RJT05fSURTLmxhdW5jaEFwcCxcblx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IHtcblx0XHRcdFx0XHRcdFx0c291cmNlOiBcImRvY2tcIixcblx0XHRcdFx0XHRcdFx0YXBwSWQ6IGRvY2tBcHAuYXBwSWRcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoZW50cnkuZGlzcGxheSA9PT0gXCJncm91cFwiKSB7XG5cdFx0XHQvLyBHcm91cCBkaXNwbGF5IHNvIHNob3cgYSBkcm9wIGRvd24gd2l0aCBhbGwgdGhlIGVudHJpZXMgaW4gaXRcblx0XHRcdGlmICghaXNTdHJpbmdWYWx1ZShlbnRyeS50b29sdGlwKSkge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJZb3UgbXVzdCBzcGVjaWZ5IHRoZSB0b29sdGlwIGZvciBhIGdyb3VwZWQgRG9ja0J1dHRvbkFwcHNCeVRhZ1wiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxldCBpY29uVXJsID0gZW50cnkuaWNvblVybDtcblx0XHRcdFx0Y29uc3Qgb3B0cyA9IFtdO1xuXG5cdFx0XHRcdGZvciAoY29uc3QgZG9ja0FwcCBvZiBkb2NrQXBwcykge1xuXHRcdFx0XHRcdC8vIElmIHRoZSBjb25maWcgZG9lc24ndCBzcGVjaWZ5IGFuIGljb24sIGp1c3QgdXNlIHRoZSBpY29uIGZyb20gdGhlIGZpcnN0IGVudHJ5XG5cdFx0XHRcdFx0aWYgKCFpc1N0cmluZ1ZhbHVlKGljb25VcmwpKSB7XG5cdFx0XHRcdFx0XHRpY29uVXJsID0gZ2V0QXBwSWNvbihkb2NrQXBwKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRvcHRzLnB1c2goe1xuXHRcdFx0XHRcdFx0dG9vbHRpcDogZG9ja0FwcC50aXRsZSxcblx0XHRcdFx0XHRcdGFjdGlvbjoge1xuXHRcdFx0XHRcdFx0XHRpZDogUExBVEZPUk1fQUNUSU9OX0lEUy5sYXVuY2hBcHAsXG5cdFx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IHtcblx0XHRcdFx0XHRcdFx0XHRzb3VyY2U6IFwiZG9ja1wiLFxuXHRcdFx0XHRcdFx0XHRcdGFwcElkOiBkb2NrQXBwLmFwcElkXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChvcHRzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdG9wdHMucHVzaCh7XG5cdFx0XHRcdFx0XHR0b29sdGlwOiBlbnRyeS5ub0VudHJpZXMgPz8gXCJUaGVyZSBhcmUgbm8gZW50cmllc1wiLFxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRhY3Rpb246IHtcblx0XHRcdFx0XHRcdFx0aWQ6IFwibm9vcFwiXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRidXR0b25zLnB1c2goe1xuXHRcdFx0XHRcdHR5cGU6IERvY2tCdXR0b25OYW1lcy5Ecm9wZG93bkJ1dHRvbixcblx0XHRcdFx0XHR0b29sdGlwOiBlbnRyeS50b29sdGlwID8/IFwiXCIsXG5cdFx0XHRcdFx0aWNvblVybDogdGhlbWVVcmwoaWNvblVybCwgaWNvbkZvbGRlciwgY29sb3JTY2hlbWVNb2RlKSxcblx0XHRcdFx0XHRvcHRpb25zOiBvcHRzXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIFNob3cgdGhlIGRvY2sgY29tcG9uZW50LlxuICogQHJldHVybnMgTm90aGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNob3coKTogUHJvbWlzZTx2b2lkPiB7XG5cdGxvZ2dlci5pbmZvKFwiRG9jayBzaG93IGNhbGxlZC5cIik7XG5cdHJldHVybiBEb2NrLnNob3coKTtcbn1cblxuLyoqXG4gKiBNaW5pbWl6ZSB0aGUgZG9jayBjb21wb25lbnQuXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWluaW1pemUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdGxvZ2dlci5pbmZvKFwiRG9jayBtaW5pbWl6ZSBjYWxsZWQuXCIpO1xuXHRyZXR1cm4gRG9jay5taW5pbWl6ZSgpO1xufVxuXG4vKipcbiAqIFJlZnJlc2ggdGhlIGRvY2sgYmVjYXVzZSB0aGUgY29sb3Igc2NoZW1lIG9yIGFwcHMgaGF2ZSBjaGFuZ2VkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZWZyZXNoRG9jaygpOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKCFpc0VtcHR5KHJlZ2lzdHJhdGlvbkluZm8pKSB7XG5cdFx0Y29uc3QgbmV3QnV0dG9ucyA9IGF3YWl0IGJ1aWxkQnV0dG9ucygpO1xuXG5cdFx0aWYgKEpTT04uc3RyaW5naWZ5KG5ld0J1dHRvbnMpICE9PSBKU09OLnN0cmluZ2lmeShyZWdpc3RlcmVkQnV0dG9ucykpIHtcblx0XHRcdGNvbnN0IGRvY2tQcm92aWRlciA9IGF3YWl0IGJ1aWxkRG9ja1Byb3ZpZGVyKG5ld0J1dHRvbnMpO1xuXHRcdFx0aWYgKGRvY2tQcm92aWRlcikge1xuXHRcdFx0XHQvLyB1cGRhdGVEb2NrUHJvdmlkZXJDb25maWcgd2FzIGFkZGVkIGluIHYxMywgZmFsbGJhY2sgaWYgaXQgZG9lc24ndCBleGlzdFxuXHRcdFx0XHRpZiAocmVnaXN0cmF0aW9uSW5mbz8udXBkYXRlRG9ja1Byb3ZpZGVyQ29uZmlnKSB7XG5cdFx0XHRcdFx0YXdhaXQgcmVnaXN0cmF0aW9uSW5mby51cGRhdGVEb2NrUHJvdmlkZXJDb25maWcoZG9ja1Byb3ZpZGVyKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhd2FpdCBkZXJlZ2lzdGVyKCk7XG5cdFx0XHRcdFx0YXdhaXQgRG9jay5yZWdpc3Rlcihkb2NrUHJvdmlkZXIpO1xuXHRcdFx0XHRcdGlmIChyZWdpc3RlcmVkQm9vdHN0cmFwT3B0aW9ucz8uYXV0b1Nob3c/LmluY2x1ZGVzKFwiZG9ja1wiKSkge1xuXHRcdFx0XHRcdFx0YXdhaXQgc2hvdygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEFwcGx5IHRoZW1pbmcgdG8gYW4gaWNvbiB1cmwuXG4gKiBAcGFyYW0gdXJsIFRoZSB1cmwgdG8gdGhlbWUuXG4gKiBAcGFyYW0gaWNvbkZvbGRlciBUaGUgaWNvbiBmb2xkZXIuXG4gKiBAcGFyYW0gY29sb3JTY2hlbWVNb2RlIFRoZSBjb2xvciBzY2hlbWUuXG4gKiBAcmV0dXJucyBUaGUgdGhlbWVkIHVybC5cbiAqL1xuZnVuY3Rpb24gdGhlbWVVcmwoXG5cdHVybDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRpY29uRm9sZGVyOiBzdHJpbmcsXG5cdGNvbG9yU2NoZW1lTW9kZTogQ29sb3JTY2hlbWVNb2RlXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gdXJsXG5cdFx0PyB1cmwucmVwbGFjZSgve3RoZW1lfS9nLCBpY29uRm9sZGVyKS5yZXBsYWNlKC97c2NoZW1lfS9nLCBjb2xvclNjaGVtZU1vZGUgYXMgc3RyaW5nKVxuXHRcdDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEdldCBhbiBhcHAgaWNvbiBmcm9tIGEgcGxhdGZvcm0gYXBwIGRlZmluaXRpb24uXG4gKiBAcGFyYW0gYXBwIFRoZSBhcHAgdG8gZ2V0IHRoZSBpY29uIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgYXBwIGljb24uXG4gKi9cbmZ1bmN0aW9uIGdldEFwcEljb24oYXBwOiBQbGF0Zm9ybUFwcCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmIChBcnJheS5pc0FycmF5KGFwcC5pY29ucykgJiYgYXBwLmljb25zLmxlbmd0aCA+IDApIHtcblx0XHRyZXR1cm4gYXBwLmljb25zWzBdLnNyYztcblx0fVxufVxuIiwiaW1wb3J0IHtcblx0SG9tZSxcblx0dHlwZSBIb21lUHJvdmlkZXIsXG5cdHR5cGUgQ0xJRmlsdGVyLFxuXHR0eXBlIEhvbWVEaXNwYXRjaGVkU2VhcmNoUmVzdWx0LFxuXHR0eXBlIEhvbWVSZWdpc3RyYXRpb24sXG5cdHR5cGUgSG9tZVNlYXJjaExpc3RlbmVyUmVxdWVzdCxcblx0dHlwZSBIb21lU2VhcmNoTGlzdGVuZXJSZXNwb25zZSxcblx0dHlwZSBIb21lU2VhcmNoUmVzcG9uc2Vcbn0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZVwiO1xuaW1wb3J0IHsgZ2V0SGVscFNlYXJjaEVudHJpZXMsIGdldFNlYXJjaFJlc3VsdHMsIGl0ZW1TZWxlY3Rpb24gfSBmcm9tIFwiLi4vaW50ZWdyYXRpb25zXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiLi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSB7IEhvbWVQcm92aWRlck9wdGlvbnMgfSBmcm9tIFwiLi4vc2hhcGVzL2hvbWUtc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmNvbnN0IEhPTUVfU09VUkNFX0ZJTFRFUlMgPSBcInNvdXJjZXNcIjtcbmNvbnN0IEhPTUVfU09VUkNFX0RFRkFVTFRfRklMVEVSX0xBQkVMID0gXCJTb3VyY2VcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiSG9tZVwiKTtcblxubGV0IGhvbWVQcm92aWRlck9wdGlvbnM6IEhvbWVQcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQ7XG5sZXQgcmVnaXN0cmF0aW9uSW5mbzogSG9tZVJlZ2lzdHJhdGlvbiB8IHVuZGVmaW5lZDtcbmxldCBsYXN0UmVzcG9uc2U6IEhvbWVTZWFyY2hMaXN0ZW5lclJlc3BvbnNlO1xuXG4vKipcbiAqIFJlZ2lzdGVyIHRoZSBob21lIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgaG9tZSBwcm92aWRlci5cbiAqIEByZXR1cm5zIFRoZSByZWdpc3RyYXRpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWdpc3Rlcihcblx0b3B0aW9uczogSG9tZVByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZFxuKTogUHJvbWlzZTxIb21lUmVnaXN0cmF0aW9uIHwgdW5kZWZpbmVkPiB7XG5cdGlmICghcmVnaXN0cmF0aW9uSW5mbykge1xuXHRcdGhvbWVQcm92aWRlck9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdGxvZ2dlci5pbmZvKFwiSW5pdGlhbGl6aW5nIGhvbWVcIik7XG5cdFx0aWYgKFxuXHRcdFx0aXNFbXB0eShob21lUHJvdmlkZXJPcHRpb25zKSB8fFxuXHRcdFx0aXNFbXB0eShob21lUHJvdmlkZXJPcHRpb25zLmlkKSB8fFxuXHRcdFx0aXNFbXB0eShob21lUHJvdmlkZXJPcHRpb25zLnRpdGxlKVxuXHRcdCkge1xuXHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFwiUHJvdmlkZXIgbm90IGNvbmZpZ3VyZWQgaW4gdGhlIGN1c3RvbVNldHRpbmdzIG9mIHlvdXIgbWFuaWZlc3QgY29ycmVjdGx5LiBFbnN1cmUgeW91IGhhdmUgdGhlIGhvbWVQcm92aWRlciBvYmplY3QgZGVmaW5lZCBpbiBjdXN0b21TZXR0aW5ncyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVmaW5lZDogaWQsIHRpdGxlXCJcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgaG9tZVByb3ZpZGVyOiBIb21lUHJvdmlkZXIgPSB7XG5cdFx0XHQuLi5ob21lUHJvdmlkZXJPcHRpb25zLFxuXHRcdFx0b25Vc2VySW5wdXQsXG5cdFx0XHRvblJlc3VsdERpc3BhdGNoOiBvblNlbGVjdGlvbixcblx0XHRcdGRpc3BhdGNoRm9jdXNFdmVudHM6IHRydWVcblx0XHR9O1xuXG5cdFx0cmVnaXN0cmF0aW9uSW5mbyA9IGF3YWl0IEhvbWUucmVnaXN0ZXIoaG9tZVByb3ZpZGVyKTtcblx0XHRsb2dnZXIuaW5mbyhcIlZlcnNpb246XCIsIHJlZ2lzdHJhdGlvbkluZm8pO1xuXHRcdGxvZ2dlci5pbmZvKFwiSG9tZSBwcm92aWRlciBpbml0aWFsaXplZFwiKTtcblx0fVxuXG5cdHJldHVybiByZWdpc3RyYXRpb25JbmZvO1xufVxuXG4vKipcbiAqIERlcmVnaXN0ZXIgdGhlIGhvbWUgY29tcG9uZW50LlxuICogQHJldHVybnMgTm90aGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlcmVnaXN0ZXIoKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChyZWdpc3RyYXRpb25JbmZvKSB7XG5cdFx0cmVnaXN0cmF0aW9uSW5mbyA9IHVuZGVmaW5lZDtcblx0XHRsb2dnZXIuaW5mbyhcIkFib3V0IHRvIGNhbGwgSG9tZSBkZXJlZ2lzdGVyLlwiKTtcblx0XHRpZiAoaG9tZVByb3ZpZGVyT3B0aW9ucykge1xuXHRcdFx0YXdhaXQgSG9tZS5kZXJlZ2lzdGVyKGhvbWVQcm92aWRlck9wdGlvbnMuaWQpO1xuXHRcdFx0aG9tZVByb3ZpZGVyT3B0aW9ucyA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0bG9nZ2VyLndhcm4oXCJVbmFibGUgdG8gZGVyZWdpc3RlciBob21lIGFzIHRoZXJlIGlzIGFuIGluZGljYXRpb24gaXQgd2FzIG5ldmVyIHJlZ2lzdGVyZWRcIik7XG59XG5cbi8qKlxuICogU2hvdyB0aGUgaG9tZSBjb21wb25lbnQuXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hvdygpOiBQcm9taXNlPHZvaWQ+IHtcblx0bG9nZ2VyLmluZm8oXCJTaG93IEhvbWUgY2FsbGVkLlwiKTtcblx0cmV0dXJuIEhvbWUuc2hvdygpO1xufVxuXG4vKipcbiAqIEhpZGUgdGhlIGhvbWUgY29tcG9uZW50LlxuICogQHJldHVybnMgTm90aGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhpZGUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdGxvZ2dlci5pbmZvKFwiSGlkZSBIb21lIGNhbGxlZC5cIik7XG5cdHJldHVybiBIb21lLmhpZGUoKTtcbn1cblxuLyoqXG4gKiBIYW5kbGUgdXNlciBpbnB1dCBmcm9tIHRoZSBob21lIGNvbXBvbmVudC5cbiAqIEBwYXJhbSByZXF1ZXN0IFRoZSByZXF1ZXN0IGZyb20gdGhlIGhvbWUgY29tcG9uZW50LlxuICogQHBhcmFtIHJlc3BvbnNlIFRoZSByZXNwb25zZSB0byB0aGUgaG9tZSBjb21wb25lbnQuXG4gKiBAcmV0dXJucyBUaGUgc2VhcmNoIHJlc3BvbnNlLlxuICovXG5hc3luYyBmdW5jdGlvbiBvblVzZXJJbnB1dChcblx0cmVxdWVzdDogSG9tZVNlYXJjaExpc3RlbmVyUmVxdWVzdCxcblx0cmVzcG9uc2U6IEhvbWVTZWFyY2hMaXN0ZW5lclJlc3BvbnNlXG4pOiBQcm9taXNlPEhvbWVTZWFyY2hSZXNwb25zZT4ge1xuXHR0cnkge1xuXHRcdGNvbnN0IGZpbHRlcnM6IENMSUZpbHRlcltdID0gcmVxdWVzdD8uY29udGV4dD8uc2VsZWN0ZWRGaWx0ZXJzID8/IFtdO1xuXG5cdFx0aWYgKCFpc0VtcHR5KGxhc3RSZXNwb25zZSkpIHtcblx0XHRcdGxhc3RSZXNwb25zZS5jbG9zZSgpO1xuXHRcdH1cblx0XHRsYXN0UmVzcG9uc2UgPSByZXNwb25zZTtcblx0XHRsYXN0UmVzcG9uc2Uub3BlbigpO1xuXG5cdFx0Y29uc3QgcXVlcnlMb3dlciA9IHJlcXVlc3QucXVlcnkudG9Mb3dlckNhc2UoKTtcblxuXHRcdGlmIChxdWVyeUxvd2VyID09PSBcIj9cIikge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJJbnRlZ3JhdGlvbiBIZWxwIHJlcXVlc3RlZC5cIik7XG5cdFx0XHRjb25zdCBpbnRlZ3JhdGlvbkhlbHBTZWFyY2hFbnRyaWVzID0gYXdhaXQgZ2V0SGVscFNlYXJjaEVudHJpZXMoKTtcblx0XHRcdGNvbnN0IHNlYXJjaFJlc3VsdHMgPSB7XG5cdFx0XHRcdHJlc3VsdHM6IGludGVncmF0aW9uSGVscFNlYXJjaEVudHJpZXMsXG5cdFx0XHRcdGNvbnRleHQ6IHtcblx0XHRcdFx0XHRmaWx0ZXJzOiBbXVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIHNlYXJjaFJlc3VsdHM7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZW5hYmxlU291cmNlRmlsdGVyID0gIShob21lUHJvdmlkZXJPcHRpb25zPy5zb3VyY2VGaWx0ZXI/LmRpc2FibGVkID8/IGZhbHNlKTtcblxuXHRcdGxldCBzZWxlY3RlZFNvdXJjZUZpbHRlck9wdGlvbnM6IHN0cmluZ1tdID0gW107XG5cdFx0aWYgKGVuYWJsZVNvdXJjZUZpbHRlciAmJiBmaWx0ZXJzKSB7XG5cdFx0XHRjb25zdCBzb3VyY2VGaWx0ZXIgPSBmaWx0ZXJzLmZpbmQoKGYpID0+IGYuaWQgPT09IEhPTUVfU09VUkNFX0ZJTFRFUlMpO1xuXHRcdFx0aWYgKHNvdXJjZUZpbHRlcikge1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShzb3VyY2VGaWx0ZXIub3B0aW9ucykpIHtcblx0XHRcdFx0XHRzZWxlY3RlZFNvdXJjZUZpbHRlck9wdGlvbnMgPSBzb3VyY2VGaWx0ZXIub3B0aW9ucy5maWx0ZXIoKG8pID0+IG8uaXNTZWxlY3RlZCkubWFwKChvKSA9PiBvLnZhbHVlKTtcblx0XHRcdFx0fSBlbHNlIGlmIChzb3VyY2VGaWx0ZXIub3B0aW9ucy5pc1NlbGVjdGVkKSB7XG5cdFx0XHRcdFx0c2VsZWN0ZWRTb3VyY2VGaWx0ZXJPcHRpb25zLnB1c2goc291cmNlRmlsdGVyLm9wdGlvbnMudmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bGV0IHNvdXJjZUZpbHRlck9wdGlvbnM6IHN0cmluZ1tdID0gW107XG5cblx0XHRsb2dnZXIuaW5mbyhcIlNlYXJjaCByZXN1bHRzIHJlcXVlc3RlZC5cIik7XG5cdFx0Y29uc3Qgc2VhcmNoUmVzdWx0cyA9IGF3YWl0IGdldFNlYXJjaFJlc3VsdHMoXG5cdFx0XHRyZXF1ZXN0LnF1ZXJ5LFxuXHRcdFx0ZmlsdGVycyxcblx0XHRcdGxhc3RSZXNwb25zZSxcblx0XHRcdHNlbGVjdGVkU291cmNlRmlsdGVyT3B0aW9ucyxcblx0XHRcdHtcblx0XHRcdFx0cXVlcnlNaW5MZW5ndGg6IGhvbWVQcm92aWRlck9wdGlvbnM/LnF1ZXJ5TWluTGVuZ3RoID8/IDMsXG5cdFx0XHRcdHF1ZXJ5QWdhaW5zdDogaG9tZVByb3ZpZGVyT3B0aW9ucz8ucXVlcnlBZ2FpbnN0ID8/IFtcInRpdGxlXCJdLFxuXHRcdFx0XHRpc1N1Z2dlc3Rpb246IHJlcXVlc3QuY29udGV4dD8uaXNTdWdnZXN0aW9uID8/IGZhbHNlXG5cdFx0XHR9XG5cdFx0KTtcblxuXHRcdGlmIChBcnJheS5pc0FycmF5KHNlYXJjaFJlc3VsdHMuc291cmNlRmlsdGVycykgJiYgc2VhcmNoUmVzdWx0cy5zb3VyY2VGaWx0ZXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdHNvdXJjZUZpbHRlck9wdGlvbnMgPSBzb3VyY2VGaWx0ZXJPcHRpb25zLmNvbmNhdChzZWFyY2hSZXN1bHRzLnNvdXJjZUZpbHRlcnMpO1xuXHRcdH1cblxuXHRcdGlmIChlbmFibGVTb3VyY2VGaWx0ZXIgJiYgc291cmNlRmlsdGVyT3B0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0XHRzZWFyY2hSZXN1bHRzLmNvbnRleHQgPSBzZWFyY2hSZXN1bHRzLmNvbnRleHQgPz8ge307XG5cdFx0XHRzZWFyY2hSZXN1bHRzLmNvbnRleHQuZmlsdGVycyA9IHNlYXJjaFJlc3VsdHMuY29udGV4dC5maWx0ZXJzID8/IFtdO1xuXHRcdFx0c2VhcmNoUmVzdWx0cy5jb250ZXh0LmZpbHRlcnMucHVzaCh7XG5cdFx0XHRcdGlkOiBIT01FX1NPVVJDRV9GSUxURVJTLFxuXHRcdFx0XHR0aXRsZTogaG9tZVByb3ZpZGVyT3B0aW9ucz8uc291cmNlRmlsdGVyPy5sYWJlbCA/PyBIT01FX1NPVVJDRV9ERUZBVUxUX0ZJTFRFUl9MQUJFTCxcblx0XHRcdFx0b3B0aW9uczogc291cmNlRmlsdGVyT3B0aW9ucy5tYXAoKGMpID0+ICh7IHZhbHVlOiBjLCBpc1NlbGVjdGVkOiB0cnVlIH0pKVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIGFueSBlbXB0eSBmaWx0ZXIgbGlzdHMgYXMgdGhlc2UgY2FuIGNhdXNlIHRoZSBVSSB0byBjb250aW51YWxseVxuXHRcdC8vIGV4cGFuZCBhbmQgY29sbGFwc2UgYXMgeW91IHR5cGVcblx0XHRjb25zdCBmaW5hbEZpbHRlcnMgPSBbXTtcblx0XHRjb25zdCBjb250ZXh0RmlsdGVycyA9IHNlYXJjaFJlc3VsdHMuY29udGV4dD8uZmlsdGVycztcblx0XHRpZiAoQXJyYXkuaXNBcnJheShjb250ZXh0RmlsdGVycykpIHtcblx0XHRcdGZvciAoY29uc3QgZmlsdGVyIG9mIGNvbnRleHRGaWx0ZXJzKSB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGZpbHRlci5vcHRpb25zKSAmJiBmaWx0ZXIub3B0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0ZmluYWxGaWx0ZXJzLnB1c2goZmlsdGVyKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoZmluYWxGaWx0ZXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdHNlYXJjaFJlc3VsdHMuY29udGV4dCA9IHNlYXJjaFJlc3VsdHMuY29udGV4dCA/PyB7fTtcblx0XHRcdHNlYXJjaFJlc3VsdHMuY29udGV4dC5maWx0ZXJzID0gZmluYWxGaWx0ZXJzO1xuXHRcdH1cblx0XHRpZiAoIUFycmF5LmlzQXJyYXkoc2VhcmNoUmVzdWx0cz8ucmVzdWx0cykpIHtcblx0XHRcdGxvZ2dlci5pbmZvKFwiTm8gcmVzdWx0cyBhcnJheSByZXR1cm5lZC5cIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZ2dlci5pbmZvKGAke3NlYXJjaFJlc3VsdHMucmVzdWx0cy5sZW5ndGh9IHJlc3VsdHMgcmV0dXJuZWQuYCk7XG5cdFx0fVxuXHRcdHJldHVybiBzZWFyY2hSZXN1bHRzO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRsb2dnZXIuZXJyb3IoXCJFeGNlcHRpb24gd2hpbGUgZ2V0dGluZyBzZWFyY2ggbGlzdCByZXN1bHRzXCIsIGVycik7XG5cdH1cblxuXHRyZXR1cm4geyByZXN1bHRzOiBbXSB9O1xufVxuXG4vKipcbiAqIEhhbmRsZSB0aGUgc2VsZWN0aW9uIG9mIGEgc2VhcmNoIHJlc3VsdC5cbiAqIEBwYXJhbSByZXN1bHQgVGhlIHJlc3VsdCB0aGF0IHdhcyBzZWxlY3RlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gb25TZWxlY3Rpb24ocmVzdWx0OiBIb21lRGlzcGF0Y2hlZFNlYXJjaFJlc3VsdCk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoIWlzRW1wdHkocmVzdWx0LmRhdGEpKSB7XG5cdFx0Y29uc3QgaGFuZGxlZCA9IGF3YWl0IGl0ZW1TZWxlY3Rpb24ocmVzdWx0LCBsYXN0UmVzcG9uc2UpO1xuXG5cdFx0aWYgKHJlc3VsdC5hY3Rpb24udHJpZ2dlciA9PT0gXCJ1c2VyLWFjdGlvblwiKSB7XG5cdFx0XHRpZiAoaGFuZGxlZCkge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0XHRgVGhlIGFjdGlvbiBmb3IgcmVzdWx0IHdpdGggdGl0bGU6ICcke3Jlc3VsdC50aXRsZX0nIGZvciBwcm92aWRlcjogJyR7XG5cdFx0XHRcdFx0XHRyZXN1bHQuZGF0YT8ucHJvdmlkZXJJZCA/PyBcInVua25vd25cIlxuXHRcdFx0XHRcdH0nIHdhcyBoYW5kbGVkYFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XHRcdGBUaGUgYWN0aW9uIGZvciByZXN1bHQgd2l0aCB0aXRsZTogJyR7cmVzdWx0LnRpdGxlfScgZm9yIHByb3ZpZGVyOiAnJHtcblx0XHRcdFx0XHRcdHJlc3VsdC5kYXRhPy5wcm92aWRlcklkID8/IFwidW5rbm93blwiXG5cdFx0XHRcdFx0fScgd2FzIG5vdCBoYW5kbGVkYFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRsb2dnZXIud2FybihcIlVuYWJsZSB0byBleGVjdXRlIHJlc3VsdCB3aXRob3V0IGRhdGEgYmVpbmcgcGFzc2VkXCIpO1xuXHR9XG59XG4iLCJpbXBvcnQgeyBJbnRlZ3JhdGlvbnMgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlXCI7XG5pbXBvcnQgdHlwZSB7IFdvcmtmbG93SW50ZWdyYXRpb24gfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiLi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSB7IExvd0NvZGVJbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9ucyB9IGZyb20gXCIuLi9zaGFwZXMvbG93LWNvZGUtaW50ZWdyYXRpb24tc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIkxvdyBDb2RlIEludGVncmF0aW9uc1wiKTtcblxubGV0IGxvd0NvZGVJbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9uczogTG93Q29kZUludGVncmF0aW9uUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xubGV0IGxvd0NvZGVJbnRlZ3JhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogV29ya2Zsb3dJbnRlZ3JhdGlvbiB9O1xuY29uc3QgcmVxdWlyZXNTZWFyY2hJbml0aWFsaXphdGlvbjogc3RyaW5nW10gPSBbXTtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIHBhc3NlZCBjb25maWd1cmF0aW9uIHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBlYWNoIHJlcXVpcmVkIGxvdyBjb2RlIGludGVncmF0aW9uIGFuZFxuICogY3JlYXRlcyBhIGxpc3Qgb2YgbG93IGNvZGUgaW50ZWdyYXRpb25zIHRoYXQgc3RpbGwgbmVlZCB0aGVpciBzZWFyY2ggaW50ZWdyYXRpb24gaW5pdGlhbGl6ZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGluaXRpYWxpemVMb3dDb2RlSW50ZWdyYXRpb25zKCk6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBsb3dDb2RlRGVmaW5pdGlvbnMgPSBsb3dDb2RlSW50ZWdyYXRpb25Qcm92aWRlck9wdGlvbnM/Lm1vZHVsZXMgPz8gW107XG5cdGlmIChsb3dDb2RlRGVmaW5pdGlvbnMubGVuZ3RoID4gMCkge1xuXHRcdGxvZ2dlci5pbmZvKFwiSW5pdGlhbGl6aW5nIGRlZmluZWQgYW5kIGVuYWJsZWQgTG93IENvZGUgSW50ZWdyYXRpb25zLlwiKTtcblx0fVxuXHRmb3IgKGNvbnN0IGxvd0NvZGVEZWZpbml0aW9uIG9mIGxvd0NvZGVEZWZpbml0aW9ucykge1xuXHRcdGlmIChpc0VtcHR5KGxvd0NvZGVEZWZpbml0aW9uLmVuYWJsZWQpIHx8IGxvd0NvZGVEZWZpbml0aW9uLmVuYWJsZWQpIHtcblx0XHRcdGlmIChpc0VtcHR5KGxvd0NvZGVJbnRlZ3JhdGlvbnMpKSB7XG5cdFx0XHRcdGxvd0NvZGVJbnRlZ3JhdGlvbnMgPSB7fTtcblx0XHRcdH1cblx0XHRcdHN3aXRjaCAobG93Q29kZURlZmluaXRpb24udHlwZSkge1xuXHRcdFx0XHRjYXNlIFwibXMzNjVcIjoge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRpZiAoIWlzRW1wdHkobG93Q29kZURlZmluaXRpb24uZGF0YSkpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbXMzNjVJbnRlZ3JhdGlvbiA9IG5ldyBJbnRlZ3JhdGlvbnMuTWljcm9zb2Z0MzY1V29ya2Zsb3dJbnRlZ3JhdGlvbihcblx0XHRcdFx0XHRcdFx0XHRsb3dDb2RlRGVmaW5pdGlvbi5kYXRhXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdGxvd0NvZGVJbnRlZ3JhdGlvbnNbbG93Q29kZURlZmluaXRpb24uaWRdID0gbXMzNjVJbnRlZ3JhdGlvbjtcblx0XHRcdFx0XHRcdFx0bG9nZ2VyLmluZm8oYEluaXRpYWxpemVkIGxvdyBjb2RlIGludGVncmF0aW9uIHdpdGggaWQ6ICR7bG93Q29kZURlZmluaXRpb24uaWR9YCk7XG5cdFx0XHRcdFx0XHRcdGlmIChsb3dDb2RlRGVmaW5pdGlvbi5kYXRhPy53b3JrZmxvd3M/LnNlYXJjaD8uZGlzYWJsZUF1dG9Jbml0aWFsaXplKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVxdWlyZXNTZWFyY2hJbml0aWFsaXphdGlvbi5wdXNoKGxvd0NvZGVEZWZpbml0aW9uLmlkKTtcblx0XHRcdFx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0XHRcdFx0XHRcdGBMb3cgQ29kZSBJbnRlZ3JhdGlvbiB3aXRoIGlkOiAke2xvd0NvZGVEZWZpbml0aW9uLmlkfSBpcyBub3QgYXV0byByZWdpc3RlcmVkIGFnYWluc3QgaG9tZS4gQWRkaW5nIHRvIHRoZSBxdWV1ZSBmb3IgbGF0ZXIgaW5pdGlhbGl6YXRpb24uYFxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdFx0XHRcdGBVbmFibGUgdG8gaW5pdGlhbGl6ZSBMb3cgQ29kZSBJbnRlZ3JhdGlvbiB3aXRoIGlkOiAke2xvd0NvZGVEZWZpbml0aW9uLmlkfSBhcyBpdCBkaWQgbm90IGhhdmUgYSBjb25maWd1cmF0aW9uIHNwZWNpZmllZCB2aWEgaXQncyBkYXRhIHNldHRpbmcuYFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0XHRsb2dnZXIuZXJyb3IoXG5cdFx0XHRcdFx0XHRcdGBFcnJvciBpbml0aWFsaXppbmcgTG93IENvZGUgSW50ZWdyYXRpb24gd2l0aCBpZDogJHtsb3dDb2RlRGVmaW5pdGlvbi5pZH0gYW5kIHR5cGU6ICR7bG93Q29kZURlZmluaXRpb24udHlwZX1gLFxuXHRcdFx0XHRcdFx0XHRlcnJvclxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGVmYXVsdDoge1xuXHRcdFx0XHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFx0XHRcdGBVbmFibGUgdG8gYWRkIExvdyBDb2RlIEludGVncmF0aW9uIGRlZmluaXRpb24gd2l0aCBpZDogJHtsb3dDb2RlRGVmaW5pdGlvbi5pZH0gYXMgdGhlIHR5cGU6ICR7bG93Q29kZURlZmluaXRpb24udHlwZX0gaXMgdW5zdXBwb3J0ZWQuYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIHRoZSBMb3cgQ29kZSBJbnRlZ3JhdGlvbiBwcm92aWRlci5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSBMb3cgQ29kZSBJbnRlZ3JhdGlvbiBQcm92aWRlci5cbiAqIEByZXR1cm5zIE5vdGhpbmcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KG9wdGlvbnM6IExvd0NvZGVJbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoIWlzRW1wdHkob3B0aW9ucykpIHtcblx0XHRsb2dnZXIuaW5mbyhcIkxvd0NvZGVJbnRlZ3JhdGlvblByb3ZpZGVyIGluaXRpYWxpemVkIHdpdGggb3B0aW9ucy5cIik7XG5cdFx0bG93Q29kZUludGVncmF0aW9uUHJvdmlkZXJPcHRpb25zID0gb3B0aW9ucztcblx0fVxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIGxvdyBjb2RlIGludGVncmF0aW9uIGluc3RhbmNlcyBpZiBub3QgYWxyZWFkeSBpbml0aWFsaXplZCBhbmRcbiAqIHJldHVybnMgdGhlbSBhcyBhbiBhcnJheSBvZiBpbnN0YW5jZXMuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBXb3JrZmxvd0ludGVncmF0aW9ucy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyKCk6IFByb21pc2U8V29ya2Zsb3dJbnRlZ3JhdGlvbltdPiB7XG5cdGlmIChpc0VtcHR5KGxvd0NvZGVJbnRlZ3JhdGlvbnMpKSB7XG5cdFx0YXdhaXQgaW5pdGlhbGl6ZUxvd0NvZGVJbnRlZ3JhdGlvbnMoKTtcblx0fVxuXHRpZiAoaXNFbXB0eShsb3dDb2RlSW50ZWdyYXRpb25zKSkge1xuXHRcdHJldHVybiBbXTtcblx0fVxuXHRyZXR1cm4gT2JqZWN0LnZhbHVlcyhsb3dDb2RlSW50ZWdyYXRpb25zKTtcbn1cblxuLyoqXG4gKiBDYWxsZWQgaW4gb3JkZXIgdG8gaW5pdGlhbGl6ZSBhbnkgbG93IGNvZGUgaW50ZWdyYXRpb25zIHRoYXQgd2VyZSBpbnN0YW50aWF0ZWQgYnV0IG5vdCBub3QgYXV0b21hdGljYWxseSBpbml0aWFsaXplZC5cbiAqIEByZXR1cm5zIE5vdGhpbmcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0aWFsaXplV29ya2Zsb3dzKCk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAocmVxdWlyZXNTZWFyY2hJbml0aWFsaXphdGlvbi5sZW5ndGggPiAwKSB7XG5cdFx0bG9nZ2VyLmluZm8oYFJlZ2lzdGVyaW5nICR7cmVxdWlyZXNTZWFyY2hJbml0aWFsaXphdGlvbi5sZW5ndGh9IGxvdyBjb2RlIGludGVncmF0aW9ucyBhZ2FpbnN0IEhvbWVgKTtcblx0XHRmb3IgKGNvbnN0IGlkIG9mIHJlcXVpcmVzU2VhcmNoSW5pdGlhbGl6YXRpb24pIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBJbml0aWFsaXppbmcgd29ya2Zsb3cgc2VhcmNoIGZvciBsb3cgY29kZSBpbnRlZ3JhdGlvbiAke2lkfS5gKTtcblx0XHRcdFx0YXdhaXQgbG93Q29kZUludGVncmF0aW9uc1tpZF0/LmluaXRpYWxpemVXb3JrZmxvdyhcInNlYXJjaFwiKTtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYFdvcmtmbG93IHNlYXJjaCBmb3IgbG93IGNvZGUgaW50ZWdyYXRpb24gJHtpZH0gaW5pdGlhbGl6ZWQuYCk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXG5cdFx0XHRcdFx0YEVycm9yIGluaXRpYWxpemluZyBsb3cgY29kZSBpbnRlZ3JhdGlvbiB3aXRoIGlkOiAke2lkfS4gSXQgaGFkIHRoZSBmb2xsb3dpbmcgZXJyb3JgLFxuXHRcdFx0XHRcdGVycm9yXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJlcXVpcmVzU2VhcmNoSW5pdGlhbGl6YXRpb24ubGVuZ3RoID0gMDtcblx0fVxufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBvciBub3Qgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgcmVnaXN0ZXJlZCBsb3cgY29kZSBpbnRlZ3JhdGlvbiB0aGF0IGhhcyBiZWVuIGluaXRpYWxpemVkLlxuICogQHJldHVybnMgTm90aGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzUmVnaXN0ZXJlZEludGVncmF0aW9ucygpOiBib29sZWFuIHtcblx0cmV0dXJuIChcblx0XHQhaXNFbXB0eShsb3dDb2RlSW50ZWdyYXRpb25zKSAmJlxuXHRcdE9iamVjdC52YWx1ZXMobG93Q29kZUludGVncmF0aW9ucyk/Lmxlbmd0aCA+IDAgJiZcblx0XHRyZXF1aXJlc1NlYXJjaEluaXRpYWxpemF0aW9uLmxlbmd0aCA9PT0gMFxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBSZWdpc3RyYXRpb25NZXRhSW5mbyB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2VcIjtcbmltcG9ydCB7XG5cdFZFUlNJT04sXG5cdGRlcmVnaXN0ZXIgYXMgZGVyZWdpc3RlclBsYXRmb3JtLFxuXHRoaWRlIGFzIGhpZGVOb3RpZmljYXRpb25zLFxuXHRwcm92aWRlcixcblx0cmVnaXN0ZXIgYXMgcmVnaXN0ZXJQbGF0Zm9ybSxcblx0c2hvdyBhcyBzaG93Tm90aWZpY2F0aW9ucyxcblx0dHlwZSBTaG93T3B0aW9uc1xufSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlL25vdGlmaWNhdGlvbnNcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuLi9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB7IGdldFNldHRpbmdzIH0gZnJvbSBcIi4uL3NldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IE5vdGlmaWNhdGlvblByb3ZpZGVyT3B0aW9ucyB9IGZyb20gXCIuLi9zaGFwZXMvbm90aWZpY2F0aW9uLXNoYXBlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJOb3RpZmljYXRpb25zXCIpO1xuXG5sZXQgbm90aWZpY2F0aW9uc1Byb3ZpZGVyT3B0aW9uczogTm90aWZpY2F0aW9uUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xubGV0IG5vdGlmaWNhdGlvbnNSZWdpc3RlcmVkID0gZmFsc2U7XG5sZXQgbWV0YUluZm86IFJlZ2lzdHJhdGlvbk1ldGFJbmZvO1xuXG4vKipcbiAqIFJlZ2lzdGVyIHRoZSBob21lIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgaG9tZSBwcm92aWRlci5cbiAqIEByZXR1cm5zIFRoZSByZWdpc3RyYXRpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWdpc3Rlcihcblx0b3B0aW9uczogTm90aWZpY2F0aW9uUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPFJlZ2lzdHJhdGlvbk1ldGFJbmZvPiB7XG5cdGlmICghbm90aWZpY2F0aW9uc1JlZ2lzdGVyZWQpIHtcblx0XHRub3RpZmljYXRpb25zUHJvdmlkZXJPcHRpb25zID0gb3B0aW9ucztcblx0XHRsb2dnZXIuaW5mbyhcIkdhdGhlcmluZyBub3RpZmljYXRpb24gY2VudGVyIHN0YXR1cyBhbmQgdmVyc2lvbi5cIik7XG5cblx0XHRjb25zdCBwcm92aWRlclN0YXR1cyA9IGF3YWl0IHByb3ZpZGVyLmdldFN0YXR1cygpO1xuXHRcdG1ldGFJbmZvID0ge1xuXHRcdFx0d29ya3NwYWNlVmVyc2lvbjogcHJvdmlkZXJTdGF0dXMudmVyc2lvbiA/PyBcIlwiLFxuXHRcdFx0Y2xpZW50QVBJVmVyc2lvbjogVkVSU0lPTlxuXHRcdH07XG5cblx0XHRsb2dnZXIuaW5mbyhcIlZlcnNpb25pbmcgaW5mb3JtYXRpb24gY29sbGVjdGVkLlwiLCBtZXRhSW5mbyk7XG5cblx0XHRpZiAocHJvdmlkZXJTdGF0dXMuY29ubmVjdGVkKSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIkNvbm5lY3RlZCB0byB0aGUgTm90aWZpY2F0aW9uIENlbnRlci4gUmVnaXN0ZXJpbmcgcGxhdGZvcm0gd2l0aCBOb3RpZmljYXRpb24gQ2VudGVyLlwiKTtcblx0XHRcdGNvbnN0IHNldHRpbmdzID0gYXdhaXQgZ2V0U2V0dGluZ3MoKTtcblx0XHRcdGNvbnN0IG5vdGlmaWNhdGlvblBsYXRmb3JtU2V0dGluZ3MgPSBzZXR0aW5ncz8ubm90aWZpY2F0aW9uUHJvdmlkZXI7XG5cdFx0XHRpZiAoIWlzRW1wdHkobm90aWZpY2F0aW9uUGxhdGZvcm1TZXR0aW5ncykpIHtcblx0XHRcdFx0Ly8gdXNlIGEgcHJvbWlzZS50aGVuIGluc3RlYWQgb2YgYXdhaXQgYXMgd2UgZG8gbm90IHdhbnQgdG8gZGVsYXkgdGhlIHN0YXJ0IHVwIG9mIHRoZSBwbGF0Zm9ybVxuXHRcdFx0XHRyZWdpc3RlclBsYXRmb3JtKG5vdGlmaWNhdGlvblBsYXRmb3JtU2V0dGluZ3MpXG5cdFx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdFx0bm90aWZpY2F0aW9uc1JlZ2lzdGVyZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0bG9nZ2VyLmluZm8oXCJSZWdpc3RlcmVkIG5vdGlmaWNhdGlvbnNcIik7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaCgocmVhc29uKSA9PiB7XG5cdFx0XHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJXZSB3ZXJlIHVuYWJsZSB0byByZWdpc3RlciB3aXRoIE5vdGlmaWNhdGlvbiBDZW50ZXJcIiwgcmVhc29uKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdFwiVW5hYmxlIHRvIHJlZ2lzdGVyIG5vdGlmaWNhdGlvbnMgcGxhdGZvcm0gYXMgd2UgZG8gbm90IGhhdmUgaXQgZGVmaW5lZCBhcyBwYXJ0IG9mIHNldHRpbmdzXCJcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJVbmFibGUgdG8gcmVnaXN0ZXIgYWdhaW5zdCBub3RpZmljYXRpb24gY2VudGVyIGFzIHRoZSBjZW50ZXIgd2Fzbid0IGNvbm5lY3RlZC5cIik7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtZXRhSW5mbztcbn1cblxuLyoqXG4gKiBEZXJlZ2lzdGVyIHRoZSBub3RpZmljYXRpb25zIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlcmVnaXN0ZXIoKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChub3RpZmljYXRpb25zUmVnaXN0ZXJlZCkge1xuXHRcdG5vdGlmaWNhdGlvbnNSZWdpc3RlcmVkID0gZmFsc2U7XG5cblx0XHRpZiAoIWlzRW1wdHkobm90aWZpY2F0aW9uc1Byb3ZpZGVyT3B0aW9ucykpIHtcblx0XHRcdGxvZ2dlci5pbmZvKFwiRGVyZWdpc3RlciBwbGF0Zm9ybSBmcm9tIG5vdGlmaWNhdGlvbnNcIik7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRhd2FpdCBkZXJlZ2lzdGVyUGxhdGZvcm0obm90aWZpY2F0aW9uc1Byb3ZpZGVyT3B0aW9ucy5pZCk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJVbmFibGUgdG8gZGVyZWdpc3RlciBwbGF0Zm9ybSBmcm9tIG5vdGlmaWNhdGlvbnMuXCIsIGVycm9yKTtcblx0XHRcdH1cblx0XHRcdG5vdGlmaWNhdGlvbnNQcm92aWRlck9wdGlvbnMgPSB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcIlVuYWJsZSB0byBkZXJlZ2lzdGVyIHBsYXRmb3JtIG5vdGlmaWNhdGlvbnMgYXMgd2UgZG8gbm90IGhhdmUgbm90aWZpY2F0aW9ucyBkZWZpbmVkIGFzIHBhcnQgb2Ygc2V0dGluZ3NcIlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBTaG93IHRoZSBub3RpZmljYXRpb24gY2VudGVyLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHNob3dpbmcuXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hvdyhvcHRpb25zPzogU2hvd09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcblx0bG9nZ2VyLmluZm8oXCJTaG93IE5vdGlmaWNhdGlvbnMgY2FsbGVkLlwiKTtcblx0cmV0dXJuIHNob3dOb3RpZmljYXRpb25zKG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIEhpZGUgdGhlIG5vdGlmaWNhdGlvbiBjZW50ZXIuXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGlkZSgpOiBQcm9taXNlPHZvaWQ+IHtcblx0bG9nZ2VyLmluZm8oXCJIaWRlIE5vdGlmaWNhdGlvbnMgY2FsbGVkLlwiKTtcblx0cmV0dXJuIGhpZGVOb3RpZmljYXRpb25zKCk7XG59XG4iLCJpbXBvcnQge1xuXHRTdG9yZWZyb250LFxuXHRTdG9yZWZyb250VGVtcGxhdGUsXG5cdHR5cGUgUmVnaXN0cmF0aW9uTWV0YUluZm8sXG5cdHR5cGUgU3RvcmVCdXR0b25Db25maWcsXG5cdHR5cGUgU3RvcmVSZWdpc3RyYXRpb24sXG5cdHR5cGUgU3RvcmVmcm9udERldGFpbGVkTmF2aWdhdGlvbkl0ZW0sXG5cdHR5cGUgU3RvcmVmcm9udEZvb3Rlcixcblx0dHlwZSBTdG9yZWZyb250TGFuZGluZ1BhZ2UsXG5cdHR5cGUgU3RvcmVmcm9udE5hdmlnYXRpb25JdGVtLFxuXHR0eXBlIFN0b3JlZnJvbnROYXZpZ2F0aW9uU2VjdGlvblxufSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlXCI7XG5pbXBvcnQgeyBQTEFURk9STV9BQ1RJT05fSURTIH0gZnJvbSBcIi4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEFwcCwgZ2V0QXBwcywgZ2V0QXBwc0J5VGFnIH0gZnJvbSBcIi4uL2FwcHNcIjtcbmltcG9ydCAqIGFzIGZhdm9yaXRlUHJvdmlkZXIgZnJvbSBcIi4uL2Zhdm9yaXRlXCI7XG5pbXBvcnQgeyBsYXVuY2ggfSBmcm9tIFwiLi4vbGF1bmNoXCI7XG5pbXBvcnQgeyBzdWJzY3JpYmVMaWZlY3ljbGVFdmVudCwgdW5zdWJzY3JpYmVMaWZlY3ljbGVFdmVudCB9IGZyb20gXCIuLi9saWZlY3ljbGVcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuLi9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIHsgUGxhdGZvcm1BcHAgfSBmcm9tIFwiLi4vc2hhcGVzL2FwcC1zaGFwZXNcIjtcbmltcG9ydCB7IEZBVk9SSVRFX1RZUEVfTkFNRV9BUFAsIHR5cGUgRmF2b3JpdGVFbnRyeSB9IGZyb20gXCIuLi9zaGFwZXMvZmF2b3JpdGUtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IEZhdm9yaXRlQ2hhbmdlZExpZmVjeWNsZVBheWxvYWQgfSBmcm9tIFwiLi4vc2hhcGVzL2xpZmVjeWNsZS1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0U3RvcmVmcm9udFByb3ZpZGVyT3B0aW9ucyxcblx0U3RvcmVmcm9udFNldHRpbmdzTGFuZGluZ1BhZ2VSb3csXG5cdFN0b3JlZnJvbnRTZXR0aW5nc05hdmlnYXRpb25JdGVtXG59IGZyb20gXCIuLi9zaGFwZXMvc3RvcmUtc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5LCBpc1N0cmluZ1ZhbHVlLCByYW5kb21VVUlEIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmNvbnN0IFRPUF9ST1dfTElNSVQgPSA0O1xuY29uc3QgTUlERExFX1JPV19MSU1JVCA9IDY7XG5jb25zdCBCT1RUT01fUk9XX0xJTUlUID0gMztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiU3RvcmVcIik7XG5cbmxldCBzdG9yZVByb3ZpZGVyT3B0aW9uczogU3RvcmVmcm9udFByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZDtcbmxldCByZWdpc3RyYXRpb25JbmZvOiBTdG9yZVJlZ2lzdHJhdGlvbiB8IHVuZGVmaW5lZDtcbmxldCBmYXZDaGFuZ2VkU3Vic2NyaXB0aW9uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBSZWdpc3RlciB0aGUgc3RvcmUgY29tcG9uZW50LlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSBzdG9yZSBwcm92aWRlci5cbiAqIEByZXR1cm5zIFRoZSByZWdpc3RyYXRpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWdpc3Rlcihcblx0b3B0aW9uczogU3RvcmVmcm9udFByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZFxuKTogUHJvbWlzZTxSZWdpc3RyYXRpb25NZXRhSW5mbyB8IHVuZGVmaW5lZD4ge1xuXHRpZiAob3B0aW9ucykge1xuXHRcdHN0b3JlUHJvdmlkZXJPcHRpb25zID0gb3B0aW9ucztcblx0XHRsb2dnZXIuaW5mbyhcIkluaXRpYWxpemluZyB0aGUgc3RvcmVmcm9udCBwcm92aWRlclwiKTtcblxuXHRcdGlmIChpc1N0b3JlZnJvbnRDb25maWd1cmF0aW9uVmFsaWQoKSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmVnaXN0cmF0aW9uSW5mbyA9IGF3YWl0IFN0b3JlZnJvbnQucmVnaXN0ZXIoe1xuXHRcdFx0XHRcdGlkOiBzdG9yZVByb3ZpZGVyT3B0aW9ucy5pZCxcblx0XHRcdFx0XHR0aXRsZTogc3RvcmVQcm92aWRlck9wdGlvbnMudGl0bGUsXG5cdFx0XHRcdFx0aWNvbjogc3RvcmVQcm92aWRlck9wdGlvbnMuaWNvbixcblx0XHRcdFx0XHRnZXROYXZpZ2F0aW9uOiBhc3luYyAoKSA9PiBnZXROYXZpZ2F0aW9uKCksXG5cdFx0XHRcdFx0Z2V0TGFuZGluZ1BhZ2U6IGFzeW5jICgpID0+IGdldExhbmRpbmdQYWdlKCksXG5cdFx0XHRcdFx0Z2V0Rm9vdGVyOiBhc3luYyAoKSA9PiBnZXRGb290ZXIoKSxcblx0XHRcdFx0XHRnZXRBcHBzOiBhc3luYyAoKSA9PiBhZGRCdXR0b25zKGF3YWl0IGdldEFwcHMoeyBwcml2YXRlOiBmYWxzZSB9KSksXG5cdFx0XHRcdFx0bGF1bmNoQXBwOiBhc3luYyAoYXBwKSA9PiB7XG5cdFx0XHRcdFx0XHRhd2FpdCBsYXVuY2goYXBwIGFzIFBsYXRmb3JtQXBwKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGZhdkNoYW5nZWRTdWJzY3JpcHRpb25JZCA9IHN1YnNjcmliZUxpZmVjeWNsZUV2ZW50PEZhdm9yaXRlQ2hhbmdlZExpZmVjeWNsZVBheWxvYWQ+KFxuXHRcdFx0XHRcdFwiZmF2b3JpdGUtY2hhbmdlZFwiLFxuXHRcdFx0XHRcdGFzeW5jIChfOiB1bmtub3duLCBwYXlsb2FkPzogRmF2b3JpdGVDaGFuZ2VkTGlmZWN5Y2xlUGF5bG9hZCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKCFpc0VtcHR5KHBheWxvYWQpKSB7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IHVwZGF0ZUFwcEZhdm9yaXRlQnV0dG9ucyhwYXlsb2FkKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJWZXJzaW9uOlwiLCByZWdpc3RyYXRpb25JbmZvKTtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJTdG9yZWZyb250IHByb3ZpZGVyIGluaXRpYWxpemVkXCIpO1xuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdGxvZ2dlci5lcnJvcihcIkFuIGVycm9yIHdhcyBlbmNvdW50ZXJlZCB3aGlsZSB0cnlpbmcgdG8gcmVnaXN0ZXIgdGhlIGNvbnRlbnQgc3RvcmUgcHJvdmlkZXJcIiwgZXJyKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmVnaXN0cmF0aW9uSW5mbztcbn1cblxuLyoqXG4gKiBEZXJlZ2lzdGVyIHRoZSBzdG9yZSBjb21wb25lbnQuXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVyZWdpc3RlcigpOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKHJlZ2lzdHJhdGlvbkluZm8pIHtcblx0XHRsb2dnZXIuaW5mbyhcIkFib3V0IHRvIGRlcmVnaXN0ZXIgU3RvcmUuXCIpO1xuXHRcdGlmIChpc1N0cmluZ1ZhbHVlKGZhdkNoYW5nZWRTdWJzY3JpcHRpb25JZCkpIHtcblx0XHRcdHVuc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQoZmF2Q2hhbmdlZFN1YnNjcmlwdGlvbklkLCBcImZhdm9yaXRlLWNoYW5nZWRcIik7XG5cdFx0XHRmYXZDaGFuZ2VkU3Vic2NyaXB0aW9uSWQgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmIChzdG9yZVByb3ZpZGVyT3B0aW9ucykge1xuXHRcdFx0YXdhaXQgU3RvcmVmcm9udC5kZXJlZ2lzdGVyKHN0b3JlUHJvdmlkZXJPcHRpb25zLmlkKTtcblx0XHRcdHJlZ2lzdHJhdGlvbkluZm8gPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XCJVbmFibGUgdG8gY2FsbCBzdG9yZSBkZXJlZ2lzdGVyIGFzIHRoZXJlIGlzIGFuIGluZGljYXRpb24gaXQgd2FzIG5ldmVyIHJlZ2lzdGVyZWQgc3VjY2Vzc2Z1bGx5LlwiXG5cdFx0KTtcblx0fVxufVxuXG4vKipcbiAqIFNob3cgdGhlIHN0b3JlIGNvbXBvbmVudC5cbiAqIEByZXR1cm5zIE5vdGhpbmcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaG93KCk6IFByb21pc2U8dm9pZD4ge1xuXHRsb2dnZXIuaW5mbyhcIlNob3dpbmcgdGhlIHN0b3JlLlwiKTtcblx0cmV0dXJuIFN0b3JlZnJvbnQuc2hvdygpO1xufVxuXG4vKipcbiAqIEhpZGUgdGhlIGhvbWUgY29tcG9uZW50LlxuICogQHJldHVybnMgTm90aGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhpZGUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdGxvZ2dlci5pbmZvKFwiSGlkaW5nIHRoZSBzdG9yZS5cIik7XG5cdHJldHVybiBTdG9yZWZyb250LmhpZGUoKTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgd2hlbiBhIG5hdmlnYXRpb24gaXRlbSBvciBzZWN0aW9uIGhhc24ndCBiZWVuIGNvbmZpZ3VyZWQgd2l0aCBhbiBJRC4gVGhpcyBpcyB0byBzaW1wbGlmeVxuICogY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkZW1vLiBJbiBhIHJlYWwgYXBwbGljYXRpb24geW91IHdvdWxkIG5lZWQgYW4gaWRlbXBvdGVudCBhbmQgdW5pcXVlIElEICh0aGluayBHVUlEKSB0aGF0XG4gKiBkb2Vzbid0IGNoYW5nZSBmb3IgdGhhdCBuYXZpZ2F0aW9uIGl0ZW0vc2VjdGlvbiByZWdhcmRsZXNzIG9mIGhvdyBtYW55IHRpbWVzIGl0IGlzIHJlZ2VuZXJhdGVkIChlLmcuIG1vcmUgaXRlbXMgY2FuXG4gKiBiZSBhZGRlZCB0byB0aGUgaXRlbS9zZWN0aW9uIGJ1dCB0aGUgSUQgc3RheXMgdGhlIHNhbWUpLiBBcyB5b3UgbmF2aWdhdGUgYXJvdW5kIHRoZSBzdG9yZSB0aGlzIElEIGlzIHVzZWQgYXMgYSByb3V0ZS5cbiAqIFNvIGlmIGEgdXNlciBjbGlja3Mgb24gYSBsaW5rLCBuYXZpZ2F0ZXMgdG8gYSBuZXcgcGFnZSBhbmQgdGhlIHJlLXJlcXVlc3RlZCBuYXZpZ2F0aW9uIGl0ZW0gaGFzIGEgZGlmZmVyZW50IElEIHRoZW5cbiAqIHRoZSBzdG9yZSB3aWxsIG5vdCBiZSBhYmxlIHRvIGZpbmQgYSBtYXRjaCBhbmQgaXQgd29uJ3QgYmUgYWJsZSB0byByZW5kZXIgdGhlIG5hdmlnYXRpb24gaXRlbS4gQSByZWFsIGFwcGxpY2F0aW9uXG4gKiB3b3VsZCBub3QgdXNlIHRoaXMgYXBwcm9hY2ggKGFzIGFuIHVwZGF0ZSB0byB0aGUgdGFnIGxpc3Qgd291bGQgcmVzdWx0IGluIGEgbmV3IElEIHdoaWNoIHdvdWxkIGZhaWwgaWYgdGhlIGNvbmZpZyB3YXNcbiAqIGZldGNoZWQgZnJvbSBhIHNlcnZlciBhbmQgbm90IGEgbWFuaWZlc3QpLlxuICogQHBhcmFtIHRpdGxlIFRoZSB0aXRsZSBvZiB0aGUgaXRlbS5cbiAqIEBwYXJhbSB0YWdzIFRoZSB0YWdzIGZvciB0aGUgaXRlbS5cbiAqIEByZXR1cm5zIEEgY2FsY3VsYXRlZCBpZC5cbiAqL1xuZnVuY3Rpb24gZ2V0SWQodGl0bGU6IHN0cmluZywgdGFnczogc3RyaW5nW10gPSBbXSk6IHN0cmluZyB7XG5cdGNvbnN0IHNlYXJjaCA9IFwiIFwiO1xuXHRjb25zdCByZXBsYWNlV2l0aCA9IFwiLVwiO1xuXHRsZXQgcmVzdWx0ID0gdGl0bGUucmVwbGFjZUFsbChzZWFyY2gsIHJlcGxhY2VXaXRoKTtcblx0cmVzdWx0ICs9IGAtJHt0YWdzLmpvaW4oXCItXCIpfWA7XG5cdHJldHVybiByZXN1bHQudG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSB0aGUgc3RvcmUgY29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgdmFsaWQuXG4gKi9cbmZ1bmN0aW9uIGlzU3RvcmVmcm9udENvbmZpZ3VyYXRpb25WYWxpZCgpOiBib29sZWFuIHtcblx0Y29uc3QgaWRMaXN0OiBzdHJpbmdbXSA9IFtdO1xuXHRsZXQgaGFzRHVwbGljYXRlSWRzID0gZmFsc2U7XG5cblx0aWYgKFxuXHRcdGlzRW1wdHkoc3RvcmVQcm92aWRlck9wdGlvbnMpIHx8XG5cdFx0aXNFbXB0eShzdG9yZVByb3ZpZGVyT3B0aW9ucy5pZCkgfHxcblx0XHRpc0VtcHR5KHN0b3JlUHJvdmlkZXJPcHRpb25zLnRpdGxlKSB8fFxuXHRcdChpc0VtcHR5KHN0b3JlUHJvdmlkZXJPcHRpb25zLmZvb3RlcikgJiZcblx0XHRcdCFpc0VtcHR5KHN0b3JlUHJvdmlkZXJPcHRpb25zLmxhbmRpbmdQYWdlKSAmJlxuXHRcdFx0IWlzRW1wdHkoc3RvcmVQcm92aWRlck9wdGlvbnMubGFuZGluZ1BhZ2UudG9wUm93KSAmJlxuXHRcdFx0IWlzRW1wdHkoc3RvcmVQcm92aWRlck9wdGlvbnMubGFuZGluZ1BhZ2UubWlkZGxlUm93KSAmJlxuXHRcdFx0IWlzRW1wdHkoc3RvcmVQcm92aWRlck9wdGlvbnMubGFuZGluZ1BhZ2UuYm90dG9tUm93KSAmJlxuXHRcdFx0IWlzRW1wdHkoc3RvcmVQcm92aWRlck9wdGlvbnMubmF2aWdhdGlvbikpXG5cdCkge1xuXHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFwiU3RvcmVmcm9udFByb3ZpZGVyIGlzIG5vdCBjb3JyZWN0bHkgY29uZmlndXJlZCBpbiB0aGUgY3VzdG9tU2V0dGluZ3Mgb2YgdGhpcyBtYW5pZmVzdC4gWW91IG11c3QgZW5zdXJlIHRoYXQgc3RvcmVmcm9udFByb3ZpZGVyIGlzIGRlZmluZWQsIHRoYXQgaXQgaGFzIGFuIGlkIGFuZCB0aXRsZSBhbmQgdGhhdCB0aGUgZm9vdGVyLCBsYW5kaW5nUGFnZSAodG9wIHJvdywgbWlkZGxlIHJvdyBhbmQgYm90dG9tIHJvdykgYW5kIG5hdmlnYXRpb24gc2VjdGlvbnMgaGF2ZSBiZWVuIGRlZmluZWRcIlxuXHRcdCk7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Y29uc3Qgd2FybmluZ01lc3NhZ2UgPVxuXHRcdFwiVGhlIGlkIGlzIG5vdCBkZWZpbmVkLiBUaGlzIGRlbW8gd2lsbCBnZW5lcmF0ZSBhbiBpZCBiYXNlZCBvbiB0aXRsZSBidXQgeW91IHNob3VsZCBoYXZlIGEgdW5pcXVlIGFuZCBpZGVtcG90ZW50IGlkIHdoZW4gYnVpbGRpbmcgeW91ciBvd24gc3RvcmVcIjtcblxuXHRsb2dnZXIuaW5mbyhcIlZhbGlkYXRpbmcgc2V0dGluZ3Mgc3RvcmVmcm9udFByb3ZpZGVyIG5hdmlnYXRpb24gY29uZmlnXCIpO1xuXHRjb25zdCBuYXZpZ2F0aW9uID0gc3RvcmVQcm92aWRlck9wdGlvbnMubmF2aWdhdGlvbjtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuYXZpZ2F0aW9uLmxlbmd0aDsgaSsrKSB7XG5cdFx0aGFzRHVwbGljYXRlSWRzID0gdmFsaWRhdGVJZChcblx0XHRcdG5hdmlnYXRpb25baV0uaWQsXG5cdFx0XHRgc3RvcmVmcm9udFByb3ZpZGVyLm5hdmlnYXRpb25bJHtpfV0uaWRgLFxuXHRcdFx0d2FybmluZ01lc3NhZ2UsXG5cdFx0XHRpZExpc3QsXG5cdFx0XHRoYXNEdXBsaWNhdGVJZHNcblx0XHQpO1xuXHRcdGNvbnN0IGl0ZW1zID0gbmF2aWdhdGlvbltpXS5pdGVtcztcblx0XHRmb3IgKGxldCBuID0gMDsgbiA8IGl0ZW1zLmxlbmd0aDsgbisrKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGVJZHMgPSB2YWxpZGF0ZUlkKFxuXHRcdFx0XHRpdGVtc1tuXS5pZCxcblx0XHRcdFx0YHN0b3JlZnJvbnRQcm92aWRlci5uYXZpZ2F0aW9uWyR7aX1dLml0ZW1zWyR7bn1dLmlkYCxcblx0XHRcdFx0d2FybmluZ01lc3NhZ2UsXG5cdFx0XHRcdGlkTGlzdCxcblx0XHRcdFx0aGFzRHVwbGljYXRlSWRzXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdGxvZ2dlci5pbmZvKFwiVmFsaWRhdGluZyBzZXR0aW5ncyBzdG9yZWZyb250UHJvdmlkZXIgbGFuZGluZyBwYWdlIGhlcm8gY29uZmlnXCIpO1xuXHRjb25zdCBsYW5kaW5nUGFnZSA9IHN0b3JlUHJvdmlkZXJPcHRpb25zLmxhbmRpbmdQYWdlO1xuXG5cdGlmICghaXNFbXB0eShsYW5kaW5nUGFnZT8uaGVybz8uY3RhKSkge1xuXHRcdGhhc0R1cGxpY2F0ZUlkcyA9IHZhbGlkYXRlSWQoXG5cdFx0XHRsYW5kaW5nUGFnZT8uaGVybz8uY3RhLmlkLFxuXHRcdFx0XCJzdG9yZWZyb250UHJvdmlkZXIubGFuZGluZ1BhZ2UuaGVyby5jdGEuaWRcIixcblx0XHRcdHdhcm5pbmdNZXNzYWdlLFxuXHRcdFx0aWRMaXN0LFxuXHRcdFx0aGFzRHVwbGljYXRlSWRzXG5cdFx0KTtcblx0fVxuXG5cdGxvZ2dlci5pbmZvKFwiVmFsaWRhdGluZyBzZXR0aW5ncyBzdG9yZWZyb250UHJvdmlkZXIgbGFuZGluZyBwYWdlIHRvcCByb3cgY29uZmlnXCIpO1xuXHRjb25zdCB0b3BSb3cgPSBsYW5kaW5nUGFnZS50b3BSb3c7XG5cblx0aWYgKCFpc0VtcHR5KHRvcFJvdy5pdGVtcykpIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRvcFJvdy5pdGVtcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aGFzRHVwbGljYXRlSWRzID0gdmFsaWRhdGVJZChcblx0XHRcdFx0dG9wUm93Lml0ZW1zW2ldLmlkLFxuXHRcdFx0XHRgc3RvcmVmcm9udFByb3ZpZGVyLmxhbmRpbmdQYWdlLnRvcFJvdy5pdGVtc1ske2l9XS5pZGAsXG5cdFx0XHRcdHdhcm5pbmdNZXNzYWdlLFxuXHRcdFx0XHRpZExpc3QsXG5cdFx0XHRcdGhhc0R1cGxpY2F0ZUlkc1xuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRsb2dnZXIuaW5mbyhcIlZhbGlkYXRpbmcgc2V0dGluZ3Mgc3RvcmVmcm9udFByb3ZpZGVyIGxhbmRpbmcgcGFnZSBib3R0b20gcm93IGNvbmZpZ1wiKTtcblx0Y29uc3QgYm90dG9tUm93ID0gbGFuZGluZ1BhZ2UuYm90dG9tUm93O1xuXHRpZiAoIWlzRW1wdHkoYm90dG9tUm93Lml0ZW1zKSkge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYm90dG9tUm93Lml0ZW1zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGVJZHMgPSB2YWxpZGF0ZUlkKFxuXHRcdFx0XHRib3R0b21Sb3cuaXRlbXNbaV0uaWQsXG5cdFx0XHRcdGBzdG9yZWZyb250UHJvdmlkZXIubGFuZGluZ1BhZ2UuYm90dG9tUm93Lml0ZW1zWyR7aX1dLmlkYCxcblx0XHRcdFx0d2FybmluZ01lc3NhZ2UsXG5cdFx0XHRcdGlkTGlzdCxcblx0XHRcdFx0aGFzRHVwbGljYXRlSWRzXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdGxvZ2dlci5pbmZvKFwiVmFsaWRhdGluZyBpZHMsIGNoZWNraW5nIGZvciBkdXBsaWNhdGUgaWRzXCIpO1xuXHRpZiAoaGFzRHVwbGljYXRlSWRzKSB7XG5cdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XCJZb3UgaGF2ZSBkZWZpbmVkIGR1cGxpY2F0ZSBpZHMgKHBsZWFzZSBzZWUgdGhlIG90aGVyIGVycm9yIG1lc3NhZ2VzKSB3aGljaCBjb3VsZCByZXN1bHQgaW4gc3RyYW5nZSBiZWhhdmlvciAoaWYgd2UgYXJlIHJvdXRpbmcgYnkgaWQgYW5kIHlvdSBoYXZlIHR3byBvciBtb3JlIGl0ZW1zIHRoYXQgcmVzb2x2ZSB0byB0aGUgc2FtZSBpZCB0aGVuIGl0IGNvdWxkIG5hdmlnYXRlIHRvIHNvbWV0aGluZyB1bmV4cGVjdGVkLiBQbGVhc2UgZW5zdXJlIGlkcyBhcmUgdW5pcXVlIGFuZCBpZGVtcG90ZW50XCJcblx0XHQpO1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoZSBpZC5cbiAqIEBwYXJhbSBpZCBUaGUgaWQgdG8gdmFsaWRhdGUuXG4gKiBAcGFyYW0gbmFtZXNwYWNlIFRoZSBuYW1lIHRvIHVzZSBmb3IgbWVzc2FnZSBjb250ZXh0LlxuICogQHBhcmFtIHdhcm5pbmcgVGhlIHdhcm5pbmcgdG8gZGlzcGxheS5cbiAqIEBwYXJhbSBpZExpc3QgVGhlIGxpc3QgdG8gYWRkIHRvIGlmIG5vdCBhIGR1cGxpY2F0ZS5cbiAqIEBwYXJhbSBoYXNEdXBsaWNhdGVJZHMgRG8gd2UgYWxyZWFkeSBoYXZlIGR1cGxpY2F0ZSBpZHMuXG4gKiBAcmV0dXJucyBUcnVlIGlmIGEgZHVwbGljYXRlLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUlkKFxuXHRpZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRuYW1lc3BhY2U6IHN0cmluZyxcblx0d2FybmluZzogc3RyaW5nLFxuXHRpZExpc3Q6IHN0cmluZ1tdLFxuXHRoYXNEdXBsaWNhdGVJZHM6IGJvb2xlYW5cbik6IGJvb2xlYW4ge1xuXHRpZiAoaXNFbXB0eShpZCkpIHtcblx0XHRsb2dnZXIud2FybihgJHtuYW1lc3BhY2V9OiAke3dhcm5pbmd9YCk7XG5cdH0gZWxzZSBpZiAoaWRMaXN0LmluY2x1ZGVzKGlkKSkge1xuXHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdGAke25hbWVzcGFjZX06IFRoZSBpZCBpcyB1c2VkIGluIG1vcmUgdGhhbiBvbmUgcGxhY2UuIFBsZWFzZSBoYXZlIGEgdW5pcXVlIGFuZCBpZGVtcG90ZW50IGlkOiAke2lkfWBcblx0XHQpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9IGVsc2Uge1xuXHRcdGlkTGlzdC5wdXNoKGlkKTtcblx0fVxuXHRyZXR1cm4gaGFzRHVwbGljYXRlSWRzO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbmF2aWdhdGlvbiBzZWN0aW9ucyBmb3IgdGhlIHN0b3JlLlxuICogQHJldHVybnMgVGhlIG5hdmlnYXRpb24gc2VjdGlvbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TmF2aWdhdGlvbigpOiBQcm9taXNlPFtTdG9yZWZyb250TmF2aWdhdGlvblNlY3Rpb24/LCBTdG9yZWZyb250TmF2aWdhdGlvblNlY3Rpb24/XT4ge1xuXHRjb25zdCBuYXYgPSBzdG9yZVByb3ZpZGVyT3B0aW9ucz8ubmF2aWdhdGlvbjtcblx0aWYgKGlzRW1wdHkobmF2KSkge1xuXHRcdHJldHVybiBbXTtcblx0fVxuXG5cdGxvZ2dlci5pbmZvKFwiU2hvd2luZyB0aGUgc3RvcmUgbmF2aWdhdGlvblwiKTtcblx0Y29uc3QgbmF2aWdhdGlvblNlY3Rpb25JdGVtTGltaXQgPSA1O1xuXHRjb25zdCBuYXZpZ2F0aW9uU2VjdGlvbkxpbWl0ID0gMjtcblx0Y29uc3QgbmF2aWdhdGlvblNlY3Rpb25zOiBbU3RvcmVmcm9udE5hdmlnYXRpb25TZWN0aW9uPywgU3RvcmVmcm9udE5hdmlnYXRpb25TZWN0aW9uP10gPSBbXTtcblxuXHRmb3IgKGNvbnN0IG5hdkl0ZW0gb2YgbmF2KSB7XG5cdFx0aWYgKG5hdmlnYXRpb25TZWN0aW9ucy5sZW5ndGggPT09IG5hdmlnYXRpb25TZWN0aW9uTGltaXQpIHtcblx0XHRcdGxvZ2dlci5pbmZvKFxuXHRcdFx0XHRcIk1vcmUgdGhhbiAyIG5hdmlnYXRpb24gc2VjdGlvbnMgZGVmaW5lZCBpbiBTdG9yZWZyb250UHJvdmlkZXIgc2V0dGluZ3MuIE9ubHkgdHdvIGFyZSB0YWtlblwiXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNvbnN0IG5hdmlnYXRpb25TZWN0aW9uOiBTdG9yZWZyb250TmF2aWdhdGlvblNlY3Rpb24gPSB7XG5cdFx0XHRpZDogbmF2SXRlbS5pZCA/PyBnZXRJZChuYXZJdGVtLnRpdGxlKSxcblx0XHRcdHRpdGxlOiBuYXZJdGVtLnRpdGxlLFxuXHRcdFx0aXRlbXM6IChhd2FpdCBnZXROYXZpZ2F0aW9uSXRlbXMobmF2SXRlbS5pdGVtcywgbmF2aWdhdGlvblNlY3Rpb25JdGVtTGltaXQpKSBhcyBbXG5cdFx0XHRcdFN0b3JlZnJvbnROYXZpZ2F0aW9uSXRlbSxcblx0XHRcdFx0U3RvcmVmcm9udE5hdmlnYXRpb25JdGVtPyxcblx0XHRcdFx0U3RvcmVmcm9udE5hdmlnYXRpb25JdGVtPyxcblx0XHRcdFx0U3RvcmVmcm9udE5hdmlnYXRpb25JdGVtPyxcblx0XHRcdFx0U3RvcmVmcm9udE5hdmlnYXRpb25JdGVtP1xuXHRcdFx0XVxuXHRcdH07XG5cdFx0bmF2aWdhdGlvblNlY3Rpb25zLnB1c2gobmF2aWdhdGlvblNlY3Rpb24pO1xuXHR9XG5cblx0cmV0dXJuIG5hdmlnYXRpb25TZWN0aW9ucztcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGxhbmRpbmcgcGFnZSBjb250ZW50LlxuICogQHJldHVybnMgVGhlIHN0b3JlIGxhbmRpbmcgcGFnZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TGFuZGluZ1BhZ2UoKTogUHJvbWlzZTxTdG9yZWZyb250TGFuZGluZ1BhZ2U+IHtcblx0bG9nZ2VyLmluZm8oXCJHZXR0aW5nIHRoZSBzdG9yZSBsYW5kaW5nIHBhZ2VcIik7XG5cblx0Y29uc3QgbGFuZGluZ1BhZ2U6IFBhcnRpYWw8U3RvcmVmcm9udExhbmRpbmdQYWdlPiA9IHt9O1xuXG5cdGNvbnN0IGxhbmRpbmdQYWdlU2V0dGluZ3MgPSBzdG9yZVByb3ZpZGVyT3B0aW9ucz8ubGFuZGluZ1BhZ2U7XG5cblx0Y29uc3QgaGVybyA9IGxhbmRpbmdQYWdlU2V0dGluZ3M/Lmhlcm87XG5cdGlmICghaXNFbXB0eShoZXJvKSkge1xuXHRcdGNvbnN0IGN0YSA9IGF3YWl0IGdldE5hdmlnYXRpb25JdGVtKGhlcm8uY3RhLmlkLCBoZXJvLmN0YS50aXRsZSwgaGVyby5jdGEudGFncyk7XG5cdFx0bGFuZGluZ1BhZ2UuaGVybyA9IHtcblx0XHRcdHRpdGxlOiBoZXJvLnRpdGxlLFxuXHRcdFx0aW1hZ2U6IGhlcm8uaW1hZ2UsXG5cdFx0XHRkZXNjcmlwdGlvbjogaGVyby5kZXNjcmlwdGlvbixcblx0XHRcdGN0YVxuXHRcdH07XG5cdH1cblxuXHRjb25zdCB0b3BSb3cgPSBsYW5kaW5nUGFnZVNldHRpbmdzPy50b3BSb3c7XG5cdGlmICghaXNFbXB0eSh0b3BSb3cpKSB7XG5cdFx0Y29uc3Qgcm93ID0gYXdhaXQgZ2V0TGFuZGluZ1BhZ2VSb3codG9wUm93LCBUT1BfUk9XX0xJTUlUKTtcblx0XHRsYW5kaW5nUGFnZS50b3BSb3cgPSB7XG5cdFx0XHR0aXRsZTogcm93LnRpdGxlLFxuXHRcdFx0aXRlbXM6IHJvdy5pdGVtcyBhcyBbXG5cdFx0XHRcdFN0b3JlZnJvbnREZXRhaWxlZE5hdmlnYXRpb25JdGVtPyxcblx0XHRcdFx0U3RvcmVmcm9udERldGFpbGVkTmF2aWdhdGlvbkl0ZW0/LFxuXHRcdFx0XHRTdG9yZWZyb250RGV0YWlsZWROYXZpZ2F0aW9uSXRlbT8sXG5cdFx0XHRcdFN0b3JlZnJvbnREZXRhaWxlZE5hdmlnYXRpb25JdGVtP1xuXHRcdFx0XVxuXHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyLmVycm9yKFwiWW91IG5lZWQgdG8gaGF2ZSBhIHRvcFJvdyBkZWZpbmVkIGluIHlvdXIgbGFuZGluZyBwYWdlXCIpO1xuXHR9XG5cblx0Y29uc3QgbWlkZGxlUm93ID0gbGFuZGluZ1BhZ2VTZXR0aW5ncz8ubWlkZGxlUm93O1xuXHRpZiAoIWlzRW1wdHkobWlkZGxlUm93KSkge1xuXHRcdGNvbnN0IG1pZGRsZVJvd0FwcHMgPSBhd2FpdCBnZXRBcHBzQnlUYWcobWlkZGxlUm93LnRhZ3MsIGZhbHNlLCB7IHByaXZhdGU6IGZhbHNlIH0pO1xuXHRcdGlmIChtaWRkbGVSb3dBcHBzLmxlbmd0aCA+IE1JRERMRV9ST1dfTElNSVQpIHtcblx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRgVG9vIG1hbnkgYXBwcyAoJHtcblx0XHRcdFx0XHRtaWRkbGVSb3dBcHBzLmxlbmd0aFxuXHRcdFx0XHR9KSBoYXZlIGJlZW4gcmV0dXJuZWQgYnkgdGhlIG1pZGRsZSByb3cgdGFnIGRlZmluaXRpb24gJHttaWRkbGVSb3cudGFncy5qb2luKFxuXHRcdFx0XHRcdFwiIFwiXG5cdFx0XHRcdCl9LiBPbmx5ICR7TUlERExFX1JPV19MSU1JVH0gd2lsbCBiZSBzaG93bi5gXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRjb25zdCB2YWxpZGF0ZWRNaWRkbGVSb3dBcHBzID0gKGF3YWl0IGFkZEJ1dHRvbnMobWlkZGxlUm93QXBwcy5zbGljZSgwLCBNSURETEVfUk9XX0xJTUlUKSkpIGFzIFtcblx0XHRcdFBsYXRmb3JtQXBwPyxcblx0XHRcdFBsYXRmb3JtQXBwPyxcblx0XHRcdFBsYXRmb3JtQXBwPyxcblx0XHRcdFBsYXRmb3JtQXBwPyxcblx0XHRcdFBsYXRmb3JtQXBwPyxcblx0XHRcdFBsYXRmb3JtQXBwP1xuXHRcdF07XG5cdFx0bGFuZGluZ1BhZ2UubWlkZGxlUm93ID0ge1xuXHRcdFx0dGl0bGU6IG1pZGRsZVJvdy50aXRsZSxcblx0XHRcdGFwcHM6IHZhbGlkYXRlZE1pZGRsZVJvd0FwcHNcblx0XHR9O1xuXHR9IGVsc2Uge1xuXHRcdGxvZ2dlci5lcnJvcihcIllvdSBuZWVkIHRvIGhhdmUgYSBtaWRkbGVSb3cgZGVmaW5lZCBpbiB5b3VyIGxhbmRpbmcgcGFnZVwiKTtcblx0fVxuXG5cdGNvbnN0IGJvdHRvbVJvdyA9IGxhbmRpbmdQYWdlU2V0dGluZ3M/LmJvdHRvbVJvdztcblx0aWYgKCFpc0VtcHR5KGJvdHRvbVJvdykpIHtcblx0XHRjb25zdCByb3cgPSBhd2FpdCBnZXRMYW5kaW5nUGFnZVJvdyhib3R0b21Sb3csIEJPVFRPTV9ST1dfTElNSVQpO1xuXHRcdGxhbmRpbmdQYWdlLmJvdHRvbVJvdyA9IHtcblx0XHRcdHRpdGxlOiByb3cudGl0bGUsXG5cdFx0XHRpdGVtczogcm93Lml0ZW1zIGFzIFtcblx0XHRcdFx0U3RvcmVmcm9udERldGFpbGVkTmF2aWdhdGlvbkl0ZW0/LFxuXHRcdFx0XHRTdG9yZWZyb250RGV0YWlsZWROYXZpZ2F0aW9uSXRlbT8sXG5cdFx0XHRcdFN0b3JlZnJvbnREZXRhaWxlZE5hdmlnYXRpb25JdGVtP1xuXHRcdFx0XVxuXHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyLmVycm9yKFwiWW91IG5lZWQgdG8gaGF2ZSBhIGJvdHRvbVJvdyBkZWZpbmVkIGluIHlvdXIgbGFuZGluZyBwYWdlXCIpO1xuXHR9XG5cblx0cmV0dXJuIGxhbmRpbmdQYWdlIGFzIFN0b3JlZnJvbnRMYW5kaW5nUGFnZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGZvb3RlciBjb250ZW50LlxuICogQHJldHVybnMgVGhlIHN0b3JlIGZvb3Rlci5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0Rm9vdGVyKCk6IFByb21pc2U8U3RvcmVmcm9udEZvb3Rlcj4ge1xuXHRsb2dnZXIuaW5mbyhcIkdldHRpbmcgdGhlIHN0b3JlIGZvb3RlclwiKTtcblx0Y29uc3QgZm9vdGVyID0gc3RvcmVQcm92aWRlck9wdGlvbnM/LmZvb3Rlcjtcblx0aWYgKCFpc0VtcHR5KGZvb3RlcikpIHtcblx0XHRyZXR1cm4gZm9vdGVyO1xuXHR9XG5cdGxvZ2dlci5lcnJvcihcIlN0b3JlZnJvbnQgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgd2l0aG91dCBhIGZvb3RlciBjb25maWd1cmVkXCIpO1xuXHRyZXR1cm4ge30gYXMgU3RvcmVmcm9udEZvb3Rlcjtcbn1cblxuLyoqXG4gKiBUaGlzIHNlY3Rpb24gZ2VuZXJhdGVzIGEgbmF2aWdhdGlvbiBpdGVtIGZvciBTdG9yZWZyb250IGJhc2VkIG9uIHNvbWUgY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSBpZCBUaGlzIGlkIHNob3VsZCBiZSB1bmlxdWUgYW5kIGlkZW1wb3RlbnQgYW5kIGlzbid0IGNoYW5nZWQgcmVnYXJkbGVzcyBvZiBob3cgb2Z0ZW4gdGhlIHNhbWUgbmF2aWdhdGlvbiBpdGVtXG4gKiBpcyByZWdlbmVyYXRlZC4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyBiZWNhdXNlIGl0IGlzIHVzZWQgZm9yIHJvdXRpbmcgaW4gU3RvcmVmcm9udC4gSWYgYSB1c2VyIG5hdmlnYXRlZCBmcm9tIGEgbGlua1xuICogYW5kIHRoZSBpZCBjaGFuZ2VzIHdoZW4gdGhlIGl0ZW0gaXMgcmUtcmVxdWVzdGVkIGJ5IHN0b3JlZnJvbnQgdGhlbiBpdCB3aWxsIG5vdCBiZSBhYmxlIHRvIHJlbmRlciB0aGUgY29udGVudHMuXG4gKiBAcGFyYW0gdGl0bGUgVGhlIHRpdGxlIG9mIHRoZSBzZWN0aW9uLlxuICogQHBhcmFtIHRhZ3MgVGFncyBhcmUgdXNlZCBhcyBhIHdheSBvZiBmaWx0ZXJpbmcgb3V0IHdoaWNoIGFwcHMgc2hvdWxkIGJlIGFzc2lnbmVkIHRvIGEgU3RvcmVmcm9udE5hdmlnYXRpb25JdGVtLiBUaGlzXG4gKiBhbGxvd3MgYXBwcyB0byBiZSB0YWdnZWQgb24gdGhlIHNlcnZlciBhbmQgdGhlIHN0b3JlIHdvdWxkIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSBhcHBzIGFzc2lnbmVkIHRvIGEgcGFydGljdWxhclxuICogc2VjdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBuYXZpZ2F0aW9uIGl0ZW0uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldE5hdmlnYXRpb25JdGVtKFxuXHRpZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHR0aXRsZTogc3RyaW5nLFxuXHR0YWdzOiBzdHJpbmdbXVxuKTogUHJvbWlzZTxTdG9yZWZyb250TmF2aWdhdGlvbkl0ZW0+IHtcblx0Y29uc3QgbmF2aWdhdGlvbkl0ZW06IFN0b3JlZnJvbnROYXZpZ2F0aW9uSXRlbSA9IHtcblx0XHRpZDogaWQgPz8gZ2V0SWQodGl0bGUsIHRhZ3MpLFxuXHRcdHRpdGxlLFxuXHRcdHRlbXBsYXRlSWQ6IFN0b3JlZnJvbnRUZW1wbGF0ZS5BcHBHcmlkLFxuXHRcdHRlbXBsYXRlRGF0YToge1xuXHRcdFx0YXBwczogW11cblx0XHR9XG5cdH07XG5cblx0Y29uc3QgYXBwcyA9IGF3YWl0IGdldEFwcHNCeVRhZyh0YWdzLCBmYWxzZSwgeyBwcml2YXRlOiBmYWxzZSB9KTtcblxuXHRpZiAoIWlzRW1wdHkoYXBwcykgJiYgYXBwcy5sZW5ndGggPiAwKSB7XG5cdFx0bmF2aWdhdGlvbkl0ZW0udGVtcGxhdGVEYXRhLmFwcHMgPSBhcHBzO1xuXHR9XG5cblx0cmV0dXJuIG5hdmlnYXRpb25JdGVtO1xufVxuXG4vKipcbiAqIENvbnZlcnQgdGhlIHNldHRpbmdzIG5hdmlnYXRpb24gaXRlbXMgdG8gc3RvcmUgaXRlbXMuXG4gKiBAcGFyYW0gaXRlbXMgVGhlIGl0ZW1zIHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0gbGltaXQgVGhlIG1heCBudW1iZXIgb2YgaXRlbXMuXG4gKiBAcmV0dXJucyBUaGUgY29udmVydGVkIGl0ZW1zLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXROYXZpZ2F0aW9uSXRlbXMoXG5cdGl0ZW1zOiBTdG9yZWZyb250U2V0dGluZ3NOYXZpZ2F0aW9uSXRlbVtdLFxuXHRsaW1pdDogbnVtYmVyXG4pOiBQcm9taXNlPFN0b3JlZnJvbnROYXZpZ2F0aW9uSXRlbVtdPiB7XG5cdGNvbnN0IG5hdmlnYXRpb25JdGVtczogU3RvcmVmcm9udE5hdmlnYXRpb25JdGVtW10gPSBbXTtcblxuXHRpZiAoaXRlbXMubGVuZ3RoID4gbGltaXQpIHtcblx0XHRsb2dnZXIud2Fybihcblx0XHRcdGBZb3UgaGF2ZSBkZWZpbmVkIHRvbyBtYW55IG5hdmlnYXRpb24gaXRlbXMgKCR7aXRlbXMubGVuZ3RofSkuIFBsZWFzZSBsaW1pdCBpdCB0byAke2xpbWl0fSBhcyB3ZSB3aWxsIG9ubHkgdGFrZSB0aGUgZmlyc3QgJHtsaW1pdH1gXG5cdFx0KTtcblx0fVxuXG5cdGZvciAoY29uc3QgbmF2SXRlbSBvZiBpdGVtcy5zbGljZSgwLCBsaW1pdCkpIHtcblx0XHRjb25zdCBuYXZpZ2F0aW9uSXRlbSA9IGF3YWl0IGdldE5hdmlnYXRpb25JdGVtKG5hdkl0ZW0uaWQsIG5hdkl0ZW0udGl0bGUsIG5hdkl0ZW0udGFncyk7XG5cdFx0bmF2aWdhdGlvbkl0ZW1zLnB1c2gobmF2aWdhdGlvbkl0ZW0pO1xuXHR9XG5cblx0cmV0dXJuIG5hdmlnYXRpb25JdGVtcztcbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIGxhbmRpbmcgcGFnZSByb3cuXG4gKiBAcGFyYW0gcm93IFRoZSBsYW5kaW5nIHBhZ2Ugcm93IGRlZmluaXRpb24uXG4gKiBAcGFyYW0gbGltaXQgVGhlIGxpbWl0IG9mIGl0ZW1zIGZvciB0aGUgbGFuZGluZyBwYWdlIHJvdy5cbiAqIEByZXR1cm5zIFRoZSBsYW5kaW5nIHBhZ2Ugcm93LlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRMYW5kaW5nUGFnZVJvdyhcblx0cm93OiBTdG9yZWZyb250U2V0dGluZ3NMYW5kaW5nUGFnZVJvdyxcblx0bGltaXQ6IG51bWJlclxuKTogUHJvbWlzZTx7XG5cdHRpdGxlOiBzdHJpbmc7XG5cdGl0ZW1zOiBTdG9yZWZyb250RGV0YWlsZWROYXZpZ2F0aW9uSXRlbVtdO1xufT4ge1xuXHRpZiAocm93Lml0ZW1zLmxlbmd0aCA+IGxpbWl0KSB7XG5cdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRgWW91IGhhdmUgZGVmaW5lZCB0b28gbWFueSBzdG9yZWZyb250IGRldGFpbGVkIG5hdmlnYXRpb24gaXRlbXMgKCR7cm93Lml0ZW1zLmxlbmd0aH0pLiBQbGVhc2Uga2VlcCBpdCB0byB0aGUgbGltaXQgb2YgJHtsaW1pdH0gYXMgb25seSB0aGUgZmlyc3QgJHtsaW1pdH0gd2lsbCBiZSByZXR1cm5lZC5gXG5cdFx0KTtcblx0fVxuXG5cdGNvbnN0IGl0ZW1zOiBTdG9yZWZyb250RGV0YWlsZWROYXZpZ2F0aW9uSXRlbVtdID0gW107XG5cblx0Zm9yIChjb25zdCBpdGVtIG9mIHJvdy5pdGVtcy5zbGljZSgwLCBsaW1pdCkpIHtcblx0XHRjb25zdCBuYXZpZ2F0aW9uSXRlbSA9IGF3YWl0IGdldE5hdmlnYXRpb25JdGVtKGl0ZW0uaWQsIGl0ZW0udGl0bGUsIGl0ZW0udGFncyk7XG5cdFx0Y29uc3QgbmF2SXRlbTogU3RvcmVmcm9udERldGFpbGVkTmF2aWdhdGlvbkl0ZW0gPSB7XG5cdFx0XHRkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcblx0XHRcdGltYWdlOiBpdGVtLmltYWdlLFxuXHRcdFx0YnV0dG9uVGl0bGU6IGl0ZW0uYnV0dG9uVGl0bGUsXG5cdFx0XHQuLi5uYXZpZ2F0aW9uSXRlbVxuXHRcdH07XG5cdFx0aXRlbXMucHVzaChuYXZJdGVtKTtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0dGl0bGU6IHJvdy50aXRsZSxcblx0XHRpdGVtc1xuXHR9O1xufVxuXG4vKipcbiAqIEFkZCBjdXN0b20gYnV0dG9ucyB0byB0aGUgc3RvcmUgZW50cmllcy5cbiAqIEBwYXJhbSBhcHBzIFRoZSBsaXN0IG9mIGFwcHMgdG8gYWRkIHRoZSBidXR0b25zIHRvLlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgYXVnbWVudGVkIGFwcHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFkZEJ1dHRvbnMoYXBwczogUGxhdGZvcm1BcHBbXSk6IFByb21pc2U8UGxhdGZvcm1BcHBbXT4ge1xuXHRjb25zdCBwcmltYXJ5QnV0dG9uID0gc3RvcmVQcm92aWRlck9wdGlvbnM/LnByaW1hcnlCdXR0b247XG5cdGNvbnN0IHNlY29uZGFyeUJ1dHRvbnMgPSBzdG9yZVByb3ZpZGVyT3B0aW9ucz8uc2Vjb25kYXJ5QnV0dG9ucztcblxuXHRjb25zdCBmYXZJbmZvID0gZmF2b3JpdGVQcm92aWRlci5nZXRJbmZvKCk7XG5cdGNvbnN0IGZhdm9yaXRlQXBwczogeyBbdHlwZUlkOiBzdHJpbmddOiBGYXZvcml0ZUVudHJ5IH0gPSB7fTtcblx0bGV0IHNob3dGYXZvcml0ZXMgPSBmYWxzZTtcblxuXHRpZiAoXG5cdFx0KHN0b3JlUHJvdmlkZXJPcHRpb25zPy5mYXZvcml0ZXNFbmFibGVkID8/IHRydWUpICYmXG5cdFx0ZmF2SW5mby5pc0VuYWJsZWQgJiZcblx0XHQoaXNFbXB0eShmYXZJbmZvLmVuYWJsZWRUeXBlcykgfHwgZmF2SW5mby5lbmFibGVkVHlwZXMuaW5jbHVkZXMoRkFWT1JJVEVfVFlQRV9OQU1FX0FQUCkpXG5cdCkge1xuXHRcdHNob3dGYXZvcml0ZXMgPSB0cnVlO1xuXHRcdGNvbnN0IGZhdm9yaXRlcyA9IGF3YWl0IGZhdm9yaXRlUHJvdmlkZXIuZ2V0U2F2ZWRGYXZvcml0ZXMoRkFWT1JJVEVfVFlQRV9OQU1FX0FQUCk7XG5cdFx0aWYgKGZhdm9yaXRlcykge1xuXHRcdFx0Zm9yIChjb25zdCBmYXYgb2YgZmF2b3JpdGVzKSB7XG5cdFx0XHRcdGZhdm9yaXRlQXBwc1tmYXYudHlwZUlkXSA9IGZhdjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRjb25zdCBpc0FycmF5ID0gIWlzRW1wdHkoc2Vjb25kYXJ5QnV0dG9ucykgJiYgQXJyYXkuaXNBcnJheShzZWNvbmRhcnlCdXR0b25zKTtcblx0aWYgKCFpc0VtcHR5KHByaW1hcnlCdXR0b24pIHx8IGlzQXJyYXkgfHwgc2hvd0Zhdm9yaXRlcykge1xuXHRcdHJldHVybiBhcHBzLm1hcCgoYXBwKSA9PiAoe1xuXHRcdFx0Li4uYXBwLFxuXHRcdFx0Li4uY2FsY3VsYXRlQnV0dG9ucyhhcHAsIHByaW1hcnlCdXR0b24sIHNlY29uZGFyeUJ1dHRvbnMsIHNob3dGYXZvcml0ZXMsIGZhdm9yaXRlQXBwc1thcHAuYXBwSWRdKVxuXHRcdH0pKTtcblx0fVxuXG5cdHJldHVybiBhcHBzO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgYnV0dG9ucyB0byB0aGUgYXBwbGljYXRpb24uXG4gKiBAcGFyYW0gYXBwIFRoZSBhcHAgdG8gYWRkIHRoZSBidXR0b25zIHRvLlxuICogQHBhcmFtIGNvbmZpZ1ByaW1hcnlCdXR0b24gVGhlIHByaW1hcnkgYnV0dG9uIGNvbmZpZy5cbiAqIEBwYXJhbSBjb25maWdTZWNvbmRhcnlCdXR0b25zIFRoZSBzZWNvbmRhcnkgYnV0dG9uIGNvbmZpZy5cbiAqIEBwYXJhbSBzaG93RmF2b3JpdGVzIFNob3cgZmF2b3JpdGVzIGJ1dHRvbnMuXG4gKiBAcGFyYW0gZmF2b3JpdGVFbnRyeSBUaGUgZmF2b3JpdGUgZGV0YWlscy5cbiAqIEByZXR1cm5zIFRoZSB1cGRhdGUgYXBwIHdpdGggYnV0dG9ucy5cbiAqL1xuZnVuY3Rpb24gY2FsY3VsYXRlQnV0dG9ucyhcblx0YXBwOiBQbGF0Zm9ybUFwcCxcblx0Y29uZmlnUHJpbWFyeUJ1dHRvbjogU3RvcmVCdXR0b25Db25maWcgfCB1bmRlZmluZWQsXG5cdGNvbmZpZ1NlY29uZGFyeUJ1dHRvbnM6IFN0b3JlQnV0dG9uQ29uZmlnW10gfCB1bmRlZmluZWQsXG5cdHNob3dGYXZvcml0ZXM6IGJvb2xlYW4sXG5cdGZhdm9yaXRlRW50cnk/OiBGYXZvcml0ZUVudHJ5XG4pOiB7XG5cdHByaW1hcnlCdXR0b246IFN0b3JlQnV0dG9uQ29uZmlnO1xuXHRzZWNvbmRhcnlCdXR0b25zOiBTdG9yZUJ1dHRvbkNvbmZpZ1tdO1xufSB7XG5cdGNvbnN0IGFwcFNlY29uZGFyeUJ1dHRvbnMgPVxuXHRcdGNvbmZpZ1NlY29uZGFyeUJ1dHRvbnM/Lm1hcCgoc2Vjb25kYXJ5KSA9PiAoe1xuXHRcdFx0dGl0bGU6IHNlY29uZGFyeS50aXRsZSxcblx0XHRcdGFjdGlvbjoge1xuXHRcdFx0XHRpZDogc2Vjb25kYXJ5LmFjdGlvbi5pZCxcblx0XHRcdFx0Y3VzdG9tRGF0YTogc2Vjb25kYXJ5LmFjdGlvbi5jdXN0b21EYXRhID8/IGFwcFxuXHRcdFx0fVxuXHRcdH0pKSA/PyBbXTtcblxuXHRpZiAoc2hvd0Zhdm9yaXRlcykge1xuXHRcdGFwcFNlY29uZGFyeUJ1dHRvbnMucHVzaCh7XG5cdFx0XHR0aXRsZTogZmF2b3JpdGVFbnRyeSA/IFwiUmVtb3ZlIEZhdm9yaXRlXCIgOiBcIkFkZCBGYXZvcml0ZVwiLFxuXHRcdFx0YWN0aW9uOiB7XG5cdFx0XHRcdGlkOiBmYXZvcml0ZUVudHJ5ID8gUExBVEZPUk1fQUNUSU9OX0lEUy5mYXZvcml0ZVJlbW92ZSA6IFBMQVRGT1JNX0FDVElPTl9JRFMuZmF2b3JpdGVBZGQsXG5cdFx0XHRcdGN1c3RvbURhdGE6IGZhdm9yaXRlRW50cnkgPz8ge1xuXHRcdFx0XHRcdGlkOiByYW5kb21VVUlEKCksXG5cdFx0XHRcdFx0dHlwZTogRkFWT1JJVEVfVFlQRV9OQU1FX0FQUCxcblx0XHRcdFx0XHR0eXBlSWQ6IGFwcC5hcHBJZCxcblx0XHRcdFx0XHRsYWJlbDogYXBwLnRpdGxlLFxuXHRcdFx0XHRcdGljb246IGdldEFwcEljb24oYXBwKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdHByaW1hcnlCdXR0b246IGFwcC5wcmltYXJ5QnV0dG9uID8/XG5cdFx0XHRjb25maWdQcmltYXJ5QnV0dG9uID8/IHtcblx0XHRcdFx0dGl0bGU6IFwiTGF1bmNoXCIsXG5cdFx0XHRcdGFjdGlvbjoge1xuXHRcdFx0XHRcdGlkOiBQTEFURk9STV9BQ1RJT05fSURTLmxhdW5jaEFwcCxcblx0XHRcdFx0XHRjdXN0b21EYXRhOiBhcHBcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRzZWNvbmRhcnlCdXR0b25zOiBhcHBTZWNvbmRhcnlCdXR0b25zXG5cdH07XG59XG5cbi8qKlxuICogR2V0IHRoZSBpY29uIGZvciBhbiBhcHBsaWNhdGlvbi5cbiAqIEBwYXJhbSBhcHAgVGhlIGFwcGxpY2F0aW9uIHRvIGdldCB0aGUgaWNvbiBmb3IuXG4gKiBAcmV0dXJucyBUaGUgaWNvbi5cbiAqL1xuZnVuY3Rpb24gZ2V0QXBwSWNvbihhcHA6IFBsYXRmb3JtQXBwKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKEFycmF5LmlzQXJyYXkoYXBwLmljb25zKSAmJiBhcHAuaWNvbnMubGVuZ3RoID4gMCkge1xuXHRcdHJldHVybiBhcHAuaWNvbnNbMF0uc3JjO1xuXHR9XG59XG5cbi8qKlxuICogVXBkYXRlIHRoZSBhcHAgYnV0dG9ucyBpZiB0aGUgZmF2b3JpdGVzIGhhdmUgY2hhbmdlZC5cbiAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIG9mIHRoZSBmYXZvcml0ZSBjaGFuZ2UuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUFwcEZhdm9yaXRlQnV0dG9ucyhwYXlsb2FkOiBGYXZvcml0ZUNoYW5nZWRMaWZlY3ljbGVQYXlsb2FkKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IGZhdm9yaXRlOiBGYXZvcml0ZUVudHJ5ID0gcGF5bG9hZC5mYXZvcml0ZTtcblxuXHRpZiAoXG5cdFx0KHN0b3JlUHJvdmlkZXJPcHRpb25zPy5mYXZvcml0ZXNFbmFibGVkID8/IHRydWUpICYmXG5cdFx0IWlzRW1wdHkocmVnaXN0cmF0aW9uSW5mbykgJiZcblx0XHQhaXNFbXB0eShmYXZvcml0ZSkgJiZcblx0XHQocGF5bG9hZC5hY3Rpb24gPT09IFwic2V0XCIgfHwgcGF5bG9hZC5hY3Rpb24gPT09IFwiZGVsZXRlXCIpICYmXG5cdFx0ZmF2b3JpdGUudHlwZSA9PT0gRkFWT1JJVEVfVFlQRV9OQU1FX0FQUFxuXHQpIHtcblx0XHRjb25zdCBhcHAgPSBhd2FpdCBnZXRBcHAoZmF2b3JpdGUudHlwZUlkKTtcblxuXHRcdGlmICghaXNFbXB0eShhcHApKSB7XG5cdFx0XHRhd2FpdCByZWdpc3RyYXRpb25JbmZvLnVwZGF0ZUFwcENhcmRCdXR0b25zKHtcblx0XHRcdFx0YXBwSWQ6IGZhdm9yaXRlLnR5cGVJZCxcblx0XHRcdFx0Li4uY2FsY3VsYXRlQnV0dG9ucyhcblx0XHRcdFx0XHRhcHAsXG5cdFx0XHRcdFx0c3RvcmVQcm92aWRlck9wdGlvbnM/LnByaW1hcnlCdXR0b24sXG5cdFx0XHRcdFx0c3RvcmVQcm92aWRlck9wdGlvbnM/LnNlY29uZGFyeUJ1dHRvbnMsXG5cdFx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0XHRwYXlsb2FkLmFjdGlvbiA9PT0gXCJzZXRcIiA/IGZhdm9yaXRlIDogdW5kZWZpbmVkXG5cdFx0XHRcdClcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsb2dnZXIud2FybihgRmF2b3JpdGUgdXBkYXRlIGZvciBhcHBJZCAke2Zhdm9yaXRlLnR5cGVJZH0gd2hpY2ggZG9lcyBub3QgZXhpc3RgKTtcblx0XHR9XG5cdH1cbn1cbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgeyBpbml0IGFzIGJvb3RzdHJhcCB9IGZyb20gXCIuL2ZyYW1ld29yay9ib290c3RyYXBwZXJcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2ZyYW1ld29yay9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB7IGluaXQgYXMgaW5pdGlhbGl6ZVBsYXRmb3JtIH0gZnJvbSBcIi4vZnJhbWV3b3JrL3BsYXRmb3JtL3BsYXRmb3JtXCI7XG5pbXBvcnQgKiBhcyBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyIGZyb20gXCIuL2ZyYW1ld29yay9wbGF0Zm9ybS9wbGF0Zm9ybS1zcGxhc2hcIjtcblxuLyoqXG4gKiBJbml0aWFsaXplIHRoZSBwcm92aWRlci5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHByb3ZpZGVyIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci5vcGVuKCk7XG5cblx0dHJ5IHtcblx0XHRyZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8Ym9vbGVhbj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0Y29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiUHJvdmlkZXJcIik7XG5cdFx0XHQvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHBsYXRmb3JtIHByb3h5IGFuZCBhZGQgYW4gZXZlbnQgbGlzdGVuZXJcblx0XHRcdC8vIHRvIGJvb3RzdHJhcCB0aGUgYXBwbGljYXRpb24gb25jZSB0aGUgcGxhdGZvcm0gaXMgcmVhZHkuXG5cdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGZpbi5QbGF0Zm9ybS5nZXRDdXJyZW50U3luYygpO1xuXG5cdFx0XHRwbGF0Zm9ybVxuXHRcdFx0XHQub25jZShcInBsYXRmb3JtLWFwaS1yZWFkeVwiLCAoKSA9PiB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oXCJQbGF0Zm9ybSBBUEkgUmVhZHkgZXZlbnQgcmVjZWl2ZWQuXCIpO1xuXHRcdFx0XHRcdGJvb3RzdHJhcCgpXG5cdFx0XHRcdFx0XHQudGhlbigoc3VjY2VzcykgPT4ge1xuXHRcdFx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcIkJvb3RzdHJhcCByZXR1cm4gc3VjY2VzczpcIiwgc3VjY2Vzcyk7XG5cdFx0XHRcdFx0XHRcdGxvZ2dlci5pbmZvKFwiTGlzdGVuZXIgZm9yIFBsYXRmb3JtIEFQSSBSZWFkeSBldmVudCBzZXR1cC5cIik7XG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoc3VjY2Vzcyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzdWNjZXNzO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC5jYXRjaCgoZmFpbHVyZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJGYWlsZWQgYm9vdHN0cmFwIGV4ZWN1dGlvbiBmb3IgdGhlIGZvbGxvd2luZyByZWFzb246XCIsIGZhaWx1cmUpO1xuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKGZhbHNlKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goYXN5bmMgKHJlYXNvbikgPT4ge1xuXHRcdFx0XHRcdGxvZ2dlci5lcnJvcihcIkxpc3RlbmVyIGZvciBQbGF0Zm9ybSBBUEkgUmVhZHkgZXZlbnQgaGFkIGEgcHJvYmxlbSBiZWluZyBzZXR1cDpcIiwgcmVhc29uKTtcblx0XHRcdFx0XHRyZXNvbHZlKGZhbHNlKTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdC8vIGluaXRpYWxpemUgdGhlIHBsYXRmb3JtIHRvIHByZXBhcmUgdGhlIGFwcGxpY2F0aW9uIGFuZCB0cmlnZ2VyIHRoZSBib290c3RyYXBwaW5nXG5cdFx0XHQvLyBwcm9jZXNzIG9uY2UgdGhlIHBsYXRmb3JtIGlzIHJlYWR5LlxuXHRcdFx0aW5pdGlhbGl6ZVBsYXRmb3JtKClcblx0XHRcdFx0LnRoZW4oKHN1Y2Nlc3MpID0+IHtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcIlBsYXRmb3JtIEluaXRpYWxpemVkIHdpdGggc3VjY2VzczpcIiwgc3VjY2Vzcyk7XG5cdFx0XHRcdFx0aWYgKCFzdWNjZXNzKSB7XG5cdFx0XHRcdFx0XHRyZXNvbHZlKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gc3VjY2Vzcztcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKChmYWlsdXJlKSA9PiB7XG5cdFx0XHRcdFx0bG9nZ2VyLmVycm9yKFwiRXJyb3IgZW5jb3VudGVyZWQgd2hlbiB0cnlpbmcgdG8gaW5pdGlhdGUgcGxhdGZvcm06XCIsIGZhaWx1cmUpO1xuXHRcdFx0XHRcdHJlamVjdChmYWlsdXJlKTtcblx0XHRcdFx0fSk7XG5cdFx0fSk7XG5cdH0gZmluYWxseSB7XG5cdFx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci5jbG9zZSgpO1xuXHR9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJO0FBQ0o7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTtBQUNKO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixrREFBa0Q7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxvQ0FBb0M7O0FBRXJDO0FBQ0E7QUFDQSxjQUFjLDBMQUEwTDtBQUN4TTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxzQkFBc0I7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixPQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0VBQXNFLGFBQWE7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7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L29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uLi8uLi9ub2RlX21vZHVsZXMvQGZpbm9zL2ZkYzMvZGlzdC9mZGMzLmVzbS5qcyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi4vLi4vbm9kZV9tb2R1bGVzL0BvcGVuZmluL3dvcmtzcGFjZS1wbGF0Zm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi4vLi4vbm9kZV9tb2R1bGVzL0BvcGVuZmluL3dvcmtzcGFjZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi4vLi4vbm9kZV9tb2R1bGVzL0BvcGVuZmluL3dvcmtzcGFjZS9ub3RpZmljYXRpb25zLmpzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL2FjdGlvbnMudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvYW5hbHl0aWNzLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL2FwcHMudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvYXV0aC1mbG93LnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL2F1dGgudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvYm9vdHN0cmFwcGVyLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL2J1dHRvbnMudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvY29uZGl0aW9ucy50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9jb25uZWN0aW9ucy50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9kZWZhdWx0LXBhbGV0dGVzLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL2RpcmVjdG9yeS50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9lbmRwb2ludC50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9mYXZvcml0ZS50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9mZGMzLzEuMi9tYXBwZXIudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvZmRjMy8yLjAvbWFwcGVyLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL2luaXQtb3B0aW9ucy50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9pbnRlZ3JhdGlvbnMudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvbGF1bmNoLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL2xpZmVjeWNsZS50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9sb2dnZXItcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvbWFuaWZlc3QtdHlwZXMudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvbWVudS50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9tb2R1bGVzLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3BsYXRmb3JtL2Jyb3dzZXIudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvcGxhdGZvcm0vaW50ZXJvcGJyb2tlci50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9wbGF0Zm9ybS9wbGF0Zm9ybS1tYXBwZXIudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvcGxhdGZvcm0vcGxhdGZvcm0tb3ZlcnJpZGUudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvcGxhdGZvcm0vcGxhdGZvcm0tc3BsYXNoLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3BsYXRmb3JtL3BsYXRmb3JtLXZlcnNpb24udHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvcGxhdGZvcm0vcGxhdGZvcm0udHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvc2V0dGluZ3MudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvc2hhcGVzL2Zhdm9yaXRlLXNoYXBlcy50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay9zaGFwZXMvdGhlbWUtc2hhcGVzLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3NoYXJlLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3NuYXBzaG90LXNvdXJjZS50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay90ZW1wbGF0ZXMudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvdGhlbWVzLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3RyYXkudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvdXRpbHMudHMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9mcmFtZXdvcmsvdmVyc2lvbi50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay93b3Jrc3BhY2UvZG9jay50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay93b3Jrc3BhY2UvaG9tZS50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvLi9jbGllbnQvc3JjL2ZyYW1ld29yay93b3Jrc3BhY2UvbG93LWNvZGUtaW50ZWdyYXRpb25zLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3dvcmtzcGFjZS9ub3RpZmljYXRpb25zLnRzIiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci8uL2NsaWVudC9zcmMvZnJhbWV3b3JrL3dvcmtzcGFjZS9zdG9yZS50cyIsIndlYnBhY2s6Ly9vcGVuZmluLXdvcmtzcGFjZS0td29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL29wZW5maW4td29ya3NwYWNlLS13b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vb3BlbmZpbi13b3Jrc3BhY2UtLXdvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyLy4vY2xpZW50L3NyYy9wcm92aWRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcclxuICogQ29weXJpZ2h0IEZJTk9TIEZEQzMgY29udHJpYnV0b3JzIC0gc2VlIE5PVElDRSBmaWxlXHJcbiAqL1xuLyoqIENvbnN0YW50cyByZXByZXNlbnRpbmcgdGhlIGVycm9ycyB0aGF0IGNhbiBiZSBlbmNvdW50ZXJlZCB3aGVuIGNhbGxpbmcgdGhlIGBvcGVuYCBtZXRob2Qgb24gdGhlIERlc2t0b3BBZ2VudCBvYmplY3QgKGBmZGMzYCkuICovXG52YXIgT3BlbkVycm9yO1xuKGZ1bmN0aW9uIChPcGVuRXJyb3IpIHtcbiAgLyoqIFJldHVybmVkIGlmIHRoZSBzcGVjaWZpZWQgYXBwbGljYXRpb24gaXMgbm90IGZvdW5kLiovXG4gIE9wZW5FcnJvcltcIkFwcE5vdEZvdW5kXCJdID0gXCJBcHBOb3RGb3VuZFwiO1xuICAvKiogUmV0dXJuZWQgaWYgdGhlIHNwZWNpZmllZCBhcHBsaWNhdGlvbiBmYWlscyB0byBsYXVuY2ggY29ycmVjdGx5LiovXG4gIE9wZW5FcnJvcltcIkVycm9yT25MYXVuY2hcIl0gPSBcIkVycm9yT25MYXVuY2hcIjtcbiAgLyoqIFJldHVybmVkIGlmIHRoZSBzcGVjaWZpZWQgYXBwbGljYXRpb24gbGF1bmNoZXMgYnV0IGZhaWxzIHRvIGFkZCBhIGNvbnRleHQgbGlzdGVuZXIgaW4gb3JkZXIgdG8gcmVjZWl2ZSB0aGUgY29udGV4dCBwYXNzZWQgdG8gdGhlIGBmZGMzLm9wZW5gIGNhbGwuKi9cbiAgT3BlbkVycm9yW1wiQXBwVGltZW91dFwiXSA9IFwiQXBwVGltZW91dFwiO1xuICAvKiogUmV0dXJuZWQgaWYgdGhlIEZEQzMgZGVza3RvcCBhZ2VudCBpbXBsZW1lbnRhdGlvbiBpcyBub3QgY3VycmVudGx5IGFibGUgdG8gaGFuZGxlIHRoZSByZXF1ZXN0LiovXG4gIE9wZW5FcnJvcltcIlJlc29sdmVyVW5hdmFpbGFibGVcIl0gPSBcIlJlc29sdmVyVW5hdmFpbGFibGVcIjtcbiAgLyoqIFJldHVybmVkIGlmIGEgY2FsbCB0byB0aGUgYG9wZW5gIGZ1bmN0aW9uIGlzIG1hZGUgd2l0aCBhbiBpbnZhbGlkIGNvbnRleHQgYXJndW1lbnQuIENvbnRleHRzIHNob3VsZCBiZSBPYmplY3RzIHdpdGggYXQgbGVhc3QgYSBgdHlwZWAgZmllbGQgdGhhdCBoYXMgYSBgc3RyaW5nYCB2YWx1ZS4qL1xuICBPcGVuRXJyb3JbXCJNYWxmb3JtZWRDb250ZXh0XCJdID0gXCJNYWxmb3JtZWRDb250ZXh0XCI7XG59KShPcGVuRXJyb3IgfHwgKE9wZW5FcnJvciA9IHt9KSk7XG4vKiogQ29uc3RhbnRzIHJlcHJlc2VudGluZyB0aGUgZXJyb3JzIHRoYXQgY2FuIGJlIGVuY291bnRlcmVkIHdoZW4gY2FsbGluZyB0aGUgYGZpbmRJbnRlbnRgLCBgZmluZEludGVudHNCeUNvbnRleHRgLCBgcmFpc2VJbnRlbnRgIG9yIGByYWlzZUludGVudEZvckNvbnRleHRgIG1ldGhvZHMgb24gdGhlIERlc2t0b3BBZ2VudCAoYGZkYzNgKS4gKi9cbnZhciBSZXNvbHZlRXJyb3I7XG4oZnVuY3Rpb24gKFJlc29sdmVFcnJvcikge1xuICAvKiogU0hPVUxEIGJlIHJldHVybmVkIGlmIG5vIGFwcHMgYXJlIGF2YWlsYWJsZSB0aGF0IGNhbiByZXNvbHZlIHRoZSBpbnRlbnQgYW5kIGNvbnRleHQgY29tYmluYXRpb24uKi9cbiAgUmVzb2x2ZUVycm9yW1wiTm9BcHBzRm91bmRcIl0gPSBcIk5vQXBwc0ZvdW5kXCI7XG4gIC8qKiBSZXR1cm5lZCBpZiB0aGUgRkRDMyBkZXNrdG9wIGFnZW50IGltcGxlbWVudGF0aW9uIGlzIG5vdCBjdXJyZW50bHkgYWJsZSB0byBoYW5kbGUgdGhlIHJlcXVlc3QuKi9cbiAgUmVzb2x2ZUVycm9yW1wiUmVzb2x2ZXJVbmF2YWlsYWJsZVwiXSA9IFwiUmVzb2x2ZXJVbmF2YWlsYWJsZVwiO1xuICAvKiogUmV0dXJuZWQgaWYgdGhlIHVzZXIgY2FuY2VsbGVkIHRoZSByZXNvbHV0aW9uIHJlcXVlc3QsIGZvciBleGFtcGxlIGJ5IGNsb3Npbmcgb3IgY2FuY2VsbGluZyBhIHJlc29sdmVyIFVJLiovXG4gIFJlc29sdmVFcnJvcltcIlVzZXJDYW5jZWxsZWRcIl0gPSBcIlVzZXJDYW5jZWxsZWRSZXNvbHV0aW9uXCI7XG4gIC8qKiBTSE9VTEQgYmUgcmV0dXJuZWQgaWYgYSB0aW1lb3V0IGNhbmNlbHMgYW4gaW50ZW50IHJlc29sdXRpb24gdGhhdCByZXF1aXJlZCB1c2VyIGludGVyYWN0aW9uLiBQbGVhc2UgdXNlIGBSZXNvbHZlclVuYXZhaWxhYmxlYCBpbnN0ZWFkIGZvciBzaXR1YXRpb25zIHdoZXJlIGEgcmVzb2x2ZXIgVUkgb3Igc2ltaWxhciBmYWlscy4qL1xuICBSZXNvbHZlRXJyb3JbXCJSZXNvbHZlclRpbWVvdXRcIl0gPSBcIlJlc29sdmVyVGltZW91dFwiO1xuICAvKiogUmV0dXJuZWQgaWYgYSBzcGVjaWZpZWQgdGFyZ2V0IGFwcGxpY2F0aW9uIGlzIG5vdCBhdmFpbGFibGUgb3IgYSBuZXcgaW5zdGFuY2Ugb2YgaXQgY2Fubm90IGJlIG9wZW5lZC4gKi9cbiAgUmVzb2x2ZUVycm9yW1wiVGFyZ2V0QXBwVW5hdmFpbGFibGVcIl0gPSBcIlRhcmdldEFwcFVuYXZhaWxhYmxlXCI7XG4gIC8qKiBSZXR1cm5lZCBpZiBhIHNwZWNpZmllZCB0YXJnZXQgYXBwbGljYXRpb24gaW5zdGFuY2UgaXMgbm90IGF2YWlsYWJsZSwgZm9yIGV4YW1wbGUgYmVjYXVzZSBpdCBoYXMgYmVlbiBjbG9zZWQuICovXG4gIFJlc29sdmVFcnJvcltcIlRhcmdldEluc3RhbmNlVW5hdmFpbGFibGVcIl0gPSBcIlRhcmdldEluc3RhbmNlVW5hdmFpbGFibGVcIjtcbiAgLyoqIFJldHVybmVkIGlmIHRoZSBpbnRlbnQgYW5kIGNvbnRleHQgY291bGQgbm90IGJlIGRlbGl2ZXJlZCB0byB0aGUgc2VsZWN0ZWQgYXBwbGljYXRpb24gb3IgaW5zdGFuY2UsIGZvciBleGFtcGxlIGJlY2F1c2UgaXQgaGFzIG5vdCBhZGRlZCBhbiBpbnRlbnQgaGFuZGxlciB3aXRoaW4gYSB0aW1lb3V0LiovXG4gIFJlc29sdmVFcnJvcltcIkludGVudERlbGl2ZXJ5RmFpbGVkXCJdID0gXCJJbnRlbnREZWxpdmVyeUZhaWxlZFwiO1xuICAvKiogUmV0dXJuZWQgaWYgYSBjYWxsIHRvIG9uZSBvZiB0aGUgYHJhaXNlSW50ZW50YCBmdW5jdGlvbnMgaXMgbWFkZSB3aXRoIGFuIGludmFsaWQgY29udGV4dCBhcmd1bWVudC4gQ29udGV4dHMgc2hvdWxkIGJlIE9iamVjdHMgd2l0aCBhdCBsZWFzdCBhIGB0eXBlYCBmaWVsZCB0aGF0IGhhcyBhIGBzdHJpbmdgIHZhbHVlLiovXG4gIFJlc29sdmVFcnJvcltcIk1hbGZvcm1lZENvbnRleHRcIl0gPSBcIk1hbGZvcm1lZENvbnRleHRcIjtcbn0pKFJlc29sdmVFcnJvciB8fCAoUmVzb2x2ZUVycm9yID0ge30pKTtcbnZhciBSZXN1bHRFcnJvcjtcbihmdW5jdGlvbiAoUmVzdWx0RXJyb3IpIHtcbiAgLyoqIFJldHVybmVkIGlmIHRoZSBpbnRlbnQgaGFuZGxlciBleGl0ZWQgd2l0aG91dCByZXR1cm5pbmcgYSB2YWxpZCByZXN1bHQgKGEgcHJvbWlzZSByZXNvbHZpbmcgdG8gYSBDb250ZXh0LCBDaGFubmVsIG9iamVjdCBvciB2b2lkKS4gKi9cbiAgUmVzdWx0RXJyb3JbXCJOb1Jlc3VsdFJldHVybmVkXCJdID0gXCJOb1Jlc3VsdFJldHVybmVkXCI7XG4gIC8qKiBSZXR1cm5lZCBpZiB0aGUgSW50ZW50IGhhbmRsZXIgZnVuY3Rpb24gcHJvY2Vzc2luZyB0aGUgcmFpc2VkIGludGVudCB0aHJvd3MgYW4gZXJyb3Igb3IgcmVqZWN0cyB0aGUgUHJvbWlzZSBpdCByZXR1cm5lZC4gKi9cbiAgUmVzdWx0RXJyb3JbXCJJbnRlbnRIYW5kbGVyUmVqZWN0ZWRcIl0gPSBcIkludGVudEhhbmRsZXJSZWplY3RlZFwiO1xufSkoUmVzdWx0RXJyb3IgfHwgKFJlc3VsdEVycm9yID0ge30pKTtcbnZhciBDaGFubmVsRXJyb3I7XG4oZnVuY3Rpb24gKENoYW5uZWxFcnJvcikge1xuICAvKiogUmV0dXJuZWQgaWYgdGhlIHNwZWNpZmllZCBjaGFubmVsIGlzIG5vdCBmb3VuZCB3aGVuIGF0dGVtcHRpbmcgdG8gam9pbiBhIGNoYW5uZWwgdmlhIHRoZSBgam9pblVzZXJDaGFubmVsYCBmdW5jdGlvbiAgb2YgdGhlIERlc2t0b3BBZ2VudCAoYGZkYzNgKS4qL1xuICBDaGFubmVsRXJyb3JbXCJOb0NoYW5uZWxGb3VuZFwiXSA9IFwiTm9DaGFubmVsRm91bmRcIjtcbiAgLyoqIFNIT1VMRCBiZSByZXR1cm5lZCB3aGVuIGEgcmVxdWVzdCB0byBqb2luIGEgdXNlciBjaGFubmVsIG9yIHRvIGEgcmV0cmlldmUgYSBDaGFubmVsIG9iamVjdCB2aWEgdGhlIGBqb2luVXNlckNoYW5uZWxgIG9yIGBnZXRPckNyZWF0ZUNoYW5uZWxgIG1ldGhvZHMgb2YgdGhlIERlc2t0b3BBZ2VudCAoYGZkYzNgKSBvYmplY3QgaXMgZGVuaWVkLiAqL1xuICBDaGFubmVsRXJyb3JbXCJBY2Nlc3NEZW5pZWRcIl0gPSBcIkFjY2Vzc0RlbmllZFwiO1xuICAvKiogU0hPVUxEIGJlIHJldHVybmVkIHdoZW4gYSBjaGFubmVsIGNhbm5vdCBiZSBjcmVhdGVkIG9yIHJldHJpZXZlZCB2aWEgdGhlIGBnZXRPckNyZWF0ZUNoYW5uZWxgIG1ldGhvZCBvZiB0aGUgRGVza3RvcEFnZW50IChgZmRjM2ApLiovXG4gIENoYW5uZWxFcnJvcltcIkNyZWF0aW9uRmFpbGVkXCJdID0gXCJDcmVhdGlvbkZhaWxlZFwiO1xuICAvKiogUmV0dXJuZWQgaWYgYSBjYWxsIHRvIHRoZSBgYnJvYWRjYXN0YCBmdW5jdGlvbnMgaXMgbWFkZSB3aXRoIGFuIGludmFsaWQgY29udGV4dCBhcmd1bWVudC4gQ29udGV4dHMgc2hvdWxkIGJlIE9iamVjdHMgd2l0aCBhdCBsZWFzdCBhIGB0eXBlYCBmaWVsZCB0aGF0IGhhcyBhIGBzdHJpbmdgIHZhbHVlLiovXG4gIENoYW5uZWxFcnJvcltcIk1hbGZvcm1lZENvbnRleHRcIl0gPSBcIk1hbGZvcm1lZENvbnRleHRcIjtcbn0pKENoYW5uZWxFcnJvciB8fCAoQ2hhbm5lbEVycm9yID0ge30pKTtcblxuZnVuY3Rpb24gX3JlZ2VuZXJhdG9yUnVudGltZSgpIHtcbiAgX3JlZ2VuZXJhdG9yUnVudGltZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZXhwb3J0cztcbiAgfTtcbiAgdmFyIGV4cG9ydHMgPSB7fSxcbiAgICBPcCA9IE9iamVjdC5wcm90b3R5cGUsXG4gICAgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHksXG4gICAgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgfHwgZnVuY3Rpb24gKG9iaiwga2V5LCBkZXNjKSB7XG4gICAgICBvYmpba2V5XSA9IGRlc2MudmFsdWU7XG4gICAgfSxcbiAgICAkU3ltYm9sID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSxcbiAgICBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCIsXG4gICAgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiLFxuICAgIHRvU3RyaW5nVGFnU3ltYm9sID0gJFN5bWJvbC50b1N0cmluZ1RhZyB8fCBcIkBAdG9TdHJpbmdUYWdcIjtcbiAgZnVuY3Rpb24gZGVmaW5lKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICAgIHdyaXRhYmxlOiAhMFxuICAgIH0pLCBvYmpba2V5XTtcbiAgfVxuICB0cnkge1xuICAgIGRlZmluZSh7fSwgXCJcIik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGRlZmluZSA9IGZ1bmN0aW9uIChvYmosIGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yLFxuICAgICAgZ2VuZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShwcm90b0dlbmVyYXRvci5wcm90b3R5cGUpLFxuICAgICAgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcbiAgICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZ2VuZXJhdG9yLCBcIl9pbnZva2VcIiwge1xuICAgICAgdmFsdWU6IG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dClcbiAgICB9KSwgZ2VuZXJhdG9yO1xuICB9XG4gIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcIm5vcm1hbFwiLFxuICAgICAgICBhcmc6IGZuLmNhbGwob2JqLCBhcmcpXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJ0aHJvd1wiLFxuICAgICAgICBhcmc6IGVyclxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgZXhwb3J0cy53cmFwID0gd3JhcDtcbiAgdmFyIENvbnRpbnVlU2VudGluZWwgPSB7fTtcbiAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBkZWZpbmUoSXRlcmF0b3JQcm90b3R5cGUsIGl0ZXJhdG9yU3ltYm9sLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pO1xuICB2YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YsXG4gICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICYmIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPcCAmJiBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpICYmIChJdGVyYXRvclByb3RvdHlwZSA9IE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID0gR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgZGVmaW5lKHByb3RvdHlwZSwgbWV0aG9kLCBmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UobWV0aG9kLCBhcmcpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcihnZW5lcmF0b3IsIFByb21pc2VJbXBsKSB7XG4gICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChnZW5lcmF0b3JbbWV0aG9kXSwgZ2VuZXJhdG9yLCBhcmcpO1xuICAgICAgaWYgKFwidGhyb3dcIiAhPT0gcmVjb3JkLnR5cGUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlY29yZC5hcmcsXG4gICAgICAgICAgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIHJldHVybiB2YWx1ZSAmJiBcIm9iamVjdFwiID09IHR5cGVvZiB2YWx1ZSAmJiBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpID8gUHJvbWlzZUltcGwucmVzb2x2ZSh2YWx1ZS5fX2F3YWl0KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIGludm9rZShcIm5leHRcIiwgdmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICBpbnZva2UoXCJ0aHJvd1wiLCBlcnIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pIDogUHJvbWlzZUltcGwucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbiAodW53cmFwcGVkKSB7XG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkLCByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBpbnZva2UoXCJ0aHJvd1wiLCBlcnJvciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZWplY3QocmVjb3JkLmFyZyk7XG4gICAgfVxuICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG4gICAgZGVmaW5lUHJvcGVydHkodGhpcywgXCJfaW52b2tlXCIsIHtcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiAobWV0aG9kLCBhcmcpIHtcbiAgICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlSW1wbChmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByZXZpb3VzUHJvbWlzZSA9IHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLCBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZykgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgIHZhciBzdGF0ZSA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG1ldGhvZCwgYXJnKSB7XG4gICAgICBpZiAoXCJleGVjdXRpbmdcIiA9PT0gc3RhdGUpIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICBpZiAoXCJjb21wbGV0ZWRcIiA9PT0gc3RhdGUpIHtcbiAgICAgICAgaWYgKFwidGhyb3dcIiA9PT0gbWV0aG9kKSB0aHJvdyBhcmc7XG4gICAgICAgIHJldHVybiBkb25lUmVzdWx0KCk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnRleHQubWV0aG9kID0gbWV0aG9kLCBjb250ZXh0LmFyZyA9IGFyZzs7KSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IGNvbnRleHQuZGVsZWdhdGU7XG4gICAgICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgICAgIHZhciBkZWxlZ2F0ZVJlc3VsdCA9IG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0ID09PSBDb250aW51ZVNlbnRpbmVsKSBjb250aW51ZTtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZVJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFwibmV4dFwiID09PSBjb250ZXh0Lm1ldGhvZCkgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnO2Vsc2UgaWYgKFwidGhyb3dcIiA9PT0gY29udGV4dC5tZXRob2QpIHtcbiAgICAgICAgICBpZiAoXCJzdXNwZW5kZWRTdGFydFwiID09PSBzdGF0ZSkgdGhyb3cgc3RhdGUgPSBcImNvbXBsZXRlZFwiLCBjb250ZXh0LmFyZztcbiAgICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKTtcbiAgICAgICAgfSBlbHNlIFwicmV0dXJuXCIgPT09IGNvbnRleHQubWV0aG9kICYmIGNvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGNvbnRleHQuYXJnKTtcbiAgICAgICAgc3RhdGUgPSBcImV4ZWN1dGluZ1wiO1xuICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgIGlmIChcIm5vcm1hbFwiID09PSByZWNvcmQudHlwZSkge1xuICAgICAgICAgIGlmIChzdGF0ZSA9IGNvbnRleHQuZG9uZSA/IFwiY29tcGxldGVkXCIgOiBcInN1c3BlbmRlZFlpZWxkXCIsIHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgXCJ0aHJvd1wiID09PSByZWNvcmQudHlwZSAmJiAoc3RhdGUgPSBcImNvbXBsZXRlZFwiLCBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIiwgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIgbWV0aG9kTmFtZSA9IGNvbnRleHQubWV0aG9kLFxuICAgICAgbWV0aG9kID0gZGVsZWdhdGUuaXRlcmF0b3JbbWV0aG9kTmFtZV07XG4gICAgaWYgKHVuZGVmaW5lZCA9PT0gbWV0aG9kKSByZXR1cm4gY29udGV4dC5kZWxlZ2F0ZSA9IG51bGwsIFwidGhyb3dcIiA9PT0gbWV0aG9kTmFtZSAmJiBkZWxlZ2F0ZS5pdGVyYXRvci5yZXR1cm4gJiYgKGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIiwgY29udGV4dC5hcmcgPSB1bmRlZmluZWQsIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpLCBcInRocm93XCIgPT09IGNvbnRleHQubWV0aG9kKSB8fCBcInJldHVyblwiICE9PSBtZXRob2ROYW1lICYmIChjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIiwgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnXCIgKyBtZXRob2ROYW1lICsgXCInIG1ldGhvZFwiKSksIENvbnRpbnVlU2VudGluZWw7XG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcbiAgICBpZiAoXCJ0aHJvd1wiID09PSByZWNvcmQudHlwZSkgcmV0dXJuIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiLCBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmcsIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsLCBDb250aW51ZVNlbnRpbmVsO1xuICAgIHZhciBpbmZvID0gcmVjb3JkLmFyZztcbiAgICByZXR1cm4gaW5mbyA/IGluZm8uZG9uZSA/IChjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZSwgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYywgXCJyZXR1cm5cIiAhPT0gY29udGV4dC5tZXRob2QgJiYgKGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCIsIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkKSwgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGwsIENvbnRpbnVlU2VudGluZWwpIDogaW5mbyA6IChjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIiwgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIiksIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsLCBDb250aW51ZVNlbnRpbmVsKTtcbiAgfVxuICBmdW5jdGlvbiBwdXNoVHJ5RW50cnkobG9jcykge1xuICAgIHZhciBlbnRyeSA9IHtcbiAgICAgIHRyeUxvYzogbG9jc1swXVxuICAgIH07XG4gICAgMSBpbiBsb2NzICYmIChlbnRyeS5jYXRjaExvYyA9IGxvY3NbMV0pLCAyIGluIGxvY3MgJiYgKGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdLCBlbnRyeS5hZnRlckxvYyA9IGxvY3NbM10pLCB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cbiAgZnVuY3Rpb24gcmVzZXRUcnlFbnRyeShlbnRyeSkge1xuICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uIHx8IHt9O1xuICAgIHJlY29yZC50eXBlID0gXCJub3JtYWxcIiwgZGVsZXRlIHJlY29yZC5hcmcsIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG4gIH1cbiAgZnVuY3Rpb24gQ29udGV4dCh0cnlMb2NzTGlzdCkge1xuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7XG4gICAgICB0cnlMb2M6IFwicm9vdFwiXG4gICAgfV0sIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKSwgdGhpcy5yZXNldCghMCk7XG4gIH1cbiAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGl0ZXJhYmxlLm5leHQpIHJldHVybiBpdGVyYWJsZTtcbiAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgaSA9IC0xLFxuICAgICAgICAgIG5leHQgPSBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgICAgZm9yICg7ICsraSA8IGl0ZXJhYmxlLmxlbmd0aDspIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHJldHVybiBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV0sIG5leHQuZG9uZSA9ICExLCBuZXh0O1xuICAgICAgICAgICAgcmV0dXJuIG5leHQudmFsdWUgPSB1bmRlZmluZWQsIG5leHQuZG9uZSA9ICEwLCBuZXh0O1xuICAgICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbmV4dDogZG9uZVJlc3VsdFxuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGRvbmU6ICEwXG4gICAgfTtcbiAgfVxuICByZXR1cm4gR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIGRlZmluZVByb3BlcnR5KEdwLCBcImNvbnN0cnVjdG9yXCIsIHtcbiAgICB2YWx1ZTogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsXG4gICAgY29uZmlndXJhYmxlOiAhMFxuICB9KSwgZGVmaW5lUHJvcGVydHkoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIFwiY29uc3RydWN0b3JcIiwge1xuICAgIHZhbHVlOiBHZW5lcmF0b3JGdW5jdGlvbixcbiAgICBjb25maWd1cmFibGU6ICEwXG4gIH0pLCBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IGRlZmluZShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgdG9TdHJpbmdUYWdTeW1ib2wsIFwiR2VuZXJhdG9yRnVuY3Rpb25cIiksIGV4cG9ydHMuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uIChnZW5GdW4pIHtcbiAgICB2YXIgY3RvciA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgZ2VuRnVuICYmIGdlbkZ1bi5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gISFjdG9yICYmIChjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fCBcIkdlbmVyYXRvckZ1bmN0aW9uXCIgPT09IChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFtZSkpO1xuICB9LCBleHBvcnRzLm1hcmsgPSBmdW5jdGlvbiAoZ2VuRnVuKSB7XG4gICAgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihnZW5GdW4sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSA6IChnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIGRlZmluZShnZW5GdW4sIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvckZ1bmN0aW9uXCIpKSwgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApLCBnZW5GdW47XG4gIH0sIGV4cG9ydHMuYXdyYXAgPSBmdW5jdGlvbiAoYXJnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fYXdhaXQ6IGFyZ1xuICAgIH07XG4gIH0sIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSksIGRlZmluZShBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSwgYXN5bmNJdGVyYXRvclN5bWJvbCwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KSwgZXhwb3J0cy5Bc3luY0l0ZXJhdG9yID0gQXN5bmNJdGVyYXRvciwgZXhwb3J0cy5hc3luYyA9IGZ1bmN0aW9uIChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCwgUHJvbWlzZUltcGwpIHtcbiAgICB2b2lkIDAgPT09IFByb21pc2VJbXBsICYmIChQcm9taXNlSW1wbCA9IFByb21pc2UpO1xuICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3Iod3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCksIFByb21pc2VJbXBsKTtcbiAgICByZXR1cm4gZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pID8gaXRlciA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7XG4gICAgfSk7XG4gIH0sIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhHcCksIGRlZmluZShHcCwgdG9TdHJpbmdUYWdTeW1ib2wsIFwiR2VuZXJhdG9yXCIpLCBkZWZpbmUoR3AsIGl0ZXJhdG9yU3ltYm9sLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pLCBkZWZpbmUoR3AsIFwidG9TdHJpbmdcIiwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuICB9KSwgZXhwb3J0cy5rZXlzID0gZnVuY3Rpb24gKHZhbCkge1xuICAgIHZhciBvYmplY3QgPSBPYmplY3QodmFsKSxcbiAgICAgIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSBrZXlzLnB1c2goa2V5KTtcbiAgICByZXR1cm4ga2V5cy5yZXZlcnNlKCksIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICBmb3IgKDsga2V5cy5sZW5ndGg7KSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzLnBvcCgpO1xuICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkgcmV0dXJuIG5leHQudmFsdWUgPSBrZXksIG5leHQuZG9uZSA9ICExLCBuZXh0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5leHQuZG9uZSA9ICEwLCBuZXh0O1xuICAgIH07XG4gIH0sIGV4cG9ydHMudmFsdWVzID0gdmFsdWVzLCBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcbiAgICByZXNldDogZnVuY3Rpb24gKHNraXBUZW1wUmVzZXQpIHtcbiAgICAgIGlmICh0aGlzLnByZXYgPSAwLCB0aGlzLm5leHQgPSAwLCB0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdW5kZWZpbmVkLCB0aGlzLmRvbmUgPSAhMSwgdGhpcy5kZWxlZ2F0ZSA9IG51bGwsIHRoaXMubWV0aG9kID0gXCJuZXh0XCIsIHRoaXMuYXJnID0gdW5kZWZpbmVkLCB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KSwgIXNraXBUZW1wUmVzZXQpIGZvciAodmFyIG5hbWUgaW4gdGhpcykgXCJ0XCIgPT09IG5hbWUuY2hhckF0KDApICYmIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmICFpc05hTigrbmFtZS5zbGljZSgxKSkgJiYgKHRoaXNbbmFtZV0gPSB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgc3RvcDogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5kb25lID0gITA7XG4gICAgICB2YXIgcm9vdFJlY29yZCA9IHRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO1xuICAgICAgaWYgKFwidGhyb3dcIiA9PT0gcm9vdFJlY29yZC50eXBlKSB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcbiAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24gKGV4Y2VwdGlvbikge1xuICAgICAgaWYgKHRoaXMuZG9uZSkgdGhyb3cgZXhjZXB0aW9uO1xuICAgICAgdmFyIGNvbnRleHQgPSB0aGlzO1xuICAgICAgZnVuY3Rpb24gaGFuZGxlKGxvYywgY2F1Z2h0KSB7XG4gICAgICAgIHJldHVybiByZWNvcmQudHlwZSA9IFwidGhyb3dcIiwgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbiwgY29udGV4dC5uZXh0ID0gbG9jLCBjYXVnaHQgJiYgKGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCIsIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkKSwgISFjYXVnaHQ7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXSxcbiAgICAgICAgICByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICBpZiAoXCJyb290XCIgPT09IGVudHJ5LnRyeUxvYykgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKSxcbiAgICAgICAgICAgIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuICAgICAgICAgIGlmIChoYXNDYXRjaCAmJiBoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsICEwKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2F0Y2gpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgITApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc0ZpbmFsbHkpIHRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBhYnJ1cHQ6IGZ1bmN0aW9uICh0eXBlLCBhcmcpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJiBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZpbmFsbHlFbnRyeSAmJiAoXCJicmVha1wiID09PSB0eXBlIHx8IFwiY29udGludWVcIiA9PT0gdHlwZSkgJiYgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiYgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jICYmIChmaW5hbGx5RW50cnkgPSBudWxsKTtcbiAgICAgIHZhciByZWNvcmQgPSBmaW5hbGx5RW50cnkgPyBmaW5hbGx5RW50cnkuY29tcGxldGlvbiA6IHt9O1xuICAgICAgcmV0dXJuIHJlY29yZC50eXBlID0gdHlwZSwgcmVjb3JkLmFyZyA9IGFyZywgZmluYWxseUVudHJ5ID8gKHRoaXMubWV0aG9kID0gXCJuZXh0XCIsIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jLCBDb250aW51ZVNlbnRpbmVsKSA6IHRoaXMuY29tcGxldGUocmVjb3JkKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgaWYgKFwidGhyb3dcIiA9PT0gcmVjb3JkLnR5cGUpIHRocm93IHJlY29yZC5hcmc7XG4gICAgICByZXR1cm4gXCJicmVha1wiID09PSByZWNvcmQudHlwZSB8fCBcImNvbnRpbnVlXCIgPT09IHJlY29yZC50eXBlID8gdGhpcy5uZXh0ID0gcmVjb3JkLmFyZyA6IFwicmV0dXJuXCIgPT09IHJlY29yZC50eXBlID8gKHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZywgdGhpcy5tZXRob2QgPSBcInJldHVyblwiLCB0aGlzLm5leHQgPSBcImVuZFwiKSA6IFwibm9ybWFsXCIgPT09IHJlY29yZC50eXBlICYmIGFmdGVyTG9jICYmICh0aGlzLm5leHQgPSBhZnRlckxvYyksIENvbnRpbnVlU2VudGluZWw7XG4gICAgfSxcbiAgICBmaW5pc2g6IGZ1bmN0aW9uIChmaW5hbGx5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LmZpbmFsbHlMb2MgPT09IGZpbmFsbHlMb2MpIHJldHVybiB0aGlzLmNvbXBsZXRlKGVudHJ5LmNvbXBsZXRpb24sIGVudHJ5LmFmdGVyTG9jKSwgcmVzZXRUcnlFbnRyeShlbnRyeSksIENvbnRpbnVlU2VudGluZWw7XG4gICAgICB9XG4gICAgfSxcbiAgICBjYXRjaDogZnVuY3Rpb24gKHRyeUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IHRyeUxvYykge1xuICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgIGlmIChcInRocm93XCIgPT09IHJlY29yZC50eXBlKSB7XG4gICAgICAgICAgICB2YXIgdGhyb3duID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhyb3duO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbiAoaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHJldHVybiB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcbiAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgbmV4dExvYzogbmV4dExvY1xuICAgICAgfSwgXCJuZXh0XCIgPT09IHRoaXMubWV0aG9kICYmICh0aGlzLmFyZyA9IHVuZGVmaW5lZCksIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuICB9LCBleHBvcnRzO1xufVxuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICB0cnkge1xuICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlamVjdChlcnJvcik7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChpbmZvLmRvbmUpIHtcbiAgICByZXNvbHZlKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgYXJncyA9IGFyZ3VtZW50cztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTtcbiAgICAgIH1cbiAgICAgIF9uZXh0KHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH07XG59XG5cbnZhciBERUZBVUxUX1RJTUVPVVQgPSA1MDAwO1xudmFyIFVuYXZhaWxhYmxlRXJyb3IgPSAvKiNfX1BVUkVfXyovbmV3IEVycm9yKCdGREMzIERlc2t0b3BBZ2VudCBub3QgYXZhaWxhYmxlIGF0IGB3aW5kb3cuZmRjM2AuJyk7XG52YXIgVGltZW91dEVycm9yID0gLyojX19QVVJFX18qL25ldyBFcnJvcignVGltZWQgb3V0IHdhaXRpbmcgZm9yIGBmZGMzUmVhZHlgIGV2ZW50LicpO1xudmFyIFVuZXhwZWN0ZWRFcnJvciA9IC8qI19fUFVSRV9fKi9uZXcgRXJyb3IoJ2BmZGMzUmVhZHlgIGV2ZW50IGZpcmVkLCBidXQgYHdpbmRvdy5mZGMzYCBub3Qgc2V0IHRvIERlc2t0b3BBZ2VudC4nKTtcbmZ1bmN0aW9uIHJlamVjdElmTm9HbG9iYWwoZikge1xuICByZXR1cm4gd2luZG93LmZkYzMgPyBmKCkgOiBQcm9taXNlLnJlamVjdChVbmF2YWlsYWJsZUVycm9yKTtcbn1cbi8qKlxyXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHByb21pc2UgdGhhdCB3aWxsIHJlc29sdmUgaW1tZWFkaWF0ZWx5XHJcbiAqIGlmIHRoZSBkZXNrdG9wIGFnZW50IEFQSSBpcyBmb3VuZCBhdCBgd2luZG93LmZkYzNgLiBJZiB0aGUgQVBJIGlzIGZvdW5kLFxyXG4gKiB0aGUgcHJvbWlzZSB3aWxsIHJlc29sdmUgd2hlbiB0aGUgYGZkYzNSZWFkeWAgZXZlbnQgaXMgcmVjZWl2ZWQgb3IgaWYgaXRcclxuICogaXMgZm91bmQgYXQgdGhlIGVuZCBvZiB0aGUgc3BlY2lmaWVkIHRpbWVvdXQuIElmIHRoZSBBUEkgaXMgbm90IGZvdW5kLCBpdFxyXG4gKiB3aWxsIHJlamVjdCB3aXRoIGFuIGVycm9yLlxyXG4gKlxyXG4gKiBgYGBqYXZhc2NyaXB0XHJcbiAqIGF3YWl0IGZkYzNSZWFkeSgpO1xyXG4gKiBjb25zdCBpbnRlbnRMaXN0ZW5lciA9IGF3YWl0IGFkZEludGVudExpc3RlbmVyKFwiVmlld0NoYXJ0XCIsIGludGVudEhhbmRsZXJGbik7XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAcGFyYW0gd2FpdEZvck1zIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIHRoZSBGREMzIEFQSSB0byBiZVxyXG4gKiByZWFkeS4gRGVmYXVsdHMgdG8gNSBzZWNvbmRzLlxyXG4gKi9cbnZhciBmZGMzUmVhZHkgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICB2YXIgX3JlZiA9IC8qI19fUFVSRV9fKi9fYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUod2FpdEZvck1zKSB7XG4gICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgaWYgKHdhaXRGb3JNcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB3YWl0Rm9yTXMgPSBERUZBVUxUX1RJTUVPVVQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgLy8gaWYgdGhlIGdsb2JhbCBpcyBhbHJlYWR5IGF2YWlsYWJsZSByZXNvbHZlIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICBpZiAod2luZG93LmZkYzMpIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gaWYgaXRzIG5vdCBhdmFpbGFibGUgc2V0dXAgYSB0aW1lb3V0IHRvIHJldHVybiBhIHJlamVjdGVkIHByb21pc2VcbiAgICAgICAgICAgICAgdmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmZkYzMgPyByZXNvbHZlKCkgOiByZWplY3QoVGltZW91dEVycm9yKTtcbiAgICAgICAgICAgICAgfSwgd2FpdEZvck1zKTtcbiAgICAgICAgICAgICAgLy8gbGlzdGVuIGZvciB0aGUgZmRjM1JlYWR5IGV2ZW50XG4gICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdmZGMzUmVhZHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIHdpbmRvdy5mZGMzID8gcmVzb2x2ZSgpIDogcmVqZWN0KFVuZXhwZWN0ZWRFcnJvcik7XG4gICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBvbmNlOiB0cnVlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgIH1cbiAgICB9LCBfY2FsbGVlKTtcbiAgfSkpO1xuICByZXR1cm4gZnVuY3Rpb24gZmRjM1JlYWR5KF94KSB7XG4gICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn0oKTtcbmZ1bmN0aW9uIGlzU3RyaW5nKGFwcCkge1xuICByZXR1cm4gISFhcHAgJiYgdHlwZW9mIGFwcCA9PT0gJ3N0cmluZyc7XG59XG5mdW5jdGlvbiBvcGVuKGFwcCwgY29udGV4dCkge1xuICBpZiAoaXNTdHJpbmcoYXBwKSkge1xuICAgIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB3aW5kb3cuZmRjMy5vcGVuKGFwcCwgY29udGV4dCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlamVjdElmTm9HbG9iYWwoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHdpbmRvdy5mZGMzLm9wZW4oYXBwLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxufVxuZnVuY3Rpb24gZmluZEludGVudChpbnRlbnQsIGNvbnRleHQsIHJlc3VsdFR5cGUpIHtcbiAgcmV0dXJuIHJlamVjdElmTm9HbG9iYWwoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB3aW5kb3cuZmRjMy5maW5kSW50ZW50KGludGVudCwgY29udGV4dCwgcmVzdWx0VHlwZSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gZmluZEludGVudHNCeUNvbnRleHQoY29udGV4dCwgcmVzdWx0VHlwZSkge1xuICByZXR1cm4gcmVqZWN0SWZOb0dsb2JhbChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5mZGMzLmZpbmRJbnRlbnRzQnlDb250ZXh0KGNvbnRleHQsIHJlc3VsdFR5cGUpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGJyb2FkY2FzdChjb250ZXh0KSB7XG4gIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gd2luZG93LmZkYzMuYnJvYWRjYXN0KGNvbnRleHQpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHJhaXNlSW50ZW50KGludGVudCwgY29udGV4dCwgYXBwKSB7XG4gIGlmIChpc1N0cmluZyhhcHApKSB7XG4gICAgcmV0dXJuIHJlamVjdElmTm9HbG9iYWwoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHdpbmRvdy5mZGMzLnJhaXNlSW50ZW50KGludGVudCwgY29udGV4dCwgYXBwKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVqZWN0SWZOb0dsb2JhbChmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gd2luZG93LmZkYzMucmFpc2VJbnRlbnQoaW50ZW50LCBjb250ZXh0LCBhcHApO1xuICAgIH0pO1xuICB9XG59XG5mdW5jdGlvbiByYWlzZUludGVudEZvckNvbnRleHQoY29udGV4dCwgYXBwKSB7XG4gIGlmIChpc1N0cmluZyhhcHApKSB7XG4gICAgcmV0dXJuIHJlamVjdElmTm9HbG9iYWwoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHdpbmRvdy5mZGMzLnJhaXNlSW50ZW50Rm9yQ29udGV4dChjb250ZXh0LCBhcHApO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB3aW5kb3cuZmRjMy5yYWlzZUludGVudEZvckNvbnRleHQoY29udGV4dCwgYXBwKTtcbiAgICB9KTtcbiAgfVxufVxuZnVuY3Rpb24gYWRkSW50ZW50TGlzdGVuZXIoaW50ZW50LCBoYW5kbGVyKSB7XG4gIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gd2luZG93LmZkYzMuYWRkSW50ZW50TGlzdGVuZXIoaW50ZW50LCBoYW5kbGVyKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBhZGRDb250ZXh0TGlzdGVuZXIoY29udGV4dFR5cGVPckhhbmRsZXIsIGhhbmRsZXIpIHtcbiAgLy9IYW5kbGUgKGRlcHJlY2F0ZWQpIGZ1bmN0aW9uIHNpZ25hdHVyZSB0aGF0IGFsbG93ZWQgY29udGV4dFR5cGUgYXJndW1lbnQgdG8gYmUgb21pdHRlZFxuICBpZiAodHlwZW9mIGNvbnRleHRUeXBlT3JIYW5kbGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHJlamVjdElmTm9HbG9iYWwoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHdpbmRvdy5mZGMzLmFkZENvbnRleHRMaXN0ZW5lcihjb250ZXh0VHlwZU9ySGFuZGxlciwgaGFuZGxlcik7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlamVjdElmTm9HbG9iYWwoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHdpbmRvdy5mZGMzLmFkZENvbnRleHRMaXN0ZW5lcihudWxsLCBjb250ZXh0VHlwZU9ySGFuZGxlcik7XG4gICAgfSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldFVzZXJDaGFubmVscygpIHtcbiAgcmV0dXJuIHJlamVjdElmTm9HbG9iYWwoZnVuY3Rpb24gKCkge1xuICAgIC8vZmFsbGJhY2sgdG8gZ2V0U3lzdGVtQ2hhbm5lbHMgZm9yIEZEQzMgPDIuMCBpbXBsZW1lbnRhdGlvbnNcbiAgICBpZiAod2luZG93LmZkYzMuZ2V0VXNlckNoYW5uZWxzKSB7XG4gICAgICByZXR1cm4gd2luZG93LmZkYzMuZ2V0VXNlckNoYW5uZWxzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB3aW5kb3cuZmRjMy5nZXRTeXN0ZW1DaGFubmVscygpO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBnZXRTeXN0ZW1DaGFubmVscygpIHtcbiAgLy9mYWxsZm9yd2FyZCB0byBnZXRVc2VyQ2hhbm5lbHMgZm9yIEZEQzMgMi4wKyBpbXBsZW1lbnRhdGlvbnNcbiAgcmV0dXJuIGdldFVzZXJDaGFubmVscygpO1xufVxuZnVuY3Rpb24gam9pblVzZXJDaGFubmVsKGNoYW5uZWxJZCkge1xuICByZXR1cm4gcmVqZWN0SWZOb0dsb2JhbChmdW5jdGlvbiAoKSB7XG4gICAgLy9mYWxsYmFjayB0byBqb2luQ2hhbm5lbCBmb3IgRkRDMyA8Mi4wIGltcGxlbWVudGF0aW9uc1xuICAgIGlmICh3aW5kb3cuZmRjMy5qb2luVXNlckNoYW5uZWwpIHtcbiAgICAgIHJldHVybiB3aW5kb3cuZmRjMy5qb2luVXNlckNoYW5uZWwoY2hhbm5lbElkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHdpbmRvdy5mZGMzLmpvaW5DaGFubmVsKGNoYW5uZWxJZCk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGpvaW5DaGFubmVsKGNoYW5uZWxJZCkge1xuICAvL2ZhbGxmb3J3YXJkIHRvIGpvaW5Vc2VyQ2hhbm5lbCBmb3IgRkRDMyAyLjArIGltcGxlbWVudGF0aW9uc1xuICByZXR1cm4gam9pblVzZXJDaGFubmVsKGNoYW5uZWxJZCk7XG59XG5mdW5jdGlvbiBnZXRPckNyZWF0ZUNoYW5uZWwoY2hhbm5lbElkKSB7XG4gIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gd2luZG93LmZkYzMuZ2V0T3JDcmVhdGVDaGFubmVsKGNoYW5uZWxJZCk7XG4gIH0pO1xufVxuZnVuY3Rpb24gZ2V0Q3VycmVudENoYW5uZWwoKSB7XG4gIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gd2luZG93LmZkYzMuZ2V0Q3VycmVudENoYW5uZWwoKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBsZWF2ZUN1cnJlbnRDaGFubmVsKCkge1xuICByZXR1cm4gcmVqZWN0SWZOb0dsb2JhbChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5mZGMzLmxlYXZlQ3VycmVudENoYW5uZWwoKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBjcmVhdGVQcml2YXRlQ2hhbm5lbCgpIHtcbiAgcmV0dXJuIHJlamVjdElmTm9HbG9iYWwoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB3aW5kb3cuZmRjMy5jcmVhdGVQcml2YXRlQ2hhbm5lbCgpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGdldEluZm8oKSB7XG4gIHJldHVybiByZWplY3RJZk5vR2xvYmFsKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gd2luZG93LmZkYzMuZ2V0SW5mbygpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGdldEFwcE1ldGFkYXRhKGFwcCkge1xuICByZXR1cm4gcmVqZWN0SWZOb0dsb2JhbChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5mZGMzLmdldEFwcE1ldGFkYXRhKGFwcCk7XG4gIH0pO1xufVxuZnVuY3Rpb24gZmluZEluc3RhbmNlcyhhcHApIHtcbiAgcmV0dXJuIHJlamVjdElmTm9HbG9iYWwoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB3aW5kb3cuZmRjMy5maW5kSW5zdGFuY2VzKGFwcCk7XG4gIH0pO1xufVxuLyoqXHJcbiAqIENvbXBhcmUgbnVtZXJpYyBzZW12ZXIgdmVyc2lvbiBudW1iZXIgc3RyaW5ncyAoaW4gdGhlIGZvcm0gYDEuMi4zYCkuXHJcbiAqXHJcbiAqIFJldHVybnMgYC0xYCBpZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBsb3dlciB2ZXJzaW9uIG51bWJlciB0aGFuIHRoZSBzZWNvbmQsXHJcbiAqIGAxYCBpZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgZ3JlYXRlciB0aGFuIHRoZSBzZWNvbmQsIDAgaWYgdGhlIGFyZ3VtZW50cyBhcmVcclxuICogZXF1YWwgYW5kIGBudWxsYCBpZiBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdGhlIGNvbXBhcmlzb24uXHJcbiAqXHJcbiAqIEBwYXJhbSBhXHJcbiAqIEBwYXJhbSBiXHJcbiAqL1xudmFyIGNvbXBhcmVWZXJzaW9uTnVtYmVycyA9IGZ1bmN0aW9uIGNvbXBhcmVWZXJzaW9uTnVtYmVycyhhLCBiKSB7XG4gIHRyeSB7XG4gICAgdmFyIGFWZXJBcnIgPSBhLnNwbGl0KCcuJykubWFwKE51bWJlcik7XG4gICAgdmFyIGJWZXJBcnIgPSBiLnNwbGl0KCcuJykubWFwKE51bWJlcik7XG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IE1hdGgubWF4KGFWZXJBcnIubGVuZ3RoLCBiVmVyQXJyLmxlbmd0aCk7IGluZGV4KyspIHtcbiAgICAgIC8qIElmIG9uZSB2ZXJzaW9uIG51bWJlciBoYXMgbW9yZSBkaWdpdHMgYW5kIHRoZSBvdGhlciBkb2VzIG5vdCwgYW5kIHRoZXkgYXJlIG90aGVyd2lzZSBlcXVhbCxcclxuICAgICAgICAgYXNzdW1lIHRoZSBsb25nZXIgaXMgZ3JlYXRlci4gRS5nLiAxLjEuMSA+IDEuMSAqL1xuICAgICAgaWYgKGluZGV4ID09PSBhVmVyQXJyLmxlbmd0aCB8fCBhVmVyQXJyW2luZGV4XSA8IGJWZXJBcnJbaW5kZXhdKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT09IGJWZXJBcnIubGVuZ3RoIHx8IGFWZXJBcnJbaW5kZXhdID4gYlZlckFycltpbmRleF0pIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGNvbXBhcmUgdmVyc2lvbiBzdHJpbmdzJywgZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG4vKipcclxuICogQ2hlY2sgaWYgdGhlIEZEQzMgdmVyc2lvbiBpbiBhbiBJbXBsZW1lbnRhdGlvbk1ldGFkYXRhIG9iamVjdCBpcyBncmVhdGVyIHRoYW5cclxuICogb3IgZXF1YWwgdG8gdGhlIHN1cHBsaWVkIG51bWVyaWMgc2VtdmVyIHZlcnNpb24gbnVtYmVyIHN0cmluZyAoaW4gdGhlIGZvcm0gYDEuMi4zYCkuXHJcbiAqXHJcbiAqIFJldHVybnMgYSBib29sZWFuIG9yIG51bGwgaWYgYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgY29tcGFyaW5nIHRoZSB2ZXJzaW9uIG51bWJlcnMuXHJcbiAqXHJcbiAqIEBwYXJhbSBtZXRhZGF0YVxyXG4gKiBAcGFyYW0gdmVyc2lvblxyXG4gKi9cbnZhciB2ZXJzaW9uSXNBdExlYXN0ID0gZnVuY3Rpb24gdmVyc2lvbklzQXRMZWFzdChtZXRhZGF0YSwgdmVyc2lvbikge1xuICB2YXIgY29tcGFyaXNvbiA9IGNvbXBhcmVWZXJzaW9uTnVtYmVycyhtZXRhZGF0YS5mZGMzVmVyc2lvbiwgdmVyc2lvbik7XG4gIHJldHVybiBjb21wYXJpc29uID09PSBudWxsID8gbnVsbCA6IGNvbXBhcmlzb24gPj0gMCA/IHRydWUgOiBmYWxzZTtcbn07XG5cbnZhciBDb250ZXh0VHlwZXM7XG4oZnVuY3Rpb24gKENvbnRleHRUeXBlcykge1xuICBDb250ZXh0VHlwZXNbXCJDaGFydFwiXSA9IFwiZmRjMy5jaGFydFwiO1xuICBDb250ZXh0VHlwZXNbXCJDaGF0SW5pdFNldHRpbmdzXCJdID0gXCJmZGMzLmNoYXQuaW5pdFNldHRpbmdzXCI7XG4gIENvbnRleHRUeXBlc1tcIkNvbnRhY3RcIl0gPSBcImZkYzMuY29udGFjdFwiO1xuICBDb250ZXh0VHlwZXNbXCJDb250YWN0TGlzdFwiXSA9IFwiZmRjMy5jb250YWN0TGlzdFwiO1xuICBDb250ZXh0VHlwZXNbXCJDb3VudHJ5XCJdID0gXCJmZGMzLmNvdW50cnlcIjtcbiAgQ29udGV4dFR5cGVzW1wiQ3VycmVuY3lcIl0gPSBcImZkYzMuY3VycmVuY3lcIjtcbiAgQ29udGV4dFR5cGVzW1wiRW1haWxcIl0gPSBcImZkYzMuZW1haWxcIjtcbiAgQ29udGV4dFR5cGVzW1wiSW5zdHJ1bWVudFwiXSA9IFwiZmRjMy5pbnN0cnVtZW50XCI7XG4gIENvbnRleHRUeXBlc1tcIkluc3RydW1lbnRMaXN0XCJdID0gXCJmZGMzLmluc3RydW1lbnRMaXN0XCI7XG4gIENvbnRleHRUeXBlc1tcIk9yZ2FuaXphdGlvblwiXSA9IFwiZmRjMy5vcmdhbml6YXRpb25cIjtcbiAgQ29udGV4dFR5cGVzW1wiUG9ydGZvbGlvXCJdID0gXCJmZGMzLnBvcnRmb2xpb1wiO1xuICBDb250ZXh0VHlwZXNbXCJQb3NpdGlvblwiXSA9IFwiZmRjMy5wb3NpdGlvblwiO1xuICBDb250ZXh0VHlwZXNbXCJOb3RoaW5nXCJdID0gXCJmZGMzLm5vdGhpbmdcIjtcbiAgQ29udGV4dFR5cGVzW1wiVGltZVJhbmdlXCJdID0gXCJmZGMzLnRpbWVyYW5nZVwiO1xuICBDb250ZXh0VHlwZXNbXCJWYWx1YXRpb25cIl0gPSBcImZkYzMudmFsdWF0aW9uXCI7XG59KShDb250ZXh0VHlwZXMgfHwgKENvbnRleHRUeXBlcyA9IHt9KSk7XG5cbi8vIFRvIHBhcnNlIHRoaXMgZGF0YTpcbi8vXG4vLyAgIGltcG9ydCB7IENvbnZlcnQsIENoYXJ0LCBDaGF0SW5pdFNldHRpbmdzLCBDb250YWN0LCBDb250YWN0TGlzdCwgQ29udGV4dCwgQ291bnRyeSwgQ3VycmVuY3ksIEVtYWlsLCBJbnN0cnVtZW50LCBJbnN0cnVtZW50TGlzdCwgTm90aGluZywgT3JnYW5pemF0aW9uLCBQb3J0Zm9saW8sIFBvc2l0aW9uLCBUaW1lUmFuZ2UsIFZhbHVhdGlvbiB9IGZyb20gXCIuL2ZpbGVcIjtcbi8vXG4vLyAgIGNvbnN0IGNoYXJ0ID0gQ29udmVydC50b0NoYXJ0KGpzb24pO1xuLy8gICBjb25zdCBjaGF0SW5pdFNldHRpbmdzID0gQ29udmVydC50b0NoYXRJbml0U2V0dGluZ3MoanNvbik7XG4vLyAgIGNvbnN0IGNvbnRhY3QgPSBDb252ZXJ0LnRvQ29udGFjdChqc29uKTtcbi8vICAgY29uc3QgY29udGFjdExpc3QgPSBDb252ZXJ0LnRvQ29udGFjdExpc3QoanNvbik7XG4vLyAgIGNvbnN0IGNvbnRleHQgPSBDb252ZXJ0LnRvQ29udGV4dChqc29uKTtcbi8vICAgY29uc3QgY291bnRyeSA9IENvbnZlcnQudG9Db3VudHJ5KGpzb24pO1xuLy8gICBjb25zdCBjdXJyZW5jeSA9IENvbnZlcnQudG9DdXJyZW5jeShqc29uKTtcbi8vICAgY29uc3QgZW1haWwgPSBDb252ZXJ0LnRvRW1haWwoanNvbik7XG4vLyAgIGNvbnN0IGluc3RydW1lbnQgPSBDb252ZXJ0LnRvSW5zdHJ1bWVudChqc29uKTtcbi8vICAgY29uc3QgaW5zdHJ1bWVudExpc3QgPSBDb252ZXJ0LnRvSW5zdHJ1bWVudExpc3QoanNvbik7XG4vLyAgIGNvbnN0IG5vdGhpbmcgPSBDb252ZXJ0LnRvTm90aGluZyhqc29uKTtcbi8vICAgY29uc3Qgb3JnYW5pemF0aW9uID0gQ29udmVydC50b09yZ2FuaXphdGlvbihqc29uKTtcbi8vICAgY29uc3QgcG9ydGZvbGlvID0gQ29udmVydC50b1BvcnRmb2xpbyhqc29uKTtcbi8vICAgY29uc3QgcG9zaXRpb24gPSBDb252ZXJ0LnRvUG9zaXRpb24oanNvbik7XG4vLyAgIGNvbnN0IHRpbWVSYW5nZSA9IENvbnZlcnQudG9UaW1lUmFuZ2UoanNvbik7XG4vLyAgIGNvbnN0IHZhbHVhdGlvbiA9IENvbnZlcnQudG9WYWx1YXRpb24oanNvbik7XG4vL1xuLy8gVGhlc2UgZnVuY3Rpb25zIHdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIEpTT04gZG9lc24ndFxuLy8gbWF0Y2ggdGhlIGV4cGVjdGVkIGludGVyZmFjZSwgZXZlbiBpZiB0aGUgSlNPTiBpcyB2YWxpZC5cbnZhciBTdHlsZTtcbihmdW5jdGlvbiAoU3R5bGUpIHtcbiAgU3R5bGVbXCJCYXJcIl0gPSBcImJhclwiO1xuICBTdHlsZVtcIkNhbmRsZVwiXSA9IFwiY2FuZGxlXCI7XG4gIFN0eWxlW1wiQ3VzdG9tXCJdID0gXCJjdXN0b21cIjtcbiAgU3R5bGVbXCJIZWF0bWFwXCJdID0gXCJoZWF0bWFwXCI7XG4gIFN0eWxlW1wiSGlzdG9ncmFtXCJdID0gXCJoaXN0b2dyYW1cIjtcbiAgU3R5bGVbXCJMaW5lXCJdID0gXCJsaW5lXCI7XG4gIFN0eWxlW1wiTW91bnRhaW5cIl0gPSBcIm1vdW50YWluXCI7XG4gIFN0eWxlW1wiUGllXCJdID0gXCJwaWVcIjtcbiAgU3R5bGVbXCJTY2F0dGVyXCJdID0gXCJzY2F0dGVyXCI7XG4gIFN0eWxlW1wiU3RhY2tlZEJhclwiXSA9IFwic3RhY2tlZC1iYXJcIjtcbn0pKFN0eWxlIHx8IChTdHlsZSA9IHt9KSk7XG4vLyBDb252ZXJ0cyBKU09OIHN0cmluZ3MgdG8vZnJvbSB5b3VyIHR5cGVzXG4vLyBhbmQgYXNzZXJ0cyB0aGUgcmVzdWx0cyBvZiBKU09OLnBhcnNlIGF0IHJ1bnRpbWVcbnZhciBDb252ZXJ0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQ29udmVydCgpIHt9XG4gIENvbnZlcnQudG9DaGFydCA9IGZ1bmN0aW9uIHRvQ2hhcnQoanNvbikge1xuICAgIHJldHVybiBjYXN0KEpTT04ucGFyc2UoanNvbiksIHIoJ0NoYXJ0JykpO1xuICB9O1xuICBDb252ZXJ0LmNoYXJ0VG9Kc29uID0gZnVuY3Rpb24gY2hhcnRUb0pzb24odmFsdWUpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodW5jYXN0KHZhbHVlLCByKCdDaGFydCcpKSwgbnVsbCwgMik7XG4gIH07XG4gIENvbnZlcnQudG9DaGF0SW5pdFNldHRpbmdzID0gZnVuY3Rpb24gdG9DaGF0SW5pdFNldHRpbmdzKGpzb24pIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKCdDaGF0SW5pdFNldHRpbmdzJykpO1xuICB9O1xuICBDb252ZXJ0LmNoYXRJbml0U2V0dGluZ3NUb0pzb24gPSBmdW5jdGlvbiBjaGF0SW5pdFNldHRpbmdzVG9Kc29uKHZhbHVlKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcignQ2hhdEluaXRTZXR0aW5ncycpKSwgbnVsbCwgMik7XG4gIH07XG4gIENvbnZlcnQudG9Db250YWN0ID0gZnVuY3Rpb24gdG9Db250YWN0KGpzb24pIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKCdDb250YWN0JykpO1xuICB9O1xuICBDb252ZXJ0LmNvbnRhY3RUb0pzb24gPSBmdW5jdGlvbiBjb250YWN0VG9Kc29uKHZhbHVlKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcignQ29udGFjdCcpKSwgbnVsbCwgMik7XG4gIH07XG4gIENvbnZlcnQudG9Db250YWN0TGlzdCA9IGZ1bmN0aW9uIHRvQ29udGFjdExpc3QoanNvbikge1xuICAgIHJldHVybiBjYXN0KEpTT04ucGFyc2UoanNvbiksIHIoJ0NvbnRhY3RMaXN0JykpO1xuICB9O1xuICBDb252ZXJ0LmNvbnRhY3RMaXN0VG9Kc29uID0gZnVuY3Rpb24gY29udGFjdExpc3RUb0pzb24odmFsdWUpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodW5jYXN0KHZhbHVlLCByKCdDb250YWN0TGlzdCcpKSwgbnVsbCwgMik7XG4gIH07XG4gIENvbnZlcnQudG9Db250ZXh0ID0gZnVuY3Rpb24gdG9Db250ZXh0KGpzb24pIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKCdDb250ZXh0JykpO1xuICB9O1xuICBDb252ZXJ0LmNvbnRleHRUb0pzb24gPSBmdW5jdGlvbiBjb250ZXh0VG9Kc29uKHZhbHVlKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcignQ29udGV4dCcpKSwgbnVsbCwgMik7XG4gIH07XG4gIENvbnZlcnQudG9Db3VudHJ5ID0gZnVuY3Rpb24gdG9Db3VudHJ5KGpzb24pIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKCdDb3VudHJ5JykpO1xuICB9O1xuICBDb252ZXJ0LmNvdW50cnlUb0pzb24gPSBmdW5jdGlvbiBjb3VudHJ5VG9Kc29uKHZhbHVlKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcignQ291bnRyeScpKSwgbnVsbCwgMik7XG4gIH07XG4gIENvbnZlcnQudG9DdXJyZW5jeSA9IGZ1bmN0aW9uIHRvQ3VycmVuY3koanNvbikge1xuICAgIHJldHVybiBjYXN0KEpTT04ucGFyc2UoanNvbiksIHIoJ0N1cnJlbmN5JykpO1xuICB9O1xuICBDb252ZXJ0LmN1cnJlbmN5VG9Kc29uID0gZnVuY3Rpb24gY3VycmVuY3lUb0pzb24odmFsdWUpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodW5jYXN0KHZhbHVlLCByKCdDdXJyZW5jeScpKSwgbnVsbCwgMik7XG4gIH07XG4gIENvbnZlcnQudG9FbWFpbCA9IGZ1bmN0aW9uIHRvRW1haWwoanNvbikge1xuICAgIHJldHVybiBjYXN0KEpTT04ucGFyc2UoanNvbiksIHIoJ0VtYWlsJykpO1xuICB9O1xuICBDb252ZXJ0LmVtYWlsVG9Kc29uID0gZnVuY3Rpb24gZW1haWxUb0pzb24odmFsdWUpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodW5jYXN0KHZhbHVlLCByKCdFbWFpbCcpKSwgbnVsbCwgMik7XG4gIH07XG4gIENvbnZlcnQudG9JbnN0cnVtZW50ID0gZnVuY3Rpb24gdG9JbnN0cnVtZW50KGpzb24pIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKCdJbnN0cnVtZW50JykpO1xuICB9O1xuICBDb252ZXJ0Lmluc3RydW1lbnRUb0pzb24gPSBmdW5jdGlvbiBpbnN0cnVtZW50VG9Kc29uKHZhbHVlKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcignSW5zdHJ1bWVudCcpKSwgbnVsbCwgMik7XG4gIH07XG4gIENvbnZlcnQudG9JbnN0cnVtZW50TGlzdCA9IGZ1bmN0aW9uIHRvSW5zdHJ1bWVudExpc3QoanNvbikge1xuICAgIHJldHVybiBjYXN0KEpTT04ucGFyc2UoanNvbiksIHIoJ0luc3RydW1lbnRMaXN0JykpO1xuICB9O1xuICBDb252ZXJ0Lmluc3RydW1lbnRMaXN0VG9Kc29uID0gZnVuY3Rpb24gaW5zdHJ1bWVudExpc3RUb0pzb24odmFsdWUpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodW5jYXN0KHZhbHVlLCByKCdJbnN0cnVtZW50TGlzdCcpKSwgbnVsbCwgMik7XG4gIH07XG4gIENvbnZlcnQudG9Ob3RoaW5nID0gZnVuY3Rpb24gdG9Ob3RoaW5nKGpzb24pIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKCdOb3RoaW5nJykpO1xuICB9O1xuICBDb252ZXJ0Lm5vdGhpbmdUb0pzb24gPSBmdW5jdGlvbiBub3RoaW5nVG9Kc29uKHZhbHVlKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcignTm90aGluZycpKSwgbnVsbCwgMik7XG4gIH07XG4gIENvbnZlcnQudG9Pcmdhbml6YXRpb24gPSBmdW5jdGlvbiB0b09yZ2FuaXphdGlvbihqc29uKSB7XG4gICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcignT3JnYW5pemF0aW9uJykpO1xuICB9O1xuICBDb252ZXJ0Lm9yZ2FuaXphdGlvblRvSnNvbiA9IGZ1bmN0aW9uIG9yZ2FuaXphdGlvblRvSnNvbih2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoJ09yZ2FuaXphdGlvbicpKSwgbnVsbCwgMik7XG4gIH07XG4gIENvbnZlcnQudG9Qb3J0Zm9saW8gPSBmdW5jdGlvbiB0b1BvcnRmb2xpbyhqc29uKSB7XG4gICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcignUG9ydGZvbGlvJykpO1xuICB9O1xuICBDb252ZXJ0LnBvcnRmb2xpb1RvSnNvbiA9IGZ1bmN0aW9uIHBvcnRmb2xpb1RvSnNvbih2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoJ1BvcnRmb2xpbycpKSwgbnVsbCwgMik7XG4gIH07XG4gIENvbnZlcnQudG9Qb3NpdGlvbiA9IGZ1bmN0aW9uIHRvUG9zaXRpb24oanNvbikge1xuICAgIHJldHVybiBjYXN0KEpTT04ucGFyc2UoanNvbiksIHIoJ1Bvc2l0aW9uJykpO1xuICB9O1xuICBDb252ZXJ0LnBvc2l0aW9uVG9Kc29uID0gZnVuY3Rpb24gcG9zaXRpb25Ub0pzb24odmFsdWUpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodW5jYXN0KHZhbHVlLCByKCdQb3NpdGlvbicpKSwgbnVsbCwgMik7XG4gIH07XG4gIENvbnZlcnQudG9UaW1lUmFuZ2UgPSBmdW5jdGlvbiB0b1RpbWVSYW5nZShqc29uKSB7XG4gICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcignVGltZVJhbmdlJykpO1xuICB9O1xuICBDb252ZXJ0LnRpbWVSYW5nZVRvSnNvbiA9IGZ1bmN0aW9uIHRpbWVSYW5nZVRvSnNvbih2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoJ1RpbWVSYW5nZScpKSwgbnVsbCwgMik7XG4gIH07XG4gIENvbnZlcnQudG9WYWx1YXRpb24gPSBmdW5jdGlvbiB0b1ZhbHVhdGlvbihqc29uKSB7XG4gICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcignVmFsdWF0aW9uJykpO1xuICB9O1xuICBDb252ZXJ0LnZhbHVhdGlvblRvSnNvbiA9IGZ1bmN0aW9uIHZhbHVhdGlvblRvSnNvbih2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoJ1ZhbHVhdGlvbicpKSwgbnVsbCwgMik7XG4gIH07XG4gIHJldHVybiBDb252ZXJ0O1xufSgpO1xuZnVuY3Rpb24gaW52YWxpZFZhbHVlKHR5cCwgdmFsLCBrZXksIHBhcmVudCkge1xuICBpZiAocGFyZW50ID09PSB2b2lkIDApIHtcbiAgICBwYXJlbnQgPSAnJztcbiAgfVxuICB2YXIgcHJldHR5VHlwID0gcHJldHR5VHlwZU5hbWUodHlwKTtcbiAgdmFyIHBhcmVudFRleHQgPSBwYXJlbnQgPyBcIiBvbiBcIiArIHBhcmVudCA6ICcnO1xuICB2YXIga2V5VGV4dCA9IGtleSA/IFwiIGZvciBrZXkgXFxcIlwiICsga2V5ICsgXCJcXFwiXCIgOiAnJztcbiAgdGhyb3cgRXJyb3IoXCJJbnZhbGlkIHZhbHVlXCIgKyBrZXlUZXh0ICsgcGFyZW50VGV4dCArIFwiLiBFeHBlY3RlZCBcIiArIHByZXR0eVR5cCArIFwiIGJ1dCBnb3QgXCIgKyBKU09OLnN0cmluZ2lmeSh2YWwpKTtcbn1cbmZ1bmN0aW9uIHByZXR0eVR5cGVOYW1lKHR5cCkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0eXApKSB7XG4gICAgaWYgKHR5cC5sZW5ndGggPT09IDIgJiYgdHlwWzBdID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBcImFuIG9wdGlvbmFsIFwiICsgcHJldHR5VHlwZU5hbWUodHlwWzFdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwib25lIG9mIFtcIiArIHR5cC5tYXAoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgcmV0dXJuIHByZXR0eVR5cGVOYW1lKGEpO1xuICAgICAgfSkuam9pbignLCAnKSArIFwiXVwiO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdHlwID09PSAnb2JqZWN0JyAmJiB0eXAubGl0ZXJhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHR5cC5saXRlcmFsO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0eXBlb2YgdHlwO1xuICB9XG59XG5mdW5jdGlvbiBqc29uVG9KU1Byb3BzKHR5cCkge1xuICBpZiAodHlwLmpzb25Ub0pTID09PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgbWFwID0ge307XG4gICAgdHlwLnByb3BzLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgIHJldHVybiBtYXBbcC5qc29uXSA9IHtcbiAgICAgICAga2V5OiBwLmpzLFxuICAgICAgICB0eXA6IHAudHlwXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHR5cC5qc29uVG9KUyA9IG1hcDtcbiAgfVxuICByZXR1cm4gdHlwLmpzb25Ub0pTO1xufVxuZnVuY3Rpb24ganNUb0pTT05Qcm9wcyh0eXApIHtcbiAgaWYgKHR5cC5qc1RvSlNPTiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIG1hcCA9IHt9O1xuICAgIHR5cC5wcm9wcy5mb3JFYWNoKGZ1bmN0aW9uIChwKSB7XG4gICAgICByZXR1cm4gbWFwW3AuanNdID0ge1xuICAgICAgICBrZXk6IHAuanNvbixcbiAgICAgICAgdHlwOiBwLnR5cFxuICAgICAgfTtcbiAgICB9KTtcbiAgICB0eXAuanNUb0pTT04gPSBtYXA7XG4gIH1cbiAgcmV0dXJuIHR5cC5qc1RvSlNPTjtcbn1cbmZ1bmN0aW9uIHRyYW5zZm9ybSh2YWwsIHR5cCwgZ2V0UHJvcHMsIGtleSwgcGFyZW50KSB7XG4gIGlmIChrZXkgPT09IHZvaWQgMCkge1xuICAgIGtleSA9ICcnO1xuICB9XG4gIGlmIChwYXJlbnQgPT09IHZvaWQgMCkge1xuICAgIHBhcmVudCA9ICcnO1xuICB9XG4gIGZ1bmN0aW9uIHRyYW5zZm9ybVByaW1pdGl2ZSh0eXAsIHZhbCkge1xuICAgIGlmICh0eXBlb2YgdHlwID09PSB0eXBlb2YgdmFsKSByZXR1cm4gdmFsO1xuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwsIGtleSwgcGFyZW50KTtcbiAgfVxuICBmdW5jdGlvbiB0cmFuc2Zvcm1Vbmlvbih0eXBzLCB2YWwpIHtcbiAgICAvLyB2YWwgbXVzdCB2YWxpZGF0ZSBhZ2FpbnN0IG9uZSB0eXAgaW4gdHlwc1xuICAgIHZhciBsID0gdHlwcy5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBfdHlwID0gdHlwc1tpXTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm0odmFsLCBfdHlwLCBnZXRQcm9wcyk7XG4gICAgICB9IGNhdGNoIChfKSB7fVxuICAgIH1cbiAgICByZXR1cm4gaW52YWxpZFZhbHVlKHR5cHMsIHZhbCwga2V5LCBwYXJlbnQpO1xuICB9XG4gIGZ1bmN0aW9uIHRyYW5zZm9ybUVudW0oY2FzZXMsIHZhbCkge1xuICAgIGlmIChjYXNlcy5pbmRleE9mKHZhbCkgIT09IC0xKSByZXR1cm4gdmFsO1xuICAgIHJldHVybiBpbnZhbGlkVmFsdWUoY2FzZXMubWFwKGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gbChhKTtcbiAgICB9KSwgdmFsLCBrZXksIHBhcmVudCk7XG4gIH1cbiAgZnVuY3Rpb24gdHJhbnNmb3JtQXJyYXkodHlwLCB2YWwpIHtcbiAgICAvLyB2YWwgbXVzdCBiZSBhbiBhcnJheSB3aXRoIG5vIGludmFsaWQgZWxlbWVudHNcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsKSkgcmV0dXJuIGludmFsaWRWYWx1ZShsKCdhcnJheScpLCB2YWwsIGtleSwgcGFyZW50KTtcbiAgICByZXR1cm4gdmFsLm1hcChmdW5jdGlvbiAoZWwpIHtcbiAgICAgIHJldHVybiB0cmFuc2Zvcm0oZWwsIHR5cCwgZ2V0UHJvcHMpO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIHRyYW5zZm9ybURhdGUodmFsKSB7XG4gICAgaWYgKHZhbCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBkID0gbmV3IERhdGUodmFsKTtcbiAgICBpZiAoaXNOYU4oZC52YWx1ZU9mKCkpKSB7XG4gICAgICByZXR1cm4gaW52YWxpZFZhbHVlKGwoJ0RhdGUnKSwgdmFsLCBrZXksIHBhcmVudCk7XG4gICAgfVxuICAgIHJldHVybiBkO1xuICB9XG4gIGZ1bmN0aW9uIHRyYW5zZm9ybU9iamVjdChwcm9wcywgYWRkaXRpb25hbCwgdmFsKSB7XG4gICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIHJldHVybiBpbnZhbGlkVmFsdWUobChyZWYgfHwgJ29iamVjdCcpLCB2YWwsIGtleSwgcGFyZW50KTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3BzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBwcm9wID0gcHJvcHNba2V5XTtcbiAgICAgIHZhciB2ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbCwga2V5KSA/IHZhbFtrZXldIDogdW5kZWZpbmVkO1xuICAgICAgcmVzdWx0W3Byb3Aua2V5XSA9IHRyYW5zZm9ybSh2LCBwcm9wLnR5cCwgZ2V0UHJvcHMsIGtleSwgcmVmKTtcbiAgICB9KTtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh2YWwpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIGtleSkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSB0cmFuc2Zvcm0odmFsW2tleV0sIGFkZGl0aW9uYWwsIGdldFByb3BzLCBrZXksIHJlZik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAodHlwID09PSAnYW55JykgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cCA9PT0gbnVsbCkge1xuICAgIGlmICh2YWwgPT09IG51bGwpIHJldHVybiB2YWw7XG4gICAgcmV0dXJuIGludmFsaWRWYWx1ZSh0eXAsIHZhbCwga2V5LCBwYXJlbnQpO1xuICB9XG4gIGlmICh0eXAgPT09IGZhbHNlKSByZXR1cm4gaW52YWxpZFZhbHVlKHR5cCwgdmFsLCBrZXksIHBhcmVudCk7XG4gIHZhciByZWYgPSB1bmRlZmluZWQ7XG4gIHdoaWxlICh0eXBlb2YgdHlwID09PSAnb2JqZWN0JyAmJiB0eXAucmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICByZWYgPSB0eXAucmVmO1xuICAgIHR5cCA9IHR5cGVNYXBbdHlwLnJlZl07XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodHlwKSkgcmV0dXJuIHRyYW5zZm9ybUVudW0odHlwLCB2YWwpO1xuICBpZiAodHlwZW9mIHR5cCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gdHlwLmhhc093blByb3BlcnR5KCd1bmlvbk1lbWJlcnMnKSA/IHRyYW5zZm9ybVVuaW9uKHR5cC51bmlvbk1lbWJlcnMsIHZhbCkgOiB0eXAuaGFzT3duUHJvcGVydHkoJ2FycmF5SXRlbXMnKSA/IHRyYW5zZm9ybUFycmF5KHR5cC5hcnJheUl0ZW1zLCB2YWwpIDogdHlwLmhhc093blByb3BlcnR5KCdwcm9wcycpID8gdHJhbnNmb3JtT2JqZWN0KGdldFByb3BzKHR5cCksIHR5cC5hZGRpdGlvbmFsLCB2YWwpIDogaW52YWxpZFZhbHVlKHR5cCwgdmFsLCBrZXksIHBhcmVudCk7XG4gIH1cbiAgLy8gTnVtYmVycyBjYW4gYmUgcGFyc2VkIGJ5IERhdGUgYnV0IHNob3VsZG4ndCBiZS5cbiAgaWYgKHR5cCA9PT0gRGF0ZSAmJiB0eXBlb2YgdmFsICE9PSAnbnVtYmVyJykgcmV0dXJuIHRyYW5zZm9ybURhdGUodmFsKTtcbiAgcmV0dXJuIHRyYW5zZm9ybVByaW1pdGl2ZSh0eXAsIHZhbCk7XG59XG5mdW5jdGlvbiBjYXN0KHZhbCwgdHlwKSB7XG4gIHJldHVybiB0cmFuc2Zvcm0odmFsLCB0eXAsIGpzb25Ub0pTUHJvcHMpO1xufVxuZnVuY3Rpb24gdW5jYXN0KHZhbCwgdHlwKSB7XG4gIHJldHVybiB0cmFuc2Zvcm0odmFsLCB0eXAsIGpzVG9KU09OUHJvcHMpO1xufVxuZnVuY3Rpb24gbCh0eXApIHtcbiAgcmV0dXJuIHtcbiAgICBsaXRlcmFsOiB0eXBcbiAgfTtcbn1cbmZ1bmN0aW9uIGEodHlwKSB7XG4gIHJldHVybiB7XG4gICAgYXJyYXlJdGVtczogdHlwXG4gIH07XG59XG5mdW5jdGlvbiB1KCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgdHlwcyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICB0eXBzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG4gIHJldHVybiB7XG4gICAgdW5pb25NZW1iZXJzOiB0eXBzXG4gIH07XG59XG5mdW5jdGlvbiBvKHByb3BzLCBhZGRpdGlvbmFsKSB7XG4gIHJldHVybiB7XG4gICAgcHJvcHM6IHByb3BzLFxuICAgIGFkZGl0aW9uYWw6IGFkZGl0aW9uYWxcbiAgfTtcbn1cbmZ1bmN0aW9uIG0oYWRkaXRpb25hbCkge1xuICByZXR1cm4ge1xuICAgIHByb3BzOiBbXSxcbiAgICBhZGRpdGlvbmFsOiBhZGRpdGlvbmFsXG4gIH07XG59XG5mdW5jdGlvbiByKG5hbWUpIHtcbiAgcmV0dXJuIHtcbiAgICByZWY6IG5hbWVcbiAgfTtcbn1cbnZhciB0eXBlTWFwID0ge1xuICBDaGFydDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnaW5zdHJ1bWVudHMnLFxuICAgIGpzOiAnaW5zdHJ1bWVudHMnLFxuICAgIHR5cDogLyojX19QVVJFX18qL2EoIC8qI19fUFVSRV9fKi9yKCdJbnN0cnVtZW50RWxlbWVudCcpKVxuICB9LCB7XG4gICAganNvbjogJ290aGVyQ29uZmlnJyxcbiAgICBqczogJ290aGVyQ29uZmlnJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL20oJ2FueScpKVxuICB9LCB7XG4gICAganNvbjogJ3JhbmdlJyxcbiAgICBqczogJ3JhbmdlJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL3IoJ1RpbWVSYW5nZU9iamVjdCcpKVxuICB9LCB7XG4gICAganNvbjogJ3N0eWxlJyxcbiAgICBqczogJ3N0eWxlJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL3IoJ1N0eWxlJykpXG4gIH0sIHtcbiAgICBqc29uOiAndHlwZScsXG4gICAganM6ICd0eXBlJyxcbiAgICB0eXA6ICcnXG4gIH0sIHtcbiAgICBqc29uOiAnaWQnLFxuICAgIGpzOiAnaWQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAvKiNfX1BVUkVfXyovbSgnYW55JykpXG4gIH0sIHtcbiAgICBqc29uOiAnbmFtZScsXG4gICAganM6ICduYW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIEluc3RydW1lbnRFbGVtZW50OiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdpZCcsXG4gICAganM6ICdpZCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovcignUHVycGxlSUQnKVxuICB9LCB7XG4gICAganNvbjogJ21hcmtldCcsXG4gICAganM6ICdtYXJrZXQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAvKiNfX1BVUkVfXyovcignUHVycGxlTWFya2V0JykpXG4gIH0sIHtcbiAgICBqc29uOiAndHlwZScsXG4gICAganM6ICd0eXBlJyxcbiAgICB0eXA6ICcnXG4gIH0sIHtcbiAgICBqc29uOiAnbmFtZScsXG4gICAganM6ICduYW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIFB1cnBsZUlEOiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdCQkcnLFxuICAgIGpzOiAnQkJHJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnQ1VTSVAnLFxuICAgIGpzOiAnQ1VTSVAnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdGRFNfSUQnLFxuICAgIGpzOiAnRkRTX0lEJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnRklHSScsXG4gICAganM6ICdGSUdJJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnSVNJTicsXG4gICAganM6ICdJU0lOJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnUEVSTUlEJyxcbiAgICBqczogJ1BFUk1JRCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ1JJQycsXG4gICAganM6ICdSSUMnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdTRURPTCcsXG4gICAganM6ICdTRURPTCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ3RpY2tlcicsXG4gICAganM6ICd0aWNrZXInLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgUHVycGxlTWFya2V0OiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdCQkcnLFxuICAgIGpzOiAnQkJHJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnQ09VTlRSWV9JU09BTFBIQTInLFxuICAgIGpzOiAnQ09VTlRSWV9JU09BTFBIQTInLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdNSUMnLFxuICAgIGpzOiAnTUlDJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnbmFtZScsXG4gICAganM6ICduYW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIFRpbWVSYW5nZU9iamVjdDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnZW5kVGltZScsXG4gICAganM6ICdlbmRUaW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgRGF0ZSlcbiAgfSwge1xuICAgIGpzb246ICdzdGFydFRpbWUnLFxuICAgIGpzOiAnc3RhcnRUaW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgRGF0ZSlcbiAgfSwge1xuICAgIGpzb246ICd0eXBlJyxcbiAgICBqczogJ3R5cGUnLFxuICAgIHR5cDogJydcbiAgfSwge1xuICAgIGpzb246ICdpZCcsXG4gICAganM6ICdpZCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIC8qI19fUFVSRV9fKi9tKCdhbnknKSlcbiAgfSwge1xuICAgIGpzb246ICduYW1lJyxcbiAgICBqczogJ25hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgQ2hhdEluaXRTZXR0aW5nczogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnY2hhdE5hbWUnLFxuICAgIGpzOiAnY2hhdE5hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdpbml0TWVzc2FnZScsXG4gICAganM6ICdpbml0TWVzc2FnZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ21lbWJlcnMnLFxuICAgIGpzOiAnbWVtYmVycycsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIC8qI19fUFVSRV9fKi9yKCdDb250YWN0TGlzdE9iamVjdCcpKVxuICB9LCB7XG4gICAganNvbjogJ29wdGlvbnMnLFxuICAgIGpzOiAnb3B0aW9ucycsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICdhbnknKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnYW55J1xuICB9XSwgJ2FueScpLFxuICBDb250YWN0TGlzdE9iamVjdDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnY29udGFjdHMnLFxuICAgIGpzOiAnY29udGFjdHMnLFxuICAgIHR5cDogLyojX19QVVJFX18qL2EoIC8qI19fUFVSRV9fKi9yKCdDb250YWN0RWxlbWVudCcpKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ2lkJyxcbiAgICBqczogJ2lkJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL20oJ2FueScpKVxuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBDb250YWN0RWxlbWVudDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnaWQnLFxuICAgIGpzOiAnaWQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3IoJ0ZsdWZmeUlEJylcbiAgfSwge1xuICAgIGpzb246ICd0eXBlJyxcbiAgICBqczogJ3R5cGUnLFxuICAgIHR5cDogJydcbiAgfSwge1xuICAgIGpzb246ICduYW1lJyxcbiAgICBqczogJ25hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgRmx1ZmZ5SUQ6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ2VtYWlsJyxcbiAgICBqczogJ2VtYWlsJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnRkRTX0lEJyxcbiAgICBqczogJ0ZEU19JRCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBDb250YWN0OiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdpZCcsXG4gICAganM6ICdpZCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovcignVGVudGFjbGVkSUQnKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBUZW50YWNsZWRJRDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnZW1haWwnLFxuICAgIGpzOiAnZW1haWwnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdGRFNfSUQnLFxuICAgIGpzOiAnRkRTX0lEJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIENvbnRhY3RMaXN0OiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdjb250YWN0cycsXG4gICAganM6ICdjb250YWN0cycsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovYSggLyojX19QVVJFX18qL3IoJ0NvbnRhY3RFbGVtZW50JykpXG4gIH0sIHtcbiAgICBqc29uOiAndHlwZScsXG4gICAganM6ICd0eXBlJyxcbiAgICB0eXA6ICcnXG4gIH0sIHtcbiAgICBqc29uOiAnaWQnLFxuICAgIGpzOiAnaWQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAvKiNfX1BVUkVfXyovbSgnYW55JykpXG4gIH0sIHtcbiAgICBqc29uOiAnbmFtZScsXG4gICAganM6ICduYW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIENvbnRleHQ6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ2lkJyxcbiAgICBqczogJ2lkJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL20oJ2FueScpKVxuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9XSwgJ2FueScpLFxuICBDb3VudHJ5OiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdpZCcsXG4gICAganM6ICdpZCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovcignQ291bnRyeUlEJylcbiAgfSwge1xuICAgIGpzb246ICd0eXBlJyxcbiAgICBqczogJ3R5cGUnLFxuICAgIHR5cDogJydcbiAgfSwge1xuICAgIGpzb246ICduYW1lJyxcbiAgICBqczogJ25hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgQ291bnRyeUlEOiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdDT1VOVFJZX0lTT0FMUEhBMicsXG4gICAganM6ICdDT1VOVFJZX0lTT0FMUEhBMicsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ0NPVU5UUllfSVNPQUxQSEEzJyxcbiAgICBqczogJ0NPVU5UUllfSVNPQUxQSEEzJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnSVNPQUxQSEEyJyxcbiAgICBqczogJ0lTT0FMUEhBMicsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ0lTT0FMUEhBMycsXG4gICAganM6ICdJU09BTFBIQTMnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgQ3VycmVuY3k6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ2lkJyxcbiAgICBqczogJ2lkJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi9yKCdDdXJyZW5jeUlEJylcbiAgfSwge1xuICAgIGpzb246ICduYW1lJyxcbiAgICBqczogJ25hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICd0eXBlJyxcbiAgICBqczogJ3R5cGUnLFxuICAgIHR5cDogJydcbiAgfV0sICdhbnknKSxcbiAgQ3VycmVuY3lJRDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnQ1VSUkVOQ1lfSVNPQ09ERScsXG4gICAganM6ICdDVVJSRU5DWV9JU09DT0RFJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIEVtYWlsOiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdyZWNpcGllbnRzJyxcbiAgICBqczogJ3JlY2lwaWVudHMnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3IoJ1JlY2lwaWVudHNPYmplY3QnKVxuICB9LCB7XG4gICAganNvbjogJ3N1YmplY3QnLFxuICAgIGpzOiAnc3ViamVjdCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ3RleHRCb2R5JyxcbiAgICBqczogJ3RleHRCb2R5JyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAndHlwZScsXG4gICAganM6ICd0eXBlJyxcbiAgICB0eXA6ICcnXG4gIH0sIHtcbiAgICBqc29uOiAnaWQnLFxuICAgIGpzOiAnaWQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAvKiNfX1BVUkVfXyovbSgnYW55JykpXG4gIH0sIHtcbiAgICBqc29uOiAnbmFtZScsXG4gICAganM6ICduYW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIFJlY2lwaWVudHNPYmplY3Q6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ2lkJyxcbiAgICBqczogJ2lkJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL3IoJ1JlY2lwaWVudHNJRCcpKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ2NvbnRhY3RzJyxcbiAgICBqczogJ2NvbnRhY3RzJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL2EoIC8qI19fUFVSRV9fKi9yKCdDb250YWN0RWxlbWVudCcpKSlcbiAgfV0sICdhbnknKSxcbiAgUmVjaXBpZW50c0lEOiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdlbWFpbCcsXG4gICAganM6ICdlbWFpbCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ0ZEU19JRCcsXG4gICAganM6ICdGRFNfSUQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgSW5zdHJ1bWVudDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnaWQnLFxuICAgIGpzOiAnaWQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3IoJ1N0aWNreUlEJylcbiAgfSwge1xuICAgIGpzb246ICdtYXJrZXQnLFxuICAgIGpzOiAnbWFya2V0JyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL3IoJ0ZsdWZmeU1hcmtldCcpKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBTdGlja3lJRDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnQkJHJyxcbiAgICBqczogJ0JCRycsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ0NVU0lQJyxcbiAgICBqczogJ0NVU0lQJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnRkRTX0lEJyxcbiAgICBqczogJ0ZEU19JRCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ0ZJR0knLFxuICAgIGpzOiAnRklHSScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ0lTSU4nLFxuICAgIGpzOiAnSVNJTicsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ1BFUk1JRCcsXG4gICAganM6ICdQRVJNSUQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdSSUMnLFxuICAgIGpzOiAnUklDJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnU0VET0wnLFxuICAgIGpzOiAnU0VET0wnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICd0aWNrZXInLFxuICAgIGpzOiAndGlja2VyJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIEZsdWZmeU1hcmtldDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnQkJHJyxcbiAgICBqczogJ0JCRycsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ0NPVU5UUllfSVNPQUxQSEEyJyxcbiAgICBqczogJ0NPVU5UUllfSVNPQUxQSEEyJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH0sIHtcbiAgICBqc29uOiAnTUlDJyxcbiAgICBqczogJ01JQycsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBJbnN0cnVtZW50TGlzdDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnaW5zdHJ1bWVudHMnLFxuICAgIGpzOiAnaW5zdHJ1bWVudHMnLFxuICAgIHR5cDogLyojX19QVVJFX18qL2EoIC8qI19fUFVSRV9fKi9yKCdJbnN0cnVtZW50RWxlbWVudCcpKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ2lkJyxcbiAgICBqczogJ2lkJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL20oJ2FueScpKVxuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBOb3RoaW5nOiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICd0eXBlJyxcbiAgICBqczogJ3R5cGUnLFxuICAgIHR5cDogJydcbiAgfSwge1xuICAgIGpzb246ICdpZCcsXG4gICAganM6ICdpZCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIC8qI19fUFVSRV9fKi9tKCdhbnknKSlcbiAgfSwge1xuICAgIGpzb246ICduYW1lJyxcbiAgICBqczogJ25hbWUnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfV0sICdhbnknKSxcbiAgT3JnYW5pemF0aW9uOiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdpZCcsXG4gICAganM6ICdpZCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovcignT3JnYW5pemF0aW9uSUQnKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBPcmdhbml6YXRpb25JRDogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnRkRTX0lEJyxcbiAgICBqczogJ0ZEU19JRCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9LCB7XG4gICAganNvbjogJ0xFSScsXG4gICAganM6ICdMRUknLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAnJylcbiAgfSwge1xuICAgIGpzb246ICdQRVJNSUQnLFxuICAgIGpzOiAnUEVSTUlEJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIFBvcnRmb2xpbzogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAncG9zaXRpb25zJyxcbiAgICBqczogJ3Bvc2l0aW9ucycsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovYSggLyojX19QVVJFX18qL3IoJ1Bvc2l0aW9uRWxlbWVudCcpKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ2lkJyxcbiAgICBqczogJ2lkJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL20oJ2FueScpKVxuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBQb3NpdGlvbkVsZW1lbnQ6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ2hvbGRpbmcnLFxuICAgIGpzOiAnaG9sZGluZycsXG4gICAgdHlwOiAzLjE0XG4gIH0sIHtcbiAgICBqc29uOiAnaW5zdHJ1bWVudCcsXG4gICAganM6ICdpbnN0cnVtZW50JyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi9yKCdJbnN0cnVtZW50RWxlbWVudCcpXG4gIH0sIHtcbiAgICBqc29uOiAndHlwZScsXG4gICAganM6ICd0eXBlJyxcbiAgICB0eXA6ICcnXG4gIH0sIHtcbiAgICBqc29uOiAnaWQnLFxuICAgIGpzOiAnaWQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAvKiNfX1BVUkVfXyovbSgnYW55JykpXG4gIH0sIHtcbiAgICBqc29uOiAnbmFtZScsXG4gICAganM6ICduYW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIFBvc2l0aW9uOiAvKiNfX1BVUkVfXyovbyhbe1xuICAgIGpzb246ICdob2xkaW5nJyxcbiAgICBqczogJ2hvbGRpbmcnLFxuICAgIHR5cDogMy4xNFxuICB9LCB7XG4gICAganNvbjogJ2luc3RydW1lbnQnLFxuICAgIGpzOiAnaW5zdHJ1bWVudCcsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovcignSW5zdHJ1bWVudEVsZW1lbnQnKVxuICB9LCB7XG4gICAganNvbjogJ3R5cGUnLFxuICAgIGpzOiAndHlwZScsXG4gICAgdHlwOiAnJ1xuICB9LCB7XG4gICAganNvbjogJ2lkJyxcbiAgICBqczogJ2lkJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgLyojX19QVVJFX18qL20oJ2FueScpKVxuICB9LCB7XG4gICAganNvbjogJ25hbWUnLFxuICAgIGpzOiAnbmFtZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsICcnKVxuICB9XSwgJ2FueScpLFxuICBUaW1lUmFuZ2U6IC8qI19fUFVSRV9fKi9vKFt7XG4gICAganNvbjogJ2VuZFRpbWUnLFxuICAgIGpzOiAnZW5kVGltZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIERhdGUpXG4gIH0sIHtcbiAgICBqc29uOiAnc3RhcnRUaW1lJyxcbiAgICBqczogJ3N0YXJ0VGltZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIERhdGUpXG4gIH0sIHtcbiAgICBqc29uOiAndHlwZScsXG4gICAganM6ICd0eXBlJyxcbiAgICB0eXA6ICcnXG4gIH0sIHtcbiAgICBqc29uOiAnaWQnLFxuICAgIGpzOiAnaWQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAvKiNfX1BVUkVfXyovbSgnYW55JykpXG4gIH0sIHtcbiAgICBqc29uOiAnbmFtZScsXG4gICAganM6ICduYW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIFZhbHVhdGlvbjogLyojX19QVVJFX18qL28oW3tcbiAgICBqc29uOiAnQ1VSUkVOQ1lfSVNPQ09ERScsXG4gICAganM6ICdDVVJSRU5DWV9JU09DT0RFJyxcbiAgICB0eXA6ICcnXG4gIH0sIHtcbiAgICBqc29uOiAnZXhwaXJ5VGltZScsXG4gICAganM6ICdleHBpcnlUaW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgRGF0ZSlcbiAgfSwge1xuICAgIGpzb246ICdwcmljZScsXG4gICAganM6ICdwcmljZScsXG4gICAgdHlwOiAvKiNfX1BVUkVfXyovdSh1bmRlZmluZWQsIDMuMTQpXG4gIH0sIHtcbiAgICBqc29uOiAndHlwZScsXG4gICAganM6ICd0eXBlJyxcbiAgICB0eXA6ICcnXG4gIH0sIHtcbiAgICBqc29uOiAndmFsdWF0aW9uVGltZScsXG4gICAganM6ICd2YWx1YXRpb25UaW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgRGF0ZSlcbiAgfSwge1xuICAgIGpzb246ICd2YWx1ZScsXG4gICAganM6ICd2YWx1ZScsXG4gICAgdHlwOiAzLjE0XG4gIH0sIHtcbiAgICBqc29uOiAnaWQnLFxuICAgIGpzOiAnaWQnLFxuICAgIHR5cDogLyojX19QVVJFX18qL3UodW5kZWZpbmVkLCAvKiNfX1BVUkVfXyovbSgnYW55JykpXG4gIH0sIHtcbiAgICBqc29uOiAnbmFtZScsXG4gICAganM6ICduYW1lJyxcbiAgICB0eXA6IC8qI19fUFVSRV9fKi91KHVuZGVmaW5lZCwgJycpXG4gIH1dLCAnYW55JyksXG4gIFN0eWxlOiBbJ2JhcicsICdjYW5kbGUnLCAnY3VzdG9tJywgJ2hlYXRtYXAnLCAnaGlzdG9ncmFtJywgJ2xpbmUnLCAnbW91bnRhaW4nLCAncGllJywgJ3NjYXR0ZXInLCAnc3RhY2tlZC1iYXInXVxufTtcblxudmFyIEludGVudHM7XG4oZnVuY3Rpb24gKEludGVudHMpIHtcbiAgSW50ZW50c1tcIlN0YXJ0Q2FsbFwiXSA9IFwiU3RhcnRDYWxsXCI7XG4gIEludGVudHNbXCJTdGFydENoYXRcIl0gPSBcIlN0YXJ0Q2hhdFwiO1xuICBJbnRlbnRzW1wiU3RhcnRFbWFpbFwiXSA9IFwiU3RhcnRFbWFpbFwiO1xuICBJbnRlbnRzW1wiVmlld0FuYWx5c2lzXCJdID0gXCJWaWV3QW5hbHlzaXNcIjtcbiAgSW50ZW50c1tcIlZpZXdDaGFydFwiXSA9IFwiVmlld0NoYXJ0XCI7XG4gIEludGVudHNbXCJWaWV3Q29udGFjdFwiXSA9IFwiVmlld0NvbnRhY3RcIjtcbiAgSW50ZW50c1tcIlZpZXdIb2xkaW5nc1wiXSA9IFwiVmlld0hvbGRpbmdzXCI7XG4gIEludGVudHNbXCJWaWV3SW5zdHJ1bWVudFwiXSA9IFwiVmlld0luc3RydW1lbnRcIjtcbiAgSW50ZW50c1tcIlZpZXdJbnRlcmFjdGlvbnNcIl0gPSBcIlZpZXdJbnRlcmFjdGlvbnNcIjtcbiAgSW50ZW50c1tcIlZpZXdOZXdzXCJdID0gXCJWaWV3TmV3c1wiO1xuICBJbnRlbnRzW1wiVmlld09yZGVyc1wiXSA9IFwiVmlld09yZGVyc1wiO1xuICBJbnRlbnRzW1wiVmlld1Byb2ZpbGVcIl0gPSBcIlZpZXdQcm9maWxlXCI7XG4gIEludGVudHNbXCJWaWV3UXVvdGVcIl0gPSBcIlZpZXdRdW90ZVwiO1xuICBJbnRlbnRzW1wiVmlld1Jlc2VhcmNoXCJdID0gXCJWaWV3UmVzZWFyY2hcIjtcbn0pKEludGVudHMgfHwgKEludGVudHMgPSB7fSkpO1xuXG5leHBvcnQgeyBDaGFubmVsRXJyb3IsIENvbnRleHRUeXBlcywgQ29udmVydCwgSW50ZW50cywgT3BlbkVycm9yLCBSZXNvbHZlRXJyb3IsIFJlc3VsdEVycm9yLCBTdHlsZSwgYWRkQ29udGV4dExpc3RlbmVyLCBhZGRJbnRlbnRMaXN0ZW5lciwgYnJvYWRjYXN0LCBjb21wYXJlVmVyc2lvbk51bWJlcnMsIGNyZWF0ZVByaXZhdGVDaGFubmVsLCBmZGMzUmVhZHksIGZpbmRJbnN0YW5jZXMsIGZpbmRJbnRlbnQsIGZpbmRJbnRlbnRzQnlDb250ZXh0LCBnZXRBcHBNZXRhZGF0YSwgZ2V0Q3VycmVudENoYW5uZWwsIGdldEluZm8sIGdldE9yQ3JlYXRlQ2hhbm5lbCwgZ2V0U3lzdGVtQ2hhbm5lbHMsIGdldFVzZXJDaGFubmVscywgam9pbkNoYW5uZWwsIGpvaW5Vc2VyQ2hhbm5lbCwgbGVhdmVDdXJyZW50Q2hhbm5lbCwgb3BlbiwgcmFpc2VJbnRlbnQsIHJhaXNlSW50ZW50Rm9yQ29udGV4dCwgdmVyc2lvbklzQXRMZWFzdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmRjMy5lc20uanMubWFwXG4iLCIvKiEgRm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSBpbmRleC5qcy5MSUNFTlNFLnR4dCAqL1xuKCgpPT57dmFyIGU9ezMwNDooZSx0LG4pPT57dmFyIHI9ezg1OTQ6KGUsdCxuKT0+e24uZCh0LHtaOigpPT5vfSk7dmFyIHI9L14oKGNoaWxkcmVufGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MfGtleXxyZWZ8YXV0b0ZvY3VzfGRlZmF1bHRWYWx1ZXxkZWZhdWx0Q2hlY2tlZHxpbm5lckhUTUx8c3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nfHN1cHByZXNzSHlkcmF0aW9uV2FybmluZ3x2YWx1ZUxpbmt8YWNjZXB0fGFjY2VwdENoYXJzZXR8YWNjZXNzS2V5fGFjdGlvbnxhbGxvd3xhbGxvd1VzZXJNZWRpYXxhbGxvd1BheW1lbnRSZXF1ZXN0fGFsbG93RnVsbFNjcmVlbnxhbGxvd1RyYW5zcGFyZW5jeXxhbHR8YXN5bmN8YXV0b0NvbXBsZXRlfGF1dG9QbGF5fGNhcHR1cmV8Y2VsbFBhZGRpbmd8Y2VsbFNwYWNpbmd8Y2hhbGxlbmdlfGNoYXJTZXR8Y2hlY2tlZHxjaXRlfGNsYXNzSUR8Y2xhc3NOYW1lfGNvbHN8Y29sU3Bhbnxjb250ZW50fGNvbnRlbnRFZGl0YWJsZXxjb250ZXh0TWVudXxjb250cm9sc3xjb250cm9sc0xpc3R8Y29vcmRzfGNyb3NzT3JpZ2lufGRhdGF8ZGF0ZVRpbWV8ZGVjb2Rpbmd8ZGVmYXVsdHxkZWZlcnxkaXJ8ZGlzYWJsZWR8ZGlzYWJsZVBpY3R1cmVJblBpY3R1cmV8ZG93bmxvYWR8ZHJhZ2dhYmxlfGVuY1R5cGV8Zm9ybXxmb3JtQWN0aW9ufGZvcm1FbmNUeXBlfGZvcm1NZXRob2R8Zm9ybU5vVmFsaWRhdGV8Zm9ybVRhcmdldHxmcmFtZUJvcmRlcnxoZWFkZXJzfGhlaWdodHxoaWRkZW58aGlnaHxocmVmfGhyZWZMYW5nfGh0bWxGb3J8aHR0cEVxdWl2fGlkfGlucHV0TW9kZXxpbnRlZ3JpdHl8aXN8a2V5UGFyYW1zfGtleVR5cGV8a2luZHxsYWJlbHxsYW5nfGxpc3R8bG9hZGluZ3xsb29wfGxvd3xtYXJnaW5IZWlnaHR8bWFyZ2luV2lkdGh8bWF4fG1heExlbmd0aHxtZWRpYXxtZWRpYUdyb3VwfG1ldGhvZHxtaW58bWluTGVuZ3RofG11bHRpcGxlfG11dGVkfG5hbWV8bm9uY2V8bm9WYWxpZGF0ZXxvcGVufG9wdGltdW18cGF0dGVybnxwbGFjZWhvbGRlcnxwbGF5c0lubGluZXxwb3N0ZXJ8cHJlbG9hZHxwcm9maWxlfHJhZGlvR3JvdXB8cmVhZE9ubHl8cmVmZXJyZXJQb2xpY3l8cmVsfHJlcXVpcmVkfHJldmVyc2VkfHJvbGV8cm93c3xyb3dTcGFufHNhbmRib3h8c2NvcGV8c2NvcGVkfHNjcm9sbGluZ3xzZWFtbGVzc3xzZWxlY3RlZHxzaGFwZXxzaXplfHNpemVzfHNsb3R8c3BhbnxzcGVsbENoZWNrfHNyY3xzcmNEb2N8c3JjTGFuZ3xzcmNTZXR8c3RhcnR8c3RlcHxzdHlsZXxzdW1tYXJ5fHRhYkluZGV4fHRhcmdldHx0aXRsZXx0eXBlfHVzZU1hcHx2YWx1ZXx3aWR0aHx3bW9kZXx3cmFwfGFib3V0fGRhdGF0eXBlfGlubGlzdHxwcmVmaXh8cHJvcGVydHl8cmVzb3VyY2V8dHlwZW9mfHZvY2FifGF1dG9DYXBpdGFsaXplfGF1dG9Db3JyZWN0fGF1dG9TYXZlfGNvbG9yfGluZXJ0fGl0ZW1Qcm9wfGl0ZW1TY29wZXxpdGVtVHlwZXxpdGVtSUR8aXRlbVJlZnxvbnxyZXN1bHRzfHNlY3VyaXR5fHVuc2VsZWN0YWJsZXxhY2NlbnRIZWlnaHR8YWNjdW11bGF0ZXxhZGRpdGl2ZXxhbGlnbm1lbnRCYXNlbGluZXxhbGxvd1Jlb3JkZXJ8YWxwaGFiZXRpY3xhbXBsaXR1ZGV8YXJhYmljRm9ybXxhc2NlbnR8YXR0cmlidXRlTmFtZXxhdHRyaWJ1dGVUeXBlfGF1dG9SZXZlcnNlfGF6aW11dGh8YmFzZUZyZXF1ZW5jeXxiYXNlbGluZVNoaWZ0fGJhc2VQcm9maWxlfGJib3h8YmVnaW58Ymlhc3xieXxjYWxjTW9kZXxjYXBIZWlnaHR8Y2xpcHxjbGlwUGF0aFVuaXRzfGNsaXBQYXRofGNsaXBSdWxlfGNvbG9ySW50ZXJwb2xhdGlvbnxjb2xvckludGVycG9sYXRpb25GaWx0ZXJzfGNvbG9yUHJvZmlsZXxjb2xvclJlbmRlcmluZ3xjb250ZW50U2NyaXB0VHlwZXxjb250ZW50U3R5bGVUeXBlfGN1cnNvcnxjeHxjeXxkfGRlY2VsZXJhdGV8ZGVzY2VudHxkaWZmdXNlQ29uc3RhbnR8ZGlyZWN0aW9ufGRpc3BsYXl8ZGl2aXNvcnxkb21pbmFudEJhc2VsaW5lfGR1cnxkeHxkeXxlZGdlTW9kZXxlbGV2YXRpb258ZW5hYmxlQmFja2dyb3VuZHxlbmR8ZXhwb25lbnR8ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZHxmaWxsfGZpbGxPcGFjaXR5fGZpbGxSdWxlfGZpbHRlcnxmaWx0ZXJSZXN8ZmlsdGVyVW5pdHN8Zmxvb2RDb2xvcnxmbG9vZE9wYWNpdHl8Zm9jdXNhYmxlfGZvbnRGYW1pbHl8Zm9udFNpemV8Zm9udFNpemVBZGp1c3R8Zm9udFN0cmV0Y2h8Zm9udFN0eWxlfGZvbnRWYXJpYW50fGZvbnRXZWlnaHR8Zm9ybWF0fGZyb218ZnJ8Znh8Znl8ZzF8ZzJ8Z2x5cGhOYW1lfGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsfGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbHxnbHlwaFJlZnxncmFkaWVudFRyYW5zZm9ybXxncmFkaWVudFVuaXRzfGhhbmdpbmd8aG9yaXpBZHZYfGhvcml6T3JpZ2luWHxpZGVvZ3JhcGhpY3xpbWFnZVJlbmRlcmluZ3xpbnxpbjJ8aW50ZXJjZXB0fGt8azF8azJ8azN8azR8a2VybmVsTWF0cml4fGtlcm5lbFVuaXRMZW5ndGh8a2VybmluZ3xrZXlQb2ludHN8a2V5U3BsaW5lc3xrZXlUaW1lc3xsZW5ndGhBZGp1c3R8bGV0dGVyU3BhY2luZ3xsaWdodGluZ0NvbG9yfGxpbWl0aW5nQ29uZUFuZ2xlfGxvY2FsfG1hcmtlckVuZHxtYXJrZXJNaWR8bWFya2VyU3RhcnR8bWFya2VySGVpZ2h0fG1hcmtlclVuaXRzfG1hcmtlcldpZHRofG1hc2t8bWFza0NvbnRlbnRVbml0c3xtYXNrVW5pdHN8bWF0aGVtYXRpY2FsfG1vZGV8bnVtT2N0YXZlc3xvZmZzZXR8b3BhY2l0eXxvcGVyYXRvcnxvcmRlcnxvcmllbnR8b3JpZW50YXRpb258b3JpZ2lufG92ZXJmbG93fG92ZXJsaW5lUG9zaXRpb258b3ZlcmxpbmVUaGlja25lc3N8cGFub3NlMXxwYWludE9yZGVyfHBhdGhMZW5ndGh8cGF0dGVybkNvbnRlbnRVbml0c3xwYXR0ZXJuVHJhbnNmb3JtfHBhdHRlcm5Vbml0c3xwb2ludGVyRXZlbnRzfHBvaW50c3xwb2ludHNBdFh8cG9pbnRzQXRZfHBvaW50c0F0WnxwcmVzZXJ2ZUFscGhhfHByZXNlcnZlQXNwZWN0UmF0aW98cHJpbWl0aXZlVW5pdHN8cnxyYWRpdXN8cmVmWHxyZWZZfHJlbmRlcmluZ0ludGVudHxyZXBlYXRDb3VudHxyZXBlYXREdXJ8cmVxdWlyZWRFeHRlbnNpb25zfHJlcXVpcmVkRmVhdHVyZXN8cmVzdGFydHxyZXN1bHR8cm90YXRlfHJ4fHJ5fHNjYWxlfHNlZWR8c2hhcGVSZW5kZXJpbmd8c2xvcGV8c3BhY2luZ3xzcGVjdWxhckNvbnN0YW50fHNwZWN1bGFyRXhwb25lbnR8c3BlZWR8c3ByZWFkTWV0aG9kfHN0YXJ0T2Zmc2V0fHN0ZERldmlhdGlvbnxzdGVtaHxzdGVtdnxzdGl0Y2hUaWxlc3xzdG9wQ29sb3J8c3RvcE9wYWNpdHl8c3RyaWtldGhyb3VnaFBvc2l0aW9ufHN0cmlrZXRocm91Z2hUaGlja25lc3N8c3RyaW5nfHN0cm9rZXxzdHJva2VEYXNoYXJyYXl8c3Ryb2tlRGFzaG9mZnNldHxzdHJva2VMaW5lY2FwfHN0cm9rZUxpbmVqb2lufHN0cm9rZU1pdGVybGltaXR8c3Ryb2tlT3BhY2l0eXxzdHJva2VXaWR0aHxzdXJmYWNlU2NhbGV8c3lzdGVtTGFuZ3VhZ2V8dGFibGVWYWx1ZXN8dGFyZ2V0WHx0YXJnZXRZfHRleHRBbmNob3J8dGV4dERlY29yYXRpb258dGV4dFJlbmRlcmluZ3x0ZXh0TGVuZ3RofHRvfHRyYW5zZm9ybXx1MXx1Mnx1bmRlcmxpbmVQb3NpdGlvbnx1bmRlcmxpbmVUaGlja25lc3N8dW5pY29kZXx1bmljb2RlQmlkaXx1bmljb2RlUmFuZ2V8dW5pdHNQZXJFbXx2QWxwaGFiZXRpY3x2SGFuZ2luZ3x2SWRlb2dyYXBoaWN8dk1hdGhlbWF0aWNhbHx2YWx1ZXN8dmVjdG9yRWZmZWN0fHZlcnNpb258dmVydEFkdll8dmVydE9yaWdpblh8dmVydE9yaWdpbll8dmlld0JveHx2aWV3VGFyZ2V0fHZpc2liaWxpdHl8d2lkdGhzfHdvcmRTcGFjaW5nfHdyaXRpbmdNb2RlfHh8eEhlaWdodHx4MXx4Mnx4Q2hhbm5lbFNlbGVjdG9yfHhsaW5rQWN0dWF0ZXx4bGlua0FyY3JvbGV8eGxpbmtIcmVmfHhsaW5rUm9sZXx4bGlua1Nob3d8eGxpbmtUaXRsZXx4bGlua1R5cGV8eG1sQmFzZXx4bWxuc3x4bWxuc1hsaW5rfHhtbExhbmd8eG1sU3BhY2V8eXx5MXx5Mnx5Q2hhbm5lbFNlbGVjdG9yfHp8em9vbUFuZFBhbnxmb3J8Y2xhc3N8YXV0b2ZvY3VzKXwoKFtEZF1bQWFdW1R0XVtBYV18W0FhXVtScl1bSWldW0FhXXx4KS0uKikpJC87Y29uc3Qgbz0oYT17fSxmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09YVtlXSYmKGFbZV09KHQ9ZSxyLnRlc3QodCl8fDExMT09PXQuY2hhckNvZGVBdCgwKSYmMTEwPT09dC5jaGFyQ29kZUF0KDEpJiZ0LmNoYXJDb2RlQXQoMik8OTEpKSxhW2VdO3ZhciB0fSk7dmFyIGF9LDE1MjE6KGUsdCxuKT0+e24ucih0KSxuLmQodCx7QWN0aXZpdHlMb2dJY29uOigpPT5hLEFsaWduQmFzZWxpbmVJY29uOigpPT5pLEFsaWduQm90dG9tSWNvbjooKT0+bCxBbGlnbkNlbnRlckhvcml6b250YWxseUljb246KCk9PmMsQWxpZ25DZW50ZXJWZXJ0aWNhbGx5SWNvbjooKT0+cyxBbGlnbkxlZnRJY29uOigpPT51LEFsaWduUmlnaHRJY29uOigpPT5kLEFsaWduVG9wSWNvbjooKT0+ZixBbGxTaWRlc0ljb246KCk9PnAsQW5nbGVJY29uOigpPT5oLEFyY2hpdmVJY29uOigpPT5DLEFycm93Qm90dG9tTGVmdEljb246KCk9PnYsQXJyb3dCb3R0b21SaWdodEljb246KCk9PmcsQXJyb3dEb3duSWNvbjooKT0+bSxBcnJvd0xlZnRJY29uOigpPT53LEFycm93UmlnaHRJY29uOigpPT55LEFycm93VG9wTGVmdEljb246KCk9PmIsQXJyb3dUb3BSaWdodEljb246KCk9PngsQXJyb3dVcEljb246KCk9Pk8sQXNwZWN0UmF0aW9JY29uOigpPT5MLEF2YXRhckljb246KCk9Pk0sQmFja3BhY2tJY29uOigpPT5TLEJhZGdlSWNvbjooKT0+XyxCYXJDaGFydEljb246KCk9PmosQmVsbEljb246KCk9PkUsQmxlbmRpbmdNb2RlSWNvbjooKT0+UCxCb29rbWFya0ljb246KCk9PmssQm9yZGVyQWxsSWNvbjooKT0+SCxCb3JkZXJCb3R0b21JY29uOigpPT5WLEJvcmRlckRhc2hlZEljb246KCk9PlIsQm9yZGVyRG90dGVkSWNvbjooKT0+SSxCb3JkZXJMZWZ0SWNvbjooKT0+WixCb3JkZXJOb25lSWNvbjooKT0+QSxCb3JkZXJSaWdodEljb246KCk9PkQsQm9yZGVyU29saWRJY29uOigpPT5CLEJvcmRlclNwbGl0SWNvbjooKT0+VCxCb3JkZXJTdHlsZUljb246KCk9PiQsQm9yZGVyVG9wSWNvbjooKT0+RixCb3hJY29uOigpPT5XLEJveE1vZGVsSWNvbjooKT0+TixCdXR0b25JY29uOigpPT56LENhbGVuZGFySWNvbjooKT0+VSxDYW1lcmFJY29uOigpPT5HLENhcmRTdGFja0ljb246KCk9PnEsQ2FyZFN0YWNrTWludXNJY29uOigpPT5ZLENhcmRTdGFja1BsdXNJY29uOigpPT5LLENhcmV0RG93bkljb246KCk9PlgsQ2FyZXRMZWZ0SWNvbjooKT0+USxDYXJldFJpZ2h0SWNvbjooKT0+SixDYXJldFNvcnRJY29uOigpPT5lZSxDYXJldFVwSWNvbjooKT0+dGUsQ2hhdEJ1YmJsZUljb246KCk9Pm5lLENoZWNrQ2lyY2xlZEljb246KCk9Pm9lLENoZWNrSWNvbjooKT0+cmUsQ2hlY2tib3hJY29uOigpPT5hZSxDaGV2cm9uRG93bkljb246KCk9PmllLENoZXZyb25MZWZ0SWNvbjooKT0+bGUsQ2hldnJvblJpZ2h0SWNvbjooKT0+Y2UsQ2hldnJvblVwSWNvbjooKT0+c2UsQ2lyY2xlQmFja3NsYXNoSWNvbjooKT0+ZGUsQ2lyY2xlSWNvbjooKT0+dWUsQ2xpcGJvYXJkQ29weUljb246KCk9PnBlLENsaXBib2FyZEljb246KCk9PmZlLENsb2NrSWNvbjooKT0+aGUsQ29kZUljb246KCk9PkNlLENvZGVTYW5kYm94TG9nb0ljb246KCk9PnZlLENvbHVtblNwYWNpbmdJY29uOigpPT5nZSxDb2x1bW5zSWNvbjooKT0+bWUsQ29tbWl0SWNvbjooKT0+d2UsQ29tcG9uZW50MUljb246KCk9PnllLENvbXBvbmVudDJJY29uOigpPT5iZSxDb21wb25lbnRCb29sZWFuSWNvbjooKT0+eGUsQ29tcG9uZW50SW5zdGFuY2VJY29uOigpPT5PZSxDb21wb25lbnROb25lSWNvbjooKT0+TGUsQ29tcG9uZW50UGxhY2Vob2xkZXJJY29uOigpPT5NZSxDb250YWluZXJJY29uOigpPT5TZSxDb29raWVJY29uOigpPT5fZSxDb3B5SWNvbjooKT0+amUsQ29ybmVyQm90dG9tTGVmdEljb246KCk9PkVlLENvcm5lckJvdHRvbVJpZ2h0SWNvbjooKT0+UGUsQ29ybmVyVG9wTGVmdEljb246KCk9PmtlLENvcm5lclRvcFJpZ2h0SWNvbjooKT0+SGUsQ29ybmVyc0ljb246KCk9PlZlLENvdW50ZG93blRpbWVySWNvbjooKT0+UmUsQ291bnRlckNsb2Nrd2lzZUNsb2NrSWNvbjooKT0+SWUsQ3JvcEljb246KCk9PlplLENyb3NzMUljb246KCk9PkFlLENyb3NzMkljb246KCk9PkRlLENyb3NzQ2lyY2xlZEljb246KCk9PkJlLENyb3NzaGFpcjFJY29uOigpPT5UZSxDcm9zc2hhaXIySWNvbjooKT0+JGUsQ3J1bXBsZWRQYXBlckljb246KCk9PkZlLEN1YmVJY29uOigpPT5XZSxDdXJzb3JBcnJvd0ljb246KCk9Pk5lLEN1cnNvclRleHRJY29uOigpPT56ZSxEYXNoSWNvbjooKT0+VWUsRGFzaGJvYXJkSWNvbjooKT0+R2UsRGltZW5zaW9uc0ljb246KCk9PnFlLERpc2NJY29uOigpPT5ZZSxEaXZpZGVySG9yaXpvbnRhbEljb246KCk9PktlLERpdmlkZXJWZXJ0aWNhbEljb246KCk9PlhlLERvdEZpbGxlZEljb246KCk9PkplLERvdEljb246KCk9PlFlLERvdHNIb3Jpem9udGFsSWNvbjooKT0+ZXQsRG90c1ZlcnRpY2FsSWNvbjooKT0+dHQsRG91YmxlQXJyb3dEb3duSWNvbjooKT0+bnQsRG91YmxlQXJyb3dMZWZ0SWNvbjooKT0+cnQsRG91YmxlQXJyb3dSaWdodEljb246KCk9Pm90LERvdWJsZUFycm93VXBJY29uOigpPT5hdCxEb3dubG9hZEljb246KCk9Pml0LERyYWdIYW5kbGVEb3RzMUljb246KCk9Pmx0LERyYWdIYW5kbGVEb3RzMkljb246KCk9PmN0LERyYWdIYW5kbGVIb3Jpem9udGFsSWNvbjooKT0+c3QsRHJhZ0hhbmRsZVZlcnRpY2FsSWNvbjooKT0+dXQsRHJhd2luZ1BpbkZpbGxlZEljb246KCk9PmZ0LERyYXdpbmdQaW5JY29uOigpPT5kdCxEcm9wZG93bk1lbnVJY29uOigpPT5wdCxFbnRlckZ1bGxTY3JlZW5JY29uOigpPT5DdCxFbnRlckljb246KCk9Pmh0LEVudmVsb3BlQ2xvc2VkSWNvbjooKT0+dnQsRW52ZWxvcGVPcGVuSWNvbjooKT0+Z3QsRXhjbGFtYXRpb25UcmlhbmdsZUljb246KCk9Pm10LEV4aXRGdWxsU2NyZWVuSWNvbjooKT0+eXQsRXhpdEljb246KCk9Pnd0LEV4dGVybmFsTGlua0ljb246KCk9PmJ0LEV5ZUNsb3NlZEljb246KCk9Pnh0LEV5ZU5vbmVJY29uOigpPT5PdCxFeWVPcGVuSWNvbjooKT0+THQsRmFjZUljb246KCk9Pk10LEZpZ21hTG9nb0ljb246KCk9PlN0LEZpbGVJY29uOigpPT5fdCxGaWxlTWludXNJY29uOigpPT5qdCxGaWxlUGx1c0ljb246KCk9PkV0LEZpbGVUZXh0SWNvbjooKT0+UHQsRm9udEJvbGRJY29uOigpPT5rdCxGb250RmFtaWx5SWNvbjooKT0+SHQsRm9udEl0YWxpY0ljb246KCk9PlZ0LEZvbnRSb21hbkljb246KCk9PlJ0LEZvbnRTaXplSWNvbjooKT0+SXQsRm9udFN0eWxlSWNvbjooKT0+WnQsRnJhbWVJY29uOigpPT5BdCxGcmFtZXJMb2dvSWNvbjooKT0+RHQsR2Vhckljb246KCk9PkJ0LEdpdEh1YkxvZ29JY29uOigpPT5UdCxHbG9iZUljb246KCk9PiR0LEdyaWRJY29uOigpPT5GdCxHcm91cEljb246KCk9Pld0LEhhbGYxSWNvbjooKT0+TnQsSGFsZjJJY29uOigpPT56dCxIYW1idXJnZXJNZW51SWNvbjooKT0+VXQsSGFuZEljb246KCk9Pkd0LEhlYWRpbmdJY29uOigpPT5xdCxIZWlnaHRJY29uOigpPT5ZdCxIb21lSWNvbjooKT0+S3QsSWNvbkphckxvZ29JY29uOigpPT5YdCxJZENhcmRJY29uOigpPT5RdCxJbWFnZUljb246KCk9Pkp0LEluZm9DaXJjbGVkSWNvbjooKT0+ZW4sSW5wdXRJY29uOigpPT50bixMYXBUaW1lckljb246KCk9Pm5uLExheWVyc0ljb246KCk9PnJuLExheW91dEljb246KCk9Pm9uLExldHRlckNhc2VDYXBpdGFsaXplSWNvbjooKT0+YW4sTGV0dGVyQ2FzZUxvd2VyY2FzZUljb246KCk9PmxuLExldHRlckNhc2VUb2dnbGVJY29uOigpPT5jbixMZXR0ZXJDYXNlVXBwZXJjYXNlSWNvbjooKT0+c24sTGV0dGVyU3BhY2luZ0ljb246KCk9PnVuLExpZ2h0bmluZ0JvbHRJY29uOigpPT5kbixMaW5lSGVpZ2h0SWNvbjooKT0+Zm4sTGluazFJY29uOigpPT5wbixMaW5rMkljb246KCk9PmhuLExpbmtCcmVhazFJY29uOigpPT5DbixMaW5rQnJlYWsySWNvbjooKT0+dm4sTGlua05vbmUxSWNvbjooKT0+Z24sTGlua05vbmUySWNvbjooKT0+bW4sTGlzdEJ1bGxldEljb246KCk9PnduLExvY2tDbG9zZWRJY29uOigpPT55bixMb2NrT3BlbjFJY29uOigpPT5ibixMb2NrT3BlbjJJY29uOigpPT54bixMb29wSWNvbjooKT0+T24sTWFnaWNXYW5kSWNvbjooKT0+TG4sTWFnbmlmeWluZ0dsYXNzSWNvbjooKT0+TW4sTWFyZ2luSWNvbjooKT0+U24sTWFza09mZkljb246KCk9Pl9uLE1hc2tPbkljb246KCk9PmpuLE1pbnVzQ2lyY2xlZEljb246KCk9PlBuLE1pbnVzSWNvbjooKT0+RW4sTWl4SWNvbjooKT0+a24sTWl4ZXJIb3Jpem9udGFsSWNvbjooKT0+SG4sTWl4ZXJWZXJ0aWNhbEljb246KCk9PlZuLE1vZHVsekxvZ29JY29uOigpPT5SbixNb29uSWNvbjooKT0+SW4sTW92ZUljb246KCk9PlpuLE5vdGlvbkxvZ29JY29uOigpPT5BbixPcGFjaXR5SWNvbjooKT0+RG4sT3ZlcmxpbmVJY29uOigpPT5CbixQYWRkaW5nSWNvbjooKT0+VG4sUGFwZXJQbGFuZUljb246KCk9PiRuLFBhdXNlSWNvbjooKT0+Rm4sUGVuY2lsMUljb246KCk9PlduLFBlbmNpbDJJY29uOigpPT5ObixQZXJzb25JY29uOigpPT56bixQaWVDaGFydEljb246KCk9PlVuLFBpbGNyb3dJY29uOigpPT5HbixQaW5Cb3R0b21JY29uOigpPT5xbixQaW5MZWZ0SWNvbjooKT0+WW4sUGluUmlnaHRJY29uOigpPT5LbixQaW5Ub3BJY29uOigpPT5YbixQbGF5SWNvbjooKT0+UW4sUGx1c0NpcmNsZWRJY29uOigpPT5lcixQbHVzSWNvbjooKT0+Sm4sUXVlc3Rpb25NYXJrQ2lyY2xlZEljb246KCk9Pm5yLFF1ZXN0aW9uTWFya0ljb246KCk9PnRyLFF1b3RlSWNvbjooKT0+cnIsUmFkaW9idXR0b25JY29uOigpPT5vcixSZWFkZXJJY29uOigpPT5hcixSZWxvYWRJY29uOigpPT5pcixSZXNldEljb246KCk9PmxyLFJlc3VtZUljb246KCk9PmNyLFJvY2tldEljb246KCk9PnNyLFJvdGF0ZUNvdW50ZXJDbG9ja3dpc2VJY29uOigpPT51cixSb3dTcGFjaW5nSWNvbjooKT0+ZHIsUm93c0ljb246KCk9PmZyLFJ1bGVySG9yaXpvbnRhbEljb246KCk9PnByLFJ1bGVyU3F1YXJlSWNvbjooKT0+aHIsU2VjdGlvbkljb246KCk9PkNyLFNld2luZ1BpbkZpbGxlZEljb246KCk9PmdyLFNld2luZ1Bpbkljb246KCk9PnZyLFNoYWRvd0ljb246KCk9Pm1yLFNoYWRvd0lubmVySWNvbjooKT0+d3IsU2hhZG93Tm9uZUljb246KCk9PnlyLFNoYWRvd091dGVySWNvbjooKT0+YnIsU2hhcmUxSWNvbjooKT0+eHIsU2hhcmUySWNvbjooKT0+T3IsU2h1ZmZsZUljb246KCk9PkxyLFNpemVJY29uOigpPT5NcixTa2V0Y2hMb2dvSWNvbjooKT0+U3IsU2xhc2hJY29uOigpPT5fcixTbGlkZXJJY29uOigpPT5qcixTcGFjZUJldHdlZW5Ib3Jpem9udGFsbHlJY29uOigpPT5FcixTcGFjZUJldHdlZW5WZXJ0aWNhbGx5SWNvbjooKT0+UHIsU3BhY2VFdmVubHlIb3Jpem9udGFsbHlJY29uOigpPT5rcixTcGFjZUV2ZW5seVZlcnRpY2FsbHlJY29uOigpPT5IcixTcGVha2VyTG91ZEljb246KCk9PlZyLFNwZWFrZXJNb2RlcmF0ZUljb246KCk9PlJyLFNwZWFrZXJPZmZJY29uOigpPT5JcixTcGVha2VyUXVpZXRJY29uOigpPT5acixTcXVhcmVJY29uOigpPT5BcixTdGFja0ljb246KCk9PkRyLFN0YXJGaWxsZWRJY29uOigpPT5UcixTdGFySWNvbjooKT0+QnIsU3RpdGNoZXNMb2dvSWNvbjooKT0+JHIsU3RvcEljb246KCk9PkZyLFN0b3B3YXRjaEljb246KCk9PldyLFN0cmV0Y2hIb3Jpem9udGFsbHlJY29uOigpPT5OcixTdHJldGNoVmVydGljYWxseUljb246KCk9PnpyLFN0cmlrZXRocm91Z2hJY29uOigpPT5VcixTdW5JY29uOigpPT5HcixTd2l0Y2hJY29uOigpPT5xcixTeW1ib2xJY29uOigpPT5ZcixUYWJsZUljb246KCk9PktyLFRhcmdldEljb246KCk9PlhyLFRleHRBbGlnbkNlbnRlckljb246KCk9PkpyLFRleHRBbGlnbkp1c3RpZnlJY29uOigpPT5lbyxUZXh0QWxpZ25MZWZ0SWNvbjooKT0+dG8sVGV4dEFsaWduUmlnaHRJY29uOigpPT5ubyxUZXh0SWNvbjooKT0+UXIsVGV4dE5vbmVJY29uOigpPT5ybyxUaGlja0Fycm93RG93bkljb246KCk9Pm9vLFRoaWNrQXJyb3dMZWZ0SWNvbjooKT0+YW8sVGhpY2tBcnJvd1JpZ2h0SWNvbjooKT0+aW8sVGhpY2tBcnJvd1VwSWNvbjooKT0+bG8sVGltZXJJY29uOigpPT5jbyxUb2tlbnNJY29uOigpPT5zbyxUcmFja05leHRJY29uOigpPT51byxUcmFja1ByZXZpb3VzSWNvbjooKT0+Zm8sVHJhbnNwYXJlbmN5R3JpZEljb246KCk9PnBvLFRyYXNoSWNvbjooKT0+aG8sVHJpYW5nbGVEb3duSWNvbjooKT0+Q28sVHJpYW5nbGVMZWZ0SWNvbjooKT0+dm8sVHJpYW5nbGVSaWdodEljb246KCk9PmdvLFRyaWFuZ2xlVXBJY29uOigpPT5tbyxUd2l0dGVyTG9nb0ljb246KCk9PndvLFVuZGVybGluZUljb246KCk9PnlvLFVwZGF0ZUljb246KCk9PmJvLFVwbG9hZEljb246KCk9PnhvLFZhbHVlSWNvbjooKT0+T28sVmFsdWVOb25lSWNvbjooKT0+TG8sVmVyY2VsTG9nb0ljb246KCk9Pk1vLFZpZGVvSWNvbjooKT0+U28sVmlld0dyaWRJY29uOigpPT5fbyxWaWV3SG9yaXpvbnRhbEljb246KCk9PmpvLFZpZXdOb25lSWNvbjooKT0+RW8sVmlld1ZlcnRpY2FsSWNvbjooKT0+UG8sV2lkdGhJY29uOigpPT5rbyxab29tSW5JY29uOigpPT5Ibyxab29tT3V0SWNvbjooKT0+Vm99KTt2YXIgcj1uKDY2ODkpO2Z1bmN0aW9uIG8oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99dmFyIGE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAgMS41QzAgMS4yMjM4NiAwLjIyMzg1OCAxIDAuNSAxSDIuNUMyLjc3NjE0IDEgMyAxLjIyMzg2IDMgMS41QzMgMS43NzYxNCAyLjc3NjE0IDIgMi41IDJIMC41QzAuMjIzODU4IDIgMCAxLjc3NjE0IDAgMS41Wk00IDEuNUM0IDEuMjIzODYgNC4yMjM4NiAxIDQuNSAxSDE0LjVDMTQuNzc2MSAxIDE1IDEuMjIzODYgMTUgMS41QzE1IDEuNzc2MTQgMTQuNzc2MSAyIDE0LjUgMkg0LjVDNC4yMjM4NiAyIDQgMS43NzYxNCA0IDEuNVpNNCA0LjVDNCA0LjIyMzg2IDQuMjIzODYgNCA0LjUgNEgxMS41QzExLjc3NjEgNCAxMiA0LjIyMzg2IDEyIDQuNUMxMiA0Ljc3NjE0IDExLjc3NjEgNSAxMS41IDVINC41QzQuMjIzODYgNSA0IDQuNzc2MTQgNCA0LjVaTTAgNy41QzAgNy4yMjM4NiAwLjIyMzg1OCA3IDAuNSA3SDIuNUMyLjc3NjE0IDcgMyA3LjIyMzg2IDMgNy41QzMgNy43NzYxNCAyLjc3NjE0IDggMi41IDhIMC41QzAuMjIzODU4IDggMCA3Ljc3NjE0IDAgNy41Wk00IDcuNUM0IDcuMjIzODYgNC4yMjM4NiA3IDQuNSA3SDE0LjVDMTQuNzc2MSA3IDE1IDcuMjIzODYgMTUgNy41QzE1IDcuNzc2MTQgMTQuNzc2MSA4IDE0LjUgOEg0LjVDNC4yMjM4NiA4IDQgNy43NzYxNCA0IDcuNVpNNCAxMC41QzQgMTAuMjIzOSA0LjIyMzg2IDEwIDQuNSAxMEgxMS41QzExLjc3NjEgMTAgMTIgMTAuMjIzOSAxMiAxMC41QzEyIDEwLjc3NjEgMTEuNzc2MSAxMSAxMS41IDExSDQuNUM0LjIyMzg2IDExIDQgMTAuNzc2MSA0IDEwLjVaTTAgMTMuNUMwIDEzLjIyMzkgMC4yMjM4NTggMTMgMC41IDEzSDIuNUMyLjc3NjE0IDEzIDMgMTMuMjIzOSAzIDEzLjVDMyAxMy43NzYxIDIuNzc2MTQgMTQgMi41IDE0SDAuNUMwLjIyMzg1OCAxNCAwIDEzLjc3NjEgMCAxMy41Wk00IDEzLjVDNCAxMy4yMjM5IDQuMjIzODYgMTMgNC41IDEzSDE0LjVDMTQuNzc2MSAxMyAxNSAxMy4yMjM5IDE1IDEzLjVDMTUgMTMuNzc2MSAxNC43NzYxIDE0IDE0LjUgMTRINC41QzQuMjIzODYgMTQgNCAxMy43NzYxIDQgMTMuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwLjUgMS43NTAwM0MxMC43MTA3IDEuNzUwMDMgMTAuODk4OCAxLjg4MjE3IDEwLjk3MDMgMi4wODA0MkwxMy45NzAzIDEwLjRDMTQuMDY0IDEwLjY1OTggMTMuOTI5MyAxMC45NDYzIDEzLjY2OTYgMTEuMDRDMTMuNDA5OCAxMS4xMzM2IDEzLjEyMzMgMTAuOTk5IDEzLjAyOTYgMTAuNzM5MkwxMi4wNDc3IDguMDE2MDZIOC45NTIyN0w3Ljk3MDMxIDEwLjczOTJDNy44NzY2NCAxMC45OTkgNy41OTAxMiAxMS4xMzM2IDcuMzMwMzUgMTEuMDRDNy4wNzA1OCAxMC45NDYzIDYuOTM1OTMgMTAuNjU5OCA3LjAyOTYgMTAuNEwxMC4wMjk2IDIuMDgwNDJDMTAuMTAxMSAxLjg4MjE3IDEwLjI4OTIgMS43NTAwMyAxMC41IDEuNzUwMDNaTTEwLjUgMy43MjQwMkwxMS43NDExIDcuMTY2MDZIOS4yNTg3N0wxMC41IDMuNzI0MDJaTTIuNDk5NDkgMi4wOTk5N0MyLjcyMDQgMi4wOTk5NyAyLjg5OTQ5IDIuMjc5MDYgMi44OTk0OSAyLjQ5OTk3TDIuODk5NDkgOS41MzQyOEw0LjIxNjY0IDguMjE3MTNDNC4zNzI4NSA4LjA2MDkyIDQuNjI2MTIgOC4wNjA5MiA0Ljc4MjMzIDguMjE3MTNDNC45Mzg1NCA4LjM3MzM0IDQuOTM4NTQgOC42MjY2IDQuNzgyMzMgOC43ODI4MUwyLjc4MjMzIDEwLjc4MjhDMi43MDczMiAxMC44NTc4IDIuNjA1NTcgMTAuOSAyLjQ5OTQ5IDEwLjlDMi4zOTM0IDEwLjkgMi4yOTE2NiAxMC44NTc4IDIuMjE2NjQgMTAuNzgyOEwwLjIxNjY0NSA4Ljc4MjgxQzAuMDYwNDM0OSA4LjYyNjYgMC4wNjA0MzQ5IDguMzczMzQgMC4yMTY2NDUgOC4yMTcxM0MwLjM3Mjg1NCA4LjA2MDkyIDAuNjI2MTIgOC4wNjA5MiAwLjc4MjMzIDguMjE3MTNMMi4wOTk0OSA5LjUzNDI4TDIuMDk5NDkgMi40OTk5N0MyLjA5OTQ5IDIuMjc5MDYgMi4yNzg1NyAyLjA5OTk3IDIuNDk5NDkgMi4wOTk5N1pNMC4wOTk5Njk1IDEzLjUwMDFDMC4wOTk5Njk1IDEzLjI3OTEgMC4yNzkwNTYgMTMuMTAwMSAwLjQ5OTk2OSAxMy4xMDAxSDE0LjVDMTQuNzIwOSAxMy4xMDAxIDE0LjkgMTMuMjc5MSAxNC45IDEzLjUwMDFDMTQuOSAxMy43MjEgMTQuNzIwOSAxMy45MDAxIDE0LjUgMTMuOTAwMUgwLjQ5OTk2OUMwLjI3OTA1NiAxMy45MDAxIDAuMDk5OTY5NSAxMy43MjEgMC4wOTk5Njk1IDEzLjUwMDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxsPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05IDNDOSAyLjQ0NzcyIDguNTUyMjkgMiA4IDJIN0M2LjQ0NzcyIDIgNiAyLjQ0NzcyIDYgM0w2IDE0SDEuNUMxLjIyMzg2IDE0IDEgMTQuMjIzOSAxIDE0LjVDMSAxNC43NzYxIDEuMjIzODYgMTUgMS41IDE1TDYgMTVIOUgxMy41QzEzLjc3NjEgMTUgMTQgMTQuNzc2MSAxNCAxNC41QzE0IDE0LjIyMzkgMTMuNzc2MSAxNCAxMy41IDE0SDlWM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuOTk5ODggMUM2LjQ0NzU5IDEgNS45OTk4OCAxLjQ0NzcyIDUuOTk5ODggMlY3SDEuNDk5ODhDMS4yMjM3NCA3IDAuOTk5ODc4IDcuMjIzODYgMC45OTk4NzggNy41QzAuOTk5ODc4IDcuNzc2MTQgMS4yMjM3NCA4IDEuNDk5ODggOEg1Ljk5OTg4VjEzQzUuOTk5ODggMTMuNTUyMyA2LjQ0NzU5IDE0IDYuOTk5ODggMTRINy45OTk4OEM4LjU1MjE2IDE0IDguOTk5ODggMTMuNTUyMyA4Ljk5OTg4IDEzVjhIMTMuNDk5OUMxMy43NzYgOCAxMy45OTk5IDcuNzc2MTQgMTMuOTk5OSA3LjVDMTMuOTk5OSA3LjIyMzg2IDEzLjc3NiA3IDEzLjQ5OTkgN0g4Ljk5OTg4VjJDOC45OTk4OCAxLjQ0NzcyIDguNTUyMTYgMSA3Ljk5OTg4IDFMNi45OTk4OCAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS45OTk4OCA2QzEuNDQ3NTkgNiAwLjk5OTg3NyA2LjQ0NzcyIDAuOTk5ODc3IDdMMC45OTk4NzcgOEMwLjk5OTg3NyA4LjU1MjI4IDEuNDQ3NTkgOSAxLjk5OTg4IDlMNi45OTk4OCA5TDYuOTk5ODggMTMuNUM2Ljk5OTg4IDEzLjc3NjEgNy4yMjM3NCAxNCA3LjQ5OTg4IDE0QzcuNzc2MDIgMTQgNy45OTk4OCAxMy43NzYxIDcuOTk5ODggMTMuNUw3Ljk5OTg4IDlMMTIuOTk5OSA5QzEzLjU1MjIgOSAxMy45OTk5IDguNTUyMjggMTMuOTk5OSA4TDEzLjk5OTkgN0MxMy45OTk5IDYuNDQ3NzIgMTMuNTUyMiA2IDEyLjk5OTkgNkw3Ljk5OTg4IDZMNy45OTk4OCAxLjVDNy45OTk4OCAxLjIyMzg2IDcuNzc2MDIgMSA3LjQ5OTg4IDFDNy4yMjM3MyAxIDYuOTk5ODggMS4yMjM4NiA2Ljk5OTg4IDEuNUw2Ljk5OTg4IDZMMS45OTk4OCA2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC40OTk5OTUgMC45OTk5OTVDMC4yMjM4NTUgMC45OTk5OTUgLTUuNTg0NThlLTA3IDEuMjIzODUgLTUuNDYzODhlLTA3IDEuNDk5OTlMLTIuMTg1NTRlLTA4IDEzLjQ5OTlDLTkuNzg0OTJlLTA5IDEzLjc3NiAwLjIyMzg1NSAxMy45OTk5IDAuNDk5OTk1IDEzLjk5OTlDMC43NzYxMzYgMTMuOTk5OSAwLjk5OTk5MSAxMy43NzYgMC45OTk5OTEgMTMuNDk5OUwwLjk5OTk5MSA4Ljk5OTkzTDEyIDguOTk5OTNDMTIuNTUyMyA4Ljk5OTkzIDEzIDguNTUyMjIgMTMgNy45OTk5M0wxMyA2Ljk5OTk0QzEzIDYuNDQ3NjYgMTIuNTUyMyA1Ljk5OTk1IDEyIDUuOTk5OTVMMC45OTk5OTEgNS45OTk5NUwwLjk5OTk5MSAxLjQ5OTk5QzAuOTk5OTkxIDEuMjIzODUgMC43NzYxMzUgMC45OTk5OTUgMC40OTk5OTUgMC45OTk5OTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxkPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNC40OTk5IDFDMTQuMjIzNyAxIDEzLjk5OTkgMS4yMjM4NiAxMy45OTk5IDEuNUwxMy45OTk5IDZMMi45OTk4OCA2QzIuNDQ3NTkgNiAxLjk5OTg4IDYuNDQ3NzIgMS45OTk4OCA3TDEuOTk5ODggOEMxLjk5OTg4IDguNTUyMjggMi40NDc1OSA5IDIuOTk5ODggOUwxMy45OTk5IDlMMTMuOTk5OSAxMy41QzEzLjk5OTkgMTMuNzc2MSAxNC4yMjM3IDE0IDE0LjQ5OTkgMTRDMTQuNzc2IDE0IDE0Ljk5OTkgMTMuNzc2MSAxNC45OTk5IDEzLjVMMTQuOTk5OSA5TDE0Ljk5OTkgNkwxNC45OTk5IDEuNUMxNC45OTk5IDEuMjIzODYgMTQuNzc2IDEgMTQuNDk5OSAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41IDBDMS4yMjM4NiAwIDEgMC4yMjM4NTggMSAwLjVDMSAwLjc3NjE0MiAxLjIyMzg2IDEgMS41IDFINlYxMkM2IDEyLjU1MjMgNi40NDc3MiAxMyA3IDEzSDhDOC41NTIyOCAxMyA5IDEyLjU1MjMgOSAxMlYxSDEzLjVDMTMuNzc2MSAxIDE0IDAuNzc2MTQyIDE0IDAuNUMxNCAwLjIyMzg1OCAxMy43NzYxIDAgMTMuNSAwSDlINkgxLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxwPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMC43NUw5Ljc1IDNINS4yNUw3LjUgMC43NVpNNy41IDE0LjI1TDkuNzUgMTJINS4yNUw3LjUgMTQuMjVaTTMgNS4yNUwwLjc1IDcuNUwzIDkuNzVWNS4yNVpNMTQuMjUgNy41TDEyIDUuMjVWOS43NUwxNC4yNSA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxoPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04Ljg5MTQgMi4xOTM3QzkuMTE1OCAyLjM1NDY0IDkuMTY3MjUgMi42NjcwMSA5LjAwNjMxIDIuODkxNDFMMi40NzM4OCAxMkgxMy41QzEzLjc3NjEgMTIgMTQgMTIuMjIzOSAxNCAxMi41QzE0IDEyLjc3NjIgMTMuNzc2MSAxMyAxMy41IDEzSDEuNUMxLjMxMjU0IDEzIDEuMTQwODIgMTIuODk1MiAxLjA1NTIgMTIuNzI4NEMwLjk2OTU3OCAxMi41NjE2IDAuOTg0NDM4IDEyLjM2MSAxLjA5MzY5IDEyLjIwODZMOC4xOTM2OSAyLjMwODYyQzguMzU0NjIgMi4wODQyMiA4LjY2NyAyLjAzMjc3IDguODkxNCAyLjE5MzdaTTExLjEgNi41MDAwMUMxMS4xIDYuMjIzODcgMTEuMzIzOCA2LjAwMDAxIDExLjYgNi4wMDAwMUMxMS44NzYxIDYuMDAwMDEgMTIuMSA2LjIyMzg3IDEyLjEgNi41MDAwMUMxMi4xIDYuNzc2MTUgMTEuODc2MSA3LjAwMDAxIDExLjYgNy4wMDAwMUMxMS4zMjM4IDcuMDAwMDEgMTEuMSA2Ljc3NjE1IDExLjEgNi41MDAwMVpNMTAuNCA0LjAwMDAxQzEwLjEyMzkgNC4wMDAwMSA5LjkwMDAzIDQuMjIzODcgOS45MDAwMyA0LjUwMDAxQzkuOTAwMDMgNC43NzYxNSAxMC4xMjM5IDUuMDAwMDEgMTAuNCA1LjAwMDAxQzEwLjY3NjIgNS4wMDAwMSAxMC45IDQuNzc2MTUgMTAuOSA0LjUwMDAxQzEwLjkgNC4yMjM4NyAxMC42NzYyIDQuMDAwMDEgMTAuNCA0LjAwMDAxWk0xMi4xIDguNTAwMDFDMTIuMSA4LjIyMzg3IDEyLjMyMzggOC4wMDAwMSAxMi42IDguMDAwMDFDMTIuODc2MSA4LjAwMDAxIDEzLjEgOC4yMjM4NyAxMy4xIDguNTAwMDFDMTMuMSA4Ljc3NjE1IDEyLjg3NjEgOS4wMDAwMSAxMi42IDkuMDAwMDFDMTIuMzIzOCA5LjAwMDAxIDEyLjEgOC43NzYxNSAxMi4xIDguNTAwMDFaTTEzLjQgMTBDMTMuMTIzOSAxMCAxMi45IDEwLjIyMzkgMTIuOSAxMC41QzEyLjkgMTAuNzc2MSAxMy4xMjM5IDExIDEzLjQgMTFDMTMuNjc2MiAxMSAxMy45IDEwLjc3NjEgMTMuOSAxMC41QzEzLjkgMTAuMjIzOSAxMy42NzYyIDEwIDEzLjQgMTBaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxDPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjMwOTAyIDFDMi45MzAyNSAxIDIuNTgzOTggMS4yMTQgMi40MTQ1OSAxLjU1Mjc5TDEuMDUyNzkgNC4yNzYzOUMxLjAxODA3IDQuMzQ1ODIgMSA0LjQyMjM4IDEgNC41VjEzQzEgMTMuNTUyMyAxLjQ0NzcyIDE0IDIgMTRIMTNDMTMuNTUyMyAxNCAxNCAxMy41NTIzIDE0IDEzVjQuNUMxNCA0LjQyMjM4IDEzLjk4MTkgNC4zNDU4MiAxMy45NDcyIDQuMjc2MzlMMTIuNTg1NCAxLjU1MjgxQzEyLjQxNiAxLjIxNDAzIDEyLjA2OTggMS4wMDAwMyAxMS42OTEgMS4wMDAwM0w3LjUgMS4wMDAwMUwzLjMwOTAyIDFaTTMuMzA5MDIgMkw3IDIuMDAwMDFWNEgyLjMwOTAyTDMuMzA5MDIgMlpNOCA0VjIuMDAwMDJMMTEuNjkxIDIuMDAwMDNMMTIuNjkxIDRIOFpNNy41IDVIMTNWMTNIMlY1SDcuNVpNNS41IDdDNS4yMjM4NiA3IDUgNy4yMjM4NiA1IDcuNUM1IDcuNzc2MTQgNS4yMjM4NiA4IDUuNSA4SDkuNUM5Ljc3NjE0IDggMTAgNy43NzYxNCAxMCA3LjVDMTAgNy4yMjM4NiA5Ljc3NjE0IDcgOS41IDdINS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEuMzUzNiAzLjY0NjQ0QzExLjU0ODggMy44NDE3IDExLjU0ODggNC4xNTgyOCAxMS4zNTM2IDQuMzUzNTRMNC43MDcxMSAxMUw5IDExQzkuMjc2MTQgMTEgOS41IDExLjIyMzkgOS41IDExLjVDOS41IDExLjc3NjEgOS4yNzYxNCAxMiA5IDEyTDMuNSAxMkMzLjM2NzM5IDEyIDMuMjQwMjEgMTEuOTQ3MyAzLjE0NjQ1IDExLjg1MzZDMy4wNTI2OCAxMS43NTk4IDMgMTEuNjMyNiAzIDExLjVMMyA1Ljk5OTk5QzMgNS43MjM4NSAzLjIyMzg2IDUuNDk5OTkgMy41IDUuNDk5OTlDMy43NzYxNCA1LjQ5OTk5IDQgNS43MjM4NSA0IDUuOTk5OTlWMTAuMjkyOUwxMC42NDY0IDMuNjQ2NDNDMTAuODQxNyAzLjQ1MTE3IDExLjE1ODMgMy40NTExNyAxMS4zNTM2IDMuNjQ2NDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxnPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjY0NjQ1IDMuNjQ2NDRDMy40NTExOCAzLjg0MTcgMy40NTExOCA0LjE1ODI4IDMuNjQ2NDUgNC4zNTM1NEwxMC4yOTI5IDExTDYgMTFDNS43MjM4NiAxMSA1LjUgMTEuMjIzOSA1LjUgMTEuNUM1LjUgMTEuNzc2MSA1LjcyMzg2IDEyIDYgMTJMMTEuNSAxMkMxMS42MzI2IDEyIDExLjc1OTggMTEuOTQ3MyAxMS44NTM2IDExLjg1MzZDMTEuOTQ3MyAxMS43NTk4IDEyIDExLjYzMjYgMTIgMTEuNUwxMiA1Ljk5OTk5QzEyIDUuNzIzODUgMTEuNzc2MSA1LjQ5OTk5IDExLjUgNS40OTk5OUMxMS4yMjM5IDUuNDk5OTkgMTEgNS43MjM4NSAxMSA1Ljk5OTk5VjEwLjI5MjlMNC4zNTM1NSAzLjY0NjQzQzQuMTU4MjkgMy40NTExNyAzLjg0MTcxIDMuNDUxMTcgMy42NDY0NSAzLjY0NjQ0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDJDNy43NzYxNCAyIDggMi4yMjM4NiA4IDIuNUw4IDExLjI5MjlMMTEuMTQ2NCA4LjE0NjQ1QzExLjM0MTcgNy45NTExOCAxMS42NTgzIDcuOTUxMTggMTEuODUzNiA4LjE0NjQ1QzEyLjA0ODggOC4zNDE3MSAxMi4wNDg4IDguNjU4MjkgMTEuODUzNiA4Ljg1MzU1TDcuODUzNTUgMTIuODUzNkM3Ljc1OTc5IDEyLjk0NzMgNy42MzI2MSAxMyA3LjUgMTNDNy4zNjczOSAxMyA3LjI0MDIxIDEyLjk0NzMgNy4xNDY0NSAxMi44NTM2TDMuMTQ2NDUgOC44NTM1NUMyLjk1MTE4IDguNjU4MjkgMi45NTExOCA4LjM0MTcxIDMuMTQ2NDUgOC4xNDY0NUMzLjM0MTcxIDcuOTUxMTggMy42NTgyOSA3Ljk1MTE4IDMuODUzNTUgOC4xNDY0NUw3IDExLjI5MjlMNyAyLjVDNyAyLjIyMzg2IDcuMjIzODYgMiA3LjUgMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuODUzNTUgMy4xNDY0NUM3LjA0ODgyIDMuMzQxNzEgNy4wNDg4MiAzLjY1ODI5IDYuODUzNTUgMy44NTM1NUwzLjcwNzExIDdIMTIuNUMxMi43NzYxIDcgMTMgNy4yMjM4NiAxMyA3LjVDMTMgNy43NzYxNCAxMi43NzYxIDggMTIuNSA4SDMuNzA3MTFMNi44NTM1NSAxMS4xNDY0QzcuMDQ4ODIgMTEuMzQxNyA3LjA0ODgyIDExLjY1ODMgNi44NTM1NSAxMS44NTM2QzYuNjU4MjkgMTIuMDQ4OCA2LjM0MTcxIDEyLjA0ODggNi4xNDY0NSAxMS44NTM2TDIuMTQ2NDUgNy44NTM1NUMxLjk1MTE4IDcuNjU4MjkgMS45NTExOCA3LjM0MTcxIDIuMTQ2NDUgNy4xNDY0NUw2LjE0NjQ1IDMuMTQ2NDVDNi4zNDE3MSAyLjk1MTE4IDYuNjU4MjkgMi45NTExOCA2Ljg1MzU1IDMuMTQ2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx5PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjE0NjQ1IDMuMTQ2NDVDOC4zNDE3MSAyLjk1MTE4IDguNjU4MjkgMi45NTExOCA4Ljg1MzU1IDMuMTQ2NDVMMTIuODUzNiA3LjE0NjQ1QzEzLjA0ODggNy4zNDE3MSAxMy4wNDg4IDcuNjU4MjkgMTIuODUzNiA3Ljg1MzU1TDguODUzNTUgMTEuODUzNkM4LjY1ODI5IDEyLjA0ODggOC4zNDE3MSAxMi4wNDg4IDguMTQ2NDUgMTEuODUzNkM3Ljk1MTE4IDExLjY1ODMgNy45NTExOCAxMS4zNDE3IDguMTQ2NDUgMTEuMTQ2NEwxMS4yOTI5IDhIMi41QzIuMjIzODYgOCAyIDcuNzc2MTQgMiA3LjVDMiA3LjIyMzg2IDIuMjIzODYgNyAyLjUgN0gxMS4yOTI5TDguMTQ2NDUgMy44NTM1NUM3Ljk1MTE4IDMuNjU4MjkgNy45NTExOCAzLjM0MTcxIDguMTQ2NDUgMy4xNDY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjM1MzYgMTEuMzUzNkMxMS41NDg4IDExLjE1ODMgMTEuNTQ4OCAxMC44NDE3IDExLjM1MzYgMTAuNjQ2NUw0LjcwNzExIDRMOSA0QzkuMjc2MTQgNCA5LjUgMy43NzYxNCA5LjUgMy41QzkuNSAzLjIyMzg2IDkuMjc2MTQgMyA5IDNMMy41IDNDMy4zNjczOSAzIDMuMjQwMjEgMy4wNTI2OCAzLjE0NjQ1IDMuMTQ2NDVDMy4wNTI2OCAzLjI0MDIyIDMgMy4zNjczOSAzIDMuNUwzIDkuMDAwMDFDMyA5LjI3NjE1IDMuMjIzODYgOS41MDAwMSAzLjUgOS41MDAwMUMzLjc3NjE0IDkuNTAwMDEgNCA5LjI3NjE1IDQgOS4wMDAwMVY0LjcwNzExTDEwLjY0NjQgMTEuMzUzNkMxMC44NDE3IDExLjU0ODggMTEuMTU4MyAxMS41NDg4IDExLjM1MzYgMTEuMzUzNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHg9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNjQ2NDUgMTEuMzUzNkMzLjQ1MTE4IDExLjE1ODMgMy40NTExOCAxMC44NDE3IDMuNjQ2NDUgMTAuNjQ2NUwxMC4yOTI5IDRMNiA0QzUuNzIzODYgNCA1LjUgMy43NzYxNCA1LjUgMy41QzUuNSAzLjIyMzg2IDUuNzIzODYgMyA2IDNMMTEuNSAzQzExLjYzMjYgMyAxMS43NTk4IDMuMDUyNjggMTEuODUzNiAzLjE0NjQ1QzExLjk0NzMgMy4yNDAyMiAxMiAzLjM2NzM5IDEyIDMuNUwxMiA5LjAwMDAxQzEyIDkuMjc2MTUgMTEuNzc2MSA5LjUwMDAxIDExLjUgOS41MDAwMUMxMS4yMjM5IDkuNTAwMDEgMTEgOS4yNzYxNSAxMSA5LjAwMDAxVjQuNzA3MTFMNC4zNTM1NSAxMS4zNTM2QzQuMTU4MjkgMTEuNTQ4OCAzLjg0MTcxIDExLjU0ODggMy42NDY0NSAxMS4zNTM2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4xNDY0NSAyLjE0NjQ1QzcuMzQxNzEgMS45NTExOCA3LjY1ODI5IDEuOTUxMTggNy44NTM1NSAyLjE0NjQ1TDExLjg1MzYgNi4xNDY0NUMxMi4wNDg4IDYuMzQxNzEgMTIuMDQ4OCA2LjY1ODI5IDExLjg1MzYgNi44NTM1NUMxMS42NTgzIDcuMDQ4ODIgMTEuMzQxNyA3LjA0ODgyIDExLjE0NjQgNi44NTM1NUw4IDMuNzA3MTFMOCAxMi41QzggMTIuNzc2MSA3Ljc3NjE0IDEzIDcuNSAxM0M3LjIyMzg2IDEzIDcgMTIuNzc2MSA3IDEyLjVMNyAzLjcwNzExTDMuODUzNTUgNi44NTM1NUMzLjY1ODI5IDcuMDQ4ODIgMy4zNDE3MSA3LjA0ODgyIDMuMTQ2NDUgNi44NTM1NUMyLjk1MTE4IDYuNjU4MjkgMi45NTExOCA2LjM0MTcxIDMuMTQ2NDUgNi4xNDY0NUw3LjE0NjQ1IDIuMTQ2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxMPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjUgMkgxMi41QzEyLjc3NjEgMiAxMyAyLjIyMzg2IDEzIDIuNVYxMi41QzEzIDEyLjc3NjEgMTIuNzc2MSAxMyAxMi41IDEzSDIuNUMyLjIyMzg2IDEzIDIgMTIuNzc2MSAyIDEyLjVWMi41QzIgMi4yMjM4NiAyLjIyMzg2IDIgMi41IDJaTTEgMi41QzEgMS42NzE1NyAxLjY3MTU3IDEgMi41IDFIMTIuNUMxMy4zMjg0IDEgMTQgMS42NzE1NyAxNCAyLjVWMTIuNUMxNCAxMy4zMjg0IDEzLjMyODQgMTQgMTIuNSAxNEgyLjVDMS42NzE1NyAxNCAxIDEzLjMyODQgMSAxMi41VjIuNVpNNy41IDRDNy43NzYxNCA0IDggMy43NzYxNCA4IDMuNUM4IDMuMjIzODYgNy43NzYxNCAzIDcuNSAzQzcuMjIzODYgMyA3IDMuMjIzODYgNyAzLjVDNyAzLjc3NjE0IDcuMjIzODYgNCA3LjUgNFpNOCA1LjVDOCA1Ljc3NjE0IDcuNzc2MTQgNiA3LjUgNkM3LjIyMzg2IDYgNyA1Ljc3NjE0IDcgNS41QzcgNS4yMjM4NiA3LjIyMzg2IDUgNy41IDVDNy43NzYxNCA1IDggNS4yMjM4NiA4IDUuNVpNNy41IDhDNy43NzYxNCA4IDggNy43NzYxNCA4IDcuNUM4IDcuMjIzODYgNy43NzYxNCA3IDcuNSA3QzcuMjIzODYgNyA3IDcuMjIzODYgNyA3LjVDNyA3Ljc3NjE0IDcuMjIzODYgOCA3LjUgOFpNMTAgNy41QzEwIDcuNzc2MTQgOS43NzYxNCA4IDkuNSA4QzkuMjIzODYgOCA5IDcuNzc2MTQgOSA3LjVDOSA3LjIyMzg2IDkuMjIzODYgNyA5LjUgN0M5Ljc3NjE0IDcgMTAgNy4yMjM4NiAxMCA3LjVaTTExLjUgOEMxMS43NzYxIDggMTIgNy43NzYxNCAxMiA3LjVDMTIgNy4yMjM4NiAxMS43NzYxIDcgMTEuNSA3QzExLjIyMzkgNyAxMSA3LjIyMzg2IDExIDcuNUMxMSA3Ljc3NjE0IDExLjIyMzkgOCAxMS41IDhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxNPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzAxNCA3LjQ5OTg4QzAuODc3MDE0IDMuODQyMTkgMy44NDIxNiAwLjg3NzA0NSA3LjQ5OTg1IDAuODc3MDQ1QzExLjE1NzUgMC44NzcwNDUgMTQuMTIyNyAzLjg0MjE5IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDExLjE1NzUgMTEuMTU3NSAxNC4xMjI3IDcuNDk5ODUgMTQuMTIyN0MzLjg0MjE2IDE0LjEyMjcgMC44NzcwMTQgMTEuMTU3NSAwLjg3NzAxNCA3LjQ5OTg4Wk03LjQ5OTg1IDEuODI3MDRDNC4zNjY4MyAxLjgyNzA0IDEuODI3MDEgNC4zNjY4NiAxLjgyNzAxIDcuNDk5ODhDMS44MjcwMSA4Ljk3MTk2IDIuMzg3NzQgMTAuMzEzMSAzLjMwNzI3IDExLjMyMTNDNC4xOTA3NCA5Ljk0MTE5IDUuNzM4MTggOS4wMjQ5OSA3LjUwMDIzIDkuMDI0OTlDOS4yNjIwNiA5LjAyNDk5IDEwLjgwOTMgOS45NDA5NyAxMS42OTI5IDExLjMyMDhDMTIuNjEyMSAxMC4zMTI3IDEzLjE3MjcgOC45NzE3MiAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyA0LjM2Njg2IDEwLjYzMjggMS44MjcwNCA3LjQ5OTg1IDEuODI3MDRaTTEwLjk4MTggMTEuOTc4N0MxMC4yODM5IDEwLjc3OTUgOC45ODU3IDkuOTc0OTkgNy41MDAyMyA5Ljk3NDk5QzYuMDE0NTggOS45NzQ5OSA0LjcxNjI0IDEwLjc3OTcgNC4wMTg0NSAxMS45NzkxQzQuOTc5NTIgMTIuNzI3MiA2LjE4NzY1IDEzLjE3MjcgNy40OTk4NSAxMy4xNzI3QzguODEyMjcgMTMuMTcyNyAxMC4wMjA2IDEyLjcyNyAxMC45ODE4IDExLjk3ODdaTTUuMTQ5OTkgNi41MDQ4N0M1LjE0OTk5IDUuMjA3IDYuMjAyMTIgNC4xNTQ4NyA3LjQ5OTk5IDQuMTU0ODdDOC43OTc4NiA0LjE1NDg3IDkuODQ5OTkgNS4yMDcgOS44NDk5OSA2LjUwNDg3QzkuODQ5OTkgNy44MDI3NCA4Ljc5Nzg2IDguODU0ODcgNy40OTk5OSA4Ljg1NDg3QzYuMjAyMTIgOC44NTQ4NyA1LjE0OTk5IDcuODAyNzQgNS4xNDk5OSA2LjUwNDg3Wk03LjQ5OTk5IDUuMTA0ODdDNi43MjY3OSA1LjEwNDg3IDYuMDk5OTkgNS43MzE2NyA2LjA5OTk5IDYuNTA0ODdDNi4wOTk5OSA3LjI3ODA3IDYuNzI2NzkgNy45MDQ4NyA3LjQ5OTk5IDcuOTA0ODdDOC4yNzMxOSA3LjkwNDg3IDguODk5OTkgNy4yNzgwNyA4Ljg5OTk5IDYuNTA0ODdDOC44OTk5OSA1LjczMTY3IDguMjczMTkgNS4xMDQ4NyA3LjQ5OTk5IDUuMTA0ODdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxTPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDFDNSAwLjQ0NzcxNSA1LjQ0NzcyIDAgNiAwSDlDOS41NTIyOCAwIDEwIDAuNDQ3NzE1IDEwIDFWMkgxNEMxNC41NTIzIDIgMTUgMi40NDc3MiAxNSAzVjZDMTUgNi44ODg4IDE0LjYxMzEgNy42ODczNCAxNCA4LjIzNjA4VjExLjVDMTQgMTIuMzI4NCAxMy4zMjg0IDEzIDEyLjUgMTNIMi41QzEuNjcxNTcgMTMgMSAxMi4zMjg0IDEgMTEuNVY4LjIzNTlDMC4zODY5NyA3LjY4NzIxIDAgNi44ODg4MyAwIDZWM0MwIDIuNDQ3NzIgMC40NDc3MTYgMiAxIDJINVYxWk05IDFWMkg2VjFIOVpNMSAzSDVINS41SDkuNUgxMEgxNFY2QzE0IDYuNjU0IDEzLjY4NjYgNy4yMzQ2NyAxMy4xOTk3IDcuNjAwNEMxMi44NjU1IDcuODUxNDQgMTIuNDUwOCA4IDEyIDhIOFY3LjVDOCA3LjIyMzg2IDcuNzc2MTQgNyA3LjUgN0M3LjIyMzg2IDcgNyA3LjIyMzg2IDcgNy41VjhIM0MyLjU0OTMgOCAyLjEzNDYgNy44NTEzMyAxLjgwMDI5IDcuNjAwMjJDMS4zMTMzNSA3LjIzNDQ2IDEgNi42NTM5NiAxIDZWM1pNNyA5SDNDMi42NDk2MSA5IDIuMzEyOTIgOC45Mzk3MiAyIDguODI5MDVWMTEuNUMyIDExLjc3NjEgMi4yMjM4NiAxMiAyLjUgMTJIMTIuNUMxMi43NzYxIDEyIDEzIDExLjc3NjEgMTMgMTEuNVY4LjgyOTE1QzEyLjY4NzEgOC45Mzk3OCAxMi4zNTA0IDkgMTIgOUg4VjkuNUM4IDkuNzc2MTQgNy43NzYxNCAxMCA3LjUgMTBDNy4yMjM4NiAxMCA3IDkuNzc2MTQgNyA5LjVWOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LF89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNSA2SDExLjVDMTIuMzI4NCA2IDEzIDYuNjcxNTcgMTMgNy41QzEzIDguMzI4NDMgMTIuMzI4NCA5IDExLjUgOUgzLjVDMi42NzE1NyA5IDIgOC4zMjg0MyAyIDcuNUMyIDYuNjcxNTcgMi42NzE1NyA2IDMuNSA2Wk0xIDcuNUMxIDYuMTE5MjkgMi4xMTkyOSA1IDMuNSA1SDExLjVDMTIuODgwNyA1IDE0IDYuMTE5MjkgMTQgNy41QzE0IDguODgwNzEgMTIuODgwNyAxMCAxMS41IDEwSDMuNUMyLjExOTI5IDEwIDEgOC44ODA3MSAxIDcuNVpNNC41IDdDNC4yMjM4NiA3IDQgNy4yMjM4NiA0IDcuNUM0IDcuNzc2MTQgNC4yMjM4NiA4IDQuNSA4SDEwLjVDMTAuNzc2MSA4IDExIDcuNzc2MTQgMTEgNy41QzExIDcuMjIzODYgMTAuNzc2MSA3IDEwLjUgN0g0LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxqPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS41IDFDMTEuNzc2MSAxIDEyIDEuMjIzODYgMTIgMS41VjEzLjVDMTIgMTMuNzc2MSAxMS43NzYxIDE0IDExLjUgMTRDMTEuMjIzOSAxNCAxMSAxMy43NzYxIDExIDEzLjVWMS41QzExIDEuMjIzODYgMTEuMjIzOSAxIDExLjUgMVpNOS41IDNDOS43NzYxNCAzIDEwIDMuMjIzODYgMTAgMy41VjEzLjVDMTAgMTMuNzc2MSA5Ljc3NjE0IDE0IDkuNSAxNEM5LjIyMzg2IDE0IDkgMTMuNzc2MSA5IDEzLjVWMy41QzkgMy4yMjM4NiA5LjIyMzg2IDMgOS41IDNaTTEzLjUgM0MxMy43NzYxIDMgMTQgMy4yMjM4NiAxNCAzLjVWMTMuNUMxNCAxMy43NzYxIDEzLjc3NjEgMTQgMTMuNSAxNEMxMy4yMjM5IDE0IDEzIDEzLjc3NjEgMTMgMTMuNVYzLjVDMTMgMy4yMjM4NiAxMy4yMjM5IDMgMTMuNSAzWk01LjUgNEM1Ljc3NjE0IDQgNiA0LjIyMzg2IDYgNC41VjEzLjVDNiAxMy43NzYxIDUuNzc2MTQgMTQgNS41IDE0QzUuMjIzODYgMTQgNSAxMy43NzYxIDUgMTMuNVY0LjVDNSA0LjIyMzg2IDUuMjIzODYgNCA1LjUgNFpNMS41IDVDMS43NzYxNCA1IDIgNS4yMjM4NiAyIDUuNVYxMy41QzIgMTMuNzc2MSAxLjc3NjE0IDE0IDEuNSAxNEMxLjIyMzg2IDE0IDEgMTMuNzc2MSAxIDEzLjVWNS41QzEgNS4yMjM4NiAxLjIyMzg2IDUgMS41IDVaTTcuNSA1QzcuNzc2MTQgNSA4IDUuMjIzODYgOCA1LjVWMTMuNUM4IDEzLjc3NjEgNy43NzYxNCAxNCA3LjUgMTRDNy4yMjM4NiAxNCA3IDEzLjc3NjEgNyAxMy41VjUuNUM3IDUuMjIzODYgNy4yMjM4NiA1IDcuNSA1Wk0zLjUgN0MzLjc3NjE0IDcgNCA3LjIyMzg2IDQgNy41VjEzLjVDNCAxMy43NzYxIDMuNzc2MTQgMTQgMy41IDE0QzMuMjIzODYgMTQgMyAxMy43NzYxIDMgMTMuNVY3LjVDMyA3LjIyMzg2IDMuMjIzODYgNyAzLjUgN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguNjAxMjQgMS4yNTA4NkM4LjYwMTI0IDEuNzU0NTkgOC4yNjI3OCAyLjE3OTI3IDcuODAwODcgMi4zMDk4OUMxMC4xNDU5IDIuNDY0NyAxMiA0LjQxNTgyIDEyIDYuNzk5OTlWMTAuMjVDMTIgMTEuMDU2MyAxMi4wMzI5IDExLjcwNzQgMTIuNzIzNiAxMi4wNTI4QzEyLjkzMSAxMi4xNTY1IDEzLjAzOTkgMTIuMzg5MiAxMi45ODY2IDEyLjYxNDlDMTIuOTMzMyAxMi44NDA2IDEyLjczMTkgMTMgMTIuNSAxM0g4LjE2MTQ0QzguMzY5MDQgMTMuMTgzMiA4LjQ5OTk3IDEzLjQ1MTMgOC40OTk5NyAxMy43NUM4LjQ5OTk3IDE0LjMwMjMgOC4wNTIyNiAxNC43NSA3LjQ5OTk3IDE0Ljc1QzYuOTQ3NjkgMTQuNzUgNi40OTk5NyAxNC4zMDIzIDYuNDk5OTcgMTMuNzVDNi40OTk5NyAxMy40NTEzIDYuNjMwOTEgMTMuMTgzMiA2LjgzODUxIDEzSDIuNDk5OTlDMi4yNjgxIDEzIDIuMDY2NjQgMTIuODQwNiAyLjAxMzM2IDEyLjYxNDlDMS45NjAwOSAxMi4zODkyIDIuMDY4OTcgMTIuMTU2NSAyLjI3NjM4IDEyLjA1MjhDMi45NjcwOCAxMS43MDc0IDIuOTk5OTkgMTEuMDU2MyAyLjk5OTk5IDEwLjI1VjYuNzk5OTlDMi45OTk5OSA0LjQxNTM3IDQuODU0ODEgMi40NjM5NiA3LjIwMDQyIDIuMzA5OEM2LjczODY3IDIuMTc5MDggNi40MDAzNiAxLjc1NDQ4IDYuNDAwMzYgMS4yNTA4NkM2LjQwMDM2IDAuNjQzMTA0IDYuODkzMDQgMC4xNTA0MjEgNy41MDA4IDAuMTUwNDIxQzguMTA4NTUgMC4xNTA0MjEgOC42MDEyNCAwLjY0MzEwNCA4LjYwMTI0IDEuMjUwODZaTTcuNDk5OTkgMy4yOTk5OUM1LjU2Njk5IDMuMjk5OTkgMy45OTk5OSA0Ljg2Njk5IDMuOTk5OTkgNi43OTk5OVYxMC4yNUw0LjAwMDAyIDEwLjMwMDlDNC4wMDA1IDEwLjc0NjMgNC4wMDEyMSAxMS40MDg0IDMuNjk5MjkgMTJIMTEuMzAwN0MxMC45OTg4IDExLjQwODQgMTAuOTk5NSAxMC43NDYzIDExIDEwLjMwMDlMMTEgMTAuMjVWNi43OTk5OUMxMSA0Ljg2Njk5IDkuNDMyOTkgMy4yOTk5OSA3LjQ5OTk5IDMuMjk5OTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxQPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zIDlDMyA2LjUgNC41IDQuMjUgNy41IDEuNUMxMC41IDQuMjUgMTIgNi41IDEyIDlDMTIgMTEuNDg1MyA5Ljk4NTI4IDEzLjUgNy41IDEzLjVDNS4wMTQ3MiAxMy41IDMgMTEuNDg1MyAzIDlaTTEwLjk1MjQgOC4zMDMwN0M5LjY3MzQ3IDcuODIxMjEgOC4yODc5IDguNDYyMDggNi45ODk1NiA5LjA2MjU5QzUuOTMyNyA5LjU1MTQyIDQuOTMzNjUgMTAuMDEzNSA0LjA5Njk1IDkuODIxNTNDNC4wMzM1NyA5LjU1ODA0IDQgOS4yODI5NCA0IDlDNCA3LjExMjAzIDUuMDI2ODYgNS4yNzE5NSA3LjUgMi44NzM1N0M5LjY2ODM3IDQuOTc2MzkgMTAuNzI1IDYuNjUwMDQgMTAuOTUyNCA4LjMwMzA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyAyLjVDMyAyLjIyMzg2IDMuMjIzODYgMiAzLjUgMkgxMS41QzExLjc3NjEgMiAxMiAyLjIyMzg2IDEyIDIuNVYxMy41QzEyIDEzLjY4MTggMTEuOTAxNCAxMy44NDkyIDExLjc0MjQgMTMuOTM3M0MxMS41ODM0IDE0LjAyNTQgMTEuMzg5MSAxNC4wMjAzIDExLjIzNSAxMy45MjRMNy41IDExLjU4OTZMMy43NjUgMTMuOTI0QzMuNjEwODcgMTQuMDIwMyAzLjQxNjU5IDE0LjAyNTQgMy4yNTc2MiAxMy45MzczQzMuMDk4NjQgMTMuODQ5MiAzIDEzLjY4MTggMyAxMy41VjIuNVpNNCAzVjEyLjU5NzlMNi45NyAxMC43NDE2QzcuMjk0MjcgMTAuNTM5IDcuNzA1NzMgMTAuNTM5IDguMDMgMTAuNzQxNkwxMSAxMi41OTc5VjNINFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEg9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuMjUgMUMwLjI1IDAuNTg1Nzg2IDAuNTg1Nzg2IDAuMjUgMSAwLjI1SDE0QzE0LjQxNDIgMC4yNSAxNC43NSAwLjU4NTc4NiAxNC43NSAxVjE0QzE0Ljc1IDE0LjQxNDIgMTQuNDE0MiAxNC43NSAxNCAxNC43NUgxQzAuNTg1Nzg2IDE0Ljc1IDAuMjUgMTQuNDE0MiAwLjI1IDE0VjFaTTEuNzUgMS43NVYxMy4yNUgxMy4yNVYxLjc1SDEuNzVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjVcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjNcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjExXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjlcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjExXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSl9LFY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgMTMuMjVMMTQgMTMuMjVWMTQuNzVMMSAxNC43NVYxMy4yNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjVcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjVcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjNcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjNcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjExXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI5XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiOVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMTFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCIxMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiOVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiMTFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pKX0sUj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMCA3LjVDMCA3LjIyMzg2IDAuMjIzODU4IDcgMC41IDdIM0MzLjI3NjE0IDcgMy41IDcuMjIzODYgMy41IDcuNUMzLjUgNy43NzYxNCAzLjI3NjE0IDggMyA4SDAuNUMwLjIyMzg1OCA4IDAgNy43NzYxNCAwIDcuNVpNNS43NSA3LjVDNS43NSA3LjIyMzg2IDUuOTczODYgNyA2LjI1IDdIOC43NUM5LjAyNjE0IDcgOS4yNSA3LjIyMzg2IDkuMjUgNy41QzkuMjUgNy43NzYxNCA5LjAyNjE0IDggOC43NSA4SDYuMjVDNS45NzM4NiA4IDUuNzUgNy43NzYxNCA1Ljc1IDcuNVpNMTIgN0MxMS43MjM5IDcgMTEuNSA3LjIyMzg2IDExLjUgNy41QzExLjUgNy43NzYxNCAxMS43MjM5IDggMTIgOEgxNC41QzE0Ljc3NjEgOCAxNSA3Ljc3NjE0IDE1IDcuNUMxNSA3LjIyMzg2IDE0Ljc3NjEgNyAxNC41IDdIMTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxJPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjUgNi42MjVDMS4wMTY3NSA2LjYyNSAwLjYyNSA3LjAxNjc1IDAuNjI1IDcuNUMwLjYyNSA3Ljk4MzI1IDEuMDE2NzUgOC4zNzUgMS41IDguMzc1QzEuOTgzMjUgOC4zNzUgMi4zNzUgNy45ODMyNSAyLjM3NSA3LjVDMi4zNzUgNy4wMTY3NSAxLjk4MzI1IDYuNjI1IDEuNSA2LjYyNVpNNS41IDYuNjI1QzUuMDE2NzUgNi42MjUgNC42MjUgNy4wMTY3NSA0LjYyNSA3LjVDNC42MjUgNy45ODMyNSA1LjAxNjc1IDguMzc1IDUuNSA4LjM3NUM1Ljk4MzI1IDguMzc1IDYuMzc1IDcuOTgzMjUgNi4zNzUgNy41QzYuMzc1IDcuMDE2NzUgNS45ODMyNSA2LjYyNSA1LjUgNi42MjVaTTkuNSA2LjYyNUM5LjAxNjc1IDYuNjI1IDguNjI1IDcuMDE2NzUgOC42MjUgNy41QzguNjI1IDcuOTgzMjUgOS4wMTY3NSA4LjM3NSA5LjUgOC4zNzVDOS45ODMyNSA4LjM3NSAxMC4zNzUgNy45ODMyNSAxMC4zNzUgNy41QzEwLjM3NSA3LjAxNjc1IDkuOTgzMjUgNi42MjUgOS41IDYuNjI1Wk0xMi42MjUgNy41QzEyLjYyNSA3LjAxNjc1IDEzLjAxNjggNi42MjUgMTMuNSA2LjYyNUMxMy45ODMyIDYuNjI1IDE0LjM3NSA3LjAxNjc1IDE0LjM3NSA3LjVDMTQuMzc1IDcuOTgzMjUgMTMuOTgzMiA4LjM3NSAxMy41IDguMzc1QzEzLjAxNjggOC4zNzUgMTIuNjI1IDcuOTgzMjUgMTIuNjI1IDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFo9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNzUgMUwxLjc1IDE0TDAuMjQ5OTk5IDE0TDAuMjUgMUwxLjc1IDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEwXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxMCA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMFwiLHk6XCIxM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDEwIDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMlwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTIgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTJcIix5OlwiMTNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxMiAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgOCA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTQgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCIxM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDggMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjEzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTQgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDggNSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDUpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDggMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiOVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDggOSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiOVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDkpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiMTFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDExKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCIxMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDExKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI2XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA2IDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjZcIix5OlwiMTNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA2IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI0XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA0IDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjRcIix5OlwiMTNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA0IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMFwiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTAgMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTJcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDEyIDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDggMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjZcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDYgMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNFwiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgNCAxKVwiLGZpbGw6bn0pKX0sQT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjUuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiNS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCIxMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCIxLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjVcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjVcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiM1wiLHk6XCIxMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOVwiLHk6XCIxLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjExXCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTFcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTFcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjkuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiOS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjExLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjExLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiNS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCIxLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiOS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjExLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSkpfSxEPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy4yNSAxTDEzLjI1IDE0TDE0Ljc1IDE0TDE0Ljc1IDFMMTMuMjUgMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDUgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDUgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAzIDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAzIDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDEgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA3IDUpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxIDUpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA3IDMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxIDMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA3IDkpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxIDkpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA3IDExKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSAxMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDkgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDkgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxMSA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMTEgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA1IDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAzIDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA3IDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxIDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA5IDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxMSAxKVwiLGZpbGw6bn0pKX0sQj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS4yNSA3LjVDMS4yNSA3LjIyMzg2IDEuNDczODYgNyAxLjc1IDdIMTMuMjVDMTMuNTI2MSA3IDEzLjc1IDcuMjIzODYgMTMuNzUgNy41QzEzLjc1IDcuNzc2MTQgMTMuNTI2MSA4IDEzLjI1IDhIMS43NUMxLjQ3Mzg2IDggMS4yNSA3Ljc3NjE0IDEuMjUgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjUuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjVcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjExXCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI5LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMTEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDEuNDk5OTRDMSAxLjIyMzggMS4yMjM4NiAwLjk5OTkzOSAxLjUgMC45OTk5MzlINlYxLjk5OTk0SDJWNS45OTk5NEgxVjEuNDk5OTRaTTEzIDEuOTk5OTRIOVYwLjk5OTkzOUgxMy41QzEzLjc3NjEgMC45OTk5MzkgMTQgMS4yMjM4IDE0IDEuNDk5OTRWNS45OTk5NEgxM1YxLjk5OTk0Wk0xIDEzLjQ5OTlWOC45OTk5NEgyVjEyLjk5OTlINlYxMy45OTk5SDEuNUMxLjIyMzg2IDEzLjk5OTkgMSAxMy43NzYxIDEgMTMuNDk5OVpNMTMgMTIuOTk5OVY4Ljk5OTk0SDE0VjEzLjQ5OTlDMTQgMTMuNzc2MSAxMy43NzYxIDEzLjk5OTkgMTMuNSAxMy45OTk5SDkuNVYxMi45OTk5SDEzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sJD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41IDNDMS4yMjM4NiAzIDEgMy4yMjM4NiAxIDMuNUMxIDMuNzc2MTQgMS4yMjM4NiA0IDEuNSA0SDEzLjVDMTMuNzc2MSA0IDE0IDMuNzc2MTQgMTQgMy41QzE0IDMuMjIzODYgMTMuNzc2MSAzIDEzLjUgM0gxLjVaTTEgNy41QzEgNy4yMjM4NiAxLjIyMzg2IDcgMS41IDdIMy41QzMuNzc2MTQgNyA0IDcuMjIzODYgNCA3LjVDNCA3Ljc3NjE0IDMuNzc2MTQgOCAzLjUgOEgxLjVDMS4yMjM4NiA4IDEgNy43NzYxNCAxIDcuNVpNMSAxMS41QzEgMTEuMjIzOSAxLjIyMzg2IDExIDEuNSAxMUMxLjc3NjE0IDExIDIgMTEuMjIzOSAyIDExLjVDMiAxMS43NzYxIDEuNzc2MTQgMTIgMS41IDEyQzEuMjIzODYgMTIgMSAxMS43NzYxIDEgMTEuNVpNMyAxMS41QzMgMTEuMjIzOSAzLjIyMzg2IDExIDMuNSAxMUMzLjc3NjE0IDExIDQgMTEuMjIzOSA0IDExLjVDNCAxMS43NzYxIDMuNzc2MTQgMTIgMy41IDEyQzMuMjIzODYgMTIgMyAxMS43NzYxIDMgMTEuNVpNNS41IDExQzUuMjIzODYgMTEgNSAxMS4yMjM5IDUgMTEuNUM1IDExLjc3NjEgNS4yMjM4NiAxMiA1LjUgMTJDNS43NzYxNCAxMiA2IDExLjc3NjEgNiAxMS41QzYgMTEuMjIzOSA1Ljc3NjE0IDExIDUuNSAxMVpNNyAxMS41QzcgMTEuMjIzOSA3LjIyMzg2IDExIDcuNSAxMUM3Ljc3NjE0IDExIDggMTEuMjIzOSA4IDExLjVDOCAxMS43NzYxIDcuNzc2MTQgMTIgNy41IDEyQzcuMjIzODYgMTIgNyAxMS43NzYxIDcgMTEuNVpNOS41IDExQzkuMjIzODYgMTEgOSAxMS4yMjM5IDkgMTEuNUM5IDExLjc3NjEgOS4yMjM4NiAxMiA5LjUgMTJDOS43NzYxNCAxMiAxMCAxMS43NzYxIDEwIDExLjVDMTAgMTEuMjIzOSA5Ljc3NjE0IDExIDkuNSAxMVpNMTEgMTEuNUMxMSAxMS4yMjM5IDExLjIyMzkgMTEgMTEuNSAxMUMxMS43NzYxIDExIDEyIDExLjIyMzkgMTIgMTEuNUMxMiAxMS43NzYxIDExLjc3NjEgMTIgMTEuNSAxMkMxMS4yMjM5IDEyIDExIDExLjc3NjEgMTEgMTEuNVpNMTMuNSAxMUMxMy4yMjM5IDExIDEzIDExLjIyMzkgMTMgMTEuNUMxMyAxMS43NzYxIDEzLjIyMzkgMTIgMTMuNSAxMkMxMy43NzYxIDEyIDE0IDExLjc3NjEgMTQgMTEuNUMxNCAxMS4yMjM5IDEzLjc3NjEgMTEgMTMuNSAxMVpNNi41IDdDNi4yMjM4NiA3IDYgNy4yMjM4NiA2IDcuNUM2IDcuNzc2MTQgNi4yMjM4NiA4IDYuNSA4SDguNUM4Ljc3NjE0IDggOSA3Ljc3NjE0IDkgNy41QzkgNy4yMjM4NiA4Ljc3NjE0IDcgOC41IDdINi41Wk0xMSA3LjVDMTEgNy4yMjM4NiAxMS4yMjM5IDcgMTEuNSA3SDEzLjVDMTMuNzc2MSA3IDE0IDcuMjIzODYgMTQgNy41QzE0IDcuNzc2MTQgMTMuNzc2MSA4IDEzLjUgOEgxMS41QzExLjIyMzkgOCAxMSA3Ljc3NjE0IDExIDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0IDEuNzVMMSAxLjc1TDEgMC4yNDk5OTlMMTQgMC4yNUwxNCAxLjc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjEwXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA4IDEwKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIyXCIseTpcIjEwXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAyIDEwKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjEyXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA4IDEyKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIyXCIseTpcIjEyXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAyIDEyKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjhcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDggOClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCIxNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgOCAxNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMlwiLHk6XCI4XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAyIDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjJcIix5OlwiMTRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDIgMTQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEwXCIseTpcIjhcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDEwIDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEwXCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxMCAxNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTJcIix5OlwiOFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTIgOClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTJcIix5OlwiMTRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDEyIDE0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI2XCIseTpcIjhcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDYgOClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNlwiLHk6XCIxNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgNiAxNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNFwiLHk6XCI4XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA0IDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjRcIix5OlwiMTRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDQgMTQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiNlwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgOCA2KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIyXCIseTpcIjZcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDIgNilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCI0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA4IDQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjJcIix5OlwiNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMiA0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCIxMFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTQgMTApXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjEyXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxNCAxMilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiOFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTQgOClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiMTRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDE0IDE0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCI2XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxNCA2KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCI0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxNCA0KVwiLGZpbGw6bn0pKX0sVz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTIuNSAySDIuNUMyLjIyMzg2IDIgMiAyLjIyMzg2IDIgMi41VjEyLjVDMiAxMi43NzYxIDIuMjIzODYgMTMgMi41IDEzSDEyLjVDMTIuNzc2MSAxMyAxMyAxMi43NzYxIDEzIDEyLjVWMi41QzEzIDIuMjIzODYgMTIuNzc2MSAyIDEyLjUgMlpNMi41IDFDMS42NzE1NyAxIDEgMS42NzE1NyAxIDIuNVYxMi41QzEgMTMuMzI4NCAxLjY3MTU3IDE0IDIuNSAxNEgxMi41QzEzLjMyODQgMTQgMTQgMTMuMzI4NCAxNCAxMi41VjIuNUMxNCAxLjY3MTU3IDEzLjMyODQgMSAxMi41IDFIMi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS45OTk5OCAwLjk5OTk3NkMxLjQ0NzY5IDAuOTk5OTc2IDAuOTk5OTc2IDEuNDQ3NjkgMC45OTk5NzYgMS45OTk5OFYxM0MwLjk5OTk3NiAxMy41NTIzIDEuNDQ3NjkgMTQgMS45OTk5OCAxNEgxM0MxMy41NTIzIDE0IDE0IDEzLjU1MjMgMTQgMTNWMS45OTk5OEMxNCAxLjQ0NzY5IDEzLjU1MjMgMC45OTk5NzYgMTMgMC45OTk5NzZIMS45OTk5OFpNMS45OTk5OCAxLjk5OTk4TDEzIDEuOTk5OThWMTNIMS45OTk5OFYxLjk5OTk4Wk00LjQ5OTk2IDMuOTk5OTZDNC4yMjM4MiAzLjk5OTk2IDMuOTk5OTYgNC4yMjM4MiAzLjk5OTk2IDQuNDk5OTZWMTAuNUMzLjk5OTk2IDEwLjc3NjEgNC4yMjM4MiAxMSA0LjQ5OTk2IDExSDEwLjVDMTAuNzc2MSAxMSAxMSAxMC43NzYxIDExIDEwLjVWNC40OTk5NkMxMSA0LjIyMzgyIDEwLjc3NjEgMy45OTk5NiAxMC41IDMuOTk5OTZINC40OTk5NlpNNC45OTk5NiA5Ljk5OTk2VjQuOTk5OTZIOS45OTk5NlY5Ljk5OTk2SDQuOTk5OTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx6PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDVIMTNDMTMuNTUyMyA1IDE0IDUuNDQ3NzIgMTQgNlY5QzE0IDkuNTUyMjggMTMuNTUyMyAxMCAxMyAxMEgyQzEuNDQ3NzIgMTAgMSA5LjU1MjI4IDEgOVY2QzEgNS40NDc3MiAxLjQ0NzcyIDUgMiA1Wk0wIDZDMCA0Ljg5NTQzIDAuODk1NDMxIDQgMiA0SDEzQzE0LjEwNDYgNCAxNSA0Ljg5NTQzIDE1IDZWOUMxNSAxMC4xMDQ2IDE0LjEwNDYgMTEgMTMgMTFIMkMwLjg5NTQzIDExIDAgMTAuMTA0NiAwIDlWNlpNNC41IDYuNzVDNC4wODU3OSA2Ljc1IDMuNzUgNy4wODU3OSAzLjc1IDcuNUMzLjc1IDcuOTE0MjEgNC4wODU3OSA4LjI1IDQuNSA4LjI1QzQuOTE0MjEgOC4yNSA1LjI1IDcuOTE0MjEgNS4yNSA3LjVDNS4yNSA3LjA4NTc5IDQuOTE0MjEgNi43NSA0LjUgNi43NVpNNi43NSA3LjVDNi43NSA3LjA4NTc5IDcuMDg1NzkgNi43NSA3LjUgNi43NUM3LjkxNDIxIDYuNzUgOC4yNSA3LjA4NTc5IDguMjUgNy41QzguMjUgNy45MTQyMSA3LjkxNDIxIDguMjUgNy41IDguMjVDNy4wODU3OSA4LjI1IDYuNzUgNy45MTQyMSA2Ljc1IDcuNVpNMTAuNSA2Ljc1QzEwLjA4NTggNi43NSA5Ljc1IDcuMDg1NzkgOS43NSA3LjVDOS43NSA3LjkxNDIxIDEwLjA4NTggOC4yNSAxMC41IDguMjVDMTAuOTE0MiA4LjI1IDExLjI1IDcuOTE0MjEgMTEuMjUgNy41QzExLjI1IDcuMDg1NzkgMTAuOTE0MiA2Ljc1IDEwLjUgNi43NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNSAxQzQuNzc2MTQgMSA1IDEuMjIzODYgNSAxLjVWMkgxMFYxLjVDMTAgMS4yMjM4NiAxMC4yMjM5IDEgMTAuNSAxQzEwLjc3NjEgMSAxMSAxLjIyMzg2IDExIDEuNVYySDEyLjVDMTMuMzI4NCAyIDE0IDIuNjcxNTcgMTQgMy41VjEyLjVDMTQgMTMuMzI4NCAxMy4zMjg0IDE0IDEyLjUgMTRIMi41QzEuNjcxNTcgMTQgMSAxMy4zMjg0IDEgMTIuNVYzLjVDMSAyLjY3MTU3IDEuNjcxNTcgMiAyLjUgMkg0VjEuNUM0IDEuMjIzODYgNC4yMjM4NiAxIDQuNSAxWk0xMCAzVjMuNUMxMCAzLjc3NjE0IDEwLjIyMzkgNCAxMC41IDRDMTAuNzc2MSA0IDExIDMuNzc2MTQgMTEgMy41VjNIMTIuNUMxMi43NzYxIDMgMTMgMy4yMjM4NiAxMyAzLjVWNUgyVjMuNUMyIDMuMjIzODYgMi4yMjM4NiAzIDIuNSAzSDRWMy41QzQgMy43NzYxNCA0LjIyMzg2IDQgNC41IDRDNC43NzYxNCA0IDUgMy43NzYxNCA1IDMuNVYzSDEwWk0yIDZWMTIuNUMyIDEyLjc3NjEgMi4yMjM4NiAxMyAyLjUgMTNIMTIuNUMxMi43NzYxIDEzIDEzIDEyLjc3NjEgMTMgMTIuNVY2SDJaTTcgNy41QzcgNy4yMjM4NiA3LjIyMzg2IDcgNy41IDdDNy43NzYxNCA3IDggNy4yMjM4NiA4IDcuNUM4IDcuNzc2MTQgNy43NzYxNCA4IDcuNSA4QzcuMjIzODYgOCA3IDcuNzc2MTQgNyA3LjVaTTkuNSA3QzkuMjIzODYgNyA5IDcuMjIzODYgOSA3LjVDOSA3Ljc3NjE0IDkuMjIzODYgOCA5LjUgOEM5Ljc3NjE0IDggMTAgNy43NzYxNCAxMCA3LjVDMTAgNy4yMjM4NiA5Ljc3NjE0IDcgOS41IDdaTTExIDcuNUMxMSA3LjIyMzg2IDExLjIyMzkgNyAxMS41IDdDMTEuNzc2MSA3IDEyIDcuMjIzODYgMTIgNy41QzEyIDcuNzc2MTQgMTEuNzc2MSA4IDExLjUgOEMxMS4yMjM5IDggMTEgNy43NzYxNCAxMSA3LjVaTTExLjUgOUMxMS4yMjM5IDkgMTEgOS4yMjM4NiAxMSA5LjVDMTEgOS43NzYxNCAxMS4yMjM5IDEwIDExLjUgMTBDMTEuNzc2MSAxMCAxMiA5Ljc3NjE0IDEyIDkuNUMxMiA5LjIyMzg2IDExLjc3NjEgOSAxMS41IDlaTTkgOS41QzkgOS4yMjM4NiA5LjIyMzg2IDkgOS41IDlDOS43NzYxNCA5IDEwIDkuMjIzODYgMTAgOS41QzEwIDkuNzc2MTQgOS43NzYxNCAxMCA5LjUgMTBDOS4yMjM4NiAxMCA5IDkuNzc2MTQgOSA5LjVaTTcuNSA5QzcuMjIzODYgOSA3IDkuMjIzODYgNyA5LjVDNyA5Ljc3NjE0IDcuMjIzODYgMTAgNy41IDEwQzcuNzc2MTQgMTAgOCA5Ljc3NjE0IDggOS41QzggOS4yMjM4NiA3Ljc3NjE0IDkgNy41IDlaTTUgOS41QzUgOS4yMjM4NiA1LjIyMzg2IDkgNS41IDlDNS43NzYxNCA5IDYgOS4yMjM4NiA2IDkuNUM2IDkuNzc2MTQgNS43NzYxNCAxMCA1LjUgMTBDNS4yMjM4NiAxMCA1IDkuNzc2MTQgNSA5LjVaTTMuNSA5QzMuMjIzODYgOSAzIDkuMjIzODYgMyA5LjVDMyA5Ljc3NjE0IDMuMjIzODYgMTAgMy41IDEwQzMuNzc2MTQgMTAgNCA5Ljc3NjE0IDQgOS41QzQgOS4yMjM4NiAzLjc3NjE0IDkgMy41IDlaTTMgMTEuNUMzIDExLjIyMzkgMy4yMjM4NiAxMSAzLjUgMTFDMy43NzYxNCAxMSA0IDExLjIyMzkgNCAxMS41QzQgMTEuNzc2MSAzLjc3NjE0IDEyIDMuNSAxMkMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVaTTUuNSAxMUM1LjIyMzg2IDExIDUgMTEuMjIzOSA1IDExLjVDNSAxMS43NzYxIDUuMjIzODYgMTIgNS41IDEyQzUuNzc2MTQgMTIgNiAxMS43NzYxIDYgMTEuNUM2IDExLjIyMzkgNS43NzYxNCAxMSA1LjUgMTFaTTcgMTEuNUM3IDExLjIyMzkgNy4yMjM4NiAxMSA3LjUgMTFDNy43NzYxNCAxMSA4IDExLjIyMzkgOCAxMS41QzggMTEuNzc2MSA3Ljc3NjE0IDEyIDcuNSAxMkM3LjIyMzg2IDEyIDcgMTEuNzc2MSA3IDExLjVaTTkuNSAxMUM5LjIyMzg2IDExIDkgMTEuMjIzOSA5IDExLjVDOSAxMS43NzYxIDkuMjIzODYgMTIgOS41IDEyQzkuNzc2MTQgMTIgMTAgMTEuNzc2MSAxMCAxMS41QzEwIDExLjIyMzkgOS43NzYxNCAxMSA5LjUgMTFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxHPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDNDMS40NDc3MiAzIDEgMy40NDc3MiAxIDRWMTFDMSAxMS41NTIzIDEuNDQ3NzIgMTIgMiAxMkgxM0MxMy41NTIzIDEyIDE0IDExLjU1MjMgMTQgMTFWNEMxNCAzLjQ0NzcyIDEzLjU1MjMgMyAxMyAzSDJaTTAgNEMwIDIuODk1NDMgMC44OTU0MzEgMiAyIDJIMTNDMTQuMTA0NiAyIDE1IDIuODk1NDMgMTUgNFYxMUMxNSAxMi4xMDQ2IDE0LjEwNDYgMTMgMTMgMTNIMkMwLjg5NTQzMSAxMyAwIDEyLjEwNDYgMCAxMVY0Wk0yIDQuMjVDMiA0LjExMTkzIDIuMTExOTMgNCAyLjI1IDRINC43NUM0Ljg4ODA3IDQgNSA0LjExMTkzIDUgNC4yNVY1Ljc1NDU0QzUgNS44OTI2MSA0Ljg4ODA3IDYuMDA0NTQgNC43NSA2LjAwNDU0SDIuMjVDMi4xMTE5MyA2LjAwNDU0IDIgNS44OTI2MSAyIDUuNzU0NTRWNC4yNVpNMTIuMTAxIDcuNTg0MjFDMTIuMTAxIDkuMDIwNzMgMTAuOTM2NSAxMC4xODUzIDkuNDk5OTggMTAuMTg1M0M4LjA2MzQ2IDEwLjE4NTMgNi44OTg5MyA5LjAyMDczIDYuODk4OTMgNy41ODQyMUM2Ljg5ODkzIDYuMTQ3NjkgOC4wNjM0NiA0Ljk4MzE1IDkuNDk5OTggNC45ODMxNUMxMC45MzY1IDQuOTgzMTUgMTIuMTAxIDYuMTQ3NjkgMTIuMTAxIDcuNTg0MjFaTTEzLjEwMSA3LjU4NDIxQzEzLjEwMSA5LjU3MzAyIDExLjQ4ODggMTEuMTg1MyA5LjQ5OTk4IDExLjE4NTNDNy41MTExNyAxMS4xODUzIDUuODk4OTMgOS41NzMwMiA1Ljg5ODkzIDcuNTg0MjFDNS44OTg5MyA1LjU5NTQgNy41MTExNyAzLjk4MzE1IDkuNDk5OTggMy45ODMxNUMxMS40ODg4IDMuOTgzMTUgMTMuMTAxIDUuNTk1NCAxMy4xMDEgNy41ODQyMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgMy41QzIgMy4yMjM4NiAyLjIyMzg2IDMgMi41IDNIMTIuNUMxMi43NzYxIDMgMTMgMy4yMjM4NiAxMyAzLjVWOS41QzEzIDkuNzc2MTQgMTIuNzc2MSAxMCAxMi41IDEwSDIuNUMyLjIyMzg2IDEwIDIgOS43NzYxNCAyIDkuNVYzLjVaTTIgMTAuOTE0NkMxLjQxNzQgMTAuNzA4NyAxIDEwLjE1MzEgMSA5LjVWMy41QzEgMi42NzE1NyAxLjY3MTU3IDIgMi41IDJIMTIuNUMxMy4zMjg0IDIgMTQgMi42NzE1NyAxNCAzLjVWOS41QzE0IDEwLjE1MzEgMTMuNTgyNiAxMC43MDg3IDEzIDEwLjkxNDZWMTEuNUMxMyAxMi4zMjg0IDEyLjMyODQgMTMgMTEuNSAxM0gzLjVDMi42NzE1NyAxMyAyIDEyLjMyODQgMiAxMS41VjEwLjkxNDZaTTEyIDExVjExLjVDMTIgMTEuNzc2MSAxMS43NzYxIDEyIDExLjUgMTJIMy41QzMuMjIzODYgMTIgMyAxMS43NzYxIDMgMTEuNVYxMUgxMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuNSAzQzIuMjIzODYgMyAyIDMuMjIzODYgMiAzLjVWOS41QzIgOS43NzYxNCAyLjIyMzg2IDEwIDIuNSAxMEgxMi41QzEyLjc3NjEgMTAgMTMgOS43NzYxNCAxMyA5LjVWMy41QzEzIDMuMjIzODYgMTIuNzc2MSAzIDEyLjUgM0gyLjVaTTEgOS41QzEgMTAuMTUzMSAxLjQxNzQgMTAuNzA4NyAyIDEwLjkxNDZWMTEuNUMyIDEyLjMyODQgMi42NzE1NyAxMyAzLjUgMTNIMTEuNUMxMi4zMjg0IDEzIDEzIDEyLjMyODQgMTMgMTEuNVYxMC45MTQ2QzEzLjU4MjYgMTAuNzA4NyAxNCAxMC4xNTMxIDE0IDkuNVYzLjVDMTQgMi42NzE1NyAxMy4zMjg0IDIgMTIuNSAySDIuNUMxLjY3MTU3IDIgMSAyLjY3MTU3IDEgMy41VjkuNVpNMTIgMTEuNVYxMUgzVjExLjVDMyAxMS43NzYxIDMuMjIzODYgMTIgMy41IDEySDExLjVDMTEuNzc2MSAxMiAxMiAxMS43NzYxIDEyIDExLjVaTTUuNSA2QzUuMjIzODYgNiA1IDYuMjIzODYgNSA2LjVDNSA2Ljc3NjE0IDUuMjIzODYgNyA1LjUgN0g5LjVDOS43NzYxNCA3IDEwIDYuNzc2MTQgMTAgNi41QzEwIDYuMjIzODYgOS43NzYxNCA2IDkuNSA2SDUuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEs9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgMy41QzIgMy4yMjM4NiAyLjIyMzg2IDMgMi41IDNIMTIuNUMxMi43NzYxIDMgMTMgMy4yMjM4NiAxMyAzLjVWOS41QzEzIDkuNzc2MTQgMTIuNzc2MSAxMCAxMi41IDEwSDIuNUMyLjIyMzg2IDEwIDIgOS43NzYxNCAyIDkuNVYzLjVaTTIgMTAuOTE0NkMxLjQxNzQgMTAuNzA4NyAxIDEwLjE1MzEgMSA5LjVWMy41QzEgMi42NzE1NyAxLjY3MTU3IDIgMi41IDJIMTIuNUMxMy4zMjg0IDIgMTQgMi42NzE1NyAxNCAzLjVWOS41QzE0IDEwLjE1MzEgMTMuNTgyNiAxMC43MDg3IDEzIDEwLjkxNDZWMTEuNUMxMyAxMi4zMjg0IDEyLjMyODQgMTMgMTEuNSAxM0gzLjVDMi42NzE1NyAxMyAyIDEyLjMyODQgMiAxMS41VjEwLjkxNDZaTTEyIDExVjExLjVDMTIgMTEuNzc2MSAxMS43NzYxIDEyIDExLjUgMTJIMy41QzMuMjIzODYgMTIgMyAxMS43NzYxIDMgMTEuNVYxMUgxMlpNNSA2LjVDNSA2LjIyMzg2IDUuMjIzODYgNiA1LjUgNkg3VjQuNUM3IDQuMjIzODYgNy4yMjM4NiA0IDcuNSA0QzcuNzc2MTQgNCA4IDQuMjIzODYgOCA0LjVWNkg5LjVDOS43NzYxNCA2IDEwIDYuMjIzODYgMTAgNi41QzEwIDYuNzc2MTQgOS43NzYxNCA3IDkuNSA3SDhWOC41QzggOC43NzYxNCA3Ljc3NjE0IDkgNy41IDlDNy4yMjM4NiA5IDcgOC43NzYxNCA3IDguNVY3SDUuNUM1LjIyMzg2IDcgNSA2Ljc3NjE0IDUgNi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC4xODE3OSA2LjE4MTgxQzQuMzU3NTMgNi4wMDYwOCA0LjY0MjQ1IDYuMDA2MDggNC44MTgxOSA2LjE4MTgxTDcuNDk5OTkgOC44NjM2MkwxMC4xODE4IDYuMTgxODFDMTAuMzU3NSA2LjAwNjA4IDEwLjY0MjQgNi4wMDYwOCAxMC44MTgyIDYuMTgxODFDMTAuOTkzOSA2LjM1NzU1IDEwLjk5MzkgNi42NDI0NyAxMC44MTgyIDYuODE4MjFMNy44MTgxOSA5LjgxODIxQzcuNzMzNzkgOS45MDI2IDcuNjE5MzQgOS45NTAwMSA3LjQ5OTk5IDkuOTUwMDFDNy4zODA2NCA5Ljk1MDAxIDcuMjY2MTggOS45MDI2IDcuMTgxNzkgOS44MTgyMUw0LjE4MTc5IDYuODE4MjFDNC4wMDYwNSA2LjY0MjQ3IDQuMDA2MDUgNi4zNTc1NSA0LjE4MTc5IDYuMTgxODFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxRPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjgxODA5IDQuMTgxNzlDOC45OTM4MyA0LjM1NzUzIDguOTkzODMgNC42NDI0NSA4LjgxODA5IDQuODE4MTlMNi4xMzYyOSA3LjQ5OTk5TDguODE4MDkgMTAuMTgxOEM4Ljk5MzgzIDEwLjM1NzUgOC45OTM4MyAxMC42NDI0IDguODE4MDkgMTAuODE4MkM4LjY0MjM2IDEwLjk5MzkgOC4zNTc0MyAxMC45OTM5IDguMTgxNyAxMC44MTgyTDUuMTgxNyA3LjgxODE5QzUuMDk3MzEgNy43MzM3OSA1LjA0OTkgNy42MTkzMyA1LjA0OTkgNy40OTk5OUM1LjA0OTkgNy4zODA2NCA1LjA5NzMxIDcuMjY2MTggNS4xODE3IDcuMTgxNzlMOC4xODE3IDQuMTgxNzlDOC4zNTc0MyA0LjAwNjA1IDguNjQyMzYgNC4wMDYwNSA4LjgxODA5IDQuMTgxNzlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxKPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02LjE4MTk0IDQuMTgxODVDNi4zNTc2NyA0LjAwNjExIDYuNjQyNiA0LjAwNjExIDYuODE4MzMgNC4xODE4NUw5LjgxODMzIDcuMTgxODVDOS45MDI3MiA3LjI2NjI0IDkuOTUwMTMgNy4zODA3IDkuOTUwMTMgNy41MDAwNUM5Ljk1MDEzIDcuNjE5NCA5LjkwMjcyIDcuNzMzODYgOS44MTgzMyA3LjgxODI1TDYuODE4MzMgMTAuODE4MkM2LjY0MjYgMTAuOTk0IDYuMzU3NjcgMTAuOTk0IDYuMTgxOTQgMTAuODE4MkM2LjAwNjIgMTAuNjQyNSA2LjAwNjIgMTAuMzU3NiA2LjE4MTk0IDEwLjE4MTlMOC44NjM3NCA3LjUwMDA1TDYuMTgxOTQgNC44MTgyNUM2LjAwNjIgNC42NDI1MSA2LjAwNjIgNC4zNTc1OSA2LjE4MTk0IDQuMTgxODVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxlZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC45MzE3OSA1LjQzMTc5QzQuNzU2MDUgNS42MDc1MyA0Ljc1NjA1IDUuODkyNDUgNC45MzE3OSA2LjA2ODE5QzUuMTA3NTMgNi4yNDM5MiA1LjM5MjQ1IDYuMjQzOTIgNS41NjgxOSA2LjA2ODE5TDcuNDk5OTkgNC4xMzYzOEw5LjQzMTc5IDYuMDY4MTlDOS42MDc1MyA2LjI0MzkyIDkuODkyNDUgNi4yNDM5MiAxMC4wNjgyIDYuMDY4MTlDMTAuMjQzOSA1Ljg5MjQ1IDEwLjI0MzkgNS42MDc1MyAxMC4wNjgyIDUuNDMxNzlMNy44MTgxOSAzLjE4MTc5QzcuNzMzNzkgMy4wOTc0IDcuNjE5MzMgMy4wNDk5OSA3LjQ5OTk5IDMuMDQ5OTlDNy4zODA2NCAzLjA0OTk5IDcuMjY2MTggMy4wOTc0IDcuMTgxNzkgMy4xODE3OUw0LjkzMTc5IDUuNDMxNzlaTTEwLjA2ODIgOS41NjgxOUMxMC4yNDM5IDkuMzkyNDUgMTAuMjQzOSA5LjEwNzUzIDEwLjA2ODIgOC45MzE3OUM5Ljg5MjQ1IDguNzU2MDYgOS42MDc1MyA4Ljc1NjA2IDkuNDMxNzkgOC45MzE3OUw3LjQ5OTk5IDEwLjg2MzZMNS41NjgxOSA4LjkzMTc5QzUuMzkyNDUgOC43NTYwNiA1LjEwNzUzIDguNzU2MDYgNC45MzE3OSA4LjkzMTc5QzQuNzU2MDUgOS4xMDc1MyA0Ljc1NjA1IDkuMzkyNDUgNC45MzE3OSA5LjU2ODE5TDcuMTgxNzkgMTEuODE4MkM3LjM1NzUzIDExLjk5MzkgNy42NDI0NSAxMS45OTM5IDcuODE4MTkgMTEuODE4MkwxMC4wNjgyIDkuNTY4MTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx0ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC4xODE3OSA4LjgxODE5QzQuMDA2MDUgOC42NDI0NSA0LjAwNjA1IDguMzU3NTMgNC4xODE3OSA4LjE4MTc5TDcuMTgxNzkgNS4xODE3OUM3LjI2NjE4IDUuMDk3NCA3LjM4MDY0IDUuMDQ5OTkgNy40OTk5OSA1LjA0OTk5QzcuNjE5MzMgNS4wNDk5OSA3LjczMzc5IDUuMDk3NCA3LjgxODE5IDUuMTgxNzlMMTAuODE4MiA4LjE4MTc5QzEwLjk5MzkgOC4zNTc1MyAxMC45OTM5IDguNjQyNDUgMTAuODE4MiA4LjgxODE5QzEwLjY0MjQgOC45OTM5MiAxMC4zNTc1IDguOTkzOTIgMTAuMTgxOCA4LjgxODE5TDcuNDk5OTkgNi4xMzYzOEw0LjgxODE5IDguODE4MTlDNC42NDI0NSA4Ljk5MzkyIDQuMzU3NTMgOC45OTM5MiA0LjE4MTc5IDguODE4MTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxuZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTIuNSAzTDIuNDk5OTkgMy4wMDAwMkMxLjY3MTU3IDMuMDAwMDIgMC45OTk5OTkgMy42NzE1OSAwLjk5OTk5OSA0LjUwMDAyVjkuNTAwMDJDMC45OTk5OTkgMTAuMzI4NCAxLjY3MTU3IDExIDIuNSAxMUg3LjUwMDAyQzcuNjMyNjMgMTEgNy43NTk4MSAxMS4wNTI3IDcuODUzNTggMTEuMTQ2NUw5Ljk5OTk5IDEzLjI5MjlWMTEuNUM5Ljk5OTk5IDExLjIyMzkgMTAuMjIzOSAxMSAxMC41IDExSDEyLjVDMTMuMzI4NCAxMSAxNCAxMC4zMjg0IDE0IDkuNTAwMDJWNC41QzE0IDMuNjcxNTcgMTMuMzI4NCAzIDEyLjUgM1pNMi40OTk5OSAyLjAwMDAyTDEyLjUgMkMxMy44ODA3IDIgMTUgMy4xMTkyOCAxNSA0LjVWOS41MDAwMkMxNSAxMC44ODA3IDEzLjg4MDcgMTIgMTIuNSAxMkgxMVYxNC41QzExIDE0LjcwMjIgMTAuODc4MiAxNC44ODQ1IDEwLjY5MTMgMTQuOTYxOUMxMC41MDQ1IDE1LjAzOTMgMTAuMjg5NCAxNC45OTY1IDEwLjE0NjQgMTQuODUzNUw3LjI5MjkyIDEySDIuNUMxLjExOTI5IDEyIDAgMTAuODgwNyAwIDkuNTAwMDJWNC41MDAwMkMwIDMuMTE5MzEgMS4xMTkyOCAyLjAwMDAyIDIuNDk5OTkgMi4wMDAwMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHJlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS40NjY5IDMuNzI2ODRDMTEuNzU1OCAzLjkxNTc0IDExLjgzNjkgNC4zMDMwOCAxMS42NDggNC41OTE5OEw3LjM5Nzk5IDExLjA5MkM3LjI5NzgzIDExLjI0NTIgNy4xMzU1NiAxMS4zNDY3IDYuOTU0MDIgMTEuMzY5OUM2Ljc3MjQ3IDExLjM5MzEgNi41ODk4OSAxMS4zMzU1IDYuNDU0NDYgMTEuMjEyNEwzLjcwNDQ2IDguNzEyNDFDMy40NDkwNSA4LjQ4MDIyIDMuNDMwMjMgOC4wODQ5NCAzLjY2MjQyIDcuODI5NTNDMy44OTQ2MSA3LjU3NDEyIDQuMjg5ODkgNy41NTUyOSA0LjU0NTMgNy43ODc0OUw2Ljc1MjkyIDkuNzk0NDFMMTAuNjAxOCAzLjkwNzkyQzEwLjc5MDcgMy42MTkwMiAxMS4xNzggMy41Mzc5NSAxMS40NjY5IDMuNzI2ODRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxvZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3NzA0NUMzLjg0MjIyIDAuODc3MDQ1IDAuODc3MDc1IDMuODQyMTkgMC44NzcwNzUgNy40OTk4OEMwLjg3NzA3NSAxMS4xNTc1IDMuODQyMjIgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMTEuMTU3NiAxNC4xMjI3IDE0LjEyMjcgMTEuMTU3NSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAzLjg0MjE5IDExLjE1NzYgMC44NzcwNDUgNy40OTk5MSAwLjg3NzA0NVpNMS44MjcwOCA3LjQ5OTg4QzEuODI3MDggNC4zNjY4NiA0LjM2Njg5IDEuODI3MDQgNy40OTk5MSAxLjgyNzA0QzEwLjYzMjkgMS44MjcwNCAxMy4xNzI3IDQuMzY2ODYgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgMTAuNjMyOSAxMC42MzI5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzQuMzY2ODkgMTMuMTcyNyAxLjgyNzA4IDEwLjYzMjkgMS44MjcwOCA3LjQ5OTg4Wk0xMC4xNTg5IDUuNTM3NzRDMTAuMzE3OCA1LjMxMTkxIDEwLjI2MzYgNS4wMDAwMSAxMC4wMzc4IDQuODQxMDlDOS44MTE5NCA0LjY4MjE3IDkuNTAwMDQgNC43MzY0MiA5LjM0MTEyIDQuOTYyMjVMNi41MTk3NyA4Ljk3MTU0TDUuMzU2ODEgNy43ODcwNkM1LjE2MzM0IDcuNTkwMDIgNC44NDY3NyA3LjU4NzExIDQuNjQ5NzMgNy43ODA1OEM0LjQ1MjY4IDcuOTc0MDQgNC40NDk3OCA4LjI5MDYxIDQuNjQzMjUgOC40ODc2NUw2LjIyNjU4IDEwLjEwMDNDNi4zMzA1NCAxMC4yMDYyIDYuNDc2MTcgMTAuMjYwNCA2LjYyNDA3IDEwLjI0ODNDNi43NzE5NyAxMC4yMzYzIDYuOTA2ODYgMTAuMTU5MSA2Ljk5MjI2IDEwLjAzNzdMMTAuMTU4OSA1LjUzNzc0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgM0gxMlYxMkgzTDMgM1pNMiAzQzIgMi40NDc3MSAyLjQ0NzcyIDIgMyAySDEyQzEyLjU1MjMgMiAxMyAyLjQ0NzcyIDEzIDNWMTJDMTMgMTIuNTUyMyAxMi41NTIzIDEzIDEyIDEzSDNDMi40NDc3MSAxMyAyIDEyLjU1MjMgMiAxMlYzWk0xMC4zNDk4IDUuNTExMDVDMTAuNTA2IDUuMjgzMzcgMTAuNDQ4MSA0Ljk3MjEyIDEwLjIyMDQgNC44MTU4N0M5Ljk5Mjc1IDQuNjU5NjEgOS42ODE1IDQuNzE3NTEgOS41MjUyNSA0Ljk0NTE5TDYuNjQwNDggOS4xNDg1N0w1LjE5NzMzIDcuNDA4ODlDNS4wMjEwMiA3LjE5NjM1IDQuNzA1OCA3LjE2Njk5IDQuNDkzMjcgNy4zNDMyOUM0LjI4MDczIDcuNTE5NiA0LjI1MTM3IDcuODM0ODIgNC40Mjc2NyA4LjA0NzM1TDYuMjkzNCAxMC4yOTY0QzYuMzkzNDggMTAuNDE3MSA2LjU0NDM3IDEwLjQ4MzggNi43MDA5NyAxMC40NzY3QzYuODU3NTcgMTAuNDY5NSA3LjAwMTc3IDEwLjM4OTQgNy4wOTA0NyAxMC4yNjAxTDEwLjM0OTggNS41MTEwNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGllPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjEzNTIzIDYuMTU4MDNDMy4zMjQxIDUuOTU2NTcgMy42NDA1MiA1Ljk0NjM3IDMuODQxOTcgNi4xMzUyM0w3LjUgOS41NjQ2NEwxMS4xNTggNi4xMzUyM0MxMS4zNTk1IDUuOTQ2MzcgMTEuNjc1OSA1Ljk1NjU3IDExLjg2NDggNi4xNTgwM0MxMi4wNTM2IDYuMzU5NDkgMTIuMDQzNCA2LjY3NTkxIDExLjg0MiA2Ljg2NDc3TDcuODQxOTcgMTAuNjE0OEM3LjY0OTY0IDEwLjc5NTEgNy4zNTAzNiAxMC43OTUxIDcuMTU4MDMgMTAuNjE0OEwzLjE1ODAzIDYuODY0NzdDMi45NTY1NyA2LjY3NTkxIDIuOTQ2MzcgNi4zNTk0OSAzLjEzNTIzIDYuMTU4MDNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxsZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC44NDE4MiAzLjEzNTE0QzkuMDQzMjcgMy4zMjQwMSA5LjA1MzQ4IDMuNjQwNDIgOC44NjQ2MiAzLjg0MTg4TDUuNDM1MjEgNy40OTk5MUw4Ljg2NDYyIDExLjE1NzlDOS4wNTM0OCAxMS4zNTk0IDkuMDQzMjcgMTEuNjc1OCA4Ljg0MTgyIDExLjg2NDdDOC42NDAzNiAxMi4wNTM1IDguMzIzOTQgMTIuMDQzMyA4LjEzNTA4IDExLjg0MTlMNC4zODUwOCA3Ljg0MTg4QzQuMjA0NzcgNy42NDk1NSA0LjIwNDc3IDcuMzUwMjcgNC4zODUwOCA3LjE1Nzk0TDguMTM1MDggMy4xNTc5NEM4LjMyMzk0IDIuOTU2NDggOC42NDAzNiAyLjk0NjI4IDguODQxODIgMy4xMzUxNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGNlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02LjE1ODQgMy4xMzUwOEM2LjM1OTg1IDIuOTQ2MjEgNi42NzYyNyAyLjk1NjQyIDYuODY1MTQgMy4xNTc4OEwxMC42MTUxIDcuMTU3ODhDMTAuNzk1NCA3LjM1MDIgMTAuNzk1NCA3LjY0OTQ5IDEwLjYxNTEgNy44NDE4Mkw2Ljg2NTE0IDExLjg0MThDNi42NzYyNyAxMi4wNDMzIDYuMzU5ODUgMTIuMDUzNSA2LjE1ODQgMTEuODY0NkM1Ljk1Njk0IDExLjY3NTcgNS45NDY3MyAxMS4zNTkzIDYuMTM1NiAxMS4xNTc5TDkuNTY1IDcuNDk5ODVMNi4xMzU2IDMuODQxODJDNS45NDY3MyAzLjY0MDM2IDUuOTU2OTQgMy4zMjM5NCA2LjE1ODQgMy4xMzUwOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHNlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjEzNTIzIDguODQxOTdDMy4zMjQxIDkuMDQzNDMgMy42NDA1MiA5LjA1MzYzIDMuODQxOTcgOC44NjQ3N0w3LjUgNS40MzUzNkwxMS4xNTggOC44NjQ3N0MxMS4zNTk1IDkuMDUzNjMgMTEuNjc1OSA5LjA0MzQzIDExLjg2NDggOC44NDE5N0MxMi4wNTM2IDguNjQwNTEgMTIuMDQzNCA4LjMyNDA5IDExLjg0MiA4LjEzNTIzTDcuODQxOTcgNC4zODUyM0M3LjY0OTY0IDQuMjA0OTIgNy4zNTAzNiA0LjIwNDkyIDcuMTU4MDMgNC4zODUyM0wzLjE1ODAzIDguMTM1MjNDMi45NTY1NyA4LjMyNDA5IDIuOTQ2MzcgOC42NDA1MSAzLjEzNTIzIDguODQxOTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx1ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwNzUgNy40OTk5MUMwLjg3NzA3NSAzLjg0MjIyIDMuODQyMjIgMC44NzcwNzUgNy40OTk5MSAwLjg3NzA3NUMxMS4xNTc2IDAuODc3MDc1IDE0LjEyMjcgMy44NDIyMiAxNC4xMjI3IDcuNDk5OTFDMTQuMTIyNyAxMS4xNTc2IDExLjE1NzYgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMy44NDIyMiAxNC4xMjI3IDAuODc3MDc1IDExLjE1NzYgMC44NzcwNzUgNy40OTk5MVpNNy40OTk5MSAxLjgyNzA4QzQuMzY2ODkgMS44MjcwOCAxLjgyNzA4IDQuMzY2ODkgMS44MjcwOCA3LjQ5OTkxQzEuODI3MDggMTAuNjMyOSA0LjM2Njg5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzEwLjYzMjkgMTMuMTcyNyAxMy4xNzI3IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTkxQzEzLjE3MjcgNC4zNjY4OSAxMC42MzI5IDEuODI3MDggNy40OTk5MSAxLjgyNzA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzcwNzVDMy44NDIyMiAwLjg3NzA3NSAwLjg3NzA3NSAzLjg0MjIyIDAuODc3MDc1IDcuNDk5OTFDMC44NzcwNzUgMTEuMTU3NiAzLjg0MjIyIDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzExLjE1NzYgMTQuMTIyNyAxNC4xMjI3IDExLjE1NzYgMTQuMTIyNyA3LjQ5OTkxQzE0LjEyMjcgMy44NDIyMiAxMS4xNTc2IDAuODc3MDc1IDcuNDk5OTEgMC44NzcwNzVaTTMuODU3NjggMy4xNTA1N0M0Ljg0MzExIDIuMzI0NDggNi4xMTM0MiAxLjgyNzA4IDcuNDk5OTEgMS44MjcwOEMxMC42MzI5IDEuODI3MDggMTMuMTcyNyA0LjM2Njg5IDEzLjE3MjcgNy40OTk5MUMxMy4xNzI3IDguODg2MzggMTIuNjc1MyAxMC4xNTY3IDExLjg0OTIgMTEuMTQyMUwzLjg1NzY4IDMuMTUwNTdaTTMuMTUwNTcgMy44NTc2OEMyLjMyNDQ4IDQuODQzMTEgMS44MjcwOCA2LjExMzQyIDEuODI3MDggNy40OTk5MUMxLjgyNzA4IDEwLjYzMjkgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0M4Ljg4NjM4IDEzLjE3MjcgMTAuMTU2NyAxMi42NzUzIDExLjE0MjEgMTEuODQ5MkwzLjE1MDU3IDMuODU3NjhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxmZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSAyVjFIMTBWMkg1Wk00Ljc1IDBDNC4zMzU3OSAwIDQgMC4zMzU3ODYgNCAwLjc1VjFIMy41QzIuNjcxNTcgMSAyIDEuNjcxNTcgMiAyLjVWMTIuNUMyIDEzLjMyODQgMi42NzE1NyAxNCAzLjUgMTRIMTEuNUMxMi4zMjg0IDE0IDEzIDEzLjMyODQgMTMgMTIuNVYyLjVDMTMgMS42NzE1NyAxMi4zMjg0IDEgMTEuNSAxSDExVjAuNzVDMTEgMC4zMzU3ODYgMTAuNjY0MiAwIDEwLjI1IDBINC43NVpNMTEgMlYyLjI1QzExIDIuNjY0MjEgMTAuNjY0MiAzIDEwLjI1IDNINC43NUM0LjMzNTc5IDMgNCAyLjY2NDIxIDQgMi4yNVYySDMuNUMzLjIyMzg2IDIgMyAyLjIyMzg2IDMgMi41VjEyLjVDMyAxMi43NzYxIDMuMjIzODYgMTMgMy41IDEzSDExLjVDMTEuNzc2MSAxMyAxMiAxMi43NzYxIDEyIDEyLjVWMi41QzEyIDIuMjIzODYgMTEuNzc2MSAyIDExLjUgMkgxMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHBlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDJWMUgxMFYySDVaTTQuNzUgMEM0LjMzNTc5IDAgNCAwLjMzNTc4NiA0IDAuNzVWMUgzLjVDMi42NzE1NyAxIDIgMS42NzE1NyAyIDIuNVYxMi41QzIgMTMuMzI4NCAyLjY3MTU3IDE0IDMuNSAxNEg3VjEzSDMuNUMzLjIyMzg2IDEzIDMgMTIuNzc2MSAzIDEyLjVWMi41QzMgMi4yMjM4NiAzLjIyMzg2IDIgMy41IDJINFYyLjI1QzQgMi42NjQyMSA0LjMzNTc5IDMgNC43NSAzSDEwLjI1QzEwLjY2NDIgMyAxMSAyLjY2NDIxIDExIDIuMjVWMkgxMS41QzExLjc3NjEgMiAxMiAyLjIyMzg2IDEyIDIuNVY3SDEzVjIuNUMxMyAxLjY3MTU3IDEyLjMyODQgMSAxMS41IDFIMTFWMC43NUMxMSAwLjMzNTc4NiAxMC42NjQyIDAgMTAuMjUgMEg0Ljc1Wk05IDguNUM5IDguNzc2MTQgOC43NzYxNCA5IDguNSA5QzguMjIzODYgOSA4IDguNzc2MTQgOCA4LjVDOCA4LjIyMzg2IDguMjIzODYgOCA4LjUgOEM4Ljc3NjE0IDggOSA4LjIyMzg2IDkgOC41Wk0xMC41IDlDMTAuNzc2MSA5IDExIDguNzc2MTQgMTEgOC41QzExIDguMjIzODYgMTAuNzc2MSA4IDEwLjUgOEMxMC4yMjM5IDggMTAgOC4yMjM4NiAxMCA4LjVDMTAgOC43NzYxNCAxMC4yMjM5IDkgMTAuNSA5Wk0xMyA4LjVDMTMgOC43NzYxNCAxMi43NzYxIDkgMTIuNSA5QzEyLjIyMzkgOSAxMiA4Ljc3NjE0IDEyIDguNUMxMiA4LjIyMzg2IDEyLjIyMzkgOCAxMi41IDhDMTIuNzc2MSA4IDEzIDguMjIzODYgMTMgOC41Wk0xNC41IDlDMTQuNzc2MSA5IDE1IDguNzc2MTQgMTUgOC41QzE1IDguMjIzODYgMTQuNzc2MSA4IDE0LjUgOEMxNC4yMjM5IDggMTQgOC4yMjM4NiAxNCA4LjVDMTQgOC43NzYxNCAxNC4yMjM5IDkgMTQuNSA5Wk0xNSAxMC41QzE1IDEwLjc3NjEgMTQuNzc2MSAxMSAxNC41IDExQzE0LjIyMzkgMTEgMTQgMTAuNzc2MSAxNCAxMC41QzE0IDEwLjIyMzkgMTQuMjIzOSAxMCAxNC41IDEwQzE0Ljc3NjEgMTAgMTUgMTAuMjIzOSAxNSAxMC41Wk0xNC41IDEzQzE0Ljc3NjEgMTMgMTUgMTIuNzc2MSAxNSAxMi41QzE1IDEyLjIyMzkgMTQuNzc2MSAxMiAxNC41IDEyQzE0LjIyMzkgMTIgMTQgMTIuMjIzOSAxNCAxMi41QzE0IDEyLjc3NjEgMTQuMjIzOSAxMyAxNC41IDEzWk0xNC41IDE1QzE0Ljc3NjEgMTUgMTUgMTQuNzc2MSAxNSAxNC41QzE1IDE0LjIyMzkgMTQuNzc2MSAxNCAxNC41IDE0QzE0LjIyMzkgMTQgMTQgMTQuMjIzOSAxNCAxNC41QzE0IDE0Ljc3NjEgMTQuMjIzOSAxNSAxNC41IDE1Wk04LjUgMTFDOC43NzYxNCAxMSA5IDEwLjc3NjEgOSAxMC41QzkgMTAuMjIzOSA4Ljc3NjE0IDEwIDguNSAxMEM4LjIyMzg2IDEwIDggMTAuMjIzOSA4IDEwLjVDOCAxMC43NzYxIDguMjIzODYgMTEgOC41IDExWk05IDEyLjVDOSAxMi43NzYxIDguNzc2MTQgMTMgOC41IDEzQzguMjIzODYgMTMgOCAxMi43NzYxIDggMTIuNUM4IDEyLjIyMzkgOC4yMjM4NiAxMiA4LjUgMTJDOC43NzYxNCAxMiA5IDEyLjIyMzkgOSAxMi41Wk04LjUgMTVDOC43NzYxNCAxNSA5IDE0Ljc3NjEgOSAxNC41QzkgMTQuMjIzOSA4Ljc3NjE0IDE0IDguNSAxNEM4LjIyMzg2IDE0IDggMTQuMjIzOSA4IDE0LjVDOCAxNC43NzYxIDguMjIzODYgMTUgOC41IDE1Wk0xMSAxNC41QzExIDE0Ljc3NjEgMTAuNzc2MSAxNSAxMC41IDE1QzEwLjIyMzkgMTUgMTAgMTQuNzc2MSAxMCAxNC41QzEwIDE0LjIyMzkgMTAuMjIzOSAxNCAxMC41IDE0QzEwLjc3NjEgMTQgMTEgMTQuMjIzOSAxMSAxNC41Wk0xMi41IDE1QzEyLjc3NjEgMTUgMTMgMTQuNzc2MSAxMyAxNC41QzEzIDE0LjIyMzkgMTIuNzc2MSAxNCAxMi41IDE0QzEyLjIyMzkgMTQgMTIgMTQuMjIzOSAxMiAxNC41QzEyIDE0Ljc3NjEgMTIuMjIzOSAxNSAxMi41IDE1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNTAwMDkgMC44NzcwMTRDMy44NDI0MSAwLjg3NzAxNCAwLjg3NzI1OCAzLjg0MjE2IDAuODc3MjU4IDcuNDk5ODRDMC44NzcyNTggMTEuMTU3NSAzLjg0MjQgMTQuMTIyNyA3LjUwMDA5IDE0LjEyMjdDMTEuMTU3OCAxNC4xMjI3IDE0LjEyMjkgMTEuMTU3NSAxNC4xMjI5IDcuNDk5ODRDMTQuMTIyOSAzLjg0MjE2IDExLjE1NzcgMC44NzcwMTQgNy41MDAwOSAwLjg3NzAxNFpNMS44MjcyNiA3LjQ5OTg0QzEuODI3MjYgNC4zNjY4MyA0LjM2NzA4IDEuODI3MDEgNy41MDAwOSAxLjgyNzAxQzEwLjYzMzEgMS44MjcwMSAxMy4xNzI5IDQuMzY2ODMgMTMuMTcyOSA3LjQ5OTg0QzEzLjE3MjkgMTAuNjMyOCAxMC42MzMxIDEzLjE3MjcgNy41MDAwOSAxMy4xNzI3QzQuMzY3MDggMTMuMTcyNyAxLjgyNzI2IDEwLjYzMjggMS44MjcyNiA3LjQ5OTg0Wk04IDQuNTAwMDFDOCA0LjIyMzg3IDcuNzc2MTQgNC4wMDAwMSA3LjUgNC4wMDAwMUM3LjIyMzg2IDQuMDAwMDEgNyA0LjIyMzg3IDcgNC41MDAwMVY3LjUwMDAxQzcgNy42MzI2MiA3LjA1MjY4IDcuNzU5OCA3LjE0NjQ1IDcuODUzNTdMOS4xNDY0NSA5Ljg1MzU3QzkuMzQxNzEgMTAuMDQ4OCA5LjY1ODI5IDEwLjA0ODggOS44NTM1NSA5Ljg1MzU3QzEwLjA0ODggOS42NTgzMSAxMC4wNDg4IDkuMzQxNzIgOS44NTM1NSA5LjE0NjQ2TDggNy4yOTI5MVY0LjUwMDAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuOTY0MjQgMi42ODU3MUMxMC4wNjY4IDIuNDI5MzEgOS45NDIwOSAyLjEzODMzIDkuNjg1NyAyLjAzNTc3QzkuNDI5MyAxLjkzMzIyIDkuMTM4MzIgMi4wNTc5MiA5LjAzNTc2IDIuMzE0MzJMNS4wMzU3NiAxMi4zMTQzQzQuOTMzMiAxMi41NzA3IDUuMDU3OTEgMTIuODYxNyA1LjMxNDMgMTIuOTY0MkM1LjU3MDcgMTMuMDY2OCA1Ljg2MTY4IDEyLjk0MjEgNS45NjQyNCAxMi42ODU3TDkuOTY0MjQgMi42ODU3MVpNMy44NTM1NSA1LjE0NjQ2QzQuMDQ4ODIgNS4zNDE3MiA0LjA0ODgyIDUuNjU4MyAzLjg1MzU1IDUuODUzNTZMMi4yMDcxMSA3LjUwMDAxTDMuODUzNTUgOS4xNDY0NkM0LjA0ODgyIDkuMzQxNzIgNC4wNDg4MiA5LjY1ODMgMy44NTM1NSA5Ljg1MzU2QzMuNjU4MjkgMTAuMDQ4OCAzLjM0MTcxIDEwLjA0ODggMy4xNDY0NSA5Ljg1MzU2TDEuMTQ2NDUgNy44NTM1NkMwLjk1MTE4NCA3LjY1ODMgMC45NTExODQgNy4zNDE3MiAxLjE0NjQ1IDcuMTQ2NDZMMy4xNDY0NSA1LjE0NjQ2QzMuMzQxNzEgNC45NTEyIDMuNjU4MjkgNC45NTEyIDMuODUzNTUgNS4xNDY0NlpNMTEuMTQ2NCA1LjE0NjQ2QzExLjM0MTcgNC45NTEyIDExLjY1ODMgNC45NTEyIDExLjg1MzYgNS4xNDY0NkwxMy44NTM2IDcuMTQ2NDZDMTQuMDQ4OCA3LjM0MTcyIDE0LjA0ODggNy42NTgzIDEzLjg1MzYgNy44NTM1NkwxMS44NTM2IDkuODUzNTZDMTEuNjU4MyAxMC4wNDg4IDExLjM0MTcgMTAuMDQ4OCAxMS4xNDY0IDkuODUzNTZDMTAuOTUxMiA5LjY1ODMgMTAuOTUxMiA5LjM0MTcyIDExLjE0NjQgOS4xNDY0NkwxMi43OTI5IDcuNTAwMDFMMTEuMTQ2NCA1Ljg1MzU2QzEwLjk1MTIgNS42NTgzIDEwLjk1MTIgNS4zNDE3MiAxMS4xNDY0IDUuMTQ2NDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx2ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy43MTE0NCAwLjc5NjkwMkM3LjU3NzQxIDAuNzM0MzU3IDcuNDIyNTcgMC43MzQzNTcgNy4yODg1NSAwLjc5NjkwMkwxLjI4ODU1IDMuNTk2OUMxLjExMjUxIDMuNjc5MDUgMC45OTk5OTMgMy44NTU3MyAwLjk5OTk5MyA0LjA0OTk5VjEwLjk1QzAuOTk5OTkzIDExLjE0NDMgMS4xMTI1MSAxMS4zMjA5IDEuMjg4NTUgMTEuNDAzMUw3LjI4ODU1IDE0LjIwMzFDNy40MjI1NyAxNC4yNjU2IDcuNTc3NDEgMTQuMjY1NiA3LjcxMTQ0IDE0LjIwMzFMMTMuNzExNCAxMS40MDMxQzEzLjg4NzUgMTEuMzIwOSAxNCAxMS4xNDQzIDE0IDEwLjk1VjQuMDQ5OTlDMTQgMy44NTU3MyAxMy44ODc1IDMuNjc5MDUgMTMuNzExNCAzLjU5NjlMNy43MTE0NCAwLjc5NjkwMlpNNy40OTk5OSAzLjE1Njc0TDUuOTgwMzkgMi41MTA5MUw3LjQ5OTk5IDEuODAxNzZMOS4wMTk1OSAyLjUxMDkxTDcuNDk5OTkgMy4xNTY3NFpNNy42OTU1NiA0LjE2MDE4TDEwLjIzODIgMy4wNzk1OEwxMi4yNzE5IDQuMDI4NjVMNy40OTk5OSA2LjA1NjcxTDIuNzI4MDggNC4wMjg2NUw0Ljc2MTgxIDMuMDc5NThMNy4zMDQ0MiA0LjE2MDE4QzcuNDI5MzkgNC4yMTMzIDcuNTcwNTkgNC4yMTMzIDcuNjk1NTYgNC4xNjAxOFpNNy45OTk5OSA2LjkzMDc4TDEzIDQuODA1NzhWNy45Mjk2NkwxMS4wODIxIDguODExOUMxMC43MjczIDguOTc1MDkgMTAuNSA5LjMyOTg4IDEwLjUgOS43MjAzOVYxMS43OTgyTDcuOTk5OTkgMTIuOTY0OVY2LjkzMDc4Wk0xMS41IDExLjMzMTZMMTMgMTAuNjMxNlY5LjAzMDM5TDExLjUgOS43MjAzOVYxMS4zMzE2Wk02Ljk5OTk5IDYuOTMwNzhWMTIuOTY0OUw0LjUwMjMxIDExLjc5OTNWOS43MjAzNkM0LjUwMjMxIDkuMzI5ODUgNC4yNzQ5OSA4Ljk3NTA2IDMuOTIwMjIgOC44MTE4N0wxLjk5OTk5IDcuOTI4NTZWNC44MDU3OEw2Ljk5OTk5IDYuOTMwNzhaTTEuOTk5OTkgMTAuNjMxNkwzLjUwMjMxIDExLjMzMjZMMy41MDIzMSA5LjcyMDM2TDEuOTk5OTkgOS4wMjkyOVYxMC42MzE2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguMDAwMTIgMS41QzguMDAwMTIgMS4yMjM4NiA3Ljc3NjI2IDEgNy41MDAxMiAxQzcuMjIzOTggMSA3LjAwMDEyIDEuMjIzODYgNy4wMDAxMiAxLjVWMTMuNUM3LjAwMDEyIDEzLjc3NjEgNy4yMjM5OCAxNCA3LjUwMDEyIDE0QzcuNzc2MjYgMTQgOC4wMDAxMiAxMy43NzYxIDguMDAwMTIgMTMuNVYxLjVaTTMuMzE4MTIgNS44MThDMy40OTM4NiA1LjY0MjI3IDMuNDkzODYgNS4zNTczNCAzLjMxODEyIDUuMTgxNjFDMy4xNDIzOSA1LjAwNTg3IDIuODU3NDYgNS4wMDU4NyAyLjY4MTczIDUuMTgxNjFMMC42ODE3MjkgNy4xODE2MUMwLjUwNTk5MyA3LjM1NzM0IDAuNTA1OTkzIDcuNjQyMjcgMC42ODE3MjkgNy44MThMMi42ODE3MyA5LjgxOEMyLjg1NzQ2IDkuOTkzNzQgMy4xNDIzOSA5Ljk5Mzc0IDMuMzE4MTIgOS44MThDMy40OTM4NiA5LjY0MjI3IDMuNDkzODYgOS4zNTczNCAzLjMxODEyIDkuMTgxNjFMMi4wODYzMiA3Ljk0OThINS41MDAxN0M1Ljc0ODcgNy45NDk4IDUuOTUwMTcgNy43NDgzMyA1Ljk1MDE3IDcuNDk5OEM1Ljk1MDE3IDcuMjUxMjggNS43NDg3IDcuMDQ5OCA1LjUwMDE3IDcuMDQ5OEgyLjA4NjMyTDMuMzE4MTIgNS44MThaTTEyLjMxODEgNS4xODE2MUMxMi4xNDI0IDUuMDA1ODcgMTEuODU3NSA1LjAwNTg3IDExLjY4MTcgNS4xODE2MUMxMS41MDYgNS4zNTczNCAxMS41MDYgNS42NDIyNyAxMS42ODE3IDUuODE4TDEyLjkxMzUgNy4wNDk4SDkuNTAwMTdDOS4yNTE2NCA3LjA0OTggOS4wNTAxNyA3LjI1MTI4IDkuMDUwMTcgNy40OTk4QzkuMDUwMTcgNy43NDgzMyA5LjI1MTY0IDcuOTQ5OCA5LjUwMDE3IDcuOTQ5OEgxMi45MTM1TDExLjY4MTcgOS4xODE2MUMxMS41MDYgOS4zNTczNCAxMS41MDYgOS42NDIyNyAxMS42ODE3IDkuODE4QzExLjg1NzUgOS45OTM3NCAxMi4xNDI0IDkuOTkzNzQgMTIuMzE4MSA5LjgxOEwxNC4zMTgxIDcuODE4QzE0LjQ5MzkgNy42NDIyNyAxNC40OTM5IDcuMzU3MzQgMTQuMzE4MSA3LjE4MTYxTDEyLjMxODEgNS4xODE2MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG1lPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjE0OTk4IDE0VjFIMC44NDk5NzZWMTRIMi4xNDk5OFpNNi4xNDk5OCAxNFYxSDQuODQ5OThWMTRINi4xNDk5OFpNMTAuMTUgMVYxNEg4Ljg0OTk4VjFIMTAuMTVaTTE0LjE1IDE0VjFIMTIuODVWMTRIMTQuMTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx3ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOS45NDk2OSA3LjQ5OTg5QzkuOTQ5NjkgOC44NTI4OCA4Ljg1Mjg4IDkuOTQ5NjkgNy40OTk4OSA5Ljk0OTY5QzYuMTQ2OTEgOS45NDk2OSA1LjA1MDEgOC44NTI4OCA1LjA1MDEgNy40OTk4OUM1LjA1MDEgNi4xNDY5MSA2LjE0NjkxIDUuMDUwMSA3LjQ5OTg5IDUuMDUwMUM4Ljg1Mjg4IDUuMDUwMSA5Ljk0OTY5IDYuMTQ2OTEgOS45NDk2OSA3LjQ5OTg5Wk0xMC44NjMyIDhDMTAuNjIxMyA5LjY0MDU1IDkuMjA3NjQgMTAuODk5NyA3LjQ5OTg5IDEwLjg5OTdDNS43OTIxNCAxMC44OTk3IDQuMzc4NDcgOS42NDA1NSA0LjEzNjYyIDhIMC41QzAuMjIzODU4IDggMCA3Ljc3NjE0IDAgNy41QzAgNy4yMjM4NiAwLjIyMzg1OCA3IDAuNSA3SDQuMTM2NTlDNC4zNzgzNSA1LjM1OTM1IDUuNzkyMDYgNC4xMDAxIDcuNDk5ODkgNC4xMDAxQzkuMjA3NzIgNC4xMDAxIDEwLjYyMTQgNS4zNTkzNSAxMC44NjMyIDdIMTQuNUMxNC43NzYxIDcgMTUgNy4yMjM4NiAxNSA3LjVDMTUgNy43NzYxNCAxNC43NzYxIDggMTQuNSA4SDEwLjg2MzJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx5ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC42NzEyOSAzLjE0NjM0QzQuNDc2MDMgMy4zNDE2MSA0LjQ3NjAzIDMuNjU4MTkgNC42NzEyOSAzLjg1MzQ1TDcuMTQ2MTYgNi4zMjgzM0M3LjM0MTQyIDYuNTIzNTkgNy42NTgwMSA2LjUyMzU5IDcuODUzMjcgNi4zMjgzM0wxMC4zMjgxIDMuODUzNDVDMTAuNTIzNCAzLjY1ODE5IDEwLjUyMzQgMy4zNDE2MSAxMC4zMjgxIDMuMTQ2MzRMNy44NTMyNyAwLjY3MTQ3MUM3LjY1ODAxIDAuNDc2MjA5IDcuMzQxNDIgMC40NzYyMDkgNy4xNDYxNiAwLjY3MTQ3MUw0LjY3MTI5IDMuMTQ2MzRaTTcuNDk5NzEgNS4yNjc2Nkw1LjczMTk1IDMuNDk5OUw3LjQ5OTcxIDEuNzMyMTNMOS4yNjc0OCAzLjQ5OTlMNy40OTk3MSA1LjI2NzY2Wk04LjY3MTI5IDcuMTQ2MzRDOC40NzYwMyA3LjM0MTYxIDguNDc2MDMgNy42NTgxOSA4LjY3MTI5IDcuODUzNDVMMTEuMTQ2MiAxMC4zMjgzQzExLjM0MTQgMTAuNTIzNiAxMS42NTggMTAuNTIzNiAxMS44NTMzIDEwLjMyODNMMTQuMzI4MSA3Ljg1MzQ1QzE0LjUyMzQgNy42NTgxOSAxNC41MjM0IDcuMzQxNjEgMTQuMzI4MSA3LjE0NjM0TDExLjg1MzMgNC42NzE0N0MxMS42NTggNC40NzYyMSAxMS4zNDE0IDQuNDc2MjEgMTEuMTQ2MiA0LjY3MTQ3TDguNjcxMjkgNy4xNDYzNFpNMTEuNDk5NyA5LjI2NzY2TDkuNzMxOTUgNy40OTk5TDExLjQ5OTcgNS43MzIxM0wxMy4yNjc1IDcuNDk5OUwxMS40OTk3IDkuMjY3NjZaTTQuNjcxMjkgMTEuODUzNUM0LjQ3NjAzIDExLjY1ODIgNC40NzYwMyAxMS4zNDE2IDQuNjcxMjkgMTEuMTQ2M0w3LjE0NjE2IDguNjcxNDdDNy4zNDE0MiA4LjQ3NjIxIDcuNjU4MDEgOC40NzYyMSA3Ljg1MzI3IDguNjcxNDdMMTAuMzI4MSAxMS4xNDYzQzEwLjUyMzQgMTEuMzQxNiAxMC41MjM0IDExLjY1ODIgMTAuMzI4MSAxMS44NTM1TDcuODUzMjcgMTQuMzI4M0M3LjY1ODAxIDE0LjUyMzYgNy4zNDE0MiAxNC41MjM2IDcuMTQ2MTYgMTQuMzI4M0w0LjY3MTI5IDExLjg1MzVaTTUuNzMxOTUgMTEuNDk5OUw3LjQ5OTcxIDEzLjI2NzdMOS4yNjc0OCAxMS40OTk5TDcuNDk5NzEgOS43MzIxM0w1LjczMTk1IDExLjQ5OTlaTTAuNjcxMjg4IDcuMTQ2NDlDMC40NzYwMjYgNy4zNDE3NSAwLjQ3NjAyNiA3LjY1ODM0IDAuNjcxMjg4IDcuODUzNkwzLjE0NjE2IDEwLjMyODVDMy4zNDE0MiAxMC41MjM3IDMuNjU4MDEgMTAuNTIzNyAzLjg1MzI3IDEwLjMyODVMNi4zMjgxNCA3Ljg1MzZDNi41MjM0IDcuNjU4MzQgNi41MjM0IDcuMzQxNzUgNi4zMjgxNCA3LjE0NjQ5TDMuODUzMjcgNC42NzE2MkMzLjY1ODAxIDQuNDc2MzYgMy4zNDE0MiA0LjQ3NjM2IDMuMTQ2MTYgNC42NzE2MkwwLjY3MTI4OCA3LjE0NjQ5Wk0zLjQ5OTcyIDkuMjY3ODFMMS43MzE5NSA3LjUwMDA1TDMuNDk5NzIgNS43MzIyOEw1LjI2NzQ4IDcuNTAwMDVMMy40OTk3MiA5LjI2NzgxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuODc5MzUgMUgzLjlIMTEuMUgxMS4xMjA3QzExLjUyMzEgMC45OTk5OTQgMTEuODU1MyAwLjk5OTk4OSAxMi4xMjU5IDEuMDIyMUMxMi40MDcgMS4wNDUwNiAxMi42NjUzIDEuMDk0MzQgMTIuOTA4IDEuMjE3OTlDMTMuMjg0MyAxLjQwOTczIDEzLjU5MDMgMS43MTU3IDEzLjc4MiAyLjA5MjAyQzEzLjkwNTcgMi4zMzQ2OSAxMy45NTQ5IDIuNTkzMDQgMTMuOTc3OSAyLjg3NDA5QzE0IDMuMTQ0NjggMTQgMy40NzY4NiAxNCAzLjg3OTM0VjMuOVYxMS4xVjExLjEyMDdDMTQgMTEuNTIzMSAxNCAxMS44NTUzIDEzLjk3NzkgMTIuMTI1OUMxMy45NTQ5IDEyLjQwNyAxMy45MDU3IDEyLjY2NTMgMTMuNzgyIDEyLjkwOEMxMy41OTAzIDEzLjI4NDMgMTMuMjg0MyAxMy41OTAzIDEyLjkwOCAxMy43ODJDMTIuNjY1MyAxMy45MDU3IDEyLjQwNyAxMy45NTQ5IDEyLjEyNTkgMTMuOTc3OUMxMS44NTUzIDE0IDExLjUyMzEgMTQgMTEuMTIwNyAxNEgxMS4xSDMuOUgzLjg3OTM0QzMuNDc2ODYgMTQgMy4xNDQ2OCAxNCAyLjg3NDA5IDEzLjk3NzlDMi41OTMwNCAxMy45NTQ5IDIuMzM0NjkgMTMuOTA1NyAyLjA5MjAyIDEzLjc4MkMxLjcxNTcgMTMuNTkwMyAxLjQwOTczIDEzLjI4NDMgMS4yMTc5OSAxMi45MDhDMS4wOTQzNCAxMi42NjUzIDEuMDQ1MDYgMTIuNDA3IDEuMDIyMSAxMi4xMjU5QzAuOTk5OTg5IDExLjg1NTMgMC45OTk5OTQgMTEuNTIzMSAxIDExLjEyMDdWMTEuMTIwN1YxMS4xVjMuOVYzLjg3OTM1VjMuODc5MzRDMC45OTk5OTQgMy40NzY4NiAwLjk5OTk4OSAzLjE0NDY4IDEuMDIyMSAyLjg3NDA5QzEuMDQ1MDYgMi41OTMwNCAxLjA5NDM0IDIuMzM0NjkgMS4yMTc5OSAyLjA5MjAyQzEuNDA5NzMgMS43MTU3IDEuNzE1NyAxLjQwOTczIDIuMDkyMDIgMS4yMTc5OUMyLjMzNDY5IDEuMDk0MzQgMi41OTMwNCAxLjA0NTA2IDIuODc0MDkgMS4wMjIxQzMuMTQ0NjkgMC45OTk5ODkgMy40NzY4NyAwLjk5OTk5NCAzLjg3OTM1IDFaTTIuOTU1NTIgMi4wMTg3OEMyLjczNjMxIDIuMDM2NjkgMi42MjQyMSAyLjA2OTE1IDIuNTQ2MDEgMi4xMDg5OUMyLjM1Nzg1IDIuMjA0ODcgMi4yMDQ4NyAyLjM1Nzg1IDIuMTA4OTkgMi41NDYwMUMyLjA2OTE1IDIuNjI0MjEgMi4wMzY2OSAyLjczNjMxIDIuMDE4NzggMi45NTU1MkMyLjAwMDM5IDMuMTgwNTYgMiAzLjQ3MTcxIDIgMy45VjdIN1YySDMuOUMzLjQ3MTcxIDIgMy4xODA1NiAyLjAwMDM5IDIuOTU1NTIgMi4wMTg3OFpNNyA4SDJWMTEuMUMyIDExLjUyODMgMi4wMDAzOSAxMS44MTk0IDIuMDE4NzggMTIuMDQ0NUMyLjAzNjY5IDEyLjI2MzcgMi4wNjkxNSAxMi4zNzU4IDIuMTA4OTkgMTIuNDU0QzIuMjA0ODcgMTIuNjQyMiAyLjM1Nzg1IDEyLjc5NTEgMi41NDYwMSAxMi44OTFDMi42MjQyMSAxMi45MzA5IDIuNzM2MzEgMTIuOTYzMyAyLjk1NTUyIDEyLjk4MTJDMy4xODA1NiAxMi45OTk2IDMuNDcxNzEgMTMgMy45IDEzSDdWOFpNOCA4SDEzVjExLjFDMTMgMTEuNTI4MyAxMi45OTk2IDExLjgxOTQgMTIuOTgxMiAxMi4wNDQ1QzEyLjk2MzMgMTIuMjYzNyAxMi45MzA5IDEyLjM3NTggMTIuODkxIDEyLjQ1NEMxMi43OTUxIDEyLjY0MjIgMTIuNjQyMiAxMi43OTUxIDEyLjQ1NCAxMi44OTFDMTIuMzc1OCAxMi45MzA5IDEyLjI2MzcgMTIuOTYzMyAxMi4wNDQ1IDEyLjk4MTJDMTEuODE5NCAxMi45OTk2IDExLjUyODMgMTMgMTEuMSAxM0g4VjhaTTEzIDdIOFYySDExLjFDMTEuNTI4MyAyIDExLjgxOTQgMi4wMDAzOSAxMi4wNDQ1IDIuMDE4NzhDMTIuMjYzNyAyLjAzNjY5IDEyLjM3NTggMi4wNjkxNSAxMi40NTQgMi4xMDg5OUMxMi42NDIyIDIuMjA0ODcgMTIuNzk1MSAyLjM1Nzg1IDEyLjg5MSAyLjU0NjAxQzEyLjkzMDkgMi42MjQyMSAxMi45NjMzIDIuNzM2MzEgMTIuOTgxMiAyLjk1NTUyQzEyLjk5OTYgMy4xODA1NiAxMyAzLjQ3MTcxIDEzIDMuOVY3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuODUzNjcgMS40ODk1NkM3LjY1ODQxIDEuMjk0MjkgNy4zNDE4MiAxLjI5NDI5IDcuMTQ2NTYgMS40ODk1NkwxLjQ4OTcxIDcuMTQ2NDFDMS4yOTQ0NSA3LjM0MTY3IDEuMjk0NDUgNy42NTgyNSAxLjQ4OTcxIDcuODUzNTJMNy4xNDY1NiAxMy41MTA0QzcuMzQxODIgMTMuNzA1NiA3LjY1ODQxIDEzLjcwNTYgNy44NTM2NyAxMy41MTA0TDEzLjUxMDUgNy44NTM1MkMxMy43MDU4IDcuNjU4MjUgMTMuNzA1OCA3LjM0MTY3IDEzLjUxMDUgNy4xNDY0MUw3Ljg1MzY3IDEuNDg5NTZaTTcuNSAyLjU1MDMzTDIuNTUwMzcgNy40OTk5Nkw3LjUgMTIuNDQ5NlYyLjU1MDMzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sT2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMTQ2NSAxLjQ4OTU5QzcuMzQxNzYgMS4yOTQzMiA3LjY1ODM1IDEuMjk0MzIgNy44NTM2MSAxLjQ4OTU5TDEzLjUxMDUgNy4xNDY0NEMxMy43MDU3IDcuMzQxNyAxMy43MDU3IDcuNjU4MjkgMTMuNTEwNSA3Ljg1MzU1TDcuODUzNjEgMTMuNTEwNEM3LjY1ODM1IDEzLjcwNTcgNy4zNDE3NiAxMy43MDU3IDcuMTQ2NSAxMy41MTA0TDEuNDg5NjUgNy44NTM1NUMxLjI5NDM5IDcuNjU4MjkgMS4yOTQzOSA3LjM0MTcgMS40ODk2NSA3LjE0NjQ0TDcuMTQ2NSAxLjQ4OTU5Wk03LjUwMDA1IDIuNTUwMjVMMi41NTAzMSA3LjQ5OTk5TDcuNTAwMDUgMTIuNDQ5N0wxMi40NDk4IDcuNDk5OTlMNy41MDAwNSAyLjU1MDI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuODUzNjEgMS40ODk1OUM3LjY1ODM1IDEuMjk0MzIgNy4zNDE3NiAxLjI5NDMyIDcuMTQ2NSAxLjQ4OTU5TDEuNDg5NjUgNy4xNDY0NEMxLjI5NDM5IDcuMzQxNyAxLjI5NDM5IDcuNjU4MjkgMS40ODk2NSA3Ljg1MzU1TDMuOTY0NSAxMC4zMjg0TDEuNjQ2NDQgMTIuNjQ2NEMxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMy4xNTgzIDEuNjQ2NDQgMTMuMzUzNkMxLjg0MTcxIDEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDIuMzUzNTUgMTMuMzUzNkw0LjY3MTYgMTEuMDM1NUw3LjE0NjUgMTMuNTEwNEM3LjM0MTc2IDEzLjcwNTcgNy42NTgzNSAxMy43MDU3IDcuODUzNjEgMTMuNTEwNEwxMy41MTA1IDcuODUzNTVDMTMuNzA1NyA3LjY1ODI5IDEzLjcwNTcgNy4zNDE3IDEzLjUxMDUgNy4xNDY0NEwxMS4wMzU2IDQuNjcxNTRMMTMuMzUzNSAyLjM1MzU1QzEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDEuODQxNzEgMTMuMzUzNSAxLjY0NjQ1QzEzLjE1ODMgMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTIuNjQ2NCAxLjY0NjQ1TDEwLjMyODUgMy45NjQ0M0w3Ljg1MzYxIDEuNDg5NTlaTTkuNjIxMzUgNC42NzE1NEw3LjUwMDA1IDIuNTUwMjVMMi41NTAzMSA3LjQ5OTk5TDQuNjcxNiA5LjYyMTI5TDkuNjIxMzUgNC42NzE1NFpNNS4zNzg3MSAxMC4zMjg0TDcuNTAwMDUgMTIuNDQ5N0wxMi40NDk4IDcuNDk5OTlMMTAuMzI4NSA1LjM3ODY1TDUuMzc4NzEgMTAuMzI4NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE1lPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi44MDM0IDcuMTQ2NDRDMTIuOTk4NiA2Ljk1MTE4IDEzLjMxNTIgNi45NTExOCAxMy41MTA1IDcuMTQ2NDRDMTMuNzA1NyA3LjM0MTcgMTMuNzA1NyA3LjY1ODI5IDEzLjUxMDUgNy44NTM1NUMxMy4zMTUyIDguMDQ4ODEgMTIuOTk4NiA4LjA0ODgxIDEyLjgwMzQgNy44NTM1NUMxMi42MDgxIDcuNjU4MjggMTIuNjA4MSA3LjM0MTcgMTIuODAzNCA3LjE0NjQ0Wk0xMi4wOTYyIDguNTYwNjVDMTIuMjkxNSA4Ljc1NTkyIDEyLjI5MTUgOS4wNzI1IDEyLjA5NjIgOS4yNjc3NkMxMS45MDEgOS40NjMwMiAxMS41ODQ0IDkuNDYzMDIgMTEuMzg5MSA5LjI2Nzc2QzExLjE5MzkgOS4wNzI1IDExLjE5MzkgOC43NTU5MiAxMS4zODkxIDguNTYwNjVDMTEuNTg0NCA4LjM2NTM5IDExLjkwMSA4LjM2NTM5IDEyLjA5NjIgOC41NjA2NVpNMTAuNjgyIDkuOTc0ODdDMTAuODc3MyAxMC4xNzAxIDEwLjg3NzMgMTAuNDg2NyAxMC42ODIgMTAuNjgyQzEwLjQ4NjggMTAuODc3MiAxMC4xNzAyIDEwLjg3NzIgOS45NzQ5MyAxMC42ODJDOS43Nzk2NyAxMC40ODY3IDkuNzc5NjcgMTAuMTcwMSA5Ljk3NDkzIDkuOTc0ODdDMTAuMTcwMiA5Ljc3OTYgMTAuNDg2OCA5Ljc3OTYgMTAuNjgyIDkuOTc0ODdaTTkuMjY3ODIgMTEuMzg5MUM5LjQ2MzA4IDExLjU4NDMgOS40NjMwOCAxMS45MDA5IDkuMjY3ODIgMTIuMDk2MkM5LjA3MjU2IDEyLjI5MTUgOC43NTU5OCAxMi4yOTE1IDguNTYwNzEgMTIuMDk2MkM4LjM2NTQ1IDExLjkwMDkgOC4zNjU0NSAxMS41ODQzIDguNTYwNzIgMTEuMzg5MUM4Ljc1NTk4IDExLjE5MzggOS4wNzI1NiAxMS4xOTM4IDkuMjY3ODIgMTEuMzg5MVpNNy4xNDY1IDEzLjUxMDRDNi45NTEyNCAxMy4zMTUxIDYuOTUxMjQgMTIuOTk4NiA3LjE0NjUgMTIuODAzM0M3LjE3MDkxIDEyLjc3ODkgNy4xOTcyMSAxMi43NTc1IDcuMjI0OTQgMTIuNzM5MkM3LjQxOTAxIDEyLjYxMTEgNy42ODI3NSAxMi42MzI0IDcuODUzNjEgMTIuODAzM0M4LjA0ODg3IDEyLjk5ODYgOC4wNDg4NyAxMy4zMTUxIDcuODUzNjEgMTMuNTEwNEM3LjY1ODM1IDEzLjcwNTcgNy4zNDE3NiAxMy43MDU3IDcuMTQ2NSAxMy41MTA0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi45MDM4NiA4LjU2MDY1QzIuNzA4NiA4Ljc1NTkyIDIuNzA4NiA5LjA3MjUgMi45MDM4NiA5LjI2Nzc2IDMuMDk5MTIgOS40NjMwMiAzLjQxNTcxIDkuNDYzMDIgMy42MTA5NyA5LjI2Nzc2IDMuODA2MjMgOS4wNzI1IDMuODA2MjMgOC43NTU5MiAzLjYxMDk3IDguNTYwNjUgMy40MTU3MSA4LjM2NTM5IDMuMDk5MTIgOC4zNjUzOSAyLjkwMzg2IDguNTYwNjV6TTQuMzE4MDcgOS45NzQ4N0M0LjEyMjgxIDEwLjE3MDEgNC4xMjI4MSAxMC40ODY3IDQuMzE4MDcgMTAuNjgyIDQuNTEzMzQgMTAuODc3MiA0LjgyOTkyIDEwLjg3NzIgNS4wMjUxOCAxMC42ODIgNS4yMjA0NCAxMC40ODY3IDUuMjIwNDQgMTAuMTcwMSA1LjAyNTE4IDkuOTc0ODcgNC44Mjk5MiA5Ljc3OTYgNC41MTMzNCA5Ljc3OTYgNC4zMTgwNyA5Ljk3NDg3ek01LjczMjI5IDExLjM4OTFDNS41MzcwMyAxMS41ODQzIDUuNTM3MDMgMTEuOTAwOSA1LjczMjI5IDEyLjA5NjIgNS45Mjc1NSAxMi4yOTE0IDYuMjQ0MTMgMTIuMjkxNSA2LjQzOTM5IDEyLjA5NjIgNi42MzQ2NiAxMS45MDA5IDYuNjM0NjYgMTEuNTg0MyA2LjQzOTM5IDExLjM4OTEgNi4yNDQxMyAxMS4xOTM4IDUuOTI3NTUgMTEuMTkzOCA1LjczMjI5IDExLjM4OTF6TTIuMTk2NzUgNy44NTM1NUMyLjM2NzYxIDcuNjgyNjkgMi4zODg5NyA3LjQxODk1IDIuMjYwODIgNy4yMjQ4OCAyLjA5MDQ2IDYuOTY2ODQgMS43MTA2MyA2LjkyNTQ2IDEuNDg5NjUgNy4xNDY0NCAxLjI5NDM5IDcuMzQxNyAxLjI5NDM5IDcuNjU4MjkgMS40ODk2NSA3Ljg1MzU1IDEuNjg0OTEgOC4wNDg4MSAyLjAwMTQ5IDguMDQ4ODEgMi4xOTY3NSA3Ljg1MzU1ek0zLjYxMDk3IDUuNzMyMjNDMy40MTU3MSA1LjUzNjk2IDMuMDk5MTIgNS41MzY5NiAyLjkwMzg2IDUuNzMyMjMgMi43MDg2IDUuOTI3NDkgMi43MDg2IDYuMjQ0MDcgMi45MDM4NiA2LjQzOTMzIDMuMDk5MTIgNi42MzQ2IDMuNDE1NzEgNi42MzQ2IDMuNjEwOTcgNi40MzkzMyAzLjgwNjIzIDYuMjQ0MDcgMy44MDYyMyA1LjkyNzQ5IDMuNjEwOTcgNS43MzIyM3pNNS4wMjUxOCA0LjMxODAxQzQuODI5OTIgNC4xMjI3NSA0LjUxMzM0IDQuMTIyNzUgNC4zMTgwNyA0LjMxODAxIDQuMTIyODEgNC41MTMyOCA0LjEyMjgxIDQuODI5ODYgNC4zMTgwNyA1LjAyNTEyIDQuNTEzMzQgNS4yMjAzOCA0LjgyOTkyIDUuMjIwMzggNS4wMjUxOCA1LjAyNTEyIDUuMjIwNDQgNC44Mjk4NiA1LjIyMDQ0IDQuNTEzMjggNS4wMjUxOCA0LjMxODAxek02LjQzOTM5IDIuOTAzOEM2LjI0NDEzIDIuNzA4NTQgNS45Mjc1NSAyLjcwODU0IDUuNzMyMjkgMi45MDM4IDUuNTM3MDMgMy4wOTkwNiA1LjUzNzAzIDMuNDE1NjQgNS43MzIyOSAzLjYxMDkxIDUuOTI3NTUgMy44MDYxNyA2LjI0NDEzIDMuODA2MTcgNi40MzkzOSAzLjYxMDkxIDYuNjM0NjYgMy40MTU2NCA2LjYzNDY2IDMuMDk5MDYgNi40MzkzOSAyLjkwMzh6TTcuODUzNjEgMS40ODk1OUM3LjY1ODM1IDEuMjk0MzIgNy4zNDE3NiAxLjI5NDMyIDcuMTQ2NSAxLjQ4OTU5IDYuOTUxMjQgMS42ODQ4NSA2Ljk1MTI0IDIuMDAxNDMgNy4xNDY1IDIuMTk2NjkgNy4zNDE3NiAyLjM5MTk2IDcuNjU4MzUgMi4zOTE5NiA3Ljg1MzYxIDIuMTk2NjkgOC4wNDg4NyAyLjAwMTQzIDguMDQ4ODcgMS42ODQ4NSA3Ljg1MzYxIDEuNDg5NTl6TTkuMjY3ODIgMi45MDM4QzkuMDcyNTYgMi43MDg1NCA4Ljc1NTk4IDIuNzA4NTQgOC41NjA3MSAyLjkwMzggOC4zNjU0NSAzLjA5OTA2IDguMzY1NDUgMy40MTU2NCA4LjU2MDcxIDMuNjEwOTEgOC43NTU5OCAzLjgwNjE3IDkuMDcyNTYgMy44MDYxNyA5LjI2NzgyIDMuNjEwOTEgOS40NjMwOCAzLjQxNTY0IDkuNDYzMDggMy4wOTkwNiA5LjI2NzgyIDIuOTAzOHpNMTAuNjgyIDQuMzE4MDFDMTAuNDg2OCA0LjEyMjc1IDEwLjE3MDIgNC4xMjI3NSA5Ljk3NDkzIDQuMzE4MDEgOS43Nzk2NyA0LjUxMzI4IDkuNzc5NjcgNC44Mjk4NiA5Ljk3NDkzIDUuMDI1MTIgMTAuMTcwMiA1LjIyMDM4IDEwLjQ4NjggNS4yMjAzOCAxMC42ODIgNS4wMjUxMiAxMC44NzczIDQuODI5ODYgMTAuODc3MyA0LjUxMzI4IDEwLjY4MiA0LjMxODAxek0xMi4wOTYyIDUuNzMyMjNDMTEuOTAxIDUuNTM2OTYgMTEuNTg0NCA1LjUzNjk2IDExLjM4OTEgNS43MzIyMyAxMS4xOTM5IDUuOTI3NDkgMTEuMTkzOSA2LjI0NDA3IDExLjM4OTEgNi40MzkzMyAxMS41ODQ0IDYuNjM0NiAxMS45MDEgNi42MzQ2IDEyLjA5NjIgNi40MzkzMyAxMi4yOTE1IDYuMjQ0MDcgMTIuMjkxNSA1LjkyNzQ5IDEyLjA5NjIgNS43MzIyM3pcIixmaWxsOm59KSl9LFNlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDEuNUMyIDEuNzc2MTQgMS43NzYxNCAyIDEuNSAyQzEuMjIzODYgMiAxIDEuNzc2MTQgMSAxLjVDMSAxLjIyMzg2IDEuMjIzODYgMSAxLjUgMUMxLjc3NjE0IDEgMiAxLjIyMzg2IDIgMS41Wk01IDEzSDEwVjJMNSAyTDUgMTNaTTQgMTNDNCAxMy41NTIzIDQuNDQ3NzIgMTQgNSAxNEgxMEMxMC41NTIzIDE0IDExIDEzLjU1MjMgMTEgMTNWMkMxMSAxLjQ0NzcyIDEwLjU1MjMgMSAxMCAxSDVDNC40NDc3MiAxIDQgMS40NDc3MSA0IDJWMTNaTTEzLjUgMkMxMy43NzYxIDIgMTQgMS43NzYxNCAxNCAxLjVDMTQgMS4yMjM4NiAxMy43NzYxIDEgMTMuNSAxQzEzLjIyMzkgMSAxMyAxLjIyMzg2IDEzIDEuNUMxMyAxLjc3NjE0IDEzLjIyMzkgMiAxMy41IDJaTTIgMy41QzIgMy43NzYxNCAxLjc3NjE0IDQgMS41IDRDMS4yMjM4NiA0IDEgMy43NzYxNCAxIDMuNUMxIDMuMjIzODYgMS4yMjM4NiAzIDEuNSAzQzEuNzc2MTQgMyAyIDMuMjIzODYgMiAzLjVaTTEzLjUgNEMxMy43NzYxIDQgMTQgMy43NzYxNCAxNCAzLjVDMTQgMy4yMjM4NiAxMy43NzYxIDMgMTMuNSAzQzEzLjIyMzkgMyAxMyAzLjIyMzg2IDEzIDMuNUMxMyAzLjc3NjE0IDEzLjIyMzkgNCAxMy41IDRaTTIgNS41QzIgNS43NzYxNCAxLjc3NjE0IDYgMS41IDZDMS4yMjM4NiA2IDEgNS43NzYxNCAxIDUuNUMxIDUuMjIzODYgMS4yMjM4NiA1IDEuNSA1QzEuNzc2MTQgNSAyIDUuMjIzODYgMiA1LjVaTTEzLjUgNkMxMy43NzYxIDYgMTQgNS43NzYxNCAxNCA1LjVDMTQgNS4yMjM4NiAxMy43NzYxIDUgMTMuNSA1QzEzLjIyMzkgNSAxMyA1LjIyMzg2IDEzIDUuNUMxMyA1Ljc3NjE0IDEzLjIyMzkgNiAxMy41IDZaTTIgNy41QzIgNy43NzYxNCAxLjc3NjE0IDggMS41IDhDMS4yMjM4NiA4IDEgNy43NzYxNCAxIDcuNUMxIDcuMjIzODYgMS4yMjM4NiA3IDEuNSA3QzEuNzc2MTQgNyAyIDcuMjIzODYgMiA3LjVaTTEzLjUgOEMxMy43NzYxIDggMTQgNy43NzYxNCAxNCA3LjVDMTQgNy4yMjM4NiAxMy43NzYxIDcgMTMuNSA3QzEzLjIyMzkgNyAxMyA3LjIyMzg2IDEzIDcuNUMxMyA3Ljc3NjE0IDEzLjIyMzkgOCAxMy41IDhaTTIgOS41QzIgOS43NzYxNCAxLjc3NjE0IDEwIDEuNSAxMEMxLjIyMzg2IDEwIDEgOS43NzYxNCAxIDkuNUMxIDkuMjIzODYgMS4yMjM4NiA5IDEuNSA5QzEuNzc2MTQgOSAyIDkuMjIzODYgMiA5LjVaTTEzLjUgMTBDMTMuNzc2MSAxMCAxNCA5Ljc3NjE0IDE0IDkuNUMxNCA5LjIyMzg2IDEzLjc3NjEgOSAxMy41IDlDMTMuMjIzOSA5IDEzIDkuMjIzODYgMTMgOS41QzEzIDkuNzc2MTQgMTMuMjIzOSAxMCAxMy41IDEwWk0yIDExLjVDMiAxMS43NzYxIDEuNzc2MTQgMTIgMS41IDEyQzEuMjIzODYgMTIgMSAxMS43NzYxIDEgMTEuNUMxIDExLjIyMzkgMS4yMjM4NiAxMSAxLjUgMTFDMS43NzYxNCAxMSAyIDExLjIyMzkgMiAxMS41Wk0xMy41IDEyQzEzLjc3NjEgMTIgMTQgMTEuNzc2MSAxNCAxMS41QzE0IDExLjIyMzkgMTMuNzc2MSAxMSAxMy41IDExQzEzLjIyMzkgMTEgMTMgMTEuMjIzOSAxMyAxMS41QzEzIDExLjc3NjEgMTMuMjIzOSAxMiAxMy41IDEyWk0yIDEzLjVDMiAxMy43NzYxIDEuNzc2MTQgMTQgMS41IDE0QzEuMjIzODYgMTQgMSAxMy43NzYxIDEgMTMuNUMxIDEzLjIyMzkgMS4yMjM4NiAxMyAxLjUgMTNDMS43NzYxNCAxMyAyIDEzLjIyMzkgMiAxMy41Wk0xMy41IDE0QzEzLjc3NjEgMTQgMTQgMTMuNzc2MSAxNCAxMy41QzE0IDEzLjIyMzkgMTMuNzc2MSAxMyAxMy41IDEzQzEzLjIyMzkgMTMgMTMgMTMuMjIzOSAxMyAxMy41QzEzIDEzLjc3NjEgMTMuMjIzOSAxNCAxMy41IDE0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sX2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjA2OTcgMS43Njc0NkMxMi40ODA3IDEuMjE5NDcgMTEuNDYwNSAwLjQ1NDMxMSAxMS4wNDk1IDEuMDAyM0MxMC42Mzg1IDEuNTUwMjggMTEuNjU4OCAyLjMxNTQ0IDEyLjA2OTcgMS43Njc0NlpNOC4zOTI2MyAxLjA3ODExQzcuMTU1ODUgMC45NTA2MDIgNS43ODIzIDEuMTYzNDggNC41ODQzMyAxLjcwOTM3QzMuMzg1NTIgMi4yNTU2MyAyLjMyNzM1IDMuMTUzMDkgMS43ODg0NCA0LjQxODMyQzEuMzc1NzQgNS4zODcyNCAxLjAxNzE1IDYuMjgxMTMgMS4wMDA4OCA3LjQ0MzU0QzAuOTg0NzI0IDguNTk4NDQgMS4zMDUyMiA5Ljk2ODk4IDIuMTMxNzQgMTEuOTI4QzIuNjExNDIgMTMuMDY0OSA0LjAzOTYzIDEzLjU0NDYgNS4xMzg5NSAxMy44MDc5QzYuNDA4MzYgMTQuMTExOSA3LjgwODU3IDE0LjE5MTQgOC42NjQ0IDE0LjA3NDJDOS4zNjUxNSAxMy45NzgyIDEwLjE0NDggMTMuODI4NCAxMC43OTg3IDEzLjI5N0MxMS44OTc3IDEyLjQwMzkgMTIuOTAwOSAxMS4zOTU1IDEzLjQ5OTQgMTAuMzM5M0MxNC4xMDQgOS4yNzIyMSAxNC4zMjU2IDguMDkyMDcgMTMuNzIxNiA2Ljk1MzI0QzEzLjU2MjggNi42NTM3MyAxMy4zMTYgNi41NzczNCAxMy4wNDEyIDYuNDkyM0MxMi45Mzc0IDYuNDYwMTYgMTIuODI5NSA2LjQyNjc4IDEyLjcyMDkgNi4zNzk2NkMxMS42MjExIDUuOTAyMzQgMTAuOTY0NiA1LjM0OTYzIDEwLjkxMzUgNS4wMjg3NkMxMC44NjU2IDQuNzI4MDggMTAuOTIyMSA0LjUxNDYzIDEwLjk4MTEgNC4yOTE4MUMxMS4wMTI5IDQuMTcxOTkgMTEuMDQ1MyA0LjA0OTQ3IDExLjA2MjYgMy45MDkyMkMxMS4wODM4IDMuNzM3MzcgMTEuMDgxNCAzLjMzMzE5IDEwLjY5OTYgMy4xMjc2MUMxMC40MDQ4IDIuOTY4ODggMTAuMjE2NCAyLjY1ODQzIDEwLjA0MDcgMi4zNjkwNEM5Ljk5NzQyIDIuMjk3NzUgOS45NTQ5MiAyLjIyNzczIDkuOTExOCAyLjE2MTU4QzkuNjI2MzQgMS43MjM2NyA5LjIwNzY5IDEuMTYyMTMgOC4zOTI2MyAxLjA3ODExWk00Ljk5ODk5IDIuNjE5MzVDMy45NjQ4MyAzLjA5MDU4IDMuMTI1NTQgMy44MzA5NyAyLjcwODQ2IDQuODEwMThDMi4yOTgwOCA1Ljc3MzY4IDIuMDE0MDYgNi41MDg3MyAyLjAwMDc5IDcuNDU3NTNDMS45ODc0MSA4LjQxMzg1IDIuMjUwNDMgOS42MzY4IDMuMDUzMSAxMS41MzkzQzMuMzkxODEgMTIuMzQyMSA0LjYyMTY3IDEyLjY1NTcgNS4zNzE4NiAxMi44MzU0QzYuNTQ5MyAxMy4xMTc0IDcuODIyIDEzLjE4MDIgOC41Mjg2OCAxMy4wODM0QzkuMjEyNzEgMTIuOTg5NyA5Ljc0NTY4IDEyLjg2NDIgMTAuMTY4MSAxMi41MjA5QzExLjIyOSAxMS42NTg3IDEyLjEyMSAxMC43NDM1IDEyLjYyOTMgOS44NDYzNUMxMi45MzQ5IDkuMzA3MDkgMTMuNTE0MSA3LjcwMjggMTIuNjI5MiA3LjM4NzNDMTAuNzUzOSA2LjcxODc1IDEwLjI2MiA2LjA2NjY5IDkuOTkwMTEgNS40MTI2OEM5LjgwOTE1IDQuOTc3NDQgOS44Mjg2OCA0LjUyMjgyIDkuOTU3NDEgNC4wNzg4NUw5Ljk1NzQxIDQuMDc4ODRDOS45NzY2MiA0LjAxMjYgOS45OTUzOCAzLjk0NzkxIDEwLjAzMzQgMy44ODg4MkM5LjgxODU3IDMuNzM2NzYgOS42NTE1IDMuNTUxOTUgOS41MTQ2NCAzLjM3MTVDOS40Mjg3NiAzLjI1ODI4IDkuMzQ2OSAzLjEyMDk5IDkuMjYxOTcgMi45Nzg1NkM5LjAxODY2IDIuNTcwNTIgOC43NTAxOCAyLjEyMDI3IDguMjkwMDggMi4wNzI4M0M3LjIyODg5IDEuOTYzNDMgNi4wMzM5OCAyLjE0NzcyIDQuOTk4OTkgMi42MTkzNVpNMTMuMjA4MSAzLjc3NDcxQzEzLjQ0MSAzLjIyNjcxIDEyLjQ1NDcgMi42MzYwNiAxMi4wODIyIDMuMTAxNjNDMTEuNTgxNyAzLjcyNzMyIDEyLjkwMjkgNC40OTI4MSAxMy4yMDgxIDMuNzc0NzFaTTE0LjM2NzIgMi4yNjAzMUMxNC45NjY4IDIuMjc0OTMgMTUuMTU1MSAxLjExNjAzIDE0LjU3MTggMC45NDkzNzFDMTMuODA3NiAwLjczMTAyNiAxMy41OTE4IDIuMjQxMzkgMTQuMzY3MiAyLjI2MDMxWk0xNC4yODU3IDUuMDkwOThDMTQuODY0NCA1LjEwMDA0IDE1LjA0NjIgNC4zODIyMiAxNC40ODMyIDQuMjc4OTlDMTMuNzQ1NSA0LjE0Mzc1IDEzLjUzNzMgNS4wNzkyNyAxNC4yODU3IDUuMDkwOThaTTYuOTA3NSA0LjI4NjcyQzYuNDY4OTggNC42Njc1NCA2LjA1MjIgNC4xNTE4NSA1Ljk3OTgzIDMuNzM2NUM1Ljg2ODQ4IDMuMDk3NDQgNi4zMzY5NiAyLjU2ODU2IDYuOTQ4MjMgMi45MTE1NkM3LjQzMzQ0IDMuMTgzODIgNy4yNjY3OCAzLjk3NDcxIDYuOTA3NSA0LjI4NjcyWk00Ljk0NDU1IDUuODgxODRDNS40MDg4NSA1LjQxNzU0IDQuNTk1NjcgNC41NzAxMyA0LjExNDI1IDUuMDUxNTRDMy44MzMzOCA1LjMzMjQyIDQuMDA5MzYgNS42NTM3NiA0LjIzNzQ0IDUuODgxODRDNC40MzI3MSA2LjA3NzEgNC43NDkyOSA2LjA3NzEgNC45NDQ1NSA1Ljg4MTg0Wk02Ljk3NzE2IDYuNzE5ODRDNy4zMTE4MSA3LjM4OTE0IDguNDg4MDQgNi43OTE1OSA3Ljk5NDEzIDYuMTQ3ODhDNy44NjUxOSA1Ljk3OTgzIDcuNjg2NTcgNS45NDk0IDcuNjIxNDUgNS45NDIwN0M3LjIxMjE3IDUuODk2MDEgNi43NjM0OSA2LjI5MjUgNi45NzcxNiA2LjcxOTg0Wk02Ljk4Nzk4IDguNzI0NjFDNy4xNDA2NiA5LjExODggNy41MTEyMiA5LjMxODcgNy45MTkxNSA5LjE2MzNDOC4yNzQzNCA5LjAyNzk5IDguMzMxODYgOC4zOTY4OSA4LjE3MTc1IDguMDc0MjdDOC4wMjMzMSA3Ljc3NTE0IDcuNjM5NTYgNy42Nzc5MyA3LjMzNzQ3IDcuNzk0MTdDNi45ODUxMiA3LjkyOTc2IDYuODU2NzIgOC4zODcwOCA2Ljk4NTc2IDguNzE4ODlMNi45ODc5OCA4LjcyNDYxWk0xMC4zODg1IDguODQwODFDMTAuNzU3NSA4LjY1NjYgMTEuNDYxNyA4LjgyNzcxIDExLjQ2MTcgOS4zMTE5OUMxMS40NjE3IDkuNzEyODYgMTAuOTU4NyAxMC4yMTY1IDEwLjU2MzQgMTAuMjgyNkMxMC4xODEzIDEwLjM0NjUgOS43MDUxNSA5Ljk3NTgxIDkuNzY2NDggOS41NzcxOEM5LjgxNDQ1IDkuMjY1MzkgMTAuMTIxNyA4Ljk3NDAxIDEwLjM4ODUgOC44NDA4MVpNNy41NjcwNCAxMC44NDMyQzcuMzM0NjEgMTAuNzUwMiA3LjE0MzUzIDEwLjg2MDEgNy4xMTQzNyAxMC44NzY5TDcuMTEyNzkgMTAuODc3OEM2LjkwNzgyIDEwLjk5NDkgNi43MTM4MyAxMS4yNDM5IDYuNjc0NyAxMS40ODQyQzYuNTkwMTggMTIuMDAzNCA3LjEzMTk5IDEyLjEyMzkgNy41MjY2MSAxMi4wOTg3QzguMjA3NCAxMi4wNTUzIDguMDY1NDcgMTEuMDQyNiA3LjU2NzA0IDEwLjg0MzJaTTQuODgwNSAxMC44OTMyQzUuMDY3NCAxMC43NzIzIDUuMTU2NTggMTAuNTM2MyA1LjA4MjkzIDEwLjMxNTNDNC45MzA0NiA5Ljc5Njg3IDQuMzI0NiA5LjcxMjUyIDMuOTY1NjEgMTAuMTI5N0MzLjc5MzM2IDEwLjMyOTkgMy44MDc0OSAxMC42Mjc0IDMuOTkyMTQgMTAuODEwNUwzLjk5NDk1IDEwLjgxNEwzLjk5NzkgMTAuODE3NkM0LjIyMDI1IDExLjA5NDIgNC42MzYyNCAxMS4xODU3IDQuODgwNSAxMC44OTMyWk0zLjA0Njk1IDcuODEzMThDMy4zMzE0NyA4LjA5NzcgMy42MDA3NyA4LjE1MDY3IDMuOTg0NDMgOC4wNTg1OUM0LjYwODI2IDcuOTA4ODcgNC4xMzgxNCA2LjI0Mjk5IDMuMDQ3IDYuODcyOTZDMi43MDkzOSA3LjA2Nzg4IDIuODY3MTYgNy42MzMzOSAzLjA0Njk1IDcuODEzMThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxqZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMSA5LjUwMDA2QzEgMTAuMzI4NSAxLjY3MTU3IDExLjAwMDEgMi41IDExLjAwMDFINEw0IDEwLjAwMDFIMi41QzIuMjIzODYgMTAuMDAwMSAyIDkuNzc2MiAyIDkuNTAwMDZMMiAyLjUwMDA2QzIgMi4yMjM5MiAyLjIyMzg2IDIuMDAwMDYgMi41IDIuMDAwMDZMOS41IDIuMDAwMDZDOS43NzYxNCAyLjAwMDA2IDEwIDIuMjIzOTIgMTAgMi41MDAwNlY0LjAwMDAySDUuNUM0LjY3MTU4IDQuMDAwMDIgNCA0LjY3MTU5IDQgNS41MDAwMlYxMi41QzQgMTMuMzI4NCA0LjY3MTU4IDE0IDUuNSAxNEgxMi41QzEzLjMyODQgMTQgMTQgMTMuMzI4NCAxNCAxMi41VjUuNTAwMDJDMTQgNC42NzE1OSAxMy4zMjg0IDQuMDAwMDIgMTIuNSA0LjAwMDAySDExVjIuNTAwMDZDMTEgMS42NzE2MyAxMC4zMjg0IDEuMDAwMDYgOS41IDEuMDAwMDZIMi41QzEuNjcxNTcgMS4wMDAwNiAxIDEuNjcxNjMgMSAyLjUwMDA2VjkuNTAwMDZaTTUgNS41MDAwMkM1IDUuMjIzODggNS4yMjM4NiA1LjAwMDAyIDUuNSA1LjAwMDAySDEyLjVDMTIuNzc2MSA1LjAwMDAyIDEzIDUuMjIzODggMTMgNS41MDAwMlYxMi41QzEzIDEyLjc3NjIgMTIuNzc2MSAxMyAxMi41IDEzSDUuNUM1LjIyMzg2IDEzIDUgMTIuNzc2MiA1IDEyLjVWNS41MDAwMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEVlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05Ljg3NzM3IDEySDkuOUgxMS41QzExLjc3NjEgMTIgMTIgMTEuNzc2MSAxMiAxMS41QzEyIDExLjIyMzkgMTEuNzc2MSAxMSAxMS41IDExSDkuOUM4Ljc3MTY0IDExIDcuOTU1NDUgMTAuOTk5NiA3LjMxMzUyIDEwLjk0NzJDNi42Nzc0NCAxMC44OTUyIDYuMjU2NjIgMTAuNzk0NiA1LjkxMTAzIDEwLjYxODVDNS4yNTI0NyAxMC4yODMgNC43MTcwMyA5Ljc0NzUzIDQuMzgxNDggOS4wODg5N0M0LjIwNTM5IDguNzQzMzggNC4xMDQ4MSA4LjMyMjU2IDQuMDUyODQgNy42ODY0OEM0LjAwMDM5IDcuMDQ0NTUgNCA2LjIyODM2IDQgNS4xVjMuNUM0IDMuMjIzODYgMy43NzYxNCAzIDMuNSAzQzMuMjIzODYgMyAzIDMuMjIzODYgMyAzLjVWNS4xVjUuMTIyNjNDMyA2LjIyMzU5IDMgNy4wODA1MiAzLjA1NjE2IDcuNzY3OTFDMy4xMTMxOCA4LjQ2NTg0IDMuMjMwNTggOS4wMzI5IDMuNDkwNDcgOS41NDI5NkMzLjkyMTkgMTAuMzg5NyA0LjYxMDMxIDExLjA3ODEgNS40NTcwNCAxMS41MDk1QzUuOTY3MSAxMS43Njk0IDYuNTM0MTYgMTEuODg2OCA3LjIzMjA5IDExLjk0MzhDNy45MTk0OCAxMiA4Ljc3NjQxIDEyIDkuODc3MzcgMTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxQZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS4xMjI2MyAxMkg1LjFIMy41QzMuMjIzODYgMTIgMyAxMS43NzYxIDMgMTEuNUMzIDExLjIyMzkgMy4yMjM4NiAxMSAzLjUgMTFINS4xQzYuMjI4MzYgMTEgNy4wNDQ1NSAxMC45OTk2IDcuNjg2NDggMTAuOTQ3MkM4LjMyMjU2IDEwLjg5NTIgOC43NDMzOCAxMC43OTQ2IDkuMDg4OTcgMTAuNjE4NUM5Ljc0NzUzIDEwLjI4MyAxMC4yODMgOS43NDc1MyAxMC42MTg1IDkuMDg4OTdDMTAuNzk0NiA4Ljc0MzM4IDEwLjg5NTIgOC4zMjI1NiAxMC45NDcyIDcuNjg2NDhDMTAuOTk5NiA3LjA0NDU1IDExIDYuMjI4MzYgMTEgNS4xVjMuNUMxMSAzLjIyMzg2IDExLjIyMzkgMyAxMS41IDNDMTEuNzc2MSAzIDEyIDMuMjIzODYgMTIgMy41VjUuMVY1LjEyMjYzQzEyIDYuMjIzNTkgMTIgNy4wODA1MiAxMS45NDM4IDcuNzY3OTFDMTEuODg2OCA4LjQ2NTg0IDExLjc2OTQgOS4wMzI5IDExLjUwOTUgOS41NDI5NkMxMS4wNzgxIDEwLjM4OTcgMTAuMzg5NyAxMS4wNzgxIDkuNTQyOTYgMTEuNTA5NUM5LjAzMjkgMTEuNzY5NCA4LjQ2NTg0IDExLjg4NjggNy43Njc5MSAxMS45NDM4QzcuMDgwNTIgMTIgNi4yMjM1OSAxMiA1LjEyMjYzIDEyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sa2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuODc3MzcgM0g5LjlIMTEuNUMxMS43NzYxIDMgMTIgMy4yMjM4NiAxMiAzLjVDMTIgMy43NzYxNCAxMS43NzYxIDQgMTEuNSA0SDkuOUM4Ljc3MTY0IDQgNy45NTU0NSA0LjAwMDM5IDcuMzEzNTIgNC4wNTI4NEM2LjY3NzQ0IDQuMTA0ODEgNi4yNTY2MiA0LjIwNTM5IDUuOTExMDMgNC4zODE0OEM1LjI1MjQ3IDQuNzE3MDMgNC43MTcwMyA1LjI1MjQ3IDQuMzgxNDggNS45MTEwM0M0LjIwNTM5IDYuMjU2NjIgNC4xMDQ4MSA2LjY3NzQ0IDQuMDUyODQgNy4zMTM1MkM0LjAwMDM5IDcuOTU1NDUgNCA4Ljc3MTY0IDQgOS45VjExLjVDNCAxMS43NzYxIDMuNzc2MTQgMTIgMy41IDEyQzMuMjIzODYgMTIgMyAxMS43NzYxIDMgMTEuNVY5LjlWOS44NzczN0MzIDguNzc2NDEgMyA3LjkxOTQ4IDMuMDU2MTYgNy4yMzIwOUMzLjExMzE4IDYuNTM0MTYgMy4yMzA1OCA1Ljk2NzEgMy40OTA0NyA1LjQ1NzA0QzMuOTIxOSA0LjYxMDMxIDQuNjEwMzEgMy45MjE5IDUuNDU3MDQgMy40OTA0N0M1Ljk2NzEgMy4yMzA1OCA2LjUzNDE2IDMuMTEzMTggNy4yMzIwOSAzLjA1NjE2QzcuOTE5NDggMyA4Ljc3NjQxIDMgOS44NzczNyAzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuMTIyNjMgM0g1LjFIMy41QzMuMjIzODYgMyAzIDMuMjIzODYgMyAzLjVDMyAzLjc3NjE0IDMuMjIzODYgNCAzLjUgNEg1LjFDNi4yMjgzNiA0IDcuMDQ0NTUgNC4wMDAzOSA3LjY4NjQ4IDQuMDUyODRDOC4zMjI1NiA0LjEwNDgxIDguNzQzMzggNC4yMDUzOSA5LjA4ODk3IDQuMzgxNDhDOS43NDc1MyA0LjcxNzAzIDEwLjI4MyA1LjI1MjQ3IDEwLjYxODUgNS45MTEwM0MxMC43OTQ2IDYuMjU2NjIgMTAuODk1MiA2LjY3NzQ0IDEwLjk0NzIgNy4zMTM1MkMxMC45OTk2IDcuOTU1NDUgMTEgOC43NzE2NCAxMSA5LjlWMTEuNUMxMSAxMS43NzYxIDExLjIyMzkgMTIgMTEuNSAxMkMxMS43NzYxIDEyIDEyIDExLjc3NjEgMTIgMTEuNVY5LjlWOS44NzczN0MxMiA4Ljc3NjQxIDEyIDcuOTE5NDggMTEuOTQzOCA3LjIzMjA5QzExLjg4NjggNi41MzQxNiAxMS43Njk0IDUuOTY3MSAxMS41MDk1IDUuNDU3MDRDMTEuMDc4MSA0LjYxMDMxIDEwLjM4OTcgMy45MjE5IDkuNTQyOTYgMy40OTA0N0M5LjAzMjkgMy4yMzA1OCA4LjQ2NTg0IDMuMTEzMTggNy43Njc5MSAzLjA1NjE2QzcuMDgwNTIgMyA2LjIyMzU5IDMgNS4xMjI2MyAzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwLjEgM0MxMC41MjgzIDMgMTAuODE5NCAzLjAwMDM5IDExLjA0NDUgMy4wMTg3OEMxMS4yNjM3IDMuMDM2NjkgMTEuMzc1OCAzLjA2OTE1IDExLjQ1NCAzLjEwODk5QzExLjY0MjIgMy4yMDQ4NyAxMS43OTUxIDMuMzU3ODUgMTEuODkxIDMuNTQ2MDFDMTEuOTMwOSAzLjYyNDIxIDExLjk2MzMgMy43MzYzMSAxMS45ODEyIDMuOTU1NTJDMTEuOTk5NiA0LjE4MDU2IDEyIDQuNDcxNzEgMTIgNC45VjUuNUMxMiA1Ljc3NjE0IDEyLjIyMzkgNiAxMi41IDZDMTIuNzc2MSA2IDEzIDUuNzc2MTQgMTMgNS41VjQuODc5MzVDMTMgNC40NzY4NyAxMyA0LjE0NDY5IDEyLjk3NzkgMy44NzQwOUMxMi45NTQ5IDMuNTkzMDQgMTIuOTA1NyAzLjMzNDY5IDEyLjc4MiAzLjA5MjAyQzEyLjU5MDMgMi43MTU3IDEyLjI4NDMgMi40MDk3MyAxMS45MDggMi4yMTc5OUMxMS42NjUzIDIuMDk0MzQgMTEuNDA3IDIuMDQ1MDYgMTEuMTI1OSAyLjAyMjFDMTAuODU1MyAxLjk5OTk5IDEwLjUyMzEgMS45OTk5OSAxMC4xMjA3IDJIMTAuMTIwNkgxMC4xSDkuNUM5LjIyMzg2IDIgOSAyLjIyMzg2IDkgMi41QzkgMi43NzYxNCA5LjIyMzg2IDMgOS41IDNIMTAuMVpNNS41IDJINC44NzkzNUg0Ljg3OTM0QzQuNDc2ODYgMS45OTk5OSA0LjE0NDY4IDEuOTk5OTkgMy44NzQwOSAyLjAyMjFDMy41OTMwNCAyLjA0NTA2IDMuMzM0NjkgMi4wOTQzNCAzLjA5MjAyIDIuMjE3OTlDMi43MTU3IDIuNDA5NzMgMi40MDk3MyAyLjcxNTcgMi4yMTc5OSAzLjA5MjAyQzIuMDk0MzQgMy4zMzQ2OSAyLjA0NTA2IDMuNTkzMDQgMi4wMjIxIDMuODc0MDlDMS45OTk5OSA0LjE0NDY4IDEuOTk5OTkgNC40NzY4NiAyIDQuODc5MzRWNC44NzkzNVY1LjVDMiA1Ljc3NjE0IDIuMjIzODYgNiAyLjUgNkMyLjc3NjE0IDYgMyA1Ljc3NjE0IDMgNS41VjQuOUMzIDQuNDcxNzEgMy4wMDAzOSA0LjE4MDU2IDMuMDE4NzggMy45NTU1MkMzLjAzNjY5IDMuNzM2MzEgMy4wNjkxNSAzLjYyNDIxIDMuMTA4OTkgMy41NDYwMUMzLjIwNDg3IDMuMzU3ODUgMy4zNTc4NSAzLjIwNDg3IDMuNTQ2MDEgMy4xMDg5OUMzLjYyNDIxIDMuMDY5MTUgMy43MzYzMSAzLjAzNjY5IDMuOTU1NTIgMy4wMTg3OEM0LjE4MDU2IDMuMDAwMzkgNC40NzE3MSAzIDQuOSAzSDUuNUM1Ljc3NjE0IDMgNiAyLjc3NjE0IDYgMi41QzYgMi4yMjM4NiA1Ljc3NjE0IDIgNS41IDJaTTEzIDkuNUMxMyA5LjIyMzg2IDEyLjc3NjEgOSAxMi41IDlDMTIuMjIzOSA5IDEyIDkuMjIzODYgMTIgOS41VjEwLjFDMTIgMTAuNTI4MyAxMS45OTk2IDEwLjgxOTQgMTEuOTgxMiAxMS4wNDQ1QzExLjk2MzMgMTEuMjYzNyAxMS45MzA5IDExLjM3NTggMTEuODkxIDExLjQ1NEMxMS43OTUxIDExLjY0MjIgMTEuNjQyMiAxMS43OTUxIDExLjQ1NCAxMS44OTFDMTEuMzc1OCAxMS45MzA5IDExLjI2MzcgMTEuOTYzMyAxMS4wNDQ1IDExLjk4MTJDMTAuODE5NCAxMS45OTk2IDEwLjUyODMgMTIgMTAuMSAxMkg5LjVDOS4yMjM4NiAxMiA5IDEyLjIyMzkgOSAxMi41QzkgMTIuNzc2MSA5LjIyMzg2IDEzIDkuNSAxM0gxMC4xMjA2QzEwLjUyMzEgMTMgMTAuODU1MyAxMyAxMS4xMjU5IDEyLjk3NzlDMTEuNDA3IDEyLjk1NDkgMTEuNjY1MyAxMi45MDU3IDExLjkwOCAxMi43ODJDMTIuMjg0MyAxMi41OTAzIDEyLjU5MDMgMTIuMjg0MyAxMi43ODIgMTEuOTA4QzEyLjkwNTcgMTEuNjY1MyAxMi45NTQ5IDExLjQwNyAxMi45Nzc5IDExLjEyNTlDMTMgMTAuODU1MyAxMyAxMC41MjMxIDEzIDEwLjEyMDZWOS41Wk0yLjUgOUMyLjc3NjE0IDkgMyA5LjIyMzg2IDMgOS41VjEwLjFDMyAxMC41MjgzIDMuMDAwMzkgMTAuODE5NCAzLjAxODc4IDExLjA0NDVDMy4wMzY2OSAxMS4yNjM3IDMuMDY5MTUgMTEuMzc1OCAzLjEwODk5IDExLjQ1NEMzLjIwNDg3IDExLjY0MjIgMy4zNTc4NSAxMS43OTUxIDMuNTQ2MDEgMTEuODkxQzMuNjI0MjEgMTEuOTMwOSAzLjczNjMxIDExLjk2MzMgMy45NTU1MiAxMS45ODEyQzQuMTgwNTYgMTEuOTk5NiA0LjQ3MTcxIDEyIDQuOSAxMkg1LjVDNS43NzYxNCAxMiA2IDEyLjIyMzkgNiAxMi41QzYgMTIuNzc2MSA1Ljc3NjE0IDEzIDUuNSAxM0g0Ljg3OTM1QzQuNDc2ODcgMTMgNC4xNDQ2OSAxMyAzLjg3NDA5IDEyLjk3NzlDMy41OTMwNCAxMi45NTQ5IDMuMzM0NjkgMTIuOTA1NyAzLjA5MjAyIDEyLjc4MkMyLjcxNTcgMTIuNTkwMyAyLjQwOTczIDEyLjI4NDMgMi4yMTc5OSAxMS45MDhDMi4wOTQzNCAxMS42NjUzIDIuMDQ1MDYgMTEuNDA3IDIuMDIyMSAxMS4xMjU5QzEuOTk5OTkgMTAuODU1MyAxLjk5OTk5IDEwLjUyMzEgMiAxMC4xMjA3VjEwLjEyMDZWMTAuMVY5LjVDMiA5LjIyMzg2IDIuMjIzODYgOSAyLjUgOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFJlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy4xNSA3LjQ5OTk4QzEzLjE1IDQuNjY0NTggMTAuOTQwMiAxLjg0OTk4IDcuNTAwMDIgMS44NDk5OEM0LjcyMTcgMS44NDk5OCAzLjM0ODUxIDMuOTA2MzYgMi43NjMzNiA0Ljk5OTk3SDQuNUM0Ljc3NjE0IDQuOTk5OTcgNSA1LjIyMzgzIDUgNS40OTk5N0M1IDUuNzc2MTEgNC43NzYxNCA1Ljk5OTk3IDQuNSA1Ljk5OTk3SDEuNUMxLjIyMzg2IDUuOTk5OTcgMSA1Ljc3NjExIDEgNS40OTk5N1YyLjQ5OTk3QzEgMi4yMjM4MyAxLjIyMzg2IDEuOTk5OTcgMS41IDEuOTk5OTdDMS43NzYxNCAxLjk5OTk3IDIgMi4yMjM4MyAyIDIuNDk5OTdWNC4zMTMxOEMyLjcwNDUzIDMuMDcxMjYgNC4zMzQwNiAwLjg0OTk3NiA3LjUwMDAyIDAuODQ5OTc2QzExLjU2MjggMC44NDk5NzYgMTQuMTUgNC4xODUzNyAxNC4xNSA3LjQ5OTk4QzE0LjE1IDEwLjgxNDYgMTEuNTYyOCAxNC4xNSA3LjUwMDAyIDE0LjE1QzUuNTU2MTggMTQuMTUgMy45Mzc3OCAxMy4zODA4IDIuNzg1NDggMTIuMjA4NEMyLjE2ODUyIDExLjU4MDYgMS42ODY2OCAxMC44MzkgMS4zNTgxNiAxMC4wNDA3QzEuMjUzMDYgOS43ODUzNiAxLjM3NDg4IDkuNDkzMTUgMS42MzAyNCA5LjM4ODA2QzEuODg1NiA5LjI4Mjk2IDIuMTc3ODEgOS40MDQ3OCAyLjI4MjkgOS42NjAxNEMyLjU2Mzc0IDEwLjM0MjUgMi45NzQ5NSAxMC45NzQ1IDMuNDk4NyAxMS41MDc0QzQuNDcwNTIgMTIuNDk2MyA1LjgzNDk2IDEzLjE1IDcuNTAwMDIgMTMuMTVDMTAuOTQwMiAxMy4xNSAxMy4xNSAxMC4zMzU0IDEzLjE1IDcuNDk5OThaTTcgMTBWNS4wMDAwMUg4VjEwSDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxJZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMTUgNy40OTk5OEMxMy4xNSA0LjY2NDU4IDEwLjk0MDIgMS44NDk5OCA3LjUwMDAyIDEuODQ5OThDNC43MjE2NyAxLjg0OTk4IDMuMzQ4NDkgMy45MDY0IDIuNzYzMzUgNUg0LjVDNC43NzYxNCA1IDUgNS4yMjM4NiA1IDUuNUM1IDUuNzc2MTQgNC43NzYxNCA2IDQuNSA2SDEuNUMxLjIyMzg2IDYgMSA1Ljc3NjE0IDEgNS41VjIuNUMxIDIuMjIzODYgMS4yMjM4NiAyIDEuNSAyQzEuNzc2MTQgMiAyIDIuMjIzODYgMiAyLjVWNC4zMTMxOEMyLjcwNDUzIDMuMDcxMjYgNC4zMzQwNiAwLjg0OTk3NiA3LjUwMDAyIDAuODQ5OTc2QzExLjU2MjggMC44NDk5NzYgMTQuMTUgNC4xODUzNyAxNC4xNSA3LjQ5OTk4QzE0LjE1IDEwLjgxNDYgMTEuNTYyOCAxNC4xNSA3LjUwMDAyIDE0LjE1QzUuNTU2MTggMTQuMTUgMy45Mzc3OCAxMy4zODA4IDIuNzg1NDggMTIuMjA4NEMyLjE2ODUyIDExLjU4MDYgMS42ODY2OCAxMC44MzkgMS4zNTgxNiAxMC4wNDA3QzEuMjUzMDYgOS43ODUzNiAxLjM3NDg4IDkuNDkzMTUgMS42MzAyNCA5LjM4ODA2QzEuODg1NiA5LjI4Mjk2IDIuMTc3ODEgOS40MDQ3OCAyLjI4MjkgOS42NjAxNEMyLjU2Mzc0IDEwLjM0MjUgMi45NzQ5NSAxMC45NzQ1IDMuNDk4NyAxMS41MDc0QzQuNDcwNTIgMTIuNDk2MyA1LjgzNDk2IDEzLjE1IDcuNTAwMDIgMTMuMTVDMTAuOTQwMiAxMy4xNSAxMy4xNSAxMC4zMzU0IDEzLjE1IDcuNDk5OThaTTcuNSA0LjAwMDAxQzcuNzc2MTQgNC4wMDAwMSA4IDQuMjIzODcgOCA0LjUwMDAxVjcuMjkyOTFMOS44NTM1NSA5LjE0NjQ2QzEwLjA0ODggOS4zNDE3MiAxMC4wNDg4IDkuNjU4MzEgOS44NTM1NSA5Ljg1MzU3QzkuNjU4MjkgMTAuMDQ4OCA5LjM0MTcxIDEwLjA0ODggOS4xNDY0NSA5Ljg1MzU3TDcuMTQ2NDUgNy44NTM1N0M3LjA1MjY4IDcuNzU5OCA3IDcuNjMyNjIgNyA3LjUwMDAxVjQuNTAwMDFDNyA0LjIyMzg3IDcuMjIzODYgNC4wMDAwMSA3LjUgNC4wMDAwMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFplPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjUgOC4wMDY4NGUtMDdDMy43NzYxNCA3Ljg4NjE0ZS0wNyA0IDAuMjIzODU5IDQgMC41MDAwMDFMNCAzLjAwMDA2TDExLjUgMy4wMDAwNkMxMS43NzYxIDMuMDAwMDYgMTIgMy4yMjM5MiAxMiAzLjUwMDA2TDEyIDExLjAwMDFMMTQuNSAxMUMxNC43NzYxIDExIDE1IDExLjIyMzggMTUgMTEuNUMxNSAxMS43NzYxIDE0Ljc3NjIgMTIgMTQuNSAxMkwxMiAxMi4wMDAxTDEyIDE0LjVDMTIgMTQuNzc2MSAxMS43NzYxIDE1IDExLjUgMTVDMTEuMjIzOSAxNSAxMSAxNC43NzYxIDExIDE0LjVMMTEgMTIuMDAwMUwzLjUgMTIuMDAwMUMzLjIyMzg2IDEyLjAwMDEgMyAxMS43NzYyIDMgMTEuNTAwMUwzIDQuMDAwMDVMMC40OTk5ODkgNEMwLjIyMzg0NyA0IC02LjEwNTQxZS0wNiAzLjc3NjEzIC01LjAyNTc2ZS0wNyAzLjQ5OTk5QzUuMTMwMDZlLTA2IDMuMjIzODUgMC4yMjM4NjcgMyAwLjUwMDAxIDNMMyAzLjAwMDA1TDMgMC41MDAwMDFDMyAwLjIyMzg1OSAzLjIyMzg2IDguMTI3NTVlLTA3IDMuNSA4LjAwNjg0ZS0wN1pNNCA0LjAwMDA2TDQgMTEuMDAwMUwxMSAxMS4wMDAxTDExIDQuMDAwMDZMNCA0LjAwMDA2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjg1MzYgMi44NTM1NUMxMy4wNDg4IDIuNjU4MjkgMTMuMDQ4OCAyLjM0MTcxIDEyLjg1MzYgMi4xNDY0NUMxMi42NTgzIDEuOTUxMTggMTIuMzQxNyAxLjk1MTE4IDEyLjE0NjQgMi4xNDY0NUw3LjUgNi43OTI4OUwyLjg1MzU1IDIuMTQ2NDVDMi42NTgyOSAxLjk1MTE4IDIuMzQxNzEgMS45NTExOCAyLjE0NjQ1IDIuMTQ2NDVDMS45NTExOCAyLjM0MTcxIDEuOTUxMTggMi42NTgyOSAyLjE0NjQ1IDIuODUzNTVMNi43OTI4OSA3LjVMMi4xNDY0NSAxMi4xNDY0QzEuOTUxMTggMTIuMzQxNyAxLjk1MTE4IDEyLjY1ODMgMi4xNDY0NSAxMi44NTM2QzIuMzQxNzEgMTMuMDQ4OCAyLjY1ODI5IDEzLjA0ODggMi44NTM1NSAxMi44NTM2TDcuNSA4LjIwNzExTDEyLjE0NjQgMTIuODUzNkMxMi4zNDE3IDEzLjA0ODggMTIuNjU4MyAxMy4wNDg4IDEyLjg1MzYgMTIuODUzNkMxMy4wNDg4IDEyLjY1ODMgMTMuMDQ4OCAxMi4zNDE3IDEyLjg1MzYgMTIuMTQ2NEw4LjIwNzExIDcuNUwxMi44NTM2IDIuODUzNTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxEZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEuNzgxNiA0LjAzMTU3QzEyLjAwNjIgMy44MDcwMiAxMi4wMDYyIDMuNDQyOTUgMTEuNzgxNiAzLjIxODRDMTEuNTU3MSAyLjk5Mzg1IDExLjE5MyAyLjk5Mzg1IDEwLjk2ODUgMy4yMTg0TDcuNTAwMDUgNi42ODY4Mkw0LjAzMTY0IDMuMjE4NEMzLjgwNzA4IDIuOTkzODUgMy40NDMwMSAyLjk5Mzg1IDMuMjE4NDYgMy4yMTg0QzIuOTkzOTEgMy40NDI5NSAyLjk5MzkxIDMuODA3MDIgMy4yMTg0NiA0LjAzMTU3TDYuNjg2ODggNy40OTk5OUwzLjIxODQ2IDEwLjk2ODRDMi45OTM5MSAxMS4xOTMgMi45OTM5MSAxMS41NTcgMy4yMTg0NiAxMS43ODE2QzMuNDQzMDEgMTIuMDA2MSAzLjgwNzA4IDEyLjAwNjEgNC4wMzE2NCAxMS43ODE2TDcuNTAwMDUgOC4zMTMxNkwxMC45Njg1IDExLjc4MTZDMTEuMTkzIDEyLjAwNjEgMTEuNTU3MSAxMi4wMDYxIDExLjc4MTYgMTEuNzgxNkMxMi4wMDYyIDExLjU1NyAxMi4wMDYyIDExLjE5MyAxMS43ODE2IDEwLjk2ODRMOC4zMTMyMiA3LjQ5OTk5TDExLjc4MTYgNC4wMzE1N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEJlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzA3NSA3LjQ5OTg4QzAuODc3MDc1IDMuODQyMTkgMy44NDIyMiAwLjg3NzA0NSA3LjQ5OTkxIDAuODc3MDQ1QzExLjE1NzYgMC44NzcwNDUgMTQuMTIyNyAzLjg0MjE5IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDExLjE1NzUgMTEuMTU3NiAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MzLjg0MjIyIDE0LjEyMjcgMC44NzcwNzUgMTEuMTU3NSAwLjg3NzA3NSA3LjQ5OTg4Wk03LjQ5OTkxIDEuODI3MDRDNC4zNjY4OSAxLjgyNzA0IDEuODI3MDggNC4zNjY4NiAxLjgyNzA4IDcuNDk5ODhDMS44MjcwOCAxMC42MzI5IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDMTAuNjMyOSAxMy4xNzI3IDEzLjE3MjcgMTAuNjMyOSAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyA0LjM2Njg2IDEwLjYzMjkgMS44MjcwNCA3LjQ5OTkxIDEuODI3MDRaTTkuODUzNTggNS4xNDY0NEMxMC4wNDg4IDUuMzQxNyAxMC4wNDg4IDUuNjU4MjkgOS44NTM1OCA1Ljg1MzU1TDguMjA3MTMgNy40OTk5OUw5Ljg1MzU4IDkuMTQ2NDRDMTAuMDQ4OCA5LjM0MTcgMTAuMDQ4OCA5LjY1ODI5IDkuODUzNTggOS44NTM1NUM5LjY1ODMyIDEwLjA0ODggOS4zNDE3MyAxMC4wNDg4IDkuMTQ2NDcgOS44NTM1NUw3LjUwMDAyIDguMjA3MUw1Ljg1MzU4IDkuODUzNTVDNS42NTgzMiAxMC4wNDg4IDUuMzQxNzMgMTAuMDQ4OCA1LjE0NjQ3IDkuODUzNTVDNC45NTEyMSA5LjY1ODI5IDQuOTUxMjEgOS4zNDE3IDUuMTQ2NDcgOS4xNDY0NEw2Ljc5MjkyIDcuNDk5OTlMNS4xNDY0NyA1Ljg1MzU1QzQuOTUxMjEgNS42NTgyOSA0Ljk1MTIxIDUuMzQxNyA1LjE0NjQ3IDUuMTQ2NDRDNS4zNDE3MyA0Ljk1MTE4IDUuNjU4MzIgNC45NTExOCA1Ljg1MzU4IDUuMTQ2NDRMNy41MDAwMiA2Ljc5Mjg5TDkuMTQ2NDcgNS4xNDY0NEM5LjM0MTczIDQuOTUxMTggOS42NTgzMiA0Ljk1MTE4IDkuODUzNTggNS4xNDY0NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzA3NSA3LjUwMjA3QzAuODc3MDc1IDMuODQzMTkgMy44NDMxOSAwLjg3NzA3NSA3LjUwMjA4IDAuODc3MDc1QzExLjE2MDkgMC44NzcwNzUgMTQuMTI3MSAzLjg0MzE5IDE0LjEyNzEgNy41MDIwN0MxNC4xMjcxIDExLjE2MDkgMTEuMTYwOSAxNC4xMjcxIDcuNTAyMDggMTQuMTI3MUMzLjg0MzE5IDE0LjEyNzEgMC44NzcwNzUgMTEuMTYwOSAwLjg3NzA3NSA3LjUwMjA3Wk0xLjg0ODk4IDcuMDAwMDNDMi4wODg2IDQuMjY2MzkgNC4yNjYzOSAyLjA4ODYgNy4wMDAwMyAxLjg0ODk4VjQuNTAwMDNDNy4wMDAwMyA0Ljc3NjE3IDcuMjIzODggNS4wMDAwMyA3LjUwMDAzIDUuMDAwMDNDNy43NzYxNyA1LjAwMDAzIDguMDAwMDMgNC43NzYxNyA4LjAwMDAzIDQuNTAwMDNWMS44NDg2MkMxMC43MzU2IDIuMDg2NDMgMTIuOTE1NCA0LjI2NTAyIDEzLjE1NTIgNy4wMDAwM0gxMC41QzEwLjIyMzkgNy4wMDAwMyAxMCA3LjIyMzg4IDEwIDcuNTAwMDNDMTAgNy43NzYxNyAxMC4yMjM5IDguMDAwMDMgMTAuNSA4LjAwMDAzSDEzLjE1NTVDMTIuOTE3NiAxMC43MzY5IDEwLjczNjkgMTIuOTE3NiA4LjAwMDAzIDEzLjE1NTVWMTAuNUM4LjAwMDAzIDEwLjIyMzkgNy43NzYxNyAxMCA3LjUwMDAzIDEwQzcuMjIzODggMTAgNy4wMDAwMyAxMC4yMjM5IDcuMDAwMDMgMTAuNVYxMy4xNTUyQzQuMjY1MDIgMTIuOTE1NCAyLjA4NjQzIDEwLjczNTYgMS44NDg2MiA4LjAwMDAzSDQuNTAwMDNDNC43NzYxNyA4LjAwMDAzIDUuMDAwMDMgNy43NzYxNyA1LjAwMDAzIDcuNTAwMDNDNS4wMDAwMyA3LjIyMzg4IDQuNzc2MTcgNy4wMDAwMyA0LjUwMDAzIDcuMDAwMDNIMS44NDg5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LCRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMEM3Ljc3NjE0IDAgOCAwLjIyMzg1OCA4IDAuNVYxLjgwNjg3QzEwLjY5MjIgMi4wOTM1IDEyLjgxNjcgNC4yODAxMiAxMy4wMDY4IDdIMTQuNUMxNC43NzYxIDcgMTUgNy4yMjM4NiAxNSA3LjVDMTUgNy43NzYxNCAxNC43NzYxIDggMTQuNSA4SDEyLjk4ODhDMTIuNzA5NCAxMC42MjQ0IDEwLjYyNDQgMTIuNzA5NCA4IDEyLjk4ODhWMTQuNUM4IDE0Ljc3NjEgNy43NzYxNCAxNSA3LjUgMTVDNy4yMjM4NiAxNSA3IDE0Ljc3NjEgNyAxNC41VjEzLjAwNjhDNC4yODAxMiAxMi44MTY3IDIuMDkzNSAxMC42OTIyIDEuODA2ODcgOEgwLjVDMC4yMjM4NTggOCAwIDcuNzc2MTQgMCA3LjVDMCA3LjIyMzg2IDAuMjIzODU4IDcgMC41IDdIMS43ODg4NkMxLjk4Mzc2IDQuMjExNjYgNC4yMTE2NiAxLjk4Mzc2IDcgMS43ODg4NlYwLjVDNyAwLjIyMzg1OCA3LjIyMzg2IDAgNy41IDBaTTggMTIuMDMyMlY5LjVDOCA5LjIyMzg2IDcuNzc2MTQgOSA3LjUgOUM3LjIyMzg2IDkgNyA5LjIyMzg2IDcgOS41VjEyLjA1NEM0LjgwNTE3IDExLjg2ODkgMy4wNDIyMiAxMC4xNjY4IDIuNzYzNDQgOEg1LjVDNS43NzYxNCA4IDYgNy43NzYxNCA2IDcuNUM2IDcuMjIzODYgNS43NzYxNCA3IDUuNSA3SDIuNzQxN0MyLjkzMjUyIDQuNzM2NjIgNC43MzY2MiAyLjkzMjUyIDcgMi43NDE3VjUuNUM3IDUuNzc2MTQgNy4yMjM4NiA2IDcuNSA2QzcuNzc2MTQgNiA4IDUuNzc2MTQgOCA1LjVWMi43NjM0NEMxMC4xNjY4IDMuMDQyMjIgMTEuODY4OSA0LjgwNTE3IDEyLjA1NCA3SDkuNUM5LjIyMzg2IDcgOSA3LjIyMzg2IDkgNy41QzkgNy43NzYxNCA5LjIyMzg2IDggOS41IDhIMTIuMDMyMkMxMS43NjIxIDEwLjA5OTEgMTAuMDk5MSAxMS43NjIxIDggMTIuMDMyMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEZlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjYwOTEzIDAuMDYzNDI4N0M0LjM5MDgyIDAuMDA4ODUwNSA0LjE2NTc1IDAuMTIzOTMgNC4wODIxOCAwLjMzMjg2N0wzLjE1MzggMi42NTM4TDAuODMyODY2IDMuNTgyMThDMC43MDI4ODQgMy42MzQxNyAwLjYwNDUwNCAzLjc0MzcgMC41NjY3MDUgMy44Nzg0OUMwLjUyODkwNiA0LjAxMzI5IDAuNTU1OTk0IDQuMTU4IDAuNjM5OTkyIDQuMjY5OTlMMi4wMTE0OCA2LjA5ODY0TDEuMDYzNDMgOS44OTA4NUMxLjAwOTQ0IDEwLjEwNjggMS4xMjE0NSAxMC4zMjk4IDEuMzI2OTEgMTAuNDE1NEw0LjIwMTE1IDExLjYxM0w1LjYyNTU3IDEzLjc0OTZDNS43MzQxMiAxMy45MTI0IDUuOTM1NDUgMTMuOTg2NCA2LjEyMzYyIDEzLjkzMjdMOS42MjM2MiAxMi45MzI3QzkuNjI5ODggMTIuOTMwOSA5LjYzNjExIDEyLjkyOSA5LjY0MjI5IDEyLjkyNjlMMTIuNjQyMyAxMS45MjY5QzEyLjc5MjMgMTEuODc2OSAxMi45MDUgMTEuNzUxOSAxMi45MzkzIDExLjU5NzZMMTMuOTM5MyA3LjA5NzYxQzEzLjk3NzYgNi45MjUwNiAxMy45MTE0IDYuNzQ2MDUgMTMuNzcgNi42Mzk5OUwxMS45NSA1LjI3NDk5VjIuOTk5OTlDMTEuOTUgMi44Mjk1NSAxMS44NTM3IDIuNjczNzMgMTEuNzAxMiAyLjU5NzVMOC43MDEyNCAxLjA5NzVDOC42NzE4NyAxLjA4MjgyIDguNjQwOTggMS4wNzEzOSA4LjYwOTEzIDEuMDYzNDNMNC42MDkxMyAwLjA2MzQyODdaTTExLjQzMjMgNi4wMTE3M0wxMi43NzQ4IDcuMDE4NThMMTAuMjExOSA5LjE1NDI5QzEwLjE0NzYgOS4yMDc4NiAxMC4wOTk1IDkuMjc4MyAxMC4wNzMxIDkuMzU3NjlMOS4yNTM4MiAxMS44MTU1TDcuNzM4NDkgMTAuODY4NEM3LjUyNzc0IDEwLjczNjcgNy4yNTAxMSAxMC44MDA3IDcuMTE4MzkgMTEuMDExNUM2Ljk4NjY3IDExLjIyMjIgNy4wNTA3NCAxMS40OTk5IDcuMjYxNDkgMTEuNjMxNkw4LjQwMzQxIDEyLjM0NTNMNi4xOTIyMSAxMi45NzcxTDQuODc0NDEgMTEuMDAwNEM0LjgyNTEzIDEwLjkyNjUgNC43NTUwOCAxMC44Njg4IDQuNjczMDcgMTAuODM0NkwyLjAzMDQ2IDkuNzMzNTJMMi44NTEzNCA2LjQ0OTk5SDQuOTk5OTlDNS4yNDg1MiA2LjQ0OTk5IDUuNDQ5OTkgNi4yNDg1MiA1LjQ0OTk5IDUuOTk5OTlDNS40NDk5OSA1Ljc1MTQ2IDUuMjQ4NTIgNS41NDk5OSA0Ljk5OTk5IDUuNTQ5OTlIMi43MjQ5OUwxLjcxMjMgNC4xOTk3NEwzLjUxNDA3IDMuNDc5MDNMNi4zNTc2OSA0LjQyNjlDNi41MzY1NSA0LjQ4NjUyIDYuNzMzNjEgNC40MjgzMiA2Ljg1MTM4IDQuMjgxMTFMOC42MjQxMyAyLjA2NTE4TDExLjA1IDMuMjc4MTFWNS4xOTUzM0w4LjgzMjg3IDYuMDgyMThDOC43MDk5NiA2LjEzMTM0IDguNjE0OTQgNi4yMzIxMiA4LjU3MzA4IDYuMzU3NjlMOC4wNzMwOCA3Ljg1NzY5QzcuOTk0NDkgOC4wOTM0NiA4LjEyMTkxIDguMzQ4MzEgOC4zNTc2OSA4LjQyNjlDOC41OTM0NiA4LjUwNTQ5IDguODQ4MzEgOC4zNzgwNyA4LjkyNjkgOC4xNDIyOUw5LjM2MDkgNi44NDAyOUwxMS40MzIzIDYuMDExNzNaTTcuNzEwNTIgMS43NjY0OEw2LjM0NDYyIDMuNDczODZMNC4wOTUwNSAyLjcyNEw0Ljc3MTkyIDEuMDMxODNMNy43MTA1MiAxLjc2NjQ4Wk0xMC4yMTE1IDExLjc4ODVMMTIuMTE2IDExLjE1MzdMMTIuNzc0NSA4LjE5MDM0TDEwLjg4NjQgOS43NjM3NEwxMC4yMTE1IDExLjc4ODVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxXZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4yODg1NiAwLjc5NjkwOEM3LjQyMjU4IDAuNzM0MzY0IDcuNTc3NDIgMC43MzQzNjQgNy43MTE0NCAwLjc5NjkwOEwxMy43MTE0IDMuNTk2OTFDMTMuODg3NSAzLjY3OTA2IDE0IDMuODU1NzQgMTQgNC4wNVYxMC45NUMxNCAxMS4xNDQzIDEzLjg4NzUgMTEuMzIwOSAxMy43MTE0IDExLjQwMzFMNy43MTE0NCAxNC4yMDMxQzcuNTc3NDIgMTQuMjY1NiA3LjQyMjU4IDE0LjI2NTYgNy4yODg1NiAxNC4yMDMxTDEuMjg4NTYgMTEuNDAzMUMxLjExMjUyIDExLjMyMDkgMSAxMS4xNDQzIDEgMTAuOTVWNC4wNUMxIDMuODU1NzQgMS4xMTI1MiAzLjY3OTA2IDEuMjg4NTYgMy41OTY5MUw3LjI4ODU2IDAuNzk2OTA4Wk0yIDQuODA1NzhMNyA2LjkzMDc4VjEyLjk2NDlMMiAxMC42MzE2VjQuODA1NzhaTTggMTIuOTY0OUwxMyAxMC42MzE2VjQuODA1NzhMOCA2LjkzMDc4VjEyLjk2NDlaTTcuNSA2LjA1NjcyTDEyLjI3MTkgNC4wMjg2Nkw3LjUgMS44MDE3NkwyLjcyODA5IDQuMDI4NjZMNy41IDYuMDU2NzJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxOZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4yOTIyNyAwLjA0ODk4NEMzLjQ3MDMzIC0wLjAzMjMzOCAzLjY3OTQ2IC0wLjAwMjI4MjE0IDMuODI3NCAwLjEyNTg5MUwxMi44NTg3IDcuOTUwMjZDMTMuMDEzNCA4LjA4NDMyIDEzLjA3MDggOC4yOTkxNiAxMy4wMDM1IDguNDkyNTFDMTIuOTM2MiA4LjY4NTg2IDEyLjc1NzggOC44MTg2NiAxMi41NTMzIDguODI3NjhMOS4yMTg4NyA4Ljk3NDc0TDExLjE1MDQgMTMuMjE4N0MxMS4yNjQ4IDEzLjQ3IDExLjE1MzggMTMuNzY2NCAxMC45MDI2IDEzLjg4MDhMOC43NTAyNCAxNC44NjEzQzguNDk5IDE0Ljk3NTggOC4yMDI1NSAxNC44NjQ5IDguMDg4MDIgMTQuNjEzN0w2LjE1MzM5IDEwLjM3MDNMMy44NjI3OSAxMi43ODU1QzMuNzIxOTYgMTIuOTM0IDMuNTA0ODcgMTIuOTgxNyAzLjMxNDc5IDEyLjkwNTlDMy4xMjQ3IDEyLjgzMDEgMyAxMi42NDYxIDMgMTIuNDQxNFYwLjUwMzc5MkMzIDAuMzA4MDQ4IDMuMTE0MjIgMC4xMzAzMDYgMy4yOTIyNyAwLjA0ODk4NFpNNCAxLjU5ODUyVjExLjE4NzdMNS45Mzc5OSA5LjE0NDI1QzYuMDUyMzggOS4wMjM2MyA2LjIxOTI0IDguOTY3NzYgNi4zODMxOSA4Ljk5NTE2QzYuNTQ3MTUgOS4wMjI1NiA2LjY4Njc3IDkuMTI5NjUgNi43NTU3MyA5LjI4MDlMOC43OTA1NiAxMy43NDQxTDEwLjAzMzIgMTMuMTc4TDguMDAxOTUgOC43MTQ5N0M3LjkzMzEzIDguNTYzNzYgNy45NDM5MSA4LjM4ODI0IDguMDMwNzIgOC4yNDY1OUM4LjExNzUzIDguMTA0OTQgOC4yNjkwMyA4LjAxNTY2IDguNDM1IDguMDA4MzRMMTEuMjU0OSA3Ljg4Mzk3TDQgMS41OTg1MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHplPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjUgMUM0LjIyMzg2IDEgNCAxLjIyMzg2IDQgMS41QzQgMS43NzYxNCA0LjIyMzg2IDIgNC41IDJDNS40MjIxNSAyIDYuMDM5OSAyLjIzMDU0IDYuNDIwNzUgMi41NjM3OUM2Ljc5Mjg2IDIuODg5MzkgNyAzLjM2NjI2IDcgNFY3SDUuNzVDNS40NzM4NiA3IDUuMjUgNy4yMjM4NiA1LjI1IDcuNUM1LjI1IDcuNzc2MTQgNS40NzM4NiA4IDUuNzUgOEg3VjExQzcgMTEuNjMzNyA2Ljc5Mjg2IDEyLjExMDYgNi40MjA3NSAxMi40MzYyQzYuMDM5OSAxMi43Njk1IDUuNDIyMTUgMTMgNC41IDEzQzQuMjIzODYgMTMgNCAxMy4yMjM5IDQgMTMuNUM0IDEzLjc3NjEgNC4yMjM4NiAxNCA0LjUgMTRDNS41Nzc4NSAxNCA2LjQ2MDEgMTMuNzMwNSA3LjA3OTI1IDEzLjE4ODhDNy4yNDE2OCAxMy4wNDY3IDcuMzgxNjkgMTIuODg5NiA3LjUgMTIuNzE5OEM3LjYxODMyIDEyLjg4OTYgNy43NTgzMiAxMy4wNDY3IDcuOTIwNzUgMTMuMTg4OEM4LjUzOTkgMTMuNzMwNSA5LjQyMjE1IDE0IDEwLjUgMTRDMTAuNzc2MSAxNCAxMSAxMy43NzYxIDExIDEzLjVDMTEgMTMuMjIzOSAxMC43NzYxIDEzIDEwLjUgMTNDOS41Nzc4NSAxMyA4Ljk2MDEgMTIuNzY5NSA4LjU3OTI1IDEyLjQzNjJDOC4yMDcxNCAxMi4xMTA2IDggMTEuNjMzNyA4IDExVjhIOS4yNUM5LjUyNjE0IDggOS43NSA3Ljc3NjE0IDkuNzUgNy41QzkuNzUgNy4yMjM4NiA5LjUyNjE0IDcgOS4yNSA3SDhWNEM4IDMuMzY2MjYgOC4yMDcxNCAyLjg4OTM5IDguNTc5MjUgMi41NjM3OUM4Ljk2MDEgMi4yMzA1NCA5LjU3Nzg1IDIgMTAuNSAyQzEwLjc3NjEgMiAxMSAxLjc3NjE0IDExIDEuNUMxMSAxLjIyMzg2IDEwLjc3NjEgMSAxMC41IDFDOS40MjIxNSAxIDguNTM5OSAxLjI2OTQ2IDcuOTIwNzUgMS44MTEyMUM3Ljc1ODMyIDEuOTUzMzMgNy42MTgzMiAyLjExMDQzIDcuNSAyLjI4MDIzQzcuMzgxNjggMi4xMTA0MyA3LjI0MTY4IDEuOTUzMzMgNy4wNzkyNSAxLjgxMTIxQzYuNDYwMSAxLjI2OTQ2IDUuNTc3ODUgMSA0LjUgMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFVlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDcuNUM1IDcuMjIzODYgNS4yMjM4NiA3IDUuNSA3SDkuNUM5Ljc3NjE0IDcgMTAgNy4yMjM4NiAxMCA3LjVDMTAgNy43NzYxNCA5Ljc3NjE0IDggOS41IDhINS41QzUuMjIzODYgOCA1IDcuNzc2MTQgNSA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxHZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi44IDFMMi43NDk2NyAwLjk5OTk3QzIuNTIxMjIgMC45OTk3NTIgMi4zMjQyOSAwLjk5OTU2NCAyLjE0OTgzIDEuMDQxNDVDMS42MDEzNiAxLjE3MzEyIDEuMTczMTIgMS42MDEzNiAxLjA0MTQ1IDIuMTQ5ODNDMC45OTk1NjQgMi4zMjQyOSAwLjk5OTc1MiAyLjUyMTIyIDAuOTk5OTcgMi43NDk2N0wxIDIuOFY1LjJMMC45OTk5NyA1LjI1MDMzQzAuOTk5NzUyIDUuNDc4NzggMC45OTk1NjQgNS42NzU3MiAxLjA0MTQ1IDUuODUwMTdDMS4xNzMxMiA2LjM5ODY0IDEuNjAxMzYgNi44MjY4OCAyLjE0OTgzIDYuOTU4NTZDMi4zMjQyOSA3LjAwMDQ0IDIuNTIxMjIgNy4wMDAyNSAyLjc0OTY3IDcuMDAwMDNMMi44IDdINS4yTDUuMjUwMzMgNy4wMDAwM0M1LjQ3ODc4IDcuMDAwMjUgNS42NzU3MiA3LjAwMDQ0IDUuODUwMTcgNi45NTg1NkM2LjM5ODY0IDYuODI2ODggNi44MjY4OCA2LjM5ODY0IDYuOTU4NTYgNS44NTAxN0M3LjAwMDQ0IDUuNjc1NzIgNy4wMDAyNSA1LjQ3ODc4IDcuMDAwMDMgNS4yNTAzM0w3IDUuMlYyLjhMNy4wMDAwMyAyLjc0OTY3QzcuMDAwMjUgMi41MjEyMiA3LjAwMDQ0IDIuMzI0MjkgNi45NTg1NiAyLjE0OTgzQzYuODI2ODggMS42MDEzNiA2LjM5ODY0IDEuMTczMTIgNS44NTAxNyAxLjA0MTQ1QzUuNjc1NzIgMC45OTk1NjQgNS40Nzg3OCAwLjk5OTc1MiA1LjI1MDMzIDAuOTk5OTdMNS4yIDFIMi44Wk0yLjM4MzI4IDIuMDEzODJDMi40MjYzMiAyLjAwMzQ4IDIuNDkyMjIgMiAyLjggMkg1LjJDNS41MDc3OSAyIDUuNTczNjkgMi4wMDM0OCA1LjYxNjcyIDIuMDEzODJDNS43OTk1NSAyLjA1NzcxIDUuOTQyMjkgMi4yMDA0NSA1Ljk4NjE5IDIuMzgzMjhDNS45OTY1MiAyLjQyNjMyIDYgMi40OTIyMiA2IDIuOFY1LjJDNiA1LjUwNzc5IDUuOTk2NTIgNS41NzM2OSA1Ljk4NjE5IDUuNjE2NzJDNS45NDIyOSA1Ljc5OTU1IDUuNzk5NTUgNS45NDIyOSA1LjYxNjcyIDUuOTg2MTlDNS41NzM2OSA1Ljk5NjUyIDUuNTA3NzkgNiA1LjIgNkgyLjhDMi40OTIyMiA2IDIuNDI2MzIgNS45OTY1MiAyLjM4MzI4IDUuOTg2MTlDMi4yMDA0NSA1Ljk0MjI5IDIuMDU3NzEgNS43OTk1NSAyLjAxMzgyIDUuNjE2NzJDMi4wMDM0OCA1LjU3MzY5IDIgNS41MDc3OSAyIDUuMlYyLjhDMiAyLjQ5MjIyIDIuMDAzNDggMi40MjYzMiAyLjAxMzgyIDIuMzgzMjhDMi4wNTc3MSAyLjIwMDQ1IDIuMjAwNDUgMi4wNTc3MSAyLjM4MzI4IDIuMDEzODJaTTkuOCAxTDkuNzQ5NjcgMC45OTk5N0M5LjUyMTIyIDAuOTk5NzUyIDkuMzI0MjkgMC45OTk1NjQgOS4xNDk4MyAxLjA0MTQ1QzguNjAxMzYgMS4xNzMxMiA4LjE3MzEyIDEuNjAxMzYgOC4wNDE0NSAyLjE0OTgzQzcuOTk5NTYgMi4zMjQyOSA3Ljk5OTc1IDIuNTIxMjIgNy45OTk5NyAyLjc0OTY3TDggMi44VjUuMkw3Ljk5OTk3IDUuMjUwMzNDNy45OTk3NSA1LjQ3ODc4IDcuOTk5NTYgNS42NzU3MiA4LjA0MTQ1IDUuODUwMTdDOC4xNzMxMiA2LjM5ODY0IDguNjAxMzYgNi44MjY4OCA5LjE0OTgzIDYuOTU4NTZDOS4zMjQyOSA3LjAwMDQ0IDkuNTIxMjIgNy4wMDAyNSA5Ljc0OTY3IDcuMDAwMDNMOS44IDdIMTIuMkwxMi4yNTAzIDcuMDAwMDNDMTIuNDc4OCA3LjAwMDI1IDEyLjY3NTcgNy4wMDA0NCAxMi44NTAyIDYuOTU4NTZDMTMuMzk4NiA2LjgyNjg4IDEzLjgyNjkgNi4zOTg2NCAxMy45NTg2IDUuODUwMTdDMTQuMDAwNCA1LjY3NTcyIDE0LjAwMDMgNS40Nzg3OCAxNCA1LjI1MDMzTDE0IDUuMlYyLjhMMTQgMi43NDk2N0MxNC4wMDAzIDIuNTIxMjIgMTQuMDAwNCAyLjMyNDI5IDEzLjk1ODYgMi4xNDk4M0MxMy44MjY5IDEuNjAxMzYgMTMuMzk4NiAxLjE3MzEyIDEyLjg1MDIgMS4wNDE0NUMxMi42NzU3IDAuOTk5NTY0IDEyLjQ3ODggMC45OTk3NTIgMTIuMjUwMyAwLjk5OTk3TDEyLjIgMUg5LjhaTTkuMzgzMjggMi4wMTM4MkM5LjQyNjMyIDIuMDAzNDggOS40OTIyMiAyIDkuOCAySDEyLjJDMTIuNTA3OCAyIDEyLjU3MzcgMi4wMDM0OCAxMi42MTY3IDIuMDEzODJDMTIuNzk5NSAyLjA1NzcxIDEyLjk0MjMgMi4yMDA0NSAxMi45ODYyIDIuMzgzMjhDMTIuOTk2NSAyLjQyNjMyIDEzIDIuNDkyMjIgMTMgMi44VjUuMkMxMyA1LjUwNzc5IDEyLjk5NjUgNS41NzM2OSAxMi45ODYyIDUuNjE2NzJDMTIuOTQyMyA1Ljc5OTU1IDEyLjc5OTUgNS45NDIyOSAxMi42MTY3IDUuOTg2MTlDMTIuNTczNyA1Ljk5NjUyIDEyLjUwNzggNiAxMi4yIDZIOS44QzkuNDkyMjIgNiA5LjQyNjMyIDUuOTk2NTIgOS4zODMyOCA1Ljk4NjE5QzkuMjAwNDUgNS45NDIyOSA5LjA1NzcxIDUuNzk5NTUgOS4wMTM4MiA1LjYxNjcyQzkuMDAzNDggNS41NzM2OSA5IDUuNTA3NzkgOSA1LjJWMi44QzkgMi40OTIyMiA5LjAwMzQ4IDIuNDI2MzIgOS4wMTM4MiAyLjM4MzI4QzkuMDU3NzEgMi4yMDA0NSA5LjIwMDQ1IDIuMDU3NzEgOS4zODMyOCAyLjAxMzgyWk0yLjc0OTY3IDcuOTk5OTdMMi44IDhINS4yTDUuMjUwMzMgNy45OTk5N0M1LjQ3ODc4IDcuOTk5NzUgNS42NzU3MiA3Ljk5OTU2IDUuODUwMTcgOC4wNDE0NUM2LjM5ODY0IDguMTczMTIgNi44MjY4OCA4LjYwMTM2IDYuOTU4NTYgOS4xNDk4M0M3LjAwMDQ0IDkuMzI0MjkgNy4wMDAyNSA5LjUyMTIyIDcuMDAwMDMgOS43NDk2N0w3IDkuOFYxMi4yTDcuMDAwMDMgMTIuMjUwM0M3LjAwMDI1IDEyLjQ3ODggNy4wMDA0NCAxMi42NzU3IDYuOTU4NTYgMTIuODUwMkM2LjgyNjg4IDEzLjM5ODYgNi4zOTg2NCAxMy44MjY5IDUuODUwMTcgMTMuOTU4NkM1LjY3NTcyIDE0LjAwMDQgNS40Nzg3OCAxNC4wMDAzIDUuMjUwMzMgMTRMNS4yIDE0SDIuOEwyLjc0OTY3IDE0QzIuNTIxMjIgMTQuMDAwMyAyLjMyNDI5IDE0LjAwMDQgMi4xNDk4MyAxMy45NTg2QzEuNjAxMzYgMTMuODI2OSAxLjE3MzEyIDEzLjM5ODYgMS4wNDE0NSAxMi44NTAyQzAuOTk5NTY0IDEyLjY3NTcgMC45OTk3NTIgMTIuNDc4OCAwLjk5OTk3IDEyLjI1MDNMMSAxMi4yVjkuOEwwLjk5OTk3IDkuNzQ5NjdDMC45OTk3NTIgOS41MjEyMiAwLjk5OTU2NCA5LjMyNDI5IDEuMDQxNDUgOS4xNDk4M0MxLjE3MzEyIDguNjAxMzYgMS42MDEzNiA4LjE3MzEyIDIuMTQ5ODMgOC4wNDE0NUMyLjMyNDI5IDcuOTk5NTYgMi41MjEyMiA3Ljk5OTc1IDIuNzQ5NjcgNy45OTk5N1pNMi44IDlDMi40OTIyMiA5IDIuNDI2MzIgOS4wMDM0OCAyLjM4MzI4IDkuMDEzODJDMi4yMDA0NSA5LjA1NzcxIDIuMDU3NzEgOS4yMDA0NSAyLjAxMzgyIDkuMzgzMjhDMi4wMDM0OCA5LjQyNjMyIDIgOS40OTIyMiAyIDkuOFYxMi4yQzIgMTIuNTA3OCAyLjAwMzQ4IDEyLjU3MzcgMi4wMTM4MiAxMi42MTY3QzIuMDU3NzEgMTIuNzk5NSAyLjIwMDQ1IDEyLjk0MjMgMi4zODMyOCAxMi45ODYyQzIuNDI2MzIgMTIuOTk2NSAyLjQ5MjIyIDEzIDIuOCAxM0g1LjJDNS41MDc3OSAxMyA1LjU3MzY5IDEyLjk5NjUgNS42MTY3MiAxMi45ODYyQzUuNzk5NTUgMTIuOTQyMyA1Ljk0MjI5IDEyLjc5OTUgNS45ODYxOSAxMi42MTY3QzUuOTk2NTIgMTIuNTczNyA2IDEyLjUwNzggNiAxMi4yVjkuOEM2IDkuNDkyMjIgNS45OTY1MiA5LjQyNjMyIDUuOTg2MTkgOS4zODMyOEM1Ljk0MjI5IDkuMjAwNDUgNS43OTk1NSA5LjA1NzcxIDUuNjE2NzIgOS4wMTM4MkM1LjU3MzY5IDkuMDAzNDggNS41MDc3OSA5IDUuMiA5SDIuOFpNOS44IDhMOS43NDk2NyA3Ljk5OTk3QzkuNTIxMjIgNy45OTk3NSA5LjMyNDI5IDcuOTk5NTYgOS4xNDk4MyA4LjA0MTQ1QzguNjAxMzYgOC4xNzMxMiA4LjE3MzEyIDguNjAxMzYgOC4wNDE0NSA5LjE0OTgzQzcuOTk5NTYgOS4zMjQyOSA3Ljk5OTc1IDkuNTIxMjIgNy45OTk5NyA5Ljc0OTY3TDggOS44VjEyLjJMNy45OTk5NyAxMi4yNTAzQzcuOTk5NzUgMTIuNDc4OCA3Ljk5OTU2IDEyLjY3NTcgOC4wNDE0NSAxMi44NTAyQzguMTczMTIgMTMuMzk4NiA4LjYwMTM2IDEzLjgyNjkgOS4xNDk4MyAxMy45NTg2QzkuMzI0MjkgMTQuMDAwNCA5LjUyMTIyIDE0LjAwMDMgOS43NDk2NyAxNEw5LjggMTRIMTIuMkwxMi4yNTAzIDE0QzEyLjQ3ODggMTQuMDAwMyAxMi42NzU3IDE0LjAwMDQgMTIuODUwMiAxMy45NTg2QzEzLjM5ODYgMTMuODI2OSAxMy44MjY5IDEzLjM5ODYgMTMuOTU4NiAxMi44NTAyQzE0LjAwMDQgMTIuNjc1NyAxNC4wMDAzIDEyLjQ3ODggMTQgMTIuMjUwM0wxNCAxMi4yVjkuOEwxNCA5Ljc0OTY3QzE0LjAwMDMgOS41MjEyMiAxNC4wMDA0IDkuMzI0MjkgMTMuOTU4NiA5LjE0OTgzQzEzLjgyNjkgOC42MDEzNiAxMy4zOTg2IDguMTczMTIgMTIuODUwMiA4LjA0MTQ1QzEyLjY3NTcgNy45OTk1NiAxMi40Nzg4IDcuOTk5NzUgMTIuMjUwMyA3Ljk5OTk3TDEyLjIgOEg5LjhaTTkuMzgzMjggOS4wMTM4MkM5LjQyNjMyIDkuMDAzNDggOS40OTIyMiA5IDkuOCA5SDEyLjJDMTIuNTA3OCA5IDEyLjU3MzcgOS4wMDM0OCAxMi42MTY3IDkuMDEzODJDMTIuNzk5NSA5LjA1NzcxIDEyLjk0MjMgOS4yMDA0NSAxMi45ODYyIDkuMzgzMjhDMTIuOTk2NSA5LjQyNjMyIDEzIDkuNDkyMjIgMTMgOS44VjEyLjJDMTMgMTIuNTA3OCAxMi45OTY1IDEyLjU3MzcgMTIuOTg2MiAxMi42MTY3QzEyLjk0MjMgMTIuNzk5NSAxMi43OTk1IDEyLjk0MjMgMTIuNjE2NyAxMi45ODYyQzEyLjU3MzcgMTIuOTk2NSAxMi41MDc4IDEzIDEyLjIgMTNIOS44QzkuNDkyMjIgMTMgOS40MjYzMiAxMi45OTY1IDkuMzgzMjggMTIuOTg2MkM5LjIwMDQ1IDEyLjk0MjMgOS4wNTc3MSAxMi43OTk1IDkuMDEzODIgMTIuNjE2N0M5LjAwMzQ4IDEyLjU3MzcgOSAxMi41MDc4IDkgMTIuMlY5LjhDOSA5LjQ5MjIyIDkuMDAzNDggOS40MjYzMiA5LjAxMzgyIDkuMzgzMjhDOS4wNTc3MSA5LjIwMDQ1IDkuMjAwNDUgOS4wNTc3MSA5LjM4MzI4IDkuMDEzODJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxxZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4wMDAxNCAyLjczODk1QzMuMDAwMTQgMi45NDY5OCAyLjc2MDg3IDMuMDY0MDEgMi41OTY2NiAyLjkzNjI4TDEuMDAzODYgMS42OTc0NEMwLjg3NTE3NyAxLjU5NzM1IDAuODc1MTc3IDEuNDAyODYgMS4wMDM4NiAxLjMwMjc3TDIuNTk2NjYgMC4wNjM5MjhDMi43NjA4NyAtMC4wNjM3OTQ0IDMuMDAwMTQgMC4wNTMyMjkzIDMuMDAwMTQgMC4yNjEyNjZWMS4wMDAxMkg5LjAwMDA5VjAuMjYxMjk2QzkuMDAwMDkgMC4wNTMyNTkxIDkuMjM5MzYgLTAuMDYzNzY0NiA5LjQwMzU4IDAuMDYzOTU3OEwxMC45OTY0IDEuMzAyOEMxMS4xMjUxIDEuNDAyODkgMTEuMTI1MSAxLjU5NzM4IDEwLjk5NjQgMS42OTc0N0w5LjQwMzU4IDIuOTM2MzFDOS4yMzkzNiAzLjA2NDA0IDkuMDAwMDkgMi45NDcwMSA5LjAwMDA5IDIuNzM4OThWMi4wMDAxMkgzLjAwMDE0VjIuNzM4OTVaTTkuNTAwMDIgNC45OTk5OEgyLjUwMDAyQzIuMjIzODggNC45OTk5OCAyLjAwMDAyIDUuMjIzODQgMi4wMDAwMiA1LjQ5OTk4VjEyLjVDMi4wMDAwMiAxMi43NzYxIDIuMjIzODggMTMgMi41MDAwMiAxM0g5LjUwMDAyQzkuNzc2MTYgMTMgMTAgMTIuNzc2MSAxMCAxMi41VjUuNDk5OThDMTAgNS4yMjM4NCA5Ljc3NjE2IDQuOTk5OTggOS41MDAwMiA0Ljk5OTk4Wk0yLjUwMDAyIDMuOTk5OThDMS42NzE1OSAzLjk5OTk4IDEuMDAwMDIgNC42NzE1NiAxLjAwMDAyIDUuNDk5OThWMTIuNUMxLjAwMDAyIDEzLjMyODQgMS42NzE1OSAxNCAyLjUwMDAyIDE0SDkuNTAwMDJDMTAuMzI4NCAxNCAxMSAxMy4zMjg0IDExIDEyLjVWNS40OTk5OEMxMSA0LjY3MTU2IDEwLjMyODQgMy45OTk5OCA5LjUwMDAyIDMuOTk5OThIMi41MDAwMlpNMTQuNzM4OSA2LjAwMDAxSDE0VjEySDE0LjczODlDMTQuOTQ2OSAxMiAxNS4wNjQgMTIuMjM5MyAxNC45MzYyIDEyLjQwMzVMMTMuNjk3NCAxMy45OTYzQzEzLjU5NzMgMTQuMTI1IDEzLjQwMjggMTQuMTI1IDEzLjMwMjcgMTMuOTk2M0wxMi4wNjM5IDEyLjQwMzVDMTEuOTM2MiAxMi4yMzkzIDEyLjA1MzIgMTIgMTIuMjYxMiAxMkgxM1Y2LjAwMDAxSDEyLjI2MTJDMTIuMDUzMiA2LjAwMDAxIDExLjkzNjEgNS43NjA3NCAxMi4wNjM5IDUuNTk2NTNMMTMuMzAyNyA0LjAwMzczQzEzLjQwMjggMy44NzUwNSAxMy41OTczIDMuODc1MDUgMTMuNjk3NCA0LjAwMzc0TDE0LjkzNjIgNS41OTY1M0MxNS4wNjM5IDUuNzYwNzQgMTQuOTQ2OSA2LjAwMDAxIDE0LjczODkgNi4wMDAwMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFllPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc3MDc1QzMuODQyMjIgMC44NzcwNzUgMC44NzcwNzUgMy44NDIyMiAwLjg3NzA3NSA3LjQ5OTkxQzAuODc3MDc1IDExLjE1NzYgMy44NDIyMiAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MxMS4xNTc2IDE0LjEyMjcgMTQuMTIyNyAxMS4xNTc2IDE0LjEyMjcgNy40OTk5MUMxNC4xMjI3IDMuODQyMjIgMTEuMTU3NiAwLjg3NzA3NSA3LjQ5OTkxIDAuODc3MDc1Wk0xLjgyNzA4IDcuNDk5OTFDMS44MjcwOCA0LjM2Njg5IDQuMzY2ODkgMS44MjcwNyA3LjQ5OTkxIDEuODI3MDdDMTAuNjMyOSAxLjgyNzA3IDEzLjE3MjcgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTFDMTMuMTcyNyAxMC42MzI5IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDNC4zNjY4OSAxMy4xNzI3IDEuODI3MDggMTAuNjMyOSAxLjgyNzA4IDcuNDk5OTFaTTguMzcyODcgNy41MDAwNkM4LjM3Mjg3IDcuOTgxOTYgNy45ODIyMSA4LjM3MjYzIDcuNTAwMyA4LjM3MjYzQzcuMDE4MzkgOC4zNzI2MyA2LjYyNzczIDcuOTgxOTYgNi42Mjc3MyA3LjUwMDA2QzYuNjI3NzMgNy4wMTgxNSA3LjAxODM5IDYuNjI3NDggNy41MDAzIDYuNjI3NDhDNy45ODIyMSA2LjYyNzQ4IDguMzcyODcgNy4wMTgxNSA4LjM3Mjg3IDcuNTAwMDZaTTkuMzIyODcgNy41MDAwNkM5LjMyMjg3IDguNTA2NjQgOC41MDY4OCA5LjMyMjYzIDcuNTAwMyA5LjMyMjYzQzYuNDkzNzIgOS4zMjI2MyA1LjY3NzczIDguNTA2NjQgNS42Nzc3MyA3LjUwMDA2QzUuNjc3NzMgNi40OTM0OCA2LjQ5MzcyIDUuNjc3NDggNy41MDAzIDUuNjc3NDhDOC41MDY4OCA1LjY3NzQ4IDkuMzIyODcgNi40OTM0OCA5LjMyMjg3IDcuNTAwMDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxLZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiA3LjVDMiA3LjIyMzg2IDIuMjIzODYgNyAyLjUgN0gxMi41QzEyLjc3NjEgNyAxMyA3LjIyMzg2IDEzIDcuNUMxMyA3Ljc3NjE0IDEyLjc3NjEgOCAxMi41IDhIMi41QzIuMjIzODYgOCAyIDcuNzc2MTQgMiA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxYZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDJDNy43NzYxNCAyIDggMi4yMjM4NiA4IDIuNUw4IDEyLjVDOCAxMi43NzYxIDcuNzc2MTQgMTMgNy41IDEzQzcuMjIzODYgMTMgNyAxMi43NzYxIDcgMTIuNUw3IDIuNUM3IDIuMjIzODYgNy4yMjM4NiAyIDcuNSAyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSA5LjEyNUM4LjM5NzQ2IDkuMTI1IDkuMTI1IDguMzk3NDYgOS4xMjUgNy41QzkuMTI1IDYuNjAyNTQgOC4zOTc0NiA1Ljg3NSA3LjUgNS44NzVDNi42MDI1NCA1Ljg3NSA1Ljg3NSA2LjYwMjU0IDUuODc1IDcuNUM1Ljg3NSA4LjM5NzQ2IDYuNjAyNTQgOS4xMjUgNy41IDkuMTI1Wk03LjUgMTAuMTI1QzguOTQ5NzUgMTAuMTI1IDEwLjEyNSA4Ljk0OTc1IDEwLjEyNSA3LjVDMTAuMTI1IDYuMDUwMjUgOC45NDk3NSA0Ljg3NSA3LjUgNC44NzVDNi4wNTAyNSA0Ljg3NSA0Ljg3NSA2LjA1MDI1IDQuODc1IDcuNUM0Ljg3NSA4Ljk0OTc1IDYuMDUwMjUgMTAuMTI1IDcuNSAxMC4xMjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxKZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOS44NzUgNy41QzkuODc1IDguODExNjggOC44MTE2OCA5Ljg3NSA3LjUgOS44NzVDNi4xODgzMiA5Ljg3NSA1LjEyNSA4LjgxMTY4IDUuMTI1IDcuNUM1LjEyNSA2LjE4ODMyIDYuMTg4MzIgNS4xMjUgNy41IDUuMTI1QzguODExNjggNS4xMjUgOS44NzUgNi4xODgzMiA5Ljg3NSA3LjVaXCIsZmlsbDpufSkpfSxldD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy42MjUgNy41QzMuNjI1IDguMTIxMzIgMy4xMjEzMiA4LjYyNSAyLjUgOC42MjVDMS44Nzg2OCA4LjYyNSAxLjM3NSA4LjEyMTMyIDEuMzc1IDcuNUMxLjM3NSA2Ljg3ODY4IDEuODc4NjggNi4zNzUgMi41IDYuMzc1QzMuMTIxMzIgNi4zNzUgMy42MjUgNi44Nzg2OCAzLjYyNSA3LjVaTTguNjI1IDcuNUM4LjYyNSA4LjEyMTMyIDguMTIxMzIgOC42MjUgNy41IDguNjI1QzYuODc4NjggOC42MjUgNi4zNzUgOC4xMjEzMiA2LjM3NSA3LjVDNi4zNzUgNi44Nzg2OCA2Ljg3ODY4IDYuMzc1IDcuNSA2LjM3NUM4LjEyMTMyIDYuMzc1IDguNjI1IDYuODc4NjggOC42MjUgNy41Wk0xMi41IDguNjI1QzEzLjEyMTMgOC42MjUgMTMuNjI1IDguMTIxMzIgMTMuNjI1IDcuNUMxMy42MjUgNi44Nzg2OCAxMy4xMjEzIDYuMzc1IDEyLjUgNi4zNzVDMTEuODc4NyA2LjM3NSAxMS4zNzUgNi44Nzg2OCAxMS4zNzUgNy41QzExLjM3NSA4LjEyMTMyIDExLjg3ODcgOC42MjUgMTIuNSA4LjYyNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHR0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjYyNSAyLjVDOC42MjUgMy4xMjEzMiA4LjEyMTMyIDMuNjI1IDcuNSAzLjYyNUM2Ljg3ODY4IDMuNjI1IDYuMzc1IDMuMTIxMzIgNi4zNzUgMi41QzYuMzc1IDEuODc4NjggNi44Nzg2OCAxLjM3NSA3LjUgMS4zNzVDOC4xMjEzMiAxLjM3NSA4LjYyNSAxLjg3ODY4IDguNjI1IDIuNVpNOC42MjUgNy41QzguNjI1IDguMTIxMzIgOC4xMjEzMiA4LjYyNSA3LjUgOC42MjVDNi44Nzg2OCA4LjYyNSA2LjM3NSA4LjEyMTMyIDYuMzc1IDcuNUM2LjM3NSA2Ljg3ODY4IDYuODc4NjggNi4zNzUgNy41IDYuMzc1QzguMTIxMzIgNi4zNzUgOC42MjUgNi44Nzg2OCA4LjYyNSA3LjVaTTcuNSAxMy42MjVDOC4xMjEzMiAxMy42MjUgOC42MjUgMTMuMTIxMyA4LjYyNSAxMi41QzguNjI1IDExLjg3ODcgOC4xMjEzMiAxMS4zNzUgNy41IDExLjM3NUM2Ljg3ODY4IDExLjM3NSA2LjM3NSAxMS44Nzg3IDYuMzc1IDEyLjVDNi4zNzUgMTMuMTIxMyA2Ljg3ODY4IDEzLjYyNSA3LjUgMTMuNjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuODUzNTUgMi4xNDY0NUMzLjY1ODI5IDEuOTUxMTggMy4zNDE3MSAxLjk1MTE4IDMuMTQ2NDUgMi4xNDY0NUMyLjk1MTE4IDIuMzQxNzEgMi45NTExOCAyLjY1ODI5IDMuMTQ2NDUgMi44NTM1NUw3LjE0NjQ1IDYuODUzNTVDNy4zNDE3MSA3LjA0ODgyIDcuNjU4MjkgNy4wNDg4MiA3Ljg1MzU1IDYuODUzNTVMMTEuODUzNiAyLjg1MzU1QzEyLjA0ODggMi42NTgyOSAxMi4wNDg4IDIuMzQxNzEgMTEuODUzNiAyLjE0NjQ1QzExLjY1ODMgMS45NTExOCAxMS4zNDE3IDEuOTUxMTggMTEuMTQ2NCAyLjE0NjQ1TDcuNSA1Ljc5Mjg5TDMuODUzNTUgMi4xNDY0NVpNMy44NTM1NSA4LjE0NjQ1QzMuNjU4MjkgNy45NTExOCAzLjM0MTcxIDcuOTUxMTggMy4xNDY0NSA4LjE0NjQ1QzIuOTUxMTggOC4zNDE3MSAyLjk1MTE4IDguNjU4MjkgMy4xNDY0NSA4Ljg1MzU1TDcuMTQ2NDUgMTIuODUzNkM3LjM0MTcxIDEzLjA0ODggNy42NTgyOSAxMy4wNDg4IDcuODUzNTUgMTIuODUzNkwxMS44NTM2IDguODUzNTVDMTIuMDQ4OCA4LjY1ODI5IDEyLjA0ODggOC4zNDE3MSAxMS44NTM2IDguMTQ2NDVDMTEuNjU4MyA3Ljk1MTE4IDExLjM0MTcgNy45NTExOCAxMS4xNDY0IDguMTQ2NDVMNy41IDExLjc5MjlMMy44NTM1NSA4LjE0NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuODUzNTUgMy44NTM1NUM3LjA0ODgyIDMuNjU4MjkgNy4wNDg4MiAzLjM0MTcxIDYuODUzNTUgMy4xNDY0NUM2LjY1ODI5IDIuOTUxMTggNi4zNDE3MSAyLjk1MTE4IDYuMTQ2NDUgMy4xNDY0NUwyLjE0NjQ1IDcuMTQ2NDVDMS45NTExOCA3LjM0MTcxIDEuOTUxMTggNy42NTgyOSAyLjE0NjQ1IDcuODUzNTVMNi4xNDY0NSAxMS44NTM2QzYuMzQxNzEgMTIuMDQ4OCA2LjY1ODI5IDEyLjA0ODggNi44NTM1NSAxMS44NTM2QzcuMDQ4ODIgMTEuNjU4MyA3LjA0ODgyIDExLjM0MTcgNi44NTM1NSAxMS4xNDY0TDMuMjA3MTEgNy41TDYuODUzNTUgMy44NTM1NVpNMTIuODUzNiAzLjg1MzU1QzEzLjA0ODggMy42NTgyOSAxMy4wNDg4IDMuMzQxNzEgMTIuODUzNiAzLjE0NjQ1QzEyLjY1ODMgMi45NTExOCAxMi4zNDE3IDIuOTUxMTggMTIuMTQ2NCAzLjE0NjQ1TDguMTQ2NDUgNy4xNDY0NUM3Ljk1MTE4IDcuMzQxNzEgNy45NTExOCA3LjY1ODI5IDguMTQ2NDUgNy44NTM1NUwxMi4xNDY0IDExLjg1MzZDMTIuMzQxNyAxMi4wNDg4IDEyLjY1ODMgMTIuMDQ4OCAxMi44NTM2IDExLjg1MzZDMTMuMDQ4OCAxMS42NTgzIDEzLjA0ODggMTEuMzQxNyAxMi44NTM2IDExLjE0NjRMOS4yMDcxMSA3LjVMMTIuODUzNiAzLjg1MzU1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sb3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuMTQ2NDUgMTEuMTQ2NEMxLjk1MTE4IDExLjM0MTcgMS45NTExOCAxMS42NTgzIDIuMTQ2NDUgMTEuODUzNkMyLjM0MTcxIDEyLjA0ODggMi42NTgyOSAxMi4wNDg4IDIuODUzNTUgMTEuODUzNkw2Ljg1MzU1IDcuODUzNTVDNy4wNDg4MiA3LjY1ODI5IDcuMDQ4ODIgNy4zNDE3MSA2Ljg1MzU1IDcuMTQ2NDVMMi44NTM1NSAzLjE0NjQ1QzIuNjU4MjkgMi45NTExOCAyLjM0MTcxIDIuOTUxMTggMi4xNDY0NSAzLjE0NjQ1QzEuOTUxMTggMy4zNDE3MSAxLjk1MTE4IDMuNjU4MjkgMi4xNDY0NSAzLjg1MzU1TDUuNzkyODkgNy41TDIuMTQ2NDUgMTEuMTQ2NFpNOC4xNDY0NSAxMS4xNDY0QzcuOTUxMTggMTEuMzQxNyA3Ljk1MTE4IDExLjY1ODMgOC4xNDY0NSAxMS44NTM2QzguMzQxNzEgMTIuMDQ4OCA4LjY1ODI5IDEyLjA0ODggOC44NTM1NSAxMS44NTM2TDEyLjg1MzYgNy44NTM1NUMxMy4wNDg4IDcuNjU4MjkgMTMuMDQ4OCA3LjM0MTcxIDEyLjg1MzYgNy4xNDY0NUw4Ljg1MzU1IDMuMTQ2NDVDOC42NTgyOSAyLjk1MTE4IDguMzQxNzEgMi45NTExOCA4LjE0NjQ1IDMuMTQ2NDVDNy45NTExOCAzLjM0MTcxIDcuOTUxMTggMy42NTgyOSA4LjE0NjQ1IDMuODUzNTVMMTEuNzkyOSA3LjVMOC4xNDY0NSAxMS4xNDY0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjE0NjQgNi44NTM1NUMxMS4zNDE3IDcuMDQ4ODIgMTEuNjU4MyA3LjA0ODgyIDExLjg1MzYgNi44NTM1NUMxMi4wNDg4IDYuNjU4MjkgMTIuMDQ4OCA2LjM0MTcxIDExLjg1MzYgNi4xNDY0NUw3Ljg1MzU1IDIuMTQ2NDVDNy42NTgyOSAxLjk1MTE4IDcuMzQxNzEgMS45NTExOCA3LjE0NjQ1IDIuMTQ2NDVMMy4xNDY0NSA2LjE0NjQ1QzIuOTUxMTggNi4zNDE3MSAyLjk1MTE4IDYuNjU4MjkgMy4xNDY0NSA2Ljg1MzU1QzMuMzQxNzEgNy4wNDg4MiAzLjY1ODI5IDcuMDQ4ODIgMy44NTM1NSA2Ljg1MzU1TDcuNSAzLjIwNzExTDExLjE0NjQgNi44NTM1NVpNMTEuMTQ2NCAxMi44NTM2QzExLjM0MTcgMTMuMDQ4OCAxMS42NTgzIDEzLjA0ODggMTEuODUzNiAxMi44NTM2QzEyLjA0ODggMTIuNjU4MyAxMi4wNDg4IDEyLjM0MTcgMTEuODUzNiAxMi4xNDY0TDcuODUzNTUgOC4xNDY0NUM3LjY1ODI5IDcuOTUxMTggNy4zNDE3MSA3Ljk1MTE4IDcuMTQ2NDUgOC4xNDY0NUwzLjE0NjQ1IDEyLjE0NjRDMi45NTExOCAxMi4zNDE3IDIuOTUxMTggMTIuNjU4MyAzLjE0NjQ1IDEyLjg1MzZDMy4zNDE3MSAxMy4wNDg4IDMuNjU4MjkgMTMuMDQ4OCAzLjg1MzU1IDEyLjg1MzZMNy41IDkuMjA3MTFMMTEuMTQ2NCAxMi44NTM2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNTAwMDUgMS4wNDk5OUM3Ljc0ODU4IDEuMDQ5OTkgNy45NTAwNSAxLjI1MTQ2IDcuOTUwMDUgMS40OTk5OVY4LjQxMzU5TDEwLjE4MTkgNi4xODE3OUMxMC4zNTc2IDYuMDA2MDUgMTAuNjQyNSA2LjAwNjA1IDEwLjgxODIgNi4xODE3OUMxMC45OTQgNi4zNTc1MyAxMC45OTQgNi42NDI0NSAxMC44MTgyIDYuODE4MTlMNy44MTgyNSA5LjgxODE5QzcuNjQyNTEgOS45OTM5MiA3LjM1NzU5IDkuOTkzOTIgNy4xODE4NSA5LjgxODE5TDQuMTgxODUgNi44MTgxOUM0LjAwNjExIDYuNjQyNDUgNC4wMDYxMSA2LjM1NzUzIDQuMTgxODUgNi4xODE3OUM0LjM1NzU5IDYuMDA2MDUgNC42NDI1MSA2LjAwNjA1IDQuODE4MjUgNi4xODE3OUw3LjA1MDA1IDguNDEzNTlWMS40OTk5OUM3LjA1MDA1IDEuMjUxNDYgNy4yNTE1MiAxLjA0OTk5IDcuNTAwMDUgMS4wNDk5OVpNMi41IDEwQzIuNzc2MTQgMTAgMyAxMC4yMjM5IDMgMTAuNVYxMkMzIDEyLjU1MzkgMy40NDU2NSAxMyAzLjk5NjM1IDEzSDExLjAwMTJDMTEuNTUyOSAxMyAxMiAxMi41NTI4IDEyIDEyVjEwLjVDMTIgMTAuMjIzOSAxMi4yMjM5IDEwIDEyLjUgMTBDMTIuNzc2MSAxMCAxMyAxMC4yMjM5IDEzIDEwLjVWMTJDMTMgMTMuMTA0MSAxMi4xMDYyIDE0IDExLjAwMTIgMTRIMy45OTYzNUMyLjg5MDE5IDE0IDIgMTMuMTAzIDIgMTJWMTAuNUMyIDEwLjIyMzkgMi4yMjM4NiAxMCAyLjUgMTBaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxsdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI0LjVcIixjeTpcIjIuNVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI0LjVcIixjeTpcIjQuNVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI0LjVcIixjeTpcIjYuNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjQuNVwiLGN5OlwiOC40OTlcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNC41XCIsY3k6XCIxMC40OThcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNC41XCIsY3k6XCIxMi40OThcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNi41XCIsY3k6XCIyLjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNi41XCIsY3k6XCI0LjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNi41XCIsY3k6XCI2LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI2LjVcIixjeTpcIjguNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjYuNVwiLGN5OlwiMTAuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjYuNVwiLGN5OlwiMTIuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjguNDk5XCIsY3k6XCIyLjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiOC40OTlcIixjeTpcIjQuNVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI4LjQ5OVwiLGN5OlwiNi40OTlcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiOC40OTlcIixjeTpcIjguNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjguNDk5XCIsY3k6XCIxMC40OThcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiOC40OTlcIixjeTpcIjEyLjQ5OFwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCIxMC40OTlcIixjeTpcIjIuNVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCIxMC40OTlcIixjeTpcIjQuNVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCIxMC40OTlcIixjeTpcIjYuNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjEwLjQ5OVwiLGN5OlwiOC40OTlcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiMTAuNDk5XCIsY3k6XCIxMC40OThcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiMTAuNDk5XCIsY3k6XCIxMi40OThcIixyOlwiLjZcIixmaWxsOm59KSl9LGN0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjUgNC42MjVDNi4xMjEzMiA0LjYyNSA2LjYyNSA0LjEyMTMyIDYuNjI1IDMuNUM2LjYyNSAyLjg3ODY4IDYuMTIxMzIgMi4zNzUgNS41IDIuMzc1QzQuODc4NjggMi4zNzUgNC4zNzUgMi44Nzg2OCA0LjM3NSAzLjVDNC4zNzUgNC4xMjEzMiA0Ljg3ODY4IDQuNjI1IDUuNSA0LjYyNVpNOS41IDQuNjI1QzEwLjEyMTMgNC42MjUgMTAuNjI1IDQuMTIxMzIgMTAuNjI1IDMuNUMxMC42MjUgMi44Nzg2OCAxMC4xMjEzIDIuMzc1IDkuNSAyLjM3NUM4Ljg3ODY4IDIuMzc1IDguMzc1IDIuODc4NjggOC4zNzUgMy41QzguMzc1IDQuMTIxMzIgOC44Nzg2OCA0LjYyNSA5LjUgNC42MjVaTTEwLjYyNSA3LjVDMTAuNjI1IDguMTIxMzIgMTAuMTIxMyA4LjYyNSA5LjUgOC42MjVDOC44Nzg2OCA4LjYyNSA4LjM3NSA4LjEyMTMyIDguMzc1IDcuNUM4LjM3NSA2Ljg3ODY4IDguODc4NjggNi4zNzUgOS41IDYuMzc1QzEwLjEyMTMgNi4zNzUgMTAuNjI1IDYuODc4NjggMTAuNjI1IDcuNVpNNS41IDguNjI1QzYuMTIxMzIgOC42MjUgNi42MjUgOC4xMjEzMiA2LjYyNSA3LjVDNi42MjUgNi44Nzg2OCA2LjEyMTMyIDYuMzc1IDUuNSA2LjM3NUM0Ljg3ODY4IDYuMzc1IDQuMzc1IDYuODc4NjggNC4zNzUgNy41QzQuMzc1IDguMTIxMzIgNC44Nzg2OCA4LjYyNSA1LjUgOC42MjVaTTEwLjYyNSAxMS41QzEwLjYyNSAxMi4xMjEzIDEwLjEyMTMgMTIuNjI1IDkuNSAxMi42MjVDOC44Nzg2OCAxMi42MjUgOC4zNzUgMTIuMTIxMyA4LjM3NSAxMS41QzguMzc1IDEwLjg3ODcgOC44Nzg2OCAxMC4zNzUgOS41IDEwLjM3NUMxMC4xMjEzIDEwLjM3NSAxMC42MjUgMTAuODc4NyAxMC42MjUgMTEuNVpNNS41IDEyLjYyNUM2LjEyMTMyIDEyLjYyNSA2LjYyNSAxMi4xMjEzIDYuNjI1IDExLjVDNi42MjUgMTAuODc4NyA2LjEyMTMyIDEwLjM3NSA1LjUgMTAuMzc1QzQuODc4NjggMTAuMzc1IDQuMzc1IDEwLjg3ODcgNC4zNzUgMTEuNUM0LjM3NSAxMi4xMjEzIDQuODc4NjggMTIuNjI1IDUuNSAxMi42MjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxzdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi40OTk5OCA0LjA5OTk4QzIuMjc5MDYgNC4wOTk5OCAyLjA5OTk4IDQuMjc5MDYgMi4wOTk5OCA0LjQ5OTk4QzIuMDk5OTggNC43MjA4OSAyLjI3OTA2IDQuODk5OTggMi40OTk5OCA0Ljg5OTk4SDEyLjVDMTIuNzIwOSA0Ljg5OTk4IDEyLjkgNC43MjA4OSAxMi45IDQuNDk5OThDMTIuOSA0LjI3OTA2IDEyLjcyMDkgNC4wOTk5OCAxMi41IDQuMDk5OThIMi40OTk5OFpNMi40OTk5OCA2LjA5OTk4QzIuMjc5MDYgNi4wOTk5OCAyLjA5OTk4IDYuMjc5MDYgMi4wOTk5OCA2LjQ5OTk4QzIuMDk5OTggNi43MjA4OSAyLjI3OTA2IDYuODk5OTggMi40OTk5OCA2Ljg5OTk4SDEyLjVDMTIuNzIwOSA2Ljg5OTk4IDEyLjkgNi43MjA4OSAxMi45IDYuNDk5OThDMTIuOSA2LjI3OTA2IDEyLjcyMDkgNi4wOTk5OCAxMi41IDYuMDk5OThIMi40OTk5OFpNMi4wOTk5OCA4LjQ5OTk4QzIuMDk5OTggOC4yNzkwNiAyLjI3OTA2IDguMDk5OTggMi40OTk5OCA4LjA5OTk4SDEyLjVDMTIuNzIwOSA4LjA5OTk4IDEyLjkgOC4yNzkwNiAxMi45IDguNDk5OThDMTIuOSA4LjcyMDg5IDEyLjcyMDkgOC44OTk5OCAxMi41IDguODk5OThIMi40OTk5OEMyLjI3OTA2IDguODk5OTggMi4wOTk5OCA4LjcyMDg5IDIuMDk5OTggOC40OTk5OFpNMi40OTk5OCAxMC4xQzIuMjc5MDYgMTAuMSAyLjA5OTk4IDEwLjI3OTEgMi4wOTk5OCAxMC41QzIuMDk5OTggMTAuNzIwOSAyLjI3OTA2IDEwLjkgMi40OTk5OCAxMC45SDEyLjVDMTIuNzIwOSAxMC45IDEyLjkgMTAuNzIwOSAxMi45IDEwLjVDMTIuOSAxMC4yNzkxIDEyLjcyMDkgMTAuMSAxMi41IDEwLjFIMi40OTk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHV0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjA5OTk4IDEyLjVDNC4wOTk5OCAxMi43MjA5IDQuMjc5MDYgMTIuOSA0LjQ5OTk4IDEyLjlDNC43MjA4OSAxMi45IDQuODk5OTggMTIuNzIwOSA0Ljg5OTk4IDEyLjVMNC44OTk5OCAyLjUwMDAyQzQuODk5OTggMi4yNzkxMSA0LjcyMDg5IDIuMTAwMDMgNC40OTk5OCAyLjEwMDAzQzQuMjc5MDYgMi4xMDAwMyA0LjA5OTk4IDIuMjc5MTEgNC4wOTk5OCAyLjUwMDAyTDQuMDk5OTggMTIuNVpNNi4wOTk5OCAxMi41QzYuMDk5OTggMTIuNzIwOSA2LjI3OTA2IDEyLjkgNi40OTk5OCAxMi45QzYuNzIwODkgMTIuOSA2Ljg5OTk4IDEyLjcyMDkgNi44OTk5OCAxMi41TDYuODk5OTggMi41MDAwMkM2Ljg5OTk4IDIuMjc5MTEgNi43MjA4OSAyLjEwMDAzIDYuNDk5OTggMi4xMDAwM0M2LjI3OTA2IDIuMTAwMDMgNi4wOTk5OCAyLjI3OTExIDYuMDk5OTggMi41MDAwMkw2LjA5OTk4IDEyLjVaTTguNDk5OTggMTIuOUM4LjI3OTA2IDEyLjkgOC4wOTk5OCAxMi43MjA5IDguMDk5OTggMTIuNUw4LjA5OTk4IDIuNTAwMDJDOC4wOTk5OCAyLjI3OTExIDguMjc5MDYgMi4xMDAwMiA4LjQ5OTk4IDIuMTAwMDJDOC43MjA4OSAyLjEwMDAyIDguODk5OTggMi4yNzkxMSA4Ljg5OTk4IDIuNTAwMDJMOC44OTk5OCAxMi41QzguODk5OTggMTIuNzIwOSA4LjcyMDg5IDEyLjkgOC40OTk5OCAxMi45Wk0xMC4xIDEyLjVDMTAuMSAxMi43MjA5IDEwLjI3OTEgMTIuOSAxMC41IDEyLjlDMTAuNzIwOSAxMi45IDEwLjkgMTIuNzIwOSAxMC45IDEyLjVMMTAuOSAyLjUwMDAyQzEwLjkgMi4yNzkxMSAxMC43MjA5IDIuMTAwMDIgMTAuNSAyLjEwMDAyQzEwLjI3OTEgMi4xMDAwMiAxMC4xIDIuMjc5MTEgMTAuMSAyLjUwMDAyTDEwLjEgMTIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGR0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMC4zMjg1IDEuMTM2MDdDMTAuMTMzMiAwLjk0MDgwOSA5LjgxNjYyIDAuOTQwODA4IDkuNjIxMzYgMS4xMzYwN0M5LjQyNjA5IDEuMzMxMzMgOS40MjYwOSAxLjY0NzkyIDkuNjIxMzYgMS44NDMxOEwxMC4yNzQ0IDIuNDk2MTlMNS40MjU2MyA2LjEzMjc0TDQuMzE4MDUgNS4wMjUxNkM0LjEyMjc5IDQuODI5OSAzLjgwNjIxIDQuODI5OSAzLjYxMDk1IDUuMDI1MTZDMy40MTU2OSA1LjIyMDQyIDMuNDE1NjkgNS41MzcgMy42MTA5NSA1LjczMjI2TDUuMDI1MTYgNy4xNDY0OEw2LjA4NTgyIDguMjA3MTRMMi44MTU0NSAxMS40Nzc1QzIuNjIwMTkgMTEuNjcyOCAyLjYyMDE5IDExLjk4OTQgMi44MTU0NSAxMi4xODQ2QzMuMDEwNzIgMTIuMzc5OSAzLjMyNzMgMTIuMzc5OSAzLjUyMjU2IDEyLjE4NDZMNi43OTI5MyA4LjkxNDI1TDcuODUzNTkgOS45NzQ5MUw5LjI2NzggMTEuMzg5MUM5LjQ2MzA2IDExLjU4NDQgOS43Nzk2NSAxMS41ODQ0IDkuOTc0OTEgMTEuMzg5MUMxMC4xNzAyIDExLjE5MzkgMTAuMTcwMiAxMC44NzczIDkuOTc0OTEgMTAuNjgyTDguODY3MzMgOS41NzQ0M0wxMi41MDM5IDQuNzI1N0wxMy4xNTY5IDUuMzc4NzFDMTMuMzUyMiA1LjU3Mzk3IDEzLjY2ODcgNS41NzM5NyAxMy44NjQgNS4zNzg3MUMxNC4wNTkzIDUuMTgzNDUgMTQuMDU5MyA0Ljg2Njg3IDEzLjg2NCA0LjY3MTZMMTIuODAzMyAzLjYxMDk0TDExLjM4OTEgMi4xOTY3M0wxMC4zMjg1IDEuMTM2MDdaTTYuMTM5OTIgNi44NDcwMkwxMC45ODg3IDMuMjEwNDdMMTEuNzg5NiA0LjAxMTQyTDguMTUzMDUgOC44NjAxNUw2LjEzOTkyIDYuODQ3MDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxmdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOS42MjEyOSAxLjEzNjA3QzkuODE2NTYgMC45NDA4MDggMTAuMTMzMSAwLjk0MDgwOSAxMC4zMjg0IDEuMTM2MDdMMTEuMzg5MSAyLjE5NjczTDEyLjgwMzMgMy42MTA5NEwxMy44NjM5IDQuNjcxNkMxNC4wNTkyIDQuODY2ODcgMTQuMDU5MiA1LjE4MzQ1IDEzLjg2MzkgNS4zNzg3MUMxMy42Njg3IDUuNTczOTcgMTMuMzUyMSA1LjU3Mzk3IDEzLjE1NjggNS4zNzg3MUwxMi41MDM4IDQuNzI1N0w4Ljg2NzI3IDkuNTc0NDNMOS45NzQ4NSAxMC42ODJDMTAuMTcwMSAxMC44NzczIDEwLjE3MDEgMTEuMTkzOSA5Ljk3NDg1IDExLjM4OTFDOS43Nzk1OSAxMS41ODQ0IDkuNDYzIDExLjU4NDQgOS4yNjc3NCAxMS4zODkxTDcuODUzNTMgOS45NzQ5MUw2Ljc5Mjg3IDguOTE0MjVMMy41MjI1IDEyLjE4NDZDMy4zMjcyNCAxMi4zNzk5IDMuMDEwNjUgMTIuMzc5OSAyLjgxNTM5IDEyLjE4NDZDMi42MjAxMyAxMS45ODk0IDIuNjIwMTMgMTEuNjcyOCAyLjgxNTM5IDExLjQ3NzVMNi4wODU3NiA4LjIwNzE0TDUuMDI1MSA3LjE0NjQ4TDMuNjEwODkgNS43MzIyNkMzLjQxNTYzIDUuNTM3IDMuNDE1NjIgNS4yMjA0MiAzLjYxMDg5IDUuMDI1MTZDMy44MDYxNSA0LjgyOTkgNC4xMjI3MyA0LjgyOTkgNC4zMTc5OSA1LjAyNTE2TDUuNDI1NTcgNi4xMzI3NEwxMC4yNzQzIDIuNDk2MTlMOS42MjEyOSAxLjg0MzE4QzkuNDI2MDMgMS42NDc5MiA5LjQyNjAzIDEuMzMxMzMgOS42MjEyOSAxLjEzNjA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOS42MjEyOSAxLjEzNjA3QzkuODE2NTYgMC45NDA4MDggMTAuMTMzMSAwLjk0MDgwOSAxMC4zMjg0IDEuMTM2MDdMMTEuMzg5MSAyLjE5NjczTDEyLjgwMzMgMy42MTA5NEwxMy44NjM5IDQuNjcxNkMxNC4wNTkyIDQuODY2ODcgMTQuMDU5MiA1LjE4MzQ1IDEzLjg2MzkgNS4zNzg3MUMxMy42Njg3IDUuNTczOTcgMTMuMzUyMSA1LjU3Mzk3IDEzLjE1NjggNS4zNzg3MUwxMi41MDM4IDQuNzI1N0w4Ljg2NzI3IDkuNTc0NDNMOS45NzQ4NSAxMC42ODJDMTAuMTcwMSAxMC44NzczIDEwLjE3MDEgMTEuMTkzOSA5Ljk3NDg1IDExLjM4OTFDOS43Nzk1OSAxMS41ODQ0IDkuNDYzIDExLjU4NDQgOS4yNjc3NCAxMS4zODkxTDcuODUzNTMgOS45NzQ5MUw2Ljc5Mjg3IDguOTE0MjVMMy41MjI1IDEyLjE4NDZDMy4zMjcyNCAxMi4zNzk5IDMuMDEwNjUgMTIuMzc5OSAyLjgxNTM5IDEyLjE4NDZDMi42MjAxMyAxMS45ODk0IDIuNjIwMTMgMTEuNjcyOCAyLjgxNTM5IDExLjQ3NzVMNi4wODU3NiA4LjIwNzE0TDUuMDI1MSA3LjE0NjQ4TDMuNjEwODkgNS43MzIyNkMzLjQxNTYzIDUuNTM3IDMuNDE1NjIgNS4yMjA0MiAzLjYxMDg5IDUuMDI1MTZDMy44MDYxNSA0LjgyOTkgNC4xMjI3MyA0LjgyOTkgNC4zMTc5OSA1LjAyNTE2TDUuNDI1NTcgNi4xMzI3NEwxMC4yNzQzIDIuNDk2MTlMOS42MjEyOSAxLjg0MzE4QzkuNDI2MDMgMS42NDc5MiA5LjQyNjAzIDEuMzMxMzMgOS42MjEyOSAxLjEzNjA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTkgMy4wOTk5OEM3LjI3OTA3IDMuMDk5OTggNy4wOTk5OSAzLjI3OTA2IDcuMDk5OTkgMy40OTk5OEM3LjA5OTk5IDMuNzIwODkgNy4yNzkwNyAzLjg5OTk4IDcuNDk5OTkgMy44OTk5OEgxNC41QzE0LjcyMDkgMy44OTk5OCAxNC45IDMuNzIwODkgMTQuOSAzLjQ5OTk4QzE0LjkgMy4yNzkwNiAxNC43MjA5IDMuMDk5OTggMTQuNSAzLjA5OTk4SDcuNDk5OTlaTTcuNDk5OTggNS4xQzcuMjc5MDcgNS4xIDcuMDk5OTggNS4yNzkwOCA3LjA5OTk4IDUuNUM3LjA5OTk4IDUuNzIwOTEgNy4yNzkwNyA1LjkgNy40OTk5OCA1LjlIMTQuNUMxNC43MjA5IDUuOSAxNC45IDUuNzIwOTEgMTQuOSA1LjVDMTQuOSA1LjI3OTA4IDE0LjcyMDkgNS4xIDE0LjUgNS4xSDcuNDk5OThaTTcuMSA3LjVDNy4xIDcuMjc5MDggNy4yNzkwOSA3LjEgNy41IDcuMUgxNC41QzE0LjcyMDkgNy4xIDE0LjkgNy4yNzkwOCAxNC45IDcuNUMxNC45IDcuNzIwOTEgMTQuNzIwOSA3LjkgMTQuNSA3LjlINy41QzcuMjc5MDkgNy45IDcuMSA3LjcyMDkxIDcuMSA3LjVaTTcuNDk5OTggOS4xQzcuMjc5MDcgOS4xIDcuMDk5OTggOS4yNzkwOCA3LjA5OTk4IDkuNUM3LjA5OTk4IDkuNzIwOTEgNy4yNzkwNyA5LjkgNy40OTk5OCA5LjlIMTQuNUMxNC43MjA5IDkuOSAxNC45IDkuNzIwOTEgMTQuOSA5LjVDMTQuOSA5LjI3OTA4IDE0LjcyMDkgOS4xIDE0LjUgOS4xSDcuNDk5OThaTTcuMDk5OTggMTEuNUM3LjA5OTk4IDExLjI3OTEgNy4yNzkwNyAxMS4xIDcuNDk5OTggMTEuMUgxNC41QzE0LjcyMDkgMTEuMSAxNC45IDExLjI3OTEgMTQuOSAxMS41QzE0LjkgMTEuNzIwOSAxNC43MjA5IDExLjkgMTQuNSAxMS45SDcuNDk5OThDNy4yNzkwNyAxMS45IDcuMDk5OTggMTEuNzIwOSA3LjA5OTk4IDExLjVaTTIuNSA5LjI1MDAzTDUgNi4wMDAwM0gwTDIuNSA5LjI1MDAzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNSAxQzQuMjIzODYgMSA0IDEuMjIzODYgNCAxLjVDNCAxLjc3NjE0IDQuMjIzODYgMiA0LjUgMkgxMlYxM0g0LjVDNC4yMjM4NiAxMyA0IDEzLjIyMzkgNCAxMy41QzQgMTMuNzc2MSA0LjIyMzg2IDE0IDQuNSAxNEgxMkMxMi41NTIzIDE0IDEzIDEzLjU1MjMgMTMgMTNWMkMxMyAxLjQ0NzcyIDEyLjU1MjMgMSAxMiAxSDQuNVpNNi42MDM1NSA0Ljg5NjQ1QzYuNDA4MjkgNC43MDExOCA2LjA5MTcxIDQuNzAxMTggNS44OTY0NSA0Ljg5NjQ1QzUuNzAxMTggNS4wOTE3MSA1LjcwMTE4IDUuNDA4MjkgNS44OTY0NSA1LjYwMzU1TDcuMjkyODkgN0gwLjVDMC4yMjM4NTggNyAwIDcuMjIzODYgMCA3LjVDMCA3Ljc3NjE0IDAuMjIzODU4IDggMC41IDhINy4yOTI4OUw1Ljg5NjQ1IDkuMzk2NDVDNS43MDExOCA5LjU5MTcxIDUuNzAxMTggOS45MDgyOSA1Ljg5NjQ1IDEwLjEwMzZDNi4wOTE3MSAxMC4yOTg4IDYuNDA4MjkgMTAuMjk4OCA2LjYwMzU1IDEwLjEwMzZMOC44NTM1NSA3Ljg1MzU1QzkuMDQ4ODIgNy42NTgyOSA5LjA0ODgyIDcuMzQxNzEgOC44NTM1NSA3LjE0NjQ1TDYuNjAzNTUgNC44OTY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEN0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDIuNUMyIDIuMjIzODYgMi4yMjM4NiAyIDIuNSAySDUuNUM1Ljc3NjE0IDIgNiAyLjIyMzg2IDYgMi41QzYgMi43NzYxNCA1Ljc3NjE0IDMgNS41IDNIM1Y1LjVDMyA1Ljc3NjE0IDIuNzc2MTQgNiAyLjUgNkMyLjIyMzg2IDYgMiA1Ljc3NjE0IDIgNS41VjIuNVpNOSAyLjVDOSAyLjIyMzg2IDkuMjIzODYgMiA5LjUgMkgxMi41QzEyLjc3NjEgMiAxMyAyLjIyMzg2IDEzIDIuNVY1LjVDMTMgNS43NzYxNCAxMi43NzYxIDYgMTIuNSA2QzEyLjIyMzkgNiAxMiA1Ljc3NjE0IDEyIDUuNVYzSDkuNUM5LjIyMzg2IDMgOSAyLjc3NjE0IDkgMi41Wk0yLjUgOUMyLjc3NjE0IDkgMyA5LjIyMzg2IDMgOS41VjEySDUuNUM1Ljc3NjE0IDEyIDYgMTIuMjIzOSA2IDEyLjVDNiAxMi43NzYxIDUuNzc2MTQgMTMgNS41IDEzSDIuNUMyLjIyMzg2IDEzIDIgMTIuNzc2MSAyIDEyLjVWOS41QzIgOS4yMjM4NiAyLjIyMzg2IDkgMi41IDlaTTEyLjUgOUMxMi43NzYxIDkgMTMgOS4yMjM4NiAxMyA5LjVWMTIuNUMxMyAxMi43NzYxIDEyLjc3NjEgMTMgMTIuNSAxM0g5LjVDOS4yMjM4NiAxMyA5IDEyLjc3NjEgOSAxMi41QzkgMTIuMjIzOSA5LjIyMzg2IDEyIDkuNSAxMkgxMlY5LjVDMTIgOS4yMjM4NiAxMi4yMjM5IDkgMTIuNSA5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgMkMwLjQ0NzcxNSAyIDAgMi40NDc3MiAwIDNWMTJDMCAxMi41NTIzIDAuNDQ3NzE1IDEzIDEgMTNIMTRDMTQuNTUyMyAxMyAxNSAxMi41NTIzIDE1IDEyVjNDMTUgMi40NDc3MiAxNC41NTIzIDIgMTQgMkgxWk0xIDNMMTQgM1YzLjkyNDk0QzEzLjkxNzQgMy45MjQ4NiAxMy44MzM4IDMuOTQ3NTEgMTMuNzU4OSAzLjk5NTA1TDcuNSA3Ljk2NzAzTDEuMjQxMTIgMy45OTUwNUMxLjE2NjIxIDMuOTQ3NTEgMS4wODI2IDMuOTI0ODYgMSAzLjkyNDk0VjNaTTEgNC45MDc5N1YxMkgxNFY0LjkwNzk3TDcuNzQxMTIgOC44Nzk5NUM3LjU5Mzk0IDguOTczMzUgNy40MDYwNiA4Ljk3MzM1IDcuMjU4ODggOC44Nzk5NUwxIDQuOTA3OTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxndD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy45NDcyMSAwLjE2NDU5NEM3LjY2NTY5IDAuMDIzODI5OSA3LjMzNDMxIDAuMDIzODMwMiA3LjA1Mjc5IDAuMTY0NTk0TDAuNTUyNzg2IDMuNDE0NTlDMC4yMTQwMDIgMy41ODM5OSAwIDMuOTMwMjUgMCA0LjMwOTAyVjEyQzAgMTIuNTUyMyAwLjQ0NzcxNSAxMyAxIDEzSDE0QzE0LjU1MjMgMTMgMTUgMTIuNTUyMyAxNSAxMlY0LjMwOTAyQzE1IDMuOTMwMjUgMTQuNzg2IDMuNTgzOTkgMTQuNDQ3MiAzLjQxNDU5TDcuOTQ3MjEgMC4xNjQ1OTRaTTEzLjU2ODkgNC4wOTM0OUw3LjUgMS4wNTkwMkwxLjQzMTA1IDQuMDkzNDlMNy41IDcuMjkxMzZMMTMuNTY4OSA0LjA5MzQ5Wk0xIDQuODgzNjZWMTJIMTRWNC44ODM2Nkw3LjcwOTc3IDguMTk4MTNDNy41Nzg0OCA4LjI2NzMxIDcuNDIxNTIgOC4yNjczMSA3LjI5MDIzIDguMTk4MTNMMSA0Ljg4MzY2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguNDQ0OSAwLjYwODc2NUM4LjAxODMgLTAuMTA3MDE1IDYuOTgxNyAtMC4xMDcwMTUgNi41NTUwOSAwLjYwODc2NkwwLjE2MTE3OCAxMS4zMzY4Qy0wLjI3NTgyNCAxMi4wNyAwLjI1MjUwMyAxMyAxLjEwNjA4IDEzSDEzLjg5MzlDMTQuNzQ3NSAxMyAxNS4yNzU4IDEyLjA3IDE0LjgzODggMTEuMzM2OEw4LjQ0NDkgMC42MDg3NjVaTTcuNDE0MSAxLjEyMDczQzcuNDUyODggMS4wNTU2NiA3LjU0NzEyIDEuMDU1NjYgNy41ODU5IDEuMTIwNzNMMTMuOTc5OCAxMS44NDg4QzE0LjAxOTYgMTEuOTE1NCAxMy45NzE1IDEyIDEzLjg5MzkgMTJIMS4xMDYwOEMxLjAyODQ5IDEyIDAuOTgwNDU0IDExLjkxNTQgMS4wMjAxOCAxMS44NDg4TDcuNDE0MSAxLjEyMDczWk02LjgyNjkgNC40ODYxMUM2LjgxMjIxIDQuMTA0MjMgNy4xMTc4MyAzLjc4NjYzIDcuNSAzLjc4NjYzQzcuODgyMTcgMy43ODY2MyA4LjE4Nzc4IDQuMTA0MjMgOC4xNzMxIDQuNDg2MTJMOC4wMTkyMSA4LjQ4NzAxQzguMDA4NDggOC43NjYgNy43NzkyIDguOTg2NjQgNy41IDguOTg2NjRDNy4yMjA4IDguOTg2NjQgNi45OTE1MSA4Ljc2NiA2Ljk4MDc4IDguNDg3MDFMNi44MjY5IDQuNDg2MTFaTTguMjQ5ODkgMTAuNDc2QzguMjQ5ODkgMTAuODkwMiA3LjkxNDEgMTEuMjI2IDcuNDk5ODkgMTEuMjI2QzcuMDg1NjcgMTEuMjI2IDYuNzQ5ODkgMTAuODkwMiA2Ljc0OTg5IDEwLjQ3NkM2Ljc0OTg5IDEwLjA2MTggNy4wODU2NyA5LjcyNTk5IDcuNDk5ODkgOS43MjU5OUM3LjkxNDEgOS43MjU5OSA4LjI0OTg5IDEwLjA2MTggOC4yNDk4OSAxMC40NzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx3dD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyAxQzIuNDQ3NzEgMSAyIDEuNDQ3NzIgMiAyVjEzQzIgMTMuNTUyMyAyLjQ0NzcyIDE0IDMgMTRIMTAuNUMxMC43NzYxIDE0IDExIDEzLjc3NjEgMTEgMTMuNUMxMSAxMy4yMjM5IDEwLjc3NjEgMTMgMTAuNSAxM0gzVjJMMTAuNSAyQzEwLjc3NjEgMiAxMSAxLjc3NjE0IDExIDEuNUMxMSAxLjIyMzg2IDEwLjc3NjEgMSAxMC41IDFIM1pNMTIuNjAzNiA0Ljg5NjQ1QzEyLjQwODMgNC43MDExOCAxMi4wOTE3IDQuNzAxMTggMTEuODk2NCA0Ljg5NjQ1QzExLjcwMTIgNS4wOTE3MSAxMS43MDEyIDUuNDA4MjkgMTEuODk2NCA1LjYwMzU1TDEzLjI5MjkgN0g2LjVDNi4yMjM4NiA3IDYgNy4yMjM4NiA2IDcuNUM2IDcuNzc2MTQgNi4yMjM4NiA4IDYuNSA4SDEzLjI5MjlMMTEuODk2NCA5LjM5NjQ1QzExLjcwMTIgOS41OTE3MSAxMS43MDEyIDkuOTA4MjkgMTEuODk2NCAxMC4xMDM2QzEyLjA5MTcgMTAuMjk4OCAxMi40MDgzIDEwLjI5ODggMTIuNjAzNiAxMC4xMDM2TDE0Ljg1MzYgNy44NTM1NUMxNS4wNDg4IDcuNjU4MjkgMTUuMDQ4OCA3LjM0MTcxIDE0Ljg1MzYgNy4xNDY0NUwxMi42MDM2IDQuODk2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx5dD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS41IDJDNS43NzYxNCAyIDYgMi4yMjM4NiA2IDIuNVY1LjVDNiA1Ljc3NjE0IDUuNzc2MTQgNiA1LjUgNkgyLjVDMi4yMjM4NiA2IDIgNS43NzYxNCAyIDUuNUMyIDUuMjIzODYgMi4yMjM4NiA1IDIuNSA1SDVWMi41QzUgMi4yMjM4NiA1LjIyMzg2IDIgNS41IDJaTTkuNSAyQzkuNzc2MTQgMiAxMCAyLjIyMzg2IDEwIDIuNVY1SDEyLjVDMTIuNzc2MSA1IDEzIDUuMjIzODYgMTMgNS41QzEzIDUuNzc2MTQgMTIuNzc2MSA2IDEyLjUgNkg5LjVDOS4yMjM4NiA2IDkgNS43NzYxNCA5IDUuNVYyLjVDOSAyLjIyMzg2IDkuMjIzODYgMiA5LjUgMlpNMiA5LjVDMiA5LjIyMzg2IDIuMjIzODYgOSAyLjUgOUg1LjVDNS43NzYxNCA5IDYgOS4yMjM4NiA2IDkuNVYxMi41QzYgMTIuNzc2MSA1Ljc3NjE0IDEzIDUuNSAxM0M1LjIyMzg2IDEzIDUgMTIuNzc2MSA1IDEyLjVWMTBIMi41QzIuMjIzODYgMTAgMiA5Ljc3NjE0IDIgOS41Wk05IDkuNUM5IDkuMjIzODYgOS4yMjM4NiA5IDkuNSA5SDEyLjVDMTIuNzc2MSA5IDEzIDkuMjIzODYgMTMgOS41QzEzIDkuNzc2MTQgMTIuNzc2MSAxMCAxMi41IDEwSDEwVjEyLjVDMTAgMTIuNzc2MSA5Ljc3NjE0IDEzIDkuNSAxM0M5LjIyMzg2IDEzIDkgMTIuNzc2MSA5IDEyLjVWOS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgMkMyLjQ0NzcyIDIgMiAyLjQ0NzcyIDIgM1YxMkMyIDEyLjU1MjMgMi40NDc3MiAxMyAzIDEzSDEyQzEyLjU1MjMgMTMgMTMgMTIuNTUyMyAxMyAxMlY4LjVDMTMgOC4yMjM4NiAxMi43NzYxIDggMTIuNSA4QzEyLjIyMzkgOCAxMiA4LjIyMzg2IDEyIDguNVYxMkgzVjNMNi41IDNDNi43NzYxNCAzIDcgMi43NzYxNCA3IDIuNUM3IDIuMjIzODYgNi43NzYxNCAyIDYuNSAySDNaTTEyLjg1MzYgMi4xNDY0NUMxMi45MDE1IDIuMTk0MzkgMTIuOTM3NyAyLjI0OTY0IDEyLjk2MjEgMi4zMDg2MUMxMi45ODYxIDIuMzY2NjkgMTIuOTk5NiAyLjQzMDMgMTMgMi40OTdMMTMgMi41VjIuNTAwNDlWNS41QzEzIDUuNzc2MTQgMTIuNzc2MSA2IDEyLjUgNkMxMi4yMjM5IDYgMTIgNS43NzYxNCAxMiA1LjVWMy43MDcxMUw2Ljg1MzU1IDguODUzNTVDNi42NTgyOSA5LjA0ODgyIDYuMzQxNzEgOS4wNDg4MiA2LjE0NjQ1IDguODUzNTVDNS45NTExOCA4LjY1ODI5IDUuOTUxMTggOC4zNDE3MSA2LjE0NjQ1IDguMTQ2NDVMMTEuMjkyOSAzSDkuNUM5LjIyMzg2IDMgOSAyLjc3NjE0IDkgMi41QzkgMi4yMjM4NiA5LjIyMzg2IDIgOS41IDJIMTIuNDk5OUgxMi41QzEyLjU2NzggMiAxMi42MzI0IDIuMDEzNDkgMTIuNjkxNCAyLjAzNzk0QzEyLjc1MDQgMi4wNjIzNCAxMi44MDU2IDIuMDk4NTEgMTIuODUzNiAyLjE0NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0Ljc2NDkgNi4wNzU5NUMxNC45OTkxIDYuMjIyMzEgMTUuMDcwMyA2LjUzMDc4IDE0LjkyMzkgNi43NjQ5NUMxNC40ODQ5IDcuNDY3NDIgMTMuOTYzMiA4LjEwNjQ0IDEzLjM3MDIgOC42NjMwNEwxNC41NzEyIDkuODY0MDVDMTQuNzY2NCAxMC4wNTkzIDE0Ljc2NjQgMTAuMzc1OSAxNC41NzEyIDEwLjU3MTJDMTQuMzc1OSAxMC43NjY0IDE0LjA1OTMgMTAuNzY2NCAxMy44NjQxIDEwLjU3MTJMMTIuNjAxMSA5LjMwODE2QzExLjgwNDkgOS45MDI4MiAxMC45MDg5IDEwLjM2MjEgOS45MzM3NCAxMC42NTFMMTAuMzgzIDEyLjMyNzZDMTAuNDU0NCAxMi41OTQ0IDEwLjI5NjEgMTIuODY4NSAxMC4wMjk0IDEyLjk0QzkuNzYyNjYgMTMuMDExNSA5LjQ4ODUgMTIuODUzMiA5LjQxNzAzIDEyLjU4NjRMOC45NTkxNiAxMC44Nzc1QzguNDg3NDIgMTAuOTU4IDguMDAwMzUgMTAuOTk5OSA3LjUgMTAuOTk5OUM2Ljk5OTY0IDEwLjk5OTkgNi41MTI1NyAxMC45NTggNi4wNDA4MiAxMC44Nzc1TDUuNTgyOTkgMTIuNTg2NEM1LjUxMTUzIDEyLjg1MzIgNS4yMzczNyAxMy4wMTE1IDQuOTcwNjMgMTIuOTRDNC43MDM5IDEyLjg2ODUgNC41NDU2IDEyLjU5NDQgNC42MTcwNiAxMi4zMjc3TDUuMDY2MjQgMTAuNjUxQzQuMDkxMTEgMTAuMzYyMSAzLjE5NTAzIDkuOTAyODEgMi4zOTg5IDkuMzA4MTRMMS4xMzU5IDEwLjU3MTFDMC45NDA2MzggMTAuNzY2NCAwLjYyNDA1OCAxMC43NjY0IDAuNDI4Nzk3IDEwLjU3MTFDMC4yMzM1MzcgMTAuMzc1OSAwLjIzMzUzNyAxMC4wNTkzIDAuNDI4Nzk3IDkuODY0MDRMMS42Mjk4MiA4LjY2MzAyQzEuMDM2ODIgOC4xMDY0MyAwLjUxNTExMyA3LjQ2NzQyIDAuMDc2MDY3NyA2Ljc2NDk1Qy0wLjA3MDI4NjcgNi41MzA3OCAwLjAwMDg5ODU0NCA2LjIyMjMxIDAuMjM1MDY0IDYuMDc1OTVDMC40NjkyMyA1LjkyOTYgMC43Nzc3MDMgNi4wMDA3OCAwLjkyNDA1NyA2LjIzNDk1QzEuNDAzNTQgNy4wMDIxMiAxLjk4OSA3LjY4MDU2IDIuNjYyMzMgOC4yNDI3QzIuNjczMTUgOC4yNTA5NiAyLjY4MzcgOC4yNTk3MSAyLjY5Mzk3IDguMjY4OTdDNC4wMDg5NyA5LjM1NTI3IDUuNjU1MzYgOS45OTk5IDcuNSA5Ljk5OTlDMTAuMzA3OCA5Ljk5OTkgMTIuNjU2MyA4LjUwNjI5IDE0LjA3NTkgNi4yMzQ5NUMxNC4yMjIzIDYuMDAwNzggMTQuNTMwOCA1LjkyOTYgMTQuNzY0OSA2LjA3NTk1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sT3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjM1MzYgMi4zNTM1NUMxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAxLjg0MTcxIDEzLjM1MzYgMS42NDY0NUMxMy4xNTgzIDEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEyLjY0NjQgMS42NDY0NUwxMC42ODI4IDMuNjEwMTJDOS43MDY1MiAzLjIxNjcxIDguNjM3NTkgMyA3LjUgM0M0LjMwNzg2IDMgMS42NTYzOSA0LjcwNjM4IDAuMDc2MDAwMiA3LjIzNTAxQy0wLjAyNTMzMzggNy4zOTcxNSAtMC4wMjUzMzM0IDcuNjAyODggMC4wNzYwMDE0IDcuNzY1MDFDMC45MDI5NDUgOS4wODgxMiAyLjAyMzE0IDEwLjE4NjEgMy4zNjA2MSAxMC45MzIzTDEuNjQ2NDUgMTIuNjQ2NEMxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMy4xNTgzIDEuNjQ2NDUgMTMuMzUzNkMxLjg0MTcxIDEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDIuMzUzNTUgMTMuMzUzNkw0LjMxNzIzIDExLjM4OTlDNS4yOTM0OCAxMS43ODMzIDYuMzYyNDEgMTIgNy41IDEyQzEwLjY5MjEgMTIgMTMuMzQzNiAxMC4yOTM2IDE0LjkyNCA3Ljc2NTAxQzE1LjAyNTMgNy42MDI4OCAxNS4wMjUzIDcuMzk3MTUgMTQuOTI0IDcuMjM1MDFDMTQuMDk3MSA1LjkxMTkgMTIuOTc2OSA0LjgxMzkxIDExLjYzOTQgNC4wNjc3MUwxMy4zNTM2IDIuMzUzNTVaTTkuOTA0MjggNC4zODg2MUM5LjE1MzMyIDQuMTM2MSA4LjM0NzU5IDQgNy41IDRDNC44MDI4NSA0IDIuNTI5NTIgNS4zNzgxNiAxLjA5NjIyIDcuNTAwMDFDMS44NzI4NCA4LjY0OTcgMi44OTYwOSA5LjU4MTA2IDQuMDk5NzQgMTAuMTkzMUw5LjkwNDI4IDQuMzg4NjFaTTUuMDk1NzIgMTAuNjExNEwxMC45MDAzIDQuODA2ODVDMTIuMTAzOSA1LjQxODk0IDEzLjEyNzIgNi4zNTAzMSAxMy45MDM4IDcuNTAwMDFDMTIuNDcwNSA5LjYyMTgzIDEwLjE5NzEgMTEgNy41IDExQzYuNjUyNDEgMTEgNS44NDY2OCAxMC44NjM5IDUuMDk1NzIgMTAuNjExNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEx0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMTFDNC44MDI4NSAxMSAyLjUyOTUyIDkuNjIxODQgMS4wOTYyMiA3LjUwMDAxQzIuNTI5NTIgNS4zNzgxNiA0LjgwMjg1IDQgNy41IDRDMTAuMTk3MSA0IDEyLjQ3MDUgNS4zNzgxNiAxMy45MDM4IDcuNTAwMDFDMTIuNDcwNSA5LjYyMTgzIDEwLjE5NzEgMTEgNy41IDExWk03LjUgM0M0LjMwNzg2IDMgMS42NTYzOSA0LjcwNjM4IDAuMDc2MDAwMiA3LjIzNTAxQy0wLjAyNTMzMzggNy4zOTcxNSAtMC4wMjUzMzM0IDcuNjAyODggMC4wNzYwMDE0IDcuNzY1MDFDMS42NTYzOSAxMC4yOTM2IDQuMzA3ODYgMTIgNy41IDEyQzEwLjY5MjEgMTIgMTMuMzQzNiAxMC4yOTM2IDE0LjkyNCA3Ljc2NTAxQzE1LjAyNTMgNy42MDI4OCAxNS4wMjUzIDcuMzk3MTUgMTQuOTI0IDcuMjM1MDFDMTMuMzQzNiA0LjcwNjM4IDEwLjY5MjEgMyA3LjUgM1pNNy41IDkuNUM4LjYwNDU3IDkuNSA5LjUgOC42MDQ1NyA5LjUgNy41QzkuNSA2LjM5NTQzIDguNjA0NTcgNS41IDcuNSA1LjVDNi4zOTU0MyA1LjUgNS41IDYuMzk1NDMgNS41IDcuNUM1LjUgOC42MDQ1NyA2LjM5NTQzIDkuNSA3LjUgOS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzY4OTJDMy44NDIyMiAwLjg3Njg5MiAwLjg3NzA3NSAzLjg0MjA0IDAuODc3MDc1IDcuNDk5NzJDMC44NzcwNzUgMTEuMTU3NCAzLjg0MjIyIDE0LjEyMjYgNy40OTk5MSAxNC4xMjI2QzExLjE1NzYgMTQuMTIyNiAxNC4xMjI3IDExLjE1NzQgMTQuMTIyNyA3LjQ5OTcyQzE0LjEyMjcgMy44NDIwNCAxMS4xNTc2IDAuODc2ODkyIDcuNDk5OTEgMC44NzY4OTJaTTEuODI3MDggNy40OTk3MkMxLjgyNzA4IDQuMzY2NzEgNC4zNjY4OSAxLjgyNjg5IDcuNDk5OTEgMS44MjY4OUMxMC42MzI5IDEuODI2ODkgMTMuMTcyNyA0LjM2NjcxIDEzLjE3MjcgNy40OTk3MkMxMy4xNzI3IDEwLjYzMjcgMTAuNjMyOSAxMy4xNzI2IDcuNDk5OTEgMTMuMTcyNkM0LjM2Njg5IDEzLjE3MjYgMS44MjcwOCAxMC42MzI3IDEuODI3MDggNy40OTk3MlpNNS4wMzc0NyA5LjIxMzk1QzQuODc5NDkgOC45ODc0NiA0LjU2NzgyIDguOTMxOTMgNC4zNDEzMyA5LjA4OTkxQzQuMTE0ODQgOS4yNDc4OSA0LjA1OTMxIDkuNTU5NTYgNC4yMTcyOSA5Ljc4NjA1QzQuOTM5MjYgMTAuODIxMSA2LjE0MDMzIDExLjUgNy41MDAwNCAxMS41QzguODU5NzQgMTEuNSAxMC4wNjA4IDEwLjgyMTEgMTAuNzgyOCA5Ljc4NjA1QzEwLjk0MDggOS41NTk1NiAxMC44ODUyIDkuMjQ3ODkgMTAuNjU4NyA5LjA4OTkxQzEwLjQzMjMgOC45MzE5MyAxMC4xMjA2IDguOTg3NDYgOS45NjI2IDkuMjEzOTVDOS40MTk2MyA5Ljk5MjM4IDguNTE5MDcgMTAuNSA3LjUwMDA0IDEwLjVDNi40ODEgMTAuNSA1LjU4MDQ0IDkuOTkyMzggNS4wMzc0NyA5LjIxMzk1Wk01LjM3NTAzIDYuODQ5OThDNS44NTgyOCA2Ljg0OTk4IDYuMjUwMDMgNi40NTgxNSA2LjI1MDAzIDUuOTc0OThDNi4yNTAwMyA1LjQ5MTggNS44NTgyOCA1LjA5OTk4IDUuMzc1MDMgNS4wOTk5OEM0Ljg5MTc5IDUuMDk5OTggNC41MDAwMyA1LjQ5MTggNC41MDAwMyA1Ljk3NDk4QzQuNTAwMDMgNi40NTgxNSA0Ljg5MTc5IDYuODQ5OTggNS4zNzUwMyA2Ljg0OTk4Wk0xMC41IDUuOTc0OThDMTAuNSA2LjQ1ODE1IDEwLjEwODMgNi44NDk5OCA5LjYyNTAzIDYuODQ5OThDOS4xNDE3OSA2Ljg0OTk4IDguNzUwMDMgNi40NTgxNSA4Ljc1MDAzIDUuOTc0OThDOC43NTAwMyA1LjQ5MTggOS4xNDE3OSA1LjA5OTk4IDkuNjI1MDMgNS4wOTk5OEMxMC4xMDgzIDUuMDk5OTggMTAuNSA1LjQ5MTggMTAuNSA1Ljk3NDk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sU3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMDAwMDUgMi4wNDk5OUg1LjUyNTA1QzQuNzEwNDMgMi4wNDk5OSA0LjA1MDA1IDIuNzEwMzcgNC4wNTAwNSAzLjUyNDk5QzQuMDUwMDUgNC4zMzk2MSA0LjcxMDQzIDQuOTk5OTkgNS41MjUwNSA0Ljk5OTk5SDcuMDAwMDVWMi4wNDk5OVpNNy4wMDAwNSAxLjA0OTk5SDguMDAwMDVIOS40NzUwNUMxMC44NDIgMS4wNDk5OSAxMS45NSAyLjE1ODA4IDExLjk1IDMuNTI0OTlDMTEuOTUgNC4zMzE2MyAxMS41NjQyIDUuMDQ4MTUgMTAuOTY2OSA1LjQ5OTk5QzExLjU2NDIgNS45NTE4NCAxMS45NSA2LjY2ODM2IDExLjk1IDcuNDc1QzExLjk1IDguODQxOSAxMC44NDIgOS45NSA5LjQ3NTA1IDkuOTVDOC45MjIzNiA5Ljk1IDguNDExOTggOS43Njg4NCA4LjAwMDA1IDkuNDYyNjZWOS45NUw4LjAwMDA1IDExLjQyNUM4LjAwMDA1IDEyLjc5MTkgNi44OTE5NSAxMy45IDUuNTI1MDUgMTMuOUM0LjE1ODE0IDEzLjkgMy4wNTAwNSAxMi43OTE5IDMuMDUwMDUgMTEuNDI1QzMuMDUwMDUgMTAuNjE4MyAzLjQzNTkzIDkuOTAxODQgNC4wMzMxNyA5LjQ0OTk5QzMuNDM1OTMgOC45OTgxNCAzLjA1MDA1IDguMjgxNjMgMy4wNTAwNSA3LjQ3NUMzLjA1MDA1IDYuNjY4MzYgMy40MzU5NCA1Ljk1MTg0IDQuMDMzMTkgNS41QzMuNDM1OTQgNS4wNDgxNSAzLjA1MDA1IDQuMzMxNjMgMy4wNTAwNSAzLjUyNDk5QzMuMDUwMDUgMi4xNTgwOCA0LjE1ODE0IDEuMDQ5OTkgNS41MjUwNSAxLjA0OTk5SDcuMDAwMDVaTTguMDAwMDUgMi4wNDk5OVY0Ljk5OTk5SDkuNDc1MDVDMTAuMjg5NyA0Ljk5OTk5IDEwLjk1IDQuMzM5NjEgMTAuOTUgMy41MjQ5OUMxMC45NSAyLjcxMDM3IDEwLjI4OTcgMi4wNDk5OSA5LjQ3NTA1IDIuMDQ5OTlIOC4wMDAwNVpNNS41MjUwNSA4Ljk0OTk4SDcuMDAwMDVMNy4wMDAwNSA3LjQ3ODhMNy4wMDAwNSA3LjQ3NUw3LjAwMDA1IDcuNDcxMlY2SDUuNTI1MDVDNC43MTA0MyA2IDQuMDUwMDUgNi42NjAzOCA0LjA1MDA1IDcuNDc1QzQuMDUwMDUgOC4yODc2NyA0LjcwNzI3IDguOTQ2ODQgNS41MTkyIDguOTQ5OTlMNS41MjUwNSA4Ljk0OTk4Wk00LjA1MDA1IDExLjQyNUM0LjA1MDA1IDEwLjYxMjMgNC43MDcyNyA5Ljk1MzE1IDUuNTE5MiA5Ljk0OTk5TDUuNTI1MDUgOS45NUg3LjAwMDA1TDcuMDAwMDUgMTEuNDI1QzcuMDAwMDUgMTIuMjM5NiA2LjMzOTY3IDEyLjkgNS41MjUwNSAxMi45QzQuNzEwNDMgMTIuOSA0LjA1MDA1IDEyLjIzOTYgNC4wNTAwNSAxMS40MjVaTTguMDAwMDUgNy40NzIwNkM4LjAwMTY0IDYuNjU4NzkgOC42NjE0MSA2IDkuNDc1MDUgNkMxMC4yODk3IDYgMTAuOTUgNi42NjAzOCAxMC45NSA3LjQ3NUMxMC45NSA4LjI4OTYyIDEwLjI4OTcgOC45NSA5LjQ3NTA1IDguOTVDOC42NjE0MSA4Ljk1IDguMDAxNjQgOC4yOTEyMSA4LjAwMDA1IDcuNDc3OTRWNy40NzIwNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LF90PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjUgMkMzLjIyMzg2IDIgMyAyLjIyMzg2IDMgMi41VjEyLjVDMyAxMi43NzYxIDMuMjIzODYgMTMgMy41IDEzSDExLjVDMTEuNzc2MSAxMyAxMiAxMi43NzYxIDEyIDEyLjVWNkg4LjVDOC4yMjM4NiA2IDggNS43NzYxNCA4IDUuNVYySDMuNVpNOSAyLjcwNzExTDExLjI5MjkgNUg5VjIuNzA3MTFaTTIgMi41QzIgMS42NzE1NyAyLjY3MTU3IDEgMy41IDFIOC41QzguNjMyNjEgMSA4Ljc1OTc5IDEuMDUyNjggOC44NTM1NSAxLjE0NjQ1TDEyLjg1MzYgNS4xNDY0NUMxMi45NDczIDUuMjQwMjEgMTMgNS4zNjczOSAxMyA1LjVWMTIuNUMxMyAxMy4zMjg0IDEyLjMyODQgMTQgMTEuNSAxNEgzLjVDMi42NzE1NyAxNCAyIDEzLjMyODQgMiAxMi41VjIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGp0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zIDIuNUMzIDIuMjIzODYgMy4yMjM4NiAyIDMuNSAySDkuMjkyODlMMTIgNC43MDcxMVYxMi41QzEyIDEyLjc3NjEgMTEuNzc2MSAxMyAxMS41IDEzSDMuNUMzLjIyMzg2IDEzIDMgMTIuNzc2MSAzIDEyLjVWMi41Wk0zLjUgMUMyLjY3MTU3IDEgMiAxLjY3MTU3IDIgMi41VjEyLjVDMiAxMy4zMjg0IDIuNjcxNTcgMTQgMy41IDE0SDExLjVDMTIuMzI4NCAxNCAxMyAxMy4zMjg0IDEzIDEyLjVWNC42MDM1NUMxMyA0LjQwNDY0IDEyLjkyMSA0LjIxMzg4IDEyLjc4MDMgNC4wNzMyMkw5Ljg1MzU1IDEuMTQ2NDVDOS43NTk3OSAxLjA1MjY4IDkuNjMyNjEgMSA5LjUgMUgzLjVaTTUuMjUgN0M0Ljk3Mzg2IDcgNC43NSA3LjIyMzg2IDQuNzUgNy41QzQuNzUgNy43NzYxNCA0Ljk3Mzg2IDggNS4yNSA4SDkuNzVDMTAuMDI2MSA4IDEwLjI1IDcuNzc2MTQgMTAuMjUgNy41QzEwLjI1IDcuMjIzODYgMTAuMDI2MSA3IDkuNzUgN0g1LjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNSAyQzMuMjIzODYgMiAzIDIuMjIzODYgMyAyLjVWMTIuNUMzIDEyLjc3NjEgMy4yMjM4NiAxMyAzLjUgMTNIMTEuNUMxMS43NzYxIDEzIDEyIDEyLjc3NjEgMTIgMTIuNVY0LjcwNzExTDkuMjkyODkgMkgzLjVaTTIgMi41QzIgMS42NzE1NyAyLjY3MTU3IDEgMy41IDFIOS41QzkuNjMyNjEgMSA5Ljc1OTc5IDEuMDUyNjggOS44NTM1NSAxLjE0NjQ1TDEyLjc4MDMgNC4wNzMyMkMxMi45MjEgNC4yMTM4OCAxMyA0LjQwNDY0IDEzIDQuNjAzNTVWMTIuNUMxMyAxMy4zMjg0IDEyLjMyODQgMTQgMTEuNSAxNEgzLjVDMi42NzE1NyAxNCAyIDEzLjMyODQgMiAxMi41VjIuNVpNNC43NSA3LjVDNC43NSA3LjIyMzg2IDQuOTczODYgNyA1LjI1IDdIN1Y1LjI1QzcgNC45NzM4NiA3LjIyMzg2IDQuNzUgNy41IDQuNzVDNy43NzYxNCA0Ljc1IDggNC45NzM4NiA4IDUuMjVWN0g5Ljc1QzEwLjAyNjEgNyAxMC4yNSA3LjIyMzg2IDEwLjI1IDcuNUMxMC4yNSA3Ljc3NjE0IDEwLjAyNjEgOCA5Ljc1IDhIOFY5Ljc1QzggMTAuMDI2MSA3Ljc3NjE0IDEwLjI1IDcuNSAxMC4yNUM3LjIyMzg2IDEwLjI1IDcgMTAuMDI2MSA3IDkuNzVWOEg1LjI1QzQuOTczODYgOCA0Ljc1IDcuNzc2MTQgNC43NSA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxQdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyAyLjVDMyAyLjIyMzg2IDMuMjIzODYgMiAzLjUgMkg5LjA4NTc5QzkuMjE4MzkgMiA5LjM0NTU3IDIuMDUyNjggOS40MzkzNCAyLjE0NjQ1TDExLjg1MzYgNC41NjA2NkMxMS45NDczIDQuNjU0NDMgMTIgNC43ODE2MSAxMiA0LjkxNDIxVjEyLjVDMTIgMTIuNzc2MSAxMS43NzYxIDEzIDExLjUgMTNIMy41QzMuMjIzODYgMTMgMyAxMi43NzYxIDMgMTIuNVYyLjVaTTMuNSAxQzIuNjcxNTcgMSAyIDEuNjcxNTcgMiAyLjVWMTIuNUMyIDEzLjMyODQgMi42NzE1NyAxNCAzLjUgMTRIMTEuNUMxMi4zMjg0IDE0IDEzIDEzLjMyODQgMTMgMTIuNVY0LjkxNDIxQzEzIDQuNTE2MzkgMTIuODQyIDQuMTM0ODYgMTIuNTYwNyAzLjg1MzU1TDEwLjE0NjQgMS40MzkzNEM5Ljg2NTE0IDEuMTU4MDQgOS40ODM2MSAxIDkuMDg1NzkgMUgzLjVaTTQuNSA0QzQuMjIzODYgNCA0IDQuMjIzODYgNCA0LjVDNCA0Ljc3NjE0IDQuMjIzODYgNSA0LjUgNUg3LjVDNy43NzYxNCA1IDggNC43NzYxNCA4IDQuNUM4IDQuMjIzODYgNy43NzYxNCA0IDcuNSA0SDQuNVpNNC41IDdDNC4yMjM4NiA3IDQgNy4yMjM4NiA0IDcuNUM0IDcuNzc2MTQgNC4yMjM4NiA4IDQuNSA4SDEwLjVDMTAuNzc2MSA4IDExIDcuNzc2MTQgMTEgNy41QzExIDcuMjIzODYgMTAuNzc2MSA3IDEwLjUgN0g0LjVaTTQuNSAxMEM0LjIyMzg2IDEwIDQgMTAuMjIzOSA0IDEwLjVDNCAxMC43NzYxIDQuMjIzODYgMTEgNC41IDExSDEwLjVDMTAuNzc2MSAxMSAxMSAxMC43NzYxIDExIDEwLjVDMTEgMTAuMjIzOSAxMC43NzYxIDEwIDEwLjUgMTBINC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sa3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuMTA1MDUgMTJDNC43MDgwNSAxMiA0LjQyMzYgMTEuOTEyIDQuMjUxNzEgMTEuNzM2QzQuMDgzOSAxMS41NTU5IDQgMTEuMjcxNSA0IDEwLjg4MjdWNC4xMTczM0M0IDMuNzIwMzMgNC4wODU5NSAzLjQzNTg4IDQuMjU3ODQgMy4yNjM5OEM0LjQzMzgzIDMuMDg3OTkgNC43MTYyMyAzIDUuMTA1MDUgM0M2LjQyNzQxIDMgOC4yNTU5MSAzIDkuMDI4NTIgM0MxMC4xMzczIDMgMTEuMDUzOSAzLjk4MTUzIDExLjA1MzkgNS4xODQ2QzExLjA1MzkgNi4wODUwMSAxMC42MDM3IDYuODE4NTUgOS43MDMyNyA3LjIzNjAyQzEwLjg2NTcgNy40NDg1MSAxMS41MTc2IDguNjI3ODcgMTEuNTE3NiA5LjQ4MTI4QzExLjUxNzYgMTAuNTEyNSAxMC45OTAyIDEyIDkuMjc3MzQgMTJDOC43Nzc0MiAxMiA2LjQyNjI2IDEyIDUuMTA1MDUgMTJaTTguMzc4OTEgOC4wMDM0MUg1LjhWMTAuNjMxSDguMzc4OTFDOC45IDEwLjYzMSA5LjYyOTYgMTAuMTIxMSA5LjYyOTYgOS4yOTg3N0M5LjYyOTYgOC40NzY0MyA4LjkgOC4wMDM0MSA4LjM3ODkxIDguMDAzNDFaTTUuOCA0LjM2OTAzVjYuNjk1NzdIOC4xNzk2OUM4LjUzOTA2IDYuNjk1NzcgOS4yNzczNCA2LjM1OTM5IDkuMjc3MzQgNS41MDAwMkM5LjI3NzM0IDQuNjQwNjQgOC40ODA0NyA0LjM2OTAzIDguMTc5NjkgNC4zNjkwM0g1LjhaXCIsZmlsbDpufSkpfSxIdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi41IDQuNUMyLjUgMy4wOTg4NiAzLjU5ODg2IDIgNSAySDEyLjQ5OUMxMi43NzUyIDIgMTMgMi4yMjM4NiAxMyAyLjVDMTMgMi43NzYxNCAxMi43NzYxIDMgMTIuNSAzSDguNjkyNDRMOC40MDUwOSAzLjg1NDU4QzguMTg4NjkgNC40OTc1MiA3Ljg5NDAxIDUuMzcxOTcgNy41ODA5MSA2LjI5Nzk0QzcuNTAyNTkgNi41Mjk1NiA3LjQyMzA4IDYuNzY0NTMgNy4zNDMzMiA3SDguNUM4Ljc3NjE0IDcgOSA3LjIyMzg2IDkgNy41QzkgNy43NzYxNCA4Ljc3NjE0IDggOC41IDhINy4wMDQwN0M2LjU2NzI0IDkuMjg1NDMgNi4xNjQzNSAxMC40NjEzIDUuOTU3OTkgMTEuMDM4NkM1LjYzNjI3IDExLjkzODYgNS4yMDcxMiAxMi40ODU3IDQuNjY3NDEgMTIuNzc3OEM0LjE2MzM1IDEzLjA1MDcgMy42NDE1NCAxMy4wNTAzIDMuMjgzNzggMTMuMDVMMy4yNSAxMy4wNUMyLjk0NjI0IDEzLjA1IDIuNyAxMi44MDM3IDIuNyAxMi41QzIuNyAxMi4xOTYyIDIuOTQ2MjQgMTEuOTUgMy4yNSAxMS45NUMzLjY0MTgyIDExLjk1IDMuOTAzNSAxMS45NDA1IDQuMTQzNzQgMTEuODEwNUM0LjM2NDQzIDExLjY5MSA0LjY1NTMyIDExLjQxNDggNC45MjIxNyAxMC42NjgzQzUuMTA2OTUgMTAuMTUxNCA1LjQ1Mzc1IDkuMTQxMzQgNS44NDIyIDhINC41QzQuMjIzODYgOCA0IDcuNzc2MTQgNCA3LjVDNCA3LjIyMzg2IDQuMjIzODYgNyA0LjUgN0g2LjE4MTg3QzYuMzAxMjcgNi42NDc4NSA2LjQyMTMyIDYuMjkzMjMgNi41Mzg4NyA1Ljk0NTU5QzYuODUxNzUgNS4wMjAyNSA3LjE0NjI3IDQuMTQ2MzEgNy4zNjI1NiAzLjUwMzY4TDcuNTMxOTIgM0g1QzQuMTUxMTQgMyAzLjUgMy42NTExNCAzLjUgNC41QzMuNSA0Ljc3NjE0IDMuMjc2MTQgNSAzIDVDMi43MjM4NiA1IDIuNSA0Ljc3NjE0IDIuNSA0LjVaXCIsZmlsbDpufSkpfSxWdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS42NzQ5NCAzLjUwMDE3QzUuNjc0OTQgMy4yNTE2NCA1Ljg3NjQxIDMuMDUwMTcgNi4xMjQ5NCAzLjA1MDE3SDEwLjYyNDlDMTAuODczNSAzLjA1MDE3IDExLjA3NDkgMy4yNTE2NCAxMS4wNzQ5IDMuNTAwMTdDMTEuMDc0OSAzLjc0ODcgMTAuODczNSAzLjk1MDE3IDEwLjYyNDkgMy45NTAxN0g5LjAwNTg3TDcuMjMwOSAxMS4wNUg4Ljg3NDkzQzkuMTIzNDUgMTEuMDUgOS4zMjQ5MyAxMS4yNTE1IDkuMzI0OTMgMTEuNUM5LjMyNDkzIDExLjc0ODYgOS4xMjM0NSAxMS45NSA4Ljg3NDkzIDExLjk1SDQuMzc0OTNDNC4xMjY0IDExLjk1IDMuOTI0OTMgMTEuNzQ4NiAzLjkyNDkzIDExLjVDMy45MjQ5MyAxMS4yNTE1IDQuMTI2NCAxMS4wNSA0LjM3NDkzIDExLjA1SDUuOTkzOTdMNy43Njg5NCAzLjk1MDE3SDYuMTI0OTRDNS44NzY0MSAzLjk1MDE3IDUuNjc0OTQgMy43NDg3IDUuNjc0OTQgMy41MDAxN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFJ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00Ljc5OTkzIDMuNTAwMTdDNC43OTk5MyAzLjI1MTY0IDUuMDAxNCAzLjA1MDE3IDUuMjQ5OTMgMy4wNTAxN0g5Ljc0OTkzQzkuOTk4NDUgMy4wNTAxNyAxMC4xOTk5IDMuMjUxNjQgMTAuMTk5OSAzLjUwMDE3QzEwLjE5OTkgMy43NDg3IDkuOTk4NDUgMy45NTAxNyA5Ljc0OTkzIDMuOTUwMTdIOC4wOTk5M1YxMS4wNUg5Ljc0OTk0QzkuOTk4NDcgMTEuMDUgMTAuMTk5OSAxMS4yNTE1IDEwLjE5OTkgMTEuNUMxMC4xOTk5IDExLjc0ODYgOS45OTg0NyAxMS45NSA5Ljc0OTk0IDExLjk1SDUuMjQ5OTRDNS4wMDE0MSAxMS45NSA0Ljc5OTk0IDExLjc0ODYgNC43OTk5NCAxMS41QzQuNzk5OTQgMTEuMjUxNSA1LjAwMTQxIDExLjA1IDUuMjQ5OTQgMTEuMDVINi44OTk5M1YzLjk1MDE3SDUuMjQ5OTNDNS4wMDE0IDMuOTUwMTcgNC43OTk5MyAzLjc0ODcgNC43OTk5MyAzLjUwMDE3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuNzgyMzMgMi4yMTcwN0MyLjcwNzMyIDIuMTQyMDYgMi42MDU1NyAyLjA5OTkxIDIuNDk5NDkgMi4wOTk5MUMyLjM5MzQgMi4wOTk5MSAyLjI5MTY2IDIuMTQyMDYgMi4yMTY2NCAyLjIxNzA3TDAuMjE2NjQ1IDQuMjE3MDdDMC4wNjA0MzUxIDQuMzczMjggMC4wNjA0MzUxIDQuNjI2NTUgMC4yMTY2NDUgNC43ODI3NkMwLjM3Mjg1NSA0LjkzODk3IDAuNjI2MTIxIDQuOTM4OTcgMC43ODIzMyA0Ljc4Mjc2TDIuMDk5NDkgMy40NjU2TDIuMDk5NDkgMTEuNTM0MkwwLjc4MjMzIDEwLjIxNzFDMC42MjYxMiAxMC4wNjA5IDAuMzcyODU0IDEwLjA2MDkgMC4yMTY2NDUgMTAuMjE3MUMwLjA2MDQzNDkgMTAuMzczMyAwLjA2MDQzNDkgMTAuNjI2NSAwLjIxNjY0NSAxMC43ODI4TDIuMjE2NjQgMTIuNzgyOEMyLjI5MTY2IDEyLjg1NzggMi4zOTM0IDEyLjg5OTkgMi40OTk0OSAxMi44OTk5QzIuNjA1NTcgMTIuODk5OSAyLjcwNzMxIDEyLjg1NzggMi43ODIzMyAxMi43ODI4TDQuNzgyMzMgMTAuNzgyOEM0LjkzODU0IDEwLjYyNjUgNC45Mzg1NCAxMC4zNzMzIDQuNzgyMzMgMTAuMjE3MUM0LjYyNjEyIDEwLjA2MDkgNC4zNzI4NSAxMC4wNjA5IDQuMjE2NjQgMTAuMjE3MUwyLjg5OTQ5IDExLjUzNDJMMi44OTk0OSAzLjQ2NTZMNC4yMTY2NCA0Ljc4Mjc2QzQuMzcyODUgNC45Mzg5NyA0LjYyNjEyIDQuOTM4OTcgNC43ODIzMyA0Ljc4Mjc2QzQuOTM4NTQgNC42MjY1NSA0LjkzODU0IDQuMzczMjggNC43ODIzMyA0LjIxNzA3TDIuNzgyMzMgMi4yMTcwN1pNMTAuNSAyLjc0OTk3QzEwLjcxMDcgMi43NDk5NyAxMC44OTg4IDIuODgyMTEgMTAuOTcwMyAzLjA4MDM2TDEzLjk3MDMgMTEuMzk5OUMxNC4wNjQgMTEuNjU5NyAxMy45MjkzIDExLjk0NjIgMTMuNjY5NiAxMi4wMzk5QzEzLjQwOTggMTIuMTMzNiAxMy4xMjMzIDExLjk5ODkgMTMuMDI5NiAxMS43MzkyTDEyLjA0NzcgOS4wMTZIOC45NTIyOEw3Ljk3MDMzIDExLjczOTJDNy44NzY2NiAxMS45OTg5IDcuNTkwMTMgMTIuMTMzNiA3LjMzMDM2IDEyLjAzOTlDNy4wNzA1OSAxMS45NDYyIDYuOTM1OTUgMTEuNjU5NyA3LjAyOTYyIDExLjM5OTlMMTAuMDI5NiAzLjA4MDM2QzEwLjEwMTEgMi44ODIxMSAxMC4yODkyIDIuNzQ5OTcgMTAuNSAyLjc0OTk3Wk0xMC41IDQuNzIzOTZMMTEuNzQxMiA4LjE2Nkg5LjI1ODc5TDEwLjUgNC43MjM5NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFp0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjAzNzkxIDkuOTgwNzVDMC45MzQ3NzcgOS42NTgzIDEuMTE2MDMgOS4zNzcxOSAxLjQwMDA1IDkuMjQ4NzFDMS42ODQwOCA5LjEyMDIyIDIuMDk0NjMgOS4xMzQxMiAyLjI3MDcxIDkuNDU0MjZDMi44NTM5MyAxMC41MTQ3IDMuNjQ1OTkgMTAuNzI4MiA0LjQ4NjY1IDEwLjcyODJDNS41MjcyMSAxMC43MjgyIDYuMjk2NTkgMTAuMjYxNSA2LjI5NjU5IDkuNDU0MjZDNi4yOTY1OSA4LjgwNDcgNS45MTE5IDguNDY0MTYgNC44NzEzNCA4LjE0MjUzTDQuMTU4NzIgNy45MjE4MUMyLjY0NTE4IDcuNDQ4ODMgMS44ODg0MiA2LjY5MjA2IDEuODg4NDIgNS40NTYwMUMxLjg4ODQyIDMuNzk3NDMgMy4yNzU4MyAyLjY4NzUgNS4yNDM0MiAyLjY4NzVDNi45MTczMyAyLjY4NzUgNy45NzQwOSAzLjMzNTM2IDguNDM4MzMgNC4zMTA2NUM4LjU3MDg3IDQuNTg5MDkgOC41NzYxNCA0LjkxMjk0IDguMjI3OTQgNS4xOTExNEM3Ljg3OTc0IDUuNDY5MzQgNy41MjM1MSA1LjM0Nzk5IDcuMjMzMjcgNS4wMzgzOUM2LjQ3MjE1IDQuMjI2NTMgNS45OTU0NSA0LjA0OTY4IDUuMjU2MDQgNC4wNDk2OEM0LjEzOTggNC4wNDk2OCAzLjU0NyA0LjYzNjE4IDMuNTQ3IDUuMjc5NDNDMy41NDcgNS44NjU5MiAzLjk2MzIyIDYuMjMxNjkgNC45NDcwMiA2LjUzNDRMNS42Nzg1NiA2Ljc2MTQzQzcuMjI5OTQgNy4yMzQ0MSA3Ljk3NDA5IDcuOTU5NjQgNy45NzQwOSA5LjE3MDQ3QzcuOTc0MDkgMTAuNzcyMyA2LjY5Mzg5IDEyLjA5MDMgNC40NjE0MyAxMi4wOTAzQzIuODY2MTIgMTIuMDkwMyAxLjQwMDA1IDExLjExMzEgMS4wMzc5MSA5Ljk4MDc1Wk0xMS44NDkxIDguNzc5ODVDMTAuNjYxIDguMzk1NDMgMTAuMTY0OSA3Ljg2MTE0IDEwLjE2NDkgNi45ODgwNUMxMC4xNjQ5IDUuODY3MzYgMTEuMTYzNiA1LjA0NjM5IDEyLjYxMjggNS4wNDYzOUMxMy44NTQ2IDUuMDQ2MzkgMTQuNjYyOSA1LjYzMzQ1IDE0Ljk3NzggNi42MzQ2QzE1LjA0NDMgNi44NDU5OSAxNC45NTkzIDYuOTgwMDYgMTQuNzQ3NSA3LjA0OTFDMTQuNTM5NCA3LjExNjk3IDE0LjMxNzYgNy4wOTk3NCAxNC4yMzggNi44OTYxMUMxMy45MzU2IDYuMTIyNzMgMTMuMzUyIDUuNzYzMTEgMTIuNTk5OCA1Ljc2MzExQzExLjY0NjcgNS43NjMxMSAxMS4wMTM1IDYuMjUxNzggMTEuMDEzNSA2LjkxNjM4QzExLjAxMzUgNy40NTA2NiAxMS4zNDY0IDcuNzUwMzggMTIuMjQ3MyA4LjA0MzU4TDEyLjgzNDggOC4yMzI1NEMxNC4wNjIgOC42Mjk5OSAxNC41NTE2IDkuMTM4MjEgMTQuNTUxNiAxMC4wMTc4QzE0LjU1MTYgMTEuMTk3MiAxMy40ODEgMTIuMDQ0MiAxMS45OTI3IDEyLjA0NDJDMTAuNjQzOSAxMi4wNDQyIDkuNjU2NDQgMTEuMjgwOSA5LjQxOTc5IDEwLjMzNjFDOS4zNjUzNSAxMC4xMTg4IDkuNDExOTIgMTAuMDI4NyA5LjcwMDM5IDkuOTYxODRDOS45ODg4NiA5Ljg5NDk5IDEwLjA3MTQgOS44OTkxOCAxMC4xNzE1IDEwLjEzNjlDMTAuNDU1NSAxMC44MTE0IDExLjE1MzEgMTEuMzI3NSAxMi4wMzE4IDExLjMyNzVDMTIuOTkxNCAxMS4zMjc1IDEzLjY4MzQgMTAuNzgwMiAxMy42ODM0IDEwLjA2MzRDMTMuNjgzNCA5LjUzNTY3IDEzLjM5NjEgOS4yODgwNyAxMi40MzY2IDguOTc1MzJMMTEuODQ5MSA4Ljc3OTg1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExIDEuNUMxMSAxLjIyMzg2IDEwLjc3NjEgMSAxMC41IDFDMTAuMjIzOSAxIDEwIDEuMjIzODYgMTAgMS41VjRINVYxLjVDNSAxLjIyMzg2IDQuNzc2MTQgMSA0LjUgMUM0LjIyMzg2IDEgNCAxLjIyMzg2IDQgMS41VjRIMS41QzEuMjIzODYgNCAxIDQuMjIzODYgMSA0LjVDMSA0Ljc3NjE0IDEuMjIzODYgNSAxLjUgNUg0VjEwSDEuNUMxLjIyMzg2IDEwIDEgMTAuMjIzOSAxIDEwLjVDMSAxMC43NzYxIDEuMjIzODYgMTEgMS41IDExSDRWMTMuNUM0IDEzLjc3NjEgNC4yMjM4NiAxNCA0LjUgMTRDNC43NzYxNCAxNCA1IDEzLjc3NjEgNSAxMy41VjExSDEwVjEzLjVDMTAgMTMuNzc2MSAxMC4yMjM5IDE0IDEwLjUgMTRDMTAuNzc2MSAxNCAxMSAxMy43NzYxIDExIDEzLjVWMTFIMTMuNUMxMy43NzYxIDExIDE0IDEwLjc3NjEgMTQgMTAuNUMxNCAxMC4yMjM5IDEzLjc3NjEgMTAgMTMuNSAxMEgxMVY1SDEzLjVDMTMuNzc2MSA1IDE0IDQuNzc2MTQgMTQgNC41QzE0IDQuMjIzODYgMTMuNzc2MSA0IDEzLjUgNEgxMVYxLjVaTTEwIDEwVjVINVYxMEgxMFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LER0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjM4MjUgMS4yOTU2N0MzLjQ2MjQxIDEuMTE0MzIgMy42NDE4OCAwLjk5NzI4NCAzLjg0MDA1IDAuOTk3Mjg0SDExLjVDMTEuNzc2MSAwLjk5NzI4NCAxMiAxLjIyMTE0IDEyIDEuNDk3MjhWNS41QzEyIDUuNzc2MTQgMTEuNzc2MSA2IDExLjUgNkg4LjYzNTIxTDExLjUyODggOS4xNjI0N0MxMS42NjI2IDkuMzA4NyAxMS42OTc0IDkuNTIwMTUgMTEuNjE3NSA5LjcwMTU0QzExLjUzNzYgOS44ODI5MyAxMS4zNTgyIDEwIDExLjE2IDEwSDhWMTMuNUM4IDEzLjcwMjIgNy44NzgxOCAxMy44ODQ1IDcuNjkxMzQgMTMuOTYxOUM3LjUwNDUgMTQuMDM5MyA3LjI4OTQ1IDEzLjk5NjYgNy4xNDY0NSAxMy44NTM2TDMuMTQ2NDUgOS44NTM1NUMzLjA1MjY4IDkuNzU5NzkgMyA5LjYzMjYxIDMgOS41VjUuNUMzIDUuMjIzODYgMy4yMjM4NiA1IDMuNSA1SDYuMzY1MzFMMy40NzEwNSAxLjgzNDY4QzMuMzM3MzIgMS42ODg0NCAzLjMwMjU5IDEuNDc3MDEgMy4zODI1IDEuMjk1NjdaTTcuNzIwMzIgNUw0Ljk3NDc0IDEuOTk3MjhIMTFWNUg3LjcyMDMyWk03LjI3OTc4IDZINFY5SDcuNUgxMC4wMjQ3TDcuMjc5NzggNlpNNC43MDcxMSAxMEw3IDEyLjI5MjlWMTBINC43MDcxMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEJ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjA3MDk1IDAuNjUwMjM4QzYuNjczOTEgMC42NTAyMzggNi4zMjk3NyAwLjkyNTA5NiA2LjI0MTk4IDEuMzEyMzFMNi4wMDM5IDIuMzYyNDdDNS42MjQ5IDIuNDcyNjkgNS4yNjMzNSAyLjYyMzYzIDQuOTI0MzYgMi44MTAxM0w0LjAxMzM1IDIuMjM1ODVDMy42Nzc0OCAyLjAyNDEzIDMuMjM5NzggMi4wNzMxMiAyLjk1OTAzIDIuMzUzODZMMi4zNTI5NCAyLjk1OTk2QzIuMDcyMiAzLjI0MDcgMi4wMjMyIDMuNjc4NCAyLjIzNDkzIDQuMDE0MjdMMi44MDk0MiA0LjkyNTYxQzIuNjIzMDcgNS4yNjQ1IDIuNDcyMjcgNS42MjU5NCAyLjM2MjE2IDYuMDA0ODFMMS4zMTIwOSA2LjI0Mjg3QzAuOTI0ODgzIDYuMzMwNjUgMC42NTAwMjQgNi42NzQ4IDAuNjUwMDI0IDcuMDcxODNWNy45Mjg5N0MwLjY1MDAyNCA4LjMyNjAxIDAuOTI0ODgzIDguNjcwMTUgMS4zMTIwOSA4Ljc1Nzk0TDIuMzYyMjggOC45OTYwM0MyLjQ3MjQ2IDkuMzc1IDIuNjIzMzUgOS43MzY1MiAyLjgwOTc5IDEwLjA3NTVMMi4yMzU0IDEwLjk4NjdDMi4wMjM2NyAxMS4zMjI1IDIuMDcyNjcgMTEuNzYwMiAyLjM1MzQxIDEyLjA0MUwyLjk1OTUxIDEyLjY0NzFDMy4yNDAyNSAxMi45Mjc4IDMuNjc3OTUgMTIuOTc2OCA0LjAxMzgyIDEyLjc2NTFMNC45MjUwNiAxMi4xOTA3QzUuMjYzODQgMTIuMzc3IDUuNjI1MTYgMTIuNTI3OCA2LjAwMzkgMTIuNjM3OUw2LjI0MTk4IDEzLjY4ODFDNi4zMjk3NyAxNC4wNzUzIDYuNjczOTEgMTQuMzUwMiA3LjA3MDk1IDE0LjM1MDJINy45MjgwOUM4LjMyNTEyIDE0LjM1MDIgOC42NjkyNyAxNC4wNzUzIDguNzU3MDUgMTMuNjg4MUw4Ljk5NTA1IDEyLjYzODNDOS4zNzQxMSAxMi41MjgyIDkuNzM1NzMgMTIuMzc3MyAxMC4wNzQ4IDEyLjE5MDlMMTAuOTg2IDEyLjc2NTNDMTEuMzIxOCAxMi45NzcgMTEuNzU5NSAxMi45MjggMTIuMDQwMyAxMi42NDczTDEyLjY0NjQgMTIuMDQxMkMxMi45MjcxIDExLjc2MDQgMTIuOTc2MSAxMS4zMjI3IDEyLjc2NDQgMTAuOTg2OUwxMi4xOTAyIDEwLjA3NkMxMi4zNzY4IDkuNzM2ODggMTIuNTI3OCA5LjM3NTE1IDEyLjYzOCA4Ljk5NTk2TDEzLjY4NzkgOC43NTc5NEMxNC4wNzUxIDguNjcwMTUgMTQuMzUgOC4zMjYwMSAxNC4zNSA3LjkyODk3VjcuMDcxODNDMTQuMzUgNi42NzQ4IDE0LjA3NTEgNi4zMzA2NSAxMy42ODc5IDYuMjQyODdMMTIuNjM4MSA2LjAwNDg4QzEyLjUyOCA1LjYyNTc4IDEyLjM3NzEgNS4yNjQxNCAxMi4xOTA2IDQuOTI1MDdMMTIuNzY0OCA0LjAxNDA3QzEyLjk3NjYgMy42NzgyIDEyLjkyNzYgMy4yNDA1IDEyLjY0NjggMi45NTk3NUwxMi4wNDA3IDIuMzUzNjZDMTEuNzYgMi4wNzI5MiAxMS4zMjIzIDIuMDIzOTIgMTAuOTg2NCAyLjIzNTY1TDEwLjA3NTUgMi44MDk4OUM5LjczNjIyIDIuNjIzMjggOS4zNzQzNyAyLjQ3MjI5IDguOTk1MDUgMi4zNjIwOUw4Ljc1NzA1IDEuMzEyMzFDOC42NjkyNyAwLjkyNTA5NiA4LjMyNTEyIDAuNjUwMjM4IDcuOTI4MDkgMC42NTAyMzhINy4wNzA5NVpNNC45MjA1MyAzLjgxMjUxQzUuNDQ3MjQgMy40NDMzOSA2LjA1NjY1IDMuMTg0MjQgNi43MTU0MyAzLjA2ODM5TDcuMDcwOTUgMS41MDAyNEg3LjkyODA5TDguMjgzNTUgMy4wNjgxNkM4Ljk0MjY3IDMuMTgzODcgOS41NTI0IDMuNDQzMDIgMTAuMDc5NCAzLjgxMjI0TDExLjQzOTcgMi45NTQ3TDEyLjA0NTggMy41NjA3OUwxMS4xODgyIDQuOTIxMTdDMTEuNTU3MyA1LjQ0Nzk4IDExLjgxNjQgNi4wNTc1IDExLjkzMjEgNi43MTYzOEwxMy41IDcuMDcxODNWNy45Mjg5N0wxMS45MzIgOC4yODQ0NEMxMS44MTYyIDguOTQzNDIgMTEuNTU3IDkuNTUzMDEgMTEuMTg3OCAxMC4wNzk4TDEyLjA0NTMgMTEuNDQwMkwxMS40MzkyIDEyLjA0NjJMMTAuMDc4NyAxMS4xODg2QzkuNTUxOTIgMTEuNTU3NiA4Ljk0MjQxIDExLjgxNjYgOC4yODM1NSAxMS45MzIzTDcuOTI4MDkgMTMuNTAwMkg3LjA3MDk1TDYuNzE1NDMgMTEuOTMyQzYuMDU2OSAxMS44MTYyIDUuNDQ3NzIgMTEuNTU3MiA0LjkyMTE2IDExLjE4ODNMMy41NjA1NSAxMi4wNDZMMi45NTQ0NSAxMS40Mzk5TDMuODEyMTMgMTAuMDc5NEMzLjQ0MzEgOS41NTI2NiAzLjE4NDAzIDguOTQzMjYgMy4wNjgyNSA4LjI4NDVMMS41MDAwMiA3LjkyODk3VjcuMDcxODNMMy4wNjgxOCA2LjcxNjMyQzMuMTgzODggNi4wNTc2NSAzLjQ0MjgzIDUuNDQ4MzMgMy44MTE3MSA0LjkyMTY1TDIuOTUzOTggMy41NjFMMy41NjAwOCAyLjk1NDkxTDQuOTIwNTMgMy44MTI1MVpNOS4wMjQ5NiA3LjUwMDA4QzkuMDI0OTYgOC4zNDIyNiA4LjM0MjIzIDkuMDI0OTkgNy41MDAwNSA5LjAyNDk5QzYuNjU3ODYgOS4wMjQ5OSA1Ljk3NTEzIDguMzQyMjYgNS45NzUxMyA3LjUwMDA4QzUuOTc1MTMgNi42NTc4OSA2LjY1Nzg2IDUuOTc1MTYgNy41MDAwNSA1Ljk3NTE2QzguMzQyMjMgNS45NzUxNiA5LjAyNDk2IDYuNjU3ODkgOS4wMjQ5NiA3LjUwMDA4Wk05LjkyNDk2IDcuNTAwMDhDOS45MjQ5NiA4LjgzOTMyIDguODM5MjkgOS45MjQ5OSA3LjUwMDA1IDkuOTI0OTlDNi4xNjA4IDkuOTI0OTkgNS4wNzUxMyA4LjgzOTMyIDUuMDc1MTMgNy41MDAwOEM1LjA3NTEzIDYuMTYwODQgNi4xNjA4IDUuMDc1MTYgNy41MDAwNSA1LjA3NTE2QzguODM5MjkgNS4wNzUxNiA5LjkyNDk2IDYuMTYwODQgOS45MjQ5NiA3LjUwMDA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5MzYgMC44NTAwMDZDMy44Mjc2NyAwLjg1MDAwNiAwLjg0OTk3NiAzLjgyNzMgMC44NDk5NzYgNy41MDAyM0MwLjg0OTk3NiAxMC40Mzc5IDIuNzU1MjMgMTIuOTMwNiA1LjM5Nzc1IDEzLjgxMDRDNS43MzA0NyAxMy44NzEyIDUuODUxNzEgMTMuNjY1OCA1Ljg1MTcxIDEzLjQ4OTVDNS44NTE3MSAxMy4zMzE1IDUuODQ2IDEyLjkxMzUgNS44NDI3MyAxMi4zNTg3QzMuOTkzMDEgMTIuNzYwNCAzLjYwMjczIDExLjQ2NzEgMy42MDI3MyAxMS40NjcxQzMuMzAwMjIgMTAuNjk4OCAyLjg2NDIzIDEwLjQ5NDIgMi44NjQyMyAxMC40OTQyQzIuMjYwNDQgMTAuMDgxOSAyLjkwOTk1IDEwLjA5MDEgMi45MDk5NSAxMC4wOTAxQzMuNTc3NDIgMTAuMTM3IDMuOTI4NSAxMC43NzU1IDMuOTI4NSAxMC43NzU1QzQuNTIxNjcgMTEuNzkxNiA1LjQ4NTEyIDExLjQ5ODEgNS44NjM5NiAxMS4zMjc5QzUuOTI0MzggMTAuODk4NCA2LjA5NjI1IDEwLjYwNTMgNi4yODYwOCAxMC40MzkxQzQuODA5NDggMTAuMjcwOSAzLjI1Njk1IDkuNzAwNjMgMy4yNTY5NSA3LjE1MjQxQzMuMjU2OTUgNi40MjYxNSAzLjUxNjE4IDUuODMyOTggMy45NDE1NyA1LjM2OEMzLjg3Mjk5IDUuMTk5OCAzLjY0NDc4IDQuNTIzNzUgNC4wMDY4OSAzLjYwODA3QzQuMDA2ODkgMy42MDgwNyA0LjU2NDk0IDMuNDI5MjYgNS44MzUzOCA0LjI4OTQxQzYuMzY1NjggNC4xNDIwNCA2LjkzNDc3IDQuMDY4NTYgNy41MDAxOCA0LjA2NTdDOC4wNjUxOCA0LjA2ODU2IDguNjMzODYgNC4xNDIwNCA5LjE2NDk4IDQuMjg5NDFDMTAuNDM0NiAzLjQyOTI2IDEwLjk5MTggMy42MDgwNyAxMC45OTE4IDMuNjA4MDdDMTEuMzU0OCA0LjUyMzc1IDExLjEyNjYgNS4xOTk4IDExLjA1ODQgNS4zNjhDMTEuNDg0NiA1LjgzMjk4IDExLjc0MTggNi40MjYxNSAxMS43NDE4IDcuMTUyNDFDMTEuNzQxOCA5LjcwNzE2IDEwLjE4NjggMTAuMjY5MyA4LjcwNTcxIDEwLjQzMzhDOC45NDQxMiAxMC42MzkyIDkuMTU2ODEgMTEuMDQ1IDkuMTU2ODEgMTEuNjY1NUM5LjE1NjgxIDEyLjU1NDIgOS4xNDg2NSAxMy4yNzE1IDkuMTQ4NjUgMTMuNDg5NUM5LjE0ODY1IDEzLjY2NzUgOS4yNjg2NyAxMy44NzQ1IDkuNjA1ODggMTMuODA5NUMxMi4yNDY0IDEyLjkyODIgMTQuMTUgMTAuNDM3NSAxNC4xNSA3LjUwMDIzQzE0LjE1IDMuODI3MyAxMS4xNzIzIDAuODUwMDA2IDcuNDk5MzYgMC44NTAwMDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSwkdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5NiAxLjgwMDAyQzQuMzUxOTQgMS44MDAwMiAxLjc5OTk2IDQuMzUyIDEuNzk5OTYgNy41MDAwMkMxLjc5OTk2IDEwLjY0OCA0LjM1MTk0IDEzLjIgNy40OTk5NiAxMy4yQzEwLjY0OCAxMy4yIDEzLjIgMTAuNjQ4IDEzLjIgNy41MDAwMkMxMy4yIDQuMzUyIDEwLjY0OCAxLjgwMDAyIDcuNDk5OTYgMS44MDAwMlpNMC44OTk5NjMgNy41MDAwMkMwLjg5OTk2MyAzLjg1NDk0IDMuODU0ODggMC45MDAwMjQgNy40OTk5NiAwLjkwMDAyNEMxMS4xNDUgMC45MDAwMjQgMTQuMSAzLjg1NDk0IDE0LjEgNy41MDAwMkMxNC4xIDExLjE0NTEgMTEuMTQ1IDE0LjEgNy40OTk5NiAxNC4xQzMuODU0ODggMTQuMSAwLjg5OTk2MyAxMS4xNDUxIDAuODk5OTYzIDcuNTAwMDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy40OTk5IDcuODk5OThIMS40OTk5NFY3LjA5OTk4SDEzLjQ5OTlWNy44OTk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMDk5OTEgMTMuNVYxLjVINy44OTk5MVYxMy41SDcuMDk5OTF6TTEwLjM3NSA3LjQ5OTk4QzEwLjM3NSA1LjMyNzI0IDkuNTkzNjQgMy4xNzc3OCA4LjA2MTgzIDEuNzU2NTZMOC41Mzc5MyAxLjI0MzQxQzEwLjIzOTYgMi44MjIxOCAxMS4wNzUgNS4xNzI3MyAxMS4wNzUgNy40OTk5OCAxMS4wNzUgOS44MjcyNCAxMC4yMzk2IDEyLjE3NzggOC41Mzc5MyAxMy43NTY2TDguMDYxODMgMTMuMjQzNEM5LjU5MzY0IDExLjgyMjIgMTAuMzc1IDkuNjcyNzMgMTAuMzc1IDcuNDk5OTh6TTMuOTk5NjkgNy41QzMuOTk5NjkgNS4xNzYxMSA0LjgwNzg2IDIuODI2NzggNi40NTc2OCAxLjI0NzE5TDYuOTQxNzcgMS43NTI4MUM1LjQ1ODIgMy4xNzMyMyA0LjY5OTY5IDUuMzIzODkgNC42OTk2OSA3LjUgNC42OTk3IDkuNjc2MTEgNS40NTgyMiAxMS44MjY4IDYuOTQxNzkgMTMuMjQ3Mkw2LjQ1NzY5IDEzLjc1MjhDNC44MDc4OCAxMi4xNzMyIDMuOTk5NyA5LjgyMzkgMy45OTk2OSA3LjV6XCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTk2IDMuOTU4MDFDOS42NjkyOCAzLjk1ODAxIDExLjg3NTMgNC4zNTkxNSAxMy4zNzA2IDUuMTk0NDggMTMuNTM5NCA1LjI4ODc1IDEzLjU5OTggNS41MDE5NyAxMy41MDU1IDUuNjcwNzMgMTMuNDExMyA1LjgzOTQ4IDEzLjE5OCA1Ljg5OTg3IDEzLjAyOTMgNS44MDU2IDExLjY3OTQgNS4wNTE1NSA5LjYwNzk5IDQuNjU4MDEgNy40OTk5NiA0LjY1ODAxIDUuMzkxOTIgNC42NTgwMSAzLjMyMDUyIDUuMDUxNTUgMS45NzA2NCA1LjgwNTYgMS44MDE4OCA1Ljg5OTg3IDEuNTg4NjYgNS44Mzk0OCAxLjQ5NDM5IDUuNjcwNzMgMS40MDAxMyA1LjUwMTk3IDEuNDYwNTEgNS4yODg3NSAxLjYyOTI3IDUuMTk0NDggMy4xMjQ2NiA0LjM1OTE1IDUuMzMwNjMgMy45NTgwMSA3LjQ5OTk2IDMuOTU4MDF6TTcuNDk5OTYgMTAuODVDOS42NjkyOCAxMC44NSAxMS44NzUzIDEwLjQ0ODggMTMuMzcwNiA5LjYxMzUgMTMuNTM5NCA5LjUxOTI0IDEzLjU5OTggOS4zMDYwMSAxMy41MDU1IDkuMTM3MjYgMTMuNDExMyA4Ljk2ODUgMTMuMTk4IDguOTA4MTIgMTMuMDI5MyA5LjAwMjM4IDExLjY3OTQgOS43NTY0MyA5LjYwNzk5IDEwLjE1IDcuNDk5OTYgMTAuMTUgNS4zOTE5MiAxMC4xNSAzLjMyMDUyIDkuNzU2NDMgMS45NzA2NCA5LjAwMjM5IDEuODAxODggOC45MDgxMiAxLjU4ODY2IDguOTY4NSAxLjQ5NDM5IDkuMTM3MjYgMS40MDAxMyA5LjMwNjAxIDEuNDYwNTEgOS41MTkyNCAxLjYyOTI3IDkuNjEzNSAzLjEyNDY2IDEwLjQ0ODggNS4zMzA2MyAxMC44NSA3LjQ5OTk2IDEwLjg1elwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjUgMkg4VjdIMTNWMi41QzEzIDIuMjIzODYgMTIuNzc2MSAyIDEyLjUgMlpNMTMgOEg4VjEzSDEyLjVDMTIuNzc2MSAxMyAxMyAxMi43NzYxIDEzIDEyLjVWOFpNNyA3VjJIMi41QzIuMjIzODYgMiAyIDIuMjIzODYgMiAyLjVWN0g3Wk0yIDhWMTIuNUMyIDEyLjc3NjEgMi4yMjM4NiAxMyAyLjUgMTNIN1Y4SDJaTTIuNSAxQzEuNjcxNTcgMSAxIDEuNjcxNTcgMSAyLjVWMTIuNUMxIDEzLjMyODQgMS42NzE1NyAxNCAyLjUgMTRIMTIuNUMxMy4zMjg0IDE0IDE0IDEzLjMyODQgMTQgMTIuNVYyLjVDMTQgMS42NzE1NyAxMy4zMjg0IDEgMTIuNSAxSDIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFd0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjQ0OTk1IDAuOTQ5OTUxQzEuMzE3MzQgMC45NDk5NTEgMS4xOTAxNiAxLjAwMjYzIDEuMDk2NCAxLjA5NjRDMS4wMDI2MyAxLjE5MDE3IDAuOTQ5OTUxIDEuMzE3MzUgMC45NDk5NTEgMS40NDk5NUwwLjk0OTk2NiAzLjQ0OTk1QzAuOTQ5OTY5IDMuNzI2MSAxLjE3MzgzIDMuOTQ5OTUgMS40NDk5NyAzLjk0OTk1QzEuNzI2MTEgMy45NDk5NSAxLjk0OTk3IDMuNzI2MDkgMS45NDk5NyAzLjQ0OTk1TDEuOTQ5OTUgMS45NDk5NUgzLjQ0OTk3QzMuNzI2MTEgMS45NDk5NSAzLjk0OTk3IDEuNzI2MDkgMy45NDk5NyAxLjQ0OTk1QzMuOTQ5OTcgMS4xNzM4MSAzLjcyNjExIDAuOTQ5OTUxIDMuNDQ5OTcgMC45NDk5NTFIMS40NDk5NVpNNS45NDk5NSAwLjk0OTk1MUM1LjY3MzgxIDAuOTQ5OTUxIDUuNDQ5OTUgMS4xNzM4MSA1LjQ0OTk1IDEuNDQ5OTVDNS40NDk5NSAxLjcyNjA5IDUuNjczODEgMS45NDk5NSA1Ljk0OTk1IDEuOTQ5OTVIOC45NDk5NUM5LjIyNjA5IDEuOTQ5OTUgOS40NDk5NSAxLjcyNjA5IDkuNDQ5OTUgMS40NDk5NUM5LjQ0OTk1IDEuMTczODEgOS4yMjYwOSAwLjk0OTk1MSA4Ljk0OTk1IDAuOTQ5OTUxSDUuOTQ5OTVaTTUuNDQ5OTUgMTMuNDVDNS40NDk5NSAxMy4xNzM4IDUuNjczODEgMTIuOTUgNS45NDk5NSAxMi45NUg4Ljk0OTk1QzkuMjI2MDkgMTIuOTUgOS40NDk5NSAxMy4xNzM4IDkuNDQ5OTUgMTMuNDVDOS40NDk5NSAxMy43MjYxIDkuMjI2MDkgMTMuOTUgOC45NDk5NSAxMy45NUg1Ljk0OTk1QzUuNjczODEgMTMuOTUgNS40NDk5NSAxMy43MjYxIDUuNDQ5OTUgMTMuNDVaTTEuOTQ5OTUgNS45NDk5NUMxLjk0OTk1IDUuNjczODEgMS43MjYwOSA1LjQ0OTk1IDEuNDQ5OTUgNS40NDk5NUMxLjE3MzgxIDUuNDQ5OTUgMC45NDk5NTEgNS42NzM4MSAwLjk0OTk1MSA1Ljk0OTk1VjguOTQ5OTVDMC45NDk5NTEgOS4yMjYwOSAxLjE3MzgxIDkuNDQ5OTUgMS40NDk5NSA5LjQ0OTk1QzEuNzI2MDkgOS40NDk5NSAxLjk0OTk1IDkuMjI2MDkgMS45NDk5NSA4Ljk0OTk1VjUuOTQ5OTVaTTEzLjQ1IDUuNDQ5OTVDMTMuNzI2MSA1LjQ0OTk1IDEzLjk1IDUuNjczODEgMTMuOTUgNS45NDk5NVY4Ljk0OTk1QzEzLjk1IDkuMjI2MDkgMTMuNzI2MSA5LjQ0OTk1IDEzLjQ1IDkuNDQ5OTVDMTMuMTczOCA5LjQ0OTk1IDEyLjk1IDkuMjI2MDkgMTIuOTUgOC45NDk5NVY1Ljk0OTk1QzEyLjk1IDUuNjczODEgMTMuMTczOCA1LjQ0OTk1IDEzLjQ1IDUuNDQ5OTVaTTExLjQ1IDAuOTQ5OTUxQzExLjE3MzggMC45NDk5NTEgMTAuOTUgMS4xNzM4MSAxMC45NSAxLjQ0OTk1QzEwLjk1IDEuNzI2MDkgMTEuMTczOCAxLjk0OTk1IDExLjQ1IDEuOTQ5OTVIMTIuOTQ5OVYzLjQ0OTk1QzEyLjk0OTkgMy43MjYwOSAxMy4xNzM4IDMuOTQ5OTUgMTMuNDQ5OSAzLjk0OTk1QzEzLjcyNjEgMy45NDk5NSAxMy45NDk5IDMuNzI2MDkgMTMuOTQ5OSAzLjQ0OTk1VjEuNDQ5OTVDMTMuOTQ5OSAxLjE3MzgxIDEzLjcyNTIgMC45NDk5NTEgMTMuNDQ5IDAuOTQ5OTUxSDExLjQ1Wk0xLjQ0OTk1IDEwLjk1QzEuNzI2MDkgMTAuOTUgMS45NDk5NSAxMS4xNzM4IDEuOTQ5OTUgMTEuNDVWMTIuOTVIMy40NDk5N0MzLjcyNjExIDEyLjk1IDMuOTQ5OTcgMTMuMTczOCAzLjk0OTk3IDEzLjQ1QzMuOTQ5OTcgMTMuNzI2MSAzLjcyNjExIDEzLjk1IDMuNDQ5OTcgMTMuOTVIMS40NDk5NUMxLjE3MzgxIDEzLjk1IDAuOTQ5OTUxIDEzLjcyNjEgMC45NDk5NTEgMTMuNDVWMTEuNDVDMC45NDk5NTEgMTEuMTczOCAxLjE3MzgxIDEwLjk1IDEuNDQ5OTUgMTAuOTVaTTEzLjk1IDExLjQ1QzEzLjk1IDExLjE3MzggMTMuNzI2MSAxMC45NSAxMy40NSAxMC45NUMxMy4xNzM4IDEwLjk0OTkgMTIuOTUgMTEuMTczOCAxMi45NSAxMS40NDk5TDEyLjk0OTEgMTIuOTVIMTEuNDVDMTEuMTczOCAxMi45NSAxMC45NSAxMy4xNzM4IDEwLjk1IDEzLjQ1QzEwLjk1IDEzLjcyNjEgMTEuMTczOCAxMy45NSAxMS40NSAxMy45NUgxMy40NDk5QzEzLjcyNjEgMTMuOTUgMTMuOTQ5OSAxMy43MjYxIDEzLjk0OTkgMTMuNDVMMTMuOTUgMTEuNDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxOdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3Njg5MkMzLjg0MjIyIDAuODc2ODkyIDAuODc3MDc1IDMuODQyMDQgMC44NzcwNzUgNy40OTk3MkMwLjg3NzA3NSAxMS4xNTc0IDMuODQyMjIgMTQuMTIyNiA3LjQ5OTkxIDE0LjEyMjZDMTEuMTU3NiAxNC4xMjI2IDE0LjEyMjcgMTEuMTU3NCAxNC4xMjI3IDcuNDk5NzJDMTQuMTIyNyAzLjg0MjA0IDExLjE1NzYgMC44NzY4OTIgNy40OTk5MSAwLjg3Njg5MlpNNy4wMDAwMyAxLjg0ODYxQzQuMTAxMTQgMi4xMDE3IDEuODI3MDcgNC41MzUxNSAxLjgyNzA3IDcuNDk5NzJDMS44MjcwNyAxMC40NjQzIDQuMTAxMTQgMTIuODk3NyA3LjAwMDAzIDEzLjE1MDhWMS44NDg2MVpNOC4wMDAwMyAxMy4xNTA4QzEwLjg5ODggMTIuODk3NiAxMy4xNzI3IDEwLjQ2NDIgMTMuMTcyNyA3LjQ5OTcyQzEzLjE3MjcgNC41MzUyNCAxMC44OTg4IDIuMTAxODUgOC4wMDAwMyAxLjg0ODY0VjEzLjE1MDhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx6dD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3Njg5MkMzLjg0MjIyIDAuODc2ODkyIDAuODc3MDc1IDMuODQyMDQgMC44NzcwNzUgNy40OTk3MkMwLjg3NzA3NSAxMS4xNTc0IDMuODQyMjIgMTQuMTIyNiA3LjQ5OTkxIDE0LjEyMjZDMTEuMTU3NiAxNC4xMjI2IDE0LjEyMjcgMTEuMTU3NCAxNC4xMjI3IDcuNDk5NzJDMTQuMTIyNyAzLjg0MjA0IDExLjE1NzYgMC44NzY4OTIgNy40OTk5MSAwLjg3Njg5MlpNNy40OTk4OCAxLjgyNjg5QzQuMzY2ODggMS44MjY5IDEuODI3MDcgNC4zNjY3MiAxLjgyNzA3IDcuNDk5NzJDMS44MjcwNyAxMC42MzI3IDQuMzY2ODggMTMuMTcyNSA3LjQ5OTg4IDEzLjE3MjZWMS44MjY4OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFV0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjUgM0MxLjIyMzg2IDMgMSAzLjIyMzg2IDEgMy41QzEgMy43NzYxNCAxLjIyMzg2IDQgMS41IDRIMTMuNUMxMy43NzYxIDQgMTQgMy43NzYxNCAxNCAzLjVDMTQgMy4yMjM4NiAxMy43NzYxIDMgMTMuNSAzSDEuNVpNMSA3LjVDMSA3LjIyMzg2IDEuMjIzODYgNyAxLjUgN0gxMy41QzEzLjc3NjEgNyAxNCA3LjIyMzg2IDE0IDcuNUMxNCA3Ljc3NjE0IDEzLjc3NjEgOCAxMy41IDhIMS41QzEuMjIzODYgOCAxIDcuNzc2MTQgMSA3LjVaTTEgMTEuNUMxIDExLjIyMzkgMS4yMjM4NiAxMSAxLjUgMTFIMTMuNUMxMy43NzYxIDExIDE0IDExLjIyMzkgMTQgMTEuNUMxNCAxMS43NzYxIDEzLjc3NjEgMTIgMTMuNSAxMkgxLjVDMS4yMjM4NiAxMiAxIDExLjc3NjEgMSAxMS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sR3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuODExMyAxLjY0NzA2QzYuNjIxODggMi44NzkxOCA2LjY4MjY4IDMuODg1MjMgNi43Njg0OCA1LjMwNDk5QzYuNzg0MTUgNS41NjQyNiA2LjgwMDY1IDUuODM3MzIgNi44MTY2MSA2LjEyODA4QzYuODMxMTEgNi4zOTIwOCA2LjYzNzU4IDYuNjIxNzIgNi4zNzQ5NSA2LjY1MjE3QzYuMTEyMzIgNi42ODI2MiA1Ljg3MTM4IDYuNTAzMzQgNS44MjUwOSA2LjI0MzA0TDUuNzQ3NTQgNS44MDY5OEM1LjY0NDAyIDUuMTY1MjkgNS40ODM1NSA0LjI1NDgxIDUuMTc4MDcgMy40NDc0MUM0Ljg2MjQxIDIuNjEzMTIgNC40NDg2IDIuMDQxMjEgMy45MzQzNiAxLjg2MDQ0QzMuNjQ5OTQgMS43NjEwNCAzLjQxOTAxIDEuODQyNzkgMy4yNTg2OCAyLjAxMDUyQzMuMDg3NDYgMi4xODk2MiAyLjk5NzYgMi40NzA2NSAzLjA2MjcgMi43NTM5OUMzLjIxNDYgMy4zNDQyNCAzLjQ0NjI3IDMuOTE2NyAzLjY5ODM2IDQuNTE4MDJDMy43MjA4MiA0LjU3MTU4IDMuNzQzNDYgNC42MjU0MyAzLjc2NjIxIDQuNjc5NTRDMy45OTU0IDUuMjI0NTcgNC4yMzYxOSA1Ljc5NzIgNC40MTY0NCA2LjM5MDgxTDQuNDE2OTEgNi4zOTIzOEM0LjU2MiA2Ljg3NTg2IDQuNjU2NDYgNy4yNTk1IDQuNzMwODYgNy41NjE2NUM0Ljc2MDM0IDcuNjgxMzggNC43ODY2NyA3Ljc4ODMxIDQuODExNzUgNy44ODM1OUM0Ljg2NzY4IDguMDk2MDYgNC43NzgzNiA4LjMyMDE0IDQuNTkxNjEgOC40MzU4OEM0LjQwNDg2IDguNTUxNjEgNC4xNjQ0NSA4LjUzMTg4IDMuOTk5MDcgOC4zODcyNUMzLjczNzQ5IDguMTU4NDggMy41MTUgNy45Mjc4NCAzLjMxODE3IDcuNzE4MDJDMy4yNzYyNyA3LjY3MzM1IDMuMjM2MDIgNy42MzAxOCAzLjE5NzA1IDcuNTg4MzhDMy4wNDc3NyA3LjQyODI2IDIuOTE3MTIgNy4yODgxMiAyLjc4MzM0IDcuMTYwMjlDMi40NTk4OSA2Ljg1MTIyIDIuMTgzOTggNi42ODAwNCAxLjgwNTg1IDYuNjQzNjlMMS44MDMyNCA2LjY0MzQzQzEuNTYxMTcgNi42MTg4OCAxLjQxNDAyIDYuNjY0NDEgMS4zMTc1NiA2LjcyNjI3QzEuMjE4OTkgNi43ODk0NyAxLjExOTg4IDYuOTA0MTQgMS4wMzc4NCA3LjExMjNDMC45NzY1NzYgNy4yODQ5MiAxLjAxNTE1IDcuNjI5ODcgMS4xOTI5IDcuOTY5MTFMMS4xOTcyOCA3Ljk3NzQ3QzEuNDAwODYgOC4zODQ1MiAxLjc0NDc1IDguODE1ODcgMi4xODE0MSA5LjI5Mjk5QzIuMzk3MzkgOS41Mjg5OCAyLjYyODcyIDkuNzY4NDkgMi44NjkzNCAxMC4wMTc0TDIuODc5NjYgMTAuMDI4MUMzLjExNTQ2IDEwLjI3MjEgMy4zNTk2MiAxMC41MjQ3IDMuNTk3MTMgMTAuNzgyN0M0LjQyODggMTEuNjg2MyA1LjI3NzA2IDEyLjc1MzggNS40NjI3IDE0SDExLjUwODdDMTEuNTYzNiAxMi40MzUzIDExLjg3NTYgMTEuMjY4IDEyLjI4NzUgMTAuMTM0NkMxMi40NDU0IDkuNzAwNDEgMTIuNjEyMSA5LjI4NDEyIDEyLjc4MjYgOC44NTgyOUMxMy4xMDk3IDguMDQxMzkgMTMuNDUwOSA3LjE4OTM3IDEzLjc3MDUgNi4xMDgyNEMxNC4wOTg5IDQuOTk3MzcgMTQuMDA5NyA0LjM3MDMzIDEzLjg2MTMgNC4wMzk4NEMxMy43MTcgMy43MTg1OCAxMy40OTE0IDMuNjE3ODYgMTMuMzgxNiAzLjU5NjA2QzEzLjEzODEgMy41NDc3NCAxMy4wMzg0IDMuNjA5NDcgMTIuOTY5OCAzLjY3OTAxQzEyLjg2NyAzLjc4MzE2IDEyLjc2OTggMy45ODI3MyAxMi42OTIxIDQuMzAyNjlDMTIuNjE2NiA0LjYxMzQ1IDEyLjU3NTIgNC45NjUxNyAxMi41MzMgNS4zMjUwMUwxMi41Mjk4IDUuMzUyODVDMTIuNDkyNCA1LjY3MjQyIDEyLjQ1MDUgNi4wMzAxNiAxMi4zNjY1IDYuMzAwOThDMTIuMzM4MyA2LjQwNjk5IDEyLjI4MTkgNi41MDQwNyAxMi4xOTc5IDYuNTc1MzlDMTIuMTM4MiA2LjYyNjEgMTIuMDEwNCA2LjcwODE4IDExLjgzMDkgNi42OTMxMkMxMS41NDI0IDYuNjY4OTEgMTEuMzcxMiA2LjQyMTQzIDExLjM2NSA2LjE0NzgzQzExLjM1NiA1Ljc1NDU0IDExLjM4ODMgNS4zNTg2NCAxMS40MDc0IDQuOTY2MDhDMTEuNDQyOCA0LjIzNjQ2IDExLjQ3NyAzLjUzMzcgMTEuNDI0NSAyLjgzNDJMMTEuNDI0MiAyLjgyOTM0QzExLjM5MTYgMi4zMjk5NyAxMS4wNDkzIDIuMDAyMjggMTAuNzAwNyAxLjkyMjhDMTAuNTMwNSAxLjg4NDAxIDEwLjM2OSAxLjkwNjAxIDEwLjIzNDcgMS45ODM1QzEwLjEwMyAyLjA1OTQ2IDkuOTU1MzUgMi4yMTMxOCA5Ljg1NzQgMi41MTM5NEw5Ljg1NjMxIDIuNTE3MjZDOS44MTUyNSAyLjY0MDQgOS43NzI5OCAyLjg3NzUzIDkuNzM2MDYgMy4yMTI0QzkuNzAwNDQgMy41MzU0MiA5LjY3MzM3IDMuOTEyNzkgOS42NTE1NiA0LjI5NDE4QzkuNjMyOSA0LjYyMDMzIDkuNjE3ODUgNC45NTg0IDkuNjA0MzQgNS4yNjE5NEM5LjU4NzI4IDUuNjQ1MjkgOS41NzI2NyA1Ljk3MzU3IDkuNTU2MzMgNi4xNTMyQzkuNTQ5ODMgNi4yMjQ1OSA5LjUyOTM5IDYuMjk0OTMgOS40OTUwMSA2LjM1Nzg1QzkuNDczNTYgNi4zOTcxMSA5LjM2MTE1IDYuNjA5NDcgOS4wNzEwNiA2LjYxODQzQzguNzc5MTcgNi42Mjc0NCA4LjYzOTc1IDYuNDAwNTcgOC42MTY5OCA2LjM1OTE5QzguNTU2MzQgNi4yNDg5OSA4LjU1MDY2IDYuMTE4MDcgOC41NDc1NCA1Ljk5MjgzQzguNTQ0NzQgNS44ODA2NCA4LjU0Mjk0IDUuNzE3OTggOC41NDE3NCA1LjU0NzY3QzguNTM5MzUgNS4yMDU4MiA4LjUzOTM1IDQuODE5MTkgOC41MzkzNSA0LjcwOTUyQzguNTM5MzUgMy42NjU3IDguNTM4MzggMi42NTM3MiA4LjQ0NzE0IDEuNjQzNzJDOC4zOTE4MyAxLjI0MTI3IDguMDYyNzggMS4wMDQ1NSA3LjY0MzYgMS4wMDAwNUM3LjIyMzk5IDAuOTk1NTUyIDYuODc5MTggMS4yMjcwNCA2LjgxMTMgMS42NDcwNlpNOS40MTIxOSAxLjM2MTdDOS4yMTQ2OSAwLjQ0ODQ4NCA4LjM5OTEzIDAuMDA4MTAzMjQgNy42NTQzMyAwLjAwMDExMTU0QzYuODY0NTIgLTAuMDA4MzYzMDggNS45ODc2MSAwLjQ2NTg4MSA1LjgyMzY1IDEuNDkwMzdMNS44MjMxOCAxLjQ5MzM0QzUuNzgyMzkgMS43NTg0IDUuNzUyMjkgMi4wMTQ4MSA1LjczMDkgMi4yNjY1MkM1LjM5NDIzIDEuNjczNjQgNC45MjYyMiAxLjE0ODk0IDQuMjY1NSAwLjkxNjg1OUMzLjU4NjYxIDAuNjc5MzEyIDIuOTQ5MiAwLjg4NzA4NyAyLjUzNTgyIDEuMzE5NTJDMi4xMzQxNSAxLjczOTcxIDEuOTQ0MzggMi4zNjc0MiAyLjA5MDMxIDIuOTg3NDZMMi4wOTI2OSAyLjk5NzEzQzIuMjY0NzggMy42NjgwOCAyLjUyMzk2IDQuMzAzMTYgMi43NzYxMyA0LjkwNDY1QzIuNzk4MTQgNC45NTcxNyAyLjgyMDEgNS4wMDk0MSAyLjg0MTk0IDUuMDYxMzlDMy4wMjEzOSA1LjQ4ODQyIDMuMTkzNzggNS44OTg2NiAzLjMzODcxIDYuMzEyNTZDMi45NjQwNCA1Ljk4MTQyIDIuNTE5MjUgNS43MDc5NiAxLjkwMjc2IDUuNjQ4NEMxLjQ4ODY1IDUuNjA2NjMgMS4xMDM5MSA1LjY3NTM2IDAuNzc3ODA1IDUuODg0NDRDMC40NTQyMzkgNi4wOTE5IDAuMjQwNjcxIDYuNDA0MDUgMC4xMDQxODcgNi43NTQwNkwwLjEwMDg2OCA2Ljc2MjgxQy0wLjEwMTg0IDcuMzEyODYgMC4wNjYzMzEyIDcuOTcxNTcgMC4zMDQ4OTUgOC40Mjg5N0MwLjU3MzcwNCA4Ljk2NDc0IDAuOTk2MTA0IDkuNDc5MDQgMS40NDM3MiA5Ljk2ODEzQzEuNjcwNDYgMTAuMjE1OSAxLjkxMTM2IDEwLjQ2NTIgMi4xNTAzMyAxMC43MTI0TDIuMTU2ODIgMTAuNzE5MUMyLjM5NTI0IDEwLjk2NTggMi42MzIxNyAxMS4yMTA5IDIuODYxMzQgMTEuNDU5OUMzLjgwOTM3IDEyLjQ5IDQuNTAwMDIgMTMuNDYzMiA0LjUwMDAyIDE0LjVDNC41MDAwMiAxNC43NzYxIDQuNzIzODggMTUgNS4wMDAwMiAxNUgxMkMxMi4yNzYyIDE1IDEyLjUgMTQuNzc2MSAxMi41IDE0LjVDMTIuNSAxMi44MjEyIDEyLjgwMjEgMTEuNjQ2MiAxMy4yMjc0IDEwLjQ3NjJDMTMuMzY1MyAxMC4wOTY4IDEzLjUyMTYgOS43MDU3OSAxMy42ODY4IDkuMjkyNDdDMTQuMDIzOCA4LjQ0OTIyIDE0LjM5OCA3LjUxMjk4IDE0LjcyOTUgNi4zOTE3NUMxNS4wOTU2IDUuMTUzMjQgMTUuMDU1OSA0LjI1OTA0IDE0Ljc3MzUgMy42MzAxN0MxNC40ODcgMi45OTIwOCAxMy45Nzk4IDIuNjk1MyAxMy41NzYzIDIuNjE1MkMxMy4xMjc2IDIuNTI2MTQgMTIuNzM2NyAyLjYwNDc1IDEyLjQyNjggMi44MzA4MUMxMi40MjUzIDIuODA3NzMgMTIuNDIzNiAyLjc4NDY4IDEyLjQyMTkgMi43NjE2N0MxMi4zNTg3IDEuODEwNSAxMS42OTA3IDEuMTIyODUgMTAuOTIzIDAuOTQ3ODIxQzEwLjUzNDYgMC44NTkyODcgMTAuMTExMSAwLjkwMDM5MyA5LjczNTA5IDEuMTE3MjRDOS42MTg1MiAxLjE4NDQ2IDkuNTEwNTUgMS4yNjYyMyA5LjQxMjE5IDEuMzYxN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHF0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04Ljc1NDMyIDIuMDUwMkM4LjUwNTc5IDIuMDUwMiA4LjMwNDMyIDIuMjUxNjcgOC4zMDQzMiAyLjUwMDJDOC4zMDQzMiAyLjc0ODczIDguNTA1NzkgMi45NTAyIDguNzU0MzIgMi45NTAySDkuOTQ5OTdWNy4wNTAwNEg1LjA0OTk3VjIuOTUwMkg2LjI1NDMyQzYuNTAyODUgMi45NTAyIDYuNzA0MzIgMi43NDg3MyA2LjcwNDMyIDIuNTAwMkM2LjcwNDMyIDIuMjUxNjcgNi41MDI4NSAyLjA1MDIgNi4yNTQzMiAyLjA1MDJIMi43NTQzMkMyLjUwNTc5IDIuMDUwMiAyLjMwNDMyIDIuMjUxNjcgMi4zMDQzMiAyLjUwMDJDMi4zMDQzMiAyLjc0ODczIDIuNTA1NzkgMi45NTAyIDIuNzU0MzIgMi45NTAySDMuOTQ5OTdWMTIuMDUwMkgyLjc1NDMyQzIuNTA1NzkgMTIuMDUwMiAyLjMwNDMyIDEyLjI1MTcgMi4zMDQzMiAxMi41MDAyQzIuMzA0MzIgMTIuNzQ4NyAyLjUwNTc5IDEyLjk1MDIgMi43NTQzMiAxMi45NTAySDYuMjU0MzJDNi41MDI4NSAxMi45NTAyIDYuNzA0MzIgMTIuNzQ4NyA2LjcwNDMyIDEyLjUwMDJDNi43MDQzMiAxMi4yNTE3IDYuNTAyODUgMTIuMDUwMiA2LjI1NDMyIDEyLjA1MDJINS4wNDk5N1Y3Ljk1MDA0SDkuOTQ5OTdWMTIuMDUwMkg4Ljc1NDMyQzguNTA1NzkgMTIuMDUwMiA4LjMwNDMyIDEyLjI1MTcgOC4zMDQzMiAxMi41MDAyQzguMzA0MzIgMTIuNzQ4NyA4LjUwNTc5IDEyLjk1MDIgOC43NTQzMiAxMi45NTAySDEyLjI1NDNDMTIuNTAyOCAxMi45NTAyIDEyLjcwNDMgMTIuNzQ4NyAxMi43MDQzIDEyLjUwMDJDMTIuNzA0MyAxMi4yNTE3IDEyLjUwMjggMTIuMDUwMiAxMi4yNTQzIDEyLjA1MDJIMTEuMDVWMi45NTAySDEyLjI1NDNDMTIuNTAyOCAyLjk1MDIgMTIuNzA0MyAyLjc0ODczIDEyLjcwNDMgMi41MDAyQzEyLjcwNDMgMi4yNTE2NyAxMi41MDI4IDIuMDUwMiAxMi4yNTQzIDIuMDUwMkg4Ljc1NDMyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMTgxMyAxLjY4MTc5QzcuMzU3MDQgMS41MDYwNSA3LjY0MTk2IDEuNTA2MDUgNy44MTc3IDEuNjgxNzlMMTAuMzE3NyA0LjE4MTc5QzEwLjQ5MzQgNC4zNTc1MyAxMC40OTM0IDQuNjQyNDUgMTAuMzE3NyA0LjgxODE5QzEwLjE0MiA0Ljk5MzkyIDkuODU3MDQgNC45OTM5MiA5LjY4MTMgNC44MTgxOUw3Ljk0OTUgMy4wODYzOEw3Ljk0OTUgMTEuOTEzNkw5LjY4MTMgMTAuMTgxOEM5Ljg1NzA0IDEwLjAwNjEgMTAuMTQyIDEwLjAwNjEgMTAuMzE3NyAxMC4xODE4QzEwLjQ5MzQgMTAuMzU3NSAxMC40OTM0IDEwLjY0MjQgMTAuMzE3NyAxMC44MTgyTDcuODE3NyAxMy4zMTgyQzcuNzMzMzEgMTMuNDAyNiA3LjYxODg1IDEzLjQ1IDcuNDk5NSAxMy40NUM3LjM4MDE1IDEzLjQ1IDcuMjY1NjkgMTMuNDAyNiA3LjE4MTMgMTMuMzE4Mkw0LjY4MTMgMTAuODE4MkM0LjUwNTU3IDEwLjY0MjQgNC41MDU1NyAxMC4zNTc1IDQuNjgxMyAxMC4xODE4QzQuODU3MDQgMTAuMDA2MSA1LjE0MTk2IDEwLjAwNjEgNS4zMTc3IDEwLjE4MThMNy4wNDk1IDExLjkxMzZMNy4wNDk1IDMuMDg2MzhMNS4zMTc3IDQuODE4MTlDNS4xNDE5NiA0Ljk5MzkyIDQuODU3MDQgNC45OTM5MiA0LjY4MTMgNC44MTgxOUM0LjUwNTU3IDQuNjQyNDUgNC41MDU1NyA0LjM1NzUzIDQuNjgxMyA0LjE4MTc5TDcuMTgxMyAxLjY4MTc5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sS3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMDc5MjYgMC4yMjIyNTNDNy4zMTI3NSAtMC4wMDc0MzQgNy42ODczIC0wLjAwNzQzNCA3LjkyMDc5IDAuMjIyMjUzTDE0LjY3MDggNi44NjIyN0MxNC45MDcgNy4wOTQ2NSAxNC45MTAxIDcuNDc0NTMgMTQuNjc3OCA3LjcxMDc2QzE0LjQ0NTQgNy45NDcgMTQuMDY1NSA3Ljk1MDEyIDEzLjgyOTMgNy43MTc3M0wxMyA2LjkwMjAxVjEyLjVDMTMgMTIuNzc2MSAxMi43NzYyIDEzIDEyLjUgMTNIMi41MDAwMkMyLjIyMzg4IDEzIDIuMDAwMDIgMTIuNzc2MSAyLjAwMDAyIDEyLjVWNi45MDIwMUwxLjE3MDc5IDcuNzE3NzNDMC45MzQ1NTggNy45NTAxMiAwLjU1NDY3MiA3Ljk0NyAwLjMyMjI5IDcuNzEwNzZDMC4wODk5MDc5IDcuNDc0NTMgMC4wOTMwMjgzIDcuMDk0NjUgMC4zMjkyNiA2Ljg2MjI3TDcuMDc5MjYgMC4yMjIyNTNaTTcuNTAwMDIgMS40OTE2M0wxMiA1LjkxODMxVjEySDEwVjguNDk5OTlDMTAgOC4yMjM4NSA5Ljc3NjE3IDcuOTk5OTkgOS41MDAwMiA3Ljk5OTk5SDYuNTAwMDJDNi4yMjM4OCA3Ljk5OTk5IDYuMDAwMDIgOC4yMjM4NSA2LjAwMDAyIDguNDk5OTlWMTJIMy4wMDAwMlY1LjkxODMxTDcuNTAwMDIgMS40OTE2M1pNNy4wMDAwMiAxMkg5LjAwMDAyVjguOTk5OTlINy4wMDAwMlYxMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFh0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMC4wMDMyOTU5QzYuODA0NzMgMC4wMDMyOTU5IDYuMjQ5NTMgMC4yODExMDYgNi4yNSAwLjc0OTk5NUM2LjI1IDAuOTk3MjU4IDYuNDI0NDYgMS4xMjAxNCA2LjU3Njg3IDEuMjI3NDlDNi42OTUwNyAxLjMxMDc0IDYuOCAxLjM4NDY1IDYuOCAxLjVDNi44IDEuNzA3MSA2LjA2MjI0IDEuNzQyNjQgNS4xOTc4OSAxLjc4NDI3QzMuOTc1NTMgMS44NDMxNCAyLjUgMS45MTQyMSAyLjUgMi41QzIuNSAyLjc3NjE0IDIuNzIzODYgMyAzIDNIMTJDMTIuMjc2MSAzIDEyLjUgMi43NzYxNCAxMi41IDIuNUMxMi41IDEuOTE0MjEgMTEuMDI0NSAxLjg0MzE0IDkuODAyMTEgMS43ODQyN0M4LjkzNzc2IDEuNzQyNjQgOC4yIDEuNzA3MSA4LjIgMS41QzguMiAxLjM4NDY1IDguMzA0OTMgMS4zMTA3NCA4LjQyMzEzIDEuMjI3NDlDOC41NzU1NCAxLjEyMDE0IDguNzUgMC45OTcyNTggOC43NSAwLjc0OTk5NUM4Ljc1MDQ3IDAuMjgxMTA2IDguMTk1MjcgMC4wMDMyOTU5IDcuNSAwLjAwMzI5NTlaTTIuODk0NTEgNi4xMjI2NkMyLjI1ODA2IDYuNTI0NzEgMS45MDQxNyA3LjMxMTE4IDIuMDI0NzMgOC4wNTU2TDIuODM1ODggMTIuNDc3MkMzLjAwOTkzIDEzLjM1NjIgMy43NjI5IDE0IDQuNjYwNjEgMTRIMTAuMzM3M0MxMS4yMzU0IDE0IDExLjk4ODQgMTMuMzU2MiAxMi4xNjI1IDEyLjQ3NzJMMTIuOTczNiA4LjA1NjA3QzEzLjA4OSA3LjMyMzU4IDEyLjgyODQgNi41MzI3NiAxMi4xMzMxIDYuMDkzNzNDMTEuNzI4MyA1LjgzMDEzIDExLjY0MTIgNS4zMzIzMSAxMi4xMzMxIDUuMTI3OTZDMTIuODI4NCA0Ljg2NDM1IDEyLjY5NDggNCAxMiA0SDEwLjMwMDFINi44MDAwNUgyLjk5OTk2QzIuMzA0NjkgNCAyLjE5ODc4IDQuODkzMjggMi44OTQ1MSA1LjE1Njg5QzMuMzg2NDIgNS4zMzIzMSAzLjI5OTM5IDUuODMwMTMgMi44OTQ1MSA2LjEyMjY2Wk04LjIwMDA2IDYuMjVDOC4yMDAwNiA1LjgxNzY5IDguMDg1NzIgNS4zNzYxNSA3LjkwNjM1IDVMNC4xMTA5MyA1QzQuMjA2MjYgNS4yMTMxMiA0LjI0MTkgNS40Mzg4OSA0LjIyOTA0IDUuNjU1MjFDNC4xOTUyMiA2LjIyNDEyIDMuODQ1ODcgNi42Njg5OSAzLjQ4MDE2IDYuOTMzMjJMMy40NTQ5MiA2Ljk1MTQ2TDMuNDI4NTggNi45NjgxQzMuMTM0MDcgNy4xNTQxNCAyLjk1ODAxIDcuNTM5ODkgMy4wMTA1OCA3Ljg4NzQ5TDMuODE3OTcgMTIuMjg4NkMzLjkwNTEzIDEyLjcxNTQgNC4yNjE0OCAxMyA0LjY2MDYxIDEzSDEwLjMzNzNDMTAuNzM3IDEzIDExLjA5MzIgMTIuNzE1MyAxMS4xODA0IDEyLjI4ODZMMTEuOTg3NCA3Ljg4OThDMTIuMDQ4IDcuNDgyNDcgMTEuODk1NCA3LjEyNjMxIDExLjU5OTIgNi45MzkyN0wxMS41ODc1IDYuOTMxODRMMTEuNTg3NSA2LjkzMTc2QzExLjE5NDcgNi42NzYwMiAxMC44MzMxIDYuMjI3ODUgMTAuNzk4NiA1LjY0Nzk4QzEwLjc4NDYgNS40MTIgMTAuODI2NCA1LjE5Mzk3IDEwLjkxMTIgNUg5LjA1NTE3QzkuMDE5ODcgNS4xNDYxMSA5LjAwMDA2IDUuMzEyMDEgOS4wMDAwNiA1LjVDOS4wMDAwNiA1Ljk3NDUgOS4yMTY3OSA2LjM3MTI3IDkuNDQzNjcgNi43ODY2MkM5LjY5Mjg0IDcuMjQyNzggOS45NTQyNSA3LjcyMTM2IDkuOTU0MjUgOC4zNDk5M0M5Ljk1NDI1IDkuMjY5OCA5LjQ5ODY4IDkuODQyMDUgOC42MjE4OSA5Ljg0MjA1QzguMTMyMDYgOS44NDIwNSA3LjU3ODE4IDkuNDYwOTcgNy41NzgxOCA4Ljc1NzgxQzcuNTc4MTggOC4zNTI3OSA3LjcxNTU4IDguMDE2NDYgNy44NjEyMSA3LjY1OTk4QzguMDI1NCA3LjI1ODA2IDguMjAwMDYgNi44MzA1MSA4LjIwMDA2IDYuMjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxRdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTQgMTEuMDAwMVY0LjAwMDA2TDEgNC4wMDAwNkwxIDExLjAwMDFIMTRaTTE1IDQuMDAwMDZWMTEuMDAwMUMxNSAxMS41NTIzIDE0LjU1MjMgMTIuMDAwMSAxNCAxMi4wMDAxSDFDMC40NDc3MTUgMTIuMDAwMSAwIDExLjU1MjMgMCAxMS4wMDAxVjQuMDAwMDZDMCAzLjQ0Nzc4IDAuNDQ3NzE1IDMuMDAwMDYgMSAzLjAwMDA2SDE0QzE0LjU1MjMgMy4wMDAwNiAxNSAzLjQ0Nzc4IDE1IDQuMDAwMDZaTTIgNS4yNUMyIDUuMTExOTMgMi4xMTE5MyA1IDIuMjUgNUg1Ljc1QzUuODg4MDcgNSA2IDUuMTExOTMgNiA1LjI1VjkuNzVDNiA5Ljg4ODA3IDUuODg4MDcgMTAgNS43NSAxMEgyLjI1QzIuMTExOTMgMTAgMiA5Ljg4ODA3IDIgOS43NVY1LjI1Wk03LjUgN0M3LjIyMzg2IDcgNyA3LjIyMzg2IDcgNy41QzcgNy43NzYxNCA3LjIyMzg2IDggNy41IDhIMTAuNUMxMC43NzYxIDggMTEgNy43NzYxNCAxMSA3LjVDMTEgNy4yMjM4NiAxMC43NzYxIDcgMTAuNSA3SDcuNVpNNyA5LjVDNyA5LjIyMzg2IDcuMjIzODYgOSA3LjUgOUgxMi41QzEyLjc3NjEgOSAxMyA5LjIyMzg2IDEzIDkuNUMxMyA5Ljc3NjE0IDEyLjc3NjEgMTAgMTIuNSAxMEg3LjVDNy4yMjM4NiAxMCA3IDkuNzc2MTQgNyA5LjVaTTcuNSA1QzcuMjIzODYgNSA3IDUuMjIzODYgNyA1LjVDNyA1Ljc3NjE0IDcuMjIzODYgNiA3LjUgNkgxMS41QzExLjc3NjEgNiAxMiA1Ljc3NjE0IDEyIDUuNUMxMiA1LjIyMzg2IDExLjc3NjEgNSAxMS41IDVINy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuNSAxSDEyLjVDMTMuMzI4NCAxIDE0IDEuNjcxNTcgMTQgMi41VjEyLjVDMTQgMTMuMzI4NCAxMy4zMjg0IDE0IDEyLjUgMTRIMi41QzEuNjcxNTcgMTQgMSAxMy4zMjg0IDEgMTIuNVYyLjVDMSAxLjY3MTU3IDEuNjcxNTcgMSAyLjUgMVpNMi41IDJDMi4yMjM4NiAyIDIgMi4yMjM4NiAyIDIuNVY4LjM2MzZMMy42ODE4IDYuNjgxOEMzLjc2ODA5IDYuNTk1NTEgMy44ODU3MiA2LjU0Nzk3IDQuMDA3NzQgNi41NTAwN0M0LjEyOTc1IDYuNTUyMTYgNC4yNDU2OCA2LjYwMzcyIDQuMzI4OTUgNi42OTI5M0w3Ljg3MzU1IDEwLjQ5MDFMMTAuNjgxOCA3LjY4MThDMTAuODU3NSA3LjUwNjA3IDExLjE0MjUgNy41MDYwNyAxMS4zMTgyIDcuNjgxOEwxMyA5LjM2MzZWMi41QzEzIDIuMjIzODYgMTIuNzc2MSAyIDEyLjUgMkgyLjVaTTIgMTIuNVY5LjYzNjRMMy45ODg4NyA3LjY0NzUzTDcuNTMxMSAxMS40NDIxTDguOTQxMTMgMTNIMi41QzIuMjIzODYgMTMgMiAxMi43NzYxIDIgMTIuNVpNMTIuNSAxM0gxMC4xNTVMOC40ODMzNiAxMS4xNTNMMTEgOC42MzY0TDEzIDEwLjYzNjRWMTIuNUMxMyAxMi43NzYxIDEyLjc3NjEgMTMgMTIuNSAxM1pNNi42NDkyMiA1LjVDNi42NDkyMiA1LjAzMDEzIDcuMDMwMTMgNC42NDkyMiA3LjUgNC42NDkyMkM3Ljk2OTg3IDQuNjQ5MjIgOC4zNTA3OCA1LjAzMDEzIDguMzUwNzggNS41QzguMzUwNzggNS45Njk4NyA3Ljk2OTg3IDYuMzUwNzggNy41IDYuMzUwNzhDNy4wMzAxMyA2LjM1MDc4IDYuNjQ5MjIgNS45Njk4NyA2LjY0OTIyIDUuNVpNNy41IDMuNzQ5MjJDNi41MzMwNyAzLjc0OTIyIDUuNzQ5MjIgNC41MzMwNyA1Ljc0OTIyIDUuNUM1Ljc0OTIyIDYuNDY2OTMgNi41MzMwNyA3LjI1MDc4IDcuNSA3LjI1MDc4QzguNDY2OTMgNy4yNTA3OCA5LjI1MDc4IDYuNDY2OTMgOS4yNTA3OCA1LjVDOS4yNTA3OCA0LjUzMzA3IDguNDY2OTMgMy43NDkyMiA3LjUgMy43NDkyMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGVuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc2ODkyQzMuODQyMjIgMC44NzY4OTIgMC44NzcwNzUgMy44NDIwNCAwLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDExLjE1NzQgMy44NDIyMiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMxMS4xNTc2IDE0LjEyMjYgMTQuMTIyNyAxMS4xNTc0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDMuODQyMDQgMTEuMTU3NiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyWk0xLjgyNzA3IDcuNDk5NzJDMS44MjcwNyA0LjM2NjcxIDQuMzY2ODkgMS44MjY4OSA3LjQ5OTkxIDEuODI2ODlDMTAuNjMyOSAxLjgyNjg5IDEzLjE3MjcgNC4zNjY3MSAxMy4xNzI3IDcuNDk5NzJDMTMuMTcyNyAxMC42MzI3IDEwLjYzMjkgMTMuMTcyNiA3LjQ5OTkxIDEzLjE3MjZDNC4zNjY4OSAxMy4xNzI2IDEuODI3MDcgMTAuNjMyNyAxLjgyNzA3IDcuNDk5NzJaTTguMjQ5OTIgNC40OTk5OUM4LjI0OTkyIDQuOTE0MiA3LjkxNDEzIDUuMjQ5OTkgNy40OTk5MiA1LjI0OTk5QzcuMDg1NzEgNS4yNDk5OSA2Ljc0OTkyIDQuOTE0MiA2Ljc0OTkyIDQuNDk5OTlDNi43NDk5MiA0LjA4NTc3IDcuMDg1NzEgMy43NDk5OSA3LjQ5OTkyIDMuNzQ5OTlDNy45MTQxMyAzLjc0OTk5IDguMjQ5OTIgNC4wODU3NyA4LjI0OTkyIDQuNDk5OTlaTTYuMDAwMDMgNS45OTk5OUg2LjUwMDAzSDcuNTAwMDNDNy43NzYxOCA1Ljk5OTk5IDguMDAwMDMgNi4yMjM4NCA4LjAwMDAzIDYuNDk5OTlWOS45OTk5OUg4LjUwMDAzSDkuMDAwMDNWMTFIOC41MDAwM0g3LjUwMDAzSDYuNTAwMDNINi4wMDAwM1Y5Ljk5OTk5SDYuNTAwMDNINy4wMDAwM1Y2Ljk5OTk5SDYuNTAwMDNINi4wMDAwM1Y1Ljk5OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuNSAxQzYuMjIzODYgMSA2IDEuMjIzODYgNiAxLjVDNiAxLjc3NjE0IDYuMjIzODYgMiA2LjUgMkM3LjEyNjcxIDIgNy40NTcxOCAyLjIwMDI4IDcuNjU1NjMgMi40NzgxMkM3Ljg3ODEgMi43ODk1NyA4IDMuMjg4MzcgOCA0VjExQzggMTEuNzExNiA3Ljg3ODEgMTIuMjEwNCA3LjY1NTYzIDEyLjUyMTlDNy40NTcxOCAxMi43OTk3IDcuMTI2NzEgMTMgNi41IDEzQzYuMjIzODYgMTMgNiAxMy4yMjM5IDYgMTMuNUM2IDEzLjc3NjEgNi4yMjM4NiAxNCA2LjUgMTRDNy4zNzMyOSAxNCA4LjA0MjgyIDEzLjcwMDMgOC40NjkzNyAxMy4xMDMxQzguNDc5NzYgMTMuMDg4NiA4LjQ4OTk3IDEzLjA3MzkgOC41IDEzLjA1OTFDOC41MTAwMyAxMy4wNzM5IDguNTIwMjQgMTMuMDg4NiA4LjUzMDYzIDEzLjEwMzFDOC45NTcxOCAxMy43MDAzIDkuNjI2NzEgMTQgMTAuNSAxNEMxMC43NzYxIDE0IDExIDEzLjc3NjEgMTEgMTMuNUMxMSAxMy4yMjM5IDEwLjc3NjEgMTMgMTAuNSAxM0M5Ljg3MzI5IDEzIDkuNTQyODIgMTIuNzk5NyA5LjM0NDM3IDEyLjUyMTlDOS4xMjE5IDEyLjIxMDQgOSAxMS43MTE2IDkgMTFWNEM5IDMuMjg4MzcgOS4xMjE5IDIuNzg5NTcgOS4zNDQzNyAyLjQ3ODEyQzkuNTQyODIgMi4yMDAyOCA5Ljg3MzI5IDIgMTAuNSAyQzEwLjc3NjEgMiAxMSAxLjc3NjE0IDExIDEuNUMxMSAxLjIyMzg2IDEwLjc3NjEgMSAxMC41IDFDOS42MjY3MSAxIDguOTU3MTggMS4yOTk3MiA4LjUzMDYzIDEuODk2ODhDOC41MjAyNCAxLjkxMTQzIDguNTEwMDMgMS45MjYxMSA4LjUgMS45NDA5QzguNDg5OTcgMS45MjYxMSA4LjQ3OTc2IDEuOTExNDMgOC40NjkzNyAxLjg5Njg4QzguMDQyODIgMS4yOTk3MiA3LjM3MzI5IDEgNi41IDFaTTE0IDVIMTFWNEgxNEMxNC41NTIzIDQgMTUgNC40NDc3MiAxNSA1VjEwQzE1IDEwLjU1MjMgMTQuNTUyMyAxMSAxNCAxMUgxMVYxMEgxNFY1Wk02IDRWNUgxTDEgMTBINlYxMUgxQzAuNDQ3NzE1IDExIDAgMTAuNTUyMyAwIDEwVjVDMCA0LjQ0NzcyIDAuNDQ3NzE1IDQgMSA0SDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxubj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS40OTk5OCAwLjVDNS40OTk5OCAwLjIyMzg1OCA1LjcyMzgzIDAgNS45OTk5OCAwSDcuNDk5OThIOC45OTk5OEM5LjI3NjEyIDAgOS40OTk5OCAwLjIyMzg1OCA5LjQ5OTk4IDAuNUM5LjQ5OTk4IDAuNzc2MTQyIDkuMjc2MTIgMSA4Ljk5OTk4IDFINy45OTk5OFYyLjExOTIyQzkuMDk4MzIgMi4yMDQwOSAxMC4xMTkgMi41NjYyMiAxMC45OTIgMy4xMzU3MkMxMS4wMTE2IDMuMTA4NTEgMTEuMDMzNiAzLjA4MjUyIDExLjA1OCAzLjA1ODA2TDEyLjA1OCAyLjA1ODA2QzEyLjMwMjEgMS44MTM5OCAxMi42OTc4IDEuODEzOTggMTIuOTQxOSAyLjA1ODA2QzEzLjE4NiAyLjMwMjE0IDEzLjE4NiAyLjY5Nzg2IDEyLjk0MTkgMi45NDE5NEwxMS45NjcgMy45MTY4MkMxMy4xNTk1IDUuMDc5MjUgMTMuOSA2LjcwMzE0IDEzLjkgOC40OTk5OEMxMy45IDEyLjAzNDYgMTEuMDM0NiAxNC45IDcuNDk5OTggMTQuOUMzLjk2NTM1IDE0LjkgMS4wOTk5OCAxMi4wMzQ2IDEuMDk5OTggOC40OTk5OEMxLjA5OTk4IDUuMTMzNjEgMy42OTkwNCAyLjM3NDMgNi45OTk5OCAyLjExOTIyVjFINS45OTk5OEM1LjcyMzgzIDEgNS40OTk5OCAwLjc3NjE0MiA1LjQ5OTk4IDAuNVpNMi4wOTk5OCA4LjQ5OTk4QzIuMDk5OTggNS41MTc2NCA0LjUxNzY0IDMuMDk5OTggNy40OTk5OCAzLjA5OTk4QzEwLjQ4MjMgMy4wOTk5OCAxMi45IDUuNTE3NjQgMTIuOSA4LjQ5OTk4QzEyLjkgMTEuNDgyMyAxMC40ODIzIDEzLjkgNy40OTk5OCAxMy45QzQuNTE3NjQgMTMuOSAyLjA5OTk4IDExLjQ4MjMgMi4wOTk5OCA4LjQ5OTk4Wk03LjQ5OTk4IDguNDk5OThWNC4wOTk5OEM1LjA2OTkyIDQuMDk5OTggMy4wOTk5OCA2LjA2OTkyIDMuMDk5OTggOC40OTk5OEMzLjA5OTk4IDEwLjkzIDUuMDY5OTIgMTIuOSA3LjQ5OTk4IDEyLjlDOC43MTUgMTIuOSA5LjgxNSAxMi40MDc1IDEwLjYxMTIgMTEuNjExMkw3LjQ5OTk4IDguNDk5OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxybj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy43NTQzMiAwLjgxOTUzN0M3LjU5NzQyIDAuNzI2ODIxIDcuNDAyNSAwLjcyNjgyMSA3LjI0NTU5IDAuODE5NTM3TDEuNzQ1NTkgNC4wNjk1NEMxLjU5MzM2IDQuMTU5NDkgMS40OTk5NiA0LjMyMzE3IDEuNDk5OTYgNC41QzEuNDk5OTYgNC42NzY4MyAxLjU5MzM2IDQuODQwNTEgMS43NDU1OSA0LjkzMDQ2TDcuMjQ1NTkgOC4xODA0NkM3LjQwMjUgOC4yNzMxOCA3LjU5NzQyIDguMjczMTggNy43NTQzMiA4LjE4MDQ2TDEzLjI1NDMgNC45MzA0NkMxMy40MDY2IDQuODQwNTEgMTMuNSA0LjY3NjgzIDEzLjUgNC41QzEzLjUgNC4zMjMxNyAxMy40MDY2IDQuMTU5NDkgMTMuMjU0MyA0LjA2OTU0TDcuNzU0MzIgMC44MTk1MzdaTTcuNDk5OTYgNy4xNjkyM0wyLjk4MjggNC41TDcuNDk5OTYgMS44MzA3N0wxMi4wMTcxIDQuNUw3LjQ5OTk2IDcuMTY5MjNaTTEuNTY5NSA3LjQ5NTY0QzEuNzA5OTggNy4yNTc5IDIuMDE2NTkgNy4xNzkwNiAyLjI1NDMyIDcuMzE5NTRMNy40OTk5NiAxMC40MTkyTDEyLjc0NTYgNy4zMTk1NEMxMi45ODMzIDcuMTc5MDYgMTMuMjg5OSA3LjI1NzkgMTMuNDMwNCA3LjQ5NTY0QzEzLjU3MDkgNy43MzMzNyAxMy40OTIxIDguMDM5OTggMTMuMjU0MyA4LjE4MDQ2TDcuNzU0MzIgMTEuNDMwNUM3LjU5NzQyIDExLjUyMzIgNy40MDI1IDExLjUyMzIgNy4yNDU1OSAxMS40MzA1TDEuNzQ1NTkgOC4xODA0NkMxLjUwNzg2IDguMDM5OTggMS40MjkwMSA3LjczMzM3IDEuNTY5NSA3LjQ5NTY0Wk0xLjU2OTQ5IDEwLjQ5NTZDMS43MDk5OCAxMC4yNTc5IDIuMDE2NTggMTAuMTc5MSAyLjI1NDMyIDEwLjMxOTVMNy40OTk5NiAxMy40MTkyTDEyLjc0NTYgMTAuMzE5NUMxMi45ODMzIDEwLjE3OTEgMTMuMjg5OSAxMC4yNTc5IDEzLjQzMDQgMTAuNDk1NkMxMy41NzA5IDEwLjczMzQgMTMuNDkyMSAxMS4wNCAxMy4yNTQzIDExLjE4MDVMNy43NTQzMiAxNC40MzA1QzcuNTk3NDIgMTQuNTIzMiA3LjQwMjUgMTQuNTIzMiA3LjI0NTU5IDE0LjQzMDVMMS43NDU1OSAxMS4xODA1QzEuNTA3ODUgMTEuMDQgMS40MjkwMSAxMC43MzM0IDEuNTY5NDkgMTAuNDk1NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG9uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05IDJINlYxM0g5VjJaTTEwIDJWMTNIMTIuNUMxMi43NzYxIDEzIDEzIDEyLjc3NjEgMTMgMTIuNVYyLjVDMTMgMi4yMjM4NiAxMi43NzYxIDIgMTIuNSAySDEwWk0yLjUgMkg1VjEzSDIuNUMyLjIyMzg2IDEzIDIgMTIuNzc2MSAyIDEyLjVWMi41QzIgMi4yMjM4NiAyLjIyMzg2IDIgMi41IDJaTTIuNSAxQzEuNjcxNTcgMSAxIDEuNjcxNTcgMSAyLjVWMTIuNUMxIDEzLjMyODQgMS42NzE1NyAxNCAyLjUgMTRIMTIuNUMxMy4zMjg0IDE0IDE0IDEzLjMyODQgMTQgMTIuNVYyLjVDMTQgMS42NzE1NyAxMy4zMjg0IDEgMTIuNSAxSDIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGFuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjY4OTc5IDIuNzVDMy44OTY2NyAyLjc0OTc5IDQuMDgyMzIgMi44NzcwMSA0LjE1Njc5IDMuMDcwMDNMNy4zNjY2MiAxMS4zOUM3LjQ2NjAyIDExLjY0NzcgNy4zMzc3NCAxMS45MzcxIDcuMDgwMSAxMi4wMzY1QzYuODIyNDcgMTIuMTM1OSA2LjUzMzA0IDEyLjAwNzYgNi40MzM2NSAxMS43NUw1LjM4MjUgOS4wMjUzN0gyLjAxMTMzTDAuOTY2OTkyIDExLjc0OUMwLjg2ODEyOCAxMi4wMDY4IDAuNTc4OTY0IDEyLjEzNTcgMC4zMjExMjYgMTIuMDM2OUMwLjA2MzI4NzggMTEuOTM4IC0wLjA2NTU4NjQgMTEuNjQ4OCAwLjAzMzI3NzQgMTEuMzkxTDMuMjIzNDQgMy4wNzA5OUMzLjI5NzUxIDIuODc3ODIgMy40ODI5IDIuNzUwMjEgMy42ODk3OSAyLjc1Wk0zLjY5MTc0IDQuNjQyODRMNS4wNTQ1OCA4LjE3NTM3SDIuMzM3MjRMMy42OTE3NCA0LjY0Mjg0Wk0xMC44OTg5IDUuMjA3MDNDOS4yNTgxOCA1LjIwNzAzIDguMDA5MTUgNi42ODU2OSA4LjAwOTE1IDguNjA5NzJDOC4wMDkxNSAxMC42MzM3IDkuMzU4MTggMTIuMDEyNCAxMC44OTg5IDEyLjAxMjRDMTEuNzIxNCAxMi4wMTI0IDEyLjU3NDQgMTEuNjY5MiAxMy4xNTQzIDExLjAyMTlWMTEuNTNDMTMuMTU0MyAxMS43Nzg1IDEzLjM1NTcgMTEuOTggMTMuNjA0MyAxMS45OEMxMy44NTI4IDExLjk4IDE0LjA1NDMgMTEuNzc4NSAxNC4wNTQzIDExLjUzVjUuNzJDMTQuMDU0MyA1LjQ3MTQ3IDEzLjg1MjggNS4yNyAxMy42MDQzIDUuMjdDMTMuMzU1NyA1LjI3IDEzLjE1NDMgNS40NzE0NyAxMy4xNTQzIDUuNzJWNi4yMjMxN0MxMi42MDU0IDUuNjAwOTUgMTEuNzkyNCA1LjIwNzAzIDEwLjg5ODkgNS4yMDcwM1pNMTMuMTU0MyA5Ljc5ODIzVjcuMzAxOTVDMTIuNzYzOSA2LjU4MTAxIDExLjk0MTQgNi4wNTc1NyAxMS4wODY4IDYuMDU3NTdDMTAuMTA4OCA2LjA1NzU3IDkuMDM1MDMgNi45NjU4MSA5LjAzNTAzIDguNjA5NTVDOS4wMzUwMyAxMC4xNTMzIDEwLjAwODggMTEuMTYxNSAxMS4wODY4IDExLjE2MTVDMTEuOTcwMSAxMS4xNjE1IDEyLjc3MTkgMTAuNDk1MiAxMy4xNTQzIDkuNzk4MjNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxsbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy42OTg5OSA1LjIwNzAzQzIuMDU4MjMgNS4yMDcwMyAwLjgwOTIwNCA2LjY4NTY5IDAuODA5MjA0IDguNjA5NzJDMC44MDkyMDQgMTAuNjMzNyAyLjE1ODIzIDEyLjAxMjQgMy42OTg5OSAxMi4wMTI0QzQuNTIxMjYgMTIuMDEyNCA1LjM3NDAyIDExLjY2OTMgNS45NTM5IDExLjAyMjNWMTEuNTNDNS45NTM5IDExLjc3ODUgNi4xNTUzNyAxMS45OCA2LjQwMzkgMTEuOThDNi42NTI0MyAxMS45OCA2Ljg1MzkgMTEuNzc4NSA2Ljg1MzkgMTEuNTNWNS43MjAwMUM2Ljg1MzkgNS40NzE0OSA2LjY1MjQzIDUuMjcwMDEgNi40MDM5IDUuMjcwMDFDNi4xNTUzNyA1LjI3MDAxIDUuOTUzOSA1LjQ3MTQ5IDUuOTUzOSA1LjcyMDAxVjYuMjIyNjlDNS40MDUwNiA1LjYwMDc1IDQuNTkyMTggNS4yMDcwMyAzLjY5ODk5IDUuMjA3MDNaTTUuOTUzOSA5Ljc5OVY3LjMwMTE3QzUuNTYzMzkgNi41ODA2NCA0Ljc0MTE4IDYuMDU3NTcgMy44ODY4IDYuMDU3NTdDMi45MDg5IDYuMDU3NTcgMS44MzUwOCA2Ljk2NTgxIDEuODM1MDggOC42MDk1NUMxLjgzNTA4IDEwLjE1MzMgMi44MDg4OSAxMS4xNjE1IDMuODg2OCAxMS4xNjE1QzQuNzY5ODQgMTEuMTYxNSA1LjU3MTQxIDEwLjQ5NTcgNS45NTM5IDkuNzk5Wk0xMC43OTkgNS4yMDcwM0M5LjE1ODIzIDUuMjA3MDMgNy45MDkyIDYuNjg1NjkgNy45MDkyIDguNjA5NzJDNy45MDkyIDEwLjYzMzcgOS4yNTgyMyAxMi4wMTI0IDEwLjc5OSAxMi4wMTI0QzExLjYyMTUgMTIuMDEyNCAxMi40NzQ0IDExLjY2OTIgMTMuMDU0MyAxMS4wMjE4VjExLjUzQzEzLjA1NDMgMTEuNzc4NSAxMy4yNTU4IDExLjk4IDEzLjUwNDMgMTEuOThDMTMuNzUyOSAxMS45OCAxMy45NTQzIDExLjc3ODUgMTMuOTU0MyAxMS41M1Y1LjcyQzEzLjk1NDMgNS40NzE0NyAxMy43NTI5IDUuMjcgMTMuNTA0MyA1LjI3QzEzLjI1NTggNS4yNyAxMy4wNTQzIDUuNDcxNDcgMTMuMDU0MyA1LjcyVjYuMjIzMThDMTIuNTA1NSA1LjYwMDk1IDExLjY5MjQgNS4yMDcwMyAxMC43OTkgNS4yMDcwM1pNMTMuMDU0MyA5Ljc5ODIyVjcuMzAxOTZDMTIuNjY0IDYuNTgxMDIgMTEuODQxNSA2LjA1NzU3IDEwLjk4NjggNi4wNTc1N0MxMC4wMDg5IDYuMDU3NTcgOC45MzUwOCA2Ljk2NTgxIDguOTM1MDggOC42MDk1NUM4LjkzNTA4IDEwLjE1MzMgOS45MDg4OSAxMS4xNjE1IDEwLjk4NjggMTEuMTYxNUMxMS44NzAyIDExLjE2MTUgMTIuNjcyIDEwLjQ5NTIgMTMuMDU0MyA5Ljc5ODIyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sY249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjI4OTUgMi43NUMxMS40OTY0IDIuNzQ5NzkgMTEuNjgyMSAyLjg3NzAxIDExLjc1NjUgMy4wNzAwM0wxNC45NjY0IDExLjM5QzE1LjA2NTcgMTEuNjQ3NyAxNC45Mzc1IDExLjkzNzEgMTQuNjc5OCAxMi4wMzY1QzE0LjQyMjIgMTIuMTM1OSAxNC4xMzI4IDEyLjAwNzYgMTQuMDMzNCAxMS43NUwxMi45ODIyIDkuMDI1MzdIOS42MTEwNkw4LjU2NjcyIDExLjc0OUM4LjQ2Nzg2IDEyLjAwNjggOC4xNzg3IDEyLjEzNTcgNy45MjA4NiAxMi4wMzY5QzcuNjYzMDIgMTEuOTM4IDcuNTM0MTQgMTEuNjQ4OCA3LjYzMzAxIDExLjM5MUwxMC44MjMyIDMuMDcwOTlDMTAuODk3MiAyLjg3NzgyIDExLjA4MjYgMi43NTAyMSAxMS4yODk1IDIuNzVaTTExLjI5MTUgNC42NDI4NEwxMi42NTQzIDguMTc1MzdIOS45MzY5OEwxMS4yOTE1IDQuNjQyODRaTTIuODk4OTUgNS4yMDcwM0MxLjI1ODE4IDUuMjA3MDMgMC4wMDkxNTUyNyA2LjY4NTY5IDAuMDA5MTU1MjcgOC42MDk3MkMwLjAwOTE1NTI3IDEwLjYzMzcgMS4zNTgxOCAxMi4wMTI0IDIuODk4OTUgMTIuMDEyNEMzLjcyMTQxIDEyLjAxMjQgNC41NzQzOCAxMS42NjkyIDUuMTU0MjcgMTEuMDIxOVYxMS41M0M1LjE1NDI3IDExLjc3ODUgNS4zNTU3NCAxMS45OCA1LjYwNDI3IDExLjk4QzUuODUyOCAxMS45OCA2LjA1NDI3IDExLjc3ODUgNi4wNTQyNyAxMS41M1Y1LjcyQzYuMDU0MjcgNS40NzE0NyA1Ljg1MjggNS4yNyA1LjYwNDI3IDUuMjdDNS4zNTU3NCA1LjI3IDUuMTU0MjcgNS40NzE0NyA1LjE1NDI3IDUuNzJWNi4yMjMxN0M0LjYwNTQzIDUuNjAwOTUgMy43OTIzNiA1LjIwNzAzIDIuODk4OTUgNS4yMDcwM1pNNS4xNTQyNyA5Ljc5ODIzVjcuMzAxOTVDNC43NjM5MyA2LjU4MTAxIDMuOTQxNDQgNi4wNTc1NyAzLjA4Njc1IDYuMDU3NTdDMi4xMDg4NSA2LjA1NzU3IDEuMDM1MDMgNi45NjU4MSAxLjAzNTAzIDguNjA5NTVDMS4wMzUwMyAxMC4xNTMzIDIuMDA4ODUgMTEuMTYxNSAzLjA4Njc1IDExLjE2MTVDMy45NzAxMSAxMS4xNjE1IDQuNzcxOTUgMTAuNDk1MiA1LjE1NDI3IDkuNzk4MjNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxzbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy42MjU1IDIuNzVDMy44MzQ3OCAyLjc1IDQuMDIxOTIgMi44ODAzNCA0LjA5NDQ4IDMuMDc2NjRMNy4xNjk4NSAxMS4zOTYyQzcuMjY1NiAxMS42NTUyIDcuMTMzMjQgMTEuOTQyOCA2Ljg3NDIzIDEyLjAzODZDNi42MTUyMiAxMi4xMzQzIDYuMzI3NjMgMTIuMDAyIDYuMjMxODggMTEuNzQyOUw1LjIyMzg3IDkuMDE2MDNIMi4wMjcxMkwxLjAxOTExIDExLjc0MjlDMC45MjMzNjIgMTIuMDAyIDAuNjM1Nzc0IDEyLjEzNDMgMC4zNzY3NjIgMTIuMDM4NkMwLjExNzc0OSAxMS45NDI4IC0wLjAxNDYwNTIgMTEuNjU1MiAwLjA4MTE0MDEgMTEuMzk2MkwzLjE1NjUxIDMuMDc2NjRDMy4yMjkwOCAyLjg4MDM0IDMuNDE2MjEgMi43NSAzLjYyNTUgMi43NVpNMy42MjU1IDQuNjkyMDdMNC45MDk2NiA4LjE2NjAzSDIuMzQxMzNMMy42MjU1IDQuNjkyMDdaTTExLjM3MTkgMi43NUMxMS41ODExIDIuNzUgMTEuNzY4MyAyLjg4MDM0IDExLjg0MDggMy4wNzY2NEwxNC45MTYyIDExLjM5NjJDMTUuMDEyIDExLjY1NTIgMTQuODc5NiAxMS45NDI4IDE0LjYyMDYgMTIuMDM4NkMxNC4zNjE2IDEyLjEzNDMgMTQuMDc0IDEyLjAwMiAxMy45NzgyIDExLjc0MjlMMTIuOTcwMiA5LjAxNjAzSDkuNzczNDhMOC43NjU0NyAxMS43NDI5QzguNjY5NzIgMTIuMDAyIDguMzgyMTMgMTIuMTM0MyA4LjEyMzEyIDEyLjAzODZDNy44NjQxMSAxMS45NDI4IDcuNzMxNzUgMTEuNjU1MiA3LjgyNzUgMTEuMzk2MkwxMC45MDI5IDMuMDc2NjRDMTAuOTc1NCAyLjg4MDM0IDExLjE2MjYgMi43NSAxMS4zNzE5IDIuNzVaTTExLjM3MTkgNC42OTIwN0wxMi42NTYgOC4xNjYwM0gxMC4wODc3TDExLjM3MTkgNC42OTIwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHVuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjU1MjkzIDAuOTk5OTY5QzQuNzUyOTUgMC45OTk5NjkgNC45MzM3MiAxLjExOTE3IDUuMDEyNSAxLjMwMzAxTDguMDExMDYgOC4yOTk4MkM4LjExOTg0IDguNTUzNjMgOC4wMDIyNiA4Ljg0NzU3IDcuNzQ4NDQgOC45NTYzNUM3LjQ5NDYzIDkuMDY1MTIgNy4yMDA2OSA4Ljk0NzU0IDcuMDkxOTEgOC42OTM3M0w2LjExNjEzIDYuNDE2ODVIMi45ODk3M0wyLjAxMzk1IDguNjkzNzNDMS45MDUxNyA4Ljk0NzU0IDEuNjExMjMgOS4wNjUxMiAxLjM1NzQyIDguOTU2MzVDMS4xMDM2IDguODQ3NTcgMC45ODYwMjMgOC41NTM2MyAxLjA5NDggOC4yOTk4Mkw0LjA5MzM2IDEuMzAzMDFDNC4xNzIxNCAxLjExOTE3IDQuMzUyOTEgMC45OTk5NjkgNC41NTI5MyAwLjk5OTk2OVpNNC41NTI5MyAyLjc2OTI5TDUuNzUxODYgNS41NjY4NUgzLjM1NEw0LjU1MjkzIDIuNzY5MjlaTTExLjA1NjIgOS4wMDIxNEMxMS4yNjE3IDkuMDAyMTQgMTEuNDQ2MyA4Ljg3NjMzIDExLjUyMTUgOC42ODUwMkwxNC4yNzMzIDEuNjgyOTlDMTQuMzc0MyAxLjQyNTk4IDE0LjI0NzggMS4xMzU3NSAxMy45OTA4IDEuMDM0NzVDMTMuNzMzOCAwLjkzMzc0NyAxMy40NDM2IDEuMDYwMjEgMTMuMzQyNiAxLjMxNzIyTDExLjA1NjIgNy4xMzUxNEw4Ljc2OTczIDEuMzE3MjJDOC42Njg3MyAxLjA2MDIxIDguMzc4NSAwLjkzMzc0NyA4LjEyMTUgMS4wMzQ3NUM3Ljg2NDQ5IDEuMTM1NzUgNy43MzgwMiAxLjQyNTk4IDcuODM5MDIgMS42ODI5OUwxMC41OTA4IDguNjg1MDJDMTAuNjY2IDguODc2MzMgMTAuODUwNiA5LjAwMjE0IDExLjA1NjIgOS4wMDIxNFpNMTQuOTUzNyAxMi40OTk5QzE0Ljk1MzcgMTIuNjA2IDE0LjkxMTUgMTIuNzA3NyAxNC44MzY1IDEyLjc4MjhMMTIuODM2NSAxNC43ODI4QzEyLjY4MDMgMTQuOTM5IDEyLjQyNzEgMTQuOTM5IDEyLjI3MDggMTQuNzgyOEMxMi4xMTQ2IDE0LjYyNjUgMTIuMTE0NiAxNC4zNzMzIDEyLjI3MDggMTQuMjE3MUwxMy41ODggMTIuODk5OUgxLjUxOTM3TDIuODM2NTMgMTQuMjE3MUMyLjk5Mjc0IDE0LjM3MzMgMi45OTI3NCAxNC42MjY1IDIuODM2NTMgMTQuNzgyOEMyLjY4MDMyIDE0LjkzOSAyLjQyNzA1IDE0LjkzOSAyLjI3MDg0IDE0Ljc4MjhMMC4yNzA4NDMgMTIuNzgyOEMwLjE5NTgyOCAxMi43MDc3IDAuMTUzNjg3IDEyLjYwNiAwLjE1MzY4NyAxMi40OTk5QzAuMTUzNjg3IDEyLjM5MzggMC4xOTU4MjggMTIuMjkyMSAwLjI3MDg0MyAxMi4yMTcxTDIuMjcwODQgMTAuMjE3MUMyLjQyNzA1IDEwLjA2MDkgMi42ODAzMiAxMC4wNjA5IDIuODM2NTMgMTAuMjE3MUMyLjk5Mjc0IDEwLjM3MzMgMi45OTI3NCAxMC42MjY1IDIuODM2NTMgMTAuNzgyOEwxLjUxOTM3IDEyLjA5OTlMMTMuNTg4IDEyLjA5OTlMMTIuMjcwOCAxMC43ODI4QzEyLjExNDYgMTAuNjI2NSAxMi4xMTQ2IDEwLjM3MzMgMTIuMjcwOCAxMC4yMTcxQzEyLjQyNzEgMTAuMDYwOSAxMi42ODAzIDEwLjA2MDkgMTIuODM2NSAxMC4yMTcxTDE0LjgzNjUgMTIuMjE3MUMxNC45MTE1IDEyLjI5MjEgMTQuOTUzNyAxMi4zOTM4IDE0Ljk1MzcgMTIuNDk5OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGRuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjY5NjY2IDAuMDQwMzU0QzguOTA4NTkgMC4xMzEwMzggOS4wMzEwNSAwLjM1NDg1NiA4Ljk5MzE1IDAuNTgyMjM1TDguMDkwMTkgNi4wMDAwMUgxMi40OTk5QzEyLjY4OTMgNi4wMDAwMSAxMi44NjI1IDYuMTA3MDEgMTIuOTQ3MiA2LjI3NjRDMTMuMDMxOCA2LjQ0NTc5IDEzLjAxMzYgNi42NDg1IDEyLjg5OTkgNi44TDYuODk5OTcgMTQuOEM2Ljc2MTY2IDE0Ljk4NDQgNi41MTUyIDE1LjA1MDMgNi4zMDMyNyAxNC45NTk2QzYuMDkxMzQgMTQuODY5IDUuOTY4ODggMTQuNjQ1MSA2LjAwNjc4IDE0LjQxNzhMNi45MDk3NCA4Ljk5OTk5SDIuNDk5OTlDMi4zMTA2MSA4Ljk5OTk5IDIuMTM3NDcgOC44OTI5OSAyLjA1Mjc4IDguNzIzNkMxLjk2ODA4IDguNTU0MjEgMS45ODYzNiA4LjM1MTUgMi4wOTk5OSA4LjJMOC4wOTk5NiAwLjIwMDAzN0M4LjIzODI3IDAuMDE1NjI1NSA4LjQ4NDczIC0wLjA1MDMzMDEgOC42OTY2NiAwLjA0MDM1NFpNMy40OTk5OSA4SDcuNDk5OTZDNy42NDY5NCA4IDcuNzg2NDcgOC4wNjQ2NiA3Ljg4MTQ3IDguMTc2ODFDNy45NzY0NyA4LjI4ODk1IDguMDE3MzIgOC40MzcyMiA3Ljk5MzE2IDguNTgyMTlMNy4zMzAyNiAxMi41NTk2TDExLjQ5OTkgN0g3LjQ5OTk2QzcuMzUyOTkgNyA3LjIxMzQ2IDYuOTM1MzQgNy4xMTg0NiA2LjgyMzE5QzcuMDIzNDYgNi43MTEwNSA2Ljk4MjYxIDYuNTYyNzggNy4wMDY3NyA2LjQxNzgxTDcuNjY5NjcgMi40NDA0MkwzLjQ5OTk5IDhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxmbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy43ODIzMyAyLjIxNzEzQzMuNzA3MzIgMi4xNDIxMiAzLjYwNTU3IDIuMDk5OTggMy40OTk0OSAyLjA5OTk4QzMuMzkzNCAyLjA5OTk4IDMuMjkxNjYgMi4xNDIxMiAzLjIxNjY0IDIuMjE3MTNMMS4yMTY2NCA0LjIxNzEzQzEuMDYwNDQgNC4zNzMzNCAxLjA2MDQ0IDQuNjI2NjEgMS4yMTY2NCA0Ljc4MjgyQzEuMzcyODUgNC45MzkwMyAxLjYyNjEyIDQuOTM5MDMgMS43ODIzMyA0Ljc4MjgyTDMuMDk5NDkgMy40NjU2NkwzLjA5OTQ5IDExLjUzNDNMMS43ODIzMyAxMC4yMTcxQzEuNjI2MTIgMTAuMDYwOSAxLjM3Mjg1IDEwLjA2MDkgMS4yMTY2NCAxMC4yMTcxQzEuMDYwNDMgMTAuMzczMyAxLjA2MDQzIDEwLjYyNjYgMS4yMTY2NCAxMC43ODI4TDMuMjE2NjQgMTIuNzgyOEMzLjI5MTY2IDEyLjg1NzggMy4zOTM0IDEyLjkgMy40OTk0OSAxMi45QzMuNjA1NTcgMTIuOSAzLjcwNzMxIDEyLjg1NzggMy43ODIzMyAxMi43ODI4TDUuNzgyMzMgMTAuNzgyOEM1LjkzODU0IDEwLjYyNjYgNS45Mzg1NCAxMC4zNzMzIDUuNzgyMzMgMTAuMjE3MUM1LjYyNjEyIDEwLjA2MDkgNS4zNzI4NSAxMC4wNjA5IDUuMjE2NjQgMTAuMjE3MUwzLjg5OTQ5IDExLjUzNDNMMy44OTk0OSAzLjQ2NTY2TDUuMjE2NjQgNC43ODI4MkM1LjM3Mjg1IDQuOTM5MDMgNS42MjYxMiA0LjkzOTAzIDUuNzgyMzMgNC43ODI4MkM1LjkzODU0IDQuNjI2NjEgNS45Mzg1NCA0LjM3MzM0IDUuNzgyMzMgNC4yMTcxM0wzLjc4MjMzIDIuMjE3MTNaTTguNDk5OTggMy45OTk5N0M4LjIyMzgzIDMuOTk5OTcgNy45OTk5OCA0LjIyMzgyIDcuOTk5OTggNC40OTk5N0M3Ljk5OTk4IDQuNzc2MTEgOC4yMjM4MyA0Ljk5OTk3IDguNDk5OTggNC45OTk5N0gxNC41QzE0Ljc3NjEgNC45OTk5NyAxNSA0Ljc3NjExIDE1IDQuNDk5OTdDMTUgNC4yMjM4MiAxNC43NzYxIDMuOTk5OTcgMTQuNSAzLjk5OTk3SDguNDk5OThaTTcuOTk5OTggNy40OTk5N0M3Ljk5OTk4IDcuMjIzODIgOC4yMjM4MyA2Ljk5OTk3IDguNDk5OTggNi45OTk5N0gxNC41QzE0Ljc3NjEgNi45OTk5NyAxNSA3LjIyMzgyIDE1IDcuNDk5OTdDMTUgNy43NzYxMSAxNC43NzYxIDcuOTk5OTcgMTQuNSA3Ljk5OTk3SDguNDk5OThDOC4yMjM4MyA3Ljk5OTk3IDcuOTk5OTggNy43NzYxMSA3Ljk5OTk4IDcuNDk5OTdaTTguNDk5OTggOS45OTk5N0M4LjIyMzgzIDkuOTk5OTcgNy45OTk5OCAxMC4yMjM4IDcuOTk5OTggMTAuNUM3Ljk5OTk4IDEwLjc3NjEgOC4yMjM4MyAxMSA4LjQ5OTk4IDExSDE0LjVDMTQuNzc2MSAxMSAxNSAxMC43NzYxIDE1IDEwLjVDMTUgMTAuMjIzOCAxNC43NzYxIDkuOTk5OTcgMTQuNSA5Ljk5OTk3SDguNDk5OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxwbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC42MjQ3MSA0LjAwMDAxTDQuNTY0MDIgNC4wMDAwMUM0LjA0MTM0IDMuOTk5OTMgMy43MDY4NyAzLjk5OTg4IDMuNDE4MiA0LjA1NUMyLjIzNzkgNC4yODAzOSAxLjI5ODQ2IDUuMTcwNTMgMS4wNTgxNSA2LjMzMDM1QzAuOTk5NTM4IDYuNjEzMjEgMC45OTk2MDQgNi45Mzk5OCAwLjk5OTcwMyA3LjQzNjg5TDAuOTk5NzExIDcuNTAwMDFMMC45OTk3MDMgNy41NjMxM0MwLjk5OTYwNCA4LjA2MDA0IDAuOTk5NTM4IDguMzg2ODEgMS4wNTgxNSA4LjY2OTY3QzEuMjk4NDYgOS44Mjk1IDIuMjM3OSAxMC43MTk2IDMuNDE4MiAxMC45NDVDMy43MDY4OCAxMS4wMDAxIDQuMDQxMzUgMTEuMDAwMSA0LjU2NDAzIDExTDQuNjI0NzEgMTFINS40OTk3MUM1Ljc3NTg1IDExIDUuOTk5NzEgMTAuNzc2MiA1Ljk5OTcxIDEwLjVDNS45OTk3MSAxMC4yMjM5IDUuNzc1ODUgMTAgNS40OTk3MSAxMEg0LjYyNDcxQzQuMDIwODQgMTAgMy43ODkwNyA5Ljk5Nzc3IDMuNjA1NzcgOS45NjI3N0MyLjgwMjYyIDkuODA5NCAyLjE5MTU3IDkuMjExMDggMi4wMzczNSA4LjQ2Njc4QzIuMDAyMzMgOC4yOTc3OCAxLjk5OTcxIDguMDgyNTEgMS45OTk3MSA3LjUwMDAxQzEuOTk5NzEgNi45MTc1MiAyLjAwMjMzIDYuNzAyMjUgMi4wMzczNSA2LjUzMzI0QzIuMTkxNTcgNS43ODg5NSAyLjgwMjYyIDUuMTkwNjIgMy42MDU3NyA1LjAzNzI1QzMuNzg5MDcgNS4wMDIyNSA0LjAyMDg0IDUuMDAwMDEgNC42MjQ3MSA1LjAwMDAxSDUuNDk5NzFDNS43NzU4NSA1LjAwMDAxIDUuOTk5NzEgNC43NzYxNSA1Ljk5OTcxIDQuNTAwMDFDNS45OTk3MSA0LjIyMzg3IDUuNzc1ODUgNC4wMDAwMSA1LjQ5OTcxIDQuMDAwMDFINC42MjQ3MVpNMTAuMzc0NyA1LjAwMDAxQzEwLjk3ODYgNS4wMDAwMSAxMS4yMTA0IDUuMDAyMjUgMTEuMzkzNyA1LjAzNzI1QzEyLjE5NjggNS4xOTA2MiAxMi44MDc5IDUuNzg4OTUgMTIuOTYyMSA2LjUzMzI0QzEyLjk5NzEgNi43MDIyNSAxMi45OTk3IDYuOTE3NTIgMTIuOTk5NyA3LjUwMDAxQzEyLjk5OTcgOC4wODI1MSAxMi45OTcxIDguMjk3NzggMTIuOTYyMSA4LjQ2Njc4QzEyLjgwNzkgOS4yMTEwOCAxMi4xOTY4IDkuODA5NCAxMS4zOTM3IDkuOTYyNzdDMTEuMjEwNCA5Ljk5Nzc3IDEwLjk3ODYgMTAgMTAuMzc0NyAxMEg5LjQ5OTcxQzkuMjIzNTcgMTAgOC45OTk3MSAxMC4yMjM5IDguOTk5NzEgMTAuNUM4Ljk5OTcxIDEwLjc3NjIgOS4yMjM1NyAxMSA5LjQ5OTcxIDExSDEwLjM3NDdMMTAuNDM1NCAxMUMxMC45NTgxIDExLjAwMDEgMTEuMjkyNSAxMS4wMDAxIDExLjU4MTIgMTAuOTQ1QzEyLjc2MTUgMTAuNzE5NiAxMy43MDEgOS44Mjk1IDEzLjk0MTMgOC42Njk2N0MxMy45OTk5IDguMzg2ODEgMTMuOTk5OCA4LjA2MDA1IDEzLjk5OTcgNy41NjMxNEwxMy45OTk3IDcuNTAwMDFMMTMuOTk5NyA3LjQzNjg4QzEzLjk5OTggNi45Mzk5OCAxMy45OTk5IDYuNjEzMjEgMTMuOTQxMyA2LjMzMDM1QzEzLjcwMSA1LjE3MDUzIDEyLjc2MTUgNC4yODAzOSAxMS41ODEyIDQuMDU1QzExLjI5MjUgMy45OTk4OCAxMC45NTgxIDMuOTk5OTMgMTAuNDM1NCA0LjAwMDAxTDEwLjM3NDcgNC4wMDAwMUg5LjQ5OTcxQzkuMjIzNTcgNC4wMDAwMSA4Ljk5OTcxIDQuMjIzODcgOC45OTk3MSA0LjUwMDAxQzguOTk5NzEgNC43NzYxNSA5LjIyMzU3IDUuMDAwMDEgOS40OTk3MSA1LjAwMDAxSDEwLjM3NDdaTTUuMDAwMzggN0M0LjcyNDI0IDcgNC41MDAzOCA3LjIyMzg2IDQuNTAwMzggNy41QzQuNTAwMzggNy43NzYxNCA0LjcyNDI0IDggNS4wMDAzOCA4SDEwLjAwMDRDMTAuMjc2NSA4IDEwLjUwMDQgNy43NzYxNCAxMC41MDA0IDcuNUMxMC41MDA0IDcuMjIzODYgMTAuMjc2NSA3IDEwLjAwMDQgN0g1LjAwMDM4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguNTExOTQgMy4wMDU0MUM5LjE4ODI5IDIuNTQ1OTQgMTAuMDQzNSAyLjUzNjk0IDEwLjY3ODggMi45NTQxOUMxMC44MjMxIDMuMDQ4OTMgMTAuOTc3MSAzLjE5OTMgMTEuMzg5IDMuNjExMTlDMTEuODAwOSA0LjAyMzA3IDExLjk1MTMgNC4xNzcxNCAxMi4wNDYgNC4zMjE0MUMxMi40NjMzIDQuOTU2NzUgMTIuNDU0MyA1LjgxMTkyIDExLjk5NDggNi40ODgyN0MxMS44ODk5IDYuNjQyNjQgMTEuNzI3NiA2LjgwODExIDExLjMwMDYgNy4yMzUxMUwxMC42ODE5IDcuODUzODNDMTAuNDg2NyA4LjA0OTA5IDEwLjQ4NjcgOC4zNjU2NyAxMC42ODE5IDguNTYwOTNDMTAuODc3MiA4Ljc1NjIgMTEuMTkzOCA4Ljc1NjIgMTEuMzg5IDguNTYwOTNMMTIuMDA3NyA3Ljk0MjIxTDEyLjA1MDcgNy44OTkyOUMxMi40MjAzIDcuNTI5NzYgMTIuNjU2OCA3LjI5MzMgMTIuODIyIDcuMDUwMkMxMy40OTcyIDYuMDU2MjMgMTMuNTMyMSA0Ljc2MjUyIDEyLjg4MTkgMy43NzI0OEMxMi43MjMzIDMuNTMxMDIgMTIuNDkyMiAzLjMwMDAxIDEyLjE0MDggMi45NDg3MUwxMi4wOTYxIDIuOTA0MDhMMTIuMDUxNSAyLjg1OTQyQzExLjcwMDIgMi41MDggMTEuNDY5MiAyLjI3Njg5IDExLjIyNzcgMi4xMTgzMkMxMC4yMzc3IDEuNDY4MTMgOC45NDM5OCAxLjUwMjk5IDcuOTUwMDEgMi4xNzgyMkM3LjcwNjkxIDIuMzQzMzYgNy40NzA0NCAyLjU3OTkxIDcuMTAwOSAyLjk0OTU1TDcuMDU4IDIuOTkyNDdMNi40MzkyOCAzLjYxMTE5QzYuMjQ0MDEgMy44MDY0NSA2LjI0NDAxIDQuMTIzMDMgNi40MzkyOCA0LjMxODI5QzYuNjM0NTQgNC41MTM1NSA2Ljk1MTEyIDQuNTEzNTUgNy4xNDYzOCA0LjMxODI5TDcuNzY1MSAzLjY5OTU3QzguMTkyMSAzLjI3MjU3IDguMzU3NTcgMy4xMTAyNyA4LjUxMTk0IDMuMDA1NDFaTTQuMzE3OTYgNy4xNDY3MkM0LjUxMzIyIDYuOTUxNDYgNC41MTMyMiA2LjYzNDg3IDQuMzE3OTYgNi40Mzk2MUM0LjEyMjY5IDYuMjQ0MzUgMy44MDYxMSA2LjI0NDM1IDMuNjEwODUgNi40Mzk2MUwyLjk5MjEzIDcuMDU4MzNMMi45NDkyMiA3LjEwMTI0QzIuNTc5NTcgNy40NzA3NyAyLjM0MzAzIDcuNzA3MjQgMi4xNzc4OCA3Ljk1MDM1QzEuNTAyNjUgOC45NDQzMiAxLjQ2NzggMTAuMjM4IDIuMTE3OTkgMTEuMjI4MUMyLjI3NjU2IDExLjQ2OTUgMi41MDc2NiAxMS43MDA1IDIuODU5MSAxMi4wNTE4TDIuOTAzNzQgMTIuMDk2NUwyLjk0ODM3IDEyLjE0MTFDMy4yOTk2NyAxMi40OTI1IDMuNTMwNjggMTIuNzIzNyAzLjc3MjE0IDEyLjg4MjJDNC43NjIxOSAxMy41MzI0IDYuMDU1ODkgMTMuNDk3NiA3LjA0OTg2IDEyLjgyMjNDNy4yOTI5NiAxMi42NTcyIDcuNTI5NDMgMTIuNDIwNiA3Ljg5ODk2IDEyLjA1MUw3Ljg5ODk3IDEyLjA1MUw3Ljk0MTg4IDEyLjAwODFMOC41NjA2IDExLjM4OTRDOC43NTU4NiAxMS4xOTQxIDguNzU1ODYgMTAuODc3NSA4LjU2MDYgMTAuNjgyM0M4LjM2NTMzIDEwLjQ4NyA4LjA0ODc1IDEwLjQ4NyA3Ljg1MzQ5IDEwLjY4MjNMNy4yMzQ3NyAxMS4zMDFDNi44MDc3NyAxMS43MjggNi42NDIzIDExLjg5MDMgNi40ODc5NCAxMS45OTUxQzUuODExNTggMTIuNDU0NiA0Ljk1NjQyIDEyLjQ2MzYgNC4zMjEwNyAxMi4wNDY0QzQuMTc2ODEgMTEuOTUxNiA0LjAyMjc0IDExLjgwMTIgMy42MTA4NSAxMS4zODk0QzMuMTk4OTYgMTAuOTc3NSAzLjA0ODYgMTAuODIzNCAyLjk1Mzg1IDEwLjY3OTFDMi41MzY2MSAxMC4wNDM4IDIuNTQ1NjEgOS4xODg2MyAzLjAwNTA3IDguNTEyMjdDMy4xMDk5MyA4LjM1NzkxIDMuMjcyMjQgOC4xOTI0NCAzLjY5OTI0IDcuNzY1NDRMNC4zMTc5NiA3LjE0NjcyWk05LjYyMTcyIDYuMDg1NThDOS44MTY5OCA1Ljg5MDMyIDkuODE2OTggNS41NzM3MyA5LjYyMTcyIDUuMzc4NDdDOS40MjY0NiA1LjE4MzIxIDkuMTA5ODggNS4xODMyMSA4LjkxNDYxIDUuMzc4NDdMNS4zNzkwOCA4LjkxNDAxQzUuMTgzODIgOS4xMDkyNyA1LjE4MzgyIDkuNDI1ODUgNS4zNzkwOCA5LjYyMTExQzUuNTc0MzQgOS44MTYzNyA1Ljg5MDkyIDkuODE2MzcgNi4wODYxOSA5LjYyMTExTDkuNjIxNzIgNi4wODU1OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LENuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy4zNTM2IDIuMzUzNTVDMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMS44NDE3MSAxMy4zNTM2IDEuNjQ2NDVDMTMuMTU4MyAxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMi42NDY0IDEuNjQ2NDVMMS42NDY0NSAxMi42NDY0QzEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEzLjE1ODMgMS42NDY0NSAxMy4zNTM2QzEuODQxNzEgMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMi4zNTM1NSAxMy4zNTM2TDEzLjM1MzYgMi4zNTM1NVpNMi4wMzczNSA4LjQ2Njc4QzIuMTczOTggOS4xMjYxOSAyLjY2OTE4IDkuNjcxMDMgMy4zMzg4NiA5Ljg5MzM4TDIuNTc4MzMgMTAuNjUzOUMxLjgwODQzIDEwLjI1MzQgMS4yMzc4NCA5LjUzNjkzIDEuMDU4MTUgOC42Njk2N0MwLjk5OTUzOCA4LjM4NjgxIDAuOTk5NjA0IDguMDYwMDQgMC45OTk3MDMgNy41NjMxM0wwLjk5OTcxMSA3LjUwMDAxTDAuOTk5NzAzIDcuNDM2ODlDMC45OTk2MDQgNi45Mzk5OCAwLjk5OTUzOCA2LjYxMzIxIDEuMDU4MTUgNi4zMzAzNUMxLjI5ODQ2IDUuMTcwNTMgMi4yMzc5IDQuMjgwMzkgMy40MTgyIDQuMDU1QzMuNzA2ODcgMy45OTk4OCA0LjA0MTM0IDMuOTk5OTMgNC41NjQwMiA0LjAwMDAxTDQuNjI0NzEgNC4wMDAwMUg1LjQ5OTcxQzUuNzc1ODUgNC4wMDAwMSA1Ljk5OTcxIDQuMjIzODcgNS45OTk3MSA0LjUwMDAxQzUuOTk5NzEgNC43NzYxNSA1Ljc3NTg1IDUuMDAwMDEgNS40OTk3MSA1LjAwMDAxSDQuNjI0NzFDNC4wMjA4NCA1LjAwMDAxIDMuNzg5MDcgNS4wMDIyNSAzLjYwNTc3IDUuMDM3MjVDMi44MDI2MiA1LjE5MDYyIDIuMTkxNTcgNS43ODg5NSAyLjAzNzM1IDYuNTMzMjRDMi4wMDIzMyA2LjcwMjI1IDEuOTk5NzEgNi45MTc1MiAxLjk5OTcxIDcuNTAwMDFDMS45OTk3MSA4LjA4MjUxIDIuMDAyMzMgOC4yOTc3OCAyLjAzNzM1IDguNDY2NzhaTTEyLjk2MjEgNi41MzMyNEMxMi44MjU1IDUuODczOTcgMTIuMzMwNCA1LjMyOTIyIDExLjY2MSA1LjEwNjc5TDEyLjQyMTUgNC4zNDYzMUMxMy4xOTEyIDQuNzQ2ODYgMTMuNzYxNiA1LjQ2MzIzIDEzLjk0MTMgNi4zMzAzNUMxMy45OTk5IDYuNjEzMjEgMTMuOTk5OCA2LjkzOTk4IDEzLjk5OTcgNy40MzY4OEwxMy45OTk3IDcuNTAwMDFMMTMuOTk5NyA3LjU2MzE0QzEzLjk5OTggOC4wNjAwNSAxMy45OTk5IDguMzg2ODEgMTMuOTQxMyA4LjY2OTY3QzEzLjcwMSA5LjgyOTUgMTIuNzYxNSAxMC43MTk2IDExLjU4MTIgMTAuOTQ1QzExLjI5MjUgMTEuMDAwMSAxMC45NTgxIDExLjAwMDEgMTAuNDM1NCAxMUwxMC4zNzQ3IDExSDkuNDk5NzFDOS4yMjM1NyAxMSA4Ljk5OTcxIDEwLjc3NjIgOC45OTk3MSAxMC41QzguOTk5NzEgMTAuMjIzOSA5LjIyMzU3IDEwIDkuNDk5NzEgMTBIMTAuMzc0N0MxMC45Nzg2IDEwIDExLjIxMDQgOS45OTc3NyAxMS4zOTM3IDkuOTYyNzdDMTIuMTk2OCA5LjgwOTQgMTIuODA3OSA5LjIxMTA4IDEyLjk2MjEgOC40NjY3OEMxMi45OTcxIDguMjk3NzggMTIuOTk5NyA4LjA4MjUxIDEyLjk5OTcgNy41MDAwMUMxMi45OTk3IDYuOTE3NTIgMTIuOTk3MSA2LjcwMjI1IDEyLjk2MjEgNi41MzMyNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHZuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjUwMDIxIDBDNC43NzYzNSAwIDUuMDAwMiAwLjIyMzg1MyA1LjAwMDIgMC40OTk5OVYyLjQ5OTk1QzUuMDAwMiAyLjc3NjA5IDQuNzc2MzUgMi45OTk5NCA0LjUwMDIxIDIuOTk5OTRDNC4yMjQwOCAyLjk5OTk0IDQuMDAwMjIgMi43NzYwOSA0LjAwMDIyIDIuNDk5OTVWMC40OTk5OUM0LjAwMDIyIDAuMjIzODUzIDQuMjI0MDggMCA0LjUwMDIxIDBaTTAuNjQ2NDUxIDAuNjQ2NDdDMC44NDE3MSAwLjQ1MTIxMiAxLjE1ODI5IDAuNDUxMjEyIDEuMzUzNTQgMC42NDY0N0wyLjg1MzUxIDIuMTQ2NDRDMy4wNDg3NyAyLjM0MTcgMy4wNDg3NyAyLjY1ODI3IDIuODUzNTEgMi44NTM1M0MyLjY1ODI2IDMuMDQ4NzkgMi4zNDE2OCAzLjA0ODc5IDIuMTQ2NDIgMi44NTM1M0wwLjY0NjQ1MiAxLjM1MzU2QzAuNDUxMTkzIDEuMTU4MyAwLjQ1MTE5MyAwLjg0MTcyOCAwLjY0NjQ1MSAwLjY0NjQ3Wk0wLjAwMDMwNTE3IDQuNDk5OTFDMC4wMDAzMDUxNyA0LjIyMzc3IDAuMjI0MTU4IDMuOTk5OTIgMC41MDAyOTUgMy45OTk5MkgyLjUwMDI1QzIuNzc2MzkgMy45OTk5MiAzLjAwMDI0IDQuMjIzNzcgMy4wMDAyNCA0LjQ5OTkxQzMuMDAwMjQgNC43NzYwNSAyLjc3NjM5IDQuOTk5OSAyLjUwMDI1IDQuOTk5OUgwLjUwMDI5NUMwLjIyNDE1OCA0Ljk5OTkgMC4wMDAzMDUxNyA0Ljc3NjA1IDAuMDAwMzA1MTcgNC40OTk5MVpNMTIuMDAwMSAxMC40OTk4QzEyLjAwMDEgMTAuMjIzNiAxMi4yMjM5IDkuOTk5OCAxMi41MDAxIDkuOTk5OEgxNC41QzE0Ljc3NjEgOS45OTk4IDE1IDEwLjIyMzYgMTUgMTAuNDk5OEMxNSAxMC43NzU5IDE0Ljc3NjEgMTAuOTk5OCAxNC41IDEwLjk5OThIMTIuNTAwMUMxMi4yMjM5IDEwLjk5OTggMTIuMDAwMSAxMC43NzU5IDEyLjAwMDEgMTAuNDk5OFpNMTAuNTAwMSAxMS45OTk4QzEwLjc3NjIgMTEuOTk5OCAxMS4wMDAxIDEyLjIyMzYgMTEuMDAwMSAxMi40OTk3VjE0LjQ5OTdDMTEuMDAwMSAxNC43NzU4IDEwLjc3NjIgMTQuOTk5NyAxMC41MDAxIDE0Ljk5OTdDMTAuMjI0IDE0Ljk5OTcgMTAuMDAwMSAxNC43NzU4IDEwLjAwMDEgMTQuNDk5N1YxMi40OTk3QzEwLjAwMDEgMTIuMjIzNiAxMC4yMjQgMTEuOTk5OCAxMC41MDAxIDExLjk5OThaTTEyLjE0NjIgMTIuMTQ2MkMxMi4zNDE1IDExLjk1MSAxMi42NTggMTEuOTUxIDEyLjg1MzMgMTIuMTQ2MkwxNC4zNTMzIDEzLjY0NjJDMTQuNTQ4NSAxMy44NDE1IDE0LjU0ODUgMTQuMTU4IDE0LjM1MzMgMTQuMzUzM0MxNC4xNTggMTQuNTQ4NSAxMy44NDE0IDE0LjU0ODUgMTMuNjQ2MiAxNC4zNTMzTDEyLjE0NjIgMTIuODUzM0MxMS45NTEgMTIuNjU4MSAxMS45NTEgMTIuMzQxNSAxMi4xNDYyIDEyLjE0NjJaTTcuNzY0NzggMy42OTkzOEM4LjE5MTc3IDMuMjcyMzggOC4zNTcyNCAzLjExMDA4IDguNTExNiAzLjAwNTIyQzkuMTg3OTQgMi41NDU3NyAxMC4wNDMxIDIuNTM2NzcgMTAuNjc4NCAyLjk1NDAxQzEwLjgyMjcgMy4wNDg3NSAxMC45NzY3IDMuMTk5MTEgMTEuMzg4NiAzLjYxMDk5QzExLjgwMDUgNC4wMjI4NyAxMS45NTA5IDQuMTc2OTQgMTIuMDQ1NiA0LjMyMTJDMTIuNDYyOCA0Ljk1NjUzIDEyLjQ1MzkgNS44MTE2OCAxMS45OTQ0IDYuNDg4MDJDMTEuODg5NSA2LjY0MjM4IDExLjcyNzIgNi44MDc4NSAxMS4zMDAyIDcuMjM0ODRMMTAuNjgxNSA3Ljg1MzU0QzEwLjQ4NjMgOC4wNDg4IDEwLjQ4NjMgOC4zNjUzOCAxMC42ODE1IDguNTYwNjRDMTAuODc2OCA4Ljc1NTg5IDExLjE5MzQgOC43NTU4OSAxMS4zODg2IDguNTYwNjRMMTIuMDA3MyA3Ljk0MTkzTDEyLjA1MDIgNy44OTkwM0MxMi40MTk5IDcuNTI5NSAxMi42NTY0IDcuMjkzMDMgMTIuODIxNiA3LjA0OTkzQzEzLjQ5NjggNi4wNTU5OCAxMy41MzE2IDQuNzYyMyAxMi44ODE1IDMuNzcyMjhDMTIuNzIyOSAzLjUzMDgzIDEyLjQ5MTggMy4yOTk4MiAxMi4xNDA0IDIuOTQ4NTNMMTIuMDk1NyAyLjkwMzlMMTIuMDUxMSAyLjg1OTI1QzExLjY5OTggMi41MDc4MiAxMS40Njg4IDIuMjc2NzIgMTEuMjI3MyAyLjExODE2QzEwLjIzNzMgMS40Njc5OCA4Ljk0MzY0IDEuNTAyODQgNy45NDk2OCAyLjE3ODA1QzcuNzA2NTkgMi4zNDMxOSA3LjQ3MDEyIDIuNTc5NzMgNy4xMDA2IDIuOTQ5MzZMNy4xMDA2IDIuOTQ5MzdMNy4wNTc2OSAyLjk5MjI4TDYuNDM4OTggMy42MTA5OUM2LjI0MzcyIDMuODA2MjUgNi4yNDM3MiA0LjEyMjgyIDYuNDM4OTggNC4zMTgwOEM2LjYzNDI0IDQuNTEzMzQgNi45NTA4MSA0LjUxMzM0IDcuMTQ2MDcgNC4zMTgwOEw3Ljc2NDc4IDMuNjk5MzhaTTIuOTkxOTEgNy4wNTgwN0wyLjk0ODk5IDcuMTAwOTdDMi41NzkzNSA3LjQ3MDUgMi4zNDI4MiA3LjcwNjk3IDIuMTc3NjcgNy45NTAwNkMxLjUwMjQ2IDguOTQ0MDEgMS40Njc2IDEwLjIzNzcgMi4xMTc3OCAxMS4yMjc3QzIuMjc2MzQgMTEuNDY5MiAyLjUwNzQ0IDExLjcwMDIgMi44NTg4NiAxMi4wNTE1TDIuODU4ODggMTIuMDUxNUwyLjkwMzUyIDEyLjA5NjFMMi45NDgxNSAxMi4xNDA3TDIuOTQ4MTUgMTIuMTQwN0wyLjk0ODE3IDEyLjE0MDhDMy4yOTk0NSAxMi40OTIyIDMuNTMwNDUgMTIuNzIzMyAzLjc3MTkgMTIuODgxOEM0Ljc2MTkzIDEzLjUzMiA2LjA1NTYgMTMuNDk3MiA3LjA0OTU2IDEyLjgyMTlDNy4yOTI2NSAxMi42NTY4IDcuNTI5MTIgMTIuNDIwMyA3Ljg5ODY1IDEyLjA1MDZMNy45NDE1NSAxMi4wMDc3TDguNTYwMjYgMTEuMzg5QzguNzU1NTIgMTEuMTkzNyA4Ljc1NTUyIDEwLjg3NzIgOC41NjAyNiAxMC42ODE5QzguMzY1IDEwLjQ4NjcgOC4wNDg0MiAxMC40ODY3IDcuODUzMTcgMTAuNjgxOUw3LjIzNDQ2IDExLjMwMDZDNi44MDc0NyAxMS43Mjc2IDYuNjQyIDExLjg4OTkgNi40ODc2NCAxMS45OTQ4QzUuODExMyAxMi40NTQyIDQuOTU2MTUgMTIuNDYzMiA0LjMyMDgyIDEyLjA0NkM0LjE3NjU2IDExLjk1MTIgNC4wMjI0OSAxMS44MDA5IDMuNjEwNjEgMTEuMzg5QzMuMTk4NzMgMTAuOTc3MSAzLjA0ODM3IDEwLjgyMzEgMi45NTM2MyAxMC42Nzg4QzIuNTM2MzkgMTAuMDQzNSAyLjU0NTM5IDkuMTg4MzIgMy4wMDQ4NCA4LjUxMTk4QzMuMTA5NzEgOC4zNTc2MSAzLjI3MjAxIDguMTkyMTUgMy42OTkgNy43NjUxNkw0LjMxNzcgNy4xNDY0NUM0LjUxMjk2IDYuOTUxMTkgNC41MTI5NiA2LjYzNDYyIDQuMzE3NyA2LjQzOTM2QzQuMTIyNDUgNi4yNDQxIDMuODA1ODcgNi4yNDQxIDMuNjEwNjEgNi40MzkzNkwyLjk5MTkxIDcuMDU4MDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxnbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC41NjQyNyAzLjk5OTg4QzQuNTg0MjIgMy45OTk4OSA0LjYwNDQ1IDMuOTk5ODkgNC42MjQ5NiAzLjk5OTg5SDUuNDk5OTZDNS43NzYxIDMuOTk5ODkgNS45OTk5NiA0LjIyMzc1IDUuOTk5OTYgNC40OTk4OUM1Ljk5OTk2IDQuNzc2MDMgNS43NzYxIDQuOTk5ODkgNS40OTk5NiA0Ljk5OTg5SDQuNjI0OTZDNC4wMjEwOCA0Ljk5OTg5IDMuNzg5MzIgNS4wMDIxMyAzLjYwNjAxIDUuMDM3MTNDMi44MDI4NyA1LjE5MDUgMi4xOTE4MSA1Ljc4ODgzIDIuMDM3NTkgNi41MzMxMkMyLjAwMjU3IDYuNzAyMTIgMS45OTk5NiA2LjkxNzM5IDEuOTk5OTYgNy40OTk4OUMxLjk5OTk2IDguMDgyMzkgMi4wMDI1NyA4LjI5NzY2IDIuMDM3NTkgOC40NjY2NkMyLjE5MTgxIDkuMjEwOTUgMi44MDI4NyA5LjgwOTI4IDMuNjA2MDEgOS45NjI2NUMzLjc4OTMyIDkuOTk3NjUgNC4wMjEwOCA5Ljk5OTg5IDQuNjI0OTYgOS45OTk4OUg1LjQ5OTk2QzUuNzc2MSA5Ljk5OTg5IDUuOTk5OTYgMTAuMjIzNyA1Ljk5OTk2IDEwLjQ5OTlDNS45OTk5NiAxMC43NzYgNS43NzYxIDEwLjk5OTkgNS40OTk5NiAxMC45OTk5SDQuNjI0OTZDNC42MDQ0NSAxMC45OTk5IDQuNTg0MjIgMTAuOTk5OSA0LjU2NDI3IDEwLjk5OTlDNC4wNDE1OSAxMSAzLjcwNzEyIDExIDMuNDE4NDUgMTAuOTQ0OUMyLjIzODE0IDEwLjcxOTUgMS4yOTg3MSA5LjgyOTM3IDEuMDU4MzkgOC42Njk1NUMwLjk5OTc4MiA4LjM4NjY5IDAuOTk5ODQ4IDguMDU5OTIgMC45OTk5NDcgNy41NjMwMUMwLjk5OTk1MSA3LjU0MjI3IDAuOTk5OTU1IDcuNTIxMjMgMC45OTk5NTUgNy40OTk4OUMwLjk5OTk1NSA3LjQ3ODU1IDAuOTk5OTUxIDcuNDU3NTEgMC45OTk5NDcgNy40MzY3N0MwLjk5OTg0OCA2LjkzOTg2IDAuOTk5NzgyIDYuNjEzMDkgMS4wNTgzOSA2LjMzMDIzQzEuMjk4NzEgNS4xNzA0MSAyLjIzODE0IDQuMjgwMjcgMy40MTg0NSA0LjA1NDg4QzMuNzA3MTIgMy45OTk3NiA0LjA0MTU5IDMuOTk5ODEgNC41NjQyNyAzLjk5OTg4Wk0xMS4zOTM5IDUuMDM3MTNDMTEuMjEwNiA1LjAwMjEzIDEwLjk3ODggNC45OTk4OSAxMC4zNzUgNC45OTk4OUg5LjQ5OTk2QzkuMjIzODEgNC45OTk4OSA4Ljk5OTk2IDQuNzc2MDMgOC45OTk5NiA0LjQ5OTg5QzguOTk5OTYgNC4yMjM3NSA5LjIyMzgxIDMuOTk5ODkgOS40OTk5NiAzLjk5OTg5SDEwLjM3NUMxMC4zOTU1IDMuOTk5ODkgMTAuNDE1NyAzLjk5OTg5IDEwLjQzNTYgMy45OTk4OEMxMC45NTgzIDMuOTk5ODEgMTEuMjkyOCAzLjk5OTc2IDExLjU4MTUgNC4wNTQ4OEMxMi43NjE4IDQuMjgwMjcgMTMuNzAxMiA1LjE3MDQxIDEzLjk0MTUgNi4zMzAyM0MxNC4wMDAxIDYuNjEzMDkgMTQuMDAwMSA2LjkzOTg1IDE0IDcuNDM2NzZDMTQgNy40NTc1IDE0IDcuNDc4NTQgMTQgNy40OTk4OUMxNCA3LjUyMTI0IDE0IDcuNTQyMjggMTQgNy41NjMwMkMxNC4wMDAxIDguMDU5OTIgMTQuMDAwMSA4LjM4NjY5IDEzLjk0MTUgOC42Njk1NUMxMy43MDEyIDkuODI5MzcgMTIuNzYxOCAxMC43MTk1IDExLjU4MTUgMTAuOTQ0OUMxMS4yOTI4IDExIDEwLjk1ODMgMTEgMTAuNDM1NiAxMC45OTk5QzEwLjQxNTcgMTAuOTk5OSAxMC4zOTU1IDEwLjk5OTkgMTAuMzc1IDEwLjk5OTlIOS40OTk5NkM5LjIyMzgxIDEwLjk5OTkgOC45OTk5NiAxMC43NzYgOC45OTk5NiAxMC40OTk5QzguOTk5OTYgMTAuMjIzNyA5LjIyMzgxIDkuOTk5ODkgOS40OTk5NiA5Ljk5OTg5SDEwLjM3NUMxMC45Nzg4IDkuOTk5ODkgMTEuMjEwNiA5Ljk5NzY1IDExLjM5MzkgOS45NjI2NUMxMi4xOTcgOS44MDkyOCAxMi44MDgxIDkuMjEwOTUgMTIuOTYyMyA4LjQ2NjY2QzEyLjk5NzMgOC4yOTc2NiAxMyA4LjA4MjM5IDEzIDcuNDk5ODlDMTMgNi45MTczOSAxMi45OTczIDYuNzAyMTIgMTIuOTYyMyA2LjUzMzEyQzEyLjgwODEgNS43ODg4MyAxMi4xOTcgNS4xOTA1IDExLjM5MzkgNS4wMzcxM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG1uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMC42Nzg4IDIuOTU0MTlDMTAuMDQzNSAyLjUzNjk0IDkuMTg4MjkgMi41NDU5NCA4LjUxMTk0IDMuMDA1NDFDOC4zNTc1NyAzLjExMDI3IDguMTkyMSAzLjI3MjU3IDcuNzY1MSAzLjY5OTU3TDcuMTQ2MzggNC4zMTgyOUM2Ljk1MTEyIDQuNTEzNTUgNi42MzQ1NCA0LjUxMzU1IDYuNDM5MjggNC4zMTgyOUM2LjI0NDAxIDQuMTIzMDMgNi4yNDQwMSAzLjgwNjQ1IDYuNDM5MjggMy42MTExOUw3LjA1OCAyLjk5MjQ3QzcuMDcyNSAyLjk3Nzk3IDcuMDg2NzkgMi45NjM2NiA3LjEwMDkgMi45NDk1NUM3LjQ3MDQ0IDIuNTc5OTEgNy43MDY5MSAyLjM0MzM2IDcuOTUwMDEgMi4xNzgyMkM4Ljk0Mzk4IDEuNTAyOTkgMTAuMjM3NyAxLjQ2ODEzIDExLjIyNzcgMi4xMTgzMkMxMS40NjkyIDIuMjc2ODkgMTEuNzAwMiAyLjUwOCAxMi4wNTE1IDIuODU5NDJDMTIuMDY2MiAyLjg3NDEgMTIuMDgxIDIuODg4OTggMTIuMDk2MSAyLjkwNDA4QzEyLjExMTIgMi45MTkxNyAxMi4xMjYxIDIuOTM0MDUgMTIuMTQwOCAyLjk0ODcxQzEyLjQ5MjIgMy4zMDAwMSAxMi43MjMzIDMuNTMxMDIgMTIuODgxOSAzLjc3MjQ4QzEzLjUzMjEgNC43NjI1MiAxMy40OTcyIDYuMDU2MjMgMTIuODIyIDcuMDUwMkMxMi42NTY4IDcuMjkzMyAxMi40MjAzIDcuNTI5NzYgMTIuMDUwNyA3Ljg5OTI5QzEyLjAzNjYgNy45MTM0IDEyLjAyMjIgNy45Mjc3MSAxMi4wMDc3IDcuOTQyMjFMMTEuMzg5IDguNTYwOTNDMTEuMTkzOCA4Ljc1NjIgMTAuODc3MiA4Ljc1NjIgMTAuNjgxOSA4LjU2MDkzQzEwLjQ4NjcgOC4zNjU2NyAxMC40ODY3IDguMDQ5MDkgMTAuNjgxOSA3Ljg1MzgzTDExLjMwMDYgNy4yMzUxMUMxMS43Mjc2IDYuODA4MTEgMTEuODg5OSA2LjY0MjY0IDExLjk5NDggNi40ODgyN0MxMi40NTQzIDUuODExOTIgMTIuNDYzMyA0Ljk1Njc1IDEyLjA0NiA0LjMyMTQxQzExLjk1MTMgNC4xNzcxNCAxMS44MDA5IDQuMDIzMDcgMTEuMzg5IDMuNjExMTlDMTAuOTc3MSAzLjE5OTMgMTAuODIzMSAzLjA0ODkzIDEwLjY3ODggMi45NTQxOVpNNC4zMTc5NiA2LjQzOTYxQzQuNTEzMjIgNi42MzQ4NyA0LjUxMzIyIDYuOTUxNDYgNC4zMTc5NiA3LjE0NjcyTDMuNjk5MjQgNy43NjU0NEMzLjI3MjI0IDguMTkyNDQgMy4xMDk5MyA4LjM1NzkxIDMuMDA1MDcgOC41MTIyN0MyLjU0NTYxIDkuMTg4NjMgMi41MzY2MSAxMC4wNDM4IDIuOTUzODUgMTAuNjc5MUMzLjA0ODYgMTAuODIzNCAzLjE5ODk2IDEwLjk3NzUgMy42MTA4NSAxMS4zODk0QzQuMDIyNzQgMTEuODAxMiA0LjE3NjgxIDExLjk1MTYgNC4zMjEwNyAxMi4wNDY0QzQuOTU2NDIgMTIuNDYzNiA1LjgxMTU4IDEyLjQ1NDYgNi40ODc5NCAxMS45OTUxQzYuNjQyMyAxMS44OTAzIDYuODA3NzcgMTEuNzI4IDcuMjM0NzcgMTEuMzAxTDcuODUzNDkgMTAuNjgyM0M4LjA0ODc1IDEwLjQ4NyA4LjM2NTMzIDEwLjQ4NyA4LjU2MDYgMTAuNjgyM0M4Ljc1NTg2IDEwLjg3NzUgOC43NTU4NiAxMS4xOTQxIDguNTYwNiAxMS4zODk0TDcuOTQxODggMTIuMDA4MUM3LjkyNzM4IDEyLjAyMjYgNy45MTMwNyAxMi4wMzY5IDcuODk4OTcgMTIuMDUxQzcuNTI5NDMgMTIuNDIwNiA3LjI5Mjk2IDEyLjY1NzIgNy4wNDk4NiAxMi44MjIzQzYuMDU1ODkgMTMuNDk3NiA0Ljc2MjE5IDEzLjUzMjQgMy43NzIxNCAxMi44ODIyQzMuNTMwNjggMTIuNzIzNyAzLjI5OTY3IDEyLjQ5MjUgMi45NDgzNyAxMi4xNDExQzIuOTMzNzEgMTIuMTI2NCAyLjkxODgzIDEyLjExMTYgMi45MDM3NCAxMi4wOTY1QzIuODg4NjUgMTIuMDgxNCAyLjg3Mzc3IDEyLjA2NjUgMi44NTkxIDEyLjA1MThDMi41MDc2NiAxMS43MDA1IDIuMjc2NTYgMTEuNDY5NSAyLjExNzk5IDExLjIyODFDMS40Njc4IDEwLjIzOCAxLjUwMjY1IDguOTQ0MzIgMi4xNzc4OCA3Ljk1MDM1QzIuMzQzMDMgNy43MDcyNCAyLjU3OTU3IDcuNDcwNzcgMi45NDkyMiA3LjEwMTI0QzIuOTYzMzMgNy4wODcxMyAyLjk3NzYzIDcuMDcyODMgMi45OTIxMyA3LjA1ODMzTDMuNjEwODUgNi40Mzk2MUMzLjgwNjExIDYuMjQ0MzUgNC4xMjI2OSA2LjI0NDM1IDQuMzE3OTYgNi40Mzk2MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHduPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjUgNS4yNUMxLjkxNDIxIDUuMjUgMi4yNSA0LjkxNDIxIDIuMjUgNC41QzIuMjUgNC4wODU3OSAxLjkxNDIxIDMuNzUgMS41IDMuNzVDMS4wODU3OSAzLjc1IDAuNzUgNC4wODU3OSAwLjc1IDQuNUMwLjc1IDQuOTE0MjEgMS4wODU3OSA1LjI1IDEuNSA1LjI1Wk00IDQuNUM0IDQuMjIzODYgNC4yMjM4NiA0IDQuNSA0SDEzLjVDMTMuNzc2MSA0IDE0IDQuMjIzODYgMTQgNC41QzE0IDQuNzc2MTQgMTMuNzc2MSA1IDEzLjUgNUg0LjVDNC4yMjM4NiA1IDQgNC43NzYxNCA0IDQuNVpNNC41IDdDNC4yMjM4NiA3IDQgNy4yMjM4NiA0IDcuNUM0IDcuNzc2MTQgNC4yMjM4NiA4IDQuNSA4SDEzLjVDMTMuNzc2MSA4IDE0IDcuNzc2MTQgMTQgNy41QzE0IDcuMjIzODYgMTMuNzc2MSA3IDEzLjUgN0g0LjVaTTQuNSAxMEM0LjIyMzg2IDEwIDQgMTAuMjIzOSA0IDEwLjVDNCAxMC43NzYxIDQuMjIzODYgMTEgNC41IDExSDEzLjVDMTMuNzc2MSAxMSAxNCAxMC43NzYxIDE0IDEwLjVDMTQgMTAuMjIzOSAxMy43NzYxIDEwIDEzLjUgMTBINC41Wk0yLjI1IDcuNUMyLjI1IDcuOTE0MjEgMS45MTQyMSA4LjI1IDEuNSA4LjI1QzEuMDg1NzkgOC4yNSAwLjc1IDcuOTE0MjEgMC43NSA3LjVDMC43NSA3LjA4NTc5IDEuMDg1NzkgNi43NSAxLjUgNi43NUMxLjkxNDIxIDYuNzUgMi4yNSA3LjA4NTc5IDIuMjUgNy41Wk0xLjUgMTEuMjVDMS45MTQyMSAxMS4yNSAyLjI1IDEwLjkxNDIgMi4yNSAxMC41QzIuMjUgMTAuMDg1OCAxLjkxNDIxIDkuNzUgMS41IDkuNzVDMS4wODU3OSA5Ljc1IDAuNzUgMTAuMDg1OCAwLjc1IDEwLjVDMC43NSAxMC45MTQyIDEuMDg1NzkgMTEuMjUgMS41IDExLjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUgNC42MzYwMUM1IDMuNzYwMzEgNS4yNDIxOSAzLjEwNTQgNS42NDMyMyAyLjY3MzU3QzYuMDM5MzQgMi4yNDcwNSA2LjY0NTgyIDEuOTc4MyA3LjUwMTQgMS45NzgzQzguMzU3NDUgMS45NzgzIDguOTYzMDYgMi4yNDY1MiA5LjM1ODIzIDIuNjcyMDhDOS43NTgzOCAzLjEwMjk5IDEwIDMuNzU3MDggMTAgNC42MzMyNVY1Ljk5OTk5SDVWNC42MzYwMVpNNCA1Ljk5OTk5VjQuNjM2MDFDNCAzLjU4MTQ4IDQuMjkzMzkgMi42NTc1NCA0LjkxMDQ5IDEuOTkzMDdDNS41MzI1MiAxLjMyMzI5IDYuNDI2NzUgMC45NzgzMDIgNy41MDE0IDAuOTc4MzAyQzguNTc1ODMgMC45NzgzMDIgOS40Njk1MiAxLjMyMjMzIDEwLjA5MSAxLjk5MTYyQzEwLjcwNzYgMi42NTU1NyAxMSAzLjU3ODk2IDExIDQuNjMzMjVWNS45OTk5OUgxMkMxMi41NTIzIDUuOTk5OTkgMTMgNi40NDc3MSAxMyA2Ljk5OTk5VjEzQzEzIDEzLjU1MjMgMTIuNTUyMyAxNCAxMiAxNEgzQzIuNDQ3NzIgMTQgMiAxMy41NTIzIDIgMTNWNi45OTk5OUMyIDYuNDQ3NzEgMi40NDc3MiA1Ljk5OTk5IDMgNS45OTk5OUg0Wk0zIDYuOTk5OTlIMTJWMTNIM1Y2Ljk5OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk4NiAwQzYuMzI1NyAwIDUuMzYxMDcgMC4zODk0MyA0LjczNzUzIDEuMTkzNjFDNC4yMzc0NSAxLjgzODU2IDQgMi42ODI0MiA0IDMuNjMzMjVINUM1IDIuODQzMTMgNS4xOTY5MSAyLjIzMzEyIDUuNTI3OCAxLjgwNjM2QzUuOTE2MTUgMS4zMDU1MiA2LjU1MTUyIDEgNy40OTg2IDFDOC4zNTY4MyAxIDguOTYzMzYgMS4yNjUwMiA5LjM1ODQ2IDEuNjg2MjNDOS43NTc5MyAyLjExMjExIDEwIDIuNzYwNDQgMTAgMy42MzYwMVY2SDNDMi40NDc3MiA2IDIgNi40NDc3MiAyIDdWMTNDMiAxMy41NTIzIDIuNDQ3NzIgMTQgMyAxNEgxMkMxMi41NTIzIDE0IDEzIDEzLjU1MjMgMTMgMTNWN0MxMyA2LjQ0NzcxIDEyLjU1MjMgNiAxMiA2SDExVjMuNjM2MDFDMTEgMi41ODEzNSAxMC43MDY1IDEuNjYxNjcgMTAuMDg3OCAxLjAwMjFDOS40NjQ3NyAwLjMzNzg3MSA4LjU3MDYxIDAgNy40OTg2IDBaTTMgN0gxMlYxM0gzVjdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx4bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOSAzLjYzNjAxQzkgMi43NjA0NCA5LjI0MjA3IDIuMTEyMTEgOS42NDE1NCAxLjY4NjIzQzEwLjAzNjYgMS4yNjUwMiAxMC42NDMyIDEgMTEuNTAxNCAxQzEyLjQ0ODUgMSAxMy4wODM5IDEuMzA1NTIgMTMuNDcyMiAxLjgwNjM2QzEzLjgwMzEgMi4yMzMxMiAxNCAyLjg0MzEzIDE0IDMuNjMzMjVIMTVDMTUgMi42ODI0MiAxNC43NjI2IDEuODM4NTYgMTQuMjYyNSAxLjE5MzYxQzEzLjYzODkgMC4zODk0MyAxMi42NzQzIDAgMTEuNTAxNCAwQzEwLjQyOTQgMCA5LjUzNTIzIDAuMzM3ODcxIDguOTEyMTggMS4wMDIxQzguMjkzNTEgMS42NjE2NyA4IDIuNTgxMzUgOCAzLjYzNjAxVjZIMUMwLjQ0NzcxNSA2IDAgNi40NDc3MiAwIDdWMTNDMCAxMy41NTIzIDAuNDQ3NzE1IDE0IDEgMTRIMTBDMTAuNTUyMyAxNCAxMSAxMy41NTIzIDExIDEzVjdDMTEgNi40NDc3MiAxMC41NTIzIDYgMTAgNkg5VjMuNjM2MDFaTTEgN0gxMFYxM0gxVjdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxPbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4zNTM1NSAxLjg1MzU1QzMuNTQ4ODIgMS42NTgyOSAzLjU0ODgyIDEuMzQxNzEgMy4zNTM1NSAxLjE0NjQ1QzMuMTU4MjkgMC45NTExODQgMi44NDE3MSAwLjk1MTE4NCAyLjY0NjQ1IDEuMTQ2NDVMMC42NDY0NDcgMy4xNDY0NUMwLjQ1MTE4NCAzLjM0MTcxIDAuNDUxMTg0IDMuNjU4MjkgMC42NDY0NDcgMy44NTM1NUwyLjY0NjQ1IDUuODUzNTVDMi44NDE3MSA2LjA0ODgyIDMuMTU4MjkgNi4wNDg4MiAzLjM1MzU1IDUuODUzNTVDMy41NDg4MiA1LjY1ODI5IDMuNTQ4ODIgNS4zNDE3MSAzLjM1MzU1IDUuMTQ2NDVMMi4yMDcxMSA0SDkuNUMxMS40MzMgNCAxMyA1LjU2NyAxMyA3LjVDMTMgNy43NzYxNCAxMy4yMjM5IDggMTMuNSA4QzEzLjc3NjEgOCAxNCA3Ljc3NjE0IDE0IDcuNUMxNCA1LjAxNDcyIDExLjk4NTMgMyA5LjUgM0gyLjIwNzExTDMuMzUzNTUgMS44NTM1NVpNMiA3LjVDMiA3LjIyMzg2IDEuNzc2MTQgNyAxLjUgN0MxLjIyMzg2IDcgMSA3LjIyMzg2IDEgNy41QzEgOS45ODUyOCAzLjAxNDcyIDEyIDUuNSAxMkgxMi43OTI5TDExLjY0NjQgMTMuMTQ2NEMxMS40NTEyIDEzLjM0MTcgMTEuNDUxMiAxMy42NTgzIDExLjY0NjQgMTMuODUzNkMxMS44NDE3IDE0LjA0ODggMTIuMTU4MyAxNC4wNDg4IDEyLjM1MzYgMTMuODUzNkwxNC4zNTM2IDExLjg1MzZDMTQuNTQ4OCAxMS42NTgzIDE0LjU0ODggMTEuMzQxNyAxNC4zNTM2IDExLjE0NjRMMTIuMzUzNiA5LjE0NjQ1QzEyLjE1ODMgOC45NTExOCAxMS44NDE3IDguOTUxMTggMTEuNjQ2NCA5LjE0NjQ1QzExLjQ1MTIgOS4zNDE3MSAxMS40NTEyIDkuNjU4MjkgMTEuNjQ2NCA5Ljg1MzU1TDEyLjc5MjkgMTFINS41QzMuNTY3IDExIDIgOS40MzMgMiA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxMbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuOSAwLjQ5OTk3NkMxMy45IDAuMjc5MDYyIDEzLjcyMDkgMC4wOTk5NzU2IDEzLjUgMC4wOTk5NzU2QzEzLjI3OTEgMC4wOTk5NzU2IDEzLjEgMC4yNzkwNjIgMTMuMSAwLjQ5OTk3NlYxLjA5OTk4SDEyLjVDMTIuMjc5MSAxLjA5OTk4IDEyLjEgMS4yNzkwNiAxMi4xIDEuNDk5OThDMTIuMSAxLjcyMDg5IDEyLjI3OTEgMS44OTk5OCAxMi41IDEuODk5OThIMTMuMVYyLjQ5OTk4QzEzLjEgMi43MjA4OSAxMy4yNzkxIDIuODk5OTggMTMuNSAyLjg5OTk4QzEzLjcyMDkgMi44OTk5OCAxMy45IDIuNzIwODkgMTMuOSAyLjQ5OTk4VjEuODk5OThIMTQuNUMxNC43MjA5IDEuODk5OTggMTQuOSAxLjcyMDg5IDE0LjkgMS40OTk5OEMxNC45IDEuMjc5MDYgMTQuNzIwOSAxLjA5OTk4IDE0LjUgMS4wOTk5OEgxMy45VjAuNDk5OTc2Wk0xMS44NTM2IDMuMTQ2NDJDMTIuMDQ4OCAzLjM0MTY4IDEyLjA0ODggMy42NTgyNiAxMS44NTM2IDMuODUzNTNMMTAuODUzNiA0Ljg1MzUzQzEwLjY1ODMgNS4wNDg3OSAxMC4zNDE3IDUuMDQ4NzkgMTAuMTQ2NSA0Ljg1MzUzQzkuOTUxMiA0LjY1ODI3IDkuOTUxMiA0LjM0MTY5IDEwLjE0NjUgNC4xNDY0MkwxMS4xNDY0IDMuMTQ2NDNDMTEuMzQxNyAyLjk1MTE2IDExLjY1ODMgMi45NTExNiAxMS44NTM2IDMuMTQ2NDJaTTkuODUzNTcgNS4xNDY0MkMxMC4wNDg4IDUuMzQxNjggMTAuMDQ4OCA1LjY1ODI3IDkuODUzNTcgNS44NTM1M0wyLjg1MzU1IDEyLjg1MzVDMi42NTgyOSAxMy4wNDg4IDIuMzQxNzEgMTMuMDQ4OCAyLjE0NjQ1IDEyLjg1MzVDMS45NTExOCAxMi42NTgzIDEuOTUxMTggMTIuMzQxNyAyLjE0NjQ1IDEyLjE0NjRMOS4xNDY0NiA1LjE0NjQyQzkuMzQxNzIgNC45NTExNiA5LjY1ODMxIDQuOTUxMTYgOS44NTM1NyA1LjE0NjQyWk0xMy41IDUuMDk5OThDMTMuNzIwOSA1LjA5OTk4IDEzLjkgNS4yNzkwNiAxMy45IDUuNDk5OThWNi4wOTk5OEgxNC41QzE0LjcyMDkgNi4wOTk5OCAxNC45IDYuMjc5MDYgMTQuOSA2LjQ5OTk4QzE0LjkgNi43MjA4OSAxNC43MjA5IDYuODk5OTggMTQuNSA2Ljg5OTk4SDEzLjlWNy40OTk5OEMxMy45IDcuNzIwODkgMTMuNzIwOSA3Ljg5OTk4IDEzLjUgNy44OTk5OEMxMy4yNzkxIDcuODk5OTggMTMuMSA3LjcyMDg5IDEzLjEgNy40OTk5OFY2Ljg5OTk4SDEyLjVDMTIuMjc5MSA2Ljg5OTk4IDEyLjEgNi43MjA4OSAxMi4xIDYuNDk5OThDMTIuMSA2LjI3OTA2IDEyLjI3OTEgNi4wOTk5OCAxMi41IDYuMDk5OThIMTMuMVY1LjQ5OTk4QzEzLjEgNS4yNzkwNiAxMy4yNzkxIDUuMDk5OTggMTMuNSA1LjA5OTk4Wk04LjkwMDAyIDAuNDk5OTc2QzguOTAwMDIgMC4yNzkwNjIgOC43MjA5MyAwLjA5OTk3NTYgOC41MDAwMiAwLjA5OTk3NTZDOC4yNzkxIDAuMDk5OTc1NiA4LjEwMDAyIDAuMjc5MDYyIDguMTAwMDIgMC40OTk5NzZWMS4wOTk5OEg3LjUwMDAyQzcuMjc5MSAxLjA5OTk4IDcuMTAwMDIgMS4yNzkwNiA3LjEwMDAyIDEuNDk5OThDNy4xMDAwMiAxLjcyMDg5IDcuMjc5MSAxLjg5OTk4IDcuNTAwMDIgMS44OTk5OEg4LjEwMDAyVjIuNDk5OThDOC4xMDAwMiAyLjcyMDg5IDguMjc5MSAyLjg5OTk4IDguNTAwMDIgMi44OTk5OEM4LjcyMDkzIDIuODk5OTggOC45MDAwMiAyLjcyMDg5IDguOTAwMDIgMi40OTk5OFYxLjg5OTk4SDkuNTAwMDJDOS43MjA5MyAxLjg5OTk4IDkuOTAwMDIgMS43MjA4OSA5LjkwMDAyIDEuNDk5OThDOS45MDAwMiAxLjI3OTA2IDkuNzIwOTMgMS4wOTk5OCA5LjUwMDAyIDEuMDk5OThIOC45MDAwMlYwLjQ5OTk3NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE1uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMCA2LjVDMTAgOC40MzMgOC40MzMgMTAgNi41IDEwQzQuNTY3IDEwIDMgOC40MzMgMyA2LjVDMyA0LjU2NyA0LjU2NyAzIDYuNSAzQzguNDMzIDMgMTAgNC41NjcgMTAgNi41Wk05LjMwODg0IDEwLjAxNTlDOC41MzkwMSAxMC42MzE4IDcuNTYyNTEgMTEgNi41IDExQzQuMDE0NzIgMTEgMiA4Ljk4NTI4IDIgNi41QzIgNC4wMTQ3MiA0LjAxNDcyIDIgNi41IDJDOC45ODUyOCAyIDExIDQuMDE0NzIgMTEgNi41QzExIDcuNTYyNTEgMTAuNjMxOCA4LjUzOTAxIDEwLjAxNTkgOS4zMDg4NEwxMi44NTM2IDEyLjE0NjRDMTMuMDQ4OCAxMi4zNDE3IDEzLjA0ODggMTIuNjU4MyAxMi44NTM2IDEyLjg1MzZDMTIuNjU4MyAxMy4wNDg4IDEyLjM0MTcgMTMuMDQ4OCAxMi4xNDY0IDEyLjg1MzZMOS4zMDg4NCAxMC4wMTU5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sU249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNDk5ODggMi4wMDAxMkMxLjc3NjAyIDIuMDAwMTIgMS45OTk4OCAxLjc3NjI2IDEuOTk5ODggMS41MDAxMkMxLjk5OTg4IDEuMjIzOTggMS43NzYwMiAxLjAwMDEyIDEuNDk5ODggMS4wMDAxMkMxLjIyMzc0IDEuMDAwMTIgMC45OTk4NzggMS4yMjM5OCAwLjk5OTg3OCAxLjUwMDEyQzAuOTk5ODc4IDEuNzc2MjYgMS4yMjM3NCAyLjAwMDEyIDEuNDk5ODggMi4wMDAxMlpNNC40OTk4OCAyLjAwMDEyQzQuNzc2MDIgMi4wMDAxMiA0Ljk5OTg4IDEuNzc2MjYgNC45OTk4OCAxLjUwMDEyQzQuOTk5ODggMS4yMjM5OCA0Ljc3NjAyIDEuMDAwMTIgNC40OTk4OCAxLjAwMDEyQzQuMjIzNzQgMS4wMDAxMiAzLjk5OTg4IDEuMjIzOTggMy45OTk4OCAxLjUwMDEyQzMuOTk5ODggMS43NzYyNiA0LjIyMzc0IDIuMDAwMTIgNC40OTk4OCAyLjAwMDEyWk03Ljk5OTg4IDEuNTAwMTJDNy45OTk4OCAxLjc3NjI2IDcuNzc2MDIgMi4wMDAxMiA3LjQ5OTg4IDIuMDAwMTJDNy4yMjM3NCAyLjAwMDEyIDYuOTk5ODggMS43NzYyNiA2Ljk5OTg4IDEuNTAwMTJDNi45OTk4OCAxLjIyMzk4IDcuMjIzNzQgMS4wMDAxMiA3LjQ5OTg4IDEuMDAwMTJDNy43NzYwMiAxLjAwMDEyIDcuOTk5ODggMS4yMjM5OCA3Ljk5OTg4IDEuNTAwMTJaTTEwLjQ5OTkgMi4wMDAxMkMxMC43NzYgMi4wMDAxMiAxMC45OTk5IDEuNzc2MjYgMTAuOTk5OSAxLjUwMDEyQzEwLjk5OTkgMS4yMjM5OCAxMC43NzYgMS4wMDAxMiAxMC40OTk5IDEuMDAwMTJDMTAuMjIzNyAxLjAwMDEyIDkuOTk5ODggMS4yMjM5OCA5Ljk5OTg4IDEuNTAwMTJDOS45OTk4OCAxLjc3NjI2IDEwLjIyMzcgMi4wMDAxMiAxMC40OTk5IDIuMDAwMTJaTTEzLjk5OTkgMS41MDAxMkMxMy45OTk5IDEuNzc2MjYgMTMuNzc2IDIuMDAwMTIgMTMuNDk5OSAyLjAwMDEyQzEzLjIyMzcgMi4wMDAxMiAxMi45OTk5IDEuNzc2MjYgMTIuOTk5OSAxLjUwMDEyQzEyLjk5OTkgMS4yMjM5OCAxMy4yMjM3IDEuMDAwMTIgMTMuNDk5OSAxLjAwMDEyQzEzLjc3NiAxLjAwMDEyIDEzLjk5OTkgMS4yMjM5OCAxMy45OTk5IDEuNTAwMTJaTTEuNDk5ODggMTQuMDAwMUMxLjc3NjAyIDE0LjAwMDEgMS45OTk4OCAxMy43NzYzIDEuOTk5ODggMTMuNTAwMUMxLjk5OTg4IDEzLjIyNCAxLjc3NjAyIDEzLjAwMDEgMS40OTk4OCAxMy4wMDAxQzEuMjIzNzQgMTMuMDAwMSAwLjk5OTg3OCAxMy4yMjQgMC45OTk4NzggMTMuNTAwMUMwLjk5OTg3OCAxMy43NzYzIDEuMjIzNzQgMTQuMDAwMSAxLjQ5OTg4IDE0LjAwMDFaTTEuOTk5ODggMTAuNTAwMUMxLjk5OTg4IDEwLjc3NjMgMS43NzYwMiAxMS4wMDAxIDEuNDk5ODggMTEuMDAwMUMxLjIyMzc0IDExLjAwMDEgMC45OTk4NzggMTAuNzc2MyAwLjk5OTg3OCAxMC41MDAxQzAuOTk5ODc4IDEwLjIyNCAxLjIyMzc0IDEwLjAwMDEgMS40OTk4OCAxMC4wMDAxQzEuNzc2MDIgMTAuMDAwMSAxLjk5OTg4IDEwLjIyNCAxLjk5OTg4IDEwLjUwMDFaTTEuNDk5ODggOC4wMDAxMkMxLjc3NjAyIDguMDAwMTIgMS45OTk4OCA3Ljc3NjI2IDEuOTk5ODggNy41MDAxMkMxLjk5OTg4IDcuMjIzOTggMS43NzYwMiA3LjAwMDEyIDEuNDk5ODggNy4wMDAxMkMxLjIyMzc0IDcuMDAwMTIgMC45OTk4NzggNy4yMjM5OCAwLjk5OTg3OCA3LjUwMDEyQzAuOTk5ODc4IDcuNzc2MjYgMS4yMjM3NCA4LjAwMDEyIDEuNDk5ODggOC4wMDAxMlpNMS45OTk4OCA0LjUwMDEyQzEuOTk5ODggNC43NzYyNiAxLjc3NjAyIDUuMDAwMTIgMS40OTk4OCA1LjAwMDEyQzEuMjIzNzQgNS4wMDAxMiAwLjk5OTg3OCA0Ljc3NjI2IDAuOTk5ODc4IDQuNTAwMTJDMC45OTk4NzggNC4yMjM5OCAxLjIyMzc0IDQuMDAwMTIgMS40OTk4OCA0LjAwMDEyQzEuNzc2MDIgNC4wMDAxMiAxLjk5OTg4IDQuMjIzOTggMS45OTk4OCA0LjUwMDEyWk0xMy40OTk5IDExLjAwMDFDMTMuNzc2IDExLjAwMDEgMTMuOTk5OSAxMC43NzYzIDEzLjk5OTkgMTAuNTAwMUMxMy45OTk5IDEwLjIyNCAxMy43NzYgMTAuMDAwMSAxMy40OTk5IDEwLjAwMDFDMTMuMjIzNyAxMC4wMDAxIDEyLjk5OTkgMTAuMjI0IDEyLjk5OTkgMTAuNTAwMUMxMi45OTk5IDEwLjc3NjMgMTMuMjIzNyAxMS4wMDAxIDEzLjQ5OTkgMTEuMDAwMVpNMTMuOTk5OSA3LjUwMDEyQzEzLjk5OTkgNy43NzYyNiAxMy43NzYgOC4wMDAxMiAxMy40OTk5IDguMDAwMTJDMTMuMjIzNyA4LjAwMDEyIDEyLjk5OTkgNy43NzYyNiAxMi45OTk5IDcuNTAwMTJDMTIuOTk5OSA3LjIyMzk4IDEzLjIyMzcgNy4wMDAxMiAxMy40OTk5IDcuMDAwMTJDMTMuNzc2IDcuMDAwMTIgMTMuOTk5OSA3LjIyMzk4IDEzLjk5OTkgNy41MDAxMlpNMTMuNDk5OSA1LjAwMDEyQzEzLjc3NiA1LjAwMDEyIDEzLjk5OTkgNC43NzYyNiAxMy45OTk5IDQuNTAwMTJDMTMuOTk5OSA0LjIyMzk4IDEzLjc3NiA0LjAwMDEyIDEzLjQ5OTkgNC4wMDAxMkMxMy4yMjM3IDQuMDAwMTIgMTIuOTk5OSA0LjIyMzk4IDEyLjk5OTkgNC41MDAxMkMxMi45OTk5IDQuNzc2MjYgMTMuMjIzNyA1LjAwMDEyIDEzLjQ5OTkgNS4wMDAxMlpNNC45OTk4OCAxMy41MDAxQzQuOTk5ODggMTMuNzc2MyA0Ljc3NjAyIDE0LjAwMDEgNC40OTk4OCAxNC4wMDAxQzQuMjIzNzQgMTQuMDAwMSAzLjk5OTg4IDEzLjc3NjMgMy45OTk4OCAxMy41MDAxQzMuOTk5ODggMTMuMjI0IDQuMjIzNzQgMTMuMDAwMSA0LjQ5OTg4IDEzLjAwMDFDNC43NzYwMiAxMy4wMDAxIDQuOTk5ODggMTMuMjI0IDQuOTk5ODggMTMuNTAwMVpNNy40OTk4OCAxNC4wMDAxQzcuNzc2MDIgMTQuMDAwMSA3Ljk5OTg4IDEzLjc3NjMgNy45OTk4OCAxMy41MDAxQzcuOTk5ODggMTMuMjI0IDcuNzc2MDIgMTMuMDAwMSA3LjQ5OTg4IDEzLjAwMDFDNy4yMjM3NCAxMy4wMDAxIDYuOTk5ODggMTMuMjI0IDYuOTk5ODggMTMuNTAwMUM2Ljk5OTg4IDEzLjc3NjMgNy4yMjM3NCAxNC4wMDAxIDcuNDk5ODggMTQuMDAwMVpNMTAuOTk5OSAxMy41MDAxQzEwLjk5OTkgMTMuNzc2MyAxMC43NzYgMTQuMDAwMSAxMC40OTk5IDE0LjAwMDFDMTAuMjIzNyAxNC4wMDAxIDkuOTk5ODggMTMuNzc2MyA5Ljk5OTg4IDEzLjUwMDFDOS45OTk4OCAxMy4yMjQgMTAuMjIzNyAxMy4wMDAxIDEwLjQ5OTkgMTMuMDAwMUMxMC43NzYgMTMuMDAwMSAxMC45OTk5IDEzLjIyNCAxMC45OTk5IDEzLjUwMDFaTTEzLjQ5OTkgMTQuMDAwMUMxMy43NzYgMTQuMDAwMSAxMy45OTk5IDEzLjc3NjMgMTMuOTk5OSAxMy41MDAxQzEzLjk5OTkgMTMuMjI0IDEzLjc3NiAxMy4wMDAxIDEzLjQ5OTkgMTMuMDAwMUMxMy4yMjM3IDEzLjAwMDEgMTIuOTk5OSAxMy4yMjQgMTIuOTk5OSAxMy41MDAxQzEyLjk5OTkgMTMuNzc2MyAxMy4yMjM3IDE0LjAwMDEgMTMuNDk5OSAxNC4wMDAxWk0zLjk5OTg4IDUuMDAwMTJDMy45OTk4OCA0LjQ0Nzg0IDQuNDQ3NTkgNC4wMDAxMiA0Ljk5OTg4IDQuMDAwMTJIOS45OTk4OEMxMC41NTIyIDQuMDAwMTIgMTAuOTk5OSA0LjQ0Nzg0IDEwLjk5OTkgNS4wMDAxMlYxMC4wMDAxQzEwLjk5OTkgMTAuNTUyNCAxMC41NTIyIDExLjAwMDEgOS45OTk4OCAxMS4wMDAxSDQuOTk5ODhDNC40NDc1OSAxMS4wMDAxIDMuOTk5ODggMTAuNTUyNCAzLjk5OTg4IDEwLjAwMDFWNS4wMDAxMlpNNC45OTk4OCA1LjAwMDEySDkuOTk5ODhWMTAuMDAwMUg0Ljk5OTg4VjUuMDAwMTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxfbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMSAySDE0VjEzSDFMMSAyWk0wIDJDMCAxLjQ0NzcyIDAuNDQ3NzE1IDEgMSAxSDE0QzE0LjU1MjMgMSAxNSAxLjQ0NzcyIDE1IDJWMTNDMTUgMTMuNTUyMyAxNC41NTIzIDE0IDE0IDE0SDFDMC40NDc3MTUgMTQgMCAxMy41NTIzIDAgMTNWMlpNNC44NzUgNy41QzQuODc1IDYuMDUwMjUgNi4wNTAyNSA0Ljg3NSA3LjUgNC44NzVDOC45NDk3NSA0Ljg3NSAxMC4xMjUgNi4wNTAyNSAxMC4xMjUgNy41QzEwLjEyNSA4Ljk0OTc1IDguOTQ5NzUgMTAuMTI1IDcuNSAxMC4xMjVDNi4wNTAyNSAxMC4xMjUgNC44NzUgOC45NDk3NSA0Ljg3NSA3LjVaTTcuNSAzLjg3NUM1LjQ5Nzk3IDMuODc1IDMuODc1IDUuNDk3OTcgMy44NzUgNy41QzMuODc1IDkuNTAyMDMgNS40OTc5NyAxMS4xMjUgNy41IDExLjEyNUM5LjUwMjAzIDExLjEyNSAxMS4xMjUgOS41MDIwMyAxMS4xMjUgNy41QzExLjEyNSA1LjQ5Nzk3IDkuNTAyMDMgMy44NzUgNy41IDMuODc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sam49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgMUMwLjQ0NzcxNSAxIDAgMS40NDc3MiAwIDJWMTNDMCAxMy41NTIzIDAuNDQ3NzE1IDE0IDEgMTRIMTRDMTQuNTUyMyAxNCAxNSAxMy41NTIzIDE1IDEzVjJDMTUgMS40NDc3MiAxNC41NTIzIDEgMTQgMUgxWk03LjUgMTAuNjI1QzkuMjI1ODkgMTAuNjI1IDEwLjYyNSA5LjIyNTg5IDEwLjYyNSA3LjVDMTAuNjI1IDUuNzc0MTEgOS4yMjU4OSA0LjM3NSA3LjUgNC4zNzVDNS43NzQxMSA0LjM3NSA0LjM3NSA1Ljc3NDExIDQuMzc1IDcuNUM0LjM3NSA5LjIyNTg5IDUuNzc0MTEgMTAuNjI1IDcuNSAxMC42MjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxFbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi4yNSA3LjVDMi4yNSA3LjIyMzg2IDIuNDczODYgNyAyLjc1IDdIMTIuMjVDMTIuNTI2MSA3IDEyLjc1IDcuMjIzODYgMTIuNzUgNy41QzEyLjc1IDcuNzc2MTQgMTIuNTI2MSA4IDEyLjI1IDhIMi43NUMyLjQ3Mzg2IDggMi4yNSA3Ljc3NjE0IDIuMjUgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzY4OTJDMy44NDIyMiAwLjg3Njg5MiAwLjg3NzA3NSAzLjg0MjA0IDAuODc3MDc1IDcuNDk5NzJDMC44NzcwNzUgMTEuMTU3NCAzLjg0MjIyIDE0LjEyMjYgNy40OTk5MSAxNC4xMjI2QzExLjE1NzYgMTQuMTIyNiAxNC4xMjI3IDExLjE1NzQgMTQuMTIyNyA3LjQ5OTcyQzE0LjEyMjcgMy44NDIwNCAxMS4xNTc2IDAuODc2ODkyIDcuNDk5OTEgMC44NzY4OTJaTTEuODI3MDcgNy40OTk3MkMxLjgyNzA3IDQuMzY2NzEgNC4zNjY4OSAxLjgyNjg5IDcuNDk5OTEgMS44MjY4OUMxMC42MzI5IDEuODI2ODkgMTMuMTcyNyA0LjM2NjcxIDEzLjE3MjcgNy40OTk3MkMxMy4xNzI3IDEwLjYzMjcgMTAuNjMyOSAxMy4xNzI2IDcuNDk5OTEgMTMuMTcyNkM0LjM2Njg5IDEzLjE3MjYgMS44MjcwNyAxMC42MzI3IDEuODI3MDcgNy40OTk3MlpNNC41MDAwMyA3QzQuMjIzODkgNyA0LjAwMDAzIDcuMjIzODYgNC4wMDAwMyA3LjVDNC4wMDAwMyA3Ljc3NjE0IDQuMjIzODkgOCA0LjUwMDAzIDhIMTAuNUMxMC43NzYyIDggMTEgNy43NzYxNCAxMSA3LjVDMTEgNy4yMjM4NiAxMC43NzYyIDcgMTAuNSA3SDQuNTAwMDNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxrbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi4xNDkyMSAzLjk5OTk2QzIuMTQ5MjEgMi45Nzc3OCAyLjk3Nzg0IDIuMTQ5MTUgNC4wMDAwMiAyLjE0OTE1QzUuMDIyMTkgMi4xNDkxNSA1Ljg1MDgzIDIuOTc3NzggNS44NTA4MyAzLjk5OTk2QzUuODUwODMgNS4wMjIxMyA1LjAyMjE5IDUuODUwNzcgNC4wMDAwMiA1Ljg1MDc3QzIuOTc3ODQgNS44NTA3NyAyLjE0OTIxIDUuMDIyMTMgMi4xNDkyMSAzLjk5OTk2Wk00LjAwMDAyIDEuMjQ5MTVDMi40ODA3OSAxLjI0OTE1IDEuMjQ5MjEgMi40ODA3MyAxLjI0OTIxIDMuOTk5OTZDMS4yNDkyMSA1LjUxOTE5IDIuNDgwNzkgNi43NTA3NyA0LjAwMDAyIDYuNzUwNzdDNS41MTkyNSA2Ljc1MDc3IDYuNzUwODMgNS41MTkxOSA2Ljc1MDgzIDMuOTk5OTZDNi43NTA4MyAyLjQ4MDczIDUuNTE5MjUgMS4yNDkxNSA0LjAwMDAyIDEuMjQ5MTVaTTUuODIwMzQgMTEuMDAwMUwyLjQ5OTk4IDEyLjgzNjlWOS4xNjMzMUw1LjgyMDM0IDExLjAwMDFaTTIuNjM4ODMgOC4yMTE1OUMyLjE3MjI4IDcuOTUzNSAxLjU5OTk4IDguMjkwOTMgMS41OTk5OCA4LjgyNDExVjEzLjE3NjFDMS41OTk5OCAxMy43MDkzIDIuMTcyMjggMTQuMDQ2NyAyLjYzODgzIDEzLjc4ODZMNi41NzIzNSAxMS42MTI2QzcuMDUzODkgMTEuMzQ2MiA3LjA1Mzg5IDEwLjY1NCA2LjU3MjM1IDEwLjM4NzZMMi42Mzg4MyA4LjIxMTU5Wk04LjMwMDAxIDkuMDAwMDNDOC4zMDAwMSA4LjYxMzQzIDguNjEzNDEgOC4zMDAwMyA5LjAwMDAxIDguMzAwMDNIMTNDMTMuMzg2NiA4LjMwMDAzIDEzLjcgOC42MTM0MyAxMy43IDkuMDAwMDNWMTNDMTMuNyAxMy4zODY2IDEzLjM4NjYgMTMuNyAxMyAxMy43SDkuMDAwMDFDOC42MTM0MSAxMy43IDguMzAwMDEgMTMuMzg2NiA4LjMwMDAxIDEzVjkuMDAwMDNaTTkuMjAwMDEgOS4yMDAwM1YxMi44SDEyLjhWOS4yMDAwM0g5LjIwMDAxWk0xMy40NDMyIDIuMTkzMTFDMTMuNjE4OSAyLjAxNzM3IDEzLjYxODkgMS43MzI0NSAxMy40NDMyIDEuNTU2NzFDMTMuMjY3NSAxLjM4MDk4IDEyLjk4MjYgMS4zODA5OCAxMi44MDY4IDEuNTU2NzFMMTEgMy4zNjM1M0w5LjE5MzIxIDEuNTU2NzRDOS4wMTc0OCAxLjM4MSA4LjczMjU1IDEuMzgxIDguNTU2ODIgMS41NTY3NEM4LjM4MTA4IDEuNzMyNDcgOC4zODEwOCAyLjAxNzQgOC41NTY4MiAyLjE5MzEzTDEwLjM2MzYgMy45OTk5Mkw4LjU1NjgyIDUuODA2NzFDOC4zODEwOCA1Ljk4MjQ1IDguMzgxMDggNi4yNjczNyA4LjU1NjgyIDYuNDQzMTFDOC43MzI1NSA2LjYxODg1IDkuMDE3NDggNi42MTg4NSA5LjE5MzIxIDYuNDQzMTFMMTEgNC42MzYzMkwxMi44MDY4IDYuNDQzMTRDMTIuOTgyNiA2LjYxODg3IDEzLjI2NzUgNi42MTg4NyAxMy40NDMyIDYuNDQzMTRDMTMuNjE4OSA2LjI2NzQgMTMuNjE4OSA1Ljk4MjQ3IDEzLjQ0MzIgNS44MDY3NEwxMS42MzY0IDMuOTk5OTJMMTMuNDQzMiAyLjE5MzExWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNSAzQzQuNjcxNTcgMyA0IDMuNjcxNTcgNCA0LjVDNCA1LjMyODQzIDQuNjcxNTcgNiA1LjUgNkM2LjMyODQzIDYgNyA1LjMyODQzIDcgNC41QzcgMy42NzE1NyA2LjMyODQzIDMgNS41IDNaTTMgNUMzLjAxNjcxIDUgMy4wMzMyMyA0Ljk5OTE4IDMuMDQ5NTIgNC45OTc1OEMzLjI4MDIyIDYuMTM5OSA0LjI4OTY3IDcgNS41IDdDNi43MTAzMyA3IDcuNzE5NzggNi4xMzk5IDcuOTUwNDggNC45OTc1OEM3Ljk2Njc3IDQuOTk5MTggNy45ODMyOSA1IDggNUgxMy41QzEzLjc3NjEgNSAxNCA0Ljc3NjE0IDE0IDQuNUMxNCA0LjIyMzg2IDEzLjc3NjEgNCAxMy41IDRIOEM3Ljk4MzI5IDQgNy45NjY3NyA0LjAwMDgyIDcuOTUwNDggNC4wMDI0MkM3LjcxOTc4IDIuODYwMDkgNi43MTAzMyAyIDUuNSAyQzQuMjg5NjcgMiAzLjI4MDIyIDIuODYwMDkgMy4wNDk1MiA0LjAwMjQyQzMuMDMzMjMgNC4wMDA4MiAzLjAxNjcxIDQgMyA0SDEuNUMxLjIyMzg2IDQgMSA0LjIyMzg2IDEgNC41QzEgNC43NzYxNCAxLjIyMzg2IDUgMS41IDVIM1pNMTEuOTUwNSAxMC45OTc2QzExLjcxOTggMTIuMTM5OSAxMC43MTAzIDEzIDkuNSAxM0M4LjI4OTY3IDEzIDcuMjgwMjIgMTIuMTM5OSA3LjA0OTUyIDEwLjk5NzZDNy4wMzMyMyAxMC45OTkyIDcuMDE2NzEgMTEgNyAxMUgxLjVDMS4yMjM4NiAxMSAxIDEwLjc3NjEgMSAxMC41QzEgMTAuMjIzOSAxLjIyMzg2IDEwIDEuNSAxMEg3QzcuMDE2NzEgMTAgNy4wMzMyMyAxMC4wMDA4IDcuMDQ5NTIgMTAuMDAyNEM3LjI4MDIyIDguODYwMSA4LjI4OTY3IDggOS41IDhDMTAuNzEwMyA4IDExLjcxOTggOC44NjAxIDExLjk1MDUgMTAuMDAyNEMxMS45NjY4IDEwLjAwMDggMTEuOTgzMyAxMCAxMiAxMEgxMy41QzEzLjc3NjEgMTAgMTQgMTAuMjIzOSAxNCAxMC41QzE0IDEwLjc3NjEgMTMuNzc2MSAxMSAxMy41IDExSDEyQzExLjk4MzMgMTEgMTEuOTY2OCAxMC45OTkyIDExLjk1MDUgMTAuOTk3NlpNOCAxMC41QzggOS42NzE1NyA4LjY3MTU3IDkgOS41IDlDMTAuMzI4NCA5IDExIDkuNjcxNTcgMTEgMTAuNUMxMSAxMS4zMjg0IDEwLjMyODQgMTIgOS41IDEyQzguNjcxNTcgMTIgOCAxMS4zMjg0IDggMTAuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFZuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDEuNUM1IDEuMjIzODYgNC43NzYxNCAxIDQuNSAxQzQuMjIzODYgMSA0IDEuMjIzODYgNCAxLjVMNCA3QzQgNy4wMTY3MSA0LjAwMDgyIDcuMDMzMjMgNC4wMDI0MiA3LjA0OTUyQzIuODYwMDkgNy4yODAyMiAyIDguMjg5NjcgMiA5LjVDMiAxMC43MTAzIDIuODYwMDkgMTEuNzE5OCA0LjAwMjQyIDExLjk1MDVDNC4wMDA4MiAxMS45NjY4IDQgMTEuOTgzMyA0IDEyVjEzLjVDNCAxMy43NzYxIDQuMjIzODYgMTQgNC41IDE0QzQuNzc2MTQgMTQgNSAxMy43NzYxIDUgMTMuNVYxMkM1IDExLjk4MzMgNC45OTkxOCAxMS45NjY4IDQuOTk3NTggMTEuOTUwNUM2LjEzOTkgMTEuNzE5OCA3IDEwLjcxMDMgNyA5LjVDNyA4LjI4OTY3IDYuMTM5OSA3LjI4MDIyIDQuOTk3NTggNy4wNDk1MkM0Ljk5OTE4IDcuMDMzMjMgNSA3LjAxNjcxIDUgN0w1IDEuNVpNMTEgMS41QzExIDEuMjIzODYgMTAuNzc2MSAxIDEwLjUgMUMxMC4yMjM5IDEgMTAgMS4yMjM4NiAxMCAxLjVWM0MxMCAzLjAxNjcxIDEwLjAwMDggMy4wMzMyMyAxMC4wMDI0IDMuMDQ5NTJDOC44NjAxIDMuMjgwMjIgOCA0LjI4OTY3IDggNS41QzggNi43MTAzMyA4Ljg2MDEgNy43MTk3OCAxMC4wMDI0IDcuOTUwNDhDMTAuMDAwOCA3Ljk2Njc3IDEwIDcuOTgzMjkgMTAgOFYxMy41QzEwIDEzLjc3NjEgMTAuMjIzOSAxNCAxMC41IDE0QzEwLjc3NjEgMTQgMTEgMTMuNzc2MSAxMSAxMy41VjhDMTEgNy45ODMyOSAxMC45OTkyIDcuOTY2NzcgMTAuOTk3NiA3Ljk1MDQ4QzEyLjEzOTkgNy43MTk3OCAxMyA2LjcxMDMzIDEzIDUuNUMxMyA0LjI4OTY3IDEyLjEzOTkgMy4yODAyMiAxMC45OTc2IDMuMDQ5NTJDMTAuOTk5MiAzLjAzMzIzIDExIDMuMDE2NzEgMTEgM1YxLjVaTTQuNSA4QzMuNjcxNTcgOCAzIDguNjcxNTcgMyA5LjVDMyAxMC4zMjg0IDMuNjcxNTcgMTEgNC41IDExQzUuMzI4NDMgMTEgNiAxMC4zMjg0IDYgOS41QzYgOC42NzE1NyA1LjMyODQzIDggNC41IDhaTTkgNS41QzkgNC42NzE1NyA5LjY3MTU3IDQgMTAuNSA0QzExLjMyODQgNCAxMiA0LjY3MTU3IDEyIDUuNUMxMiA2LjMyODQzIDExLjMyODQgNyAxMC41IDdDOS42NzE1NyA3IDkgNi4zMjg0MyA5IDUuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFJuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjI1OTI1IDMuMTY2NjdMNC4zNzAzNiA1LjMzMzMzVjFMNy4yNTkyNSAzLjE2NjY3Wk0xIDguMjIyMjJMMy44ODg4OSA2LjA1NTU1TDEgMy44ODg4OVY4LjIyMjIyWk0xIDE0TDMuODg4ODkgMTEuODMzM0wxIDkuNjY2NjZWMTRaTTcuNzQwNzIgOC4yMjIyMkwxMC42Mjk2IDYuMDU1NTVMNy43NDA3MiAzLjg4ODg5VjguMjIyMjJaTTE0IDMuMTY2NjdMMTEuMTExMSA1LjMzMzMzVjFMMTQgMy4xNjY2N1pNMTEuMTExMSAxMS4xMTExTDE0IDguOTQ0NDRMMTEuMTExMSA2Ljc3Nzc3VjExLjExMTFaTTMuODg4ODkgMTEuMTExMUwxIDguOTQ0NDRMMy44ODg4OSA2Ljc3Nzc3VjExLjExMTFaTTQuMzcwMzYgNi4wNTU1NUw3LjI1OTI1IDguMjIyMjJWMy44ODg4OUw0LjM3MDM2IDYuMDU1NTVaTTMuODg4ODkgNS4zMzMzM0wxIDMuMTY2NjdMMy44ODg4OSAxVjUuMzMzMzNaTTcuNzQwNzIgMy4xNjY2N0wxMC42Mjk2IDUuMzMzMzNWMUw3Ljc0MDcyIDMuMTY2NjdaTTE0IDguMjIyMjJMMTEuMTExMSA2LjA1NTU1TDE0IDMuODg4ODlWOC4yMjIyMlpNMTEuMTExMSAxMS44MzMzTDE0IDE0VjkuNjY2NjZMMTEuMTExMSAxMS44MzMzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuODk5OTggMC40OTk5NzZDMi44OTk5OCAwLjI3OTA2MiAyLjcyMDg5IDAuMDk5OTc1NiAyLjQ5OTk4IDAuMDk5OTc1NkMyLjI3OTA2IDAuMDk5OTc1NiAyLjA5OTk4IDAuMjc5MDYyIDIuMDk5OTggMC40OTk5NzZWMS4wOTk5OEgxLjQ5OTk4QzEuMjc5MDYgMS4wOTk5OCAxLjA5OTk4IDEuMjc5MDYgMS4wOTk5OCAxLjQ5OTk4QzEuMDk5OTggMS43MjA4OSAxLjI3OTA2IDEuODk5OTggMS40OTk5OCAxLjg5OTk4SDIuMDk5OThWMi40OTk5OEMyLjA5OTk4IDIuNzIwODkgMi4yNzkwNiAyLjg5OTk4IDIuNDk5OTggMi44OTk5OEMyLjcyMDg5IDIuODk5OTggMi44OTk5OCAyLjcyMDg5IDIuODk5OTggMi40OTk5OFYxLjg5OTk4SDMuNDk5OThDMy43MjA4OSAxLjg5OTk4IDMuODk5OTggMS43MjA4OSAzLjg5OTk4IDEuNDk5OThDMy44OTk5OCAxLjI3OTA2IDMuNzIwODkgMS4wOTk5OCAzLjQ5OTk4IDEuMDk5OThIMi44OTk5OFYwLjQ5OTk3NlpNNS44OTk5OCAzLjQ5OTk4QzUuODk5OTggMy4yNzkwNiA1LjcyMDg5IDMuMDk5OTggNS40OTk5OCAzLjA5OTk4QzUuMjc5MDYgMy4wOTk5OCA1LjA5OTk4IDMuMjc5MDYgNS4wOTk5OCAzLjQ5OTk4VjQuMDk5OThINC40OTk5OEM0LjI3OTA2IDQuMDk5OTggNC4wOTk5OCA0LjI3OTA2IDQuMDk5OTggNC40OTk5OEM0LjA5OTk4IDQuNzIwODkgNC4yNzkwNiA0Ljg5OTk4IDQuNDk5OTggNC44OTk5OEg1LjA5OTk4VjUuNDk5OThDNS4wOTk5OCA1LjcyMDg5IDUuMjc5MDYgNS44OTk5OCA1LjQ5OTk4IDUuODk5OThDNS43MjA4OSA1Ljg5OTk4IDUuODk5OTggNS43MjA4OSA1Ljg5OTk4IDUuNDk5OThWNC44OTk5OEg2LjQ5OTk4QzYuNzIwODkgNC44OTk5OCA2Ljg5OTk4IDQuNzIwODkgNi44OTk5OCA0LjQ5OTk4QzYuODk5OTggNC4yNzkwNiA2LjcyMDg5IDQuMDk5OTggNi40OTk5OCA0LjA5OTk4SDUuODk5OThWMy40OTk5OFpNMS44OTk5OCA2LjQ5OTk4QzEuODk5OTggNi4yNzkwNiAxLjcyMDg5IDYuMDk5OTggMS40OTk5OCA2LjA5OTk4QzEuMjc5MDYgNi4wOTk5OCAxLjA5OTk4IDYuMjc5MDYgMS4wOTk5OCA2LjQ5OTk4VjcuMDk5OThIMC40OTk5NzZDMC4yNzkwNjIgNy4wOTk5OCAwLjA5OTk3NTYgNy4yNzkwNiAwLjA5OTk3NTYgNy40OTk5OEMwLjA5OTk3NTYgNy43MjA4OSAwLjI3OTA2MiA3Ljg5OTk4IDAuNDk5OTc2IDcuODk5OThIMS4wOTk5OFY4LjQ5OTk4QzEuMDk5OTggOC43MjA4OSAxLjI3OTA2IDguODk5OTcgMS40OTk5OCA4Ljg5OTk3QzEuNzIwODkgOC44OTk5NyAxLjg5OTk4IDguNzIwODkgMS44OTk5OCA4LjQ5OTk4VjcuODk5OThIMi40OTk5OEMyLjcyMDg5IDcuODk5OTggMi44OTk5OCA3LjcyMDg5IDIuODk5OTggNy40OTk5OEMyLjg5OTk4IDcuMjc5MDYgMi43MjA4OSA3LjA5OTk4IDIuNDk5OTggNy4wOTk5OEgxLjg5OTk4VjYuNDk5OThaTTguNTQ0MDYgMC45ODE4NEw4LjI0NjE4IDAuOTQxNTg2QzguMDMyNzUgMC45MTc2NzYgNy45MDY5MiAxLjE2NTUgOC4wMjkzNiAxLjM0MTk0QzguMTcwMTMgMS41NDQ3OSA4LjI5OTgxIDEuNzU1OTIgOC40MTc1NCAxLjk3NDQ1QzguOTE4NzggMi45MDQ4NSA5LjIwMzIyIDMuOTY5MzIgOS4yMDMyMiA1LjEwMDIyQzkuMjAzMjIgOC4zNzIwMSA2LjgyMjQ3IDExLjA4NzggMy42OTg4NyAxMS42MDk3QzMuNDU3MzYgMTEuNjUgMy4yMDk4OCAxMS42NzcyIDIuOTYwMDggMTEuNjkwNkMyLjc0NTYzIDExLjcwMiAyLjYyNzI5IDExLjk1MzUgMi43NzcyMSAxMi4xMDcyQzIuODQ1NTEgMTIuMTc3MyAyLjkxNTM1IDEyLjI0NTggMi45ODY2NyAxMi4zMTI4TDMuMDU4ODMgMTIuMzc5NUwzLjMxODgzIDEyLjYwNDVMMy41MDY4NCAxMi43NTMyTDMuNjI3OTYgMTIuODQzM0wzLjgxNDkxIDEyLjk3NDJMMy45OTA3OSAxMy4wODlDNC4xMTE3NSAxMy4xNjUxIDQuMjM1MzYgMTMuMjM3NSA0LjM2MTU3IDEzLjMwNTlMNC42MjQ5NiAxMy40NDEyTDQuODg1NTMgMTMuNTYwN0w1LjE4ODM3IDEzLjY4MjhMNS40MzE2OSAxMy43Njg2QzUuNTY1NjQgMTMuODEyOCA1LjcwMTQ5IDEzLjg1MjkgNS44Mzg1NyAxMy44ODg1QzUuOTQyNjIgMTMuOTE1NSA2LjA0NzY3IDEzLjk0MDEgNi4xNTQwNSAxMy45NjIyQzYuMjc5OTMgMTMuOTg4MyA2LjQwNzEzIDE0LjAxMDkgNi41MzU0NCAxNC4wMjk4TDYuODUyNDEgMTQuMDY4NUw3LjExOTM0IDE0LjA4OTJDNy4yNDYzNyAxNC4wOTY1IDcuMzc0MzYgMTQuMTAwMiA3LjUwMzIyIDE0LjEwMDJDMTEuMTQ4MyAxNC4xMDAyIDE0LjEwMzIgMTEuMTQ1MyAxNC4xMDMyIDcuNTAwMjNDMTQuMTAzMiA3LjI1MDQ0IDE0LjA4OTMgNy4wMDM4OSAxNC4wNjIzIDYuNzYxMzFMMTQuMDI1NSA2LjQ4NDA3QzEzLjk5MSA2LjI2MDgzIDEzLjk0NTMgNi4wNDEyOSAxMy44ODkxIDUuODI2NDJDMTMuODIxMyA1LjU2NzA5IDEzLjczODIgNS4zMTM5OCAxMy42NDA5IDUuMDY4ODFMMTMuNTI3OSA0LjgwMTMyTDEzLjQ1MDcgNC42MzU0MkwxMy4zNzY2IDQuNDg2NjZDMTMuMjE3OCA0LjE3NzczIDEzLjAzNTMgMy44ODI5NSAxMi44MzEyIDMuNjA0MjNMMTIuNjc4MiAzLjQwMzUyTDEyLjQ3OTMgMy4xNjQzMkwxMi4zMTU3IDIuOTgzNjFMMTIuMTk2MSAyLjg1OTUxTDEyLjAzNTUgMi43MDI0NkwxMS44MTM0IDIuNTAxODRMMTEuNDkyNSAyLjI0MTkxTDExLjI0ODMgMi4wNjQ5OEwxMC45NTYyIDEuODc0NDZMMTAuNjM0NiAxLjY4ODk0TDEwLjMwNzMgMS41MjM3OEwxMC4xOTM4IDEuNDcxNzZMOS45NTQ4OCAxLjM3MDZMOS42Nzc5MSAxLjI2NjlMOS40MjU2NiAxLjE4NDZMOS4xMDA3NSAxLjA5NDg5TDguODM1OTkgMS4wMzQ4Nkw4LjU0NDA2IDAuOTgxODRaTTEwLjQwMzIgNS4zMDAyM0MxMC40MDMyIDQuMjc1ODggMTAuMjAwMiAzLjI5ODI5IDkuODMyNDQgMi40MDYwNEMxMS43NjIzIDMuMjg5OTUgMTMuMTAzMiA1LjIzODYyIDEzLjEwMzIgNy41MDAyM0MxMy4xMDMyIDEwLjU5MyAxMC41OTYgMTMuMTAwMiA3LjUwMzIyIDEzLjEwMDJDNi42MzY0NiAxMy4xMDAyIDUuODE1OTcgMTIuOTAzNiA1LjA4MzU1IDEyLjU1MjJDNi41NDE5IDEyLjA5NDEgNy44MTA4MSAxMS4yMDgyIDguNzQzMjIgMTAuMDQxNkM4Ljg3OTYzIDEwLjIyODQgOS4xMDAyOCAxMC4zNDk3IDkuMzQ5MjggMTAuMzQ5N0M5Ljc2MzQ5IDEwLjM0OTcgMTAuMDk5MyAxMC4wMTM5IDEwLjA5OTMgOS41OTk3MUMxMC4wOTkzIDkuMjQyNTYgOS44NDk2NSA4Ljk0MzczIDkuNTE1MzUgOC44NjgxNkM5LjU3NzQxIDguNzUxNjUgOS42MzY1MyA4LjYzMzM0IDkuNjkyNiA4LjUxMzMyQzkuODgzNTggOC42MzE2MyAxMC4xMDg4IDguNjk5OTMgMTAuMzUgOC42OTk5M0MxMS4wNDAzIDguNjk5OTMgMTEuNiA4LjE0MDI4IDExLjYgNy40NDk5M0MxMS42IDYuNzU5NzYgMTEuMDQwNiA2LjIwMDI0IDEwLjM1MDUgNi4xOTk5M0MxMC4zODUzIDUuOTA0ODcgMTAuNDAzMiA1LjYwNDY0IDEwLjQwMzIgNS4zMDAyM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFpuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjgxODE5IDAuOTMxNzlDNy42NDI0NSAwLjc1NjA1NCA3LjM1NzUzIDAuNzU2MDU0IDcuMTgxNzkgMC45MzE3OUw1LjQzMTc5IDIuNjgxNzlDNS4yNTYwNSAyLjg1NzUzIDUuMjU2MDUgMy4xNDI0NSA1LjQzMTc5IDMuMzE4MTlDNS42MDc1MyAzLjQ5MzkyIDUuODkyNDUgMy40OTM5MiA2LjA2ODE5IDMuMzE4MTlMNi45OTk5OSAyLjM4NjM4VjUuNDk5OTlDNi45OTk5OSA1Ljc3NjEzIDcuMjIzODUgNS45OTk5OSA3LjQ5OTk5IDUuOTk5OTlDNy43NzYxMyA1Ljk5OTk5IDcuOTk5OTkgNS43NzYxMyA3Ljk5OTk5IDUuNDk5OTlWMi4zODYzOEw4LjkzMTc5IDMuMzE4MTlDOS4xMDc1MyAzLjQ5MzkyIDkuMzkyNDUgMy40OTM5MiA5LjU2ODE5IDMuMzE4MTlDOS43NDM5MiAzLjE0MjQ1IDkuNzQzOTIgMi44NTc1MyA5LjU2ODE5IDIuNjgxNzlMNy44MTgxOSAwLjkzMTc5Wk03Ljk5OTk5IDkuNDk5OTlDNy45OTk5OSA5LjIyMzg1IDcuNzc2MTMgOC45OTk5OSA3LjQ5OTk5IDguOTk5OTlDNy4yMjM4NSA4Ljk5OTk5IDYuOTk5OTkgOS4yMjM4NSA2Ljk5OTk5IDkuNDk5OTlWMTIuNjEzNkw2LjA2ODE5IDExLjY4MThDNS44OTI0NSAxMS41MDYxIDUuNjA3NTMgMTEuNTA2MSA1LjQzMTc5IDExLjY4MThDNS4yNTYwNSAxMS44NTc1IDUuMjU2MDUgMTIuMTQyNCA1LjQzMTc5IDEyLjMxODJMNy4xODE3OSAxNC4wNjgyQzcuMzU3NTMgMTQuMjQzOSA3LjY0MjQ1IDE0LjI0MzkgNy44MTgxOSAxNC4wNjgyTDkuNTY4MTkgMTIuMzE4MkM5Ljc0MzkyIDEyLjE0MjQgOS43NDM5MiAxMS44NTc1IDkuNTY4MTkgMTEuNjgxOEM5LjM5MjQ1IDExLjUwNjEgOS4xMDc1MyAxMS41MDYxIDguOTMxNzkgMTEuNjgxOEw3Ljk5OTk5IDEyLjYxMzZWOS40OTk5OVpNOC45OTk5OSA3LjQ5OTk5QzguOTk5OTkgNy4yMjM4NSA5LjIyMzg1IDYuOTk5OTkgOS40OTk5OSA2Ljk5OTk5SDEyLjYxMzZMMTEuNjgxOCA2LjA2ODE5QzExLjUwNjEgNS44OTI0NSAxMS41MDYxIDUuNjA3NTMgMTEuNjgxOCA1LjQzMTc5QzExLjg1NzUgNS4yNTYwNSAxMi4xNDI0IDUuMjU2MDUgMTIuMzE4MiA1LjQzMTc5TDE0LjA2ODIgNy4xODE3OUMxNC4yNDM5IDcuMzU3NTMgMTQuMjQzOSA3LjY0MjQ1IDE0LjA2ODIgNy44MTgxOUwxMi4zMTgyIDkuNTY4MTlDMTIuMTQyNCA5Ljc0MzkyIDExLjg1NzUgOS43NDM5MiAxMS42ODE4IDkuNTY4MTlDMTEuNTA2MSA5LjM5MjQ1IDExLjUwNjEgOS4xMDc1MyAxMS42ODE4IDguOTMxNzlMMTIuNjEzNiA3Ljk5OTk5SDkuNDk5OTlDOS4yMjM4NSA3Ljk5OTk5IDguOTk5OTkgNy43NzYxMyA4Ljk5OTk5IDcuNDk5OTlaTTMuMzE4MTkgNi4wNjgxOUwyLjM4NjM4IDYuOTk5OTlINS40OTk5OUM1Ljc3NjEzIDYuOTk5OTkgNS45OTk5OSA3LjIyMzg1IDUuOTk5OTkgNy40OTk5OUM1Ljk5OTk5IDcuNzc2MTMgNS43NzYxMyA3Ljk5OTk5IDUuNDk5OTkgNy45OTk5OUgyLjM4NjM4TDMuMzE4MTkgOC45MzE3OUMzLjQ5MzkyIDkuMTA3NTMgMy40OTM5MiA5LjM5MjQ1IDMuMzE4MTkgOS41NjgxOUMzLjE0MjQ1IDkuNzQzOTIgMi44NTc1MyA5Ljc0MzkyIDIuNjgxNzkgOS41NjgxOUwwLjkzMTc5IDcuODE4MTlDMC43NTYwNTQgNy42NDI0NSAwLjc1NjA1NCA3LjM1NzUzIDAuOTMxNzkgNy4xODE3OUwyLjY4MTc5IDUuNDMxNzlDMi44NTc1MyA1LjI1NjA1IDMuMTQyNDUgNS4yNTYwNSAzLjMxODE5IDUuNDMxNzlDMy40OTM5MiA1LjYwNzUzIDMuNDkzOTIgNS44OTI0NSAzLjMxODE5IDYuMDY4MTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxBbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4yNTc4MSAzLjExNjg0QzMuNjc3NzEgMy40NTc5NiAzLjgzNTIzIDMuNDMxOTMgNC42MjM2OSAzLjM3OTMzTDEyLjA1NzEgMi45MzI5OUMxMi4yMTQ3IDIuOTMyOTkgMTIuMDgzNiAyLjc3NTcxIDEyLjAzMTEgMi43NDk1N0wxMC43OTY1IDEuODU3MTFDMTAuNTYgMS42NzM0NyAxMC4yNDQ4IDEuNDYzMTUgOS42NDA4MyAxLjUxNTc2TDIuNDQzMDggMi4wNDA3NEMyLjE4MDU5IDIuMDY2NzcgMi4xMjgxNSAyLjE5ODAxIDIuMjMyNyAyLjMwMzIyTDMuMjU3ODEgMy4xMTY4NFpNMy43MDQxIDQuODQ5MTdWMTIuNjcwNEMzLjcwNDEgMTMuMDkwNyAzLjkxNDE1IDEzLjI0OCA0LjM4NjkzIDEzLjIyMkwxMi41NTYyIDEyLjc0OTNDMTMuMDI5MiAxMi43MjMzIDEzLjA4MTkgMTIuNDM0MSAxMy4wODE5IDEyLjA5MjdWNC4zMjM5N0MxMy4wODE5IDMuOTgzMDYgMTIuOTUwOCAzLjc5OTIxIDEyLjY2MTIgMy44MjU0NUw0LjEyNDIyIDQuMzIzOTdDMy44MDkxOCA0LjM1MDQ0IDMuNzA0MSA0LjUwODAzIDMuNzA0MSA0Ljg0OTE3Wk0xMS43Njg4IDUuMjY4NzJDMTEuODIxMiA1LjUwNTE4IDExLjc2ODggNS43NDE0MiAxMS41MzE5IDUuNzY3OTlMMTEuMTM4MyA1Ljg0NjQxVjExLjYyMDVDMTAuNzk2NSAxMS44MDQyIDEwLjQ4MTQgMTEuOTA5MiAxMC4yMTg4IDExLjkwOTJDOS43OTgzNSAxMS45MDkyIDkuNjkzMDUgMTEuNzc3OSA5LjM3ODEyIDExLjM4NDRMNi44MDM0NSA3LjM0MjQ5VjExLjI1MzJMNy42MTgxNiAxMS40MzdDNy42MTgxNiAxMS40MzcgNy42MTgxNiAxMS45MDkyIDYuOTYwODYgMTEuOTA5Mkw1LjE0ODc5IDEyLjAxNDNDNS4wOTYxNSAxMS45MDkyIDUuMTQ4NzkgMTEuNjQ3IDUuMzMyNTkgMTEuNTk0NEw1LjgwNTQ2IDExLjQ2MzRWNi4yOTI3Nkw1LjE0ODkgNi4yNDAxNUM1LjA5NjI1IDYuMDAzNjkgNS4yMjczOSA1LjY2Mjc4IDUuNTk1NCA1LjYzNjMxTDcuNTM5MzUgNS41MDUyOEwxMC4yMTg4IDkuNTk5OFY1Ljk3NzY1TDkuNTM1NjQgNS44OTkyNEM5LjQ4MzIgNS42MTAxOCA5LjY5MzA1IDUuNDAwMjggOS45NTU3NiA1LjM3NDI1TDExLjc2ODggNS4yNjg3MlpNMS44Mzg3NCAxLjMzMjEyTDkuMzI1NTcgMC43ODA3ODdDMTAuMjQ1IDAuNzAxOTMyIDEwLjQ4MTUgMC43NTQ3NTMgMTEuMDU5NCAxLjE3NDUyTDEzLjQ0OTIgMi44NTQyNEMxMy44NDM2IDMuMTQzMDkgMTMuOTc1IDMuMjIxNzMgMTMuOTc1IDMuNTM2NjFWMTIuNzQ5M0MxMy45NzUgMTMuMzI2NiAxMy43NjQ3IDEzLjY2ODEgMTMuMDI5MyAxMy43MjAzTDQuMzM0OTIgMTQuMjQ1NEMzLjc4MjkxIDE0LjI3MTcgMy41MjAxOSAxNC4xOTMgMy4yMzExMSAxMy44MjUzTDEuNDcxMTYgMTEuNTQxOUMxLjE1NTggMTEuMTIxNiAxLjAyNDY2IDEwLjgwNzEgMS4wMjQ2NiAxMC40MzkyVjIuMjUwNDFDMS4wMjQ2NiAxLjc3ODI1IDEuMjM1MDQgMS4zODQ0MSAxLjgzODc0IDEuMzMyMTJaXCIsZmlsbDpufSkpfSxEbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDEuNUM0LjUgNC4yNSAzIDYuNSAzIDlDMyAxMS40ODUzIDUuMDE0NzIgMTMuNSA3LjUgMTMuNUM5Ljk4NTI4IDEzLjUgMTIgMTEuNDg1MyAxMiA5QzEyIDYuNSAxMC41IDQuMjUgNy41IDEuNVpNMTEgOUMxMSA3LjExMjAzIDkuOTczMTUgNS4yNzE5NSA3LjUgMi44NzM1N0M1LjAyNjg2IDUuMjcxOTUgNCA3LjExMjAzIDQgOUM0IDEwLjkzMyA1LjU2NyAxMi41IDcuNSAxMi41QzkuNDMzIDEyLjUgMTEgMTAuOTMzIDExIDlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxCbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy40OTk4NSAxLjEwMDAxQzMuMjc4OTQgMS4xMDAwMSAzLjA5OTg1IDEuMjc5MDkgMy4wOTk4NSAxLjUwMDAxQzMuMDk5ODUgMS43MjA5MiAzLjI3ODk0IDEuOTAwMDEgMy40OTk4NSAxLjkwMDAxSDExLjQ5OTlDMTEuNzIwOCAxLjkwMDAxIDExLjg5OTkgMS43MjA5MiAxMS44OTk5IDEuNTAwMDFDMTEuODk5OSAxLjI3OTA5IDExLjcyMDggMS4xMDAwMSAxMS40OTk5IDEuMTAwMDFIMy40OTk4NVpNNC45OTk5NSA0LjI1MDAxQzQuOTk5OTUgMy45NzM4NyA0Ljc3NjA5IDMuNzUwMDEgNC40OTk5NSAzLjc1MDAxQzQuMjIzODEgMy43NTAwMSAzLjk5OTk1IDMuOTczODcgMy45OTk5NSA0LjI1MDAxVjkuNTUwMDFDMy45OTk5NSAxMS40ODMgNS41NjY5NSAxMy4wNSA3LjQ5OTk1IDEzLjA1QzkuNDMyOTUgMTMuMDUgMTEgMTEuNDgzIDExIDkuNTUwMDFWNC4yNTAwMUMxMSAzLjk3Mzg3IDEwLjc3NjEgMy43NTAwMSAxMC41IDMuNzUwMDFDMTAuMjIzOCAzLjc1MDAxIDkuOTk5OTUgMy45NzM4NyA5Ljk5OTk1IDQuMjUwMDFWOS41NTAwMUM5Ljk5OTk1IDEwLjkzMDcgOC44ODA2NiAxMi4wNSA3LjQ5OTk1IDEyLjA1QzYuMTE5MjQgMTIuMDUgNC45OTk5NSAxMC45MzA3IDQuOTk5OTUgOS41NTAwMVY0LjI1MDAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuODU3MTQgMkgxMi4xNDI5QzEyLjYxNjIgMiAxMyAyLjM4Mzc2IDEzIDIuODU3MTRWMTIuMTQyOUMxMyAxMi42MTYyIDEyLjYxNjIgMTMgMTIuMTQyOSAxM0gyLjg1NzE0QzIuMzgzNzYgMTMgMiAxMi42MTYyIDIgMTIuMTQyOVYyLjg1NzE0QzIgMi4zODM3NiAyLjM4Mzc2IDIgMi44NTcxNCAyWk0xIDIuODU3MTRDMSAxLjgzMTQ3IDEuODMxNDcgMSAyLjg1NzE0IDFIMTIuMTQyOUMxMy4xNjg1IDEgMTQgMS44MzE0NyAxNCAyLjg1NzE0VjEyLjE0MjlDMTQgMTMuMTY4NSAxMy4xNjg1IDE0IDEyLjE0MjkgMTRIMi44NTcxNEMxLjgzMTQ3IDE0IDEgMTMuMTY4NSAxIDEyLjE0MjlWMi44NTcxNFpNNy40OTk4OCA1LjAwMDEyQzcuNzc2MDIgNS4wMDAxMiA3Ljk5OTg4IDQuNzc2MjYgNy45OTk4OCA0LjUwMDEyQzcuOTk5ODggNC4yMjM5OCA3Ljc3NjAyIDQuMDAwMTIgNy40OTk4OCA0LjAwMDEyQzcuMjIzNzQgNC4wMDAxMiA2Ljk5OTg4IDQuMjIzOTggNi45OTk4OCA0LjUwMDEyQzYuOTk5ODggNC43NzYyNiA3LjIyMzc0IDUuMDAwMTIgNy40OTk4OCA1LjAwMDEyWk00LjQ5OTg4IDExLjAwMDFDNC43NzYwMiAxMS4wMDAxIDQuOTk5ODggMTAuNzc2MyA0Ljk5OTg4IDEwLjUwMDFDNC45OTk4OCAxMC4yMjQgNC43NzYwMiAxMC4wMDAxIDQuNDk5ODggMTAuMDAwMUM0LjIyMzc0IDEwLjAwMDEgMy45OTk4OCAxMC4yMjQgMy45OTk4OCAxMC41MDAxQzMuOTk5ODggMTAuNzc2MyA0LjIyMzc0IDExLjAwMDEgNC40OTk4OCAxMS4wMDAxWk00Ljk5OTg4IDcuNTAwMTJDNC45OTk4OCA3Ljc3NjI2IDQuNzc2MDIgOC4wMDAxMiA0LjQ5OTg4IDguMDAwMTJDNC4yMjM3NCA4LjAwMDEyIDMuOTk5ODggNy43NzYyNiAzLjk5OTg4IDcuNTAwMTJDMy45OTk4OCA3LjIyMzk4IDQuMjIzNzQgNy4wMDAxMiA0LjQ5OTg4IDcuMDAwMTJDNC43NzYwMiA3LjAwMDEyIDQuOTk5ODggNy4yMjM5OCA0Ljk5OTg4IDcuNTAwMTJaTTQuNDk5ODggNS4wMDAxMkM0Ljc3NjAyIDUuMDAwMTIgNC45OTk4OCA0Ljc3NjI2IDQuOTk5ODggNC41MDAxMkM0Ljk5OTg4IDQuMjIzOTggNC43NzYwMiA0LjAwMDEyIDQuNDk5ODggNC4wMDAxMkM0LjIyMzc0IDQuMDAwMTIgMy45OTk4OCA0LjIyMzk4IDMuOTk5ODggNC41MDAxMkMzLjk5OTg4IDQuNzc2MjYgNC4yMjM3NCA1LjAwMDEyIDQuNDk5ODggNS4wMDAxMlpNMTAuOTk5OSAxMC41MDAxQzEwLjk5OTkgMTAuNzc2MyAxMC43NzYgMTEuMDAwMSAxMC40OTk5IDExLjAwMDFDMTAuMjIzNyAxMS4wMDAxIDkuOTk5ODggMTAuNzc2MyA5Ljk5OTg4IDEwLjUwMDFDOS45OTk4OCAxMC4yMjQgMTAuMjIzNyAxMC4wMDAxIDEwLjQ5OTkgMTAuMDAwMUMxMC43NzYgMTAuMDAwMSAxMC45OTk5IDEwLjIyNCAxMC45OTk5IDEwLjUwMDFaTTEwLjQ5OTkgOC4wMDAxMkMxMC43NzYgOC4wMDAxMiAxMC45OTk5IDcuNzc2MjYgMTAuOTk5OSA3LjUwMDEyQzEwLjk5OTkgNy4yMjM5OCAxMC43NzYgNy4wMDAxMiAxMC40OTk5IDcuMDAwMTJDMTAuMjIzNyA3LjAwMDEyIDkuOTk5ODggNy4yMjM5OCA5Ljk5OTg4IDcuNTAwMTJDOS45OTk4OCA3Ljc3NjI2IDEwLjIyMzcgOC4wMDAxMiAxMC40OTk5IDguMDAwMTJaTTEwLjk5OTkgNC41MDAxMkMxMC45OTk5IDQuNzc2MjYgMTAuNzc2IDUuMDAwMTIgMTAuNDk5OSA1LjAwMDEyQzEwLjIyMzcgNS4wMDAxMiA5Ljk5OTg4IDQuNzc2MjYgOS45OTk4OCA0LjUwMDEyQzkuOTk5ODggNC4yMjM5OCAxMC4yMjM3IDQuMDAwMTIgMTAuNDk5OSA0LjAwMDEyQzEwLjc3NiA0LjAwMDEyIDEwLjk5OTkgNC4yMjM5OCAxMC45OTk5IDQuNTAwMTJaTTcuNDk5ODggMTEuMDAwMUM3Ljc3NjAyIDExLjAwMDEgNy45OTk4OCAxMC43NzYzIDcuOTk5ODggMTAuNTAwMUM3Ljk5OTg4IDEwLjIyNCA3Ljc3NjAyIDEwLjAwMDEgNy40OTk4OCAxMC4wMDAxQzcuMjIzNzQgMTAuMDAwMSA2Ljk5OTg4IDEwLjIyNCA2Ljk5OTg4IDEwLjUwMDFDNi45OTk4OCAxMC43NzYzIDcuMjIzNzQgMTEuMDAwMSA3LjQ5OTg4IDExLjAwMDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSwkbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS4yMDMwNyAxLjA0MzEyQzEuMDA0ODEgMC45NTQ5OTggMC43NzIzNCAxLjAwNDggMC42Mjc1NzcgMS4xNjY0MUMwLjQ4MjgxMyAxLjMyODAyIDAuNDU4Nzk0IDEuNTY0NTUgMC41NjgxMTYgMS43NTE5NkwzLjkyMTE1IDcuNTAwMDJMMC41NjgxMTYgMTMuMjQ4MUMwLjQ1ODc5NCAxMy40MzU1IDAuNDgyODEzIDEzLjY3MiAwLjYyNzU3NyAxMy44MzM2QzAuNzcyMzQgMTMuOTk1MiAxLjAwNDgxIDE0LjA0NSAxLjIwMzA3IDEzLjk1NjlMMTQuNzAzMSA3Ljk1NjkyQzE0Ljg4MzYgNy44NzY2NyAxNSA3LjY5NzYxIDE1IDcuNTAwMDJDMTUgNy4zMDI0MiAxNC44ODM2IDcuMTIzMzYgMTQuNzAzMSA3LjA0MzExTDEuMjAzMDcgMS4wNDMxMlpNNC44NDU1MiA3LjEwMDAyTDIuMjEyMzQgMi41ODZMMTMuMjY4OSA3LjUwMDAyTDIuMjEyMzQgMTIuNDE0TDQuODQ1NTIgNy45MDAwMkg5QzkuMjIwOTEgNy45MDAwMiA5LjQgNy43MjA5NCA5LjQgNy41MDAwMkM5LjQgNy4yNzkxMSA5LjIyMDkxIDcuMTAwMDIgOSA3LjEwMDAySDQuODQ1NTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxGbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi4wNDk5NSAyLjc0OTk4QzYuMDQ5OTUgMi40NDYyMyA1LjgwMzcxIDIuMTk5OTggNS40OTk5NSAyLjE5OTk4QzUuMTk2MTkgMi4xOTk5OCA0Ljk0OTk1IDIuNDQ2MjMgNC45NDk5NSAyLjc0OTk4VjEyLjI1QzQuOTQ5OTUgMTIuNTUzNyA1LjE5NjE5IDEyLjggNS40OTk5NSAxMi44QzUuODAzNzEgMTIuOCA2LjA0OTk1IDEyLjU1MzcgNi4wNDk5NSAxMi4yNVYyLjc0OTk4Wk0xMC4wNSAyLjc0OTk4QzEwLjA1IDIuNDQ2MjMgOS44MDM3MSAyLjE5OTk4IDkuNDk5OTUgMi4xOTk5OEM5LjE5NjE5IDIuMTk5OTggOC45NDk5NSAyLjQ0NjIzIDguOTQ5OTUgMi43NDk5OFYxMi4yNUM4Ljk0OTk1IDEyLjU1MzcgOS4xOTYxOSAxMi44IDkuNDk5OTUgMTIuOEM5LjgwMzcxIDEyLjggMTAuMDUgMTIuNTUzNyAxMC4wNSAxMi4yNVYyLjc0OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sV249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjg1MzYgMS4xNDY0NUMxMS42NTgzIDAuOTUxMTg0IDExLjM0MTcgMC45NTExODQgMTEuMTQ2NSAxLjE0NjQ1TDMuNzE0NTUgOC41NzgzNkMzLjYyNDU5IDguNjY4MzIgMy41NTI2MyA4Ljc3NDYxIDMuNTAyNTEgOC44OTE1NUwyLjA0MDQ0IDEyLjMwM0MxLjk1OTkgMTIuNDkxIDIuMDAxODkgMTIuNzA5IDIuMTQ2NDYgMTIuODUzNkMyLjI5MTAzIDEyLjk5ODEgMi41MDkwNSAxMy4wNDAxIDIuNjk2OTcgMTIuOTU5Nkw2LjEwODQ3IDExLjQ5NzVDNi4yMjU0IDExLjQ0NzQgNi4zMzE3IDExLjM3NTQgNi40MjE2NiAxMS4yODU1TDEzLjg1MzYgMy44NTM1NUMxNC4wNDg4IDMuNjU4MjkgMTQuMDQ4OCAzLjM0MTcxIDEzLjg1MzYgMy4xNDY0NUwxMS44NTM2IDEuMTQ2NDVaTTQuNDIxNjYgOS4yODU0N0wxMS41IDIuMjA3MTFMMTIuNzkyOSAzLjVMNS43MTQ1NSAxMC41Nzg0TDQuMjE5MjQgMTEuMjE5MkwzLjc4MDgxIDEwLjc4MDhMNC40MjE2NiA5LjI4NTQ3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjE0NjQgMS4xNDY0NUMxMi4zNDE3IDAuOTUxMTg0IDEyLjY1ODMgMC45NTExODQgMTIuODUzNSAxLjE0NjQ1TDE0Ljg1MzUgMy4xNDY0NUMxNS4wNDg4IDMuMzQxNzEgMTUuMDQ4OCAzLjY1ODI5IDE0Ljg1MzUgMy44NTM1NUwxMC45MTA5IDcuNzk2MThDMTAuODM0OSA3Ljg3MjE4IDEwLjc0NzEgNy45MzU0MyAxMC42NTEgNy45ODM1TDYuNzIzNTkgOS45NDcyMUM2LjUzMTA5IDEwLjA0MzUgNi4yOTg2MSAxMC4wMDU3IDYuMTQ2NDMgOS44NTM1NUM1Ljk5NDI1IDkuNzAxMzcgNS45NTY1MiA5LjQ2ODg5IDYuMDUyNzcgOS4yNzYzOUw4LjAxNjQ4IDUuMzQ4OTdDOC4wNjQ1NSA1LjI1MjgzIDguMTI3OCA1LjE2NTA3IDguMjAzOCA1LjA4OTA3TDEyLjE0NjQgMS4xNDY0NVpNMTIuNSAyLjIwNzExTDguOTEwOTEgNS43OTYxOEw3Ljg3MjY2IDcuODcyNjdMOC4xMjczMSA4LjEyNzMyTDEwLjIwMzggNy4wODkwN0wxMy43OTI5IDMuNUwxMi41IDIuMjA3MTFaTTkuOTk5OTggMkw4Ljk5OTk4IDNINC45QzQuNDcxNzEgMyA0LjE4MDU2IDMuMDAwMzkgMy45NTU1MiAzLjAxODc3QzMuNzM2MzEgMy4wMzY2OCAzLjYyNDIxIDMuMDY5MTUgMy41NDYwMSAzLjEwODk5QzMuMzU3ODUgMy4yMDQ4NyAzLjIwNDg3IDMuMzU3ODUgMy4xMDg5OSAzLjU0NjAxQzMuMDY5MTUgMy42MjQyMSAzLjAzNjY5IDMuNzM2MzEgMy4wMTg3OCAzLjk1NTUyQzMuMDAwMzkgNC4xODA1NiAzIDQuNDcxNzEgMyA0LjlWMTEuMUMzIDExLjUyODMgMy4wMDAzOSAxMS44MTk0IDMuMDE4NzggMTIuMDQ0NUMzLjAzNjY5IDEyLjI2MzcgMy4wNjkxNSAxMi4zNzU4IDMuMTA4OTkgMTIuNDU0QzMuMjA0ODcgMTIuNjQyMiAzLjM1Nzg1IDEyLjc5NTEgMy41NDYwMSAxMi44OTFDMy42MjQyMSAxMi45MzA5IDMuNzM2MzEgMTIuOTYzMyAzLjk1NTUyIDEyLjk4MTJDNC4xODA1NiAxMi45OTk2IDQuNDcxNzEgMTMgNC45IDEzSDExLjFDMTEuNTI4MyAxMyAxMS44MTk0IDEyLjk5OTYgMTIuMDQ0NSAxMi45ODEyQzEyLjI2MzcgMTIuOTYzMyAxMi4zNzU4IDEyLjkzMDkgMTIuNDU0IDEyLjg5MUMxMi42NDIyIDEyLjc5NTEgMTIuNzk1MSAxMi42NDIyIDEyLjg5MSAxMi40NTRDMTIuOTMwOSAxMi4zNzU4IDEyLjk2MzMgMTIuMjYzNyAxMi45ODEyIDEyLjA0NDVDMTIuOTk5NiAxMS44MTk0IDEzIDExLjUyODMgMTMgMTEuMVY2Ljk5OTk4TDE0IDUuOTk5OThWMTEuMVYxMS4xMjA3QzE0IDExLjUyMzEgMTQgMTEuODU1MyAxMy45Nzc5IDEyLjEyNTlDMTMuOTU0OSAxMi40MDcgMTMuOTA1NyAxMi42NjUzIDEzLjc4MiAxMi45MDhDMTMuNTkwMyAxMy4yODQzIDEzLjI4NDMgMTMuNTkwMyAxMi45MDggMTMuNzgyQzEyLjY2NTMgMTMuOTA1NyAxMi40MDcgMTMuOTU0OSAxMi4xMjU5IDEzLjk3NzlDMTEuODU1MyAxNCAxMS41MjMxIDE0IDExLjEyMDcgMTRIMTEuMUg0LjlINC44NzkzNEM0LjQ3Njg2IDE0IDQuMTQ0NjggMTQgMy44NzQwOSAxMy45Nzc5QzMuNTkzMDQgMTMuOTU0OSAzLjMzNDY5IDEzLjkwNTcgMy4wOTIwMiAxMy43ODJDMi43MTU3IDEzLjU5MDMgMi40MDk3MyAxMy4yODQzIDIuMjE3OTkgMTIuOTA4QzIuMDk0MzQgMTIuNjY1MyAyLjA0NTA2IDEyLjQwNyAyLjAyMjEgMTIuMTI1OUMxLjk5OTk5IDExLjg1NTMgMS45OTk5OSAxMS41MjMxIDIgMTEuMTIwN1YxMS4xMjA2VjExLjFWNC45VjQuODc5MzVWNC44NzkzMlY0Ljg3OTMxQzEuOTk5OTkgNC40NzY4NSAxLjk5OTk5IDQuMTQ0NjggMi4wMjIxIDMuODc0MDlDMi4wNDUwNiAzLjU5MzA0IDIuMDk0MzQgMy4zMzQ2OSAyLjIxNzk5IDMuMDkyMDJDMi40MDk3MyAyLjcxNTY5IDIuNzE1NyAyLjQwOTczIDMuMDkyMDIgMi4yMTc5OUMzLjMzNDY5IDIuMDk0MzQgMy41OTMwNCAyLjA0NTA2IDMuODc0MDkgMi4wMjIxQzQuMTQ0NjggMS45OTk5OSA0LjQ3Njg1IDEuOTk5OTkgNC44NzkzMiAySDQuODc5MzVINC45SDkuOTk5OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx6bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDAuODc1QzUuNDk3OTcgMC44NzUgMy44NzUgMi40OTc5NyAzLjg3NSA0LjVDMy44NzUgNi4xNTI4OCA0Ljk4MTI0IDcuNTQ3MzggNi40OTM3MyA3Ljk4MzUxQzUuMjk5NyA4LjEyOTAxIDQuMjc1NTcgOC41NTEzNCAzLjUwNDA3IDkuMzExNjdDMi41MjIxNiAxMC4yNzk0IDIuMDI1MDIgMTEuNzIgMi4wMjUwMiAxMy41OTk5QzIuMDI1MDIgMTMuODYyMyAyLjIzNzY5IDE0LjA3NDkgMi41MDAwMiAxNC4wNzQ5QzIuNzYyMzYgMTQuMDc0OSAyLjk3NTAyIDEzLjg2MjMgMi45NzUwMiAxMy41OTk5QzIuOTc1MDIgMTEuODc5OSAzLjQyNzg2IDEwLjcyMDYgNC4xNzA5MSA5Ljk4ODNDNC45MTUzNiA5LjI1NDYzIDYuMDI2NzQgOC44NzQ5OSA3LjQ5OTk1IDguODc0OTlDOC45NzMxNyA4Ljg3NDk5IDEwLjA4NDYgOS4yNTQ2MyAxMC44MjkxIDkuOTg4MzFDMTEuNTcyMSAxMC43MjA2IDEyLjAyNSAxMS44Nzk5IDEyLjAyNSAxMy41OTk5QzEyLjAyNSAxMy44NjIzIDEyLjIzNzYgMTQuMDc0OSAxMi41IDE0LjA3NDlDMTIuNzYyMyAxNC4wNzUgMTIuOTc1IDEzLjg2MjMgMTIuOTc1IDEzLjZDMTIuOTc1IDExLjcyIDEyLjQ3NzggMTAuMjc5NCAxMS40OTU5IDkuMzExNjZDMTAuNzI0NCA4LjU1MTM1IDkuNzAwMjUgOC4xMjkwMyA4LjUwNjI1IDcuOTgzNTJDMTAuMDE4NyA3LjU0NzQgMTEuMTI1IDYuMTUyODkgMTEuMTI1IDQuNUMxMS4xMjUgMi40OTc5NyA5LjUwMjAzIDAuODc1IDcuNSAwLjg3NVpNNC44MjUgNC41QzQuODI1IDMuMDIyNjQgNi4wMjI2NCAxLjgyNSA3LjUgMS44MjVDOC45NzczNiAxLjgyNSAxMC4xNzUgMy4wMjI2NCAxMC4xNzUgNC41QzEwLjE3NSA1Ljk3NzM2IDguOTc3MzYgNy4xNzUgNy41IDcuMTc1QzYuMDIyNjQgNy4xNzUgNC44MjUgNS45NzczNiA0LjgyNSA0LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxVbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS44NTAwMSA3LjUwMDQzQzEuODUwMDEgNC4zNzk3NSA0LjM3OTYzIDEuODUwMDEgNy41MDAwMSAxLjg1MDAxQzEwLjYyMDQgMS44NTAwMSAxMy4xNSA0LjM3OTc1IDEzLjE1IDcuNTAwNDNDMTMuMTUgMTAuNjIxMSAxMC42MjA0IDEzLjE1MDkgNy41MDAwMSAxMy4xNTA5QzQuMzc5NjMgMTMuMTUwOSAxLjg1MDAxIDEwLjYyMTEgMS44NTAwMSA3LjUwMDQzWk03LjUwMDAxIDAuODUwMDA2QzMuODI3MjggMC44NTAwMDYgMC44NTAwMDYgMy44Mjc1MyAwLjg1MDAwNiA3LjUwMDQzQzAuODUwMDA2IDExLjE3MzMgMy44MjcyOCAxNC4xNTA5IDcuNTAwMDEgMTQuMTUwOUMxMS4xNzI3IDE0LjE1MDkgMTQuMTUgMTEuMTczMyAxNC4xNSA3LjUwMDQzQzE0LjE1IDMuODI3NTMgMTEuMTcyNyAwLjg1MDAwNiA3LjUwMDAxIDAuODUwMDA2Wk03LjAwMDAxIDguMDAwMDFWMy4xMjgxMUM3LjE2NDExIDMuMTA5NTQgNy4zMzA5NCAzLjEwMDAxIDcuNTAwMDEgMy4xMDAwMUM5LjkzMDA2IDMuMTAwMDEgMTEuOSA1LjA3MDE0IDExLjkgNy41MDA0M0MxMS45IDcuNjY5MzUgMTEuODkwNSA3LjgzNjA0IDExLjg3MiA4LjAwMDAxSDcuMDAwMDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxHbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyA1LjVDMyA3Ljk4MyA0Ljk5MTY5IDkgNyA5VjEyLjVDNyAxMi43NzYxIDcuMjIzODYgMTMgNy41IDEzQzcuNzc2MTQgMTMgOCAxMi43NzYxIDggMTIuNVY5VjMuMUg5VjEyLjVDOSAxMi43NzYxIDkuMjIzODYgMTMgOS41IDEzQzkuNzc2MTQgMTMgMTAgMTIuNzc2MSAxMCAxMi41VjMuMUgxMS41QzExLjgwMzggMy4xIDEyLjA1IDIuODUzNzYgMTIuMDUgMi41NUMxMi4wNSAyLjI0NjI0IDExLjgwMzggMiAxMS41IDJIOS41SDhINy41SDdDNC45OTE2OSAyIDMgMy4wMTcgMyA1LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxxbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuNSAxMy45NUMxMy43NDg1IDEzLjk1IDEzLjk1IDEzLjc0ODUgMTMuOTUgMTMuNUMxMy45NSAxMy4yNTE0IDEzLjc0ODUgMTMuMDUgMTMuNSAxMy4wNUwxLjQ5OTk1IDEzLjA1QzEuMjUxNDIgMTMuMDUgMS4wNDk5NSAxMy4yNTE0IDEuMDQ5OTUgMTMuNUMxLjA0OTk1IDEzLjc0ODUgMS4yNTE0MiAxMy45NSAxLjQ5OTk1IDEzLjk1TDEzLjUgMTMuOTVaTTExLjA2ODEgNy41NjgzQzExLjI0MzkgNy4zOTI1NyAxMS4yNDM5IDcuMTA3NjQgMTEuMDY4MSA2LjkzMTkxQzEwLjg5MjQgNi43NTYxNyAxMC42MDc1IDYuNzU2MTcgMTAuNDMxNyA2LjkzMTkxTDcuOTQ5OTMgOS40MTM3MUw3Ljk0OTkzIDEuNDk5OThDNy45NDk5MyAxLjI1MTQ2IDcuNzQ4NDYgMS4wNDk5OCA3LjQ5OTkzIDEuMDQ5OThDNy4yNTE0IDEuMDQ5OTggNy4wNDk5MyAxLjI1MTQ2IDcuMDQ5OTMgMS40OTk5OEw3LjA0OTkzIDkuNDEzNzFMNC41NjgxMyA2LjkzMTkxQzQuMzkyMzkgNi43NTYxNyA0LjEwNzQ2IDYuNzU2MTcgMy45MzE3MyA2LjkzMTkxQzMuNzU1OTkgNy4xMDc2NCAzLjc1NTk5IDcuMzkyNTcgMy45MzE3MyA3LjU2ODNMNy4xODE3MyAxMC44MTgzQzcuMzU3NDYgMTAuOTk0IDcuNjQyMzkgMTAuOTk0IDcuODE4MTIgMTAuODE4M0wxMS4wNjgxIDcuNTY4M1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFluPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjA1MDA1IDEzLjVDMi4wNTAwNSAxMy43NDg1IDIuMjUxNTIgMTMuOTUgMi41MDAwNSAxMy45NUMyLjc0ODU4IDEzLjk1IDIuOTUwMDUgMTMuNzQ4NSAyLjk1MDA1IDEzLjVMMi45NTAwNSAxLjQ5OTk1QzIuOTUwMDUgMS4yNTE0MiAyLjc0ODU4IDEuMDQ5OTUgMi41MDAwNSAxLjA0OTk1QzIuMjUxNTIgMS4wNDk5NSAyLjA1MDA1IDEuMjUxNDIgMi4wNTAwNSAxLjQ5OTk1TDIuMDUwMDUgMTMuNVpNOC40MzE3IDExLjA2ODFDOC42MDc0MyAxMS4yNDM5IDguODkyMzYgMTEuMjQzOSA5LjA2ODA5IDExLjA2ODFDOS4yNDM4MyAxMC44OTI0IDkuMjQzODMgMTAuNjA3NSA5LjA2ODA5IDEwLjQzMTdMNi41ODYyOSA3Ljk0OTkzTDE0LjUgNy45NDk5M0MxNC43NDg1IDcuOTQ5OTMgMTQuOTUgNy43NDg0NiAxNC45NSA3LjQ5OTkzQzE0Ljk1IDcuMjUxNCAxNC43NDg1IDcuMDQ5OTMgMTQuNSA3LjA0OTkzTDYuNTg2MjkgNy4wNDk5M0w5LjA2ODA5IDQuNTY4MTNDOS4yNDM4MyA0LjM5MjM5IDkuMjQzODMgNC4xMDc0NiA5LjA2ODA5IDMuOTMxNzNDOC44OTIzNiAzLjc1NTk5IDguNjA3NDMgMy43NTU5OSA4LjQzMTcgMy45MzE3M0w1LjE4MTcgNy4xODE3M0M1LjAwNTk2IDcuMzU3NDYgNS4wMDU5NiA3LjY0MjM5IDUuMTgxNyA3LjgxODEyTDguNDMxNyAxMS4wNjgxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sS249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjk1IDEuNTAwMDVDMTIuOTUgMS4yNTE1MiAxMi43NDg1IDEuMDUwMDUgMTIuNSAxLjA1MDA1QzEyLjI1MTQgMS4wNTAwNSAxMi4wNSAxLjI1MTUyIDEyLjA1IDEuNTAwMDVMMTIuMDUgMTMuNUMxMi4wNSAxMy43NDg2IDEyLjI1MTQgMTMuOTUgMTIuNSAxMy45NUMxMi43NDg1IDEzLjk1IDEyLjk1IDEzLjc0ODYgMTIuOTUgMTMuNUwxMi45NSAxLjUwMDA1Wk02LjU2ODMgMy45MzE4OEM2LjM5MjU3IDMuNzU2MTQgNi4xMDc2NCAzLjc1NjE0IDUuOTMxOTEgMy45MzE4OEM1Ljc1NjE3IDQuMTA3NjEgNS43NTYxNyA0LjM5MjU0IDUuOTMxOTEgNC41NjgyN0w4LjQxMzcxIDcuMDUwMDdMMC40OTk5ODQgNy4wNTAwN0MwLjI1MTQ1NiA3LjA1MDA3IDAuMDQ5OTg0NyA3LjI1MTU1IDAuMDQ5OTg0NyA3LjUwMDA3QzAuMDQ5OTg0NiA3Ljc0ODYgMC4yNTE0NTcgNy45NTAwNyAwLjQ5OTk4NCA3Ljk1MDA3TDguNDEzNzEgNy45NTAwN0w1LjkzMTkxIDEwLjQzMTlDNS43NTYxNyAxMC42MDc2IDUuNzU2MTcgMTAuODkyNSA1LjkzMTkxIDExLjA2ODNDNi4xMDc2NCAxMS4yNDQgNi4zOTI1NyAxMS4yNDQgNi41NjgzMSAxMS4wNjgzTDkuODE4MyA3LjgxODI3QzkuOTk0MDQgNy42NDI1NCA5Ljk5NDA0IDcuMzU3NjEgOS44MTgzIDcuMTgxODhMNi41NjgzIDMuOTMxODhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxYbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41MDAwNSAxLjA1MDA1QzEuMjUxNTIgMS4wNTAwNSAxLjA1MDA1IDEuMjUxNTIgMS4wNTAwNSAxLjUwMDA1QzEuMDUwMDUgMS43NDg1OCAxLjI1MTUyIDEuOTUwMDUgMS41MDAwNSAxLjk1MDA1TDEzLjUgMS45NTAwNUMxMy43NDg2IDEuOTUwMDUgMTMuOTUgMS43NDg1OCAxMy45NSAxLjUwMDA1QzEzLjk1IDEuMjUxNTIgMTMuNzQ4NiAxLjA1MDA1IDEzLjUgMS4wNTAwNUgxLjUwMDA1Wk0zLjkzMTg4IDcuNDMxNjlDMy43NTYxNCA3LjYwNzQzIDMuNzU2MTQgNy44OTIzNiAzLjkzMTg4IDguMDY4MDlDNC4xMDc2MSA4LjI0MzgzIDQuMzkyNTQgOC4yNDM4MyA0LjU2ODI3IDguMDY4MDlMNy4wNTAwNyA1LjU4NjI5VjEzLjVDNy4wNTAwNyAxMy43NDg1IDcuMjUxNTUgMTMuOTUgNy41MDAwNyAxMy45NUM3Ljc0ODYgMTMuOTUgNy45NTAwNyAxMy43NDg1IDcuOTUwMDcgMTMuNUw3Ljk1MDA3IDUuNTg2MjlMMTAuNDMxOSA4LjA2ODA5QzEwLjYwNzYgOC4yNDM4MyAxMC44OTI1IDguMjQzODMgMTEuMDY4MyA4LjA2ODA5QzExLjI0NCA3Ljg5MjM1IDExLjI0NCA3LjYwNzQzIDExLjA2ODMgNy40MzE2OUw3LjgxODI3IDQuMTgxNjlDNy42NDI1NCA0LjAwNTk2IDcuMzU3NjEgNC4wMDU5NiA3LjE4MTg4IDQuMTgxNjlMMy45MzE4OCA3LjQzMTY5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMjQxODIgMi4zMjE4MUMzLjM5MTkgMi4yMzEzMiAzLjU3ODQgMi4yMjYwMSAzLjczMzM4IDIuMzA3ODFMMTIuNzMzNCA3LjA1NzgxQzEyLjg5NzQgNy4xNDQzNiAxMyA3LjMxNDU3IDEzIDcuNUMxMyA3LjY4NTQzIDEyLjg5NzQgNy44NTU2NCAxMi43MzM0IDcuOTQyMTlMMy43MzMzOCAxMi42OTIyQzMuNTc4NCAxMi43NzQgMy4zOTE5IDEyLjc2ODcgMy4yNDE4MiAxMi42NzgyQzMuMDkxNzUgMTIuNTg3NyAzIDEyLjQyNTIgMyAxMi4yNVYyLjc1QzMgMi41NzQ3NiAzLjA5MTc1IDIuNDEyMyAzLjI0MTgyIDIuMzIxODFaTTQgMy41NzkyNVYxMS40MjA3TDExLjQyODggNy41TDQgMy41NzkyNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEpuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04IDIuNzVDOCAyLjQ3Mzg2IDcuNzc2MTQgMi4yNSA3LjUgMi4yNUM3LjIyMzg2IDIuMjUgNyAyLjQ3Mzg2IDcgMi43NVY3SDIuNzVDMi40NzM4NiA3IDIuMjUgNy4yMjM4NiAyLjI1IDcuNUMyLjI1IDcuNzc2MTQgMi40NzM4NiA4IDIuNzUgOEg3VjEyLjI1QzcgMTIuNTI2MSA3LjIyMzg2IDEyLjc1IDcuNSAxMi43NUM3Ljc3NjE0IDEyLjc1IDggMTIuNTI2MSA4IDEyLjI1VjhIMTIuMjVDMTIuNTI2MSA4IDEyLjc1IDcuNzc2MTQgMTIuNzUgNy41QzEyLjc1IDcuMjIzODYgMTIuNTI2MSA3IDEyLjI1IDdIOFYyLjc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzY4OTJDMy44NDIyMiAwLjg3Njg5MiAwLjg3NzA3NSAzLjg0MjA0IDAuODc3MDc1IDcuNDk5NzJDMC44NzcwNzUgMTEuMTU3NCAzLjg0MjIyIDE0LjEyMjYgNy40OTk5MSAxNC4xMjI2QzExLjE1NzYgMTQuMTIyNiAxNC4xMjI3IDExLjE1NzQgMTQuMTIyNyA3LjQ5OTcyQzE0LjEyMjcgMy44NDIwNCAxMS4xNTc2IDAuODc2ODkyIDcuNDk5OTEgMC44NzY4OTJaTTEuODI3MDcgNy40OTk3MkMxLjgyNzA3IDQuMzY2NzEgNC4zNjY4OSAxLjgyNjg5IDcuNDk5OTEgMS44MjY4OUMxMC42MzI5IDEuODI2ODkgMTMuMTcyNyA0LjM2NjcxIDEzLjE3MjcgNy40OTk3MkMxMy4xNzI3IDEwLjYzMjcgMTAuNjMyOSAxMy4xNzI2IDcuNDk5OTEgMTMuMTcyNkM0LjM2Njg5IDEzLjE3MjYgMS44MjcwNyAxMC42MzI3IDEuODI3MDcgNy40OTk3MlpNNy41MDAwMyA0QzcuNzc2MTcgNCA4LjAwMDAzIDQuMjIzODYgOC4wMDAwMyA0LjVWN0gxMC41QzEwLjc3NjIgNyAxMSA3LjIyMzg2IDExIDcuNUMxMSA3Ljc3NjE0IDEwLjc3NjIgOCAxMC41IDhIOC4wMDAwM1YxMC41QzguMDAwMDMgMTAuNzc2MSA3Ljc3NjE3IDExIDcuNTAwMDMgMTFDNy4yMjM4OSAxMSA3LjAwMDAzIDEwLjc3NjEgNy4wMDAwMyAxMC41VjhINC41MDAwM0M0LjIyMzg5IDggNC4wMDAwMyA3Ljc3NjE0IDQuMDAwMDMgNy41QzQuMDAwMDMgNy4yMjM4NiA0LjIyMzg5IDcgNC41MDAwMyA3SDcuMDAwMDNWNC41QzcuMDAwMDMgNC4yMjM4NiA3LjIyMzg5IDQgNy41MDAwMyA0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuMDc1MDUgNC4xMDAwMUM1LjA3NTA1IDIuOTExMDMgNi4yNTcyNyAxLjkyNTAyIDcuNTAwMDUgMS45MjUwMkM4Ljc0MjgzIDEuOTI1MDIgOS45MjUwNSAyLjkxMTAzIDkuOTI1MDUgNC4xMDAwMUM5LjkyNTA1IDUuMTk4NjEgOS4zNjc4MiA1LjcxNDM2IDguNjE4NTQgNi4zNzg4NEw4LjU4NzU3IDYuNDA2M0M3Ljg0NDgxIDcuMDY0NjcgNi45MjUwNSA3Ljg3OTk1IDYuOTI1MDUgOS41QzYuOTI1MDUgOS44MTc1NyA3LjE4MjQ4IDEwLjA3NSA3LjUwMDA1IDEwLjA3NUM3LjgxNzYxIDEwLjA3NSA4LjA3NTA1IDkuODE3NTcgOC4wNzUwNSA5LjVDOC4wNzUwNSA4LjQxNTE3IDguNjI5NDUgNy45MDYyMyA5LjM4MTU2IDcuMjM5MjVMOS40MDIzOCA3LjIyMDc5QzEwLjE0OTYgNi41NTgyOSAxMS4wNzUgNS43Mzc3NSAxMS4wNzUgNC4xMDAwMUMxMS4wNzUgMi4xMjc1NyA5LjIxODY5IDAuNzc1MDI0IDcuNTAwMDUgMC43NzUwMjRDNS43ODE0IDAuNzc1MDI0IDMuOTI1MDUgMi4xMjc1NyAzLjkyNTA1IDQuMTAwMDFDMy45MjUwNSA0LjQxNzU4IDQuMTgyNDkgNC42NzUwMSA0LjUwMDA1IDQuNjc1MDFDNC44MTc2MSA0LjY3NTAxIDUuMDc1MDUgNC40MTc1OCA1LjA3NTA1IDQuMTAwMDFaTTcuNTAwMDUgMTMuMzU3NUM3Ljk4MzMgMTMuMzU3NSA4LjM3NTA1IDEyLjk2NTcgOC4zNzUwNSAxMi40ODI1QzguMzc1MDUgMTEuOTk5MiA3Ljk4MzMgMTEuNjA3NSA3LjUwMDA1IDExLjYwNzVDNy4wMTY4IDExLjYwNzUgNi42MjUwNSAxMS45OTkyIDYuNjI1MDUgMTIuNDgyNUM2LjYyNTA1IDEyLjk2NTcgNy4wMTY4IDEzLjM1NzUgNy41MDAwNSAxMy4zNTc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuODc3MDc1IDcuNDk5NzJDMC44NzcwNzUgMy44NDIwNCAzLjg0MjIyIDAuODc2ODkyIDcuNDk5OTEgMC44NzY4OTJDMTEuMTU3NiAwLjg3Njg5MiAxNC4xMjI3IDMuODQyMDQgMTQuMTIyNyA3LjQ5OTcyQzE0LjEyMjcgMTEuMTU3NCAxMS4xNTc2IDE0LjEyMjYgNy40OTk5MSAxNC4xMjI2QzMuODQyMjIgMTQuMTIyNiAwLjg3NzA3NSAxMS4xNTc0IDAuODc3MDc1IDcuNDk5NzJaTTcuNDk5OTEgMS44MjY4OUM0LjM2Njg5IDEuODI2ODkgMS44MjcwOCA0LjM2NjcxIDEuODI3MDggNy40OTk3MkMxLjgyNzA4IDEwLjYzMjcgNC4zNjY4OSAxMy4xNzI2IDcuNDk5OTEgMTMuMTcyNkMxMC42MzI5IDEzLjE3MjYgMTMuMTcyNyAxMC42MzI3IDEzLjE3MjcgNy40OTk3MkMxMy4xNzI3IDQuMzY2NzEgMTAuNjMyOSAxLjgyNjg5IDcuNDk5OTEgMS44MjY4OVpNOC4yNDk5MyAxMC41QzguMjQ5OTMgMTAuOTE0MiA3LjkxNDE0IDExLjI1IDcuNDk5OTMgMTEuMjVDNy4wODU3MSAxMS4yNSA2Ljc0OTkzIDEwLjkxNDIgNi43NDk5MyAxMC41QzYuNzQ5OTMgMTAuMDg1OCA3LjA4NTcxIDkuNzUgNy40OTk5MyA5Ljc1QzcuOTE0MTQgOS43NSA4LjI0OTkzIDEwLjA4NTggOC4yNDk5MyAxMC41Wk02LjA1MDAzIDYuMjVDNi4wNTAwMyA1LjU3MjExIDYuNjM1MTEgNC45MjUgNy41MDAwMyA0LjkyNUM4LjM2NDk2IDQuOTI1IDguOTUwMDMgNS41NzIxMSA4Ljk1MDAzIDYuMjVDOC45NTAwMyA2Ljc0MTE4IDguNjgwMDIgNi45OTIxMiA4LjIxNDQ3IDcuMjc0OTRDOC4xNjI1MSA3LjMwNjUxIDguMTAyNTggNy4zNDEzMSA4LjAzODQ3IDcuMzc4NTRMOC4wMzg0MSA3LjM3ODU4QzcuODU1MjEgNy40ODQ5NyA3LjYzNzg4IDcuNjExMTkgNy40NzQ0OSA3LjczODQ5QzcuMjMyMTQgNy45MjczMiA2Ljk1MDAzIDguMjMxOTggNi45NTAwMyA4LjdDNi45NTAwNCA5LjAwMzc2IDcuMTk2MjggOS4yNSA3LjUwMDA0IDkuMjVDNy44MDI0IDkuMjUgOC4wNDc3OCA5LjAwNjAxIDguMDUwMDIgOC43MDQxN0w4LjA1MDU2IDguNzAzM0M4LjA1OTI0IDguNjg5NiA4LjA4NDkzIDguNjU3MzUgOC4xNTA1OCA4LjYwNjJDOC4yNTIwNyA4LjUyNzEyIDguMzY1MDggOC40NjE2MyA4LjUxNTY3IDguMzc0MzZMOC41MTU3MSA4LjM3NDMzQzguNTk0MjIgOC4zMjg4MyA4LjY4Mjk2IDguMjc3NDEgOC43ODU1OSA4LjIxNTA2QzkuMzIwMDQgNy44OTAzOCAxMC4wNSA3LjM1MzgyIDEwLjA1IDYuMjVDMTAuMDUgNC45Mjc4OSA4LjkzNTExIDMuODI1IDcuNTAwMDMgMy44MjVDNi4wNjQ5NiAzLjgyNSA0Ljk1MDAzIDQuOTI3ODkgNC45NTAwMyA2LjI1QzQuOTUwMDMgNi41NTM3NiA1LjE5NjI4IDYuOCA1LjUwMDAzIDYuOEM1LjgwMzc5IDYuOCA2LjA1MDAzIDYuNTUzNzYgNi4wNTAwMyA2LjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuNDI1MDMgMy40NDEzNkMxMC4wNTYxIDMuMjM2NTQgMTAuNzgzNyAzLjI0MDIgMTEuMzc5MiAzLjU0NjIzQzEyLjc1MzIgNC4yNTIyNCAxMy4zNDc3IDYuMDcxOTEgMTIuNzk0NiA4QzEyLjU0NjUgOC44NjQ5IDEyLjExMDIgOS43MDQ3MiAxMS4xODYxIDEwLjU1MjRDMTAuMjYyIDExLjQgOC45ODAzNCAxMS45IDguMzg1NzEgMTEuOUM4LjE3MjY5IDExLjkgOCAxMS43MzIxIDggMTEuNTI1QzggMTEuMzE3OSA4LjE3NjQ0IDExLjE1IDguMzg1NzEgMTEuMTVDOS4wNjQ5NyAxMS4xNSA5LjY3MTg5IDEwLjc4MDQgMTAuMzkwNiAxMC4yMzZDMTAuOTQwNiA5LjgxOTMgMTEuMzcwMSA5LjI4NjMzIDExLjYwOCA4LjgyMTkxQzEyLjA2MjggNy45MzM2NyAxMi4wNzgyIDYuNjgxNzQgMTEuMzQzMyA2LjM0OTAxQzEwLjk5MDQgNi43MzQ1NSAxMC41Mjk1IDYuOTU5NDYgOS45NzcyNSA2Ljk1OTQ2QzguNzc3MyA2Ljk1OTQ2IDguMDcwMSA1Ljk5NDEyIDguMTAwNTEgNS4xMjAwOUM4LjEyOTU3IDQuMjg0NzQgOC42NjAzMiAzLjY4OTU0IDkuNDI1MDMgMy40NDEzNlpNMy40MjUwMyAzLjQ0MTM2QzQuMDU2MTQgMy4yMzY1NCA0Ljc4MzY2IDMuMjQwMiA1LjM3OTIzIDMuNTQ2MjNDNi43NTMyIDQuMjUyMjQgNy4zNDc2NiA2LjA3MTkxIDYuNzk0NjIgOEM2LjU0NjU0IDguODY0OSA2LjExMDE5IDkuNzA0NzIgNS4xODYxIDEwLjU1MjRDNC4yNjIwMSAxMS40IDIuOTgwMzQgMTEuOSAyLjM4NTcxIDExLjlDMi4xNzI2OSAxMS45IDIgMTEuNzMyMSAyIDExLjUyNUMyIDExLjMxNzkgMi4xNzY0NCAxMS4xNSAyLjM4NTcxIDExLjE1QzMuMDY0OTcgMTEuMTUgMy42NzE4OSAxMC43ODA0IDQuMzkwNTggMTAuMjM2QzQuOTQwNjUgOS44MTkzIDUuMzcwMTQgOS4yODYzMyA1LjYwNzk3IDguODIxOTFDNi4wNjI4MiA3LjkzMzY3IDYuMDc4MjEgNi42ODE3NCA1LjM0MzMgNi4zNDkwMUM0Ljk5MDM3IDYuNzM0NTUgNC41Mjk0OCA2Ljk1OTQ2IDMuOTc3MjUgNi45NTk0NkMyLjc3NzMgNi45NTk0NiAyLjA3MDEgNS45OTQxMiAyLjEwMDUxIDUuMTIwMDlDMi4xMjk1NyA0LjI4NDc0IDIuNjYwMzIgMy42ODk1NCAzLjQyNTAzIDMuNDQxMzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxvcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk4NSAwLjg3NzA0NUMzLjg0MjE2IDAuODc3MDQ1IDAuODc3MDE0IDMuODQyMTkgMC44NzcwMTQgNy40OTk4OEMwLjg3NzAxNCAxMS4xNTc1IDMuODQyMTYgMTQuMTIyNyA3LjQ5OTg1IDE0LjEyMjdDMTEuMTU3NSAxNC4xMjI3IDE0LjEyMjcgMTEuMTU3NSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAzLjg0MjE5IDExLjE1NzUgMC44NzcwNDUgNy40OTk4NSAwLjg3NzA0NVpNMS44MjcwMSA3LjQ5OTg4QzEuODI3MDEgNC4zNjY4NiA0LjM2NjgzIDEuODI3MDQgNy40OTk4NSAxLjgyNzA0QzEwLjYzMjggMS44MjcwNCAxMy4xNzI3IDQuMzY2ODYgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgMTAuNjMyOSAxMC42MzI4IDEzLjE3MjcgNy40OTk4NSAxMy4xNzI3QzQuMzY2ODMgMTMuMTcyNyAxLjgyNzAxIDEwLjYzMjkgMS44MjcwMSA3LjQ5OTg4Wk03LjQ5OTk5IDkuNDk5OTlDOC42MDQ1NiA5LjQ5OTk5IDkuNDk5OTkgOC42MDQ1NiA5LjQ5OTk5IDcuNDk5OTlDOS40OTk5OSA2LjM5NTQyIDguNjA0NTYgNS40OTk5OSA3LjQ5OTk5IDUuNDk5OTlDNi4zOTU0MiA1LjQ5OTk5IDUuNDk5OTkgNi4zOTU0MiA1LjQ5OTk5IDcuNDk5OTlDNS40OTk5OSA4LjYwNDU2IDYuMzk1NDIgOS40OTk5OSA3LjQ5OTk5IDkuNDk5OTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxhcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC4yIDFINC4xNzc0MUg0LjE3NzRDMy44NjkzNiAwLjk5OTk4OCAzLjYwMzY4IDAuOTk5OTc4IDMuMzg2MDkgMS4wMjA2N0MzLjE1NTc2IDEuMDQyNTcgMi45MjgyNSAxLjA5MTEzIDIuNzE2MjUgMS4yMjEwNEMyLjUxNDQyIDEuMzQ0NzIgMi4zNDQ3MyAxLjUxNDQyIDIuMjIxMDQgMS43MTYyNUMyLjA5MTEzIDEuOTI4MjUgMi4wNDI1NyAyLjE1NTc2IDIuMDIwNjcgMi4zODYwOUMxLjk5OTk4IDIuNjAzNjcgMS45OTk5OSAyLjg2OTM1IDIgMy4xNzczOFYzLjE3NzRWMy4yVjExLjhWMTEuODIyNlYxMS44MjI2QzEuOTk5OTkgMTIuMTMwNyAxLjk5OTk4IDEyLjM5NjMgMi4wMjA2NyAxMi42MTM5QzIuMDQyNTcgMTIuODQ0MiAyLjA5MTEzIDEzLjA3MTcgMi4yMjEwNCAxMy4yODM3QzIuMzQ0NzMgMTMuNDg1NiAyLjUxNDQyIDEzLjY1NTMgMi43MTYyNSAxMy43NzlDMi45MjgyNSAxMy45MDg5IDMuMTU1NzYgMTMuOTU3NCAzLjM4NjA5IDEzLjk3OTNDMy42MDM2OCAxNCAzLjg2OTM3IDE0IDQuMTc3NDEgMTRINC4ySDEwLjhIMTAuODIyNkMxMS4xMzA2IDE0IDExLjM5NjMgMTQgMTEuNjEzOSAxMy45NzkzQzExLjg0NDIgMTMuOTU3NCAxMi4wNzE3IDEzLjkwODkgMTIuMjgzNyAxMy43NzlDMTIuNDg1NiAxMy42NTUzIDEyLjY1NTMgMTMuNDg1NiAxMi43NzkgMTMuMjgzN0MxMi45MDg5IDEzLjA3MTcgMTIuOTU3NCAxMi44NDQyIDEyLjk3OTMgMTIuNjEzOUMxMyAxMi4zOTYzIDEzIDEyLjEzMDYgMTMgMTEuODIyNlYxMS44VjMuMlYzLjE3NzQxQzEzIDIuODY5MzYgMTMgMi42MDM2OCAxMi45NzkzIDIuMzg2MDlDMTIuOTU3NCAyLjE1NTc2IDEyLjkwODkgMS45MjgyNSAxMi43NzkgMS43MTYyNUMxMi42NTUzIDEuNTE0NDIgMTIuNDg1NiAxLjM0NDcyIDEyLjI4MzcgMS4yMjEwNEMxMi4wNzE3IDEuMDkxMTMgMTEuODQ0MiAxLjA0MjU3IDExLjYxMzkgMS4wMjA2N0MxMS4zOTYzIDAuOTk5OTc4IDExLjEzMDYgMC45OTk5ODggMTAuODIyNiAxSDEwLjhINC4yWk0zLjIzODc1IDIuMDczNjhDMy4yNjcyMiAyLjA1NjIzIDMuMzIzNjIgMi4wMzExMiAzLjQ4MDc1IDIuMDE2MThDMy42NDUzMiAyLjAwMDUzIDMuODYyOTggMiA0LjIgMkgxMC44QzExLjEzNyAyIDExLjM1NDcgMi4wMDA1MyAxMS41MTkzIDIuMDE2MThDMTEuNjc2NCAyLjAzMTEyIDExLjczMjggMi4wNTYyMyAxMS43NjEzIDIuMDczNjhDMTEuODI4NSAyLjExNDkxIDExLjg4NTEgMi4xNzE0NyAxMS45MjYzIDIuMjM4NzVDMTEuOTQzOCAyLjI2NzIyIDExLjk2ODkgMi4zMjM2MiAxMS45ODM4IDIuNDgwNzVDMTEuOTk5NSAyLjY0NTMyIDEyIDIuODYyOTggMTIgMy4yVjExLjhDMTIgMTIuMTM3IDExLjk5OTUgMTIuMzU0NyAxMS45ODM4IDEyLjUxOTNDMTEuOTY4OSAxMi42NzY0IDExLjk0MzggMTIuNzMyOCAxMS45MjYzIDEyLjc2MTNDMTEuODg1MSAxMi44Mjg1IDExLjgyODUgMTIuODg1MSAxMS43NjEzIDEyLjkyNjNDMTEuNzMyOCAxMi45NDM4IDExLjY3NjQgMTIuOTY4OSAxMS41MTkzIDEyLjk4MzhDMTEuMzU0NyAxMi45OTk1IDExLjEzNyAxMyAxMC44IDEzSDQuMkMzLjg2Mjk4IDEzIDMuNjQ1MzIgMTIuOTk5NSAzLjQ4MDc1IDEyLjk4MzhDMy4zMjM2MiAxMi45Njg5IDMuMjY3MjIgMTIuOTQzOCAzLjIzODc1IDEyLjkyNjNDMy4xNzE0NyAxMi44ODUxIDMuMTE0OTEgMTIuODI4NSAzLjA3MzY4IDEyLjc2MTNDMy4wNTYyNCAxMi43MzI4IDMuMDMxMTIgMTIuNjc2NCAzLjAxNjE4IDEyLjUxOTNDMy4wMDA1MyAxMi4zNTQ3IDMgMTIuMTM3IDMgMTEuOFYzLjJDMyAyLjg2Mjk4IDMuMDAwNTMgMi42NDUzMiAzLjAxNjE4IDIuNDgwNzVDMy4wMzExMiAyLjMyMzYyIDMuMDU2MjQgMi4yNjcyMiAzLjA3MzY4IDIuMjM4NzVDMy4xMTQ5MSAyLjE3MTQ3IDMuMTcxNDcgMi4xMTQ5MSAzLjIzODc1IDIuMDczNjhaTTUgMTBDNC43MjM4NiAxMCA0LjUgMTAuMjIzOSA0LjUgMTAuNUM0LjUgMTAuNzc2MSA0LjcyMzg2IDExIDUgMTFIOEM4LjI3NjE0IDExIDguNSAxMC43NzYxIDguNSAxMC41QzguNSAxMC4yMjM5IDguMjc2MTQgMTAgOCAxMEg1Wk00LjUgNy41QzQuNSA3LjIyMzg2IDQuNzIzODYgNyA1IDdIMTBDMTAuMjc2MSA3IDEwLjUgNy4yMjM4NiAxMC41IDcuNUMxMC41IDcuNzc2MTQgMTAuMjc2MSA4IDEwIDhINUM0LjcyMzg2IDggNC41IDcuNzc2MTQgNC41IDcuNVpNNSA0QzQuNzIzODYgNCA0LjUgNC4yMjM4NiA0LjUgNC41QzQuNSA0Ljc3NjE0IDQuNzIzODYgNSA1IDVIMTBDMTAuMjc2MSA1IDEwLjUgNC43NzYxNCAxMC41IDQuNUMxMC41IDQuMjIzODYgMTAuMjc2MSA0IDEwIDRINVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGlyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjg0OTk4IDcuNDk5OThDMS44NDk5OCA0LjY2NDU4IDQuMDU5NzkgMS44NDk5OCA3LjQ5OTk4IDEuODQ5OThDMTAuMjc4MyAxLjg0OTk4IDExLjY1MTUgMy45MDY0IDEyLjIzNjcgNUgxMC41QzEwLjIyMzkgNSAxMCA1LjIyMzg2IDEwIDUuNUMxMCA1Ljc3NjE0IDEwLjIyMzkgNiAxMC41IDZIMTMuNUMxMy43NzYxIDYgMTQgNS43NzYxNCAxNCA1LjVWMi41QzE0IDIuMjIzODYgMTMuNzc2MSAyIDEzLjUgMkMxMy4yMjM5IDIgMTMgMi4yMjM4NiAxMyAyLjVWNC4zMTMxOEMxMi4yOTU1IDMuMDcxMjYgMTAuNjY1OSAwLjg0OTk3NiA3LjQ5OTk4IDAuODQ5OTc2QzMuNDM3MTYgMC44NDk5NzYgMC44NDk5NzYgNC4xODUzNyAwLjg0OTk3NiA3LjQ5OTk4QzAuODQ5OTc2IDEwLjgxNDYgMy40MzcxNiAxNC4xNSA3LjQ5OTk4IDE0LjE1QzkuNDQzODIgMTQuMTUgMTEuMDYyMiAxMy4zODA4IDEyLjIxNDUgMTIuMjA4NEMxMi44MzE1IDExLjU4MDYgMTMuMzEzMyAxMC44MzkgMTMuNjQxOCAxMC4wNDA3QzEzLjc0NjkgOS43ODUzNiAxMy42MjUxIDkuNDkzMTUgMTMuMzY5OCA5LjM4ODA2QzEzLjExNDQgOS4yODI5NiAxMi44MjIyIDkuNDA0NzggMTIuNzE3MSA5LjY2MDE0QzEyLjQzNjMgMTAuMzQyNSAxMi4wMjUxIDEwLjk3NDUgMTEuNTAxMyAxMS41MDc0QzEwLjUyOTUgMTIuNDk2MyA5LjE2NTA0IDEzLjE1IDcuNDk5OTggMTMuMTVDNC4wNTk3OSAxMy4xNSAxLjg0OTk4IDEwLjMzNTQgMS44NDk5OCA3LjQ5OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuODUzNTUgMi4xNDY0NUM1LjA0ODgyIDIuMzQxNzEgNS4wNDg4MiAyLjY1ODI5IDQuODUzNTUgMi44NTM1NUwzLjcwNzExIDRIOUMxMS40ODUzIDQgMTMuNSA2LjAxNDcyIDEzLjUgOC41QzEzLjUgMTAuOTg1MyAxMS40ODUzIDEzIDkgMTNINUM0LjcyMzg2IDEzIDQuNSAxMi43NzYxIDQuNSAxMi41QzQuNSAxMi4yMjM5IDQuNzIzODYgMTIgNSAxMkg5QzEwLjkzMyAxMiAxMi41IDEwLjQzMyAxMi41IDguNUMxMi41IDYuNTY3IDEwLjkzMyA1IDkgNUgzLjcwNzExTDQuODUzNTUgNi4xNDY0NUM1LjA0ODgyIDYuMzQxNzEgNS4wNDg4MiA2LjY1ODI5IDQuODUzNTUgNi44NTM1NUM0LjY1ODI5IDcuMDQ4ODIgNC4zNDE3MSA3LjA0ODgyIDQuMTQ2NDUgNi44NTM1NUwyLjE0NjQ1IDQuODUzNTVDMS45NTExOCA0LjY1ODI5IDEuOTUxMTggNC4zNDE3MSAyLjE0NjQ1IDQuMTQ2NDVMNC4xNDY0NSAyLjE0NjQ1QzQuMzQxNzEgMS45NTExOCA0LjY1ODI5IDEuOTUxMTggNC44NTM1NSAyLjE0NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sY3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMDQ5OTUgMi43NDk5NUMzLjA0OTk1IDIuNDQ2MTkgMi44MDM3MSAyLjE5OTk1IDIuNDk5OTUgMi4xOTk5NUMyLjE5NjE5IDIuMTk5OTUgMS45NDk5NSAyLjQ0NjE5IDEuOTQ5OTUgMi43NDk5NVYxMi4yNUMxLjk0OTk1IDEyLjU1MzcgMi4xOTYxOSAxMi44IDIuNDk5OTUgMTIuOEMyLjgwMzcxIDEyLjggMy4wNDk5NSAxMi41NTM3IDMuMDQ5OTUgMTIuMjVWMi43NDk5NVpNNS43MzMzMyAyLjMwNzc2QzUuNTc4MzUgMi4yMjU5NiA1LjM5MTg1IDIuMjMxMjcgNS4yNDE3NyAyLjMyMTc2QzUuMDkxNyAyLjQxMjI1IDQuOTk5OTUgMi41NzQ3MSA0Ljk5OTk1IDIuNzQ5OTVWMTIuMjVDNC45OTk5NSAxMi40MjUyIDUuMDkxNyAxMi41ODc3IDUuMjQxNzcgMTIuNjc4MUM1LjM5MTg1IDEyLjc2ODYgNS41NzgzNSAxMi43NzM5IDUuNzMzMzMgMTIuNjkyMUwxNC43MzMzIDcuOTQyMTRDMTQuODk3MyA3Ljg1NTU5IDE1IDcuNjg1MzkgMTUgNy40OTk5NUMxNSA3LjMxNDUyIDE0Ljg5NzMgNy4xNDQzMSAxNC43MzMzIDcuMDU3NzZMNS43MzMzMyAyLjMwNzc2Wk01Ljk5OTk1IDExLjQyMDdWMy41NzkyTDEzLjQyODcgNy40OTk5NUw1Ljk5OTk1IDExLjQyMDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxzcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi44NTM1NyAzLjg1MzU1TDcuNjUzNTUgMy4wNTM1M0M4LjI5ODEgMi40MDkwMSA5LjQyODU4IDEuOTYxNzIgMTAuNTUyIDEuODAxMjVDMTEuMTA1NiAxLjcyMjE3IDExLjYyOTEgMS43MTcyNSAxMi4wNTY0IDEuNzgxMjRDMTIuNDk4NyAxLjg0NzQ4IDEyLjc2OTggMS45NzY5NiAxMi44OTY1IDIuMTAzNTdDMTMuMDIzMSAyLjIzMDE4IDEzLjE1MjYgMi41MDEyNSAxMy4yMTg4IDIuOTQzNTdDMTMuMjgyOCAzLjM3MDg2IDEzLjI3NzkgMy44OTQzOSAxMy4xOTg4IDQuNDQ4MDFDMTMuMDM4MyA1LjU3MTM5IDEyLjU5MSA2LjcwMTg4IDExLjk0NjQgNy4zNDY0NUw3LjQ5OTk5IDExLjc5MjlMNi4zNTM1NCAxMC42NDY1QzYuMTU4MjcgMTAuNDUxMiA1Ljg0MTY5IDEwLjQ1MTIgNS42NDY0MyAxMC42NDY1QzUuNDUxMTcgMTAuODQxNyA1LjQ1MTE3IDExLjE1ODMgNS42NDY0MyAxMS4zNTM2TDcuMTQ2NDQgMTIuODUzNkM3LjM0MTcxIDEzLjA0ODggNy42NTgyOSAxMy4wNDg4IDcuODUzNTUgMTIuODUzNkw4LjQwMDczIDEyLjMwNjRMOS41NzEyNCAxNC4yNTcyQzkuNjUwNDYgMTQuMzg5MyA5Ljc4NjA4IDE0LjQ3NzQgOS45Mzg5IDE0LjQ5NjNDMTAuMDkxNyAxNC41MTUxIDEwLjI0NDcgMTQuNDYyNCAxMC4zNTM1IDE0LjM1MzZMMTIuMzUzNSAxMi4zNTM2QzEyLjQ2NDggMTIuMjQyMyAxMi41MTcyIDEyLjA4NTEgMTIuNDk1IDExLjkyOTNMMTIuMDMwMyA4LjY3Njc5TDEyLjY1MzYgOC4wNTM1NUMxMy41MDkgNy4xOTgwOCAxNC4wMTE3IDUuODI4NTUgMTQuMTg4NyA0LjU4OTQzQzE0LjI3ODQgMy45NjE4IDE0LjI4OTEgMy4zMzg0NyAxNC4yMDc4IDIuNzk1NDZDMTQuMTI4NyAyLjI2NzQ4IDEzLjk1MTkgMS43NDQ4MiAxMy42MDM1IDEuMzk2NDVDMTMuMjU1MiAxLjA0ODA5IDEyLjczMjUgMC44NzEzMzIgMTIuMjA0NSAwLjc5MjI2NEMxMS42NjE1IDAuNzEwOTQ1IDExLjAzODIgMC43MjE2NDQgMTAuNDEwNSAwLjgxMTNDOS4xNzE0MyAwLjk4ODMwNiA3LjgwMTg5IDEuNDkxIDYuOTQ2NDQgMi4zNDY0Mkw2LjMyMzIyIDIuOTY5NjhMMy4wNzA3MSAyLjUwNTA0QzIuOTE0OTIgMi40ODI3OCAyLjc1NzczIDIuNTM1MTcgMi42NDY0NSAyLjY0NjQ2TDAuNjQ2NDUxIDQuNjQ2NDVDMC41Mzc1NzkgNC43NTUzMyAwLjQ4NDkzOCA0LjkwODI5IDAuNTAzNzUgNS4wNjExQzAuNTIyNTYzIDUuMjEzOTEgMC42MTA3MyA1LjM0OTU0IDAuNzQyNzU3IDUuNDI4NzZMMi42OTM2NCA2LjU5OTI4TDIuMTQ2NDYgNy4xNDY0NUMyLjA1MjcgNy4yNDAyMiAyLjAwMDAyIDcuMzY3NCAyLjAwMDAyIDcuNTAwMDFDMi4wMDAwMiA3LjYzMjYxIDIuMDUyNyA3Ljc1OTc5IDIuMTQ2NDYgNy44NTM1NkwzLjY0NjQ3IDkuMzUzNTZDMy44NDE3MyA5LjU0ODgzIDQuMTU4MzEgOS41NDg4MyA0LjM1MzU3IDkuMzUzNTZDNC41NDg4NCA5LjE1ODMgNC41NDg4NCA4Ljg0MTcyIDQuMzUzNTcgOC42NDY0NkwzLjIwNzEyIDcuNTAwMDFMMy44NTM1NyA2Ljg1MzU2TDYuODUzNTcgMy44NTM1NVpNMTAuMDk5MyAxMy4xOTM2TDkuMTI5NTkgMTEuNTc3NUwxMS4xNDY0IDkuNTYwNjdMMTEuNDY5NyAxMS44MjMyTDEwLjA5OTMgMTMuMTkzNlpNMy40MjI1MSA1Ljg3MDQxTDUuNDM5MzUgMy44NTM1NkwzLjE3Njc4IDMuNTMwMzRMMS44MDYzOCA0LjkwMDc0TDMuNDIyNTEgNS44NzA0MVpNMi4zNTM1NiAxMC4zNTM1QzIuNTQ4ODIgMTAuMTU4MyAyLjU0ODgyIDkuODQxNyAyLjM1MzU2IDkuNjQ2NDRDMi4xNTgzIDkuNDUxMTggMS44NDE3MSA5LjQ1MTE4IDEuNjQ2NDUgOS42NDY0NEwwLjY0NjQ1MSAxMC42NDY0QzAuNDUxMTg4IDEwLjg0MTcgMC40NTExODggMTEuMTU4MyAwLjY0NjQ1MSAxMS4zNTM1QzAuODQxNzEzIDExLjU0ODggMS4xNTgzIDExLjU0ODggMS4zNTM1NiAxMS4zNTM1TDIuMzUzNTYgMTAuMzUzNVpNMy44NTM1OCAxMS44NTM2QzQuMDQ4ODQgMTEuNjU4MyA0LjA0ODg1IDExLjM0MTcgMy44NTM1OSAxMS4xNDY1QzMuNjU4MzMgMTAuOTUxMiAzLjM0MTc1IDEwLjk1MTIgMy4xNDY0OCAxMS4xNDY1TDEuMTQ2NDUgMTMuMTQ2NEMwLjk1MTE5IDEzLjM0MTcgMC45NTExODcgMTMuNjU4MyAxLjE0NjQ1IDEzLjg1MzVDMS4zNDE3MSAxNC4wNDg4IDEuNjU4MjkgMTQuMDQ4OCAxLjg1MzU1IDEzLjg1MzZMMy44NTM1OCAxMS44NTM2Wk01LjM1MzU2IDEzLjM1MzVDNS41NDg4MiAxMy4xNTgzIDUuNTQ4ODIgMTIuODQxNyA1LjM1MzU2IDEyLjY0NjRDNS4xNTgzIDEyLjQ1MTIgNC44NDE3MSAxMi40NTEyIDQuNjQ2NDUgMTIuNjQ2NEwzLjY0NjQ1IDEzLjY0NjRDMy40NTExOSAxMy44NDE3IDMuNDUxMTkgMTQuMTU4MyAzLjY0NjQ1IDE0LjM1MzVDMy44NDE3MSAxNC41NDg4IDQuMTU4MyAxNC41NDg4IDQuMzUzNTYgMTQuMzUzNUw1LjM1MzU2IDEzLjM1MzVaTTkuNDk5OTcgNi43NDg4MUMxMC4xODk3IDYuNzQ4ODEgMTAuNzQ4OCA2LjE4OTcgMTAuNzQ4OCA1LjVDMTAuNzQ4OCA0LjgxMDMgMTAuMTg5NyA0LjI1MTE4IDkuNDk5OTcgNC4yNTExOEM4LjgxMDI2IDQuMjUxMTggOC4yNTExNSA0LjgxMDMgOC4yNTExNSA1LjVDOC4yNTExNSA2LjE4OTcgOC44MTAyNiA2Ljc0ODgxIDkuNDk5OTcgNi43NDg4MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHVyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjU5NjY0IDIuOTM2MjhDNy43NjA4NSAzLjA2NDAxIDguMDAwMTIgMi45NDY5OCA4LjAwMDEyIDIuNzM4OTVWMS45OTk5OEM5Ljk4MTQzIDIgMTEuMTg0OCAyLjM2MzcgMTEuOTEwNSAzLjA4OTQ1QzEyLjYzNjMgMy44MTUyMiAxMyA1LjAxODYgMTMgNi45OTk5OEMxMyA3LjI3NjEzIDEzLjIyMzkgNy40OTk5OCAxMy41IDcuNDk5OThDMTMuNzc2MSA3LjQ5OTk4IDE0IDcuMjc2MTMgMTQgNi45OTk5OEMxNCA0Ljk0MzggMTMuNjMyNSAzLjM5NzE5IDEyLjYxNzYgMi4zODIzNEMxMS42MDI4IDEuMzY3NTIgMTAuMDU2MiAwLjk5OTk5OSA4LjAwMDEyIDAuOTk5OTg0VjAuMjYxMjY2QzguMDAwMTIgMC4wNTMyMjkzIDcuNzYwODUgLTAuMDYzNzk0NCA3LjU5NjY0IDAuMDYzOTI4TDYuMDAzODQgMS4zMDI3N0M1Ljg3NTE2IDEuNDAyODYgNS44NzUxNiAxLjU5NzM1IDYuMDAzODQgMS42OTc0NEw3LjU5NjY0IDIuOTM2MjhaTTkuNSA1SDIuNUMyLjIyMzg2IDUgMiA1LjIyMzg2IDIgNS41VjEyLjVDMiAxMi43NzYxIDIuMjIzODYgMTMgMi41IDEzSDkuNUM5Ljc3NjE0IDEzIDEwIDEyLjc3NjEgMTAgMTIuNVY1LjVDMTAgNS4yMjM4NiA5Ljc3NjE0IDUgOS41IDVaTTIuNSA0QzEuNjcxNTcgNCAxIDQuNjcxNTcgMSA1LjVWMTIuNUMxIDEzLjMyODQgMS42NzE1NyAxNCAyLjUgMTRIOS41QzEwLjMyODQgMTQgMTEgMTMuMzI4NCAxMSAxMi41VjUuNUMxMSA0LjY3MTU3IDEwLjMyODQgNCA5LjUgNEgyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxkcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy44MTgzMiAwLjY4MTc5QzcuNjQyNTggMC41MDYwNTQgNy4zNTc2NiAwLjUwNjA1NCA3LjE4MTkyIDAuNjgxNzlMNS4xODE5MiAyLjY4MTc5QzUuMDA2MTkgMi44NTc1MyA1LjAwNjE5IDMuMTQyNDUgNS4xODE5MiAzLjMxODE5QzUuMzU3NjYgMy40OTM5MiA1LjY0MjU4IDMuNDkzOTIgNS44MTgzMiAzLjMxODE5TDcuMDUwMTIgMi4wODYzOEw3LjA1MDEyIDUuNTAwMjNDNy4wNTAxMiA1Ljc0ODc2IDcuMjUxNTkgNS45NTAyMyA3LjUwMDEyIDUuOTUwMjNDNy43NDg2NSA1Ljk1MDIzIDcuOTUwMTIgNS43NDg3NiA3Ljk1MDEyIDUuNTAwMjNMNy45NTAxMiAyLjA4NjM4TDkuMTgxOTIgMy4zMTgxOUM5LjM1NzY2IDMuNDkzOTIgOS42NDI1OCAzLjQ5MzkyIDkuODE4MzIgMy4zMTgxOUM5Ljk5NDA2IDMuMTQyNDUgOS45OTQwNiAyLjg1NzUzIDkuODE4MzIgMi42ODE3OUw3LjgxODMyIDAuNjgxNzlaTTcuOTUwMTIgMTIuOTEzNlY5LjUwMDIzQzcuOTUwMTIgOS4yNTE3IDcuNzQ4NjUgOS4wNTAyMyA3LjUwMDEyIDkuMDUwMjNDNy4yNTE1OSA5LjA1MDIzIDcuMDUwMTIgOS4yNTE3IDcuMDUwMTIgOS41MDAyM1YxMi45MTM2TDUuODE4MzIgMTEuNjgxOEM1LjY0MjU4IDExLjUwNjEgNS4zNTc2NiAxMS41MDYxIDUuMTgxOTIgMTEuNjgxOEM1LjAwNjE5IDExLjg1NzUgNS4wMDYxOSAxMi4xNDI0IDUuMTgxOTIgMTIuMzE4Mkw3LjE4MTkyIDE0LjMxODJDNy4yNjYzMiAxNC40MDI2IDcuMzgwNzcgMTQuNDUgNy41MDAxMiAxNC40NUM3LjYxOTQ3IDE0LjQ1IDcuNzMzOTMgMTQuNDAyNiA3LjgxODMyIDE0LjMxODJMOS44MTgzMiAxMi4zMTgyQzkuOTk0MDYgMTIuMTQyNCA5Ljk5NDA2IDExLjg1NzUgOS44MTgzMiAxMS42ODE4QzkuNjQyNTggMTEuNTA2MSA5LjM1NzY2IDExLjUwNjEgOS4xODE5MiAxMS42ODE4TDcuOTUwMTIgMTIuOTEzNlpNMS40OTk5NCA3LjAwMDE3QzEuMjIzOCA3LjAwMDE3IDAuOTk5OTM5IDcuMjI0MDMgMC45OTk5MzkgNy41MDAxN0MwLjk5OTkzOSA3Ljc3NjMxIDEuMjIzOCA4LjAwMDE3IDEuNDk5OTQgOC4wMDAxN0wxMy40OTk5IDguMDAwMTdDMTMuNzc2MSA4LjAwMDE3IDEzLjk5OTkgNy43NzYzMSAxMy45OTk5IDcuNTAwMTdDMTMuOTk5OSA3LjIyNDAzIDEzLjc3NjEgNy4wMDAxNyAxMy40OTk5IDcuMDAwMTdMMS40OTk5NCA3LjAwMDE3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0IDEyLjg1TDEgMTIuODVMMSAxNC4xNUwxNCAxNC4xNUwxNCAxMi44NVpNMTQgOC44NTAwMkwxIDguODUwMDJMMSAxMC4xNUwxNCAxMC4xNUwxNCA4Ljg1MDAyWk0xIDQuODUwMDNMMTQgNC44NTAwM0wxNCA2LjE1MDAzTDEgNi4xNTAwMkwxIDQuODUwMDNaTTE0IDAuODUwMDI1TDEgMC44NTAwMjVMMSAyLjE1MDAyTDE0IDIuMTUwMDJMMTQgMC44NTAwMjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxwcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC41IDRDMC4yMjM4NTggNCAwIDQuMjIzODYgMCA0LjVWMTAuNUMwIDEwLjc3NjEgMC4yMjM4NTggMTEgMC41IDExSDE0LjVDMTQuNzc2MSAxMSAxNSAxMC43NzYxIDE1IDEwLjVWNC41QzE1IDQuMjIzODYgMTQuNzc2MSA0IDE0LjUgNEgwLjVaTTEgMTBWNUgyLjA3NVY3LjVDMi4wNzUgNy43MzQ3MiAyLjI2NTI4IDcuOTI1IDIuNSA3LjkyNUMyLjczNDcyIDcuOTI1IDIuOTI1IDcuNzM0NzIgMi45MjUgNy41VjVINC4wNzVWNi41QzQuMDc1IDYuNzM0NzIgNC4yNjUyOCA2LjkyNSA0LjUgNi45MjVDNC43MzQ3MiA2LjkyNSA0LjkyNSA2LjczNDcyIDQuOTI1IDYuNVY1SDYuMDc1VjYuNUM2LjA3NSA2LjczNDcyIDYuMjY1MjggNi45MjUgNi41IDYuOTI1QzYuNzM0NzIgNi45MjUgNi45MjUgNi43MzQ3MiA2LjkyNSA2LjVWNUg4LjA3NVY3LjVDOC4wNzUgNy43MzQ3MiA4LjI2NTI4IDcuOTI1IDguNSA3LjkyNUM4LjczNDcyIDcuOTI1IDguOTI1IDcuNzM0NzIgOC45MjUgNy41VjVIMTAuMDc1VjYuNUMxMC4wNzUgNi43MzQ3MiAxMC4yNjUzIDYuOTI1IDEwLjUgNi45MjVDMTAuNzM0NyA2LjkyNSAxMC45MjUgNi43MzQ3MiAxMC45MjUgNi41VjVIMTIuMDc1VjYuNUMxMi4wNzUgNi43MzQ3MiAxMi4yNjUzIDYuOTI1IDEyLjUgNi45MjVDMTIuNzM0NyA2LjkyNSAxMi45MjUgNi43MzQ3MiAxMi45MjUgNi41VjVIMTRWMTBIMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGhyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjUgMEMwLjIyMzg1OCAwIDAgMC4yMjM4NTggMCAwLjVWMTQuNUMwIDE0Ljc3NjEgMC4yMjM4NTggMTUgMC41IDE1SDQuNUM0Ljc3NjE0IDE1IDUgMTQuNzc2MSA1IDE0LjVWNUgxNC41QzE0Ljc3NjEgNSAxNSA0Ljc3NjE0IDE1IDQuNVYwLjVDMTUgMC4yMjM4NTggMTQuNzc2MSAwIDE0LjUgMEgwLjVaTTEgNC4wNzUwNUwxIDFINC4wNzUwMkM0LjA3NTAyIDEgNC4wNzUwMiAxIDQuMDc1MDIgMUw0LjA3NTA1IDQuMDc1MDdMMSA0LjA3NTA1Wk0wLjk5OTk5NyA0LjkyNTA1TDEgMTRINFYxMi45MjVIMi43NTAwMkMyLjUxNTMgMTIuOTI1IDIuMzI1MDIgMTIuNzM0OCAyLjMyNTAyIDEyLjVDMi4zMjUwMiAxMi4yNjUzIDIuNTE1MyAxMi4wNzUgMi43NTAwMiAxMi4wNzVINFYxMC45MjVIMi4yNTAwMkMyLjAxNTMgMTAuOTI1IDEuODI1MDIgMTAuNzM0NyAxLjgyNTAyIDEwLjVDMS44MjUwMiAxMC4yNjUzIDIuMDE1MyAxMC4wNzUgMi4yNTAwMiAxMC4wNzVINFY4LjkyNTA0TDIuNzUwMDIgOC45MjUwMkMyLjUxNTMgOC45MjUwMiAyLjMyNTAyIDguNzM0NzQgMi4zMjUwMiA4LjUwMDAyQzIuMzI1MDMgOC4yNjUyOSAyLjUxNTMxIDguMDc1MDIgMi43NTAwMyA4LjA3NTAyTDQgOC4wNzUwNFY2LjkyNTAyTDIuNzQ5OTkgNi45MjVDMi41MTUyNyA2LjkyNSAyLjMyNSA2LjczNDcyIDIuMzI1IDYuNUMyLjMyNSA2LjI2NTI4IDIuNTE1MjkgNi4wNzUgMi43NTAwMSA2LjA3NUw0IDYuMDc1MDJWNC45MjUwN0wwLjk5OTk5NyA0LjkyNTA1Wk00LjkyNTA1IDRINi4wNzVWMi43NTAwNkM2LjA3NSAyLjUxNTM0IDYuMjY1MjggMi4zMjUwNiA2LjUgMi4zMjUwNkM2LjczNDcyIDIuMzI1MDYgNi45MjUgMi41MTUzNCA2LjkyNSAyLjc1MDA2VjRIOC4wNzUwMlYyLjc1MDA1QzguMDc1MDIgMi41MTUzMyA4LjI2NTMgMi4zMjUwNSA4LjUwMDAyIDIuMzI1MDVDOC43MzQ3NCAyLjMyNTA1IDguOTI1MDIgMi41MTUzMyA4LjkyNTAyIDIuNzUwMDVWNEgxMC4wNzUxVjIuMjUwMDVDMTAuMDc1MSAyLjAxNTMzIDEwLjI2NTMgMS44MjUwNSAxMC41MDAxIDEuODI1MDVDMTAuNzM0OCAxLjgyNTA1IDEwLjkyNTEgMi4wMTUzMyAxMC45MjUxIDIuMjUwMDVWNEgxMi4wNzUxVjIuNzUwMDVDMTIuMDc1MSAyLjUxNTMzIDEyLjI2NTQgMi4zMjUwNSAxMi41MDAxIDIuMzI1MDVDMTIuNzM0OCAyLjMyNTA1IDEyLjkyNTEgMi41MTUzMyAxMi45MjUxIDIuNzUwMDVWNEgxNFYxSDQuOTI1MDJMNC45MjUwNSA0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQ3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgMS41QzIgMS43NzYxNCAxLjc3NjE0IDIgMS41IDJDMS4yMjM4NiAyIDEgMS43NzYxNCAxIDEuNUMxIDEuMjIzODYgMS4yMjM4NiAxIDEuNSAxQzEuNzc2MTQgMSAyIDEuMjIzODYgMiAxLjVaTTIgNUwyIDEwSDEzVjVIMlpNMiA0QzEuNDQ3NzIgNCAxIDQuNDQ3NzIgMSA1VjEwQzEgMTAuNTUyMyAxLjQ0NzcyIDExIDIgMTFIMTNDMTMuNTUyMyAxMSAxNCAxMC41NTIzIDE0IDEwVjVDMTQgNC40NDc3MiAxMy41NTIzIDQgMTMgNEgyWk0xLjUgMTRDMS43NzYxNCAxNCAyIDEzLjc3NjEgMiAxMy41QzIgMTMuMjIzOSAxLjc3NjE0IDEzIDEuNSAxM0MxLjIyMzg2IDEzIDEgMTMuMjIzOSAxIDEzLjVDMSAxMy43NzYxIDEuMjIzODYgMTQgMS41IDE0Wk00IDEuNUM0IDEuNzc2MTQgMy43NzYxNCAyIDMuNSAyQzMuMjIzODYgMiAzIDEuNzc2MTQgMyAxLjVDMyAxLjIyMzg2IDMuMjIzODYgMSAzLjUgMUMzLjc3NjE0IDEgNCAxLjIyMzg2IDQgMS41Wk0zLjUgMTRDMy43NzYxNCAxNCA0IDEzLjc3NjEgNCAxMy41QzQgMTMuMjIzOSAzLjc3NjE0IDEzIDMuNSAxM0MzLjIyMzg2IDEzIDMgMTMuMjIzOSAzIDEzLjVDMyAxMy43NzYxIDMuMjIzODYgMTQgMy41IDE0Wk02IDEuNUM2IDEuNzc2MTQgNS43NzYxNCAyIDUuNSAyQzUuMjIzODYgMiA1IDEuNzc2MTQgNSAxLjVDNSAxLjIyMzg2IDUuMjIzODYgMSA1LjUgMUM1Ljc3NjE0IDEgNiAxLjIyMzg2IDYgMS41Wk01LjUgMTRDNS43NzYxNCAxNCA2IDEzLjc3NjEgNiAxMy41QzYgMTMuMjIzOSA1Ljc3NjE0IDEzIDUuNSAxM0M1LjIyMzg2IDEzIDUgMTMuMjIzOSA1IDEzLjVDNSAxMy43NzYxIDUuMjIzODYgMTQgNS41IDE0Wk04IDEuNUM4IDEuNzc2MTQgNy43NzYxNCAyIDcuNSAyQzcuMjIzODYgMiA3IDEuNzc2MTQgNyAxLjVDNyAxLjIyMzg2IDcuMjIzODYgMSA3LjUgMUM3Ljc3NjE0IDEgOCAxLjIyMzg2IDggMS41Wk03LjUgMTRDNy43NzYxNCAxNCA4IDEzLjc3NjEgOCAxMy41QzggMTMuMjIzOSA3Ljc3NjE0IDEzIDcuNSAxM0M3LjIyMzg2IDEzIDcgMTMuMjIzOSA3IDEzLjVDNyAxMy43NzYxIDcuMjIzODYgMTQgNy41IDE0Wk0xMCAxLjVDMTAgMS43NzYxNCA5Ljc3NjE0IDIgOS41IDJDOS4yMjM4NiAyIDkgMS43NzYxNCA5IDEuNUM5IDEuMjIzODYgOS4yMjM4NiAxIDkuNSAxQzkuNzc2MTQgMSAxMCAxLjIyMzg2IDEwIDEuNVpNOS41IDE0QzkuNzc2MTQgMTQgMTAgMTMuNzc2MSAxMCAxMy41QzEwIDEzLjIyMzkgOS43NzYxNCAxMyA5LjUgMTNDOS4yMjM4NiAxMyA5IDEzLjIyMzkgOSAxMy41QzkgMTMuNzc2MSA5LjIyMzg2IDE0IDkuNSAxNFpNMTIgMS41QzEyIDEuNzc2MTQgMTEuNzc2MSAyIDExLjUgMkMxMS4yMjM5IDIgMTEgMS43NzYxNCAxMSAxLjVDMTEgMS4yMjM4NiAxMS4yMjM5IDEgMTEuNSAxQzExLjc3NjEgMSAxMiAxLjIyMzg2IDEyIDEuNVpNMTEuNSAxNEMxMS43NzYxIDE0IDEyIDEzLjc3NjEgMTIgMTMuNUMxMiAxMy4yMjM5IDExLjc3NjEgMTMgMTEuNSAxM0MxMS4yMjM5IDEzIDExIDEzLjIyMzkgMTEgMTMuNUMxMSAxMy43NzYxIDExLjIyMzkgMTQgMTEuNSAxNFpNMTQgMS41QzE0IDEuNzc2MTQgMTMuNzc2MSAyIDEzLjUgMkMxMy4yMjM5IDIgMTMgMS43NzYxNCAxMyAxLjVDMTMgMS4yMjM4NiAxMy4yMjM5IDEgMTMuNSAxQzEzLjc3NjEgMSAxNCAxLjIyMzg2IDE0IDEuNVpNMTMuNSAxNEMxMy43NzYxIDE0IDE0IDEzLjc3NjEgMTQgMTMuNUMxNCAxMy4yMjM5IDEzLjc3NjEgMTMgMTMuNSAxM0MxMy4yMjM5IDEzIDEzIDEzLjIyMzkgMTMgMTMuNUMxMyAxMy43NzYxIDEzLjIyMzkgMTQgMTMuNSAxNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHZyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02IDMuNUM2IDIuNjcxNTcgNi42NzE1NyAyIDcuNSAyQzguMzI4NDMgMiA5IDIuNjcxNTcgOSAzLjVDOSA0LjMyODQzIDguMzI4NDMgNSA3LjUgNUM2LjY3MTU3IDUgNiA0LjMyODQzIDYgMy41Wk04IDUuOTQ5OTlDOS4xNDExMiA1LjcxODM2IDEwIDQuNzA5NDggMTAgMy41QzEwIDIuMTE5MjkgOC44ODA3MSAxIDcuNSAxQzYuMTE5MjkgMSA1IDIuMTE5MjkgNSAzLjVDNSA0LjcwOTQ4IDUuODU4ODggNS43MTgzNiA3IDUuOTQ5OTlWMTMuNUM3IDEzLjc3NjEgNy4yMjM4NiAxNCA3LjUgMTRDNy43NzYxNCAxNCA4IDEzLjc3NjEgOCAxMy41VjUuOTQ5OTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxncj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAgMy41QzEwIDQuNzA5NDggOS4xNDExMiA1LjcxODM2IDggNS45NDk5OVYxMy41QzggMTMuNzc2MSA3Ljc3NjE0IDE0IDcuNSAxNEM3LjIyMzg2IDE0IDcgMTMuNzc2MSA3IDEzLjVWNS45NDk5OUM1Ljg1ODg4IDUuNzE4MzYgNSA0LjcwOTQ4IDUgMy41QzUgMi4xMTkyOSA2LjExOTI5IDEgNy41IDFDOC44ODA3MSAxIDEwIDIuMTE5MjkgMTAgMy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuODc3MDc1IDcuNDk5ODhDMC44NzcwNzUgMy44NDIxOSAzLjg0MjIyIDAuODc3MDQ1IDcuNDk5OTEgMC44NzcwNDVDMTEuMTU3NiAwLjg3NzA0NSAxNC4xMjI3IDMuODQyMTkgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgMTEuMTU3NSAxMS4xNTc2IDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzMuODQyMjIgMTQuMTIyNyAwLjg3NzA3NSAxMS4xNTc1IDAuODc3MDc1IDcuNDk5ODhaTTcuNDk5OTEgMS44MjcwNEM0LjM2Njg5IDEuODI3MDQgMS44MjcwOCA0LjM2Njg2IDEuODI3MDggNy40OTk4OEMxLjgyNzA4IDEwLjYzMjkgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0MxMC42MzI5IDEzLjE3MjcgMTMuMTcyNyAxMC42MzI5IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDQuMzY2ODYgMTAuNjMyOSAxLjgyNzA0IDcuNDk5OTEgMS44MjcwNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjA1XCIsZDpcIk02Ljc4Mjk2IDEzLjM3NkM4LjczOTA0IDkuOTUyODQgOC43MzkwNCA1LjA0NzE5IDYuNzgyOTYgMS42MjQwNUw3LjIxNzA4IDEuMzc1OThDOS4yNjEgNC45NTI4MyA5LjI2MSAxMC4wNDcyIDcuMjE3MDggMTMuNjI0TDYuNzgyOTYgMTMuMzc2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMVwiLGQ6XCJNNy4yODIwNCAxMy40Nzc1QzkuMjM5MjkgOS45OTUyMyA5LjIzOTI5IDUuMDA0NzUgNy4yODIwNCAxLjUyMjQ4TDcuNzE3OTEgMS4yNzc1QzkuNzYwNjcgNC45MTE5IDkuNzYwNjcgMTAuMDg4MSA3LjcxNzkxIDEzLjcyMjVMNy4yODIwNCAxMy40Nzc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMTVcIixkOlwiTTcuODIwOTggMTMuNTA2NEM5LjcyNTAyIDkuOTk1MjMgOS43MjYzNiA1LjAxNDExIDcuODI0OTIgMS41MDA4NEw4LjI2NDY1IDEuMjYyODVDMTAuMjQ2NSA0LjkyNDY2IDEwLjI0NTEgMTAuMDg1IDguMjYwNTIgMTMuNzQ0OEw3LjgyMDk4IDEzLjUwNjRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4yXCIsZDpcIk04LjQxMjg0IDEzLjQyOUMxMC4xOTUyIDkuOTI4NDIgMTAuMTk1NyA1LjA3NTM3IDguNDE0MzUgMS41NzQwMkw4Ljg1OTk5IDEuMzQ3MjlDMTAuNzEzOSA0Ljk5MTEzIDEwLjcxMzMgMTAuMDEyOCA4Ljg1ODQxIDEzLjY1NTlMOC40MTI4NCAxMy40MjlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4yNVwiLGQ6XCJNOS4wMjQ0MSAxMy4yOTU2QzEwLjY1NjcgOS44Mzc5IDEwLjY1ODYgNS4xNzcxNSA5LjAzMDA1IDEuNzE2NTZMOS40ODI0NSAxLjUwMzY2QzExLjE3NDUgNS4wOTkxOSAxMS4xNzI2IDkuOTE2MjkgOS40NzY1NyAxMy41MDkxTDkuMDI0NDEgMTMuMjk1NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjNcIixkOlwiTTkuNjY4MDkgMTMuMDY1NUMxMS4xMDk3IDkuNjk1NzIgMTEuMTEwNyA1LjMxMjEgOS42NzA4OCAxLjk0MDk1TDEwLjEzMDcgMS43NDQ1N0MxMS42MjQxIDUuMjQxMjEgMTEuNjIzMSA5Ljc2NjgzIDEwLjEyNzggMTMuMjYyMkw5LjY2ODA5IDEzLjA2NTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4zNVwiLGQ6XCJNMTAuMzMxIDEyLjc0NTZDMTEuNTU1MSA5LjUyMDczIDExLjU1NjQgNS40OTEwMyAxMC4zMzQ3IDIuMjY0NDRMMTAuODAyNCAyLjA4NzRDMTIuMDY3MiA1LjQyODE1IDEyLjA2NTkgOS41ODM5NCAxMC43OTg1IDEyLjkyMzFMMTAuMzMxIDEyLjc0NTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi40XCIsZDpcIk0xMS4wMTU1IDEyLjI5ODZDMTEuOTkzOCA5LjI5NzQ0IDExLjk5NDggNS43MTI5NiAxMS4wMTg0IDIuNzEwNjdMMTEuNDkzOSAyLjU1NjAzQzEyLjUwMyA1LjY1ODkgMTIuNTAyIDkuMzUxNzggMTEuNDkwOSAxMi40NTM1TDExLjAxNTUgMTIuMjk4NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjQ1XCIsZDpcIk0xMS43MjE0IDExLjY2OEMxMi40MjU0IDkuMDEzMDMgMTIuNDI2MiA1Ljk5NjkxIDExLjcyMzcgMy4zNDExNkwxMi4yMDcxIDMuMjEzMjlDMTIuOTMxOCA1Ljk1MjkyIDEyLjkzMSA5LjA1NzI4IDEyLjIwNDcgMTEuNzk2MUwxMS43MjE0IDExLjY2OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjVcIixkOlwiTTEyLjQ0MzIgMTAuNzUyQzEyLjg1MjQgOC42Mzc2MiAxMi44NTIzIDYuMzYwODkgMTIuNDQyOSA0LjI0NjZMMTIuOTMzOCA0LjE1MTU1QzEzLjM1NTMgNi4zMjg2MSAxMy4zNTU0IDguNjY5ODUgMTIuOTM0MSAxMC44NDdMMTIuNDQzMiAxMC43NTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx3cj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwNzUgNy40OTk4OEMwLjg3NzA3NSAzLjg0MjE5IDMuODQyMjIgMC44NzcwNDUgNy40OTk5MSAwLjg3NzA0NUMxMS4xNTc2IDAuODc3MDQ1IDE0LjEyMjcgMy44NDIxOSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAxMS4xNTc1IDExLjE1NzYgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMy44NDIyMiAxNC4xMjI3IDAuODc3MDc1IDExLjE1NzUgMC44NzcwNzUgNy40OTk4OFpNNy40OTk5MSAxLjgyNzA0QzQuMzY2ODkgMS44MjcwNCAxLjgyNzA4IDQuMzY2ODYgMS44MjcwOCA3LjQ5OTg4QzEuODI3MDggMTAuNjMyOSA0LjM2Njg5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzEwLjYzMjkgMTMuMTcyNyAxMy4xNzI3IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNC4zNjY4NiAxMC42MzI5IDEuODI3MDQgNy40OTk5MSAxLjgyNzA0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMDVcIixkOlwiTTEyLjE2MTkgMy44NTE4MkM4LjM1ODE3IDQuODg5MTggNC44ODkzNiA4LjM1OCAzLjg1MTk5IDEyLjE2MTdMMy4zNjk2IDEyLjAzMDFDNC40NTM1NiA4LjA1NTY0IDguMDU1ODEgNC40NTMzOSAxMi4wMzAzIDMuMzY5NDNMMTIuMTYxOSAzLjg1MTgyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMVwiLGQ6XCJNMTEuODgwNyAzLjQyNzA3QzguMDM0NDEgNC41MDU0MiA0LjUwNTYxIDguMDM0MjIgMy40MjcyNiAxMS44ODA1TDIuOTQ1ODIgMTEuNzQ1NkM0LjA3MTI5IDcuNzMxMjEgNy43MzE0IDQuMDcxMSAxMS43NDU4IDIuOTQ1NjNMMTEuODgwNyAzLjQyNzA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMTVcIixkOlwiTTExLjUyMDEgMy4wMjU1NkM3LjY5MDkyIDQuMTYxOTkgNC4xNjc3OSA3LjY4MzIzIDMuMDI4MDUgMTEuNTEyTDIuNTQ4ODMgMTEuMzY5NEMzLjczNjc2IDcuMzc4NjkgNy4zODY1OSAzLjczMDc2IDExLjM3NzggMi41NDYyM0wxMS41MjAxIDMuMDI1NTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4yXCIsZDpcIk0xMS4wNDY4IDIuNjYxNjlDNy4zMTExNyAzLjg3NjY0IDMuODc5MTggNy4zMDc5IDIuNjYyOTggMTEuMDQzNEwyLjE4NzU0IDEwLjg4ODZDMy40NTMyNCA3LjAwMTA5IDcuMDA0NDUgMy40NTA2MiAxMC44OTIxIDIuMTg2MjFMMTEuMDQ2OCAyLjY2MTY5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMjVcIixkOlwiTTEwLjUyMDEgMi4zMjM2NUM2LjkyMDkxIDMuNjE0NDcgMy42MjM5MSA2LjkwODc2IDIuMzI4NDUgMTAuNTA3M0wxLjg1OCAxMC4zMzhDMy4yMDM5OCA2LjU5OTA5IDYuNjExNTUgMy4xOTQyNCAxMC4zNTEzIDEuODUzMDFMMTAuNTIwMSAyLjMyMzY1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuM1wiLGQ6XCJNOS45MDIyMiAyLjAzMTIyQzYuNTAwMDMgMy4zOTQ2NSAzLjM5OTY4IDYuNDkzNjcgMi4wMzM5OSA5Ljg5NTUxTDEuNTY5OTggOS43MDkyNEMyLjk4NjUxIDYuMTgwNzYgNi4xODcyOCAyLjk4MTMzIDkuNzE2MjIgMS41NjcxTDkuOTAyMjIgMi4wMzEyMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjM1XCIsZDpcIk05LjIwNzI3IDEuNzg4NzNDNi4wNjEzNiAzLjIwMzQ5IDMuMjExMDMgNi4wNTIwMyAxLjc5MzMxIDkuMTk3MzhMMS4zMzc0NyA4Ljk5MTkyQzIuODA1MzYgNS43MzUyOCA1Ljc0NDg1IDIuNzk3NiA5LjAwMjIgMS4zMzI3Mkw5LjIwNzI3IDEuNzg4NzNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi40XCIsZDpcIk04LjQwNzEzIDEuNjIwODVDNS41OTMyMyAzLjA1MTE3IDMuMDU3OTQgNS41ODUwOSAxLjYyNTQ0IDguMzk4NDdMMS4xNzk4NyA4LjE3MTZDMi42NjAzNiA1LjI2Mzk3IDUuMjcyMzIgMi42NTM0IDguMTgwNTcgMS4xNzUxM0w4LjQwNzEzIDEuNjIwODVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi40NVwiLGQ6XCJNNy40NjIwNyAxLjU2NzQ3QzUuMDg2ODkgMi45NDY5NSAyLjk1MzYyIDUuMDc5MTIgMS41NzI0OSA3LjQ1Mzc5TDEuMTQwMjggNy4yMDI0MUMyLjU2NTAzIDQuNzUyNzMgNC43NjA3IDIuNTU4MTggNy4yMTA5NiAxLjEzNTFMNy40NjIwNyAxLjU2NzQ3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNVwiLGQ6XCJNNi4zMDQwNyAxLjcwNDg3QzQuNTE5NjQgMi45MTA2MyAyLjkwOTgzIDQuNTIwNjEgMS43MDQzIDYuMzA1MTNMMS4yODk5OCA2LjAyNTI0QzIuNTMxMyA0LjE4NzczIDQuMTg2NzMgMi41MzIxNCA2LjAyNDEzIDEuMjkwNTlMNi4zMDQwNyAxLjcwNDg3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzcwNDVDMy44NDIyMiAwLjg3NzA0NSAwLjg3NzA3NSAzLjg0MjE5IDAuODc3MDc1IDcuNDk5ODhDMC44NzcwNzUgOS4xNDg4IDEuNDc5NjkgMTAuNjU3IDIuNDc2NyAxMS44MTYyTDEuNjQ2NDcgMTIuNjQ2NEMxLjQ1MTIxIDEyLjg0MTcgMS40NTEyMSAxMy4xNTgzIDEuNjQ2NDcgMTMuMzUzNUMxLjg0MTczIDEzLjU0ODggMi4xNTgzMiAxMy41NDg4IDIuMzUzNTggMTMuMzUzNUwzLjE4MzgzIDEyLjUyMzNDNC4zNDMwMiAxMy41MjAyIDUuODUxMSAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MxMS4xNTc2IDE0LjEyMjcgMTQuMTIyNyAxMS4xNTc1IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDUuODUxMDcgMTMuNTIwMiA0LjM0Mjk4IDEyLjUyMzMgMy4xODM4TDEzLjM1MzYgMi4zNTM1NUMxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAxLjg0MTcgMTMuMzUzNiAxLjY0NjQ0QzEzLjE1ODMgMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTIuNjQ2NSAxLjY0NjQ0TDExLjgxNjIgMi40NzY2N0MxMC42NTcgMS40Nzk2NiA5LjE0ODgzIDAuODc3MDQ1IDcuNDk5OTEgMC44NzcwNDVaTTExLjE0MjMgMy4xNTA2NUMxMC4xNTY4IDIuMzI0NDkgOC44ODY0NCAxLjgyNzA0IDcuNDk5OTEgMS44MjcwNEM0LjM2Njg5IDEuODI3MDQgMS44MjcwOCA0LjM2Njg2IDEuODI3MDggNy40OTk4OEMxLjgyNzA4IDguODg2NDEgMi4zMjQ1MiAxMC4xNTY4IDMuMTUwNjkgMTEuMTQyMkwxMS4xNDIzIDMuMTUwNjVaTTMuODU3ODEgMTEuODQ5M0M0Ljg0MzIyIDEyLjY3NTMgNi4xMTM0OCAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0MxMC42MzI5IDEzLjE3MjcgMTMuMTcyNyAxMC42MzI5IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDYuMTEzNDUgMTIuNjc1NCA0Ljg0MzE5IDExLjg0OTMgMy44NTc3OEwzLjg1NzgxIDExLjg0OTNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4wNVwiLGQ6XCJNNi43ODI5NiAxMy4zNzZDOC43MzkwNCA5Ljk1Mjg0IDguNzM5MDQgNS4wNDcxOSA2Ljc4Mjk2IDEuNjI0MDVMNy4yMTcwOCAxLjM3NTk4QzkuMjYxIDQuOTUyODMgOS4yNjEgMTAuMDQ3MiA3LjIxNzA4IDEzLjYyNEw2Ljc4Mjk2IDEzLjM3NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjFcIixkOlwiTTcuMjgyMDQgMTMuNDc3NUM5LjIzOTI5IDkuOTk1MjMgOS4yMzkyOSA1LjAwNDc1IDcuMjgyMDQgMS41MjI0OEw3LjcxNzkxIDEuMjc3NUM5Ljc2MDY3IDQuOTExOSA5Ljc2MDY3IDEwLjA4ODEgNy43MTc5MSAxMy43MjI1TDcuMjgyMDQgMTMuNDc3NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjE1XCIsZDpcIk03LjgyMDk4IDEzLjUwNjRDOS43MjUwMiA5Ljk5NTIzIDkuNzI2MzYgNS4wMTQxMSA3LjgyNDkyIDEuNTAwODRMOC4yNjQ2NSAxLjI2Mjg1QzEwLjI0NjUgNC45MjQ2NiAxMC4yNDUxIDEwLjA4NSA4LjI2MDUyIDEzLjc0NDhMNy44MjA5OCAxMy41MDY0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMlwiLGQ6XCJNOC40MTI4NCAxMy40MjlDMTAuMTk1MiA5LjkyODQyIDEwLjE5NTcgNS4wNzUzNyA4LjQxNDM1IDEuNTc0MDJMOC44NTk5OSAxLjM0NzI5QzEwLjcxMzkgNC45OTExMyAxMC43MTMzIDEwLjAxMjggOC44NTg0MSAxMy42NTU5TDguNDEyODQgMTMuNDI5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMjVcIixkOlwiTTkuMDI0NDEgMTMuMjk1NkMxMC42NTY3IDkuODM3OSAxMC42NTg2IDUuMTc3MTUgOS4wMzAwNSAxLjcxNjU2TDkuNDgyNDUgMS41MDM2NkMxMS4xNzQ1IDUuMDk5MTkgMTEuMTcyNiA5LjkxNjI5IDkuNDc2NTcgMTMuNTA5MUw5LjAyNDQxIDEzLjI5NTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4zXCIsZDpcIk05LjY2ODA5IDEzLjA2NTVDMTEuMTA5NyA5LjY5NTcyIDExLjExMDcgNS4zMTIxIDkuNjcwODggMS45NDA5NUwxMC4xMzA3IDEuNzQ0NTdDMTEuNjI0MSA1LjI0MTIxIDExLjYyMzEgOS43NjY4MyAxMC4xMjc4IDEzLjI2MjJMOS42NjgwOSAxMy4wNjU1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMzVcIixkOlwiTTEwLjMzMSAxMi43NDU2QzExLjU1NTEgOS41MjA3MyAxMS41NTY0IDUuNDkxMDMgMTAuMzM0NyAyLjI2NDQ0TDEwLjgwMjQgMi4wODc0QzEyLjA2NzIgNS40MjgxNSAxMi4wNjU5IDkuNTgzOTQgMTAuNzk4NSAxMi45MjMxTDEwLjMzMSAxMi43NDU2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNFwiLGQ6XCJNMTEuMDE1NSAxMi4yOTg2QzExLjk5MzggOS4yOTc0NCAxMS45OTQ4IDUuNzEyOTYgMTEuMDE4NCAyLjcxMDY3TDExLjQ5MzkgMi41NTYwM0MxMi41MDMgNS42NTg5IDEyLjUwMiA5LjM1MTc4IDExLjQ5MDkgMTIuNDUzNUwxMS4wMTU1IDEyLjI5ODZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi40NVwiLGQ6XCJNMTEuNzIxNCAxMS42NjhDMTIuNDI1NCA5LjAxMzAzIDEyLjQyNjIgNS45OTY5MSAxMS43MjM3IDMuMzQxMTZMMTIuMjA3MSAzLjIxMzI5QzEyLjkzMTggNS45NTI5MiAxMi45MzEgOS4wNTcyOCAxMi4yMDQ3IDExLjc5NjFMMTEuNzIxNCAxMS42NjhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi41XCIsZDpcIk0xMi40NDMyIDEwLjc1MkMxMi44NTI0IDguNjM3NjIgMTIuODUyMyA2LjM2MDg5IDEyLjQ0MjkgNC4yNDY2TDEyLjkzMzggNC4xNTE1NUMxMy4zNTUzIDYuMzI4NjEgMTMuMzU1NCA4LjY2OTg1IDEyLjkzNDEgMTAuODQ3TDEyLjQ0MzIgMTAuNzUyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjA1XCIsZDpcIk0xMi4xMzk4IDMuODg2MTZDMTMuODU1MyA0Ljk0MTU5IDE1IDYuODM3IDE1IDguOTk5OTlDMTUgMTIuMzEzNyAxMi4zMTM3IDE1IDkuMDAwMDEgMTVDNi44NDM1IDE1IDQuOTUyOTUgMTMuODYyMSAzLjg5NTY5IDEyLjE1NTJMNC4zMjA3NSAxMS44OTE5QzUuMjkwNjkgMTMuNDU3OCA3LjAyMzc1IDE0LjUgOS4wMDAwMSAxNC41QzEyLjAzNzUgMTQuNSAxNC41IDEyLjAzNzUgMTQuNSA4Ljk5OTk5QzE0LjUgNy4wMTc4IDEzLjQ1MTYgNS4yODAyNiAxMS44Nzc4IDQuMzEyMDJMMTIuMTM5OCAzLjg4NjE2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMlwiLGQ6XCJNMTIuODUxIDUuMDczMkMxMy44Njg0IDYuMDcxMDUgMTQuNSA3LjQ2MTk4IDE0LjUgOC45OTk5OUMxNC41IDEyLjAzNzUgMTIuMDM3NiAxNC41IDkuMDAwMDIgMTQuNUM3LjQ2MjE0IDE0LjUgNi4wNzEzMSAxMy44Njg1IDUuMDczNDggMTIuODUxMkw1LjQzMDQyIDEyLjUwMTFDNi4zMzgwOSAxMy40MjY0IDcuNjAxODUgMTQgOS4wMDAwMiAxNEMxMS43NjE0IDE0IDE0IDExLjc2MTQgMTQgOC45OTk5OUMxNCA3LjYwMTcgMTMuNDI2NCA2LjMzNzg1IDEyLjUwMDkgNS40MzAxN0wxMi44NTEgNS4wNzMyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMzVcIixkOlwiTTEzLjMwMjEgNi40NTA3MUMxMy43NDU1IDcuMTk3MzcgMTQgOC4wNjkzNCAxNCA5QzE0IDExLjc2MTQgMTEuNzYxNCAxNCA5LjAwMDAxIDE0QzguMDQ4NjcgMTQgNy4xNTg2NyAxMy43MzQxIDYuNDAxMTggMTMuMjcyM0w2LjY2MTQxIDEyLjg0NTRDNy4zNDI3NCAxMy4yNjA3IDguMTQzMDUgMTMuNSA5LjAwMDAxIDEzLjVDMTEuNDg1MyAxMy41IDEzLjUgMTEuNDg1MyAxMy41IDlDMTMuNSA4LjE2MTY0IDEzLjI3MSA3LjM3NzUzIDEyLjg3MjIgNi43MDU5OEwxMy4zMDIxIDYuNDUwNzFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi41XCIsZDpcIk0xMy4zNzQ0IDcuOTQwMjFDMTMuNDU2NiA4LjI4MDMgMTMuNSA4LjYzNTI0IDEzLjUgOUMxMy41IDExLjQ4NTMgMTEuNDg1MyAxMy41IDkuMDAwMDIgMTMuNUM4LjYxMTAzIDEzLjUgOC4yMzMyMSAxMy40NTA2IDcuODcyNjcgMTMuMzU3Nkw3Ljk5NzU4IDEyLjg3MzRDOC4zMTc2NyAxMi45NTYgOC42NTM1MiAxMyA5LjAwMDAyIDEzQzExLjIwOTEgMTMgMTMgMTEuMjA5MSAxMyA5QzEzIDguNjc1MDcgMTIuOTYxMyA4LjM1OTUyIDEyLjg4ODQgOC4wNTc1NkwxMy4zNzQ0IDcuOTQwMjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi42NVwiLGQ6XCJNMTIuOTE1NSA5LjgyMTMyQzEyLjU4OTggMTEuMzgxMyAxMS4zNTYyIDEyLjYwNzIgOS43OTIwMyAxMi45MjE1TDkuNjkzNTMgMTIuNDMxM0MxMS4wNjEzIDEyLjE1NjUgMTIuMTQxMyAxMS4wODMzIDEyLjQyNjEgOS43MTkxM0wxMi45MTU1IDkuODIxMzJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjI3NzEgNy41MDI1MkMxLjI3NzEgNC4wNjQ1NSA0LjA2NDEzIDEuMjc3NTMgNy41MDIwOSAxLjI3NzUzQzEwLjk0IDEuMjc3NTMgMTMuNzI3MSA0LjA2NDU1IDEzLjcyNzEgNy41MDI1MkMxMy43MjcxIDEwLjk0MDUgMTAuOTQgMTMuNzI3NSA3LjUwMjA5IDEzLjcyNzVDNC4wNjQxMiAxMy43Mjc1IDEuMjc3MSAxMC45NDA1IDEuMjc3MSA3LjUwMjUyWk03LjUwMjA5IDIuMjI3NTJDNC41ODg4IDIuMjI3NTIgMi4yMjcxIDQuNTg5MjIgMi4yMjcxIDcuNTAyNTJDMi4yMjcxIDEwLjQxNTggNC41ODg4IDEyLjc3NzUgNy41MDIwOSAxMi43Nzc1QzEwLjQxNTQgMTIuNzc3NSAxMi43NzcxIDEwLjQxNTggMTIuNzc3MSA3LjUwMjUyQzEyLjc3NzEgNC41ODkyMiAxMC40MTU0IDIuMjI3NTIgNy41MDIwOSAyLjIyNzUyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUgNy41MDAwM0M1IDguMzI4NDUgNC4zMjg0MyA5LjAwMDAzIDMuNSA5LjAwMDAzQzIuNjcxNTcgOS4wMDAwMyAyIDguMzI4NDUgMiA3LjUwMDAzQzIgNi42NzE2IDIuNjcxNTcgNi4wMDAwMyAzLjUgNi4wMDAwM0M0LjMyODQzIDYuMDAwMDMgNSA2LjY3MTYgNSA3LjUwMDAzWk01LjcxMzEzIDguNjYzODhDNS4yOTQ0NSA5LjQ1ODM4IDQuNDYwNDggMTAgMy41IDEwQzIuMTE5MjkgMTAgMSA4Ljg4MDc0IDEgNy41MDAwM0MxIDYuMTE5MzEgMi4xMTkyOSA1LjAwMDAzIDMuNSA1LjAwMDAzQzQuNDYwNDggNS4wMDAwMyA1LjI5NDQ1IDUuNTQxNjcgNS43MTMxMyA2LjMzNjE2TDkuMTA0MjQgNC4yMTY3MUM5LjAzNjQzIDMuOTg5NjggOSAzLjc0OTExIDkgMy41MDAwM0M5IDIuMTE5MzIgMTAuMTE5MyAxLjAwMDAzIDExLjUgMS4wMDAwM0MxMi44ODA3IDEuMDAwMDMgMTQgMi4xMTkzMiAxNCAzLjUwMDAzQzE0IDQuODgwNzQgMTIuODgwNyA2LjAwMDAzIDExLjUgNi4wMDAwM0MxMC42OTE1IDYuMDAwMDMgOS45NzI2NCA1LjYxNjI0IDkuNTE1NjYgNS4wMjA5TDUuOTg1MyA3LjIyNzM4QzUuOTk1MDIgNy4zMTY5MiA2IDcuNDA3ODkgNiA3LjUwMDAzQzYgNy41OTIxNiA1Ljk5NTAyIDcuNjgzMTIgNS45ODUzIDcuNzcyNjdMOS41MTU2NyA5Ljk3OTE1QzkuOTcyNjUgOS4zODM4MiAxMC42OTE1IDkuMDAwMDMgMTEuNSA5LjAwMDAzQzEyLjg4MDcgOS4wMDAwMyAxNCAxMC4xMTkzIDE0IDExLjVDMTQgMTIuODgwNyAxMi44ODA3IDE0IDExLjUgMTRDMTAuMTE5MyAxNCA5IDEyLjg4MDcgOSAxMS41QzkgMTEuMjUwOSA5LjAzNjQzIDExLjAxMDQgOS4xMDQyNSAxMC43ODMzTDUuNzEzMTMgOC42NjM4OFpNMTEuNSA1LjAwMDAzQzEyLjMyODQgNS4wMDAwMyAxMyA0LjMyODQ2IDEzIDMuNTAwMDNDMTMgMi42NzE2IDEyLjMyODQgMi4wMDAwMyAxMS41IDIuMDAwMDNDMTAuNjcxNiAyLjAwMDAzIDEwIDIuNjcxNiAxMCAzLjUwMDAzQzEwIDQuMzI4NDYgMTAuNjcxNiA1LjAwMDAzIDExLjUgNS4wMDAwM1pNMTMgMTEuNUMxMyAxMi4zMjg1IDEyLjMyODQgMTMgMTEuNSAxM0MxMC42NzE2IDEzIDEwIDEyLjMyODUgMTAgMTEuNUMxMCAxMC42NzE2IDEwLjY3MTYgMTAgMTEuNSAxMEMxMi4zMjg0IDEwIDEzIDEwLjY3MTYgMTMgMTEuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE9yPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjUgNS4wMDAwNkMzLjIyMzg2IDUuMDAwMDYgMyA1LjIyMzkyIDMgNS41MDAwNkwzIDExLjUwMDFDMyAxMS43NzYyIDMuMjIzODYgMTIuMDAwMSAzLjUgMTIuMDAwMUwxMS41IDEyLjAwMDFDMTEuNzc2MSAxMi4wMDAxIDEyIDExLjc3NjIgMTIgMTEuNTAwMUwxMiA1LjUwMDA2QzEyIDUuMjIzOTIgMTEuNzc2MSA1LjAwMDA2IDExLjUgNS4wMDAwNkwxMC4yNSA1LjAwMDA2QzkuOTczODYgNS4wMDAwNiA5Ljc1IDQuNzc2MiA5Ljc1IDQuNTAwMDZDOS43NSA0LjIyMzkyIDkuOTczODYgNC4wMDAwNiAxMC4yNSA0LjAwMDA2TDExLjUgNC4wMDAwNkMxMi4zMjg0IDQuMDAwMDYgMTMgNC42NzE2MyAxMyA1LjUwMDA2TDEzIDExLjUwMDFDMTMgMTIuMzI4NSAxMi4zMjg0IDEzLjAwMDEgMTEuNSAxMy4wMDAxTDMuNSAxMy4wMDAxQzIuNjcxNTcgMTMuMDAwMSAyIDEyLjMyODUgMiAxMS41MDAxTDIgNS41MDAwNkMyIDQuNjcxNjMgMi42NzE1NyA0LjAwMDA2IDMuNSA0LjAwMDA2TDQuNzUgNC4wMDAwNkM1LjAyNjE0IDQuMDAwMDYgNS4yNSA0LjIyMzkyIDUuMjUgNC41MDAwNkM1LjI1IDQuNzc2MiA1LjAyNjE0IDUuMDAwMDYgNC43NSA1LjAwMDA2TDMuNSA1LjAwMDA2Wk03IDEuNjM2NEw1LjU2ODIgMy4wNjgyQzUuMzkyNDYgMy4yNDM5MyA1LjEwNzU0IDMuMjQzOTMgNC45MzE4IDMuMDY4MkM0Ljc1NjA3IDIuODkyNDYgNC43NTYwNyAyLjYwNzU0IDQuOTMxOCAyLjQzMThMNy4xODE4IDAuMTgxODAyQzcuMjY2MTkgMC4wOTc0MSA3LjM4MDY1IDAuMDQ5OTk5IDcuNSAwLjA0OTk5OUM3LjYxOTM1IDAuMDQ5OTk5IDcuNzMzODEgMC4wOTc0MSA3LjgxODIgMC4xODE4MDJMMTAuMDY4MiAyLjQzMThDMTAuMjQzOSAyLjYwNzU0IDEwLjI0MzkgMi44OTI0NiAxMC4wNjgyIDMuMDY4MkM5Ljg5MjQ2IDMuMjQzOTMgOS42MDc1NCAzLjI0MzkzIDkuNDMxOCAzLjA2ODJMOCAxLjYzNjRMOCA4LjVDOCA4Ljc3NjE0IDcuNzc2MTQgOSA3LjUgOUM3LjIyMzg2IDkgNyA4Ljc3NjE0IDcgOC41TDcgMS42MzY0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjM1MzYgMS4xNDY0NUMxMi4xNTgzIDAuOTUxMTg0IDExLjg0MTcgMC45NTExODQgMTEuNjQ2NCAxLjE0NjQ1QzExLjQ1MTIgMS4zNDE3MSAxMS40NTEyIDEuNjU4MjkgMTEuNjQ2NCAxLjg1MzU1TDEyLjc5MjkgM0gxMkMxMC43MDM3IDMgOS43MTExMSAzLjU4NDIzIDguODcyNDggNC4zODkzMUM4LjIwMDY1IDUuMDM0MjcgNy41OTM0OSA1Ljg1Njg0IDYuOTk0NjEgNi42NjgyQzYuODYyODcgNi44NDY2OCA2LjczMTU0IDcuMDI0NjIgNi42IDcuMkM1LjEwODc0IDkuMTg4MzUgMy40OTAzNyAxMSAwLjUgMTFDMC4yMjM4NTggMTEgMCAxMS4yMjM5IDAgMTEuNUMwIDExLjc3NjEgMC4yMjM4NTggMTIgMC41IDEyQzQuMDA5NjMgMTIgNS44OTEyNiA5LjgxMTY1IDcuNCA3LjhDNy41NDM2NyA3LjYwODQ1IDcuNjgzMiA3LjQxOTYyIDcuODE5OTYgNy4yMzQ1NEw3LjgyMDA1IDcuMjM0NDNMNy44MjAwNiA3LjIzNDQxQzguNDE2NzQgNi40MjY5NSA4Ljk2MDY5IDUuNjkwODUgOS41NjUwMiA1LjExMDY5QzEwLjI4ODkgNC40MTU3NyAxMS4wNDYzIDQgMTIgNEgxMi43OTI5TDExLjY0NjQgNS4xNDY0NUMxMS40NTEyIDUuMzQxNzEgMTEuNDUxMiA1LjY1ODI5IDExLjY0NjQgNS44NTM1NUMxMS44NDE3IDYuMDQ4ODIgMTIuMTU4MyA2LjA0ODgyIDEyLjM1MzYgNS44NTM1NUwxNC4zNTM2IDMuODUzNTVDMTQuNTQ4OCAzLjY1ODI5IDE0LjU0ODggMy4zNDE3MSAxNC4zNTM2IDMuMTQ2NDVMMTIuMzUzNiAxLjE0NjQ1Wk0wLjUgM0MzLjM1Mjc4IDMgNS4xMjk5MiA0LjQ0NTg4IDYuNTA1NDggNi4wNjc0Nkw2LjM3NjIgNi4yNDI2NkM2LjI0ODMgNi40MTYxIDYuMTIyOTMgNi41ODYwOSA2IDYuNzVDNS45NjM5NyA2Ljc5ODA0IDUuOTI3OTggNi44NDU4MSA1Ljg5MiA2Ljg5MzMxQzQuNTczNDggNS4yOTMwNiAzLjAyNjM3IDQgMC41IDRDMC4yMjM4NTggNCAwIDMuNzc2MTQgMCAzLjVDMCAzLjIyMzg2IDAuMjIzODU4IDMgMC41IDNaTTguODcyNDggMTAuNjEwN0M4LjM3Mjg0IDEwLjEzMSA3LjkwODk3IDkuNTUzMTQgNy40NTc2NyA4Ljk1NDY4QzcuNjQ2ODggOC43MTY5MyA3LjgyNzA0IDguNDgwNjEgOCA4LjI1TDguMDg5ODcgOC4xMjk4N0M4LjU4NDEyIDguNzk0MDIgOS4wNTI4OCA5LjM5NzY2IDkuNTY1MDIgOS44ODkzMUMxMC4yODg5IDEwLjU4NDIgMTEuMDQ2MyAxMSAxMiAxMUgxMi43OTI5TDExLjY0NjQgOS44NTM1NUMxMS40NTEyIDkuNjU4MjkgMTEuNDUxMiA5LjM0MTcxIDExLjY0NjQgOS4xNDY0NUMxMS44NDE3IDguOTUxMTggMTIuMTU4MyA4Ljk1MTE4IDEyLjM1MzYgOS4xNDY0NUwxNC4zNTM2IDExLjE0NjRDMTQuNTQ4OCAxMS4zNDE3IDE0LjU0ODggMTEuNjU4MyAxNC4zNTM2IDExLjg1MzZMMTIuMzUzNiAxMy44NTM2QzEyLjE1ODMgMTQuMDQ4OCAxMS44NDE3IDE0LjA0ODggMTEuNjQ2NCAxMy44NTM2QzExLjQ1MTIgMTMuNjU4MyAxMS40NTEyIDEzLjM0MTcgMTEuNjQ2NCAxMy4xNDY0TDEyLjc5MjkgMTJIMTJDMTAuNzAzNyAxMiA5LjcxMTExIDExLjQxNTggOC44NzI0OCAxMC42MTA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjUgMy4wNDk5OUMxMS43NDg1IDMuMDQ5OTkgMTEuOTUgMy4yNTE0NiAxMS45NSAzLjQ5OTk5VjcuNDk5OTlDMTEuOTUgNy43NDg1MiAxMS43NDg1IDcuOTQ5OTkgMTEuNSA3Ljk0OTk5QzExLjI1MTUgNy45NDk5OSAxMS4wNSA3Ljc0ODUyIDExLjA1IDcuNDk5OTlWNC41ODYzOUw0LjU4NjM4IDExLjA1SDcuNDk5OTlDNy43NDg1MiAxMS4wNSA3Ljk0OTk5IDExLjI1MTUgNy45NDk5OSAxMS41QzcuOTQ5OTkgMTEuNzQ4NSA3Ljc0ODUyIDExLjk1IDcuNDk5OTkgMTEuOTVMMy40OTk5OSAxMS45NUMzLjM4MDY0IDExLjk1IDMuMjY2MTggMTEuOTAyNiAzLjE4MTc5IDExLjgxODJDMy4wOTc0IDExLjczMzggMy4wNDk5OSAxMS42MTkzIDMuMDQ5OTkgMTEuNUwzLjA0OTk5IDcuNDk5OTlDMy4wNDk5OSA3LjI1MTQ2IDMuMjUxNDYgNy4wNDk5OSAzLjQ5OTk5IDcuMDQ5OTlDMy43NDg1MiA3LjA0OTk5IDMuOTQ5OTkgNy4yNTE0NiAzLjk0OTk5IDcuNDk5OTlMMy45NDk5OSAxMC40MTM2TDEwLjQxMzYgMy45NDk5OUw3LjQ5OTk5IDMuOTQ5OTlDNy4yNTE0NiAzLjk0OTk5IDcuMDQ5OTkgMy43NDg1MiA3LjA0OTk5IDMuNDk5OTlDNy4wNDk5OSAzLjI1MTQ2IDcuMjUxNDYgMy4wNDk5OSA3LjQ5OTk5IDMuMDQ5OTlMMTEuNSAzLjA0OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sU3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNTM3MzEgMC44MjY4NzNDNy41MTI1IDAuODI0MzkyIDcuNDg3NSAwLjgyNDM5MiA3LjQ2MjY5IDAuODI2ODczTDMuOTYyNjkgMS4xNzY4N0MzLjg1NjcyIDEuMTg3NDcgMy43NjAyNSAxLjI0MjYyIDMuNjk3MzYgMS4zMjg1N0wwLjY5OTc3MSA1LjQyNTI4QzAuNjU0MDQ2IDUuNDg2MjcgMC42MjY0NyA1LjU2MTY1IDAuNjI1MDU3IDUuNjQzNEMwLjYyNTAxOSA1LjY0NTYgMC42MjUgNS42NDc4MSAwLjYyNSA1LjY1MDAxQzAuNjI1IDUuNjUwNTIgMC42MjUwMDEgNS42NTEwMyAwLjYyNTAwMyA1LjY1MTUzQzAuNjI1MzYzIDUuNzQyMzcgMC42NTgwMjEgNS44MjU1OSAwLjcxMjA4NyA1Ljg5MDNMNy4yMTA0MiAxMy43ODgzQzcuMjgxNjUgMTMuODc0OSA3LjM4Nzg5IDEzLjkyNSA3LjUgMTMuOTI1QzcuNjEyMTEgMTMuOTI1IDcuNzE4MzUgMTMuODc0OSA3Ljc4OTU4IDEzLjc4ODNMMTQuMjg3OSA1Ljg5MDMxQzE0LjM0MiA1LjgyNTYgMTQuMzc0NiA1Ljc0MjM3IDE0LjM3NSA1LjY1MTUzQzE0LjM3NSA1LjY1MTAzIDE0LjM3NSA1LjY1MDUyIDE0LjM3NSA1LjY1MDAxQzE0LjM3NSA1LjY0ODQ5IDE0LjM3NSA1LjY0Njk3IDE0LjM3NSA1LjY0NTQ1QzE0LjM3NDkgNS42Mzk2MyAxNC4zNzQ3IDUuNjMzODIgMTQuMzc0NCA1LjYyODAxQzE0LjM3IDUuNTUyMTkgMTQuMzQzMSA1LjQ4MjQyIDE0LjMwMDIgNS40MjUyN0wxMS4zMDI2IDEuMzI4NTdDMTEuMjM5NyAxLjI0MjYyIDExLjE0MzMgMS4xODc0NyAxMS4wMzczIDEuMTc2ODdMNy41MzczMSAwLjgyNjg3M1pNMTAuOTI1IDUuMjc1MDFWNS4yNTIzNkwxMC45MjIzIDUuMjc1MDFIMTAuOTI1Wk0xMC45MzQyIDUuMTc0OThIMTMuMTg3N0wxMS4yNDk1IDIuNTI2MUwxMC45MzQyIDUuMTc0OThaTTEwLjU3MDcgMS44ODM5NUw4LjA0NDMyIDEuNjMxMzFMMTAuMTc0NyA1LjIxMDM0TDEwLjU3MDcgMS44ODM5NVpNNi45NTU2OCAxLjYzMTMxTDQuNDI5MzEgMS44ODM5NUw0LjgyNTMxIDUuMjEwMzRMNi45NTU2OCAxLjYzMTMxWk0zLjc1MDQ2IDIuNTI2MUwxLjgxMjI2IDUuMTc0OThINC4wNjU4TDMuNzUwNDYgMi41MjYxWk0xLjc5NDE2IDYuMDI1MDFMNi43NTg2MSAxMi4wNTg3TDQuMjIzNzEgNi4wNjY5QzQuMjE3ODcgNi4wNTMxIDQuMjEzMTQgNi4wMzkxIDQuMjA5NDkgNi4wMjUwMUgxLjc5NDE2Wk01LjE1MDU1IDYuMDI1MDFMNy40OTk5OSAxMi4xMDg1TDkuODQ5NDMgNi4wMjUwMUg5Ljc4NjgxSDUuMjEzMTlINS4xNTA1NVpNMTAuNzkwNSA2LjAyNTAxQzEwLjc4NjkgNi4wMzkxIDEwLjc4MjEgNi4wNTMxIDEwLjc3NjMgNi4wNjY5TDguMjQxMzkgMTIuMDU4N0wxMy4yMDU4IDYuMDI1MDFIMTAuNzkwNVpNNy41IDIuMTgzMTdMOS4zNDAzOCA1LjI3NTAxSDUuNjU5NjJMNy41IDIuMTgzMTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxfcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC4xMDg3NiAxNEw5LjQ2NTgyIDFIMTAuODE3OEw1LjQ2MDc0IDE0SDQuMTA4NzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxqcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAuMzAwNCA3LjQ5OTkxQzEwLjMwMDQgOC40OTQzIDkuNDk0MjYgOS4zMDA0MSA4LjQ5OTg4IDkuMzAwNDFDNy41MDU0OSA5LjMwMDQxIDYuNjk5MzggOC40OTQzIDYuNjk5MzggNy40OTk5MUM2LjY5OTM4IDYuNTA1NTMgNy41MDU0OSA1LjY5OTQyIDguNDk5ODggNS42OTk0MkM5LjQ5NDI2IDUuNjk5NDIgMTAuMzAwNCA2LjUwNTUzIDEwLjMwMDQgNy40OTk5MVpNMTEuMjA1IDhDMTAuOTY5OSA5LjI4MDI5IDkuODQ4MTYgMTAuMjUwNCA4LjQ5OTg4IDEwLjI1MDRDNy4xNTE2IDEwLjI1MDQgNi4wMjk5IDkuMjgwMjkgNS43OTQ3MyA4SDAuNUMwLjIyMzg1OCA4IDAgNy43NzYxNCAwIDcuNUMwIDcuMjIzODYgMC4yMjM4NTggNyAwLjUgN0g1Ljc5NDdDNi4wMjk4IDUuNzE5NjIgNy4xNTE1NCA0Ljc0OTQyIDguNDk5ODggNC43NDk0MkM5Ljg0ODIyIDQuNzQ5NDIgMTAuOTY5OSA1LjcxOTYyIDExLjIwNTEgN0gxNC41QzE0Ljc3NjEgNyAxNSA3LjIyMzg2IDE1IDcuNUMxNSA3Ljc3NjE0IDE0Ljc3NjEgOCAxNC41IDhIMTEuMjA1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0LjQ5OTkgMC45OTk5OTRDMTQuMjIzNyAwLjk5OTk5NCAxMy45OTk5IDEuMjIzODUgMTMuOTk5OSAxLjQ5OTk5TDEzLjk5OTkgNS45OTk5NUw5Ljk5OTkyIDUuOTk5OTVDOS40NDc2NCA1Ljk5OTk1IDguOTk5OTMgNi40NDc2NiA4Ljk5OTkzIDYuOTk5OTRMOC45OTk5MyA3Ljk5OTk0QzguOTk5OTMgOC41NTIyMiA5LjQ0NzY0IDguOTk5OTMgOS45OTk5MiA4Ljk5OTkzTDEzLjk5OTkgOC45OTk5M0wxMy45OTk5IDEzLjQ5OTlDMTMuOTk5OSAxMy43NzYgMTQuMjIzNyAxMy45OTk5IDE0LjQ5OTkgMTMuOTk5OUMxNC43NzYgMTMuOTk5OSAxNC45OTk5IDEzLjc3NiAxNC45OTk5IDEzLjQ5OTlMMTQuOTk5OSAxLjQ5OTk5QzE0Ljk5OTkgMS4yMjM4NSAxNC43NzYgMC45OTk5OTQgMTQuNDk5OSAwLjk5OTk5NFpNNC45OTk5NiA1Ljk5OTk1TDAuOTk5OTkyIDUuOTk5OTVMMC45OTk5OTIgMS40OTk5OUMwLjk5OTk5MiAxLjIyMzg1IDAuNzc2MTM2IDAuOTk5OTk0IDAuNDk5OTk2IDAuOTk5OTk0QzAuMjIzODU2IDAuOTk5OTk0IC05Ljc4NTJlLTA5IDEuMjIzODUgLTIuMTg1NTdlLTA4IDEuNDk5OTlMNC4wNzI3OWUtMDcgMTMuNDk5OUMzLjk1MjA4ZS0wNyAxMy43NzYgMC4yMjM4NTUgMTMuOTk5OSAwLjQ5OTk5NiAxMy45OTk5QzAuNzc2MTM2IDEzLjk5OTkgMC45OTk5OTIgMTMuNzc2IDAuOTk5OTkyIDEzLjQ5OTlMMC45OTk5OTIgOC45OTk5M0w0Ljk5OTk2IDguOTk5OTNDNS41NTIyNCA4Ljk5OTkzIDUuOTk5OTUgOC41NTIyMiA1Ljk5OTk1IDcuOTk5OTNMNS45OTk5NSA2Ljk5OTk0QzUuOTk5OTUgNi40NDc2NiA1LjU1MjI0IDUuOTk5OTUgNC45OTk5NiA1Ljk5OTk1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuOTk5ODc4IDAuNUMwLjk5OTg3OCAwLjIyMzg1OCAxLjIyMzc0IDAgMS40OTk4OCAwSDEzLjQ5OTlDMTMuNzc2IDAgMTMuOTk5OSAwLjIyMzg1OCAxMy45OTk5IDAuNUMxMy45OTk5IDAuNzc2MTQyIDEzLjc3NiAxIDEzLjQ5OTkgMUw5IDFWNUM5IDUuNTUyMjggOC41NTIyOCA2IDggNkg3QzYuNDQ3NzIgNiA2IDUuNTUyMjggNiA1VjFIMS40OTk4OEMxLjIyMzc0IDEgMC45OTk4NzggMC43NzYxNDIgMC45OTk4NzggMC41Wk03IDlDNi40NDc3MiA5IDYgOS40NDc3MSA2IDEwVjE0SDEuNDk5ODhDMS4yMjM3NCAxNCAwLjk5OTg3OCAxNC4yMjM5IDAuOTk5ODc4IDE0LjVDMC45OTk4NzggMTQuNzc2MSAxLjIyMzc0IDE1IDEuNDk5ODggMTVIMTMuNDk5OUMxMy43NzYgMTUgMTMuOTk5OSAxNC43NzYxIDEzLjk5OTkgMTQuNUMxMy45OTk5IDE0LjIyMzkgMTMuNzc2IDE0IDEzLjQ5OTkgMTRIOVYxMEM5IDkuNDQ3NzIgOC41NTIyOCA5IDggOUg3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sa3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0LjQ5OTkgMC45OTk5OTJDMTQuMjIzNyAwLjk5OTk5MiAxMy45OTk5IDEuMjIzODUgMTMuOTk5OSAxLjQ5OTk5TDEzLjk5OTkgMTMuNDk5OUMxMy45OTk5IDEzLjc3NiAxNC4yMjM3IDEzLjk5OTkgMTQuNDk5OSAxMy45OTk5QzE0Ljc3NiAxMy45OTk5IDE0Ljk5OTkgMTMuNzc2IDE0Ljk5OTkgMTMuNDk5OUwxNC45OTk5IDEuNDk5OTlDMTQuOTk5OSAxLjIyMzg1IDE0Ljc3NiAwLjk5OTk5MiAxNC40OTk5IDAuOTk5OTkyWk0wLjQ5OTk5NiAwLjk5OTk5MkMwLjIyMzg1NiAwLjk5OTk5MiAtOS43ODUwOWUtMDkgMS4yMjM4NSAtMi4xODU1NmUtMDggMS40OTk5OUw0LjA3Mjc5ZS0wNyAxMy40OTk5QzMuOTUyMDhlLTA3IDEzLjc3NiAwLjIyMzg1NSAxMy45OTk5IDAuNDk5OTk2IDEzLjk5OTlDMC43NzYxMzYgMTMuOTk5OSAwLjk5OTk5MiAxMy43NzYgMC45OTk5OTIgMTMuNDk5OUwwLjk5OTk5MiAxLjQ5OTk5QzAuOTk5OTkyIDEuMjIzODUgMC43NzYxMzYgMC45OTk5OTIgMC40OTk5OTYgMC45OTk5OTJaTTEuOTk5OTggNi45OTk5NEMxLjk5OTk4IDYuNDQ3NjYgMi40NDc2OSA1Ljk5OTk1IDIuOTk5OTggNS45OTk5NUw1Ljk5OTk1IDUuOTk5OTVDNi41NTIyMyA1Ljk5OTk1IDYuOTk5OTQgNi40NDc2NiA2Ljk5OTk0IDYuOTk5OTRMNi45OTk5NCA3Ljk5OTkzQzYuOTk5OTQgOC41NTIyMSA2LjU1MjIzIDguOTk5OTIgNS45OTk5NSA4Ljk5OTkyTDIuOTk5OTggOC45OTk5MkMyLjQ0NzcgOC45OTk5MiAxLjk5OTk4IDguNTUyMjEgMS45OTk5OCA3Ljk5OTkzTDEuOTk5OTggNi45OTk5NFpNOC45OTk5MyA1Ljk5OTk1QzguNDQ3NjUgNS45OTk5NSA3Ljk5OTkzIDYuNDQ3NjYgNy45OTk5MyA2Ljk5OTk0TDcuOTk5OTMgNy45OTk5M0M3Ljk5OTkzIDguNTUyMjEgOC40NDc2NSA4Ljk5OTkyIDguOTk5OTMgOC45OTk5MkwxMS45OTk5IDguOTk5OTJDMTIuNTUyMiA4Ljk5OTkyIDEyLjk5OTkgOC41NTIyMSAxMi45OTk5IDcuOTk5OTNMMTIuOTk5OSA2Ljk5OTk0QzEyLjk5OTkgNi40NDc2NiAxMi41NTIyIDUuOTk5OTUgMTEuOTk5OSA1Ljk5OTk1TDguOTk5OTMgNS45OTk5NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEhyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjk5OTg3OCAwLjVDMC45OTk4NzggMC4yMjM4NTggMS4yMjM3NCAwIDEuNDk5ODggMEgxMy40OTk5QzEzLjc3NiAwIDEzLjk5OTkgMC4yMjM4NTggMTMuOTk5OSAwLjVDMTMuOTk5OSAwLjc3NjE0MiAxMy43NzYgMSAxMy40OTk5IDFIMS40OTk4OEMxLjIyMzc0IDEgMC45OTk4NzggMC43NzYxNDIgMC45OTk4NzggMC41Wk03IDJDNi40NDc3MiAyIDYgMi40NDc3MiA2IDNWNkM2IDYuNTUyMjggNi40NDc3MiA3IDcgN0g4QzguNTUyMjggNyA5IDYuNTUyMjggOSA2VjNDOSAyLjQ0NzcyIDguNTUyMjggMiA4IDJIN1pNNyA4QzYuNDQ3NzIgOCA2IDguNDQ3NzEgNiA5VjEyQzYgMTIuNTUyMyA2LjQ0NzcyIDEzIDcgMTNIOEM4LjU1MjI4IDEzIDkgMTIuNTUyMyA5IDEyVjlDOSA4LjQ0NzcyIDguNTUyMjggOCA4IDhIN1pNMS40OTk4OCAxNEMxLjIyMzc0IDE0IDAuOTk5ODc4IDE0LjIyMzkgMC45OTk4NzggMTQuNUMwLjk5OTg3OCAxNC43NzYxIDEuMjIzNzQgMTUgMS40OTk4OCAxNUgxMy40OTk5QzEzLjc3NiAxNSAxMy45OTk5IDE0Ljc3NjEgMTMuOTk5OSAxNC41QzEzLjk5OTkgMTQuMjIzOSAxMy43NzYgMTQgMTMuNDk5OSAxNEgxLjQ5OTg4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDY5NjggMS4wNTA4NUM3LjY0MTIyIDEuMTM0NzUgNy43NSAxLjMwOTA0IDcuNzUgMS41VjEzLjVDNy43NSAxMy42OTEgNy42NDEyMiAxMy44NjUzIDcuNDY5NjggMTMuOTQ5MkM3LjI5ODEzIDE0LjAzMzEgNy4wOTM3NyAxNC4wMTE5IDYuOTQzMDMgMTMuODk0N0wzLjIyMTMgMTFIMS41QzAuNjcxNTcxIDExIDAgMTAuMzI4NCAwIDkuNVY1LjVDMCA0LjY3MTU4IDAuNjcxNTczIDQgMS41IDRIMy4yMjEzTDYuOTQzMDMgMS4xMDUzM0M3LjA5Mzc3IDAuOTg4MDg1IDcuMjk4MTMgMC45NjY5NDUgNy40Njk2OCAxLjA1MDg1Wk02Ljc1IDIuNTIyMzJMMy42OTk4MyA0Ljg5NDY4QzMuNjEyMDYgNC45NjI5NCAzLjUwNDA1IDUgMy4zOTI4NiA1SDEuNUMxLjIyMzg2IDUgMSA1LjIyMzg2IDEgNS41VjkuNUMxIDkuNzc2MTUgMS4yMjM4NiAxMCAxLjUgMTBIMy4zOTI4NkMzLjUwNDA1IDEwIDMuNjEyMDYgMTAuMDM3MSAzLjY5OTgzIDEwLjEwNTNMNi43NSAxMi40Nzc3VjIuNTIyMzJaTTEwLjI3ODQgMy44NDgwNEMxMC40NjIzIDMuNzI1NjcgMTAuNzEwNiAzLjc3NTU3IDEwLjgzMyAzLjk1OTQ5QzEyLjI1NTggNi4wOTc5OCAxMi4yNTU4IDguOTAxOTkgMTAuODMzIDExLjA0MDVDMTAuNzEwNiAxMS4yMjQ0IDEwLjQ2MjMgMTEuMjc0MyAxMC4yNzg0IDExLjE1MTlDMTAuMDk0NCAxMS4wMjk2IDEwLjA0NDUgMTAuNzgxMyAxMC4xNjY5IDEwLjU5NzNDMTEuNDExMSA4LjcyNzI4IDExLjQxMTEgNi4yNzI2OSAxMC4xNjY5IDQuNDAyNjRDMTAuMDQ0NSA0LjIxODcxIDEwLjA5NDQgMy45NzA0MSAxMC4yNzg0IDMuODQ4MDRaTTEyLjY3ODUgMS40MzA0NEMxMi41MzU2IDEuMjYxOSAxMi4yODMyIDEuMjQxMDQgMTIuMTE0NyAxLjM4Mzg2QzExLjk0NjIgMS41MjY2NyAxMS45MjUzIDEuNzc5MDggMTIuMDY4MSAxLjk0NzYyQzE0Ljc3NzMgNS4xNDQ4OCAxNC43NzczIDkuODU1MTMgMTIuMDY4MSAxMy4wNTI0QzExLjkyNTMgMTMuMjIwOSAxMS45NDYyIDEzLjQ3MzMgMTIuMTE0NyAxMy42MTYxQzEyLjI4MzIgMTMuNzU5IDEyLjUzNTYgMTMuNzM4MSAxMi42Nzg1IDEzLjU2OTZDMTUuNjQwNiAxMC4wNzM5IDE1LjY0MDYgNC45MjYxMiAxMi42Nzg1IDEuNDMwNDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxScj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOCAxLjVDOCAxLjMxMDYyIDcuODkzIDEuMTM3NDkgNy43MjM2MSAxLjA1Mjc5QzcuNTU0MjEgMC45NjgwOTMgNy4zNTE1MSAwLjk4NjM3MSA3LjIgMS4xTDMuMzMzMzMgNEgxLjVDMC42NzE1NzMgNCAwIDQuNjcxNTggMCA1LjVWOS41QzAgMTAuMzI4NCAwLjY3MTU3MyAxMSAxLjUgMTFIMy4zMzMzM0w3LjIgMTMuOUM3LjM1MTUxIDE0LjAxMzYgNy41NTQyMSAxNC4wMzE5IDcuNzIzNjEgMTMuOTQ3MkM3Ljg5MyAxMy44NjI1IDggMTMuNjg5NCA4IDEzLjVWMS41Wk0zLjggNC45TDcgMi41VjEyLjVMMy44IDEwLjFDMy43MTM0NSAxMC4wMzUxIDMuNjA4MTkgMTAgMy41IDEwSDEuNUMxLjIyMzg2IDEwIDEgOS43NzYxNCAxIDkuNVY1LjVDMSA1LjIyMzg2IDEuMjIzODYgNSAxLjUgNUgzLjVDMy42MDgxOSA1IDMuNzEzNDUgNC45NjQ5MSAzLjggNC45Wk0xMC44MzMgMy45NTk0OUMxMC43MTA2IDMuNzc1NTcgMTAuNDYyMyAzLjcyNTY3IDEwLjI3ODQgMy44NDgwNEMxMC4wOTQ0IDMuOTcwNDEgMTAuMDQ0NSA0LjIxODcxIDEwLjE2NjkgNC40MDI2NEMxMS40MTExIDYuMjcyNjggMTEuNDExMSA4LjcyNzI4IDEwLjE2NjkgMTAuNTk3M0MxMC4wNDQ1IDEwLjc4MTMgMTAuMDk0NCAxMS4wMjk2IDEwLjI3ODQgMTEuMTUxOUMxMC40NjIzIDExLjI3NDMgMTAuNzEwNiAxMS4yMjQ0IDEwLjgzMyAxMS4wNDA1QzEyLjI1NTggOC45MDE5OSAxMi4yNTU4IDYuMDk3OTggMTAuODMzIDMuOTU5NDlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxJcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy43MjM2MSAxLjA1Mjc5QzcuODkzIDEuMTM3NDkgOCAxLjMxMDYyIDggMS41VjEzLjVDOCAxMy42ODk0IDcuODkzIDEzLjg2MjUgNy43MjM2MSAxMy45NDcyQzcuNTU0MjEgMTQuMDMxOSA3LjM1MTUxIDE0LjAxMzYgNy4yIDEzLjlMMy4zMzMzMyAxMUgxLjVDMC42NzE1NzMgMTEgMCAxMC4zMjg0IDAgOS41VjUuNUMwIDQuNjcxNTggMC42NzE1NzMgNCAxLjUgNEgzLjMzMzMzTDcuMiAxLjFDNy4zNTE1MSAwLjk4NjM3MSA3LjU1NDIxIDAuOTY4MDkzIDcuNzIzNjEgMS4wNTI3OVpNNyAyLjVMMy44IDQuOUMzLjcxMzQ1IDQuOTY0OTEgMy42MDgxOSA1IDMuNSA1SDEuNUMxLjIyMzg2IDUgMSA1LjIyMzg2IDEgNS41VjkuNUMxIDkuNzc2MTQgMS4yMjM4NiAxMCAxLjUgMTBIMy41QzMuNjA4MTkgMTAgMy43MTM0NSAxMC4wMzUxIDMuOCAxMC4xTDcgMTIuNVYyLjVaTTE0Ljg1MzYgNS4xNDY0NUMxNS4wNDg4IDUuMzQxNzEgMTUuMDQ4OCA1LjY1ODI5IDE0Ljg1MzYgNS44NTM1NUwxMy4yMDcxIDcuNUwxNC44NTM2IDkuMTQ2NDVDMTUuMDQ4OCA5LjM0MTcxIDE1LjA0ODggOS42NTgyOSAxNC44NTM2IDkuODUzNTVDMTQuNjU4MyAxMC4wNDg4IDE0LjM0MTcgMTAuMDQ4OCAxNC4xNDY0IDkuODUzNTVMMTIuNSA4LjIwNzExTDEwLjg1MzYgOS44NTM1NUMxMC42NTgzIDEwLjA0ODggMTAuMzQxNyAxMC4wNDg4IDEwLjE0NjQgOS44NTM1NUM5Ljk1MTE4IDkuNjU4MjkgOS45NTExOCA5LjM0MTcxIDEwLjE0NjQgOS4xNDY0NUwxMS43OTI5IDcuNUwxMC4xNDY0IDUuODUzNTVDOS45NTExOCA1LjY1ODI5IDkuOTUxMTggNS4zNDE3MSAxMC4xNDY0IDUuMTQ2NDVDMTAuMzQxNyA0Ljk1MTE4IDEwLjY1ODMgNC45NTExOCAxMC44NTM2IDUuMTQ2NDVMMTIuNSA2Ljc5Mjg5TDE0LjE0NjQgNS4xNDY0NUMxNC4zNDE3IDQuOTUxMTggMTQuNjU4MyA0Ljk1MTE4IDE0Ljg1MzYgNS4xNDY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFpyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04IDEuNUM4IDEuMzEwNjIgNy44OTMgMS4xMzc0OSA3LjcyMzYxIDEuMDUyNzlDNy41NTQyMSAwLjk2ODA5MyA3LjM1MTUxIDAuOTg2MzcxIDcuMiAxLjFMMy4zMzMzMyA0SDEuNUMwLjY3MTU3MyA0IDAgNC42NzE1OCAwIDUuNVY5LjVDMCAxMC4zMjg0IDAuNjcxNTczIDExIDEuNSAxMUgzLjMzMzMzTDcuMiAxMy45QzcuMzUxNTEgMTQuMDEzNiA3LjU1NDIxIDE0LjAzMTkgNy43MjM2MSAxMy45NDcyQzcuODkzIDEzLjg2MjUgOCAxMy42ODk0IDggMTMuNVYxLjVaTTMuOCA0LjlMNyAyLjVWMTIuNUwzLjggMTAuMUMzLjcxMzQ1IDEwLjAzNTEgMy42MDgxOSAxMCAzLjUgMTBIMS41QzEuMjIzODYgMTAgMSA5Ljc3NjE0IDEgOS41VjUuNUMxIDUuMjIzODYgMS4yMjM4NiA1IDEuNSA1SDMuNUMzLjYwODE5IDUgMy43MTM0NSA0Ljk2NDkxIDMuOCA0LjlaTTEwLjA4MyA1LjA1NTc3QzkuOTYwNjYgNC44NzE4NSA5LjcxMjM1IDQuODIxOTUgOS41Mjg0MyA0Ljk0NDMyQzkuMzQ0NSA1LjA2NjY5IDkuMjk0NiA1LjMxNDk5IDkuNDE2OTcgNS40OTg5MkMxMC4yMjA3IDYuNzA2OTMgMTAuMjIwNyA4LjI5MzAzIDkuNDE2OTcgOS41MDEwNEM5LjI5NDYgOS42ODQ5NiA5LjM0NDUgOS45MzMyNiA5LjUyODQzIDEwLjA1NTZDOS43MTIzNSAxMC4xNzggOS45NjA2NiAxMC4xMjgxIDEwLjA4MyA5Ljk0NDE4QzExLjA2NTMgOC40Njc3MyAxMS4wNjUzIDYuNTMyMjIgMTAuMDgzIDUuMDU1NzdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxBcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMSAxSDEuNUgxMy41SDE0VjEuNVYxMy41VjE0SDEzLjVIMS41SDFWMTMuNVYxLjVWMVpNMiAyVjEzSDEzVjJIMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LERyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03Ljc1NDMyIDEuODE5NTRDNy41OTc0MiAxLjcyNjgyIDcuNDAyNSAxLjcyNjgyIDcuMjQ1NTkgMS44MTk1NEwxLjc0NTU5IDUuMDY5NTRDMS41OTMzNiA1LjE1OTQ5IDEuNDk5OTYgNS4zMjMxNyAxLjQ5OTk2IDUuNUMxLjQ5OTk2IDUuNjc2ODMgMS41OTMzNiA1Ljg0MDUxIDEuNzQ1NTkgNS45MzA0Nkw3LjI0NTU5IDkuMTgwNDZDNy40MDI1IDkuMjczMTggNy41OTc0MiA5LjI3MzE4IDcuNzU0MzIgOS4xODA0NkwxMy4yNTQzIDUuOTMwNDZDMTMuNDA2NiA1Ljg0MDUxIDEzLjUgNS42NzY4MyAxMy41IDUuNUMxMy41IDUuMzIzMTcgMTMuNDA2NiA1LjE1OTQ5IDEzLjI1NDMgNS4wNjk1NEw3Ljc1NDMyIDEuODE5NTRaTTcuNDk5OTYgOC4xNjkyM0wyLjk4MjggNS41TDcuNDk5OTYgMi44MzA3N0wxMi4wMTcxIDUuNUw3LjQ5OTk2IDguMTY5MjNaTTIuMjU0MzIgOC4zMTk1NEMyLjAxNjU4IDguMTc5MDYgMS43MDk5OCA4LjI1NzkgMS41Njk0OSA4LjQ5NTY0QzEuNDI5MDEgOC43MzMzNyAxLjUwNzg1IDkuMDM5OTggMS43NDU1OSA5LjE4MDQ2TDcuMjQ1NTkgMTIuNDMwNUM3LjQwMjUgMTIuNTIzMiA3LjU5NzQyIDEyLjUyMzIgNy43NTQzMiAxMi40MzA1TDEzLjI1NDMgOS4xODA0NkMxMy40OTIxIDkuMDM5OTggMTMuNTcwOSA4LjczMzM3IDEzLjQzMDQgOC40OTU2NEMxMy4yODk5IDguMjU3OSAxMi45ODMzIDguMTc5MDYgMTIuNzQ1NiA4LjMxOTU0TDcuNDk5OTYgMTEuNDE5MkwyLjI1NDMyIDguMzE5NTRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxCcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi45Nzk0MiAxLjI1MTcxTDYuOTU4NSAxLjMwMTk5TDUuNTg2NjIgNC42MDAzOUM1LjU0MzQyIDQuNzA0MjYgNS40NDU3MyA0Ljc3NTIzIDUuMzMzNiA0Ljc4NDIyTDEuNzcyNyA1LjA2OTdMMS43MTg0MSA1LjA3NDA1TDEuMzg2ODcgNS4xMDA2M0wxLjA4NjA4IDUuMTI0NzVDMC44MjAwODUgNS4xNDYwNyAwLjcxMjIyOCA1LjQ3ODAyIDAuOTE0ODg5IDUuNjUxNjJMMS4xNDQwNiA1Ljg0NzkzTDEuMzk2NjYgNi4wNjQzMUwxLjQzODAyIDYuMDk5NzRMNC4xNTEwNSA4LjQyMzc0QzQuMjM2NDggOC40OTY5MiA0LjI3MzggOC42MTE3NiA0LjI0NzY5IDguNzIxMThMMy40MTg4MiAxMi4xOTZMMy40MDYxOCAxMi4yNDlMMy4zMjkwMSAxMi41NzI1TDMuMjU4OTkgMTIuODY2QzMuMTk3MDggMTMuMTI1NiAzLjQ3OTQ1IDEzLjMzMDggMy43MDcxOCAxMy4xOTE3TDMuOTY0NyAxMy4wMzQ0TDQuMjQ4NTQgMTIuODYxTDQuMjk1MDIgMTIuODMyNkw3LjM0MzY1IDEwLjk3MDVDNy40Mzk2NSAxMC45MTE5IDcuNTYwNCAxMC45MTE5IDcuNjU2NCAxMC45NzA1TDEwLjcwNSAxMi44MzI2TDEwLjc1MTUgMTIuODYxTDExLjAzNTQgMTMuMDM0NEwxMS4yOTI5IDEzLjE5MTdDMTEuNTIwNiAxMy4zMzA4IDExLjgwMyAxMy4xMjU2IDExLjc0MTEgMTIuODY2TDExLjY3MSAxMi41NzI1TDExLjU5MzkgMTIuMjQ5TDExLjU4MTIgMTIuMTk2TDEwLjc1MjQgOC43MjExOEMxMC43MjYzIDguNjExNzYgMTAuNzYzNiA4LjQ5NjkyIDEwLjg0OSA4LjQyMzc0TDEzLjU2MiA2LjA5OTc0TDEzLjYwMzQgNi4wNjQzMUwxMy44NTYgNS44NDc5M0wxNC4wODUyIDUuNjUxNjJDMTQuMjg3OCA1LjQ3ODAyIDE0LjE4IDUuMTQ2MDcgMTMuOTE0IDUuMTI0NzVMMTMuNjEzMiA1LjEwMDYzTDEzLjI4MTYgNS4wNzQwNUwxMy4yMjc0IDUuMDY5N0w5LjY2NjQ1IDQuNzg0MjJDOS41NTQzMiA0Ljc3NTIzIDkuNDU2NjMgNC43MDQyNiA5LjQxMzQzIDQuNjAwMzlMOC4wNDE1NSAxLjMwMTk5TDguMDIwNjQgMS4yNTE3MUw3Ljg5MjkxIDAuOTQ0NjA5TDcuNzc3MDIgMC42NjU5OTJDNy42NzQ1NCAwLjQxOTYwNCA3LjMyNTUxIDAuNDE5NjA0IDcuMjIzMDMgMC42NjU5OTJMNy4xMDcxNSAwLjk0NDYwOUw2Ljk3OTQyIDEuMjUxNzFaTTcuNTAwMDMgMi42MDM5N0w2LjUwOTk0IDQuOTg0NDJDNi4zMjI3MyA1LjQzNDUzIDUuODk5NDQgNS43NDIwNyA1LjQxMzUxIDUuNzgxMDNMMi44NDM2MSA1Ljk4NzA1TDQuODAxNiA3LjY2NDI4QzUuMTcxODMgNy45ODE0MiA1LjMzMzUxIDguNDc5MDMgNS4yMjA0IDguOTUzMjFMNC42MjIyMSAxMS40NjFMNi44MjI0IDEwLjExNzFDNy4yMzg0MiA5Ljg2MzAyIDcuNzYxNjQgOS44NjMwMiA4LjE3NzY2IDEwLjExNzFMMTAuMzc3OCAxMS40NjFMOS43Nzk2NSA4Ljk1MzIxQzkuNjY2NTQgOC40NzkwMyA5LjgyODIyIDcuOTgxNDIgMTAuMTk4NCA3LjY2NDI4TDEyLjE1NjQgNS45ODcwNUw5LjU4NjU0IDUuNzgxMDNDOS4xMDA2MSA1Ljc0MjA3IDguNjc3MzIgNS40MzQ1MyA4LjQ5MDExIDQuOTg0NDJMNy41MDAwMyAyLjYwMzk3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMjIzMDMgMC42NjU5OTJDNy4zMjU1MSAwLjQxOTYwNCA3LjY3NDU0IDAuNDE5NjA0IDcuNzc3MDIgMC42NjU5OTJMOS40MTM0MyA0LjYwMDM5QzkuNDU2NjMgNC43MDQyNiA5LjU1NDMyIDQuNzc1MjMgOS42NjY0NSA0Ljc4NDIyTDEzLjkxNCA1LjEyNDc1QzE0LjE4IDUuMTQ2MDcgMTQuMjg3OCA1LjQ3ODAyIDE0LjA4NTIgNS42NTE2MkwxMC44NDkgOC40MjM3NEMxMC43NjM2IDguNDk2OTIgMTAuNzI2MyA4LjYxMTc2IDEwLjc1MjQgOC43MjExOEwxMS43NDExIDEyLjg2NkMxMS44MDMgMTMuMTI1NiAxMS41MjA2IDEzLjMzMDggMTEuMjkyOSAxMy4xOTE3TDcuNjU2NCAxMC45NzA1QzcuNTYwNCAxMC45MTE5IDcuNDM5NjUgMTAuOTExOSA3LjM0MzY1IDEwLjk3MDVMMy43MDcxOCAxMy4xOTE3QzMuNDc5NDUgMTMuMzMwOCAzLjE5NzA4IDEzLjEyNTYgMy4yNTg5OSAxMi44NjZMNC4yNDc2OSA4LjcyMTE4QzQuMjczOCA4LjYxMTc2IDQuMjM2NDggOC40OTY5MiA0LjE1MTA1IDguNDIzNzRMMC45MTQ4ODkgNS42NTE2MkMwLjcxMjIyOCA1LjQ3ODAyIDAuODIwMDg2IDUuMTQ2MDcgMS4wODYwOCA1LjEyNDc1TDUuMzMzNiA0Ljc4NDIyQzUuNDQ1NzMgNC43NzUyMyA1LjU0MzQyIDQuNzA0MjYgNS41ODY2MiA0LjYwMDM5TDcuMjIzMDMgMC42NjU5OTJaXCIsZmlsbDpufSkpfSwkcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS44NDk5OCA3LjQ5OTk4QzEuODQ5OTggNy4yMTMyMSAxLjg3MTM0IDYuOTMxNDMgMS45MTI1NiA2LjY1NjE1TDkuNTYzNzQgMi4yMzg3NUM5Ljg2MzExIDIuMzU2MjcgMTAuMTUgMi40OTg2MSAxMC40MjE5IDIuNjYzMjJMMy43NzA2NSA2LjUwMzMyQzMuNzM2NjkgNi41MjE4MyAzLjcwNDgyIDYuNTQ0OSAzLjY3NjAyIDYuNTcyMzhDMy41OTExIDYuNjUzMDggMy41NDI0NSA2Ljc2Mjg2IDMuNTM2ODIgNi44NzY1OEMzLjUzMzU5IDYuOTQxOCAzLjU0NDUxIDcuMDA4MzEgMy41NzA4NiA3LjA3MTM3QzMuNTg5MjcgNy4xMTU3IDMuNjE0OSA3LjE1NzQyIDMuNjQ3NDQgNy4xOTQ1OEMzLjY3MzA2IDcuMjIzOTYgMy43MDIgNy4yNDk0MSAzLjczMzM3IDcuMjcwNjlMNy4zMjUzMyA5LjgzODEzTDMuODcyMzIgMTEuODMxN0MyLjYzNjA0IDEwLjc5NTMgMS44NDk5OCA5LjIzOTQ0IDEuODQ5OTggNy40OTk5OFpNOC4zNjg0MyAxMC4yNzUxQzguMzc2ODIgMTAuMjcwNiA4LjM4NTA5IDEwLjI2NTkgOC4zOTMyMiAxMC4yNjA4TDkuODQwOTEgOS40MjQ5OUM5Ljg0NzA2IDkuNDIxNjMgOS44NTMxNCA5LjQxODEyIDkuODU5MTUgOS40MTQ0NkwxMS4zMTAxIDguNTc2NzdDMTEuMzY1NSA4LjU0NjQ5IDExLjQxNTQgOC41MDQgMTEuNDU1NCA4LjQ0OTk1QzExLjYwMzQgOC4yNTAzMSAxMS41NjE2IDcuOTY4NDggMTEuMzYyIDcuODIwNDZMNy44Mjc3OSA1LjIwMDE3TDExLjIxNjEgMy4yNDM5M0MxMi40MDEzIDQuMjc5NjMgMTMuMTUgNS44MDIzNyAxMy4xNSA3LjQ5OTk4QzEzLjE1IDcuODM1NDYgMTMuMTIwNyA4LjE2NDExIDEzLjA2NDcgOC40ODM1M0w1LjU2ODc1IDEyLjgxMTNDNS4yNjEzOCAxMi42OTk1IDQuOTY2NDYgMTIuNTYxOCA0LjY4NjYyIDEyLjQwMDhMOC4zNjg0MyAxMC4yNzUxWk04LjE4MTQ5IDkuMzQzODNMNC44MTY1OSA2LjkzODY4TDUuNTA5MTggNi41Mzg4MUw4LjgwNjA0IDguOTgzMjRMOC4xODE0OSA5LjM0MzgzWk02LjM1ODc1IDYuMDQ4MzJMNi45NzgyMiA1LjY5MDY3TDEwLjI3NTEgOC4xMzUwNkw5LjY1NTYgOC40OTI3NUw2LjM1ODc1IDYuMDQ4MzJaTTguMzMxOCAxLjkxMDc4TDIuMjQyNjMgNS40MjYzNkMzLjA2OTQxIDMuMzMxODggNS4xMTE2NCAxLjg0OTk4IDcuNDk5OTggMS44NDk5OEM3Ljc4MjU4IDEuODQ5OTggOC4wNjAzMyAxLjg3MDcyIDguMzMxOCAxLjkxMDc4Wk02Ljg0Njg0IDEzLjExMjZDNy4wNjExNCAxMy4xMzczIDcuMjc5MDggMTMuMTUgNy40OTk5OCAxMy4xNUM5LjgyNDYgMTMuMTUgMTEuODIxMyAxMS43NDYxIDEyLjY4ODYgOS43Mzk5TDYuODQ2ODQgMTMuMTEyNlpNNy40OTk5OCAwLjg0OTk3NkMzLjgyNzI4IDAuODQ5OTc2IDAuODQ5OTc2IDMuODI3MjggMC44NDk5NzYgNy40OTk5OEMwLjg0OTk3NiAxMS4xNzI3IDMuODI3MjggMTQuMTUgNy40OTk5OCAxNC4xNUMxMS4xNzI3IDE0LjE1IDE0LjE1IDExLjE3MjcgMTQuMTUgNy40OTk5OEMxNC4xNSAzLjgyNzI4IDExLjE3MjcgMC44NDk5NzYgNy40OTk5OCAwLjg0OTk3NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEZyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDNDMiAyLjQ0NzcyIDIuNDQ3NzIgMiAzIDJIMTJDMTIuNTUyMyAyIDEzIDIuNDQ3NzIgMTMgM1YxMkMxMyAxMi41NTIzIDEyLjU1MjMgMTMgMTIgMTNIM0MyLjQ0NzcyIDEzIDIgMTIuNTUyMyAyIDEyVjNaTTEyIDNIM1YxMkgxMlYzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sV3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNDk5OTggMC41QzUuNDk5OTggMC4yMjM4NTggNS43MjM4MyAwIDUuOTk5OTggMEg3LjQ5OTk4SDguOTk5OThDOS4yNzYxMiAwIDkuNDk5OTggMC4yMjM4NTggOS40OTk5OCAwLjVDOS40OTk5OCAwLjc3NjE0MiA5LjI3NjEyIDEgOC45OTk5OCAxSDcuOTk5OThWMi4xMTkyMkM5LjA5ODMyIDIuMjA0MDkgMTAuMTE5IDIuNTY2MjIgMTAuOTkyIDMuMTM1NzJDMTEuMDExNiAzLjEwODUxIDExLjAzMzYgMy4wODI1MiAxMS4wNTggMy4wNTgwNkwxMS44NTggMi4yNTgwNkMxMi4xMDIxIDIuMDEzOTggMTIuNDk3OCAyLjAxMzk4IDEyLjc0MTkgMi4yNTgwNkMxMi45ODYgMi41MDIxNCAxMi45ODYgMi44OTc4NiAxMi43NDE5IDMuMTQxOTRMMTEuOTY3IDMuOTE2ODJDMTMuMTU5NSA1LjA3OTI1IDEzLjkgNi43MDMxNCAxMy45IDguNDk5OThDMTMuOSAxMi4wMzQ2IDExLjAzNDYgMTQuOSA3LjQ5OTk4IDE0LjlDMy45NjUzNSAxNC45IDEuMDk5OTggMTIuMDM0NiAxLjA5OTk4IDguNDk5OThDMS4wOTk5OCA1LjEzMzYyIDMuNjk5MDQgMi4zNzQzIDYuOTk5OTggMi4xMTkyMlYxSDUuOTk5OThDNS43MjM4MyAxIDUuNDk5OTggMC43NzYxNDIgNS40OTk5OCAwLjVaTTIuMDk5OTggOC40OTk5OEMyLjA5OTk4IDUuNTE3NjQgNC41MTc2NCAzLjA5OTk4IDcuNDk5OTggMy4wOTk5OEMxMC40ODIzIDMuMDk5OTggMTIuOSA1LjUxNzY0IDEyLjkgOC40OTk5OEMxMi45IDExLjQ4MjMgMTAuNDgyMyAxMy45IDcuNDk5OTggMTMuOUM0LjUxNzY0IDEzLjkgMi4wOTk5OCAxMS40ODIzIDIuMDk5OTggOC40OTk5OFpNNy45OTk5OCA0LjVDNy45OTk5OCA0LjIyMzg2IDcuNzc2MTIgNCA3LjQ5OTk4IDRDNy4yMjM4MyA0IDYuOTk5OTggNC4yMjM4NiA2Ljk5OTk4IDQuNVY5LjVDNi45OTk5OCA5Ljc3NjE0IDcuMjIzODMgMTAgNy40OTk5OCAxMEM3Ljc3NjEyIDEwIDcuOTk5OTggOS43NzYxNCA3Ljk5OTk4IDkuNVY0LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxOcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTQuNDk5OSAwLjk5OTk5MkMxNC4yMjM3IDAuOTk5OTkyIDEzLjk5OTkgMS4yMjM4NSAxMy45OTk5IDEuNDk5OTlMMTMuOTk5OSA1Ljk5OTk1TDAuOTk5OTkyIDUuOTk5OTVMMC45OTk5OTIgMS40OTk5OUMwLjk5OTk5MiAxLjIyMzg1IDAuNzc2MTM2IDAuOTk5OTkyIDAuNDk5OTk2IDAuOTk5OTkyQzAuMjIzODU2IDAuOTk5OTkyIC05Ljc4NTA5ZS0wOSAxLjIyMzg1IC0yLjE4NTU2ZS0wOCAxLjQ5OTk5TDQuMDcyNzllLTA3IDEzLjQ5OTlDMy45NTIwOGUtMDcgMTMuNzc2IDAuMjIzODU1IDEzLjk5OTkgMC40OTk5OTYgMTMuOTk5OUMwLjc3NjEzNiAxMy45OTk5IDAuOTk5OTkyIDEzLjc3NiAwLjk5OTk5MiAxMy40OTk5TDAuOTk5OTkyIDguOTk5OTJMMTMuOTk5OSA4Ljk5OTkyTDEzLjk5OTkgMTMuNDk5OUMxMy45OTk5IDEzLjc3NiAxNC4yMjM3IDEzLjk5OTkgMTQuNDk5OSAxMy45OTk5QzE0Ljc3NiAxMy45OTk5IDE0Ljk5OTkgMTMuNzc2IDE0Ljk5OTkgMTMuNDk5OUwxNC45OTk5IDEuNDk5OTlDMTQuOTk5OSAxLjIyMzg1IDE0Ljc3NiAwLjk5OTk5MiAxNC40OTk5IDAuOTk5OTkyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0senI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuOTk5ODc4IDAuNUMwLjk5OTg3OCAwLjIyMzg1OCAxLjIyMzc0IDAgMS40OTk4OCAwSDEzLjQ5OTlDMTMuNzc2IDAgMTMuOTk5OSAwLjIyMzg1OCAxMy45OTk5IDAuNUMxMy45OTk5IDAuNzc2MTQyIDEzLjc3NiAxIDEzLjQ5OTkgMUg2SDEuNDk5ODhDMS4yMjM3NCAxIDAuOTk5ODc4IDAuNzc2MTQyIDAuOTk5ODc4IDAuNVpNOSAxNFYxTDYgMVYxNEgxLjQ5OTg4QzEuMjIzNzQgMTQgMC45OTk4NzggMTQuMjIzOSAwLjk5OTg3OCAxNC41QzAuOTk5ODc4IDE0Ljc3NjEgMS4yMjM3NCAxNSAxLjQ5OTg4IDE1SDEzLjQ5OTlDMTMuNzc2IDE1IDEzLjk5OTkgMTQuNzc2MSAxMy45OTk5IDE0LjVDMTMuOTk5OSAxNC4yMjM5IDEzLjc3NiAxNCAxMy40OTk5IDE0SDlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxVcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS4wMDAwMyAzLjI1QzUuMDAwMDMgMi45NzM4NiA0Ljc3NjE3IDIuNzUgNC41MDAwMyAyLjc1QzQuMjIzODkgMi43NSA0LjAwMDAzIDIuOTczODYgNC4wMDAwMyAzLjI1VjcuMTAwMDNIMi40OTk5OEMyLjI3OTA2IDcuMTAwMDMgMi4wOTk5OCA3LjI3OTEyIDIuMDk5OTggNy41MDAwM0MyLjA5OTk4IDcuNzIwOTQgMi4yNzkwNiA3LjkwMDAzIDIuNDk5OTggNy45MDAwM0g0LjAwMDAzVjguNTVDNC4wMDAwMyAxMC40ODMgNS41NjcwMyAxMi4wNSA3LjUwMDAzIDEyLjA1QzkuNDMzMDMgMTIuMDUgMTEgMTAuNDgzIDExIDguNTVWNy45MDAwM0gxMi41QzEyLjcyMDkgNy45MDAwMyAxMi45IDcuNzIwOTQgMTIuOSA3LjUwMDAzQzEyLjkgNy4yNzkxMiAxMi43MjA5IDcuMTAwMDMgMTIuNSA3LjEwMDAzSDExVjMuMjVDMTEgMi45NzM4NiAxMC43NzYyIDIuNzUgMTAuNSAyLjc1QzEwLjIyMzkgMi43NSAxMCAyLjk3Mzg2IDEwIDMuMjVWNy4xMDAwM0g1LjAwMDAzVjMuMjVaTTUuMDAwMDMgNy45MDAwM1Y4LjU1QzUuMDAwMDMgOS45MzA3MSA2LjExOTMyIDExLjA1IDcuNTAwMDMgMTEuMDVDOC44ODA3NCAxMS4wNSAxMCA5LjkzMDcxIDEwIDguNTVWNy45MDAwM0g1LjAwMDAzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sR3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAwQzcuNzc2MTQgMCA4IDAuMjIzODU4IDggMC41VjIuNUM4IDIuNzc2MTQgNy43NzYxNCAzIDcuNSAzQzcuMjIzODYgMyA3IDIuNzc2MTQgNyAyLjVWMC41QzcgMC4yMjM4NTggNy4yMjM4NiAwIDcuNSAwWk0yLjE5NjcgMi4xOTY3QzIuMzkxOTYgMi4wMDE0NCAyLjcwODU0IDIuMDAxNDQgMi45MDM4MSAyLjE5NjdMNC4zMTgwMiAzLjYxMDkxQzQuNTEzMjggMy44MDYxNyA0LjUxMzI4IDQuMTIyNzYgNC4zMTgwMiA0LjMxODAyQzQuMTIyNzYgNC41MTMyOCAzLjgwNjE3IDQuNTEzMjggMy42MTA5MSA0LjMxODAyTDIuMTk2NyAyLjkwMzgxQzIuMDAxNDQgMi43MDg1NCAyLjAwMTQ0IDIuMzkxOTYgMi4xOTY3IDIuMTk2N1pNMC41IDdDMC4yMjM4NTggNyAwIDcuMjIzODYgMCA3LjVDMCA3Ljc3NjE0IDAuMjIzODU4IDggMC41IDhIMi41QzIuNzc2MTQgOCAzIDcuNzc2MTQgMyA3LjVDMyA3LjIyMzg2IDIuNzc2MTQgNyAyLjUgN0gwLjVaTTIuMTk2NyAxMi44MDMzQzIuMDAxNDQgMTIuNjA4IDIuMDAxNDQgMTIuMjkxNSAyLjE5NjcgMTIuMDk2MkwzLjYxMDkxIDEwLjY4MkMzLjgwNjE3IDEwLjQ4NjcgNC4xMjI3NiAxMC40ODY3IDQuMzE4MDIgMTAuNjgyQzQuNTEzMjggMTAuODc3MiA0LjUxMzI4IDExLjE5MzggNC4zMTgwMiAxMS4zODkxTDIuOTAzODEgMTIuODAzM0MyLjcwODU0IDEyLjk5ODYgMi4zOTE5NiAxMi45OTg2IDIuMTk2NyAxMi44MDMzWk0xMi41IDdDMTIuMjIzOSA3IDEyIDcuMjIzODYgMTIgNy41QzEyIDcuNzc2MTQgMTIuMjIzOSA4IDEyLjUgOEgxNC41QzE0Ljc3NjEgOCAxNSA3Ljc3NjE0IDE1IDcuNUMxNSA3LjIyMzg2IDE0Ljc3NjEgNyAxNC41IDdIMTIuNVpNMTAuNjgyIDQuMzE4MDJDMTAuNDg2NyA0LjEyMjc2IDEwLjQ4NjcgMy44MDYxNyAxMC42ODIgMy42MTA5MUwxMi4wOTYyIDIuMTk2N0MxMi4yOTE1IDIuMDAxNDQgMTIuNjA4IDIuMDAxNDQgMTIuODAzMyAyLjE5NjdDMTIuOTk4NiAyLjM5MTk2IDEyLjk5ODYgMi43MDg1NCAxMi44MDMzIDIuOTAzODFMMTEuMzg5MSA0LjMxODAyQzExLjE5MzggNC41MTMyOCAxMC44NzcyIDQuNTEzMjggMTAuNjgyIDQuMzE4MDJaTTggMTIuNUM4IDEyLjIyMzkgNy43NzYxNCAxMiA3LjUgMTJDNy4yMjM4NiAxMiA3IDEyLjIyMzkgNyAxMi41VjE0LjVDNyAxNC43NzYxIDcuMjIzODYgMTUgNy41IDE1QzcuNzc2MTQgMTUgOCAxNC43NzYxIDggMTQuNVYxMi41Wk0xMC42ODIgMTAuNjgyQzEwLjg3NzIgMTAuNDg2NyAxMS4xOTM4IDEwLjQ4NjcgMTEuMzg5MSAxMC42ODJMMTIuODAzMyAxMi4wOTYyQzEyLjk5ODYgMTIuMjkxNSAxMi45OTg2IDEyLjYwOCAxMi44MDMzIDEyLjgwMzNDMTIuNjA4IDEyLjk5ODYgMTIuMjkxNSAxMi45OTg2IDEyLjA5NjIgMTIuODAzM0wxMC42ODIgMTEuMzg5MUMxMC40ODY3IDExLjE5MzggMTAuNDg2NyAxMC44NzcyIDEwLjY4MiAxMC42ODJaTTUuNSA3LjVDNS41IDYuMzk1NDMgNi4zOTU0MyA1LjUgNy41IDUuNUM4LjYwNDU3IDUuNSA5LjUgNi4zOTU0MyA5LjUgNy41QzkuNSA4LjYwNDU3IDguNjA0NTcgOS41IDcuNSA5LjVDNi4zOTU0MyA5LjUgNS41IDguNjA0NTcgNS41IDcuNVpNNy41IDQuNUM1Ljg0MzE1IDQuNSA0LjUgNS44NDMxNSA0LjUgNy41QzQuNSA5LjE1Njg1IDUuODQzMTUgMTAuNSA3LjUgMTAuNUM5LjE1Njg1IDEwLjUgMTAuNSA5LjE1Njg1IDEwLjUgNy41QzEwLjUgNS44NDMxNSA5LjE1Njg1IDQuNSA3LjUgNC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwLjUgNEM4LjU2NyA0IDcgNS41NjcgNyA3LjVDNyA5LjQzMyA4LjU2NyAxMSAxMC41IDExQzEyLjQzMyAxMSAxNCA5LjQzMyAxNCA3LjVDMTQgNS41NjcgMTIuNDMzIDQgMTAuNSA0Wk03LjY3MTMzIDExQzYuNjUxODMgMTAuMTc1IDYgOC45MTM2MyA2IDcuNUM2IDYuMDg2MzcgNi42NTE4MyA0LjgyNDk4IDcuNjcxMzMgNEg0LjVDMi41NjcgNCAxIDUuNTY3IDEgNy41QzEgOS40MzMgMi41NjcgMTEgNC41IDExSDcuNjcxMzNaTTAgNy41QzAgNS4wMTQ3MiAyLjAxNDcyIDMgNC41IDNIMTAuNUMxMi45ODUzIDMgMTUgNS4wMTQ3MiAxNSA3LjVDMTUgOS45ODUyOCAxMi45ODUzIDEyIDEwLjUgMTJINC41QzIuMDE0NzIgMTIgMCA5Ljk4NTI4IDAgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuOTAzMjEgNy4yOTY3N0MxLjkwMzIxIDEwLjM0MSA0LjExMDQxIDEyLjQxNDcgNi41ODg5MyAxMi44NDM5QzYuODcyNTUgMTIuODkzIDcuMDYyNjYgMTMuMTYyNyA3LjAxMzU1IDEzLjQ0NjRDNi45NjQ0NCAxMy43MyA2LjY5NDcxIDEzLjkyMDEgNi40MTEwOSAxMy44NzFDMy40OTk0MiAxMy4zNjY4IDAuODYwODQgMTAuOTEyNyAwLjg2MDg0IDcuMjk2NzdDMC44NjA4MzkgNS43NjAwOSAxLjU1OTk2IDQuNTUyNDUgMi4zNzYzOSAzLjYzMzc3QzIuOTYxMjQgMi45NzU2OCAzLjYzMDM0IDIuNDQxMzUgNC4xNjg0NiAyLjAzMjAyTDIuNTMyMDUgMi4wMzIwMkMyLjI1NTkxIDIuMDMyMDIgMi4wMzIwNSAxLjgwODE2IDIuMDMyMDUgMS41MzIwMkMyLjAzMjA1IDEuMjU1ODggMi4yNTU5MSAxLjAzMjAyIDIuNTMyMDUgMS4wMzIwMkw1LjUzMjA1IDEuMDMyMDJDNS44MDgxOSAxLjAzMjAyIDYuMDMyMDUgMS4yNTU4OCA2LjAzMjA1IDEuNTMyMDJMNi4wMzIwNSA0LjUzMjAyQzYuMDMyMDUgNC44MDgxNiA1LjgwODE5IDUuMDMyMDIgNS41MzIwNSA1LjAzMjAyQzUuMjU1OTEgNS4wMzIwMiA1LjAzMjA1IDQuODA4MTYgNS4wMzIwNSA0LjUzMjAyTDUuMDMyMDUgMi42ODY0NUw1LjAzMDU0IDIuNjg3NTlMNS4wMzA0NSAyLjY4NzY2TDUuMDMwNDQgMi42ODc2N0w1LjAzMDQzIDIuNjg3NjdDNC40NTg5NiAzLjExODY4IDMuNzYwNTkgMy42NDUzOCAzLjE1NTU0IDQuMzI2MkMyLjQ0MTAyIDUuMTMwMjEgMS45MDMyMSA2LjEwMTU0IDEuOTAzMjEgNy4yOTY3N1pNMTMuMDEwOSA3LjcwMzIxQzEzLjAxMDkgNC42OTExNSAxMC44NTA1IDIuNjI5NiA4LjQwMzg0IDIuMTcwMjlDOC4xMjA5MyAyLjExNzE4IDcuOTM0NjUgMS44NDQ3OSA3Ljk4Nzc2IDEuNTYxODhDOC4wNDA4NyAxLjI3ODk4IDguMzEzMjYgMS4wOTI3IDguNTk2MTYgMS4xNDU4MUMxMS40NzA0IDEuNjg1NDEgMTQuMDUzMiA0LjEyNjA1IDE0LjA1MzIgNy43MDMyMUMxNC4wNTMyIDkuMjM5ODggMTMuMzU0MSAxMC40NDc1IDEyLjUzNzcgMTEuMzY2MkMxMS45NTI4IDEyLjAyNDMgMTEuMjgzNyAxMi41NTg2IDEwLjc0NTYgMTIuOTY4TDEyLjM4MjEgMTIuOTY4QzEyLjY1ODIgMTIuOTY4IDEyLjg4MjEgMTMuMTkxOCAxMi44ODIxIDEzLjQ2OEMxMi44ODIxIDEzLjc0NDEgMTIuNjU4MiAxMy45NjggMTIuMzgyMSAxMy45NjhMOS4zODIwNSAxMy45NjhDOS4xMDU5MSAxMy45NjggOC44ODIwNSAxMy43NDQxIDguODgyMDUgMTMuNDY4TDguODgyMDUgMTAuNDY4QzguODgyMDUgMTAuMTkxOCA5LjEwNTkxIDkuOTY3OTYgOS4zODIwNSA5Ljk2Nzk2QzkuNjU4MTkgOS45Njc5NiA5Ljg4MjA1IDEwLjE5MTggOS44ODIwNSAxMC40NjhMOS44ODIwNSAxMi4zMTM1TDkuODgzNjIgMTIuMzEyM0MxMC40NTUxIDExLjg4MTMgMTEuMTUzNSAxMS4zNTQ2IDExLjc1ODUgMTAuNjczOEMxMi40NzMxIDkuODY5NzYgMTMuMDEwOSA4Ljg5ODQ0IDEzLjAxMDkgNy43MDMyMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEtyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04IDJIMTIuNUMxMi43NzYxIDIgMTMgMi4yMjM4NiAxMyAyLjVWNUg4VjJaTTcgNVYySDIuNUMyLjIyMzg2IDIgMiAyLjIyMzg2IDIgMi41VjVIN1pNMiA2VjlIN1Y2SDJaTTggNkgxM1Y5SDhWNlpNOCAxMEgxM1YxMi41QzEzIDEyLjc3NjEgMTIuNzc2MSAxMyAxMi41IDEzSDhWMTBaTTIgMTIuNVYxMEg3VjEzSDIuNUMyLjIyMzg2IDEzIDIgMTIuNzc2MSAyIDEyLjVaTTEgMi41QzEgMS42NzE1NyAxLjY3MTU3IDEgMi41IDFIMTIuNUMxMy4zMjg0IDEgMTQgMS42NzE1NyAxNCAyLjVWMTIuNUMxNCAxMy4zMjg0IDEzLjMyODQgMTQgMTIuNSAxNEgyLjVDMS42NzE1NyAxNCAxIDEzLjMyODQgMSAxMi41VjIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFhyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjkwMDAyNCA3LjUwMDAyQzAuOTAwMDI0IDMuODU0OTUgMy44NTQ5NSAwLjkwMDAyNCA3LjUwMDAyIDAuOTAwMDI0QzExLjE0NTEgMC45MDAwMjQgMTQuMSAzLjg1NDk1IDE0LjEgNy41MDAwMkMxNC4xIDExLjE0NTEgMTEuMTQ1MSAxNC4xIDcuNTAwMDIgMTQuMUMzLjg1NDk1IDE0LjEgMC45MDAwMjQgMTEuMTQ1MSAwLjkwMDAyNCA3LjUwMDAyWk03LjUwMDAyIDEuODAwMDJDNC4zNTIwMSAxLjgwMDAyIDEuODAwMDIgNC4zNTIwMSAxLjgwMDAyIDcuNTAwMDJDMS44MDAwMiAxMC42NDggNC4zNTIwMSAxMy4yIDcuNTAwMDIgMTMuMkMxMC42NDggMTMuMiAxMy4yIDEwLjY0OCAxMy4yIDcuNTAwMDJDMTMuMiA0LjM1MjAxIDEwLjY0OCAxLjgwMDAyIDcuNTAwMDIgMS44MDAwMlpNMy4wNzUwNCA3LjUwMDAyQzMuMDc1MDQgNS4wNTYxNyA1LjA1NjE4IDMuMDc1MDIgNy41MDAwNCAzLjA3NTAyQzkuOTQzODggMy4wNzUwMiAxMS45MjUgNS4wNTYxNyAxMS45MjUgNy41MDAwMkMxMS45MjUgOS45NDM4NiA5Ljk0Mzg4IDExLjkyNSA3LjUwMDA0IDExLjkyNUM1LjA1NjE4IDExLjkyNSAzLjA3NTA0IDkuOTQzODYgMy4wNzUwNCA3LjUwMDAyWk03LjUwMDA0IDMuOTI1MDJDNS41MjU2MiAzLjkyNTAyIDMuOTI1MDQgNS41MjU2MSAzLjkyNTA0IDcuNTAwMDJDMy45MjUwNCA5LjQ3NDQyIDUuNTI1NjMgMTEuMDc1IDcuNTAwMDQgMTEuMDc1QzkuNDc0NDQgMTEuMDc1IDExLjA3NSA5LjQ3NDQyIDExLjA3NSA3LjUwMDAyQzExLjA3NSA1LjUyNTYxIDkuNDc0NDQgMy45MjUwMiA3LjUwMDA0IDMuOTI1MDJaTTcuNTAwMDQgNS4yNTAwMkM2LjI1NzQgNS4yNTAwMiA1LjI1MDA0IDYuMjU3MzkgNS4yNTAwNCA3LjUwMDAyQzUuMjUwMDQgOC43NDI2NiA2LjI1NzQgOS43NTAwMiA3LjUwMDA0IDkuNzUwMDJDOC43NDI2NyA5Ljc1MDAyIDkuNzUwMDQgOC43NDI2NiA5Ljc1MDA0IDcuNTAwMDJDOS43NTAwNCA2LjI1NzM4IDguNzQyNjcgNS4yNTAwMiA3LjUwMDA0IDUuMjUwMDJaTTYuMDUwMDQgNy41MDAwMkM2LjA1MDA0IDYuNjk5MjEgNi42OTkyMyA2LjA1MDAyIDcuNTAwMDQgNi4wNTAwMkM4LjMwMDg0IDYuMDUwMDIgOC45NTAwNCA2LjY5OTIxIDguOTUwMDQgNy41MDAwMkM4Ljk1MDA0IDguMzAwODMgOC4zMDA4NCA4Ljk1MDAyIDcuNTAwMDQgOC45NTAwMkM2LjY5OTIzIDguOTUwMDIgNi4wNTAwNCA4LjMwMDgzIDYuMDUwMDQgNy41MDAwMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFFyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjk0OTkzIDIuOTUwMDJMMy45NDk5MyA0LjQ5OTk4QzMuOTQ5OTMgNC43NDg1MSAzLjc0ODQ1IDQuOTQ5OTggMy40OTk5MyA0Ljk0OTk4QzMuMjUxNCA0Ljk0OTk4IDMuMDQ5OTMgNC43NDg1MSAzLjA0OTkzIDQuNDk5OThWMi41MDAwNEMzLjA0OTkzIDIuNDUyNDYgMy4wNTczMSAyLjQwNjYxIDMuMDcwOTkgMi4zNjM1N0MzLjEyODc4IDIuMTgxNzUgMy4yOTg5NyAyLjA1MDAyIDMuNDk5OTMgMi4wNTAwMkgxMS40OTk5QzExLjY1NTMgMi4wNTAwMiAxMS43OTIyIDIuMTI4NzIgMTEuODczMSAyLjI0ODQyQzExLjkyMTYgMi4zMjAyNCAxMS45NDk5IDIuNDA2ODIgMTEuOTQ5OSAyLjUwMDAyTDExLjk0OTkgMi41MDAwNFY0LjQ5OTk4QzExLjk0OTkgNC43NDg1MSAxMS43NDg1IDQuOTQ5OTggMTEuNDk5OSA0Ljk0OTk4QzExLjI1MTQgNC45NDk5OCAxMS4wNDk5IDQuNzQ4NTEgMTEuMDQ5OSA0LjQ5OTk4VjIuOTUwMDJIOC4wNDk5M1YxMi4wNUg5LjI1NDI4QzkuNTAyODEgMTIuMDUgOS43MDQyOCAxMi4yNTE1IDkuNzA0MjggMTIuNUM5LjcwNDI4IDEyLjc0ODYgOS41MDI4MSAxMi45NSA5LjI1NDI4IDEyLjk1SDUuNzU0MjhDNS41MDU3NSAxMi45NSA1LjMwNDI4IDEyLjc0ODYgNS4zMDQyOCAxMi41QzUuMzA0MjggMTIuMjUxNSA1LjUwNTc1IDEyLjA1IDUuNzU0MjggMTIuMDVINi45NDk5M1YyLjk1MDAySDMuOTQ5OTNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxKcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiA0LjVDMiA0LjIyMzg2IDIuMjIzODYgNCAyLjUgNEgxMi41QzEyLjc3NjEgNCAxMyA0LjIyMzg2IDEzIDQuNUMxMyA0Ljc3NjE0IDEyLjc3NjEgNSAxMi41IDVIMi41QzIuMjIzODYgNSAyIDQuNzc2MTQgMiA0LjVaTTQgNy41QzQgNy4yMjM4NiA0LjIyMzg2IDcgNC41IDdIMTAuNUMxMC43NzYxIDcgMTEgNy4yMjM4NiAxMSA3LjVDMTEgNy43NzYxNCAxMC43NzYxIDggMTAuNSA4SDQuNUM0LjIyMzg2IDggNCA3Ljc3NjE0IDQgNy41Wk0zIDEwLjVDMyAxMC4yMjM5IDMuMjIzODYgMTAgMy41IDEwSDExLjVDMTEuNzc2MSAxMCAxMiAxMC4yMjM5IDEyIDEwLjVDMTIgMTAuNzc2MSAxMS43NzYxIDExIDExLjUgMTFIMy41QzMuMjIzODYgMTEgMyAxMC43NzYxIDMgMTAuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGVvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjUgNEMyLjIyMzg2IDQgMiA0LjIyMzg2IDIgNC41QzIgNC43NzYxNCAyLjIyMzg2IDUgMi41IDVIMTIuNUMxMi43NzYxIDUgMTMgNC43NzYxNCAxMyA0LjVDMTMgNC4yMjM4NiAxMi43NzYxIDQgMTIuNSA0SDIuNVpNMiA3LjVDMiA3LjIyMzg2IDIuMjIzODYgNyAyLjUgN0gxMi41QzEyLjc3NjEgNyAxMyA3LjIyMzg2IDEzIDcuNUMxMyA3Ljc3NjE0IDEyLjc3NjEgOCAxMi41IDhIMi41QzIuMjIzODYgOCAyIDcuNzc2MTQgMiA3LjVaTTIgMTAuNUMyIDEwLjIyMzkgMi4yMjM4NiAxMCAyLjUgMTBIMTIuNUMxMi43NzYxIDEwIDEzIDEwLjIyMzkgMTMgMTAuNUMxMyAxMC43NzYxIDEyLjc3NjEgMTEgMTIuNSAxMUgyLjVDMi4yMjM4NiAxMSAyIDEwLjc3NjEgMiAxMC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgNC41QzIgNC4yMjM4NiAyLjIyMzg2IDQgMi41IDRIMTIuNUMxMi43NzYxIDQgMTMgNC4yMjM4NiAxMyA0LjVDMTMgNC43NzYxNCAxMi43NzYxIDUgMTIuNSA1SDIuNUMyLjIyMzg2IDUgMiA0Ljc3NjE0IDIgNC41Wk0yIDcuNUMyIDcuMjIzODYgMi4yMjM4NiA3IDIuNSA3SDcuNUM3Ljc3NjE0IDcgOCA3LjIyMzg2IDggNy41QzggNy43NzYxNCA3Ljc3NjE0IDggNy41IDhIMi41QzIuMjIzODYgOCAyIDcuNzc2MTQgMiA3LjVaTTIgMTAuNUMyIDEwLjIyMzkgMi4yMjM4NiAxMCAyLjUgMTBIMTAuNUMxMC43NzYxIDEwIDExIDEwLjIyMzkgMTEgMTAuNUMxMSAxMC43NzYxIDEwLjc3NjEgMTEgMTAuNSAxMUgyLjVDMi4yMjM4NiAxMSAyIDEwLjc3NjEgMiAxMC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbm89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgNC41QzIgNC4yMjM4NiAyLjIyMzg2IDQgMi41IDRIMTIuNUMxMi43NzYxIDQgMTMgNC4yMjM4NiAxMyA0LjVDMTMgNC43NzYxNCAxMi43NzYxIDUgMTIuNSA1SDIuNUMyLjIyMzg2IDUgMiA0Ljc3NjE0IDIgNC41Wk03IDcuNUM3IDcuMjIzODYgNy4yMjM4NiA3IDcuNSA3SDEyLjVDMTIuNzc2MSA3IDEzIDcuMjIzODYgMTMgNy41QzEzIDcuNzc2MTQgMTIuNzc2MSA4IDEyLjUgOEg3LjVDNy4yMjM4NiA4IDcgNy43NzYxNCA3IDcuNVpNNCAxMC41QzQgMTAuMjIzOSA0LjIyMzg2IDEwIDQuNSAxMEgxMi41QzEyLjc3NjEgMTAgMTMgMTAuMjIzOSAxMyAxMC41QzEzIDEwLjc3NjEgMTIuNzc2MSAxMSAxMi41IDExSDQuNUM0LjIyMzg2IDExIDQgMTAuNzc2MSA0IDEwLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxybz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMzUzNiAyLjM1MzU1QzEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDEuODQxNzEgMTMuMzUzNiAxLjY0NjQ1QzEzLjE1ODMgMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTIuNjQ2NCAxLjY0NjQ1TDExLjkyOTEgMi4zNjM4M0MxMS45MTU5IDIuMzIyNDYgMTEuODk3IDIuMjgzNjggMTEuODczMiAyLjI0ODQ1QzExLjc5MjMgMi4xMjg3NSAxMS42NTU0IDIuMDUwMDUgMTEuNTAwMSAyLjA1MDA1SDMuNTAwMDVDMy4yOTkwOSAyLjA1MDA1IDMuMTI4OSAyLjE4MTc4IDMuMDcxMTEgMi4zNjM2QzMuMDU3NDMgMi40MDY2NSAzLjA1MDA1IDIuNDUyNDkgMy4wNTAwNSAyLjUwMDA3VjQuNTAwMDFDMy4wNTAwNSA0Ljc0ODU0IDMuMjUxNTIgNC45NTAwMSAzLjUwMDA1IDQuOTUwMDFDMy43NDg1OCA0Ljk1MDAxIDMuOTUwMDUgNC43NDg1NCAzLjk1MDA1IDQuNTAwMDFWMi45NTAwNUg2Ljk1MDA2VjcuMzQyODRMMS42NDY0NSAxMi42NDY0QzEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEzLjE1ODMgMS42NDY0NSAxMy4zNTM2QzEuODQxNzEgMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMi4zNTM1NSAxMy4zNTM2TDYuOTUwMDYgOC43NTcwNVYxMi4wNTAxSDUuNzU0NEM1LjUwNTg3IDEyLjA1MDEgNS4zMDQ0IDEyLjI1MTUgNS4zMDQ0IDEyLjUwMDFDNS4zMDQ0IDEyLjc0ODYgNS41MDU4NyAxMi45NTAxIDUuNzU0NCAxMi45NTAxSDkuMjU0NEM5LjUwMjkzIDEyLjk1MDEgOS43MDQ0IDEyLjc0ODYgOS43MDQ0IDEyLjUwMDFDOS43MDQ0IDEyLjI1MTUgOS41MDI5MyAxMi4wNTAxIDkuMjU0NCAxMi4wNTAxSDguMDUwMDZWNy42NTcwNUwxMy4zNTM2IDIuMzUzNTVaTTguMDUwMDYgNi4yNDI4NEwxMS4wNTAxIDMuMjQyODNWMi45NTAwNUg4LjA1MDA2VjYuMjQyODRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxvbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSAzLjVDNSAzLjIyMzg2IDUuMjIzODYgMyA1LjUgM0g5LjVDOS43NzYxNCAzIDEwIDMuMjIzODYgMTAgMy41VjZIMTIuNUMxMi42ODczIDYgMTIuODU4OSA2LjEwNDY3IDEyLjk0NDYgNi4yNzEyMUMxMy4wMzAzIDYuNDM3NzQgMTMuMDE1NyA2LjYzODIxIDEyLjkwNjkgNi43OTA2Mkw3LjkwNjg3IDEzLjc5MDZDNy44MTMwMSAxMy45MjIgNy42NjE0OCAxNCA3LjUgMTRDNy4zMzg1MyAxNCA3LjE4Njk5IDEzLjkyMiA3LjA5MzE0IDEzLjc5MDZMMi4wOTMxNCA2Ljc5MDYyQzEuOTg0MjcgNi42MzgyMSAxLjk2OTcyIDYuNDM3NzQgMi4wNTU0MiA2LjI3MTIxQzIuMTQxMTIgNi4xMDQ2NyAyLjMxMjcxIDYgMi41IDZINVYzLjVaTTYgNFY2LjVDNiA2Ljc3NjE0IDUuNzc2MTQgNyA1LjUgN0gzLjQ3MTZMNy41IDEyLjYzOThMMTEuNTI4NCA3SDkuNUM5LjIyMzg2IDcgOSA2Ljc3NjE0IDkgNi41VjRINlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGFvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDcuNUMxIDcuNjYxNDggMS4wNzc5OCA3LjgxMzAxIDEuMjA5MzggNy45MDY4N0w4LjIwOTM4IDEyLjkwNjlDOC4zNjE3OSAxMy4wMTU3IDguNTYyMjYgMTMuMDMwMyA4LjcyODc5IDEyLjk0NDZDOC44OTUzMyAxMi44NTg5IDkgMTIuNjg3MyA5IDEyLjVMOSAxMEwxMS41IDEwQzExLjc3NjEgMTAgMTIgOS43NzYxNCAxMiA5LjVMMTIgNS41QzEyIDUuMjIzODYgMTEuNzc2MSA1IDExLjUgNUw5IDVMOSAyLjVDOSAyLjMxMjcxIDguODk1MzMgMi4xNDExMiA4LjcyODc5IDIuMDU1NDJDOC41NjIyNiAxLjk2OTcyIDguMzYxNzkgMS45ODQyNyA4LjIwOTM4IDIuMDkzMTNMMS4yMDkzOCA3LjA5MzE0QzEuMDc3OTggNy4xODY5OSAxIDcuMzM4NTMgMSA3LjVaTTggMy40NzE2TDggNS41QzggNS43NzYxNCA4LjIyMzg2IDYgOC41IDZMMTEgNkwxMSA5TDguNSA5QzguMjIzODYgOSA4IDkuMjIzODYgOCA5LjVMOCAxMS41Mjg0TDIuMzYwMjMgNy41TDggMy40NzE2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0IDcuNUMxNCA3LjY2MTQ4IDEzLjkyMiA3LjgxMzAxIDEzLjc5MDYgNy45MDY4N0w2Ljc5MDYyIDEyLjkwNjlDNi42MzgyMSAxMy4wMTU3IDYuNDM3NzQgMTMuMDMwMyA2LjI3MTIxIDEyLjk0NDZDNi4xMDQ2NyAxMi44NTg5IDYgMTIuNjg3MyA2IDEyLjVMNiAxMEwzLjUgMTBDMy4yMjM4NiAxMCAzIDkuNzc2MTQgMyA5LjVMMyA1LjVDMyA1LjIyMzg2IDMuMjIzODYgNSAzLjUgNUw2IDVMNiAyLjVDNiAyLjMxMjcxIDYuMTA0NjcgMi4xNDExMiA2LjI3MTIxIDIuMDU1NDJDNi40Mzc3NCAxLjk2OTcyIDYuNjM4MjEgMS45ODQyNyA2Ljc5MDYyIDIuMDkzMTNMMTMuNzkwNiA3LjA5MzE0QzEzLjkyMiA3LjE4Njk5IDE0IDcuMzM4NTMgMTQgNy41Wk03IDMuNDcxNkw3IDUuNUM3IDUuNzc2MTQgNi43NzYxNCA2IDYuNSA2TDQgNkw0IDlMNi41IDlDNi43NzYxNCA5IDcgOS4yMjM4NiA3IDkuNUw3IDExLjUyODRMMTIuNjM5OCA3LjVMNyAzLjQ3MTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxsbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDFDNy42NjE0OCAxIDcuODEzMDEgMS4wNzc5OCA3LjkwNjg3IDEuMjA5MzhMMTIuOTA2OSA4LjIwOTM4QzEzLjAxNTcgOC4zNjE3OSAxMy4wMzAzIDguNTYyMjYgMTIuOTQ0NiA4LjcyODc5QzEyLjg1ODkgOC44OTUzMyAxMi42ODczIDkgMTIuNSA5SDEwVjExLjVDMTAgMTEuNzc2MSA5Ljc3NjE0IDEyIDkuNSAxMkg1LjVDNS4yMjM4NiAxMiA1IDExLjc3NjEgNSAxMS41VjlIMi41QzIuMzEyNzEgOSAyLjE0MTEyIDguODk1MzMgMi4wNTU0MiA4LjcyODc5QzEuOTY5NzIgOC41NjIyNiAxLjk4NDI3IDguMzYxNzkgMi4wOTMxNCA4LjIwOTM4TDcuMDkzMTQgMS4yMDkzOEM3LjE4Njk5IDEuMDc3OTggNy4zMzg1MyAxIDcuNSAxWk0zLjQ3MTYgOEg1LjVDNS43NzYxNCA4IDYgOC4yMjM4NiA2IDguNVYxMUg5VjguNUM5IDguMjIzODYgOS4yMjM4NiA4IDkuNSA4SDExLjUyODRMNy41IDIuMzYwMjNMMy40NzE2IDhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxjbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5OCAwLjg0OTk3NkM3LjIyMzgzIDAuODQ5OTc2IDYuOTk5OTggMS4wNzM4MyA2Ljk5OTk4IDEuMzQ5OThWMy41MjIzNEM2Ljk5OTk4IDMuNzk4NDggNy4yMjM4MyA0LjAyMjM0IDcuNDk5OTggNC4wMjIzNEM3Ljc3NjEyIDQuMDIyMzQgNy45OTk5OCAzLjc5ODQ4IDcuOTk5OTggMy41MjIzNFYxLjg3MThDMTAuODg2MiAyLjEyNDg4IDEzLjE1IDQuNTQ4MDYgMTMuMTUgNy40OTk5OEMxMy4xNSAxMC42MjA0IDEwLjYyMDQgMTMuMTUgNy40OTk5OCAxMy4xNUM0LjM3OTU3IDEzLjE1IDEuODQ5OTggMTAuNjIwNCAxLjg0OTk4IDcuNDk5OThDMS44NDk5OCA2LjEwNjEyIDIuMzU0MDcgNC44MzEyOCAzLjE5MDQ5IDMuODQ1OUMzLjM2OTE5IDMuNjM1MzggMy4zNDMzOSAzLjMxOTg1IDMuMTMyODYgMy4xNDExNUMyLjkyMjM0IDIuOTYyNDUgMi42MDY4MSAyLjk4ODI1IDIuNDI4MTEgMy4xOTg3N0MxLjQ0NDA1IDQuMzU4MDggMC44NDk5NzYgNS44NjAyOSAwLjg0OTk3NiA3LjQ5OTk4QzAuODQ5OTc2IDExLjE3MjcgMy44MjcyOCAxNC4xNSA3LjQ5OTk4IDE0LjE1QzExLjE3MjcgMTQuMTUgMTQuMTUgMTEuMTcyNyAxNC4xNSA3LjQ5OTk4QzE0LjE1IDMuODI3MjggMTEuMTcyNyAwLjg0OTk3NiA3LjQ5OTk4IDAuODQ5OTc2Wk02Ljc0MDQ5IDguMDgwNzJMNC4yMjM2MyA0LjU3MjM3QzQuMTUyMzEgNC40NzI5NSA0LjE2MzQ2IDQuMzM2NTIgNC4yNDk5OCA0LjI1QzQuMzM2NDkgNC4xNjM0OCA0LjQ3MjkzIDQuMTUyMzMgNC41NzIzNCA0LjIyMzY1TDguMDgwNjkgNi43NDA1MUM4LjU2MjI3IDcuMDg1OTkgOC42MTkwNiA3Ljc4MDkxIDguMTk5OTggOC4yQzcuNzgwODkgOC42MTkwOSA3LjA4NTk3IDguNTYyMjkgNi43NDA0OSA4LjA4MDcyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sc289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNSAyQzMuMTE5MjkgMiAyIDMuMTE5MjkgMiA0LjVDMiA1Ljg4MDcyIDMuMTE5MjkgNyA0LjUgN0M1Ljg4MDcyIDcgNyA1Ljg4MDcyIDcgNC41QzcgMy4xMTkyOSA1Ljg4MDcyIDIgNC41IDJaTTMgNC41QzMgMy42NzE1NyAzLjY3MTU3IDMgNC41IDNDNS4zMjg0MyAzIDYgMy42NzE1NyA2IDQuNUM2IDUuMzI4NDMgNS4zMjg0MyA2IDQuNSA2QzMuNjcxNTcgNiAzIDUuMzI4NDMgMyA0LjVaTTEwLjUgMkM5LjExOTI5IDIgOCAzLjExOTI5IDggNC41QzggNS44ODA3MiA5LjExOTI5IDcgMTAuNSA3QzExLjg4MDcgNyAxMyA1Ljg4MDcyIDEzIDQuNUMxMyAzLjExOTI5IDExLjg4MDcgMiAxMC41IDJaTTkgNC41QzkgMy42NzE1NyA5LjY3MTU3IDMgMTAuNSAzQzExLjMyODQgMyAxMiAzLjY3MTU3IDEyIDQuNUMxMiA1LjMyODQzIDExLjMyODQgNiAxMC41IDZDOS42NzE1NyA2IDkgNS4zMjg0MyA5IDQuNVpNMiAxMC41QzIgOS4xMTkyOSAzLjExOTI5IDggNC41IDhDNS44ODA3MiA4IDcgOS4xMTkyOSA3IDEwLjVDNyAxMS44ODA3IDUuODgwNzIgMTMgNC41IDEzQzMuMTE5MjkgMTMgMiAxMS44ODA3IDIgMTAuNVpNNC41IDlDMy42NzE1NyA5IDMgOS42NzE1NyAzIDEwLjVDMyAxMS4zMjg0IDMuNjcxNTcgMTIgNC41IDEyQzUuMzI4NDMgMTIgNiAxMS4zMjg0IDYgMTAuNUM2IDkuNjcxNTcgNS4zMjg0MyA5IDQuNSA5Wk0xMC41IDhDOS4xMTkyOSA4IDggOS4xMTkyOSA4IDEwLjVDOCAxMS44ODA3IDkuMTE5MjkgMTMgMTAuNSAxM0MxMS44ODA3IDEzIDEzIDExLjg4MDcgMTMgMTAuNUMxMyA5LjExOTI5IDExLjg4MDcgOCAxMC41IDhaTTkgMTAuNUM5IDkuNjcxNTcgOS42NzE1NyA5IDEwLjUgOUMxMS4zMjg0IDkgMTIgOS42NzE1NyAxMiAxMC41QzEyIDExLjMyODQgMTEuMzI4NCAxMiAxMC41IDEyQzkuNjcxNTcgMTIgOSAxMS4zMjg0IDkgMTAuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHVvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy4wNTAyIDIuNzQ5ODlDMTMuMDUwMiAyLjQ0NjEzIDEyLjgwNCAyLjE5OTg5IDEyLjUwMDIgMi4xOTk4OUMxMi4xOTY1IDIuMTk5ODkgMTEuOTUwMiAyLjQ0NjEzIDExLjk1MDIgMi43NDk4OVY3LjI4MjVDMTEuOTA0NiA3LjE4ODAyIDExLjgyOTUgNy4xMDg1MSAxMS43MzM0IDcuMDU3NzZMMi43MzMzOCAyLjMwNzc2QzIuNTc4NCAyLjIyNTk2IDIuMzkxOSAyLjIzMTI3IDIuMjQxODIgMi4zMjE3NkMyLjA5MTc1IDIuNDEyMjUgMiAyLjU3NDcxIDIgMi43NDk5NVYxMi4yNUMyIDEyLjQyNTIgMi4wOTE3NSAxMi41ODc3IDIuMjQxODIgMTIuNjc4MUMyLjM5MTkgMTIuNzY4NiAyLjU3ODQgMTIuNzczOSAyLjczMzM4IDEyLjY5MjFMMTEuNzMzNCA3Ljk0MjE0QzExLjgyOTUgNy44OTEzOSAxMS45MDQ2IDcuODExODggMTEuOTUwMiA3LjcxNzRWMTIuMjQ5OUMxMS45NTAyIDEyLjU1MzYgMTIuMTk2NSAxMi43OTk5IDEyLjUwMDIgMTIuNzk5OUMxMi44MDQgMTIuNzk5OSAxMy4wNTAyIDEyLjU1MzYgMTMuMDUwMiAxMi4yNDk5VjIuNzQ5ODlaTTMgMTEuNDIwN1YzLjU3OTJMMTAuNDI4OCA3LjQ5OTk1TDMgMTEuNDIwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGZvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjk0OTc2IDIuNzQ5ODlDMS45NDk3NiAyLjQ0NjEzIDIuMTk2IDIuMTk5ODkgMi40OTk3NiAyLjE5OTg5QzIuODAzNTEgMi4xOTk4OSAzLjA0OTc2IDIuNDQ2MTMgMy4wNDk3NiAyLjc0OTg5VjcuMjgyNUMzLjA5NTQgNy4xODgwMiAzLjE3MDQ2IDcuMTA4NTEgMy4yNjY2MiA3LjA1Nzc2TDEyLjI2NjYgMi4zMDc3NkMxMi40MjE2IDIuMjI1OTYgMTIuNjA4MSAyLjIzMTI3IDEyLjc1ODIgMi4zMjE3NkMxMi45MDgzIDIuNDEyMjUgMTMgMi41NzQ3MSAxMyAyLjc0OTk1VjEyLjI1QzEzIDEyLjQyNTIgMTIuOTA4MyAxMi41ODc3IDEyLjc1ODIgMTIuNjc4MUMxMi42MDgxIDEyLjc2ODYgMTIuNDIxNiAxMi43NzM5IDEyLjI2NjYgMTIuNjkyMUwzLjI2NjYyIDcuOTQyMTRDMy4xNzA0NiA3Ljg5MTM5IDMuMDk1NCA3LjgxMTg4IDMuMDQ5NzYgNy43MTc0VjEyLjI0OTlDMy4wNDk3NiAxMi41NTM2IDIuODAzNTEgMTIuNzk5OSAyLjQ5OTc2IDEyLjc5OTlDMi4xOTYgMTIuNzk5OSAxLjk0OTc2IDEyLjU1MzYgMS45NDk3NiAxMi4yNDk5VjIuNzQ5ODlaTTQuNTcxMjIgNy40OTk5NUwxMiAxMS40MjA3VjMuNTc5Mkw0LjU3MTIyIDcuNDk5OTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxwbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMjVcIixkOlwiTTAgMEgzVjNIMFYwWk02IDNIM1Y2SDBWOUgzVjEySDBWMTVIM1YxMkg2VjE1SDlWMTJIMTJWMTVIMTVWMTJIMTJWOUgxNVY2SDEyVjNIMTVWMEgxMlYzSDlWMEg2VjNaTTYgNlYzSDlWNkg2Wk02IDlIM1Y2SDZWOVpNOSA5VjZIMTJWOUg5Wk05IDlINlYxMkg5VjlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxobz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS41IDFDNS4yMjM4NiAxIDUgMS4yMjM4NiA1IDEuNUM1IDEuNzc2MTQgNS4yMjM4NiAyIDUuNSAySDkuNUM5Ljc3NjE0IDIgMTAgMS43NzYxNCAxMCAxLjVDMTAgMS4yMjM4NiA5Ljc3NjE0IDEgOS41IDFINS41Wk0zIDMuNUMzIDMuMjIzODYgMy4yMjM4NiAzIDMuNSAzSDVIMTBIMTEuNUMxMS43NzYxIDMgMTIgMy4yMjM4NiAxMiAzLjVDMTIgMy43NzYxNCAxMS43NzYxIDQgMTEuNSA0SDExVjEyQzExIDEyLjU1MjMgMTAuNTUyMyAxMyAxMCAxM0g1QzQuNDQ3NzIgMTMgNCAxMi41NTIzIDQgMTJWNEwzLjUgNEMzLjIyMzg2IDQgMyAzLjc3NjE0IDMgMy41Wk01IDRIMTBWMTJINVY0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQ289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQgNkgxMUw3LjUgMTAuNUw0IDZaXCIsZmlsbDpufSkpfSx2bz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOSA0TDkgMTFMNC41IDcuNUw5IDRaXCIsZmlsbDpufSkpfSxnbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNiAxMUw2IDRMMTAuNSA3LjVMNiAxMVpcIixmaWxsOm59KSl9LG1vPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00IDlIMTFMNy41IDQuNUw0IDlaXCIsZmlsbDpufSkpfSx3bz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4yMzMzNiA0LjY5NjI5QzcuMjMzMzYgMi45Njg4NCA4LjYzMzM1IDEuNTY4NTcgMTAuMzYgMS41Njg1N0MxMS4zNzM2IDEuNTY4NTcgMTIuMTgzIDIuMDQ4MDQgMTIuNzI1NCAyLjc0Mzg1QzEzLjMwNzkgMi42MjQ2NyAxMy44NTU3IDIuNDA5MTMgMTQuMzUxMyAyLjExNTA4QzE0LjE1NTkgMi43MjU5OCAxMy43NDI0IDMuMjM5NiAxMy4yMDMzIDMuNTY0NjNDMTMuMjAzOCAzLjU2NTY4IDEzLjIwNDIgMy41NjY3NCAxMy4yMDQ3IDMuNTY3NzlDMTMuNzMzNCAzLjUwMzYxIDE0LjIzNjQgMy4zNjMwMiAxNC43MDQ4IDMuMTU1NDZMMTQuNzAzNyAzLjE1NzE1QzE0LjM2NjcgMy42NjE4MyAxMy45NDMxIDQuMTA3MzYgMTMuNDU2MSA0LjQ3MDM0QzEzLjQ4MjMgNC42NDY3MiAxMy40OTU2IDQuODI0MjcgMTMuNDk1NiA1LjAwMDc5QzEzLjQ5NTYgOC42ODcxIDEwLjY4NzMgMTIuOTc0NiA1LjUyMTIyIDEyLjk3NDZDMy45MzkwNiAxMi45NzQ2IDIuNDY1NDQgMTIuNTExIDEuMjI1MDUgMTEuNzE1MkMwLjk5MjYzMiAxMS41NjYxIDAuOTI1MTA4IDExLjI1NjggMS4wNzQyMyAxMS4wMjQ0QzEuMDg3NCAxMS4wMDM4IDEuMTAxODMgMTAuOTg0NiAxLjExNzM0IDEwLjk2NjZDMS4yMDU4MiAxMC44MjAyIDEuMzc0MzggMTAuNzMwOSAxLjU1NTQgMTAuNzUyMkMyLjQ3MDY2IDEwLjg2MDEgMy4zODU2OCAxMC43NDg1IDQuMTkyMTkgMTAuMzk2MkMzLjM5MjI2IDEwLjA0MzQgMi43NzEyOSA5LjM1OTc1IDIuNTAyMDQgOC41MTk3NEMyLjQ1MzU5IDguMzY4NiAyLjQ4ODM1IDguMjAzMTEgMi41OTM1MSA4LjA4NDIyQzIuNTk3MTYgOC4wODAxIDIuNjAwODcgOC4wNzYwNiAyLjYwNDY0IDguMDcyMUMxLjk2MzkxIDcuNTA4MTkgMS41NTk3MyA2LjY4MjA4IDEuNTU5NzMgNS43NjE0M1Y1LjcyNzU5QzEuNTU5NzMgNS41NjgxNCAxLjY0NDExIDUuNDIwNTkgMS43ODE1NSA1LjMzOTc0QzEuODI2NzEgNS4zMTMxNyAxLjg3NTM3IDUuMjk1MTEgMS45MjUzMiA1LjI4NTU4QzEuNzA1NDkgNC44NjE1NCAxLjU4MTE2IDQuMzc5ODQgMS41ODExNiAzLjg2OTU4QzEuNTgxMTYgMy40MDE2NSAxLjU4Mzg0IDIuODExOTIgMS45MTMzMiAyLjI4MDgxQzEuOTg3MTggMi4xNjE3NSAyLjEwNzU4IDIuMDg5MTUgMi4yMzY0IDIuMDcxOTVDMi40MjU4OCAyLjAxMjM3IDIuNjQwODcgMi4wNjk2OSAyLjc3NDA2IDIuMjMzMDJDMy44NjUzNiAzLjU3MTI2IDUuNDQwNjYgNC40OTU4MyA3LjIzMzY2IDQuNzM5NjFMNy4yMzMzNiA0LjY5NjI5Wk01LjUyMTIyIDExLjk3NDZDNC43MzM4NyAxMS45NzQ2IDMuOTc3ODEgMTEuODQzNSAzLjI3MjQ4IDExLjYwMjNDNC4xMzAxMiAxMS40NTM4IDQuOTUzMDcgMTEuMTE1OSA1LjY2MjE4IDEwLjU2MDJDNS44MTIxMSAxMC40NDI3IDUuODcxODIgMTAuMjQzNSA1LjgxMTI2IDEwLjA2MjlDNS43NTA3IDkuODgyMzQgNS41ODMgOS43NTk0MyA1LjM5MjU1IDkuNzU2MDdDNC42ODk2OCA5Ljc0MzY2IDQuMDY3MTIgOS4zOTcxNiAzLjY3NzkzIDguODY4NDVDMy44NjgyOCA4Ljg1MzA2IDQuMDU0MjggOC44MjAzOSA0LjIzNDQ1IDguNzcxNjdDNC40MzYwMyA4LjcxNzE2IDQuNTczNjMgOC41MzExNCA0LjU2Njc0IDguMzIyNDNDNC41NTk4NSA4LjExMzcyIDQuNDEwMjkgNy45MzcxOCA0LjIwNTU1IDcuODk2MDdDMy40MjY5NCA3LjczOTc3IDIuNzk4ODMgNy4xNjc2NCAyLjU2MTY5IDYuNDIxNzRDMi43NjI1NSA2LjQ3MDI1IDIuOTcxMDIgNi40OTkxIDMuMTg0ODIgNi41MDYxQzMuMzg1NjMgNi41MTI2NyAzLjU2NjQ2IDYuMzg1MzMgMy42Mjc5NSA2LjE5NDA1QzMuNjg5NDMgNi4wMDI3NyAzLjYxNjY2IDUuNzkzOTEgMy40NDk2MyA1LjY4MjI0QzIuODY1MjMgNS4yOTE1NSAyLjQ4MTE2IDQuNjI0NjQgMi40ODExNiAzLjg2OTU4QzIuNDgxMTYgMy43MDIxMyAyLjQ4MzUyIDMuNTUyNjggMi40OTM1NSAzLjQxNzE5QzMuODUxMTUgNC43OTkxMyA1LjcwODczIDUuNjg5MzEgNy43NzU4OCA1Ljc5MzM4QzcuOTMyMjUgNS44MDEyNiA4LjA4MzI4IDUuNzM1NDMgOC4xODM5NSA1LjYxNTUzQzguMjg0NjMgNS40OTU2MiA4LjMyMzMyIDUuMzM1NDggOC4yODg1MSA1LjE4Mjg0QzguMjUyNTUgNS4wMjUxNyA4LjIzMzM2IDQuODYyODQgOC4yMzMzNiA0LjY5NjI5QzguMjMzMzYgMy41MjA4NSA5LjE4NTkxIDIuNTY4NTcgMTAuMzYgMi41Njg1N0MxMS41OTQzIDIuNTY4NTcgMTIuNDk1NiAzLjcxMjA4IDEyLjQ5NTYgNS4wMDA3OUMxMi40OTU2IDguMjU3MDkgMTAuMDIwMiAxMS45NzQ2IDUuNTIxMjIgMTEuOTc0NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHlvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjAwMDAxIDIuNzVDNS4wMDAwMSAyLjQ3Mzg2IDQuNzc2MTUgMi4yNSA0LjUwMDAxIDIuMjVDNC4yMjM4NyAyLjI1IDQuMDAwMDEgMi40NzM4NiA0LjAwMDAxIDIuNzVWOC4wNUM0LjAwMDAxIDkuOTgzIDUuNTY3MDIgMTEuNTUgNy41MDAwMSAxMS41NUM5LjQzMzAxIDExLjU1IDExIDkuOTgzIDExIDguMDVWMi43NUMxMSAyLjQ3Mzg2IDEwLjc3NjIgMi4yNSAxMC41IDIuMjVDMTAuMjIzOSAyLjI1IDEwIDIuNDczODYgMTAgMi43NVY4LjA1QzEwIDkuNDMwNzEgOC44ODA3MiAxMC41NSA3LjUwMDAxIDEwLjU1QzYuMTE5MyAxMC41NSA1LjAwMDAxIDkuNDMwNzEgNS4wMDAwMSA4LjA1VjIuNzVaTTMuNDk5OTggMTMuMTAwMUMzLjI3OTA2IDEzLjEwMDEgMy4wOTk5OCAxMy4yNzkxIDMuMDk5OTggMTMuNTAwMUMzLjA5OTk4IDEzLjcyMSAzLjI3OTA2IDEzLjkwMDEgMy40OTk5OCAxMy45MDAxSDExLjVDMTEuNzIwOSAxMy45MDAxIDExLjkgMTMuNzIxIDExLjkgMTMuNTAwMUMxMS45IDEzLjI3OTEgMTEuNzIwOSAxMy4xMDAxIDExLjUgMTMuMTAwMUgzLjQ5OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYm89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuOTAzMjEgNy4yOTY3N0MxLjkwMzIxIDEwLjM0MSA0LjExMDQxIDEyLjQxNDcgNi41ODg5MyAxMi44NDM5QzYuODcyNTUgMTIuODkzIDcuMDYyNjYgMTMuMTYyNyA3LjAxMzU1IDEzLjQ0NjRDNi45NjQ0NCAxMy43MyA2LjY5NDcxIDEzLjkyMDEgNi40MTEwOSAxMy44NzFDMy40OTk0MiAxMy4zNjY4IDAuODYwODQgMTAuOTEyNyAwLjg2MDg0IDcuMjk2NzdDMC44NjA4MzkgNS43NjAwOSAxLjU1OTk2IDQuNTUyNDUgMi4zNzYzOSAzLjYzMzc3QzIuOTYxMjQgMi45NzU2OCAzLjYzMDM0IDIuNDQxMzUgNC4xNjg0NiAyLjAzMjAyTDIuNTMyMDUgMi4wMzIwMkMyLjI1NTkxIDIuMDMyMDIgMi4wMzIwNSAxLjgwODE2IDIuMDMyMDUgMS41MzIwMkMyLjAzMjA1IDEuMjU1ODggMi4yNTU5MSAxLjAzMjAyIDIuNTMyMDUgMS4wMzIwMkw1LjUzMjA1IDEuMDMyMDJDNS44MDgxOSAxLjAzMjAyIDYuMDMyMDUgMS4yNTU4OCA2LjAzMjA1IDEuNTMyMDJMNi4wMzIwNSA0LjUzMjAyQzYuMDMyMDUgNC44MDgxNiA1LjgwODE5IDUuMDMyMDIgNS41MzIwNSA1LjAzMjAyQzUuMjU1OTEgNS4wMzIwMiA1LjAzMjA1IDQuODA4MTYgNS4wMzIwNSA0LjUzMjAyTDUuMDMyMDUgMi42ODY0NUw1LjAzMDU0IDIuNjg3NTlMNS4wMzA0NSAyLjY4NzY2TDUuMDMwNDQgMi42ODc2N0w1LjAzMDQzIDIuNjg3NjdDNC40NTg5NiAzLjExODY4IDMuNzYwNTkgMy42NDUzOCAzLjE1NTU0IDQuMzI2MkMyLjQ0MTAyIDUuMTMwMjEgMS45MDMyMSA2LjEwMTU0IDEuOTAzMjEgNy4yOTY3N1pNMTMuMDEwOSA3LjcwMzIxQzEzLjAxMDkgNC42OTExNSAxMC44NTA1IDIuNjI5NiA4LjQwMzg0IDIuMTcwMjlDOC4xMjA5MyAyLjExNzE4IDcuOTM0NjUgMS44NDQ3OSA3Ljk4Nzc2IDEuNTYxODhDOC4wNDA4NyAxLjI3ODk4IDguMzEzMjYgMS4wOTI3IDguNTk2MTYgMS4xNDU4MUMxMS40NzA0IDEuNjg1NDEgMTQuMDUzMiA0LjEyNjA1IDE0LjA1MzIgNy43MDMyMUMxNC4wNTMyIDkuMjM5ODggMTMuMzU0MSAxMC40NDc1IDEyLjUzNzcgMTEuMzY2MkMxMS45NTI4IDEyLjAyNDMgMTEuMjgzNyAxMi41NTg2IDEwLjc0NTYgMTIuOTY4TDEyLjM4MjEgMTIuOTY4QzEyLjY1ODIgMTIuOTY4IDEyLjg4MjEgMTMuMTkxOCAxMi44ODIxIDEzLjQ2OEMxMi44ODIxIDEzLjc0NDEgMTIuNjU4MiAxMy45NjggMTIuMzgyMSAxMy45NjhMOS4zODIwNSAxMy45NjhDOS4xMDU5MSAxMy45NjggOC44ODIwNSAxMy43NDQxIDguODgyMDUgMTMuNDY4TDguODgyMDUgMTAuNDY4QzguODgyMDUgMTAuMTkxOCA5LjEwNTkxIDkuOTY3OTYgOS4zODIwNSA5Ljk2Nzk2QzkuNjU4MTkgOS45Njc5NiA5Ljg4MjA1IDEwLjE5MTggOS44ODIwNSAxMC40NjhMOS44ODIwNSAxMi4zMTM1TDkuODgzNjIgMTIuMzEyM0MxMC40NTUxIDExLjg4MTMgMTEuMTUzNSAxMS4zNTQ2IDExLjc1ODUgMTAuNjczOEMxMi40NzMxIDkuODY5NzYgMTMuMDEwOSA4Ljg5ODQ0IDEzLjAxMDkgNy43MDMyMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHhvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjgxODI1IDEuMTgxODhDNy42NDI1MSAxLjAwNjE1IDcuMzU3NTkgMS4wMDYxNSA3LjE4MTg1IDEuMTgxODhMNC4xODE4NSA0LjE4MTg4QzQuMDA2MTEgNC4zNTc2MiA0LjAwNjExIDQuNjQyNTQgNC4xODE4NSA0LjgxODI4QzQuMzU3NTkgNC45OTQwMSA0LjY0MjUxIDQuOTk0MDEgNC44MTgyNSA0LjgxODI4TDcuMDUwMDUgMi41ODY0OFY5LjQ5OTk2QzcuMDUwMDUgOS43NDg0OSA3LjI1MTUyIDkuOTQ5OTYgNy41MDAwNSA5Ljk0OTk2QzcuNzQ4NTggOS45NDk5NiA3Ljk1MDA1IDkuNzQ4NDkgNy45NTAwNSA5LjQ5OTk2VjIuNTg2NDhMMTAuMTgxOSA0LjgxODI4QzEwLjM1NzYgNC45OTQwMSAxMC42NDI1IDQuOTk0MDEgMTAuODE4MiA0LjgxODI4QzEwLjk5NCA0LjY0MjU0IDEwLjk5NCA0LjM1NzYyIDEwLjgxODIgNC4xODE4OEw3LjgxODI1IDEuMTgxODhaTTIuNSA5Ljk5OTk3QzIuNzc2MTQgOS45OTk5NyAzIDEwLjIyMzggMyAxMC41VjEyQzMgMTIuNTUzOCAzLjQ0NTY1IDEzIDMuOTk2MzUgMTNIMTEuMDAxMkMxMS41NTI5IDEzIDEyIDEyLjU1MjggMTIgMTJWMTAuNUMxMiAxMC4yMjM4IDEyLjIyMzkgOS45OTk5NyAxMi41IDkuOTk5OTdDMTIuNzc2MSA5Ljk5OTk3IDEzIDEwLjIyMzggMTMgMTAuNVYxMkMxMyAxMy4xMDQgMTIuMTA2MiAxNCAxMS4wMDEyIDE0SDMuOTk2MzVDMi44OTAxOSAxNCAyIDEzLjEwMyAyIDEyVjEwLjVDMiAxMC4yMjM4IDIuMjIzODYgOS45OTk5NyAyLjUgOS45OTk5N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE9vPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxhPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzA3NSA3LjQ5OTg4QzAuODc3MDc1IDMuODQyMTkgMy44NDIyMiAwLjg3NzA0NSA3LjQ5OTkxIDAuODc3MDQ1QzExLjE1NzYgMC44NzcwNDUgMTQuMTIyNyAzLjg0MjE5IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDExLjE1NzUgMTEuMTU3NiAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MzLjg0MjIyIDE0LjEyMjcgMC44NzcwNzUgMTEuMTU3NSAwLjg3NzA3NSA3LjQ5OTg4Wk03LjQ5OTkxIDEuODI3MDRDNC4zNjY4OSAxLjgyNzA0IDEuODI3MDggNC4zNjY4NiAxLjgyNzA4IDcuNDk5ODhDMS44MjcwOCAxMC42MzI5IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDMTAuNjMyOSAxMy4xNzI3IDEzLjE3MjcgMTAuNjMyOSAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyA0LjM2Njg2IDEwLjYzMjkgMS44MjcwNCA3LjQ5OTkxIDEuODI3MDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxMbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk4NSAwLjg3NzA0NUMzLjg0MjE2IDAuODc3MDQ1IDAuODc3MDE0IDMuODQyMTkgMC44NzcwMTQgNy40OTk4OEMwLjg3NzAxNCA5LjE0ODggMS40Nzk2MyAxMC42NTcgMi40NzY2NSAxMS44MTYyTDEuNjQ2NDMgMTIuNjQ2NEMxLjQ1MTE3IDEyLjg0MTcgMS40NTExNyAxMy4xNTgzIDEuNjQ2NDMgMTMuMzUzNUMxLjg0MTcgMTMuNTQ4OCAyLjE1ODI4IDEzLjU0ODggMi4zNTM1NCAxMy4zNTM1TDMuMTgzNzcgMTIuNTIzM0M0LjM0Mjk2IDEzLjUyMDIgNS44NTEwNCAxNC4xMjI3IDcuNDk5ODUgMTQuMTIyN0MxMS4xNTc1IDE0LjEyMjcgMTQuMTIyNyAxMS4xNTc1IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDUuODUxMDcgMTMuNTIwMiA0LjM0Mjk5IDEyLjUyMzMgMy4xODM4TDEzLjM1MzUgMi4zNTM1NEMxMy41NDg4IDIuMTU4MjcgMTMuNTQ4OCAxLjg0MTY5IDEzLjM1MzUgMS42NDY0M0MxMy4xNTgzIDEuNDUxMTcgMTIuODQxNyAxLjQ1MTE3IDEyLjY0NjQgMS42NDY0M0wxMS44MTYyIDIuNDc2NjhDMTAuNjU3IDEuNDc5NjYgOS4xNDg3NyAwLjg3NzA0NSA3LjQ5OTg1IDAuODc3MDQ1Wk0xMS4xNDIyIDMuMTUwNjZDMTAuMTU2NyAyLjMyNDQ5IDguODg2MzkgMS44MjcwNCA3LjQ5OTg1IDEuODI3MDRDNC4zNjY4MyAxLjgyNzA0IDEuODI3MDEgNC4zNjY4NiAxLjgyNzAxIDcuNDk5ODhDMS44MjcwMSA4Ljg4NjQyIDIuMzI0NDYgMTAuMTU2OCAzLjE1MDYzIDExLjE0MjJMMTEuMTQyMiAzLjE1MDY2Wk0zLjg1Nzc2IDExLjg0OTNDNC44NDMxNyAxMi42NzUzIDYuMTEzNDMgMTMuMTcyNyA3LjQ5OTg1IDEzLjE3MjdDMTAuNjMyOCAxMy4xNzI3IDEzLjE3MjcgMTAuNjMyOSAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyA2LjExMzQ2IDEyLjY3NTMgNC44NDMyIDExLjg0OTMgMy44NTc3OUwzLjg1Nzc2IDExLjg0OTNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxNbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5OCAxTDYuOTIzMjEgMi4wMDMwN0wxLjE3NDk4IDEyTDAuNTk5OTc2IDEzSDEuNzUzNUgxMy4yNDY0SDE0LjRMMTMuODI1IDEyTDguMDc2NzQgMi4wMDMwN0w3LjQ5OTk4IDFaTTcuNDk5OTggMy4wMDYxM0wyLjMyODUgMTJIMTIuNjcxNEw3LjQ5OTk4IDMuMDA2MTNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxTbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC43NjQ0NyAzLjEyMTk5QzUuNjMxNTEgMy4wNDg1OSA2LjU2MDgyIDMgNy41IDNDOC40MzkxOCAzIDkuMzY4NDkgMy4wNDg1OSAxMC4yMzU1IDMuMTIxOTlDMTEuMjc5NiAzLjIxMDM3IDExLjk1NTMgMy4yNzAwOCAxMi40NzIgMy4zOTIwM0MxMi45NDI1IDMuNTAzMDQgMTMuMjA0OCAzLjY0OTc2IDEzLjQzMDYgMy44ODA4NkMxMy40NTUzIDMuOTA2MTggMTMuNDkwMiAzLjk0NDE0IDEzLjUxMzMgMy45NzA5MkMxMy43MTI2IDQuMjAxNDkgMTMuODQzNSA0LjQ4ODcgMTMuOTE4IDUuMDMyODNDMTMuOTk3OCA1LjYxNTYgMTQgNi4zNzY0NCAxNCA3LjUyNDkzQzE0IDguNjYwMjYgMTMuOTk3OCA5LjQxMDE5IDEzLjkxODEgOS45ODUzOEMxMy44NDM5IDEwLjUyMDYgMTMuNzEzNyAxMC44MDYxIDEzLjUxMjUgMTEuMDM4N0MxMy40ODk2IDExLjA2NTEgMTMuNDU0MSAxMS4xMDM4IDEzLjQyOTYgMTEuMTI4N0MxMy4yMDA5IDExLjM2MjUgMTIuOTQwNiAxMS41MDc2IDEyLjQ4MTggMTEuNjE2NEMxMS45NzUyIDExLjczNjUgMTEuMzE0MyAxMS43OTQyIDEwLjI4NzggMTEuODc5N0M5LjQxOTQ4IDExLjk1MjEgOC40NzU2NiAxMiA3LjUgMTJDNi41MjQzNCAxMiA1LjU4MDUyIDExLjk1MjEgNC43MTIyIDExLjg3OTdDMy42ODU3MiAxMS43OTQyIDMuMDI0NzcgMTEuNzM2NSAyLjUxODE2IDExLjYxNjRDMi4wNTkzNiAxMS41MDc2IDEuNzk5MSAxMS4zNjI1IDEuNTcwMzcgMTEuMTI4N0MxLjU0NTkzIDExLjEwMzggMS41MTAzNSAxMS4wNjUxIDEuNDg3NDggMTEuMDM4N0MxLjI4NjI4IDEwLjgwNjEgMS4xNTYxMiAxMC41MjA2IDEuMDgxOTMgOS45ODUzOEMxLjAwMjIxIDkuNDEwMTkgMSA4LjY2MDI2IDEgNy41MjQ5M0MxIDYuMzc2NDQgMS4wMDIxNiA1LjYxNTYgMS4wODIgNS4wMzI4M0MxLjE1NjU0IDQuNDg4NyAxLjI4NzQ0IDQuMjAxNDkgMS40ODY2NiAzLjk3MDkyQzEuNTA5OCAzLjk0NDE0IDEuNTQ0NjggMy45MDYxOCAxLjU2OTQyIDMuODgwODZDMS43OTUyIDMuNjQ5NzYgMi4wNTc1MiAzLjUwMzA0IDIuNTI3OTYgMy4zOTIwM0MzLjA0NDczIDMuMjcwMDggMy43MjA0IDMuMjEwMzcgNC43NjQ0NyAzLjEyMTk5Wk0wIDcuNTI0OTNDMCA1LjI4Mjk2IDAgNC4xNjE5OCAwLjcyOTk4NSAzLjMxNzEzQzAuNzY2NDU3IDMuMjc0OTEgMC44MTUxMzkgMy4yMjE5NCAwLjg1NDEyMyAzLjE4MjA0QzEuNjM0MzkgMi4zODMzOSAyLjY0OTYzIDIuMjk3NDQgNC42ODAxMiAyLjEyNTU1QzUuNTY5MjMgMi4wNTAyOCA2LjUyNzI0IDIgNy41IDJDOC40NzI3NiAyIDkuNDMwNzcgMi4wNTAyOCAxMC4zMTk5IDIuMTI1NTVDMTIuMzUwNCAyLjI5NzQ0IDEzLjM2NTYgMi4zODMzOSAxNC4xNDU5IDMuMTgyMDRDMTQuMTg0OSAzLjIyMTk0IDE0LjIzMzUgMy4yNzQ5MSAxNC4yNyAzLjMxNzEzQzE1IDQuMTYxOTggMTUgNS4yODI5NiAxNSA3LjUyNDkzQzE1IDkuNzQwMTIgMTUgMTAuODQ3NyAxNC4yNjg4IDExLjY5MjlDMTQuMjMyNiAxMS43MzQ4IDE0LjE4MzIgMTEuNzg4NSAxNC4xNDQ0IDExLjgyODFDMTMuMzYyOSAxMi42MjY5IDEyLjM2NTUgMTIuNzEgMTAuMzcwOSAxMi44NzYzQzkuNDc5NzEgMTIuOTUwNSA4LjUwNzgyIDEzIDcuNSAxM0M2LjQ5MjE4IDEzIDUuNTIwMjggMTIuOTUwNSA0LjYyOTE1IDEyLjg3NjNDMi42MzQ0NiAxMi43MSAxLjYzNzEyIDEyLjYyNjkgMC44NTU1NTggMTEuODI4MUMwLjgxNjg0NCAxMS43ODg1IDAuNzY3NDQyIDExLjczNDggMC43MzEyMjEgMTEuNjkyOUMwIDEwLjg0NzcgMCA5Ljc0MDEyIDAgNy41MjQ5M1pNNS4yNSA1LjM4MjY0QzUuMjUgNS4yMDIyNSA1LjQzNTIyIDUuMDgxMjQgNS42MDA0MSA1LjE1MzY5TDEwLjQyOCA3LjI3MTA1QzEwLjYyNzQgNy4zNTg1MyAxMC42Mjc0IDcuNjQxNDcgMTAuNDI4IDcuNzI4OTVMNS42MDA0MSA5Ljg0NjMxQzUuNDM1MjIgOS45MTg3NiA1LjI1IDkuNzk3NzUgNS4yNSA5LjYxNzM2VjUuMzgyNjRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxfbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNyAySDEuNUMxLjIyMzg2IDIgMSAyLjIyMzg2IDEgMi41VjdIN1YyWk04IDJWN0gxNFYyLjVDMTQgMi4yMjM4NiAxMy43NzYxIDIgMTMuNSAySDhaTTcgOEgxVjEyLjVDMSAxMi43NzYxIDEuMjIzODYgMTMgMS41IDEzSDdWOFpNOCAxM1Y4SDE0VjEyLjVDMTQgMTIuNzc2MSAxMy43NzYxIDEzIDEzLjUgMTNIOFpNMS41IDFDMC42NzE1NzMgMSAwIDEuNjcxNTcgMCAyLjVWMTIuNUMwIDEzLjMyODQgMC42NzE1NzMgMTQgMS41IDE0SDEzLjVDMTQuMzI4NCAxNCAxNSAxMy4zMjg0IDE1IDEyLjVWMi41QzE1IDEuNjcxNTcgMTQuMzI4NCAxIDEzLjUgMUgxLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxqbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41IDJIMTMuNUMxMy43NzYxIDIgMTQgMi4yMjM4NiAxNCAyLjVWN0gxVjIuNUMxIDIuMjIzODYgMS4yMjM4NiAyIDEuNSAyWk0xIDhWMTIuNUMxIDEyLjc3NjEgMS4yMjM4NiAxMyAxLjUgMTNIMTMuNUMxMy43NzYxIDEzIDE0IDEyLjc3NjEgMTQgMTIuNVY4SDFaTTAgMi41QzAgMS42NzE1NyAwLjY3MTU3MyAxIDEuNSAxSDEzLjVDMTQuMzI4NCAxIDE1IDEuNjcxNTcgMTUgMi41VjEyLjVDMTUgMTMuMzI4NCAxNC4zMjg0IDE0IDEzLjUgMTRIMS41QzAuNjcxNTczIDE0IDAgMTMuMzI4NCAwIDEyLjVWMi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0IDIuNTg3MTFMMS44NTE2MyAxM0gxMy41QzEzLjc3NjEgMTMgMTQgMTIuNzc2MSAxNCAxMi41VjIuNTg3MTFaTTAuNzYyODc5IDEzLjgwNjdMMC44MjUzOTYgMTMuODc5NkwwLjg1NDcxNyAxMy44NTQ1QzEuMDUwMTcgMTMuOTQ3OCAxLjI2ODk5IDE0IDEuNSAxNEgxMy41QzE0LjMyODQgMTQgMTUgMTMuMzI4NCAxNSAxMi41VjIuNUMxNSAxLjkzOTQ5IDE0LjY5MjYgMS40NTA3OCAxNC4yMzcxIDEuMTkzMzFMMTQuMTc0NiAxLjEyMDM3TDE0LjE0NTMgMS4xNDU1QzEzLjk0OTggMS4wNTIyMiAxMy43MzEgMSAxMy41IDFIMS41QzAuNjcxNTczIDEgMCAxLjY3MTU3IDAgMi41VjEyLjVDMCAxMy4wNjA1IDAuMzA3NDM1IDEzLjU0OTIgMC43NjI4NzkgMTMuODA2N1pNMSAxMi40MTI5TDEzLjE0ODQgMkgxLjVDMS4yMjM4NiAyIDEgMi4yMjM4NiAxIDIuNVYxMi40MTI5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTggMkgxMy41QzEzLjc3NjEgMiAxNCAyLjIyMzg2IDE0IDIuNVYxMi41QzE0IDEyLjc3NjEgMTMuNzc2MSAxMyAxMy41IDEzSDhWMlpNNyAySDEuNUMxLjIyMzg2IDIgMSAyLjIyMzg2IDEgMi41VjEyLjVDMSAxMi43NzYxIDEuMjIzODYgMTMgMS41IDEzSDdWMlpNMCAyLjVDMCAxLjY3MTU3IDAuNjcxNTczIDEgMS41IDFIMTMuNUMxNC4zMjg0IDEgMTUgMS42NzE1NyAxNSAyLjVWMTIuNUMxNSAxMy4zMjg0IDE0LjMyODQgMTQgMTMuNSAxNEgxLjVDMC42NzE1NzMgMTQgMCAxMy4zMjg0IDAgMTIuNVYyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxrbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsYT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGEpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC44MTgxMiA0LjY4MTYxQzQuOTkzODYgNC44NTczNCA0Ljk5Mzg2IDUuMTQyMjcgNC44MTgxMiA1LjMxOEwzLjA4NjMyIDcuMDQ5OEgxMS45MTM1TDEwLjE4MTcgNS4zMThDMTAuMDA2IDUuMTQyMjcgMTAuMDA2IDQuODU3MzQgMTAuMTgxNyA0LjY4MTYxQzEwLjM1NzUgNC41MDU4NyAxMC42NDI0IDQuNTA1ODcgMTAuODE4MSA0LjY4MTYxTDEzLjMxODEgNy4xODE2MUMxMy40OTM5IDcuMzU3MzQgMTMuNDkzOSA3LjY0MjI3IDEzLjMxODEgNy44MThMMTAuODE4MSAxMC4zMThDMTAuNjQyNCAxMC40OTM3IDEwLjM1NzUgMTAuNDkzNyAxMC4xODE3IDEwLjMxOEMxMC4wMDYgMTAuMTQyMyAxMC4wMDYgOS44NTczNCAxMC4xODE3IDkuNjgxNjFMMTEuOTEzNSA3Ljk0OThIMy4wODYzMkw0LjgxODEyIDkuNjgxNjFDNC45OTM4NiA5Ljg1NzM0IDQuOTkzODYgMTAuMTQyMyA0LjgxODEyIDEwLjMxOEM0LjY0MjM5IDEwLjQ5MzcgNC4zNTc0NiAxMC40OTM3IDQuMTgxNzMgMTAuMzE4TDEuNjgxNzMgNy44MThDMS41MDU5OSA3LjY0MjI3IDEuNTA1OTkgNy4zNTczNCAxLjY4MTczIDcuMTgxNjFMNC4xODE3MyA0LjY4MTYxQzQuMzU3NDYgNC41MDU4NyA0LjY0MjM5IDQuNTA1ODcgNC44MTgxMiA0LjY4MTYxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwIDYuNUMxMCA4LjQzMyA4LjQzMyAxMCA2LjUgMTBDNC41NjcgMTAgMyA4LjQzMyAzIDYuNUMzIDQuNTY3IDQuNTY3IDMgNi41IDNDOC40MzMgMyAxMCA0LjU2NyAxMCA2LjVaTTkuMzA4ODQgMTAuMDE1OUM4LjUzOTAxIDEwLjYzMTggNy41NjI1MSAxMSA2LjUgMTFDNC4wMTQ3MiAxMSAyIDguOTg1MjggMiA2LjVDMiA0LjAxNDcyIDQuMDE0NzIgMiA2LjUgMkM4Ljk4NTI4IDIgMTEgNC4wMTQ3MiAxMSA2LjVDMTEgNy41NjI1MSAxMC42MzE4IDguNTM5MDEgMTAuMDE1OSA5LjMwODg0TDEyLjg1MzYgMTIuMTQ2NEMxMy4wNDg4IDEyLjM0MTcgMTMuMDQ4OCAxMi42NTgzIDEyLjg1MzYgMTIuODUzNkMxMi42NTgzIDEzLjA0ODggMTIuMzQxNyAxMy4wNDg4IDEyLjE0NjQgMTIuODUzNkw5LjMwODg0IDEwLjAxNTlaTTQuMjUgNi41QzQuMjUgNi4yMjM4NiA0LjQ3Mzg2IDYgNC43NSA2SDZWNC43NUM2IDQuNDczODYgNi4yMjM4NiA0LjI1IDYuNSA0LjI1QzYuNzc2MTQgNC4yNSA3IDQuNDczODYgNyA0Ljc1VjZIOC4yNUM4LjUyNjE0IDYgOC43NSA2LjIyMzg2IDguNzUgNi41QzguNzUgNi43NzYxNCA4LjUyNjE0IDcgOC4yNSA3SDdWOC4yNUM3IDguNTI2MTQgNi43NzYxNCA4Ljc1IDYuNSA4Ljc1QzYuMjIzODYgOC43NSA2IDguNTI2MTQgNiA4LjI1VjdINC43NUM0LjQ3Mzg2IDcgNC4yNSA2Ljc3NjE0IDQuMjUgNi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVm89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGE9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxhKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuNSAxMEM4LjQzMyAxMCAxMCA4LjQzMyAxMCA2LjVDMTAgNC41NjcgOC40MzMgMyA2LjUgM0M0LjU2NyAzIDMgNC41NjcgMyA2LjVDMyA4LjQzMyA0LjU2NyAxMCA2LjUgMTBaTTYuNSAxMUM3LjU2MjUxIDExIDguNTM5MDEgMTAuNjMxOCA5LjMwODg0IDEwLjAxNTlMMTIuMTQ2NCAxMi44NTM2QzEyLjM0MTcgMTMuMDQ4OCAxMi42NTgzIDEzLjA0ODggMTIuODUzNiAxMi44NTM2QzEzLjA0ODggMTIuNjU4MyAxMy4wNDg4IDEyLjM0MTcgMTIuODUzNiAxMi4xNDY0TDEwLjAxNTkgOS4zMDg4NEMxMC42MzE4IDguNTM5MDEgMTEgNy41NjI1MSAxMSA2LjVDMTEgNC4wMTQ3MiA4Ljk4NTI4IDIgNi41IDJDNC4wMTQ3MiAyIDIgNC4wMTQ3MiAyIDYuNUMyIDguOTg1MjggNC4wMTQ3MiAxMSA2LjUgMTFaTTQuNzUgNkM0LjQ3Mzg2IDYgNC4yNSA2LjIyMzg2IDQuMjUgNi41QzQuMjUgNi43NzYxNCA0LjQ3Mzg2IDcgNC43NSA3SDguMjVDOC41MjYxNCA3IDguNzUgNi43NzYxNCA4Ljc1IDYuNUM4Ljc1IDYuMjIzODYgOC41MjYxNCA2IDguMjUgNkg0Ljc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX19LDUyOTk6KGUsdCxuKT0+e24ucih0KSxuLmQodCx7ZGVmYXVsdDooKT0+bH0pO3ZhciByPW4oODA4MSksbz1uLm4ociksYT1uKDM2NDUpLGk9bi5uKGEpKCkobygpKTtpLnB1c2goW2UuaWQsXCIucmVhY3QtY2FsZW5kYXIge1xcbiAgd2lkdGg6IDM1MHB4O1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgYmFja2dyb3VuZDogd2hpdGU7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjYTBhMDk2O1xcbiAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XFxuICBsaW5lLWhlaWdodDogMS4xMjVlbTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyLS1kb3VibGVWaWV3IHtcXG4gIHdpZHRoOiA3MDBweDtcXG59XFxuLnJlYWN0LWNhbGVuZGFyLS1kb3VibGVWaWV3IC5yZWFjdC1jYWxlbmRhcl9fdmlld0NvbnRhaW5lciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgbWFyZ2luOiAtMC41ZW07XFxufVxcbi5yZWFjdC1jYWxlbmRhci0tZG91YmxlVmlldyAucmVhY3QtY2FsZW5kYXJfX3ZpZXdDb250YWluZXIgPiAqIHtcXG4gIHdpZHRoOiA1MCU7XFxuICBtYXJnaW46IDAuNWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXIsXFxuLnJlYWN0LWNhbGVuZGFyICosXFxuLnJlYWN0LWNhbGVuZGFyICo6YmVmb3JlLFxcbi5yZWFjdC1jYWxlbmRhciAqOmFmdGVyIHtcXG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5yZWFjdC1jYWxlbmRhciBidXR0b24ge1xcbiAgbWFyZ2luOiAwO1xcbiAgYm9yZGVyOiAwO1xcbiAgb3V0bGluZTogbm9uZTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyIGJ1dHRvbjplbmFibGVkOmhvdmVyIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBoZWlnaHQ6IDQ0cHg7XFxuICBtYXJnaW4tYm90dG9tOiAxZW07XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiBidXR0b24ge1xcbiAgbWluLXdpZHRoOiA0NHB4O1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uIGJ1dHRvbjpkaXNhYmxlZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb24gYnV0dG9uOmVuYWJsZWQ6aG92ZXIsXFxuLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uIGJ1dHRvbjplbmFibGVkOmZvY3VzIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fd2Vla2RheXMge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgZm9udC1zaXplOiAwLjc1ZW07XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fd2Vla2RheXNfX3dlZWtkYXkge1xcbiAgcGFkZGluZzogMC41ZW07XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fd2Vla051bWJlcnMgLnJlYWN0LWNhbGVuZGFyX190aWxlIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBmb250LXNpemU6IDAuNzVlbTtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX2RheXNfX2RheS0td2Vla2VuZCB7XFxuICBjb2xvcjogI2QxMDAwMDtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzX19kYXktLW5laWdoYm9yaW5nTW9udGgge1xcbiAgY29sb3I6ICM3NTc1NzU7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9feWVhci12aWV3IC5yZWFjdC1jYWxlbmRhcl9fdGlsZSxcXG4ucmVhY3QtY2FsZW5kYXJfX2RlY2FkZS12aWV3IC5yZWFjdC1jYWxlbmRhcl9fdGlsZSxcXG4ucmVhY3QtY2FsZW5kYXJfX2NlbnR1cnktdmlldyAucmVhY3QtY2FsZW5kYXJfX3RpbGUge1xcbiAgcGFkZGluZzogMmVtIDAuNWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUge1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgcGFkZGluZzogMTBweCA2LjY2NjdweDtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBsaW5lLWhlaWdodDogMTZweDtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlOmRpc2FibGVkIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZTplbmFibGVkOmhvdmVyLFxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZTplbmFibGVkOmZvY3VzIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tbm93IHtcXG4gIGJhY2tncm91bmQ6ICNmZmZmNzY7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tbm93OmVuYWJsZWQ6aG92ZXIsXFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1ub3c6ZW5hYmxlZDpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kOiAjZmZmZmE5O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWhhc0FjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kOiAjNzZiYWZmO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWhhc0FjdGl2ZTplbmFibGVkOmhvdmVyLFxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0taGFzQWN0aXZlOmVuYWJsZWQ6Zm9jdXMge1xcbiAgYmFja2dyb3VuZDogI2E5ZDRmZjtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1hY3RpdmUge1xcbiAgYmFja2dyb3VuZDogIzAwNmVkYztcXG4gIGNvbG9yOiB3aGl0ZTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1hY3RpdmU6ZW5hYmxlZDpob3ZlcixcXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWFjdGl2ZTplbmFibGVkOmZvY3VzIHtcXG4gIGJhY2tncm91bmQ6ICMxMDg3ZmY7XFxufVxcbi5yZWFjdC1jYWxlbmRhci0tc2VsZWN0UmFuZ2UgLnJlYWN0LWNhbGVuZGFyX190aWxlLS1ob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xcbn1cXG5cIixcIlwiXSk7Y29uc3QgbD1pfSwzNjQ1OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9W107cmV0dXJuIHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPVwiXCIscj12b2lkIDAhPT10WzVdO3JldHVybiB0WzRdJiYobis9XCJAc3VwcG9ydHMgKFwiLmNvbmNhdCh0WzRdLFwiKSB7XCIpKSx0WzJdJiYobis9XCJAbWVkaWEgXCIuY29uY2F0KHRbMl0sXCIge1wiKSksciYmKG4rPVwiQGxheWVyXCIuY29uY2F0KHRbNV0ubGVuZ3RoPjA/XCIgXCIuY29uY2F0KHRbNV0pOlwiXCIsXCIge1wiKSksbis9ZSh0KSxyJiYobis9XCJ9XCIpLHRbMl0mJihuKz1cIn1cIiksdFs0XSYmKG4rPVwifVwiKSxufSkpLmpvaW4oXCJcIil9LHQuaT1mdW5jdGlvbihlLG4scixvLGEpe1wic3RyaW5nXCI9PXR5cGVvZiBlJiYoZT1bW251bGwsZSx2b2lkIDBdXSk7dmFyIGk9e307aWYocilmb3IodmFyIGw9MDtsPHRoaXMubGVuZ3RoO2wrKyl7dmFyIGM9dGhpc1tsXVswXTtudWxsIT1jJiYoaVtjXT0hMCl9Zm9yKHZhciBzPTA7czxlLmxlbmd0aDtzKyspe3ZhciB1PVtdLmNvbmNhdChlW3NdKTtyJiZpW3VbMF1dfHwodm9pZCAwIT09YSYmKHZvaWQgMD09PXVbNV18fCh1WzFdPVwiQGxheWVyXCIuY29uY2F0KHVbNV0ubGVuZ3RoPjA/XCIgXCIuY29uY2F0KHVbNV0pOlwiXCIsXCIge1wiKS5jb25jYXQodVsxXSxcIn1cIikpLHVbNV09YSksbiYmKHVbMl0/KHVbMV09XCJAbWVkaWEgXCIuY29uY2F0KHVbMl0sXCIge1wiKS5jb25jYXQodVsxXSxcIn1cIiksdVsyXT1uKTp1WzJdPW4pLG8mJih1WzRdPyh1WzFdPVwiQHN1cHBvcnRzIChcIi5jb25jYXQodVs0XSxcIikge1wiKS5jb25jYXQodVsxXSxcIn1cIiksdVs0XT1vKTp1WzRdPVwiXCIuY29uY2F0KG8pKSx0LnB1c2godSkpfX0sdH19LDgwODE6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZVsxXX19LDQ0ODM6KGUsdCxuKT0+e2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0scihlKX1mdW5jdGlvbiBvKGUsdCl7cmV0dXJuIG89T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxvKGUsdCl9ZnVuY3Rpb24gYShlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gZX1mdW5jdGlvbiBpKGUpe3JldHVybiBpPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxpKGUpfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9ZnVuY3Rpb24oZSx0KXtpZihcIm9iamVjdFwiIT09cihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW4pe3ZhciBvPW4uY2FsbChlLFwic3RyaW5nXCIpO2lmKFwib2JqZWN0XCIhPT1yKG8pKXJldHVybiBvO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKX1yZXR1cm4gU3RyaW5nKGUpfShlKTtyZXR1cm5cInN5bWJvbFwiPT09cih0KT90OlN0cmluZyh0KX12YXIgYz1uKDY2ODkpLHM9big1Njk3KSx1PW4oNTMwMykuY3JlYXRlRm9jdXNUcmFwLGQ9big4Mzg4KS5pc0ZvY3VzYWJsZSxmPWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSx0JiZvKGUsdCl9KHAsZSk7dmFyIHQsbixzLHUsZj0ocz1wLHU9ZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmdW5jdGlvbigpe3ZhciBlLHQ9aShzKTtpZih1KXt2YXIgbj1pKHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QodCxhcmd1bWVudHMsbil9ZWxzZSBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJihcIm9iamVjdFwiPT09cih0KXx8XCJmdW5jdGlvblwiPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7cmV0dXJuIGEoZSl9KHRoaXMsZSl9KTtmdW5jdGlvbiBwKGUpe3ZhciB0LG4scixvOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMscCksbj1hKHQ9Zi5jYWxsKHRoaXMsZSkpLG89ZnVuY3Rpb24oZSl7dmFyIHQsbj1udWxsIT09KHQ9dGhpcy5pbnRlcm5hbE9wdGlvbnNbZV0pJiZ2b2lkIDAhPT10P3Q6dGhpcy5vcmlnaW5hbE9wdGlvbnNbZV07aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygbil7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkocj4xP3ItMTowKSxhPTE7YTxyO2ErKylvW2EtMV09YXJndW1lbnRzW2FdO249bi5hcHBseSh2b2lkIDAsbyl9aWYoITA9PT1uJiYobj12b2lkIDApLCFuKXtpZih2b2lkIDA9PT1ufHwhMT09PW4pcmV0dXJuIG47dGhyb3cgbmV3IEVycm9yKFwiYFwiLmNvbmNhdChlLFwiYCB3YXMgc3BlY2lmaWVkIGJ1dCB3YXMgbm90IGEgbm9kZSwgb3IgZGlkIG5vdCByZXR1cm4gYSBub2RlXCIpKX12YXIgaSxsPW47aWYoXCJzdHJpbmdcIj09dHlwZW9mIG4mJiEobD1udWxsPT09KGk9dGhpcy5nZXREb2N1bWVudCgpKXx8dm9pZCAwPT09aT92b2lkIDA6aS5xdWVyeVNlbGVjdG9yKG4pKSl0aHJvdyBuZXcgRXJyb3IoXCJgXCIuY29uY2F0KGUsXCJgIGFzIHNlbGVjdG9yIHJlZmVycyB0byBubyBrbm93biBub2RlXCIpKTtyZXR1cm4gbH0sKHI9bChyPVwiZ2V0Tm9kZUZvck9wdGlvblwiKSlpbiBuP09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLHIse3ZhbHVlOm8sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpuW3JdPW8sdC5oYW5kbGVEZWFjdGl2YXRlPXQuaGFuZGxlRGVhY3RpdmF0ZS5iaW5kKGEodCkpLHQuaGFuZGxlUG9zdERlYWN0aXZhdGU9dC5oYW5kbGVQb3N0RGVhY3RpdmF0ZS5iaW5kKGEodCkpLHQuaGFuZGxlQ2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM9dC5oYW5kbGVDbGlja091dHNpZGVEZWFjdGl2YXRlcy5iaW5kKGEodCkpLHQuaW50ZXJuYWxPcHRpb25zPXtyZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZTohMSxjaGVja0NhblJldHVybkZvY3VzOm51bGwsb25EZWFjdGl2YXRlOnQuaGFuZGxlRGVhY3RpdmF0ZSxvblBvc3REZWFjdGl2YXRlOnQuaGFuZGxlUG9zdERlYWN0aXZhdGUsY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM6dC5oYW5kbGVDbGlja091dHNpZGVEZWFjdGl2YXRlc30sdC5vcmlnaW5hbE9wdGlvbnM9e3JldHVybkZvY3VzT25EZWFjdGl2YXRlOiEwLG9uRGVhY3RpdmF0ZTpudWxsLG9uUG9zdERlYWN0aXZhdGU6bnVsbCxjaGVja0NhblJldHVybkZvY3VzOm51bGwsY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM6ITF9O3ZhciBpPWUuZm9jdXNUcmFwT3B0aW9ucztmb3IodmFyIGMgaW4gaSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSxjKSYmKFwicmV0dXJuRm9jdXNPbkRlYWN0aXZhdGVcIiE9PWMmJlwib25EZWFjdGl2YXRlXCIhPT1jJiZcIm9uUG9zdERlYWN0aXZhdGVcIiE9PWMmJlwiY2hlY2tDYW5SZXR1cm5Gb2N1c1wiIT09YyYmXCJjbGlja091dHNpZGVEZWFjdGl2YXRlc1wiIT09Yz90LmludGVybmFsT3B0aW9uc1tjXT1pW2NdOnQub3JpZ2luYWxPcHRpb25zW2NdPWlbY10pO3JldHVybiB0Lm91dHNpZGVDbGljaz1udWxsLHQuZm9jdXNUcmFwRWxlbWVudHM9ZS5jb250YWluZXJFbGVtZW50c3x8W10sdC51cGRhdGVQcmV2aW91c0VsZW1lbnQoKSx0fXJldHVybiB0PXAsKG49W3trZXk6XCJnZXREb2N1bWVudFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMuZm9jdXNUcmFwT3B0aW9ucy5kb2N1bWVudHx8KFwidW5kZWZpbmVkXCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDp2b2lkIDApfX0se2tleTpcImdldFJldHVybkZvY3VzTm9kZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXROb2RlRm9yT3B0aW9uKFwic2V0UmV0dXJuRm9jdXNcIix0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCk7cmV0dXJuIGV8fCExIT09ZSYmdGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnR9fSx7a2V5OlwidXBkYXRlUHJldmlvdXNFbGVtZW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldERvY3VtZW50KCk7ZSYmKHRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50PWUuYWN0aXZlRWxlbWVudCl9fSx7a2V5OlwiZGVhY3RpdmF0ZVRyYXBcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZm9jdXNUcmFwJiZ0aGlzLmZvY3VzVHJhcC5hY3RpdmUmJnRoaXMuZm9jdXNUcmFwLmRlYWN0aXZhdGUoe3JldHVybkZvY3VzOiExLGNoZWNrQ2FuUmV0dXJuRm9jdXM6bnVsbCxvbkRlYWN0aXZhdGU6dGhpcy5vcmlnaW5hbE9wdGlvbnMub25EZWFjdGl2YXRlfSl9fSx7a2V5OlwiaGFuZGxlQ2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLm9yaWdpbmFsT3B0aW9ucy5jbGlja091dHNpZGVEZWFjdGl2YXRlcz90aGlzLm9yaWdpbmFsT3B0aW9ucy5jbGlja091dHNpZGVEZWFjdGl2YXRlcy5jYWxsKG51bGwsZSk6dGhpcy5vcmlnaW5hbE9wdGlvbnMuY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM7cmV0dXJuIHQmJih0aGlzLm91dHNpZGVDbGljaz17dGFyZ2V0OmUudGFyZ2V0LGFsbG93RGVhY3RpdmF0aW9uOnR9KSx0fX0se2tleTpcImhhbmRsZURlYWN0aXZhdGVcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMub3JpZ2luYWxPcHRpb25zLm9uRGVhY3RpdmF0ZSYmdGhpcy5vcmlnaW5hbE9wdGlvbnMub25EZWFjdGl2YXRlLmNhbGwobnVsbCksdGhpcy5kZWFjdGl2YXRlVHJhcCgpfX0se2tleTpcImhhbmRsZVBvc3REZWFjdGl2YXRlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZnVuY3Rpb24oKXt2YXIgdD1lLmdldFJldHVybkZvY3VzTm9kZSgpLG49ISghZS5vcmlnaW5hbE9wdGlvbnMucmV0dXJuRm9jdXNPbkRlYWN0aXZhdGV8fG51bGw9PXR8fCF0LmZvY3VzfHxlLm91dHNpZGVDbGljayYmKCFlLm91dHNpZGVDbGljay5hbGxvd0RlYWN0aXZhdGlvbnx8ZChlLm91dHNpZGVDbGljay50YXJnZXQsZS5pbnRlcm5hbE9wdGlvbnMudGFiYmFibGVPcHRpb25zKSkpLHI9ZS5pbnRlcm5hbE9wdGlvbnMucHJldmVudFNjcm9sbCxvPXZvaWQgMCE9PXImJnI7biYmdC5mb2N1cyh7cHJldmVudFNjcm9sbDpvfSksZS5vcmlnaW5hbE9wdGlvbnMub25Qb3N0RGVhY3RpdmF0ZSYmZS5vcmlnaW5hbE9wdGlvbnMub25Qb3N0RGVhY3RpdmF0ZS5jYWxsKG51bGwpLGUub3V0c2lkZUNsaWNrPW51bGx9O3RoaXMub3JpZ2luYWxPcHRpb25zLmNoZWNrQ2FuUmV0dXJuRm9jdXM/dGhpcy5vcmlnaW5hbE9wdGlvbnMuY2hlY2tDYW5SZXR1cm5Gb2N1cy5jYWxsKG51bGwsdGhpcy5nZXRSZXR1cm5Gb2N1c05vZGUoKSkudGhlbih0LHQpOnQoKX19LHtrZXk6XCJzZXR1cEZvY3VzVHJhcFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5mb2N1c1RyYXA/dGhpcy5wcm9wcy5hY3RpdmUmJiF0aGlzLmZvY3VzVHJhcC5hY3RpdmUmJih0aGlzLmZvY3VzVHJhcC5hY3RpdmF0ZSgpLHRoaXMucHJvcHMucGF1c2VkJiZ0aGlzLmZvY3VzVHJhcC5wYXVzZSgpKTp0aGlzLmZvY3VzVHJhcEVsZW1lbnRzLnNvbWUoQm9vbGVhbikmJih0aGlzLmZvY3VzVHJhcD10aGlzLnByb3BzLl9jcmVhdGVGb2N1c1RyYXAodGhpcy5mb2N1c1RyYXBFbGVtZW50cyx0aGlzLmludGVybmFsT3B0aW9ucyksdGhpcy5wcm9wcy5hY3RpdmUmJnRoaXMuZm9jdXNUcmFwLmFjdGl2YXRlKCksdGhpcy5wcm9wcy5wYXVzZWQmJnRoaXMuZm9jdXNUcmFwLnBhdXNlKCkpfX0se2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnByb3BzLmFjdGl2ZSYmdGhpcy5zZXR1cEZvY3VzVHJhcCgpfX0se2tleTpcImNvbXBvbmVudERpZFVwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZm9jdXNUcmFwKXtlLmNvbnRhaW5lckVsZW1lbnRzIT09dGhpcy5wcm9wcy5jb250YWluZXJFbGVtZW50cyYmdGhpcy5mb2N1c1RyYXAudXBkYXRlQ29udGFpbmVyRWxlbWVudHModGhpcy5wcm9wcy5jb250YWluZXJFbGVtZW50cyk7dmFyIHQ9IWUuYWN0aXZlJiZ0aGlzLnByb3BzLmFjdGl2ZSxuPWUuYWN0aXZlJiYhdGhpcy5wcm9wcy5hY3RpdmUscj0hZS5wYXVzZWQmJnRoaXMucHJvcHMucGF1c2VkLG89ZS5wYXVzZWQmJiF0aGlzLnByb3BzLnBhdXNlZDtpZih0JiYodGhpcy51cGRhdGVQcmV2aW91c0VsZW1lbnQoKSx0aGlzLmZvY3VzVHJhcC5hY3RpdmF0ZSgpKSxuKXJldHVybiB2b2lkIHRoaXMuZGVhY3RpdmF0ZVRyYXAoKTtyJiZ0aGlzLmZvY3VzVHJhcC5wYXVzZSgpLG8mJnRoaXMuZm9jdXNUcmFwLnVucGF1c2UoKX1lbHNlIGUuY29udGFpbmVyRWxlbWVudHMhPT10aGlzLnByb3BzLmNvbnRhaW5lckVsZW1lbnRzJiYodGhpcy5mb2N1c1RyYXBFbGVtZW50cz10aGlzLnByb3BzLmNvbnRhaW5lckVsZW1lbnRzKSx0aGlzLnByb3BzLmFjdGl2ZSYmKHRoaXMudXBkYXRlUHJldmlvdXNFbGVtZW50KCksdGhpcy5zZXR1cEZvY3VzVHJhcCgpKX19LHtrZXk6XCJjb21wb25lbnRXaWxsVW5tb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kZWFjdGl2YXRlVHJhcCgpfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMuY2hpbGRyZW4/Yy5DaGlsZHJlbi5vbmx5KHRoaXMucHJvcHMuY2hpbGRyZW4pOnZvaWQgMDtpZih0KXtpZih0LnR5cGUmJnQudHlwZT09PWMuRnJhZ21lbnQpdGhyb3cgbmV3IEVycm9yKFwiQSBmb2N1cy10cmFwIGNhbm5vdCB1c2UgYSBGcmFnbWVudCBhcyBpdHMgY2hpbGQgY29udGFpbmVyLiBUcnkgcmVwbGFjaW5nIGl0IHdpdGggYSA8ZGl2PiBlbGVtZW50LlwiKTtyZXR1cm4gYy5jbG9uZUVsZW1lbnQodCx7cmVmOmZ1bmN0aW9uKG4pe3ZhciByPWUucHJvcHMuY29udGFpbmVyRWxlbWVudHM7dCYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQucmVmP3QucmVmKG4pOnQucmVmJiYodC5yZWYuY3VycmVudD1uKSksZS5mb2N1c1RyYXBFbGVtZW50cz1yfHxbbl19fSl9cmV0dXJuIG51bGx9fV0pJiZmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxsKHIua2V5KSxyKX19KHQucHJvdG90eXBlLG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSkscH0oYy5Db21wb25lbnQpLHA9XCJ1bmRlZmluZWRcIj09dHlwZW9mIEVsZW1lbnQ/RnVuY3Rpb246RWxlbWVudDtmLnByb3BUeXBlcz17YWN0aXZlOnMuYm9vbCxwYXVzZWQ6cy5ib29sLGZvY3VzVHJhcE9wdGlvbnM6cy5zaGFwZSh7ZG9jdW1lbnQ6cy5vYmplY3Qsb25BY3RpdmF0ZTpzLmZ1bmMsb25Qb3N0QWN0aXZhdGU6cy5mdW5jLGNoZWNrQ2FuRm9jdXNUcmFwOnMuZnVuYyxvbkRlYWN0aXZhdGU6cy5mdW5jLG9uUG9zdERlYWN0aXZhdGU6cy5mdW5jLGNoZWNrQ2FuUmV0dXJuRm9jdXM6cy5mdW5jLGluaXRpYWxGb2N1czpzLm9uZU9mVHlwZShbcy5pbnN0YW5jZU9mKHApLHMuc3RyaW5nLHMuYm9vbCxzLmZ1bmNdKSxmYWxsYmFja0ZvY3VzOnMub25lT2ZUeXBlKFtzLmluc3RhbmNlT2YocCkscy5zdHJpbmcscy5mdW5jXSksZXNjYXBlRGVhY3RpdmF0ZXM6cy5vbmVPZlR5cGUoW3MuYm9vbCxzLmZ1bmNdKSxjbGlja091dHNpZGVEZWFjdGl2YXRlczpzLm9uZU9mVHlwZShbcy5ib29sLHMuZnVuY10pLHJldHVybkZvY3VzT25EZWFjdGl2YXRlOnMuYm9vbCxzZXRSZXR1cm5Gb2N1czpzLm9uZU9mVHlwZShbcy5pbnN0YW5jZU9mKHApLHMuc3RyaW5nLHMuYm9vbCxzLmZ1bmNdKSxhbGxvd091dHNpZGVDbGljazpzLm9uZU9mVHlwZShbcy5ib29sLHMuZnVuY10pLHByZXZlbnRTY3JvbGw6cy5ib29sLHRhYmJhYmxlT3B0aW9uczpzLnNoYXBlKHtkaXNwbGF5Q2hlY2s6cy5vbmVPZihbXCJmdWxsXCIsXCJsZWdhY3ktZnVsbFwiLFwibm9uLXplcm8tYXJlYVwiLFwibm9uZVwiXSksZ2V0U2hhZG93Um9vdDpzLm9uZU9mVHlwZShbcy5ib29sLHMuZnVuY10pfSksdHJhcFN0YWNrOnMuYXJyYXksaXNLZXlGb3J3YXJkOnMuZnVuYyxpc0tleUJhY2t3YXJkOnMuZnVuY30pLGNvbnRhaW5lckVsZW1lbnRzOnMuYXJyYXlPZihzLmluc3RhbmNlT2YocCkpLGNoaWxkcmVuOnMub25lT2ZUeXBlKFtzLmVsZW1lbnQscy5pbnN0YW5jZU9mKHApXSl9LGYuZGVmYXVsdFByb3BzPXthY3RpdmU6ITAscGF1c2VkOiExLGZvY3VzVHJhcE9wdGlvbnM6e30sX2NyZWF0ZUZvY3VzVHJhcDp1fSxlLmV4cG9ydHM9Zn0sNTMwMzooZSx0LG4pPT57bi5yKHQpLG4uZCh0LHtjcmVhdGVGb2N1c1RyYXA6KCk9PkN9KTt2YXIgcj1uKDgzODgpO2Z1bmN0aW9uIG8oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGEoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/byhPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2koZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOm8oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJuKHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSx0KXtpZihcIm9iamVjdFwiIT10eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW4pe3ZhciByPW4uY2FsbChlLFwic3RyaW5nXCIpO2lmKFwib2JqZWN0XCIhPXR5cGVvZiByKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKX1yZXR1cm4gU3RyaW5nKGUpfShlKTtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgdD90OlN0cmluZyh0KX0odCkpaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGw9ZnVuY3Rpb24oZSl7cmV0dXJuXCJUYWJcIj09PWUua2V5fHw5PT09ZS5rZXlDb2RlfSxjPWZ1bmN0aW9uKGUpe3JldHVybiBsKGUpJiYhZS5zaGlmdEtleX0scz1mdW5jdGlvbihlKXtyZXR1cm4gbChlKSYmZS5zaGlmdEtleX0sdT1mdW5jdGlvbihlKXtyZXR1cm4gc2V0VGltZW91dChlLDApfSxkPWZ1bmN0aW9uKGUsdCl7dmFyIG49LTE7cmV0dXJuIGUuZXZlcnkoKGZ1bmN0aW9uKGUscil7cmV0dXJuIXQoZSl8fChuPXIsITEpfSkpLG59LGY9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodD4xP3QtMTowKSxyPTE7cjx0O3IrKyluW3ItMV09YXJndW1lbnRzW3JdO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZS5hcHBseSh2b2lkIDAsbik6ZX0scD1mdW5jdGlvbihlKXtyZXR1cm4gZS50YXJnZXQuc2hhZG93Um9vdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb21wb3NlZFBhdGg/ZS5jb21wb3NlZFBhdGgoKVswXTplLnRhcmdldH0saD1bXSxDPWZ1bmN0aW9uKGUsdCl7dmFyIG4sbz0obnVsbD09dD92b2lkIDA6dC5kb2N1bWVudCl8fGRvY3VtZW50LGk9KG51bGw9PXQ/dm9pZCAwOnQudHJhcFN0YWNrKXx8aCxDPWEoe3JldHVybkZvY3VzT25EZWFjdGl2YXRlOiEwLGVzY2FwZURlYWN0aXZhdGVzOiEwLGRlbGF5SW5pdGlhbEZvY3VzOiEwLGlzS2V5Rm9yd2FyZDpjLGlzS2V5QmFja3dhcmQ6c30sdCksdj17Y29udGFpbmVyczpbXSxjb250YWluZXJHcm91cHM6W10sdGFiYmFibGVHcm91cHM6W10sbm9kZUZvY3VzZWRCZWZvcmVBY3RpdmF0aW9uOm51bGwsbW9zdFJlY2VudGx5Rm9jdXNlZE5vZGU6bnVsbCxhY3RpdmU6ITEscGF1c2VkOiExLGRlbGF5SW5pdGlhbEZvY3VzVGltZXI6dm9pZCAwfSxnPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSYmdm9pZCAwIT09ZVt0XT9lW3RdOkNbbnx8dF19LG09ZnVuY3Rpb24oZSl7cmV0dXJuIHYuY29udGFpbmVyR3JvdXBzLmZpbmRJbmRleCgoZnVuY3Rpb24odCl7dmFyIG49dC5jb250YWluZXIscj10LnRhYmJhYmxlTm9kZXM7cmV0dXJuIG4uY29udGFpbnMoZSl8fHIuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1lfSkpfSkpfSx3PWZ1bmN0aW9uKGUpe3ZhciB0PUNbZV07aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdCl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkobj4xP24tMTowKSxhPTE7YTxuO2ErKylyW2EtMV09YXJndW1lbnRzW2FdO3Q9dC5hcHBseSh2b2lkIDAscil9aWYoITA9PT10JiYodD12b2lkIDApLCF0KXtpZih2b2lkIDA9PT10fHwhMT09PXQpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKFwiYFwiLmNvbmNhdChlLFwiYCB3YXMgc3BlY2lmaWVkIGJ1dCB3YXMgbm90IGEgbm9kZSwgb3IgZGlkIG5vdCByZXR1cm4gYSBub2RlXCIpKX12YXIgaT10O2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0JiYhKGk9by5xdWVyeVNlbGVjdG9yKHQpKSl0aHJvdyBuZXcgRXJyb3IoXCJgXCIuY29uY2F0KGUsXCJgIGFzIHNlbGVjdG9yIHJlZmVycyB0byBubyBrbm93biBub2RlXCIpKTtyZXR1cm4gaX0seT1mdW5jdGlvbigpe3ZhciBlPXcoXCJpbml0aWFsRm9jdXNcIik7aWYoITE9PT1lKXJldHVybiExO2lmKHZvaWQgMD09PWUpaWYobShvLmFjdGl2ZUVsZW1lbnQpPj0wKWU9by5hY3RpdmVFbGVtZW50O2Vsc2V7dmFyIHQ9di50YWJiYWJsZUdyb3Vwc1swXTtlPXQmJnQuZmlyc3RUYWJiYWJsZU5vZGV8fHcoXCJmYWxsYmFja0ZvY3VzXCIpfWlmKCFlKXRocm93IG5ldyBFcnJvcihcIllvdXIgZm9jdXMtdHJhcCBuZWVkcyB0byBoYXZlIGF0IGxlYXN0IG9uZSBmb2N1c2FibGUgZWxlbWVudFwiKTtyZXR1cm4gZX0sYj1mdW5jdGlvbigpe2lmKHYuY29udGFpbmVyR3JvdXBzPXYuY29udGFpbmVycy5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PSgwLHIudGFiYmFibGUpKGUsQy50YWJiYWJsZU9wdGlvbnMpLG49KDAsci5mb2N1c2FibGUpKGUsQy50YWJiYWJsZU9wdGlvbnMpO3JldHVybntjb250YWluZXI6ZSx0YWJiYWJsZU5vZGVzOnQsZm9jdXNhYmxlTm9kZXM6bixmaXJzdFRhYmJhYmxlTm9kZTp0Lmxlbmd0aD4wP3RbMF06bnVsbCxsYXN0VGFiYmFibGVOb2RlOnQubGVuZ3RoPjA/dFt0Lmxlbmd0aC0xXTpudWxsLG5leHRUYWJiYWJsZU5vZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxvPW4uZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdD09PWV9KSk7aWYoIShvPDApKXJldHVybiB0P24uc2xpY2UobysxKS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4oMCxyLmlzVGFiYmFibGUpKGUsQy50YWJiYWJsZU9wdGlvbnMpfSkpOm4uc2xpY2UoMCxvKS5yZXZlcnNlKCkuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuKDAsci5pc1RhYmJhYmxlKShlLEMudGFiYmFibGVPcHRpb25zKX0pKX19fSkpLHYudGFiYmFibGVHcm91cHM9di5jb250YWluZXJHcm91cHMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS50YWJiYWJsZU5vZGVzLmxlbmd0aD4wfSkpLHYudGFiYmFibGVHcm91cHMubGVuZ3RoPD0wJiYhdyhcImZhbGxiYWNrRm9jdXNcIikpdGhyb3cgbmV3IEVycm9yKFwiWW91ciBmb2N1cy10cmFwIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgY29udGFpbmVyIHdpdGggYXQgbGVhc3Qgb25lIHRhYmJhYmxlIG5vZGUgaW4gaXQgYXQgYWxsIHRpbWVzXCIpfSx4PWZ1bmN0aW9uIGUodCl7ITEhPT10JiZ0IT09by5hY3RpdmVFbGVtZW50JiYodCYmdC5mb2N1cz8odC5mb2N1cyh7cHJldmVudFNjcm9sbDohIUMucHJldmVudFNjcm9sbH0pLHYubW9zdFJlY2VudGx5Rm9jdXNlZE5vZGU9dCxmdW5jdGlvbihlKXtyZXR1cm4gZS50YWdOYW1lJiZcImlucHV0XCI9PT1lLnRhZ05hbWUudG9Mb3dlckNhc2UoKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5zZWxlY3R9KHQpJiZ0LnNlbGVjdCgpKTplKHkoKSkpfSxPPWZ1bmN0aW9uKGUpe3ZhciB0PXcoXCJzZXRSZXR1cm5Gb2N1c1wiLGUpO3JldHVybiB0fHwhMSE9PXQmJmV9LEw9ZnVuY3Rpb24oZSl7dmFyIHQ9cChlKTttKHQpPj0wfHwoZihDLmNsaWNrT3V0c2lkZURlYWN0aXZhdGVzLGUpP24uZGVhY3RpdmF0ZSh7cmV0dXJuRm9jdXM6Qy5yZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZX0pOmYoQy5hbGxvd091dHNpZGVDbGljayxlKXx8ZS5wcmV2ZW50RGVmYXVsdCgpKX0sTT1mdW5jdGlvbihlKXt2YXIgdD1wKGUpLG49bSh0KT49MDtufHx0IGluc3RhbmNlb2YgRG9jdW1lbnQ/biYmKHYubW9zdFJlY2VudGx5Rm9jdXNlZE5vZGU9dCk6KGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkseCh2Lm1vc3RSZWNlbnRseUZvY3VzZWROb2RlfHx5KCkpKX0sUz1mdW5jdGlvbihlKXtpZigoXCJFc2NhcGVcIj09PSh0PWUpLmtleXx8XCJFc2NcIj09PXQua2V5fHwyNz09PXQua2V5Q29kZSkmJiExIT09ZihDLmVzY2FwZURlYWN0aXZhdGVzLGUpKXJldHVybiBlLnByZXZlbnREZWZhdWx0KCksdm9pZCBuLmRlYWN0aXZhdGUoKTt2YXIgdDsoQy5pc0tleUZvcndhcmQoZSl8fEMuaXNLZXlCYWNrd2FyZChlKSkmJmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0sbj1wKGUpO2IoKTt2YXIgbz1udWxsO2lmKHYudGFiYmFibGVHcm91cHMubGVuZ3RoPjApe3ZhciBhPW0obiksaT1hPj0wP3YuY29udGFpbmVyR3JvdXBzW2FdOnZvaWQgMDtpZihhPDApbz10P3YudGFiYmFibGVHcm91cHNbdi50YWJiYWJsZUdyb3Vwcy5sZW5ndGgtMV0ubGFzdFRhYmJhYmxlTm9kZTp2LnRhYmJhYmxlR3JvdXBzWzBdLmZpcnN0VGFiYmFibGVOb2RlO2Vsc2UgaWYodCl7dmFyIGM9ZCh2LnRhYmJhYmxlR3JvdXBzLChmdW5jdGlvbihlKXt2YXIgdD1lLmZpcnN0VGFiYmFibGVOb2RlO3JldHVybiBuPT09dH0pKTtpZihjPDAmJihpLmNvbnRhaW5lcj09PW58fCgwLHIuaXNGb2N1c2FibGUpKG4sQy50YWJiYWJsZU9wdGlvbnMpJiYhKDAsci5pc1RhYmJhYmxlKShuLEMudGFiYmFibGVPcHRpb25zKSYmIWkubmV4dFRhYmJhYmxlTm9kZShuLCExKSkmJihjPWEpLGM+PTApe3ZhciBzPTA9PT1jP3YudGFiYmFibGVHcm91cHMubGVuZ3RoLTE6Yy0xO289di50YWJiYWJsZUdyb3Vwc1tzXS5sYXN0VGFiYmFibGVOb2RlfWVsc2UgbChlKXx8KG89aS5uZXh0VGFiYmFibGVOb2RlKG4sITEpKX1lbHNle3ZhciB1PWQodi50YWJiYWJsZUdyb3VwcywoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sYXN0VGFiYmFibGVOb2RlO3JldHVybiBuPT09dH0pKTtpZih1PDAmJihpLmNvbnRhaW5lcj09PW58fCgwLHIuaXNGb2N1c2FibGUpKG4sQy50YWJiYWJsZU9wdGlvbnMpJiYhKDAsci5pc1RhYmJhYmxlKShuLEMudGFiYmFibGVPcHRpb25zKSYmIWkubmV4dFRhYmJhYmxlTm9kZShuKSkmJih1PWEpLHU+PTApe3ZhciBmPXU9PT12LnRhYmJhYmxlR3JvdXBzLmxlbmd0aC0xPzA6dSsxO289di50YWJiYWJsZUdyb3Vwc1tmXS5maXJzdFRhYmJhYmxlTm9kZX1lbHNlIGwoZSl8fChvPWkubmV4dFRhYmJhYmxlTm9kZShuKSl9fWVsc2Ugbz13KFwiZmFsbGJhY2tGb2N1c1wiKTtvJiYobChlKSYmZS5wcmV2ZW50RGVmYXVsdCgpLHgobykpfShlLEMuaXNLZXlCYWNrd2FyZChlKSl9LF89ZnVuY3Rpb24oZSl7dmFyIHQ9cChlKTttKHQpPj0wfHxmKEMuY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXMsZSl8fGYoQy5hbGxvd091dHNpZGVDbGljayxlKXx8KGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKX0saj1mdW5jdGlvbigpe2lmKHYuYWN0aXZlKXJldHVybiBmdW5jdGlvbihlLHQpe2lmKGUubGVuZ3RoPjApe3ZhciBuPWVbZS5sZW5ndGgtMV07biE9PXQmJm4ucGF1c2UoKX12YXIgcj1lLmluZGV4T2YodCk7LTE9PT1yfHxlLnNwbGljZShyLDEpLGUucHVzaCh0KX0oaSxuKSx2LmRlbGF5SW5pdGlhbEZvY3VzVGltZXI9Qy5kZWxheUluaXRpYWxGb2N1cz91KChmdW5jdGlvbigpe3goeSgpKX0pKTp4KHkoKSksby5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNpblwiLE0sITApLG8uYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLEwse2NhcHR1cmU6ITAscGFzc2l2ZTohMX0pLG8uYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIixMLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9KSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLF8se2NhcHR1cmU6ITAscGFzc2l2ZTohMX0pLG8uYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixTLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9KSxufSxFPWZ1bmN0aW9uKCl7aWYodi5hY3RpdmUpcmV0dXJuIG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3VzaW5cIixNLCEwKSxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixMLCEwKSxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsTCwhMCksby5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIixfLCEwKSxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsUywhMCksbn07cmV0dXJuKG49e2dldCBhY3RpdmUoKXtyZXR1cm4gdi5hY3RpdmV9LGdldCBwYXVzZWQoKXtyZXR1cm4gdi5wYXVzZWR9LGFjdGl2YXRlOmZ1bmN0aW9uKGUpe2lmKHYuYWN0aXZlKXJldHVybiB0aGlzO3ZhciB0PWcoZSxcIm9uQWN0aXZhdGVcIiksbj1nKGUsXCJvblBvc3RBY3RpdmF0ZVwiKSxyPWcoZSxcImNoZWNrQ2FuRm9jdXNUcmFwXCIpO3J8fGIoKSx2LmFjdGl2ZT0hMCx2LnBhdXNlZD0hMSx2Lm5vZGVGb2N1c2VkQmVmb3JlQWN0aXZhdGlvbj1vLmFjdGl2ZUVsZW1lbnQsdCYmdCgpO3ZhciBhPWZ1bmN0aW9uKCl7ciYmYigpLGooKSxuJiZuKCl9O3JldHVybiByPyhyKHYuY29udGFpbmVycy5jb25jYXQoKSkudGhlbihhLGEpLHRoaXMpOihhKCksdGhpcyl9LGRlYWN0aXZhdGU6ZnVuY3Rpb24oZSl7aWYoIXYuYWN0aXZlKXJldHVybiB0aGlzO3ZhciB0PWEoe29uRGVhY3RpdmF0ZTpDLm9uRGVhY3RpdmF0ZSxvblBvc3REZWFjdGl2YXRlOkMub25Qb3N0RGVhY3RpdmF0ZSxjaGVja0NhblJldHVybkZvY3VzOkMuY2hlY2tDYW5SZXR1cm5Gb2N1c30sZSk7Y2xlYXJUaW1lb3V0KHYuZGVsYXlJbml0aWFsRm9jdXNUaW1lciksdi5kZWxheUluaXRpYWxGb2N1c1RpbWVyPXZvaWQgMCxFKCksdi5hY3RpdmU9ITEsdi5wYXVzZWQ9ITEsZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmluZGV4T2YodCk7LTEhPT1uJiZlLnNwbGljZShuLDEpLGUubGVuZ3RoPjAmJmVbZS5sZW5ndGgtMV0udW5wYXVzZSgpfShpLG4pO3ZhciByPWcodCxcIm9uRGVhY3RpdmF0ZVwiKSxvPWcodCxcIm9uUG9zdERlYWN0aXZhdGVcIiksbD1nKHQsXCJjaGVja0NhblJldHVybkZvY3VzXCIpLGM9Zyh0LFwicmV0dXJuRm9jdXNcIixcInJldHVybkZvY3VzT25EZWFjdGl2YXRlXCIpO3ImJnIoKTt2YXIgcz1mdW5jdGlvbigpe3UoKGZ1bmN0aW9uKCl7YyYmeChPKHYubm9kZUZvY3VzZWRCZWZvcmVBY3RpdmF0aW9uKSksbyYmbygpfSkpfTtyZXR1cm4gYyYmbD8obChPKHYubm9kZUZvY3VzZWRCZWZvcmVBY3RpdmF0aW9uKSkudGhlbihzLHMpLHRoaXMpOihzKCksdGhpcyl9LHBhdXNlOmZ1bmN0aW9uKCl7cmV0dXJuIHYucGF1c2VkfHwhdi5hY3RpdmV8fCh2LnBhdXNlZD0hMCxFKCkpLHRoaXN9LHVucGF1c2U6ZnVuY3Rpb24oKXtyZXR1cm4gdi5wYXVzZWQmJnYuYWN0aXZlPyh2LnBhdXNlZD0hMSxiKCksaigpLHRoaXMpOnRoaXN9LHVwZGF0ZUNvbnRhaW5lckVsZW1lbnRzOmZ1bmN0aW9uKGUpe3ZhciB0PVtdLmNvbmNhdChlKS5maWx0ZXIoQm9vbGVhbik7cmV0dXJuIHYuY29udGFpbmVycz10Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/by5xdWVyeVNlbGVjdG9yKGUpOmV9KSksdi5hY3RpdmUmJmIoKSx0aGlzfX0pLnVwZGF0ZUNvbnRhaW5lckVsZW1lbnRzKGUpLG59fSw5MTQxOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1uKDY1NSksbz1uKDY2ODkpLGE9big0Mzk0KSxpPW4oMzU3MyksbD1uKDkyOTQpLGM9big0ODM5KTtmdW5jdGlvbiBzKGUpe3JldHVybiBlJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmXCJkZWZhdWx0XCJpbiBlP2U6e2RlZmF1bHQ6ZX19dmFyIHU9ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGUmJk9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKG4pe2lmKFwiZGVmYXVsdFwiIT09bil7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4sci5nZXQ/cjp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZVtuXX19KX19KSksdC5kZWZhdWx0PWUsT2JqZWN0LmZyZWV6ZSh0KX0obyksZD1zKG8pLGY9cyhjKSxwPWZ1bmN0aW9uKGUpe3JldHVybntpc0VuYWJsZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIGUuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuISF0W2VdfSkpfX19LGg9e21lYXN1cmVMYXlvdXQ6cChbXCJsYXlvdXRcIixcImxheW91dElkXCIsXCJkcmFnXCIsXCJfbGF5b3V0UmVzZXRUcmFuc2Zvcm1cIl0pLGFuaW1hdGlvbjpwKFtcImFuaW1hdGVcIixcImV4aXRcIixcInZhcmlhbnRzXCIsXCJ3aGlsZUhvdmVyXCIsXCJ3aGlsZVRhcFwiLFwid2hpbGVGb2N1c1wiLFwid2hpbGVEcmFnXCJdKSxleGl0OnAoW1wiZXhpdFwiXSksZHJhZzpwKFtcImRyYWdcIixcImRyYWdDb250cm9sc1wiXSksZm9jdXM6cChbXCJ3aGlsZUZvY3VzXCJdKSxob3ZlcjpwKFtcIndoaWxlSG92ZXJcIixcIm9uSG92ZXJTdGFydFwiLFwib25Ib3ZlckVuZFwiXSksdGFwOnAoW1wid2hpbGVUYXBcIixcIm9uVGFwXCIsXCJvblRhcFN0YXJ0XCIsXCJvblRhcENhbmNlbFwiXSkscGFuOnAoW1wib25QYW5cIixcIm9uUGFuU3RhcnRcIixcIm9uUGFuU2Vzc2lvblN0YXJ0XCIsXCJvblBhbkVuZFwiXSksbGF5b3V0QW5pbWF0aW9uOnAoW1wibGF5b3V0XCIsXCJsYXlvdXRJZFwiXSl9O2Z1bmN0aW9uIEMoZSl7Zm9yKHZhciB0IGluIGUpe3ZhciBuPWVbdF07bnVsbCE9PW4mJihoW3RdLkNvbXBvbmVudD1uKX19dmFyIHY9by5jcmVhdGVDb250ZXh0KHtzdHJpY3Q6ITF9KSxnPU9iamVjdC5rZXlzKGgpLG09Zy5sZW5ndGgsdz1vLmNyZWF0ZUNvbnRleHQoe3RyYW5zZm9ybVBhZ2VQb2ludDpmdW5jdGlvbihlKXtyZXR1cm4gZX0saXNTdGF0aWM6ITF9KSx5PW8uY3JlYXRlQ29udGV4dCh7fSk7ZnVuY3Rpb24gYigpe3JldHVybiBvLnVzZUNvbnRleHQoeSkudmlzdWFsRWxlbWVudH12YXIgeD1vLmNyZWF0ZUNvbnRleHQobnVsbCk7ZnVuY3Rpb24gTyhlKXt2YXIgdD1vLnVzZVJlZihudWxsKTtyZXR1cm4gbnVsbD09PXQuY3VycmVudCYmKHQuY3VycmVudD1lKCkpLHQuY3VycmVudH1mdW5jdGlvbiBMKCl7dmFyIGU9by51c2VDb250ZXh0KHgpO2lmKG51bGw9PT1lKXJldHVyblshMCxudWxsXTt2YXIgdD1lLmlzUHJlc2VudCxuPWUub25FeGl0Q29tcGxldGUscj1lLnJlZ2lzdGVyLGE9aigpO3JldHVybiBvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gcihhKX0pLFtdKSwhdCYmbj9bITEsZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09bj92b2lkIDA6bihhKX1dOlshMF19ZnVuY3Rpb24gTShlKXtyZXR1cm4gbnVsbD09PWV8fGUuaXNQcmVzZW50fXZhciBTPTAsXz1mdW5jdGlvbigpe3JldHVybiBTKyt9LGo9ZnVuY3Rpb24oKXtyZXR1cm4gTyhfKX0sRT1vLmNyZWF0ZUNvbnRleHQobnVsbCksUD1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93LGs9UD9vLnVzZUxheW91dEVmZmVjdDpvLnVzZUVmZmVjdDtmdW5jdGlvbiBIKGUpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxcImN1cnJlbnRcIil9ZnVuY3Rpb24gVihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBSKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlfHxWKGUpfWZ1bmN0aW9uIEkoZSx0LG4scixvKXt2YXIgYTtyZXR1cm4gdm9pZCAwPT09ciYmKHI9e30pLHZvaWQgMD09PW8mJihvPXt9KSxcInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9bnVsbD09PShhPWUudmFyaWFudHMpfHx2b2lkIDA9PT1hP3ZvaWQgMDphW3RdKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3QobnVsbCE9bj9uOmUuY3VzdG9tLHIsbyk6dH1mdW5jdGlvbiBaKGUsdCxuKXt2YXIgcj1lLmdldFByb3BzKCk7cmV0dXJuIEkocix0LG51bGwhPW4/bjpyLmN1c3RvbSxmdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gZS5mb3JFYWNoVmFsdWUoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHRbbl09ZS5nZXQoKX0pKSx0fShlKSxmdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gZS5mb3JFYWNoVmFsdWUoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHRbbl09ZS5nZXRWZWxvY2l0eSgpfSkpLHR9KGUpKX1mdW5jdGlvbiBBKGUpe3ZhciB0O3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mKG51bGw9PT0odD1lLmFuaW1hdGUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LnN0YXJ0KXx8UihlLmluaXRpYWwpfHxSKGUuYW5pbWF0ZSl8fFIoZS53aGlsZUhvdmVyKXx8UihlLndoaWxlRHJhZyl8fFIoZS53aGlsZVRhcCl8fFIoZS53aGlsZUZvY3VzKXx8UihlLmV4aXQpfWZ1bmN0aW9uIEQoZSl7cmV0dXJuIEJvb2xlYW4oQShlKXx8ZS52YXJpYW50cyl9ZnVuY3Rpb24gQihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLmpvaW4oXCIgXCIpOmV9ZnVuY3Rpb24gVChlKXt2YXIgdD1lLnByZWxvYWRlZEZlYXR1cmVzLG49ZS5jcmVhdGVWaXN1YWxFbGVtZW50LGE9ZS51c2VSZW5kZXIsaT1lLnVzZVZpc3VhbFN0YXRlLGw9ZS5Db21wb25lbnQ7cmV0dXJuIHQmJkModCksby5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3ZhciBjPW8udXNlQ29udGV4dCh3KS5pc1N0YXRpYyxzPW51bGwsZD1mdW5jdGlvbihlLHQpe3ZhciBuPWZ1bmN0aW9uKGUsdCl7aWYoQShlKSl7dmFyIG49ZS5pbml0aWFsLHI9ZS5hbmltYXRlO3JldHVybntpbml0aWFsOiExPT09bnx8UihuKT9uOnZvaWQgMCxhbmltYXRlOlIocik/cjp2b2lkIDB9fXJldHVybiExIT09ZS5pbmhlcml0P3Q6e319KGUsby51c2VDb250ZXh0KHkpKSxyPW4uaW5pdGlhbCxhPW4uYW5pbWF0ZTtyZXR1cm4gby51c2VNZW1vKChmdW5jdGlvbigpe3JldHVybntpbml0aWFsOnIsYW5pbWF0ZTphfX0pLHQ/W0IociksQihhKV06W10pfShlLGMpLGY9aShlLGMpO3JldHVybiFjJiZQJiYoZC52aXN1YWxFbGVtZW50PWZ1bmN0aW9uKGUsdCxuLGEpe3ZhciBpPW8udXNlQ29udGV4dCh3KSxsPW8udXNlQ29udGV4dCh2KSxjPWIoKSxzPW8udXNlQ29udGV4dCh4KSx1PWZ1bmN0aW9uKGUpe3ZhciB0PWUubGF5b3V0SWQsbj1vLnVzZUNvbnRleHQoRSk7cmV0dXJuIG4mJnZvaWQgMCE9PXQ/bitcIi1cIit0OnR9KG4pLGQ9by51c2VSZWYodm9pZCAwKTthfHwoYT1sLnJlbmRlcmVyKSwhZC5jdXJyZW50JiZhJiYoZC5jdXJyZW50PWEoZSx7dmlzdWFsU3RhdGU6dCxwYXJlbnQ6Yyxwcm9wczpyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbikse2xheW91dElkOnV9KSxwcmVzZW5jZUlkOm51bGw9PXM/dm9pZCAwOnMuaWQsYmxvY2tJbml0aWFsQW5pbWF0aW9uOiExPT09KG51bGw9PXM/dm9pZCAwOnMuaW5pdGlhbCl9KSk7dmFyIGY9ZC5jdXJyZW50O3JldHVybiBrKChmdW5jdGlvbigpe2YmJihmLnNldFByb3BzKHIuX19hc3NpZ24oci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGkpLG4pLHtsYXlvdXRJZDp1fSkpLGYuaXNQcmVzZW50PU0ocyksZi5pc1ByZXNlbmNlUm9vdD0hY3x8Yy5wcmVzZW5jZUlkIT09KG51bGw9PXM/dm9pZCAwOnMuaWQpLGYuc3luY1JlbmRlcigpKX0pKSxvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXt2YXIgZTtmJiYobnVsbD09PShlPWYuYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1lfHxlLmFuaW1hdGVDaGFuZ2VzKCkpfSkpLGsoKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWY/dm9pZCAwOmYubm90aWZ5VW5tb3VudCgpfX0pLFtdKSxmfShsLGYsZSxuKSxzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1bXTtpZihvLnVzZUNvbnRleHQodiksIXQpcmV0dXJuIG51bGw7Zm9yKHZhciBpPTA7aTxtO2krKyl7dmFyIGw9Z1tpXSxjPWhbbF0scz1jLmlzRW5hYmxlZCxkPWMuQ29tcG9uZW50O3MoZSkmJmQmJmEucHVzaCh1LmNyZWF0ZUVsZW1lbnQoZCxyLl9fYXNzaWduKHtrZXk6bH0sZSx7dmlzdWFsRWxlbWVudDp0fSkpKX1yZXR1cm4gYX0oZSxkLnZpc3VhbEVsZW1lbnQpKSx1LmNyZWF0ZUVsZW1lbnQodS5GcmFnbWVudCxudWxsLHUuY3JlYXRlRWxlbWVudCh5LlByb3ZpZGVyLHt2YWx1ZTpkfSxhKGwsZSxmdW5jdGlvbihlLHQsbil7cmV0dXJuIG8udXNlQ2FsbGJhY2soKGZ1bmN0aW9uKHIpe3ZhciBvO3ImJihudWxsPT09KG89ZS5tb3VudCl8fHZvaWQgMD09PW98fG8uY2FsbChlLHIpKSx0JiYocj90Lm1vdW50KHIpOnQudW5tb3VudCgpKSxuJiYoXCJmdW5jdGlvblwiPT10eXBlb2Ygbj9uKHIpOkgobikmJihuLmN1cnJlbnQ9cikpfSksW3RdKX0oZixkLnZpc3VhbEVsZW1lbnQsdCksZixjKSkscyl9KSl9ZnVuY3Rpb24gJChlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPXt9KSxUKGUodCxuKSl9dmFyIG49bmV3IE1hcDtyZXR1cm4gbmV3IFByb3h5KHQse2dldDpmdW5jdGlvbihlLHIpe3JldHVybiBuLmhhcyhyKXx8bi5zZXQocix0KHIpKSxuLmdldChyKX19KX12YXIgRj1bXCJhbmltYXRlXCIsXCJjaXJjbGVcIixcImRlZnNcIixcImRlc2NcIixcImVsbGlwc2VcIixcImdcIixcImltYWdlXCIsXCJsaW5lXCIsXCJmaWx0ZXJcIixcIm1hcmtlclwiLFwibWFza1wiLFwibWV0YWRhdGFcIixcInBhdGhcIixcInBhdHRlcm5cIixcInBvbHlnb25cIixcInBvbHlsaW5lXCIsXCJyZWN0XCIsXCJzdG9wXCIsXCJzdmdcIixcInN3aXRjaFwiLFwic3ltYm9sXCIsXCJ0ZXh0XCIsXCJ0c3BhblwiLFwidXNlXCIsXCJ2aWV3XCJdO2Z1bmN0aW9uIFcoZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGUmJiFlLmluY2x1ZGVzKFwiLVwiKSYmISEoRi5pbmRleE9mKGUpPi0xfHwvW0EtWl0vLnRlc3QoZSkpfXZhciBOPXt9O2Z1bmN0aW9uIHooZSl7Zm9yKHZhciB0IGluIGUpTlt0XT1lW3RdfXZhciBVPVtcIlwiLFwiWFwiLFwiWVwiLFwiWlwiXSxHPVtcInRyYW5zZm9ybVBlcnNwZWN0aXZlXCIsXCJ4XCIsXCJ5XCIsXCJ6XCJdO2Z1bmN0aW9uIHEoZSx0KXtyZXR1cm4gRy5pbmRleE9mKGUpLUcuaW5kZXhPZih0KX1bXCJ0cmFuc2xhdGVcIixcInNjYWxlXCIsXCJyb3RhdGVcIixcInNrZXdcIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFUuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIEcucHVzaChlK3QpfSkpfSkpO3ZhciBZPW5ldyBTZXQoRyk7ZnVuY3Rpb24gSyhlKXtyZXR1cm4gWS5oYXMoZSl9dmFyIFg9bmV3IFNldChbXCJvcmlnaW5YXCIsXCJvcmlnaW5ZXCIsXCJvcmlnaW5aXCJdKTtmdW5jdGlvbiBRKGUpe3JldHVybiBYLmhhcyhlKX1mdW5jdGlvbiBKKGUsdCl7dmFyIG49dC5sYXlvdXQscj10LmxheW91dElkO3JldHVybiBLKGUpfHxRKGUpfHwobnx8dm9pZCAwIT09cikmJighIU5bZV18fFwib3BhY2l0eVwiPT09ZSl9dmFyIGVlPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJmUuZ2V0VmVsb2NpdHl9LHRlPXt4OlwidHJhbnNsYXRlWFwiLHk6XCJ0cmFuc2xhdGVZXCIsejpcInRyYW5zbGF0ZVpcIix0cmFuc2Zvcm1QZXJzcGVjdGl2ZTpcInBlcnNwZWN0aXZlXCJ9O2Z1bmN0aW9uIG5lKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoXCItLVwiKX12YXIgcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCYmXCJudW1iZXJcIj09dHlwZW9mIGU/dC50cmFuc2Zvcm0oZSk6ZX0sb2U9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGkubnVtYmVyKSx7dHJhbnNmb3JtOk1hdGgucm91bmR9KSxhZT17Ym9yZGVyV2lkdGg6aS5weCxib3JkZXJUb3BXaWR0aDppLnB4LGJvcmRlclJpZ2h0V2lkdGg6aS5weCxib3JkZXJCb3R0b21XaWR0aDppLnB4LGJvcmRlckxlZnRXaWR0aDppLnB4LGJvcmRlclJhZGl1czppLnB4LHJhZGl1czppLnB4LGJvcmRlclRvcExlZnRSYWRpdXM6aS5weCxib3JkZXJUb3BSaWdodFJhZGl1czppLnB4LGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOmkucHgsYm9yZGVyQm90dG9tTGVmdFJhZGl1czppLnB4LHdpZHRoOmkucHgsbWF4V2lkdGg6aS5weCxoZWlnaHQ6aS5weCxtYXhIZWlnaHQ6aS5weCxzaXplOmkucHgsdG9wOmkucHgscmlnaHQ6aS5weCxib3R0b206aS5weCxsZWZ0OmkucHgscGFkZGluZzppLnB4LHBhZGRpbmdUb3A6aS5weCxwYWRkaW5nUmlnaHQ6aS5weCxwYWRkaW5nQm90dG9tOmkucHgscGFkZGluZ0xlZnQ6aS5weCxtYXJnaW46aS5weCxtYXJnaW5Ub3A6aS5weCxtYXJnaW5SaWdodDppLnB4LG1hcmdpbkJvdHRvbTppLnB4LG1hcmdpbkxlZnQ6aS5weCxyb3RhdGU6aS5kZWdyZWVzLHJvdGF0ZVg6aS5kZWdyZWVzLHJvdGF0ZVk6aS5kZWdyZWVzLHJvdGF0ZVo6aS5kZWdyZWVzLHNjYWxlOmkuc2NhbGUsc2NhbGVYOmkuc2NhbGUsc2NhbGVZOmkuc2NhbGUsc2NhbGVaOmkuc2NhbGUsc2tldzppLmRlZ3JlZXMsc2tld1g6aS5kZWdyZWVzLHNrZXdZOmkuZGVncmVlcyxkaXN0YW5jZTppLnB4LHRyYW5zbGF0ZVg6aS5weCx0cmFuc2xhdGVZOmkucHgsdHJhbnNsYXRlWjppLnB4LHg6aS5weCx5OmkucHgsejppLnB4LHBlcnNwZWN0aXZlOmkucHgsdHJhbnNmb3JtUGVyc3BlY3RpdmU6aS5weCxvcGFjaXR5OmkuYWxwaGEsb3JpZ2luWDppLnByb2dyZXNzUGVyY2VudGFnZSxvcmlnaW5ZOmkucHJvZ3Jlc3NQZXJjZW50YWdlLG9yaWdpblo6aS5weCx6SW5kZXg6b2UsZmlsbE9wYWNpdHk6aS5hbHBoYSxzdHJva2VPcGFjaXR5OmkuYWxwaGEsbnVtT2N0YXZlczpvZX07ZnVuY3Rpb24gaWUoZSx0LG4scixvLGEsaSxsKXt2YXIgYyxzPWUuc3R5bGUsdT1lLnZhcnMsZD1lLnRyYW5zZm9ybSxmPWUudHJhbnNmb3JtS2V5cyxwPWUudHJhbnNmb3JtT3JpZ2luO2YubGVuZ3RoPTA7dmFyIGg9ITEsQz0hMSx2PSEwO2Zvcih2YXIgZyBpbiB0KXt2YXIgbT10W2ddO2lmKG5lKGcpKXVbZ109bTtlbHNle3ZhciB3PWFlW2ddLHk9cmUobSx3KTtpZihLKGcpKXtpZihoPSEwLGRbZ109eSxmLnB1c2goZyksIXYpY29udGludWU7bSE9PShudWxsIT09KGM9dy5kZWZhdWx0KSYmdm9pZCAwIT09Yz9jOjApJiYodj0hMSl9ZWxzZSBpZihRKGcpKXBbZ109eSxDPSEwO2Vsc2UgaWYoKG51bGw9PW4/dm9pZCAwOm4uaXNIeWRyYXRlZCkmJihudWxsPT1yP3ZvaWQgMDpyLmlzSHlkcmF0ZWQpJiZOW2ddKXt2YXIgYj1OW2ddLnByb2Nlc3MobSxyLG4pLHg9TltnXS5hcHBseVRvO2lmKHgpZm9yKHZhciBPPXgubGVuZ3RoLEw9MDtMPE87TCsrKXNbeFtMXV09YjtlbHNlIHNbZ109Yn1lbHNlIHNbZ109eX19ciYmbiYmaSYmbD8ocy50cmFuc2Zvcm09aShyLmRlbHRhRmluYWwsci50cmVlU2NhbGUsaD9kOnZvaWQgMCksYSYmKHMudHJhbnNmb3JtPWEoZCxzLnRyYW5zZm9ybSkpLHMudHJhbnNmb3JtT3JpZ2luPWwocikpOihoJiYocy50cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89ZS50cmFuc2Zvcm0sYT1lLnRyYW5zZm9ybUtleXMsaT10LmVuYWJsZUhhcmR3YXJlQWNjZWxlcmF0aW9uLGw9dm9pZCAwPT09aXx8aSxjPXQuYWxsb3dUcmFuc2Zvcm1Ob25lLHM9dm9pZCAwPT09Y3x8Yyx1PVwiXCI7YS5zb3J0KHEpO2Zvcih2YXIgZD0hMSxmPWEubGVuZ3RoLHA9MDtwPGY7cCsrKXt2YXIgaD1hW3BdO3UrPSh0ZVtoXXx8aCkrXCIoXCIrb1toXStcIikgXCIsXCJ6XCI9PT1oJiYoZD0hMCl9cmV0dXJuIWQmJmw/dSs9XCJ0cmFuc2xhdGVaKDApXCI6dT11LnRyaW0oKSxyP3U9cihvLG4/XCJcIjp1KTpzJiZuJiYodT1cIm5vbmVcIiksdX0oZSxvLHYsYSkpLEMmJihzLnRyYW5zZm9ybU9yaWdpbj1mdW5jdGlvbihlKXt2YXIgdD1lLm9yaWdpblgsbj12b2lkIDA9PT10P1wiNTAlXCI6dCxyPWUub3JpZ2luWSxvPXZvaWQgMD09PXI/XCI1MCVcIjpyLGE9ZS5vcmlnaW5aO3JldHVybiBuK1wiIFwiK28rXCIgXCIrKHZvaWQgMD09PWE/MDphKX0ocCkpKX12YXIgbGU9ZnVuY3Rpb24oKXtyZXR1cm57c3R5bGU6e30sdHJhbnNmb3JtOnt9LHRyYW5zZm9ybUtleXM6W10sdHJhbnNmb3JtT3JpZ2luOnt9LHZhcnM6e319fTtmdW5jdGlvbiBjZShlLHQsbil7Zm9yKHZhciByIGluIHQpZWUodFtyXSl8fEoocixuKXx8KGVbcl09dFtyXSl9ZnVuY3Rpb24gc2UoZSx0LG4pe3ZhciBhPXt9LGk9ZnVuY3Rpb24oZSx0LG4pe3ZhciBhPXt9O3JldHVybiBjZShhLGUuc3R5bGV8fHt9LGUpLE9iamVjdC5hc3NpZ24oYSxmdW5jdGlvbihlLHQsbil7dmFyIGE9ZS50cmFuc2Zvcm1UZW1wbGF0ZTtyZXR1cm4gby51c2VNZW1vKChmdW5jdGlvbigpe3ZhciBlPWxlKCk7aWUoZSx0LHZvaWQgMCx2b2lkIDAse2VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0aW9uOiFufSxhKTt2YXIgbz1lLnZhcnMsaT1lLnN0eWxlO3JldHVybiByLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbyksaSl9KSxbdF0pfShlLHQsbikpLGUudHJhbnNmb3JtVmFsdWVzJiYoYT1lLnRyYW5zZm9ybVZhbHVlcyhhKSksYX0oZSx0LG4pO3JldHVybiBCb29sZWFuKGUuZHJhZykmJihhLmRyYWdnYWJsZT0hMSxpLnVzZXJTZWxlY3Q9aS5XZWJraXRVc2VyU2VsZWN0PWkuV2Via2l0VG91Y2hDYWxsb3V0PVwibm9uZVwiLGkudG91Y2hBY3Rpb249ITA9PT1lLmRyYWc/XCJub25lXCI6XCJwYW4tXCIrKFwieFwiPT09ZS5kcmFnP1wieVwiOlwieFwiKSksYS5zdHlsZT1pLGF9dmFyIHVlPW5ldyBTZXQoW1wiaW5pdGlhbFwiLFwiYW5pbWF0ZVwiLFwiZXhpdFwiLFwic3R5bGVcIixcInZhcmlhbnRzXCIsXCJ0cmFuc2l0aW9uXCIsXCJ0cmFuc2Zvcm1UZW1wbGF0ZVwiLFwidHJhbnNmb3JtVmFsdWVzXCIsXCJjdXN0b21cIixcImluaGVyaXRcIixcImxheW91dFwiLFwibGF5b3V0SWRcIixcIl9sYXlvdXRSZXNldFRyYW5zZm9ybVwiLFwib25MYXlvdXRBbmltYXRpb25Db21wbGV0ZVwiLFwib25WaWV3cG9ydEJveFVwZGF0ZVwiLFwib25MYXlvdXRNZWFzdXJlXCIsXCJvbkJlZm9yZUxheW91dE1lYXN1cmVcIixcIm9uQW5pbWF0aW9uU3RhcnRcIixcIm9uQW5pbWF0aW9uQ29tcGxldGVcIixcIm9uVXBkYXRlXCIsXCJvbkRyYWdTdGFydFwiLFwib25EcmFnXCIsXCJvbkRyYWdFbmRcIixcIm9uTWVhc3VyZURyYWdDb25zdHJhaW50c1wiLFwib25EaXJlY3Rpb25Mb2NrXCIsXCJvbkRyYWdUcmFuc2l0aW9uRW5kXCIsXCJkcmFnXCIsXCJkcmFnQ29udHJvbHNcIixcImRyYWdMaXN0ZW5lclwiLFwiZHJhZ0NvbnN0cmFpbnRzXCIsXCJkcmFnRGlyZWN0aW9uTG9ja1wiLFwiX2RyYWdYXCIsXCJfZHJhZ1lcIixcImRyYWdFbGFzdGljXCIsXCJkcmFnTW9tZW50dW1cIixcImRyYWdQcm9wYWdhdGlvblwiLFwiZHJhZ1RyYW5zaXRpb25cIixcIndoaWxlRHJhZ1wiLFwib25QYW5cIixcIm9uUGFuU3RhcnRcIixcIm9uUGFuRW5kXCIsXCJvblBhblNlc3Npb25TdGFydFwiLFwib25UYXBcIixcIm9uVGFwU3RhcnRcIixcIm9uVGFwQ2FuY2VsXCIsXCJvbkhvdmVyU3RhcnRcIixcIm9uSG92ZXJFbmRcIixcIndoaWxlRm9jdXNcIixcIndoaWxlVGFwXCIsXCJ3aGlsZUhvdmVyXCJdKTtmdW5jdGlvbiBkZShlKXtyZXR1cm4gdWUuaGFzKGUpfXZhciBmZT1mdW5jdGlvbihlKXtyZXR1cm4hZGUoZSl9O3RyeXt2YXIgcGU9big4NTk0KS5aO2ZlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoXCJvblwiKT8hZGUoZSk6cGUoZSl9fWNhdGNoKGUpe31mdW5jdGlvbiBoZShlLHQsbil7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTppLnB4LnRyYW5zZm9ybSh0K24qZSl9dmFyIENlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkucHgudHJhbnNmb3JtKGUqdCl9LHZlPXtvZmZzZXQ6XCJzdHJva2UtZGFzaG9mZnNldFwiLGFycmF5Olwic3Ryb2tlLWRhc2hhcnJheVwifSxnZT17b2Zmc2V0Olwic3Ryb2tlRGFzaG9mZnNldFwiLGFycmF5Olwic3Ryb2tlRGFzaGFycmF5XCJ9O2Z1bmN0aW9uIG1lKGUsdCxuLG8sYSxpLGwsYyl7dmFyIHM9dC5hdHRyWCx1PXQuYXR0clksZD10Lm9yaWdpblgsZj10Lm9yaWdpblkscD10LnBhdGhMZW5ndGgsaD10LnBhdGhTcGFjaW5nLEM9dm9pZCAwPT09aD8xOmgsdj10LnBhdGhPZmZzZXQsZz12b2lkIDA9PT12PzA6djtpZShlLHIuX19yZXN0KHQsW1wiYXR0clhcIixcImF0dHJZXCIsXCJvcmlnaW5YXCIsXCJvcmlnaW5ZXCIsXCJwYXRoTGVuZ3RoXCIsXCJwYXRoU3BhY2luZ1wiLFwicGF0aE9mZnNldFwiXSksbixvLGEsaSxsLGMpLGUuYXR0cnM9ZS5zdHlsZSxlLnN0eWxlPXt9O3ZhciBtPWUuYXR0cnMsdz1lLnN0eWxlLHk9ZS5kaW1lbnNpb25zLGI9ZS50b3RhbFBhdGhMZW5ndGg7bS50cmFuc2Zvcm0mJih5JiYody50cmFuc2Zvcm09bS50cmFuc2Zvcm0pLGRlbGV0ZSBtLnRyYW5zZm9ybSkseSYmKHZvaWQgMCE9PWR8fHZvaWQgMCE9PWZ8fHcudHJhbnNmb3JtKSYmKHcudHJhbnNmb3JtT3JpZ2luPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaGUodCxlLngsZS53aWR0aCkrXCIgXCIraGUobixlLnksZS5oZWlnaHQpfSh5LHZvaWQgMCE9PWQ/ZDouNSx2b2lkIDAhPT1mP2Y6LjUpKSx2b2lkIDAhPT1zJiYobS54PXMpLHZvaWQgMCE9PXUmJihtLnk9dSksdm9pZCAwIT09YiYmdm9pZCAwIT09cCYmZnVuY3Rpb24oZSx0LG4scixvLGEpe3ZvaWQgMD09PXImJihyPTEpLHZvaWQgMD09PW8mJihvPTApLHZvaWQgMD09PWEmJihhPSEwKTt2YXIgaT1hP3ZlOmdlO2VbaS5vZmZzZXRdPUNlKC1vLHQpO3ZhciBsPUNlKG4sdCksYz1DZShyLHQpO2VbaS5hcnJheV09bCtcIiBcIitjfShtLGIscCxDLGcsITEpfXZhciB3ZT1mdW5jdGlvbigpe3JldHVybiByLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbGUoKSkse2F0dHJzOnt9fSl9O2Z1bmN0aW9uIHllKGUsdCl7dmFyIG49by51c2VNZW1vKChmdW5jdGlvbigpe3ZhciBuPXdlKCk7cmV0dXJuIG1lKG4sdCx2b2lkIDAsdm9pZCAwLHtlbmFibGVIYXJkd2FyZUFjY2VsZXJhdGlvbjohMX0sZS50cmFuc2Zvcm1UZW1wbGF0ZSksci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG4uYXR0cnMpLHtzdHlsZTpyLl9fYXNzaWduKHt9LG4uc3R5bGUpfSl9KSxbdF0pO2lmKGUuc3R5bGUpe3ZhciBhPXt9O2NlKGEsZS5zdHlsZSxlKSxuLnN0eWxlPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxhKSxuLnN0eWxlKX1yZXR1cm4gbn1mdW5jdGlvbiBiZShlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLGZ1bmN0aW9uKHQsbixhLGksbCl7dmFyIGM9aS5sYXRlc3RWYWx1ZXMscz0oVyh0KT95ZTpzZSkobixjLGwpLHU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt9O2Zvcih2YXIgbyBpbiBlKShmZShvKXx8ITA9PT1uJiZkZShvKXx8IXQmJiFkZShvKSkmJihyW29dPWVbb10pO3JldHVybiByfShuLFwic3RyaW5nXCI9PXR5cGVvZiB0LGUpLGQ9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdSkscykse3JlZjphfSk7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCh0LGQpfX12YXIgeGU9LyhbYS16XSkoW0EtWl0pL2csT2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSh4ZSxcIiQxLSQyXCIpLnRvTG93ZXJDYXNlKCl9O2Z1bmN0aW9uIExlKGUsdCl7dmFyIG49dC5zdHlsZSxyPXQudmFycztmb3IodmFyIG8gaW4gT2JqZWN0LmFzc2lnbihlLnN0eWxlLG4pLHIpZS5zdHlsZS5zZXRQcm9wZXJ0eShvLHJbb10pfXZhciBNZT1uZXcgU2V0KFtcImJhc2VGcmVxdWVuY3lcIixcImRpZmZ1c2VDb25zdGFudFwiLFwia2VybmVsTWF0cml4XCIsXCJrZXJuZWxVbml0TGVuZ3RoXCIsXCJrZXlTcGxpbmVzXCIsXCJrZXlUaW1lc1wiLFwibGltaXRpbmdDb25lQW5nbGVcIixcIm1hcmtlckhlaWdodFwiLFwibWFya2VyV2lkdGhcIixcIm51bU9jdGF2ZXNcIixcInRhcmdldFhcIixcInRhcmdldFlcIixcInN1cmZhY2VTY2FsZVwiLFwic3BlY3VsYXJDb25zdGFudFwiLFwic3BlY3VsYXJFeHBvbmVudFwiLFwic3RkRGV2aWF0aW9uXCIsXCJ0YWJsZVZhbHVlc1wiLFwidmlld0JveFwiLFwiZ3JhZGllbnRUcmFuc2Zvcm1cIl0pO2Z1bmN0aW9uIFNlKGUsdCl7Zm9yKHZhciBuIGluIExlKGUsdCksdC5hdHRycyllLnNldEF0dHJpYnV0ZShNZS5oYXMobik/bjpPZShuKSx0LmF0dHJzW25dKX1mdW5jdGlvbiBfZShlKXt2YXIgdD1lLnN0eWxlLG49e307Zm9yKHZhciByIGluIHQpKGVlKHRbcl0pfHxKKHIsZSkpJiYobltyXT10W3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBqZShlKXt2YXIgdD1fZShlKTtmb3IodmFyIG4gaW4gZSllZShlW25dKSYmKHRbXCJ4XCI9PT1ufHxcInlcIj09PW4/XCJhdHRyXCIrbi50b1VwcGVyQ2FzZSgpOm5dPWVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIEVlKGUpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnN0YXJ0fXZhciBQZT1mdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKX0sa2U9ZnVuY3Rpb24oZSl7cmV0dXJuIEJvb2xlYW4oZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJmUubWl4JiZlLnRvVmFsdWUpfSxIZT1mdW5jdGlvbihlKXtyZXR1cm4gUGUoZSk/ZVtlLmxlbmd0aC0xXXx8MDplfTtmdW5jdGlvbiBWZShlKXt2YXIgdD1lZShlKT9lLmdldCgpOmU7cmV0dXJuIGtlKHQpP3QudG9WYWx1ZSgpOnR9ZnVuY3Rpb24gUmUoZSx0LG4scil7dmFyIG89ZS5zY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHMsYT1lLmNyZWF0ZVJlbmRlclN0YXRlLGk9ZS5vbk1vdW50LGw9e2xhdGVzdFZhbHVlczpaZSh0LG4scixvKSxyZW5kZXJTdGF0ZTphKCl9O3JldHVybiBpJiYobC5tb3VudD1mdW5jdGlvbihlKXtyZXR1cm4gaSh0LGUsbCl9KSxsfXZhciBJZT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgcj1vLnVzZUNvbnRleHQoeSksYT1vLnVzZUNvbnRleHQoeCk7cmV0dXJuIG4/UmUoZSx0LHIsYSk6TygoZnVuY3Rpb24oKXtyZXR1cm4gUmUoZSx0LHIsYSl9KSl9fTtmdW5jdGlvbiBaZShlLHQsbixvKXt2YXIgYT17fSxpPSExPT09KG51bGw9PW4/dm9pZCAwOm4uaW5pdGlhbCksbD1vKGUpO2Zvcih2YXIgYyBpbiBsKWFbY109VmUobFtjXSk7dmFyIHM9ZS5pbml0aWFsLHU9ZS5hbmltYXRlLGQ9QShlKSxmPUQoZSk7dCYmZiYmIWQmJiExIT09ZS5pbmhlcml0JiYobnVsbCE9c3x8KHM9dC5pbml0aWFsKSxudWxsIT11fHwodT10LmFuaW1hdGUpKTt2YXIgcD1pfHwhMT09PXM/dTpzO3JldHVybiBwJiZcImJvb2xlYW5cIiE9dHlwZW9mIHAmJiFFZShwKSYmKEFycmF5LmlzQXJyYXkocCk/cDpbcF0pLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPUkoZSx0KTtpZihuKXt2YXIgbz1uLnRyYW5zaXRpb25FbmQ7bi50cmFuc2l0aW9uO3ZhciBpPXIuX19yZXN0KG4sW1widHJhbnNpdGlvbkVuZFwiLFwidHJhbnNpdGlvblwiXSk7Zm9yKHZhciBsIGluIGkpYVtsXT1pW2xdO2Zvcih2YXIgbCBpbiBvKWFbbF09b1tsXX19KSksYX12YXIgQWUsRGU9e3VzZVZpc3VhbFN0YXRlOkllKHtzY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM6amUsY3JlYXRlUmVuZGVyU3RhdGU6d2Usb25Nb3VudDpmdW5jdGlvbihlLHQsbil7dmFyIHI9bi5yZW5kZXJTdGF0ZSxvPW4ubGF0ZXN0VmFsdWVzO3RyeXtyLmRpbWVuc2lvbnM9XCJmdW5jdGlvblwiPT10eXBlb2YgdC5nZXRCQm94P3QuZ2V0QkJveCgpOnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2goZSl7ci5kaW1lbnNpb25zPXt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9fVwicGF0aFwiPT09dC50YWdOYW1lJiYoci50b3RhbFBhdGhMZW5ndGg9dC5nZXRUb3RhbExlbmd0aCgpKSxtZShyLG8sdm9pZCAwLHZvaWQgMCx7ZW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRpb246ITF9LGUudHJhbnNmb3JtVGVtcGxhdGUpLFNlKHQscil9fSl9LEJlPXt1c2VWaXN1YWxTdGF0ZTpJZSh7c2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzOl9lLGNyZWF0ZVJlbmRlclN0YXRlOmxlfSl9O2Z1bmN0aW9uIFRlKGUsdCxuLG8pe3ZhciBhPXQuZm9yd2FyZE1vdGlvblByb3BzLGk9dm9pZCAwIT09YSYmYSxsPVcoZSk/RGU6QmU7cmV0dXJuIHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxsKSx7cHJlbG9hZGVkRmVhdHVyZXM6bix1c2VSZW5kZXI6YmUoaSksY3JlYXRlVmlzdWFsRWxlbWVudDpvLENvbXBvbmVudDplfSl9ZnVuY3Rpb24gJGUoZSx0LG4scil7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sciksZnVuY3Rpb24oKXtyZXR1cm4gZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbixyKX19ZnVuY3Rpb24gRmUoZSx0LG4scil7by51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7dmFyIG89ZS5jdXJyZW50O2lmKG4mJm8pcmV0dXJuICRlKG8sdCxuLHIpfSksW2UsdCxuLHJdKX1mdW5jdGlvbiBXZShlKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgUG9pbnRlckV2ZW50JiZlIGluc3RhbmNlb2YgUG9pbnRlckV2ZW50PyEoXCJtb3VzZVwiIT09ZS5wb2ludGVyVHlwZSk6ZSBpbnN0YW5jZW9mIE1vdXNlRXZlbnR9ZnVuY3Rpb24gTmUoZSl7cmV0dXJuISFlLnRvdWNoZXN9IWZ1bmN0aW9uKGUpe2UuQW5pbWF0ZT1cImFuaW1hdGVcIixlLkhvdmVyPVwid2hpbGVIb3ZlclwiLGUuVGFwPVwid2hpbGVUYXBcIixlLkRyYWc9XCJ3aGlsZURyYWdcIixlLkZvY3VzPVwid2hpbGVGb2N1c1wiLGUuRXhpdD1cImV4aXRcIn0oQWV8fChBZT17fSkpO3ZhciB6ZT17cGFnZVg6MCxwYWdlWTowfTtmdW5jdGlvbiBVZShlLHQpe3ZvaWQgMD09PXQmJih0PVwicGFnZVwiKTt2YXIgbj1lLnRvdWNoZXNbMF18fGUuY2hhbmdlZFRvdWNoZXNbMF18fHplO3JldHVybnt4Om5bdCtcIlhcIl0seTpuW3QrXCJZXCJdfX1mdW5jdGlvbiBHZShlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1cInBhZ2VcIikse3g6ZVt0K1wiWFwiXSx5OmVbdCtcIllcIl19fWZ1bmN0aW9uIHFlKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PVwicGFnZVwiKSx7cG9pbnQ6TmUoZSk/VWUoZSx0KTpHZShlLHQpfX12YXIgWWU9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0hMSk7dmFyIG4scj1mdW5jdGlvbih0KXtyZXR1cm4gZSh0LHFlKHQpKX07cmV0dXJuIHQ/KG49cixmdW5jdGlvbihlKXt2YXIgdD1lIGluc3RhbmNlb2YgTW91c2VFdmVudDsoIXR8fHQmJjA9PT1lLmJ1dHRvbikmJm4oZSl9KTpyfSxLZT1mdW5jdGlvbigpe3JldHVybiBQJiZudWxsPT09d2luZG93Lm9ucG9pbnRlcmRvd259LFhlPWZ1bmN0aW9uKCl7cmV0dXJuIFAmJm51bGw9PT13aW5kb3cub250b3VjaHN0YXJ0fSxRZT1mdW5jdGlvbigpe3JldHVybiBQJiZudWxsPT09d2luZG93Lm9ubW91c2Vkb3dufSxKZT17cG9pbnRlcmRvd246XCJtb3VzZWRvd25cIixwb2ludGVybW92ZTpcIm1vdXNlbW92ZVwiLHBvaW50ZXJ1cDpcIm1vdXNldXBcIixwb2ludGVyY2FuY2VsOlwibW91c2VjYW5jZWxcIixwb2ludGVyb3ZlcjpcIm1vdXNlb3ZlclwiLHBvaW50ZXJvdXQ6XCJtb3VzZW91dFwiLHBvaW50ZXJlbnRlcjpcIm1vdXNlZW50ZXJcIixwb2ludGVybGVhdmU6XCJtb3VzZWxlYXZlXCJ9LGV0PXtwb2ludGVyZG93bjpcInRvdWNoc3RhcnRcIixwb2ludGVybW92ZTpcInRvdWNobW92ZVwiLHBvaW50ZXJ1cDpcInRvdWNoZW5kXCIscG9pbnRlcmNhbmNlbDpcInRvdWNoY2FuY2VsXCJ9O2Z1bmN0aW9uIHR0KGUpe3JldHVybiBLZSgpP2U6WGUoKT9ldFtlXTpRZSgpP0plW2VdOmV9ZnVuY3Rpb24gbnQoZSx0LG4scil7cmV0dXJuICRlKGUsdHQodCksWWUobixcInBvaW50ZXJkb3duXCI9PT10KSxyKX1mdW5jdGlvbiBydChlLHQsbixyKXtyZXR1cm4gRmUoZSx0dCh0KSxuJiZZZShuLFwicG9pbnRlcmRvd25cIj09PXQpLHIpfWZ1bmN0aW9uIG90KGUpe3ZhciB0PW51bGw7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PT10JiYodD1lLGZ1bmN0aW9uKCl7dD1udWxsfSl9fXZhciBhdD1vdChcImRyYWdIb3Jpem9udGFsXCIpLGl0PW90KFwiZHJhZ1ZlcnRpY2FsXCIpO2Z1bmN0aW9uIGx0KGUpe3ZhciB0PSExO2lmKFwieVwiPT09ZSl0PWl0KCk7ZWxzZSBpZihcInhcIj09PWUpdD1hdCgpO2Vsc2V7dmFyIG49YXQoKSxyPWl0KCk7biYmcj90PWZ1bmN0aW9uKCl7bigpLHIoKX06KG4mJm4oKSxyJiZyKCkpfXJldHVybiB0fWZ1bmN0aW9uIGN0KCl7dmFyIGU9bHQoITApO3JldHVybiFlfHwoZSgpLCExKX1mdW5jdGlvbiBzdChlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIsbyl7dmFyIGE7V2UocikmJiFjdCgpJiYobnVsbD09bnx8bihyLG8pLG51bGw9PT0oYT1lLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09YXx8YS5zZXRBY3RpdmUoQWUuSG92ZXIsdCkpfX12YXIgdXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hIXQmJihlPT09dHx8dXQoZSx0LnBhcmVudEVsZW1lbnQpKX07ZnVuY3Rpb24gZHQoZSl7cmV0dXJuIG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlKCl9fSksW10pfXZhciBmdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUodCksbnVsbH19LHB0PXt0YXA6ZnQoKGZ1bmN0aW9uKGUpe3ZhciB0PWUub25UYXAsbj1lLm9uVGFwU3RhcnQscj1lLm9uVGFwQ2FuY2VsLGE9ZS53aGlsZVRhcCxpPWUudmlzdWFsRWxlbWVudCxjPXR8fG58fHJ8fGEscz1vLnVzZVJlZighMSksdT1vLnVzZVJlZihudWxsKTtmdW5jdGlvbiBkKCl7dmFyIGU7bnVsbD09PShlPXUuY3VycmVudCl8fHZvaWQgMD09PWV8fGUuY2FsbCh1KSx1LmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiBmKCl7dmFyIGU7cmV0dXJuIGQoKSxzLmN1cnJlbnQ9ITEsbnVsbD09PShlPWkuYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1lfHxlLnNldEFjdGl2ZShBZS5UYXAsITEpLCFjdCgpfWZ1bmN0aW9uIHAoZSxuKXtmKCkmJih1dChpLmdldEluc3RhbmNlKCksZS50YXJnZXQpP251bGw9PXR8fHQoZSxuKTpudWxsPT1yfHxyKGUsbikpfWZ1bmN0aW9uIGgoZSx0KXtmKCkmJihudWxsPT1yfHxyKGUsdCkpfXJ0KGksXCJwb2ludGVyZG93blwiLGM/ZnVuY3Rpb24oZSx0KXt2YXIgcjtkKCkscy5jdXJyZW50fHwocy5jdXJyZW50PSEwLHUuY3VycmVudD1sLnBpcGUobnQod2luZG93LFwicG9pbnRlcnVwXCIscCksbnQod2luZG93LFwicG9pbnRlcmNhbmNlbFwiLGgpKSxudWxsPT1ufHxuKGUsdCksbnVsbD09PShyPWkuYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1yfHxyLnNldEFjdGl2ZShBZS5UYXAsITApKX06dm9pZCAwKSxkdChkKX0pKSxmb2N1czpmdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS53aGlsZUZvY3VzLG49ZS52aXN1YWxFbGVtZW50O0ZlKG4sXCJmb2N1c1wiLHQ/ZnVuY3Rpb24oKXt2YXIgZTtudWxsPT09KGU9bi5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PWV8fGUuc2V0QWN0aXZlKEFlLkZvY3VzLCEwKX06dm9pZCAwKSxGZShuLFwiYmx1clwiLHQ/ZnVuY3Rpb24oKXt2YXIgZTtudWxsPT09KGU9bi5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PWV8fGUuc2V0QWN0aXZlKEFlLkZvY3VzLCExKX06dm9pZCAwKX0pKSxob3ZlcjpmdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vbkhvdmVyU3RhcnQsbj1lLm9uSG92ZXJFbmQscj1lLndoaWxlSG92ZXIsbz1lLnZpc3VhbEVsZW1lbnQ7cnQobyxcInBvaW50ZXJlbnRlclwiLHR8fHI/c3QobywhMCx0KTp2b2lkIDApLHJ0KG8sXCJwb2ludGVybGVhdmVcIixufHxyP3N0KG8sITEsbik6dm9pZCAwKX0pKX07ZnVuY3Rpb24gaHQoZSx0KXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4hMTt2YXIgbj10Lmxlbmd0aDtpZihuIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciByPTA7cjxuO3IrKylpZih0W3JdIT09ZVtyXSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgQ3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIDFlMyplfSx2dD17bGluZWFyOmwubGluZWFyLGVhc2VJbjpsLmVhc2VJbixlYXNlSW5PdXQ6bC5lYXNlSW5PdXQsZWFzZU91dDpsLmVhc2VPdXQsY2lyY0luOmwuY2lyY0luLGNpcmNJbk91dDpsLmNpcmNJbk91dCxjaXJjT3V0OmwuY2lyY091dCxiYWNrSW46bC5iYWNrSW4sYmFja0luT3V0OmwuYmFja0luT3V0LGJhY2tPdXQ6bC5iYWNrT3V0LGFudGljaXBhdGU6bC5hbnRpY2lwYXRlLGJvdW5jZUluOmwuYm91bmNlSW4sYm91bmNlSW5PdXQ6bC5ib3VuY2VJbk91dCxib3VuY2VPdXQ6bC5ib3VuY2VPdXR9LGd0PWZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2EuaW52YXJpYW50KDQ9PT1lLmxlbmd0aCxcIkN1YmljIGJlemllciBhcnJheXMgbXVzdCBjb250YWluIGZvdXIgbnVtZXJpY2FsIHZhbHVlcy5cIik7dmFyIHQ9ci5fX3JlYWQoZSw0KSxuPXRbMF0sbz10WzFdLGk9dFsyXSxjPXRbM107cmV0dXJuIGwuY3ViaWNCZXppZXIobixvLGksYyl9cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/KGEuaW52YXJpYW50KHZvaWQgMCE9PXZ0W2VdLFwiSW52YWxpZCBlYXNpbmcgdHlwZSAnXCIrZStcIidcIiksdnRbZV0pOmV9LG10PWZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiZcIm51bWJlclwiIT10eXBlb2YgZVswXX0sd3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hKFwiekluZGV4XCI9PT1lfHxcIm51bWJlclwiIT10eXBlb2YgdCYmIUFycmF5LmlzQXJyYXkodCkmJihcInN0cmluZ1wiIT10eXBlb2YgdHx8IWkuY29tcGxleC50ZXN0KHQpfHx0LnN0YXJ0c1dpdGgoXCJ1cmwoXCIpKSl9LHl0PWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6XCJzcHJpbmdcIixzdGlmZm5lc3M6NTAwLGRhbXBpbmc6MjUscmVzdERlbHRhOi41LHJlc3RTcGVlZDoxMH19LGJ0PWZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOlwic3ByaW5nXCIsc3RpZmZuZXNzOjU1MCxkYW1waW5nOjA9PT1lPzIqTWF0aC5zcXJ0KDU1MCk6MzAscmVzdERlbHRhOi4wMSxyZXN0U3BlZWQ6MTB9fSx4dD1mdW5jdGlvbigpe3JldHVybnt0eXBlOlwia2V5ZnJhbWVzXCIsZWFzZTpcImxpbmVhclwiLGR1cmF0aW9uOi4zfX0sT3Q9ZnVuY3Rpb24oZSl7cmV0dXJue3R5cGU6XCJrZXlmcmFtZXNcIixkdXJhdGlvbjouOCx2YWx1ZXM6ZX19LEx0PXt4Onl0LHk6eXQsejp5dCxyb3RhdGU6eXQscm90YXRlWDp5dCxyb3RhdGVZOnl0LHJvdGF0ZVo6eXQsc2NhbGVYOmJ0LHNjYWxlWTpidCxzY2FsZTpidCxvcGFjaXR5Onh0LGJhY2tncm91bmRDb2xvcjp4dCxjb2xvcjp4dCxkZWZhdWx0OmJ0fSxNdD1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBuPVBlKHQpP090Okx0W2VdfHxMdC5kZWZhdWx0LHIuX19hc3NpZ24oe3RvOnR9LG4odCkpfSxTdD1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sYWUpLHtjb2xvcjppLmNvbG9yLGJhY2tncm91bmRDb2xvcjppLmNvbG9yLG91dGxpbmVDb2xvcjppLmNvbG9yLGZpbGw6aS5jb2xvcixzdHJva2U6aS5jb2xvcixib3JkZXJDb2xvcjppLmNvbG9yLGJvcmRlclRvcENvbG9yOmkuY29sb3IsYm9yZGVyUmlnaHRDb2xvcjppLmNvbG9yLGJvcmRlckJvdHRvbUNvbG9yOmkuY29sb3IsYm9yZGVyTGVmdENvbG9yOmkuY29sb3IsZmlsdGVyOmkuZmlsdGVyLFdlYmtpdEZpbHRlcjppLmZpbHRlcn0pLF90PWZ1bmN0aW9uKGUpe3JldHVybiBTdFtlXX07ZnVuY3Rpb24ganQoZSx0KXt2YXIgbixyPV90KGUpO3JldHVybiByIT09aS5maWx0ZXImJihyPWkuY29tcGxleCksbnVsbD09PShuPXIuZ2V0QW5pbWF0YWJsZU5vbmUpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmNhbGwocix0KX12YXIgRXQ9ITE7ZnVuY3Rpb24gUHQoZSl7cmV0dXJuIDA9PT1lfHxcInN0cmluZ1wiPT10eXBlb2YgZSYmMD09PXBhcnNlRmxvYXQoZSkmJi0xPT09ZS5pbmRleE9mKFwiIFwiKX1mdW5jdGlvbiBrdChlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT8wOmp0KFwiXCIsZSl9ZnVuY3Rpb24gSHQoZSx0KXtyZXR1cm4gZVt0XXx8ZS5kZWZhdWx0fHxlfWZ1bmN0aW9uIFZ0KGUsdCxuLG8pe3JldHVybiB2b2lkIDA9PT1vJiYobz17fSksdC5zdGFydCgoZnVuY3Rpb24oaSl7dmFyIGMscyx1PWZ1bmN0aW9uKGUsdCxuLG8saSl7dmFyIGMscz1IdChvLGUpLHU9bnVsbCE9PShjPXMuZnJvbSkmJnZvaWQgMCE9PWM/Yzp0LmdldCgpLGQ9d3QoZSxuKTtcIm5vbmVcIj09PXUmJmQmJlwic3RyaW5nXCI9PXR5cGVvZiBuP3U9anQoZSxuKTpQdCh1KSYmXCJzdHJpbmdcIj09dHlwZW9mIG4/dT1rdChuKTohQXJyYXkuaXNBcnJheShuKSYmUHQobikmJlwic3RyaW5nXCI9PXR5cGVvZiB1JiYobj1rdCh1KSk7dmFyIGY9d3QoZSx1KTtyZXR1cm4gYS53YXJuaW5nKGY9PT1kLFwiWW91IGFyZSB0cnlpbmcgdG8gYW5pbWF0ZSBcIitlKycgZnJvbSBcIicrdSsnXCIgdG8gXCInK24rJ1wiLiAnK3UrXCIgaXMgbm90IGFuIGFuaW1hdGFibGUgdmFsdWUgLSB0byBlbmFibGUgdGhpcyBhbmltYXRpb24gc2V0IFwiK3UrXCIgdG8gYSB2YWx1ZSBhbmltYXRhYmxlIHRvIFwiK24rXCIgdmlhIHRoZSBgc3R5bGVgIHByb3BlcnR5LlwiKSxmJiZkJiYhMSE9PXMudHlwZT9mdW5jdGlvbigpe3ZhciBvPXtmcm9tOnUsdG86bix2ZWxvY2l0eTp0LmdldFZlbG9jaXR5KCksb25Db21wbGV0ZTppLG9uVXBkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiB0LnNldChlKX19O3JldHVyblwiaW5lcnRpYVwiPT09cy50eXBlfHxcImRlY2F5XCI9PT1zLnR5cGU/bC5pbmVydGlhKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxvKSxzKSk6bC5hbmltYXRlKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxmdW5jdGlvbihlLHQsbil7dmFyIG87cmV0dXJuIEFycmF5LmlzQXJyYXkodC50bykmJihudWxsIT09KG89ZS5kdXJhdGlvbikmJnZvaWQgMCE9PW98fChlLmR1cmF0aW9uPS44KSksZnVuY3Rpb24oZSl7QXJyYXkuaXNBcnJheShlLnRvKSYmbnVsbD09PWUudG9bMF0mJihlLnRvPXIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZChlLnRvKSksZS50b1swXT1lLmZyb20pfSh0KSxmdW5jdGlvbihlKXtlLndoZW4sZS5kZWxheSxlLmRlbGF5Q2hpbGRyZW4sZS5zdGFnZ2VyQ2hpbGRyZW4sZS5zdGFnZ2VyRGlyZWN0aW9uLGUucmVwZWF0LGUucmVwZWF0VHlwZSxlLnJlcGVhdERlbGF5LGUuZnJvbTt2YXIgdD1yLl9fcmVzdChlLFtcIndoZW5cIixcImRlbGF5XCIsXCJkZWxheUNoaWxkcmVuXCIsXCJzdGFnZ2VyQ2hpbGRyZW5cIixcInN0YWdnZXJEaXJlY3Rpb25cIixcInJlcGVhdFwiLFwicmVwZWF0VHlwZVwiLFwicmVwZWF0RGVsYXlcIixcImZyb21cIl0pO3JldHVybiEhT2JqZWN0LmtleXModCkubGVuZ3RofShlKXx8KGU9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGUpLE10KG4sdC50bykpKSxyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdCksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5lYXNlLG49ZS50aW1lcyxvPWUueW95byxpPWUuZmxpcCxsPWUubG9vcCxjPXIuX19yZXN0KGUsW1wiZWFzZVwiLFwidGltZXNcIixcInlveW9cIixcImZsaXBcIixcImxvb3BcIl0pLHM9ci5fX2Fzc2lnbih7fSxjKTtyZXR1cm4gbiYmKHMub2Zmc2V0PW4pLGMuZHVyYXRpb24mJihzLmR1cmF0aW9uPUN0KGMuZHVyYXRpb24pKSxjLnJlcGVhdERlbGF5JiYocy5yZXBlYXREZWxheT1DdChjLnJlcGVhdERlbGF5KSksdCYmKHMuZWFzZT1tdCh0KT90Lm1hcChndCk6Z3QodCkpLFwidHdlZW5cIj09PWMudHlwZSYmKHMudHlwZT1cImtleWZyYW1lc1wiKSwob3x8bHx8aSkmJihhLndhcm5pbmcoIUV0LFwieW95bywgbG9vcCBhbmQgZmxpcCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBBUEkuIFJlcGxhY2Ugd2l0aCByZXBlYXQgYW5kIHJlcGVhdFR5cGUgb3B0aW9ucy5cIiksRXQ9ITAsbz9zLnJlcGVhdFR5cGU9XCJyZXZlcnNlXCI6bD9zLnJlcGVhdFR5cGU9XCJsb29wXCI6aSYmKHMucmVwZWF0VHlwZT1cIm1pcnJvclwiKSxzLnJlcGVhdD1sfHxvfHxpfHxjLnJlcGVhdCksXCJzcHJpbmdcIiE9PWMudHlwZSYmKHMudHlwZT1cImtleWZyYW1lc1wiKSxzfShlKSl9KHMsbyxlKSkse29uVXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0O28ub25VcGRhdGUoZSksbnVsbD09PSh0PXMub25VcGRhdGUpfHx2b2lkIDA9PT10fHx0LmNhbGwocyxlKX0sb25Db21wbGV0ZTpmdW5jdGlvbigpe3ZhciBlO28ub25Db21wbGV0ZSgpLG51bGw9PT0oZT1zLm9uQ29tcGxldGUpfHx2b2lkIDA9PT1lfHxlLmNhbGwocyl9fSkpfTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiB0LnNldChuKSxpKCksbnVsbD09PShlPW51bGw9PXM/dm9pZCAwOnMub25Db21wbGV0ZSl8fHZvaWQgMD09PWV8fGUuY2FsbChzKSx7c3RvcDpmdW5jdGlvbigpe319fX0oZSx0LG4sbyxpKSxkPWZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIG51bGwhPT0obj0oSHQoZSx0KXx8e30pLmRlbGF5KSYmdm9pZCAwIT09bj9uOjB9KG8sZSksZj1mdW5jdGlvbigpe3JldHVybiBzPXUoKX07cmV0dXJuIGQ/Yz1zZXRUaW1lb3V0KGYsQ3QoZCkpOmYoKSxmdW5jdGlvbigpe2NsZWFyVGltZW91dChjKSxudWxsPT1zfHxzLnN0b3AoKX19KSl9ZnVuY3Rpb24gUnQoZSx0KXstMT09PWUuaW5kZXhPZih0KSYmZS5wdXNoKHQpfWZ1bmN0aW9uIEl0KGUsdCl7dmFyIG49ZS5pbmRleE9mKHQpO24+LTEmJmUuc3BsaWNlKG4sMSl9dmFyIFp0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuc3Vic2NyaXB0aW9ucz1bXX1yZXR1cm4gZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIFJ0KHRoaXMuc3Vic2NyaXB0aW9ucyxlKSxmdW5jdGlvbigpe3JldHVybiBJdCh0LnN1YnNjcmlwdGlvbnMsZSl9fSxlLnByb3RvdHlwZS5ub3RpZnk9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuc3Vic2NyaXB0aW9ucy5sZW5ndGg7aWYocilpZigxPT09cil0aGlzLnN1YnNjcmlwdGlvbnNbMF0oZSx0LG4pO2Vsc2UgZm9yKHZhciBvPTA7bzxyO28rKyl7dmFyIGE9dGhpcy5zdWJzY3JpcHRpb25zW29dO2EmJmEoZSx0LG4pfX0sZS5wcm90b3R5cGUuZ2V0U2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN1YnNjcmlwdGlvbnMubGVuZ3RofSxlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc3Vic2NyaXB0aW9ucy5sZW5ndGg9MH0sZX0oKSxBdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQsbj10aGlzO3RoaXMudGltZURlbHRhPTAsdGhpcy5sYXN0VXBkYXRlZD0wLHRoaXMudXBkYXRlU3Vic2NyaWJlcnM9bmV3IFp0LHRoaXMudmVsb2NpdHlVcGRhdGVTdWJzY3JpYmVycz1uZXcgWnQsdGhpcy5yZW5kZXJTdWJzY3JpYmVycz1uZXcgWnQsdGhpcy5jYW5UcmFja1ZlbG9jaXR5PSExLHRoaXMudXBkYXRlQW5kTm90aWZ5PWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITApLG4ucHJldj1uLmN1cnJlbnQsbi5jdXJyZW50PWU7dmFyIHI9Yy5nZXRGcmFtZURhdGEoKSxvPXIuZGVsdGEsYT1yLnRpbWVzdGFtcDtuLmxhc3RVcGRhdGVkIT09YSYmKG4udGltZURlbHRhPW8sbi5sYXN0VXBkYXRlZD1hLGYuZGVmYXVsdC5wb3N0UmVuZGVyKG4uc2NoZWR1bGVWZWxvY2l0eUNoZWNrKSksbi5wcmV2IT09bi5jdXJyZW50JiZuLnVwZGF0ZVN1YnNjcmliZXJzLm5vdGlmeShuLmN1cnJlbnQpLG4udmVsb2NpdHlVcGRhdGVTdWJzY3JpYmVycy5nZXRTaXplKCkmJm4udmVsb2NpdHlVcGRhdGVTdWJzY3JpYmVycy5ub3RpZnkobi5nZXRWZWxvY2l0eSgpKSx0JiZuLnJlbmRlclN1YnNjcmliZXJzLm5vdGlmeShuLmN1cnJlbnQpfSx0aGlzLnNjaGVkdWxlVmVsb2NpdHlDaGVjaz1mdW5jdGlvbigpe3JldHVybiBmLmRlZmF1bHQucG9zdFJlbmRlcihuLnZlbG9jaXR5Q2hlY2spfSx0aGlzLnZlbG9jaXR5Q2hlY2s9ZnVuY3Rpb24oZSl7ZS50aW1lc3RhbXAhPT1uLmxhc3RVcGRhdGVkJiYobi5wcmV2PW4uY3VycmVudCxuLnZlbG9jaXR5VXBkYXRlU3Vic2NyaWJlcnMubm90aWZ5KG4uZ2V0VmVsb2NpdHkoKSkpfSx0aGlzLmhhc0FuaW1hdGVkPSExLHRoaXMucHJldj10aGlzLmN1cnJlbnQ9ZSx0aGlzLmNhblRyYWNrVmVsb2NpdHk9KHQ9dGhpcy5jdXJyZW50LCFpc05hTihwYXJzZUZsb2F0KHQpKSl9cmV0dXJuIGUucHJvdG90eXBlLm9uQ2hhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnVwZGF0ZVN1YnNjcmliZXJzLmFkZChlKX0sZS5wcm90b3R5cGUuY2xlYXJMaXN0ZW5lcnM9ZnVuY3Rpb24oKXt0aGlzLnVwZGF0ZVN1YnNjcmliZXJzLmNsZWFyKCl9LGUucHJvdG90eXBlLm9uUmVuZGVyUmVxdWVzdD1mdW5jdGlvbihlKXtyZXR1cm4gZSh0aGlzLmdldCgpKSx0aGlzLnJlbmRlclN1YnNjcmliZXJzLmFkZChlKX0sZS5wcm90b3R5cGUuYXR0YWNoPWZ1bmN0aW9uKGUpe3RoaXMucGFzc2l2ZUVmZmVjdD1lfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0hMCksdCYmdGhpcy5wYXNzaXZlRWZmZWN0P3RoaXMucGFzc2l2ZUVmZmVjdChlLHRoaXMudXBkYXRlQW5kTm90aWZ5KTp0aGlzLnVwZGF0ZUFuZE5vdGlmeShlLHQpfSxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50fSxlLnByb3RvdHlwZS5nZXRQcmV2aW91cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZ9LGUucHJvdG90eXBlLmdldFZlbG9jaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FuVHJhY2tWZWxvY2l0eT9sLnZlbG9jaXR5UGVyU2Vjb25kKHBhcnNlRmxvYXQodGhpcy5jdXJyZW50KS1wYXJzZUZsb2F0KHRoaXMucHJldiksdGhpcy50aW1lRGVsdGEpOjB9LGUucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuc3RvcCgpLG5ldyBQcm9taXNlKChmdW5jdGlvbihuKXt0Lmhhc0FuaW1hdGVkPSEwLHQuc3RvcEFuaW1hdGlvbj1lKG4pfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHQuY2xlYXJBbmltYXRpb24oKX0pKX0sZS5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3RoaXMuc3RvcEFuaW1hdGlvbiYmdGhpcy5zdG9wQW5pbWF0aW9uKCksdGhpcy5jbGVhckFuaW1hdGlvbigpfSxlLnByb3RvdHlwZS5pc0FuaW1hdGluZz1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5zdG9wQW5pbWF0aW9ufSxlLnByb3RvdHlwZS5jbGVhckFuaW1hdGlvbj1mdW5jdGlvbigpe3RoaXMuc3RvcEFuaW1hdGlvbj1udWxsfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy51cGRhdGVTdWJzY3JpYmVycy5jbGVhcigpLHRoaXMucmVuZGVyU3Vic2NyaWJlcnMuY2xlYXIoKSx0aGlzLnN0b3AoKX0sZX0oKTtmdW5jdGlvbiBEdChlKXtyZXR1cm4gbmV3IEF0KGUpfXZhciBCdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQudGVzdChlKX19LFR0PVtpLm51bWJlcixpLnB4LGkucGVyY2VudCxpLmRlZ3JlZXMsaS52dyxpLnZoLHt0ZXN0OmZ1bmN0aW9uKGUpe3JldHVyblwiYXV0b1wiPT09ZX0scGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9fV0sJHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFR0LmZpbmQoQnQoZSkpfSxGdD1yLl9fc3ByZWFkQXJyYXkoci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKFR0KSksW2kuY29sb3IsaS5jb21wbGV4XSk7ZnVuY3Rpb24gV3QoZSx0LG4pe2UuaGFzVmFsdWUodCk/ZS5nZXRWYWx1ZSh0KS5zZXQobik6ZS5hZGRWYWx1ZSh0LER0KG4pKX1mdW5jdGlvbiBOdChlLHQpe3ZhciBuPVooZSx0KSxvPW4/ZS5tYWtlVGFyZ2V0QW5pbWF0YWJsZShuLCExKTp7fSxhPW8udHJhbnNpdGlvbkVuZCxpPXZvaWQgMD09PWE/e306YTtvLnRyYW5zaXRpb247dmFyIGw9ci5fX3Jlc3QobyxbXCJ0cmFuc2l0aW9uRW5kXCIsXCJ0cmFuc2l0aW9uXCJdKTtmb3IodmFyIGMgaW4gbD1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbCksaSkpV3QoZSxjLEhlKGxbY10pKX1mdW5jdGlvbiB6dChlLHQpe3IuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZCh0KSkucmV2ZXJzZSgpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciByLG89ZS5nZXRWYXJpYW50KG4pO28mJk50KGUsbyksbnVsbD09PShyPWUudmFyaWFudENoaWxkcmVuKXx8dm9pZCAwPT09cnx8ci5mb3JFYWNoKChmdW5jdGlvbihlKXt6dChlLHQpfSkpfSkpfWZ1bmN0aW9uIFV0KGUsdCxuKXt2YXIgcixvLGEsbCxjLHM9T2JqZWN0LmtleXModCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hZS5oYXNWYWx1ZSh0KX0pKSx1PXMubGVuZ3RoO2lmKHUpZm9yKHZhciBkPTA7ZDx1O2QrKyl7dmFyIGY9c1tkXSxwPXRbZl0saD1udWxsO0FycmF5LmlzQXJyYXkocCkmJihoPXBbMF0pLG51bGw9PT1oJiYoaD1udWxsIT09KG89bnVsbCE9PShyPW5bZl0pJiZ2b2lkIDAhPT1yP3I6ZS5yZWFkVmFsdWUoZikpJiZ2b2lkIDAhPT1vP286dFtmXSksbnVsbCE9aCYmKFwic3RyaW5nXCI9PXR5cGVvZiBoJiYvXlxcLT9cXGQqXFwuP1xcZCskLy50ZXN0KGgpP2g9cGFyc2VGbG9hdChoKTooYz1oLCFGdC5maW5kKEJ0KGMpKSYmaS5jb21wbGV4LnRlc3QocCkmJihoPWp0KGYscCkpKSxlLmFkZFZhbHVlKGYsRHQoaCkpLG51bGwhPT0oYT0obD1uKVtmXSkmJnZvaWQgMCE9PWF8fChsW2ZdPWgpLGUuc2V0QmFzZVRhcmdldChmLGgpKX19ZnVuY3Rpb24gR3QoZSx0KXtpZih0KXJldHVybih0W2VdfHx0LmRlZmF1bHR8fHQpLmZyb219ZnVuY3Rpb24gcXQoZSx0LG4pe3ZhciByLG8sYT17fTtmb3IodmFyIGkgaW4gZSlhW2ldPW51bGwhPT0ocj1HdChpLHQpKSYmdm9pZCAwIT09cj9yOm51bGw9PT0obz1uLmdldFZhbHVlKGkpKXx8dm9pZCAwPT09bz92b2lkIDA6by5nZXQoKTtyZXR1cm4gYX1mdW5jdGlvbiBZdChlLHQsbil7dmFyIHI7aWYodm9pZCAwPT09biYmKG49e30pLGUubm90aWZ5QW5pbWF0aW9uU3RhcnQoKSxBcnJheS5pc0FycmF5KHQpKXt2YXIgbz10Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIEt0KGUsdCxuKX0pKTtyPVByb21pc2UuYWxsKG8pfWVsc2UgaWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpcj1LdChlLHQsbik7ZWxzZXt2YXIgYT1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P1ooZSx0LG4uY3VzdG9tKTp0O3I9WHQoZSxhLG4pfXJldHVybiByLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGUubm90aWZ5QW5pbWF0aW9uQ29tcGxldGUodCl9KSl9ZnVuY3Rpb24gS3QoZSx0LG4pe3ZhciBvO3ZvaWQgMD09PW4mJihuPXt9KTt2YXIgYT1aKGUsdCxuLmN1c3RvbSksaT0oYXx8e30pLnRyYW5zaXRpb24sbD12b2lkIDA9PT1pP2UuZ2V0RGVmYXVsdFRyYW5zaXRpb24oKXx8e306aTtuLnRyYW5zaXRpb25PdmVycmlkZSYmKGw9bi50cmFuc2l0aW9uT3ZlcnJpZGUpO3ZhciBjPWE/ZnVuY3Rpb24oKXtyZXR1cm4gWHQoZSxhLG4pfTpmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX0scz0obnVsbD09PShvPWUudmFyaWFudENoaWxkcmVuKXx8dm9pZCAwPT09bz92b2lkIDA6by5zaXplKT9mdW5jdGlvbihvKXt2b2lkIDA9PT1vJiYobz0wKTt2YXIgYT1sLmRlbGF5Q2hpbGRyZW4saT12b2lkIDA9PT1hPzA6YSxjPWwuc3RhZ2dlckNoaWxkcmVuLHM9bC5zdGFnZ2VyRGlyZWN0aW9uO3JldHVybiBmdW5jdGlvbihlLHQsbixvLGEsaSl7dm9pZCAwPT09biYmKG49MCksdm9pZCAwPT09byYmKG89MCksdm9pZCAwPT09YSYmKGE9MSk7dmFyIGw9W10sYz0oZS52YXJpYW50Q2hpbGRyZW4uc2l6ZS0xKSpvLHM9MT09PWE/ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPTApLGUqb306ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPTApLGMtZSpvfTtyZXR1cm4gQXJyYXkuZnJvbShlLnZhcmlhbnRDaGlsZHJlbikuc29ydChRdCkuZm9yRWFjaCgoZnVuY3Rpb24oZSxvKXtsLnB1c2goS3QoZSx0LHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxpKSx7ZGVsYXk6bitzKG8pfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGUubm90aWZ5QW5pbWF0aW9uQ29tcGxldGUodCl9KSkpfSkpLFByb21pc2UuYWxsKGwpfShlLHQsaStvLGMscyxuKX06ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LHU9bC53aGVuO2lmKHUpe3ZhciBkPXIuX19yZWFkKFwiYmVmb3JlQ2hpbGRyZW5cIj09PXU/W2Msc106W3MsY10sMiksZj1kWzBdLHA9ZFsxXTtyZXR1cm4gZigpLnRoZW4ocCl9cmV0dXJuIFByb21pc2UuYWxsKFtjKCkscyhuLmRlbGF5KV0pfWZ1bmN0aW9uIFh0KGUsdCxuKXt2YXIgbyxhPXZvaWQgMD09PW4/e306bixpPWEuZGVsYXksbD12b2lkIDA9PT1pPzA6aSxjPWEudHJhbnNpdGlvbk92ZXJyaWRlLHM9YS50eXBlLHU9ZS5tYWtlVGFyZ2V0QW5pbWF0YWJsZSh0KSxkPXUudHJhbnNpdGlvbixmPXZvaWQgMD09PWQ/ZS5nZXREZWZhdWx0VHJhbnNpdGlvbigpOmQscD11LnRyYW5zaXRpb25FbmQsaD1yLl9fcmVzdCh1LFtcInRyYW5zaXRpb25cIixcInRyYW5zaXRpb25FbmRcIl0pO2MmJihmPWMpO3ZhciBDPVtdLHY9cyYmKG51bGw9PT0obz1lLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09bz92b2lkIDA6by5nZXRTdGF0ZSgpW3NdKTtmb3IodmFyIGcgaW4gaCl7dmFyIG09ZS5nZXRWYWx1ZShnKSx3PWhbZ107aWYoISghbXx8dm9pZCAwPT09d3x8diYmSnQodixnKSkpe3ZhciB5PVZ0KGcsbSx3LHIuX19hc3NpZ24oe2RlbGF5Omx9LGYpKTtDLnB1c2goeSl9fXJldHVybiBQcm9taXNlLmFsbChDKS50aGVuKChmdW5jdGlvbigpe3AmJk50KGUscCl9KSl9ZnVuY3Rpb24gUXQoZSx0KXtyZXR1cm4gZS5zb3J0Tm9kZVBvc2l0aW9uKHQpfWZ1bmN0aW9uIEp0KGUsdCl7dmFyIG49ZS5wcm90ZWN0ZWRLZXlzLHI9ZS5uZWVkc0FuaW1hdGluZyxvPW4uaGFzT3duUHJvcGVydHkodCkmJiEwIT09clt0XTtyZXR1cm4gclt0XT0hMSxvfXZhciBlbj1bQWUuQW5pbWF0ZSxBZS5Ib3ZlcixBZS5UYXAsQWUuRHJhZyxBZS5Gb2N1cyxBZS5FeGl0XSx0bj1yLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQoZW4pKS5yZXZlcnNlKCksbm49ZW4ubGVuZ3RoO2Z1bmN0aW9uIHJuKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSkse2lzQWN0aXZlOmUscHJvdGVjdGVkS2V5czp7fSxuZWVkc0FuaW1hdGluZzp7fSxwcmV2UmVzb2x2ZWRWYWx1ZXM6e319fXZhciBvbj17YW5pbWF0aW9uOmZ0KChmdW5jdGlvbihlKXt2YXIgdD1lLnZpc3VhbEVsZW1lbnQsbj1lLmFuaW1hdGU7dC5hbmltYXRpb25TdGF0ZXx8KHQuYW5pbWF0aW9uU3RhdGU9ZnVuY3Rpb24oZSl7dmFyIHQsbj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIFByb21pc2UuYWxsKHQubWFwKChmdW5jdGlvbih0KXt2YXIgbj10LmFuaW1hdGlvbixyPXQub3B0aW9ucztyZXR1cm4gWXQoZSxuLHIpfSkpKX19KGUpLG89KCh0PXt9KVtBZS5BbmltYXRlXT1ybighMCksdFtBZS5Ib3Zlcl09cm4oKSx0W0FlLlRhcF09cm4oKSx0W0FlLkRyYWddPXJuKCksdFtBZS5Gb2N1c109cm4oKSx0W0FlLkV4aXRdPXJuKCksdCksYT17fSxpPSEwLGw9ZnVuY3Rpb24odCxuKXt2YXIgbz1aKGUsbik7aWYobyl7by50cmFuc2l0aW9uO3ZhciBhPW8udHJhbnNpdGlvbkVuZCxpPXIuX19yZXN0KG8sW1widHJhbnNpdGlvblwiLFwidHJhbnNpdGlvbkVuZFwiXSk7dD1yLl9fYXNzaWduKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSx0KSxpKSxhKX1yZXR1cm4gdH07ZnVuY3Rpb24gYyh0LGMpe2Zvcih2YXIgcyx1PWUuZ2V0UHJvcHMoKSxkPWUuZ2V0VmFyaWFudENvbnRleHQoITApfHx7fSxmPVtdLHA9bmV3IFNldCxoPXt9LEM9MS8wLHY9ZnVuY3Rpb24obil7dmFyIGE9dG5bbl0sdj1vW2FdLGc9bnVsbCE9PShzPXVbYV0pJiZ2b2lkIDAhPT1zP3M6ZFthXSxtPVIoZyksdz1hPT09Yz92LmlzQWN0aXZlOm51bGw7ITE9PT13JiYoQz1uKTt2YXIgeT1nPT09ZFthXSYmZyE9PXVbYV0mJm07aWYoeSYmaSYmZS5tYW51YWxseUFuaW1hdGVPbk1vdW50JiYoeT0hMSksdi5wcm90ZWN0ZWRLZXlzPXIuX19hc3NpZ24oe30saCksIXYuaXNBY3RpdmUmJm51bGw9PT13fHwhZyYmIXYucHJldlByb3B8fEVlKGcpfHxcImJvb2xlYW5cIj09dHlwZW9mIGcpcmV0dXJuXCJjb250aW51ZVwiO3ZhciBiPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/dCE9PWU6ISFWKHQpJiYhaHQodCxlKX0odi5wcmV2UHJvcCxnKXx8YT09PWMmJnYuaXNBY3RpdmUmJiF5JiZtfHxuPkMmJm0seD1BcnJheS5pc0FycmF5KGcpP2c6W2ddLE89eC5yZWR1Y2UobCx7fSk7ITE9PT13JiYoTz17fSk7dmFyIEw9di5wcmV2UmVzb2x2ZWRWYWx1ZXMsTT12b2lkIDA9PT1MP3t9OkwsUz1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sTSksTyksXz1mdW5jdGlvbihlKXtiPSEwLHAuZGVsZXRlKGUpLHYubmVlZHNBbmltYXRpbmdbZV09ITB9O2Zvcih2YXIgaiBpbiBTKXt2YXIgRT1PW2pdLFA9TVtqXTtoLmhhc093blByb3BlcnR5KGopfHwoRSE9PVA/UGUoRSkmJlBlKFApP2h0KEUsUCk/di5wcm90ZWN0ZWRLZXlzW2pdPSEwOl8oaik6dm9pZCAwIT09RT9fKGopOnAuYWRkKGopOnZvaWQgMCE9PUUmJnAuaGFzKGopP18oaik6di5wcm90ZWN0ZWRLZXlzW2pdPSEwKX12LnByZXZQcm9wPWcsdi5wcmV2UmVzb2x2ZWRWYWx1ZXM9Tyx2LmlzQWN0aXZlJiYoaD1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30saCksTykpLGkmJmUuYmxvY2tJbml0aWFsQW5pbWF0aW9uJiYoYj0hMSksYiYmIXkmJmYucHVzaC5hcHBseShmLHIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZCh4Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJue2FuaW1hdGlvbjplLG9wdGlvbnM6ci5fX2Fzc2lnbih7dHlwZTphfSx0KX19KSkpKSl9LGc9MDtnPG5uO2crKyl2KGcpO2lmKGE9ci5fX2Fzc2lnbih7fSxoKSxwLnNpemUpe3ZhciBtPXt9O3AuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49ZS5nZXRCYXNlVGFyZ2V0KHQpO3ZvaWQgMCE9PW4mJihtW3RdPW4pfSkpLGYucHVzaCh7YW5pbWF0aW9uOm19KX12YXIgdz1Cb29sZWFuKGYubGVuZ3RoKTtyZXR1cm4gaSYmITE9PT11LmluaXRpYWwmJiFlLm1hbnVhbGx5QW5pbWF0ZU9uTW91bnQmJih3PSExKSxpPSExLHc/bihmKTpQcm9taXNlLnJlc29sdmUoKX1yZXR1cm57aXNBbmltYXRlZDpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09YVtlXX0sYW5pbWF0ZUNoYW5nZXM6YyxzZXRBY3RpdmU6ZnVuY3Rpb24odCxuLHIpe3ZhciBhO3JldHVybiBvW3RdLmlzQWN0aXZlPT09bj9Qcm9taXNlLnJlc29sdmUoKToobnVsbD09PShhPWUudmFyaWFudENoaWxkcmVuKXx8dm9pZCAwPT09YXx8YS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcjtyZXR1cm4gbnVsbD09PShyPWUuYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnNldEFjdGl2ZSh0LG4pfSkpLG9bdF0uaXNBY3RpdmU9bixjKHIsdCkpfSxzZXRBbmltYXRlRnVuY3Rpb246ZnVuY3Rpb24odCl7bj10KGUpfSxnZXRTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBvfX19KHQpKSxFZShuKSYmby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uc3Vic2NyaWJlKHQpfSksW25dKX0pKSxleGl0OmZ0KChmdW5jdGlvbihlKXt2YXIgdD1lLmN1c3RvbSxuPWUudmlzdWFsRWxlbWVudCxhPXIuX19yZWFkKEwoKSwyKSxpPWFbMF0sbD1hWzFdLGM9by51c2VDb250ZXh0KHgpO28udXNlRWZmZWN0KChmdW5jdGlvbigpe3ZhciBlLHIsbz1udWxsPT09KGU9bi5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuc2V0QWN0aXZlKEFlLkV4aXQsIWkse2N1c3RvbTpudWxsIT09KHI9bnVsbD09Yz92b2lkIDA6Yy5jdXN0b20pJiZ2b2lkIDAhPT1yP3I6dH0pOyFpJiYobnVsbD09b3x8by50aGVuKGwpKX0pLFtpXSl9KSl9LGFuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbil7dmFyIG89dGhpcyxhPSh2b2lkIDA9PT1uP3t9Om4pLnRyYW5zZm9ybVBhZ2VQb2ludDtpZih0aGlzLnN0YXJ0RXZlbnQ9bnVsbCx0aGlzLmxhc3RNb3ZlRXZlbnQ9bnVsbCx0aGlzLmxhc3RNb3ZlRXZlbnRJbmZvPW51bGwsdGhpcy5oYW5kbGVycz17fSx0aGlzLnVwZGF0ZVBvaW50PWZ1bmN0aW9uKCl7aWYoby5sYXN0TW92ZUV2ZW50JiZvLmxhc3RNb3ZlRXZlbnRJbmZvKXt2YXIgZT1zbihvLmxhc3RNb3ZlRXZlbnRJbmZvLG8uaGlzdG9yeSksdD1udWxsIT09by5zdGFydEV2ZW50LG49bC5kaXN0YW5jZShlLm9mZnNldCx7eDowLHk6MH0pPj0zO2lmKHR8fG4pe3ZhciBhPWUucG9pbnQsaT1jLmdldEZyYW1lRGF0YSgpLnRpbWVzdGFtcDtvLmhpc3RvcnkucHVzaChyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sYSkse3RpbWVzdGFtcDppfSkpO3ZhciBzPW8uaGFuZGxlcnMsdT1zLm9uU3RhcnQsZD1zLm9uTW92ZTt0fHwodSYmdShvLmxhc3RNb3ZlRXZlbnQsZSksby5zdGFydEV2ZW50PW8ubGFzdE1vdmVFdmVudCksZCYmZChvLmxhc3RNb3ZlRXZlbnQsZSl9fX0sdGhpcy5oYW5kbGVQb2ludGVyTW92ZT1mdW5jdGlvbihlLHQpe28ubGFzdE1vdmVFdmVudD1lLG8ubGFzdE1vdmVFdmVudEluZm89bG4odCxvLnRyYW5zZm9ybVBhZ2VQb2ludCksV2UoZSkmJjA9PT1lLmJ1dHRvbnM/by5oYW5kbGVQb2ludGVyVXAoZSx0KTpmLmRlZmF1bHQudXBkYXRlKG8udXBkYXRlUG9pbnQsITApfSx0aGlzLmhhbmRsZVBvaW50ZXJVcD1mdW5jdGlvbihlLHQpe28uZW5kKCk7dmFyIG49by5oYW5kbGVycyxyPW4ub25FbmQsYT1uLm9uU2Vzc2lvbkVuZCxpPXNuKGxuKHQsby50cmFuc2Zvcm1QYWdlUG9pbnQpLG8uaGlzdG9yeSk7by5zdGFydEV2ZW50JiZyJiZyKGUsaSksYSYmYShlLGkpfSwhKE5lKGUpJiZlLnRvdWNoZXMubGVuZ3RoPjEpKXt0aGlzLmhhbmRsZXJzPXQsdGhpcy50cmFuc2Zvcm1QYWdlUG9pbnQ9YTt2YXIgaT1sbihxZShlKSx0aGlzLnRyYW5zZm9ybVBhZ2VQb2ludCkscz1pLnBvaW50LHU9Yy5nZXRGcmFtZURhdGEoKS50aW1lc3RhbXA7dGhpcy5oaXN0b3J5PVtyLl9fYXNzaWduKHIuX19hc3NpZ24oe30scykse3RpbWVzdGFtcDp1fSldO3ZhciBkPXQub25TZXNzaW9uU3RhcnQ7ZCYmZChlLHNuKGksdGhpcy5oaXN0b3J5KSksdGhpcy5yZW1vdmVMaXN0ZW5lcnM9bC5waXBlKG50KHdpbmRvdyxcInBvaW50ZXJtb3ZlXCIsdGhpcy5oYW5kbGVQb2ludGVyTW92ZSksbnQod2luZG93LFwicG9pbnRlcnVwXCIsdGhpcy5oYW5kbGVQb2ludGVyVXApLG50KHdpbmRvdyxcInBvaW50ZXJjYW5jZWxcIix0aGlzLmhhbmRsZVBvaW50ZXJVcCkpfX1yZXR1cm4gZS5wcm90b3R5cGUudXBkYXRlSGFuZGxlcnM9ZnVuY3Rpb24oZSl7dGhpcy5oYW5kbGVycz1lfSxlLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUxpc3RlbmVycyYmdGhpcy5yZW1vdmVMaXN0ZW5lcnMoKSxjLmNhbmNlbFN5bmMudXBkYXRlKHRoaXMudXBkYXRlUG9pbnQpfSxlfSgpO2Z1bmN0aW9uIGxuKGUsdCl7cmV0dXJuIHQ/e3BvaW50OnQoZS5wb2ludCl9OmV9ZnVuY3Rpb24gY24oZSx0KXtyZXR1cm57eDplLngtdC54LHk6ZS55LXQueX19ZnVuY3Rpb24gc24oZSx0KXt2YXIgbj1lLnBvaW50O3JldHVybntwb2ludDpuLGRlbHRhOmNuKG4sZG4odCkpLG9mZnNldDpjbihuLHVuKHQpKSx2ZWxvY2l0eTpmbih0LC4xKX19ZnVuY3Rpb24gdW4oZSl7cmV0dXJuIGVbMF19ZnVuY3Rpb24gZG4oZSl7cmV0dXJuIGVbZS5sZW5ndGgtMV19ZnVuY3Rpb24gZm4oZSx0KXtpZihlLmxlbmd0aDwyKXJldHVybnt4OjAseTowfTtmb3IodmFyIG49ZS5sZW5ndGgtMSxyPW51bGwsbz1kbihlKTtuPj0wJiYocj1lW25dLCEoby50aW1lc3RhbXAtci50aW1lc3RhbXA+Q3QodCkpKTspbi0tO2lmKCFyKXJldHVybnt4OjAseTowfTt2YXIgYT0oby50aW1lc3RhbXAtci50aW1lc3RhbXApLzFlMztpZigwPT09YSlyZXR1cm57eDowLHk6MH07dmFyIGk9e3g6KG8ueC1yLngpL2EseTooby55LXIueSkvYX07cmV0dXJuIGkueD09PTEvMCYmKGkueD0wKSxpLnk9PT0xLzAmJihpLnk9MCksaX1mdW5jdGlvbiBwbihlKXtyZXR1cm4gZX1mdW5jdGlvbiBobihlKXt2YXIgdD1lLnRvcDtyZXR1cm57eDp7bWluOmUubGVmdCxtYXg6ZS5yaWdodH0seTp7bWluOnQsbWF4OmUuYm90dG9tfX19dmFyIENuPXt0cmFuc2xhdGU6MCxzY2FsZToxLG9yaWdpbjowLG9yaWdpblBvaW50OjB9O2Z1bmN0aW9uIHZuKCl7cmV0dXJue3g6ci5fX2Fzc2lnbih7fSxDbikseTpyLl9fYXNzaWduKHt9LENuKX19ZnVuY3Rpb24gZ24oZSl7cmV0dXJuW2UoXCJ4XCIpLGUoXCJ5XCIpXX1mdW5jdGlvbiBtbihlLHQsbil7cmV0dXJuIHZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PW4mJihuPS4wMSksbC5kaXN0YW5jZShlLHQpPG59ZnVuY3Rpb24gd24oZSl7cmV0dXJuIGUubWF4LWUubWlufWZ1bmN0aW9uIHluKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPS41KSxlLm9yaWdpbj1yLGUub3JpZ2luUG9pbnQ9bC5taXgodC5taW4sdC5tYXgsZS5vcmlnaW4pLGUuc2NhbGU9d24obikvd24odCksbW4oZS5zY2FsZSwxLDFlLTQpJiYoZS5zY2FsZT0xKSxlLnRyYW5zbGF0ZT1sLm1peChuLm1pbixuLm1heCxlLm9yaWdpbiktZS5vcmlnaW5Qb2ludCxtbihlLnRyYW5zbGF0ZSkmJihlLnRyYW5zbGF0ZT0wKX1mdW5jdGlvbiBibihlLHQsbixyKXt5bihlLngsdC54LG4ueCx4bihyLm9yaWdpblgpKSx5bihlLnksdC55LG4ueSx4bihyLm9yaWdpblkpKX1mdW5jdGlvbiB4bihlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT9lOi41fWZ1bmN0aW9uIE9uKGUsdCxuKXtlLm1pbj1uLm1pbit0Lm1pbixlLm1heD1lLm1pbit3bih0KX1mdW5jdGlvbiBMbihlLHQsbil7dmFyIHI9dC5taW4sbz10Lm1heDtyZXR1cm4gdm9pZCAwIT09ciYmZTxyP2U9bj9sLm1peChyLGUsbi5taW4pOk1hdGgubWF4KGUscik6dm9pZCAwIT09byYmZT5vJiYoZT1uP2wubWl4KG8sZSxuLm1heCk6TWF0aC5taW4oZSxvKSksZX1mdW5jdGlvbiBNbihlLHQsbil7cmV0dXJue21pbjp2b2lkIDAhPT10P2UubWluK3Q6dm9pZCAwLG1heDp2b2lkIDAhPT1uP2UubWF4K24tKGUubWF4LWUubWluKTp2b2lkIDB9fWZ1bmN0aW9uIFNuKGUsdCl7dmFyIG4sbz10Lm1pbi1lLm1pbixhPXQubWF4LWUubWF4O3JldHVybiB0Lm1heC10Lm1pbjxlLm1heC1lLm1pbiYmKG89KG49ci5fX3JlYWQoW2Esb10sMikpWzBdLGE9blsxXSkse21pbjplLm1pbitvLG1heDplLm1pbithfX1mdW5jdGlvbiBfbihlLHQsbil7cmV0dXJue21pbjpqbihlLHQpLG1heDpqbihlLG4pfX1mdW5jdGlvbiBqbihlLHQpe3ZhciBuO3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlP2U6bnVsbCE9PShuPWVbdF0pJiZ2b2lkIDAhPT1uP246MH1mdW5jdGlvbiBFbihlLHQpe3JldHVybiBobihmdW5jdGlvbihlLHQpe3ZhciBuPWUudG9wLHI9ZS5sZWZ0LG89ZS5ib3R0b20sYT1lLnJpZ2h0O3ZvaWQgMD09PXQmJih0PXBuKTt2YXIgaT10KHt4OnIseTpufSksbD10KHt4OmEseTpvfSk7cmV0dXJue3RvcDppLnksbGVmdDppLngsYm90dG9tOmwueSxyaWdodDpsLnh9fShlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQpKX12YXIgUG49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5kZXB0aC10LmRlcHRofTtmdW5jdGlvbiBrbihlKXtyZXR1cm4gZS5wcm9qZWN0aW9uLmlzRW5hYmxlZHx8ZS5zaG91bGRSZXNldFRyYW5zZm9ybSgpfWZ1bmN0aW9uIEhuKGUsdCl7dm9pZCAwPT09dCYmKHQ9W10pO3ZhciBuPWUucGFyZW50O3JldHVybiBuJiZIbihuLHQpLGtuKGUpJiZ0LnB1c2goZSksdH1mdW5jdGlvbiBWbihlKXtpZighZS5zaG91bGRSZXNldFRyYW5zZm9ybSgpKXt2YXIgdCxuPWUuZ2V0TGF5b3V0U3RhdGUoKTtlLm5vdGlmeUJlZm9yZUxheW91dE1lYXN1cmUobi5sYXlvdXQpLG4uaXNIeWRyYXRlZD0hMCxuLmxheW91dD1lLm1lYXN1cmVWaWV3cG9ydEJveCgpLG4ubGF5b3V0Q29ycmVjdGVkPSh0PW4ubGF5b3V0LHt4OnIuX19hc3NpZ24oe30sdC54KSx5OnIuX19hc3NpZ24oe30sdC55KX0pLGUubm90aWZ5TGF5b3V0TWVhc3VyZShuLmxheW91dCxlLnByZXZWaWV3cG9ydEJveHx8bi5sYXlvdXQpLGYuZGVmYXVsdC51cGRhdGUoKGZ1bmN0aW9uKCl7cmV0dXJuIGUucmViYXNlUHJvamVjdGlvblRhcmdldCgpfSkpfX1mdW5jdGlvbiBSbihlKXtlLnNob3VsZFJlc2V0VHJhbnNmb3JtKCl8fChlLnByZXZWaWV3cG9ydEJveD1lLm1lYXN1cmVWaWV3cG9ydEJveCghMSksZS5yZWJhc2VQcm9qZWN0aW9uVGFyZ2V0KCExLGUucHJldlZpZXdwb3J0Qm94KSl9ZnVuY3Rpb24gSW4oZSx0KXtyZXR1cm57bWluOnQubWluLWUubWluLG1heDp0Lm1heC1lLm1pbn19ZnVuY3Rpb24gWm4oZSx0KXtyZXR1cm57eDpJbihlLngsdC54KSx5OkluKGUueSx0LnkpfX1mdW5jdGlvbiBBbihlKXt2YXIgdD1lLmdldFByb3BzKCksbj10LmRyYWcscj10Ll9kcmFnWDtyZXR1cm4gbiYmIXJ9ZnVuY3Rpb24gRG4oZSx0KXtlLm1pbj10Lm1pbixlLm1heD10Lm1heH1mdW5jdGlvbiBCbihlLHQsbil7cmV0dXJuIG4rdCooZS1uKX1mdW5jdGlvbiBUbihlLHQsbixyLG8pe3JldHVybiB2b2lkIDAhPT1vJiYoZT1CbihlLG8scikpLEJuKGUsbixyKSt0fWZ1bmN0aW9uICRuKGUsdCxuLHIsbyl7dm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09biYmKG49MSksZS5taW49VG4oZS5taW4sdCxuLHIsbyksZS5tYXg9VG4oZS5tYXgsdCxuLHIsbyl9ZnVuY3Rpb24gRm4oZSx0KXt2YXIgbj10Lngscj10Lnk7JG4oZS54LG4udHJhbnNsYXRlLG4uc2NhbGUsbi5vcmlnaW5Qb2ludCksJG4oZS55LHIudHJhbnNsYXRlLHIuc2NhbGUsci5vcmlnaW5Qb2ludCl9ZnVuY3Rpb24gV24oZSx0LG4sbyl7dmFyIGE9ci5fX3JlYWQobywzKSxpPWFbMF0sYz1hWzFdLHM9YVsyXTtlLm1pbj10Lm1pbixlLm1heD10Lm1heDt2YXIgdT12b2lkIDAhPT1uW3NdP25bc106LjUsZD1sLm1peCh0Lm1pbix0Lm1heCx1KTskbihlLG5baV0sbltjXSxkLG4uc2NhbGUpfXZhciBObj1bXCJ4XCIsXCJzY2FsZVhcIixcIm9yaWdpblhcIl0sem49W1wieVwiLFwic2NhbGVZXCIsXCJvcmlnaW5ZXCJdO2Z1bmN0aW9uIFVuKGUsdCxuKXtXbihlLngsdC54LG4sTm4pLFduKGUueSx0Lnksbix6bil9ZnVuY3Rpb24gR24oZSx0LG4scixvKXtyZXR1cm4gZT1CbihlLT10LDEvbixyKSx2b2lkIDAhPT1vJiYoZT1CbihlLDEvbyxyKSksZX1mdW5jdGlvbiBxbihlLHQsbil7dmFyIG89ci5fX3JlYWQobiwzKSxhPW9bMF0saT1vWzFdLGM9b1syXTshZnVuY3Rpb24oZSx0LG4scixvKXt2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1uJiYobj0xKSx2b2lkIDA9PT1yJiYocj0uNSk7dmFyIGE9bC5taXgoZS5taW4sZS5tYXgsciktdDtlLm1pbj1HbihlLm1pbix0LG4sYSxvKSxlLm1heD1HbihlLm1heCx0LG4sYSxvKX0oZSx0W2FdLHRbaV0sdFtjXSx0LnNjYWxlKX1mdW5jdGlvbiBZbihlLHQpe3FuKGUueCx0LE5uKSxxbihlLnksdCx6bil9dmFyIEtuPW5ldyBTZXQ7ZnVuY3Rpb24gWG4oZSx0LG4pe2Vbbl18fChlW25dPVtdKSxlW25dLnB1c2godCl9ZnVuY3Rpb24gUW4oZSl7cmV0dXJuIEtuLmFkZChlKSxmdW5jdGlvbigpe3JldHVybiBLbi5kZWxldGUoZSl9fWZ1bmN0aW9uIEpuKCl7aWYoS24uc2l6ZSl7dmFyIGU9MCx0PVtbXV0sbj1bXSxyPWZ1bmN0aW9uKG4pe3JldHVybiBYbih0LG4sZSl9LG89ZnVuY3Rpb24odCl7WG4obix0LGUpLGUrK307S24uZm9yRWFjaCgoZnVuY3Rpb24odCl7dChyLG8pLGU9MH0pKSxLbi5jbGVhcigpO2Zvcih2YXIgYT1uLmxlbmd0aCxpPTA7aTw9YTtpKyspdFtpXSYmdFtpXS5mb3JFYWNoKHRyKSxuW2ldJiZuW2ldLmZvckVhY2godHIpfX12YXIgZXIsdHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0sbnI9bmV3IFdlYWtNYXAscnI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciB0PWUudmlzdWFsRWxlbWVudDt0aGlzLmlzRHJhZ2dpbmc9ITEsdGhpcy5jdXJyZW50RGlyZWN0aW9uPW51bGwsdGhpcy5jb25zdHJhaW50cz0hMSx0aGlzLmVsYXN0aWM9e3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19LHRoaXMucHJvcHM9e30sdGhpcy5oYXNNdXRhdGVkQ29uc3RyYWludHM9ITEsdGhpcy5jdXJzb3JQcm9ncmVzcz17eDouNSx5Oi41fSx0aGlzLm9yaWdpblBvaW50PXt9LHRoaXMub3Blbkdsb2JhbExvY2s9bnVsbCx0aGlzLnBhblNlc3Npb249bnVsbCx0aGlzLnZpc3VhbEVsZW1lbnQ9dCx0aGlzLnZpc3VhbEVsZW1lbnQuZW5hYmxlTGF5b3V0UHJvamVjdGlvbigpLG5yLnNldCh0LHRoaXMpfXJldHVybiBlLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMsbz12b2lkIDA9PT10P3t9OnQsYT1vLnNuYXBUb0N1cnNvcixpPXZvaWQgMCE9PWEmJmEscz1vLmN1cnNvclByb2dyZXNzLHU9dGhpcy5wcm9wcy50cmFuc2Zvcm1QYWdlUG9pbnQ7dGhpcy5wYW5TZXNzaW9uPW5ldyBhbihlLHtvblNlc3Npb25TdGFydDpmdW5jdGlvbihlKXt2YXIgdDtuLnN0b3BNb3Rpb24oKTt2YXIgbz1mdW5jdGlvbihlKXtyZXR1cm4gcWUoZSxcImNsaWVudFwiKX0oZSkucG9pbnQ7bnVsbD09PSh0PW4uY2FuY2VsTGF5b3V0KXx8dm9pZCAwPT09dHx8dC5jYWxsKG4pLG4uY2FuY2VsTGF5b3V0PVFuKChmdW5jdGlvbihlLHQpe3ZhciBhPUhuKG4udmlzdWFsRWxlbWVudCksdT1mdW5jdGlvbihlKXt2YXIgdD1bXSxuPWZ1bmN0aW9uKGUpe2tuKGUpJiZ0LnB1c2goZSksZS5jaGlsZHJlbi5mb3JFYWNoKG4pfTtyZXR1cm4gZS5jaGlsZHJlbi5mb3JFYWNoKG4pLHQuc29ydChQbil9KG4udmlzdWFsRWxlbWVudCksZD1yLl9fc3ByZWFkQXJyYXkoci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKGEpKSxyLl9fcmVhZCh1KSksZj0hMTtuLmlzTGF5b3V0RHJhZygpJiZuLnZpc3VhbEVsZW1lbnQubG9ja1Byb2plY3Rpb25UYXJnZXQoKSx0KChmdW5jdGlvbigpe2QuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVzZXRUcmFuc2Zvcm0oKX0pKX0pKSxlKChmdW5jdGlvbigpe1ZuKG4udmlzdWFsRWxlbWVudCksdS5mb3JFYWNoKFZuKX0pKSx0KChmdW5jdGlvbigpe2QuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVzdG9yZVRyYW5zZm9ybSgpfSkpLGkmJihmPW4uc25hcFRvQ3Vyc29yKG8pKX0pKSxlKChmdW5jdGlvbigpe0Jvb2xlYW4obi5nZXRBeGlzTW90aW9uVmFsdWUoXCJ4XCIpJiYhbi5pc0V4dGVybmFsRHJhZygpKXx8bi52aXN1YWxFbGVtZW50LnJlYmFzZVByb2plY3Rpb25UYXJnZXQoITAsbi52aXN1YWxFbGVtZW50Lm1lYXN1cmVWaWV3cG9ydEJveCghMSkpLG4udmlzdWFsRWxlbWVudC5zY2hlZHVsZVVwZGF0ZUxheW91dFByb2plY3Rpb24oKTt2YXIgZT1uLnZpc3VhbEVsZW1lbnQucHJvamVjdGlvbjtnbigoZnVuY3Rpb24odCl7aWYoIWYpe3ZhciByPWUudGFyZ2V0W3RdLGE9ci5taW4saT1yLm1heDtuLmN1cnNvclByb2dyZXNzW3RdPXM/c1t0XTpsLnByb2dyZXNzKGEsaSxvW3RdKX12YXIgYz1uLmdldEF4aXNNb3Rpb25WYWx1ZSh0KTtjJiYobi5vcmlnaW5Qb2ludFt0XT1jLmdldCgpKX0pKX0pKSx0KChmdW5jdGlvbigpe2MuZmx1c2hTeW5jLnVwZGF0ZSgpLGMuZmx1c2hTeW5jLnByZVJlbmRlcigpLGMuZmx1c2hTeW5jLnJlbmRlcigpLGMuZmx1c2hTeW5jLnBvc3RSZW5kZXIoKX0pKSxlKChmdW5jdGlvbigpe3JldHVybiBuLnJlc29sdmVEcmFnQ29uc3RyYWludHMoKX0pKX0pKX0sb25TdGFydDpmdW5jdGlvbihlLHQpe3ZhciByLG8sYSxpPW4ucHJvcHMsbD1pLmRyYWcsYz1pLmRyYWdQcm9wYWdhdGlvbjsoIWx8fGN8fChuLm9wZW5HbG9iYWxMb2NrJiZuLm9wZW5HbG9iYWxMb2NrKCksbi5vcGVuR2xvYmFsTG9jaz1sdChsKSxuLm9wZW5HbG9iYWxMb2NrKSkmJihKbigpLG4uaXNEcmFnZ2luZz0hMCxuLmN1cnJlbnREaXJlY3Rpb249bnVsbCxudWxsPT09KG89KHI9bi5wcm9wcykub25EcmFnU3RhcnQpfHx2b2lkIDA9PT1vfHxvLmNhbGwocixlLHQpLG51bGw9PT0oYT1uLnZpc3VhbEVsZW1lbnQuYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1hfHxhLnNldEFjdGl2ZShBZS5EcmFnLCEwKSl9LG9uTW92ZTpmdW5jdGlvbihlLHQpe3ZhciByLG8sYSxpLGw9bi5wcm9wcyxjPWwuZHJhZ1Byb3BhZ2F0aW9uLHM9bC5kcmFnRGlyZWN0aW9uTG9jaztpZihjfHxuLm9wZW5HbG9iYWxMb2NrKXt2YXIgdT10Lm9mZnNldDtpZihzJiZudWxsPT09bi5jdXJyZW50RGlyZWN0aW9uKXJldHVybiBuLmN1cnJlbnREaXJlY3Rpb249ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0xMCk7dmFyIG49bnVsbDtyZXR1cm4gTWF0aC5hYnMoZS55KT50P249XCJ5XCI6TWF0aC5hYnMoZS54KT50JiYobj1cInhcIiksbn0odSksdm9pZChudWxsIT09bi5jdXJyZW50RGlyZWN0aW9uJiYobnVsbD09PShvPShyPW4ucHJvcHMpLm9uRGlyZWN0aW9uTG9jayl8fHZvaWQgMD09PW98fG8uY2FsbChyLG4uY3VycmVudERpcmVjdGlvbikpKTtuLnVwZGF0ZUF4aXMoXCJ4XCIsdC5wb2ludCx1KSxuLnVwZGF0ZUF4aXMoXCJ5XCIsdC5wb2ludCx1KSxudWxsPT09KGk9KGE9bi5wcm9wcykub25EcmFnKXx8dm9pZCAwPT09aXx8aS5jYWxsKGEsZSx0KSxlcj1lfX0sb25TZXNzaW9uRW5kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4uc3RvcChlLHQpfX0se3RyYW5zZm9ybVBhZ2VQb2ludDp1fSl9LGUucHJvdG90eXBlLnJlc29sdmVEcmFnQ29uc3RyYWludHM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxuPXQuZHJhZ0NvbnN0cmFpbnRzLHI9dC5kcmFnRWxhc3RpYyxvPXRoaXMudmlzdWFsRWxlbWVudC5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dENvcnJlY3RlZDt0aGlzLmNvbnN0cmFpbnRzPSEhbiYmKEgobik/dGhpcy5yZXNvbHZlUmVmQ29uc3RyYWludHMobyxuKTpmdW5jdGlvbihlLHQpe3ZhciBuPXQudG9wLHI9dC5sZWZ0LG89dC5ib3R0b20sYT10LnJpZ2h0O3JldHVybnt4Ok1uKGUueCxyLGEpLHk6TW4oZS55LG4sbyl9fShvLG4pKSx0aGlzLmVsYXN0aWM9ZnVuY3Rpb24oZSl7cmV0dXJuITE9PT1lP2U9MDohMD09PWUmJihlPS4zNSkse3g6X24oZSxcImxlZnRcIixcInJpZ2h0XCIpLHk6X24oZSxcInRvcFwiLFwiYm90dG9tXCIpfX0ociksdGhpcy5jb25zdHJhaW50cyYmIXRoaXMuaGFzTXV0YXRlZENvbnN0cmFpbnRzJiZnbigoZnVuY3Rpb24odCl7ZS5nZXRBeGlzTW90aW9uVmFsdWUodCkmJihlLmNvbnN0cmFpbnRzW3RdPWZ1bmN0aW9uKGUsdCl7dmFyIG49e307cmV0dXJuIHZvaWQgMCE9PXQubWluJiYobi5taW49dC5taW4tZS5taW4pLHZvaWQgMCE9PXQubWF4JiYobi5tYXg9dC5tYXgtZS5taW4pLG59KG9bdF0sZS5jb25zdHJhaW50c1t0XSkpfSkpfSxlLnByb3RvdHlwZS5yZXNvbHZlUmVmQ29uc3RyYWludHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnByb3BzLHI9bi5vbk1lYXN1cmVEcmFnQ29uc3RyYWludHMsbz1uLnRyYW5zZm9ybVBhZ2VQb2ludCxpPXQuY3VycmVudDthLmludmFyaWFudChudWxsIT09aSxcIklmIGBkcmFnQ29uc3RyYWludHNgIGlzIHNldCBhcyBhIFJlYWN0IHJlZiwgdGhhdCByZWYgbXVzdCBiZSBwYXNzZWQgdG8gYW5vdGhlciBjb21wb25lbnQncyBgcmVmYCBwcm9wLlwiKSx0aGlzLmNvbnN0cmFpbnRzQm94PUVuKGksbyk7dmFyIGw9ZnVuY3Rpb24oZSx0KXtyZXR1cm57eDpTbihlLngsdC54KSx5OlNuKGUueSx0LnkpfX0oZSx0aGlzLmNvbnN0cmFpbnRzQm94KTtpZihyKXt2YXIgYz1yKGZ1bmN0aW9uKGUpe3ZhciB0PWUueCxuPWUueTtyZXR1cm57dG9wOm4ubWluLGJvdHRvbTpuLm1heCxsZWZ0OnQubWluLHJpZ2h0OnQubWF4fX0obCkpO3RoaXMuaGFzTXV0YXRlZENvbnN0cmFpbnRzPSEhYyxjJiYobD1obihjKSl9cmV0dXJuIGx9LGUucHJvdG90eXBlLmNhbmNlbERyYWc9ZnVuY3Rpb24oKXt2YXIgZSx0O3RoaXMudmlzdWFsRWxlbWVudC51bmxvY2tQcm9qZWN0aW9uVGFyZ2V0KCksbnVsbD09PShlPXRoaXMuY2FuY2VsTGF5b3V0KXx8dm9pZCAwPT09ZXx8ZS5jYWxsKHRoaXMpLHRoaXMuaXNEcmFnZ2luZz0hMSx0aGlzLnBhblNlc3Npb24mJnRoaXMucGFuU2Vzc2lvbi5lbmQoKSx0aGlzLnBhblNlc3Npb249bnVsbCwhdGhpcy5wcm9wcy5kcmFnUHJvcGFnYXRpb24mJnRoaXMub3Blbkdsb2JhbExvY2smJih0aGlzLm9wZW5HbG9iYWxMb2NrKCksdGhpcy5vcGVuR2xvYmFsTG9jaz1udWxsKSxudWxsPT09KHQ9dGhpcy52aXN1YWxFbGVtZW50LmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09dHx8dC5zZXRBY3RpdmUoQWUuRHJhZywhMSl9LGUucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG87bnVsbD09PShuPXRoaXMucGFuU2Vzc2lvbil8fHZvaWQgMD09PW58fG4uZW5kKCksdGhpcy5wYW5TZXNzaW9uPW51bGw7dmFyIGE9dGhpcy5pc0RyYWdnaW5nO2lmKHRoaXMuY2FuY2VsRHJhZygpLGEpe3ZhciBpPXQudmVsb2NpdHk7dGhpcy5hbmltYXRlRHJhZ0VuZChpKSxudWxsPT09KG89KHI9dGhpcy5wcm9wcykub25EcmFnRW5kKXx8dm9pZCAwPT09b3x8by5jYWxsKHIsZSx0KX19LGUucHJvdG90eXBlLnNuYXBUb0N1cnNvcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBnbigoZnVuY3Rpb24obil7aWYob3Iobix0LnByb3BzLmRyYWcsdC5jdXJyZW50RGlyZWN0aW9uKSl7dmFyIHI9dC5nZXRBeGlzTW90aW9uVmFsdWUobik7aWYoIXIpcmV0dXJuIHQuY3Vyc29yUHJvZ3Jlc3Nbbl09LjUsITA7dmFyIG89dC52aXN1YWxFbGVtZW50LmdldExheW91dFN0YXRlKCkubGF5b3V0LGE9b1tuXS5tYXgtb1tuXS5taW4saT1vW25dLm1pbithLzIsbD1lW25dLWk7dC5vcmlnaW5Qb2ludFtuXT1lW25dLHIuc2V0KGwpfX0pKS5pbmNsdWRlcyghMCl9LGUucHJvdG90eXBlLnVwZGF0ZUF4aXM9ZnVuY3Rpb24oZSx0LG4pe2lmKG9yKGUsdGhpcy5wcm9wcy5kcmFnLHRoaXMuY3VycmVudERpcmVjdGlvbikpcmV0dXJuIHRoaXMuZ2V0QXhpc01vdGlvblZhbHVlKGUpP3RoaXMudXBkYXRlQXhpc01vdGlvblZhbHVlKGUsbik6dGhpcy51cGRhdGVWaXN1YWxFbGVtZW50QXhpcyhlLHQpfSxlLnByb3RvdHlwZS51cGRhdGVBeGlzTW90aW9uVmFsdWU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmdldEF4aXNNb3Rpb25WYWx1ZShlKTtpZih0JiZuKXt2YXIgcj10aGlzLm9yaWdpblBvaW50W2VdK3RbZV0sbz10aGlzLmNvbnN0cmFpbnRzP0xuKHIsdGhpcy5jb25zdHJhaW50c1tlXSx0aGlzLmVsYXN0aWNbZV0pOnI7bi5zZXQobyl9fSxlLnByb3RvdHlwZS51cGRhdGVWaXN1YWxFbGVtZW50QXhpcz1mdW5jdGlvbihlLHQpe3ZhciBuLHI9dGhpcy52aXN1YWxFbGVtZW50LmdldExheW91dFN0YXRlKCkubGF5b3V0W2VdLG89ci5tYXgtci5taW4sYT10aGlzLmN1cnNvclByb2dyZXNzW2VdLGk9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgYT1lLXQqbjtyZXR1cm4gcj9MbihhLHIsbyk6YX0odFtlXSxvLGEsbnVsbD09PShuPXRoaXMuY29uc3RyYWludHMpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuW2VdLHRoaXMuZWxhc3RpY1tlXSk7dGhpcy52aXN1YWxFbGVtZW50LnNldFByb2plY3Rpb25UYXJnZXRBeGlzKGUsaSxpK28pfSxlLnByb3RvdHlwZS5zZXRQcm9wcz1mdW5jdGlvbihlKXt2YXIgdD1lLmRyYWcsbj12b2lkIDAhPT10JiZ0LG89ZS5kcmFnRGlyZWN0aW9uTG9jayxhPXZvaWQgMCE9PW8mJm8saT1lLmRyYWdQcm9wYWdhdGlvbixsPXZvaWQgMCE9PWkmJmksYz1lLmRyYWdDb25zdHJhaW50cyxzPXZvaWQgMCE9PWMmJmMsdT1lLmRyYWdFbGFzdGljLGQ9dm9pZCAwPT09dT8uMzU6dSxmPWUuZHJhZ01vbWVudHVtLHA9dm9pZCAwPT09Znx8ZixoPXIuX19yZXN0KGUsW1wiZHJhZ1wiLFwiZHJhZ0RpcmVjdGlvbkxvY2tcIixcImRyYWdQcm9wYWdhdGlvblwiLFwiZHJhZ0NvbnN0cmFpbnRzXCIsXCJkcmFnRWxhc3RpY1wiLFwiZHJhZ01vbWVudHVtXCJdKTt0aGlzLnByb3BzPXIuX19hc3NpZ24oe2RyYWc6bixkcmFnRGlyZWN0aW9uTG9jazphLGRyYWdQcm9wYWdhdGlvbjpsLGRyYWdDb25zdHJhaW50czpzLGRyYWdFbGFzdGljOmQsZHJhZ01vbWVudHVtOnB9LGgpfSxlLnByb3RvdHlwZS5nZXRBeGlzTW90aW9uVmFsdWU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQubGF5b3V0LHI9dC5sYXlvdXRJZCxvPVwiX2RyYWdcIitlLnRvVXBwZXJDYXNlKCk7cmV0dXJuIHRoaXMucHJvcHNbb10/dGhpcy5wcm9wc1tvXTpufHx2b2lkIDAhPT1yP3ZvaWQgMDp0aGlzLnZpc3VhbEVsZW1lbnQuZ2V0VmFsdWUoZSwwKX0sZS5wcm90b3R5cGUuaXNMYXlvdXREcmFnPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZ2V0QXhpc01vdGlvblZhbHVlKFwieFwiKX0sZS5wcm90b3R5cGUuaXNFeHRlcm5hbERyYWc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5fZHJhZ1gsbj1lLl9kcmFnWTtyZXR1cm4gdHx8bn0sZS5wcm90b3R5cGUuYW5pbWF0ZURyYWdFbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXRoaXMucHJvcHMsbz1uLmRyYWcsYT1uLmRyYWdNb21lbnR1bSxpPW4uZHJhZ0VsYXN0aWMsbD1uLmRyYWdUcmFuc2l0aW9uLGM9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0hMCk7dmFyIG4scj1lLmdldFByb2plY3Rpb25QYXJlbnQoKTtyZXR1cm4hIXImJih0P1luKG49Wm4oci5wcm9qZWN0aW9uLnRhcmdldCxlLnByb2plY3Rpb24udGFyZ2V0KSxyLmdldExhdGVzdFZhbHVlcygpKTpuPVpuKHIuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXQsZS5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dCksZ24oKGZ1bmN0aW9uKHQpe3JldHVybiBlLnNldFByb2plY3Rpb25UYXJnZXRBeGlzKHQsblt0XS5taW4sblt0XS5tYXgsITApfSkpLCEwKX0odGhpcy52aXN1YWxFbGVtZW50LHRoaXMuaXNMYXlvdXREcmFnKCkmJiF0aGlzLmlzRXh0ZXJuYWxEcmFnKCkpLHM9dGhpcy5jb25zdHJhaW50c3x8e307aWYoYyYmT2JqZWN0LmtleXMocykubGVuZ3RoJiZ0aGlzLmlzTGF5b3V0RHJhZygpKXt2YXIgdT10aGlzLnZpc3VhbEVsZW1lbnQuZ2V0UHJvamVjdGlvblBhcmVudCgpO2lmKHUpe3ZhciBkPVpuKHUucHJvamVjdGlvbi50YXJnZXRGaW5hbCxzKTtnbigoZnVuY3Rpb24oZSl7dmFyIHQ9ZFtlXSxuPXQubWluLHI9dC5tYXg7c1tlXT17bWluOmlzTmFOKG4pP3ZvaWQgMDpuLG1heDppc05hTihyKT92b2lkIDA6cn19KSl9fXZhciBmPWduKChmdW5jdGlvbihuKXt2YXIgdTtpZihvcihuLG8sdC5jdXJyZW50RGlyZWN0aW9uKSl7dmFyIGQ9bnVsbCE9PSh1PW51bGw9PXM/dm9pZCAwOnNbbl0pJiZ2b2lkIDAhPT11P3U6e30sZj1pPzIwMDoxZTYscD1pPzQwOjFlNyxoPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7dHlwZTpcImluZXJ0aWFcIix2ZWxvY2l0eTphP2Vbbl06MCxib3VuY2VTdGlmZm5lc3M6Zixib3VuY2VEYW1waW5nOnAsdGltZUNvbnN0YW50Ojc1MCxyZXN0RGVsdGE6MSxyZXN0U3BlZWQ6MTB9LGwpLGQpO3JldHVybiB0LmdldEF4aXNNb3Rpb25WYWx1ZShuKT90LnN0YXJ0QXhpc1ZhbHVlQW5pbWF0aW9uKG4saCk6dC52aXN1YWxFbGVtZW50LnN0YXJ0TGF5b3V0QW5pbWF0aW9uKG4saCxjKX19KSk7cmV0dXJuIFByb21pc2UuYWxsKGYpLnRoZW4oKGZ1bmN0aW9uKCl7dmFyIGUsbjtudWxsPT09KG49KGU9dC5wcm9wcykub25EcmFnVHJhbnNpdGlvbkVuZCl8fHZvaWQgMD09PW58fG4uY2FsbChlKX0pKX0sZS5wcm90b3R5cGUuc3RvcE1vdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXM7Z24oKGZ1bmN0aW9uKHQpe3ZhciBuPWUuZ2V0QXhpc01vdGlvblZhbHVlKHQpO24/bi5zdG9wKCk6ZS52aXN1YWxFbGVtZW50LnN0b3BMYXlvdXRBbmltYXRpb24oKX0pKX0sZS5wcm90b3R5cGUuc3RhcnRBeGlzVmFsdWVBbmltYXRpb249ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmdldEF4aXNNb3Rpb25WYWx1ZShlKTtpZihuKXt2YXIgcj1uLmdldCgpO3JldHVybiBuLnNldChyKSxuLnNldChyKSxWdChlLG4sMCx0KX19LGUucHJvdG90eXBlLnNjYWxlUG9pbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxuPXQuZHJhZztpZihIKHQuZHJhZ0NvbnN0cmFpbnRzKSYmdGhpcy5jb25zdHJhaW50c0JveCl7dGhpcy5zdG9wTW90aW9uKCk7dmFyIHI9e3g6MCx5OjB9O2duKChmdW5jdGlvbih0KXt2YXIgbixvLGEsaSxjLHM7clt0XT0obj1lLnZpc3VhbEVsZW1lbnQucHJvamVjdGlvbi50YXJnZXRbdF0sbz1lLmNvbnN0cmFpbnRzQm94W3RdLGk9LjUsYz13bihuKSwocz13bihvKSk+Yz9pPWwucHJvZ3Jlc3Moby5taW4sby5tYXgtYyxuLm1pbik6Yz5zJiYoaT1sLnByb2dyZXNzKG4ubWluLG4ubWF4LXMsby5taW4pKSxhPWksbC5jbGFtcCgwLDEsYSkpfSkpLHRoaXMudXBkYXRlQ29uc3RyYWludHMoKGZ1bmN0aW9uKCl7Z24oKGZ1bmN0aW9uKHQpe2lmKG9yKHQsbixudWxsKSl7dmFyIG89ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUubWF4LWUubWluLG89bC5taXgodC5taW4sdC5tYXgtcixuKTtyZXR1cm57bWluOm8sbWF4Om8rcn19KGUudmlzdWFsRWxlbWVudC5wcm9qZWN0aW9uLnRhcmdldFt0XSxlLmNvbnN0cmFpbnRzQm94W3RdLHJbdF0pLGE9by5taW4saT1vLm1heDtlLnZpc3VhbEVsZW1lbnQuc2V0UHJvamVjdGlvblRhcmdldEF4aXModCxhLGkpfX0pKX0pKSxzZXRUaW1lb3V0KEpuLDEpfX0sZS5wcm90b3R5cGUudXBkYXRlQ29uc3RyYWludHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLmNhbmNlbExheW91dD1RbigoZnVuY3Rpb24obixyKXt2YXIgbz1Ibih0LnZpc3VhbEVsZW1lbnQpO3IoKGZ1bmN0aW9uKCl7cmV0dXJuIG8uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVzZXRUcmFuc2Zvcm0oKX0pKX0pKSxuKChmdW5jdGlvbigpe3JldHVybiBWbih0LnZpc3VhbEVsZW1lbnQpfSkpLHIoKGZ1bmN0aW9uKCl7cmV0dXJuIG8uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVzdG9yZVRyYW5zZm9ybSgpfSkpfSkpLG4oKGZ1bmN0aW9uKCl7dC5yZXNvbHZlRHJhZ0NvbnN0cmFpbnRzKCl9KSksZSYmcihlKX0pKX0sZS5wcm90b3R5cGUubW91bnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPW50KGUuZ2V0SW5zdGFuY2UoKSxcInBvaW50ZXJkb3duXCIsKGZ1bmN0aW9uKGUpe3ZhciBuPXQucHJvcHMscj1uLmRyYWcsbz1uLmRyYWdMaXN0ZW5lcjtyJiYodm9pZCAwPT09b3x8bykmJnQuc3RhcnQoZSl9KSkscj0kZSh3aW5kb3csXCJyZXNpemVcIiwoZnVuY3Rpb24oKXt0LnNjYWxlUG9pbnQoKX0pKSxvPWUub25MYXlvdXRVcGRhdGUoKGZ1bmN0aW9uKCl7dC5pc0RyYWdnaW5nJiZ0LnJlc29sdmVEcmFnQ29uc3RyYWludHMoKX0pKSxhPWUucHJldkRyYWdDdXJzb3I7cmV0dXJuIGEmJnRoaXMuc3RhcnQoZXIse2N1cnNvclByb2dyZXNzOmF9KSxmdW5jdGlvbigpe251bGw9PW58fG4oKSxudWxsPT1yfHxyKCksbnVsbD09b3x8bygpLHQuY2FuY2VsRHJhZygpfX0sZX0oKTtmdW5jdGlvbiBvcihlLHQsbil7cmV0dXJuISghMCE9PXQmJnQhPT1lfHxudWxsIT09biYmbiE9PWUpfXZhciBhcixpcixscj17cGFuOmZ0KChmdW5jdGlvbihlKXt2YXIgdD1lLm9uUGFuLG49ZS5vblBhblN0YXJ0LHI9ZS5vblBhbkVuZCxhPWUub25QYW5TZXNzaW9uU3RhcnQsaT1lLnZpc3VhbEVsZW1lbnQsbD10fHxufHxyfHxhLGM9by51c2VSZWYobnVsbCkscz1vLnVzZUNvbnRleHQodykudHJhbnNmb3JtUGFnZVBvaW50LHU9e29uU2Vzc2lvblN0YXJ0OmEsb25TdGFydDpuLG9uTW92ZTp0LG9uRW5kOmZ1bmN0aW9uKGUsdCl7Yy5jdXJyZW50PW51bGwsciYmcihlLHQpfX07by51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7bnVsbCE9PWMuY3VycmVudCYmYy5jdXJyZW50LnVwZGF0ZUhhbmRsZXJzKHUpfSkpLHJ0KGksXCJwb2ludGVyZG93blwiLGwmJmZ1bmN0aW9uKGUpe2MuY3VycmVudD1uZXcgYW4oZSx1LHt0cmFuc2Zvcm1QYWdlUG9pbnQ6c30pfSksZHQoKGZ1bmN0aW9uKCl7cmV0dXJuIGMuY3VycmVudCYmYy5jdXJyZW50LmVuZCgpfSkpfSkpLGRyYWc6ZnQoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZHJhZ0NvbnRyb2xzLG49ZS52aXN1YWxFbGVtZW50LGE9by51c2VDb250ZXh0KHcpLnRyYW5zZm9ybVBhZ2VQb2ludCxpPU8oKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBycih7dmlzdWFsRWxlbWVudDpufSl9KSk7aS5zZXRQcm9wcyhyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sZSkse3RyYW5zZm9ybVBhZ2VQb2ludDphfSkpLG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiB0JiZ0LnN1YnNjcmliZShpKX0pLFtpXSksby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIGkubW91bnQobil9KSxbXSl9KSl9O2Z1bmN0aW9uIGNyKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiZlLnN0YXJ0c1dpdGgoXCJ2YXIoLS1cIil9IWZ1bmN0aW9uKGUpe2VbZS5FbnRlcmluZz0wXT1cIkVudGVyaW5nXCIsZVtlLlByZXNlbnQ9MV09XCJQcmVzZW50XCIsZVtlLkV4aXRpbmc9Ml09XCJFeGl0aW5nXCJ9KGFyfHwoYXI9e30pKSx0LlZpc2liaWxpdHlBY3Rpb249dm9pZCAwLChpcj10LlZpc2liaWxpdHlBY3Rpb258fCh0LlZpc2liaWxpdHlBY3Rpb249e30pKVtpci5IaWRlPTBdPVwiSGlkZVwiLGlyW2lyLlNob3c9MV09XCJTaG93XCI7dmFyIHNyPS92YXJcXCgoLS1bYS16QS1aMC05LV9dKyksPyA/KFthLXpBLVowLTkgKCklIy4sLV0rKT9cXCkvO2Z1bmN0aW9uIHVyKGUsdCxuKXt2b2lkIDA9PT1uJiYobj0xKSxhLmludmFyaWFudChuPD00LCdNYXggQ1NTIHZhcmlhYmxlIGZhbGxiYWNrIGRlcHRoIGRldGVjdGVkIGluIHByb3BlcnR5IFwiJytlKydcIi4gVGhpcyBtYXkgaW5kaWNhdGUgYSBjaXJjdWxhciBmYWxsYmFjayBkZXBlbmRlbmN5LicpO3ZhciBvPXIuX19yZWFkKGZ1bmN0aW9uKGUpe3ZhciB0PXNyLmV4ZWMoZSk7aWYoIXQpcmV0dXJuWyxdO3ZhciBuPXIuX19yZWFkKHQsMyk7cmV0dXJuW25bMV0sblsyXV19KGUpLDIpLGk9b1swXSxsPW9bMV07aWYoaSl7dmFyIGM9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZShpKTtyZXR1cm4gYz9jLnRyaW0oKTpjcihsKT91cihsLHQsbisxKTpsfX1mdW5jdGlvbiBkcihlLHQpe3JldHVybiBlLyh0Lm1heC10Lm1pbikqMTAwfXZhciBmcj1cIl8kY3NzXCIscHI9e3Byb2Nlc3M6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4udGFyZ2V0O2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXtpZighaS5weC50ZXN0KGUpKXJldHVybiBlO2U9cGFyc2VGbG9hdChlKX1yZXR1cm4gZHIoZSxyLngpK1wiJSBcIitkcihlLHIueSkrXCIlXCJ9fSxocj17Ym9yZGVyUmFkaXVzOnIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxwcikse2FwcGx5VG86W1wiYm9yZGVyVG9wTGVmdFJhZGl1c1wiLFwiYm9yZGVyVG9wUmlnaHRSYWRpdXNcIixcImJvcmRlckJvdHRvbUxlZnRSYWRpdXNcIixcImJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzXCJdfSksYm9yZGVyVG9wTGVmdFJhZGl1czpwcixib3JkZXJUb3BSaWdodFJhZGl1czpwcixib3JkZXJCb3R0b21MZWZ0UmFkaXVzOnByLGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOnByLGJveFNoYWRvdzp7cHJvY2VzczpmdW5jdGlvbihlLHQpe3ZhciBuPXQuZGVsdGEscj10LnRyZWVTY2FsZSxvPWUsYT1lLmluY2x1ZGVzKFwidmFyKFwiKSxjPVtdO2EmJihlPWUucmVwbGFjZShzciwoZnVuY3Rpb24oZSl7cmV0dXJuIGMucHVzaChlKSxmcn0pKSk7dmFyIHM9aS5jb21wbGV4LnBhcnNlKGUpO2lmKHMubGVuZ3RoPjUpcmV0dXJuIG87dmFyIHU9aS5jb21wbGV4LmNyZWF0ZVRyYW5zZm9ybWVyKGUpLGQ9XCJudW1iZXJcIiE9dHlwZW9mIHNbMF0/MTowLGY9bi54LnNjYWxlKnIueCxwPW4ueS5zY2FsZSpyLnk7c1swK2RdLz1mLHNbMStkXS89cDt2YXIgaD1sLm1peChmLHAsLjUpO1wibnVtYmVyXCI9PXR5cGVvZiBzWzIrZF0mJihzWzIrZF0vPWgpLFwibnVtYmVyXCI9PXR5cGVvZiBzWzMrZF0mJihzWzMrZF0vPWgpO3ZhciBDPXUocyk7aWYoYSl7dmFyIHY9MDtDPUMucmVwbGFjZShmciwoZnVuY3Rpb24oKXt2YXIgZT1jW3ZdO3JldHVybiB2KyssZX0pKX1yZXR1cm4gQ319fSxDcj1mdW5jdGlvbihlKXtmdW5jdGlvbiBuKCl7dmFyIG49bnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiBuLmZyYW1lVGFyZ2V0PXt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fSxuLmN1cnJlbnRBbmltYXRpb25UYXJnZXQ9e3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19LG4uaXNBbmltYXRpbmc9e3g6ITEseTohMX0sbi5zdG9wQXhpc0FuaW1hdGlvbj17eDp2b2lkIDAseTp2b2lkIDB9LG4uaXNBbmltYXRpbmdUcmVlPSExLG4uYW5pbWF0ZT1mdW5jdGlvbihlLG8sYSl7dm9pZCAwPT09YSYmKGE9e30pO3ZhciBpPWEub3JpZ2luQm94LGw9YS50YXJnZXRCb3gsYz1hLnZpc2liaWxpdHlBY3Rpb24scz1hLnNob3VsZFN0YWNrQW5pbWF0ZSx1PWEub25Db21wbGV0ZSxkPWEucHJldlBhcmVudCxmPXIuX19yZXN0KGEsW1wib3JpZ2luQm94XCIsXCJ0YXJnZXRCb3hcIixcInZpc2liaWxpdHlBY3Rpb25cIixcInNob3VsZFN0YWNrQW5pbWF0ZVwiLFwib25Db21wbGV0ZVwiLFwicHJldlBhcmVudFwiXSkscD1uLnByb3BzLGg9cC52aXN1YWxFbGVtZW50LEM9cC5sYXlvdXQ7aWYoITE9PT1zKXJldHVybiBuLmlzQW5pbWF0aW5nVHJlZT0hMSxuLnNhZmVUb1JlbW92ZSgpO2lmKCFuLmlzQW5pbWF0aW5nVHJlZXx8ITA9PT1zKXtzJiYobi5pc0FuaW1hdGluZ1RyZWU9ITApLG89aXx8byxlPWx8fGU7dmFyIHYsZyxtLHc9ITEseT1oLmdldFByb2plY3Rpb25QYXJlbnQoKTtpZih5KXt2YXIgYj15LnByZXZWaWV3cG9ydEJveCx4PXkuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXQ7ZCYmKGwmJih4PWQuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXQpLGkmJihnPXksKHY9ZCkuZ2V0TGF5b3V0SWQoKT09PShtPWcuZ2V0TGF5b3V0SWQoKSkmJih2b2lkIDAhPT1tfHx2PT09ZykpJiZkLnByZXZWaWV3cG9ydEJveCYmKGI9ZC5wcmV2Vmlld3BvcnRCb3gpKSxiJiZmdW5jdGlvbihlLHQsbil7cmV0dXJuIGV8fCFlJiYhKHR8fG4pfShkLGksbCkmJih3PSEwLG89Wm4oYixvKSxlPVpuKHgsZSkpfXZhciBPLEwsTT0oTD1lLCEoZ3IoTz1vKXx8Z3IoTCl8fG1yKE8ueCxMLngpJiZtcihPLnksTC55KSkpLFM9Z24oKGZ1bmN0aW9uKGEpe3ZhciBpLGw7aWYoXCJwb3NpdGlvblwiPT09Qyl7dmFyIHM9ZVthXS5tYXgtZVthXS5taW47b1thXS5tYXg9b1thXS5taW4rc31pZighaC5wcm9qZWN0aW9uLmlzVGFyZ2V0TG9ja2VkKXJldHVybiB2b2lkIDA9PT1jP00/bi5hbmltYXRlQXhpcyhhLGVbYV0sb1thXSxyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sZikse2lzUmVsYXRpdmU6d30pKToobnVsbD09PShsPShpPW4uc3RvcEF4aXNBbmltYXRpb24pW2FdKXx8dm9pZCAwPT09bHx8bC5jYWxsKGkpLGguc2V0UHJvamVjdGlvblRhcmdldEF4aXMoYSxlW2FdLm1pbixlW2FdLm1heCx3KSk6dm9pZCBoLnNldFZpc2liaWxpdHkoYz09PXQuVmlzaWJpbGl0eUFjdGlvbi5TaG93KX0pKTtyZXR1cm4gaC5zeW5jUmVuZGVyKCksUHJvbWlzZS5hbGwoUykudGhlbigoZnVuY3Rpb24oKXtuLmlzQW5pbWF0aW5nVHJlZT0hMSx1JiZ1KCksaC5ub3RpZnlMYXlvdXRBbmltYXRpb25Db21wbGV0ZSgpfSkpfX0sbn1yZXR1cm4gci5fX2V4dGVuZHMobixlKSxuLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLnZpc3VhbEVsZW1lbnQ7dC5hbmltYXRlTW90aW9uVmFsdWU9VnQsdC5lbmFibGVMYXlvdXRQcm9qZWN0aW9uKCksdGhpcy51bnN1YkxheW91dFJlYWR5PXQub25MYXlvdXRVcGRhdGUodGhpcy5hbmltYXRlKSx0LmxheW91dFNhZmVUb1JlbW92ZT1mdW5jdGlvbigpe3JldHVybiBlLnNhZmVUb1JlbW92ZSgpfSx6KGhyKX0sbi5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMudW5zdWJMYXlvdXRSZWFkeSgpLGduKChmdW5jdGlvbih0KXt2YXIgbixyO3JldHVybiBudWxsPT09KHI9KG49ZS5zdG9wQXhpc0FuaW1hdGlvbilbdF0pfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmNhbGwobil9KSl9LG4ucHJvdG90eXBlLmFuaW1hdGVBeGlzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGEsaT10aGlzLGM9dm9pZCAwPT09cj97fTpyLHM9Yy50cmFuc2l0aW9uLHU9Yy5pc1JlbGF0aXZlO2lmKCF0aGlzLmlzQW5pbWF0aW5nW2VdfHwhbXIodCx0aGlzLmN1cnJlbnRBbmltYXRpb25UYXJnZXRbZV0pKXtudWxsPT09KGE9KG89dGhpcy5zdG9wQXhpc0FuaW1hdGlvbilbZV0pfHx2b2lkIDA9PT1hfHxhLmNhbGwobyksdGhpcy5pc0FuaW1hdGluZ1tlXT0hMDt2YXIgZD10aGlzLnByb3BzLnZpc3VhbEVsZW1lbnQsZj10aGlzLmZyYW1lVGFyZ2V0W2VdLHA9ZC5nZXRQcm9qZWN0aW9uQW5pbWF0aW9uUHJvZ3Jlc3MoKVtlXTtwLmNsZWFyTGlzdGVuZXJzKCkscC5zZXQoMCkscC5zZXQoMCk7dmFyIGg9ZnVuY3Rpb24oKXt2YXIgcj1wLmdldCgpLzFlMzshZnVuY3Rpb24oZSx0LG4scil7ZS5taW49bC5taXgodC5taW4sbi5taW4sciksZS5tYXg9bC5taXgodC5tYXgsbi5tYXgscil9KGYsbix0LHIpLGQuc2V0UHJvamVjdGlvblRhcmdldEF4aXMoZSxmLm1pbixmLm1heCx1KX07aCgpO3ZhciBDPXAub25DaGFuZ2UoaCk7dGhpcy5zdG9wQXhpc0FuaW1hdGlvbltlXT1mdW5jdGlvbigpe2kuaXNBbmltYXRpbmdbZV09ITEscC5zdG9wKCksQygpfSx0aGlzLmN1cnJlbnRBbmltYXRpb25UYXJnZXRbZV09dDt2YXIgdj1zfHxkLmdldERlZmF1bHRUcmFuc2l0aW9uKCl8fHdyO3JldHVybiBWdChcInhcIj09PWU/XCJsYXlvdXRYXCI6XCJsYXlvdXRZXCIscCwxZTMsdiYmSHQodixcImxheW91dFwiKSkudGhlbih0aGlzLnN0b3BBeGlzQW5pbWF0aW9uW2VdKX19LG4ucHJvdG90eXBlLnNhZmVUb1JlbW92ZT1mdW5jdGlvbigpe3ZhciBlLHQ7bnVsbD09PSh0PShlPXRoaXMucHJvcHMpLnNhZmVUb1JlbW92ZSl8fHZvaWQgMD09PXR8fHQuY2FsbChlKX0sbi5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LG59KHUuQ29tcG9uZW50KSx2cj17bWluOjAsbWF4OjB9O2Z1bmN0aW9uIGdyKGUpe3JldHVybiBtcihlLngsdnIpJiZtcihlLnksdnIpfWZ1bmN0aW9uIG1yKGUsdCl7cmV0dXJuIGUubWluPT09dC5taW4mJmUubWF4PT09dC5tYXh9dmFyIHdyPXtkdXJhdGlvbjouNDUsZWFzZTpbLjQsMCwuMSwxXX0seXI9e2xheW91dFJlYWR5OmZ1bmN0aW9uKGUpe3JldHVybiBlLm5vdGlmeUxheW91dFJlYWR5KCl9fTtmdW5jdGlvbiBicigpe3ZhciBlPW5ldyBTZXQ7cmV0dXJue2FkZDpmdW5jdGlvbih0KXtyZXR1cm4gZS5hZGQodCl9LGZsdXNoOmZ1bmN0aW9uKHQpe3ZhciBuPXZvaWQgMD09PXQ/eXI6dCxvPW4ubGF5b3V0UmVhZHksYT1uLnBhcmVudDtRbigoZnVuY3Rpb24odCxuKXt2YXIgaT1BcnJheS5mcm9tKGUpLnNvcnQoUG4pLGw9YT9IbihhKTpbXTtuKChmdW5jdGlvbigpe3IuX19zcHJlYWRBcnJheShyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQobCkpLHIuX19yZWFkKGkpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXNldFRyYW5zZm9ybSgpfSkpfSkpLHQoKGZ1bmN0aW9uKCl7aS5mb3JFYWNoKFZuKX0pKSxuKChmdW5jdGlvbigpe2wuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVzdG9yZVRyYW5zZm9ybSgpfSkpLGkuZm9yRWFjaChvKX0pKSx0KChmdW5jdGlvbigpe2kuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5pc1ByZXNlbnQmJihlLnByZXNlbmNlPWFyLlByZXNlbnQpfSkpfSkpLG4oKGZ1bmN0aW9uKCl7Yy5mbHVzaFN5bmMucHJlUmVuZGVyKCksYy5mbHVzaFN5bmMucmVuZGVyKCl9KSksdCgoZnVuY3Rpb24oKXtmLmRlZmF1bHQucG9zdFJlbmRlcigoZnVuY3Rpb24oKXtyZXR1cm4gaS5mb3JFYWNoKHhyKX0pKSxlLmNsZWFyKCl9KSl9KSksSm4oKX19fWZ1bmN0aW9uIHhyKGUpe2UucHJldlZpZXdwb3J0Qm94PWUucHJvamVjdGlvbi50YXJnZXR9dmFyIE9yPW8uY3JlYXRlQ29udGV4dChicigpKSxMcj1vLmNyZWF0ZUNvbnRleHQoYnIoKSk7ZnVuY3Rpb24gTXIoZSl7cmV0dXJuISFlLmZvcmNlVXBkYXRlfXZhciBTcj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIG51bGwhPT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gci5fX2V4dGVuZHModCxlKSx0LnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLnN5bmNMYXlvdXQsbj1lLmZyYW1lclN5bmNMYXlvdXQscj1lLnZpc3VhbEVsZW1lbnQ7TXIodCkmJnQucmVnaXN0ZXIociksTXIobikmJm4ucmVnaXN0ZXIociksci5vblVubW91bnQoKGZ1bmN0aW9uKCl7TXIodCkmJnQucmVtb3ZlKHIpLE1yKG4pJiZuLnJlbW92ZShyKX0pKX0sdC5wcm90b3R5cGUuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5zeW5jTGF5b3V0LG49ZS52aXN1YWxFbGVtZW50O3JldHVybiBNcih0KT90LnN5bmNVcGRhdGUoKTooUm4obiksdC5hZGQobikpLG51bGx9LHQucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMuc3luY0xheW91dDtNcihlKXx8ZS5mbHVzaCgpfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdH0oZC5kZWZhdWx0LkNvbXBvbmVudCksX3I9e21lYXN1cmVMYXlvdXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9by51c2VDb250ZXh0KE9yKSxuPW8udXNlQ29udGV4dChMcik7cmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFNyLHIuX19hc3NpZ24oe30sZSx7c3luY0xheW91dDp0LGZyYW1lclN5bmNMYXlvdXQ6bn0pKX0sbGF5b3V0QW5pbWF0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PXIuX19yZWFkKEwoKSwyKVsxXTtyZXR1cm4gdS5jcmVhdGVFbGVtZW50KENyLHIuX19hc3NpZ24oe30sZSx7c2FmZVRvUmVtb3ZlOnR9KSl9fTtmdW5jdGlvbiBqcigpe3JldHVybntpc0h5ZHJhdGVkOiExLGxheW91dDp7eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX0sbGF5b3V0Q29ycmVjdGVkOnt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fSx0cmVlU2NhbGU6e3g6MSx5OjF9LGRlbHRhOnZuKCksZGVsdGFGaW5hbDp2bigpLGRlbHRhVHJhbnNmb3JtOlwiXCJ9fXZhciBFcj1qcigpO2Z1bmN0aW9uIFByKGUsdCxuKXt2YXIgcj1lLngsbz1lLnksYT1cInRyYW5zbGF0ZTNkKFwiK3IudHJhbnNsYXRlL3QueCtcInB4LCBcIitvLnRyYW5zbGF0ZS90LnkrXCJweCwgMCkgXCI7aWYobil7dmFyIGk9bi5yb3RhdGUsbD1uLnJvdGF0ZVgsYz1uLnJvdGF0ZVk7aSYmKGErPVwicm90YXRlKFwiK2krXCIpIFwiKSxsJiYoYSs9XCJyb3RhdGVYKFwiK2wrXCIpIFwiKSxjJiYoYSs9XCJyb3RhdGVZKFwiK2MrXCIpIFwiKX1yZXR1cm4gYSs9XCJzY2FsZShcIityLnNjYWxlK1wiLCBcIitvLnNjYWxlK1wiKVwiLG58fGEhPT1Icj9hOlwiXCJ9ZnVuY3Rpb24ga3IoZSl7dmFyIHQ9ZS5kZWx0YUZpbmFsO3JldHVybiAxMDAqdC54Lm9yaWdpbitcIiUgXCIrMTAwKnQueS5vcmlnaW4rXCIlIDBcIn12YXIgSHI9UHIoRXIuZGVsdGEsRXIudHJlZVNjYWxlLHt4OjEseToxfSksVnI9W1wiTGF5b3V0TWVhc3VyZVwiLFwiQmVmb3JlTGF5b3V0TWVhc3VyZVwiLFwiTGF5b3V0VXBkYXRlXCIsXCJWaWV3cG9ydEJveFVwZGF0ZVwiLFwiVXBkYXRlXCIsXCJSZW5kZXJcIixcIkFuaW1hdGlvbkNvbXBsZXRlXCIsXCJMYXlvdXRBbmltYXRpb25Db21wbGV0ZVwiLFwiQW5pbWF0aW9uU3RhcnRcIixcIlNldEF4aXNUYXJnZXRcIixcIlVubW91bnRcIl0sUnI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5jaGlsZHJlbj1bXSx0aGlzLmlzRGlydHk9ITF9cmV0dXJuIGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXtSdCh0aGlzLmNoaWxkcmVuLGUpLHRoaXMuaXNEaXJ0eT0hMH0sZS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGUpe0l0KHRoaXMuY2hpbGRyZW4sZSksdGhpcy5pc0RpcnR5PSEwfSxlLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGUpe3RoaXMuaXNEaXJ0eSYmdGhpcy5jaGlsZHJlbi5zb3J0KFBuKSx0aGlzLmlzRGlydHk9ITEsdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGUpfSxlfSgpLElyPWZ1bmN0aW9uKGUpe3ZhciB0PWUudHJlZVR5cGUsbj12b2lkIDA9PT10P1wiXCI6dCxvPWUuYnVpbGQsYT1lLmdldEJhc2VUYXJnZXQsaT1lLm1ha2VUYXJnZXRBbmltYXRhYmxlLHM9ZS5tZWFzdXJlVmlld3BvcnRCb3gsdT1lLnJlbmRlcixkPWUucmVhZFZhbHVlRnJvbUluc3RhbmNlLHA9ZS5yZXNldFRyYW5zZm9ybSxoPWUucmVzdG9yZVRyYW5zZm9ybSxDPWUucmVtb3ZlVmFsdWVGcm9tUmVuZGVyU3RhdGUsdj1lLnNvcnROb2RlUG9zaXRpb24sZz1lLnNjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wcztyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbT1lLnBhcmVudCx3PWUucHJvcHMseT1lLnByZXNlbmNlSWQsYj1lLmJsb2NrSW5pdGlhbEFuaW1hdGlvbix4PWUudmlzdWFsU3RhdGU7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBPLEwsTSxTLF8saixFPXgubGF0ZXN0VmFsdWVzLFA9eC5yZW5kZXJTdGF0ZSxrPWZ1bmN0aW9uKCl7dmFyIGU9VnIubWFwKChmdW5jdGlvbigpe3JldHVybiBuZXcgWnR9KSksdD17fSxuPXtjbGVhckFsbExpc3RlbmVyczpmdW5jdGlvbigpe3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsZWFyKCl9KSl9LHVwZGF0ZVByb3BMaXN0ZW5lcnM6ZnVuY3Rpb24oZSl7cmV0dXJuIFZyLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ZhciBvO251bGw9PT0obz10W3JdKXx8dm9pZCAwPT09b3x8by5jYWxsKHQpO3ZhciBhPVwib25cIityLGk9ZVthXTtpJiYodFtyXT1uW2FdKGkpKX0pKX19O3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7bltcIm9uXCIrVnJbdF1dPWZ1bmN0aW9uKHQpe3JldHVybiBlLmFkZCh0KX0sbltcIm5vdGlmeVwiK1ZyW3RdXT1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZS5ub3RpZnkuYXBwbHkoZSxyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQodCkpKX19KSksbn0oKSxIPXtpc0VuYWJsZWQ6ITEsaXNIeWRyYXRlZDohMSxpc1RhcmdldExvY2tlZDohMSx0YXJnZXQ6e3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19LHRhcmdldEZpbmFsOnt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fX0sVj1ILEk9RSxaPWpyKCksQj0hMSxUPW5ldyBNYXAsJD1uZXcgTWFwLEY9e30sVz1yLl9fYXNzaWduKHt9LEUpO2Z1bmN0aW9uIE4oKXtPJiYoSi5pc1Byb2plY3Rpb25SZWFkeSgpJiYoVW4oVi50YXJnZXRGaW5hbCxWLnRhcmdldCxJKSxibihaLmRlbHRhRmluYWwsWi5sYXlvdXRDb3JyZWN0ZWQsVi50YXJnZXRGaW5hbCxFKSkseigpLHUoTyxQKSl9ZnVuY3Rpb24geigpe3ZhciBlPUU7aWYoUyYmUy5pc0FjdGl2ZSgpKXt2YXIgbj1TLmdldENyb3NzZmFkZVN0YXRlKEopO24mJihlPW4pfW8oSixQLGUsVixaLHQsdyl9ZnVuY3Rpb24gVSgpe2subm90aWZ5VXBkYXRlKEUpfWZ1bmN0aW9uIEcoKXtKLmxheW91dFRyZWUuZm9yRWFjaChBcil9dmFyIHE9Zyh3KTtmb3IodmFyIFkgaW4gcSl7dmFyIEs9cVtZXTt2b2lkIDAhPT1FW1ldJiZlZShLKSYmSy5zZXQoRVtZXSwhMSl9dmFyIFg9QSh3KSxRPUQodyksSj1yLl9fYXNzaWduKHIuX19hc3NpZ24oe3RyZWVUeXBlOm4sY3VycmVudDpudWxsLGRlcHRoOm0/bS5kZXB0aCsxOjAscGFyZW50Om0sY2hpbGRyZW46bmV3IFNldCxwYXRoOm0/ci5fX3NwcmVhZEFycmF5KHIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZChtLnBhdGgpKSxbbV0pOltdLGxheW91dFRyZWU6bT9tLmxheW91dFRyZWU6bmV3IFJyLHByZXNlbmNlSWQ6eSxwcm9qZWN0aW9uOkgsdmFyaWFudENoaWxkcmVuOlE/bmV3IFNldDp2b2lkIDAsaXNWaXNpYmxlOnZvaWQgMCxtYW51YWxseUFuaW1hdGVPbk1vdW50OkJvb2xlYW4obnVsbD09bT92b2lkIDA6bS5pc01vdW50ZWQoKSksYmxvY2tJbml0aWFsQW5pbWF0aW9uOmIsaXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4oTyl9LG1vdW50OmZ1bmN0aW9uKGUpe089Si5jdXJyZW50PWUsSi5wb2ludFRvKEopLFEmJm0mJiFYJiYoaj1udWxsPT1tP3ZvaWQgMDptLmFkZFZhcmlhbnRDaGlsZChKKSksbnVsbD09bXx8bS5jaGlsZHJlbi5hZGQoSil9LHVubW91bnQ6ZnVuY3Rpb24oKXtjLmNhbmNlbFN5bmMudXBkYXRlKFUpLGMuY2FuY2VsU3luYy5yZW5kZXIoTiksYy5jYW5jZWxTeW5jLnByZVJlbmRlcihKLnVwZGF0ZUxheW91dFByb2plY3Rpb24pLCQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pKSxKLnN0b3BMYXlvdXRBbmltYXRpb24oKSxKLmxheW91dFRyZWUucmVtb3ZlKEopLG51bGw9PWp8fGooKSxudWxsPT1tfHxtLmNoaWxkcmVuLmRlbGV0ZShKKSxudWxsPT1NfHxNKCksay5jbGVhckFsbExpc3RlbmVycygpfSxhZGRWYXJpYW50Q2hpbGQ6ZnVuY3Rpb24oZSl7dmFyIHQsbj1KLmdldENsb3Nlc3RWYXJpYW50Tm9kZSgpO2lmKG4pcmV0dXJuIG51bGw9PT0odD1uLnZhcmlhbnRDaGlsZHJlbil8fHZvaWQgMD09PXR8fHQuYWRkKGUpLGZ1bmN0aW9uKCl7cmV0dXJuIG4udmFyaWFudENoaWxkcmVuLmRlbGV0ZShlKX19LHNvcnROb2RlUG9zaXRpb246ZnVuY3Rpb24oZSl7cmV0dXJuIHYmJm49PT1lLnRyZWVUeXBlP3YoSi5nZXRJbnN0YW5jZSgpLGUuZ2V0SW5zdGFuY2UoKSk6MH0sZ2V0Q2xvc2VzdFZhcmlhbnROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIFE/SjpudWxsPT1tP3ZvaWQgMDptLmdldENsb3Nlc3RWYXJpYW50Tm9kZSgpfSxzY2hlZHVsZVVwZGF0ZUxheW91dFByb2plY3Rpb246bT9tLnNjaGVkdWxlVXBkYXRlTGF5b3V0UHJvamVjdGlvbjpmdW5jdGlvbigpe3JldHVybiBmLmRlZmF1bHQucHJlUmVuZGVyKEoudXBkYXRlVHJlZUxheW91dFByb2plY3Rpb24sITEsITApfSxnZXRMYXlvdXRJZDpmdW5jdGlvbigpe3JldHVybiB3LmxheW91dElkfSxnZXRJbnN0YW5jZTpmdW5jdGlvbigpe3JldHVybiBPfSxnZXRTdGF0aWNWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRVtlXX0sc2V0U3RhdGljVmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRVtlXT10fSxnZXRMYXRlc3RWYWx1ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gRX0sc2V0VmlzaWJpbGl0eTpmdW5jdGlvbihlKXtKLmlzVmlzaWJsZSE9PWUmJihKLmlzVmlzaWJsZT1lLEouc2NoZWR1bGVSZW5kZXIoKSl9LG1ha2VUYXJnZXRBbmltYXRhYmxlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSEwKSxpKEosZSx3LHQpfSxhZGRWYWx1ZTpmdW5jdGlvbihlLHQpe0ouaGFzVmFsdWUoZSkmJkoucmVtb3ZlVmFsdWUoZSksVC5zZXQoZSx0KSxFW2VdPXQuZ2V0KCksZnVuY3Rpb24oZSx0KXt2YXIgbj10Lm9uQ2hhbmdlKChmdW5jdGlvbih0KXtFW2VdPXQsdy5vblVwZGF0ZSYmZi5kZWZhdWx0LnVwZGF0ZShVLCExLCEwKX0pKSxyPXQub25SZW5kZXJSZXF1ZXN0KEouc2NoZWR1bGVSZW5kZXIpOyQuc2V0KGUsKGZ1bmN0aW9uKCl7bigpLHIoKX0pKX0oZSx0KX0scmVtb3ZlVmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7VC5kZWxldGUoZSksbnVsbD09PSh0PSQuZ2V0KGUpKXx8dm9pZCAwPT09dHx8dCgpLCQuZGVsZXRlKGUpLGRlbGV0ZSBFW2VdLEMoZSxQKX0saGFzVmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFQuaGFzKGUpfSxnZXRWYWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPVQuZ2V0KGUpO3JldHVybiB2b2lkIDA9PT1uJiZ2b2lkIDAhPT10JiYobj1EdCh0KSxKLmFkZFZhbHVlKGUsbikpLG59LGZvckVhY2hWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gVC5mb3JFYWNoKGUpfSxyZWFkVmFsdWU6ZnVuY3Rpb24oZSl7dmFyIG47cmV0dXJuIG51bGwhPT0obj1FW2VdKSYmdm9pZCAwIT09bj9uOmQoTyxlLHQpfSxzZXRCYXNlVGFyZ2V0OmZ1bmN0aW9uKGUsdCl7V1tlXT10fSxnZXRCYXNlVGFyZ2V0OmZ1bmN0aW9uKGUpe2lmKGEpe3ZhciB0PWEodyxlKTtpZih2b2lkIDAhPT10JiYhZWUodCkpcmV0dXJuIHR9cmV0dXJuIFdbZV19fSxrKSx7YnVpbGQ6ZnVuY3Rpb24oKXtyZXR1cm4geigpLFB9LHNjaGVkdWxlUmVuZGVyOmZ1bmN0aW9uKCl7Zi5kZWZhdWx0LnJlbmRlcihOLCExLCEwKX0sc3luY1JlbmRlcjpOLHNldFByb3BzOmZ1bmN0aW9uKGUpe3c9ZSxrLnVwZGF0ZVByb3BMaXN0ZW5lcnMoZSksRj1mdW5jdGlvbihlLHQsbil7dmFyIHI7Zm9yKHZhciBvIGluIHQpe3ZhciBhPXRbb10saT1uW29dO2lmKGVlKGEpKWUuYWRkVmFsdWUobyxhKTtlbHNlIGlmKGVlKGkpKWUuYWRkVmFsdWUobyxEdChhKSk7ZWxzZSBpZihpIT09YSlpZihlLmhhc1ZhbHVlKG8pKXt2YXIgbD1lLmdldFZhbHVlKG8pOyFsLmhhc0FuaW1hdGVkJiZsLnNldChhKX1lbHNlIGUuYWRkVmFsdWUobyxEdChudWxsIT09KHI9ZS5nZXRTdGF0aWNWYWx1ZShvKSkmJnZvaWQgMCE9PXI/cjphKSl9Zm9yKHZhciBvIGluIG4pdm9pZCAwPT09dFtvXSYmZS5yZW1vdmVWYWx1ZShvKTtyZXR1cm4gdH0oSixnKHcpLEYpfSxnZXRQcm9wczpmdW5jdGlvbigpe3JldHVybiB3fSxnZXRWYXJpYW50OmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBudWxsPT09KHQ9dy52YXJpYW50cyl8fHZvaWQgMD09PXQ/dm9pZCAwOnRbZV19LGdldERlZmF1bHRUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHcudHJhbnNpdGlvbn0sZ2V0VmFyaWFudENvbnRleHQ6ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSYmKGU9ITEpLGUpcmV0dXJuIG51bGw9PW0/dm9pZCAwOm0uZ2V0VmFyaWFudENvbnRleHQoKTtpZighWCl7dmFyIHQ9KG51bGw9PW0/dm9pZCAwOm0uZ2V0VmFyaWFudENvbnRleHQoKSl8fHt9O3JldHVybiB2b2lkIDAhPT13LmluaXRpYWwmJih0LmluaXRpYWw9dy5pbml0aWFsKSx0fWZvcih2YXIgbj17fSxyPTA7cjxUcjtyKyspe3ZhciBvPUJyW3JdLGE9d1tvXTsoUihhKXx8ITE9PT1hKSYmKG5bb109YSl9cmV0dXJuIG59LGVuYWJsZUxheW91dFByb2plY3Rpb246ZnVuY3Rpb24oKXtILmlzRW5hYmxlZD0hMCxKLmxheW91dFRyZWUuYWRkKEopfSxsb2NrUHJvamVjdGlvblRhcmdldDpmdW5jdGlvbigpe0guaXNUYXJnZXRMb2NrZWQ9ITB9LHVubG9ja1Byb2plY3Rpb25UYXJnZXQ6ZnVuY3Rpb24oKXtKLnN0b3BMYXlvdXRBbmltYXRpb24oKSxILmlzVGFyZ2V0TG9ja2VkPSExfSxnZXRMYXlvdXRTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBafSxzZXRDcm9zc2ZhZGVyOmZ1bmN0aW9uKGUpe1M9ZX0saXNQcm9qZWN0aW9uUmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gSC5pc0VuYWJsZWQmJkguaXNIeWRyYXRlZCYmWi5pc0h5ZHJhdGVkfSxzdGFydExheW91dEFuaW1hdGlvbjpmdW5jdGlvbihlLHQsbil7dm9pZCAwPT09biYmKG49ITEpO3ZhciByPUouZ2V0UHJvamVjdGlvbkFuaW1hdGlvblByb2dyZXNzKClbZV0sbz1uP0gucmVsYXRpdmVUYXJnZXRbZV06SC50YXJnZXRbZV0sYT1vLm1pbixpPW8ubWF4LWE7cmV0dXJuIHIuY2xlYXJMaXN0ZW5lcnMoKSxyLnNldChhKSxyLnNldChhKSxyLm9uQ2hhbmdlKChmdW5jdGlvbih0KXtKLnNldFByb2plY3Rpb25UYXJnZXRBeGlzKGUsdCx0K2ksbil9KSksSi5hbmltYXRlTW90aW9uVmFsdWUoZSxyLDAsdCl9LHN0b3BMYXlvdXRBbmltYXRpb246ZnVuY3Rpb24oKXtnbigoZnVuY3Rpb24oZSl7cmV0dXJuIEouZ2V0UHJvamVjdGlvbkFuaW1hdGlvblByb2dyZXNzKClbZV0uc3RvcCgpfSkpfSxtZWFzdXJlVmlld3BvcnRCb3g6ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9ITApO3ZhciBuPXMoTyx0KTtyZXR1cm4gZXx8WW4obixFKSxufSxnZXRQcm9qZWN0aW9uQW5pbWF0aW9uUHJvZ3Jlc3M6ZnVuY3Rpb24oKXtyZXR1cm4gX3x8KF89e3g6RHQoMCkseTpEdCgwKX0pLF99LHNldFByb2plY3Rpb25UYXJnZXRBeGlzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvO3ZvaWQgMD09PXImJihyPSExKSxyPyhILnJlbGF0aXZlVGFyZ2V0fHwoSC5yZWxhdGl2ZVRhcmdldD17eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX0pLG89SC5yZWxhdGl2ZVRhcmdldFtlXSk6KEgucmVsYXRpdmVUYXJnZXQ9dm9pZCAwLG89SC50YXJnZXRbZV0pLEguaXNIeWRyYXRlZD0hMCxvLm1pbj10LG8ubWF4PW4sQj0hMCxrLm5vdGlmeVNldEF4aXNUYXJnZXQoKX0scmViYXNlUHJvamVjdGlvblRhcmdldDpmdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PVoubGF5b3V0KTt2YXIgbj1KLmdldFByb2plY3Rpb25BbmltYXRpb25Qcm9ncmVzcygpLHI9bi54LG89bi55LGE9IShILnJlbGF0aXZlVGFyZ2V0fHxILmlzVGFyZ2V0TG9ja2VkfHxyLmlzQW5pbWF0aW5nKCl8fG8uaXNBbmltYXRpbmcoKSk7KGV8fGEpJiZnbigoZnVuY3Rpb24oZSl7dmFyIG49dFtlXSxyPW4ubWluLG89bi5tYXg7Si5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyhlLHIsbyl9KSl9LG5vdGlmeUxheW91dFJlYWR5OmZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXt2YXIgdD1lLmdldFByb2plY3Rpb25QYXJlbnQoKTtpZih0KXt2YXIgbj1abih0LmdldExheW91dFN0YXRlKCkubGF5b3V0LGUuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXQpO2duKChmdW5jdGlvbih0KXtlLnNldFByb2plY3Rpb25UYXJnZXRBeGlzKHQsblt0XS5taW4sblt0XS5tYXgsITApfSkpfWVsc2UgZS5yZWJhc2VQcm9qZWN0aW9uVGFyZ2V0KCl9KEopLEoubm90aWZ5TGF5b3V0VXBkYXRlKFoubGF5b3V0LEoucHJldlZpZXdwb3J0Qm94fHxaLmxheW91dCxlKX0scmVzZXRUcmFuc2Zvcm06ZnVuY3Rpb24oKXtyZXR1cm4gcChKLE8sdyl9LHJlc3RvcmVUcmFuc2Zvcm06ZnVuY3Rpb24oKXtyZXR1cm4gaChPLFApfSx1cGRhdGVMYXlvdXRQcm9qZWN0aW9uOmZ1bmN0aW9uKCl7aWYoSi5pc1Byb2plY3Rpb25SZWFkeSgpKXt2YXIgZT1aLmRlbHRhLHQ9Wi50cmVlU2NhbGUsbj10Lngscj10Lnksbz1aLmRlbHRhVHJhbnNmb3JtOyhmdW5jdGlvbihlLHQsbixyKXt2YXIgbyxhLGk9ZS5kZWx0YSxsPWUubGF5b3V0LGM9ZS5sYXlvdXRDb3JyZWN0ZWQscz1lLnRyZWVTY2FsZSx1PXQudGFyZ2V0O2E9bCxEbigobz1jKS54LGEueCksRG4oby55LGEueSksZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4ubGVuZ3RoO2lmKHIpe3ZhciBvLGE7dC54PXQueT0xO2Zvcih2YXIgaT0wO2k8cjtpKyspYT0obz1uW2ldKS5nZXRMYXlvdXRTdGF0ZSgpLmRlbHRhLHQueCo9YS54LnNjYWxlLHQueSo9YS55LnNjYWxlLEZuKGUsYSksQW4obykmJlVuKGUsZSxvLmdldExhdGVzdFZhbHVlcygpKX19KGMscyxuKSxibihpLGMsdSxyKX0pKFosVixKLnBhdGgsRSksQiYmSi5ub3RpZnlWaWV3cG9ydEJveFVwZGF0ZShWLnRhcmdldCxlKSxCPSExO3ZhciBhPVByKGUsdCk7YT09PW8mJm49PT10LngmJnI9PT10Lnl8fEouc2NoZWR1bGVSZW5kZXIoKSxaLmRlbHRhVHJhbnNmb3JtPWF9fSx1cGRhdGVUcmVlTGF5b3V0UHJvamVjdGlvbjpmdW5jdGlvbigpe0oubGF5b3V0VHJlZS5mb3JFYWNoKFpyKSxmLmRlZmF1bHQucHJlUmVuZGVyKEcsITEsITApfSxnZXRQcm9qZWN0aW9uUGFyZW50OmZ1bmN0aW9uKCl7aWYodm9pZCAwPT09TCl7Zm9yKHZhciBlPSExLHQ9Si5wYXRoLmxlbmd0aC0xO3Q+PTA7dC0tKXt2YXIgbj1KLnBhdGhbdF07aWYobi5wcm9qZWN0aW9uLmlzRW5hYmxlZCl7ZT1uO2JyZWFrfX1MPWV9cmV0dXJuIEx9LHJlc29sdmVSZWxhdGl2ZVRhcmdldEJveDpmdW5jdGlvbigpe3ZhciBlPUouZ2V0UHJvamVjdGlvblBhcmVudCgpO2lmKEgucmVsYXRpdmVUYXJnZXQmJmUmJihmdW5jdGlvbihlLHQpe09uKGUudGFyZ2V0LngsZS5yZWxhdGl2ZVRhcmdldC54LHQudGFyZ2V0LngpLE9uKGUudGFyZ2V0LnksZS5yZWxhdGl2ZVRhcmdldC55LHQudGFyZ2V0LnkpfShILGUucHJvamVjdGlvbiksQW4oZSkpKXt2YXIgdD1ILnRhcmdldDtVbih0LHQsZS5nZXRMYXRlc3RWYWx1ZXMoKSl9fSxzaG91bGRSZXNldFRyYW5zZm9ybTpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHcuX2xheW91dFJlc2V0VHJhbnNmb3JtKX0scG9pbnRUbzpmdW5jdGlvbihlKXtWPWUucHJvamVjdGlvbixJPWUuZ2V0TGF0ZXN0VmFsdWVzKCksbnVsbD09TXx8TSgpLE09bC5waXBlKGUub25TZXRBeGlzVGFyZ2V0KEouc2NoZWR1bGVVcGRhdGVMYXlvdXRQcm9qZWN0aW9uKSxlLm9uTGF5b3V0QW5pbWF0aW9uQ29tcGxldGUoKGZ1bmN0aW9uKCl7dmFyIGU7Si5pc1ByZXNlbnQ/Si5wcmVzZW5jZT1hci5QcmVzZW50Om51bGw9PT0oZT1KLmxheW91dFNhZmVUb1JlbW92ZSl8fHZvaWQgMD09PWV8fGUuY2FsbChKKX0pKSl9LGlzUHJlc2VudDohMCxwcmVzZW5jZTphci5FbnRlcmluZ30pO3JldHVybiBKfX07ZnVuY3Rpb24gWnIoZSl7ZS5yZXNvbHZlUmVsYXRpdmVUYXJnZXRCb3goKX1mdW5jdGlvbiBBcihlKXtlLnVwZGF0ZUxheW91dFByb2plY3Rpb24oKX12YXIgRHIsQnI9ci5fX3NwcmVhZEFycmF5KFtcImluaXRpYWxcIl0sci5fX3JlYWQoZW4pKSxUcj1Cci5sZW5ndGgsJHI9bmV3IFNldChbXCJ3aWR0aFwiLFwiaGVpZ2h0XCIsXCJ0b3BcIixcImxlZnRcIixcInJpZ2h0XCIsXCJib3R0b21cIixcInhcIixcInlcIl0pLEZyPWZ1bmN0aW9uKGUpe3JldHVybiAkci5oYXMoZSl9LFdyPWZ1bmN0aW9uKGUsdCl7ZS5zZXQodCwhMSksZS5zZXQodCl9LE5yPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09aS5udW1iZXJ8fGU9PT1pLnB4fTshZnVuY3Rpb24oZSl7ZS53aWR0aD1cIndpZHRoXCIsZS5oZWlnaHQ9XCJoZWlnaHRcIixlLmxlZnQ9XCJsZWZ0XCIsZS5yaWdodD1cInJpZ2h0XCIsZS50b3A9XCJ0b3BcIixlLmJvdHRvbT1cImJvdHRvbVwifShEcnx8KERyPXt9KSk7dmFyIHpyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHBhcnNlRmxvYXQoZS5zcGxpdChcIiwgXCIpW3RdKX0sVXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXt2YXIgbz1yLnRyYW5zZm9ybTtpZihcIm5vbmVcIj09PW98fCFvKXJldHVybiAwO3ZhciBhPW8ubWF0Y2goL15tYXRyaXgzZFxcKCguKylcXCkkLyk7aWYoYSlyZXR1cm4genIoYVsxXSx0KTt2YXIgaT1vLm1hdGNoKC9ebWF0cml4XFwoKC4rKVxcKSQvKTtyZXR1cm4gaT96cihpWzFdLGUpOjB9fSxHcj1uZXcgU2V0KFtcInhcIixcInlcIixcInpcIl0pLHFyPUcuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hR3IuaGFzKGUpfSkpLFlyPXt3aWR0aDpmdW5jdGlvbihlKXt2YXIgdD1lLng7cmV0dXJuIHQubWF4LXQubWlufSxoZWlnaHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS55O3JldHVybiB0Lm1heC10Lm1pbn0sdG9wOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC50b3A7cmV0dXJuIHBhcnNlRmxvYXQobil9LGxlZnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmxlZnQ7cmV0dXJuIHBhcnNlRmxvYXQobil9LGJvdHRvbTpmdW5jdGlvbihlLHQpe3ZhciBuPWUueSxyPXQudG9wO3JldHVybiBwYXJzZUZsb2F0KHIpKyhuLm1heC1uLm1pbil9LHJpZ2h0OmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS54LHI9dC5sZWZ0O3JldHVybiBwYXJzZUZsb2F0KHIpKyhuLm1heC1uLm1pbil9LHg6VXIoNCwxMykseTpVcig1LDE0KX07ZnVuY3Rpb24gS3IoZSx0LG4sbyl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5zb21lKEZyKX0odCk/ZnVuY3Rpb24oZSx0LG4sbyl7dm9pZCAwPT09biYmKG49e30pLHZvaWQgMD09PW8mJihvPXt9KSx0PXIuX19hc3NpZ24oe30sdCksbz1yLl9fYXNzaWduKHt9LG8pO3ZhciBsPU9iamVjdC5rZXlzKHQpLmZpbHRlcihGciksYz1bXSxzPSExLHU9W107aWYobC5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgbD1lLmdldFZhbHVlKHIpO2lmKGUuaGFzVmFsdWUocikpe3ZhciBkLGY9bltyXSxwPXRbcl0saD0kdChmKTtpZihQZShwKSlmb3IodmFyIEM9cC5sZW5ndGgsdj1udWxsPT09cFswXT8xOjA7djxDO3YrKylkP2EuaW52YXJpYW50KCR0KHBbdl0pPT09ZCxcIkFsbCBrZXlmcmFtZXMgbXVzdCBiZSBvZiB0aGUgc2FtZSB0eXBlXCIpOihkPSR0KHBbdl0pLGEuaW52YXJpYW50KGQ9PT1ofHxOcihoKSYmTnIoZCksXCJLZXlmcmFtZXMgbXVzdCBiZSBvZiB0aGUgc2FtZSBkaW1lbnNpb24gYXMgdGhlIGN1cnJlbnQgdmFsdWVcIikpO2Vsc2UgZD0kdChwKTtpZihoIT09ZClpZihOcihoKSYmTnIoZCkpe3ZhciBnPWwuZ2V0KCk7XCJzdHJpbmdcIj09dHlwZW9mIGcmJmwuc2V0KHBhcnNlRmxvYXQoZykpLFwic3RyaW5nXCI9PXR5cGVvZiBwP3Rbcl09cGFyc2VGbG9hdChwKTpBcnJheS5pc0FycmF5KHApJiZkPT09aS5weCYmKHRbcl09cC5tYXAocGFyc2VGbG9hdCkpfWVsc2UobnVsbD09aD92b2lkIDA6aC50cmFuc2Zvcm0pJiYobnVsbD09ZD92b2lkIDA6ZC50cmFuc2Zvcm0pJiYoMD09PWZ8fDA9PT1wKT8wPT09Zj9sLnNldChkLnRyYW5zZm9ybShmKSk6dFtyXT1oLnRyYW5zZm9ybShwKTooc3x8KGM9ZnVuY3Rpb24oZSl7dmFyIHQ9W107cmV0dXJuIHFyLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciByPWUuZ2V0VmFsdWUobik7dm9pZCAwIT09ciYmKHQucHVzaChbbixyLmdldCgpXSksci5zZXQobi5zdGFydHNXaXRoKFwic2NhbGVcIik/MTowKSl9KSksdC5sZW5ndGgmJmUuc3luY1JlbmRlcigpLHR9KGUpLHM9ITApLHUucHVzaChyKSxvW3JdPXZvaWQgMCE9PW9bcl0/b1tyXTp0W3JdLFdyKGwscCkpfX0pKSx1Lmxlbmd0aCl7dmFyIGQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQubWVhc3VyZVZpZXdwb3J0Qm94KCksbz10LmdldEluc3RhbmNlKCksYT1nZXRDb21wdXRlZFN0eWxlKG8pLGk9YS5kaXNwbGF5LGw9e3RvcDphLnRvcCxsZWZ0OmEubGVmdCxib3R0b206YS5ib3R0b20scmlnaHQ6YS5yaWdodCx0cmFuc2Zvcm06YS50cmFuc2Zvcm19O1wibm9uZVwiPT09aSYmdC5zZXRTdGF0aWNWYWx1ZShcImRpc3BsYXlcIixlLmRpc3BsYXl8fFwiYmxvY2tcIiksdC5zeW5jUmVuZGVyKCk7dmFyIGM9dC5tZWFzdXJlVmlld3BvcnRCb3goKTtyZXR1cm4gbi5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgbz10LmdldFZhbHVlKG4pO1dyKG8sWXJbbl0ocixsKSksZVtuXT1ZcltuXShjLGEpfSkpLGV9KHQsZSx1KTtyZXR1cm4gYy5sZW5ndGgmJmMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49ci5fX3JlYWQodCwyKSxvPW5bMF0sYT1uWzFdO2UuZ2V0VmFsdWUobykuc2V0KGEpfSkpLGUuc3luY1JlbmRlcigpLHt0YXJnZXQ6ZCx0cmFuc2l0aW9uRW5kOm99fXJldHVybnt0YXJnZXQ6dCx0cmFuc2l0aW9uRW5kOm99fShlLHQsbixvKTp7dGFyZ2V0OnQsdHJhbnNpdGlvbkVuZDpvfX12YXIgWHI9e3RyZWVUeXBlOlwiZG9tXCIscmVhZFZhbHVlRnJvbUluc3RhbmNlOmZ1bmN0aW9uKGUsdCl7aWYoSyh0KSl7dmFyIG49X3QodCk7cmV0dXJuIG4mJm4uZGVmYXVsdHx8MH12YXIgcixvPShyPWUsd2luZG93LmdldENvbXB1dGVkU3R5bGUocikpO3JldHVybihuZSh0KT9vLmdldFByb3BlcnR5VmFsdWUodCk6b1t0XSl8fDB9LHNvcnROb2RlUG9zaXRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpPzE6LTF9LGdldEJhc2VUYXJnZXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gbnVsbD09PShuPWUuc3R5bGUpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuW3RdfSxtZWFzdXJlVmlld3BvcnRCb3g6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRW4oZSx0LnRyYW5zZm9ybVBhZ2VQb2ludCl9LHJlc2V0VHJhbnNmb3JtOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uLnRyYW5zZm9ybVRlbXBsYXRlO3Quc3R5bGUudHJhbnNmb3JtPXI/cih7fSxcIlwiKTpcIm5vbmVcIixlLnNjaGVkdWxlUmVuZGVyKCl9LHJlc3RvcmVUcmFuc2Zvcm06ZnVuY3Rpb24oZSx0KXtlLnN0eWxlLnRyYW5zZm9ybT10LnN0eWxlLnRyYW5zZm9ybX0scmVtb3ZlVmFsdWVGcm9tUmVuZGVyU3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnZhcnMscj10LnN0eWxlO2RlbGV0ZSBuW2VdLGRlbGV0ZSByW2VdfSxtYWtlVGFyZ2V0QW5pbWF0YWJsZTpmdW5jdGlvbihlLHQsbixvKXt2YXIgYT1uLnRyYW5zZm9ybVZhbHVlczt2b2lkIDA9PT1vJiYobz0hMCk7dmFyIGk9dC50cmFuc2l0aW9uLGw9dC50cmFuc2l0aW9uRW5kLGM9ci5fX3Jlc3QodCxbXCJ0cmFuc2l0aW9uXCIsXCJ0cmFuc2l0aW9uRW5kXCJdKSxzPXF0KGMsaXx8e30sZSk7aWYoYSYmKGwmJihsPWEobCkpLGMmJihjPWEoYykpLHMmJihzPWEocykpKSxvKXtVdChlLGMscyk7dmFyIHU9ZnVuY3Rpb24oZSx0LG4sbyl7dmFyIGE9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvLGE9ci5fX3Jlc3QodCxbXSksaT1lLmdldEluc3RhbmNlKCk7aWYoIShpIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKXJldHVybnt0YXJnZXQ6YSx0cmFuc2l0aW9uRW5kOm59O2Zvcih2YXIgbCBpbiBuJiYobj1yLl9fYXNzaWduKHt9LG4pKSxlLmZvckVhY2hWYWx1ZSgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXQoKTtpZihjcih0KSl7dmFyIG49dXIodCxpKTtuJiZlLnNldChuKX19KSksYSl7dmFyIGM9YVtsXTtpZihjcihjKSl7dmFyIHM9dXIoYyxpKTtzJiYoYVtsXT1zLG4mJihudWxsIT09KG89bltsXSkmJnZvaWQgMCE9PW98fChuW2xdPWMpKSl9fXJldHVybnt0YXJnZXQ6YSx0cmFuc2l0aW9uRW5kOm59fShlLHQsbyk7cmV0dXJuIEtyKGUsdD1hLnRhcmdldCxuLG89YS50cmFuc2l0aW9uRW5kKX0oZSxjLHMsbCk7bD11LnRyYW5zaXRpb25FbmQsYz11LnRhcmdldH1yZXR1cm4gci5fX2Fzc2lnbih7dHJhbnNpdGlvbjppLHRyYW5zaXRpb25FbmQ6bH0sYyl9LHNjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczpfZSxidWlsZDpmdW5jdGlvbihlLHQsbixyLG8sYSxpKXt2b2lkIDAhPT1lLmlzVmlzaWJsZSYmKHQuc3R5bGUudmlzaWJpbGl0eT1lLmlzVmlzaWJsZT9cInZpc2libGVcIjpcImhpZGRlblwiKTt2YXIgbD1yLmlzRW5hYmxlZCYmby5pc0h5ZHJhdGVkO2llKHQsbixyLG8sYSxpLnRyYW5zZm9ybVRlbXBsYXRlLGw/UHI6dm9pZCAwLGw/a3I6dm9pZCAwKX0scmVuZGVyOkxlfSxRcj1JcihYciksSnI9SXIoci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LFhyKSx7Z2V0QmFzZVRhcmdldDpmdW5jdGlvbihlLHQpe3JldHVybiBlW3RdfSxyZWFkVmFsdWVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gSyh0KT8obnVsbD09PShuPV90KHQpKXx8dm9pZCAwPT09bj92b2lkIDA6bi5kZWZhdWx0KXx8MDoodD1NZS5oYXModCk/dDpPZSh0KSxlLmdldEF0dHJpYnV0ZSh0KSl9LHNjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczpqZSxidWlsZDpmdW5jdGlvbihlLHQsbixyLG8sYSxpKXt2YXIgbD1yLmlzRW5hYmxlZCYmby5pc0h5ZHJhdGVkO21lKHQsbixyLG8sYSxpLnRyYW5zZm9ybVRlbXBsYXRlLGw/UHI6dm9pZCAwLGw/a3I6dm9pZCAwKX0scmVuZGVyOlNlfSkpLGVvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFcoZSk/SnIodCx7ZW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRpb246ITF9KTpRcih0LHtlbmFibGVIYXJkd2FyZUFjY2VsZXJhdGlvbjohMH0pfSx0bz1yLl9fYXNzaWduKHIuX19hc3NpZ24oci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG9uKSxwdCksbHIpLF9yKSxubz0kKChmdW5jdGlvbihlLHQpe3JldHVybiBUZShlLHQsdG8sZW8pfSkpLHJvPSQoVGUpLG9vPTA7ZnVuY3Rpb24gYW8oKXt2YXIgZT1vbztyZXR1cm4gb28rKyxlfXZhciBpbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5pbml0aWFsLHI9ZS5pc1ByZXNlbnQsYT1lLm9uRXhpdENvbXBsZXRlLGk9ZS5jdXN0b20sbD1lLnByZXNlbmNlQWZmZWN0c0xheW91dCxjPU8obG8pLHM9TyhhbyksZD1vLnVzZU1lbW8oKGZ1bmN0aW9uKCl7cmV0dXJue2lkOnMsaW5pdGlhbDpuLGlzUHJlc2VudDpyLGN1c3RvbTppLG9uRXhpdENvbXBsZXRlOmZ1bmN0aW9uKGUpe2Muc2V0KGUsITApO3ZhciB0PSEwO2MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZXx8KHQ9ITEpfSkpLHQmJihudWxsPT1hfHxhKCkpfSxyZWdpc3RlcjpmdW5jdGlvbihlKXtyZXR1cm4gYy5zZXQoZSwhMSksZnVuY3Rpb24oKXtyZXR1cm4gYy5kZWxldGUoZSl9fX19KSxsP3ZvaWQgMDpbcl0pO3JldHVybiBvLnVzZU1lbW8oKGZ1bmN0aW9uKCl7Yy5mb3JFYWNoKChmdW5jdGlvbihlLHQpe3JldHVybiBjLnNldCh0LCExKX0pKX0pLFtyXSksdS51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7IXImJiFjLnNpemUmJihudWxsPT1hfHxhKCkpfSksW3JdKSx1LmNyZWF0ZUVsZW1lbnQoeC5Qcm92aWRlcix7dmFsdWU6ZH0sdCl9O2Z1bmN0aW9uIGxvKCl7cmV0dXJuIG5ldyBNYXB9ZnVuY3Rpb24gY28oZSl7cmV0dXJuIGUua2V5fHxcIlwifWZ1bmN0aW9uIHNvKGUsdCxuKXt2b2lkIDA9PT1uJiYobj17fSk7dmFyIHI9ZWUoZSk/ZTpEdChlKTtyZXR1cm4gVnQoXCJcIixyLHQsbikse3N0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gci5zdG9wKCl9fX1mdW5jdGlvbiB1bygpe3ZhciBlPUR0KDEpLHQ9e2xlYWQ6dm9pZCAwLGZvbGxvdzp2b2lkIDAsY3Jvc3NmYWRlT3BhY2l0eTohMSxwcmVzZXJ2ZUZvbGxvd09wYWNpdHk6ITF9LG49ci5fX2Fzc2lnbih7fSx0KSxvPXt9LGE9e30saT0hMSxzPW51bGwsdT0wO2Z1bmN0aW9uIGQobixvKXt2YXIgYT10LmxlYWQsbD10LmZvbGxvdztpPSEwLHM9bnVsbDt2YXIgdT0hMSxkPWZ1bmN0aW9uKCl7dT0hMCxhJiZhLnNjaGVkdWxlUmVuZGVyKCksbCYmbC5zY2hlZHVsZVJlbmRlcigpfSxwPWZ1bmN0aW9uKCl7aT0hMSxzPWMuZ2V0RnJhbWVEYXRhKCkudGltZXN0YW1wfTtyZXR1cm4gbz1vJiZIdChvLFwiY3Jvc3NmYWRlXCIpLHNvKGUsbixyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbykse29uVXBkYXRlOmQsb25Db21wbGV0ZTpmdW5jdGlvbigpe3U/cCgpOihlLnNldChuKSxmLmRlZmF1bHQucmVhZChwKSksZCgpfX0pKX1yZXR1cm57aXNBY3RpdmU6ZnVuY3Rpb24oKXtyZXR1cm4gbyYmKGl8fGMuZ2V0RnJhbWVEYXRhKCkudGltZXN0YW1wPT09cyl9LGZyb21MZWFkOmZ1bmN0aW9uKGUpe3JldHVybiBkKDAsZSl9LHRvTGVhZDpmdW5jdGlvbihyKXt2YXIgbz0wO3JldHVybiB0LnByZXZWYWx1ZXN8fHQuZm9sbG93P24ubGVhZD09PXQuZm9sbG93JiZuLmZvbGxvdz09PXQubGVhZCYmKG89MS1lLmdldCgpKTpvPTEsZS5zZXQobyksZCgxLHIpfSxyZXNldDpmdW5jdGlvbigpe3JldHVybiBlLnNldCgxKX0sc3RvcDpmdW5jdGlvbigpe3JldHVybiBlLnN0b3AoKX0sZ2V0Q3Jvc3NmYWRlU3RhdGU6ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG4scixpPWMuZ2V0RnJhbWVEYXRhKCkudGltZXN0YW1wLHM9dC5sZWFkLGQ9dC5mb2xsb3c7aWYoaSE9PXUmJnMpe3U9aTt2YXIgZj1zLmdldExhdGVzdFZhbHVlcygpO09iamVjdC5hc3NpZ24obyxmKTt2YXIgcD1kP2QuZ2V0TGF0ZXN0VmFsdWVzKCk6dC5wcmV2VmFsdWVzO09iamVjdC5hc3NpZ24oYSxwKTt2YXIgaD1lLmdldCgpLEM9bnVsbCE9PShuPWYub3BhY2l0eSkmJnZvaWQgMCE9PW4/bjoxLHY9bnVsbCE9PShyPW51bGw9PXA/dm9pZCAwOnAub3BhY2l0eSkmJnZvaWQgMCE9PXI/cjoxO3QuY3Jvc3NmYWRlT3BhY2l0eSYmZD8oby5vcGFjaXR5PWwubWl4KCExIT09ZC5pc1Zpc2libGU/MDp2LEMsZm8oaCkpLGEub3BhY2l0eT10LnByZXNlcnZlRm9sbG93T3BhY2l0eT92OmwubWl4KHYsMCxwbyhoKSkpOmR8fChvLm9wYWNpdHk9bC5taXgodixDLGgpKSxmdW5jdGlvbihlLHQsbixyLG8sYSl7Zm9yKHZhciBpPTA7aTx2bztpKyspe3ZhciBjPVwiYm9yZGVyXCIrQ29baV0rXCJSYWRpdXNcIixzPWdvKHIsYyksdT1nbyhuLGMpO2lmKCh2b2lkIDAhPT1zfHx2b2lkIDAhPT11KSYmKHN8fChzPTApLHV8fCh1PTApLFwibnVtYmVyXCI9PXR5cGVvZiBzJiZcIm51bWJlclwiPT10eXBlb2YgdSkpe3ZhciBkPU1hdGgubWF4KGwubWl4KHMsdSxhKSwwKTtlW2NdPXRbY109ZH19aWYoci5yb3RhdGV8fG4ucm90YXRlKXt2YXIgZj1sLm1peChyLnJvdGF0ZXx8MCxuLnJvdGF0ZXx8MCxhKTtlLnJvdGF0ZT10LnJvdGF0ZT1mfSFvJiZuLmJhY2tncm91bmRDb2xvciYmci5iYWNrZ3JvdW5kQ29sb3ImJihlLmJhY2tncm91bmRDb2xvcj10LmJhY2tncm91bmRDb2xvcj1sLm1peENvbG9yKHIuYmFja2dyb3VuZENvbG9yLG4uYmFja2dyb3VuZENvbG9yKShhKSl9KG8sYSxmLHB8fHt9LEJvb2xlYW4oZCksaCl9fSgpLG49PT10LmxlYWQ/bzpuPT09dC5mb2xsb3c/YTp2b2lkIDB9LHNldE9wdGlvbnM6ZnVuY3Rpb24oZSl7bj10LHQ9ZSxvPXt9LGE9e319LGdldExhdGVzdFZhbHVlczpmdW5jdGlvbigpe3JldHVybiBvfX19dmFyIGZvPWhvKDAsLjUsbC5jaXJjT3V0KSxwbz1obyguNSwuOTUsbC5saW5lYXIpO2Z1bmN0aW9uIGhvKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHI8ZT8wOnI+dD8xOm4obC5wcm9ncmVzcyhlLHQscikpfX12YXIgQ289W1wiVG9wTGVmdFwiLFwiVG9wUmlnaHRcIixcIkJvdHRvbUxlZnRcIixcIkJvdHRvbVJpZ2h0XCJdLHZvPUNvLmxlbmd0aDtmdW5jdGlvbiBnbyhlLHQpe3ZhciBuO3JldHVybiBudWxsIT09KG49ZVt0XSkmJnZvaWQgMCE9PW4/bjplLmJvcmRlclJhZGl1c312YXIgbW89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciB0PW51bGwhPT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gdC5jaGlsZHJlbj1uZXcgU2V0LHQuc3RhY2tzPW5ldyBNYXAsdC5oYXNNb3VudGVkPSExLHQudXBkYXRlU2NoZWR1bGVkPSExLHQucmVuZGVyU2NoZWR1bGVkPSExLHQuc3luY0NvbnRleHQ9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGJyKCkpLHtzeW5jVXBkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiB0LnNjaGVkdWxlVXBkYXRlKGUpfSxmb3JjZVVwZGF0ZTpmdW5jdGlvbigpe3Quc3luY0NvbnRleHQ9ci5fX2Fzc2lnbih7fSx0LnN5bmNDb250ZXh0KSx0LnNjaGVkdWxlVXBkYXRlKCEwKX0scmVnaXN0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuYWRkQ2hpbGQoZSl9LHJlbW92ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5yZW1vdmVDaGlsZChlKX19KSx0fXJldHVybiByLl9fZXh0ZW5kcyh0LGUpLHQucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dGhpcy5oYXNNb3VudGVkPSEwfSx0LnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLnN0YXJ0TGF5b3V0QW5pbWF0aW9uKCl9LHQucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlclNjaGVkdWxlZD0hMCwhMH0sdC5wcm90b3R5cGUuc3RhcnRMYXlvdXRBbmltYXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMucmVuZGVyU2NoZWR1bGVkPXRoaXMudXBkYXRlU2NoZWR1bGVkPSExO3ZhciB0PXRoaXMucHJvcHMudHlwZTt0aGlzLmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuaXNQcmVzZW50P2UucHJlc2VuY2UhPT1hci5FbnRlcmluZyYmKGUucHJlc2VuY2U9ZS5wcmVzZW5jZT09PWFyLkV4aXRpbmc/YXIuRW50ZXJpbmc6YXIuUHJlc2VudCk6ZS5wcmVzZW5jZT1hci5FeGl0aW5nfSkpLHRoaXMudXBkYXRlU3RhY2tzKCk7dmFyIG49e2xheW91dFJlYWR5OmZ1bmN0aW9uKG4pe3ZvaWQgMCE9PW4uZ2V0TGF5b3V0SWQoKT9lLmdldFN0YWNrKG4pLmFuaW1hdGUobixcImNyb3NzZmFkZVwiPT09dCk6bi5ub3RpZnlMYXlvdXRSZWFkeSgpfSxwYXJlbnQ6dGhpcy5jb250ZXh0LnZpc3VhbEVsZW1lbnR9O3RoaXMuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuc3luY0NvbnRleHQuYWRkKHQpfSkpLHRoaXMuc3luY0NvbnRleHQuZmx1c2gobiksdGhpcy5zdGFja3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xlYXJTbmFwc2hvdCgpfSkpfSx0LnByb3RvdHlwZS51cGRhdGVTdGFja3M9ZnVuY3Rpb24oKXt0aGlzLnN0YWNrcy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS51cGRhdGVMZWFkQW5kRm9sbG93KCl9KSl9LHQucHJvdG90eXBlLnNjaGVkdWxlVXBkYXRlPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSExKSwhZSYmdGhpcy51cGRhdGVTY2hlZHVsZWR8fCh0aGlzLnVwZGF0ZVNjaGVkdWxlZD0hMCx0aGlzLmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXtmb3IodmFyIHQ9ITEsbj17fSxyPTA7cjxVLmxlbmd0aDtyKyspe3ZhciBvPVwicm90YXRlXCIrVVtyXTtlLmhhc1ZhbHVlKG8pJiYwIT09ZS5nZXRTdGF0aWNWYWx1ZShvKSYmKHQ9ITAsbltvXT1lLmdldFN0YXRpY1ZhbHVlKG8pLGUuc2V0U3RhdGljVmFsdWUobywwKSl9aWYodCl7Zm9yKHZhciBvIGluIGUuc3luY1JlbmRlcigpLG4pZS5zZXRTdGF0aWNWYWx1ZShvLG5bb10pO2Uuc2NoZWR1bGVSZW5kZXIoKX19KGUpLGUuc2hvdWxkUmVzZXRUcmFuc2Zvcm0oKSYmZS5yZXNldFRyYW5zZm9ybSgpfSkpLHRoaXMuY2hpbGRyZW4uZm9yRWFjaChSbiksdGhpcy5zdGFja3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudXBkYXRlU25hcHNob3QoKX0pKSwhZSYmdGhpcy5yZW5kZXJTY2hlZHVsZWR8fCh0aGlzLnJlbmRlclNjaGVkdWxlZD0hMCx0aGlzLmZvcmNlVXBkYXRlKCkpKX0sdC5wcm90b3R5cGUuYWRkQ2hpbGQ9ZnVuY3Rpb24oZSl7dGhpcy5jaGlsZHJlbi5hZGQoZSksdGhpcy5hZGRUb1N0YWNrKGUpLGUucHJlc2VuY2U9dGhpcy5oYXNNb3VudGVkP2FyLkVudGVyaW5nOmFyLlByZXNlbnR9LHQucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKGUpe3RoaXMuc2NoZWR1bGVVcGRhdGUoKSx0aGlzLmNoaWxkcmVuLmRlbGV0ZShlKSx0aGlzLnJlbW92ZUZyb21TdGFjayhlKX0sdC5wcm90b3R5cGUuYWRkVG9TdGFjaz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldFN0YWNrKGUpO251bGw9PXR8fHQuYWRkKGUpfSx0LnByb3RvdHlwZS5yZW1vdmVGcm9tU3RhY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRTdGFjayhlKTtudWxsPT10fHx0LnJlbW92ZShlKX0sdC5wcm90b3R5cGUuZ2V0U3RhY2s9ZnVuY3Rpb24oZSl7dmFyIHQsbixvLGEsaSxsLGMscyx1PWUuZ2V0TGF5b3V0SWQoKTtpZih2b2lkIDAhPT11KXJldHVybiF0aGlzLnN0YWNrcy5oYXModSkmJnRoaXMuc3RhY2tzLnNldCh1LChhPW5ldyBTZXQsaT17bGVhZElzRXhpdGluZzohMX0sbD1yLl9fYXNzaWduKHt9LGkpLGM9dW8oKSxzPSExLHthZGQ6ZnVuY3Rpb24oZSl7ZS5zZXRDcm9zc2ZhZGVyKGMpLGEuYWRkKGUpLG8mJihlLnByZXZEcmFnQ3Vyc29yPW8pLGkubGVhZHx8KGkubGVhZD1lKX0scmVtb3ZlOmZ1bmN0aW9uKGUpe2EuZGVsZXRlKGUpfSxnZXRMZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIGkubGVhZH0sdXBkYXRlU25hcHNob3Q6ZnVuY3Rpb24oKXtpZihpLmxlYWQpe3Q9Yy5pc0FjdGl2ZSgpP2MuZ2V0TGF0ZXN0VmFsdWVzKCk6aS5sZWFkLmdldExhdGVzdFZhbHVlcygpLG49aS5sZWFkLnByZXZWaWV3cG9ydEJveDt2YXIgZT1uci5nZXQoaS5sZWFkKTtlJiZlLmlzRHJhZ2dpbmcmJihvPWUuY3Vyc29yUHJvZ3Jlc3MpfX0sY2xlYXJTbmFwc2hvdDpmdW5jdGlvbigpe289bj12b2lkIDB9LHVwZGF0ZUxlYWRBbmRGb2xsb3c6ZnVuY3Rpb24oKXt2YXIgZSxuLG87bD1yLl9fYXNzaWduKHt9LGkpO2Zvcih2YXIgdT1BcnJheS5mcm9tKGEpLGQ9dS5sZW5ndGg7ZC0tO2Q+PTApe3ZhciBmPXVbZF07aWYobiYmKG51bGwhPW98fChvPWYpKSxudWxsIT1ufHwobj1mKSxuJiZvKWJyZWFrfWkubGVhZD1uLGkuZm9sbG93PW8saS5sZWFkSXNFeGl0aW5nPShudWxsPT09KGU9aS5sZWFkKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5wcmVzZW5jZSk9PT1hci5FeGl0aW5nLGMuc2V0T3B0aW9ucyh7bGVhZDpuLGZvbGxvdzpvLHByZXZWYWx1ZXM6dCxjcm9zc2ZhZGVPcGFjaXR5OihudWxsPT1vP3ZvaWQgMDpvLmlzUHJlc2VuY2VSb290KXx8KG51bGw9PW4/dm9pZCAwOm4uaXNQcmVzZW5jZVJvb3QpfSksaS5sZWFkPT09bC5mb2xsb3d8fGwubGVhZD09PWkubGVhZCYmbC5sZWFkSXNFeGl0aW5nPT09aS5sZWFkSXNFeGl0aW5nfHwocz0hMCl9LGFuaW1hdGU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtpZih2b2lkIDA9PT10JiYodD0hMSksZT09PWkubGVhZCl7dD9lLnBvaW50VG8oaS5sZWFkKTplLnNldFZpc2liaWxpdHkoITApO3ZhciBvPXt9LGE9bnVsbD09PShyPWkuZm9sbG93KXx8dm9pZCAwPT09cj92b2lkIDA6ci5nZXRQcm9qZWN0aW9uUGFyZW50KCk7aWYoYSYmKG8ucHJldlBhcmVudD1hKSxlLnByZXNlbmNlPT09YXIuRW50ZXJpbmc/by5vcmlnaW5Cb3g9aS5mb2xsb3c/aS5mb2xsb3cucHJldlZpZXdwb3J0Qm94Om46ZS5wcmVzZW5jZT09PWFyLkV4aXRpbmcmJihvLnRhcmdldEJveD1mdW5jdGlvbigpe3ZhciBlO3JldHVybiBudWxsPT09KGU9aS5mb2xsb3cpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmdldExheW91dFN0YXRlKCkubGF5b3V0fSgpKSxzKXtzPSExO3ZhciBsPWUuZ2V0RGVmYXVsdFRyYW5zaXRpb24oKTtlLnByZXNlbmNlPT09YXIuRW50ZXJpbmc/Yy50b0xlYWQobCk6Yy5mcm9tTGVhZChsKX1lLm5vdGlmeUxheW91dFJlYWR5KG8pfWVsc2UgdD9pLmxlYWQmJmUucG9pbnRUbyhpLmxlYWQpOmUuc2V0VmlzaWJpbGl0eSghMSl9fSkpLHRoaXMuc3RhY2tzLmdldCh1KX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHUuY3JlYXRlRWxlbWVudChPci5Qcm92aWRlcix7dmFsdWU6dGhpcy5zeW5jQ29udGV4dH0sdGhpcy5wcm9wcy5jaGlsZHJlbil9LHQuY29udGV4dFR5cGU9eSx0fSh1LkNvbXBvbmVudCk7ZnVuY3Rpb24gd28oZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZX12YXIgeW89ci5fX2Fzc2lnbihyLl9fYXNzaWduKHtyZW5kZXJlcjplb30sb24pLHB0KSxibz1yLl9fYXNzaWduKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSx5byksbHIpLF9yKTtmdW5jdGlvbiB4byhlKXt2YXIgdD1PKChmdW5jdGlvbigpe3JldHVybiBEdChlKX0pKTtpZihvLnVzZUNvbnRleHQodykuaXNTdGF0aWMpe3ZhciBuPXIuX19yZWFkKG8udXNlU3RhdGUoZSksMilbMV07by51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHQub25DaGFuZ2Uobil9KSxbXSl9cmV0dXJuIHR9ZnVuY3Rpb24gT28oZSx0KXtvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtpZihlZShlKSlyZXR1cm4gZS5vbkNoYW5nZSh0KX0pLFt0XSl9ZnVuY3Rpb24gTG8oZSx0KXt2YXIgbj14byh0KCkpLHI9ZnVuY3Rpb24oKXtyZXR1cm4gbi5zZXQodCgpKX07cmV0dXJuIHIoKSxmdW5jdGlvbihlLHQpe28udXNlRWZmZWN0KChmdW5jdGlvbigpe3ZhciBuPWUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5vbkNoYW5nZSh0KX0pKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbi5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSkpfX0pKX0oZSwoZnVuY3Rpb24oKXtyZXR1cm4gZi5kZWZhdWx0LnVwZGF0ZShyLCExLCEwKX0pKSxufXZhciBNbyxTbz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJmUubWl4fShlKT9lLm1peDp2b2lkIDB9O2Z1bmN0aW9uIF9vKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO3ZhciBuPSFBcnJheS5pc0FycmF5KGVbMF0pLG89bj8wOi0xLGE9ZVswK29dLGk9ZVsxK29dLGM9ZVsyK29dLHM9ZVszK29dLHU9bC5pbnRlcnBvbGF0ZShpLGMsci5fX2Fzc2lnbih7bWl4ZXI6U28oY1swXSl9LHMpKTtyZXR1cm4gbj91KGEpOnV9ZnVuY3Rpb24gam8oZSx0LG4sbyl7dmFyIGE9XCJmdW5jdGlvblwiPT10eXBlb2YgdD90Ol9vKHQsbixvKTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9FbyhlLGEpOkVvKFtlXSwoZnVuY3Rpb24oZSl7dmFyIHQ9ci5fX3JlYWQoZSwxKVswXTtyZXR1cm4gYSh0KX0pKX1mdW5jdGlvbiBFbyhlLHQpe3ZhciBuPU8oKGZ1bmN0aW9uKCl7cmV0dXJuW119KSk7cmV0dXJuIExvKGUsKGZ1bmN0aW9uKCl7bi5sZW5ndGg9MDtmb3IodmFyIHI9ZS5sZW5ndGgsbz0wO288cjtvKyspbltvXT1lW29dLmdldCgpO3JldHVybiB0KG4pfSkpfWZ1bmN0aW9uIFBvKCl7cmV0dXJue3Njcm9sbFg6RHQoMCksc2Nyb2xsWTpEdCgwKSxzY3JvbGxYUHJvZ3Jlc3M6RHQoMCksc2Nyb2xsWVByb2dyZXNzOkR0KDApfX1mdW5jdGlvbiBrbyhlLHQsbil7bi5zZXQoZSYmdD9lL3Q6MCl9ZnVuY3Rpb24gSG8oZSx0KXt2YXIgbj1mdW5jdGlvbigpe3ZhciBuPXQoKSxyPW4ueE9mZnNldCxvPW4ueU9mZnNldCxhPW4ueE1heE9mZnNldCxpPW4ueU1heE9mZnNldDtlLnNjcm9sbFguc2V0KHIpLGUuc2Nyb2xsWS5zZXQobyksa28ocixhLGUuc2Nyb2xsWFByb2dyZXNzKSxrbyhvLGksZS5zY3JvbGxZUHJvZ3Jlc3MpfTtyZXR1cm4gbigpLG59ZnVuY3Rpb24gVm8oKXtyZXR1cm57eE9mZnNldDp3aW5kb3cucGFnZVhPZmZzZXQseU9mZnNldDp3aW5kb3cucGFnZVlPZmZzZXQseE1heE9mZnNldDpkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoLXdpbmRvdy5pbm5lcldpZHRoLHlNYXhPZmZzZXQ6ZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQtd2luZG93LmlubmVySGVpZ2h0fX12YXIgUm8sSW89ITE7ZnVuY3Rpb24gWm8oKXt2YXIgZT0hMSx0PVtdLG49bmV3IFNldCxvPXtzdWJzY3JpYmU6ZnVuY3Rpb24oZSl7cmV0dXJuIG4uYWRkKGUpLGZ1bmN0aW9uKCl7bi5kZWxldGUoZSl9fSxzdGFydDpmdW5jdGlvbihyLG8pe2lmKGUpe3ZhciBhPVtdO3JldHVybiBuLmZvckVhY2goKGZ1bmN0aW9uKGUpe2EucHVzaChZdChlLHIse3RyYW5zaXRpb25PdmVycmlkZTpvfSkpfSkpLFByb21pc2UuYWxsKGEpfXJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dC5wdXNoKHthbmltYXRpb246W3Isb10scmVzb2x2ZTplfSl9KSl9LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gYS5pbnZhcmlhbnQoZSxcImNvbnRyb2xzLnNldCgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBhIGNvbXBvbmVudCBoYXMgbW91bnRlZC4gQ29uc2lkZXIgY2FsbGluZyB3aXRoaW4gYSB1c2VFZmZlY3QgaG9vay5cIiksbi5mb3JFYWNoKChmdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtBcnJheS5pc0FycmF5KHQpP3p0KGUsdCk6XCJzdHJpbmdcIj09dHlwZW9mIHQ/enQoZSxbdF0pOk50KGUsdCl9KGUsdCl9KSl9LHN0b3A6ZnVuY3Rpb24oKXtuLmZvckVhY2goKGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXtlLmZvckVhY2hWYWx1ZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3RvcCgpfSkpfShlKX0pKX0sbW91bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZT0hMCx0LmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWUuYW5pbWF0aW9uLG49ZS5yZXNvbHZlO28uc3RhcnQuYXBwbHkobyxyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQodCkpKS50aGVuKG4pfSkpLGZ1bmN0aW9uKCl7ZT0hMSxvLnN0b3AoKX19fTtyZXR1cm4gb312YXIgQW89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5jb21wb25lbnRDb250cm9scz1uZXcgU2V0fXJldHVybiBlLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5jb21wb25lbnRDb250cm9scy5hZGQoZSksZnVuY3Rpb24oKXtyZXR1cm4gdC5jb21wb25lbnRDb250cm9scy5kZWxldGUoZSl9fSxlLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihlLHQpe3RoaXMuY29tcG9uZW50Q29udHJvbHMuZm9yRWFjaCgoZnVuY3Rpb24obil7bi5zdGFydChlLm5hdGl2ZUV2ZW50fHxlLHQpfSkpfSxlLnByb3RvdHlwZS51cGRhdGVDb25zdHJhaW50cz1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT0hMCksdGhpcy5jb21wb25lbnRDb250cm9scy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnVwZGF0ZUNvbnN0cmFpbnRzKCl9KSksZSYmSm4oKX0sZX0oKSxEbz1mdW5jdGlvbigpe3JldHVybiBuZXcgQW99LEJvPWZ1bmN0aW9uKCl7cmV0dXJue319LFRvPUlyKHtidWlsZDpmdW5jdGlvbigpe30sbWVhc3VyZVZpZXdwb3J0Qm94OmZ1bmN0aW9uKCl7cmV0dXJue3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19fSxyZXNldFRyYW5zZm9ybTpmdW5jdGlvbigpe30scmVzdG9yZVRyYW5zZm9ybTpmdW5jdGlvbigpe30scmVtb3ZlVmFsdWVGcm9tUmVuZGVyU3RhdGU6ZnVuY3Rpb24oKXt9LHJlbmRlcjpmdW5jdGlvbigpe30sc2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzOkJvLHJlYWRWYWx1ZUZyb21JbnN0YW5jZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4uaW5pdGlhbFN0YXRlW3RdfHwwfSxtYWtlVGFyZ2V0QW5pbWF0YWJsZTpmdW5jdGlvbihlLHQpe3ZhciBuPXQudHJhbnNpdGlvbixvPXQudHJhbnNpdGlvbkVuZCxhPXIuX19yZXN0KHQsW1widHJhbnNpdGlvblwiLFwidHJhbnNpdGlvbkVuZFwiXSk7cmV0dXJuIFV0KGUsYSxxdChhLG58fHt9LGUpKSxyLl9fYXNzaWduKHt0cmFuc2l0aW9uOm4sdHJhbnNpdGlvbkVuZDpvfSxhKX19KSwkbz1JZSh7c2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzOkJvLGNyZWF0ZVJlbmRlclN0YXRlOkJvfSksRm89ZnVuY3Rpb24oZSl7cmV0dXJuIGU+LjAwMT8xL2U6MWU1fSxXbz0hMTt0LkFuaW1hdGVQcmVzZW5jZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5jdXN0b20sYT1lLmluaXRpYWwsaT12b2lkIDA9PT1hfHxhLGw9ZS5vbkV4aXRDb21wbGV0ZSxjPWUuZXhpdEJlZm9yZUVudGVyLHM9ZS5wcmVzZW5jZUFmZmVjdHNMYXlvdXQsZD12b2lkIDA9PT1zfHxzLGY9ZnVuY3Rpb24oKXt2YXIgZT1vLnVzZVJlZighMSksdD1yLl9fcmVhZChvLnVzZVN0YXRlKDApLDIpLG49dFswXSxhPXRbMV07cmV0dXJuIGR0KChmdW5jdGlvbigpe3JldHVybiBlLmN1cnJlbnQ9ITB9KSksby51c2VDYWxsYmFjaygoZnVuY3Rpb24oKXshZS5jdXJyZW50JiZhKG4rMSl9KSxbbl0pfSgpLHA9by51c2VDb250ZXh0KE9yKTtNcihwKSYmKGY9cC5mb3JjZVVwZGF0ZSk7dmFyIGg9by51c2VSZWYoITApLEM9ZnVuY3Rpb24oZSl7dmFyIHQ9W107cmV0dXJuIG8uQ2hpbGRyZW4uZm9yRWFjaChlLChmdW5jdGlvbihlKXtvLmlzVmFsaWRFbGVtZW50KGUpJiZ0LnB1c2goZSl9KSksdH0odCksdj1vLnVzZVJlZihDKSxnPW8udXNlUmVmKG5ldyBNYXApLmN1cnJlbnQsbT1vLnVzZVJlZihuZXcgU2V0KS5jdXJyZW50O2lmKGZ1bmN0aW9uKGUsdCl7ZS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1jbyhlKTt0LnNldChuLGUpfSkpfShDLGcpLGguY3VycmVudClyZXR1cm4gaC5jdXJyZW50PSExLHUuY3JlYXRlRWxlbWVudCh1LkZyYWdtZW50LG51bGwsQy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB1LmNyZWF0ZUVsZW1lbnQoaW8se2tleTpjbyhlKSxpc1ByZXNlbnQ6ITAsaW5pdGlhbDohIWkmJnZvaWQgMCxwcmVzZW5jZUFmZmVjdHNMYXlvdXQ6ZH0sZSl9KSkpO2Zvcih2YXIgdz1yLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQoQykpLHk9di5jdXJyZW50Lm1hcChjbyksYj1DLm1hcChjbykseD15Lmxlbmd0aCxPPTA7Tzx4O08rKyl7dmFyIEw9eVtPXTstMT09PWIuaW5kZXhPZihMKT9tLmFkZChMKTptLmRlbGV0ZShMKX1yZXR1cm4gYyYmbS5zaXplJiYodz1bXSksbS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZigtMT09PWIuaW5kZXhPZihlKSl7dmFyIHQ9Zy5nZXQoZSk7aWYodCl7dmFyIHI9eS5pbmRleE9mKGUpO3cuc3BsaWNlKHIsMCx1LmNyZWF0ZUVsZW1lbnQoaW8se2tleTpjbyh0KSxpc1ByZXNlbnQ6ITEsb25FeGl0Q29tcGxldGU6ZnVuY3Rpb24oKXtnLmRlbGV0ZShlKSxtLmRlbGV0ZShlKTt2YXIgdD12LmN1cnJlbnQuZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdC5rZXk9PT1lfSkpO3YuY3VycmVudC5zcGxpY2UodCwxKSxtLnNpemV8fCh2LmN1cnJlbnQ9QyxmKCksbCYmbCgpKX0sY3VzdG9tOm4scHJlc2VuY2VBZmZlY3RzTGF5b3V0OmR9LHQpKX19fSkpLHc9dy5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PWUua2V5O3JldHVybiBtLmhhcyh0KT9lOnUuY3JlYXRlRWxlbWVudChpbyx7a2V5OmNvKGUpLGlzUHJlc2VudDohMCxwcmVzZW5jZUFmZmVjdHNMYXlvdXQ6ZH0sZSl9KSksdi5jdXJyZW50PXcsdS5jcmVhdGVFbGVtZW50KHUuRnJhZ21lbnQsbnVsbCxtLnNpemU/dzp3Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG8uY2xvbmVFbGVtZW50KGUpfSkpKX0sdC5BbmltYXRlU2hhcmVkTGF5b3V0PW1vLHQuRHJhZ0NvbnRyb2xzPUFvLHQuRmxhdFRyZWU9UnIsdC5GcmFtZXJUcmVlTGF5b3V0Q29udGV4dD1Mcix0LkxheW91dEdyb3VwQ29udGV4dD1FLHQuTGF6eU1vdGlvbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5mZWF0dXJlcyxhPWUuc3RyaWN0LGk9dm9pZCAwIT09YSYmYSxsPXIuX19yZWFkKG8udXNlU3RhdGUoIXdvKG4pKSwyKVsxXSxjPW8udXNlUmVmKHZvaWQgMCk7aWYoIXdvKG4pKXt2YXIgcz1uLnJlbmRlcmVyLGQ9ci5fX3Jlc3QobixbXCJyZW5kZXJlclwiXSk7Yy5jdXJyZW50PXMsQyhkKX1yZXR1cm4gby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7d28obikmJm4oKS50aGVuKChmdW5jdGlvbihlKXt2YXIgdD1lLnJlbmRlcmVyO0Moci5fX3Jlc3QoZSxbXCJyZW5kZXJlclwiXSkpLGMuY3VycmVudD10LGwoITApfSkpfSksW10pLHUuY3JlYXRlRWxlbWVudCh2LlByb3ZpZGVyLHt2YWx1ZTp7cmVuZGVyZXI6Yy5jdXJyZW50LHN0cmljdDppfX0sdCl9LHQuTW90aW9uQ29uZmlnPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1yLl9fcmVzdChlLFtcImNoaWxkcmVuXCJdKTsobj1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sby51c2VDb250ZXh0KHcpKSxuKSkuaXNTdGF0aWM9TygoZnVuY3Rpb24oKXtyZXR1cm4gbi5pc1N0YXRpY30pKTt2YXIgYT1cIm9iamVjdFwiPT10eXBlb2Ygbi50cmFuc2l0aW9uP24udHJhbnNpdGlvbi50b1N0cmluZygpOlwiXCIsaT1vLnVzZU1lbW8oKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSxbYSxuLnRyYW5zZm9ybVBhZ2VQb2ludF0pO3JldHVybiB1LmNyZWF0ZUVsZW1lbnQody5Qcm92aWRlcix7dmFsdWU6aX0sdCl9LHQuTW90aW9uQ29uZmlnQ29udGV4dD13LHQuTW90aW9uVmFsdWU9QXQsdC5QcmVzZW5jZUNvbnRleHQ9eCx0LlNoYXJlZExheW91dENvbnRleHQ9T3IsdC5hZGRTY2FsZUNvcnJlY3Rpb249eix0LmFuaW1hdGU9c28sdC5hbmltYXRlVmlzdWFsRWxlbWVudD1ZdCx0LmFuaW1hdGlvbkNvbnRyb2xzPVpvLHQuYmF0Y2hMYXlvdXQ9UW4sdC5jcmVhdGVCYXRjaGVyPWJyLHQuY3JlYXRlQ3Jvc3NmYWRlcj11byx0LmNyZWF0ZURvbU1vdGlvbkNvbXBvbmVudD1mdW5jdGlvbihlKXtyZXR1cm4gVChUZShlLHtmb3J3YXJkTW90aW9uUHJvcHM6ITF9LHRvLGVvKSl9LHQuY3JlYXRlTW90aW9uQ29tcG9uZW50PVQsdC5kb21BbmltYXRpb249eW8sdC5kb21NYXg9Ym8sdC5mbHVzaExheW91dD1Kbix0LmlzVmFsaWRNb3Rpb25Qcm9wPWRlLHQubT1ybyx0Lm1vdGlvbj1ubyx0Lm1vdGlvblZhbHVlPUR0LHQucmVzb2x2ZU1vdGlvblZhbHVlPVZlLHQuc25hcHNob3RWaWV3cG9ydEJveD1Sbix0LnRyYW5zZm9ybT1fbyx0LnVzZUFuaW1hdGlvbj1mdW5jdGlvbigpe3ZhciBlPU8oWm8pO3JldHVybiBvLnVzZUVmZmVjdChlLm1vdW50LFtdKSxlfSx0LnVzZUN5Y2xlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO3ZhciBuPW8udXNlUmVmKDApLGE9ci5fX3JlYWQoby51c2VTdGF0ZShlW24uY3VycmVudF0pLDIpLGk9YVswXSxjPWFbMV07cmV0dXJuW2ksZnVuY3Rpb24odCl7bi5jdXJyZW50PVwibnVtYmVyXCIhPXR5cGVvZiB0P2wud3JhcCgwLGUubGVuZ3RoLG4uY3VycmVudCsxKTp0LGMoZVtuLmN1cnJlbnRdKX1dfSx0LnVzZURlcHJlY2F0ZWRBbmltYXRlZFN0YXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXIuX19yZWFkKG8udXNlU3RhdGUoZSksMiksbj10WzBdLGE9dFsxXSxpPSRvKHt9LCExKSxsPU8oKGZ1bmN0aW9uKCl7cmV0dXJuIFRvKHtwcm9wczp7fSx2aXN1YWxTdGF0ZTppfSx7aW5pdGlhbFN0YXRlOmV9KX0pKTtyZXR1cm4gby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIGwubW91bnQoe30pLGwudW5tb3VudCgpfSksW10pLG8udXNlRWZmZWN0KChmdW5jdGlvbigpe2wuc2V0UHJvcHMoe29uVXBkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBhKHIuX19hc3NpZ24oe30sZSkpfX0pfSkpLFtuLE8oKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBZdChsLGUpfX0pKV19LHQudXNlRGVwcmVjYXRlZEludmVydGVkU2NhbGU9ZnVuY3Rpb24oZSl7dmFyIHQ9eG8oMSksbj14bygxKSxyPWIoKTtyZXR1cm4gYS5pbnZhcmlhbnQoISghZSYmIXIpLFwiSWYgbm8gc2NhbGUgdmFsdWVzIGFyZSBwcm92aWRlZCwgdXNlSW52ZXJ0ZWRTY2FsZSBtdXN0IGJlIHVzZWQgd2l0aGluIGEgY2hpbGQgb2YgYW5vdGhlciBtb3Rpb24gY29tcG9uZW50LlwiKSxhLndhcm5pbmcoV28sXCJ1c2VJbnZlcnRlZFNjYWxlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjAuIFVzZSB0aGUgbGF5b3V0IHByb3AgaW5zdGVhZC5cIiksV289ITAsZT8odD1lLnNjYWxlWHx8dCxuPWUuc2NhbGVZfHxuKTpyJiYodD1yLmdldFZhbHVlKFwic2NhbGVYXCIsMSksbj1yLmdldFZhbHVlKFwic2NhbGVZXCIsMSkpLHtzY2FsZVg6am8odCxGbyksc2NhbGVZOmpvKG4sRm8pfX0sdC51c2VEb21FdmVudD1GZSx0LnVzZURyYWdDb250cm9scz1mdW5jdGlvbigpe3JldHVybiBPKERvKX0sdC51c2VFbGVtZW50U2Nyb2xsPWZ1bmN0aW9uKGUpe3ZhciB0PU8oUG8pO3JldHVybiBrKChmdW5jdGlvbigpe3ZhciBuPWUuY3VycmVudDtpZihhLmludmFyaWFudCghIW4sXCJyZWYgcHJvdmlkZWQgdG8gdXNlU2Nyb2xsIG11c3QgYmUgcGFzc2VkIGludG8gYSBIVE1MIGVsZW1lbnQuXCIpLG4pe3ZhciByPUhvKHQsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJue3hPZmZzZXQ6ZS5zY3JvbGxMZWZ0LHlPZmZzZXQ6ZS5zY3JvbGxUb3AseE1heE9mZnNldDplLnNjcm9sbFdpZHRoLWUub2Zmc2V0V2lkdGgseU1heE9mZnNldDplLnNjcm9sbEhlaWdodC1lLm9mZnNldEhlaWdodH19fShuKSksbz0kZShuLFwic2Nyb2xsXCIscix7cGFzc2l2ZTohMH0pLGk9JGUobixcInJlc2l6ZVwiLHIpO3JldHVybiBmdW5jdGlvbigpe28mJm8oKSxpJiZpKCl9fX0pLFtdKSx0fSx0LnVzZUlzUHJlc2VudD1mdW5jdGlvbigpe3JldHVybiBNKG8udXNlQ29udGV4dCh4KSl9LHQudXNlTW90aW9uVGVtcGxhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07dmFyIHI9ZS5sZW5ndGg7cmV0dXJuIExvKHQsKGZ1bmN0aW9uKCl7Zm9yKHZhciBuPVwiXCIsbz0wO288cjtvKyspbis9ZVtvXSx0W29dJiYobis9dFtvXS5nZXQoKSk7cmV0dXJuIG59KSl9LHQudXNlTW90aW9uVmFsdWU9eG8sdC51c2VQcmVzZW5jZT1MLHQudXNlUmVkdWNlZE1vdGlvbj1mdW5jdGlvbigpeyFSbyYmZnVuY3Rpb24oKXtpZihSbz1EdChudWxsKSxcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93KWlmKHdpbmRvdy5tYXRjaE1lZGlhKXt2YXIgZT13aW5kb3cubWF0Y2hNZWRpYShcIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uKVwiKSx0PWZ1bmN0aW9uKCl7cmV0dXJuIFJvLnNldChlLm1hdGNoZXMpfTtlLmFkZExpc3RlbmVyKHQpLHQoKX1lbHNlIFJvLnNldCghMSl9KCk7dmFyIGU9ci5fX3JlYWQoby51c2VTdGF0ZShSby5nZXQoKSksMiksdD1lWzBdLG49ZVsxXTtyZXR1cm4gT28oUm8sbiksdH0sdC51c2VTcHJpbmc9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD17fSk7dmFyIG49by51c2VDb250ZXh0KHcpLmlzU3RhdGljLGE9by51c2VSZWYobnVsbCksaT14byhlZShlKT9lLmdldCgpOmUpO3JldHVybiBvLnVzZU1lbW8oKGZ1bmN0aW9uKCl7cmV0dXJuIGkuYXR0YWNoKChmdW5jdGlvbihlLG8pe3JldHVybiBuP28oZSk6KGEuY3VycmVudCYmYS5jdXJyZW50LnN0b3AoKSxhLmN1cnJlbnQ9bC5hbmltYXRlKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7ZnJvbTppLmdldCgpLHRvOmUsdmVsb2NpdHk6aS5nZXRWZWxvY2l0eSgpfSx0KSx7b25VcGRhdGU6b30pKSxpLmdldCgpKX0pKX0pLE9iamVjdC52YWx1ZXModCkpLE9vKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBpLnNldChwYXJzZUZsb2F0KGUpKX0pKSxpfSx0LnVzZVRyYW5zZm9ybT1qbyx0LnVzZVZlbG9jaXR5PWZ1bmN0aW9uKGUpe3ZhciB0PXhvKGUuZ2V0VmVsb2NpdHkoKSk7cmV0dXJuIG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiBlLnZlbG9jaXR5VXBkYXRlU3Vic2NyaWJlcnMuYWRkKChmdW5jdGlvbihlKXt0LnNldChlKX0pKX0pLFtlXSksdH0sdC51c2VWaWV3cG9ydFNjcm9sbD1mdW5jdGlvbigpe3JldHVybiBNb3x8KE1vPVBvKCkpLGsoKGZ1bmN0aW9uKCl7IUlvJiZmdW5jdGlvbigpe2lmKElvPSEwLFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cpe3ZhciBlPUhvKE1vLFZvKTskZSh3aW5kb3csXCJzY3JvbGxcIixlLHtwYXNzaXZlOiEwfSksJGUod2luZG93LFwicmVzaXplXCIsZSl9fSgpfSksW10pLE1vfSx0LnZpc3VhbEVsZW1lbnQ9SXJ9LDQ4Mzk6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgbj0xLzYwKjFlMyxyPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBwZXJmb3JtYW5jZT9mdW5jdGlvbigpe3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX06ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKX0sbz1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P2Z1bmN0aW9uKGUpe3JldHVybiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZShyKCkpfSksbil9LGE9ITAsaT0hMSxsPSExLGM9e2RlbHRhOjAsdGltZXN0YW1wOjB9LHM9W1wicmVhZFwiLFwidXBkYXRlXCIsXCJwcmVSZW5kZXJcIixcInJlbmRlclwiLFwicG9zdFJlbmRlclwiXSx1PXMucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlW3RdPWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49W10scj0wLG89ITEsYT1uZXcgV2Vha1NldCxpPXtzY2hlZHVsZTpmdW5jdGlvbihlLGksbCl7dm9pZCAwPT09aSYmKGk9ITEpLHZvaWQgMD09PWwmJihsPSExKTt2YXIgYz1sJiZvLHM9Yz90Om47cmV0dXJuIGkmJmEuYWRkKGUpLC0xPT09cy5pbmRleE9mKGUpJiYocy5wdXNoKGUpLGMmJm8mJihyPXQubGVuZ3RoKSksZX0sY2FuY2VsOmZ1bmN0aW9uKGUpe3ZhciB0PW4uaW5kZXhPZihlKTstMSE9PXQmJm4uc3BsaWNlKHQsMSksYS5kZWxldGUoZSl9LHByb2Nlc3M6ZnVuY3Rpb24obCl7dmFyIGM7aWYobz0hMCx0PShjPVtuLHRdKVswXSwobj1jWzFdKS5sZW5ndGg9MCxyPXQubGVuZ3RoKWZvcih2YXIgcz0wO3M8cjtzKyspe3ZhciB1PXRbc107dShsKSxhLmhhcyh1KSYmKGkuc2NoZWR1bGUodSksZSgpKX1vPSExfX07cmV0dXJuIGl9KChmdW5jdGlvbigpe3JldHVybiBpPSEwfSkpLGV9KSx7fSksZD1zLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXt2YXIgbj11W3RdO3JldHVybiBlW3RdPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITEpLHZvaWQgMD09PXImJihyPSExKSxpfHx2KCksbi5zY2hlZHVsZShlLHQscil9LGV9KSx7fSksZj1zLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XT11W3RdLmNhbmNlbCxlfSkse30pLHA9cy5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF09ZnVuY3Rpb24oKXtyZXR1cm4gdVt0XS5wcm9jZXNzKGMpfSxlfSkse30pLGg9ZnVuY3Rpb24oZSl7cmV0dXJuIHVbZV0ucHJvY2VzcyhjKX0sQz1mdW5jdGlvbihlKXtpPSExLGMuZGVsdGE9YT9uOk1hdGgubWF4KE1hdGgubWluKGUtYy50aW1lc3RhbXAsNDApLDEpLGMudGltZXN0YW1wPWUsbD0hMCxzLmZvckVhY2goaCksbD0hMSxpJiYoYT0hMSxvKEMpKX0sdj1mdW5jdGlvbigpe2k9ITAsYT0hMCxsfHxvKEMpfTt0LmNhbmNlbFN5bmM9Zix0LmRlZmF1bHQ9ZCx0LmZsdXNoU3luYz1wLHQuZ2V0RnJhbWVEYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIGN9fSw0Mzk0OihlLHQsbik9PntuLnIodCksbi5kKHQse2ludmFyaWFudDooKT0+byx3YXJuaW5nOigpPT5yfSk7dmFyIHI9ZnVuY3Rpb24oKXt9LG89ZnVuY3Rpb24oKXt9fSw3NzM6KGUsdCxuKT0+e3ZhciByLG89XCJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fXCIsYT0vXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvLGk9XCJvYmplY3RcIj09dHlwZW9mIG4uZyYmbi5nJiZuLmcuT2JqZWN0PT09T2JqZWN0JiZuLmcsbD1cIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsYz1pfHxsfHxGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCkscz1BcnJheS5wcm90b3R5cGUsdT1GdW5jdGlvbi5wcm90b3R5cGUsZD1PYmplY3QucHJvdG90eXBlLGY9Y1tcIl9fY29yZS1qc19zaGFyZWRfX1wiXSxwPShyPS9bXi5dKyQvLmV4ZWMoZiYmZi5rZXlzJiZmLmtleXMuSUVfUFJPVE98fFwiXCIpKT9cIlN5bWJvbChzcmMpXzEuXCIrcjpcIlwiLGg9dS50b1N0cmluZyxDPWQuaGFzT3duUHJvcGVydHksdj1kLnRvU3RyaW5nLGc9UmVnRXhwKFwiXlwiK2guY2FsbChDKS5yZXBsYWNlKC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZyxcIlxcXFwkJlwiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLFwiJDEuKj9cIikrXCIkXCIpLG09cy5zcGxpY2Usdz1TKGMsXCJNYXBcIikseT1TKE9iamVjdCxcImNyZWF0ZVwiKTtmdW5jdGlvbiBiKGUpe3ZhciB0PS0xLG49ZT9lLmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PG47KXt2YXIgcj1lW3RdO3RoaXMuc2V0KHJbMF0sclsxXSl9fWZ1bmN0aW9uIHgoZSl7dmFyIHQ9LTEsbj1lP2UubGVuZ3RoOjA7Zm9yKHRoaXMuY2xlYXIoKTsrK3Q8bjspe3ZhciByPWVbdF07dGhpcy5zZXQoclswXSxyWzFdKX19ZnVuY3Rpb24gTyhlKXt2YXIgdD0tMSxuPWU/ZS5sZW5ndGg6MDtmb3IodGhpcy5jbGVhcigpOysrdDxuOyl7dmFyIHI9ZVt0XTt0aGlzLnNldChyWzBdLHJbMV0pfX1mdW5jdGlvbiBMKGUsdCl7Zm9yKHZhciBuLHIsbz1lLmxlbmd0aDtvLS07KWlmKChuPWVbb11bMF0pPT09KHI9dCl8fG4hPW4mJnIhPXIpcmV0dXJuIG87cmV0dXJuLTF9ZnVuY3Rpb24gTShlLHQpe3ZhciBuLHIsbz1lLl9fZGF0YV9fO3JldHVybihcInN0cmluZ1wiPT0ocj10eXBlb2Yobj10KSl8fFwibnVtYmVyXCI9PXJ8fFwic3ltYm9sXCI9PXJ8fFwiYm9vbGVhblwiPT1yP1wiX19wcm90b19fXCIhPT1uOm51bGw9PT1uKT9vW1wic3RyaW5nXCI9PXR5cGVvZiB0P1wic3RyaW5nXCI6XCJoYXNoXCJdOm8ubWFwfWZ1bmN0aW9uIFMoZSx0KXt2YXIgbj1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfShlLHQpO3JldHVybiBmdW5jdGlvbihlKXtpZighaihlKXx8cCYmcCBpbiBlKXJldHVybiExO3ZhciB0PWZ1bmN0aW9uKGUpe3ZhciB0PWooZSk/di5jYWxsKGUpOlwiXCI7cmV0dXJuXCJbb2JqZWN0IEZ1bmN0aW9uXVwiPT10fHxcIltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dXCI9PXR9KGUpfHxmdW5jdGlvbihlKXt2YXIgdD0hMTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLnRvU3RyaW5nKXRyeXt0PSEhKGUrXCJcIil9Y2F0Y2goZSl7fXJldHVybiB0fShlKT9nOmE7cmV0dXJuIHQudGVzdChmdW5jdGlvbihlKXtpZihudWxsIT1lKXt0cnl7cmV0dXJuIGguY2FsbChlKX1jYXRjaChlKXt9dHJ5e3JldHVybiBlK1wiXCJ9Y2F0Y2goZSl7fX1yZXR1cm5cIlwifShlKSl9KG4pP246dm9pZCAwfWZ1bmN0aW9uIF8oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlfHx0JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCBhIGZ1bmN0aW9uXCIpO3ZhciBuPWZ1bmN0aW9uKCl7dmFyIHI9YXJndW1lbnRzLG89dD90LmFwcGx5KHRoaXMscik6clswXSxhPW4uY2FjaGU7aWYoYS5oYXMobykpcmV0dXJuIGEuZ2V0KG8pO3ZhciBpPWUuYXBwbHkodGhpcyxyKTtyZXR1cm4gbi5jYWNoZT1hLnNldChvLGkpLGl9O3JldHVybiBuLmNhY2hlPW5ldyhfLkNhY2hlfHxPKSxufWZ1bmN0aW9uIGooZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuISFlJiYoXCJvYmplY3RcIj09dHx8XCJmdW5jdGlvblwiPT10KX1iLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189eT95KG51bGwpOnt9fSxiLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaGFzKGUpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1tlXX0sYi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX187aWYoeSl7dmFyIG49dFtlXTtyZXR1cm4gbj09PW8/dm9pZCAwOm59cmV0dXJuIEMuY2FsbCh0LGUpP3RbZV06dm9pZCAwfSxiLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXztyZXR1cm4geT92b2lkIDAhPT10W2VdOkMuY2FsbCh0LGUpfSxiLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2RhdGFfX1tlXT15JiZ2b2lkIDA9PT10P286dCx0aGlzfSx4LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W119LHgucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fLG49TCh0LGUpO3JldHVybiEobjwwfHwobj09dC5sZW5ndGgtMT90LnBvcCgpOm0uY2FsbCh0LG4sMSksMCkpfSx4LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxuPUwodCxlKTtyZXR1cm4gbjwwP3ZvaWQgMDp0W25dWzFdfSx4LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIEwodGhpcy5fX2RhdGFfXyxlKT4tMX0seC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2RhdGFfXyxyPUwobixlKTtyZXR1cm4gcjwwP24ucHVzaChbZSx0XSk6bltyXVsxXT10LHRoaXN9LE8ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgYixtYXA6bmV3KHd8fHgpLHN0cmluZzpuZXcgYn19LE8ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXtyZXR1cm4gTSh0aGlzLGUpLmRlbGV0ZShlKX0sTy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBNKHRoaXMsZSkuZ2V0KGUpfSxPLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIE0odGhpcyxlKS5oYXMoZSl9LE8ucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3JldHVybiBNKHRoaXMsZSkuc2V0KGUsdCksdGhpc30sXy5DYWNoZT1PLGUuZXhwb3J0cz1ffSw3NDE4OmU9Pnt2YXIgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLG49T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxyPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3ZhciBlPW5ldyBTdHJpbmcoXCJhYmNcIik7aWYoZVs1XT1cImRlXCIsXCI1XCI9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30sbj0wO248MTA7bisrKXRbXCJfXCIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjtpZihcIjAxMjM0NTY3ODlcIiE9PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSkuam9pbihcIlwiKSlyZXR1cm4hMTt2YXIgcj17fTtyZXR1cm5cImFiY2RlZmdoaWprbG1ub3BxcnN0XCIuc3BsaXQoXCJcIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cltlXT1lfSkpLFwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIj09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30scikpLmpvaW4oXCJcIil9Y2F0Y2goZSl7cmV0dXJuITF9fSgpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oZSxvKXtmb3IodmFyIGEsaSxsPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBPYmplY3QoZSl9KGUpLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXtmb3IodmFyIHMgaW4gYT1PYmplY3QoYXJndW1lbnRzW2NdKSluLmNhbGwoYSxzKSYmKGxbc109YVtzXSk7aWYodCl7aT10KGEpO2Zvcih2YXIgdT0wO3U8aS5sZW5ndGg7dSsrKXIuY2FsbChhLGlbdV0pJiYobFtpW3VdXT1hW2lbdV1dKX19cmV0dXJuIGx9fSw5Mjk0OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1uKDY1NSksbz1uKDQzOTQpLGE9bigzNTczKSxpPW4oNDgzOSk7dmFyIGw9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZcImRlZmF1bHRcImluIGU/ZTp7ZGVmYXVsdDplfX0oaSksYz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KG4sZSksdCl9LHM9LjAwMSx1PS4wMSxkPTEwLGY9LjA1LHA9MSxoPTEyO2Z1bmN0aW9uIEMoZSx0KXtyZXR1cm4gZSpNYXRoLnNxcnQoMS10KnQpfXZhciB2PVtcImR1cmF0aW9uXCIsXCJib3VuY2VcIl0sZz1bXCJzdGlmZm5lc3NcIixcImRhbXBpbmdcIixcIm1hc3NcIl07ZnVuY3Rpb24gbShlLHQpe3JldHVybiB0LnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT1lW3RdfSkpfWZ1bmN0aW9uIHcoZSl7dmFyIHQ9ZS5mcm9tLG49dm9pZCAwPT09dD8wOnQsYT1lLnRvLGk9dm9pZCAwPT09YT8xOmEsbD1lLnJlc3RTcGVlZCx3PXZvaWQgMD09PWw/MjpsLGI9ZS5yZXN0RGVsdGEseD1yLl9fcmVzdChlLFtcImZyb21cIixcInRvXCIsXCJyZXN0U3BlZWRcIixcInJlc3REZWx0YVwiXSksTz17ZG9uZTohMSx2YWx1ZTpufSxMPWZ1bmN0aW9uKGUpe3ZhciB0PXIuX19hc3NpZ24oe3ZlbG9jaXR5OjAsc3RpZmZuZXNzOjEwMCxkYW1waW5nOjEwLG1hc3M6MSxpc1Jlc29sdmVkRnJvbUR1cmF0aW9uOiExfSxlKTtpZighbShlLGcpJiZtKGUsdikpe3ZhciBuPWZ1bmN0aW9uKGUpe3ZhciB0LG4scj1lLmR1cmF0aW9uLGE9dm9pZCAwPT09cj84MDA6cixpPWUuYm91bmNlLGw9dm9pZCAwPT09aT8uMjU6aSx2PWUudmVsb2NpdHksZz12b2lkIDA9PT12PzA6dixtPWUubWFzcyx3PXZvaWQgMD09PW0/MTptO28ud2FybmluZyhhPD0xZTMqZCxcIlNwcmluZyBkdXJhdGlvbiBtdXN0IGJlIDEwIHNlY29uZHMgb3IgbGVzc1wiKTt2YXIgeT0xLWw7eT1jKGYscCx5KSxhPWModSxkLGEvMWUzKSx5PDE/KHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSp5LG49dCphLHI9dC1nLG89QyhlLHkpLGk9TWF0aC5leHAoLW4pO3JldHVybiBzLXIvbyppfSxuPWZ1bmN0aW9uKGUpe3ZhciBuPWUqeSphLHI9bipnK2csbz1NYXRoLnBvdyh5LDIpKk1hdGgucG93KGUsMikqYSxpPU1hdGguZXhwKC1uKSxsPUMoTWF0aC5wb3coZSwyKSx5KTtyZXR1cm4oLXQoZSkrcz4wPy0xOjEpKigoci1vKSppKS9sfSk6KHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZXhwKC1lKmEpKigoZS1nKSphKzEpLXN9LG49ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZXhwKC1lKmEpKihhKmEqKGctZSkpfSk7dmFyIGI9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uLG89MTtvPGg7bysrKXItPWUocikvdChyKTtyZXR1cm4gcn0odCxuLDUvYSk7aWYoYSo9MWUzLGlzTmFOKGIpKXJldHVybntzdGlmZm5lc3M6MTAwLGRhbXBpbmc6MTAsZHVyYXRpb246YX07dmFyIHg9TWF0aC5wb3coYiwyKSp3O3JldHVybntzdGlmZm5lc3M6eCxkYW1waW5nOjIqeSpNYXRoLnNxcnQodyp4KSxkdXJhdGlvbjphfX0oZSk7KHQ9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdCksbikse3ZlbG9jaXR5OjAsbWFzczoxfSkpLmlzUmVzb2x2ZWRGcm9tRHVyYXRpb249ITB9cmV0dXJuIHR9KHgpLE09TC5zdGlmZm5lc3MsUz1MLmRhbXBpbmcsXz1MLm1hc3Msaj1MLnZlbG9jaXR5LEU9TC5kdXJhdGlvbixQPUwuaXNSZXNvbHZlZEZyb21EdXJhdGlvbixrPXksSD15O2Z1bmN0aW9uIFYoKXt2YXIgZT1qPy1qLzFlMzowLHQ9aS1uLHI9Uy8oMipNYXRoLnNxcnQoTSpfKSksbz1NYXRoLnNxcnQoTS9fKS8xZTM7aWYobnVsbCE9Ynx8KGI9TWF0aC5hYnMoaS1uKTw9MT8uMDE6LjQpLHI8MSl7dmFyIGE9QyhvLHIpO2s9ZnVuY3Rpb24obil7dmFyIGw9TWF0aC5leHAoLXIqbypuKTtyZXR1cm4gaS1sKigoZStyKm8qdCkvYSpNYXRoLnNpbihhKm4pK3QqTWF0aC5jb3MoYSpuKSl9LEg9ZnVuY3Rpb24obil7dmFyIGk9TWF0aC5leHAoLXIqbypuKTtyZXR1cm4gcipvKmkqKE1hdGguc2luKGEqbikqKGUrcipvKnQpL2ErdCpNYXRoLmNvcyhhKm4pKS1pKihNYXRoLmNvcyhhKm4pKihlK3Iqbyp0KS1hKnQqTWF0aC5zaW4oYSpuKSl9fWVsc2UgaWYoMT09PXIpaz1mdW5jdGlvbihuKXtyZXR1cm4gaS1NYXRoLmV4cCgtbypuKSoodCsoZStvKnQpKm4pfTtlbHNle3ZhciBsPW8qTWF0aC5zcXJ0KHIqci0xKTtrPWZ1bmN0aW9uKG4pe3ZhciBhPU1hdGguZXhwKC1yKm8qbiksYz1NYXRoLm1pbihsKm4sMzAwKTtyZXR1cm4gaS1hKigoZStyKm8qdCkqTWF0aC5zaW5oKGMpK2wqdCpNYXRoLmNvc2goYykpL2x9fX1yZXR1cm4gVigpLHtuZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PWsoZSk7aWYoUClPLmRvbmU9ZT49RTtlbHNle3ZhciBuPTFlMypIKGUpLHI9TWF0aC5hYnMobik8PXcsbz1NYXRoLmFicyhpLXQpPD1iO08uZG9uZT1yJiZvfXJldHVybiBPLnZhbHVlPU8uZG9uZT9pOnQsT30sZmxpcFRhcmdldDpmdW5jdGlvbigpe3ZhciBlO2o9LWosbj0oZT1baSxuXSlbMF0saT1lWzFdLFYoKX19fXcubmVlZHNJbnRlcnBvbGF0aW9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwic3RyaW5nXCI9PXR5cGVvZiB0fTt2YXIgeT1mdW5jdGlvbihlKXtyZXR1cm4gMH0sYj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dC1lO3JldHVybiAwPT09cj8xOihuLWUpL3J9LHg9ZnVuY3Rpb24oZSx0LG4pe3JldHVybi1uKmUrbip0K2V9LE89ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUqZSxvPXQqdDtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgubWF4KDAsbiooby1yKStyKSl9LEw9W2EuaGV4LGEucmdiYSxhLmhzbGFdLE09ZnVuY3Rpb24oZSl7cmV0dXJuIEwuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudGVzdChlKX0pKX0sUz1mdW5jdGlvbihlKXtyZXR1cm5cIidcIitlK1wiJyBpcyBub3QgYW4gYW5pbWF0YWJsZSBjb2xvci4gVXNlIHRoZSBlcXVpdmFsZW50IGNvbG9yIGNvZGUgaW5zdGVhZC5cIn0sXz1mdW5jdGlvbihlLHQpe3ZhciBuPU0oZSksaT1NKHQpO28uaW52YXJpYW50KCEhbixTKGUpKSxvLmludmFyaWFudCghIWksUyh0KSksby5pbnZhcmlhbnQobi50cmFuc2Zvcm09PT1pLnRyYW5zZm9ybSxcIkJvdGggY29sb3JzIG11c3QgYmUgaGV4L1JHQkEsIE9SIGJvdGggbXVzdCBiZSBIU0xBLlwiKTt2YXIgbD1uLnBhcnNlKGUpLGM9aS5wYXJzZSh0KSxzPXIuX19hc3NpZ24oe30sbCksdT1uPT09YS5oc2xhP3g6TztyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIHMpXCJhbHBoYVwiIT09dCYmKHNbdF09dShsW3RdLGNbdF0sZSkpO3JldHVybiBzLmFscGhhPXgobC5hbHBoYSxjLmFscGhhLGUpLG4udHJhbnNmb3JtKHMpfX0saj17eDowLHk6MCx6OjB9LEU9ZnVuY3Rpb24oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGV9LFA9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQoZShuKSl9fSxrPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO3JldHVybiBlLnJlZHVjZShQKX07ZnVuY3Rpb24gSChlLHQpe3JldHVybiBFKGUpP2Z1bmN0aW9uKG4pe3JldHVybiB4KGUsdCxuKX06YS5jb2xvci50ZXN0KGUpP18oZSx0KTpaKGUsdCl9dmFyIFY9ZnVuY3Rpb24oZSx0KXt2YXIgbj1yLl9fc3ByZWFkQXJyYXkoW10sZSksbz1uLmxlbmd0aCxhPWUubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiBIKGUsdFtuXSl9KSk7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8bzt0Kyspblt0XT1hW3RdKGUpO3JldHVybiBufX0sUj1mdW5jdGlvbihlLHQpe3ZhciBuPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxlKSx0KSxvPXt9O2Zvcih2YXIgYSBpbiBuKXZvaWQgMCE9PWVbYV0mJnZvaWQgMCE9PXRbYV0mJihvW2FdPUgoZVthXSx0W2FdKSk7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBvKW5bdF09b1t0XShlKTtyZXR1cm4gbn19O2Z1bmN0aW9uIEkoZSl7Zm9yKHZhciB0PWEuY29tcGxleC5wYXJzZShlKSxuPXQubGVuZ3RoLHI9MCxvPTAsaT0wLGw9MDtsPG47bCsrKXJ8fFwibnVtYmVyXCI9PXR5cGVvZiB0W2xdP3IrKzp2b2lkIDAhPT10W2xdLmh1ZT9pKys6bysrO3JldHVybntwYXJzZWQ6dCxudW1OdW1iZXJzOnIsbnVtUkdCOm8sbnVtSFNMOml9fXZhciBaPWZ1bmN0aW9uKGUsdCl7dmFyIG49YS5jb21wbGV4LmNyZWF0ZVRyYW5zZm9ybWVyKHQpLHI9SShlKSxpPUkodCk7cmV0dXJuIG8uaW52YXJpYW50KHIubnVtSFNMPT09aS5udW1IU0wmJnIubnVtUkdCPT09aS5udW1SR0ImJnIubnVtTnVtYmVycz49aS5udW1OdW1iZXJzLFwiQ29tcGxleCB2YWx1ZXMgJ1wiK2UrXCInIGFuZCAnXCIrdCtcIicgdG9vIGRpZmZlcmVudCB0byBtaXguIEVuc3VyZSBhbGwgY29sb3JzIGFyZSBvZiB0aGUgc2FtZSB0eXBlLlwiKSxrKFYoci5wYXJzZWQsaS5wYXJzZWQpLG4pfSxBPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB4KGUsdCxuKX19O2Z1bmN0aW9uIEQoZSx0LG4pe3ZhciByPXZvaWQgMD09PW4/e306bixpPXIuY2xhbXAsbD12b2lkIDA9PT1pfHxpLHM9ci5lYXNlLHU9ci5taXhlcixkPWUubGVuZ3RoO28uaW52YXJpYW50KGQ9PT10Lmxlbmd0aCxcIkJvdGggaW5wdXQgYW5kIG91dHB1dCByYW5nZXMgbXVzdCBiZSB0aGUgc2FtZSBsZW5ndGhcIiksby5pbnZhcmlhbnQoIXN8fCFBcnJheS5pc0FycmF5KHMpfHxzLmxlbmd0aD09PWQtMSxcIkFycmF5IG9mIGVhc2luZyBmdW5jdGlvbnMgbXVzdCBiZSBvZiBsZW5ndGggYGlucHV0Lmxlbmd0aCAtIDFgLCBhcyBpdCBhcHBsaWVzIHRvIHRoZSB0cmFuc2l0aW9ucyAqKmJldHdlZW4qKiB0aGUgZGVmaW5lZCB2YWx1ZXMuXCIpLGVbMF0+ZVtkLTFdJiYoZT1bXS5jb25jYXQoZSksdD1bXS5jb25jYXQodCksZS5yZXZlcnNlKCksdC5yZXZlcnNlKCkpO3ZhciBmPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIsbz1bXSxpPW58fChcIm51bWJlclwiPT10eXBlb2Yocj1lWzBdKT9BOlwic3RyaW5nXCI9PXR5cGVvZiByP2EuY29sb3IudGVzdChyKT9fOlo6QXJyYXkuaXNBcnJheShyKT9WOlwib2JqZWN0XCI9PXR5cGVvZiByP1I6dm9pZCAwKSxsPWUubGVuZ3RoLTEsYz0wO2M8bDtjKyspe3ZhciBzPWkoZVtjXSxlW2MrMV0pO2lmKHQpe3ZhciB1PUFycmF5LmlzQXJyYXkodCk/dFtjXTp0O3M9ayh1LHMpfW8ucHVzaChzKX1yZXR1cm4gb30odCxzLHUpLHA9Mj09PWQ/ZnVuY3Rpb24oZSx0KXt2YXIgbj1lWzBdLHI9ZVsxXSxvPXRbMF07cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBvKGIobixyLGUpKX19KGUsZik6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aCxyPW4tMTtyZXR1cm4gZnVuY3Rpb24obyl7dmFyIGE9MCxpPSExO2lmKG88PWVbMF0/aT0hMDpvPj1lW3JdJiYoYT1yLTEsaT0hMCksIWkpe2Zvcih2YXIgbD0xO2w8biYmIShlW2xdPm98fGw9PT1yKTtsKyspO2E9bC0xfXZhciBjPWIoZVthXSxlW2ErMV0sbyk7cmV0dXJuIHRbYV0oYyl9fShlLGYpO3JldHVybiBsP2Z1bmN0aW9uKHQpe3JldHVybiBwKGMoZVswXSxlW2QtMV0sdCkpfTpwfXZhciBCPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gMS1lKDEtdCl9fSxUPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdDw9LjU/ZSgyKnQpLzI6KDItZSgyKigxLXQpKSkvMn19LCQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdyh0LGUpfX0sRj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQqdCooKGUrMSkqdC1lKX19LFc9ZnVuY3Rpb24oZSl7dmFyIHQ9RihlKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKGUqPTIpPDE/LjUqdChlKTouNSooMi1NYXRoLnBvdygyLC0xMCooZS0xKSkpfX0sTj1mdW5jdGlvbihlKXtyZXR1cm4gZX0sej0kKDIpLFU9Qih6KSxHPVQoeikscT1mdW5jdGlvbihlKXtyZXR1cm4gMS1NYXRoLnNpbihNYXRoLmFjb3MoZSkpfSxZPUIocSksSz1UKFkpLFg9RigxLjUyNSksUT1CKFgpLEo9VChYKSxlZT1XKDEuNTI1KSx0ZT1mdW5jdGlvbihlKXtpZigxPT09ZXx8MD09PWUpcmV0dXJuIGU7dmFyIHQ9ZSplO3JldHVybiBlPC4zNjM2MzYzNjM2MzYzNjM2NT83LjU2MjUqdDplPC43MjcyNzI3MjcyNzI3MjczPzkuMDc1KnQtOS45KmUrMy40OmU8Ljk/MTIuMDY2NDgxOTk0NDU5ODMzKnQtMTkuNjM1NDU3MDYzNzExOTEqZSs4Ljg5ODA2MDk0MTgyODI1NToxMC44KmUqZS0yMC41MiplKzEwLjcyfSxuZT1CKHRlKTtmdW5jdGlvbiByZShlLHQpe3JldHVybiBlLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gdHx8R30pKS5zcGxpY2UoMCxlLmxlbmd0aC0xKX1mdW5jdGlvbiBvZShlKXt2YXIgdD1lLmZyb20sbj12b2lkIDA9PT10PzA6dCxyPWUudG8sbz12b2lkIDA9PT1yPzE6cixhPWUuZWFzZSxpPWUub2Zmc2V0LGw9ZS5kdXJhdGlvbixjPXZvaWQgMD09PWw/MzAwOmwscz17ZG9uZTohMSx2YWx1ZTpufSx1PUFycmF5LmlzQXJyYXkobyk/bzpbbixvXSxkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZSp0fSkpfShpJiZpLmxlbmd0aD09PXUubGVuZ3RoP2k6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7cmV0dXJuIGUubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiAwIT09bj9uLyh0LTEpOjB9KSl9KHUpLGMpO2Z1bmN0aW9uIGYoKXtyZXR1cm4gRChkLHUse2Vhc2U6QXJyYXkuaXNBcnJheShhKT9hOnJlKHUsYSl9KX12YXIgcD1mKCk7cmV0dXJue25leHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHMudmFsdWU9cChlKSxzLmRvbmU9ZT49YyxzfSxmbGlwVGFyZ2V0OmZ1bmN0aW9uKCl7dS5yZXZlcnNlKCkscD1mKCl9fX1mdW5jdGlvbiBhZShlKXt2YXIgdD1lLnZlbG9jaXR5LG49dm9pZCAwPT09dD8wOnQscj1lLmZyb20sbz12b2lkIDA9PT1yPzA6cixhPWUucG93ZXIsaT12b2lkIDA9PT1hPy44OmEsbD1lLnRpbWVDb25zdGFudCxjPXZvaWQgMD09PWw/MzUwOmwscz1lLnJlc3REZWx0YSx1PXZvaWQgMD09PXM/LjU6cyxkPWUubW9kaWZ5VGFyZ2V0LGY9e2RvbmU6ITEsdmFsdWU6b30scD1pKm4saD1vK3AsQz12b2lkIDA9PT1kP2g6ZChoKTtyZXR1cm4gQyE9PWgmJihwPUMtbykse25leHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9LXAqTWF0aC5leHAoLWUvYyk7cmV0dXJuIGYuZG9uZT0hKHQ+dXx8dDwtdSksZi52YWx1ZT1mLmRvbmU/QzpDK3QsZn0sZmxpcFRhcmdldDpmdW5jdGlvbigpe319fXZhciBpZT17a2V5ZnJhbWVzOm9lLHNwcmluZzp3LGRlY2F5OmFlfTtmdW5jdGlvbiBsZShlLHQsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPTApLGUtdC1ufXZhciBjZT1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbih0KXt2YXIgbj10LmRlbHRhO3JldHVybiBlKG4pfTtyZXR1cm57c3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5kZWZhdWx0LnVwZGF0ZSh0LCEwKX0sc3RvcDpmdW5jdGlvbigpe3JldHVybiBpLmNhbmNlbFN5bmMudXBkYXRlKHQpfX19O2Z1bmN0aW9uIHNlKGUpe3ZhciB0LG4sbyxhLGksbD1lLmZyb20sYz1lLmF1dG9wbGF5LHM9dm9pZCAwPT09Y3x8Yyx1PWUuZHJpdmVyLGQ9dm9pZCAwPT09dT9jZTp1LGY9ZS5lbGFwc2VkLHA9dm9pZCAwPT09Zj8wOmYsaD1lLnJlcGVhdCxDPXZvaWQgMD09PWg/MDpoLHY9ZS5yZXBlYXRUeXBlLGc9dm9pZCAwPT09dj9cImxvb3BcIjp2LG09ZS5yZXBlYXREZWxheSx5PXZvaWQgMD09PW0/MDptLGI9ZS5vblBsYXkseD1lLm9uU3RvcCxPPWUub25Db21wbGV0ZSxMPWUub25SZXBlYXQsTT1lLm9uVXBkYXRlLFM9ci5fX3Jlc3QoZSxbXCJmcm9tXCIsXCJhdXRvcGxheVwiLFwiZHJpdmVyXCIsXCJlbGFwc2VkXCIsXCJyZXBlYXRcIixcInJlcGVhdFR5cGVcIixcInJlcGVhdERlbGF5XCIsXCJvblBsYXlcIixcIm9uU3RvcFwiLFwib25Db21wbGV0ZVwiLFwib25SZXBlYXRcIixcIm9uVXBkYXRlXCJdKSxfPVMudG8saj0wLEU9Uy5kdXJhdGlvbixQPSExLGs9ITAsSD1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUudG8pKXJldHVybiBvZTtpZihpZVtlLnR5cGVdKXJldHVybiBpZVtlLnR5cGVdO3ZhciB0PW5ldyBTZXQoT2JqZWN0LmtleXMoZSkpO3JldHVybiB0LmhhcyhcImVhc2VcIil8fHQuaGFzKFwiZHVyYXRpb25cIikmJiF0LmhhcyhcImRhbXBpbmdSYXRpb1wiKT9vZTp0LmhhcyhcImRhbXBpbmdSYXRpb1wiKXx8dC5oYXMoXCJzdGlmZm5lc3NcIil8fHQuaGFzKFwibWFzc1wiKXx8dC5oYXMoXCJkYW1waW5nXCIpfHx0LmhhcyhcInJlc3RTcGVlZFwiKXx8dC5oYXMoXCJyZXN0RGVsdGFcIik/dzpvZX0oUyk7KG51bGw9PT0obj0odD1IKS5uZWVkc0ludGVycG9sYXRpb24pfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmNhbGwodCxsLF8pKSYmKGk9RChbMCwxMDBdLFtsLF9dLHtjbGFtcDohMX0pLGw9MCxfPTEwMCk7dmFyIFY9SChyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sUykse2Zyb206bCx0bzpffSkpO3JldHVybiBzJiYobnVsbD09Ynx8YigpLChvPWQoKGZ1bmN0aW9uKGUpe2lmKGt8fChlPS1lKSxwKz1lLCFQKXt2YXIgdD1WLm5leHQoTWF0aC5tYXgoMCxwKSk7YT10LnZhbHVlLGkmJihhPWkoYSkpLFA9az90LmRvbmU6cDw9MH1udWxsPT1NfHxNKGEpLFAmJigwPT09aiYmKG51bGwhPUV8fChFPXApKSxqPEM/ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHI/ZT49dCtuOmU8PS1ufShwLEUseSxrKSYmKGorKyxcInJldmVyc2VcIj09PWc/cD1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdm9pZCAwPT09biYmKG49MCksdm9pZCAwPT09ciYmKHI9ITApLHI/bGUodCstZSx0LG4pOnQtKGUtdCkrbn0ocCxFLHksaz1qJTI9PTApOihwPWxlKHAsRSx5KSxcIm1pcnJvclwiPT09ZyYmVi5mbGlwVGFyZ2V0KCkpLFA9ITEsTCYmTCgpKTooby5zdG9wKCksTyYmTygpKSl9KSkpLnN0YXJ0KCkpLHtzdG9wOmZ1bmN0aW9uKCl7bnVsbD09eHx8eCgpLG8uc3RvcCgpfX19ZnVuY3Rpb24gdWUoZSx0KXtyZXR1cm4gdD9lKigxZTMvdCk6MH12YXIgZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIDE4MCplL01hdGguUEl9LGZlPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxwZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ZmUpLGZ1bmN0aW9uKHQsbixyKXt2YXIgbz1uLXIsYT0tKDAtdCsxKSooMC1lKE1hdGguYWJzKG8pKSk7cmV0dXJuIG88PTA/bithOm4tYX19LGhlPXBlKCksQ2U9cGUoTWF0aC5zcXJ0KSx2ZT1mdW5jdGlvbihlKXtyZXR1cm4gZSpNYXRoLlBJLzE4MH0sZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkoXCJ4XCIpJiZlLmhhc093blByb3BlcnR5KFwieVwiKX0sbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGdlKGUpJiZlLmhhc093blByb3BlcnR5KFwielwiKX0sd2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5hYnMoZS10KX0seWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9MiksdD1NYXRoLnBvdygxMCx0KSxNYXRoLnJvdW5kKGUqdCkvdH0sYmU9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHZvaWQgMD09PXImJihyPTApLHllKGUrbioodC1lKS9NYXRoLm1heChyLG4pKX0seGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMS0zKnQrMyplfSxPZT1mdW5jdGlvbihlLHQpe3JldHVybiAzKnQtNiplfSxMZT1mdW5jdGlvbihlKXtyZXR1cm4gMyplfSxNZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuKCh4ZSh0LG4pKmUrT2UodCxuKSkqZStMZSh0KSkqZX0sU2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiAzKnhlKHQsbikqZSplKzIqT2UodCxuKSplK0xlKHQpfSxfZT0uMTt0LmFuZ2xlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PWopLGRlKE1hdGguYXRhbjIodC55LWUueSx0LngtZS54KSl9LHQuYW5pbWF0ZT1zZSx0LmFudGljaXBhdGU9ZWUsdC5hcHBseU9mZnNldD1mdW5jdGlvbihlLHQpe3ZhciBuPSEwO3JldHVybiB2b2lkIDA9PT10JiYodD1lLG49ITEpLGZ1bmN0aW9uKHIpe3JldHVybiBuP3ItZSt0OihlPXIsbj0hMCx0KX19LHQuYXR0cmFjdD1oZSx0LmF0dHJhY3RFeHBvPUNlLHQuYmFja0luPVgsdC5iYWNrSW5PdXQ9Six0LmJhY2tPdXQ9USx0LmJvdW5jZUluPW5lLHQuYm91bmNlSW5PdXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU8LjU/LjUqKDEtdGUoMS0yKmUpKTouNSp0ZSgyKmUtMSkrLjV9LHQuYm91bmNlT3V0PXRlLHQuY2lyY0luPXEsdC5jaXJjSW5PdXQ9Syx0LmNpcmNPdXQ9WSx0LmNsYW1wPWMsdC5jcmVhdGVBbnRpY2lwYXRlPVcsdC5jcmVhdGVBdHRyYWN0b3I9cGUsdC5jcmVhdGVCYWNrSW49Rix0LmNyZWF0ZUV4cG9Jbj0kLHQuY3ViaWNCZXppZXI9ZnVuY3Rpb24oZSx0LG4scil7aWYoZT09PXQmJm49PT1yKXJldHVybiBOO2Zvcih2YXIgbz1uZXcgRmxvYXQzMkFycmF5KDExKSxhPTA7YTwxMTsrK2Epb1thXT1NZShhKl9lLGUsbik7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiAwPT09YXx8MT09PWE/YTpNZShmdW5jdGlvbih0KXtmb3IodmFyIHI9MCxhPTE7MTAhPT1hJiZvW2FdPD10OysrYSlyKz1fZTstLWE7dmFyIGk9cisodC1vW2FdKS8ob1thKzFdLW9bYV0pKl9lLGw9U2UoaSxlLG4pO3JldHVybiBsPj0uMDAxP2Z1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgbz0wO288ODsrK28pe3ZhciBhPVNlKHQsbixyKTtpZigwPT09YSlyZXR1cm4gdDt0LT0oTWUodCxuLHIpLWUpL2F9cmV0dXJuIHR9KHQsaSxlLG4pOjA9PT1sP2k6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgYSxpLGw9MDtkb3soYT1NZShpPXQrKG4tdCkvMixyLG8pLWUpPjA/bj1pOnQ9aX13aGlsZShNYXRoLmFicyhhKT4xZS03JiYrK2w8MTApO3JldHVybiBpfSh0LHIscitfZSxlLG4pfShhKSx0LHIpfX0sdC5kZWNheT1hZSx0LmRlZ3JlZXNUb1JhZGlhbnM9dmUsdC5kaXN0YW5jZT1mdW5jdGlvbihlLHQpe2lmKEUoZSkmJkUodCkpcmV0dXJuIHdlKGUsdCk7aWYoZ2UoZSkmJmdlKHQpKXt2YXIgbj13ZShlLngsdC54KSxyPXdlKGUueSx0LnkpLG89bWUoZSkmJm1lKHQpP3dlKGUueix0LnopOjA7cmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyhuLDIpK01hdGgucG93KHIsMikrTWF0aC5wb3cobywyKSl9fSx0LmVhc2VJbj16LHQuZWFzZUluT3V0PUcsdC5lYXNlT3V0PVUsdC5pbmVydGlhPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5mcm9tLG89dm9pZCAwPT09bj8wOm4sYT1lLnZlbG9jaXR5LGw9dm9pZCAwPT09YT8wOmEsYz1lLm1pbixzPWUubWF4LHU9ZS5wb3dlcixkPXZvaWQgMD09PXU/Ljg6dSxmPWUudGltZUNvbnN0YW50LHA9dm9pZCAwPT09Zj83NTA6ZixoPWUuYm91bmNlU3RpZmZuZXNzLEM9dm9pZCAwPT09aD81MDA6aCx2PWUuYm91bmNlRGFtcGluZyxnPXZvaWQgMD09PXY/MTA6dixtPWUucmVzdERlbHRhLHc9dm9pZCAwPT09bT8xOm0seT1lLm1vZGlmeVRhcmdldCxiPWUuZHJpdmVyLHg9ZS5vblVwZGF0ZSxPPWUub25Db21wbGV0ZTtmdW5jdGlvbiBMKGUpe3JldHVybiB2b2lkIDAhPT1jJiZlPGN8fHZvaWQgMCE9PXMmJmU+c31mdW5jdGlvbiBNKGUpe3JldHVybiB2b2lkIDA9PT1jP3M6dm9pZCAwPT09c3x8TWF0aC5hYnMoYy1lKTxNYXRoLmFicyhzLWUpP2M6c31mdW5jdGlvbiBTKGUpe251bGw9PXR8fHQuc3RvcCgpLHQ9c2Uoci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGUpLHtkcml2ZXI6YixvblVwZGF0ZTpmdW5jdGlvbih0KXt2YXIgbjtudWxsPT14fHx4KHQpLG51bGw9PT0obj1lLm9uVXBkYXRlKXx8dm9pZCAwPT09bnx8bi5jYWxsKGUsdCl9LG9uQ29tcGxldGU6T30pKX1mdW5jdGlvbiBfKGUpe1Moci5fX2Fzc2lnbih7dHlwZTpcInNwcmluZ1wiLHN0aWZmbmVzczpDLGRhbXBpbmc6ZyxyZXN0RGVsdGE6d30sZSkpfWlmKEwobykpXyh7ZnJvbTpvLHZlbG9jaXR5OmwsdG86TShvKX0pO2Vsc2V7dmFyIGo9ZCpsK287dm9pZCAwIT09eSYmKGo9eShqKSk7dmFyIEUsUCxrPU0oaiksSD1rPT09Yz8tMToxO1Moe3R5cGU6XCJkZWNheVwiLGZyb206byx2ZWxvY2l0eTpsLHRpbWVDb25zdGFudDpwLHBvd2VyOmQscmVzdERlbHRhOncsbW9kaWZ5VGFyZ2V0Onksb25VcGRhdGU6TChqKT9mdW5jdGlvbihlKXtFPVAsUD1lLGw9dWUoZS1FLGkuZ2V0RnJhbWVEYXRhKCkuZGVsdGEpLCgxPT09SCYmZT5rfHwtMT09PUgmJmU8aykmJl8oe2Zyb206ZSx0bzprLHZlbG9jaXR5Omx9KX06dm9pZCAwfSl9cmV0dXJue3N0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dC5zdG9wKCl9fX0sdC5pbnRlcnBvbGF0ZT1ELHQuaXNQb2ludD1nZSx0LmlzUG9pbnQzRD1tZSx0LmtleWZyYW1lcz1vZSx0LmxpbmVhcj1OLHQubWlycm9yRWFzaW5nPVQsdC5taXg9eCx0Lm1peENvbG9yPV8sdC5taXhDb21wbGV4PVosdC5waXBlPWssdC5wb2ludEZyb21WZWN0b3I9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PXZlKHQpLHt4Om4qTWF0aC5jb3ModCkrZS54LHk6bipNYXRoLnNpbih0KStlLnl9fSx0LnByb2dyZXNzPWIsdC5yYWRpYW5zVG9EZWdyZWVzPWRlLHQucmV2ZXJzZUVhc2luZz1CLHQuc21vb3RoPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPTUwKTt2YXIgdD0wLG49MDtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG89aS5nZXRGcmFtZURhdGEoKS50aW1lc3RhbXAsYT1vIT09bj9vLW46MCxsPWE/YmUodCxyLGEsZSk6dDtyZXR1cm4gbj1vLHQ9bCxsfX0sdC5zbW9vdGhGcmFtZT1iZSx0LnNuYXA9ZnVuY3Rpb24oZSl7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpcmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQvZSkqZX07dmFyIHQ9MCxuPWUubGVuZ3RoO3JldHVybiBmdW5jdGlvbihyKXt2YXIgbz1NYXRoLmFicyhlWzBdLXIpO2Zvcih0PTE7dDxuO3QrKyl7dmFyIGE9ZVt0XSxpPU1hdGguYWJzKGEtcik7aWYoMD09PWkpcmV0dXJuIGE7aWYoaT5vKXJldHVybiBlW3QtMV07aWYodD09PW4tMSlyZXR1cm4gYTtvPWl9fX0sdC5zcHJpbmc9dyx0LnN0ZXBzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PVwiZW5kXCIpLGZ1bmN0aW9uKG4pe3ZhciByPShuPVwiZW5kXCI9PT10P01hdGgubWluKG4sLjk5OSk6TWF0aC5tYXgobiwuMDAxKSkqZSxvPVwiZW5kXCI9PT10P01hdGguZmxvb3Iocik6TWF0aC5jZWlsKHIpO3JldHVybiBjKDAsMSxvL2UpfX0sdC50b0RlY2ltYWw9eWUsdC52ZWxvY2l0eVBlckZyYW1lPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUvKDFlMy90KX0sdC52ZWxvY2l0eVBlclNlY29uZD11ZSx0LndyYXA9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQtZTtyZXR1cm4oKG4tZSklcityKSVyK2V9fSwyNzAzOihlLHQsbik9Pnt2YXIgcj1uKDQxNCk7ZnVuY3Rpb24gbygpe31mdW5jdGlvbiBhKCl7fWEucmVzZXRXYXJuaW5nQ2FjaGU9byxlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLG8sYSxpKXtpZihpIT09cil7dmFyIGw9bmV3IEVycm9yKFwiQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlc1wiKTt0aHJvdyBsLm5hbWU9XCJJbnZhcmlhbnQgVmlvbGF0aW9uXCIsbH19ZnVuY3Rpb24gdCgpe3JldHVybiBlfWUuaXNSZXF1aXJlZD1lO3ZhciBuPXthcnJheTplLGJpZ2ludDplLGJvb2w6ZSxmdW5jOmUsbnVtYmVyOmUsb2JqZWN0OmUsc3RyaW5nOmUsc3ltYm9sOmUsYW55OmUsYXJyYXlPZjp0LGVsZW1lbnQ6ZSxlbGVtZW50VHlwZTplLGluc3RhbmNlT2Y6dCxub2RlOmUsb2JqZWN0T2Y6dCxvbmVPZjp0LG9uZU9mVHlwZTp0LHNoYXBlOnQsZXhhY3Q6dCxjaGVja1Byb3BUeXBlczphLHJlc2V0V2FybmluZ0NhY2hlOm99O3JldHVybiBuLlByb3BUeXBlcz1uLG59fSw1Njk3OihlLHQsbik9PntlLmV4cG9ydHM9bigyNzAzKSgpfSw0MTQ6ZT0+e2UuZXhwb3J0cz1cIlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEXCJ9LDcyOTI6KGUsdCxuKT0+e24ucih0KSxuLmQodCx7Q2FsZW5kYXI6KCk9PlFuLENlbnR1cnlWaWV3OigpPT5QdCxEZWNhZGVWaWV3OigpPT5GdCxNb250aFZpZXc6KCk9Pl9uLE5hdmlnYXRpb246KCk9PkZlLFllYXJWaWV3OigpPT50bixkZWZhdWx0OigpPT50cn0pO3ZhciByPW4oNjY4OSksbz1uLm4ociksYT1uKDU2OTcpLGk9bi5uKGEpO2Z1bmN0aW9uIGwoZSl7dmFyIHQsbixyPVwiXCI7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlKXIrPWU7ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgZSlpZihBcnJheS5pc0FycmF5KGUpKWZvcih0PTA7dDxlLmxlbmd0aDt0KyspZVt0XSYmKG49bChlW3RdKSkmJihyJiYocis9XCIgXCIpLHIrPW4pO2Vsc2UgZm9yKHQgaW4gZSllW3RdJiYociYmKHIrPVwiIFwiKSxyKz10KTtyZXR1cm4gcn1jb25zdCBjPWZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQsbj0wLHI9XCJcIjtuPGFyZ3VtZW50cy5sZW5ndGg7KShlPWFyZ3VtZW50c1tuKytdKSYmKHQ9bChlKSkmJihyJiYocis9XCIgXCIpLHIrPXQpO3JldHVybiByfTt2YXIgcz1uKDc3MyksdT1uLm4ocyk7ZnVuY3Rpb24gZChlKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZSl9dmFyIGY9dSgpKChmdW5jdGlvbihlKXt2YXIgdCxuPXZvaWQgMD09PWU/e306ZSxyPW4udXNlRmFsbGJhY2tMb2NhbGUsbz12b2lkIDA9PT1yfHxyLGE9bi5mYWxsYmFja0xvY2FsZSxpPXZvaWQgMD09PWE/XCJlbi1VU1wiOmEsbD1bXTtpZihcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93KXt2YXIgYz13aW5kb3cubmF2aWdhdG9yO2w9bC5jb25jYXQoYy5sYW5ndWFnZXMsYy5sYW5ndWFnZSxjLnVzZXJMYW5ndWFnZSxjLmJyb3dzZXJMYW5ndWFnZSxjLnN5c3RlbUxhbmd1YWdlKX1yZXR1cm4gbyYmbC5wdXNoKGkpLGZ1bmN0aW9uKGUpe3JldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7aWYoIWV8fC0xPT09ZS5pbmRleE9mKFwiLVwiKXx8ZS50b0xvd2VyQ2FzZSgpIT09ZSlyZXR1cm4gZTt2YXIgdD1lLnNwbGl0KFwiLVwiKTtyZXR1cm4gdFswXStcIi1cIit0WzFdLnRvVXBwZXJDYXNlKCl9KSl9KCh0PWwpLmZpbHRlcigoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZSYmdC5pbmRleE9mKGUpPT09bn0pKSl9KSxkKSxwPXUoKSgoZnVuY3Rpb24oZSl7cmV0dXJuIGYoZSlbMF18fG51bGx9KSxkKTtjb25zdCBoPXA7ZnVuY3Rpb24gQyhlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIsbyl7dm9pZCAwPT09byYmKG89bik7dmFyIGE9ZShyKStvO3JldHVybiB0KGEpfX1mdW5jdGlvbiB2KGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbmV3IERhdGUoZSh0KS5nZXRUaW1lKCktMSl9fWZ1bmN0aW9uIGcoZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuW2UobiksdChuKV19fWZ1bmN0aW9uIG0oZSl7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIGUuZ2V0RnVsbFllYXIoKTtpZihcIm51bWJlclwiPT10eXBlb2YgZSlyZXR1cm4gZTt2YXIgdD1wYXJzZUludChlLDEwKTtpZihcInN0cmluZ1wiPT10eXBlb2YgZSYmIWlzTmFOKHQpKXJldHVybiB0O3Rocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBnZXQgeWVhciBmcm9tIGRhdGU6IFwiLmNvbmNhdChlLFwiLlwiKSl9ZnVuY3Rpb24gdyhlKXtpZihlIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gZS5nZXRNb250aCgpO3Rocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBnZXQgbW9udGggZnJvbSBkYXRlOiBcIi5jb25jYXQoZSxcIi5cIikpfWZ1bmN0aW9uIHkoZSl7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIGUuZ2V0RGF0ZSgpO3Rocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBnZXQgeWVhciBmcm9tIGRhdGU6IFwiLmNvbmNhdChlLFwiLlwiKSl9ZnVuY3Rpb24gYihlKXt2YXIgdD1tKGUpLG49dCsoMS10KSUxMDAscj1uZXcgRGF0ZTtyZXR1cm4gci5zZXRGdWxsWWVhcihuLDAsMSksci5zZXRIb3VycygwLDAsMCwwKSxyfXZhciB4PUMobSxiLC0xMDApLE89QyhtLGIsMTAwKSxMPXYoTyksTT1DKG0sTCwtMTAwKSxTPShDKG0sTCwxMDApLGcoYixMKSk7ZnVuY3Rpb24gXyhlKXt2YXIgdD1tKGUpLG49dCsoMS10KSUxMCxyPW5ldyBEYXRlO3JldHVybiByLnNldEZ1bGxZZWFyKG4sMCwxKSxyLnNldEhvdXJzKDAsMCwwLDApLHJ9dmFyIGo9QyhtLF8sLTEwKSxFPUMobSxfLDEwKSxQPXYoRSksaz1DKG0sUCwtMTApLEg9KEMobSxQLDEwKSxnKF8sUCkpO2Z1bmN0aW9uIFYoZSl7dmFyIHQ9bShlKSxuPW5ldyBEYXRlO3JldHVybiBuLnNldEZ1bGxZZWFyKHQsMCwxKSxuLnNldEhvdXJzKDAsMCwwLDApLG59dmFyIFI9QyhtLFYsLTEpLEk9QyhtLFYsMSksWj12KEkpLEE9QyhtLFosLTEpLEQ9KEMobSxaLDEpLGcoVixaKSk7ZnVuY3Rpb24gQihlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe3ZvaWQgMD09PXImJihyPXQpO3ZhciBvPW0obiksYT13KG4pK3IsaT1uZXcgRGF0ZTtyZXR1cm4gaS5zZXRGdWxsWWVhcihvLGEsMSksaS5zZXRIb3VycygwLDAsMCwwKSxlKGkpfX1mdW5jdGlvbiBUKGUpe3ZhciB0PW0oZSksbj13KGUpLHI9bmV3IERhdGU7cmV0dXJuIHIuc2V0RnVsbFllYXIodCxuLDEpLHIuc2V0SG91cnMoMCwwLDAsMCkscn12YXIgJD1CKFQsLTEpLEY9QihULDEpLFc9dihGKSxOPUIoVywtMSksej0oQihXLDEpLGcoVCxXKSk7ZnVuY3Rpb24gVShlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe3ZvaWQgMD09PXImJihyPXQpO3ZhciBvPW0obiksYT13KG4pLGk9eShuKStyLGw9bmV3IERhdGU7cmV0dXJuIGwuc2V0RnVsbFllYXIobyxhLGkpLGwuc2V0SG91cnMoMCwwLDAsMCksZShsKX19ZnVuY3Rpb24gRyhlKXt2YXIgdD1tKGUpLG49dyhlKSxyPXkoZSksbz1uZXcgRGF0ZTtyZXR1cm4gby5zZXRGdWxsWWVhcih0LG4sciksby5zZXRIb3VycygwLDAsMCwwKSxvfVUoRywtMSk7dmFyIHEsWT12KFUoRywxKSksSz0oVShZLC0xKSxVKFksMSksZyhHLFkpKTtmdW5jdGlvbiBYKGUpe3JldHVybiB5KFcoZSkpfWZ1bmN0aW9uIFEoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBKKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgZWUsdGU9e0FSQUJJQzpcIkFyYWJpY1wiLEhFQlJFVzpcIkhlYnJld1wiLElTT184NjAxOlwiSVNPIDg2MDFcIixVUzpcIlVTXCJ9LG5lPShKKHE9e30sdGUuVVMsW1wiZW4tQ0FcIixcImVuLVVTXCIsXCJlcy1BUlwiLFwiZXMtQk9cIixcImVzLUNMXCIsXCJlcy1DT1wiLFwiZXMtQ1JcIixcImVzLURPXCIsXCJlcy1FQ1wiLFwiZXMtR1RcIixcImVzLUhOXCIsXCJlcy1NWFwiLFwiZXMtTklcIixcImVzLVBBXCIsXCJlcy1QRVwiLFwiZXMtUFJcIixcImVzLVNWXCIsXCJlcy1WRVwiLFwicHQtQlJcIl0pLEoocSx0ZS5BUkFCSUMsW1wiYXJcIixcImFyLUFFXCIsXCJhci1CSFwiLFwiYXItRFpcIixcImFyLUVHXCIsXCJhci1JUVwiLFwiYXItSk9cIixcImFyLUtXXCIsXCJhci1MWVwiLFwiYXItT01cIixcImFyLVFBXCIsXCJhci1TQVwiLFwiYXItU0RcIixcImFyLVNZXCIsXCJhci1ZRVwiLFwiZHZcIixcImR2LU1WXCIsXCJwc1wiLFwicHMtQVJcIl0pLEoocSx0ZS5IRUJSRVcsW1wiaGVcIixcImhlLUlMXCJdKSxxKSxyZT0oZWU9QXJyYXkoNyksZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gUShlKX0oZWUpfHxmdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbXCJAQGl0ZXJhdG9yXCJdKXJldHVybiBBcnJheS5mcm9tKGUpfShlZSl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIFEoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uP0FycmF5LmZyb20oZSk6XCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP1EoZSx0KTp2b2lkIDB9fShlZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpLm1hcCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0pKSxvZT1uZXcgTWFwO2Z1bmN0aW9uIGFlKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgcj10fHxoKCk7b2UuaGFzKHIpfHxvZS5zZXQocixuZXcgTWFwKTt2YXIgbz1vZS5nZXQocik7cmV0dXJuIG8uaGFzKGUpfHxvLnNldChlLG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHIsZSkuZm9ybWF0KSxvLmdldChlKShuKX19KGUpKHQsZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IERhdGUoZSk7cmV0dXJuIG5ldyBEYXRlKHQuc2V0SG91cnMoMTIpKX0obikpfX1hZSh7ZGF5OlwibnVtZXJpY1wiLG1vbnRoOlwibnVtZXJpY1wiLHllYXI6XCJudW1lcmljXCJ9KTt2YXIgaWU9YWUoe2RheTpcIm51bWVyaWNcIn0pLGxlPWFlKHtkYXk6XCJudW1lcmljXCIsbW9udGg6XCJsb25nXCIseWVhcjpcIm51bWVyaWNcIn0pLGNlPWFlKHttb250aDpcImxvbmdcIn0pLHNlPWFlKHttb250aDpcImxvbmdcIix5ZWFyOlwibnVtZXJpY1wifSksdWU9YWUoe3dlZWtkYXk6XCJzaG9ydFwifSksZGU9YWUoe3dlZWtkYXk6XCJsb25nXCJ9KSxmZT1hZSh7eWVhcjpcIm51bWVyaWNcIn0pLHBlPXJlWzBdLGhlPXJlWzVdLENlPXJlWzZdO2Z1bmN0aW9uIHZlKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0ZS5JU09fODYwMSxuPWUuZ2V0RGF5KCk7c3dpdGNoKHQpe2Nhc2UgdGUuSVNPXzg2MDE6cmV0dXJuKG4rNiklNztjYXNlIHRlLkFSQUJJQzpyZXR1cm4obisxKSU3O2Nhc2UgdGUuSEVCUkVXOmNhc2UgdGUuVVM6cmV0dXJuIG47ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBjYWxlbmRhciB0eXBlLlwiKX19ZnVuY3Rpb24gZ2UoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRlLklTT184NjAxLG49bShlKSxyPXcoZSksbz1lLmdldERhdGUoKS12ZShlLHQpO3JldHVybiBuZXcgRGF0ZShuLHIsbyl9ZnVuY3Rpb24gbWUoZSx0KXtzd2l0Y2goZSl7Y2FzZVwiY2VudHVyeVwiOnJldHVybiBiKHQpO2Nhc2VcImRlY2FkZVwiOnJldHVybiBfKHQpO2Nhc2VcInllYXJcIjpyZXR1cm4gVih0KTtjYXNlXCJtb250aFwiOnJldHVybiBUKHQpO2Nhc2VcImRheVwiOnJldHVybiBHKHQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fWZ1bmN0aW9uIHdlKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4gTyh0KTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gRSh0KTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIEkodCk7Y2FzZVwibW9udGhcIjpyZXR1cm4gRih0KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX12YXIgeWU9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIGoodCwtMTAwKTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIFIodCwtMTApO2Nhc2VcIm1vbnRoXCI6cmV0dXJuICQodCwtMTIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fSxiZT1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gRSh0LDEwMCk7Y2FzZVwieWVhclwiOnJldHVybiBJKHQsMTApO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIEYodCwxMik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19O2Z1bmN0aW9uIHhlKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4gTCh0KTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gUCh0KTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIFoodCk7Y2FzZVwibW9udGhcIjpyZXR1cm4gVyh0KTtjYXNlXCJkYXlcIjpyZXR1cm4gWSh0KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX12YXIgT2U9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIGsodCwtMTAwKTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIEEodCwtMTApO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIE4odCwtMTIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fTtmdW5jdGlvbiBMZShlLHQpe3N3aXRjaChlKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIFModCk7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIEgodCk7Y2FzZVwieWVhclwiOnJldHVybiBEKHQpO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIHoodCk7Y2FzZVwiZGF5XCI6cmV0dXJuIEsodCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19ZnVuY3Rpb24gTWUoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOmZlO3JldHVybihhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCkubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSkpLmpvaW4oXCIg4oCTIFwiKX1mdW5jdGlvbiBTZShlLHQsbil7cmV0dXJuIE1lKGUsdCxIKG4pKX1mdW5jdGlvbiBfZShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGUuSVNPXzg2MDEsbj1lLmdldERheSgpO3N3aXRjaCh0KXtjYXNlIHRlLkFSQUJJQzpjYXNlIHRlLkhFQlJFVzpyZXR1cm4gbj09PWhlfHxuPT09Q2U7Y2FzZSB0ZS5JU09fODYwMTpjYXNlIHRlLlVTOnJldHVybiBuPT09Q2V8fG49PT1wZTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGNhbGVuZGFyIHR5cGUuXCIpfX1mdW5jdGlvbiBqZShlKXtyZXR1cm4gamU9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0samUoZSl9dmFyIEVlPU9iamVjdC52YWx1ZXModGUpLFBlPVtcImNlbnR1cnlcIixcImRlY2FkZVwiLFwieWVhclwiLFwibW9udGhcIl0sa2U9aSgpLm9uZU9mKEVlKSxIZT1pKCkub25lT2ZUeXBlKFtpKCkuc3RyaW5nLGkoKS5hcnJheU9mKGkoKS5zdHJpbmcpXSksVmU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWVbdF07aWYoIXIpcmV0dXJuIG51bGw7aWYoIShyIGluc3RhbmNlb2YgRGF0ZSkpcmV0dXJuIG5ldyBFcnJvcihcIkludmFsaWQgcHJvcCBgXCIuY29uY2F0KHQsXCJgIG9mIHR5cGUgYFwiKS5jb25jYXQoamUociksXCJgIHN1cHBsaWVkIHRvIGBcIikuY29uY2F0KG4sXCJgLCBleHBlY3RlZCBpbnN0YW5jZSBvZiBgRGF0ZWAuXCIpKTt2YXIgbz1lLm1heERhdGU7cmV0dXJuIG8mJnI+bz9uZXcgRXJyb3IoXCJJbnZhbGlkIHByb3AgYFwiLmNvbmNhdCh0LFwiYCBvZiB0eXBlIGBcIikuY29uY2F0KGplKHIpLFwiYCBzdXBwbGllZCB0byBgXCIpLmNvbmNhdChuLFwiYCwgbWluRGF0ZSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gbWF4RGF0ZS5cIikpOm51bGx9LFJlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lW3RdO2lmKCFyKXJldHVybiBudWxsO2lmKCEociBpbnN0YW5jZW9mIERhdGUpKXJldHVybiBuZXcgRXJyb3IoXCJJbnZhbGlkIHByb3AgYFwiLmNvbmNhdCh0LFwiYCBvZiB0eXBlIGBcIikuY29uY2F0KGplKHIpLFwiYCBzdXBwbGllZCB0byBgXCIpLmNvbmNhdChuLFwiYCwgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgYERhdGVgLlwiKSk7dmFyIG89ZS5taW5EYXRlO3JldHVybiBvJiZyPG8/bmV3IEVycm9yKFwiSW52YWxpZCBwcm9wIGBcIi5jb25jYXQodCxcImAgb2YgdHlwZSBgXCIpLmNvbmNhdChqZShyKSxcImAgc3VwcGxpZWQgdG8gYFwiKS5jb25jYXQobixcImAsIG1heERhdGUgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiBtaW5EYXRlLlwiKSk6bnVsbH0sSWU9aSgpLm9uZU9mVHlwZShbaSgpLmZ1bmMsaSgpLnNoYXBlKHtjdXJyZW50OmkoKS5hbnl9KV0pLFplPWkoKS5vbmVPZlR5cGUoW2koKS5pbnN0YW5jZU9mKERhdGUpLGkoKS5hcnJheU9mKGkoKS5pbnN0YW5jZU9mKERhdGUpKV0pLEFlPWkoKS5hcnJheU9mKGkoKS5vbmVPZihQZSkpLERlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lW3RdLG89ZS52aWV3c3x8UGU7cmV0dXJuIHZvaWQgMCE9PXImJi0xPT09by5pbmRleE9mKHIpP25ldyBFcnJvcihcIkludmFsaWQgcHJvcCBgXCIuY29uY2F0KHQsXCJgIG9mIHZhbHVlIGBcIikuY29uY2F0KHIsXCJgIHN1cHBsaWVkIHRvIGBcIikuY29uY2F0KG4sXCJgLCBleHBlY3RlZCBvbmUgb2YgW1wiKS5jb25jYXQoby5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybidcIicuY29uY2F0KGUsJ1wiJyl9KSkuam9pbihcIiwgXCIpLFwiXS5cIikpOm51bGx9O0RlLmlzUmVxdWlyZWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWVbdF07cmV0dXJuIHI/RGUoZSx0LG4pOm5ldyBFcnJvcihcIlRoZSBwcm9wIGBcIi5jb25jYXQodCxcImAgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGluIGBcIikuY29uY2F0KG4sXCJgLCBidXQgaXRzIHZhbHVlIGlzIGBcIikuY29uY2F0KHIsXCJgLlwiKSl9O3ZhciBCZT17YWN0aXZlU3RhcnREYXRlOmkoKS5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsaG92ZXI6aSgpLmluc3RhbmNlT2YoRGF0ZSksbG9jYWxlOmkoKS5zdHJpbmcsbWF4RGF0ZTpSZSxtaW5EYXRlOlZlLG9uQ2xpY2s6aSgpLmZ1bmMsb25Nb3VzZU92ZXI6aSgpLmZ1bmMsdGlsZUNsYXNzTmFtZTppKCkub25lT2ZUeXBlKFtpKCkuZnVuYyxIZV0pLHRpbGVDb250ZW50OmkoKS5vbmVPZlR5cGUoW2koKS5mdW5jLGkoKS5ub2RlXSksdmFsdWU6WmUsdmFsdWVUeXBlOmkoKS5zdHJpbmd9LFRlPXthY3RpdmVTdGFydERhdGU6aSgpLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxjbGFzc2VzOmkoKS5hcnJheU9mKGkoKS5zdHJpbmcpLmlzUmVxdWlyZWQsZGF0ZTppKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLGxvY2FsZTppKCkuc3RyaW5nLG1heERhdGU6UmUsbWluRGF0ZTpWZSxvbkNsaWNrOmkoKS5mdW5jLG9uTW91c2VPdmVyOmkoKS5mdW5jLHN0eWxlOmkoKS5vYmplY3RPZihpKCkub25lT2ZUeXBlKFtpKCkuc3RyaW5nLGkoKS5udW1iZXJdKSksdGlsZUNsYXNzTmFtZTppKCkub25lT2ZUeXBlKFtpKCkuZnVuYyxIZV0pLHRpbGVDb250ZW50OmkoKS5vbmVPZlR5cGUoW2koKS5mdW5jLGkoKS5ub2RlXSksdGlsZURpc2FibGVkOmkoKS5mdW5jfSwkZT1cInJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uXCI7ZnVuY3Rpb24gRmUoZSl7dmFyIHQsbj1lLmFjdGl2ZVN0YXJ0RGF0ZSxyPWUuZHJpbGxVcCxhPWUuZm9ybWF0TW9udGhZZWFyLGk9dm9pZCAwPT09YT9zZTphLGw9ZS5mb3JtYXRZZWFyLGM9dm9pZCAwPT09bD9mZTpsLHM9ZS5sb2NhbGUsdT1lLm1heERhdGUsZD1lLm1pbkRhdGUsZj1lLm5hdmlnYXRpb25BcmlhTGFiZWwsaD12b2lkIDA9PT1mP1wiXCI6ZixDPWUubmF2aWdhdGlvbkFyaWFMaXZlLHY9ZS5uYXZpZ2F0aW9uTGFiZWwsZz1lLm5leHQyQXJpYUxhYmVsLG09dm9pZCAwPT09Zz9cIlwiOmcsdz1lLm5leHQyTGFiZWwseT12b2lkIDA9PT13P1wiwrtcIjp3LGI9ZS5uZXh0QXJpYUxhYmVsLE89dm9pZCAwPT09Yj9cIlwiOmIsTD1lLm5leHRMYWJlbCxfPXZvaWQgMD09PUw/XCLigLpcIjpMLEU9ZS5wcmV2MkFyaWFMYWJlbCxQPXZvaWQgMD09PUU/XCJcIjpFLEg9ZS5wcmV2MkxhYmVsLFY9dm9pZCAwPT09SD9cIsKrXCI6SCxJPWUucHJldkFyaWFMYWJlbCxaPXZvaWQgMD09PUk/XCJcIjpJLEQ9ZS5wcmV2TGFiZWwsQj12b2lkIDA9PT1EP1wi4oC5XCI6RCxUPWUuc2V0QWN0aXZlU3RhcnREYXRlLEY9ZS5zaG93RG91YmxlVmlldyxXPWUudmlldyx6PWUudmlld3MuaW5kZXhPZihXKT4wLFU9XCJjZW50dXJ5XCIhPT1XLEc9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZVwiY2VudHVyeVwiOnJldHVybiB4KHQpO2Nhc2VcImRlY2FkZVwiOnJldHVybiBqKHQpO2Nhc2VcInllYXJcIjpyZXR1cm4gUih0KTtjYXNlXCJtb250aFwiOnJldHVybiAkKHQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fShXLG4pLHE9VSYmeWUoVyxuKSxZPXdlKFcsbiksSz1VJiZiZShXLG4pLFg9ZnVuY3Rpb24oKXtpZihHLmdldEZ1bGxZZWFyKCk8MClyZXR1cm4hMDt2YXIgZT1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIE0odCk7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIGsodCk7Y2FzZVwieWVhclwiOnJldHVybiBBKHQpO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIE4odCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19KFcsbik7cmV0dXJuIGQmJmQ+PWV9KCksUT1VJiZmdW5jdGlvbigpe2lmKHEuZ2V0RnVsbFllYXIoKTwwKXJldHVybiEwO3ZhciBlPU9lKFcsbik7cmV0dXJuIGQmJmQ+PWV9KCksSj11JiZ1PFksZWU9VSYmdSYmdTxLO2Z1bmN0aW9uIHRlKGUpe3ZhciB0PWZ1bmN0aW9uKCl7c3dpdGNoKFcpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiBNZShlLHQsUyhuKSl9KHMsYyxlKTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gU2UocyxjLGUpO2Nhc2VcInllYXJcIjpyZXR1cm4gYyhzLGUpO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIGkocyxlKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdmlldzogXCIuY29uY2F0KFcsXCIuXCIpKX19KCk7cmV0dXJuIHY/dih7ZGF0ZTplLGxhYmVsOnQsbG9jYWxlOnN8fHAoKSx2aWV3Old9KTp0fXJldHVybiBvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6JGV9LG51bGwhPT1WJiZVJiZvKCkuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHtcImFyaWEtbGFiZWxcIjpQLGNsYXNzTmFtZTpcIlwiLmNvbmNhdCgkZSxcIl9fYXJyb3cgXCIpLmNvbmNhdCgkZSxcIl9fcHJldjItYnV0dG9uXCIpLGRpc2FibGVkOlEsb25DbGljazpmdW5jdGlvbigpe1QocSxcInByZXYyXCIpfSx0eXBlOlwiYnV0dG9uXCJ9LFYpLG51bGwhPT1CJiZvKCkuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHtcImFyaWEtbGFiZWxcIjpaLGNsYXNzTmFtZTpcIlwiLmNvbmNhdCgkZSxcIl9fYXJyb3cgXCIpLmNvbmNhdCgkZSxcIl9fcHJldi1idXR0b25cIiksZGlzYWJsZWQ6WCxvbkNsaWNrOmZ1bmN0aW9uKCl7VChHLFwicHJldlwiKX0sdHlwZTpcImJ1dHRvblwifSxCKSwodD1cIlwiLmNvbmNhdCgkZSxcIl9fbGFiZWxcIiksbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6aCxcImFyaWEtbGl2ZVwiOkMsY2xhc3NOYW1lOnQsZGlzYWJsZWQ6IXosb25DbGljazpyLHN0eWxlOntmbGV4R3JvdzoxfSx0eXBlOlwiYnV0dG9uXCJ9LG8oKS5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtjbGFzc05hbWU6XCJcIi5jb25jYXQodCxcIl9fbGFiZWxUZXh0IFwiKS5jb25jYXQodCxcIl9fbGFiZWxUZXh0LS1mcm9tXCIpfSx0ZShuKSksRiYmbygpLmNyZWF0ZUVsZW1lbnQobygpLkZyYWdtZW50LG51bGwsbygpLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIse2NsYXNzTmFtZTpcIlwiLmNvbmNhdCh0LFwiX19kaXZpZGVyXCIpfSxcIiDigJMgXCIpLG8oKS5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtjbGFzc05hbWU6XCJcIi5jb25jYXQodCxcIl9fbGFiZWxUZXh0IFwiKS5jb25jYXQodCxcIl9fbGFiZWxUZXh0LS10b1wiKX0sdGUoWSkpKSkpLG51bGwhPT1fJiZvKCkuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHtcImFyaWEtbGFiZWxcIjpPLGNsYXNzTmFtZTpcIlwiLmNvbmNhdCgkZSxcIl9fYXJyb3cgXCIpLmNvbmNhdCgkZSxcIl9fbmV4dC1idXR0b25cIiksZGlzYWJsZWQ6SixvbkNsaWNrOmZ1bmN0aW9uKCl7VChZLFwibmV4dFwiKX0sdHlwZTpcImJ1dHRvblwifSxfKSxudWxsIT09eSYmVSYmbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6bSxjbGFzc05hbWU6XCJcIi5jb25jYXQoJGUsXCJfX2Fycm93IFwiKS5jb25jYXQoJGUsXCJfX25leHQyLWJ1dHRvblwiKSxkaXNhYmxlZDplZSxvbkNsaWNrOmZ1bmN0aW9uKCl7VChLLFwibmV4dDJcIil9LHR5cGU6XCJidXR0b25cIn0seSkpfUZlLnByb3BUeXBlcz17YWN0aXZlU3RhcnREYXRlOmkoKS5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsZHJpbGxVcDppKCkuZnVuYy5pc1JlcXVpcmVkLGZvcm1hdE1vbnRoWWVhcjppKCkuZnVuYyxmb3JtYXRZZWFyOmkoKS5mdW5jLGxvY2FsZTppKCkuc3RyaW5nLG1heERhdGU6aSgpLmluc3RhbmNlT2YoRGF0ZSksbWluRGF0ZTppKCkuaW5zdGFuY2VPZihEYXRlKSxuYXZpZ2F0aW9uQXJpYUxhYmVsOmkoKS5zdHJpbmcsbmF2aWdhdGlvbkFyaWFMaXZlOmkoKS5zdHJpbmcsbmF2aWdhdGlvbkxhYmVsOmkoKS5mdW5jLG5leHQyQXJpYUxhYmVsOmkoKS5zdHJpbmcsbmV4dDJMYWJlbDppKCkubm9kZSxuZXh0QXJpYUxhYmVsOmkoKS5zdHJpbmcsbmV4dExhYmVsOmkoKS5ub2RlLHByZXYyQXJpYUxhYmVsOmkoKS5zdHJpbmcscHJldjJMYWJlbDppKCkubm9kZSxwcmV2QXJpYUxhYmVsOmkoKS5zdHJpbmcscHJldkxhYmVsOmkoKS5ub2RlLHNldEFjdGl2ZVN0YXJ0RGF0ZTppKCkuZnVuYy5pc1JlcXVpcmVkLHNob3dEb3VibGVWaWV3OmkoKS5ib29sLHZpZXc6RGUuaXNSZXF1aXJlZCx2aWV3czpBZS5pc1JlcXVpcmVkfTt2YXIgV2U9W1wiY2hpbGRyZW5cIixcImNsYXNzTmFtZVwiLFwiZGlyZWN0aW9uXCIsXCJjb3VudFwiLFwib2Zmc2V0XCIsXCJzdHlsZVwiLFwid3JhcFwiXTtmdW5jdGlvbiBOZSgpe3JldHVybiBOZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LE5lLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB6ZShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gVWUoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/emUoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtHZShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6emUoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gR2UoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHFlKGUpe3JldHVyblwiXCIuY29uY2F0KGUsXCIlXCIpfWZ1bmN0aW9uIFllKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1lLmNsYXNzTmFtZSxyPWUuZGlyZWN0aW9uLGE9ZS5jb3VudCxpPWUub2Zmc2V0LGw9ZS5zdHlsZSxjPWUud3JhcCxzPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxXZSk7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsTmUoe2NsYXNzTmFtZTpuLHN0eWxlOlVlKHtkaXNwbGF5OlwiZmxleFwiLGZsZXhEaXJlY3Rpb246cixmbGV4V3JhcDpjP1wid3JhcFwiOlwibm8td3JhcFwifSxsKX0scyksbygpLkNoaWxkcmVuLm1hcCh0LChmdW5jdGlvbihlLHQpe3JldHVybiBvKCkuY2xvbmVFbGVtZW50KGUsVWUoVWUoe30sZS5wcm9wcykse30se3N0eWxlOntmbGV4QmFzaXM6cWUoMTAwL2EpLGZsZXhTaHJpbms6MCxmbGV4R3JvdzowLG92ZXJmbG93OlwiaGlkZGVuXCIsbWFyZ2luTGVmdDppJiYwPT09dD9xZSgxMDAqaS9hKTpudWxsfX0pKX0pKSl9ZnVuY3Rpb24gS2UoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIFhlKGUpfShlKXx8ZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lW1wiQEBpdGVyYXRvclwiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIFhlKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVyblwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bj9BcnJheS5mcm9tKGUpOlwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9YZShlLHQpOnZvaWQgMH19KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIFhlKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gUWUoZSx0KXtyZXR1cm4gdFswXTw9ZSYmdFsxXT49ZX1mdW5jdGlvbiBKZShlLHQpe3JldHVybiBRZShlWzBdLHQpfHxRZShlWzFdLHQpfWZ1bmN0aW9uIGV0KGUsdCxuKXt2YXIgcj1bXTtpZihKZSh0LGUpKXtyLnB1c2gobik7dmFyIG89UWUoZVswXSx0KSxhPVFlKGVbMV0sdCk7byYmci5wdXNoKFwiXCIuY29uY2F0KG4sXCJTdGFydFwiKSksYSYmci5wdXNoKFwiXCIuY29uY2F0KG4sXCJFbmRcIikpLG8mJmEmJnIucHVzaChcIlwiLmNvbmNhdChuLFwiQm90aEVuZHNcIikpfXJldHVybiByfWZ1bmN0aW9uIHR0KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9ZS52YWx1ZSxuPWUudmFsdWVUeXBlLHI9ZS5kYXRlLG89ZS5kYXRlVHlwZSxhPWUuaG92ZXIsaT1cInJlYWN0LWNhbGVuZGFyX190aWxlXCIsbD1baV07aWYoIXIpcmV0dXJuIGw7aWYoIUFycmF5LmlzQXJyYXkocikmJiFvKXRocm93IG5ldyBFcnJvcihcImdldFRpbGVDbGFzc2VzKCk6IFVuYWJsZSB0byBnZXQgdGlsZSBhY3Rpdml0eSBjbGFzc2VzIGJlY2F1c2Ugb25lIG9yIG1vcmUgcmVxdWlyZWQgYXJndW1lbnRzIHdlcmUgbm90IHBhc3NlZC5cIik7dmFyIGM9bmV3IERhdGUscz1BcnJheS5pc0FycmF5KHIpP3I6TGUobyxyKTtpZihRZShjLHMpJiZsLnB1c2goXCJcIi5jb25jYXQoaSxcIi0tbm93XCIpKSwhdClyZXR1cm4gbDtpZighQXJyYXkuaXNBcnJheSh0KSYmIW4pdGhyb3cgbmV3IEVycm9yKFwiZ2V0VGlsZUNsYXNzZXMoKTogVW5hYmxlIHRvIGdldCB0aWxlIGFjdGl2aXR5IGNsYXNzZXMgYmVjYXVzZSBvbmUgb3IgbW9yZSByZXF1aXJlZCBhcmd1bWVudHMgd2VyZSBub3QgcGFzc2VkLlwiKTt2YXIgdSxkLGY9QXJyYXkuaXNBcnJheSh0KT90OkxlKG4sdCk7ZD1zLCh1PWYpWzBdPD1kWzBdJiZ1WzFdPj1kWzFdP2wucHVzaChcIlwiLmNvbmNhdChpLFwiLS1hY3RpdmVcIikpOkplKGYscykmJmwucHVzaChcIlwiLmNvbmNhdChpLFwiLS1oYXNBY3RpdmVcIikpO3ZhciBwPWV0KGYscyxcIlwiLmNvbmNhdChpLFwiLS1yYW5nZVwiKSk7bC5wdXNoLmFwcGx5KGwsS2UocCkpO3ZhciBoPVtdLmNvbmNhdCh0KTtpZihhJiYxPT09aC5sZW5ndGgpe3ZhciBDPWV0KGE+ZlswXT9bZlswXSxhXTpbYSxmWzBdXSxzLFwiXCIuY29uY2F0KGksXCItLWhvdmVyXCIpKTtsLnB1c2guYXBwbHkobCxLZShDKSl9cmV0dXJuIGx9WWUucHJvcFR5cGVzPXtjaGlsZHJlbjppKCkubm9kZSxjbGFzc05hbWU6aSgpLnN0cmluZyxjb3VudDppKCkubnVtYmVyLmlzUmVxdWlyZWQsZGlyZWN0aW9uOmkoKS5zdHJpbmcsb2Zmc2V0OmkoKS5udW1iZXIsc3R5bGU6aSgpLm9iamVjdE9mKGkoKS5vbmVPZlR5cGUoW2koKS5zdHJpbmcsaSgpLm51bWJlcl0pKSx3cmFwOmkoKS5ib29sfTt2YXIgbnQ9W1wiY2xhc3NOYW1lXCIsXCJjb3VudFwiLFwiZGF0ZVRyYW5zZm9ybVwiLFwiZGF0ZVR5cGVcIixcImVuZFwiLFwiaG92ZXJcIixcIm9mZnNldFwiLFwic3RhcnRcIixcInN0ZXBcIixcInRpbGVcIixcInZhbHVlXCIsXCJ2YWx1ZVR5cGVcIl07ZnVuY3Rpb24gcnQoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIG90KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3J0KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7YXQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnJ0KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGF0KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBpdCgpe3JldHVybiBpdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGl0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBsdChlKXtmb3IodmFyIHQ9ZS5jbGFzc05hbWUsbj1lLmNvdW50LHI9dm9pZCAwPT09bj8zOm4sYT1lLmRhdGVUcmFuc2Zvcm0saT1lLmRhdGVUeXBlLGw9ZS5lbmQsYz1lLmhvdmVyLHM9ZS5vZmZzZXQsdT1lLnN0YXJ0LGQ9ZS5zdGVwLGY9dm9pZCAwPT09ZD8xOmQscD1lLnRpbGUsaD1lLnZhbHVlLEM9ZS52YWx1ZVR5cGUsdj1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsbnQpLGc9W10sbT11O208PWw7bSs9Zil7dmFyIHc9YShtKTtnLnB1c2gobygpLmNyZWF0ZUVsZW1lbnQocCxpdCh7a2V5OncuZ2V0VGltZSgpLGNsYXNzZXM6dHQoe3ZhbHVlOmgsdmFsdWVUeXBlOkMsZGF0ZTp3LGRhdGVUeXBlOmksaG92ZXI6Y30pLGRhdGU6dyxwb2ludDptfSx2KSkpfXJldHVybiBvKCkuY3JlYXRlRWxlbWVudChZZSx7Y2xhc3NOYW1lOnQsY291bnQ6cixvZmZzZXQ6cyx3cmFwOiEwfSxnKX1mdW5jdGlvbiBjdChlKXtyZXR1cm4gY3Q9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sY3QoZSl9ZnVuY3Rpb24gc3QoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHV0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3N0KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7Q3QoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnN0KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGR0KGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1mdW5jdGlvbiBmdChlLHQpe3JldHVybiBmdD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGZ0KGUsdCl9ZnVuY3Rpb24gcHQoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIGV9ZnVuY3Rpb24gaHQoZSl7cmV0dXJuIGh0PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxodChlKX1mdW5jdGlvbiBDdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gdnQoZSx0KXtyZXR1cm4gZSYmIXR8fCFlJiZ0fHxlJiZ0JiZlLmdldFRpbWUoKSE9PXQuZ2V0VGltZSgpfWZ1bmN0aW9uIGd0KGUsdCl7dmFyIG49ZS5hY3RpdmVTdGFydERhdGUscj1lLmRhdGUsbz1lLnZpZXc7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdD90KHthY3RpdmVTdGFydERhdGU6bixkYXRlOnIsdmlldzpvfSk6dH1sdC5wcm9wVHlwZXM9b3Qob3Qoe30sQmUpLHt9LHthY3RpdmVTdGFydERhdGU6aSgpLmluc3RhbmNlT2YoRGF0ZSksY291bnQ6aSgpLm51bWJlcixkYXRlVHJhbnNmb3JtOmkoKS5mdW5jLmlzUmVxdWlyZWQsZGF0ZVR5cGU6aSgpLnN0cmluZyxvZmZzZXQ6aSgpLm51bWJlcixzdGVwOmkoKS5udW1iZXIsdGlsZTppKCkuZnVuYy5pc1JlcXVpcmVkfSk7dmFyIG10PWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSx0JiZmdChlLHQpfShzLGUpO3ZhciB0LG4scixhLGksbD0oYT1zLGk9ZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmdW5jdGlvbigpe3ZhciBlLHQ9aHQoYSk7aWYoaSl7dmFyIG49aHQodGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdCh0LGFyZ3VtZW50cyxuKX1lbHNlIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKFwib2JqZWN0XCI9PT1jdCh0KXx8XCJmdW5jdGlvblwiPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7cmV0dXJuIHB0KGUpfSh0aGlzLGUpfSk7ZnVuY3Rpb24gcygpe3ZhciBlOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMscyk7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1hcmd1bWVudHNbcl07cmV0dXJuIEN0KHB0KGU9bC5jYWxsLmFwcGx5KGwsW3RoaXNdLmNvbmNhdChuKSkpLFwic3RhdGVcIix7fSksZX1yZXR1cm4gdD1zLHI9W3trZXk6XCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPWUuYWN0aXZlU3RhcnREYXRlLHI9ZS50aWxlQ2xhc3NOYW1lLG89ZS50aWxlQ29udGVudCxhPXt9O3JldHVybihyIT09dC50aWxlQ2xhc3NOYW1lUHJvcHN8fHZ0KG4sdC5hY3RpdmVTdGFydERhdGVQcm9wcykpJiYoYS50aWxlQ2xhc3NOYW1lPWd0KGUsciksYS50aWxlQ2xhc3NOYW1lUHJvcHM9ciksKG8hPT10LnRpbGVDb250ZW50UHJvcHN8fHZ0KG4sdC5hY3RpdmVTdGFydERhdGVQcm9wcykpJiYoYS50aWxlQ29udGVudD1ndChlLG8pLGEudGlsZUNvbnRlbnRQcm9wcz1vKSxhLmFjdGl2ZVN0YXJ0RGF0ZVByb3BzPW4sYX19XSwobj1be2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuYWN0aXZlU3RhcnREYXRlLG49ZS5jaGlsZHJlbixyPWUuY2xhc3NlcyxhPWUuZGF0ZSxpPWUuZm9ybWF0QWJicixsPWUubG9jYWxlLHM9ZS5tYXhEYXRlLHU9ZS5tYXhEYXRlVHJhbnNmb3JtLGQ9ZS5taW5EYXRlLGY9ZS5taW5EYXRlVHJhbnNmb3JtLHA9ZS5vbkNsaWNrLGg9ZS5vbk1vdXNlT3ZlcixDPWUuc3R5bGUsdj1lLnRpbGVEaXNhYmxlZCxnPWUudmlldyxtPXRoaXMuc3RhdGUsdz1tLnRpbGVDbGFzc05hbWUseT1tLnRpbGVDb250ZW50O3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHtjbGFzc05hbWU6YyhyLHcpLGRpc2FibGVkOmQmJmYoZCk+YXx8cyYmdShzKTxhfHx2JiZ2KHthY3RpdmVTdGFydERhdGU6dCxkYXRlOmEsdmlldzpnfSksb25DbGljazpwJiZmdW5jdGlvbihlKXtyZXR1cm4gcChhLGUpfSxvbkZvY3VzOmgmJmZ1bmN0aW9uKCl7cmV0dXJuIGgoYSl9LG9uTW91c2VPdmVyOmgmJmZ1bmN0aW9uKCl7cmV0dXJuIGgoYSl9LHN0eWxlOkMsdHlwZTpcImJ1dHRvblwifSxpP28oKS5jcmVhdGVFbGVtZW50KFwiYWJiclwiLHtcImFyaWEtbGFiZWxcIjppKGwsYSl9LG4pOm4seSl9fV0pJiZkdCh0LnByb3RvdHlwZSxuKSxyJiZkdCh0LHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksc30oci5Db21wb25lbnQpO210LnByb3BUeXBlcz11dCh1dCh7fSxUZSkse30se2NoaWxkcmVuOmkoKS5ub2RlLmlzUmVxdWlyZWQsZm9ybWF0QWJicjppKCkuZnVuYyxtYXhEYXRlVHJhbnNmb3JtOmkoKS5mdW5jLmlzUmVxdWlyZWQsbWluRGF0ZVRyYW5zZm9ybTppKCkuZnVuYy5pc1JlcXVpcmVkfSk7dmFyIHd0PVtcImNsYXNzZXNcIixcImZvcm1hdFllYXJcIl07ZnVuY3Rpb24geXQoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGJ0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3l0KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7eHQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnl0KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIHh0KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBPdCgpe3JldHVybiBPdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LE90LmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgTHQ9XCJyZWFjdC1jYWxlbmRhcl9fY2VudHVyeS12aWV3X19kZWNhZGVzX19kZWNhZGVcIjtmdW5jdGlvbiBNdChlKXt2YXIgdD1lLmNsYXNzZXMsbj1lLmZvcm1hdFllYXIscj12b2lkIDA9PT1uP2ZlOm4sYT1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsd3QpLGk9YS5kYXRlLGw9YS5sb2NhbGU7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KG10LE90KHt9LGEse2NsYXNzZXM6W10uY29uY2F0KHQsTHQpLG1heERhdGVUcmFuc2Zvcm06UCxtaW5EYXRlVHJhbnNmb3JtOl8sdmlldzpcImNlbnR1cnlcIn0pLFNlKGwscixpKSl9ZnVuY3Rpb24gU3QoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIF90KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBqdCgpe3JldHVybiBqdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGp0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBFdChlKXt2YXIgdD1tKGIoZS5hY3RpdmVTdGFydERhdGUpKSxuPXQrOTk7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KGx0LGp0KHt9LGUse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX19jZW50dXJ5LXZpZXdfX2RlY2FkZXNcIixkYXRlVHJhbnNmb3JtOl8sZGF0ZVR5cGU6XCJkZWNhZGVcIixlbmQ6bixzdGFydDp0LHN0ZXA6MTAsdGlsZTpNdH0pKX1mdW5jdGlvbiBQdChlKXtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX2NlbnR1cnktdmlld1wifSxvKCkuY3JlYXRlRWxlbWVudChFdCxlKSl9TXQucHJvcFR5cGVzPWJ0KGJ0KHt9LFRlKSx7fSx7Zm9ybWF0WWVhcjppKCkuZnVuY30pLEV0LnByb3BUeXBlcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9TdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe190KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpTdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX0oe30sQmUpO3ZhciBrdD1bXCJjbGFzc2VzXCIsXCJmb3JtYXRZZWFyXCJdO2Z1bmN0aW9uIEh0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBWdChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9IdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe1J0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpIdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBSdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gSXQoKXtyZXR1cm4gSXQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxJdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIFp0PVwicmVhY3QtY2FsZW5kYXJfX2RlY2FkZS12aWV3X195ZWFyc19feWVhclwiO2Z1bmN0aW9uIEF0KGUpe3ZhciB0PWUuY2xhc3NlcyxuPWUuZm9ybWF0WWVhcixyPXZvaWQgMD09PW4/ZmU6bixhPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxrdCksaT1hLmRhdGUsbD1hLmxvY2FsZTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQobXQsSXQoe30sYSx7Y2xhc3NlczpbXS5jb25jYXQodCxadCksbWF4RGF0ZVRyYW5zZm9ybTpaLG1pbkRhdGVUcmFuc2Zvcm06Vix2aWV3OlwiZGVjYWRlXCJ9KSxyKGwsaSkpfWZ1bmN0aW9uIER0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBCdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gVHQoKXtyZXR1cm4gVHQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxUdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gJHQoZSl7dmFyIHQ9bShfKGUuYWN0aXZlU3RhcnREYXRlKSksbj10Kzk7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KGx0LFR0KHt9LGUse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX19kZWNhZGUtdmlld19feWVhcnNcIixkYXRlVHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlO3JldHVybiB0LnNldEZ1bGxZZWFyKGUsMCwxKSx0LnNldEhvdXJzKDAsMCwwLDApLHR9LGRhdGVUeXBlOlwieWVhclwiLGVuZDpuLHN0YXJ0OnQsdGlsZTpBdH0pKX1mdW5jdGlvbiBGdChlKXtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX2RlY2FkZS12aWV3XCJ9LG8oKS5jcmVhdGVFbGVtZW50KCR0LGUpKX1BdC5wcm9wVHlwZXM9VnQoVnQoe30sVGUpLHt9LHtmb3JtYXRZZWFyOmkoKS5mdW5jfSksJHQucHJvcFR5cGVzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP0R0KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7QnQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOkR0KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfSh7fSxCZSk7dmFyIFd0PVtcImNsYXNzZXNcIixcImZvcm1hdE1vbnRoXCIsXCJmb3JtYXRNb250aFllYXJcIl07ZnVuY3Rpb24gTnQoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHp0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP050KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7VXQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOk50KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIFV0KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBHdCgpe3JldHVybiBHdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LEd0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgcXQ9XCJyZWFjdC1jYWxlbmRhcl9feWVhci12aWV3X19tb250aHNfX21vbnRoXCI7ZnVuY3Rpb24gWXQoZSl7dmFyIHQ9ZS5jbGFzc2VzLG49ZS5mb3JtYXRNb250aCxyPXZvaWQgMD09PW4/Y2U6bixhPWUuZm9ybWF0TW9udGhZZWFyLGk9dm9pZCAwPT09YT9zZTphLGw9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFd0KSxjPWwuZGF0ZSxzPWwubG9jYWxlO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChtdCxHdCh7fSxsLHtjbGFzc2VzOltdLmNvbmNhdCh0LHF0KSxmb3JtYXRBYmJyOmksbWF4RGF0ZVRyYW5zZm9ybTpXLG1pbkRhdGVUcmFuc2Zvcm06VCx2aWV3OlwieWVhclwifSkscihzLGMpKX1mdW5jdGlvbiBLdChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gWHQoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/S3QoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtRdChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6S3QoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gUXQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIEp0KCl7cmV0dXJuIEp0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sSnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGVuKGUpe3ZhciB0PW0oZS5hY3RpdmVTdGFydERhdGUpO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChsdCxKdCh7fSxlLHtjbGFzc05hbWU6XCJyZWFjdC1jYWxlbmRhcl9feWVhci12aWV3X19tb250aHNcIixkYXRlVHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiBuLnNldEZ1bGxZZWFyKHQsZSwxKSxuLnNldEhvdXJzKDAsMCwwLDApLG59LGRhdGVUeXBlOlwibW9udGhcIixlbmQ6MTEsc3RhcnQ6MCx0aWxlOll0fSkpfWZ1bmN0aW9uIHRuKGUpe3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6XCJyZWFjdC1jYWxlbmRhcl9feWVhci12aWV3XCJ9LG8oKS5jcmVhdGVFbGVtZW50KGVuLGUpKX1ZdC5wcm9wVHlwZXM9enQoenQoe30sVGUpLHt9LHtmb3JtYXRNb250aDppKCkuZnVuYyxmb3JtYXRNb250aFllYXI6aSgpLmZ1bmN9KSxlbi5wcm9wVHlwZXM9WHQoWHQoe30sQmUpLHt9LHtsb2NhbGU6aSgpLnN0cmluZ30pO3ZhciBubj1bXCJmb3JtYXREYXlcIixcImZvcm1hdExvbmdEYXRlXCIsXCJjYWxlbmRhclR5cGVcIixcImNsYXNzZXNcIixcImN1cnJlbnRNb250aEluZGV4XCJdO2Z1bmN0aW9uIHJuKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9ybihPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2FuKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpybihPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBhbihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gbG4oKXtyZXR1cm4gbG49T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxsbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIGNuPVwicmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX2RheXNfX2RheVwiO2Z1bmN0aW9uIHNuKGUpe3ZhciB0PWUuZm9ybWF0RGF5LG49dm9pZCAwPT09dD9pZTp0LHI9ZS5mb3JtYXRMb25nRGF0ZSxhPXZvaWQgMD09PXI/bGU6cixpPWUuY2FsZW5kYXJUeXBlLGw9ZS5jbGFzc2VzLGM9ZS5jdXJyZW50TW9udGhJbmRleCxzPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxubiksdT1zLmRhdGUsZD1zLmxvY2FsZTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQobXQsbG4oe30scyx7Y2xhc3NlczpbXS5jb25jYXQobCxjbixfZSh1LGkpP1wiXCIuY29uY2F0KGNuLFwiLS13ZWVrZW5kXCIpOm51bGwsdS5nZXRNb250aCgpIT09Yz9cIlwiLmNvbmNhdChjbixcIi0tbmVpZ2hib3JpbmdNb250aFwiKTpudWxsKSxmb3JtYXRBYmJyOmEsbWF4RGF0ZVRyYW5zZm9ybTpZLG1pbkRhdGVUcmFuc2Zvcm06Ryx2aWV3OlwibW9udGhcIn0pLG4oZCx1KSl9c24ucHJvcFR5cGVzPW9uKG9uKHt9LFRlKSx7fSx7Y3VycmVudE1vbnRoSW5kZXg6aSgpLm51bWJlci5pc1JlcXVpcmVkLGZvcm1hdERheTppKCkuZnVuYyxmb3JtYXRMb25nRGF0ZTppKCkuZnVuY30pO3ZhciB1bj1bXCJzaG93Rml4ZWROdW1iZXJPZldlZWtzXCIsXCJzaG93TmVpZ2hib3JpbmdNb250aFwiXTtmdW5jdGlvbiBkbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gZm4oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHBuKCl7cmV0dXJuIHBuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0scG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGhuKGUpe3ZhciB0PWUuYWN0aXZlU3RhcnREYXRlLG49ZS5jYWxlbmRhclR5cGUscj1lLnNob3dGaXhlZE51bWJlck9mV2Vla3MsYT1lLnNob3dOZWlnaGJvcmluZ01vbnRoLGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLHVuKSxsPW0odCksYz13KHQpLHM9cnx8YSx1PXZlKHQsbiksZD1zPzA6dSxmPTErKHM/LXU6MCkscD1mdW5jdGlvbigpe2lmKHIpcmV0dXJuIGYrNDItMTt2YXIgZT1YKHQpO2lmKGEpe3ZhciBvPW5ldyBEYXRlO3JldHVybiBvLnNldEZ1bGxZZWFyKGwsYyxlKSxvLnNldEhvdXJzKDAsMCwwLDApLGUrKDctdmUobyxuKS0xKX1yZXR1cm4gZX0oKTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQobHQscG4oe30saSx7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX2RheXNcIixjb3VudDo3LGN1cnJlbnRNb250aEluZGV4OmMsZGF0ZVRyYW5zZm9ybTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgRGF0ZTtyZXR1cm4gdC5zZXRGdWxsWWVhcihsLGMsZSksdC5zZXRIb3VycygwLDAsMCwwKSx0fSxkYXRlVHlwZTpcImRheVwiLGVuZDpwLG9mZnNldDpkLHN0YXJ0OmYsdGlsZTpzbn0pKX1obi5wcm9wVHlwZXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/ZG4oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtmbihlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZG4oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9KHtjYWxlbmRhclR5cGU6a2UuaXNSZXF1aXJlZCxzaG93Rml4ZWROdW1iZXJPZldlZWtzOmkoKS5ib29sLHNob3dOZWlnaGJvcmluZ01vbnRoOmkoKS5ib29sfSxCZSk7dmFyIENuPVwicmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzXCIsdm49XCJcIi5jb25jYXQoQ24sXCJfX3dlZWtkYXlcIik7ZnVuY3Rpb24gZ24oZSl7Zm9yKHZhciB0PWUuY2FsZW5kYXJUeXBlLG49ZS5mb3JtYXRTaG9ydFdlZWtkYXkscj12b2lkIDA9PT1uP3VlOm4sYT1lLmZvcm1hdFdlZWtkYXksaT12b2lkIDA9PT1hP2RlOmEsbD1lLmxvY2FsZSxzPWUub25Nb3VzZUxlYXZlLHU9VChuZXcgRGF0ZSksZD1tKHUpLGY9dyh1KSxwPVtdLGg9MTtoPD03O2grPTEpe3ZhciBDPW5ldyBEYXRlKGQsZixoLXZlKHUsdCkpLHY9aShsLEMpO3AucHVzaChvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtrZXk6aCxjbGFzc05hbWU6Yyh2bixfZShDLHQpJiZcIlwiLmNvbmNhdCh2bixcIi0td2Vla2VuZFwiKSl9LG8oKS5jcmVhdGVFbGVtZW50KFwiYWJiclwiLHtcImFyaWEtbGFiZWxcIjp2LHRpdGxlOnZ9LHIobCxDKS5yZXBsYWNlKFwiLlwiLFwiXCIpKSkpfXJldHVybiBvKCkuY3JlYXRlRWxlbWVudChZZSx7Y2xhc3NOYW1lOkNuLGNvdW50Ojcsb25Gb2N1czpzLG9uTW91c2VPdmVyOnN9LHApfWduLnByb3BUeXBlcz17Y2FsZW5kYXJUeXBlOmtlLmlzUmVxdWlyZWQsZm9ybWF0U2hvcnRXZWVrZGF5OmkoKS5mdW5jLGZvcm1hdFdlZWtkYXk6aSgpLmZ1bmMsbG9jYWxlOmkoKS5zdHJpbmcsb25Nb3VzZUxlYXZlOmkoKS5mdW5jfTt2YXIgbW49W1wiZGF0ZVwiLFwib25DbGlja1dlZWtOdW1iZXJcIixcIndlZWtOdW1iZXJcIl07ZnVuY3Rpb24gd24oKXtyZXR1cm4gd249T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSx3bi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24geW4oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGJuKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgeG49XCJyZWFjdC1jYWxlbmRhcl9fdGlsZVwiO2Z1bmN0aW9uIE9uKGUpe3ZhciB0PWUuZGF0ZSxuPWUub25DbGlja1dlZWtOdW1iZXIscj1lLndlZWtOdW1iZXIsYT1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsbW4pLGk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/eW4oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtibihlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6eW4oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9KHtjbGFzc05hbWU6eG59LGEpLGw9bygpLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsbnVsbCxyKTtyZXR1cm4gbj9vKCkuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHduKHt9LGkse29uQ2xpY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIG4ocix0LGUpfSx0eXBlOlwiYnV0dG9uXCJ9KSxsKTpvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLGksbCl9ZnVuY3Rpb24gTG4oZSl7dmFyIHQ9ZS5hY3RpdmVTdGFydERhdGUsbj1lLmNhbGVuZGFyVHlwZSxyPWUub25DbGlja1dlZWtOdW1iZXIsYT1lLm9uTW91c2VMZWF2ZSxpPWUuc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrcyxsPWZ1bmN0aW9uKCl7aWYoaSlyZXR1cm4gNjt2YXIgZT1YKHQpLSg3LXZlKHQsbikpO3JldHVybiAxK01hdGguY2VpbChlLzcpfSgpLGM9ZnVuY3Rpb24oKXtmb3IodmFyIGU9bSh0KSxyPXcodCksbz15KHQpLGE9W10saT0wO2k8bDtpKz0xKWEucHVzaChnZShuZXcgRGF0ZShlLHIsbys3KmkpLG4pKTtyZXR1cm4gYX0oKSxzPWMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQsbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGUuSVNPXzg2MDEscj1uPT09dGUuVVM/dGUuVVM6dGUuSVNPXzg2MDEsbz1nZShlLG4pLGE9bShlKSsxO2Rve3Q9Z2UobmV3IERhdGUoYSwwLHI9PT10ZS5JU09fODYwMT80OjEpLG4pLGEtPTF9d2hpbGUoZTx0KTtyZXR1cm4gTWF0aC5yb3VuZCgoby10KS82MDQ4ZTUpKzF9KGUsbil9KSk7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFllLHtjbGFzc05hbWU6XCJyZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fd2Vla051bWJlcnNcIixjb3VudDpsLGRpcmVjdGlvbjpcImNvbHVtblwiLG9uRm9jdXM6YSxvbk1vdXNlT3ZlcjphLHN0eWxlOntmbGV4QmFzaXM6XCJjYWxjKDEwMCUgKiAoMSAvIDgpXCIsZmxleFNocmluazowfX0scy5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KE9uLHtrZXk6ZSxkYXRlOmNbdF0sb25DbGlja1dlZWtOdW1iZXI6cix3ZWVrTnVtYmVyOmV9KX0pKSl9T24ucHJvcFR5cGVzPXtkYXRlOmkoKS5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsb25DbGlja1dlZWtOdW1iZXI6aSgpLmZ1bmMsd2Vla051bWJlcjppKCkubm9kZS5pc1JlcXVpcmVkfSxMbi5wcm9wVHlwZXM9e2FjdGl2ZVN0YXJ0RGF0ZTppKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLGNhbGVuZGFyVHlwZTprZS5pc1JlcXVpcmVkLG9uQ2xpY2tXZWVrTnVtYmVyOmkoKS5mdW5jLG9uTW91c2VMZWF2ZTppKCkuZnVuYyxzaG93Rml4ZWROdW1iZXJPZldlZWtzOmkoKS5ib29sfTt2YXIgTW49W1wiY2FsZW5kYXJUeXBlXCIsXCJmb3JtYXRTaG9ydFdlZWtkYXlcIixcImZvcm1hdFdlZWtkYXlcIixcIm9uQ2xpY2tXZWVrTnVtYmVyXCIsXCJzaG93V2Vla051bWJlcnNcIl07ZnVuY3Rpb24gU24oKXtyZXR1cm4gU249T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxTbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gX24oZSl7dmFyIHQ9ZS5hY3RpdmVTdGFydERhdGUsbj1lLmxvY2FsZSxyPWUub25Nb3VzZUxlYXZlLGE9ZS5zaG93Rml4ZWROdW1iZXJPZldlZWtzLGk9ZS5jYWxlbmRhclR5cGUsbD12b2lkIDA9PT1pP2Z1bmN0aW9uKGUpe3JldHVybiBPYmplY3Qua2V5cyhuZSkuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIG5lW3RdLmluY2x1ZGVzKGUpfSkpfHx0ZS5JU09fODYwMX0obik6aSxzPWUuZm9ybWF0U2hvcnRXZWVrZGF5LHU9ZS5mb3JtYXRXZWVrZGF5LGQ9ZS5vbkNsaWNrV2Vla051bWJlcixmPWUuc2hvd1dlZWtOdW1iZXJzLHA9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLE1uKSxoPVwicmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdcIjtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOmMoaCxmP1wiXCIuY29uY2F0KGgsXCItLXdlZWtOdW1iZXJzXCIpOlwiXCIpfSxvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdHlsZTp7ZGlzcGxheTpcImZsZXhcIixhbGlnbkl0ZW1zOlwiZmxleC1lbmRcIn19LGY/bygpLmNyZWF0ZUVsZW1lbnQoTG4se2FjdGl2ZVN0YXJ0RGF0ZTp0LGNhbGVuZGFyVHlwZTpsLG9uQ2xpY2tXZWVrTnVtYmVyOmQsb25Nb3VzZUxlYXZlOnIsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczphfSk6bnVsbCxvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdHlsZTp7ZmxleEdyb3c6MSx3aWR0aDpcIjEwMCVcIn19LG8oKS5jcmVhdGVFbGVtZW50KGduLHtjYWxlbmRhclR5cGU6bCxmb3JtYXRTaG9ydFdlZWtkYXk6cyxmb3JtYXRXZWVrZGF5OnUsbG9jYWxlOm4sb25Nb3VzZUxlYXZlOnJ9KSxvKCkuY3JlYXRlRWxlbWVudChobixTbih7Y2FsZW5kYXJUeXBlOmx9LHApKSkpKX1fbi5wcm9wVHlwZXM9e2FjdGl2ZVN0YXJ0RGF0ZTppKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLGNhbGVuZGFyVHlwZTprZSxmb3JtYXRTaG9ydFdlZWtkYXk6aSgpLmZ1bmMsZm9ybWF0V2Vla2RheTppKCkuZnVuYyxsb2NhbGU6aSgpLnN0cmluZyxvbkNsaWNrV2Vla051bWJlcjppKCkuZnVuYyxvbk1vdXNlTGVhdmU6aSgpLmZ1bmMsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczppKCkuYm9vbCxzaG93V2Vla051bWJlcnM6aSgpLmJvb2x9O3ZhciBqbj1bXCJhY3RpdmVTdGFydERhdGVcIixcImRlZmF1bHRBY3RpdmVTdGFydERhdGVcIixcImRlZmF1bHRWYWx1ZVwiLFwiZGVmYXVsdFZpZXdcIixcIm1heERldGFpbFwiLFwibWluRGV0YWlsXCIsXCJ2YWx1ZVwiLFwidmlld1wiXTtmdW5jdGlvbiBFbigpe3JldHVybiBFbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LEVuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBQbihlKXtyZXR1cm4gUG49XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sUG4oZSl9ZnVuY3Rpb24ga24oZSx0KXtyZXR1cm4ga249T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxrbihlLHQpfWZ1bmN0aW9uIEhuKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiBlfWZ1bmN0aW9uIFZuKGUpe3JldHVybiBWbj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sVm4oZSl9ZnVuY3Rpb24gUm4oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIEluKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1JuKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7Wm4oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlJuKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIFpuKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBBbihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBEbj1uZXcgRGF0ZTtEbi5zZXRGdWxsWWVhcigxLDAsMSksRG4uc2V0SG91cnMoMCwwLDAsMCk7dmFyIEJuPW5ldyBEYXRlKDg2NGUxMyksVG49XCJyZWFjdC1jYWxlbmRhclwiLCRuPVtcImNlbnR1cnlcIixcImRlY2FkZVwiLFwieWVhclwiLFwibW9udGhcIl0sRm49W10uY29uY2F0KGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBBbihlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVtcIkBAaXRlcmF0b3JcIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBBbihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm5cIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4/QXJyYXkuZnJvbShlKTpcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/QW4oZSx0KTp2b2lkIDB9fShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX0oJG4uc2xpY2UoMSkpLFtcImRheVwiXSk7ZnVuY3Rpb24gV24oZSx0KXtyZXR1cm4gJG4uc2xpY2UoJG4uaW5kZXhPZihlKSwkbi5pbmRleE9mKHQpKzEpfWZ1bmN0aW9uIE5uKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybi0xIT09V24odCxuKS5pbmRleE9mKGUpfShlLHQsbik/ZTpufWZ1bmN0aW9uIHpuKGUpe3JldHVybiBGblskbi5pbmRleE9mKGUpXX1mdW5jdGlvbiBVbihlLHQpe3ZhciBuPWUudmFsdWUscj1lLm1pbkRhdGUsbz1lLm1heERhdGUsYT1lLm1heERldGFpbCxpPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuIG51bGw7dmFyIG49QXJyYXkuaXNBcnJheShlKSYmMj09PWUubGVuZ3RoP2VbdF06ZTtpZighbilyZXR1cm4gbnVsbDt2YXIgcj1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIERhdGU/ZTpuZXcgRGF0ZShlKX0obik7aWYoaXNOYU4oci5nZXRUaW1lKCkpKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZGF0ZTogXCIuY29uY2F0KGUpKTtyZXR1cm4gcn0obix0KTtpZighaSlyZXR1cm4gbnVsbDt2YXIgbD16bihhKTtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiZ0PmU/dDpuJiZuPGU/bjplfShbbWUseGVdW3RdKGwsaSkscixvKX12YXIgR249ZnVuY3Rpb24oZSl7cmV0dXJuIFVuKGUsMCl9LHFuPWZ1bmN0aW9uKGUpe3JldHVybiBVbihlLDEpfSxZbj1mdW5jdGlvbihlKXt2YXIgdD1lLnZhbHVlO3JldHVybiBBcnJheS5pc0FycmF5KHQpP3Q6W0duLHFuXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0KGUpfSkpfTtmdW5jdGlvbiBLbihlKXt2YXIgdD1lLm1heERhdGUsbj1lLm1heERldGFpbCxyPWUubWluRGF0ZSxvPWUubWluRGV0YWlsLGE9ZS52YWx1ZTtyZXR1cm4gbWUoTm4oZS52aWV3LG8sbiksR24oe3ZhbHVlOmEsbWluRGF0ZTpyLG1heERhdGU6dCxtYXhEZXRhaWw6bn0pfHxuZXcgRGF0ZSl9dmFyIFhuPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYxPT09W10uY29uY2F0KGUpLmxlbmd0aH0sUW49ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInByb3RvdHlwZVwiLHt3cml0YWJsZTohMX0pLHQmJmtuKGUsdCl9KGwsZSk7dmFyIHQsbixyLGEsaT0ocj1sLGE9ZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmdW5jdGlvbigpe3ZhciBlLHQ9Vm4ocik7aWYoYSl7dmFyIG49Vm4odGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdCh0LGFyZ3VtZW50cyxuKX1lbHNlIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKFwib2JqZWN0XCI9PT1Qbih0KXx8XCJmdW5jdGlvblwiPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7cmV0dXJuIEhuKGUpfSh0aGlzLGUpfSk7ZnVuY3Rpb24gbCgpe3ZhciBlOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsbCk7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1hcmd1bWVudHNbcl07cmV0dXJuIFpuKEhuKGU9aS5jYWxsLmFwcGx5KGksW3RoaXNdLmNvbmNhdChuKSkpLFwic3RhdGVcIix7YWN0aXZlU3RhcnREYXRlOmUucHJvcHMuZGVmYXVsdEFjdGl2ZVN0YXJ0RGF0ZSx2YWx1ZTplLnByb3BzLmRlZmF1bHRWYWx1ZSx2aWV3OmUucHJvcHMuZGVmYXVsdFZpZXd9KSxabihIbihlKSxcInNldFN0YXRlQW5kQ2FsbENhbGxiYWNrc1wiLChmdW5jdGlvbih0LG4scil7dmFyIG89SG4oZSksYT1vLmFjdGl2ZVN0YXJ0RGF0ZSxpPW8udmlldyxsPWUucHJvcHMsYz1sLmFsbG93UGFydGlhbFJhbmdlLHM9bC5vbkFjdGl2ZVN0YXJ0RGF0ZUNoYW5nZSx1PWwub25DaGFuZ2UsZD1sLm9uVmlld0NoYW5nZSxmPWwuc2VsZWN0UmFuZ2UscD17YWN0aXZlU3RhcnREYXRlOmEsdmlldzppfTtlLnNldFN0YXRlKHQsKGZ1bmN0aW9uKCl7dmFyIG89e2FjdGlvbjp0LmFjdGlvbixhY3RpdmVTdGFydERhdGU6dC5hY3RpdmVTdGFydERhdGV8fGUuYWN0aXZlU3RhcnREYXRlLHZhbHVlOnQudmFsdWV8fGUudmFsdWUsdmlldzp0LnZpZXd8fGUudmlld307ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSBpbiB0JiYoUG4odFtlXSkhPT1QbihwW2VdKXx8KHRbZV1pbnN0YW5jZW9mIERhdGU/dFtlXS5nZXRUaW1lKCkhPT1wW2VdLmdldFRpbWUoKTp0W2VdIT09cFtlXSkpfWEoXCJhY3RpdmVTdGFydERhdGVcIikmJnMmJnMobyksYShcInZpZXdcIikmJmQmJmQobyksYShcInZhbHVlXCIpJiZ1JiYoZiYmWG4odC52YWx1ZSk/YyYmdShbdC52YWx1ZV0sbik6dSh0LnZhbHVlLG4pKSxyJiZyKG8pfSkpfSkpLFpuKEhuKGUpLFwic2V0QWN0aXZlU3RhcnREYXRlXCIsKGZ1bmN0aW9uKHQsbil7ZS5zZXRTdGF0ZUFuZENhbGxDYWxsYmFja3Moe2FjdGlvbjpuLGFjdGl2ZVN0YXJ0RGF0ZTp0fSl9KSksWm4oSG4oZSksXCJkcmlsbERvd25cIiwoZnVuY3Rpb24odCxuKXtpZihlLmRyaWxsRG93bkF2YWlsYWJsZSl7ZS5vbkNsaWNrVGlsZSh0LG4pO3ZhciByPUhuKGUpLG89ci52aWV3LGE9ci52aWV3cyxpPWUucHJvcHMub25EcmlsbERvd24sbD1hW2EuaW5kZXhPZihvKSsxXTtlLnNldFN0YXRlQW5kQ2FsbENhbGxiYWNrcyh7YWN0aW9uOlwiZHJpbGxEb3duXCIsYWN0aXZlU3RhcnREYXRlOnQsdmlldzpsfSx2b2lkIDAsaSl9fSkpLFpuKEhuKGUpLFwiZHJpbGxVcFwiLChmdW5jdGlvbigpe2lmKGUuZHJpbGxVcEF2YWlsYWJsZSl7dmFyIHQ9SG4oZSksbj10LmFjdGl2ZVN0YXJ0RGF0ZSxyPXQudmlldyxvPXQudmlld3MsYT1lLnByb3BzLm9uRHJpbGxVcCxpPW9bby5pbmRleE9mKHIpLTFdLGw9bWUoaSxuKTtlLnNldFN0YXRlQW5kQ2FsbENhbGxiYWNrcyh7YWN0aW9uOlwiZHJpbGxVcFwiLGFjdGl2ZVN0YXJ0RGF0ZTpsLHZpZXc6aX0sdm9pZCAwLGEpfX0pKSxabihIbihlKSxcIm9uQ2hhbmdlXCIsKGZ1bmN0aW9uKHQsbil7dmFyIHI9SG4oZSkudmFsdWUsbz1lLnByb3BzLGE9by5nb1RvUmFuZ2VTdGFydE9uU2VsZWN0LGk9by5zZWxlY3RSYW5nZTtlLm9uQ2xpY2tUaWxlKHQsbik7dmFyIGwsYyxzLHU9aSYmIVhuKHIpO2lmKGkpe3ZhciBkPUhuKGUpLnZhbHVlVHlwZTtsPXU/bWUoZCx0KTpbbWUoYz1kLChzPVtyLHRdLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUtdH0pKSlbMF0pLHhlKGMsc1sxXSldfWVsc2UgbD1lLmdldFByb2Nlc3NlZFZhbHVlKHQpO3ZhciBmPSFpfHx1fHxhP0tuKEluKEluKHt9LGUucHJvcHMpLHt9LHt2YWx1ZTpsfSkpOm51bGw7bi5wZXJzaXN0KCksZS5zZXRTdGF0ZUFuZENhbGxDYWxsYmFja3Moe2FjdGlvbjpcIm9uQ2hhbmdlXCIsYWN0aXZlU3RhcnREYXRlOmYsdmFsdWU6bH0sbil9KSksWm4oSG4oZSksXCJvbkNsaWNrVGlsZVwiLChmdW5jdGlvbih0LG4pe3ZhciByPUhuKGUpLnZpZXcsbz1lLnByb3BzLGE9by5vbkNsaWNrRGF5LGk9by5vbkNsaWNrRGVjYWRlLGw9by5vbkNsaWNrTW9udGgsYz1vLm9uQ2xpY2tZZWFyLHM9ZnVuY3Rpb24oKXtzd2l0Y2gocil7Y2FzZVwiY2VudHVyeVwiOnJldHVybiBpO2Nhc2VcImRlY2FkZVwiOnJldHVybiBjO2Nhc2VcInllYXJcIjpyZXR1cm4gbDtjYXNlXCJtb250aFwiOnJldHVybiBhO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB2aWV3OiBcIi5jb25jYXQocixcIi5cIikpfX0oKTtzJiZzKHQsbil9KSksWm4oSG4oZSksXCJvbk1vdXNlT3ZlclwiLChmdW5jdGlvbih0KXtlLnNldFN0YXRlKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ob3ZlciYmZS5ob3Zlci5nZXRUaW1lKCk9PT10LmdldFRpbWUoKT9udWxsOntob3Zlcjp0fX0pKX0pKSxabihIbihlKSxcIm9uTW91c2VMZWF2ZVwiLChmdW5jdGlvbigpe2Uuc2V0U3RhdGUoe2hvdmVyOm51bGx9KX0pKSxlfXJldHVybiB0PWwsbj1be2tleTpcImFjdGl2ZVN0YXJ0RGF0ZVwiLGdldDpmdW5jdGlvbigpe3ZhciBlLHQsbixyLG8sYSxpLGwsYyxzLHUsZCxmPXRoaXMucHJvcHMuYWN0aXZlU3RhcnREYXRlLHA9dGhpcy5zdGF0ZS5hY3RpdmVTdGFydERhdGU7cmV0dXJuIGZ8fHB8fCh0PShlPXRoaXMucHJvcHMpLmFjdGl2ZVN0YXJ0RGF0ZSxuPWUuZGVmYXVsdEFjdGl2ZVN0YXJ0RGF0ZSxyPWUuZGVmYXVsdFZhbHVlLG89ZS5kZWZhdWx0VmlldyxhPWUubWF4RGV0YWlsLGk9ZS5taW5EZXRhaWwsbD1lLnZhbHVlLGM9ZS52aWV3LHM9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLGpuKSx1PU5uKGMsaSxhKSwoZD10fHxuKT9tZSh1LGQpOktuKEluKHttYXhEZXRhaWw6YSxtaW5EZXRhaWw6aSx2YWx1ZTpsfHxyLHZpZXc6Y3x8b30scykpKX19LHtrZXk6XCJ2YWx1ZVwiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLnNlbGVjdFJhbmdlLG49ZS52YWx1ZSxyPXRoaXMuc3RhdGUudmFsdWU7cmV0dXJuIHQmJlhuKHIpP3I6dm9pZCAwIT09bj9uOnJ9fSx7a2V5OlwidmFsdWVUeXBlXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHpuKHRoaXMucHJvcHMubWF4RGV0YWlsKX19LHtrZXk6XCJ2aWV3XCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUubWluRGV0YWlsLG49ZS5tYXhEZXRhaWwscj1lLnZpZXcsbz10aGlzLnN0YXRlLnZpZXc7cmV0dXJuIE5uKHJ8fG8sdCxuKX19LHtrZXk6XCJ2aWV3c1wiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHM7cmV0dXJuIFduKGUubWluRGV0YWlsLGUubWF4RGV0YWlsKX19LHtrZXk6XCJob3ZlclwiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMuc2VsZWN0UmFuZ2UsdD10aGlzLnN0YXRlLmhvdmVyO3JldHVybiBlP3Q6bnVsbH19LHtrZXk6XCJkcmlsbERvd25BdmFpbGFibGVcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnZpZXcsdD10aGlzLnZpZXdzO3JldHVybiB0LmluZGV4T2YoZSk8dC5sZW5ndGgtMX19LHtrZXk6XCJkcmlsbFVwQXZhaWxhYmxlXCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy52aWV3O3JldHVybiB0aGlzLnZpZXdzLmluZGV4T2YoZSk+MH19LHtrZXk6XCJnZXRQcm9jZXNzZWRWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10Lm1pbkRhdGUscj10Lm1heERhdGUsbz10Lm1heERldGFpbCxhPXQucmV0dXJuVmFsdWU7cmV0dXJuIGZ1bmN0aW9uKCl7c3dpdGNoKGEpe2Nhc2VcInN0YXJ0XCI6cmV0dXJuIEduO2Nhc2VcImVuZFwiOnJldHVybiBxbjtjYXNlXCJyYW5nZVwiOnJldHVybiBZbjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmV0dXJuVmFsdWUuXCIpfX0oKSh7dmFsdWU6ZSxtaW5EYXRlOm4sbWF4RGF0ZTpyLG1heERldGFpbDpvfSl9fSx7a2V5OlwicmVuZGVyQ29udGVudFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuYWN0aXZlU3RhcnREYXRlLG49dGhpcy5vbk1vdXNlT3ZlcixyPXRoaXMudmFsdWVUeXBlLGE9dGhpcy52YWx1ZSxpPXRoaXMudmlldyxsPXRoaXMucHJvcHMsYz1sLmNhbGVuZGFyVHlwZSxzPWwubG9jYWxlLHU9bC5tYXhEYXRlLGQ9bC5taW5EYXRlLGY9bC5zZWxlY3RSYW5nZSxwPWwudGlsZUNsYXNzTmFtZSxoPWwudGlsZUNvbnRlbnQsQz1sLnRpbGVEaXNhYmxlZCx2PXRoaXMuaG92ZXIsZz17YWN0aXZlU3RhcnREYXRlOmU/d2UoaSx0KTptZShpLHQpLGhvdmVyOnYsbG9jYWxlOnMsbWF4RGF0ZTp1LG1pbkRhdGU6ZCxvbkNsaWNrOnRoaXMuZHJpbGxEb3duQXZhaWxhYmxlP3RoaXMuZHJpbGxEb3duOnRoaXMub25DaGFuZ2Usb25Nb3VzZU92ZXI6Zj9uOm51bGwsdGlsZUNsYXNzTmFtZTpwLHRpbGVDb250ZW50OmgsdGlsZURpc2FibGVkOkMsdmFsdWU6YSx2YWx1ZVR5cGU6cn07c3dpdGNoKGkpe2Nhc2VcImNlbnR1cnlcIjp2YXIgbT10aGlzLnByb3BzLmZvcm1hdFllYXI7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFB0LEVuKHtmb3JtYXRZZWFyOm19LGcpKTtjYXNlXCJkZWNhZGVcIjp2YXIgdz10aGlzLnByb3BzLmZvcm1hdFllYXI7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KEZ0LEVuKHtmb3JtYXRZZWFyOnd9LGcpKTtjYXNlXCJ5ZWFyXCI6dmFyIHk9dGhpcy5wcm9wcyxiPXkuZm9ybWF0TW9udGgseD15LmZvcm1hdE1vbnRoWWVhcjtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQodG4sRW4oe2Zvcm1hdE1vbnRoOmIsZm9ybWF0TW9udGhZZWFyOnh9LGcpKTtjYXNlXCJtb250aFwiOnZhciBPPXRoaXMucHJvcHMsTD1PLmZvcm1hdERheSxNPU8uZm9ybWF0TG9uZ0RhdGUsUz1PLmZvcm1hdFNob3J0V2Vla2RheSxfPU8uZm9ybWF0V2Vla2RheSxqPU8ub25DbGlja1dlZWtOdW1iZXIsRT1PLnNob3dEb3VibGVWaWV3LFA9Ty5zaG93Rml4ZWROdW1iZXJPZldlZWtzLGs9Ty5zaG93TmVpZ2hib3JpbmdNb250aCxIPU8uc2hvd1dlZWtOdW1iZXJzLFY9dGhpcy5vbk1vdXNlTGVhdmU7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KF9uLEVuKHtjYWxlbmRhclR5cGU6Yyxmb3JtYXREYXk6TCxmb3JtYXRMb25nRGF0ZTpNLGZvcm1hdFNob3J0V2Vla2RheTpTLGZvcm1hdFdlZWtkYXk6XyxvbkNsaWNrV2Vla051bWJlcjpqLG9uTW91c2VMZWF2ZTpmP1Y6bnVsbCxzaG93Rml4ZWROdW1iZXJPZldlZWtzOnZvaWQgMCE9PVA/UDpFLHNob3dOZWlnaGJvcmluZ01vbnRoOmssc2hvd1dlZWtOdW1iZXJzOkh9LGcpKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdmlldzogXCIuY29uY2F0KGksXCIuXCIpKX19fSx7a2V5OlwicmVuZGVyTmF2aWdhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMucHJvcHMuc2hvd05hdmlnYXRpb24pcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5hY3RpdmVTdGFydERhdGUsdD10aGlzLnZpZXcsbj10aGlzLnZpZXdzLHI9dGhpcy5wcm9wcyxhPXIuZm9ybWF0TW9udGhZZWFyLGk9ci5mb3JtYXRZZWFyLGw9ci5sb2NhbGUsYz1yLm1heERhdGUscz1yLm1pbkRhdGUsdT1yLm5hdmlnYXRpb25BcmlhTGFiZWwsZD1yLm5hdmlnYXRpb25BcmlhTGl2ZSxmPXIubmF2aWdhdGlvbkxhYmVsLHA9ci5uZXh0MkFyaWFMYWJlbCxoPXIubmV4dDJMYWJlbCxDPXIubmV4dEFyaWFMYWJlbCx2PXIubmV4dExhYmVsLGc9ci5wcmV2MkFyaWFMYWJlbCxtPXIucHJldjJMYWJlbCx3PXIucHJldkFyaWFMYWJlbCx5PXIucHJldkxhYmVsLGI9ci5zaG93RG91YmxlVmlldztyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoRmUse2FjdGl2ZVN0YXJ0RGF0ZTplLGRyaWxsVXA6dGhpcy5kcmlsbFVwLGZvcm1hdE1vbnRoWWVhcjphLGZvcm1hdFllYXI6aSxsb2NhbGU6bCxtYXhEYXRlOmMsbWluRGF0ZTpzLG5hdmlnYXRpb25BcmlhTGFiZWw6dSxuYXZpZ2F0aW9uQXJpYUxpdmU6ZCxuYXZpZ2F0aW9uTGFiZWw6ZixuZXh0MkFyaWFMYWJlbDpwLG5leHQyTGFiZWw6aCxuZXh0QXJpYUxhYmVsOkMsbmV4dExhYmVsOnYscHJldjJBcmlhTGFiZWw6ZyxwcmV2MkxhYmVsOm0scHJldkFyaWFMYWJlbDp3LHByZXZMYWJlbDp5LHNldEFjdGl2ZVN0YXJ0RGF0ZTp0aGlzLnNldEFjdGl2ZVN0YXJ0RGF0ZSxzaG93RG91YmxlVmlldzpiLHZpZXc6dCx2aWV3czpufSl9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jbGFzc05hbWUsbj1lLmlucHV0UmVmLHI9ZS5zZWxlY3RSYW5nZSxhPWUuc2hvd0RvdWJsZVZpZXcsaT10aGlzLm9uTW91c2VMZWF2ZSxsPXRoaXMudmFsdWUscz1bXS5jb25jYXQobCk7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpjKFRuLHImJjE9PT1zLmxlbmd0aCYmXCJcIi5jb25jYXQoVG4sXCItLXNlbGVjdFJhbmdlXCIpLGEmJlwiXCIuY29uY2F0KFRuLFwiLS1kb3VibGVWaWV3XCIpLHQpLHJlZjpufSx0aGlzLnJlbmRlck5hdmlnYXRpb24oKSxvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6XCJcIi5jb25jYXQoVG4sXCJfX3ZpZXdDb250YWluZXJcIiksb25CbHVyOnI/aTpudWxsLG9uTW91c2VMZWF2ZTpyP2k6bnVsbH0sdGhpcy5yZW5kZXJDb250ZW50KCksYSYmdGhpcy5yZW5kZXJDb250ZW50KCEwKSkpfX1dLG4mJmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX0odC5wcm90b3R5cGUsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSxsfShyLkNvbXBvbmVudCk7UW4uZGVmYXVsdFByb3BzPXtnb1RvUmFuZ2VTdGFydE9uU2VsZWN0OiEwLG1heERhdGU6Qm4sbWF4RGV0YWlsOlwibW9udGhcIixtaW5EYXRlOkRuLG1pbkRldGFpbDpcImNlbnR1cnlcIixyZXR1cm5WYWx1ZTpcInN0YXJ0XCIsc2hvd05hdmlnYXRpb246ITAsc2hvd05laWdoYm9yaW5nTW9udGg6ITB9O3ZhciBKbj1pKCkuaW5zdGFuY2VPZihEYXRlKSxlcj1pKCkub25lT2ZUeXBlKFtpKCkuc3RyaW5nLFplXSk7UW4ucHJvcFR5cGVzPXthY3RpdmVTdGFydERhdGU6Sm4sYWxsb3dQYXJ0aWFsUmFuZ2U6aSgpLmJvb2wsY2FsZW5kYXJUeXBlOmtlLGNsYXNzTmFtZTpIZSxkZWZhdWx0QWN0aXZlU3RhcnREYXRlOkpuLGRlZmF1bHRWYWx1ZTplcixkZWZhdWx0VmlldzpEZSxmb3JtYXREYXk6aSgpLmZ1bmMsZm9ybWF0TG9uZ0RhdGU6aSgpLmZ1bmMsZm9ybWF0TW9udGg6aSgpLmZ1bmMsZm9ybWF0TW9udGhZZWFyOmkoKS5mdW5jLGZvcm1hdFNob3J0V2Vla2RheTppKCkuZnVuYyxmb3JtYXRXZWVrZGF5OmkoKS5mdW5jLGZvcm1hdFllYXI6aSgpLmZ1bmMsZ29Ub1JhbmdlU3RhcnRPblNlbGVjdDppKCkuYm9vbCxpbnB1dFJlZjpJZSxsb2NhbGU6aSgpLnN0cmluZyxtYXhEYXRlOlJlLG1heERldGFpbDppKCkub25lT2YoJG4pLG1pbkRhdGU6VmUsbWluRGV0YWlsOmkoKS5vbmVPZigkbiksbmF2aWdhdGlvbkFyaWFMYWJlbDppKCkuc3RyaW5nLG5hdmlnYXRpb25BcmlhTGl2ZTppKCkub25lT2YoW1wib2ZmXCIsXCJwb2xpdGVcIixcImFzc2VydGl2ZVwiXSksbmF2aWdhdGlvbkxhYmVsOmkoKS5mdW5jLG5leHQyQXJpYUxhYmVsOmkoKS5zdHJpbmcsbmV4dDJMYWJlbDppKCkubm9kZSxuZXh0QXJpYUxhYmVsOmkoKS5zdHJpbmcsbmV4dExhYmVsOmkoKS5ub2RlLG9uQWN0aXZlU3RhcnREYXRlQ2hhbmdlOmkoKS5mdW5jLG9uQ2hhbmdlOmkoKS5mdW5jLG9uQ2xpY2tEYXk6aSgpLmZ1bmMsb25DbGlja0RlY2FkZTppKCkuZnVuYyxvbkNsaWNrTW9udGg6aSgpLmZ1bmMsb25DbGlja1dlZWtOdW1iZXI6aSgpLmZ1bmMsb25DbGlja1llYXI6aSgpLmZ1bmMsb25EcmlsbERvd246aSgpLmZ1bmMsb25EcmlsbFVwOmkoKS5mdW5jLG9uVmlld0NoYW5nZTppKCkuZnVuYyxwcmV2MkFyaWFMYWJlbDppKCkuc3RyaW5nLHByZXYyTGFiZWw6aSgpLm5vZGUscHJldkFyaWFMYWJlbDppKCkuc3RyaW5nLHByZXZMYWJlbDppKCkubm9kZSxyZXR1cm5WYWx1ZTppKCkub25lT2YoW1wic3RhcnRcIixcImVuZFwiLFwicmFuZ2VcIl0pLHNlbGVjdFJhbmdlOmkoKS5ib29sLHNob3dEb3VibGVWaWV3OmkoKS5ib29sLHNob3dGaXhlZE51bWJlck9mV2Vla3M6aSgpLmJvb2wsc2hvd05hdmlnYXRpb246aSgpLmJvb2wsc2hvd05laWdoYm9yaW5nTW9udGg6aSgpLmJvb2wsc2hvd1dlZWtOdW1iZXJzOmkoKS5ib29sLHRpbGVDbGFzc05hbWU6aSgpLm9uZU9mVHlwZShbaSgpLmZ1bmMsSGVdKSx0aWxlQ29udGVudDppKCkub25lT2ZUeXBlKFtpKCkuZnVuYyxpKCkubm9kZV0pLHRpbGVEaXNhYmxlZDppKCkuZnVuYyx2YWx1ZTplcix2aWV3OkRlfTtjb25zdCB0cj1Rbn0sNTI1MTooZSx0LG4pPT57big3NDE4KTt2YXIgcj1uKDY2ODkpLG89NjAxMDM7aWYodC5GcmFnbWVudD02MDEwNyxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3Ipe3ZhciBhPVN5bWJvbC5mb3I7bz1hKFwicmVhY3QuZWxlbWVudFwiKSx0LkZyYWdtZW50PWEoXCJyZWFjdC5mcmFnbWVudFwiKX12YXIgaT1yLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLGw9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxjPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07ZnVuY3Rpb24gcyhlLHQsbil7dmFyIHIsYT17fSxzPW51bGwsdT1udWxsO2ZvcihyIGluIHZvaWQgMCE9PW4mJihzPVwiXCIrbiksdm9pZCAwIT09dC5rZXkmJihzPVwiXCIrdC5rZXkpLHZvaWQgMCE9PXQucmVmJiYodT10LnJlZiksdClsLmNhbGwodCxyKSYmIWMuaGFzT3duUHJvcGVydHkocikmJihhW3JdPXRbcl0pO2lmKGUmJmUuZGVmYXVsdFByb3BzKWZvcihyIGluIHQ9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09YVtyXSYmKGFbcl09dFtyXSk7cmV0dXJueyQkdHlwZW9mOm8sdHlwZTplLGtleTpzLHJlZjp1LHByb3BzOmEsX293bmVyOmkuY3VycmVudH19dC5qc3g9cyx0LmpzeHM9c30sNTg5MzooZSx0LG4pPT57ZS5leHBvcnRzPW4oNTI1MSl9LDM1NzM6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPW4oNjU1KSxvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuLHQpLGUpfX0sYT1mdW5jdGlvbihlKXtyZXR1cm4gZSUxP051bWJlcihlLnRvRml4ZWQoNSkpOmV9LGk9LygtKT8oW1xcZF0qXFwuP1tcXGRdKSsvZyxsPS8oI1swLTlhLWZdezZ9fCNbMC05YS1mXXszfXwjKD86WzAtOWEtZl17Mn0pezIsNH18KHJnYnxoc2wpYT9cXCgoLT9bXFxkXFwuXSslP1ssXFxzXSspezIsM31cXHMqXFwvKlxccypbXFxkXFwuXSslP1xcKSkvZ2ksYz0vXigjWzAtOWEtZl17M318Iyg/OlswLTlhLWZdezJ9KXsyLDR9fChyZ2J8aHNsKWE/XFwoKC0/W1xcZFxcLl0rJT9bLFxcc10rKXsyLDN9XFxzKlxcLypcXHMqW1xcZFxcLl0rJT9cXCkpJC9pO2Z1bmN0aW9uIHMoZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV9dmFyIHU9e3Rlc3Q6ZnVuY3Rpb24oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGV9LHBhcnNlOnBhcnNlRmxvYXQsdHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3JldHVybiBlfX0sZD1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdSkse3RyYW5zZm9ybTpvKDAsMSl9KSxmPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSx1KSx7ZGVmYXVsdDoxfSkscD1mdW5jdGlvbihlKXtyZXR1cm57dGVzdDpmdW5jdGlvbih0KXtyZXR1cm4gcyh0KSYmdC5lbmRzV2l0aChlKSYmMT09PXQuc3BsaXQoXCIgXCIpLmxlbmd0aH0scGFyc2U6cGFyc2VGbG9hdCx0cmFuc2Zvcm06ZnVuY3Rpb24odCl7cmV0dXJuXCJcIit0K2V9fX0saD1wKFwiZGVnXCIpLEM9cChcIiVcIiksdj1wKFwicHhcIiksZz1wKFwidmhcIiksbT1wKFwidndcIiksdz1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sQykse3BhcnNlOmZ1bmN0aW9uKGUpe3JldHVybiBDLnBhcnNlKGUpLzEwMH0sdHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3JldHVybiBDLnRyYW5zZm9ybSgxMDAqZSl9fSkseT1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gQm9vbGVhbihzKG4pJiZjLnRlc3QobikmJm4uc3RhcnRzV2l0aChlKXx8dCYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sdCkpfX0sYj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBvO2lmKCFzKHIpKXJldHVybiByO3ZhciBhPXIubWF0Y2goaSksbD1hWzBdLGM9YVsxXSx1PWFbMl0sZD1hWzNdO3JldHVybihvPXt9KVtlXT1wYXJzZUZsb2F0KGwpLG9bdF09cGFyc2VGbG9hdChjKSxvW25dPXBhcnNlRmxvYXQodSksby5hbHBoYT12b2lkIDAhPT1kP3BhcnNlRmxvYXQoZCk6MSxvfX0seD17dGVzdDp5KFwiaHNsXCIsXCJodWVcIikscGFyc2U6YihcImh1ZVwiLFwic2F0dXJhdGlvblwiLFwibGlnaHRuZXNzXCIpLHRyYW5zZm9ybTpmdW5jdGlvbihlKXt2YXIgdD1lLmh1ZSxuPWUuc2F0dXJhdGlvbixyPWUubGlnaHRuZXNzLG89ZS5hbHBoYSxpPXZvaWQgMD09PW8/MTpvO3JldHVyblwiaHNsYShcIitNYXRoLnJvdW5kKHQpK1wiLCBcIitDLnRyYW5zZm9ybShhKG4pKStcIiwgXCIrQy50cmFuc2Zvcm0oYShyKSkrXCIsIFwiK2EoZC50cmFuc2Zvcm0oaSkpK1wiKVwifX0sTz1vKDAsMjU1KSxMPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSx1KSx7dHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnJvdW5kKE8oZSkpfX0pLE09e3Rlc3Q6eShcInJnYlwiLFwicmVkXCIpLHBhcnNlOmIoXCJyZWRcIixcImdyZWVuXCIsXCJibHVlXCIpLHRyYW5zZm9ybTpmdW5jdGlvbihlKXt2YXIgdD1lLnJlZCxuPWUuZ3JlZW4scj1lLmJsdWUsbz1lLmFscGhhLGk9dm9pZCAwPT09bz8xOm87cmV0dXJuXCJyZ2JhKFwiK0wudHJhbnNmb3JtKHQpK1wiLCBcIitMLnRyYW5zZm9ybShuKStcIiwgXCIrTC50cmFuc2Zvcm0ocikrXCIsIFwiK2EoZC50cmFuc2Zvcm0oaSkpK1wiKVwifX0sUz17dGVzdDp5KFwiI1wiKSxwYXJzZTpmdW5jdGlvbihlKXt2YXIgdD1cIlwiLG49XCJcIixyPVwiXCIsbz1cIlwiO3JldHVybiBlLmxlbmd0aD41Pyh0PWUuc3Vic3RyKDEsMiksbj1lLnN1YnN0cigzLDIpLHI9ZS5zdWJzdHIoNSwyKSxvPWUuc3Vic3RyKDcsMikpOih0PWUuc3Vic3RyKDEsMSksbj1lLnN1YnN0cigyLDEpLHI9ZS5zdWJzdHIoMywxKSxvPWUuc3Vic3RyKDQsMSksdCs9dCxuKz1uLHIrPXIsbys9bykse3JlZDpwYXJzZUludCh0LDE2KSxncmVlbjpwYXJzZUludChuLDE2KSxibHVlOnBhcnNlSW50KHIsMTYpLGFscGhhOm8/cGFyc2VJbnQobywxNikvMjU1OjF9fSx0cmFuc2Zvcm06TS50cmFuc2Zvcm19LF89e3Rlc3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIE0udGVzdChlKXx8Uy50ZXN0KGUpfHx4LnRlc3QoZSl9LHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybiBNLnRlc3QoZSk/TS5wYXJzZShlKTp4LnRlc3QoZSk/eC5wYXJzZShlKTpTLnBhcnNlKGUpfSx0cmFuc2Zvcm06ZnVuY3Rpb24oZSl7cmV0dXJuIHMoZSk/ZTplLmhhc093blByb3BlcnR5KFwicmVkXCIpP00udHJhbnNmb3JtKGUpOngudHJhbnNmb3JtKGUpfX0saj1cIiR7Y31cIixFPVwiJHtufVwiO2Z1bmN0aW9uIFAoZSl7dmFyIHQ9W10sbj0wLHI9ZS5tYXRjaChsKTtyJiYobj1yLmxlbmd0aCxlPWUucmVwbGFjZShsLGopLHQucHVzaC5hcHBseSh0LHIubWFwKF8ucGFyc2UpKSk7dmFyIG89ZS5tYXRjaChpKTtyZXR1cm4gbyYmKGU9ZS5yZXBsYWNlKGksRSksdC5wdXNoLmFwcGx5KHQsby5tYXAodS5wYXJzZSkpKSx7dmFsdWVzOnQsbnVtQ29sb3JzOm4sdG9rZW5pc2VkOmV9fWZ1bmN0aW9uIGsoZSl7cmV0dXJuIFAoZSkudmFsdWVzfWZ1bmN0aW9uIEgoZSl7dmFyIHQ9UChlKSxuPXQudmFsdWVzLHI9dC5udW1Db2xvcnMsbz10LnRva2VuaXNlZCxpPW4ubGVuZ3RoO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9byxuPTA7bjxpO24rKyl0PXQucmVwbGFjZShuPHI/ajpFLG48cj9fLnRyYW5zZm9ybShlW25dKTphKGVbbl0pKTtyZXR1cm4gdH19dmFyIFY9ZnVuY3Rpb24oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGU/MDplfSxSPXt0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0LG4scixvO3JldHVybiBpc05hTihlKSYmcyhlKSYmKG51bGwhPT0obj1udWxsPT09KHQ9ZS5tYXRjaChpKSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQubGVuZ3RoKSYmdm9pZCAwIT09bj9uOjApKyhudWxsIT09KG89bnVsbD09PShyPWUubWF0Y2gobCkpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmxlbmd0aCkmJnZvaWQgMCE9PW8/bzowKT4wfSxwYXJzZTprLGNyZWF0ZVRyYW5zZm9ybWVyOkgsZ2V0QW5pbWF0YWJsZU5vbmU6ZnVuY3Rpb24oZSl7dmFyIHQ9ayhlKTtyZXR1cm4gSChlKSh0Lm1hcChWKSl9fSxJPW5ldyBTZXQoW1wiYnJpZ2h0bmVzc1wiLFwiY29udHJhc3RcIixcInNhdHVyYXRlXCIsXCJvcGFjaXR5XCJdKTtmdW5jdGlvbiBaKGUpe3ZhciB0PWUuc2xpY2UoMCwtMSkuc3BsaXQoXCIoXCIpLG49dFswXSxyPXRbMV07aWYoXCJkcm9wLXNoYWRvd1wiPT09bilyZXR1cm4gZTt2YXIgbz0oci5tYXRjaChpKXx8W10pWzBdO2lmKCFvKXJldHVybiBlO3ZhciBhPXIucmVwbGFjZShvLFwiXCIpLGw9SS5oYXMobik/MTowO3JldHVybiBvIT09ciYmKGwqPTEwMCksbitcIihcIitsK2ErXCIpXCJ9dmFyIEE9LyhbYS16LV0qKVxcKC4qP1xcKS9nLEQ9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LFIpLHtnZXRBbmltYXRhYmxlTm9uZTpmdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKEEpO3JldHVybiB0P3QubWFwKFopLmpvaW4oXCIgXCIpOmV9fSk7dC5hbHBoYT1kLHQuY29sb3I9Xyx0LmNvbXBsZXg9Uix0LmRlZ3JlZXM9aCx0LmZpbHRlcj1ELHQuaGV4PVMsdC5oc2xhPXgsdC5udW1iZXI9dSx0LnBlcmNlbnQ9Qyx0LnByb2dyZXNzUGVyY2VudGFnZT13LHQucHg9dix0LnJnYlVuaXQ9TCx0LnJnYmE9TSx0LnNjYWxlPWYsdC52aD1nLHQudnc9bX0sODM4ODooZSx0LG4pPT57bi5yKHQpLG4uZCh0LHtmb2N1c2FibGU6KCk9PnksaXNGb2N1c2FibGU6KCk9Pk8saXNUYWJiYWJsZTooKT0+Yix0YWJiYWJsZTooKT0+d30pO3ZhciByPVtcImlucHV0Om5vdChbaW5lcnRdKVwiLFwic2VsZWN0Om5vdChbaW5lcnRdKVwiLFwidGV4dGFyZWE6bm90KFtpbmVydF0pXCIsXCJhW2hyZWZdOm5vdChbaW5lcnRdKVwiLFwiYnV0dG9uOm5vdChbaW5lcnRdKVwiLFwiW3RhYmluZGV4XTpub3Qoc2xvdCk6bm90KFtpbmVydF0pXCIsXCJhdWRpb1tjb250cm9sc106bm90KFtpbmVydF0pXCIsXCJ2aWRlb1tjb250cm9sc106bm90KFtpbmVydF0pXCIsJ1tjb250ZW50ZWRpdGFibGVdOm5vdChbY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIl0pOm5vdChbaW5lcnRdKScsXCJkZXRhaWxzPnN1bW1hcnk6Zmlyc3Qtb2YtdHlwZTpub3QoW2luZXJ0XSlcIixcImRldGFpbHM6bm90KFtpbmVydF0pXCJdLG89ci5qb2luKFwiLFwiKSxhPVwidW5kZWZpbmVkXCI9PXR5cGVvZiBFbGVtZW50LGk9YT9mdW5jdGlvbigpe306RWxlbWVudC5wcm90b3R5cGUubWF0Y2hlc3x8RWxlbWVudC5wcm90b3R5cGUubXNNYXRjaGVzU2VsZWN0b3J8fEVsZW1lbnQucHJvdG90eXBlLndlYmtpdE1hdGNoZXNTZWxlY3RvcixsPSFhJiZFbGVtZW50LnByb3RvdHlwZS5nZXRSb290Tm9kZT9mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gbnVsbD09ZXx8bnVsbD09PSh0PWUuZ2V0Um9vdE5vZGUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplLm93bmVyRG9jdW1lbnR9LGM9ZnVuY3Rpb24gZSh0LG4pe3ZhciByO3ZvaWQgMD09PW4mJihuPSEwKTt2YXIgbz1udWxsPT10fHxudWxsPT09KHI9dC5nZXRBdHRyaWJ1dGUpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmNhbGwodCxcImluZXJ0XCIpO3JldHVyblwiXCI9PT1vfHxcInRydWVcIj09PW98fG4mJnQmJmUodC5wYXJlbnROb2RlKX0scz1mdW5jdGlvbihlLHQsbil7aWYoYyhlKSlyZXR1cm5bXTt2YXIgcj1BcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoZS5xdWVyeVNlbGVjdG9yQWxsKG8pKTtyZXR1cm4gdCYmaS5jYWxsKGUsbykmJnIudW5zaGlmdChlKSxyLmZpbHRlcihuKX0sdT1mdW5jdGlvbiBlKHQsbixyKXtmb3IodmFyIGE9W10sbD1BcnJheS5mcm9tKHQpO2wubGVuZ3RoOyl7dmFyIHM9bC5zaGlmdCgpO2lmKCFjKHMsITEpKWlmKFwiU0xPVFwiPT09cy50YWdOYW1lKXt2YXIgdT1zLmFzc2lnbmVkRWxlbWVudHMoKSxkPWUodS5sZW5ndGg/dTpzLmNoaWxkcmVuLCEwLHIpO3IuZmxhdHRlbj9hLnB1c2guYXBwbHkoYSxkKTphLnB1c2goe3Njb3BlUGFyZW50OnMsY2FuZGlkYXRlczpkfSl9ZWxzZXtpLmNhbGwocyxvKSYmci5maWx0ZXIocykmJihufHwhdC5pbmNsdWRlcyhzKSkmJmEucHVzaChzKTt2YXIgZj1zLnNoYWRvd1Jvb3R8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHIuZ2V0U2hhZG93Um9vdCYmci5nZXRTaGFkb3dSb290KHMpLHA9IWMoZiwhMSkmJighci5zaGFkb3dSb290RmlsdGVyfHxyLnNoYWRvd1Jvb3RGaWx0ZXIocykpO2lmKGYmJnApe3ZhciBoPWUoITA9PT1mP3MuY2hpbGRyZW46Zi5jaGlsZHJlbiwhMCxyKTtyLmZsYXR0ZW4/YS5wdXNoLmFwcGx5KGEsaCk6YS5wdXNoKHtzY29wZVBhcmVudDpzLGNhbmRpZGF0ZXM6aH0pfWVsc2UgbC51bnNoaWZ0LmFwcGx5KGwscy5jaGlsZHJlbil9fXJldHVybiBhfSxkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudGFiSW5kZXg8MCYmKHR8fC9eKEFVRElPfFZJREVPfERFVEFJTFMpJC8udGVzdChlLnRhZ05hbWUpfHxmdW5jdGlvbihlKXt2YXIgdCxuPW51bGw9PWV8fG51bGw9PT0odD1lLmdldEF0dHJpYnV0ZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuY2FsbChlLFwiY29udGVudGVkaXRhYmxlXCIpO3JldHVyblwiXCI9PT1ufHxcInRydWVcIj09PW59KGUpKSYmaXNOYU4ocGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKSwxMCkpPzA6ZS50YWJJbmRleH0sZj1mdW5jdGlvbihlLHQpe3JldHVybiBlLnRhYkluZGV4PT09dC50YWJJbmRleD9lLmRvY3VtZW50T3JkZXItdC5kb2N1bWVudE9yZGVyOmUudGFiSW5kZXgtdC50YWJJbmRleH0scD1mdW5jdGlvbihlKXtyZXR1cm5cIklOUFVUXCI9PT1lLnRhZ05hbWV9LGg9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXQud2lkdGgscj10LmhlaWdodDtyZXR1cm4gMD09PW4mJjA9PT1yfSxDPWZ1bmN0aW9uKGUsdCl7cmV0dXJuISh0LmRpc2FibGVkfHxjKHQpfHxmdW5jdGlvbihlKXtyZXR1cm4gcChlKSYmXCJoaWRkZW5cIj09PWUudHlwZX0odCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49dC5kaXNwbGF5Q2hlY2sscj10LmdldFNoYWRvd1Jvb3Q7aWYoXCJoaWRkZW5cIj09PWdldENvbXB1dGVkU3R5bGUoZSkudmlzaWJpbGl0eSlyZXR1cm4hMDt2YXIgbz1pLmNhbGwoZSxcImRldGFpbHM+c3VtbWFyeTpmaXJzdC1vZi10eXBlXCIpP2UucGFyZW50RWxlbWVudDplO2lmKGkuY2FsbChvLFwiZGV0YWlsczpub3QoW29wZW5dKSAqXCIpKXJldHVybiEwO2lmKG4mJlwiZnVsbFwiIT09biYmXCJsZWdhY3ktZnVsbFwiIT09bil7aWYoXCJub24temVyby1hcmVhXCI9PT1uKXJldHVybiBoKGUpfWVsc2V7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcil7Zm9yKHZhciBhPWU7ZTspe3ZhciBjPWUucGFyZW50RWxlbWVudCxzPWwoZSk7aWYoYyYmIWMuc2hhZG93Um9vdCYmITA9PT1yKGMpKXJldHVybiBoKGUpO2U9ZS5hc3NpZ25lZFNsb3Q/ZS5hc3NpZ25lZFNsb3Q6Y3x8cz09PWUub3duZXJEb2N1bWVudD9jOnMuaG9zdH1lPWF9aWYoZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8sYT1lJiZsKGUpLGk9bnVsbD09PSh0PWEpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lmhvc3QsYz0hMTtpZihhJiZhIT09ZSlmb3IoYz0hIShudWxsIT09KG49aSkmJnZvaWQgMCE9PW4mJm51bGwhPT0ocj1uLm93bmVyRG9jdW1lbnQpJiZ2b2lkIDAhPT1yJiZyLmNvbnRhaW5zKGkpfHxudWxsIT1lJiZudWxsIT09KG89ZS5vd25lckRvY3VtZW50KSYmdm9pZCAwIT09byYmby5jb250YWlucyhlKSk7IWMmJmk7KXt2YXIgcyx1LGQ7Yz0hKG51bGw9PT0odT1pPW51bGw9PT0ocz1hPWwoaSkpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLmhvc3QpfHx2b2lkIDA9PT11fHxudWxsPT09KGQ9dS5vd25lckRvY3VtZW50KXx8dm9pZCAwPT09ZHx8IWQuY29udGFpbnMoaSkpfXJldHVybiBjfShlKSlyZXR1cm4hZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aDtpZihcImxlZ2FjeS1mdWxsXCIhPT1uKXJldHVybiEwfXJldHVybiExfSh0LGUpfHxmdW5jdGlvbihlKXtyZXR1cm5cIkRFVEFJTFNcIj09PWUudGFnTmFtZSYmQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGUuY2hpbGRyZW4pLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVyblwiU1VNTUFSWVwiPT09ZS50YWdOYW1lfSkpfSh0KXx8ZnVuY3Rpb24oZSl7aWYoL14oSU5QVVR8QlVUVE9OfFNFTEVDVHxURVhUQVJFQSkkLy50ZXN0KGUudGFnTmFtZSkpZm9yKHZhciB0PWUucGFyZW50RWxlbWVudDt0Oyl7aWYoXCJGSUVMRFNFVFwiPT09dC50YWdOYW1lJiZ0LmRpc2FibGVkKXtmb3IodmFyIG49MDtuPHQuY2hpbGRyZW4ubGVuZ3RoO24rKyl7dmFyIHI9dC5jaGlsZHJlbi5pdGVtKG4pO2lmKFwiTEVHRU5EXCI9PT1yLnRhZ05hbWUpcmV0dXJuISFpLmNhbGwodCxcImZpZWxkc2V0W2Rpc2FibGVkXSAqXCIpfHwhci5jb250YWlucyhlKX1yZXR1cm4hMH10PXQucGFyZW50RWxlbWVudH1yZXR1cm4hMX0odCkpfSx2PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIShmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHAoZSkmJlwicmFkaW9cIj09PWUudHlwZX0oZSkmJiFmdW5jdGlvbihlKXtpZighZS5uYW1lKXJldHVybiEwO3ZhciB0LG49ZS5mb3JtfHxsKGUpLHI9ZnVuY3Rpb24oZSl7cmV0dXJuIG4ucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cInJhZGlvXCJdW25hbWU9XCInK2UrJ1wiXScpfTtpZihcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuQ1NTJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB3aW5kb3cuQ1NTLmVzY2FwZSl0PXIod2luZG93LkNTUy5lc2NhcGUoZS5uYW1lKSk7ZWxzZSB0cnl7dD1yKGUubmFtZSl9Y2F0Y2goZSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoXCJMb29rcyBsaWtlIHlvdSBoYXZlIGEgcmFkaW8gYnV0dG9uIHdpdGggYSBuYW1lIGF0dHJpYnV0ZSBjb250YWluaW5nIGludmFsaWQgQ1NTIHNlbGVjdG9yIGNoYXJhY3RlcnMgYW5kIG5lZWQgdGhlIENTUy5lc2NhcGUgcG9seWZpbGw6ICVzXCIsZS5tZXNzYWdlKSwhMX12YXIgbz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKGVbbl0uY2hlY2tlZCYmZVtuXS5mb3JtPT09dClyZXR1cm4gZVtuXX0odCxlLmZvcm0pO3JldHVybiFvfHxvPT09ZX0oZSl9KHQpfHxkKHQpPDB8fCFDKGUsdCkpfSxnPWZ1bmN0aW9uKGUpe3ZhciB0PXBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIiksMTApO3JldHVybiEhKGlzTmFOKHQpfHx0Pj0wKX0sbT1mdW5jdGlvbiBlKHQpe3ZhciBuPVtdLHI9W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCxvKXt2YXIgYT0hIXQuc2NvcGVQYXJlbnQsaT1hP3Quc2NvcGVQYXJlbnQ6dCxsPWQoaSxhKSxjPWE/ZSh0LmNhbmRpZGF0ZXMpOmk7MD09PWw/YT9uLnB1c2guYXBwbHkobixjKTpuLnB1c2goaSk6ci5wdXNoKHtkb2N1bWVudE9yZGVyOm8sdGFiSW5kZXg6bCxpdGVtOnQsaXNTY29wZTphLGNvbnRlbnQ6Y30pfSkpLHIuc29ydChmKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuaXNTY29wZT9lLnB1c2guYXBwbHkoZSx0LmNvbnRlbnQpOmUucHVzaCh0LmNvbnRlbnQpLGV9KSxbXSkuY29uY2F0KG4pfSx3PWZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIG49KHQ9dHx8e30pLmdldFNoYWRvd1Jvb3Q/dShbZV0sdC5pbmNsdWRlQ29udGFpbmVyLHtmaWx0ZXI6di5iaW5kKG51bGwsdCksZmxhdHRlbjohMSxnZXRTaGFkb3dSb290OnQuZ2V0U2hhZG93Um9vdCxzaGFkb3dSb290RmlsdGVyOmd9KTpzKGUsdC5pbmNsdWRlQ29udGFpbmVyLHYuYmluZChudWxsLHQpKSxtKG4pfSx5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQ9dHx8e30pLmdldFNoYWRvd1Jvb3Q/dShbZV0sdC5pbmNsdWRlQ29udGFpbmVyLHtmaWx0ZXI6Qy5iaW5kKG51bGwsdCksZmxhdHRlbjohMCxnZXRTaGFkb3dSb290OnQuZ2V0U2hhZG93Um9vdH0pOnMoZSx0LmluY2x1ZGVDb250YWluZXIsQy5iaW5kKG51bGwsdCkpfSxiPWZ1bmN0aW9uKGUsdCl7aWYodD10fHx7fSwhZSl0aHJvdyBuZXcgRXJyb3IoXCJObyBub2RlIHByb3ZpZGVkXCIpO3JldHVybiExIT09aS5jYWxsKGUsbykmJnYodCxlKX0seD1yLmNvbmNhdChcImlmcmFtZVwiKS5qb2luKFwiLFwiKSxPPWZ1bmN0aW9uKGUsdCl7aWYodD10fHx7fSwhZSl0aHJvdyBuZXcgRXJyb3IoXCJObyBub2RlIHByb3ZpZGVkXCIpO3JldHVybiExIT09aS5jYWxsKGUseCkmJkModCxlKX19LDQyNDk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CdXR0b25UZXh0T25seT10LkJ1dHRvblNlY29uZGFyeT10LkJ1dHRvblByaW1hcnk9dC5CdXR0b249dm9pZCAwO2NvbnN0IGE9big1ODkzKSxpPW8obig3NTE4KSksbD1uKDEzMzUpLGM9big5NTA3KSxzPW4oNjEyNik7dC5CdXR0b249ZT0+e3ZhcntsYWJlbDp0LGNoaWxkcmVuOm4sc2l6ZTpvPVwiYmFzZVwiLHNoYXBlOmk9XCJzcXVhcmVcIixraW5kOmw9XCJwcmltYXJ5XCIsbGF5b3V0OmM9XCJmaXRcIixocmVmOnN9PWUsZj1yKGUsW1wibGFiZWxcIixcImNoaWxkcmVuXCIsXCJzaXplXCIsXCJzaGFwZVwiLFwia2luZFwiLFwibGF5b3V0XCIsXCJocmVmXCJdKTtyZXR1cm4oMCxhLmpzeCkodSxPYmplY3QuYXNzaWduKHthczpzP1wiYVwiOlwiYnV0dG9uXCIsc2l6ZTpvLHNoYXBlOmksa2luZDpsLGxheW91dDpjfSxmLHtjaGlsZHJlbjp0PygwLGEuanN4KShkLE9iamVjdC5hc3NpZ24oe2FsaWduSXRlbXM6XCJjZW50ZXJcIixqdXN0aWZ5Q29udGVudDpcImNlbnRlclwifSx7Y2hpbGRyZW46dH0pKTpufSkpfTtjb25zdCB1PWkuZGVmYXVsdC5idXR0b25gXG4gIC8qIERlZmF1bHQgdmFsdWVzIHRoYXQgZ2V0IG92ZXJyaWRkZW4gYnkgdmFyaWFudHMgKi9cbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0QmFja2dyb3VuZH07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEJhY2tncm91bmR9O1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeVRleHR9O1xuXG4gIC8qIEluamVjdCB2YXJpYW50cyAqL1xuICAkeygwLGMuZ2V0VmFyaWFudENTUykocy52YXJpYW50cyxzLlZhcmlhbnQuc2l6ZSl9XG4gICR7KDAsYy5nZXRWYXJpYW50Q1NTKShzLnZhcmlhbnRzLHMuVmFyaWFudC5zaGFwZSl9XG4gICR7KDAsYy5nZXRWYXJpYW50Q1NTKShzLnZhcmlhbnRzLHMuVmFyaWFudC5raW5kKX1cbiAgJHsoMCxjLmdldFZhcmlhbnRDU1MpKHMudmFyaWFudHMscy5WYXJpYW50LmxheW91dCl9XG5cbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIG91dGxpbmU6IG5vbmU7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUubGluZUhlaWdodC51aX07XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRXZWlnaHQuYm9sZH07XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pO1xuXG4gICY6bm90KDpkaXNhYmxlZCkge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6ZGlzYWJsZWQsXG4gICY6YWN0aXZlOmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dFBsYWNlaG9sZGVyfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG5gLGQ9KDAsaS5kZWZhdWx0KShsLkJveClgXG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAwICR7ZS5weC54c21hbGx9YH07XG5gO3QuQnV0dG9uUHJpbWFyeT1lPT4oMCxhLmpzeCkodC5CdXR0b24sT2JqZWN0LmFzc2lnbih7fSxlLHtraW5kOlwicHJpbWFyeVwifSkpLHQuQnV0dG9uU2Vjb25kYXJ5PWU9PigwLGEuanN4KSh0LkJ1dHRvbixPYmplY3QuYXNzaWduKHt9LGUse2tpbmQ6XCJzZWNvbmRhcnlcIn0pKSx0LkJ1dHRvblRleHRPbmx5PWU9PigwLGEuanN4KSh0LkJ1dHRvbixPYmplY3QuYXNzaWduKHt9LGUse2tpbmQ6XCJ0ZXh0T25seVwifSkpfSw2MTI2OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnZhcmlhbnRzPXQuQnV0dG9uU2hhcGU9dC5CdXR0b25MYXlvdXQ9dC5CdXR0b25TaXplPXQuQnV0dG9uS2luZD10LlZhcmlhbnQ9dm9pZCAwO2NvbnN0IHI9big3NTE4KTt0LlZhcmlhbnQ9e3NoYXBlOlwic2hhcGVcIixzaXplOlwic2l6ZVwiLGtpbmQ6XCJraW5kXCIsbGF5b3V0OlwibGF5b3V0XCJ9LHQuQnV0dG9uS2luZD17cHJpbWFyeTpcInByaW1hcnlcIixzZWNvbmRhcnk6XCJzZWNvbmRhcnlcIix0ZXh0T25seTpcInRleHRPbmx5XCJ9LHQuQnV0dG9uU2l6ZT17c21hbGw6XCJzbWFsbFwiLGJhc2U6XCJiYXNlXCIsbGFyZ2U6XCJsYXJnZVwifSx0LkJ1dHRvbkxheW91dD17Zml0OlwiZml0XCIsZnVsbDpcImZ1bGxcIn0sdC5CdXR0b25TaGFwZT17c3F1YXJlOlwic3F1YXJlXCIscGlsbDpcInBpbGxcIn0sdC52YXJpYW50cz17W3QuVmFyaWFudC5zaXplXTp7W3QuQnV0dG9uU2l6ZS5iYXNlXTpyLmNzc2BcbiAgICAgIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5sYXJnZX1gfTtcbiAgICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgICBgLFt0LkJ1dHRvblNpemUuc21hbGxdOnIuY3NzYFxuICAgICAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC54c21hbGx9ICR7ZS5weC5iYXNlfWB9O1xuICAgICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLnNtYWxsfTtcbiAgICBgLFt0LkJ1dHRvblNpemUubGFyZ2VdOnIuY3NzYFxuICAgICAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5iYXNlfSAke2UucHgueGxhcmdlfWB9O1xuICAgICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmxhcmdlfTtcbiAgICBgfSxbdC5WYXJpYW50LnNoYXBlXTp7W3QuQnV0dG9uU2hhcGUuc3F1YXJlXTpyLmNzc2BcbiAgICAgIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgICBgLFt0LkJ1dHRvblNoYXBlLnBpbGxdOnIuY3NzYFxuICAgICAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMucGlsbH07XG4gICAgYH0sW3QuVmFyaWFudC5sYXlvdXRdOntbdC5CdXR0b25MYXlvdXQuZml0XTpyLmNzc2BcbiAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICBgLFt0LkJ1dHRvbkxheW91dC5mdWxsXTpyLmNzc2BcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIGB9LFt0LlZhcmlhbnQua2luZF06e1t0LkJ1dHRvbktpbmQucHJpbWFyeV06ci5jc3NgXG4gICAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5fTtcbiAgICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX07XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5SG92ZXJ9O1xuICAgICAgfVxuXG4gICAgICAmOmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnlBY3RpdmV9O1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5Rm9jdXNlZH07XG4gICAgICB9XG4gICAgYCxbdC5CdXR0b25LaW5kLnNlY29uZGFyeV06ci5jc3NgXG4gICAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnl9O1xuICAgICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnl9O1xuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFNlY29uZGFyeVRleHR9O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kU2Vjb25kYXJ5SG92ZXJ9O1xuICAgICAgfVxuXG4gICAgICAmOmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFNlY29uZGFyeUFjdGl2ZX07XG4gICAgICB9XG5cbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFNlY29uZGFyeUZvY3VzZWR9O1xuICAgICAgfVxuICAgIGAsW3QuQnV0dG9uS2luZC50ZXh0T25seV06ci5jc3NgXG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICB9XG5cbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEZvY3VzZWR9O1xuICAgICAgfVxuICAgIGB9fX0sNDEzMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNDI0OSksdCksbyhuKDYxMjYpLHQpfSwzOTExOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNhcmRDb250YWluZXI9dm9pZCAwO2NvbnN0IG89big1ODkzKSxhPXIobig3NTE4KSksaT1uKDk1MDcpLGw9bigxMzM1KTt0LkNhcmRDb250YWluZXI9ZT0+KDAsby5qc3gpKGMsT2JqZWN0LmFzc2lnbih7c3R5bGU6e21heEhlaWdodDplLm1heEhlaWdodCxvdmVyZmxvd1k6XCJhdXRvXCJ9LGlkOlwiY2FyZC1jb250YWluZXJcIixcImRhdGEtdGVzdGlkXCI6XCJjYXJkLWNvbnRhaW5lclwifSx7Y2hpbGRyZW46KDAsby5qc3gpKHMse2NoaWxkcmVuOmUuY2hpbGRyZW59KX0pKTtjb25zdCBjPSgwLGEuZGVmYXVsdCkobC5Cb3gpYFxuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDN9O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ1fTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfVxuICAgICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gICR7aS5NaXhpbnMuc2Nyb2xsYmFyLmJhc2V9O1xuICBnYXA6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG5gLHM9YS5kZWZhdWx0LmRpdmBcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH0gJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH0gMHB4XG4gICAgJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgd2lkdGg6IDEwMCU7XG5gfSwxMjQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29sbGFwc2libGVDYXJkPXZvaWQgMDtjb25zdCBvPW4oNTg5MyksYT1uKDY2ODkpLGk9cihuKDc1MTgpKSxsPW4oMzEzNiksYz1uKDk2MzQpLHM9bigxMzM1KSx1PW4oMzkxMSksZD1uKDc3NjkpLGY9big5NTA3KTt0LkNvbGxhcHNpYmxlQ2FyZD1lPT57Y29uc3RbdCxuXT0oMCxhLnVzZVN0YXRlKShlLmV4cGFuZGVkfHwhMSkscj1lPT57bihudWxsIT1lP2U6IXQpfTtyZXR1cm4oMCxvLmpzeHMpKHAsT2JqZWN0LmFzc2lnbih7XCJkYXRhLXRlc3RpZFwiOlwiY29sbGFwc2libGUtY2FyZFwifSx7Y2hpbGRyZW46WygwLG8uanN4cykoQyxPYmplY3QuYXNzaWduKHtcImFyaWEtZXhwYW5kZWRcIjp0LFwiZGF0YS10ZXN0aWRcIjpcImhlYWRpbmctY29udGFpbmVyXCIsc3R5bGU6e3Bvc2l0aW9uOmUuZml4ZWRIZWFkZXI/XCJzdGlja3lcIjp2b2lkIDAsdG9wOjB9LG9uQ2xpY2s6KCk9PnIoKSx0YWJJbmRleDowLG9uS2V5RG93bjplPT57c3dpdGNoKGUuY29kZSl7Y2FzZVwiRW50ZXJcIjpjYXNlXCJTcGFjZVwiOmUucHJldmVudERlZmF1bHQoKSxyKCl9fX0se2NoaWxkcmVuOlsoMCxvLmpzeCkoaCx7Y2hpbGRyZW46ZS50aXRsZX0pLCgwLG8uanN4cykoXCJkaXZcIixPYmplY3QuYXNzaWduKHtpZDpcImljb24tY29udGFpbmVyXCJ9LHtjaGlsZHJlbjpbdm9pZCAwIT09ZS5iYWRnZVRleHQmJigwLG8uanN4KShsLkJhZGdlLHtjb3VudDplLmJhZGdlVGV4dCxpZDpcImNvbGxhcHNpYmxlLWNhcmQtaGVhZGluZy1iYWRnZVwiLFwiZGF0YS10ZXN0aWRcIjpcImNvbGxhcHNpYmxlLWNhcmQtaGVhZGluZy1iYWRnZVwifSksKDAsby5qc3gpKGMuSWNvbix7aWNvbjp0P1wiQ2hldnJvblVwSWNvblwiOlwiQ2hldnJvbkRvd25JY29uXCJ9KV19KSldfSkpLHQmJigwLG8uanN4KSh1LkNhcmRDb250YWluZXIsT2JqZWN0LmFzc2lnbih7bWF4SGVpZ2h0OmUubWF4SGVpZ2h0fHxcIm5vbmVcIn0se2NoaWxkcmVuOigwLG8uanN4KShcImRpdlwiLHtjaGlsZHJlbjplLmNoaWxkcmVufSl9KSldfSkpfTtjb25zdCBwPWkuZGVmYXVsdC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMTAwJTtcbmAsaD0oMCxpLmRlZmF1bHQpKGQuVGV4dClgXG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICAke2YuTWl4aW5zLnRleHRPdmVyZmxvd307XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gLEM9KDAsaS5kZWZhdWx0KShzLkJveClgXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kM307XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDV9O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ1fTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5saW5lSGVpZ2h0LmhlYWRpbmd9O1xuICBvdXRsaW5lOiBub25lO1xuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pO1xuICB3aWR0aDogMTAwJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAjaWNvbi1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgfVxuXG4gICNjb2xsYXBzaWJsZS1jYXJkLWhlYWRpbmctYmFkZ2Uge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kMn07XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNX07XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNX07XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJvcmRlck5ldXRyYWx9O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYm9yZGVyTmV1dHJhbH07XG4gIH1cbmB9LDc0MDE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDEyNCksdCl9LDk2NDQ6KGUsdCk9Pnt2YXIgbjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkV4cGFuZERpcmVjdGlvbj12b2lkIDAsKG49dC5FeHBhbmREaXJlY3Rpb258fCh0LkV4cGFuZERpcmVjdGlvbj17fSkpW24uVXA9MF09XCJVcFwiLG5bbi5Eb3duPTFdPVwiRG93blwifSw0MDIxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkV4cGFuZGFibGVCdXR0b249dm9pZCAwO2NvbnN0IG89big1ODkzKSxhPW4oNjY4OSksaT1uKDQxMzApLGw9cihuKDc1MTgpKSxjPW4oOTYzNCkscz1uKDkxNDEpLHU9bigzMDMwKSxkPW4oMTMzNSksZj1uKDk2NDQpO3QuRXhwYW5kYWJsZUJ1dHRvbj1lPT57dmFyIHQsbixyLGwsYyxwO2NvbnN0W3ksYl09KDAsYS51c2VTdGF0ZSkoe3Nob3c6ITEscmVxdWVzdGVkQnlDb2xsYXBzZTohMX0pLHg9e3NpemU6ZS5zaXplLGtpbmQ6ZS5raW5kLGRpc2FibGVkOmUuZGlzYWJsZWR9LE89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtzaGFwZTppLkJ1dHRvblNoYXBlLnNxdWFyZSxcImFyaWEtbGFiZWxcIjpudWxsIT09KHQ9ZVtcImFyaWEtbGFiZWxcIl0pJiZ2b2lkIDAhPT10P3Q6YFByaW1hcnkgQnV0dG9uICR7ZS50aXRsZX1gfSksTD1udWxsIT09KG49ZS5leHBhbmREaXJlY3Rpb24pJiZ2b2lkIDAhPT1uP246Zi5FeHBhbmREaXJlY3Rpb24uRG93bjtyZXR1cm4oMCxhLnVzZUVmZmVjdCkoKCgpPT57aWYoIXkucmVxdWVzdGVkQnlDb2xsYXBzZSlyZXR1cm47Y29uc3QgZT1zZXRUaW1lb3V0KCgoKT0+Yih7cmVxdWVzdGVkQnlDb2xsYXBzZTohMSxzaG93OiExfSkpLDIwMCk7cmV0dXJuKCk9PmNsZWFyVGltZW91dChlKX0pLFt5LnJlcXVlc3RlZEJ5Q29sbGFwc2VdKSwoMCxvLmpzeHMpKHcse2NoaWxkcmVuOlsoMCxvLmpzeHMpKG0se2NoaWxkcmVuOlsoMCxvLmpzeCkoQyxPYmplY3QuYXNzaWduKHt9LE8se2NoaWxkcmVuOigwLG8uanN4KSh2LHtjaGlsZHJlbjpudWxsIT09KHI9ZS5jaGlsZHJlbikmJnZvaWQgMCE9PXI/cjpPLnRpdGxlfSl9KSksZS5zZWNvbmRhcnlCdXR0b25zJiZlLnNlY29uZGFyeUJ1dHRvbnMubGVuZ3RoPjAmJigwLG8uanN4KShkLkJveCxPYmplY3QuYXNzaWduKHtpZDpcImRyb3Bkb3duLWNvbnRhaW5lclwifSx7Y2hpbGRyZW46KDAsby5qc3hzKShnLE9iamVjdC5hc3NpZ24oe30seCx7cm9sZTpcImNvbWJvYm94XCIsb25DbGljazooKT0+e3kucmVxdWVzdGVkQnlDb2xsYXBzZXx8Yih7cmVxdWVzdGVkQnlDb2xsYXBzZTohMSxzaG93OiF5LnNob3d9KX0sXCJhcmlhLWxhYmVsXCI6XCJFeHBhbmQgU2Vjb25kYXJ5IEJ1dHRvbnMgUGFuZWxcIixcImFyaWEtZXhwYW5kZWRcIjp5LnNob3d9LHtjaGlsZHJlbjpbTD09PWYuRXhwYW5kRGlyZWN0aW9uLkRvd24mJigwLG8uanN4KShoLHtraW5kOm51bGwhPT0obD1lLmtpbmQpJiZ2b2lkIDAhPT1sP2w6aS5CdXR0b25LaW5kLnByaW1hcnksaWNvbjpcIkNhcmV0RG93bkljb25cIn0pLEw9PT1mLkV4cGFuZERpcmVjdGlvbi5VcCYmKDAsby5qc3gpKGgse2tpbmQ6bnVsbCE9PShjPWUua2luZCkmJnZvaWQgMCE9PWM/YzppLkJ1dHRvbktpbmQucHJpbWFyeSxpY29uOlwiQ2FyZXRVcEljb25cIn0pXX0pKX0pKV19KSxlLnNlY29uZGFyeUJ1dHRvbnMmJmUuc2Vjb25kYXJ5QnV0dG9ucy5sZW5ndGg+MCYmKDAsby5qc3gpKHMuQW5pbWF0ZVByZXNlbmNlLHtjaGlsZHJlbjp5LnNob3cmJigwLG8uanN4KSh1LkV4cGFuZGFibGVQYW5lbCx7ZXhwYW5kRGlyZWN0aW9uOkwsc2Vjb25kYXJ5QnV0dG9uczpudWxsIT09KHA9ZS5zZWNvbmRhcnlCdXR0b25zKSYmdm9pZCAwIT09cD9wOltdLHN0cmV0Y2g6ZS5zdHJldGNoRXhwYW5kYWJsZVBhbmVsLGNsb3NlUGFuZWxPblNlY29uZGFyeUJ1dHRvbkNsaWNrOmUuY2xvc2VQYW5lbE9uU2Vjb25kYXJ5QnV0dG9uQ2xpY2ssb25Db2xsYXBzZVJlcXVlc3Q6KCk9PmIoe3Nob3c6ITEscmVxdWVzdGVkQnlDb2xsYXBzZTohMH0pLGJ1dHRvblNpemU6ZS5zaXplLGRvY3VtZW50OmUuZG9jdW1lbnR9KX0pXX0pfTtjb25zdCBwPXtbaS5CdXR0b25LaW5kLnByaW1hcnldOmU9PmUucGFsZXR0ZS5icmFuZFByaW1hcnlUZXh0LFtpLkJ1dHRvbktpbmQuc2Vjb25kYXJ5XTplPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnlUZXh0LFtpLkJ1dHRvbktpbmQudGV4dE9ubHldOmU9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH0saD0oMCxsLmRlZmF1bHQpKGMuSWNvbilgXG4gIHN2ZyBwYXRoIHtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmUsa2luZDp0fSk9PnBbdF0oZSl9O1xuICB9XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmxpbmVIZWlnaHQudWl9O1xuICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0LmJvbGR9O1xuYCxDPSgwLGwuZGVmYXVsdCkoaS5CdXR0b24pYFxuICBtYXJnaW4tcmlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbmAsdj0oMCxsLmRlZmF1bHQpKGQuQm94KWBcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuYCxnPSgwLGwuZGVmYXVsdCkoaS5CdXR0b24pYFxuICB3aWR0aDogJHtlPT5lLnRoZW1lLnB4Lnh4bGFyZ2V9O1xuICBwYWRkaW5nOiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmAsbT1sLmRlZmF1bHQuZGl2YFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYCx3PWwuZGVmYXVsdC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuYH0sMjEyODooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5zZXR1cEV4cGFuZGFibGVQYW5lbD12b2lkIDA7Y29uc3Qgcj1uKDk2NDQpO3Quc2V0dXBFeHBhbmRhYmxlUGFuZWw9KGUsdCxuPSExKT0+e2lmKCFlfHwwPT09ZS5jaGlsZE5vZGVzLmxlbmd0aClyZXR1cm47Y29uc3Qgbz1lLnBhcmVudEVsZW1lbnQsYT1udWxsPT1vP3ZvaWQgMDpvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZighYSlyZXR1cm47Y29uc3QgbD1pLmhlaWdodCxjPWkud2lkdGg8PWEud2lkdGh8fG4/aS53aWR0aDphLndpZHRoLHM9YS54K2M+ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aHx8YzxhLndpZHRoO2Uuc3R5bGUud2lkdGg9YCR7Y31weGAsZS5zdHlsZS5vcGFjaXR5PVwiMVwiLHM/ZS5zdHlsZS5yaWdodD1cIjBweFwiOmUuc3R5bGUubGVmdD1cIjBweFwiLHQ9PT1yLkV4cGFuZERpcmVjdGlvbi5Eb3duJiYoZS5zdHlsZS50b3A9YCR7YS5oZWlnaHR9cHhgKSx0PT09ci5FeHBhbmREaXJlY3Rpb24uVXAmJihlLnN0eWxlLnRvcD0tMSpsK1wicHhcIil9fSwzMDMwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkV4cGFuZGFibGVQYW5lbD12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpLGE9cihuKDc1MTgpKSxpPW4oOTE0MSksbD1uKDQxMzApLGM9bigxMzM1KSxzPW4oMjEyOCksdT1yKG4oNDQ4MykpLGQ9e3R5cGU6XCJzcHJpbmdcIixkdXJhdGlvbjouMixib3VuY2U6LjI1fTt0LkV4cGFuZGFibGVQYW5lbD1lPT57dmFyIHQ7Y29uc3Qgbj1gJHtlLnBhbmVsSWR9LWV4cGFuZGFibGUtcGFuZWxgO3JldHVybigwLG8uanN4KSh1LmRlZmF1bHQsT2JqZWN0LmFzc2lnbih7Zm9jdXNUcmFwT3B0aW9uczp7ZmFsbGJhY2tGb2N1czpgIyR7bn1gLGNsaWNrT3V0c2lkZURlYWN0aXZhdGVzOiEwLG9uRGVhY3RpdmF0ZTplLm9uQ29sbGFwc2VSZXF1ZXN0LGluaXRpYWxGb2N1czohMSxkb2N1bWVudDplLmRvY3VtZW50fX0se2NoaWxkcmVuOigwLG8uanN4KShoLE9iamVjdC5hc3NpZ24oe3JlZjp0PT4oMCxzLnNldHVwRXhwYW5kYWJsZVBhbmVsKSh0LGUuZXhwYW5kRGlyZWN0aW9uLGUuc3RyZXRjaCksdGFiSW5kZXg6MCxpZDpuLGluaXRpYWw6XCJpbml0aWFsXCIsZXhpdDpcImhpZGRlblwiLGJ1dHRvblNpemU6bnVsbCE9PSh0PWUuYnV0dG9uU2l6ZSkmJnZvaWQgMCE9PXQ/dDpsLkJ1dHRvblNpemUuYmFzZSxhbmltYXRlOlwidmlzaWJsZVwiLHJvbGU6XCJtZW51XCIsdHJhbnNpdGlvbjpkLG9uTW91c2VPdmVyOigpPT57dmFyIGU7cmV0dXJuIG51bGw9PT0oZT1kb2N1bWVudC5hY3RpdmVFbGVtZW50KXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5ibHVyKCl9fSx7Y2hpbGRyZW46ZS5zZWNvbmRhcnlCdXR0b25zLm1hcCgoKHQsbik9PigwLG8uanN4KShsLkJ1dHRvbixPYmplY3QuYXNzaWduKHtjbGFzc05hbWU6XCJtZW51LWl0ZW1cIix0YWJJbmRleDpuKzEsdGl0bGU6dC50aXRsZSxyb2xlOlwibWVudWl0ZW1cIixzaXplOmUuYnV0dG9uU2l6ZSxkaXNhYmxlZDp0LmRpc2FibGVkLGtpbmQ6XCJ0ZXh0T25seVwiLG9uQ2xpY2s6bj0+KCh0LG4pPT57ZS5jbG9zZVBhbmVsT25TZWNvbmRhcnlCdXR0b25DbGljaz8obi5vbkNsaWNrKHQpLGUub25Db2xsYXBzZVJlcXVlc3QoKSk6bi5vbkNsaWNrKHQsKCgpPT5lLm9uQ29sbGFwc2VSZXF1ZXN0KCkpKX0pKG4sdCksXCJhcmlhLWxhYmVsXCI6dC50aXRsZX0se2NoaWxkcmVuOigwLG8uanN4KShmLE9iamVjdC5hc3NpZ24oe1wiYXJpYS1sYWJlbFwiOnQudGl0bGV9LHtjaGlsZHJlbjp0LnRpdGxlfSkpfSksbikpKX0pLFwiZXhwYW5kYWJsZVBhbmVsXCIpfSkpfTtjb25zdCBmPSgwLGEuZGVmYXVsdCkoYy5Cb3gpYFxuICBwYWRkaW5nLWJvdHRvbTogMXB4O1xuICBwYWRkaW5nLXRvcDogMXB4O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gLHA9e1tsLkJ1dHRvblNpemUuc21hbGxdOmU9PmUucHguc21hbGwsW2wuQnV0dG9uU2l6ZS5iYXNlXTplPT5lLnB4LmJhc2UsW2wuQnV0dG9uU2l6ZS5sYXJnZV06ZT0+ZS5weC5sYXJnZX0saD0oMCxhLmRlZmF1bHQpKGkubW90aW9uLmRpdilgXG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgb3BhY2l0eTogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206ICR7ZT0+ZS50aGVtZS5weC54eHhsYXJnZX07XG4gIG1heC13aWR0aDogbWF4LWNvbnRlbnQ7XG4gIG1pbi13aWR0aDogODBweDtcbiAgYmFja2dyb3VuZDogJHtlPT5lLnRoZW1lLnBhbGV0dGUuYmFja2dyb3VuZDR9O1xuICBib3gtc2hhZG93OiAke2U9PmUudGhlbWUuc2hhZG93LmJhc2V9O1xuICBoZWlnaHQ6IG1heC1jb250ZW50O1xuICB6LWluZGV4OiAxMDA7XG5cbiAgLm1lbnUtaXRlbSB7XG4gICAgYm9yZGVyLXJhZGl1czogdW5zZXQ7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IHRyYW5zcGFyZW50O1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG92ZXJmbG93OiBjbGlwO1xuICAgICYgPiAqIHtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuICAgIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRXZWlnaHQubm9ybWFsfTtcbiAgICBwYWRkaW5nLXRvcDogJHsoe3RoZW1lOmUsYnV0dG9uU2l6ZTp0fSk9PnBbdF0oZSl9O1xuICAgIHBhZGRpbmctYm90dG9tOiAkeyh7dGhlbWU6ZSxidXR0b25TaXplOnR9KT0+cFt0XShlKX07XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcblxuICAgIDpmaXJzdC1jaGlsZCB7XG4gICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICAgIH1cblxuICAgIDpsYXN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gICAgfVxuXG4gICAgJjpmb2N1cyxcbiAgICAmOmhvdmVyIHtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2dyb3VuZDogJHtlPT5lLnRoZW1lLnBhbGV0dGUuYmFja2dyb3VuZDJ9O1xuICAgIH1cblxuICAgICY6ZGlzYWJsZWQsXG4gICAgJjphY3RpdmU6ZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0SW5hY3RpdmV9O1xuICAgICAgYmFja2dyb3VuZDogJHtlPT5lLnRoZW1lLnBhbGV0dGUuYmFja2dyb3VuZDR9O1xuICAgICAgb3BhY2l0eTogdW5zZXQ7XG4gICAgfVxuICB9XG5gfSw0OTI1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig0MDIxKSx0KSxvKG4oOTY0NCksdCl9LDI2MDk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDU5NzEpLHQpfSw1OTcxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVG9nZ2xlPXZvaWQgMDtjb25zdCBhPW4oNTg5MyksaT1uKDY2ODkpLGw9byhuKDc1MTgpKSxjPW4oODUxMCkscz1uKDEzMzUpO3QuVG9nZ2xlPWU9Pnt2YXJ7aWQ6dCxsYWJlbDpuLG9uQ2hhbmdlOm8sbGFiZWxTaWRlOmw9XCJyaWdodFwiLHR5cGU6Yz1cImNoZWNrYm94XCJ9PWUscz1yKGUsW1wiaWRcIixcImxhYmVsXCIsXCJvbkNoYW5nZVwiLFwibGFiZWxTaWRlXCIsXCJ0eXBlXCJdKTtjb25zdFtDLHZdPSgwLGkudXNlU3RhdGUpKHMuY2hlY2tlZCk7cmV0dXJuKDAsaS51c2VFZmZlY3QpKCgoKT0+e3Yocy5jaGVja2VkKX0pLFtzLmNoZWNrZWRdKSwoMCxhLmpzeHMpKHUsT2JqZWN0LmFzc2lnbih7bGFiZWxTaWRlOmx9LHtjaGlsZHJlbjpbbj8oMCxhLmpzeCkoaCxPYmplY3QuYXNzaWduKHtodG1sRm9yOnR9LHtjaGlsZHJlbjpufSkpOnZvaWQgMCwoMCxhLmpzeHMpKGQsT2JqZWN0LmFzc2lnbih7aXNDaGVja2VkOkN9LHtjaGlsZHJlbjpbKDAsYS5qc3gpKHAsT2JqZWN0LmFzc2lnbih7fSxzLHtpZDp0LHR5cGU6YyxvbkNoYW5nZTplPT57dihlLnRhcmdldC5jaGVja2VkKSxudWxsPT1vfHxvKGUpfX0pKSwoMCxhLmpzeCkoZix7dGFiSW5kZXg6LTEsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwiLGlzQ2hlY2tlZDpDfSldfSkpXX0pKX07Y29uc3QgdT1sLmRlZmF1bHQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6ICR7KHt0aGVtZTplfSk9PmUucHgueGxhcmdlfTtcbiAgZmxleC1kaXJlY3Rpb246ICR7KHtsYWJlbFNpZGU6ZX0pPT5cImxlZnRcIj09PWU/XCJyb3dcIjpcInJvdy1yZXZlcnNlXCJ9O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC54bGFyZ2V9O1xuYCxkPSgwLGwuZGVmYXVsdCkocy5Cb3gpYFxuICAtLXB4LXRvZ2dsZTogJHsoe3RoZW1lOmV9KT0+ZS5weC54bGFyZ2V9O1xuICAtLXB4LWtub2I6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IHZhcigtLXB4LXRvZ2dsZSk7XG4gIHdpZHRoOiBjYWxjKDIgKiB2YXIoLS1weC10b2dnbGUpKTtcbiAgYm9yZGVyOiAxcHggc29saWRcbiAgICAkeyh7aXNDaGVja2VkOmUsdGhlbWU6dH0pPT5lP3QucGFsZXR0ZS5icmFuZFByaW1hcnk6dC5wYWxldHRlLmJhY2tncm91bmQ2fTtcbiAgYm9yZGVyLXJhZGl1czogY2FsYygwLjUgKiB2YXIoLS1weC10b2dnbGUpKTtcblxuICBiYWNrZ3JvdW5kOiAkeyh7aXNDaGVja2VkOmUsdGhlbWU6dH0pPT5lP3QucGFsZXR0ZS5icmFuZFByaW1hcnk6dC5wYWxldHRlLmJhY2tncm91bmQ2fTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pLFxuICAgIGJvcmRlci1jb2xvciB2YXIoLS0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKTtcblxuICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRGb2N1c2VkfTtcbiAgfVxuYCxmPWwuZGVmYXVsdC5idXR0b25gXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IHZhcigtLXB4LWtub2IpO1xuICBoZWlnaHQ6IHZhcigtLXB4LWtub2IpO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZDogJHsoe2lzQ2hlY2tlZDplLHRoZW1lOnR9KT0+ZT90LnBhbGV0dGUuYnJhbmRQcmltYXJ5VGV4dDp0LnBhbGV0dGUuaW5wdXRDb2xvcn07XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgdHJhbnNpdGlvbjogbGVmdCB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pLCBiYWNrZ3JvdW5kIHZhcigtLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbik7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lOyAvKiBBbGxvdyBwYXNzLXRocnUgZm9yIG5hdGl2ZSBpbnB1dCAqL1xuYCxwPSgwLGwuZGVmYXVsdCkoYy5SYXdJbnB1dClgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvcGFjaXR5OiAwO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuXG4gICY6Y2hlY2tlZCArICR7Zn0ge1xuICAgIGxlZnQ6IGNhbGMoMTAwJSAtICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9KTtcbiAgfVxuICAmOmRpc2FibGVkICsgJHtmfSB7XG4gICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICB9XG4gICY6bm90KDpkaXNhYmxlZCkge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuYCxoPWwuZGVmYXVsdC5sYWJlbGBgfSw1MzAwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQmFkZ2U9dm9pZCAwO2NvbnN0IGE9big1ODkzKSxpPW8obig3NTE4KSksbD1uKDEzMzUpO3QuQmFkZ2U9ZT0+e3Zhcntjb3VudDp0PTAsbWF4Om59PWUsbz1yKGUsW1wiY291bnRcIixcIm1heFwiXSk7bGV0IGk9dC50b1N0cmluZygpO3JldHVybiBuJiZ0Pm4mJihpPWAke259K2ApLCgwLGEuanN4KShjLE9iamVjdC5hc3NpZ24oe30sbyx7Y2hpbGRyZW46aX0pKX07Y29uc3QgYz0oMCxpLmRlZmF1bHQpKGwuQm94KWBcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnN0YXR1c0NyaXRpY2FsfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMucGlsbH07XG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLl9jb2xvci53aGl0ZX07XG4gIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5zbWFsbH07XG4gIG1pbi13aWR0aDogJHsoe3RoZW1lOmV9KT0+ZS5weC54bGFyZ2V9O1xuICBwYWRkaW5nOiAycHggNnB4O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJveC1zaGFkb3c6ICR7KHt0aGVtZTplfSk9PmUuc2hhZG93LmJhc2V9O1xuYH0sMzEzNjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNTMwMCksdCl9LDY4OTU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9KSxhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZyKHQsZSxuKTtyZXR1cm4gbyh0LGUpLHR9LGk9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DYWxlbmRhcj12b2lkIDA7Y29uc3QgbD1uKDU4OTMpLGM9big2Njg5KSxzPWkobig3NTE4KSksdT1uKDcyOTIpLGQ9big0MTMwKSxmPW4oMTMzNSkscD1uKDk1MDcpLGg9YShuKDUyOTkpKTt0LkNhbGVuZGFyPSh7dmFsdWU6ZSxvbkNoYW5nZTp0LG9uRGlzbWlzczpufSk9Pntjb25zdFtyXT0oMCxjLnVzZVN0YXRlKShlKSxbbyxhXT0oMCxjLnVzZVN0YXRlKShlKSxpPSgwLGMudXNlQ2FsbGJhY2spKChlPT57YShlKSxudWxsPT10fHx0KGUpfSksW10pLHM9KDAsYy51c2VDYWxsYmFjaykoKCgpPT57aShyKSxudWxsPT1ufHxuKCl9KSxbXSk7cmV0dXJuKDAsbC5qc3hzKShnLE9iamVjdC5hc3NpZ24oe1wiZGF0YS10ZXN0aWRcIjpcInJlYWN0LWNhbGVuZGFyXCJ9LHtjaGlsZHJlbjpbKDAsbC5qc3gpKHUuQ2FsZW5kYXIse3ZhbHVlOm8sb25DaGFuZ2U6aSxjYWxlbmRhclR5cGU6XCJVU1wiLGRlZmF1bHRWaWV3OlwibW9udGhcIixtaW5EZXRhaWw6XCJ5ZWFyXCIsbmV4dDJMYWJlbDpudWxsLHByZXYyTGFiZWw6bnVsbCxzaG93Rml4ZWROdW1iZXJPZldlZWtzOiEwLG1pbkRhdGU6bmV3IERhdGV9KSwoMCxsLmpzeHMpKEMse2NoaWxkcmVuOlsoMCxsLmpzeCkodix7XCJkYXRhLXRlc3RpZFwiOlwiY2FsZW5kYXItY2FuY2VsLWJ1dHRvblwiLFwiYXJpYS1sYWJlbFwiOlwiY2FuY2VsLWJ1dHRvblwiLGxhYmVsOlwiQ2FuY2VsXCIsc2l6ZTpcImJhc2VcIixraW5kOlwidGV4dE9ubHlcIixvbkNsaWNrOnN9KSwoMCxsLmpzeCkodix7XCJkYXRhLXRlc3RpZFwiOlwiY2FsZW5kYXItYXBwbHktYnV0dG9uXCIsXCJhcmlhLWxhYmVsXCI6XCJhcHBseS1idXR0b25cIixsYWJlbDpcIkFwcGx5XCIsc2l6ZTpcImJhc2VcIixraW5kOlwicHJpbWFyeVwiLG9uQ2xpY2s6bn0pXX0pXX0pKX07Y29uc3QgQz0oMCxzLmRlZmF1bHQpKGYuQm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9IDBweGB9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBtYXJnaW4tcmlnaHQ6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9YH07XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIGJvcmRlci10b3A6IG5vbmU7XG5gLHY9KDAscy5kZWZhdWx0KShkLkJ1dHRvbilgXG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5zbWFsbH1gfTtcbiAgbWFyZ2luLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfWB9O1xuYCxnPSgwLHMuZGVmYXVsdCkoZi5Cb3gpYFxuICAke2h9XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZvbnQtZmFtaWx5OiAke3AuRm9udFN0YWNrfTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDEycHg7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICAucmVhY3QtY2FsZW5kYXIge1xuICAgIG1pbi13aWR0aDogMjMwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gICAgYm9yZGVyOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ2fTtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH0gIWltcG9ydGFudDtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbl9fYXJyb3cge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH0gIWltcG9ydGFudDtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUubGFyZ2V9O1xuICAgIDpkaXNhYmxlZCB7XG4gICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICAgIH1cbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb25fX2xhYmVsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fdmlld0NvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRDb2xvcn07XG4gICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fd2Vla2RheXMge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgICBhYmJyIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX190aWxlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgIGFzcGVjdC1yYXRpbzogMS8xO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICA6ZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0SW5hY3RpdmV9O1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgIDpob3ZlciB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gICAgOmhvdmVyIHtcbiAgICAgIGJvcmRlcjogMnB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9O1xuICAgICAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gICAgfVxuICAgIDpmb2N1cyB7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5fTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgIH1cbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX3RpbGUtLW5vdyB7XG4gICAgYm9yZGVyOiAycHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX0gIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX0gIWltcG9ydGFudDtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeVRleHR9O1xuICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgIDpmb2N1cyB7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5fTtcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICAgICAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gICAgfVxuICB9XG5gfSw5NzM0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig2ODk1KSx0KX0sNjA2MjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Ecm9wZG93bk1lbnU9dm9pZCAwO2NvbnN0IG89big1ODkzKSxhPW4oNjY4OSksaT1uKDEzMzUpLGw9big5NjM0KSxjPXIobig3NTE4KSkscz1uKDcyNjEpLHU9bigyNzkpLGQ9bigzNDcpO3QuRHJvcGRvd25NZW51PSh7bGFiZWw6ZSxvcHRpb25zOnQ9W1tdXSxwbGFjZWhvbGRlcjpuPVwiU2VsZWN0IGFuIG9wdGlvblwiLHNlbGVjdGVkOnIsb25PcHRpb25Ib3ZlcjpjLG9uQ2hhbmdlOkMscmVuZGVyTGFiZWw6dixmaXRDb250ZW50Omd9KT0+e3ZhciBtLHc7Y29uc3RbeSxiXT0oMCxhLnVzZVN0YXRlKSghMSk7KDAsYS51c2VFZmZlY3QpKCgoKT0+ezE9PT10WzBdLmxlbmd0aCYmeCghMSl9KSxbdF0pO2NvbnN0IHg9ZT0+e2IobnVsbCE9ZT9lOiF5KX0se2ZvY3VzZWRPcHRpb246TyxoYW5kbGVLZXlEb3duOkx9PSgwLGQudXNlRHJvcGRvd25LZXlib2FyZE5hdmlnYXRpb24pKHQscix5LHgsQyk7cmV0dXJuKDAsby5qc3gpKGYsT2JqZWN0LmFzc2lnbih7ZmxleERpcmVjdGlvbjpcImNvbHVtblwiLG9uQmx1cjplPT57ZS5jdXJyZW50VGFyZ2V0LmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCl8fGIoITEpfSxvbktleURvd246TH0se2NoaWxkcmVuOigwLG8uanN4cykoaS5Cb3gsT2JqZWN0LmFzc2lnbih7Z2FwOlwiYmFzZVwiLGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixzdHlsZTp7d2lkdGg6XCIxMDAlXCJ9fSx7Y2hpbGRyZW46W2UmJigwLG8uanN4KShcImxhYmVsXCIsT2JqZWN0LmFzc2lnbih7aHRtbEZvcjpcImRyb3Bkb3duLWJ1dHRvblwifSx7Y2hpbGRyZW46KDAsby5qc3gpKHMuT3B0aW9uVGl0bGUse2NoaWxkcmVuOmV9KX0pKSwoMCxvLmpzeHMpKHAse2NoaWxkcmVuOlt2P3Yocnx8e3RpdGxlOm4sdmFsdWU6bnVsbH0seSx4LE8pOigwLG8uanN4cykoaCxPYmplY3QuYXNzaWduKHtyb2xlOlwiY29tYm94Ym94XCIsdGFiSW5kZXg6MCxcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiOmBtZW51LW9wdGlvbi0ke251bGw9PU8/dm9pZCAwOk8udmFsdWV9YCxcImFyaWEtZXhwYW5kZWRcIjp5LFwiYXJpYS1oYXNwb3B1cFwiOlwibGlzdGJveFwiLFwiYXJpYS1jb250cm9sc1wiOlwiZHJvcGRvd24tbGlzdGJveFwiLG9uQ2xpY2s6KCk9PngoKSxhczpcImJ1dHRvblwiLFwiZGF0YS10ZXN0aWRcIjpcImRyb3Bkb3duLWJ1dHRvblwiLHRpdGxlOm51bGwhPT0obT1udWxsPT1yP3ZvaWQgMDpyLnRpdGxlKSYmdm9pZCAwIT09bT9tOm59LHtjaGlsZHJlbjpbKG51bGw9PXI/dm9pZCAwOnIuaWNvblVybCkmJigwLG8uanN4KSh1LkJ1dHRvbkltYWdlLHtzcmM6ci5pY29uVXJsfSksKDAsby5qc3gpKHMuT3B0aW9uVGl0bGUsT2JqZWN0LmFzc2lnbih7XCJhcmlhLWxpdmVcIjpcInBvbGl0ZVwiLFwiZGF0YS10ZXN0aWRcIjpcInNlbGVjdGVkLW9wdGlvblwifSx7Y2hpbGRyZW46bnVsbCE9PSh3PW51bGw9PXI/dm9pZCAwOnIudGl0bGUpJiZ2b2lkIDAhPT13P3c6bn0pKSwoMCxvLmpzeCkobC5JY29uLHtpY29uOnkmJnRbMF0ubGVuZ3RoPjE/XCJDaGV2cm9uVXBJY29uXCI6XCJDaGV2cm9uRG93bkljb25cIn0pXX0pKSx0Lmxlbmd0aCYmdFswXS5sZW5ndGg+MSYmeSYmKDAsby5qc3gpKHUuTWVudSx7bWVudUlkOlwiZHJvcGRvd24tbGlzdGJveFwiLG9wdGlvbnM6dCxzZWxlY3RlZDpyLGhhbmRsZUV4cGFuZE1lbnU6eCxvbk9wdGlvbkhvdmVyOmMsb25DaGFuZ2U6QyxmaXRDb250ZW50OmcsZm9jdXNlZE9wdGlvbjpPLGFic29sdXRlUG9zaXRpb246ITB9KV19KV19KSl9KSl9O2NvbnN0IGY9KDAsYy5kZWZhdWx0KShpLkJveClgXG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gLHA9KDAsYy5kZWZhdWx0KShpLkJveClgYCxoPSgwLGMuZGVmYXVsdCkoaS5Cb3gpYFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9O1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZm9udC13ZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuZm9udFdlaWdodC5ib2xkfTtcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5saW5lSGVpZ2h0LnVpfTtcbiAgb3V0bGluZTogbm9uZTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH0gJHtlLnB4LnNtYWxsfWB9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbik7XG4gIHdpZHRoOiAxMDAlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICR7bC5JY29ufSB7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIH1cblxuICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRGb2N1c2VkfTtcbiAgfVxuYH0sNjAyNjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNjA2MiksdCksbyhuKDI3OSksdCl9LDI3OTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CdXR0b25JbWFnZT10Lk1lbnU9dm9pZCAwO2NvbnN0IG89big1ODkzKSxhPXIobig2Njg5KSksaT1yKG4oNzUxOCkpLGw9big5NjM0KSxjPW4oMTMzNSkscz1uKDcyNjEpO3QuTWVudT0oe29wdGlvbnM6ZSxzZWxlY3RlZDpuLG1lbnVJZDpyLGhhbmRsZUV4cGFuZE1lbnU6aSxvbk9wdGlvbkhvdmVyOmwsb25DaGFuZ2U6Yyx3aWR0aDpDLGhlaWdodDp2LGhlYWRlcjpnLGZvY3VzZWRPcHRpb246bSxhYnNvbHV0ZVBvc2l0aW9uOnd9KT0+e2NvbnN0IHk9ZT0+e251bGw9PWx8fGwoZSl9O3JldHVybigwLG8uanN4cykodSxPYmplY3QuYXNzaWduKHtyb2xlOlwibGlzdGJveFwiLGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixvbk1vdXNlTGVhdmU6KCk9Pnt5KG51bGwpfSxcImRhdGEtdGVzdGlkXCI6XCJtZW51XCIsaWQ6cix3aWR0aDpDLGhlaWdodDp2LGFic29sdXRlUG9zaXRpb246d30se2NoaWxkcmVuOltnJiYoMCxvLmpzeHMpKGEuZGVmYXVsdC5GcmFnbWVudCx7Y2hpbGRyZW46WygwLG8uanN4KShmLHtjaGlsZHJlbjooMCxvLmpzeCkocy5PcHRpb25UaXRsZSx7Y2hpbGRyZW46Z30pfSksKDAsby5qc3gpKGgse30pXX0pLGUubWFwKCgoZSxyKT0+KDAsby5qc3hzKShhLmRlZmF1bHQuRnJhZ21lbnQse2NoaWxkcmVuOlswIT09ciYmKDAsby5qc3gpKGgse30pLGUubWFwKCgoZSxyKT0+KDAsby5qc3hzKShkLE9iamVjdC5hc3NpZ24oe3JvbGU6XCJvcHRpb25cIixpc0ZvY3VzZWQ6KG51bGw9PW0/dm9pZCAwOm0udmFsdWUpPT09ZS52YWx1ZSxcImFyaWEtc2VsZWN0ZWRcIjoobnVsbD09bj92b2lkIDA6bi52YWx1ZSk9PT1lLnZhbHVlLGFsaWduSXRlbXM6XCJjZW50ZXJcIixhczpcImJ1dHRvblwiLFwiZGF0YS10ZXN0aWRcIjpgbWVudS1vcHRpb24tJHtyfWAsaWQ6YG1lbnUtb3B0aW9uLSR7ZS52YWx1ZX1gLHRpdGxlOmUudGl0bGUsb25DbGljazooKT0+e2Uub3ZlcnJpZGVPbkNsaWNrP2Uub3ZlcnJpZGVPbkNsaWNrKGUpOmMoZSksbnVsbD09aXx8aSgpfSxvbk1vdXNlT3ZlcjooKT0+eShlLnZhbHVlKX0se2NoaWxkcmVuOlsobnVsbD09ZT92b2lkIDA6ZS5pY29uVXJsKSYmKDAsby5qc3gpKHQuQnV0dG9uSW1hZ2Use3NyYzplLmljb25Vcmwsc3R5bGU6e21hcmdpblJpZ2h0OlwiOHB4XCJ9fSksKDAsby5qc3gpKHMuT3B0aW9uVGl0bGUse2NoaWxkcmVuOmUudGl0bGV9KSwobnVsbD09bj92b2lkIDA6bi52YWx1ZSk9PT1lLnZhbHVlPygwLG8uanN4KShwLHtpY29uOlwiQ2hlY2tJY29uXCJ9KTooMCxvLmpzeCkocCx7Y2hpbGRyZW46KDAsby5qc3gpKG8uRnJhZ21lbnQse30pfSldfSkscikpKV19LHIpKSldfSkpfTtjb25zdCB1PSgwLGkuZGVmYXVsdCkoYy5Cb3gpYFxuICB3aWR0aDogJHsoe3dpZHRoOmUsZml0Q29udGVudDp0fSk9PmV8fCh0P1wiZml0LWNvbnRlbnRcIjpcIjEwMCVcIil9O1xuICBtYXgtaGVpZ2h0OiAkeyh7aGVpZ2h0OmV9KT0+bnVsbCE9ZT9lOlwiZml0LWNvbnRlbnRcIn07XG4gIHRvcDogJHsoe3RoZW1lOmV9KT0+YGNhbGMoMTAwJSArICR7ZS5weC54c21hbGx9KWB9O1xuICByaWdodDogMDtcbiAgYm94LXNoYWRvdzogMHB4IDRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIHotaW5kZXg6IDEwO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kfTtcbiAgcG9zaXRpb246ICR7KHthYnNvbHV0ZVBvc2l0aW9uOmV9KT0+ZT9cImFic29sdXRlXCI6XCJpbml0aWFsXCJ9O1xuYCxkPSgwLGkuZGVmYXVsdCkoYy5Cb3gpYFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBib3JkZXI6ICR7KHtpc0ZvY3VzZWQ6ZSx0aGVtZTp0fSk9PmU/YDFweCBzb2xpZCAke3QucGFsZXR0ZS5ib3JkZXJOZXV0cmFsfWA6XCIxcHggc29saWQgdHJhbnNwYXJlbnRcIn07XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBvdXRsaW5lOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH0gJHtlLnB4LnNtYWxsfWB9O1xuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDJ9O1xuICB9XG5gLGY9KDAsaS5kZWZhdWx0KShjLkJveClgXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHRIZWxwfTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH0gJHtlLnB4LnNtYWxsfWB9O1xuYCxwPSgwLGkuZGVmYXVsdCkobC5JY29uKWBcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG5gLGg9KDAsaS5kZWZhdWx0KShjLkJveClgXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kfTtcbmA7dC5CdXR0b25JbWFnZT1pLmRlZmF1bHQuaW1nYFxuICBoZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueGxhcmdlfTtcbiAgd2lkdGg6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueGxhcmdlfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuYH0sNzI2MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnVzZVRvb2x0aXA9dC5pc0VsZW1lbnRPdmVyZmxvd249dC5PcHRpb25UaXRsZT12b2lkIDA7Y29uc3QgYT1uKDU4OTMpLGk9big2Njg5KSxsPW4oNzc2OSksYz1uKDk1MDcpLHM9byhuKDc1MTgpKTt0Lk9wdGlvblRpdGxlPWU9Pnt2YXJ7Y2hpbGRyZW46bn09ZSxvPXIoZSxbXCJjaGlsZHJlblwiXSk7cmV0dXJuKDAsYS5qc3gpKHUsT2JqZWN0LmFzc2lnbih7cmVmOigwLHQudXNlVG9vbHRpcCkobil9LG8se2NoaWxkcmVuOm59KSl9O2NvbnN0IHU9KDAscy5kZWZhdWx0KShsLlRleHQpYFxuICAke2MuTWl4aW5zLnRleHRPdmVyZmxvd307XG4gIG1hcmdpbi1sZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG5gO2Z1bmN0aW9uIGQoZSl7cmV0dXJuIGUuc2Nyb2xsSGVpZ2h0PmUuY2xpZW50SGVpZ2h0fHxlLnNjcm9sbFdpZHRoPmUuY2xpZW50V2lkdGh9dC5pc0VsZW1lbnRPdmVyZmxvd249ZCx0LnVzZVRvb2x0aXA9ZT0+KDAsaS51c2VDYWxsYmFjaykoKHQ9Pnt0JiZlJiZkKHQpJiYodC50aXRsZT1lKX0pLFtdKX0sNzAwNjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lkljb249dm9pZCAwO2NvbnN0IGE9big1ODkzKSxpPW8obig3NTE4KSksbD1uKDEzMzUpLGM9big5NTA3KSxzPW4oMzQ3MSksdT1uKDk2NjkpO3QuSWNvbj0oMCxpLmRlZmF1bHQpKChlPT57dmFye2ljb246dCxjaGlsZHJlbjpuLHNpemU6bz1cImJhc2VcIixjb250YWluZXJTaXplOmksXCJkYXRhLXRlc3RpZFwiOmx9PWUsYz1yKGUsW1wiaWNvblwiLFwiY2hpbGRyZW5cIixcInNpemVcIixcImNvbnRhaW5lclNpemVcIixcImRhdGEtdGVzdGlkXCJdKTtyZXR1cm4oMCxhLmpzeCkoZixPYmplY3QuYXNzaWduKHt9LGMse2ljb25TaXplOm8sY29udGFpbmVyU2l6ZTppfHxvLGp1c3RpZnlDb250ZW50OlwiY2VudGVyXCIsYWxpZ25JdGVtczpcImNlbnRlclwiLFwiZGF0YS10ZXN0aWRcIjpsfSx7Y2hpbGRyZW46dD8oMCxhLmpzeCkoZCxPYmplY3QuYXNzaWduKHthcmlhTGFiZWw6Y1tcImFyaWEtbGFiZWxcIl0saWNvbjp0fSxjKSk6bn0pKX0pKWBgO2NvbnN0IGQ9KDAsaS5kZWZhdWx0KSgoZT0+e3ZhcntpY29uOnQsYXJpYUxhYmVsOm59PWUsbz1yKGUsW1wiaWNvblwiLFwiYXJpYUxhYmVsXCJdKTtjb25zdCBpPXMuSWNvblNldFt0XTtyZXR1cm4oMCxhLmpzeCkoaSxPYmplY3QuYXNzaWduKHtyb2xlOlwiaW1nXCIsXCJhcmlhLWxhYmVsXCI6bn0sbykpfSkpYGAsZj0oMCxpLmRlZmF1bHQpKGwuQm94KWBcbiAgLyoqXG4gICAqIDEuIEluaXRpYWxpemUgbG9jYWwgdmFyaWFibGVzIHdpdGggcmVhc29uYWJsZSBkZWZhdWx0c1xuICAgKi9cbiAgLS1weC1kZWZhdWx0OiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLmJhc2V9O1xuXG4gIC8qKlxuICAgKiAyLiBJbmplY3QgdmFyaWFudHMgLS0gPyBXaGF0IGFyZSBWYXJpYW50c1xuICAgKi9cbiAgJHsoMCxjLmdldFZhcmlhbnRDU1MpKHUudmFyaWFudHMsdS5WYXJpYW50LmNvbnRhaW5lclNpemUpfVxuICAkeygwLGMuZ2V0VmFyaWFudENTUykodS52YXJpYW50cyx1LlZhcmlhbnQuaWNvblNpemUpfVxuXG4gIHdpZHRoOiB2YXIoLS1weC1jb250YWluZXIsIHZhcigtLXB4LWRlZmF1bHQpKTtcbiAgaGVpZ2h0OiB2YXIoLS1weC1jb250YWluZXIsIHZhcigtLXB4LWRlZmF1bHQpKTtcblxuICAvKiBTVkcgQXNzZXQgKi9cbiAgJiA+ICosXG4gICR7ZH0ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiB2YXIoLS1weC1pY29uLCB2YXIoLS1weC1kZWZhdWx0KSk7XG4gICAgaGVpZ2h0OiB2YXIoLS1weC1pY29uLCB2YXIoLS1weC1kZWZhdWx0KSk7XG4gICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgfVxuYH0sOTY2OTooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC52YXJpYW50cz10LlZhcmlhbnQ9dm9pZCAwO2NvbnN0IHI9big3NTE4KTt0LlZhcmlhbnQ9e2ljb25TaXplOlwiaWNvblNpemVcIixjb250YWluZXJTaXplOlwiY29udGFpbmVyU2l6ZVwifSx0LnZhcmlhbnRzPXtbdC5WYXJpYW50Lmljb25TaXplXTp7eHNtYWxsOnIuY3NzYFxuICAgICAgLS1weC1pY29uOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnhzbWFsbH07XG4gICAgYCxzbWFsbDpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5zbWFsbH07XG4gICAgYCxiYXNlOnIuY3NzYFxuICAgICAgLS1weC1pY29uOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLmJhc2V9O1xuICAgIGAsbGFyZ2U6ci5jc3NgXG4gICAgICAtLXB4LWljb246ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUubGFyZ2V9O1xuICAgIGAseGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1pY29uOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnhsYXJnZX07XG4gICAgYCx4eGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1pY29uOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnh4bGFyZ2V9O1xuICAgIGAseHh4bGFyZ2U6ci5jc3NgXG4gICAgICAtLXB4LWljb246ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueHh4bGFyZ2V9O1xuICAgIGB9LFt0LlZhcmlhbnQuY29udGFpbmVyU2l6ZV06e3hzbWFsbDpyLmNzc2BcbiAgICAgIC0tcHgtY29udGFpbmVyOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnhzbWFsbH07XG4gICAgYCxzbWFsbDpyLmNzc2BcbiAgICAgIC0tcHgtY29udGFpbmVyOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnNtYWxsfTtcbiAgICBgLGJhc2U6ci5jc3NgXG4gICAgICAtLXB4LWNvbnRhaW5lcjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5iYXNlfTtcbiAgICBgLGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1jb250YWluZXI6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUubGFyZ2V9O1xuICAgIGAseGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1jb250YWluZXI6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueGxhcmdlfTtcbiAgICBgLHh4bGFyZ2U6ci5jc3NgXG4gICAgICAtLXB4LWNvbnRhaW5lcjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54eGxhcmdlfTtcbiAgICBgLHh4eGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1jb250YWluZXI6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueHh4bGFyZ2V9O1xuICAgIGB9fX0sOTYzNDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNzAwNiksdCl9LDkyODU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQmVsbEZpbGxlZEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkJlbGxGaWxsZWRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeHMpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIyMFwiLGhlaWdodDpcIjIwXCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjpbKDAsby5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTEyIDJDMTEuMjI5NiAyIDEwLjU4NDUgMi41ODM3OSAxMC41MDc4IDMuMzUwNDFDMTAuNDk1MiAzLjQ3Njc3IDEwLjQwNTcgMy41ODE1NyAxMC4yODQ2IDMuNjE5NzFDOC4wNjU1NCA0LjMxODUxIDYuNDIyMzggNi4zMzc5NiA2LjMwMDMzIDguNzc4OTNMNi4xMjM4MiAxMi4zMDkxQzYuMDk5MzYgMTIuNzk4MiA1LjgxMzMxIDEzLjIzNjIgNS4zNzUzIDEzLjQ1NTJMNC42MDczOSAxMy44MzkyQzQuMTQ3NjEgMTQuMDY5MSAzLjg1NzE4IDE0LjUzOSAzLjg1NzE4IDE1LjA1MzFWMTYuMjVDMy44NTcxOCAxNi42MjQ4IDQuMTYwOTggMTYuOTI4NiA0LjUzNTc1IDE2LjkyODZIMTkuNDY0M0MxOS44MzkxIDE2LjkyODYgMjAuMTQyOSAxNi42MjQ4IDIwLjE0MjkgMTYuMjVWMTUuMDUzMUMyMC4xNDI5IDE0LjUzOSAxOS44NTI1IDE0LjA2OTEgMTkuMzkyNyAxMy44MzkyTDE4LjYyNDcgMTMuNDU1MkMxOC4xODY3IDEzLjIzNjIgMTcuOTAwNiAxMi43OTgyIDE3Ljg3NjIgMTIuMzA5MUwxNy42OTk3IDguNzc4OTNDMTcuNTc3NiA2LjMzNzk2IDE1LjkzNDQgNC4zMTg1MSAxMy43MTU0IDMuNjE5NzJDMTMuNTk0MiAzLjU4MTU3IDEzLjUwNDggMy40NzY3OCAxMy40OTIyIDMuMzUwNDFDMTMuNDE1NSAyLjU4MzggMTIuNzcwNCAyIDEyIDJaXCIsZmlsbDp0fSksKDAsby5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTkuMjg1NzEgMTguMjg1N0M5LjI4NTcxIDE5Ljc4NDggMTAuNTAwOSAyMSAxMiAyMUMxMy40OTkxIDIxIDE0LjcxNDMgMTkuNzg0OCAxNC43MTQzIDE4LjI4NTdMOS4yODU3MSAxOC4yODU3WlwiLGZpbGw6dH0pXX0pKX19LDQ3MTg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQmVsbEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkJlbGxJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk03LjQ3MzA2IDEuMjI5NDNDNi41MTkzIDEuMjI5NDMgNS44NzI5MSAxLjk4Mzk5IDUuNjUzNzEgMi43MjY5N0M1LjY1MjA3IDIuNzI5MzIgNS42NDkyMSAyLjczMzAzIDUuNjQ0ODUgMi43Mzc1NkM1LjYzOTIgMi43NDM0MiA1LjYzMjY0IDIuNzQ4OTYgNS42MjU5OSAyLjc1MzU1QzUuNjE5MjYgMi43NTgxOSA1LjYxNDUyIDIuNzYwNCA1LjYxMyAyLjc2MTAyTDUuNjEyNjUgMi43NjExN0M1LjA1MDg4IDIuOTkyNTEgNC4zOTE5MyAzLjM2MDIyIDMuODc2OTcgNC4wMzM1N0MzLjM1ODE1IDQuNzExOTYgMy4wMTk0OSA1LjY1NTcxIDMuMDE5NDUgNi45Nzc0OUw1LjY1MzcxIDIuNzI2OTdMMy4wMTk0NSA2Ljk3Nzc2QzMuMDE4NjYgOC4zMDE2NSAyLjg3ODcxIDkuMDMxMyAyLjY3MDkxIDkuNTM0MzlDMi40ODg3OSA5Ljk3NTMxIDIuMjQ4ODkgMTAuMjY1OCAxLjkxMiAxMC42NzM4TDEuOTExODUgMTAuNjc0QzEuODYyNjMgMTAuNzMzNiAxLjgxMTM1IDEwLjc5NTcgMS43NTc4NyAxMC44NjEyQzEuMTQ5MjMgMTEuNjA2IDEuNzI3MjkgMTIuNjQxOSAyLjY1OTg2IDEyLjY0MTlINS4wOTAxOUM1LjIxMTkxIDEyLjk4IDUuNDA3MjYgMTMuMjkwNiA1LjY2NjE4IDEzLjU0OTVDNi4xMjgyNyAxNC4wMTE2IDYuNzU0OTkgMTQuMjcxMiA3LjQwODQ4IDE0LjI3MTJDOC4wNjE5NyAxNC4yNzEyIDguNjg4NyAxNC4wMTE2IDkuMTUwNzggMTMuNTQ5NUM5LjQwOTcxIDEzLjI5MDYgOS42MDUwNSAxMi45OCA5LjcyNjc4IDEyLjY0MTlIMTIuMjg5NEMxMy4yMjM0IDEyLjY0MTkgMTMuNzkyIDExLjYwMDggMTMuMTg4NCAxMC44NjEzTDEzLjE4ODMgMTAuODYxMkMxMy4xMzQ4IDEwLjc5NTcgMTMuMDgzNSAxMC43MzM2IDEzLjAzNDIgMTAuNjc0QzEyLjY5NzMgMTAuMjY1OSAxMi40NTc0IDkuOTc1NCAxMi4yNzU1IDkuNTM0NTFDMTIuMDY3OCA5LjAzMTQ3IDExLjkyODIgOC4zMDE4MiAxMS45MjgyIDYuOTc3NzZDMTEuOTI4MiA1LjY1Njg4IDExLjU4OTEgNC43MTI5OSAxMS4wNzAzIDQuMDM0MzNDMTAuNTU1MyAzLjM2MDc1IDkuODk2NTIgMi45OTIzNCA5LjMzNDk5IDIuNzYxMTVMOS4zMzQ2NyAyLjc2MTAyQzkuMzM0MDkgMi43NjA3OSA5LjMyOTgyIDIuNzU4ODggOS4zMjMxMyAyLjc1NDI0QzkuMzE2NTUgMi43NDk2NyA5LjMwOTgxIDIuNzQzOTQgOS4zMDM4MiAyLjczNzdDOS4yOTg3NSAyLjczMjQxIDkuMjk1NDUgMi43MjgwMyA5LjI5MzYzIDIuNzI1MzFDOS4wNzI2NCAxLjk4Mzc4IDguNDI2OTEgMS4yMjk0MyA3LjQ3MzA2IDEuMjI5NDNaTTguNjg2NTQgMTIuNjQxOUg2LjEzMDQyQzYuMTg3NiAxMi43Mjk1IDYuMjU0MDMgMTIuODExNSA2LjMyOTEgMTIuODg2NkM2LjYxNTM3IDEzLjE3MjkgNy4wMDM2MyAxMy4zMzM3IDcuNDA4NDggMTMuMzMzN0M3LjgxMzMzIDEzLjMzMzcgOC4yMDE2IDEzLjE3MjkgOC40ODc4NyAxMi44ODY2QzguNTYyOTMgMTIuODExNSA4LjYyOTM3IDEyLjcyOTUgOC42ODY1NCAxMi42NDE5Wk02LjU1MTQ1IDIuOTk3MTZDNi42OTU3MSAyLjUwMDg1IDcuMDcxMjEgMi4xNjY5MyA3LjQ3MzA2IDIuMTY2OTNDNy44NzQ5MiAyLjE2NjkzIDguMjUwNSAyLjUwMDYxIDguMzk2NiAyLjk5Nzg1TDguMzk2OTUgMi45OTkwNEM4LjQ4NDk5IDMuMjk1NzUgOC43Mjg0MyAzLjUyNTM4IDguOTc4MDkgMy42MjgwNkM5LjQ1NjI1IDMuODI0OTIgOS45NDg5NCA0LjExMTE5IDEwLjMyNTUgNC42MDM3M0MxMC42OTgyIDUuMDkxMTkgMTAuOTkwNyA1LjgyNDg2IDEwLjk5MDcgNi45Nzc3NkMxMC45OTA3IDguMzU1MDYgMTEuMTMzNyA5LjIyNTUgMTEuNDA4OSA5Ljg5MjE3QzExLjY0ODMgMTAuNDcyMyAxMS45ODIzIDEwLjg3NDkgMTIuMzE2NyAxMS4yNzhDMTIuMzY1MyAxMS4zMzY2IDEyLjQxMzkgMTEuMzk1MSAxMi40NjIyIDExLjQ1NDJDMTIuNTAxNiAxMS41MDI1IDEyLjUwNDYgMTEuNTU1MiAxMi40NzkzIDExLjYwNUMxMi40NTUzIDExLjY1MjQgMTIuMzk5NiAxMS43MDQ0IDEyLjI4OTQgMTEuNzA0NEgyLjY1OTg2QzIuNTQ2MDQgMTEuNzA0NCAyLjQ4OTU1IDExLjY1MDkgMi40NjU4OCAxMS42MDQ1QzIuNDQxMTkgMTEuNTU2MiAyLjQ0MzI1IDExLjUwNCAyLjQ4MzggMTEuNDU0NEwyLjQ4MzgzIDExLjQ1NDRDMi41MzIxNSAxMS4zOTUyIDIuNTgwNzUgMTEuMzM2NiAyLjYyOTM0IDExLjI3ODFMMi42Mjk0NiAxMS4yNzc5QzIuOTYzODkgMTAuODc0OCAzLjI5Nzg1IDEwLjQ3MjMgMy41Mzc0IDkuODkyMjlDMy44MTI3MyA5LjIyNTcxIDMuOTU2MTUgOC4zNTUzMyAzLjk1Njk1IDYuOTc4MDNWNi45Nzc3NkMzLjk1Njk1IDUuODIzNDEgNC4yNDkyOCA1LjA4OTk5IDQuNjIxNjUgNC42MDMwOUM0Ljk5NzkyIDQuMTExMSA1LjQ5MDQ0IDMuODI1MzcgNS45Njk2MyAzLjYyODA1QzYuMjE2NjEgMy41MjY0NSA2LjQ2MjU3IDMuMzAwMDIgNi41NTExMSAyLjk5ODMzTDYuNTUxNDUgMi45OTcxNlpcIixmaWxsOnQscm9sZTpcImltZ1wifSl9KSl9fSw4MjY1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJyb2tlbkxpbmtJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5Ccm9rZW5MaW5rSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3hzKShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMzJcIixoZWlnaHQ6XCIzMlwiLHZpZXdCb3g6XCIwIDAgMzIgMzJcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46WygwLG8uanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk02LjMzMzUgMy43MDAyQzYuMDU3MzUgMy43MDAyIDUuODMzNSAzLjkyNDA1IDUuODMzNSA0LjIwMDJWMjcuODAwMkM1LjgzMzUgMjguMDc2MyA2LjA1NzM1IDI4LjMwMDIgNi4zMzM1IDI4LjMwMDJIMjUuNjY2OEMyNS45NDMgMjguMzAwMiAyNi4xNjY4IDI4LjA3NjMgMjYuMTY2OCAyNy44MDAyVjEyLjIzMzVIMTguMTMzNUMxNy44NTc0IDEyLjIzMzUgMTcuNjMzNSAxMi4wMDk3IDE3LjYzMzUgMTEuNzMzNVYzLjcwMDJINi4zMzM1Wk0xOC42MzM1IDQuNDA3M0wyNS40NTk3IDExLjIzMzVIMTguNjMzNVY0LjQwNzNaTTQuODMzNSA0LjIwMDJDNC44MzM1IDMuMzcxNzcgNS41MDUwNyAyLjcwMDIgNi4zMzM1IDIuNzAwMkgxOC4xMzM1QzE4LjI2NjEgMi43MDAyIDE4LjM5MzMgMi43NTI4NyAxOC40ODcgMi44NDY2NEwyNy4wMjA0IDExLjM4QzI3LjExNDEgMTEuNDczNyAyNy4xNjY4IDExLjYwMDkgMjcuMTY2OCAxMS43MzM1VjI3LjgwMDJDMjcuMTY2OCAyOC42Mjg2IDI2LjQ5NTMgMjkuMzAwMiAyNS42NjY4IDI5LjMwMDJINi4zMzM1QzUuNTA1MDcgMjkuMzAwMiA0LjgzMzUgMjguNjI4NiA0LjgzMzUgMjcuODAwMlY0LjIwMDJaXCIsZmlsbDp0fSksKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTE0LjI0OCAyMS45MDg0VjIxLjg0MDlDMTQuMjUyOCAyMS40MDA2IDE0LjI5NjYgMjEuMDUwMiAxNC4zNzk0IDIwLjc4OThDMTQuNDY0NyAyMC41Mjk0IDE0LjU4NTQgMjAuMzE4NyAxNC43NDE3IDIwLjE1NzdDMTQuODk3OSAxOS45OTY3IDE1LjA4NjEgMTkuODQ5OSAxNS4zMDYzIDE5LjcxNzNDMTUuNDQ4MyAxOS42Mjc0IDE1LjU3NjIgMTkuNTI2OCAxNS42ODk4IDE5LjQxNTVDMTUuODAzNCAxOS4zMDQyIDE1Ljg5MzQgMTkuMTc2NCAxNS45NTk3IDE5LjAzMkMxNi4wMjYgMTguODg3NSAxNi4wNTkxIDE4LjcyNzcgMTYuMDU5MSAxOC41NTI2QzE2LjA1OTEgMTguMzQxOSAxNi4wMDk0IDE4LjE1OTYgMTUuOTEgMTguMDA1N0MxNS44MTA1IDE3Ljg1MTggMTUuNjc4IDE3LjczMzQgMTUuNTEyMyAxNy42NTA2QzE1LjM0ODkgMTcuNTY1MyAxNS4xNjY2IDE3LjUyMjcgMTQuOTY1NCAxNy41MjI3QzE0Ljc4MzEgMTcuNTIyNyAxNC42MDkxIDE3LjU2MDYgMTQuNDQzNCAxNy42MzY0QzE0LjI3NzYgMTcuNzEyMSAxNC4xNDAzIDE3LjgzMDUgMTQuMDMxNCAxNy45OTE1QzEzLjkyMjUgMTguMTUwMSAxMy44NTk4IDE4LjM1NDkgMTMuODQzMiAxOC42MDU4SDEyLjc2MzdDMTIuNzgwMiAxOC4xNzk3IDEyLjg4OCAxNy44MTk4IDEzLjA4NjggMTcuNTI2M0MxMy4yODU3IDE3LjIzMDQgMTMuNTQ4NSAxNy4wMDY2IDEzLjg3NTIgMTYuODU1MUMxNC4yMDQyIDE2LjcwMzYgMTQuNTY3NiAxNi42Mjc4IDE0Ljk2NTQgMTYuNjI3OEMxNS40MDEgMTYuNjI3OCAxNS43ODIxIDE2LjcwOTUgMTYuMTA4OCAxNi44NzI5QzE2LjQzNTUgMTcuMDMzOSAxNi42ODg5IDE3LjI1OTkgMTYuODY4OCAxNy41NTExQzE3LjA1MTEgMTcuODQgMTcuMTQyMiAxOC4xNzczIDE3LjE0MjIgMTguNTYzMkMxNy4xNDIyIDE4LjgyODQgMTcuMTAwOCAxOS4wNjc1IDE3LjAxNzkgMTkuMjgwNUMxNi45MzUxIDE5LjQ5MTIgMTYuODE2NyAxOS42Nzk1IDE2LjY2MjggMTkuODQ1MkMxNi41MTEzIDIwLjAxMDkgMTYuMzI5IDIwLjE1NzcgMTYuMTE1OSAyMC4yODU1QzE1LjkxNDcgMjAuNDExIDE1Ljc1MTQgMjAuNTQxMiAxNS42MjU5IDIwLjY3NjFDMTUuNTAyOCAyMC44MTExIDE1LjQxMjggMjAuOTcwOSAxNS4zNTYgMjEuMTU1NUMxNS4yOTkyIDIxLjM0MDIgMTUuMjY4NCAyMS41Njg3IDE1LjI2MzcgMjEuODQwOVYyMS45MDg0SDE0LjI0OFpNMTQuNzg0MyAyNC4wNjc1QzE0LjU5MDEgMjQuMDY3NSAxNC40MjMyIDIzLjk5ODggMTQuMjgzNiAyMy44NjE1QzE0LjE0MzkgMjMuNzIxOCAxNC4wNzQgMjMuNTUzNyAxNC4wNzQgMjMuMzU3MkMxNC4wNzQgMjMuMTYzMSAxNC4xNDM5IDIyLjk5NzQgMTQuMjgzNiAyMi44NjAxQzE0LjQyMzIgMjIuNzIwNCAxNC41OTAxIDIyLjY1MDYgMTQuNzg0MyAyMi42NTA2QzE0Ljk3NiAyMi42NTA2IDE1LjE0MTcgMjIuNzIwNCAxNS4yODE0IDIyLjg2MDFDMTUuNDIzNSAyMi45OTc0IDE1LjQ5NDUgMjMuMTYzMSAxNS40OTQ1IDIzLjM1NzJDMTUuNDk0NSAyMy40ODc1IDE1LjQ2MTQgMjMuNjA3IDE1LjM5NTEgMjMuNzE1OUMxNS4zMzExIDIzLjgyMjQgMTUuMjQ1OSAyMy45MDc3IDE1LjEzOTQgMjMuOTcxNkMxNS4wMzI4IDI0LjAzNTUgMTQuOTE0NSAyNC4wNjc1IDE0Ljc4NDMgMjQuMDY3NVpcIixmaWxsOnR9KV19KSl9fSw2NDQ3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoZXZyb25Eb3duSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuQ2hldnJvbkRvd25JY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIyNFwiLGhlaWdodDpcIjI0XCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCJ9LHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIsT2JqZWN0LmFzc2lnbih7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk01LjA1MjgyIDkuODg3MDdDNS4zMzYxMiA5LjU4NDg5IDUuODEwNzUgOS41Njk1OCA2LjExMjkzIDkuODUyODdMMTIgMTUuMzcyTDE3Ljg4NyA5Ljg1Mjg3QzE4LjE4OTIgOS41Njk1OCAxOC42NjM4IDkuNTg0ODkgMTguOTQ3MSA5Ljg4NzA3QzE5LjIzMDQgMTAuMTg5MyAxOS4yMTUxIDEwLjY2MzkgMTguOTEyOSAxMC45NDcyTDEyLjUxMjkgMTYuOTQ3MkMxMi4yMjQ0IDE3LjIxNzYgMTEuNzc1NSAxNy4yMTc2IDExLjQ4NyAxNi45NDcyTDUuMDg3MDIgMTAuOTQ3MkM0Ljc4NDg0IDEwLjY2MzkgNC43Njk1MiAxMC4xODkzIDUuMDUyODIgOS44ODcwN1pcIixmaWxsOnR9LG4pKX0pKX19LDIxNDc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2hldnJvbkxlZnRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5DaGV2cm9uTGVmdEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix3aWR0aDpcIjI0XCIsaGVpZ2h0OlwiMjRcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIn0se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIixPYmplY3QuYXNzaWduKHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTE0LjExMjcgNS4wNTI3MkMxNC40MTQ5IDUuMzM2MDEgMTQuNDMwMiA1LjgxMDY0IDE0LjE0NjkgNi4xMTI4Mkw4LjYyNzg0IDExLjk5OTlMMTQuMTQ2OSAxNy44ODY5QzE0LjQzMDIgMTguMTg5MSAxNC40MTQ5IDE4LjY2MzcgMTQuMTEyNyAxOC45NDdDMTMuODEwNiAxOS4yMzAzIDEzLjMzNTkgMTkuMjE1IDEzLjA1MjYgMTguOTEyOEw3LjA1MjY0IDEyLjUxMjhDNi43ODIxOCAxMi4yMjQzIDYuNzgyMTggMTEuNzc1NCA3LjA1MjY0IDExLjQ4NjlMMTMuMDUyNiA1LjA4NjkxQzEzLjMzNTkgNC43ODQ3MyAxMy44MTA2IDQuNzY5NDIgMTQuMTEyNyA1LjA1MjcyWlwiLGZpbGw6dH0sbikpfSkpfX0sMjQwMjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DaGV2cm9uUmlnaHRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5DaGV2cm9uUmlnaHRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIyNFwiLGhlaWdodDpcIjI0XCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCJ9LHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIsT2JqZWN0LmFzc2lnbih7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk05Ljg2OTg2IDYuNjY5NzJDMTAuMTYyOCA2LjM3NjgzIDEwLjYzNzYgNi4zNzY4MyAxMC45MzA1IDYuNjY5NzJMMTUuNzMwNSAxMS40Njk3QzE1Ljg3MTIgMTEuNjEwNCAxNS45NTAyIDExLjgwMTEgMTUuOTUwMiAxMkMxNS45NTAyIDEyLjE5OSAxNS44NzEyIDEyLjM4OTcgMTUuNzMwNSAxMi41MzA0TDEwLjkzMDUgMTcuMzMwNEMxMC42Mzc2IDE3LjYyMzMgMTAuMTYyOCAxNy42MjMzIDkuODY5ODYgMTcuMzMwNEM5LjU3Njk2IDE3LjAzNzUgOS41NzY5NiAxNi41NjI2IDkuODY5ODYgMTYuMjY5N0wxNC4xMzk1IDEyTDkuODY5ODYgNy43MzAzOEM5LjU3Njk2IDcuNDM3NDkgOS41NzY5NiA2Ljk2MjYxIDkuODY5ODYgNi42Njk3MlpcIixmaWxsOnR9LG4pKX0pKX19LDQ4MjU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2hldnJvblVwSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuQ2hldnJvblVwSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMjRcIixoZWlnaHQ6XCIyNFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwifSx7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLE9iamVjdC5hc3NpZ24oe2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNS4wNTI4NSAxNC4xMTI5QzUuMzM2MTUgMTQuNDE1MSA1LjgxMDc4IDE0LjQzMDQgNi4xMTI5NiAxNC4xNDcxTDEyIDguNjI4MDJMMTcuODg3IDE0LjE0NzFDMTguMTg5MiAxNC40MzA0IDE4LjY2MzkgMTQuNDE1MSAxOC45NDcyIDE0LjExMjlDMTkuMjMwNSAxMy44MTA3IDE5LjIxNTEgMTMuMzM2MSAxOC45MTMgMTMuMDUyOEwxMi41MTMgNy4wNTI4MkMxMi4yMjQ1IDYuNzgyMzYgMTEuNzc1NSA2Ljc4MjM2IDExLjQ4NzEgNy4wNTI4Mkw1LjA4NzA1IDEzLjA1MjhDNC43ODQ4NyAxMy4zMzYxIDQuNzY5NTYgMTMuODEwNyA1LjA1Mjg1IDE0LjExMjlaXCIsZmlsbDp0fSxuKSl9KSl9fSwxMjgxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkV4Y2xhbWF0aW9uQ2lyY2xlZEZpbGxlZEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKSxhPW4oNzUxOCksaT1uKDY2ODkpLGw9bigzNDcxKTt0LkV4Y2xhbWF0aW9uQ2lyY2xlZEZpbGxlZEljb249ZT0+e3ZhcntzZWNvbmRhcnlDb2xvcjp0LGNvbG9yOm49XCJjdXJyZW50Q29sb3JcIn09ZSxjPXIoZSxbXCJzZWNvbmRhcnlDb2xvclwiLFwiY29sb3JcIl0pO2NvbnN0IHM9KDAsaS51c2VDb250ZXh0KShhLlRoZW1lQ29udGV4dCkuc2VsZWN0ZWRTY2hlbWU7cmV0dXJuIHR8fCh0PVwiZGFya1wiPT09cz9sLkNvbG9yLmRhcmtHcmF5NTpsLkNvbG9yLndoaXRlKSwoMCxvLmpzeHMpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE3XCIsdmlld0JveDpcIjAgMCAxNiAxN1wiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxjLHtjaGlsZHJlbjpbKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTcuOTk5ODggMTUuMzMxN0MxMS43NzI5IDE1LjMzMTcgMTQuODMxNiAxMi4yNzMxIDE0LjgzMTYgOC41MDAwN0MxNC44MzE2IDQuNzI3MDQgMTEuNzcyOSAxLjY2ODQgNy45OTk4OCAxLjY2ODRDNC4yMjY4NiAxLjY2ODQgMS4xNjgyMSA0LjcyNzA0IDEuMTY4MjEgOC41MDAwN0MxLjE2ODIxIDEyLjI3MzEgNC4yMjY4NiAxNS4zMzE3IDcuOTk5ODggMTUuMzMxN1pcIixmaWxsOm59KSwoMCxvLmpzeCkoXCJtYXNrXCIsT2JqZWN0LmFzc2lnbih7aWQ6XCJwYXRoLTItaW5zaWRlLTFfNl8yNjIwMzNcIixmaWxsOnR9LHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNy45OTk5MyA0LjM3Mzg0QzcuNTc1MjUgNC4zNzM4NCA3LjIzNTY0IDQuNzI2NzYgNy4yNTE5NiA1LjE1MTEzTDcuNDIyOTYgOS41OTcwNkM3LjQzNDg5IDkuOTA3MDggNy42ODk2OCAxMC4xNTIzIDcuOTk5OTMgMTAuMTUyM0M4LjMxMDE5IDEwLjE1MjMgOC41NjQ5OCA5LjkwNzA4IDguNTc2OSA5LjU5NzA2TDguNzQ3OSA1LjE1MTEzQzguNzY0MjIgNC43MjY3NiA4LjQyNDYxIDQuMzczODQgNy45OTk5MyA0LjM3Mzg0Wk03Ljk5OTkzIDEyLjY0MDZDOC40NjAyMiAxMi42NDA2IDguODMzMzUgMTIuMjY3NSA4LjgzMzM1IDExLjgwNzJDOC44MzMzNSAxMS4zNDY5IDguNDYwMjIgMTAuOTczOCA3Ljk5OTkzIDEwLjk3MzhDNy41Mzk2NCAxMC45NzM4IDcuMTY2NSAxMS4zNDY5IDcuMTY2NSAxMS44MDcyQzcuMTY2NSAxMi4yNjc1IDcuNTM5NjQgMTIuNjQwNiA3Ljk5OTkzIDEyLjY0MDZaXCJ9KX0pKSwoMCxvLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNy45OTk5MyA0LjM3Mzg0QzcuNTc1MjUgNC4zNzM4NCA3LjIzNTY0IDQuNzI2NzYgNy4yNTE5NiA1LjE1MTEzTDcuNDIyOTYgOS41OTcwNkM3LjQzNDg5IDkuOTA3MDggNy42ODk2OCAxMC4xNTIzIDcuOTk5OTMgMTAuMTUyM0M4LjMxMDE5IDEwLjE1MjMgOC41NjQ5OCA5LjkwNzA4IDguNTc2OSA5LjU5NzA2TDguNzQ3OSA1LjE1MTEzQzguNzY0MjIgNC43MjY3NiA4LjQyNDYxIDQuMzczODQgNy45OTk5MyA0LjM3Mzg0Wk03Ljk5OTkzIDEyLjY0MDZDOC40NjAyMiAxMi42NDA2IDguODMzMzUgMTIuMjY3NSA4LjgzMzM1IDExLjgwNzJDOC44MzMzNSAxMS4zNDY5IDguNDYwMjIgMTAuOTczOCA3Ljk5OTkzIDEwLjk3MzhDNy41Mzk2NCAxMC45NzM4IDcuMTY2NSAxMS4zNDY5IDcuMTY2NSAxMS44MDcyQzcuMTY2NSAxMi4yNjc1IDcuNTM5NjQgMTIuNjQwNiA3Ljk5OTkzIDEyLjY0MDZaXCIsZmlsbDp0fSksKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTcuMjUxOTYgNS4xNTExM0w1LjY0ODc0IDUuMjEyNzlMNS42NDg3NCA1LjIxMjc5TDcuMjUxOTYgNS4xNTExM1pNNy40MjI5NiA5LjU5NzA2TDkuMDI2MTggOS41MzU0TDkuMDI2MTggOS41MzU0TDcuNDIyOTYgOS41OTcwNlpNOC41NzY5IDkuNTk3MDZMMTAuMTgwMSA5LjY1ODcyTDguNTc2OSA5LjU5NzA2Wk04Ljc0NzkgNS4xNTExM0wxMC4zNTExIDUuMjEyNzlMMTAuMzUxMSA1LjIxMjc5TDguNzQ3OSA1LjE1MTEzWk04Ljg1NTE5IDUuMDg5NDdDOC44NzM4NSA1LjU3NDcgOC40ODU1MyA1Ljk3ODI1IDcuOTk5OTMgNS45NzgyNVYyLjc2OTQzQzYuNjY0OTggMi43Njk0MyA1LjU5NzQ0IDMuODc4ODIgNS42NDg3NCA1LjIxMjc5TDguODU1MTkgNS4wODk0N1pNOS4wMjYxOCA5LjUzNTRMOC44NTUxOSA1LjA4OTQ3TDUuNjQ4NzQgNS4yMTI3OUw1LjgxOTc0IDkuNjU4NzJMOS4wMjYxOCA5LjUzNTRaTTcuOTk5OTMgOC41NDc4NkM4LjU1MTc3IDguNTQ3ODYgOS4wMDQ5OCA4Ljk4Mzk2IDkuMDI2MTggOS41MzU0TDUuODE5NzQgOS42NTg3MkM1Ljg2NDggMTAuODMwMiA2LjgyNzU4IDExLjc1NjcgNy45OTk5MyAxMS43NTY3VjguNTQ3ODZaTTYuOTczNjggOS41MzU0QzYuOTk0ODkgOC45ODM5NiA3LjQ0ODA5IDguNTQ3ODYgNy45OTk5MyA4LjU0Nzg2VjExLjc1NjdDOS4xNzIyOCAxMS43NTY3IDEwLjEzNTEgMTAuODMwMiAxMC4xODAxIDkuNjU4NzJMNi45NzM2OCA5LjUzNTRaTTcuMTQ0NjggNS4wODk0N0w2Ljk3MzY4IDkuNTM1NEwxMC4xODAxIDkuNjU4NzJMMTAuMzUxMSA1LjIxMjc5TDcuMTQ0NjggNS4wODk0N1pNNy45OTk5MyA1Ljk3ODI1QzcuNTE0MzQgNS45NzgyNSA3LjEyNjAyIDUuNTc0NyA3LjE0NDY4IDUuMDg5NDdMMTAuMzUxMSA1LjIxMjc5QzEwLjQwMjQgMy44Nzg4MiA5LjMzNDg5IDIuNzY5NDMgNy45OTk5MyAyLjc2OTQzVjUuOTc4MjVaTTcuMjI4OTUgMTEuODA3MkM3LjIyODk1IDExLjM4MTQgNy41NzQxMyAxMS4wMzYyIDcuOTk5OTMgMTEuMDM2MlYxNC4yNDVDOS4zNDYzMSAxNC4yNDUgMTAuNDM3OCAxMy4xNTM2IDEwLjQzNzggMTEuODA3Mkg3LjIyODk1Wk03Ljk5OTkzIDEyLjU3ODJDNy41NzQxMyAxMi41NzgyIDcuMjI4OTUgMTIuMjMzIDcuMjI4OTUgMTEuODA3MkgxMC40Mzc4QzEwLjQzNzggMTAuNDYwOCA5LjM0NjMxIDkuMzY5MzcgNy45OTk5MyA5LjM2OTM3VjEyLjU3ODJaTTguNzcwOTEgMTEuODA3MkM4Ljc3MDkxIDEyLjIzMyA4LjQyNTczIDEyLjU3ODIgNy45OTk5MyAxMi41NzgyVjkuMzY5MzdDNi42NTM1NSA5LjM2OTM3IDUuNTYyMSAxMC40NjA4IDUuNTYyMSAxMS44MDcySDguNzcwOTFaTTcuOTk5OTMgMTEuMDM2MkM4LjQyNTczIDExLjAzNjIgOC43NzA5MSAxMS4zODE0IDguNzcwOTEgMTEuODA3Mkg1LjU2MjFDNS41NjIxIDEzLjE1MzYgNi42NTM1NSAxNC4yNDUgNy45OTk5MyAxNC4yNDVWMTEuMDM2MlpcIixmaWxsOnQsbWFzazpcInVybCgjcGF0aC0yLWluc2lkZS0xXzZfMjYyMDMzKVwifSldfSkpfX0sNjc5NTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5GaWx0ZXJJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5GaWx0ZXJJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjEyXCIsaGVpZ2h0OlwiN1wiLHZpZXdCb3g6XCIwIDAgMTIgN1wiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNNCA2LjVDNCA2LjM2NzM5IDQuMDUyNjggNi4yNDAyMSA0LjE0NjQ1IDYuMTQ2NDVDNC4yNDAyMSA2LjA1MjY4IDQuMzY3MzkgNiA0LjUgNkg3LjVDNy42MzI2MSA2IDcuNzU5NzkgNi4wNTI2OCA3Ljg1MzU1IDYuMTQ2NDVDNy45NDczMiA2LjI0MDIxIDggNi4zNjczOSA4IDYuNUM4IDYuNjMyNjEgNy45NDczMiA2Ljc1OTc5IDcuODUzNTUgNi44NTM1NUM3Ljc1OTc5IDYuOTQ3MzIgNy42MzI2MSA3IDcuNSA3SDQuNUM0LjM2NzM5IDcgNC4yNDAyMSA2Ljk0NzMyIDQuMTQ2NDUgNi44NTM1NUM0LjA1MjY4IDYuNzU5NzkgNCA2LjYzMjYxIDQgNi41Wk0yIDMuNUMyIDMuMzY3MzkgMi4wNTI2OCAzLjI0MDIxIDIuMTQ2NDUgMy4xNDY0NUMyLjI0MDIxIDMuMDUyNjggMi4zNjczOSAzIDIuNSAzSDkuNUM5LjYzMjYxIDMgOS43NTk3OSAzLjA1MjY4IDkuODUzNTUgMy4xNDY0NUM5Ljk0NzMyIDMuMjQwMjEgMTAgMy4zNjczOSAxMCAzLjVDMTAgMy42MzI2MSA5Ljk0NzMyIDMuNzU5NzkgOS44NTM1NSAzLjg1MzU1QzkuNzU5NzkgMy45NDczMiA5LjYzMjYxIDQgOS41IDRIMi41QzIuMzY3MzkgNCAyLjI0MDIxIDMuOTQ3MzIgMi4xNDY0NSAzLjg1MzU1QzIuMDUyNjggMy43NTk3OSAyIDMuNjMyNjEgMiAzLjVaTTAgMC41QzAgMC4zNjczOTIgMC4wNTI2Nzg1IDAuMjQwMjE1IDAuMTQ2NDQ3IDAuMTQ2NDQ3QzAuMjQwMjE1IDAuMDUyNjc4NSAwLjM2NzM5MiAwIDAuNSAwSDExLjVDMTEuNjMyNiAwIDExLjc1OTggMC4wNTI2Nzg1IDExLjg1MzYgMC4xNDY0NDdDMTEuOTQ3MyAwLjI0MDIxNSAxMiAwLjM2NzM5MiAxMiAwLjVDMTIgMC42MzI2MDggMTEuOTQ3MyAwLjc1OTc4NSAxMS44NTM2IDAuODUzNTUzQzExLjc1OTggMC45NDczMjEgMTEuNjMyNiAxIDExLjUgMUgwLjVDMC4zNjczOTIgMSAwLjI0MDIxNSAwLjk0NzMyMSAwLjE0NjQ0NyAwLjg1MzU1M0MwLjA1MjY3ODUgMC43NTk3ODUgMCAwLjYzMjYwOCAwIDAuNVpcIixmaWxsOnR9KX0pKX19LDExNzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5GbG9wcHlEaXNrSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuRmxvcHB5RGlza0ljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTJcIixoZWlnaHQ6XCIxMlwiLHZpZXdCb3g6XCIwIDAgMTIgMTJcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTEuODc1IDIuMTg3NUMxLjg3NSAyLjE1Mjk4IDEuOTAyOTggMi4xMjUgMS45Mzc1IDIuMTI1SDguMjMwMzlDOC4yNDY5NyAyLjEyNSA4LjI2Mjg3IDIuMTMxNTggOC4yNzQ1OSAyLjE0MzMxTDkuOTgxNjkgMy44NTA0MUM5Ljk5MzQxIDMuODYyMTMgMTAgMy44NzgwMyAxMCAzLjg5NDYxVjEwLjE4NzVDMTAgMTAuMjIyIDkuOTcyMDIgMTAuMjUgOS45Mzc1IDEwLjI1SDEuOTM3NUMxLjkwMjk4IDEwLjI1IDEuODc1IDEwLjIyMiAxLjg3NSAxMC4xODc1VjIuMTg3NVpNMS45Mzc1IDEuMjVDMS40MTk3MyAxLjI1IDEgMS42Njk3MyAxIDIuMTg3NVYxMC4xODc1QzEgMTAuNzA1MyAxLjQxOTczIDExLjEyNSAxLjkzNzUgMTEuMTI1SDkuOTM3NUMxMC40NTUzIDExLjEyNSAxMC44NzUgMTAuNzA1MyAxMC44NzUgMTAuMTg3NVYzLjg5NDYxQzEwLjg3NSAzLjY0NTk3IDEwLjc3NjIgMy40MDc1MSAxMC42MDA0IDMuMjMxNjlMOC44OTMzMSAxLjUyNDU5QzguNzE3NDkgMS4zNDg3NyA4LjQ3OTAzIDEuMjUgOC4yMzAzOSAxLjI1SDEuOTM3NVpNMi44NDkyNCAzLjQwODFDMi44NDkyNCAzLjIzNzU0IDIuOTg3NTEgMy4wOTkyNyAzLjE1ODA3IDMuMDk5MjdINy40ODE2QzcuNjUyMTUgMy4wOTkyNyA3Ljc5MDQyIDMuMjM3NTQgNy43OTA0MiAzLjQwODFWNC42NDMzOUM3Ljc5MDQyIDQuODEzOTUgNy42NTIxNSA0Ljk1MjIxIDcuNDgxNiA0Ljk1MjIxSDMuMTU4MDdDMi45ODc1MSA0Ljk1MjIxIDIuODQ5MjQgNC44MTM5NSAyLjg0OTI0IDQuNjQzMzlWMy40MDgxWk00LjUzNjggNi42Mzk3N0M0LjgyNjM4IDYuMzUwMTkgNS4yMTkxMyA2LjE4NzUxIDUuNjI4NjUgNi4xODc1MUM2LjAzODE4IDYuMTg3NTEgNi40MzA5MyA2LjM1MDE5IDYuNzIwNTEgNi42Mzk3N0M3LjAxMDA5IDYuOTI5MzUgNy4xNzI3NyA3LjMyMjEgNy4xNzI3NyA3LjczMTYzQzcuMTcyNzcgOC4xNDExNSA3LjAxMDA5IDguNTMzOSA2LjcyMDUxIDguODIzNDhDNi40MzA5MyA5LjExMzA2IDYuMDM4MTggOS4yNzU3NCA1LjYyODY1IDkuMjc1NzRDNS4yMTkxMyA5LjI3NTc0IDQuODI2MzggOS4xMTMwNiA0LjUzNjggOC44MjM0OEM0LjI0NzIyIDguNTMzOSA0LjA4NDU0IDguMTQxMTUgNC4wODQ1NCA3LjczMTYzQzQuMDg0NTQgNy4zMjIxIDQuMjQ3MjIgNi45MjkzNSA0LjUzNjggNi42Mzk3N1pcIixmaWxsOnQscm9sZTpcImltZ1wifSl9KSl9fSw1Mjk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRnJhZ21lbnRzSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuRnJhZ21lbnRzSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIyMFwiLGhlaWdodDpcIjIwXCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNOC44MDAwMSA0LjgwMDAySDQuODAwMDFDMy45MTc2MSA0LjgwMDAyIDMuMjAwMDEgNS41MTc2MiAzLjIwMDAxIDYuNDAwMDJWMTAuNEMzLjIwMDAxIDExLjI4MjQgMy45MTc2MSAxMiA0LjgwMDAxIDEySDguODAwMDFDOS42ODI0MSAxMiAxMC40IDExLjI4MjQgMTAuNCAxMC40VjYuNDAwMDJDMTAuNCA1LjUxNzYyIDkuNjgyNDEgNC44MDAwMiA4LjgwMDAxIDQuODAwMDJaTTIwLjM1OTIgNi40Njg4MkwxNy41MzEyIDMuNjQwMDJDMTYuOTA4IDMuMDE2MDIgMTUuODkyIDMuMDE2MDIgMTUuMjY4OCAzLjY0MDAyTDEyLjQ0MDggNi40Njg4MkMxMS44MTY4IDcuMDkyODIgMTEuODE2OCA4LjEwNzIyIDEyLjQ0MDggOC43MzEyMkwxNS4yNjg4IDExLjU2QzE1LjU4MDggMTEuODcyIDE1Ljk5MDQgMTIuMDI4IDE2LjQgMTIuMDI4QzE2LjgwOTYgMTIuMDI4IDE3LjIxOTIgMTEuODcyIDE3LjUzMTIgMTEuNTZMMjAuMzU5MiA4LjczMTIyQzIwLjk4MzIgOC4xMDcyMiAyMC45ODMyIDcuMDkyODIgMjAuMzU5MiA2LjQ2ODgyWk04LjgwMDAxIDEzLjZINC44MDAwMUMzLjkxNzYxIDEzLjYgMy4yMDAwMSAxNC4zMTc2IDMuMjAwMDEgMTUuMlYxOS4yQzMuMjAwMDEgMjAuMDgyNCAzLjkxNzYxIDIwLjggNC44MDAwMSAyMC44SDguODAwMDFDOS42ODI0MSAyMC44IDEwLjQgMjAuMDgyNCAxMC40IDE5LjJWMTUuMkMxMC40IDE0LjMxNzYgOS42ODI0MSAxMy42IDguODAwMDEgMTMuNlpNMTcuNiAxMy42SDEzLjZDMTIuNzE3NiAxMy42IDEyIDE0LjMxNzYgMTIgMTUuMlYxOS4yQzEyIDIwLjA4MjQgMTIuNzE3NiAyMC44IDEzLjYgMjAuOEgxNy42QzE4LjQ4MjQgMjAuOCAxOS4yIDIwLjA4MjQgMTkuMiAxOS4yVjE1LjJDMTkuMiAxNC4zMTc2IDE4LjQ4MjQgMTMuNiAxNy42IDEzLjZaXCIsZmlsbDp0fSl9KSl9fSw3Nzg4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkxpZ2h0QnVsYkZpbGxlZEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkxpZ2h0QnVsYkZpbGxlZEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4cykoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjEwXCIsaGVpZ2h0OlwiMTJcIix2aWV3Qm94OlwiMCAwIDEwIDEyXCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOlsoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNMS44MyAxLjMxMDA4QzIuMjQ0MDkgMC44OTE2NjcgMi43Mzc2OCAwLjU2MDMwNyAzLjI4MTc0IDAuMzM1NTA0QzMuODI1ODEgMC4xMTA3MDEgNC40MDkzNCAtMC4wMDMwMDMzMyA0Ljk5OCAwLjAwMTA4MjkxQzYuMTg2MjggLTAuMDAzMTA3ODUgNy4zMjkwNSAwLjQ1NzczMyA4LjE4MiAxLjI4NTA4QzguNTk4ODEgMS42ODcxOSA4LjkzMDQ2IDIuMTY5MDMgOS4xNTcyMyAyLjcwMTk0QzkuMzg0IDMuMjM0ODUgOS41MDEyNSAzLjgwNzkzIDkuNTAyIDQuMzg3MDhDOS41MDIgNS42ODAwOCA4LjkxNyA2LjgzMDA4IDcuODgzIDcuODI1MDhMNy41NzcgOS4wMDAwOEgyLjQ2NkwyLjIzNiA4LjAzNzA4QzEuMTU0IDYuOTA3MDggMC41NTYgNS44MTkwOCAwLjUgNC41ODIwOFY0LjU0NDA4QzAuNTQgMy4yNDgwOCAxLjAzMyAyLjEyMTA4IDEuODMxIDEuMzExMDhMMS44MyAxLjMxMDA4WlwiLGZpbGw6dH0pLCgwLG8uanN4KShcInBhdGhcIix7ZDpcIk0yLjcwNDEgMTBMMi45MzcxIDEwLjk3OEwyLjk0NTEgMTFDMy4wNDUxIDExLjI5NyAzLjIzNzEgMTEuNTQ0IDMuNDc5MSAxMS43MTdDMy43MzAxIDExLjg5NyA0LjAzNzEgMTEuOTk5IDQuMzYxMSAxMS45OTlINC4zNjMxTDUuNzQ2MSAxMS45OTVMNS43NjcxIDExLjk5M0M2LjA3NTg3IDExLjk2NjkgNi4zNjkxMyAxMS44NDY1IDYuNjA3MSAxMS42NDhDNi44MzgxIDExLjQ1NCA3LjAxMzEgMTEuMTg4IDcuMDg3MSAxMC44NzRMNy4zMTYxIDEwSDIuNzA0MVYxMFpcIixmaWxsOnR9KV19KSl9fSwzNzAzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkxpZ2h0QnVsYk91dGxpbmVkSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuTGlnaHRCdWxiT3V0bGluZWRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjEwXCIsaGVpZ2h0OlwiMTJcIix2aWV3Qm94OlwiMCAwIDEwIDEyXCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZDpcIk00Ljk5NzY2IDAuMDAxMDAxNDlDMy43Njg2NiAwLjAwMTAwMTQ5IDIuNjQ3NjYgMC40ODIwMDIgMS44Mjk2NiAxLjMxMUMxLjAzMTY2IDIuMTIxIDAuNTM5NjU3IDMuMjQ4IDAuNDk5NjU3IDQuNTQ0TDAuNDk4NjU3IDQuNTYzVjQuNTgzQzAuNTU1NjU3IDUuODE5IDEuMTUzNjYgNi45MDcgMi4yMzU2NiA4LjAzN0wyLjkzNzY2IDEwLjk3OEwyLjk0NDY2IDExQzMuMDQ0NjYgMTEuMjk3IDMuMjM2NjYgMTEuNTQ0IDMuNDc4NjYgMTEuNzE3QzMuNzI5NjYgMTEuODk3IDQuMDM2NjYgMTEuOTk5IDQuMzYxNjYgMTEuOTk5TDUuNzQ1NjYgMTEuOTk1TDUuNzY2NjYgMTEuOTkzQzYuMDc1NDIgMTEuOTY2OSA2LjM2ODY5IDExLjg0NjUgNi42MDY2NiAxMS42NDhDNi44Mzc2NiAxMS40NTQgNy4wMTI2NiAxMS4xODggNy4wODY2NiAxMC44NzRMNy44ODI2NiA3LjgyNEM4LjkxNjY2IDYuODMgOS41MDA2NiA1LjY4IDkuNTAwNjYgNC4zODdDOS40OTk5MSAzLjgwNzg1IDkuMzgyNjYgMy4yMzQ3NyA5LjE1NTg5IDIuNzAxODZDOC45MjkxMiAyLjE2ODk1IDguNTk3NDYgMS42ODcxMSA4LjE4MDY2IDEuMjg1QzcuMzI3OTYgMC40NTc4OTQgNi4xODU1OSAtMC4wMDI5Mjc4OCA0Ljk5NzY2IDAuMDAxMDAxNDlaTTIuNTQyNjYgMi4wMTNDMi44NjM0NCAxLjY4ODcxIDMuMjQ1OTYgMS40MzE5OCAzLjY2NzYyIDEuMjU4QzQuMDg5MjggMS4wODQwMSA0LjU0MTUzIDAuOTk2MjgzIDQuOTk3NjYgMUM1LjkyNTE0IDAuOTk1Nzg0IDYuODE3NDQgMS4zNTQ3MSA3LjQ4MzY2IDJDNy44MDQ3MSAyLjMwOTA0IDguMDYwMjMgMi42Nzk1NyA4LjIzNDk2IDMuMDg5NTFDOC40MDk2OSAzLjQ5OTQ1IDguNTAwMDUgMy45NDAzOCA4LjUwMDY2IDQuMzg2QzguNTAwNjYgNS4zNzcgOC4wNDc2NiA2LjMxMiA3LjA5NjY2IDcuMTkxTDYuOTg4NjYgNy4yOTFMNi41NDI2NiA5SDMuNDkzNjZMMy4xNDQ2NiA3LjUzNkwzLjA0NzY2IDcuNDM2QzEuOTk5NjYgNi4zNzIgMS41NDc2NiA1LjQ4IDEuNDk4NjYgNC41NTdDMS41MzY2NiAzLjUwOSAxLjkzMjY2IDIuNjMyIDIuNTQyNjYgMi4wMTRWMi4wMTNaTTMuNzMyNjYgMTBINi4yODI2Nkw2LjExNzY2IDEwLjYyN0w2LjExNDY2IDEwLjY0QzYuMDkyMTEgMTAuNzM0MiA2LjAzOTQ0IDEwLjgxODUgNS45NjQ2NiAxMC44OEM1Ljg4ODczIDEwLjk0MzUgNS43OTU5NSAxMC45ODM0IDUuNjk3NjYgMTAuOTk1TDQuMzYwNjYgMTFDNC4yNTMyMSAxMS4wMDAzIDQuMTQ4MzMgMTAuOTY3MSA0LjA2MDY2IDEwLjkwNUMzLjk4NzcgMTAuODUzNiAzLjkzMTM5IDEwLjc4MiAzLjg5ODY2IDEwLjY5OUwzLjczMTY2IDEwSDMuNzMyNjZaXCIsZmlsbDp0fSl9KSl9fSw4MzExOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkxvY2tlZENsb3NlZEZpbGxlZEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkxvY2tlZENsb3NlZEZpbGxlZEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTUuMDAwMDMgNC42MzYyM0M1LjAwMDAzIDMuNzYwNTIgNS4yNDIyMiAzLjEwNTYxIDUuNjQzMjcgMi42NzM3OEM2LjAzOTM4IDIuMjQ3MjcgNi42NDU4NSAxLjk3ODUyIDcuNTAxNDMgMS45Nzg1MkM4LjM1NzQ4IDEuOTc4NTIgOC45NjMwOSAyLjI0NjczIDkuMzU4MjcgMi42NzIzQzkuNzU4NDEgMy4xMDMyMSAxMCAzLjc1NzI5IDEwIDQuNjMzNDZWNi41MDAyMUgxMVY0LjYzMzQ2QzExIDMuNTc5MTcgMTAuNzA3NiAyLjY1NTc4IDEwLjA5MTEgMS45OTE4M0M5LjQ2OTU1IDEuMzIyNTQgOC41NzU4NiAwLjk3ODUxNiA3LjUwMTQzIDAuOTc4NTE2QzYuNDI2NzggMC45Nzg1MTYgNS41MzI1NSAxLjMyMzUgNC45MTA1MiAxLjk5MzI4QzQuMjkzNDIgMi42NTc3NSA0LjAwMDAzIDMuNTgxNjkgNC4wMDAwMyA0LjYzNjIzVjYuNTAwMjFINS4wMDAwM1Y0LjYzNjIzWk0zIDYuNTAwMjFDMi43MjM4NiA2LjUwMDIxIDIuNSA2LjcyNDA3IDIuNSA3LjAwMDIxVjEzLjAwMDJDMi41IDEzLjI3NjQgMi43MjM4NiAxMy41MDAyIDMgMTMuNTAwMkgxMkMxMi4yNzYxIDEzLjUwMDIgMTIuNSAxMy4yNzY0IDEyLjUgMTMuMDAwMlY3LjAwMDIxQzEyLjUgNi43MjQwNyAxMi4yNzYxIDYuNTAwMjEgMTIgNi41MDAyMUgzWlwiLGZpbGw6dCxyb2xlOlwiaW1nXCJ9KX0pKX19LDU3Mjk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTWluaW1pemVJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5NaW5pbWl6ZUljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTIuMTY2MDIgMTJDMi4xNjYwMiAxMS43MjM5IDIuMzg5ODcgMTEuNSAyLjY2NjAyIDExLjVIMTMuMzMyN0MxMy42MDg4IDExLjUgMTMuODMyNyAxMS43MjM5IDEzLjgzMjcgMTJDMTMuODMyNyAxMi4yNzYxIDEzLjYwODggMTIuNSAxMy4zMzI3IDEyLjVIMi42NjYwMkMyLjM4OTg3IDEyLjUgMi4xNjYwMiAxMi4yNzYxIDIuMTY2MDIgMTJaXCIsZmlsbDp0LHJvbGU6XCJpbWdcIn0pfSkpfX0sMzc5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk9wZW5GaW5JY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5PcGVuRmluSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTQuMjY4NSA1LjczOTE2QzE0LjE3ODUgNS42NDkwNiAxNC4wODE3IDUuNTY1OTIgMTMuOTc5IDUuNDkwNDdMMTMuOTQxMiA1LjQ2NDI5QzEzLjkxOTYgNS40NDkxOSAxMy44OTg0IDUuNDMzNTggMTMuODc2MyA1LjQxODk4QzEzLjg1NDEgNS40MDQzOCAxMy44Mjg0IDUuMzg4NzggMTMuODA0OCA1LjM3NDE4TDEzLjc3MTUgNS4zNTM1NEMxMy43NDE4IDUuMzM1OTIgMTMuNzExNiA1LjMxOTMgMTMuNjgxNCA1LjMwMzE5TDEzLjY2MzggNS4yOTM2M0MxMy4zMDY1IDUuMTA2MTggMTIuOTA5MSA1LjAwODA3IDEyLjUwNTcgNS4wMDc2OEMxMS44NDE3IDUuMDA3MTUgMTEuMjA1MiA0Ljc0MjkxIDEwLjczNjIgNC4yNzMxQzEwLjI2NzEgMy44MDMzIDEwLjAwNCAzLjE2NjQyIDEwLjAwNDYgMi41MDI2MkMxMC4wMDY1IDEuNDkyMjIgOS4zOTkzMyAwLjU4MDIxOSA4LjQ2NjM0IDAuMTkxOTExQzcuNTMzMzUgLTAuMTk2Mzk3IDYuNDU4MjYgMC4wMTU0NjYgNS43NDI0NCAwLjcyODcwMUM1LjAyNjYxIDEuNDQxOTQgNC44MTEwMyAyLjUxNjA3IDUuMTk2MjEgMy40NTAyQzUuNTgxNCA0LjM4NDMzIDYuNDkxNSA0Ljk5NDQ3IDcuNTAyMSA0Ljk5NjFDOC4xNjYwMyA0Ljk5NjY0IDguODAyNTYgNS4yNjA4OCA5LjI3MTYxIDUuNzMwNjhDOS43NDA2NiA2LjIwMDQ5IDEwLjAwMzggNi44MzczNiAxMC4wMDMxIDcuNTAxMTdDMTAuMDAyNiA4LjE2NDk3IDkuNzM4MyA4LjgwMTM3IDkuMjY4NCA5LjI3MDMyQzguNzk4NSA5LjczOTI4IDguMTYxNSAxMC4wMDI0IDcuNDk3NTYgMTAuMDAxN0M2LjgzNDEzIDEwLjAwMjIgNi4xOTc3MiA5LjczODk0IDUuNzI4NjUgOS4yNjk4N0M1LjI1OTU4IDguODAwOCA0Ljk5NjM2IDguMTY0NDcgNC45OTcwMyA3LjUwMTE3QzQuOTk3MDMgNi4xMjE1NSAzLjg3ODQxIDUuMDAzMTUgMi40OTg1MiA1LjAwMzE1QzEuMTE4NjIgNS4wMDMxNSAwIDYuMTIxNTUgMCA3LjUwMTE3QzAgOC44ODA3OCAxLjExODYyIDkuOTk5MTggMi40OTg1MiA5Ljk5OTE4QzMuODc4NDEgOS45OTkxOCA0Ljk5NzAzIDExLjExNzYgNC45OTcwMyAxMi40OTcyQzQuOTk3MDMgMTMuODc5NSA2LjExNzggMTUgNy41MDAzMyAxNUM4Ljg4Mjg3IDE1IDEwLjAwMzYgMTMuODc5NSAxMC4wMDM2IDEyLjQ5NzJDMTAuMDAzNiAxMS4xMTc2IDExLjEyMjMgOS45OTkxOCAxMi41MDIxIDkuOTk5MThDMTIuOTQ4MiA5Ljk5OTQ4IDEzLjM4NjIgOS44ODAyMiAxMy43NzA1IDkuNjUzODNDMTMuODAzOCA5LjYzNDIgMTMuODM2NSA5LjYxMzU2IDEzLjg3MTIgOS41OTI0MUwxMy44NzgzIDkuNTg3ODhDMTMuOTA4NSA5LjU2Nzc1IDEzLjkzODcgOS41NDY2IDEzLjk2NzkgOS41MjU0NkwxMy45ODEgOS41MTY0QzE0LjAwNzIgOS40OTcyNyAxNC4wMzE0IDkuNDc2NjIgMTQuMDU5MSA5LjQ1NTk4TDE0LjA4MTIgOS40Mzg4N0MxNC4xMDU0IDkuNDE5MjMgMTQuMTI4NiA5LjM5ODU5IDE0LjE1MjIgOS4zNzc5NUwxNC4xNzc5IDkuMzU1OEMxNC4yMDgxIDkuMzI4NjIgMTQuMjM3OCA5LjMwMDQyIDE0LjI2NyA5LjI3MTIzTDE0LjI3MTYgOS4yNjcyQzE0LjM3OTQgOS4xNTg4NyAxNC40NzcyIDkuMDQwOTEgMTQuNTYzNiA4LjkxNDhDMTQuNTgyNCA4Ljg4NzYxIDE0LjYwMDUgOC44NjAwOSAxNC42MTggOC44MzIyM0MxNS4yMzcgNy44NDU4NCAxNS4wOTIgNi41NjI2NyAxNC4yNjg1IDUuNzM5MTZaXCIsZmlsbDp0LHJvbGU6XCJpbWdcIn0pfSkpfX0sMTUzOTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5TdGFja0ljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LlN0YWNrSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIyMFwiLGhlaWdodDpcIjIwXCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTQuMjE3OCAzLjAwMDkyQzE0LjE1MDQgMy4wMDUxNCAxNC4wODM5IDMuMDE4NDQgMTQuMDIgMy4wNDA0N0wzLjUxOTg2IDYuNDI4N0MzLjM2ODY0IDYuNDc3NDMgMy4yMzY4MSA2LjU3MjkxIDMuMTQzMzUgNi43MDEzOEMzLjA0OTg5IDYuODI5ODYgMi45OTk2NCA2Ljk4NDY5IDIuOTk5ODMgNy4xNDM1NlYxNS43NTRDMi45OTg0MyAxNS44NTM0IDMuMDE2NzkgMTUuOTUyMSAzLjA1Mzg1IDE2LjA0NDNDMy4wOTA5MSAxNi4xMzY2IDMuMTQ1OTMgMTYuMjIwNSAzLjIxNTcxIDE2LjI5MTNDMy4yODU1IDE2LjM2MjEgMy4zNjg2NSAxNi40MTgzIDMuNDYwMzUgMTYuNDU2NkMzLjU1MjA0IDE2LjQ5NSAzLjY1MDQ1IDE2LjUxNDcgMy43NDk4NCAxNi41MTQ3QzMuODQ5MjQgMTYuNTE0NyAzLjk0NzY0IDE2LjQ5NSA0LjAzOTM0IDE2LjQ1NjZDNC4xMzEwMyAxNi40MTgzIDQuMjE0MTkgMTYuMzYyMSA0LjI4Mzk3IDE2LjI5MTNDNC4zNTM3NSAxNi4yMjA1IDQuNDA4NzggMTYuMTM2NiA0LjQ0NTg0IDE2LjA0NDNDNC40ODI5IDE1Ljk1MjEgNC41MDEyNiAxNS44NTM0IDQuNDk5ODUgMTUuNzU0VjcuNjg4NDlMMTQuNDggNC40NjcyNUMxNC42NDkgNC40MTUyOSAxNC43OTQyIDQuMzA1MzIgMTQuODkgNC4xNTY3NEMxNC45ODU4IDQuMDA4MTUgMTUuMDI2IDMuODMwNSAxNS4wMDM2IDMuNjU1MTRDMTQuOTgxMiAzLjQ3OTc3IDE0Ljg5NzUgMy4zMTc5NyAxNC43Njc0IDMuMTk4MjdDMTQuNjM3MyAzLjA3ODU3IDE0LjQ2OTEgMy4wMDg2OCAxNC4yOTI1IDMuMDAwOTJDMTQuMjY3NiAyLjk5OTY3IDE0LjI0MjcgMi45OTk2NyAxNC4yMTc4IDMuMDAwOTJaTTE3LjIxNzggNS4yNTA5NUMxNy4xNTA0IDUuMjU1MTcgMTcuMDgzOSA1LjI2ODQ4IDE3LjAyMDEgNS4yOTA1TDYuNTE5OSA4LjY3ODc0QzYuMzY4NjkgOC43Mjc0NiA2LjIzNjg1IDguODIyOTQgNi4xNDMzOSA4Ljk1MTQyQzYuMDQ5OTMgOS4wNzk4OSA1Ljk5OTY4IDkuMjM0NzIgNS45OTk4OCA5LjM5MzU5VjE4LjAwNDFDNS45OTg0NyAxOC4xMDM1IDYuMDE2ODMgMTguMjAyMSA2LjA1Mzg5IDE4LjI5NDRDNi4wOTA5NSAxOC4zODY2IDYuMTQ1OTcgMTguNDcwNSA2LjIxNTc2IDE4LjU0MTNDNi4yODU1NCAxOC42MTIxIDYuMzY4NyAxOC42NjgzIDYuNDYwMzkgMTguNzA2NkM2LjU1MjA5IDE4Ljc0NSA2LjY1MDQ5IDE4Ljc2NDggNi43NDk4OSAxOC43NjQ4QzYuODQ5MjggMTguNzY0OCA2Ljk0NzY5IDE4Ljc0NSA3LjAzOTM4IDE4LjcwNjZDNy4xMzEwOCAxOC42NjgzIDcuMjE0MjMgMTguNjEyMSA3LjI4NDAyIDE4LjU0MTNDNy4zNTM4IDE4LjQ3MDUgNy40MDg4MiAxOC4zODY2IDcuNDQ1ODggMTguMjk0NEM3LjQ4Mjk0IDE4LjIwMjEgNy41MDEzIDE4LjEwMzUgNy40OTk5IDE4LjAwNDFWOS45Mzg1MkwxNy40OCA2LjcxNzI4QzE3LjY0OSA2LjY2NTMzIDE3Ljc5NDIgNi41NTUzNSAxNy44OSA2LjQwNjc3QzE3Ljk4NTggNi4yNTgxOCAxOC4wMjYxIDYuMDgwNTQgMTguMDAzNiA1LjkwNTE3QzE3Ljk4MTIgNS43Mjk4MSAxNy44OTc2IDUuNTY4IDE3Ljc2NzUgNS40NDgzQzE3LjYzNzQgNS4zMjg2MSAxNy40NjkxIDUuMjU4NzEgMTcuMjkyNSA1LjI1MDk1QzE3LjI2NzYgNS4yNDk3MSAxNy4yNDI3IDUuMjQ5NzEgMTcuMjE3OCA1LjI1MDk1Wk0yMC4xOTMgNy41MDUzOEMyMC4xMzQ0IDcuNTA5ODIgMjAuMDc1OCA3LjUyMTk3IDIwLjAxODYgNy41NDA1M0w5LjUxODQ4IDEwLjkyODhDOS4yMDk0OCAxMS4wMjkzIDguOTk5OTIgMTEuMzE4MSA4Ljk5OTkyIDExLjY0MzZWMjAuMjU0MUM4Ljk5OTkyIDIwLjQ5NzkgOS4xMTgyOSAyMC43MjYyIDkuMzE3OCAyMC44NjY0QzkuNDQ2MDUgMjAuOTU3MiA5LjU5NjkzIDIxLjAwNDEgOS43NDk5MyAyMS4wMDQxQzkuODM0NjggMjEuMDA0MSA5LjkyMDE0IDIwLjk4OTQgMTAuMDAxOSAyMC45NjAyTDIwLjUwMiAxNy4yMTAxQzIwLjgwMDYgMTcuMTA0NCAyMS4wMDAxIDE2LjgyMTMgMjEuMDAwMSAxNi41MDRWOC4yNTM5MkMyMS4wMDAxIDguMDE0NjcgMjAuODg1MyA3Ljc4OTIyIDIwLjY5MSA3LjY0NzQ3QzIwLjU0NTkgNy41NDE3MiAyMC4zNjg4IDcuNDkyMDUgMjAuMTkzIDcuNTA1MzhaXCIsZmlsbDp0fSl9KSl9fSw0MDIwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlN0b3JlZnJvbnRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5TdG9yZWZyb250SWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIyMFwiLGhlaWdodDpcIjIwXCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNNSAzQzQuNDQ4IDMgNCAzLjQ0OCA0IDRDNCA0LjU1MiA0LjQ0OCA1IDUgNUgxOUMxOS41NTIgNSAyMCA0LjU1MiAyMCA0QzIwIDMuNDQ4IDE5LjU1MiAzIDE5IDNINVpNNC42MTcxOSA3QzQuMjM4MTkgNyAzLjg5MzYxIDcuMjEzNzMgMy43MjQ2MSA3LjU1MjczTDIuMTA1NDcgMTAuNzg5MUMyLjAzNTQ3IDEwLjkyODEgMiAxMS4wODEzIDIgMTEuMjM2M1YxMkMyIDEyLjU1MiAyLjQ0OCAxMyAzIDEzVjE5QzMgMjAuMTA1IDMuODk1IDIxIDUgMjFIMTlDMjAuMTA1IDIxIDIxIDIwLjEwNSAyMSAxOVYxM0MyMS41NTIgMTMgMjIgMTIuNTUyIDIyIDEyVjExLjIzNjNDMjIgMTEuMDgxMyAyMS45NjQ1IDEwLjkyODEgMjEuODk0NSAxMC43ODkxTDIwLjI3NTQgNy41NTI3M0MyMC4xMDY0IDcuMjEzNzMgMTkuNzYxOCA3IDE5LjM4MjggN0g0LjYxNzE5Wk02IDEzSDE4QzE4LjU1MiAxMyAxOSAxMy40NDggMTkgMTRWMThDMTkgMTguNTUyIDE4LjU1MiAxOSAxOCAxOUg2QzUuNDQ4IDE5IDUgMTguNTUyIDUgMThWMTRDNSAxMy40NDggNS40NDggMTMgNiAxM1pcIixmaWxsOnR9KX0pKX19LDc5Mzc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuV29ya3NwYWNlSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuV29ya3NwYWNlSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3hzKShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixyb2xlOlwiaW1nXCJ9LG4se2NoaWxkcmVuOlsoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNNi43MzgxMSAyLjgxMjVIMy41MzEzN0MzLjEzNDQyIDIuODEyNSAyLjgxMjYyIDMuMTM0MyAyLjgxMjYyIDMuNTMxMjVWNy41MTIwNEMyLjgxMjYyIDcuOTA5IDMuMTM0NDIgOC4yMzA3OSAzLjUzMTM3IDguMjMwNzlINi43MzgxMUM3LjEzNTA2IDguMjMwNzkgNy40NTY4NiA3LjkwOSA3LjQ1Njg2IDcuNTEyMDRWMy41MzEyNUM3LjQ1Njg2IDMuMTM0MyA3LjEzNTA2IDIuODEyNSA2LjczODExIDIuODEyNVpcIixmaWxsOnR9KSwoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTIuMTU2NSA2LjI2NzU4SDguOTQ5NzFDOC43NTEyMyA2LjI2NzU4IDguNTkwMzMgNi40Mjg0OCA4LjU5MDMzIDYuNjI2OTZWMTEuMzgxOEM4LjU5MDMzIDExLjU4MDMgOC43NTEyMyAxMS43NDEyIDguOTQ5NzEgMTEuNzQxMkgxMi4xNTY1QzEyLjM1NDkgMTEuNzQxMiAxMi41MTU4IDExLjU4MDMgMTIuNTE1OCAxMS4zODE4VjYuNjI2OTZDMTIuNTE1OCA2LjQyODQ4IDEyLjM1NDkgNi4yNjc1OCAxMi4xNTY1IDYuMjY3NThaXCIsc3Ryb2tlOnQsc3Ryb2tlV2lkdGg6XCIwLjcxODc1M1wifSksKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTEyLjE1NjQgMi44MTI1SDguOTQ5NzFDOC41NTI3NSAyLjgxMjUgOC4yMzA5NiAzLjEzNDMgOC4yMzA5NiAzLjUzMTI1VjQuNDE1ODdDOC4yMzA5NiA0LjgxMjgzIDguNTUyNzUgNS4xMzQ2MyA4Ljk0OTcxIDUuMTM0NjNIMTIuMTU2NEMxMi41NTM0IDUuMTM0NjMgMTIuODc1MiA0LjgxMjgzIDEyLjg3NTIgNC40MTU4N1YzLjUzMTI1QzEyLjg3NTIgMy4xMzQzIDEyLjU1MzQgMi44MTI1IDEyLjE1NjQgMi44MTI1WlwiLGZpbGw6dH0pLCgwLG8uanN4KShcInBhdGhcIix7ZDpcIk02LjczNzk4IDkuMDA0ODhIMy41MzEyNUMzLjEzNDMgOS4wMDQ4OCAyLjgxMjUgOS4zMjY2OCAyLjgxMjUgOS43MjM2NFYxMS4zODIzQzIuODEyNSAxMS43NzkzIDMuMTM0MyAxMi4xMDExIDMuNTMxMjUgMTIuMTAxMUg2LjczNzk4QzcuMTM0OTQgMTIuMTAxMSA3LjQ1Njc0IDExLjc3OTMgNy40NTY3NCAxMS4zODIzVjkuNzIzNjRDNy40NTY3NCA5LjMyNjY4IDcuMTM0OTQgOS4wMDQ4OCA2LjczNzk4IDkuMDA0ODhaXCIsZmlsbDp0fSldfSkpfX0sMjc3MjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzc5KSx0KSxvKG4oNDcxOCksdCksbyhuKDc5MzcpLHQpLG8obig4MzExKSx0KSxvKG4oNTcyOSksdCksbyhuKDc3ODgpLHQpLG8obigzNzAzKSx0KSxvKG4oNjc5NSksdCksbyhuKDgyNjUpLHQpLG8obigxMTcpLHQpLG8obigxNTM5KSx0KSxvKG4oOTI4NSksdCksbyhuKDQwMjApLHQpLG8obig1MjkpLHQpLG8obigyNDAyKSx0KSxvKG4oMjE0NyksdCksbyhuKDQ4MjUpLHQpLG8obig2NDQ3KSx0KSxvKG4oMTI4MSksdCl9LDMxMTc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5JY29uV2l0aEJhZGdlPXZvaWQgMDtjb25zdCBhPW4oNTg5MyksaT1vKG4oNzUxOCkpLGw9big3MDA2KSxjPW4oMzEzNikscz1uKDEzMzUpO3QuSWNvbldpdGhCYWRnZT1lPT57dmFye2NvdW50OnQ9MCxtYXg6bn09ZSxvPXIoZSxbXCJjb3VudFwiLFwibWF4XCJdKTtyZXR1cm4oMCxhLmpzeHMpKHUse2NoaWxkcmVuOlsoMCxhLmpzeCkobC5JY29uLE9iamVjdC5hc3NpZ24oe30sbykpLHQ+MCYmKDAsYS5qc3gpKGQse2NvdW50OnQsbWF4Om59KV19KX07Y29uc3QgdT0oMCxpLmRlZmF1bHQpKHMuQm94KWBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYCxkPSgwLGkuZGVmYXVsdCkoYy5CYWRnZSlgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdHJhbnNmb3JtOiBzY2FsZSg3MCUpO1xuICByaWdodDogLSR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIHRvcDogLSR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuYH0sMTQ0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigzMTE3KSx0KX0sOTIzOTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oODI3NSksdCksbyhuKDY5MyksdCl9LDgyNzU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Mb2FkZXI9dm9pZCAwO2NvbnN0IGE9big1ODkzKSxpPW8obig3NTE4KSksbD1uKDk2MzQpO3QuTG9hZGVyPSgwLGkuZGVmYXVsdCkoKGU9Pnt2YXIgdD1yKGUsW10pO3JldHVybigwLGEuanN4KShsLkljb24sT2JqZWN0LmFzc2lnbih7fSx0LHtjaGlsZHJlbjooMCxhLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjEwMCVcIixoZWlnaHQ6XCIxMDAlXCIsdmlld0JveDpcIjAgMCAzOCAzOFwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixzdHJva2U6XCJjdXJyZW50Q29sb3JcIn0se2NoaWxkcmVuOigwLGEuanN4KShcImdcIixPYmplY3QuYXNzaWduKHtmaWxsOlwibm9uZVwiLGZpbGxSdWxlOlwiZXZlbm9kZFwifSx7Y2hpbGRyZW46KDAsYS5qc3hzKShcImdcIixPYmplY3QuYXNzaWduKHt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoMSAxKVwiLHN0cm9rZVdpZHRoOlwiMlwifSx7Y2hpbGRyZW46WygwLGEuanN4KShcImNpcmNsZVwiLHtzdHJva2VPcGFjaXR5OlwiLjVcIixjeDpcIjE4XCIsY3k6XCIxOFwiLHI6XCIxOFwifSksKDAsYS5qc3gpKFwicGF0aFwiLE9iamVjdC5hc3NpZ24oe2Q6XCJNMzYgMThjMC05Ljk0LTguMDYtMTgtMTgtMThcIn0se2NoaWxkcmVuOigwLGEuanN4KShcImFuaW1hdGVUcmFuc2Zvcm1cIix7YXR0cmlidXRlTmFtZTpcInRyYW5zZm9ybVwiLHR5cGU6XCJyb3RhdGVcIixmcm9tOlwiMCAxOCAxOFwiLHRvOlwiMzYwIDE4IDE4XCIsZHVyOlwiMXNcIixyZXBlYXRDb3VudDpcImluZGVmaW5pdGVcIn0pfSkpXX0pKX0pKX0pKX0pKX0pKWBgfSw2OTM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9KSxhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZyKHQsZSxuKTtyZXR1cm4gbyh0LGUpLHR9LGk9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5PcGVuZmluTG9hZGVyPXZvaWQgMDtjb25zdCBsPW4oNTg5MyksYz1hKG4oNzUxOCkpLHM9big5NjM0KTt0Lk9wZW5maW5Mb2FkZXI9KDAsYy5kZWZhdWx0KSgoZT0+e3ZhciB0PWkoZSxbXSk7cmV0dXJuKDAsbC5qc3gpKHMuSWNvbixPYmplY3QuYXNzaWduKHt9LHQse2NoaWxkcmVuOigwLGwuanN4cykoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjEwMCVcIixoZWlnaHQ6XCIxMDAlXCIsdmlld0JveDpcIjAgMCAxOCAxOFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSx7Y2hpbGRyZW46WygwLGwuanN4KSh1LHtkOlwiXFxuICAgICAgICAgICAgTSAxNy4xMjIyIDYuODg3XFxuICAgICAgICAgICAgQyAxNy4wMTQxIDYuNzc4ODcgMTYuODk4IDYuNjc5MTEgMTYuNzc0OCA2LjU4ODU2XFxuICAgICAgICAgICAgTCAxNi43Mjk1IDYuNTU3MTVcXG4gICAgICAgICAgICBDIDE2LjcwMzUgNi41MzkwMyAxNi42NzgxIDYuNTIwMyAxNi42NTE1IDYuNTAyNzhcXG4gICAgICAgICAgICBDIDE2LjYyNSA2LjQ4NTI2IDE2LjU5NDEgNi40NjY1MyAxNi41NjU3IDYuNDQ5MDFcXG4gICAgICAgICAgICBMIDE2LjUyNTkgNi40MjQyNFxcbiAgICAgICAgICAgIEMgMTYuNDkwMiA2LjQwMzEgMTYuNDU0IDYuMzgzMTYgMTYuNDE3NyA2LjM2MzgzXFxuICAgICAgICAgICAgTCAxNi4zOTY2IDYuMzUyMzZcXG4gICAgICAgICAgICBDIDE1Ljk2NzggNi4xMjc0MiAxNS40OTEgNi4wMDk2OCAxNS4wMDY4IDYuMDA5MjJcXG4gICAgICAgICAgICBDIDE0LjIxMDEgNi4wMDg1OCAxMy40NDYzIDUuNjkxNDkgMTIuODgzNCA1LjEyNzcyXFxuICAgICAgICAgICAgQyAxMi4zMjA1IDQuNTYzOTUgMTIuMDA0OCAzLjc5OTcxIDEyLjAwNTYgMy4wMDMxNFxcbiAgICAgICAgICAgIEMgMTIuMDA3OCAxLjc5MDY2IDExLjI3OTIgMC42OTYyNjMgMTAuMTU5NiAwLjIzMDI5M1xcbiAgICAgICAgICAgIEMgOS4wNDAwMiAtMC4yMzU2NzYgNy43NDk5MiAwLjAxODU1OTIgNi44OTA5MyAwLjg3NDQ0MVxcbiAgICAgICAgICAgIEMgNi4wMzE5NCAxLjczMDMyIDUuNzczMjMgMy4wMTkyOCA2LjIzNTQ2IDQuMTQwMjRcXG4gICAgICAgICAgICBDIDYuNjk3NjggNS4yNjExOSA3Ljc4OTggNS45OTMzNyA5LjAwMjUxIDUuOTk1MzJcXG4gICAgICAgICAgICBDIDkuNzk5MjQgNS45OTU5NiAxMC41NjMxIDYuMzEzMDUgMTEuMTI1OSA2Ljg3NjgyXFxuICAgICAgICAgICAgQyAxMS42ODg4IDcuNDQwNTkgMTIuMDA0NiA4LjIwNDg0IDEyLjAwMzggOS4wMDE0XFxuICAgICAgICAgICAgQyAxMi4wMDMxIDkuNzk3OTcgMTEuNjg2IDEwLjU2MTYgMTEuMTIyMSAxMS4xMjQ0XFxuICAgICAgICAgICAgQyAxMC41NTgyIDExLjY4NzEgOS43OTM4IDEyLjAwMjggOC45OTcwOCAxMi4wMDJcXG4gICAgICAgICAgICBDIDguMjAwOTYgMTIuMDAyNyA3LjQzNzI3IDExLjY4NjcgNi44NzQzOCAxMS4xMjM4XFxuICAgICAgICAgICAgQyA2LjMxMTUgMTAuNTYxIDUuOTk1NjQgOS43OTczNiA1Ljk5NjQ0IDkuMDAxNFxcbiAgICAgICAgICAgIEMgNS45OTY0NCA3LjM0NTg2IDQuNjU0MDkgNi4wMDM3OCAyLjk5ODIyIDYuMDAzNzhcXG4gICAgICAgICAgICBDIDEuMzQyMzUgNi4wMDM3OCAwIDcuMzQ1ODYgMCA5LjAwMTRcXG4gICAgICAgICAgICBDIDAgMTAuNjU2OSAxLjM0MjM1IDExLjk5OSAyLjk5ODIyIDExLjk5OVxcbiAgICAgICAgICAgIEMgNC42NTQwOSAxMS45OTkgNS45OTY0NCAxMy4zNDExIDUuOTk2NDQgMTQuOTk2NlxcbiAgICAgICAgICAgIEMgNS45OTY0NCAxNi42NTUzIDcuMzQxMzYgMTggOS4wMDA0IDE4XFxuICAgICAgICAgICAgQyAxMC42NTk0IDE4IDEyLjAwNDQgMTYuNjU1MyAxMi4wMDQ0IDE0Ljk5NjZcXG4gICAgICAgICAgICBDIDEyLjAwNDQgMTMuMzQxMSAxMy4zNDY3IDExLjk5OSAxNS4wMDI2IDExLjk5OVxcbiAgICAgICAgICAgIEMgMTUuNTM3OSAxMS45OTk0IDE2LjA2MzUgMTEuODU2MyAxNi41MjQ3IDExLjU4NDZcXG4gICAgICAgICAgICBDIDE2LjU2NDUgMTEuNTYxIDE2LjYwMzggMTEuNTM2MyAxNi42NDU1IDExLjUxMDlcXG4gICAgICAgICAgICBMIDE2LjY1NCAxMS41MDU1XFxuICAgICAgICAgICAgQyAxNi42OTAyIDExLjQ4MTMgMTYuNzI2NSAxMS40NTU5IDE2Ljc2MTUgMTEuNDMwNVxcbiAgICAgICAgICAgIEwgMTYuNzc3MiAxMS40MTk3XFxuICAgICAgICAgICAgQyAxNi44MDg2IDExLjM5NjcgMTYuODM3NiAxMS4zNzIgMTYuODcwOSAxMS4zNDcyXFxuICAgICAgICAgICAgTCAxNi44OTc1IDExLjMyNjZcXG4gICAgICAgICAgICBDIDE2LjkyNjUgMTEuMzAzMSAxNi45NTQzIDExLjI3ODMgMTYuOTgyNyAxMS4yNTM1XFxuICAgICAgICAgICAgTCAxNy4wMTM1IDExLjIyN1xcbiAgICAgICAgICAgIEMgMTcuMDQ5NyAxMS4xOTQzIDE3LjA4NTQgMTEuMTYwNSAxNy4xMjA0IDExLjEyNTVcXG4gICAgICAgICAgICBMIDE3LjEyNTkgMTEuMTIwNlxcbiAgICAgICAgICAgIEMgMTcuMjU1MyAxMC45OTA2IDE3LjM3MjYgMTAuODQ5MSAxNy40NzYzIDEwLjY5NzhcXG4gICAgICAgICAgICBDIDE3LjQ5ODkgMTAuNjY1MSAxNy41MjA2IDEwLjYzMjEgMTcuNTQxNiAxMC41OTg3XFxuICAgICAgICAgICAgQyAxOC4yODQzIDkuNDE1IDE4LjExMDQgNy44NzUyIDE3LjEyMjIgNi44ODdaXFxuICAgICAgICAgICAgXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSksKDAsbC5qc3gpKGQse2N4OlwiOVwiLGN5OlwiM1wiLHI6XCIyLjlcIixmaWxsOlwiY3VycmVudENvbG9yXCIsYW5nbGU6MH0pLCgwLGwuanN4KShkLHtjeDpcIjE1XCIsY3k6XCI5XCIscjpcIjIuNzVcIixmaWxsOlwiY3VycmVudENvbG9yXCIsYW5nbGU6LTkwfSksKDAsbC5qc3gpKGQse2N4OlwiOVwiLGN5OlwiMTVcIixyOlwiMi41XCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLGFuZ2xlOi0xODB9KSwoMCxsLmpzeCkoZCx7Y3g6XCIzXCIsY3k6XCI5XCIscjpcIjIuMjVcIixmaWxsOlwiY3VycmVudENvbG9yXCIsYW5nbGU6LTI3MH0pXX0pKX0pKX0pKWBgO2NvbnN0IHU9Yy5kZWZhdWx0LnBhdGhgXG4gIEBrZXlmcmFtZXMgbG9nb0FuaW1hdGlvbiB7XG4gICAgMCUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgMjUlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDM1JSB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICA2MCUge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gICAgNzUlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICBhbmltYXRpb246IGxvZ29BbmltYXRpb24gMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG5gLGQ9Yy5kZWZhdWx0LmNpcmNsZWBcbiAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICBhbmltYXRpb246ICR7KHthbmdsZTplfSk9PihlPT5jLmtleWZyYW1lc2BcbiAgICAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICAgIDI1JSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDMwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgke2V9ZGVnKTtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDcwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMzYwZGVnKTtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDc1JSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMzYwZGVnKTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTM2MGRlZyk7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbmApKGUpfSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbmB9LDM1ODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlN0eWxlZElucHV0RmllbGQ9dC5CYXNlSW5wdXQ9dm9pZCAwO2NvbnN0IGE9big1ODkzKSxpPW4oNjY4OSksbD1vKG4oNzUxOCkpLGM9bigxMzM1KSxzPW4oOTUwNyksdT1uKDc3NjkpLGQ9big5NjM0KTt0LkJhc2VJbnB1dD0oMCxpLmZvcndhcmRSZWYpKCgoZSxuKT0+e3ZhcntjbGFzc05hbWU6byxyZW5kZXJJbnB1dDppLG1lc3NhZ2U6bCxsYWJlbDpjLHN0YXR1czpzLG5hbWU6dSxpY29uOmQsdHlwZTpnPVwidGV4dFwifT1lLG09cihlLFtcImNsYXNzTmFtZVwiLFwicmVuZGVySW5wdXRcIixcIm1lc3NhZ2VcIixcImxhYmVsXCIsXCJzdGF0dXNcIixcIm5hbWVcIixcImljb25cIixcInR5cGVcIl0pO2NvbnN0IHc9XCJjaGVja2JveFwiPT09Z3x8XCJyYWRpb1wiPT09ZztyZXR1cm4oMCxhLmpzeHMpKHYsT2JqZWN0LmFzc2lnbih7ZmxleERpcmVjdGlvbjpcImNvbHVtblwiLGFsaWduSXRlbXM6XCJmbGV4LXN0YXJ0XCJ9LHtjaGlsZHJlbjpbKDAsYS5qc3hzKShmLE9iamVjdC5hc3NpZ24oe2lubGluZTp3fSx7Y2hpbGRyZW46WyEhYyYmKDAsYS5qc3gpKGgsT2JqZWN0LmFzc2lnbih7YXM6XCJsYWJlbFwiLGh0bWxGb3I6dSx3ZWlnaHQ6XCJib2xkXCJ9LHtjaGlsZHJlbjpjfSkpLCEhZCYmKDAsYS5qc3gpKHAse2ljb246ZH0pLCEhaSYmaShPYmplY3QuYXNzaWduKHtuYW1lOnUsc3RhdHVzOnMsdHlwZTpnfSxtKSksIWkmJigwLGEuanN4KSh0LlN0eWxlZElucHV0RmllbGQsT2JqZWN0LmFzc2lnbih7Y2xhc3NOYW1lOm8sbmFtZTp1LHN0YXR1czpzLHR5cGU6Z30sbSx7cmVmOm59KSldfSkpLCEhbCYmKDAsYS5qc3gpKEMsT2JqZWN0LmFzc2lnbih7c3RhdHVzOnN9LHtjaGlsZHJlbjpsfSkpXX0pKX0pKSx0LkJhc2VJbnB1dC5kaXNwbGF5TmFtZT1cIkJhc2VJbnB1dFwiO2NvbnN0IGY9KDAsbC5kZWZhdWx0KShjLkJveClgXG4gIGFsaWduLWl0ZW1zOiAkeyh7aW5saW5lOmV9KT0+ZT9cImNlbnRlclwiOlwiZmxleC1zdGFydFwifTtcbiAgZmxleC1kaXJlY3Rpb246ICR7KHtpbmxpbmU6ZX0pPT5lP1wicm93LXJldmVyc2VcIjpcImNvbHVtblwifTtcbiAganVzdGlmeS1jb250ZW50OiAkeyh7aW5saW5lOmV9KT0+ZT9cImZsZXgtZW5kXCI6XCJmbGV4LXN0YXJ0XCJ9O1xuICB3aWR0aDogMTAwJTtcblxuICAkeyh7aW5saW5lOmUsdGhlbWU6dH0pPT5lJiZgXFxuICAgICR7aH0ge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAke3QucHguc21hbGx9O1xcbiAgICAgIGZvbnQtd2VpZ2h0OiAke3QuZm9udFdlaWdodC5ub3JtYWx9O1xcbiAgICB9XFxuICBgfVxuYCxwPSgwLGwuZGVmYXVsdCkoZC5JY29uKWBcbiAgbWFyZ2luLWxlZnQ6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgbWluLXdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnNtYWxsfTtcbiAgbWluLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5zbWFsbH07XG5gLGg9KDAsbC5kZWZhdWx0KSh1LlRleHQpYFxuICBtYXJnaW4tYm90dG9tOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG5gLEM9KDAsbC5kZWZhdWx0KSh1LlRleHQpYFxuICBjb2xvcjogJHsoe3RoZW1lOmUsc3RhdHVzOnR9KT0+KDAscy5nZXRTdGF0dXNDb2xvcikoZSx0LFwidGV4dEhlbHBcIil9O1xuICBtYXJnaW4tdG9wOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbmAsdj0oMCxsLmRlZmF1bHQpKGMuQm94KWBcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbmA7dC5TdHlsZWRJbnB1dEZpZWxkPWwuZGVmYXVsdC5pbnB1dGBcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ1fTtcbiAgYm9yZGVyOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ2fTtcbiAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZSxzdGF0dXM6dH0pPT4oMCxzLmdldFN0YXR1c0NvbG9yKShlLHQsXCJpbnB1dEJvcmRlclwiKX07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgYm94LXNoYWRvdzogJHsoe3RoZW1lOmV9KT0+ZS5zaGFkb3cuYmFzZX07XG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRDb2xvcn07XG4gIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH0gJHtlLnB4LmJhc2V9YH07XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pO1xuICB3aWR0aDogMTAwJTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmUsc3RhdHVzOnR9KT0+KDAscy5nZXRTdGF0dXNDb2xvcikoZSx0LFwiaW5wdXRGb2N1c2VkXCIpfTtcbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIH1cblxuICAmOmRpc2FibGVkOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgaGFjayB0byBpbnZlcnQgdGhlIGNhbGVuZGFyIGljb24uIFRoaXMgb25seSB3b3JrcyBpbiBkYXJrIG1vZGUuXG4gICAqIFVudGlsIGVpdGhlciBsaWdodCBtb2RlIGlzIGEgdGhpbmcgb3Igd2UgZ2V0IGEgZGF0ZXRpbWUgcGlja2VyIGRlc2lnbiwgdGhpcyB3aWxsIGRvLlxuICAgKi9cbiAgOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3Ige1xuICAgIGZpbHRlcjogaW52ZXJ0KDEpO1xuICB9XG5gfSw4ODc4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigzNTgpLHQpfSwxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fSxpPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LGw9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DaGVja2JveD12b2lkIDA7Y29uc3QgYz1uKDU4OTMpLHM9YShuKDY2ODkpKSx1PWwobig3NTE4KSksZD1uKDg4NzgpLGY9big5NjM0KSxwPW4oOTUwNyk7dC5DaGVja2JveD1zLmZvcndhcmRSZWYoKChlLHQpPT57dmFye3N0YXR1czpufT1lLHI9aShlLFtcInN0YXR1c1wiXSk7cmV0dXJuKDAsYy5qc3gpKGQuQmFzZUlucHV0LE9iamVjdC5hc3NpZ24oe30scix7dHlwZTpcImNoZWNrYm94XCIsc3RhdHVzOm4scmVuZGVySW5wdXQ6ZT0+e3ZhciByPWkoZSxbXSk7cmV0dXJuKDAsYy5qc3hzKShoLHtjaGlsZHJlbjpbKDAsYy5qc3gpKGcsT2JqZWN0LmFzc2lnbih7cmVmOnQsaWQ6ci5uYW1lLHR5cGU6XCJjaGVja2JveFwifSxyKSksKDAsYy5qc3gpKEMsT2JqZWN0LmFzc2lnbih7c3RhdHVzOm59LHtjaGlsZHJlbjooMCxjLmpzeCkodix7fSl9KSldfSl9fSkpfSkpLHQuQ2hlY2tib3guZGlzcGxheU5hbWU9XCJDaGVja2JveFwiO2NvbnN0IGg9dS5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gLEM9dS5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgd2lkdGg6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmUsc3RhdHVzOnR9KT0+KDAscC5nZXRTdGF0dXNDb2xvcikoZSx0LFwidGV4dERlZmF1bHRcIil9O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCx2PSgwLHUuZGVmYXVsdCkoZi5JY29uKS5hdHRycyh7aWNvbjpcIkNoZWNrSWNvblwiLHNpemU6XCJzbWFsbFwifSlgXG4gIG9wYWNpdHk6IDA7XG5gLGc9dS5kZWZhdWx0LmlucHV0YFxuICBvcGFjaXR5OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAmOmNoZWNrZWQgKyAke0MrXCIgXCIrdn0ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAmOmhvdmVyICsgJHtDfSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDFweCAxcHggJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Rm9jdXNlZH07XG4gIH1cblxuICAmOmZvY3VzICsgJHtDfSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDFweCAxcHggJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Rm9jdXNlZH07XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG5cbiAgJjpkaXNhYmxlZCArICR7Q30ge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxuYH0sODA1MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMSksdCl9LDkwMjI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9KSxhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZyKHQsZSxuKTtyZXR1cm4gbyh0LGUpLHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2hlY2tib3hHcm91cD12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGw9YShuKDY2ODkpKSxjPWEobig3NTE4KSkscz1uKDEzMzUpLHU9big3NzY5KSxkPW4oMSk7dC5DaGVja2JveEdyb3VwPSh7ZGlzYWJsZWQ6ZSxnYXA6dD1cInNtYWxsXCIsbWVzc2FnZTpuLG5hbWU6cixjaGlsZHJlbjpvfSk9PigwLGkuanN4cykoZix7Y2hpbGRyZW46WygwLGkuanN4KShwLE9iamVjdC5hc3NpZ24oe2dhcDp0fSx7Y2hpbGRyZW46bC5DaGlsZHJlbi5tYXAobywodD0+e2NvbnN0IG49dDtyZXR1cm4gbi50eXBlPT09ZC5DaGVja2JveD9sLmNsb25lRWxlbWVudChuLHtuYW1lOnIsZGlzYWJsZWQ6ZX0pOm59KSl9KSksbj8oMCxpLmpzeCkoaCxPYmplY3QuYXNzaWduKHtkaXNhYmxlZDplfSx7Y2hpbGRyZW46bn0pKTpudWxsXX0pO2NvbnN0IGY9KDAsYy5kZWZhdWx0KShzLkJveClgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiBtYXgtY29udGVudDtcbmAscD0oMCxjLmRlZmF1bHQpKHMuQm94KWBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG5gLGg9KDAsYy5kZWZhdWx0KSh1LlRleHQpYFxuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0UGxhY2Vob2xkZXJ9O1xuICBtYXJnaW4tdG9wOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuXG4gICR7KHtkaXNhYmxlZDplfSk9PmUmJmMuY3NzYFxuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgICBgfVxuYH0sNDE2OTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oOTAyMiksdCl9LDkzNjg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5EYXRlSW5wdXQ9dm9pZCAwO2NvbnN0IGE9big1ODkzKSxpPW4oNjY4OSksbD1vKG4oNzUxOCkpLGM9big5NjM0KSxzPW4oMTMzNSksdT1uKDk1MDcpLGQ9big4ODc4KTt0LkRhdGVJbnB1dD0oMCxpLmZvcndhcmRSZWYpKCgoZSx0KT0+e3Zhcnt2YWx1ZTpuPVwiXCIsdHlwZTpvPVwiZGF0ZVwiLGV4cGFuZGVkOmw9ITEsb25DaGFuZ2U6Y309ZSxzPXIoZSxbXCJ2YWx1ZVwiLFwidHlwZVwiLFwiZXhwYW5kZWRcIixcIm9uQ2hhbmdlXCJdKTtjb25zdFt1LHBdPSgwLGkudXNlU3RhdGUpKG4pO3JldHVybigwLGkudXNlRWZmZWN0KSgoKCk9PnAobikpLFtdKSwoMCxhLmpzeCkoZC5CYXNlSW5wdXQsT2JqZWN0LmFzc2lnbih7dHlwZTpvfSxzLHtyZW5kZXJJbnB1dDplPT57dmFyIG49cihlLFtdKTtyZXR1cm4oMCxhLmpzeCkoZixPYmplY3QuYXNzaWduKHtyZWY6dCx0eXBlOm8sb25DaGFuZ2U6ZT0+e2NvbnN0e3ZhbHVlOnR9PWUudGFyZ2V0O3QmJnAodCksbnVsbD09Y3x8YyhlKX0sdmFsdWU6dSxleHBhbmRlZDpsfSxuKSl9fSkpfSkpLHQuRGF0ZUlucHV0LmRpc3BsYXlOYW1lPVwiRGF0ZUlucHV0XCI7Y29uc3QgZj0oMCxpLmZvcndhcmRSZWYpKCgoZSx0KT0+e3Zhcnt0eXBlOm4sZXhwYW5kZWQ6byxvbkV4cGFuZDppfT1lLGw9cihlLFtcInR5cGVcIixcImV4cGFuZGVkXCIsXCJvbkV4cGFuZFwiXSk7cmV0dXJuKDAsYS5qc3hzKShwLHtjaGlsZHJlbjpbKDAsYS5qc3gpKEMse2NoaWxkcmVuOigwLGEuanN4KShjLkljb24se2ljb246XCJ0aW1lXCI9PT1uP1wiQ2xvY2tJY29uXCI6XCJDYWxlbmRhckljb25cIn0pfSksKDAsYS5qc3gpKGcsT2JqZWN0LmFzc2lnbih7cmVmOnQsdHlwZTpuLG9uS2V5RG93bjplPT57XCIgXCI9PT1lLmtleSYmZS5wcmV2ZW50RGVmYXVsdCgpfX0sbCkpLCgwLGEuanN4KSh2LE9iamVjdC5hc3NpZ24oe2ZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixkaXNhYmxlZDpsLmRpc2FibGVkLG9uQ2xpY2s6aX0se2NoaWxkcmVuOigwLGEuanN4KShjLkljb24se2ljb246bz9cIkNoZXZyb25VcEljb25cIjpcIkNoZXZyb25Eb3duSWNvblwifSl9KSldfSl9KSk7Zi5kaXNwbGF5TmFtZT1cIlN0eWxlZERhdGVJbnB1dFwiO2NvbnN0IHA9bC5kZWZhdWx0LmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gIHdpZHRoOiAxMDAlO1xuYCxoPSgwLGwuZGVmYXVsdCkocy5Cb3gpYFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAycHgpO1xuYCxDPSgwLGwuZGVmYXVsdCkoaClgXG4gIGxlZnQ6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAsdj0oMCxsLmRlZmF1bHQpKGgpYFxuICByaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIHBvaW50ZXItZXZlbnRzOiAkeyh7ZGlzYWJsZWQ6ZX0pPT5lP1wibm9uZVwiOnZvaWQgMH07XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ2fTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbmAsZz0oMCxsLmRlZmF1bHQpKGQuU3R5bGVkSW5wdXRGaWVsZClgXG4gIGFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgZm9udC1mYW1pbHk6ICR7dS5Gb250U3RhY2t9O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4Lnh4eGxhcmdlfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4Lnh4eGxhcmdlfTtcbiAgOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuICA6Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5gfSw5NjU0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig5MzY4KSx0KX0sMTk3ODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNjg4NCksdCl9LDY4ODQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5OdW1iZXJJbnB1dD12b2lkIDA7Y29uc3QgYT1uKDU4OTMpLGk9big2Njg5KSxsPW8obig3NTE4KSksYz1uKDY2MDYpLHM9big5NjM0KSx1PW4oMTMzNSksZD1uKDg4NzgpO3ZhciBmOyFmdW5jdGlvbihlKXtlW2UuVXA9MV09XCJVcFwiLGVbZS5Eb3duPS0xXT1cIkRvd25cIn0oZnx8KGY9e30pKSx0Lk51bWJlcklucHV0PSgwLGkuZm9yd2FyZFJlZikoKChlLHQpPT57dmFye21pbjpuLG1heDpvLG9uQ2hhbmdlOmwsc3RlcDpzPTEsdmFsdWU6dX09ZSxoPXIoZSxbXCJtaW5cIixcIm1heFwiLFwib25DaGFuZ2VcIixcInN0ZXBcIixcInZhbHVlXCJdKTtjb25zdCBDPU51bWJlcihzKSxbdixnXT0oMCxpLnVzZVN0YXRlKShOdW1iZXIodSkpOygwLGkudXNlRWZmZWN0KSgoKCk9PmcoTnVtYmVyKHUpKSksW10pO2NvbnN0IG09ZT0+e2NvbnN0IHQ9dj9OdW1iZXIodik6MCxyPW4/TnVtYmVyKG4pOnZvaWQgMCxhPW8/TnVtYmVyKG8pOnZvaWQgMCxpPSgwLGMuY2xhbXApKHQrQyplLHIsYSk7ZyhpKX07cmV0dXJuKDAsYS5qc3gpKGQuQmFzZUlucHV0LE9iamVjdC5hc3NpZ24oe3R5cGU6XCJudW1iZXJcIn0saCx7cmVuZGVySW5wdXQ6ZT0+e3ZhciBpPXIoZSxbXSk7cmV0dXJuKDAsYS5qc3gpKHAsT2JqZWN0LmFzc2lnbih7cmVmOnQsb25JbmNyZW1lbnQ6KCk9Pm0oZi5VcCksb25EZWNyZW1lbnQ6KCk9Pm0oZi5Eb3duKSxvbkNoYW5nZTplPT57Y29uc3R7dmFsdWU6dH09ZS50YXJnZXQ7dCYmZyhOdW1iZXIodCkpLGwmJmwoZSl9LG1pbjpuLG1heDpvLHN0ZXA6c30saSx7dmFsdWU6dn0pKX19KSl9KSksdC5OdW1iZXJJbnB1dC5kaXNwbGF5TmFtZT1cIk51bWJlcklucHV0XCI7Y29uc3QgcD0oMCxpLmZvcndhcmRSZWYpKCgoZSx0KT0+e3ZhcntvbkluY3JlbWVudDpuLG9uRGVjcmVtZW50Om99PWUsaT1yKGUsW1wib25JbmNyZW1lbnRcIixcIm9uRGVjcmVtZW50XCJdKTtyZXR1cm4oMCxhLmpzeHMpKGgse2NoaWxkcmVuOlsoMCxhLmpzeCkoZyxPYmplY3QuYXNzaWduKHtyZWY6dH0saSkpLCgwLGEuanN4cykoQyxPYmplY3QuYXNzaWduKHtmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsZGlzYWJsZWQ6aS5kaXNhYmxlZH0se2NoaWxkcmVuOlsoMCxhLmpzeCkodixPYmplY3QuYXNzaWduKHtvbkNsaWNrOm4sZGlzYWJsZWQ6aS5kaXNhYmxlZH0se2NoaWxkcmVuOigwLGEuanN4KShzLkljb24se2ljb246XCJUcmlhbmdsZVVwSWNvblwifSl9KSksKDAsYS5qc3gpKHYsT2JqZWN0LmFzc2lnbih7b25DbGljazpvLGRpc2FibGVkOmkuZGlzYWJsZWR9LHtjaGlsZHJlbjooMCxhLmpzeCkocy5JY29uLHtpY29uOlwiVHJpYW5nbGVEb3duSWNvblwifSl9KSldfSkpXX0pfSkpO3AuZGlzcGxheU5hbWU9XCJTdHlsZWROdW1iZXJJbnB1dFwiO2NvbnN0IGg9bC5kZWZhdWx0LmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gIHdpZHRoOiAxMDAlO1xuYCxDPSgwLGwuZGVmYXVsdCkodS5Cb3gpYFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAxcHg7XG4gIHRvcDogMXB4O1xuICBnYXA6IDFweDtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAycHgpO1xuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5gMCAke2UucmFkaXVzLnNtYWxsfSAke2UucmFkaXVzLnNtYWxsfSAwYH07XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgcG9pbnRlci1ldmVudHM6ICR7KHtkaXNhYmxlZDplfSk9PmU/XCJub25lXCI6dm9pZCAwfTtcbmAsdj0oMCxsLmRlZmF1bHQpKHUuQm94KWBcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gIHBhZGRpbmc6IDAgJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgaGVpZ2h0OiA1MCU7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gIGNvbG9yOiAkeyh7ZGlzYWJsZWQ6ZSx0aGVtZTp0fSk9PmU/dC5wYWxldHRlLnRleHRIZWxwOnQucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Rm9jdXNlZH07XG4gIH1cblxuICAmOmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Q29sb3J9O1xuICB9XG5gLGc9KDAsbC5kZWZhdWx0KShkLlN0eWxlZElucHV0RmllbGQpYFxuICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgueHh4bGFyZ2V9O1xuXG4gIDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbiAgOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuYH0sNTIxNTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMjI1NSksdCl9LDIyNTU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9KSxhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZyKHQsZSxuKTtyZXR1cm4gbyh0LGUpLHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuUmFkaW9Hcm91cD12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGw9YShuKDY2ODkpKSxjPWEobig3NTE4KSkscz1uKDEzMzUpLHU9big3NzY5KSxkPW4oMjU2NSk7dC5SYWRpb0dyb3VwPSh7ZGlyZWN0aW9uOmU9XCJjb2x1bW5cIixkaXNhYmxlZDp0LGxhYmVsU2lkZTpuPVwicmlnaHRcIixnYXA6cj1cInNtYWxsXCIsbWVzc2FnZTpvLG5hbWU6YSxjaGlsZHJlbjpjfSk9PigwLGkuanN4cykoZix7Y2hpbGRyZW46WygwLGkuanN4KShwLE9iamVjdC5hc3NpZ24oe2RpcmVjdGlvbjplLGxhYmVsU2lkZTpuLGdhcDpyfSx7Y2hpbGRyZW46bC5DaGlsZHJlbi5tYXAoYywoZT0+e2NvbnN0IHI9ZTtyZXR1cm4gci50eXBlPT09ZC5SYWRpb0lucHV0P2wuY2xvbmVFbGVtZW50KHIse25hbWU6YSxsYWJlbFNpZGU6bixkaXNhYmxlZDp0fSk6cn0pKX0pKSxvPygwLGkuanN4KShoLE9iamVjdC5hc3NpZ24oe2Rpc2FibGVkOnR9LHtjaGlsZHJlbjpvfSkpOm51bGxdfSk7Y29uc3QgZj0oMCxjLmRlZmF1bHQpKHMuQm94KWBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IG1heC1jb250ZW50O1xuYCxwPSgwLGMuZGVmYXVsdCkocy5Cb3gpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogJHtlPT5lLmRpcmVjdGlvbn07XG4gIGFsaWduLWl0ZW1zOiAke2U9Pntzd2l0Y2goZS5sYWJlbFNpZGUpe2Nhc2VcImxlZnRcIjpyZXR1cm5cImVuZFwiO2Nhc2VcInJpZ2h0XCI6cmV0dXJuXCJzdGFydFwiO2RlZmF1bHQ6cmV0dXJuXCJjZW50ZXJcIn19fTtcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xuYCxoPSgwLGMuZGVmYXVsdCkodS5UZXh0KWBcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dFBsYWNlaG9sZGVyfTtcbiAgbWFyZ2luLXRvcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcblxuICAkeyh7ZGlzYWJsZWQ6ZX0pPT5lJiZjLmNzc2BcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gICAgYH1cbmB9LDM2NDE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDI1NjUpLHQpfSwyNTY1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fSxpPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuUmFkaW9JbnB1dD12b2lkIDA7Y29uc3QgbD1uKDU4OTMpLGM9big3NzY5KSxzPWEobig2Njg5KSksdT1hKG4oNzUxOCkpLGQ9bigxMzM1KSxmPW4oOTYzNCk7dC5SYWRpb0lucHV0PXMuZm9yd2FyZFJlZigoKGUsdCk9Pnt2YXJ7ZGlzYWJsZWQ6bixpZDpyLGxhYmVsOm8sbGFiZWxTaWRlOmEsaWNvbjpjfT1lLHM9aShlLFtcImRpc2FibGVkXCIsXCJpZFwiLFwibGFiZWxcIixcImxhYmVsU2lkZVwiLFwiaWNvblwiXSk7cmV0dXJuKDAsbC5qc3gpKHAse2NoaWxkcmVuOigwLGwuanN4cykodixPYmplY3QuYXNzaWduKHthczpcImxhYmVsXCIsaHRtbEZvcjpyLGxhYmVsU2lkZTphLGRpc2FibGVkOm59LHtjaGlsZHJlbjpbKDAsbC5qc3gpKEMsT2JqZWN0LmFzc2lnbih7cmVmOnQsdHlwZTpcInJhZGlvXCIsZGlzYWJsZWQ6bn0scykpLCgwLGwuanN4KShoLHt9KSwhIWMmJigwLGwuanN4KShmLkljb24se2ljb246Y30pLG98fFwiXCJdfSkpfSl9KSksdC5SYWRpb0lucHV0LmRpc3BsYXlOYW1lPVwiUmFkaW9JbnB1dFwiO2NvbnN0IHA9KDAsdS5kZWZhdWx0KShkLkJveClgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5gLGg9dS5kZWZhdWx0LmRpdmBcbiAgd2lkdGg6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIGhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDJweDtcbiAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcblxuICBpbnB1dDpjaGVja2VkIH4gJjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gICAgd2lkdGg6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgICBoZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgfVxuXG4gIGlucHV0OmRpc2FibGVkIH4gJiB7XG4gICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gIH1cblxuICBpbnB1dDpkaXNhYmxlZCB+ICY6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgfVxuYCxDPXUuZGVmYXVsdC5pbnB1dGBcbiAgb3BhY2l0eTogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICB9XG5gLHY9KDAsdS5kZWZhdWx0KShjLlRleHQpYFxuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiAkeyh7bGFiZWxTaWRlOmV9KT0+e3N3aXRjaChlfHxcInJpZ2h0XCIpe2Nhc2VcImxlZnRcIjpyZXR1cm5cInJvdy1yZXZlcnNlXCI7Y2FzZVwicmlnaHRcIjpyZXR1cm5cInJvd1wiO2Nhc2VcInRvcFwiOnJldHVyblwiY29sdW1uLXJldmVyc2VcIjtjYXNlXCJib3R0b21cIjpyZXR1cm5cImNvbHVtblwifX19O1xuICBnYXA6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgJHsoe2Rpc2FibGVkOmV9KT0+ZT91LmNzc2BcbiAgICAgICAgICAmIHtcbiAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICAgICAgICBgOm51bGx9XG5gfSw4NTEwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig3NDI5KSx0KX0sNzQyOTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5SYXdJbnB1dD12b2lkIDA7Y29uc3Qgbz1yKG4oNzUxOCkpO3QuUmF3SW5wdXQ9by5kZWZhdWx0LmlucHV0YGAsdC5SYXdJbnB1dC5kaXNwbGF5TmFtZT1cIlJhd0lucHV0XCJ9LDMxMTk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDc5OSksdCl9LDc5OTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5UZXh0QXJlYT12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpLGE9big2Njg5KSxpPXIobig3NTE4KSksbD1uKDk1MDcpLGM9big5NTA3KSxzPW4oOTUwNyk7dC5UZXh0QXJlYT0oMCxhLmZvcndhcmRSZWYpKCgoZSx0KT0+KDAsby5qc3gpKHUsT2JqZWN0LmFzc2lnbih7cmVmOnR9LGUse29uQ2hhbmdlOmUub25DaGFuZ2V9KSkpKSx0LlRleHRBcmVhLmRpc3BsYXlOYW1lPVwiVGV4dEFyZWFcIjtjb25zdCB1PWkuZGVmYXVsdC50ZXh0YXJlYWBcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgYm9yZGVyOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Qm9yZGVyfTtcbiAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZSxzdGF0dXM6dH0pPT4oMCxzLmdldFN0YXR1c0NvbG9yKShlLHQsXCJpbnB1dEJvcmRlclwiKX07XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHJlc2l6ZTogbm9uZTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgJHtsLk1peGlucy5zY3JvbGxiYXIuc21hbGx9O1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Q29sb3J9O1xuICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmxpbmVIZWlnaHQudGV4dH07XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRXZWlnaHQubm9ybWFsfTtcbiAgZm9udC1mYW1pbHk6ICR7Yy5Gb250U3RhY2t9O1xuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfSAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfSAwcHhcbiAgICAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmUsc3RhdHVzOnR9KT0+KDAscy5nZXRTdGF0dXNDb2xvcikoZSx0LFwiaW5wdXRGb2N1c2VkXCIpfTtcbiAgfVxuXG4gICY6ZGlzYWJsZWQ6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICB9XG5gfSw4OTUxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigyMzUyKSx0KX0sMjM1MjooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5UZXh0SW5wdXQ9dm9pZCAwO2NvbnN0IHI9big1ODkzKSxvPW4oNjY4OSksYT1uKDg4NzgpO3QuVGV4dElucHV0PSgwLG8uZm9yd2FyZFJlZikoKChlLHQpPT4oMCxyLmpzeCkoYS5CYXNlSW5wdXQsT2JqZWN0LmFzc2lnbih7cmVmOnQsdHlwZTpcInRleHRcIn0sZSkpKSksdC5UZXh0SW5wdXQuZGlzcGxheU5hbWU9XCJUZXh0SW5wdXRcIn0sMzMzOTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Cb3g9dm9pZCAwO2NvbnN0IG89cihuKDc1MTgpKSxhPW4oODczMiksaT1uKDU0NTkpLGw9ezE6aS5QYWxldHRlLmJhY2tncm91bmQxLDI6aS5QYWxldHRlLmJhY2tncm91bmQyLDM6aS5QYWxldHRlLmJhY2tncm91bmQzLDQ6aS5QYWxldHRlLmJhY2tncm91bmQ0LDU6aS5QYWxldHRlLmJhY2tncm91bmQ1LDY6aS5QYWxldHRlLmJhY2tncm91bmQ2fTt0LkJveD1vLmRlZmF1bHQuZGl2YFxuICAvKipcbiAgICogU3R5bGUgU2Nyb2xsYmFyIGZvciBCb3hlcyB3aXRoIG92ZXJmbG93XG4gICAqL1xuICAke2EuTWl4aW5zLnNjcm9sbGJhci5iYXNlfVxuXG4gIGRpc3BsYXk6ICR7KHtkaXNwbGF5OmU9XCJmbGV4XCJ9KT0+ZX07XG4gIGZsZXgtZGlyZWN0aW9uOiAkeyh7ZmxleERpcmVjdGlvbjplPVwicm93XCJ9KT0+ZX07XG4gIGZsZXgtd3JhcDogJHsoe2ZsZXhXcmFwOmU9XCJub3dyYXBcIn0pPT5lfTtcbiAgYWxpZ24taXRlbXM6ICR7KHthbGlnbkl0ZW1zOmV9KT0+ZX07XG4gIGp1c3RpZnktY29udGVudDogJHsoe2p1c3RpZnlDb250ZW50OmV9KT0+ZX07XG4gIGdhcDogJHsoe3RoZW1lOmUsZ2FwOnR9KT0+dCYmZS5weFt0XX07XG4gIGFsaWduLXNlbGY6ICR7KHthbGlnblNlbGY6ZX0pPT5lfTtcbiAgZmxleC1iYXNpczogJHsoe2ZsZXhCYXNpczplfSk9PmV9O1xuICBmbGV4LWdyb3c6ICR7KHtmbGV4R3JvdzplfSk9PmV9O1xuICBmbGV4LXNocmluazogJHsoe2ZsZXhTaHJpbms6ZX0pPT5lfTtcbiAgb3JkZXI6ICR7KHtvcmRlcjplfSk9PmV9O1xuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZSxwYWRkaW5nOnR9KT0+dCYmZS5weFt0XX07XG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplLGJhY2tncm91bmQ6dH0pPT50JiZlLnBhbGV0dGVbbFt0XV19O1xuYCx0LkJveC5kaXNwbGF5TmFtZT1cIkJveFwifSwxMzM1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigzMzM5KSx0KX0sNjcxMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkRlZmluaXRpb25MaXN0PXZvaWQgMDtjb25zdCBhPW4oNTg5MyksaT1vKG4oNzUxOCkpO3QuRGVmaW5pdGlvbkxpc3Q9ZT0+e3ZhcntkZWZpbml0aW9uczp0fT1lLG49cihlLFtcImRlZmluaXRpb25zXCJdKTtyZXR1cm4oMCxhLmpzeCkoYyxPYmplY3QuYXNzaWduKHt9LG4se3JvbGU6XCJsaXN0XCJ9LHtjaGlsZHJlbjooQXJyYXkuaXNBcnJheSh0KT90OkFycmF5LmZyb20odCkpLm1hcCgoKFtlLHRdLG4pPT4oMCxhLmpzeHMpKGwsT2JqZWN0LmFzc2lnbih7cm9sZTpcImxpc3RpdGVtXCJ9LHtjaGlsZHJlbjpbKDAsYS5qc3gpKHMsT2JqZWN0LmFzc2lnbih7aWQ6YHRlcm0ke259YH0se2NoaWxkcmVuOmV9KSksKDAsYS5qc3gpKHUsT2JqZWN0LmFzc2lnbih7XCJhcmlhLWxhYmVsbGVkYnlcIjpgdGVybSR7bn1gfSx7Y2hpbGRyZW46dH0pKV19KSxgJHtlfS0ke259YCkpKX0pKX07Y29uc3QgbD1pLmRlZmF1bHQuZGl2YFxuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAzZnI7XG5gLGM9aS5kZWZhdWx0LmRsYFxuICBnYXA6ICR7KHt0aGVtZTplfSk9PmAwICR7ZS5weC5sYXJnZX1gfTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH0gJHtlLnB4LmJhc2V9YH07XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG5gLHM9aS5kZWZhdWx0LmR0YFxuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHRIZWxwfTtcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLnNtYWxsfTtcbiAgZm9udC13ZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuZm9udFdlaWdodC5ub3JtYWx9O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgcGFkZGluZy1ib3R0b206ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuYCx1PWkuZGVmYXVsdC5kZGBcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5zbWFsbH07XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG5gfSw1Mzc3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig2NzEwKSx0KX0sOTQzMTooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5HbG9iYWxTdHlsZXM9dm9pZCAwO2NvbnN0IHI9big3NTE4KSxvPW4oMzQ3MSksYT1uKDU3NSk7dC5HbG9iYWxTdHlsZXM9ci5jcmVhdGVHbG9iYWxTdHlsZWBcbiAgLyoqIC0+IERlZmluZSBHbG9iYWwgQ1NTIFZhcnMgKi9cbiAgOnJvb3Qge1xuICAgIC0tb3BlbmZpbi11aS1nbG9iYWxCYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDF9O1xuICAgIC0tb3BlbmZpbi11aS1nbG9iYWxUZXh0OiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICAgIC0tb3BlbmZpbi11aS1nbG9iYWxQbGFjZWhvbGRlcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0UGxhY2Vob2xkZXJ9O1xuICAgIC0tb3BlbmZpbi11aS1nbG9iYWxUeXBvZ3JhcGh5OiAke28uVHlwb2dyYXBoeS5iYXNlfTtcbiAgICAtLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbjogJHsoe3RoZW1lOmV9KT0+ZS50cmFuc2l0aW9uLmJhc2V9O1xuXG4gICAgLyogTWFwIG92ZXIgdGhlIHBhbGV0dGUga2V5cyBhbmQgY3JlYXRlIHZhcmlhYmxlcyBvdXQgb2YgdGhlbSAqL1xuICAgICR7YS5nZXRSb290Q3NzVmFyc31cbiAgfVxuXG4gIC8qKiAtPiBAZm9udC1mYWNlIERlY2xhcmF0aW9uICovXG4gICR7YS5nZXRGb250RmFjZXN9XG5cbiAgLyoqIC0+IE1pY3JvIFJlc2V0ICovXG4gICoge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgLyoqXG4gICAgICogUHJldmVudCBicm93c2VyIGF1dG8td2VpZ2h0aW5nXG4gICAgICogQGxpbmsgaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9hbG1hbmFjL3Byb3BlcnRpZXMvZi9mb250LXN5bnRoZXNpcy9cbiAgICAgKi9cbiAgICBmb250LXN5bnRoZXNpczogbm9uZTtcbiAgfVxuXG4gIC8qKiAtPiBBcHBseSBHbG9iYWwgU3R5bGVzICovXG4gIDpyb290LFxuICBib2R5IHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbEJhY2tncm91bmQpO1xuICAgIGNvbG9yOiB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRleHQpO1xuICAgIGZvbnQ6IHZhcigtLW9wZW5maW4tdWktZ2xvYmFsVHlwb2dyYXBoeSk7XG4gIH1cblxuICA6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxQbGFjZWhvbGRlcik7XG4gIH1cblxuICAvKiogLT4gUmVkdWNlZCBNb3Rpb24gKEFjY2Vzc2liaWxpdHkpICovXG4gIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbikge1xuICAgIDpyb290IHtcbiAgICAgIC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uOiAkeyh7dGhlbWU6ZX0pPT5lLnRyYW5zaXRpb24ubm9uZX07XG4gICAgfVxuICB9XG5gfSwxMDY5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig5NDMxKSx0KX0sOTUwNzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzQ3MSksdCksbyhuKDY3MTQpLHQpLG8obig5MjcyKSx0KSxvKG4oNTc1KSx0KSxvKG4oMTQ0MSksdCksbyhuKDg3MzIpLHQpLG8obig1NDU5KSx0KSxvKG4oNTMxNyksdCksbyhuKDQyMCksdCl9LDk5ODQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZ2V0TW9zdFJlYWRhYmxlPXQuZGFya2VuQ29sb3I9dC5saWdodGVuQ29sb3I9dm9pZCAwO2NvbnN0IG89cihuKDgyMDcpKTt0LmxpZ2h0ZW5Db2xvcj0oZSx0KT0+YShlLFwibGlnaHRlblwiLHQpLHQuZGFya2VuQ29sb3I9KGUsdCk9PmEoZSxcImRhcmtlblwiLHQpO2NvbnN0IGE9KGUsdCxuKT0+e2lmKG4mJihuPDB8fG4+MTAwKSl0aHJvdyBuZXcgRXJyb3IoYCR7bn0gbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEwMGApO3JldHVybigwLG8uZGVmYXVsdCkoZSlbdF0obikudG9TdHJpbmcoKX07dC5nZXRNb3N0UmVhZGFibGU9KGUsdCk9Pm8uZGVmYXVsdC5tb3N0UmVhZGFibGUoZSx0KS50b0hleFN0cmluZygpfSw4MDI5OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db25maWd1cmF0aW9uPXZvaWQgMCx0LkNvbmZpZ3VyYXRpb249e2ZvbnRMb2FkaW5nOlwiY2RuXCJ9fSwzNDcxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNkbkZvbnRGYWNlQ3NzPXQuSWNvblNpemU9dC5JY29uU2V0PXQuVHJhbnNpdGlvbj10LlR5cG9ncmFwaHk9dC5MaW5lSGVpZ2h0PXQuRm9udFdlaWdodD10LkZvbnRTaXplPXQuRm9udFN0YWNrPXQuU2hhZG93PXQuUmFkaXVzPXQuVW5pdFB4PXQuVW5pdD10LlNpemVOYW1lPXQuU2l6ZT10LkNvbG9yPXZvaWQgMDtjb25zdCBpPWEobigxNTIxKSksbD1hKG4oMjc3MikpLGM9big5MjcyKTt0LkNvbG9yPXt3aGl0ZTpcIiNGRkZGRkZcIixsaWdodEdyYXkxOlwiI0ZBRkJGRVwiLGxpZ2h0R3JheTI6XCIjRjNGNUY4XCIsbGlnaHRHcmF5MzpcIiNFQ0VFRjFcIixsaWdodEdyYXk0OlwiI0REREZFNFwiLGxpZ2h0R3JheTU6XCIjQzlDQkQyXCIsbmV1dHJhbEdyYXk6XCIjN0Q4MDhBXCIsbmV1dHJhbEdyYXk4MDpcInJnYmEoMTI1LDEyOCwxMzgsMC44KVwiLHNpbHZlckdyYXk6XCIjQzBDMUMyXCIsZGFya0dyYXkxOlwiIzUzNTY1RlwiLGRhcmtHcmF5MjpcIiMzODNBNDBcIixkYXJrR3JheTM6XCIjMkYzMTM2XCIsZGFya0dyYXk0OlwiIzI0MjYyQlwiLGRhcmtHcmF5NTpcIiMxRTFGMjNcIixkYXJrR3JheTY6XCIjMTExMjE0XCIsb3BlbkZpbkRhcmtlc3Q6XCIjM0QzOUNEXCIsb3BlbkZpbkRhcmtlcjpcIiM0NjQyRTBcIixvcGVuRmluOlwiIzUwNENGRlwiLG9wZW5GaW5MaWdodDpcIiM1MjU0RkJcIixvcGVuRmluTGlnaHRlcjpcIiM1QzVFRkVcIixvcGVuRmluTGlnaHRlc3Q6XCIjNjg2NEZGXCIsZnVuY3Rpb25hbDE6XCIjMjA3NzM1XCIsZnVuY3Rpb25hbDI6XCIjNDZDOEYxXCIsZnVuY3Rpb25hbDM6XCIjMEE3NkQzXCIsZnVuY3Rpb25hbDQ6XCIjNkNBREU1XCIsZnVuY3Rpb25hbDU6XCIjMEE3NkQzXCIsZnVuY3Rpb25hbDY6XCIjODgyQkZFXCIsZnVuY3Rpb25hbDc6XCIjRjMxODE4XCIsZnVuY3Rpb25hbDg6XCIjQzkzNDAwXCIsZnVuY3Rpb25hbDk6XCIjRkY1RTYwXCIsZnVuY3Rpb25hbDEwOlwiI0Y0OEYwMFwiLHB1cnBsZTpcIiM4QzYxRkZcIixsaWdodGJsdWU6XCIjMzZDM0ZFXCIsYXF1YTpcIiMwMENDODhcIix5ZWxsb3c6XCIjRkZFQjAwXCIsc2FsbW9uOlwiI0ZGOEM0Q1wiLHBpbms6XCIjRkY1RTYwXCIsbGlnaHRwaW5rOlwiI0ZGOEZCOFwiLHdoaXRlMDA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuMClcIix3aGl0ZTEwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjEpXCIsd2hpdGUyMDpcInJnYmEoMjU1LDI1NSwyNTUsMC4yKVwiLHdoaXRlMzA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuMylcIix3aGl0ZTQwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjQpXCIsd2hpdGU1MDpcInJnYmEoMjU1LDI1NSwyNTUsMC41KVwiLHdoaXRlNjA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNilcIix3aGl0ZTcwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjcpXCIsd2hpdGU4MDpcInJnYmEoMjU1LDI1NSwyNTUsMC44KVwiLHdoaXRlOTA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuOSlcIixibGFjazAwOlwicmdiYSgwLDAsMCwwLjApXCIsYmxhY2sxMDpcInJnYmEoMCwwLDAsMC4xKVwiLGJsYWNrMjA6XCJyZ2JhKDAsMCwwLDAuMilcIixibGFjazMwOlwicmdiYSgwLDAsMCwwLjMpXCIsYmxhY2s0MDpcInJnYmEoMCwwLDAsMC40KVwiLGJsYWNrNTA6XCJyZ2JhKDAsMCwwLDAuNSlcIixibGFjazYwOlwicmdiYSgwLDAsMCwwLjYpXCIsYmxhY2s3MDpcInJnYmEoMCwwLDAsMC43KVwiLGJsYWNrODA6XCJyZ2JhKDAsMCwwLDAuOClcIixibGFjazkwOlwicmdiYSgwLDAsMCwwLjkpXCIsdHJhbnNwYXJlbnQ6XCJ0cmFuc3BhcmVudFwifSx0LlNpemU9e3hzbWFsbDpcInhzbWFsbFwiLHNtYWxsOlwic21hbGxcIixiYXNlOlwiYmFzZVwiLGxhcmdlOlwibGFyZ2VcIix4bGFyZ2U6XCJ4bGFyZ2VcIix4eGxhcmdlOlwieHhsYXJnZVwiLHh4eGxhcmdlOlwieHh4bGFyZ2VcIix4eHh4bGFyZ2U6XCJ4eHh4bGFyZ2VcIn0sdC5TaXplTmFtZT17W3QuU2l6ZS54c21hbGxdOlwiRXh0cmEgU21hbGxcIixbdC5TaXplLnNtYWxsXTpcIlNtYWxsXCIsW3QuU2l6ZS5iYXNlXTpcIkJhc2VcIixbdC5TaXplLmxhcmdlXTpcIkxhcmdlXCIsW3QuU2l6ZS54bGFyZ2VdOlwiRXh0cmEgTGFyZ2VcIixbdC5TaXplLnh4bGFyZ2VdOlwiMlggTGFyZ2VcIixbdC5TaXplLnh4eGxhcmdlXTpcIjNYIExhcmdlXCIsW3QuU2l6ZS54eHh4bGFyZ2VdOlwiNFggTGFyZ2VcIn0sdC5Vbml0PXtbdC5TaXplLnhzbWFsbF06NCxbdC5TaXplLnNtYWxsXTo4LFt0LlNpemUuYmFzZV06MTIsW3QuU2l6ZS5sYXJnZV06MTYsW3QuU2l6ZS54bGFyZ2VdOjIwLFt0LlNpemUueHhsYXJnZV06MjQsW3QuU2l6ZS54eHhsYXJnZV06MzIsW3QuU2l6ZS54eHh4bGFyZ2VdOjQ4fSx0LlVuaXRQeD17W3QuU2l6ZS54c21hbGxdOlwiNHB4XCIsW3QuU2l6ZS5zbWFsbF06XCI4cHhcIixbdC5TaXplLmJhc2VdOlwiMTJweFwiLFt0LlNpemUubGFyZ2VdOlwiMTZweFwiLFt0LlNpemUueGxhcmdlXTpcIjIwcHhcIixbdC5TaXplLnh4bGFyZ2VdOlwiMjRweFwiLFt0LlNpemUueHh4bGFyZ2VdOlwiMzJweFwiLFt0LlNpemUueHh4eGxhcmdlXTpcIjQ4cHhcIn0sdC5SYWRpdXM9e1t0LlNpemUueHNtYWxsXTpcIjJweFwiLFt0LlNpemUuc21hbGxdOlwiNHB4XCIsW3QuU2l6ZS5iYXNlXTpcIjhweFwiLFt0LlNpemUubGFyZ2VdOlwiMjRweFwiLHBpbGw6XCIxMDB2aFwiLHJvdW5kOlwiNTAlXCIsbm9uZTpcIjBcIn0sdC5TaGFkb3c9e1t0LlNpemUuYmFzZV06XCIwIDRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjI1KVwifSx0LkZvbnRTdGFjaz1bXCJJbnRlclwiLFwiLWFwcGxlLXN5c3RlbVwiLFwiQmxpbmtNYWNTeXN0ZW1Gb250XCIsXCJTZWdvZSBVSVwiLFwiUm9ib3RvXCIsXCJPeHlnZW4tU2Fuc1wiLFwiVWJ1bnR1XCIsXCJDYW50YXJlbGxcIixcIkhlbHZldGljYSBOZXVlXCIsXCJzYW5zLXNlcmlmXCJdLmpvaW4oXCIsIFwiKSx0LkZvbnRTaXplPXtbdC5TaXplLnhzbWFsbF06XCI4cHhcIixbdC5TaXplLnNtYWxsXTpcIjEwcHhcIixbdC5TaXplLmJhc2VdOlwiMTJweFwiLFt0LlNpemUubGFyZ2VdOlwiMTRweFwiLFt0LlNpemUueGxhcmdlXTpcIjE2cHhcIixbdC5TaXplLnh4bGFyZ2VdOlwiMThweFwiLFt0LlNpemUueHh4bGFyZ2VdOlwiMjBweFwiLFt0LlNpemUueHh4eGxhcmdlXTpcIjQwcHhcIn0sdC5Gb250V2VpZ2h0PXtub3JtYWw6NDAwLGJvbGQ6NjAwfSx0LkxpbmVIZWlnaHQ9e3VpOjEsaGVhZGluZzoxLjIsdGV4dDoxLjV9LHQuVHlwb2dyYXBoeT17YmFzZTpgJHt0LkZvbnRTaXplLmJhc2V9LyR7dC5MaW5lSGVpZ2h0LnRleHR9ICR7dC5Gb250U3RhY2t9YH0sdC5UcmFuc2l0aW9uPXtiYXNlOlwiMjAwbXMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSlcIixub25lOlwiMG1zXCJ9LHQuSWNvblNldD1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saSksbCksdC5JY29uU2l6ZT17W3QuU2l6ZS54c21hbGxdOnQuVW5pdFB4LnNtYWxsLFt0LlNpemUuc21hbGxdOnQuVW5pdFB4LmJhc2UsW3QuU2l6ZS5iYXNlXTpcIjE1cHhcIixbdC5TaXplLmxhcmdlXTp0LlVuaXRQeC54bGFyZ2UsW3QuU2l6ZS54bGFyZ2VdOnQuVW5pdFB4Lnh4bGFyZ2UsW3QuU2l6ZS54eGxhcmdlXTp0LlVuaXRQeC54eHhsYXJnZSxbdC5TaXplLnh4eGxhcmdlXTp0LlVuaXRQeC54eHh4bGFyZ2V9LHQuY2RuRm9udEZhY2VDc3M9KDAsYy5jcmVhdGVGb250RmFjZUNzcykoe3JlZ3VsYXI6XCIvL2Nkbi5vcGVuZmluLmNvL2ZvbnRzL2ludGVyL0ludGVyLVJlZ3VsYXIud29mZjI/djMuMTVcIixpdGFsaWM6XCIvL2Nkbi5vcGVuZmluLmNvL2ZvbnRzL2ludGVyL0ludGVyLUl0YWxpYy53b2ZmMj92My4xNVwiLHNlbWlCb2xkOlwiLy9jZG4ub3BlbmZpbi5jby9mb250cy9pbnRlci9JbnRlci1TZW1pQm9sZC53b2ZmMj92My4xNVwiLHNlbWlCb2xkSXRhbGljOlwiLy9jZG4ub3BlbmZpbi5jby9mb250cy9pbnRlci9JbnRlci1TZW1pQm9sZEl0YWxpYy53b2ZmMj92My4xNVwifSl9LDkyNzI6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuY3JlYXRlRm9udEZhY2VDc3M9dm9pZCAwO2NvbnN0IHI9big3NTE4KSxvPW4oMzQ3MSk7dC5jcmVhdGVGb250RmFjZUNzcz1mdW5jdGlvbihlKXtyZXR1cm4gci5jc3NgXG4gICAgQGZvbnQtZmFjZSB7XG4gICAgICBmb250LWZhbWlseTogJ0ludGVyJztcbiAgICAgIHNyYzogdXJsKCR7ZS5yZWd1bGFyfSkgZm9ybWF0KCd3b2ZmMicpO1xuICAgICAgZm9udC13ZWlnaHQ6ICR7by5Gb250V2VpZ2h0Lm5vcm1hbH07XG4gICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgfVxuICAgIEBmb250LWZhY2Uge1xuICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICBzcmM6IHVybCgke2UuaXRhbGljfSkgZm9ybWF0KCd3b2ZmMicpO1xuICAgICAgZm9udC13ZWlnaHQ6ICR7by5Gb250V2VpZ2h0Lm5vcm1hbH07XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgfVxuXG4gICAgQGZvbnQtZmFjZSB7XG4gICAgICBmb250LWZhbWlseTogJ0ludGVyJztcbiAgICAgIHNyYzogdXJsKCR7ZS5zZW1pQm9sZH0pIGZvcm1hdCgnd29mZjInKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke28uRm9udFdlaWdodC5ib2xkfTtcbiAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICB9XG5cbiAgICBAZm9udC1mYWNlIHtcbiAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInO1xuICAgICAgc3JjOiB1cmwoJHtlLnNlbWlCb2xkSXRhbGljfSkgZm9ybWF0KCd3b2ZmMicpO1xuICAgICAgZm9udC13ZWlnaHQ6ICR7by5Gb250V2VpZ2h0LmJvbGR9O1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgIH1cbiAgYH19LDY3MTQ6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuY3JlYXRlVGhlbWU9dm9pZCAwO2NvbnN0IHI9big4MDI5KSxvPW4oMzQ3MSksYT1uKDk5ODQpLGk9big1NDU5KSxsPXtfY29uZmlnOnIuQ29uZmlndXJhdGlvbixfY29sb3I6by5Db2xvcixmb250U2l6ZTpvLkZvbnRTaXplLGZvbnRXZWlnaHQ6by5Gb250V2VpZ2h0LGxpbmVIZWlnaHQ6by5MaW5lSGVpZ2h0LGljb25TaXplOm8uSWNvblNpemUscmFkaXVzOm8uUmFkaXVzLHNoYWRvdzpvLlNoYWRvdyx0cmFuc2l0aW9uOm8uVHJhbnNpdGlvbix1bml0Om8uVW5pdCxweDpvLlVuaXRQeH0sYz0oZSx0KT0+KHtbYCR7ZX1BY3RpdmVgXTooMCxhLmRhcmtlbkNvbG9yKSh0LDIpLFtgJHtlfUhvdmVyYF06KDAsYS5saWdodGVuQ29sb3IpKHQsNSksW2Ake2V9Rm9jdXNlZGBdOigwLGEuZ2V0TW9zdFJlYWRhYmxlKSh0LFtvLkNvbG9yLndoaXRlLG8uQ29sb3IuZGFya0dyYXk1XSksW2Ake2V9VGV4dGBdOigwLGEuZ2V0TW9zdFJlYWRhYmxlKSh0LFtvLkNvbG9yLndoaXRlLG8uQ29sb3IuZGFya0dyYXk1XSl9KTt0LmNyZWF0ZVRoZW1lPShlLHQ9XCJkYXJrXCIpPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbCkse3BhbGV0dGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSksYyhpLlBhbGV0dGUuYnJhbmRQcmltYXJ5LGUuYnJhbmRQcmltYXJ5KSksYyhpLlBhbGV0dGUuYnJhbmRTZWNvbmRhcnksZS5icmFuZFNlY29uZGFyeSkpfSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2VsZWN0ZWRTY2hlbWU6dH0pfX0sNTc1OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldFN0YXR1c0NvbG9yPXQuZ2V0Rm9udEZhY2VzPXQuZ2V0Um9vdENzc1ZhcnM9dC5nZXRWYXJpYW50Q1NTPXZvaWQgMDtjb25zdCByPW4oMzQ3MSksbz1uKDU0NTkpO3QuZ2V0VmFyaWFudENTUz0oZSx0KT0+bj0+ZVt0XVtuW3RdXSx0LmdldFJvb3RDc3NWYXJzPSh7dGhlbWU6ZX0pPT5PYmplY3Qua2V5cyhvLlBhbGV0dGUpLm1hcCgodD0+YC0tb3BlbmZpbi11aS0ke3R9OiAke2UucGFsZXR0ZVt0XX07YCkpLmpvaW4oXCJcXG5cIiksdC5nZXRGb250RmFjZXM9KHt0aGVtZTplfSk9PlwiaW1wb3J0XCI9PT1lLl9jb25maWcuZm9udExvYWRpbmc/ZS5fY29uZmlnLmZvbnRDc3M6ci5jZG5Gb250RmFjZUNzcyx0LmdldFN0YXR1c0NvbG9yPShlLHQsbik9Pntzd2l0Y2godCl7Y2FzZVwiYWN0aXZlXCI6cmV0dXJuIGUucGFsZXR0ZS5zdGF0dXNBY3RpdmU7Y2FzZVwiY3JpdGljYWxcIjpyZXR1cm4gZS5wYWxldHRlLnN0YXR1c0NyaXRpY2FsO2Nhc2VcIndhcm5pbmdcIjpyZXR1cm4gZS5wYWxldHRlLnN0YXR1c1dhcm5pbmc7Y2FzZVwic3VjY2Vzc1wiOnJldHVybiBlLnBhbGV0dGUuc3RhdHVzU3VjY2VzcztkZWZhdWx0OnJldHVybiBuP2UucGFsZXR0ZVtuXTpcImluaGVyaXRcIn19fSwxNDQxOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LDg3MzI6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTWl4aW5zPXZvaWQgMDtjb25zdCByPW4oMzQ3MSksbz1uKDc1MTgpLGE9by5jc3NgXG4gIHVzZXItc2VsZWN0OiBub25lO1xuYCxpPW8uY3NzYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmAsbD1vLmNzc2BcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiB2YXIoLS1zY3JvbGxiYXJTaXplLCAke3IuVW5pdFB4LnhzbWFsbH0pO1xuICAgIGhlaWdodDogdmFyKC0tc2Nyb2xsYmFyU2l6ZSwgJHtyLlVuaXRQeC54c21hbGx9KTtcbiAgfVxuXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiAke3IuQ29sb3IubmV1dHJhbEdyYXk4MH07XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2Nyb2xsYmFyU2l6ZSwgJHtyLlVuaXRQeC54c21hbGx9KTtcbiAgICBvcGFjaXR5OiAwLjg7XG4gIH1cblxuICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgYmFja2dyb3VuZDogJHtyLkNvbG9yLndoaXRlODB9O1xuICAgIHdpZHRoOiB2YXIoLS1zY3JvbGxiYXJTaXplLCAke3IuVW5pdFB4LnhzbWFsbH0pO1xuICAgIGhlaWdodDogdmFyKC0tc2Nyb2xsYmFyU2l6ZSwgJHtyLlVuaXRQeC54c21hbGx9KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zY3JvbGxiYXJTaXplLCAke3IuVW5pdFB4LnhzbWFsbH0pO1xuICAgIG9wYWNpdHk6IDAuODtcbiAgfVxuYCxjPW8uY3NzYFxuICAtLXNjcm9sbGJhclNpemU6IDJweDtcbiAgJHtsfTtcbmAscz1vLmNzc2BcbiAgLXdlYmtpdC1hcHAtcmVnaW9uOiBkcmFnO1xuYCx1PW8uY3NzYFxuICAtd2Via2l0LWFwcC1yZWdpb246IG5vLWRyYWc7XG5gO3QuTWl4aW5zPXtub1NlbGVjdDphLHRleHRPdmVyZmxvdzppLHNjcm9sbGJhcjp7W3IuU2l6ZS5iYXNlXTpsLFtyLlNpemUuc21hbGxdOmN9LGFwcFJlZ2lvbjp7ZHJhZzpzLG5vRHJhZzp1fX19LDU0NTk6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlBhbGV0dGU9dm9pZCAwLHQuUGFsZXR0ZT17YmFja2dyb3VuZDE6XCJiYWNrZ3JvdW5kMVwiLGJhY2tncm91bmQyOlwiYmFja2dyb3VuZDJcIixiYWNrZ3JvdW5kMzpcImJhY2tncm91bmQzXCIsYmFja2dyb3VuZDQ6XCJiYWNrZ3JvdW5kNFwiLGJhY2tncm91bmQ1OlwiYmFja2dyb3VuZDVcIixiYWNrZ3JvdW5kNjpcImJhY2tncm91bmQ2XCIsYnJhbmRQcmltYXJ5OlwiYnJhbmRQcmltYXJ5XCIsYnJhbmRTZWNvbmRhcnk6XCJicmFuZFNlY29uZGFyeVwiLGJyYW5kUHJpbWFyeUFjdGl2ZTpcImJyYW5kUHJpbWFyeUFjdGl2ZVwiLGJyYW5kUHJpbWFyeUhvdmVyOlwiYnJhbmRQcmltYXJ5SG92ZXJcIixicmFuZFByaW1hcnlGb2N1c2VkOlwiYnJhbmRQcmltYXJ5Rm9jdXNlZFwiLGJyYW5kUHJpbWFyeVRleHQ6XCJicmFuZFByaW1hcnlUZXh0XCIsYnJhbmRTZWNvbmRhcnlBY3RpdmU6XCJicmFuZFNlY29uZGFyeUFjdGl2ZVwiLGJyYW5kU2Vjb25kYXJ5SG92ZXI6XCJicmFuZFNlY29uZGFyeUhvdmVyXCIsYnJhbmRTZWNvbmRhcnlGb2N1c2VkOlwiYnJhbmRTZWNvbmRhcnlGb2N1c2VkXCIsYnJhbmRTZWNvbmRhcnlUZXh0OlwiYnJhbmRTZWNvbmRhcnlUZXh0XCIsaW5wdXRCYWNrZ3JvdW5kOlwiaW5wdXRCYWNrZ3JvdW5kXCIsaW5wdXRDb2xvcjpcImlucHV0Q29sb3JcIixpbnB1dFBsYWNlaG9sZGVyOlwiaW5wdXRQbGFjZWhvbGRlclwiLGlucHV0RGlzYWJsZWQ6XCJpbnB1dERpc2FibGVkXCIsaW5wdXRGb2N1c2VkOlwiaW5wdXRGb2N1c2VkXCIsaW5wdXRCb3JkZXI6XCJpbnB1dEJvcmRlclwiLHN0YXR1c1N1Y2Nlc3M6XCJzdGF0dXNTdWNjZXNzXCIsc3RhdHVzV2FybmluZzpcInN0YXR1c1dhcm5pbmdcIixzdGF0dXNDcml0aWNhbDpcInN0YXR1c0NyaXRpY2FsXCIsc3RhdHVzQWN0aXZlOlwic3RhdHVzQWN0aXZlXCIsdGV4dERlZmF1bHQ6XCJ0ZXh0RGVmYXVsdFwiLHRleHRIZWxwOlwidGV4dEhlbHBcIix0ZXh0SW5hY3RpdmU6XCJ0ZXh0SW5hY3RpdmVcIixib3JkZXJOZXV0cmFsOlwiYm9yZGVyTmV1dHJhbFwiLGNvbnRlbnRCYWNrZ3JvdW5kMTpcImNvbnRlbnRCYWNrZ3JvdW5kMVwiLGNvbnRlbnRCYWNrZ3JvdW5kMjpcImNvbnRlbnRCYWNrZ3JvdW5kMlwiLGNvbnRlbnRCYWNrZ3JvdW5kMzpcImNvbnRlbnRCYWNrZ3JvdW5kM1wiLGNvbnRlbnRCYWNrZ3JvdW5kNDpcImNvbnRlbnRCYWNrZ3JvdW5kNFwiLGNvbnRlbnRCYWNrZ3JvdW5kNTpcImNvbnRlbnRCYWNrZ3JvdW5kNVwiLGxpbmtEZWZhdWx0OlwibGlua0RlZmF1bHRcIixsaW5rSG92ZXI6XCJsaW5rSG92ZXJcIn19LDUzMTc6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sNDI2NjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oOTQ4MyksdCl9LDk0ODM6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT3BlbkZpbkRhcmtUaGVtZT10Lk9wZW5GaW5MaWdodFRoZW1lPXZvaWQgMDtjb25zdCByPW4oNTQ1OSksbz1uKDM0NzEpLGE9big2NzE0KSxpPXtbci5QYWxldHRlLmJyYW5kUHJpbWFyeV06by5Db2xvci5vcGVuRmluLFtyLlBhbGV0dGUuc3RhdHVzU3VjY2Vzc106by5Db2xvci5mdW5jdGlvbmFsMSxbci5QYWxldHRlLnN0YXR1c1dhcm5pbmddOm8uQ29sb3IuZnVuY3Rpb25hbDEwLFtyLlBhbGV0dGUuc3RhdHVzQ3JpdGljYWxdOm8uQ29sb3IuZnVuY3Rpb25hbDcsW3IuUGFsZXR0ZS5zdGF0dXNBY3RpdmVdOm8uQ29sb3IuZnVuY3Rpb25hbDMsW3IuUGFsZXR0ZS5ib3JkZXJOZXV0cmFsXTpvLkNvbG9yLnNpbHZlckdyYXksW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDFdOm8uQ29sb3Iub3BlbkZpbixbci5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kMl06XCIjMDAwMDAwXCIsW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDNdOlwiIzAwMDAwMFwiLFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQ0XTpcIiMwMDAwMDBcIixbci5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kNV06XCIjMDAwMDAwXCIsW3IuUGFsZXR0ZS5saW5rRGVmYXVsdF06by5Db2xvci5mdW5jdGlvbmFsNCxbci5QYWxldHRlLmxpbmtIb3Zlcl06by5Db2xvci5mdW5jdGlvbmFsNX07dC5PcGVuRmluTGlnaHRUaGVtZT0oMCxhLmNyZWF0ZVRoZW1lKShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saSkse1tyLlBhbGV0dGUuYmFja2dyb3VuZDFdOm8uQ29sb3Iud2hpdGUsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kMl06by5Db2xvci5saWdodEdyYXkxLFtyLlBhbGV0dGUuYmFja2dyb3VuZDNdOm8uQ29sb3IubGlnaHRHcmF5Mixbci5QYWxldHRlLmJhY2tncm91bmQ0XTpvLkNvbG9yLmxpZ2h0R3JheTMsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNV06by5Db2xvci5saWdodEdyYXkzLFtyLlBhbGV0dGUuYmFja2dyb3VuZDZdOm8uQ29sb3IubGlnaHRHcmF5NSxbci5QYWxldHRlLmJyYW5kU2Vjb25kYXJ5XTpvLkNvbG9yLmxpZ2h0R3JheTQsW3IuUGFsZXR0ZS5pbnB1dEJhY2tncm91bmRdOm8uQ29sb3IubGlnaHRHcmF5Myxbci5QYWxldHRlLmlucHV0Q29sb3JdOm8uQ29sb3IuZGFya0dyYXk1LFtyLlBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcl06by5Db2xvci5kYXJrR3JheTIsW3IuUGFsZXR0ZS5pbnB1dERpc2FibGVkXTpvLkNvbG9yLm5ldXRyYWxHcmF5LFtyLlBhbGV0dGUuaW5wdXRGb2N1c2VkXTpvLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS5pbnB1dEJvcmRlcl06by5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLnRleHREZWZhdWx0XTpvLkNvbG9yLmRhcmtHcmF5NSxbci5QYWxldHRlLnRleHRIZWxwXTpvLkNvbG9yLm5ldXRyYWxHcmF5LFtyLlBhbGV0dGUudGV4dEluYWN0aXZlXTpvLkNvbG9yLm5ldXRyYWxHcmF5fSksXCJsaWdodFwiKSx0Lk9wZW5GaW5EYXJrVGhlbWU9KDAsYS5jcmVhdGVUaGVtZSkoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLHtbci5QYWxldHRlLmJhY2tncm91bmQxXTpvLkNvbG9yLmRhcmtHcmF5Nixbci5QYWxldHRlLmJhY2tncm91bmQyXTpvLkNvbG9yLmRhcmtHcmF5NSxbci5QYWxldHRlLmJhY2tncm91bmQzXTpvLkNvbG9yLmRhcmtHcmF5NCxbci5QYWxldHRlLmJhY2tncm91bmQ0XTpvLkNvbG9yLmRhcmtHcmF5Myxbci5QYWxldHRlLmJhY2tncm91bmQ1XTpvLkNvbG9yLmRhcmtHcmF5Mixbci5QYWxldHRlLmJhY2tncm91bmQ2XTpvLkNvbG9yLmRhcmtHcmF5MSxbci5QYWxldHRlLmJyYW5kU2Vjb25kYXJ5XTpvLkNvbG9yLmRhcmtHcmF5Mixbci5QYWxldHRlLmlucHV0QmFja2dyb3VuZF06by5Db2xvci5kYXJrR3JheTEsW3IuUGFsZXR0ZS5pbnB1dENvbG9yXTpvLkNvbG9yLndoaXRlLFtyLlBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcl06by5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUuaW5wdXREaXNhYmxlZF06by5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLmlucHV0Rm9jdXNlZF06by5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUuaW5wdXRCb3JkZXJdOm8uQ29sb3IubmV1dHJhbEdyYXksW3IuUGFsZXR0ZS50ZXh0RGVmYXVsdF06by5Db2xvci53aGl0ZSxbci5QYWxldHRlLnRleHRIZWxwXTpvLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS50ZXh0SW5hY3RpdmVdOm8uQ29sb3IubmV1dHJhbEdyYXl9KSxcImRhcmtcIil9LDQyMDooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5UaGVtZVByb3ZpZGVyPXZvaWQgMDtjb25zdCByPW4oNTg5Myksbz1uKDc1MTgpLGE9big3MDg4KSxpPW4oMTA2OSk7dC5UaGVtZVByb3ZpZGVyPSh7Y2hpbGRyZW46ZSx0aGVtZXM6dCxzY2hlbWU6bixjb25maWc6bCxpbmNsdWRlR2xvYmFsU3R5bGVzOmM9ITB9KT0+e2NvbnN0IHM9KDAsYS51c2VUaGVtZSkoe3RoZW1lczp0LHNjaGVtZTpuLGNvbmZpZzpsfSk7cmV0dXJuKDAsci5qc3gpKG8uVGhlbWVQcm92aWRlcixPYmplY3QuYXNzaWduKHt0aGVtZTpzfSx7Y2hpbGRyZW46KDAsci5qc3hzKShyLkZyYWdtZW50LHtjaGlsZHJlbjpbYyYmKDAsci5qc3gpKGkuR2xvYmFsU3R5bGVzLHt9KSxlXX0pfSkpfX0sOTc1ODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db250YWN0U3RhdHVzSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpLGE9cihuKDc1MTgpKSxpPW4oMTMzMyksbD17YXZhaWxhYmxlOigwLG8uanN4KShpLkNoZWNrU1ZHLHt9KSxhd2F5OigwLG8uanN4KShpLkJ1c3lTVkcse30pLFwiZG8tbm90LWRpc3R1cmJcIjooMCxvLmpzeCkoaS5Eb05vdERpc3R1cmJTVkcse30pLG9mZmxpbmU6KDAsby5qc3gpKGkuT2ZmbGluZVNWRyx7fSksYnVzeTpudWxsfTt0LkNvbnRhY3RTdGF0dXNJY29uPSh7b25saW5lU3RhdHVzOmV9KT0+ZT8oMCxvLmpzeCkoYyxPYmplY3QuYXNzaWduKHtvbmxpbmVTdGF0dXM6ZX0se2NoaWxkcmVuOmxbZV18fG51bGx9KSk6bnVsbDtjb25zdCBjPWEuZGVmYXVsdC5kaXZgXG4gIGJvcmRlcjogMS42cHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQxfTtcblxuICBiYWNrZ3JvdW5kOiAkeyh7b25saW5lU3RhdHVzOmUsdGhlbWU6dH0pPT5cImJ1c3lcIj09PWU/XCIjQzIxMzEzXCI6dC5wYWxldHRlLmJhY2tncm91bmQxfTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gIGhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5sYXJnZX07XG4gIHdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmxhcmdlfTtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDc4Ljk1JTtcbiAgcmlnaHQ6IC03LjAyJTtcbiAgdG9wOiA3Ny4xMiU7XG4gIGJvdHRvbTogLTQuMjQlO1xuYH0sMTMzMzooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5PZmZsaW5lU1ZHPXQuRG9Ob3REaXN0dXJiU1ZHPXQuQnVzeVNWRz10LkNoZWNrU1ZHPXZvaWQgMDtjb25zdCByPW4oNTg5Myk7dC5DaGVja1NWRz0oKT0+KDAsci5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSx7Y2hpbGRyZW46KDAsci5qc3gpKFwicGF0aFwiLHtkOlwiTTggMEM4LjczNDM4IDAgOS40NDAxIDAuMDk2MzU0MiAxMC4xMTcyIDAuMjg5MDYzQzEwLjc5NDMgMC40ODE3NzEgMTEuNDI5NyAwLjc1MjYwNCAxMi4wMjM0IDEuMTAxNTZDMTIuNjE3MiAxLjQ1MDUyIDEzLjE1NjMgMS44Njk3OSAxMy42NDA2IDIuMzU5MzhDMTQuMTMwMiAyLjg0Mzc1IDE0LjU0OTUgMy4zODI4MSAxNC44OTg0IDMuOTc2NTZDMTUuMjQ3NCA0LjU3MDMxIDE1LjUxODIgNS4yMDU3MyAxNS43MTA5IDUuODgyODFDMTUuOTAzNiA2LjU1OTkgMTYgNy4yNjU2MyAxNiA4QzE2IDguNzI5MTcgMTUuOTAzNiA5LjQzNDkgMTUuNzEwOSAxMC4xMTcyQzE1LjUxODIgMTAuNzk0MyAxNS4yNDc0IDExLjQyOTcgMTQuODk4NCAxMi4wMjM0QzE0LjU0OTUgMTIuNjE3MiAxNC4xMzAyIDEzLjE1ODkgMTMuNjQwNiAxMy42NDg0QzEzLjE1NjMgMTQuMTMyOCAxMi42MTcyIDE0LjU0OTUgMTIuMDIzNCAxNC44OTg0QzExLjQyOTcgMTUuMjQ3NCAxMC43OTE3IDE1LjUxODIgMTAuMTA5NCAxNS43MTA5QzkuNDMyMjkgMTUuOTAzNiA4LjcyOTE3IDE2IDggMTZDNy4yNzA4MyAxNiA2LjU2NTEgMTUuOTAzNiA1Ljg4MjgxIDE1LjcxMDlDNS4yMDU3MyAxNS41MTgyIDQuNTcwMzEgMTUuMjQ3NCAzLjk3NjU2IDE0Ljg5ODRDMy4zODI4MSAxNC41NDk1IDIuODQxMTUgMTQuMTMyOCAyLjM1MTU2IDEzLjY0ODRDMS44NjcxOSAxMy4xNTg5IDEuNDUwNTIgMTIuNjE3MiAxLjEwMTU2IDEyLjAyMzRDMC43NTI2MDQgMTEuNDI5NyAwLjQ4MTc3MSAxMC43OTQzIDAuMjg5MDYzIDEwLjExNzJDMC4wOTYzNTQyIDkuNDM0OSAwIDguNzI5MTcgMCA4QzAgNy4yNzA4MyAwLjA5NjM1NDIgNi41Njc3MSAwLjI4OTA2MyA1Ljg5MDYzQzAuNDgxNzcxIDUuMjA4MzMgMC43NTI2MDQgNC41NzAzMSAxLjEwMTU2IDMuOTc2NTZDMS40NTA1MiAzLjM4MjgxIDEuODY3MTkgMi44NDM3NSAyLjM1MTU2IDIuMzU5MzhDMi44NDExNSAxLjg2OTc5IDMuMzgyODEgMS40NTA1MiAzLjk3NjU2IDEuMTAxNTZDNC41NzAzMSAwLjc1MjYwNCA1LjIwNTczIDAuNDgxNzcxIDUuODgyODEgMC4yODkwNjNDNi41NjUxIDAuMDk2MzU0MiA3LjI3MDgzIDAgOCAwWk0xMC42MzI4IDUuNjg3NUMxMC40MjQ1IDUuNjg3NSAxMC4yNDc0IDUuNzYwNDIgMTAuMTAxNiA1LjkwNjI1TDcuMjczNDQgOC43NUw2LjI2NTYzIDcuNzVDNi4xMTk3OSA3LjYwNDE3IDUuOTQ1MzEgNy41MzEyNSA1Ljc0MjE5IDcuNTMxMjVDNS42NDMyMyA3LjUzMTI1IDUuNTQ5NDggNy41NTIwOCA1LjQ2MDk0IDcuNTkzNzVDNS4zNzI0IDcuNjM1NDIgNS4yOTE2NyA3LjY5MjcxIDUuMjE4NzUgNy43NjU2M0M1LjE1MTA0IDcuODMzMzMgNS4wOTYzNSA3LjkxMTQ2IDUuMDU0NjkgOEM1LjAxMzAyIDguMDg4NTQgNC45OTIxOSA4LjE4MjI5IDQuOTkyMTkgOC4yODEyNUM0Ljk5MjE5IDguNDg5NTggNS4wNjUxIDguNjY2NjcgNS4yMTA5NCA4LjgxMjVMNi43NDIxOSAxMC4zNDM4QzYuODg4MDIgMTAuNDg5NiA3LjA2NTEgMTAuNTYyNSA3LjI3MzQ0IDEwLjU2MjVDNy40ODE3NyAxMC41NjI1IDcuNjU4ODUgMTAuNDg5NiA3LjgwNDY5IDEwLjM0MzhMMTEuMTY0MSA2Ljk2ODc1QzExLjMwOTkgNi44MjI5MiAxMS4zODI4IDYuNjQ1ODMgMTEuMzgyOCA2LjQzNzVDMTEuMzgyOCA2LjMzODU0IDExLjM2MiA2LjI0NDc5IDExLjMyMDMgNi4xNTYyNUMxMS4yNzg2IDYuMDY3NzEgMTEuMjIxNCA1Ljk4OTU4IDExLjE0ODQgNS45MjE4OEMxMS4wODA3IDUuODQ4OTYgMTEuMDAyNiA1Ljc5MTY3IDEwLjkxNDEgNS43NUMxMC44MjU1IDUuNzA4MzMgMTAuNzMxOCA1LjY4NzUgMTAuNjMyOCA1LjY4NzVaXCIsZmlsbDpcIiMyMDc3MzVcIn0pfSkpLHQuQnVzeVNWRz0oKT0+KDAsci5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE3XCIsdmlld0JveDpcIjAgMCAxNiAxN1wiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSx7Y2hpbGRyZW46KDAsci5qc3gpKFwicGF0aFwiLHtkOlwiTTggMC43OTAyMzdDOC43MzQzOCAwLjc5MDIzNyA5LjQ0MDEgMC44ODY1OTIgMTAuMTE3MiAxLjA3OTNDMTAuNzk0MyAxLjI3MjAxIDExLjQyOTcgMS41NDI4NCAxMi4wMjM0IDEuODkxOEMxMi42MTcyIDIuMjQwNzYgMTMuMTU2MyAyLjY2MDAzIDEzLjY0MDYgMy4xNDk2MUMxNC4xMzAyIDMuNjMzOTkgMTQuNTQ5NSA0LjE3MzA1IDE0Ljg5ODQgNC43NjY4QzE1LjI0NzQgNS4zNjA1NSAxNS41MTgyIDUuOTk1OTcgMTUuNzEwOSA2LjY3MzA1QzE1LjkwMzYgNy4zNTAxMyAxNiA4LjA1NTg2IDE2IDguNzkwMjRDMTYgOS41MTk0IDE1LjkwMzYgMTAuMjI1MSAxNS43MTA5IDEwLjkwNzRDMTUuNTE4MiAxMS41ODQ1IDE1LjI0NzQgMTIuMjE5OSAxNC44OTg0IDEyLjgxMzdDMTQuNTQ5NSAxMy40MDc0IDE0LjEzMDIgMTMuOTQ5MSAxMy42NDA2IDE0LjQzODdDMTMuMTU2MyAxNC45MjMxIDEyLjYxNzIgMTUuMzM5NyAxMi4wMjM0IDE1LjY4ODdDMTEuNDI5NyAxNi4wMzc2IDEwLjc5MTcgMTYuMzA4NSAxMC4xMDk0IDE2LjUwMTJDOS40MzIyOSAxNi42OTM5IDguNzI5MTcgMTYuNzkwMiA4IDE2Ljc5MDJDNy4yNzA4MyAxNi43OTAyIDYuNTY1MSAxNi42OTM5IDUuODgyODEgMTYuNTAxMkM1LjIwNTczIDE2LjMwODUgNC41NzAzMSAxNi4wMzc2IDMuOTc2NTYgMTUuNjg4N0MzLjM4MjgxIDE1LjMzOTcgMi44NDExNSAxNC45MjMxIDIuMzUxNTYgMTQuNDM4N0MxLjg2NzE5IDEzLjk0OTEgMS40NTA1MiAxMy40MDc0IDEuMTAxNTYgMTIuODEzN0MwLjc1MjYwNCAxMi4yMTk5IDAuNDgxNzcxIDExLjU4NDUgMC4yODkwNjMgMTAuOTA3NEMwLjA5NjM1NDIgMTAuMjI1MSAwIDkuNTE5NCAwIDguNzkwMjRDMCA4LjA2MTA3IDAuMDk2MzU0MiA3LjM1Nzk1IDAuMjg5MDYzIDYuNjgwODZDMC40ODE3NzEgNS45OTg1NyAwLjc1MjYwNCA1LjM2MDU1IDEuMTAxNTYgNC43NjY4QzEuNDUwNTIgNC4xNzMwNSAxLjg2NzE5IDMuNjMzOTkgMi4zNTE1NiAzLjE0OTYxQzIuODQxMTUgMi42NjAwMyAzLjM4MjgxIDIuMjQwNzYgMy45NzY1NiAxLjg5MThDNC41NzAzMSAxLjU0Mjg0IDUuMjA1NzMgMS4yNzIwMSA1Ljg4MjgxIDEuMDc5M0M2LjU2NTEgMC44ODY1OTIgNy4yNzA4MyAwLjc5MDIzNyA4IDAuNzkwMjM3Wk03LjMyMDMxIDQuMDQ4MDVDNy4yMTA5NCA0LjA0ODA1IDcuMTA2NzcgNC4wNzE0OSA3LjAwNzgxIDQuMTE4MzZDNi45MTQwNiA0LjE2MDAzIDYuODI4MTMgNC4yMTk5MiA2Ljc1IDQuMjk4MDVDNi42NzcwOCA0LjM3MDk3IDYuNjE3MTkgNC40NTY5IDYuNTcwMzEgNC41NTU4NkM2LjUyODY1IDQuNjQ5NjEgNi41MDc4MSA0Ljc1MTE3IDYuNTA3ODEgNC44NjA1NVY5LjE5NjQ5QzYuNTA3ODEgOS4zMDU4NiA2LjUyODY1IDkuNDEyNjMgNi41NzAzMSA5LjUxNjhDNi42MTE5OCA5LjYyMDk3IDYuNjcxODggOS43MTIxMSA2Ljc1IDkuNzkwMjRMOS4xODc1IDEyLjIxMjFDOS4zNDg5NiAxMi4zNzM2IDkuNTQxNjcgMTIuNDU0MyA5Ljc2NTYzIDEyLjQ1NDNDOS44NzUgMTIuNDU0MyA5Ljk3OTE3IDEyLjQzMzUgMTAuMDc4MSAxMi4zOTE4QzEwLjE3NzEgMTIuMzQ0OSAxMC4yNjMgMTIuMjg1IDEwLjMzNTkgMTIuMjEyMUMxMC40MDg5IDEyLjEzNCAxMC40NjYxIDEyLjA0NTQgMTAuNTA3OCAxMS45NDY1QzEwLjU1NDcgMTEuODQ3NSAxMC41NzgxIDExLjc0MzQgMTAuNTc4MSAxMS42MzRDMTAuNTc4MSAxMS41Mjk4IDEwLjU1NDcgMTEuNDI4MyAxMC41MDc4IDExLjMyOTNDMTAuNDY2MSAxMS4yMjUxIDEwLjQwODkgMTEuMTM2NiAxMC4zMzU5IDExLjA2MzdMOC4xMzI4MSA4Ljg3NjE4VjQuODYwNTVDOC4xMzI4MSA0Ljc1MTE3IDguMTA5MzggNC42NDcwMSA4LjA2MjUgNC41NDgwNUM4LjAyMDgzIDQuNDQ5MDkgNy45NjM1NCA0LjM2MzE1IDcuODkwNjMgNC4yOTAyNEM3LjgxNzcxIDQuMjE3MzIgNy43MzE3NyA0LjE2MDAzIDcuNjMyODEgNC4xMTgzNkM3LjUzMzg1IDQuMDcxNDkgNy40Mjk2OSA0LjA0ODA1IDcuMzIwMzEgNC4wNDgwNVpcIixmaWxsOlwiI0ZFOUY0RFwifSl9KSksdC5Eb05vdERpc3R1cmJTVkc9KCk9PigwLHIuanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxN1wiLHZpZXdCb3g6XCIwIDAgMTYgMTdcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0se2NoaWxkcmVuOigwLHIuanN4KShcInBhdGhcIix7ZDpcIk04IDAuNTkwMjU2QzguNzM0MzggMC41OTAyNTYgOS40NDAxIDAuNjg2NjEgMTAuMTE3MiAwLjg3OTMxOEMxMC43OTQzIDEuMDcyMDMgMTEuNDI5NyAxLjM0Mjg2IDEyLjAyMzQgMS42OTE4MkMxMi42MTcyIDIuMDQwNzggMTMuMTU2MiAyLjQ2MDA1IDEzLjY0MDYgMi45NDk2M0MxNC4xMzAyIDMuNDM0MDEgMTQuNTQ5NSAzLjk3MzA3IDE0Ljg5ODQgNC41NjY4MkMxNS4yNDc0IDUuMTYwNTcgMTUuNTE4MiA1Ljc5NTk4IDE1LjcxMDkgNi40NzMwN0MxNS45MDM2IDcuMTUwMTUgMTYgNy44NTU4OCAxNiA4LjU5MDI2QzE2IDkuMzE5NDIgMTUuOTAzNiAxMC4wMjUyIDE1LjcxMDkgMTAuNzA3NEMxNS41MTgyIDExLjM4NDUgMTUuMjQ3NCAxMi4wMTk5IDE0Ljg5ODQgMTIuNjEzN0MxNC41NDk1IDEzLjIwNzQgMTQuMTMwMiAxMy43NDkxIDEzLjY0MDYgMTQuMjM4N0MxMy4xNTYyIDE0LjcyMzEgMTIuNjE3MiAxNS4xMzk3IDEyLjAyMzQgMTUuNDg4N0MxMS40Mjk3IDE1LjgzNzcgMTAuNzkxNyAxNi4xMDg1IDEwLjEwOTQgMTYuMzAxMkM5LjQzMjI5IDE2LjQ5MzkgOC43MjkxNyAxNi41OTAzIDggMTYuNTkwM0M3LjI3MDgzIDE2LjU5MDMgNi41NjUxIDE2LjQ5MzkgNS44ODI4MSAxNi4zMDEyQzUuMjA1NzMgMTYuMTA4NSA0LjU3MDMxIDE1LjgzNzcgMy45NzY1NiAxNS40ODg3QzMuMzgyODEgMTUuMTM5NyAyLjg0MTE1IDE0LjcyMzEgMi4zNTE1NiAxNC4yMzg3QzEuODY3MTkgMTMuNzQ5MSAxLjQ1MDUyIDEzLjIwNzQgMS4xMDE1NiAxMi42MTM3QzAuNzUyNjA0IDEyLjAxOTkgMC40ODE3NzEgMTEuMzg0NSAwLjI4OTA2MiAxMC43MDc0QzAuMDk2MzU0MiAxMC4wMjUyIDAgOS4zMTk0MiAwIDguNTkwMjZDMCA3Ljg2MTA5IDAuMDk2MzU0MiA3LjE1Nzk2IDAuMjg5MDYyIDYuNDgwODhDMC40ODE3NzEgNS43OTg1OSAwLjc1MjYwNCA1LjE2MDU3IDEuMTAxNTYgNC41NjY4MkMxLjQ1MDUyIDMuOTczMDcgMS44NjcxOSAzLjQzNDAxIDIuMzUxNTYgMi45NDk2M0MyLjg0MTE1IDIuNDYwMDUgMy4zODI4MSAyLjA0MDc4IDMuOTc2NTYgMS42OTE4MkM0LjU3MDMxIDEuMzQyODYgNS4yMDU3MyAxLjA3MjAzIDUuODgyODEgMC44NzkzMThDNi41NjUxIDAuNjg2NjEgNy4yNzA4MyAwLjU5MDI1NiA4IDAuNTkwMjU2Wk01LjQ3NjU2IDcuNzQ2NTFDNS4zNjcxOSA3Ljc0NjUxIDUuMjYwNDIgNy43Njk5NCA1LjE1NjI1IDcuODE2ODJDNS4wNTcyOSA3Ljg2MzY5IDQuOTY4NzUgNy45MjYxOSA0Ljg5MDYyIDguMDA0MzJDNC44MTI1IDguMDgyNDQgNC43NSA4LjE3MzU5IDQuNzAzMTIgOC4yNzc3NkM0LjY1NjI1IDguMzc2NzEgNC42MzI4MSA4LjQ4MDg4IDQuNjMyODEgOC41OTAyNkM0LjYzMjgxIDguNjk5NjMgNC42NTYyNSA4LjgwNjQgNC43MDMxMiA4LjkxMDU3QzQuNzUgOS4wMDk1MyA0LjgxMjUgOS4wOTgwNyA0Ljg5MDYyIDkuMTc2MTlDNC45Njg3NSA5LjI1NDMyIDUuMDU3MjkgOS4zMTY4MiA1LjE1NjI1IDkuMzYzNjlDNS4yNjA0MiA5LjQxMDU3IDUuMzY3MTkgOS40MzQwMSA1LjQ3NjU2IDkuNDM0MDFIMTAuNTIzNEMxMC42MzI4IDkuNDM0MDEgMTAuNzM3IDkuNDEwNTcgMTAuODM1OSA5LjM2MzY5QzEwLjk0MDEgOS4zMTY4MiAxMS4wMzEyIDkuMjU0MzIgMTEuMTA5NCA5LjE3NjE5QzExLjE4NzUgOS4wOTgwNyAxMS4yNSA5LjAwOTUzIDExLjI5NjkgOC45MTA1N0MxMS4zNDM4IDguODA2NCAxMS4zNjcyIDguNjk5NjMgMTEuMzY3MiA4LjU5MDI2QzExLjM2NzIgOC40ODA4OCAxMS4zNDM4IDguMzc2NzEgMTEuMjk2OSA4LjI3Nzc2QzExLjI1IDguMTczNTkgMTEuMTg3NSA4LjA4MjQ0IDExLjEwOTQgOC4wMDQzMkMxMS4wMzEyIDcuOTI2MTkgMTAuOTQwMSA3Ljg2MzY5IDEwLjgzNTkgNy44MTY4MkMxMC43MzcgNy43Njk5NCAxMC42MzI4IDcuNzQ2NTEgMTAuNTIzNCA3Ljc0NjUxSDUuNDc2NTZaXCIsZmlsbDpcIiNDMjEzMTNcIn0pfSkpLHQuT2ZmbGluZVNWRz0oKT0+KDAsci5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE3XCIsdmlld0JveDpcIjAgMCAxNiAxN1wiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSx7Y2hpbGRyZW46KDAsci5qc3gpKFwicGF0aFwiLHtkOlwiTTggMC45OTAyNTJDOC43MzQzOCAwLjk5MDI1MiA5LjQ0MDEgMS4wODY2MSAxMC4xMTcyIDEuMjc5MzFDMTAuNzk0MyAxLjQ3MjAyIDExLjQyOTcgMS43NDI4NiAxMi4wMjM0IDIuMDkxODFDMTIuNjE3MiAyLjQ0MDc3IDEzLjE1NjIgMi44NjAwNCAxMy42NDA2IDMuMzQ5NjNDMTQuMTMwMiAzLjgzNCAxNC41NDk1IDQuMzczMDYgMTQuODk4NCA0Ljk2NjgxQzE1LjI0NzQgNS41NjA1NiAxNS41MTgyIDYuMTk1OTggMTUuNzEwOSA2Ljg3MzA2QzE1LjkwMzYgNy41NTAxNSAxNiA4LjI1NTg4IDE2IDguOTkwMjVDMTYgOS43MTk0MiAxNS45MDM2IDEwLjQyNTEgMTUuNzEwOSAxMS4xMDc0QzE1LjUxODIgMTEuNzg0NSAxNS4yNDc0IDEyLjQxOTkgMTQuODk4NCAxMy4wMTM3QzE0LjU0OTUgMTMuNjA3NCAxNC4xMzAyIDE0LjE0OTEgMTMuNjQwNiAxNC42Mzg3QzEzLjE1NjIgMTUuMTIzMSAxMi42MTcyIDE1LjUzOTcgMTIuMDIzNCAxNS44ODg3QzExLjQyOTcgMTYuMjM3NiAxMC43OTE3IDE2LjUwODUgMTAuMTA5NCAxNi43MDEyQzkuNDMyMjkgMTYuODkzOSA4LjcyOTE3IDE2Ljk5MDMgOCAxNi45OTAzQzcuMjcwODMgMTYuOTkwMyA2LjU2NTEgMTYuODkzOSA1Ljg4MjgxIDE2LjcwMTJDNS4yMDU3MyAxNi41MDg1IDQuNTcwMzEgMTYuMjM3NiAzLjk3NjU2IDE1Ljg4ODdDMy4zODI4MSAxNS41Mzk3IDIuODQxMTUgMTUuMTIzMSAyLjM1MTU2IDE0LjYzODdDMS44NjcxOSAxNC4xNDkxIDEuNDUwNTIgMTMuNjA3NCAxLjEwMTU2IDEzLjAxMzdDMC43NTI2MDQgMTIuNDE5OSAwLjQ4MTc3MSAxMS43ODQ1IDAuMjg5MDYyIDExLjEwNzRDMC4wOTYzNTQyIDEwLjQyNTEgMCA5LjcxOTQyIDAgOC45OTAyNUMwIDguMjYxMDkgMC4wOTYzNTQyIDcuNTU3OTYgMC4yODkwNjIgNi44ODA4OEMwLjQ4MTc3MSA2LjE5ODU5IDAuNzUyNjA0IDUuNTYwNTYgMS4xMDE1NiA0Ljk2NjgxQzEuNDUwNTIgNC4zNzMwNiAxLjg2NzE5IDMuODM0IDIuMzUxNTYgMy4zNDk2M0MyLjg0MTE1IDIuODYwMDQgMy4zODI4MSAyLjQ0MDc3IDMuOTc2NTYgMi4wOTE4MUM0LjU3MDMxIDEuNzQyODYgNS4yMDU3MyAxLjQ3MjAyIDUuODgyODEgMS4yNzkzMUM2LjU2NTEgMS4wODY2MSA3LjI3MDgzIDAuOTkwMjUyIDggMC45OTAyNTJaTTggMi42Nzc3NUM3LjQyMTg4IDIuNjc3NzUgNi44NjQ1OCAyLjc1MzI3IDYuMzI4MTIgMi45MDQzMUM1Ljc5MTY3IDMuMDU1MzYgNS4yODkwNiAzLjI2ODkgNC44MjAzMSAzLjU0NDk0QzQuMzUxNTYgMy44MjA5OCAzLjkyNDQ4IDQuMTUxNzEgMy41MzkwNiA0LjUzNzEzQzMuMTU4ODUgNC45MTczNCAyLjgzMDczIDUuMzQxODEgMi41NTQ2OSA1LjgxMDU2QzIuMjc4NjUgNi4yNzkzMSAyLjA2NTEgNi43ODE5MiAxLjkxNDA2IDcuMzE4MzhDMS43NjMwMiA3Ljg1NDg0IDEuNjg3NSA4LjQxMjEzIDEuNjg3NSA4Ljk5MDI1QzEuNjg3NSA5LjU2ODM4IDEuNzYzMDIgMTAuMTI1NyAxLjkxNDA2IDEwLjY2MjFDMi4wNjUxIDExLjE5ODYgMi4yNzg2NSAxMS43MDEyIDIuNTU0NjkgMTIuMTY5OUMyLjgzMDczIDEyLjYzODcgMy4xNTg4NSAxMy4wNjU4IDMuNTM5MDYgMTMuNDUxMkMzLjkyNDQ4IDEzLjgzMTQgNC4zNTE1NiAxNC4xNTk1IDQuODIwMzEgMTQuNDM1NkM1LjI4OTA2IDE0LjcxMTYgNS43OTE2NyAxNC45MjUxIDYuMzI4MTIgMTUuMDc2MkM2Ljg2NDU4IDE1LjIyNzIgNy40MjE4OCAxNS4zMDI4IDggMTUuMzAyOEM4LjU3ODEyIDE1LjMwMjggOS4xMzU0MiAxNS4yMjcyIDkuNjcxODggMTUuMDc2MkMxMC4yMDgzIDE0LjkyNTEgMTAuNzEwOSAxNC43MTE2IDExLjE3OTcgMTQuNDM1NkMxMS42NDg0IDE0LjE1OTUgMTIuMDcyOSAxMy44MzE0IDEyLjQ1MzEgMTMuNDUxMkMxMi44Mzg1IDEzLjA2NTggMTMuMTY5MyAxMi42Mzg3IDEzLjQ0NTMgMTIuMTY5OUMxMy43MjE0IDExLjcwMTIgMTMuOTM0OSAxMS4xOTg2IDE0LjA4NTkgMTAuNjYyMUMxNC4yMzcgMTAuMTI1NyAxNC4zMTI1IDkuNTY4MzggMTQuMzEyNSA4Ljk5MDI1QzE0LjMxMjUgOC40MTIxMyAxNC4yMzcgNy44NTQ4NCAxNC4wODU5IDcuMzE4MzhDMTMuOTM0OSA2Ljc4MTkyIDEzLjcyMTQgNi4yNzkzMSAxMy40NDUzIDUuODEwNTZDMTMuMTY5MyA1LjM0MTgxIDEyLjgzODUgNC45MTczNCAxMi40NTMxIDQuNTM3MTNDMTIuMDcyOSA0LjE1MTcxIDExLjY0ODQgMy44MjA5OCAxMS4xNzk3IDMuNTQ0OTRDMTAuNzEwOSAzLjI2ODkgMTAuMjA4MyAzLjA1NTM2IDkuNjcxODggMi45MDQzMUM5LjEzNTQyIDIuNzUzMjcgOC41NzgxMiAyLjY3Nzc1IDggMi42Nzc3NVpcIixmaWxsOlwiIzk3OTc5N1wifSl9KSl9LDM0Mjk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9KSxhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZyKHQsZSxuKTtyZXR1cm4gbyh0LGUpLHR9LGk9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbD10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNvbnRhY3RDYXJkPXZvaWQgMDtjb25zdCBjPW4oNTg5Mykscz1hKG4oNjY4OSkpLHU9bChuKDc1MTgpKSxkPW4oNTM3NyksZj1uKDc0NDQpLHA9big5NzU4KSxoPW4oODgzMik7dC5Db250YWN0Q2FyZD1lPT57dmFye25hbWU6dCx0aXRsZTpuLHBob3RvVXJsOnIsdXNlSW5pdGlhbHM6bz0hMSxkZXRhaWxzOmEsb25saW5lU3RhdHVzOmx9PWUsdT1pKGUsW1wibmFtZVwiLFwidGl0bGVcIixcInBob3RvVXJsXCIsXCJ1c2VJbml0aWFsc1wiLFwiZGV0YWlsc1wiLFwib25saW5lU3RhdHVzXCJdKTtjb25zdCBkPXJ8fG8sUz0oMCxzLnVzZU1lbW8pKCgoKT0+KDAsZi5nZXRJbml0aWFscykodCkpLFt0XSksXz0oMCxzLnVzZU1lbW8pKCgoKT0+KDAsaC5nZW5lcmF0ZUNvbG9yRnJvbVN0cmluZykodCkpLFt0XSk7cmV0dXJuKDAsYy5qc3hzKShDLE9iamVjdC5hc3NpZ24oe30sdSx7Y2hpbGRyZW46WygwLGMuanN4cykodix7Y2hpbGRyZW46W2QmJigwLGMuanN4cykoZyxPYmplY3QuYXNzaWduKHtpY29uQ29sb3I6X30se2NoaWxkcmVuOltyPygwLGMuanN4KSh3LHthbHQ6bixzcmM6cn0pOigwLGMuanN4KShtLHtjaGlsZHJlbjpTfSksKDAsYy5qc3gpKHAuQ29udGFjdFN0YXR1c0ljb24se29ubGluZVN0YXR1czpsfSldfSkpLCgwLGMuanN4cykoeSx7Y2hpbGRyZW46WygwLGMuanN4cykoYix7Y2hpbGRyZW46W1wiIFwiLHQsXCIgXCJdfSksbiYmKDAsYy5qc3hzKSh4LHtjaGlsZHJlbjpbXCIgXCIsbixcIiBcIl19KV19KV19KSwoMCxjLmpzeCkoTCx7fSksKDAsYy5qc3gpKE8se2NoaWxkcmVuOihudWxsPT1hP3ZvaWQgMDphLmxlbmd0aCk+MD9hLm1hcCgoKGUsbik9PigwLGMuanN4cykocy5kZWZhdWx0LkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsYy5qc3gpKE0se2RlZmluaXRpb25zOmV9KSxuPGEubGVuZ3RoLTEmJigwLGMuanN4KShMLHtwYWRkaW5nOiEwfSldfSxgJHt0fS1kZXRhaWxzLSR7bn1gKSkpOigwLGMuanN4KShcInBcIix7Y2hpbGRyZW46XCJObyBpbmZvcm1hdGlvbiBhdmFpbGFibGUuXCJ9KX0pXX0pKX07Y29uc3QgQz11LmRlZmF1bHQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBoZWlnaHQ6IDEwMCU7XG5gLHY9dS5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZy1ib3R0b206ICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9O1xuYCxnPXUuZGVmYXVsdC5kaXZgXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7ZT0+ZS5pY29uQ29sb3J9O1xuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gIGhlaWdodDogNjBweDtcbiAgd2lkdGg6IDYwcHg7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYCxtPXUuZGVmYXVsdC5zcGFuYFxuICBmb250LXNpemU6IDI0cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5gLHc9dS5kZWZhdWx0LmltZ2BcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG5gLHk9dS5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBtaW4td2lkdGg6IDA7XG4gIG1hcmdpbi1sZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuYCxiPXUuZGVmYXVsdC5zcGFuYFxuICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUubGFyZ2V9O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5sYXJnZX07XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRXZWlnaHQuYm9sZH07XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuYCx4PXUuZGVmYXVsdC5zcGFuYFxuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHRIZWxwfTtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmctYm90dG9tOiAycHg7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuYCxPPXUuZGVmYXVsdC5kaXZgXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgZmxleDogMTtcbiAgbWFyZ2luLXRvcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5sYXJnZX07XG4gIG1hcmdpbi1ib3R0b206ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIG92ZXJmbG93LXk6IGF1dG87XG5gLEw9dS5kZWZhdWx0LmRpdmBcbiAgYm9yZGVyLWJvdHRvbTogc29saWQgMXB4ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIG1hcmdpbi1ib3R0b206ICR7KHt0aGVtZTplLHBhZGRpbmc6dH0pPT50JiZlLnB4LmJhc2V9O1xuYCxNPSgwLHUuZGVmYXVsdCkoZC5EZWZpbml0aW9uTGlzdClgXG4gIGR0IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICB9XG5cbiAgZGQge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgfVxuYH0sMzE4ODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzQyOSksdCl9LDc0NDQ6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldEluaXRpYWxzPXZvaWQgMCx0LmdldEluaXRpYWxzPWU9Pntjb25zdCB0PWUudHJpbSgpLG49dC5sYXN0SW5kZXhPZihcIiBcIik7cmV0dXJuIG4+LTE/W3QuY2hhckF0KDApLHQuY2hhckF0KG4rMSldLmpvaW4oXCJcIik6dC5zbGljZSgwLDIpfX0sMTk5NjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lkg2PXQuSDU9dC5IND10LkgzPXQuSDI9dC5IMT10LkhlYWRpbmc9dC5kZWZhdWx0U2l6ZT12b2lkIDA7Y29uc3QgYT1uKDU4OTMpLGk9byhuKDc1MTgpKSxsPW4oMzQ3MSksYz1uKDc3NjkpO3QuZGVmYXVsdFNpemU9e2gxOmwuU2l6ZS54eHhsYXJnZSxoMjpsLlNpemUueHhsYXJnZSxoMzpsLlNpemUueGxhcmdlLGg0OmwuU2l6ZS5sYXJnZSxoNTpsLlNpemUuYmFzZSxoNjpsLlNpemUuc21hbGx9LHQuSGVhZGluZz1lPT57dmFye2xldmVsOm49MSxjbGFzc05hbWU6b309ZSxpPXIoZSxbXCJsZXZlbFwiLFwiY2xhc3NOYW1lXCJdKTtjb25zdCBsPWBoJHtufWA7cmV0dXJuKDAsYS5qc3gpKHMsT2JqZWN0LmFzc2lnbih7Y2xhc3NOYW1lOm8sYXM6bCxzaXplOnQuZGVmYXVsdFNpemVbbF0sd2VpZ2h0OlwiYm9sZFwifSxpKSl9O2NvbnN0IHM9KDAsaS5kZWZhdWx0KShjLlRleHQpYFxuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5saW5lSGVpZ2h0LmhlYWRpbmd9O1xuYDt0LkgxPSgwLGkuZGVmYXVsdCkodC5IZWFkaW5nKS5hdHRycygoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtsZXZlbDoxfSkpKWBgLHQuSDI9KDAsaS5kZWZhdWx0KSh0LkhlYWRpbmcpLmF0dHJzKChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2xldmVsOjJ9KSkpYGAsdC5IMz0oMCxpLmRlZmF1bHQpKHQuSGVhZGluZykuYXR0cnMoKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bGV2ZWw6M30pKSlgYCx0Lkg0PSgwLGkuZGVmYXVsdCkodC5IZWFkaW5nKS5hdHRycygoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtsZXZlbDo0fSkpKWBgLHQuSDU9KDAsaS5kZWZhdWx0KSh0LkhlYWRpbmcpLmF0dHJzKChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2xldmVsOjV9KSkpYGAsdC5INj0oMCxpLmRlZmF1bHQpKHQuSGVhZGluZykuYXR0cnMoKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bGV2ZWw6Nn0pKSlgYH0sNzA2MzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMTk5NiksdCl9LDc3Njk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDU0MzEpLHQpfSw1NDMxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRleHQ9dm9pZCAwO2NvbnN0IG89cihuKDc1MTgpKTt0LlRleHQ9by5kZWZhdWx0LnNwYW5gXG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICBmb250LXNpemU6ICR7KHt0aGVtZTplLHNpemU6dD1cImJhc2VcIn0pPT5lLmZvbnRTaXplW3RdfTtcbiAgZm9udC13ZWlnaHQ6ICR7KHt0aGVtZTplLHdlaWdodDp0PVwibm9ybWFsXCJ9KT0+ZS5mb250V2VpZ2h0W3RdfTtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUubGluZUhlaWdodC50ZXh0fTtcbmAsdC5UZXh0LmRpc3BsYXlOYW1lPVwiVGV4dFwifSwzMTkwOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnVzZUNvbG9yU2NoZW1lPXQuQ29sb3JTY2hlbWU9dm9pZCAwO2NvbnN0IHI9big2Njg5KTt0LkNvbG9yU2NoZW1lPXtkYXJrOlwiZGFya1wiLGxpZ2h0OlwibGlnaHRcIixzeXN0ZW06XCJzeXN0ZW1cIn07Y29uc3Qgbz1cIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaylcIjt0LnVzZUNvbG9yU2NoZW1lPSh7cmVxdWVzdGVkU2NoZW1lOmUsZmFsbGJhY2tTY2hlbWU6bj10LkNvbG9yU2NoZW1lLmxpZ2h0fSk9Pntjb25zdFthLGldPSgwLHIudXNlU3RhdGUpKG4pLGw9ZT0+aShlLm1hdGNoZXM/XCJkYXJrXCI6XCJsaWdodFwiKTtyZXR1cm4oMCxyLnVzZUVmZmVjdCkoKCgpPT57aWYoXCJsaWdodFwiPT09ZXx8XCJkYXJrXCI9PT1lKXJldHVybiB2b2lkIGkoZSk7Y29uc3QgdD13aW5kb3cubWF0Y2hNZWRpYShvKTtyZXR1cm4gaSh0Lm1hdGNoZXM/XCJkYXJrXCI6XCJsaWdodFwiKSx0LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIixsKSwoKT0+dC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsbCl9KSxbZSxhLG9dKSxhfX0sMzQ3OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnVzZURyb3Bkb3duS2V5Ym9hcmROYXZpZ2F0aW9uPXZvaWQgMDtjb25zdCByPW4oNjY4OSk7dC51c2VEcm9wZG93bktleWJvYXJkTmF2aWdhdGlvbj0oZSx0LG4sbyxhKT0+e2NvbnN0W2ksbF09KDAsci51c2VTdGF0ZSkoMCksW2Msc109KDAsci51c2VTdGF0ZSkoXCJcIik7bGV0IHU7aWYoKDAsci51c2VFZmZlY3QpKCgoKT0+e2lmKHQmJiFuKXtjb25zdCBuPWUuZmxhdCgpLmZpbmRJbmRleCgoZT0+ZS52YWx1ZT09PXQudmFsdWUpKTtuPj0wJiZsKG4pfX0pLFtlLHQsbl0pLCgwLHIudXNlRWZmZWN0KSgoKCk9PntufHxzKFwiXCIpfSksW25dKSwoMCxyLnVzZUVmZmVjdCkoKCgpPT57aWYoYyl7Y29uc3QgdD1lLmZsYXQoKS5maW5kSW5kZXgoKGU9PmUudGl0bGUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGMudG9Mb3dlckNhc2UoKSkpKTt0Pj0wJiZsKHQpfX0pLFtlLGNdKSxlWzBdLmxlbmd0aD4wKXtjb25zdFt0LG5dPVtNYXRoLmZsb29yKGkvZVswXS5sZW5ndGgpLGklZVswXS5sZW5ndGhdO3U9ZVt0XVtuXX1yZXR1cm4oMCxyLnVzZUVmZmVjdCkoKCgpPT57Y29uc3QgZT1zZXRUaW1lb3V0KCgoKT0+e3MoXCJcIil9KSw1MDApO3JldHVybigpPT5jbGVhclRpbWVvdXQoZSl9KSxbY10pLHtmb2N1c2VkT3B0aW9uOnUsaGFuZGxlS2V5RG93bjp0PT57c3dpdGNoKHQuY29kZSl7Y2FzZVwiQXJyb3dVcFwiOnQucHJldmVudERlZmF1bHQoKSxpPjAmJmwoaS0xKTticmVhaztjYXNlXCJBcnJvd0Rvd25cIjp0LnByZXZlbnREZWZhdWx0KCksaTxlLmZsYXQoKS5sZW5ndGgtMSYmbChpKzEpO2JyZWFrO2Nhc2VcIkVudGVyXCI6Y2FzZVwiU3BhY2VcIjp0LnByZXZlbnREZWZhdWx0KCksbj8oKG51bGw9PXU/dm9pZCAwOnUub3ZlcnJpZGVPbkNsaWNrKT91Lm92ZXJyaWRlT25DbGljaygpOmEobnVsbCE9dT91OmVbMF1bMF0pLG8oKSk6bygpO2JyZWFrO2Nhc2VcIkVzY2FwZVwiOnQucHJldmVudERlZmF1bHQoKSxvKCExKTticmVhaztkZWZhdWx0Oi9eW2EtejAtOV0kL2kudGVzdCh0LmtleSkmJnMoKGU9PmUrdC5rZXkpKX19fX19LDQ0ODE6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudXNlTGF5b3V0TWVkaWFRdWVyeT10LnVzZU1lZGlhUXVlcnk9dm9pZCAwO2NvbnN0IHI9big2Njg5KSxvPWU9PnQ9Pntjb25zdFtuLG9dPSgwLHIudXNlU3RhdGUpKCExKTtyZXR1cm4gZSgoKCk9Pntjb25zdCBlPXdpbmRvdy5tYXRjaE1lZGlhKHQpO2lmKGUpe2UubWF0Y2hlcyE9PW4mJm8oZS5tYXRjaGVzKTtjb25zdCB0PSgpPT5vKGUubWF0Y2hlcykscj0oKT0+ZS5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsdCk7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLHQpLHJ9fSksW24sdF0pLG59O3QudXNlTWVkaWFRdWVyeT1vKHIudXNlRWZmZWN0KSx0LnVzZUxheW91dE1lZGlhUXVlcnk9byhyLnVzZUxheW91dEVmZmVjdCl9LDI3NzY6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudXNlUHJldmlvdXM9dm9pZCAwO2NvbnN0IHI9big2Njg5KTt0LnVzZVByZXZpb3VzPWU9Pntjb25zdCB0PSgwLHIudXNlUmVmKSgpO3JldHVybigwLHIudXNlRWZmZWN0KSgoKCk9Pnt0LmN1cnJlbnQ9ZX0pLFtlXSksdC5jdXJyZW50fX0sNzA4ODooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC51c2VUaGVtZT12b2lkIDA7Y29uc3Qgcj1uKDY2ODkpLG89big0MjY2KSxhPW4oMzE5MCksaT1uKDk1MDcpLGw9e1thLkNvbG9yU2NoZW1lLmRhcmtdOm8uT3BlbkZpbkRhcmtUaGVtZSxbYS5Db2xvclNjaGVtZS5saWdodF06by5PcGVuRmluTGlnaHRUaGVtZX07dC51c2VUaGVtZT0oe3RoZW1lczplLHNjaGVtZTp0LGNvbmZpZzpufSk9Pntjb25zdCBvPSgwLGEudXNlQ29sb3JTY2hlbWUpKHtyZXF1ZXN0ZWRTY2hlbWU6dH0pLGM9KDAsci51c2VNZW1vKSgoKCk9PnZvaWQgMD09PWU/bFtvXTooMCxpLmNyZWF0ZVRoZW1lKShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbFtvXS5wYWxldHRlKSxlW29dLnBhbGV0dGUpLG8pKSxbZSxvXSk7cmV0dXJuIG4/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGMpLHtfY29uZmlnOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxjLl9jb25maWcpLG4pfSk6Y319LDM0MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNDEzMCksdCksbyhuKDc0MDEpLHQpLG8obig0OTI1KSx0KSxvKG4oMjYwOSksdCksbyhuKDMxMzYpLHQpLG8obig5NzM0KSx0KSxvKG4oNjAyNiksdCksbyhuKDk2MzQpLHQpLG8obigxNDQpLHQpLG8obig5MjM5KSx0KSxvKG4oODg3OCksdCksbyhuKDg1MTApLHQpLG8obig4OTUxKSx0KSxvKG4oMTk3OCksdCksbyhuKDgwNTEpLHQpLG8obig0MTY5KSx0KSxvKG4oMzY0MSksdCksbyhuKDUyMTUpLHQpLG8obig5NjU0KSx0KSxvKG4oMzExOSksdCksbyhuKDEzMzUpLHQpLG8obig1Mzc3KSx0KSxvKG4oMTA2OSksdCksbyhuKDk1MDcpLHQpLG8obigzMTg4KSx0KSxvKG4oNzA2MyksdCksbyhuKDc3NjkpLHQpLG8obigzMTkwKSx0KSxvKG4oNDQ4MSksdCksbyhuKDI3NzYpLHQpLG8obigzNDcpLHQpLG8obig0OTkxKSx0KSxvKG4oODgzMiksdCl9LDg4MzI6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdlbmVyYXRlQ29sb3JGcm9tU3RyaW5nPXZvaWQgMCx0LmdlbmVyYXRlQ29sb3JGcm9tU3RyaW5nPWZ1bmN0aW9uKGU9XCJcIix0PTcwLG49NTApe2xldCByPTA7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspcj1lLmNoYXJDb2RlQXQodCkrKChyPDw1KS1yKSxyJj1yO3JldHVybmBoc2woJHtyJTM2MH0sICR7dH0lLCAke259JSlgfX0sNjYwNjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZ2VuZXJhdGVSYW5kb21JbnRlZ2VyPXQuY2xhbXA9dm9pZCAwLHQuY2xhbXA9KGUsdCxuKT0+dCYmbj9NYXRoLm1pbihNYXRoLm1heChlLHQpLG4pOm4mJiF0P01hdGgubWluKGUsbik6dCYmIW4/TWF0aC5tYXgoZSx0KTplLHQuZ2VuZXJhdGVSYW5kb21JbnRlZ2VyPSgpPT5NYXRoLmZsb29yKDFlMypNYXRoLnJhbmRvbSgpKX0sNDk5MTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQud2hlbkZpbj12b2lkIDAsdC53aGVuRmluPWZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1cInVuZGVmaW5lZFwiIT10eXBlb2YgZmluP2U6dDtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBuP24oKTpufX0sNjU1OihlLHQsbik9PntuLnIodCksbi5kKHQse19fYXNzaWduOigpPT5hLF9fYXN5bmNEZWxlZ2F0b3I6KCk9Pk0sX19hc3luY0dlbmVyYXRvcjooKT0+TCxfX2FzeW5jVmFsdWVzOigpPT5TLF9fYXdhaXQ6KCk9Pk8sX19hd2FpdGVyOigpPT5oLF9fY2xhc3NQcml2YXRlRmllbGRHZXQ6KCk9PmssX19jbGFzc1ByaXZhdGVGaWVsZEluOigpPT5WLF9fY2xhc3NQcml2YXRlRmllbGRTZXQ6KCk9PkgsX19jcmVhdGVCaW5kaW5nOigpPT52LF9fZGVjb3JhdGU6KCk9PmwsX19lc0RlY29yYXRlOigpPT5zLF9fZXhwb3J0U3RhcjooKT0+ZyxfX2V4dGVuZHM6KCk9Pm8sX19nZW5lcmF0b3I6KCk9PkMsX19pbXBvcnREZWZhdWx0OigpPT5QLF9faW1wb3J0U3RhcjooKT0+RSxfX21ha2VUZW1wbGF0ZU9iamVjdDooKT0+XyxfX21ldGFkYXRhOigpPT5wLF9fcGFyYW06KCk9PmMsX19wcm9wS2V5OigpPT5kLF9fcmVhZDooKT0+dyxfX3Jlc3Q6KCk9PmksX19ydW5Jbml0aWFsaXplcnM6KCk9PnUsX19zZXRGdW5jdGlvbk5hbWU6KCk9PmYsX19zcHJlYWQ6KCk9PnksX19zcHJlYWRBcnJheTooKT0+eCxfX3NwcmVhZEFycmF5czooKT0+YixfX3ZhbHVlczooKT0+bX0pO3ZhciByPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHI9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSxyKGUsdCl9O2Z1bmN0aW9uIG8oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfXIoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihuLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgbil9dmFyIGE9ZnVuY3Rpb24oKXtyZXR1cm4gYT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQsbj0xLHI9YXJndW1lbnRzLmxlbmd0aDtuPHI7bisrKWZvcih2YXIgbyBpbiB0PWFyZ3VtZW50c1tuXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxvKSYmKGVbb109dFtvXSk7cmV0dXJuIGV9LGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtmdW5jdGlvbiBpKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn1mdW5jdGlvbiBsKGUsdCxuLHIpe3ZhciBvLGE9YXJndW1lbnRzLmxlbmd0aCxpPWE8Mz90Om51bGw9PT1yP3I9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pOnI7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpaT1SZWZsZWN0LmRlY29yYXRlKGUsdCxuLHIpO2Vsc2UgZm9yKHZhciBsPWUubGVuZ3RoLTE7bD49MDtsLS0pKG89ZVtsXSkmJihpPShhPDM/byhpKTphPjM/byh0LG4saSk6byh0LG4pKXx8aSk7cmV0dXJuIGE+MyYmaSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbixpKSxpfWZ1bmN0aW9uIGMoZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXt0KG4scixlKX19ZnVuY3Rpb24gcyhlLHQsbixyLG8sYSl7ZnVuY3Rpb24gaShlKXtpZih2b2lkIDAhPT1lJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoXCJGdW5jdGlvbiBleHBlY3RlZFwiKTtyZXR1cm4gZX1mb3IodmFyIGwsYz1yLmtpbmQscz1cImdldHRlclwiPT09Yz9cImdldFwiOlwic2V0dGVyXCI9PT1jP1wic2V0XCI6XCJ2YWx1ZVwiLHU9IXQmJmU/ci5zdGF0aWM/ZTplLnByb3RvdHlwZTpudWxsLGQ9dHx8KHU/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih1LHIubmFtZSk6e30pLGY9ITEscD1uLmxlbmd0aC0xO3A+PTA7cC0tKXt2YXIgaD17fTtmb3IodmFyIEMgaW4gciloW0NdPVwiYWNjZXNzXCI9PT1DP3t9OnJbQ107Zm9yKHZhciBDIGluIHIuYWNjZXNzKWguYWNjZXNzW0NdPXIuYWNjZXNzW0NdO2guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oZSl7aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpO2EucHVzaChpKGV8fG51bGwpKX07dmFyIHY9KDAsbltwXSkoXCJhY2Nlc3NvclwiPT09Yz97Z2V0OmQuZ2V0LHNldDpkLnNldH06ZFtzXSxoKTtpZihcImFjY2Vzc29yXCI9PT1jKXtpZih2b2lkIDA9PT12KWNvbnRpbnVlO2lmKG51bGw9PT12fHxcIm9iamVjdFwiIT10eXBlb2Ygdil0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkXCIpOyhsPWkodi5nZXQpKSYmKGQuZ2V0PWwpLChsPWkodi5zZXQpKSYmKGQuc2V0PWwpLChsPWkodi5pbml0KSkmJm8ucHVzaChsKX1lbHNlKGw9aSh2KSkmJihcImZpZWxkXCI9PT1jP28ucHVzaChsKTpkW3NdPWwpfXUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LHIubmFtZSxkKSxmPSEwfWZ1bmN0aW9uIHUoZSx0LG4pe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjIsbz0wO288dC5sZW5ndGg7bysrKW49cj90W29dLmNhbGwoZSxuKTp0W29dLmNhbGwoZSk7cmV0dXJuIHI/bjp2b2lkIDB9ZnVuY3Rpb24gZChlKXtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgZT9lOlwiXCIuY29uY2F0KGUpfWZ1bmN0aW9uIGYoZSx0LG4pe3JldHVyblwic3ltYm9sXCI9PXR5cGVvZiB0JiYodD10LmRlc2NyaXB0aW9uP1wiW1wiLmNvbmNhdCh0LmRlc2NyaXB0aW9uLFwiXVwiKTpcIlwiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIm5hbWVcIix7Y29uZmlndXJhYmxlOiEwLHZhbHVlOm4/XCJcIi5jb25jYXQobixcIiBcIix0KTp0fSl9ZnVuY3Rpb24gcChlLHQpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhKXJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKGUsdCl9ZnVuY3Rpb24gaChlLHQsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24obyxhKXtmdW5jdGlvbiBpKGUpe3RyeXtjKHIubmV4dChlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gbChlKXt0cnl7YyhyLnRocm93KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBjKGUpe3ZhciB0O2UuZG9uZT9vKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihpLGwpfWMoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX1mdW5jdGlvbiBDKGUsdCl7dmFyIG4scixvLGEsaT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZvWzBdKXRocm93IG9bMV07cmV0dXJuIG9bMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gYT17bmV4dDpsKDApLHRocm93OmwoMSkscmV0dXJuOmwoMil9LFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmKGFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksYTtmdW5jdGlvbiBsKGwpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gZnVuY3Rpb24obCl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO2EmJihhPTAsbFswXSYmKGk9MCkpLGk7KXRyeXtpZihuPTEsciYmKG89MiZsWzBdP3IucmV0dXJuOmxbMF0/ci50aHJvd3x8KChvPXIucmV0dXJuKSYmby5jYWxsKHIpLDApOnIubmV4dCkmJiEobz1vLmNhbGwocixsWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gocj0wLG8mJihsPVsyJmxbMF0sby52YWx1ZV0pLGxbMF0pe2Nhc2UgMDpjYXNlIDE6bz1sO2JyZWFrO2Nhc2UgNDpyZXR1cm4gaS5sYWJlbCsrLHt2YWx1ZTpsWzFdLGRvbmU6ITF9O2Nhc2UgNTppLmxhYmVsKysscj1sWzFdLGw9WzBdO2NvbnRpbnVlO2Nhc2UgNzpsPWkub3BzLnBvcCgpLGkudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKG89KG89aS50cnlzKS5sZW5ndGg+MCYmb1tvLmxlbmd0aC0xXSl8fDYhPT1sWzBdJiYyIT09bFswXSkpe2k9MDtjb250aW51ZX1pZigzPT09bFswXSYmKCFvfHxsWzFdPm9bMF0mJmxbMV08b1szXSkpe2kubGFiZWw9bFsxXTticmVha31pZig2PT09bFswXSYmaS5sYWJlbDxvWzFdKXtpLmxhYmVsPW9bMV0sbz1sO2JyZWFrfWlmKG8mJmkubGFiZWw8b1syXSl7aS5sYWJlbD1vWzJdLGkub3BzLnB1c2gobCk7YnJlYWt9b1syXSYmaS5vcHMucG9wKCksaS50cnlzLnBvcCgpO2NvbnRpbnVlfWw9dC5jYWxsKGUsaSl9Y2F0Y2goZSl7bD1bNixlXSxyPTB9ZmluYWxseXtuPW89MH1pZig1JmxbMF0pdGhyb3cgbFsxXTtyZXR1cm57dmFsdWU6bFswXT9sWzFdOnZvaWQgMCxkb25lOiEwfX0oW2wsY10pfX19dmFyIHY9T2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfTtmdW5jdGlvbiBnKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8dih0LGUsbil9ZnVuY3Rpb24gbShlKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixuPXQmJmVbdF0scj0wO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZihlJiZcIm51bWJlclwiPT10eXBlb2YgZS5sZW5ndGgpcmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSYmcj49ZS5sZW5ndGgmJihlPXZvaWQgMCkse3ZhbHVlOmUmJmVbcisrXSxkb25lOiFlfX19O3Rocm93IG5ldyBUeXBlRXJyb3IodD9cIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCI6XCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpfWZ1bmN0aW9uIHcoZSx0KXt2YXIgbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXTtpZighbilyZXR1cm4gZTt2YXIgcixvLGE9bi5jYWxsKGUpLGk9W107dHJ5e2Zvcig7KHZvaWQgMD09PXR8fHQtLSA+MCkmJiEocj1hLm5leHQoKSkuZG9uZTspaS5wdXNoKHIudmFsdWUpfWNhdGNoKGUpe289e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e3ImJiFyLmRvbmUmJihuPWEucmV0dXJuKSYmbi5jYWxsKGEpfWZpbmFsbHl7aWYobyl0aHJvdyBvLmVycm9yfX1yZXR1cm4gaX1mdW5jdGlvbiB5KCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWU9ZS5jb25jYXQodyhhcmd1bWVudHNbdF0pKTtyZXR1cm4gZX1mdW5jdGlvbiBiKCl7Zm9yKHZhciBlPTAsdD0wLG49YXJndW1lbnRzLmxlbmd0aDt0PG47dCsrKWUrPWFyZ3VtZW50c1t0XS5sZW5ndGg7dmFyIHI9QXJyYXkoZSksbz0wO2Zvcih0PTA7dDxuO3QrKylmb3IodmFyIGE9YXJndW1lbnRzW3RdLGk9MCxsPWEubGVuZ3RoO2k8bDtpKyssbysrKXJbb109YVtpXTtyZXR1cm4gcn1mdW5jdGlvbiB4KGUsdCxuKXtpZihufHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIHIsbz0wLGE9dC5sZW5ndGg7bzxhO28rKykhciYmbyBpbiB0fHwocnx8KHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLG8pKSxyW29dPXRbb10pO3JldHVybiBlLmNvbmNhdChyfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9ZnVuY3Rpb24gTyhlKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIE8/KHRoaXMudj1lLHRoaXMpOm5ldyBPKGUpfWZ1bmN0aW9uIEwoZSx0LG4pe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO3ZhciByLG89bi5hcHBseShlLHR8fFtdKSxhPVtdO3JldHVybiByPXt9LGkoXCJuZXh0XCIpLGkoXCJ0aHJvd1wiKSxpKFwicmV0dXJuXCIpLHJbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHI7ZnVuY3Rpb24gaShlKXtvW2VdJiYocltlXT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4scil7YS5wdXNoKFtlLHQsbixyXSk+MXx8bChlLHQpfSkpfSl9ZnVuY3Rpb24gbChlLHQpe3RyeXsobj1vW2VdKHQpKS52YWx1ZSBpbnN0YW5jZW9mIE8/UHJvbWlzZS5yZXNvbHZlKG4udmFsdWUudikudGhlbihjLHMpOnUoYVswXVsyXSxuKX1jYXRjaChlKXt1KGFbMF1bM10sZSl9dmFyIG59ZnVuY3Rpb24gYyhlKXtsKFwibmV4dFwiLGUpfWZ1bmN0aW9uIHMoZSl7bChcInRocm93XCIsZSl9ZnVuY3Rpb24gdShlLHQpe2UodCksYS5zaGlmdCgpLGEubGVuZ3RoJiZsKGFbMF1bMF0sYVswXVsxXSl9fWZ1bmN0aW9uIE0oZSl7dmFyIHQsbjtyZXR1cm4gdD17fSxyKFwibmV4dFwiKSxyKFwidGhyb3dcIiwoZnVuY3Rpb24oZSl7dGhyb3cgZX0pKSxyKFwicmV0dXJuXCIpLHRbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0O2Z1bmN0aW9uIHIocixvKXt0W3JdPWVbcl0/ZnVuY3Rpb24odCl7cmV0dXJuKG49IW4pP3t2YWx1ZTpPKGVbcl0odCkpLGRvbmU6ITF9Om8/byh0KTp0fTpvfX1mdW5jdGlvbiBTKGUpe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO3ZhciB0LG49ZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl07cmV0dXJuIG4/bi5jYWxsKGUpOihlPW0oZSksdD17fSxyKFwibmV4dFwiKSxyKFwidGhyb3dcIikscihcInJldHVyblwiKSx0W1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0KTtmdW5jdGlvbiByKG4pe3Rbbl09ZVtuXSYmZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8peyFmdW5jdGlvbihlLHQsbixyKXtQcm9taXNlLnJlc29sdmUocikudGhlbigoZnVuY3Rpb24odCl7ZSh7dmFsdWU6dCxkb25lOm59KX0pLHQpfShyLG8sKHQ9ZVtuXSh0KSkuZG9uZSx0LnZhbHVlKX0pKX19fWZ1bmN0aW9uIF8oZSx0KXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5P09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwicmF3XCIse3ZhbHVlOnR9KTplLnJhdz10LGV9dmFyIGo9T2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH07ZnVuY3Rpb24gRShlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZ2KHQsZSxuKTtyZXR1cm4gaih0LGUpLHR9ZnVuY3Rpb24gUChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gayhlLHQsbixyKXtpZihcImFcIj09PW4mJiFyKXRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdD9lIT09dHx8IXI6IXQuaGFzKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7cmV0dXJuXCJtXCI9PT1uP3I6XCJhXCI9PT1uP3IuY2FsbChlKTpyP3IudmFsdWU6dC5nZXQoZSl9ZnVuY3Rpb24gSChlLHQsbixyLG8pe2lmKFwibVwiPT09cil0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO2lmKFwiYVwiPT09ciYmIW8pdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P2UhPT10fHwhbzohdC5oYXMoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO3JldHVyblwiYVwiPT09cj9vLmNhbGwoZSxuKTpvP28udmFsdWU9bjp0LnNldChlLG4pLG59ZnVuY3Rpb24gVihlLHQpe2lmKG51bGw9PT10fHxcIm9iamVjdFwiIT10eXBlb2YgdCYmXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZT90PT09ZTplLmhhcyh0KX19LDY2ODk6ZT0+e2UuZXhwb3J0cz1uKDM3OCl9LDc1MTg6ZT0+e2UuZXhwb3J0cz1uKDkyMSl9LDgyMDc6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtyZXR1cm4oZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSkodCl9dmFyIHQ9L15cXHMrLyxuPS9cXHMrJC87ZnVuY3Rpb24gcihvLGEpe2lmKGE9YXx8e30sKG89b3x8XCJcIilpbnN0YW5jZW9mIHIpcmV0dXJuIG87aWYoISh0aGlzIGluc3RhbmNlb2YgcikpcmV0dXJuIG5ldyByKG8sYSk7dmFyIGk9ZnVuY3Rpb24ocil7dmFyIG8sYSxpLGw9e3I6MCxnOjAsYjowfSxjPTEscz1udWxsLHU9bnVsbCxkPW51bGwsZj0hMSxwPSExO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiByJiYocj1mdW5jdGlvbihlKXtlPWUucmVwbGFjZSh0LFwiXCIpLnJlcGxhY2UobixcIlwiKS50b0xvd2VyQ2FzZSgpO3ZhciByLG89ITE7aWYoeVtlXSllPXlbZV0sbz0hMDtlbHNlIGlmKFwidHJhbnNwYXJlbnRcIj09ZSlyZXR1cm57cjowLGc6MCxiOjAsYTowLGZvcm1hdDpcIm5hbWVcIn07cmV0dXJuKHI9Vi5yZ2IuZXhlYyhlKSk/e3I6clsxXSxnOnJbMl0sYjpyWzNdfToocj1WLnJnYmEuZXhlYyhlKSk/e3I6clsxXSxnOnJbMl0sYjpyWzNdLGE6cls0XX06KHI9Vi5oc2wuZXhlYyhlKSk/e2g6clsxXSxzOnJbMl0sbDpyWzNdfToocj1WLmhzbGEuZXhlYyhlKSk/e2g6clsxXSxzOnJbMl0sbDpyWzNdLGE6cls0XX06KHI9Vi5oc3YuZXhlYyhlKSk/e2g6clsxXSxzOnJbMl0sdjpyWzNdfToocj1WLmhzdmEuZXhlYyhlKSk/e2g6clsxXSxzOnJbMl0sdjpyWzNdLGE6cls0XX06KHI9Vi5oZXg4LmV4ZWMoZSkpP3tyOk0oclsxXSksZzpNKHJbMl0pLGI6TShyWzNdKSxhOkUocls0XSksZm9ybWF0Om8/XCJuYW1lXCI6XCJoZXg4XCJ9OihyPVYuaGV4Ni5leGVjKGUpKT97cjpNKHJbMV0pLGc6TShyWzJdKSxiOk0oclszXSksZm9ybWF0Om8/XCJuYW1lXCI6XCJoZXhcIn06KHI9Vi5oZXg0LmV4ZWMoZSkpP3tyOk0oclsxXStcIlwiK3JbMV0pLGc6TShyWzJdK1wiXCIrclsyXSksYjpNKHJbM10rXCJcIityWzNdKSxhOkUocls0XStcIlwiK3JbNF0pLGZvcm1hdDpvP1wibmFtZVwiOlwiaGV4OFwifTohIShyPVYuaGV4My5leGVjKGUpKSYme3I6TShyWzFdK1wiXCIrclsxXSksZzpNKHJbMl0rXCJcIityWzJdKSxiOk0oclszXStcIlwiK3JbM10pLGZvcm1hdDpvP1wibmFtZVwiOlwiaGV4XCJ9fShyKSksXCJvYmplY3RcIj09ZShyKSYmKFIoci5yKSYmUihyLmcpJiZSKHIuYik/KG89ci5yLGE9ci5nLGk9ci5iLGw9e3I6MjU1Kk8obywyNTUpLGc6MjU1Kk8oYSwyNTUpLGI6MjU1Kk8oaSwyNTUpfSxmPSEwLHA9XCIlXCI9PT1TdHJpbmcoci5yKS5zdWJzdHIoLTEpP1wicHJnYlwiOlwicmdiXCIpOlIoci5oKSYmUihyLnMpJiZSKHIudik/KHM9XyhyLnMpLHU9XyhyLnYpLGw9ZnVuY3Rpb24oZSx0LG4pe2U9NipPKGUsMzYwKSx0PU8odCwxMDApLG49TyhuLDEwMCk7dmFyIHI9TWF0aC5mbG9vcihlKSxvPWUtcixhPW4qKDEtdCksaT1uKigxLW8qdCksbD1uKigxLSgxLW8pKnQpLGM9ciU2O3JldHVybntyOjI1NSpbbixpLGEsYSxsLG5dW2NdLGc6MjU1KltsLG4sbixpLGEsYV1bY10sYjoyNTUqW2EsYSxsLG4sbixpXVtjXX19KHIuaCxzLHUpLGY9ITAscD1cImhzdlwiKTpSKHIuaCkmJlIoci5zKSYmUihyLmwpJiYocz1fKHIucyksZD1fKHIubCksbD1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxhO2Z1bmN0aW9uIGkoZSx0LG4pe3JldHVybiBuPDAmJihuKz0xKSxuPjEmJihuLT0xKSxuPDEvNj9lKzYqKHQtZSkqbjpuPC41P3Q6bjwyLzM/ZSsodC1lKSooMi8zLW4pKjY6ZX1pZihlPU8oZSwzNjApLHQ9Tyh0LDEwMCksbj1PKG4sMTAwKSwwPT09dClyPW89YT1uO2Vsc2V7dmFyIGw9bjwuNT9uKigxK3QpOm4rdC1uKnQsYz0yKm4tbDtyPWkoYyxsLGUrMS8zKSxvPWkoYyxsLGUpLGE9aShjLGwsZS0xLzMpfXJldHVybntyOjI1NSpyLGc6MjU1Km8sYjoyNTUqYX19KHIuaCxzLGQpLGY9ITAscD1cImhzbFwiKSxyLmhhc093blByb3BlcnR5KFwiYVwiKSYmKGM9ci5hKSksYz14KGMpLHtvazpmLGZvcm1hdDpyLmZvcm1hdHx8cCxyOk1hdGgubWluKDI1NSxNYXRoLm1heChsLnIsMCkpLGc6TWF0aC5taW4oMjU1LE1hdGgubWF4KGwuZywwKSksYjpNYXRoLm1pbigyNTUsTWF0aC5tYXgobC5iLDApKSxhOmN9fShvKTt0aGlzLl9vcmlnaW5hbElucHV0PW8sdGhpcy5fcj1pLnIsdGhpcy5fZz1pLmcsdGhpcy5fYj1pLmIsdGhpcy5fYT1pLmEsdGhpcy5fcm91bmRBPU1hdGgucm91bmQoMTAwKnRoaXMuX2EpLzEwMCx0aGlzLl9mb3JtYXQ9YS5mb3JtYXR8fGkuZm9ybWF0LHRoaXMuX2dyYWRpZW50VHlwZT1hLmdyYWRpZW50VHlwZSx0aGlzLl9yPDEmJih0aGlzLl9yPU1hdGgucm91bmQodGhpcy5fcikpLHRoaXMuX2c8MSYmKHRoaXMuX2c9TWF0aC5yb3VuZCh0aGlzLl9nKSksdGhpcy5fYjwxJiYodGhpcy5fYj1NYXRoLnJvdW5kKHRoaXMuX2IpKSx0aGlzLl9vaz1pLm9rfWZ1bmN0aW9uIG8oZSx0LG4pe2U9TyhlLDI1NSksdD1PKHQsMjU1KSxuPU8obiwyNTUpO3ZhciByLG8sYT1NYXRoLm1heChlLHQsbiksaT1NYXRoLm1pbihlLHQsbiksbD0oYStpKS8yO2lmKGE9PWkpcj1vPTA7ZWxzZXt2YXIgYz1hLWk7c3dpdGNoKG89bD4uNT9jLygyLWEtaSk6Yy8oYStpKSxhKXtjYXNlIGU6cj0odC1uKS9jKyh0PG4/NjowKTticmVhaztjYXNlIHQ6cj0obi1lKS9jKzI7YnJlYWs7Y2FzZSBuOnI9KGUtdCkvYys0fXIvPTZ9cmV0dXJue2g6cixzOm8sbH19ZnVuY3Rpb24gYShlLHQsbil7ZT1PKGUsMjU1KSx0PU8odCwyNTUpLG49TyhuLDI1NSk7dmFyIHIsbyxhPU1hdGgubWF4KGUsdCxuKSxpPU1hdGgubWluKGUsdCxuKSxsPWEsYz1hLWk7aWYobz0wPT09YT8wOmMvYSxhPT1pKXI9MDtlbHNle3N3aXRjaChhKXtjYXNlIGU6cj0odC1uKS9jKyh0PG4/NjowKTticmVhaztjYXNlIHQ6cj0obi1lKS9jKzI7YnJlYWs7Y2FzZSBuOnI9KGUtdCkvYys0fXIvPTZ9cmV0dXJue2g6cixzOm8sdjpsfX1mdW5jdGlvbiBpKGUsdCxuLHIpe3ZhciBvPVtTKE1hdGgucm91bmQoZSkudG9TdHJpbmcoMTYpKSxTKE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpKSxTKE1hdGgucm91bmQobikudG9TdHJpbmcoMTYpKV07cmV0dXJuIHImJm9bMF0uY2hhckF0KDApPT1vWzBdLmNoYXJBdCgxKSYmb1sxXS5jaGFyQXQoMCk9PW9bMV0uY2hhckF0KDEpJiZvWzJdLmNoYXJBdCgwKT09b1syXS5jaGFyQXQoMSk/b1swXS5jaGFyQXQoMCkrb1sxXS5jaGFyQXQoMCkrb1syXS5jaGFyQXQoMCk6by5qb2luKFwiXCIpfWZ1bmN0aW9uIGwoZSx0LG4scil7cmV0dXJuW1MoaihyKSksUyhNYXRoLnJvdW5kKGUpLnRvU3RyaW5nKDE2KSksUyhNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KSksUyhNYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDE2KSldLmpvaW4oXCJcIil9ZnVuY3Rpb24gYyhlLHQpe3Q9MD09PXQ/MDp0fHwxMDt2YXIgbj1yKGUpLnRvSHNsKCk7cmV0dXJuIG4ucy09dC8xMDAsbi5zPUwobi5zKSxyKG4pfWZ1bmN0aW9uIHMoZSx0KXt0PTA9PT10PzA6dHx8MTA7dmFyIG49cihlKS50b0hzbCgpO3JldHVybiBuLnMrPXQvMTAwLG4ucz1MKG4ucykscihuKX1mdW5jdGlvbiB1KGUpe3JldHVybiByKGUpLmRlc2F0dXJhdGUoMTAwKX1mdW5jdGlvbiBkKGUsdCl7dD0wPT09dD8wOnR8fDEwO3ZhciBuPXIoZSkudG9Ic2woKTtyZXR1cm4gbi5sKz10LzEwMCxuLmw9TChuLmwpLHIobil9ZnVuY3Rpb24gZihlLHQpe3Q9MD09PXQ/MDp0fHwxMDt2YXIgbj1yKGUpLnRvUmdiKCk7cmV0dXJuIG4ucj1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxuLnItTWF0aC5yb3VuZCgtdC8xMDAqMjU1KSkpLG4uZz1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxuLmctTWF0aC5yb3VuZCgtdC8xMDAqMjU1KSkpLG4uYj1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxuLmItTWF0aC5yb3VuZCgtdC8xMDAqMjU1KSkpLHIobil9ZnVuY3Rpb24gcChlLHQpe3Q9MD09PXQ/MDp0fHwxMDt2YXIgbj1yKGUpLnRvSHNsKCk7cmV0dXJuIG4ubC09dC8xMDAsbi5sPUwobi5sKSxyKG4pfWZ1bmN0aW9uIGgoZSx0KXt2YXIgbj1yKGUpLnRvSHNsKCksbz0obi5oK3QpJTM2MDtyZXR1cm4gbi5oPW88MD8zNjArbzpvLHIobil9ZnVuY3Rpb24gQyhlKXt2YXIgdD1yKGUpLnRvSHNsKCk7cmV0dXJuIHQuaD0odC5oKzE4MCklMzYwLHIodCl9ZnVuY3Rpb24gdihlLHQpe2lmKGlzTmFOKHQpfHx0PD0wKXRocm93IG5ldyBFcnJvcihcIkFyZ3VtZW50IHRvIHBvbHlhZCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyXCIpO2Zvcih2YXIgbj1yKGUpLnRvSHNsKCksbz1bcihlKV0sYT0zNjAvdCxpPTE7aTx0O2krKylvLnB1c2gocih7aDoobi5oK2kqYSklMzYwLHM6bi5zLGw6bi5sfSkpO3JldHVybiBvfWZ1bmN0aW9uIGcoZSl7dmFyIHQ9cihlKS50b0hzbCgpLG49dC5oO3JldHVybltyKGUpLHIoe2g6KG4rNzIpJTM2MCxzOnQucyxsOnQubH0pLHIoe2g6KG4rMjE2KSUzNjAsczp0LnMsbDp0Lmx9KV19ZnVuY3Rpb24gbShlLHQsbil7dD10fHw2LG49bnx8MzA7dmFyIG89cihlKS50b0hzbCgpLGE9MzYwL24saT1bcihlKV07Zm9yKG8uaD0oby5oLShhKnQ+PjEpKzcyMCklMzYwOy0tdDspby5oPShvLmgrYSklMzYwLGkucHVzaChyKG8pKTtyZXR1cm4gaX1mdW5jdGlvbiB3KGUsdCl7dD10fHw2O2Zvcih2YXIgbj1yKGUpLnRvSHN2KCksbz1uLmgsYT1uLnMsaT1uLnYsbD1bXSxjPTEvdDt0LS07KWwucHVzaChyKHtoOm8sczphLHY6aX0pKSxpPShpK2MpJTE7cmV0dXJuIGx9ci5wcm90b3R5cGU9e2lzRGFyazpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEJyaWdodG5lc3MoKTwxMjh9LGlzTGlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0RhcmsoKX0saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9va30sZ2V0T3JpZ2luYWxJbnB1dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vcmlnaW5hbElucHV0fSxnZXRGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9ybWF0fSxnZXRBbHBoYTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hfSxnZXRCcmlnaHRuZXNzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50b1JnYigpO3JldHVybigyOTkqZS5yKzU4NyplLmcrMTE0KmUuYikvMWUzfSxnZXRMdW1pbmFuY2U6ZnVuY3Rpb24oKXt2YXIgZSx0LG4scj10aGlzLnRvUmdiKCk7cmV0dXJuIGU9ci5yLzI1NSx0PXIuZy8yNTUsbj1yLmIvMjU1LC4yMTI2KihlPD0uMDM5Mjg/ZS8xMi45MjpNYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpKSsuNzE1MioodDw9LjAzOTI4P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KSkrLjA3MjIqKG48PS4wMzkyOD9uLzEyLjkyOk1hdGgucG93KChuKy4wNTUpLzEuMDU1LDIuNCkpfSxzZXRBbHBoYTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYT14KGUpLHRoaXMuX3JvdW5kQT1NYXRoLnJvdW5kKDEwMCp0aGlzLl9hKS8xMDAsdGhpc30sdG9Ic3Y6ZnVuY3Rpb24oKXt2YXIgZT1hKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iKTtyZXR1cm57aDozNjAqZS5oLHM6ZS5zLHY6ZS52LGE6dGhpcy5fYX19LHRvSHN2U3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGU9YSh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYiksdD1NYXRoLnJvdW5kKDM2MCplLmgpLG49TWF0aC5yb3VuZCgxMDAqZS5zKSxyPU1hdGgucm91bmQoMTAwKmUudik7cmV0dXJuIDE9PXRoaXMuX2E/XCJoc3YoXCIrdCtcIiwgXCIrbitcIiUsIFwiK3IrXCIlKVwiOlwiaHN2YShcIit0K1wiLCBcIituK1wiJSwgXCIrcitcIiUsIFwiK3RoaXMuX3JvdW5kQStcIilcIn0sdG9Ic2w6ZnVuY3Rpb24oKXt2YXIgZT1vKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iKTtyZXR1cm57aDozNjAqZS5oLHM6ZS5zLGw6ZS5sLGE6dGhpcy5fYX19LHRvSHNsU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGU9byh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYiksdD1NYXRoLnJvdW5kKDM2MCplLmgpLG49TWF0aC5yb3VuZCgxMDAqZS5zKSxyPU1hdGgucm91bmQoMTAwKmUubCk7cmV0dXJuIDE9PXRoaXMuX2E/XCJoc2woXCIrdCtcIiwgXCIrbitcIiUsIFwiK3IrXCIlKVwiOlwiaHNsYShcIit0K1wiLCBcIituK1wiJSwgXCIrcitcIiUsIFwiK3RoaXMuX3JvdW5kQStcIilcIn0sdG9IZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGkodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsZSl9LHRvSGV4U3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVyblwiI1wiK3RoaXMudG9IZXgoZSl9LHRvSGV4ODpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgYT1bUyhNYXRoLnJvdW5kKGUpLnRvU3RyaW5nKDE2KSksUyhNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KSksUyhNYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDE2KSksUyhqKHIpKV07cmV0dXJuIG8mJmFbMF0uY2hhckF0KDApPT1hWzBdLmNoYXJBdCgxKSYmYVsxXS5jaGFyQXQoMCk9PWFbMV0uY2hhckF0KDEpJiZhWzJdLmNoYXJBdCgwKT09YVsyXS5jaGFyQXQoMSkmJmFbM10uY2hhckF0KDApPT1hWzNdLmNoYXJBdCgxKT9hWzBdLmNoYXJBdCgwKSthWzFdLmNoYXJBdCgwKSthWzJdLmNoYXJBdCgwKSthWzNdLmNoYXJBdCgwKTphLmpvaW4oXCJcIil9KHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLHRoaXMuX2EsZSl9LHRvSGV4OFN0cmluZzpmdW5jdGlvbihlKXtyZXR1cm5cIiNcIit0aGlzLnRvSGV4OChlKX0sdG9SZ2I6ZnVuY3Rpb24oKXtyZXR1cm57cjpNYXRoLnJvdW5kKHRoaXMuX3IpLGc6TWF0aC5yb3VuZCh0aGlzLl9nKSxiOk1hdGgucm91bmQodGhpcy5fYiksYTp0aGlzLl9hfX0sdG9SZ2JTdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gMT09dGhpcy5fYT9cInJnYihcIitNYXRoLnJvdW5kKHRoaXMuX3IpK1wiLCBcIitNYXRoLnJvdW5kKHRoaXMuX2cpK1wiLCBcIitNYXRoLnJvdW5kKHRoaXMuX2IpK1wiKVwiOlwicmdiYShcIitNYXRoLnJvdW5kKHRoaXMuX3IpK1wiLCBcIitNYXRoLnJvdW5kKHRoaXMuX2cpK1wiLCBcIitNYXRoLnJvdW5kKHRoaXMuX2IpK1wiLCBcIit0aGlzLl9yb3VuZEErXCIpXCJ9LHRvUGVyY2VudGFnZVJnYjpmdW5jdGlvbigpe3JldHVybntyOk1hdGgucm91bmQoMTAwKk8odGhpcy5fciwyNTUpKStcIiVcIixnOk1hdGgucm91bmQoMTAwKk8odGhpcy5fZywyNTUpKStcIiVcIixiOk1hdGgucm91bmQoMTAwKk8odGhpcy5fYiwyNTUpKStcIiVcIixhOnRoaXMuX2F9fSx0b1BlcmNlbnRhZ2VSZ2JTdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gMT09dGhpcy5fYT9cInJnYihcIitNYXRoLnJvdW5kKDEwMCpPKHRoaXMuX3IsMjU1KSkrXCIlLCBcIitNYXRoLnJvdW5kKDEwMCpPKHRoaXMuX2csMjU1KSkrXCIlLCBcIitNYXRoLnJvdW5kKDEwMCpPKHRoaXMuX2IsMjU1KSkrXCIlKVwiOlwicmdiYShcIitNYXRoLnJvdW5kKDEwMCpPKHRoaXMuX3IsMjU1KSkrXCIlLCBcIitNYXRoLnJvdW5kKDEwMCpPKHRoaXMuX2csMjU1KSkrXCIlLCBcIitNYXRoLnJvdW5kKDEwMCpPKHRoaXMuX2IsMjU1KSkrXCIlLCBcIit0aGlzLl9yb3VuZEErXCIpXCJ9LHRvTmFtZTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fYT9cInRyYW5zcGFyZW50XCI6ISh0aGlzLl9hPDEpJiYoYltpKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLCEwKV18fCExKX0sdG9GaWx0ZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9XCIjXCIrbCh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYix0aGlzLl9hKSxuPXQsbz10aGlzLl9ncmFkaWVudFR5cGU/XCJHcmFkaWVudFR5cGUgPSAxLCBcIjpcIlwiO2lmKGUpe3ZhciBhPXIoZSk7bj1cIiNcIitsKGEuX3IsYS5fZyxhLl9iLGEuX2EpfXJldHVyblwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KFwiK28rXCJzdGFydENvbG9yc3RyPVwiK3QrXCIsZW5kQ29sb3JzdHI9XCIrbitcIilcIn0sdG9TdHJpbmc6ZnVuY3Rpb24oZSl7dmFyIHQ9ISFlO2U9ZXx8dGhpcy5fZm9ybWF0O3ZhciBuPSExLHI9dGhpcy5fYTwxJiZ0aGlzLl9hPj0wO3JldHVybiB0fHwhcnx8XCJoZXhcIiE9PWUmJlwiaGV4NlwiIT09ZSYmXCJoZXgzXCIhPT1lJiZcImhleDRcIiE9PWUmJlwiaGV4OFwiIT09ZSYmXCJuYW1lXCIhPT1lPyhcInJnYlwiPT09ZSYmKG49dGhpcy50b1JnYlN0cmluZygpKSxcInByZ2JcIj09PWUmJihuPXRoaXMudG9QZXJjZW50YWdlUmdiU3RyaW5nKCkpLFwiaGV4XCIhPT1lJiZcImhleDZcIiE9PWV8fChuPXRoaXMudG9IZXhTdHJpbmcoKSksXCJoZXgzXCI9PT1lJiYobj10aGlzLnRvSGV4U3RyaW5nKCEwKSksXCJoZXg0XCI9PT1lJiYobj10aGlzLnRvSGV4OFN0cmluZyghMCkpLFwiaGV4OFwiPT09ZSYmKG49dGhpcy50b0hleDhTdHJpbmcoKSksXCJuYW1lXCI9PT1lJiYobj10aGlzLnRvTmFtZSgpKSxcImhzbFwiPT09ZSYmKG49dGhpcy50b0hzbFN0cmluZygpKSxcImhzdlwiPT09ZSYmKG49dGhpcy50b0hzdlN0cmluZygpKSxufHx0aGlzLnRvSGV4U3RyaW5nKCkpOlwibmFtZVwiPT09ZSYmMD09PXRoaXMuX2E/dGhpcy50b05hbWUoKTp0aGlzLnRvUmdiU3RyaW5nKCl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy50b1N0cmluZygpKX0sX2FwcGx5TW9kaWZpY2F0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5hcHBseShudWxsLFt0aGlzXS5jb25jYXQoW10uc2xpY2UuY2FsbCh0KSkpO3JldHVybiB0aGlzLl9yPW4uX3IsdGhpcy5fZz1uLl9nLHRoaXMuX2I9bi5fYix0aGlzLnNldEFscGhhKG4uX2EpLHRoaXN9LGxpZ2h0ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oZCxhcmd1bWVudHMpfSxicmlnaHRlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihmLGFyZ3VtZW50cyl9LGRhcmtlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihwLGFyZ3VtZW50cyl9LGRlc2F0dXJhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oYyxhcmd1bWVudHMpfSxzYXR1cmF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihzLGFyZ3VtZW50cyl9LGdyZXlzY2FsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbih1LGFyZ3VtZW50cyl9LHNwaW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oaCxhcmd1bWVudHMpfSxfYXBwbHlDb21iaW5hdGlvbjpmdW5jdGlvbihlLHQpe3JldHVybiBlLmFwcGx5KG51bGwsW3RoaXNdLmNvbmNhdChbXS5zbGljZS5jYWxsKHQpKSl9LGFuYWxvZ291czpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKG0sYXJndW1lbnRzKX0sY29tcGxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKEMsYXJndW1lbnRzKX0sbW9ub2Nocm9tYXRpYzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKHcsYXJndW1lbnRzKX0sc3BsaXRjb21wbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24oZyxhcmd1bWVudHMpfSx0cmlhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKHYsWzNdKX0sdGV0cmFkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24odixbNF0pfX0sci5mcm9tUmF0aW89ZnVuY3Rpb24odCxuKXtpZihcIm9iamVjdFwiPT1lKHQpKXt2YXIgbz17fTtmb3IodmFyIGEgaW4gdCl0Lmhhc093blByb3BlcnR5KGEpJiYob1thXT1cImFcIj09PWE/dFthXTpfKHRbYV0pKTt0PW99cmV0dXJuIHIodCxuKX0sci5lcXVhbHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hKCFlfHwhdCkmJnIoZSkudG9SZ2JTdHJpbmcoKT09cih0KS50b1JnYlN0cmluZygpfSxyLnJhbmRvbT1mdW5jdGlvbigpe3JldHVybiByLmZyb21SYXRpbyh7cjpNYXRoLnJhbmRvbSgpLGc6TWF0aC5yYW5kb20oKSxiOk1hdGgucmFuZG9tKCl9KX0sci5taXg9ZnVuY3Rpb24oZSx0LG4pe249MD09PW4/MDpufHw1MDt2YXIgbz1yKGUpLnRvUmdiKCksYT1yKHQpLnRvUmdiKCksaT1uLzEwMDtyZXR1cm4gcih7cjooYS5yLW8ucikqaStvLnIsZzooYS5nLW8uZykqaStvLmcsYjooYS5iLW8uYikqaStvLmIsYTooYS5hLW8uYSkqaStvLmF9KX0sci5yZWFkYWJpbGl0eT1mdW5jdGlvbihlLHQpe3ZhciBuPXIoZSksbz1yKHQpO3JldHVybihNYXRoLm1heChuLmdldEx1bWluYW5jZSgpLG8uZ2V0THVtaW5hbmNlKCkpKy4wNSkvKE1hdGgubWluKG4uZ2V0THVtaW5hbmNlKCksby5nZXRMdW1pbmFuY2UoKSkrLjA1KX0sci5pc1JlYWRhYmxlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbyxhLGksbCxjLHM9ci5yZWFkYWJpbGl0eShlLHQpO3N3aXRjaChhPSExLChpPW4sXCJBQVwiIT09KGw9KChpPWl8fHtsZXZlbDpcIkFBXCIsc2l6ZTpcInNtYWxsXCJ9KS5sZXZlbHx8XCJBQVwiKS50b1VwcGVyQ2FzZSgpKSYmXCJBQUFcIiE9PWwmJihsPVwiQUFcIiksXCJzbWFsbFwiIT09KGM9KGkuc2l6ZXx8XCJzbWFsbFwiKS50b0xvd2VyQ2FzZSgpKSYmXCJsYXJnZVwiIT09YyYmKGM9XCJzbWFsbFwiKSxvPXtsZXZlbDpsLHNpemU6Y30pLmxldmVsK28uc2l6ZSl7Y2FzZVwiQUFzbWFsbFwiOmNhc2VcIkFBQWxhcmdlXCI6YT1zPj00LjU7YnJlYWs7Y2FzZVwiQUFsYXJnZVwiOmE9cz49MzticmVhaztjYXNlXCJBQUFzbWFsbFwiOmE9cz49N31yZXR1cm4gYX0sci5tb3N0UmVhZGFibGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvLGEsaSxsLGM9bnVsbCxzPTA7YT0obj1ufHx7fSkuaW5jbHVkZUZhbGxiYWNrQ29sb3JzLGk9bi5sZXZlbCxsPW4uc2l6ZTtmb3IodmFyIHU9MDt1PHQubGVuZ3RoO3UrKykobz1yLnJlYWRhYmlsaXR5KGUsdFt1XSkpPnMmJihzPW8sYz1yKHRbdV0pKTtyZXR1cm4gci5pc1JlYWRhYmxlKGUsYyx7bGV2ZWw6aSxzaXplOmx9KXx8IWE/Yzoobi5pbmNsdWRlRmFsbGJhY2tDb2xvcnM9ITEsci5tb3N0UmVhZGFibGUoZSxbXCIjZmZmXCIsXCIjMDAwXCJdLG4pKX07dmFyIHk9ci5uYW1lcz17YWxpY2VibHVlOlwiZjBmOGZmXCIsYW50aXF1ZXdoaXRlOlwiZmFlYmQ3XCIsYXF1YTpcIjBmZlwiLGFxdWFtYXJpbmU6XCI3ZmZmZDRcIixhenVyZTpcImYwZmZmZlwiLGJlaWdlOlwiZjVmNWRjXCIsYmlzcXVlOlwiZmZlNGM0XCIsYmxhY2s6XCIwMDBcIixibGFuY2hlZGFsbW9uZDpcImZmZWJjZFwiLGJsdWU6XCIwMGZcIixibHVldmlvbGV0OlwiOGEyYmUyXCIsYnJvd246XCJhNTJhMmFcIixidXJseXdvb2Q6XCJkZWI4ODdcIixidXJudHNpZW5uYTpcImVhN2U1ZFwiLGNhZGV0Ymx1ZTpcIjVmOWVhMFwiLGNoYXJ0cmV1c2U6XCI3ZmZmMDBcIixjaG9jb2xhdGU6XCJkMjY5MWVcIixjb3JhbDpcImZmN2Y1MFwiLGNvcm5mbG93ZXJibHVlOlwiNjQ5NWVkXCIsY29ybnNpbGs6XCJmZmY4ZGNcIixjcmltc29uOlwiZGMxNDNjXCIsY3lhbjpcIjBmZlwiLGRhcmtibHVlOlwiMDAwMDhiXCIsZGFya2N5YW46XCIwMDhiOGJcIixkYXJrZ29sZGVucm9kOlwiYjg4NjBiXCIsZGFya2dyYXk6XCJhOWE5YTlcIixkYXJrZ3JlZW46XCIwMDY0MDBcIixkYXJrZ3JleTpcImE5YTlhOVwiLGRhcmtraGFraTpcImJkYjc2YlwiLGRhcmttYWdlbnRhOlwiOGIwMDhiXCIsZGFya29saXZlZ3JlZW46XCI1NTZiMmZcIixkYXJrb3JhbmdlOlwiZmY4YzAwXCIsZGFya29yY2hpZDpcIjk5MzJjY1wiLGRhcmtyZWQ6XCI4YjAwMDBcIixkYXJrc2FsbW9uOlwiZTk5NjdhXCIsZGFya3NlYWdyZWVuOlwiOGZiYzhmXCIsZGFya3NsYXRlYmx1ZTpcIjQ4M2Q4YlwiLGRhcmtzbGF0ZWdyYXk6XCIyZjRmNGZcIixkYXJrc2xhdGVncmV5OlwiMmY0ZjRmXCIsZGFya3R1cnF1b2lzZTpcIjAwY2VkMVwiLGRhcmt2aW9sZXQ6XCI5NDAwZDNcIixkZWVwcGluazpcImZmMTQ5M1wiLGRlZXBza3libHVlOlwiMDBiZmZmXCIsZGltZ3JheTpcIjY5Njk2OVwiLGRpbWdyZXk6XCI2OTY5NjlcIixkb2RnZXJibHVlOlwiMWU5MGZmXCIsZmlyZWJyaWNrOlwiYjIyMjIyXCIsZmxvcmFsd2hpdGU6XCJmZmZhZjBcIixmb3Jlc3RncmVlbjpcIjIyOGIyMlwiLGZ1Y2hzaWE6XCJmMGZcIixnYWluc2Jvcm86XCJkY2RjZGNcIixnaG9zdHdoaXRlOlwiZjhmOGZmXCIsZ29sZDpcImZmZDcwMFwiLGdvbGRlbnJvZDpcImRhYTUyMFwiLGdyYXk6XCI4MDgwODBcIixncmVlbjpcIjAwODAwMFwiLGdyZWVueWVsbG93OlwiYWRmZjJmXCIsZ3JleTpcIjgwODA4MFwiLGhvbmV5ZGV3OlwiZjBmZmYwXCIsaG90cGluazpcImZmNjliNFwiLGluZGlhbnJlZDpcImNkNWM1Y1wiLGluZGlnbzpcIjRiMDA4MlwiLGl2b3J5OlwiZmZmZmYwXCIsa2hha2k6XCJmMGU2OGNcIixsYXZlbmRlcjpcImU2ZTZmYVwiLGxhdmVuZGVyYmx1c2g6XCJmZmYwZjVcIixsYXduZ3JlZW46XCI3Y2ZjMDBcIixsZW1vbmNoaWZmb246XCJmZmZhY2RcIixsaWdodGJsdWU6XCJhZGQ4ZTZcIixsaWdodGNvcmFsOlwiZjA4MDgwXCIsbGlnaHRjeWFuOlwiZTBmZmZmXCIsbGlnaHRnb2xkZW5yb2R5ZWxsb3c6XCJmYWZhZDJcIixsaWdodGdyYXk6XCJkM2QzZDNcIixsaWdodGdyZWVuOlwiOTBlZTkwXCIsbGlnaHRncmV5OlwiZDNkM2QzXCIsbGlnaHRwaW5rOlwiZmZiNmMxXCIsbGlnaHRzYWxtb246XCJmZmEwN2FcIixsaWdodHNlYWdyZWVuOlwiMjBiMmFhXCIsbGlnaHRza3libHVlOlwiODdjZWZhXCIsbGlnaHRzbGF0ZWdyYXk6XCI3ODlcIixsaWdodHNsYXRlZ3JleTpcIjc4OVwiLGxpZ2h0c3RlZWxibHVlOlwiYjBjNGRlXCIsbGlnaHR5ZWxsb3c6XCJmZmZmZTBcIixsaW1lOlwiMGYwXCIsbGltZWdyZWVuOlwiMzJjZDMyXCIsbGluZW46XCJmYWYwZTZcIixtYWdlbnRhOlwiZjBmXCIsbWFyb29uOlwiODAwMDAwXCIsbWVkaXVtYXF1YW1hcmluZTpcIjY2Y2RhYVwiLG1lZGl1bWJsdWU6XCIwMDAwY2RcIixtZWRpdW1vcmNoaWQ6XCJiYTU1ZDNcIixtZWRpdW1wdXJwbGU6XCI5MzcwZGJcIixtZWRpdW1zZWFncmVlbjpcIjNjYjM3MVwiLG1lZGl1bXNsYXRlYmx1ZTpcIjdiNjhlZVwiLG1lZGl1bXNwcmluZ2dyZWVuOlwiMDBmYTlhXCIsbWVkaXVtdHVycXVvaXNlOlwiNDhkMWNjXCIsbWVkaXVtdmlvbGV0cmVkOlwiYzcxNTg1XCIsbWlkbmlnaHRibHVlOlwiMTkxOTcwXCIsbWludGNyZWFtOlwiZjVmZmZhXCIsbWlzdHlyb3NlOlwiZmZlNGUxXCIsbW9jY2FzaW46XCJmZmU0YjVcIixuYXZham93aGl0ZTpcImZmZGVhZFwiLG5hdnk6XCIwMDAwODBcIixvbGRsYWNlOlwiZmRmNWU2XCIsb2xpdmU6XCI4MDgwMDBcIixvbGl2ZWRyYWI6XCI2YjhlMjNcIixvcmFuZ2U6XCJmZmE1MDBcIixvcmFuZ2VyZWQ6XCJmZjQ1MDBcIixvcmNoaWQ6XCJkYTcwZDZcIixwYWxlZ29sZGVucm9kOlwiZWVlOGFhXCIscGFsZWdyZWVuOlwiOThmYjk4XCIscGFsZXR1cnF1b2lzZTpcImFmZWVlZVwiLHBhbGV2aW9sZXRyZWQ6XCJkYjcwOTNcIixwYXBheWF3aGlwOlwiZmZlZmQ1XCIscGVhY2hwdWZmOlwiZmZkYWI5XCIscGVydTpcImNkODUzZlwiLHBpbms6XCJmZmMwY2JcIixwbHVtOlwiZGRhMGRkXCIscG93ZGVyYmx1ZTpcImIwZTBlNlwiLHB1cnBsZTpcIjgwMDA4MFwiLHJlYmVjY2FwdXJwbGU6XCI2NjMzOTlcIixyZWQ6XCJmMDBcIixyb3N5YnJvd246XCJiYzhmOGZcIixyb3lhbGJsdWU6XCI0MTY5ZTFcIixzYWRkbGVicm93bjpcIjhiNDUxM1wiLHNhbG1vbjpcImZhODA3MlwiLHNhbmR5YnJvd246XCJmNGE0NjBcIixzZWFncmVlbjpcIjJlOGI1N1wiLHNlYXNoZWxsOlwiZmZmNWVlXCIsc2llbm5hOlwiYTA1MjJkXCIsc2lsdmVyOlwiYzBjMGMwXCIsc2t5Ymx1ZTpcIjg3Y2VlYlwiLHNsYXRlYmx1ZTpcIjZhNWFjZFwiLHNsYXRlZ3JheTpcIjcwODA5MFwiLHNsYXRlZ3JleTpcIjcwODA5MFwiLHNub3c6XCJmZmZhZmFcIixzcHJpbmdncmVlbjpcIjAwZmY3ZlwiLHN0ZWVsYmx1ZTpcIjQ2ODJiNFwiLHRhbjpcImQyYjQ4Y1wiLHRlYWw6XCIwMDgwODBcIix0aGlzdGxlOlwiZDhiZmQ4XCIsdG9tYXRvOlwiZmY2MzQ3XCIsdHVycXVvaXNlOlwiNDBlMGQwXCIsdmlvbGV0OlwiZWU4MmVlXCIsd2hlYXQ6XCJmNWRlYjNcIix3aGl0ZTpcImZmZlwiLHdoaXRlc21va2U6XCJmNWY1ZjVcIix5ZWxsb3c6XCJmZjBcIix5ZWxsb3dncmVlbjpcIjlhY2QzMlwifSxiPXIuaGV4TmFtZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbZVtuXV09bik7cmV0dXJuIHR9KHkpO2Z1bmN0aW9uIHgoZSl7cmV0dXJuIGU9cGFyc2VGbG9hdChlKSwoaXNOYU4oZSl8fGU8MHx8ZT4xKSYmKGU9MSksZX1mdW5jdGlvbiBPKGUsdCl7KGZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiYtMSE9ZS5pbmRleE9mKFwiLlwiKSYmMT09PXBhcnNlRmxvYXQoZSl9KShlKSYmKGU9XCIxMDAlXCIpO3ZhciBuPWZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiYtMSE9ZS5pbmRleE9mKFwiJVwiKX0oZSk7cmV0dXJuIGU9TWF0aC5taW4odCxNYXRoLm1heCgwLHBhcnNlRmxvYXQoZSkpKSxuJiYoZT1wYXJzZUludChlKnQsMTApLzEwMCksTWF0aC5hYnMoZS10KTwxZS02PzE6ZSV0L3BhcnNlRmxvYXQodCl9ZnVuY3Rpb24gTChlKXtyZXR1cm4gTWF0aC5taW4oMSxNYXRoLm1heCgwLGUpKX1mdW5jdGlvbiBNKGUpe3JldHVybiBwYXJzZUludChlLDE2KX1mdW5jdGlvbiBTKGUpe3JldHVybiAxPT1lLmxlbmd0aD9cIjBcIitlOlwiXCIrZX1mdW5jdGlvbiBfKGUpe3JldHVybiBlPD0xJiYoZT0xMDAqZStcIiVcIiksZX1mdW5jdGlvbiBqKGUpe3JldHVybiBNYXRoLnJvdW5kKDI1NSpwYXJzZUZsb2F0KGUpKS50b1N0cmluZygxNil9ZnVuY3Rpb24gRShlKXtyZXR1cm4gTShlKS8yNTV9dmFyIFAsayxILFY9KGs9XCJbXFxcXHN8XFxcXChdKyhcIisoUD1cIig/OlstXFxcXCtdP1xcXFxkKlxcXFwuXFxcXGQrJT8pfCg/OlstXFxcXCtdP1xcXFxkKyU/KVwiKStcIilbLHxcXFxcc10rKFwiK1ArXCIpWyx8XFxcXHNdKyhcIitQK1wiKVxcXFxzKlxcXFwpP1wiLEg9XCJbXFxcXHN8XFxcXChdKyhcIitQK1wiKVssfFxcXFxzXSsoXCIrUCtcIilbLHxcXFxcc10rKFwiK1ArXCIpWyx8XFxcXHNdKyhcIitQK1wiKVxcXFxzKlxcXFwpP1wiLHtDU1NfVU5JVDpuZXcgUmVnRXhwKFApLHJnYjpuZXcgUmVnRXhwKFwicmdiXCIraykscmdiYTpuZXcgUmVnRXhwKFwicmdiYVwiK0gpLGhzbDpuZXcgUmVnRXhwKFwiaHNsXCIrayksaHNsYTpuZXcgUmVnRXhwKFwiaHNsYVwiK0gpLGhzdjpuZXcgUmVnRXhwKFwiaHN2XCIrayksaHN2YTpuZXcgUmVnRXhwKFwiaHN2YVwiK0gpLGhleDM6L14jPyhbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KSQvLGhleDY6L14jPyhbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KSQvLGhleDQ6L14jPyhbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkkLyxoZXg4Oi9eIz8oWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pJC99KTtmdW5jdGlvbiBSKGUpe3JldHVybiEhVi5DU1NfVU5JVC5leGVjKGUpfXJldHVybiByfSgpfX0sbz17fTtmdW5jdGlvbiBhKGUpe3ZhciB0PW9bZV07aWYodm9pZCAwIT09dClyZXR1cm4gdC5leHBvcnRzO3ZhciBuPW9bZV09e2lkOmUsZXhwb3J0czp7fX07cmV0dXJuIHJbZV0uY2FsbChuLmV4cG9ydHMsbixuLmV4cG9ydHMsYSksbi5leHBvcnRzfWEubj1lPT57dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlPygpPT5lLmRlZmF1bHQ6KCk9PmU7cmV0dXJuIGEuZCh0LHthOnR9KSx0fSxhLmQ9KGUsdCk9Pntmb3IodmFyIG4gaW4gdClhLm8odCxuKSYmIWEubyhlLG4pJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHtlbnVtZXJhYmxlOiEwLGdldDp0W25dfSl9LGEuZz1mdW5jdGlvbigpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBnbG9iYWxUaGlzKXJldHVybiBnbG9iYWxUaGlzO3RyeXtyZXR1cm4gdGhpc3x8bmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKX1jYXRjaChlKXtpZihcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93KXJldHVybiB3aW5kb3d9fSgpLGEubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCksYS5yPWU9PntcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfTt2YXIgaT1hKDM0MSksbD10O2Zvcih2YXIgYyBpbiBpKWxbY109aVtjXTtpLl9fZXNNb2R1bGUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSwxOTg6KGUsdCxuKT0+e3ZhciByPU5hTixvPVwiW29iamVjdCBTeW1ib2xdXCIsYT0vXlxccyt8XFxzKyQvZyxpPS9eWy0rXTB4WzAtOWEtZl0rJC9pLGw9L14wYlswMV0rJC9pLGM9L14wb1swLTddKyQvaSxzPXBhcnNlSW50LHU9XCJvYmplY3RcIj09dHlwZW9mIG4uZyYmbi5nJiZuLmcuT2JqZWN0PT09T2JqZWN0JiZuLmcsZD1cIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsZj11fHxkfHxGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCkscD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGg9TWF0aC5tYXgsQz1NYXRoLm1pbix2PWZ1bmN0aW9uKCl7cmV0dXJuIGYuRGF0ZS5ub3coKX07ZnVuY3Rpb24gZyhlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4hIWUmJihcIm9iamVjdFwiPT10fHxcImZ1bmN0aW9uXCI9PXQpfWZ1bmN0aW9uIG0oZSl7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoZnVuY3Rpb24oZSl7cmV0dXJuXCJzeW1ib2xcIj09dHlwZW9mIGV8fGZ1bmN0aW9uKGUpe3JldHVybiEhZSYmXCJvYmplY3RcIj09dHlwZW9mIGV9KGUpJiZwLmNhbGwoZSk9PW99KGUpKXJldHVybiByO2lmKGcoZSkpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIGUudmFsdWVPZj9lLnZhbHVlT2YoKTplO2U9Zyh0KT90K1wiXCI6dH1pZihcInN0cmluZ1wiIT10eXBlb2YgZSlyZXR1cm4gMD09PWU/ZTorZTtlPWUucmVwbGFjZShhLFwiXCIpO3ZhciBuPWwudGVzdChlKTtyZXR1cm4gbnx8Yy50ZXN0KGUpP3MoZS5zbGljZSgyKSxuPzI6OCk6aS50ZXN0KGUpP3I6K2V9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGEsaSxsLGMscz0wLHU9ITEsZD0hMSxmPSEwO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIGEgZnVuY3Rpb25cIik7ZnVuY3Rpb24gcCh0KXt2YXIgbj1yLGE9bztyZXR1cm4gcj1vPXZvaWQgMCxzPXQsaT1lLmFwcGx5KGEsbil9ZnVuY3Rpb24gdyhlKXt2YXIgbj1lLWM7cmV0dXJuIHZvaWQgMD09PWN8fG4+PXR8fG48MHx8ZCYmZS1zPj1hfWZ1bmN0aW9uIHkoKXt2YXIgZT12KCk7aWYodyhlKSlyZXR1cm4gYihlKTtsPXNldFRpbWVvdXQoeSxmdW5jdGlvbihlKXt2YXIgbj10LShlLWMpO3JldHVybiBkP0MobixhLShlLXMpKTpufShlKSl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gbD12b2lkIDAsZiYmcj9wKGUpOihyPW89dm9pZCAwLGkpfWZ1bmN0aW9uIHgoKXt2YXIgZT12KCksbj13KGUpO2lmKHI9YXJndW1lbnRzLG89dGhpcyxjPWUsbil7aWYodm9pZCAwPT09bClyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHM9ZSxsPXNldFRpbWVvdXQoeSx0KSx1P3AoZSk6aX0oYyk7aWYoZClyZXR1cm4gbD1zZXRUaW1lb3V0KHksdCkscChjKX1yZXR1cm4gdm9pZCAwPT09bCYmKGw9c2V0VGltZW91dCh5LHQpKSxpfXJldHVybiB0PW0odCl8fDAsZyhuKSYmKHU9ISFuLmxlYWRpbmcsYT0oZD1cIm1heFdhaXRcImluIG4pP2gobShuLm1heFdhaXQpfHwwLHQpOmEsZj1cInRyYWlsaW5nXCJpbiBuPyEhbi50cmFpbGluZzpmKSx4LmNhbmNlbD1mdW5jdGlvbigpe3ZvaWQgMCE9PWwmJmNsZWFyVGltZW91dChsKSxzPTAscj1jPW89bD12b2lkIDB9LHguZmx1c2g9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09bD9pOmIodigpKX0seH19LDUyNTplPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscj1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO2UuZXhwb3J0cz1mdW5jdGlvbigpe3RyeXtpZighT2JqZWN0LmFzc2lnbilyZXR1cm4hMTt2YXIgZT1uZXcgU3RyaW5nKFwiYWJjXCIpO2lmKGVbNV09XCJkZVwiLFwiNVwiPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSlbMF0pcmV0dXJuITE7Zm9yKHZhciB0PXt9LG49MDtuPDEwO24rKyl0W1wiX1wiK1N0cmluZy5mcm9tQ2hhckNvZGUobildPW47aWYoXCIwMTIzNDU2Nzg5XCIhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkpLmpvaW4oXCJcIikpcmV0dXJuITE7dmFyIHI9e307cmV0dXJuXCJhYmNkZWZnaGlqa2xtbm9wcXJzdFwiLnNwbGl0KFwiXCIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JbZV09ZX0pKSxcImFiY2RlZmdoaWprbG1ub3BxcnN0XCI9PT1PYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LHIpKS5qb2luKFwiXCIpfWNhdGNoKGUpe3JldHVybiExfX0oKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGUsbyl7Zm9yKHZhciBhLGksbD1mdW5jdGlvbihlKXtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4gT2JqZWN0KGUpfShlKSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7Zm9yKHZhciBzIGluIGE9T2JqZWN0KGFyZ3VtZW50c1tjXSkpbi5jYWxsKGEscykmJihsW3NdPWFbc10pO2lmKHQpe2k9dChhKTtmb3IodmFyIHU9MDt1PGkubGVuZ3RoO3UrKylyLmNhbGwoYSxpW3VdKSYmKGxbaVt1XV09YVtpW3VdXSl9fXJldHVybiBsfX0sNzAyOihlLHQpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG49XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLHI9bj9TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKTo2MDEwMyxvPW4/U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKTo2MDEwNixhPW4/U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpOjYwMTA3LGk9bj9TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIik6NjAxMDgsbD1uP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKTo2MDExNCxjPW4/U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpOjYwMTA5LHM9bj9TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKTo2MDExMCx1PW4/U3ltYm9sLmZvcihcInJlYWN0LmFzeW5jX21vZGVcIik6NjAxMTEsZD1uP1N5bWJvbC5mb3IoXCJyZWFjdC5jb25jdXJyZW50X21vZGVcIik6NjAxMTEsZj1uP1N5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKTo2MDExMixwPW4/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpOjYwMTEzLGg9bj9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKTo2MDEyMCxDPW4/U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIik6NjAxMTUsdj1uP1N5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpOjYwMTE2LGc9bj9TeW1ib2wuZm9yKFwicmVhY3QuYmxvY2tcIik6NjAxMjEsbT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5mdW5kYW1lbnRhbFwiKTo2MDExNyx3PW4/U3ltYm9sLmZvcihcInJlYWN0LnJlc3BvbmRlclwiKTo2MDExOCx5PW4/U3ltYm9sLmZvcihcInJlYWN0LnNjb3BlXCIpOjYwMTE5O2Z1bmN0aW9uIGIoZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lKXt2YXIgdD1lLiQkdHlwZW9mO3N3aXRjaCh0KXtjYXNlIHI6c3dpdGNoKGU9ZS50eXBlKXtjYXNlIHU6Y2FzZSBkOmNhc2UgYTpjYXNlIGw6Y2FzZSBpOmNhc2UgcDpyZXR1cm4gZTtkZWZhdWx0OnN3aXRjaChlPWUmJmUuJCR0eXBlb2Ype2Nhc2UgczpjYXNlIGY6Y2FzZSB2OmNhc2UgQzpjYXNlIGM6cmV0dXJuIGU7ZGVmYXVsdDpyZXR1cm4gdH19Y2FzZSBvOnJldHVybiB0fX19ZnVuY3Rpb24geChlKXtyZXR1cm4gYihlKT09PWR9dC5Gb3J3YXJkUmVmPWYsdC5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwiZnVuY3Rpb25cIj09dHlwZW9mIGV8fGU9PT1hfHxlPT09ZHx8ZT09PWx8fGU9PT1pfHxlPT09cHx8ZT09PWh8fFwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmKGUuJCR0eXBlb2Y9PT12fHxlLiQkdHlwZW9mPT09Q3x8ZS4kJHR5cGVvZj09PWN8fGUuJCR0eXBlb2Y9PT1zfHxlLiQkdHlwZW9mPT09Znx8ZS4kJHR5cGVvZj09PW18fGUuJCR0eXBlb2Y9PT13fHxlLiQkdHlwZW9mPT09eXx8ZS4kJHR5cGVvZj09PWcpfX0sMTg1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9big3MDIpfSw1MzU6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByPW4oNTI1KSxvPTYwMTAzLGE9NjAxMDY7dC5GcmFnbWVudD02MDEwNyx0LlN0cmljdE1vZGU9NjAxMDgsdC5Qcm9maWxlcj02MDExNDt2YXIgaT02MDEwOSxsPTYwMTEwLGM9NjAxMTI7dC5TdXNwZW5zZT02MDExMzt2YXIgcz02MDExNSx1PTYwMTE2O2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcil7dmFyIGQ9U3ltYm9sLmZvcjtvPWQoXCJyZWFjdC5lbGVtZW50XCIpLGE9ZChcInJlYWN0LnBvcnRhbFwiKSx0LkZyYWdtZW50PWQoXCJyZWFjdC5mcmFnbWVudFwiKSx0LlN0cmljdE1vZGU9ZChcInJlYWN0LnN0cmljdF9tb2RlXCIpLHQuUHJvZmlsZXI9ZChcInJlYWN0LnByb2ZpbGVyXCIpLGk9ZChcInJlYWN0LnByb3ZpZGVyXCIpLGw9ZChcInJlYWN0LmNvbnRleHRcIiksYz1kKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksdC5TdXNwZW5zZT1kKFwicmVhY3Quc3VzcGVuc2VcIikscz1kKFwicmVhY3QubWVtb1wiKSx1PWQoXCJyZWFjdC5sYXp5XCIpfXZhciBmPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIHAoZSl7Zm9yKHZhciB0PVwiaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9XCIrZSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0Kz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tuXSk7cmV0dXJuXCJNaW5pZmllZCBSZWFjdCBlcnJvciAjXCIrZStcIjsgdmlzaXQgXCIrdCtcIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuXCJ9dmFyIGg9e2lzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiExfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbigpe319LEM9e307ZnVuY3Rpb24gdihlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1DLHRoaXMudXBkYXRlcj1ufHxofWZ1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gbShlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1DLHRoaXMudXBkYXRlcj1ufHxofXYucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e30sdi5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXtpZihcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmbnVsbCE9ZSl0aHJvdyBFcnJvcihwKDg1KSk7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGUsdCxcInNldFN0YXRlXCIpfSx2LnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsZSxcImZvcmNlVXBkYXRlXCIpfSxnLnByb3RvdHlwZT12LnByb3RvdHlwZTt2YXIgdz1tLnByb3RvdHlwZT1uZXcgZzt3LmNvbnN0cnVjdG9yPW0scih3LHYucHJvdG90eXBlKSx3LmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwO3ZhciB5PXtjdXJyZW50Om51bGx9LGI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSx4PXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07ZnVuY3Rpb24gTyhlLHQsbil7dmFyIHIsYT17fSxpPW51bGwsbD1udWxsO2lmKG51bGwhPXQpZm9yKHIgaW4gdm9pZCAwIT09dC5yZWYmJihsPXQucmVmKSx2b2lkIDAhPT10LmtleSYmKGk9XCJcIit0LmtleSksdCliLmNhbGwodCxyKSYmIXguaGFzT3duUHJvcGVydHkocikmJihhW3JdPXRbcl0pO3ZhciBjPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09YylhLmNoaWxkcmVuPW47ZWxzZSBpZigxPGMpe2Zvcih2YXIgcz1BcnJheShjKSx1PTA7dTxjO3UrKylzW3VdPWFyZ3VtZW50c1t1KzJdO2EuY2hpbGRyZW49c31pZihlJiZlLmRlZmF1bHRQcm9wcylmb3IociBpbiBjPWUuZGVmYXVsdFByb3BzKXZvaWQgMD09PWFbcl0mJihhW3JdPWNbcl0pO3JldHVybnskJHR5cGVvZjpvLHR5cGU6ZSxrZXk6aSxyZWY6bCxwcm9wczphLF9vd25lcjp5LmN1cnJlbnR9fWZ1bmN0aW9uIEwoZSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09b312YXIgTT0vXFwvKy9nO2Z1bmN0aW9uIFMoZSx0KXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUmJm51bGwhPWUua2V5P2Z1bmN0aW9uKGUpe3ZhciB0PXtcIj1cIjpcIj0wXCIsXCI6XCI6XCI9MlwifTtyZXR1cm5cIiRcIitlLnJlcGxhY2UoL1s9Ol0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSl9KFwiXCIrZS5rZXkpOnQudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIF8oZSx0LG4scixpKXt2YXIgbD10eXBlb2YgZTtcInVuZGVmaW5lZFwiIT09bCYmXCJib29sZWFuXCIhPT1sfHwoZT1udWxsKTt2YXIgYz0hMTtpZihudWxsPT09ZSljPSEwO2Vsc2Ugc3dpdGNoKGwpe2Nhc2VcInN0cmluZ1wiOmNhc2VcIm51bWJlclwiOmM9ITA7YnJlYWs7Y2FzZVwib2JqZWN0XCI6c3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgbzpjYXNlIGE6Yz0hMH19aWYoYylyZXR1cm4gaT1pKGM9ZSksZT1cIlwiPT09cj9cIi5cIitTKGMsMCk6cixBcnJheS5pc0FycmF5KGkpPyhuPVwiXCIsbnVsbCE9ZSYmKG49ZS5yZXBsYWNlKE0sXCIkJi9cIikrXCIvXCIpLF8oaSx0LG4sXCJcIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSkpOm51bGwhPWkmJihMKGkpJiYoaT1mdW5jdGlvbihlLHQpe3JldHVybnskJHR5cGVvZjpvLHR5cGU6ZS50eXBlLGtleTp0LHJlZjplLnJlZixwcm9wczplLnByb3BzLF9vd25lcjplLl9vd25lcn19KGksbisoIWkua2V5fHxjJiZjLmtleT09PWkua2V5P1wiXCI6KFwiXCIraS5rZXkpLnJlcGxhY2UoTSxcIiQmL1wiKStcIi9cIikrZSkpLHQucHVzaChpKSksMTtpZihjPTAscj1cIlwiPT09cj9cIi5cIjpyK1wiOlwiLEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBzPTA7czxlLmxlbmd0aDtzKyspe3ZhciB1PXIrUyhsPWVbc10scyk7Yys9XyhsLHQsbix1LGkpfWVsc2UgaWYodT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlP251bGw6XCJmdW5jdGlvblwiPT10eXBlb2YoZT1mJiZlW2ZdfHxlW1wiQEBpdGVyYXRvclwiXSk/ZTpudWxsfShlKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB1KWZvcihlPXUuY2FsbChlKSxzPTA7IShsPWUubmV4dCgpKS5kb25lOyljKz1fKGw9bC52YWx1ZSx0LG4sdT1yK1MobCxzKyspLGkpO2Vsc2UgaWYoXCJvYmplY3RcIj09PWwpdGhyb3cgdD1cIlwiK2UsRXJyb3IocCgzMSxcIltvYmplY3QgT2JqZWN0XVwiPT09dD9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKGUpLmpvaW4oXCIsIFwiKStcIn1cIjp0KSk7cmV0dXJuIGN9ZnVuY3Rpb24gaihlLHQsbil7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgcj1bXSxvPTA7cmV0dXJuIF8oZSxyLFwiXCIsXCJcIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHQuY2FsbChuLGUsbysrKX0pKSxyfWZ1bmN0aW9uIEUoZSl7aWYoLTE9PT1lLl9zdGF0dXMpe3ZhciB0PWUuX3Jlc3VsdDt0PXQoKSxlLl9zdGF0dXM9MCxlLl9yZXN1bHQ9dCx0LnRoZW4oKGZ1bmN0aW9uKHQpezA9PT1lLl9zdGF0dXMmJih0PXQuZGVmYXVsdCxlLl9zdGF0dXM9MSxlLl9yZXN1bHQ9dCl9KSwoZnVuY3Rpb24odCl7MD09PWUuX3N0YXR1cyYmKGUuX3N0YXR1cz0yLGUuX3Jlc3VsdD10KX0pKX1pZigxPT09ZS5fc3RhdHVzKXJldHVybiBlLl9yZXN1bHQ7dGhyb3cgZS5fcmVzdWx0fXZhciBQPXtjdXJyZW50Om51bGx9O2Z1bmN0aW9uIGsoKXt2YXIgZT1QLmN1cnJlbnQ7aWYobnVsbD09PWUpdGhyb3cgRXJyb3IocCgzMjEpKTtyZXR1cm4gZX12YXIgSD17UmVhY3RDdXJyZW50RGlzcGF0Y2hlcjpQLFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnOnt0cmFuc2l0aW9uOjB9LFJlYWN0Q3VycmVudE93bmVyOnksSXNTb21lUmVuZGVyZXJBY3Rpbmc6e2N1cnJlbnQ6ITF9LGFzc2lnbjpyfTt0LkNoaWxkcmVuPXttYXA6aixmb3JFYWNoOmZ1bmN0aW9uKGUsdCxuKXtqKGUsKGZ1bmN0aW9uKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxuKX0sY291bnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9MDtyZXR1cm4gaihlLChmdW5jdGlvbigpe3QrK30pKSx0fSx0b0FycmF5OmZ1bmN0aW9uKGUpe3JldHVybiBqKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpfHxbXX0sb25seTpmdW5jdGlvbihlKXtpZighTChlKSl0aHJvdyBFcnJvcihwKDE0MykpO3JldHVybiBlfX0sdC5Db21wb25lbnQ9dix0LlB1cmVDb21wb25lbnQ9bSx0Ll9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPUgsdC5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0LG4pe2lmKG51bGw9PWUpdGhyb3cgRXJyb3IocCgyNjcsZSkpO3ZhciBhPXIoe30sZS5wcm9wcyksaT1lLmtleSxsPWUucmVmLGM9ZS5fb3duZXI7aWYobnVsbCE9dCl7aWYodm9pZCAwIT09dC5yZWYmJihsPXQucmVmLGM9eS5jdXJyZW50KSx2b2lkIDAhPT10LmtleSYmKGk9XCJcIit0LmtleSksZS50eXBlJiZlLnR5cGUuZGVmYXVsdFByb3BzKXZhciBzPWUudHlwZS5kZWZhdWx0UHJvcHM7Zm9yKHUgaW4gdCliLmNhbGwodCx1KSYmIXguaGFzT3duUHJvcGVydHkodSkmJihhW3VdPXZvaWQgMD09PXRbdV0mJnZvaWQgMCE9PXM/c1t1XTp0W3VdKX12YXIgdT1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PXUpYS5jaGlsZHJlbj1uO2Vsc2UgaWYoMTx1KXtzPUFycmF5KHUpO2Zvcih2YXIgZD0wO2Q8dTtkKyspc1tkXT1hcmd1bWVudHNbZCsyXTthLmNoaWxkcmVuPXN9cmV0dXJueyQkdHlwZW9mOm8sdHlwZTplLnR5cGUsa2V5OmkscmVmOmwscHJvcHM6YSxfb3duZXI6Y319LHQuY3JlYXRlQ29udGV4dD1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1udWxsKSwoZT17JCR0eXBlb2Y6bCxfY2FsY3VsYXRlQ2hhbmdlZEJpdHM6dCxfY3VycmVudFZhbHVlOmUsX2N1cnJlbnRWYWx1ZTI6ZSxfdGhyZWFkQ291bnQ6MCxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGx9KS5Qcm92aWRlcj17JCR0eXBlb2Y6aSxfY29udGV4dDplfSxlLkNvbnN1bWVyPWV9LHQuY3JlYXRlRWxlbWVudD1PLHQuY3JlYXRlRmFjdG9yeT1mdW5jdGlvbihlKXt2YXIgdD1PLmJpbmQobnVsbCxlKTtyZXR1cm4gdC50eXBlPWUsdH0sdC5jcmVhdGVSZWY9ZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDpudWxsfX0sdC5mb3J3YXJkUmVmPWZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpjLHJlbmRlcjplfX0sdC5pc1ZhbGlkRWxlbWVudD1MLHQubGF6eT1mdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6dSxfcGF5bG9hZDp7X3N0YXR1czotMSxfcmVzdWx0OmV9LF9pbml0OkV9fSx0Lm1lbW89ZnVuY3Rpb24oZSx0KXtyZXR1cm57JCR0eXBlb2Y6cyx0eXBlOmUsY29tcGFyZTp2b2lkIDA9PT10P251bGw6dH19LHQudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaygpLnVzZUNhbGxiYWNrKGUsdCl9LHQudXNlQ29udGV4dD1mdW5jdGlvbihlLHQpe3JldHVybiBrKCkudXNlQ29udGV4dChlLHQpfSx0LnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9LHQudXNlRWZmZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGsoKS51c2VFZmZlY3QoZSx0KX0sdC51c2VJbXBlcmF0aXZlSGFuZGxlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaygpLnVzZUltcGVyYXRpdmVIYW5kbGUoZSx0LG4pfSx0LnVzZUxheW91dEVmZmVjdD1mdW5jdGlvbihlLHQpe3JldHVybiBrKCkudXNlTGF5b3V0RWZmZWN0KGUsdCl9LHQudXNlTWVtbz1mdW5jdGlvbihlLHQpe3JldHVybiBrKCkudXNlTWVtbyhlLHQpfSx0LnVzZVJlZHVjZXI9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBrKCkudXNlUmVkdWNlcihlLHQsbil9LHQudXNlUmVmPWZ1bmN0aW9uKGUpe3JldHVybiBrKCkudXNlUmVmKGUpfSx0LnVzZVN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBrKCkudXNlU3RhdGUoZSl9LHQudmVyc2lvbj1cIjE3LjAuMlwifSwzNzg6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uKDUzNSl9LDkyMTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLG4uZCh0LHtTZXJ2ZXJTdHlsZVNoZWV0OigpPT5wdCxTdHlsZVNoZWV0Q29uc3VtZXI6KCk9PkN0LFN0eWxlU2hlZXRDb250ZXh0OigpPT5odCxTdHlsZVNoZWV0TWFuYWdlcjooKT0+dnQsVGhlbWVDb25zdW1lcjooKT0+ZHQsVGhlbWVDb250ZXh0OigpPT51dCxUaGVtZVByb3ZpZGVyOigpPT5mdCxfX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfSEFVTlRFRF9CWV9TUE9PS1lfR0hPU1RTOigpPT5TdCxjcmVhdGVHbG9iYWxTdHlsZTooKT0+eHQsY3NzOigpPT5BZSxkZWZhdWx0OigpPT5fdCxpc1N0eWxlZENvbXBvbmVudDooKT0+RixrZXlmcmFtZXM6KCk9Pkx0LHdpdGhUaGVtZTooKT0+TXR9KTt2YXIgcj1uKDk0Niksbz1uLm4ociksYT1uKDI0NiksaT1uLm4oYSksbD1uKDM3OCk7Y29uc3QgYz17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6MSxib3JkZXJJbWFnZU91dHNldDoxLGJvcmRlckltYWdlU2xpY2U6MSxib3JkZXJJbWFnZVdpZHRoOjEsYm94RmxleDoxLGJveEZsZXhHcm91cDoxLGJveE9yZGluYWxHcm91cDoxLGNvbHVtbkNvdW50OjEsY29sdW1uczoxLGZsZXg6MSxmbGV4R3JvdzoxLGZsZXhQb3NpdGl2ZToxLGZsZXhTaHJpbms6MSxmbGV4TmVnYXRpdmU6MSxmbGV4T3JkZXI6MSxncmlkUm93OjEsZ3JpZFJvd0VuZDoxLGdyaWRSb3dTcGFuOjEsZ3JpZFJvd1N0YXJ0OjEsZ3JpZENvbHVtbjoxLGdyaWRDb2x1bW5FbmQ6MSxncmlkQ29sdW1uU3BhbjoxLGdyaWRDb2x1bW5TdGFydDoxLG1zR3JpZFJvdzoxLG1zR3JpZFJvd1NwYW46MSxtc0dyaWRDb2x1bW46MSxtc0dyaWRDb2x1bW5TcGFuOjEsZm9udFdlaWdodDoxLGxpbmVIZWlnaHQ6MSxvcGFjaXR5OjEsb3JkZXI6MSxvcnBoYW5zOjEsdGFiU2l6ZToxLHdpZG93czoxLHpJbmRleDoxLHpvb206MSxXZWJraXRMaW5lQ2xhbXA6MSxmaWxsT3BhY2l0eToxLGZsb29kT3BhY2l0eToxLHN0b3BPcGFjaXR5OjEsc3Ryb2tlRGFzaGFycmF5OjEsc3Ryb2tlRGFzaG9mZnNldDoxLHN0cm9rZU1pdGVybGltaXQ6MSxzdHJva2VPcGFjaXR5OjEsc3Ryb2tlV2lkdGg6MX07dmFyIHM9bigxODUpLHU9TnVtYmVyLmlzTmFOfHxmdW5jdGlvbihlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZSYmZSE9ZX07ZnVuY3Rpb24gZChlLHQpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaWYocj1lW25dLG89dFtuXSwhKHI9PT1vfHx1KHIpJiZ1KG8pKSlyZXR1cm4hMTt2YXIgcixvO3JldHVybiEwfWNvbnN0IGY9ZnVuY3Rpb24oZSx0KXt2YXIgbjt2b2lkIDA9PT10JiYodD1kKTt2YXIgcixvPVtdLGE9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBpPVtdLGw9MDtsPGFyZ3VtZW50cy5sZW5ndGg7bCsrKWlbbF09YXJndW1lbnRzW2xdO3JldHVybiBhJiZuPT09dGhpcyYmdChpLG8pfHwocj1lLmFwcGx5KHRoaXMsaSksYT0hMCxuPXRoaXMsbz1pKSxyfX07dmFyIHA9L14oKGNoaWxkcmVufGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MfGtleXxyZWZ8YXV0b0ZvY3VzfGRlZmF1bHRWYWx1ZXxkZWZhdWx0Q2hlY2tlZHxpbm5lckhUTUx8c3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nfHN1cHByZXNzSHlkcmF0aW9uV2FybmluZ3x2YWx1ZUxpbmt8YWNjZXB0fGFjY2VwdENoYXJzZXR8YWNjZXNzS2V5fGFjdGlvbnxhbGxvd3xhbGxvd1VzZXJNZWRpYXxhbGxvd1BheW1lbnRSZXF1ZXN0fGFsbG93RnVsbFNjcmVlbnxhbGxvd1RyYW5zcGFyZW5jeXxhbHR8YXN5bmN8YXV0b0NvbXBsZXRlfGF1dG9QbGF5fGNhcHR1cmV8Y2VsbFBhZGRpbmd8Y2VsbFNwYWNpbmd8Y2hhbGxlbmdlfGNoYXJTZXR8Y2hlY2tlZHxjaXRlfGNsYXNzSUR8Y2xhc3NOYW1lfGNvbHN8Y29sU3Bhbnxjb250ZW50fGNvbnRlbnRFZGl0YWJsZXxjb250ZXh0TWVudXxjb250cm9sc3xjb250cm9sc0xpc3R8Y29vcmRzfGNyb3NzT3JpZ2lufGRhdGF8ZGF0ZVRpbWV8ZGVjb2Rpbmd8ZGVmYXVsdHxkZWZlcnxkaXJ8ZGlzYWJsZWR8ZGlzYWJsZVBpY3R1cmVJblBpY3R1cmV8ZG93bmxvYWR8ZHJhZ2dhYmxlfGVuY1R5cGV8Zm9ybXxmb3JtQWN0aW9ufGZvcm1FbmNUeXBlfGZvcm1NZXRob2R8Zm9ybU5vVmFsaWRhdGV8Zm9ybVRhcmdldHxmcmFtZUJvcmRlcnxoZWFkZXJzfGhlaWdodHxoaWRkZW58aGlnaHxocmVmfGhyZWZMYW5nfGh0bWxGb3J8aHR0cEVxdWl2fGlkfGlucHV0TW9kZXxpbnRlZ3JpdHl8aXN8a2V5UGFyYW1zfGtleVR5cGV8a2luZHxsYWJlbHxsYW5nfGxpc3R8bG9hZGluZ3xsb29wfGxvd3xtYXJnaW5IZWlnaHR8bWFyZ2luV2lkdGh8bWF4fG1heExlbmd0aHxtZWRpYXxtZWRpYUdyb3VwfG1ldGhvZHxtaW58bWluTGVuZ3RofG11bHRpcGxlfG11dGVkfG5hbWV8bm9uY2V8bm9WYWxpZGF0ZXxvcGVufG9wdGltdW18cGF0dGVybnxwbGFjZWhvbGRlcnxwbGF5c0lubGluZXxwb3N0ZXJ8cHJlbG9hZHxwcm9maWxlfHJhZGlvR3JvdXB8cmVhZE9ubHl8cmVmZXJyZXJQb2xpY3l8cmVsfHJlcXVpcmVkfHJldmVyc2VkfHJvbGV8cm93c3xyb3dTcGFufHNhbmRib3h8c2NvcGV8c2NvcGVkfHNjcm9sbGluZ3xzZWFtbGVzc3xzZWxlY3RlZHxzaGFwZXxzaXplfHNpemVzfHNsb3R8c3BhbnxzcGVsbENoZWNrfHNyY3xzcmNEb2N8c3JjTGFuZ3xzcmNTZXR8c3RhcnR8c3RlcHxzdHlsZXxzdW1tYXJ5fHRhYkluZGV4fHRhcmdldHx0aXRsZXx0eXBlfHVzZU1hcHx2YWx1ZXx3aWR0aHx3bW9kZXx3cmFwfGFib3V0fGRhdGF0eXBlfGlubGlzdHxwcmVmaXh8cHJvcGVydHl8cmVzb3VyY2V8dHlwZW9mfHZvY2FifGF1dG9DYXBpdGFsaXplfGF1dG9Db3JyZWN0fGF1dG9TYXZlfGNvbG9yfGluZXJ0fGl0ZW1Qcm9wfGl0ZW1TY29wZXxpdGVtVHlwZXxpdGVtSUR8aXRlbVJlZnxvbnxyZXN1bHRzfHNlY3VyaXR5fHVuc2VsZWN0YWJsZXxhY2NlbnRIZWlnaHR8YWNjdW11bGF0ZXxhZGRpdGl2ZXxhbGlnbm1lbnRCYXNlbGluZXxhbGxvd1Jlb3JkZXJ8YWxwaGFiZXRpY3xhbXBsaXR1ZGV8YXJhYmljRm9ybXxhc2NlbnR8YXR0cmlidXRlTmFtZXxhdHRyaWJ1dGVUeXBlfGF1dG9SZXZlcnNlfGF6aW11dGh8YmFzZUZyZXF1ZW5jeXxiYXNlbGluZVNoaWZ0fGJhc2VQcm9maWxlfGJib3h8YmVnaW58Ymlhc3xieXxjYWxjTW9kZXxjYXBIZWlnaHR8Y2xpcHxjbGlwUGF0aFVuaXRzfGNsaXBQYXRofGNsaXBSdWxlfGNvbG9ySW50ZXJwb2xhdGlvbnxjb2xvckludGVycG9sYXRpb25GaWx0ZXJzfGNvbG9yUHJvZmlsZXxjb2xvclJlbmRlcmluZ3xjb250ZW50U2NyaXB0VHlwZXxjb250ZW50U3R5bGVUeXBlfGN1cnNvcnxjeHxjeXxkfGRlY2VsZXJhdGV8ZGVzY2VudHxkaWZmdXNlQ29uc3RhbnR8ZGlyZWN0aW9ufGRpc3BsYXl8ZGl2aXNvcnxkb21pbmFudEJhc2VsaW5lfGR1cnxkeHxkeXxlZGdlTW9kZXxlbGV2YXRpb258ZW5hYmxlQmFja2dyb3VuZHxlbmR8ZXhwb25lbnR8ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZHxmaWxsfGZpbGxPcGFjaXR5fGZpbGxSdWxlfGZpbHRlcnxmaWx0ZXJSZXN8ZmlsdGVyVW5pdHN8Zmxvb2RDb2xvcnxmbG9vZE9wYWNpdHl8Zm9jdXNhYmxlfGZvbnRGYW1pbHl8Zm9udFNpemV8Zm9udFNpemVBZGp1c3R8Zm9udFN0cmV0Y2h8Zm9udFN0eWxlfGZvbnRWYXJpYW50fGZvbnRXZWlnaHR8Zm9ybWF0fGZyb218ZnJ8Znh8Znl8ZzF8ZzJ8Z2x5cGhOYW1lfGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsfGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbHxnbHlwaFJlZnxncmFkaWVudFRyYW5zZm9ybXxncmFkaWVudFVuaXRzfGhhbmdpbmd8aG9yaXpBZHZYfGhvcml6T3JpZ2luWHxpZGVvZ3JhcGhpY3xpbWFnZVJlbmRlcmluZ3xpbnxpbjJ8aW50ZXJjZXB0fGt8azF8azJ8azN8azR8a2VybmVsTWF0cml4fGtlcm5lbFVuaXRMZW5ndGh8a2VybmluZ3xrZXlQb2ludHN8a2V5U3BsaW5lc3xrZXlUaW1lc3xsZW5ndGhBZGp1c3R8bGV0dGVyU3BhY2luZ3xsaWdodGluZ0NvbG9yfGxpbWl0aW5nQ29uZUFuZ2xlfGxvY2FsfG1hcmtlckVuZHxtYXJrZXJNaWR8bWFya2VyU3RhcnR8bWFya2VySGVpZ2h0fG1hcmtlclVuaXRzfG1hcmtlcldpZHRofG1hc2t8bWFza0NvbnRlbnRVbml0c3xtYXNrVW5pdHN8bWF0aGVtYXRpY2FsfG1vZGV8bnVtT2N0YXZlc3xvZmZzZXR8b3BhY2l0eXxvcGVyYXRvcnxvcmRlcnxvcmllbnR8b3JpZW50YXRpb258b3JpZ2lufG92ZXJmbG93fG92ZXJsaW5lUG9zaXRpb258b3ZlcmxpbmVUaGlja25lc3N8cGFub3NlMXxwYWludE9yZGVyfHBhdGhMZW5ndGh8cGF0dGVybkNvbnRlbnRVbml0c3xwYXR0ZXJuVHJhbnNmb3JtfHBhdHRlcm5Vbml0c3xwb2ludGVyRXZlbnRzfHBvaW50c3xwb2ludHNBdFh8cG9pbnRzQXRZfHBvaW50c0F0WnxwcmVzZXJ2ZUFscGhhfHByZXNlcnZlQXNwZWN0UmF0aW98cHJpbWl0aXZlVW5pdHN8cnxyYWRpdXN8cmVmWHxyZWZZfHJlbmRlcmluZ0ludGVudHxyZXBlYXRDb3VudHxyZXBlYXREdXJ8cmVxdWlyZWRFeHRlbnNpb25zfHJlcXVpcmVkRmVhdHVyZXN8cmVzdGFydHxyZXN1bHR8cm90YXRlfHJ4fHJ5fHNjYWxlfHNlZWR8c2hhcGVSZW5kZXJpbmd8c2xvcGV8c3BhY2luZ3xzcGVjdWxhckNvbnN0YW50fHNwZWN1bGFyRXhwb25lbnR8c3BlZWR8c3ByZWFkTWV0aG9kfHN0YXJ0T2Zmc2V0fHN0ZERldmlhdGlvbnxzdGVtaHxzdGVtdnxzdGl0Y2hUaWxlc3xzdG9wQ29sb3J8c3RvcE9wYWNpdHl8c3RyaWtldGhyb3VnaFBvc2l0aW9ufHN0cmlrZXRocm91Z2hUaGlja25lc3N8c3RyaW5nfHN0cm9rZXxzdHJva2VEYXNoYXJyYXl8c3Ryb2tlRGFzaG9mZnNldHxzdHJva2VMaW5lY2FwfHN0cm9rZUxpbmVqb2lufHN0cm9rZU1pdGVybGltaXR8c3Ryb2tlT3BhY2l0eXxzdHJva2VXaWR0aHxzdXJmYWNlU2NhbGV8c3lzdGVtTGFuZ3VhZ2V8dGFibGVWYWx1ZXN8dGFyZ2V0WHx0YXJnZXRZfHRleHRBbmNob3J8dGV4dERlY29yYXRpb258dGV4dFJlbmRlcmluZ3x0ZXh0TGVuZ3RofHRvfHRyYW5zZm9ybXx1MXx1Mnx1bmRlcmxpbmVQb3NpdGlvbnx1bmRlcmxpbmVUaGlja25lc3N8dW5pY29kZXx1bmljb2RlQmlkaXx1bmljb2RlUmFuZ2V8dW5pdHNQZXJFbXx2QWxwaGFiZXRpY3x2SGFuZ2luZ3x2SWRlb2dyYXBoaWN8dk1hdGhlbWF0aWNhbHx2YWx1ZXN8dmVjdG9yRWZmZWN0fHZlcnNpb258dmVydEFkdll8dmVydE9yaWdpblh8dmVydE9yaWdpbll8dmlld0JveHx2aWV3VGFyZ2V0fHZpc2liaWxpdHl8d2lkdGhzfHdvcmRTcGFjaW5nfHdyaXRpbmdNb2RlfHh8eEhlaWdodHx4MXx4Mnx4Q2hhbm5lbFNlbGVjdG9yfHhsaW5rQWN0dWF0ZXx4bGlua0FyY3JvbGV8eGxpbmtIcmVmfHhsaW5rUm9sZXx4bGlua1Nob3d8eGxpbmtUaXRsZXx4bGlua1R5cGV8eG1sQmFzZXx4bWxuc3x4bWxuc1hsaW5rfHhtbExhbmd8eG1sU3BhY2V8eXx5MXx5Mnx5Q2hhbm5lbFNlbGVjdG9yfHp8em9vbUFuZFBhbnxmb3J8Y2xhc3N8YXV0b2ZvY3VzKXwoKFtEZF1bQWFdW1R0XVtBYV18W0FhXVtScl1bSWldW0FhXXx4KS0uKikpJC87Y29uc3QgaD1mdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHZvaWQgMD09PXRbbl0mJih0W25dPWUobikpLHRbbl19fSgoZnVuY3Rpb24oZSl7cmV0dXJuIHAudGVzdChlKXx8MTExPT09ZS5jaGFyQ29kZUF0KDApJiYxMTA9PT1lLmNoYXJDb2RlQXQoMSkmJmUuY2hhckNvZGVBdCgyKTw5MX0pKTtmdW5jdGlvbiBDKGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSl9ZnVuY3Rpb24gdihlKXtyZXR1cm5cIlVuZGVmaW5lZFwiPT09QyhlKX1mdW5jdGlvbiBnKGUpe3JldHVyblwiTnVsbFwiPT09QyhlKX1mdW5jdGlvbiBtKGUpe3JldHVyblwiT2JqZWN0XCI9PT1DKGUpJiYoZS5jb25zdHJ1Y3Rvcj09PU9iamVjdCYmT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09T2JqZWN0LnByb3RvdHlwZSl9ZnVuY3Rpb24gdyhlKXtyZXR1cm5cIkFycmF5XCI9PT1DKGUpfWZ1bmN0aW9uIHkoZSl7cmV0dXJuXCJTeW1ib2xcIj09PUMoZSl9dmFyIGIseCxPLEwsTTtiPWcseD12O2Z1bmN0aW9uIFMoKXtmb3IodmFyIGU9MCx0PTAsbj1hcmd1bWVudHMubGVuZ3RoO3Q8bjt0KyspZSs9YXJndW1lbnRzW3RdLmxlbmd0aDt2YXIgcj1BcnJheShlKSxvPTA7Zm9yKHQ9MDt0PG47dCsrKWZvcih2YXIgYT1hcmd1bWVudHNbdF0saT0wLGw9YS5sZW5ndGg7aTxsO2krKyxvKyspcltvXT1hW2ldO3JldHVybiByfWZ1bmN0aW9uIF8oZSx0LG4scil7dmFyIG89ci5wcm9wZXJ0eUlzRW51bWVyYWJsZSh0KT9cImVudW1lcmFibGVcIjpcIm5vbmVudW1lcmFibGVcIjtcImVudW1lcmFibGVcIj09PW8mJihlW3RdPW4pLFwibm9uZW51bWVyYWJsZVwiPT09byYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIGooZSx0LG4pe2lmKCFtKHQpKXJldHVybiBuJiZ3KG4pJiZuLmZvckVhY2goKGZ1bmN0aW9uKG4pe3Q9bihlLHQpfSkpLHQ7dmFyIHI9e307bShlKSYmKHI9UyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKSxPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpKS5yZWR1Y2UoKGZ1bmN0aW9uKG4scil7dmFyIG89ZVtyXTtyZXR1cm4oIXkocikmJiFPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5pbmNsdWRlcyhyKXx8eShyKSYmIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCkuaW5jbHVkZXMocikpJiZfKG4scixvLGUpLG59KSx7fSkpO3JldHVybiBTKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCkpLnJlZHVjZSgoZnVuY3Rpb24ocixvKXt2YXIgYT10W29dLGk9bShlKT9lW29dOnZvaWQgMDtyZXR1cm4gbiYmdyhuKSYmbi5mb3JFYWNoKChmdW5jdGlvbihlKXthPWUoaSxhKX0pKSx2b2lkIDAhPT1pJiZtKGEpJiYoYT1qKGksYSxuKSksXyhyLG8sYSx0KSxyfSkscil9Y29uc3QgRT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTt2YXIgcj1udWxsLG89ZTtyZXR1cm4gbShlKSYmZS5leHRlbnNpb25zJiYxPT09T2JqZWN0LmtleXMoZSkubGVuZ3RoJiYobz17fSxyPWUuZXh0ZW5zaW9ucyksdC5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGooZSx0LHIpfSksbyl9O3ZhciBQPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtlWzBdXSxyPTAsbz10Lmxlbmd0aDtyPG87cis9MSluLnB1c2godFtyXSxlW3IrMV0pO3JldHVybiBufSxrPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LEg9ZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSxWPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksUj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxJPWZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9LFo9ZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIXR8fFwib2JqZWN0XCIhPXR5cGVvZiB0JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0P2U6dH0sQT1mdW5jdGlvbihlKXtyZXR1cm5cIm9iamVjdFwiPT09KHZvaWQgMD09PWU/XCJ1bmRlZmluZWRcIjprKGUpKSYmZS5jb25zdHJ1Y3Rvcj09PU9iamVjdH0sRD1PYmplY3QuZnJlZXplKFtdKSxCPU9iamVjdC5mcmVlemUoe30pO2Z1bmN0aW9uIFQoZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZX1mdW5jdGlvbiAkKGUpe3JldHVybiBlLmRpc3BsYXlOYW1lfHxlLm5hbWV8fFwiQ29tcG9uZW50XCJ9ZnVuY3Rpb24gRihlKXtyZXR1cm4gZSYmXCJzdHJpbmdcIj09dHlwZW9mIGUuc3R5bGVkQ29tcG9uZW50SWR9dmFyIFc9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJihwcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfQVRUUnx8cHJvY2Vzcy5lbnYuU0NfQVRUUil8fFwiZGF0YS1zdHlsZWRcIixOPVwiZGF0YS1zdHlsZWQtdmVyc2lvblwiLHo9XCJkYXRhLXN0eWxlZC1zdHJlYW1lZFwiLFU9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmXCJIVE1MRWxlbWVudFwiaW4gd2luZG93LEc9XCJib29sZWFuXCI9PXR5cGVvZiBTQ19ESVNBQkxFX1NQRUVEWSYmU0NfRElTQUJMRV9TUEVFRFl8fFwidW5kZWZpbmVkXCIhPXR5cGVvZiBwcm9jZXNzJiYocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0RJU0FCTEVfU1BFRURZfHxwcm9jZXNzLmVudi5TQ19ESVNBQkxFX1NQRUVEWSl8fCExLHE9e307dmFyIFk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtIKHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1BcnJheShyPjE/ci0xOjApLGE9MTthPHI7YSsrKW9bYS0xXT1hcmd1bWVudHNbYV07dmFyIGk9Wih0aGlzLGUuY2FsbCh0aGlzLFwiQW4gZXJyb3Igb2NjdXJyZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc3R5bGVkLWNvbXBvbmVudHMvc3R5bGVkLWNvbXBvbmVudHMvYmxvYi9tYXN0ZXIvcGFja2FnZXMvc3R5bGVkLWNvbXBvbmVudHMvc3JjL3V0aWxzL2Vycm9ycy5tZCNcIituK1wiIGZvciBtb3JlIGluZm9ybWF0aW9uLlwiKyhvLmxlbmd0aD4wP1wiIEFkZGl0aW9uYWwgYXJndW1lbnRzOiBcIitvLmpvaW4oXCIsIFwiKTpcIlwiKSkpO3JldHVybiBaKGkpfXJldHVybiBJKHQsZSksdH0oRXJyb3IpLEs9L15bXlxcU1xcbl0qP1xcL1xcKiBzYy1jb21wb25lbnQtaWQ6XFxzKihcXFMrKVxccytcXCpcXC8vZ20sWD1mdW5jdGlvbihlKXt2YXIgdD1cIlwiKyhlfHxcIlwiKSxuPVtdO3JldHVybiB0LnJlcGxhY2UoSywoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBuLnB1c2goe2NvbXBvbmVudElkOnQsbWF0Y2hJbmRleDpyfSksZX0pKSxuLm1hcCgoZnVuY3Rpb24oZSxyKXt2YXIgbz1lLmNvbXBvbmVudElkLGE9ZS5tYXRjaEluZGV4LGk9bltyKzFdO3JldHVybntjb21wb25lbnRJZDpvLGNzc0Zyb21ET006aT90LnNsaWNlKGEsaS5tYXRjaEluZGV4KTp0LnNsaWNlKGEpfX0pKX0sUT0vXlxccypcXC9cXC8uKiQvZ20sSj1uZXcobygpKSh7Z2xvYmFsOiExLGNhc2NhZGU6ITAsa2V5ZnJhbWU6ITEscHJlZml4OiExLGNvbXByZXNzOiExLHNlbWljb2xvbjohMH0pLGVlPW5ldyhvKCkpKHtnbG9iYWw6ITEsY2FzY2FkZTohMCxrZXlmcmFtZTohMSxwcmVmaXg6ITAsY29tcHJlc3M6ITEsc2VtaWNvbG9uOiExfSksdGU9W10sbmU9ZnVuY3Rpb24oZSl7aWYoLTI9PT1lKXt2YXIgdD10ZTtyZXR1cm4gdGU9W10sdH19LHJlPWkoKSgoZnVuY3Rpb24oZSl7dGUucHVzaChlKX0pKSxvZT12b2lkIDAsYWU9dm9pZCAwLGllPXZvaWQgMCxsZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHQ+MCYmLTEhPT1uLnNsaWNlKDAsdCkuaW5kZXhPZihhZSkmJm4uc2xpY2UodC1hZS5sZW5ndGgsdCkhPT1hZT9cIi5cIitvZTplfTtlZS51c2UoW2Z1bmN0aW9uKGUsdCxuKXsyPT09ZSYmbi5sZW5ndGgmJm5bMF0ubGFzdEluZGV4T2YoYWUpPjAmJihuWzBdPW5bMF0ucmVwbGFjZShpZSxsZSkpfSxyZSxuZV0pLEoudXNlKFtyZSxuZV0pO3ZhciBjZT1mdW5jdGlvbihlKXtyZXR1cm4gSihcIlwiLGUpfTtmdW5jdGlvbiBzZShlLHQsbil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOlwiJlwiLG89ZS5qb2luKFwiXCIpLnJlcGxhY2UoUSxcIlwiKSxhPXQmJm4/bitcIiBcIit0K1wiIHsgXCIrbytcIiB9XCI6bztyZXR1cm4gb2U9cixhZT10LGllPW5ldyBSZWdFeHAoXCJcXFxcXCIrYWUrXCJcXFxcYlwiLFwiZ1wiKSxlZShufHwhdD9cIlwiOnQsYSl9dmFyIHVlPWZ1bmN0aW9uKCl7cmV0dXJuIG4ubmN9LGRlPWZ1bmN0aW9uKGUsdCxuKXtuJiYoKGVbdF18fChlW3RdPU9iamVjdC5jcmVhdGUobnVsbCkpKVtuXT0hMCl9LGZlPWZ1bmN0aW9uKGUsdCl7ZVt0XT1PYmplY3QuY3JlYXRlKG51bGwpfSxwZT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gdm9pZCAwIT09ZVt0XSYmZVt0XVtuXX19LGhlPWZ1bmN0aW9uKGUpe3ZhciB0PVwiXCI7Zm9yKHZhciBuIGluIGUpdCs9T2JqZWN0LmtleXMoZVtuXSkuam9pbihcIiBcIikrXCIgXCI7cmV0dXJuIHQudHJpbSgpfSxDZT1mdW5jdGlvbihlKXtpZihlLnNoZWV0KXJldHVybiBlLnNoZWV0O2Zvcih2YXIgdD1lLm93bmVyRG9jdW1lbnQuc3R5bGVTaGVldHMubGVuZ3RoLG49MDtuPHQ7bis9MSl7dmFyIHI9ZS5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzW25dO2lmKHIub3duZXJOb2RlPT09ZSlyZXR1cm4gcn10aHJvdyBuZXcgWSgxMCl9LHZlPWZ1bmN0aW9uKGUsdCxuKXtpZighdClyZXR1cm4hMTt2YXIgcj1lLmNzc1J1bGVzLmxlbmd0aDt0cnl7ZS5pbnNlcnRSdWxlKHQsbjw9cj9uOnIpfWNhdGNoKGUpe3JldHVybiExfXJldHVybiEwfSxnZT1mdW5jdGlvbihlKXtyZXR1cm5cIlxcbi8qIHNjLWNvbXBvbmVudC1pZDogXCIrZStcIiAqL1xcblwifSxtZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLHI9MDtyPD10O3IrPTEpbis9ZVtyXTtyZXR1cm4gbn0sd2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9dWUoKTtyZXR1cm5cIjxzdHlsZSBcIitbciYmJ25vbmNlPVwiJytyKydcIicsVysnPVwiJytoZSh0KSsnXCInLE4rJz1cIjQuNC4xXCInLG5dLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKStcIj5cIitlKCkrXCI8L3N0eWxlPlwifX0seWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbixyPSgobj17fSlbV109aGUodCksbltOXT1cIjQuNC4xXCIsbiksbz11ZSgpO3JldHVybiBvJiYoci5ub25jZT1vKSxsLmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLFIoe30scix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDplKCl9fSkpfX0sYmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKGUpfX0seGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jcmVhdGVUZXh0Tm9kZShnZSh0KSl9LE9lPWZ1bmN0aW9uIGUodCxuKXt2YXIgcj12b2lkIDA9PT10P09iamVjdC5jcmVhdGUobnVsbCk6dCxvPXZvaWQgMD09PW4/T2JqZWN0LmNyZWF0ZShudWxsKTpuLGE9ZnVuY3Rpb24oZSl7dmFyIHQ9b1tlXTtyZXR1cm4gdm9pZCAwIT09dD90Om9bZV09W1wiXCJdfSxpPWZ1bmN0aW9uKCl7dmFyIGU9XCJcIjtmb3IodmFyIHQgaW4gbyl7dmFyIG49b1t0XVswXTtuJiYoZSs9Z2UodCkrbil9cmV0dXJuIGV9LGw9e2Nsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IodmFyIG4gaW4gZSl0W25dPVIoe30sZVtuXSk7cmV0dXJuIHR9KHIpLG49T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IodmFyIGEgaW4gbyluW2FdPVtvW2FdWzBdXTtyZXR1cm4gZSh0LG4pfSxjc3M6aSxnZXRJZHM6YmUobyksaGFzTmFtZUZvcklkOnBlKHIpLGluc2VydE1hcmtlcjphLGluc2VydFJ1bGVzOmZ1bmN0aW9uKGUsdCxuKXthKGUpWzBdKz10LmpvaW4oXCIgXCIpLGRlKHIsZSxuKX0scmVtb3ZlUnVsZXM6ZnVuY3Rpb24oZSl7dmFyIHQ9b1tlXTt2b2lkIDAhPT10JiYodFswXT1cIlwiLGZlKHIsZSkpfSxzZWFsZWQ6ITEsc3R5bGVUYWc6bnVsbCx0b0VsZW1lbnQ6eWUoaSxyKSx0b0hUTUw6d2UoaSxyKX07cmV0dXJuIGx9LExlPWZ1bmN0aW9uKGUsdCxuLHIsbyl7aWYoVSYmIW4pe3ZhciBhPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1kb2N1bWVudDtlP3I9ZS5vd25lckRvY3VtZW50OnQmJihyPXQub3duZXJEb2N1bWVudCk7dmFyIG89ci5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7by5zZXRBdHRyaWJ1dGUoVyxcIlwiKSxvLnNldEF0dHJpYnV0ZShOLFwiNC40LjFcIik7dmFyIGE9dWUoKTtpZihhJiZvLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsYSksby5hcHBlbmRDaGlsZChyLmNyZWF0ZVRleHROb2RlKFwiXCIpKSxlJiYhdCllLmFwcGVuZENoaWxkKG8pO2Vsc2V7aWYoIXR8fCFlfHwhdC5wYXJlbnROb2RlKXRocm93IG5ldyBZKDYpO3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobyxuP3Q6dC5uZXh0U2libGluZyl9cmV0dXJuIG99KGUsdCxyKTtyZXR1cm4gRz9mdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj1PYmplY3QuY3JlYXRlKG51bGwpLG89dm9pZCAwIT09dCxhPSExLGk9ZnVuY3Rpb24odCl7dmFyIG89clt0XTtyZXR1cm4gdm9pZCAwIT09bz9vOihyW3RdPXhlKGUub3duZXJEb2N1bWVudCx0KSxlLmFwcGVuZENoaWxkKHJbdF0pLG5bdF09T2JqZWN0LmNyZWF0ZShudWxsKSxyW3RdKX0sbD1mdW5jdGlvbigpe3ZhciBlPVwiXCI7Zm9yKHZhciB0IGluIHIpZSs9clt0XS5kYXRhO3JldHVybiBlfTtyZXR1cm57Y2xvbmU6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgWSg1KX0sY3NzOmwsZ2V0SWRzOmJlKHIpLGhhc05hbWVGb3JJZDpwZShuKSxpbnNlcnRNYXJrZXI6aSxpbnNlcnRSdWxlczpmdW5jdGlvbihlLHIsbCl7Zm9yKHZhciBjPWkoZSkscz1bXSx1PXIubGVuZ3RoLGQ9MDtkPHU7ZCs9MSl7dmFyIGY9cltkXSxwPW87aWYocCYmLTEhPT1mLmluZGV4T2YoXCJAaW1wb3J0XCIpKXMucHVzaChmKTtlbHNle3A9ITE7dmFyIGg9ZD09PXUtMT9cIlwiOlwiIFwiO2MuYXBwZW5kRGF0YShcIlwiK2YraCl9fWRlKG4sZSxsKSxvJiZzLmxlbmd0aD4wJiYoYT0hMCx0KCkuaW5zZXJ0UnVsZXMoZStcIi1pbXBvcnRcIixzKSl9LHJlbW92ZVJ1bGVzOmZ1bmN0aW9uKGkpe3ZhciBsPXJbaV07aWYodm9pZCAwIT09bCl7dmFyIGM9eGUoZS5vd25lckRvY3VtZW50LGkpO2UucmVwbGFjZUNoaWxkKGMsbCkscltpXT1jLGZlKG4saSksbyYmYSYmdCgpLnJlbW92ZVJ1bGVzKGkrXCItaW1wb3J0XCIpfX0sc2VhbGVkOiExLHN0eWxlVGFnOmUsdG9FbGVtZW50OnllKGwsbiksdG9IVE1MOndlKGwsbil9fShhLG8pOmZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPU9iamVjdC5jcmVhdGUobnVsbCksbz1bXSxhPXZvaWQgMCE9PXQsaT0hMSxsPWZ1bmN0aW9uKGUpe3ZhciB0PXJbZV07cmV0dXJuIHZvaWQgMCE9PXQ/dDoocltlXT1vLmxlbmd0aCxvLnB1c2goMCksZmUobixlKSxyW2VdKX0sYz1mdW5jdGlvbigpe3ZhciB0PUNlKGUpLmNzc1J1bGVzLG49XCJcIjtmb3IodmFyIGEgaW4gcil7bis9Z2UoYSk7Zm9yKHZhciBpPXJbYV0sbD1tZShvLGkpLGM9bC1vW2ldO2M8bDtjKz0xKXt2YXIgcz10W2NdO3ZvaWQgMCE9PXMmJihuKz1zLmNzc1RleHQpfX1yZXR1cm4gbn07cmV0dXJue2Nsb25lOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IFkoNSl9LGNzczpjLGdldElkczpiZShyKSxoYXNOYW1lRm9ySWQ6cGUobiksaW5zZXJ0TWFya2VyOmwsaW5zZXJ0UnVsZXM6ZnVuY3Rpb24ocixjLHMpe2Zvcih2YXIgdT1sKHIpLGQ9Q2UoZSksZj1tZShvLHUpLHA9MCxoPVtdLEM9Yy5sZW5ndGgsdj0wO3Y8Qzt2Kz0xKXt2YXIgZz1jW3ZdLG09YTttJiYtMSE9PWcuaW5kZXhPZihcIkBpbXBvcnRcIik/aC5wdXNoKGcpOnZlKGQsZyxmK3ApJiYobT0hMSxwKz0xKX1hJiZoLmxlbmd0aD4wJiYoaT0hMCx0KCkuaW5zZXJ0UnVsZXMocitcIi1pbXBvcnRcIixoKSksb1t1XSs9cCxkZShuLHIscyl9LHJlbW92ZVJ1bGVzOmZ1bmN0aW9uKGwpe3ZhciBjPXJbbF07aWYodm9pZCAwIT09YyYmITEhPT1lLmlzQ29ubmVjdGVkKXt2YXIgcz1vW2NdOyFmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPXQtbixvPXQ7bz5yO28tPTEpZS5kZWxldGVSdWxlKG8pfShDZShlKSxtZShvLGMpLTEscyksb1tjXT0wLGZlKG4sbCksYSYmaSYmdCgpLnJlbW92ZVJ1bGVzKGwrXCItaW1wb3J0XCIpfX0sc2VhbGVkOiExLHN0eWxlVGFnOmUsdG9FbGVtZW50OnllKGMsbiksdG9IVE1MOndlKGMsbil9fShhLG8pfXJldHVybiBPZSgpfSxNZT0vXFxzKy8sU2U9dm9pZCAwO1NlPVU/Rz80MDoxZTM6LTE7dmFyIF9lPTAsamU9dm9pZCAwLEVlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06VT9kb2N1bWVudC5oZWFkOm51bGwscj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO0godGhpcyxlKSx0aGlzLmdldEltcG9ydFJ1bGVUYWc9ZnVuY3Rpb24oKXt2YXIgZT10LmltcG9ydFJ1bGVUYWc7aWYodm9pZCAwIT09ZSlyZXR1cm4gZTt2YXIgbj10LnRhZ3NbMF07cmV0dXJuIHQuaW1wb3J0UnVsZVRhZz1MZSh0LnRhcmdldCxuP24uc3R5bGVUYWc6bnVsbCx0LmZvcmNlU2VydmVyLCEwKX0sX2UrPTEsdGhpcy5pZD1fZSx0aGlzLmZvcmNlU2VydmVyPXIsdGhpcy50YXJnZXQ9cj9udWxsOm4sdGhpcy50YWdNYXA9e30sdGhpcy5kZWZlcnJlZD17fSx0aGlzLnJlaHlkcmF0ZWROYW1lcz17fSx0aGlzLmlnbm9yZVJlaHlkcmF0ZWROYW1lcz17fSx0aGlzLnRhZ3M9W10sdGhpcy5jYXBhY2l0eT0xLHRoaXMuY2xvbmVzPVtdfXJldHVybiBlLnByb3RvdHlwZS5yZWh5ZHJhdGU9ZnVuY3Rpb24oKXtpZighVXx8dGhpcy5mb3JjZVNlcnZlcilyZXR1cm4gdGhpczt2YXIgZT1bXSx0PVtdLG49ITEscj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic3R5bGVbXCIrVytcIl1bXCIrTisnPVwiNC40LjFcIl0nKSxvPXIubGVuZ3RoO2lmKCFvKXJldHVybiB0aGlzO2Zvcih2YXIgYT0wO2E8bzthKz0xKXt2YXIgaT1yW2FdO258fChuPSEhaS5nZXRBdHRyaWJ1dGUoeikpO2Zvcih2YXIgbCxjPShpLmdldEF0dHJpYnV0ZShXKXx8XCJcIikudHJpbSgpLnNwbGl0KE1lKSxzPWMubGVuZ3RoLHU9MDt1PHM7dSs9MSlsPWNbdV0sdGhpcy5yZWh5ZHJhdGVkTmFtZXNbbF09ITA7dC5wdXNoLmFwcGx5KHQsWChpLnRleHRDb250ZW50KSksZS5wdXNoKGkpfXZhciBkPXQubGVuZ3RoO2lmKCFkKXJldHVybiB0aGlzO3ZhciBmPXRoaXMubWFrZVRhZyhudWxsKTshZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj0wLG89bi5sZW5ndGg7cjxvO3IrPTEpe3ZhciBhPW5bcl0saT1hLmNvbXBvbmVudElkLGw9YS5jc3NGcm9tRE9NLGM9Y2UobCk7ZS5pbnNlcnRSdWxlcyhpLGMpfWZvcih2YXIgcz0wLHU9dC5sZW5ndGg7czx1O3MrPTEpe3ZhciBkPXRbc107ZC5wYXJlbnROb2RlJiZkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCl9fShmLGUsdCksdGhpcy5jYXBhY2l0eT1NYXRoLm1heCgxLFNlLWQpLHRoaXMudGFncy5wdXNoKGYpO2Zvcih2YXIgcD0wO3A8ZDtwKz0xKXRoaXMudGFnTWFwW3RbcF0uY29tcG9uZW50SWRdPWY7cmV0dXJuIHRoaXN9LGUucmVzZXQ9ZnVuY3Rpb24oKXtqZT1uZXcgZSh2b2lkIDAsYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSkucmVoeWRyYXRlKCl9LGUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IGUodGhpcy50YXJnZXQsdGhpcy5mb3JjZVNlcnZlcik7cmV0dXJuIHRoaXMuY2xvbmVzLnB1c2godCksdC50YWdzPXRoaXMudGFncy5tYXAoKGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1lLmdldElkcygpLHI9ZS5jbG9uZSgpLG89MDtvPG4ubGVuZ3RoO28rPTEpdC50YWdNYXBbbltvXV09cjtyZXR1cm4gcn0pKSx0LnJlaHlkcmF0ZWROYW1lcz1SKHt9LHRoaXMucmVoeWRyYXRlZE5hbWVzKSx0LmRlZmVycmVkPVIoe30sdGhpcy5kZWZlcnJlZCksdH0sZS5wcm90b3R5cGUuc2VhbEFsbFRhZ3M9ZnVuY3Rpb24oKXt0aGlzLmNhcGFjaXR5PTEsdGhpcy50YWdzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Uuc2VhbGVkPSEwfSkpfSxlLnByb3RvdHlwZS5tYWtlVGFnPWZ1bmN0aW9uKGUpe3ZhciB0PWU/ZS5zdHlsZVRhZzpudWxsO3JldHVybiBMZSh0aGlzLnRhcmdldCx0LHRoaXMuZm9yY2VTZXJ2ZXIsITEsdGhpcy5nZXRJbXBvcnRSdWxlVGFnKX0sZS5wcm90b3R5cGUuZ2V0VGFnRm9ySWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50YWdNYXBbZV07aWYodm9pZCAwIT09dCYmIXQuc2VhbGVkKXJldHVybiB0O3ZhciBuPXRoaXMudGFnc1t0aGlzLnRhZ3MubGVuZ3RoLTFdO3JldHVybiB0aGlzLmNhcGFjaXR5LT0xLDA9PT10aGlzLmNhcGFjaXR5JiYodGhpcy5jYXBhY2l0eT1TZSxuPXRoaXMubWFrZVRhZyhuKSx0aGlzLnRhZ3MucHVzaChuKSksdGhpcy50YWdNYXBbZV09bn0sZS5wcm90b3R5cGUuaGFzSWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMudGFnTWFwW2VdfSxlLnByb3RvdHlwZS5oYXNOYW1lRm9ySWQ9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT10aGlzLmlnbm9yZVJlaHlkcmF0ZWROYW1lc1tlXSYmdGhpcy5yZWh5ZHJhdGVkTmFtZXNbdF0pcmV0dXJuITA7dmFyIG49dGhpcy50YWdNYXBbZV07cmV0dXJuIHZvaWQgMCE9PW4mJm4uaGFzTmFtZUZvcklkKGUsdCl9LGUucHJvdG90eXBlLmRlZmVycmVkSW5qZWN0PWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dGhpcy50YWdNYXBbZV0pe2Zvcih2YXIgbj10aGlzLmNsb25lcyxyPTA7cjxuLmxlbmd0aDtyKz0xKW5bcl0uZGVmZXJyZWRJbmplY3QoZSx0KTt0aGlzLmdldFRhZ0ZvcklkKGUpLmluc2VydE1hcmtlcihlKSx0aGlzLmRlZmVycmVkW2VdPXR9fSxlLnByb3RvdHlwZS5pbmplY3Q9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj10aGlzLmNsb25lcyxvPTA7bzxyLmxlbmd0aDtvKz0xKXJbb10uaW5qZWN0KGUsdCxuKTt2YXIgYT10aGlzLmdldFRhZ0ZvcklkKGUpO2lmKHZvaWQgMCE9PXRoaXMuZGVmZXJyZWRbZV0pe3ZhciBpPXRoaXMuZGVmZXJyZWRbZV0uY29uY2F0KHQpO2EuaW5zZXJ0UnVsZXMoZSxpLG4pLHRoaXMuZGVmZXJyZWRbZV09dm9pZCAwfWVsc2UgYS5pbnNlcnRSdWxlcyhlLHQsbil9LGUucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnRhZ01hcFtlXTtpZih2b2lkIDAhPT10KXtmb3IodmFyIG49dGhpcy5jbG9uZXMscj0wO3I8bi5sZW5ndGg7cis9MSluW3JdLnJlbW92ZShlKTt0LnJlbW92ZVJ1bGVzKGUpLHRoaXMuaWdub3JlUmVoeWRyYXRlZE5hbWVzW2VdPSEwLHRoaXMuZGVmZXJyZWRbZV09dm9pZCAwfX0sZS5wcm90b3R5cGUudG9IVE1MPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFncy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRvSFRNTCgpfSkpLmpvaW4oXCJcIil9LGUucHJvdG90eXBlLnRvUmVhY3RFbGVtZW50cz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuaWQ7cmV0dXJuIHRoaXMudGFncy5tYXAoKGZ1bmN0aW9uKHQsbil7dmFyIHI9XCJzYy1cIitlK1wiLVwiK247cmV0dXJuKDAsbC5jbG9uZUVsZW1lbnQpKHQudG9FbGVtZW50KCkse2tleTpyfSl9KSl9LFYoZSxudWxsLFt7a2V5OlwibWFzdGVyXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGplfHwoamU9KG5ldyBlKS5yZWh5ZHJhdGUoKSl9fSx7a2V5OlwiaW5zdGFuY2VcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5tYXN0ZXJ9fV0pLGV9KCksUGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbil7dmFyIHI9dGhpcztIKHRoaXMsZSksdGhpcy5pbmplY3Q9ZnVuY3Rpb24oZSl7ZS5oYXNOYW1lRm9ySWQoci5pZCxyLm5hbWUpfHxlLmluamVjdChyLmlkLHIucnVsZXMsci5uYW1lKX0sdGhpcy50b1N0cmluZz1mdW5jdGlvbigpe3Rocm93IG5ldyBZKDEyLFN0cmluZyhyLm5hbWUpKX0sdGhpcy5uYW1lPXQsdGhpcy5ydWxlcz1uLHRoaXMuaWQ9XCJzYy1rZXlmcmFtZXMtXCIrdH1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWV9LGV9KCksa2U9LyhbQS1aXSkvZyxIZT0vXm1zLS87ZnVuY3Rpb24gVmUoZSl7cmV0dXJuIGUucmVwbGFjZShrZSxcIi0kMVwiKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoSGUsXCItbXMtXCIpfXZhciBSZT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZXx8ITE9PT1lfHxcIlwiPT09ZX0sSWU9ZnVuY3Rpb24gZSh0LG4pe3ZhciByPVtdO3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihuKXtpZighUmUodFtuXSkpe2lmKEEodFtuXSkpcmV0dXJuIHIucHVzaC5hcHBseShyLGUodFtuXSxuKSkscjtpZihUKHRbbl0pKXJldHVybiByLnB1c2goVmUobikrXCI6XCIsdFtuXSxcIjtcIikscjtyLnB1c2goVmUobikrXCI6IFwiKyhvPW4sKG51bGw9PShhPXRbbl0pfHxcImJvb2xlYW5cIj09dHlwZW9mIGF8fFwiXCI9PT1hP1wiXCI6XCJudW1iZXJcIiE9dHlwZW9mIGF8fDA9PT1hfHxvIGluIGM/U3RyaW5nKGEpLnRyaW0oKTphK1wicHhcIikrXCI7XCIpKX12YXIgbyxhO3JldHVybiByfSkpLG4/W24rXCIge1wiXS5jb25jYXQocixbXCJ9XCJdKTpyfTtmdW5jdGlvbiBaZShlLHQsbil7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciByLG89W10sYT0wLGk9ZS5sZW5ndGg7YTxpO2ErPTEpbnVsbCE9PShyPVplKGVbYV0sdCxuKSkmJihBcnJheS5pc0FycmF5KHIpP28ucHVzaC5hcHBseShvLHIpOm8ucHVzaChyKSk7cmV0dXJuIG99cmV0dXJuIFJlKGUpP251bGw6RihlKT9cIi5cIitlLnN0eWxlZENvbXBvbmVudElkOlQoZSk/XCJmdW5jdGlvblwiIT10eXBlb2YobD1lKXx8bC5wcm90b3R5cGUmJmwucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnR8fCF0P2U6WmUoZSh0KSx0LG4pOmUgaW5zdGFuY2VvZiBQZT9uPyhlLmluamVjdChuKSxlLmdldE5hbWUoKSk6ZTpBKGUpP0llKGUpOmUudG9TdHJpbmcoKTt2YXIgbH1mdW5jdGlvbiBBZShlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTtyZXR1cm4gVChlKXx8QShlKT9aZShQKEQsW2VdLmNvbmNhdChuKSkpOlplKFAoZSxuKSl9ZnVuY3Rpb24gRGUoZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06QjtpZighKDAscy5pc1ZhbGlkRWxlbWVudFR5cGUpKHQpKXRocm93IG5ldyBZKDEsU3RyaW5nKHQpKTt2YXIgcj1mdW5jdGlvbigpe3JldHVybiBlKHQsbixBZS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9O3JldHVybiByLndpdGhDb25maWc9ZnVuY3Rpb24ocil7cmV0dXJuIERlKGUsdCxSKHt9LG4scikpfSxyLmF0dHJzPWZ1bmN0aW9uKHIpe3JldHVybiBEZShlLHQsUih7fSxuLHthdHRyczpBcnJheS5wcm90b3R5cGUuY29uY2F0KG4uYXR0cnMscikuZmlsdGVyKEJvb2xlYW4pfSkpfSxyfWZ1bmN0aW9uIEJlKGUpe2Zvcih2YXIgdCxuPTB8ZS5sZW5ndGgscj0wfG4sbz0wO24+PTQ7KXQ9MTU0MDQ4MzQ3NyooNjU1MzUmKHQ9MjU1JmUuY2hhckNvZGVBdChvKXwoMjU1JmUuY2hhckNvZGVBdCgrK28pKTw8OHwoMjU1JmUuY2hhckNvZGVBdCgrK28pKTw8MTZ8KDI1NSZlLmNoYXJDb2RlQXQoKytvKSk8PDI0KSkrKCgxNTQwNDgzNDc3Kih0Pj4+MTYpJjY1NTM1KTw8MTYpLHI9MTU0MDQ4MzQ3NyooNjU1MzUmcikrKCgxNTQwNDgzNDc3KihyPj4+MTYpJjY1NTM1KTw8MTYpXih0PTE1NDA0ODM0NzcqKDY1NTM1Jih0Xj10Pj4+MjQpKSsoKDE1NDA0ODM0NzcqKHQ+Pj4xNikmNjU1MzUpPDwxNikpLG4tPTQsKytvO3N3aXRjaChuKXtjYXNlIDM6cl49KDI1NSZlLmNoYXJDb2RlQXQobysyKSk8PDE2O2Nhc2UgMjpyXj0oMjU1JmUuY2hhckNvZGVBdChvKzEpKTw8ODtjYXNlIDE6cj0xNTQwNDgzNDc3Kig2NTUzNSYocl49MjU1JmUuY2hhckNvZGVBdChvKSkpKygoMTU0MDQ4MzQ3Nyoocj4+PjE2KSY2NTUzNSk8PDE2KX1yZXR1cm4oKHI9MTU0MDQ4MzQ3NyooNjU1MzUmKHJePXI+Pj4xMykpKygoMTU0MDQ4MzQ3Nyoocj4+PjE2KSY2NTUzNSk8PDE2KSlecj4+PjE1KT4+PjB9dmFyIFRlPTUyLCRlPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUrKGU+MjU/Mzk6OTcpKX07ZnVuY3Rpb24gRmUoZSl7dmFyIHQ9XCJcIixuPXZvaWQgMDtmb3Iobj1lO24+VGU7bj1NYXRoLmZsb29yKG4vVGUpKXQ9JGUobiVUZSkrdDtyZXR1cm4gJGUobiVUZSkrdH1mdW5jdGlvbiBXZShlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bis9MSl7dmFyIHI9ZVtuXTtpZihBcnJheS5pc0FycmF5KHIpJiYhV2Uocix0KSlyZXR1cm4hMTtpZihUKHIpJiYhRihyKSlyZXR1cm4hMX1yZXR1cm4hdC5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gVChlKXx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGUpaWYoVChlW3RdKSlyZXR1cm4hMDtyZXR1cm4hMX0oZSl9KSl9dmFyIE5lLHplPWZ1bmN0aW9uKGUpe3JldHVybiBGZShCZShlKSl9LFVlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4scil7SCh0aGlzLGUpLHRoaXMucnVsZXM9dCx0aGlzLmlzU3RhdGljPVdlKHQsbiksdGhpcy5jb21wb25lbnRJZD1yLEVlLm1hc3Rlci5oYXNJZChyKXx8RWUubWFzdGVyLmRlZmVycmVkSW5qZWN0KHIsW10pfXJldHVybiBlLnByb3RvdHlwZS5nZW5lcmF0ZUFuZEluamVjdFN0eWxlcz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuaXNTdGF0aWMscj10aGlzLmNvbXBvbmVudElkLG89dGhpcy5sYXN0Q2xhc3NOYW1lO2lmKFUmJm4mJlwic3RyaW5nXCI9PXR5cGVvZiBvJiZ0Lmhhc05hbWVGb3JJZChyLG8pKXJldHVybiBvO3ZhciBhPVplKHRoaXMucnVsZXMsZSx0KSxpPXplKHRoaXMuY29tcG9uZW50SWQrYS5qb2luKFwiXCIpKTtyZXR1cm4gdC5oYXNOYW1lRm9ySWQocixpKXx8dC5pbmplY3QodGhpcy5jb21wb25lbnRJZCxzZShhLFwiLlwiK2ksdm9pZCAwLHIpLGkpLHRoaXMubGFzdENsYXNzTmFtZT1pLGl9LGUuZ2VuZXJhdGVOYW1lPWZ1bmN0aW9uKGUpe3JldHVybiB6ZShlKX0sZX0oKSxHZT1mdW5jdGlvbihlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpCLHI9ISFuJiZlLnRoZW1lPT09bi50aGVtZTtyZXR1cm4gZS50aGVtZSYmIXI/ZS50aGVtZTp0fHxuLnRoZW1lfSxxZT0vW1tcXF0uIyokPjwrfj18XjooKSxcIidgLV0rL2csWWU9LyheLXwtJCkvZztmdW5jdGlvbiBLZShlKXtyZXR1cm4gZS5yZXBsYWNlKHFlLFwiLVwiKS5yZXBsYWNlKFllLFwiXCIpfWZ1bmN0aW9uIFhlKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiYhMH12YXIgUWU9e2NoaWxkQ29udGV4dFR5cGVzOiEwLGNvbnRleHRUeXBlczohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAsZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOiEwLHByb3BUeXBlczohMCx0eXBlOiEwfSxKZT17bmFtZTohMCxsZW5ndGg6ITAscHJvdG90eXBlOiEwLGNhbGxlcjohMCxjYWxsZWU6ITAsYXJndW1lbnRzOiEwLGFyaXR5OiEwfSxldD0oKE5lPXt9KVtzLkZvcndhcmRSZWZdPXskJHR5cGVvZjohMCxyZW5kZXI6ITB9LE5lKSx0dD1PYmplY3QuZGVmaW5lUHJvcGVydHksbnQ9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMscnQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxvdD12b2lkIDA9PT1ydD9mdW5jdGlvbigpe3JldHVybltdfTpydCxhdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGl0PU9iamVjdC5nZXRQcm90b3R5cGVPZixsdD1PYmplY3QucHJvdG90eXBlLGN0PUFycmF5LnByb3RvdHlwZTtmdW5jdGlvbiBzdChlLHQsbil7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQpe3ZhciByPWl0KHQpO3ImJnIhPT1sdCYmc3QoZSxyLG4pO2Zvcih2YXIgbz1jdC5jb25jYXQobnQodCksb3QodCkpLGE9ZXRbZS4kJHR5cGVvZl18fFFlLGk9ZXRbdC4kJHR5cGVvZl18fFFlLGw9by5sZW5ndGgsYz12b2lkIDAscz12b2lkIDA7bC0tOylpZihzPW9bbF0sIShKZVtzXXx8biYmbltzXXx8aSYmaVtzXXx8YSYmYVtzXSkmJihjPWF0KHQscykpKXRyeXt0dChlLHMsYyl9Y2F0Y2goZSl7fXJldHVybiBlfXJldHVybiBlfXZhciB1dD0oMCxsLmNyZWF0ZUNvbnRleHQpKCksZHQ9dXQuQ29uc3VtZXIsZnQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtIKHRoaXMsdCk7dmFyIHI9Wih0aGlzLGUuY2FsbCh0aGlzLG4pKTtyZXR1cm4gci5nZXRDb250ZXh0PWYoci5nZXRDb250ZXh0LmJpbmQocikpLHIucmVuZGVySW5uZXI9ci5yZW5kZXJJbm5lci5iaW5kKHIpLHJ9cmV0dXJuIEkodCxlKSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbj9sLmNyZWF0ZUVsZW1lbnQodXQuQ29uc3VtZXIsbnVsbCx0aGlzLnJlbmRlcklubmVyKTpudWxsfSx0LnByb3RvdHlwZS5yZW5kZXJJbm5lcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldENvbnRleHQodGhpcy5wcm9wcy50aGVtZSxlKTtyZXR1cm4gbC5jcmVhdGVFbGVtZW50KHV0LlByb3ZpZGVyLHt2YWx1ZTp0fSx0aGlzLnByb3BzLmNoaWxkcmVuKX0sdC5wcm90b3R5cGUuZ2V0VGhlbWU9ZnVuY3Rpb24oZSx0KXtpZihUKGUpKXJldHVybiBlKHQpO2lmKG51bGw9PT1lfHxBcnJheS5pc0FycmF5KGUpfHxcIm9iamVjdFwiIT09KHZvaWQgMD09PWU/XCJ1bmRlZmluZWRcIjprKGUpKSl0aHJvdyBuZXcgWSg4KTtyZXR1cm4gUih7fSx0LGUpfSx0LnByb3RvdHlwZS5nZXRDb250ZXh0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZ2V0VGhlbWUoZSx0KX0sdH0obC5Db21wb25lbnQpLHB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe0godGhpcyxlKSx0aGlzLm1hc3RlclNoZWV0PUVlLm1hc3Rlcix0aGlzLmluc3RhbmNlPXRoaXMubWFzdGVyU2hlZXQuY2xvbmUoKSx0aGlzLnNlYWxlZD0hMX1yZXR1cm4gZS5wcm90b3R5cGUuc2VhbD1mdW5jdGlvbigpe2lmKCF0aGlzLnNlYWxlZCl7dmFyIGU9dGhpcy5tYXN0ZXJTaGVldC5jbG9uZXMuaW5kZXhPZih0aGlzLmluc3RhbmNlKTt0aGlzLm1hc3RlclNoZWV0LmNsb25lcy5zcGxpY2UoZSwxKSx0aGlzLnNlYWxlZD0hMH19LGUucHJvdG90eXBlLmNvbGxlY3RTdHlsZXM9ZnVuY3Rpb24oZSl7aWYodGhpcy5zZWFsZWQpdGhyb3cgbmV3IFkoMik7cmV0dXJuIGwuY3JlYXRlRWxlbWVudCh2dCx7c2hlZXQ6dGhpcy5pbnN0YW5jZX0sZSl9LGUucHJvdG90eXBlLmdldFN0eWxlVGFncz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlYWwoKSx0aGlzLmluc3RhbmNlLnRvSFRNTCgpfSxlLnByb3RvdHlwZS5nZXRTdHlsZUVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWFsKCksdGhpcy5pbnN0YW5jZS50b1JlYWN0RWxlbWVudHMoKX0sZS5wcm90b3R5cGUuaW50ZXJsZWF2ZVdpdGhOb2RlU3RyZWFtPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBZKDMpfSxlfSgpLGh0PSgwLGwuY3JlYXRlQ29udGV4dCkoKSxDdD1odC5Db25zdW1lcix2dD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe0godGhpcyx0KTt2YXIgcj1aKHRoaXMsZS5jYWxsKHRoaXMsbikpO3JldHVybiByLmdldENvbnRleHQ9ZihyLmdldENvbnRleHQpLHJ9cmV0dXJuIEkodCxlKSx0LnByb3RvdHlwZS5nZXRDb250ZXh0PWZ1bmN0aW9uKGUsdCl7aWYoZSlyZXR1cm4gZTtpZih0KXJldHVybiBuZXcgRWUodCk7dGhyb3cgbmV3IFkoNCl9LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmNoaWxkcmVuLG49ZS5zaGVldCxyPWUudGFyZ2V0O3JldHVybiBsLmNyZWF0ZUVsZW1lbnQoaHQuUHJvdmlkZXIse3ZhbHVlOnRoaXMuZ2V0Q29udGV4dChuLHIpfSx0KX0sdH0obC5Db21wb25lbnQpLGd0PXt9O3ZhciBtdD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7SCh0aGlzLHQpO3ZhciBuPVoodGhpcyxlLmNhbGwodGhpcykpO3JldHVybiBuLmF0dHJzPXt9LG4ucmVuZGVyT3V0ZXI9bi5yZW5kZXJPdXRlci5iaW5kKG4pLG4ucmVuZGVySW5uZXI9bi5yZW5kZXJJbm5lci5iaW5kKG4pLG59cmV0dXJuIEkodCxlKSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbC5jcmVhdGVFbGVtZW50KEN0LG51bGwsdGhpcy5yZW5kZXJPdXRlcil9LHQucHJvdG90eXBlLnJlbmRlck91dGVyPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOkVlLm1hc3RlcjtyZXR1cm4gdGhpcy5zdHlsZVNoZWV0PWUsdGhpcy5wcm9wcy5mb3J3YXJkZWRDb21wb25lbnQuY29tcG9uZW50U3R5bGUuaXNTdGF0aWM/dGhpcy5yZW5kZXJJbm5lcigpOmwuY3JlYXRlRWxlbWVudChkdCxudWxsLHRoaXMucmVuZGVySW5uZXIpfSx0LnByb3RvdHlwZS5yZW5kZXJJbm5lcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLmZvcndhcmRlZENvbXBvbmVudCxuPXQuY29tcG9uZW50U3R5bGUscj10LmRlZmF1bHRQcm9wcyxvPSh0LmRpc3BsYXlOYW1lLHQuZm9sZGVkQ29tcG9uZW50SWRzKSxhPXQuc3R5bGVkQ29tcG9uZW50SWQsaT10LnRhcmdldCxjPXZvaWQgMDtjPW4uaXNTdGF0aWM/dGhpcy5nZW5lcmF0ZUFuZEluamVjdFN0eWxlcyhCLHRoaXMucHJvcHMpOnRoaXMuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMoR2UodGhpcy5wcm9wcyxlLHIpfHxCLHRoaXMucHJvcHMpO3ZhciBzPXRoaXMucHJvcHMuYXN8fHRoaXMuYXR0cnMuYXN8fGksdT1YZShzKSxkPXt9LGY9Uih7fSx0aGlzLnByb3BzLHRoaXMuYXR0cnMpLHA9dm9pZCAwO2ZvcihwIGluIGYpXCJmb3J3YXJkZWRDb21wb25lbnRcIiE9PXAmJlwiYXNcIiE9PXAmJihcImZvcndhcmRlZFJlZlwiPT09cD9kLnJlZj1mW3BdOlwiZm9yd2FyZGVkQXNcIj09PXA/ZC5hcz1mW3BdOnUmJiFoKHApfHwoZFtwXT1mW3BdKSk7cmV0dXJuIHRoaXMucHJvcHMuc3R5bGUmJnRoaXMuYXR0cnMuc3R5bGUmJihkLnN0eWxlPVIoe30sdGhpcy5hdHRycy5zdHlsZSx0aGlzLnByb3BzLnN0eWxlKSksZC5jbGFzc05hbWU9QXJyYXkucHJvdG90eXBlLmNvbmNhdChvLGEsYyE9PWE/YzpudWxsLHRoaXMucHJvcHMuY2xhc3NOYW1lLHRoaXMuYXR0cnMuY2xhc3NOYW1lKS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIiksKDAsbC5jcmVhdGVFbGVtZW50KShzLGQpfSx0LnByb3RvdHlwZS5idWlsZEV4ZWN1dGlvbkNvbnRleHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMsbz1SKHt9LHQse3RoZW1lOmV9KTtyZXR1cm4gbi5sZW5ndGg/KHRoaXMuYXR0cnM9e30sbi5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdCxuPWUsYT0hMSxpPXZvaWQgMCxsPXZvaWQgMDtmb3IobCBpbiBUKG4pJiYobj1uKG8pLGE9ITApLG4paT1uW2xdLGF8fCFUKGkpfHwodD1pKSYmdC5wcm90b3R5cGUmJnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnR8fEYoaSl8fChpPWkobykpLHIuYXR0cnNbbF09aSxvW2xdPWl9KSksbyk6b30sdC5wcm90b3R5cGUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmZvcndhcmRlZENvbXBvbmVudCxyPW4uYXR0cnMsbz1uLmNvbXBvbmVudFN0eWxlO24ud2FyblRvb01hbnlDbGFzc2VzO3JldHVybiBvLmlzU3RhdGljJiYhci5sZW5ndGg/by5nZW5lcmF0ZUFuZEluamVjdFN0eWxlcyhCLHRoaXMuc3R5bGVTaGVldCk6by5nZW5lcmF0ZUFuZEluamVjdFN0eWxlcyh0aGlzLmJ1aWxkRXhlY3V0aW9uQ29udGV4dChlLHQsciksdGhpcy5zdHlsZVNoZWV0KX0sdH0obC5Db21wb25lbnQpO2Z1bmN0aW9uIHd0KGUsdCxuKXt2YXIgcj1GKGUpLG89IVhlKGUpLGE9dC5kaXNwbGF5TmFtZSxpPXZvaWQgMD09PWE/ZnVuY3Rpb24oZSl7cmV0dXJuIFhlKGUpP1wic3R5bGVkLlwiK2U6XCJTdHlsZWQoXCIrJChlKStcIilcIn0oZSk6YSxjPXQuY29tcG9uZW50SWQscz12b2lkIDA9PT1jP2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1cInN0cmluZ1wiIT10eXBlb2YgdD9cInNjXCI6S2UodCksbz0oZ3Rbcl18fDApKzE7Z3Rbcl09bzt2YXIgYT1yK1wiLVwiK2UuZ2VuZXJhdGVOYW1lKHIrbyk7cmV0dXJuIG4/bitcIi1cIithOmF9KFVlLHQuZGlzcGxheU5hbWUsdC5wYXJlbnRDb21wb25lbnRJZCk6Yyx1PXQuUGFyZW50Q29tcG9uZW50LGQ9dm9pZCAwPT09dT9tdDp1LGY9dC5hdHRycyxwPXZvaWQgMD09PWY/RDpmLGg9dC5kaXNwbGF5TmFtZSYmdC5jb21wb25lbnRJZD9LZSh0LmRpc3BsYXlOYW1lKStcIi1cIit0LmNvbXBvbmVudElkOnQuY29tcG9uZW50SWR8fHMsQz1yJiZlLmF0dHJzP0FycmF5LnByb3RvdHlwZS5jb25jYXQoZS5hdHRycyxwKS5maWx0ZXIoQm9vbGVhbik6cCx2PW5ldyBVZShyP2UuY29tcG9uZW50U3R5bGUucnVsZXMuY29uY2F0KG4pOm4sQyxoKSxnPXZvaWQgMCxtPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGwuY3JlYXRlRWxlbWVudChkLFIoe30sZSx7Zm9yd2FyZGVkQ29tcG9uZW50OmcsZm9yd2FyZGVkUmVmOnR9KSl9O3JldHVybiBtLmRpc3BsYXlOYW1lPWksKGc9bC5mb3J3YXJkUmVmKG0pKS5kaXNwbGF5TmFtZT1pLGcuYXR0cnM9QyxnLmNvbXBvbmVudFN0eWxlPXYsZy5mb2xkZWRDb21wb25lbnRJZHM9cj9BcnJheS5wcm90b3R5cGUuY29uY2F0KGUuZm9sZGVkQ29tcG9uZW50SWRzLGUuc3R5bGVkQ29tcG9uZW50SWQpOkQsZy5zdHlsZWRDb21wb25lbnRJZD1oLGcudGFyZ2V0PXI/ZS50YXJnZXQ6ZSxnLndpdGhDb21wb25lbnQ9ZnVuY3Rpb24oZSl7dmFyIHI9dC5jb21wb25lbnRJZCxvPWZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59KHQsW1wiY29tcG9uZW50SWRcIl0pLGE9ciYmcitcIi1cIisoWGUoZSk/ZTpLZSgkKGUpKSk7cmV0dXJuIHd0KGUsUih7fSxvLHthdHRyczpDLGNvbXBvbmVudElkOmEsUGFyZW50Q29tcG9uZW50OmR9KSxuKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGcsXCJkZWZhdWx0UHJvcHNcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvbGRlZERlZmF1bHRQcm9wc30sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2ZvbGRlZERlZmF1bHRQcm9wcz1yP0UoZS5kZWZhdWx0UHJvcHMsdCk6dH19KSxnLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuXCIuXCIrZy5zdHlsZWRDb21wb25lbnRJZH0sbyYmc3QoZyxlLHthdHRyczohMCxjb21wb25lbnRTdHlsZTohMCxkaXNwbGF5TmFtZTohMCxmb2xkZWRDb21wb25lbnRJZHM6ITAsc3R5bGVkQ29tcG9uZW50SWQ6ITAsdGFyZ2V0OiEwLHdpdGhDb21wb25lbnQ6ITB9KSxnfXZhciB5dD1mdW5jdGlvbihlKXtyZXR1cm4gRGUod3QsZSl9O1tcImFcIixcImFiYnJcIixcImFkZHJlc3NcIixcImFyZWFcIixcImFydGljbGVcIixcImFzaWRlXCIsXCJhdWRpb1wiLFwiYlwiLFwiYmFzZVwiLFwiYmRpXCIsXCJiZG9cIixcImJpZ1wiLFwiYmxvY2txdW90ZVwiLFwiYm9keVwiLFwiYnJcIixcImJ1dHRvblwiLFwiY2FudmFzXCIsXCJjYXB0aW9uXCIsXCJjaXRlXCIsXCJjb2RlXCIsXCJjb2xcIixcImNvbGdyb3VwXCIsXCJkYXRhXCIsXCJkYXRhbGlzdFwiLFwiZGRcIixcImRlbFwiLFwiZGV0YWlsc1wiLFwiZGZuXCIsXCJkaWFsb2dcIixcImRpdlwiLFwiZGxcIixcImR0XCIsXCJlbVwiLFwiZW1iZWRcIixcImZpZWxkc2V0XCIsXCJmaWdjYXB0aW9uXCIsXCJmaWd1cmVcIixcImZvb3RlclwiLFwiZm9ybVwiLFwiaDFcIixcImgyXCIsXCJoM1wiLFwiaDRcIixcImg1XCIsXCJoNlwiLFwiaGVhZFwiLFwiaGVhZGVyXCIsXCJoZ3JvdXBcIixcImhyXCIsXCJodG1sXCIsXCJpXCIsXCJpZnJhbWVcIixcImltZ1wiLFwiaW5wdXRcIixcImluc1wiLFwia2JkXCIsXCJrZXlnZW5cIixcImxhYmVsXCIsXCJsZWdlbmRcIixcImxpXCIsXCJsaW5rXCIsXCJtYWluXCIsXCJtYXBcIixcIm1hcmtcIixcIm1hcnF1ZWVcIixcIm1lbnVcIixcIm1lbnVpdGVtXCIsXCJtZXRhXCIsXCJtZXRlclwiLFwibmF2XCIsXCJub3NjcmlwdFwiLFwib2JqZWN0XCIsXCJvbFwiLFwib3B0Z3JvdXBcIixcIm9wdGlvblwiLFwib3V0cHV0XCIsXCJwXCIsXCJwYXJhbVwiLFwicGljdHVyZVwiLFwicHJlXCIsXCJwcm9ncmVzc1wiLFwicVwiLFwicnBcIixcInJ0XCIsXCJydWJ5XCIsXCJzXCIsXCJzYW1wXCIsXCJzY3JpcHRcIixcInNlY3Rpb25cIixcInNlbGVjdFwiLFwic21hbGxcIixcInNvdXJjZVwiLFwic3BhblwiLFwic3Ryb25nXCIsXCJzdHlsZVwiLFwic3ViXCIsXCJzdW1tYXJ5XCIsXCJzdXBcIixcInRhYmxlXCIsXCJ0Ym9keVwiLFwidGRcIixcInRleHRhcmVhXCIsXCJ0Zm9vdFwiLFwidGhcIixcInRoZWFkXCIsXCJ0aW1lXCIsXCJ0aXRsZVwiLFwidHJcIixcInRyYWNrXCIsXCJ1XCIsXCJ1bFwiLFwidmFyXCIsXCJ2aWRlb1wiLFwid2JyXCIsXCJjaXJjbGVcIixcImNsaXBQYXRoXCIsXCJkZWZzXCIsXCJlbGxpcHNlXCIsXCJmb3JlaWduT2JqZWN0XCIsXCJnXCIsXCJpbWFnZVwiLFwibGluZVwiLFwibGluZWFyR3JhZGllbnRcIixcIm1hcmtlclwiLFwibWFza1wiLFwicGF0aFwiLFwicGF0dGVyblwiLFwicG9seWdvblwiLFwicG9seWxpbmVcIixcInJhZGlhbEdyYWRpZW50XCIsXCJyZWN0XCIsXCJzdG9wXCIsXCJzdmdcIixcInRleHRcIixcInRzcGFuXCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3l0W2VdPXl0KGUpfSkpO3ZhciBidD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuKXtIKHRoaXMsZSksdGhpcy5ydWxlcz10LHRoaXMuY29tcG9uZW50SWQ9bix0aGlzLmlzU3RhdGljPVdlKHQsRCksRWUubWFzdGVyLmhhc0lkKG4pfHxFZS5tYXN0ZXIuZGVmZXJyZWRJbmplY3QobixbXSl9cmV0dXJuIGUucHJvdG90eXBlLmNyZWF0ZVN0eWxlcz1mdW5jdGlvbihlLHQpe3ZhciBuPXNlKFplKHRoaXMucnVsZXMsZSx0KSxcIlwiKTt0LmluamVjdCh0aGlzLmNvbXBvbmVudElkLG4pfSxlLnByb3RvdHlwZS5yZW1vdmVTdHlsZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jb21wb25lbnRJZDtlLmhhc0lkKHQpJiZlLnJlbW92ZSh0KX0sZS5wcm90b3R5cGUucmVuZGVyU3R5bGVzPWZ1bmN0aW9uKGUsdCl7dGhpcy5yZW1vdmVTdHlsZXModCksdGhpcy5jcmVhdGVTdHlsZXMoZSx0KX0sZX0oKTtmdW5jdGlvbiB4dChlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTt2YXIgbz1BZS5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChuKSksYT1cInNjLWdsb2JhbC1cIitCZShKU09OLnN0cmluZ2lmeShvKSksaT1uZXcgYnQobyxhKSxjPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7SCh0aGlzLHQpO3ZhciByPVoodGhpcyxlLmNhbGwodGhpcyxuKSksbz1yLmNvbnN0cnVjdG9yLGE9by5nbG9iYWxTdHlsZSxpPW8uc3R5bGVkQ29tcG9uZW50SWQ7cmV0dXJuIFUmJih3aW5kb3cuc2NDR1NITVJDYWNoZVtpXT0od2luZG93LnNjQ0dTSE1SQ2FjaGVbaV18fDApKzEpLHIuc3RhdGU9e2dsb2JhbFN0eWxlOmEsc3R5bGVkQ29tcG9uZW50SWQ6aX0scn1yZXR1cm4gSSh0LGUpLHQucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7d2luZG93LnNjQ0dTSE1SQ2FjaGVbdGhpcy5zdGF0ZS5zdHlsZWRDb21wb25lbnRJZF0mJih3aW5kb3cuc2NDR1NITVJDYWNoZVt0aGlzLnN0YXRlLnN0eWxlZENvbXBvbmVudElkXS09MSksMD09PXdpbmRvdy5zY0NHU0hNUkNhY2hlW3RoaXMuc3RhdGUuc3R5bGVkQ29tcG9uZW50SWRdJiZ0aGlzLnN0YXRlLmdsb2JhbFN0eWxlLnJlbW92ZVN0eWxlcyh0aGlzLnN0eWxlU2hlZXQpfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBsLmNyZWF0ZUVsZW1lbnQoQ3QsbnVsbCwoZnVuY3Rpb24odCl7ZS5zdHlsZVNoZWV0PXR8fEVlLm1hc3Rlcjt2YXIgbj1lLnN0YXRlLmdsb2JhbFN0eWxlO3JldHVybiBuLmlzU3RhdGljPyhuLnJlbmRlclN0eWxlcyhxLGUuc3R5bGVTaGVldCksbnVsbCk6bC5jcmVhdGVFbGVtZW50KGR0LG51bGwsKGZ1bmN0aW9uKHQpe3ZhciByPWUuY29uc3RydWN0b3IuZGVmYXVsdFByb3BzLG89Uih7fSxlLnByb3BzKTtyZXR1cm4gdm9pZCAwIT09dCYmKG8udGhlbWU9R2UoZS5wcm9wcyx0LHIpKSxuLnJlbmRlclN0eWxlcyhvLGUuc3R5bGVTaGVldCksbnVsbH0pKX0pKX0sdH0obC5Db21wb25lbnQpO3JldHVybiBjLmdsb2JhbFN0eWxlPWksYy5zdHlsZWRDb21wb25lbnRJZD1hLGN9VSYmKHdpbmRvdy5zY0NHU0hNUkNhY2hlPXt9KTt2YXIgT3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXFxzfFxcXFxuL2csXCJcIil9O2Z1bmN0aW9uIEx0KGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkodD4xP3QtMTowKSxyPTE7cjx0O3IrKyluW3ItMV09YXJndW1lbnRzW3JdO3ZhciBvPUFlLmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KG4pKSxhPUZlKEJlKE90KEpTT04uc3RyaW5naWZ5KG8pKSkpO3JldHVybiBuZXcgUGUoYSxzZShvLGEsXCJAa2V5ZnJhbWVzXCIpKX12YXIgTXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bC5mb3J3YXJkUmVmKChmdW5jdGlvbih0LG4pe3JldHVybiBsLmNyZWF0ZUVsZW1lbnQoZHQsbnVsbCwoZnVuY3Rpb24ocil7dmFyIG89ZS5kZWZhdWx0UHJvcHMsYT1HZSh0LHIsbyk7cmV0dXJuIGwuY3JlYXRlRWxlbWVudChlLFIoe30sdCx7dGhlbWU6YSxyZWY6bn0pKX0pKX0pKTtyZXR1cm4gc3QodCxlKSx0LmRpc3BsYXlOYW1lPVwiV2l0aFRoZW1lKFwiKyQoZSkrXCIpXCIsdH0sU3Q9e1N0eWxlU2hlZXQ6RWV9O2NvbnN0IF90PXl0fSwyNDY6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1cIi8qfCovXCIsbj10K1wifVwiO2Z1bmN0aW9uIHIodCl7aWYodCl0cnl7ZSh0K1wifVwiKX1jYXRjaChlKXt9fXJldHVybiBmdW5jdGlvbihvLGEsaSxsLGMscyx1LGQsZixwKXtzd2l0Y2gobyl7Y2FzZSAxOmlmKDA9PT1mJiY2ND09PWEuY2hhckNvZGVBdCgwKSlyZXR1cm4gZShhK1wiO1wiKSxcIlwiO2JyZWFrO2Nhc2UgMjppZigwPT09ZClyZXR1cm4gYSt0O2JyZWFrO2Nhc2UgMzpzd2l0Y2goZCl7Y2FzZSAxMDI6Y2FzZSAxMTI6cmV0dXJuIGUoaVswXSthKSxcIlwiO2RlZmF1bHQ6cmV0dXJuIGErKDA9PT1wP3Q6XCJcIil9Y2FzZS0yOmEuc3BsaXQobikuZm9yRWFjaChyKX19fX0oKX0sOTQ2OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0KXtcInVzZSBzdHJpY3RcIjt2YXIgbj0vXlxcMCsvZyxyPS9bXFwwXFxyXFxmXS9nLG89LzogKi9nLGE9L3pvb3xncmEvLGk9LyhbLDogXSkodHJhbnNmb3JtKS9nLGw9LywrXFxzKig/IVteKF0qWyldKS9nLGM9LyArXFxzKig/IVteKF0qWyldKS9nLHM9LyAqW1xcMF0gKi9nLHU9LyxcXHIrPy9nLGQ9LyhbXFx0XFxyXFxuIF0pKlxcZj8mL2csZj0vOmdsb2JhbFxcKCgoPzpbXlxcKFxcKVxcW1xcXV0qfFxcWy4qXFxdfFxcKFteXFwoXFwpXSpcXCkpKilcXCkvZyxwPS9cXFcrL2csaD0vQChrXFx3KylcXHMqKFxcUyopXFxzKi8sQz0vOjoocGxhY2UpL2csdj0vOihyZWFkLW9ubHkpL2csZz0vXFxzKyg/PVt7XFxdOz06Pl0pL2csbT0vKFtbfT06Pl0pXFxzKy9nLHc9LyhcXHtbXntdKz8pOyg/PVxcfSkvZyx5PS9cXHN7Mix9L2csYj0vKFteXFwoXSkoOispICovZyx4PS9bc3ZoXVxcdystW3RibHJdezJ9LyxPPS9cXChcXHMqKC4qKVxccypcXCkvZyxMPS8oW1xcc1xcU10qPyk7L2csTT0vLXNlbGZ8ZmxleC0vZyxTPS9bXl0qPyg6W3JwXVtlbF1hW1xcdy1dKylbXl0qLyxfPS9zdHJldGNofDpcXHMqXFx3K1xcLSg/OmNvbnRlfGF2YWlsKS8saj0vKFteLV0pKGltYWdlLXNldFxcKCkvLEU9XCItd2Via2l0LVwiLFA9XCItbW96LVwiLGs9XCItbXMtXCIsSD01OSxWPTEyNSxSPTEyMyxJPTQwLFo9NDEsQT05MSxEPTkzLEI9MTAsVD0xMywkPTksRj02NCxXPTMyLE49Mzgsej00NSxVPTk1LEc9NDIscT00NCxZPTU4LEs9MzksWD0zNCxRPTQ3LEo9NjIsZWU9NDMsdGU9MTI2LG5lPTAscmU9MTIsb2U9MTEsYWU9MTA3LGllPTEwOSxsZT0xMTUsY2U9MTEyLHNlPTExMSx1ZT0xMDUsZGU9OTksZmU9MTAwLHBlPTExMixoZT0xLENlPTEsdmU9MCxnZT0xLG1lPTEsd2U9MSx5ZT0wLGJlPTAseGU9MCxPZT1bXSxMZT1bXSxNZT0wLFNlPW51bGwsX2U9LTIsamU9LTEsRWU9MCxQZT0xLGtlPTIsSGU9MyxWZT0wLFJlPTEsSWU9XCJcIixaZT1cIlwiLEFlPVwiXCI7ZnVuY3Rpb24gRGUoZSx0LG8sYSxpKXtmb3IodmFyIGwsYyx1PTAsZD0wLGY9MCxwPTAsZz0wLG09MCx3PTAseT0wLHg9MCxMPTAsTT0wLFM9MCxfPTAsaj0wLFU9MCx5ZT0wLExlPTAsU2U9MCxfZT0wLGplPW8ubGVuZ3RoLFRlPWplLTEsVWU9XCJcIixHZT1cIlwiLHFlPVwiXCIsWWU9XCJcIixLZT1cIlwiLFhlPVwiXCI7VTxqZTspe2lmKHc9by5jaGFyQ29kZUF0KFUpLFU9PT1UZSYmZCtwK2YrdSE9PTAmJigwIT09ZCYmKHc9ZD09PVE/QjpRKSxwPWY9dT0wLGplKyssVGUrKyksZCtwK2YrdT09PTApe2lmKFU9PT1UZSYmKHllPjAmJihHZT1HZS5yZXBsYWNlKHIsXCJcIikpLEdlLnRyaW0oKS5sZW5ndGg+MCkpe3N3aXRjaCh3KXtjYXNlIFc6Y2FzZSAkOmNhc2UgSDpjYXNlIFQ6Y2FzZSBCOmJyZWFrO2RlZmF1bHQ6R2UrPW8uY2hhckF0KFUpfXc9SH1pZigxPT09TGUpc3dpdGNoKHcpe2Nhc2UgUjpjYXNlIFY6Y2FzZSBIOmNhc2UgWDpjYXNlIEs6Y2FzZSBJOmNhc2UgWjpjYXNlIHE6TGU9MDtjYXNlICQ6Y2FzZSBUOmNhc2UgQjpjYXNlIFc6YnJlYWs7ZGVmYXVsdDpmb3IoTGU9MCxfZT1VLGc9dyxVLS0sdz1IO19lPGplOylzd2l0Y2goby5jaGFyQ29kZUF0KF9lKyspKXtjYXNlIEI6Y2FzZSBUOmNhc2UgSDorK1Usdz1nLF9lPWplO2JyZWFrO2Nhc2UgWTp5ZT4wJiYoKytVLHc9Zyk7Y2FzZSBSOl9lPWplfX1zd2l0Y2godyl7Y2FzZSBSOmZvcihnPShHZT1HZS50cmltKCkpLmNoYXJDb2RlQXQoMCksTT0xLF9lPSsrVTtVPGplOyl7c3dpdGNoKHc9by5jaGFyQ29kZUF0KFUpKXtjYXNlIFI6TSsrO2JyZWFrO2Nhc2UgVjpNLS07YnJlYWs7Y2FzZSBROnN3aXRjaChtPW8uY2hhckNvZGVBdChVKzEpKXtjYXNlIEc6Y2FzZSBROlU9emUobSxVLFRlLG8pfWJyZWFrO2Nhc2UgQTp3Kys7Y2FzZSBJOncrKztjYXNlIFg6Y2FzZSBLOmZvcig7VSsrPFRlJiZvLmNoYXJDb2RlQXQoVSkhPT13Oyk7fWlmKDA9PT1NKWJyZWFrO1UrK31pZihxZT1vLnN1YnN0cmluZyhfZSxVKSxnPT09bmUmJihnPShHZT1HZS5yZXBsYWNlKG4sXCJcIikudHJpbSgpKS5jaGFyQ29kZUF0KDApKSxnPT09Ril7c3dpdGNoKHllPjAmJihHZT1HZS5yZXBsYWNlKHIsXCJcIikpLG09R2UuY2hhckNvZGVBdCgxKSl7Y2FzZSBmZTpjYXNlIGllOmNhc2UgbGU6Y2FzZSB6Omw9dDticmVhaztkZWZhdWx0Omw9T2V9aWYoX2U9KHFlPURlKHQsbCxxZSxtLGkrMSkpLmxlbmd0aCx4ZT4wJiYwPT09X2UmJihfZT1HZS5sZW5ndGgpLE1lPjAmJihsPUJlKE9lLEdlLFNlKSxjPU5lKEhlLHFlLGwsdCxDZSxoZSxfZSxtLGksYSksR2U9bC5qb2luKFwiXCIpLHZvaWQgMCE9PWMmJjA9PT0oX2U9KHFlPWMudHJpbSgpKS5sZW5ndGgpJiYobT0wLHFlPVwiXCIpKSxfZT4wKXN3aXRjaChtKXtjYXNlIGxlOkdlPUdlLnJlcGxhY2UoTyxXZSk7Y2FzZSBmZTpjYXNlIGllOmNhc2UgejpxZT1HZStcIntcIitxZStcIn1cIjticmVhaztjYXNlIGFlOnFlPShHZT1HZS5yZXBsYWNlKGgsXCIkMSAkMlwiKyhSZT4wP0llOlwiXCIpKSkrXCJ7XCIrcWUrXCJ9XCIscWU9MT09PW1lfHwyPT09bWUmJkZlKFwiQFwiK3FlLDMpP1wiQFwiK0UrcWUrXCJAXCIrcWU6XCJAXCIrcWU7YnJlYWs7ZGVmYXVsdDpxZT1HZStxZSxhPT09cGUmJihZZSs9cWUscWU9XCJcIil9ZWxzZSBxZT1cIlwifWVsc2UgcWU9RGUodCxCZSh0LEdlLFNlKSxxZSxhLGkrMSk7S2UrPXFlLFM9MCxMZT0wLGo9MCx5ZT0wLFNlPTAsXz0wLEdlPVwiXCIscWU9XCJcIix3PW8uY2hhckNvZGVBdCgrK1UpO2JyZWFrO2Nhc2UgVjpjYXNlIEg6aWYoKF9lPShHZT0oeWU+MD9HZS5yZXBsYWNlKHIsXCJcIik6R2UpLnRyaW0oKSkubGVuZ3RoKT4xKXN3aXRjaCgwPT09aiYmKChnPUdlLmNoYXJDb2RlQXQoMCkpPT09enx8Zz45NiYmZzwxMjMpJiYoX2U9KEdlPUdlLnJlcGxhY2UoXCIgXCIsXCI6XCIpKS5sZW5ndGgpLE1lPjAmJnZvaWQgMCE9PShjPU5lKFBlLEdlLHQsZSxDZSxoZSxZZS5sZW5ndGgsYSxpLGEpKSYmMD09PShfZT0oR2U9Yy50cmltKCkpLmxlbmd0aCkmJihHZT1cIlxcMFxcMFwiKSxnPUdlLmNoYXJDb2RlQXQoMCksbT1HZS5jaGFyQ29kZUF0KDEpLGcpe2Nhc2UgbmU6YnJlYWs7Y2FzZSBGOmlmKG09PT11ZXx8bT09PWRlKXtYZSs9R2Urby5jaGFyQXQoVSk7YnJlYWt9ZGVmYXVsdDppZihHZS5jaGFyQ29kZUF0KF9lLTEpPT09WSlicmVhaztZZSs9JGUoR2UsZyxtLEdlLmNoYXJDb2RlQXQoMikpfVM9MCxMZT0wLGo9MCx5ZT0wLFNlPTAsR2U9XCJcIix3PW8uY2hhckNvZGVBdCgrK1UpfX1zd2l0Y2godyl7Y2FzZSBUOmNhc2UgQjppZihkK3ArZit1K2JlPT09MClzd2l0Y2goTCl7Y2FzZSBaOmNhc2UgSzpjYXNlIFg6Y2FzZSBGOmNhc2UgdGU6Y2FzZSBKOmNhc2UgRzpjYXNlIGVlOmNhc2UgUTpjYXNlIHo6Y2FzZSBZOmNhc2UgcTpjYXNlIEg6Y2FzZSBSOmNhc2UgVjpicmVhaztkZWZhdWx0Omo+MCYmKExlPTEpfWQ9PT1RP2Q9MDpnZStTPT09MCYmYSE9PWFlJiZHZS5sZW5ndGg+MCYmKHllPTEsR2UrPVwiXFwwXCIpLE1lKlZlPjAmJk5lKEVlLEdlLHQsZSxDZSxoZSxZZS5sZW5ndGgsYSxpLGEpLGhlPTEsQ2UrKzticmVhaztjYXNlIEg6Y2FzZSBWOmlmKGQrcCtmK3U9PT0wKXtoZSsrO2JyZWFrfWRlZmF1bHQ6c3dpdGNoKGhlKyssVWU9by5jaGFyQXQoVSksdyl7Y2FzZSAkOmNhc2UgVzppZihwK3UrZD09PTApc3dpdGNoKHkpe2Nhc2UgcTpjYXNlIFk6Y2FzZSAkOmNhc2UgVzpVZT1cIlwiO2JyZWFrO2RlZmF1bHQ6dyE9PVcmJihVZT1cIiBcIil9YnJlYWs7Y2FzZSBuZTpVZT1cIlxcXFwwXCI7YnJlYWs7Y2FzZSByZTpVZT1cIlxcXFxmXCI7YnJlYWs7Y2FzZSBvZTpVZT1cIlxcXFx2XCI7YnJlYWs7Y2FzZSBOOnArZCt1PT09MCYmZ2U+MCYmKFNlPTEseWU9MSxVZT1cIlxcZlwiK1VlKTticmVhaztjYXNlIDEwODppZihwK2QrdSt2ZT09PTAmJmo+MClzd2l0Y2goVS1qKXtjYXNlIDI6eT09PWNlJiZvLmNoYXJDb2RlQXQoVS0zKT09PVkmJih2ZT15KTtjYXNlIDg6eD09PXNlJiYodmU9eCl9YnJlYWs7Y2FzZSBZOnArZCt1PT09MCYmKGo9VSk7YnJlYWs7Y2FzZSBxOmQrZitwK3U9PT0wJiYoeWU9MSxVZSs9XCJcXHJcIik7YnJlYWs7Y2FzZSBYOmNhc2UgSzowPT09ZCYmKHA9cD09PXc/MDowPT09cD93OnApO2JyZWFrO2Nhc2UgQTpwK2QrZj09PTAmJnUrKzticmVhaztjYXNlIEQ6cCtkK2Y9PT0wJiZ1LS07YnJlYWs7Y2FzZSBaOnArZCt1PT09MCYmZi0tO2JyZWFrO2Nhc2UgSTpwK2QrdT09PTAmJigwPT09UyYmKDIqeSszKng9PTUzM3x8KE09MCxTPTEpKSxmKyspO2JyZWFrO2Nhc2UgRjpkK2YrcCt1K2orXz09PTAmJihfPTEpO2JyZWFrO2Nhc2UgRzpjYXNlIFE6aWYocCt1K2Y+MClicmVhaztzd2l0Y2goZCl7Y2FzZSAwOnN3aXRjaCgyKncrMypvLmNoYXJDb2RlQXQoVSsxKSl7Y2FzZSAyMzU6ZD1RO2JyZWFrO2Nhc2UgMjIwOl9lPVUsZD1HfWJyZWFrO2Nhc2UgRzp3PT09USYmeT09PUcmJl9lKzIhPT1VJiYoMzM9PT1vLmNoYXJDb2RlQXQoX2UrMikmJihZZSs9by5zdWJzdHJpbmcoX2UsVSsxKSksVWU9XCJcIixkPTApfX1pZigwPT09ZCl7aWYoZ2UrcCt1K189PT0wJiZhIT09YWUmJnchPT1IKXN3aXRjaCh3KXtjYXNlIHE6Y2FzZSB0ZTpjYXNlIEo6Y2FzZSBlZTpjYXNlIFo6Y2FzZSBJOmlmKDA9PT1TKXtzd2l0Y2goeSl7Y2FzZSAkOmNhc2UgVzpjYXNlIEI6Y2FzZSBUOlVlKz1cIlxcMFwiO2JyZWFrO2RlZmF1bHQ6VWU9XCJcXDBcIitVZSsodz09PXE/XCJcIjpcIlxcMFwiKX15ZT0xfWVsc2Ugc3dpdGNoKHcpe2Nhc2UgSTpqKzc9PT1VJiYxMDg9PT15JiYoaj0wKSxTPSsrTTticmVhaztjYXNlIFo6MD09KFM9LS1NKSYmKHllPTEsVWUrPVwiXFwwXCIpfWJyZWFrO2Nhc2UgJDpjYXNlIFc6c3dpdGNoKHkpe2Nhc2UgbmU6Y2FzZSBSOmNhc2UgVjpjYXNlIEg6Y2FzZSBxOmNhc2UgcmU6Y2FzZSAkOmNhc2UgVzpjYXNlIEI6Y2FzZSBUOmJyZWFrO2RlZmF1bHQ6MD09PVMmJih5ZT0xLFVlKz1cIlxcMFwiKX19R2UrPVVlLHchPT1XJiZ3IT09JCYmKEw9dyl9fXg9eSx5PXcsVSsrfWlmKF9lPVllLmxlbmd0aCx4ZT4wJiYwPT09X2UmJjA9PT1LZS5sZW5ndGgmJjA9PT10WzBdLmxlbmd0aD09MCYmKGEhPT1pZXx8MT09PXQubGVuZ3RoJiYoZ2U+MD9aZTpBZSk9PT10WzBdKSYmKF9lPXQuam9pbihcIixcIikubGVuZ3RoKzIpLF9lPjApe2lmKGw9MD09PWdlJiZhIT09YWU/ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG4sbz0wLGE9ZS5sZW5ndGgsaT1BcnJheShhKTtvPGE7KytvKXtmb3IodmFyIGw9ZVtvXS5zcGxpdChzKSxjPVwiXCIsdT0wLGQ9MCxmPTAscD0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZighKDA9PT0oZD0obj1sW3VdKS5sZW5ndGgpJiZoPjEpKXtpZihmPWMuY2hhckNvZGVBdChjLmxlbmd0aC0xKSxwPW4uY2hhckNvZGVBdCgwKSx0PVwiXCIsMCE9PXUpc3dpdGNoKGYpe2Nhc2UgRzpjYXNlIHRlOmNhc2UgSjpjYXNlIGVlOmNhc2UgVzpjYXNlIEk6YnJlYWs7ZGVmYXVsdDp0PVwiIFwifXN3aXRjaChwKXtjYXNlIE46bj10K1plO2Nhc2UgdGU6Y2FzZSBKOmNhc2UgZWU6Y2FzZSBXOmNhc2UgWjpjYXNlIEk6YnJlYWs7Y2FzZSBBOm49dCtuK1plO2JyZWFrO2Nhc2UgWTpzd2l0Y2goMipuLmNoYXJDb2RlQXQoMSkrMypuLmNoYXJDb2RlQXQoMikpe2Nhc2UgNTMwOmlmKHdlPjApe249dCtuLnN1YnN0cmluZyg4LGQtMSk7YnJlYWt9ZGVmYXVsdDoodTwxfHxsW3UtMV0ubGVuZ3RoPDEpJiYobj10K1plK24pfWJyZWFrO2Nhc2UgcTp0PVwiXCI7ZGVmYXVsdDpuPWQ+MSYmbi5pbmRleE9mKFwiOlwiKT4wP3Qrbi5yZXBsYWNlKGIsXCIkMVwiK1plK1wiJDJcIik6dCtuK1plfWMrPW59aVtvXT1jLnJlcGxhY2UocixcIlwiKS50cmltKCl9cmV0dXJuIGl9KHQpOnQsTWU+MCYmdm9pZCAwIT09KGM9TmUoa2UsWWUsbCxlLENlLGhlLF9lLGEsaSxhKSkmJjA9PT0oWWU9YykubGVuZ3RoKXJldHVybiBYZStZZStLZTtpZihZZT1sLmpvaW4oXCIsXCIpK1wie1wiK1llK1wifVwiLG1lKnZlIT0wKXtzd2l0Y2goMiE9PW1lfHxGZShZZSwyKXx8KHZlPTApLHZlKXtjYXNlIHNlOlllPVllLnJlcGxhY2UodixcIjpcIitQK1wiJDFcIikrWWU7YnJlYWs7Y2FzZSBjZTpZZT1ZZS5yZXBsYWNlKEMsXCI6OlwiK0UrXCJpbnB1dC0kMVwiKStZZS5yZXBsYWNlKEMsXCI6OlwiK1ArXCIkMVwiKStZZS5yZXBsYWNlKEMsXCI6XCIraytcImlucHV0LSQxXCIpK1llfXZlPTB9fXJldHVybiBYZStZZStLZX1mdW5jdGlvbiBCZShlLHQsbil7dmFyIHI9dC50cmltKCkuc3BsaXQodSksbz1yLGE9ci5sZW5ndGgsaT1lLmxlbmd0aDtzd2l0Y2goaSl7Y2FzZSAwOmNhc2UgMTpmb3IodmFyIGw9MCxjPTA9PT1pP1wiXCI6ZVswXStcIiBcIjtsPGE7KytsKW9bbF09VGUoYyxvW2xdLG4saSkudHJpbSgpO2JyZWFrO2RlZmF1bHQ6bD0wO3ZhciBzPTA7Zm9yKG89W107bDxhOysrbClmb3IodmFyIGQ9MDtkPGk7KytkKW9bcysrXT1UZShlW2RdK1wiIFwiLHJbbF0sbixpKS50cmltKCl9cmV0dXJuIG99ZnVuY3Rpb24gVGUoZSx0LG4scil7dmFyIG89dCxhPW8uY2hhckNvZGVBdCgwKTtzd2l0Y2goYTwzMyYmKGE9KG89by50cmltKCkpLmNoYXJDb2RlQXQoMCkpLGEpe2Nhc2UgTjpzd2l0Y2goZ2Urcil7Y2FzZSAwOmNhc2UgMTppZigwPT09ZS50cmltKCkubGVuZ3RoKWJyZWFrO2RlZmF1bHQ6cmV0dXJuIG8ucmVwbGFjZShkLFwiJDFcIitlLnRyaW0oKSl9YnJlYWs7Y2FzZSBZOmlmKDEwMyE9PW8uY2hhckNvZGVBdCgxKSlyZXR1cm4gZS50cmltKCkrby5yZXBsYWNlKGQsXCIkMVwiK2UudHJpbSgpKTtpZih3ZT4wJiZnZT4wKXJldHVybiBvLnJlcGxhY2UoZixcIiQxXCIpLnJlcGxhY2UoZCxcIiQxXCIrQWUpO2RlZmF1bHQ6aWYobipnZT4wJiZvLmluZGV4T2YoXCJcXGZcIik+MClyZXR1cm4gby5yZXBsYWNlKGQsKGUuY2hhckNvZGVBdCgwKT09PVk/XCJcIjpcIiQxXCIpK2UudHJpbSgpKX1yZXR1cm4gZStvfWZ1bmN0aW9uICRlKGUsdCxuLHIpe3ZhciBzLHU9MCxkPWUrXCI7XCIsZj0yKnQrMypuKzQqcjtpZig5NDQ9PT1mKXJldHVybiBmdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aCxuPWUuaW5kZXhPZihcIjpcIiw5KSsxLHI9ZS5zdWJzdHJpbmcoMCxuKS50cmltKCksbz1lLnN1YnN0cmluZyhuLHQtMSkudHJpbSgpO3N3aXRjaChlLmNoYXJDb2RlQXQoOSkqUmUpe2Nhc2UgMDpicmVhaztjYXNlIHo6aWYoMTEwIT09ZS5jaGFyQ29kZUF0KDEwKSlicmVhaztkZWZhdWx0OnZhciBhPW8uc3BsaXQoKG89XCJcIixsKSksaT0wO2ZvcihuPTAsdD1hLmxlbmd0aDtpPHQ7bj0wLCsraSl7Zm9yKHZhciBzPWFbaV0sdT1zLnNwbGl0KGMpO3M9dVtuXTspe3ZhciBkPXMuY2hhckNvZGVBdCgwKTtpZigxPT09UmUmJihkPkYmJmQ8OTB8fGQ+OTYmJmQ8MTIzfHxkPT09VXx8ZD09PXomJnMuY2hhckNvZGVBdCgxKSE9PXopJiZpc05hTihwYXJzZUZsb2F0KHMpKSsoLTEhPT1zLmluZGV4T2YoXCIoXCIpKT09PTEpc3dpdGNoKHMpe2Nhc2VcImluZmluaXRlXCI6Y2FzZVwiYWx0ZXJuYXRlXCI6Y2FzZVwiYmFja3dhcmRzXCI6Y2FzZVwicnVubmluZ1wiOmNhc2VcIm5vcm1hbFwiOmNhc2VcImZvcndhcmRzXCI6Y2FzZVwiYm90aFwiOmNhc2VcIm5vbmVcIjpjYXNlXCJsaW5lYXJcIjpjYXNlXCJlYXNlXCI6Y2FzZVwiZWFzZS1pblwiOmNhc2VcImVhc2Utb3V0XCI6Y2FzZVwiZWFzZS1pbi1vdXRcIjpjYXNlXCJwYXVzZWRcIjpjYXNlXCJyZXZlcnNlXCI6Y2FzZVwiYWx0ZXJuYXRlLXJldmVyc2VcIjpjYXNlXCJpbmhlcml0XCI6Y2FzZVwiaW5pdGlhbFwiOmNhc2VcInVuc2V0XCI6Y2FzZVwic3RlcC1zdGFydFwiOmNhc2VcInN0ZXAtZW5kXCI6YnJlYWs7ZGVmYXVsdDpzKz1JZX11W24rK109c31vKz0oMD09PWk/XCJcIjpcIixcIikrdS5qb2luKFwiIFwiKX19cmV0dXJuIG89citvK1wiO1wiLDE9PT1tZXx8Mj09PW1lJiZGZShvLDEpP0UrbytvOm99KGQpO2lmKDA9PT1tZXx8Mj09PW1lJiYhRmUoZCwxKSlyZXR1cm4gZDtzd2l0Y2goZil7Y2FzZSAxMDE1OnJldHVybiA5Nz09PWQuY2hhckNvZGVBdCgxMCk/RStkK2Q6ZDtjYXNlIDk1MTpyZXR1cm4gMTE2PT09ZC5jaGFyQ29kZUF0KDMpP0UrZCtkOmQ7Y2FzZSA5NjM6cmV0dXJuIDExMD09PWQuY2hhckNvZGVBdCg1KT9FK2QrZDpkO2Nhc2UgMTAwOTppZigxMDAhPT1kLmNoYXJDb2RlQXQoNCkpYnJlYWs7Y2FzZSA5Njk6Y2FzZSA5NDI6cmV0dXJuIEUrZCtkO2Nhc2UgOTc4OnJldHVybiBFK2QrUCtkK2Q7Y2FzZSAxMDE5OmNhc2UgOTgzOnJldHVybiBFK2QrUCtkK2srZCtkO2Nhc2UgODgzOnJldHVybiBkLmNoYXJDb2RlQXQoOCk9PT16P0UrZCtkOmQuaW5kZXhPZihcImltYWdlLXNldChcIiwxMSk+MD9kLnJlcGxhY2UoaixcIiQxXCIrRStcIiQyXCIpK2Q6ZDtjYXNlIDkzMjppZihkLmNoYXJDb2RlQXQoNCk9PT16KXN3aXRjaChkLmNoYXJDb2RlQXQoNSkpe2Nhc2UgMTAzOnJldHVybiBFK1wiYm94LVwiK2QucmVwbGFjZShcIi1ncm93XCIsXCJcIikrRStkK2srZC5yZXBsYWNlKFwiZ3Jvd1wiLFwicG9zaXRpdmVcIikrZDtjYXNlIDExNTpyZXR1cm4gRStkK2srZC5yZXBsYWNlKFwic2hyaW5rXCIsXCJuZWdhdGl2ZVwiKStkO2Nhc2UgOTg6cmV0dXJuIEUrZCtrK2QucmVwbGFjZShcImJhc2lzXCIsXCJwcmVmZXJyZWQtc2l6ZVwiKStkfXJldHVybiBFK2QraytkK2Q7Y2FzZSA5NjQ6cmV0dXJuIEUrZCtrK1wiZmxleC1cIitkK2Q7Y2FzZSAxMDIzOmlmKDk5IT09ZC5jaGFyQ29kZUF0KDgpKWJyZWFrO3JldHVybiBzPWQuc3Vic3RyaW5nKGQuaW5kZXhPZihcIjpcIiwxNSkpLnJlcGxhY2UoXCJmbGV4LVwiLFwiXCIpLnJlcGxhY2UoXCJzcGFjZS1iZXR3ZWVuXCIsXCJqdXN0aWZ5XCIpLEUrXCJib3gtcGFja1wiK3MrRStkK2srXCJmbGV4LXBhY2tcIitzK2Q7Y2FzZSAxMDA1OnJldHVybiBhLnRlc3QoZCk/ZC5yZXBsYWNlKG8sXCI6XCIrRSkrZC5yZXBsYWNlKG8sXCI6XCIrUCkrZDpkO2Nhc2UgMWUzOnN3aXRjaCh1PShzPWQuc3Vic3RyaW5nKDEzKS50cmltKCkpLmluZGV4T2YoXCItXCIpKzEscy5jaGFyQ29kZUF0KDApK3MuY2hhckNvZGVBdCh1KSl7Y2FzZSAyMjY6cz1kLnJlcGxhY2UoeCxcInRiXCIpO2JyZWFrO2Nhc2UgMjMyOnM9ZC5yZXBsYWNlKHgsXCJ0Yi1ybFwiKTticmVhaztjYXNlIDIyMDpzPWQucmVwbGFjZSh4LFwibHJcIik7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gZH1yZXR1cm4gRStkK2srcytkO2Nhc2UgMTAxNzppZigtMT09PWQuaW5kZXhPZihcInN0aWNreVwiLDkpKXJldHVybiBkO2Nhc2UgOTc1OnN3aXRjaCh1PShkPWUpLmxlbmd0aC0xMCxmPShzPSgzMz09PWQuY2hhckNvZGVBdCh1KT9kLnN1YnN0cmluZygwLHUpOmQpLnN1YnN0cmluZyhlLmluZGV4T2YoXCI6XCIsNykrMSkudHJpbSgpKS5jaGFyQ29kZUF0KDApKygwfHMuY2hhckNvZGVBdCg3KSkpe2Nhc2UgMjAzOmlmKHMuY2hhckNvZGVBdCg4KTwxMTEpYnJlYWs7Y2FzZSAxMTU6ZD1kLnJlcGxhY2UocyxFK3MpK1wiO1wiK2Q7YnJlYWs7Y2FzZSAyMDc6Y2FzZSAxMDI6ZD1kLnJlcGxhY2UocyxFKyhmPjEwMj9cImlubGluZS1cIjpcIlwiKStcImJveFwiKStcIjtcIitkLnJlcGxhY2UocyxFK3MpK1wiO1wiK2QucmVwbGFjZShzLGsrcytcImJveFwiKStcIjtcIitkfXJldHVybiBkK1wiO1wiO2Nhc2UgOTM4OmlmKGQuY2hhckNvZGVBdCg1KT09PXopc3dpdGNoKGQuY2hhckNvZGVBdCg2KSl7Y2FzZSAxMDU6cmV0dXJuIHM9ZC5yZXBsYWNlKFwiLWl0ZW1zXCIsXCJcIiksRStkK0UrXCJib3gtXCIrcytrK1wiZmxleC1cIitzK2Q7Y2FzZSAxMTU6cmV0dXJuIEUrZCtrK1wiZmxleC1pdGVtLVwiK2QucmVwbGFjZShNLFwiXCIpK2Q7ZGVmYXVsdDpyZXR1cm4gRStkK2srXCJmbGV4LWxpbmUtcGFja1wiK2QucmVwbGFjZShcImFsaWduLWNvbnRlbnRcIixcIlwiKS5yZXBsYWNlKE0sXCJcIikrZH1icmVhaztjYXNlIDk3MzpjYXNlIDk4OTppZihkLmNoYXJDb2RlQXQoMykhPT16fHwxMjI9PT1kLmNoYXJDb2RlQXQoNCkpYnJlYWs7Y2FzZSA5MzE6Y2FzZSA5NTM6aWYoITA9PT1fLnRlc3QoZSkpcmV0dXJuIDExNT09PShzPWUuc3Vic3RyaW5nKGUuaW5kZXhPZihcIjpcIikrMSkpLmNoYXJDb2RlQXQoMCk/JGUoZS5yZXBsYWNlKFwic3RyZXRjaFwiLFwiZmlsbC1hdmFpbGFibGVcIiksdCxuLHIpLnJlcGxhY2UoXCI6ZmlsbC1hdmFpbGFibGVcIixcIjpzdHJldGNoXCIpOmQucmVwbGFjZShzLEUrcykrZC5yZXBsYWNlKHMsUCtzLnJlcGxhY2UoXCJmaWxsLVwiLFwiXCIpKStkO2JyZWFrO2Nhc2UgOTYyOmlmKGQ9RStkKygxMDI9PT1kLmNoYXJDb2RlQXQoNSk/aytkOlwiXCIpK2QsbityPT09MjExJiYxMDU9PT1kLmNoYXJDb2RlQXQoMTMpJiZkLmluZGV4T2YoXCJ0cmFuc2Zvcm1cIiwxMCk+MClyZXR1cm4gZC5zdWJzdHJpbmcoMCxkLmluZGV4T2YoXCI7XCIsMjcpKzEpLnJlcGxhY2UoaSxcIiQxXCIrRStcIiQyXCIpK2R9cmV0dXJuIGR9ZnVuY3Rpb24gRmUoZSx0KXt2YXIgbj1lLmluZGV4T2YoMT09PXQ/XCI6XCI6XCJ7XCIpLHI9ZS5zdWJzdHJpbmcoMCwzIT09dD9uOjEwKSxvPWUuc3Vic3RyaW5nKG4rMSxlLmxlbmd0aC0xKTtyZXR1cm4gU2UoMiE9PXQ/cjpyLnJlcGxhY2UoUyxcIiQxXCIpLG8sdCl9ZnVuY3Rpb24gV2UoZSx0KXt2YXIgbj0kZSh0LHQuY2hhckNvZGVBdCgwKSx0LmNoYXJDb2RlQXQoMSksdC5jaGFyQ29kZUF0KDIpKTtyZXR1cm4gbiE9PXQrXCI7XCI/bi5yZXBsYWNlKEwsXCIgb3IgKCQxKVwiKS5zdWJzdHJpbmcoNCk6XCIoXCIrdCtcIilcIn1mdW5jdGlvbiBOZShlLHQsbixyLG8sYSxpLGwsYyxzKXtmb3IodmFyIHUsZD0wLGY9dDtkPE1lOysrZClzd2l0Y2godT1MZVtkXS5jYWxsKEdlLGUsZixuLHIsbyxhLGksbCxjLHMpKXtjYXNlIHZvaWQgMDpjYXNlITE6Y2FzZSEwOmNhc2UgbnVsbDpicmVhaztkZWZhdWx0OmY9dX1pZihmIT09dClyZXR1cm4gZn1mdW5jdGlvbiB6ZShlLHQsbixyKXtmb3IodmFyIG89dCsxO288bjsrK28pc3dpdGNoKHIuY2hhckNvZGVBdChvKSl7Y2FzZSBROmlmKGU9PT1HJiZyLmNoYXJDb2RlQXQoby0xKT09PUcmJnQrMiE9PW8pcmV0dXJuIG8rMTticmVhaztjYXNlIEI6aWYoZT09PVEpcmV0dXJuIG8rMX1yZXR1cm4gb31mdW5jdGlvbiBVZShlKXtmb3IodmFyIHQgaW4gZSl7dmFyIG49ZVt0XTtzd2l0Y2godCl7Y2FzZVwia2V5ZnJhbWVcIjpSZT0wfG47YnJlYWs7Y2FzZVwiZ2xvYmFsXCI6d2U9MHxuO2JyZWFrO2Nhc2VcImNhc2NhZGVcIjpnZT0wfG47YnJlYWs7Y2FzZVwiY29tcHJlc3NcIjp5ZT0wfG47YnJlYWs7Y2FzZVwic2VtaWNvbG9uXCI6YmU9MHxuO2JyZWFrO2Nhc2VcInByZXNlcnZlXCI6eGU9MHxuO2JyZWFrO2Nhc2VcInByZWZpeFwiOlNlPW51bGwsbj9cImZ1bmN0aW9uXCIhPXR5cGVvZiBuP21lPTE6KG1lPTIsU2U9bik6bWU9MH19cmV0dXJuIFVlfWZ1bmN0aW9uIEdlKHQsbil7aWYodm9pZCAwIT09dGhpcyYmdGhpcy5jb25zdHJ1Y3Rvcj09PUdlKXJldHVybiBlKHQpO3ZhciBvPXQsYT1vLmNoYXJDb2RlQXQoMCk7YTwzMyYmKGE9KG89by50cmltKCkpLmNoYXJDb2RlQXQoMCkpLFJlPjAmJihJZT1vLnJlcGxhY2UocCxhPT09QT9cIlwiOlwiLVwiKSksYT0xLDE9PT1nZT9BZT1vOlplPW87dmFyIGksbD1bQWVdO01lPjAmJnZvaWQgMCE9PShpPU5lKGplLG4sbCxsLENlLGhlLDAsMCwwLDApKSYmXCJzdHJpbmdcIj09dHlwZW9mIGkmJihuPWkpO3ZhciBjPURlKE9lLGwsbiwwLDApO3JldHVybiBNZT4wJiZ2b2lkIDAhPT0oaT1OZShfZSxjLGwsbCxDZSxoZSxjLmxlbmd0aCwwLDAsMCkpJiZcInN0cmluZ1wiIT10eXBlb2YoYz1pKSYmKGE9MCksSWU9XCJcIixBZT1cIlwiLFplPVwiXCIsdmU9MCxDZT0xLGhlPTEseWUqYT09MD9jOmMucmVwbGFjZShyLFwiXCIpLnJlcGxhY2UoZyxcIlwiKS5yZXBsYWNlKG0sXCIkMVwiKS5yZXBsYWNlKHcsXCIkMVwiKS5yZXBsYWNlKHksXCIgXCIpfXJldHVybiBHZS51c2U9ZnVuY3Rpb24gZSh0KXtzd2l0Y2godCl7Y2FzZSB2b2lkIDA6Y2FzZSBudWxsOk1lPUxlLmxlbmd0aD0wO2JyZWFrO2RlZmF1bHQ6aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdClMZVtNZSsrXT10O2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIHQpZm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7KytuKWUodFtuXSk7ZWxzZSBWZT0wfCEhdH1yZXR1cm4gZX0sR2Uuc2V0PVVlLHZvaWQgMCE9PXQmJlVlKHQpLEdlfShudWxsKX19LHQ9e307ZnVuY3Rpb24gbihyKXt2YXIgbz10W3JdO2lmKHZvaWQgMCE9PW8pcmV0dXJuIG8uZXhwb3J0czt2YXIgYT10W3JdPXtleHBvcnRzOnt9fTtyZXR1cm4gZVtyXShhLGEuZXhwb3J0cyxuKSxhLmV4cG9ydHN9bi5uPWU9Pnt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/KCk9PmUuZGVmYXVsdDooKT0+ZTtyZXR1cm4gbi5kKHQse2E6dH0pLHR9LG4uZD0oZSx0KT0+e2Zvcih2YXIgciBpbiB0KW4ubyh0LHIpJiYhbi5vKGUscikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0sbi5nPWZ1bmN0aW9uKCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbFRoaXMpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfWNhdGNoKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvd319KCksbi5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxuLnI9ZT0+e1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LG4ubmM9dm9pZCAwO3ZhciByPXt9OygoKT0+e1widXNlIHN0cmljdFwiO3ZhciBlLHQsbyxhLGksbCxjLHM7bi5yKHIpLG4uZChyLHtBcHBNYW5pZmVzdFR5cGU6KCk9PmMsQnJvd3NlckJ1dHRvblR5cGU6KCk9PmcsQ29sb3JTY2hlbWVPcHRpb25UeXBlOigpPT5oLEN1c3RvbUFjdGlvbkNhbGxlclR5cGU6KCk9PncsR2xvYmFsQ29udGV4dE1lbnVPcHRpb25UeXBlOigpPT5wLFBhZ2VUYWJDb250ZXh0TWVudU9wdGlvblR5cGU6KCk9PkMsUGFuZWxQb3NpdGlvbjooKT0+ZixTYXZlQnV0dG9uQ29udGV4dE1lbnVPcHRpb25UeXBlOigpPT5tLFNhdmVNb2RhbFR5cGU6KCk9PnksVmlld1RhYk1lbnVPcHRpb25UeXBlOigpPT52LGdldEN1cnJlbnRTeW5jOigpPT50bixpbml0OigpPT5Wbyx3cmFwU3luYzooKT0+ZW59KSxmdW5jdGlvbihlKXtlLkZldGNoaW5nPVwiZmV0Y2hpbmdcIixlLkZldGNoZWQ9XCJmZXRjaGVkXCIsZS5Db21wbGV0ZT1cImNvbXBsZXRlXCJ9KGV8fChlPXt9KSksZnVuY3Rpb24oZSl7ZS5Vc2VyQWN0aW9uPVwidXNlci1hY3Rpb25cIixlLkZvY3VzQ2hhbmdlPVwiZm9jdXMtY2hhbmdlXCIsZS5SZWxvYWQ9XCJyZWxvYWRcIn0odHx8KHQ9e30pKSxmdW5jdGlvbihlKXtlLkFjdGl2ZT1cImFjdGl2ZVwiLGUuRGVmYXVsdD1cImRlZmF1bHRcIn0ob3x8KG89e30pKSxmdW5jdGlvbihlKXtlLlN1Z2dlc3Rpb249XCJzdWdnZXN0aW9uXCJ9KGF8fChhPXt9KSksZnVuY3Rpb24oZSl7ZS5Db250YWN0PVwiQ29udGFjdFwiLGUuQ3VzdG9tPVwiQ3VzdG9tXCIsZS5MaXN0PVwiTGlzdFwiLGUuUGxhaW49XCJQbGFpblwiLGUuU2ltcGxlVGV4dD1cIlNpbXBsZVRleHRcIixlLkxvYWRpbmc9XCJMb2FkaW5nXCIsZS5FcnJvcj1cIkVycm9yXCJ9KGl8fChpPXt9KSksZnVuY3Rpb24oZSl7ZS5NdWx0aVNlbGVjdD1cIk11bHRpU2VsZWN0XCJ9KGx8fChsPXt9KSksZnVuY3Rpb24oZSl7ZS5TbmFwc2hvdD1cInNuYXBzaG90XCIsZS5NYW5pZmVzdD1cIm1hbmlmZXN0XCIsZS5WaWV3PVwidmlld1wiLGUuRXh0ZXJuYWw9XCJleHRlcm5hbFwifShjfHwoYz17fSkpLGZ1bmN0aW9uKGUpe2UuTGFuZGluZ1BhZ2U9XCJsYW5kaW5nUGFnZVwiLGUuQXBwR3JpZD1cImFwcEdyaWRcIn0oc3x8KHM9e30pKTt2YXIgdSxkLGYscCxoLEMsdixnLG0sdyx5LGI7IWZ1bmN0aW9uKGUpe2UuUHJpbWFyeT1cInByaW1hcnlcIixlLlNlY29uZGFyeT1cInNlY29uZGFyeVwiLGUuVGV4dE9ubHk9XCJ0ZXh0T25seVwifSh1fHwodT17fSkpLGZ1bmN0aW9uKGUpe2UuQWN0aW9uQnV0dG9uPVwiQWN0aW9uQnV0dG9uXCIsZS5Ecm9wZG93bkJ1dHRvbj1cIkRyb3Bkb3duQnV0dG9uXCJ9KGR8fChkPXt9KSksZnVuY3Rpb24oZSl7ZS5MZWZ0PVwiTGVmdFwiLGUuUmlnaHQ9XCJSaWdodFwiLGUuVG9wPVwiVG9wXCIsZS5Cb3R0b209XCJCb3R0b21cIn0oZnx8KGY9e30pKSxmdW5jdGlvbihlKXtlLk5ld1dpbmRvdz1cIk5ld1dpbmRvd1wiLGUuTmV3UGFnZT1cIk5ld1BhZ2VcIixlLlNhdmVQYWdlPVwiU2F2ZVBhZ2VcIixlLlNhdmVQYWdlQXM9XCJTYXZlUGFnZUFzXCIsZS5QcmludD1cIlByaW50XCIsZS5QcmludEFsbD1cIlByaW50QWxsXCIsZS5QcmludFNjcmVlbj1cIlByaW50U2NyZWVuXCIsZS5DbG9zZVdpbmRvdz1cIkNsb3NlV2luZG93XCIsZS5SZXN0b3JlQ2hhbmdlcz1cIlJlc3RvcmVDaGFuZ2VzXCIsZS5TYXZlV29ya3NwYWNlPVwiU2F2ZVdvcmtzcGFjZVwiLGUuU2F2ZVdvcmtzcGFjZUFzPVwiU2F2ZVdvcmtzcGFjZUFzXCIsZS5SZW5hbWVXb3Jrc3BhY2U9XCJSZW5hbWVXb3Jrc3BhY2VcIixlLlN3aXRjaFdvcmtzcGFjZT1cIlN3aXRjaFdvcmtzcGFjZVwiLGUuRGVsZXRlV29ya3NwYWNlPVwiRGVsZXRlV29ya3NwYWNlXCIsZS5PcGVuU3RvcmVmcm9udD1cIk9wZW5TdG9yZWZyb250XCIsZS5BcHBlYXJhbmNlPVwiQXBwZWFyYW5jZVwiLGUuUXVpdD1cIlF1aXRcIixlLkN1c3RvbT1cIkN1c3RvbVwifShwfHwocD17fSkpLGZ1bmN0aW9uKGUpe2UuTGlnaHQ9XCJsaWdodFwiLGUuRGFyaz1cImRhcmtcIixlLlN5c3RlbT1cInN5c3RlbVwifShofHwoaD17fSkpLGZ1bmN0aW9uKGUpe2UuQ2xvc2U9XCJDbG9zZVwiLGUuRHVwbGljYXRlPVwiRHVwbGljYXRlXCIsZS5SZW5hbWU9XCJSZW5hbWVcIixlLlNhdmU9XCJTYXZlXCIsZS5TYXZlQXM9XCJTYXZlIEFzXCIsZS5DdXN0b209XCJDdXN0b21cIn0oQ3x8KEM9e30pKSxmdW5jdGlvbihlKXtlLk5ld1ZpZXc9XCJOZXdWaWV3XCIsZS5EdXBsaWNhdGVWaWV3cz1cIkR1cGxpY2F0ZVZpZXdcIixlLk9wZW5XaXRoRGVmYXVsdEJyb3dzZXI9XCJPcGVuV2l0aERlZmF1bHRCcm93c2VyXCIsZS5SZWxvYWRWaWV3cz1cIlJlbG9hZFRhYlwiLGUuQ2xvc2VWaWV3cz1cIkNsb3NlVGFiXCIsZS5BZGRUb0NoYW5uZWw9XCJBZGRUb0NoYW5uZWxcIixlLlJlbW92ZUZyb21DaGFubmVsPVwiUmVtb3ZlRnJvbUNoYW5uZWxcIixlLkJhY2s9XCJCYWNrXCIsZS5Gb3J3YXJkPVwiRm9yd2FyZFwiLGUuUHJpbnQ9XCJQcmludFwiLGUuUHJpbnRBbGw9XCJQcmludEFsbFwiLGUuUHJpbnRTY3JlZW49XCJQcmludFNjcmVlblwiLGUuQ3VzdG9tPVwiQ3VzdG9tXCJ9KHZ8fCh2PXt9KSksZnVuY3Rpb24oZSl7ZS5TaG93SGlkZVRhYnM9XCJTaG93SGlkZVRhYnNcIixlLkNvbG9yTGlua2luZz1cIkNvbG9yTGlua2luZ1wiLGUuUHJlc2V0TGF5b3V0cz1cIlByZXNldExheW91dHNcIixlLkxvY2tVbmxvY2tQYWdlPVwiTG9ja1VubG9ja1BhZ2VcIixlLlNhdmVNZW51PVwiU2F2ZU1lbnVcIixlLlNhdmVQYWdlPVwiU2F2ZVBhZ2VcIixlLk1pbmltaXNlPVwiTWluaW1pc2VcIixlLk1heGltaXNlPVwiTWF4aW1pc2VcIixlLkNsb3NlPVwiQ2xvc2VcIixlLkN1c3RvbT1cIkN1c3RvbVwifShnfHwoZz17fSkpLGZ1bmN0aW9uKGUpe2UuU2F2ZVBhZ2U9XCJTYXZlUGFnZVwiLGUuU2F2ZVdvcmtzcGFjZT1cIlNhdmVXb3Jrc3BhY2VcIixlLlNhdmVQYWdlQXM9XCJTYXZlUGFnZUFzXCIsZS5TYXZlV29ya3NwYWNlQXM9XCJTYXZlV29ya3NwYWNlQXNcIixlLkN1c3RvbT1cIkN1c3RvbVwifShtfHwobT17fSkpLGZ1bmN0aW9uKGUpe2UuQ3VzdG9tQnV0dG9uPVwiQ3VzdG9tQnV0dG9uXCIsZS5TdG9yZUN1c3RvbUJ1dHRvbj1cIlN0b3JlQ3VzdG9tQnV0dG9uXCIsZS5DdXN0b21Ecm9wZG93bkl0ZW09XCJDdXN0b21Ecm9wZG93bkl0ZW1cIixlLkdsb2JhbENvbnRleHRNZW51PVwiR2xvYmFsQ29udGV4dE1lbnVcIixlLlZpZXdUYWJDb250ZXh0TWVudT1cIlZpZXdUYWJDb250ZXh0TWVudVwiLGUuUGFnZVRhYkNvbnRleHRNZW51PVwiUGFnZVRhYkNvbnRleHRNZW51XCIsZS5TYXZlQnV0dG9uQ29udGV4dE1lbnU9XCJTYXZlQnV0dG9uQ29udGV4dE1lbnVcIixlLkFQST1cIkFQSVwifSh3fHwodz17fSkpLGZ1bmN0aW9uKGUpe2UuU0FWRV9QQUdFPVwiU0FWRV9QQUdFXCIsZS5TQVZFX1dPUktTUEFDRT1cIlNBVkVfV09SS1NQQUNFXCIsZS5TQVZFX1BBR0VfQVM9XCJTQVZFX1BBR0VfQVNcIixlLlNBVkVfV09SS1NQQUNFX0FTPVwiU0FWRV9XT1JLU1BBQ0VfQVNcIixlLlJFTkFNRV9QQUdFPVwiUkVOQU1FX1BBR0VcIixlLlJFTkFNRV9XT1JLU1BBQ0U9XCJSRU5BTUVfV09SS1NQQUNFXCJ9KHl8fCh5PXt9KSksZnVuY3Rpb24oZSl7ZS5Mb2NhbD1cImxvY2FsXCIsZS5EZXY9XCJkZXZcIixlLlN0YWdpbmc9XCJzdGFnaW5nXCIsZS5Qcm9kPVwicHJvZFwifShifHwoYj17fSkpO2NvbnN0IHg9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGZpbixPPShcInVuZGVmaW5lZFwiPT10eXBlb2YgcHJvY2Vzc3x8cHJvY2Vzcy5lbnY/LkpFU1RfV09SS0VSX0lELFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cpLEw9TyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGluZGV4ZWREQixNPU8/d2luZG93Lm9yaWdpbjpiLkxvY2FsLFM9eCYmZmluLm1lLnV1aWQsXz14JiZmaW4ubWUubmFtZSxqPXgmJmZpbi5tZS5lbnRpdHlUeXBlLEU9KGIuTG9jYWwsYi5EZXYsYi5TdGFnaW5nLFwicHJvZFwiPT09Yi5Qcm9kKSxQPWU9PmUuc3RhcnRzV2l0aChcImh0dHA6Ly9cIil8fGUuc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpP2U6TStlLGs9UChcImh0dHBzOi8vd29ya3NwYWNlLm9wZW5maW4uY28vd29ya3NwYWNlLzE0LjAuMjJcIiksSD1QKFwiaHR0cHM6Ly93b3Jrc3BhY2Uub3BlbmZpbi5jby93b3Jrc3BhY2UvMTQuMC4yMlwiKSxWPShcInVuZGVmaW5lZFwiIT10eXBlb2YgV09SS1NQQUNFX0RPQ1NfUExBVEZPUk1fVVJMJiZQKFdPUktTUEFDRV9ET0NTX1BMQVRGT1JNX1VSTCksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFdPUktTUEFDRV9ET0NTX0NMSUVOVF9VUkwmJlAoV09SS1NQQUNFX0RPQ1NfQ0xJRU5UX1VSTCksXCIzMi4xMTQuNzYuMTBcIiksUj1cIjE0LjAuMjJcIjtcInVuZGVmaW5lZFwiIT10eXBlb2YgV09SS1NQQUNFX0JVSUxEX1NIQSYmV09SS1NQQUNFX0JVSUxEX1NIQTt2YXIgSSxaOyFmdW5jdGlvbihlKXtlLldvcmtzcGFjZT1cIm9wZW5maW4td29ya3NwYWNlXCIsZS5PbGRXb3Jrc3BhY2U9XCJvcGVuZmluLWJyb3dzZXJcIn0oSXx8KEk9e30pKSxmdW5jdGlvbihlKXtlLkZpblByb3RvY29sPVwiZmluLXByb3RvY29sXCJ9KFp8fChaPXt9KSk7Y29uc3QgQT17dXVpZDpTfSxEPShJLldvcmtzcGFjZSxlPT57aWYoIXgpdGhyb3cgbmV3IEVycm9yKFwiZ2V0QXBwbGljYXRpb24gY2Fubm90IGJlIHVzZWQgaW4gYSBub24gT3BlbkZpbiBlbnYuIEF2b2lkIHVzaW5nIHRoaXMgZHVyaW5nIHByZS1yZW5kZXJpbmcuXCIpO3JldHVybiBmaW4uQXBwbGljYXRpb24ud3JhcFN5bmMoZSl9KSxCPSgpPT5EKEEpO3ZhciBUOyFmdW5jdGlvbihlKXtlLkhvbWU9XCJvcGVuZmluLWhvbWVcIixlLkRvY2s9XCJvcGVuZmluLWRvY2tcIixlLlN0b3JlZnJvbnQ9XCJvcGVuZmluLXN0b3JlZnJvbnRcIixlLkhvbWVJbnRlcm5hbD1cIm9wZW5maW4taG9tZS1pbnRlcm5hbFwiLGUuQnJvd3Nlck1lbnU9XCJvcGVuZmluLWJyb3dzZXItbWVudVwiLGUuQnJvd3NlckluZGljYXRvcj1cIm9wZW5maW4tYnJvd3Nlci1pbmRpY2F0b3JcIixlLkJyb3dzZXJXaW5kb3c9XCJpbnRlcm5hbC1nZW5lcmF0ZWQtd2luZG93XCIsZS5DbGFzc2ljV2luZG93PVwiaW50ZXJuYWwtZ2VuZXJhdGVkLWNsYXNzaWMtd2luZG93XCJ9KFR8fChUPXt9KSk7Y29uc3QgJD1lPT4oe2xlZnQ6KGUubGVmdCsoZS5yaWdodD8/ZS5sZWZ0K2Uud2lkdGgpKS8yLHRvcDooZS50b3ArKGUuYm90dG9tPz9lLnRvcCtlLmhlaWdodCkpLzJ9KTtmdW5jdGlvbiBGKGUpe2lmKCF4KXRocm93IG5ldyBFcnJvcihcImdldE9GV2luZG93IGNhbiBvbmx5IGJlIHVzZWQgaW4gYW4gT3BlbkZpbiBlbnYuIEF2b2lkIGNhbGxpbmcgdGhpcyBtZXRob2QgZHVyaW5nIHByZS1yZW5kZXJpbmcuXCIpO3JldHVybiBmaW4uV2luZG93LndyYXBTeW5jKGUpfWNvbnN0IFc9e25hbWU6Xyx1dWlkOlN9O2Z1bmN0aW9uIE4oKXtyZXR1cm4gRihXKX1jb25zdCB6PXtuYW1lOlQuSG9tZSx1dWlkOkkuV29ya3NwYWNlfSxVPShULkRvY2ssSS5Xb3Jrc3BhY2Use25hbWU6VC5TdG9yZWZyb250LHV1aWQ6SS5Xb3Jrc3BhY2V9KTtJLldvcmtzcGFjZSxJLldvcmtzcGFjZTthc3luYyBmdW5jdGlvbiBHKGUpe2NvbnN0IHQ9RihlKTtcIm1pbmltaXplZFwiPT09YXdhaXQgdC5nZXRTdGF0ZSgpJiZhd2FpdCB0LnJlc3RvcmUoKSxhd2FpdCB0LnNob3coKSxhd2FpdCB0LnNldEFzRm9yZWdyb3VuZCgpfWNvbnN0IHE9YXN5bmMgZT0+e2lmKCFlLm5hbWUuc3RhcnRzV2l0aChULkJyb3dzZXJXaW5kb3cpKXJldHVybiExO2NvbnN0IHQ9YXdhaXQgZmluLldpbmRvdy53cmFwU3luYyh7bmFtZTplLm5hbWUsdXVpZDplLnV1aWQ/P2Zpbi5tZS51dWlkfSkuZ2V0T3B0aW9ucygpO3JldHVybiEhdC53b3Jrc3BhY2VQbGF0Zm9ybT8ucGFnZXN9O2FzeW5jIGZ1bmN0aW9uIFkoKXtjb25zdCBlPWF3YWl0IGZpbi5BcHBsaWNhdGlvbi5nZXRDdXJyZW50U3luYygpLmdldENoaWxkV2luZG93cygpLHQ9YXdhaXQgUHJvbWlzZS5hbGwoZS5tYXAoKGFzeW5jIGU9PnEoZS5pZGVudGl0eSkpKSk7cmV0dXJuIGUuZmlsdGVyKCgoZSxuKT0+dFtuXSkpfWFzeW5jIGZ1bmN0aW9uIEsoKXtyZXR1cm4oYXdhaXQgZmluLkFwcGxpY2F0aW9uLmdldEN1cnJlbnRTeW5jKCkuZ2V0Q2hpbGRXaW5kb3dzKCkpLmZpbHRlcigoZT0+ZS5pZGVudGl0eS5uYW1lLnN0YXJ0c1dpdGgoVC5Ccm93c2VyTWVudSkpKX1jb25zdCBYPWU9PkYoZSkuZ2V0T3B0aW9ucygpLnRoZW4oKCgpPT4hMCkpLmNhdGNoKCgoKT0+ITEpKSxRPSgpPT5YKFUpO3ZhciBKOyFmdW5jdGlvbihlKXtlLkJyb3dzZXI9XCJCcm93c2VyXCIsZS5Eb2NrPVwiRG9ja1wiLGUuSG9tZT1cIkhvbWVcIixlLk5vdGlmaWNhdGlvbj1cIk5vdGlmaWNhdGlvblwiLGUuU3RvcmVmcm9udD1cIlN0b3JlZnJvbnRcIixlLlBsYXRmb3JtPVwiUGxhdGZvcm1cIixlLlRoZW1pbmc9XCJUaGVtaW5nXCIsZS5NaWNyb2Zsb3c9XCJNaWNyb2Zsb3dcIn0oSnx8KEo9e30pKTtjb25zdCBlZT1hc3luYyhlLHQpPT57Y29uc3Qgbj17YXBpVmVyc2lvbjp0LmFwaVZlcnNpb258fFIsY29tcG9uZW50TmFtZTplLGNvbXBvbmVudFZlcnNpb246dC5jb21wb25lbnRWZXJzaW9ufHxSLGFsbG93ZWQ6dC5hbGxvd2VkLHJlamVjdGlvbkNvZGU6dC5yZWplY3Rpb25Db2RlfTtmaW4uU3lzdGVtLnJlZ2lzdGVyVXNhZ2Uoe3R5cGU6XCJ3b3Jrc3BhY2UtbGljZW5zaW5nXCIsZGF0YTpufSl9O2xldCB0ZT0hMTt2YXIgbmU7IWZ1bmN0aW9uKGUpe2UuQnJvd3Nlcj1cIkJyb3dzZXJcIixlLkRvY2s9XCJEb2NrXCIsZS5Ib21lPVwiSG9tZVwiLGUuTm90aWZpY2F0aW9uPVwiTm90aWZpY2F0aW9uXCIsZS5TdG9yZWZyb250PVwiU3RvcmVmcm9udFwiLGUuUGxhdGZvcm09XCJQbGF0Zm9ybVwiLGUuVGhlbWluZz1cIlRoZW1pbmdcIixlLkludGVyb3A9XCJJbnRlcm9wXCJ9KG5lfHwobmU9e30pKTtjb25zdCByZT1uZXcgTWFwLG9lPWU9PntsZXQgdD1yZS5nZXQoZS51dWlkKTtyZXR1cm4gdHx8KHQ9ZW4oZSksdC5vbmNlKFwiY2xvc2VkXCIsKCgpPT57cmUuZGVsZXRlKGUudXVpZCl9KSkscmUuc2V0KGUudXVpZCx0KSksdH0sYWU9YXN5bmMoZSx0KT0+e3RyeXthd2FpdCBlLl9yYWlzZUFuYWx5dGljcyhbdF0pfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoXCJmYWlsZWQgdG8gcmFpc2UgYW5hbHl0aWNzIGV2ZW50XCIsZSl9fSxpZT1hc3luYyBlPT57YXdhaXQgYWUob2UoZmluLm1lLmlkZW50aXR5KSx7c291cmNlOm5lLkJyb3dzZXIsLi4uZX0pfTtuKDM3OCk7Y29uc3QgbGU9ZT0+ZmluLlN5c3RlbS5nZXRTeXN0ZW1BcHBDb25maWcoZSk7bGV0IGNlO2FzeW5jIGZ1bmN0aW9uIHNlKCl7aWYoY2UpcmV0dXJuIGNlO2NvbnN0IGU9XCJnZXRPdmVycmlkZXNcIjtpZigheClyZXR1cm4gTyYmY29uc29sZS53YXJuKGAke2V9OiBUaGUgRmluIEFQSSB3YXMgbm90IGF2YWlsYWJsZS4gUmV0dXJuaW5nIGFuIGVtcHR5IHJlc3VsdC5gKSx7fTtjb25zdCB0PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7Y29uc3QgZT1cImdldERPU092ZXJyaWRlc1wiO2lmKCF4KXJldHVybiBjb25zb2xlLndhcm4oYCR7ZX06IHRoZSBmaW4gQVBJIHdhcyBub3QgYXZhaWxhYmxlLCByZXR1cm5pbmcgbm8gcmVzdWx0YCkse307dHJ5e2xldCB0PWF3YWl0IGxlKFwid29ya3NwYWNlXCIpLmNhdGNoKCh0PT57Y29uc29sZS53YXJuKGAke2V9OiBjdXN0b21Db25maWcgZW50cnkgZm9yIFN5c3RlbUFwcCB3b3Jrc3BhY2Ugbm90IGF2YWlsYWJsZSBpbiBEZXNrdG9wIE93bmVyIFNldHRpbmdzLiAke3Q/Lm1lc3NhZ2V9YCl9KSk7cmV0dXJuIHR8fCh0PWF3YWl0IGxlKFwiaG9tZVwiKSksSlNPTi5zdHJpbmdpZnkodCksdH1jYXRjaCh0KXtpZighRSlyZXR1cm57fTtpZighKHQgaW5zdGFuY2VvZiBFcnJvcikpdGhyb3cgdDtjb25zb2xlLndhcm4oYCR7ZX06IE1pc3NpbmcgV29ya3NwYWNlIERlc2t0b3AgT3duZXIgU2V0dGluZ3MgY29uZmlndXJhdGlvbiwgdXNpbmcgZGVmYXVsdHMuICR7dD8ubWVzc2FnZX1gKX1yZXR1cm57fX0oKSxuPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7Y29uc3QgZT1cImdldE1hbmlmZXN0T3ZlcnJpZGVzXCIse21hbmlmZXN0OnQsaW5pdGlhbE9wdGlvbnM6bn09YXdhaXQgZmluLkFwcGxpY2F0aW9uLmdldEN1cnJlbnRTeW5jKCkuZ2V0SW5mbygpO3JldHVybiB0Py53b3Jrc3BhY2V8fHQ/LmhvbWV8fG4/LndvcmtzcGFjZXx8bj8uaG9tZXx8Y29uc29sZS53YXJuKGAke2V9OiBNaXNzaW5nIEhvbWUgZGV2ZWxvcG1lbnQgbWFuaWZlc3Qgb3ZlcnJpZGVzLCB1c2luZyBEZXNrdG9wIE93bmVyIFNldHRpbmdzLmApLHQ/LndvcmtzcGFjZT8oSlNPTi5zdHJpbmdpZnkodD8ud29ya3NwYWNlKSx0Py53b3Jrc3BhY2UpOnQ/LmhvbWU/KEpTT04uc3RyaW5naWZ5KHQ/LmhvbWUpLHQ/LmhvbWUpOm4/LndvcmtzcGFjZT8oSlNPTi5zdHJpbmdpZnkobj8ud29ya3NwYWNlKSxuPy53b3Jrc3BhY2UpOm4/LmhvbWU/KEpTT04uc3RyaW5naWZ5KG4/LmhvbWUpLG4/LmhvbWUpOnt9fSgpO3JldHVybiBjZT17Li4ubiwuLi50fSxjZX1sZXQgdWU7Y29uc3QgZGU9YXN5bmMgZT0+e3VlfHwodWU9bmV3IFRleHRFbmNvZGVyKTtjb25zdCB0PXVlLmVuY29kZShlKSxuPWF3YWl0IHdpbmRvdy5jcnlwdG8uc3VidGxlLmRpZ2VzdChcIlNIQS0yNTZcIix0KTtyZXR1cm4gQXJyYXkuZnJvbShuZXcgVWludDhBcnJheShuKSkubWFwKChlPT5lLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLFwiMFwiKSkpLmpvaW4oXCJcIil9O2Z1bmN0aW9uIGZlKGUpe3JldHVybiBlJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmIUFycmF5LmlzQXJyYXkoZSl9ZnVuY3Rpb24gcGUoZSwuLi50KXtpZighdC5sZW5ndGgpcmV0dXJuIGU7Y29uc3Qgbj10LnNoaWZ0KCk7cmV0dXJuIGZlKGUpJiZmZShuKSYmT2JqZWN0LmVudHJpZXMobikuZm9yRWFjaCgoKFt0LG5dKT0+e2lmKGZlKG4pKXJldHVybiBlW3RdfHwoZVt0XT17fSkscGUoZVt0XSxuKTtlW3RdPW59KSkscGUoZSwuLi50KX12YXIgaGU7IWZ1bmN0aW9uKGUpe2UuSG9tZT1cIi9ob21lL1wiLGUuSG9tZVNlYXJjaD1cIi9ob21lLz9kZWVwbGluaz1zZWFyY2hcIixlLkhvbWVQYWdlc1JlbmFtZT1cIi9ob21lL3BhZ2VzL3JlbmFtZS9cIixlLkRvY2s9XCIvZG9jay9cIixlLkJyb3dzZXI9XCIvYnJvd3Nlci9cIixlLkJyb3dzZXJQb3B1cE1lbnU9XCIvYnJvd3Nlci9wb3B1cC1tZW51L1wiLGUuUHJvdmlkZXI9XCIvcHJvdmlkZXIvXCIsZS5Ccm93c2VyUG9wdXBNZW51U2hhcmVQYWdlPVwiL2Jyb3dzZXIvcG9wdXAtbWVudS9zaGFyZS1wYWdlL1wiLGUuQnJvd3NlclBvcHVwTWVudVNhdmVNb2RhbD1cIi9icm93c2VyL3BvcHVwLW1lbnUvc2F2ZS1tb2RhbC9cIixlLkJyb3dzZXJQb3B1cE1lbnVMYXlvdXRzPVwiL2Jyb3dzZXIvcG9wdXAtbWVudS9sYXlvdXRzL2xheW91dHMvXCIsZS5Ccm93c2VyUG9wdXBNZW51Q29sb3JMaW5raW5nPVwiL2Jyb3dzZXIvcG9wdXAtbWVudS9jb2xvci1saW5raW5nL2NvbG9yLWxpbmtpbmcvXCIsZS5Ccm93c2VySW5kaWNhdG9yPVwiL2Jyb3dzZXIvaW5kaWNhdG9yL1wiLGUuUmVzcG9uc2VNb2RhbD1cIi9icm93c2VyL3BvcHVwLW1lbnUvcmVzcG9uc2UtbW9kYWwvXCIsZS5Eb2NzPVwiL3Byb3ZpZGVyL2RvY3MvXCIsZS5TdG9yZWZyb250PVwiL3N0b3JlZnJvbnQvXCIsZS5EZXByZWNhdGVkQWxlcnQ9XCIvcHJvdmlkZXIvZGVwcmVjYXRlZC1hbGVydC9cIixlLkFuYWx5dGljcz1cIi9wcm92aWRlci9hbmFseXRpY3MvXCJ9KGhlfHwoaGU9e30pKTt2YXIgQ2U7IWZ1bmN0aW9uKGUpe2UuU2VhcmNoPVwic2VhcmNoXCJ9KENlfHwoQ2U9e30pKTtjb25zdCB2ZT1oZSxnZT1PJiZcImNvbXBsZXRlXCIhPT1kb2N1bWVudC5yZWFkeVN0YXRlJiZuZXcgUHJvbWlzZSgoZT0+ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInJlYWR5c3RhdGVjaGFuZ2VcIiwoKCk9PntcImNvbXBsZXRlXCI9PT1kb2N1bWVudC5yZWFkeVN0YXRlJiZlKCl9KSkpKTtmdW5jdGlvbiBtZShlKXtsZXQgdDtjb25zdCBuPW5ldyBTZXQ7cmV0dXJuKCk9PntpZigheCl0aHJvdyBuZXcgRXJyb3IoXCJnZXRDaGFubmVsQ2xpZW50IGNhbm5vdCBiZSB1c2VkIG91dHNpZGUgYW4gT3BlbkZpbiBlbnYuIEF2b2lkIHVzaW5nIHRoaXMgbWV0aG9kIGR1cmluZyBwcmUtcmVuZGVyaW5nLlwiKTtyZXR1cm4gdHx8KHQ9KGFzeW5jKCk9Pnthd2FpdCBnZTtjb25zdCByPXtjbGllbnRBUElWZXJzaW9uOlJ9LG89YXdhaXQgZmluLkludGVyQXBwbGljYXRpb25CdXMuQ2hhbm5lbC5jb25uZWN0KGUse3BheWxvYWQ6cn0pO3JldHVybiBvLm9uRGlzY29ubmVjdGlvbigoYXN5bmMoKT0+e24uZm9yRWFjaCgoZT0+ZSgpKSksbi5jbGVhcigpLGNvbnNvbGUud2FybihgZGlzY29ubmVjdGVkIGZyb20gY2hhbm5lbCBwcm92aWRlciAke2V9YCksdD12b2lkIDB9KSksb30pKCkudGhlbigoZT0+KGUuYWRkRGlzY29ubmVjdGlvbkxpc3RlbmVyPWU9PntuLmFkZChlKX0sZSkpKS5jYXRjaCgobj0+e3Rocm93IHQ9dm9pZCAwLG5ldyBFcnJvcihgZmFpbGVkIHRvIGNvbm5lY3QgdG8gY2hhbm5lbCBwcm92aWRlciAke2V9OiAke259YCl9KSkpLHR9fWNvbnN0IHdlPWU9PmBfX2Jyb3dzZXJfd2luZG93X18tJHtlLnV1aWR9LSR7ZS5uYW1lfWAseWU9bmV3IE1hcCxiZT1lPT57Y29uc3QgdD13ZShlKTtyZXR1cm4geWUuaGFzKHQpfHx5ZS5zZXQodCxtZSh0KSkseWUuZ2V0KHQpKCl9O3ZhciB4ZSxPZTshZnVuY3Rpb24oZSl7ZS5DbG9zZUJyb3dzZXJXaW5kb3c9XCJjbG9zZS1icm93c2VyLXdpbmRvd1wiLGUuUXVpdFBsYXRmb3JtPVwicXVpdC1wbGF0Zm9ybVwiLGUuQ2xvc2VQYWdlPVwiY2xvc2UtcGFnZVwiLGUuQWRkVG9DaGFubmVsPVwiYWRkLXRvLWNoYW5uZWxcIixlLlJlbW92ZUZyb21DaGFubmVsPVwicmVtb3ZlLWZyb20tY2hhbm5lbFwiLGUuT3BlblNhdmVNb2RhbEludGVybmFsPVwib3Blbi1zYXZlLW1vZGFsLWludGVybmFsXCIsZS5EdXBsaWNhdGVQYWdlPVwiZHVwbGljYXRlLXBhZ2VcIixlLlNldFNlbGVjdGVkU2NoZW1lPVwic2V0LXNlbGVjdGVkLXNjaGVtZVwifSh4ZXx8KHhlPXt9KSksZnVuY3Rpb24oZSl7ZS5HZXRQYWdlcz1cImdldC1wYWdlc1wiLGUuR2V0QWN0aXZlUGFnZUZvcldpbmRvdz1cImdldC1hY3RpdmUtcGFnZS1mb3Itd2luZG93XCIsZS5BdHRhY2hQYWdlc1RvV2luZG93PVwiYXR0YWNoLXBhZ2VzLXRvLXdpbmRvd1wiLGUuRGV0YWNoUGFnZXNGcm9tV2luZG93PVwiZGV0YWNoLXBhZ2VzLWZyb20td2luZG93XCIsZS5TZXRBY3RpdmVQYWdlRm9yV2luZG93PVwic2V0LWFjdGl2ZS1wYWdlLWZvci13aW5kb3dcIixlLlJlbmFtZVBhZ2U9XCJyZW5hbWUtcGFnZVwiLGUuUmVvcmRlclBhZ2VzRm9yV2luZG93PVwicmVvcmRlci1wYWdlcy1mb3Itd2luZG93XCIsZS5VcGRhdGVQYWdlRm9yV2luZG93PVwidXBkYXRlLXBhZ2UtZm9yLXdpbmRvd1wiLGUuVXBkYXRlUGFnZXNXaW5kb3dPcHRpb25zPVwidXBkYXRlLXBhZ2VzLXdpbmRvdy1vcHRpb25zXCIsZS5Jc0RldGFjaGluZ1BhZ2VzPVwiaXMtZGV0YWNoaW5nLXBhZ2VzXCIsZS5Jc0FjdGl2ZVBhZ2VDaGFuZ2luZz1cImlzLWFjdGl2ZS1wYWdlLWNoYW5naW5nXCJ9KE9lfHwoT2U9e30pKTtjb25zdCBMZT17Li4ueGUsLi4uT2V9LE1lPWFzeW5jIGU9Pntjb25zdCB0PWF3YWl0IGJlKGUpO3JldHVybiBhd2FpdCB0LmRpc3BhdGNoKExlLkdldFBhZ2VzKX0sU2U9YXN5bmMgZT0+KGF3YWl0IGJlKGUuaWRlbnRpdHkpKS5kaXNwYXRjaChMZS5VcGRhdGVQYWdlRm9yV2luZG93LGUpO3ZhciBfZTshZnVuY3Rpb24oZSl7ZS5MYXVuY2hBcHA9XCJsYXVuY2hBcHBcIixlLlNhdmVQYWdlPVwic2F2ZVBhZ2VcIixlLkdldFNhdmVkUGFnZT1cImdldFNhdmVkUGFnZVwiLGUuQ3JlYXRlU2F2ZWRQYWdlPVwiY3JlYXRlU2F2ZWRQYWdlXCIsZS5VcGRhdGVTYXZlZFBhZ2U9XCJ1cGRhdGVTYXZlZFBhZ2VcIixlLkRlbGV0ZVNhdmVkUGFnZT1cImRlbGV0ZVNhdmVkUGFnZVwiLGUuR2V0U2F2ZWRQYWdlcz1cImdldFNhdmVkUGFnZXNcIixlLkNyZWF0ZVNhdmVkUGFnZUludGVybmFsPVwiY3JlYXRlU2F2ZWRQYWdlSW50ZXJuYWxcIixlLlVwZGF0ZVNhdmVkUGFnZUludGVybmFsPVwidXBkYXRlU2F2ZWRQYWdlSW50ZXJuYWxcIixlLkRlbGV0ZVNhdmVkUGFnZUludGVybmFsPVwiZGVsZXRlU2F2ZWRQYWdlSW50ZXJuYWxcIixlLlNoYXJlUGFnZT1cInNoYXJlUGFnZVwiLGUuVXBkYXRlUGFnZUZvcldpbmRvdz1cInVwZGF0ZVBhZ2VGb3JXaW5kb3dcIixlLkF0dGFjaFBhZ2VzVG9XaW5kb3c9XCJhdHRhY2hQYWdlc1RvV2luZG93XCIsZS5EZXRhY2hQYWdlc0Zyb21XaW5kb3c9XCJkZXRhY2hQYWdlc0Zyb21XaW5kb3dcIixlLlJlb3JkZXJQYWdlc0ZvcldpbmRvdz1cInJlb3JkZXJQYWdlc0ZvcldpbmRvd1wiLGUuU2V0QWN0aXZlUGFnZT1cInNldEFjdGl2ZVBhZ2VcIixlLkdldEFsbEF0dGFjaGVkUGFnZXM9XCJnZXRBbGxBdHRhY2hlZFBhZ2VzXCIsZS5HZXRBY3RpdmVQYWdlSWRGb3JXaW5kb3c9XCJnZXRBY3RpdmVQYWdlSWRGb3JXaW5kb3dcIixlLkdldFBhZ2VzRm9yV2luZG93PVwiZ2V0UGFnZXNGb3JXaW5kb3dcIixlLkdldFBhZ2VGb3JXaW5kb3c9XCJnZXRQYWdlRm9yV2luZG93XCIsZS5HZXRTYXZlZFBhZ2VNZXRhZGF0YT1cImdldFNhdmVkUGFnZU1ldGFkYXRhXCIsZS5HZXRVbmlxdWVQYWdlVGl0bGU9XCJnZXRVbmlxdWVQYWdlVGl0bGVcIixlLkdldExhc3RGb2N1c2VkQnJvd3NlcldpbmRvdz1cImdldExhc3RGb2N1c2VkQnJvd3NlcldpbmRvd1wiLGUuR2V0VGhlbWVzPVwiZ2V0VGhlbWVzXCIsZS5HZXRTZWxlY3RlZFNjaGVtZT1cImdldFNlbGVjdGVkU2NoZW1lXCIsZS5TZXRTZWxlY3RlZFNjaGVtZT1cInNldFNlbGVjdGVkU2NoZW1lXCIsZS5PcGVuR2xvYmFsQ29udGV4dE1lbnVJbnRlcm5hbD1cIm9wZW5HbG9iYWxDb250ZXh0TWVudUludGVybmFsXCIsZS5PcGVuVmlld1RhYkNvbnRleHRNZW51SW50ZXJuYWw9XCJvcGVuVmlld1RhYkNvbnRleHRNZW51SW50ZXJuYWxcIixlLk9wZW5QYWdlVGFiQ29udGV4dE1lbnVJbnRlcm5hbD1cIm9wZW5QYWdlVGFiQ29udGV4dE1lbnVJbnRlcm5hbFwiLGUuT3BlblNhdmVCdXR0b25Db250ZXh0TWVudUludGVybmFsPVwib3BlblNhdmVCdXR0b25Db250ZXh0TWVudUludGVybmFsXCIsZS5JbnZva2VDdXN0b21BY3Rpb25JbnRlcm5hbD1cImludm9rZUN1c3RvbUFjdGlvbkludGVybmFsXCIsZS5SZXF1ZXN0UXVpdFBsYXRmb3JtRGlhbG9nSW50ZXJuYWw9XCJyZXF1ZXN0UXVpdFBsYXRmb3JtRGlhbG9nSW50ZXJuYWxcIixlLkdldFNhdmVkV29ya3NwYWNlPVwiZ2V0U2F2ZWRXb3Jrc3BhY2VcIixlLkNyZWF0ZVNhdmVkV29ya3NwYWNlPVwiY3JlYXRlU2F2ZWRXb3Jrc3BhY2VcIixlLlVwZGF0ZVNhdmVkV29ya3NwYWNlPVwidXBkYXRlU2F2ZWRXb3Jrc3BhY2VcIixlLkRlbGV0ZVNhdmVkV29ya3NwYWNlPVwiZGVsZXRlU2F2ZWRXb3Jrc3BhY2VcIixlLkdldFNhdmVkV29ya3NwYWNlcz1cImdldFNhdmVkV29ya3NwYWNlc1wiLGUuU2F2ZVdvcmtzcGFjZT1cInNhdmVXb3Jrc3BhY2VcIixlLkdldEN1cnJlbnRXb3Jrc3BhY2U9XCJnZXRDdXJyZW50V29ya3NwYWNlXCIsZS5BcHBseVdvcmtzcGFjZT1cImFwcGx5V29ya3NwYWNlXCIsZS5TZXRBY3RpdmVXb3Jrc3BhY2U9XCJzZXRBY3RpdmVXb3Jrc3BhY2VcIixlLklzQnJvd3NlckluaXRpYWxpemVkPVwiaXNCcm93c2VySW5pdGlhbGl6ZWRcIixlLkFuYWx5dGljcz1cImFuYWx5dGljc0ludGVybmFsXCIsZS5HZXREb2NrUHJvdmlkZXJDb25maWc9XCJnZXREb2NrUHJvdmlkZXJDb25maWdcIixlLlNhdmVEb2NrUHJvdmlkZXJDb25maWc9XCJzYXZlRG9ja1Byb3ZpZGVyQ29uZmlnXCJ9KF9lfHwoX2U9e30pKTtjb25zdCBqZT1hc3luYyBlPT5maW4uUGxhdGZvcm0ud3JhcFN5bmMoZSkuZ2V0Q2xpZW50KCksRWU9YXN5bmMgZT0+e2NvbnN0IHQ9YXdhaXQgamUoZSksbj1cIlRhcmdldCBpcyBub3QgYSBXb3Jrc3BhY2UgUGxhdGZvcm0uIFRhcmdldCBtdXN0IGNhbGwgV29ya3NwYWNlUGxhdGZvcm0uaW5pdFwiO2xldCByO3RyeXtyPWF3YWl0IHQuZGlzcGF0Y2goXCJpc1dvcmtzcGFjZVBsYXRmb3JtXCIpfWNhdGNoKGUpe3Rocm93IG5ldyBFcnJvcihuKX1pZihcImJvb2xlYW5cIj09dHlwZW9mIHImJnIpcmV0dXJuIGNvbnNvbGUud2FybihcIllvdSBhcmUgdXNpbmcgYW4gb2xkZXIgdmVyc2lvbiBvZiB0aGUgd29ya3NwYWNlIHBsYXRmb3JtLiBQbGVhc2UgdXBkYXRlIHlvdXIgd29ya3NwYWNlIHBsYXRmb3JtLlwiKSxyO2lmKFwib2JqZWN0XCI9PXR5cGVvZiByJiZyLmlzV29ya3NwYWNlUGxhdGZvcm0pcmV0dXJuIHI7dGhyb3cgbmV3IEVycm9yKG4pfSxQZT1hc3luYyBlPT4oYXdhaXQgRWUoZSksamUoZSkpLGtlPWFzeW5jIGU9Pntjb25zdCB0PWF3YWl0IEVlKGUpO2lmKFwib2JqZWN0XCI9PXR5cGVvZiB0JiYhMCE9PXQ/LmlzQnJvd3NlckluaXRpYWxpemVkKXRocm93IG5ldyBFcnJvcihcIlRhcmdldCBpcyBub3QgYSBCcm93c2VyLWVuYWJsZWQgV29ya3NwYWNlIFBsYXRmb3JtLlwiKTtyZXR1cm4gamUoZSl9O2Z1bmN0aW9uIEhlKCl7cmV0dXJuIHZvaWQgMCE9PXR5cGVvZiBjcnlwdG8mJlwicmFuZG9tVVVJRFwiaW4gY3J5cHRvJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBjcnlwdG8ucmFuZG9tVVVJRD9jcnlwdG8ucmFuZG9tVVVJRCgpOlwiMTAwMDAwMDAtMTAwMC00MDAwLTgwMDAtMTAwMDAwMDAwMDAwXCIucmVwbGFjZSgvWzAxOF0vZywoZT0+KGVeY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgxKSlbMF0mMTU+PmUvNCkudG9TdHJpbmcoMTYpKSl9Y29uc3QgVmU9KGUsdCk9PmUuY29udGVudD97Li4uZSxjb250ZW50OmUuY29udGVudC5tYXAoKGU9PlZlKGUsdCkpKX06ey4uLmUsY29tcG9uZW50U3RhdGU6dChlLmNvbXBvbmVudFN0YXRlKX0sUmU9ZT0+KHsuLi5lLG5hbWU6ZS5uYW1lP2UubmFtZTpgaW50ZXJuYWwtZ2VuZXJhdGVkLXZpZXctJHtIZSgpfWAsX2ludGVybmFsV29ya3NwYWNlRGF0YTp7dmlld0lkZW50aWZpZXI6ZS5faW50ZXJuYWxXb3Jrc3BhY2VEYXRhPy52aWV3SWRlbnRpZmllcnx8SGUoKX19KSxJZT1lPT57Y29uc3QgdD1bXTtyZXR1cm4oZSYmQXJyYXkuaXNBcnJheShlKT9lOltdKS5mb3JFYWNoKChlPT57aWYoXCJjb21wb25lbnRcIj09PWUudHlwZSlyZXR1cm4gdC5wdXNoKGUuY29tcG9uZW50U3RhdGUpO2NvbnN0IG49SWUoZS5jb250ZW50KTt0LnB1c2goLi4ubil9KSksdH07bmV3IE1hcDtmdW5jdGlvbiBaZShlKXtyZXR1cm4gZS5tYXAoKGU9Pntjb25zdCB0PShuPWUudmlld09wdGlvbnMsbi5uYW1lfHw9YGludGVybmFsLWdlbmVyYXRlZC12aWV3LSR7SGUoKX1gLG4pO3ZhciBuO3JldHVybnsuLi5lLHZpZXdPcHRpb25zOnsuLi50LHV1aWQ6Vy51dWlkfX19KSl9YXN5bmMgZnVuY3Rpb24gQWUoZSl7Zm9yKGNvbnN0IHQgb2YgZSl0LnBhbmVscyYmYXdhaXQgQmUodC5wYW5lbHMpfWNvbnN0IERlPWU9Pm51bGwhPT1lJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmXCJtZXNzYWdlXCJpbiBlJiZcInN0cmluZ1wiPT10eXBlb2YgZS5tZXNzYWdlJiYvRVJSXyhbQS1aXStfKikrLy50ZXN0KGUubWVzc2FnZSk7YXN5bmMgZnVuY3Rpb24gQmUoZSl7Y29uc3QgdD1lLm1hcCgoZT0+ZmluLlBsYXRmb3JtLmdldEN1cnJlbnRTeW5jKCkuY3JlYXRlVmlldyhlLnZpZXdPcHRpb25zLGZpbi5tZS5pZGVudGl0eSkuY2F0Y2goKGU9PntpZighRGUoZSkpdGhyb3cgZTtjb25zb2xlLmVycm9yKGUpfSkpKSk7cmV0dXJuIGF3YWl0IFByb21pc2UuYWxsKHQpfWNvbnN0IFRlPShlLHQpPT4hdC5maW5kKCh0PT50PT09ZSkpLCRlPShlLHQpPT5gJHtlfSAoJHt0fSlgLEZlPShlLHQpPT57aWYoVGUoZSx0KSlyZXR1cm4gZTtsZXQgbj0xO2NvbnN0IHI9ZS5yZXBsYWNlKC8gKlxcKFxcZCtcXCkkLyxcIlwiKTtmb3IoOyFUZSgkZShyLG4pLHQpOyluKz0xO3JldHVybiAkZShyLG4pfSxXZT1hc3luYygpPT57Y29uc3QgZT1hd2FpdCBZKCk7cmV0dXJuKGF3YWl0IFByb21pc2UuYWxsKGUubWFwKChhc3luYyBlPT57dHJ5e3JldHVybiBNZShlLmlkZW50aXR5KX1jYXRjaCh0KXtKU09OLnN0cmluZ2lmeShlLmlkZW50aXR5KTtjb25zdCBuPWF3YWl0IGUuZ2V0T3B0aW9ucygpO3JldHVybiBuLndvcmtzcGFjZVBsYXRmb3JtPy5wYWdlc3x8W119fSkpKSkucmVkdWNlKCgoZSx0KT0+ZS5jb25jYXQodCkpLFtdKX0sTmU9YXN5bmMoKT0+KGF3YWl0IFBlKFcpKS5kaXNwYXRjaChfZS5HZXRTYXZlZFBhZ2VzLHZvaWQgMCksemU9YXN5bmMgZT0+KGF3YWl0IFBlKFcpKS5kaXNwYXRjaChfZS5HZXRTYXZlZFBhZ2UsZSksVWU9YXN5bmMoZSx0KT0+e2NvbnN0IG49YXdhaXQoYXN5bmMgZT0+KGF3YWl0IFdlKCkpLmZpbmQoKHQ9PnQucGFnZUlkPT09ZSkpKShlKTtyZXR1cm4hbnx8bi50aXRsZT09PXQudGl0bGUmJmU9PT10LnBhZ2VJZHx8YXdhaXQgU2Uoe2lkZW50aXR5Om4ucGFyZW50SWRlbnRpdHkscGFnZUlkOmUscGFnZTp7cGFnZUlkOnQucGFnZUlkLHRpdGxlOnQudGl0bGV9fSksbn0sR2U9YXN5bmMoe3BhZ2U6ZX0pPT57YXdhaXQgVWUoZS5wYWdlSWQsZSksYXdhaXQoYXN5bmMgZT0+KGF3YWl0IFBlKFcpKS5kaXNwYXRjaChfZS5DcmVhdGVTYXZlZFBhZ2UsZSkpKHtwYWdlOmV9KX0scWU9YXN5bmMgZT0+e2F3YWl0IHplKGUpJiZhd2FpdChhc3luYyBlPT4oYXdhaXQgUGUoVykpLmRpc3BhdGNoKF9lLkRlbGV0ZVNhdmVkUGFnZSxlKSkoZSl9LFllPWFzeW5jKHtwYWdlSWQ6ZSxwYWdlOnR9KT0+e2F3YWl0IFVlKGUsdCk7cmV0dXJuIGF3YWl0KGFzeW5jIGU9Pihhd2FpdCBQZShXKSkuZGlzcGF0Y2goX2UuVXBkYXRlU2F2ZWRQYWdlLGUpKSh7cGFnZUlkOmUscGFnZTp0fSl9LEtlPWFzeW5jIGU9PmF3YWl0IHplKGUucGFnZUlkKT9ZZSh7cGFnZUlkOmUucGFnZUlkLHBhZ2U6ZX0pOkdlKHtwYWdlOmV9KSxYZT1hc3luYyBlPT57YXdhaXQoYXN5bmMgZT0+KGF3YWl0IGJlKGUuaWRlbnRpdHkpKS5kaXNwYXRjaChMZS5BdHRhY2hQYWdlc1RvV2luZG93LGUpKShlKX0sUWU9YXN5bmMgZT0+e2NvbnN0IHQ9ey4uLmUucGFnZSxwYW5lbHM6ZS5wYWdlLnBhbmVscyYmWmUoZS5wYWdlLnBhbmVscyl9O3QucGFuZWxzJiZhd2FpdCBCZSh0LnBhbmVscyksYXdhaXQgU2Uoey4uLmUscGFnZTp0fSl9LEplPWFzeW5jIGU9Pnthd2FpdChhc3luYyBlPT4oYXdhaXQgYmUoZS5pZGVudGl0eSkpLmRpc3BhdGNoKExlLkRldGFjaFBhZ2VzRnJvbVdpbmRvdyxlKSkoZSl9LGV0PWFzeW5jIGU9Pnthd2FpdChhc3luYyBlPT4oYXdhaXQgYmUoZS5pZGVudGl0eSkpLmRpc3BhdGNoKExlLlNldEFjdGl2ZVBhZ2VGb3JXaW5kb3csZSkpKGUpfSx0dD1lPT5NZShlKSxudD1hc3luYyh7aWRlbnRpdHk6ZSxwYWdlSWQ6dH0pPT4oYXdhaXQgdHQoZSkpLmZpbmQoKGU9PmUucGFnZUlkPT09dCkpLHJ0PWFzeW5jIGU9Pnthd2FpdChhc3luYyBlPT4oYXdhaXQgYmUoZS5pZGVudGl0eSkpLmRpc3BhdGNoKExlLlJlb3JkZXJQYWdlc0ZvcldpbmRvdyxlKSkoZSl9O2FzeW5jIGZ1bmN0aW9uIG90KGU9XCJVbnRpdGxlZCBQYWdlXCIpe2NvbnN0W3Qsbl09YXdhaXQgUHJvbWlzZS5hbGwoW05lKCksV2UoKV0pLHI9Wy4uLnQsLi4ubl0ubWFwKCgoe3RpdGxlOmV9KT0+ZSkpO3JldHVybiBGZShlLHIpfWNvbnN0IGF0PW5ldyBNYXA7bGV0IGl0PSExO2NvbnN0IGx0PSgpPT57aXR8fChpdD0hMCxmaW4uV2luZG93LndyYXBTeW5jKFUpLm9uY2UoXCJjbG9zZWRcIiwoKCk9PntpdD0hMSwoYXN5bmMoZSx0KT0+e2F3YWl0IGFlKG9lKGUpLHtzb3VyY2U6bmUuU3RvcmVmcm9udCwuLi50fSl9KShmaW4ubWUuaWRlbnRpdHkse3R5cGU6XCJOYXZpZ2F0aW9uXCIsYWN0aW9uOlwiQ2xvc2VcIn0pfSkpKX07bGV0IGN0LHN0LHV0O2NvbnN0IGR0PWFzeW5jKCk9Pih2b2lkIDA9PT11dCYmKHV0PSEhKGF3YWl0IHNlKCkpLmRpc2FibGVPcGVuRmluQW5hbHl0aWNzKSx1dCk7YXN5bmMgZnVuY3Rpb24gZnQoZSl7ZS5mb3JFYWNoKChlPT57dmFyIHQsbjtcIlBhZ2VcIj09PWUudHlwZT9cIk9wZW5cIj09PWUuYWN0aW9uPyh0PWUuZW50aXR5SWQudXVpZCxuPWUsYXQuc2V0KHQsbikpOlwiQ2xvc2VcIj09PWUuYWN0aW9uJiYoZT0+e2F0LmRlbGV0ZShlKX0pKGUuZW50aXR5SWQudXVpZCk6ZS5zb3VyY2U9PT1uZS5TdG9yZWZyb250JiZcIkNsb3NlXCIhPT1lLmFjdGlvbiYmbHQoKX0pKSxhd2FpdChhc3luYyBlPT57Y3Q/LnNlbmRUb09wZW5GaW4mJihhd2FpdCBkdCgpfHxlLmZvckVhY2goKGFzeW5jIGU9Pntjb25zdCB0PXBlKHt9LGUpO3QuZW50aXR5SWQmJih0LmVudGl0eUlkLnV1aWQ9YXdhaXQgZGUodC5lbnRpdHlJZC51dWlkKSx0LmVudGl0eUlkLm5hbWU9YXdhaXQgZGUodC5lbnRpdHlJZC5uYW1lKSksIWUuc2tpcFZhbHVlSGFzaGluZyYmXCJ2YWx1ZVwiaW4gdCYmKHQudmFsdWU9YXdhaXQgZGUodC52YWx1ZSkpLHN0KHQpfSkpKX0pKGUpO2NvbnN0IHQ9ZS5tYXAoKCh7c2tpcFZhbHVlSGFzaGluZzplLC4uLnR9KT0+dCkpO2F3YWl0IHRoaXMuaGFuZGxlQW5hbHl0aWNzKHQpfWNvbnN0IHB0PWFzeW5jIGU9PntjdD1lO2N0Py5zZW5kVG9PcGVuRmluJiYhYXdhaXQgZHQoKSYmKCgpPT57Y29uc3QgZT1rLHQ9ZSt2ZS5BbmFseXRpY3Msbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiSUZSQU1FXCIpO24uc2V0QXR0cmlidXRlKFwic3JjXCIsdCksbi5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwid2lkdGg6IDBweCAhaW1wb3J0YW50XCIpLG4uc2V0QXR0cmlidXRlKFwic3R5bGVcIixcImhlaWdodDogMHB4ICFpbXBvcnRhbnRcIiksbi5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwiZGlzcGxheTogbm9uZSAhaW1wb3J0YW50XCIpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobiksc3Q9YXN5bmMgdD0+e24uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSh0LGUpfX0pKCk7Y29uc3QgdD1maW4uQXBwbGljYXRpb24uZ2V0Q3VycmVudFN5bmMoKTt0LmFkZExpc3RlbmVyKFwidmlldy1jcmVhdGVkXCIsKGU9PntpZSh7dHlwZTpcIlZpZXdcIixhY3Rpb246XCJPcGVuXCIsZW50aXR5SWQ6e3V1aWQ6ZS51dWlkLG5hbWU6ZS5uYW1lfX0pfSkpLHQuYWRkTGlzdGVuZXIoXCJ2aWV3LWRlc3Ryb3llZFwiLChlPT57aWUoe3R5cGU6XCJWaWV3XCIsYWN0aW9uOlwiQ2xvc2VcIixlbnRpdHlJZDp7dXVpZDplLnV1aWQsbmFtZTplLm5hbWV9fSl9KSksdC5hZGRMaXN0ZW5lcihcIndpbmRvdy1jbG9zZWRcIiwoZT0+e2NvbnN0IHQ9ZS5uYW1lLnN0YXJ0c1dpdGgoVC5Ccm93c2VyTWVudSk/XCJNb2RhbFwiOlwiV2luZG93XCI7aWUoe3R5cGU6dCxhY3Rpb246XCJDbG9zZVwiLGVudGl0eUlkOnt1dWlkOmUudXVpZCxuYW1lOmUubmFtZX19KSxlJiZlLm5hbWUuc3RhcnRzV2l0aChULkJyb3dzZXJXaW5kb3cpJiYoYXN5bmMoKT0+e2NvbnN0IGU9YXdhaXQgV2UoKTtpZihlLmxlbmd0aD09PWF0LnNpemUpcmV0dXJuO2NvbnN0IHQ9ZS5yZWR1Y2UoKChlLHQpPT5lLnNldCh0LnBhZ2VJZCwxKSksbmV3IE1hcCk7Zm9yKGNvbnN0W2Usbl1vZiBhdCl0LmhhcyhlKXx8KG4uYWN0aW9uPVwiQ2xvc2VcIixpZShuKSxhdC5kZWxldGUoZSkpfSkoKX0pKX07dmFyIGh0OyFmdW5jdGlvbihlKXtlLkVSUk9SPVwiZXJyb3JcIixlLlNVQ0NFU1M9XCJzdWNjZXNzXCIsZS5JTkZPPVwiaW5mb1wifShodHx8KGh0PXt9KSk7Y29uc3QgQ3Q9KGUsdCk9Pntjb25zdCBuPWU7cmV0dXJuIG4ud29ya3NwYWNlUGxhdGZvcm18fChuLndvcmtzcGFjZVBsYXRmb3JtPXt9KSxuLndvcmtzcGFjZVBsYXRmb3JtLl9pbnRlcm5hbERlZmVyU2hvd09wdGlvbnM9e3NldEFzRm9yZWdyb3VuZDohIXQsZGVmZXJTaG93RW5hYmxlZDohMCxhdXRvU2hvdzpuLndvcmtzcGFjZVBsYXRmb3JtPy5faW50ZXJuYWxBdXRvU2hvd3x8bi53b3Jrc3BhY2VQbGF0Zm9ybT8uX2ludGVybmFsRGVmZXJTaG93T3B0aW9ucz8uYXV0b1Nob3d8fHZvaWQgMD09PW4uYXV0b1Nob3d8fG4uYXV0b1Nob3d9LG4uYXV0b1Nob3c9ITEsbn07Y29uc3QgdnQ9Q3Qoe2Fsd2F5c09uVG9wOiEwLGF1dG9TaG93OiExLGZyYW1lOiExLHJlc2l6YWJsZTohMSxzaG93VGFza2Jhckljb246ITF9KTt2YXIgZ3Q7IWZ1bmN0aW9uKGUpe2UuTG9ja2VkPVwiTG9ja0Nsb3NlZEljb25cIixlLlVubG9ja2VkPVwiTG9ja09wZW4xSWNvblwifShndHx8KGd0PXt9KSk7Y29uc3QgbXQ9XCJicm93c2VyXCIsd3Q9ZnVuY3Rpb24oZT12dCl7Y29uc3QgdD1uZXcgTWFwO3JldHVybiBhc3luYyhuLHIsbyxhKT0+e2lmKHQuaGFzKG4pKXtjb25zdHtjdXJyZW50VXJsOmUsY3VycmVudE5hbWU6b309dC5nZXQobik7aWYoZT09PXIpcmV0dXJuO2NvbnN0IGE9ZmluLldpbmRvdy53cmFwU3luYyh7dXVpZDpmaW4ubWUudXVpZCxuYW1lOm99KTthd2FpdCBhLmNsb3NlKCl9Y29uc3QgaT1gJHtULkhvbWVJbnRlcm5hbH0tJHtEYXRlLm5vdygpfSR7TWF0aC5yYW5kb20oKX1gO3Quc2V0KG4se2N1cnJlbnRVcmw6cixjdXJyZW50TmFtZTppfSk7Y29uc3QgbD1gTmV3ICR7YX0gaW5kaWNhdG9yOiAke299YCxjPWF3YWl0IGZpbi5QbGF0Zm9ybS5nZXRDdXJyZW50U3luYygpLmNyZWF0ZVdpbmRvdyh7Li4uZSxuYW1lOmksdXJsOnJ9KTsoKGUsdCk9Pntjb25zdCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7bi5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsXCJhbGVydFwiKSxuLnNldEF0dHJpYnV0ZShcImFyaWEtbGl2ZVwiLHR8fFwicG9saXRlXCIpLChlPT57ZS5zdHlsZS5wb3NpdGlvbj1cImFic29sdXRlXCIsZS5zdHlsZS53aWR0aD1cIjFweFwiLGUuc3R5bGUuaGVpZ2h0PVwiMXB4XCIsZS5zdHlsZS5wYWRkaW5nPVwiMFwiLGUuc3R5bGUubWFyZ2luPVwiLTFweFwiLGUuc3R5bGUub3ZlcmZsb3c9XCJoaWRkZW5cIixlLnN0eWxlLndoaXRlU3BhY2U9XCJub3dyYXBcIixlLnN0eWxlLmJvcmRlcj1cIjBcIn0pKG4pLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobiksc2V0VGltZW91dCgoKCk9PntuLmlubmVySFRNTD1lfSksMzAwKSxzZXRUaW1lb3V0KCgoKT0+e2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobil9KSwxZTMpfSkobCksYy5vbmNlKFwiY2xvc2VkXCIsKCgpPT57dC5kZWxldGUobil9KSl9fSgpO2FzeW5jIGZ1bmN0aW9uIHl0KGUsdCxuLHIpe2NvbnN0IG89bmV3IFVSTFNlYXJjaFBhcmFtcztvLmFwcGVuZChcInR5cGVcIixlKSxvLmFwcGVuZChcIm1lc3NhZ2VcIix0KSxvLmFwcGVuZChcInBhcmVudE5hbWVcIixufHxcIlwiKSxvLmFwcGVuZChcImljb25cIixyfHxcIlwiKTtjb25zdCBhPWAke0grdmUuQnJvd3NlckluZGljYXRvcn0jJHtvLnRvU3RyaW5nKCl9YDtyZXR1cm4gd3QobXQrbixhLHQsZSl9ZnVuY3Rpb24gYnQoZSx0LG4pe3JldHVybiB5dChodC5TVUNDRVNTLGUsdCxuKX12YXIgeHQ7IWZ1bmN0aW9uKGUpe2UuQ3VycmVudFdvcmtzcGFjZUlkPVwiY3VycmVudFdvcmtzcGFjZUlkXCIsZS5MYXN0Rm9jdXNlZEJyb3dzZXJXaW5kb3c9XCJsYXN0Rm9jdXNlZEJyb3dzZXJXaW5kb3dcIixlLk1hY2hpbmVOYW1lPVwibWFjaGluZU5hbWVcIixlLk5ld1RhYlBhZ2VMYXlvdXQ9XCJOZXdUYWJQYWdlTGF5b3V0XCIsZS5OZXdUYWJQYWdlU29ydD1cIk5ld1RhYlBhZ2VTb3J0XCIsZS5Eb2NrUG9zaXRpb249XCJEb2NrUG9zaXRpb25cIixlLlNlbGVjdGVkQ29sb3JTY2hlbWU9XCJTZWxlY3RlZENvbG9yU2NoZW1lXCIsZS5IYXNNb3ZlZFN0b3JlPVwiSGFzTW92ZWRTdG9yZVwifSh4dHx8KHh0PXt9KSk7Y29uc3QgT3Q9eHQsTHQ9KGUsdCk9Pntsb2NhbFN0b3JhZ2Uuc2V0SXRlbShgJHtTfS0ke2V9YCx0KX0sTXQ9ZT0+bG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7U30tJHtlfWApO3ZhciBTdDshZnVuY3Rpb24oZSl7ZS5Ib21lPVwiL2hvbWVcIixlLkJyb3dzZXI9XCIvYnJvd3NlclwiLGUuUHJvdmlkZXI9XCIvcHJvdmlkZXJcIixlLlN0b3JlZnJvbnQ9XCIvc3RvcmVmcm9udFwiLGUuRG9jaz1cIi9kb2NrXCJ9KFN0fHwoU3Q9e30pKTtjb25zdCBfdD0oZSx0PTApPT57bGV0IG4scixvPSExO2NvbnN0IGE9YXN5bmMgcj0+e2NvbnN0IGk9YXdhaXQgZSguLi5yKTtpZihvKXthd2FpdCBuZXcgUHJvbWlzZSgoZT0+c2V0VGltZW91dChlLHQpKSk7Y29uc3QgZT1uO3JldHVybiBuPXZvaWQgMCxvPSExLGEoZSl9cmV0dXJuIGl9O3JldHVybiguLi5lKT0+KHI/KG89ITAsbj1lKTpyPWEoZSkuY2F0Y2goKGU9Pnt0aHJvdyBjb25zb2xlLmVycm9yKFwibWFrZURlYm91bmNlZEZ1bmNcIixlKSxlfSkpLmZpbmFsbHkoKCgpPT57cj12b2lkIDB9KSkscil9O2Z1bmN0aW9uIGp0KGUsdCl7cmV0dXJuIGFzeW5jKG4sLi4ucik9PntlLmhhcyhuKSYmZS5nZXQobikuZm9yRWFjaCgoZT0+ZSguLi5yKSkpLHQmJmF3YWl0IHQoe2V2ZW50Om4scGF5bG9hZDpyfSl9fWZ1bmN0aW9uIEV0KGUsdCl7cmV0dXJuIHQmJnQoKHQ9Pntjb25zdHtldmVudDpuLHBheWxvYWQ6cn09dDtlLmhhcyhuKSYmZS5nZXQobikuZm9yRWFjaCgoZT0+ZSguLi5yKSkpfSkpLCh0LG4pPT57ZS5oYXModCl8fGUuc2V0KHQsbmV3IFNldCksZS5nZXQodCkuYWRkKG4pfX1mdW5jdGlvbiBQdChlKXtyZXR1cm4odCxuKT0+e2UuaGFzKHQpfHxlLnNldCh0LG5ldyBTZXQpO2NvbnN0IHI9ZS5nZXQodCksbz0oLi4uZSk9PntuKC4uLmUpLHIuZGVsZXRlKG8pfTtyLmFkZChvKX19ZnVuY3Rpb24ga3QoZSl7cmV0dXJuKHQsbik9PntlLmhhcyh0KSYmZS5nZXQodCkuZGVsZXRlKG4pfX12YXIgSHQ9bigzMDQpO2NvbnN0IFZ0PWU9PmUucmVwbGFjZSgvW15cXGQsXS9nLFwiXCIpLnNwbGl0KFwiLFwiKSxSdD1lPT57aWYoZS5sZW5ndGg8Mil0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNvbG9yIG9iamVjdCwgY2Fubm90IGNvbnZlcnQgdG8gSFNMLlwiKTtjb25zdCB0PWVbMF0vMjU1LG49ZVsxXS8yNTUscj1lWzJdLzI1NSxvPU1hdGgubWluKHQsbixyKSxhPU1hdGgubWF4KHQsbixyKSxpPWEtbztsZXQgbD0wLGM9MCxzPTA7cmV0dXJuIGw9MD09PWk/MDphPT09dD8obi1yKS9pJTY6YT09PW4/KHItdCkvaSsyOih0LW4pL2krNCxsPU1hdGgucm91bmQoNjAqbCksbDwwJiYobCs9MzYwKSxzPShhK28pLzIsYz0wPT1pPzA6aS8oMS1NYXRoLmFicygyKnMtMSkpLGM9KygxMDAqYykudG9GaXhlZCgxKSxzPSsoMTAwKnMpLnRvRml4ZWQoMSkse2hzbDpgaHNsKCR7bH0sICR7Y30lLCAke3N9JSlgLGhzbGE6YGhzbCgke2x9LCAke2N9JSwgJHtzfSUsIDEpYCxodWU6bCxsaWdodG5lc3M6cyxzYXR1cmF0aW9uOmN9fSxJdD1lPT57aWYoIWUpdGhyb3cgbmV3IEVycm9yKFwiQ29sb3IgaXMgbm90IGRlZmluZWRcIik7Y29uc3QgdD1lLnRvTG93ZXJDYXNlKCk7bGV0IG47aWYodC5pbmNsdWRlcyhcInJnYlwiKSl7Y29uc3QgZT1WdCh0KTtlLmxlbmd0aD4zJiZlLnBvcCgpLG49UnQoZSkuaHVlfWlmKHQuaW5jbHVkZXMoXCIjXCIpKXtjb25zdCBlPShlPT57aWYoIWUuaW5jbHVkZXMoXCIjXCIpKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaGV4IHZhbHVlLCBjYW5ub3QgY29udmVydCB0byBSR0IuIEhleCB2YWx1ZSBiZWdpbnMgd2l0aCBhIGhhc2h0YWcuXCIpO2xldCB0PTAsbj0wLHI9MDtpZig0PT09ZS5sZW5ndGgpdD1gMHgke2VbMV19JHtlWzFdfWAsbj1gMHgke2VbMl19JHtlWzJdfWAscj1gMHgke2VbM119JHtlWzNdfWA7ZWxzZXtpZig3IT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBoZXggc3RyaW5nIGxlbmd0aCwgY2Fubm90IGNvbnZlcnQgdG8gUkdCLlwiKTt0PWAweCR7ZVsxXX0ke2VbMl19YCxuPWAweCR7ZVszXX0ke2VbNF19YCxyPWAweCR7ZVs1XX0ke2VbNl19YH1yZXR1cm5bK3QsK24sK3JdfSkodCk7bj1SdChlKS5odWV9aWYodC5pbmNsdWRlcyhcImhzbFwiKSl7bj1WdCh0KVswXX1jb25zdCByPW4/LnRvU3RyaW5nKCk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKGBIdWUgd2FzIHVuYWJsZSB0byBiZSBleHRyYWN0ZWQgZnJvbSBcIiR7dH1cIiwgY2hlY2sgY29sb3IgZm9ybWF0LiBBY2NlcHRlZCBmb3JtYXRzIGFyZTogcmdiKCksIHJnYmEoKSwgaGV4LCBoc2woKSwgYW5kIGhzbGEoKWApO3JldHVybiByfSxadD0oZSx0PSExKT0+e2NvbnN0IG49SXQoZSk7cmV0dXJuIHQ/e2JhY2tncm91bmQxOmBoc2xhKCR7bn0sIDAlLCAxMDAlLCAxKWAsYmFja2dyb3VuZDI6YGhzbGEoJHtufSwgNjclLCA5OSUsIDEpYCxiYWNrZ3JvdW5kMzpgaHNsYSgke259LCAyNiUsIDk2JSwgMSlgLGJhY2tncm91bmQ0OmBoc2xhKCR7bn0sIDE1JSwgOTQlLCAxKWAsYmFja2dyb3VuZDU6YGhzbGEoJHtufSwgMTAlLCA4OCUsIDEpYCxiYWNrZ3JvdW5kNjpgaHNsYSgke259LCA4MCUsIDgwJSwgMSlgfTp7YmFja2dyb3VuZDE6YGhzbGEoJHtufSwgOCUsIDclLCAxKWAsYmFja2dyb3VuZDI6YGhzbGEoJHtufSwgOCUsIDEzJSwgMSlgLGJhY2tncm91bmQzOmBoc2xhKCR7bn0sIDklLCAxNSUsIDEpYCxiYWNrZ3JvdW5kNDpgaHNsYSgke259LCA2JSwgMjMlLCAxKWAsYmFja2dyb3VuZDU6YGhzbGEoJHtufSwgMjElLCAyOCUsIDEpYCxiYWNrZ3JvdW5kNjpgaHNsYSgke259LCA1JSwgNTElLCAxKWB9fSxBdD0oZSx0KT0+e2NvbnN0IG49e307cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKHI9PntuW3JdPXRbcl0/dFtyXTplW3JdfSkpLG59LER0PWU9Pih7aWRlbnRpdHk6ZSxvcGVuZmluV2luZG93OmZpbi5XaW5kb3cud3JhcFN5bmMoZSksZ2V0UGFnZXM6YXN5bmMoKT0+KGF3YWl0IGtlKGUpKS5kaXNwYXRjaChfZS5HZXRQYWdlc0ZvcldpbmRvdyxlKSxnZXRQYWdlOmFzeW5jIHQ9Pihhd2FpdCBrZShlKSkuZGlzcGF0Y2goX2UuR2V0UGFnZUZvcldpbmRvdyx7aWRlbnRpdHk6ZSxwYWdlSWQ6dH0pLGFkZFBhZ2U6YXN5bmMgdD0+e2NvbnN0IG49YXdhaXQga2UoZSk7dD8udGl0bGV8fCh0LnRpdGxlPWF3YWl0IG4uZGlzcGF0Y2goX2UuR2V0VW5pcXVlUGFnZVRpdGxlLHZvaWQgMCkpO2NvbnN0IHI9KGF3YWl0IG4uZGlzcGF0Y2goX2UuR2V0QWxsQXR0YWNoZWRQYWdlcyx2b2lkIDApKS5maW5kKChlPT5lLnBhZ2VJZD09PXQucGFnZUlkfHxlLnRpdGxlPT09dC50aXRsZSkpO2lmKHIpdGhyb3cgci5wYWdlSWQ9PT10LnBhZ2VJZD9uZXcgRXJyb3IoYHBhZ2Ugd2l0aCBpZCAke3QucGFnZUlkfSBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIGEgYnJvd3NlciB3aW5kb3cgJHtyLnBhcmVudElkZW50aXR5Lm5hbWV9YCk6bmV3IEVycm9yKGBwYWdlIHdpdGggdGl0bGUgJHt0LnRpdGxlfSBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIGEgYnJvd3NlciB3aW5kb3cgJHtyLnBhcmVudElkZW50aXR5Lm5hbWV9YCk7Y29uc3Qgbz17aWRlbnRpdHk6ZSxwYWdlczpbdF19O3JldHVybiBuLmRpc3BhdGNoKF9lLkF0dGFjaFBhZ2VzVG9XaW5kb3csbyl9LHJlbW92ZVBhZ2U6YXN5bmMgdD0+KGF3YWl0IGtlKGUpKS5kaXNwYXRjaChfZS5EZXRhY2hQYWdlc0Zyb21XaW5kb3cse2lkZW50aXR5OmUscGFnZUlkczpbdF19KSxzZXRBY3RpdmVQYWdlOmFzeW5jIHQ9Pihhd2FpdCBrZShlKSkuZGlzcGF0Y2goX2UuU2V0QWN0aXZlUGFnZSx7aWRlbnRpdHk6ZSxwYWdlSWQ6dH0pLHVwZGF0ZVBhZ2U6YXN5bmMgdD0+e2NvbnN0IG49YXdhaXQga2UoZSk7cmV0dXJuIHQuaWRlbnRpdHk9ZSxuLmRpc3BhdGNoKF9lLlVwZGF0ZVBhZ2VGb3JXaW5kb3csdCl9LHJlb3JkZXJQYWdlczphc3luYyB0PT57Y29uc3Qgbj1hd2FpdCBrZShlKTtyZXR1cm4gdC5pZGVudGl0eT1lLG4uZGlzcGF0Y2goX2UuUmVvcmRlclBhZ2VzRm9yV2luZG93LHQpfSxfb3Blbkdsb2JhbENvbnRleHRNZW51OmFzeW5jIHQ9Pntjb25zdCBuPWF3YWl0IGtlKGUpO3JldHVybiB0LmlkZW50aXR5PWUsbi5kaXNwYXRjaChfZS5PcGVuR2xvYmFsQ29udGV4dE1lbnVJbnRlcm5hbCx0KX0scmVwbGFjZVRvb2xiYXJPcHRpb25zOmFzeW5jIHQ9Pnthd2FpdCBrZShlKTtjb25zdCBuPWZpbi5XaW5kb3cud3JhcFN5bmMoZSk7YXdhaXQgbi51cGRhdGVPcHRpb25zKHt3b3Jrc3BhY2VQbGF0Zm9ybTp7dG9vbGJhck9wdGlvbnM6dH19KX0scmVwbGFjZVdpbmRvd1N0YXRlQnV0dG9uT3B0aW9uczphc3luYyB0PT57YXdhaXQga2UoZSk7Y29uc3Qgbj1maW4uV2luZG93LndyYXBTeW5jKGUpO2F3YWl0IG4udXBkYXRlT3B0aW9ucyh7d29ya3NwYWNlUGxhdGZvcm06e3dpbmRvd1N0YXRlQnV0dG9uT3B0aW9uczp0fX0pfSxfb3BlblZpZXdUYWJDb250ZXh0TWVudTphc3luYyB0PT57Y29uc3Qgbj1hd2FpdCBrZShlKTtyZXR1cm4gdC5pZGVudGl0eT1lLG4uZGlzcGF0Y2goX2UuT3BlblZpZXdUYWJDb250ZXh0TWVudUludGVybmFsLHQpfSxfb3BlblBhZ2VUYWJDb250ZXh0TWVudTphc3luYyB0PT57Y29uc3Qgbj1hd2FpdCBrZShlKTtyZXR1cm4gdC5pZGVudGl0eT1lLG4uZGlzcGF0Y2goX2UuT3BlblBhZ2VUYWJDb250ZXh0TWVudUludGVybmFsLHQpfSxfb3BlblNhdmVNb2RhbDphc3luYyB0PT57YXdhaXQga2UoZSk7cmV0dXJuKGF3YWl0IGJlKGUpKS5kaXNwYXRjaChMZS5PcGVuU2F2ZU1vZGFsSW50ZXJuYWwsdCl9LF9vcGVuU2F2ZUJ1dHRvbkNvbnRleHRNZW51OmFzeW5jIHQ9Pntjb25zdCBuPWF3YWl0IGtlKGUpO3JldHVybiB0LmlkZW50aXR5PWUsbi5kaXNwYXRjaChfZS5PcGVuU2F2ZUJ1dHRvbkNvbnRleHRNZW51SW50ZXJuYWwsdCl9fSksQnQ9ZT0+e2NvbnN0IHQ9ZmluLlBsYXRmb3JtLndyYXBTeW5jKGUpO3JldHVybnt3cmFwU3luYzplPT5EdChlKSxjcmVhdGVXaW5kb3c6YXN5bmMgbj0+e2F3YWl0IGtlKGUpO2NvbnN0IHI9YXdhaXQgdC5jcmVhdGVXaW5kb3cobik7cmV0dXJuIER0KHIuaWRlbnRpdHkpfSxnZXRBbGxBdHRhY2hlZFBhZ2VzOmFzeW5jKCk9Pihhd2FpdCBrZShlKSkuZGlzcGF0Y2goX2UuR2V0QWxsQXR0YWNoZWRQYWdlcyx2b2lkIDApLGdldEFsbFdpbmRvd3M6YXN5bmMoKT0+e2F3YWl0IGtlKGUpO3JldHVybihhd2FpdCBmaW4uQXBwbGljYXRpb24ud3JhcFN5bmMoZSkuZ2V0Q2hpbGRXaW5kb3dzKCkpLmZpbHRlcigoZT0+ZS5pZGVudGl0eS5uYW1lLnN0YXJ0c1dpdGgoXCJpbnRlcm5hbC1nZW5lcmF0ZWQtd2luZG93LVwiKSkpLm1hcCgoZT0+RHQoZS5pZGVudGl0eSkpKX0sZ2V0VW5pcXVlUGFnZVRpdGxlOmFzeW5jIHQ9Pihhd2FpdCBrZShlKSkuZGlzcGF0Y2goX2UuR2V0VW5pcXVlUGFnZVRpdGxlLHQpLGdldExhc3RGb2N1c2VkV2luZG93OmFzeW5jKCk9Pihhd2FpdCBrZShlKSkuZGlzcGF0Y2goX2UuR2V0TGFzdEZvY3VzZWRCcm93c2VyV2luZG93LHZvaWQgMCl9fSxUdD1lPT4oe2NyZWF0ZVBhZ2U6YXN5bmMgdD0+KGF3YWl0IGtlKGUpKS5kaXNwYXRjaChfZS5DcmVhdGVTYXZlZFBhZ2VJbnRlcm5hbCx0KSxkZWxldGVQYWdlOmFzeW5jIHQ9Pihhd2FpdCBrZShlKSkuZGlzcGF0Y2goX2UuRGVsZXRlU2F2ZWRQYWdlSW50ZXJuYWwsdCksdXBkYXRlUGFnZTphc3luYyB0PT4oYXdhaXQga2UoZSkpLmRpc3BhdGNoKF9lLlVwZGF0ZVNhdmVkUGFnZUludGVybmFsLHQpLGdldFBhZ2U6YXN5bmMgdD0+KGF3YWl0IGtlKGUpKS5kaXNwYXRjaChfZS5HZXRTYXZlZFBhZ2UsdCksZ2V0UGFnZXM6YXN5bmMgdD0+KGF3YWl0IGtlKGUpKS5kaXNwYXRjaChfZS5HZXRTYXZlZFBhZ2VzLHQpLHNhdmVQYWdlOmFzeW5jIHQ9Pihhd2FpdCBrZShlKSkuZGlzcGF0Y2goX2UuU2F2ZVBhZ2UsdCksY3JlYXRlV29ya3NwYWNlOmFzeW5jIHQ9Pihhd2FpdCBQZShlKSkuZGlzcGF0Y2goX2UuQ3JlYXRlU2F2ZWRXb3Jrc3BhY2UsdCksZGVsZXRlV29ya3NwYWNlOmFzeW5jIHQ9Pntjb25zdCBuPXRuKCkscj1hd2FpdCBuLmdldEN1cnJlbnRXb3Jrc3BhY2UoKTtpZihyLndvcmtzcGFjZUlkPT09dCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBkZWxldGUgY3VycmVudCBhY3RpdmUgd29ya3NwYWNlICR7ci50aXRsZX1gKTtyZXR1cm4oYXdhaXQgUGUoZSkpLmRpc3BhdGNoKF9lLkRlbGV0ZVNhdmVkV29ya3NwYWNlLHQpfSx1cGRhdGVXb3Jrc3BhY2U6YXN5bmMgdD0+KGF3YWl0IFBlKGUpKS5kaXNwYXRjaChfZS5VcGRhdGVTYXZlZFdvcmtzcGFjZSx0KSxnZXRXb3Jrc3BhY2U6YXN5bmMgdD0+KGF3YWl0IFBlKGUpKS5kaXNwYXRjaChfZS5HZXRTYXZlZFdvcmtzcGFjZSx0KSxnZXRXb3Jrc3BhY2VzOmFzeW5jIHQ9Pihhd2FpdCBQZShlKSkuZGlzcGF0Y2goX2UuR2V0U2F2ZWRXb3Jrc3BhY2VzLHQpLHNhdmVXb3Jrc3BhY2U6YXN5bmMgdD0+KGF3YWl0IFBlKGUpKS5kaXNwYXRjaChfZS5TYXZlV29ya3NwYWNlLHQpLGdldERvY2tQcm92aWRlckNvbmZpZzphc3luYyB0PT4oYXdhaXQgUGUoZSkpLmRpc3BhdGNoKF9lLkdldERvY2tQcm92aWRlckNvbmZpZyx0KSxzYXZlRG9ja1Byb3ZpZGVyQ29uZmlnOmFzeW5jIHQ9Pihhd2FpdCBQZShlKSkuZGlzcGF0Y2goX2UuU2F2ZURvY2tQcm92aWRlckNvbmZpZyx0KX0pO3ZhciAkdDshZnVuY3Rpb24oZSl7ZS5VcGRhdGVQbGF0Zm9ybVRoZW1lU2NoZW1lPVwidXBkYXRlLXBsYXRmb3JtLXRoZW1lLXNjaGVtZVwifSgkdHx8KCR0PXt9KSk7Y29uc3QgRnQ9bWUoXCJvZi13b3Jrc3BhY2Utbm90aWZpY2F0aW9ucy1zeW5jXCIpOygoe3BsYXRmb3JtSWRlbnRpdHk6ZSxpZDp0PVwiXCJ9KT0+e2UubmFtZSxlLnV1aWR9KSh7aWQ6XCJob21lLWNvbW1hbmRzXCIscGxhdGZvcm1JZGVudGl0eTp6fSk7dmFyIFd0LE50OyFmdW5jdGlvbihlKXtlLkZldGNoaW5nPVwiZmV0Y2hpbmdcIixlLkZldGNoZWQ9XCJmZXRjaGVkXCIsZS5Db21wbGV0ZT1cImNvbXBsZXRlXCJ9KFd0fHwoV3Q9e30pKSxmdW5jdGlvbihlKXtlW2UuSW5pdGlhbD0wXT1cIkluaXRpYWxcIixlW2UuT3Blbj0xXT1cIk9wZW5cIixlW2UuQ2xvc2U9Ml09XCJDbG9zZVwifShOdHx8KE50PXt9KSk7Y29uc3QgenQ9bWUoXCJfX29mX3dvcmtzcGFjZV9wcm90b2NvbF9fXCIpLFV0PXp0LEd0PShtZShcIl9fc2VhcmNoLW9wZW5maW4tYnJvd3Nlci1ob21lLXRvcGljX19cIiksZT0+KHtnZXRUaGVtZXM6YXN5bmMoKT0+KGF3YWl0IFBlKGUpKS5kaXNwYXRjaChfZS5HZXRUaGVtZXMsdm9pZCAwKSxzZXRTZWxlY3RlZFNjaGVtZTphc3luYyB0PT4oYXdhaXQgUGUoZSkpLmRpc3BhdGNoKF9lLlNldFNlbGVjdGVkU2NoZW1lLHQpLGdldFNlbGVjdGVkU2NoZW1lOmFzeW5jKCk9Pihhd2FpdCBQZShlKSkuZGlzcGF0Y2goX2UuR2V0U2VsZWN0ZWRTY2hlbWUsdm9pZCAwKX0pKSxxdD1hc3luYyBlPT57Y29uc3QgdD1hd2FpdCBVdCgpO2F3YWl0IHQuZGlzcGF0Y2goXCJzZXQtc2VsZWN0ZWQtc2NoZW1lXCIsZSl9LFl0PWFzeW5jIGU9Pntjb25zdCB0PWF3YWl0IEZ0KCk7YXdhaXQgdC5kaXNwYXRjaCgkdC5VcGRhdGVQbGF0Zm9ybVRoZW1lU2NoZW1lLHtzY2hlbWU6ZX0pfSxLdD1hc3luYyBlPT57Y29uc3QgdD1hd2FpdCBZKCk7cmV0dXJuIFByb21pc2UuYWxsKHQubWFwKChhc3luYyB0PT57Y29uc3Qgbj1hd2FpdCBiZSh0LmlkZW50aXR5KTthd2FpdCBuLmRpc3BhdGNoKExlLlNldFNlbGVjdGVkU2NoZW1lLGUpfSkpKX0sWHQ9YXN5bmMgZT0+e2NvbnN0IHQ9YXdhaXQgSygpO3JldHVybiBQcm9taXNlLmFsbCh0Lm1hcCgoYXN5bmMgdD0+e2NvbnN0IG49YXdhaXQgYmUodC5pZGVudGl0eSk7YXdhaXQgbi5kaXNwYXRjaChMZS5TZXRTZWxlY3RlZFNjaGVtZSxlKX0pKSl9LFF0PWFzeW5jIGU9PntpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgbG9jYWxTdG9yYWdlKXRyeXthd2FpdCBQcm9taXNlLmFsbChbTHQoT3QuU2VsZWN0ZWRDb2xvclNjaGVtZSxlKSxZdChlKSxLdChlKSxYdChlKSxxdChlKV0pfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoXCJmYWlsZWQgdG8gc2V0IHRoZSBzZWxlY3RlZCBzY2hlbWU6IFwiLGUpfX0sSnQ9KCk9PntpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgbG9jYWxTdG9yYWdlKXJldHVybiBudWxsO3RyeXtjb25zdCBlPU10KE90LlNlbGVjdGVkQ29sb3JTY2hlbWUpO3JldHVybiBlfHxudWxsfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoXCJmYWlsZWQgdG8gZ2V0IHRoZSBzZWxlY3RlZCBzY2hlbWU6IFwiLGUpfX0sZW49ZT0+e2NvbnN0IHQ9ZmluLlBsYXRmb3JtLndyYXBTeW5jKGUpO2xldCBuO3JldHVybiBPYmplY3QuYXNzaWduKHQse2FwcGx5U25hcHNob3Q6YXN5bmModCxuKT0+e2lmKFwic3RyaW5nXCIhPXR5cGVvZiB0JiYhdD8ud2luZG93cyl0aHJvdyBuZXcgRXJyb3IoXCJOb3QgYSB2YWxpZCBicm93c2VyIHNuYXBzaG90XCIpO3JldHVybiBmaW4uUGxhdGZvcm0ud3JhcFN5bmMoZSkuYXBwbHlTbmFwc2hvdCh0LG4pfSxnZXRTbmFwc2hvdDooKT0+ZmluLlBsYXRmb3JtLndyYXBTeW5jKGUpLmdldFNuYXBzaG90KCkudGhlbigoZT0+ZSkpLGxhdW5jaEFwcDphc3luYyB0PT57Y29uc29sZS53YXJuKFwibGF1bmNoQXBwIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgY3JlYXRlVmlldyAtIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuZmluLmNvL29mLWRvY3MvZG9jcy9wbGF0Zm9ybS1nZXR0aW5nLXN0YXJ0ZWQjYWRkLWEtdmlldy10by1hbi1leGlzdGluZy13aW5kb3cgb3IgIGNyZWF0ZVdpbmRvdyAtIGh0dHBzOi8vZGV2ZWxvcGVycy5vcGVuZmluLmNvL29mLWRvY3MvZG9jcy9wbGF0Zm9ybS1nZXR0aW5nLXN0YXJ0ZWQjY3JlYXRlLWEtcGxhdGZvcm0td2luZG93IGluc3RlYWQuXCIpLHQudGFyZ2V0fHwodC50YXJnZXQ9e3V1aWQ6UyxuYW1lOl8sZW50aXR5VHlwZTpqfHxcInVua25vd25cIn0pO3JldHVybihhd2FpdCBQZShlKSkuZGlzcGF0Y2goX2UuTGF1bmNoQXBwLHQpfSxfaW52b2tlQ3VzdG9tQWN0aW9uOmFzeW5jKHQsbik9Pntjb25zdCByPWF3YWl0IFBlKGUpLG89e2FjdGlvbklkOnQscGF5bG9hZDp7Li4ubixjYWxsZXJUeXBlOm4uY2FsbGVyVHlwZXx8dy5BUEl9fTtyZXR1cm4gci5kaXNwYXRjaChfZS5JbnZva2VDdXN0b21BY3Rpb25JbnRlcm5hbCxvKX0sX3JlcXVlc3RRdWl0UGxhdGZvcm1EaWFsb2c6YXN5bmMgdD0+KGF3YWl0IFBlKGUpKS5kaXNwYXRjaChfZS5SZXF1ZXN0UXVpdFBsYXRmb3JtRGlhbG9nSW50ZXJuYWwsdCksZ2V0Q3VycmVudFdvcmtzcGFjZTphc3luYygpPT4oYXdhaXQgUGUoZSkpLmRpc3BhdGNoKF9lLkdldEN1cnJlbnRXb3Jrc3BhY2Usdm9pZCAwKSxhcHBseVdvcmtzcGFjZTphc3luYyh0LG4pPT4oYXdhaXQgUGUoZSkpLmRpc3BhdGNoKF9lLkFwcGx5V29ya3NwYWNlLHsuLi50LG9wdGlvbnM6bn0pLHNldEFjdGl2ZVdvcmtzcGFjZTphc3luYyB0PT4oYXdhaXQgUGUoZSkpLmRpc3BhdGNoKF9lLlNldEFjdGl2ZVdvcmtzcGFjZSx0KSxfcmFpc2VBbmFseXRpY3M6YXN5bmMgdD0+e2lmKG58fChuPWF3YWl0IEVlKGUpKSxcIm9iamVjdFwiPT10eXBlb2YgbiYmbj8uYW5hbHl0aWNzPy5pc1N1cHBvcnRlZCl7cmV0dXJuKGF3YWl0IFBlKGUpKS5kaXNwYXRjaChfZS5BbmFseXRpY3MsdCl9ZS51dWlkfSxUaGVtZTpHdChlKSxCcm93c2VyOkJ0KGUpLFN0b3JhZ2U6VHQoZSl9KX0sdG49KCk9PmVuKGZpbi5tZS5pZGVudGl0eSksbm49e1tIdC5QYWxldHRlLmJyYW5kUHJpbWFyeV06XCIjMEE3NkQzXCIsW0h0LlBhbGV0dGUuc3RhdHVzU3VjY2Vzc106SHQuQ29sb3IuZnVuY3Rpb25hbDEsW0h0LlBhbGV0dGUuc3RhdHVzV2FybmluZ106SHQuQ29sb3IuZnVuY3Rpb25hbDEwLFtIdC5QYWxldHRlLnN0YXR1c0NyaXRpY2FsXTpIdC5Db2xvci5mdW5jdGlvbmFsNyxbSHQuUGFsZXR0ZS5zdGF0dXNBY3RpdmVdOkh0LkNvbG9yLmZ1bmN0aW9uYWwzLFtIdC5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kMV06XCIjMEE3NkQzXCIsW0h0LlBhbGV0dGUuY29udGVudEJhY2tncm91bmQyXTpcIiMwMDAwMDBcIixbSHQuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDNdOlwiIzAwMDAwMFwiLFtIdC5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kNF06XCIjMDAwMDAwXCIsW0h0LlBhbGV0dGUuY29udGVudEJhY2tncm91bmQ1XTpcIiMwMDAwMDBcIn0scm49ey4uLm5uLFtIdC5QYWxldHRlLmJhY2tncm91bmQxXTpIdC5Db2xvci53aGl0ZSxbSHQuUGFsZXR0ZS5iYWNrZ3JvdW5kMl06SHQuQ29sb3IubGlnaHRHcmF5MSxbSHQuUGFsZXR0ZS5iYWNrZ3JvdW5kM106SHQuQ29sb3IubGlnaHRHcmF5MixbSHQuUGFsZXR0ZS5iYWNrZ3JvdW5kNF06SHQuQ29sb3IubGlnaHRHcmF5MyxbSHQuUGFsZXR0ZS5iYWNrZ3JvdW5kNV06SHQuQ29sb3IubGlnaHRHcmF5NCxbSHQuUGFsZXR0ZS5iYWNrZ3JvdW5kNl06SHQuQ29sb3IubGlnaHRHcmF5NSxbSHQuUGFsZXR0ZS5icmFuZFNlY29uZGFyeV06SHQuQ29sb3IuZGFya0dyYXk1LFtIdC5QYWxldHRlLmlucHV0QmFja2dyb3VuZF06SHQuQ29sb3IubGlnaHRHcmF5MyxbSHQuUGFsZXR0ZS5pbnB1dENvbG9yXTpIdC5Db2xvci5kYXJrR3JheTUsW0h0LlBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcl06SHQuQ29sb3IuZGFya0dyYXkyLFtIdC5QYWxldHRlLmlucHV0RGlzYWJsZWRdOkh0LkNvbG9yLm5ldXRyYWxHcmF5LFtIdC5QYWxldHRlLmlucHV0Rm9jdXNlZF06SHQuQ29sb3IubGlnaHRHcmF5NSxbSHQuUGFsZXR0ZS5pbnB1dEJvcmRlcl06SHQuQ29sb3IubmV1dHJhbEdyYXksW0h0LlBhbGV0dGUudGV4dERlZmF1bHRdOkh0LkNvbG9yLmRhcmtHcmF5NSxbSHQuUGFsZXR0ZS50ZXh0SGVscF06SHQuQ29sb3IuZGFya0dyYXkzLFtIdC5QYWxldHRlLnRleHRJbmFjdGl2ZV06SHQuQ29sb3IubmV1dHJhbEdyYXl9LG9uPXsuLi5ubixbSHQuUGFsZXR0ZS5iYWNrZ3JvdW5kMV06SHQuQ29sb3IuZGFya0dyYXk2LFtIdC5QYWxldHRlLmJhY2tncm91bmQyXTpIdC5Db2xvci5kYXJrR3JheTUsW0h0LlBhbGV0dGUuYmFja2dyb3VuZDNdOkh0LkNvbG9yLmRhcmtHcmF5NCxbSHQuUGFsZXR0ZS5iYWNrZ3JvdW5kNF06SHQuQ29sb3IuZGFya0dyYXkzLFtIdC5QYWxldHRlLmJhY2tncm91bmQ1XTpIdC5Db2xvci5kYXJrR3JheTIsW0h0LlBhbGV0dGUuYmFja2dyb3VuZDZdOkh0LkNvbG9yLmRhcmtHcmF5MSxbSHQuUGFsZXR0ZS5icmFuZFNlY29uZGFyeV06SHQuQ29sb3IuZGFya0dyYXkyLFtIdC5QYWxldHRlLmlucHV0QmFja2dyb3VuZF06SHQuQ29sb3IuZGFya0dyYXkxLFtIdC5QYWxldHRlLmlucHV0Q29sb3JdOkh0LkNvbG9yLndoaXRlLFtIdC5QYWxldHRlLmlucHV0UGxhY2Vob2xkZXJdOkh0LkNvbG9yLmxpZ2h0R3JheTUsW0h0LlBhbGV0dGUuaW5wdXREaXNhYmxlZF06SHQuQ29sb3IubmV1dHJhbEdyYXksW0h0LlBhbGV0dGUuaW5wdXRGb2N1c2VkXTpIdC5Db2xvci5saWdodEdyYXk1LFtIdC5QYWxldHRlLmlucHV0Qm9yZGVyXTpIdC5Db2xvci5uZXV0cmFsR3JheSxbSHQuUGFsZXR0ZS50ZXh0RGVmYXVsdF06SHQuQ29sb3Iud2hpdGUsW0h0LlBhbGV0dGUudGV4dEhlbHBdOkh0LkNvbG9yLmxpZ2h0R3JheTUsW0h0LlBhbGV0dGUudGV4dEluYWN0aXZlXTpIdC5Db2xvci5uZXV0cmFsR3JheX0sYW49W3tsYWJlbDpcIk9wZW5GaW4gRGVmYXVsdCBMaWdodCBhbmQgRGFyayBUaGVtZVwiLHBhbGV0dGVzOntsaWdodDp7Li4ucm4sYnJhbmRQcmltYXJ5OlwiIzBBNzZEM1wiLGJyYW5kU2Vjb25kYXJ5Okh0LkNvbG9yLmRhcmtHcmF5NSxiYWNrZ3JvdW5kUHJpbWFyeTpIdC5Db2xvci5kYXJrR3JheTV9LGRhcms6ey4uLm9uLGJyYW5kUHJpbWFyeTpcIiMwQTc2RDNcIixicmFuZFNlY29uZGFyeTpIdC5Db2xvci5kYXJrR3JheTIsYmFja2dyb3VuZFByaW1hcnk6SHQuQ29sb3IuZGFya0dyYXk1fX19XSxsbj0oZSx0KT0+e2NvbnN0IG49ey4uLmV9LHI9ey4uLnR9O2xldCBvPXQuYmFja2dyb3VuZFByaW1hcnk/WnQodC5iYWNrZ3JvdW5kUHJpbWFyeSwhMCk6e30sYT1lLmJhY2tncm91bmRQcmltYXJ5P1p0KGUuYmFja2dyb3VuZFByaW1hcnkpOnt9O289ey4uLm8sLi4ucn0sYT17Li4uYSwuLi5ufTtyZXR1cm57bGlnaHQ6ey4uLnQsLi4ub30sZGFyazp7Li4uZSwuLi5hfX19LGNuPWFzeW5jIGU9PntsZXQgdCxuPWF3YWl0IGVuKGUpLlRoZW1lLmdldFRoZW1lcygpO24mJjAhPT1uPy5sZW5ndGh8fChuPWFuKTt0cnl7dD1hd2FpdCBlbihlKS5UaGVtZS5nZXRTZWxlY3RlZFNjaGVtZSgpfWNhdGNoKGUpe2NvbnNvbGUud2FybihcIkZhaWxlZCB0byBnZXQgc2VsZWN0ZWQgc2NoZW1lIGZyb20gcGxhdGZvcm1cIixlKX1jb25zdCByPSgoZSx0KT0+ZS5tYXAoKGU9PntsZXQgbixyLG8sYT1oLkRhcms7aWYoXCJwYWxldHRlc1wiaW4gZSl7Y29uc3QgdD1lLnBhbGV0dGVzO2UuZGVmYXVsdCYmKGE9ZS5kZWZhdWx0KSxuPUF0KG9uLHQuZGFyaykscj1BdChybix0LmxpZ2h0KSxvPWxuKHQuZGFyayx0LmxpZ2h0KX1lbHNlIGlmKFwicGFsZXR0ZVwiaW4gZSl7Y29uc3QgdD1lLnBhbGV0dGU7bj1BdChvbix0KSxyPUF0KHJuLHQpLG89bG4odCx0KX1jb25zdCBpPSgwLEh0LmNyZWF0ZVRoZW1lKSh7Li4ubiwuLi5vPy5kYXJrfSksbD0oMCxIdC5jcmVhdGVUaGVtZSkoey4uLnIsLi4ubz8ubGlnaHR9KTtyZXR1cm57bGFiZWw6ZS5sYWJlbCxsb2dvVXJsOmUubG9nb1VybCx0aGVtZTp7ZGFyazppLGxpZ2h0Omx9LGRlZmF1bHRTY2hlbWU6dHx8YX19KSkpKG4sdClbMF07cmV0dXJuIHJ9LHNuPXtuYW1lOlQuQnJvd3Nlck1lbnUsYWx3YXlzT25Ub3A6ITAsYXV0b1Nob3c6ITAsZnJhbWU6ITEscmVzaXphYmxlOiExLGJhY2tncm91bmRDb2xvcjpcIiMyZjMxMzZcIixzbWFsbFdpbmRvdzohMCxzaG93VGFza2Jhckljb246ITEsYmFja2dyb3VuZFRocm90dGxpbmc6ITAsc2F2ZVdpbmRvd1N0YXRlOiExfTtmdW5jdGlvbiB1bihlKXtjb25zdCB0PXsuLi5zbiwuLi5lfTtyZXR1cm4gdC51cmw9ZnVuY3Rpb24oZSl7aWYoIU8pdGhyb3cgbmV3IEVycm9yKFwicmVzb2x2ZUFic29sdXRlUGF0aCBjYW4gb25seSBiZSB1c2VkIGluIGEgd2luZG93XCIpO3JldHVybiBlLnN0YXJ0c1dpdGgoXCJodHRwXCIpP2U6YCR7d2luZG93Lm9yaWdpbn0ke2V9YH0odC51cmw/P1wiXCIpLHR9Y29uc3QgZG49ZnVuY3Rpb24oZSl7Y29uc3QgdD1uZXcgTWFwO3JldHVybntlbWl0Omp0KHQsKHQ9PngmJmZpbi5JbnRlckFwcGxpY2F0aW9uQnVzLnB1Ymxpc2goZSx0KSkpLGFkZExpc3RlbmVyOkV0KHQsKHQ9PngmJmZpbi5JbnRlckFwcGxpY2F0aW9uQnVzLnN1YnNjcmliZSh7dXVpZDpmaW4ubWUudXVpZH0sZSx0KSkpLHJlbW92ZUxpc3RlbmVyOmt0KHQpLG9uY2U6UHQodCl9fShcIndpbmRvdy5tZW51XCIpLGZuPShlLHQpPT5maW4uV2luZG93LndyYXBTeW5jKGUpLnVwZGF0ZU9wdGlvbnMoe29wYWNpdHk6dH0pLHBuPWU9PmRuLmVtaXQoXCJyZXNwb25zZVwiLGUpLGhuPV90KCgoKT0+QigpLmdldENoaWxkV2luZG93cygpKSw1MDApO2NvbnN0IENuPW5ldyBNYXA7YXN5bmMgZnVuY3Rpb24gdm4oZSx0KXtjb25zdCBuPXVuKGUpLHI9e3RvcDpuLnRvcCxsZWZ0Om4ubGVmdCx3aWR0aDpuLmRlZmF1bHRXaWR0aHx8bi53aWR0aCxoZWlnaHQ6bi5kZWZhdWx0SGVpZ2h0fHxuLmhlaWdodH07cmV0dXJuIHQuc2V0KFwicGFyZW50TmFtZVwiLGZpbi5XaW5kb3cuZ2V0Q3VycmVudFN5bmMoKS5pZGVudGl0eS5uYW1lKSx7bmFtZTpuLm5hbWUsYm91bmRzOnIscm91dGU6YCR7bi51cmx9IyR7dC50b1N0cmluZygpfWB9fWFzeW5jIGZ1bmN0aW9uIGduKHtvcHRpb25zOmUscGFyYW1ldGVyczp0fSl7Y29uc3Qgbj11bihlKSx7bmFtZTpyfT1uO2xldCBvPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKGUpe3JldHVybihhd2FpdCBobigpKS5maW5kKCh0PT50LmlkZW50aXR5Lm5hbWU9PT1lKSl9KHIpO2lmKG8pYXdhaXQgYXN5bmMgZnVuY3Rpb24oZSx0LG49ITEpe2NvbnN0e25hbWU6cixib3VuZHM6byxyb3V0ZTphfT1hd2FpdCB2bihlLHQpLGk9e3V1aWQ6ZmluLm1lLmlkZW50aXR5LnV1aWQsbmFtZTpyfTthd2FpdCBQcm9taXNlLmFsbChbZm4oaSwwKSxmaW4uV2luZG93LndyYXBTeW5jKGkpLnNldEJvdW5kcyhvKV0pLG4mJmF3YWl0IGZpbi5XaW5kb3cud3JhcFN5bmMoaSkuY2VudGVyKCksZG4uZW1pdChcInVwZGF0ZVwiLHIsbyxhKSxhd2FpdCBwbih7bmFtZTpyLGRhdGE6XCJjYW5jZWxlZFwifSl9KG4sdHx8bmV3IFVSTFNlYXJjaFBhcmFtcyk7ZWxzZXtjb25zdHtyb3V0ZTpyLGJvdW5kczphfT1hd2FpdCB2bihlLHQpO289YXdhaXQgYXN5bmMgZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9dW4oZSksbz1hd2FpdCBjbihmaW4ubWUuaWRlbnRpdHkpLGE9bz8udGhlbWU7aWYoci5iYWNrZ3JvdW5kQ29sb3I9YT8uZGFyaz8ucGFsZXR0ZT8uYmFja2dyb3VuZDZ8fGE/LmRhcms/LnBhbGV0dGU/LmJhY2tncm91bmQ2fHxyLmJhY2tncm91bmRDb2xvciwhQ24uaGFzKHIubmFtZSkpcmV0dXJuIG5ldyBQcm9taXNlKChlPT57ZG4ub25jZShcInJlYWR5XCIsKGFzeW5jIHQ9PntpZih0Lm5hbWU9PT1yLm5hbWUpe2NvbnN0IG49YXdhaXQgQ24uZ2V0KHIubmFtZSk7bi5vbmNlKFwiYmx1cnJlZFwiLCgoKT0+e2ZuKHQsMCksbi5oaWRlKCkscG4oe25hbWU6ci5uYW1lLGRhdGE6XCJjYW5jZWxlZFwifSl9KSksZm4odCwxKSxlKG4pfX0pKTtjb25zdCBvPShhc3luYygpPT57Y29uc3QgZT1hd2FpdCBmaW4uUGxhdGZvcm0uZ2V0Q3VycmVudFN5bmMoKS5jcmVhdGVXaW5kb3coQ3Qoey4uLnIsb3BhY2l0eTowLHVybDp0fHxyLnVybCxkZWZhdWx0TGVmdDpuPy5sZWZ0LGRlZmF1bHRUb3A6bj8udG9wLGRlZmF1bHRXaWR0aDpuPy53aWR0aCxkZWZhdWx0SGVpZ2h0Om4/LmhlaWdodH0sITApKTtyZXR1cm4gZS5vbmNlKFwiY2xvc2VkXCIsKCgpPT57Q24uZGVsZXRlKHIubmFtZSl9KSksZX0pKCk7Q24uc2V0KHIubmFtZSxvKX0pKTtyZXR1cm4gQ24uZ2V0KHIubmFtZSl9KHsuLi5ufSxyLGEpfXJldHVybiBvfWNvbnN0IG1uPWFzeW5jKHtvcHRpb25zOmUsY29udGVudDp0fSk9Pntjb25zdCBuPW5ldyBVUkxTZWFyY2hQYXJhbXMoey4uLnR9KSxyPXsuLi5lLG5hbWU6YCR7ZS5uYW1lfS0tJHtlLm1vZGFsUGFyZW50SWRlbnRpdHk/Lm5hbWU/P1wiXCJ9YH07cmV0dXJuIGF3YWl0IGduKHtvcHRpb25zOnIscGFyYW1ldGVyczpufSksbmV3IFByb21pc2UoKGU9Pntkbi5vbmNlKFwicmVzcG9uc2VcIiwoYXN5bmMgbj0+e24ubmFtZT09PXIubmFtZSYmKGF3YWl0IGllKHt0eXBlOlwiTW9kYWxcIixhY3Rpb246dC50aXRsZSx2YWx1ZTpuLmRhdGEsZW50aXR5SWQ6Vyxza2lwVmFsdWVIYXNoaW5nOiEwfSksZSh7ZGF0YTpuLmRhdGF9KSl9KSl9KSl9LHduPWFzeW5jKGUsdCxuPSExKT0+e2xldCByO2lmKHQpe2NvbnN0IGU9Rih0KSxvPWF3YWl0IGUuZ2V0Qm91bmRzKCk7KFwibWF4aW1pemVkXCI9PT1hd2FpdCBlLmdldFN0YXRlKCl8fG4pJiYocj1hd2FpdCBhc3luYyBmdW5jdGlvbihlKXtjb25zdCB0PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKGUpe2NvbnN0IHQ9YXdhaXQgZmluLlN5c3RlbS5nZXRNb25pdG9ySW5mbygpLG49W3QucHJpbWFyeU1vbml0b3IsLi4udC5ub25QcmltYXJ5TW9uaXRvcnNdLnJlZHVjZSgoKHQsbik9Pntjb25zdCByPXluKGUsbik7cmV0dXJuIHI+dC5wZXJjZW50YWdlP3twZXJjZW50YWdlOnIsbW9uaXRvcjpufTp0fSkse3BlcmNlbnRhZ2U6MCxtb25pdG9yOnQucHJpbWFyeU1vbml0b3J9KTtyZXR1cm4gbi5tb25pdG9yfShlKTtyZXR1cm4gJCh7aGVpZ2h0OnQubW9uaXRvclJlY3QuYm90dG9tLXQubW9uaXRvclJlY3QudG9wLHdpZHRoOnQubW9uaXRvclJlY3QucmlnaHQtdC5tb25pdG9yUmVjdC5sZWZ0LGxlZnQ6dC5tb25pdG9yUmVjdC5sZWZ0LHRvcDp0Lm1vbml0b3JSZWN0LnRvcCxyaWdodDp0Lm1vbml0b3JSZWN0LnJpZ2h0LGJvdHRvbTp0Lm1vbml0b3JSZWN0LmJvdHRvbX0pfShvKSkscj1yPz8kKG8pfWVsc2V7Y29uc3QgZT0oYXdhaXQgZmluLlN5c3RlbS5nZXRNb25pdG9ySW5mbygpKS5wcmltYXJ5TW9uaXRvci5hdmFpbGFibGVSZWN0O3I9e2xlZnQ6KChvPWUpLmxlZnQrby5yaWdodCkvMix0b3A6KG8udG9wK28uYm90dG9tKS8yfX12YXIgbztjb25zdHtkZWZhdWx0SGVpZ2h0OmEsZGVmYXVsdFdpZHRoOml9PWU7cmV0dXJuKChlLHQpPT57Y29uc3Qgbj10LndpZHRoLzIscj10LmhlaWdodC8yO3JldHVybntsZWZ0Ok1hdGgucm91bmQoZS5sZWZ0LW4pLHRvcDpNYXRoLnJvdW5kKGUudG9wLXIpLHdpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0fX0pKHIse2hlaWdodDphLHdpZHRoOml9KX07ZnVuY3Rpb24geW4oZSx0KXtyZXR1cm4oTWF0aC5taW4odC5tb25pdG9yUmVjdC5ib3R0b20sZS50b3ArZS5oZWlnaHQpLU1hdGgubWF4KHQubW9uaXRvclJlY3QudG9wLGUudG9wKSkqKE1hdGgubWluKHQubW9uaXRvclJlY3QucmlnaHQsZS5sZWZ0K2Uud2lkdGgpLU1hdGgubWF4KHQubW9uaXRvclJlY3QubGVmdCxlLmxlZnQpKS8oZS5oZWlnaHQqZS53aWR0aCl9YXN5bmMgZnVuY3Rpb24gYm4oZSx0LG49ITEpe2lmKG58fCF0fHx0JiZcIm1heGltaXplZFwiPT09YXdhaXQgRih0KS5nZXRTdGF0ZSgpKXJldHVybiB3bihlLHQsITApO2NvbnN0IHI9YXdhaXQgd24oZSx0KTtyZXR1cm4gYXdhaXQoYXN5bmMgZT0+e2NvbnN0IHQ9YXdhaXQgZmluLlN5c3RlbS5nZXRNb25pdG9ySW5mbygpLG49W3QucHJpbWFyeU1vbml0b3IsLi4udC5ub25QcmltYXJ5TW9uaXRvcnNdO2Zvcihjb25zdCB0IG9mIG4paWYoMT09PXluKGUsdCkpcmV0dXJuITE7cmV0dXJuITB9KShyKT8oYXdhaXQgRih0KS5jZW50ZXIoKSx3bihlLHQpKTooY29uc29sZS53YXJuKFwiUmVzcG9uc2UgbW9kYWwgaXNuJ3Qgb2ZmIHNjcmVlbiwgbm90IGNlbnRlcmluZyBwYXJlbnQgd2luZG93XCIpLHIpfWNvbnN0IHhuPWFzeW5jKGUsdCk9Pntjb25zdHt3aW5kb3dPcHRpb25zOm4sY29udGVudDpyfT1hd2FpdChhc3luYyBlPT4oe3RpdGxlOlwiU3dpdGNoIFdvcmtzcGFjZVwiLHdpbmRvd09wdGlvbnM6e3VybDpIK3ZlLlJlc3BvbnNlTW9kYWwsbmFtZTpULkJyb3dzZXJNZW51LGRlZmF1bHRIZWlnaHQ6MTM0LGRlZmF1bHRXaWR0aDo0MjR9LGNvbnRlbnQ6e3RpdGxlOmBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gc3dpdGNoIHRvICR7ZX0/YCxib2R5OlwiQW55IHVuc2F2ZWQgY2hhbmdlcyB3aWxsIGJlIGRpc2NhcmRlZFwiLGFmZmlybWF0aXZlQnV0dG9uOlwiQ29uZmlybVwiLG5lZ2F0aXZlQnV0dG9uOlwiQ2FuY2VsXCJ9fSkpKHQpLG89YXdhaXQgYm4obixlKSxhPXsuLi5uLHRvcDpvLnRvcCxsZWZ0Om8ubGVmdH07cmV0dXJuXCJhZmZpcm1hdGl2ZVwiPT09KGF3YWl0IG1uKHtvcHRpb25zOmEsY29udGVudDpyfSkpLmRhdGF9LE9uPWFzeW5jKGUsdCk9Pntjb25zdHt3aW5kb3dPcHRpb25zOm4sY29udGVudDpyfT1hd2FpdChhc3luYyhlLHQpPT4oe3RpdGxlOlwiRGVsZXRlIFdvcmtzcGFjZVwiLHdpbmRvd09wdGlvbnM6e3VybDpIK3ZlLlJlc3BvbnNlTW9kYWwsbmFtZTpULkJyb3dzZXJNZW51LGRlZmF1bHRIZWlnaHQ6MTQ0LGRlZmF1bHRXaWR0aDozNzIsbW9kYWxQYXJlbnRJZGVudGl0eTplfSxjb250ZW50Ont0aXRsZTpcIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBwZXJtYW5lbnRseSBkZWxldGUgdGhpcyB3b3Jrc3BhY2U/XCIsYm9keTpgJHt0fWAsYWZmaXJtYXRpdmVCdXR0b246XCJDb25maXJtXCIsbmVnYXRpdmVCdXR0b246XCJDYW5jZWxcIn19KSkoZSx0KSxvPWF3YWl0IGJuKG4sbi5tb2RhbFBhcmVudElkZW50aXR5KSxhPXsuLi5uLHRvcDpvLnRvcCxsZWZ0Om8ubGVmdH07cmV0dXJuXCJhZmZpcm1hdGl2ZVwiPT09KGF3YWl0IG1uKHtvcHRpb25zOmEsY29udGVudDpyfSkpLmRhdGF9LExuPWFzeW5jKGUsdCxuKT0+e2NvbnN0IHI9bj92b2lkIDA6ZSx7d2luZG93T3B0aW9uczpvLGNvbnRlbnQ6YX09YXdhaXQoYXN5bmMoZSx0KT0+KHt0aXRsZTpcIlBsYXRmb3JtIFF1aXRcIix3aW5kb3dPcHRpb25zOnt1cmw6SCt2ZS5SZXNwb25zZU1vZGFsLG5hbWU6VC5Ccm93c2VyTWVudSxkZWZhdWx0SGVpZ2h0OjEzNCxkZWZhdWx0V2lkdGg6NDc0LG1vZGFsUGFyZW50SWRlbnRpdHk6dH0sY29udGVudDp7dGl0bGU6YENsb3NlIHRoZSAke1wiUGxhdGZvcm1cIj09PWU/XCJwbGF0Zm9ybVwiOmAke2V9IFBsYXRmb3JtYH0/YCxib2R5OlwiQ2xvc2luZyBhIHBsYXRmb3JtIHdpbGwgY2xvc2UgYW55IHdvcmtzcGFjZXMsIGFwcHMgb3IgYW55IHByb2Nlc3NlcyB0aGF0IGFyZSBydW5uaW5nLlwiLGFmZmlybWF0aXZlQnV0dG9uOlwiQ29uZmlybVwiLG5lZ2F0aXZlQnV0dG9uOlwiQ2FuY2VsXCJ9fSkpKHQsciksaT1hd2FpdCBibihvLGUsbiksbD17Li4ubyx0b3A6aS50b3AsbGVmdDppLmxlZnR9O3JldHVyblwiYWZmaXJtYXRpdmVcIj09PShhd2FpdCBtbih7b3B0aW9uczpsLGNvbnRlbnQ6YX0pKS5kYXRhfSxNbj1hc3luYyBlPT57Y29uc3R7d2luZG93T3B0aW9uczp0LGNvbnRlbnQ6bn09YXdhaXQoYXN5bmMgZT0+KHt0aXRsZTpcIlJlc3RvcmUgQ2hhbmdlc1wiLHdpbmRvd09wdGlvbnM6e3VybDpIK3ZlLlJlc3BvbnNlTW9kYWwsbmFtZTpULkJyb3dzZXJNZW51LGRlZmF1bHRIZWlnaHQ6MTM0LGRlZmF1bHRXaWR0aDo0MjQsbW9kYWxQYXJlbnRJZGVudGl0eTplfSxjb250ZW50Ont0aXRsZTpcIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXN0b3JlIHRvIGxhc3Qgc2F2ZWQgY2hhbmdlcz9cIixib2R5OlwiQW55IHVuc2F2ZWQgY2hhbmdlcyB3aWxsIGJlIGRpc2NhcmRlZFwiLGFmZmlybWF0aXZlQnV0dG9uOlwiQ29uZmlybVwiLG5lZ2F0aXZlQnV0dG9uOlwiQ2FuY2VsXCJ9fSkpKGUpLHI9YXdhaXQgYm4odCx0Lm1vZGFsUGFyZW50SWRlbnRpdHkpLG89ey4uLnQsdG9wOnIudG9wLGxlZnQ6ci5sZWZ0fTtyZXR1cm5cImFmZmlybWF0aXZlXCI9PT0oYXdhaXQgbW4oe29wdGlvbnM6byxjb250ZW50Om59KSkuZGF0YX07YXN5bmMgZnVuY3Rpb24gU24oe29wdGlvbnM6ZSwuLi50fSl7dHJ5e2lmKCEoISFlPy5za2lwUHJvbXB0fHxhd2FpdCB4bihlPy5wcm9tcHRDb250YWluZXJXaW5kb3dJZGVudGl0eSx0LnRpdGxlKSkpcmV0dXJuITE7Y29uc3Qgbj10bigpO2F3YWl0IG4uYXBwbHlTbmFwc2hvdCh0LnNuYXBzaG90LHsuLi5lPy5hcHBseVNuYXBzaG90T3B0aW9ucz8/e30sY2xvc2VFeGlzdGluZ1dpbmRvd3M6ZT8uYXBwbHlTbmFwc2hvdE9wdGlvbnM/LmNsb3NlRXhpc3RpbmdXaW5kb3dzPz8hMH0pLF9uKHQpLGJ0KFwiV29ya3NwYWNlIFN3aXRjaGVkIVwiKS5jYXRjaChjb25zb2xlLndhcm4pfWNhdGNoKGUpe3JldHVybiBjb25zb2xlLmVycm9yKFwiZmFpbGVkIHRvIGFwcGx5IHRoZSBjdXJyZW50IHdvcmtzcGFjZTogXCIsZSksITF9cmV0dXJuITB9ZnVuY3Rpb24gX24oZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGxvY2FsU3RvcmFnZSl0cnl7Y29uc3QgdD1KU09OLnN0cmluZ2lmeShlKTtMdChPdC5DdXJyZW50V29ya3NwYWNlSWQsdCl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihcImZhaWxlZCB0byBzZXQgdGhlIGFjdGl2ZSB3b3Jrc3BhY2U6IFwiLGUpfX1hc3luYyBmdW5jdGlvbiBqbigpe2NvbnN0IGU9dG4oKSx0PWF3YWl0IGUuZ2V0U25hcHNob3QoKTtyZXR1cm57d29ya3NwYWNlSWQ6SGUoKSx0aXRsZTphd2FpdCBIbigpLG1ldGFkYXRhOntBUElWZXJzaW9uOlJ9LHNuYXBzaG90OnR9fWFzeW5jIGZ1bmN0aW9uIEVuKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIGxvY2FsU3RvcmFnZSlyZXR1cm4gam4oKTtjb25zdCBlPU10KE90LkN1cnJlbnRXb3Jrc3BhY2VJZCk7aWYoIWUpcmV0dXJuIGpuKCk7Y29uc3QgdD1KU09OLnBhcnNlKGUpLG49dG4oKSxyPWF3YWl0IG4uZ2V0U25hcHNob3QoKTtyZXR1cm57Li4udCxtZXRhZGF0YTp7QVBJVmVyc2lvbjpSfSxzbmFwc2hvdDpyfX1jb25zdCBQbj1hc3luYygpPT4oYXdhaXQgUGUoVykpLmRpc3BhdGNoKF9lLkdldFNhdmVkV29ya3NwYWNlcyx2b2lkIDApLGtuPWFzeW5jIGU9PmF3YWl0KGFzeW5jIGU9Pihhd2FpdCBQZShXKSkuZGlzcGF0Y2goX2UuR2V0U2F2ZWRXb3Jrc3BhY2UsZSkpKGUud29ya3NwYWNlSWQpPyhhc3luYyBlPT4oYXdhaXQgUGUoVykpLmRpc3BhdGNoKF9lLlVwZGF0ZVNhdmVkV29ya3NwYWNlLGUpKSh7d29ya3NwYWNlSWQ6ZS53b3Jrc3BhY2VJZCx3b3Jrc3BhY2U6ZX0pOihhc3luYyBlPT4oYXdhaXQgUGUoVykpLmRpc3BhdGNoKF9lLkNyZWF0ZVNhdmVkV29ya3NwYWNlLGUpKSh7d29ya3NwYWNlOmV9KTthc3luYyBmdW5jdGlvbiBIbihlPVwiVW50aXRsZWQgV29ya3NwYWNlXCIpe2NvbnN0IHQ9KGF3YWl0IFBuKCkpLm1hcCgoKHt0aXRsZTplfSk9PmUpKTtyZXR1cm4gRmUoZSx0KX1hc3luYyBmdW5jdGlvbiBWbigpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBsb2NhbFN0b3JhZ2UpdHJ5e2NvbnN0IGU9TXQoT3QuTGFzdEZvY3VzZWRCcm93c2VyV2luZG93KTtpZighZSlyZXR1cm47Y29uc3QgdD1KU09OLnBhcnNlKGUpO2lmKGF3YWl0IFgodCkpcmV0dXJuIHR9Y2F0Y2goZSl7dGhyb3cgbmV3IEVycm9yKGBmYWlsZWQgdG8gZ2V0IGxhc3QgZm9jdXNlZCBicm93c2VyIHdpbmRvdzogJHtlfWApfX1hc3luYyBmdW5jdGlvbiBSbihlPWZpbi5tZS5pZGVudGl0eSl7YXdhaXQgcShlKSYmZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGxvY2FsU3RvcmFnZSl0cnl7Y29uc3QgdD1KU09OLnN0cmluZ2lmeShlKTtMdChPdC5MYXN0Rm9jdXNlZEJyb3dzZXJXaW5kb3csdCl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihcImZhaWxlZCB0byBzYXZlIGxhc3QgZm9jdXNlZCBicm93c2VyIHdpbmRvdzogXCIsZSl9fShlKX12YXIgSW49bigxOTgpLFpuPW4ubihJbik7Y29uc3QgQW49ZT0+YCR7ZS5uYW1lfWAsRG49YXN5bmMoKT0+e2NvbnN0IGU9YXdhaXQgV2UoKSx0PW5ldyBTZXQ7cmV0dXJuIGUuZm9yRWFjaCgoZT0+e1suLi5JZShlLmxheW91dC5jb250ZW50KSwuLi4oZS5wYW5lbHN8fFtdKS5tYXAoKGU9PmUudmlld09wdGlvbnMpKV0uZm9yRWFjaCgoZT0+e2NvbnN0IG49QW4oZSk7biYmdC5hZGQobil9KSl9KSksdH07Y29uc3QgQm49Wm4oKSgoKCk9PmFzeW5jIGZ1bmN0aW9uKCl7Y29uc3QgZT1hd2FpdCBEbigpLHQ9TigpLG49KGF3YWl0IHQuZ2V0Q3VycmVudFZpZXdzKCkpLmZpbHRlcigoKHtpZGVudGl0eTp0fSk9PiFlLmhhcyhBbih0KSkpKTtuLmxlbmd0aCYmc2V0VGltZW91dCgoYXN5bmMoKT0+e2NvbnN0IGU9YXdhaXQgRG4oKTtuLmZvckVhY2goKCh7aWRlbnRpdHk6dH0pPT57Y29uc3Qgbj1Bbih0KTtlLmhhcyhuKXx8ZmluLlZpZXcud3JhcFN5bmModCkuZGVzdHJveSgpfSkpfSksMjUwMCl9KCkuY2F0Y2goKGU9PmNvbnNvbGUuZGVidWcoXCJlcnJvciBpbiBzY2hlZHVsZVZpZXdDbGVhbnVwXCIsZSkpKSksNWUzLHtsZWFkaW5nOiExLHRyYWlsaW5nOiEwfSksVG49YXN5bmMgZT0+e2UmJmUubmFtZS5zdGFydHNXaXRoKFQuQnJvd3NlcldpbmRvdykmJkJuKCl9O2NvbnN0ICRuPVpuKCkoKGFzeW5jKCk9Pntjb25zdCBlPWF3YWl0IGZpbi5QbGF0Zm9ybS5nZXRDdXJyZW50U3luYygpLkFwcGxpY2F0aW9uLmdldENoaWxkV2luZG93cygpO2xldCB0LG49ITE7Zm9yKGNvbnN0IHIgb2YgZSlpZihyLmlkZW50aXR5Lm5hbWU9PT1ULkJyb3dzZXJNZW51P3Q9cjphd2FpdCBxKHIuaWRlbnRpdHkpJiYobj0hMCksbilicmVhazshbiYmdCYmdC5jbG9zZSgpfSksMTAwLHtsZWFkaW5nOiExLHRyYWlsaW5nOiEwfSksRm49YXN5bmMoKT0+e0IoKS5vbihcIndpbmRvdy1jbG9zZWRcIiwkbil9O2xldCBXbj17fTtjb25zdCBObj1hc3luYyh7YWN0aW9uSWQ6ZSxwYXlsb2FkOnR9KT0+e2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIFduW2VdKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgYSBjb25maWd1cmVkIGZ1bmN0aW9uIGZvciB0aGUgYWN0aW9uICcke2V9J2ApO3JldHVybiBXbltlXSh0KX07ZnVuY3Rpb24gem4oKXtyZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oT3QuTWFjaGluZU5hbWUpPz9cInVua25vd25cIn1sZXQgVW47YXN5bmMgZnVuY3Rpb24gR24oKXtyZXR1cm4gVW58fChVbj1hd2FpdCBmaW4uU3lzdGVtLmdldE1hY2hpbmVJZCgpKSxVbn1jb25zdCBxbj1lPT57aWYoZS5sYXlvdXQmJkFycmF5LmlzQXJyYXkoZS53b3Jrc3BhY2VQbGF0Zm9ybT8ucGFnZXMpKXtjb25zdCB0PWUud29ya3NwYWNlUGxhdGZvcm0ucGFnZXMuZmluZCgoZT0+ZS5pc0FjdGl2ZSkpO2lmKHQpaWYodC5pc0xvY2tlZCl7Y29uc3Qgbj0oKGUsdCk9Pntjb25zdCBuPUllKHQuY29udGVudCk7cmV0dXJuey4uLlZlKGUsKGU9Pntjb25zdCB0PW4uZmluZCgodD0+dC5faW50ZXJuYWxXb3Jrc3BhY2VEYXRhPy52aWV3SWRlbnRpZmllcj09PWUuX2ludGVybmFsV29ya3NwYWNlRGF0YT8udmlld0lkZW50aWZpZXIpKSxyPXQ/dC5pc0Nsb3NhYmxlOmUuaXNDbG9zYWJsZTtyZXR1cm57Li4uZSxpc0Nsb3NhYmxlOnJ9fSkpLHNldHRpbmdzOnQuc2V0dGluZ3N9fSkoZS5sYXlvdXQsdC5sYXlvdXQpO3QubGF5b3V0PW4sZS5sYXlvdXQ9bn1lbHNlIHQubGF5b3V0PWUubGF5b3V0fXJldHVybiBlfTthc3luYyBmdW5jdGlvbiBZbihlKXtjb25zdCB0PWV8fGF3YWl0IGZpbi5QbGF0Zm9ybS5nZXRDdXJyZW50U3luYygpLmdldFNuYXBzaG90KCk7aWYodC5zbmFwc2hvdERldGFpbHM/Lm1hY2hpbmVJZClyZXR1cm4gdDtjb25zdCBuPXpuKCk7cmV0dXJuey4uLnQsc25hcHNob3REZXRhaWxzOnsuLi50LnNuYXBzaG90RGV0YWlscyxtYWNoaW5lSWQ6YXdhaXQgR24oKSxtYWNoaW5lTmFtZTpufX19ZnVuY3Rpb24gS24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKCgodCxuKT0+e2Uub25jb21wbGV0ZT1lLm9uc3VjY2Vzcz0oKT0+dChlLnJlc3VsdCksZS5vbmFib3J0PWUub25lcnJvcj0oKT0+bihlLmVycm9yKX0pKX1mdW5jdGlvbiBYbihlLHQpe2NvbnN0IG49aW5kZXhlZERCLm9wZW4oZSk7bi5vbnVwZ3JhZGVuZWVkZWQ9KCk9Pm4ucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKHQpO2NvbnN0IHI9S24obik7cmV0dXJuKGUsbik9PnIudGhlbigocj0+bihyLnRyYW5zYWN0aW9uKHQsZSkub2JqZWN0U3RvcmUodCkpKSl9bGV0IFFuO2Z1bmN0aW9uIEpuKCl7cmV0dXJuIFFufHwoUW49WG4oXCJrZXl2YWwtc3RvcmVcIixcImtleXZhbFwiKSksUW59ZnVuY3Rpb24gZXIoZSx0PUpuKCkpe3JldHVybiB0KFwicmVhZG9ubHlcIiwodD0+S24odC5nZXQoZSkpKSl9ZnVuY3Rpb24gdHIoZSx0LG49Sm4oKSl7cmV0dXJuIG4oXCJyZWFkd3JpdGVcIiwobj0+KG4ucHV0KHQsZSksS24obi50cmFuc2FjdGlvbikpKSl9ZnVuY3Rpb24gbnIoZSx0PUpuKCkpe3JldHVybiB0KFwicmVhZHdyaXRlXCIsKHQ9Pih0LmRlbGV0ZShlKSxLbih0LnRyYW5zYWN0aW9uKSkpKX1mdW5jdGlvbiBycihlLHQpe3JldHVybiBlLm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3M9ZnVuY3Rpb24oKXt0aGlzLnJlc3VsdCYmKHQodGhpcy5yZXN1bHQpLHRoaXMucmVzdWx0LmNvbnRpbnVlKCkpfSxLbihlLnRyYW5zYWN0aW9uKX1mdW5jdGlvbiBvcihlPUpuKCkpe3JldHVybiBlKFwicmVhZG9ubHlcIiwoZT0+e2lmKGUuZ2V0QWxsS2V5cylyZXR1cm4gS24oZS5nZXRBbGxLZXlzKCkpO2NvbnN0IHQ9W107cmV0dXJuIHJyKGUsKGU9PnQucHVzaChlLmtleSkpKS50aGVuKCgoKT0+dCkpfSkpfWNvbnN0IGFyPWFzeW5jKGUsdCxuKT0+e2NvbnN0IHI9TXQoT3QuSGFzTW92ZWRTdG9yZSksbz1yP0pTT04ucGFyc2Uocik6e307aWYobyYmb1tuXSlyZXR1cm47b1tuXT0hMCxMdChPdC5IYXNNb3ZlZFN0b3JlLEpTT04uc3RyaW5naWZ5KG8pKTtjb25zdCBhPWF3YWl0IGZ1bmN0aW9uKGU9Sm4oKSl7cmV0dXJuIGUoXCJyZWFkb25seVwiLCh0PT57aWYodC5nZXRBbGwmJnQuZ2V0QWxsS2V5cylyZXR1cm4gUHJvbWlzZS5hbGwoW0tuKHQuZ2V0QWxsS2V5cygpKSxLbih0LmdldEFsbCgpKV0pLnRoZW4oKChbZSx0XSk9PmUubWFwKCgoZSxuKT0+W2UsdFtuXV0pKSkpO2NvbnN0IG49W107cmV0dXJuIGUoXCJyZWFkb25seVwiLChlPT5ycihlLChlPT5uLnB1c2goW2Uua2V5LGUudmFsdWVdKSkpLnRoZW4oKCgpPT5uKSkpKX0pKX0oZSk7YXdhaXQgZnVuY3Rpb24oZSx0PUpuKCkpe3JldHVybiB0KFwicmVhZHdyaXRlXCIsKHQ9PihlLmZvckVhY2goKGU9PnQucHV0KGVbMV0sZVswXSkpKSxLbih0LnRyYW5zYWN0aW9uKSkpKX0oYSx0KX0saXI9KGUsdCk9PlhuKGUrXCItXCIrZmluLm1lLnV1aWQsdCksbHI9KGUsdCk9Pntjb25zdCBuPWlyKGUsdCkscj1YbihlLHQpO3JldHVybiBhcihyLG4sZSksbn0sY3I9KGUsdD1cIlwiKT0+ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHQudG9Mb3dlckNhc2UoKSksc3I9TCYmeCYmbHIoXCJvcGVuZmluLWhvbWUtcGFnZXNcIixcInBhZ2VzXCIpO2FzeW5jIGZ1bmN0aW9uIHVyKGUpe2lmKCFzcil0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gZ2V0IHBhZ2UgLSBJbmRleERCIG5vdCBzdXBwb3J0ZWRcIik7Y29uc3QgdD1hd2FpdCBlcihlLHNyKTtpZih0KXJldHVybiB0LnBhZ2VJZD1lLnRvU3RyaW5nKCksdC50aXRsZT10LnRpdGxlfHx0LnBhZ2VJZCx0fWFzeW5jIGZ1bmN0aW9uIGRyKGUpe2lmKCFzcil0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gZ2V0IHBhZ2UgbGlzdCAtIEluZGV4REIgbm90IHN1cHBvcnRlZFwiKTtjb25zdCB0PWF3YWl0IG9yKHNyKSxuPShhd2FpdCBQcm9taXNlLmFsbCh0Lm1hcCgoZT0+dXIoZS50b1N0cmluZygpKSkpKSkuZmlsdGVyKChlPT4hIWUpKTtyZXR1cm4gZT9uLmZpbHRlcigodD0+Y3IodC50aXRsZSxlKSkpOm59YXN5bmMgZnVuY3Rpb24gZnIoe3BhZ2U6ZX0pe2lmKCFzcil0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gY3JlYXRlIHBhZ2UgLSBJbmRleERCIG5vdCBzdXBwb3J0ZWRcIik7YXdhaXQgdHIoZS5wYWdlSWQsZSxzcil9YXN5bmMgZnVuY3Rpb24gcHIoZSl7aWYoIXNyKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBkZWxldGUgcGFnZSAtIEluZGV4REIgbm90IHN1cHBvcnRlZFwiKTthd2FpdCBucihlLHNyKX1hc3luYyBmdW5jdGlvbiBocih7cGFnZUlkOmUscGFnZTp0fSl7aWYoIXNyKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byB1cGRhdGUgcGFnZSAtIEluZGV4REIgbm90IHN1cHBvcnRlZFwiKTtpZih2b2lkIDA9PT1hd2FpdCB1cihlKSl0aHJvdyBuZXcgRXJyb3IoXCJwYWdlIG5vdCBmb3VuZFwiKTthd2FpdCBmcih7cGFnZTp0fSksZSE9PXQucGFnZUlkJiZhd2FpdCBwcihlKX12YXIgQ3I7IWZ1bmN0aW9uKGUpe2UuTGFiZWw9XCJub3JtYWxcIixlLlNlcGFyYXRvcj1cInNlcGFyYXRvclwiLGUuU3VibWVudT1cInN1Ym1lbnVcIixlLkNoZWNrYm94PVwiY2hlY2tib3hcIn0oQ3J8fChDcj17fSkpO2NvbnN0IHZyPXt0eXBlOkNyLlNlcGFyYXRvcixkYXRhOnZvaWQgMH07Y29uc3QgZ3I9YXN5bmMoZSx0KT0+e2NvbnN0IG49YXdhaXQoYXN5bmMgZT0+KHsuLi5lLGxheW91dERldGFpbHM6e21hY2hpbmVJZDphd2FpdCBHbigpLG1hY2hpbmVOYW1lOnpuKCl9fSkpKHQpO3JldHVybntwYWdlSWQ6SGUoKSx0aXRsZTplLGxheW91dDpuLGlzUmVhZE9ubHk6ITEsaGFzVW5zYXZlZENoYW5nZXM6ITB9fSxtcj1hc3luYyhlPVcpPT57Y29uc3R7d29ya3NwYWNlUGxhdGZvcm06dH09YXdhaXQgRihlKS5nZXRPcHRpb25zKCksbj10Py5uZXdQYWdlVXJsLHI9dD8ubmV3VGFiVXJsO3JldHVybntuZXdQYWdlVXJsOm4sbmV3VGFiVXJsOnJ9fSx3cj1hc3luYyhlPVcpPT57Y29uc3R7bmV3UGFnZVVybDp0fT1hd2FpdCBtcihlKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoXCJUcnlpbmcgdG8gY3JlYXRlIGEgbmV3IHBhZ2Ugd2l0aG91dCBhIG5ld1BhZ2VVcmwgc2V0XCIpO3JldHVybihhc3luYyhlLHQsbj1XKT0+e2xldCByO2F3YWl0IHEobikmJihyPShhd2FpdCBGKG4pLmdldE9wdGlvbnMoKSkubGF5b3V0fHx7c2V0dGluZ3M6e319KTtyZXR1cm57Li4ucixjb250ZW50Olt7dHlwZTpcInN0YWNrXCIsY29udGVudDpbe3R5cGU6XCJjb21wb25lbnRcIixjb21wb25lbnROYW1lOlwidmlld1wiLGNvbXBvbmVudFN0YXRlOnt0aXRsZTplLHVybDp0fX1dfV19fSkoXCJOZXcgVGFiXCIsdCxlKX0seXI9e3R5cGU6Q3IuTGFiZWwsbGFiZWw6XCJDbG9zZSBXaW5kb3dcIixkYXRhOnt0eXBlOnAuQ2xvc2VXaW5kb3d9fSxicj17dHlwZTpDci5MYWJlbCxsYWJlbDpcIk9wZW4gU3RvcmVmcm9udFwiLGRhdGE6e3R5cGU6cC5PcGVuU3RvcmVmcm9udH19LHhyPXt0eXBlOkNyLkxhYmVsLGxhYmVsOlwiUXVpdCBQbGF0Zm9ybVwiLGRhdGE6e3R5cGU6cC5RdWl0fX0sT3I9e3R5cGU6Q3IuTGFiZWwsbGFiZWw6XCJOZXcgV2luZG93XCIsZGF0YTp7dHlwZTpwLk5ld1dpbmRvd319LExyPXt0eXBlOkNyLkxhYmVsLGxhYmVsOlwiU2F2ZSBQYWdlXCIsZGF0YTp7dHlwZTpwLlNhdmVQYWdlfX0sTXI9e3R5cGU6Q3IuTGFiZWwsbGFiZWw6XCJTYXZlIFBhZ2UgQXMuLi5cIixkYXRhOnt0eXBlOnAuU2F2ZVBhZ2VBc319LFNyPXt0eXBlOkNyLkxhYmVsLGxhYmVsOlwiUmVzdG9yZSB0byBMYXN0IFNhdmVkIENoYW5nZXNcIixkYXRhOnt0eXBlOnAuUmVzdG9yZUNoYW5nZXN9fSxfcj17dHlwZTpDci5MYWJlbCxsYWJlbDpcIlNhdmUgV29ya3NwYWNlXCIsZGF0YTp7dHlwZTpwLlNhdmVXb3Jrc3BhY2V9fSxqcj17dHlwZTpDci5MYWJlbCxsYWJlbDpcIlNhdmUgV29ya3NwYWNlIEFzLi4uXCIsZGF0YTp7dHlwZTpwLlNhdmVXb3Jrc3BhY2VBc319LEVyPWFzeW5jIGU9Pntjb25zdCB0PWF3YWl0KGFzeW5jKCk9Pihhd2FpdCBmaW4uU3lzdGVtLmdldEhvc3RTcGVjcygpKS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJ3aW5kb3dzXCIpKSgpO3JldHVybntsYWJlbDpcIlByaW50Li4uXCIsc3VibWVudTpbe3R5cGU6Q3IuTGFiZWwsbGFiZWw6XCJQcmludFwiLGRhdGE6e3R5cGU6cC5QcmludH0sZW5hYmxlZDplfSx7dHlwZTpDci5MYWJlbCxsYWJlbDpcIlByaW50IEFsbFwiLGRhdGE6e3R5cGU6cC5QcmludEFsbH19LC4uLnQ/W3ZyLHt0eXBlOkNyLkxhYmVsLGxhYmVsOlwiUHJpbnQgU2NyZWVuXCIsZGF0YTp7dHlwZTpwLlByaW50U2NyZWVufX1dOltdXSxkYXRhOnZvaWQgMH19LFByPXt0eXBlOkNyLkxhYmVsLGxhYmVsOlwiUmVuYW1lIFdvcmtzcGFjZVwiLGRhdGE6e3R5cGU6cC5SZW5hbWVXb3Jrc3BhY2V9fSxrcj1cIlN3aXRjaCBXb3Jrc3BhY2VcIixIcj1cIkRlbGV0ZSBXb3Jrc3BhY2VcIixWcj1cIkFwcGVhcmFuY2VcIixScj1beXIsdnIsYnIsdnIseHJdLElyPVt2cix5cix2cix4cl0sWnI9KGUsdCxuKT0+dC5tYXAoKHQ9Pntjb25zdCByPXQud29ya3NwYWNlSWQ9PT1lLndvcmtzcGFjZUlkO3JldHVybntsYWJlbDp0LnRpdGxlLHR5cGU6Q3IuQ2hlY2tib3gsZW5hYmxlZDohcixjaGVja2VkOnIsZGF0YTp7dHlwZTpuLHdvcmtzcGFjZUlkOnQud29ya3NwYWNlSWR9fX0pKSxBcj1hc3luYygpPT57Y29uc3QgZT0oYXdhaXQgY24oZmluLm1lLmlkZW50aXR5KSkuZGVmYXVsdFNjaGVtZTtyZXR1cm5be2xhYmVsOlwiTGlnaHRcIix0eXBlOkNyLkNoZWNrYm94LGNoZWNrZWQ6ZT09PWguTGlnaHQsZGF0YTp7dHlwZTpwLkFwcGVhcmFuY2Usc2NoZW1lOmguTGlnaHR9fSx7bGFiZWw6XCJEYXJrXCIsdHlwZTpDci5DaGVja2JveCxjaGVja2VkOmU9PT1oLkRhcmssZGF0YTp7dHlwZTpwLkFwcGVhcmFuY2Usc2NoZW1lOmguRGFya319LHtsYWJlbDpcIlN5bmMgd2l0aCBPUyBzZXR0aW5nXCIsdHlwZTpDci5DaGVja2JveCxjaGVja2VkOmU9PT1oLlN5c3RlbSxkYXRhOnt0eXBlOnAuQXBwZWFyYW5jZSxzY2hlbWU6aC5TeXN0ZW19fV19LERyPWFzeW5jKGUsdD1bXSk9Pntjb25zdCBuPWF3YWl0IFEoKSx7bmV3UGFnZVVybDpyfT1hd2FpdCBtcihlKSxvPWF3YWl0KGFzeW5jIGU9Pntjb25zdCB0PUYoZSkse3dvcmtzcGFjZVBsYXRmb3JtOm59PWF3YWl0IHQuZ2V0T3B0aW9ucygpO3JldHVybiBuPy5kaXNhYmxlTXVsdGlwbGVQYWdlc30pKGUpLGE9YXdhaXQoYXN5bmMgZT0+e2NvbnN0IHQ9RihlKSx7d29ya3NwYWNlUGxhdGZvcm06bn09YXdhaXQgdC5nZXRPcHRpb25zKCk7cmV0dXJuIG4/LmlzTG9ja2VkfSkoZSksaT1bXSxsPXQubGVuZ3RoPjA7dmFyIGM7ciYmKGkucHVzaChPciksb3x8aS5wdXNoKChjPSFhLHt0eXBlOkNyLkxhYmVsLGxhYmVsOlwiTmV3IFBhZ2VcIixkYXRhOnt0eXBlOnAuTmV3UGFnZX0sZW5hYmxlZDpjfSkpKSxpLnB1c2godnIpO2NvbnN0IHM9dG4oKSx1PWF3YWl0IHMuZ2V0Q3VycmVudFdvcmtzcGFjZSgpLGQ9YXdhaXQgcy5TdG9yYWdlLmdldFdvcmtzcGFjZXMoKSxmPWQuZmluZCgoZT0+ZS53b3Jrc3BhY2VJZD09PXUud29ya3NwYWNlSWQpKTtpLnB1c2goey4uLlNyLGVuYWJsZWQ6ISFmfSksaS5wdXNoKF9yLGpyKSxpLnB1c2goey4uLlByLGVuYWJsZWQ6ISFmfSksZC5zb21lKChlPT5lLndvcmtzcGFjZUlkIT09dS53b3Jrc3BhY2VJZCkpP2kucHVzaCh7bGFiZWw6a3Isc3VibWVudTpacih1LGQscC5Td2l0Y2hXb3Jrc3BhY2UpLGRhdGE6dm9pZCAwfSx7bGFiZWw6SHIsc3VibWVudTpacih1LGQscC5EZWxldGVXb3Jrc3BhY2UpLGRhdGE6dm9pZCAwfSk6aS5wdXNoKHtsYWJlbDprcixlbmFibGVkOiExLGRhdGE6dm9pZCAwfSx7bGFiZWw6SHIsZW5hYmxlZDohMSxkYXRhOnZvaWQgMH0pO2NvbnN0IGg9YXdhaXQgcy5UaGVtZS5nZXRUaGVtZXMoKTtyZXR1cm4oaFswXSYmXCJwYWxldHRlc1wiaW4gaFswXXx8IWhbMF18fDA9PT1oLmxlbmd0aCkmJmkucHVzaCh7bGFiZWw6VnIsc3VibWVudTphd2FpdCBBcigpLGRhdGE6dm9pZCAwfSksaS5wdXNoKHZyLExyLE1yLGF3YWl0IEVyKGwpKSxuP1suLi5pLC4uLlJyXTpbLi4uaSwuLi5Jcl19O2xldCBCcj1cIlBsYXRmb3JtXCI7Y29uc3QgVHI9YXN5bmMoKT0+QnI7Y29uc3QgJHI9YXN5bmMgZT0+e2NvbnN0IHQ9dG4oKSxuPWF3YWl0IHQuZ2V0Q3VycmVudFdvcmtzcGFjZSgpLHI9YXdhaXQgdC5TdG9yYWdlLmdldFdvcmtzcGFjZXMoKSxvPW4ud29ya3NwYWNlSWQ7aWYoci5zb21lKChlPT5lLndvcmtzcGFjZUlkPT09bykpKXQuU3RvcmFnZS5zYXZlV29ya3NwYWNlKG4pLHQuc2V0QWN0aXZlV29ya3NwYWNlKG4pLGJ0KFwiV29ya3NwYWNlIFNhdmVkXCIsZS5uYW1lKTtlbHNle3QuQnJvd3Nlci53cmFwU3luYyhlKS5fb3BlblNhdmVNb2RhbCh7bWVudVR5cGU6eS5TQVZFX1dPUktTUEFDRX0pfX0sRnI9ZT0+e3RuKCkuQnJvd3Nlci53cmFwU3luYyhlKS5fb3BlblNhdmVNb2RhbCh7bWVudVR5cGU6eS5TQVZFX1dPUktTUEFDRV9BU30pfSxXcj1hc3luYyhlLHQpPT57Y29uc3Qgbj10bigpLkJyb3dzZXIud3JhcFN5bmMoZSkscj1hd2FpdCB0bigpLlN0b3JhZ2UuZ2V0UGFnZXMoKSxvPShhd2FpdCBuLmdldFBhZ2VzKCkpLmZpbmQoKGU9PnQ/ZS5wYWdlSWQ9PT10OmUuaXNBY3RpdmUpKSxhPXIuc29tZSgoZT0+by5wYWdlSWQ9PT1lLnBhZ2VJZCkpO2lmKGEpdHJ5e2F3YWl0IHRuKCkuU3RvcmFnZS5zYXZlUGFnZSgocz1vLHsuLi5zLGhhc1Vuc2F2ZWRDaGFuZ2VzOnZvaWQgMCxwYXJlbnRJZGVudGl0eTp2b2lkIDAsaXNBY3RpdmU6dm9pZCAwfSkpLGF3YWl0IG4udXBkYXRlUGFnZSh7cGFnZUlkOm8ucGFnZUlkLHBhZ2U6e2hhc1Vuc2F2ZWRDaGFuZ2VzOiExfX0pLGJ0KFwiUGFnZSBzYXZlZFwiLG8ucGFyZW50SWRlbnRpdHkubmFtZSl9Y2F0Y2h7aT1cIlBhZ2UgZmFpbGVkIHRvIHNhdmVcIixsPW8ucGFyZW50SWRlbnRpdHkubmFtZSx5dChodC5FUlJPUixpLGwsYyl9ZWxzZSBuLl9vcGVuU2F2ZU1vZGFsKHtpZDpvLnBhZ2VJZCxtZW51VHlwZTp5LlNBVkVfUEFHRX0pO3ZhciBpLGwsYyxzfSxOcj1hc3luYyhlLHQpPT57Y29uc3Qgbj10bigpLkJyb3dzZXIud3JhcFN5bmMoZSkscj0oYXdhaXQgbi5nZXRQYWdlcygpKS5maW5kKChlPT50P2UucGFnZUlkPT09dDplLmlzQWN0aXZlKSk7bi5fb3BlblNhdmVNb2RhbCh7aWQ6ci5wYWdlSWQsbWVudVR5cGU6eS5TQVZFX1BBR0VfQVN9KX0senI9YXN5bmMgZT0+e2NvbnN0IHQ9ZS5tYXAoKGU9PmZpbi5WaWV3LndyYXBTeW5jKGUpLnByaW50KCkpKTthd2FpdCBQcm9taXNlLmFsbCh0KX0sVXI9YXN5bmMgZT0+e2NvbnN0IHQ9dG4oKS5Ccm93c2VyLndyYXBTeW5jKGUpLG49YXdhaXQoYXN5bmMoZT1XKT0+e2NvbnN0IHQ9YXdhaXQgdG4oKS5Ccm93c2VyLmdldFVuaXF1ZVBhZ2VUaXRsZShcIlVudGl0bGVkIFBhZ2VcIiksbj1hd2FpdCB3cihlKTtyZXR1cm4gZ3IodCxuKX0pKGUpO2F3YWl0IHQuYWRkUGFnZShuKSxhd2FpdCB0LnNldEFjdGl2ZVBhZ2Uobi5wYWdlSWQpfSxHcj1hc3luYyhlLHQpPT57aWYoIWUpcmV0dXJuO2NvbnN0IG49dC5pZGVudGl0eSxyPWF3YWl0IGJlKG4pLG89dG4oKS5Ccm93c2VyLndyYXBTeW5jKG4pLGE9ZmluLldpbmRvdy53cmFwU3luYyhuKTtzd2l0Y2goaWUoe3R5cGU6XCJHbG9iYWxcIixhY3Rpb246ZS50eXBlLGVudGl0eUlkOm59KSxlLnR5cGUpe2Nhc2UgcC5OZXdXaW5kb3c6Y29uc3R7bmV3UGFnZVVybDppfT1hd2FpdCBtcihuKTtpZighaSl0aHJvdyBuZXcgRXJyb3IoXCJUcnlpbmcgdG8gY3JlYXRlIGEgbmV3IGVtcHR5IHdpbmRvdyB3aXRob3V0IGEgbmV3UGFnZVVybCBzZXRcIik7dG4oKS5jcmVhdGVWaWV3KHt0YXJnZXQ6dm9pZCAwLHVybDppfSk7YnJlYWs7Y2FzZSBwLk5ld1BhZ2U6YXdhaXQgVXIobik7YnJlYWs7Y2FzZSBwLkNsb3NlV2luZG93OnIuZGlzcGF0Y2goTGUuQ2xvc2VCcm93c2VyV2luZG93KTticmVhaztjYXNlIHAuU2F2ZVdvcmtzcGFjZTphd2FpdCAkcihuKTticmVhaztjYXNlIHAuU2F2ZVBhZ2U6YXdhaXQgV3Iobik7YnJlYWs7Y2FzZSBwLlNhdmVQYWdlQXM6YXdhaXQgTnIobik7YnJlYWs7Y2FzZSBwLlNhdmVXb3Jrc3BhY2VBczphd2FpdCBGcihuKTticmVhaztjYXNlIHAuUmVuYW1lV29ya3NwYWNlOm8uX29wZW5TYXZlTW9kYWwoe21lbnVUeXBlOnkuUkVOQU1FX1dPUktTUEFDRX0pO2JyZWFrO2Nhc2UgcC5Td2l0Y2hXb3Jrc3BhY2U6YXdhaXQoYXN5bmMoZSx0KT0+e2NvbnN0IG49dG4oKSxyPShhd2FpdCBuLlN0b3JhZ2UuZ2V0V29ya3NwYWNlcygpKS5maW5kKChlPT5lLndvcmtzcGFjZUlkPT09dC53b3Jrc3BhY2VJZCkpO24uYXBwbHlXb3Jrc3BhY2Uocix7c2tpcFByb21wdDohMSxwcm9tcHRDb250YWluZXJXaW5kb3dJZGVudGl0eTplfSl9KShuLGUpO2JyZWFrO2Nhc2UgcC5EZWxldGVXb3Jrc3BhY2U6YXdhaXQoYXN5bmMoZSx0KT0+e2NvbnN0IG49dG4oKSxyPShhd2FpdCBuLlN0b3JhZ2UuZ2V0V29ya3NwYWNlcygpKS5maW5kKChlPT5lLndvcmtzcGFjZUlkPT09dC53b3Jrc3BhY2VJZCkpO3ImJmF3YWl0IE9uKGUsci50aXRsZSkmJihhd2FpdCBuLlN0b3JhZ2UuZGVsZXRlV29ya3NwYWNlKHQud29ya3NwYWNlSWQpLGJ0KFwiV29ya3NwYWNlIERlbGV0ZWQhXCIsZS5uYW1lKSl9KShuLGUpO2JyZWFrO2Nhc2UgcC5BcHBlYXJhbmNlOmF3YWl0IHRuKCkuVGhlbWUuc2V0U2VsZWN0ZWRTY2hlbWUoZS5zY2hlbWUpO2JyZWFrO2Nhc2UgcC5RdWl0OmNvbnN0IGw9YXdhaXQgVHIoKTthd2FpdCBMbihuLGwpJiZmaW4uUGxhdGZvcm0uZ2V0Q3VycmVudFN5bmMoKS5xdWl0KCk7YnJlYWs7Y2FzZSBwLk9wZW5TdG9yZWZyb250Oihhc3luYygpPT57YXdhaXQgUSgpJiZHKFUpfSkoKTticmVhaztjYXNlIHAuUmVzdG9yZUNoYW5nZXM6Y29uc3QgYz1hd2FpdCBhc3luYyBmdW5jdGlvbigpe2NvbnN0IGU9dG4oKSx0PWF3YWl0IGUuZ2V0Q3VycmVudFdvcmtzcGFjZSgpO3JldHVybihhd2FpdCBlLlN0b3JhZ2UuZ2V0V29ya3NwYWNlcygpKS5maW5kKChlPT5lLndvcmtzcGFjZUlkPT09dC53b3Jrc3BhY2VJZCkpfSgpO2F3YWl0IE1uKG4pJiZhd2FpdCBTbih7b3B0aW9uczp7c2tpcFByb21wdDohMH0sLi4uY30pO2JyZWFrO2Nhc2UgcC5QcmludDphd2FpdCB6cih0LnNlbGVjdGVkVmlld3MpO2JyZWFrO2Nhc2UgcC5QcmludEFsbDphd2FpdCBhLnByaW50KHtjb250ZW50Olwidmlld3NcIixpbmNsdWRlU2VsZjohMX0pO2JyZWFrO2Nhc2UgcC5QcmludFNjcmVlbjphd2FpdCBhLnByaW50KHtjb250ZW50Olwic2NyZWVuc2hvdFwifSk7YnJlYWs7Y2FzZSBwLkN1c3RvbTppZihlLmFjdGlvbil7Y29uc3QgdD17Y2FsbGVyVHlwZTp3Lkdsb2JhbENvbnRleHRNZW51LHdpbmRvd0lkZW50aXR5Om4sY3VzdG9tRGF0YTplLmFjdGlvbi5jdXN0b21EYXRhfTt0bigpLl9pbnZva2VDdXN0b21BY3Rpb24oZS5hY3Rpb24uaWQsdCl9ZWxzZSBjb25zb2xlLndhcm4oYEVuY291bnRlcmVkIGEgQ3VzdG9tIGNvbnRleHQgbWVudSBvcHRpb24gd2l0aCBhbiBcImFjdGlvblwiIHByb3BlcnR5IHdpdGggdmFsdWUgXCIke2UuYWN0aW9ufVwiYCl9fSxxcj1hc3luYyhlLHQpPT57Y29uc3Qgbj1hd2FpdCBiZSh0LmlkZW50aXR5KSxyPXRuKCk7c3dpdGNoKGUmJmllKHt0eXBlOlwiUGFnZVRhYlwiLGFjdGlvbjplLnR5cGUsZW50aXR5SWQ6dC5pZGVudGl0eX0pLGU/LnR5cGUpe2Nhc2UgQy5TYXZlOmF3YWl0IFdyKHQuaWRlbnRpdHksdC5wYWdlSWQpO2JyZWFrO2Nhc2UgQy5TYXZlQXM6YXdhaXQgTnIodC5pZGVudGl0eSx0LnBhZ2VJZCk7YnJlYWs7Y2FzZSBDLlJlbmFtZTphd2FpdCByLkJyb3dzZXIud3JhcFN5bmModC5pZGVudGl0eSkuX29wZW5TYXZlTW9kYWwoe21lbnVUeXBlOnkuUkVOQU1FX1BBR0UsaWQ6dC5wYWdlSWR9KTticmVhaztjYXNlIEMuRHVwbGljYXRlOm4uZGlzcGF0Y2goTGUuRHVwbGljYXRlUGFnZSx0LnBhZ2VJZCk7YnJlYWs7Y2FzZSBDLkNsb3NlOm4uZGlzcGF0Y2goTGUuQ2xvc2VQYWdlLHQucGFnZUlkKTticmVhaztjYXNlIEMuQ3VzdG9tOmlmKGUuYWN0aW9uKXtjb25zdCBuPXtjYWxsZXJUeXBlOncuUGFnZVRhYkNvbnRleHRNZW51LHdpbmRvd0lkZW50aXR5OnQuaWRlbnRpdHkscGFnZUlkOnQucGFnZUlkLGN1c3RvbURhdGE6ZS5hY3Rpb24uY3VzdG9tRGF0YX07dG4oKS5faW52b2tlQ3VzdG9tQWN0aW9uKGUuYWN0aW9uLmlkLG4pfWVsc2UgY29uc29sZS53YXJuKGBFbmNvdW50ZXJlZCBhIEN1c3RvbSBjb250ZXh0IG1lbnUgb3B0aW9uIHdpdGggYW4gXCJhY3Rpb25cIiBwcm9wZXJ0eSB3aXRoIHZhbHVlIFwiJHtlLmFjdGlvbn1cImApfX0sWXI9YXN5bmMoZSx0KT0+e2lmKGU/LnR5cGUpe2NvbnN0IG49dC5pZGVudGl0eTtzd2l0Y2goaWUoe3R5cGU6XCJTYXZlQnV0dG9uXCIsYWN0aW9uOmUudHlwZSxlbnRpdHlJZDpufSksZS50eXBlKXtjYXNlIG0uU2F2ZVBhZ2U6YXdhaXQgV3Iobik7YnJlYWs7Y2FzZSBtLlNhdmVXb3Jrc3BhY2U6YXdhaXQgJHIobik7YnJlYWs7Y2FzZSBtLlNhdmVQYWdlQXM6YXdhaXQgTnIobik7YnJlYWs7Y2FzZSBtLlNhdmVXb3Jrc3BhY2VBczphd2FpdCBGcihuKTticmVhaztjYXNlIG0uQ3VzdG9tOmlmKGUuYWN0aW9uKXtjb25zdCBuPXtjYWxsZXJUeXBlOncuU2F2ZUJ1dHRvbkNvbnRleHRNZW51LHdpbmRvd0lkZW50aXR5OnQuaWRlbnRpdHkscGFnZUlkOnQucGFnZUlkLGN1c3RvbURhdGE6ZS5hY3Rpb24uY3VzdG9tRGF0YX07dG4oKS5faW52b2tlQ3VzdG9tQWN0aW9uKGUuYWN0aW9uLmlkLG4pfWVsc2UgY29uc29sZS53YXJuKGBFbmNvdW50ZXJlZCBhIEN1c3RvbSBjb250ZXh0IG1lbnUgb3B0aW9uIHdpdGggYW4gXCJhY3Rpb25cIiBwcm9wZXJ0eSB3aXRoIHZhbHVlIFwiJHtlLmFjdGlvbn1cImApfX19LEtyPWFzeW5jKGUsdCk9Pntjb25zdCBuPXQuc2VsZWN0ZWRWaWV3c1swXSxyPWZpbi5WaWV3LndyYXBTeW5jKG4pLG89YXdhaXQoYXN5bmMgZT0+e2NvbnN0e25ld1RhYlVybDp0fT1hd2FpdCBtcihlKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoXCJUcnlpbmcgdG8gY3JlYXRlIGEgbmV3IHBhZ2Ugd2l0aG91dCBhIG5ld1RhYlVybCBzZXRcIik7cmV0dXJue3VybDp0LHRhcmdldDplLHRpdGxlOlwiTmV3IFRhYlwifX0pKGUpO2F3YWl0IHRuKCkuY3JlYXRlVmlldyhvLGUsci5pZGVudGl0eSl9LFhyPWFzeW5jKGUsdCk9Pntjb25zdCBuPWF3YWl0KGU9PlByb21pc2UuYWxsKGUubWFwKChhc3luYyBlPT5maW4uVmlldy53cmFwU3luYyhlKS5nZXRJbmZvKCkpKSkpKHQpLHtuZXdQYWdlVXJsOnIsbmV3VGFiVXJsOm99PWF3YWl0IG1yKGUpO24uZm9yRWFjaCgoYXN5bmMgZT0+e2UudXJsIT09ciYmZS51cmwhPT1vJiZhd2FpdCBmaW4uU3lzdGVtLm9wZW5VcmxXaXRoQnJvd3NlcihlLnVybCl9KSl9LFFyPShlLHQpPT57dC5mb3JFYWNoKChhc3luYyB0PT57Y29uc3Qgbj1maW4uVmlldy53cmFwU3luYyh0KTthd2FpdChhc3luYyhlLHQpPT57Y29uc3R7dXJsOm59PWF3YWl0IHQuZ2V0SW5mbygpLHI9ey4uLmF3YWl0IHQuZ2V0T3B0aW9ucygpLHVybDpuLHRhcmdldDplLG5hbWU6dm9pZCAwfTthd2FpdCB0bigpLmNyZWF0ZVZpZXcocixlLHQuaWRlbnRpdHkpfSkoZSxuKX0pKX0sSnI9YXN5bmMoZSx0KT0+e2lmKCFlKXJldHVybjtjb25zdCBuPXQuaWRlbnRpdHkscj1maW4uV2luZG93LndyYXBTeW5jKG4pO3N3aXRjaChpZSh7dHlwZTpcIlZpZXdUYWJcIixhY3Rpb246ZS50eXBlLGVudGl0eUlkOm59KSxlLnR5cGUpe2Nhc2Ugdi5CYWNrOmF3YWl0KGFzeW5jIGU9Pntjb25zdCB0PWUubWFwKChlPT5maW4uVmlldy53cmFwU3luYyhlKS5uYXZpZ2F0ZUJhY2soKSkpO2F3YWl0IFByb21pc2UuYWxsKHQpfSkodC5zZWxlY3RlZFZpZXdzKTticmVhaztjYXNlIHYuRm9yd2FyZDphd2FpdChhc3luYyBlPT57Y29uc3QgdD1lLm1hcCgoZT0+ZmluLlZpZXcud3JhcFN5bmMoZSkubmF2aWdhdGVGb3J3YXJkKCkpKTthd2FpdCBQcm9taXNlLmFsbCh0KX0pKHQuc2VsZWN0ZWRWaWV3cyk7YnJlYWs7Y2FzZSB2LlByaW50OmF3YWl0IHpyKHQuc2VsZWN0ZWRWaWV3cyk7YnJlYWs7Y2FzZSB2LlByaW50QWxsOmF3YWl0IHIucHJpbnQoe2NvbnRlbnQ6XCJ2aWV3c1wiLGluY2x1ZGVTZWxmOiExfSk7YnJlYWs7Y2FzZSB2LlByaW50U2NyZWVuOmF3YWl0IHIucHJpbnQoe2NvbnRlbnQ6XCJzY3JlZW5zaG90XCJ9KTticmVhaztjYXNlIHYuQ2xvc2VWaWV3czphd2FpdChhc3luYyhlLHQpPT57Y29uc3Qgbj0oYXdhaXQgdG4oKS5Ccm93c2VyLndyYXBTeW5jKGUpLmdldFBhZ2VzKCkpLmZpbmQoKGU9PmUuaXNBY3RpdmUpKSxyPWF3YWl0IGZpbi5XaW5kb3cud3JhcFN5bmMoZSkuZ2V0Q3VycmVudFZpZXdzKCk7dC5sZW5ndGghPT1yLmxlbmd0aC0obi5wYW5lbHM/P1tdKS5sZW5ndGg/dC5mb3JFYWNoKChhc3luYyBlPT57Y29uc3QgdD1maW4uVmlldy53cmFwU3luYyhlKTthd2FpdCB0LmRlc3Ryb3koKX0pKTooYXdhaXQgYmUoZSkpLmRpc3BhdGNoKExlLkNsb3NlUGFnZSxuPy5wYWdlSWQpfSkobix0LnNlbGVjdGVkVmlld3MpO2JyZWFrO2Nhc2Ugdi5PcGVuV2l0aERlZmF1bHRCcm93c2VyOmF3YWl0IFhyKG4sdC5zZWxlY3RlZFZpZXdzKTticmVhaztjYXNlIHYuUmVsb2FkVmlld3M6dC5zZWxlY3RlZFZpZXdzLmZvckVhY2goKGFzeW5jIGU9Pntjb25zdCB0PWZpbi5WaWV3LndyYXBTeW5jKGUpO2F3YWl0IHQucmVsb2FkKCl9KSk7YnJlYWs7Y2FzZSB2Lk5ld1ZpZXc6YXdhaXQgS3Iobix0KTticmVhaztjYXNlIHYuRHVwbGljYXRlVmlld3M6UXIobix0LnNlbGVjdGVkVmlld3MpO2JyZWFrO2Nhc2Ugdi5BZGRUb0NoYW5uZWw6KGFzeW5jKGUsdCxuKT0+e2NvbnN0IHI9e25ld0NoYW5uZWxJZDp0LHNlbGVjdGVkVmlld3M6bn07KGF3YWl0IGJlKGUpKS5kaXNwYXRjaChMZS5BZGRUb0NoYW5uZWwscil9KShuLGUub3B0aW9uLHQuc2VsZWN0ZWRWaWV3cyk7YnJlYWs7Y2FzZSB2LlJlbW92ZUZyb21DaGFubmVsOihhc3luYyhlLHQpPT57KGF3YWl0IGJlKGUpKS5kaXNwYXRjaChMZS5SZW1vdmVGcm9tQ2hhbm5lbCx0KX0pKG4sdC5zZWxlY3RlZFZpZXdzKTticmVhaztjYXNlIHYuQ3VzdG9tOmlmKGUuYWN0aW9uKXtjb25zdCByPXtjYWxsZXJUeXBlOncuVmlld1RhYkNvbnRleHRNZW51LHdpbmRvd0lkZW50aXR5Om4sc2VsZWN0ZWRWaWV3czp0LnNlbGVjdGVkVmlld3MsY3VzdG9tRGF0YTplLmFjdGlvbi5jdXN0b21EYXRhfTt0bigpLl9pbnZva2VDdXN0b21BY3Rpb24oZS5hY3Rpb24uaWQscil9fX07YXN5bmMgZnVuY3Rpb24gZW8oZSx0KXtpZSh7dHlwZTpcIk1lbnVcIixhY3Rpb246XCJHbG9iYWxcIixlbnRpdHlJZDp0fSk7Y29uc3Qgbj1hd2FpdCBEcihlLmlkZW50aXR5LGUuc2VsZWN0ZWRWaWV3cykscj1hd2FpdCBUcigpO24uZmluZCgoZT0+ZS5kYXRhPy50eXBlPT09cC5RdWl0KSkubGFiZWw9YFF1aXQgJHtyfWA7Y29uc3Qgbz17Li4uZSx0ZW1wbGF0ZTpuLGNhbGxiYWNrOkdyfTthd2FpdCB0aGlzLm9wZW5HbG9iYWxDb250ZXh0TWVudShvLHQpfWNvbnN0IHRvPWFzeW5jKGUsdCk9Pntjb25zdHt4Om4seTpyLGlkZW50aXR5Om8sdGVtcGxhdGU6YSxjYWxsYmFjazppfT1lLHtkYXRhOmx9PWF3YWl0IGZ1bmN0aW9uKGUsdCl7aWYoIXgpdGhyb3cgbmV3IEVycm9yKFwic2hvd0NvbnRleHRNZW51IGNhbiBvbmx5IGJlIHVzZWQgaW4gYW4gT3BlbkZpbiBlbnYuIEF2b2lkIGNhbGxpbmcgdGhpcyBtZXRob2QgZHVyaW5nIHByZS1yZW5kZXJpbmcuXCIpO2lmKCF0JiYhZmluLm1lLmlzV2luZG93KXRocm93IG5ldyBFcnJvcihcInNob3dDb250ZXh0TWVudSBjYW4gb25seSBiZSB1c2VkIGluIGFuIE9wZW5GaW4gd2luZG93LlwiKTtyZXR1cm4odHx8ZmluLldpbmRvdy5nZXRDdXJyZW50U3luYygpKS5zaG93UG9wdXBNZW51KGUpfSh7eDpuLHk6cix0ZW1wbGF0ZTphfSxmaW4uV2luZG93LndyYXBTeW5jKG8pKTtpKGwsZSl9O2FzeW5jIGZ1bmN0aW9uIG5vKGUsdCl7aWUoe3R5cGU6XCJNZW51XCIsYWN0aW9uOlwiVmlld1RhYlwiLGVudGl0eUlkOnR9KTtjb25zdCBuPXsuLi5lLGNhbGxiYWNrOkpyfTthd2FpdCB0aGlzLm9wZW5WaWV3VGFiQ29udGV4dE1lbnUobix0KX1hc3luYyBmdW5jdGlvbiBybyhlLHQpe2llKHt0eXBlOlwiTWVudVwiLGFjdGlvbjpcIlBhZ2VUYWJcIixlbnRpdHlJZDp0fSk7Y29uc3Qgbj1hd2FpdChhc3luYyhlLHQpPT57Y29uc3Qgbj1hd2FpdCB0bigpLlN0b3JhZ2UuZ2V0UGFnZShlKSxyPShhd2FpdCBXZSgpKS5maW5kKCh0PT50LnBhZ2VJZD09PWUpKSx7d29ya3NwYWNlUGxhdGZvcm06b309YXdhaXQgRih0KS5nZXRPcHRpb25zKCksYT0hKG8uaXNMb2NrZWR8fG8ucHJldmVudFBhZ2VDbG9zZXx8ci5jbG9zZUJ1dHRvbj8uZGlzYWJsZWR8fHIuY2xvc2VCdXR0b24/LmhpZGRlbik7cmV0dXJuW3t0eXBlOkNyLkxhYmVsLGxhYmVsOlwiU2F2ZSBQYWdlXCIsZGF0YTp7dHlwZTpDLlNhdmV9fSx7dHlwZTpDci5MYWJlbCxsYWJlbDpcIlNhdmUgUGFnZSBBc1wiLGRhdGE6e3R5cGU6Qy5TYXZlQXN9fSx2cix7dHlwZTpDci5MYWJlbCxsYWJlbDpcIlJlbmFtZSBQYWdlXCIsZGF0YTp7dHlwZTpDLlJlbmFtZX0sZW5hYmxlZDohIW59LHt0eXBlOkNyLkxhYmVsLGxhYmVsOlwiRHVwbGljYXRlIFBhZ2VcIixkYXRhOnt0eXBlOkMuRHVwbGljYXRlfSxlbmFibGVkOiFvLmlzTG9ja2VkfSx2cix7dHlwZTpDci5MYWJlbCxsYWJlbDpcIkNsb3NlIFBhZ2VcIixkYXRhOnt0eXBlOkMuQ2xvc2V9LGVuYWJsZWQ6YX1dfSkoZS5wYWdlSWQsZS5pZGVudGl0eSkscj17Li4uZSx0ZW1wbGF0ZTpuLGNhbGxiYWNrOnFyfTthd2FpdCB0aGlzLm9wZW5QYWdlVGFiQ29udGV4dE1lbnUocix0KX1hc3luYyBmdW5jdGlvbiBvbyhlLHQpe2llKHt0eXBlOlwiVG9vbGJhclwiLGFjdGlvbjpcIlNhdmVCdXR0b25cIixlbnRpdHlJZDp0fSk7Y29uc3Qgbj17Li4uZSx0ZW1wbGF0ZTphd2FpdChhc3luYygpPT5be3R5cGU6Q3IuTGFiZWwsbGFiZWw6XCJTYXZlIFdvcmtzcGFjZVwiLGRhdGE6e3R5cGU6bS5TYXZlV29ya3NwYWNlfX0se3R5cGU6Q3IuTGFiZWwsbGFiZWw6XCJTYXZlIFdvcmtzcGFjZSBBc1wiLGRhdGE6e3R5cGU6bS5TYXZlV29ya3NwYWNlQXN9fSx7dHlwZTpDci5TZXBhcmF0b3IsZGF0YTp2b2lkIDB9LHt0eXBlOkNyLkxhYmVsLGxhYmVsOlwiU2F2ZSBQYWdlXCIsZGF0YTp7dHlwZTptLlNhdmVQYWdlfX0se3R5cGU6Q3IuTGFiZWwsbGFiZWw6XCJTYXZlIFBhZ2UgQXNcIixkYXRhOnt0eXBlOm0uU2F2ZVBhZ2VBc319XSkoKSxjYWxsYmFjazpZcn07YXdhaXQgdGhpcy5vcGVuU2F2ZUJ1dHRvbkNvbnRleHRNZW51KG4sdCl9Y29uc3QgYW89TCYmeCYmaXIoXCJkb2NrLXByb3ZpZGVyLWNvbmZpZ3NcIixcImRvY2stcHJvdmlkZXItY29uZmlnc1wiKTthc3luYyBmdW5jdGlvbiBpbyhlKXtpZighYW8pdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGdldCBEb2NrIHByb3ZpZGVyIGNvbmZpZyAtIEluZGV4REIgbm90IHN1cHBvcnRlZFwiKTtyZXR1cm4gYXdhaXQgZXIoZSxhbykuY2F0Y2goKGU9Pntjb25zb2xlLndhcm4oXCJGYWlsZWQgdG8gcmV0cmlldmUgRG9jayBwcm92aWRlciBjb25maWcgZnJvbSBJbmRleGVkREJcIixlKX0pKX1hc3luYyBmdW5jdGlvbiBsbyhlKXthd2FpdCB0cihlLmlkLGUsYW8pfWNvbnN0IGNvPUwmJngmJmxyKFwib3BlbmZpbi13b3Jrc3BhY2UtcGxhdGZvcm0td29ya3NwYWNlc1wiLFwid29ya3NwYWNlc1wiKTthc3luYyBmdW5jdGlvbiBzbyhlKXtpZighY28pdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGdldCB3b3Jrc3BhY2UgLSBJbmRleERCIG5vdCBzdXBwb3J0ZWRcIik7Y29uc3QgdD1hd2FpdCBlcihlLGNvKTtpZih0KXJldHVybiB0LndvcmtzcGFjZUlkPWUudG9TdHJpbmcoKSx0LnRpdGxlPXQudGl0bGV8fHQud29ya3NwYWNlSWQsdH1hc3luYyBmdW5jdGlvbiB1byhlKXtpZighY28pdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGdldCB3b3Jrc3BhY2VzIC0gSW5kZXhEQiBub3Qgc3VwcG9ydGVkXCIpO2NvbnN0IHQ9YXdhaXQgb3IoY28pLG49KGF3YWl0IFByb21pc2UuYWxsKHQubWFwKChlPT5zbyhlLnRvU3RyaW5nKCkpKSkpKS5maWx0ZXIoKGU9PiEhZSkpO3JldHVybiBlP24uZmlsdGVyKCh0PT5jcih0LnRpdGxlLGUpKSk6bn1hc3luYyBmdW5jdGlvbiBmbyh7d29ya3NwYWNlOmV9KXtpZighY28pdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGNyZWF0ZSB3b3Jrc3BhY2UgLSBJbmRleERCIG5vdCBzdXBwb3J0ZWRcIik7YXdhaXQgdHIoZS53b3Jrc3BhY2VJZCxlLGNvKX1hc3luYyBmdW5jdGlvbiBwbyhlKXtpZighY28pdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGRlbGV0ZSB3b3Jrc3BhY2UgLSBJbmRleERCIG5vdCBzdXBwb3J0ZWRcIik7YXdhaXQgbnIoZSxjbyl9YXN5bmMgZnVuY3Rpb24gaG8oe3dvcmtzcGFjZUlkOmUsd29ya3NwYWNlOnR9KXtpZighY28pdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIHVwZGF0ZSB3b3Jrc3BhY2VzIC0gSW5kZXhEQiBub3Qgc3VwcG9ydGVkXCIpO2lmKCFhd2FpdCBzbyhlKSl0aHJvdyBuZXcgRXJyb3IoXCJ3b3Jrc3BhY2Ugbm90IGZvdW5kXCIpO2F3YWl0IGZvKHt3b3Jrc3BhY2U6dH0pLGUhPT10LndvcmtzcGFjZUlkJiZhd2FpdCBwbyhlKX1hc3luYyBmdW5jdGlvbiBDbyh7YXBwOmUsdGFyZ2V0OnR9KXtjb25zdCBuPWZpbi5QbGF0Zm9ybS5nZXRDdXJyZW50U3luYygpO3N3aXRjaChlLm1hbmlmZXN0VHlwZSl7Y2FzZSBjLlNuYXBzaG90OnJldHVybiBuLmFwcGx5U25hcHNob3QoZS5tYW5pZmVzdCk7Y2FzZSBjLlZpZXc6cmV0dXJuIGFzeW5jIGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1maW4uUGxhdGZvcm0uZ2V0Q3VycmVudFN5bmMoKTtpZihcInZpZXdcIj09PXQuZW50aXR5VHlwZSl7Y29uc3Qgbj1maW4uVmlldy53cmFwU3luYyh0KSxyPWF3YWl0IG4uZ2V0UGFyZW50TGF5b3V0KCk7cmV0dXJuIGF3YWl0IHIucmVwbGFjZVZpZXcodCx7bWFuaWZlc3RVcmw6ZS5tYW5pZmVzdCx1cmw6dm9pZCAwLHRhcmdldDp2b2lkIDB9KSxuLmRlc3Ryb3koKX1yZXR1cm4gbi5jcmVhdGVWaWV3KHtuYW1lOnZvaWQgMCx1cmw6dm9pZCAwLG1hbmlmZXN0VXJsOmUubWFuaWZlc3QsdGFyZ2V0OnZvaWQgMH0pfShlLHQpO2Nhc2UgYy5FeHRlcm5hbDpyZXR1cm4gZmluLlN5c3RlbS5sYXVuY2hFeHRlcm5hbFByb2Nlc3Moe3BhdGg6ZS5tYW5pZmVzdCx1dWlkOmUuYXBwSWR9KTtkZWZhdWx0OnJldHVybiBmaW4uQXBwbGljYXRpb24uc3RhcnRGcm9tTWFuaWZlc3QoZS5tYW5pZmVzdCl9fWFzeW5jIGZ1bmN0aW9uIHZvKGUpe2NvbnN0IHQ9KGF3YWl0IFkoKSkubWFwKChhc3luYyBlPT57Y29uc3QgdD1hd2FpdCBlLmdldE9wdGlvbnMoKTt0LndvcmtzcGFjZVBsYXRmb3JtPy5wYWdlcyYmdC5sYXlvdXQmJmF3YWl0KGFzeW5jIGU9Pihhd2FpdCBiZShlKSkuZGlzcGF0Y2goTGUuVXBkYXRlUGFnZXNXaW5kb3dPcHRpb25zKSkoZS5pZGVudGl0eSl9KSk7cmV0dXJuIGF3YWl0IFByb21pc2UuYWxsKHQpLGU/ZSgpOlluKCl9Y29uc3QgZ289YXN5bmMoZSx0KT0+e2NvbnN0IG49YXdhaXQgdG4oKS5Ccm93c2VyLmdldEFsbEF0dGFjaGVkUGFnZXMoKSxyPW5ldyBTZXQobi5tYXAoKGU9PmUudGl0bGUpKS5maWx0ZXIoKGU9PiEhZSkpKSxvPW5ldyBTZXQobi5tYXAoKGU9PmUucGFnZUlkKSkuZmlsdGVyKChlPT4hIWUpKSk7cmV0dXJuIGUubWFwKChlPT57KChlLHQpPT57ZS5wYWdlSWR8fD1IZSgpLHQuaGFzKGUucGFnZUlkKSYmKGNvbnNvbGUud2FybihcIlBhZ2VJRCBjb2xsaXNpb24gZGV0ZWN0ZWQuIEFsbCBQYWdlIElEcyBzaG91bGQgYmUgdW5pcXVlLiBBIHJhbmRvbSBuZXcgcGFnZUlkIHdpbGwgYmUgZ2VuZXJhdGVkXCIpLGUucGFnZUlkPUhlKCkpLHQuYWRkKGUucGFnZUlkKX0pKGUsbyksZS50aXRsZT1GZShlLnRpdGxlLEFycmF5LmZyb20oci5rZXlzKCkpKSxyLmFkZChlLnRpdGxlKSxlLnBhbmVscz8ucmVkdWNlKCgoZSx0KT0+e2NvbnN0IG49T2JqZWN0LnZhbHVlcyhmKTtpZighbi5pbmNsdWRlcyh0LnBvc2l0aW9uKSl0aHJvdyBuZXcgRXJyb3IoYEVuY291bnRlcmVkIGEgcGFuZWwgd2l0aCB1bnN1cHBvcnRlZCBwb3NpdGlvbiBcIiR7dC5wb3NpdGlvbn1cIi4gU3VwcG9ydGVkIHBvc2l0aW9ucyBhcmU6ICR7bi50b1N0cmluZygpfWApO2lmKDE9PWVbdC5wb3NpdGlvbl0pdGhyb3cgbmV3IEVycm9yKGBGb3VuZCBtb3JlIHRoYW4gMSBwYW5lbCBhdCBwb3NpdGlvbjogJHt0LnBvc2l0aW9ufS4gT25seSAxIHBhbmVsIGF0IGEgZ2l2ZW4gcG9zaXRpb24gaXMgY3VycmVudGx5IHN1cHBvcnRlZC5gKTtyZXR1cm57Li4uZSxbdC5wb3NpdGlvbl06ZVt0LnBvc2l0aW9uXSsxfX0pLHtbZi5MZWZ0XTowLFtmLlJpZ2h0XTowLFtmLlRvcF06MCxbZi5Cb3R0b21dOjB9KTtjb25zdCBuPVwicGFuZWxzXCJpbiBlP2UucGFuZWxzOnQ/LnBhbmVsczt2YXIgYTtyZXR1cm57Li4udCwuLi5lLHBhbmVsczpuJiZaZShuKSxsYXlvdXQ6KGE9ZS5sYXlvdXQsVmUoey4uLmF9LFJlKSl9fSkpfSxtbz1IK3ZlLkJyb3dzZXIsd289e2NvbnRleHRNZW51T3B0aW9uczp7ZW5hYmxlZDohMX0sZXhwZXJpbWVudGFsOntzaG93RmF2aWNvbnM6ITAsZGVmYXVsdEZhdmljb25Vcmw6YCR7SH0vaWNvbnMvZGVmYXVsdEZhdmljb24uc3ZnYH0sdmlld1Zpc2liaWxpdHk6e3Nob3dWaWV3c09uU3BsaXR0ZXJEcmFnOntlbmFibGVkOiEwfSxzaG93Vmlld3NPbldpbmRvd1Jlc2l6ZTp7ZW5hYmxlZDohMH19fSx5bz17YmFja2dyb3VuZFRocm90dGxpbmc6ITAsdXJsOm1vLGNvbnRleHRNZW51OiEwLGNsb3NlT25MYXN0Vmlld1JlbW92ZWQ6ITEscGVybWlzc2lvbnM6e1N5c3RlbTp7b3BlblVybFdpdGhCcm93c2VyOntlbmFibGVkOiEwLHByb3RvY29sczpbXCJtYWlsdG9cIl19fX19LGJvPXtkaW1lbnNpb25zOntib3JkZXJXaWR0aDozLGhlYWRlckhlaWdodDozMH19LHhvPWFzeW5jKGUsdCk9Pntjb25zdCBuPXt1dWlkOnQudXVpZCxuYW1lOnQubmFtZX07YXdhaXQgTG4obixlLnRpdGxlPz9hd2FpdCBUcigpLGUuc2hvdWxkQ2VudGVyT25Nb25pdG9yKSYmZmluLlBsYXRmb3JtLmdldEN1cnJlbnRTeW5jKCkucXVpdCgpfTtsZXQgT289W107Y29uc3QgTG89KCk9Pk9vO2NvbnN0IE1vPXtjb250ZXh0TWVudU9wdGlvbnM6e2VuYWJsZWQ6ITAsdGVtcGxhdGU6W1wic3BlbGxDaGVja1wiLFwic2VwYXJhdG9yXCIsXCJwcmludFwiLFwic2VwYXJhdG9yXCIsXCJjdXRcIixcImNvcHlcIixcInBhc3RlXCIsXCJ1bmRvXCIsXCJyZWRvXCIsXCJzZWxlY3RBbGxcIixcImluc3BlY3RcIixcInJlbG9hZFwiXX19O2Z1bmN0aW9uIFNvKGUsdCl7Y29uc3Qgbj1wZSh7fSxNbyx0LGUpO3JldHVybiBuLmRldGFjaE9uQ2xvc2U9ITAsbn1hc3luYyBmdW5jdGlvbiBfbyhlLHQsbil7Y29uc3Qgcj1lLm1hbmlmZXN0VXJsP2F3YWl0IHQoe21hbmlmZXN0VXJsOmUubWFuaWZlc3RVcmx9LG4pOnZvaWQgMDtpZihyPy5pbnRlcm9wJiZlLmludGVyb3Ape2NvbnN0IHQ9ey4uLmUsLi4ucixpbnRlcm9wOmUuaW50ZXJvcH07cmV0dXJuIGRlbGV0ZSB0Lm1hbmlmZXN0VXJsLHR9cmV0dXJuIGV9Y29uc3Qgam89ZT0+e2NvbnN0IHQ9ZS5uYW1lPT09VC5Ib21lLG49ZS5uYW1lPy5zdGFydHNXaXRoKFQuSG9tZUludGVybmFsKSxyPWUubmFtZT8uc3RhcnRzV2l0aChULkJyb3dzZXJNZW51KTtyZXR1cm4hdCYmIW4mJiFyfTtjb25zdCBFbz0oZSx0KT0+YXN5bmMgbj0+e2NvbnN0IHI9bnVsbCE9PWU7Y2xhc3MgbyBleHRlbmRzIG57Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuaXNXb3Jrc3BhY2VQbGF0Zm9ybT0oKT0+KHtpc1dvcmtzcGFjZVBsYXRmb3JtOiEwLGlzQnJvd3NlckluaXRpYWxpemVkOiEhZSxhbmFseXRpY3M6e2lzU3VwcG9ydGVkOiEwfX0pLHRoaXMuYWRkUGFnZT10aGlzLmF0dGFjaFBhZ2VzVG9XaW5kb3csdGhpcy5kZXRhY2hQYWdlc0Zyb21XaW5kb3c9SmUsdGhpcy5nZXRBbGxBdHRhY2hlZFBhZ2VzPVdlLHRoaXMuZ2V0UGFnZXNGb3JXaW5kb3c9dHQsdGhpcy5nZXRQYWdlRm9yV2luZG93PW50LHRoaXMuc2V0QWN0aXZlUGFnZT1ldCx0aGlzLmxhdW5jaEFwcD1Dbyx0aGlzLnNhdmVQYWdlPUtlLHRoaXMuc2F2ZVdvcmtzcGFjZT1rbix0aGlzLmNyZWF0ZVNhdmVkUGFnZUludGVybmFsPUdlLHRoaXMudXBkYXRlU2F2ZWRQYWdlSW50ZXJuYWw9WWUsdGhpcy5kZWxldGVTYXZlZFBhZ2VJbnRlcm5hbD1xZSx0aGlzLnJlb3JkZXJQYWdlc0ZvcldpbmRvdz1ydCx0aGlzLmdldFVuaXF1ZVBhZ2VUaXRsZT1vdCx0aGlzLnVwZGF0ZVBhZ2VGb3JXaW5kb3c9UWUsdGhpcy5nZXRMYXN0Rm9jdXNlZEJyb3dzZXJXaW5kb3c9Vm4sdGhpcy5nZXRUaGVtZXM9TG8sdGhpcy5pbnZva2VDdXN0b21BY3Rpb25JbnRlcm5hbD1Obix0aGlzLnJlcXVlc3RRdWl0UGxhdGZvcm1EaWFsb2dJbnRlcm5hbD14byx0aGlzLmdldEN1cnJlbnRXb3Jrc3BhY2U9RW4sdGhpcy5zZXRBY3RpdmVXb3Jrc3BhY2U9X24sdGhpcy5vcGVuR2xvYmFsQ29udGV4dE1lbnVJbnRlcm5hbD10aGlzLm9wZW5HbG9iYWxDb250ZXh0TWVudUludGVybmFsLmJpbmQodGhpcyksdGhpcy5vcGVuR2xvYmFsQ29udGV4dE1lbnU9dGhpcy5vcGVuR2xvYmFsQ29udGV4dE1lbnUuYmluZCh0aGlzKSx0aGlzLmdldFNhdmVkUGFnZXM9dGhpcy5nZXRTYXZlZFBhZ2VzLmJpbmQodGhpcyksdGhpcy5nZXRTYXZlZFBhZ2U9dGhpcy5nZXRTYXZlZFBhZ2UuYmluZCh0aGlzKSx0aGlzLmNyZWF0ZVNhdmVkUGFnZT10aGlzLmNyZWF0ZVNhdmVkUGFnZS5iaW5kKHRoaXMpLHRoaXMudXBkYXRlU2F2ZWRQYWdlPXRoaXMudXBkYXRlU2F2ZWRQYWdlLmJpbmQodGhpcyksdGhpcy5kZWxldGVTYXZlZFBhZ2U9dGhpcy5kZWxldGVTYXZlZFBhZ2UuYmluZCh0aGlzKSx0aGlzLmF0dGFjaFBhZ2VzVG9XaW5kb3c9dGhpcy5hdHRhY2hQYWdlc1RvV2luZG93LmJpbmQodGhpcyksdGhpcy5vcGVuVmlld1RhYkNvbnRleHRNZW51SW50ZXJuYWw9dGhpcy5vcGVuVmlld1RhYkNvbnRleHRNZW51SW50ZXJuYWwuYmluZCh0aGlzKSx0aGlzLm9wZW5WaWV3VGFiQ29udGV4dE1lbnU9dGhpcy5vcGVuVmlld1RhYkNvbnRleHRNZW51LmJpbmQodGhpcyksdGhpcy5vcGVuUGFnZVRhYkNvbnRleHRNZW51SW50ZXJuYWw9dGhpcy5vcGVuUGFnZVRhYkNvbnRleHRNZW51SW50ZXJuYWwuYmluZCh0aGlzKSx0aGlzLm9wZW5QYWdlVGFiQ29udGV4dE1lbnU9dGhpcy5vcGVuUGFnZVRhYkNvbnRleHRNZW51LmJpbmQodGhpcyksdGhpcy5nZXRTYXZlZFdvcmtzcGFjZXM9dGhpcy5nZXRTYXZlZFdvcmtzcGFjZXMuYmluZCh0aGlzKSx0aGlzLmdldFNhdmVkV29ya3NwYWNlPXRoaXMuZ2V0U2F2ZWRXb3Jrc3BhY2UuYmluZCh0aGlzKSx0aGlzLmNyZWF0ZVNhdmVkV29ya3NwYWNlPXRoaXMuY3JlYXRlU2F2ZWRXb3Jrc3BhY2UuYmluZCh0aGlzKSx0aGlzLnVwZGF0ZVNhdmVkV29ya3NwYWNlPXRoaXMudXBkYXRlU2F2ZWRXb3Jrc3BhY2UuYmluZCh0aGlzKSx0aGlzLmRlbGV0ZVNhdmVkV29ya3NwYWNlPXRoaXMuZGVsZXRlU2F2ZWRXb3Jrc3BhY2UuYmluZCh0aGlzKSx0aGlzLmdldEN1cnJlbnRXb3Jrc3BhY2U9dGhpcy5nZXRDdXJyZW50V29ya3NwYWNlLmJpbmQodGhpcyksdGhpcy5nZXREb2NrUHJvdmlkZXJDb25maWc9dGhpcy5nZXREb2NrUHJvdmlkZXJDb25maWcuYmluZCh0aGlzKSx0aGlzLnNhdmVEb2NrUHJvdmlkZXJDb25maWc9dGhpcy5zYXZlRG9ja1Byb3ZpZGVyQ29uZmlnLmJpbmQodGhpcyksdGhpcy5hcHBseVdvcmtzcGFjZT10aGlzLmFwcGx5V29ya3NwYWNlLmJpbmQodGhpcyksdGhpcy5zZXRBY3RpdmVXb3Jrc3BhY2U9dGhpcy5zZXRBY3RpdmVXb3Jrc3BhY2UuYmluZCh0aGlzKSx0aGlzLm9wZW5TYXZlQnV0dG9uQ29udGV4dE1lbnU9dGhpcy5vcGVuU2F2ZUJ1dHRvbkNvbnRleHRNZW51LmJpbmQodGhpcyksdGhpcy5vcGVuU2F2ZUJ1dHRvbkNvbnRleHRNZW51SW50ZXJuYWw9dGhpcy5vcGVuU2F2ZUJ1dHRvbkNvbnRleHRNZW51SW50ZXJuYWwuYmluZCh0aGlzKSx0aGlzLmdldFNlbGVjdGVkU2NoZW1lPXRoaXMuZ2V0U2VsZWN0ZWRTY2hlbWUuYmluZCh0aGlzKSx0aGlzLnNldFNlbGVjdGVkU2NoZW1lPXRoaXMuc2V0U2VsZWN0ZWRTY2hlbWUuYmluZCh0aGlzKSx0aGlzLmFuYWx5dGljc0ludGVybmFsPXRoaXMuYW5hbHl0aWNzSW50ZXJuYWwuYmluZCh0aGlzKSx0aGlzLmhhbmRsZUFuYWx5dGljcz10aGlzLmhhbmRsZUFuYWx5dGljcy5iaW5kKHRoaXMpfWFzeW5jIGFwcGx5V29ya3NwYWNlKC4uLmUpe3JldHVybiBTbi5hcHBseSh0aGlzLGUpfWFzeW5jIGdldFNuYXBzaG90KCl7Y29uc3QgZT1yP2F3YWl0IHZvKChhc3luYygpPT5Zbihhd2FpdCBzdXBlci5nZXRTbmFwc2hvdCh2b2lkIDAsZmluLm1lLmlkZW50aXR5KSkpKTphd2FpdCBZbihhd2FpdCBzdXBlci5nZXRTbmFwc2hvdCh2b2lkIDAsZmluLm1lLmlkZW50aXR5KSk7cmV0dXJuey4uLmUsd2luZG93czplLndpbmRvd3MuZmlsdGVyKGpvKS5tYXAocW4pfX1hc3luYyBhcHBseVNuYXBzaG90KHtzbmFwc2hvdDplLG9wdGlvbnM6dH0pe2xldCBuPWU7XCJzdHJpbmdcIj09dHlwZW9mIG4mJihuPWF3YWl0IHN1cGVyLmZldGNoTWFuaWZlc3Qoe21hbmlmZXN0VXJsOm59LGZpbi5tZS5pZGVudGl0eSkpO2NvbnN0IG89ZnVuY3Rpb24oZSl7bGV0IHQ9ITEsbj0hMTtmb3IoY29uc3QgciBvZiBlLndpbmRvd3Mpe2lmKHQmJm4pYnJlYWs7ci53b3Jrc3BhY2VQbGF0Zm9ybT8ucGFnZXM/Lmxlbmd0aD9uPSEwOnIubGF5b3V0JiYodD0hMCl9cmV0dXJuIHQmJm4/XCJtaXhlZFwiOnQ/XCJwbGF0Zm9ybVwiOm4/XCJicm93c2VyXCI6ZS53aW5kb3dzLmxlbmd0aD9cImNsYXNzaWNcIjpudWxsfShuKTtpZihcIm1peGVkXCI9PT1vKXRocm93IG5ldyBFcnJvcihcIlRoaXMgc25hcHNob3QgY2Fubm90IGJlIGFwcGxpZWQgYXMgaXQgY29udGFpbnMgYSBtaXh0dXJlIG9mIGJyb3dzZXIgYW5kIHBsYXRmb3JtIHdpbmRvd3MuXCIpO2lmKHIpXCJwbGF0Zm9ybVwiPT09byYmY29uc29sZS53YXJuKFwiTm8gcGFnZXMgZm91bmQgaW4gc25hcHNob3QsIGNyZWF0aW5nIGEgbmV3IHBhZ2UgZnJvbSB0aGUgbGF5b3V0XCIpO2Vsc2UgaWYoXCJicm93c2VyXCI9PT1vKXRocm93IG5ldyBFcnJvcihcIlRoaXMgc25hcHNob3QgY2Fubm90IGJlIGFwcGxpZWQgYXMgdGhlIHBsYXRmb3JtIGhhcyBiZWVuIGluaXRpYWxpemVkIHdpdGhvdXQgdGhlIGJyb3dzZXIuXCIpO3JldHVybiBzdXBlci5hcHBseVNuYXBzaG90KHtzbmFwc2hvdDpuLG9wdGlvbnM6dH0pfWFzeW5jIGNyZWF0ZVdpbmRvdyh0LG4pe2lmKCFyKXtjb25zdCBlPWF3YWl0IHN1cGVyLmNyZWF0ZVdpbmRvdyh0LG4pO3JldHVybiBpZSh7dHlwZTpcIldpbmRvd1wiLGFjdGlvbjpcIk9wZW5cIixlbnRpdHlJZDplLmlkZW50aXR5fSksZX12YXIgbztvPXthbGxvd2VkOiEwfSx0ZXx8KHRlPSEwLGVlKEouQnJvd3NlcixvKSksKChlPVtdKT0+e2NvbnN0IHQ9ZS5maWx0ZXIoKGU9PmUudHlwZSE9PWcuQ3VzdG9tKSksbj1uZXcgU2V0LHI9W107Zm9yKGNvbnN0IGUgb2YgdCluLmhhcyhlLnR5cGUpJiZyLnB1c2goZS50eXBlKSxuLmFkZChlLnR5cGUpO2lmKHIubGVuZ3RoPjApe2NvbnN0IGU9ci5qb2luKFwiLCBcIik7dGhyb3cgbmV3IEVycm9yKGBFbmNvdW50ZXJlZCBhIGR1cGxpY2F0ZSBcIiR7ZX1cIiB0b29sYmFyIGJ1dHRvbi4gTm8gbW9yZSB0aGFuIG9uZSBpbnN0YW5jZSBvZiBhIGJ1dHRvbiB0eXBlIG1heSBiZSBwcm92aWRlZC5gKX19KSh0LndvcmtzcGFjZVBsYXRmb3JtPy50b29sYmFyT3B0aW9ucz8uYnV0dG9ucyk7bGV0IGE9KGU9Plwid29ya3NwYWNlUGxhdGZvcm1cImluIGU/ZTooKHt3b3Jrc3RhY2tzOmUscGFnZXM6dCwuLi5ufSk9Pih7Li4ubix3b3Jrc3BhY2VQbGF0Zm9ybTp7cGFnZXM6dHx8ZXx8bnVsbH19KSkoZSkpKHQpO2E9YXdhaXQoYXN5bmMoZSx0LG4pPT57bGV0IHI9ZTtpZihyLndvcmtzcGFjZVBsYXRmb3JtPy5wYWdlcz8ubGVuZ3RoKXtjb25zdCBlPWF3YWl0IGdvKHIud29ya3NwYWNlUGxhdGZvcm0ucGFnZXMsdD8uZGVmYXVsdFBhZ2VPcHRpb25zKSxuPWU7bGV0IG89bi5maW5kKChlPT5lLmlzQWN0aXZlKSk7bz8oci5sYXlvdXQ9by5sYXlvdXQsbi5mb3JFYWNoKChlPT57ZS5wYWdlSWQhPT1vLnBhZ2VJZCYmKGUuaXNBY3RpdmU9ITEpfSkpKTooblswXS5pc0FjdGl2ZT0hMCxyLmxheW91dD1uWzBdLmxheW91dCxvPW5bMF0pLGF3YWl0IEFlKG4pLHIud29ya3NwYWNlUGxhdGZvcm0ucGFnZXM9ZX1pZihyLmxheW91dCl7cj1wZSh7fSx3byx0Py5kZWZhdWx0V2luZG93T3B0aW9ucyxyLHlvKSxyLmxheW91dD1wZShyLmxheW91dCxibyksKHIuaWNvbnx8ci50YXNrYmFySWNvbikmJihyLnRhc2tiYXJJY29uR3JvdXB8fD1maW4ubWUuaWRlbnRpdHkudXVpZCksIXIuYmFja2dyb3VuZENvbG9yJiZuJiYoci5iYWNrZ3JvdW5kQ29sb3I9XCJwYWxldHRlXCJpbiBuP24/LnBhbGV0dGU/LmJhY2tncm91bmQyfHxuPy5wYWxldHRlPy5iYWNrZ3JvdW5kUHJpbWFyeTpuPy5wYWxldHRlcy5kYXJrLmJhY2tncm91bmQyfHxuPy5wYWxldHRlcy5kYXJrLmJhY2tncm91bmRQcmltYXJ5KTtjb25zdCBlPVwid29ya3NwYWNlUGxhdGZvcm1cImluIHImJnIud29ya3NwYWNlUGxhdGZvcm0/Lm5ld1RhYlVybDtpZihlJiYoci5sYXlvdXQuc2V0dGluZ3N8fD17fSxyLmxheW91dC5zZXR0aW5ncy5uZXdUYWJCdXR0b249e3VybDplfSkscj1DdChyLCEwKSwhci53b3Jrc3BhY2VQbGF0Zm9ybT8ucGFnZXM/Lmxlbmd0aCl7Y29uc3QgZT1hd2FpdCBvdChcIlVudGl0bGVkIFBhZ2VcIiksbj17Li4uYXdhaXQgZ3IoZSxyLmxheW91dCksaXNBY3RpdmU6ITB9O3Iud29ya3NwYWNlUGxhdGZvcm18fD17fSxyLndvcmtzcGFjZVBsYXRmb3JtLnBhZ2VzPWF3YWl0IGdvKFtuXSx0Py5kZWZhdWx0UGFnZU9wdGlvbnMpfX1yZXR1cm4gci5jb3JuZXJSb3VuZGluZyYmZGVsZXRlIHIuY29ybmVyUm91bmRpbmcsci5uYW1lfHxyLmxheW91dD9yLmNvbnRleHRNZW51T3B0aW9ucz8udGVtcGxhdGU/Lmxlbmd0aD4wP3IuY29udGV4dE1lbnVPcHRpb25zLnRlbXBsYXRlPXIuY29udGV4dE1lbnVPcHRpb25zLnRlbXBsYXRlLmZpbHRlcigoZT0+XCJwcmludFwiIT09ZSkpOnIuY29udGV4dE1lbnVPcHRpb25zPXt0ZW1wbGF0ZTpbXSxlbmFibGVkOiExfTpyLm5hbWU9YCR7VC5DbGFzc2ljV2luZG93fS0ke0hlKCl9YCxyfSkoYSxlLHRoaXMuZ2V0VGhlbWVzKClbMF0pLGE9YXdhaXQoYXN5bmMgZT0+e2NvbnN0IHQ9YXdhaXQgZmluLlN5c3RlbS5nZXRNb25pdG9ySW5mbygpLG49dC5wcmltYXJ5TW9uaXRvci5hdmFpbGFibGVSZWN0LmJvdHRvbS10LnByaW1hcnlNb25pdG9yLmF2YWlsYWJsZVJlY3QudG9wLHI9dC5wcmltYXJ5TW9uaXRvci5hdmFpbGFibGVSZWN0LnJpZ2h0LXQucHJpbWFyeU1vbml0b3IuYXZhaWxhYmxlUmVjdC5sZWZ0O3JldHVybiBlLmRlZmF1bHRIZWlnaHQ9ZS5kZWZhdWx0SGVpZ2h0fHw4MDAsZS5kZWZhdWx0V2lkdGg9ZS5kZWZhdWx0V2lkdGh8fDgwMCxuPGUuZGVmYXVsdEhlaWdodCYmKGUuZGVmYXVsdEhlaWdodD1uKSxyPGUuZGVmYXVsdFdpZHRoJiYoZS5kZWZhdWx0V2lkdGg9ciksZX0pKGEpO2NvbnN0IGk9YXdhaXQoZT0+YXN5bmModCxuKT0+e2xldCByPSExO2NvbnN0IG89YXdhaXQgZSh0LG4pO3JldHVybiB0Py53b3Jrc3BhY2VQbGF0Zm9ybT8uX2ludGVybmFsRGVmZXJTaG93T3B0aW9ucz8uZGVmZXJTaG93RW5hYmxlZD8oYXdhaXQgby5hZGRMaXN0ZW5lcihcInNob3ctcmVxdWVzdGVkXCIsKGFzeW5jKCk9PntpZihyKXJldHVybjtjb25zdCBlPWF3YWl0IG8uZ2V0T3B0aW9ucygpO2F3YWl0IG8udXBkYXRlT3B0aW9ucyh7d29ya3NwYWNlUGxhdGZvcm06ey4uLmUud29ya3NwYWNlUGxhdGZvcm0sX2ludGVybmFsRGVmZXJTaG93T3B0aW9uczp7Li4uZS53b3Jrc3BhY2VQbGF0Zm9ybS5faW50ZXJuYWxEZWZlclNob3dPcHRpb25zLGF1dG9TaG93OiEwfX19KSxyPSEwfSkpLG8pOm99KSgoKGUsdCk9PnN1cGVyLmNyZWF0ZVdpbmRvdyhlLHQpKSkoYSxuKTtyZXR1cm4gaWUoe3R5cGU6XCJXaW5kb3dcIixhY3Rpb246XCJPcGVuXCIsZW50aXR5SWQ6aS5pZGVudGl0eX0pLGl9YXN5bmMgY3JlYXRlVmlldyh0LG4pe3JldHVybiB0Lm9wdHM9U28odC5vcHRzLGU/LmRlZmF1bHRWaWV3T3B0aW9ucyksdC5vcHRzPWF3YWl0IF9vKHQub3B0cyx0aGlzLmZldGNoTWFuaWZlc3Qsbiksc3VwZXIuY3JlYXRlVmlldyh0LG4pfWFzeW5jIHJlcGxhY2VWaWV3KHQsbil7cmV0dXJuIHQub3B0cy5uZXdWaWV3PWF3YWl0IFNvKHQub3B0cy5uZXdWaWV3LGU/LmRlZmF1bHRWaWV3T3B0aW9ucyksdC5vcHRzLm5ld1ZpZXc9YXdhaXQgX28odC5vcHRzLm5ld1ZpZXcsdGhpcy5mZXRjaE1hbmlmZXN0LG4pLHN1cGVyLnJlcGxhY2VWaWV3KHQsbil9YXN5bmMgcmVwbGFjZUxheW91dChlLHQpe3JldHVybiBkZWxldGUgZS5vcHRzLmxheW91dD8uZGltZW5zaW9ucyxzdXBlci5yZXBsYWNlTGF5b3V0KGUsdCl9YXN5bmMgZ2V0U2F2ZWRQYWdlKC4uLmUpe3JldHVybiB1ci5hcHBseSh0aGlzLGUpfWFzeW5jIGdldFNhdmVkUGFnZXMoLi4uZSl7cmV0dXJuIGRyLmFwcGx5KHRoaXMsZSl9YXN5bmMgY3JlYXRlU2F2ZWRQYWdlKC4uLmUpe3JldHVybiBmci5hcHBseSh0aGlzLGUpfWFzeW5jIGRlbGV0ZVNhdmVkUGFnZSguLi5lKXtyZXR1cm4gcHIuYXBwbHkodGhpcyxlKX1hc3luYyB1cGRhdGVTYXZlZFBhZ2UoLi4uZSl7cmV0dXJuIGhyLmFwcGx5KHRoaXMsZSl9YXN5bmMgZ2V0U2F2ZWRXb3Jrc3BhY2UoLi4uZSl7cmV0dXJuIHNvLmFwcGx5KHRoaXMsZSl9YXN5bmMgZ2V0U2F2ZWRXb3Jrc3BhY2VzKC4uLmUpe3JldHVybiB1by5hcHBseSh0aGlzLGUpfWFzeW5jIGNyZWF0ZVNhdmVkV29ya3NwYWNlKC4uLmUpe3JldHVybiBmby5hcHBseSh0aGlzLGUpfWFzeW5jIGRlbGV0ZVNhdmVkV29ya3NwYWNlKC4uLmUpe3JldHVybiBwby5hcHBseSh0aGlzLGUpfWFzeW5jIHVwZGF0ZVNhdmVkV29ya3NwYWNlKC4uLmUpe3JldHVybiBoby5hcHBseSh0aGlzLGUpfWFzeW5jIGdldERvY2tQcm92aWRlckNvbmZpZyguLi5lKXtyZXR1cm4gaW8uYXBwbHkodGhpcyxlKX1hc3luYyBzYXZlRG9ja1Byb3ZpZGVyQ29uZmlnKC4uLmUpe3JldHVybiBsby5hcHBseSh0aGlzLGUpfWFzeW5jIGF0dGFjaFBhZ2VzVG9XaW5kb3codCl7Y29uc3Qgbj1hd2FpdCBnbyh0LnBhZ2VzLGU/LmRlZmF1bHRQYWdlT3B0aW9ucyk7YXdhaXQgQWUobiksYXdhaXQgWGUoey4uLnQscGFnZXM6bn0pfWFzeW5jIG9wZW5HbG9iYWxDb250ZXh0TWVudUludGVybmFsKC4uLmUpe3JldHVybiBlby5hcHBseSh0aGlzLGUpfWFzeW5jIG9wZW5HbG9iYWxDb250ZXh0TWVudSguLi5lKXtyZXR1cm4gdG8uYXBwbHkodGhpcyxlKX1hc3luYyBvcGVuVmlld1RhYkNvbnRleHRNZW51SW50ZXJuYWwoLi4uZSl7cmV0dXJuIG5vLmFwcGx5KHRoaXMsZSl9YXN5bmMgb3BlblZpZXdUYWJDb250ZXh0TWVudSguLi5lKXtyZXR1cm4gdG8uYXBwbHkodGhpcyxlKX1hc3luYyBvcGVuUGFnZVRhYkNvbnRleHRNZW51SW50ZXJuYWwoLi4uZSl7cmV0dXJuIHJvLmFwcGx5KHRoaXMsZSl9YXN5bmMgb3BlblBhZ2VUYWJDb250ZXh0TWVudSguLi5lKXtyZXR1cm4gdG8uYXBwbHkodGhpcyxlKX1hc3luYyBvcGVuU2F2ZUJ1dHRvbkNvbnRleHRNZW51KC4uLmUpe3JldHVybiB0by5hcHBseSh0aGlzLGUpfWFzeW5jIG9wZW5TYXZlQnV0dG9uQ29udGV4dE1lbnVJbnRlcm5hbCguLi5lKXtyZXR1cm4gb28uYXBwbHkodGhpcyxlKX1nZXRTZWxlY3RlZFNjaGVtZSguLi5lKXtyZXR1cm4gSnQuYXBwbHkodGhpcyxlKX1hc3luYyBzZXRTZWxlY3RlZFNjaGVtZSguLi5lKXtyZXR1cm4gUXQuYXBwbHkodGhpcyxlKX1hc3luYyBhbmFseXRpY3NJbnRlcm5hbCguLi5lKXtyZXR1cm4gZnQuYXBwbHkodGhpcyxlKX1hc3luYyBoYW5kbGVBbmFseXRpY3MoLi4uZSl7fX1yZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3Qobyk6bmV3IG99O2FzeW5jIGZ1bmN0aW9uIFBvKCl7IWZ1bmN0aW9uKCl7Y29uc3QgZT1CKCk7ZS5hZGRMaXN0ZW5lcihcIndpbmRvdy1vcHRpb25zLWNoYW5nZWRcIixCbiksZS5hZGRMaXN0ZW5lcihcIndpbmRvdy1jbG9zZWRcIixUbiksZS5hZGRMaXN0ZW5lcihcIndpbmRvdy1jcmVhdGVkXCIsVG4pLGZpbi5tZS5vbihcInZpZXctYXR0YWNoZWRcIixCbiksZmluLkludGVyQXBwbGljYXRpb25CdXMuc3Vic2NyaWJlKHt1dWlkOmZpbi5tZS5pZGVudGl0eS51dWlkfSxcImJyb3dzZXItd2luZG93LXJlYWR5XCIsVG4pfSgpLEZuKCksYXN5bmMgZnVuY3Rpb24oKXtjb25zdCBlPWZpbi5BcHBsaWNhdGlvbi5nZXRDdXJyZW50U3luYygpO2F3YWl0IGUuYWRkTGlzdGVuZXIoXCJ3aW5kb3ctZm9jdXNlZFwiLFJuKX0oKTtfbihhd2FpdCBqbigpKX1sZXQga287ZnVuY3Rpb24gSG8oe292ZXJyaWRlQ2FsbGJhY2s6ZSxpbnRlcm9wT3ZlcnJpZGU6dCxicm93c2VyOm4sYW5hbHl0aWNzOnIsaW50ZWdyYXRpb25zOm89W119KXtpZigheCl0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgYmUgdXNlZCBvdXRzaWRlIGFuIE9wZW5GaW4gZW52LlwiKTtyZXR1cm4ga298fChrbz1uZXcgUHJvbWlzZSgoYXN5bmMgYT0+e3ZhciBpLGw7ZmluLlBsYXRmb3JtLmdldEN1cnJlbnRTeW5jKCkub25jZShcInBsYXRmb3JtLWFwaS1yZWFkeVwiLCgoKT0+UG8oKSkpLG4/LnRpdGxlJiYoaT1uLnRpdGxlLEJyPWkpLHB0KHIpLGF3YWl0IGZpbi5QbGF0Zm9ybS5pbml0KHtvdmVycmlkZUNhbGxiYWNrOkVvKG4sZXx8bj8ub3ZlcnJpZGVDYWxsYmFjayksaW50ZXJvcE92ZXJyaWRlOnR8fG4/LmludGVyb3BPdmVycmlkZX0pLGw9e2FsbG93ZWQ6ITB9LGVlKEouUGxhdGZvcm0sbCksYXdhaXQgUHJvbWlzZS5hbGwoby5tYXAoKGFzeW5jIGU9PnsoKGUsdCk9PntlZShgJHtKLk1pY3JvZmxvd306JHtlfWAsdCl9KShlLndvcmtmbG93SW50ZWdyYXRpb25OYW1lLHthbGxvd2VkOiEwLGFwaVZlcnNpb246Vn0pLGF3YWl0IGUuX2luaXRpYWxpemVXb3JrZmxvd3MoKX0pKSksYSgpfSkpKSxrb31jb25zdCBWbz1hc3luYyh7dGhlbWU6ZSxjdXN0b21BY3Rpb25zOnQsLi4ubn0pPT57Y29uc3Qgcj1WLnNwbGl0KFwiLlwiKS5tYXAoKGU9PnBhcnNlSW50KGUpKSksbz1hd2FpdChhc3luYyBlPT5uZXcgUHJvbWlzZSgoYXN5bmMgdD0+eyhhd2FpdCBzZSgpKS5kaXNhYmxlUnVudGltZVZhbGlkYXRpb24mJnQoITApO2NvbnN0IG49KGF3YWl0IGZpbi5TeXN0ZW0uZ2V0VmVyc2lvbigpKS5zcGxpdChcIi5cIikubWFwKChlPT5wYXJzZUludChlKSkpO3QoZS5ldmVyeSgoKHQscik9PiEocjwzKXx8bltyXT09PWVbcl0pKSl9KSkpKHIpO3ZhciBhO2lmKGUmJighZnVuY3Rpb24oZSl7Y29uc3QgdD1lPT57aWYoIWUuaW5jbHVkZXMoXCIjXCIpJiYhZS5pbmNsdWRlcyhcInJnYlwiKSYmIWUuaW5jbHVkZXMoXCJoc2xcIikpdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZCBwcmltYXJ5IGNvbG9yIGlzIG5vdCB0aGUgcmlnaHQgZm9ybWF0LlwiKX07ZS5mb3JFYWNoKChlPT57XCJwYWxldHRlXCJpbiBlJiZ0KGUucGFsZXR0ZS5iYWNrZ3JvdW5kUHJpbWFyeSksXCJwYWxldHRlc1wiaW4gZSYmKHQoZS5wYWxldHRlcy5kYXJrLmJhY2tncm91bmRQcmltYXJ5KSx0KGUucGFsZXR0ZXMubGlnaHQuYmFja2dyb3VuZFByaW1hcnkpKX0pKSxPbz1lfShlKSxhPXthbGxvd2VkOiEwfSxlZShKLlRoZW1pbmcsYSkpLHQmJihXbj10KSxvKXJldHVybiBIbyhuKTt0aHJvdyBuZXcgRXJyb3IoYFJ1bnRpbWUgdmVyc2lvbiBpcyBub3Qgc3VwcG9ydGVkLiAgJHtyWzBdfS4ke3JbMV19LiR7clsyXX0uKiBpcyByZXF1aXJlZGApfX0pKCksbW9kdWxlLmV4cG9ydHM9cn0pKCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCIvKiEgRm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSBpbmRleC5qcy5MSUNFTlNFLnR4dCAqL1xuKCgpPT57dmFyIGU9ezMwNDooZSx0LG4pPT57dmFyIHI9ezg1OTQ6KGUsdCxuKT0+e24uZCh0LHtaOigpPT5vfSk7dmFyIHI9L14oKGNoaWxkcmVufGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MfGtleXxyZWZ8YXV0b0ZvY3VzfGRlZmF1bHRWYWx1ZXxkZWZhdWx0Q2hlY2tlZHxpbm5lckhUTUx8c3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nfHN1cHByZXNzSHlkcmF0aW9uV2FybmluZ3x2YWx1ZUxpbmt8YWNjZXB0fGFjY2VwdENoYXJzZXR8YWNjZXNzS2V5fGFjdGlvbnxhbGxvd3xhbGxvd1VzZXJNZWRpYXxhbGxvd1BheW1lbnRSZXF1ZXN0fGFsbG93RnVsbFNjcmVlbnxhbGxvd1RyYW5zcGFyZW5jeXxhbHR8YXN5bmN8YXV0b0NvbXBsZXRlfGF1dG9QbGF5fGNhcHR1cmV8Y2VsbFBhZGRpbmd8Y2VsbFNwYWNpbmd8Y2hhbGxlbmdlfGNoYXJTZXR8Y2hlY2tlZHxjaXRlfGNsYXNzSUR8Y2xhc3NOYW1lfGNvbHN8Y29sU3Bhbnxjb250ZW50fGNvbnRlbnRFZGl0YWJsZXxjb250ZXh0TWVudXxjb250cm9sc3xjb250cm9sc0xpc3R8Y29vcmRzfGNyb3NzT3JpZ2lufGRhdGF8ZGF0ZVRpbWV8ZGVjb2Rpbmd8ZGVmYXVsdHxkZWZlcnxkaXJ8ZGlzYWJsZWR8ZGlzYWJsZVBpY3R1cmVJblBpY3R1cmV8ZG93bmxvYWR8ZHJhZ2dhYmxlfGVuY1R5cGV8Zm9ybXxmb3JtQWN0aW9ufGZvcm1FbmNUeXBlfGZvcm1NZXRob2R8Zm9ybU5vVmFsaWRhdGV8Zm9ybVRhcmdldHxmcmFtZUJvcmRlcnxoZWFkZXJzfGhlaWdodHxoaWRkZW58aGlnaHxocmVmfGhyZWZMYW5nfGh0bWxGb3J8aHR0cEVxdWl2fGlkfGlucHV0TW9kZXxpbnRlZ3JpdHl8aXN8a2V5UGFyYW1zfGtleVR5cGV8a2luZHxsYWJlbHxsYW5nfGxpc3R8bG9hZGluZ3xsb29wfGxvd3xtYXJnaW5IZWlnaHR8bWFyZ2luV2lkdGh8bWF4fG1heExlbmd0aHxtZWRpYXxtZWRpYUdyb3VwfG1ldGhvZHxtaW58bWluTGVuZ3RofG11bHRpcGxlfG11dGVkfG5hbWV8bm9uY2V8bm9WYWxpZGF0ZXxvcGVufG9wdGltdW18cGF0dGVybnxwbGFjZWhvbGRlcnxwbGF5c0lubGluZXxwb3N0ZXJ8cHJlbG9hZHxwcm9maWxlfHJhZGlvR3JvdXB8cmVhZE9ubHl8cmVmZXJyZXJQb2xpY3l8cmVsfHJlcXVpcmVkfHJldmVyc2VkfHJvbGV8cm93c3xyb3dTcGFufHNhbmRib3h8c2NvcGV8c2NvcGVkfHNjcm9sbGluZ3xzZWFtbGVzc3xzZWxlY3RlZHxzaGFwZXxzaXplfHNpemVzfHNsb3R8c3BhbnxzcGVsbENoZWNrfHNyY3xzcmNEb2N8c3JjTGFuZ3xzcmNTZXR8c3RhcnR8c3RlcHxzdHlsZXxzdW1tYXJ5fHRhYkluZGV4fHRhcmdldHx0aXRsZXx0eXBlfHVzZU1hcHx2YWx1ZXx3aWR0aHx3bW9kZXx3cmFwfGFib3V0fGRhdGF0eXBlfGlubGlzdHxwcmVmaXh8cHJvcGVydHl8cmVzb3VyY2V8dHlwZW9mfHZvY2FifGF1dG9DYXBpdGFsaXplfGF1dG9Db3JyZWN0fGF1dG9TYXZlfGNvbG9yfGluZXJ0fGl0ZW1Qcm9wfGl0ZW1TY29wZXxpdGVtVHlwZXxpdGVtSUR8aXRlbVJlZnxvbnxyZXN1bHRzfHNlY3VyaXR5fHVuc2VsZWN0YWJsZXxhY2NlbnRIZWlnaHR8YWNjdW11bGF0ZXxhZGRpdGl2ZXxhbGlnbm1lbnRCYXNlbGluZXxhbGxvd1Jlb3JkZXJ8YWxwaGFiZXRpY3xhbXBsaXR1ZGV8YXJhYmljRm9ybXxhc2NlbnR8YXR0cmlidXRlTmFtZXxhdHRyaWJ1dGVUeXBlfGF1dG9SZXZlcnNlfGF6aW11dGh8YmFzZUZyZXF1ZW5jeXxiYXNlbGluZVNoaWZ0fGJhc2VQcm9maWxlfGJib3h8YmVnaW58Ymlhc3xieXxjYWxjTW9kZXxjYXBIZWlnaHR8Y2xpcHxjbGlwUGF0aFVuaXRzfGNsaXBQYXRofGNsaXBSdWxlfGNvbG9ySW50ZXJwb2xhdGlvbnxjb2xvckludGVycG9sYXRpb25GaWx0ZXJzfGNvbG9yUHJvZmlsZXxjb2xvclJlbmRlcmluZ3xjb250ZW50U2NyaXB0VHlwZXxjb250ZW50U3R5bGVUeXBlfGN1cnNvcnxjeHxjeXxkfGRlY2VsZXJhdGV8ZGVzY2VudHxkaWZmdXNlQ29uc3RhbnR8ZGlyZWN0aW9ufGRpc3BsYXl8ZGl2aXNvcnxkb21pbmFudEJhc2VsaW5lfGR1cnxkeHxkeXxlZGdlTW9kZXxlbGV2YXRpb258ZW5hYmxlQmFja2dyb3VuZHxlbmR8ZXhwb25lbnR8ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZHxmaWxsfGZpbGxPcGFjaXR5fGZpbGxSdWxlfGZpbHRlcnxmaWx0ZXJSZXN8ZmlsdGVyVW5pdHN8Zmxvb2RDb2xvcnxmbG9vZE9wYWNpdHl8Zm9jdXNhYmxlfGZvbnRGYW1pbHl8Zm9udFNpemV8Zm9udFNpemVBZGp1c3R8Zm9udFN0cmV0Y2h8Zm9udFN0eWxlfGZvbnRWYXJpYW50fGZvbnRXZWlnaHR8Zm9ybWF0fGZyb218ZnJ8Znh8Znl8ZzF8ZzJ8Z2x5cGhOYW1lfGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsfGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbHxnbHlwaFJlZnxncmFkaWVudFRyYW5zZm9ybXxncmFkaWVudFVuaXRzfGhhbmdpbmd8aG9yaXpBZHZYfGhvcml6T3JpZ2luWHxpZGVvZ3JhcGhpY3xpbWFnZVJlbmRlcmluZ3xpbnxpbjJ8aW50ZXJjZXB0fGt8azF8azJ8azN8azR8a2VybmVsTWF0cml4fGtlcm5lbFVuaXRMZW5ndGh8a2VybmluZ3xrZXlQb2ludHN8a2V5U3BsaW5lc3xrZXlUaW1lc3xsZW5ndGhBZGp1c3R8bGV0dGVyU3BhY2luZ3xsaWdodGluZ0NvbG9yfGxpbWl0aW5nQ29uZUFuZ2xlfGxvY2FsfG1hcmtlckVuZHxtYXJrZXJNaWR8bWFya2VyU3RhcnR8bWFya2VySGVpZ2h0fG1hcmtlclVuaXRzfG1hcmtlcldpZHRofG1hc2t8bWFza0NvbnRlbnRVbml0c3xtYXNrVW5pdHN8bWF0aGVtYXRpY2FsfG1vZGV8bnVtT2N0YXZlc3xvZmZzZXR8b3BhY2l0eXxvcGVyYXRvcnxvcmRlcnxvcmllbnR8b3JpZW50YXRpb258b3JpZ2lufG92ZXJmbG93fG92ZXJsaW5lUG9zaXRpb258b3ZlcmxpbmVUaGlja25lc3N8cGFub3NlMXxwYWludE9yZGVyfHBhdGhMZW5ndGh8cGF0dGVybkNvbnRlbnRVbml0c3xwYXR0ZXJuVHJhbnNmb3JtfHBhdHRlcm5Vbml0c3xwb2ludGVyRXZlbnRzfHBvaW50c3xwb2ludHNBdFh8cG9pbnRzQXRZfHBvaW50c0F0WnxwcmVzZXJ2ZUFscGhhfHByZXNlcnZlQXNwZWN0UmF0aW98cHJpbWl0aXZlVW5pdHN8cnxyYWRpdXN8cmVmWHxyZWZZfHJlbmRlcmluZ0ludGVudHxyZXBlYXRDb3VudHxyZXBlYXREdXJ8cmVxdWlyZWRFeHRlbnNpb25zfHJlcXVpcmVkRmVhdHVyZXN8cmVzdGFydHxyZXN1bHR8cm90YXRlfHJ4fHJ5fHNjYWxlfHNlZWR8c2hhcGVSZW5kZXJpbmd8c2xvcGV8c3BhY2luZ3xzcGVjdWxhckNvbnN0YW50fHNwZWN1bGFyRXhwb25lbnR8c3BlZWR8c3ByZWFkTWV0aG9kfHN0YXJ0T2Zmc2V0fHN0ZERldmlhdGlvbnxzdGVtaHxzdGVtdnxzdGl0Y2hUaWxlc3xzdG9wQ29sb3J8c3RvcE9wYWNpdHl8c3RyaWtldGhyb3VnaFBvc2l0aW9ufHN0cmlrZXRocm91Z2hUaGlja25lc3N8c3RyaW5nfHN0cm9rZXxzdHJva2VEYXNoYXJyYXl8c3Ryb2tlRGFzaG9mZnNldHxzdHJva2VMaW5lY2FwfHN0cm9rZUxpbmVqb2lufHN0cm9rZU1pdGVybGltaXR8c3Ryb2tlT3BhY2l0eXxzdHJva2VXaWR0aHxzdXJmYWNlU2NhbGV8c3lzdGVtTGFuZ3VhZ2V8dGFibGVWYWx1ZXN8dGFyZ2V0WHx0YXJnZXRZfHRleHRBbmNob3J8dGV4dERlY29yYXRpb258dGV4dFJlbmRlcmluZ3x0ZXh0TGVuZ3RofHRvfHRyYW5zZm9ybXx1MXx1Mnx1bmRlcmxpbmVQb3NpdGlvbnx1bmRlcmxpbmVUaGlja25lc3N8dW5pY29kZXx1bmljb2RlQmlkaXx1bmljb2RlUmFuZ2V8dW5pdHNQZXJFbXx2QWxwaGFiZXRpY3x2SGFuZ2luZ3x2SWRlb2dyYXBoaWN8dk1hdGhlbWF0aWNhbHx2YWx1ZXN8dmVjdG9yRWZmZWN0fHZlcnNpb258dmVydEFkdll8dmVydE9yaWdpblh8dmVydE9yaWdpbll8dmlld0JveHx2aWV3VGFyZ2V0fHZpc2liaWxpdHl8d2lkdGhzfHdvcmRTcGFjaW5nfHdyaXRpbmdNb2RlfHh8eEhlaWdodHx4MXx4Mnx4Q2hhbm5lbFNlbGVjdG9yfHhsaW5rQWN0dWF0ZXx4bGlua0FyY3JvbGV8eGxpbmtIcmVmfHhsaW5rUm9sZXx4bGlua1Nob3d8eGxpbmtUaXRsZXx4bGlua1R5cGV8eG1sQmFzZXx4bWxuc3x4bWxuc1hsaW5rfHhtbExhbmd8eG1sU3BhY2V8eXx5MXx5Mnx5Q2hhbm5lbFNlbGVjdG9yfHp8em9vbUFuZFBhbnxmb3J8Y2xhc3N8YXV0b2ZvY3VzKXwoKFtEZF1bQWFdW1R0XVtBYV18W0FhXVtScl1bSWldW0FhXXx4KS0uKikpJC87Y29uc3Qgbz0oaT17fSxmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09aVtlXSYmKGlbZV09KHQ9ZSxyLnRlc3QodCl8fDExMT09PXQuY2hhckNvZGVBdCgwKSYmMTEwPT09dC5jaGFyQ29kZUF0KDEpJiZ0LmNoYXJDb2RlQXQoMik8OTEpKSxpW2VdO3ZhciB0fSk7dmFyIGl9LDE1MjE6KGUsdCxuKT0+e24ucih0KSxuLmQodCx7QWN0aXZpdHlMb2dJY29uOigpPT5pLEFsaWduQmFzZWxpbmVJY29uOigpPT5hLEFsaWduQm90dG9tSWNvbjooKT0+bCxBbGlnbkNlbnRlckhvcml6b250YWxseUljb246KCk9PnMsQWxpZ25DZW50ZXJWZXJ0aWNhbGx5SWNvbjooKT0+YyxBbGlnbkxlZnRJY29uOigpPT51LEFsaWduUmlnaHRJY29uOigpPT5mLEFsaWduVG9wSWNvbjooKT0+ZCxBbGxTaWRlc0ljb246KCk9PnAsQW5nbGVJY29uOigpPT5oLEFyY2hpdmVJY29uOigpPT52LEFycm93Qm90dG9tTGVmdEljb246KCk9PmcsQXJyb3dCb3R0b21SaWdodEljb246KCk9PkMsQXJyb3dEb3duSWNvbjooKT0+bSxBcnJvd0xlZnRJY29uOigpPT55LEFycm93UmlnaHRJY29uOigpPT53LEFycm93VG9wTGVmdEljb246KCk9PmIsQXJyb3dUb3BSaWdodEljb246KCk9PngsQXJyb3dVcEljb246KCk9Pl8sQXNwZWN0UmF0aW9JY29uOigpPT5MLEF2YXRhckljb246KCk9Pk8sQmFja3BhY2tJY29uOigpPT5FLEJhZGdlSWNvbjooKT0+UyxCYXJDaGFydEljb246KCk9Pk0sQmVsbEljb246KCk9PmosQmxlbmRpbmdNb2RlSWNvbjooKT0+ayxCb29rbWFya0ljb246KCk9PlIsQm9yZGVyQWxsSWNvbjooKT0+UCxCb3JkZXJCb3R0b21JY29uOigpPT5BLEJvcmRlckRhc2hlZEljb246KCk9PkksQm9yZGVyRG90dGVkSWNvbjooKT0+VCxCb3JkZXJMZWZ0SWNvbjooKT0+SCxCb3JkZXJOb25lSWNvbjooKT0+VixCb3JkZXJSaWdodEljb246KCk9PkIsQm9yZGVyU29saWRJY29uOigpPT5ELEJvcmRlclNwbGl0SWNvbjooKT0+WixCb3JkZXJTdHlsZUljb246KCk9PiQsQm9yZGVyVG9wSWNvbjooKT0+RixCb3hJY29uOigpPT5OLEJveE1vZGVsSWNvbjooKT0+VSxCdXR0b25JY29uOigpPT5XLENhbGVuZGFySWNvbjooKT0+eixDYW1lcmFJY29uOigpPT5HLENhcmRTdGFja0ljb246KCk9PnEsQ2FyZFN0YWNrTWludXNJY29uOigpPT5ZLENhcmRTdGFja1BsdXNJY29uOigpPT5LLENhcmV0RG93bkljb246KCk9PlgsQ2FyZXRMZWZ0SWNvbjooKT0+SixDYXJldFJpZ2h0SWNvbjooKT0+USxDYXJldFNvcnRJY29uOigpPT5lZSxDYXJldFVwSWNvbjooKT0+dGUsQ2hhdEJ1YmJsZUljb246KCk9Pm5lLENoZWNrQ2lyY2xlZEljb246KCk9Pm9lLENoZWNrSWNvbjooKT0+cmUsQ2hlY2tib3hJY29uOigpPT5pZSxDaGV2cm9uRG93bkljb246KCk9PmFlLENoZXZyb25MZWZ0SWNvbjooKT0+bGUsQ2hldnJvblJpZ2h0SWNvbjooKT0+c2UsQ2hldnJvblVwSWNvbjooKT0+Y2UsQ2lyY2xlQmFja3NsYXNoSWNvbjooKT0+ZmUsQ2lyY2xlSWNvbjooKT0+dWUsQ2xpcGJvYXJkQ29weUljb246KCk9PnBlLENsaXBib2FyZEljb246KCk9PmRlLENsb2NrSWNvbjooKT0+aGUsQ29kZUljb246KCk9PnZlLENvZGVTYW5kYm94TG9nb0ljb246KCk9PmdlLENvbHVtblNwYWNpbmdJY29uOigpPT5DZSxDb2x1bW5zSWNvbjooKT0+bWUsQ29tbWl0SWNvbjooKT0+eWUsQ29tcG9uZW50MUljb246KCk9PndlLENvbXBvbmVudDJJY29uOigpPT5iZSxDb21wb25lbnRCb29sZWFuSWNvbjooKT0+eGUsQ29tcG9uZW50SW5zdGFuY2VJY29uOigpPT5fZSxDb21wb25lbnROb25lSWNvbjooKT0+TGUsQ29tcG9uZW50UGxhY2Vob2xkZXJJY29uOigpPT5PZSxDb250YWluZXJJY29uOigpPT5FZSxDb29raWVJY29uOigpPT5TZSxDb3B5SWNvbjooKT0+TWUsQ29ybmVyQm90dG9tTGVmdEljb246KCk9PmplLENvcm5lckJvdHRvbVJpZ2h0SWNvbjooKT0+a2UsQ29ybmVyVG9wTGVmdEljb246KCk9PlJlLENvcm5lclRvcFJpZ2h0SWNvbjooKT0+UGUsQ29ybmVyc0ljb246KCk9PkFlLENvdW50ZG93blRpbWVySWNvbjooKT0+SWUsQ291bnRlckNsb2Nrd2lzZUNsb2NrSWNvbjooKT0+VGUsQ3JvcEljb246KCk9PkhlLENyb3NzMUljb246KCk9PlZlLENyb3NzMkljb246KCk9PkJlLENyb3NzQ2lyY2xlZEljb246KCk9PkRlLENyb3NzaGFpcjFJY29uOigpPT5aZSxDcm9zc2hhaXIySWNvbjooKT0+JGUsQ3J1bXBsZWRQYXBlckljb246KCk9PkZlLEN1YmVJY29uOigpPT5OZSxDdXJzb3JBcnJvd0ljb246KCk9PlVlLEN1cnNvclRleHRJY29uOigpPT5XZSxEYXNoSWNvbjooKT0+emUsRGFzaGJvYXJkSWNvbjooKT0+R2UsRGltZW5zaW9uc0ljb246KCk9PnFlLERpc2NJY29uOigpPT5ZZSxEaXZpZGVySG9yaXpvbnRhbEljb246KCk9PktlLERpdmlkZXJWZXJ0aWNhbEljb246KCk9PlhlLERvdEZpbGxlZEljb246KCk9PlFlLERvdEljb246KCk9PkplLERvdHNIb3Jpem9udGFsSWNvbjooKT0+ZXQsRG90c1ZlcnRpY2FsSWNvbjooKT0+dHQsRG91YmxlQXJyb3dEb3duSWNvbjooKT0+bnQsRG91YmxlQXJyb3dMZWZ0SWNvbjooKT0+cnQsRG91YmxlQXJyb3dSaWdodEljb246KCk9Pm90LERvdWJsZUFycm93VXBJY29uOigpPT5pdCxEb3dubG9hZEljb246KCk9PmF0LERyYWdIYW5kbGVEb3RzMUljb246KCk9Pmx0LERyYWdIYW5kbGVEb3RzMkljb246KCk9PnN0LERyYWdIYW5kbGVIb3Jpem9udGFsSWNvbjooKT0+Y3QsRHJhZ0hhbmRsZVZlcnRpY2FsSWNvbjooKT0+dXQsRHJhd2luZ1BpbkZpbGxlZEljb246KCk9PmR0LERyYXdpbmdQaW5JY29uOigpPT5mdCxEcm9wZG93bk1lbnVJY29uOigpPT5wdCxFbnRlckZ1bGxTY3JlZW5JY29uOigpPT52dCxFbnRlckljb246KCk9Pmh0LEVudmVsb3BlQ2xvc2VkSWNvbjooKT0+Z3QsRW52ZWxvcGVPcGVuSWNvbjooKT0+Q3QsRXhjbGFtYXRpb25UcmlhbmdsZUljb246KCk9Pm10LEV4aXRGdWxsU2NyZWVuSWNvbjooKT0+d3QsRXhpdEljb246KCk9Pnl0LEV4dGVybmFsTGlua0ljb246KCk9PmJ0LEV5ZUNsb3NlZEljb246KCk9Pnh0LEV5ZU5vbmVJY29uOigpPT5fdCxFeWVPcGVuSWNvbjooKT0+THQsRmFjZUljb246KCk9Pk90LEZpZ21hTG9nb0ljb246KCk9PkV0LEZpbGVJY29uOigpPT5TdCxGaWxlTWludXNJY29uOigpPT5NdCxGaWxlUGx1c0ljb246KCk9Pmp0LEZpbGVUZXh0SWNvbjooKT0+a3QsRm9udEJvbGRJY29uOigpPT5SdCxGb250RmFtaWx5SWNvbjooKT0+UHQsRm9udEl0YWxpY0ljb246KCk9PkF0LEZvbnRSb21hbkljb246KCk9Pkl0LEZvbnRTaXplSWNvbjooKT0+VHQsRm9udFN0eWxlSWNvbjooKT0+SHQsRnJhbWVJY29uOigpPT5WdCxGcmFtZXJMb2dvSWNvbjooKT0+QnQsR2Vhckljb246KCk9PkR0LEdpdEh1YkxvZ29JY29uOigpPT5adCxHbG9iZUljb246KCk9PiR0LEdyaWRJY29uOigpPT5GdCxHcm91cEljb246KCk9Pk50LEhhbGYxSWNvbjooKT0+VXQsSGFsZjJJY29uOigpPT5XdCxIYW1idXJnZXJNZW51SWNvbjooKT0+enQsSGFuZEljb246KCk9Pkd0LEhlYWRpbmdJY29uOigpPT5xdCxIZWlnaHRJY29uOigpPT5ZdCxIb21lSWNvbjooKT0+S3QsSWNvbkphckxvZ29JY29uOigpPT5YdCxJZENhcmRJY29uOigpPT5KdCxJbWFnZUljb246KCk9PlF0LEluZm9DaXJjbGVkSWNvbjooKT0+ZW4sSW5wdXRJY29uOigpPT50bixMYXBUaW1lckljb246KCk9Pm5uLExheWVyc0ljb246KCk9PnJuLExheW91dEljb246KCk9Pm9uLExldHRlckNhc2VDYXBpdGFsaXplSWNvbjooKT0+YW4sTGV0dGVyQ2FzZUxvd2VyY2FzZUljb246KCk9PmxuLExldHRlckNhc2VUb2dnbGVJY29uOigpPT5zbixMZXR0ZXJDYXNlVXBwZXJjYXNlSWNvbjooKT0+Y24sTGV0dGVyU3BhY2luZ0ljb246KCk9PnVuLExpZ2h0bmluZ0JvbHRJY29uOigpPT5mbixMaW5lSGVpZ2h0SWNvbjooKT0+ZG4sTGluazFJY29uOigpPT5wbixMaW5rMkljb246KCk9PmhuLExpbmtCcmVhazFJY29uOigpPT52bixMaW5rQnJlYWsySWNvbjooKT0+Z24sTGlua05vbmUxSWNvbjooKT0+Q24sTGlua05vbmUySWNvbjooKT0+bW4sTGlzdEJ1bGxldEljb246KCk9PnluLExvY2tDbG9zZWRJY29uOigpPT53bixMb2NrT3BlbjFJY29uOigpPT5ibixMb2NrT3BlbjJJY29uOigpPT54bixMb29wSWNvbjooKT0+X24sTWFnaWNXYW5kSWNvbjooKT0+TG4sTWFnbmlmeWluZ0dsYXNzSWNvbjooKT0+T24sTWFyZ2luSWNvbjooKT0+RW4sTWFza09mZkljb246KCk9PlNuLE1hc2tPbkljb246KCk9Pk1uLE1pbnVzQ2lyY2xlZEljb246KCk9PmtuLE1pbnVzSWNvbjooKT0+am4sTWl4SWNvbjooKT0+Um4sTWl4ZXJIb3Jpem9udGFsSWNvbjooKT0+UG4sTWl4ZXJWZXJ0aWNhbEljb246KCk9PkFuLE1vZHVsekxvZ29JY29uOigpPT5JbixNb29uSWNvbjooKT0+VG4sTW92ZUljb246KCk9PkhuLE5vdGlvbkxvZ29JY29uOigpPT5WbixPcGFjaXR5SWNvbjooKT0+Qm4sT3ZlcmxpbmVJY29uOigpPT5EbixQYWRkaW5nSWNvbjooKT0+Wm4sUGFwZXJQbGFuZUljb246KCk9PiRuLFBhdXNlSWNvbjooKT0+Rm4sUGVuY2lsMUljb246KCk9Pk5uLFBlbmNpbDJJY29uOigpPT5VbixQZXJzb25JY29uOigpPT5XbixQaWVDaGFydEljb246KCk9PnpuLFBpbGNyb3dJY29uOigpPT5HbixQaW5Cb3R0b21JY29uOigpPT5xbixQaW5MZWZ0SWNvbjooKT0+WW4sUGluUmlnaHRJY29uOigpPT5LbixQaW5Ub3BJY29uOigpPT5YbixQbGF5SWNvbjooKT0+Sm4sUGx1c0NpcmNsZWRJY29uOigpPT5lcixQbHVzSWNvbjooKT0+UW4sUXVlc3Rpb25NYXJrQ2lyY2xlZEljb246KCk9Pm5yLFF1ZXN0aW9uTWFya0ljb246KCk9PnRyLFF1b3RlSWNvbjooKT0+cnIsUmFkaW9idXR0b25JY29uOigpPT5vcixSZWFkZXJJY29uOigpPT5pcixSZWxvYWRJY29uOigpPT5hcixSZXNldEljb246KCk9PmxyLFJlc3VtZUljb246KCk9PnNyLFJvY2tldEljb246KCk9PmNyLFJvdGF0ZUNvdW50ZXJDbG9ja3dpc2VJY29uOigpPT51cixSb3dTcGFjaW5nSWNvbjooKT0+ZnIsUm93c0ljb246KCk9PmRyLFJ1bGVySG9yaXpvbnRhbEljb246KCk9PnByLFJ1bGVyU3F1YXJlSWNvbjooKT0+aHIsU2VjdGlvbkljb246KCk9PnZyLFNld2luZ1BpbkZpbGxlZEljb246KCk9PkNyLFNld2luZ1Bpbkljb246KCk9PmdyLFNoYWRvd0ljb246KCk9Pm1yLFNoYWRvd0lubmVySWNvbjooKT0+eXIsU2hhZG93Tm9uZUljb246KCk9PndyLFNoYWRvd091dGVySWNvbjooKT0+YnIsU2hhcmUxSWNvbjooKT0+eHIsU2hhcmUySWNvbjooKT0+X3IsU2h1ZmZsZUljb246KCk9PkxyLFNpemVJY29uOigpPT5PcixTa2V0Y2hMb2dvSWNvbjooKT0+RXIsU2xhc2hJY29uOigpPT5TcixTbGlkZXJJY29uOigpPT5NcixTcGFjZUJldHdlZW5Ib3Jpem9udGFsbHlJY29uOigpPT5qcixTcGFjZUJldHdlZW5WZXJ0aWNhbGx5SWNvbjooKT0+a3IsU3BhY2VFdmVubHlIb3Jpem9udGFsbHlJY29uOigpPT5ScixTcGFjZUV2ZW5seVZlcnRpY2FsbHlJY29uOigpPT5QcixTcGVha2VyTG91ZEljb246KCk9PkFyLFNwZWFrZXJNb2RlcmF0ZUljb246KCk9PklyLFNwZWFrZXJPZmZJY29uOigpPT5UcixTcGVha2VyUXVpZXRJY29uOigpPT5IcixTcXVhcmVJY29uOigpPT5WcixTdGFja0ljb246KCk9PkJyLFN0YXJGaWxsZWRJY29uOigpPT5acixTdGFySWNvbjooKT0+RHIsU3RpdGNoZXNMb2dvSWNvbjooKT0+JHIsU3RvcEljb246KCk9PkZyLFN0b3B3YXRjaEljb246KCk9Pk5yLFN0cmV0Y2hIb3Jpem9udGFsbHlJY29uOigpPT5VcixTdHJldGNoVmVydGljYWxseUljb246KCk9PldyLFN0cmlrZXRocm91Z2hJY29uOigpPT56cixTdW5JY29uOigpPT5HcixTd2l0Y2hJY29uOigpPT5xcixTeW1ib2xJY29uOigpPT5ZcixUYWJsZUljb246KCk9PktyLFRhcmdldEljb246KCk9PlhyLFRleHRBbGlnbkNlbnRlckljb246KCk9PlFyLFRleHRBbGlnbkp1c3RpZnlJY29uOigpPT5lbyxUZXh0QWxpZ25MZWZ0SWNvbjooKT0+dG8sVGV4dEFsaWduUmlnaHRJY29uOigpPT5ubyxUZXh0SWNvbjooKT0+SnIsVGV4dE5vbmVJY29uOigpPT5ybyxUaGlja0Fycm93RG93bkljb246KCk9Pm9vLFRoaWNrQXJyb3dMZWZ0SWNvbjooKT0+aW8sVGhpY2tBcnJvd1JpZ2h0SWNvbjooKT0+YW8sVGhpY2tBcnJvd1VwSWNvbjooKT0+bG8sVGltZXJJY29uOigpPT5zbyxUb2tlbnNJY29uOigpPT5jbyxUcmFja05leHRJY29uOigpPT51byxUcmFja1ByZXZpb3VzSWNvbjooKT0+Zm8sVHJhbnNwYXJlbmN5R3JpZEljb246KCk9PnBvLFRyYXNoSWNvbjooKT0+aG8sVHJpYW5nbGVEb3duSWNvbjooKT0+dm8sVHJpYW5nbGVMZWZ0SWNvbjooKT0+Z28sVHJpYW5nbGVSaWdodEljb246KCk9PkNvLFRyaWFuZ2xlVXBJY29uOigpPT5tbyxUd2l0dGVyTG9nb0ljb246KCk9PnlvLFVuZGVybGluZUljb246KCk9PndvLFVwZGF0ZUljb246KCk9PmJvLFVwbG9hZEljb246KCk9PnhvLFZhbHVlSWNvbjooKT0+X28sVmFsdWVOb25lSWNvbjooKT0+TG8sVmVyY2VsTG9nb0ljb246KCk9Pk9vLFZpZGVvSWNvbjooKT0+RW8sVmlld0dyaWRJY29uOigpPT5TbyxWaWV3SG9yaXpvbnRhbEljb246KCk9Pk1vLFZpZXdOb25lSWNvbjooKT0+am8sVmlld1ZlcnRpY2FsSWNvbjooKT0+a28sV2lkdGhJY29uOigpPT5Sbyxab29tSW5JY29uOigpPT5Qbyxab29tT3V0SWNvbjooKT0+QW99KTt2YXIgcj1uKDY2ODkpO2Z1bmN0aW9uIG8oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99dmFyIGk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAgMS41QzAgMS4yMjM4NiAwLjIyMzg1OCAxIDAuNSAxSDIuNUMyLjc3NjE0IDEgMyAxLjIyMzg2IDMgMS41QzMgMS43NzYxNCAyLjc3NjE0IDIgMi41IDJIMC41QzAuMjIzODU4IDIgMCAxLjc3NjE0IDAgMS41Wk00IDEuNUM0IDEuMjIzODYgNC4yMjM4NiAxIDQuNSAxSDE0LjVDMTQuNzc2MSAxIDE1IDEuMjIzODYgMTUgMS41QzE1IDEuNzc2MTQgMTQuNzc2MSAyIDE0LjUgMkg0LjVDNC4yMjM4NiAyIDQgMS43NzYxNCA0IDEuNVpNNCA0LjVDNCA0LjIyMzg2IDQuMjIzODYgNCA0LjUgNEgxMS41QzExLjc3NjEgNCAxMiA0LjIyMzg2IDEyIDQuNUMxMiA0Ljc3NjE0IDExLjc3NjEgNSAxMS41IDVINC41QzQuMjIzODYgNSA0IDQuNzc2MTQgNCA0LjVaTTAgNy41QzAgNy4yMjM4NiAwLjIyMzg1OCA3IDAuNSA3SDIuNUMyLjc3NjE0IDcgMyA3LjIyMzg2IDMgNy41QzMgNy43NzYxNCAyLjc3NjE0IDggMi41IDhIMC41QzAuMjIzODU4IDggMCA3Ljc3NjE0IDAgNy41Wk00IDcuNUM0IDcuMjIzODYgNC4yMjM4NiA3IDQuNSA3SDE0LjVDMTQuNzc2MSA3IDE1IDcuMjIzODYgMTUgNy41QzE1IDcuNzc2MTQgMTQuNzc2MSA4IDE0LjUgOEg0LjVDNC4yMjM4NiA4IDQgNy43NzYxNCA0IDcuNVpNNCAxMC41QzQgMTAuMjIzOSA0LjIyMzg2IDEwIDQuNSAxMEgxMS41QzExLjc3NjEgMTAgMTIgMTAuMjIzOSAxMiAxMC41QzEyIDEwLjc3NjEgMTEuNzc2MSAxMSAxMS41IDExSDQuNUM0LjIyMzg2IDExIDQgMTAuNzc2MSA0IDEwLjVaTTAgMTMuNUMwIDEzLjIyMzkgMC4yMjM4NTggMTMgMC41IDEzSDIuNUMyLjc3NjE0IDEzIDMgMTMuMjIzOSAzIDEzLjVDMyAxMy43NzYxIDIuNzc2MTQgMTQgMi41IDE0SDAuNUMwLjIyMzg1OCAxNCAwIDEzLjc3NjEgMCAxMy41Wk00IDEzLjVDNCAxMy4yMjM5IDQuMjIzODYgMTMgNC41IDEzSDE0LjVDMTQuNzc2MSAxMyAxNSAxMy4yMjM5IDE1IDEzLjVDMTUgMTMuNzc2MSAxNC43NzYxIDE0IDE0LjUgMTRINC41QzQuMjIzODYgMTQgNCAxMy43NzYxIDQgMTMuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwLjUgMS43NTAwM0MxMC43MTA3IDEuNzUwMDMgMTAuODk4OCAxLjg4MjE3IDEwLjk3MDMgMi4wODA0MkwxMy45NzAzIDEwLjRDMTQuMDY0IDEwLjY1OTggMTMuOTI5MyAxMC45NDYzIDEzLjY2OTYgMTEuMDRDMTMuNDA5OCAxMS4xMzM2IDEzLjEyMzMgMTAuOTk5IDEzLjAyOTYgMTAuNzM5MkwxMi4wNDc3IDguMDE2MDZIOC45NTIyN0w3Ljk3MDMxIDEwLjczOTJDNy44NzY2NCAxMC45OTkgNy41OTAxMiAxMS4xMzM2IDcuMzMwMzUgMTEuMDRDNy4wNzA1OCAxMC45NDYzIDYuOTM1OTMgMTAuNjU5OCA3LjAyOTYgMTAuNEwxMC4wMjk2IDIuMDgwNDJDMTAuMTAxMSAxLjg4MjE3IDEwLjI4OTIgMS43NTAwMyAxMC41IDEuNzUwMDNaTTEwLjUgMy43MjQwMkwxMS43NDExIDcuMTY2MDZIOS4yNTg3N0wxMC41IDMuNzI0MDJaTTIuNDk5NDkgMi4wOTk5N0MyLjcyMDQgMi4wOTk5NyAyLjg5OTQ5IDIuMjc5MDYgMi44OTk0OSAyLjQ5OTk3TDIuODk5NDkgOS41MzQyOEw0LjIxNjY0IDguMjE3MTNDNC4zNzI4NSA4LjA2MDkyIDQuNjI2MTIgOC4wNjA5MiA0Ljc4MjMzIDguMjE3MTNDNC45Mzg1NCA4LjM3MzM0IDQuOTM4NTQgOC42MjY2IDQuNzgyMzMgOC43ODI4MUwyLjc4MjMzIDEwLjc4MjhDMi43MDczMiAxMC44NTc4IDIuNjA1NTcgMTAuOSAyLjQ5OTQ5IDEwLjlDMi4zOTM0IDEwLjkgMi4yOTE2NiAxMC44NTc4IDIuMjE2NjQgMTAuNzgyOEwwLjIxNjY0NSA4Ljc4MjgxQzAuMDYwNDM0OSA4LjYyNjYgMC4wNjA0MzQ5IDguMzczMzQgMC4yMTY2NDUgOC4yMTcxM0MwLjM3Mjg1NCA4LjA2MDkyIDAuNjI2MTIgOC4wNjA5MiAwLjc4MjMzIDguMjE3MTNMMi4wOTk0OSA5LjUzNDI4TDIuMDk5NDkgMi40OTk5N0MyLjA5OTQ5IDIuMjc5MDYgMi4yNzg1NyAyLjA5OTk3IDIuNDk5NDkgMi4wOTk5N1pNMC4wOTk5Njk1IDEzLjUwMDFDMC4wOTk5Njk1IDEzLjI3OTEgMC4yNzkwNTYgMTMuMTAwMSAwLjQ5OTk2OSAxMy4xMDAxSDE0LjVDMTQuNzIwOSAxMy4xMDAxIDE0LjkgMTMuMjc5MSAxNC45IDEzLjUwMDFDMTQuOSAxMy43MjEgMTQuNzIwOSAxMy45MDAxIDE0LjUgMTMuOTAwMUgwLjQ5OTk2OUMwLjI3OTA1NiAxMy45MDAxIDAuMDk5OTY5NSAxMy43MjEgMC4wOTk5Njk1IDEzLjUwMDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxsPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05IDNDOSAyLjQ0NzcyIDguNTUyMjkgMiA4IDJIN0M2LjQ0NzcyIDIgNiAyLjQ0NzcyIDYgM0w2IDE0SDEuNUMxLjIyMzg2IDE0IDEgMTQuMjIzOSAxIDE0LjVDMSAxNC43NzYxIDEuMjIzODYgMTUgMS41IDE1TDYgMTVIOUgxMy41QzEzLjc3NjEgMTUgMTQgMTQuNzc2MSAxNCAxNC41QzE0IDE0LjIyMzkgMTMuNzc2MSAxNCAxMy41IDE0SDlWM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuOTk5ODggMUM2LjQ0NzU5IDEgNS45OTk4OCAxLjQ0NzcyIDUuOTk5ODggMlY3SDEuNDk5ODhDMS4yMjM3NCA3IDAuOTk5ODc4IDcuMjIzODYgMC45OTk4NzggNy41QzAuOTk5ODc4IDcuNzc2MTQgMS4yMjM3NCA4IDEuNDk5ODggOEg1Ljk5OTg4VjEzQzUuOTk5ODggMTMuNTUyMyA2LjQ0NzU5IDE0IDYuOTk5ODggMTRINy45OTk4OEM4LjU1MjE2IDE0IDguOTk5ODggMTMuNTUyMyA4Ljk5OTg4IDEzVjhIMTMuNDk5OUMxMy43NzYgOCAxMy45OTk5IDcuNzc2MTQgMTMuOTk5OSA3LjVDMTMuOTk5OSA3LjIyMzg2IDEzLjc3NiA3IDEzLjQ5OTkgN0g4Ljk5OTg4VjJDOC45OTk4OCAxLjQ0NzcyIDguNTUyMTYgMSA3Ljk5OTg4IDFMNi45OTk4OCAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS45OTk4OCA2QzEuNDQ3NTkgNiAwLjk5OTg3NyA2LjQ0NzcyIDAuOTk5ODc3IDdMMC45OTk4NzcgOEMwLjk5OTg3NyA4LjU1MjI4IDEuNDQ3NTkgOSAxLjk5OTg4IDlMNi45OTk4OCA5TDYuOTk5ODggMTMuNUM2Ljk5OTg4IDEzLjc3NjEgNy4yMjM3NCAxNCA3LjQ5OTg4IDE0QzcuNzc2MDIgMTQgNy45OTk4OCAxMy43NzYxIDcuOTk5ODggMTMuNUw3Ljk5OTg4IDlMMTIuOTk5OSA5QzEzLjU1MjIgOSAxMy45OTk5IDguNTUyMjggMTMuOTk5OSA4TDEzLjk5OTkgN0MxMy45OTk5IDYuNDQ3NzIgMTMuNTUyMiA2IDEyLjk5OTkgNkw3Ljk5OTg4IDZMNy45OTk4OCAxLjVDNy45OTk4OCAxLjIyMzg2IDcuNzc2MDIgMSA3LjQ5OTg4IDFDNy4yMjM3MyAxIDYuOTk5ODggMS4yMjM4NiA2Ljk5OTg4IDEuNUw2Ljk5OTg4IDZMMS45OTk4OCA2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC40OTk5OTUgMC45OTk5OTVDMC4yMjM4NTUgMC45OTk5OTUgLTUuNTg0NThlLTA3IDEuMjIzODUgLTUuNDYzODhlLTA3IDEuNDk5OTlMLTIuMTg1NTRlLTA4IDEzLjQ5OTlDLTkuNzg0OTJlLTA5IDEzLjc3NiAwLjIyMzg1NSAxMy45OTk5IDAuNDk5OTk1IDEzLjk5OTlDMC43NzYxMzYgMTMuOTk5OSAwLjk5OTk5MSAxMy43NzYgMC45OTk5OTEgMTMuNDk5OUwwLjk5OTk5MSA4Ljk5OTkzTDEyIDguOTk5OTNDMTIuNTUyMyA4Ljk5OTkzIDEzIDguNTUyMjIgMTMgNy45OTk5M0wxMyA2Ljk5OTk0QzEzIDYuNDQ3NjYgMTIuNTUyMyA1Ljk5OTk1IDEyIDUuOTk5OTVMMC45OTk5OTEgNS45OTk5NUwwLjk5OTk5MSAxLjQ5OTk5QzAuOTk5OTkxIDEuMjIzODUgMC43NzYxMzUgMC45OTk5OTUgMC40OTk5OTUgMC45OTk5OTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxmPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNC40OTk5IDFDMTQuMjIzNyAxIDEzLjk5OTkgMS4yMjM4NiAxMy45OTk5IDEuNUwxMy45OTk5IDZMMi45OTk4OCA2QzIuNDQ3NTkgNiAxLjk5OTg4IDYuNDQ3NzIgMS45OTk4OCA3TDEuOTk5ODggOEMxLjk5OTg4IDguNTUyMjggMi40NDc1OSA5IDIuOTk5ODggOUwxMy45OTk5IDlMMTMuOTk5OSAxMy41QzEzLjk5OTkgMTMuNzc2MSAxNC4yMjM3IDE0IDE0LjQ5OTkgMTRDMTQuNzc2IDE0IDE0Ljk5OTkgMTMuNzc2MSAxNC45OTk5IDEzLjVMMTQuOTk5OSA5TDE0Ljk5OTkgNkwxNC45OTk5IDEuNUMxNC45OTk5IDEuMjIzODYgMTQuNzc2IDEgMTQuNDk5OSAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41IDBDMS4yMjM4NiAwIDEgMC4yMjM4NTggMSAwLjVDMSAwLjc3NjE0MiAxLjIyMzg2IDEgMS41IDFINlYxMkM2IDEyLjU1MjMgNi40NDc3MiAxMyA3IDEzSDhDOC41NTIyOCAxMyA5IDEyLjU1MjMgOSAxMlYxSDEzLjVDMTMuNzc2MSAxIDE0IDAuNzc2MTQyIDE0IDAuNUMxNCAwLjIyMzg1OCAxMy43NzYxIDAgMTMuNSAwSDlINkgxLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxwPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMC43NUw5Ljc1IDNINS4yNUw3LjUgMC43NVpNNy41IDE0LjI1TDkuNzUgMTJINS4yNUw3LjUgMTQuMjVaTTMgNS4yNUwwLjc1IDcuNUwzIDkuNzVWNS4yNVpNMTQuMjUgNy41TDEyIDUuMjVWOS43NUwxNC4yNSA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxoPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04Ljg5MTQgMi4xOTM3QzkuMTE1OCAyLjM1NDY0IDkuMTY3MjUgMi42NjcwMSA5LjAwNjMxIDIuODkxNDFMMi40NzM4OCAxMkgxMy41QzEzLjc3NjEgMTIgMTQgMTIuMjIzOSAxNCAxMi41QzE0IDEyLjc3NjIgMTMuNzc2MSAxMyAxMy41IDEzSDEuNUMxLjMxMjU0IDEzIDEuMTQwODIgMTIuODk1MiAxLjA1NTIgMTIuNzI4NEMwLjk2OTU3OCAxMi41NjE2IDAuOTg0NDM4IDEyLjM2MSAxLjA5MzY5IDEyLjIwODZMOC4xOTM2OSAyLjMwODYyQzguMzU0NjIgMi4wODQyMiA4LjY2NyAyLjAzMjc3IDguODkxNCAyLjE5MzdaTTExLjEgNi41MDAwMUMxMS4xIDYuMjIzODcgMTEuMzIzOCA2LjAwMDAxIDExLjYgNi4wMDAwMUMxMS44NzYxIDYuMDAwMDEgMTIuMSA2LjIyMzg3IDEyLjEgNi41MDAwMUMxMi4xIDYuNzc2MTUgMTEuODc2MSA3LjAwMDAxIDExLjYgNy4wMDAwMUMxMS4zMjM4IDcuMDAwMDEgMTEuMSA2Ljc3NjE1IDExLjEgNi41MDAwMVpNMTAuNCA0LjAwMDAxQzEwLjEyMzkgNC4wMDAwMSA5LjkwMDAzIDQuMjIzODcgOS45MDAwMyA0LjUwMDAxQzkuOTAwMDMgNC43NzYxNSAxMC4xMjM5IDUuMDAwMDEgMTAuNCA1LjAwMDAxQzEwLjY3NjIgNS4wMDAwMSAxMC45IDQuNzc2MTUgMTAuOSA0LjUwMDAxQzEwLjkgNC4yMjM4NyAxMC42NzYyIDQuMDAwMDEgMTAuNCA0LjAwMDAxWk0xMi4xIDguNTAwMDFDMTIuMSA4LjIyMzg3IDEyLjMyMzggOC4wMDAwMSAxMi42IDguMDAwMDFDMTIuODc2MSA4LjAwMDAxIDEzLjEgOC4yMjM4NyAxMy4xIDguNTAwMDFDMTMuMSA4Ljc3NjE1IDEyLjg3NjEgOS4wMDAwMSAxMi42IDkuMDAwMDFDMTIuMzIzOCA5LjAwMDAxIDEyLjEgOC43NzYxNSAxMi4xIDguNTAwMDFaTTEzLjQgMTBDMTMuMTIzOSAxMCAxMi45IDEwLjIyMzkgMTIuOSAxMC41QzEyLjkgMTAuNzc2MSAxMy4xMjM5IDExIDEzLjQgMTFDMTMuNjc2MiAxMSAxMy45IDEwLjc3NjEgMTMuOSAxMC41QzEzLjkgMTAuMjIzOSAxMy42NzYyIDEwIDEzLjQgMTBaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx2PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjMwOTAyIDFDMi45MzAyNSAxIDIuNTgzOTggMS4yMTQgMi40MTQ1OSAxLjU1Mjc5TDEuMDUyNzkgNC4yNzYzOUMxLjAxODA3IDQuMzQ1ODIgMSA0LjQyMjM4IDEgNC41VjEzQzEgMTMuNTUyMyAxLjQ0NzcyIDE0IDIgMTRIMTNDMTMuNTUyMyAxNCAxNCAxMy41NTIzIDE0IDEzVjQuNUMxNCA0LjQyMjM4IDEzLjk4MTkgNC4zNDU4MiAxMy45NDcyIDQuMjc2MzlMMTIuNTg1NCAxLjU1MjgxQzEyLjQxNiAxLjIxNDAzIDEyLjA2OTggMS4wMDAwMyAxMS42OTEgMS4wMDAwM0w3LjUgMS4wMDAwMUwzLjMwOTAyIDFaTTMuMzA5MDIgMkw3IDIuMDAwMDFWNEgyLjMwOTAyTDMuMzA5MDIgMlpNOCA0VjIuMDAwMDJMMTEuNjkxIDIuMDAwMDNMMTIuNjkxIDRIOFpNNy41IDVIMTNWMTNIMlY1SDcuNVpNNS41IDdDNS4yMjM4NiA3IDUgNy4yMjM4NiA1IDcuNUM1IDcuNzc2MTQgNS4yMjM4NiA4IDUuNSA4SDkuNUM5Ljc3NjE0IDggMTAgNy43NzYxNCAxMCA3LjVDMTAgNy4yMjM4NiA5Ljc3NjE0IDcgOS41IDdINS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEuMzUzNiAzLjY0NjQ0QzExLjU0ODggMy44NDE3IDExLjU0ODggNC4xNTgyOCAxMS4zNTM2IDQuMzUzNTRMNC43MDcxMSAxMUw5IDExQzkuMjc2MTQgMTEgOS41IDExLjIyMzkgOS41IDExLjVDOS41IDExLjc3NjEgOS4yNzYxNCAxMiA5IDEyTDMuNSAxMkMzLjM2NzM5IDEyIDMuMjQwMjEgMTEuOTQ3MyAzLjE0NjQ1IDExLjg1MzZDMy4wNTI2OCAxMS43NTk4IDMgMTEuNjMyNiAzIDExLjVMMyA1Ljk5OTk5QzMgNS43MjM4NSAzLjIyMzg2IDUuNDk5OTkgMy41IDUuNDk5OTlDMy43NzYxNCA1LjQ5OTk5IDQgNS43MjM4NSA0IDUuOTk5OTlWMTAuMjkyOUwxMC42NDY0IDMuNjQ2NDNDMTAuODQxNyAzLjQ1MTE3IDExLjE1ODMgMy40NTExNyAxMS4zNTM2IDMuNjQ2NDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxDPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjY0NjQ1IDMuNjQ2NDRDMy40NTExOCAzLjg0MTcgMy40NTExOCA0LjE1ODI4IDMuNjQ2NDUgNC4zNTM1NEwxMC4yOTI5IDExTDYgMTFDNS43MjM4NiAxMSA1LjUgMTEuMjIzOSA1LjUgMTEuNUM1LjUgMTEuNzc2MSA1LjcyMzg2IDEyIDYgMTJMMTEuNSAxMkMxMS42MzI2IDEyIDExLjc1OTggMTEuOTQ3MyAxMS44NTM2IDExLjg1MzZDMTEuOTQ3MyAxMS43NTk4IDEyIDExLjYzMjYgMTIgMTEuNUwxMiA1Ljk5OTk5QzEyIDUuNzIzODUgMTEuNzc2MSA1LjQ5OTk5IDExLjUgNS40OTk5OUMxMS4yMjM5IDUuNDk5OTkgMTEgNS43MjM4NSAxMSA1Ljk5OTk5VjEwLjI5MjlMNC4zNTM1NSAzLjY0NjQzQzQuMTU4MjkgMy40NTExNyAzLjg0MTcxIDMuNDUxMTcgMy42NDY0NSAzLjY0NjQ0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDJDNy43NzYxNCAyIDggMi4yMjM4NiA4IDIuNUw4IDExLjI5MjlMMTEuMTQ2NCA4LjE0NjQ1QzExLjM0MTcgNy45NTExOCAxMS42NTgzIDcuOTUxMTggMTEuODUzNiA4LjE0NjQ1QzEyLjA0ODggOC4zNDE3MSAxMi4wNDg4IDguNjU4MjkgMTEuODUzNiA4Ljg1MzU1TDcuODUzNTUgMTIuODUzNkM3Ljc1OTc5IDEyLjk0NzMgNy42MzI2MSAxMyA3LjUgMTNDNy4zNjczOSAxMyA3LjI0MDIxIDEyLjk0NzMgNy4xNDY0NSAxMi44NTM2TDMuMTQ2NDUgOC44NTM1NUMyLjk1MTE4IDguNjU4MjkgMi45NTExOCA4LjM0MTcxIDMuMTQ2NDUgOC4xNDY0NUMzLjM0MTcxIDcuOTUxMTggMy42NTgyOSA3Ljk1MTE4IDMuODUzNTUgOC4xNDY0NUw3IDExLjI5MjlMNyAyLjVDNyAyLjIyMzg2IDcuMjIzODYgMiA3LjUgMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuODUzNTUgMy4xNDY0NUM3LjA0ODgyIDMuMzQxNzEgNy4wNDg4MiAzLjY1ODI5IDYuODUzNTUgMy44NTM1NUwzLjcwNzExIDdIMTIuNUMxMi43NzYxIDcgMTMgNy4yMjM4NiAxMyA3LjVDMTMgNy43NzYxNCAxMi43NzYxIDggMTIuNSA4SDMuNzA3MTFMNi44NTM1NSAxMS4xNDY0QzcuMDQ4ODIgMTEuMzQxNyA3LjA0ODgyIDExLjY1ODMgNi44NTM1NSAxMS44NTM2QzYuNjU4MjkgMTIuMDQ4OCA2LjM0MTcxIDEyLjA0ODggNi4xNDY0NSAxMS44NTM2TDIuMTQ2NDUgNy44NTM1NUMxLjk1MTE4IDcuNjU4MjkgMS45NTExOCA3LjM0MTcxIDIuMTQ2NDUgNy4xNDY0NUw2LjE0NjQ1IDMuMTQ2NDVDNi4zNDE3MSAyLjk1MTE4IDYuNjU4MjkgMi45NTExOCA2Ljg1MzU1IDMuMTQ2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx3PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjE0NjQ1IDMuMTQ2NDVDOC4zNDE3MSAyLjk1MTE4IDguNjU4MjkgMi45NTExOCA4Ljg1MzU1IDMuMTQ2NDVMMTIuODUzNiA3LjE0NjQ1QzEzLjA0ODggNy4zNDE3MSAxMy4wNDg4IDcuNjU4MjkgMTIuODUzNiA3Ljg1MzU1TDguODUzNTUgMTEuODUzNkM4LjY1ODI5IDEyLjA0ODggOC4zNDE3MSAxMi4wNDg4IDguMTQ2NDUgMTEuODUzNkM3Ljk1MTE4IDExLjY1ODMgNy45NTExOCAxMS4zNDE3IDguMTQ2NDUgMTEuMTQ2NEwxMS4yOTI5IDhIMi41QzIuMjIzODYgOCAyIDcuNzc2MTQgMiA3LjVDMiA3LjIyMzg2IDIuMjIzODYgNyAyLjUgN0gxMS4yOTI5TDguMTQ2NDUgMy44NTM1NUM3Ljk1MTE4IDMuNjU4MjkgNy45NTExOCAzLjM0MTcxIDguMTQ2NDUgMy4xNDY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjM1MzYgMTEuMzUzNkMxMS41NDg4IDExLjE1ODMgMTEuNTQ4OCAxMC44NDE3IDExLjM1MzYgMTAuNjQ2NUw0LjcwNzExIDRMOSA0QzkuMjc2MTQgNCA5LjUgMy43NzYxNCA5LjUgMy41QzkuNSAzLjIyMzg2IDkuMjc2MTQgMyA5IDNMMy41IDNDMy4zNjczOSAzIDMuMjQwMjEgMy4wNTI2OCAzLjE0NjQ1IDMuMTQ2NDVDMy4wNTI2OCAzLjI0MDIyIDMgMy4zNjczOSAzIDMuNUwzIDkuMDAwMDFDMyA5LjI3NjE1IDMuMjIzODYgOS41MDAwMSAzLjUgOS41MDAwMUMzLjc3NjE0IDkuNTAwMDEgNCA5LjI3NjE1IDQgOS4wMDAwMVY0LjcwNzExTDEwLjY0NjQgMTEuMzUzNkMxMC44NDE3IDExLjU0ODggMTEuMTU4MyAxMS41NDg4IDExLjM1MzYgMTEuMzUzNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHg9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNjQ2NDUgMTEuMzUzNkMzLjQ1MTE4IDExLjE1ODMgMy40NTExOCAxMC44NDE3IDMuNjQ2NDUgMTAuNjQ2NUwxMC4yOTI5IDRMNiA0QzUuNzIzODYgNCA1LjUgMy43NzYxNCA1LjUgMy41QzUuNSAzLjIyMzg2IDUuNzIzODYgMyA2IDNMMTEuNSAzQzExLjYzMjYgMyAxMS43NTk4IDMuMDUyNjggMTEuODUzNiAzLjE0NjQ1QzExLjk0NzMgMy4yNDAyMiAxMiAzLjM2NzM5IDEyIDMuNUwxMiA5LjAwMDAxQzEyIDkuMjc2MTUgMTEuNzc2MSA5LjUwMDAxIDExLjUgOS41MDAwMUMxMS4yMjM5IDkuNTAwMDEgMTEgOS4yNzYxNSAxMSA5LjAwMDAxVjQuNzA3MTFMNC4zNTM1NSAxMS4zNTM2QzQuMTU4MjkgMTEuNTQ4OCAzLjg0MTcxIDExLjU0ODggMy42NDY0NSAxMS4zNTM2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sXz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4xNDY0NSAyLjE0NjQ1QzcuMzQxNzEgMS45NTExOCA3LjY1ODI5IDEuOTUxMTggNy44NTM1NSAyLjE0NjQ1TDExLjg1MzYgNi4xNDY0NUMxMi4wNDg4IDYuMzQxNzEgMTIuMDQ4OCA2LjY1ODI5IDExLjg1MzYgNi44NTM1NUMxMS42NTgzIDcuMDQ4ODIgMTEuMzQxNyA3LjA0ODgyIDExLjE0NjQgNi44NTM1NUw4IDMuNzA3MTFMOCAxMi41QzggMTIuNzc2MSA3Ljc3NjE0IDEzIDcuNSAxM0M3LjIyMzg2IDEzIDcgMTIuNzc2MSA3IDEyLjVMNyAzLjcwNzExTDMuODUzNTUgNi44NTM1NUMzLjY1ODI5IDcuMDQ4ODIgMy4zNDE3MSA3LjA0ODgyIDMuMTQ2NDUgNi44NTM1NUMyLjk1MTE4IDYuNjU4MjkgMi45NTExOCA2LjM0MTcxIDMuMTQ2NDUgNi4xNDY0NUw3LjE0NjQ1IDIuMTQ2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxMPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjUgMkgxMi41QzEyLjc3NjEgMiAxMyAyLjIyMzg2IDEzIDIuNVYxMi41QzEzIDEyLjc3NjEgMTIuNzc2MSAxMyAxMi41IDEzSDIuNUMyLjIyMzg2IDEzIDIgMTIuNzc2MSAyIDEyLjVWMi41QzIgMi4yMjM4NiAyLjIyMzg2IDIgMi41IDJaTTEgMi41QzEgMS42NzE1NyAxLjY3MTU3IDEgMi41IDFIMTIuNUMxMy4zMjg0IDEgMTQgMS42NzE1NyAxNCAyLjVWMTIuNUMxNCAxMy4zMjg0IDEzLjMyODQgMTQgMTIuNSAxNEgyLjVDMS42NzE1NyAxNCAxIDEzLjMyODQgMSAxMi41VjIuNVpNNy41IDRDNy43NzYxNCA0IDggMy43NzYxNCA4IDMuNUM4IDMuMjIzODYgNy43NzYxNCAzIDcuNSAzQzcuMjIzODYgMyA3IDMuMjIzODYgNyAzLjVDNyAzLjc3NjE0IDcuMjIzODYgNCA3LjUgNFpNOCA1LjVDOCA1Ljc3NjE0IDcuNzc2MTQgNiA3LjUgNkM3LjIyMzg2IDYgNyA1Ljc3NjE0IDcgNS41QzcgNS4yMjM4NiA3LjIyMzg2IDUgNy41IDVDNy43NzYxNCA1IDggNS4yMjM4NiA4IDUuNVpNNy41IDhDNy43NzYxNCA4IDggNy43NzYxNCA4IDcuNUM4IDcuMjIzODYgNy43NzYxNCA3IDcuNSA3QzcuMjIzODYgNyA3IDcuMjIzODYgNyA3LjVDNyA3Ljc3NjE0IDcuMjIzODYgOCA3LjUgOFpNMTAgNy41QzEwIDcuNzc2MTQgOS43NzYxNCA4IDkuNSA4QzkuMjIzODYgOCA5IDcuNzc2MTQgOSA3LjVDOSA3LjIyMzg2IDkuMjIzODYgNyA5LjUgN0M5Ljc3NjE0IDcgMTAgNy4yMjM4NiAxMCA3LjVaTTExLjUgOEMxMS43NzYxIDggMTIgNy43NzYxNCAxMiA3LjVDMTIgNy4yMjM4NiAxMS43NzYxIDcgMTEuNSA3QzExLjIyMzkgNyAxMSA3LjIyMzg2IDExIDcuNUMxMSA3Ljc3NjE0IDExLjIyMzkgOCAxMS41IDhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxPPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzAxNCA3LjQ5OTg4QzAuODc3MDE0IDMuODQyMTkgMy44NDIxNiAwLjg3NzA0NSA3LjQ5OTg1IDAuODc3MDQ1QzExLjE1NzUgMC44NzcwNDUgMTQuMTIyNyAzLjg0MjE5IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDExLjE1NzUgMTEuMTU3NSAxNC4xMjI3IDcuNDk5ODUgMTQuMTIyN0MzLjg0MjE2IDE0LjEyMjcgMC44NzcwMTQgMTEuMTU3NSAwLjg3NzAxNCA3LjQ5OTg4Wk03LjQ5OTg1IDEuODI3MDRDNC4zNjY4MyAxLjgyNzA0IDEuODI3MDEgNC4zNjY4NiAxLjgyNzAxIDcuNDk5ODhDMS44MjcwMSA4Ljk3MTk2IDIuMzg3NzQgMTAuMzEzMSAzLjMwNzI3IDExLjMyMTNDNC4xOTA3NCA5Ljk0MTE5IDUuNzM4MTggOS4wMjQ5OSA3LjUwMDIzIDkuMDI0OTlDOS4yNjIwNiA5LjAyNDk5IDEwLjgwOTMgOS45NDA5NyAxMS42OTI5IDExLjMyMDhDMTIuNjEyMSAxMC4zMTI3IDEzLjE3MjcgOC45NzE3MiAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyA0LjM2Njg2IDEwLjYzMjggMS44MjcwNCA3LjQ5OTg1IDEuODI3MDRaTTEwLjk4MTggMTEuOTc4N0MxMC4yODM5IDEwLjc3OTUgOC45ODU3IDkuOTc0OTkgNy41MDAyMyA5Ljk3NDk5QzYuMDE0NTggOS45NzQ5OSA0LjcxNjI0IDEwLjc3OTcgNC4wMTg0NSAxMS45NzkxQzQuOTc5NTIgMTIuNzI3MiA2LjE4NzY1IDEzLjE3MjcgNy40OTk4NSAxMy4xNzI3QzguODEyMjcgMTMuMTcyNyAxMC4wMjA2IDEyLjcyNyAxMC45ODE4IDExLjk3ODdaTTUuMTQ5OTkgNi41MDQ4N0M1LjE0OTk5IDUuMjA3IDYuMjAyMTIgNC4xNTQ4NyA3LjQ5OTk5IDQuMTU0ODdDOC43OTc4NiA0LjE1NDg3IDkuODQ5OTkgNS4yMDcgOS44NDk5OSA2LjUwNDg3QzkuODQ5OTkgNy44MDI3NCA4Ljc5Nzg2IDguODU0ODcgNy40OTk5OSA4Ljg1NDg3QzYuMjAyMTIgOC44NTQ4NyA1LjE0OTk5IDcuODAyNzQgNS4xNDk5OSA2LjUwNDg3Wk03LjQ5OTk5IDUuMTA0ODdDNi43MjY3OSA1LjEwNDg3IDYuMDk5OTkgNS43MzE2NyA2LjA5OTk5IDYuNTA0ODdDNi4wOTk5OSA3LjI3ODA3IDYuNzI2NzkgNy45MDQ4NyA3LjQ5OTk5IDcuOTA0ODdDOC4yNzMxOSA3LjkwNDg3IDguODk5OTkgNy4yNzgwNyA4Ljg5OTk5IDYuNTA0ODdDOC44OTk5OSA1LjczMTY3IDguMjczMTkgNS4xMDQ4NyA3LjQ5OTk5IDUuMTA0ODdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxFPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDFDNSAwLjQ0NzcxNSA1LjQ0NzcyIDAgNiAwSDlDOS41NTIyOCAwIDEwIDAuNDQ3NzE1IDEwIDFWMkgxNEMxNC41NTIzIDIgMTUgMi40NDc3MiAxNSAzVjZDMTUgNi44ODg4IDE0LjYxMzEgNy42ODczNCAxNCA4LjIzNjA4VjExLjVDMTQgMTIuMzI4NCAxMy4zMjg0IDEzIDEyLjUgMTNIMi41QzEuNjcxNTcgMTMgMSAxMi4zMjg0IDEgMTEuNVY4LjIzNTlDMC4zODY5NyA3LjY4NzIxIDAgNi44ODg4MyAwIDZWM0MwIDIuNDQ3NzIgMC40NDc3MTYgMiAxIDJINVYxWk05IDFWMkg2VjFIOVpNMSAzSDVINS41SDkuNUgxMEgxNFY2QzE0IDYuNjU0IDEzLjY4NjYgNy4yMzQ2NyAxMy4xOTk3IDcuNjAwNEMxMi44NjU1IDcuODUxNDQgMTIuNDUwOCA4IDEyIDhIOFY3LjVDOCA3LjIyMzg2IDcuNzc2MTQgNyA3LjUgN0M3LjIyMzg2IDcgNyA3LjIyMzg2IDcgNy41VjhIM0MyLjU0OTMgOCAyLjEzNDYgNy44NTEzMyAxLjgwMDI5IDcuNjAwMjJDMS4zMTMzNSA3LjIzNDQ2IDEgNi42NTM5NiAxIDZWM1pNNyA5SDNDMi42NDk2MSA5IDIuMzEyOTIgOC45Mzk3MiAyIDguODI5MDVWMTEuNUMyIDExLjc3NjEgMi4yMjM4NiAxMiAyLjUgMTJIMTIuNUMxMi43NzYxIDEyIDEzIDExLjc3NjEgMTMgMTEuNVY4LjgyOTE1QzEyLjY4NzEgOC45Mzk3OCAxMi4zNTA0IDkgMTIgOUg4VjkuNUM4IDkuNzc2MTQgNy43NzYxNCAxMCA3LjUgMTBDNy4yMjM4NiAxMCA3IDkuNzc2MTQgNyA5LjVWOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNSA2SDExLjVDMTIuMzI4NCA2IDEzIDYuNjcxNTcgMTMgNy41QzEzIDguMzI4NDMgMTIuMzI4NCA5IDExLjUgOUgzLjVDMi42NzE1NyA5IDIgOC4zMjg0MyAyIDcuNUMyIDYuNjcxNTcgMi42NzE1NyA2IDMuNSA2Wk0xIDcuNUMxIDYuMTE5MjkgMi4xMTkyOSA1IDMuNSA1SDExLjVDMTIuODgwNyA1IDE0IDYuMTE5MjkgMTQgNy41QzE0IDguODgwNzEgMTIuODgwNyAxMCAxMS41IDEwSDMuNUMyLjExOTI5IDEwIDEgOC44ODA3MSAxIDcuNVpNNC41IDdDNC4yMjM4NiA3IDQgNy4yMjM4NiA0IDcuNUM0IDcuNzc2MTQgNC4yMjM4NiA4IDQuNSA4SDEwLjVDMTAuNzc2MSA4IDExIDcuNzc2MTQgMTEgNy41QzExIDcuMjIzODYgMTAuNzc2MSA3IDEwLjUgN0g0LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxNPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS41IDFDMTEuNzc2MSAxIDEyIDEuMjIzODYgMTIgMS41VjEzLjVDMTIgMTMuNzc2MSAxMS43NzYxIDE0IDExLjUgMTRDMTEuMjIzOSAxNCAxMSAxMy43NzYxIDExIDEzLjVWMS41QzExIDEuMjIzODYgMTEuMjIzOSAxIDExLjUgMVpNOS41IDNDOS43NzYxNCAzIDEwIDMuMjIzODYgMTAgMy41VjEzLjVDMTAgMTMuNzc2MSA5Ljc3NjE0IDE0IDkuNSAxNEM5LjIyMzg2IDE0IDkgMTMuNzc2MSA5IDEzLjVWMy41QzkgMy4yMjM4NiA5LjIyMzg2IDMgOS41IDNaTTEzLjUgM0MxMy43NzYxIDMgMTQgMy4yMjM4NiAxNCAzLjVWMTMuNUMxNCAxMy43NzYxIDEzLjc3NjEgMTQgMTMuNSAxNEMxMy4yMjM5IDE0IDEzIDEzLjc3NjEgMTMgMTMuNVYzLjVDMTMgMy4yMjM4NiAxMy4yMjM5IDMgMTMuNSAzWk01LjUgNEM1Ljc3NjE0IDQgNiA0LjIyMzg2IDYgNC41VjEzLjVDNiAxMy43NzYxIDUuNzc2MTQgMTQgNS41IDE0QzUuMjIzODYgMTQgNSAxMy43NzYxIDUgMTMuNVY0LjVDNSA0LjIyMzg2IDUuMjIzODYgNCA1LjUgNFpNMS41IDVDMS43NzYxNCA1IDIgNS4yMjM4NiAyIDUuNVYxMy41QzIgMTMuNzc2MSAxLjc3NjE0IDE0IDEuNSAxNEMxLjIyMzg2IDE0IDEgMTMuNzc2MSAxIDEzLjVWNS41QzEgNS4yMjM4NiAxLjIyMzg2IDUgMS41IDVaTTcuNSA1QzcuNzc2MTQgNSA4IDUuMjIzODYgOCA1LjVWMTMuNUM4IDEzLjc3NjEgNy43NzYxNCAxNCA3LjUgMTRDNy4yMjM4NiAxNCA3IDEzLjc3NjEgNyAxMy41VjUuNUM3IDUuMjIzODYgNy4yMjM4NiA1IDcuNSA1Wk0zLjUgN0MzLjc3NjE0IDcgNCA3LjIyMzg2IDQgNy41VjEzLjVDNCAxMy43NzYxIDMuNzc2MTQgMTQgMy41IDE0QzMuMjIzODYgMTQgMyAxMy43NzYxIDMgMTMuNVY3LjVDMyA3LjIyMzg2IDMuMjIzODYgNyAzLjUgN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGo9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguNjAxMjQgMS4yNTA4NkM4LjYwMTI0IDEuNzU0NTkgOC4yNjI3OCAyLjE3OTI3IDcuODAwODcgMi4zMDk4OUMxMC4xNDU5IDIuNDY0NyAxMiA0LjQxNTgyIDEyIDYuNzk5OTlWMTAuMjVDMTIgMTEuMDU2MyAxMi4wMzI5IDExLjcwNzQgMTIuNzIzNiAxMi4wNTI4QzEyLjkzMSAxMi4xNTY1IDEzLjAzOTkgMTIuMzg5MiAxMi45ODY2IDEyLjYxNDlDMTIuOTMzMyAxMi44NDA2IDEyLjczMTkgMTMgMTIuNSAxM0g4LjE2MTQ0QzguMzY5MDQgMTMuMTgzMiA4LjQ5OTk3IDEzLjQ1MTMgOC40OTk5NyAxMy43NUM4LjQ5OTk3IDE0LjMwMjMgOC4wNTIyNiAxNC43NSA3LjQ5OTk3IDE0Ljc1QzYuOTQ3NjkgMTQuNzUgNi40OTk5NyAxNC4zMDIzIDYuNDk5OTcgMTMuNzVDNi40OTk5NyAxMy40NTEzIDYuNjMwOTEgMTMuMTgzMiA2LjgzODUxIDEzSDIuNDk5OTlDMi4yNjgxIDEzIDIuMDY2NjQgMTIuODQwNiAyLjAxMzM2IDEyLjYxNDlDMS45NjAwOSAxMi4zODkyIDIuMDY4OTcgMTIuMTU2NSAyLjI3NjM4IDEyLjA1MjhDMi45NjcwOCAxMS43MDc0IDIuOTk5OTkgMTEuMDU2MyAyLjk5OTk5IDEwLjI1VjYuNzk5OTlDMi45OTk5OSA0LjQxNTM3IDQuODU0ODEgMi40NjM5NiA3LjIwMDQyIDIuMzA5OEM2LjczODY3IDIuMTc5MDggNi40MDAzNiAxLjc1NDQ4IDYuNDAwMzYgMS4yNTA4NkM2LjQwMDM2IDAuNjQzMTA0IDYuODkzMDQgMC4xNTA0MjEgNy41MDA4IDAuMTUwNDIxQzguMTA4NTUgMC4xNTA0MjEgOC42MDEyNCAwLjY0MzEwNCA4LjYwMTI0IDEuMjUwODZaTTcuNDk5OTkgMy4yOTk5OUM1LjU2Njk5IDMuMjk5OTkgMy45OTk5OSA0Ljg2Njk5IDMuOTk5OTkgNi43OTk5OVYxMC4yNUw0LjAwMDAyIDEwLjMwMDlDNC4wMDA1IDEwLjc0NjMgNC4wMDEyMSAxMS40MDg0IDMuNjk5MjkgMTJIMTEuMzAwN0MxMC45OTg4IDExLjQwODQgMTAuOTk5NSAxMC43NDYzIDExIDEwLjMwMDlMMTEgMTAuMjVWNi43OTk5OUMxMSA0Ljg2Njk5IDkuNDMyOTkgMy4yOTk5OSA3LjQ5OTk5IDMuMjk5OTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxrPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zIDlDMyA2LjUgNC41IDQuMjUgNy41IDEuNUMxMC41IDQuMjUgMTIgNi41IDEyIDlDMTIgMTEuNDg1MyA5Ljk4NTI4IDEzLjUgNy41IDEzLjVDNS4wMTQ3MiAxMy41IDMgMTEuNDg1MyAzIDlaTTEwLjk1MjQgOC4zMDMwN0M5LjY3MzQ3IDcuODIxMjEgOC4yODc5IDguNDYyMDggNi45ODk1NiA5LjA2MjU5QzUuOTMyNyA5LjU1MTQyIDQuOTMzNjUgMTAuMDEzNSA0LjA5Njk1IDkuODIxNTNDNC4wMzM1NyA5LjU1ODA0IDQgOS4yODI5NCA0IDlDNCA3LjExMjAzIDUuMDI2ODYgNS4yNzE5NSA3LjUgMi44NzM1N0M5LjY2ODM3IDQuOTc2MzkgMTAuNzI1IDYuNjUwMDQgMTAuOTUyNCA4LjMwMzA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyAyLjVDMyAyLjIyMzg2IDMuMjIzODYgMiAzLjUgMkgxMS41QzExLjc3NjEgMiAxMiAyLjIyMzg2IDEyIDIuNVYxMy41QzEyIDEzLjY4MTggMTEuOTAxNCAxMy44NDkyIDExLjc0MjQgMTMuOTM3M0MxMS41ODM0IDE0LjAyNTQgMTEuMzg5MSAxNC4wMjAzIDExLjIzNSAxMy45MjRMNy41IDExLjU4OTZMMy43NjUgMTMuOTI0QzMuNjEwODcgMTQuMDIwMyAzLjQxNjU5IDE0LjAyNTQgMy4yNTc2MiAxMy45MzczQzMuMDk4NjQgMTMuODQ5MiAzIDEzLjY4MTggMyAxMy41VjIuNVpNNCAzVjEyLjU5NzlMNi45NyAxMC43NDE2QzcuMjk0MjcgMTAuNTM5IDcuNzA1NzMgMTAuNTM5IDguMDMgMTAuNzQxNkwxMSAxMi41OTc5VjNINFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFA9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuMjUgMUMwLjI1IDAuNTg1Nzg2IDAuNTg1Nzg2IDAuMjUgMSAwLjI1SDE0QzE0LjQxNDIgMC4yNSAxNC43NSAwLjU4NTc4NiAxNC43NSAxVjE0QzE0Ljc1IDE0LjQxNDIgMTQuNDE0MiAxNC43NSAxNCAxNC43NUgxQzAuNTg1Nzg2IDE0Ljc1IDAuMjUgMTQuNDE0MiAwLjI1IDE0VjFaTTEuNzUgMS43NVYxMy4yNUgxMy4yNVYxLjc1SDEuNzVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjVcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjNcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjExXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjlcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjExXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSl9LEE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgMTMuMjVMMTQgMTMuMjVWMTQuNzVMMSAxNC43NVYxMy4yNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjVcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjVcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjNcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjNcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjExXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI5XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiOVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMTFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCIxMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiOVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiMTFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pKX0sST1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMCA3LjVDMCA3LjIyMzg2IDAuMjIzODU4IDcgMC41IDdIM0MzLjI3NjE0IDcgMy41IDcuMjIzODYgMy41IDcuNUMzLjUgNy43NzYxNCAzLjI3NjE0IDggMyA4SDAuNUMwLjIyMzg1OCA4IDAgNy43NzYxNCAwIDcuNVpNNS43NSA3LjVDNS43NSA3LjIyMzg2IDUuOTczODYgNyA2LjI1IDdIOC43NUM5LjAyNjE0IDcgOS4yNSA3LjIyMzg2IDkuMjUgNy41QzkuMjUgNy43NzYxNCA5LjAyNjE0IDggOC43NSA4SDYuMjVDNS45NzM4NiA4IDUuNzUgNy43NzYxNCA1Ljc1IDcuNVpNMTIgN0MxMS43MjM5IDcgMTEuNSA3LjIyMzg2IDExLjUgNy41QzExLjUgNy43NzYxNCAxMS43MjM5IDggMTIgOEgxNC41QzE0Ljc3NjEgOCAxNSA3Ljc3NjE0IDE1IDcuNUMxNSA3LjIyMzg2IDE0Ljc3NjEgNyAxNC41IDdIMTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxUPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjUgNi42MjVDMS4wMTY3NSA2LjYyNSAwLjYyNSA3LjAxNjc1IDAuNjI1IDcuNUMwLjYyNSA3Ljk4MzI1IDEuMDE2NzUgOC4zNzUgMS41IDguMzc1QzEuOTgzMjUgOC4zNzUgMi4zNzUgNy45ODMyNSAyLjM3NSA3LjVDMi4zNzUgNy4wMTY3NSAxLjk4MzI1IDYuNjI1IDEuNSA2LjYyNVpNNS41IDYuNjI1QzUuMDE2NzUgNi42MjUgNC42MjUgNy4wMTY3NSA0LjYyNSA3LjVDNC42MjUgNy45ODMyNSA1LjAxNjc1IDguMzc1IDUuNSA4LjM3NUM1Ljk4MzI1IDguMzc1IDYuMzc1IDcuOTgzMjUgNi4zNzUgNy41QzYuMzc1IDcuMDE2NzUgNS45ODMyNSA2LjYyNSA1LjUgNi42MjVaTTkuNSA2LjYyNUM5LjAxNjc1IDYuNjI1IDguNjI1IDcuMDE2NzUgOC42MjUgNy41QzguNjI1IDcuOTgzMjUgOS4wMTY3NSA4LjM3NSA5LjUgOC4zNzVDOS45ODMyNSA4LjM3NSAxMC4zNzUgNy45ODMyNSAxMC4zNzUgNy41QzEwLjM3NSA3LjAxNjc1IDkuOTgzMjUgNi42MjUgOS41IDYuNjI1Wk0xMi42MjUgNy41QzEyLjYyNSA3LjAxNjc1IDEzLjAxNjggNi42MjUgMTMuNSA2LjYyNUMxMy45ODMyIDYuNjI1IDE0LjM3NSA3LjAxNjc1IDE0LjM3NSA3LjVDMTQuMzc1IDcuOTgzMjUgMTMuOTgzMiA4LjM3NSAxMy41IDguMzc1QzEzLjAxNjggOC4zNzUgMTIuNjI1IDcuOTgzMjUgMTIuNjI1IDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEg9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNzUgMUwxLjc1IDE0TDAuMjQ5OTk5IDE0TDAuMjUgMUwxLjc1IDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEwXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxMCA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMFwiLHk6XCIxM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDEwIDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMlwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTIgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTJcIix5OlwiMTNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxMiAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgOCA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTQgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCIxM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDggMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjEzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTQgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDggNSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDUpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDggMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiOVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDggOSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiOVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDkpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiMTFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDExKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCIxMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDExKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI2XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA2IDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjZcIix5OlwiMTNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA2IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI0XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA0IDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjRcIix5OlwiMTNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA0IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMFwiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTAgMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTJcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDEyIDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDggMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjZcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDYgMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNFwiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgNCAxKVwiLGZpbGw6bn0pKX0sVj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjUuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiNS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCIxMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCIxLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjVcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjVcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiM1wiLHk6XCIxMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOVwiLHk6XCIxLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjExXCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTFcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTFcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjkuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiOS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjExLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjExLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiNS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCIxLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiOS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjExLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSkpfSxCPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy4yNSAxTDEzLjI1IDE0TDE0Ljc1IDE0TDE0Ljc1IDFMMTMuMjUgMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDUgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDUgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAzIDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAzIDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDEgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA3IDUpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxIDUpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA3IDMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxIDMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA3IDkpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxIDkpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA3IDExKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSAxMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDkgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDkgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxMSA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMTEgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA1IDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAzIDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA3IDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxIDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA5IDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxMSAxKVwiLGZpbGw6bn0pKX0sRD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS4yNSA3LjVDMS4yNSA3LjIyMzg2IDEuNDczODYgNyAxLjc1IDdIMTMuMjVDMTMuNTI2MSA3IDEzLjc1IDcuMjIzODYgMTMuNzUgNy41QzEzLjc1IDcuNzc2MTQgMTMuNTI2MSA4IDEzLjI1IDhIMS43NUMxLjQ3Mzg2IDggMS4yNSA3Ljc3NjE0IDEuMjUgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjUuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjVcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjExXCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI5LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMTEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDEuNDk5OTRDMSAxLjIyMzggMS4yMjM4NiAwLjk5OTkzOSAxLjUgMC45OTk5MzlINlYxLjk5OTk0SDJWNS45OTk5NEgxVjEuNDk5OTRaTTEzIDEuOTk5OTRIOVYwLjk5OTkzOUgxMy41QzEzLjc3NjEgMC45OTk5MzkgMTQgMS4yMjM4IDE0IDEuNDk5OTRWNS45OTk5NEgxM1YxLjk5OTk0Wk0xIDEzLjQ5OTlWOC45OTk5NEgyVjEyLjk5OTlINlYxMy45OTk5SDEuNUMxLjIyMzg2IDEzLjk5OTkgMSAxMy43NzYxIDEgMTMuNDk5OVpNMTMgMTIuOTk5OVY4Ljk5OTk0SDE0VjEzLjQ5OTlDMTQgMTMuNzc2MSAxMy43NzYxIDEzLjk5OTkgMTMuNSAxMy45OTk5SDkuNVYxMi45OTk5SDEzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sJD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41IDNDMS4yMjM4NiAzIDEgMy4yMjM4NiAxIDMuNUMxIDMuNzc2MTQgMS4yMjM4NiA0IDEuNSA0SDEzLjVDMTMuNzc2MSA0IDE0IDMuNzc2MTQgMTQgMy41QzE0IDMuMjIzODYgMTMuNzc2MSAzIDEzLjUgM0gxLjVaTTEgNy41QzEgNy4yMjM4NiAxLjIyMzg2IDcgMS41IDdIMy41QzMuNzc2MTQgNyA0IDcuMjIzODYgNCA3LjVDNCA3Ljc3NjE0IDMuNzc2MTQgOCAzLjUgOEgxLjVDMS4yMjM4NiA4IDEgNy43NzYxNCAxIDcuNVpNMSAxMS41QzEgMTEuMjIzOSAxLjIyMzg2IDExIDEuNSAxMUMxLjc3NjE0IDExIDIgMTEuMjIzOSAyIDExLjVDMiAxMS43NzYxIDEuNzc2MTQgMTIgMS41IDEyQzEuMjIzODYgMTIgMSAxMS43NzYxIDEgMTEuNVpNMyAxMS41QzMgMTEuMjIzOSAzLjIyMzg2IDExIDMuNSAxMUMzLjc3NjE0IDExIDQgMTEuMjIzOSA0IDExLjVDNCAxMS43NzYxIDMuNzc2MTQgMTIgMy41IDEyQzMuMjIzODYgMTIgMyAxMS43NzYxIDMgMTEuNVpNNS41IDExQzUuMjIzODYgMTEgNSAxMS4yMjM5IDUgMTEuNUM1IDExLjc3NjEgNS4yMjM4NiAxMiA1LjUgMTJDNS43NzYxNCAxMiA2IDExLjc3NjEgNiAxMS41QzYgMTEuMjIzOSA1Ljc3NjE0IDExIDUuNSAxMVpNNyAxMS41QzcgMTEuMjIzOSA3LjIyMzg2IDExIDcuNSAxMUM3Ljc3NjE0IDExIDggMTEuMjIzOSA4IDExLjVDOCAxMS43NzYxIDcuNzc2MTQgMTIgNy41IDEyQzcuMjIzODYgMTIgNyAxMS43NzYxIDcgMTEuNVpNOS41IDExQzkuMjIzODYgMTEgOSAxMS4yMjM5IDkgMTEuNUM5IDExLjc3NjEgOS4yMjM4NiAxMiA5LjUgMTJDOS43NzYxNCAxMiAxMCAxMS43NzYxIDEwIDExLjVDMTAgMTEuMjIzOSA5Ljc3NjE0IDExIDkuNSAxMVpNMTEgMTEuNUMxMSAxMS4yMjM5IDExLjIyMzkgMTEgMTEuNSAxMUMxMS43NzYxIDExIDEyIDExLjIyMzkgMTIgMTEuNUMxMiAxMS43NzYxIDExLjc3NjEgMTIgMTEuNSAxMkMxMS4yMjM5IDEyIDExIDExLjc3NjEgMTEgMTEuNVpNMTMuNSAxMUMxMy4yMjM5IDExIDEzIDExLjIyMzkgMTMgMTEuNUMxMyAxMS43NzYxIDEzLjIyMzkgMTIgMTMuNSAxMkMxMy43NzYxIDEyIDE0IDExLjc3NjEgMTQgMTEuNUMxNCAxMS4yMjM5IDEzLjc3NjEgMTEgMTMuNSAxMVpNNi41IDdDNi4yMjM4NiA3IDYgNy4yMjM4NiA2IDcuNUM2IDcuNzc2MTQgNi4yMjM4NiA4IDYuNSA4SDguNUM4Ljc3NjE0IDggOSA3Ljc3NjE0IDkgNy41QzkgNy4yMjM4NiA4Ljc3NjE0IDcgOC41IDdINi41Wk0xMSA3LjVDMTEgNy4yMjM4NiAxMS4yMjM5IDcgMTEuNSA3SDEzLjVDMTMuNzc2MSA3IDE0IDcuMjIzODYgMTQgNy41QzE0IDcuNzc2MTQgMTMuNzc2MSA4IDEzLjUgOEgxMS41QzExLjIyMzkgOCAxMSA3Ljc3NjE0IDExIDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0IDEuNzVMMSAxLjc1TDEgMC4yNDk5OTlMMTQgMC4yNUwxNCAxLjc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjEwXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA4IDEwKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIyXCIseTpcIjEwXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAyIDEwKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjEyXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA4IDEyKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIyXCIseTpcIjEyXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAyIDEyKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjhcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDggOClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCIxNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgOCAxNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMlwiLHk6XCI4XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAyIDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjJcIix5OlwiMTRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDIgMTQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEwXCIseTpcIjhcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDEwIDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEwXCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxMCAxNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTJcIix5OlwiOFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTIgOClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTJcIix5OlwiMTRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDEyIDE0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI2XCIseTpcIjhcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDYgOClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNlwiLHk6XCIxNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgNiAxNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNFwiLHk6XCI4XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA0IDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjRcIix5OlwiMTRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDQgMTQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiNlwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgOCA2KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIyXCIseTpcIjZcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDIgNilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCI0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA4IDQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjJcIix5OlwiNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMiA0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCIxMFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTQgMTApXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjEyXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxNCAxMilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiOFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTQgOClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiMTRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDE0IDE0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCI2XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxNCA2KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCI0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxNCA0KVwiLGZpbGw6bn0pKX0sTj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTIuNSAySDIuNUMyLjIyMzg2IDIgMiAyLjIyMzg2IDIgMi41VjEyLjVDMiAxMi43NzYxIDIuMjIzODYgMTMgMi41IDEzSDEyLjVDMTIuNzc2MSAxMyAxMyAxMi43NzYxIDEzIDEyLjVWMi41QzEzIDIuMjIzODYgMTIuNzc2MSAyIDEyLjUgMlpNMi41IDFDMS42NzE1NyAxIDEgMS42NzE1NyAxIDIuNVYxMi41QzEgMTMuMzI4NCAxLjY3MTU3IDE0IDIuNSAxNEgxMi41QzEzLjMyODQgMTQgMTQgMTMuMzI4NCAxNCAxMi41VjIuNUMxNCAxLjY3MTU3IDEzLjMyODQgMSAxMi41IDFIMi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS45OTk5OCAwLjk5OTk3NkMxLjQ0NzY5IDAuOTk5OTc2IDAuOTk5OTc2IDEuNDQ3NjkgMC45OTk5NzYgMS45OTk5OFYxM0MwLjk5OTk3NiAxMy41NTIzIDEuNDQ3NjkgMTQgMS45OTk5OCAxNEgxM0MxMy41NTIzIDE0IDE0IDEzLjU1MjMgMTQgMTNWMS45OTk5OEMxNCAxLjQ0NzY5IDEzLjU1MjMgMC45OTk5NzYgMTMgMC45OTk5NzZIMS45OTk5OFpNMS45OTk5OCAxLjk5OTk4TDEzIDEuOTk5OThWMTNIMS45OTk5OFYxLjk5OTk4Wk00LjQ5OTk2IDMuOTk5OTZDNC4yMjM4MiAzLjk5OTk2IDMuOTk5OTYgNC4yMjM4MiAzLjk5OTk2IDQuNDk5OTZWMTAuNUMzLjk5OTk2IDEwLjc3NjEgNC4yMjM4MiAxMSA0LjQ5OTk2IDExSDEwLjVDMTAuNzc2MSAxMSAxMSAxMC43NzYxIDExIDEwLjVWNC40OTk5NkMxMSA0LjIyMzgyIDEwLjc3NjEgMy45OTk5NiAxMC41IDMuOTk5OTZINC40OTk5NlpNNC45OTk5NiA5Ljk5OTk2VjQuOTk5OTZIOS45OTk5NlY5Ljk5OTk2SDQuOTk5OTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxXPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDVIMTNDMTMuNTUyMyA1IDE0IDUuNDQ3NzIgMTQgNlY5QzE0IDkuNTUyMjggMTMuNTUyMyAxMCAxMyAxMEgyQzEuNDQ3NzIgMTAgMSA5LjU1MjI4IDEgOVY2QzEgNS40NDc3MiAxLjQ0NzcyIDUgMiA1Wk0wIDZDMCA0Ljg5NTQzIDAuODk1NDMxIDQgMiA0SDEzQzE0LjEwNDYgNCAxNSA0Ljg5NTQzIDE1IDZWOUMxNSAxMC4xMDQ2IDE0LjEwNDYgMTEgMTMgMTFIMkMwLjg5NTQzIDExIDAgMTAuMTA0NiAwIDlWNlpNNC41IDYuNzVDNC4wODU3OSA2Ljc1IDMuNzUgNy4wODU3OSAzLjc1IDcuNUMzLjc1IDcuOTE0MjEgNC4wODU3OSA4LjI1IDQuNSA4LjI1QzQuOTE0MjEgOC4yNSA1LjI1IDcuOTE0MjEgNS4yNSA3LjVDNS4yNSA3LjA4NTc5IDQuOTE0MjEgNi43NSA0LjUgNi43NVpNNi43NSA3LjVDNi43NSA3LjA4NTc5IDcuMDg1NzkgNi43NSA3LjUgNi43NUM3LjkxNDIxIDYuNzUgOC4yNSA3LjA4NTc5IDguMjUgNy41QzguMjUgNy45MTQyMSA3LjkxNDIxIDguMjUgNy41IDguMjVDNy4wODU3OSA4LjI1IDYuNzUgNy45MTQyMSA2Ljc1IDcuNVpNMTAuNSA2Ljc1QzEwLjA4NTggNi43NSA5Ljc1IDcuMDg1NzkgOS43NSA3LjVDOS43NSA3LjkxNDIxIDEwLjA4NTggOC4yNSAxMC41IDguMjVDMTAuOTE0MiA4LjI1IDExLjI1IDcuOTE0MjEgMTEuMjUgNy41QzExLjI1IDcuMDg1NzkgMTAuOTE0MiA2Ljc1IDEwLjUgNi43NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHo9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNSAxQzQuNzc2MTQgMSA1IDEuMjIzODYgNSAxLjVWMkgxMFYxLjVDMTAgMS4yMjM4NiAxMC4yMjM5IDEgMTAuNSAxQzEwLjc3NjEgMSAxMSAxLjIyMzg2IDExIDEuNVYySDEyLjVDMTMuMzI4NCAyIDE0IDIuNjcxNTcgMTQgMy41VjEyLjVDMTQgMTMuMzI4NCAxMy4zMjg0IDE0IDEyLjUgMTRIMi41QzEuNjcxNTcgMTQgMSAxMy4zMjg0IDEgMTIuNVYzLjVDMSAyLjY3MTU3IDEuNjcxNTcgMiAyLjUgMkg0VjEuNUM0IDEuMjIzODYgNC4yMjM4NiAxIDQuNSAxWk0xMCAzVjMuNUMxMCAzLjc3NjE0IDEwLjIyMzkgNCAxMC41IDRDMTAuNzc2MSA0IDExIDMuNzc2MTQgMTEgMy41VjNIMTIuNUMxMi43NzYxIDMgMTMgMy4yMjM4NiAxMyAzLjVWNUgyVjMuNUMyIDMuMjIzODYgMi4yMjM4NiAzIDIuNSAzSDRWMy41QzQgMy43NzYxNCA0LjIyMzg2IDQgNC41IDRDNC43NzYxNCA0IDUgMy43NzYxNCA1IDMuNVYzSDEwWk0yIDZWMTIuNUMyIDEyLjc3NjEgMi4yMjM4NiAxMyAyLjUgMTNIMTIuNUMxMi43NzYxIDEzIDEzIDEyLjc3NjEgMTMgMTIuNVY2SDJaTTcgNy41QzcgNy4yMjM4NiA3LjIyMzg2IDcgNy41IDdDNy43NzYxNCA3IDggNy4yMjM4NiA4IDcuNUM4IDcuNzc2MTQgNy43NzYxNCA4IDcuNSA4QzcuMjIzODYgOCA3IDcuNzc2MTQgNyA3LjVaTTkuNSA3QzkuMjIzODYgNyA5IDcuMjIzODYgOSA3LjVDOSA3Ljc3NjE0IDkuMjIzODYgOCA5LjUgOEM5Ljc3NjE0IDggMTAgNy43NzYxNCAxMCA3LjVDMTAgNy4yMjM4NiA5Ljc3NjE0IDcgOS41IDdaTTExIDcuNUMxMSA3LjIyMzg2IDExLjIyMzkgNyAxMS41IDdDMTEuNzc2MSA3IDEyIDcuMjIzODYgMTIgNy41QzEyIDcuNzc2MTQgMTEuNzc2MSA4IDExLjUgOEMxMS4yMjM5IDggMTEgNy43NzYxNCAxMSA3LjVaTTExLjUgOUMxMS4yMjM5IDkgMTEgOS4yMjM4NiAxMSA5LjVDMTEgOS43NzYxNCAxMS4yMjM5IDEwIDExLjUgMTBDMTEuNzc2MSAxMCAxMiA5Ljc3NjE0IDEyIDkuNUMxMiA5LjIyMzg2IDExLjc3NjEgOSAxMS41IDlaTTkgOS41QzkgOS4yMjM4NiA5LjIyMzg2IDkgOS41IDlDOS43NzYxNCA5IDEwIDkuMjIzODYgMTAgOS41QzEwIDkuNzc2MTQgOS43NzYxNCAxMCA5LjUgMTBDOS4yMjM4NiAxMCA5IDkuNzc2MTQgOSA5LjVaTTcuNSA5QzcuMjIzODYgOSA3IDkuMjIzODYgNyA5LjVDNyA5Ljc3NjE0IDcuMjIzODYgMTAgNy41IDEwQzcuNzc2MTQgMTAgOCA5Ljc3NjE0IDggOS41QzggOS4yMjM4NiA3Ljc3NjE0IDkgNy41IDlaTTUgOS41QzUgOS4yMjM4NiA1LjIyMzg2IDkgNS41IDlDNS43NzYxNCA5IDYgOS4yMjM4NiA2IDkuNUM2IDkuNzc2MTQgNS43NzYxNCAxMCA1LjUgMTBDNS4yMjM4NiAxMCA1IDkuNzc2MTQgNSA5LjVaTTMuNSA5QzMuMjIzODYgOSAzIDkuMjIzODYgMyA5LjVDMyA5Ljc3NjE0IDMuMjIzODYgMTAgMy41IDEwQzMuNzc2MTQgMTAgNCA5Ljc3NjE0IDQgOS41QzQgOS4yMjM4NiAzLjc3NjE0IDkgMy41IDlaTTMgMTEuNUMzIDExLjIyMzkgMy4yMjM4NiAxMSAzLjUgMTFDMy43NzYxNCAxMSA0IDExLjIyMzkgNCAxMS41QzQgMTEuNzc2MSAzLjc3NjE0IDEyIDMuNSAxMkMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVaTTUuNSAxMUM1LjIyMzg2IDExIDUgMTEuMjIzOSA1IDExLjVDNSAxMS43NzYxIDUuMjIzODYgMTIgNS41IDEyQzUuNzc2MTQgMTIgNiAxMS43NzYxIDYgMTEuNUM2IDExLjIyMzkgNS43NzYxNCAxMSA1LjUgMTFaTTcgMTEuNUM3IDExLjIyMzkgNy4yMjM4NiAxMSA3LjUgMTFDNy43NzYxNCAxMSA4IDExLjIyMzkgOCAxMS41QzggMTEuNzc2MSA3Ljc3NjE0IDEyIDcuNSAxMkM3LjIyMzg2IDEyIDcgMTEuNzc2MSA3IDExLjVaTTkuNSAxMUM5LjIyMzg2IDExIDkgMTEuMjIzOSA5IDExLjVDOSAxMS43NzYxIDkuMjIzODYgMTIgOS41IDEyQzkuNzc2MTQgMTIgMTAgMTEuNzc2MSAxMCAxMS41QzEwIDExLjIyMzkgOS43NzYxNCAxMSA5LjUgMTFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxHPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDNDMS40NDc3MiAzIDEgMy40NDc3MiAxIDRWMTFDMSAxMS41NTIzIDEuNDQ3NzIgMTIgMiAxMkgxM0MxMy41NTIzIDEyIDE0IDExLjU1MjMgMTQgMTFWNEMxNCAzLjQ0NzcyIDEzLjU1MjMgMyAxMyAzSDJaTTAgNEMwIDIuODk1NDMgMC44OTU0MzEgMiAyIDJIMTNDMTQuMTA0NiAyIDE1IDIuODk1NDMgMTUgNFYxMUMxNSAxMi4xMDQ2IDE0LjEwNDYgMTMgMTMgMTNIMkMwLjg5NTQzMSAxMyAwIDEyLjEwNDYgMCAxMVY0Wk0yIDQuMjVDMiA0LjExMTkzIDIuMTExOTMgNCAyLjI1IDRINC43NUM0Ljg4ODA3IDQgNSA0LjExMTkzIDUgNC4yNVY1Ljc1NDU0QzUgNS44OTI2MSA0Ljg4ODA3IDYuMDA0NTQgNC43NSA2LjAwNDU0SDIuMjVDMi4xMTE5MyA2LjAwNDU0IDIgNS44OTI2MSAyIDUuNzU0NTRWNC4yNVpNMTIuMTAxIDcuNTg0MjFDMTIuMTAxIDkuMDIwNzMgMTAuOTM2NSAxMC4xODUzIDkuNDk5OTggMTAuMTg1M0M4LjA2MzQ2IDEwLjE4NTMgNi44OTg5MyA5LjAyMDczIDYuODk4OTMgNy41ODQyMUM2Ljg5ODkzIDYuMTQ3NjkgOC4wNjM0NiA0Ljk4MzE1IDkuNDk5OTggNC45ODMxNUMxMC45MzY1IDQuOTgzMTUgMTIuMTAxIDYuMTQ3NjkgMTIuMTAxIDcuNTg0MjFaTTEzLjEwMSA3LjU4NDIxQzEzLjEwMSA5LjU3MzAyIDExLjQ4ODggMTEuMTg1MyA5LjQ5OTk4IDExLjE4NTNDNy41MTExNyAxMS4xODUzIDUuODk4OTMgOS41NzMwMiA1Ljg5ODkzIDcuNTg0MjFDNS44OTg5MyA1LjU5NTQgNy41MTExNyAzLjk4MzE1IDkuNDk5OTggMy45ODMxNUMxMS40ODg4IDMuOTgzMTUgMTMuMTAxIDUuNTk1NCAxMy4xMDEgNy41ODQyMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgMy41QzIgMy4yMjM4NiAyLjIyMzg2IDMgMi41IDNIMTIuNUMxMi43NzYxIDMgMTMgMy4yMjM4NiAxMyAzLjVWOS41QzEzIDkuNzc2MTQgMTIuNzc2MSAxMCAxMi41IDEwSDIuNUMyLjIyMzg2IDEwIDIgOS43NzYxNCAyIDkuNVYzLjVaTTIgMTAuOTE0NkMxLjQxNzQgMTAuNzA4NyAxIDEwLjE1MzEgMSA5LjVWMy41QzEgMi42NzE1NyAxLjY3MTU3IDIgMi41IDJIMTIuNUMxMy4zMjg0IDIgMTQgMi42NzE1NyAxNCAzLjVWOS41QzE0IDEwLjE1MzEgMTMuNTgyNiAxMC43MDg3IDEzIDEwLjkxNDZWMTEuNUMxMyAxMi4zMjg0IDEyLjMyODQgMTMgMTEuNSAxM0gzLjVDMi42NzE1NyAxMyAyIDEyLjMyODQgMiAxMS41VjEwLjkxNDZaTTEyIDExVjExLjVDMTIgMTEuNzc2MSAxMS43NzYxIDEyIDExLjUgMTJIMy41QzMuMjIzODYgMTIgMyAxMS43NzYxIDMgMTEuNVYxMUgxMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuNSAzQzIuMjIzODYgMyAyIDMuMjIzODYgMiAzLjVWOS41QzIgOS43NzYxNCAyLjIyMzg2IDEwIDIuNSAxMEgxMi41QzEyLjc3NjEgMTAgMTMgOS43NzYxNCAxMyA5LjVWMy41QzEzIDMuMjIzODYgMTIuNzc2MSAzIDEyLjUgM0gyLjVaTTEgOS41QzEgMTAuMTUzMSAxLjQxNzQgMTAuNzA4NyAyIDEwLjkxNDZWMTEuNUMyIDEyLjMyODQgMi42NzE1NyAxMyAzLjUgMTNIMTEuNUMxMi4zMjg0IDEzIDEzIDEyLjMyODQgMTMgMTEuNVYxMC45MTQ2QzEzLjU4MjYgMTAuNzA4NyAxNCAxMC4xNTMxIDE0IDkuNVYzLjVDMTQgMi42NzE1NyAxMy4zMjg0IDIgMTIuNSAySDIuNUMxLjY3MTU3IDIgMSAyLjY3MTU3IDEgMy41VjkuNVpNMTIgMTEuNVYxMUgzVjExLjVDMyAxMS43NzYxIDMuMjIzODYgMTIgMy41IDEySDExLjVDMTEuNzc2MSAxMiAxMiAxMS43NzYxIDEyIDExLjVaTTUuNSA2QzUuMjIzODYgNiA1IDYuMjIzODYgNSA2LjVDNSA2Ljc3NjE0IDUuMjIzODYgNyA1LjUgN0g5LjVDOS43NzYxNCA3IDEwIDYuNzc2MTQgMTAgNi41QzEwIDYuMjIzODYgOS43NzYxNCA2IDkuNSA2SDUuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEs9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgMy41QzIgMy4yMjM4NiAyLjIyMzg2IDMgMi41IDNIMTIuNUMxMi43NzYxIDMgMTMgMy4yMjM4NiAxMyAzLjVWOS41QzEzIDkuNzc2MTQgMTIuNzc2MSAxMCAxMi41IDEwSDIuNUMyLjIyMzg2IDEwIDIgOS43NzYxNCAyIDkuNVYzLjVaTTIgMTAuOTE0NkMxLjQxNzQgMTAuNzA4NyAxIDEwLjE1MzEgMSA5LjVWMy41QzEgMi42NzE1NyAxLjY3MTU3IDIgMi41IDJIMTIuNUMxMy4zMjg0IDIgMTQgMi42NzE1NyAxNCAzLjVWOS41QzE0IDEwLjE1MzEgMTMuNTgyNiAxMC43MDg3IDEzIDEwLjkxNDZWMTEuNUMxMyAxMi4zMjg0IDEyLjMyODQgMTMgMTEuNSAxM0gzLjVDMi42NzE1NyAxMyAyIDEyLjMyODQgMiAxMS41VjEwLjkxNDZaTTEyIDExVjExLjVDMTIgMTEuNzc2MSAxMS43NzYxIDEyIDExLjUgMTJIMy41QzMuMjIzODYgMTIgMyAxMS43NzYxIDMgMTEuNVYxMUgxMlpNNSA2LjVDNSA2LjIyMzg2IDUuMjIzODYgNiA1LjUgNkg3VjQuNUM3IDQuMjIzODYgNy4yMjM4NiA0IDcuNSA0QzcuNzc2MTQgNCA4IDQuMjIzODYgOCA0LjVWNkg5LjVDOS43NzYxNCA2IDEwIDYuMjIzODYgMTAgNi41QzEwIDYuNzc2MTQgOS43NzYxNCA3IDkuNSA3SDhWOC41QzggOC43NzYxNCA3Ljc3NjE0IDkgNy41IDlDNy4yMjM4NiA5IDcgOC43NzYxNCA3IDguNVY3SDUuNUM1LjIyMzg2IDcgNSA2Ljc3NjE0IDUgNi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC4xODE3OSA2LjE4MTgxQzQuMzU3NTMgNi4wMDYwOCA0LjY0MjQ1IDYuMDA2MDggNC44MTgxOSA2LjE4MTgxTDcuNDk5OTkgOC44NjM2MkwxMC4xODE4IDYuMTgxODFDMTAuMzU3NSA2LjAwNjA4IDEwLjY0MjQgNi4wMDYwOCAxMC44MTgyIDYuMTgxODFDMTAuOTkzOSA2LjM1NzU1IDEwLjk5MzkgNi42NDI0NyAxMC44MTgyIDYuODE4MjFMNy44MTgxOSA5LjgxODIxQzcuNzMzNzkgOS45MDI2IDcuNjE5MzQgOS45NTAwMSA3LjQ5OTk5IDkuOTUwMDFDNy4zODA2NCA5Ljk1MDAxIDcuMjY2MTggOS45MDI2IDcuMTgxNzkgOS44MTgyMUw0LjE4MTc5IDYuODE4MjFDNC4wMDYwNSA2LjY0MjQ3IDQuMDA2MDUgNi4zNTc1NSA0LjE4MTc5IDYuMTgxODFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxKPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjgxODA5IDQuMTgxNzlDOC45OTM4MyA0LjM1NzUzIDguOTkzODMgNC42NDI0NSA4LjgxODA5IDQuODE4MTlMNi4xMzYyOSA3LjQ5OTk5TDguODE4MDkgMTAuMTgxOEM4Ljk5MzgzIDEwLjM1NzUgOC45OTM4MyAxMC42NDI0IDguODE4MDkgMTAuODE4MkM4LjY0MjM2IDEwLjk5MzkgOC4zNTc0MyAxMC45OTM5IDguMTgxNyAxMC44MTgyTDUuMTgxNyA3LjgxODE5QzUuMDk3MzEgNy43MzM3OSA1LjA0OTkgNy42MTkzMyA1LjA0OTkgNy40OTk5OUM1LjA0OTkgNy4zODA2NCA1LjA5NzMxIDcuMjY2MTggNS4xODE3IDcuMTgxNzlMOC4xODE3IDQuMTgxNzlDOC4zNTc0MyA0LjAwNjA1IDguNjQyMzYgNC4wMDYwNSA4LjgxODA5IDQuMTgxNzlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxRPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02LjE4MTk0IDQuMTgxODVDNi4zNTc2NyA0LjAwNjExIDYuNjQyNiA0LjAwNjExIDYuODE4MzMgNC4xODE4NUw5LjgxODMzIDcuMTgxODVDOS45MDI3MiA3LjI2NjI0IDkuOTUwMTMgNy4zODA3IDkuOTUwMTMgNy41MDAwNUM5Ljk1MDEzIDcuNjE5NCA5LjkwMjcyIDcuNzMzODYgOS44MTgzMyA3LjgxODI1TDYuODE4MzMgMTAuODE4MkM2LjY0MjYgMTAuOTk0IDYuMzU3NjcgMTAuOTk0IDYuMTgxOTQgMTAuODE4MkM2LjAwNjIgMTAuNjQyNSA2LjAwNjIgMTAuMzU3NiA2LjE4MTk0IDEwLjE4MTlMOC44NjM3NCA3LjUwMDA1TDYuMTgxOTQgNC44MTgyNUM2LjAwNjIgNC42NDI1MSA2LjAwNjIgNC4zNTc1OSA2LjE4MTk0IDQuMTgxODVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxlZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC45MzE3OSA1LjQzMTc5QzQuNzU2MDUgNS42MDc1MyA0Ljc1NjA1IDUuODkyNDUgNC45MzE3OSA2LjA2ODE5QzUuMTA3NTMgNi4yNDM5MiA1LjM5MjQ1IDYuMjQzOTIgNS41NjgxOSA2LjA2ODE5TDcuNDk5OTkgNC4xMzYzOEw5LjQzMTc5IDYuMDY4MTlDOS42MDc1MyA2LjI0MzkyIDkuODkyNDUgNi4yNDM5MiAxMC4wNjgyIDYuMDY4MTlDMTAuMjQzOSA1Ljg5MjQ1IDEwLjI0MzkgNS42MDc1MyAxMC4wNjgyIDUuNDMxNzlMNy44MTgxOSAzLjE4MTc5QzcuNzMzNzkgMy4wOTc0IDcuNjE5MzMgMy4wNDk5OSA3LjQ5OTk5IDMuMDQ5OTlDNy4zODA2NCAzLjA0OTk5IDcuMjY2MTggMy4wOTc0IDcuMTgxNzkgMy4xODE3OUw0LjkzMTc5IDUuNDMxNzlaTTEwLjA2ODIgOS41NjgxOUMxMC4yNDM5IDkuMzkyNDUgMTAuMjQzOSA5LjEwNzUzIDEwLjA2ODIgOC45MzE3OUM5Ljg5MjQ1IDguNzU2MDYgOS42MDc1MyA4Ljc1NjA2IDkuNDMxNzkgOC45MzE3OUw3LjQ5OTk5IDEwLjg2MzZMNS41NjgxOSA4LjkzMTc5QzUuMzkyNDUgOC43NTYwNiA1LjEwNzUzIDguNzU2MDYgNC45MzE3OSA4LjkzMTc5QzQuNzU2MDUgOS4xMDc1MyA0Ljc1NjA1IDkuMzkyNDUgNC45MzE3OSA5LjU2ODE5TDcuMTgxNzkgMTEuODE4MkM3LjM1NzUzIDExLjk5MzkgNy42NDI0NSAxMS45OTM5IDcuODE4MTkgMTEuODE4MkwxMC4wNjgyIDkuNTY4MTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx0ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC4xODE3OSA4LjgxODE5QzQuMDA2MDUgOC42NDI0NSA0LjAwNjA1IDguMzU3NTMgNC4xODE3OSA4LjE4MTc5TDcuMTgxNzkgNS4xODE3OUM3LjI2NjE4IDUuMDk3NCA3LjM4MDY0IDUuMDQ5OTkgNy40OTk5OSA1LjA0OTk5QzcuNjE5MzMgNS4wNDk5OSA3LjczMzc5IDUuMDk3NCA3LjgxODE5IDUuMTgxNzlMMTAuODE4MiA4LjE4MTc5QzEwLjk5MzkgOC4zNTc1MyAxMC45OTM5IDguNjQyNDUgMTAuODE4MiA4LjgxODE5QzEwLjY0MjQgOC45OTM5MiAxMC4zNTc1IDguOTkzOTIgMTAuMTgxOCA4LjgxODE5TDcuNDk5OTkgNi4xMzYzOEw0LjgxODE5IDguODE4MTlDNC42NDI0NSA4Ljk5MzkyIDQuMzU3NTMgOC45OTM5MiA0LjE4MTc5IDguODE4MTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxuZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTIuNSAzTDIuNDk5OTkgMy4wMDAwMkMxLjY3MTU3IDMuMDAwMDIgMC45OTk5OTkgMy42NzE1OSAwLjk5OTk5OSA0LjUwMDAyVjkuNTAwMDJDMC45OTk5OTkgMTAuMzI4NCAxLjY3MTU3IDExIDIuNSAxMUg3LjUwMDAyQzcuNjMyNjMgMTEgNy43NTk4MSAxMS4wNTI3IDcuODUzNTggMTEuMTQ2NUw5Ljk5OTk5IDEzLjI5MjlWMTEuNUM5Ljk5OTk5IDExLjIyMzkgMTAuMjIzOSAxMSAxMC41IDExSDEyLjVDMTMuMzI4NCAxMSAxNCAxMC4zMjg0IDE0IDkuNTAwMDJWNC41QzE0IDMuNjcxNTcgMTMuMzI4NCAzIDEyLjUgM1pNMi40OTk5OSAyLjAwMDAyTDEyLjUgMkMxMy44ODA3IDIgMTUgMy4xMTkyOCAxNSA0LjVWOS41MDAwMkMxNSAxMC44ODA3IDEzLjg4MDcgMTIgMTIuNSAxMkgxMVYxNC41QzExIDE0LjcwMjIgMTAuODc4MiAxNC44ODQ1IDEwLjY5MTMgMTQuOTYxOUMxMC41MDQ1IDE1LjAzOTMgMTAuMjg5NCAxNC45OTY1IDEwLjE0NjQgMTQuODUzNUw3LjI5MjkyIDEySDIuNUMxLjExOTI5IDEyIDAgMTAuODgwNyAwIDkuNTAwMDJWNC41MDAwMkMwIDMuMTE5MzEgMS4xMTkyOCAyLjAwMDAyIDIuNDk5OTkgMi4wMDAwMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHJlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS40NjY5IDMuNzI2ODRDMTEuNzU1OCAzLjkxNTc0IDExLjgzNjkgNC4zMDMwOCAxMS42NDggNC41OTE5OEw3LjM5Nzk5IDExLjA5MkM3LjI5NzgzIDExLjI0NTIgNy4xMzU1NiAxMS4zNDY3IDYuOTU0MDIgMTEuMzY5OUM2Ljc3MjQ3IDExLjM5MzEgNi41ODk4OSAxMS4zMzU1IDYuNDU0NDYgMTEuMjEyNEwzLjcwNDQ2IDguNzEyNDFDMy40NDkwNSA4LjQ4MDIyIDMuNDMwMjMgOC4wODQ5NCAzLjY2MjQyIDcuODI5NTNDMy44OTQ2MSA3LjU3NDEyIDQuMjg5ODkgNy41NTUyOSA0LjU0NTMgNy43ODc0OUw2Ljc1MjkyIDkuNzk0NDFMMTAuNjAxOCAzLjkwNzkyQzEwLjc5MDcgMy42MTkwMiAxMS4xNzggMy41Mzc5NSAxMS40NjY5IDMuNzI2ODRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxvZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3NzA0NUMzLjg0MjIyIDAuODc3MDQ1IDAuODc3MDc1IDMuODQyMTkgMC44NzcwNzUgNy40OTk4OEMwLjg3NzA3NSAxMS4xNTc1IDMuODQyMjIgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMTEuMTU3NiAxNC4xMjI3IDE0LjEyMjcgMTEuMTU3NSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAzLjg0MjE5IDExLjE1NzYgMC44NzcwNDUgNy40OTk5MSAwLjg3NzA0NVpNMS44MjcwOCA3LjQ5OTg4QzEuODI3MDggNC4zNjY4NiA0LjM2Njg5IDEuODI3MDQgNy40OTk5MSAxLjgyNzA0QzEwLjYzMjkgMS44MjcwNCAxMy4xNzI3IDQuMzY2ODYgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgMTAuNjMyOSAxMC42MzI5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzQuMzY2ODkgMTMuMTcyNyAxLjgyNzA4IDEwLjYzMjkgMS44MjcwOCA3LjQ5OTg4Wk0xMC4xNTg5IDUuNTM3NzRDMTAuMzE3OCA1LjMxMTkxIDEwLjI2MzYgNS4wMDAwMSAxMC4wMzc4IDQuODQxMDlDOS44MTE5NCA0LjY4MjE3IDkuNTAwMDQgNC43MzY0MiA5LjM0MTEyIDQuOTYyMjVMNi41MTk3NyA4Ljk3MTU0TDUuMzU2ODEgNy43ODcwNkM1LjE2MzM0IDcuNTkwMDIgNC44NDY3NyA3LjU4NzExIDQuNjQ5NzMgNy43ODA1OEM0LjQ1MjY4IDcuOTc0MDQgNC40NDk3OCA4LjI5MDYxIDQuNjQzMjUgOC40ODc2NUw2LjIyNjU4IDEwLjEwMDNDNi4zMzA1NCAxMC4yMDYyIDYuNDc2MTcgMTAuMjYwNCA2LjYyNDA3IDEwLjI0ODNDNi43NzE5NyAxMC4yMzYzIDYuOTA2ODYgMTAuMTU5MSA2Ljk5MjI2IDEwLjAzNzdMMTAuMTU4OSA1LjUzNzc0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgM0gxMlYxMkgzTDMgM1pNMiAzQzIgMi40NDc3MSAyLjQ0NzcyIDIgMyAySDEyQzEyLjU1MjMgMiAxMyAyLjQ0NzcyIDEzIDNWMTJDMTMgMTIuNTUyMyAxMi41NTIzIDEzIDEyIDEzSDNDMi40NDc3MSAxMyAyIDEyLjU1MjMgMiAxMlYzWk0xMC4zNDk4IDUuNTExMDVDMTAuNTA2IDUuMjgzMzcgMTAuNDQ4MSA0Ljk3MjEyIDEwLjIyMDQgNC44MTU4N0M5Ljk5Mjc1IDQuNjU5NjEgOS42ODE1IDQuNzE3NTEgOS41MjUyNSA0Ljk0NTE5TDYuNjQwNDggOS4xNDg1N0w1LjE5NzMzIDcuNDA4ODlDNS4wMjEwMiA3LjE5NjM1IDQuNzA1OCA3LjE2Njk5IDQuNDkzMjcgNy4zNDMyOUM0LjI4MDczIDcuNTE5NiA0LjI1MTM3IDcuODM0ODIgNC40Mjc2NyA4LjA0NzM1TDYuMjkzNCAxMC4yOTY0QzYuMzkzNDggMTAuNDE3MSA2LjU0NDM3IDEwLjQ4MzggNi43MDA5NyAxMC40NzY3QzYuODU3NTcgMTAuNDY5NSA3LjAwMTc3IDEwLjM4OTQgNy4wOTA0NyAxMC4yNjAxTDEwLjM0OTggNS41MTEwNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGFlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjEzNTIzIDYuMTU4MDNDMy4zMjQxIDUuOTU2NTcgMy42NDA1MiA1Ljk0NjM3IDMuODQxOTcgNi4xMzUyM0w3LjUgOS41NjQ2NEwxMS4xNTggNi4xMzUyM0MxMS4zNTk1IDUuOTQ2MzcgMTEuNjc1OSA1Ljk1NjU3IDExLjg2NDggNi4xNTgwM0MxMi4wNTM2IDYuMzU5NDkgMTIuMDQzNCA2LjY3NTkxIDExLjg0MiA2Ljg2NDc3TDcuODQxOTcgMTAuNjE0OEM3LjY0OTY0IDEwLjc5NTEgNy4zNTAzNiAxMC43OTUxIDcuMTU4MDMgMTAuNjE0OEwzLjE1ODAzIDYuODY0NzdDMi45NTY1NyA2LjY3NTkxIDIuOTQ2MzcgNi4zNTk0OSAzLjEzNTIzIDYuMTU4MDNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxsZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC44NDE4MiAzLjEzNTE0QzkuMDQzMjcgMy4zMjQwMSA5LjA1MzQ4IDMuNjQwNDIgOC44NjQ2MiAzLjg0MTg4TDUuNDM1MjEgNy40OTk5MUw4Ljg2NDYyIDExLjE1NzlDOS4wNTM0OCAxMS4zNTk0IDkuMDQzMjcgMTEuNjc1OCA4Ljg0MTgyIDExLjg2NDdDOC42NDAzNiAxMi4wNTM1IDguMzIzOTQgMTIuMDQzMyA4LjEzNTA4IDExLjg0MTlMNC4zODUwOCA3Ljg0MTg4QzQuMjA0NzcgNy42NDk1NSA0LjIwNDc3IDcuMzUwMjcgNC4zODUwOCA3LjE1Nzk0TDguMTM1MDggMy4xNTc5NEM4LjMyMzk0IDIuOTU2NDggOC42NDAzNiAyLjk0NjI4IDguODQxODIgMy4xMzUxNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHNlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02LjE1ODQgMy4xMzUwOEM2LjM1OTg1IDIuOTQ2MjEgNi42NzYyNyAyLjk1NjQyIDYuODY1MTQgMy4xNTc4OEwxMC42MTUxIDcuMTU3ODhDMTAuNzk1NCA3LjM1MDIgMTAuNzk1NCA3LjY0OTQ5IDEwLjYxNTEgNy44NDE4Mkw2Ljg2NTE0IDExLjg0MThDNi42NzYyNyAxMi4wNDMzIDYuMzU5ODUgMTIuMDUzNSA2LjE1ODQgMTEuODY0NkM1Ljk1Njk0IDExLjY3NTcgNS45NDY3MyAxMS4zNTkzIDYuMTM1NiAxMS4xNTc5TDkuNTY1IDcuNDk5ODVMNi4xMzU2IDMuODQxODJDNS45NDY3MyAzLjY0MDM2IDUuOTU2OTQgMy4zMjM5NCA2LjE1ODQgMy4xMzUwOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGNlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjEzNTIzIDguODQxOTdDMy4zMjQxIDkuMDQzNDMgMy42NDA1MiA5LjA1MzYzIDMuODQxOTcgOC44NjQ3N0w3LjUgNS40MzUzNkwxMS4xNTggOC44NjQ3N0MxMS4zNTk1IDkuMDUzNjMgMTEuNjc1OSA5LjA0MzQzIDExLjg2NDggOC44NDE5N0MxMi4wNTM2IDguNjQwNTEgMTIuMDQzNCA4LjMyNDA5IDExLjg0MiA4LjEzNTIzTDcuODQxOTcgNC4zODUyM0M3LjY0OTY0IDQuMjA0OTIgNy4zNTAzNiA0LjIwNDkyIDcuMTU4MDMgNC4zODUyM0wzLjE1ODAzIDguMTM1MjNDMi45NTY1NyA4LjMyNDA5IDIuOTQ2MzcgOC42NDA1MSAzLjEzNTIzIDguODQxOTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx1ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwNzUgNy40OTk5MUMwLjg3NzA3NSAzLjg0MjIyIDMuODQyMjIgMC44NzcwNzUgNy40OTk5MSAwLjg3NzA3NUMxMS4xNTc2IDAuODc3MDc1IDE0LjEyMjcgMy44NDIyMiAxNC4xMjI3IDcuNDk5OTFDMTQuMTIyNyAxMS4xNTc2IDExLjE1NzYgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMy44NDIyMiAxNC4xMjI3IDAuODc3MDc1IDExLjE1NzYgMC44NzcwNzUgNy40OTk5MVpNNy40OTk5MSAxLjgyNzA4QzQuMzY2ODkgMS44MjcwOCAxLjgyNzA4IDQuMzY2ODkgMS44MjcwOCA3LjQ5OTkxQzEuODI3MDggMTAuNjMyOSA0LjM2Njg5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzEwLjYzMjkgMTMuMTcyNyAxMy4xNzI3IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTkxQzEzLjE3MjcgNC4zNjY4OSAxMC42MzI5IDEuODI3MDggNy40OTk5MSAxLjgyNzA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzcwNzVDMy44NDIyMiAwLjg3NzA3NSAwLjg3NzA3NSAzLjg0MjIyIDAuODc3MDc1IDcuNDk5OTFDMC44NzcwNzUgMTEuMTU3NiAzLjg0MjIyIDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzExLjE1NzYgMTQuMTIyNyAxNC4xMjI3IDExLjE1NzYgMTQuMTIyNyA3LjQ5OTkxQzE0LjEyMjcgMy44NDIyMiAxMS4xNTc2IDAuODc3MDc1IDcuNDk5OTEgMC44NzcwNzVaTTMuODU3NjggMy4xNTA1N0M0Ljg0MzExIDIuMzI0NDggNi4xMTM0MiAxLjgyNzA4IDcuNDk5OTEgMS44MjcwOEMxMC42MzI5IDEuODI3MDggMTMuMTcyNyA0LjM2Njg5IDEzLjE3MjcgNy40OTk5MUMxMy4xNzI3IDguODg2MzggMTIuNjc1MyAxMC4xNTY3IDExLjg0OTIgMTEuMTQyMUwzLjg1NzY4IDMuMTUwNTdaTTMuMTUwNTcgMy44NTc2OEMyLjMyNDQ4IDQuODQzMTEgMS44MjcwOCA2LjExMzQyIDEuODI3MDggNy40OTk5MUMxLjgyNzA4IDEwLjYzMjkgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0M4Ljg4NjM4IDEzLjE3MjcgMTAuMTU2NyAxMi42NzUzIDExLjE0MjEgMTEuODQ5MkwzLjE1MDU3IDMuODU3NjhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxkZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSAyVjFIMTBWMkg1Wk00Ljc1IDBDNC4zMzU3OSAwIDQgMC4zMzU3ODYgNCAwLjc1VjFIMy41QzIuNjcxNTcgMSAyIDEuNjcxNTcgMiAyLjVWMTIuNUMyIDEzLjMyODQgMi42NzE1NyAxNCAzLjUgMTRIMTEuNUMxMi4zMjg0IDE0IDEzIDEzLjMyODQgMTMgMTIuNVYyLjVDMTMgMS42NzE1NyAxMi4zMjg0IDEgMTEuNSAxSDExVjAuNzVDMTEgMC4zMzU3ODYgMTAuNjY0MiAwIDEwLjI1IDBINC43NVpNMTEgMlYyLjI1QzExIDIuNjY0MjEgMTAuNjY0MiAzIDEwLjI1IDNINC43NUM0LjMzNTc5IDMgNCAyLjY2NDIxIDQgMi4yNVYySDMuNUMzLjIyMzg2IDIgMyAyLjIyMzg2IDMgMi41VjEyLjVDMyAxMi43NzYxIDMuMjIzODYgMTMgMy41IDEzSDExLjVDMTEuNzc2MSAxMyAxMiAxMi43NzYxIDEyIDEyLjVWMi41QzEyIDIuMjIzODYgMTEuNzc2MSAyIDExLjUgMkgxMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHBlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDJWMUgxMFYySDVaTTQuNzUgMEM0LjMzNTc5IDAgNCAwLjMzNTc4NiA0IDAuNzVWMUgzLjVDMi42NzE1NyAxIDIgMS42NzE1NyAyIDIuNVYxMi41QzIgMTMuMzI4NCAyLjY3MTU3IDE0IDMuNSAxNEg3VjEzSDMuNUMzLjIyMzg2IDEzIDMgMTIuNzc2MSAzIDEyLjVWMi41QzMgMi4yMjM4NiAzLjIyMzg2IDIgMy41IDJINFYyLjI1QzQgMi42NjQyMSA0LjMzNTc5IDMgNC43NSAzSDEwLjI1QzEwLjY2NDIgMyAxMSAyLjY2NDIxIDExIDIuMjVWMkgxMS41QzExLjc3NjEgMiAxMiAyLjIyMzg2IDEyIDIuNVY3SDEzVjIuNUMxMyAxLjY3MTU3IDEyLjMyODQgMSAxMS41IDFIMTFWMC43NUMxMSAwLjMzNTc4NiAxMC42NjQyIDAgMTAuMjUgMEg0Ljc1Wk05IDguNUM5IDguNzc2MTQgOC43NzYxNCA5IDguNSA5QzguMjIzODYgOSA4IDguNzc2MTQgOCA4LjVDOCA4LjIyMzg2IDguMjIzODYgOCA4LjUgOEM4Ljc3NjE0IDggOSA4LjIyMzg2IDkgOC41Wk0xMC41IDlDMTAuNzc2MSA5IDExIDguNzc2MTQgMTEgOC41QzExIDguMjIzODYgMTAuNzc2MSA4IDEwLjUgOEMxMC4yMjM5IDggMTAgOC4yMjM4NiAxMCA4LjVDMTAgOC43NzYxNCAxMC4yMjM5IDkgMTAuNSA5Wk0xMyA4LjVDMTMgOC43NzYxNCAxMi43NzYxIDkgMTIuNSA5QzEyLjIyMzkgOSAxMiA4Ljc3NjE0IDEyIDguNUMxMiA4LjIyMzg2IDEyLjIyMzkgOCAxMi41IDhDMTIuNzc2MSA4IDEzIDguMjIzODYgMTMgOC41Wk0xNC41IDlDMTQuNzc2MSA5IDE1IDguNzc2MTQgMTUgOC41QzE1IDguMjIzODYgMTQuNzc2MSA4IDE0LjUgOEMxNC4yMjM5IDggMTQgOC4yMjM4NiAxNCA4LjVDMTQgOC43NzYxNCAxNC4yMjM5IDkgMTQuNSA5Wk0xNSAxMC41QzE1IDEwLjc3NjEgMTQuNzc2MSAxMSAxNC41IDExQzE0LjIyMzkgMTEgMTQgMTAuNzc2MSAxNCAxMC41QzE0IDEwLjIyMzkgMTQuMjIzOSAxMCAxNC41IDEwQzE0Ljc3NjEgMTAgMTUgMTAuMjIzOSAxNSAxMC41Wk0xNC41IDEzQzE0Ljc3NjEgMTMgMTUgMTIuNzc2MSAxNSAxMi41QzE1IDEyLjIyMzkgMTQuNzc2MSAxMiAxNC41IDEyQzE0LjIyMzkgMTIgMTQgMTIuMjIzOSAxNCAxMi41QzE0IDEyLjc3NjEgMTQuMjIzOSAxMyAxNC41IDEzWk0xNC41IDE1QzE0Ljc3NjEgMTUgMTUgMTQuNzc2MSAxNSAxNC41QzE1IDE0LjIyMzkgMTQuNzc2MSAxNCAxNC41IDE0QzE0LjIyMzkgMTQgMTQgMTQuMjIzOSAxNCAxNC41QzE0IDE0Ljc3NjEgMTQuMjIzOSAxNSAxNC41IDE1Wk04LjUgMTFDOC43NzYxNCAxMSA5IDEwLjc3NjEgOSAxMC41QzkgMTAuMjIzOSA4Ljc3NjE0IDEwIDguNSAxMEM4LjIyMzg2IDEwIDggMTAuMjIzOSA4IDEwLjVDOCAxMC43NzYxIDguMjIzODYgMTEgOC41IDExWk05IDEyLjVDOSAxMi43NzYxIDguNzc2MTQgMTMgOC41IDEzQzguMjIzODYgMTMgOCAxMi43NzYxIDggMTIuNUM4IDEyLjIyMzkgOC4yMjM4NiAxMiA4LjUgMTJDOC43NzYxNCAxMiA5IDEyLjIyMzkgOSAxMi41Wk04LjUgMTVDOC43NzYxNCAxNSA5IDE0Ljc3NjEgOSAxNC41QzkgMTQuMjIzOSA4Ljc3NjE0IDE0IDguNSAxNEM4LjIyMzg2IDE0IDggMTQuMjIzOSA4IDE0LjVDOCAxNC43NzYxIDguMjIzODYgMTUgOC41IDE1Wk0xMSAxNC41QzExIDE0Ljc3NjEgMTAuNzc2MSAxNSAxMC41IDE1QzEwLjIyMzkgMTUgMTAgMTQuNzc2MSAxMCAxNC41QzEwIDE0LjIyMzkgMTAuMjIzOSAxNCAxMC41IDE0QzEwLjc3NjEgMTQgMTEgMTQuMjIzOSAxMSAxNC41Wk0xMi41IDE1QzEyLjc3NjEgMTUgMTMgMTQuNzc2MSAxMyAxNC41QzEzIDE0LjIyMzkgMTIuNzc2MSAxNCAxMi41IDE0QzEyLjIyMzkgMTQgMTIgMTQuMjIzOSAxMiAxNC41QzEyIDE0Ljc3NjEgMTIuMjIzOSAxNSAxMi41IDE1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNTAwMDkgMC44NzcwMTRDMy44NDI0MSAwLjg3NzAxNCAwLjg3NzI1OCAzLjg0MjE2IDAuODc3MjU4IDcuNDk5ODRDMC44NzcyNTggMTEuMTU3NSAzLjg0MjQgMTQuMTIyNyA3LjUwMDA5IDE0LjEyMjdDMTEuMTU3OCAxNC4xMjI3IDE0LjEyMjkgMTEuMTU3NSAxNC4xMjI5IDcuNDk5ODRDMTQuMTIyOSAzLjg0MjE2IDExLjE1NzcgMC44NzcwMTQgNy41MDAwOSAwLjg3NzAxNFpNMS44MjcyNiA3LjQ5OTg0QzEuODI3MjYgNC4zNjY4MyA0LjM2NzA4IDEuODI3MDEgNy41MDAwOSAxLjgyNzAxQzEwLjYzMzEgMS44MjcwMSAxMy4xNzI5IDQuMzY2ODMgMTMuMTcyOSA3LjQ5OTg0QzEzLjE3MjkgMTAuNjMyOCAxMC42MzMxIDEzLjE3MjcgNy41MDAwOSAxMy4xNzI3QzQuMzY3MDggMTMuMTcyNyAxLjgyNzI2IDEwLjYzMjggMS44MjcyNiA3LjQ5OTg0Wk04IDQuNTAwMDFDOCA0LjIyMzg3IDcuNzc2MTQgNC4wMDAwMSA3LjUgNC4wMDAwMUM3LjIyMzg2IDQuMDAwMDEgNyA0LjIyMzg3IDcgNC41MDAwMVY3LjUwMDAxQzcgNy42MzI2MiA3LjA1MjY4IDcuNzU5OCA3LjE0NjQ1IDcuODUzNTdMOS4xNDY0NSA5Ljg1MzU3QzkuMzQxNzEgMTAuMDQ4OCA5LjY1ODI5IDEwLjA0ODggOS44NTM1NSA5Ljg1MzU3QzEwLjA0ODggOS42NTgzMSAxMC4wNDg4IDkuMzQxNzIgOS44NTM1NSA5LjE0NjQ2TDggNy4yOTI5MVY0LjUwMDAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuOTY0MjQgMi42ODU3MUMxMC4wNjY4IDIuNDI5MzEgOS45NDIwOSAyLjEzODMzIDkuNjg1NyAyLjAzNTc3QzkuNDI5MyAxLjkzMzIyIDkuMTM4MzIgMi4wNTc5MiA5LjAzNTc2IDIuMzE0MzJMNS4wMzU3NiAxMi4zMTQzQzQuOTMzMiAxMi41NzA3IDUuMDU3OTEgMTIuODYxNyA1LjMxNDMgMTIuOTY0MkM1LjU3MDcgMTMuMDY2OCA1Ljg2MTY4IDEyLjk0MjEgNS45NjQyNCAxMi42ODU3TDkuOTY0MjQgMi42ODU3MVpNMy44NTM1NSA1LjE0NjQ2QzQuMDQ4ODIgNS4zNDE3MiA0LjA0ODgyIDUuNjU4MyAzLjg1MzU1IDUuODUzNTZMMi4yMDcxMSA3LjUwMDAxTDMuODUzNTUgOS4xNDY0NkM0LjA0ODgyIDkuMzQxNzIgNC4wNDg4MiA5LjY1ODMgMy44NTM1NSA5Ljg1MzU2QzMuNjU4MjkgMTAuMDQ4OCAzLjM0MTcxIDEwLjA0ODggMy4xNDY0NSA5Ljg1MzU2TDEuMTQ2NDUgNy44NTM1NkMwLjk1MTE4NCA3LjY1ODMgMC45NTExODQgNy4zNDE3MiAxLjE0NjQ1IDcuMTQ2NDZMMy4xNDY0NSA1LjE0NjQ2QzMuMzQxNzEgNC45NTEyIDMuNjU4MjkgNC45NTEyIDMuODUzNTUgNS4xNDY0NlpNMTEuMTQ2NCA1LjE0NjQ2QzExLjM0MTcgNC45NTEyIDExLjY1ODMgNC45NTEyIDExLjg1MzYgNS4xNDY0NkwxMy44NTM2IDcuMTQ2NDZDMTQuMDQ4OCA3LjM0MTcyIDE0LjA0ODggNy42NTgzIDEzLjg1MzYgNy44NTM1NkwxMS44NTM2IDkuODUzNTZDMTEuNjU4MyAxMC4wNDg4IDExLjM0MTcgMTAuMDQ4OCAxMS4xNDY0IDkuODUzNTZDMTAuOTUxMiA5LjY1ODMgMTAuOTUxMiA5LjM0MTcyIDExLjE0NjQgOS4xNDY0NkwxMi43OTI5IDcuNTAwMDFMMTEuMTQ2NCA1Ljg1MzU2QzEwLjk1MTIgNS42NTgzIDEwLjk1MTIgNS4zNDE3MiAxMS4xNDY0IDUuMTQ2NDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxnZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy43MTE0NCAwLjc5NjkwMkM3LjU3NzQxIDAuNzM0MzU3IDcuNDIyNTcgMC43MzQzNTcgNy4yODg1NSAwLjc5NjkwMkwxLjI4ODU1IDMuNTk2OUMxLjExMjUxIDMuNjc5MDUgMC45OTk5OTMgMy44NTU3MyAwLjk5OTk5MyA0LjA0OTk5VjEwLjk1QzAuOTk5OTkzIDExLjE0NDMgMS4xMTI1MSAxMS4zMjA5IDEuMjg4NTUgMTEuNDAzMUw3LjI4ODU1IDE0LjIwMzFDNy40MjI1NyAxNC4yNjU2IDcuNTc3NDEgMTQuMjY1NiA3LjcxMTQ0IDE0LjIwMzFMMTMuNzExNCAxMS40MDMxQzEzLjg4NzUgMTEuMzIwOSAxNCAxMS4xNDQzIDE0IDEwLjk1VjQuMDQ5OTlDMTQgMy44NTU3MyAxMy44ODc1IDMuNjc5MDUgMTMuNzExNCAzLjU5NjlMNy43MTE0NCAwLjc5NjkwMlpNNy40OTk5OSAzLjE1Njc0TDUuOTgwMzkgMi41MTA5MUw3LjQ5OTk5IDEuODAxNzZMOS4wMTk1OSAyLjUxMDkxTDcuNDk5OTkgMy4xNTY3NFpNNy42OTU1NiA0LjE2MDE4TDEwLjIzODIgMy4wNzk1OEwxMi4yNzE5IDQuMDI4NjVMNy40OTk5OSA2LjA1NjcxTDIuNzI4MDggNC4wMjg2NUw0Ljc2MTgxIDMuMDc5NThMNy4zMDQ0MiA0LjE2MDE4QzcuNDI5MzkgNC4yMTMzIDcuNTcwNTkgNC4yMTMzIDcuNjk1NTYgNC4xNjAxOFpNNy45OTk5OSA2LjkzMDc4TDEzIDQuODA1NzhWNy45Mjk2NkwxMS4wODIxIDguODExOUMxMC43MjczIDguOTc1MDkgMTAuNSA5LjMyOTg4IDEwLjUgOS43MjAzOVYxMS43OTgyTDcuOTk5OTkgMTIuOTY0OVY2LjkzMDc4Wk0xMS41IDExLjMzMTZMMTMgMTAuNjMxNlY5LjAzMDM5TDExLjUgOS43MjAzOVYxMS4zMzE2Wk02Ljk5OTk5IDYuOTMwNzhWMTIuOTY0OUw0LjUwMjMxIDExLjc5OTNWOS43MjAzNkM0LjUwMjMxIDkuMzI5ODUgNC4yNzQ5OSA4Ljk3NTA2IDMuOTIwMjIgOC44MTE4N0wxLjk5OTk5IDcuOTI4NTZWNC44MDU3OEw2Ljk5OTk5IDYuOTMwNzhaTTEuOTk5OTkgMTAuNjMxNkwzLjUwMjMxIDExLjMzMjZMMy41MDIzMSA5LjcyMDM2TDEuOTk5OTkgOS4wMjkyOVYxMC42MzE2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguMDAwMTIgMS41QzguMDAwMTIgMS4yMjM4NiA3Ljc3NjI2IDEgNy41MDAxMiAxQzcuMjIzOTggMSA3LjAwMDEyIDEuMjIzODYgNy4wMDAxMiAxLjVWMTMuNUM3LjAwMDEyIDEzLjc3NjEgNy4yMjM5OCAxNCA3LjUwMDEyIDE0QzcuNzc2MjYgMTQgOC4wMDAxMiAxMy43NzYxIDguMDAwMTIgMTMuNVYxLjVaTTMuMzE4MTIgNS44MThDMy40OTM4NiA1LjY0MjI3IDMuNDkzODYgNS4zNTczNCAzLjMxODEyIDUuMTgxNjFDMy4xNDIzOSA1LjAwNTg3IDIuODU3NDYgNS4wMDU4NyAyLjY4MTczIDUuMTgxNjFMMC42ODE3MjkgNy4xODE2MUMwLjUwNTk5MyA3LjM1NzM0IDAuNTA1OTkzIDcuNjQyMjcgMC42ODE3MjkgNy44MThMMi42ODE3MyA5LjgxOEMyLjg1NzQ2IDkuOTkzNzQgMy4xNDIzOSA5Ljk5Mzc0IDMuMzE4MTIgOS44MThDMy40OTM4NiA5LjY0MjI3IDMuNDkzODYgOS4zNTczNCAzLjMxODEyIDkuMTgxNjFMMi4wODYzMiA3Ljk0OThINS41MDAxN0M1Ljc0ODcgNy45NDk4IDUuOTUwMTcgNy43NDgzMyA1Ljk1MDE3IDcuNDk5OEM1Ljk1MDE3IDcuMjUxMjggNS43NDg3IDcuMDQ5OCA1LjUwMDE3IDcuMDQ5OEgyLjA4NjMyTDMuMzE4MTIgNS44MThaTTEyLjMxODEgNS4xODE2MUMxMi4xNDI0IDUuMDA1ODcgMTEuODU3NSA1LjAwNTg3IDExLjY4MTcgNS4xODE2MUMxMS41MDYgNS4zNTczNCAxMS41MDYgNS42NDIyNyAxMS42ODE3IDUuODE4TDEyLjkxMzUgNy4wNDk4SDkuNTAwMTdDOS4yNTE2NCA3LjA0OTggOS4wNTAxNyA3LjI1MTI4IDkuMDUwMTcgNy40OTk4QzkuMDUwMTcgNy43NDgzMyA5LjI1MTY0IDcuOTQ5OCA5LjUwMDE3IDcuOTQ5OEgxMi45MTM1TDExLjY4MTcgOS4xODE2MUMxMS41MDYgOS4zNTczNCAxMS41MDYgOS42NDIyNyAxMS42ODE3IDkuODE4QzExLjg1NzUgOS45OTM3NCAxMi4xNDI0IDkuOTkzNzQgMTIuMzE4MSA5LjgxOEwxNC4zMTgxIDcuODE4QzE0LjQ5MzkgNy42NDIyNyAxNC40OTM5IDcuMzU3MzQgMTQuMzE4MSA3LjE4MTYxTDEyLjMxODEgNS4xODE2MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG1lPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjE0OTk4IDE0VjFIMC44NDk5NzZWMTRIMi4xNDk5OFpNNi4xNDk5OCAxNFYxSDQuODQ5OThWMTRINi4xNDk5OFpNMTAuMTUgMVYxNEg4Ljg0OTk4VjFIMTAuMTVaTTE0LjE1IDE0VjFIMTIuODVWMTRIMTQuMTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx5ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOS45NDk2OSA3LjQ5OTg5QzkuOTQ5NjkgOC44NTI4OCA4Ljg1Mjg4IDkuOTQ5NjkgNy40OTk4OSA5Ljk0OTY5QzYuMTQ2OTEgOS45NDk2OSA1LjA1MDEgOC44NTI4OCA1LjA1MDEgNy40OTk4OUM1LjA1MDEgNi4xNDY5MSA2LjE0NjkxIDUuMDUwMSA3LjQ5OTg5IDUuMDUwMUM4Ljg1Mjg4IDUuMDUwMSA5Ljk0OTY5IDYuMTQ2OTEgOS45NDk2OSA3LjQ5OTg5Wk0xMC44NjMyIDhDMTAuNjIxMyA5LjY0MDU1IDkuMjA3NjQgMTAuODk5NyA3LjQ5OTg5IDEwLjg5OTdDNS43OTIxNCAxMC44OTk3IDQuMzc4NDcgOS42NDA1NSA0LjEzNjYyIDhIMC41QzAuMjIzODU4IDggMCA3Ljc3NjE0IDAgNy41QzAgNy4yMjM4NiAwLjIyMzg1OCA3IDAuNSA3SDQuMTM2NTlDNC4zNzgzNSA1LjM1OTM1IDUuNzkyMDYgNC4xMDAxIDcuNDk5ODkgNC4xMDAxQzkuMjA3NzIgNC4xMDAxIDEwLjYyMTQgNS4zNTkzNSAxMC44NjMyIDdIMTQuNUMxNC43NzYxIDcgMTUgNy4yMjM4NiAxNSA3LjVDMTUgNy43NzYxNCAxNC43NzYxIDggMTQuNSA4SDEwLjg2MzJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx3ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC42NzEyOSAzLjE0NjM0QzQuNDc2MDMgMy4zNDE2MSA0LjQ3NjAzIDMuNjU4MTkgNC42NzEyOSAzLjg1MzQ1TDcuMTQ2MTYgNi4zMjgzM0M3LjM0MTQyIDYuNTIzNTkgNy42NTgwMSA2LjUyMzU5IDcuODUzMjcgNi4zMjgzM0wxMC4zMjgxIDMuODUzNDVDMTAuNTIzNCAzLjY1ODE5IDEwLjUyMzQgMy4zNDE2MSAxMC4zMjgxIDMuMTQ2MzRMNy44NTMyNyAwLjY3MTQ3MUM3LjY1ODAxIDAuNDc2MjA5IDcuMzQxNDIgMC40NzYyMDkgNy4xNDYxNiAwLjY3MTQ3MUw0LjY3MTI5IDMuMTQ2MzRaTTcuNDk5NzEgNS4yNjc2Nkw1LjczMTk1IDMuNDk5OUw3LjQ5OTcxIDEuNzMyMTNMOS4yNjc0OCAzLjQ5OTlMNy40OTk3MSA1LjI2NzY2Wk04LjY3MTI5IDcuMTQ2MzRDOC40NzYwMyA3LjM0MTYxIDguNDc2MDMgNy42NTgxOSA4LjY3MTI5IDcuODUzNDVMMTEuMTQ2MiAxMC4zMjgzQzExLjM0MTQgMTAuNTIzNiAxMS42NTggMTAuNTIzNiAxMS44NTMzIDEwLjMyODNMMTQuMzI4MSA3Ljg1MzQ1QzE0LjUyMzQgNy42NTgxOSAxNC41MjM0IDcuMzQxNjEgMTQuMzI4MSA3LjE0NjM0TDExLjg1MzMgNC42NzE0N0MxMS42NTggNC40NzYyMSAxMS4zNDE0IDQuNDc2MjEgMTEuMTQ2MiA0LjY3MTQ3TDguNjcxMjkgNy4xNDYzNFpNMTEuNDk5NyA5LjI2NzY2TDkuNzMxOTUgNy40OTk5TDExLjQ5OTcgNS43MzIxM0wxMy4yNjc1IDcuNDk5OUwxMS40OTk3IDkuMjY3NjZaTTQuNjcxMjkgMTEuODUzNUM0LjQ3NjAzIDExLjY1ODIgNC40NzYwMyAxMS4zNDE2IDQuNjcxMjkgMTEuMTQ2M0w3LjE0NjE2IDguNjcxNDdDNy4zNDE0MiA4LjQ3NjIxIDcuNjU4MDEgOC40NzYyMSA3Ljg1MzI3IDguNjcxNDdMMTAuMzI4MSAxMS4xNDYzQzEwLjUyMzQgMTEuMzQxNiAxMC41MjM0IDExLjY1ODIgMTAuMzI4MSAxMS44NTM1TDcuODUzMjcgMTQuMzI4M0M3LjY1ODAxIDE0LjUyMzYgNy4zNDE0MiAxNC41MjM2IDcuMTQ2MTYgMTQuMzI4M0w0LjY3MTI5IDExLjg1MzVaTTUuNzMxOTUgMTEuNDk5OUw3LjQ5OTcxIDEzLjI2NzdMOS4yNjc0OCAxMS40OTk5TDcuNDk5NzEgOS43MzIxM0w1LjczMTk1IDExLjQ5OTlaTTAuNjcxMjg4IDcuMTQ2NDlDMC40NzYwMjYgNy4zNDE3NSAwLjQ3NjAyNiA3LjY1ODM0IDAuNjcxMjg4IDcuODUzNkwzLjE0NjE2IDEwLjMyODVDMy4zNDE0MiAxMC41MjM3IDMuNjU4MDEgMTAuNTIzNyAzLjg1MzI3IDEwLjMyODVMNi4zMjgxNCA3Ljg1MzZDNi41MjM0IDcuNjU4MzQgNi41MjM0IDcuMzQxNzUgNi4zMjgxNCA3LjE0NjQ5TDMuODUzMjcgNC42NzE2MkMzLjY1ODAxIDQuNDc2MzYgMy4zNDE0MiA0LjQ3NjM2IDMuMTQ2MTYgNC42NzE2MkwwLjY3MTI4OCA3LjE0NjQ5Wk0zLjQ5OTcyIDkuMjY3ODFMMS43MzE5NSA3LjUwMDA1TDMuNDk5NzIgNS43MzIyOEw1LjI2NzQ4IDcuNTAwMDVMMy40OTk3MiA5LjI2NzgxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuODc5MzUgMUgzLjlIMTEuMUgxMS4xMjA3QzExLjUyMzEgMC45OTk5OTQgMTEuODU1MyAwLjk5OTk4OSAxMi4xMjU5IDEuMDIyMUMxMi40MDcgMS4wNDUwNiAxMi42NjUzIDEuMDk0MzQgMTIuOTA4IDEuMjE3OTlDMTMuMjg0MyAxLjQwOTczIDEzLjU5MDMgMS43MTU3IDEzLjc4MiAyLjA5MjAyQzEzLjkwNTcgMi4zMzQ2OSAxMy45NTQ5IDIuNTkzMDQgMTMuOTc3OSAyLjg3NDA5QzE0IDMuMTQ0NjggMTQgMy40NzY4NiAxNCAzLjg3OTM0VjMuOVYxMS4xVjExLjEyMDdDMTQgMTEuNTIzMSAxNCAxMS44NTUzIDEzLjk3NzkgMTIuMTI1OUMxMy45NTQ5IDEyLjQwNyAxMy45MDU3IDEyLjY2NTMgMTMuNzgyIDEyLjkwOEMxMy41OTAzIDEzLjI4NDMgMTMuMjg0MyAxMy41OTAzIDEyLjkwOCAxMy43ODJDMTIuNjY1MyAxMy45MDU3IDEyLjQwNyAxMy45NTQ5IDEyLjEyNTkgMTMuOTc3OUMxMS44NTUzIDE0IDExLjUyMzEgMTQgMTEuMTIwNyAxNEgxMS4xSDMuOUgzLjg3OTM0QzMuNDc2ODYgMTQgMy4xNDQ2OCAxNCAyLjg3NDA5IDEzLjk3NzlDMi41OTMwNCAxMy45NTQ5IDIuMzM0NjkgMTMuOTA1NyAyLjA5MjAyIDEzLjc4MkMxLjcxNTcgMTMuNTkwMyAxLjQwOTczIDEzLjI4NDMgMS4yMTc5OSAxMi45MDhDMS4wOTQzNCAxMi42NjUzIDEuMDQ1MDYgMTIuNDA3IDEuMDIyMSAxMi4xMjU5QzAuOTk5OTg5IDExLjg1NTMgMC45OTk5OTQgMTEuNTIzMSAxIDExLjEyMDdWMTEuMTIwN1YxMS4xVjMuOVYzLjg3OTM1VjMuODc5MzRDMC45OTk5OTQgMy40NzY4NiAwLjk5OTk4OSAzLjE0NDY4IDEuMDIyMSAyLjg3NDA5QzEuMDQ1MDYgMi41OTMwNCAxLjA5NDM0IDIuMzM0NjkgMS4yMTc5OSAyLjA5MjAyQzEuNDA5NzMgMS43MTU3IDEuNzE1NyAxLjQwOTczIDIuMDkyMDIgMS4yMTc5OUMyLjMzNDY5IDEuMDk0MzQgMi41OTMwNCAxLjA0NTA2IDIuODc0MDkgMS4wMjIxQzMuMTQ0NjkgMC45OTk5ODkgMy40NzY4NyAwLjk5OTk5NCAzLjg3OTM1IDFaTTIuOTU1NTIgMi4wMTg3OEMyLjczNjMxIDIuMDM2NjkgMi42MjQyMSAyLjA2OTE1IDIuNTQ2MDEgMi4xMDg5OUMyLjM1Nzg1IDIuMjA0ODcgMi4yMDQ4NyAyLjM1Nzg1IDIuMTA4OTkgMi41NDYwMUMyLjA2OTE1IDIuNjI0MjEgMi4wMzY2OSAyLjczNjMxIDIuMDE4NzggMi45NTU1MkMyLjAwMDM5IDMuMTgwNTYgMiAzLjQ3MTcxIDIgMy45VjdIN1YySDMuOUMzLjQ3MTcxIDIgMy4xODA1NiAyLjAwMDM5IDIuOTU1NTIgMi4wMTg3OFpNNyA4SDJWMTEuMUMyIDExLjUyODMgMi4wMDAzOSAxMS44MTk0IDIuMDE4NzggMTIuMDQ0NUMyLjAzNjY5IDEyLjI2MzcgMi4wNjkxNSAxMi4zNzU4IDIuMTA4OTkgMTIuNDU0QzIuMjA0ODcgMTIuNjQyMiAyLjM1Nzg1IDEyLjc5NTEgMi41NDYwMSAxMi44OTFDMi42MjQyMSAxMi45MzA5IDIuNzM2MzEgMTIuOTYzMyAyLjk1NTUyIDEyLjk4MTJDMy4xODA1NiAxMi45OTk2IDMuNDcxNzEgMTMgMy45IDEzSDdWOFpNOCA4SDEzVjExLjFDMTMgMTEuNTI4MyAxMi45OTk2IDExLjgxOTQgMTIuOTgxMiAxMi4wNDQ1QzEyLjk2MzMgMTIuMjYzNyAxMi45MzA5IDEyLjM3NTggMTIuODkxIDEyLjQ1NEMxMi43OTUxIDEyLjY0MjIgMTIuNjQyMiAxMi43OTUxIDEyLjQ1NCAxMi44OTFDMTIuMzc1OCAxMi45MzA5IDEyLjI2MzcgMTIuOTYzMyAxMi4wNDQ1IDEyLjk4MTJDMTEuODE5NCAxMi45OTk2IDExLjUyODMgMTMgMTEuMSAxM0g4VjhaTTEzIDdIOFYySDExLjFDMTEuNTI4MyAyIDExLjgxOTQgMi4wMDAzOSAxMi4wNDQ1IDIuMDE4NzhDMTIuMjYzNyAyLjAzNjY5IDEyLjM3NTggMi4wNjkxNSAxMi40NTQgMi4xMDg5OUMxMi42NDIyIDIuMjA0ODcgMTIuNzk1MSAyLjM1Nzg1IDEyLjg5MSAyLjU0NjAxQzEyLjkzMDkgMi42MjQyMSAxMi45NjMzIDIuNzM2MzEgMTIuOTgxMiAyLjk1NTUyQzEyLjk5OTYgMy4xODA1NiAxMyAzLjQ3MTcxIDEzIDMuOVY3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuODUzNjcgMS40ODk1NkM3LjY1ODQxIDEuMjk0MjkgNy4zNDE4MiAxLjI5NDI5IDcuMTQ2NTYgMS40ODk1NkwxLjQ4OTcxIDcuMTQ2NDFDMS4yOTQ0NSA3LjM0MTY3IDEuMjk0NDUgNy42NTgyNSAxLjQ4OTcxIDcuODUzNTJMNy4xNDY1NiAxMy41MTA0QzcuMzQxODIgMTMuNzA1NiA3LjY1ODQxIDEzLjcwNTYgNy44NTM2NyAxMy41MTA0TDEzLjUxMDUgNy44NTM1MkMxMy43MDU4IDcuNjU4MjUgMTMuNzA1OCA3LjM0MTY3IDEzLjUxMDUgNy4xNDY0MUw3Ljg1MzY3IDEuNDg5NTZaTTcuNSAyLjU1MDMzTDIuNTUwMzcgNy40OTk5Nkw3LjUgMTIuNDQ5NlYyLjU1MDMzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sX2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMTQ2NSAxLjQ4OTU5QzcuMzQxNzYgMS4yOTQzMiA3LjY1ODM1IDEuMjk0MzIgNy44NTM2MSAxLjQ4OTU5TDEzLjUxMDUgNy4xNDY0NEMxMy43MDU3IDcuMzQxNyAxMy43MDU3IDcuNjU4MjkgMTMuNTEwNSA3Ljg1MzU1TDcuODUzNjEgMTMuNTEwNEM3LjY1ODM1IDEzLjcwNTcgNy4zNDE3NiAxMy43MDU3IDcuMTQ2NSAxMy41MTA0TDEuNDg5NjUgNy44NTM1NUMxLjI5NDM5IDcuNjU4MjkgMS4yOTQzOSA3LjM0MTcgMS40ODk2NSA3LjE0NjQ0TDcuMTQ2NSAxLjQ4OTU5Wk03LjUwMDA1IDIuNTUwMjVMMi41NTAzMSA3LjQ5OTk5TDcuNTAwMDUgMTIuNDQ5N0wxMi40NDk4IDcuNDk5OTlMNy41MDAwNSAyLjU1MDI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuODUzNjEgMS40ODk1OUM3LjY1ODM1IDEuMjk0MzIgNy4zNDE3NiAxLjI5NDMyIDcuMTQ2NSAxLjQ4OTU5TDEuNDg5NjUgNy4xNDY0NEMxLjI5NDM5IDcuMzQxNyAxLjI5NDM5IDcuNjU4MjkgMS40ODk2NSA3Ljg1MzU1TDMuOTY0NSAxMC4zMjg0TDEuNjQ2NDQgMTIuNjQ2NEMxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMy4xNTgzIDEuNjQ2NDQgMTMuMzUzNkMxLjg0MTcxIDEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDIuMzUzNTUgMTMuMzUzNkw0LjY3MTYgMTEuMDM1NUw3LjE0NjUgMTMuNTEwNEM3LjM0MTc2IDEzLjcwNTcgNy42NTgzNSAxMy43MDU3IDcuODUzNjEgMTMuNTEwNEwxMy41MTA1IDcuODUzNTVDMTMuNzA1NyA3LjY1ODI5IDEzLjcwNTcgNy4zNDE3IDEzLjUxMDUgNy4xNDY0NEwxMS4wMzU2IDQuNjcxNTRMMTMuMzUzNSAyLjM1MzU1QzEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDEuODQxNzEgMTMuMzUzNSAxLjY0NjQ1QzEzLjE1ODMgMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTIuNjQ2NCAxLjY0NjQ1TDEwLjMyODUgMy45NjQ0M0w3Ljg1MzYxIDEuNDg5NTlaTTkuNjIxMzUgNC42NzE1NEw3LjUwMDA1IDIuNTUwMjVMMi41NTAzMSA3LjQ5OTk5TDQuNjcxNiA5LjYyMTI5TDkuNjIxMzUgNC42NzE1NFpNNS4zNzg3MSAxMC4zMjg0TDcuNTAwMDUgMTIuNDQ5N0wxMi40NDk4IDcuNDk5OTlMMTAuMzI4NSA1LjM3ODY1TDUuMzc4NzEgMTAuMzI4NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE9lPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi44MDM0IDcuMTQ2NDRDMTIuOTk4NiA2Ljk1MTE4IDEzLjMxNTIgNi45NTExOCAxMy41MTA1IDcuMTQ2NDRDMTMuNzA1NyA3LjM0MTcgMTMuNzA1NyA3LjY1ODI5IDEzLjUxMDUgNy44NTM1NUMxMy4zMTUyIDguMDQ4ODEgMTIuOTk4NiA4LjA0ODgxIDEyLjgwMzQgNy44NTM1NUMxMi42MDgxIDcuNjU4MjggMTIuNjA4MSA3LjM0MTcgMTIuODAzNCA3LjE0NjQ0Wk0xMi4wOTYyIDguNTYwNjVDMTIuMjkxNSA4Ljc1NTkyIDEyLjI5MTUgOS4wNzI1IDEyLjA5NjIgOS4yNjc3NkMxMS45MDEgOS40NjMwMiAxMS41ODQ0IDkuNDYzMDIgMTEuMzg5MSA5LjI2Nzc2QzExLjE5MzkgOS4wNzI1IDExLjE5MzkgOC43NTU5MiAxMS4zODkxIDguNTYwNjVDMTEuNTg0NCA4LjM2NTM5IDExLjkwMSA4LjM2NTM5IDEyLjA5NjIgOC41NjA2NVpNMTAuNjgyIDkuOTc0ODdDMTAuODc3MyAxMC4xNzAxIDEwLjg3NzMgMTAuNDg2NyAxMC42ODIgMTAuNjgyQzEwLjQ4NjggMTAuODc3MiAxMC4xNzAyIDEwLjg3NzIgOS45NzQ5MyAxMC42ODJDOS43Nzk2NyAxMC40ODY3IDkuNzc5NjcgMTAuMTcwMSA5Ljk3NDkzIDkuOTc0ODdDMTAuMTcwMiA5Ljc3OTYgMTAuNDg2OCA5Ljc3OTYgMTAuNjgyIDkuOTc0ODdaTTkuMjY3ODIgMTEuMzg5MUM5LjQ2MzA4IDExLjU4NDMgOS40NjMwOCAxMS45MDA5IDkuMjY3ODIgMTIuMDk2MkM5LjA3MjU2IDEyLjI5MTUgOC43NTU5OCAxMi4yOTE1IDguNTYwNzEgMTIuMDk2MkM4LjM2NTQ1IDExLjkwMDkgOC4zNjU0NSAxMS41ODQzIDguNTYwNzIgMTEuMzg5MUM4Ljc1NTk4IDExLjE5MzggOS4wNzI1NiAxMS4xOTM4IDkuMjY3ODIgMTEuMzg5MVpNNy4xNDY1IDEzLjUxMDRDNi45NTEyNCAxMy4zMTUxIDYuOTUxMjQgMTIuOTk4NiA3LjE0NjUgMTIuODAzM0M3LjE3MDkxIDEyLjc3ODkgNy4xOTcyMSAxMi43NTc1IDcuMjI0OTQgMTIuNzM5MkM3LjQxOTAxIDEyLjYxMTEgNy42ODI3NSAxMi42MzI0IDcuODUzNjEgMTIuODAzM0M4LjA0ODg3IDEyLjk5ODYgOC4wNDg4NyAxMy4zMTUxIDcuODUzNjEgMTMuNTEwNEM3LjY1ODM1IDEzLjcwNTcgNy4zNDE3NiAxMy43MDU3IDcuMTQ2NSAxMy41MTA0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi45MDM4NiA4LjU2MDY1QzIuNzA4NiA4Ljc1NTkyIDIuNzA4NiA5LjA3MjUgMi45MDM4NiA5LjI2Nzc2IDMuMDk5MTIgOS40NjMwMiAzLjQxNTcxIDkuNDYzMDIgMy42MTA5NyA5LjI2Nzc2IDMuODA2MjMgOS4wNzI1IDMuODA2MjMgOC43NTU5MiAzLjYxMDk3IDguNTYwNjUgMy40MTU3MSA4LjM2NTM5IDMuMDk5MTIgOC4zNjUzOSAyLjkwMzg2IDguNTYwNjV6TTQuMzE4MDcgOS45NzQ4N0M0LjEyMjgxIDEwLjE3MDEgNC4xMjI4MSAxMC40ODY3IDQuMzE4MDcgMTAuNjgyIDQuNTEzMzQgMTAuODc3MiA0LjgyOTkyIDEwLjg3NzIgNS4wMjUxOCAxMC42ODIgNS4yMjA0NCAxMC40ODY3IDUuMjIwNDQgMTAuMTcwMSA1LjAyNTE4IDkuOTc0ODcgNC44Mjk5MiA5Ljc3OTYgNC41MTMzNCA5Ljc3OTYgNC4zMTgwNyA5Ljk3NDg3ek01LjczMjI5IDExLjM4OTFDNS41MzcwMyAxMS41ODQzIDUuNTM3MDMgMTEuOTAwOSA1LjczMjI5IDEyLjA5NjIgNS45Mjc1NSAxMi4yOTE0IDYuMjQ0MTMgMTIuMjkxNSA2LjQzOTM5IDEyLjA5NjIgNi42MzQ2NiAxMS45MDA5IDYuNjM0NjYgMTEuNTg0MyA2LjQzOTM5IDExLjM4OTEgNi4yNDQxMyAxMS4xOTM4IDUuOTI3NTUgMTEuMTkzOCA1LjczMjI5IDExLjM4OTF6TTIuMTk2NzUgNy44NTM1NUMyLjM2NzYxIDcuNjgyNjkgMi4zODg5NyA3LjQxODk1IDIuMjYwODIgNy4yMjQ4OCAyLjA5MDQ2IDYuOTY2ODQgMS43MTA2MyA2LjkyNTQ2IDEuNDg5NjUgNy4xNDY0NCAxLjI5NDM5IDcuMzQxNyAxLjI5NDM5IDcuNjU4MjkgMS40ODk2NSA3Ljg1MzU1IDEuNjg0OTEgOC4wNDg4MSAyLjAwMTQ5IDguMDQ4ODEgMi4xOTY3NSA3Ljg1MzU1ek0zLjYxMDk3IDUuNzMyMjNDMy40MTU3MSA1LjUzNjk2IDMuMDk5MTIgNS41MzY5NiAyLjkwMzg2IDUuNzMyMjMgMi43MDg2IDUuOTI3NDkgMi43MDg2IDYuMjQ0MDcgMi45MDM4NiA2LjQzOTMzIDMuMDk5MTIgNi42MzQ2IDMuNDE1NzEgNi42MzQ2IDMuNjEwOTcgNi40MzkzMyAzLjgwNjIzIDYuMjQ0MDcgMy44MDYyMyA1LjkyNzQ5IDMuNjEwOTcgNS43MzIyM3pNNS4wMjUxOCA0LjMxODAxQzQuODI5OTIgNC4xMjI3NSA0LjUxMzM0IDQuMTIyNzUgNC4zMTgwNyA0LjMxODAxIDQuMTIyODEgNC41MTMyOCA0LjEyMjgxIDQuODI5ODYgNC4zMTgwNyA1LjAyNTEyIDQuNTEzMzQgNS4yMjAzOCA0LjgyOTkyIDUuMjIwMzggNS4wMjUxOCA1LjAyNTEyIDUuMjIwNDQgNC44Mjk4NiA1LjIyMDQ0IDQuNTEzMjggNS4wMjUxOCA0LjMxODAxek02LjQzOTM5IDIuOTAzOEM2LjI0NDEzIDIuNzA4NTQgNS45Mjc1NSAyLjcwODU0IDUuNzMyMjkgMi45MDM4IDUuNTM3MDMgMy4wOTkwNiA1LjUzNzAzIDMuNDE1NjQgNS43MzIyOSAzLjYxMDkxIDUuOTI3NTUgMy44MDYxNyA2LjI0NDEzIDMuODA2MTcgNi40MzkzOSAzLjYxMDkxIDYuNjM0NjYgMy40MTU2NCA2LjYzNDY2IDMuMDk5MDYgNi40MzkzOSAyLjkwMzh6TTcuODUzNjEgMS40ODk1OUM3LjY1ODM1IDEuMjk0MzIgNy4zNDE3NiAxLjI5NDMyIDcuMTQ2NSAxLjQ4OTU5IDYuOTUxMjQgMS42ODQ4NSA2Ljk1MTI0IDIuMDAxNDMgNy4xNDY1IDIuMTk2NjkgNy4zNDE3NiAyLjM5MTk2IDcuNjU4MzUgMi4zOTE5NiA3Ljg1MzYxIDIuMTk2NjkgOC4wNDg4NyAyLjAwMTQzIDguMDQ4ODcgMS42ODQ4NSA3Ljg1MzYxIDEuNDg5NTl6TTkuMjY3ODIgMi45MDM4QzkuMDcyNTYgMi43MDg1NCA4Ljc1NTk4IDIuNzA4NTQgOC41NjA3MSAyLjkwMzggOC4zNjU0NSAzLjA5OTA2IDguMzY1NDUgMy40MTU2NCA4LjU2MDcxIDMuNjEwOTEgOC43NTU5OCAzLjgwNjE3IDkuMDcyNTYgMy44MDYxNyA5LjI2NzgyIDMuNjEwOTEgOS40NjMwOCAzLjQxNTY0IDkuNDYzMDggMy4wOTkwNiA5LjI2NzgyIDIuOTAzOHpNMTAuNjgyIDQuMzE4MDFDMTAuNDg2OCA0LjEyMjc1IDEwLjE3MDIgNC4xMjI3NSA5Ljk3NDkzIDQuMzE4MDEgOS43Nzk2NyA0LjUxMzI4IDkuNzc5NjcgNC44Mjk4NiA5Ljk3NDkzIDUuMDI1MTIgMTAuMTcwMiA1LjIyMDM4IDEwLjQ4NjggNS4yMjAzOCAxMC42ODIgNS4wMjUxMiAxMC44NzczIDQuODI5ODYgMTAuODc3MyA0LjUxMzI4IDEwLjY4MiA0LjMxODAxek0xMi4wOTYyIDUuNzMyMjNDMTEuOTAxIDUuNTM2OTYgMTEuNTg0NCA1LjUzNjk2IDExLjM4OTEgNS43MzIyMyAxMS4xOTM5IDUuOTI3NDkgMTEuMTkzOSA2LjI0NDA3IDExLjM4OTEgNi40MzkzMyAxMS41ODQ0IDYuNjM0NiAxMS45MDEgNi42MzQ2IDEyLjA5NjIgNi40MzkzMyAxMi4yOTE1IDYuMjQ0MDcgMTIuMjkxNSA1LjkyNzQ5IDEyLjA5NjIgNS43MzIyM3pcIixmaWxsOm59KSl9LEVlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDEuNUMyIDEuNzc2MTQgMS43NzYxNCAyIDEuNSAyQzEuMjIzODYgMiAxIDEuNzc2MTQgMSAxLjVDMSAxLjIyMzg2IDEuMjIzODYgMSAxLjUgMUMxLjc3NjE0IDEgMiAxLjIyMzg2IDIgMS41Wk01IDEzSDEwVjJMNSAyTDUgMTNaTTQgMTNDNCAxMy41NTIzIDQuNDQ3NzIgMTQgNSAxNEgxMEMxMC41NTIzIDE0IDExIDEzLjU1MjMgMTEgMTNWMkMxMSAxLjQ0NzcyIDEwLjU1MjMgMSAxMCAxSDVDNC40NDc3MiAxIDQgMS40NDc3MSA0IDJWMTNaTTEzLjUgMkMxMy43NzYxIDIgMTQgMS43NzYxNCAxNCAxLjVDMTQgMS4yMjM4NiAxMy43NzYxIDEgMTMuNSAxQzEzLjIyMzkgMSAxMyAxLjIyMzg2IDEzIDEuNUMxMyAxLjc3NjE0IDEzLjIyMzkgMiAxMy41IDJaTTIgMy41QzIgMy43NzYxNCAxLjc3NjE0IDQgMS41IDRDMS4yMjM4NiA0IDEgMy43NzYxNCAxIDMuNUMxIDMuMjIzODYgMS4yMjM4NiAzIDEuNSAzQzEuNzc2MTQgMyAyIDMuMjIzODYgMiAzLjVaTTEzLjUgNEMxMy43NzYxIDQgMTQgMy43NzYxNCAxNCAzLjVDMTQgMy4yMjM4NiAxMy43NzYxIDMgMTMuNSAzQzEzLjIyMzkgMyAxMyAzLjIyMzg2IDEzIDMuNUMxMyAzLjc3NjE0IDEzLjIyMzkgNCAxMy41IDRaTTIgNS41QzIgNS43NzYxNCAxLjc3NjE0IDYgMS41IDZDMS4yMjM4NiA2IDEgNS43NzYxNCAxIDUuNUMxIDUuMjIzODYgMS4yMjM4NiA1IDEuNSA1QzEuNzc2MTQgNSAyIDUuMjIzODYgMiA1LjVaTTEzLjUgNkMxMy43NzYxIDYgMTQgNS43NzYxNCAxNCA1LjVDMTQgNS4yMjM4NiAxMy43NzYxIDUgMTMuNSA1QzEzLjIyMzkgNSAxMyA1LjIyMzg2IDEzIDUuNUMxMyA1Ljc3NjE0IDEzLjIyMzkgNiAxMy41IDZaTTIgNy41QzIgNy43NzYxNCAxLjc3NjE0IDggMS41IDhDMS4yMjM4NiA4IDEgNy43NzYxNCAxIDcuNUMxIDcuMjIzODYgMS4yMjM4NiA3IDEuNSA3QzEuNzc2MTQgNyAyIDcuMjIzODYgMiA3LjVaTTEzLjUgOEMxMy43NzYxIDggMTQgNy43NzYxNCAxNCA3LjVDMTQgNy4yMjM4NiAxMy43NzYxIDcgMTMuNSA3QzEzLjIyMzkgNyAxMyA3LjIyMzg2IDEzIDcuNUMxMyA3Ljc3NjE0IDEzLjIyMzkgOCAxMy41IDhaTTIgOS41QzIgOS43NzYxNCAxLjc3NjE0IDEwIDEuNSAxMEMxLjIyMzg2IDEwIDEgOS43NzYxNCAxIDkuNUMxIDkuMjIzODYgMS4yMjM4NiA5IDEuNSA5QzEuNzc2MTQgOSAyIDkuMjIzODYgMiA5LjVaTTEzLjUgMTBDMTMuNzc2MSAxMCAxNCA5Ljc3NjE0IDE0IDkuNUMxNCA5LjIyMzg2IDEzLjc3NjEgOSAxMy41IDlDMTMuMjIzOSA5IDEzIDkuMjIzODYgMTMgOS41QzEzIDkuNzc2MTQgMTMuMjIzOSAxMCAxMy41IDEwWk0yIDExLjVDMiAxMS43NzYxIDEuNzc2MTQgMTIgMS41IDEyQzEuMjIzODYgMTIgMSAxMS43NzYxIDEgMTEuNUMxIDExLjIyMzkgMS4yMjM4NiAxMSAxLjUgMTFDMS43NzYxNCAxMSAyIDExLjIyMzkgMiAxMS41Wk0xMy41IDEyQzEzLjc3NjEgMTIgMTQgMTEuNzc2MSAxNCAxMS41QzE0IDExLjIyMzkgMTMuNzc2MSAxMSAxMy41IDExQzEzLjIyMzkgMTEgMTMgMTEuMjIzOSAxMyAxMS41QzEzIDExLjc3NjEgMTMuMjIzOSAxMiAxMy41IDEyWk0yIDEzLjVDMiAxMy43NzYxIDEuNzc2MTQgMTQgMS41IDE0QzEuMjIzODYgMTQgMSAxMy43NzYxIDEgMTMuNUMxIDEzLjIyMzkgMS4yMjM4NiAxMyAxLjUgMTNDMS43NzYxNCAxMyAyIDEzLjIyMzkgMiAxMy41Wk0xMy41IDE0QzEzLjc3NjEgMTQgMTQgMTMuNzc2MSAxNCAxMy41QzE0IDEzLjIyMzkgMTMuNzc2MSAxMyAxMy41IDEzQzEzLjIyMzkgMTMgMTMgMTMuMjIzOSAxMyAxMy41QzEzIDEzLjc3NjEgMTMuMjIzOSAxNCAxMy41IDE0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sU2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjA2OTcgMS43Njc0NkMxMi40ODA3IDEuMjE5NDcgMTEuNDYwNSAwLjQ1NDMxMSAxMS4wNDk1IDEuMDAyM0MxMC42Mzg1IDEuNTUwMjggMTEuNjU4OCAyLjMxNTQ0IDEyLjA2OTcgMS43Njc0NlpNOC4zOTI2MyAxLjA3ODExQzcuMTU1ODUgMC45NTA2MDIgNS43ODIzIDEuMTYzNDggNC41ODQzMyAxLjcwOTM3QzMuMzg1NTIgMi4yNTU2MyAyLjMyNzM1IDMuMTUzMDkgMS43ODg0NCA0LjQxODMyQzEuMzc1NzQgNS4zODcyNCAxLjAxNzE1IDYuMjgxMTMgMS4wMDA4OCA3LjQ0MzU0QzAuOTg0NzI0IDguNTk4NDQgMS4zMDUyMiA5Ljk2ODk4IDIuMTMxNzQgMTEuOTI4QzIuNjExNDIgMTMuMDY0OSA0LjAzOTYzIDEzLjU0NDYgNS4xMzg5NSAxMy44MDc5QzYuNDA4MzYgMTQuMTExOSA3LjgwODU3IDE0LjE5MTQgOC42NjQ0IDE0LjA3NDJDOS4zNjUxNSAxMy45NzgyIDEwLjE0NDggMTMuODI4NCAxMC43OTg3IDEzLjI5N0MxMS44OTc3IDEyLjQwMzkgMTIuOTAwOSAxMS4zOTU1IDEzLjQ5OTQgMTAuMzM5M0MxNC4xMDQgOS4yNzIyMSAxNC4zMjU2IDguMDkyMDcgMTMuNzIxNiA2Ljk1MzI0QzEzLjU2MjggNi42NTM3MyAxMy4zMTYgNi41NzczNCAxMy4wNDEyIDYuNDkyM0MxMi45Mzc0IDYuNDYwMTYgMTIuODI5NSA2LjQyNjc4IDEyLjcyMDkgNi4zNzk2NkMxMS42MjExIDUuOTAyMzQgMTAuOTY0NiA1LjM0OTYzIDEwLjkxMzUgNS4wMjg3NkMxMC44NjU2IDQuNzI4MDggMTAuOTIyMSA0LjUxNDYzIDEwLjk4MTEgNC4yOTE4MUMxMS4wMTI5IDQuMTcxOTkgMTEuMDQ1MyA0LjA0OTQ3IDExLjA2MjYgMy45MDkyMkMxMS4wODM4IDMuNzM3MzcgMTEuMDgxNCAzLjMzMzE5IDEwLjY5OTYgMy4xMjc2MUMxMC40MDQ4IDIuOTY4ODggMTAuMjE2NCAyLjY1ODQzIDEwLjA0MDcgMi4zNjkwNEM5Ljk5NzQyIDIuMjk3NzUgOS45NTQ5MiAyLjIyNzczIDkuOTExOCAyLjE2MTU4QzkuNjI2MzQgMS43MjM2NyA5LjIwNzY5IDEuMTYyMTMgOC4zOTI2MyAxLjA3ODExWk00Ljk5ODk5IDIuNjE5MzVDMy45NjQ4MyAzLjA5MDU4IDMuMTI1NTQgMy44MzA5NyAyLjcwODQ2IDQuODEwMThDMi4yOTgwOCA1Ljc3MzY4IDIuMDE0MDYgNi41MDg3MyAyLjAwMDc5IDcuNDU3NTNDMS45ODc0MSA4LjQxMzg1IDIuMjUwNDMgOS42MzY4IDMuMDUzMSAxMS41MzkzQzMuMzkxODEgMTIuMzQyMSA0LjYyMTY3IDEyLjY1NTcgNS4zNzE4NiAxMi44MzU0QzYuNTQ5MyAxMy4xMTc0IDcuODIyIDEzLjE4MDIgOC41Mjg2OCAxMy4wODM0QzkuMjEyNzEgMTIuOTg5NyA5Ljc0NTY4IDEyLjg2NDIgMTAuMTY4MSAxMi41MjA5QzExLjIyOSAxMS42NTg3IDEyLjEyMSAxMC43NDM1IDEyLjYyOTMgOS44NDYzNUMxMi45MzQ5IDkuMzA3MDkgMTMuNTE0MSA3LjcwMjggMTIuNjI5MiA3LjM4NzNDMTAuNzUzOSA2LjcxODc1IDEwLjI2MiA2LjA2NjY5IDkuOTkwMTEgNS40MTI2OEM5LjgwOTE1IDQuOTc3NDQgOS44Mjg2OCA0LjUyMjgyIDkuOTU3NDEgNC4wNzg4NUw5Ljk1NzQxIDQuMDc4ODRDOS45NzY2MiA0LjAxMjYgOS45OTUzOCAzLjk0NzkxIDEwLjAzMzQgMy44ODg4MkM5LjgxODU3IDMuNzM2NzYgOS42NTE1IDMuNTUxOTUgOS41MTQ2NCAzLjM3MTVDOS40Mjg3NiAzLjI1ODI4IDkuMzQ2OSAzLjEyMDk5IDkuMjYxOTcgMi45Nzg1NkM5LjAxODY2IDIuNTcwNTIgOC43NTAxOCAyLjEyMDI3IDguMjkwMDggMi4wNzI4M0M3LjIyODg5IDEuOTYzNDMgNi4wMzM5OCAyLjE0NzcyIDQuOTk4OTkgMi42MTkzNVpNMTMuMjA4MSAzLjc3NDcxQzEzLjQ0MSAzLjIyNjcxIDEyLjQ1NDcgMi42MzYwNiAxMi4wODIyIDMuMTAxNjNDMTEuNTgxNyAzLjcyNzMyIDEyLjkwMjkgNC40OTI4MSAxMy4yMDgxIDMuNzc0NzFaTTE0LjM2NzIgMi4yNjAzMUMxNC45NjY4IDIuMjc0OTMgMTUuMTU1MSAxLjExNjAzIDE0LjU3MTggMC45NDkzNzFDMTMuODA3NiAwLjczMTAyNiAxMy41OTE4IDIuMjQxMzkgMTQuMzY3MiAyLjI2MDMxWk0xNC4yODU3IDUuMDkwOThDMTQuODY0NCA1LjEwMDA0IDE1LjA0NjIgNC4zODIyMiAxNC40ODMyIDQuMjc4OTlDMTMuNzQ1NSA0LjE0Mzc1IDEzLjUzNzMgNS4wNzkyNyAxNC4yODU3IDUuMDkwOThaTTYuOTA3NSA0LjI4NjcyQzYuNDY4OTggNC42Njc1NCA2LjA1MjIgNC4xNTE4NSA1Ljk3OTgzIDMuNzM2NUM1Ljg2ODQ4IDMuMDk3NDQgNi4zMzY5NiAyLjU2ODU2IDYuOTQ4MjMgMi45MTE1NkM3LjQzMzQ0IDMuMTgzODIgNy4yNjY3OCAzLjk3NDcxIDYuOTA3NSA0LjI4NjcyWk00Ljk0NDU1IDUuODgxODRDNS40MDg4NSA1LjQxNzU0IDQuNTk1NjcgNC41NzAxMyA0LjExNDI1IDUuMDUxNTRDMy44MzMzOCA1LjMzMjQyIDQuMDA5MzYgNS42NTM3NiA0LjIzNzQ0IDUuODgxODRDNC40MzI3MSA2LjA3NzEgNC43NDkyOSA2LjA3NzEgNC45NDQ1NSA1Ljg4MTg0Wk02Ljk3NzE2IDYuNzE5ODRDNy4zMTE4MSA3LjM4OTE0IDguNDg4MDQgNi43OTE1OSA3Ljk5NDEzIDYuMTQ3ODhDNy44NjUxOSA1Ljk3OTgzIDcuNjg2NTcgNS45NDk0IDcuNjIxNDUgNS45NDIwN0M3LjIxMjE3IDUuODk2MDEgNi43NjM0OSA2LjI5MjUgNi45NzcxNiA2LjcxOTg0Wk02Ljk4Nzk4IDguNzI0NjFDNy4xNDA2NiA5LjExODggNy41MTEyMiA5LjMxODcgNy45MTkxNSA5LjE2MzNDOC4yNzQzNCA5LjAyNzk5IDguMzMxODYgOC4zOTY4OSA4LjE3MTc1IDguMDc0MjdDOC4wMjMzMSA3Ljc3NTE0IDcuNjM5NTYgNy42Nzc5MyA3LjMzNzQ3IDcuNzk0MTdDNi45ODUxMiA3LjkyOTc2IDYuODU2NzIgOC4zODcwOCA2Ljk4NTc2IDguNzE4ODlMNi45ODc5OCA4LjcyNDYxWk0xMC4zODg1IDguODQwODFDMTAuNzU3NSA4LjY1NjYgMTEuNDYxNyA4LjgyNzcxIDExLjQ2MTcgOS4zMTE5OUMxMS40NjE3IDkuNzEyODYgMTAuOTU4NyAxMC4yMTY1IDEwLjU2MzQgMTAuMjgyNkMxMC4xODEzIDEwLjM0NjUgOS43MDUxNSA5Ljk3NTgxIDkuNzY2NDggOS41NzcxOEM5LjgxNDQ1IDkuMjY1MzkgMTAuMTIxNyA4Ljk3NDAxIDEwLjM4ODUgOC44NDA4MVpNNy41NjcwNCAxMC44NDMyQzcuMzM0NjEgMTAuNzUwMiA3LjE0MzUzIDEwLjg2MDEgNy4xMTQzNyAxMC44NzY5TDcuMTEyNzkgMTAuODc3OEM2LjkwNzgyIDEwLjk5NDkgNi43MTM4MyAxMS4yNDM5IDYuNjc0NyAxMS40ODQyQzYuNTkwMTggMTIuMDAzNCA3LjEzMTk5IDEyLjEyMzkgNy41MjY2MSAxMi4wOTg3QzguMjA3NCAxMi4wNTUzIDguMDY1NDcgMTEuMDQyNiA3LjU2NzA0IDEwLjg0MzJaTTQuODgwNSAxMC44OTMyQzUuMDY3NCAxMC43NzIzIDUuMTU2NTggMTAuNTM2MyA1LjA4MjkzIDEwLjMxNTNDNC45MzA0NiA5Ljc5Njg3IDQuMzI0NiA5LjcxMjUyIDMuOTY1NjEgMTAuMTI5N0MzLjc5MzM2IDEwLjMyOTkgMy44MDc0OSAxMC42Mjc0IDMuOTkyMTQgMTAuODEwNUwzLjk5NDk1IDEwLjgxNEwzLjk5NzkgMTAuODE3NkM0LjIyMDI1IDExLjA5NDIgNC42MzYyNCAxMS4xODU3IDQuODgwNSAxMC44OTMyWk0zLjA0Njk1IDcuODEzMThDMy4zMzE0NyA4LjA5NzcgMy42MDA3NyA4LjE1MDY3IDMuOTg0NDMgOC4wNTg1OUM0LjYwODI2IDcuOTA4ODcgNC4xMzgxNCA2LjI0Mjk5IDMuMDQ3IDYuODcyOTZDMi43MDkzOSA3LjA2Nzg4IDIuODY3MTYgNy42MzMzOSAzLjA0Njk1IDcuODEzMThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxNZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMSA5LjUwMDA2QzEgMTAuMzI4NSAxLjY3MTU3IDExLjAwMDEgMi41IDExLjAwMDFINEw0IDEwLjAwMDFIMi41QzIuMjIzODYgMTAuMDAwMSAyIDkuNzc2MiAyIDkuNTAwMDZMMiAyLjUwMDA2QzIgMi4yMjM5MiAyLjIyMzg2IDIuMDAwMDYgMi41IDIuMDAwMDZMOS41IDIuMDAwMDZDOS43NzYxNCAyLjAwMDA2IDEwIDIuMjIzOTIgMTAgMi41MDAwNlY0LjAwMDAySDUuNUM0LjY3MTU4IDQuMDAwMDIgNCA0LjY3MTU5IDQgNS41MDAwMlYxMi41QzQgMTMuMzI4NCA0LjY3MTU4IDE0IDUuNSAxNEgxMi41QzEzLjMyODQgMTQgMTQgMTMuMzI4NCAxNCAxMi41VjUuNTAwMDJDMTQgNC42NzE1OSAxMy4zMjg0IDQuMDAwMDIgMTIuNSA0LjAwMDAySDExVjIuNTAwMDZDMTEgMS42NzE2MyAxMC4zMjg0IDEuMDAwMDYgOS41IDEuMDAwMDZIMi41QzEuNjcxNTcgMS4wMDAwNiAxIDEuNjcxNjMgMSAyLjUwMDA2VjkuNTAwMDZaTTUgNS41MDAwMkM1IDUuMjIzODggNS4yMjM4NiA1LjAwMDAyIDUuNSA1LjAwMDAySDEyLjVDMTIuNzc2MSA1LjAwMDAyIDEzIDUuMjIzODggMTMgNS41MDAwMlYxMi41QzEzIDEyLjc3NjIgMTIuNzc2MSAxMyAxMi41IDEzSDUuNUM1LjIyMzg2IDEzIDUgMTIuNzc2MiA1IDEyLjVWNS41MDAwMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGplPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05Ljg3NzM3IDEySDkuOUgxMS41QzExLjc3NjEgMTIgMTIgMTEuNzc2MSAxMiAxMS41QzEyIDExLjIyMzkgMTEuNzc2MSAxMSAxMS41IDExSDkuOUM4Ljc3MTY0IDExIDcuOTU1NDUgMTAuOTk5NiA3LjMxMzUyIDEwLjk0NzJDNi42Nzc0NCAxMC44OTUyIDYuMjU2NjIgMTAuNzk0NiA1LjkxMTAzIDEwLjYxODVDNS4yNTI0NyAxMC4yODMgNC43MTcwMyA5Ljc0NzUzIDQuMzgxNDggOS4wODg5N0M0LjIwNTM5IDguNzQzMzggNC4xMDQ4MSA4LjMyMjU2IDQuMDUyODQgNy42ODY0OEM0LjAwMDM5IDcuMDQ0NTUgNCA2LjIyODM2IDQgNS4xVjMuNUM0IDMuMjIzODYgMy43NzYxNCAzIDMuNSAzQzMuMjIzODYgMyAzIDMuMjIzODYgMyAzLjVWNS4xVjUuMTIyNjNDMyA2LjIyMzU5IDMgNy4wODA1MiAzLjA1NjE2IDcuNzY3OTFDMy4xMTMxOCA4LjQ2NTg0IDMuMjMwNTggOS4wMzI5IDMuNDkwNDcgOS41NDI5NkMzLjkyMTkgMTAuMzg5NyA0LjYxMDMxIDExLjA3ODEgNS40NTcwNCAxMS41MDk1QzUuOTY3MSAxMS43Njk0IDYuNTM0MTYgMTEuODg2OCA3LjIzMjA5IDExLjk0MzhDNy45MTk0OCAxMiA4Ljc3NjQxIDEyIDkuODc3MzcgMTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxrZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS4xMjI2MyAxMkg1LjFIMy41QzMuMjIzODYgMTIgMyAxMS43NzYxIDMgMTEuNUMzIDExLjIyMzkgMy4yMjM4NiAxMSAzLjUgMTFINS4xQzYuMjI4MzYgMTEgNy4wNDQ1NSAxMC45OTk2IDcuNjg2NDggMTAuOTQ3MkM4LjMyMjU2IDEwLjg5NTIgOC43NDMzOCAxMC43OTQ2IDkuMDg4OTcgMTAuNjE4NUM5Ljc0NzUzIDEwLjI4MyAxMC4yODMgOS43NDc1MyAxMC42MTg1IDkuMDg4OTdDMTAuNzk0NiA4Ljc0MzM4IDEwLjg5NTIgOC4zMjI1NiAxMC45NDcyIDcuNjg2NDhDMTAuOTk5NiA3LjA0NDU1IDExIDYuMjI4MzYgMTEgNS4xVjMuNUMxMSAzLjIyMzg2IDExLjIyMzkgMyAxMS41IDNDMTEuNzc2MSAzIDEyIDMuMjIzODYgMTIgMy41VjUuMVY1LjEyMjYzQzEyIDYuMjIzNTkgMTIgNy4wODA1MiAxMS45NDM4IDcuNzY3OTFDMTEuODg2OCA4LjQ2NTg0IDExLjc2OTQgOS4wMzI5IDExLjUwOTUgOS41NDI5NkMxMS4wNzgxIDEwLjM4OTcgMTAuMzg5NyAxMS4wNzgxIDkuNTQyOTYgMTEuNTA5NUM5LjAzMjkgMTEuNzY5NCA4LjQ2NTg0IDExLjg4NjggNy43Njc5MSAxMS45NDM4QzcuMDgwNTIgMTIgNi4yMjM1OSAxMiA1LjEyMjYzIDEyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuODc3MzcgM0g5LjlIMTEuNUMxMS43NzYxIDMgMTIgMy4yMjM4NiAxMiAzLjVDMTIgMy43NzYxNCAxMS43NzYxIDQgMTEuNSA0SDkuOUM4Ljc3MTY0IDQgNy45NTU0NSA0LjAwMDM5IDcuMzEzNTIgNC4wNTI4NEM2LjY3NzQ0IDQuMTA0ODEgNi4yNTY2MiA0LjIwNTM5IDUuOTExMDMgNC4zODE0OEM1LjI1MjQ3IDQuNzE3MDMgNC43MTcwMyA1LjI1MjQ3IDQuMzgxNDggNS45MTEwM0M0LjIwNTM5IDYuMjU2NjIgNC4xMDQ4MSA2LjY3NzQ0IDQuMDUyODQgNy4zMTM1MkM0LjAwMDM5IDcuOTU1NDUgNCA4Ljc3MTY0IDQgOS45VjExLjVDNCAxMS43NzYxIDMuNzc2MTQgMTIgMy41IDEyQzMuMjIzODYgMTIgMyAxMS43NzYxIDMgMTEuNVY5LjlWOS44NzczN0MzIDguNzc2NDEgMyA3LjkxOTQ4IDMuMDU2MTYgNy4yMzIwOUMzLjExMzE4IDYuNTM0MTYgMy4yMzA1OCA1Ljk2NzEgMy40OTA0NyA1LjQ1NzA0QzMuOTIxOSA0LjYxMDMxIDQuNjEwMzEgMy45MjE5IDUuNDU3MDQgMy40OTA0N0M1Ljk2NzEgMy4yMzA1OCA2LjUzNDE2IDMuMTEzMTggNy4yMzIwOSAzLjA1NjE2QzcuOTE5NDggMyA4Ljc3NjQxIDMgOS44NzczNyAzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuMTIyNjMgM0g1LjFIMy41QzMuMjIzODYgMyAzIDMuMjIzODYgMyAzLjVDMyAzLjc3NjE0IDMuMjIzODYgNCAzLjUgNEg1LjFDNi4yMjgzNiA0IDcuMDQ0NTUgNC4wMDAzOSA3LjY4NjQ4IDQuMDUyODRDOC4zMjI1NiA0LjEwNDgxIDguNzQzMzggNC4yMDUzOSA5LjA4ODk3IDQuMzgxNDhDOS43NDc1MyA0LjcxNzAzIDEwLjI4MyA1LjI1MjQ3IDEwLjYxODUgNS45MTEwM0MxMC43OTQ2IDYuMjU2NjIgMTAuODk1MiA2LjY3NzQ0IDEwLjk0NzIgNy4zMTM1MkMxMC45OTk2IDcuOTU1NDUgMTEgOC43NzE2NCAxMSA5LjlWMTEuNUMxMSAxMS43NzYxIDExLjIyMzkgMTIgMTEuNSAxMkMxMS43NzYxIDEyIDEyIDExLjc3NjEgMTIgMTEuNVY5LjlWOS44NzczN0MxMiA4Ljc3NjQxIDEyIDcuOTE5NDggMTEuOTQzOCA3LjIzMjA5QzExLjg4NjggNi41MzQxNiAxMS43Njk0IDUuOTY3MSAxMS41MDk1IDUuNDU3MDRDMTEuMDc4MSA0LjYxMDMxIDEwLjM4OTcgMy45MjE5IDkuNTQyOTYgMy40OTA0N0M5LjAzMjkgMy4yMzA1OCA4LjQ2NTg0IDMuMTEzMTggNy43Njc5MSAzLjA1NjE2QzcuMDgwNTIgMyA2LjIyMzU5IDMgNS4xMjI2MyAzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwLjEgM0MxMC41MjgzIDMgMTAuODE5NCAzLjAwMDM5IDExLjA0NDUgMy4wMTg3OEMxMS4yNjM3IDMuMDM2NjkgMTEuMzc1OCAzLjA2OTE1IDExLjQ1NCAzLjEwODk5QzExLjY0MjIgMy4yMDQ4NyAxMS43OTUxIDMuMzU3ODUgMTEuODkxIDMuNTQ2MDFDMTEuOTMwOSAzLjYyNDIxIDExLjk2MzMgMy43MzYzMSAxMS45ODEyIDMuOTU1NTJDMTEuOTk5NiA0LjE4MDU2IDEyIDQuNDcxNzEgMTIgNC45VjUuNUMxMiA1Ljc3NjE0IDEyLjIyMzkgNiAxMi41IDZDMTIuNzc2MSA2IDEzIDUuNzc2MTQgMTMgNS41VjQuODc5MzVDMTMgNC40NzY4NyAxMyA0LjE0NDY5IDEyLjk3NzkgMy44NzQwOUMxMi45NTQ5IDMuNTkzMDQgMTIuOTA1NyAzLjMzNDY5IDEyLjc4MiAzLjA5MjAyQzEyLjU5MDMgMi43MTU3IDEyLjI4NDMgMi40MDk3MyAxMS45MDggMi4yMTc5OUMxMS42NjUzIDIuMDk0MzQgMTEuNDA3IDIuMDQ1MDYgMTEuMTI1OSAyLjAyMjFDMTAuODU1MyAxLjk5OTk5IDEwLjUyMzEgMS45OTk5OSAxMC4xMjA3IDJIMTAuMTIwNkgxMC4xSDkuNUM5LjIyMzg2IDIgOSAyLjIyMzg2IDkgMi41QzkgMi43NzYxNCA5LjIyMzg2IDMgOS41IDNIMTAuMVpNNS41IDJINC44NzkzNUg0Ljg3OTM0QzQuNDc2ODYgMS45OTk5OSA0LjE0NDY4IDEuOTk5OTkgMy44NzQwOSAyLjAyMjFDMy41OTMwNCAyLjA0NTA2IDMuMzM0NjkgMi4wOTQzNCAzLjA5MjAyIDIuMjE3OTlDMi43MTU3IDIuNDA5NzMgMi40MDk3MyAyLjcxNTcgMi4yMTc5OSAzLjA5MjAyQzIuMDk0MzQgMy4zMzQ2OSAyLjA0NTA2IDMuNTkzMDQgMi4wMjIxIDMuODc0MDlDMS45OTk5OSA0LjE0NDY4IDEuOTk5OTkgNC40NzY4NiAyIDQuODc5MzRWNC44NzkzNVY1LjVDMiA1Ljc3NjE0IDIuMjIzODYgNiAyLjUgNkMyLjc3NjE0IDYgMyA1Ljc3NjE0IDMgNS41VjQuOUMzIDQuNDcxNzEgMy4wMDAzOSA0LjE4MDU2IDMuMDE4NzggMy45NTU1MkMzLjAzNjY5IDMuNzM2MzEgMy4wNjkxNSAzLjYyNDIxIDMuMTA4OTkgMy41NDYwMUMzLjIwNDg3IDMuMzU3ODUgMy4zNTc4NSAzLjIwNDg3IDMuNTQ2MDEgMy4xMDg5OUMzLjYyNDIxIDMuMDY5MTUgMy43MzYzMSAzLjAzNjY5IDMuOTU1NTIgMy4wMTg3OEM0LjE4MDU2IDMuMDAwMzkgNC40NzE3MSAzIDQuOSAzSDUuNUM1Ljc3NjE0IDMgNiAyLjc3NjE0IDYgMi41QzYgMi4yMjM4NiA1Ljc3NjE0IDIgNS41IDJaTTEzIDkuNUMxMyA5LjIyMzg2IDEyLjc3NjEgOSAxMi41IDlDMTIuMjIzOSA5IDEyIDkuMjIzODYgMTIgOS41VjEwLjFDMTIgMTAuNTI4MyAxMS45OTk2IDEwLjgxOTQgMTEuOTgxMiAxMS4wNDQ1QzExLjk2MzMgMTEuMjYzNyAxMS45MzA5IDExLjM3NTggMTEuODkxIDExLjQ1NEMxMS43OTUxIDExLjY0MjIgMTEuNjQyMiAxMS43OTUxIDExLjQ1NCAxMS44OTFDMTEuMzc1OCAxMS45MzA5IDExLjI2MzcgMTEuOTYzMyAxMS4wNDQ1IDExLjk4MTJDMTAuODE5NCAxMS45OTk2IDEwLjUyODMgMTIgMTAuMSAxMkg5LjVDOS4yMjM4NiAxMiA5IDEyLjIyMzkgOSAxMi41QzkgMTIuNzc2MSA5LjIyMzg2IDEzIDkuNSAxM0gxMC4xMjA2QzEwLjUyMzEgMTMgMTAuODU1MyAxMyAxMS4xMjU5IDEyLjk3NzlDMTEuNDA3IDEyLjk1NDkgMTEuNjY1MyAxMi45MDU3IDExLjkwOCAxMi43ODJDMTIuMjg0MyAxMi41OTAzIDEyLjU5MDMgMTIuMjg0MyAxMi43ODIgMTEuOTA4QzEyLjkwNTcgMTEuNjY1MyAxMi45NTQ5IDExLjQwNyAxMi45Nzc5IDExLjEyNTlDMTMgMTAuODU1MyAxMyAxMC41MjMxIDEzIDEwLjEyMDZWOS41Wk0yLjUgOUMyLjc3NjE0IDkgMyA5LjIyMzg2IDMgOS41VjEwLjFDMyAxMC41MjgzIDMuMDAwMzkgMTAuODE5NCAzLjAxODc4IDExLjA0NDVDMy4wMzY2OSAxMS4yNjM3IDMuMDY5MTUgMTEuMzc1OCAzLjEwODk5IDExLjQ1NEMzLjIwNDg3IDExLjY0MjIgMy4zNTc4NSAxMS43OTUxIDMuNTQ2MDEgMTEuODkxQzMuNjI0MjEgMTEuOTMwOSAzLjczNjMxIDExLjk2MzMgMy45NTU1MiAxMS45ODEyQzQuMTgwNTYgMTEuOTk5NiA0LjQ3MTcxIDEyIDQuOSAxMkg1LjVDNS43NzYxNCAxMiA2IDEyLjIyMzkgNiAxMi41QzYgMTIuNzc2MSA1Ljc3NjE0IDEzIDUuNSAxM0g0Ljg3OTM1QzQuNDc2ODcgMTMgNC4xNDQ2OSAxMyAzLjg3NDA5IDEyLjk3NzlDMy41OTMwNCAxMi45NTQ5IDMuMzM0NjkgMTIuOTA1NyAzLjA5MjAyIDEyLjc4MkMyLjcxNTcgMTIuNTkwMyAyLjQwOTczIDEyLjI4NDMgMi4yMTc5OSAxMS45MDhDMi4wOTQzNCAxMS42NjUzIDIuMDQ1MDYgMTEuNDA3IDIuMDIyMSAxMS4xMjU5QzEuOTk5OTkgMTAuODU1MyAxLjk5OTk5IDEwLjUyMzEgMiAxMC4xMjA3VjEwLjEyMDZWMTAuMVY5LjVDMiA5LjIyMzg2IDIuMjIzODYgOSAyLjUgOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEllPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy4xNSA3LjQ5OTk4QzEzLjE1IDQuNjY0NTggMTAuOTQwMiAxLjg0OTk4IDcuNTAwMDIgMS44NDk5OEM0LjcyMTcgMS44NDk5OCAzLjM0ODUxIDMuOTA2MzYgMi43NjMzNiA0Ljk5OTk3SDQuNUM0Ljc3NjE0IDQuOTk5OTcgNSA1LjIyMzgzIDUgNS40OTk5N0M1IDUuNzc2MTEgNC43NzYxNCA1Ljk5OTk3IDQuNSA1Ljk5OTk3SDEuNUMxLjIyMzg2IDUuOTk5OTcgMSA1Ljc3NjExIDEgNS40OTk5N1YyLjQ5OTk3QzEgMi4yMjM4MyAxLjIyMzg2IDEuOTk5OTcgMS41IDEuOTk5OTdDMS43NzYxNCAxLjk5OTk3IDIgMi4yMjM4MyAyIDIuNDk5OTdWNC4zMTMxOEMyLjcwNDUzIDMuMDcxMjYgNC4zMzQwNiAwLjg0OTk3NiA3LjUwMDAyIDAuODQ5OTc2QzExLjU2MjggMC44NDk5NzYgMTQuMTUgNC4xODUzNyAxNC4xNSA3LjQ5OTk4QzE0LjE1IDEwLjgxNDYgMTEuNTYyOCAxNC4xNSA3LjUwMDAyIDE0LjE1QzUuNTU2MTggMTQuMTUgMy45Mzc3OCAxMy4zODA4IDIuNzg1NDggMTIuMjA4NEMyLjE2ODUyIDExLjU4MDYgMS42ODY2OCAxMC44MzkgMS4zNTgxNiAxMC4wNDA3QzEuMjUzMDYgOS43ODUzNiAxLjM3NDg4IDkuNDkzMTUgMS42MzAyNCA5LjM4ODA2QzEuODg1NiA5LjI4Mjk2IDIuMTc3ODEgOS40MDQ3OCAyLjI4MjkgOS42NjAxNEMyLjU2Mzc0IDEwLjM0MjUgMi45NzQ5NSAxMC45NzQ1IDMuNDk4NyAxMS41MDc0QzQuNDcwNTIgMTIuNDk2MyA1LjgzNDk2IDEzLjE1IDcuNTAwMDIgMTMuMTVDMTAuOTQwMiAxMy4xNSAxMy4xNSAxMC4zMzU0IDEzLjE1IDcuNDk5OThaTTcgMTBWNS4wMDAwMUg4VjEwSDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxUZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMTUgNy40OTk5OEMxMy4xNSA0LjY2NDU4IDEwLjk0MDIgMS44NDk5OCA3LjUwMDAyIDEuODQ5OThDNC43MjE2NyAxLjg0OTk4IDMuMzQ4NDkgMy45MDY0IDIuNzYzMzUgNUg0LjVDNC43NzYxNCA1IDUgNS4yMjM4NiA1IDUuNUM1IDUuNzc2MTQgNC43NzYxNCA2IDQuNSA2SDEuNUMxLjIyMzg2IDYgMSA1Ljc3NjE0IDEgNS41VjIuNUMxIDIuMjIzODYgMS4yMjM4NiAyIDEuNSAyQzEuNzc2MTQgMiAyIDIuMjIzODYgMiAyLjVWNC4zMTMxOEMyLjcwNDUzIDMuMDcxMjYgNC4zMzQwNiAwLjg0OTk3NiA3LjUwMDAyIDAuODQ5OTc2QzExLjU2MjggMC44NDk5NzYgMTQuMTUgNC4xODUzNyAxNC4xNSA3LjQ5OTk4QzE0LjE1IDEwLjgxNDYgMTEuNTYyOCAxNC4xNSA3LjUwMDAyIDE0LjE1QzUuNTU2MTggMTQuMTUgMy45Mzc3OCAxMy4zODA4IDIuNzg1NDggMTIuMjA4NEMyLjE2ODUyIDExLjU4MDYgMS42ODY2OCAxMC44MzkgMS4zNTgxNiAxMC4wNDA3QzEuMjUzMDYgOS43ODUzNiAxLjM3NDg4IDkuNDkzMTUgMS42MzAyNCA5LjM4ODA2QzEuODg1NiA5LjI4Mjk2IDIuMTc3ODEgOS40MDQ3OCAyLjI4MjkgOS42NjAxNEMyLjU2Mzc0IDEwLjM0MjUgMi45NzQ5NSAxMC45NzQ1IDMuNDk4NyAxMS41MDc0QzQuNDcwNTIgMTIuNDk2MyA1LjgzNDk2IDEzLjE1IDcuNTAwMDIgMTMuMTVDMTAuOTQwMiAxMy4xNSAxMy4xNSAxMC4zMzU0IDEzLjE1IDcuNDk5OThaTTcuNSA0LjAwMDAxQzcuNzc2MTQgNC4wMDAwMSA4IDQuMjIzODcgOCA0LjUwMDAxVjcuMjkyOTFMOS44NTM1NSA5LjE0NjQ2QzEwLjA0ODggOS4zNDE3MiAxMC4wNDg4IDkuNjU4MzEgOS44NTM1NSA5Ljg1MzU3QzkuNjU4MjkgMTAuMDQ4OCA5LjM0MTcxIDEwLjA0ODggOS4xNDY0NSA5Ljg1MzU3TDcuMTQ2NDUgNy44NTM1N0M3LjA1MjY4IDcuNzU5OCA3IDcuNjMyNjIgNyA3LjUwMDAxVjQuNTAwMDFDNyA0LjIyMzg3IDcuMjIzODYgNC4wMDAwMSA3LjUgNC4wMDAwMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEhlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjUgOC4wMDY4NGUtMDdDMy43NzYxNCA3Ljg4NjE0ZS0wNyA0IDAuMjIzODU5IDQgMC41MDAwMDFMNCAzLjAwMDA2TDExLjUgMy4wMDAwNkMxMS43NzYxIDMuMDAwMDYgMTIgMy4yMjM5MiAxMiAzLjUwMDA2TDEyIDExLjAwMDFMMTQuNSAxMUMxNC43NzYxIDExIDE1IDExLjIyMzggMTUgMTEuNUMxNSAxMS43NzYxIDE0Ljc3NjIgMTIgMTQuNSAxMkwxMiAxMi4wMDAxTDEyIDE0LjVDMTIgMTQuNzc2MSAxMS43NzYxIDE1IDExLjUgMTVDMTEuMjIzOSAxNSAxMSAxNC43NzYxIDExIDE0LjVMMTEgMTIuMDAwMUwzLjUgMTIuMDAwMUMzLjIyMzg2IDEyLjAwMDEgMyAxMS43NzYyIDMgMTEuNTAwMUwzIDQuMDAwMDVMMC40OTk5ODkgNEMwLjIyMzg0NyA0IC02LjEwNTQxZS0wNiAzLjc3NjEzIC01LjAyNTc2ZS0wNyAzLjQ5OTk5QzUuMTMwMDZlLTA2IDMuMjIzODUgMC4yMjM4NjcgMyAwLjUwMDAxIDNMMyAzLjAwMDA1TDMgMC41MDAwMDFDMyAwLjIyMzg1OSAzLjIyMzg2IDguMTI3NTVlLTA3IDMuNSA4LjAwNjg0ZS0wN1pNNCA0LjAwMDA2TDQgMTEuMDAwMUwxMSAxMS4wMDAxTDExIDQuMDAwMDZMNCA0LjAwMDA2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjg1MzYgMi44NTM1NUMxMy4wNDg4IDIuNjU4MjkgMTMuMDQ4OCAyLjM0MTcxIDEyLjg1MzYgMi4xNDY0NUMxMi42NTgzIDEuOTUxMTggMTIuMzQxNyAxLjk1MTE4IDEyLjE0NjQgMi4xNDY0NUw3LjUgNi43OTI4OUwyLjg1MzU1IDIuMTQ2NDVDMi42NTgyOSAxLjk1MTE4IDIuMzQxNzEgMS45NTExOCAyLjE0NjQ1IDIuMTQ2NDVDMS45NTExOCAyLjM0MTcxIDEuOTUxMTggMi42NTgyOSAyLjE0NjQ1IDIuODUzNTVMNi43OTI4OSA3LjVMMi4xNDY0NSAxMi4xNDY0QzEuOTUxMTggMTIuMzQxNyAxLjk1MTE4IDEyLjY1ODMgMi4xNDY0NSAxMi44NTM2QzIuMzQxNzEgMTMuMDQ4OCAyLjY1ODI5IDEzLjA0ODggMi44NTM1NSAxMi44NTM2TDcuNSA4LjIwNzExTDEyLjE0NjQgMTIuODUzNkMxMi4zNDE3IDEzLjA0ODggMTIuNjU4MyAxMy4wNDg4IDEyLjg1MzYgMTIuODUzNkMxMy4wNDg4IDEyLjY1ODMgMTMuMDQ4OCAxMi4zNDE3IDEyLjg1MzYgMTIuMTQ2NEw4LjIwNzExIDcuNUwxMi44NTM2IDIuODUzNTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxCZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEuNzgxNiA0LjAzMTU3QzEyLjAwNjIgMy44MDcwMiAxMi4wMDYyIDMuNDQyOTUgMTEuNzgxNiAzLjIxODRDMTEuNTU3MSAyLjk5Mzg1IDExLjE5MyAyLjk5Mzg1IDEwLjk2ODUgMy4yMTg0TDcuNTAwMDUgNi42ODY4Mkw0LjAzMTY0IDMuMjE4NEMzLjgwNzA4IDIuOTkzODUgMy40NDMwMSAyLjk5Mzg1IDMuMjE4NDYgMy4yMTg0QzIuOTkzOTEgMy40NDI5NSAyLjk5MzkxIDMuODA3MDIgMy4yMTg0NiA0LjAzMTU3TDYuNjg2ODggNy40OTk5OUwzLjIxODQ2IDEwLjk2ODRDMi45OTM5MSAxMS4xOTMgMi45OTM5MSAxMS41NTcgMy4yMTg0NiAxMS43ODE2QzMuNDQzMDEgMTIuMDA2MSAzLjgwNzA4IDEyLjAwNjEgNC4wMzE2NCAxMS43ODE2TDcuNTAwMDUgOC4zMTMxNkwxMC45Njg1IDExLjc4MTZDMTEuMTkzIDEyLjAwNjEgMTEuNTU3MSAxMi4wMDYxIDExLjc4MTYgMTEuNzgxNkMxMi4wMDYyIDExLjU1NyAxMi4wMDYyIDExLjE5MyAxMS43ODE2IDEwLjk2ODRMOC4zMTMyMiA3LjQ5OTk5TDExLjc4MTYgNC4wMzE1N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LERlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzA3NSA3LjQ5OTg4QzAuODc3MDc1IDMuODQyMTkgMy44NDIyMiAwLjg3NzA0NSA3LjQ5OTkxIDAuODc3MDQ1QzExLjE1NzYgMC44NzcwNDUgMTQuMTIyNyAzLjg0MjE5IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDExLjE1NzUgMTEuMTU3NiAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MzLjg0MjIyIDE0LjEyMjcgMC44NzcwNzUgMTEuMTU3NSAwLjg3NzA3NSA3LjQ5OTg4Wk03LjQ5OTkxIDEuODI3MDRDNC4zNjY4OSAxLjgyNzA0IDEuODI3MDggNC4zNjY4NiAxLjgyNzA4IDcuNDk5ODhDMS44MjcwOCAxMC42MzI5IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDMTAuNjMyOSAxMy4xNzI3IDEzLjE3MjcgMTAuNjMyOSAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyA0LjM2Njg2IDEwLjYzMjkgMS44MjcwNCA3LjQ5OTkxIDEuODI3MDRaTTkuODUzNTggNS4xNDY0NEMxMC4wNDg4IDUuMzQxNyAxMC4wNDg4IDUuNjU4MjkgOS44NTM1OCA1Ljg1MzU1TDguMjA3MTMgNy40OTk5OUw5Ljg1MzU4IDkuMTQ2NDRDMTAuMDQ4OCA5LjM0MTcgMTAuMDQ4OCA5LjY1ODI5IDkuODUzNTggOS44NTM1NUM5LjY1ODMyIDEwLjA0ODggOS4zNDE3MyAxMC4wNDg4IDkuMTQ2NDcgOS44NTM1NUw3LjUwMDAyIDguMjA3MUw1Ljg1MzU4IDkuODUzNTVDNS42NTgzMiAxMC4wNDg4IDUuMzQxNzMgMTAuMDQ4OCA1LjE0NjQ3IDkuODUzNTVDNC45NTEyMSA5LjY1ODI5IDQuOTUxMjEgOS4zNDE3IDUuMTQ2NDcgOS4xNDY0NEw2Ljc5MjkyIDcuNDk5OTlMNS4xNDY0NyA1Ljg1MzU1QzQuOTUxMjEgNS42NTgyOSA0Ljk1MTIxIDUuMzQxNyA1LjE0NjQ3IDUuMTQ2NDRDNS4zNDE3MyA0Ljk1MTE4IDUuNjU4MzIgNC45NTExOCA1Ljg1MzU4IDUuMTQ2NDRMNy41MDAwMiA2Ljc5Mjg5TDkuMTQ2NDcgNS4xNDY0NEM5LjM0MTczIDQuOTUxMTggOS42NTgzMiA0Ljk1MTE4IDkuODUzNTggNS4xNDY0NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFplPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzA3NSA3LjUwMjA3QzAuODc3MDc1IDMuODQzMTkgMy44NDMxOSAwLjg3NzA3NSA3LjUwMjA4IDAuODc3MDc1QzExLjE2MDkgMC44NzcwNzUgMTQuMTI3MSAzLjg0MzE5IDE0LjEyNzEgNy41MDIwN0MxNC4xMjcxIDExLjE2MDkgMTEuMTYwOSAxNC4xMjcxIDcuNTAyMDggMTQuMTI3MUMzLjg0MzE5IDE0LjEyNzEgMC44NzcwNzUgMTEuMTYwOSAwLjg3NzA3NSA3LjUwMjA3Wk0xLjg0ODk4IDcuMDAwMDNDMi4wODg2IDQuMjY2MzkgNC4yNjYzOSAyLjA4ODYgNy4wMDAwMyAxLjg0ODk4VjQuNTAwMDNDNy4wMDAwMyA0Ljc3NjE3IDcuMjIzODggNS4wMDAwMyA3LjUwMDAzIDUuMDAwMDNDNy43NzYxNyA1LjAwMDAzIDguMDAwMDMgNC43NzYxNyA4LjAwMDAzIDQuNTAwMDNWMS44NDg2MkMxMC43MzU2IDIuMDg2NDMgMTIuOTE1NCA0LjI2NTAyIDEzLjE1NTIgNy4wMDAwM0gxMC41QzEwLjIyMzkgNy4wMDAwMyAxMCA3LjIyMzg4IDEwIDcuNTAwMDNDMTAgNy43NzYxNyAxMC4yMjM5IDguMDAwMDMgMTAuNSA4LjAwMDAzSDEzLjE1NTVDMTIuOTE3NiAxMC43MzY5IDEwLjczNjkgMTIuOTE3NiA4LjAwMDAzIDEzLjE1NTVWMTAuNUM4LjAwMDAzIDEwLjIyMzkgNy43NzYxNyAxMCA3LjUwMDAzIDEwQzcuMjIzODggMTAgNy4wMDAwMyAxMC4yMjM5IDcuMDAwMDMgMTAuNVYxMy4xNTUyQzQuMjY1MDIgMTIuOTE1NCAyLjA4NjQzIDEwLjczNTYgMS44NDg2MiA4LjAwMDAzSDQuNTAwMDNDNC43NzYxNyA4LjAwMDAzIDUuMDAwMDMgNy43NzYxNyA1LjAwMDAzIDcuNTAwMDNDNS4wMDAwMyA3LjIyMzg4IDQuNzc2MTcgNy4wMDAwMyA0LjUwMDAzIDcuMDAwMDNIMS44NDg5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LCRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMEM3Ljc3NjE0IDAgOCAwLjIyMzg1OCA4IDAuNVYxLjgwNjg3QzEwLjY5MjIgMi4wOTM1IDEyLjgxNjcgNC4yODAxMiAxMy4wMDY4IDdIMTQuNUMxNC43NzYxIDcgMTUgNy4yMjM4NiAxNSA3LjVDMTUgNy43NzYxNCAxNC43NzYxIDggMTQuNSA4SDEyLjk4ODhDMTIuNzA5NCAxMC42MjQ0IDEwLjYyNDQgMTIuNzA5NCA4IDEyLjk4ODhWMTQuNUM4IDE0Ljc3NjEgNy43NzYxNCAxNSA3LjUgMTVDNy4yMjM4NiAxNSA3IDE0Ljc3NjEgNyAxNC41VjEzLjAwNjhDNC4yODAxMiAxMi44MTY3IDIuMDkzNSAxMC42OTIyIDEuODA2ODcgOEgwLjVDMC4yMjM4NTggOCAwIDcuNzc2MTQgMCA3LjVDMCA3LjIyMzg2IDAuMjIzODU4IDcgMC41IDdIMS43ODg4NkMxLjk4Mzc2IDQuMjExNjYgNC4yMTE2NiAxLjk4Mzc2IDcgMS43ODg4NlYwLjVDNyAwLjIyMzg1OCA3LjIyMzg2IDAgNy41IDBaTTggMTIuMDMyMlY5LjVDOCA5LjIyMzg2IDcuNzc2MTQgOSA3LjUgOUM3LjIyMzg2IDkgNyA5LjIyMzg2IDcgOS41VjEyLjA1NEM0LjgwNTE3IDExLjg2ODkgMy4wNDIyMiAxMC4xNjY4IDIuNzYzNDQgOEg1LjVDNS43NzYxNCA4IDYgNy43NzYxNCA2IDcuNUM2IDcuMjIzODYgNS43NzYxNCA3IDUuNSA3SDIuNzQxN0MyLjkzMjUyIDQuNzM2NjIgNC43MzY2MiAyLjkzMjUyIDcgMi43NDE3VjUuNUM3IDUuNzc2MTQgNy4yMjM4NiA2IDcuNSA2QzcuNzc2MTQgNiA4IDUuNzc2MTQgOCA1LjVWMi43NjM0NEMxMC4xNjY4IDMuMDQyMjIgMTEuODY4OSA0LjgwNTE3IDEyLjA1NCA3SDkuNUM5LjIyMzg2IDcgOSA3LjIyMzg2IDkgNy41QzkgNy43NzYxNCA5LjIyMzg2IDggOS41IDhIMTIuMDMyMkMxMS43NjIxIDEwLjA5OTEgMTAuMDk5MSAxMS43NjIxIDggMTIuMDMyMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEZlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjYwOTEzIDAuMDYzNDI4N0M0LjM5MDgyIDAuMDA4ODUwNSA0LjE2NTc1IDAuMTIzOTMgNC4wODIxOCAwLjMzMjg2N0wzLjE1MzggMi42NTM4TDAuODMyODY2IDMuNTgyMThDMC43MDI4ODQgMy42MzQxNyAwLjYwNDUwNCAzLjc0MzcgMC41NjY3MDUgMy44Nzg0OUMwLjUyODkwNiA0LjAxMzI5IDAuNTU1OTk0IDQuMTU4IDAuNjM5OTkyIDQuMjY5OTlMMi4wMTE0OCA2LjA5ODY0TDEuMDYzNDMgOS44OTA4NUMxLjAwOTQ0IDEwLjEwNjggMS4xMjE0NSAxMC4zMjk4IDEuMzI2OTEgMTAuNDE1NEw0LjIwMTE1IDExLjYxM0w1LjYyNTU3IDEzLjc0OTZDNS43MzQxMiAxMy45MTI0IDUuOTM1NDUgMTMuOTg2NCA2LjEyMzYyIDEzLjkzMjdMOS42MjM2MiAxMi45MzI3QzkuNjI5ODggMTIuOTMwOSA5LjYzNjExIDEyLjkyOSA5LjY0MjI5IDEyLjkyNjlMMTIuNjQyMyAxMS45MjY5QzEyLjc5MjMgMTEuODc2OSAxMi45MDUgMTEuNzUxOSAxMi45MzkzIDExLjU5NzZMMTMuOTM5MyA3LjA5NzYxQzEzLjk3NzYgNi45MjUwNiAxMy45MTE0IDYuNzQ2MDUgMTMuNzcgNi42Mzk5OUwxMS45NSA1LjI3NDk5VjIuOTk5OTlDMTEuOTUgMi44Mjk1NSAxMS44NTM3IDIuNjczNzMgMTEuNzAxMiAyLjU5NzVMOC43MDEyNCAxLjA5NzVDOC42NzE4NyAxLjA4MjgyIDguNjQwOTggMS4wNzEzOSA4LjYwOTEzIDEuMDYzNDNMNC42MDkxMyAwLjA2MzQyODdaTTExLjQzMjMgNi4wMTE3M0wxMi43NzQ4IDcuMDE4NThMMTAuMjExOSA5LjE1NDI5QzEwLjE0NzYgOS4yMDc4NiAxMC4wOTk1IDkuMjc4MyAxMC4wNzMxIDkuMzU3NjlMOS4yNTM4MiAxMS44MTU1TDcuNzM4NDkgMTAuODY4NEM3LjUyNzc0IDEwLjczNjcgNy4yNTAxMSAxMC44MDA3IDcuMTE4MzkgMTEuMDExNUM2Ljk4NjY3IDExLjIyMjIgNy4wNTA3NCAxMS40OTk5IDcuMjYxNDkgMTEuNjMxNkw4LjQwMzQxIDEyLjM0NTNMNi4xOTIyMSAxMi45NzcxTDQuODc0NDEgMTEuMDAwNEM0LjgyNTEzIDEwLjkyNjUgNC43NTUwOCAxMC44Njg4IDQuNjczMDcgMTAuODM0NkwyLjAzMDQ2IDkuNzMzNTJMMi44NTEzNCA2LjQ0OTk5SDQuOTk5OTlDNS4yNDg1MiA2LjQ0OTk5IDUuNDQ5OTkgNi4yNDg1MiA1LjQ0OTk5IDUuOTk5OTlDNS40NDk5OSA1Ljc1MTQ2IDUuMjQ4NTIgNS41NDk5OSA0Ljk5OTk5IDUuNTQ5OTlIMi43MjQ5OUwxLjcxMjMgNC4xOTk3NEwzLjUxNDA3IDMuNDc5MDNMNi4zNTc2OSA0LjQyNjlDNi41MzY1NSA0LjQ4NjUyIDYuNzMzNjEgNC40MjgzMiA2Ljg1MTM4IDQuMjgxMTFMOC42MjQxMyAyLjA2NTE4TDExLjA1IDMuMjc4MTFWNS4xOTUzM0w4LjgzMjg3IDYuMDgyMThDOC43MDk5NiA2LjEzMTM0IDguNjE0OTQgNi4yMzIxMiA4LjU3MzA4IDYuMzU3NjlMOC4wNzMwOCA3Ljg1NzY5QzcuOTk0NDkgOC4wOTM0NiA4LjEyMTkxIDguMzQ4MzEgOC4zNTc2OSA4LjQyNjlDOC41OTM0NiA4LjUwNTQ5IDguODQ4MzEgOC4zNzgwNyA4LjkyNjkgOC4xNDIyOUw5LjM2MDkgNi44NDAyOUwxMS40MzIzIDYuMDExNzNaTTcuNzEwNTIgMS43NjY0OEw2LjM0NDYyIDMuNDczODZMNC4wOTUwNSAyLjcyNEw0Ljc3MTkyIDEuMDMxODNMNy43MTA1MiAxLjc2NjQ4Wk0xMC4yMTE1IDExLjc4ODVMMTIuMTE2IDExLjE1MzdMMTIuNzc0NSA4LjE5MDM0TDEwLjg4NjQgOS43NjM3NEwxMC4yMTE1IDExLjc4ODVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxOZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4yODg1NiAwLjc5NjkwOEM3LjQyMjU4IDAuNzM0MzY0IDcuNTc3NDIgMC43MzQzNjQgNy43MTE0NCAwLjc5NjkwOEwxMy43MTE0IDMuNTk2OTFDMTMuODg3NSAzLjY3OTA2IDE0IDMuODU1NzQgMTQgNC4wNVYxMC45NUMxNCAxMS4xNDQzIDEzLjg4NzUgMTEuMzIwOSAxMy43MTE0IDExLjQwMzFMNy43MTE0NCAxNC4yMDMxQzcuNTc3NDIgMTQuMjY1NiA3LjQyMjU4IDE0LjI2NTYgNy4yODg1NiAxNC4yMDMxTDEuMjg4NTYgMTEuNDAzMUMxLjExMjUyIDExLjMyMDkgMSAxMS4xNDQzIDEgMTAuOTVWNC4wNUMxIDMuODU1NzQgMS4xMTI1MiAzLjY3OTA2IDEuMjg4NTYgMy41OTY5MUw3LjI4ODU2IDAuNzk2OTA4Wk0yIDQuODA1NzhMNyA2LjkzMDc4VjEyLjk2NDlMMiAxMC42MzE2VjQuODA1NzhaTTggMTIuOTY0OUwxMyAxMC42MzE2VjQuODA1NzhMOCA2LjkzMDc4VjEyLjk2NDlaTTcuNSA2LjA1NjcyTDEyLjI3MTkgNC4wMjg2Nkw3LjUgMS44MDE3NkwyLjcyODA5IDQuMDI4NjZMNy41IDYuMDU2NzJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxVZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4yOTIyNyAwLjA0ODk4NEMzLjQ3MDMzIC0wLjAzMjMzOCAzLjY3OTQ2IC0wLjAwMjI4MjE0IDMuODI3NCAwLjEyNTg5MUwxMi44NTg3IDcuOTUwMjZDMTMuMDEzNCA4LjA4NDMyIDEzLjA3MDggOC4yOTkxNiAxMy4wMDM1IDguNDkyNTFDMTIuOTM2MiA4LjY4NTg2IDEyLjc1NzggOC44MTg2NiAxMi41NTMzIDguODI3NjhMOS4yMTg4NyA4Ljk3NDc0TDExLjE1MDQgMTMuMjE4N0MxMS4yNjQ4IDEzLjQ3IDExLjE1MzggMTMuNzY2NCAxMC45MDI2IDEzLjg4MDhMOC43NTAyNCAxNC44NjEzQzguNDk5IDE0Ljk3NTggOC4yMDI1NSAxNC44NjQ5IDguMDg4MDIgMTQuNjEzN0w2LjE1MzM5IDEwLjM3MDNMMy44NjI3OSAxMi43ODU1QzMuNzIxOTYgMTIuOTM0IDMuNTA0ODcgMTIuOTgxNyAzLjMxNDc5IDEyLjkwNTlDMy4xMjQ3IDEyLjgzMDEgMyAxMi42NDYxIDMgMTIuNDQxNFYwLjUwMzc5MkMzIDAuMzA4MDQ4IDMuMTE0MjIgMC4xMzAzMDYgMy4yOTIyNyAwLjA0ODk4NFpNNCAxLjU5ODUyVjExLjE4NzdMNS45Mzc5OSA5LjE0NDI1QzYuMDUyMzggOS4wMjM2MyA2LjIxOTI0IDguOTY3NzYgNi4zODMxOSA4Ljk5NTE2QzYuNTQ3MTUgOS4wMjI1NiA2LjY4Njc3IDkuMTI5NjUgNi43NTU3MyA5LjI4MDlMOC43OTA1NiAxMy43NDQxTDEwLjAzMzIgMTMuMTc4TDguMDAxOTUgOC43MTQ5N0M3LjkzMzEzIDguNTYzNzYgNy45NDM5MSA4LjM4ODI0IDguMDMwNzIgOC4yNDY1OUM4LjExNzUzIDguMTA0OTQgOC4yNjkwMyA4LjAxNTY2IDguNDM1IDguMDA4MzRMMTEuMjU0OSA3Ljg4Mzk3TDQgMS41OTg1MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjUgMUM0LjIyMzg2IDEgNCAxLjIyMzg2IDQgMS41QzQgMS43NzYxNCA0LjIyMzg2IDIgNC41IDJDNS40MjIxNSAyIDYuMDM5OSAyLjIzMDU0IDYuNDIwNzUgMi41NjM3OUM2Ljc5Mjg2IDIuODg5MzkgNyAzLjM2NjI2IDcgNFY3SDUuNzVDNS40NzM4NiA3IDUuMjUgNy4yMjM4NiA1LjI1IDcuNUM1LjI1IDcuNzc2MTQgNS40NzM4NiA4IDUuNzUgOEg3VjExQzcgMTEuNjMzNyA2Ljc5Mjg2IDEyLjExMDYgNi40MjA3NSAxMi40MzYyQzYuMDM5OSAxMi43Njk1IDUuNDIyMTUgMTMgNC41IDEzQzQuMjIzODYgMTMgNCAxMy4yMjM5IDQgMTMuNUM0IDEzLjc3NjEgNC4yMjM4NiAxNCA0LjUgMTRDNS41Nzc4NSAxNCA2LjQ2MDEgMTMuNzMwNSA3LjA3OTI1IDEzLjE4ODhDNy4yNDE2OCAxMy4wNDY3IDcuMzgxNjkgMTIuODg5NiA3LjUgMTIuNzE5OEM3LjYxODMyIDEyLjg4OTYgNy43NTgzMiAxMy4wNDY3IDcuOTIwNzUgMTMuMTg4OEM4LjUzOTkgMTMuNzMwNSA5LjQyMjE1IDE0IDEwLjUgMTRDMTAuNzc2MSAxNCAxMSAxMy43NzYxIDExIDEzLjVDMTEgMTMuMjIzOSAxMC43NzYxIDEzIDEwLjUgMTNDOS41Nzc4NSAxMyA4Ljk2MDEgMTIuNzY5NSA4LjU3OTI1IDEyLjQzNjJDOC4yMDcxNCAxMi4xMTA2IDggMTEuNjMzNyA4IDExVjhIOS4yNUM5LjUyNjE0IDggOS43NSA3Ljc3NjE0IDkuNzUgNy41QzkuNzUgNy4yMjM4NiA5LjUyNjE0IDcgOS4yNSA3SDhWNEM4IDMuMzY2MjYgOC4yMDcxNCAyLjg4OTM5IDguNTc5MjUgMi41NjM3OUM4Ljk2MDEgMi4yMzA1NCA5LjU3Nzg1IDIgMTAuNSAyQzEwLjc3NjEgMiAxMSAxLjc3NjE0IDExIDEuNUMxMSAxLjIyMzg2IDEwLjc3NjEgMSAxMC41IDFDOS40MjIxNSAxIDguNTM5OSAxLjI2OTQ2IDcuOTIwNzUgMS44MTEyMUM3Ljc1ODMyIDEuOTUzMzMgNy42MTgzMiAyLjExMDQzIDcuNSAyLjI4MDIzQzcuMzgxNjggMi4xMTA0MyA3LjI0MTY4IDEuOTUzMzMgNy4wNzkyNSAxLjgxMTIxQzYuNDYwMSAxLjI2OTQ2IDUuNTc3ODUgMSA0LjUgMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHplPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDcuNUM1IDcuMjIzODYgNS4yMjM4NiA3IDUuNSA3SDkuNUM5Ljc3NjE0IDcgMTAgNy4yMjM4NiAxMCA3LjVDMTAgNy43NzYxNCA5Ljc3NjE0IDggOS41IDhINS41QzUuMjIzODYgOCA1IDcuNzc2MTQgNSA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxHZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi44IDFMMi43NDk2NyAwLjk5OTk3QzIuNTIxMjIgMC45OTk3NTIgMi4zMjQyOSAwLjk5OTU2NCAyLjE0OTgzIDEuMDQxNDVDMS42MDEzNiAxLjE3MzEyIDEuMTczMTIgMS42MDEzNiAxLjA0MTQ1IDIuMTQ5ODNDMC45OTk1NjQgMi4zMjQyOSAwLjk5OTc1MiAyLjUyMTIyIDAuOTk5OTcgMi43NDk2N0wxIDIuOFY1LjJMMC45OTk5NyA1LjI1MDMzQzAuOTk5NzUyIDUuNDc4NzggMC45OTk1NjQgNS42NzU3MiAxLjA0MTQ1IDUuODUwMTdDMS4xNzMxMiA2LjM5ODY0IDEuNjAxMzYgNi44MjY4OCAyLjE0OTgzIDYuOTU4NTZDMi4zMjQyOSA3LjAwMDQ0IDIuNTIxMjIgNy4wMDAyNSAyLjc0OTY3IDcuMDAwMDNMMi44IDdINS4yTDUuMjUwMzMgNy4wMDAwM0M1LjQ3ODc4IDcuMDAwMjUgNS42NzU3MiA3LjAwMDQ0IDUuODUwMTcgNi45NTg1NkM2LjM5ODY0IDYuODI2ODggNi44MjY4OCA2LjM5ODY0IDYuOTU4NTYgNS44NTAxN0M3LjAwMDQ0IDUuNjc1NzIgNy4wMDAyNSA1LjQ3ODc4IDcuMDAwMDMgNS4yNTAzM0w3IDUuMlYyLjhMNy4wMDAwMyAyLjc0OTY3QzcuMDAwMjUgMi41MjEyMiA3LjAwMDQ0IDIuMzI0MjkgNi45NTg1NiAyLjE0OTgzQzYuODI2ODggMS42MDEzNiA2LjM5ODY0IDEuMTczMTIgNS44NTAxNyAxLjA0MTQ1QzUuNjc1NzIgMC45OTk1NjQgNS40Nzg3OCAwLjk5OTc1MiA1LjI1MDMzIDAuOTk5OTdMNS4yIDFIMi44Wk0yLjM4MzI4IDIuMDEzODJDMi40MjYzMiAyLjAwMzQ4IDIuNDkyMjIgMiAyLjggMkg1LjJDNS41MDc3OSAyIDUuNTczNjkgMi4wMDM0OCA1LjYxNjcyIDIuMDEzODJDNS43OTk1NSAyLjA1NzcxIDUuOTQyMjkgMi4yMDA0NSA1Ljk4NjE5IDIuMzgzMjhDNS45OTY1MiAyLjQyNjMyIDYgMi40OTIyMiA2IDIuOFY1LjJDNiA1LjUwNzc5IDUuOTk2NTIgNS41NzM2OSA1Ljk4NjE5IDUuNjE2NzJDNS45NDIyOSA1Ljc5OTU1IDUuNzk5NTUgNS45NDIyOSA1LjYxNjcyIDUuOTg2MTlDNS41NzM2OSA1Ljk5NjUyIDUuNTA3NzkgNiA1LjIgNkgyLjhDMi40OTIyMiA2IDIuNDI2MzIgNS45OTY1MiAyLjM4MzI4IDUuOTg2MTlDMi4yMDA0NSA1Ljk0MjI5IDIuMDU3NzEgNS43OTk1NSAyLjAxMzgyIDUuNjE2NzJDMi4wMDM0OCA1LjU3MzY5IDIgNS41MDc3OSAyIDUuMlYyLjhDMiAyLjQ5MjIyIDIuMDAzNDggMi40MjYzMiAyLjAxMzgyIDIuMzgzMjhDMi4wNTc3MSAyLjIwMDQ1IDIuMjAwNDUgMi4wNTc3MSAyLjM4MzI4IDIuMDEzODJaTTkuOCAxTDkuNzQ5NjcgMC45OTk5N0M5LjUyMTIyIDAuOTk5NzUyIDkuMzI0MjkgMC45OTk1NjQgOS4xNDk4MyAxLjA0MTQ1QzguNjAxMzYgMS4xNzMxMiA4LjE3MzEyIDEuNjAxMzYgOC4wNDE0NSAyLjE0OTgzQzcuOTk5NTYgMi4zMjQyOSA3Ljk5OTc1IDIuNTIxMjIgNy45OTk5NyAyLjc0OTY3TDggMi44VjUuMkw3Ljk5OTk3IDUuMjUwMzNDNy45OTk3NSA1LjQ3ODc4IDcuOTk5NTYgNS42NzU3MiA4LjA0MTQ1IDUuODUwMTdDOC4xNzMxMiA2LjM5ODY0IDguNjAxMzYgNi44MjY4OCA5LjE0OTgzIDYuOTU4NTZDOS4zMjQyOSA3LjAwMDQ0IDkuNTIxMjIgNy4wMDAyNSA5Ljc0OTY3IDcuMDAwMDNMOS44IDdIMTIuMkwxMi4yNTAzIDcuMDAwMDNDMTIuNDc4OCA3LjAwMDI1IDEyLjY3NTcgNy4wMDA0NCAxMi44NTAyIDYuOTU4NTZDMTMuMzk4NiA2LjgyNjg4IDEzLjgyNjkgNi4zOTg2NCAxMy45NTg2IDUuODUwMTdDMTQuMDAwNCA1LjY3NTcyIDE0LjAwMDMgNS40Nzg3OCAxNCA1LjI1MDMzTDE0IDUuMlYyLjhMMTQgMi43NDk2N0MxNC4wMDAzIDIuNTIxMjIgMTQuMDAwNCAyLjMyNDI5IDEzLjk1ODYgMi4xNDk4M0MxMy44MjY5IDEuNjAxMzYgMTMuMzk4NiAxLjE3MzEyIDEyLjg1MDIgMS4wNDE0NUMxMi42NzU3IDAuOTk5NTY0IDEyLjQ3ODggMC45OTk3NTIgMTIuMjUwMyAwLjk5OTk3TDEyLjIgMUg5LjhaTTkuMzgzMjggMi4wMTM4MkM5LjQyNjMyIDIuMDAzNDggOS40OTIyMiAyIDkuOCAySDEyLjJDMTIuNTA3OCAyIDEyLjU3MzcgMi4wMDM0OCAxMi42MTY3IDIuMDEzODJDMTIuNzk5NSAyLjA1NzcxIDEyLjk0MjMgMi4yMDA0NSAxMi45ODYyIDIuMzgzMjhDMTIuOTk2NSAyLjQyNjMyIDEzIDIuNDkyMjIgMTMgMi44VjUuMkMxMyA1LjUwNzc5IDEyLjk5NjUgNS41NzM2OSAxMi45ODYyIDUuNjE2NzJDMTIuOTQyMyA1Ljc5OTU1IDEyLjc5OTUgNS45NDIyOSAxMi42MTY3IDUuOTg2MTlDMTIuNTczNyA1Ljk5NjUyIDEyLjUwNzggNiAxMi4yIDZIOS44QzkuNDkyMjIgNiA5LjQyNjMyIDUuOTk2NTIgOS4zODMyOCA1Ljk4NjE5QzkuMjAwNDUgNS45NDIyOSA5LjA1NzcxIDUuNzk5NTUgOS4wMTM4MiA1LjYxNjcyQzkuMDAzNDggNS41NzM2OSA5IDUuNTA3NzkgOSA1LjJWMi44QzkgMi40OTIyMiA5LjAwMzQ4IDIuNDI2MzIgOS4wMTM4MiAyLjM4MzI4QzkuMDU3NzEgMi4yMDA0NSA5LjIwMDQ1IDIuMDU3NzEgOS4zODMyOCAyLjAxMzgyWk0yLjc0OTY3IDcuOTk5OTdMMi44IDhINS4yTDUuMjUwMzMgNy45OTk5N0M1LjQ3ODc4IDcuOTk5NzUgNS42NzU3MiA3Ljk5OTU2IDUuODUwMTcgOC4wNDE0NUM2LjM5ODY0IDguMTczMTIgNi44MjY4OCA4LjYwMTM2IDYuOTU4NTYgOS4xNDk4M0M3LjAwMDQ0IDkuMzI0MjkgNy4wMDAyNSA5LjUyMTIyIDcuMDAwMDMgOS43NDk2N0w3IDkuOFYxMi4yTDcuMDAwMDMgMTIuMjUwM0M3LjAwMDI1IDEyLjQ3ODggNy4wMDA0NCAxMi42NzU3IDYuOTU4NTYgMTIuODUwMkM2LjgyNjg4IDEzLjM5ODYgNi4zOTg2NCAxMy44MjY5IDUuODUwMTcgMTMuOTU4NkM1LjY3NTcyIDE0LjAwMDQgNS40Nzg3OCAxNC4wMDAzIDUuMjUwMzMgMTRMNS4yIDE0SDIuOEwyLjc0OTY3IDE0QzIuNTIxMjIgMTQuMDAwMyAyLjMyNDI5IDE0LjAwMDQgMi4xNDk4MyAxMy45NTg2QzEuNjAxMzYgMTMuODI2OSAxLjE3MzEyIDEzLjM5ODYgMS4wNDE0NSAxMi44NTAyQzAuOTk5NTY0IDEyLjY3NTcgMC45OTk3NTIgMTIuNDc4OCAwLjk5OTk3IDEyLjI1MDNMMSAxMi4yVjkuOEwwLjk5OTk3IDkuNzQ5NjdDMC45OTk3NTIgOS41MjEyMiAwLjk5OTU2NCA5LjMyNDI5IDEuMDQxNDUgOS4xNDk4M0MxLjE3MzEyIDguNjAxMzYgMS42MDEzNiA4LjE3MzEyIDIuMTQ5ODMgOC4wNDE0NUMyLjMyNDI5IDcuOTk5NTYgMi41MjEyMiA3Ljk5OTc1IDIuNzQ5NjcgNy45OTk5N1pNMi44IDlDMi40OTIyMiA5IDIuNDI2MzIgOS4wMDM0OCAyLjM4MzI4IDkuMDEzODJDMi4yMDA0NSA5LjA1NzcxIDIuMDU3NzEgOS4yMDA0NSAyLjAxMzgyIDkuMzgzMjhDMi4wMDM0OCA5LjQyNjMyIDIgOS40OTIyMiAyIDkuOFYxMi4yQzIgMTIuNTA3OCAyLjAwMzQ4IDEyLjU3MzcgMi4wMTM4MiAxMi42MTY3QzIuMDU3NzEgMTIuNzk5NSAyLjIwMDQ1IDEyLjk0MjMgMi4zODMyOCAxMi45ODYyQzIuNDI2MzIgMTIuOTk2NSAyLjQ5MjIyIDEzIDIuOCAxM0g1LjJDNS41MDc3OSAxMyA1LjU3MzY5IDEyLjk5NjUgNS42MTY3MiAxMi45ODYyQzUuNzk5NTUgMTIuOTQyMyA1Ljk0MjI5IDEyLjc5OTUgNS45ODYxOSAxMi42MTY3QzUuOTk2NTIgMTIuNTczNyA2IDEyLjUwNzggNiAxMi4yVjkuOEM2IDkuNDkyMjIgNS45OTY1MiA5LjQyNjMyIDUuOTg2MTkgOS4zODMyOEM1Ljk0MjI5IDkuMjAwNDUgNS43OTk1NSA5LjA1NzcxIDUuNjE2NzIgOS4wMTM4MkM1LjU3MzY5IDkuMDAzNDggNS41MDc3OSA5IDUuMiA5SDIuOFpNOS44IDhMOS43NDk2NyA3Ljk5OTk3QzkuNTIxMjIgNy45OTk3NSA5LjMyNDI5IDcuOTk5NTYgOS4xNDk4MyA4LjA0MTQ1QzguNjAxMzYgOC4xNzMxMiA4LjE3MzEyIDguNjAxMzYgOC4wNDE0NSA5LjE0OTgzQzcuOTk5NTYgOS4zMjQyOSA3Ljk5OTc1IDkuNTIxMjIgNy45OTk5NyA5Ljc0OTY3TDggOS44VjEyLjJMNy45OTk5NyAxMi4yNTAzQzcuOTk5NzUgMTIuNDc4OCA3Ljk5OTU2IDEyLjY3NTcgOC4wNDE0NSAxMi44NTAyQzguMTczMTIgMTMuMzk4NiA4LjYwMTM2IDEzLjgyNjkgOS4xNDk4MyAxMy45NTg2QzkuMzI0MjkgMTQuMDAwNCA5LjUyMTIyIDE0LjAwMDMgOS43NDk2NyAxNEw5LjggMTRIMTIuMkwxMi4yNTAzIDE0QzEyLjQ3ODggMTQuMDAwMyAxMi42NzU3IDE0LjAwMDQgMTIuODUwMiAxMy45NTg2QzEzLjM5ODYgMTMuODI2OSAxMy44MjY5IDEzLjM5ODYgMTMuOTU4NiAxMi44NTAyQzE0LjAwMDQgMTIuNjc1NyAxNC4wMDAzIDEyLjQ3ODggMTQgMTIuMjUwM0wxNCAxMi4yVjkuOEwxNCA5Ljc0OTY3QzE0LjAwMDMgOS41MjEyMiAxNC4wMDA0IDkuMzI0MjkgMTMuOTU4NiA5LjE0OTgzQzEzLjgyNjkgOC42MDEzNiAxMy4zOTg2IDguMTczMTIgMTIuODUwMiA4LjA0MTQ1QzEyLjY3NTcgNy45OTk1NiAxMi40Nzg4IDcuOTk5NzUgMTIuMjUwMyA3Ljk5OTk3TDEyLjIgOEg5LjhaTTkuMzgzMjggOS4wMTM4MkM5LjQyNjMyIDkuMDAzNDggOS40OTIyMiA5IDkuOCA5SDEyLjJDMTIuNTA3OCA5IDEyLjU3MzcgOS4wMDM0OCAxMi42MTY3IDkuMDEzODJDMTIuNzk5NSA5LjA1NzcxIDEyLjk0MjMgOS4yMDA0NSAxMi45ODYyIDkuMzgzMjhDMTIuOTk2NSA5LjQyNjMyIDEzIDkuNDkyMjIgMTMgOS44VjEyLjJDMTMgMTIuNTA3OCAxMi45OTY1IDEyLjU3MzcgMTIuOTg2MiAxMi42MTY3QzEyLjk0MjMgMTIuNzk5NSAxMi43OTk1IDEyLjk0MjMgMTIuNjE2NyAxMi45ODYyQzEyLjU3MzcgMTIuOTk2NSAxMi41MDc4IDEzIDEyLjIgMTNIOS44QzkuNDkyMjIgMTMgOS40MjYzMiAxMi45OTY1IDkuMzgzMjggMTIuOTg2MkM5LjIwMDQ1IDEyLjk0MjMgOS4wNTc3MSAxMi43OTk1IDkuMDEzODIgMTIuNjE2N0M5LjAwMzQ4IDEyLjU3MzcgOSAxMi41MDc4IDkgMTIuMlY5LjhDOSA5LjQ5MjIyIDkuMDAzNDggOS40MjYzMiA5LjAxMzgyIDkuMzgzMjhDOS4wNTc3MSA5LjIwMDQ1IDkuMjAwNDUgOS4wNTc3MSA5LjM4MzI4IDkuMDEzODJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxxZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4wMDAxNCAyLjczODk1QzMuMDAwMTQgMi45NDY5OCAyLjc2MDg3IDMuMDY0MDEgMi41OTY2NiAyLjkzNjI4TDEuMDAzODYgMS42OTc0NEMwLjg3NTE3NyAxLjU5NzM1IDAuODc1MTc3IDEuNDAyODYgMS4wMDM4NiAxLjMwMjc3TDIuNTk2NjYgMC4wNjM5MjhDMi43NjA4NyAtMC4wNjM3OTQ0IDMuMDAwMTQgMC4wNTMyMjkzIDMuMDAwMTQgMC4yNjEyNjZWMS4wMDAxMkg5LjAwMDA5VjAuMjYxMjk2QzkuMDAwMDkgMC4wNTMyNTkxIDkuMjM5MzYgLTAuMDYzNzY0NiA5LjQwMzU4IDAuMDYzOTU3OEwxMC45OTY0IDEuMzAyOEMxMS4xMjUxIDEuNDAyODkgMTEuMTI1MSAxLjU5NzM4IDEwLjk5NjQgMS42OTc0N0w5LjQwMzU4IDIuOTM2MzFDOS4yMzkzNiAzLjA2NDA0IDkuMDAwMDkgMi45NDcwMSA5LjAwMDA5IDIuNzM4OThWMi4wMDAxMkgzLjAwMDE0VjIuNzM4OTVaTTkuNTAwMDIgNC45OTk5OEgyLjUwMDAyQzIuMjIzODggNC45OTk5OCAyLjAwMDAyIDUuMjIzODQgMi4wMDAwMiA1LjQ5OTk4VjEyLjVDMi4wMDAwMiAxMi43NzYxIDIuMjIzODggMTMgMi41MDAwMiAxM0g5LjUwMDAyQzkuNzc2MTYgMTMgMTAgMTIuNzc2MSAxMCAxMi41VjUuNDk5OThDMTAgNS4yMjM4NCA5Ljc3NjE2IDQuOTk5OTggOS41MDAwMiA0Ljk5OTk4Wk0yLjUwMDAyIDMuOTk5OThDMS42NzE1OSAzLjk5OTk4IDEuMDAwMDIgNC42NzE1NiAxLjAwMDAyIDUuNDk5OThWMTIuNUMxLjAwMDAyIDEzLjMyODQgMS42NzE1OSAxNCAyLjUwMDAyIDE0SDkuNTAwMDJDMTAuMzI4NCAxNCAxMSAxMy4zMjg0IDExIDEyLjVWNS40OTk5OEMxMSA0LjY3MTU2IDEwLjMyODQgMy45OTk5OCA5LjUwMDAyIDMuOTk5OThIMi41MDAwMlpNMTQuNzM4OSA2LjAwMDAxSDE0VjEySDE0LjczODlDMTQuOTQ2OSAxMiAxNS4wNjQgMTIuMjM5MyAxNC45MzYyIDEyLjQwMzVMMTMuNjk3NCAxMy45OTYzQzEzLjU5NzMgMTQuMTI1IDEzLjQwMjggMTQuMTI1IDEzLjMwMjcgMTMuOTk2M0wxMi4wNjM5IDEyLjQwMzVDMTEuOTM2MiAxMi4yMzkzIDEyLjA1MzIgMTIgMTIuMjYxMiAxMkgxM1Y2LjAwMDAxSDEyLjI2MTJDMTIuMDUzMiA2LjAwMDAxIDExLjkzNjEgNS43NjA3NCAxMi4wNjM5IDUuNTk2NTNMMTMuMzAyNyA0LjAwMzczQzEzLjQwMjggMy44NzUwNSAxMy41OTczIDMuODc1MDUgMTMuNjk3NCA0LjAwMzc0TDE0LjkzNjIgNS41OTY1M0MxNS4wNjM5IDUuNzYwNzQgMTQuOTQ2OSA2LjAwMDAxIDE0LjczODkgNi4wMDAwMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFllPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc3MDc1QzMuODQyMjIgMC44NzcwNzUgMC44NzcwNzUgMy44NDIyMiAwLjg3NzA3NSA3LjQ5OTkxQzAuODc3MDc1IDExLjE1NzYgMy44NDIyMiAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MxMS4xNTc2IDE0LjEyMjcgMTQuMTIyNyAxMS4xNTc2IDE0LjEyMjcgNy40OTk5MUMxNC4xMjI3IDMuODQyMjIgMTEuMTU3NiAwLjg3NzA3NSA3LjQ5OTkxIDAuODc3MDc1Wk0xLjgyNzA4IDcuNDk5OTFDMS44MjcwOCA0LjM2Njg5IDQuMzY2ODkgMS44MjcwNyA3LjQ5OTkxIDEuODI3MDdDMTAuNjMyOSAxLjgyNzA3IDEzLjE3MjcgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTFDMTMuMTcyNyAxMC42MzI5IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDNC4zNjY4OSAxMy4xNzI3IDEuODI3MDggMTAuNjMyOSAxLjgyNzA4IDcuNDk5OTFaTTguMzcyODcgNy41MDAwNkM4LjM3Mjg3IDcuOTgxOTYgNy45ODIyMSA4LjM3MjYzIDcuNTAwMyA4LjM3MjYzQzcuMDE4MzkgOC4zNzI2MyA2LjYyNzczIDcuOTgxOTYgNi42Mjc3MyA3LjUwMDA2QzYuNjI3NzMgNy4wMTgxNSA3LjAxODM5IDYuNjI3NDggNy41MDAzIDYuNjI3NDhDNy45ODIyMSA2LjYyNzQ4IDguMzcyODcgNy4wMTgxNSA4LjM3Mjg3IDcuNTAwMDZaTTkuMzIyODcgNy41MDAwNkM5LjMyMjg3IDguNTA2NjQgOC41MDY4OCA5LjMyMjYzIDcuNTAwMyA5LjMyMjYzQzYuNDkzNzIgOS4zMjI2MyA1LjY3NzczIDguNTA2NjQgNS42Nzc3MyA3LjUwMDA2QzUuNjc3NzMgNi40OTM0OCA2LjQ5MzcyIDUuNjc3NDggNy41MDAzIDUuNjc3NDhDOC41MDY4OCA1LjY3NzQ4IDkuMzIyODcgNi40OTM0OCA5LjMyMjg3IDcuNTAwMDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxLZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiA3LjVDMiA3LjIyMzg2IDIuMjIzODYgNyAyLjUgN0gxMi41QzEyLjc3NjEgNyAxMyA3LjIyMzg2IDEzIDcuNUMxMyA3Ljc3NjE0IDEyLjc3NjEgOCAxMi41IDhIMi41QzIuMjIzODYgOCAyIDcuNzc2MTQgMiA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxYZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDJDNy43NzYxNCAyIDggMi4yMjM4NiA4IDIuNUw4IDEyLjVDOCAxMi43NzYxIDcuNzc2MTQgMTMgNy41IDEzQzcuMjIzODYgMTMgNyAxMi43NzYxIDcgMTIuNUw3IDIuNUM3IDIuMjIzODYgNy4yMjM4NiAyIDcuNSAyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSA5LjEyNUM4LjM5NzQ2IDkuMTI1IDkuMTI1IDguMzk3NDYgOS4xMjUgNy41QzkuMTI1IDYuNjAyNTQgOC4zOTc0NiA1Ljg3NSA3LjUgNS44NzVDNi42MDI1NCA1Ljg3NSA1Ljg3NSA2LjYwMjU0IDUuODc1IDcuNUM1Ljg3NSA4LjM5NzQ2IDYuNjAyNTQgOS4xMjUgNy41IDkuMTI1Wk03LjUgMTAuMTI1QzguOTQ5NzUgMTAuMTI1IDEwLjEyNSA4Ljk0OTc1IDEwLjEyNSA3LjVDMTAuMTI1IDYuMDUwMjUgOC45NDk3NSA0Ljg3NSA3LjUgNC44NzVDNi4wNTAyNSA0Ljg3NSA0Ljg3NSA2LjA1MDI1IDQuODc1IDcuNUM0Ljg3NSA4Ljk0OTc1IDYuMDUwMjUgMTAuMTI1IDcuNSAxMC4xMjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxRZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOS44NzUgNy41QzkuODc1IDguODExNjggOC44MTE2OCA5Ljg3NSA3LjUgOS44NzVDNi4xODgzMiA5Ljg3NSA1LjEyNSA4LjgxMTY4IDUuMTI1IDcuNUM1LjEyNSA2LjE4ODMyIDYuMTg4MzIgNS4xMjUgNy41IDUuMTI1QzguODExNjggNS4xMjUgOS44NzUgNi4xODgzMiA5Ljg3NSA3LjVaXCIsZmlsbDpufSkpfSxldD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy42MjUgNy41QzMuNjI1IDguMTIxMzIgMy4xMjEzMiA4LjYyNSAyLjUgOC42MjVDMS44Nzg2OCA4LjYyNSAxLjM3NSA4LjEyMTMyIDEuMzc1IDcuNUMxLjM3NSA2Ljg3ODY4IDEuODc4NjggNi4zNzUgMi41IDYuMzc1QzMuMTIxMzIgNi4zNzUgMy42MjUgNi44Nzg2OCAzLjYyNSA3LjVaTTguNjI1IDcuNUM4LjYyNSA4LjEyMTMyIDguMTIxMzIgOC42MjUgNy41IDguNjI1QzYuODc4NjggOC42MjUgNi4zNzUgOC4xMjEzMiA2LjM3NSA3LjVDNi4zNzUgNi44Nzg2OCA2Ljg3ODY4IDYuMzc1IDcuNSA2LjM3NUM4LjEyMTMyIDYuMzc1IDguNjI1IDYuODc4NjggOC42MjUgNy41Wk0xMi41IDguNjI1QzEzLjEyMTMgOC42MjUgMTMuNjI1IDguMTIxMzIgMTMuNjI1IDcuNUMxMy42MjUgNi44Nzg2OCAxMy4xMjEzIDYuMzc1IDEyLjUgNi4zNzVDMTEuODc4NyA2LjM3NSAxMS4zNzUgNi44Nzg2OCAxMS4zNzUgNy41QzExLjM3NSA4LjEyMTMyIDExLjg3ODcgOC42MjUgMTIuNSA4LjYyNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHR0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjYyNSAyLjVDOC42MjUgMy4xMjEzMiA4LjEyMTMyIDMuNjI1IDcuNSAzLjYyNUM2Ljg3ODY4IDMuNjI1IDYuMzc1IDMuMTIxMzIgNi4zNzUgMi41QzYuMzc1IDEuODc4NjggNi44Nzg2OCAxLjM3NSA3LjUgMS4zNzVDOC4xMjEzMiAxLjM3NSA4LjYyNSAxLjg3ODY4IDguNjI1IDIuNVpNOC42MjUgNy41QzguNjI1IDguMTIxMzIgOC4xMjEzMiA4LjYyNSA3LjUgOC42MjVDNi44Nzg2OCA4LjYyNSA2LjM3NSA4LjEyMTMyIDYuMzc1IDcuNUM2LjM3NSA2Ljg3ODY4IDYuODc4NjggNi4zNzUgNy41IDYuMzc1QzguMTIxMzIgNi4zNzUgOC42MjUgNi44Nzg2OCA4LjYyNSA3LjVaTTcuNSAxMy42MjVDOC4xMjEzMiAxMy42MjUgOC42MjUgMTMuMTIxMyA4LjYyNSAxMi41QzguNjI1IDExLjg3ODcgOC4xMjEzMiAxMS4zNzUgNy41IDExLjM3NUM2Ljg3ODY4IDExLjM3NSA2LjM3NSAxMS44Nzg3IDYuMzc1IDEyLjVDNi4zNzUgMTMuMTIxMyA2Ljg3ODY4IDEzLjYyNSA3LjUgMTMuNjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuODUzNTUgMi4xNDY0NUMzLjY1ODI5IDEuOTUxMTggMy4zNDE3MSAxLjk1MTE4IDMuMTQ2NDUgMi4xNDY0NUMyLjk1MTE4IDIuMzQxNzEgMi45NTExOCAyLjY1ODI5IDMuMTQ2NDUgMi44NTM1NUw3LjE0NjQ1IDYuODUzNTVDNy4zNDE3MSA3LjA0ODgyIDcuNjU4MjkgNy4wNDg4MiA3Ljg1MzU1IDYuODUzNTVMMTEuODUzNiAyLjg1MzU1QzEyLjA0ODggMi42NTgyOSAxMi4wNDg4IDIuMzQxNzEgMTEuODUzNiAyLjE0NjQ1QzExLjY1ODMgMS45NTExOCAxMS4zNDE3IDEuOTUxMTggMTEuMTQ2NCAyLjE0NjQ1TDcuNSA1Ljc5Mjg5TDMuODUzNTUgMi4xNDY0NVpNMy44NTM1NSA4LjE0NjQ1QzMuNjU4MjkgNy45NTExOCAzLjM0MTcxIDcuOTUxMTggMy4xNDY0NSA4LjE0NjQ1QzIuOTUxMTggOC4zNDE3MSAyLjk1MTE4IDguNjU4MjkgMy4xNDY0NSA4Ljg1MzU1TDcuMTQ2NDUgMTIuODUzNkM3LjM0MTcxIDEzLjA0ODggNy42NTgyOSAxMy4wNDg4IDcuODUzNTUgMTIuODUzNkwxMS44NTM2IDguODUzNTVDMTIuMDQ4OCA4LjY1ODI5IDEyLjA0ODggOC4zNDE3MSAxMS44NTM2IDguMTQ2NDVDMTEuNjU4MyA3Ljk1MTE4IDExLjM0MTcgNy45NTExOCAxMS4xNDY0IDguMTQ2NDVMNy41IDExLjc5MjlMMy44NTM1NSA4LjE0NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuODUzNTUgMy44NTM1NUM3LjA0ODgyIDMuNjU4MjkgNy4wNDg4MiAzLjM0MTcxIDYuODUzNTUgMy4xNDY0NUM2LjY1ODI5IDIuOTUxMTggNi4zNDE3MSAyLjk1MTE4IDYuMTQ2NDUgMy4xNDY0NUwyLjE0NjQ1IDcuMTQ2NDVDMS45NTExOCA3LjM0MTcxIDEuOTUxMTggNy42NTgyOSAyLjE0NjQ1IDcuODUzNTVMNi4xNDY0NSAxMS44NTM2QzYuMzQxNzEgMTIuMDQ4OCA2LjY1ODI5IDEyLjA0ODggNi44NTM1NSAxMS44NTM2QzcuMDQ4ODIgMTEuNjU4MyA3LjA0ODgyIDExLjM0MTcgNi44NTM1NSAxMS4xNDY0TDMuMjA3MTEgNy41TDYuODUzNTUgMy44NTM1NVpNMTIuODUzNiAzLjg1MzU1QzEzLjA0ODggMy42NTgyOSAxMy4wNDg4IDMuMzQxNzEgMTIuODUzNiAzLjE0NjQ1QzEyLjY1ODMgMi45NTExOCAxMi4zNDE3IDIuOTUxMTggMTIuMTQ2NCAzLjE0NjQ1TDguMTQ2NDUgNy4xNDY0NUM3Ljk1MTE4IDcuMzQxNzEgNy45NTExOCA3LjY1ODI5IDguMTQ2NDUgNy44NTM1NUwxMi4xNDY0IDExLjg1MzZDMTIuMzQxNyAxMi4wNDg4IDEyLjY1ODMgMTIuMDQ4OCAxMi44NTM2IDExLjg1MzZDMTMuMDQ4OCAxMS42NTgzIDEzLjA0ODggMTEuMzQxNyAxMi44NTM2IDExLjE0NjRMOS4yMDcxMSA3LjVMMTIuODUzNiAzLjg1MzU1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sb3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuMTQ2NDUgMTEuMTQ2NEMxLjk1MTE4IDExLjM0MTcgMS45NTExOCAxMS42NTgzIDIuMTQ2NDUgMTEuODUzNkMyLjM0MTcxIDEyLjA0ODggMi42NTgyOSAxMi4wNDg4IDIuODUzNTUgMTEuODUzNkw2Ljg1MzU1IDcuODUzNTVDNy4wNDg4MiA3LjY1ODI5IDcuMDQ4ODIgNy4zNDE3MSA2Ljg1MzU1IDcuMTQ2NDVMMi44NTM1NSAzLjE0NjQ1QzIuNjU4MjkgMi45NTExOCAyLjM0MTcxIDIuOTUxMTggMi4xNDY0NSAzLjE0NjQ1QzEuOTUxMTggMy4zNDE3MSAxLjk1MTE4IDMuNjU4MjkgMi4xNDY0NSAzLjg1MzU1TDUuNzkyODkgNy41TDIuMTQ2NDUgMTEuMTQ2NFpNOC4xNDY0NSAxMS4xNDY0QzcuOTUxMTggMTEuMzQxNyA3Ljk1MTE4IDExLjY1ODMgOC4xNDY0NSAxMS44NTM2QzguMzQxNzEgMTIuMDQ4OCA4LjY1ODI5IDEyLjA0ODggOC44NTM1NSAxMS44NTM2TDEyLjg1MzYgNy44NTM1NUMxMy4wNDg4IDcuNjU4MjkgMTMuMDQ4OCA3LjM0MTcxIDEyLjg1MzYgNy4xNDY0NUw4Ljg1MzU1IDMuMTQ2NDVDOC42NTgyOSAyLjk1MTE4IDguMzQxNzEgMi45NTExOCA4LjE0NjQ1IDMuMTQ2NDVDNy45NTExOCAzLjM0MTcxIDcuOTUxMTggMy42NTgyOSA4LjE0NjQ1IDMuODUzNTVMMTEuNzkyOSA3LjVMOC4xNDY0NSAxMS4xNDY0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjE0NjQgNi44NTM1NUMxMS4zNDE3IDcuMDQ4ODIgMTEuNjU4MyA3LjA0ODgyIDExLjg1MzYgNi44NTM1NUMxMi4wNDg4IDYuNjU4MjkgMTIuMDQ4OCA2LjM0MTcxIDExLjg1MzYgNi4xNDY0NUw3Ljg1MzU1IDIuMTQ2NDVDNy42NTgyOSAxLjk1MTE4IDcuMzQxNzEgMS45NTExOCA3LjE0NjQ1IDIuMTQ2NDVMMy4xNDY0NSA2LjE0NjQ1QzIuOTUxMTggNi4zNDE3MSAyLjk1MTE4IDYuNjU4MjkgMy4xNDY0NSA2Ljg1MzU1QzMuMzQxNzEgNy4wNDg4MiAzLjY1ODI5IDcuMDQ4ODIgMy44NTM1NSA2Ljg1MzU1TDcuNSAzLjIwNzExTDExLjE0NjQgNi44NTM1NVpNMTEuMTQ2NCAxMi44NTM2QzExLjM0MTcgMTMuMDQ4OCAxMS42NTgzIDEzLjA0ODggMTEuODUzNiAxMi44NTM2QzEyLjA0ODggMTIuNjU4MyAxMi4wNDg4IDEyLjM0MTcgMTEuODUzNiAxMi4xNDY0TDcuODUzNTUgOC4xNDY0NUM3LjY1ODI5IDcuOTUxMTggNy4zNDE3MSA3Ljk1MTE4IDcuMTQ2NDUgOC4xNDY0NUwzLjE0NjQ1IDEyLjE0NjRDMi45NTExOCAxMi4zNDE3IDIuOTUxMTggMTIuNjU4MyAzLjE0NjQ1IDEyLjg1MzZDMy4zNDE3MSAxMy4wNDg4IDMuNjU4MjkgMTMuMDQ4OCAzLjg1MzU1IDEyLjg1MzZMNy41IDkuMjA3MTFMMTEuMTQ2NCAxMi44NTM2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNTAwMDUgMS4wNDk5OUM3Ljc0ODU4IDEuMDQ5OTkgNy45NTAwNSAxLjI1MTQ2IDcuOTUwMDUgMS40OTk5OVY4LjQxMzU5TDEwLjE4MTkgNi4xODE3OUMxMC4zNTc2IDYuMDA2MDUgMTAuNjQyNSA2LjAwNjA1IDEwLjgxODIgNi4xODE3OUMxMC45OTQgNi4zNTc1MyAxMC45OTQgNi42NDI0NSAxMC44MTgyIDYuODE4MTlMNy44MTgyNSA5LjgxODE5QzcuNjQyNTEgOS45OTM5MiA3LjM1NzU5IDkuOTkzOTIgNy4xODE4NSA5LjgxODE5TDQuMTgxODUgNi44MTgxOUM0LjAwNjExIDYuNjQyNDUgNC4wMDYxMSA2LjM1NzUzIDQuMTgxODUgNi4xODE3OUM0LjM1NzU5IDYuMDA2MDUgNC42NDI1MSA2LjAwNjA1IDQuODE4MjUgNi4xODE3OUw3LjA1MDA1IDguNDEzNTlWMS40OTk5OUM3LjA1MDA1IDEuMjUxNDYgNy4yNTE1MiAxLjA0OTk5IDcuNTAwMDUgMS4wNDk5OVpNMi41IDEwQzIuNzc2MTQgMTAgMyAxMC4yMjM5IDMgMTAuNVYxMkMzIDEyLjU1MzkgMy40NDU2NSAxMyAzLjk5NjM1IDEzSDExLjAwMTJDMTEuNTUyOSAxMyAxMiAxMi41NTI4IDEyIDEyVjEwLjVDMTIgMTAuMjIzOSAxMi4yMjM5IDEwIDEyLjUgMTBDMTIuNzc2MSAxMCAxMyAxMC4yMjM5IDEzIDEwLjVWMTJDMTMgMTMuMTA0MSAxMi4xMDYyIDE0IDExLjAwMTIgMTRIMy45OTYzNUMyLjg5MDE5IDE0IDIgMTMuMTAzIDIgMTJWMTAuNUMyIDEwLjIyMzkgMi4yMjM4NiAxMCAyLjUgMTBaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxsdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI0LjVcIixjeTpcIjIuNVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI0LjVcIixjeTpcIjQuNVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI0LjVcIixjeTpcIjYuNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjQuNVwiLGN5OlwiOC40OTlcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNC41XCIsY3k6XCIxMC40OThcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNC41XCIsY3k6XCIxMi40OThcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNi41XCIsY3k6XCIyLjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNi41XCIsY3k6XCI0LjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNi41XCIsY3k6XCI2LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI2LjVcIixjeTpcIjguNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjYuNVwiLGN5OlwiMTAuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjYuNVwiLGN5OlwiMTIuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjguNDk5XCIsY3k6XCIyLjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiOC40OTlcIixjeTpcIjQuNVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI4LjQ5OVwiLGN5OlwiNi40OTlcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiOC40OTlcIixjeTpcIjguNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjguNDk5XCIsY3k6XCIxMC40OThcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiOC40OTlcIixjeTpcIjEyLjQ5OFwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCIxMC40OTlcIixjeTpcIjIuNVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCIxMC40OTlcIixjeTpcIjQuNVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCIxMC40OTlcIixjeTpcIjYuNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjEwLjQ5OVwiLGN5OlwiOC40OTlcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiMTAuNDk5XCIsY3k6XCIxMC40OThcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiMTAuNDk5XCIsY3k6XCIxMi40OThcIixyOlwiLjZcIixmaWxsOm59KSl9LHN0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjUgNC42MjVDNi4xMjEzMiA0LjYyNSA2LjYyNSA0LjEyMTMyIDYuNjI1IDMuNUM2LjYyNSAyLjg3ODY4IDYuMTIxMzIgMi4zNzUgNS41IDIuMzc1QzQuODc4NjggMi4zNzUgNC4zNzUgMi44Nzg2OCA0LjM3NSAzLjVDNC4zNzUgNC4xMjEzMiA0Ljg3ODY4IDQuNjI1IDUuNSA0LjYyNVpNOS41IDQuNjI1QzEwLjEyMTMgNC42MjUgMTAuNjI1IDQuMTIxMzIgMTAuNjI1IDMuNUMxMC42MjUgMi44Nzg2OCAxMC4xMjEzIDIuMzc1IDkuNSAyLjM3NUM4Ljg3ODY4IDIuMzc1IDguMzc1IDIuODc4NjggOC4zNzUgMy41QzguMzc1IDQuMTIxMzIgOC44Nzg2OCA0LjYyNSA5LjUgNC42MjVaTTEwLjYyNSA3LjVDMTAuNjI1IDguMTIxMzIgMTAuMTIxMyA4LjYyNSA5LjUgOC42MjVDOC44Nzg2OCA4LjYyNSA4LjM3NSA4LjEyMTMyIDguMzc1IDcuNUM4LjM3NSA2Ljg3ODY4IDguODc4NjggNi4zNzUgOS41IDYuMzc1QzEwLjEyMTMgNi4zNzUgMTAuNjI1IDYuODc4NjggMTAuNjI1IDcuNVpNNS41IDguNjI1QzYuMTIxMzIgOC42MjUgNi42MjUgOC4xMjEzMiA2LjYyNSA3LjVDNi42MjUgNi44Nzg2OCA2LjEyMTMyIDYuMzc1IDUuNSA2LjM3NUM0Ljg3ODY4IDYuMzc1IDQuMzc1IDYuODc4NjggNC4zNzUgNy41QzQuMzc1IDguMTIxMzIgNC44Nzg2OCA4LjYyNSA1LjUgOC42MjVaTTEwLjYyNSAxMS41QzEwLjYyNSAxMi4xMjEzIDEwLjEyMTMgMTIuNjI1IDkuNSAxMi42MjVDOC44Nzg2OCAxMi42MjUgOC4zNzUgMTIuMTIxMyA4LjM3NSAxMS41QzguMzc1IDEwLjg3ODcgOC44Nzg2OCAxMC4zNzUgOS41IDEwLjM3NUMxMC4xMjEzIDEwLjM3NSAxMC42MjUgMTAuODc4NyAxMC42MjUgMTEuNVpNNS41IDEyLjYyNUM2LjEyMTMyIDEyLjYyNSA2LjYyNSAxMi4xMjEzIDYuNjI1IDExLjVDNi42MjUgMTAuODc4NyA2LjEyMTMyIDEwLjM3NSA1LjUgMTAuMzc1QzQuODc4NjggMTAuMzc1IDQuMzc1IDEwLjg3ODcgNC4zNzUgMTEuNUM0LjM3NSAxMi4xMjEzIDQuODc4NjggMTIuNjI1IDUuNSAxMi42MjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxjdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi40OTk5OCA0LjA5OTk4QzIuMjc5MDYgNC4wOTk5OCAyLjA5OTk4IDQuMjc5MDYgMi4wOTk5OCA0LjQ5OTk4QzIuMDk5OTggNC43MjA4OSAyLjI3OTA2IDQuODk5OTggMi40OTk5OCA0Ljg5OTk4SDEyLjVDMTIuNzIwOSA0Ljg5OTk4IDEyLjkgNC43MjA4OSAxMi45IDQuNDk5OThDMTIuOSA0LjI3OTA2IDEyLjcyMDkgNC4wOTk5OCAxMi41IDQuMDk5OThIMi40OTk5OFpNMi40OTk5OCA2LjA5OTk4QzIuMjc5MDYgNi4wOTk5OCAyLjA5OTk4IDYuMjc5MDYgMi4wOTk5OCA2LjQ5OTk4QzIuMDk5OTggNi43MjA4OSAyLjI3OTA2IDYuODk5OTggMi40OTk5OCA2Ljg5OTk4SDEyLjVDMTIuNzIwOSA2Ljg5OTk4IDEyLjkgNi43MjA4OSAxMi45IDYuNDk5OThDMTIuOSA2LjI3OTA2IDEyLjcyMDkgNi4wOTk5OCAxMi41IDYuMDk5OThIMi40OTk5OFpNMi4wOTk5OCA4LjQ5OTk4QzIuMDk5OTggOC4yNzkwNiAyLjI3OTA2IDguMDk5OTggMi40OTk5OCA4LjA5OTk4SDEyLjVDMTIuNzIwOSA4LjA5OTk4IDEyLjkgOC4yNzkwNiAxMi45IDguNDk5OThDMTIuOSA4LjcyMDg5IDEyLjcyMDkgOC44OTk5OCAxMi41IDguODk5OThIMi40OTk5OEMyLjI3OTA2IDguODk5OTggMi4wOTk5OCA4LjcyMDg5IDIuMDk5OTggOC40OTk5OFpNMi40OTk5OCAxMC4xQzIuMjc5MDYgMTAuMSAyLjA5OTk4IDEwLjI3OTEgMi4wOTk5OCAxMC41QzIuMDk5OTggMTAuNzIwOSAyLjI3OTA2IDEwLjkgMi40OTk5OCAxMC45SDEyLjVDMTIuNzIwOSAxMC45IDEyLjkgMTAuNzIwOSAxMi45IDEwLjVDMTIuOSAxMC4yNzkxIDEyLjcyMDkgMTAuMSAxMi41IDEwLjFIMi40OTk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHV0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjA5OTk4IDEyLjVDNC4wOTk5OCAxMi43MjA5IDQuMjc5MDYgMTIuOSA0LjQ5OTk4IDEyLjlDNC43MjA4OSAxMi45IDQuODk5OTggMTIuNzIwOSA0Ljg5OTk4IDEyLjVMNC44OTk5OCAyLjUwMDAyQzQuODk5OTggMi4yNzkxMSA0LjcyMDg5IDIuMTAwMDMgNC40OTk5OCAyLjEwMDAzQzQuMjc5MDYgMi4xMDAwMyA0LjA5OTk4IDIuMjc5MTEgNC4wOTk5OCAyLjUwMDAyTDQuMDk5OTggMTIuNVpNNi4wOTk5OCAxMi41QzYuMDk5OTggMTIuNzIwOSA2LjI3OTA2IDEyLjkgNi40OTk5OCAxMi45QzYuNzIwODkgMTIuOSA2Ljg5OTk4IDEyLjcyMDkgNi44OTk5OCAxMi41TDYuODk5OTggMi41MDAwMkM2Ljg5OTk4IDIuMjc5MTEgNi43MjA4OSAyLjEwMDAzIDYuNDk5OTggMi4xMDAwM0M2LjI3OTA2IDIuMTAwMDMgNi4wOTk5OCAyLjI3OTExIDYuMDk5OTggMi41MDAwMkw2LjA5OTk4IDEyLjVaTTguNDk5OTggMTIuOUM4LjI3OTA2IDEyLjkgOC4wOTk5OCAxMi43MjA5IDguMDk5OTggMTIuNUw4LjA5OTk4IDIuNTAwMDJDOC4wOTk5OCAyLjI3OTExIDguMjc5MDYgMi4xMDAwMiA4LjQ5OTk4IDIuMTAwMDJDOC43MjA4OSAyLjEwMDAyIDguODk5OTggMi4yNzkxMSA4Ljg5OTk4IDIuNTAwMDJMOC44OTk5OCAxMi41QzguODk5OTggMTIuNzIwOSA4LjcyMDg5IDEyLjkgOC40OTk5OCAxMi45Wk0xMC4xIDEyLjVDMTAuMSAxMi43MjA5IDEwLjI3OTEgMTIuOSAxMC41IDEyLjlDMTAuNzIwOSAxMi45IDEwLjkgMTIuNzIwOSAxMC45IDEyLjVMMTAuOSAyLjUwMDAyQzEwLjkgMi4yNzkxMSAxMC43MjA5IDIuMTAwMDIgMTAuNSAyLjEwMDAyQzEwLjI3OTEgMi4xMDAwMiAxMC4xIDIuMjc5MTEgMTAuMSAyLjUwMDAyTDEwLjEgMTIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGZ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMC4zMjg1IDEuMTM2MDdDMTAuMTMzMiAwLjk0MDgwOSA5LjgxNjYyIDAuOTQwODA4IDkuNjIxMzYgMS4xMzYwN0M5LjQyNjA5IDEuMzMxMzMgOS40MjYwOSAxLjY0NzkyIDkuNjIxMzYgMS44NDMxOEwxMC4yNzQ0IDIuNDk2MTlMNS40MjU2MyA2LjEzMjc0TDQuMzE4MDUgNS4wMjUxNkM0LjEyMjc5IDQuODI5OSAzLjgwNjIxIDQuODI5OSAzLjYxMDk1IDUuMDI1MTZDMy40MTU2OSA1LjIyMDQyIDMuNDE1NjkgNS41MzcgMy42MTA5NSA1LjczMjI2TDUuMDI1MTYgNy4xNDY0OEw2LjA4NTgyIDguMjA3MTRMMi44MTU0NSAxMS40Nzc1QzIuNjIwMTkgMTEuNjcyOCAyLjYyMDE5IDExLjk4OTQgMi44MTU0NSAxMi4xODQ2QzMuMDEwNzIgMTIuMzc5OSAzLjMyNzMgMTIuMzc5OSAzLjUyMjU2IDEyLjE4NDZMNi43OTI5MyA4LjkxNDI1TDcuODUzNTkgOS45NzQ5MUw5LjI2NzggMTEuMzg5MUM5LjQ2MzA2IDExLjU4NDQgOS43Nzk2NSAxMS41ODQ0IDkuOTc0OTEgMTEuMzg5MUMxMC4xNzAyIDExLjE5MzkgMTAuMTcwMiAxMC44NzczIDkuOTc0OTEgMTAuNjgyTDguODY3MzMgOS41NzQ0M0wxMi41MDM5IDQuNzI1N0wxMy4xNTY5IDUuMzc4NzFDMTMuMzUyMiA1LjU3Mzk3IDEzLjY2ODcgNS41NzM5NyAxMy44NjQgNS4zNzg3MUMxNC4wNTkzIDUuMTgzNDUgMTQuMDU5MyA0Ljg2Njg3IDEzLjg2NCA0LjY3MTZMMTIuODAzMyAzLjYxMDk0TDExLjM4OTEgMi4xOTY3M0wxMC4zMjg1IDEuMTM2MDdaTTYuMTM5OTIgNi44NDcwMkwxMC45ODg3IDMuMjEwNDdMMTEuNzg5NiA0LjAxMTQyTDguMTUzMDUgOC44NjAxNUw2LjEzOTkyIDYuODQ3MDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxkdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOS42MjEyOSAxLjEzNjA3QzkuODE2NTYgMC45NDA4MDggMTAuMTMzMSAwLjk0MDgwOSAxMC4zMjg0IDEuMTM2MDdMMTEuMzg5MSAyLjE5NjczTDEyLjgwMzMgMy42MTA5NEwxMy44NjM5IDQuNjcxNkMxNC4wNTkyIDQuODY2ODcgMTQuMDU5MiA1LjE4MzQ1IDEzLjg2MzkgNS4zNzg3MUMxMy42Njg3IDUuNTczOTcgMTMuMzUyMSA1LjU3Mzk3IDEzLjE1NjggNS4zNzg3MUwxMi41MDM4IDQuNzI1N0w4Ljg2NzI3IDkuNTc0NDNMOS45NzQ4NSAxMC42ODJDMTAuMTcwMSAxMC44NzczIDEwLjE3MDEgMTEuMTkzOSA5Ljk3NDg1IDExLjM4OTFDOS43Nzk1OSAxMS41ODQ0IDkuNDYzIDExLjU4NDQgOS4yNjc3NCAxMS4zODkxTDcuODUzNTMgOS45NzQ5MUw2Ljc5Mjg3IDguOTE0MjVMMy41MjI1IDEyLjE4NDZDMy4zMjcyNCAxMi4zNzk5IDMuMDEwNjUgMTIuMzc5OSAyLjgxNTM5IDEyLjE4NDZDMi42MjAxMyAxMS45ODk0IDIuNjIwMTMgMTEuNjcyOCAyLjgxNTM5IDExLjQ3NzVMNi4wODU3NiA4LjIwNzE0TDUuMDI1MSA3LjE0NjQ4TDMuNjEwODkgNS43MzIyNkMzLjQxNTYzIDUuNTM3IDMuNDE1NjIgNS4yMjA0MiAzLjYxMDg5IDUuMDI1MTZDMy44MDYxNSA0LjgyOTkgNC4xMjI3MyA0LjgyOTkgNC4zMTc5OSA1LjAyNTE2TDUuNDI1NTcgNi4xMzI3NEwxMC4yNzQzIDIuNDk2MTlMOS42MjEyOSAxLjg0MzE4QzkuNDI2MDMgMS42NDc5MiA5LjQyNjAzIDEuMzMxMzMgOS42MjEyOSAxLjEzNjA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOS42MjEyOSAxLjEzNjA3QzkuODE2NTYgMC45NDA4MDggMTAuMTMzMSAwLjk0MDgwOSAxMC4zMjg0IDEuMTM2MDdMMTEuMzg5MSAyLjE5NjczTDEyLjgwMzMgMy42MTA5NEwxMy44NjM5IDQuNjcxNkMxNC4wNTkyIDQuODY2ODcgMTQuMDU5MiA1LjE4MzQ1IDEzLjg2MzkgNS4zNzg3MUMxMy42Njg3IDUuNTczOTcgMTMuMzUyMSA1LjU3Mzk3IDEzLjE1NjggNS4zNzg3MUwxMi41MDM4IDQuNzI1N0w4Ljg2NzI3IDkuNTc0NDNMOS45NzQ4NSAxMC42ODJDMTAuMTcwMSAxMC44NzczIDEwLjE3MDEgMTEuMTkzOSA5Ljk3NDg1IDExLjM4OTFDOS43Nzk1OSAxMS41ODQ0IDkuNDYzIDExLjU4NDQgOS4yNjc3NCAxMS4zODkxTDcuODUzNTMgOS45NzQ5MUw2Ljc5Mjg3IDguOTE0MjVMMy41MjI1IDEyLjE4NDZDMy4zMjcyNCAxMi4zNzk5IDMuMDEwNjUgMTIuMzc5OSAyLjgxNTM5IDEyLjE4NDZDMi42MjAxMyAxMS45ODk0IDIuNjIwMTMgMTEuNjcyOCAyLjgxNTM5IDExLjQ3NzVMNi4wODU3NiA4LjIwNzE0TDUuMDI1MSA3LjE0NjQ4TDMuNjEwODkgNS43MzIyNkMzLjQxNTYzIDUuNTM3IDMuNDE1NjIgNS4yMjA0MiAzLjYxMDg5IDUuMDI1MTZDMy44MDYxNSA0LjgyOTkgNC4xMjI3MyA0LjgyOTkgNC4zMTc5OSA1LjAyNTE2TDUuNDI1NTcgNi4xMzI3NEwxMC4yNzQzIDIuNDk2MTlMOS42MjEyOSAxLjg0MzE4QzkuNDI2MDMgMS42NDc5MiA5LjQyNjAzIDEuMzMxMzMgOS42MjEyOSAxLjEzNjA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTkgMy4wOTk5OEM3LjI3OTA3IDMuMDk5OTggNy4wOTk5OSAzLjI3OTA2IDcuMDk5OTkgMy40OTk5OEM3LjA5OTk5IDMuNzIwODkgNy4yNzkwNyAzLjg5OTk4IDcuNDk5OTkgMy44OTk5OEgxNC41QzE0LjcyMDkgMy44OTk5OCAxNC45IDMuNzIwODkgMTQuOSAzLjQ5OTk4QzE0LjkgMy4yNzkwNiAxNC43MjA5IDMuMDk5OTggMTQuNSAzLjA5OTk4SDcuNDk5OTlaTTcuNDk5OTggNS4xQzcuMjc5MDcgNS4xIDcuMDk5OTggNS4yNzkwOCA3LjA5OTk4IDUuNUM3LjA5OTk4IDUuNzIwOTEgNy4yNzkwNyA1LjkgNy40OTk5OCA1LjlIMTQuNUMxNC43MjA5IDUuOSAxNC45IDUuNzIwOTEgMTQuOSA1LjVDMTQuOSA1LjI3OTA4IDE0LjcyMDkgNS4xIDE0LjUgNS4xSDcuNDk5OThaTTcuMSA3LjVDNy4xIDcuMjc5MDggNy4yNzkwOSA3LjEgNy41IDcuMUgxNC41QzE0LjcyMDkgNy4xIDE0LjkgNy4yNzkwOCAxNC45IDcuNUMxNC45IDcuNzIwOTEgMTQuNzIwOSA3LjkgMTQuNSA3LjlINy41QzcuMjc5MDkgNy45IDcuMSA3LjcyMDkxIDcuMSA3LjVaTTcuNDk5OTggOS4xQzcuMjc5MDcgOS4xIDcuMDk5OTggOS4yNzkwOCA3LjA5OTk4IDkuNUM3LjA5OTk4IDkuNzIwOTEgNy4yNzkwNyA5LjkgNy40OTk5OCA5LjlIMTQuNUMxNC43MjA5IDkuOSAxNC45IDkuNzIwOTEgMTQuOSA5LjVDMTQuOSA5LjI3OTA4IDE0LjcyMDkgOS4xIDE0LjUgOS4xSDcuNDk5OThaTTcuMDk5OTggMTEuNUM3LjA5OTk4IDExLjI3OTEgNy4yNzkwNyAxMS4xIDcuNDk5OTggMTEuMUgxNC41QzE0LjcyMDkgMTEuMSAxNC45IDExLjI3OTEgMTQuOSAxMS41QzE0LjkgMTEuNzIwOSAxNC43MjA5IDExLjkgMTQuNSAxMS45SDcuNDk5OThDNy4yNzkwNyAxMS45IDcuMDk5OTggMTEuNzIwOSA3LjA5OTk4IDExLjVaTTIuNSA5LjI1MDAzTDUgNi4wMDAwM0gwTDIuNSA5LjI1MDAzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNSAxQzQuMjIzODYgMSA0IDEuMjIzODYgNCAxLjVDNCAxLjc3NjE0IDQuMjIzODYgMiA0LjUgMkgxMlYxM0g0LjVDNC4yMjM4NiAxMyA0IDEzLjIyMzkgNCAxMy41QzQgMTMuNzc2MSA0LjIyMzg2IDE0IDQuNSAxNEgxMkMxMi41NTIzIDE0IDEzIDEzLjU1MjMgMTMgMTNWMkMxMyAxLjQ0NzcyIDEyLjU1MjMgMSAxMiAxSDQuNVpNNi42MDM1NSA0Ljg5NjQ1QzYuNDA4MjkgNC43MDExOCA2LjA5MTcxIDQuNzAxMTggNS44OTY0NSA0Ljg5NjQ1QzUuNzAxMTggNS4wOTE3MSA1LjcwMTE4IDUuNDA4MjkgNS44OTY0NSA1LjYwMzU1TDcuMjkyODkgN0gwLjVDMC4yMjM4NTggNyAwIDcuMjIzODYgMCA3LjVDMCA3Ljc3NjE0IDAuMjIzODU4IDggMC41IDhINy4yOTI4OUw1Ljg5NjQ1IDkuMzk2NDVDNS43MDExOCA5LjU5MTcxIDUuNzAxMTggOS45MDgyOSA1Ljg5NjQ1IDEwLjEwMzZDNi4wOTE3MSAxMC4yOTg4IDYuNDA4MjkgMTAuMjk4OCA2LjYwMzU1IDEwLjEwMzZMOC44NTM1NSA3Ljg1MzU1QzkuMDQ4ODIgNy42NTgyOSA5LjA0ODgyIDcuMzQxNzEgOC44NTM1NSA3LjE0NjQ1TDYuNjAzNTUgNC44OTY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHZ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDIuNUMyIDIuMjIzODYgMi4yMjM4NiAyIDIuNSAySDUuNUM1Ljc3NjE0IDIgNiAyLjIyMzg2IDYgMi41QzYgMi43NzYxNCA1Ljc3NjE0IDMgNS41IDNIM1Y1LjVDMyA1Ljc3NjE0IDIuNzc2MTQgNiAyLjUgNkMyLjIyMzg2IDYgMiA1Ljc3NjE0IDIgNS41VjIuNVpNOSAyLjVDOSAyLjIyMzg2IDkuMjIzODYgMiA5LjUgMkgxMi41QzEyLjc3NjEgMiAxMyAyLjIyMzg2IDEzIDIuNVY1LjVDMTMgNS43NzYxNCAxMi43NzYxIDYgMTIuNSA2QzEyLjIyMzkgNiAxMiA1Ljc3NjE0IDEyIDUuNVYzSDkuNUM5LjIyMzg2IDMgOSAyLjc3NjE0IDkgMi41Wk0yLjUgOUMyLjc3NjE0IDkgMyA5LjIyMzg2IDMgOS41VjEySDUuNUM1Ljc3NjE0IDEyIDYgMTIuMjIzOSA2IDEyLjVDNiAxMi43NzYxIDUuNzc2MTQgMTMgNS41IDEzSDIuNUMyLjIyMzg2IDEzIDIgMTIuNzc2MSAyIDEyLjVWOS41QzIgOS4yMjM4NiAyLjIyMzg2IDkgMi41IDlaTTEyLjUgOUMxMi43NzYxIDkgMTMgOS4yMjM4NiAxMyA5LjVWMTIuNUMxMyAxMi43NzYxIDEyLjc3NjEgMTMgMTIuNSAxM0g5LjVDOS4yMjM4NiAxMyA5IDEyLjc3NjEgOSAxMi41QzkgMTIuMjIzOSA5LjIyMzg2IDEyIDkuNSAxMkgxMlY5LjVDMTIgOS4yMjM4NiAxMi4yMjM5IDkgMTIuNSA5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZ3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgMkMwLjQ0NzcxNSAyIDAgMi40NDc3MiAwIDNWMTJDMCAxMi41NTIzIDAuNDQ3NzE1IDEzIDEgMTNIMTRDMTQuNTUyMyAxMyAxNSAxMi41NTIzIDE1IDEyVjNDMTUgMi40NDc3MiAxNC41NTIzIDIgMTQgMkgxWk0xIDNMMTQgM1YzLjkyNDk0QzEzLjkxNzQgMy45MjQ4NiAxMy44MzM4IDMuOTQ3NTEgMTMuNzU4OSAzLjk5NTA1TDcuNSA3Ljk2NzAzTDEuMjQxMTIgMy45OTUwNUMxLjE2NjIxIDMuOTQ3NTEgMS4wODI2IDMuOTI0ODYgMSAzLjkyNDk0VjNaTTEgNC45MDc5N1YxMkgxNFY0LjkwNzk3TDcuNzQxMTIgOC44Nzk5NUM3LjU5Mzk0IDguOTczMzUgNy40MDYwNiA4Ljk3MzM1IDcuMjU4ODggOC44Nzk5NUwxIDQuOTA3OTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxDdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy45NDcyMSAwLjE2NDU5NEM3LjY2NTY5IDAuMDIzODI5OSA3LjMzNDMxIDAuMDIzODMwMiA3LjA1Mjc5IDAuMTY0NTk0TDAuNTUyNzg2IDMuNDE0NTlDMC4yMTQwMDIgMy41ODM5OSAwIDMuOTMwMjUgMCA0LjMwOTAyVjEyQzAgMTIuNTUyMyAwLjQ0NzcxNSAxMyAxIDEzSDE0QzE0LjU1MjMgMTMgMTUgMTIuNTUyMyAxNSAxMlY0LjMwOTAyQzE1IDMuOTMwMjUgMTQuNzg2IDMuNTgzOTkgMTQuNDQ3MiAzLjQxNDU5TDcuOTQ3MjEgMC4xNjQ1OTRaTTEzLjU2ODkgNC4wOTM0OUw3LjUgMS4wNTkwMkwxLjQzMTA1IDQuMDkzNDlMNy41IDcuMjkxMzZMMTMuNTY4OSA0LjA5MzQ5Wk0xIDQuODgzNjZWMTJIMTRWNC44ODM2Nkw3LjcwOTc3IDguMTk4MTNDNy41Nzg0OCA4LjI2NzMxIDcuNDIxNTIgOC4yNjczMSA3LjI5MDIzIDguMTk4MTNMMSA0Ljg4MzY2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguNDQ0OSAwLjYwODc2NUM4LjAxODMgLTAuMTA3MDE1IDYuOTgxNyAtMC4xMDcwMTUgNi41NTUwOSAwLjYwODc2NkwwLjE2MTE3OCAxMS4zMzY4Qy0wLjI3NTgyNCAxMi4wNyAwLjI1MjUwMyAxMyAxLjEwNjA4IDEzSDEzLjg5MzlDMTQuNzQ3NSAxMyAxNS4yNzU4IDEyLjA3IDE0LjgzODggMTEuMzM2OEw4LjQ0NDkgMC42MDg3NjVaTTcuNDE0MSAxLjEyMDczQzcuNDUyODggMS4wNTU2NiA3LjU0NzEyIDEuMDU1NjYgNy41ODU5IDEuMTIwNzNMMTMuOTc5OCAxMS44NDg4QzE0LjAxOTYgMTEuOTE1NCAxMy45NzE1IDEyIDEzLjg5MzkgMTJIMS4xMDYwOEMxLjAyODQ5IDEyIDAuOTgwNDU0IDExLjkxNTQgMS4wMjAxOCAxMS44NDg4TDcuNDE0MSAxLjEyMDczWk02LjgyNjkgNC40ODYxMUM2LjgxMjIxIDQuMTA0MjMgNy4xMTc4MyAzLjc4NjYzIDcuNSAzLjc4NjYzQzcuODgyMTcgMy43ODY2MyA4LjE4Nzc4IDQuMTA0MjMgOC4xNzMxIDQuNDg2MTJMOC4wMTkyMSA4LjQ4NzAxQzguMDA4NDggOC43NjYgNy43NzkyIDguOTg2NjQgNy41IDguOTg2NjRDNy4yMjA4IDguOTg2NjQgNi45OTE1MSA4Ljc2NiA2Ljk4MDc4IDguNDg3MDFMNi44MjY5IDQuNDg2MTFaTTguMjQ5ODkgMTAuNDc2QzguMjQ5ODkgMTAuODkwMiA3LjkxNDEgMTEuMjI2IDcuNDk5ODkgMTEuMjI2QzcuMDg1NjcgMTEuMjI2IDYuNzQ5ODkgMTAuODkwMiA2Ljc0OTg5IDEwLjQ3NkM2Ljc0OTg5IDEwLjA2MTggNy4wODU2NyA5LjcyNTk5IDcuNDk5ODkgOS43MjU5OUM3LjkxNDEgOS43MjU5OSA4LjI0OTg5IDEwLjA2MTggOC4yNDk4OSAxMC40NzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx5dD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyAxQzIuNDQ3NzEgMSAyIDEuNDQ3NzIgMiAyVjEzQzIgMTMuNTUyMyAyLjQ0NzcyIDE0IDMgMTRIMTAuNUMxMC43NzYxIDE0IDExIDEzLjc3NjEgMTEgMTMuNUMxMSAxMy4yMjM5IDEwLjc3NjEgMTMgMTAuNSAxM0gzVjJMMTAuNSAyQzEwLjc3NjEgMiAxMSAxLjc3NjE0IDExIDEuNUMxMSAxLjIyMzg2IDEwLjc3NjEgMSAxMC41IDFIM1pNMTIuNjAzNiA0Ljg5NjQ1QzEyLjQwODMgNC43MDExOCAxMi4wOTE3IDQuNzAxMTggMTEuODk2NCA0Ljg5NjQ1QzExLjcwMTIgNS4wOTE3MSAxMS43MDEyIDUuNDA4MjkgMTEuODk2NCA1LjYwMzU1TDEzLjI5MjkgN0g2LjVDNi4yMjM4NiA3IDYgNy4yMjM4NiA2IDcuNUM2IDcuNzc2MTQgNi4yMjM4NiA4IDYuNSA4SDEzLjI5MjlMMTEuODk2NCA5LjM5NjQ1QzExLjcwMTIgOS41OTE3MSAxMS43MDEyIDkuOTA4MjkgMTEuODk2NCAxMC4xMDM2QzEyLjA5MTcgMTAuMjk4OCAxMi40MDgzIDEwLjI5ODggMTIuNjAzNiAxMC4xMDM2TDE0Ljg1MzYgNy44NTM1NUMxNS4wNDg4IDcuNjU4MjkgMTUuMDQ4OCA3LjM0MTcxIDE0Ljg1MzYgNy4xNDY0NUwxMi42MDM2IDQuODk2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx3dD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS41IDJDNS43NzYxNCAyIDYgMi4yMjM4NiA2IDIuNVY1LjVDNiA1Ljc3NjE0IDUuNzc2MTQgNiA1LjUgNkgyLjVDMi4yMjM4NiA2IDIgNS43NzYxNCAyIDUuNUMyIDUuMjIzODYgMi4yMjM4NiA1IDIuNSA1SDVWMi41QzUgMi4yMjM4NiA1LjIyMzg2IDIgNS41IDJaTTkuNSAyQzkuNzc2MTQgMiAxMCAyLjIyMzg2IDEwIDIuNVY1SDEyLjVDMTIuNzc2MSA1IDEzIDUuMjIzODYgMTMgNS41QzEzIDUuNzc2MTQgMTIuNzc2MSA2IDEyLjUgNkg5LjVDOS4yMjM4NiA2IDkgNS43NzYxNCA5IDUuNVYyLjVDOSAyLjIyMzg2IDkuMjIzODYgMiA5LjUgMlpNMiA5LjVDMiA5LjIyMzg2IDIuMjIzODYgOSAyLjUgOUg1LjVDNS43NzYxNCA5IDYgOS4yMjM4NiA2IDkuNVYxMi41QzYgMTIuNzc2MSA1Ljc3NjE0IDEzIDUuNSAxM0M1LjIyMzg2IDEzIDUgMTIuNzc2MSA1IDEyLjVWMTBIMi41QzIuMjIzODYgMTAgMiA5Ljc3NjE0IDIgOS41Wk05IDkuNUM5IDkuMjIzODYgOS4yMjM4NiA5IDkuNSA5SDEyLjVDMTIuNzc2MSA5IDEzIDkuMjIzODYgMTMgOS41QzEzIDkuNzc2MTQgMTIuNzc2MSAxMCAxMi41IDEwSDEwVjEyLjVDMTAgMTIuNzc2MSA5Ljc3NjE0IDEzIDkuNSAxM0M5LjIyMzg2IDEzIDkgMTIuNzc2MSA5IDEyLjVWOS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgMkMyLjQ0NzcyIDIgMiAyLjQ0NzcyIDIgM1YxMkMyIDEyLjU1MjMgMi40NDc3MiAxMyAzIDEzSDEyQzEyLjU1MjMgMTMgMTMgMTIuNTUyMyAxMyAxMlY4LjVDMTMgOC4yMjM4NiAxMi43NzYxIDggMTIuNSA4QzEyLjIyMzkgOCAxMiA4LjIyMzg2IDEyIDguNVYxMkgzVjNMNi41IDNDNi43NzYxNCAzIDcgMi43NzYxNCA3IDIuNUM3IDIuMjIzODYgNi43NzYxNCAyIDYuNSAySDNaTTEyLjg1MzYgMi4xNDY0NUMxMi45MDE1IDIuMTk0MzkgMTIuOTM3NyAyLjI0OTY0IDEyLjk2MjEgMi4zMDg2MUMxMi45ODYxIDIuMzY2NjkgMTIuOTk5NiAyLjQzMDMgMTMgMi40OTdMMTMgMi41VjIuNTAwNDlWNS41QzEzIDUuNzc2MTQgMTIuNzc2MSA2IDEyLjUgNkMxMi4yMjM5IDYgMTIgNS43NzYxNCAxMiA1LjVWMy43MDcxMUw2Ljg1MzU1IDguODUzNTVDNi42NTgyOSA5LjA0ODgyIDYuMzQxNzEgOS4wNDg4MiA2LjE0NjQ1IDguODUzNTVDNS45NTExOCA4LjY1ODI5IDUuOTUxMTggOC4zNDE3MSA2LjE0NjQ1IDguMTQ2NDVMMTEuMjkyOSAzSDkuNUM5LjIyMzg2IDMgOSAyLjc3NjE0IDkgMi41QzkgMi4yMjM4NiA5LjIyMzg2IDIgOS41IDJIMTIuNDk5OUgxMi41QzEyLjU2NzggMiAxMi42MzI0IDIuMDEzNDkgMTIuNjkxNCAyLjAzNzk0QzEyLjc1MDQgMi4wNjIzNCAxMi44MDU2IDIuMDk4NTEgMTIuODUzNiAyLjE0NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0Ljc2NDkgNi4wNzU5NUMxNC45OTkxIDYuMjIyMzEgMTUuMDcwMyA2LjUzMDc4IDE0LjkyMzkgNi43NjQ5NUMxNC40ODQ5IDcuNDY3NDIgMTMuOTYzMiA4LjEwNjQ0IDEzLjM3MDIgOC42NjMwNEwxNC41NzEyIDkuODY0MDVDMTQuNzY2NCAxMC4wNTkzIDE0Ljc2NjQgMTAuMzc1OSAxNC41NzEyIDEwLjU3MTJDMTQuMzc1OSAxMC43NjY0IDE0LjA1OTMgMTAuNzY2NCAxMy44NjQxIDEwLjU3MTJMMTIuNjAxMSA5LjMwODE2QzExLjgwNDkgOS45MDI4MiAxMC45MDg5IDEwLjM2MjEgOS45MzM3NCAxMC42NTFMMTAuMzgzIDEyLjMyNzZDMTAuNDU0NCAxMi41OTQ0IDEwLjI5NjEgMTIuODY4NSAxMC4wMjk0IDEyLjk0QzkuNzYyNjYgMTMuMDExNSA5LjQ4ODUgMTIuODUzMiA5LjQxNzAzIDEyLjU4NjRMOC45NTkxNiAxMC44Nzc1QzguNDg3NDIgMTAuOTU4IDguMDAwMzUgMTAuOTk5OSA3LjUgMTAuOTk5OUM2Ljk5OTY0IDEwLjk5OTkgNi41MTI1NyAxMC45NTggNi4wNDA4MiAxMC44Nzc1TDUuNTgyOTkgMTIuNTg2NEM1LjUxMTUzIDEyLjg1MzIgNS4yMzczNyAxMy4wMTE1IDQuOTcwNjMgMTIuOTRDNC43MDM5IDEyLjg2ODUgNC41NDU2IDEyLjU5NDQgNC42MTcwNiAxMi4zMjc3TDUuMDY2MjQgMTAuNjUxQzQuMDkxMTEgMTAuMzYyMSAzLjE5NTAzIDkuOTAyODEgMi4zOTg5IDkuMzA4MTRMMS4xMzU5IDEwLjU3MTFDMC45NDA2MzggMTAuNzY2NCAwLjYyNDA1OCAxMC43NjY0IDAuNDI4Nzk3IDEwLjU3MTFDMC4yMzM1MzcgMTAuMzc1OSAwLjIzMzUzNyAxMC4wNTkzIDAuNDI4Nzk3IDkuODY0MDRMMS42Mjk4MiA4LjY2MzAyQzEuMDM2ODIgOC4xMDY0MyAwLjUxNTExMyA3LjQ2NzQyIDAuMDc2MDY3NyA2Ljc2NDk1Qy0wLjA3MDI4NjcgNi41MzA3OCAwLjAwMDg5ODU0NCA2LjIyMjMxIDAuMjM1MDY0IDYuMDc1OTVDMC40NjkyMyA1LjkyOTYgMC43Nzc3MDMgNi4wMDA3OCAwLjkyNDA1NyA2LjIzNDk1QzEuNDAzNTQgNy4wMDIxMiAxLjk4OSA3LjY4MDU2IDIuNjYyMzMgOC4yNDI3QzIuNjczMTUgOC4yNTA5NiAyLjY4MzcgOC4yNTk3MSAyLjY5Mzk3IDguMjY4OTdDNC4wMDg5NyA5LjM1NTI3IDUuNjU1MzYgOS45OTk5IDcuNSA5Ljk5OTlDMTAuMzA3OCA5Ljk5OTkgMTIuNjU2MyA4LjUwNjI5IDE0LjA3NTkgNi4yMzQ5NUMxNC4yMjIzIDYuMDAwNzggMTQuNTMwOCA1LjkyOTYgMTQuNzY0OSA2LjA3NTk1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sX3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjM1MzYgMi4zNTM1NUMxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAxLjg0MTcxIDEzLjM1MzYgMS42NDY0NUMxMy4xNTgzIDEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEyLjY0NjQgMS42NDY0NUwxMC42ODI4IDMuNjEwMTJDOS43MDY1MiAzLjIxNjcxIDguNjM3NTkgMyA3LjUgM0M0LjMwNzg2IDMgMS42NTYzOSA0LjcwNjM4IDAuMDc2MDAwMiA3LjIzNTAxQy0wLjAyNTMzMzggNy4zOTcxNSAtMC4wMjUzMzM0IDcuNjAyODggMC4wNzYwMDE0IDcuNzY1MDFDMC45MDI5NDUgOS4wODgxMiAyLjAyMzE0IDEwLjE4NjEgMy4zNjA2MSAxMC45MzIzTDEuNjQ2NDUgMTIuNjQ2NEMxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMy4xNTgzIDEuNjQ2NDUgMTMuMzUzNkMxLjg0MTcxIDEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDIuMzUzNTUgMTMuMzUzNkw0LjMxNzIzIDExLjM4OTlDNS4yOTM0OCAxMS43ODMzIDYuMzYyNDEgMTIgNy41IDEyQzEwLjY5MjEgMTIgMTMuMzQzNiAxMC4yOTM2IDE0LjkyNCA3Ljc2NTAxQzE1LjAyNTMgNy42MDI4OCAxNS4wMjUzIDcuMzk3MTUgMTQuOTI0IDcuMjM1MDFDMTQuMDk3MSA1LjkxMTkgMTIuOTc2OSA0LjgxMzkxIDExLjYzOTQgNC4wNjc3MUwxMy4zNTM2IDIuMzUzNTVaTTkuOTA0MjggNC4zODg2MUM5LjE1MzMyIDQuMTM2MSA4LjM0NzU5IDQgNy41IDRDNC44MDI4NSA0IDIuNTI5NTIgNS4zNzgxNiAxLjA5NjIyIDcuNTAwMDFDMS44NzI4NCA4LjY0OTcgMi44OTYwOSA5LjU4MTA2IDQuMDk5NzQgMTAuMTkzMUw5LjkwNDI4IDQuMzg4NjFaTTUuMDk1NzIgMTAuNjExNEwxMC45MDAzIDQuODA2ODVDMTIuMTAzOSA1LjQxODk0IDEzLjEyNzIgNi4zNTAzMSAxMy45MDM4IDcuNTAwMDFDMTIuNDcwNSA5LjYyMTgzIDEwLjE5NzEgMTEgNy41IDExQzYuNjUyNDEgMTEgNS44NDY2OCAxMC44NjM5IDUuMDk1NzIgMTAuNjExNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEx0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMTFDNC44MDI4NSAxMSAyLjUyOTUyIDkuNjIxODQgMS4wOTYyMiA3LjUwMDAxQzIuNTI5NTIgNS4zNzgxNiA0LjgwMjg1IDQgNy41IDRDMTAuMTk3MSA0IDEyLjQ3MDUgNS4zNzgxNiAxMy45MDM4IDcuNTAwMDFDMTIuNDcwNSA5LjYyMTgzIDEwLjE5NzEgMTEgNy41IDExWk03LjUgM0M0LjMwNzg2IDMgMS42NTYzOSA0LjcwNjM4IDAuMDc2MDAwMiA3LjIzNTAxQy0wLjAyNTMzMzggNy4zOTcxNSAtMC4wMjUzMzM0IDcuNjAyODggMC4wNzYwMDE0IDcuNzY1MDFDMS42NTYzOSAxMC4yOTM2IDQuMzA3ODYgMTIgNy41IDEyQzEwLjY5MjEgMTIgMTMuMzQzNiAxMC4yOTM2IDE0LjkyNCA3Ljc2NTAxQzE1LjAyNTMgNy42MDI4OCAxNS4wMjUzIDcuMzk3MTUgMTQuOTI0IDcuMjM1MDFDMTMuMzQzNiA0LjcwNjM4IDEwLjY5MjEgMyA3LjUgM1pNNy41IDkuNUM4LjYwNDU3IDkuNSA5LjUgOC42MDQ1NyA5LjUgNy41QzkuNSA2LjM5NTQzIDguNjA0NTcgNS41IDcuNSA1LjVDNi4zOTU0MyA1LjUgNS41IDYuMzk1NDMgNS41IDcuNUM1LjUgOC42MDQ1NyA2LjM5NTQzIDkuNSA3LjUgOS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sT3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzY4OTJDMy44NDIyMiAwLjg3Njg5MiAwLjg3NzA3NSAzLjg0MjA0IDAuODc3MDc1IDcuNDk5NzJDMC44NzcwNzUgMTEuMTU3NCAzLjg0MjIyIDE0LjEyMjYgNy40OTk5MSAxNC4xMjI2QzExLjE1NzYgMTQuMTIyNiAxNC4xMjI3IDExLjE1NzQgMTQuMTIyNyA3LjQ5OTcyQzE0LjEyMjcgMy44NDIwNCAxMS4xNTc2IDAuODc2ODkyIDcuNDk5OTEgMC44NzY4OTJaTTEuODI3MDggNy40OTk3MkMxLjgyNzA4IDQuMzY2NzEgNC4zNjY4OSAxLjgyNjg5IDcuNDk5OTEgMS44MjY4OUMxMC42MzI5IDEuODI2ODkgMTMuMTcyNyA0LjM2NjcxIDEzLjE3MjcgNy40OTk3MkMxMy4xNzI3IDEwLjYzMjcgMTAuNjMyOSAxMy4xNzI2IDcuNDk5OTEgMTMuMTcyNkM0LjM2Njg5IDEzLjE3MjYgMS44MjcwOCAxMC42MzI3IDEuODI3MDggNy40OTk3MlpNNS4wMzc0NyA5LjIxMzk1QzQuODc5NDkgOC45ODc0NiA0LjU2NzgyIDguOTMxOTMgNC4zNDEzMyA5LjA4OTkxQzQuMTE0ODQgOS4yNDc4OSA0LjA1OTMxIDkuNTU5NTYgNC4yMTcyOSA5Ljc4NjA1QzQuOTM5MjYgMTAuODIxMSA2LjE0MDMzIDExLjUgNy41MDAwNCAxMS41QzguODU5NzQgMTEuNSAxMC4wNjA4IDEwLjgyMTEgMTAuNzgyOCA5Ljc4NjA1QzEwLjk0MDggOS41NTk1NiAxMC44ODUyIDkuMjQ3ODkgMTAuNjU4NyA5LjA4OTkxQzEwLjQzMjMgOC45MzE5MyAxMC4xMjA2IDguOTg3NDYgOS45NjI2IDkuMjEzOTVDOS40MTk2MyA5Ljk5MjM4IDguNTE5MDcgMTAuNSA3LjUwMDA0IDEwLjVDNi40ODEgMTAuNSA1LjU4MDQ0IDkuOTkyMzggNS4wMzc0NyA5LjIxMzk1Wk01LjM3NTAzIDYuODQ5OThDNS44NTgyOCA2Ljg0OTk4IDYuMjUwMDMgNi40NTgxNSA2LjI1MDAzIDUuOTc0OThDNi4yNTAwMyA1LjQ5MTggNS44NTgyOCA1LjA5OTk4IDUuMzc1MDMgNS4wOTk5OEM0Ljg5MTc5IDUuMDk5OTggNC41MDAwMyA1LjQ5MTggNC41MDAwMyA1Ljk3NDk4QzQuNTAwMDMgNi40NTgxNSA0Ljg5MTc5IDYuODQ5OTggNS4zNzUwMyA2Ljg0OTk4Wk0xMC41IDUuOTc0OThDMTAuNSA2LjQ1ODE1IDEwLjEwODMgNi44NDk5OCA5LjYyNTAzIDYuODQ5OThDOS4xNDE3OSA2Ljg0OTk4IDguNzUwMDMgNi40NTgxNSA4Ljc1MDAzIDUuOTc0OThDOC43NTAwMyA1LjQ5MTggOS4xNDE3OSA1LjA5OTk4IDkuNjI1MDMgNS4wOTk5OEMxMC4xMDgzIDUuMDk5OTggMTAuNSA1LjQ5MTggMTAuNSA1Ljk3NDk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMDAwMDUgMi4wNDk5OUg1LjUyNTA1QzQuNzEwNDMgMi4wNDk5OSA0LjA1MDA1IDIuNzEwMzcgNC4wNTAwNSAzLjUyNDk5QzQuMDUwMDUgNC4zMzk2MSA0LjcxMDQzIDQuOTk5OTkgNS41MjUwNSA0Ljk5OTk5SDcuMDAwMDVWMi4wNDk5OVpNNy4wMDAwNSAxLjA0OTk5SDguMDAwMDVIOS40NzUwNUMxMC44NDIgMS4wNDk5OSAxMS45NSAyLjE1ODA4IDExLjk1IDMuNTI0OTlDMTEuOTUgNC4zMzE2MyAxMS41NjQyIDUuMDQ4MTUgMTAuOTY2OSA1LjQ5OTk5QzExLjU2NDIgNS45NTE4NCAxMS45NSA2LjY2ODM2IDExLjk1IDcuNDc1QzExLjk1IDguODQxOSAxMC44NDIgOS45NSA5LjQ3NTA1IDkuOTVDOC45MjIzNiA5Ljk1IDguNDExOTggOS43Njg4NCA4LjAwMDA1IDkuNDYyNjZWOS45NUw4LjAwMDA1IDExLjQyNUM4LjAwMDA1IDEyLjc5MTkgNi44OTE5NSAxMy45IDUuNTI1MDUgMTMuOUM0LjE1ODE0IDEzLjkgMy4wNTAwNSAxMi43OTE5IDMuMDUwMDUgMTEuNDI1QzMuMDUwMDUgMTAuNjE4MyAzLjQzNTkzIDkuOTAxODQgNC4wMzMxNyA5LjQ0OTk5QzMuNDM1OTMgOC45OTgxNCAzLjA1MDA1IDguMjgxNjMgMy4wNTAwNSA3LjQ3NUMzLjA1MDA1IDYuNjY4MzYgMy40MzU5NCA1Ljk1MTg0IDQuMDMzMTkgNS41QzMuNDM1OTQgNS4wNDgxNSAzLjA1MDA1IDQuMzMxNjMgMy4wNTAwNSAzLjUyNDk5QzMuMDUwMDUgMi4xNTgwOCA0LjE1ODE0IDEuMDQ5OTkgNS41MjUwNSAxLjA0OTk5SDcuMDAwMDVaTTguMDAwMDUgMi4wNDk5OVY0Ljk5OTk5SDkuNDc1MDVDMTAuMjg5NyA0Ljk5OTk5IDEwLjk1IDQuMzM5NjEgMTAuOTUgMy41MjQ5OUMxMC45NSAyLjcxMDM3IDEwLjI4OTcgMi4wNDk5OSA5LjQ3NTA1IDIuMDQ5OTlIOC4wMDAwNVpNNS41MjUwNSA4Ljk0OTk4SDcuMDAwMDVMNy4wMDAwNSA3LjQ3ODhMNy4wMDAwNSA3LjQ3NUw3LjAwMDA1IDcuNDcxMlY2SDUuNTI1MDVDNC43MTA0MyA2IDQuMDUwMDUgNi42NjAzOCA0LjA1MDA1IDcuNDc1QzQuMDUwMDUgOC4yODc2NyA0LjcwNzI3IDguOTQ2ODQgNS41MTkyIDguOTQ5OTlMNS41MjUwNSA4Ljk0OTk4Wk00LjA1MDA1IDExLjQyNUM0LjA1MDA1IDEwLjYxMjMgNC43MDcyNyA5Ljk1MzE1IDUuNTE5MiA5Ljk0OTk5TDUuNTI1MDUgOS45NUg3LjAwMDA1TDcuMDAwMDUgMTEuNDI1QzcuMDAwMDUgMTIuMjM5NiA2LjMzOTY3IDEyLjkgNS41MjUwNSAxMi45QzQuNzEwNDMgMTIuOSA0LjA1MDA1IDEyLjIzOTYgNC4wNTAwNSAxMS40MjVaTTguMDAwMDUgNy40NzIwNkM4LjAwMTY0IDYuNjU4NzkgOC42NjE0MSA2IDkuNDc1MDUgNkMxMC4yODk3IDYgMTAuOTUgNi42NjAzOCAxMC45NSA3LjQ3NUMxMC45NSA4LjI4OTYyIDEwLjI4OTcgOC45NSA5LjQ3NTA1IDguOTVDOC42NjE0MSA4Ljk1IDguMDAxNjQgOC4yOTEyMSA4LjAwMDA1IDcuNDc3OTRWNy40NzIwNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFN0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjUgMkMzLjIyMzg2IDIgMyAyLjIyMzg2IDMgMi41VjEyLjVDMyAxMi43NzYxIDMuMjIzODYgMTMgMy41IDEzSDExLjVDMTEuNzc2MSAxMyAxMiAxMi43NzYxIDEyIDEyLjVWNkg4LjVDOC4yMjM4NiA2IDggNS43NzYxNCA4IDUuNVYySDMuNVpNOSAyLjcwNzExTDExLjI5MjkgNUg5VjIuNzA3MTFaTTIgMi41QzIgMS42NzE1NyAyLjY3MTU3IDEgMy41IDFIOC41QzguNjMyNjEgMSA4Ljc1OTc5IDEuMDUyNjggOC44NTM1NSAxLjE0NjQ1TDEyLjg1MzYgNS4xNDY0NUMxMi45NDczIDUuMjQwMjEgMTMgNS4zNjczOSAxMyA1LjVWMTIuNUMxMyAxMy4zMjg0IDEyLjMyODQgMTQgMTEuNSAxNEgzLjVDMi42NzE1NyAxNCAyIDEzLjMyODQgMiAxMi41VjIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE10PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zIDIuNUMzIDIuMjIzODYgMy4yMjM4NiAyIDMuNSAySDkuMjkyODlMMTIgNC43MDcxMVYxMi41QzEyIDEyLjc3NjEgMTEuNzc2MSAxMyAxMS41IDEzSDMuNUMzLjIyMzg2IDEzIDMgMTIuNzc2MSAzIDEyLjVWMi41Wk0zLjUgMUMyLjY3MTU3IDEgMiAxLjY3MTU3IDIgMi41VjEyLjVDMiAxMy4zMjg0IDIuNjcxNTcgMTQgMy41IDE0SDExLjVDMTIuMzI4NCAxNCAxMyAxMy4zMjg0IDEzIDEyLjVWNC42MDM1NUMxMyA0LjQwNDY0IDEyLjkyMSA0LjIxMzg4IDEyLjc4MDMgNC4wNzMyMkw5Ljg1MzU1IDEuMTQ2NDVDOS43NTk3OSAxLjA1MjY4IDkuNjMyNjEgMSA5LjUgMUgzLjVaTTUuMjUgN0M0Ljk3Mzg2IDcgNC43NSA3LjIyMzg2IDQuNzUgNy41QzQuNzUgNy43NzYxNCA0Ljk3Mzg2IDggNS4yNSA4SDkuNzVDMTAuMDI2MSA4IDEwLjI1IDcuNzc2MTQgMTAuMjUgNy41QzEwLjI1IDcuMjIzODYgMTAuMDI2MSA3IDkuNzUgN0g1LjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sanQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNSAyQzMuMjIzODYgMiAzIDIuMjIzODYgMyAyLjVWMTIuNUMzIDEyLjc3NjEgMy4yMjM4NiAxMyAzLjUgMTNIMTEuNUMxMS43NzYxIDEzIDEyIDEyLjc3NjEgMTIgMTIuNVY0LjcwNzExTDkuMjkyODkgMkgzLjVaTTIgMi41QzIgMS42NzE1NyAyLjY3MTU3IDEgMy41IDFIOS41QzkuNjMyNjEgMSA5Ljc1OTc5IDEuMDUyNjggOS44NTM1NSAxLjE0NjQ1TDEyLjc4MDMgNC4wNzMyMkMxMi45MjEgNC4yMTM4OCAxMyA0LjQwNDY0IDEzIDQuNjAzNTVWMTIuNUMxMyAxMy4zMjg0IDEyLjMyODQgMTQgMTEuNSAxNEgzLjVDMi42NzE1NyAxNCAyIDEzLjMyODQgMiAxMi41VjIuNVpNNC43NSA3LjVDNC43NSA3LjIyMzg2IDQuOTczODYgNyA1LjI1IDdIN1Y1LjI1QzcgNC45NzM4NiA3LjIyMzg2IDQuNzUgNy41IDQuNzVDNy43NzYxNCA0Ljc1IDggNC45NzM4NiA4IDUuMjVWN0g5Ljc1QzEwLjAyNjEgNyAxMC4yNSA3LjIyMzg2IDEwLjI1IDcuNUMxMC4yNSA3Ljc3NjE0IDEwLjAyNjEgOCA5Ljc1IDhIOFY5Ljc1QzggMTAuMDI2MSA3Ljc3NjE0IDEwLjI1IDcuNSAxMC4yNUM3LjIyMzg2IDEwLjI1IDcgMTAuMDI2MSA3IDkuNzVWOEg1LjI1QzQuOTczODYgOCA0Ljc1IDcuNzc2MTQgNC43NSA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxrdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyAyLjVDMyAyLjIyMzg2IDMuMjIzODYgMiAzLjUgMkg5LjA4NTc5QzkuMjE4MzkgMiA5LjM0NTU3IDIuMDUyNjggOS40MzkzNCAyLjE0NjQ1TDExLjg1MzYgNC41NjA2NkMxMS45NDczIDQuNjU0NDMgMTIgNC43ODE2MSAxMiA0LjkxNDIxVjEyLjVDMTIgMTIuNzc2MSAxMS43NzYxIDEzIDExLjUgMTNIMy41QzMuMjIzODYgMTMgMyAxMi43NzYxIDMgMTIuNVYyLjVaTTMuNSAxQzIuNjcxNTcgMSAyIDEuNjcxNTcgMiAyLjVWMTIuNUMyIDEzLjMyODQgMi42NzE1NyAxNCAzLjUgMTRIMTEuNUMxMi4zMjg0IDE0IDEzIDEzLjMyODQgMTMgMTIuNVY0LjkxNDIxQzEzIDQuNTE2MzkgMTIuODQyIDQuMTM0ODYgMTIuNTYwNyAzLjg1MzU1TDEwLjE0NjQgMS40MzkzNEM5Ljg2NTE0IDEuMTU4MDQgOS40ODM2MSAxIDkuMDg1NzkgMUgzLjVaTTQuNSA0QzQuMjIzODYgNCA0IDQuMjIzODYgNCA0LjVDNCA0Ljc3NjE0IDQuMjIzODYgNSA0LjUgNUg3LjVDNy43NzYxNCA1IDggNC43NzYxNCA4IDQuNUM4IDQuMjIzODYgNy43NzYxNCA0IDcuNSA0SDQuNVpNNC41IDdDNC4yMjM4NiA3IDQgNy4yMjM4NiA0IDcuNUM0IDcuNzc2MTQgNC4yMjM4NiA4IDQuNSA4SDEwLjVDMTAuNzc2MSA4IDExIDcuNzc2MTQgMTEgNy41QzExIDcuMjIzODYgMTAuNzc2MSA3IDEwLjUgN0g0LjVaTTQuNSAxMEM0LjIyMzg2IDEwIDQgMTAuMjIzOSA0IDEwLjVDNCAxMC43NzYxIDQuMjIzODYgMTEgNC41IDExSDEwLjVDMTAuNzc2MSAxMSAxMSAxMC43NzYxIDExIDEwLjVDMTEgMTAuMjIzOSAxMC43NzYxIDEwIDEwLjUgMTBINC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuMTA1MDUgMTJDNC43MDgwNSAxMiA0LjQyMzYgMTEuOTEyIDQuMjUxNzEgMTEuNzM2QzQuMDgzOSAxMS41NTU5IDQgMTEuMjcxNSA0IDEwLjg4MjdWNC4xMTczM0M0IDMuNzIwMzMgNC4wODU5NSAzLjQzNTg4IDQuMjU3ODQgMy4yNjM5OEM0LjQzMzgzIDMuMDg3OTkgNC43MTYyMyAzIDUuMTA1MDUgM0M2LjQyNzQxIDMgOC4yNTU5MSAzIDkuMDI4NTIgM0MxMC4xMzczIDMgMTEuMDUzOSAzLjk4MTUzIDExLjA1MzkgNS4xODQ2QzExLjA1MzkgNi4wODUwMSAxMC42MDM3IDYuODE4NTUgOS43MDMyNyA3LjIzNjAyQzEwLjg2NTcgNy40NDg1MSAxMS41MTc2IDguNjI3ODcgMTEuNTE3NiA5LjQ4MTI4QzExLjUxNzYgMTAuNTEyNSAxMC45OTAyIDEyIDkuMjc3MzQgMTJDOC43Nzc0MiAxMiA2LjQyNjI2IDEyIDUuMTA1MDUgMTJaTTguMzc4OTEgOC4wMDM0MUg1LjhWMTAuNjMxSDguMzc4OTFDOC45IDEwLjYzMSA5LjYyOTYgMTAuMTIxMSA5LjYyOTYgOS4yOTg3N0M5LjYyOTYgOC40NzY0MyA4LjkgOC4wMDM0MSA4LjM3ODkxIDguMDAzNDFaTTUuOCA0LjM2OTAzVjYuNjk1NzdIOC4xNzk2OUM4LjUzOTA2IDYuNjk1NzcgOS4yNzczNCA2LjM1OTM5IDkuMjc3MzQgNS41MDAwMkM5LjI3NzM0IDQuNjQwNjQgOC40ODA0NyA0LjM2OTAzIDguMTc5NjkgNC4zNjkwM0g1LjhaXCIsZmlsbDpufSkpfSxQdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi41IDQuNUMyLjUgMy4wOTg4NiAzLjU5ODg2IDIgNSAySDEyLjQ5OUMxMi43NzUyIDIgMTMgMi4yMjM4NiAxMyAyLjVDMTMgMi43NzYxNCAxMi43NzYxIDMgMTIuNSAzSDguNjkyNDRMOC40MDUwOSAzLjg1NDU4QzguMTg4NjkgNC40OTc1MiA3Ljg5NDAxIDUuMzcxOTcgNy41ODA5MSA2LjI5Nzk0QzcuNTAyNTkgNi41Mjk1NiA3LjQyMzA4IDYuNzY0NTMgNy4zNDMzMiA3SDguNUM4Ljc3NjE0IDcgOSA3LjIyMzg2IDkgNy41QzkgNy43NzYxNCA4Ljc3NjE0IDggOC41IDhINy4wMDQwN0M2LjU2NzI0IDkuMjg1NDMgNi4xNjQzNSAxMC40NjEzIDUuOTU3OTkgMTEuMDM4NkM1LjYzNjI3IDExLjkzODYgNS4yMDcxMiAxMi40ODU3IDQuNjY3NDEgMTIuNzc3OEM0LjE2MzM1IDEzLjA1MDcgMy42NDE1NCAxMy4wNTAzIDMuMjgzNzggMTMuMDVMMy4yNSAxMy4wNUMyLjk0NjI0IDEzLjA1IDIuNyAxMi44MDM3IDIuNyAxMi41QzIuNyAxMi4xOTYyIDIuOTQ2MjQgMTEuOTUgMy4yNSAxMS45NUMzLjY0MTgyIDExLjk1IDMuOTAzNSAxMS45NDA1IDQuMTQzNzQgMTEuODEwNUM0LjM2NDQzIDExLjY5MSA0LjY1NTMyIDExLjQxNDggNC45MjIxNyAxMC42NjgzQzUuMTA2OTUgMTAuMTUxNCA1LjQ1Mzc1IDkuMTQxMzQgNS44NDIyIDhINC41QzQuMjIzODYgOCA0IDcuNzc2MTQgNCA3LjVDNCA3LjIyMzg2IDQuMjIzODYgNyA0LjUgN0g2LjE4MTg3QzYuMzAxMjcgNi42NDc4NSA2LjQyMTMyIDYuMjkzMjMgNi41Mzg4NyA1Ljk0NTU5QzYuODUxNzUgNS4wMjAyNSA3LjE0NjI3IDQuMTQ2MzEgNy4zNjI1NiAzLjUwMzY4TDcuNTMxOTIgM0g1QzQuMTUxMTQgMyAzLjUgMy42NTExNCAzLjUgNC41QzMuNSA0Ljc3NjE0IDMuMjc2MTQgNSAzIDVDMi43MjM4NiA1IDIuNSA0Ljc3NjE0IDIuNSA0LjVaXCIsZmlsbDpufSkpfSxBdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS42NzQ5NCAzLjUwMDE3QzUuNjc0OTQgMy4yNTE2NCA1Ljg3NjQxIDMuMDUwMTcgNi4xMjQ5NCAzLjA1MDE3SDEwLjYyNDlDMTAuODczNSAzLjA1MDE3IDExLjA3NDkgMy4yNTE2NCAxMS4wNzQ5IDMuNTAwMTdDMTEuMDc0OSAzLjc0ODcgMTAuODczNSAzLjk1MDE3IDEwLjYyNDkgMy45NTAxN0g5LjAwNTg3TDcuMjMwOSAxMS4wNUg4Ljg3NDkzQzkuMTIzNDUgMTEuMDUgOS4zMjQ5MyAxMS4yNTE1IDkuMzI0OTMgMTEuNUM5LjMyNDkzIDExLjc0ODYgOS4xMjM0NSAxMS45NSA4Ljg3NDkzIDExLjk1SDQuMzc0OTNDNC4xMjY0IDExLjk1IDMuOTI0OTMgMTEuNzQ4NiAzLjkyNDkzIDExLjVDMy45MjQ5MyAxMS4yNTE1IDQuMTI2NCAxMS4wNSA0LjM3NDkzIDExLjA1SDUuOTkzOTdMNy43Njg5NCAzLjk1MDE3SDYuMTI0OTRDNS44NzY0MSAzLjk1MDE3IDUuNjc0OTQgMy43NDg3IDUuNjc0OTQgMy41MDAxN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEl0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00Ljc5OTkzIDMuNTAwMTdDNC43OTk5MyAzLjI1MTY0IDUuMDAxNCAzLjA1MDE3IDUuMjQ5OTMgMy4wNTAxN0g5Ljc0OTkzQzkuOTk4NDUgMy4wNTAxNyAxMC4xOTk5IDMuMjUxNjQgMTAuMTk5OSAzLjUwMDE3QzEwLjE5OTkgMy43NDg3IDkuOTk4NDUgMy45NTAxNyA5Ljc0OTkzIDMuOTUwMTdIOC4wOTk5M1YxMS4wNUg5Ljc0OTk0QzkuOTk4NDcgMTEuMDUgMTAuMTk5OSAxMS4yNTE1IDEwLjE5OTkgMTEuNUMxMC4xOTk5IDExLjc0ODYgOS45OTg0NyAxMS45NSA5Ljc0OTk0IDExLjk1SDUuMjQ5OTRDNS4wMDE0MSAxMS45NSA0Ljc5OTk0IDExLjc0ODYgNC43OTk5NCAxMS41QzQuNzk5OTQgMTEuMjUxNSA1LjAwMTQxIDExLjA1IDUuMjQ5OTQgMTEuMDVINi44OTk5M1YzLjk1MDE3SDUuMjQ5OTNDNS4wMDE0IDMuOTUwMTcgNC43OTk5MyAzLjc0ODcgNC43OTk5MyAzLjUwMDE3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuNzgyMzMgMi4yMTcwN0MyLjcwNzMyIDIuMTQyMDYgMi42MDU1NyAyLjA5OTkxIDIuNDk5NDkgMi4wOTk5MUMyLjM5MzQgMi4wOTk5MSAyLjI5MTY2IDIuMTQyMDYgMi4yMTY2NCAyLjIxNzA3TDAuMjE2NjQ1IDQuMjE3MDdDMC4wNjA0MzUxIDQuMzczMjggMC4wNjA0MzUxIDQuNjI2NTUgMC4yMTY2NDUgNC43ODI3NkMwLjM3Mjg1NSA0LjkzODk3IDAuNjI2MTIxIDQuOTM4OTcgMC43ODIzMyA0Ljc4Mjc2TDIuMDk5NDkgMy40NjU2TDIuMDk5NDkgMTEuNTM0MkwwLjc4MjMzIDEwLjIxNzFDMC42MjYxMiAxMC4wNjA5IDAuMzcyODU0IDEwLjA2MDkgMC4yMTY2NDUgMTAuMjE3MUMwLjA2MDQzNDkgMTAuMzczMyAwLjA2MDQzNDkgMTAuNjI2NSAwLjIxNjY0NSAxMC43ODI4TDIuMjE2NjQgMTIuNzgyOEMyLjI5MTY2IDEyLjg1NzggMi4zOTM0IDEyLjg5OTkgMi40OTk0OSAxMi44OTk5QzIuNjA1NTcgMTIuODk5OSAyLjcwNzMxIDEyLjg1NzggMi43ODIzMyAxMi43ODI4TDQuNzgyMzMgMTAuNzgyOEM0LjkzODU0IDEwLjYyNjUgNC45Mzg1NCAxMC4zNzMzIDQuNzgyMzMgMTAuMjE3MUM0LjYyNjEyIDEwLjA2MDkgNC4zNzI4NSAxMC4wNjA5IDQuMjE2NjQgMTAuMjE3MUwyLjg5OTQ5IDExLjUzNDJMMi44OTk0OSAzLjQ2NTZMNC4yMTY2NCA0Ljc4Mjc2QzQuMzcyODUgNC45Mzg5NyA0LjYyNjEyIDQuOTM4OTcgNC43ODIzMyA0Ljc4Mjc2QzQuOTM4NTQgNC42MjY1NSA0LjkzODU0IDQuMzczMjggNC43ODIzMyA0LjIxNzA3TDIuNzgyMzMgMi4yMTcwN1pNMTAuNSAyLjc0OTk3QzEwLjcxMDcgMi43NDk5NyAxMC44OTg4IDIuODgyMTEgMTAuOTcwMyAzLjA4MDM2TDEzLjk3MDMgMTEuMzk5OUMxNC4wNjQgMTEuNjU5NyAxMy45MjkzIDExLjk0NjIgMTMuNjY5NiAxMi4wMzk5QzEzLjQwOTggMTIuMTMzNiAxMy4xMjMzIDExLjk5ODkgMTMuMDI5NiAxMS43MzkyTDEyLjA0NzcgOS4wMTZIOC45NTIyOEw3Ljk3MDMzIDExLjczOTJDNy44NzY2NiAxMS45OTg5IDcuNTkwMTMgMTIuMTMzNiA3LjMzMDM2IDEyLjAzOTlDNy4wNzA1OSAxMS45NDYyIDYuOTM1OTUgMTEuNjU5NyA3LjAyOTYyIDExLjM5OTlMMTAuMDI5NiAzLjA4MDM2QzEwLjEwMTEgMi44ODIxMSAxMC4yODkyIDIuNzQ5OTcgMTAuNSAyLjc0OTk3Wk0xMC41IDQuNzIzOTZMMTEuNzQxMiA4LjE2Nkg5LjI1ODc5TDEwLjUgNC43MjM5NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEh0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjAzNzkxIDkuOTgwNzVDMC45MzQ3NzcgOS42NTgzIDEuMTE2MDMgOS4zNzcxOSAxLjQwMDA1IDkuMjQ4NzFDMS42ODQwOCA5LjEyMDIyIDIuMDk0NjMgOS4xMzQxMiAyLjI3MDcxIDkuNDU0MjZDMi44NTM5MyAxMC41MTQ3IDMuNjQ1OTkgMTAuNzI4MiA0LjQ4NjY1IDEwLjcyODJDNS41MjcyMSAxMC43MjgyIDYuMjk2NTkgMTAuMjYxNSA2LjI5NjU5IDkuNDU0MjZDNi4yOTY1OSA4LjgwNDcgNS45MTE5IDguNDY0MTYgNC44NzEzNCA4LjE0MjUzTDQuMTU4NzIgNy45MjE4MUMyLjY0NTE4IDcuNDQ4ODMgMS44ODg0MiA2LjY5MjA2IDEuODg4NDIgNS40NTYwMUMxLjg4ODQyIDMuNzk3NDMgMy4yNzU4MyAyLjY4NzUgNS4yNDM0MiAyLjY4NzVDNi45MTczMyAyLjY4NzUgNy45NzQwOSAzLjMzNTM2IDguNDM4MzMgNC4zMTA2NUM4LjU3MDg3IDQuNTg5MDkgOC41NzYxNCA0LjkxMjk0IDguMjI3OTQgNS4xOTExNEM3Ljg3OTc0IDUuNDY5MzQgNy41MjM1MSA1LjM0Nzk5IDcuMjMzMjcgNS4wMzgzOUM2LjQ3MjE1IDQuMjI2NTMgNS45OTU0NSA0LjA0OTY4IDUuMjU2MDQgNC4wNDk2OEM0LjEzOTggNC4wNDk2OCAzLjU0NyA0LjYzNjE4IDMuNTQ3IDUuMjc5NDNDMy41NDcgNS44NjU5MiAzLjk2MzIyIDYuMjMxNjkgNC45NDcwMiA2LjUzNDRMNS42Nzg1NiA2Ljc2MTQzQzcuMjI5OTQgNy4yMzQ0MSA3Ljk3NDA5IDcuOTU5NjQgNy45NzQwOSA5LjE3MDQ3QzcuOTc0MDkgMTAuNzcyMyA2LjY5Mzg5IDEyLjA5MDMgNC40NjE0MyAxMi4wOTAzQzIuODY2MTIgMTIuMDkwMyAxLjQwMDA1IDExLjExMzEgMS4wMzc5MSA5Ljk4MDc1Wk0xMS44NDkxIDguNzc5ODVDMTAuNjYxIDguMzk1NDMgMTAuMTY0OSA3Ljg2MTE0IDEwLjE2NDkgNi45ODgwNUMxMC4xNjQ5IDUuODY3MzYgMTEuMTYzNiA1LjA0NjM5IDEyLjYxMjggNS4wNDYzOUMxMy44NTQ2IDUuMDQ2MzkgMTQuNjYyOSA1LjYzMzQ1IDE0Ljk3NzggNi42MzQ2QzE1LjA0NDMgNi44NDU5OSAxNC45NTkzIDYuOTgwMDYgMTQuNzQ3NSA3LjA0OTFDMTQuNTM5NCA3LjExNjk3IDE0LjMxNzYgNy4wOTk3NCAxNC4yMzggNi44OTYxMUMxMy45MzU2IDYuMTIyNzMgMTMuMzUyIDUuNzYzMTEgMTIuNTk5OCA1Ljc2MzExQzExLjY0NjcgNS43NjMxMSAxMS4wMTM1IDYuMjUxNzggMTEuMDEzNSA2LjkxNjM4QzExLjAxMzUgNy40NTA2NiAxMS4zNDY0IDcuNzUwMzggMTIuMjQ3MyA4LjA0MzU4TDEyLjgzNDggOC4yMzI1NEMxNC4wNjIgOC42Mjk5OSAxNC41NTE2IDkuMTM4MjEgMTQuNTUxNiAxMC4wMTc4QzE0LjU1MTYgMTEuMTk3MiAxMy40ODEgMTIuMDQ0MiAxMS45OTI3IDEyLjA0NDJDMTAuNjQzOSAxMi4wNDQyIDkuNjU2NDQgMTEuMjgwOSA5LjQxOTc5IDEwLjMzNjFDOS4zNjUzNSAxMC4xMTg4IDkuNDExOTIgMTAuMDI4NyA5LjcwMDM5IDkuOTYxODRDOS45ODg4NiA5Ljg5NDk5IDEwLjA3MTQgOS44OTkxOCAxMC4xNzE1IDEwLjEzNjlDMTAuNDU1NSAxMC44MTE0IDExLjE1MzEgMTEuMzI3NSAxMi4wMzE4IDExLjMyNzVDMTIuOTkxNCAxMS4zMjc1IDEzLjY4MzQgMTAuNzgwMiAxMy42ODM0IDEwLjA2MzRDMTMuNjgzNCA5LjUzNTY3IDEzLjM5NjEgOS4yODgwNyAxMi40MzY2IDguOTc1MzJMMTEuODQ5MSA4Ljc3OTg1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExIDEuNUMxMSAxLjIyMzg2IDEwLjc3NjEgMSAxMC41IDFDMTAuMjIzOSAxIDEwIDEuMjIzODYgMTAgMS41VjRINVYxLjVDNSAxLjIyMzg2IDQuNzc2MTQgMSA0LjUgMUM0LjIyMzg2IDEgNCAxLjIyMzg2IDQgMS41VjRIMS41QzEuMjIzODYgNCAxIDQuMjIzODYgMSA0LjVDMSA0Ljc3NjE0IDEuMjIzODYgNSAxLjUgNUg0VjEwSDEuNUMxLjIyMzg2IDEwIDEgMTAuMjIzOSAxIDEwLjVDMSAxMC43NzYxIDEuMjIzODYgMTEgMS41IDExSDRWMTMuNUM0IDEzLjc3NjEgNC4yMjM4NiAxNCA0LjUgMTRDNC43NzYxNCAxNCA1IDEzLjc3NjEgNSAxMy41VjExSDEwVjEzLjVDMTAgMTMuNzc2MSAxMC4yMjM5IDE0IDEwLjUgMTRDMTAuNzc2MSAxNCAxMSAxMy43NzYxIDExIDEzLjVWMTFIMTMuNUMxMy43NzYxIDExIDE0IDEwLjc3NjEgMTQgMTAuNUMxNCAxMC4yMjM5IDEzLjc3NjEgMTAgMTMuNSAxMEgxMVY1SDEzLjVDMTMuNzc2MSA1IDE0IDQuNzc2MTQgMTQgNC41QzE0IDQuMjIzODYgMTMuNzc2MSA0IDEzLjUgNEgxMVYxLjVaTTEwIDEwVjVINVYxMEgxMFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEJ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjM4MjUgMS4yOTU2N0MzLjQ2MjQxIDEuMTE0MzIgMy42NDE4OCAwLjk5NzI4NCAzLjg0MDA1IDAuOTk3Mjg0SDExLjVDMTEuNzc2MSAwLjk5NzI4NCAxMiAxLjIyMTE0IDEyIDEuNDk3MjhWNS41QzEyIDUuNzc2MTQgMTEuNzc2MSA2IDExLjUgNkg4LjYzNTIxTDExLjUyODggOS4xNjI0N0MxMS42NjI2IDkuMzA4NyAxMS42OTc0IDkuNTIwMTUgMTEuNjE3NSA5LjcwMTU0QzExLjUzNzYgOS44ODI5MyAxMS4zNTgyIDEwIDExLjE2IDEwSDhWMTMuNUM4IDEzLjcwMjIgNy44NzgxOCAxMy44ODQ1IDcuNjkxMzQgMTMuOTYxOUM3LjUwNDUgMTQuMDM5MyA3LjI4OTQ1IDEzLjk5NjYgNy4xNDY0NSAxMy44NTM2TDMuMTQ2NDUgOS44NTM1NUMzLjA1MjY4IDkuNzU5NzkgMyA5LjYzMjYxIDMgOS41VjUuNUMzIDUuMjIzODYgMy4yMjM4NiA1IDMuNSA1SDYuMzY1MzFMMy40NzEwNSAxLjgzNDY4QzMuMzM3MzIgMS42ODg0NCAzLjMwMjU5IDEuNDc3MDEgMy4zODI1IDEuMjk1NjdaTTcuNzIwMzIgNUw0Ljk3NDc0IDEuOTk3MjhIMTFWNUg3LjcyMDMyWk03LjI3OTc4IDZINFY5SDcuNUgxMC4wMjQ3TDcuMjc5NzggNlpNNC43MDcxMSAxMEw3IDEyLjI5MjlWMTBINC43MDcxMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LER0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjA3MDk1IDAuNjUwMjM4QzYuNjczOTEgMC42NTAyMzggNi4zMjk3NyAwLjkyNTA5NiA2LjI0MTk4IDEuMzEyMzFMNi4wMDM5IDIuMzYyNDdDNS42MjQ5IDIuNDcyNjkgNS4yNjMzNSAyLjYyMzYzIDQuOTI0MzYgMi44MTAxM0w0LjAxMzM1IDIuMjM1ODVDMy42Nzc0OCAyLjAyNDEzIDMuMjM5NzggMi4wNzMxMiAyLjk1OTAzIDIuMzUzODZMMi4zNTI5NCAyLjk1OTk2QzIuMDcyMiAzLjI0MDcgMi4wMjMyIDMuNjc4NCAyLjIzNDkzIDQuMDE0MjdMMi44MDk0MiA0LjkyNTYxQzIuNjIzMDcgNS4yNjQ1IDIuNDcyMjcgNS42MjU5NCAyLjM2MjE2IDYuMDA0ODFMMS4zMTIwOSA2LjI0Mjg3QzAuOTI0ODgzIDYuMzMwNjUgMC42NTAwMjQgNi42NzQ4IDAuNjUwMDI0IDcuMDcxODNWNy45Mjg5N0MwLjY1MDAyNCA4LjMyNjAxIDAuOTI0ODgzIDguNjcwMTUgMS4zMTIwOSA4Ljc1Nzk0TDIuMzYyMjggOC45OTYwM0MyLjQ3MjQ2IDkuMzc1IDIuNjIzMzUgOS43MzY1MiAyLjgwOTc5IDEwLjA3NTVMMi4yMzU0IDEwLjk4NjdDMi4wMjM2NyAxMS4zMjI1IDIuMDcyNjcgMTEuNzYwMiAyLjM1MzQxIDEyLjA0MUwyLjk1OTUxIDEyLjY0NzFDMy4yNDAyNSAxMi45Mjc4IDMuNjc3OTUgMTIuOTc2OCA0LjAxMzgyIDEyLjc2NTFMNC45MjUwNiAxMi4xOTA3QzUuMjYzODQgMTIuMzc3IDUuNjI1MTYgMTIuNTI3OCA2LjAwMzkgMTIuNjM3OUw2LjI0MTk4IDEzLjY4ODFDNi4zMjk3NyAxNC4wNzUzIDYuNjczOTEgMTQuMzUwMiA3LjA3MDk1IDE0LjM1MDJINy45MjgwOUM4LjMyNTEyIDE0LjM1MDIgOC42NjkyNyAxNC4wNzUzIDguNzU3MDUgMTMuNjg4MUw4Ljk5NTA1IDEyLjYzODNDOS4zNzQxMSAxMi41MjgyIDkuNzM1NzMgMTIuMzc3MyAxMC4wNzQ4IDEyLjE5MDlMMTAuOTg2IDEyLjc2NTNDMTEuMzIxOCAxMi45NzcgMTEuNzU5NSAxMi45MjggMTIuMDQwMyAxMi42NDczTDEyLjY0NjQgMTIuMDQxMkMxMi45MjcxIDExLjc2MDQgMTIuOTc2MSAxMS4zMjI3IDEyLjc2NDQgMTAuOTg2OUwxMi4xOTAyIDEwLjA3NkMxMi4zNzY4IDkuNzM2ODggMTIuNTI3OCA5LjM3NTE1IDEyLjYzOCA4Ljk5NTk2TDEzLjY4NzkgOC43NTc5NEMxNC4wNzUxIDguNjcwMTUgMTQuMzUgOC4zMjYwMSAxNC4zNSA3LjkyODk3VjcuMDcxODNDMTQuMzUgNi42NzQ4IDE0LjA3NTEgNi4zMzA2NSAxMy42ODc5IDYuMjQyODdMMTIuNjM4MSA2LjAwNDg4QzEyLjUyOCA1LjYyNTc4IDEyLjM3NzEgNS4yNjQxNCAxMi4xOTA2IDQuOTI1MDdMMTIuNzY0OCA0LjAxNDA3QzEyLjk3NjYgMy42NzgyIDEyLjkyNzYgMy4yNDA1IDEyLjY0NjggMi45NTk3NUwxMi4wNDA3IDIuMzUzNjZDMTEuNzYgMi4wNzI5MiAxMS4zMjIzIDIuMDIzOTIgMTAuOTg2NCAyLjIzNTY1TDEwLjA3NTUgMi44MDk4OUM5LjczNjIyIDIuNjIzMjggOS4zNzQzNyAyLjQ3MjI5IDguOTk1MDUgMi4zNjIwOUw4Ljc1NzA1IDEuMzEyMzFDOC42NjkyNyAwLjkyNTA5NiA4LjMyNTEyIDAuNjUwMjM4IDcuOTI4MDkgMC42NTAyMzhINy4wNzA5NVpNNC45MjA1MyAzLjgxMjUxQzUuNDQ3MjQgMy40NDMzOSA2LjA1NjY1IDMuMTg0MjQgNi43MTU0MyAzLjA2ODM5TDcuMDcwOTUgMS41MDAyNEg3LjkyODA5TDguMjgzNTUgMy4wNjgxNkM4Ljk0MjY3IDMuMTgzODcgOS41NTI0IDMuNDQzMDIgMTAuMDc5NCAzLjgxMjI0TDExLjQzOTcgMi45NTQ3TDEyLjA0NTggMy41NjA3OUwxMS4xODgyIDQuOTIxMTdDMTEuNTU3MyA1LjQ0Nzk4IDExLjgxNjQgNi4wNTc1IDExLjkzMjEgNi43MTYzOEwxMy41IDcuMDcxODNWNy45Mjg5N0wxMS45MzIgOC4yODQ0NEMxMS44MTYyIDguOTQzNDIgMTEuNTU3IDkuNTUzMDEgMTEuMTg3OCAxMC4wNzk4TDEyLjA0NTMgMTEuNDQwMkwxMS40MzkyIDEyLjA0NjJMMTAuMDc4NyAxMS4xODg2QzkuNTUxOTIgMTEuNTU3NiA4Ljk0MjQxIDExLjgxNjYgOC4yODM1NSAxMS45MzIzTDcuOTI4MDkgMTMuNTAwMkg3LjA3MDk1TDYuNzE1NDMgMTEuOTMyQzYuMDU2OSAxMS44MTYyIDUuNDQ3NzIgMTEuNTU3MiA0LjkyMTE2IDExLjE4ODNMMy41NjA1NSAxMi4wNDZMMi45NTQ0NSAxMS40Mzk5TDMuODEyMTMgMTAuMDc5NEMzLjQ0MzEgOS41NTI2NiAzLjE4NDAzIDguOTQzMjYgMy4wNjgyNSA4LjI4NDVMMS41MDAwMiA3LjkyODk3VjcuMDcxODNMMy4wNjgxOCA2LjcxNjMyQzMuMTgzODggNi4wNTc2NSAzLjQ0MjgzIDUuNDQ4MzMgMy44MTE3MSA0LjkyMTY1TDIuOTUzOTggMy41NjFMMy41NjAwOCAyLjk1NDkxTDQuOTIwNTMgMy44MTI1MVpNOS4wMjQ5NiA3LjUwMDA4QzkuMDI0OTYgOC4zNDIyNiA4LjM0MjIzIDkuMDI0OTkgNy41MDAwNSA5LjAyNDk5QzYuNjU3ODYgOS4wMjQ5OSA1Ljk3NTEzIDguMzQyMjYgNS45NzUxMyA3LjUwMDA4QzUuOTc1MTMgNi42NTc4OSA2LjY1Nzg2IDUuOTc1MTYgNy41MDAwNSA1Ljk3NTE2QzguMzQyMjMgNS45NzUxNiA5LjAyNDk2IDYuNjU3ODkgOS4wMjQ5NiA3LjUwMDA4Wk05LjkyNDk2IDcuNTAwMDhDOS45MjQ5NiA4LjgzOTMyIDguODM5MjkgOS45MjQ5OSA3LjUwMDA1IDkuOTI0OTlDNi4xNjA4IDkuOTI0OTkgNS4wNzUxMyA4LjgzOTMyIDUuMDc1MTMgNy41MDAwOEM1LjA3NTEzIDYuMTYwODQgNi4xNjA4IDUuMDc1MTYgNy41MDAwNSA1LjA3NTE2QzguODM5MjkgNS4wNzUxNiA5LjkyNDk2IDYuMTYwODQgOS45MjQ5NiA3LjUwMDA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5MzYgMC44NTAwMDZDMy44Mjc2NyAwLjg1MDAwNiAwLjg0OTk3NiAzLjgyNzMgMC44NDk5NzYgNy41MDAyM0MwLjg0OTk3NiAxMC40Mzc5IDIuNzU1MjMgMTIuOTMwNiA1LjM5Nzc1IDEzLjgxMDRDNS43MzA0NyAxMy44NzEyIDUuODUxNzEgMTMuNjY1OCA1Ljg1MTcxIDEzLjQ4OTVDNS44NTE3MSAxMy4zMzE1IDUuODQ2IDEyLjkxMzUgNS44NDI3MyAxMi4zNTg3QzMuOTkzMDEgMTIuNzYwNCAzLjYwMjczIDExLjQ2NzEgMy42MDI3MyAxMS40NjcxQzMuMzAwMjIgMTAuNjk4OCAyLjg2NDIzIDEwLjQ5NDIgMi44NjQyMyAxMC40OTQyQzIuMjYwNDQgMTAuMDgxOSAyLjkwOTk1IDEwLjA5MDEgMi45MDk5NSAxMC4wOTAxQzMuNTc3NDIgMTAuMTM3IDMuOTI4NSAxMC43NzU1IDMuOTI4NSAxMC43NzU1QzQuNTIxNjcgMTEuNzkxNiA1LjQ4NTEyIDExLjQ5ODEgNS44NjM5NiAxMS4zMjc5QzUuOTI0MzggMTAuODk4NCA2LjA5NjI1IDEwLjYwNTMgNi4yODYwOCAxMC40MzkxQzQuODA5NDggMTAuMjcwOSAzLjI1Njk1IDkuNzAwNjMgMy4yNTY5NSA3LjE1MjQxQzMuMjU2OTUgNi40MjYxNSAzLjUxNjE4IDUuODMyOTggMy45NDE1NyA1LjM2OEMzLjg3Mjk5IDUuMTk5OCAzLjY0NDc4IDQuNTIzNzUgNC4wMDY4OSAzLjYwODA3QzQuMDA2ODkgMy42MDgwNyA0LjU2NDk0IDMuNDI5MjYgNS44MzUzOCA0LjI4OTQxQzYuMzY1NjggNC4xNDIwNCA2LjkzNDc3IDQuMDY4NTYgNy41MDAxOCA0LjA2NTdDOC4wNjUxOCA0LjA2ODU2IDguNjMzODYgNC4xNDIwNCA5LjE2NDk4IDQuMjg5NDFDMTAuNDM0NiAzLjQyOTI2IDEwLjk5MTggMy42MDgwNyAxMC45OTE4IDMuNjA4MDdDMTEuMzU0OCA0LjUyMzc1IDExLjEyNjYgNS4xOTk4IDExLjA1ODQgNS4zNjhDMTEuNDg0NiA1LjgzMjk4IDExLjc0MTggNi40MjYxNSAxMS43NDE4IDcuMTUyNDFDMTEuNzQxOCA5LjcwNzE2IDEwLjE4NjggMTAuMjY5MyA4LjcwNTcxIDEwLjQzMzhDOC45NDQxMiAxMC42MzkyIDkuMTU2ODEgMTEuMDQ1IDkuMTU2ODEgMTEuNjY1NUM5LjE1NjgxIDEyLjU1NDIgOS4xNDg2NSAxMy4yNzE1IDkuMTQ4NjUgMTMuNDg5NUM5LjE0ODY1IDEzLjY2NzUgOS4yNjg2NyAxMy44NzQ1IDkuNjA1ODggMTMuODA5NUMxMi4yNDY0IDEyLjkyODIgMTQuMTUgMTAuNDM3NSAxNC4xNSA3LjUwMDIzQzE0LjE1IDMuODI3MyAxMS4xNzIzIDAuODUwMDA2IDcuNDk5MzYgMC44NTAwMDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSwkdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5NiAxLjgwMDAyQzQuMzUxOTQgMS44MDAwMiAxLjc5OTk2IDQuMzUyIDEuNzk5OTYgNy41MDAwMkMxLjc5OTk2IDEwLjY0OCA0LjM1MTk0IDEzLjIgNy40OTk5NiAxMy4yQzEwLjY0OCAxMy4yIDEzLjIgMTAuNjQ4IDEzLjIgNy41MDAwMkMxMy4yIDQuMzUyIDEwLjY0OCAxLjgwMDAyIDcuNDk5OTYgMS44MDAwMlpNMC44OTk5NjMgNy41MDAwMkMwLjg5OTk2MyAzLjg1NDk0IDMuODU0ODggMC45MDAwMjQgNy40OTk5NiAwLjkwMDAyNEMxMS4xNDUgMC45MDAwMjQgMTQuMSAzLjg1NDk0IDE0LjEgNy41MDAwMkMxNC4xIDExLjE0NTEgMTEuMTQ1IDE0LjEgNy40OTk5NiAxNC4xQzMuODU0ODggMTQuMSAwLjg5OTk2MyAxMS4xNDUxIDAuODk5OTYzIDcuNTAwMDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy40OTk5IDcuODk5OThIMS40OTk5NFY3LjA5OTk4SDEzLjQ5OTlWNy44OTk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMDk5OTEgMTMuNVYxLjVINy44OTk5MVYxMy41SDcuMDk5OTF6TTEwLjM3NSA3LjQ5OTk4QzEwLjM3NSA1LjMyNzI0IDkuNTkzNjQgMy4xNzc3OCA4LjA2MTgzIDEuNzU2NTZMOC41Mzc5MyAxLjI0MzQxQzEwLjIzOTYgMi44MjIxOCAxMS4wNzUgNS4xNzI3MyAxMS4wNzUgNy40OTk5OCAxMS4wNzUgOS44MjcyNCAxMC4yMzk2IDEyLjE3NzggOC41Mzc5MyAxMy43NTY2TDguMDYxODMgMTMuMjQzNEM5LjU5MzY0IDExLjgyMjIgMTAuMzc1IDkuNjcyNzMgMTAuMzc1IDcuNDk5OTh6TTMuOTk5NjkgNy41QzMuOTk5NjkgNS4xNzYxMSA0LjgwNzg2IDIuODI2NzggNi40NTc2OCAxLjI0NzE5TDYuOTQxNzcgMS43NTI4MUM1LjQ1ODIgMy4xNzMyMyA0LjY5OTY5IDUuMzIzODkgNC42OTk2OSA3LjUgNC42OTk3IDkuNjc2MTEgNS40NTgyMiAxMS44MjY4IDYuOTQxNzkgMTMuMjQ3Mkw2LjQ1NzY5IDEzLjc1MjhDNC44MDc4OCAxMi4xNzMyIDMuOTk5NyA5LjgyMzkgMy45OTk2OSA3LjV6XCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTk2IDMuOTU4MDFDOS42NjkyOCAzLjk1ODAxIDExLjg3NTMgNC4zNTkxNSAxMy4zNzA2IDUuMTk0NDggMTMuNTM5NCA1LjI4ODc1IDEzLjU5OTggNS41MDE5NyAxMy41MDU1IDUuNjcwNzMgMTMuNDExMyA1LjgzOTQ4IDEzLjE5OCA1Ljg5OTg3IDEzLjAyOTMgNS44MDU2IDExLjY3OTQgNS4wNTE1NSA5LjYwNzk5IDQuNjU4MDEgNy40OTk5NiA0LjY1ODAxIDUuMzkxOTIgNC42NTgwMSAzLjMyMDUyIDUuMDUxNTUgMS45NzA2NCA1LjgwNTYgMS44MDE4OCA1Ljg5OTg3IDEuNTg4NjYgNS44Mzk0OCAxLjQ5NDM5IDUuNjcwNzMgMS40MDAxMyA1LjUwMTk3IDEuNDYwNTEgNS4yODg3NSAxLjYyOTI3IDUuMTk0NDggMy4xMjQ2NiA0LjM1OTE1IDUuMzMwNjMgMy45NTgwMSA3LjQ5OTk2IDMuOTU4MDF6TTcuNDk5OTYgMTAuODVDOS42NjkyOCAxMC44NSAxMS44NzUzIDEwLjQ0ODggMTMuMzcwNiA5LjYxMzUgMTMuNTM5NCA5LjUxOTI0IDEzLjU5OTggOS4zMDYwMSAxMy41MDU1IDkuMTM3MjYgMTMuNDExMyA4Ljk2ODUgMTMuMTk4IDguOTA4MTIgMTMuMDI5MyA5LjAwMjM4IDExLjY3OTQgOS43NTY0MyA5LjYwNzk5IDEwLjE1IDcuNDk5OTYgMTAuMTUgNS4zOTE5MiAxMC4xNSAzLjMyMDUyIDkuNzU2NDMgMS45NzA2NCA5LjAwMjM5IDEuODAxODggOC45MDgxMiAxLjU4ODY2IDguOTY4NSAxLjQ5NDM5IDkuMTM3MjYgMS40MDAxMyA5LjMwNjAxIDEuNDYwNTEgOS41MTkyNCAxLjYyOTI3IDkuNjEzNSAzLjEyNDY2IDEwLjQ0ODggNS4zMzA2MyAxMC44NSA3LjQ5OTk2IDEwLjg1elwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjUgMkg4VjdIMTNWMi41QzEzIDIuMjIzODYgMTIuNzc2MSAyIDEyLjUgMlpNMTMgOEg4VjEzSDEyLjVDMTIuNzc2MSAxMyAxMyAxMi43NzYxIDEzIDEyLjVWOFpNNyA3VjJIMi41QzIuMjIzODYgMiAyIDIuMjIzODYgMiAyLjVWN0g3Wk0yIDhWMTIuNUMyIDEyLjc3NjEgMi4yMjM4NiAxMyAyLjUgMTNIN1Y4SDJaTTIuNSAxQzEuNjcxNTcgMSAxIDEuNjcxNTcgMSAyLjVWMTIuNUMxIDEzLjMyODQgMS42NzE1NyAxNCAyLjUgMTRIMTIuNUMxMy4zMjg0IDE0IDE0IDEzLjMyODQgMTQgMTIuNVYyLjVDMTQgMS42NzE1NyAxMy4zMjg0IDEgMTIuNSAxSDIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE50PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjQ0OTk1IDAuOTQ5OTUxQzEuMzE3MzQgMC45NDk5NTEgMS4xOTAxNiAxLjAwMjYzIDEuMDk2NCAxLjA5NjRDMS4wMDI2MyAxLjE5MDE3IDAuOTQ5OTUxIDEuMzE3MzUgMC45NDk5NTEgMS40NDk5NUwwLjk0OTk2NiAzLjQ0OTk1QzAuOTQ5OTY5IDMuNzI2MSAxLjE3MzgzIDMuOTQ5OTUgMS40NDk5NyAzLjk0OTk1QzEuNzI2MTEgMy45NDk5NSAxLjk0OTk3IDMuNzI2MDkgMS45NDk5NyAzLjQ0OTk1TDEuOTQ5OTUgMS45NDk5NUgzLjQ0OTk3QzMuNzI2MTEgMS45NDk5NSAzLjk0OTk3IDEuNzI2MDkgMy45NDk5NyAxLjQ0OTk1QzMuOTQ5OTcgMS4xNzM4MSAzLjcyNjExIDAuOTQ5OTUxIDMuNDQ5OTcgMC45NDk5NTFIMS40NDk5NVpNNS45NDk5NSAwLjk0OTk1MUM1LjY3MzgxIDAuOTQ5OTUxIDUuNDQ5OTUgMS4xNzM4MSA1LjQ0OTk1IDEuNDQ5OTVDNS40NDk5NSAxLjcyNjA5IDUuNjczODEgMS45NDk5NSA1Ljk0OTk1IDEuOTQ5OTVIOC45NDk5NUM5LjIyNjA5IDEuOTQ5OTUgOS40NDk5NSAxLjcyNjA5IDkuNDQ5OTUgMS40NDk5NUM5LjQ0OTk1IDEuMTczODEgOS4yMjYwOSAwLjk0OTk1MSA4Ljk0OTk1IDAuOTQ5OTUxSDUuOTQ5OTVaTTUuNDQ5OTUgMTMuNDVDNS40NDk5NSAxMy4xNzM4IDUuNjczODEgMTIuOTUgNS45NDk5NSAxMi45NUg4Ljk0OTk1QzkuMjI2MDkgMTIuOTUgOS40NDk5NSAxMy4xNzM4IDkuNDQ5OTUgMTMuNDVDOS40NDk5NSAxMy43MjYxIDkuMjI2MDkgMTMuOTUgOC45NDk5NSAxMy45NUg1Ljk0OTk1QzUuNjczODEgMTMuOTUgNS40NDk5NSAxMy43MjYxIDUuNDQ5OTUgMTMuNDVaTTEuOTQ5OTUgNS45NDk5NUMxLjk0OTk1IDUuNjczODEgMS43MjYwOSA1LjQ0OTk1IDEuNDQ5OTUgNS40NDk5NUMxLjE3MzgxIDUuNDQ5OTUgMC45NDk5NTEgNS42NzM4MSAwLjk0OTk1MSA1Ljk0OTk1VjguOTQ5OTVDMC45NDk5NTEgOS4yMjYwOSAxLjE3MzgxIDkuNDQ5OTUgMS40NDk5NSA5LjQ0OTk1QzEuNzI2MDkgOS40NDk5NSAxLjk0OTk1IDkuMjI2MDkgMS45NDk5NSA4Ljk0OTk1VjUuOTQ5OTVaTTEzLjQ1IDUuNDQ5OTVDMTMuNzI2MSA1LjQ0OTk1IDEzLjk1IDUuNjczODEgMTMuOTUgNS45NDk5NVY4Ljk0OTk1QzEzLjk1IDkuMjI2MDkgMTMuNzI2MSA5LjQ0OTk1IDEzLjQ1IDkuNDQ5OTVDMTMuMTczOCA5LjQ0OTk1IDEyLjk1IDkuMjI2MDkgMTIuOTUgOC45NDk5NVY1Ljk0OTk1QzEyLjk1IDUuNjczODEgMTMuMTczOCA1LjQ0OTk1IDEzLjQ1IDUuNDQ5OTVaTTExLjQ1IDAuOTQ5OTUxQzExLjE3MzggMC45NDk5NTEgMTAuOTUgMS4xNzM4MSAxMC45NSAxLjQ0OTk1QzEwLjk1IDEuNzI2MDkgMTEuMTczOCAxLjk0OTk1IDExLjQ1IDEuOTQ5OTVIMTIuOTQ5OVYzLjQ0OTk1QzEyLjk0OTkgMy43MjYwOSAxMy4xNzM4IDMuOTQ5OTUgMTMuNDQ5OSAzLjk0OTk1QzEzLjcyNjEgMy45NDk5NSAxMy45NDk5IDMuNzI2MDkgMTMuOTQ5OSAzLjQ0OTk1VjEuNDQ5OTVDMTMuOTQ5OSAxLjE3MzgxIDEzLjcyNTIgMC45NDk5NTEgMTMuNDQ5IDAuOTQ5OTUxSDExLjQ1Wk0xLjQ0OTk1IDEwLjk1QzEuNzI2MDkgMTAuOTUgMS45NDk5NSAxMS4xNzM4IDEuOTQ5OTUgMTEuNDVWMTIuOTVIMy40NDk5N0MzLjcyNjExIDEyLjk1IDMuOTQ5OTcgMTMuMTczOCAzLjk0OTk3IDEzLjQ1QzMuOTQ5OTcgMTMuNzI2MSAzLjcyNjExIDEzLjk1IDMuNDQ5OTcgMTMuOTVIMS40NDk5NUMxLjE3MzgxIDEzLjk1IDAuOTQ5OTUxIDEzLjcyNjEgMC45NDk5NTEgMTMuNDVWMTEuNDVDMC45NDk5NTEgMTEuMTczOCAxLjE3MzgxIDEwLjk1IDEuNDQ5OTUgMTAuOTVaTTEzLjk1IDExLjQ1QzEzLjk1IDExLjE3MzggMTMuNzI2MSAxMC45NSAxMy40NSAxMC45NUMxMy4xNzM4IDEwLjk0OTkgMTIuOTUgMTEuMTczOCAxMi45NSAxMS40NDk5TDEyLjk0OTEgMTIuOTVIMTEuNDVDMTEuMTczOCAxMi45NSAxMC45NSAxMy4xNzM4IDEwLjk1IDEzLjQ1QzEwLjk1IDEzLjcyNjEgMTEuMTczOCAxMy45NSAxMS40NSAxMy45NUgxMy40NDk5QzEzLjcyNjEgMTMuOTUgMTMuOTQ5OSAxMy43MjYxIDEzLjk0OTkgMTMuNDVMMTMuOTUgMTEuNDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxVdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3Njg5MkMzLjg0MjIyIDAuODc2ODkyIDAuODc3MDc1IDMuODQyMDQgMC44NzcwNzUgNy40OTk3MkMwLjg3NzA3NSAxMS4xNTc0IDMuODQyMjIgMTQuMTIyNiA3LjQ5OTkxIDE0LjEyMjZDMTEuMTU3NiAxNC4xMjI2IDE0LjEyMjcgMTEuMTU3NCAxNC4xMjI3IDcuNDk5NzJDMTQuMTIyNyAzLjg0MjA0IDExLjE1NzYgMC44NzY4OTIgNy40OTk5MSAwLjg3Njg5MlpNNy4wMDAwMyAxLjg0ODYxQzQuMTAxMTQgMi4xMDE3IDEuODI3MDcgNC41MzUxNSAxLjgyNzA3IDcuNDk5NzJDMS44MjcwNyAxMC40NjQzIDQuMTAxMTQgMTIuODk3NyA3LjAwMDAzIDEzLjE1MDhWMS44NDg2MVpNOC4wMDAwMyAxMy4xNTA4QzEwLjg5ODggMTIuODk3NiAxMy4xNzI3IDEwLjQ2NDIgMTMuMTcyNyA3LjQ5OTcyQzEzLjE3MjcgNC41MzUyNCAxMC44OTg4IDIuMTAxODUgOC4wMDAwMyAxLjg0ODY0VjEzLjE1MDhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxXdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3Njg5MkMzLjg0MjIyIDAuODc2ODkyIDAuODc3MDc1IDMuODQyMDQgMC44NzcwNzUgNy40OTk3MkMwLjg3NzA3NSAxMS4xNTc0IDMuODQyMjIgMTQuMTIyNiA3LjQ5OTkxIDE0LjEyMjZDMTEuMTU3NiAxNC4xMjI2IDE0LjEyMjcgMTEuMTU3NCAxNC4xMjI3IDcuNDk5NzJDMTQuMTIyNyAzLjg0MjA0IDExLjE1NzYgMC44NzY4OTIgNy40OTk5MSAwLjg3Njg5MlpNNy40OTk4OCAxLjgyNjg5QzQuMzY2ODggMS44MjY5IDEuODI3MDcgNC4zNjY3MiAxLjgyNzA3IDcuNDk5NzJDMS44MjcwNyAxMC42MzI3IDQuMzY2ODggMTMuMTcyNSA3LjQ5OTg4IDEzLjE3MjZWMS44MjY4OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHp0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjUgM0MxLjIyMzg2IDMgMSAzLjIyMzg2IDEgMy41QzEgMy43NzYxNCAxLjIyMzg2IDQgMS41IDRIMTMuNUMxMy43NzYxIDQgMTQgMy43NzYxNCAxNCAzLjVDMTQgMy4yMjM4NiAxMy43NzYxIDMgMTMuNSAzSDEuNVpNMSA3LjVDMSA3LjIyMzg2IDEuMjIzODYgNyAxLjUgN0gxMy41QzEzLjc3NjEgNyAxNCA3LjIyMzg2IDE0IDcuNUMxNCA3Ljc3NjE0IDEzLjc3NjEgOCAxMy41IDhIMS41QzEuMjIzODYgOCAxIDcuNzc2MTQgMSA3LjVaTTEgMTEuNUMxIDExLjIyMzkgMS4yMjM4NiAxMSAxLjUgMTFIMTMuNUMxMy43NzYxIDExIDE0IDExLjIyMzkgMTQgMTEuNUMxNCAxMS43NzYxIDEzLjc3NjEgMTIgMTMuNSAxMkgxLjVDMS4yMjM4NiAxMiAxIDExLjc3NjEgMSAxMS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sR3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuODExMyAxLjY0NzA2QzYuNjIxODggMi44NzkxOCA2LjY4MjY4IDMuODg1MjMgNi43Njg0OCA1LjMwNDk5QzYuNzg0MTUgNS41NjQyNiA2LjgwMDY1IDUuODM3MzIgNi44MTY2MSA2LjEyODA4QzYuODMxMTEgNi4zOTIwOCA2LjYzNzU4IDYuNjIxNzIgNi4zNzQ5NSA2LjY1MjE3QzYuMTEyMzIgNi42ODI2MiA1Ljg3MTM4IDYuNTAzMzQgNS44MjUwOSA2LjI0MzA0TDUuNzQ3NTQgNS44MDY5OEM1LjY0NDAyIDUuMTY1MjkgNS40ODM1NSA0LjI1NDgxIDUuMTc4MDcgMy40NDc0MUM0Ljg2MjQxIDIuNjEzMTIgNC40NDg2IDIuMDQxMjEgMy45MzQzNiAxLjg2MDQ0QzMuNjQ5OTQgMS43NjEwNCAzLjQxOTAxIDEuODQyNzkgMy4yNTg2OCAyLjAxMDUyQzMuMDg3NDYgMi4xODk2MiAyLjk5NzYgMi40NzA2NSAzLjA2MjcgMi43NTM5OUMzLjIxNDYgMy4zNDQyNCAzLjQ0NjI3IDMuOTE2NyAzLjY5ODM2IDQuNTE4MDJDMy43MjA4MiA0LjU3MTU4IDMuNzQzNDYgNC42MjU0MyAzLjc2NjIxIDQuNjc5NTRDMy45OTU0IDUuMjI0NTcgNC4yMzYxOSA1Ljc5NzIgNC40MTY0NCA2LjM5MDgxTDQuNDE2OTEgNi4zOTIzOEM0LjU2MiA2Ljg3NTg2IDQuNjU2NDYgNy4yNTk1IDQuNzMwODYgNy41NjE2NUM0Ljc2MDM0IDcuNjgxMzggNC43ODY2NyA3Ljc4ODMxIDQuODExNzUgNy44ODM1OUM0Ljg2NzY4IDguMDk2MDYgNC43NzgzNiA4LjMyMDE0IDQuNTkxNjEgOC40MzU4OEM0LjQwNDg2IDguNTUxNjEgNC4xNjQ0NSA4LjUzMTg4IDMuOTk5MDcgOC4zODcyNUMzLjczNzQ5IDguMTU4NDggMy41MTUgNy45Mjc4NCAzLjMxODE3IDcuNzE4MDJDMy4yNzYyNyA3LjY3MzM1IDMuMjM2MDIgNy42MzAxOCAzLjE5NzA1IDcuNTg4MzhDMy4wNDc3NyA3LjQyODI2IDIuOTE3MTIgNy4yODgxMiAyLjc4MzM0IDcuMTYwMjlDMi40NTk4OSA2Ljg1MTIyIDIuMTgzOTggNi42ODAwNCAxLjgwNTg1IDYuNjQzNjlMMS44MDMyNCA2LjY0MzQzQzEuNTYxMTcgNi42MTg4OCAxLjQxNDAyIDYuNjY0NDEgMS4zMTc1NiA2LjcyNjI3QzEuMjE4OTkgNi43ODk0NyAxLjExOTg4IDYuOTA0MTQgMS4wMzc4NCA3LjExMjNDMC45NzY1NzYgNy4yODQ5MiAxLjAxNTE1IDcuNjI5ODcgMS4xOTI5IDcuOTY5MTFMMS4xOTcyOCA3Ljk3NzQ3QzEuNDAwODYgOC4zODQ1MiAxLjc0NDc1IDguODE1ODcgMi4xODE0MSA5LjI5Mjk5QzIuMzk3MzkgOS41Mjg5OCAyLjYyODcyIDkuNzY4NDkgMi44NjkzNCAxMC4wMTc0TDIuODc5NjYgMTAuMDI4MUMzLjExNTQ2IDEwLjI3MjEgMy4zNTk2MiAxMC41MjQ3IDMuNTk3MTMgMTAuNzgyN0M0LjQyODggMTEuNjg2MyA1LjI3NzA2IDEyLjc1MzggNS40NjI3IDE0SDExLjUwODdDMTEuNTYzNiAxMi40MzUzIDExLjg3NTYgMTEuMjY4IDEyLjI4NzUgMTAuMTM0NkMxMi40NDU0IDkuNzAwNDEgMTIuNjEyMSA5LjI4NDEyIDEyLjc4MjYgOC44NTgyOUMxMy4xMDk3IDguMDQxMzkgMTMuNDUwOSA3LjE4OTM3IDEzLjc3MDUgNi4xMDgyNEMxNC4wOTg5IDQuOTk3MzcgMTQuMDA5NyA0LjM3MDMzIDEzLjg2MTMgNC4wMzk4NEMxMy43MTcgMy43MTg1OCAxMy40OTE0IDMuNjE3ODYgMTMuMzgxNiAzLjU5NjA2QzEzLjEzODEgMy41NDc3NCAxMy4wMzg0IDMuNjA5NDcgMTIuOTY5OCAzLjY3OTAxQzEyLjg2NyAzLjc4MzE2IDEyLjc2OTggMy45ODI3MyAxMi42OTIxIDQuMzAyNjlDMTIuNjE2NiA0LjYxMzQ1IDEyLjU3NTIgNC45NjUxNyAxMi41MzMgNS4zMjUwMUwxMi41Mjk4IDUuMzUyODVDMTIuNDkyNCA1LjY3MjQyIDEyLjQ1MDUgNi4wMzAxNiAxMi4zNjY1IDYuMzAwOThDMTIuMzM4MyA2LjQwNjk5IDEyLjI4MTkgNi41MDQwNyAxMi4xOTc5IDYuNTc1MzlDMTIuMTM4MiA2LjYyNjEgMTIuMDEwNCA2LjcwODE4IDExLjgzMDkgNi42OTMxMkMxMS41NDI0IDYuNjY4OTEgMTEuMzcxMiA2LjQyMTQzIDExLjM2NSA2LjE0NzgzQzExLjM1NiA1Ljc1NDU0IDExLjM4ODMgNS4zNTg2NCAxMS40MDc0IDQuOTY2MDhDMTEuNDQyOCA0LjIzNjQ2IDExLjQ3NyAzLjUzMzcgMTEuNDI0NSAyLjgzNDJMMTEuNDI0MiAyLjgyOTM0QzExLjM5MTYgMi4zMjk5NyAxMS4wNDkzIDIuMDAyMjggMTAuNzAwNyAxLjkyMjhDMTAuNTMwNSAxLjg4NDAxIDEwLjM2OSAxLjkwNjAxIDEwLjIzNDcgMS45ODM1QzEwLjEwMyAyLjA1OTQ2IDkuOTU1MzUgMi4yMTMxOCA5Ljg1NzQgMi41MTM5NEw5Ljg1NjMxIDIuNTE3MjZDOS44MTUyNSAyLjY0MDQgOS43NzI5OCAyLjg3NzUzIDkuNzM2MDYgMy4yMTI0QzkuNzAwNDQgMy41MzU0MiA5LjY3MzM3IDMuOTEyNzkgOS42NTE1NiA0LjI5NDE4QzkuNjMyOSA0LjYyMDMzIDkuNjE3ODUgNC45NTg0IDkuNjA0MzQgNS4yNjE5NEM5LjU4NzI4IDUuNjQ1MjkgOS41NzI2NyA1Ljk3MzU3IDkuNTU2MzMgNi4xNTMyQzkuNTQ5ODMgNi4yMjQ1OSA5LjUyOTM5IDYuMjk0OTMgOS40OTUwMSA2LjM1Nzg1QzkuNDczNTYgNi4zOTcxMSA5LjM2MTE1IDYuNjA5NDcgOS4wNzEwNiA2LjYxODQzQzguNzc5MTcgNi42Mjc0NCA4LjYzOTc1IDYuNDAwNTcgOC42MTY5OCA2LjM1OTE5QzguNTU2MzQgNi4yNDg5OSA4LjU1MDY2IDYuMTE4MDcgOC41NDc1NCA1Ljk5MjgzQzguNTQ0NzQgNS44ODA2NCA4LjU0Mjk0IDUuNzE3OTggOC41NDE3NCA1LjU0NzY3QzguNTM5MzUgNS4yMDU4MiA4LjUzOTM1IDQuODE5MTkgOC41MzkzNSA0LjcwOTUyQzguNTM5MzUgMy42NjU3IDguNTM4MzggMi42NTM3MiA4LjQ0NzE0IDEuNjQzNzJDOC4zOTE4MyAxLjI0MTI3IDguMDYyNzggMS4wMDQ1NSA3LjY0MzYgMS4wMDAwNUM3LjIyMzk5IDAuOTk1NTUyIDYuODc5MTggMS4yMjcwNCA2LjgxMTMgMS42NDcwNlpNOS40MTIxOSAxLjM2MTdDOS4yMTQ2OSAwLjQ0ODQ4NCA4LjM5OTEzIDAuMDA4MTAzMjQgNy42NTQzMyAwLjAwMDExMTU0QzYuODY0NTIgLTAuMDA4MzYzMDggNS45ODc2MSAwLjQ2NTg4MSA1LjgyMzY1IDEuNDkwMzdMNS44MjMxOCAxLjQ5MzM0QzUuNzgyMzkgMS43NTg0IDUuNzUyMjkgMi4wMTQ4MSA1LjczMDkgMi4yNjY1MkM1LjM5NDIzIDEuNjczNjQgNC45MjYyMiAxLjE0ODk0IDQuMjY1NSAwLjkxNjg1OUMzLjU4NjYxIDAuNjc5MzEyIDIuOTQ5MiAwLjg4NzA4NyAyLjUzNTgyIDEuMzE5NTJDMi4xMzQxNSAxLjczOTcxIDEuOTQ0MzggMi4zNjc0MiAyLjA5MDMxIDIuOTg3NDZMMi4wOTI2OSAyLjk5NzEzQzIuMjY0NzggMy42NjgwOCAyLjUyMzk2IDQuMzAzMTYgMi43NzYxMyA0LjkwNDY1QzIuNzk4MTQgNC45NTcxNyAyLjgyMDEgNS4wMDk0MSAyLjg0MTk0IDUuMDYxMzlDMy4wMjEzOSA1LjQ4ODQyIDMuMTkzNzggNS44OTg2NiAzLjMzODcxIDYuMzEyNTZDMi45NjQwNCA1Ljk4MTQyIDIuNTE5MjUgNS43MDc5NiAxLjkwMjc2IDUuNjQ4NEMxLjQ4ODY1IDUuNjA2NjMgMS4xMDM5MSA1LjY3NTM2IDAuNzc3ODA1IDUuODg0NDRDMC40NTQyMzkgNi4wOTE5IDAuMjQwNjcxIDYuNDA0MDUgMC4xMDQxODcgNi43NTQwNkwwLjEwMDg2OCA2Ljc2MjgxQy0wLjEwMTg0IDcuMzEyODYgMC4wNjYzMzEyIDcuOTcxNTcgMC4zMDQ4OTUgOC40Mjg5N0MwLjU3MzcwNCA4Ljk2NDc0IDAuOTk2MTA0IDkuNDc5MDQgMS40NDM3MiA5Ljk2ODEzQzEuNjcwNDYgMTAuMjE1OSAxLjkxMTM2IDEwLjQ2NTIgMi4xNTAzMyAxMC43MTI0TDIuMTU2ODIgMTAuNzE5MUMyLjM5NTI0IDEwLjk2NTggMi42MzIxNyAxMS4yMTA5IDIuODYxMzQgMTEuNDU5OUMzLjgwOTM3IDEyLjQ5IDQuNTAwMDIgMTMuNDYzMiA0LjUwMDAyIDE0LjVDNC41MDAwMiAxNC43NzYxIDQuNzIzODggMTUgNS4wMDAwMiAxNUgxMkMxMi4yNzYyIDE1IDEyLjUgMTQuNzc2MSAxMi41IDE0LjVDMTIuNSAxMi44MjEyIDEyLjgwMjEgMTEuNjQ2MiAxMy4yMjc0IDEwLjQ3NjJDMTMuMzY1MyAxMC4wOTY4IDEzLjUyMTYgOS43MDU3OSAxMy42ODY4IDkuMjkyNDdDMTQuMDIzOCA4LjQ0OTIyIDE0LjM5OCA3LjUxMjk4IDE0LjcyOTUgNi4zOTE3NUMxNS4wOTU2IDUuMTUzMjQgMTUuMDU1OSA0LjI1OTA0IDE0Ljc3MzUgMy42MzAxN0MxNC40ODcgMi45OTIwOCAxMy45Nzk4IDIuNjk1MyAxMy41NzYzIDIuNjE1MkMxMy4xMjc2IDIuNTI2MTQgMTIuNzM2NyAyLjYwNDc1IDEyLjQyNjggMi44MzA4MUMxMi40MjUzIDIuODA3NzMgMTIuNDIzNiAyLjc4NDY4IDEyLjQyMTkgMi43NjE2N0MxMi4zNTg3IDEuODEwNSAxMS42OTA3IDEuMTIyODUgMTAuOTIzIDAuOTQ3ODIxQzEwLjUzNDYgMC44NTkyODcgMTAuMTExMSAwLjkwMDM5MyA5LjczNTA5IDEuMTE3MjRDOS42MTg1MiAxLjE4NDQ2IDkuNTEwNTUgMS4yNjYyMyA5LjQxMjE5IDEuMzYxN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHF0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04Ljc1NDMyIDIuMDUwMkM4LjUwNTc5IDIuMDUwMiA4LjMwNDMyIDIuMjUxNjcgOC4zMDQzMiAyLjUwMDJDOC4zMDQzMiAyLjc0ODczIDguNTA1NzkgMi45NTAyIDguNzU0MzIgMi45NTAySDkuOTQ5OTdWNy4wNTAwNEg1LjA0OTk3VjIuOTUwMkg2LjI1NDMyQzYuNTAyODUgMi45NTAyIDYuNzA0MzIgMi43NDg3MyA2LjcwNDMyIDIuNTAwMkM2LjcwNDMyIDIuMjUxNjcgNi41MDI4NSAyLjA1MDIgNi4yNTQzMiAyLjA1MDJIMi43NTQzMkMyLjUwNTc5IDIuMDUwMiAyLjMwNDMyIDIuMjUxNjcgMi4zMDQzMiAyLjUwMDJDMi4zMDQzMiAyLjc0ODczIDIuNTA1NzkgMi45NTAyIDIuNzU0MzIgMi45NTAySDMuOTQ5OTdWMTIuMDUwMkgyLjc1NDMyQzIuNTA1NzkgMTIuMDUwMiAyLjMwNDMyIDEyLjI1MTcgMi4zMDQzMiAxMi41MDAyQzIuMzA0MzIgMTIuNzQ4NyAyLjUwNTc5IDEyLjk1MDIgMi43NTQzMiAxMi45NTAySDYuMjU0MzJDNi41MDI4NSAxMi45NTAyIDYuNzA0MzIgMTIuNzQ4NyA2LjcwNDMyIDEyLjUwMDJDNi43MDQzMiAxMi4yNTE3IDYuNTAyODUgMTIuMDUwMiA2LjI1NDMyIDEyLjA1MDJINS4wNDk5N1Y3Ljk1MDA0SDkuOTQ5OTdWMTIuMDUwMkg4Ljc1NDMyQzguNTA1NzkgMTIuMDUwMiA4LjMwNDMyIDEyLjI1MTcgOC4zMDQzMiAxMi41MDAyQzguMzA0MzIgMTIuNzQ4NyA4LjUwNTc5IDEyLjk1MDIgOC43NTQzMiAxMi45NTAySDEyLjI1NDNDMTIuNTAyOCAxMi45NTAyIDEyLjcwNDMgMTIuNzQ4NyAxMi43MDQzIDEyLjUwMDJDMTIuNzA0MyAxMi4yNTE3IDEyLjUwMjggMTIuMDUwMiAxMi4yNTQzIDEyLjA1MDJIMTEuMDVWMi45NTAySDEyLjI1NDNDMTIuNTAyOCAyLjk1MDIgMTIuNzA0MyAyLjc0ODczIDEyLjcwNDMgMi41MDAyQzEyLjcwNDMgMi4yNTE2NyAxMi41MDI4IDIuMDUwMiAxMi4yNTQzIDIuMDUwMkg4Ljc1NDMyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMTgxMyAxLjY4MTc5QzcuMzU3MDQgMS41MDYwNSA3LjY0MTk2IDEuNTA2MDUgNy44MTc3IDEuNjgxNzlMMTAuMzE3NyA0LjE4MTc5QzEwLjQ5MzQgNC4zNTc1MyAxMC40OTM0IDQuNjQyNDUgMTAuMzE3NyA0LjgxODE5QzEwLjE0MiA0Ljk5MzkyIDkuODU3MDQgNC45OTM5MiA5LjY4MTMgNC44MTgxOUw3Ljk0OTUgMy4wODYzOEw3Ljk0OTUgMTEuOTEzNkw5LjY4MTMgMTAuMTgxOEM5Ljg1NzA0IDEwLjAwNjEgMTAuMTQyIDEwLjAwNjEgMTAuMzE3NyAxMC4xODE4QzEwLjQ5MzQgMTAuMzU3NSAxMC40OTM0IDEwLjY0MjQgMTAuMzE3NyAxMC44MTgyTDcuODE3NyAxMy4zMTgyQzcuNzMzMzEgMTMuNDAyNiA3LjYxODg1IDEzLjQ1IDcuNDk5NSAxMy40NUM3LjM4MDE1IDEzLjQ1IDcuMjY1NjkgMTMuNDAyNiA3LjE4MTMgMTMuMzE4Mkw0LjY4MTMgMTAuODE4MkM0LjUwNTU3IDEwLjY0MjQgNC41MDU1NyAxMC4zNTc1IDQuNjgxMyAxMC4xODE4QzQuODU3MDQgMTAuMDA2MSA1LjE0MTk2IDEwLjAwNjEgNS4zMTc3IDEwLjE4MThMNy4wNDk1IDExLjkxMzZMNy4wNDk1IDMuMDg2MzhMNS4zMTc3IDQuODE4MTlDNS4xNDE5NiA0Ljk5MzkyIDQuODU3MDQgNC45OTM5MiA0LjY4MTMgNC44MTgxOUM0LjUwNTU3IDQuNjQyNDUgNC41MDU1NyA0LjM1NzUzIDQuNjgxMyA0LjE4MTc5TDcuMTgxMyAxLjY4MTc5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sS3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMDc5MjYgMC4yMjIyNTNDNy4zMTI3NSAtMC4wMDc0MzQgNy42ODczIC0wLjAwNzQzNCA3LjkyMDc5IDAuMjIyMjUzTDE0LjY3MDggNi44NjIyN0MxNC45MDcgNy4wOTQ2NSAxNC45MTAxIDcuNDc0NTMgMTQuNjc3OCA3LjcxMDc2QzE0LjQ0NTQgNy45NDcgMTQuMDY1NSA3Ljk1MDEyIDEzLjgyOTMgNy43MTc3M0wxMyA2LjkwMjAxVjEyLjVDMTMgMTIuNzc2MSAxMi43NzYyIDEzIDEyLjUgMTNIMi41MDAwMkMyLjIyMzg4IDEzIDIuMDAwMDIgMTIuNzc2MSAyLjAwMDAyIDEyLjVWNi45MDIwMUwxLjE3MDc5IDcuNzE3NzNDMC45MzQ1NTggNy45NTAxMiAwLjU1NDY3MiA3Ljk0NyAwLjMyMjI5IDcuNzEwNzZDMC4wODk5MDc5IDcuNDc0NTMgMC4wOTMwMjgzIDcuMDk0NjUgMC4zMjkyNiA2Ljg2MjI3TDcuMDc5MjYgMC4yMjIyNTNaTTcuNTAwMDIgMS40OTE2M0wxMiA1LjkxODMxVjEySDEwVjguNDk5OTlDMTAgOC4yMjM4NSA5Ljc3NjE3IDcuOTk5OTkgOS41MDAwMiA3Ljk5OTk5SDYuNTAwMDJDNi4yMjM4OCA3Ljk5OTk5IDYuMDAwMDIgOC4yMjM4NSA2LjAwMDAyIDguNDk5OTlWMTJIMy4wMDAwMlY1LjkxODMxTDcuNTAwMDIgMS40OTE2M1pNNy4wMDAwMiAxMkg5LjAwMDAyVjguOTk5OTlINy4wMDAwMlYxMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFh0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMC4wMDMyOTU5QzYuODA0NzMgMC4wMDMyOTU5IDYuMjQ5NTMgMC4yODExMDYgNi4yNSAwLjc0OTk5NUM2LjI1IDAuOTk3MjU4IDYuNDI0NDYgMS4xMjAxNCA2LjU3Njg3IDEuMjI3NDlDNi42OTUwNyAxLjMxMDc0IDYuOCAxLjM4NDY1IDYuOCAxLjVDNi44IDEuNzA3MSA2LjA2MjI0IDEuNzQyNjQgNS4xOTc4OSAxLjc4NDI3QzMuOTc1NTMgMS44NDMxNCAyLjUgMS45MTQyMSAyLjUgMi41QzIuNSAyLjc3NjE0IDIuNzIzODYgMyAzIDNIMTJDMTIuMjc2MSAzIDEyLjUgMi43NzYxNCAxMi41IDIuNUMxMi41IDEuOTE0MjEgMTEuMDI0NSAxLjg0MzE0IDkuODAyMTEgMS43ODQyN0M4LjkzNzc2IDEuNzQyNjQgOC4yIDEuNzA3MSA4LjIgMS41QzguMiAxLjM4NDY1IDguMzA0OTMgMS4zMTA3NCA4LjQyMzEzIDEuMjI3NDlDOC41NzU1NCAxLjEyMDE0IDguNzUgMC45OTcyNTggOC43NSAwLjc0OTk5NUM4Ljc1MDQ3IDAuMjgxMTA2IDguMTk1MjcgMC4wMDMyOTU5IDcuNSAwLjAwMzI5NTlaTTIuODk0NTEgNi4xMjI2NkMyLjI1ODA2IDYuNTI0NzEgMS45MDQxNyA3LjMxMTE4IDIuMDI0NzMgOC4wNTU2TDIuODM1ODggMTIuNDc3MkMzLjAwOTkzIDEzLjM1NjIgMy43NjI5IDE0IDQuNjYwNjEgMTRIMTAuMzM3M0MxMS4yMzU0IDE0IDExLjk4ODQgMTMuMzU2MiAxMi4xNjI1IDEyLjQ3NzJMMTIuOTczNiA4LjA1NjA3QzEzLjA4OSA3LjMyMzU4IDEyLjgyODQgNi41MzI3NiAxMi4xMzMxIDYuMDkzNzNDMTEuNzI4MyA1LjgzMDEzIDExLjY0MTIgNS4zMzIzMSAxMi4xMzMxIDUuMTI3OTZDMTIuODI4NCA0Ljg2NDM1IDEyLjY5NDggNCAxMiA0SDEwLjMwMDFINi44MDAwNUgyLjk5OTk2QzIuMzA0NjkgNCAyLjE5ODc4IDQuODkzMjggMi44OTQ1MSA1LjE1Njg5QzMuMzg2NDIgNS4zMzIzMSAzLjI5OTM5IDUuODMwMTMgMi44OTQ1MSA2LjEyMjY2Wk04LjIwMDA2IDYuMjVDOC4yMDAwNiA1LjgxNzY5IDguMDg1NzIgNS4zNzYxNSA3LjkwNjM1IDVMNC4xMTA5MyA1QzQuMjA2MjYgNS4yMTMxMiA0LjI0MTkgNS40Mzg4OSA0LjIyOTA0IDUuNjU1MjFDNC4xOTUyMiA2LjIyNDEyIDMuODQ1ODcgNi42Njg5OSAzLjQ4MDE2IDYuOTMzMjJMMy40NTQ5MiA2Ljk1MTQ2TDMuNDI4NTggNi45NjgxQzMuMTM0MDcgNy4xNTQxNCAyLjk1ODAxIDcuNTM5ODkgMy4wMTA1OCA3Ljg4NzQ5TDMuODE3OTcgMTIuMjg4NkMzLjkwNTEzIDEyLjcxNTQgNC4yNjE0OCAxMyA0LjY2MDYxIDEzSDEwLjMzNzNDMTAuNzM3IDEzIDExLjA5MzIgMTIuNzE1MyAxMS4xODA0IDEyLjI4ODZMMTEuOTg3NCA3Ljg4OThDMTIuMDQ4IDcuNDgyNDcgMTEuODk1NCA3LjEyNjMxIDExLjU5OTIgNi45MzkyN0wxMS41ODc1IDYuOTMxODRMMTEuNTg3NSA2LjkzMTc2QzExLjE5NDcgNi42NzYwMiAxMC44MzMxIDYuMjI3ODUgMTAuNzk4NiA1LjY0Nzk4QzEwLjc4NDYgNS40MTIgMTAuODI2NCA1LjE5Mzk3IDEwLjkxMTIgNUg5LjA1NTE3QzkuMDE5ODcgNS4xNDYxMSA5LjAwMDA2IDUuMzEyMDEgOS4wMDAwNiA1LjVDOS4wMDAwNiA1Ljk3NDUgOS4yMTY3OSA2LjM3MTI3IDkuNDQzNjcgNi43ODY2MkM5LjY5Mjg0IDcuMjQyNzggOS45NTQyNSA3LjcyMTM2IDkuOTU0MjUgOC4zNDk5M0M5Ljk1NDI1IDkuMjY5OCA5LjQ5ODY4IDkuODQyMDUgOC42MjE4OSA5Ljg0MjA1QzguMTMyMDYgOS44NDIwNSA3LjU3ODE4IDkuNDYwOTcgNy41NzgxOCA4Ljc1NzgxQzcuNTc4MTggOC4zNTI3OSA3LjcxNTU4IDguMDE2NDYgNy44NjEyMSA3LjY1OTk4QzguMDI1NCA3LjI1ODA2IDguMjAwMDYgNi44MzA1MSA4LjIwMDA2IDYuMjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxKdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTQgMTEuMDAwMVY0LjAwMDA2TDEgNC4wMDAwNkwxIDExLjAwMDFIMTRaTTE1IDQuMDAwMDZWMTEuMDAwMUMxNSAxMS41NTIzIDE0LjU1MjMgMTIuMDAwMSAxNCAxMi4wMDAxSDFDMC40NDc3MTUgMTIuMDAwMSAwIDExLjU1MjMgMCAxMS4wMDAxVjQuMDAwMDZDMCAzLjQ0Nzc4IDAuNDQ3NzE1IDMuMDAwMDYgMSAzLjAwMDA2SDE0QzE0LjU1MjMgMy4wMDAwNiAxNSAzLjQ0Nzc4IDE1IDQuMDAwMDZaTTIgNS4yNUMyIDUuMTExOTMgMi4xMTE5MyA1IDIuMjUgNUg1Ljc1QzUuODg4MDcgNSA2IDUuMTExOTMgNiA1LjI1VjkuNzVDNiA5Ljg4ODA3IDUuODg4MDcgMTAgNS43NSAxMEgyLjI1QzIuMTExOTMgMTAgMiA5Ljg4ODA3IDIgOS43NVY1LjI1Wk03LjUgN0M3LjIyMzg2IDcgNyA3LjIyMzg2IDcgNy41QzcgNy43NzYxNCA3LjIyMzg2IDggNy41IDhIMTAuNUMxMC43NzYxIDggMTEgNy43NzYxNCAxMSA3LjVDMTEgNy4yMjM4NiAxMC43NzYxIDcgMTAuNSA3SDcuNVpNNyA5LjVDNyA5LjIyMzg2IDcuMjIzODYgOSA3LjUgOUgxMi41QzEyLjc3NjEgOSAxMyA5LjIyMzg2IDEzIDkuNUMxMyA5Ljc3NjE0IDEyLjc3NjEgMTAgMTIuNSAxMEg3LjVDNy4yMjM4NiAxMCA3IDkuNzc2MTQgNyA5LjVaTTcuNSA1QzcuMjIzODYgNSA3IDUuMjIzODYgNyA1LjVDNyA1Ljc3NjE0IDcuMjIzODYgNiA3LjUgNkgxMS41QzExLjc3NjEgNiAxMiA1Ljc3NjE0IDEyIDUuNUMxMiA1LjIyMzg2IDExLjc3NjEgNSAxMS41IDVINy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuNSAxSDEyLjVDMTMuMzI4NCAxIDE0IDEuNjcxNTcgMTQgMi41VjEyLjVDMTQgMTMuMzI4NCAxMy4zMjg0IDE0IDEyLjUgMTRIMi41QzEuNjcxNTcgMTQgMSAxMy4zMjg0IDEgMTIuNVYyLjVDMSAxLjY3MTU3IDEuNjcxNTcgMSAyLjUgMVpNMi41IDJDMi4yMjM4NiAyIDIgMi4yMjM4NiAyIDIuNVY4LjM2MzZMMy42ODE4IDYuNjgxOEMzLjc2ODA5IDYuNTk1NTEgMy44ODU3MiA2LjU0Nzk3IDQuMDA3NzQgNi41NTAwN0M0LjEyOTc1IDYuNTUyMTYgNC4yNDU2OCA2LjYwMzcyIDQuMzI4OTUgNi42OTI5M0w3Ljg3MzU1IDEwLjQ5MDFMMTAuNjgxOCA3LjY4MThDMTAuODU3NSA3LjUwNjA3IDExLjE0MjUgNy41MDYwNyAxMS4zMTgyIDcuNjgxOEwxMyA5LjM2MzZWMi41QzEzIDIuMjIzODYgMTIuNzc2MSAyIDEyLjUgMkgyLjVaTTIgMTIuNVY5LjYzNjRMMy45ODg4NyA3LjY0NzUzTDcuNTMxMSAxMS40NDIxTDguOTQxMTMgMTNIMi41QzIuMjIzODYgMTMgMiAxMi43NzYxIDIgMTIuNVpNMTIuNSAxM0gxMC4xNTVMOC40ODMzNiAxMS4xNTNMMTEgOC42MzY0TDEzIDEwLjYzNjRWMTIuNUMxMyAxMi43NzYxIDEyLjc3NjEgMTMgMTIuNSAxM1pNNi42NDkyMiA1LjVDNi42NDkyMiA1LjAzMDEzIDcuMDMwMTMgNC42NDkyMiA3LjUgNC42NDkyMkM3Ljk2OTg3IDQuNjQ5MjIgOC4zNTA3OCA1LjAzMDEzIDguMzUwNzggNS41QzguMzUwNzggNS45Njk4NyA3Ljk2OTg3IDYuMzUwNzggNy41IDYuMzUwNzhDNy4wMzAxMyA2LjM1MDc4IDYuNjQ5MjIgNS45Njk4NyA2LjY0OTIyIDUuNVpNNy41IDMuNzQ5MjJDNi41MzMwNyAzLjc0OTIyIDUuNzQ5MjIgNC41MzMwNyA1Ljc0OTIyIDUuNUM1Ljc0OTIyIDYuNDY2OTMgNi41MzMwNyA3LjI1MDc4IDcuNSA3LjI1MDc4QzguNDY2OTMgNy4yNTA3OCA5LjI1MDc4IDYuNDY2OTMgOS4yNTA3OCA1LjVDOS4yNTA3OCA0LjUzMzA3IDguNDY2OTMgMy43NDkyMiA3LjUgMy43NDkyMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGVuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc2ODkyQzMuODQyMjIgMC44NzY4OTIgMC44NzcwNzUgMy44NDIwNCAwLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDExLjE1NzQgMy44NDIyMiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMxMS4xNTc2IDE0LjEyMjYgMTQuMTIyNyAxMS4xNTc0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDMuODQyMDQgMTEuMTU3NiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyWk0xLjgyNzA3IDcuNDk5NzJDMS44MjcwNyA0LjM2NjcxIDQuMzY2ODkgMS44MjY4OSA3LjQ5OTkxIDEuODI2ODlDMTAuNjMyOSAxLjgyNjg5IDEzLjE3MjcgNC4zNjY3MSAxMy4xNzI3IDcuNDk5NzJDMTMuMTcyNyAxMC42MzI3IDEwLjYzMjkgMTMuMTcyNiA3LjQ5OTkxIDEzLjE3MjZDNC4zNjY4OSAxMy4xNzI2IDEuODI3MDcgMTAuNjMyNyAxLjgyNzA3IDcuNDk5NzJaTTguMjQ5OTIgNC40OTk5OUM4LjI0OTkyIDQuOTE0MiA3LjkxNDEzIDUuMjQ5OTkgNy40OTk5MiA1LjI0OTk5QzcuMDg1NzEgNS4yNDk5OSA2Ljc0OTkyIDQuOTE0MiA2Ljc0OTkyIDQuNDk5OTlDNi43NDk5MiA0LjA4NTc3IDcuMDg1NzEgMy43NDk5OSA3LjQ5OTkyIDMuNzQ5OTlDNy45MTQxMyAzLjc0OTk5IDguMjQ5OTIgNC4wODU3NyA4LjI0OTkyIDQuNDk5OTlaTTYuMDAwMDMgNS45OTk5OUg2LjUwMDAzSDcuNTAwMDNDNy43NzYxOCA1Ljk5OTk5IDguMDAwMDMgNi4yMjM4NCA4LjAwMDAzIDYuNDk5OTlWOS45OTk5OUg4LjUwMDAzSDkuMDAwMDNWMTFIOC41MDAwM0g3LjUwMDAzSDYuNTAwMDNINi4wMDAwM1Y5Ljk5OTk5SDYuNTAwMDNINy4wMDAwM1Y2Ljk5OTk5SDYuNTAwMDNINi4wMDAwM1Y1Ljk5OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuNSAxQzYuMjIzODYgMSA2IDEuMjIzODYgNiAxLjVDNiAxLjc3NjE0IDYuMjIzODYgMiA2LjUgMkM3LjEyNjcxIDIgNy40NTcxOCAyLjIwMDI4IDcuNjU1NjMgMi40NzgxMkM3Ljg3ODEgMi43ODk1NyA4IDMuMjg4MzcgOCA0VjExQzggMTEuNzExNiA3Ljg3ODEgMTIuMjEwNCA3LjY1NTYzIDEyLjUyMTlDNy40NTcxOCAxMi43OTk3IDcuMTI2NzEgMTMgNi41IDEzQzYuMjIzODYgMTMgNiAxMy4yMjM5IDYgMTMuNUM2IDEzLjc3NjEgNi4yMjM4NiAxNCA2LjUgMTRDNy4zNzMyOSAxNCA4LjA0MjgyIDEzLjcwMDMgOC40NjkzNyAxMy4xMDMxQzguNDc5NzYgMTMuMDg4NiA4LjQ4OTk3IDEzLjA3MzkgOC41IDEzLjA1OTFDOC41MTAwMyAxMy4wNzM5IDguNTIwMjQgMTMuMDg4NiA4LjUzMDYzIDEzLjEwMzFDOC45NTcxOCAxMy43MDAzIDkuNjI2NzEgMTQgMTAuNSAxNEMxMC43NzYxIDE0IDExIDEzLjc3NjEgMTEgMTMuNUMxMSAxMy4yMjM5IDEwLjc3NjEgMTMgMTAuNSAxM0M5Ljg3MzI5IDEzIDkuNTQyODIgMTIuNzk5NyA5LjM0NDM3IDEyLjUyMTlDOS4xMjE5IDEyLjIxMDQgOSAxMS43MTE2IDkgMTFWNEM5IDMuMjg4MzcgOS4xMjE5IDIuNzg5NTcgOS4zNDQzNyAyLjQ3ODEyQzkuNTQyODIgMi4yMDAyOCA5Ljg3MzI5IDIgMTAuNSAyQzEwLjc3NjEgMiAxMSAxLjc3NjE0IDExIDEuNUMxMSAxLjIyMzg2IDEwLjc3NjEgMSAxMC41IDFDOS42MjY3MSAxIDguOTU3MTggMS4yOTk3MiA4LjUzMDYzIDEuODk2ODhDOC41MjAyNCAxLjkxMTQzIDguNTEwMDMgMS45MjYxMSA4LjUgMS45NDA5QzguNDg5OTcgMS45MjYxMSA4LjQ3OTc2IDEuOTExNDMgOC40NjkzNyAxLjg5Njg4QzguMDQyODIgMS4yOTk3MiA3LjM3MzI5IDEgNi41IDFaTTE0IDVIMTFWNEgxNEMxNC41NTIzIDQgMTUgNC40NDc3MiAxNSA1VjEwQzE1IDEwLjU1MjMgMTQuNTUyMyAxMSAxNCAxMUgxMVYxMEgxNFY1Wk02IDRWNUgxTDEgMTBINlYxMUgxQzAuNDQ3NzE1IDExIDAgMTAuNTUyMyAwIDEwVjVDMCA0LjQ0NzcyIDAuNDQ3NzE1IDQgMSA0SDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxubj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS40OTk5OCAwLjVDNS40OTk5OCAwLjIyMzg1OCA1LjcyMzgzIDAgNS45OTk5OCAwSDcuNDk5OThIOC45OTk5OEM5LjI3NjEyIDAgOS40OTk5OCAwLjIyMzg1OCA5LjQ5OTk4IDAuNUM5LjQ5OTk4IDAuNzc2MTQyIDkuMjc2MTIgMSA4Ljk5OTk4IDFINy45OTk5OFYyLjExOTIyQzkuMDk4MzIgMi4yMDQwOSAxMC4xMTkgMi41NjYyMiAxMC45OTIgMy4xMzU3MkMxMS4wMTE2IDMuMTA4NTEgMTEuMDMzNiAzLjA4MjUyIDExLjA1OCAzLjA1ODA2TDEyLjA1OCAyLjA1ODA2QzEyLjMwMjEgMS44MTM5OCAxMi42OTc4IDEuODEzOTggMTIuOTQxOSAyLjA1ODA2QzEzLjE4NiAyLjMwMjE0IDEzLjE4NiAyLjY5Nzg2IDEyLjk0MTkgMi45NDE5NEwxMS45NjcgMy45MTY4MkMxMy4xNTk1IDUuMDc5MjUgMTMuOSA2LjcwMzE0IDEzLjkgOC40OTk5OEMxMy45IDEyLjAzNDYgMTEuMDM0NiAxNC45IDcuNDk5OTggMTQuOUMzLjk2NTM1IDE0LjkgMS4wOTk5OCAxMi4wMzQ2IDEuMDk5OTggOC40OTk5OEMxLjA5OTk4IDUuMTMzNjEgMy42OTkwNCAyLjM3NDMgNi45OTk5OCAyLjExOTIyVjFINS45OTk5OEM1LjcyMzgzIDEgNS40OTk5OCAwLjc3NjE0MiA1LjQ5OTk4IDAuNVpNMi4wOTk5OCA4LjQ5OTk4QzIuMDk5OTggNS41MTc2NCA0LjUxNzY0IDMuMDk5OTggNy40OTk5OCAzLjA5OTk4QzEwLjQ4MjMgMy4wOTk5OCAxMi45IDUuNTE3NjQgMTIuOSA4LjQ5OTk4QzEyLjkgMTEuNDgyMyAxMC40ODIzIDEzLjkgNy40OTk5OCAxMy45QzQuNTE3NjQgMTMuOSAyLjA5OTk4IDExLjQ4MjMgMi4wOTk5OCA4LjQ5OTk4Wk03LjQ5OTk4IDguNDk5OThWNC4wOTk5OEM1LjA2OTkyIDQuMDk5OTggMy4wOTk5OCA2LjA2OTkyIDMuMDk5OTggOC40OTk5OEMzLjA5OTk4IDEwLjkzIDUuMDY5OTIgMTIuOSA3LjQ5OTk4IDEyLjlDOC43MTUgMTIuOSA5LjgxNSAxMi40MDc1IDEwLjYxMTIgMTEuNjExMkw3LjQ5OTk4IDguNDk5OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxybj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy43NTQzMiAwLjgxOTUzN0M3LjU5NzQyIDAuNzI2ODIxIDcuNDAyNSAwLjcyNjgyMSA3LjI0NTU5IDAuODE5NTM3TDEuNzQ1NTkgNC4wNjk1NEMxLjU5MzM2IDQuMTU5NDkgMS40OTk5NiA0LjMyMzE3IDEuNDk5OTYgNC41QzEuNDk5OTYgNC42NzY4MyAxLjU5MzM2IDQuODQwNTEgMS43NDU1OSA0LjkzMDQ2TDcuMjQ1NTkgOC4xODA0NkM3LjQwMjUgOC4yNzMxOCA3LjU5NzQyIDguMjczMTggNy43NTQzMiA4LjE4MDQ2TDEzLjI1NDMgNC45MzA0NkMxMy40MDY2IDQuODQwNTEgMTMuNSA0LjY3NjgzIDEzLjUgNC41QzEzLjUgNC4zMjMxNyAxMy40MDY2IDQuMTU5NDkgMTMuMjU0MyA0LjA2OTU0TDcuNzU0MzIgMC44MTk1MzdaTTcuNDk5OTYgNy4xNjkyM0wyLjk4MjggNC41TDcuNDk5OTYgMS44MzA3N0wxMi4wMTcxIDQuNUw3LjQ5OTk2IDcuMTY5MjNaTTEuNTY5NSA3LjQ5NTY0QzEuNzA5OTggNy4yNTc5IDIuMDE2NTkgNy4xNzkwNiAyLjI1NDMyIDcuMzE5NTRMNy40OTk5NiAxMC40MTkyTDEyLjc0NTYgNy4zMTk1NEMxMi45ODMzIDcuMTc5MDYgMTMuMjg5OSA3LjI1NzkgMTMuNDMwNCA3LjQ5NTY0QzEzLjU3MDkgNy43MzMzNyAxMy40OTIxIDguMDM5OTggMTMuMjU0MyA4LjE4MDQ2TDcuNzU0MzIgMTEuNDMwNUM3LjU5NzQyIDExLjUyMzIgNy40MDI1IDExLjUyMzIgNy4yNDU1OSAxMS40MzA1TDEuNzQ1NTkgOC4xODA0NkMxLjUwNzg2IDguMDM5OTggMS40MjkwMSA3LjczMzM3IDEuNTY5NSA3LjQ5NTY0Wk0xLjU2OTQ5IDEwLjQ5NTZDMS43MDk5OCAxMC4yNTc5IDIuMDE2NTggMTAuMTc5MSAyLjI1NDMyIDEwLjMxOTVMNy40OTk5NiAxMy40MTkyTDEyLjc0NTYgMTAuMzE5NUMxMi45ODMzIDEwLjE3OTEgMTMuMjg5OSAxMC4yNTc5IDEzLjQzMDQgMTAuNDk1NkMxMy41NzA5IDEwLjczMzQgMTMuNDkyMSAxMS4wNCAxMy4yNTQzIDExLjE4MDVMNy43NTQzMiAxNC40MzA1QzcuNTk3NDIgMTQuNTIzMiA3LjQwMjUgMTQuNTIzMiA3LjI0NTU5IDE0LjQzMDVMMS43NDU1OSAxMS4xODA1QzEuNTA3ODUgMTEuMDQgMS40MjkwMSAxMC43MzM0IDEuNTY5NDkgMTAuNDk1NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG9uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05IDJINlYxM0g5VjJaTTEwIDJWMTNIMTIuNUMxMi43NzYxIDEzIDEzIDEyLjc3NjEgMTMgMTIuNVYyLjVDMTMgMi4yMjM4NiAxMi43NzYxIDIgMTIuNSAySDEwWk0yLjUgMkg1VjEzSDIuNUMyLjIyMzg2IDEzIDIgMTIuNzc2MSAyIDEyLjVWMi41QzIgMi4yMjM4NiAyLjIyMzg2IDIgMi41IDJaTTIuNSAxQzEuNjcxNTcgMSAxIDEuNjcxNTcgMSAyLjVWMTIuNUMxIDEzLjMyODQgMS42NzE1NyAxNCAyLjUgMTRIMTIuNUMxMy4zMjg0IDE0IDE0IDEzLjMyODQgMTQgMTIuNVYyLjVDMTQgMS42NzE1NyAxMy4zMjg0IDEgMTIuNSAxSDIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGFuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjY4OTc5IDIuNzVDMy44OTY2NyAyLjc0OTc5IDQuMDgyMzIgMi44NzcwMSA0LjE1Njc5IDMuMDcwMDNMNy4zNjY2MiAxMS4zOUM3LjQ2NjAyIDExLjY0NzcgNy4zMzc3NCAxMS45MzcxIDcuMDgwMSAxMi4wMzY1QzYuODIyNDcgMTIuMTM1OSA2LjUzMzA0IDEyLjAwNzYgNi40MzM2NSAxMS43NUw1LjM4MjUgOS4wMjUzN0gyLjAxMTMzTDAuOTY2OTkyIDExLjc0OUMwLjg2ODEyOCAxMi4wMDY4IDAuNTc4OTY0IDEyLjEzNTcgMC4zMjExMjYgMTIuMDM2OUMwLjA2MzI4NzggMTEuOTM4IC0wLjA2NTU4NjQgMTEuNjQ4OCAwLjAzMzI3NzQgMTEuMzkxTDMuMjIzNDQgMy4wNzA5OUMzLjI5NzUxIDIuODc3ODIgMy40ODI5IDIuNzUwMjEgMy42ODk3OSAyLjc1Wk0zLjY5MTc0IDQuNjQyODRMNS4wNTQ1OCA4LjE3NTM3SDIuMzM3MjRMMy42OTE3NCA0LjY0Mjg0Wk0xMC44OTg5IDUuMjA3MDNDOS4yNTgxOCA1LjIwNzAzIDguMDA5MTUgNi42ODU2OSA4LjAwOTE1IDguNjA5NzJDOC4wMDkxNSAxMC42MzM3IDkuMzU4MTggMTIuMDEyNCAxMC44OTg5IDEyLjAxMjRDMTEuNzIxNCAxMi4wMTI0IDEyLjU3NDQgMTEuNjY5MiAxMy4xNTQzIDExLjAyMTlWMTEuNTNDMTMuMTU0MyAxMS43Nzg1IDEzLjM1NTcgMTEuOTggMTMuNjA0MyAxMS45OEMxMy44NTI4IDExLjk4IDE0LjA1NDMgMTEuNzc4NSAxNC4wNTQzIDExLjUzVjUuNzJDMTQuMDU0MyA1LjQ3MTQ3IDEzLjg1MjggNS4yNyAxMy42MDQzIDUuMjdDMTMuMzU1NyA1LjI3IDEzLjE1NDMgNS40NzE0NyAxMy4xNTQzIDUuNzJWNi4yMjMxN0MxMi42MDU0IDUuNjAwOTUgMTEuNzkyNCA1LjIwNzAzIDEwLjg5ODkgNS4yMDcwM1pNMTMuMTU0MyA5Ljc5ODIzVjcuMzAxOTVDMTIuNzYzOSA2LjU4MTAxIDExLjk0MTQgNi4wNTc1NyAxMS4wODY4IDYuMDU3NTdDMTAuMTA4OCA2LjA1NzU3IDkuMDM1MDMgNi45NjU4MSA5LjAzNTAzIDguNjA5NTVDOS4wMzUwMyAxMC4xNTMzIDEwLjAwODggMTEuMTYxNSAxMS4wODY4IDExLjE2MTVDMTEuOTcwMSAxMS4xNjE1IDEyLjc3MTkgMTAuNDk1MiAxMy4xNTQzIDkuNzk4MjNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxsbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy42OTg5OSA1LjIwNzAzQzIuMDU4MjMgNS4yMDcwMyAwLjgwOTIwNCA2LjY4NTY5IDAuODA5MjA0IDguNjA5NzJDMC44MDkyMDQgMTAuNjMzNyAyLjE1ODIzIDEyLjAxMjQgMy42OTg5OSAxMi4wMTI0QzQuNTIxMjYgMTIuMDEyNCA1LjM3NDAyIDExLjY2OTMgNS45NTM5IDExLjAyMjNWMTEuNTNDNS45NTM5IDExLjc3ODUgNi4xNTUzNyAxMS45OCA2LjQwMzkgMTEuOThDNi42NTI0MyAxMS45OCA2Ljg1MzkgMTEuNzc4NSA2Ljg1MzkgMTEuNTNWNS43MjAwMUM2Ljg1MzkgNS40NzE0OSA2LjY1MjQzIDUuMjcwMDEgNi40MDM5IDUuMjcwMDFDNi4xNTUzNyA1LjI3MDAxIDUuOTUzOSA1LjQ3MTQ5IDUuOTUzOSA1LjcyMDAxVjYuMjIyNjlDNS40MDUwNiA1LjYwMDc1IDQuNTkyMTggNS4yMDcwMyAzLjY5ODk5IDUuMjA3MDNaTTUuOTUzOSA5Ljc5OVY3LjMwMTE3QzUuNTYzMzkgNi41ODA2NCA0Ljc0MTE4IDYuMDU3NTcgMy44ODY4IDYuMDU3NTdDMi45MDg5IDYuMDU3NTcgMS44MzUwOCA2Ljk2NTgxIDEuODM1MDggOC42MDk1NUMxLjgzNTA4IDEwLjE1MzMgMi44MDg4OSAxMS4xNjE1IDMuODg2OCAxMS4xNjE1QzQuNzY5ODQgMTEuMTYxNSA1LjU3MTQxIDEwLjQ5NTcgNS45NTM5IDkuNzk5Wk0xMC43OTkgNS4yMDcwM0M5LjE1ODIzIDUuMjA3MDMgNy45MDkyIDYuNjg1NjkgNy45MDkyIDguNjA5NzJDNy45MDkyIDEwLjYzMzcgOS4yNTgyMyAxMi4wMTI0IDEwLjc5OSAxMi4wMTI0QzExLjYyMTUgMTIuMDEyNCAxMi40NzQ0IDExLjY2OTIgMTMuMDU0MyAxMS4wMjE4VjExLjUzQzEzLjA1NDMgMTEuNzc4NSAxMy4yNTU4IDExLjk4IDEzLjUwNDMgMTEuOThDMTMuNzUyOSAxMS45OCAxMy45NTQzIDExLjc3ODUgMTMuOTU0MyAxMS41M1Y1LjcyQzEzLjk1NDMgNS40NzE0NyAxMy43NTI5IDUuMjcgMTMuNTA0MyA1LjI3QzEzLjI1NTggNS4yNyAxMy4wNTQzIDUuNDcxNDcgMTMuMDU0MyA1LjcyVjYuMjIzMThDMTIuNTA1NSA1LjYwMDk1IDExLjY5MjQgNS4yMDcwMyAxMC43OTkgNS4yMDcwM1pNMTMuMDU0MyA5Ljc5ODIyVjcuMzAxOTZDMTIuNjY0IDYuNTgxMDIgMTEuODQxNSA2LjA1NzU3IDEwLjk4NjggNi4wNTc1N0MxMC4wMDg5IDYuMDU3NTcgOC45MzUwOCA2Ljk2NTgxIDguOTM1MDggOC42MDk1NUM4LjkzNTA4IDEwLjE1MzMgOS45MDg4OSAxMS4xNjE1IDEwLjk4NjggMTEuMTYxNUMxMS44NzAyIDExLjE2MTUgMTIuNjcyIDEwLjQ5NTIgMTMuMDU0MyA5Ljc5ODIyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sc249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjI4OTUgMi43NUMxMS40OTY0IDIuNzQ5NzkgMTEuNjgyMSAyLjg3NzAxIDExLjc1NjUgMy4wNzAwM0wxNC45NjY0IDExLjM5QzE1LjA2NTcgMTEuNjQ3NyAxNC45Mzc1IDExLjkzNzEgMTQuNjc5OCAxMi4wMzY1QzE0LjQyMjIgMTIuMTM1OSAxNC4xMzI4IDEyLjAwNzYgMTQuMDMzNCAxMS43NUwxMi45ODIyIDkuMDI1MzdIOS42MTEwNkw4LjU2NjcyIDExLjc0OUM4LjQ2Nzg2IDEyLjAwNjggOC4xNzg3IDEyLjEzNTcgNy45MjA4NiAxMi4wMzY5QzcuNjYzMDIgMTEuOTM4IDcuNTM0MTQgMTEuNjQ4OCA3LjYzMzAxIDExLjM5MUwxMC44MjMyIDMuMDcwOTlDMTAuODk3MiAyLjg3NzgyIDExLjA4MjYgMi43NTAyMSAxMS4yODk1IDIuNzVaTTExLjI5MTUgNC42NDI4NEwxMi42NTQzIDguMTc1MzdIOS45MzY5OEwxMS4yOTE1IDQuNjQyODRaTTIuODk4OTUgNS4yMDcwM0MxLjI1ODE4IDUuMjA3MDMgMC4wMDkxNTUyNyA2LjY4NTY5IDAuMDA5MTU1MjcgOC42MDk3MkMwLjAwOTE1NTI3IDEwLjYzMzcgMS4zNTgxOCAxMi4wMTI0IDIuODk4OTUgMTIuMDEyNEMzLjcyMTQxIDEyLjAxMjQgNC41NzQzOCAxMS42NjkyIDUuMTU0MjcgMTEuMDIxOVYxMS41M0M1LjE1NDI3IDExLjc3ODUgNS4zNTU3NCAxMS45OCA1LjYwNDI3IDExLjk4QzUuODUyOCAxMS45OCA2LjA1NDI3IDExLjc3ODUgNi4wNTQyNyAxMS41M1Y1LjcyQzYuMDU0MjcgNS40NzE0NyA1Ljg1MjggNS4yNyA1LjYwNDI3IDUuMjdDNS4zNTU3NCA1LjI3IDUuMTU0MjcgNS40NzE0NyA1LjE1NDI3IDUuNzJWNi4yMjMxN0M0LjYwNTQzIDUuNjAwOTUgMy43OTIzNiA1LjIwNzAzIDIuODk4OTUgNS4yMDcwM1pNNS4xNTQyNyA5Ljc5ODIzVjcuMzAxOTVDNC43NjM5MyA2LjU4MTAxIDMuOTQxNDQgNi4wNTc1NyAzLjA4Njc1IDYuMDU3NTdDMi4xMDg4NSA2LjA1NzU3IDEuMDM1MDMgNi45NjU4MSAxLjAzNTAzIDguNjA5NTVDMS4wMzUwMyAxMC4xNTMzIDIuMDA4ODUgMTEuMTYxNSAzLjA4Njc1IDExLjE2MTVDMy45NzAxMSAxMS4xNjE1IDQuNzcxOTUgMTAuNDk1MiA1LjE1NDI3IDkuNzk4MjNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxjbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy42MjU1IDIuNzVDMy44MzQ3OCAyLjc1IDQuMDIxOTIgMi44ODAzNCA0LjA5NDQ4IDMuMDc2NjRMNy4xNjk4NSAxMS4zOTYyQzcuMjY1NiAxMS42NTUyIDcuMTMzMjQgMTEuOTQyOCA2Ljg3NDIzIDEyLjAzODZDNi42MTUyMiAxMi4xMzQzIDYuMzI3NjMgMTIuMDAyIDYuMjMxODggMTEuNzQyOUw1LjIyMzg3IDkuMDE2MDNIMi4wMjcxMkwxLjAxOTExIDExLjc0MjlDMC45MjMzNjIgMTIuMDAyIDAuNjM1Nzc0IDEyLjEzNDMgMC4zNzY3NjIgMTIuMDM4NkMwLjExNzc0OSAxMS45NDI4IC0wLjAxNDYwNTIgMTEuNjU1MiAwLjA4MTE0MDEgMTEuMzk2MkwzLjE1NjUxIDMuMDc2NjRDMy4yMjkwOCAyLjg4MDM0IDMuNDE2MjEgMi43NSAzLjYyNTUgMi43NVpNMy42MjU1IDQuNjkyMDdMNC45MDk2NiA4LjE2NjAzSDIuMzQxMzNMMy42MjU1IDQuNjkyMDdaTTExLjM3MTkgMi43NUMxMS41ODExIDIuNzUgMTEuNzY4MyAyLjg4MDM0IDExLjg0MDggMy4wNzY2NEwxNC45MTYyIDExLjM5NjJDMTUuMDEyIDExLjY1NTIgMTQuODc5NiAxMS45NDI4IDE0LjYyMDYgMTIuMDM4NkMxNC4zNjE2IDEyLjEzNDMgMTQuMDc0IDEyLjAwMiAxMy45NzgyIDExLjc0MjlMMTIuOTcwMiA5LjAxNjAzSDkuNzczNDhMOC43NjU0NyAxMS43NDI5QzguNjY5NzIgMTIuMDAyIDguMzgyMTMgMTIuMTM0MyA4LjEyMzEyIDEyLjAzODZDNy44NjQxMSAxMS45NDI4IDcuNzMxNzUgMTEuNjU1MiA3LjgyNzUgMTEuMzk2MkwxMC45MDI5IDMuMDc2NjRDMTAuOTc1NCAyLjg4MDM0IDExLjE2MjYgMi43NSAxMS4zNzE5IDIuNzVaTTExLjM3MTkgNC42OTIwN0wxMi42NTYgOC4xNjYwM0gxMC4wODc3TDExLjM3MTkgNC42OTIwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHVuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjU1MjkzIDAuOTk5OTY5QzQuNzUyOTUgMC45OTk5NjkgNC45MzM3MiAxLjExOTE3IDUuMDEyNSAxLjMwMzAxTDguMDExMDYgOC4yOTk4MkM4LjExOTg0IDguNTUzNjMgOC4wMDIyNiA4Ljg0NzU3IDcuNzQ4NDQgOC45NTYzNUM3LjQ5NDYzIDkuMDY1MTIgNy4yMDA2OSA4Ljk0NzU0IDcuMDkxOTEgOC42OTM3M0w2LjExNjEzIDYuNDE2ODVIMi45ODk3M0wyLjAxMzk1IDguNjkzNzNDMS45MDUxNyA4Ljk0NzU0IDEuNjExMjMgOS4wNjUxMiAxLjM1NzQyIDguOTU2MzVDMS4xMDM2IDguODQ3NTcgMC45ODYwMjMgOC41NTM2MyAxLjA5NDggOC4yOTk4Mkw0LjA5MzM2IDEuMzAzMDFDNC4xNzIxNCAxLjExOTE3IDQuMzUyOTEgMC45OTk5NjkgNC41NTI5MyAwLjk5OTk2OVpNNC41NTI5MyAyLjc2OTI5TDUuNzUxODYgNS41NjY4NUgzLjM1NEw0LjU1MjkzIDIuNzY5MjlaTTExLjA1NjIgOS4wMDIxNEMxMS4yNjE3IDkuMDAyMTQgMTEuNDQ2MyA4Ljg3NjMzIDExLjUyMTUgOC42ODUwMkwxNC4yNzMzIDEuNjgyOTlDMTQuMzc0MyAxLjQyNTk4IDE0LjI0NzggMS4xMzU3NSAxMy45OTA4IDEuMDM0NzVDMTMuNzMzOCAwLjkzMzc0NyAxMy40NDM2IDEuMDYwMjEgMTMuMzQyNiAxLjMxNzIyTDExLjA1NjIgNy4xMzUxNEw4Ljc2OTczIDEuMzE3MjJDOC42Njg3MyAxLjA2MDIxIDguMzc4NSAwLjkzMzc0NyA4LjEyMTUgMS4wMzQ3NUM3Ljg2NDQ5IDEuMTM1NzUgNy43MzgwMiAxLjQyNTk4IDcuODM5MDIgMS42ODI5OUwxMC41OTA4IDguNjg1MDJDMTAuNjY2IDguODc2MzMgMTAuODUwNiA5LjAwMjE0IDExLjA1NjIgOS4wMDIxNFpNMTQuOTUzNyAxMi40OTk5QzE0Ljk1MzcgMTIuNjA2IDE0LjkxMTUgMTIuNzA3NyAxNC44MzY1IDEyLjc4MjhMMTIuODM2NSAxNC43ODI4QzEyLjY4MDMgMTQuOTM5IDEyLjQyNzEgMTQuOTM5IDEyLjI3MDggMTQuNzgyOEMxMi4xMTQ2IDE0LjYyNjUgMTIuMTE0NiAxNC4zNzMzIDEyLjI3MDggMTQuMjE3MUwxMy41ODggMTIuODk5OUgxLjUxOTM3TDIuODM2NTMgMTQuMjE3MUMyLjk5Mjc0IDE0LjM3MzMgMi45OTI3NCAxNC42MjY1IDIuODM2NTMgMTQuNzgyOEMyLjY4MDMyIDE0LjkzOSAyLjQyNzA1IDE0LjkzOSAyLjI3MDg0IDE0Ljc4MjhMMC4yNzA4NDMgMTIuNzgyOEMwLjE5NTgyOCAxMi43MDc3IDAuMTUzNjg3IDEyLjYwNiAwLjE1MzY4NyAxMi40OTk5QzAuMTUzNjg3IDEyLjM5MzggMC4xOTU4MjggMTIuMjkyMSAwLjI3MDg0MyAxMi4yMTcxTDIuMjcwODQgMTAuMjE3MUMyLjQyNzA1IDEwLjA2MDkgMi42ODAzMiAxMC4wNjA5IDIuODM2NTMgMTAuMjE3MUMyLjk5Mjc0IDEwLjM3MzMgMi45OTI3NCAxMC42MjY1IDIuODM2NTMgMTAuNzgyOEwxLjUxOTM3IDEyLjA5OTlMMTMuNTg4IDEyLjA5OTlMMTIuMjcwOCAxMC43ODI4QzEyLjExNDYgMTAuNjI2NSAxMi4xMTQ2IDEwLjM3MzMgMTIuMjcwOCAxMC4yMTcxQzEyLjQyNzEgMTAuMDYwOSAxMi42ODAzIDEwLjA2MDkgMTIuODM2NSAxMC4yMTcxTDE0LjgzNjUgMTIuMjE3MUMxNC45MTE1IDEyLjI5MjEgMTQuOTUzNyAxMi4zOTM4IDE0Ljk1MzcgMTIuNDk5OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGZuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjY5NjY2IDAuMDQwMzU0QzguOTA4NTkgMC4xMzEwMzggOS4wMzEwNSAwLjM1NDg1NiA4Ljk5MzE1IDAuNTgyMjM1TDguMDkwMTkgNi4wMDAwMUgxMi40OTk5QzEyLjY4OTMgNi4wMDAwMSAxMi44NjI1IDYuMTA3MDEgMTIuOTQ3MiA2LjI3NjRDMTMuMDMxOCA2LjQ0NTc5IDEzLjAxMzYgNi42NDg1IDEyLjg5OTkgNi44TDYuODk5OTcgMTQuOEM2Ljc2MTY2IDE0Ljk4NDQgNi41MTUyIDE1LjA1MDMgNi4zMDMyNyAxNC45NTk2QzYuMDkxMzQgMTQuODY5IDUuOTY4ODggMTQuNjQ1MSA2LjAwNjc4IDE0LjQxNzhMNi45MDk3NCA4Ljk5OTk5SDIuNDk5OTlDMi4zMTA2MSA4Ljk5OTk5IDIuMTM3NDcgOC44OTI5OSAyLjA1Mjc4IDguNzIzNkMxLjk2ODA4IDguNTU0MjEgMS45ODYzNiA4LjM1MTUgMi4wOTk5OSA4LjJMOC4wOTk5NiAwLjIwMDAzN0M4LjIzODI3IDAuMDE1NjI1NSA4LjQ4NDczIC0wLjA1MDMzMDEgOC42OTY2NiAwLjA0MDM1NFpNMy40OTk5OSA4SDcuNDk5OTZDNy42NDY5NCA4IDcuNzg2NDcgOC4wNjQ2NiA3Ljg4MTQ3IDguMTc2ODFDNy45NzY0NyA4LjI4ODk1IDguMDE3MzIgOC40MzcyMiA3Ljk5MzE2IDguNTgyMTlMNy4zMzAyNiAxMi41NTk2TDExLjQ5OTkgN0g3LjQ5OTk2QzcuMzUyOTkgNyA3LjIxMzQ2IDYuOTM1MzQgNy4xMTg0NiA2LjgyMzE5QzcuMDIzNDYgNi43MTEwNSA2Ljk4MjYxIDYuNTYyNzggNy4wMDY3NyA2LjQxNzgxTDcuNjY5NjcgMi40NDA0MkwzLjQ5OTk5IDhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxkbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy43ODIzMyAyLjIxNzEzQzMuNzA3MzIgMi4xNDIxMiAzLjYwNTU3IDIuMDk5OTggMy40OTk0OSAyLjA5OTk4QzMuMzkzNCAyLjA5OTk4IDMuMjkxNjYgMi4xNDIxMiAzLjIxNjY0IDIuMjE3MTNMMS4yMTY2NCA0LjIxNzEzQzEuMDYwNDQgNC4zNzMzNCAxLjA2MDQ0IDQuNjI2NjEgMS4yMTY2NCA0Ljc4MjgyQzEuMzcyODUgNC45MzkwMyAxLjYyNjEyIDQuOTM5MDMgMS43ODIzMyA0Ljc4MjgyTDMuMDk5NDkgMy40NjU2NkwzLjA5OTQ5IDExLjUzNDNMMS43ODIzMyAxMC4yMTcxQzEuNjI2MTIgMTAuMDYwOSAxLjM3Mjg1IDEwLjA2MDkgMS4yMTY2NCAxMC4yMTcxQzEuMDYwNDMgMTAuMzczMyAxLjA2MDQzIDEwLjYyNjYgMS4yMTY2NCAxMC43ODI4TDMuMjE2NjQgMTIuNzgyOEMzLjI5MTY2IDEyLjg1NzggMy4zOTM0IDEyLjkgMy40OTk0OSAxMi45QzMuNjA1NTcgMTIuOSAzLjcwNzMxIDEyLjg1NzggMy43ODIzMyAxMi43ODI4TDUuNzgyMzMgMTAuNzgyOEM1LjkzODU0IDEwLjYyNjYgNS45Mzg1NCAxMC4zNzMzIDUuNzgyMzMgMTAuMjE3MUM1LjYyNjEyIDEwLjA2MDkgNS4zNzI4NSAxMC4wNjA5IDUuMjE2NjQgMTAuMjE3MUwzLjg5OTQ5IDExLjUzNDNMMy44OTk0OSAzLjQ2NTY2TDUuMjE2NjQgNC43ODI4MkM1LjM3Mjg1IDQuOTM5MDMgNS42MjYxMiA0LjkzOTAzIDUuNzgyMzMgNC43ODI4MkM1LjkzODU0IDQuNjI2NjEgNS45Mzg1NCA0LjM3MzM0IDUuNzgyMzMgNC4yMTcxM0wzLjc4MjMzIDIuMjE3MTNaTTguNDk5OTggMy45OTk5N0M4LjIyMzgzIDMuOTk5OTcgNy45OTk5OCA0LjIyMzgyIDcuOTk5OTggNC40OTk5N0M3Ljk5OTk4IDQuNzc2MTEgOC4yMjM4MyA0Ljk5OTk3IDguNDk5OTggNC45OTk5N0gxNC41QzE0Ljc3NjEgNC45OTk5NyAxNSA0Ljc3NjExIDE1IDQuNDk5OTdDMTUgNC4yMjM4MiAxNC43NzYxIDMuOTk5OTcgMTQuNSAzLjk5OTk3SDguNDk5OThaTTcuOTk5OTggNy40OTk5N0M3Ljk5OTk4IDcuMjIzODIgOC4yMjM4MyA2Ljk5OTk3IDguNDk5OTggNi45OTk5N0gxNC41QzE0Ljc3NjEgNi45OTk5NyAxNSA3LjIyMzgyIDE1IDcuNDk5OTdDMTUgNy43NzYxMSAxNC43NzYxIDcuOTk5OTcgMTQuNSA3Ljk5OTk3SDguNDk5OThDOC4yMjM4MyA3Ljk5OTk3IDcuOTk5OTggNy43NzYxMSA3Ljk5OTk4IDcuNDk5OTdaTTguNDk5OTggOS45OTk5N0M4LjIyMzgzIDkuOTk5OTcgNy45OTk5OCAxMC4yMjM4IDcuOTk5OTggMTAuNUM3Ljk5OTk4IDEwLjc3NjEgOC4yMjM4MyAxMSA4LjQ5OTk4IDExSDE0LjVDMTQuNzc2MSAxMSAxNSAxMC43NzYxIDE1IDEwLjVDMTUgMTAuMjIzOCAxNC43NzYxIDkuOTk5OTcgMTQuNSA5Ljk5OTk3SDguNDk5OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxwbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC42MjQ3MSA0LjAwMDAxTDQuNTY0MDIgNC4wMDAwMUM0LjA0MTM0IDMuOTk5OTMgMy43MDY4NyAzLjk5OTg4IDMuNDE4MiA0LjA1NUMyLjIzNzkgNC4yODAzOSAxLjI5ODQ2IDUuMTcwNTMgMS4wNTgxNSA2LjMzMDM1QzAuOTk5NTM4IDYuNjEzMjEgMC45OTk2MDQgNi45Mzk5OCAwLjk5OTcwMyA3LjQzNjg5TDAuOTk5NzExIDcuNTAwMDFMMC45OTk3MDMgNy41NjMxM0MwLjk5OTYwNCA4LjA2MDA0IDAuOTk5NTM4IDguMzg2ODEgMS4wNTgxNSA4LjY2OTY3QzEuMjk4NDYgOS44Mjk1IDIuMjM3OSAxMC43MTk2IDMuNDE4MiAxMC45NDVDMy43MDY4OCAxMS4wMDAxIDQuMDQxMzUgMTEuMDAwMSA0LjU2NDAzIDExTDQuNjI0NzEgMTFINS40OTk3MUM1Ljc3NTg1IDExIDUuOTk5NzEgMTAuNzc2MiA1Ljk5OTcxIDEwLjVDNS45OTk3MSAxMC4yMjM5IDUuNzc1ODUgMTAgNS40OTk3MSAxMEg0LjYyNDcxQzQuMDIwODQgMTAgMy43ODkwNyA5Ljk5Nzc3IDMuNjA1NzcgOS45NjI3N0MyLjgwMjYyIDkuODA5NCAyLjE5MTU3IDkuMjExMDggMi4wMzczNSA4LjQ2Njc4QzIuMDAyMzMgOC4yOTc3OCAxLjk5OTcxIDguMDgyNTEgMS45OTk3MSA3LjUwMDAxQzEuOTk5NzEgNi45MTc1MiAyLjAwMjMzIDYuNzAyMjUgMi4wMzczNSA2LjUzMzI0QzIuMTkxNTcgNS43ODg5NSAyLjgwMjYyIDUuMTkwNjIgMy42MDU3NyA1LjAzNzI1QzMuNzg5MDcgNS4wMDIyNSA0LjAyMDg0IDUuMDAwMDEgNC42MjQ3MSA1LjAwMDAxSDUuNDk5NzFDNS43NzU4NSA1LjAwMDAxIDUuOTk5NzEgNC43NzYxNSA1Ljk5OTcxIDQuNTAwMDFDNS45OTk3MSA0LjIyMzg3IDUuNzc1ODUgNC4wMDAwMSA1LjQ5OTcxIDQuMDAwMDFINC42MjQ3MVpNMTAuMzc0NyA1LjAwMDAxQzEwLjk3ODYgNS4wMDAwMSAxMS4yMTA0IDUuMDAyMjUgMTEuMzkzNyA1LjAzNzI1QzEyLjE5NjggNS4xOTA2MiAxMi44MDc5IDUuNzg4OTUgMTIuOTYyMSA2LjUzMzI0QzEyLjk5NzEgNi43MDIyNSAxMi45OTk3IDYuOTE3NTIgMTIuOTk5NyA3LjUwMDAxQzEyLjk5OTcgOC4wODI1MSAxMi45OTcxIDguMjk3NzggMTIuOTYyMSA4LjQ2Njc4QzEyLjgwNzkgOS4yMTEwOCAxMi4xOTY4IDkuODA5NCAxMS4zOTM3IDkuOTYyNzdDMTEuMjEwNCA5Ljk5Nzc3IDEwLjk3ODYgMTAgMTAuMzc0NyAxMEg5LjQ5OTcxQzkuMjIzNTcgMTAgOC45OTk3MSAxMC4yMjM5IDguOTk5NzEgMTAuNUM4Ljk5OTcxIDEwLjc3NjIgOS4yMjM1NyAxMSA5LjQ5OTcxIDExSDEwLjM3NDdMMTAuNDM1NCAxMUMxMC45NTgxIDExLjAwMDEgMTEuMjkyNSAxMS4wMDAxIDExLjU4MTIgMTAuOTQ1QzEyLjc2MTUgMTAuNzE5NiAxMy43MDEgOS44Mjk1IDEzLjk0MTMgOC42Njk2N0MxMy45OTk5IDguMzg2ODEgMTMuOTk5OCA4LjA2MDA1IDEzLjk5OTcgNy41NjMxNEwxMy45OTk3IDcuNTAwMDFMMTMuOTk5NyA3LjQzNjg4QzEzLjk5OTggNi45Mzk5OCAxMy45OTk5IDYuNjEzMjEgMTMuOTQxMyA2LjMzMDM1QzEzLjcwMSA1LjE3MDUzIDEyLjc2MTUgNC4yODAzOSAxMS41ODEyIDQuMDU1QzExLjI5MjUgMy45OTk4OCAxMC45NTgxIDMuOTk5OTMgMTAuNDM1NCA0LjAwMDAxTDEwLjM3NDcgNC4wMDAwMUg5LjQ5OTcxQzkuMjIzNTcgNC4wMDAwMSA4Ljk5OTcxIDQuMjIzODcgOC45OTk3MSA0LjUwMDAxQzguOTk5NzEgNC43NzYxNSA5LjIyMzU3IDUuMDAwMDEgOS40OTk3MSA1LjAwMDAxSDEwLjM3NDdaTTUuMDAwMzggN0M0LjcyNDI0IDcgNC41MDAzOCA3LjIyMzg2IDQuNTAwMzggNy41QzQuNTAwMzggNy43NzYxNCA0LjcyNDI0IDggNS4wMDAzOCA4SDEwLjAwMDRDMTAuMjc2NSA4IDEwLjUwMDQgNy43NzYxNCAxMC41MDA0IDcuNUMxMC41MDA0IDcuMjIzODYgMTAuMjc2NSA3IDEwLjAwMDQgN0g1LjAwMDM4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguNTExOTQgMy4wMDU0MUM5LjE4ODI5IDIuNTQ1OTQgMTAuMDQzNSAyLjUzNjk0IDEwLjY3ODggMi45NTQxOUMxMC44MjMxIDMuMDQ4OTMgMTAuOTc3MSAzLjE5OTMgMTEuMzg5IDMuNjExMTlDMTEuODAwOSA0LjAyMzA3IDExLjk1MTMgNC4xNzcxNCAxMi4wNDYgNC4zMjE0MUMxMi40NjMzIDQuOTU2NzUgMTIuNDU0MyA1LjgxMTkyIDExLjk5NDggNi40ODgyN0MxMS44ODk5IDYuNjQyNjQgMTEuNzI3NiA2LjgwODExIDExLjMwMDYgNy4yMzUxMUwxMC42ODE5IDcuODUzODNDMTAuNDg2NyA4LjA0OTA5IDEwLjQ4NjcgOC4zNjU2NyAxMC42ODE5IDguNTYwOTNDMTAuODc3MiA4Ljc1NjIgMTEuMTkzOCA4Ljc1NjIgMTEuMzg5IDguNTYwOTNMMTIuMDA3NyA3Ljk0MjIxTDEyLjA1MDcgNy44OTkyOUMxMi40MjAzIDcuNTI5NzYgMTIuNjU2OCA3LjI5MzMgMTIuODIyIDcuMDUwMkMxMy40OTcyIDYuMDU2MjMgMTMuNTMyMSA0Ljc2MjUyIDEyLjg4MTkgMy43NzI0OEMxMi43MjMzIDMuNTMxMDIgMTIuNDkyMiAzLjMwMDAxIDEyLjE0MDggMi45NDg3MUwxMi4wOTYxIDIuOTA0MDhMMTIuMDUxNSAyLjg1OTQyQzExLjcwMDIgMi41MDggMTEuNDY5MiAyLjI3Njg5IDExLjIyNzcgMi4xMTgzMkMxMC4yMzc3IDEuNDY4MTMgOC45NDM5OCAxLjUwMjk5IDcuOTUwMDEgMi4xNzgyMkM3LjcwNjkxIDIuMzQzMzYgNy40NzA0NCAyLjU3OTkxIDcuMTAwOSAyLjk0OTU1TDcuMDU4IDIuOTkyNDdMNi40MzkyOCAzLjYxMTE5QzYuMjQ0MDEgMy44MDY0NSA2LjI0NDAxIDQuMTIzMDMgNi40MzkyOCA0LjMxODI5QzYuNjM0NTQgNC41MTM1NSA2Ljk1MTEyIDQuNTEzNTUgNy4xNDYzOCA0LjMxODI5TDcuNzY1MSAzLjY5OTU3QzguMTkyMSAzLjI3MjU3IDguMzU3NTcgMy4xMTAyNyA4LjUxMTk0IDMuMDA1NDFaTTQuMzE3OTYgNy4xNDY3MkM0LjUxMzIyIDYuOTUxNDYgNC41MTMyMiA2LjYzNDg3IDQuMzE3OTYgNi40Mzk2MUM0LjEyMjY5IDYuMjQ0MzUgMy44MDYxMSA2LjI0NDM1IDMuNjEwODUgNi40Mzk2MUwyLjk5MjEzIDcuMDU4MzNMMi45NDkyMiA3LjEwMTI0QzIuNTc5NTcgNy40NzA3NyAyLjM0MzAzIDcuNzA3MjQgMi4xNzc4OCA3Ljk1MDM1QzEuNTAyNjUgOC45NDQzMiAxLjQ2NzggMTAuMjM4IDIuMTE3OTkgMTEuMjI4MUMyLjI3NjU2IDExLjQ2OTUgMi41MDc2NiAxMS43MDA1IDIuODU5MSAxMi4wNTE4TDIuOTAzNzQgMTIuMDk2NUwyLjk0ODM3IDEyLjE0MTFDMy4yOTk2NyAxMi40OTI1IDMuNTMwNjggMTIuNzIzNyAzLjc3MjE0IDEyLjg4MjJDNC43NjIxOSAxMy41MzI0IDYuMDU1ODkgMTMuNDk3NiA3LjA0OTg2IDEyLjgyMjNDNy4yOTI5NiAxMi42NTcyIDcuNTI5NDMgMTIuNDIwNiA3Ljg5ODk2IDEyLjA1MUw3Ljg5ODk3IDEyLjA1MUw3Ljk0MTg4IDEyLjAwODFMOC41NjA2IDExLjM4OTRDOC43NTU4NiAxMS4xOTQxIDguNzU1ODYgMTAuODc3NSA4LjU2MDYgMTAuNjgyM0M4LjM2NTMzIDEwLjQ4NyA4LjA0ODc1IDEwLjQ4NyA3Ljg1MzQ5IDEwLjY4MjNMNy4yMzQ3NyAxMS4zMDFDNi44MDc3NyAxMS43MjggNi42NDIzIDExLjg5MDMgNi40ODc5NCAxMS45OTUxQzUuODExNTggMTIuNDU0NiA0Ljk1NjQyIDEyLjQ2MzYgNC4zMjEwNyAxMi4wNDY0QzQuMTc2ODEgMTEuOTUxNiA0LjAyMjc0IDExLjgwMTIgMy42MTA4NSAxMS4zODk0QzMuMTk4OTYgMTAuOTc3NSAzLjA0ODYgMTAuODIzNCAyLjk1Mzg1IDEwLjY3OTFDMi41MzY2MSAxMC4wNDM4IDIuNTQ1NjEgOS4xODg2MyAzLjAwNTA3IDguNTEyMjdDMy4xMDk5MyA4LjM1NzkxIDMuMjcyMjQgOC4xOTI0NCAzLjY5OTI0IDcuNzY1NDRMNC4zMTc5NiA3LjE0NjcyWk05LjYyMTcyIDYuMDg1NThDOS44MTY5OCA1Ljg5MDMyIDkuODE2OTggNS41NzM3MyA5LjYyMTcyIDUuMzc4NDdDOS40MjY0NiA1LjE4MzIxIDkuMTA5ODggNS4xODMyMSA4LjkxNDYxIDUuMzc4NDdMNS4zNzkwOCA4LjkxNDAxQzUuMTgzODIgOS4xMDkyNyA1LjE4MzgyIDkuNDI1ODUgNS4zNzkwOCA5LjYyMTExQzUuNTc0MzQgOS44MTYzNyA1Ljg5MDkyIDkuODE2MzcgNi4wODYxOSA5LjYyMTExTDkuNjIxNzIgNi4wODU1OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHZuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy4zNTM2IDIuMzUzNTVDMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMS44NDE3MSAxMy4zNTM2IDEuNjQ2NDVDMTMuMTU4MyAxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMi42NDY0IDEuNjQ2NDVMMS42NDY0NSAxMi42NDY0QzEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEzLjE1ODMgMS42NDY0NSAxMy4zNTM2QzEuODQxNzEgMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMi4zNTM1NSAxMy4zNTM2TDEzLjM1MzYgMi4zNTM1NVpNMi4wMzczNSA4LjQ2Njc4QzIuMTczOTggOS4xMjYxOSAyLjY2OTE4IDkuNjcxMDMgMy4zMzg4NiA5Ljg5MzM4TDIuNTc4MzMgMTAuNjUzOUMxLjgwODQzIDEwLjI1MzQgMS4yMzc4NCA5LjUzNjkzIDEuMDU4MTUgOC42Njk2N0MwLjk5OTUzOCA4LjM4NjgxIDAuOTk5NjA0IDguMDYwMDQgMC45OTk3MDMgNy41NjMxM0wwLjk5OTcxMSA3LjUwMDAxTDAuOTk5NzAzIDcuNDM2ODlDMC45OTk2MDQgNi45Mzk5OCAwLjk5OTUzOCA2LjYxMzIxIDEuMDU4MTUgNi4zMzAzNUMxLjI5ODQ2IDUuMTcwNTMgMi4yMzc5IDQuMjgwMzkgMy40MTgyIDQuMDU1QzMuNzA2ODcgMy45OTk4OCA0LjA0MTM0IDMuOTk5OTMgNC41NjQwMiA0LjAwMDAxTDQuNjI0NzEgNC4wMDAwMUg1LjQ5OTcxQzUuNzc1ODUgNC4wMDAwMSA1Ljk5OTcxIDQuMjIzODcgNS45OTk3MSA0LjUwMDAxQzUuOTk5NzEgNC43NzYxNSA1Ljc3NTg1IDUuMDAwMDEgNS40OTk3MSA1LjAwMDAxSDQuNjI0NzFDNC4wMjA4NCA1LjAwMDAxIDMuNzg5MDcgNS4wMDIyNSAzLjYwNTc3IDUuMDM3MjVDMi44MDI2MiA1LjE5MDYyIDIuMTkxNTcgNS43ODg5NSAyLjAzNzM1IDYuNTMzMjRDMi4wMDIzMyA2LjcwMjI1IDEuOTk5NzEgNi45MTc1MiAxLjk5OTcxIDcuNTAwMDFDMS45OTk3MSA4LjA4MjUxIDIuMDAyMzMgOC4yOTc3OCAyLjAzNzM1IDguNDY2NzhaTTEyLjk2MjEgNi41MzMyNEMxMi44MjU1IDUuODczOTcgMTIuMzMwNCA1LjMyOTIyIDExLjY2MSA1LjEwNjc5TDEyLjQyMTUgNC4zNDYzMUMxMy4xOTEyIDQuNzQ2ODYgMTMuNzYxNiA1LjQ2MzIzIDEzLjk0MTMgNi4zMzAzNUMxMy45OTk5IDYuNjEzMjEgMTMuOTk5OCA2LjkzOTk4IDEzLjk5OTcgNy40MzY4OEwxMy45OTk3IDcuNTAwMDFMMTMuOTk5NyA3LjU2MzE0QzEzLjk5OTggOC4wNjAwNSAxMy45OTk5IDguMzg2ODEgMTMuOTQxMyA4LjY2OTY3QzEzLjcwMSA5LjgyOTUgMTIuNzYxNSAxMC43MTk2IDExLjU4MTIgMTAuOTQ1QzExLjI5MjUgMTEuMDAwMSAxMC45NTgxIDExLjAwMDEgMTAuNDM1NCAxMUwxMC4zNzQ3IDExSDkuNDk5NzFDOS4yMjM1NyAxMSA4Ljk5OTcxIDEwLjc3NjIgOC45OTk3MSAxMC41QzguOTk5NzEgMTAuMjIzOSA5LjIyMzU3IDEwIDkuNDk5NzEgMTBIMTAuMzc0N0MxMC45Nzg2IDEwIDExLjIxMDQgOS45OTc3NyAxMS4zOTM3IDkuOTYyNzdDMTIuMTk2OCA5LjgwOTQgMTIuODA3OSA5LjIxMTA4IDEyLjk2MjEgOC40NjY3OEMxMi45OTcxIDguMjk3NzggMTIuOTk5NyA4LjA4MjUxIDEyLjk5OTcgNy41MDAwMUMxMi45OTk3IDYuOTE3NTIgMTIuOTk3MSA2LjcwMjI1IDEyLjk2MjEgNi41MzMyNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGduPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjUwMDIxIDBDNC43NzYzNSAwIDUuMDAwMiAwLjIyMzg1MyA1LjAwMDIgMC40OTk5OVYyLjQ5OTk1QzUuMDAwMiAyLjc3NjA5IDQuNzc2MzUgMi45OTk5NCA0LjUwMDIxIDIuOTk5OTRDNC4yMjQwOCAyLjk5OTk0IDQuMDAwMjIgMi43NzYwOSA0LjAwMDIyIDIuNDk5OTVWMC40OTk5OUM0LjAwMDIyIDAuMjIzODUzIDQuMjI0MDggMCA0LjUwMDIxIDBaTTAuNjQ2NDUxIDAuNjQ2NDdDMC44NDE3MSAwLjQ1MTIxMiAxLjE1ODI5IDAuNDUxMjEyIDEuMzUzNTQgMC42NDY0N0wyLjg1MzUxIDIuMTQ2NDRDMy4wNDg3NyAyLjM0MTcgMy4wNDg3NyAyLjY1ODI3IDIuODUzNTEgMi44NTM1M0MyLjY1ODI2IDMuMDQ4NzkgMi4zNDE2OCAzLjA0ODc5IDIuMTQ2NDIgMi44NTM1M0wwLjY0NjQ1MiAxLjM1MzU2QzAuNDUxMTkzIDEuMTU4MyAwLjQ1MTE5MyAwLjg0MTcyOCAwLjY0NjQ1MSAwLjY0NjQ3Wk0wLjAwMDMwNTE3IDQuNDk5OTFDMC4wMDAzMDUxNyA0LjIyMzc3IDAuMjI0MTU4IDMuOTk5OTIgMC41MDAyOTUgMy45OTk5MkgyLjUwMDI1QzIuNzc2MzkgMy45OTk5MiAzLjAwMDI0IDQuMjIzNzcgMy4wMDAyNCA0LjQ5OTkxQzMuMDAwMjQgNC43NzYwNSAyLjc3NjM5IDQuOTk5OSAyLjUwMDI1IDQuOTk5OUgwLjUwMDI5NUMwLjIyNDE1OCA0Ljk5OTkgMC4wMDAzMDUxNyA0Ljc3NjA1IDAuMDAwMzA1MTcgNC40OTk5MVpNMTIuMDAwMSAxMC40OTk4QzEyLjAwMDEgMTAuMjIzNiAxMi4yMjM5IDkuOTk5OCAxMi41MDAxIDkuOTk5OEgxNC41QzE0Ljc3NjEgOS45OTk4IDE1IDEwLjIyMzYgMTUgMTAuNDk5OEMxNSAxMC43NzU5IDE0Ljc3NjEgMTAuOTk5OCAxNC41IDEwLjk5OThIMTIuNTAwMUMxMi4yMjM5IDEwLjk5OTggMTIuMDAwMSAxMC43NzU5IDEyLjAwMDEgMTAuNDk5OFpNMTAuNTAwMSAxMS45OTk4QzEwLjc3NjIgMTEuOTk5OCAxMS4wMDAxIDEyLjIyMzYgMTEuMDAwMSAxMi40OTk3VjE0LjQ5OTdDMTEuMDAwMSAxNC43NzU4IDEwLjc3NjIgMTQuOTk5NyAxMC41MDAxIDE0Ljk5OTdDMTAuMjI0IDE0Ljk5OTcgMTAuMDAwMSAxNC43NzU4IDEwLjAwMDEgMTQuNDk5N1YxMi40OTk3QzEwLjAwMDEgMTIuMjIzNiAxMC4yMjQgMTEuOTk5OCAxMC41MDAxIDExLjk5OThaTTEyLjE0NjIgMTIuMTQ2MkMxMi4zNDE1IDExLjk1MSAxMi42NTggMTEuOTUxIDEyLjg1MzMgMTIuMTQ2MkwxNC4zNTMzIDEzLjY0NjJDMTQuNTQ4NSAxMy44NDE1IDE0LjU0ODUgMTQuMTU4IDE0LjM1MzMgMTQuMzUzM0MxNC4xNTggMTQuNTQ4NSAxMy44NDE0IDE0LjU0ODUgMTMuNjQ2MiAxNC4zNTMzTDEyLjE0NjIgMTIuODUzM0MxMS45NTEgMTIuNjU4MSAxMS45NTEgMTIuMzQxNSAxMi4xNDYyIDEyLjE0NjJaTTcuNzY0NzggMy42OTkzOEM4LjE5MTc3IDMuMjcyMzggOC4zNTcyNCAzLjExMDA4IDguNTExNiAzLjAwNTIyQzkuMTg3OTQgMi41NDU3NyAxMC4wNDMxIDIuNTM2NzcgMTAuNjc4NCAyLjk1NDAxQzEwLjgyMjcgMy4wNDg3NSAxMC45NzY3IDMuMTk5MTEgMTEuMzg4NiAzLjYxMDk5QzExLjgwMDUgNC4wMjI4NyAxMS45NTA5IDQuMTc2OTQgMTIuMDQ1NiA0LjMyMTJDMTIuNDYyOCA0Ljk1NjUzIDEyLjQ1MzkgNS44MTE2OCAxMS45OTQ0IDYuNDg4MDJDMTEuODg5NSA2LjY0MjM4IDExLjcyNzIgNi44MDc4NSAxMS4zMDAyIDcuMjM0ODRMMTAuNjgxNSA3Ljg1MzU0QzEwLjQ4NjMgOC4wNDg4IDEwLjQ4NjMgOC4zNjUzOCAxMC42ODE1IDguNTYwNjRDMTAuODc2OCA4Ljc1NTg5IDExLjE5MzQgOC43NTU4OSAxMS4zODg2IDguNTYwNjRMMTIuMDA3MyA3Ljk0MTkzTDEyLjA1MDIgNy44OTkwM0MxMi40MTk5IDcuNTI5NSAxMi42NTY0IDcuMjkzMDMgMTIuODIxNiA3LjA0OTkzQzEzLjQ5NjggNi4wNTU5OCAxMy41MzE2IDQuNzYyMyAxMi44ODE1IDMuNzcyMjhDMTIuNzIyOSAzLjUzMDgzIDEyLjQ5MTggMy4yOTk4MiAxMi4xNDA0IDIuOTQ4NTNMMTIuMDk1NyAyLjkwMzlMMTIuMDUxMSAyLjg1OTI1QzExLjY5OTggMi41MDc4MiAxMS40Njg4IDIuMjc2NzIgMTEuMjI3MyAyLjExODE2QzEwLjIzNzMgMS40Njc5OCA4Ljk0MzY0IDEuNTAyODQgNy45NDk2OCAyLjE3ODA1QzcuNzA2NTkgMi4zNDMxOSA3LjQ3MDEyIDIuNTc5NzMgNy4xMDA2IDIuOTQ5MzZMNy4xMDA2IDIuOTQ5MzdMNy4wNTc2OSAyLjk5MjI4TDYuNDM4OTggMy42MTA5OUM2LjI0MzcyIDMuODA2MjUgNi4yNDM3MiA0LjEyMjgyIDYuNDM4OTggNC4zMTgwOEM2LjYzNDI0IDQuNTEzMzQgNi45NTA4MSA0LjUxMzM0IDcuMTQ2MDcgNC4zMTgwOEw3Ljc2NDc4IDMuNjk5MzhaTTIuOTkxOTEgNy4wNTgwN0wyLjk0ODk5IDcuMTAwOTdDMi41NzkzNSA3LjQ3MDUgMi4zNDI4MiA3LjcwNjk3IDIuMTc3NjcgNy45NTAwNkMxLjUwMjQ2IDguOTQ0MDEgMS40Njc2IDEwLjIzNzcgMi4xMTc3OCAxMS4yMjc3QzIuMjc2MzQgMTEuNDY5MiAyLjUwNzQ0IDExLjcwMDIgMi44NTg4NiAxMi4wNTE1TDIuODU4ODggMTIuMDUxNUwyLjkwMzUyIDEyLjA5NjFMMi45NDgxNSAxMi4xNDA3TDIuOTQ4MTUgMTIuMTQwN0wyLjk0ODE3IDEyLjE0MDhDMy4yOTk0NSAxMi40OTIyIDMuNTMwNDUgMTIuNzIzMyAzLjc3MTkgMTIuODgxOEM0Ljc2MTkzIDEzLjUzMiA2LjA1NTYgMTMuNDk3MiA3LjA0OTU2IDEyLjgyMTlDNy4yOTI2NSAxMi42NTY4IDcuNTI5MTIgMTIuNDIwMyA3Ljg5ODY1IDEyLjA1MDZMNy45NDE1NSAxMi4wMDc3TDguNTYwMjYgMTEuMzg5QzguNzU1NTIgMTEuMTkzNyA4Ljc1NTUyIDEwLjg3NzIgOC41NjAyNiAxMC42ODE5QzguMzY1IDEwLjQ4NjcgOC4wNDg0MiAxMC40ODY3IDcuODUzMTcgMTAuNjgxOUw3LjIzNDQ2IDExLjMwMDZDNi44MDc0NyAxMS43Mjc2IDYuNjQyIDExLjg4OTkgNi40ODc2NCAxMS45OTQ4QzUuODExMyAxMi40NTQyIDQuOTU2MTUgMTIuNDYzMiA0LjMyMDgyIDEyLjA0NkM0LjE3NjU2IDExLjk1MTIgNC4wMjI0OSAxMS44MDA5IDMuNjEwNjEgMTEuMzg5QzMuMTk4NzMgMTAuOTc3MSAzLjA0ODM3IDEwLjgyMzEgMi45NTM2MyAxMC42Nzg4QzIuNTM2MzkgMTAuMDQzNSAyLjU0NTM5IDkuMTg4MzIgMy4wMDQ4NCA4LjUxMTk4QzMuMTA5NzEgOC4zNTc2MSAzLjI3MjAxIDguMTkyMTUgMy42OTkgNy43NjUxNkw0LjMxNzcgNy4xNDY0NUM0LjUxMjk2IDYuOTUxMTkgNC41MTI5NiA2LjYzNDYyIDQuMzE3NyA2LjQzOTM2QzQuMTIyNDUgNi4yNDQxIDMuODA1ODcgNi4yNDQxIDMuNjEwNjEgNi40MzkzNkwyLjk5MTkxIDcuMDU4MDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxDbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC41NjQyNyAzLjk5OTg4QzQuNTg0MjIgMy45OTk4OSA0LjYwNDQ1IDMuOTk5ODkgNC42MjQ5NiAzLjk5OTg5SDUuNDk5OTZDNS43NzYxIDMuOTk5ODkgNS45OTk5NiA0LjIyMzc1IDUuOTk5OTYgNC40OTk4OUM1Ljk5OTk2IDQuNzc2MDMgNS43NzYxIDQuOTk5ODkgNS40OTk5NiA0Ljk5OTg5SDQuNjI0OTZDNC4wMjEwOCA0Ljk5OTg5IDMuNzg5MzIgNS4wMDIxMyAzLjYwNjAxIDUuMDM3MTNDMi44MDI4NyA1LjE5MDUgMi4xOTE4MSA1Ljc4ODgzIDIuMDM3NTkgNi41MzMxMkMyLjAwMjU3IDYuNzAyMTIgMS45OTk5NiA2LjkxNzM5IDEuOTk5OTYgNy40OTk4OUMxLjk5OTk2IDguMDgyMzkgMi4wMDI1NyA4LjI5NzY2IDIuMDM3NTkgOC40NjY2NkMyLjE5MTgxIDkuMjEwOTUgMi44MDI4NyA5LjgwOTI4IDMuNjA2MDEgOS45NjI2NUMzLjc4OTMyIDkuOTk3NjUgNC4wMjEwOCA5Ljk5OTg5IDQuNjI0OTYgOS45OTk4OUg1LjQ5OTk2QzUuNzc2MSA5Ljk5OTg5IDUuOTk5OTYgMTAuMjIzNyA1Ljk5OTk2IDEwLjQ5OTlDNS45OTk5NiAxMC43NzYgNS43NzYxIDEwLjk5OTkgNS40OTk5NiAxMC45OTk5SDQuNjI0OTZDNC42MDQ0NSAxMC45OTk5IDQuNTg0MjIgMTAuOTk5OSA0LjU2NDI3IDEwLjk5OTlDNC4wNDE1OSAxMSAzLjcwNzEyIDExIDMuNDE4NDUgMTAuOTQ0OUMyLjIzODE0IDEwLjcxOTUgMS4yOTg3MSA5LjgyOTM3IDEuMDU4MzkgOC42Njk1NUMwLjk5OTc4MiA4LjM4NjY5IDAuOTk5ODQ4IDguMDU5OTIgMC45OTk5NDcgNy41NjMwMUMwLjk5OTk1MSA3LjU0MjI3IDAuOTk5OTU1IDcuNTIxMjMgMC45OTk5NTUgNy40OTk4OUMwLjk5OTk1NSA3LjQ3ODU1IDAuOTk5OTUxIDcuNDU3NTEgMC45OTk5NDcgNy40MzY3N0MwLjk5OTg0OCA2LjkzOTg2IDAuOTk5NzgyIDYuNjEzMDkgMS4wNTgzOSA2LjMzMDIzQzEuMjk4NzEgNS4xNzA0MSAyLjIzODE0IDQuMjgwMjcgMy40MTg0NSA0LjA1NDg4QzMuNzA3MTIgMy45OTk3NiA0LjA0MTU5IDMuOTk5ODEgNC41NjQyNyAzLjk5OTg4Wk0xMS4zOTM5IDUuMDM3MTNDMTEuMjEwNiA1LjAwMjEzIDEwLjk3ODggNC45OTk4OSAxMC4zNzUgNC45OTk4OUg5LjQ5OTk2QzkuMjIzODEgNC45OTk4OSA4Ljk5OTk2IDQuNzc2MDMgOC45OTk5NiA0LjQ5OTg5QzguOTk5OTYgNC4yMjM3NSA5LjIyMzgxIDMuOTk5ODkgOS40OTk5NiAzLjk5OTg5SDEwLjM3NUMxMC4zOTU1IDMuOTk5ODkgMTAuNDE1NyAzLjk5OTg5IDEwLjQzNTYgMy45OTk4OEMxMC45NTgzIDMuOTk5ODEgMTEuMjkyOCAzLjk5OTc2IDExLjU4MTUgNC4wNTQ4OEMxMi43NjE4IDQuMjgwMjcgMTMuNzAxMiA1LjE3MDQxIDEzLjk0MTUgNi4zMzAyM0MxNC4wMDAxIDYuNjEzMDkgMTQuMDAwMSA2LjkzOTg1IDE0IDcuNDM2NzZDMTQgNy40NTc1IDE0IDcuNDc4NTQgMTQgNy40OTk4OUMxNCA3LjUyMTI0IDE0IDcuNTQyMjggMTQgNy41NjMwMkMxNC4wMDAxIDguMDU5OTIgMTQuMDAwMSA4LjM4NjY5IDEzLjk0MTUgOC42Njk1NUMxMy43MDEyIDkuODI5MzcgMTIuNzYxOCAxMC43MTk1IDExLjU4MTUgMTAuOTQ0OUMxMS4yOTI4IDExIDEwLjk1ODMgMTEgMTAuNDM1NiAxMC45OTk5QzEwLjQxNTcgMTAuOTk5OSAxMC4zOTU1IDEwLjk5OTkgMTAuMzc1IDEwLjk5OTlIOS40OTk5NkM5LjIyMzgxIDEwLjk5OTkgOC45OTk5NiAxMC43NzYgOC45OTk5NiAxMC40OTk5QzguOTk5OTYgMTAuMjIzNyA5LjIyMzgxIDkuOTk5ODkgOS40OTk5NiA5Ljk5OTg5SDEwLjM3NUMxMC45Nzg4IDkuOTk5ODkgMTEuMjEwNiA5Ljk5NzY1IDExLjM5MzkgOS45NjI2NUMxMi4xOTcgOS44MDkyOCAxMi44MDgxIDkuMjEwOTUgMTIuOTYyMyA4LjQ2NjY2QzEyLjk5NzMgOC4yOTc2NiAxMyA4LjA4MjM5IDEzIDcuNDk5ODlDMTMgNi45MTczOSAxMi45OTczIDYuNzAyMTIgMTIuOTYyMyA2LjUzMzEyQzEyLjgwODEgNS43ODg4MyAxMi4xOTcgNS4xOTA1IDExLjM5MzkgNS4wMzcxM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG1uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMC42Nzg4IDIuOTU0MTlDMTAuMDQzNSAyLjUzNjk0IDkuMTg4MjkgMi41NDU5NCA4LjUxMTk0IDMuMDA1NDFDOC4zNTc1NyAzLjExMDI3IDguMTkyMSAzLjI3MjU3IDcuNzY1MSAzLjY5OTU3TDcuMTQ2MzggNC4zMTgyOUM2Ljk1MTEyIDQuNTEzNTUgNi42MzQ1NCA0LjUxMzU1IDYuNDM5MjggNC4zMTgyOUM2LjI0NDAxIDQuMTIzMDMgNi4yNDQwMSAzLjgwNjQ1IDYuNDM5MjggMy42MTExOUw3LjA1OCAyLjk5MjQ3QzcuMDcyNSAyLjk3Nzk3IDcuMDg2NzkgMi45NjM2NiA3LjEwMDkgMi45NDk1NUM3LjQ3MDQ0IDIuNTc5OTEgNy43MDY5MSAyLjM0MzM2IDcuOTUwMDEgMi4xNzgyMkM4Ljk0Mzk4IDEuNTAyOTkgMTAuMjM3NyAxLjQ2ODEzIDExLjIyNzcgMi4xMTgzMkMxMS40NjkyIDIuMjc2ODkgMTEuNzAwMiAyLjUwOCAxMi4wNTE1IDIuODU5NDJDMTIuMDY2MiAyLjg3NDEgMTIuMDgxIDIuODg4OTggMTIuMDk2MSAyLjkwNDA4QzEyLjExMTIgMi45MTkxNyAxMi4xMjYxIDIuOTM0MDUgMTIuMTQwOCAyLjk0ODcxQzEyLjQ5MjIgMy4zMDAwMSAxMi43MjMzIDMuNTMxMDIgMTIuODgxOSAzLjc3MjQ4QzEzLjUzMjEgNC43NjI1MiAxMy40OTcyIDYuMDU2MjMgMTIuODIyIDcuMDUwMkMxMi42NTY4IDcuMjkzMyAxMi40MjAzIDcuNTI5NzYgMTIuMDUwNyA3Ljg5OTI5QzEyLjAzNjYgNy45MTM0IDEyLjAyMjIgNy45Mjc3MSAxMi4wMDc3IDcuOTQyMjFMMTEuMzg5IDguNTYwOTNDMTEuMTkzOCA4Ljc1NjIgMTAuODc3MiA4Ljc1NjIgMTAuNjgxOSA4LjU2MDkzQzEwLjQ4NjcgOC4zNjU2NyAxMC40ODY3IDguMDQ5MDkgMTAuNjgxOSA3Ljg1MzgzTDExLjMwMDYgNy4yMzUxMUMxMS43Mjc2IDYuODA4MTEgMTEuODg5OSA2LjY0MjY0IDExLjk5NDggNi40ODgyN0MxMi40NTQzIDUuODExOTIgMTIuNDYzMyA0Ljk1Njc1IDEyLjA0NiA0LjMyMTQxQzExLjk1MTMgNC4xNzcxNCAxMS44MDA5IDQuMDIzMDcgMTEuMzg5IDMuNjExMTlDMTAuOTc3MSAzLjE5OTMgMTAuODIzMSAzLjA0ODkzIDEwLjY3ODggMi45NTQxOVpNNC4zMTc5NiA2LjQzOTYxQzQuNTEzMjIgNi42MzQ4NyA0LjUxMzIyIDYuOTUxNDYgNC4zMTc5NiA3LjE0NjcyTDMuNjk5MjQgNy43NjU0NEMzLjI3MjI0IDguMTkyNDQgMy4xMDk5MyA4LjM1NzkxIDMuMDA1MDcgOC41MTIyN0MyLjU0NTYxIDkuMTg4NjMgMi41MzY2MSAxMC4wNDM4IDIuOTUzODUgMTAuNjc5MUMzLjA0ODYgMTAuODIzNCAzLjE5ODk2IDEwLjk3NzUgMy42MTA4NSAxMS4zODk0QzQuMDIyNzQgMTEuODAxMiA0LjE3NjgxIDExLjk1MTYgNC4zMjEwNyAxMi4wNDY0QzQuOTU2NDIgMTIuNDYzNiA1LjgxMTU4IDEyLjQ1NDYgNi40ODc5NCAxMS45OTUxQzYuNjQyMyAxMS44OTAzIDYuODA3NzcgMTEuNzI4IDcuMjM0NzcgMTEuMzAxTDcuODUzNDkgMTAuNjgyM0M4LjA0ODc1IDEwLjQ4NyA4LjM2NTMzIDEwLjQ4NyA4LjU2MDYgMTAuNjgyM0M4Ljc1NTg2IDEwLjg3NzUgOC43NTU4NiAxMS4xOTQxIDguNTYwNiAxMS4zODk0TDcuOTQxODggMTIuMDA4MUM3LjkyNzM4IDEyLjAyMjYgNy45MTMwNyAxMi4wMzY5IDcuODk4OTcgMTIuMDUxQzcuNTI5NDMgMTIuNDIwNiA3LjI5Mjk2IDEyLjY1NzIgNy4wNDk4NiAxMi44MjIzQzYuMDU1ODkgMTMuNDk3NiA0Ljc2MjE5IDEzLjUzMjQgMy43NzIxNCAxMi44ODIyQzMuNTMwNjggMTIuNzIzNyAzLjI5OTY3IDEyLjQ5MjUgMi45NDgzNyAxMi4xNDExQzIuOTMzNzEgMTIuMTI2NCAyLjkxODgzIDEyLjExMTYgMi45MDM3NCAxMi4wOTY1QzIuODg4NjUgMTIuMDgxNCAyLjg3Mzc3IDEyLjA2NjUgMi44NTkxIDEyLjA1MThDMi41MDc2NiAxMS43MDA1IDIuMjc2NTYgMTEuNDY5NSAyLjExNzk5IDExLjIyODFDMS40Njc4IDEwLjIzOCAxLjUwMjY1IDguOTQ0MzIgMi4xNzc4OCA3Ljk1MDM1QzIuMzQzMDMgNy43MDcyNCAyLjU3OTU3IDcuNDcwNzcgMi45NDkyMiA3LjEwMTI0QzIuOTYzMzMgNy4wODcxMyAyLjk3NzYzIDcuMDcyODMgMi45OTIxMyA3LjA1ODMzTDMuNjEwODUgNi40Mzk2MUMzLjgwNjExIDYuMjQ0MzUgNC4xMjI2OSA2LjI0NDM1IDQuMzE3OTYgNi40Mzk2MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHluPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjUgNS4yNUMxLjkxNDIxIDUuMjUgMi4yNSA0LjkxNDIxIDIuMjUgNC41QzIuMjUgNC4wODU3OSAxLjkxNDIxIDMuNzUgMS41IDMuNzVDMS4wODU3OSAzLjc1IDAuNzUgNC4wODU3OSAwLjc1IDQuNUMwLjc1IDQuOTE0MjEgMS4wODU3OSA1LjI1IDEuNSA1LjI1Wk00IDQuNUM0IDQuMjIzODYgNC4yMjM4NiA0IDQuNSA0SDEzLjVDMTMuNzc2MSA0IDE0IDQuMjIzODYgMTQgNC41QzE0IDQuNzc2MTQgMTMuNzc2MSA1IDEzLjUgNUg0LjVDNC4yMjM4NiA1IDQgNC43NzYxNCA0IDQuNVpNNC41IDdDNC4yMjM4NiA3IDQgNy4yMjM4NiA0IDcuNUM0IDcuNzc2MTQgNC4yMjM4NiA4IDQuNSA4SDEzLjVDMTMuNzc2MSA4IDE0IDcuNzc2MTQgMTQgNy41QzE0IDcuMjIzODYgMTMuNzc2MSA3IDEzLjUgN0g0LjVaTTQuNSAxMEM0LjIyMzg2IDEwIDQgMTAuMjIzOSA0IDEwLjVDNCAxMC43NzYxIDQuMjIzODYgMTEgNC41IDExSDEzLjVDMTMuNzc2MSAxMSAxNCAxMC43NzYxIDE0IDEwLjVDMTQgMTAuMjIzOSAxMy43NzYxIDEwIDEzLjUgMTBINC41Wk0yLjI1IDcuNUMyLjI1IDcuOTE0MjEgMS45MTQyMSA4LjI1IDEuNSA4LjI1QzEuMDg1NzkgOC4yNSAwLjc1IDcuOTE0MjEgMC43NSA3LjVDMC43NSA3LjA4NTc5IDEuMDg1NzkgNi43NSAxLjUgNi43NUMxLjkxNDIxIDYuNzUgMi4yNSA3LjA4NTc5IDIuMjUgNy41Wk0xLjUgMTEuMjVDMS45MTQyMSAxMS4yNSAyLjI1IDEwLjkxNDIgMi4yNSAxMC41QzIuMjUgMTAuMDg1OCAxLjkxNDIxIDkuNzUgMS41IDkuNzVDMS4wODU3OSA5Ljc1IDAuNzUgMTAuMDg1OCAwLjc1IDEwLjVDMC43NSAxMC45MTQyIDEuMDg1NzkgMTEuMjUgMS41IDExLjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sd249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUgNC42MzYwMUM1IDMuNzYwMzEgNS4yNDIxOSAzLjEwNTQgNS42NDMyMyAyLjY3MzU3QzYuMDM5MzQgMi4yNDcwNSA2LjY0NTgyIDEuOTc4MyA3LjUwMTQgMS45NzgzQzguMzU3NDUgMS45NzgzIDguOTYzMDYgMi4yNDY1MiA5LjM1ODIzIDIuNjcyMDhDOS43NTgzOCAzLjEwMjk5IDEwIDMuNzU3MDggMTAgNC42MzMyNVY1Ljk5OTk5SDVWNC42MzYwMVpNNCA1Ljk5OTk5VjQuNjM2MDFDNCAzLjU4MTQ4IDQuMjkzMzkgMi42NTc1NCA0LjkxMDQ5IDEuOTkzMDdDNS41MzI1MiAxLjMyMzI5IDYuNDI2NzUgMC45NzgzMDIgNy41MDE0IDAuOTc4MzAyQzguNTc1ODMgMC45NzgzMDIgOS40Njk1MiAxLjMyMjMzIDEwLjA5MSAxLjk5MTYyQzEwLjcwNzYgMi42NTU1NyAxMSAzLjU3ODk2IDExIDQuNjMzMjVWNS45OTk5OUgxMkMxMi41NTIzIDUuOTk5OTkgMTMgNi40NDc3MSAxMyA2Ljk5OTk5VjEzQzEzIDEzLjU1MjMgMTIuNTUyMyAxNCAxMiAxNEgzQzIuNDQ3NzIgMTQgMiAxMy41NTIzIDIgMTNWNi45OTk5OUMyIDYuNDQ3NzEgMi40NDc3MiA1Ljk5OTk5IDMgNS45OTk5OUg0Wk0zIDYuOTk5OTlIMTJWMTNIM1Y2Ljk5OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk4NiAwQzYuMzI1NyAwIDUuMzYxMDcgMC4zODk0MyA0LjczNzUzIDEuMTkzNjFDNC4yMzc0NSAxLjgzODU2IDQgMi42ODI0MiA0IDMuNjMzMjVINUM1IDIuODQzMTMgNS4xOTY5MSAyLjIzMzEyIDUuNTI3OCAxLjgwNjM2QzUuOTE2MTUgMS4zMDU1MiA2LjU1MTUyIDEgNy40OTg2IDFDOC4zNTY4MyAxIDguOTYzMzYgMS4yNjUwMiA5LjM1ODQ2IDEuNjg2MjNDOS43NTc5MyAyLjExMjExIDEwIDIuNzYwNDQgMTAgMy42MzYwMVY2SDNDMi40NDc3MiA2IDIgNi40NDc3MiAyIDdWMTNDMiAxMy41NTIzIDIuNDQ3NzIgMTQgMyAxNEgxMkMxMi41NTIzIDE0IDEzIDEzLjU1MjMgMTMgMTNWN0MxMyA2LjQ0NzcxIDEyLjU1MjMgNiAxMiA2SDExVjMuNjM2MDFDMTEgMi41ODEzNSAxMC43MDY1IDEuNjYxNjcgMTAuMDg3OCAxLjAwMjFDOS40NjQ3NyAwLjMzNzg3MSA4LjU3MDYxIDAgNy40OTg2IDBaTTMgN0gxMlYxM0gzVjdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx4bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOSAzLjYzNjAxQzkgMi43NjA0NCA5LjI0MjA3IDIuMTEyMTEgOS42NDE1NCAxLjY4NjIzQzEwLjAzNjYgMS4yNjUwMiAxMC42NDMyIDEgMTEuNTAxNCAxQzEyLjQ0ODUgMSAxMy4wODM5IDEuMzA1NTIgMTMuNDcyMiAxLjgwNjM2QzEzLjgwMzEgMi4yMzMxMiAxNCAyLjg0MzEzIDE0IDMuNjMzMjVIMTVDMTUgMi42ODI0MiAxNC43NjI2IDEuODM4NTYgMTQuMjYyNSAxLjE5MzYxQzEzLjYzODkgMC4zODk0MyAxMi42NzQzIDAgMTEuNTAxNCAwQzEwLjQyOTQgMCA5LjUzNTIzIDAuMzM3ODcxIDguOTEyMTggMS4wMDIxQzguMjkzNTEgMS42NjE2NyA4IDIuNTgxMzUgOCAzLjYzNjAxVjZIMUMwLjQ0NzcxNSA2IDAgNi40NDc3MiAwIDdWMTNDMCAxMy41NTIzIDAuNDQ3NzE1IDE0IDEgMTRIMTBDMTAuNTUyMyAxNCAxMSAxMy41NTIzIDExIDEzVjdDMTEgNi40NDc3MiAxMC41NTIzIDYgMTAgNkg5VjMuNjM2MDFaTTEgN0gxMFYxM0gxVjdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxfbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4zNTM1NSAxLjg1MzU1QzMuNTQ4ODIgMS42NTgyOSAzLjU0ODgyIDEuMzQxNzEgMy4zNTM1NSAxLjE0NjQ1QzMuMTU4MjkgMC45NTExODQgMi44NDE3MSAwLjk1MTE4NCAyLjY0NjQ1IDEuMTQ2NDVMMC42NDY0NDcgMy4xNDY0NUMwLjQ1MTE4NCAzLjM0MTcxIDAuNDUxMTg0IDMuNjU4MjkgMC42NDY0NDcgMy44NTM1NUwyLjY0NjQ1IDUuODUzNTVDMi44NDE3MSA2LjA0ODgyIDMuMTU4MjkgNi4wNDg4MiAzLjM1MzU1IDUuODUzNTVDMy41NDg4MiA1LjY1ODI5IDMuNTQ4ODIgNS4zNDE3MSAzLjM1MzU1IDUuMTQ2NDVMMi4yMDcxMSA0SDkuNUMxMS40MzMgNCAxMyA1LjU2NyAxMyA3LjVDMTMgNy43NzYxNCAxMy4yMjM5IDggMTMuNSA4QzEzLjc3NjEgOCAxNCA3Ljc3NjE0IDE0IDcuNUMxNCA1LjAxNDcyIDExLjk4NTMgMyA5LjUgM0gyLjIwNzExTDMuMzUzNTUgMS44NTM1NVpNMiA3LjVDMiA3LjIyMzg2IDEuNzc2MTQgNyAxLjUgN0MxLjIyMzg2IDcgMSA3LjIyMzg2IDEgNy41QzEgOS45ODUyOCAzLjAxNDcyIDEyIDUuNSAxMkgxMi43OTI5TDExLjY0NjQgMTMuMTQ2NEMxMS40NTEyIDEzLjM0MTcgMTEuNDUxMiAxMy42NTgzIDExLjY0NjQgMTMuODUzNkMxMS44NDE3IDE0LjA0ODggMTIuMTU4MyAxNC4wNDg4IDEyLjM1MzYgMTMuODUzNkwxNC4zNTM2IDExLjg1MzZDMTQuNTQ4OCAxMS42NTgzIDE0LjU0ODggMTEuMzQxNyAxNC4zNTM2IDExLjE0NjRMMTIuMzUzNiA5LjE0NjQ1QzEyLjE1ODMgOC45NTExOCAxMS44NDE3IDguOTUxMTggMTEuNjQ2NCA5LjE0NjQ1QzExLjQ1MTIgOS4zNDE3MSAxMS40NTEyIDkuNjU4MjkgMTEuNjQ2NCA5Ljg1MzU1TDEyLjc5MjkgMTFINS41QzMuNTY3IDExIDIgOS40MzMgMiA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxMbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuOSAwLjQ5OTk3NkMxMy45IDAuMjc5MDYyIDEzLjcyMDkgMC4wOTk5NzU2IDEzLjUgMC4wOTk5NzU2QzEzLjI3OTEgMC4wOTk5NzU2IDEzLjEgMC4yNzkwNjIgMTMuMSAwLjQ5OTk3NlYxLjA5OTk4SDEyLjVDMTIuMjc5MSAxLjA5OTk4IDEyLjEgMS4yNzkwNiAxMi4xIDEuNDk5OThDMTIuMSAxLjcyMDg5IDEyLjI3OTEgMS44OTk5OCAxMi41IDEuODk5OThIMTMuMVYyLjQ5OTk4QzEzLjEgMi43MjA4OSAxMy4yNzkxIDIuODk5OTggMTMuNSAyLjg5OTk4QzEzLjcyMDkgMi44OTk5OCAxMy45IDIuNzIwODkgMTMuOSAyLjQ5OTk4VjEuODk5OThIMTQuNUMxNC43MjA5IDEuODk5OTggMTQuOSAxLjcyMDg5IDE0LjkgMS40OTk5OEMxNC45IDEuMjc5MDYgMTQuNzIwOSAxLjA5OTk4IDE0LjUgMS4wOTk5OEgxMy45VjAuNDk5OTc2Wk0xMS44NTM2IDMuMTQ2NDJDMTIuMDQ4OCAzLjM0MTY4IDEyLjA0ODggMy42NTgyNiAxMS44NTM2IDMuODUzNTNMMTAuODUzNiA0Ljg1MzUzQzEwLjY1ODMgNS4wNDg3OSAxMC4zNDE3IDUuMDQ4NzkgMTAuMTQ2NSA0Ljg1MzUzQzkuOTUxMiA0LjY1ODI3IDkuOTUxMiA0LjM0MTY5IDEwLjE0NjUgNC4xNDY0MkwxMS4xNDY0IDMuMTQ2NDNDMTEuMzQxNyAyLjk1MTE2IDExLjY1ODMgMi45NTExNiAxMS44NTM2IDMuMTQ2NDJaTTkuODUzNTcgNS4xNDY0MkMxMC4wNDg4IDUuMzQxNjggMTAuMDQ4OCA1LjY1ODI3IDkuODUzNTcgNS44NTM1M0wyLjg1MzU1IDEyLjg1MzVDMi42NTgyOSAxMy4wNDg4IDIuMzQxNzEgMTMuMDQ4OCAyLjE0NjQ1IDEyLjg1MzVDMS45NTExOCAxMi42NTgzIDEuOTUxMTggMTIuMzQxNyAyLjE0NjQ1IDEyLjE0NjRMOS4xNDY0NiA1LjE0NjQyQzkuMzQxNzIgNC45NTExNiA5LjY1ODMxIDQuOTUxMTYgOS44NTM1NyA1LjE0NjQyWk0xMy41IDUuMDk5OThDMTMuNzIwOSA1LjA5OTk4IDEzLjkgNS4yNzkwNiAxMy45IDUuNDk5OThWNi4wOTk5OEgxNC41QzE0LjcyMDkgNi4wOTk5OCAxNC45IDYuMjc5MDYgMTQuOSA2LjQ5OTk4QzE0LjkgNi43MjA4OSAxNC43MjA5IDYuODk5OTggMTQuNSA2Ljg5OTk4SDEzLjlWNy40OTk5OEMxMy45IDcuNzIwODkgMTMuNzIwOSA3Ljg5OTk4IDEzLjUgNy44OTk5OEMxMy4yNzkxIDcuODk5OTggMTMuMSA3LjcyMDg5IDEzLjEgNy40OTk5OFY2Ljg5OTk4SDEyLjVDMTIuMjc5MSA2Ljg5OTk4IDEyLjEgNi43MjA4OSAxMi4xIDYuNDk5OThDMTIuMSA2LjI3OTA2IDEyLjI3OTEgNi4wOTk5OCAxMi41IDYuMDk5OThIMTMuMVY1LjQ5OTk4QzEzLjEgNS4yNzkwNiAxMy4yNzkxIDUuMDk5OTggMTMuNSA1LjA5OTk4Wk04LjkwMDAyIDAuNDk5OTc2QzguOTAwMDIgMC4yNzkwNjIgOC43MjA5MyAwLjA5OTk3NTYgOC41MDAwMiAwLjA5OTk3NTZDOC4yNzkxIDAuMDk5OTc1NiA4LjEwMDAyIDAuMjc5MDYyIDguMTAwMDIgMC40OTk5NzZWMS4wOTk5OEg3LjUwMDAyQzcuMjc5MSAxLjA5OTk4IDcuMTAwMDIgMS4yNzkwNiA3LjEwMDAyIDEuNDk5OThDNy4xMDAwMiAxLjcyMDg5IDcuMjc5MSAxLjg5OTk4IDcuNTAwMDIgMS44OTk5OEg4LjEwMDAyVjIuNDk5OThDOC4xMDAwMiAyLjcyMDg5IDguMjc5MSAyLjg5OTk4IDguNTAwMDIgMi44OTk5OEM4LjcyMDkzIDIuODk5OTggOC45MDAwMiAyLjcyMDg5IDguOTAwMDIgMi40OTk5OFYxLjg5OTk4SDkuNTAwMDJDOS43MjA5MyAxLjg5OTk4IDkuOTAwMDIgMS43MjA4OSA5LjkwMDAyIDEuNDk5OThDOS45MDAwMiAxLjI3OTA2IDkuNzIwOTMgMS4wOTk5OCA5LjUwMDAyIDEuMDk5OThIOC45MDAwMlYwLjQ5OTk3NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE9uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMCA2LjVDMTAgOC40MzMgOC40MzMgMTAgNi41IDEwQzQuNTY3IDEwIDMgOC40MzMgMyA2LjVDMyA0LjU2NyA0LjU2NyAzIDYuNSAzQzguNDMzIDMgMTAgNC41NjcgMTAgNi41Wk05LjMwODg0IDEwLjAxNTlDOC41MzkwMSAxMC42MzE4IDcuNTYyNTEgMTEgNi41IDExQzQuMDE0NzIgMTEgMiA4Ljk4NTI4IDIgNi41QzIgNC4wMTQ3MiA0LjAxNDcyIDIgNi41IDJDOC45ODUyOCAyIDExIDQuMDE0NzIgMTEgNi41QzExIDcuNTYyNTEgMTAuNjMxOCA4LjUzOTAxIDEwLjAxNTkgOS4zMDg4NEwxMi44NTM2IDEyLjE0NjRDMTMuMDQ4OCAxMi4zNDE3IDEzLjA0ODggMTIuNjU4MyAxMi44NTM2IDEyLjg1MzZDMTIuNjU4MyAxMy4wNDg4IDEyLjM0MTcgMTMuMDQ4OCAxMi4xNDY0IDEyLjg1MzZMOS4zMDg4NCAxMC4wMTU5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNDk5ODggMi4wMDAxMkMxLjc3NjAyIDIuMDAwMTIgMS45OTk4OCAxLjc3NjI2IDEuOTk5ODggMS41MDAxMkMxLjk5OTg4IDEuMjIzOTggMS43NzYwMiAxLjAwMDEyIDEuNDk5ODggMS4wMDAxMkMxLjIyMzc0IDEuMDAwMTIgMC45OTk4NzggMS4yMjM5OCAwLjk5OTg3OCAxLjUwMDEyQzAuOTk5ODc4IDEuNzc2MjYgMS4yMjM3NCAyLjAwMDEyIDEuNDk5ODggMi4wMDAxMlpNNC40OTk4OCAyLjAwMDEyQzQuNzc2MDIgMi4wMDAxMiA0Ljk5OTg4IDEuNzc2MjYgNC45OTk4OCAxLjUwMDEyQzQuOTk5ODggMS4yMjM5OCA0Ljc3NjAyIDEuMDAwMTIgNC40OTk4OCAxLjAwMDEyQzQuMjIzNzQgMS4wMDAxMiAzLjk5OTg4IDEuMjIzOTggMy45OTk4OCAxLjUwMDEyQzMuOTk5ODggMS43NzYyNiA0LjIyMzc0IDIuMDAwMTIgNC40OTk4OCAyLjAwMDEyWk03Ljk5OTg4IDEuNTAwMTJDNy45OTk4OCAxLjc3NjI2IDcuNzc2MDIgMi4wMDAxMiA3LjQ5OTg4IDIuMDAwMTJDNy4yMjM3NCAyLjAwMDEyIDYuOTk5ODggMS43NzYyNiA2Ljk5OTg4IDEuNTAwMTJDNi45OTk4OCAxLjIyMzk4IDcuMjIzNzQgMS4wMDAxMiA3LjQ5OTg4IDEuMDAwMTJDNy43NzYwMiAxLjAwMDEyIDcuOTk5ODggMS4yMjM5OCA3Ljk5OTg4IDEuNTAwMTJaTTEwLjQ5OTkgMi4wMDAxMkMxMC43NzYgMi4wMDAxMiAxMC45OTk5IDEuNzc2MjYgMTAuOTk5OSAxLjUwMDEyQzEwLjk5OTkgMS4yMjM5OCAxMC43NzYgMS4wMDAxMiAxMC40OTk5IDEuMDAwMTJDMTAuMjIzNyAxLjAwMDEyIDkuOTk5ODggMS4yMjM5OCA5Ljk5OTg4IDEuNTAwMTJDOS45OTk4OCAxLjc3NjI2IDEwLjIyMzcgMi4wMDAxMiAxMC40OTk5IDIuMDAwMTJaTTEzLjk5OTkgMS41MDAxMkMxMy45OTk5IDEuNzc2MjYgMTMuNzc2IDIuMDAwMTIgMTMuNDk5OSAyLjAwMDEyQzEzLjIyMzcgMi4wMDAxMiAxMi45OTk5IDEuNzc2MjYgMTIuOTk5OSAxLjUwMDEyQzEyLjk5OTkgMS4yMjM5OCAxMy4yMjM3IDEuMDAwMTIgMTMuNDk5OSAxLjAwMDEyQzEzLjc3NiAxLjAwMDEyIDEzLjk5OTkgMS4yMjM5OCAxMy45OTk5IDEuNTAwMTJaTTEuNDk5ODggMTQuMDAwMUMxLjc3NjAyIDE0LjAwMDEgMS45OTk4OCAxMy43NzYzIDEuOTk5ODggMTMuNTAwMUMxLjk5OTg4IDEzLjIyNCAxLjc3NjAyIDEzLjAwMDEgMS40OTk4OCAxMy4wMDAxQzEuMjIzNzQgMTMuMDAwMSAwLjk5OTg3OCAxMy4yMjQgMC45OTk4NzggMTMuNTAwMUMwLjk5OTg3OCAxMy43NzYzIDEuMjIzNzQgMTQuMDAwMSAxLjQ5OTg4IDE0LjAwMDFaTTEuOTk5ODggMTAuNTAwMUMxLjk5OTg4IDEwLjc3NjMgMS43NzYwMiAxMS4wMDAxIDEuNDk5ODggMTEuMDAwMUMxLjIyMzc0IDExLjAwMDEgMC45OTk4NzggMTAuNzc2MyAwLjk5OTg3OCAxMC41MDAxQzAuOTk5ODc4IDEwLjIyNCAxLjIyMzc0IDEwLjAwMDEgMS40OTk4OCAxMC4wMDAxQzEuNzc2MDIgMTAuMDAwMSAxLjk5OTg4IDEwLjIyNCAxLjk5OTg4IDEwLjUwMDFaTTEuNDk5ODggOC4wMDAxMkMxLjc3NjAyIDguMDAwMTIgMS45OTk4OCA3Ljc3NjI2IDEuOTk5ODggNy41MDAxMkMxLjk5OTg4IDcuMjIzOTggMS43NzYwMiA3LjAwMDEyIDEuNDk5ODggNy4wMDAxMkMxLjIyMzc0IDcuMDAwMTIgMC45OTk4NzggNy4yMjM5OCAwLjk5OTg3OCA3LjUwMDEyQzAuOTk5ODc4IDcuNzc2MjYgMS4yMjM3NCA4LjAwMDEyIDEuNDk5ODggOC4wMDAxMlpNMS45OTk4OCA0LjUwMDEyQzEuOTk5ODggNC43NzYyNiAxLjc3NjAyIDUuMDAwMTIgMS40OTk4OCA1LjAwMDEyQzEuMjIzNzQgNS4wMDAxMiAwLjk5OTg3OCA0Ljc3NjI2IDAuOTk5ODc4IDQuNTAwMTJDMC45OTk4NzggNC4yMjM5OCAxLjIyMzc0IDQuMDAwMTIgMS40OTk4OCA0LjAwMDEyQzEuNzc2MDIgNC4wMDAxMiAxLjk5OTg4IDQuMjIzOTggMS45OTk4OCA0LjUwMDEyWk0xMy40OTk5IDExLjAwMDFDMTMuNzc2IDExLjAwMDEgMTMuOTk5OSAxMC43NzYzIDEzLjk5OTkgMTAuNTAwMUMxMy45OTk5IDEwLjIyNCAxMy43NzYgMTAuMDAwMSAxMy40OTk5IDEwLjAwMDFDMTMuMjIzNyAxMC4wMDAxIDEyLjk5OTkgMTAuMjI0IDEyLjk5OTkgMTAuNTAwMUMxMi45OTk5IDEwLjc3NjMgMTMuMjIzNyAxMS4wMDAxIDEzLjQ5OTkgMTEuMDAwMVpNMTMuOTk5OSA3LjUwMDEyQzEzLjk5OTkgNy43NzYyNiAxMy43NzYgOC4wMDAxMiAxMy40OTk5IDguMDAwMTJDMTMuMjIzNyA4LjAwMDEyIDEyLjk5OTkgNy43NzYyNiAxMi45OTk5IDcuNTAwMTJDMTIuOTk5OSA3LjIyMzk4IDEzLjIyMzcgNy4wMDAxMiAxMy40OTk5IDcuMDAwMTJDMTMuNzc2IDcuMDAwMTIgMTMuOTk5OSA3LjIyMzk4IDEzLjk5OTkgNy41MDAxMlpNMTMuNDk5OSA1LjAwMDEyQzEzLjc3NiA1LjAwMDEyIDEzLjk5OTkgNC43NzYyNiAxMy45OTk5IDQuNTAwMTJDMTMuOTk5OSA0LjIyMzk4IDEzLjc3NiA0LjAwMDEyIDEzLjQ5OTkgNC4wMDAxMkMxMy4yMjM3IDQuMDAwMTIgMTIuOTk5OSA0LjIyMzk4IDEyLjk5OTkgNC41MDAxMkMxMi45OTk5IDQuNzc2MjYgMTMuMjIzNyA1LjAwMDEyIDEzLjQ5OTkgNS4wMDAxMlpNNC45OTk4OCAxMy41MDAxQzQuOTk5ODggMTMuNzc2MyA0Ljc3NjAyIDE0LjAwMDEgNC40OTk4OCAxNC4wMDAxQzQuMjIzNzQgMTQuMDAwMSAzLjk5OTg4IDEzLjc3NjMgMy45OTk4OCAxMy41MDAxQzMuOTk5ODggMTMuMjI0IDQuMjIzNzQgMTMuMDAwMSA0LjQ5OTg4IDEzLjAwMDFDNC43NzYwMiAxMy4wMDAxIDQuOTk5ODggMTMuMjI0IDQuOTk5ODggMTMuNTAwMVpNNy40OTk4OCAxNC4wMDAxQzcuNzc2MDIgMTQuMDAwMSA3Ljk5OTg4IDEzLjc3NjMgNy45OTk4OCAxMy41MDAxQzcuOTk5ODggMTMuMjI0IDcuNzc2MDIgMTMuMDAwMSA3LjQ5OTg4IDEzLjAwMDFDNy4yMjM3NCAxMy4wMDAxIDYuOTk5ODggMTMuMjI0IDYuOTk5ODggMTMuNTAwMUM2Ljk5OTg4IDEzLjc3NjMgNy4yMjM3NCAxNC4wMDAxIDcuNDk5ODggMTQuMDAwMVpNMTAuOTk5OSAxMy41MDAxQzEwLjk5OTkgMTMuNzc2MyAxMC43NzYgMTQuMDAwMSAxMC40OTk5IDE0LjAwMDFDMTAuMjIzNyAxNC4wMDAxIDkuOTk5ODggMTMuNzc2MyA5Ljk5OTg4IDEzLjUwMDFDOS45OTk4OCAxMy4yMjQgMTAuMjIzNyAxMy4wMDAxIDEwLjQ5OTkgMTMuMDAwMUMxMC43NzYgMTMuMDAwMSAxMC45OTk5IDEzLjIyNCAxMC45OTk5IDEzLjUwMDFaTTEzLjQ5OTkgMTQuMDAwMUMxMy43NzYgMTQuMDAwMSAxMy45OTk5IDEzLjc3NjMgMTMuOTk5OSAxMy41MDAxQzEzLjk5OTkgMTMuMjI0IDEzLjc3NiAxMy4wMDAxIDEzLjQ5OTkgMTMuMDAwMUMxMy4yMjM3IDEzLjAwMDEgMTIuOTk5OSAxMy4yMjQgMTIuOTk5OSAxMy41MDAxQzEyLjk5OTkgMTMuNzc2MyAxMy4yMjM3IDE0LjAwMDEgMTMuNDk5OSAxNC4wMDAxWk0zLjk5OTg4IDUuMDAwMTJDMy45OTk4OCA0LjQ0Nzg0IDQuNDQ3NTkgNC4wMDAxMiA0Ljk5OTg4IDQuMDAwMTJIOS45OTk4OEMxMC41NTIyIDQuMDAwMTIgMTAuOTk5OSA0LjQ0Nzg0IDEwLjk5OTkgNS4wMDAxMlYxMC4wMDAxQzEwLjk5OTkgMTAuNTUyNCAxMC41NTIyIDExLjAwMDEgOS45OTk4OCAxMS4wMDAxSDQuOTk5ODhDNC40NDc1OSAxMS4wMDAxIDMuOTk5ODggMTAuNTUyNCAzLjk5OTg4IDEwLjAwMDFWNS4wMDAxMlpNNC45OTk4OCA1LjAwMDEySDkuOTk5ODhWMTAuMDAwMUg0Ljk5OTg4VjUuMDAwMTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxTbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMSAySDE0VjEzSDFMMSAyWk0wIDJDMCAxLjQ0NzcyIDAuNDQ3NzE1IDEgMSAxSDE0QzE0LjU1MjMgMSAxNSAxLjQ0NzcyIDE1IDJWMTNDMTUgMTMuNTUyMyAxNC41NTIzIDE0IDE0IDE0SDFDMC40NDc3MTUgMTQgMCAxMy41NTIzIDAgMTNWMlpNNC44NzUgNy41QzQuODc1IDYuMDUwMjUgNi4wNTAyNSA0Ljg3NSA3LjUgNC44NzVDOC45NDk3NSA0Ljg3NSAxMC4xMjUgNi4wNTAyNSAxMC4xMjUgNy41QzEwLjEyNSA4Ljk0OTc1IDguOTQ5NzUgMTAuMTI1IDcuNSAxMC4xMjVDNi4wNTAyNSAxMC4xMjUgNC44NzUgOC45NDk3NSA0Ljg3NSA3LjVaTTcuNSAzLjg3NUM1LjQ5Nzk3IDMuODc1IDMuODc1IDUuNDk3OTcgMy44NzUgNy41QzMuODc1IDkuNTAyMDMgNS40OTc5NyAxMS4xMjUgNy41IDExLjEyNUM5LjUwMjAzIDExLjEyNSAxMS4xMjUgOS41MDIwMyAxMS4xMjUgNy41QzExLjEyNSA1LjQ5Nzk3IDkuNTAyMDMgMy44NzUgNy41IDMuODc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgMUMwLjQ0NzcxNSAxIDAgMS40NDc3MiAwIDJWMTNDMCAxMy41NTIzIDAuNDQ3NzE1IDE0IDEgMTRIMTRDMTQuNTUyMyAxNCAxNSAxMy41NTIzIDE1IDEzVjJDMTUgMS40NDc3MiAxNC41NTIzIDEgMTQgMUgxWk03LjUgMTAuNjI1QzkuMjI1ODkgMTAuNjI1IDEwLjYyNSA5LjIyNTg5IDEwLjYyNSA3LjVDMTAuNjI1IDUuNzc0MTEgOS4yMjU4OSA0LjM3NSA3LjUgNC4zNzVDNS43NzQxMSA0LjM3NSA0LjM3NSA1Ljc3NDExIDQuMzc1IDcuNUM0LjM3NSA5LjIyNTg5IDUuNzc0MTEgMTAuNjI1IDcuNSAxMC42MjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxqbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi4yNSA3LjVDMi4yNSA3LjIyMzg2IDIuNDczODYgNyAyLjc1IDdIMTIuMjVDMTIuNTI2MSA3IDEyLjc1IDcuMjIzODYgMTIuNzUgNy41QzEyLjc1IDcuNzc2MTQgMTIuNTI2MSA4IDEyLjI1IDhIMi43NUMyLjQ3Mzg2IDggMi4yNSA3Ljc3NjE0IDIuMjUgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sa249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzY4OTJDMy44NDIyMiAwLjg3Njg5MiAwLjg3NzA3NSAzLjg0MjA0IDAuODc3MDc1IDcuNDk5NzJDMC44NzcwNzUgMTEuMTU3NCAzLjg0MjIyIDE0LjEyMjYgNy40OTk5MSAxNC4xMjI2QzExLjE1NzYgMTQuMTIyNiAxNC4xMjI3IDExLjE1NzQgMTQuMTIyNyA3LjQ5OTcyQzE0LjEyMjcgMy44NDIwNCAxMS4xNTc2IDAuODc2ODkyIDcuNDk5OTEgMC44NzY4OTJaTTEuODI3MDcgNy40OTk3MkMxLjgyNzA3IDQuMzY2NzEgNC4zNjY4OSAxLjgyNjg5IDcuNDk5OTEgMS44MjY4OUMxMC42MzI5IDEuODI2ODkgMTMuMTcyNyA0LjM2NjcxIDEzLjE3MjcgNy40OTk3MkMxMy4xNzI3IDEwLjYzMjcgMTAuNjMyOSAxMy4xNzI2IDcuNDk5OTEgMTMuMTcyNkM0LjM2Njg5IDEzLjE3MjYgMS44MjcwNyAxMC42MzI3IDEuODI3MDcgNy40OTk3MlpNNC41MDAwMyA3QzQuMjIzODkgNyA0LjAwMDAzIDcuMjIzODYgNC4wMDAwMyA3LjVDNC4wMDAwMyA3Ljc3NjE0IDQuMjIzODkgOCA0LjUwMDAzIDhIMTAuNUMxMC43NzYyIDggMTEgNy43NzYxNCAxMSA3LjVDMTEgNy4yMjM4NiAxMC43NzYyIDcgMTAuNSA3SDQuNTAwMDNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxSbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi4xNDkyMSAzLjk5OTk2QzIuMTQ5MjEgMi45Nzc3OCAyLjk3Nzg0IDIuMTQ5MTUgNC4wMDAwMiAyLjE0OTE1QzUuMDIyMTkgMi4xNDkxNSA1Ljg1MDgzIDIuOTc3NzggNS44NTA4MyAzLjk5OTk2QzUuODUwODMgNS4wMjIxMyA1LjAyMjE5IDUuODUwNzcgNC4wMDAwMiA1Ljg1MDc3QzIuOTc3ODQgNS44NTA3NyAyLjE0OTIxIDUuMDIyMTMgMi4xNDkyMSAzLjk5OTk2Wk00LjAwMDAyIDEuMjQ5MTVDMi40ODA3OSAxLjI0OTE1IDEuMjQ5MjEgMi40ODA3MyAxLjI0OTIxIDMuOTk5OTZDMS4yNDkyMSA1LjUxOTE5IDIuNDgwNzkgNi43NTA3NyA0LjAwMDAyIDYuNzUwNzdDNS41MTkyNSA2Ljc1MDc3IDYuNzUwODMgNS41MTkxOSA2Ljc1MDgzIDMuOTk5OTZDNi43NTA4MyAyLjQ4MDczIDUuNTE5MjUgMS4yNDkxNSA0LjAwMDAyIDEuMjQ5MTVaTTUuODIwMzQgMTEuMDAwMUwyLjQ5OTk4IDEyLjgzNjlWOS4xNjMzMUw1LjgyMDM0IDExLjAwMDFaTTIuNjM4ODMgOC4yMTE1OUMyLjE3MjI4IDcuOTUzNSAxLjU5OTk4IDguMjkwOTMgMS41OTk5OCA4LjgyNDExVjEzLjE3NjFDMS41OTk5OCAxMy43MDkzIDIuMTcyMjggMTQuMDQ2NyAyLjYzODgzIDEzLjc4ODZMNi41NzIzNSAxMS42MTI2QzcuMDUzODkgMTEuMzQ2MiA3LjA1Mzg5IDEwLjY1NCA2LjU3MjM1IDEwLjM4NzZMMi42Mzg4MyA4LjIxMTU5Wk04LjMwMDAxIDkuMDAwMDNDOC4zMDAwMSA4LjYxMzQzIDguNjEzNDEgOC4zMDAwMyA5LjAwMDAxIDguMzAwMDNIMTNDMTMuMzg2NiA4LjMwMDAzIDEzLjcgOC42MTM0MyAxMy43IDkuMDAwMDNWMTNDMTMuNyAxMy4zODY2IDEzLjM4NjYgMTMuNyAxMyAxMy43SDkuMDAwMDFDOC42MTM0MSAxMy43IDguMzAwMDEgMTMuMzg2NiA4LjMwMDAxIDEzVjkuMDAwMDNaTTkuMjAwMDEgOS4yMDAwM1YxMi44SDEyLjhWOS4yMDAwM0g5LjIwMDAxWk0xMy40NDMyIDIuMTkzMTFDMTMuNjE4OSAyLjAxNzM3IDEzLjYxODkgMS43MzI0NSAxMy40NDMyIDEuNTU2NzFDMTMuMjY3NSAxLjM4MDk4IDEyLjk4MjYgMS4zODA5OCAxMi44MDY4IDEuNTU2NzFMMTEgMy4zNjM1M0w5LjE5MzIxIDEuNTU2NzRDOS4wMTc0OCAxLjM4MSA4LjczMjU1IDEuMzgxIDguNTU2ODIgMS41NTY3NEM4LjM4MTA4IDEuNzMyNDcgOC4zODEwOCAyLjAxNzQgOC41NTY4MiAyLjE5MzEzTDEwLjM2MzYgMy45OTk5Mkw4LjU1NjgyIDUuODA2NzFDOC4zODEwOCA1Ljk4MjQ1IDguMzgxMDggNi4yNjczNyA4LjU1NjgyIDYuNDQzMTFDOC43MzI1NSA2LjYxODg1IDkuMDE3NDggNi42MTg4NSA5LjE5MzIxIDYuNDQzMTFMMTEgNC42MzYzMkwxMi44MDY4IDYuNDQzMTRDMTIuOTgyNiA2LjYxODg3IDEzLjI2NzUgNi42MTg4NyAxMy40NDMyIDYuNDQzMTRDMTMuNjE4OSA2LjI2NzQgMTMuNjE4OSA1Ljk4MjQ3IDEzLjQ0MzIgNS44MDY3NEwxMS42MzY0IDMuOTk5OTJMMTMuNDQzMiAyLjE5MzExWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNSAzQzQuNjcxNTcgMyA0IDMuNjcxNTcgNCA0LjVDNCA1LjMyODQzIDQuNjcxNTcgNiA1LjUgNkM2LjMyODQzIDYgNyA1LjMyODQzIDcgNC41QzcgMy42NzE1NyA2LjMyODQzIDMgNS41IDNaTTMgNUMzLjAxNjcxIDUgMy4wMzMyMyA0Ljk5OTE4IDMuMDQ5NTIgNC45OTc1OEMzLjI4MDIyIDYuMTM5OSA0LjI4OTY3IDcgNS41IDdDNi43MTAzMyA3IDcuNzE5NzggNi4xMzk5IDcuOTUwNDggNC45OTc1OEM3Ljk2Njc3IDQuOTk5MTggNy45ODMyOSA1IDggNUgxMy41QzEzLjc3NjEgNSAxNCA0Ljc3NjE0IDE0IDQuNUMxNCA0LjIyMzg2IDEzLjc3NjEgNCAxMy41IDRIOEM3Ljk4MzI5IDQgNy45NjY3NyA0LjAwMDgyIDcuOTUwNDggNC4wMDI0MkM3LjcxOTc4IDIuODYwMDkgNi43MTAzMyAyIDUuNSAyQzQuMjg5NjcgMiAzLjI4MDIyIDIuODYwMDkgMy4wNDk1MiA0LjAwMjQyQzMuMDMzMjMgNC4wMDA4MiAzLjAxNjcxIDQgMyA0SDEuNUMxLjIyMzg2IDQgMSA0LjIyMzg2IDEgNC41QzEgNC43NzYxNCAxLjIyMzg2IDUgMS41IDVIM1pNMTEuOTUwNSAxMC45OTc2QzExLjcxOTggMTIuMTM5OSAxMC43MTAzIDEzIDkuNSAxM0M4LjI4OTY3IDEzIDcuMjgwMjIgMTIuMTM5OSA3LjA0OTUyIDEwLjk5NzZDNy4wMzMyMyAxMC45OTkyIDcuMDE2NzEgMTEgNyAxMUgxLjVDMS4yMjM4NiAxMSAxIDEwLjc3NjEgMSAxMC41QzEgMTAuMjIzOSAxLjIyMzg2IDEwIDEuNSAxMEg3QzcuMDE2NzEgMTAgNy4wMzMyMyAxMC4wMDA4IDcuMDQ5NTIgMTAuMDAyNEM3LjI4MDIyIDguODYwMSA4LjI4OTY3IDggOS41IDhDMTAuNzEwMyA4IDExLjcxOTggOC44NjAxIDExLjk1MDUgMTAuMDAyNEMxMS45NjY4IDEwLjAwMDggMTEuOTgzMyAxMCAxMiAxMEgxMy41QzEzLjc3NjEgMTAgMTQgMTAuMjIzOSAxNCAxMC41QzE0IDEwLjc3NjEgMTMuNzc2MSAxMSAxMy41IDExSDEyQzExLjk4MzMgMTEgMTEuOTY2OCAxMC45OTkyIDExLjk1MDUgMTAuOTk3NlpNOCAxMC41QzggOS42NzE1NyA4LjY3MTU3IDkgOS41IDlDMTAuMzI4NCA5IDExIDkuNjcxNTcgMTEgMTAuNUMxMSAxMS4zMjg0IDEwLjMyODQgMTIgOS41IDEyQzguNjcxNTcgMTIgOCAxMS4zMjg0IDggMTAuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEFuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDEuNUM1IDEuMjIzODYgNC43NzYxNCAxIDQuNSAxQzQuMjIzODYgMSA0IDEuMjIzODYgNCAxLjVMNCA3QzQgNy4wMTY3MSA0LjAwMDgyIDcuMDMzMjMgNC4wMDI0MiA3LjA0OTUyQzIuODYwMDkgNy4yODAyMiAyIDguMjg5NjcgMiA5LjVDMiAxMC43MTAzIDIuODYwMDkgMTEuNzE5OCA0LjAwMjQyIDExLjk1MDVDNC4wMDA4MiAxMS45NjY4IDQgMTEuOTgzMyA0IDEyVjEzLjVDNCAxMy43NzYxIDQuMjIzODYgMTQgNC41IDE0QzQuNzc2MTQgMTQgNSAxMy43NzYxIDUgMTMuNVYxMkM1IDExLjk4MzMgNC45OTkxOCAxMS45NjY4IDQuOTk3NTggMTEuOTUwNUM2LjEzOTkgMTEuNzE5OCA3IDEwLjcxMDMgNyA5LjVDNyA4LjI4OTY3IDYuMTM5OSA3LjI4MDIyIDQuOTk3NTggNy4wNDk1MkM0Ljk5OTE4IDcuMDMzMjMgNSA3LjAxNjcxIDUgN0w1IDEuNVpNMTEgMS41QzExIDEuMjIzODYgMTAuNzc2MSAxIDEwLjUgMUMxMC4yMjM5IDEgMTAgMS4yMjM4NiAxMCAxLjVWM0MxMCAzLjAxNjcxIDEwLjAwMDggMy4wMzMyMyAxMC4wMDI0IDMuMDQ5NTJDOC44NjAxIDMuMjgwMjIgOCA0LjI4OTY3IDggNS41QzggNi43MTAzMyA4Ljg2MDEgNy43MTk3OCAxMC4wMDI0IDcuOTUwNDhDMTAuMDAwOCA3Ljk2Njc3IDEwIDcuOTgzMjkgMTAgOFYxMy41QzEwIDEzLjc3NjEgMTAuMjIzOSAxNCAxMC41IDE0QzEwLjc3NjEgMTQgMTEgMTMuNzc2MSAxMSAxMy41VjhDMTEgNy45ODMyOSAxMC45OTkyIDcuOTY2NzcgMTAuOTk3NiA3Ljk1MDQ4QzEyLjEzOTkgNy43MTk3OCAxMyA2LjcxMDMzIDEzIDUuNUMxMyA0LjI4OTY3IDEyLjEzOTkgMy4yODAyMiAxMC45OTc2IDMuMDQ5NTJDMTAuOTk5MiAzLjAzMzIzIDExIDMuMDE2NzEgMTEgM1YxLjVaTTQuNSA4QzMuNjcxNTcgOCAzIDguNjcxNTcgMyA5LjVDMyAxMC4zMjg0IDMuNjcxNTcgMTEgNC41IDExQzUuMzI4NDMgMTEgNiAxMC4zMjg0IDYgOS41QzYgOC42NzE1NyA1LjMyODQzIDggNC41IDhaTTkgNS41QzkgNC42NzE1NyA5LjY3MTU3IDQgMTAuNSA0QzExLjMyODQgNCAxMiA0LjY3MTU3IDEyIDUuNUMxMiA2LjMyODQzIDExLjMyODQgNyAxMC41IDdDOS42NzE1NyA3IDkgNi4zMjg0MyA5IDUuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEluPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjI1OTI1IDMuMTY2NjdMNC4zNzAzNiA1LjMzMzMzVjFMNy4yNTkyNSAzLjE2NjY3Wk0xIDguMjIyMjJMMy44ODg4OSA2LjA1NTU1TDEgMy44ODg4OVY4LjIyMjIyWk0xIDE0TDMuODg4ODkgMTEuODMzM0wxIDkuNjY2NjZWMTRaTTcuNzQwNzIgOC4yMjIyMkwxMC42Mjk2IDYuMDU1NTVMNy43NDA3MiAzLjg4ODg5VjguMjIyMjJaTTE0IDMuMTY2NjdMMTEuMTExMSA1LjMzMzMzVjFMMTQgMy4xNjY2N1pNMTEuMTExMSAxMS4xMTExTDE0IDguOTQ0NDRMMTEuMTExMSA2Ljc3Nzc3VjExLjExMTFaTTMuODg4ODkgMTEuMTExMUwxIDguOTQ0NDRMMy44ODg4OSA2Ljc3Nzc3VjExLjExMTFaTTQuMzcwMzYgNi4wNTU1NUw3LjI1OTI1IDguMjIyMjJWMy44ODg4OUw0LjM3MDM2IDYuMDU1NTVaTTMuODg4ODkgNS4zMzMzM0wxIDMuMTY2NjdMMy44ODg4OSAxVjUuMzMzMzNaTTcuNzQwNzIgMy4xNjY2N0wxMC42Mjk2IDUuMzMzMzNWMUw3Ljc0MDcyIDMuMTY2NjdaTTE0IDguMjIyMjJMMTEuMTExMSA2LjA1NTU1TDE0IDMuODg4ODlWOC4yMjIyMlpNMTEuMTExMSAxMS44MzMzTDE0IDE0VjkuNjY2NjZMMTEuMTExMSAxMS44MzMzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuODk5OTggMC40OTk5NzZDMi44OTk5OCAwLjI3OTA2MiAyLjcyMDg5IDAuMDk5OTc1NiAyLjQ5OTk4IDAuMDk5OTc1NkMyLjI3OTA2IDAuMDk5OTc1NiAyLjA5OTk4IDAuMjc5MDYyIDIuMDk5OTggMC40OTk5NzZWMS4wOTk5OEgxLjQ5OTk4QzEuMjc5MDYgMS4wOTk5OCAxLjA5OTk4IDEuMjc5MDYgMS4wOTk5OCAxLjQ5OTk4QzEuMDk5OTggMS43MjA4OSAxLjI3OTA2IDEuODk5OTggMS40OTk5OCAxLjg5OTk4SDIuMDk5OThWMi40OTk5OEMyLjA5OTk4IDIuNzIwODkgMi4yNzkwNiAyLjg5OTk4IDIuNDk5OTggMi44OTk5OEMyLjcyMDg5IDIuODk5OTggMi44OTk5OCAyLjcyMDg5IDIuODk5OTggMi40OTk5OFYxLjg5OTk4SDMuNDk5OThDMy43MjA4OSAxLjg5OTk4IDMuODk5OTggMS43MjA4OSAzLjg5OTk4IDEuNDk5OThDMy44OTk5OCAxLjI3OTA2IDMuNzIwODkgMS4wOTk5OCAzLjQ5OTk4IDEuMDk5OThIMi44OTk5OFYwLjQ5OTk3NlpNNS44OTk5OCAzLjQ5OTk4QzUuODk5OTggMy4yNzkwNiA1LjcyMDg5IDMuMDk5OTggNS40OTk5OCAzLjA5OTk4QzUuMjc5MDYgMy4wOTk5OCA1LjA5OTk4IDMuMjc5MDYgNS4wOTk5OCAzLjQ5OTk4VjQuMDk5OThINC40OTk5OEM0LjI3OTA2IDQuMDk5OTggNC4wOTk5OCA0LjI3OTA2IDQuMDk5OTggNC40OTk5OEM0LjA5OTk4IDQuNzIwODkgNC4yNzkwNiA0Ljg5OTk4IDQuNDk5OTggNC44OTk5OEg1LjA5OTk4VjUuNDk5OThDNS4wOTk5OCA1LjcyMDg5IDUuMjc5MDYgNS44OTk5OCA1LjQ5OTk4IDUuODk5OThDNS43MjA4OSA1Ljg5OTk4IDUuODk5OTggNS43MjA4OSA1Ljg5OTk4IDUuNDk5OThWNC44OTk5OEg2LjQ5OTk4QzYuNzIwODkgNC44OTk5OCA2Ljg5OTk4IDQuNzIwODkgNi44OTk5OCA0LjQ5OTk4QzYuODk5OTggNC4yNzkwNiA2LjcyMDg5IDQuMDk5OTggNi40OTk5OCA0LjA5OTk4SDUuODk5OThWMy40OTk5OFpNMS44OTk5OCA2LjQ5OTk4QzEuODk5OTggNi4yNzkwNiAxLjcyMDg5IDYuMDk5OTggMS40OTk5OCA2LjA5OTk4QzEuMjc5MDYgNi4wOTk5OCAxLjA5OTk4IDYuMjc5MDYgMS4wOTk5OCA2LjQ5OTk4VjcuMDk5OThIMC40OTk5NzZDMC4yNzkwNjIgNy4wOTk5OCAwLjA5OTk3NTYgNy4yNzkwNiAwLjA5OTk3NTYgNy40OTk5OEMwLjA5OTk3NTYgNy43MjA4OSAwLjI3OTA2MiA3Ljg5OTk4IDAuNDk5OTc2IDcuODk5OThIMS4wOTk5OFY4LjQ5OTk4QzEuMDk5OTggOC43MjA4OSAxLjI3OTA2IDguODk5OTcgMS40OTk5OCA4Ljg5OTk3QzEuNzIwODkgOC44OTk5NyAxLjg5OTk4IDguNzIwODkgMS44OTk5OCA4LjQ5OTk4VjcuODk5OThIMi40OTk5OEMyLjcyMDg5IDcuODk5OTggMi44OTk5OCA3LjcyMDg5IDIuODk5OTggNy40OTk5OEMyLjg5OTk4IDcuMjc5MDYgMi43MjA4OSA3LjA5OTk4IDIuNDk5OTggNy4wOTk5OEgxLjg5OTk4VjYuNDk5OThaTTguNTQ0MDYgMC45ODE4NEw4LjI0NjE4IDAuOTQxNTg2QzguMDMyNzUgMC45MTc2NzYgNy45MDY5MiAxLjE2NTUgOC4wMjkzNiAxLjM0MTk0QzguMTcwMTMgMS41NDQ3OSA4LjI5OTgxIDEuNzU1OTIgOC40MTc1NCAxLjk3NDQ1QzguOTE4NzggMi45MDQ4NSA5LjIwMzIyIDMuOTY5MzIgOS4yMDMyMiA1LjEwMDIyQzkuMjAzMjIgOC4zNzIwMSA2LjgyMjQ3IDExLjA4NzggMy42OTg4NyAxMS42MDk3QzMuNDU3MzYgMTEuNjUgMy4yMDk4OCAxMS42NzcyIDIuOTYwMDggMTEuNjkwNkMyLjc0NTYzIDExLjcwMiAyLjYyNzI5IDExLjk1MzUgMi43NzcyMSAxMi4xMDcyQzIuODQ1NTEgMTIuMTc3MyAyLjkxNTM1IDEyLjI0NTggMi45ODY2NyAxMi4zMTI4TDMuMDU4ODMgMTIuMzc5NUwzLjMxODgzIDEyLjYwNDVMMy41MDY4NCAxMi43NTMyTDMuNjI3OTYgMTIuODQzM0wzLjgxNDkxIDEyLjk3NDJMMy45OTA3OSAxMy4wODlDNC4xMTE3NSAxMy4xNjUxIDQuMjM1MzYgMTMuMjM3NSA0LjM2MTU3IDEzLjMwNTlMNC42MjQ5NiAxMy40NDEyTDQuODg1NTMgMTMuNTYwN0w1LjE4ODM3IDEzLjY4MjhMNS40MzE2OSAxMy43Njg2QzUuNTY1NjQgMTMuODEyOCA1LjcwMTQ5IDEzLjg1MjkgNS44Mzg1NyAxMy44ODg1QzUuOTQyNjIgMTMuOTE1NSA2LjA0NzY3IDEzLjk0MDEgNi4xNTQwNSAxMy45NjIyQzYuMjc5OTMgMTMuOTg4MyA2LjQwNzEzIDE0LjAxMDkgNi41MzU0NCAxNC4wMjk4TDYuODUyNDEgMTQuMDY4NUw3LjExOTM0IDE0LjA4OTJDNy4yNDYzNyAxNC4wOTY1IDcuMzc0MzYgMTQuMTAwMiA3LjUwMzIyIDE0LjEwMDJDMTEuMTQ4MyAxNC4xMDAyIDE0LjEwMzIgMTEuMTQ1MyAxNC4xMDMyIDcuNTAwMjNDMTQuMTAzMiA3LjI1MDQ0IDE0LjA4OTMgNy4wMDM4OSAxNC4wNjIzIDYuNzYxMzFMMTQuMDI1NSA2LjQ4NDA3QzEzLjk5MSA2LjI2MDgzIDEzLjk0NTMgNi4wNDEyOSAxMy44ODkxIDUuODI2NDJDMTMuODIxMyA1LjU2NzA5IDEzLjczODIgNS4zMTM5OCAxMy42NDA5IDUuMDY4ODFMMTMuNTI3OSA0LjgwMTMyTDEzLjQ1MDcgNC42MzU0MkwxMy4zNzY2IDQuNDg2NjZDMTMuMjE3OCA0LjE3NzczIDEzLjAzNTMgMy44ODI5NSAxMi44MzEyIDMuNjA0MjNMMTIuNjc4MiAzLjQwMzUyTDEyLjQ3OTMgMy4xNjQzMkwxMi4zMTU3IDIuOTgzNjFMMTIuMTk2MSAyLjg1OTUxTDEyLjAzNTUgMi43MDI0NkwxMS44MTM0IDIuNTAxODRMMTEuNDkyNSAyLjI0MTkxTDExLjI0ODMgMi4wNjQ5OEwxMC45NTYyIDEuODc0NDZMMTAuNjM0NiAxLjY4ODk0TDEwLjMwNzMgMS41MjM3OEwxMC4xOTM4IDEuNDcxNzZMOS45NTQ4OCAxLjM3MDZMOS42Nzc5MSAxLjI2NjlMOS40MjU2NiAxLjE4NDZMOS4xMDA3NSAxLjA5NDg5TDguODM1OTkgMS4wMzQ4Nkw4LjU0NDA2IDAuOTgxODRaTTEwLjQwMzIgNS4zMDAyM0MxMC40MDMyIDQuMjc1ODggMTAuMjAwMiAzLjI5ODI5IDkuODMyNDQgMi40MDYwNEMxMS43NjIzIDMuMjg5OTUgMTMuMTAzMiA1LjIzODYyIDEzLjEwMzIgNy41MDAyM0MxMy4xMDMyIDEwLjU5MyAxMC41OTYgMTMuMTAwMiA3LjUwMzIyIDEzLjEwMDJDNi42MzY0NiAxMy4xMDAyIDUuODE1OTcgMTIuOTAzNiA1LjA4MzU1IDEyLjU1MjJDNi41NDE5IDEyLjA5NDEgNy44MTA4MSAxMS4yMDgyIDguNzQzMjIgMTAuMDQxNkM4Ljg3OTYzIDEwLjIyODQgOS4xMDAyOCAxMC4zNDk3IDkuMzQ5MjggMTAuMzQ5N0M5Ljc2MzQ5IDEwLjM0OTcgMTAuMDk5MyAxMC4wMTM5IDEwLjA5OTMgOS41OTk3MUMxMC4wOTkzIDkuMjQyNTYgOS44NDk2NSA4Ljk0MzczIDkuNTE1MzUgOC44NjgxNkM5LjU3NzQxIDguNzUxNjUgOS42MzY1MyA4LjYzMzM0IDkuNjkyNiA4LjUxMzMyQzkuODgzNTggOC42MzE2MyAxMC4xMDg4IDguNjk5OTMgMTAuMzUgOC42OTk5M0MxMS4wNDAzIDguNjk5OTMgMTEuNiA4LjE0MDI4IDExLjYgNy40NDk5M0MxMS42IDYuNzU5NzYgMTEuMDQwNiA2LjIwMDI0IDEwLjM1MDUgNi4xOTk5M0MxMC4zODUzIDUuOTA0ODcgMTAuNDAzMiA1LjYwNDY0IDEwLjQwMzIgNS4zMDAyM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEhuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjgxODE5IDAuOTMxNzlDNy42NDI0NSAwLjc1NjA1NCA3LjM1NzUzIDAuNzU2MDU0IDcuMTgxNzkgMC45MzE3OUw1LjQzMTc5IDIuNjgxNzlDNS4yNTYwNSAyLjg1NzUzIDUuMjU2MDUgMy4xNDI0NSA1LjQzMTc5IDMuMzE4MTlDNS42MDc1MyAzLjQ5MzkyIDUuODkyNDUgMy40OTM5MiA2LjA2ODE5IDMuMzE4MTlMNi45OTk5OSAyLjM4NjM4VjUuNDk5OTlDNi45OTk5OSA1Ljc3NjEzIDcuMjIzODUgNS45OTk5OSA3LjQ5OTk5IDUuOTk5OTlDNy43NzYxMyA1Ljk5OTk5IDcuOTk5OTkgNS43NzYxMyA3Ljk5OTk5IDUuNDk5OTlWMi4zODYzOEw4LjkzMTc5IDMuMzE4MTlDOS4xMDc1MyAzLjQ5MzkyIDkuMzkyNDUgMy40OTM5MiA5LjU2ODE5IDMuMzE4MTlDOS43NDM5MiAzLjE0MjQ1IDkuNzQzOTIgMi44NTc1MyA5LjU2ODE5IDIuNjgxNzlMNy44MTgxOSAwLjkzMTc5Wk03Ljk5OTk5IDkuNDk5OTlDNy45OTk5OSA5LjIyMzg1IDcuNzc2MTMgOC45OTk5OSA3LjQ5OTk5IDguOTk5OTlDNy4yMjM4NSA4Ljk5OTk5IDYuOTk5OTkgOS4yMjM4NSA2Ljk5OTk5IDkuNDk5OTlWMTIuNjEzNkw2LjA2ODE5IDExLjY4MThDNS44OTI0NSAxMS41MDYxIDUuNjA3NTMgMTEuNTA2MSA1LjQzMTc5IDExLjY4MThDNS4yNTYwNSAxMS44NTc1IDUuMjU2MDUgMTIuMTQyNCA1LjQzMTc5IDEyLjMxODJMNy4xODE3OSAxNC4wNjgyQzcuMzU3NTMgMTQuMjQzOSA3LjY0MjQ1IDE0LjI0MzkgNy44MTgxOSAxNC4wNjgyTDkuNTY4MTkgMTIuMzE4MkM5Ljc0MzkyIDEyLjE0MjQgOS43NDM5MiAxMS44NTc1IDkuNTY4MTkgMTEuNjgxOEM5LjM5MjQ1IDExLjUwNjEgOS4xMDc1MyAxMS41MDYxIDguOTMxNzkgMTEuNjgxOEw3Ljk5OTk5IDEyLjYxMzZWOS40OTk5OVpNOC45OTk5OSA3LjQ5OTk5QzguOTk5OTkgNy4yMjM4NSA5LjIyMzg1IDYuOTk5OTkgOS40OTk5OSA2Ljk5OTk5SDEyLjYxMzZMMTEuNjgxOCA2LjA2ODE5QzExLjUwNjEgNS44OTI0NSAxMS41MDYxIDUuNjA3NTMgMTEuNjgxOCA1LjQzMTc5QzExLjg1NzUgNS4yNTYwNSAxMi4xNDI0IDUuMjU2MDUgMTIuMzE4MiA1LjQzMTc5TDE0LjA2ODIgNy4xODE3OUMxNC4yNDM5IDcuMzU3NTMgMTQuMjQzOSA3LjY0MjQ1IDE0LjA2ODIgNy44MTgxOUwxMi4zMTgyIDkuNTY4MTlDMTIuMTQyNCA5Ljc0MzkyIDExLjg1NzUgOS43NDM5MiAxMS42ODE4IDkuNTY4MTlDMTEuNTA2MSA5LjM5MjQ1IDExLjUwNjEgOS4xMDc1MyAxMS42ODE4IDguOTMxNzlMMTIuNjEzNiA3Ljk5OTk5SDkuNDk5OTlDOS4yMjM4NSA3Ljk5OTk5IDguOTk5OTkgNy43NzYxMyA4Ljk5OTk5IDcuNDk5OTlaTTMuMzE4MTkgNi4wNjgxOUwyLjM4NjM4IDYuOTk5OTlINS40OTk5OUM1Ljc3NjEzIDYuOTk5OTkgNS45OTk5OSA3LjIyMzg1IDUuOTk5OTkgNy40OTk5OUM1Ljk5OTk5IDcuNzc2MTMgNS43NzYxMyA3Ljk5OTk5IDUuNDk5OTkgNy45OTk5OUgyLjM4NjM4TDMuMzE4MTkgOC45MzE3OUMzLjQ5MzkyIDkuMTA3NTMgMy40OTM5MiA5LjM5MjQ1IDMuMzE4MTkgOS41NjgxOUMzLjE0MjQ1IDkuNzQzOTIgMi44NTc1MyA5Ljc0MzkyIDIuNjgxNzkgOS41NjgxOUwwLjkzMTc5IDcuODE4MTlDMC43NTYwNTQgNy42NDI0NSAwLjc1NjA1NCA3LjM1NzUzIDAuOTMxNzkgNy4xODE3OUwyLjY4MTc5IDUuNDMxNzlDMi44NTc1MyA1LjI1NjA1IDMuMTQyNDUgNS4yNTYwNSAzLjMxODE5IDUuNDMxNzlDMy40OTM5MiA1LjYwNzUzIDMuNDkzOTIgNS44OTI0NSAzLjMxODE5IDYuMDY4MTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxWbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4yNTc4MSAzLjExNjg0QzMuNjc3NzEgMy40NTc5NiAzLjgzNTIzIDMuNDMxOTMgNC42MjM2OSAzLjM3OTMzTDEyLjA1NzEgMi45MzI5OUMxMi4yMTQ3IDIuOTMyOTkgMTIuMDgzNiAyLjc3NTcxIDEyLjAzMTEgMi43NDk1N0wxMC43OTY1IDEuODU3MTFDMTAuNTYgMS42NzM0NyAxMC4yNDQ4IDEuNDYzMTUgOS42NDA4MyAxLjUxNTc2TDIuNDQzMDggMi4wNDA3NEMyLjE4MDU5IDIuMDY2NzcgMi4xMjgxNSAyLjE5ODAxIDIuMjMyNyAyLjMwMzIyTDMuMjU3ODEgMy4xMTY4NFpNMy43MDQxIDQuODQ5MTdWMTIuNjcwNEMzLjcwNDEgMTMuMDkwNyAzLjkxNDE1IDEzLjI0OCA0LjM4NjkzIDEzLjIyMkwxMi41NTYyIDEyLjc0OTNDMTMuMDI5MiAxMi43MjMzIDEzLjA4MTkgMTIuNDM0MSAxMy4wODE5IDEyLjA5MjdWNC4zMjM5N0MxMy4wODE5IDMuOTgzMDYgMTIuOTUwOCAzLjc5OTIxIDEyLjY2MTIgMy44MjU0NUw0LjEyNDIyIDQuMzIzOTdDMy44MDkxOCA0LjM1MDQ0IDMuNzA0MSA0LjUwODAzIDMuNzA0MSA0Ljg0OTE3Wk0xMS43Njg4IDUuMjY4NzJDMTEuODIxMiA1LjUwNTE4IDExLjc2ODggNS43NDE0MiAxMS41MzE5IDUuNzY3OTlMMTEuMTM4MyA1Ljg0NjQxVjExLjYyMDVDMTAuNzk2NSAxMS44MDQyIDEwLjQ4MTQgMTEuOTA5MiAxMC4yMTg4IDExLjkwOTJDOS43OTgzNSAxMS45MDkyIDkuNjkzMDUgMTEuNzc3OSA5LjM3ODEyIDExLjM4NDRMNi44MDM0NSA3LjM0MjQ5VjExLjI1MzJMNy42MTgxNiAxMS40MzdDNy42MTgxNiAxMS40MzcgNy42MTgxNiAxMS45MDkyIDYuOTYwODYgMTEuOTA5Mkw1LjE0ODc5IDEyLjAxNDNDNS4wOTYxNSAxMS45MDkyIDUuMTQ4NzkgMTEuNjQ3IDUuMzMyNTkgMTEuNTk0NEw1LjgwNTQ2IDExLjQ2MzRWNi4yOTI3Nkw1LjE0ODkgNi4yNDAxNUM1LjA5NjI1IDYuMDAzNjkgNS4yMjczOSA1LjY2Mjc4IDUuNTk1NCA1LjYzNjMxTDcuNTM5MzUgNS41MDUyOEwxMC4yMTg4IDkuNTk5OFY1Ljk3NzY1TDkuNTM1NjQgNS44OTkyNEM5LjQ4MzIgNS42MTAxOCA5LjY5MzA1IDUuNDAwMjggOS45NTU3NiA1LjM3NDI1TDExLjc2ODggNS4yNjg3MlpNMS44Mzg3NCAxLjMzMjEyTDkuMzI1NTcgMC43ODA3ODdDMTAuMjQ1IDAuNzAxOTMyIDEwLjQ4MTUgMC43NTQ3NTMgMTEuMDU5NCAxLjE3NDUyTDEzLjQ0OTIgMi44NTQyNEMxMy44NDM2IDMuMTQzMDkgMTMuOTc1IDMuMjIxNzMgMTMuOTc1IDMuNTM2NjFWMTIuNzQ5M0MxMy45NzUgMTMuMzI2NiAxMy43NjQ3IDEzLjY2ODEgMTMuMDI5MyAxMy43MjAzTDQuMzM0OTIgMTQuMjQ1NEMzLjc4MjkxIDE0LjI3MTcgMy41MjAxOSAxNC4xOTMgMy4yMzExMSAxMy44MjUzTDEuNDcxMTYgMTEuNTQxOUMxLjE1NTggMTEuMTIxNiAxLjAyNDY2IDEwLjgwNzEgMS4wMjQ2NiAxMC40MzkyVjIuMjUwNDFDMS4wMjQ2NiAxLjc3ODI1IDEuMjM1MDQgMS4zODQ0MSAxLjgzODc0IDEuMzMyMTJaXCIsZmlsbDpufSkpfSxCbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDEuNUM0LjUgNC4yNSAzIDYuNSAzIDlDMyAxMS40ODUzIDUuMDE0NzIgMTMuNSA3LjUgMTMuNUM5Ljk4NTI4IDEzLjUgMTIgMTEuNDg1MyAxMiA5QzEyIDYuNSAxMC41IDQuMjUgNy41IDEuNVpNMTEgOUMxMSA3LjExMjAzIDkuOTczMTUgNS4yNzE5NSA3LjUgMi44NzM1N0M1LjAyNjg2IDUuMjcxOTUgNCA3LjExMjAzIDQgOUM0IDEwLjkzMyA1LjU2NyAxMi41IDcuNSAxMi41QzkuNDMzIDEyLjUgMTEgMTAuOTMzIDExIDlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxEbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy40OTk4NSAxLjEwMDAxQzMuMjc4OTQgMS4xMDAwMSAzLjA5OTg1IDEuMjc5MDkgMy4wOTk4NSAxLjUwMDAxQzMuMDk5ODUgMS43MjA5MiAzLjI3ODk0IDEuOTAwMDEgMy40OTk4NSAxLjkwMDAxSDExLjQ5OTlDMTEuNzIwOCAxLjkwMDAxIDExLjg5OTkgMS43MjA5MiAxMS44OTk5IDEuNTAwMDFDMTEuODk5OSAxLjI3OTA5IDExLjcyMDggMS4xMDAwMSAxMS40OTk5IDEuMTAwMDFIMy40OTk4NVpNNC45OTk5NSA0LjI1MDAxQzQuOTk5OTUgMy45NzM4NyA0Ljc3NjA5IDMuNzUwMDEgNC40OTk5NSAzLjc1MDAxQzQuMjIzODEgMy43NTAwMSAzLjk5OTk1IDMuOTczODcgMy45OTk5NSA0LjI1MDAxVjkuNTUwMDFDMy45OTk5NSAxMS40ODMgNS41NjY5NSAxMy4wNSA3LjQ5OTk1IDEzLjA1QzkuNDMyOTUgMTMuMDUgMTEgMTEuNDgzIDExIDkuNTUwMDFWNC4yNTAwMUMxMSAzLjk3Mzg3IDEwLjc3NjEgMy43NTAwMSAxMC41IDMuNzUwMDFDMTAuMjIzOCAzLjc1MDAxIDkuOTk5OTUgMy45NzM4NyA5Ljk5OTk1IDQuMjUwMDFWOS41NTAwMUM5Ljk5OTk1IDEwLjkzMDcgOC44ODA2NiAxMi4wNSA3LjQ5OTk1IDEyLjA1QzYuMTE5MjQgMTIuMDUgNC45OTk5NSAxMC45MzA3IDQuOTk5OTUgOS41NTAwMVY0LjI1MDAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuODU3MTQgMkgxMi4xNDI5QzEyLjYxNjIgMiAxMyAyLjM4Mzc2IDEzIDIuODU3MTRWMTIuMTQyOUMxMyAxMi42MTYyIDEyLjYxNjIgMTMgMTIuMTQyOSAxM0gyLjg1NzE0QzIuMzgzNzYgMTMgMiAxMi42MTYyIDIgMTIuMTQyOVYyLjg1NzE0QzIgMi4zODM3NiAyLjM4Mzc2IDIgMi44NTcxNCAyWk0xIDIuODU3MTRDMSAxLjgzMTQ3IDEuODMxNDcgMSAyLjg1NzE0IDFIMTIuMTQyOUMxMy4xNjg1IDEgMTQgMS44MzE0NyAxNCAyLjg1NzE0VjEyLjE0MjlDMTQgMTMuMTY4NSAxMy4xNjg1IDE0IDEyLjE0MjkgMTRIMi44NTcxNEMxLjgzMTQ3IDE0IDEgMTMuMTY4NSAxIDEyLjE0MjlWMi44NTcxNFpNNy40OTk4OCA1LjAwMDEyQzcuNzc2MDIgNS4wMDAxMiA3Ljk5OTg4IDQuNzc2MjYgNy45OTk4OCA0LjUwMDEyQzcuOTk5ODggNC4yMjM5OCA3Ljc3NjAyIDQuMDAwMTIgNy40OTk4OCA0LjAwMDEyQzcuMjIzNzQgNC4wMDAxMiA2Ljk5OTg4IDQuMjIzOTggNi45OTk4OCA0LjUwMDEyQzYuOTk5ODggNC43NzYyNiA3LjIyMzc0IDUuMDAwMTIgNy40OTk4OCA1LjAwMDEyWk00LjQ5OTg4IDExLjAwMDFDNC43NzYwMiAxMS4wMDAxIDQuOTk5ODggMTAuNzc2MyA0Ljk5OTg4IDEwLjUwMDFDNC45OTk4OCAxMC4yMjQgNC43NzYwMiAxMC4wMDAxIDQuNDk5ODggMTAuMDAwMUM0LjIyMzc0IDEwLjAwMDEgMy45OTk4OCAxMC4yMjQgMy45OTk4OCAxMC41MDAxQzMuOTk5ODggMTAuNzc2MyA0LjIyMzc0IDExLjAwMDEgNC40OTk4OCAxMS4wMDAxWk00Ljk5OTg4IDcuNTAwMTJDNC45OTk4OCA3Ljc3NjI2IDQuNzc2MDIgOC4wMDAxMiA0LjQ5OTg4IDguMDAwMTJDNC4yMjM3NCA4LjAwMDEyIDMuOTk5ODggNy43NzYyNiAzLjk5OTg4IDcuNTAwMTJDMy45OTk4OCA3LjIyMzk4IDQuMjIzNzQgNy4wMDAxMiA0LjQ5OTg4IDcuMDAwMTJDNC43NzYwMiA3LjAwMDEyIDQuOTk5ODggNy4yMjM5OCA0Ljk5OTg4IDcuNTAwMTJaTTQuNDk5ODggNS4wMDAxMkM0Ljc3NjAyIDUuMDAwMTIgNC45OTk4OCA0Ljc3NjI2IDQuOTk5ODggNC41MDAxMkM0Ljk5OTg4IDQuMjIzOTggNC43NzYwMiA0LjAwMDEyIDQuNDk5ODggNC4wMDAxMkM0LjIyMzc0IDQuMDAwMTIgMy45OTk4OCA0LjIyMzk4IDMuOTk5ODggNC41MDAxMkMzLjk5OTg4IDQuNzc2MjYgNC4yMjM3NCA1LjAwMDEyIDQuNDk5ODggNS4wMDAxMlpNMTAuOTk5OSAxMC41MDAxQzEwLjk5OTkgMTAuNzc2MyAxMC43NzYgMTEuMDAwMSAxMC40OTk5IDExLjAwMDFDMTAuMjIzNyAxMS4wMDAxIDkuOTk5ODggMTAuNzc2MyA5Ljk5OTg4IDEwLjUwMDFDOS45OTk4OCAxMC4yMjQgMTAuMjIzNyAxMC4wMDAxIDEwLjQ5OTkgMTAuMDAwMUMxMC43NzYgMTAuMDAwMSAxMC45OTk5IDEwLjIyNCAxMC45OTk5IDEwLjUwMDFaTTEwLjQ5OTkgOC4wMDAxMkMxMC43NzYgOC4wMDAxMiAxMC45OTk5IDcuNzc2MjYgMTAuOTk5OSA3LjUwMDEyQzEwLjk5OTkgNy4yMjM5OCAxMC43NzYgNy4wMDAxMiAxMC40OTk5IDcuMDAwMTJDMTAuMjIzNyA3LjAwMDEyIDkuOTk5ODggNy4yMjM5OCA5Ljk5OTg4IDcuNTAwMTJDOS45OTk4OCA3Ljc3NjI2IDEwLjIyMzcgOC4wMDAxMiAxMC40OTk5IDguMDAwMTJaTTEwLjk5OTkgNC41MDAxMkMxMC45OTk5IDQuNzc2MjYgMTAuNzc2IDUuMDAwMTIgMTAuNDk5OSA1LjAwMDEyQzEwLjIyMzcgNS4wMDAxMiA5Ljk5OTg4IDQuNzc2MjYgOS45OTk4OCA0LjUwMDEyQzkuOTk5ODggNC4yMjM5OCAxMC4yMjM3IDQuMDAwMTIgMTAuNDk5OSA0LjAwMDEyQzEwLjc3NiA0LjAwMDEyIDEwLjk5OTkgNC4yMjM5OCAxMC45OTk5IDQuNTAwMTJaTTcuNDk5ODggMTEuMDAwMUM3Ljc3NjAyIDExLjAwMDEgNy45OTk4OCAxMC43NzYzIDcuOTk5ODggMTAuNTAwMUM3Ljk5OTg4IDEwLjIyNCA3Ljc3NjAyIDEwLjAwMDEgNy40OTk4OCAxMC4wMDAxQzcuMjIzNzQgMTAuMDAwMSA2Ljk5OTg4IDEwLjIyNCA2Ljk5OTg4IDEwLjUwMDFDNi45OTk4OCAxMC43NzYzIDcuMjIzNzQgMTEuMDAwMSA3LjQ5OTg4IDExLjAwMDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSwkbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS4yMDMwNyAxLjA0MzEyQzEuMDA0ODEgMC45NTQ5OTggMC43NzIzNCAxLjAwNDggMC42Mjc1NzcgMS4xNjY0MUMwLjQ4MjgxMyAxLjMyODAyIDAuNDU4Nzk0IDEuNTY0NTUgMC41NjgxMTYgMS43NTE5NkwzLjkyMTE1IDcuNTAwMDJMMC41NjgxMTYgMTMuMjQ4MUMwLjQ1ODc5NCAxMy40MzU1IDAuNDgyODEzIDEzLjY3MiAwLjYyNzU3NyAxMy44MzM2QzAuNzcyMzQgMTMuOTk1MiAxLjAwNDgxIDE0LjA0NSAxLjIwMzA3IDEzLjk1NjlMMTQuNzAzMSA3Ljk1NjkyQzE0Ljg4MzYgNy44NzY2NyAxNSA3LjY5NzYxIDE1IDcuNTAwMDJDMTUgNy4zMDI0MiAxNC44ODM2IDcuMTIzMzYgMTQuNzAzMSA3LjA0MzExTDEuMjAzMDcgMS4wNDMxMlpNNC44NDU1MiA3LjEwMDAyTDIuMjEyMzQgMi41ODZMMTMuMjY4OSA3LjUwMDAyTDIuMjEyMzQgMTIuNDE0TDQuODQ1NTIgNy45MDAwMkg5QzkuMjIwOTEgNy45MDAwMiA5LjQgNy43MjA5NCA5LjQgNy41MDAwMkM5LjQgNy4yNzkxMSA5LjIyMDkxIDcuMTAwMDIgOSA3LjEwMDAySDQuODQ1NTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxGbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi4wNDk5NSAyLjc0OTk4QzYuMDQ5OTUgMi40NDYyMyA1LjgwMzcxIDIuMTk5OTggNS40OTk5NSAyLjE5OTk4QzUuMTk2MTkgMi4xOTk5OCA0Ljk0OTk1IDIuNDQ2MjMgNC45NDk5NSAyLjc0OTk4VjEyLjI1QzQuOTQ5OTUgMTIuNTUzNyA1LjE5NjE5IDEyLjggNS40OTk5NSAxMi44QzUuODAzNzEgMTIuOCA2LjA0OTk1IDEyLjU1MzcgNi4wNDk5NSAxMi4yNVYyLjc0OTk4Wk0xMC4wNSAyLjc0OTk4QzEwLjA1IDIuNDQ2MjMgOS44MDM3MSAyLjE5OTk4IDkuNDk5OTUgMi4xOTk5OEM5LjE5NjE5IDIuMTk5OTggOC45NDk5NSAyLjQ0NjIzIDguOTQ5OTUgMi43NDk5OFYxMi4yNUM4Ljk0OTk1IDEyLjU1MzcgOS4xOTYxOSAxMi44IDkuNDk5OTUgMTIuOEM5LjgwMzcxIDEyLjggMTAuMDUgMTIuNTUzNyAxMC4wNSAxMi4yNVYyLjc0OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjg1MzYgMS4xNDY0NUMxMS42NTgzIDAuOTUxMTg0IDExLjM0MTcgMC45NTExODQgMTEuMTQ2NSAxLjE0NjQ1TDMuNzE0NTUgOC41NzgzNkMzLjYyNDU5IDguNjY4MzIgMy41NTI2MyA4Ljc3NDYxIDMuNTAyNTEgOC44OTE1NUwyLjA0MDQ0IDEyLjMwM0MxLjk1OTkgMTIuNDkxIDIuMDAxODkgMTIuNzA5IDIuMTQ2NDYgMTIuODUzNkMyLjI5MTAzIDEyLjk5ODEgMi41MDkwNSAxMy4wNDAxIDIuNjk2OTcgMTIuOTU5Nkw2LjEwODQ3IDExLjQ5NzVDNi4yMjU0IDExLjQ0NzQgNi4zMzE3IDExLjM3NTQgNi40MjE2NiAxMS4yODU1TDEzLjg1MzYgMy44NTM1NUMxNC4wNDg4IDMuNjU4MjkgMTQuMDQ4OCAzLjM0MTcxIDEzLjg1MzYgMy4xNDY0NUwxMS44NTM2IDEuMTQ2NDVaTTQuNDIxNjYgOS4yODU0N0wxMS41IDIuMjA3MTFMMTIuNzkyOSAzLjVMNS43MTQ1NSAxMC41Nzg0TDQuMjE5MjQgMTEuMjE5MkwzLjc4MDgxIDEwLjc4MDhMNC40MjE2NiA5LjI4NTQ3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjE0NjQgMS4xNDY0NUMxMi4zNDE3IDAuOTUxMTg0IDEyLjY1ODMgMC45NTExODQgMTIuODUzNSAxLjE0NjQ1TDE0Ljg1MzUgMy4xNDY0NUMxNS4wNDg4IDMuMzQxNzEgMTUuMDQ4OCAzLjY1ODI5IDE0Ljg1MzUgMy44NTM1NUwxMC45MTA5IDcuNzk2MThDMTAuODM0OSA3Ljg3MjE4IDEwLjc0NzEgNy45MzU0MyAxMC42NTEgNy45ODM1TDYuNzIzNTkgOS45NDcyMUM2LjUzMTA5IDEwLjA0MzUgNi4yOTg2MSAxMC4wMDU3IDYuMTQ2NDMgOS44NTM1NUM1Ljk5NDI1IDkuNzAxMzcgNS45NTY1MiA5LjQ2ODg5IDYuMDUyNzcgOS4yNzYzOUw4LjAxNjQ4IDUuMzQ4OTdDOC4wNjQ1NSA1LjI1MjgzIDguMTI3OCA1LjE2NTA3IDguMjAzOCA1LjA4OTA3TDEyLjE0NjQgMS4xNDY0NVpNMTIuNSAyLjIwNzExTDguOTEwOTEgNS43OTYxOEw3Ljg3MjY2IDcuODcyNjdMOC4xMjczMSA4LjEyNzMyTDEwLjIwMzggNy4wODkwN0wxMy43OTI5IDMuNUwxMi41IDIuMjA3MTFaTTkuOTk5OTggMkw4Ljk5OTk4IDNINC45QzQuNDcxNzEgMyA0LjE4MDU2IDMuMDAwMzkgMy45NTU1MiAzLjAxODc3QzMuNzM2MzEgMy4wMzY2OCAzLjYyNDIxIDMuMDY5MTUgMy41NDYwMSAzLjEwODk5QzMuMzU3ODUgMy4yMDQ4NyAzLjIwNDg3IDMuMzU3ODUgMy4xMDg5OSAzLjU0NjAxQzMuMDY5MTUgMy42MjQyMSAzLjAzNjY5IDMuNzM2MzEgMy4wMTg3OCAzLjk1NTUyQzMuMDAwMzkgNC4xODA1NiAzIDQuNDcxNzEgMyA0LjlWMTEuMUMzIDExLjUyODMgMy4wMDAzOSAxMS44MTk0IDMuMDE4NzggMTIuMDQ0NUMzLjAzNjY5IDEyLjI2MzcgMy4wNjkxNSAxMi4zNzU4IDMuMTA4OTkgMTIuNDU0QzMuMjA0ODcgMTIuNjQyMiAzLjM1Nzg1IDEyLjc5NTEgMy41NDYwMSAxMi44OTFDMy42MjQyMSAxMi45MzA5IDMuNzM2MzEgMTIuOTYzMyAzLjk1NTUyIDEyLjk4MTJDNC4xODA1NiAxMi45OTk2IDQuNDcxNzEgMTMgNC45IDEzSDExLjFDMTEuNTI4MyAxMyAxMS44MTk0IDEyLjk5OTYgMTIuMDQ0NSAxMi45ODEyQzEyLjI2MzcgMTIuOTYzMyAxMi4zNzU4IDEyLjkzMDkgMTIuNDU0IDEyLjg5MUMxMi42NDIyIDEyLjc5NTEgMTIuNzk1MSAxMi42NDIyIDEyLjg5MSAxMi40NTRDMTIuOTMwOSAxMi4zNzU4IDEyLjk2MzMgMTIuMjYzNyAxMi45ODEyIDEyLjA0NDVDMTIuOTk5NiAxMS44MTk0IDEzIDExLjUyODMgMTMgMTEuMVY2Ljk5OTk4TDE0IDUuOTk5OThWMTEuMVYxMS4xMjA3QzE0IDExLjUyMzEgMTQgMTEuODU1MyAxMy45Nzc5IDEyLjEyNTlDMTMuOTU0OSAxMi40MDcgMTMuOTA1NyAxMi42NjUzIDEzLjc4MiAxMi45MDhDMTMuNTkwMyAxMy4yODQzIDEzLjI4NDMgMTMuNTkwMyAxMi45MDggMTMuNzgyQzEyLjY2NTMgMTMuOTA1NyAxMi40MDcgMTMuOTU0OSAxMi4xMjU5IDEzLjk3NzlDMTEuODU1MyAxNCAxMS41MjMxIDE0IDExLjEyMDcgMTRIMTEuMUg0LjlINC44NzkzNEM0LjQ3Njg2IDE0IDQuMTQ0NjggMTQgMy44NzQwOSAxMy45Nzc5QzMuNTkzMDQgMTMuOTU0OSAzLjMzNDY5IDEzLjkwNTcgMy4wOTIwMiAxMy43ODJDMi43MTU3IDEzLjU5MDMgMi40MDk3MyAxMy4yODQzIDIuMjE3OTkgMTIuOTA4QzIuMDk0MzQgMTIuNjY1MyAyLjA0NTA2IDEyLjQwNyAyLjAyMjEgMTIuMTI1OUMxLjk5OTk5IDExLjg1NTMgMS45OTk5OSAxMS41MjMxIDIgMTEuMTIwN1YxMS4xMjA2VjExLjFWNC45VjQuODc5MzVWNC44NzkzMlY0Ljg3OTMxQzEuOTk5OTkgNC40NzY4NSAxLjk5OTk5IDQuMTQ0NjggMi4wMjIxIDMuODc0MDlDMi4wNDUwNiAzLjU5MzA0IDIuMDk0MzQgMy4zMzQ2OSAyLjIxNzk5IDMuMDkyMDJDMi40MDk3MyAyLjcxNTY5IDIuNzE1NyAyLjQwOTczIDMuMDkyMDIgMi4yMTc5OUMzLjMzNDY5IDIuMDk0MzQgMy41OTMwNCAyLjA0NTA2IDMuODc0MDkgMi4wMjIxQzQuMTQ0NjggMS45OTk5OSA0LjQ3Njg1IDEuOTk5OTkgNC44NzkzMiAySDQuODc5MzVINC45SDkuOTk5OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxXbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDAuODc1QzUuNDk3OTcgMC44NzUgMy44NzUgMi40OTc5NyAzLjg3NSA0LjVDMy44NzUgNi4xNTI4OCA0Ljk4MTI0IDcuNTQ3MzggNi40OTM3MyA3Ljk4MzUxQzUuMjk5NyA4LjEyOTAxIDQuMjc1NTcgOC41NTEzNCAzLjUwNDA3IDkuMzExNjdDMi41MjIxNiAxMC4yNzk0IDIuMDI1MDIgMTEuNzIgMi4wMjUwMiAxMy41OTk5QzIuMDI1MDIgMTMuODYyMyAyLjIzNzY5IDE0LjA3NDkgMi41MDAwMiAxNC4wNzQ5QzIuNzYyMzYgMTQuMDc0OSAyLjk3NTAyIDEzLjg2MjMgMi45NzUwMiAxMy41OTk5QzIuOTc1MDIgMTEuODc5OSAzLjQyNzg2IDEwLjcyMDYgNC4xNzA5MSA5Ljk4ODNDNC45MTUzNiA5LjI1NDYzIDYuMDI2NzQgOC44NzQ5OSA3LjQ5OTk1IDguODc0OTlDOC45NzMxNyA4Ljg3NDk5IDEwLjA4NDYgOS4yNTQ2MyAxMC44MjkxIDkuOTg4MzFDMTEuNTcyMSAxMC43MjA2IDEyLjAyNSAxMS44Nzk5IDEyLjAyNSAxMy41OTk5QzEyLjAyNSAxMy44NjIzIDEyLjIzNzYgMTQuMDc0OSAxMi41IDE0LjA3NDlDMTIuNzYyMyAxNC4wNzUgMTIuOTc1IDEzLjg2MjMgMTIuOTc1IDEzLjZDMTIuOTc1IDExLjcyIDEyLjQ3NzggMTAuMjc5NCAxMS40OTU5IDkuMzExNjZDMTAuNzI0NCA4LjU1MTM1IDkuNzAwMjUgOC4xMjkwMyA4LjUwNjI1IDcuOTgzNTJDMTAuMDE4NyA3LjU0NzQgMTEuMTI1IDYuMTUyODkgMTEuMTI1IDQuNUMxMS4xMjUgMi40OTc5NyA5LjUwMjAzIDAuODc1IDcuNSAwLjg3NVpNNC44MjUgNC41QzQuODI1IDMuMDIyNjQgNi4wMjI2NCAxLjgyNSA3LjUgMS44MjVDOC45NzczNiAxLjgyNSAxMC4xNzUgMy4wMjI2NCAxMC4xNzUgNC41QzEwLjE3NSA1Ljk3NzM2IDguOTc3MzYgNy4xNzUgNy41IDcuMTc1QzYuMDIyNjQgNy4xNzUgNC44MjUgNS45NzczNiA0LjgyNSA0LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx6bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS44NTAwMSA3LjUwMDQzQzEuODUwMDEgNC4zNzk3NSA0LjM3OTYzIDEuODUwMDEgNy41MDAwMSAxLjg1MDAxQzEwLjYyMDQgMS44NTAwMSAxMy4xNSA0LjM3OTc1IDEzLjE1IDcuNTAwNDNDMTMuMTUgMTAuNjIxMSAxMC42MjA0IDEzLjE1MDkgNy41MDAwMSAxMy4xNTA5QzQuMzc5NjMgMTMuMTUwOSAxLjg1MDAxIDEwLjYyMTEgMS44NTAwMSA3LjUwMDQzWk03LjUwMDAxIDAuODUwMDA2QzMuODI3MjggMC44NTAwMDYgMC44NTAwMDYgMy44Mjc1MyAwLjg1MDAwNiA3LjUwMDQzQzAuODUwMDA2IDExLjE3MzMgMy44MjcyOCAxNC4xNTA5IDcuNTAwMDEgMTQuMTUwOUMxMS4xNzI3IDE0LjE1MDkgMTQuMTUgMTEuMTczMyAxNC4xNSA3LjUwMDQzQzE0LjE1IDMuODI3NTMgMTEuMTcyNyAwLjg1MDAwNiA3LjUwMDAxIDAuODUwMDA2Wk03LjAwMDAxIDguMDAwMDFWMy4xMjgxMUM3LjE2NDExIDMuMTA5NTQgNy4zMzA5NCAzLjEwMDAxIDcuNTAwMDEgMy4xMDAwMUM5LjkzMDA2IDMuMTAwMDEgMTEuOSA1LjA3MDE0IDExLjkgNy41MDA0M0MxMS45IDcuNjY5MzUgMTEuODkwNSA3LjgzNjA0IDExLjg3MiA4LjAwMDAxSDcuMDAwMDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxHbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyA1LjVDMyA3Ljk4MyA0Ljk5MTY5IDkgNyA5VjEyLjVDNyAxMi43NzYxIDcuMjIzODYgMTMgNy41IDEzQzcuNzc2MTQgMTMgOCAxMi43NzYxIDggMTIuNVY5VjMuMUg5VjEyLjVDOSAxMi43NzYxIDkuMjIzODYgMTMgOS41IDEzQzkuNzc2MTQgMTMgMTAgMTIuNzc2MSAxMCAxMi41VjMuMUgxMS41QzExLjgwMzggMy4xIDEyLjA1IDIuODUzNzYgMTIuMDUgMi41NUMxMi4wNSAyLjI0NjI0IDExLjgwMzggMiAxMS41IDJIOS41SDhINy41SDdDNC45OTE2OSAyIDMgMy4wMTcgMyA1LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxxbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuNSAxMy45NUMxMy43NDg1IDEzLjk1IDEzLjk1IDEzLjc0ODUgMTMuOTUgMTMuNUMxMy45NSAxMy4yNTE0IDEzLjc0ODUgMTMuMDUgMTMuNSAxMy4wNUwxLjQ5OTk1IDEzLjA1QzEuMjUxNDIgMTMuMDUgMS4wNDk5NSAxMy4yNTE0IDEuMDQ5OTUgMTMuNUMxLjA0OTk1IDEzLjc0ODUgMS4yNTE0MiAxMy45NSAxLjQ5OTk1IDEzLjk1TDEzLjUgMTMuOTVaTTExLjA2ODEgNy41NjgzQzExLjI0MzkgNy4zOTI1NyAxMS4yNDM5IDcuMTA3NjQgMTEuMDY4MSA2LjkzMTkxQzEwLjg5MjQgNi43NTYxNyAxMC42MDc1IDYuNzU2MTcgMTAuNDMxNyA2LjkzMTkxTDcuOTQ5OTMgOS40MTM3MUw3Ljk0OTkzIDEuNDk5OThDNy45NDk5MyAxLjI1MTQ2IDcuNzQ4NDYgMS4wNDk5OCA3LjQ5OTkzIDEuMDQ5OThDNy4yNTE0IDEuMDQ5OTggNy4wNDk5MyAxLjI1MTQ2IDcuMDQ5OTMgMS40OTk5OEw3LjA0OTkzIDkuNDEzNzFMNC41NjgxMyA2LjkzMTkxQzQuMzkyMzkgNi43NTYxNyA0LjEwNzQ2IDYuNzU2MTcgMy45MzE3MyA2LjkzMTkxQzMuNzU1OTkgNy4xMDc2NCAzLjc1NTk5IDcuMzkyNTcgMy45MzE3MyA3LjU2ODNMNy4xODE3MyAxMC44MTgzQzcuMzU3NDYgMTAuOTk0IDcuNjQyMzkgMTAuOTk0IDcuODE4MTIgMTAuODE4M0wxMS4wNjgxIDcuNTY4M1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFluPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjA1MDA1IDEzLjVDMi4wNTAwNSAxMy43NDg1IDIuMjUxNTIgMTMuOTUgMi41MDAwNSAxMy45NUMyLjc0ODU4IDEzLjk1IDIuOTUwMDUgMTMuNzQ4NSAyLjk1MDA1IDEzLjVMMi45NTAwNSAxLjQ5OTk1QzIuOTUwMDUgMS4yNTE0MiAyLjc0ODU4IDEuMDQ5OTUgMi41MDAwNSAxLjA0OTk1QzIuMjUxNTIgMS4wNDk5NSAyLjA1MDA1IDEuMjUxNDIgMi4wNTAwNSAxLjQ5OTk1TDIuMDUwMDUgMTMuNVpNOC40MzE3IDExLjA2ODFDOC42MDc0MyAxMS4yNDM5IDguODkyMzYgMTEuMjQzOSA5LjA2ODA5IDExLjA2ODFDOS4yNDM4MyAxMC44OTI0IDkuMjQzODMgMTAuNjA3NSA5LjA2ODA5IDEwLjQzMTdMNi41ODYyOSA3Ljk0OTkzTDE0LjUgNy45NDk5M0MxNC43NDg1IDcuOTQ5OTMgMTQuOTUgNy43NDg0NiAxNC45NSA3LjQ5OTkzQzE0Ljk1IDcuMjUxNCAxNC43NDg1IDcuMDQ5OTMgMTQuNSA3LjA0OTkzTDYuNTg2MjkgNy4wNDk5M0w5LjA2ODA5IDQuNTY4MTNDOS4yNDM4MyA0LjM5MjM5IDkuMjQzODMgNC4xMDc0NiA5LjA2ODA5IDMuOTMxNzNDOC44OTIzNiAzLjc1NTk5IDguNjA3NDMgMy43NTU5OSA4LjQzMTcgMy45MzE3M0w1LjE4MTcgNy4xODE3M0M1LjAwNTk2IDcuMzU3NDYgNS4wMDU5NiA3LjY0MjM5IDUuMTgxNyA3LjgxODEyTDguNDMxNyAxMS4wNjgxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sS249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjk1IDEuNTAwMDVDMTIuOTUgMS4yNTE1MiAxMi43NDg1IDEuMDUwMDUgMTIuNSAxLjA1MDA1QzEyLjI1MTQgMS4wNTAwNSAxMi4wNSAxLjI1MTUyIDEyLjA1IDEuNTAwMDVMMTIuMDUgMTMuNUMxMi4wNSAxMy43NDg2IDEyLjI1MTQgMTMuOTUgMTIuNSAxMy45NUMxMi43NDg1IDEzLjk1IDEyLjk1IDEzLjc0ODYgMTIuOTUgMTMuNUwxMi45NSAxLjUwMDA1Wk02LjU2ODMgMy45MzE4OEM2LjM5MjU3IDMuNzU2MTQgNi4xMDc2NCAzLjc1NjE0IDUuOTMxOTEgMy45MzE4OEM1Ljc1NjE3IDQuMTA3NjEgNS43NTYxNyA0LjM5MjU0IDUuOTMxOTEgNC41NjgyN0w4LjQxMzcxIDcuMDUwMDdMMC40OTk5ODQgNy4wNTAwN0MwLjI1MTQ1NiA3LjA1MDA3IDAuMDQ5OTg0NyA3LjI1MTU1IDAuMDQ5OTg0NyA3LjUwMDA3QzAuMDQ5OTg0NiA3Ljc0ODYgMC4yNTE0NTcgNy45NTAwNyAwLjQ5OTk4NCA3Ljk1MDA3TDguNDEzNzEgNy45NTAwN0w1LjkzMTkxIDEwLjQzMTlDNS43NTYxNyAxMC42MDc2IDUuNzU2MTcgMTAuODkyNSA1LjkzMTkxIDExLjA2ODNDNi4xMDc2NCAxMS4yNDQgNi4zOTI1NyAxMS4yNDQgNi41NjgzMSAxMS4wNjgzTDkuODE4MyA3LjgxODI3QzkuOTk0MDQgNy42NDI1NCA5Ljk5NDA0IDcuMzU3NjEgOS44MTgzIDcuMTgxODhMNi41NjgzIDMuOTMxODhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxYbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41MDAwNSAxLjA1MDA1QzEuMjUxNTIgMS4wNTAwNSAxLjA1MDA1IDEuMjUxNTIgMS4wNTAwNSAxLjUwMDA1QzEuMDUwMDUgMS43NDg1OCAxLjI1MTUyIDEuOTUwMDUgMS41MDAwNSAxLjk1MDA1TDEzLjUgMS45NTAwNUMxMy43NDg2IDEuOTUwMDUgMTMuOTUgMS43NDg1OCAxMy45NSAxLjUwMDA1QzEzLjk1IDEuMjUxNTIgMTMuNzQ4NiAxLjA1MDA1IDEzLjUgMS4wNTAwNUgxLjUwMDA1Wk0zLjkzMTg4IDcuNDMxNjlDMy43NTYxNCA3LjYwNzQzIDMuNzU2MTQgNy44OTIzNiAzLjkzMTg4IDguMDY4MDlDNC4xMDc2MSA4LjI0MzgzIDQuMzkyNTQgOC4yNDM4MyA0LjU2ODI3IDguMDY4MDlMNy4wNTAwNyA1LjU4NjI5VjEzLjVDNy4wNTAwNyAxMy43NDg1IDcuMjUxNTUgMTMuOTUgNy41MDAwNyAxMy45NUM3Ljc0ODYgMTMuOTUgNy45NTAwNyAxMy43NDg1IDcuOTUwMDcgMTMuNUw3Ljk1MDA3IDUuNTg2MjlMMTAuNDMxOSA4LjA2ODA5QzEwLjYwNzYgOC4yNDM4MyAxMC44OTI1IDguMjQzODMgMTEuMDY4MyA4LjA2ODA5QzExLjI0NCA3Ljg5MjM1IDExLjI0NCA3LjYwNzQzIDExLjA2ODMgNy40MzE2OUw3LjgxODI3IDQuMTgxNjlDNy42NDI1NCA0LjAwNTk2IDcuMzU3NjEgNC4wMDU5NiA3LjE4MTg4IDQuMTgxNjlMMy45MzE4OCA3LjQzMTY5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMjQxODIgMi4zMjE4MUMzLjM5MTkgMi4yMzEzMiAzLjU3ODQgMi4yMjYwMSAzLjczMzM4IDIuMzA3ODFMMTIuNzMzNCA3LjA1NzgxQzEyLjg5NzQgNy4xNDQzNiAxMyA3LjMxNDU3IDEzIDcuNUMxMyA3LjY4NTQzIDEyLjg5NzQgNy44NTU2NCAxMi43MzM0IDcuOTQyMTlMMy43MzMzOCAxMi42OTIyQzMuNTc4NCAxMi43NzQgMy4zOTE5IDEyLjc2ODcgMy4yNDE4MiAxMi42NzgyQzMuMDkxNzUgMTIuNTg3NyAzIDEyLjQyNTIgMyAxMi4yNVYyLjc1QzMgMi41NzQ3NiAzLjA5MTc1IDIuNDEyMyAzLjI0MTgyIDIuMzIxODFaTTQgMy41NzkyNVYxMS40MjA3TDExLjQyODggNy41TDQgMy41NzkyNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFFuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04IDIuNzVDOCAyLjQ3Mzg2IDcuNzc2MTQgMi4yNSA3LjUgMi4yNUM3LjIyMzg2IDIuMjUgNyAyLjQ3Mzg2IDcgMi43NVY3SDIuNzVDMi40NzM4NiA3IDIuMjUgNy4yMjM4NiAyLjI1IDcuNUMyLjI1IDcuNzc2MTQgMi40NzM4NiA4IDIuNzUgOEg3VjEyLjI1QzcgMTIuNTI2MSA3LjIyMzg2IDEyLjc1IDcuNSAxMi43NUM3Ljc3NjE0IDEyLjc1IDggMTIuNTI2MSA4IDEyLjI1VjhIMTIuMjVDMTIuNTI2MSA4IDEyLjc1IDcuNzc2MTQgMTIuNzUgNy41QzEyLjc1IDcuMjIzODYgMTIuNTI2MSA3IDEyLjI1IDdIOFYyLjc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzY4OTJDMy44NDIyMiAwLjg3Njg5MiAwLjg3NzA3NSAzLjg0MjA0IDAuODc3MDc1IDcuNDk5NzJDMC44NzcwNzUgMTEuMTU3NCAzLjg0MjIyIDE0LjEyMjYgNy40OTk5MSAxNC4xMjI2QzExLjE1NzYgMTQuMTIyNiAxNC4xMjI3IDExLjE1NzQgMTQuMTIyNyA3LjQ5OTcyQzE0LjEyMjcgMy44NDIwNCAxMS4xNTc2IDAuODc2ODkyIDcuNDk5OTEgMC44NzY4OTJaTTEuODI3MDcgNy40OTk3MkMxLjgyNzA3IDQuMzY2NzEgNC4zNjY4OSAxLjgyNjg5IDcuNDk5OTEgMS44MjY4OUMxMC42MzI5IDEuODI2ODkgMTMuMTcyNyA0LjM2NjcxIDEzLjE3MjcgNy40OTk3MkMxMy4xNzI3IDEwLjYzMjcgMTAuNjMyOSAxMy4xNzI2IDcuNDk5OTEgMTMuMTcyNkM0LjM2Njg5IDEzLjE3MjYgMS44MjcwNyAxMC42MzI3IDEuODI3MDcgNy40OTk3MlpNNy41MDAwMyA0QzcuNzc2MTcgNCA4LjAwMDAzIDQuMjIzODYgOC4wMDAwMyA0LjVWN0gxMC41QzEwLjc3NjIgNyAxMSA3LjIyMzg2IDExIDcuNUMxMSA3Ljc3NjE0IDEwLjc3NjIgOCAxMC41IDhIOC4wMDAwM1YxMC41QzguMDAwMDMgMTAuNzc2MSA3Ljc3NjE3IDExIDcuNTAwMDMgMTFDNy4yMjM4OSAxMSA3LjAwMDAzIDEwLjc3NjEgNy4wMDAwMyAxMC41VjhINC41MDAwM0M0LjIyMzg5IDggNC4wMDAwMyA3Ljc3NjE0IDQuMDAwMDMgNy41QzQuMDAwMDMgNy4yMjM4NiA0LjIyMzg5IDcgNC41MDAwMyA3SDcuMDAwMDNWNC41QzcuMDAwMDMgNC4yMjM4NiA3LjIyMzg5IDQgNy41MDAwMyA0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuMDc1MDUgNC4xMDAwMUM1LjA3NTA1IDIuOTExMDMgNi4yNTcyNyAxLjkyNTAyIDcuNTAwMDUgMS45MjUwMkM4Ljc0MjgzIDEuOTI1MDIgOS45MjUwNSAyLjkxMTAzIDkuOTI1MDUgNC4xMDAwMUM5LjkyNTA1IDUuMTk4NjEgOS4zNjc4MiA1LjcxNDM2IDguNjE4NTQgNi4zNzg4NEw4LjU4NzU3IDYuNDA2M0M3Ljg0NDgxIDcuMDY0NjcgNi45MjUwNSA3Ljg3OTk1IDYuOTI1MDUgOS41QzYuOTI1MDUgOS44MTc1NyA3LjE4MjQ4IDEwLjA3NSA3LjUwMDA1IDEwLjA3NUM3LjgxNzYxIDEwLjA3NSA4LjA3NTA1IDkuODE3NTcgOC4wNzUwNSA5LjVDOC4wNzUwNSA4LjQxNTE3IDguNjI5NDUgNy45MDYyMyA5LjM4MTU2IDcuMjM5MjVMOS40MDIzOCA3LjIyMDc5QzEwLjE0OTYgNi41NTgyOSAxMS4wNzUgNS43Mzc3NSAxMS4wNzUgNC4xMDAwMUMxMS4wNzUgMi4xMjc1NyA5LjIxODY5IDAuNzc1MDI0IDcuNTAwMDUgMC43NzUwMjRDNS43ODE0IDAuNzc1MDI0IDMuOTI1MDUgMi4xMjc1NyAzLjkyNTA1IDQuMTAwMDFDMy45MjUwNSA0LjQxNzU4IDQuMTgyNDkgNC42NzUwMSA0LjUwMDA1IDQuNjc1MDFDNC44MTc2MSA0LjY3NTAxIDUuMDc1MDUgNC40MTc1OCA1LjA3NTA1IDQuMTAwMDFaTTcuNTAwMDUgMTMuMzU3NUM3Ljk4MzMgMTMuMzU3NSA4LjM3NTA1IDEyLjk2NTcgOC4zNzUwNSAxMi40ODI1QzguMzc1MDUgMTEuOTk5MiA3Ljk4MzMgMTEuNjA3NSA3LjUwMDA1IDExLjYwNzVDNy4wMTY4IDExLjYwNzUgNi42MjUwNSAxMS45OTkyIDYuNjI1MDUgMTIuNDgyNUM2LjYyNTA1IDEyLjk2NTcgNy4wMTY4IDEzLjM1NzUgNy41MDAwNSAxMy4zNTc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuODc3MDc1IDcuNDk5NzJDMC44NzcwNzUgMy44NDIwNCAzLjg0MjIyIDAuODc2ODkyIDcuNDk5OTEgMC44NzY4OTJDMTEuMTU3NiAwLjg3Njg5MiAxNC4xMjI3IDMuODQyMDQgMTQuMTIyNyA3LjQ5OTcyQzE0LjEyMjcgMTEuMTU3NCAxMS4xNTc2IDE0LjEyMjYgNy40OTk5MSAxNC4xMjI2QzMuODQyMjIgMTQuMTIyNiAwLjg3NzA3NSAxMS4xNTc0IDAuODc3MDc1IDcuNDk5NzJaTTcuNDk5OTEgMS44MjY4OUM0LjM2Njg5IDEuODI2ODkgMS44MjcwOCA0LjM2NjcxIDEuODI3MDggNy40OTk3MkMxLjgyNzA4IDEwLjYzMjcgNC4zNjY4OSAxMy4xNzI2IDcuNDk5OTEgMTMuMTcyNkMxMC42MzI5IDEzLjE3MjYgMTMuMTcyNyAxMC42MzI3IDEzLjE3MjcgNy40OTk3MkMxMy4xNzI3IDQuMzY2NzEgMTAuNjMyOSAxLjgyNjg5IDcuNDk5OTEgMS44MjY4OVpNOC4yNDk5MyAxMC41QzguMjQ5OTMgMTAuOTE0MiA3LjkxNDE0IDExLjI1IDcuNDk5OTMgMTEuMjVDNy4wODU3MSAxMS4yNSA2Ljc0OTkzIDEwLjkxNDIgNi43NDk5MyAxMC41QzYuNzQ5OTMgMTAuMDg1OCA3LjA4NTcxIDkuNzUgNy40OTk5MyA5Ljc1QzcuOTE0MTQgOS43NSA4LjI0OTkzIDEwLjA4NTggOC4yNDk5MyAxMC41Wk02LjA1MDAzIDYuMjVDNi4wNTAwMyA1LjU3MjExIDYuNjM1MTEgNC45MjUgNy41MDAwMyA0LjkyNUM4LjM2NDk2IDQuOTI1IDguOTUwMDMgNS41NzIxMSA4Ljk1MDAzIDYuMjVDOC45NTAwMyA2Ljc0MTE4IDguNjgwMDIgNi45OTIxMiA4LjIxNDQ3IDcuMjc0OTRDOC4xNjI1MSA3LjMwNjUxIDguMTAyNTggNy4zNDEzMSA4LjAzODQ3IDcuMzc4NTRMOC4wMzg0MSA3LjM3ODU4QzcuODU1MjEgNy40ODQ5NyA3LjYzNzg4IDcuNjExMTkgNy40NzQ0OSA3LjczODQ5QzcuMjMyMTQgNy45MjczMiA2Ljk1MDAzIDguMjMxOTggNi45NTAwMyA4LjdDNi45NTAwNCA5LjAwMzc2IDcuMTk2MjggOS4yNSA3LjUwMDA0IDkuMjVDNy44MDI0IDkuMjUgOC4wNDc3OCA5LjAwNjAxIDguMDUwMDIgOC43MDQxN0w4LjA1MDU2IDguNzAzM0M4LjA1OTI0IDguNjg5NiA4LjA4NDkzIDguNjU3MzUgOC4xNTA1OCA4LjYwNjJDOC4yNTIwNyA4LjUyNzEyIDguMzY1MDggOC40NjE2MyA4LjUxNTY3IDguMzc0MzZMOC41MTU3MSA4LjM3NDMzQzguNTk0MjIgOC4zMjg4MyA4LjY4Mjk2IDguMjc3NDEgOC43ODU1OSA4LjIxNTA2QzkuMzIwMDQgNy44OTAzOCAxMC4wNSA3LjM1MzgyIDEwLjA1IDYuMjVDMTAuMDUgNC45Mjc4OSA4LjkzNTExIDMuODI1IDcuNTAwMDMgMy44MjVDNi4wNjQ5NiAzLjgyNSA0Ljk1MDAzIDQuOTI3ODkgNC45NTAwMyA2LjI1QzQuOTUwMDMgNi41NTM3NiA1LjE5NjI4IDYuOCA1LjUwMDAzIDYuOEM1LjgwMzc5IDYuOCA2LjA1MDAzIDYuNTUzNzYgNi4wNTAwMyA2LjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuNDI1MDMgMy40NDEzNkMxMC4wNTYxIDMuMjM2NTQgMTAuNzgzNyAzLjI0MDIgMTEuMzc5MiAzLjU0NjIzQzEyLjc1MzIgNC4yNTIyNCAxMy4zNDc3IDYuMDcxOTEgMTIuNzk0NiA4QzEyLjU0NjUgOC44NjQ5IDEyLjExMDIgOS43MDQ3MiAxMS4xODYxIDEwLjU1MjRDMTAuMjYyIDExLjQgOC45ODAzNCAxMS45IDguMzg1NzEgMTEuOUM4LjE3MjY5IDExLjkgOCAxMS43MzIxIDggMTEuNTI1QzggMTEuMzE3OSA4LjE3NjQ0IDExLjE1IDguMzg1NzEgMTEuMTVDOS4wNjQ5NyAxMS4xNSA5LjY3MTg5IDEwLjc4MDQgMTAuMzkwNiAxMC4yMzZDMTAuOTQwNiA5LjgxOTMgMTEuMzcwMSA5LjI4NjMzIDExLjYwOCA4LjgyMTkxQzEyLjA2MjggNy45MzM2NyAxMi4wNzgyIDYuNjgxNzQgMTEuMzQzMyA2LjM0OTAxQzEwLjk5MDQgNi43MzQ1NSAxMC41Mjk1IDYuOTU5NDYgOS45NzcyNSA2Ljk1OTQ2QzguNzc3MyA2Ljk1OTQ2IDguMDcwMSA1Ljk5NDEyIDguMTAwNTEgNS4xMjAwOUM4LjEyOTU3IDQuMjg0NzQgOC42NjAzMiAzLjY4OTU0IDkuNDI1MDMgMy40NDEzNlpNMy40MjUwMyAzLjQ0MTM2QzQuMDU2MTQgMy4yMzY1NCA0Ljc4MzY2IDMuMjQwMiA1LjM3OTIzIDMuNTQ2MjNDNi43NTMyIDQuMjUyMjQgNy4zNDc2NiA2LjA3MTkxIDYuNzk0NjIgOEM2LjU0NjU0IDguODY0OSA2LjExMDE5IDkuNzA0NzIgNS4xODYxIDEwLjU1MjRDNC4yNjIwMSAxMS40IDIuOTgwMzQgMTEuOSAyLjM4NTcxIDExLjlDMi4xNzI2OSAxMS45IDIgMTEuNzMyMSAyIDExLjUyNUMyIDExLjMxNzkgMi4xNzY0NCAxMS4xNSAyLjM4NTcxIDExLjE1QzMuMDY0OTcgMTEuMTUgMy42NzE4OSAxMC43ODA0IDQuMzkwNTggMTAuMjM2QzQuOTQwNjUgOS44MTkzIDUuMzcwMTQgOS4yODYzMyA1LjYwNzk3IDguODIxOTFDNi4wNjI4MiA3LjkzMzY3IDYuMDc4MjEgNi42ODE3NCA1LjM0MzMgNi4zNDkwMUM0Ljk5MDM3IDYuNzM0NTUgNC41Mjk0OCA2Ljk1OTQ2IDMuOTc3MjUgNi45NTk0NkMyLjc3NzMgNi45NTk0NiAyLjA3MDEgNS45OTQxMiAyLjEwMDUxIDUuMTIwMDlDMi4xMjk1NyA0LjI4NDc0IDIuNjYwMzIgMy42ODk1NCAzLjQyNTAzIDMuNDQxMzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxvcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk4NSAwLjg3NzA0NUMzLjg0MjE2IDAuODc3MDQ1IDAuODc3MDE0IDMuODQyMTkgMC44NzcwMTQgNy40OTk4OEMwLjg3NzAxNCAxMS4xNTc1IDMuODQyMTYgMTQuMTIyNyA3LjQ5OTg1IDE0LjEyMjdDMTEuMTU3NSAxNC4xMjI3IDE0LjEyMjcgMTEuMTU3NSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAzLjg0MjE5IDExLjE1NzUgMC44NzcwNDUgNy40OTk4NSAwLjg3NzA0NVpNMS44MjcwMSA3LjQ5OTg4QzEuODI3MDEgNC4zNjY4NiA0LjM2NjgzIDEuODI3MDQgNy40OTk4NSAxLjgyNzA0QzEwLjYzMjggMS44MjcwNCAxMy4xNzI3IDQuMzY2ODYgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgMTAuNjMyOSAxMC42MzI4IDEzLjE3MjcgNy40OTk4NSAxMy4xNzI3QzQuMzY2ODMgMTMuMTcyNyAxLjgyNzAxIDEwLjYzMjkgMS44MjcwMSA3LjQ5OTg4Wk03LjQ5OTk5IDkuNDk5OTlDOC42MDQ1NiA5LjQ5OTk5IDkuNDk5OTkgOC42MDQ1NiA5LjQ5OTk5IDcuNDk5OTlDOS40OTk5OSA2LjM5NTQyIDguNjA0NTYgNS40OTk5OSA3LjQ5OTk5IDUuNDk5OTlDNi4zOTU0MiA1LjQ5OTk5IDUuNDk5OTkgNi4zOTU0MiA1LjQ5OTk5IDcuNDk5OTlDNS40OTk5OSA4LjYwNDU2IDYuMzk1NDIgOS40OTk5OSA3LjQ5OTk5IDkuNDk5OTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxpcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC4yIDFINC4xNzc0MUg0LjE3NzRDMy44NjkzNiAwLjk5OTk4OCAzLjYwMzY4IDAuOTk5OTc4IDMuMzg2MDkgMS4wMjA2N0MzLjE1NTc2IDEuMDQyNTcgMi45MjgyNSAxLjA5MTEzIDIuNzE2MjUgMS4yMjEwNEMyLjUxNDQyIDEuMzQ0NzIgMi4zNDQ3MyAxLjUxNDQyIDIuMjIxMDQgMS43MTYyNUMyLjA5MTEzIDEuOTI4MjUgMi4wNDI1NyAyLjE1NTc2IDIuMDIwNjcgMi4zODYwOUMxLjk5OTk4IDIuNjAzNjcgMS45OTk5OSAyLjg2OTM1IDIgMy4xNzczOFYzLjE3NzRWMy4yVjExLjhWMTEuODIyNlYxMS44MjI2QzEuOTk5OTkgMTIuMTMwNyAxLjk5OTk4IDEyLjM5NjMgMi4wMjA2NyAxMi42MTM5QzIuMDQyNTcgMTIuODQ0MiAyLjA5MTEzIDEzLjA3MTcgMi4yMjEwNCAxMy4yODM3QzIuMzQ0NzMgMTMuNDg1NiAyLjUxNDQyIDEzLjY1NTMgMi43MTYyNSAxMy43NzlDMi45MjgyNSAxMy45MDg5IDMuMTU1NzYgMTMuOTU3NCAzLjM4NjA5IDEzLjk3OTNDMy42MDM2OCAxNCAzLjg2OTM3IDE0IDQuMTc3NDEgMTRINC4ySDEwLjhIMTAuODIyNkMxMS4xMzA2IDE0IDExLjM5NjMgMTQgMTEuNjEzOSAxMy45NzkzQzExLjg0NDIgMTMuOTU3NCAxMi4wNzE3IDEzLjkwODkgMTIuMjgzNyAxMy43NzlDMTIuNDg1NiAxMy42NTUzIDEyLjY1NTMgMTMuNDg1NiAxMi43NzkgMTMuMjgzN0MxMi45MDg5IDEzLjA3MTcgMTIuOTU3NCAxMi44NDQyIDEyLjk3OTMgMTIuNjEzOUMxMyAxMi4zOTYzIDEzIDEyLjEzMDYgMTMgMTEuODIyNlYxMS44VjMuMlYzLjE3NzQxQzEzIDIuODY5MzYgMTMgMi42MDM2OCAxMi45NzkzIDIuMzg2MDlDMTIuOTU3NCAyLjE1NTc2IDEyLjkwODkgMS45MjgyNSAxMi43NzkgMS43MTYyNUMxMi42NTUzIDEuNTE0NDIgMTIuNDg1NiAxLjM0NDcyIDEyLjI4MzcgMS4yMjEwNEMxMi4wNzE3IDEuMDkxMTMgMTEuODQ0MiAxLjA0MjU3IDExLjYxMzkgMS4wMjA2N0MxMS4zOTYzIDAuOTk5OTc4IDExLjEzMDYgMC45OTk5ODggMTAuODIyNiAxSDEwLjhINC4yWk0zLjIzODc1IDIuMDczNjhDMy4yNjcyMiAyLjA1NjIzIDMuMzIzNjIgMi4wMzExMiAzLjQ4MDc1IDIuMDE2MThDMy42NDUzMiAyLjAwMDUzIDMuODYyOTggMiA0LjIgMkgxMC44QzExLjEzNyAyIDExLjM1NDcgMi4wMDA1MyAxMS41MTkzIDIuMDE2MThDMTEuNjc2NCAyLjAzMTEyIDExLjczMjggMi4wNTYyMyAxMS43NjEzIDIuMDczNjhDMTEuODI4NSAyLjExNDkxIDExLjg4NTEgMi4xNzE0NyAxMS45MjYzIDIuMjM4NzVDMTEuOTQzOCAyLjI2NzIyIDExLjk2ODkgMi4zMjM2MiAxMS45ODM4IDIuNDgwNzVDMTEuOTk5NSAyLjY0NTMyIDEyIDIuODYyOTggMTIgMy4yVjExLjhDMTIgMTIuMTM3IDExLjk5OTUgMTIuMzU0NyAxMS45ODM4IDEyLjUxOTNDMTEuOTY4OSAxMi42NzY0IDExLjk0MzggMTIuNzMyOCAxMS45MjYzIDEyLjc2MTNDMTEuODg1MSAxMi44Mjg1IDExLjgyODUgMTIuODg1MSAxMS43NjEzIDEyLjkyNjNDMTEuNzMyOCAxMi45NDM4IDExLjY3NjQgMTIuOTY4OSAxMS41MTkzIDEyLjk4MzhDMTEuMzU0NyAxMi45OTk1IDExLjEzNyAxMyAxMC44IDEzSDQuMkMzLjg2Mjk4IDEzIDMuNjQ1MzIgMTIuOTk5NSAzLjQ4MDc1IDEyLjk4MzhDMy4zMjM2MiAxMi45Njg5IDMuMjY3MjIgMTIuOTQzOCAzLjIzODc1IDEyLjkyNjNDMy4xNzE0NyAxMi44ODUxIDMuMTE0OTEgMTIuODI4NSAzLjA3MzY4IDEyLjc2MTNDMy4wNTYyNCAxMi43MzI4IDMuMDMxMTIgMTIuNjc2NCAzLjAxNjE4IDEyLjUxOTNDMy4wMDA1MyAxMi4zNTQ3IDMgMTIuMTM3IDMgMTEuOFYzLjJDMyAyLjg2Mjk4IDMuMDAwNTMgMi42NDUzMiAzLjAxNjE4IDIuNDgwNzVDMy4wMzExMiAyLjMyMzYyIDMuMDU2MjQgMi4yNjcyMiAzLjA3MzY4IDIuMjM4NzVDMy4xMTQ5MSAyLjE3MTQ3IDMuMTcxNDcgMi4xMTQ5MSAzLjIzODc1IDIuMDczNjhaTTUgMTBDNC43MjM4NiAxMCA0LjUgMTAuMjIzOSA0LjUgMTAuNUM0LjUgMTAuNzc2MSA0LjcyMzg2IDExIDUgMTFIOEM4LjI3NjE0IDExIDguNSAxMC43NzYxIDguNSAxMC41QzguNSAxMC4yMjM5IDguMjc2MTQgMTAgOCAxMEg1Wk00LjUgNy41QzQuNSA3LjIyMzg2IDQuNzIzODYgNyA1IDdIMTBDMTAuMjc2MSA3IDEwLjUgNy4yMjM4NiAxMC41IDcuNUMxMC41IDcuNzc2MTQgMTAuMjc2MSA4IDEwIDhINUM0LjcyMzg2IDggNC41IDcuNzc2MTQgNC41IDcuNVpNNSA0QzQuNzIzODYgNCA0LjUgNC4yMjM4NiA0LjUgNC41QzQuNSA0Ljc3NjE0IDQuNzIzODYgNSA1IDVIMTBDMTAuMjc2MSA1IDEwLjUgNC43NzYxNCAxMC41IDQuNUMxMC41IDQuMjIzODYgMTAuMjc2MSA0IDEwIDRINVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGFyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjg0OTk4IDcuNDk5OThDMS44NDk5OCA0LjY2NDU4IDQuMDU5NzkgMS44NDk5OCA3LjQ5OTk4IDEuODQ5OThDMTAuMjc4MyAxLjg0OTk4IDExLjY1MTUgMy45MDY0IDEyLjIzNjcgNUgxMC41QzEwLjIyMzkgNSAxMCA1LjIyMzg2IDEwIDUuNUMxMCA1Ljc3NjE0IDEwLjIyMzkgNiAxMC41IDZIMTMuNUMxMy43NzYxIDYgMTQgNS43NzYxNCAxNCA1LjVWMi41QzE0IDIuMjIzODYgMTMuNzc2MSAyIDEzLjUgMkMxMy4yMjM5IDIgMTMgMi4yMjM4NiAxMyAyLjVWNC4zMTMxOEMxMi4yOTU1IDMuMDcxMjYgMTAuNjY1OSAwLjg0OTk3NiA3LjQ5OTk4IDAuODQ5OTc2QzMuNDM3MTYgMC44NDk5NzYgMC44NDk5NzYgNC4xODUzNyAwLjg0OTk3NiA3LjQ5OTk4QzAuODQ5OTc2IDEwLjgxNDYgMy40MzcxNiAxNC4xNSA3LjQ5OTk4IDE0LjE1QzkuNDQzODIgMTQuMTUgMTEuMDYyMiAxMy4zODA4IDEyLjIxNDUgMTIuMjA4NEMxMi44MzE1IDExLjU4MDYgMTMuMzEzMyAxMC44MzkgMTMuNjQxOCAxMC4wNDA3QzEzLjc0NjkgOS43ODUzNiAxMy42MjUxIDkuNDkzMTUgMTMuMzY5OCA5LjM4ODA2QzEzLjExNDQgOS4yODI5NiAxMi44MjIyIDkuNDA0NzggMTIuNzE3MSA5LjY2MDE0QzEyLjQzNjMgMTAuMzQyNSAxMi4wMjUxIDEwLjk3NDUgMTEuNTAxMyAxMS41MDc0QzEwLjUyOTUgMTIuNDk2MyA5LjE2NTA0IDEzLjE1IDcuNDk5OTggMTMuMTVDNC4wNTk3OSAxMy4xNSAxLjg0OTk4IDEwLjMzNTQgMS44NDk5OCA3LjQ5OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuODUzNTUgMi4xNDY0NUM1LjA0ODgyIDIuMzQxNzEgNS4wNDg4MiAyLjY1ODI5IDQuODUzNTUgMi44NTM1NUwzLjcwNzExIDRIOUMxMS40ODUzIDQgMTMuNSA2LjAxNDcyIDEzLjUgOC41QzEzLjUgMTAuOTg1MyAxMS40ODUzIDEzIDkgMTNINUM0LjcyMzg2IDEzIDQuNSAxMi43NzYxIDQuNSAxMi41QzQuNSAxMi4yMjM5IDQuNzIzODYgMTIgNSAxMkg5QzEwLjkzMyAxMiAxMi41IDEwLjQzMyAxMi41IDguNUMxMi41IDYuNTY3IDEwLjkzMyA1IDkgNUgzLjcwNzExTDQuODUzNTUgNi4xNDY0NUM1LjA0ODgyIDYuMzQxNzEgNS4wNDg4MiA2LjY1ODI5IDQuODUzNTUgNi44NTM1NUM0LjY1ODI5IDcuMDQ4ODIgNC4zNDE3MSA3LjA0ODgyIDQuMTQ2NDUgNi44NTM1NUwyLjE0NjQ1IDQuODUzNTVDMS45NTExOCA0LjY1ODI5IDEuOTUxMTggNC4zNDE3MSAyLjE0NjQ1IDQuMTQ2NDVMNC4xNDY0NSAyLjE0NjQ1QzQuMzQxNzEgMS45NTExOCA0LjY1ODI5IDEuOTUxMTggNC44NTM1NSAyLjE0NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sc3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMDQ5OTUgMi43NDk5NUMzLjA0OTk1IDIuNDQ2MTkgMi44MDM3MSAyLjE5OTk1IDIuNDk5OTUgMi4xOTk5NUMyLjE5NjE5IDIuMTk5OTUgMS45NDk5NSAyLjQ0NjE5IDEuOTQ5OTUgMi43NDk5NVYxMi4yNUMxLjk0OTk1IDEyLjU1MzcgMi4xOTYxOSAxMi44IDIuNDk5OTUgMTIuOEMyLjgwMzcxIDEyLjggMy4wNDk5NSAxMi41NTM3IDMuMDQ5OTUgMTIuMjVWMi43NDk5NVpNNS43MzMzMyAyLjMwNzc2QzUuNTc4MzUgMi4yMjU5NiA1LjM5MTg1IDIuMjMxMjcgNS4yNDE3NyAyLjMyMTc2QzUuMDkxNyAyLjQxMjI1IDQuOTk5OTUgMi41NzQ3MSA0Ljk5OTk1IDIuNzQ5OTVWMTIuMjVDNC45OTk5NSAxMi40MjUyIDUuMDkxNyAxMi41ODc3IDUuMjQxNzcgMTIuNjc4MUM1LjM5MTg1IDEyLjc2ODYgNS41NzgzNSAxMi43NzM5IDUuNzMzMzMgMTIuNjkyMUwxNC43MzMzIDcuOTQyMTRDMTQuODk3MyA3Ljg1NTU5IDE1IDcuNjg1MzkgMTUgNy40OTk5NUMxNSA3LjMxNDUyIDE0Ljg5NzMgNy4xNDQzMSAxNC43MzMzIDcuMDU3NzZMNS43MzMzMyAyLjMwNzc2Wk01Ljk5OTk1IDExLjQyMDdWMy41NzkyTDEzLjQyODcgNy40OTk5NUw1Ljk5OTk1IDExLjQyMDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxjcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi44NTM1NyAzLjg1MzU1TDcuNjUzNTUgMy4wNTM1M0M4LjI5ODEgMi40MDkwMSA5LjQyODU4IDEuOTYxNzIgMTAuNTUyIDEuODAxMjVDMTEuMTA1NiAxLjcyMjE3IDExLjYyOTEgMS43MTcyNSAxMi4wNTY0IDEuNzgxMjRDMTIuNDk4NyAxLjg0NzQ4IDEyLjc2OTggMS45NzY5NiAxMi44OTY1IDIuMTAzNTdDMTMuMDIzMSAyLjIzMDE4IDEzLjE1MjYgMi41MDEyNSAxMy4yMTg4IDIuOTQzNTdDMTMuMjgyOCAzLjM3MDg2IDEzLjI3NzkgMy44OTQzOSAxMy4xOTg4IDQuNDQ4MDFDMTMuMDM4MyA1LjU3MTM5IDEyLjU5MSA2LjcwMTg4IDExLjk0NjQgNy4zNDY0NUw3LjQ5OTk5IDExLjc5MjlMNi4zNTM1NCAxMC42NDY1QzYuMTU4MjcgMTAuNDUxMiA1Ljg0MTY5IDEwLjQ1MTIgNS42NDY0MyAxMC42NDY1QzUuNDUxMTcgMTAuODQxNyA1LjQ1MTE3IDExLjE1ODMgNS42NDY0MyAxMS4zNTM2TDcuMTQ2NDQgMTIuODUzNkM3LjM0MTcxIDEzLjA0ODggNy42NTgyOSAxMy4wNDg4IDcuODUzNTUgMTIuODUzNkw4LjQwMDczIDEyLjMwNjRMOS41NzEyNCAxNC4yNTcyQzkuNjUwNDYgMTQuMzg5MyA5Ljc4NjA4IDE0LjQ3NzQgOS45Mzg5IDE0LjQ5NjNDMTAuMDkxNyAxNC41MTUxIDEwLjI0NDcgMTQuNDYyNCAxMC4zNTM1IDE0LjM1MzZMMTIuMzUzNSAxMi4zNTM2QzEyLjQ2NDggMTIuMjQyMyAxMi41MTcyIDEyLjA4NTEgMTIuNDk1IDExLjkyOTNMMTIuMDMwMyA4LjY3Njc5TDEyLjY1MzYgOC4wNTM1NUMxMy41MDkgNy4xOTgwOCAxNC4wMTE3IDUuODI4NTUgMTQuMTg4NyA0LjU4OTQzQzE0LjI3ODQgMy45NjE4IDE0LjI4OTEgMy4zMzg0NyAxNC4yMDc4IDIuNzk1NDZDMTQuMTI4NyAyLjI2NzQ4IDEzLjk1MTkgMS43NDQ4MiAxMy42MDM1IDEuMzk2NDVDMTMuMjU1MiAxLjA0ODA5IDEyLjczMjUgMC44NzEzMzIgMTIuMjA0NSAwLjc5MjI2NEMxMS42NjE1IDAuNzEwOTQ1IDExLjAzODIgMC43MjE2NDQgMTAuNDEwNSAwLjgxMTNDOS4xNzE0MyAwLjk4ODMwNiA3LjgwMTg5IDEuNDkxIDYuOTQ2NDQgMi4zNDY0Mkw2LjMyMzIyIDIuOTY5NjhMMy4wNzA3MSAyLjUwNTA0QzIuOTE0OTIgMi40ODI3OCAyLjc1NzczIDIuNTM1MTcgMi42NDY0NSAyLjY0NjQ2TDAuNjQ2NDUxIDQuNjQ2NDVDMC41Mzc1NzkgNC43NTUzMyAwLjQ4NDkzOCA0LjkwODI5IDAuNTAzNzUgNS4wNjExQzAuNTIyNTYzIDUuMjEzOTEgMC42MTA3MyA1LjM0OTU0IDAuNzQyNzU3IDUuNDI4NzZMMi42OTM2NCA2LjU5OTI4TDIuMTQ2NDYgNy4xNDY0NUMyLjA1MjcgNy4yNDAyMiAyLjAwMDAyIDcuMzY3NCAyLjAwMDAyIDcuNTAwMDFDMi4wMDAwMiA3LjYzMjYxIDIuMDUyNyA3Ljc1OTc5IDIuMTQ2NDYgNy44NTM1NkwzLjY0NjQ3IDkuMzUzNTZDMy44NDE3MyA5LjU0ODgzIDQuMTU4MzEgOS41NDg4MyA0LjM1MzU3IDkuMzUzNTZDNC41NDg4NCA5LjE1ODMgNC41NDg4NCA4Ljg0MTcyIDQuMzUzNTcgOC42NDY0NkwzLjIwNzEyIDcuNTAwMDFMMy44NTM1NyA2Ljg1MzU2TDYuODUzNTcgMy44NTM1NVpNMTAuMDk5MyAxMy4xOTM2TDkuMTI5NTkgMTEuNTc3NUwxMS4xNDY0IDkuNTYwNjdMMTEuNDY5NyAxMS44MjMyTDEwLjA5OTMgMTMuMTkzNlpNMy40MjI1MSA1Ljg3MDQxTDUuNDM5MzUgMy44NTM1NkwzLjE3Njc4IDMuNTMwMzRMMS44MDYzOCA0LjkwMDc0TDMuNDIyNTEgNS44NzA0MVpNMi4zNTM1NiAxMC4zNTM1QzIuNTQ4ODIgMTAuMTU4MyAyLjU0ODgyIDkuODQxNyAyLjM1MzU2IDkuNjQ2NDRDMi4xNTgzIDkuNDUxMTggMS44NDE3MSA5LjQ1MTE4IDEuNjQ2NDUgOS42NDY0NEwwLjY0NjQ1MSAxMC42NDY0QzAuNDUxMTg4IDEwLjg0MTcgMC40NTExODggMTEuMTU4MyAwLjY0NjQ1MSAxMS4zNTM1QzAuODQxNzEzIDExLjU0ODggMS4xNTgzIDExLjU0ODggMS4zNTM1NiAxMS4zNTM1TDIuMzUzNTYgMTAuMzUzNVpNMy44NTM1OCAxMS44NTM2QzQuMDQ4ODQgMTEuNjU4MyA0LjA0ODg1IDExLjM0MTcgMy44NTM1OSAxMS4xNDY1QzMuNjU4MzMgMTAuOTUxMiAzLjM0MTc1IDEwLjk1MTIgMy4xNDY0OCAxMS4xNDY1TDEuMTQ2NDUgMTMuMTQ2NEMwLjk1MTE5IDEzLjM0MTcgMC45NTExODcgMTMuNjU4MyAxLjE0NjQ1IDEzLjg1MzVDMS4zNDE3MSAxNC4wNDg4IDEuNjU4MjkgMTQuMDQ4OCAxLjg1MzU1IDEzLjg1MzZMMy44NTM1OCAxMS44NTM2Wk01LjM1MzU2IDEzLjM1MzVDNS41NDg4MiAxMy4xNTgzIDUuNTQ4ODIgMTIuODQxNyA1LjM1MzU2IDEyLjY0NjRDNS4xNTgzIDEyLjQ1MTIgNC44NDE3MSAxMi40NTEyIDQuNjQ2NDUgMTIuNjQ2NEwzLjY0NjQ1IDEzLjY0NjRDMy40NTExOSAxMy44NDE3IDMuNDUxMTkgMTQuMTU4MyAzLjY0NjQ1IDE0LjM1MzVDMy44NDE3MSAxNC41NDg4IDQuMTU4MyAxNC41NDg4IDQuMzUzNTYgMTQuMzUzNUw1LjM1MzU2IDEzLjM1MzVaTTkuNDk5OTcgNi43NDg4MUMxMC4xODk3IDYuNzQ4ODEgMTAuNzQ4OCA2LjE4OTcgMTAuNzQ4OCA1LjVDMTAuNzQ4OCA0LjgxMDMgMTAuMTg5NyA0LjI1MTE4IDkuNDk5OTcgNC4yNTExOEM4LjgxMDI2IDQuMjUxMTggOC4yNTExNSA0LjgxMDMgOC4yNTExNSA1LjVDOC4yNTExNSA2LjE4OTcgOC44MTAyNiA2Ljc0ODgxIDkuNDk5OTcgNi43NDg4MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHVyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjU5NjY0IDIuOTM2MjhDNy43NjA4NSAzLjA2NDAxIDguMDAwMTIgMi45NDY5OCA4LjAwMDEyIDIuNzM4OTVWMS45OTk5OEM5Ljk4MTQzIDIgMTEuMTg0OCAyLjM2MzcgMTEuOTEwNSAzLjA4OTQ1QzEyLjYzNjMgMy44MTUyMiAxMyA1LjAxODYgMTMgNi45OTk5OEMxMyA3LjI3NjEzIDEzLjIyMzkgNy40OTk5OCAxMy41IDcuNDk5OThDMTMuNzc2MSA3LjQ5OTk4IDE0IDcuMjc2MTMgMTQgNi45OTk5OEMxNCA0Ljk0MzggMTMuNjMyNSAzLjM5NzE5IDEyLjYxNzYgMi4zODIzNEMxMS42MDI4IDEuMzY3NTIgMTAuMDU2MiAwLjk5OTk5OSA4LjAwMDEyIDAuOTk5OTg0VjAuMjYxMjY2QzguMDAwMTIgMC4wNTMyMjkzIDcuNzYwODUgLTAuMDYzNzk0NCA3LjU5NjY0IDAuMDYzOTI4TDYuMDAzODQgMS4zMDI3N0M1Ljg3NTE2IDEuNDAyODYgNS44NzUxNiAxLjU5NzM1IDYuMDAzODQgMS42OTc0NEw3LjU5NjY0IDIuOTM2MjhaTTkuNSA1SDIuNUMyLjIyMzg2IDUgMiA1LjIyMzg2IDIgNS41VjEyLjVDMiAxMi43NzYxIDIuMjIzODYgMTMgMi41IDEzSDkuNUM5Ljc3NjE0IDEzIDEwIDEyLjc3NjEgMTAgMTIuNVY1LjVDMTAgNS4yMjM4NiA5Ljc3NjE0IDUgOS41IDVaTTIuNSA0QzEuNjcxNTcgNCAxIDQuNjcxNTcgMSA1LjVWMTIuNUMxIDEzLjMyODQgMS42NzE1NyAxNCAyLjUgMTRIOS41QzEwLjMyODQgMTQgMTEgMTMuMzI4NCAxMSAxMi41VjUuNUMxMSA0LjY3MTU3IDEwLjMyODQgNCA5LjUgNEgyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxmcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy44MTgzMiAwLjY4MTc5QzcuNjQyNTggMC41MDYwNTQgNy4zNTc2NiAwLjUwNjA1NCA3LjE4MTkyIDAuNjgxNzlMNS4xODE5MiAyLjY4MTc5QzUuMDA2MTkgMi44NTc1MyA1LjAwNjE5IDMuMTQyNDUgNS4xODE5MiAzLjMxODE5QzUuMzU3NjYgMy40OTM5MiA1LjY0MjU4IDMuNDkzOTIgNS44MTgzMiAzLjMxODE5TDcuMDUwMTIgMi4wODYzOEw3LjA1MDEyIDUuNTAwMjNDNy4wNTAxMiA1Ljc0ODc2IDcuMjUxNTkgNS45NTAyMyA3LjUwMDEyIDUuOTUwMjNDNy43NDg2NSA1Ljk1MDIzIDcuOTUwMTIgNS43NDg3NiA3Ljk1MDEyIDUuNTAwMjNMNy45NTAxMiAyLjA4NjM4TDkuMTgxOTIgMy4zMTgxOUM5LjM1NzY2IDMuNDkzOTIgOS42NDI1OCAzLjQ5MzkyIDkuODE4MzIgMy4zMTgxOUM5Ljk5NDA2IDMuMTQyNDUgOS45OTQwNiAyLjg1NzUzIDkuODE4MzIgMi42ODE3OUw3LjgxODMyIDAuNjgxNzlaTTcuOTUwMTIgMTIuOTEzNlY5LjUwMDIzQzcuOTUwMTIgOS4yNTE3IDcuNzQ4NjUgOS4wNTAyMyA3LjUwMDEyIDkuMDUwMjNDNy4yNTE1OSA5LjA1MDIzIDcuMDUwMTIgOS4yNTE3IDcuMDUwMTIgOS41MDAyM1YxMi45MTM2TDUuODE4MzIgMTEuNjgxOEM1LjY0MjU4IDExLjUwNjEgNS4zNTc2NiAxMS41MDYxIDUuMTgxOTIgMTEuNjgxOEM1LjAwNjE5IDExLjg1NzUgNS4wMDYxOSAxMi4xNDI0IDUuMTgxOTIgMTIuMzE4Mkw3LjE4MTkyIDE0LjMxODJDNy4yNjYzMiAxNC40MDI2IDcuMzgwNzcgMTQuNDUgNy41MDAxMiAxNC40NUM3LjYxOTQ3IDE0LjQ1IDcuNzMzOTMgMTQuNDAyNiA3LjgxODMyIDE0LjMxODJMOS44MTgzMiAxMi4zMTgyQzkuOTk0MDYgMTIuMTQyNCA5Ljk5NDA2IDExLjg1NzUgOS44MTgzMiAxMS42ODE4QzkuNjQyNTggMTEuNTA2MSA5LjM1NzY2IDExLjUwNjEgOS4xODE5MiAxMS42ODE4TDcuOTUwMTIgMTIuOTEzNlpNMS40OTk5NCA3LjAwMDE3QzEuMjIzOCA3LjAwMDE3IDAuOTk5OTM5IDcuMjI0MDMgMC45OTk5MzkgNy41MDAxN0MwLjk5OTkzOSA3Ljc3NjMxIDEuMjIzOCA4LjAwMDE3IDEuNDk5OTQgOC4wMDAxN0wxMy40OTk5IDguMDAwMTdDMTMuNzc2MSA4LjAwMDE3IDEzLjk5OTkgNy43NzYzMSAxMy45OTk5IDcuNTAwMTdDMTMuOTk5OSA3LjIyNDAzIDEzLjc3NjEgNy4wMDAxNyAxMy40OTk5IDcuMDAwMTdMMS40OTk5NCA3LjAwMDE3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0IDEyLjg1TDEgMTIuODVMMSAxNC4xNUwxNCAxNC4xNUwxNCAxMi44NVpNMTQgOC44NTAwMkwxIDguODUwMDJMMSAxMC4xNUwxNCAxMC4xNUwxNCA4Ljg1MDAyWk0xIDQuODUwMDNMMTQgNC44NTAwM0wxNCA2LjE1MDAzTDEgNi4xNTAwMkwxIDQuODUwMDNaTTE0IDAuODUwMDI1TDEgMC44NTAwMjVMMSAyLjE1MDAyTDE0IDIuMTUwMDJMMTQgMC44NTAwMjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxwcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC41IDRDMC4yMjM4NTggNCAwIDQuMjIzODYgMCA0LjVWMTAuNUMwIDEwLjc3NjEgMC4yMjM4NTggMTEgMC41IDExSDE0LjVDMTQuNzc2MSAxMSAxNSAxMC43NzYxIDE1IDEwLjVWNC41QzE1IDQuMjIzODYgMTQuNzc2MSA0IDE0LjUgNEgwLjVaTTEgMTBWNUgyLjA3NVY3LjVDMi4wNzUgNy43MzQ3MiAyLjI2NTI4IDcuOTI1IDIuNSA3LjkyNUMyLjczNDcyIDcuOTI1IDIuOTI1IDcuNzM0NzIgMi45MjUgNy41VjVINC4wNzVWNi41QzQuMDc1IDYuNzM0NzIgNC4yNjUyOCA2LjkyNSA0LjUgNi45MjVDNC43MzQ3MiA2LjkyNSA0LjkyNSA2LjczNDcyIDQuOTI1IDYuNVY1SDYuMDc1VjYuNUM2LjA3NSA2LjczNDcyIDYuMjY1MjggNi45MjUgNi41IDYuOTI1QzYuNzM0NzIgNi45MjUgNi45MjUgNi43MzQ3MiA2LjkyNSA2LjVWNUg4LjA3NVY3LjVDOC4wNzUgNy43MzQ3MiA4LjI2NTI4IDcuOTI1IDguNSA3LjkyNUM4LjczNDcyIDcuOTI1IDguOTI1IDcuNzM0NzIgOC45MjUgNy41VjVIMTAuMDc1VjYuNUMxMC4wNzUgNi43MzQ3MiAxMC4yNjUzIDYuOTI1IDEwLjUgNi45MjVDMTAuNzM0NyA2LjkyNSAxMC45MjUgNi43MzQ3MiAxMC45MjUgNi41VjVIMTIuMDc1VjYuNUMxMi4wNzUgNi43MzQ3MiAxMi4yNjUzIDYuOTI1IDEyLjUgNi45MjVDMTIuNzM0NyA2LjkyNSAxMi45MjUgNi43MzQ3MiAxMi45MjUgNi41VjVIMTRWMTBIMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGhyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjUgMEMwLjIyMzg1OCAwIDAgMC4yMjM4NTggMCAwLjVWMTQuNUMwIDE0Ljc3NjEgMC4yMjM4NTggMTUgMC41IDE1SDQuNUM0Ljc3NjE0IDE1IDUgMTQuNzc2MSA1IDE0LjVWNUgxNC41QzE0Ljc3NjEgNSAxNSA0Ljc3NjE0IDE1IDQuNVYwLjVDMTUgMC4yMjM4NTggMTQuNzc2MSAwIDE0LjUgMEgwLjVaTTEgNC4wNzUwNUwxIDFINC4wNzUwMkM0LjA3NTAyIDEgNC4wNzUwMiAxIDQuMDc1MDIgMUw0LjA3NTA1IDQuMDc1MDdMMSA0LjA3NTA1Wk0wLjk5OTk5NyA0LjkyNTA1TDEgMTRINFYxMi45MjVIMi43NTAwMkMyLjUxNTMgMTIuOTI1IDIuMzI1MDIgMTIuNzM0OCAyLjMyNTAyIDEyLjVDMi4zMjUwMiAxMi4yNjUzIDIuNTE1MyAxMi4wNzUgMi43NTAwMiAxMi4wNzVINFYxMC45MjVIMi4yNTAwMkMyLjAxNTMgMTAuOTI1IDEuODI1MDIgMTAuNzM0NyAxLjgyNTAyIDEwLjVDMS44MjUwMiAxMC4yNjUzIDIuMDE1MyAxMC4wNzUgMi4yNTAwMiAxMC4wNzVINFY4LjkyNTA0TDIuNzUwMDIgOC45MjUwMkMyLjUxNTMgOC45MjUwMiAyLjMyNTAyIDguNzM0NzQgMi4zMjUwMiA4LjUwMDAyQzIuMzI1MDMgOC4yNjUyOSAyLjUxNTMxIDguMDc1MDIgMi43NTAwMyA4LjA3NTAyTDQgOC4wNzUwNFY2LjkyNTAyTDIuNzQ5OTkgNi45MjVDMi41MTUyNyA2LjkyNSAyLjMyNSA2LjczNDcyIDIuMzI1IDYuNUMyLjMyNSA2LjI2NTI4IDIuNTE1MjkgNi4wNzUgMi43NTAwMSA2LjA3NUw0IDYuMDc1MDJWNC45MjUwN0wwLjk5OTk5NyA0LjkyNTA1Wk00LjkyNTA1IDRINi4wNzVWMi43NTAwNkM2LjA3NSAyLjUxNTM0IDYuMjY1MjggMi4zMjUwNiA2LjUgMi4zMjUwNkM2LjczNDcyIDIuMzI1MDYgNi45MjUgMi41MTUzNCA2LjkyNSAyLjc1MDA2VjRIOC4wNzUwMlYyLjc1MDA1QzguMDc1MDIgMi41MTUzMyA4LjI2NTMgMi4zMjUwNSA4LjUwMDAyIDIuMzI1MDVDOC43MzQ3NCAyLjMyNTA1IDguOTI1MDIgMi41MTUzMyA4LjkyNTAyIDIuNzUwMDVWNEgxMC4wNzUxVjIuMjUwMDVDMTAuMDc1MSAyLjAxNTMzIDEwLjI2NTMgMS44MjUwNSAxMC41MDAxIDEuODI1MDVDMTAuNzM0OCAxLjgyNTA1IDEwLjkyNTEgMi4wMTUzMyAxMC45MjUxIDIuMjUwMDVWNEgxMi4wNzUxVjIuNzUwMDVDMTIuMDc1MSAyLjUxNTMzIDEyLjI2NTQgMi4zMjUwNSAxMi41MDAxIDIuMzI1MDVDMTIuNzM0OCAyLjMyNTA1IDEyLjkyNTEgMi41MTUzMyAxMi45MjUxIDIuNzUwMDVWNEgxNFYxSDQuOTI1MDJMNC45MjUwNSA0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgMS41QzIgMS43NzYxNCAxLjc3NjE0IDIgMS41IDJDMS4yMjM4NiAyIDEgMS43NzYxNCAxIDEuNUMxIDEuMjIzODYgMS4yMjM4NiAxIDEuNSAxQzEuNzc2MTQgMSAyIDEuMjIzODYgMiAxLjVaTTIgNUwyIDEwSDEzVjVIMlpNMiA0QzEuNDQ3NzIgNCAxIDQuNDQ3NzIgMSA1VjEwQzEgMTAuNTUyMyAxLjQ0NzcyIDExIDIgMTFIMTNDMTMuNTUyMyAxMSAxNCAxMC41NTIzIDE0IDEwVjVDMTQgNC40NDc3MiAxMy41NTIzIDQgMTMgNEgyWk0xLjUgMTRDMS43NzYxNCAxNCAyIDEzLjc3NjEgMiAxMy41QzIgMTMuMjIzOSAxLjc3NjE0IDEzIDEuNSAxM0MxLjIyMzg2IDEzIDEgMTMuMjIzOSAxIDEzLjVDMSAxMy43NzYxIDEuMjIzODYgMTQgMS41IDE0Wk00IDEuNUM0IDEuNzc2MTQgMy43NzYxNCAyIDMuNSAyQzMuMjIzODYgMiAzIDEuNzc2MTQgMyAxLjVDMyAxLjIyMzg2IDMuMjIzODYgMSAzLjUgMUMzLjc3NjE0IDEgNCAxLjIyMzg2IDQgMS41Wk0zLjUgMTRDMy43NzYxNCAxNCA0IDEzLjc3NjEgNCAxMy41QzQgMTMuMjIzOSAzLjc3NjE0IDEzIDMuNSAxM0MzLjIyMzg2IDEzIDMgMTMuMjIzOSAzIDEzLjVDMyAxMy43NzYxIDMuMjIzODYgMTQgMy41IDE0Wk02IDEuNUM2IDEuNzc2MTQgNS43NzYxNCAyIDUuNSAyQzUuMjIzODYgMiA1IDEuNzc2MTQgNSAxLjVDNSAxLjIyMzg2IDUuMjIzODYgMSA1LjUgMUM1Ljc3NjE0IDEgNiAxLjIyMzg2IDYgMS41Wk01LjUgMTRDNS43NzYxNCAxNCA2IDEzLjc3NjEgNiAxMy41QzYgMTMuMjIzOSA1Ljc3NjE0IDEzIDUuNSAxM0M1LjIyMzg2IDEzIDUgMTMuMjIzOSA1IDEzLjVDNSAxMy43NzYxIDUuMjIzODYgMTQgNS41IDE0Wk04IDEuNUM4IDEuNzc2MTQgNy43NzYxNCAyIDcuNSAyQzcuMjIzODYgMiA3IDEuNzc2MTQgNyAxLjVDNyAxLjIyMzg2IDcuMjIzODYgMSA3LjUgMUM3Ljc3NjE0IDEgOCAxLjIyMzg2IDggMS41Wk03LjUgMTRDNy43NzYxNCAxNCA4IDEzLjc3NjEgOCAxMy41QzggMTMuMjIzOSA3Ljc3NjE0IDEzIDcuNSAxM0M3LjIyMzg2IDEzIDcgMTMuMjIzOSA3IDEzLjVDNyAxMy43NzYxIDcuMjIzODYgMTQgNy41IDE0Wk0xMCAxLjVDMTAgMS43NzYxNCA5Ljc3NjE0IDIgOS41IDJDOS4yMjM4NiAyIDkgMS43NzYxNCA5IDEuNUM5IDEuMjIzODYgOS4yMjM4NiAxIDkuNSAxQzkuNzc2MTQgMSAxMCAxLjIyMzg2IDEwIDEuNVpNOS41IDE0QzkuNzc2MTQgMTQgMTAgMTMuNzc2MSAxMCAxMy41QzEwIDEzLjIyMzkgOS43NzYxNCAxMyA5LjUgMTNDOS4yMjM4NiAxMyA5IDEzLjIyMzkgOSAxMy41QzkgMTMuNzc2MSA5LjIyMzg2IDE0IDkuNSAxNFpNMTIgMS41QzEyIDEuNzc2MTQgMTEuNzc2MSAyIDExLjUgMkMxMS4yMjM5IDIgMTEgMS43NzYxNCAxMSAxLjVDMTEgMS4yMjM4NiAxMS4yMjM5IDEgMTEuNSAxQzExLjc3NjEgMSAxMiAxLjIyMzg2IDEyIDEuNVpNMTEuNSAxNEMxMS43NzYxIDE0IDEyIDEzLjc3NjEgMTIgMTMuNUMxMiAxMy4yMjM5IDExLjc3NjEgMTMgMTEuNSAxM0MxMS4yMjM5IDEzIDExIDEzLjIyMzkgMTEgMTMuNUMxMSAxMy43NzYxIDExLjIyMzkgMTQgMTEuNSAxNFpNMTQgMS41QzE0IDEuNzc2MTQgMTMuNzc2MSAyIDEzLjUgMkMxMy4yMjM5IDIgMTMgMS43NzYxNCAxMyAxLjVDMTMgMS4yMjM4NiAxMy4yMjM5IDEgMTMuNSAxQzEzLjc3NjEgMSAxNCAxLjIyMzg2IDE0IDEuNVpNMTMuNSAxNEMxMy43NzYxIDE0IDE0IDEzLjc3NjEgMTQgMTMuNUMxNCAxMy4yMjM5IDEzLjc3NjEgMTMgMTMuNSAxM0MxMy4yMjM5IDEzIDEzIDEzLjIyMzkgMTMgMTMuNUMxMyAxMy43NzYxIDEzLjIyMzkgMTQgMTMuNSAxNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGdyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02IDMuNUM2IDIuNjcxNTcgNi42NzE1NyAyIDcuNSAyQzguMzI4NDMgMiA5IDIuNjcxNTcgOSAzLjVDOSA0LjMyODQzIDguMzI4NDMgNSA3LjUgNUM2LjY3MTU3IDUgNiA0LjMyODQzIDYgMy41Wk04IDUuOTQ5OTlDOS4xNDExMiA1LjcxODM2IDEwIDQuNzA5NDggMTAgMy41QzEwIDIuMTE5MjkgOC44ODA3MSAxIDcuNSAxQzYuMTE5MjkgMSA1IDIuMTE5MjkgNSAzLjVDNSA0LjcwOTQ4IDUuODU4ODggNS43MTgzNiA3IDUuOTQ5OTlWMTMuNUM3IDEzLjc3NjEgNy4yMjM4NiAxNCA3LjUgMTRDNy43NzYxNCAxNCA4IDEzLjc3NjEgOCAxMy41VjUuOTQ5OTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxDcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAgMy41QzEwIDQuNzA5NDggOS4xNDExMiA1LjcxODM2IDggNS45NDk5OVYxMy41QzggMTMuNzc2MSA3Ljc3NjE0IDE0IDcuNSAxNEM3LjIyMzg2IDE0IDcgMTMuNzc2MSA3IDEzLjVWNS45NDk5OUM1Ljg1ODg4IDUuNzE4MzYgNSA0LjcwOTQ4IDUgMy41QzUgMi4xMTkyOSA2LjExOTI5IDEgNy41IDFDOC44ODA3MSAxIDEwIDIuMTE5MjkgMTAgMy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuODc3MDc1IDcuNDk5ODhDMC44NzcwNzUgMy44NDIxOSAzLjg0MjIyIDAuODc3MDQ1IDcuNDk5OTEgMC44NzcwNDVDMTEuMTU3NiAwLjg3NzA0NSAxNC4xMjI3IDMuODQyMTkgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgMTEuMTU3NSAxMS4xNTc2IDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzMuODQyMjIgMTQuMTIyNyAwLjg3NzA3NSAxMS4xNTc1IDAuODc3MDc1IDcuNDk5ODhaTTcuNDk5OTEgMS44MjcwNEM0LjM2Njg5IDEuODI3MDQgMS44MjcwOCA0LjM2Njg2IDEuODI3MDggNy40OTk4OEMxLjgyNzA4IDEwLjYzMjkgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0MxMC42MzI5IDEzLjE3MjcgMTMuMTcyNyAxMC42MzI5IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDQuMzY2ODYgMTAuNjMyOSAxLjgyNzA0IDcuNDk5OTEgMS44MjcwNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjA1XCIsZDpcIk02Ljc4Mjk2IDEzLjM3NkM4LjczOTA0IDkuOTUyODQgOC43MzkwNCA1LjA0NzE5IDYuNzgyOTYgMS42MjQwNUw3LjIxNzA4IDEuMzc1OThDOS4yNjEgNC45NTI4MyA5LjI2MSAxMC4wNDcyIDcuMjE3MDggMTMuNjI0TDYuNzgyOTYgMTMuMzc2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMVwiLGQ6XCJNNy4yODIwNCAxMy40Nzc1QzkuMjM5MjkgOS45OTUyMyA5LjIzOTI5IDUuMDA0NzUgNy4yODIwNCAxLjUyMjQ4TDcuNzE3OTEgMS4yNzc1QzkuNzYwNjcgNC45MTE5IDkuNzYwNjcgMTAuMDg4MSA3LjcxNzkxIDEzLjcyMjVMNy4yODIwNCAxMy40Nzc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMTVcIixkOlwiTTcuODIwOTggMTMuNTA2NEM5LjcyNTAyIDkuOTk1MjMgOS43MjYzNiA1LjAxNDExIDcuODI0OTIgMS41MDA4NEw4LjI2NDY1IDEuMjYyODVDMTAuMjQ2NSA0LjkyNDY2IDEwLjI0NTEgMTAuMDg1IDguMjYwNTIgMTMuNzQ0OEw3LjgyMDk4IDEzLjUwNjRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4yXCIsZDpcIk04LjQxMjg0IDEzLjQyOUMxMC4xOTUyIDkuOTI4NDIgMTAuMTk1NyA1LjA3NTM3IDguNDE0MzUgMS41NzQwMkw4Ljg1OTk5IDEuMzQ3MjlDMTAuNzEzOSA0Ljk5MTEzIDEwLjcxMzMgMTAuMDEyOCA4Ljg1ODQxIDEzLjY1NTlMOC40MTI4NCAxMy40MjlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4yNVwiLGQ6XCJNOS4wMjQ0MSAxMy4yOTU2QzEwLjY1NjcgOS44Mzc5IDEwLjY1ODYgNS4xNzcxNSA5LjAzMDA1IDEuNzE2NTZMOS40ODI0NSAxLjUwMzY2QzExLjE3NDUgNS4wOTkxOSAxMS4xNzI2IDkuOTE2MjkgOS40NzY1NyAxMy41MDkxTDkuMDI0NDEgMTMuMjk1NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjNcIixkOlwiTTkuNjY4MDkgMTMuMDY1NUMxMS4xMDk3IDkuNjk1NzIgMTEuMTEwNyA1LjMxMjEgOS42NzA4OCAxLjk0MDk1TDEwLjEzMDcgMS43NDQ1N0MxMS42MjQxIDUuMjQxMjEgMTEuNjIzMSA5Ljc2NjgzIDEwLjEyNzggMTMuMjYyMkw5LjY2ODA5IDEzLjA2NTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4zNVwiLGQ6XCJNMTAuMzMxIDEyLjc0NTZDMTEuNTU1MSA5LjUyMDczIDExLjU1NjQgNS40OTEwMyAxMC4zMzQ3IDIuMjY0NDRMMTAuODAyNCAyLjA4NzRDMTIuMDY3MiA1LjQyODE1IDEyLjA2NTkgOS41ODM5NCAxMC43OTg1IDEyLjkyMzFMMTAuMzMxIDEyLjc0NTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi40XCIsZDpcIk0xMS4wMTU1IDEyLjI5ODZDMTEuOTkzOCA5LjI5NzQ0IDExLjk5NDggNS43MTI5NiAxMS4wMTg0IDIuNzEwNjdMMTEuNDkzOSAyLjU1NjAzQzEyLjUwMyA1LjY1ODkgMTIuNTAyIDkuMzUxNzggMTEuNDkwOSAxMi40NTM1TDExLjAxNTUgMTIuMjk4NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjQ1XCIsZDpcIk0xMS43MjE0IDExLjY2OEMxMi40MjU0IDkuMDEzMDMgMTIuNDI2MiA1Ljk5NjkxIDExLjcyMzcgMy4zNDExNkwxMi4yMDcxIDMuMjEzMjlDMTIuOTMxOCA1Ljk1MjkyIDEyLjkzMSA5LjA1NzI4IDEyLjIwNDcgMTEuNzk2MUwxMS43MjE0IDExLjY2OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjVcIixkOlwiTTEyLjQ0MzIgMTAuNzUyQzEyLjg1MjQgOC42Mzc2MiAxMi44NTIzIDYuMzYwODkgMTIuNDQyOSA0LjI0NjZMMTIuOTMzOCA0LjE1MTU1QzEzLjM1NTMgNi4zMjg2MSAxMy4zNTU0IDguNjY5ODUgMTIuOTM0MSAxMC44NDdMMTIuNDQzMiAxMC43NTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx5cj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwNzUgNy40OTk4OEMwLjg3NzA3NSAzLjg0MjE5IDMuODQyMjIgMC44NzcwNDUgNy40OTk5MSAwLjg3NzA0NUMxMS4xNTc2IDAuODc3MDQ1IDE0LjEyMjcgMy44NDIxOSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAxMS4xNTc1IDExLjE1NzYgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMy44NDIyMiAxNC4xMjI3IDAuODc3MDc1IDExLjE1NzUgMC44NzcwNzUgNy40OTk4OFpNNy40OTk5MSAxLjgyNzA0QzQuMzY2ODkgMS44MjcwNCAxLjgyNzA4IDQuMzY2ODYgMS44MjcwOCA3LjQ5OTg4QzEuODI3MDggMTAuNjMyOSA0LjM2Njg5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzEwLjYzMjkgMTMuMTcyNyAxMy4xNzI3IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNC4zNjY4NiAxMC42MzI5IDEuODI3MDQgNy40OTk5MSAxLjgyNzA0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMDVcIixkOlwiTTEyLjE2MTkgMy44NTE4MkM4LjM1ODE3IDQuODg5MTggNC44ODkzNiA4LjM1OCAzLjg1MTk5IDEyLjE2MTdMMy4zNjk2IDEyLjAzMDFDNC40NTM1NiA4LjA1NTY0IDguMDU1ODEgNC40NTMzOSAxMi4wMzAzIDMuMzY5NDNMMTIuMTYxOSAzLjg1MTgyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMVwiLGQ6XCJNMTEuODgwNyAzLjQyNzA3QzguMDM0NDEgNC41MDU0MiA0LjUwNTYxIDguMDM0MjIgMy40MjcyNiAxMS44ODA1TDIuOTQ1ODIgMTEuNzQ1NkM0LjA3MTI5IDcuNzMxMjEgNy43MzE0IDQuMDcxMSAxMS43NDU4IDIuOTQ1NjNMMTEuODgwNyAzLjQyNzA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMTVcIixkOlwiTTExLjUyMDEgMy4wMjU1NkM3LjY5MDkyIDQuMTYxOTkgNC4xNjc3OSA3LjY4MzIzIDMuMDI4MDUgMTEuNTEyTDIuNTQ4ODMgMTEuMzY5NEMzLjczNjc2IDcuMzc4NjkgNy4zODY1OSAzLjczMDc2IDExLjM3NzggMi41NDYyM0wxMS41MjAxIDMuMDI1NTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4yXCIsZDpcIk0xMS4wNDY4IDIuNjYxNjlDNy4zMTExNyAzLjg3NjY0IDMuODc5MTggNy4zMDc5IDIuNjYyOTggMTEuMDQzNEwyLjE4NzU0IDEwLjg4ODZDMy40NTMyNCA3LjAwMTA5IDcuMDA0NDUgMy40NTA2MiAxMC44OTIxIDIuMTg2MjFMMTEuMDQ2OCAyLjY2MTY5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMjVcIixkOlwiTTEwLjUyMDEgMi4zMjM2NUM2LjkyMDkxIDMuNjE0NDcgMy42MjM5MSA2LjkwODc2IDIuMzI4NDUgMTAuNTA3M0wxLjg1OCAxMC4zMzhDMy4yMDM5OCA2LjU5OTA5IDYuNjExNTUgMy4xOTQyNCAxMC4zNTEzIDEuODUzMDFMMTAuNTIwMSAyLjMyMzY1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuM1wiLGQ6XCJNOS45MDIyMiAyLjAzMTIyQzYuNTAwMDMgMy4zOTQ2NSAzLjM5OTY4IDYuNDkzNjcgMi4wMzM5OSA5Ljg5NTUxTDEuNTY5OTggOS43MDkyNEMyLjk4NjUxIDYuMTgwNzYgNi4xODcyOCAyLjk4MTMzIDkuNzE2MjIgMS41NjcxTDkuOTAyMjIgMi4wMzEyMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjM1XCIsZDpcIk05LjIwNzI3IDEuNzg4NzNDNi4wNjEzNiAzLjIwMzQ5IDMuMjExMDMgNi4wNTIwMyAxLjc5MzMxIDkuMTk3MzhMMS4zMzc0NyA4Ljk5MTkyQzIuODA1MzYgNS43MzUyOCA1Ljc0NDg1IDIuNzk3NiA5LjAwMjIgMS4zMzI3Mkw5LjIwNzI3IDEuNzg4NzNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi40XCIsZDpcIk04LjQwNzEzIDEuNjIwODVDNS41OTMyMyAzLjA1MTE3IDMuMDU3OTQgNS41ODUwOSAxLjYyNTQ0IDguMzk4NDdMMS4xNzk4NyA4LjE3MTZDMi42NjAzNiA1LjI2Mzk3IDUuMjcyMzIgMi42NTM0IDguMTgwNTcgMS4xNzUxM0w4LjQwNzEzIDEuNjIwODVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi40NVwiLGQ6XCJNNy40NjIwNyAxLjU2NzQ3QzUuMDg2ODkgMi45NDY5NSAyLjk1MzYyIDUuMDc5MTIgMS41NzI0OSA3LjQ1Mzc5TDEuMTQwMjggNy4yMDI0MUMyLjU2NTAzIDQuNzUyNzMgNC43NjA3IDIuNTU4MTggNy4yMTA5NiAxLjEzNTFMNy40NjIwNyAxLjU2NzQ3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNVwiLGQ6XCJNNi4zMDQwNyAxLjcwNDg3QzQuNTE5NjQgMi45MTA2MyAyLjkwOTgzIDQuNTIwNjEgMS43MDQzIDYuMzA1MTNMMS4yODk5OCA2LjAyNTI0QzIuNTMxMyA0LjE4NzczIDQuMTg2NzMgMi41MzIxNCA2LjAyNDEzIDEuMjkwNTlMNi4zMDQwNyAxLjcwNDg3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sd3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzcwNDVDMy44NDIyMiAwLjg3NzA0NSAwLjg3NzA3NSAzLjg0MjE5IDAuODc3MDc1IDcuNDk5ODhDMC44NzcwNzUgOS4xNDg4IDEuNDc5NjkgMTAuNjU3IDIuNDc2NyAxMS44MTYyTDEuNjQ2NDcgMTIuNjQ2NEMxLjQ1MTIxIDEyLjg0MTcgMS40NTEyMSAxMy4xNTgzIDEuNjQ2NDcgMTMuMzUzNUMxLjg0MTczIDEzLjU0ODggMi4xNTgzMiAxMy41NDg4IDIuMzUzNTggMTMuMzUzNUwzLjE4MzgzIDEyLjUyMzNDNC4zNDMwMiAxMy41MjAyIDUuODUxMSAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MxMS4xNTc2IDE0LjEyMjcgMTQuMTIyNyAxMS4xNTc1IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDUuODUxMDcgMTMuNTIwMiA0LjM0Mjk4IDEyLjUyMzMgMy4xODM4TDEzLjM1MzYgMi4zNTM1NUMxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAxLjg0MTcgMTMuMzUzNiAxLjY0NjQ0QzEzLjE1ODMgMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTIuNjQ2NSAxLjY0NjQ0TDExLjgxNjIgMi40NzY2N0MxMC42NTcgMS40Nzk2NiA5LjE0ODgzIDAuODc3MDQ1IDcuNDk5OTEgMC44NzcwNDVaTTExLjE0MjMgMy4xNTA2NUMxMC4xNTY4IDIuMzI0NDkgOC44ODY0NCAxLjgyNzA0IDcuNDk5OTEgMS44MjcwNEM0LjM2Njg5IDEuODI3MDQgMS44MjcwOCA0LjM2Njg2IDEuODI3MDggNy40OTk4OEMxLjgyNzA4IDguODg2NDEgMi4zMjQ1MiAxMC4xNTY4IDMuMTUwNjkgMTEuMTQyMkwxMS4xNDIzIDMuMTUwNjVaTTMuODU3ODEgMTEuODQ5M0M0Ljg0MzIyIDEyLjY3NTMgNi4xMTM0OCAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0MxMC42MzI5IDEzLjE3MjcgMTMuMTcyNyAxMC42MzI5IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDYuMTEzNDUgMTIuNjc1NCA0Ljg0MzE5IDExLjg0OTMgMy44NTc3OEwzLjg1NzgxIDExLjg0OTNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4wNVwiLGQ6XCJNNi43ODI5NiAxMy4zNzZDOC43MzkwNCA5Ljk1Mjg0IDguNzM5MDQgNS4wNDcxOSA2Ljc4Mjk2IDEuNjI0MDVMNy4yMTcwOCAxLjM3NTk4QzkuMjYxIDQuOTUyODMgOS4yNjEgMTAuMDQ3MiA3LjIxNzA4IDEzLjYyNEw2Ljc4Mjk2IDEzLjM3NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjFcIixkOlwiTTcuMjgyMDQgMTMuNDc3NUM5LjIzOTI5IDkuOTk1MjMgOS4yMzkyOSA1LjAwNDc1IDcuMjgyMDQgMS41MjI0OEw3LjcxNzkxIDEuMjc3NUM5Ljc2MDY3IDQuOTExOSA5Ljc2MDY3IDEwLjA4ODEgNy43MTc5MSAxMy43MjI1TDcuMjgyMDQgMTMuNDc3NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjE1XCIsZDpcIk03LjgyMDk4IDEzLjUwNjRDOS43MjUwMiA5Ljk5NTIzIDkuNzI2MzYgNS4wMTQxMSA3LjgyNDkyIDEuNTAwODRMOC4yNjQ2NSAxLjI2Mjg1QzEwLjI0NjUgNC45MjQ2NiAxMC4yNDUxIDEwLjA4NSA4LjI2MDUyIDEzLjc0NDhMNy44MjA5OCAxMy41MDY0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMlwiLGQ6XCJNOC40MTI4NCAxMy40MjlDMTAuMTk1MiA5LjkyODQyIDEwLjE5NTcgNS4wNzUzNyA4LjQxNDM1IDEuNTc0MDJMOC44NTk5OSAxLjM0NzI5QzEwLjcxMzkgNC45OTExMyAxMC43MTMzIDEwLjAxMjggOC44NTg0MSAxMy42NTU5TDguNDEyODQgMTMuNDI5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMjVcIixkOlwiTTkuMDI0NDEgMTMuMjk1NkMxMC42NTY3IDkuODM3OSAxMC42NTg2IDUuMTc3MTUgOS4wMzAwNSAxLjcxNjU2TDkuNDgyNDUgMS41MDM2NkMxMS4xNzQ1IDUuMDk5MTkgMTEuMTcyNiA5LjkxNjI5IDkuNDc2NTcgMTMuNTA5MUw5LjAyNDQxIDEzLjI5NTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4zXCIsZDpcIk05LjY2ODA5IDEzLjA2NTVDMTEuMTA5NyA5LjY5NTcyIDExLjExMDcgNS4zMTIxIDkuNjcwODggMS45NDA5NUwxMC4xMzA3IDEuNzQ0NTdDMTEuNjI0MSA1LjI0MTIxIDExLjYyMzEgOS43NjY4MyAxMC4xMjc4IDEzLjI2MjJMOS42NjgwOSAxMy4wNjU1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMzVcIixkOlwiTTEwLjMzMSAxMi43NDU2QzExLjU1NTEgOS41MjA3MyAxMS41NTY0IDUuNDkxMDMgMTAuMzM0NyAyLjI2NDQ0TDEwLjgwMjQgMi4wODc0QzEyLjA2NzIgNS40MjgxNSAxMi4wNjU5IDkuNTgzOTQgMTAuNzk4NSAxMi45MjMxTDEwLjMzMSAxMi43NDU2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNFwiLGQ6XCJNMTEuMDE1NSAxMi4yOTg2QzExLjk5MzggOS4yOTc0NCAxMS45OTQ4IDUuNzEyOTYgMTEuMDE4NCAyLjcxMDY3TDExLjQ5MzkgMi41NTYwM0MxMi41MDMgNS42NTg5IDEyLjUwMiA5LjM1MTc4IDExLjQ5MDkgMTIuNDUzNUwxMS4wMTU1IDEyLjI5ODZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi40NVwiLGQ6XCJNMTEuNzIxNCAxMS42NjhDMTIuNDI1NCA5LjAxMzAzIDEyLjQyNjIgNS45OTY5MSAxMS43MjM3IDMuMzQxMTZMMTIuMjA3MSAzLjIxMzI5QzEyLjkzMTggNS45NTI5MiAxMi45MzEgOS4wNTcyOCAxMi4yMDQ3IDExLjc5NjFMMTEuNzIxNCAxMS42NjhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi41XCIsZDpcIk0xMi40NDMyIDEwLjc1MkMxMi44NTI0IDguNjM3NjIgMTIuODUyMyA2LjM2MDg5IDEyLjQ0MjkgNC4yNDY2TDEyLjkzMzggNC4xNTE1NUMxMy4zNTUzIDYuMzI4NjEgMTMuMzU1NCA4LjY2OTg1IDEyLjkzNDEgMTAuODQ3TDEyLjQ0MzIgMTAuNzUyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjA1XCIsZDpcIk0xMi4xMzk4IDMuODg2MTZDMTMuODU1MyA0Ljk0MTU5IDE1IDYuODM3IDE1IDguOTk5OTlDMTUgMTIuMzEzNyAxMi4zMTM3IDE1IDkuMDAwMDEgMTVDNi44NDM1IDE1IDQuOTUyOTUgMTMuODYyMSAzLjg5NTY5IDEyLjE1NTJMNC4zMjA3NSAxMS44OTE5QzUuMjkwNjkgMTMuNDU3OCA3LjAyMzc1IDE0LjUgOS4wMDAwMSAxNC41QzEyLjAzNzUgMTQuNSAxNC41IDEyLjAzNzUgMTQuNSA4Ljk5OTk5QzE0LjUgNy4wMTc4IDEzLjQ1MTYgNS4yODAyNiAxMS44Nzc4IDQuMzEyMDJMMTIuMTM5OCAzLjg4NjE2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMlwiLGQ6XCJNMTIuODUxIDUuMDczMkMxMy44Njg0IDYuMDcxMDUgMTQuNSA3LjQ2MTk4IDE0LjUgOC45OTk5OUMxNC41IDEyLjAzNzUgMTIuMDM3NiAxNC41IDkuMDAwMDIgMTQuNUM3LjQ2MjE0IDE0LjUgNi4wNzEzMSAxMy44Njg1IDUuMDczNDggMTIuODUxMkw1LjQzMDQyIDEyLjUwMTFDNi4zMzgwOSAxMy40MjY0IDcuNjAxODUgMTQgOS4wMDAwMiAxNEMxMS43NjE0IDE0IDE0IDExLjc2MTQgMTQgOC45OTk5OUMxNCA3LjYwMTcgMTMuNDI2NCA2LjMzNzg1IDEyLjUwMDkgNS40MzAxN0wxMi44NTEgNS4wNzMyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMzVcIixkOlwiTTEzLjMwMjEgNi40NTA3MUMxMy43NDU1IDcuMTk3MzcgMTQgOC4wNjkzNCAxNCA5QzE0IDExLjc2MTQgMTEuNzYxNCAxNCA5LjAwMDAxIDE0QzguMDQ4NjcgMTQgNy4xNTg2NyAxMy43MzQxIDYuNDAxMTggMTMuMjcyM0w2LjY2MTQxIDEyLjg0NTRDNy4zNDI3NCAxMy4yNjA3IDguMTQzMDUgMTMuNSA5LjAwMDAxIDEzLjVDMTEuNDg1MyAxMy41IDEzLjUgMTEuNDg1MyAxMy41IDlDMTMuNSA4LjE2MTY0IDEzLjI3MSA3LjM3NzUzIDEyLjg3MjIgNi43MDU5OEwxMy4zMDIxIDYuNDUwNzFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi41XCIsZDpcIk0xMy4zNzQ0IDcuOTQwMjFDMTMuNDU2NiA4LjI4MDMgMTMuNSA4LjYzNTI0IDEzLjUgOUMxMy41IDExLjQ4NTMgMTEuNDg1MyAxMy41IDkuMDAwMDIgMTMuNUM4LjYxMTAzIDEzLjUgOC4yMzMyMSAxMy40NTA2IDcuODcyNjcgMTMuMzU3Nkw3Ljk5NzU4IDEyLjg3MzRDOC4zMTc2NyAxMi45NTYgOC42NTM1MiAxMyA5LjAwMDAyIDEzQzExLjIwOTEgMTMgMTMgMTEuMjA5MSAxMyA5QzEzIDguNjc1MDcgMTIuOTYxMyA4LjM1OTUyIDEyLjg4ODQgOC4wNTc1NkwxMy4zNzQ0IDcuOTQwMjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi42NVwiLGQ6XCJNMTIuOTE1NSA5LjgyMTMyQzEyLjU4OTggMTEuMzgxMyAxMS4zNTYyIDEyLjYwNzIgOS43OTIwMyAxMi45MjE1TDkuNjkzNTMgMTIuNDMxM0MxMS4wNjEzIDEyLjE1NjUgMTIuMTQxMyAxMS4wODMzIDEyLjQyNjEgOS43MTkxM0wxMi45MTU1IDkuODIxMzJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjI3NzEgNy41MDI1MkMxLjI3NzEgNC4wNjQ1NSA0LjA2NDEzIDEuMjc3NTMgNy41MDIwOSAxLjI3NzUzQzEwLjk0IDEuMjc3NTMgMTMuNzI3MSA0LjA2NDU1IDEzLjcyNzEgNy41MDI1MkMxMy43MjcxIDEwLjk0MDUgMTAuOTQgMTMuNzI3NSA3LjUwMjA5IDEzLjcyNzVDNC4wNjQxMiAxMy43Mjc1IDEuMjc3MSAxMC45NDA1IDEuMjc3MSA3LjUwMjUyWk03LjUwMjA5IDIuMjI3NTJDNC41ODg4IDIuMjI3NTIgMi4yMjcxIDQuNTg5MjIgMi4yMjcxIDcuNTAyNTJDMi4yMjcxIDEwLjQxNTggNC41ODg4IDEyLjc3NzUgNy41MDIwOSAxMi43Nzc1QzEwLjQxNTQgMTIuNzc3NSAxMi43NzcxIDEwLjQxNTggMTIuNzc3MSA3LjUwMjUyQzEyLjc3NzEgNC41ODkyMiAxMC40MTU0IDIuMjI3NTIgNy41MDIwOSAyLjIyNzUyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUgNy41MDAwM0M1IDguMzI4NDUgNC4zMjg0MyA5LjAwMDAzIDMuNSA5LjAwMDAzQzIuNjcxNTcgOS4wMDAwMyAyIDguMzI4NDUgMiA3LjUwMDAzQzIgNi42NzE2IDIuNjcxNTcgNi4wMDAwMyAzLjUgNi4wMDAwM0M0LjMyODQzIDYuMDAwMDMgNSA2LjY3MTYgNSA3LjUwMDAzWk01LjcxMzEzIDguNjYzODhDNS4yOTQ0NSA5LjQ1ODM4IDQuNDYwNDggMTAgMy41IDEwQzIuMTE5MjkgMTAgMSA4Ljg4MDc0IDEgNy41MDAwM0MxIDYuMTE5MzEgMi4xMTkyOSA1LjAwMDAzIDMuNSA1LjAwMDAzQzQuNDYwNDggNS4wMDAwMyA1LjI5NDQ1IDUuNTQxNjcgNS43MTMxMyA2LjMzNjE2TDkuMTA0MjQgNC4yMTY3MUM5LjAzNjQzIDMuOTg5NjggOSAzLjc0OTExIDkgMy41MDAwM0M5IDIuMTE5MzIgMTAuMTE5MyAxLjAwMDAzIDExLjUgMS4wMDAwM0MxMi44ODA3IDEuMDAwMDMgMTQgMi4xMTkzMiAxNCAzLjUwMDAzQzE0IDQuODgwNzQgMTIuODgwNyA2LjAwMDAzIDExLjUgNi4wMDAwM0MxMC42OTE1IDYuMDAwMDMgOS45NzI2NCA1LjYxNjI0IDkuNTE1NjYgNS4wMjA5TDUuOTg1MyA3LjIyNzM4QzUuOTk1MDIgNy4zMTY5MiA2IDcuNDA3ODkgNiA3LjUwMDAzQzYgNy41OTIxNiA1Ljk5NTAyIDcuNjgzMTIgNS45ODUzIDcuNzcyNjdMOS41MTU2NyA5Ljk3OTE1QzkuOTcyNjUgOS4zODM4MiAxMC42OTE1IDkuMDAwMDMgMTEuNSA5LjAwMDAzQzEyLjg4MDcgOS4wMDAwMyAxNCAxMC4xMTkzIDE0IDExLjVDMTQgMTIuODgwNyAxMi44ODA3IDE0IDExLjUgMTRDMTAuMTE5MyAxNCA5IDEyLjg4MDcgOSAxMS41QzkgMTEuMjUwOSA5LjAzNjQzIDExLjAxMDQgOS4xMDQyNSAxMC43ODMzTDUuNzEzMTMgOC42NjM4OFpNMTEuNSA1LjAwMDAzQzEyLjMyODQgNS4wMDAwMyAxMyA0LjMyODQ2IDEzIDMuNTAwMDNDMTMgMi42NzE2IDEyLjMyODQgMi4wMDAwMyAxMS41IDIuMDAwMDNDMTAuNjcxNiAyLjAwMDAzIDEwIDIuNjcxNiAxMCAzLjUwMDAzQzEwIDQuMzI4NDYgMTAuNjcxNiA1LjAwMDAzIDExLjUgNS4wMDAwM1pNMTMgMTEuNUMxMyAxMi4zMjg1IDEyLjMyODQgMTMgMTEuNSAxM0MxMC42NzE2IDEzIDEwIDEyLjMyODUgMTAgMTEuNUMxMCAxMC42NzE2IDEwLjY3MTYgMTAgMTEuNSAxMEMxMi4zMjg0IDEwIDEzIDEwLjY3MTYgMTMgMTEuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LF9yPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjUgNS4wMDAwNkMzLjIyMzg2IDUuMDAwMDYgMyA1LjIyMzkyIDMgNS41MDAwNkwzIDExLjUwMDFDMyAxMS43NzYyIDMuMjIzODYgMTIuMDAwMSAzLjUgMTIuMDAwMUwxMS41IDEyLjAwMDFDMTEuNzc2MSAxMi4wMDAxIDEyIDExLjc3NjIgMTIgMTEuNTAwMUwxMiA1LjUwMDA2QzEyIDUuMjIzOTIgMTEuNzc2MSA1LjAwMDA2IDExLjUgNS4wMDAwNkwxMC4yNSA1LjAwMDA2QzkuOTczODYgNS4wMDAwNiA5Ljc1IDQuNzc2MiA5Ljc1IDQuNTAwMDZDOS43NSA0LjIyMzkyIDkuOTczODYgNC4wMDAwNiAxMC4yNSA0LjAwMDA2TDExLjUgNC4wMDAwNkMxMi4zMjg0IDQuMDAwMDYgMTMgNC42NzE2MyAxMyA1LjUwMDA2TDEzIDExLjUwMDFDMTMgMTIuMzI4NSAxMi4zMjg0IDEzLjAwMDEgMTEuNSAxMy4wMDAxTDMuNSAxMy4wMDAxQzIuNjcxNTcgMTMuMDAwMSAyIDEyLjMyODUgMiAxMS41MDAxTDIgNS41MDAwNkMyIDQuNjcxNjMgMi42NzE1NyA0LjAwMDA2IDMuNSA0LjAwMDA2TDQuNzUgNC4wMDAwNkM1LjAyNjE0IDQuMDAwMDYgNS4yNSA0LjIyMzkyIDUuMjUgNC41MDAwNkM1LjI1IDQuNzc2MiA1LjAyNjE0IDUuMDAwMDYgNC43NSA1LjAwMDA2TDMuNSA1LjAwMDA2Wk03IDEuNjM2NEw1LjU2ODIgMy4wNjgyQzUuMzkyNDYgMy4yNDM5MyA1LjEwNzU0IDMuMjQzOTMgNC45MzE4IDMuMDY4MkM0Ljc1NjA3IDIuODkyNDYgNC43NTYwNyAyLjYwNzU0IDQuOTMxOCAyLjQzMThMNy4xODE4IDAuMTgxODAyQzcuMjY2MTkgMC4wOTc0MSA3LjM4MDY1IDAuMDQ5OTk5IDcuNSAwLjA0OTk5OUM3LjYxOTM1IDAuMDQ5OTk5IDcuNzMzODEgMC4wOTc0MSA3LjgxODIgMC4xODE4MDJMMTAuMDY4MiAyLjQzMThDMTAuMjQzOSAyLjYwNzU0IDEwLjI0MzkgMi44OTI0NiAxMC4wNjgyIDMuMDY4MkM5Ljg5MjQ2IDMuMjQzOTMgOS42MDc1NCAzLjI0MzkzIDkuNDMxOCAzLjA2ODJMOCAxLjYzNjRMOCA4LjVDOCA4Ljc3NjE0IDcuNzc2MTQgOSA3LjUgOUM3LjIyMzg2IDkgNyA4Ljc3NjE0IDcgOC41TDcgMS42MzY0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjM1MzYgMS4xNDY0NUMxMi4xNTgzIDAuOTUxMTg0IDExLjg0MTcgMC45NTExODQgMTEuNjQ2NCAxLjE0NjQ1QzExLjQ1MTIgMS4zNDE3MSAxMS40NTEyIDEuNjU4MjkgMTEuNjQ2NCAxLjg1MzU1TDEyLjc5MjkgM0gxMkMxMC43MDM3IDMgOS43MTExMSAzLjU4NDIzIDguODcyNDggNC4zODkzMUM4LjIwMDY1IDUuMDM0MjcgNy41OTM0OSA1Ljg1Njg0IDYuOTk0NjEgNi42NjgyQzYuODYyODcgNi44NDY2OCA2LjczMTU0IDcuMDI0NjIgNi42IDcuMkM1LjEwODc0IDkuMTg4MzUgMy40OTAzNyAxMSAwLjUgMTFDMC4yMjM4NTggMTEgMCAxMS4yMjM5IDAgMTEuNUMwIDExLjc3NjEgMC4yMjM4NTggMTIgMC41IDEyQzQuMDA5NjMgMTIgNS44OTEyNiA5LjgxMTY1IDcuNCA3LjhDNy41NDM2NyA3LjYwODQ1IDcuNjgzMiA3LjQxOTYyIDcuODE5OTYgNy4yMzQ1NEw3LjgyMDA1IDcuMjM0NDNMNy44MjAwNiA3LjIzNDQxQzguNDE2NzQgNi40MjY5NSA4Ljk2MDY5IDUuNjkwODUgOS41NjUwMiA1LjExMDY5QzEwLjI4ODkgNC40MTU3NyAxMS4wNDYzIDQgMTIgNEgxMi43OTI5TDExLjY0NjQgNS4xNDY0NUMxMS40NTEyIDUuMzQxNzEgMTEuNDUxMiA1LjY1ODI5IDExLjY0NjQgNS44NTM1NUMxMS44NDE3IDYuMDQ4ODIgMTIuMTU4MyA2LjA0ODgyIDEyLjM1MzYgNS44NTM1NUwxNC4zNTM2IDMuODUzNTVDMTQuNTQ4OCAzLjY1ODI5IDE0LjU0ODggMy4zNDE3MSAxNC4zNTM2IDMuMTQ2NDVMMTIuMzUzNiAxLjE0NjQ1Wk0wLjUgM0MzLjM1Mjc4IDMgNS4xMjk5MiA0LjQ0NTg4IDYuNTA1NDggNi4wNjc0Nkw2LjM3NjIgNi4yNDI2NkM2LjI0ODMgNi40MTYxIDYuMTIyOTMgNi41ODYwOSA2IDYuNzVDNS45NjM5NyA2Ljc5ODA0IDUuOTI3OTggNi44NDU4MSA1Ljg5MiA2Ljg5MzMxQzQuNTczNDggNS4yOTMwNiAzLjAyNjM3IDQgMC41IDRDMC4yMjM4NTggNCAwIDMuNzc2MTQgMCAzLjVDMCAzLjIyMzg2IDAuMjIzODU4IDMgMC41IDNaTTguODcyNDggMTAuNjEwN0M4LjM3Mjg0IDEwLjEzMSA3LjkwODk3IDkuNTUzMTQgNy40NTc2NyA4Ljk1NDY4QzcuNjQ2ODggOC43MTY5MyA3LjgyNzA0IDguNDgwNjEgOCA4LjI1TDguMDg5ODcgOC4xMjk4N0M4LjU4NDEyIDguNzk0MDIgOS4wNTI4OCA5LjM5NzY2IDkuNTY1MDIgOS44ODkzMUMxMC4yODg5IDEwLjU4NDIgMTEuMDQ2MyAxMSAxMiAxMUgxMi43OTI5TDExLjY0NjQgOS44NTM1NUMxMS40NTEyIDkuNjU4MjkgMTEuNDUxMiA5LjM0MTcxIDExLjY0NjQgOS4xNDY0NUMxMS44NDE3IDguOTUxMTggMTIuMTU4MyA4Ljk1MTE4IDEyLjM1MzYgOS4xNDY0NUwxNC4zNTM2IDExLjE0NjRDMTQuNTQ4OCAxMS4zNDE3IDE0LjU0ODggMTEuNjU4MyAxNC4zNTM2IDExLjg1MzZMMTIuMzUzNiAxMy44NTM2QzEyLjE1ODMgMTQuMDQ4OCAxMS44NDE3IDE0LjA0ODggMTEuNjQ2NCAxMy44NTM2QzExLjQ1MTIgMTMuNjU4MyAxMS40NTEyIDEzLjM0MTcgMTEuNjQ2NCAxMy4xNDY0TDEyLjc5MjkgMTJIMTJDMTAuNzAzNyAxMiA5LjcxMTExIDExLjQxNTggOC44NzI0OCAxMC42MTA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sT3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjUgMy4wNDk5OUMxMS43NDg1IDMuMDQ5OTkgMTEuOTUgMy4yNTE0NiAxMS45NSAzLjQ5OTk5VjcuNDk5OTlDMTEuOTUgNy43NDg1MiAxMS43NDg1IDcuOTQ5OTkgMTEuNSA3Ljk0OTk5QzExLjI1MTUgNy45NDk5OSAxMS4wNSA3Ljc0ODUyIDExLjA1IDcuNDk5OTlWNC41ODYzOUw0LjU4NjM4IDExLjA1SDcuNDk5OTlDNy43NDg1MiAxMS4wNSA3Ljk0OTk5IDExLjI1MTUgNy45NDk5OSAxMS41QzcuOTQ5OTkgMTEuNzQ4NSA3Ljc0ODUyIDExLjk1IDcuNDk5OTkgMTEuOTVMMy40OTk5OSAxMS45NUMzLjM4MDY0IDExLjk1IDMuMjY2MTggMTEuOTAyNiAzLjE4MTc5IDExLjgxODJDMy4wOTc0IDExLjczMzggMy4wNDk5OSAxMS42MTkzIDMuMDQ5OTkgMTEuNUwzLjA0OTk5IDcuNDk5OTlDMy4wNDk5OSA3LjI1MTQ2IDMuMjUxNDYgNy4wNDk5OSAzLjQ5OTk5IDcuMDQ5OTlDMy43NDg1MiA3LjA0OTk5IDMuOTQ5OTkgNy4yNTE0NiAzLjk0OTk5IDcuNDk5OTlMMy45NDk5OSAxMC40MTM2TDEwLjQxMzYgMy45NDk5OUw3LjQ5OTk5IDMuOTQ5OTlDNy4yNTE0NiAzLjk0OTk5IDcuMDQ5OTkgMy43NDg1MiA3LjA0OTk5IDMuNDk5OTlDNy4wNDk5OSAzLjI1MTQ2IDcuMjUxNDYgMy4wNDk5OSA3LjQ5OTk5IDMuMDQ5OTlMMTEuNSAzLjA0OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNTM3MzEgMC44MjY4NzNDNy41MTI1IDAuODI0MzkyIDcuNDg3NSAwLjgyNDM5MiA3LjQ2MjY5IDAuODI2ODczTDMuOTYyNjkgMS4xNzY4N0MzLjg1NjcyIDEuMTg3NDcgMy43NjAyNSAxLjI0MjYyIDMuNjk3MzYgMS4zMjg1N0wwLjY5OTc3MSA1LjQyNTI4QzAuNjU0MDQ2IDUuNDg2MjcgMC42MjY0NyA1LjU2MTY1IDAuNjI1MDU3IDUuNjQzNEMwLjYyNTAxOSA1LjY0NTYgMC42MjUgNS42NDc4MSAwLjYyNSA1LjY1MDAxQzAuNjI1IDUuNjUwNTIgMC42MjUwMDEgNS42NTEwMyAwLjYyNTAwMyA1LjY1MTUzQzAuNjI1MzYzIDUuNzQyMzcgMC42NTgwMjEgNS44MjU1OSAwLjcxMjA4NyA1Ljg5MDNMNy4yMTA0MiAxMy43ODgzQzcuMjgxNjUgMTMuODc0OSA3LjM4Nzg5IDEzLjkyNSA3LjUgMTMuOTI1QzcuNjEyMTEgMTMuOTI1IDcuNzE4MzUgMTMuODc0OSA3Ljc4OTU4IDEzLjc4ODNMMTQuMjg3OSA1Ljg5MDMxQzE0LjM0MiA1LjgyNTYgMTQuMzc0NiA1Ljc0MjM3IDE0LjM3NSA1LjY1MTUzQzE0LjM3NSA1LjY1MTAzIDE0LjM3NSA1LjY1MDUyIDE0LjM3NSA1LjY1MDAxQzE0LjM3NSA1LjY0ODQ5IDE0LjM3NSA1LjY0Njk3IDE0LjM3NSA1LjY0NTQ1QzE0LjM3NDkgNS42Mzk2MyAxNC4zNzQ3IDUuNjMzODIgMTQuMzc0NCA1LjYyODAxQzE0LjM3IDUuNTUyMTkgMTQuMzQzMSA1LjQ4MjQyIDE0LjMwMDIgNS40MjUyN0wxMS4zMDI2IDEuMzI4NTdDMTEuMjM5NyAxLjI0MjYyIDExLjE0MzMgMS4xODc0NyAxMS4wMzczIDEuMTc2ODdMNy41MzczMSAwLjgyNjg3M1pNMTAuOTI1IDUuMjc1MDFWNS4yNTIzNkwxMC45MjIzIDUuMjc1MDFIMTAuOTI1Wk0xMC45MzQyIDUuMTc0OThIMTMuMTg3N0wxMS4yNDk1IDIuNTI2MUwxMC45MzQyIDUuMTc0OThaTTEwLjU3MDcgMS44ODM5NUw4LjA0NDMyIDEuNjMxMzFMMTAuMTc0NyA1LjIxMDM0TDEwLjU3MDcgMS44ODM5NVpNNi45NTU2OCAxLjYzMTMxTDQuNDI5MzEgMS44ODM5NUw0LjgyNTMxIDUuMjEwMzRMNi45NTU2OCAxLjYzMTMxWk0zLjc1MDQ2IDIuNTI2MUwxLjgxMjI2IDUuMTc0OThINC4wNjU4TDMuNzUwNDYgMi41MjYxWk0xLjc5NDE2IDYuMDI1MDFMNi43NTg2MSAxMi4wNTg3TDQuMjIzNzEgNi4wNjY5QzQuMjE3ODcgNi4wNTMxIDQuMjEzMTQgNi4wMzkxIDQuMjA5NDkgNi4wMjUwMUgxLjc5NDE2Wk01LjE1MDU1IDYuMDI1MDFMNy40OTk5OSAxMi4xMDg1TDkuODQ5NDMgNi4wMjUwMUg5Ljc4NjgxSDUuMjEzMTlINS4xNTA1NVpNMTAuNzkwNSA2LjAyNTAxQzEwLjc4NjkgNi4wMzkxIDEwLjc4MjEgNi4wNTMxIDEwLjc3NjMgNi4wNjY5TDguMjQxMzkgMTIuMDU4N0wxMy4yMDU4IDYuMDI1MDFIMTAuNzkwNVpNNy41IDIuMTgzMTdMOS4zNDAzOCA1LjI3NTAxSDUuNjU5NjJMNy41IDIuMTgzMTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxTcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC4xMDg3NiAxNEw5LjQ2NTgyIDFIMTAuODE3OEw1LjQ2MDc0IDE0SDQuMTA4NzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxNcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAuMzAwNCA3LjQ5OTkxQzEwLjMwMDQgOC40OTQzIDkuNDk0MjYgOS4zMDA0MSA4LjQ5OTg4IDkuMzAwNDFDNy41MDU0OSA5LjMwMDQxIDYuNjk5MzggOC40OTQzIDYuNjk5MzggNy40OTk5MUM2LjY5OTM4IDYuNTA1NTMgNy41MDU0OSA1LjY5OTQyIDguNDk5ODggNS42OTk0MkM5LjQ5NDI2IDUuNjk5NDIgMTAuMzAwNCA2LjUwNTUzIDEwLjMwMDQgNy40OTk5MVpNMTEuMjA1IDhDMTAuOTY5OSA5LjI4MDI5IDkuODQ4MTYgMTAuMjUwNCA4LjQ5OTg4IDEwLjI1MDRDNy4xNTE2IDEwLjI1MDQgNi4wMjk5IDkuMjgwMjkgNS43OTQ3MyA4SDAuNUMwLjIyMzg1OCA4IDAgNy43NzYxNCAwIDcuNUMwIDcuMjIzODYgMC4yMjM4NTggNyAwLjUgN0g1Ljc5NDdDNi4wMjk4IDUuNzE5NjIgNy4xNTE1NCA0Ljc0OTQyIDguNDk5ODggNC43NDk0MkM5Ljg0ODIyIDQuNzQ5NDIgMTAuOTY5OSA1LjcxOTYyIDExLjIwNTEgN0gxNC41QzE0Ljc3NjEgNyAxNSA3LjIyMzg2IDE1IDcuNUMxNSA3Ljc3NjE0IDE0Ljc3NjEgOCAxNC41IDhIMTEuMjA1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sanI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0LjQ5OTkgMC45OTk5OTRDMTQuMjIzNyAwLjk5OTk5NCAxMy45OTk5IDEuMjIzODUgMTMuOTk5OSAxLjQ5OTk5TDEzLjk5OTkgNS45OTk5NUw5Ljk5OTkyIDUuOTk5OTVDOS40NDc2NCA1Ljk5OTk1IDguOTk5OTMgNi40NDc2NiA4Ljk5OTkzIDYuOTk5OTRMOC45OTk5MyA3Ljk5OTk0QzguOTk5OTMgOC41NTIyMiA5LjQ0NzY0IDguOTk5OTMgOS45OTk5MiA4Ljk5OTkzTDEzLjk5OTkgOC45OTk5M0wxMy45OTk5IDEzLjQ5OTlDMTMuOTk5OSAxMy43NzYgMTQuMjIzNyAxMy45OTk5IDE0LjQ5OTkgMTMuOTk5OUMxNC43NzYgMTMuOTk5OSAxNC45OTk5IDEzLjc3NiAxNC45OTk5IDEzLjQ5OTlMMTQuOTk5OSAxLjQ5OTk5QzE0Ljk5OTkgMS4yMjM4NSAxNC43NzYgMC45OTk5OTQgMTQuNDk5OSAwLjk5OTk5NFpNNC45OTk5NiA1Ljk5OTk1TDAuOTk5OTkyIDUuOTk5OTVMMC45OTk5OTIgMS40OTk5OUMwLjk5OTk5MiAxLjIyMzg1IDAuNzc2MTM2IDAuOTk5OTk0IDAuNDk5OTk2IDAuOTk5OTk0QzAuMjIzODU2IDAuOTk5OTk0IC05Ljc4NTJlLTA5IDEuMjIzODUgLTIuMTg1NTdlLTA4IDEuNDk5OTlMNC4wNzI3OWUtMDcgMTMuNDk5OUMzLjk1MjA4ZS0wNyAxMy43NzYgMC4yMjM4NTUgMTMuOTk5OSAwLjQ5OTk5NiAxMy45OTk5QzAuNzc2MTM2IDEzLjk5OTkgMC45OTk5OTIgMTMuNzc2IDAuOTk5OTkyIDEzLjQ5OTlMMC45OTk5OTIgOC45OTk5M0w0Ljk5OTk2IDguOTk5OTNDNS41NTIyNCA4Ljk5OTkzIDUuOTk5OTUgOC41NTIyMiA1Ljk5OTk1IDcuOTk5OTNMNS45OTk5NSA2Ljk5OTk0QzUuOTk5OTUgNi40NDc2NiA1LjU1MjI0IDUuOTk5OTUgNC45OTk5NiA1Ljk5OTk1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sa3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuOTk5ODc4IDAuNUMwLjk5OTg3OCAwLjIyMzg1OCAxLjIyMzc0IDAgMS40OTk4OCAwSDEzLjQ5OTlDMTMuNzc2IDAgMTMuOTk5OSAwLjIyMzg1OCAxMy45OTk5IDAuNUMxMy45OTk5IDAuNzc2MTQyIDEzLjc3NiAxIDEzLjQ5OTkgMUw5IDFWNUM5IDUuNTUyMjggOC41NTIyOCA2IDggNkg3QzYuNDQ3NzIgNiA2IDUuNTUyMjggNiA1VjFIMS40OTk4OEMxLjIyMzc0IDEgMC45OTk4NzggMC43NzYxNDIgMC45OTk4NzggMC41Wk03IDlDNi40NDc3MiA5IDYgOS40NDc3MSA2IDEwVjE0SDEuNDk5ODhDMS4yMjM3NCAxNCAwLjk5OTg3OCAxNC4yMjM5IDAuOTk5ODc4IDE0LjVDMC45OTk4NzggMTQuNzc2MSAxLjIyMzc0IDE1IDEuNDk5ODggMTVIMTMuNDk5OUMxMy43NzYgMTUgMTMuOTk5OSAxNC43NzYxIDEzLjk5OTkgMTQuNUMxMy45OTk5IDE0LjIyMzkgMTMuNzc2IDE0IDEzLjQ5OTkgMTRIOVYxMEM5IDkuNDQ3NzIgOC41NTIyOCA5IDggOUg3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0LjQ5OTkgMC45OTk5OTJDMTQuMjIzNyAwLjk5OTk5MiAxMy45OTk5IDEuMjIzODUgMTMuOTk5OSAxLjQ5OTk5TDEzLjk5OTkgMTMuNDk5OUMxMy45OTk5IDEzLjc3NiAxNC4yMjM3IDEzLjk5OTkgMTQuNDk5OSAxMy45OTk5QzE0Ljc3NiAxMy45OTk5IDE0Ljk5OTkgMTMuNzc2IDE0Ljk5OTkgMTMuNDk5OUwxNC45OTk5IDEuNDk5OTlDMTQuOTk5OSAxLjIyMzg1IDE0Ljc3NiAwLjk5OTk5MiAxNC40OTk5IDAuOTk5OTkyWk0wLjQ5OTk5NiAwLjk5OTk5MkMwLjIyMzg1NiAwLjk5OTk5MiAtOS43ODUwOWUtMDkgMS4yMjM4NSAtMi4xODU1NmUtMDggMS40OTk5OUw0LjA3Mjc5ZS0wNyAxMy40OTk5QzMuOTUyMDhlLTA3IDEzLjc3NiAwLjIyMzg1NSAxMy45OTk5IDAuNDk5OTk2IDEzLjk5OTlDMC43NzYxMzYgMTMuOTk5OSAwLjk5OTk5MiAxMy43NzYgMC45OTk5OTIgMTMuNDk5OUwwLjk5OTk5MiAxLjQ5OTk5QzAuOTk5OTkyIDEuMjIzODUgMC43NzYxMzYgMC45OTk5OTIgMC40OTk5OTYgMC45OTk5OTJaTTEuOTk5OTggNi45OTk5NEMxLjk5OTk4IDYuNDQ3NjYgMi40NDc2OSA1Ljk5OTk1IDIuOTk5OTggNS45OTk5NUw1Ljk5OTk1IDUuOTk5OTVDNi41NTIyMyA1Ljk5OTk1IDYuOTk5OTQgNi40NDc2NiA2Ljk5OTk0IDYuOTk5OTRMNi45OTk5NCA3Ljk5OTkzQzYuOTk5OTQgOC41NTIyMSA2LjU1MjIzIDguOTk5OTIgNS45OTk5NSA4Ljk5OTkyTDIuOTk5OTggOC45OTk5MkMyLjQ0NzcgOC45OTk5MiAxLjk5OTk4IDguNTUyMjEgMS45OTk5OCA3Ljk5OTkzTDEuOTk5OTggNi45OTk5NFpNOC45OTk5MyA1Ljk5OTk1QzguNDQ3NjUgNS45OTk5NSA3Ljk5OTkzIDYuNDQ3NjYgNy45OTk5MyA2Ljk5OTk0TDcuOTk5OTMgNy45OTk5M0M3Ljk5OTkzIDguNTUyMjEgOC40NDc2NSA4Ljk5OTkyIDguOTk5OTMgOC45OTk5MkwxMS45OTk5IDguOTk5OTJDMTIuNTUyMiA4Ljk5OTkyIDEyLjk5OTkgOC41NTIyMSAxMi45OTk5IDcuOTk5OTNMMTIuOTk5OSA2Ljk5OTk0QzEyLjk5OTkgNi40NDc2NiAxMi41NTIyIDUuOTk5OTUgMTEuOTk5OSA1Ljk5OTk1TDguOTk5OTMgNS45OTk5NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFByPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjk5OTg3OCAwLjVDMC45OTk4NzggMC4yMjM4NTggMS4yMjM3NCAwIDEuNDk5ODggMEgxMy40OTk5QzEzLjc3NiAwIDEzLjk5OTkgMC4yMjM4NTggMTMuOTk5OSAwLjVDMTMuOTk5OSAwLjc3NjE0MiAxMy43NzYgMSAxMy40OTk5IDFIMS40OTk4OEMxLjIyMzc0IDEgMC45OTk4NzggMC43NzYxNDIgMC45OTk4NzggMC41Wk03IDJDNi40NDc3MiAyIDYgMi40NDc3MiA2IDNWNkM2IDYuNTUyMjggNi40NDc3MiA3IDcgN0g4QzguNTUyMjggNyA5IDYuNTUyMjggOSA2VjNDOSAyLjQ0NzcyIDguNTUyMjggMiA4IDJIN1pNNyA4QzYuNDQ3NzIgOCA2IDguNDQ3NzEgNiA5VjEyQzYgMTIuNTUyMyA2LjQ0NzcyIDEzIDcgMTNIOEM4LjU1MjI4IDEzIDkgMTIuNTUyMyA5IDEyVjlDOSA4LjQ0NzcyIDguNTUyMjggOCA4IDhIN1pNMS40OTk4OCAxNEMxLjIyMzc0IDE0IDAuOTk5ODc4IDE0LjIyMzkgMC45OTk4NzggMTQuNUMwLjk5OTg3OCAxNC43NzYxIDEuMjIzNzQgMTUgMS40OTk4OCAxNUgxMy40OTk5QzEzLjc3NiAxNSAxMy45OTk5IDE0Ljc3NjEgMTMuOTk5OSAxNC41QzEzLjk5OTkgMTQuMjIzOSAxMy43NzYgMTQgMTMuNDk5OSAxNEgxLjQ5OTg4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDY5NjggMS4wNTA4NUM3LjY0MTIyIDEuMTM0NzUgNy43NSAxLjMwOTA0IDcuNzUgMS41VjEzLjVDNy43NSAxMy42OTEgNy42NDEyMiAxMy44NjUzIDcuNDY5NjggMTMuOTQ5MkM3LjI5ODEzIDE0LjAzMzEgNy4wOTM3NyAxNC4wMTE5IDYuOTQzMDMgMTMuODk0N0wzLjIyMTMgMTFIMS41QzAuNjcxNTcxIDExIDAgMTAuMzI4NCAwIDkuNVY1LjVDMCA0LjY3MTU4IDAuNjcxNTczIDQgMS41IDRIMy4yMjEzTDYuOTQzMDMgMS4xMDUzM0M3LjA5Mzc3IDAuOTg4MDg1IDcuMjk4MTMgMC45NjY5NDUgNy40Njk2OCAxLjA1MDg1Wk02Ljc1IDIuNTIyMzJMMy42OTk4MyA0Ljg5NDY4QzMuNjEyMDYgNC45NjI5NCAzLjUwNDA1IDUgMy4zOTI4NiA1SDEuNUMxLjIyMzg2IDUgMSA1LjIyMzg2IDEgNS41VjkuNUMxIDkuNzc2MTUgMS4yMjM4NiAxMCAxLjUgMTBIMy4zOTI4NkMzLjUwNDA1IDEwIDMuNjEyMDYgMTAuMDM3MSAzLjY5OTgzIDEwLjEwNTNMNi43NSAxMi40Nzc3VjIuNTIyMzJaTTEwLjI3ODQgMy44NDgwNEMxMC40NjIzIDMuNzI1NjcgMTAuNzEwNiAzLjc3NTU3IDEwLjgzMyAzLjk1OTQ5QzEyLjI1NTggNi4wOTc5OCAxMi4yNTU4IDguOTAxOTkgMTAuODMzIDExLjA0MDVDMTAuNzEwNiAxMS4yMjQ0IDEwLjQ2MjMgMTEuMjc0MyAxMC4yNzg0IDExLjE1MTlDMTAuMDk0NCAxMS4wMjk2IDEwLjA0NDUgMTAuNzgxMyAxMC4xNjY5IDEwLjU5NzNDMTEuNDExMSA4LjcyNzI4IDExLjQxMTEgNi4yNzI2OSAxMC4xNjY5IDQuNDAyNjRDMTAuMDQ0NSA0LjIxODcxIDEwLjA5NDQgMy45NzA0MSAxMC4yNzg0IDMuODQ4MDRaTTEyLjY3ODUgMS40MzA0NEMxMi41MzU2IDEuMjYxOSAxMi4yODMyIDEuMjQxMDQgMTIuMTE0NyAxLjM4Mzg2QzExLjk0NjIgMS41MjY2NyAxMS45MjUzIDEuNzc5MDggMTIuMDY4MSAxLjk0NzYyQzE0Ljc3NzMgNS4xNDQ4OCAxNC43NzczIDkuODU1MTMgMTIuMDY4MSAxMy4wNTI0QzExLjkyNTMgMTMuMjIwOSAxMS45NDYyIDEzLjQ3MzMgMTIuMTE0NyAxMy42MTYxQzEyLjI4MzIgMTMuNzU5IDEyLjUzNTYgMTMuNzM4MSAxMi42Nzg1IDEzLjU2OTZDMTUuNjQwNiAxMC4wNzM5IDE1LjY0MDYgNC45MjYxMiAxMi42Nzg1IDEuNDMwNDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxJcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOCAxLjVDOCAxLjMxMDYyIDcuODkzIDEuMTM3NDkgNy43MjM2MSAxLjA1Mjc5QzcuNTU0MjEgMC45NjgwOTMgNy4zNTE1MSAwLjk4NjM3MSA3LjIgMS4xTDMuMzMzMzMgNEgxLjVDMC42NzE1NzMgNCAwIDQuNjcxNTggMCA1LjVWOS41QzAgMTAuMzI4NCAwLjY3MTU3MyAxMSAxLjUgMTFIMy4zMzMzM0w3LjIgMTMuOUM3LjM1MTUxIDE0LjAxMzYgNy41NTQyMSAxNC4wMzE5IDcuNzIzNjEgMTMuOTQ3MkM3Ljg5MyAxMy44NjI1IDggMTMuNjg5NCA4IDEzLjVWMS41Wk0zLjggNC45TDcgMi41VjEyLjVMMy44IDEwLjFDMy43MTM0NSAxMC4wMzUxIDMuNjA4MTkgMTAgMy41IDEwSDEuNUMxLjIyMzg2IDEwIDEgOS43NzYxNCAxIDkuNVY1LjVDMSA1LjIyMzg2IDEuMjIzODYgNSAxLjUgNUgzLjVDMy42MDgxOSA1IDMuNzEzNDUgNC45NjQ5MSAzLjggNC45Wk0xMC44MzMgMy45NTk0OUMxMC43MTA2IDMuNzc1NTcgMTAuNDYyMyAzLjcyNTY3IDEwLjI3ODQgMy44NDgwNEMxMC4wOTQ0IDMuOTcwNDEgMTAuMDQ0NSA0LjIxODcxIDEwLjE2NjkgNC40MDI2NEMxMS40MTExIDYuMjcyNjggMTEuNDExMSA4LjcyNzI4IDEwLjE2NjkgMTAuNTk3M0MxMC4wNDQ1IDEwLjc4MTMgMTAuMDk0NCAxMS4wMjk2IDEwLjI3ODQgMTEuMTUxOUMxMC40NjIzIDExLjI3NDMgMTAuNzEwNiAxMS4yMjQ0IDEwLjgzMyAxMS4wNDA1QzEyLjI1NTggOC45MDE5OSAxMi4yNTU4IDYuMDk3OTggMTAuODMzIDMuOTU5NDlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxUcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy43MjM2MSAxLjA1Mjc5QzcuODkzIDEuMTM3NDkgOCAxLjMxMDYyIDggMS41VjEzLjVDOCAxMy42ODk0IDcuODkzIDEzLjg2MjUgNy43MjM2MSAxMy45NDcyQzcuNTU0MjEgMTQuMDMxOSA3LjM1MTUxIDE0LjAxMzYgNy4yIDEzLjlMMy4zMzMzMyAxMUgxLjVDMC42NzE1NzMgMTEgMCAxMC4zMjg0IDAgOS41VjUuNUMwIDQuNjcxNTggMC42NzE1NzMgNCAxLjUgNEgzLjMzMzMzTDcuMiAxLjFDNy4zNTE1MSAwLjk4NjM3MSA3LjU1NDIxIDAuOTY4MDkzIDcuNzIzNjEgMS4wNTI3OVpNNyAyLjVMMy44IDQuOUMzLjcxMzQ1IDQuOTY0OTEgMy42MDgxOSA1IDMuNSA1SDEuNUMxLjIyMzg2IDUgMSA1LjIyMzg2IDEgNS41VjkuNUMxIDkuNzc2MTQgMS4yMjM4NiAxMCAxLjUgMTBIMy41QzMuNjA4MTkgMTAgMy43MTM0NSAxMC4wMzUxIDMuOCAxMC4xTDcgMTIuNVYyLjVaTTE0Ljg1MzYgNS4xNDY0NUMxNS4wNDg4IDUuMzQxNzEgMTUuMDQ4OCA1LjY1ODI5IDE0Ljg1MzYgNS44NTM1NUwxMy4yMDcxIDcuNUwxNC44NTM2IDkuMTQ2NDVDMTUuMDQ4OCA5LjM0MTcxIDE1LjA0ODggOS42NTgyOSAxNC44NTM2IDkuODUzNTVDMTQuNjU4MyAxMC4wNDg4IDE0LjM0MTcgMTAuMDQ4OCAxNC4xNDY0IDkuODUzNTVMMTIuNSA4LjIwNzExTDEwLjg1MzYgOS44NTM1NUMxMC42NTgzIDEwLjA0ODggMTAuMzQxNyAxMC4wNDg4IDEwLjE0NjQgOS44NTM1NUM5Ljk1MTE4IDkuNjU4MjkgOS45NTExOCA5LjM0MTcxIDEwLjE0NjQgOS4xNDY0NUwxMS43OTI5IDcuNUwxMC4xNDY0IDUuODUzNTVDOS45NTExOCA1LjY1ODI5IDkuOTUxMTggNS4zNDE3MSAxMC4xNDY0IDUuMTQ2NDVDMTAuMzQxNyA0Ljk1MTE4IDEwLjY1ODMgNC45NTExOCAxMC44NTM2IDUuMTQ2NDVMMTIuNSA2Ljc5Mjg5TDE0LjE0NjQgNS4xNDY0NUMxNC4zNDE3IDQuOTUxMTggMTQuNjU4MyA0Ljk1MTE4IDE0Ljg1MzYgNS4xNDY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEhyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04IDEuNUM4IDEuMzEwNjIgNy44OTMgMS4xMzc0OSA3LjcyMzYxIDEuMDUyNzlDNy41NTQyMSAwLjk2ODA5MyA3LjM1MTUxIDAuOTg2MzcxIDcuMiAxLjFMMy4zMzMzMyA0SDEuNUMwLjY3MTU3MyA0IDAgNC42NzE1OCAwIDUuNVY5LjVDMCAxMC4zMjg0IDAuNjcxNTczIDExIDEuNSAxMUgzLjMzMzMzTDcuMiAxMy45QzcuMzUxNTEgMTQuMDEzNiA3LjU1NDIxIDE0LjAzMTkgNy43MjM2MSAxMy45NDcyQzcuODkzIDEzLjg2MjUgOCAxMy42ODk0IDggMTMuNVYxLjVaTTMuOCA0LjlMNyAyLjVWMTIuNUwzLjggMTAuMUMzLjcxMzQ1IDEwLjAzNTEgMy42MDgxOSAxMCAzLjUgMTBIMS41QzEuMjIzODYgMTAgMSA5Ljc3NjE0IDEgOS41VjUuNUMxIDUuMjIzODYgMS4yMjM4NiA1IDEuNSA1SDMuNUMzLjYwODE5IDUgMy43MTM0NSA0Ljk2NDkxIDMuOCA0LjlaTTEwLjA4MyA1LjA1NTc3QzkuOTYwNjYgNC44NzE4NSA5LjcxMjM1IDQuODIxOTUgOS41Mjg0MyA0Ljk0NDMyQzkuMzQ0NSA1LjA2NjY5IDkuMjk0NiA1LjMxNDk5IDkuNDE2OTcgNS40OTg5MkMxMC4yMjA3IDYuNzA2OTMgMTAuMjIwNyA4LjI5MzAzIDkuNDE2OTcgOS41MDEwNEM5LjI5NDYgOS42ODQ5NiA5LjM0NDUgOS45MzMyNiA5LjUyODQzIDEwLjA1NTZDOS43MTIzNSAxMC4xNzggOS45NjA2NiAxMC4xMjgxIDEwLjA4MyA5Ljk0NDE4QzExLjA2NTMgOC40Njc3MyAxMS4wNjUzIDYuNTMyMjIgMTAuMDgzIDUuMDU1NzdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxWcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMSAxSDEuNUgxMy41SDE0VjEuNVYxMy41VjE0SDEzLjVIMS41SDFWMTMuNVYxLjVWMVpNMiAyVjEzSDEzVjJIMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEJyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03Ljc1NDMyIDEuODE5NTRDNy41OTc0MiAxLjcyNjgyIDcuNDAyNSAxLjcyNjgyIDcuMjQ1NTkgMS44MTk1NEwxLjc0NTU5IDUuMDY5NTRDMS41OTMzNiA1LjE1OTQ5IDEuNDk5OTYgNS4zMjMxNyAxLjQ5OTk2IDUuNUMxLjQ5OTk2IDUuNjc2ODMgMS41OTMzNiA1Ljg0MDUxIDEuNzQ1NTkgNS45MzA0Nkw3LjI0NTU5IDkuMTgwNDZDNy40MDI1IDkuMjczMTggNy41OTc0MiA5LjI3MzE4IDcuNzU0MzIgOS4xODA0NkwxMy4yNTQzIDUuOTMwNDZDMTMuNDA2NiA1Ljg0MDUxIDEzLjUgNS42NzY4MyAxMy41IDUuNUMxMy41IDUuMzIzMTcgMTMuNDA2NiA1LjE1OTQ5IDEzLjI1NDMgNS4wNjk1NEw3Ljc1NDMyIDEuODE5NTRaTTcuNDk5OTYgOC4xNjkyM0wyLjk4MjggNS41TDcuNDk5OTYgMi44MzA3N0wxMi4wMTcxIDUuNUw3LjQ5OTk2IDguMTY5MjNaTTIuMjU0MzIgOC4zMTk1NEMyLjAxNjU4IDguMTc5MDYgMS43MDk5OCA4LjI1NzkgMS41Njk0OSA4LjQ5NTY0QzEuNDI5MDEgOC43MzMzNyAxLjUwNzg1IDkuMDM5OTggMS43NDU1OSA5LjE4MDQ2TDcuMjQ1NTkgMTIuNDMwNUM3LjQwMjUgMTIuNTIzMiA3LjU5NzQyIDEyLjUyMzIgNy43NTQzMiAxMi40MzA1TDEzLjI1NDMgOS4xODA0NkMxMy40OTIxIDkuMDM5OTggMTMuNTcwOSA4LjczMzM3IDEzLjQzMDQgOC40OTU2NEMxMy4yODk5IDguMjU3OSAxMi45ODMzIDguMTc5MDYgMTIuNzQ1NiA4LjMxOTU0TDcuNDk5OTYgMTEuNDE5MkwyLjI1NDMyIDguMzE5NTRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxEcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi45Nzk0MiAxLjI1MTcxTDYuOTU4NSAxLjMwMTk5TDUuNTg2NjIgNC42MDAzOUM1LjU0MzQyIDQuNzA0MjYgNS40NDU3MyA0Ljc3NTIzIDUuMzMzNiA0Ljc4NDIyTDEuNzcyNyA1LjA2OTdMMS43MTg0MSA1LjA3NDA1TDEuMzg2ODcgNS4xMDA2M0wxLjA4NjA4IDUuMTI0NzVDMC44MjAwODUgNS4xNDYwNyAwLjcxMjIyOCA1LjQ3ODAyIDAuOTE0ODg5IDUuNjUxNjJMMS4xNDQwNiA1Ljg0NzkzTDEuMzk2NjYgNi4wNjQzMUwxLjQzODAyIDYuMDk5NzRMNC4xNTEwNSA4LjQyMzc0QzQuMjM2NDggOC40OTY5MiA0LjI3MzggOC42MTE3NiA0LjI0NzY5IDguNzIxMThMMy40MTg4MiAxMi4xOTZMMy40MDYxOCAxMi4yNDlMMy4zMjkwMSAxMi41NzI1TDMuMjU4OTkgMTIuODY2QzMuMTk3MDggMTMuMTI1NiAzLjQ3OTQ1IDEzLjMzMDggMy43MDcxOCAxMy4xOTE3TDMuOTY0NyAxMy4wMzQ0TDQuMjQ4NTQgMTIuODYxTDQuMjk1MDIgMTIuODMyNkw3LjM0MzY1IDEwLjk3MDVDNy40Mzk2NSAxMC45MTE5IDcuNTYwNCAxMC45MTE5IDcuNjU2NCAxMC45NzA1TDEwLjcwNSAxMi44MzI2TDEwLjc1MTUgMTIuODYxTDExLjAzNTQgMTMuMDM0NEwxMS4yOTI5IDEzLjE5MTdDMTEuNTIwNiAxMy4zMzA4IDExLjgwMyAxMy4xMjU2IDExLjc0MTEgMTIuODY2TDExLjY3MSAxMi41NzI1TDExLjU5MzkgMTIuMjQ5TDExLjU4MTIgMTIuMTk2TDEwLjc1MjQgOC43MjExOEMxMC43MjYzIDguNjExNzYgMTAuNzYzNiA4LjQ5NjkyIDEwLjg0OSA4LjQyMzc0TDEzLjU2MiA2LjA5OTc0TDEzLjYwMzQgNi4wNjQzMUwxMy44NTYgNS44NDc5M0wxNC4wODUyIDUuNjUxNjJDMTQuMjg3OCA1LjQ3ODAyIDE0LjE4IDUuMTQ2MDcgMTMuOTE0IDUuMTI0NzVMMTMuNjEzMiA1LjEwMDYzTDEzLjI4MTYgNS4wNzQwNUwxMy4yMjc0IDUuMDY5N0w5LjY2NjQ1IDQuNzg0MjJDOS41NTQzMiA0Ljc3NTIzIDkuNDU2NjMgNC43MDQyNiA5LjQxMzQzIDQuNjAwMzlMOC4wNDE1NSAxLjMwMTk5TDguMDIwNjQgMS4yNTE3MUw3Ljg5MjkxIDAuOTQ0NjA5TDcuNzc3MDIgMC42NjU5OTJDNy42NzQ1NCAwLjQxOTYwNCA3LjMyNTUxIDAuNDE5NjA0IDcuMjIzMDMgMC42NjU5OTJMNy4xMDcxNSAwLjk0NDYwOUw2Ljk3OTQyIDEuMjUxNzFaTTcuNTAwMDMgMi42MDM5N0w2LjUwOTk0IDQuOTg0NDJDNi4zMjI3MyA1LjQzNDUzIDUuODk5NDQgNS43NDIwNyA1LjQxMzUxIDUuNzgxMDNMMi44NDM2MSA1Ljk4NzA1TDQuODAxNiA3LjY2NDI4QzUuMTcxODMgNy45ODE0MiA1LjMzMzUxIDguNDc5MDMgNS4yMjA0IDguOTUzMjFMNC42MjIyMSAxMS40NjFMNi44MjI0IDEwLjExNzFDNy4yMzg0MiA5Ljg2MzAyIDcuNzYxNjQgOS44NjMwMiA4LjE3NzY2IDEwLjExNzFMMTAuMzc3OCAxMS40NjFMOS43Nzk2NSA4Ljk1MzIxQzkuNjY2NTQgOC40NzkwMyA5LjgyODIyIDcuOTgxNDIgMTAuMTk4NCA3LjY2NDI4TDEyLjE1NjQgNS45ODcwNUw5LjU4NjU0IDUuNzgxMDNDOS4xMDA2MSA1Ljc0MjA3IDguNjc3MzIgNS40MzQ1MyA4LjQ5MDExIDQuOTg0NDJMNy41MDAwMyAyLjYwMzk3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMjIzMDMgMC42NjU5OTJDNy4zMjU1MSAwLjQxOTYwNCA3LjY3NDU0IDAuNDE5NjA0IDcuNzc3MDIgMC42NjU5OTJMOS40MTM0MyA0LjYwMDM5QzkuNDU2NjMgNC43MDQyNiA5LjU1NDMyIDQuNzc1MjMgOS42NjY0NSA0Ljc4NDIyTDEzLjkxNCA1LjEyNDc1QzE0LjE4IDUuMTQ2MDcgMTQuMjg3OCA1LjQ3ODAyIDE0LjA4NTIgNS42NTE2MkwxMC44NDkgOC40MjM3NEMxMC43NjM2IDguNDk2OTIgMTAuNzI2MyA4LjYxMTc2IDEwLjc1MjQgOC43MjExOEwxMS43NDExIDEyLjg2NkMxMS44MDMgMTMuMTI1NiAxMS41MjA2IDEzLjMzMDggMTEuMjkyOSAxMy4xOTE3TDcuNjU2NCAxMC45NzA1QzcuNTYwNCAxMC45MTE5IDcuNDM5NjUgMTAuOTExOSA3LjM0MzY1IDEwLjk3MDVMMy43MDcxOCAxMy4xOTE3QzMuNDc5NDUgMTMuMzMwOCAzLjE5NzA4IDEzLjEyNTYgMy4yNTg5OSAxMi44NjZMNC4yNDc2OSA4LjcyMTE4QzQuMjczOCA4LjYxMTc2IDQuMjM2NDggOC40OTY5MiA0LjE1MTA1IDguNDIzNzRMMC45MTQ4ODkgNS42NTE2MkMwLjcxMjIyOCA1LjQ3ODAyIDAuODIwMDg2IDUuMTQ2MDcgMS4wODYwOCA1LjEyNDc1TDUuMzMzNiA0Ljc4NDIyQzUuNDQ1NzMgNC43NzUyMyA1LjU0MzQyIDQuNzA0MjYgNS41ODY2MiA0LjYwMDM5TDcuMjIzMDMgMC42NjU5OTJaXCIsZmlsbDpufSkpfSwkcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS44NDk5OCA3LjQ5OTk4QzEuODQ5OTggNy4yMTMyMSAxLjg3MTM0IDYuOTMxNDMgMS45MTI1NiA2LjY1NjE1TDkuNTYzNzQgMi4yMzg3NUM5Ljg2MzExIDIuMzU2MjcgMTAuMTUgMi40OTg2MSAxMC40MjE5IDIuNjYzMjJMMy43NzA2NSA2LjUwMzMyQzMuNzM2NjkgNi41MjE4MyAzLjcwNDgyIDYuNTQ0OSAzLjY3NjAyIDYuNTcyMzhDMy41OTExIDYuNjUzMDggMy41NDI0NSA2Ljc2Mjg2IDMuNTM2ODIgNi44NzY1OEMzLjUzMzU5IDYuOTQxOCAzLjU0NDUxIDcuMDA4MzEgMy41NzA4NiA3LjA3MTM3QzMuNTg5MjcgNy4xMTU3IDMuNjE0OSA3LjE1NzQyIDMuNjQ3NDQgNy4xOTQ1OEMzLjY3MzA2IDcuMjIzOTYgMy43MDIgNy4yNDk0MSAzLjczMzM3IDcuMjcwNjlMNy4zMjUzMyA5LjgzODEzTDMuODcyMzIgMTEuODMxN0MyLjYzNjA0IDEwLjc5NTMgMS44NDk5OCA5LjIzOTQ0IDEuODQ5OTggNy40OTk5OFpNOC4zNjg0MyAxMC4yNzUxQzguMzc2ODIgMTAuMjcwNiA4LjM4NTA5IDEwLjI2NTkgOC4zOTMyMiAxMC4yNjA4TDkuODQwOTEgOS40MjQ5OUM5Ljg0NzA2IDkuNDIxNjMgOS44NTMxNCA5LjQxODEyIDkuODU5MTUgOS40MTQ0NkwxMS4zMTAxIDguNTc2NzdDMTEuMzY1NSA4LjU0NjQ5IDExLjQxNTQgOC41MDQgMTEuNDU1NCA4LjQ0OTk1QzExLjYwMzQgOC4yNTAzMSAxMS41NjE2IDcuOTY4NDggMTEuMzYyIDcuODIwNDZMNy44Mjc3OSA1LjIwMDE3TDExLjIxNjEgMy4yNDM5M0MxMi40MDEzIDQuMjc5NjMgMTMuMTUgNS44MDIzNyAxMy4xNSA3LjQ5OTk4QzEzLjE1IDcuODM1NDYgMTMuMTIwNyA4LjE2NDExIDEzLjA2NDcgOC40ODM1M0w1LjU2ODc1IDEyLjgxMTNDNS4yNjEzOCAxMi42OTk1IDQuOTY2NDYgMTIuNTYxOCA0LjY4NjYyIDEyLjQwMDhMOC4zNjg0MyAxMC4yNzUxWk04LjE4MTQ5IDkuMzQzODNMNC44MTY1OSA2LjkzODY4TDUuNTA5MTggNi41Mzg4MUw4LjgwNjA0IDguOTgzMjRMOC4xODE0OSA5LjM0MzgzWk02LjM1ODc1IDYuMDQ4MzJMNi45NzgyMiA1LjY5MDY3TDEwLjI3NTEgOC4xMzUwNkw5LjY1NTYgOC40OTI3NUw2LjM1ODc1IDYuMDQ4MzJaTTguMzMxOCAxLjkxMDc4TDIuMjQyNjMgNS40MjYzNkMzLjA2OTQxIDMuMzMxODggNS4xMTE2NCAxLjg0OTk4IDcuNDk5OTggMS44NDk5OEM3Ljc4MjU4IDEuODQ5OTggOC4wNjAzMyAxLjg3MDcyIDguMzMxOCAxLjkxMDc4Wk02Ljg0Njg0IDEzLjExMjZDNy4wNjExNCAxMy4xMzczIDcuMjc5MDggMTMuMTUgNy40OTk5OCAxMy4xNUM5LjgyNDYgMTMuMTUgMTEuODIxMyAxMS43NDYxIDEyLjY4ODYgOS43Mzk5TDYuODQ2ODQgMTMuMTEyNlpNNy40OTk5OCAwLjg0OTk3NkMzLjgyNzI4IDAuODQ5OTc2IDAuODQ5OTc2IDMuODI3MjggMC44NDk5NzYgNy40OTk5OEMwLjg0OTk3NiAxMS4xNzI3IDMuODI3MjggMTQuMTUgNy40OTk5OCAxNC4xNUMxMS4xNzI3IDE0LjE1IDE0LjE1IDExLjE3MjcgMTQuMTUgNy40OTk5OEMxNC4xNSAzLjgyNzI4IDExLjE3MjcgMC44NDk5NzYgNy40OTk5OCAwLjg0OTk3NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEZyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDNDMiAyLjQ0NzcyIDIuNDQ3NzIgMiAzIDJIMTJDMTIuNTUyMyAyIDEzIDIuNDQ3NzIgMTMgM1YxMkMxMyAxMi41NTIzIDEyLjU1MjMgMTMgMTIgMTNIM0MyLjQ0NzcyIDEzIDIgMTIuNTUyMyAyIDEyVjNaTTEyIDNIM1YxMkgxMlYzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNDk5OTggMC41QzUuNDk5OTggMC4yMjM4NTggNS43MjM4MyAwIDUuOTk5OTggMEg3LjQ5OTk4SDguOTk5OThDOS4yNzYxMiAwIDkuNDk5OTggMC4yMjM4NTggOS40OTk5OCAwLjVDOS40OTk5OCAwLjc3NjE0MiA5LjI3NjEyIDEgOC45OTk5OCAxSDcuOTk5OThWMi4xMTkyMkM5LjA5ODMyIDIuMjA0MDkgMTAuMTE5IDIuNTY2MjIgMTAuOTkyIDMuMTM1NzJDMTEuMDExNiAzLjEwODUxIDExLjAzMzYgMy4wODI1MiAxMS4wNTggMy4wNTgwNkwxMS44NTggMi4yNTgwNkMxMi4xMDIxIDIuMDEzOTggMTIuNDk3OCAyLjAxMzk4IDEyLjc0MTkgMi4yNTgwNkMxMi45ODYgMi41MDIxNCAxMi45ODYgMi44OTc4NiAxMi43NDE5IDMuMTQxOTRMMTEuOTY3IDMuOTE2ODJDMTMuMTU5NSA1LjA3OTI1IDEzLjkgNi43MDMxNCAxMy45IDguNDk5OThDMTMuOSAxMi4wMzQ2IDExLjAzNDYgMTQuOSA3LjQ5OTk4IDE0LjlDMy45NjUzNSAxNC45IDEuMDk5OTggMTIuMDM0NiAxLjA5OTk4IDguNDk5OThDMS4wOTk5OCA1LjEzMzYyIDMuNjk5MDQgMi4zNzQzIDYuOTk5OTggMi4xMTkyMlYxSDUuOTk5OThDNS43MjM4MyAxIDUuNDk5OTggMC43NzYxNDIgNS40OTk5OCAwLjVaTTIuMDk5OTggOC40OTk5OEMyLjA5OTk4IDUuNTE3NjQgNC41MTc2NCAzLjA5OTk4IDcuNDk5OTggMy4wOTk5OEMxMC40ODIzIDMuMDk5OTggMTIuOSA1LjUxNzY0IDEyLjkgOC40OTk5OEMxMi45IDExLjQ4MjMgMTAuNDgyMyAxMy45IDcuNDk5OTggMTMuOUM0LjUxNzY0IDEzLjkgMi4wOTk5OCAxMS40ODIzIDIuMDk5OTggOC40OTk5OFpNNy45OTk5OCA0LjVDNy45OTk5OCA0LjIyMzg2IDcuNzc2MTIgNCA3LjQ5OTk4IDRDNy4yMjM4MyA0IDYuOTk5OTggNC4yMjM4NiA2Ljk5OTk4IDQuNVY5LjVDNi45OTk5OCA5Ljc3NjE0IDcuMjIzODMgMTAgNy40OTk5OCAxMEM3Ljc3NjEyIDEwIDcuOTk5OTggOS43NzYxNCA3Ljk5OTk4IDkuNVY0LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxVcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTQuNDk5OSAwLjk5OTk5MkMxNC4yMjM3IDAuOTk5OTkyIDEzLjk5OTkgMS4yMjM4NSAxMy45OTk5IDEuNDk5OTlMMTMuOTk5OSA1Ljk5OTk1TDAuOTk5OTkyIDUuOTk5OTVMMC45OTk5OTIgMS40OTk5OUMwLjk5OTk5MiAxLjIyMzg1IDAuNzc2MTM2IDAuOTk5OTkyIDAuNDk5OTk2IDAuOTk5OTkyQzAuMjIzODU2IDAuOTk5OTkyIC05Ljc4NTA5ZS0wOSAxLjIyMzg1IC0yLjE4NTU2ZS0wOCAxLjQ5OTk5TDQuMDcyNzllLTA3IDEzLjQ5OTlDMy45NTIwOGUtMDcgMTMuNzc2IDAuMjIzODU1IDEzLjk5OTkgMC40OTk5OTYgMTMuOTk5OUMwLjc3NjEzNiAxMy45OTk5IDAuOTk5OTkyIDEzLjc3NiAwLjk5OTk5MiAxMy40OTk5TDAuOTk5OTkyIDguOTk5OTJMMTMuOTk5OSA4Ljk5OTkyTDEzLjk5OTkgMTMuNDk5OUMxMy45OTk5IDEzLjc3NiAxNC4yMjM3IDEzLjk5OTkgMTQuNDk5OSAxMy45OTk5QzE0Ljc3NiAxMy45OTk5IDE0Ljk5OTkgMTMuNzc2IDE0Ljk5OTkgMTMuNDk5OUwxNC45OTk5IDEuNDk5OTlDMTQuOTk5OSAxLjIyMzg1IDE0Ljc3NiAwLjk5OTk5MiAxNC40OTk5IDAuOTk5OTkyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sV3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuOTk5ODc4IDAuNUMwLjk5OTg3OCAwLjIyMzg1OCAxLjIyMzc0IDAgMS40OTk4OCAwSDEzLjQ5OTlDMTMuNzc2IDAgMTMuOTk5OSAwLjIyMzg1OCAxMy45OTk5IDAuNUMxMy45OTk5IDAuNzc2MTQyIDEzLjc3NiAxIDEzLjQ5OTkgMUg2SDEuNDk5ODhDMS4yMjM3NCAxIDAuOTk5ODc4IDAuNzc2MTQyIDAuOTk5ODc4IDAuNVpNOSAxNFYxTDYgMVYxNEgxLjQ5OTg4QzEuMjIzNzQgMTQgMC45OTk4NzggMTQuMjIzOSAwLjk5OTg3OCAxNC41QzAuOTk5ODc4IDE0Ljc3NjEgMS4yMjM3NCAxNSAxLjQ5OTg4IDE1SDEzLjQ5OTlDMTMuNzc2IDE1IDEzLjk5OTkgMTQuNzc2MSAxMy45OTk5IDE0LjVDMTMuOTk5OSAxNC4yMjM5IDEzLjc3NiAxNCAxMy40OTk5IDE0SDlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx6cj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS4wMDAwMyAzLjI1QzUuMDAwMDMgMi45NzM4NiA0Ljc3NjE3IDIuNzUgNC41MDAwMyAyLjc1QzQuMjIzODkgMi43NSA0LjAwMDAzIDIuOTczODYgNC4wMDAwMyAzLjI1VjcuMTAwMDNIMi40OTk5OEMyLjI3OTA2IDcuMTAwMDMgMi4wOTk5OCA3LjI3OTEyIDIuMDk5OTggNy41MDAwM0MyLjA5OTk4IDcuNzIwOTQgMi4yNzkwNiA3LjkwMDAzIDIuNDk5OTggNy45MDAwM0g0LjAwMDAzVjguNTVDNC4wMDAwMyAxMC40ODMgNS41NjcwMyAxMi4wNSA3LjUwMDAzIDEyLjA1QzkuNDMzMDMgMTIuMDUgMTEgMTAuNDgzIDExIDguNTVWNy45MDAwM0gxMi41QzEyLjcyMDkgNy45MDAwMyAxMi45IDcuNzIwOTQgMTIuOSA3LjUwMDAzQzEyLjkgNy4yNzkxMiAxMi43MjA5IDcuMTAwMDMgMTIuNSA3LjEwMDAzSDExVjMuMjVDMTEgMi45NzM4NiAxMC43NzYyIDIuNzUgMTAuNSAyLjc1QzEwLjIyMzkgMi43NSAxMCAyLjk3Mzg2IDEwIDMuMjVWNy4xMDAwM0g1LjAwMDAzVjMuMjVaTTUuMDAwMDMgNy45MDAwM1Y4LjU1QzUuMDAwMDMgOS45MzA3MSA2LjExOTMyIDExLjA1IDcuNTAwMDMgMTEuMDVDOC44ODA3NCAxMS4wNSAxMCA5LjkzMDcxIDEwIDguNTVWNy45MDAwM0g1LjAwMDAzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sR3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAwQzcuNzc2MTQgMCA4IDAuMjIzODU4IDggMC41VjIuNUM4IDIuNzc2MTQgNy43NzYxNCAzIDcuNSAzQzcuMjIzODYgMyA3IDIuNzc2MTQgNyAyLjVWMC41QzcgMC4yMjM4NTggNy4yMjM4NiAwIDcuNSAwWk0yLjE5NjcgMi4xOTY3QzIuMzkxOTYgMi4wMDE0NCAyLjcwODU0IDIuMDAxNDQgMi45MDM4MSAyLjE5NjdMNC4zMTgwMiAzLjYxMDkxQzQuNTEzMjggMy44MDYxNyA0LjUxMzI4IDQuMTIyNzYgNC4zMTgwMiA0LjMxODAyQzQuMTIyNzYgNC41MTMyOCAzLjgwNjE3IDQuNTEzMjggMy42MTA5MSA0LjMxODAyTDIuMTk2NyAyLjkwMzgxQzIuMDAxNDQgMi43MDg1NCAyLjAwMTQ0IDIuMzkxOTYgMi4xOTY3IDIuMTk2N1pNMC41IDdDMC4yMjM4NTggNyAwIDcuMjIzODYgMCA3LjVDMCA3Ljc3NjE0IDAuMjIzODU4IDggMC41IDhIMi41QzIuNzc2MTQgOCAzIDcuNzc2MTQgMyA3LjVDMyA3LjIyMzg2IDIuNzc2MTQgNyAyLjUgN0gwLjVaTTIuMTk2NyAxMi44MDMzQzIuMDAxNDQgMTIuNjA4IDIuMDAxNDQgMTIuMjkxNSAyLjE5NjcgMTIuMDk2MkwzLjYxMDkxIDEwLjY4MkMzLjgwNjE3IDEwLjQ4NjcgNC4xMjI3NiAxMC40ODY3IDQuMzE4MDIgMTAuNjgyQzQuNTEzMjggMTAuODc3MiA0LjUxMzI4IDExLjE5MzggNC4zMTgwMiAxMS4zODkxTDIuOTAzODEgMTIuODAzM0MyLjcwODU0IDEyLjk5ODYgMi4zOTE5NiAxMi45OTg2IDIuMTk2NyAxMi44MDMzWk0xMi41IDdDMTIuMjIzOSA3IDEyIDcuMjIzODYgMTIgNy41QzEyIDcuNzc2MTQgMTIuMjIzOSA4IDEyLjUgOEgxNC41QzE0Ljc3NjEgOCAxNSA3Ljc3NjE0IDE1IDcuNUMxNSA3LjIyMzg2IDE0Ljc3NjEgNyAxNC41IDdIMTIuNVpNMTAuNjgyIDQuMzE4MDJDMTAuNDg2NyA0LjEyMjc2IDEwLjQ4NjcgMy44MDYxNyAxMC42ODIgMy42MTA5MUwxMi4wOTYyIDIuMTk2N0MxMi4yOTE1IDIuMDAxNDQgMTIuNjA4IDIuMDAxNDQgMTIuODAzMyAyLjE5NjdDMTIuOTk4NiAyLjM5MTk2IDEyLjk5ODYgMi43MDg1NCAxMi44MDMzIDIuOTAzODFMMTEuMzg5MSA0LjMxODAyQzExLjE5MzggNC41MTMyOCAxMC44NzcyIDQuNTEzMjggMTAuNjgyIDQuMzE4MDJaTTggMTIuNUM4IDEyLjIyMzkgNy43NzYxNCAxMiA3LjUgMTJDNy4yMjM4NiAxMiA3IDEyLjIyMzkgNyAxMi41VjE0LjVDNyAxNC43NzYxIDcuMjIzODYgMTUgNy41IDE1QzcuNzc2MTQgMTUgOCAxNC43NzYxIDggMTQuNVYxMi41Wk0xMC42ODIgMTAuNjgyQzEwLjg3NzIgMTAuNDg2NyAxMS4xOTM4IDEwLjQ4NjcgMTEuMzg5MSAxMC42ODJMMTIuODAzMyAxMi4wOTYyQzEyLjk5ODYgMTIuMjkxNSAxMi45OTg2IDEyLjYwOCAxMi44MDMzIDEyLjgwMzNDMTIuNjA4IDEyLjk5ODYgMTIuMjkxNSAxMi45OTg2IDEyLjA5NjIgMTIuODAzM0wxMC42ODIgMTEuMzg5MUMxMC40ODY3IDExLjE5MzggMTAuNDg2NyAxMC44NzcyIDEwLjY4MiAxMC42ODJaTTUuNSA3LjVDNS41IDYuMzk1NDMgNi4zOTU0MyA1LjUgNy41IDUuNUM4LjYwNDU3IDUuNSA5LjUgNi4zOTU0MyA5LjUgNy41QzkuNSA4LjYwNDU3IDguNjA0NTcgOS41IDcuNSA5LjVDNi4zOTU0MyA5LjUgNS41IDguNjA0NTcgNS41IDcuNVpNNy41IDQuNUM1Ljg0MzE1IDQuNSA0LjUgNS44NDMxNSA0LjUgNy41QzQuNSA5LjE1Njg1IDUuODQzMTUgMTAuNSA3LjUgMTAuNUM5LjE1Njg1IDEwLjUgMTAuNSA5LjE1Njg1IDEwLjUgNy41QzEwLjUgNS44NDMxNSA5LjE1Njg1IDQuNSA3LjUgNC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwLjUgNEM4LjU2NyA0IDcgNS41NjcgNyA3LjVDNyA5LjQzMyA4LjU2NyAxMSAxMC41IDExQzEyLjQzMyAxMSAxNCA5LjQzMyAxNCA3LjVDMTQgNS41NjcgMTIuNDMzIDQgMTAuNSA0Wk03LjY3MTMzIDExQzYuNjUxODMgMTAuMTc1IDYgOC45MTM2MyA2IDcuNUM2IDYuMDg2MzcgNi42NTE4MyA0LjgyNDk4IDcuNjcxMzMgNEg0LjVDMi41NjcgNCAxIDUuNTY3IDEgNy41QzEgOS40MzMgMi41NjcgMTEgNC41IDExSDcuNjcxMzNaTTAgNy41QzAgNS4wMTQ3MiAyLjAxNDcyIDMgNC41IDNIMTAuNUMxMi45ODUzIDMgMTUgNS4wMTQ3MiAxNSA3LjVDMTUgOS45ODUyOCAxMi45ODUzIDEyIDEwLjUgMTJINC41QzIuMDE0NzIgMTIgMCA5Ljk4NTI4IDAgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuOTAzMjEgNy4yOTY3N0MxLjkwMzIxIDEwLjM0MSA0LjExMDQxIDEyLjQxNDcgNi41ODg5MyAxMi44NDM5QzYuODcyNTUgMTIuODkzIDcuMDYyNjYgMTMuMTYyNyA3LjAxMzU1IDEzLjQ0NjRDNi45NjQ0NCAxMy43MyA2LjY5NDcxIDEzLjkyMDEgNi40MTEwOSAxMy44NzFDMy40OTk0MiAxMy4zNjY4IDAuODYwODQgMTAuOTEyNyAwLjg2MDg0IDcuMjk2NzdDMC44NjA4MzkgNS43NjAwOSAxLjU1OTk2IDQuNTUyNDUgMi4zNzYzOSAzLjYzMzc3QzIuOTYxMjQgMi45NzU2OCAzLjYzMDM0IDIuNDQxMzUgNC4xNjg0NiAyLjAzMjAyTDIuNTMyMDUgMi4wMzIwMkMyLjI1NTkxIDIuMDMyMDIgMi4wMzIwNSAxLjgwODE2IDIuMDMyMDUgMS41MzIwMkMyLjAzMjA1IDEuMjU1ODggMi4yNTU5MSAxLjAzMjAyIDIuNTMyMDUgMS4wMzIwMkw1LjUzMjA1IDEuMDMyMDJDNS44MDgxOSAxLjAzMjAyIDYuMDMyMDUgMS4yNTU4OCA2LjAzMjA1IDEuNTMyMDJMNi4wMzIwNSA0LjUzMjAyQzYuMDMyMDUgNC44MDgxNiA1LjgwODE5IDUuMDMyMDIgNS41MzIwNSA1LjAzMjAyQzUuMjU1OTEgNS4wMzIwMiA1LjAzMjA1IDQuODA4MTYgNS4wMzIwNSA0LjUzMjAyTDUuMDMyMDUgMi42ODY0NUw1LjAzMDU0IDIuNjg3NTlMNS4wMzA0NSAyLjY4NzY2TDUuMDMwNDQgMi42ODc2N0w1LjAzMDQzIDIuNjg3NjdDNC40NTg5NiAzLjExODY4IDMuNzYwNTkgMy42NDUzOCAzLjE1NTU0IDQuMzI2MkMyLjQ0MTAyIDUuMTMwMjEgMS45MDMyMSA2LjEwMTU0IDEuOTAzMjEgNy4yOTY3N1pNMTMuMDEwOSA3LjcwMzIxQzEzLjAxMDkgNC42OTExNSAxMC44NTA1IDIuNjI5NiA4LjQwMzg0IDIuMTcwMjlDOC4xMjA5MyAyLjExNzE4IDcuOTM0NjUgMS44NDQ3OSA3Ljk4Nzc2IDEuNTYxODhDOC4wNDA4NyAxLjI3ODk4IDguMzEzMjYgMS4wOTI3IDguNTk2MTYgMS4xNDU4MUMxMS40NzA0IDEuNjg1NDEgMTQuMDUzMiA0LjEyNjA1IDE0LjA1MzIgNy43MDMyMUMxNC4wNTMyIDkuMjM5ODggMTMuMzU0MSAxMC40NDc1IDEyLjUzNzcgMTEuMzY2MkMxMS45NTI4IDEyLjAyNDMgMTEuMjgzNyAxMi41NTg2IDEwLjc0NTYgMTIuOTY4TDEyLjM4MjEgMTIuOTY4QzEyLjY1ODIgMTIuOTY4IDEyLjg4MjEgMTMuMTkxOCAxMi44ODIxIDEzLjQ2OEMxMi44ODIxIDEzLjc0NDEgMTIuNjU4MiAxMy45NjggMTIuMzgyMSAxMy45NjhMOS4zODIwNSAxMy45NjhDOS4xMDU5MSAxMy45NjggOC44ODIwNSAxMy43NDQxIDguODgyMDUgMTMuNDY4TDguODgyMDUgMTAuNDY4QzguODgyMDUgMTAuMTkxOCA5LjEwNTkxIDkuOTY3OTYgOS4zODIwNSA5Ljk2Nzk2QzkuNjU4MTkgOS45Njc5NiA5Ljg4MjA1IDEwLjE5MTggOS44ODIwNSAxMC40NjhMOS44ODIwNSAxMi4zMTM1TDkuODgzNjIgMTIuMzEyM0MxMC40NTUxIDExLjg4MTMgMTEuMTUzNSAxMS4zNTQ2IDExLjc1ODUgMTAuNjczOEMxMi40NzMxIDkuODY5NzYgMTMuMDEwOSA4Ljg5ODQ0IDEzLjAxMDkgNy43MDMyMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEtyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04IDJIMTIuNUMxMi43NzYxIDIgMTMgMi4yMjM4NiAxMyAyLjVWNUg4VjJaTTcgNVYySDIuNUMyLjIyMzg2IDIgMiAyLjIyMzg2IDIgMi41VjVIN1pNMiA2VjlIN1Y2SDJaTTggNkgxM1Y5SDhWNlpNOCAxMEgxM1YxMi41QzEzIDEyLjc3NjEgMTIuNzc2MSAxMyAxMi41IDEzSDhWMTBaTTIgMTIuNVYxMEg3VjEzSDIuNUMyLjIyMzg2IDEzIDIgMTIuNzc2MSAyIDEyLjVaTTEgMi41QzEgMS42NzE1NyAxLjY3MTU3IDEgMi41IDFIMTIuNUMxMy4zMjg0IDEgMTQgMS42NzE1NyAxNCAyLjVWMTIuNUMxNCAxMy4zMjg0IDEzLjMyODQgMTQgMTIuNSAxNEgyLjVDMS42NzE1NyAxNCAxIDEzLjMyODQgMSAxMi41VjIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFhyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjkwMDAyNCA3LjUwMDAyQzAuOTAwMDI0IDMuODU0OTUgMy44NTQ5NSAwLjkwMDAyNCA3LjUwMDAyIDAuOTAwMDI0QzExLjE0NTEgMC45MDAwMjQgMTQuMSAzLjg1NDk1IDE0LjEgNy41MDAwMkMxNC4xIDExLjE0NTEgMTEuMTQ1MSAxNC4xIDcuNTAwMDIgMTQuMUMzLjg1NDk1IDE0LjEgMC45MDAwMjQgMTEuMTQ1MSAwLjkwMDAyNCA3LjUwMDAyWk03LjUwMDAyIDEuODAwMDJDNC4zNTIwMSAxLjgwMDAyIDEuODAwMDIgNC4zNTIwMSAxLjgwMDAyIDcuNTAwMDJDMS44MDAwMiAxMC42NDggNC4zNTIwMSAxMy4yIDcuNTAwMDIgMTMuMkMxMC42NDggMTMuMiAxMy4yIDEwLjY0OCAxMy4yIDcuNTAwMDJDMTMuMiA0LjM1MjAxIDEwLjY0OCAxLjgwMDAyIDcuNTAwMDIgMS44MDAwMlpNMy4wNzUwNCA3LjUwMDAyQzMuMDc1MDQgNS4wNTYxNyA1LjA1NjE4IDMuMDc1MDIgNy41MDAwNCAzLjA3NTAyQzkuOTQzODggMy4wNzUwMiAxMS45MjUgNS4wNTYxNyAxMS45MjUgNy41MDAwMkMxMS45MjUgOS45NDM4NiA5Ljk0Mzg4IDExLjkyNSA3LjUwMDA0IDExLjkyNUM1LjA1NjE4IDExLjkyNSAzLjA3NTA0IDkuOTQzODYgMy4wNzUwNCA3LjUwMDAyWk03LjUwMDA0IDMuOTI1MDJDNS41MjU2MiAzLjkyNTAyIDMuOTI1MDQgNS41MjU2MSAzLjkyNTA0IDcuNTAwMDJDMy45MjUwNCA5LjQ3NDQyIDUuNTI1NjMgMTEuMDc1IDcuNTAwMDQgMTEuMDc1QzkuNDc0NDQgMTEuMDc1IDExLjA3NSA5LjQ3NDQyIDExLjA3NSA3LjUwMDAyQzExLjA3NSA1LjUyNTYxIDkuNDc0NDQgMy45MjUwMiA3LjUwMDA0IDMuOTI1MDJaTTcuNTAwMDQgNS4yNTAwMkM2LjI1NzQgNS4yNTAwMiA1LjI1MDA0IDYuMjU3MzkgNS4yNTAwNCA3LjUwMDAyQzUuMjUwMDQgOC43NDI2NiA2LjI1NzQgOS43NTAwMiA3LjUwMDA0IDkuNzUwMDJDOC43NDI2NyA5Ljc1MDAyIDkuNzUwMDQgOC43NDI2NiA5Ljc1MDA0IDcuNTAwMDJDOS43NTAwNCA2LjI1NzM4IDguNzQyNjcgNS4yNTAwMiA3LjUwMDA0IDUuMjUwMDJaTTYuMDUwMDQgNy41MDAwMkM2LjA1MDA0IDYuNjk5MjEgNi42OTkyMyA2LjA1MDAyIDcuNTAwMDQgNi4wNTAwMkM4LjMwMDg0IDYuMDUwMDIgOC45NTAwNCA2LjY5OTIxIDguOTUwMDQgNy41MDAwMkM4Ljk1MDA0IDguMzAwODMgOC4zMDA4NCA4Ljk1MDAyIDcuNTAwMDQgOC45NTAwMkM2LjY5OTIzIDguOTUwMDIgNi4wNTAwNCA4LjMwMDgzIDYuMDUwMDQgNy41MDAwMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEpyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjk0OTkzIDIuOTUwMDJMMy45NDk5MyA0LjQ5OTk4QzMuOTQ5OTMgNC43NDg1MSAzLjc0ODQ1IDQuOTQ5OTggMy40OTk5MyA0Ljk0OTk4QzMuMjUxNCA0Ljk0OTk4IDMuMDQ5OTMgNC43NDg1MSAzLjA0OTkzIDQuNDk5OThWMi41MDAwNEMzLjA0OTkzIDIuNDUyNDYgMy4wNTczMSAyLjQwNjYxIDMuMDcwOTkgMi4zNjM1N0MzLjEyODc4IDIuMTgxNzUgMy4yOTg5NyAyLjA1MDAyIDMuNDk5OTMgMi4wNTAwMkgxMS40OTk5QzExLjY1NTMgMi4wNTAwMiAxMS43OTIyIDIuMTI4NzIgMTEuODczMSAyLjI0ODQyQzExLjkyMTYgMi4zMjAyNCAxMS45NDk5IDIuNDA2ODIgMTEuOTQ5OSAyLjUwMDAyTDExLjk0OTkgMi41MDAwNFY0LjQ5OTk4QzExLjk0OTkgNC43NDg1MSAxMS43NDg1IDQuOTQ5OTggMTEuNDk5OSA0Ljk0OTk4QzExLjI1MTQgNC45NDk5OCAxMS4wNDk5IDQuNzQ4NTEgMTEuMDQ5OSA0LjQ5OTk4VjIuOTUwMDJIOC4wNDk5M1YxMi4wNUg5LjI1NDI4QzkuNTAyODEgMTIuMDUgOS43MDQyOCAxMi4yNTE1IDkuNzA0MjggMTIuNUM5LjcwNDI4IDEyLjc0ODYgOS41MDI4MSAxMi45NSA5LjI1NDI4IDEyLjk1SDUuNzU0MjhDNS41MDU3NSAxMi45NSA1LjMwNDI4IDEyLjc0ODYgNS4zMDQyOCAxMi41QzUuMzA0MjggMTIuMjUxNSA1LjUwNTc1IDEyLjA1IDUuNzU0MjggMTIuMDVINi45NDk5M1YyLjk1MDAySDMuOTQ5OTNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxRcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiA0LjVDMiA0LjIyMzg2IDIuMjIzODYgNCAyLjUgNEgxMi41QzEyLjc3NjEgNCAxMyA0LjIyMzg2IDEzIDQuNUMxMyA0Ljc3NjE0IDEyLjc3NjEgNSAxMi41IDVIMi41QzIuMjIzODYgNSAyIDQuNzc2MTQgMiA0LjVaTTQgNy41QzQgNy4yMjM4NiA0LjIyMzg2IDcgNC41IDdIMTAuNUMxMC43NzYxIDcgMTEgNy4yMjM4NiAxMSA3LjVDMTEgNy43NzYxNCAxMC43NzYxIDggMTAuNSA4SDQuNUM0LjIyMzg2IDggNCA3Ljc3NjE0IDQgNy41Wk0zIDEwLjVDMyAxMC4yMjM5IDMuMjIzODYgMTAgMy41IDEwSDExLjVDMTEuNzc2MSAxMCAxMiAxMC4yMjM5IDEyIDEwLjVDMTIgMTAuNzc2MSAxMS43NzYxIDExIDExLjUgMTFIMy41QzMuMjIzODYgMTEgMyAxMC43NzYxIDMgMTAuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGVvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjUgNEMyLjIyMzg2IDQgMiA0LjIyMzg2IDIgNC41QzIgNC43NzYxNCAyLjIyMzg2IDUgMi41IDVIMTIuNUMxMi43NzYxIDUgMTMgNC43NzYxNCAxMyA0LjVDMTMgNC4yMjM4NiAxMi43NzYxIDQgMTIuNSA0SDIuNVpNMiA3LjVDMiA3LjIyMzg2IDIuMjIzODYgNyAyLjUgN0gxMi41QzEyLjc3NjEgNyAxMyA3LjIyMzg2IDEzIDcuNUMxMyA3Ljc3NjE0IDEyLjc3NjEgOCAxMi41IDhIMi41QzIuMjIzODYgOCAyIDcuNzc2MTQgMiA3LjVaTTIgMTAuNUMyIDEwLjIyMzkgMi4yMjM4NiAxMCAyLjUgMTBIMTIuNUMxMi43NzYxIDEwIDEzIDEwLjIyMzkgMTMgMTAuNUMxMyAxMC43NzYxIDEyLjc3NjEgMTEgMTIuNSAxMUgyLjVDMi4yMjM4NiAxMSAyIDEwLjc3NjEgMiAxMC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgNC41QzIgNC4yMjM4NiAyLjIyMzg2IDQgMi41IDRIMTIuNUMxMi43NzYxIDQgMTMgNC4yMjM4NiAxMyA0LjVDMTMgNC43NzYxNCAxMi43NzYxIDUgMTIuNSA1SDIuNUMyLjIyMzg2IDUgMiA0Ljc3NjE0IDIgNC41Wk0yIDcuNUMyIDcuMjIzODYgMi4yMjM4NiA3IDIuNSA3SDcuNUM3Ljc3NjE0IDcgOCA3LjIyMzg2IDggNy41QzggNy43NzYxNCA3Ljc3NjE0IDggNy41IDhIMi41QzIuMjIzODYgOCAyIDcuNzc2MTQgMiA3LjVaTTIgMTAuNUMyIDEwLjIyMzkgMi4yMjM4NiAxMCAyLjUgMTBIMTAuNUMxMC43NzYxIDEwIDExIDEwLjIyMzkgMTEgMTAuNUMxMSAxMC43NzYxIDEwLjc3NjEgMTEgMTAuNSAxMUgyLjVDMi4yMjM4NiAxMSAyIDEwLjc3NjEgMiAxMC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbm89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgNC41QzIgNC4yMjM4NiAyLjIyMzg2IDQgMi41IDRIMTIuNUMxMi43NzYxIDQgMTMgNC4yMjM4NiAxMyA0LjVDMTMgNC43NzYxNCAxMi43NzYxIDUgMTIuNSA1SDIuNUMyLjIyMzg2IDUgMiA0Ljc3NjE0IDIgNC41Wk03IDcuNUM3IDcuMjIzODYgNy4yMjM4NiA3IDcuNSA3SDEyLjVDMTIuNzc2MSA3IDEzIDcuMjIzODYgMTMgNy41QzEzIDcuNzc2MTQgMTIuNzc2MSA4IDEyLjUgOEg3LjVDNy4yMjM4NiA4IDcgNy43NzYxNCA3IDcuNVpNNCAxMC41QzQgMTAuMjIzOSA0LjIyMzg2IDEwIDQuNSAxMEgxMi41QzEyLjc3NjEgMTAgMTMgMTAuMjIzOSAxMyAxMC41QzEzIDEwLjc3NjEgMTIuNzc2MSAxMSAxMi41IDExSDQuNUM0LjIyMzg2IDExIDQgMTAuNzc2MSA0IDEwLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxybz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMzUzNiAyLjM1MzU1QzEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDEuODQxNzEgMTMuMzUzNiAxLjY0NjQ1QzEzLjE1ODMgMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTIuNjQ2NCAxLjY0NjQ1TDExLjkyOTEgMi4zNjM4M0MxMS45MTU5IDIuMzIyNDYgMTEuODk3IDIuMjgzNjggMTEuODczMiAyLjI0ODQ1QzExLjc5MjMgMi4xMjg3NSAxMS42NTU0IDIuMDUwMDUgMTEuNTAwMSAyLjA1MDA1SDMuNTAwMDVDMy4yOTkwOSAyLjA1MDA1IDMuMTI4OSAyLjE4MTc4IDMuMDcxMTEgMi4zNjM2QzMuMDU3NDMgMi40MDY2NSAzLjA1MDA1IDIuNDUyNDkgMy4wNTAwNSAyLjUwMDA3VjQuNTAwMDFDMy4wNTAwNSA0Ljc0ODU0IDMuMjUxNTIgNC45NTAwMSAzLjUwMDA1IDQuOTUwMDFDMy43NDg1OCA0Ljk1MDAxIDMuOTUwMDUgNC43NDg1NCAzLjk1MDA1IDQuNTAwMDFWMi45NTAwNUg2Ljk1MDA2VjcuMzQyODRMMS42NDY0NSAxMi42NDY0QzEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEzLjE1ODMgMS42NDY0NSAxMy4zNTM2QzEuODQxNzEgMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMi4zNTM1NSAxMy4zNTM2TDYuOTUwMDYgOC43NTcwNVYxMi4wNTAxSDUuNzU0NEM1LjUwNTg3IDEyLjA1MDEgNS4zMDQ0IDEyLjI1MTUgNS4zMDQ0IDEyLjUwMDFDNS4zMDQ0IDEyLjc0ODYgNS41MDU4NyAxMi45NTAxIDUuNzU0NCAxMi45NTAxSDkuMjU0NEM5LjUwMjkzIDEyLjk1MDEgOS43MDQ0IDEyLjc0ODYgOS43MDQ0IDEyLjUwMDFDOS43MDQ0IDEyLjI1MTUgOS41MDI5MyAxMi4wNTAxIDkuMjU0NCAxMi4wNTAxSDguMDUwMDZWNy42NTcwNUwxMy4zNTM2IDIuMzUzNTVaTTguMDUwMDYgNi4yNDI4NEwxMS4wNTAxIDMuMjQyODNWMi45NTAwNUg4LjA1MDA2VjYuMjQyODRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxvbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSAzLjVDNSAzLjIyMzg2IDUuMjIzODYgMyA1LjUgM0g5LjVDOS43NzYxNCAzIDEwIDMuMjIzODYgMTAgMy41VjZIMTIuNUMxMi42ODczIDYgMTIuODU4OSA2LjEwNDY3IDEyLjk0NDYgNi4yNzEyMUMxMy4wMzAzIDYuNDM3NzQgMTMuMDE1NyA2LjYzODIxIDEyLjkwNjkgNi43OTA2Mkw3LjkwNjg3IDEzLjc5MDZDNy44MTMwMSAxMy45MjIgNy42NjE0OCAxNCA3LjUgMTRDNy4zMzg1MyAxNCA3LjE4Njk5IDEzLjkyMiA3LjA5MzE0IDEzLjc5MDZMMi4wOTMxNCA2Ljc5MDYyQzEuOTg0MjcgNi42MzgyMSAxLjk2OTcyIDYuNDM3NzQgMi4wNTU0MiA2LjI3MTIxQzIuMTQxMTIgNi4xMDQ2NyAyLjMxMjcxIDYgMi41IDZINVYzLjVaTTYgNFY2LjVDNiA2Ljc3NjE0IDUuNzc2MTQgNyA1LjUgN0gzLjQ3MTZMNy41IDEyLjYzOThMMTEuNTI4NCA3SDkuNUM5LjIyMzg2IDcgOSA2Ljc3NjE0IDkgNi41VjRINlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGlvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDcuNUMxIDcuNjYxNDggMS4wNzc5OCA3LjgxMzAxIDEuMjA5MzggNy45MDY4N0w4LjIwOTM4IDEyLjkwNjlDOC4zNjE3OSAxMy4wMTU3IDguNTYyMjYgMTMuMDMwMyA4LjcyODc5IDEyLjk0NDZDOC44OTUzMyAxMi44NTg5IDkgMTIuNjg3MyA5IDEyLjVMOSAxMEwxMS41IDEwQzExLjc3NjEgMTAgMTIgOS43NzYxNCAxMiA5LjVMMTIgNS41QzEyIDUuMjIzODYgMTEuNzc2MSA1IDExLjUgNUw5IDVMOSAyLjVDOSAyLjMxMjcxIDguODk1MzMgMi4xNDExMiA4LjcyODc5IDIuMDU1NDJDOC41NjIyNiAxLjk2OTcyIDguMzYxNzkgMS45ODQyNyA4LjIwOTM4IDIuMDkzMTNMMS4yMDkzOCA3LjA5MzE0QzEuMDc3OTggNy4xODY5OSAxIDcuMzM4NTMgMSA3LjVaTTggMy40NzE2TDggNS41QzggNS43NzYxNCA4LjIyMzg2IDYgOC41IDZMMTEgNkwxMSA5TDguNSA5QzguMjIzODYgOSA4IDkuMjIzODYgOCA5LjVMOCAxMS41Mjg0TDIuMzYwMjMgNy41TDggMy40NzE2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0IDcuNUMxNCA3LjY2MTQ4IDEzLjkyMiA3LjgxMzAxIDEzLjc5MDYgNy45MDY4N0w2Ljc5MDYyIDEyLjkwNjlDNi42MzgyMSAxMy4wMTU3IDYuNDM3NzQgMTMuMDMwMyA2LjI3MTIxIDEyLjk0NDZDNi4xMDQ2NyAxMi44NTg5IDYgMTIuNjg3MyA2IDEyLjVMNiAxMEwzLjUgMTBDMy4yMjM4NiAxMCAzIDkuNzc2MTQgMyA5LjVMMyA1LjVDMyA1LjIyMzg2IDMuMjIzODYgNSAzLjUgNUw2IDVMNiAyLjVDNiAyLjMxMjcxIDYuMTA0NjcgMi4xNDExMiA2LjI3MTIxIDIuMDU1NDJDNi40Mzc3NCAxLjk2OTcyIDYuNjM4MjEgMS45ODQyNyA2Ljc5MDYyIDIuMDkzMTNMMTMuNzkwNiA3LjA5MzE0QzEzLjkyMiA3LjE4Njk5IDE0IDcuMzM4NTMgMTQgNy41Wk03IDMuNDcxNkw3IDUuNUM3IDUuNzc2MTQgNi43NzYxNCA2IDYuNSA2TDQgNkw0IDlMNi41IDlDNi43NzYxNCA5IDcgOS4yMjM4NiA3IDkuNUw3IDExLjUyODRMMTIuNjM5OCA3LjVMNyAzLjQ3MTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxsbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDFDNy42NjE0OCAxIDcuODEzMDEgMS4wNzc5OCA3LjkwNjg3IDEuMjA5MzhMMTIuOTA2OSA4LjIwOTM4QzEzLjAxNTcgOC4zNjE3OSAxMy4wMzAzIDguNTYyMjYgMTIuOTQ0NiA4LjcyODc5QzEyLjg1ODkgOC44OTUzMyAxMi42ODczIDkgMTIuNSA5SDEwVjExLjVDMTAgMTEuNzc2MSA5Ljc3NjE0IDEyIDkuNSAxMkg1LjVDNS4yMjM4NiAxMiA1IDExLjc3NjEgNSAxMS41VjlIMi41QzIuMzEyNzEgOSAyLjE0MTEyIDguODk1MzMgMi4wNTU0MiA4LjcyODc5QzEuOTY5NzIgOC41NjIyNiAxLjk4NDI3IDguMzYxNzkgMi4wOTMxNCA4LjIwOTM4TDcuMDkzMTQgMS4yMDkzOEM3LjE4Njk5IDEuMDc3OTggNy4zMzg1MyAxIDcuNSAxWk0zLjQ3MTYgOEg1LjVDNS43NzYxNCA4IDYgOC4yMjM4NiA2IDguNVYxMUg5VjguNUM5IDguMjIzODYgOS4yMjM4NiA4IDkuNSA4SDExLjUyODRMNy41IDIuMzYwMjNMMy40NzE2IDhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxzbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5OCAwLjg0OTk3NkM3LjIyMzgzIDAuODQ5OTc2IDYuOTk5OTggMS4wNzM4MyA2Ljk5OTk4IDEuMzQ5OThWMy41MjIzNEM2Ljk5OTk4IDMuNzk4NDggNy4yMjM4MyA0LjAyMjM0IDcuNDk5OTggNC4wMjIzNEM3Ljc3NjEyIDQuMDIyMzQgNy45OTk5OCAzLjc5ODQ4IDcuOTk5OTggMy41MjIzNFYxLjg3MThDMTAuODg2MiAyLjEyNDg4IDEzLjE1IDQuNTQ4MDYgMTMuMTUgNy40OTk5OEMxMy4xNSAxMC42MjA0IDEwLjYyMDQgMTMuMTUgNy40OTk5OCAxMy4xNUM0LjM3OTU3IDEzLjE1IDEuODQ5OTggMTAuNjIwNCAxLjg0OTk4IDcuNDk5OThDMS44NDk5OCA2LjEwNjEyIDIuMzU0MDcgNC44MzEyOCAzLjE5MDQ5IDMuODQ1OUMzLjM2OTE5IDMuNjM1MzggMy4zNDMzOSAzLjMxOTg1IDMuMTMyODYgMy4xNDExNUMyLjkyMjM0IDIuOTYyNDUgMi42MDY4MSAyLjk4ODI1IDIuNDI4MTEgMy4xOTg3N0MxLjQ0NDA1IDQuMzU4MDggMC44NDk5NzYgNS44NjAyOSAwLjg0OTk3NiA3LjQ5OTk4QzAuODQ5OTc2IDExLjE3MjcgMy44MjcyOCAxNC4xNSA3LjQ5OTk4IDE0LjE1QzExLjE3MjcgMTQuMTUgMTQuMTUgMTEuMTcyNyAxNC4xNSA3LjQ5OTk4QzE0LjE1IDMuODI3MjggMTEuMTcyNyAwLjg0OTk3NiA3LjQ5OTk4IDAuODQ5OTc2Wk02Ljc0MDQ5IDguMDgwNzJMNC4yMjM2MyA0LjU3MjM3QzQuMTUyMzEgNC40NzI5NSA0LjE2MzQ2IDQuMzM2NTIgNC4yNDk5OCA0LjI1QzQuMzM2NDkgNC4xNjM0OCA0LjQ3MjkzIDQuMTUyMzMgNC41NzIzNCA0LjIyMzY1TDguMDgwNjkgNi43NDA1MUM4LjU2MjI3IDcuMDg1OTkgOC42MTkwNiA3Ljc4MDkxIDguMTk5OTggOC4yQzcuNzgwODkgOC42MTkwOSA3LjA4NTk3IDguNTYyMjkgNi43NDA0OSA4LjA4MDcyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sY289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNSAyQzMuMTE5MjkgMiAyIDMuMTE5MjkgMiA0LjVDMiA1Ljg4MDcyIDMuMTE5MjkgNyA0LjUgN0M1Ljg4MDcyIDcgNyA1Ljg4MDcyIDcgNC41QzcgMy4xMTkyOSA1Ljg4MDcyIDIgNC41IDJaTTMgNC41QzMgMy42NzE1NyAzLjY3MTU3IDMgNC41IDNDNS4zMjg0MyAzIDYgMy42NzE1NyA2IDQuNUM2IDUuMzI4NDMgNS4zMjg0MyA2IDQuNSA2QzMuNjcxNTcgNiAzIDUuMzI4NDMgMyA0LjVaTTEwLjUgMkM5LjExOTI5IDIgOCAzLjExOTI5IDggNC41QzggNS44ODA3MiA5LjExOTI5IDcgMTAuNSA3QzExLjg4MDcgNyAxMyA1Ljg4MDcyIDEzIDQuNUMxMyAzLjExOTI5IDExLjg4MDcgMiAxMC41IDJaTTkgNC41QzkgMy42NzE1NyA5LjY3MTU3IDMgMTAuNSAzQzExLjMyODQgMyAxMiAzLjY3MTU3IDEyIDQuNUMxMiA1LjMyODQzIDExLjMyODQgNiAxMC41IDZDOS42NzE1NyA2IDkgNS4zMjg0MyA5IDQuNVpNMiAxMC41QzIgOS4xMTkyOSAzLjExOTI5IDggNC41IDhDNS44ODA3MiA4IDcgOS4xMTkyOSA3IDEwLjVDNyAxMS44ODA3IDUuODgwNzIgMTMgNC41IDEzQzMuMTE5MjkgMTMgMiAxMS44ODA3IDIgMTAuNVpNNC41IDlDMy42NzE1NyA5IDMgOS42NzE1NyAzIDEwLjVDMyAxMS4zMjg0IDMuNjcxNTcgMTIgNC41IDEyQzUuMzI4NDMgMTIgNiAxMS4zMjg0IDYgMTAuNUM2IDkuNjcxNTcgNS4zMjg0MyA5IDQuNSA5Wk0xMC41IDhDOS4xMTkyOSA4IDggOS4xMTkyOSA4IDEwLjVDOCAxMS44ODA3IDkuMTE5MjkgMTMgMTAuNSAxM0MxMS44ODA3IDEzIDEzIDExLjg4MDcgMTMgMTAuNUMxMyA5LjExOTI5IDExLjg4MDcgOCAxMC41IDhaTTkgMTAuNUM5IDkuNjcxNTcgOS42NzE1NyA5IDEwLjUgOUMxMS4zMjg0IDkgMTIgOS42NzE1NyAxMiAxMC41QzEyIDExLjMyODQgMTEuMzI4NCAxMiAxMC41IDEyQzkuNjcxNTcgMTIgOSAxMS4zMjg0IDkgMTAuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHVvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy4wNTAyIDIuNzQ5ODlDMTMuMDUwMiAyLjQ0NjEzIDEyLjgwNCAyLjE5OTg5IDEyLjUwMDIgMi4xOTk4OUMxMi4xOTY1IDIuMTk5ODkgMTEuOTUwMiAyLjQ0NjEzIDExLjk1MDIgMi43NDk4OVY3LjI4MjVDMTEuOTA0NiA3LjE4ODAyIDExLjgyOTUgNy4xMDg1MSAxMS43MzM0IDcuMDU3NzZMMi43MzMzOCAyLjMwNzc2QzIuNTc4NCAyLjIyNTk2IDIuMzkxOSAyLjIzMTI3IDIuMjQxODIgMi4zMjE3NkMyLjA5MTc1IDIuNDEyMjUgMiAyLjU3NDcxIDIgMi43NDk5NVYxMi4yNUMyIDEyLjQyNTIgMi4wOTE3NSAxMi41ODc3IDIuMjQxODIgMTIuNjc4MUMyLjM5MTkgMTIuNzY4NiAyLjU3ODQgMTIuNzczOSAyLjczMzM4IDEyLjY5MjFMMTEuNzMzNCA3Ljk0MjE0QzExLjgyOTUgNy44OTEzOSAxMS45MDQ2IDcuODExODggMTEuOTUwMiA3LjcxNzRWMTIuMjQ5OUMxMS45NTAyIDEyLjU1MzYgMTIuMTk2NSAxMi43OTk5IDEyLjUwMDIgMTIuNzk5OUMxMi44MDQgMTIuNzk5OSAxMy4wNTAyIDEyLjU1MzYgMTMuMDUwMiAxMi4yNDk5VjIuNzQ5ODlaTTMgMTEuNDIwN1YzLjU3OTJMMTAuNDI4OCA3LjQ5OTk1TDMgMTEuNDIwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGZvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjk0OTc2IDIuNzQ5ODlDMS45NDk3NiAyLjQ0NjEzIDIuMTk2IDIuMTk5ODkgMi40OTk3NiAyLjE5OTg5QzIuODAzNTEgMi4xOTk4OSAzLjA0OTc2IDIuNDQ2MTMgMy4wNDk3NiAyLjc0OTg5VjcuMjgyNUMzLjA5NTQgNy4xODgwMiAzLjE3MDQ2IDcuMTA4NTEgMy4yNjY2MiA3LjA1Nzc2TDEyLjI2NjYgMi4zMDc3NkMxMi40MjE2IDIuMjI1OTYgMTIuNjA4MSAyLjIzMTI3IDEyLjc1ODIgMi4zMjE3NkMxMi45MDgzIDIuNDEyMjUgMTMgMi41NzQ3MSAxMyAyLjc0OTk1VjEyLjI1QzEzIDEyLjQyNTIgMTIuOTA4MyAxMi41ODc3IDEyLjc1ODIgMTIuNjc4MUMxMi42MDgxIDEyLjc2ODYgMTIuNDIxNiAxMi43NzM5IDEyLjI2NjYgMTIuNjkyMUwzLjI2NjYyIDcuOTQyMTRDMy4xNzA0NiA3Ljg5MTM5IDMuMDk1NCA3LjgxMTg4IDMuMDQ5NzYgNy43MTc0VjEyLjI0OTlDMy4wNDk3NiAxMi41NTM2IDIuODAzNTEgMTIuNzk5OSAyLjQ5OTc2IDEyLjc5OTlDMi4xOTYgMTIuNzk5OSAxLjk0OTc2IDEyLjU1MzYgMS45NDk3NiAxMi4yNDk5VjIuNzQ5ODlaTTQuNTcxMjIgNy40OTk5NUwxMiAxMS40MjA3VjMuNTc5Mkw0LjU3MTIyIDcuNDk5OTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxwbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMjVcIixkOlwiTTAgMEgzVjNIMFYwWk02IDNIM1Y2SDBWOUgzVjEySDBWMTVIM1YxMkg2VjE1SDlWMTJIMTJWMTVIMTVWMTJIMTJWOUgxNVY2SDEyVjNIMTVWMEgxMlYzSDlWMEg2VjNaTTYgNlYzSDlWNkg2Wk02IDlIM1Y2SDZWOVpNOSA5VjZIMTJWOUg5Wk05IDlINlYxMkg5VjlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxobz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS41IDFDNS4yMjM4NiAxIDUgMS4yMjM4NiA1IDEuNUM1IDEuNzc2MTQgNS4yMjM4NiAyIDUuNSAySDkuNUM5Ljc3NjE0IDIgMTAgMS43NzYxNCAxMCAxLjVDMTAgMS4yMjM4NiA5Ljc3NjE0IDEgOS41IDFINS41Wk0zIDMuNUMzIDMuMjIzODYgMy4yMjM4NiAzIDMuNSAzSDVIMTBIMTEuNUMxMS43NzYxIDMgMTIgMy4yMjM4NiAxMiAzLjVDMTIgMy43NzYxNCAxMS43NzYxIDQgMTEuNSA0SDExVjEyQzExIDEyLjU1MjMgMTAuNTUyMyAxMyAxMCAxM0g1QzQuNDQ3NzIgMTMgNCAxMi41NTIzIDQgMTJWNEwzLjUgNEMzLjIyMzg2IDQgMyAzLjc3NjE0IDMgMy41Wk01IDRIMTBWMTJINVY0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdm89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQgNkgxMUw3LjUgMTAuNUw0IDZaXCIsZmlsbDpufSkpfSxnbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOSA0TDkgMTFMNC41IDcuNUw5IDRaXCIsZmlsbDpufSkpfSxDbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNiAxMUw2IDRMMTAuNSA3LjVMNiAxMVpcIixmaWxsOm59KSl9LG1vPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00IDlIMTFMNy41IDQuNUw0IDlaXCIsZmlsbDpufSkpfSx5bz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4yMzMzNiA0LjY5NjI5QzcuMjMzMzYgMi45Njg4NCA4LjYzMzM1IDEuNTY4NTcgMTAuMzYgMS41Njg1N0MxMS4zNzM2IDEuNTY4NTcgMTIuMTgzIDIuMDQ4MDQgMTIuNzI1NCAyLjc0Mzg1QzEzLjMwNzkgMi42MjQ2NyAxMy44NTU3IDIuNDA5MTMgMTQuMzUxMyAyLjExNTA4QzE0LjE1NTkgMi43MjU5OCAxMy43NDI0IDMuMjM5NiAxMy4yMDMzIDMuNTY0NjNDMTMuMjAzOCAzLjU2NTY4IDEzLjIwNDIgMy41NjY3NCAxMy4yMDQ3IDMuNTY3NzlDMTMuNzMzNCAzLjUwMzYxIDE0LjIzNjQgMy4zNjMwMiAxNC43MDQ4IDMuMTU1NDZMMTQuNzAzNyAzLjE1NzE1QzE0LjM2NjcgMy42NjE4MyAxMy45NDMxIDQuMTA3MzYgMTMuNDU2MSA0LjQ3MDM0QzEzLjQ4MjMgNC42NDY3MiAxMy40OTU2IDQuODI0MjcgMTMuNDk1NiA1LjAwMDc5QzEzLjQ5NTYgOC42ODcxIDEwLjY4NzMgMTIuOTc0NiA1LjUyMTIyIDEyLjk3NDZDMy45MzkwNiAxMi45NzQ2IDIuNDY1NDQgMTIuNTExIDEuMjI1MDUgMTEuNzE1MkMwLjk5MjYzMiAxMS41NjYxIDAuOTI1MTA4IDExLjI1NjggMS4wNzQyMyAxMS4wMjQ0QzEuMDg3NCAxMS4wMDM4IDEuMTAxODMgMTAuOTg0NiAxLjExNzM0IDEwLjk2NjZDMS4yMDU4MiAxMC44MjAyIDEuMzc0MzggMTAuNzMwOSAxLjU1NTQgMTAuNzUyMkMyLjQ3MDY2IDEwLjg2MDEgMy4zODU2OCAxMC43NDg1IDQuMTkyMTkgMTAuMzk2MkMzLjM5MjI2IDEwLjA0MzQgMi43NzEyOSA5LjM1OTc1IDIuNTAyMDQgOC41MTk3NEMyLjQ1MzU5IDguMzY4NiAyLjQ4ODM1IDguMjAzMTEgMi41OTM1MSA4LjA4NDIyQzIuNTk3MTYgOC4wODAxIDIuNjAwODcgOC4wNzYwNiAyLjYwNDY0IDguMDcyMUMxLjk2MzkxIDcuNTA4MTkgMS41NTk3MyA2LjY4MjA4IDEuNTU5NzMgNS43NjE0M1Y1LjcyNzU5QzEuNTU5NzMgNS41NjgxNCAxLjY0NDExIDUuNDIwNTkgMS43ODE1NSA1LjMzOTc0QzEuODI2NzEgNS4zMTMxNyAxLjg3NTM3IDUuMjk1MTEgMS45MjUzMiA1LjI4NTU4QzEuNzA1NDkgNC44NjE1NCAxLjU4MTE2IDQuMzc5ODQgMS41ODExNiAzLjg2OTU4QzEuNTgxMTYgMy40MDE2NSAxLjU4Mzg0IDIuODExOTIgMS45MTMzMiAyLjI4MDgxQzEuOTg3MTggMi4xNjE3NSAyLjEwNzU4IDIuMDg5MTUgMi4yMzY0IDIuMDcxOTVDMi40MjU4OCAyLjAxMjM3IDIuNjQwODcgMi4wNjk2OSAyLjc3NDA2IDIuMjMzMDJDMy44NjUzNiAzLjU3MTI2IDUuNDQwNjYgNC40OTU4MyA3LjIzMzY2IDQuNzM5NjFMNy4yMzMzNiA0LjY5NjI5Wk01LjUyMTIyIDExLjk3NDZDNC43MzM4NyAxMS45NzQ2IDMuOTc3ODEgMTEuODQzNSAzLjI3MjQ4IDExLjYwMjNDNC4xMzAxMiAxMS40NTM4IDQuOTUzMDcgMTEuMTE1OSA1LjY2MjE4IDEwLjU2MDJDNS44MTIxMSAxMC40NDI3IDUuODcxODIgMTAuMjQzNSA1LjgxMTI2IDEwLjA2MjlDNS43NTA3IDkuODgyMzQgNS41ODMgOS43NTk0MyA1LjM5MjU1IDkuNzU2MDdDNC42ODk2OCA5Ljc0MzY2IDQuMDY3MTIgOS4zOTcxNiAzLjY3NzkzIDguODY4NDVDMy44NjgyOCA4Ljg1MzA2IDQuMDU0MjggOC44MjAzOSA0LjIzNDQ1IDguNzcxNjdDNC40MzYwMyA4LjcxNzE2IDQuNTczNjMgOC41MzExNCA0LjU2Njc0IDguMzIyNDNDNC41NTk4NSA4LjExMzcyIDQuNDEwMjkgNy45MzcxOCA0LjIwNTU1IDcuODk2MDdDMy40MjY5NCA3LjczOTc3IDIuNzk4ODMgNy4xNjc2NCAyLjU2MTY5IDYuNDIxNzRDMi43NjI1NSA2LjQ3MDI1IDIuOTcxMDIgNi40OTkxIDMuMTg0ODIgNi41MDYxQzMuMzg1NjMgNi41MTI2NyAzLjU2NjQ2IDYuMzg1MzMgMy42Mjc5NSA2LjE5NDA1QzMuNjg5NDMgNi4wMDI3NyAzLjYxNjY2IDUuNzkzOTEgMy40NDk2MyA1LjY4MjI0QzIuODY1MjMgNS4yOTE1NSAyLjQ4MTE2IDQuNjI0NjQgMi40ODExNiAzLjg2OTU4QzIuNDgxMTYgMy43MDIxMyAyLjQ4MzUyIDMuNTUyNjggMi40OTM1NSAzLjQxNzE5QzMuODUxMTUgNC43OTkxMyA1LjcwODczIDUuNjg5MzEgNy43NzU4OCA1Ljc5MzM4QzcuOTMyMjUgNS44MDEyNiA4LjA4MzI4IDUuNzM1NDMgOC4xODM5NSA1LjYxNTUzQzguMjg0NjMgNS40OTU2MiA4LjMyMzMyIDUuMzM1NDggOC4yODg1MSA1LjE4Mjg0QzguMjUyNTUgNS4wMjUxNyA4LjIzMzM2IDQuODYyODQgOC4yMzMzNiA0LjY5NjI5QzguMjMzMzYgMy41MjA4NSA5LjE4NTkxIDIuNTY4NTcgMTAuMzYgMi41Njg1N0MxMS41OTQzIDIuNTY4NTcgMTIuNDk1NiAzLjcxMjA4IDEyLjQ5NTYgNS4wMDA3OUMxMi40OTU2IDguMjU3MDkgMTAuMDIwMiAxMS45NzQ2IDUuNTIxMjIgMTEuOTc0NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHdvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjAwMDAxIDIuNzVDNS4wMDAwMSAyLjQ3Mzg2IDQuNzc2MTUgMi4yNSA0LjUwMDAxIDIuMjVDNC4yMjM4NyAyLjI1IDQuMDAwMDEgMi40NzM4NiA0LjAwMDAxIDIuNzVWOC4wNUM0LjAwMDAxIDkuOTgzIDUuNTY3MDIgMTEuNTUgNy41MDAwMSAxMS41NUM5LjQzMzAxIDExLjU1IDExIDkuOTgzIDExIDguMDVWMi43NUMxMSAyLjQ3Mzg2IDEwLjc3NjIgMi4yNSAxMC41IDIuMjVDMTAuMjIzOSAyLjI1IDEwIDIuNDczODYgMTAgMi43NVY4LjA1QzEwIDkuNDMwNzEgOC44ODA3MiAxMC41NSA3LjUwMDAxIDEwLjU1QzYuMTE5MyAxMC41NSA1LjAwMDAxIDkuNDMwNzEgNS4wMDAwMSA4LjA1VjIuNzVaTTMuNDk5OTggMTMuMTAwMUMzLjI3OTA2IDEzLjEwMDEgMy4wOTk5OCAxMy4yNzkxIDMuMDk5OTggMTMuNTAwMUMzLjA5OTk4IDEzLjcyMSAzLjI3OTA2IDEzLjkwMDEgMy40OTk5OCAxMy45MDAxSDExLjVDMTEuNzIwOSAxMy45MDAxIDExLjkgMTMuNzIxIDExLjkgMTMuNTAwMUMxMS45IDEzLjI3OTEgMTEuNzIwOSAxMy4xMDAxIDExLjUgMTMuMTAwMUgzLjQ5OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sYm89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuOTAzMjEgNy4yOTY3N0MxLjkwMzIxIDEwLjM0MSA0LjExMDQxIDEyLjQxNDcgNi41ODg5MyAxMi44NDM5QzYuODcyNTUgMTIuODkzIDcuMDYyNjYgMTMuMTYyNyA3LjAxMzU1IDEzLjQ0NjRDNi45NjQ0NCAxMy43MyA2LjY5NDcxIDEzLjkyMDEgNi40MTEwOSAxMy44NzFDMy40OTk0MiAxMy4zNjY4IDAuODYwODQgMTAuOTEyNyAwLjg2MDg0IDcuMjk2NzdDMC44NjA4MzkgNS43NjAwOSAxLjU1OTk2IDQuNTUyNDUgMi4zNzYzOSAzLjYzMzc3QzIuOTYxMjQgMi45NzU2OCAzLjYzMDM0IDIuNDQxMzUgNC4xNjg0NiAyLjAzMjAyTDIuNTMyMDUgMi4wMzIwMkMyLjI1NTkxIDIuMDMyMDIgMi4wMzIwNSAxLjgwODE2IDIuMDMyMDUgMS41MzIwMkMyLjAzMjA1IDEuMjU1ODggMi4yNTU5MSAxLjAzMjAyIDIuNTMyMDUgMS4wMzIwMkw1LjUzMjA1IDEuMDMyMDJDNS44MDgxOSAxLjAzMjAyIDYuMDMyMDUgMS4yNTU4OCA2LjAzMjA1IDEuNTMyMDJMNi4wMzIwNSA0LjUzMjAyQzYuMDMyMDUgNC44MDgxNiA1LjgwODE5IDUuMDMyMDIgNS41MzIwNSA1LjAzMjAyQzUuMjU1OTEgNS4wMzIwMiA1LjAzMjA1IDQuODA4MTYgNS4wMzIwNSA0LjUzMjAyTDUuMDMyMDUgMi42ODY0NUw1LjAzMDU0IDIuNjg3NTlMNS4wMzA0NSAyLjY4NzY2TDUuMDMwNDQgMi42ODc2N0w1LjAzMDQzIDIuNjg3NjdDNC40NTg5NiAzLjExODY4IDMuNzYwNTkgMy42NDUzOCAzLjE1NTU0IDQuMzI2MkMyLjQ0MTAyIDUuMTMwMjEgMS45MDMyMSA2LjEwMTU0IDEuOTAzMjEgNy4yOTY3N1pNMTMuMDEwOSA3LjcwMzIxQzEzLjAxMDkgNC42OTExNSAxMC44NTA1IDIuNjI5NiA4LjQwMzg0IDIuMTcwMjlDOC4xMjA5MyAyLjExNzE4IDcuOTM0NjUgMS44NDQ3OSA3Ljk4Nzc2IDEuNTYxODhDOC4wNDA4NyAxLjI3ODk4IDguMzEzMjYgMS4wOTI3IDguNTk2MTYgMS4xNDU4MUMxMS40NzA0IDEuNjg1NDEgMTQuMDUzMiA0LjEyNjA1IDE0LjA1MzIgNy43MDMyMUMxNC4wNTMyIDkuMjM5ODggMTMuMzU0MSAxMC40NDc1IDEyLjUzNzcgMTEuMzY2MkMxMS45NTI4IDEyLjAyNDMgMTEuMjgzNyAxMi41NTg2IDEwLjc0NTYgMTIuOTY4TDEyLjM4MjEgMTIuOTY4QzEyLjY1ODIgMTIuOTY4IDEyLjg4MjEgMTMuMTkxOCAxMi44ODIxIDEzLjQ2OEMxMi44ODIxIDEzLjc0NDEgMTIuNjU4MiAxMy45NjggMTIuMzgyMSAxMy45NjhMOS4zODIwNSAxMy45NjhDOS4xMDU5MSAxMy45NjggOC44ODIwNSAxMy43NDQxIDguODgyMDUgMTMuNDY4TDguODgyMDUgMTAuNDY4QzguODgyMDUgMTAuMTkxOCA5LjEwNTkxIDkuOTY3OTYgOS4zODIwNSA5Ljk2Nzk2QzkuNjU4MTkgOS45Njc5NiA5Ljg4MjA1IDEwLjE5MTggOS44ODIwNSAxMC40NjhMOS44ODIwNSAxMi4zMTM1TDkuODgzNjIgMTIuMzEyM0MxMC40NTUxIDExLjg4MTMgMTEuMTUzNSAxMS4zNTQ2IDExLjc1ODUgMTAuNjczOEMxMi40NzMxIDkuODY5NzYgMTMuMDEwOSA4Ljg5ODQ0IDEzLjAxMDkgNy43MDMyMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHhvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjgxODI1IDEuMTgxODhDNy42NDI1MSAxLjAwNjE1IDcuMzU3NTkgMS4wMDYxNSA3LjE4MTg1IDEuMTgxODhMNC4xODE4NSA0LjE4MTg4QzQuMDA2MTEgNC4zNTc2MiA0LjAwNjExIDQuNjQyNTQgNC4xODE4NSA0LjgxODI4QzQuMzU3NTkgNC45OTQwMSA0LjY0MjUxIDQuOTk0MDEgNC44MTgyNSA0LjgxODI4TDcuMDUwMDUgMi41ODY0OFY5LjQ5OTk2QzcuMDUwMDUgOS43NDg0OSA3LjI1MTUyIDkuOTQ5OTYgNy41MDAwNSA5Ljk0OTk2QzcuNzQ4NTggOS45NDk5NiA3Ljk1MDA1IDkuNzQ4NDkgNy45NTAwNSA5LjQ5OTk2VjIuNTg2NDhMMTAuMTgxOSA0LjgxODI4QzEwLjM1NzYgNC45OTQwMSAxMC42NDI1IDQuOTk0MDEgMTAuODE4MiA0LjgxODI4QzEwLjk5NCA0LjY0MjU0IDEwLjk5NCA0LjM1NzYyIDEwLjgxODIgNC4xODE4OEw3LjgxODI1IDEuMTgxODhaTTIuNSA5Ljk5OTk3QzIuNzc2MTQgOS45OTk5NyAzIDEwLjIyMzggMyAxMC41VjEyQzMgMTIuNTUzOCAzLjQ0NTY1IDEzIDMuOTk2MzUgMTNIMTEuMDAxMkMxMS41NTI5IDEzIDEyIDEyLjU1MjggMTIgMTJWMTAuNUMxMiAxMC4yMjM4IDEyLjIyMzkgOS45OTk5NyAxMi41IDkuOTk5OTdDMTIuNzc2MSA5Ljk5OTk3IDEzIDEwLjIyMzggMTMgMTAuNVYxMkMxMyAxMy4xMDQgMTIuMTA2MiAxNCAxMS4wMDEyIDE0SDMuOTk2MzVDMi44OTAxOSAxNCAyIDEzLjEwMyAyIDEyVjEwLjVDMiAxMC4yMjM4IDIuMjIzODYgOS45OTk5NyAyLjUgOS45OTk5N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LF9vPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzA3NSA3LjQ5OTg4QzAuODc3MDc1IDMuODQyMTkgMy44NDIyMiAwLjg3NzA0NSA3LjQ5OTkxIDAuODc3MDQ1QzExLjE1NzYgMC44NzcwNDUgMTQuMTIyNyAzLjg0MjE5IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDExLjE1NzUgMTEuMTU3NiAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MzLjg0MjIyIDE0LjEyMjcgMC44NzcwNzUgMTEuMTU3NSAwLjg3NzA3NSA3LjQ5OTg4Wk03LjQ5OTkxIDEuODI3MDRDNC4zNjY4OSAxLjgyNzA0IDEuODI3MDggNC4zNjY4NiAxLjgyNzA4IDcuNDk5ODhDMS44MjcwOCAxMC42MzI5IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDMTAuNjMyOSAxMy4xNzI3IDEzLjE3MjcgMTAuNjMyOSAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyA0LjM2Njg2IDEwLjYzMjkgMS44MjcwNCA3LjQ5OTkxIDEuODI3MDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxMbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk4NSAwLjg3NzA0NUMzLjg0MjE2IDAuODc3MDQ1IDAuODc3MDE0IDMuODQyMTkgMC44NzcwMTQgNy40OTk4OEMwLjg3NzAxNCA5LjE0ODggMS40Nzk2MyAxMC42NTcgMi40NzY2NSAxMS44MTYyTDEuNjQ2NDMgMTIuNjQ2NEMxLjQ1MTE3IDEyLjg0MTcgMS40NTExNyAxMy4xNTgzIDEuNjQ2NDMgMTMuMzUzNUMxLjg0MTcgMTMuNTQ4OCAyLjE1ODI4IDEzLjU0ODggMi4zNTM1NCAxMy4zNTM1TDMuMTgzNzcgMTIuNTIzM0M0LjM0Mjk2IDEzLjUyMDIgNS44NTEwNCAxNC4xMjI3IDcuNDk5ODUgMTQuMTIyN0MxMS4xNTc1IDE0LjEyMjcgMTQuMTIyNyAxMS4xNTc1IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDUuODUxMDcgMTMuNTIwMiA0LjM0Mjk5IDEyLjUyMzMgMy4xODM4TDEzLjM1MzUgMi4zNTM1NEMxMy41NDg4IDIuMTU4MjcgMTMuNTQ4OCAxLjg0MTY5IDEzLjM1MzUgMS42NDY0M0MxMy4xNTgzIDEuNDUxMTcgMTIuODQxNyAxLjQ1MTE3IDEyLjY0NjQgMS42NDY0M0wxMS44MTYyIDIuNDc2NjhDMTAuNjU3IDEuNDc5NjYgOS4xNDg3NyAwLjg3NzA0NSA3LjQ5OTg1IDAuODc3MDQ1Wk0xMS4xNDIyIDMuMTUwNjZDMTAuMTU2NyAyLjMyNDQ5IDguODg2MzkgMS44MjcwNCA3LjQ5OTg1IDEuODI3MDRDNC4zNjY4MyAxLjgyNzA0IDEuODI3MDEgNC4zNjY4NiAxLjgyNzAxIDcuNDk5ODhDMS44MjcwMSA4Ljg4NjQyIDIuMzI0NDYgMTAuMTU2OCAzLjE1MDYzIDExLjE0MjJMMTEuMTQyMiAzLjE1MDY2Wk0zLjg1Nzc2IDExLjg0OTNDNC44NDMxNyAxMi42NzUzIDYuMTEzNDMgMTMuMTcyNyA3LjQ5OTg1IDEzLjE3MjdDMTAuNjMyOCAxMy4xNzI3IDEzLjE3MjcgMTAuNjMyOSAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyA2LjExMzQ2IDEyLjY3NTMgNC44NDMyIDExLjg0OTMgMy44NTc3OUwzLjg1Nzc2IDExLjg0OTNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxPbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5OCAxTDYuOTIzMjEgMi4wMDMwN0wxLjE3NDk4IDEyTDAuNTk5OTc2IDEzSDEuNzUzNUgxMy4yNDY0SDE0LjRMMTMuODI1IDEyTDguMDc2NzQgMi4wMDMwN0w3LjQ5OTk4IDFaTTcuNDk5OTggMy4wMDYxM0wyLjMyODUgMTJIMTIuNjcxNEw3LjQ5OTk4IDMuMDA2MTNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxFbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC43NjQ0NyAzLjEyMTk5QzUuNjMxNTEgMy4wNDg1OSA2LjU2MDgyIDMgNy41IDNDOC40MzkxOCAzIDkuMzY4NDkgMy4wNDg1OSAxMC4yMzU1IDMuMTIxOTlDMTEuMjc5NiAzLjIxMDM3IDExLjk1NTMgMy4yNzAwOCAxMi40NzIgMy4zOTIwM0MxMi45NDI1IDMuNTAzMDQgMTMuMjA0OCAzLjY0OTc2IDEzLjQzMDYgMy44ODA4NkMxMy40NTUzIDMuOTA2MTggMTMuNDkwMiAzLjk0NDE0IDEzLjUxMzMgMy45NzA5MkMxMy43MTI2IDQuMjAxNDkgMTMuODQzNSA0LjQ4ODcgMTMuOTE4IDUuMDMyODNDMTMuOTk3OCA1LjYxNTYgMTQgNi4zNzY0NCAxNCA3LjUyNDkzQzE0IDguNjYwMjYgMTMuOTk3OCA5LjQxMDE5IDEzLjkxODEgOS45ODUzOEMxMy44NDM5IDEwLjUyMDYgMTMuNzEzNyAxMC44MDYxIDEzLjUxMjUgMTEuMDM4N0MxMy40ODk2IDExLjA2NTEgMTMuNDU0MSAxMS4xMDM4IDEzLjQyOTYgMTEuMTI4N0MxMy4yMDA5IDExLjM2MjUgMTIuOTQwNiAxMS41MDc2IDEyLjQ4MTggMTEuNjE2NEMxMS45NzUyIDExLjczNjUgMTEuMzE0MyAxMS43OTQyIDEwLjI4NzggMTEuODc5N0M5LjQxOTQ4IDExLjk1MjEgOC40NzU2NiAxMiA3LjUgMTJDNi41MjQzNCAxMiA1LjU4MDUyIDExLjk1MjEgNC43MTIyIDExLjg3OTdDMy42ODU3MiAxMS43OTQyIDMuMDI0NzcgMTEuNzM2NSAyLjUxODE2IDExLjYxNjRDMi4wNTkzNiAxMS41MDc2IDEuNzk5MSAxMS4zNjI1IDEuNTcwMzcgMTEuMTI4N0MxLjU0NTkzIDExLjEwMzggMS41MTAzNSAxMS4wNjUxIDEuNDg3NDggMTEuMDM4N0MxLjI4NjI4IDEwLjgwNjEgMS4xNTYxMiAxMC41MjA2IDEuMDgxOTMgOS45ODUzOEMxLjAwMjIxIDkuNDEwMTkgMSA4LjY2MDI2IDEgNy41MjQ5M0MxIDYuMzc2NDQgMS4wMDIxNiA1LjYxNTYgMS4wODIgNS4wMzI4M0MxLjE1NjU0IDQuNDg4NyAxLjI4NzQ0IDQuMjAxNDkgMS40ODY2NiAzLjk3MDkyQzEuNTA5OCAzLjk0NDE0IDEuNTQ0NjggMy45MDYxOCAxLjU2OTQyIDMuODgwODZDMS43OTUyIDMuNjQ5NzYgMi4wNTc1MiAzLjUwMzA0IDIuNTI3OTYgMy4zOTIwM0MzLjA0NDczIDMuMjcwMDggMy43MjA0IDMuMjEwMzcgNC43NjQ0NyAzLjEyMTk5Wk0wIDcuNTI0OTNDMCA1LjI4Mjk2IDAgNC4xNjE5OCAwLjcyOTk4NSAzLjMxNzEzQzAuNzY2NDU3IDMuMjc0OTEgMC44MTUxMzkgMy4yMjE5NCAwLjg1NDEyMyAzLjE4MjA0QzEuNjM0MzkgMi4zODMzOSAyLjY0OTYzIDIuMjk3NDQgNC42ODAxMiAyLjEyNTU1QzUuNTY5MjMgMi4wNTAyOCA2LjUyNzI0IDIgNy41IDJDOC40NzI3NiAyIDkuNDMwNzcgMi4wNTAyOCAxMC4zMTk5IDIuMTI1NTVDMTIuMzUwNCAyLjI5NzQ0IDEzLjM2NTYgMi4zODMzOSAxNC4xNDU5IDMuMTgyMDRDMTQuMTg0OSAzLjIyMTk0IDE0LjIzMzUgMy4yNzQ5MSAxNC4yNyAzLjMxNzEzQzE1IDQuMTYxOTggMTUgNS4yODI5NiAxNSA3LjUyNDkzQzE1IDkuNzQwMTIgMTUgMTAuODQ3NyAxNC4yNjg4IDExLjY5MjlDMTQuMjMyNiAxMS43MzQ4IDE0LjE4MzIgMTEuNzg4NSAxNC4xNDQ0IDExLjgyODFDMTMuMzYyOSAxMi42MjY5IDEyLjM2NTUgMTIuNzEgMTAuMzcwOSAxMi44NzYzQzkuNDc5NzEgMTIuOTUwNSA4LjUwNzgyIDEzIDcuNSAxM0M2LjQ5MjE4IDEzIDUuNTIwMjggMTIuOTUwNSA0LjYyOTE1IDEyLjg3NjNDMi42MzQ0NiAxMi43MSAxLjYzNzEyIDEyLjYyNjkgMC44NTU1NTggMTEuODI4MUMwLjgxNjg0NCAxMS43ODg1IDAuNzY3NDQyIDExLjczNDggMC43MzEyMjEgMTEuNjkyOUMwIDEwLjg0NzcgMCA5Ljc0MDEyIDAgNy41MjQ5M1pNNS4yNSA1LjM4MjY0QzUuMjUgNS4yMDIyNSA1LjQzNTIyIDUuMDgxMjQgNS42MDA0MSA1LjE1MzY5TDEwLjQyOCA3LjI3MTA1QzEwLjYyNzQgNy4zNTg1MyAxMC42Mjc0IDcuNjQxNDcgMTAuNDI4IDcuNzI4OTVMNS42MDA0MSA5Ljg0NjMxQzUuNDM1MjIgOS45MTg3NiA1LjI1IDkuNzk3NzUgNS4yNSA5LjYxNzM2VjUuMzgyNjRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxTbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNyAySDEuNUMxLjIyMzg2IDIgMSAyLjIyMzg2IDEgMi41VjdIN1YyWk04IDJWN0gxNFYyLjVDMTQgMi4yMjM4NiAxMy43NzYxIDIgMTMuNSAySDhaTTcgOEgxVjEyLjVDMSAxMi43NzYxIDEuMjIzODYgMTMgMS41IDEzSDdWOFpNOCAxM1Y4SDE0VjEyLjVDMTQgMTIuNzc2MSAxMy43NzYxIDEzIDEzLjUgMTNIOFpNMS41IDFDMC42NzE1NzMgMSAwIDEuNjcxNTcgMCAyLjVWMTIuNUMwIDEzLjMyODQgMC42NzE1NzMgMTQgMS41IDE0SDEzLjVDMTQuMzI4NCAxNCAxNSAxMy4zMjg0IDE1IDEyLjVWMi41QzE1IDEuNjcxNTcgMTQuMzI4NCAxIDEzLjUgMUgxLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxNbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41IDJIMTMuNUMxMy43NzYxIDIgMTQgMi4yMjM4NiAxNCAyLjVWN0gxVjIuNUMxIDIuMjIzODYgMS4yMjM4NiAyIDEuNSAyWk0xIDhWMTIuNUMxIDEyLjc3NjEgMS4yMjM4NiAxMyAxLjUgMTNIMTMuNUMxMy43NzYxIDEzIDE0IDEyLjc3NjEgMTQgMTIuNVY4SDFaTTAgMi41QzAgMS42NzE1NyAwLjY3MTU3MyAxIDEuNSAxSDEzLjVDMTQuMzI4NCAxIDE1IDEuNjcxNTcgMTUgMi41VjEyLjVDMTUgMTMuMzI4NCAxNC4zMjg0IDE0IDEzLjUgMTRIMS41QzAuNjcxNTczIDE0IDAgMTMuMzI4NCAwIDEyLjVWMi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sam89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0IDIuNTg3MTFMMS44NTE2MyAxM0gxMy41QzEzLjc3NjEgMTMgMTQgMTIuNzc2MSAxNCAxMi41VjIuNTg3MTFaTTAuNzYyODc5IDEzLjgwNjdMMC44MjUzOTYgMTMuODc5NkwwLjg1NDcxNyAxMy44NTQ1QzEuMDUwMTcgMTMuOTQ3OCAxLjI2ODk5IDE0IDEuNSAxNEgxMy41QzE0LjMyODQgMTQgMTUgMTMuMzI4NCAxNSAxMi41VjIuNUMxNSAxLjkzOTQ5IDE0LjY5MjYgMS40NTA3OCAxNC4yMzcxIDEuMTkzMzFMMTQuMTc0NiAxLjEyMDM3TDE0LjE0NTMgMS4xNDU1QzEzLjk0OTggMS4wNTIyMiAxMy43MzEgMSAxMy41IDFIMS41QzAuNjcxNTczIDEgMCAxLjY3MTU3IDAgMi41VjEyLjVDMCAxMy4wNjA1IDAuMzA3NDM1IDEzLjU0OTIgMC43NjI4NzkgMTMuODA2N1pNMSAxMi40MTI5TDEzLjE0ODQgMkgxLjVDMS4yMjM4NiAyIDEgMi4yMjM4NiAxIDIuNVYxMi40MTI5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sa289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTggMkgxMy41QzEzLjc3NjEgMiAxNCAyLjIyMzg2IDE0IDIuNVYxMi41QzE0IDEyLjc3NjEgMTMuNzc2MSAxMyAxMy41IDEzSDhWMlpNNyAySDEuNUMxLjIyMzg2IDIgMSAyLjIyMzg2IDEgMi41VjEyLjVDMSAxMi43NzYxIDEuMjIzODYgMTMgMS41IDEzSDdWMlpNMCAyLjVDMCAxLjY3MTU3IDAuNjcxNTczIDEgMS41IDFIMTMuNUMxNC4zMjg0IDEgMTUgMS42NzE1NyAxNSAyLjVWMTIuNUMxNSAxMy4zMjg0IDE0LjMyODQgMTQgMTMuNSAxNEgxLjVDMC42NzE1NzMgMTQgMCAxMy4zMjg0IDAgMTIuNVYyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxSbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC44MTgxMiA0LjY4MTYxQzQuOTkzODYgNC44NTczNCA0Ljk5Mzg2IDUuMTQyMjcgNC44MTgxMiA1LjMxOEwzLjA4NjMyIDcuMDQ5OEgxMS45MTM1TDEwLjE4MTcgNS4zMThDMTAuMDA2IDUuMTQyMjcgMTAuMDA2IDQuODU3MzQgMTAuMTgxNyA0LjY4MTYxQzEwLjM1NzUgNC41MDU4NyAxMC42NDI0IDQuNTA1ODcgMTAuODE4MSA0LjY4MTYxTDEzLjMxODEgNy4xODE2MUMxMy40OTM5IDcuMzU3MzQgMTMuNDkzOSA3LjY0MjI3IDEzLjMxODEgNy44MThMMTAuODE4MSAxMC4zMThDMTAuNjQyNCAxMC40OTM3IDEwLjM1NzUgMTAuNDkzNyAxMC4xODE3IDEwLjMxOEMxMC4wMDYgMTAuMTQyMyAxMC4wMDYgOS44NTczNCAxMC4xODE3IDkuNjgxNjFMMTEuOTEzNSA3Ljk0OThIMy4wODYzMkw0LjgxODEyIDkuNjgxNjFDNC45OTM4NiA5Ljg1NzM0IDQuOTkzODYgMTAuMTQyMyA0LjgxODEyIDEwLjMxOEM0LjY0MjM5IDEwLjQ5MzcgNC4zNTc0NiAxMC40OTM3IDQuMTgxNzMgMTAuMzE4TDEuNjgxNzMgNy44MThDMS41MDU5OSA3LjY0MjI3IDEuNTA1OTkgNy4zNTczNCAxLjY4MTczIDcuMTgxNjFMNC4xODE3MyA0LjY4MTYxQzQuMzU3NDYgNC41MDU4NyA0LjY0MjM5IDQuNTA1ODcgNC44MTgxMiA0LjY4MTYxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwIDYuNUMxMCA4LjQzMyA4LjQzMyAxMCA2LjUgMTBDNC41NjcgMTAgMyA4LjQzMyAzIDYuNUMzIDQuNTY3IDQuNTY3IDMgNi41IDNDOC40MzMgMyAxMCA0LjU2NyAxMCA2LjVaTTkuMzA4ODQgMTAuMDE1OUM4LjUzOTAxIDEwLjYzMTggNy41NjI1MSAxMSA2LjUgMTFDNC4wMTQ3MiAxMSAyIDguOTg1MjggMiA2LjVDMiA0LjAxNDcyIDQuMDE0NzIgMiA2LjUgMkM4Ljk4NTI4IDIgMTEgNC4wMTQ3MiAxMSA2LjVDMTEgNy41NjI1MSAxMC42MzE4IDguNTM5MDEgMTAuMDE1OSA5LjMwODg0TDEyLjg1MzYgMTIuMTQ2NEMxMy4wNDg4IDEyLjM0MTcgMTMuMDQ4OCAxMi42NTgzIDEyLjg1MzYgMTIuODUzNkMxMi42NTgzIDEzLjA0ODggMTIuMzQxNyAxMy4wNDg4IDEyLjE0NjQgMTIuODUzNkw5LjMwODg0IDEwLjAxNTlaTTQuMjUgNi41QzQuMjUgNi4yMjM4NiA0LjQ3Mzg2IDYgNC43NSA2SDZWNC43NUM2IDQuNDczODYgNi4yMjM4NiA0LjI1IDYuNSA0LjI1QzYuNzc2MTQgNC4yNSA3IDQuNDczODYgNyA0Ljc1VjZIOC4yNUM4LjUyNjE0IDYgOC43NSA2LjIyMzg2IDguNzUgNi41QzguNzUgNi43NzYxNCA4LjUyNjE0IDcgOC4yNSA3SDdWOC4yNUM3IDguNTI2MTQgNi43NzYxNCA4Ljc1IDYuNSA4Ljc1QzYuMjIzODYgOC43NSA2IDguNTI2MTQgNiA4LjI1VjdINC43NUM0LjQ3Mzg2IDcgNC4yNSA2Ljc3NjE0IDQuMjUgNi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuNSAxMEM4LjQzMyAxMCAxMCA4LjQzMyAxMCA2LjVDMTAgNC41NjcgOC40MzMgMyA2LjUgM0M0LjU2NyAzIDMgNC41NjcgMyA2LjVDMyA4LjQzMyA0LjU2NyAxMCA2LjUgMTBaTTYuNSAxMUM3LjU2MjUxIDExIDguNTM5MDEgMTAuNjMxOCA5LjMwODg0IDEwLjAxNTlMMTIuMTQ2NCAxMi44NTM2QzEyLjM0MTcgMTMuMDQ4OCAxMi42NTgzIDEzLjA0ODggMTIuODUzNiAxMi44NTM2QzEzLjA0ODggMTIuNjU4MyAxMy4wNDg4IDEyLjM0MTcgMTIuODUzNiAxMi4xNDY0TDEwLjAxNTkgOS4zMDg4NEMxMC42MzE4IDguNTM5MDEgMTEgNy41NjI1MSAxMSA2LjVDMTEgNC4wMTQ3MiA4Ljk4NTI4IDIgNi41IDJDNC4wMTQ3MiAyIDIgNC4wMTQ3MiAyIDYuNUMyIDguOTg1MjggNC4wMTQ3MiAxMSA2LjUgMTFaTTQuNzUgNkM0LjQ3Mzg2IDYgNC4yNSA2LjIyMzg2IDQuMjUgNi41QzQuMjUgNi43NzYxNCA0LjQ3Mzg2IDcgNC43NSA3SDguMjVDOC41MjYxNCA3IDguNzUgNi43NzYxNCA4Ljc1IDYuNUM4Ljc1IDYuMjIzODYgOC41MjYxNCA2IDguMjUgNkg0Ljc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX19LDUyOTk6KGUsdCxuKT0+e24ucih0KSxuLmQodCx7ZGVmYXVsdDooKT0+bH0pO3ZhciByPW4oODA4MSksbz1uLm4ociksaT1uKDM2NDUpLGE9bi5uKGkpKCkobygpKTthLnB1c2goW2UuaWQsXCIucmVhY3QtY2FsZW5kYXIge1xcbiAgd2lkdGg6IDM1MHB4O1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgYmFja2dyb3VuZDogd2hpdGU7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjYTBhMDk2O1xcbiAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XFxuICBsaW5lLWhlaWdodDogMS4xMjVlbTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyLS1kb3VibGVWaWV3IHtcXG4gIHdpZHRoOiA3MDBweDtcXG59XFxuLnJlYWN0LWNhbGVuZGFyLS1kb3VibGVWaWV3IC5yZWFjdC1jYWxlbmRhcl9fdmlld0NvbnRhaW5lciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgbWFyZ2luOiAtMC41ZW07XFxufVxcbi5yZWFjdC1jYWxlbmRhci0tZG91YmxlVmlldyAucmVhY3QtY2FsZW5kYXJfX3ZpZXdDb250YWluZXIgPiAqIHtcXG4gIHdpZHRoOiA1MCU7XFxuICBtYXJnaW46IDAuNWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXIsXFxuLnJlYWN0LWNhbGVuZGFyICosXFxuLnJlYWN0LWNhbGVuZGFyICo6YmVmb3JlLFxcbi5yZWFjdC1jYWxlbmRhciAqOmFmdGVyIHtcXG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5yZWFjdC1jYWxlbmRhciBidXR0b24ge1xcbiAgbWFyZ2luOiAwO1xcbiAgYm9yZGVyOiAwO1xcbiAgb3V0bGluZTogbm9uZTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyIGJ1dHRvbjplbmFibGVkOmhvdmVyIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBoZWlnaHQ6IDQ0cHg7XFxuICBtYXJnaW4tYm90dG9tOiAxZW07XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiBidXR0b24ge1xcbiAgbWluLXdpZHRoOiA0NHB4O1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uIGJ1dHRvbjpkaXNhYmxlZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb24gYnV0dG9uOmVuYWJsZWQ6aG92ZXIsXFxuLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uIGJ1dHRvbjplbmFibGVkOmZvY3VzIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fd2Vla2RheXMge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgZm9udC1zaXplOiAwLjc1ZW07XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fd2Vla2RheXNfX3dlZWtkYXkge1xcbiAgcGFkZGluZzogMC41ZW07XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fd2Vla051bWJlcnMgLnJlYWN0LWNhbGVuZGFyX190aWxlIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBmb250LXNpemU6IDAuNzVlbTtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX2RheXNfX2RheS0td2Vla2VuZCB7XFxuICBjb2xvcjogI2QxMDAwMDtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzX19kYXktLW5laWdoYm9yaW5nTW9udGgge1xcbiAgY29sb3I6ICM3NTc1NzU7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9feWVhci12aWV3IC5yZWFjdC1jYWxlbmRhcl9fdGlsZSxcXG4ucmVhY3QtY2FsZW5kYXJfX2RlY2FkZS12aWV3IC5yZWFjdC1jYWxlbmRhcl9fdGlsZSxcXG4ucmVhY3QtY2FsZW5kYXJfX2NlbnR1cnktdmlldyAucmVhY3QtY2FsZW5kYXJfX3RpbGUge1xcbiAgcGFkZGluZzogMmVtIDAuNWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUge1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgcGFkZGluZzogMTBweCA2LjY2NjdweDtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBsaW5lLWhlaWdodDogMTZweDtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlOmRpc2FibGVkIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZTplbmFibGVkOmhvdmVyLFxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZTplbmFibGVkOmZvY3VzIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tbm93IHtcXG4gIGJhY2tncm91bmQ6ICNmZmZmNzY7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tbm93OmVuYWJsZWQ6aG92ZXIsXFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1ub3c6ZW5hYmxlZDpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kOiAjZmZmZmE5O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWhhc0FjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kOiAjNzZiYWZmO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWhhc0FjdGl2ZTplbmFibGVkOmhvdmVyLFxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0taGFzQWN0aXZlOmVuYWJsZWQ6Zm9jdXMge1xcbiAgYmFja2dyb3VuZDogI2E5ZDRmZjtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1hY3RpdmUge1xcbiAgYmFja2dyb3VuZDogIzAwNmVkYztcXG4gIGNvbG9yOiB3aGl0ZTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1hY3RpdmU6ZW5hYmxlZDpob3ZlcixcXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWFjdGl2ZTplbmFibGVkOmZvY3VzIHtcXG4gIGJhY2tncm91bmQ6ICMxMDg3ZmY7XFxufVxcbi5yZWFjdC1jYWxlbmRhci0tc2VsZWN0UmFuZ2UgLnJlYWN0LWNhbGVuZGFyX190aWxlLS1ob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xcbn1cXG5cIixcIlwiXSk7Y29uc3QgbD1hfSwzNjQ1OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9W107cmV0dXJuIHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPVwiXCIscj12b2lkIDAhPT10WzVdO3JldHVybiB0WzRdJiYobis9XCJAc3VwcG9ydHMgKFwiLmNvbmNhdCh0WzRdLFwiKSB7XCIpKSx0WzJdJiYobis9XCJAbWVkaWEgXCIuY29uY2F0KHRbMl0sXCIge1wiKSksciYmKG4rPVwiQGxheWVyXCIuY29uY2F0KHRbNV0ubGVuZ3RoPjA/XCIgXCIuY29uY2F0KHRbNV0pOlwiXCIsXCIge1wiKSksbis9ZSh0KSxyJiYobis9XCJ9XCIpLHRbMl0mJihuKz1cIn1cIiksdFs0XSYmKG4rPVwifVwiKSxufSkpLmpvaW4oXCJcIil9LHQuaT1mdW5jdGlvbihlLG4scixvLGkpe1wic3RyaW5nXCI9PXR5cGVvZiBlJiYoZT1bW251bGwsZSx2b2lkIDBdXSk7dmFyIGE9e307aWYocilmb3IodmFyIGw9MDtsPHRoaXMubGVuZ3RoO2wrKyl7dmFyIHM9dGhpc1tsXVswXTtudWxsIT1zJiYoYVtzXT0hMCl9Zm9yKHZhciBjPTA7YzxlLmxlbmd0aDtjKyspe3ZhciB1PVtdLmNvbmNhdChlW2NdKTtyJiZhW3VbMF1dfHwodm9pZCAwIT09aSYmKHZvaWQgMD09PXVbNV18fCh1WzFdPVwiQGxheWVyXCIuY29uY2F0KHVbNV0ubGVuZ3RoPjA/XCIgXCIuY29uY2F0KHVbNV0pOlwiXCIsXCIge1wiKS5jb25jYXQodVsxXSxcIn1cIikpLHVbNV09aSksbiYmKHVbMl0/KHVbMV09XCJAbWVkaWEgXCIuY29uY2F0KHVbMl0sXCIge1wiKS5jb25jYXQodVsxXSxcIn1cIiksdVsyXT1uKTp1WzJdPW4pLG8mJih1WzRdPyh1WzFdPVwiQHN1cHBvcnRzIChcIi5jb25jYXQodVs0XSxcIikge1wiKS5jb25jYXQodVsxXSxcIn1cIiksdVs0XT1vKTp1WzRdPVwiXCIuY29uY2F0KG8pKSx0LnB1c2godSkpfX0sdH19LDgwODE6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZVsxXX19LDQ0ODM6KGUsdCxuKT0+e2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0scihlKX1mdW5jdGlvbiBvKGUsdCl7cmV0dXJuIG89T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxvKGUsdCl9ZnVuY3Rpb24gaShlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gZX1mdW5jdGlvbiBhKGUpe3JldHVybiBhPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxhKGUpfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9ZnVuY3Rpb24oZSx0KXtpZihcIm9iamVjdFwiIT09cihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW4pe3ZhciBvPW4uY2FsbChlLFwic3RyaW5nXCIpO2lmKFwib2JqZWN0XCIhPT1yKG8pKXJldHVybiBvO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKX1yZXR1cm4gU3RyaW5nKGUpfShlKTtyZXR1cm5cInN5bWJvbFwiPT09cih0KT90OlN0cmluZyh0KX12YXIgcz1uKDY2ODkpLGM9big1Njk3KSx1PW4oNTMwMykuY3JlYXRlRm9jdXNUcmFwLGY9big4Mzg4KS5pc0ZvY3VzYWJsZSxkPWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSx0JiZvKGUsdCl9KHAsZSk7dmFyIHQsbixjLHUsZD0oYz1wLHU9ZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmdW5jdGlvbigpe3ZhciBlLHQ9YShjKTtpZih1KXt2YXIgbj1hKHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QodCxhcmd1bWVudHMsbil9ZWxzZSBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJihcIm9iamVjdFwiPT09cih0KXx8XCJmdW5jdGlvblwiPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7cmV0dXJuIGkoZSl9KHRoaXMsZSl9KTtmdW5jdGlvbiBwKGUpe3ZhciB0LG4scixvOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMscCksbj1pKHQ9ZC5jYWxsKHRoaXMsZSkpLG89ZnVuY3Rpb24oZSl7dmFyIHQsbj1udWxsIT09KHQ9dGhpcy5pbnRlcm5hbE9wdGlvbnNbZV0pJiZ2b2lkIDAhPT10P3Q6dGhpcy5vcmlnaW5hbE9wdGlvbnNbZV07aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygbil7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkocj4xP3ItMTowKSxpPTE7aTxyO2krKylvW2ktMV09YXJndW1lbnRzW2ldO249bi5hcHBseSh2b2lkIDAsbyl9aWYoITA9PT1uJiYobj12b2lkIDApLCFuKXtpZih2b2lkIDA9PT1ufHwhMT09PW4pcmV0dXJuIG47dGhyb3cgbmV3IEVycm9yKFwiYFwiLmNvbmNhdChlLFwiYCB3YXMgc3BlY2lmaWVkIGJ1dCB3YXMgbm90IGEgbm9kZSwgb3IgZGlkIG5vdCByZXR1cm4gYSBub2RlXCIpKX12YXIgYSxsPW47aWYoXCJzdHJpbmdcIj09dHlwZW9mIG4mJiEobD1udWxsPT09KGE9dGhpcy5nZXREb2N1bWVudCgpKXx8dm9pZCAwPT09YT92b2lkIDA6YS5xdWVyeVNlbGVjdG9yKG4pKSl0aHJvdyBuZXcgRXJyb3IoXCJgXCIuY29uY2F0KGUsXCJgIGFzIHNlbGVjdG9yIHJlZmVycyB0byBubyBrbm93biBub2RlXCIpKTtyZXR1cm4gbH0sKHI9bChyPVwiZ2V0Tm9kZUZvck9wdGlvblwiKSlpbiBuP09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLHIse3ZhbHVlOm8sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpuW3JdPW8sdC5oYW5kbGVEZWFjdGl2YXRlPXQuaGFuZGxlRGVhY3RpdmF0ZS5iaW5kKGkodCkpLHQuaGFuZGxlUG9zdERlYWN0aXZhdGU9dC5oYW5kbGVQb3N0RGVhY3RpdmF0ZS5iaW5kKGkodCkpLHQuaGFuZGxlQ2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM9dC5oYW5kbGVDbGlja091dHNpZGVEZWFjdGl2YXRlcy5iaW5kKGkodCkpLHQuaW50ZXJuYWxPcHRpb25zPXtyZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZTohMSxjaGVja0NhblJldHVybkZvY3VzOm51bGwsb25EZWFjdGl2YXRlOnQuaGFuZGxlRGVhY3RpdmF0ZSxvblBvc3REZWFjdGl2YXRlOnQuaGFuZGxlUG9zdERlYWN0aXZhdGUsY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM6dC5oYW5kbGVDbGlja091dHNpZGVEZWFjdGl2YXRlc30sdC5vcmlnaW5hbE9wdGlvbnM9e3JldHVybkZvY3VzT25EZWFjdGl2YXRlOiEwLG9uRGVhY3RpdmF0ZTpudWxsLG9uUG9zdERlYWN0aXZhdGU6bnVsbCxjaGVja0NhblJldHVybkZvY3VzOm51bGwsY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM6ITF9O3ZhciBhPWUuZm9jdXNUcmFwT3B0aW9ucztmb3IodmFyIHMgaW4gYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxzKSYmKFwicmV0dXJuRm9jdXNPbkRlYWN0aXZhdGVcIiE9PXMmJlwib25EZWFjdGl2YXRlXCIhPT1zJiZcIm9uUG9zdERlYWN0aXZhdGVcIiE9PXMmJlwiY2hlY2tDYW5SZXR1cm5Gb2N1c1wiIT09cyYmXCJjbGlja091dHNpZGVEZWFjdGl2YXRlc1wiIT09cz90LmludGVybmFsT3B0aW9uc1tzXT1hW3NdOnQub3JpZ2luYWxPcHRpb25zW3NdPWFbc10pO3JldHVybiB0Lm91dHNpZGVDbGljaz1udWxsLHQuZm9jdXNUcmFwRWxlbWVudHM9ZS5jb250YWluZXJFbGVtZW50c3x8W10sdC51cGRhdGVQcmV2aW91c0VsZW1lbnQoKSx0fXJldHVybiB0PXAsKG49W3trZXk6XCJnZXREb2N1bWVudFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMuZm9jdXNUcmFwT3B0aW9ucy5kb2N1bWVudHx8KFwidW5kZWZpbmVkXCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDp2b2lkIDApfX0se2tleTpcImdldFJldHVybkZvY3VzTm9kZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXROb2RlRm9yT3B0aW9uKFwic2V0UmV0dXJuRm9jdXNcIix0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCk7cmV0dXJuIGV8fCExIT09ZSYmdGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnR9fSx7a2V5OlwidXBkYXRlUHJldmlvdXNFbGVtZW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldERvY3VtZW50KCk7ZSYmKHRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50PWUuYWN0aXZlRWxlbWVudCl9fSx7a2V5OlwiZGVhY3RpdmF0ZVRyYXBcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZm9jdXNUcmFwJiZ0aGlzLmZvY3VzVHJhcC5hY3RpdmUmJnRoaXMuZm9jdXNUcmFwLmRlYWN0aXZhdGUoe3JldHVybkZvY3VzOiExLGNoZWNrQ2FuUmV0dXJuRm9jdXM6bnVsbCxvbkRlYWN0aXZhdGU6dGhpcy5vcmlnaW5hbE9wdGlvbnMub25EZWFjdGl2YXRlfSl9fSx7a2V5OlwiaGFuZGxlQ2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXNcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLm9yaWdpbmFsT3B0aW9ucy5jbGlja091dHNpZGVEZWFjdGl2YXRlcz90aGlzLm9yaWdpbmFsT3B0aW9ucy5jbGlja091dHNpZGVEZWFjdGl2YXRlcy5jYWxsKG51bGwsZSk6dGhpcy5vcmlnaW5hbE9wdGlvbnMuY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM7cmV0dXJuIHQmJih0aGlzLm91dHNpZGVDbGljaz17dGFyZ2V0OmUudGFyZ2V0LGFsbG93RGVhY3RpdmF0aW9uOnR9KSx0fX0se2tleTpcImhhbmRsZURlYWN0aXZhdGVcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMub3JpZ2luYWxPcHRpb25zLm9uRGVhY3RpdmF0ZSYmdGhpcy5vcmlnaW5hbE9wdGlvbnMub25EZWFjdGl2YXRlLmNhbGwobnVsbCksdGhpcy5kZWFjdGl2YXRlVHJhcCgpfX0se2tleTpcImhhbmRsZVBvc3REZWFjdGl2YXRlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZnVuY3Rpb24oKXt2YXIgdD1lLmdldFJldHVybkZvY3VzTm9kZSgpLG49ISghZS5vcmlnaW5hbE9wdGlvbnMucmV0dXJuRm9jdXNPbkRlYWN0aXZhdGV8fG51bGw9PXR8fCF0LmZvY3VzfHxlLm91dHNpZGVDbGljayYmKCFlLm91dHNpZGVDbGljay5hbGxvd0RlYWN0aXZhdGlvbnx8ZihlLm91dHNpZGVDbGljay50YXJnZXQsZS5pbnRlcm5hbE9wdGlvbnMudGFiYmFibGVPcHRpb25zKSkpLHI9ZS5pbnRlcm5hbE9wdGlvbnMucHJldmVudFNjcm9sbCxvPXZvaWQgMCE9PXImJnI7biYmdC5mb2N1cyh7cHJldmVudFNjcm9sbDpvfSksZS5vcmlnaW5hbE9wdGlvbnMub25Qb3N0RGVhY3RpdmF0ZSYmZS5vcmlnaW5hbE9wdGlvbnMub25Qb3N0RGVhY3RpdmF0ZS5jYWxsKG51bGwpLGUub3V0c2lkZUNsaWNrPW51bGx9O3RoaXMub3JpZ2luYWxPcHRpb25zLmNoZWNrQ2FuUmV0dXJuRm9jdXM/dGhpcy5vcmlnaW5hbE9wdGlvbnMuY2hlY2tDYW5SZXR1cm5Gb2N1cy5jYWxsKG51bGwsdGhpcy5nZXRSZXR1cm5Gb2N1c05vZGUoKSkudGhlbih0LHQpOnQoKX19LHtrZXk6XCJzZXR1cEZvY3VzVHJhcFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5mb2N1c1RyYXA/dGhpcy5wcm9wcy5hY3RpdmUmJiF0aGlzLmZvY3VzVHJhcC5hY3RpdmUmJih0aGlzLmZvY3VzVHJhcC5hY3RpdmF0ZSgpLHRoaXMucHJvcHMucGF1c2VkJiZ0aGlzLmZvY3VzVHJhcC5wYXVzZSgpKTp0aGlzLmZvY3VzVHJhcEVsZW1lbnRzLnNvbWUoQm9vbGVhbikmJih0aGlzLmZvY3VzVHJhcD10aGlzLnByb3BzLl9jcmVhdGVGb2N1c1RyYXAodGhpcy5mb2N1c1RyYXBFbGVtZW50cyx0aGlzLmludGVybmFsT3B0aW9ucyksdGhpcy5wcm9wcy5hY3RpdmUmJnRoaXMuZm9jdXNUcmFwLmFjdGl2YXRlKCksdGhpcy5wcm9wcy5wYXVzZWQmJnRoaXMuZm9jdXNUcmFwLnBhdXNlKCkpfX0se2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnByb3BzLmFjdGl2ZSYmdGhpcy5zZXR1cEZvY3VzVHJhcCgpfX0se2tleTpcImNvbXBvbmVudERpZFVwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZm9jdXNUcmFwKXtlLmNvbnRhaW5lckVsZW1lbnRzIT09dGhpcy5wcm9wcy5jb250YWluZXJFbGVtZW50cyYmdGhpcy5mb2N1c1RyYXAudXBkYXRlQ29udGFpbmVyRWxlbWVudHModGhpcy5wcm9wcy5jb250YWluZXJFbGVtZW50cyk7dmFyIHQ9IWUuYWN0aXZlJiZ0aGlzLnByb3BzLmFjdGl2ZSxuPWUuYWN0aXZlJiYhdGhpcy5wcm9wcy5hY3RpdmUscj0hZS5wYXVzZWQmJnRoaXMucHJvcHMucGF1c2VkLG89ZS5wYXVzZWQmJiF0aGlzLnByb3BzLnBhdXNlZDtpZih0JiYodGhpcy51cGRhdGVQcmV2aW91c0VsZW1lbnQoKSx0aGlzLmZvY3VzVHJhcC5hY3RpdmF0ZSgpKSxuKXJldHVybiB2b2lkIHRoaXMuZGVhY3RpdmF0ZVRyYXAoKTtyJiZ0aGlzLmZvY3VzVHJhcC5wYXVzZSgpLG8mJnRoaXMuZm9jdXNUcmFwLnVucGF1c2UoKX1lbHNlIGUuY29udGFpbmVyRWxlbWVudHMhPT10aGlzLnByb3BzLmNvbnRhaW5lckVsZW1lbnRzJiYodGhpcy5mb2N1c1RyYXBFbGVtZW50cz10aGlzLnByb3BzLmNvbnRhaW5lckVsZW1lbnRzKSx0aGlzLnByb3BzLmFjdGl2ZSYmKHRoaXMudXBkYXRlUHJldmlvdXNFbGVtZW50KCksdGhpcy5zZXR1cEZvY3VzVHJhcCgpKX19LHtrZXk6XCJjb21wb25lbnRXaWxsVW5tb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kZWFjdGl2YXRlVHJhcCgpfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMuY2hpbGRyZW4/cy5DaGlsZHJlbi5vbmx5KHRoaXMucHJvcHMuY2hpbGRyZW4pOnZvaWQgMDtpZih0KXtpZih0LnR5cGUmJnQudHlwZT09PXMuRnJhZ21lbnQpdGhyb3cgbmV3IEVycm9yKFwiQSBmb2N1cy10cmFwIGNhbm5vdCB1c2UgYSBGcmFnbWVudCBhcyBpdHMgY2hpbGQgY29udGFpbmVyLiBUcnkgcmVwbGFjaW5nIGl0IHdpdGggYSA8ZGl2PiBlbGVtZW50LlwiKTtyZXR1cm4gcy5jbG9uZUVsZW1lbnQodCx7cmVmOmZ1bmN0aW9uKG4pe3ZhciByPWUucHJvcHMuY29udGFpbmVyRWxlbWVudHM7dCYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQucmVmP3QucmVmKG4pOnQucmVmJiYodC5yZWYuY3VycmVudD1uKSksZS5mb2N1c1RyYXBFbGVtZW50cz1yfHxbbl19fSl9cmV0dXJuIG51bGx9fV0pJiZmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxsKHIua2V5KSxyKX19KHQucHJvdG90eXBlLG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSkscH0ocy5Db21wb25lbnQpLHA9XCJ1bmRlZmluZWRcIj09dHlwZW9mIEVsZW1lbnQ/RnVuY3Rpb246RWxlbWVudDtkLnByb3BUeXBlcz17YWN0aXZlOmMuYm9vbCxwYXVzZWQ6Yy5ib29sLGZvY3VzVHJhcE9wdGlvbnM6Yy5zaGFwZSh7ZG9jdW1lbnQ6Yy5vYmplY3Qsb25BY3RpdmF0ZTpjLmZ1bmMsb25Qb3N0QWN0aXZhdGU6Yy5mdW5jLGNoZWNrQ2FuRm9jdXNUcmFwOmMuZnVuYyxvbkRlYWN0aXZhdGU6Yy5mdW5jLG9uUG9zdERlYWN0aXZhdGU6Yy5mdW5jLGNoZWNrQ2FuUmV0dXJuRm9jdXM6Yy5mdW5jLGluaXRpYWxGb2N1czpjLm9uZU9mVHlwZShbYy5pbnN0YW5jZU9mKHApLGMuc3RyaW5nLGMuYm9vbCxjLmZ1bmNdKSxmYWxsYmFja0ZvY3VzOmMub25lT2ZUeXBlKFtjLmluc3RhbmNlT2YocCksYy5zdHJpbmcsYy5mdW5jXSksZXNjYXBlRGVhY3RpdmF0ZXM6Yy5vbmVPZlR5cGUoW2MuYm9vbCxjLmZ1bmNdKSxjbGlja091dHNpZGVEZWFjdGl2YXRlczpjLm9uZU9mVHlwZShbYy5ib29sLGMuZnVuY10pLHJldHVybkZvY3VzT25EZWFjdGl2YXRlOmMuYm9vbCxzZXRSZXR1cm5Gb2N1czpjLm9uZU9mVHlwZShbYy5pbnN0YW5jZU9mKHApLGMuc3RyaW5nLGMuYm9vbCxjLmZ1bmNdKSxhbGxvd091dHNpZGVDbGljazpjLm9uZU9mVHlwZShbYy5ib29sLGMuZnVuY10pLHByZXZlbnRTY3JvbGw6Yy5ib29sLHRhYmJhYmxlT3B0aW9uczpjLnNoYXBlKHtkaXNwbGF5Q2hlY2s6Yy5vbmVPZihbXCJmdWxsXCIsXCJsZWdhY3ktZnVsbFwiLFwibm9uLXplcm8tYXJlYVwiLFwibm9uZVwiXSksZ2V0U2hhZG93Um9vdDpjLm9uZU9mVHlwZShbYy5ib29sLGMuZnVuY10pfSksdHJhcFN0YWNrOmMuYXJyYXksaXNLZXlGb3J3YXJkOmMuZnVuYyxpc0tleUJhY2t3YXJkOmMuZnVuY30pLGNvbnRhaW5lckVsZW1lbnRzOmMuYXJyYXlPZihjLmluc3RhbmNlT2YocCkpLGNoaWxkcmVuOmMub25lT2ZUeXBlKFtjLmVsZW1lbnQsYy5pbnN0YW5jZU9mKHApXSl9LGQuZGVmYXVsdFByb3BzPXthY3RpdmU6ITAscGF1c2VkOiExLGZvY3VzVHJhcE9wdGlvbnM6e30sX2NyZWF0ZUZvY3VzVHJhcDp1fSxlLmV4cG9ydHM9ZH0sNTMwMzooZSx0LG4pPT57bi5yKHQpLG4uZCh0LHtjcmVhdGVGb2N1c1RyYXA6KCk9PnZ9KTt2YXIgcj1uKDgzODgpO2Z1bmN0aW9uIG8oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGkoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/byhPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2EoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOm8oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuKHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSx0KXtpZihcIm9iamVjdFwiIT10eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW4pe3ZhciByPW4uY2FsbChlLFwic3RyaW5nXCIpO2lmKFwib2JqZWN0XCIhPXR5cGVvZiByKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKX1yZXR1cm4gU3RyaW5nKGUpfShlKTtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgdD90OlN0cmluZyh0KX0odCkpaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGw9ZnVuY3Rpb24oZSl7cmV0dXJuXCJUYWJcIj09PWUua2V5fHw5PT09ZS5rZXlDb2RlfSxzPWZ1bmN0aW9uKGUpe3JldHVybiBsKGUpJiYhZS5zaGlmdEtleX0sYz1mdW5jdGlvbihlKXtyZXR1cm4gbChlKSYmZS5zaGlmdEtleX0sdT1mdW5jdGlvbihlKXtyZXR1cm4gc2V0VGltZW91dChlLDApfSxmPWZ1bmN0aW9uKGUsdCl7dmFyIG49LTE7cmV0dXJuIGUuZXZlcnkoKGZ1bmN0aW9uKGUscil7cmV0dXJuIXQoZSl8fChuPXIsITEpfSkpLG59LGQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodD4xP3QtMTowKSxyPTE7cjx0O3IrKyluW3ItMV09YXJndW1lbnRzW3JdO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZS5hcHBseSh2b2lkIDAsbik6ZX0scD1mdW5jdGlvbihlKXtyZXR1cm4gZS50YXJnZXQuc2hhZG93Um9vdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb21wb3NlZFBhdGg/ZS5jb21wb3NlZFBhdGgoKVswXTplLnRhcmdldH0saD1bXSx2PWZ1bmN0aW9uKGUsdCl7dmFyIG4sbz0obnVsbD09dD92b2lkIDA6dC5kb2N1bWVudCl8fGRvY3VtZW50LGE9KG51bGw9PXQ/dm9pZCAwOnQudHJhcFN0YWNrKXx8aCx2PWkoe3JldHVybkZvY3VzT25EZWFjdGl2YXRlOiEwLGVzY2FwZURlYWN0aXZhdGVzOiEwLGRlbGF5SW5pdGlhbEZvY3VzOiEwLGlzS2V5Rm9yd2FyZDpzLGlzS2V5QmFja3dhcmQ6Y30sdCksZz17Y29udGFpbmVyczpbXSxjb250YWluZXJHcm91cHM6W10sdGFiYmFibGVHcm91cHM6W10sbm9kZUZvY3VzZWRCZWZvcmVBY3RpdmF0aW9uOm51bGwsbW9zdFJlY2VudGx5Rm9jdXNlZE5vZGU6bnVsbCxhY3RpdmU6ITEscGF1c2VkOiExLGRlbGF5SW5pdGlhbEZvY3VzVGltZXI6dm9pZCAwfSxDPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSYmdm9pZCAwIT09ZVt0XT9lW3RdOnZbbnx8dF19LG09ZnVuY3Rpb24oZSl7cmV0dXJuIGcuY29udGFpbmVyR3JvdXBzLmZpbmRJbmRleCgoZnVuY3Rpb24odCl7dmFyIG49dC5jb250YWluZXIscj10LnRhYmJhYmxlTm9kZXM7cmV0dXJuIG4uY29udGFpbnMoZSl8fHIuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1lfSkpfSkpfSx5PWZ1bmN0aW9uKGUpe3ZhciB0PXZbZV07aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdCl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkobj4xP24tMTowKSxpPTE7aTxuO2krKylyW2ktMV09YXJndW1lbnRzW2ldO3Q9dC5hcHBseSh2b2lkIDAscil9aWYoITA9PT10JiYodD12b2lkIDApLCF0KXtpZih2b2lkIDA9PT10fHwhMT09PXQpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKFwiYFwiLmNvbmNhdChlLFwiYCB3YXMgc3BlY2lmaWVkIGJ1dCB3YXMgbm90IGEgbm9kZSwgb3IgZGlkIG5vdCByZXR1cm4gYSBub2RlXCIpKX12YXIgYT10O2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0JiYhKGE9by5xdWVyeVNlbGVjdG9yKHQpKSl0aHJvdyBuZXcgRXJyb3IoXCJgXCIuY29uY2F0KGUsXCJgIGFzIHNlbGVjdG9yIHJlZmVycyB0byBubyBrbm93biBub2RlXCIpKTtyZXR1cm4gYX0sdz1mdW5jdGlvbigpe3ZhciBlPXkoXCJpbml0aWFsRm9jdXNcIik7aWYoITE9PT1lKXJldHVybiExO2lmKHZvaWQgMD09PWUpaWYobShvLmFjdGl2ZUVsZW1lbnQpPj0wKWU9by5hY3RpdmVFbGVtZW50O2Vsc2V7dmFyIHQ9Zy50YWJiYWJsZUdyb3Vwc1swXTtlPXQmJnQuZmlyc3RUYWJiYWJsZU5vZGV8fHkoXCJmYWxsYmFja0ZvY3VzXCIpfWlmKCFlKXRocm93IG5ldyBFcnJvcihcIllvdXIgZm9jdXMtdHJhcCBuZWVkcyB0byBoYXZlIGF0IGxlYXN0IG9uZSBmb2N1c2FibGUgZWxlbWVudFwiKTtyZXR1cm4gZX0sYj1mdW5jdGlvbigpe2lmKGcuY29udGFpbmVyR3JvdXBzPWcuY29udGFpbmVycy5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PSgwLHIudGFiYmFibGUpKGUsdi50YWJiYWJsZU9wdGlvbnMpLG49KDAsci5mb2N1c2FibGUpKGUsdi50YWJiYWJsZU9wdGlvbnMpO3JldHVybntjb250YWluZXI6ZSx0YWJiYWJsZU5vZGVzOnQsZm9jdXNhYmxlTm9kZXM6bixmaXJzdFRhYmJhYmxlTm9kZTp0Lmxlbmd0aD4wP3RbMF06bnVsbCxsYXN0VGFiYmFibGVOb2RlOnQubGVuZ3RoPjA/dFt0Lmxlbmd0aC0xXTpudWxsLG5leHRUYWJiYWJsZU5vZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxvPW4uZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdD09PWV9KSk7aWYoIShvPDApKXJldHVybiB0P24uc2xpY2UobysxKS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4oMCxyLmlzVGFiYmFibGUpKGUsdi50YWJiYWJsZU9wdGlvbnMpfSkpOm4uc2xpY2UoMCxvKS5yZXZlcnNlKCkuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuKDAsci5pc1RhYmJhYmxlKShlLHYudGFiYmFibGVPcHRpb25zKX0pKX19fSkpLGcudGFiYmFibGVHcm91cHM9Zy5jb250YWluZXJHcm91cHMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS50YWJiYWJsZU5vZGVzLmxlbmd0aD4wfSkpLGcudGFiYmFibGVHcm91cHMubGVuZ3RoPD0wJiYheShcImZhbGxiYWNrRm9jdXNcIikpdGhyb3cgbmV3IEVycm9yKFwiWW91ciBmb2N1cy10cmFwIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgY29udGFpbmVyIHdpdGggYXQgbGVhc3Qgb25lIHRhYmJhYmxlIG5vZGUgaW4gaXQgYXQgYWxsIHRpbWVzXCIpfSx4PWZ1bmN0aW9uIGUodCl7ITEhPT10JiZ0IT09by5hY3RpdmVFbGVtZW50JiYodCYmdC5mb2N1cz8odC5mb2N1cyh7cHJldmVudFNjcm9sbDohIXYucHJldmVudFNjcm9sbH0pLGcubW9zdFJlY2VudGx5Rm9jdXNlZE5vZGU9dCxmdW5jdGlvbihlKXtyZXR1cm4gZS50YWdOYW1lJiZcImlucHV0XCI9PT1lLnRhZ05hbWUudG9Mb3dlckNhc2UoKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5zZWxlY3R9KHQpJiZ0LnNlbGVjdCgpKTplKHcoKSkpfSxfPWZ1bmN0aW9uKGUpe3ZhciB0PXkoXCJzZXRSZXR1cm5Gb2N1c1wiLGUpO3JldHVybiB0fHwhMSE9PXQmJmV9LEw9ZnVuY3Rpb24oZSl7dmFyIHQ9cChlKTttKHQpPj0wfHwoZCh2LmNsaWNrT3V0c2lkZURlYWN0aXZhdGVzLGUpP24uZGVhY3RpdmF0ZSh7cmV0dXJuRm9jdXM6di5yZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZX0pOmQodi5hbGxvd091dHNpZGVDbGljayxlKXx8ZS5wcmV2ZW50RGVmYXVsdCgpKX0sTz1mdW5jdGlvbihlKXt2YXIgdD1wKGUpLG49bSh0KT49MDtufHx0IGluc3RhbmNlb2YgRG9jdW1lbnQ/biYmKGcubW9zdFJlY2VudGx5Rm9jdXNlZE5vZGU9dCk6KGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkseChnLm1vc3RSZWNlbnRseUZvY3VzZWROb2RlfHx3KCkpKX0sRT1mdW5jdGlvbihlKXtpZigoXCJFc2NhcGVcIj09PSh0PWUpLmtleXx8XCJFc2NcIj09PXQua2V5fHwyNz09PXQua2V5Q29kZSkmJiExIT09ZCh2LmVzY2FwZURlYWN0aXZhdGVzLGUpKXJldHVybiBlLnByZXZlbnREZWZhdWx0KCksdm9pZCBuLmRlYWN0aXZhdGUoKTt2YXIgdDsodi5pc0tleUZvcndhcmQoZSl8fHYuaXNLZXlCYWNrd2FyZChlKSkmJmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0sbj1wKGUpO2IoKTt2YXIgbz1udWxsO2lmKGcudGFiYmFibGVHcm91cHMubGVuZ3RoPjApe3ZhciBpPW0obiksYT1pPj0wP2cuY29udGFpbmVyR3JvdXBzW2ldOnZvaWQgMDtpZihpPDApbz10P2cudGFiYmFibGVHcm91cHNbZy50YWJiYWJsZUdyb3Vwcy5sZW5ndGgtMV0ubGFzdFRhYmJhYmxlTm9kZTpnLnRhYmJhYmxlR3JvdXBzWzBdLmZpcnN0VGFiYmFibGVOb2RlO2Vsc2UgaWYodCl7dmFyIHM9ZihnLnRhYmJhYmxlR3JvdXBzLChmdW5jdGlvbihlKXt2YXIgdD1lLmZpcnN0VGFiYmFibGVOb2RlO3JldHVybiBuPT09dH0pKTtpZihzPDAmJihhLmNvbnRhaW5lcj09PW58fCgwLHIuaXNGb2N1c2FibGUpKG4sdi50YWJiYWJsZU9wdGlvbnMpJiYhKDAsci5pc1RhYmJhYmxlKShuLHYudGFiYmFibGVPcHRpb25zKSYmIWEubmV4dFRhYmJhYmxlTm9kZShuLCExKSkmJihzPWkpLHM+PTApe3ZhciBjPTA9PT1zP2cudGFiYmFibGVHcm91cHMubGVuZ3RoLTE6cy0xO289Zy50YWJiYWJsZUdyb3Vwc1tjXS5sYXN0VGFiYmFibGVOb2RlfWVsc2UgbChlKXx8KG89YS5uZXh0VGFiYmFibGVOb2RlKG4sITEpKX1lbHNle3ZhciB1PWYoZy50YWJiYWJsZUdyb3VwcywoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sYXN0VGFiYmFibGVOb2RlO3JldHVybiBuPT09dH0pKTtpZih1PDAmJihhLmNvbnRhaW5lcj09PW58fCgwLHIuaXNGb2N1c2FibGUpKG4sdi50YWJiYWJsZU9wdGlvbnMpJiYhKDAsci5pc1RhYmJhYmxlKShuLHYudGFiYmFibGVPcHRpb25zKSYmIWEubmV4dFRhYmJhYmxlTm9kZShuKSkmJih1PWkpLHU+PTApe3ZhciBkPXU9PT1nLnRhYmJhYmxlR3JvdXBzLmxlbmd0aC0xPzA6dSsxO289Zy50YWJiYWJsZUdyb3Vwc1tkXS5maXJzdFRhYmJhYmxlTm9kZX1lbHNlIGwoZSl8fChvPWEubmV4dFRhYmJhYmxlTm9kZShuKSl9fWVsc2Ugbz15KFwiZmFsbGJhY2tGb2N1c1wiKTtvJiYobChlKSYmZS5wcmV2ZW50RGVmYXVsdCgpLHgobykpfShlLHYuaXNLZXlCYWNrd2FyZChlKSl9LFM9ZnVuY3Rpb24oZSl7dmFyIHQ9cChlKTttKHQpPj0wfHxkKHYuY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXMsZSl8fGQodi5hbGxvd091dHNpZGVDbGljayxlKXx8KGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKX0sTT1mdW5jdGlvbigpe2lmKGcuYWN0aXZlKXJldHVybiBmdW5jdGlvbihlLHQpe2lmKGUubGVuZ3RoPjApe3ZhciBuPWVbZS5sZW5ndGgtMV07biE9PXQmJm4ucGF1c2UoKX12YXIgcj1lLmluZGV4T2YodCk7LTE9PT1yfHxlLnNwbGljZShyLDEpLGUucHVzaCh0KX0oYSxuKSxnLmRlbGF5SW5pdGlhbEZvY3VzVGltZXI9di5kZWxheUluaXRpYWxGb2N1cz91KChmdW5jdGlvbigpe3godygpKX0pKTp4KHcoKSksby5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNpblwiLE8sITApLG8uYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLEwse2NhcHR1cmU6ITAscGFzc2l2ZTohMX0pLG8uYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIixMLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9KSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLFMse2NhcHR1cmU6ITAscGFzc2l2ZTohMX0pLG8uYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixFLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9KSxufSxqPWZ1bmN0aW9uKCl7aWYoZy5hY3RpdmUpcmV0dXJuIG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3VzaW5cIixPLCEwKSxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixMLCEwKSxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsTCwhMCksby5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIixTLCEwKSxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsRSwhMCksbn07cmV0dXJuKG49e2dldCBhY3RpdmUoKXtyZXR1cm4gZy5hY3RpdmV9LGdldCBwYXVzZWQoKXtyZXR1cm4gZy5wYXVzZWR9LGFjdGl2YXRlOmZ1bmN0aW9uKGUpe2lmKGcuYWN0aXZlKXJldHVybiB0aGlzO3ZhciB0PUMoZSxcIm9uQWN0aXZhdGVcIiksbj1DKGUsXCJvblBvc3RBY3RpdmF0ZVwiKSxyPUMoZSxcImNoZWNrQ2FuRm9jdXNUcmFwXCIpO3J8fGIoKSxnLmFjdGl2ZT0hMCxnLnBhdXNlZD0hMSxnLm5vZGVGb2N1c2VkQmVmb3JlQWN0aXZhdGlvbj1vLmFjdGl2ZUVsZW1lbnQsdCYmdCgpO3ZhciBpPWZ1bmN0aW9uKCl7ciYmYigpLE0oKSxuJiZuKCl9O3JldHVybiByPyhyKGcuY29udGFpbmVycy5jb25jYXQoKSkudGhlbihpLGkpLHRoaXMpOihpKCksdGhpcyl9LGRlYWN0aXZhdGU6ZnVuY3Rpb24oZSl7aWYoIWcuYWN0aXZlKXJldHVybiB0aGlzO3ZhciB0PWkoe29uRGVhY3RpdmF0ZTp2Lm9uRGVhY3RpdmF0ZSxvblBvc3REZWFjdGl2YXRlOnYub25Qb3N0RGVhY3RpdmF0ZSxjaGVja0NhblJldHVybkZvY3VzOnYuY2hlY2tDYW5SZXR1cm5Gb2N1c30sZSk7Y2xlYXJUaW1lb3V0KGcuZGVsYXlJbml0aWFsRm9jdXNUaW1lciksZy5kZWxheUluaXRpYWxGb2N1c1RpbWVyPXZvaWQgMCxqKCksZy5hY3RpdmU9ITEsZy5wYXVzZWQ9ITEsZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmluZGV4T2YodCk7LTEhPT1uJiZlLnNwbGljZShuLDEpLGUubGVuZ3RoPjAmJmVbZS5sZW5ndGgtMV0udW5wYXVzZSgpfShhLG4pO3ZhciByPUModCxcIm9uRGVhY3RpdmF0ZVwiKSxvPUModCxcIm9uUG9zdERlYWN0aXZhdGVcIiksbD1DKHQsXCJjaGVja0NhblJldHVybkZvY3VzXCIpLHM9Qyh0LFwicmV0dXJuRm9jdXNcIixcInJldHVybkZvY3VzT25EZWFjdGl2YXRlXCIpO3ImJnIoKTt2YXIgYz1mdW5jdGlvbigpe3UoKGZ1bmN0aW9uKCl7cyYmeChfKGcubm9kZUZvY3VzZWRCZWZvcmVBY3RpdmF0aW9uKSksbyYmbygpfSkpfTtyZXR1cm4gcyYmbD8obChfKGcubm9kZUZvY3VzZWRCZWZvcmVBY3RpdmF0aW9uKSkudGhlbihjLGMpLHRoaXMpOihjKCksdGhpcyl9LHBhdXNlOmZ1bmN0aW9uKCl7cmV0dXJuIGcucGF1c2VkfHwhZy5hY3RpdmV8fChnLnBhdXNlZD0hMCxqKCkpLHRoaXN9LHVucGF1c2U6ZnVuY3Rpb24oKXtyZXR1cm4gZy5wYXVzZWQmJmcuYWN0aXZlPyhnLnBhdXNlZD0hMSxiKCksTSgpLHRoaXMpOnRoaXN9LHVwZGF0ZUNvbnRhaW5lckVsZW1lbnRzOmZ1bmN0aW9uKGUpe3ZhciB0PVtdLmNvbmNhdChlKS5maWx0ZXIoQm9vbGVhbik7cmV0dXJuIGcuY29udGFpbmVycz10Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/by5xdWVyeVNlbGVjdG9yKGUpOmV9KSksZy5hY3RpdmUmJmIoKSx0aGlzfX0pLnVwZGF0ZUNvbnRhaW5lckVsZW1lbnRzKGUpLG59fSw5MTQxOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1uKDY1NSksbz1uKDY2ODkpLGk9big0Mzk0KSxhPW4oMzU3MyksbD1uKDkyOTQpLHM9big0ODM5KTtmdW5jdGlvbiBjKGUpe3JldHVybiBlJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmXCJkZWZhdWx0XCJpbiBlP2U6e2RlZmF1bHQ6ZX19dmFyIHU9ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGUmJk9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKG4pe2lmKFwiZGVmYXVsdFwiIT09bil7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4sci5nZXQ/cjp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZVtuXX19KX19KSksdC5kZWZhdWx0PWUsT2JqZWN0LmZyZWV6ZSh0KX0obyksZj1jKG8pLGQ9YyhzKSxwPWZ1bmN0aW9uKGUpe3JldHVybntpc0VuYWJsZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIGUuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuISF0W2VdfSkpfX19LGg9e21lYXN1cmVMYXlvdXQ6cChbXCJsYXlvdXRcIixcImxheW91dElkXCIsXCJkcmFnXCIsXCJfbGF5b3V0UmVzZXRUcmFuc2Zvcm1cIl0pLGFuaW1hdGlvbjpwKFtcImFuaW1hdGVcIixcImV4aXRcIixcInZhcmlhbnRzXCIsXCJ3aGlsZUhvdmVyXCIsXCJ3aGlsZVRhcFwiLFwid2hpbGVGb2N1c1wiLFwid2hpbGVEcmFnXCJdKSxleGl0OnAoW1wiZXhpdFwiXSksZHJhZzpwKFtcImRyYWdcIixcImRyYWdDb250cm9sc1wiXSksZm9jdXM6cChbXCJ3aGlsZUZvY3VzXCJdKSxob3ZlcjpwKFtcIndoaWxlSG92ZXJcIixcIm9uSG92ZXJTdGFydFwiLFwib25Ib3ZlckVuZFwiXSksdGFwOnAoW1wid2hpbGVUYXBcIixcIm9uVGFwXCIsXCJvblRhcFN0YXJ0XCIsXCJvblRhcENhbmNlbFwiXSkscGFuOnAoW1wib25QYW5cIixcIm9uUGFuU3RhcnRcIixcIm9uUGFuU2Vzc2lvblN0YXJ0XCIsXCJvblBhbkVuZFwiXSksbGF5b3V0QW5pbWF0aW9uOnAoW1wibGF5b3V0XCIsXCJsYXlvdXRJZFwiXSl9O2Z1bmN0aW9uIHYoZSl7Zm9yKHZhciB0IGluIGUpe3ZhciBuPWVbdF07bnVsbCE9PW4mJihoW3RdLkNvbXBvbmVudD1uKX19dmFyIGc9by5jcmVhdGVDb250ZXh0KHtzdHJpY3Q6ITF9KSxDPU9iamVjdC5rZXlzKGgpLG09Qy5sZW5ndGgseT1vLmNyZWF0ZUNvbnRleHQoe3RyYW5zZm9ybVBhZ2VQb2ludDpmdW5jdGlvbihlKXtyZXR1cm4gZX0saXNTdGF0aWM6ITF9KSx3PW8uY3JlYXRlQ29udGV4dCh7fSk7ZnVuY3Rpb24gYigpe3JldHVybiBvLnVzZUNvbnRleHQodykudmlzdWFsRWxlbWVudH12YXIgeD1vLmNyZWF0ZUNvbnRleHQobnVsbCk7ZnVuY3Rpb24gXyhlKXt2YXIgdD1vLnVzZVJlZihudWxsKTtyZXR1cm4gbnVsbD09PXQuY3VycmVudCYmKHQuY3VycmVudD1lKCkpLHQuY3VycmVudH1mdW5jdGlvbiBMKCl7dmFyIGU9by51c2VDb250ZXh0KHgpO2lmKG51bGw9PT1lKXJldHVyblshMCxudWxsXTt2YXIgdD1lLmlzUHJlc2VudCxuPWUub25FeGl0Q29tcGxldGUscj1lLnJlZ2lzdGVyLGk9TSgpO3JldHVybiBvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gcihpKX0pLFtdKSwhdCYmbj9bITEsZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09bj92b2lkIDA6bihpKX1dOlshMF19ZnVuY3Rpb24gTyhlKXtyZXR1cm4gbnVsbD09PWV8fGUuaXNQcmVzZW50fXZhciBFPTAsUz1mdW5jdGlvbigpe3JldHVybiBFKyt9LE09ZnVuY3Rpb24oKXtyZXR1cm4gXyhTKX0saj1vLmNyZWF0ZUNvbnRleHQobnVsbCksaz1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93LFI9az9vLnVzZUxheW91dEVmZmVjdDpvLnVzZUVmZmVjdDtmdW5jdGlvbiBQKGUpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxcImN1cnJlbnRcIil9ZnVuY3Rpb24gQShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBJKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlfHxBKGUpfWZ1bmN0aW9uIFQoZSx0LG4scixvKXt2YXIgaTtyZXR1cm4gdm9pZCAwPT09ciYmKHI9e30pLHZvaWQgMD09PW8mJihvPXt9KSxcInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9bnVsbD09PShpPWUudmFyaWFudHMpfHx2b2lkIDA9PT1pP3ZvaWQgMDppW3RdKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3QobnVsbCE9bj9uOmUuY3VzdG9tLHIsbyk6dH1mdW5jdGlvbiBIKGUsdCxuKXt2YXIgcj1lLmdldFByb3BzKCk7cmV0dXJuIFQocix0LG51bGwhPW4/bjpyLmN1c3RvbSxmdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gZS5mb3JFYWNoVmFsdWUoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHRbbl09ZS5nZXQoKX0pKSx0fShlKSxmdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gZS5mb3JFYWNoVmFsdWUoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHRbbl09ZS5nZXRWZWxvY2l0eSgpfSkpLHR9KGUpKX1mdW5jdGlvbiBWKGUpe3ZhciB0O3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mKG51bGw9PT0odD1lLmFuaW1hdGUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LnN0YXJ0KXx8SShlLmluaXRpYWwpfHxJKGUuYW5pbWF0ZSl8fEkoZS53aGlsZUhvdmVyKXx8SShlLndoaWxlRHJhZyl8fEkoZS53aGlsZVRhcCl8fEkoZS53aGlsZUZvY3VzKXx8SShlLmV4aXQpfWZ1bmN0aW9uIEIoZSl7cmV0dXJuIEJvb2xlYW4oVihlKXx8ZS52YXJpYW50cyl9ZnVuY3Rpb24gRChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLmpvaW4oXCIgXCIpOmV9ZnVuY3Rpb24gWihlKXt2YXIgdD1lLnByZWxvYWRlZEZlYXR1cmVzLG49ZS5jcmVhdGVWaXN1YWxFbGVtZW50LGk9ZS51c2VSZW5kZXIsYT1lLnVzZVZpc3VhbFN0YXRlLGw9ZS5Db21wb25lbnQ7cmV0dXJuIHQmJnYodCksby5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3ZhciBzPW8udXNlQ29udGV4dCh5KS5pc1N0YXRpYyxjPW51bGwsZj1mdW5jdGlvbihlLHQpe3ZhciBuPWZ1bmN0aW9uKGUsdCl7aWYoVihlKSl7dmFyIG49ZS5pbml0aWFsLHI9ZS5hbmltYXRlO3JldHVybntpbml0aWFsOiExPT09bnx8SShuKT9uOnZvaWQgMCxhbmltYXRlOkkocik/cjp2b2lkIDB9fXJldHVybiExIT09ZS5pbmhlcml0P3Q6e319KGUsby51c2VDb250ZXh0KHcpKSxyPW4uaW5pdGlhbCxpPW4uYW5pbWF0ZTtyZXR1cm4gby51c2VNZW1vKChmdW5jdGlvbigpe3JldHVybntpbml0aWFsOnIsYW5pbWF0ZTppfX0pLHQ/W0QociksRChpKV06W10pfShlLHMpLGQ9YShlLHMpO3JldHVybiFzJiZrJiYoZi52aXN1YWxFbGVtZW50PWZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPW8udXNlQ29udGV4dCh5KSxsPW8udXNlQ29udGV4dChnKSxzPWIoKSxjPW8udXNlQ29udGV4dCh4KSx1PWZ1bmN0aW9uKGUpe3ZhciB0PWUubGF5b3V0SWQsbj1vLnVzZUNvbnRleHQoaik7cmV0dXJuIG4mJnZvaWQgMCE9PXQ/bitcIi1cIit0OnR9KG4pLGY9by51c2VSZWYodm9pZCAwKTtpfHwoaT1sLnJlbmRlcmVyKSwhZi5jdXJyZW50JiZpJiYoZi5jdXJyZW50PWkoZSx7dmlzdWFsU3RhdGU6dCxwYXJlbnQ6cyxwcm9wczpyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbikse2xheW91dElkOnV9KSxwcmVzZW5jZUlkOm51bGw9PWM/dm9pZCAwOmMuaWQsYmxvY2tJbml0aWFsQW5pbWF0aW9uOiExPT09KG51bGw9PWM/dm9pZCAwOmMuaW5pdGlhbCl9KSk7dmFyIGQ9Zi5jdXJyZW50O3JldHVybiBSKChmdW5jdGlvbigpe2QmJihkLnNldFByb3BzKHIuX19hc3NpZ24oci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGEpLG4pLHtsYXlvdXRJZDp1fSkpLGQuaXNQcmVzZW50PU8oYyksZC5pc1ByZXNlbmNlUm9vdD0hc3x8cy5wcmVzZW5jZUlkIT09KG51bGw9PWM/dm9pZCAwOmMuaWQpLGQuc3luY1JlbmRlcigpKX0pKSxvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXt2YXIgZTtkJiYobnVsbD09PShlPWQuYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1lfHxlLmFuaW1hdGVDaGFuZ2VzKCkpfSkpLFIoKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWQ/dm9pZCAwOmQubm90aWZ5VW5tb3VudCgpfX0pLFtdKSxkfShsLGQsZSxuKSxjPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1bXTtpZihvLnVzZUNvbnRleHQoZyksIXQpcmV0dXJuIG51bGw7Zm9yKHZhciBhPTA7YTxtO2ErKyl7dmFyIGw9Q1thXSxzPWhbbF0sYz1zLmlzRW5hYmxlZCxmPXMuQ29tcG9uZW50O2MoZSkmJmYmJmkucHVzaCh1LmNyZWF0ZUVsZW1lbnQoZixyLl9fYXNzaWduKHtrZXk6bH0sZSx7dmlzdWFsRWxlbWVudDp0fSkpKX1yZXR1cm4gaX0oZSxmLnZpc3VhbEVsZW1lbnQpKSx1LmNyZWF0ZUVsZW1lbnQodS5GcmFnbWVudCxudWxsLHUuY3JlYXRlRWxlbWVudCh3LlByb3ZpZGVyLHt2YWx1ZTpmfSxpKGwsZSxmdW5jdGlvbihlLHQsbil7cmV0dXJuIG8udXNlQ2FsbGJhY2soKGZ1bmN0aW9uKHIpe3ZhciBvO3ImJihudWxsPT09KG89ZS5tb3VudCl8fHZvaWQgMD09PW98fG8uY2FsbChlLHIpKSx0JiYocj90Lm1vdW50KHIpOnQudW5tb3VudCgpKSxuJiYoXCJmdW5jdGlvblwiPT10eXBlb2Ygbj9uKHIpOlAobikmJihuLmN1cnJlbnQ9cikpfSksW3RdKX0oZCxmLnZpc3VhbEVsZW1lbnQsdCksZCxzKSksYyl9KSl9ZnVuY3Rpb24gJChlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPXt9KSxaKGUodCxuKSl9dmFyIG49bmV3IE1hcDtyZXR1cm4gbmV3IFByb3h5KHQse2dldDpmdW5jdGlvbihlLHIpe3JldHVybiBuLmhhcyhyKXx8bi5zZXQocix0KHIpKSxuLmdldChyKX19KX12YXIgRj1bXCJhbmltYXRlXCIsXCJjaXJjbGVcIixcImRlZnNcIixcImRlc2NcIixcImVsbGlwc2VcIixcImdcIixcImltYWdlXCIsXCJsaW5lXCIsXCJmaWx0ZXJcIixcIm1hcmtlclwiLFwibWFza1wiLFwibWV0YWRhdGFcIixcInBhdGhcIixcInBhdHRlcm5cIixcInBvbHlnb25cIixcInBvbHlsaW5lXCIsXCJyZWN0XCIsXCJzdG9wXCIsXCJzdmdcIixcInN3aXRjaFwiLFwic3ltYm9sXCIsXCJ0ZXh0XCIsXCJ0c3BhblwiLFwidXNlXCIsXCJ2aWV3XCJdO2Z1bmN0aW9uIE4oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGUmJiFlLmluY2x1ZGVzKFwiLVwiKSYmISEoRi5pbmRleE9mKGUpPi0xfHwvW0EtWl0vLnRlc3QoZSkpfXZhciBVPXt9O2Z1bmN0aW9uIFcoZSl7Zm9yKHZhciB0IGluIGUpVVt0XT1lW3RdfXZhciB6PVtcIlwiLFwiWFwiLFwiWVwiLFwiWlwiXSxHPVtcInRyYW5zZm9ybVBlcnNwZWN0aXZlXCIsXCJ4XCIsXCJ5XCIsXCJ6XCJdO2Z1bmN0aW9uIHEoZSx0KXtyZXR1cm4gRy5pbmRleE9mKGUpLUcuaW5kZXhPZih0KX1bXCJ0cmFuc2xhdGVcIixcInNjYWxlXCIsXCJyb3RhdGVcIixcInNrZXdcIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHouZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIEcucHVzaChlK3QpfSkpfSkpO3ZhciBZPW5ldyBTZXQoRyk7ZnVuY3Rpb24gSyhlKXtyZXR1cm4gWS5oYXMoZSl9dmFyIFg9bmV3IFNldChbXCJvcmlnaW5YXCIsXCJvcmlnaW5ZXCIsXCJvcmlnaW5aXCJdKTtmdW5jdGlvbiBKKGUpe3JldHVybiBYLmhhcyhlKX1mdW5jdGlvbiBRKGUsdCl7dmFyIG49dC5sYXlvdXQscj10LmxheW91dElkO3JldHVybiBLKGUpfHxKKGUpfHwobnx8dm9pZCAwIT09cikmJighIVVbZV18fFwib3BhY2l0eVwiPT09ZSl9dmFyIGVlPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJmUuZ2V0VmVsb2NpdHl9LHRlPXt4OlwidHJhbnNsYXRlWFwiLHk6XCJ0cmFuc2xhdGVZXCIsejpcInRyYW5zbGF0ZVpcIix0cmFuc2Zvcm1QZXJzcGVjdGl2ZTpcInBlcnNwZWN0aXZlXCJ9O2Z1bmN0aW9uIG5lKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoXCItLVwiKX12YXIgcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCYmXCJudW1iZXJcIj09dHlwZW9mIGU/dC50cmFuc2Zvcm0oZSk6ZX0sb2U9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGEubnVtYmVyKSx7dHJhbnNmb3JtOk1hdGgucm91bmR9KSxpZT17Ym9yZGVyV2lkdGg6YS5weCxib3JkZXJUb3BXaWR0aDphLnB4LGJvcmRlclJpZ2h0V2lkdGg6YS5weCxib3JkZXJCb3R0b21XaWR0aDphLnB4LGJvcmRlckxlZnRXaWR0aDphLnB4LGJvcmRlclJhZGl1czphLnB4LHJhZGl1czphLnB4LGJvcmRlclRvcExlZnRSYWRpdXM6YS5weCxib3JkZXJUb3BSaWdodFJhZGl1czphLnB4LGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOmEucHgsYm9yZGVyQm90dG9tTGVmdFJhZGl1czphLnB4LHdpZHRoOmEucHgsbWF4V2lkdGg6YS5weCxoZWlnaHQ6YS5weCxtYXhIZWlnaHQ6YS5weCxzaXplOmEucHgsdG9wOmEucHgscmlnaHQ6YS5weCxib3R0b206YS5weCxsZWZ0OmEucHgscGFkZGluZzphLnB4LHBhZGRpbmdUb3A6YS5weCxwYWRkaW5nUmlnaHQ6YS5weCxwYWRkaW5nQm90dG9tOmEucHgscGFkZGluZ0xlZnQ6YS5weCxtYXJnaW46YS5weCxtYXJnaW5Ub3A6YS5weCxtYXJnaW5SaWdodDphLnB4LG1hcmdpbkJvdHRvbTphLnB4LG1hcmdpbkxlZnQ6YS5weCxyb3RhdGU6YS5kZWdyZWVzLHJvdGF0ZVg6YS5kZWdyZWVzLHJvdGF0ZVk6YS5kZWdyZWVzLHJvdGF0ZVo6YS5kZWdyZWVzLHNjYWxlOmEuc2NhbGUsc2NhbGVYOmEuc2NhbGUsc2NhbGVZOmEuc2NhbGUsc2NhbGVaOmEuc2NhbGUsc2tldzphLmRlZ3JlZXMsc2tld1g6YS5kZWdyZWVzLHNrZXdZOmEuZGVncmVlcyxkaXN0YW5jZTphLnB4LHRyYW5zbGF0ZVg6YS5weCx0cmFuc2xhdGVZOmEucHgsdHJhbnNsYXRlWjphLnB4LHg6YS5weCx5OmEucHgsejphLnB4LHBlcnNwZWN0aXZlOmEucHgsdHJhbnNmb3JtUGVyc3BlY3RpdmU6YS5weCxvcGFjaXR5OmEuYWxwaGEsb3JpZ2luWDphLnByb2dyZXNzUGVyY2VudGFnZSxvcmlnaW5ZOmEucHJvZ3Jlc3NQZXJjZW50YWdlLG9yaWdpblo6YS5weCx6SW5kZXg6b2UsZmlsbE9wYWNpdHk6YS5hbHBoYSxzdHJva2VPcGFjaXR5OmEuYWxwaGEsbnVtT2N0YXZlczpvZX07ZnVuY3Rpb24gYWUoZSx0LG4scixvLGksYSxsKXt2YXIgcyxjPWUuc3R5bGUsdT1lLnZhcnMsZj1lLnRyYW5zZm9ybSxkPWUudHJhbnNmb3JtS2V5cyxwPWUudHJhbnNmb3JtT3JpZ2luO2QubGVuZ3RoPTA7dmFyIGg9ITEsdj0hMSxnPSEwO2Zvcih2YXIgQyBpbiB0KXt2YXIgbT10W0NdO2lmKG5lKEMpKXVbQ109bTtlbHNle3ZhciB5PWllW0NdLHc9cmUobSx5KTtpZihLKEMpKXtpZihoPSEwLGZbQ109dyxkLnB1c2goQyksIWcpY29udGludWU7bSE9PShudWxsIT09KHM9eS5kZWZhdWx0KSYmdm9pZCAwIT09cz9zOjApJiYoZz0hMSl9ZWxzZSBpZihKKEMpKXBbQ109dyx2PSEwO2Vsc2UgaWYoKG51bGw9PW4/dm9pZCAwOm4uaXNIeWRyYXRlZCkmJihudWxsPT1yP3ZvaWQgMDpyLmlzSHlkcmF0ZWQpJiZVW0NdKXt2YXIgYj1VW0NdLnByb2Nlc3MobSxyLG4pLHg9VVtDXS5hcHBseVRvO2lmKHgpZm9yKHZhciBfPXgubGVuZ3RoLEw9MDtMPF87TCsrKWNbeFtMXV09YjtlbHNlIGNbQ109Yn1lbHNlIGNbQ109d319ciYmbiYmYSYmbD8oYy50cmFuc2Zvcm09YShyLmRlbHRhRmluYWwsci50cmVlU2NhbGUsaD9mOnZvaWQgMCksaSYmKGMudHJhbnNmb3JtPWkoZixjLnRyYW5zZm9ybSkpLGMudHJhbnNmb3JtT3JpZ2luPWwocikpOihoJiYoYy50cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89ZS50cmFuc2Zvcm0saT1lLnRyYW5zZm9ybUtleXMsYT10LmVuYWJsZUhhcmR3YXJlQWNjZWxlcmF0aW9uLGw9dm9pZCAwPT09YXx8YSxzPXQuYWxsb3dUcmFuc2Zvcm1Ob25lLGM9dm9pZCAwPT09c3x8cyx1PVwiXCI7aS5zb3J0KHEpO2Zvcih2YXIgZj0hMSxkPWkubGVuZ3RoLHA9MDtwPGQ7cCsrKXt2YXIgaD1pW3BdO3UrPSh0ZVtoXXx8aCkrXCIoXCIrb1toXStcIikgXCIsXCJ6XCI9PT1oJiYoZj0hMCl9cmV0dXJuIWYmJmw/dSs9XCJ0cmFuc2xhdGVaKDApXCI6dT11LnRyaW0oKSxyP3U9cihvLG4/XCJcIjp1KTpjJiZuJiYodT1cIm5vbmVcIiksdX0oZSxvLGcsaSkpLHYmJihjLnRyYW5zZm9ybU9yaWdpbj1mdW5jdGlvbihlKXt2YXIgdD1lLm9yaWdpblgsbj12b2lkIDA9PT10P1wiNTAlXCI6dCxyPWUub3JpZ2luWSxvPXZvaWQgMD09PXI/XCI1MCVcIjpyLGk9ZS5vcmlnaW5aO3JldHVybiBuK1wiIFwiK28rXCIgXCIrKHZvaWQgMD09PWk/MDppKX0ocCkpKX12YXIgbGU9ZnVuY3Rpb24oKXtyZXR1cm57c3R5bGU6e30sdHJhbnNmb3JtOnt9LHRyYW5zZm9ybUtleXM6W10sdHJhbnNmb3JtT3JpZ2luOnt9LHZhcnM6e319fTtmdW5jdGlvbiBzZShlLHQsbil7Zm9yKHZhciByIGluIHQpZWUodFtyXSl8fFEocixuKXx8KGVbcl09dFtyXSl9ZnVuY3Rpb24gY2UoZSx0LG4pe3ZhciBpPXt9LGE9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXt9O3JldHVybiBzZShpLGUuc3R5bGV8fHt9LGUpLE9iamVjdC5hc3NpZ24oaSxmdW5jdGlvbihlLHQsbil7dmFyIGk9ZS50cmFuc2Zvcm1UZW1wbGF0ZTtyZXR1cm4gby51c2VNZW1vKChmdW5jdGlvbigpe3ZhciBlPWxlKCk7YWUoZSx0LHZvaWQgMCx2b2lkIDAse2VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0aW9uOiFufSxpKTt2YXIgbz1lLnZhcnMsYT1lLnN0eWxlO3JldHVybiByLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbyksYSl9KSxbdF0pfShlLHQsbikpLGUudHJhbnNmb3JtVmFsdWVzJiYoaT1lLnRyYW5zZm9ybVZhbHVlcyhpKSksaX0oZSx0LG4pO3JldHVybiBCb29sZWFuKGUuZHJhZykmJihpLmRyYWdnYWJsZT0hMSxhLnVzZXJTZWxlY3Q9YS5XZWJraXRVc2VyU2VsZWN0PWEuV2Via2l0VG91Y2hDYWxsb3V0PVwibm9uZVwiLGEudG91Y2hBY3Rpb249ITA9PT1lLmRyYWc/XCJub25lXCI6XCJwYW4tXCIrKFwieFwiPT09ZS5kcmFnP1wieVwiOlwieFwiKSksaS5zdHlsZT1hLGl9dmFyIHVlPW5ldyBTZXQoW1wiaW5pdGlhbFwiLFwiYW5pbWF0ZVwiLFwiZXhpdFwiLFwic3R5bGVcIixcInZhcmlhbnRzXCIsXCJ0cmFuc2l0aW9uXCIsXCJ0cmFuc2Zvcm1UZW1wbGF0ZVwiLFwidHJhbnNmb3JtVmFsdWVzXCIsXCJjdXN0b21cIixcImluaGVyaXRcIixcImxheW91dFwiLFwibGF5b3V0SWRcIixcIl9sYXlvdXRSZXNldFRyYW5zZm9ybVwiLFwib25MYXlvdXRBbmltYXRpb25Db21wbGV0ZVwiLFwib25WaWV3cG9ydEJveFVwZGF0ZVwiLFwib25MYXlvdXRNZWFzdXJlXCIsXCJvbkJlZm9yZUxheW91dE1lYXN1cmVcIixcIm9uQW5pbWF0aW9uU3RhcnRcIixcIm9uQW5pbWF0aW9uQ29tcGxldGVcIixcIm9uVXBkYXRlXCIsXCJvbkRyYWdTdGFydFwiLFwib25EcmFnXCIsXCJvbkRyYWdFbmRcIixcIm9uTWVhc3VyZURyYWdDb25zdHJhaW50c1wiLFwib25EaXJlY3Rpb25Mb2NrXCIsXCJvbkRyYWdUcmFuc2l0aW9uRW5kXCIsXCJkcmFnXCIsXCJkcmFnQ29udHJvbHNcIixcImRyYWdMaXN0ZW5lclwiLFwiZHJhZ0NvbnN0cmFpbnRzXCIsXCJkcmFnRGlyZWN0aW9uTG9ja1wiLFwiX2RyYWdYXCIsXCJfZHJhZ1lcIixcImRyYWdFbGFzdGljXCIsXCJkcmFnTW9tZW50dW1cIixcImRyYWdQcm9wYWdhdGlvblwiLFwiZHJhZ1RyYW5zaXRpb25cIixcIndoaWxlRHJhZ1wiLFwib25QYW5cIixcIm9uUGFuU3RhcnRcIixcIm9uUGFuRW5kXCIsXCJvblBhblNlc3Npb25TdGFydFwiLFwib25UYXBcIixcIm9uVGFwU3RhcnRcIixcIm9uVGFwQ2FuY2VsXCIsXCJvbkhvdmVyU3RhcnRcIixcIm9uSG92ZXJFbmRcIixcIndoaWxlRm9jdXNcIixcIndoaWxlVGFwXCIsXCJ3aGlsZUhvdmVyXCJdKTtmdW5jdGlvbiBmZShlKXtyZXR1cm4gdWUuaGFzKGUpfXZhciBkZT1mdW5jdGlvbihlKXtyZXR1cm4hZmUoZSl9O3RyeXt2YXIgcGU9big4NTk0KS5aO2RlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoXCJvblwiKT8hZmUoZSk6cGUoZSl9fWNhdGNoKGUpe31mdW5jdGlvbiBoZShlLHQsbil7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTphLnB4LnRyYW5zZm9ybSh0K24qZSl9dmFyIHZlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEucHgudHJhbnNmb3JtKGUqdCl9LGdlPXtvZmZzZXQ6XCJzdHJva2UtZGFzaG9mZnNldFwiLGFycmF5Olwic3Ryb2tlLWRhc2hhcnJheVwifSxDZT17b2Zmc2V0Olwic3Ryb2tlRGFzaG9mZnNldFwiLGFycmF5Olwic3Ryb2tlRGFzaGFycmF5XCJ9O2Z1bmN0aW9uIG1lKGUsdCxuLG8saSxhLGwscyl7dmFyIGM9dC5hdHRyWCx1PXQuYXR0clksZj10Lm9yaWdpblgsZD10Lm9yaWdpblkscD10LnBhdGhMZW5ndGgsaD10LnBhdGhTcGFjaW5nLHY9dm9pZCAwPT09aD8xOmgsZz10LnBhdGhPZmZzZXQsQz12b2lkIDA9PT1nPzA6ZzthZShlLHIuX19yZXN0KHQsW1wiYXR0clhcIixcImF0dHJZXCIsXCJvcmlnaW5YXCIsXCJvcmlnaW5ZXCIsXCJwYXRoTGVuZ3RoXCIsXCJwYXRoU3BhY2luZ1wiLFwicGF0aE9mZnNldFwiXSksbixvLGksYSxsLHMpLGUuYXR0cnM9ZS5zdHlsZSxlLnN0eWxlPXt9O3ZhciBtPWUuYXR0cnMseT1lLnN0eWxlLHc9ZS5kaW1lbnNpb25zLGI9ZS50b3RhbFBhdGhMZW5ndGg7bS50cmFuc2Zvcm0mJih3JiYoeS50cmFuc2Zvcm09bS50cmFuc2Zvcm0pLGRlbGV0ZSBtLnRyYW5zZm9ybSksdyYmKHZvaWQgMCE9PWZ8fHZvaWQgMCE9PWR8fHkudHJhbnNmb3JtKSYmKHkudHJhbnNmb3JtT3JpZ2luPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaGUodCxlLngsZS53aWR0aCkrXCIgXCIraGUobixlLnksZS5oZWlnaHQpfSh3LHZvaWQgMCE9PWY/ZjouNSx2b2lkIDAhPT1kP2Q6LjUpKSx2b2lkIDAhPT1jJiYobS54PWMpLHZvaWQgMCE9PXUmJihtLnk9dSksdm9pZCAwIT09YiYmdm9pZCAwIT09cCYmZnVuY3Rpb24oZSx0LG4scixvLGkpe3ZvaWQgMD09PXImJihyPTEpLHZvaWQgMD09PW8mJihvPTApLHZvaWQgMD09PWkmJihpPSEwKTt2YXIgYT1pP2dlOkNlO2VbYS5vZmZzZXRdPXZlKC1vLHQpO3ZhciBsPXZlKG4sdCkscz12ZShyLHQpO2VbYS5hcnJheV09bCtcIiBcIitzfShtLGIscCx2LEMsITEpfXZhciB5ZT1mdW5jdGlvbigpe3JldHVybiByLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbGUoKSkse2F0dHJzOnt9fSl9O2Z1bmN0aW9uIHdlKGUsdCl7dmFyIG49by51c2VNZW1vKChmdW5jdGlvbigpe3ZhciBuPXllKCk7cmV0dXJuIG1lKG4sdCx2b2lkIDAsdm9pZCAwLHtlbmFibGVIYXJkd2FyZUFjY2VsZXJhdGlvbjohMX0sZS50cmFuc2Zvcm1UZW1wbGF0ZSksci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG4uYXR0cnMpLHtzdHlsZTpyLl9fYXNzaWduKHt9LG4uc3R5bGUpfSl9KSxbdF0pO2lmKGUuc3R5bGUpe3ZhciBpPXt9O3NlKGksZS5zdHlsZSxlKSxuLnN0eWxlPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxpKSxuLnN0eWxlKX1yZXR1cm4gbn1mdW5jdGlvbiBiZShlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLGZ1bmN0aW9uKHQsbixpLGEsbCl7dmFyIHM9YS5sYXRlc3RWYWx1ZXMsYz0oTih0KT93ZTpjZSkobixzLGwpLHU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt9O2Zvcih2YXIgbyBpbiBlKShkZShvKXx8ITA9PT1uJiZmZShvKXx8IXQmJiFmZShvKSkmJihyW29dPWVbb10pO3JldHVybiByfShuLFwic3RyaW5nXCI9PXR5cGVvZiB0LGUpLGY9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdSksYykse3JlZjppfSk7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCh0LGYpfX12YXIgeGU9LyhbYS16XSkoW0EtWl0pL2csX2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSh4ZSxcIiQxLSQyXCIpLnRvTG93ZXJDYXNlKCl9O2Z1bmN0aW9uIExlKGUsdCl7dmFyIG49dC5zdHlsZSxyPXQudmFycztmb3IodmFyIG8gaW4gT2JqZWN0LmFzc2lnbihlLnN0eWxlLG4pLHIpZS5zdHlsZS5zZXRQcm9wZXJ0eShvLHJbb10pfXZhciBPZT1uZXcgU2V0KFtcImJhc2VGcmVxdWVuY3lcIixcImRpZmZ1c2VDb25zdGFudFwiLFwia2VybmVsTWF0cml4XCIsXCJrZXJuZWxVbml0TGVuZ3RoXCIsXCJrZXlTcGxpbmVzXCIsXCJrZXlUaW1lc1wiLFwibGltaXRpbmdDb25lQW5nbGVcIixcIm1hcmtlckhlaWdodFwiLFwibWFya2VyV2lkdGhcIixcIm51bU9jdGF2ZXNcIixcInRhcmdldFhcIixcInRhcmdldFlcIixcInN1cmZhY2VTY2FsZVwiLFwic3BlY3VsYXJDb25zdGFudFwiLFwic3BlY3VsYXJFeHBvbmVudFwiLFwic3RkRGV2aWF0aW9uXCIsXCJ0YWJsZVZhbHVlc1wiLFwidmlld0JveFwiLFwiZ3JhZGllbnRUcmFuc2Zvcm1cIl0pO2Z1bmN0aW9uIEVlKGUsdCl7Zm9yKHZhciBuIGluIExlKGUsdCksdC5hdHRycyllLnNldEF0dHJpYnV0ZShPZS5oYXMobik/bjpfZShuKSx0LmF0dHJzW25dKX1mdW5jdGlvbiBTZShlKXt2YXIgdD1lLnN0eWxlLG49e307Zm9yKHZhciByIGluIHQpKGVlKHRbcl0pfHxRKHIsZSkpJiYobltyXT10W3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBNZShlKXt2YXIgdD1TZShlKTtmb3IodmFyIG4gaW4gZSllZShlW25dKSYmKHRbXCJ4XCI9PT1ufHxcInlcIj09PW4/XCJhdHRyXCIrbi50b1VwcGVyQ2FzZSgpOm5dPWVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIGplKGUpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnN0YXJ0fXZhciBrZT1mdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKX0sUmU9ZnVuY3Rpb24oZSl7cmV0dXJuIEJvb2xlYW4oZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJmUubWl4JiZlLnRvVmFsdWUpfSxQZT1mdW5jdGlvbihlKXtyZXR1cm4ga2UoZSk/ZVtlLmxlbmd0aC0xXXx8MDplfTtmdW5jdGlvbiBBZShlKXt2YXIgdD1lZShlKT9lLmdldCgpOmU7cmV0dXJuIFJlKHQpP3QudG9WYWx1ZSgpOnR9ZnVuY3Rpb24gSWUoZSx0LG4scil7dmFyIG89ZS5zY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHMsaT1lLmNyZWF0ZVJlbmRlclN0YXRlLGE9ZS5vbk1vdW50LGw9e2xhdGVzdFZhbHVlczpIZSh0LG4scixvKSxyZW5kZXJTdGF0ZTppKCl9O3JldHVybiBhJiYobC5tb3VudD1mdW5jdGlvbihlKXtyZXR1cm4gYSh0LGUsbCl9KSxsfXZhciBUZT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgcj1vLnVzZUNvbnRleHQodyksaT1vLnVzZUNvbnRleHQoeCk7cmV0dXJuIG4/SWUoZSx0LHIsaSk6XygoZnVuY3Rpb24oKXtyZXR1cm4gSWUoZSx0LHIsaSl9KSl9fTtmdW5jdGlvbiBIZShlLHQsbixvKXt2YXIgaT17fSxhPSExPT09KG51bGw9PW4/dm9pZCAwOm4uaW5pdGlhbCksbD1vKGUpO2Zvcih2YXIgcyBpbiBsKWlbc109QWUobFtzXSk7dmFyIGM9ZS5pbml0aWFsLHU9ZS5hbmltYXRlLGY9VihlKSxkPUIoZSk7dCYmZCYmIWYmJiExIT09ZS5pbmhlcml0JiYobnVsbCE9Y3x8KGM9dC5pbml0aWFsKSxudWxsIT11fHwodT10LmFuaW1hdGUpKTt2YXIgcD1hfHwhMT09PWM/dTpjO3JldHVybiBwJiZcImJvb2xlYW5cIiE9dHlwZW9mIHAmJiFqZShwKSYmKEFycmF5LmlzQXJyYXkocCk/cDpbcF0pLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPVQoZSx0KTtpZihuKXt2YXIgbz1uLnRyYW5zaXRpb25FbmQ7bi50cmFuc2l0aW9uO3ZhciBhPXIuX19yZXN0KG4sW1widHJhbnNpdGlvbkVuZFwiLFwidHJhbnNpdGlvblwiXSk7Zm9yKHZhciBsIGluIGEpaVtsXT1hW2xdO2Zvcih2YXIgbCBpbiBvKWlbbF09b1tsXX19KSksaX12YXIgVmUsQmU9e3VzZVZpc3VhbFN0YXRlOlRlKHtzY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM6TWUsY3JlYXRlUmVuZGVyU3RhdGU6eWUsb25Nb3VudDpmdW5jdGlvbihlLHQsbil7dmFyIHI9bi5yZW5kZXJTdGF0ZSxvPW4ubGF0ZXN0VmFsdWVzO3RyeXtyLmRpbWVuc2lvbnM9XCJmdW5jdGlvblwiPT10eXBlb2YgdC5nZXRCQm94P3QuZ2V0QkJveCgpOnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2goZSl7ci5kaW1lbnNpb25zPXt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9fVwicGF0aFwiPT09dC50YWdOYW1lJiYoci50b3RhbFBhdGhMZW5ndGg9dC5nZXRUb3RhbExlbmd0aCgpKSxtZShyLG8sdm9pZCAwLHZvaWQgMCx7ZW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRpb246ITF9LGUudHJhbnNmb3JtVGVtcGxhdGUpLEVlKHQscil9fSl9LERlPXt1c2VWaXN1YWxTdGF0ZTpUZSh7c2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzOlNlLGNyZWF0ZVJlbmRlclN0YXRlOmxlfSl9O2Z1bmN0aW9uIFplKGUsdCxuLG8pe3ZhciBpPXQuZm9yd2FyZE1vdGlvblByb3BzLGE9dm9pZCAwIT09aSYmaSxsPU4oZSk/QmU6RGU7cmV0dXJuIHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxsKSx7cHJlbG9hZGVkRmVhdHVyZXM6bix1c2VSZW5kZXI6YmUoYSksY3JlYXRlVmlzdWFsRWxlbWVudDpvLENvbXBvbmVudDplfSl9ZnVuY3Rpb24gJGUoZSx0LG4scil7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sciksZnVuY3Rpb24oKXtyZXR1cm4gZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbixyKX19ZnVuY3Rpb24gRmUoZSx0LG4scil7by51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7dmFyIG89ZS5jdXJyZW50O2lmKG4mJm8pcmV0dXJuICRlKG8sdCxuLHIpfSksW2UsdCxuLHJdKX1mdW5jdGlvbiBOZShlKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgUG9pbnRlckV2ZW50JiZlIGluc3RhbmNlb2YgUG9pbnRlckV2ZW50PyEoXCJtb3VzZVwiIT09ZS5wb2ludGVyVHlwZSk6ZSBpbnN0YW5jZW9mIE1vdXNlRXZlbnR9ZnVuY3Rpb24gVWUoZSl7cmV0dXJuISFlLnRvdWNoZXN9IWZ1bmN0aW9uKGUpe2UuQW5pbWF0ZT1cImFuaW1hdGVcIixlLkhvdmVyPVwid2hpbGVIb3ZlclwiLGUuVGFwPVwid2hpbGVUYXBcIixlLkRyYWc9XCJ3aGlsZURyYWdcIixlLkZvY3VzPVwid2hpbGVGb2N1c1wiLGUuRXhpdD1cImV4aXRcIn0oVmV8fChWZT17fSkpO3ZhciBXZT17cGFnZVg6MCxwYWdlWTowfTtmdW5jdGlvbiB6ZShlLHQpe3ZvaWQgMD09PXQmJih0PVwicGFnZVwiKTt2YXIgbj1lLnRvdWNoZXNbMF18fGUuY2hhbmdlZFRvdWNoZXNbMF18fFdlO3JldHVybnt4Om5bdCtcIlhcIl0seTpuW3QrXCJZXCJdfX1mdW5jdGlvbiBHZShlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1cInBhZ2VcIikse3g6ZVt0K1wiWFwiXSx5OmVbdCtcIllcIl19fWZ1bmN0aW9uIHFlKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PVwicGFnZVwiKSx7cG9pbnQ6VWUoZSk/emUoZSx0KTpHZShlLHQpfX12YXIgWWU9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0hMSk7dmFyIG4scj1mdW5jdGlvbih0KXtyZXR1cm4gZSh0LHFlKHQpKX07cmV0dXJuIHQ/KG49cixmdW5jdGlvbihlKXt2YXIgdD1lIGluc3RhbmNlb2YgTW91c2VFdmVudDsoIXR8fHQmJjA9PT1lLmJ1dHRvbikmJm4oZSl9KTpyfSxLZT1mdW5jdGlvbigpe3JldHVybiBrJiZudWxsPT09d2luZG93Lm9ucG9pbnRlcmRvd259LFhlPWZ1bmN0aW9uKCl7cmV0dXJuIGsmJm51bGw9PT13aW5kb3cub250b3VjaHN0YXJ0fSxKZT1mdW5jdGlvbigpe3JldHVybiBrJiZudWxsPT09d2luZG93Lm9ubW91c2Vkb3dufSxRZT17cG9pbnRlcmRvd246XCJtb3VzZWRvd25cIixwb2ludGVybW92ZTpcIm1vdXNlbW92ZVwiLHBvaW50ZXJ1cDpcIm1vdXNldXBcIixwb2ludGVyY2FuY2VsOlwibW91c2VjYW5jZWxcIixwb2ludGVyb3ZlcjpcIm1vdXNlb3ZlclwiLHBvaW50ZXJvdXQ6XCJtb3VzZW91dFwiLHBvaW50ZXJlbnRlcjpcIm1vdXNlZW50ZXJcIixwb2ludGVybGVhdmU6XCJtb3VzZWxlYXZlXCJ9LGV0PXtwb2ludGVyZG93bjpcInRvdWNoc3RhcnRcIixwb2ludGVybW92ZTpcInRvdWNobW92ZVwiLHBvaW50ZXJ1cDpcInRvdWNoZW5kXCIscG9pbnRlcmNhbmNlbDpcInRvdWNoY2FuY2VsXCJ9O2Z1bmN0aW9uIHR0KGUpe3JldHVybiBLZSgpP2U6WGUoKT9ldFtlXTpKZSgpP1FlW2VdOmV9ZnVuY3Rpb24gbnQoZSx0LG4scil7cmV0dXJuICRlKGUsdHQodCksWWUobixcInBvaW50ZXJkb3duXCI9PT10KSxyKX1mdW5jdGlvbiBydChlLHQsbixyKXtyZXR1cm4gRmUoZSx0dCh0KSxuJiZZZShuLFwicG9pbnRlcmRvd25cIj09PXQpLHIpfWZ1bmN0aW9uIG90KGUpe3ZhciB0PW51bGw7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PT10JiYodD1lLGZ1bmN0aW9uKCl7dD1udWxsfSl9fXZhciBpdD1vdChcImRyYWdIb3Jpem9udGFsXCIpLGF0PW90KFwiZHJhZ1ZlcnRpY2FsXCIpO2Z1bmN0aW9uIGx0KGUpe3ZhciB0PSExO2lmKFwieVwiPT09ZSl0PWF0KCk7ZWxzZSBpZihcInhcIj09PWUpdD1pdCgpO2Vsc2V7dmFyIG49aXQoKSxyPWF0KCk7biYmcj90PWZ1bmN0aW9uKCl7bigpLHIoKX06KG4mJm4oKSxyJiZyKCkpfXJldHVybiB0fWZ1bmN0aW9uIHN0KCl7dmFyIGU9bHQoITApO3JldHVybiFlfHwoZSgpLCExKX1mdW5jdGlvbiBjdChlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIsbyl7dmFyIGk7TmUocikmJiFzdCgpJiYobnVsbD09bnx8bihyLG8pLG51bGw9PT0oaT1lLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09aXx8aS5zZXRBY3RpdmUoVmUuSG92ZXIsdCkpfX12YXIgdXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hIXQmJihlPT09dHx8dXQoZSx0LnBhcmVudEVsZW1lbnQpKX07ZnVuY3Rpb24gZnQoZSl7cmV0dXJuIG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlKCl9fSksW10pfXZhciBkdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUodCksbnVsbH19LHB0PXt0YXA6ZHQoKGZ1bmN0aW9uKGUpe3ZhciB0PWUub25UYXAsbj1lLm9uVGFwU3RhcnQscj1lLm9uVGFwQ2FuY2VsLGk9ZS53aGlsZVRhcCxhPWUudmlzdWFsRWxlbWVudCxzPXR8fG58fHJ8fGksYz1vLnVzZVJlZighMSksdT1vLnVzZVJlZihudWxsKTtmdW5jdGlvbiBmKCl7dmFyIGU7bnVsbD09PShlPXUuY3VycmVudCl8fHZvaWQgMD09PWV8fGUuY2FsbCh1KSx1LmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiBkKCl7dmFyIGU7cmV0dXJuIGYoKSxjLmN1cnJlbnQ9ITEsbnVsbD09PShlPWEuYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1lfHxlLnNldEFjdGl2ZShWZS5UYXAsITEpLCFzdCgpfWZ1bmN0aW9uIHAoZSxuKXtkKCkmJih1dChhLmdldEluc3RhbmNlKCksZS50YXJnZXQpP251bGw9PXR8fHQoZSxuKTpudWxsPT1yfHxyKGUsbikpfWZ1bmN0aW9uIGgoZSx0KXtkKCkmJihudWxsPT1yfHxyKGUsdCkpfXJ0KGEsXCJwb2ludGVyZG93blwiLHM/ZnVuY3Rpb24oZSx0KXt2YXIgcjtmKCksYy5jdXJyZW50fHwoYy5jdXJyZW50PSEwLHUuY3VycmVudD1sLnBpcGUobnQod2luZG93LFwicG9pbnRlcnVwXCIscCksbnQod2luZG93LFwicG9pbnRlcmNhbmNlbFwiLGgpKSxudWxsPT1ufHxuKGUsdCksbnVsbD09PShyPWEuYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1yfHxyLnNldEFjdGl2ZShWZS5UYXAsITApKX06dm9pZCAwKSxmdChmKX0pKSxmb2N1czpkdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS53aGlsZUZvY3VzLG49ZS52aXN1YWxFbGVtZW50O0ZlKG4sXCJmb2N1c1wiLHQ/ZnVuY3Rpb24oKXt2YXIgZTtudWxsPT09KGU9bi5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PWV8fGUuc2V0QWN0aXZlKFZlLkZvY3VzLCEwKX06dm9pZCAwKSxGZShuLFwiYmx1clwiLHQ/ZnVuY3Rpb24oKXt2YXIgZTtudWxsPT09KGU9bi5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PWV8fGUuc2V0QWN0aXZlKFZlLkZvY3VzLCExKX06dm9pZCAwKX0pKSxob3ZlcjpkdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vbkhvdmVyU3RhcnQsbj1lLm9uSG92ZXJFbmQscj1lLndoaWxlSG92ZXIsbz1lLnZpc3VhbEVsZW1lbnQ7cnQobyxcInBvaW50ZXJlbnRlclwiLHR8fHI/Y3QobywhMCx0KTp2b2lkIDApLHJ0KG8sXCJwb2ludGVybGVhdmVcIixufHxyP2N0KG8sITEsbik6dm9pZCAwKX0pKX07ZnVuY3Rpb24gaHQoZSx0KXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4hMTt2YXIgbj10Lmxlbmd0aDtpZihuIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciByPTA7cjxuO3IrKylpZih0W3JdIT09ZVtyXSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgdnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIDFlMyplfSxndD17bGluZWFyOmwubGluZWFyLGVhc2VJbjpsLmVhc2VJbixlYXNlSW5PdXQ6bC5lYXNlSW5PdXQsZWFzZU91dDpsLmVhc2VPdXQsY2lyY0luOmwuY2lyY0luLGNpcmNJbk91dDpsLmNpcmNJbk91dCxjaXJjT3V0OmwuY2lyY091dCxiYWNrSW46bC5iYWNrSW4sYmFja0luT3V0OmwuYmFja0luT3V0LGJhY2tPdXQ6bC5iYWNrT3V0LGFudGljaXBhdGU6bC5hbnRpY2lwYXRlLGJvdW5jZUluOmwuYm91bmNlSW4sYm91bmNlSW5PdXQ6bC5ib3VuY2VJbk91dCxib3VuY2VPdXQ6bC5ib3VuY2VPdXR9LEN0PWZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2kuaW52YXJpYW50KDQ9PT1lLmxlbmd0aCxcIkN1YmljIGJlemllciBhcnJheXMgbXVzdCBjb250YWluIGZvdXIgbnVtZXJpY2FsIHZhbHVlcy5cIik7dmFyIHQ9ci5fX3JlYWQoZSw0KSxuPXRbMF0sbz10WzFdLGE9dFsyXSxzPXRbM107cmV0dXJuIGwuY3ViaWNCZXppZXIobixvLGEscyl9cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/KGkuaW52YXJpYW50KHZvaWQgMCE9PWd0W2VdLFwiSW52YWxpZCBlYXNpbmcgdHlwZSAnXCIrZStcIidcIiksZ3RbZV0pOmV9LG10PWZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiZcIm51bWJlclwiIT10eXBlb2YgZVswXX0seXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hKFwiekluZGV4XCI9PT1lfHxcIm51bWJlclwiIT10eXBlb2YgdCYmIUFycmF5LmlzQXJyYXkodCkmJihcInN0cmluZ1wiIT10eXBlb2YgdHx8IWEuY29tcGxleC50ZXN0KHQpfHx0LnN0YXJ0c1dpdGgoXCJ1cmwoXCIpKSl9LHd0PWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6XCJzcHJpbmdcIixzdGlmZm5lc3M6NTAwLGRhbXBpbmc6MjUscmVzdERlbHRhOi41LHJlc3RTcGVlZDoxMH19LGJ0PWZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOlwic3ByaW5nXCIsc3RpZmZuZXNzOjU1MCxkYW1waW5nOjA9PT1lPzIqTWF0aC5zcXJ0KDU1MCk6MzAscmVzdERlbHRhOi4wMSxyZXN0U3BlZWQ6MTB9fSx4dD1mdW5jdGlvbigpe3JldHVybnt0eXBlOlwia2V5ZnJhbWVzXCIsZWFzZTpcImxpbmVhclwiLGR1cmF0aW9uOi4zfX0sX3Q9ZnVuY3Rpb24oZSl7cmV0dXJue3R5cGU6XCJrZXlmcmFtZXNcIixkdXJhdGlvbjouOCx2YWx1ZXM6ZX19LEx0PXt4Ond0LHk6d3Qsejp3dCxyb3RhdGU6d3Qscm90YXRlWDp3dCxyb3RhdGVZOnd0LHJvdGF0ZVo6d3Qsc2NhbGVYOmJ0LHNjYWxlWTpidCxzY2FsZTpidCxvcGFjaXR5Onh0LGJhY2tncm91bmRDb2xvcjp4dCxjb2xvcjp4dCxkZWZhdWx0OmJ0fSxPdD1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBuPWtlKHQpP190Okx0W2VdfHxMdC5kZWZhdWx0LHIuX19hc3NpZ24oe3RvOnR9LG4odCkpfSxFdD1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30saWUpLHtjb2xvcjphLmNvbG9yLGJhY2tncm91bmRDb2xvcjphLmNvbG9yLG91dGxpbmVDb2xvcjphLmNvbG9yLGZpbGw6YS5jb2xvcixzdHJva2U6YS5jb2xvcixib3JkZXJDb2xvcjphLmNvbG9yLGJvcmRlclRvcENvbG9yOmEuY29sb3IsYm9yZGVyUmlnaHRDb2xvcjphLmNvbG9yLGJvcmRlckJvdHRvbUNvbG9yOmEuY29sb3IsYm9yZGVyTGVmdENvbG9yOmEuY29sb3IsZmlsdGVyOmEuZmlsdGVyLFdlYmtpdEZpbHRlcjphLmZpbHRlcn0pLFN0PWZ1bmN0aW9uKGUpe3JldHVybiBFdFtlXX07ZnVuY3Rpb24gTXQoZSx0KXt2YXIgbixyPVN0KGUpO3JldHVybiByIT09YS5maWx0ZXImJihyPWEuY29tcGxleCksbnVsbD09PShuPXIuZ2V0QW5pbWF0YWJsZU5vbmUpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmNhbGwocix0KX12YXIganQ9ITE7ZnVuY3Rpb24ga3QoZSl7cmV0dXJuIDA9PT1lfHxcInN0cmluZ1wiPT10eXBlb2YgZSYmMD09PXBhcnNlRmxvYXQoZSkmJi0xPT09ZS5pbmRleE9mKFwiIFwiKX1mdW5jdGlvbiBSdChlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT8wOk10KFwiXCIsZSl9ZnVuY3Rpb24gUHQoZSx0KXtyZXR1cm4gZVt0XXx8ZS5kZWZhdWx0fHxlfWZ1bmN0aW9uIEF0KGUsdCxuLG8pe3JldHVybiB2b2lkIDA9PT1vJiYobz17fSksdC5zdGFydCgoZnVuY3Rpb24oYSl7dmFyIHMsYyx1PWZ1bmN0aW9uKGUsdCxuLG8sYSl7dmFyIHMsYz1QdChvLGUpLHU9bnVsbCE9PShzPWMuZnJvbSkmJnZvaWQgMCE9PXM/czp0LmdldCgpLGY9eXQoZSxuKTtcIm5vbmVcIj09PXUmJmYmJlwic3RyaW5nXCI9PXR5cGVvZiBuP3U9TXQoZSxuKTprdCh1KSYmXCJzdHJpbmdcIj09dHlwZW9mIG4/dT1SdChuKTohQXJyYXkuaXNBcnJheShuKSYma3QobikmJlwic3RyaW5nXCI9PXR5cGVvZiB1JiYobj1SdCh1KSk7dmFyIGQ9eXQoZSx1KTtyZXR1cm4gaS53YXJuaW5nKGQ9PT1mLFwiWW91IGFyZSB0cnlpbmcgdG8gYW5pbWF0ZSBcIitlKycgZnJvbSBcIicrdSsnXCIgdG8gXCInK24rJ1wiLiAnK3UrXCIgaXMgbm90IGFuIGFuaW1hdGFibGUgdmFsdWUgLSB0byBlbmFibGUgdGhpcyBhbmltYXRpb24gc2V0IFwiK3UrXCIgdG8gYSB2YWx1ZSBhbmltYXRhYmxlIHRvIFwiK24rXCIgdmlhIHRoZSBgc3R5bGVgIHByb3BlcnR5LlwiKSxkJiZmJiYhMSE9PWMudHlwZT9mdW5jdGlvbigpe3ZhciBvPXtmcm9tOnUsdG86bix2ZWxvY2l0eTp0LmdldFZlbG9jaXR5KCksb25Db21wbGV0ZTphLG9uVXBkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiB0LnNldChlKX19O3JldHVyblwiaW5lcnRpYVwiPT09Yy50eXBlfHxcImRlY2F5XCI9PT1jLnR5cGU/bC5pbmVydGlhKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxvKSxjKSk6bC5hbmltYXRlKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxmdW5jdGlvbihlLHQsbil7dmFyIG87cmV0dXJuIEFycmF5LmlzQXJyYXkodC50bykmJihudWxsIT09KG89ZS5kdXJhdGlvbikmJnZvaWQgMCE9PW98fChlLmR1cmF0aW9uPS44KSksZnVuY3Rpb24oZSl7QXJyYXkuaXNBcnJheShlLnRvKSYmbnVsbD09PWUudG9bMF0mJihlLnRvPXIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZChlLnRvKSksZS50b1swXT1lLmZyb20pfSh0KSxmdW5jdGlvbihlKXtlLndoZW4sZS5kZWxheSxlLmRlbGF5Q2hpbGRyZW4sZS5zdGFnZ2VyQ2hpbGRyZW4sZS5zdGFnZ2VyRGlyZWN0aW9uLGUucmVwZWF0LGUucmVwZWF0VHlwZSxlLnJlcGVhdERlbGF5LGUuZnJvbTt2YXIgdD1yLl9fcmVzdChlLFtcIndoZW5cIixcImRlbGF5XCIsXCJkZWxheUNoaWxkcmVuXCIsXCJzdGFnZ2VyQ2hpbGRyZW5cIixcInN0YWdnZXJEaXJlY3Rpb25cIixcInJlcGVhdFwiLFwicmVwZWF0VHlwZVwiLFwicmVwZWF0RGVsYXlcIixcImZyb21cIl0pO3JldHVybiEhT2JqZWN0LmtleXModCkubGVuZ3RofShlKXx8KGU9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGUpLE90KG4sdC50bykpKSxyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdCksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5lYXNlLG49ZS50aW1lcyxvPWUueW95byxhPWUuZmxpcCxsPWUubG9vcCxzPXIuX19yZXN0KGUsW1wiZWFzZVwiLFwidGltZXNcIixcInlveW9cIixcImZsaXBcIixcImxvb3BcIl0pLGM9ci5fX2Fzc2lnbih7fSxzKTtyZXR1cm4gbiYmKGMub2Zmc2V0PW4pLHMuZHVyYXRpb24mJihjLmR1cmF0aW9uPXZ0KHMuZHVyYXRpb24pKSxzLnJlcGVhdERlbGF5JiYoYy5yZXBlYXREZWxheT12dChzLnJlcGVhdERlbGF5KSksdCYmKGMuZWFzZT1tdCh0KT90Lm1hcChDdCk6Q3QodCkpLFwidHdlZW5cIj09PXMudHlwZSYmKGMudHlwZT1cImtleWZyYW1lc1wiKSwob3x8bHx8YSkmJihpLndhcm5pbmcoIWp0LFwieW95bywgbG9vcCBhbmQgZmxpcCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBBUEkuIFJlcGxhY2Ugd2l0aCByZXBlYXQgYW5kIHJlcGVhdFR5cGUgb3B0aW9ucy5cIiksanQ9ITAsbz9jLnJlcGVhdFR5cGU9XCJyZXZlcnNlXCI6bD9jLnJlcGVhdFR5cGU9XCJsb29wXCI6YSYmKGMucmVwZWF0VHlwZT1cIm1pcnJvclwiKSxjLnJlcGVhdD1sfHxvfHxhfHxzLnJlcGVhdCksXCJzcHJpbmdcIiE9PXMudHlwZSYmKGMudHlwZT1cImtleWZyYW1lc1wiKSxjfShlKSl9KGMsbyxlKSkse29uVXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0O28ub25VcGRhdGUoZSksbnVsbD09PSh0PWMub25VcGRhdGUpfHx2b2lkIDA9PT10fHx0LmNhbGwoYyxlKX0sb25Db21wbGV0ZTpmdW5jdGlvbigpe3ZhciBlO28ub25Db21wbGV0ZSgpLG51bGw9PT0oZT1jLm9uQ29tcGxldGUpfHx2b2lkIDA9PT1lfHxlLmNhbGwoYyl9fSkpfTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiB0LnNldChuKSxhKCksbnVsbD09PShlPW51bGw9PWM/dm9pZCAwOmMub25Db21wbGV0ZSl8fHZvaWQgMD09PWV8fGUuY2FsbChjKSx7c3RvcDpmdW5jdGlvbigpe319fX0oZSx0LG4sbyxhKSxmPWZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIG51bGwhPT0obj0oUHQoZSx0KXx8e30pLmRlbGF5KSYmdm9pZCAwIT09bj9uOjB9KG8sZSksZD1mdW5jdGlvbigpe3JldHVybiBjPXUoKX07cmV0dXJuIGY/cz1zZXRUaW1lb3V0KGQsdnQoZikpOmQoKSxmdW5jdGlvbigpe2NsZWFyVGltZW91dChzKSxudWxsPT1jfHxjLnN0b3AoKX19KSl9ZnVuY3Rpb24gSXQoZSx0KXstMT09PWUuaW5kZXhPZih0KSYmZS5wdXNoKHQpfWZ1bmN0aW9uIFR0KGUsdCl7dmFyIG49ZS5pbmRleE9mKHQpO24+LTEmJmUuc3BsaWNlKG4sMSl9dmFyIEh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuc3Vic2NyaXB0aW9ucz1bXX1yZXR1cm4gZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIEl0KHRoaXMuc3Vic2NyaXB0aW9ucyxlKSxmdW5jdGlvbigpe3JldHVybiBUdCh0LnN1YnNjcmlwdGlvbnMsZSl9fSxlLnByb3RvdHlwZS5ub3RpZnk9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuc3Vic2NyaXB0aW9ucy5sZW5ndGg7aWYocilpZigxPT09cil0aGlzLnN1YnNjcmlwdGlvbnNbMF0oZSx0LG4pO2Vsc2UgZm9yKHZhciBvPTA7bzxyO28rKyl7dmFyIGk9dGhpcy5zdWJzY3JpcHRpb25zW29dO2kmJmkoZSx0LG4pfX0sZS5wcm90b3R5cGUuZ2V0U2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN1YnNjcmlwdGlvbnMubGVuZ3RofSxlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc3Vic2NyaXB0aW9ucy5sZW5ndGg9MH0sZX0oKSxWdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQsbj10aGlzO3RoaXMudGltZURlbHRhPTAsdGhpcy5sYXN0VXBkYXRlZD0wLHRoaXMudXBkYXRlU3Vic2NyaWJlcnM9bmV3IEh0LHRoaXMudmVsb2NpdHlVcGRhdGVTdWJzY3JpYmVycz1uZXcgSHQsdGhpcy5yZW5kZXJTdWJzY3JpYmVycz1uZXcgSHQsdGhpcy5jYW5UcmFja1ZlbG9jaXR5PSExLHRoaXMudXBkYXRlQW5kTm90aWZ5PWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITApLG4ucHJldj1uLmN1cnJlbnQsbi5jdXJyZW50PWU7dmFyIHI9cy5nZXRGcmFtZURhdGEoKSxvPXIuZGVsdGEsaT1yLnRpbWVzdGFtcDtuLmxhc3RVcGRhdGVkIT09aSYmKG4udGltZURlbHRhPW8sbi5sYXN0VXBkYXRlZD1pLGQuZGVmYXVsdC5wb3N0UmVuZGVyKG4uc2NoZWR1bGVWZWxvY2l0eUNoZWNrKSksbi5wcmV2IT09bi5jdXJyZW50JiZuLnVwZGF0ZVN1YnNjcmliZXJzLm5vdGlmeShuLmN1cnJlbnQpLG4udmVsb2NpdHlVcGRhdGVTdWJzY3JpYmVycy5nZXRTaXplKCkmJm4udmVsb2NpdHlVcGRhdGVTdWJzY3JpYmVycy5ub3RpZnkobi5nZXRWZWxvY2l0eSgpKSx0JiZuLnJlbmRlclN1YnNjcmliZXJzLm5vdGlmeShuLmN1cnJlbnQpfSx0aGlzLnNjaGVkdWxlVmVsb2NpdHlDaGVjaz1mdW5jdGlvbigpe3JldHVybiBkLmRlZmF1bHQucG9zdFJlbmRlcihuLnZlbG9jaXR5Q2hlY2spfSx0aGlzLnZlbG9jaXR5Q2hlY2s9ZnVuY3Rpb24oZSl7ZS50aW1lc3RhbXAhPT1uLmxhc3RVcGRhdGVkJiYobi5wcmV2PW4uY3VycmVudCxuLnZlbG9jaXR5VXBkYXRlU3Vic2NyaWJlcnMubm90aWZ5KG4uZ2V0VmVsb2NpdHkoKSkpfSx0aGlzLmhhc0FuaW1hdGVkPSExLHRoaXMucHJldj10aGlzLmN1cnJlbnQ9ZSx0aGlzLmNhblRyYWNrVmVsb2NpdHk9KHQ9dGhpcy5jdXJyZW50LCFpc05hTihwYXJzZUZsb2F0KHQpKSl9cmV0dXJuIGUucHJvdG90eXBlLm9uQ2hhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnVwZGF0ZVN1YnNjcmliZXJzLmFkZChlKX0sZS5wcm90b3R5cGUuY2xlYXJMaXN0ZW5lcnM9ZnVuY3Rpb24oKXt0aGlzLnVwZGF0ZVN1YnNjcmliZXJzLmNsZWFyKCl9LGUucHJvdG90eXBlLm9uUmVuZGVyUmVxdWVzdD1mdW5jdGlvbihlKXtyZXR1cm4gZSh0aGlzLmdldCgpKSx0aGlzLnJlbmRlclN1YnNjcmliZXJzLmFkZChlKX0sZS5wcm90b3R5cGUuYXR0YWNoPWZ1bmN0aW9uKGUpe3RoaXMucGFzc2l2ZUVmZmVjdD1lfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0hMCksdCYmdGhpcy5wYXNzaXZlRWZmZWN0P3RoaXMucGFzc2l2ZUVmZmVjdChlLHRoaXMudXBkYXRlQW5kTm90aWZ5KTp0aGlzLnVwZGF0ZUFuZE5vdGlmeShlLHQpfSxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50fSxlLnByb3RvdHlwZS5nZXRQcmV2aW91cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZ9LGUucHJvdG90eXBlLmdldFZlbG9jaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FuVHJhY2tWZWxvY2l0eT9sLnZlbG9jaXR5UGVyU2Vjb25kKHBhcnNlRmxvYXQodGhpcy5jdXJyZW50KS1wYXJzZUZsb2F0KHRoaXMucHJldiksdGhpcy50aW1lRGVsdGEpOjB9LGUucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuc3RvcCgpLG5ldyBQcm9taXNlKChmdW5jdGlvbihuKXt0Lmhhc0FuaW1hdGVkPSEwLHQuc3RvcEFuaW1hdGlvbj1lKG4pfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHQuY2xlYXJBbmltYXRpb24oKX0pKX0sZS5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3RoaXMuc3RvcEFuaW1hdGlvbiYmdGhpcy5zdG9wQW5pbWF0aW9uKCksdGhpcy5jbGVhckFuaW1hdGlvbigpfSxlLnByb3RvdHlwZS5pc0FuaW1hdGluZz1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5zdG9wQW5pbWF0aW9ufSxlLnByb3RvdHlwZS5jbGVhckFuaW1hdGlvbj1mdW5jdGlvbigpe3RoaXMuc3RvcEFuaW1hdGlvbj1udWxsfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy51cGRhdGVTdWJzY3JpYmVycy5jbGVhcigpLHRoaXMucmVuZGVyU3Vic2NyaWJlcnMuY2xlYXIoKSx0aGlzLnN0b3AoKX0sZX0oKTtmdW5jdGlvbiBCdChlKXtyZXR1cm4gbmV3IFZ0KGUpfXZhciBEdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQudGVzdChlKX19LFp0PVthLm51bWJlcixhLnB4LGEucGVyY2VudCxhLmRlZ3JlZXMsYS52dyxhLnZoLHt0ZXN0OmZ1bmN0aW9uKGUpe3JldHVyblwiYXV0b1wiPT09ZX0scGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9fV0sJHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFp0LmZpbmQoRHQoZSkpfSxGdD1yLl9fc3ByZWFkQXJyYXkoci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKFp0KSksW2EuY29sb3IsYS5jb21wbGV4XSk7ZnVuY3Rpb24gTnQoZSx0LG4pe2UuaGFzVmFsdWUodCk/ZS5nZXRWYWx1ZSh0KS5zZXQobik6ZS5hZGRWYWx1ZSh0LEJ0KG4pKX1mdW5jdGlvbiBVdChlLHQpe3ZhciBuPUgoZSx0KSxvPW4/ZS5tYWtlVGFyZ2V0QW5pbWF0YWJsZShuLCExKTp7fSxpPW8udHJhbnNpdGlvbkVuZCxhPXZvaWQgMD09PWk/e306aTtvLnRyYW5zaXRpb247dmFyIGw9ci5fX3Jlc3QobyxbXCJ0cmFuc2l0aW9uRW5kXCIsXCJ0cmFuc2l0aW9uXCJdKTtmb3IodmFyIHMgaW4gbD1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbCksYSkpTnQoZSxzLFBlKGxbc10pKX1mdW5jdGlvbiBXdChlLHQpe3IuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZCh0KSkucmV2ZXJzZSgpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciByLG89ZS5nZXRWYXJpYW50KG4pO28mJlV0KGUsbyksbnVsbD09PShyPWUudmFyaWFudENoaWxkcmVuKXx8dm9pZCAwPT09cnx8ci5mb3JFYWNoKChmdW5jdGlvbihlKXtXdChlLHQpfSkpfSkpfWZ1bmN0aW9uIHp0KGUsdCxuKXt2YXIgcixvLGksbCxzLGM9T2JqZWN0LmtleXModCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hZS5oYXNWYWx1ZSh0KX0pKSx1PWMubGVuZ3RoO2lmKHUpZm9yKHZhciBmPTA7Zjx1O2YrKyl7dmFyIGQ9Y1tmXSxwPXRbZF0saD1udWxsO0FycmF5LmlzQXJyYXkocCkmJihoPXBbMF0pLG51bGw9PT1oJiYoaD1udWxsIT09KG89bnVsbCE9PShyPW5bZF0pJiZ2b2lkIDAhPT1yP3I6ZS5yZWFkVmFsdWUoZCkpJiZ2b2lkIDAhPT1vP286dFtkXSksbnVsbCE9aCYmKFwic3RyaW5nXCI9PXR5cGVvZiBoJiYvXlxcLT9cXGQqXFwuP1xcZCskLy50ZXN0KGgpP2g9cGFyc2VGbG9hdChoKToocz1oLCFGdC5maW5kKER0KHMpKSYmYS5jb21wbGV4LnRlc3QocCkmJihoPU10KGQscCkpKSxlLmFkZFZhbHVlKGQsQnQoaCkpLG51bGwhPT0oaT0obD1uKVtkXSkmJnZvaWQgMCE9PWl8fChsW2RdPWgpLGUuc2V0QmFzZVRhcmdldChkLGgpKX19ZnVuY3Rpb24gR3QoZSx0KXtpZih0KXJldHVybih0W2VdfHx0LmRlZmF1bHR8fHQpLmZyb219ZnVuY3Rpb24gcXQoZSx0LG4pe3ZhciByLG8saT17fTtmb3IodmFyIGEgaW4gZSlpW2FdPW51bGwhPT0ocj1HdChhLHQpKSYmdm9pZCAwIT09cj9yOm51bGw9PT0obz1uLmdldFZhbHVlKGEpKXx8dm9pZCAwPT09bz92b2lkIDA6by5nZXQoKTtyZXR1cm4gaX1mdW5jdGlvbiBZdChlLHQsbil7dmFyIHI7aWYodm9pZCAwPT09biYmKG49e30pLGUubm90aWZ5QW5pbWF0aW9uU3RhcnQoKSxBcnJheS5pc0FycmF5KHQpKXt2YXIgbz10Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIEt0KGUsdCxuKX0pKTtyPVByb21pc2UuYWxsKG8pfWVsc2UgaWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpcj1LdChlLHQsbik7ZWxzZXt2YXIgaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P0goZSx0LG4uY3VzdG9tKTp0O3I9WHQoZSxpLG4pfXJldHVybiByLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGUubm90aWZ5QW5pbWF0aW9uQ29tcGxldGUodCl9KSl9ZnVuY3Rpb24gS3QoZSx0LG4pe3ZhciBvO3ZvaWQgMD09PW4mJihuPXt9KTt2YXIgaT1IKGUsdCxuLmN1c3RvbSksYT0oaXx8e30pLnRyYW5zaXRpb24sbD12b2lkIDA9PT1hP2UuZ2V0RGVmYXVsdFRyYW5zaXRpb24oKXx8e306YTtuLnRyYW5zaXRpb25PdmVycmlkZSYmKGw9bi50cmFuc2l0aW9uT3ZlcnJpZGUpO3ZhciBzPWk/ZnVuY3Rpb24oKXtyZXR1cm4gWHQoZSxpLG4pfTpmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX0sYz0obnVsbD09PShvPWUudmFyaWFudENoaWxkcmVuKXx8dm9pZCAwPT09bz92b2lkIDA6by5zaXplKT9mdW5jdGlvbihvKXt2b2lkIDA9PT1vJiYobz0wKTt2YXIgaT1sLmRlbGF5Q2hpbGRyZW4sYT12b2lkIDA9PT1pPzA6aSxzPWwuc3RhZ2dlckNoaWxkcmVuLGM9bC5zdGFnZ2VyRGlyZWN0aW9uO3JldHVybiBmdW5jdGlvbihlLHQsbixvLGksYSl7dm9pZCAwPT09biYmKG49MCksdm9pZCAwPT09byYmKG89MCksdm9pZCAwPT09aSYmKGk9MSk7dmFyIGw9W10scz0oZS52YXJpYW50Q2hpbGRyZW4uc2l6ZS0xKSpvLGM9MT09PWk/ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPTApLGUqb306ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPTApLHMtZSpvfTtyZXR1cm4gQXJyYXkuZnJvbShlLnZhcmlhbnRDaGlsZHJlbikuc29ydChKdCkuZm9yRWFjaCgoZnVuY3Rpb24oZSxvKXtsLnB1c2goS3QoZSx0LHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxhKSx7ZGVsYXk6bitjKG8pfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGUubm90aWZ5QW5pbWF0aW9uQ29tcGxldGUodCl9KSkpfSkpLFByb21pc2UuYWxsKGwpfShlLHQsYStvLHMsYyxuKX06ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LHU9bC53aGVuO2lmKHUpe3ZhciBmPXIuX19yZWFkKFwiYmVmb3JlQ2hpbGRyZW5cIj09PXU/W3MsY106W2Msc10sMiksZD1mWzBdLHA9ZlsxXTtyZXR1cm4gZCgpLnRoZW4ocCl9cmV0dXJuIFByb21pc2UuYWxsKFtzKCksYyhuLmRlbGF5KV0pfWZ1bmN0aW9uIFh0KGUsdCxuKXt2YXIgbyxpPXZvaWQgMD09PW4/e306bixhPWkuZGVsYXksbD12b2lkIDA9PT1hPzA6YSxzPWkudHJhbnNpdGlvbk92ZXJyaWRlLGM9aS50eXBlLHU9ZS5tYWtlVGFyZ2V0QW5pbWF0YWJsZSh0KSxmPXUudHJhbnNpdGlvbixkPXZvaWQgMD09PWY/ZS5nZXREZWZhdWx0VHJhbnNpdGlvbigpOmYscD11LnRyYW5zaXRpb25FbmQsaD1yLl9fcmVzdCh1LFtcInRyYW5zaXRpb25cIixcInRyYW5zaXRpb25FbmRcIl0pO3MmJihkPXMpO3ZhciB2PVtdLGc9YyYmKG51bGw9PT0obz1lLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09bz92b2lkIDA6by5nZXRTdGF0ZSgpW2NdKTtmb3IodmFyIEMgaW4gaCl7dmFyIG09ZS5nZXRWYWx1ZShDKSx5PWhbQ107aWYoISghbXx8dm9pZCAwPT09eXx8ZyYmUXQoZyxDKSkpe3ZhciB3PUF0KEMsbSx5LHIuX19hc3NpZ24oe2RlbGF5Omx9LGQpKTt2LnB1c2godyl9fXJldHVybiBQcm9taXNlLmFsbCh2KS50aGVuKChmdW5jdGlvbigpe3AmJlV0KGUscCl9KSl9ZnVuY3Rpb24gSnQoZSx0KXtyZXR1cm4gZS5zb3J0Tm9kZVBvc2l0aW9uKHQpfWZ1bmN0aW9uIFF0KGUsdCl7dmFyIG49ZS5wcm90ZWN0ZWRLZXlzLHI9ZS5uZWVkc0FuaW1hdGluZyxvPW4uaGFzT3duUHJvcGVydHkodCkmJiEwIT09clt0XTtyZXR1cm4gclt0XT0hMSxvfXZhciBlbj1bVmUuQW5pbWF0ZSxWZS5Ib3ZlcixWZS5UYXAsVmUuRHJhZyxWZS5Gb2N1cyxWZS5FeGl0XSx0bj1yLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQoZW4pKS5yZXZlcnNlKCksbm49ZW4ubGVuZ3RoO2Z1bmN0aW9uIHJuKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSkse2lzQWN0aXZlOmUscHJvdGVjdGVkS2V5czp7fSxuZWVkc0FuaW1hdGluZzp7fSxwcmV2UmVzb2x2ZWRWYWx1ZXM6e319fXZhciBvbj17YW5pbWF0aW9uOmR0KChmdW5jdGlvbihlKXt2YXIgdD1lLnZpc3VhbEVsZW1lbnQsbj1lLmFuaW1hdGU7dC5hbmltYXRpb25TdGF0ZXx8KHQuYW5pbWF0aW9uU3RhdGU9ZnVuY3Rpb24oZSl7dmFyIHQsbj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIFByb21pc2UuYWxsKHQubWFwKChmdW5jdGlvbih0KXt2YXIgbj10LmFuaW1hdGlvbixyPXQub3B0aW9ucztyZXR1cm4gWXQoZSxuLHIpfSkpKX19KGUpLG89KCh0PXt9KVtWZS5BbmltYXRlXT1ybighMCksdFtWZS5Ib3Zlcl09cm4oKSx0W1ZlLlRhcF09cm4oKSx0W1ZlLkRyYWddPXJuKCksdFtWZS5Gb2N1c109cm4oKSx0W1ZlLkV4aXRdPXJuKCksdCksaT17fSxhPSEwLGw9ZnVuY3Rpb24odCxuKXt2YXIgbz1IKGUsbik7aWYobyl7by50cmFuc2l0aW9uO3ZhciBpPW8udHJhbnNpdGlvbkVuZCxhPXIuX19yZXN0KG8sW1widHJhbnNpdGlvblwiLFwidHJhbnNpdGlvbkVuZFwiXSk7dD1yLl9fYXNzaWduKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSx0KSxhKSxpKX1yZXR1cm4gdH07ZnVuY3Rpb24gcyh0LHMpe2Zvcih2YXIgYyx1PWUuZ2V0UHJvcHMoKSxmPWUuZ2V0VmFyaWFudENvbnRleHQoITApfHx7fSxkPVtdLHA9bmV3IFNldCxoPXt9LHY9MS8wLGc9ZnVuY3Rpb24obil7dmFyIGk9dG5bbl0sZz1vW2ldLEM9bnVsbCE9PShjPXVbaV0pJiZ2b2lkIDAhPT1jP2M6ZltpXSxtPUkoQykseT1pPT09cz9nLmlzQWN0aXZlOm51bGw7ITE9PT15JiYodj1uKTt2YXIgdz1DPT09ZltpXSYmQyE9PXVbaV0mJm07aWYodyYmYSYmZS5tYW51YWxseUFuaW1hdGVPbk1vdW50JiYodz0hMSksZy5wcm90ZWN0ZWRLZXlzPXIuX19hc3NpZ24oe30saCksIWcuaXNBY3RpdmUmJm51bGw9PT15fHwhQyYmIWcucHJldlByb3B8fGplKEMpfHxcImJvb2xlYW5cIj09dHlwZW9mIEMpcmV0dXJuXCJjb250aW51ZVwiO3ZhciBiPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/dCE9PWU6ISFBKHQpJiYhaHQodCxlKX0oZy5wcmV2UHJvcCxDKXx8aT09PXMmJmcuaXNBY3RpdmUmJiF3JiZtfHxuPnYmJm0seD1BcnJheS5pc0FycmF5KEMpP0M6W0NdLF89eC5yZWR1Y2UobCx7fSk7ITE9PT15JiYoXz17fSk7dmFyIEw9Zy5wcmV2UmVzb2x2ZWRWYWx1ZXMsTz12b2lkIDA9PT1MP3t9OkwsRT1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sTyksXyksUz1mdW5jdGlvbihlKXtiPSEwLHAuZGVsZXRlKGUpLGcubmVlZHNBbmltYXRpbmdbZV09ITB9O2Zvcih2YXIgTSBpbiBFKXt2YXIgaj1fW01dLGs9T1tNXTtoLmhhc093blByb3BlcnR5KE0pfHwoaiE9PWs/a2UoaikmJmtlKGspP2h0KGosayk/Zy5wcm90ZWN0ZWRLZXlzW01dPSEwOlMoTSk6dm9pZCAwIT09aj9TKE0pOnAuYWRkKE0pOnZvaWQgMCE9PWomJnAuaGFzKE0pP1MoTSk6Zy5wcm90ZWN0ZWRLZXlzW01dPSEwKX1nLnByZXZQcm9wPUMsZy5wcmV2UmVzb2x2ZWRWYWx1ZXM9XyxnLmlzQWN0aXZlJiYoaD1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30saCksXykpLGEmJmUuYmxvY2tJbml0aWFsQW5pbWF0aW9uJiYoYj0hMSksYiYmIXcmJmQucHVzaC5hcHBseShkLHIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZCh4Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJue2FuaW1hdGlvbjplLG9wdGlvbnM6ci5fX2Fzc2lnbih7dHlwZTppfSx0KX19KSkpKSl9LEM9MDtDPG5uO0MrKylnKEMpO2lmKGk9ci5fX2Fzc2lnbih7fSxoKSxwLnNpemUpe3ZhciBtPXt9O3AuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49ZS5nZXRCYXNlVGFyZ2V0KHQpO3ZvaWQgMCE9PW4mJihtW3RdPW4pfSkpLGQucHVzaCh7YW5pbWF0aW9uOm19KX12YXIgeT1Cb29sZWFuKGQubGVuZ3RoKTtyZXR1cm4gYSYmITE9PT11LmluaXRpYWwmJiFlLm1hbnVhbGx5QW5pbWF0ZU9uTW91bnQmJih5PSExKSxhPSExLHk/bihkKTpQcm9taXNlLnJlc29sdmUoKX1yZXR1cm57aXNBbmltYXRlZDpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09aVtlXX0sYW5pbWF0ZUNoYW5nZXM6cyxzZXRBY3RpdmU6ZnVuY3Rpb24odCxuLHIpe3ZhciBpO3JldHVybiBvW3RdLmlzQWN0aXZlPT09bj9Qcm9taXNlLnJlc29sdmUoKToobnVsbD09PShpPWUudmFyaWFudENoaWxkcmVuKXx8dm9pZCAwPT09aXx8aS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcjtyZXR1cm4gbnVsbD09PShyPWUuYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnNldEFjdGl2ZSh0LG4pfSkpLG9bdF0uaXNBY3RpdmU9bixzKHIsdCkpfSxzZXRBbmltYXRlRnVuY3Rpb246ZnVuY3Rpb24odCl7bj10KGUpfSxnZXRTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBvfX19KHQpKSxqZShuKSYmby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uc3Vic2NyaWJlKHQpfSksW25dKX0pKSxleGl0OmR0KChmdW5jdGlvbihlKXt2YXIgdD1lLmN1c3RvbSxuPWUudmlzdWFsRWxlbWVudCxpPXIuX19yZWFkKEwoKSwyKSxhPWlbMF0sbD1pWzFdLHM9by51c2VDb250ZXh0KHgpO28udXNlRWZmZWN0KChmdW5jdGlvbigpe3ZhciBlLHIsbz1udWxsPT09KGU9bi5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuc2V0QWN0aXZlKFZlLkV4aXQsIWEse2N1c3RvbTpudWxsIT09KHI9bnVsbD09cz92b2lkIDA6cy5jdXN0b20pJiZ2b2lkIDAhPT1yP3I6dH0pOyFhJiYobnVsbD09b3x8by50aGVuKGwpKX0pLFthXSl9KSl9LGFuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbil7dmFyIG89dGhpcyxpPSh2b2lkIDA9PT1uP3t9Om4pLnRyYW5zZm9ybVBhZ2VQb2ludDtpZih0aGlzLnN0YXJ0RXZlbnQ9bnVsbCx0aGlzLmxhc3RNb3ZlRXZlbnQ9bnVsbCx0aGlzLmxhc3RNb3ZlRXZlbnRJbmZvPW51bGwsdGhpcy5oYW5kbGVycz17fSx0aGlzLnVwZGF0ZVBvaW50PWZ1bmN0aW9uKCl7aWYoby5sYXN0TW92ZUV2ZW50JiZvLmxhc3RNb3ZlRXZlbnRJbmZvKXt2YXIgZT1jbihvLmxhc3RNb3ZlRXZlbnRJbmZvLG8uaGlzdG9yeSksdD1udWxsIT09by5zdGFydEV2ZW50LG49bC5kaXN0YW5jZShlLm9mZnNldCx7eDowLHk6MH0pPj0zO2lmKHR8fG4pe3ZhciBpPWUucG9pbnQsYT1zLmdldEZyYW1lRGF0YSgpLnRpbWVzdGFtcDtvLmhpc3RvcnkucHVzaChyLl9fYXNzaWduKHIuX19hc3NpZ24oe30saSkse3RpbWVzdGFtcDphfSkpO3ZhciBjPW8uaGFuZGxlcnMsdT1jLm9uU3RhcnQsZj1jLm9uTW92ZTt0fHwodSYmdShvLmxhc3RNb3ZlRXZlbnQsZSksby5zdGFydEV2ZW50PW8ubGFzdE1vdmVFdmVudCksZiYmZihvLmxhc3RNb3ZlRXZlbnQsZSl9fX0sdGhpcy5oYW5kbGVQb2ludGVyTW92ZT1mdW5jdGlvbihlLHQpe28ubGFzdE1vdmVFdmVudD1lLG8ubGFzdE1vdmVFdmVudEluZm89bG4odCxvLnRyYW5zZm9ybVBhZ2VQb2ludCksTmUoZSkmJjA9PT1lLmJ1dHRvbnM/by5oYW5kbGVQb2ludGVyVXAoZSx0KTpkLmRlZmF1bHQudXBkYXRlKG8udXBkYXRlUG9pbnQsITApfSx0aGlzLmhhbmRsZVBvaW50ZXJVcD1mdW5jdGlvbihlLHQpe28uZW5kKCk7dmFyIG49by5oYW5kbGVycyxyPW4ub25FbmQsaT1uLm9uU2Vzc2lvbkVuZCxhPWNuKGxuKHQsby50cmFuc2Zvcm1QYWdlUG9pbnQpLG8uaGlzdG9yeSk7by5zdGFydEV2ZW50JiZyJiZyKGUsYSksaSYmaShlLGEpfSwhKFVlKGUpJiZlLnRvdWNoZXMubGVuZ3RoPjEpKXt0aGlzLmhhbmRsZXJzPXQsdGhpcy50cmFuc2Zvcm1QYWdlUG9pbnQ9aTt2YXIgYT1sbihxZShlKSx0aGlzLnRyYW5zZm9ybVBhZ2VQb2ludCksYz1hLnBvaW50LHU9cy5nZXRGcmFtZURhdGEoKS50aW1lc3RhbXA7dGhpcy5oaXN0b3J5PVtyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sYykse3RpbWVzdGFtcDp1fSldO3ZhciBmPXQub25TZXNzaW9uU3RhcnQ7ZiYmZihlLGNuKGEsdGhpcy5oaXN0b3J5KSksdGhpcy5yZW1vdmVMaXN0ZW5lcnM9bC5waXBlKG50KHdpbmRvdyxcInBvaW50ZXJtb3ZlXCIsdGhpcy5oYW5kbGVQb2ludGVyTW92ZSksbnQod2luZG93LFwicG9pbnRlcnVwXCIsdGhpcy5oYW5kbGVQb2ludGVyVXApLG50KHdpbmRvdyxcInBvaW50ZXJjYW5jZWxcIix0aGlzLmhhbmRsZVBvaW50ZXJVcCkpfX1yZXR1cm4gZS5wcm90b3R5cGUudXBkYXRlSGFuZGxlcnM9ZnVuY3Rpb24oZSl7dGhpcy5oYW5kbGVycz1lfSxlLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUxpc3RlbmVycyYmdGhpcy5yZW1vdmVMaXN0ZW5lcnMoKSxzLmNhbmNlbFN5bmMudXBkYXRlKHRoaXMudXBkYXRlUG9pbnQpfSxlfSgpO2Z1bmN0aW9uIGxuKGUsdCl7cmV0dXJuIHQ/e3BvaW50OnQoZS5wb2ludCl9OmV9ZnVuY3Rpb24gc24oZSx0KXtyZXR1cm57eDplLngtdC54LHk6ZS55LXQueX19ZnVuY3Rpb24gY24oZSx0KXt2YXIgbj1lLnBvaW50O3JldHVybntwb2ludDpuLGRlbHRhOnNuKG4sZm4odCkpLG9mZnNldDpzbihuLHVuKHQpKSx2ZWxvY2l0eTpkbih0LC4xKX19ZnVuY3Rpb24gdW4oZSl7cmV0dXJuIGVbMF19ZnVuY3Rpb24gZm4oZSl7cmV0dXJuIGVbZS5sZW5ndGgtMV19ZnVuY3Rpb24gZG4oZSx0KXtpZihlLmxlbmd0aDwyKXJldHVybnt4OjAseTowfTtmb3IodmFyIG49ZS5sZW5ndGgtMSxyPW51bGwsbz1mbihlKTtuPj0wJiYocj1lW25dLCEoby50aW1lc3RhbXAtci50aW1lc3RhbXA+dnQodCkpKTspbi0tO2lmKCFyKXJldHVybnt4OjAseTowfTt2YXIgaT0oby50aW1lc3RhbXAtci50aW1lc3RhbXApLzFlMztpZigwPT09aSlyZXR1cm57eDowLHk6MH07dmFyIGE9e3g6KG8ueC1yLngpL2kseTooby55LXIueSkvaX07cmV0dXJuIGEueD09PTEvMCYmKGEueD0wKSxhLnk9PT0xLzAmJihhLnk9MCksYX1mdW5jdGlvbiBwbihlKXtyZXR1cm4gZX1mdW5jdGlvbiBobihlKXt2YXIgdD1lLnRvcDtyZXR1cm57eDp7bWluOmUubGVmdCxtYXg6ZS5yaWdodH0seTp7bWluOnQsbWF4OmUuYm90dG9tfX19dmFyIHZuPXt0cmFuc2xhdGU6MCxzY2FsZToxLG9yaWdpbjowLG9yaWdpblBvaW50OjB9O2Z1bmN0aW9uIGduKCl7cmV0dXJue3g6ci5fX2Fzc2lnbih7fSx2bikseTpyLl9fYXNzaWduKHt9LHZuKX19ZnVuY3Rpb24gQ24oZSl7cmV0dXJuW2UoXCJ4XCIpLGUoXCJ5XCIpXX1mdW5jdGlvbiBtbihlLHQsbil7cmV0dXJuIHZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PW4mJihuPS4wMSksbC5kaXN0YW5jZShlLHQpPG59ZnVuY3Rpb24geW4oZSl7cmV0dXJuIGUubWF4LWUubWlufWZ1bmN0aW9uIHduKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPS41KSxlLm9yaWdpbj1yLGUub3JpZ2luUG9pbnQ9bC5taXgodC5taW4sdC5tYXgsZS5vcmlnaW4pLGUuc2NhbGU9eW4obikveW4odCksbW4oZS5zY2FsZSwxLDFlLTQpJiYoZS5zY2FsZT0xKSxlLnRyYW5zbGF0ZT1sLm1peChuLm1pbixuLm1heCxlLm9yaWdpbiktZS5vcmlnaW5Qb2ludCxtbihlLnRyYW5zbGF0ZSkmJihlLnRyYW5zbGF0ZT0wKX1mdW5jdGlvbiBibihlLHQsbixyKXt3bihlLngsdC54LG4ueCx4bihyLm9yaWdpblgpKSx3bihlLnksdC55LG4ueSx4bihyLm9yaWdpblkpKX1mdW5jdGlvbiB4bihlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT9lOi41fWZ1bmN0aW9uIF9uKGUsdCxuKXtlLm1pbj1uLm1pbit0Lm1pbixlLm1heD1lLm1pbit5bih0KX1mdW5jdGlvbiBMbihlLHQsbil7dmFyIHI9dC5taW4sbz10Lm1heDtyZXR1cm4gdm9pZCAwIT09ciYmZTxyP2U9bj9sLm1peChyLGUsbi5taW4pOk1hdGgubWF4KGUscik6dm9pZCAwIT09byYmZT5vJiYoZT1uP2wubWl4KG8sZSxuLm1heCk6TWF0aC5taW4oZSxvKSksZX1mdW5jdGlvbiBPbihlLHQsbil7cmV0dXJue21pbjp2b2lkIDAhPT10P2UubWluK3Q6dm9pZCAwLG1heDp2b2lkIDAhPT1uP2UubWF4K24tKGUubWF4LWUubWluKTp2b2lkIDB9fWZ1bmN0aW9uIEVuKGUsdCl7dmFyIG4sbz10Lm1pbi1lLm1pbixpPXQubWF4LWUubWF4O3JldHVybiB0Lm1heC10Lm1pbjxlLm1heC1lLm1pbiYmKG89KG49ci5fX3JlYWQoW2ksb10sMikpWzBdLGk9blsxXSkse21pbjplLm1pbitvLG1heDplLm1pbitpfX1mdW5jdGlvbiBTbihlLHQsbil7cmV0dXJue21pbjpNbihlLHQpLG1heDpNbihlLG4pfX1mdW5jdGlvbiBNbihlLHQpe3ZhciBuO3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlP2U6bnVsbCE9PShuPWVbdF0pJiZ2b2lkIDAhPT1uP246MH1mdW5jdGlvbiBqbihlLHQpe3JldHVybiBobihmdW5jdGlvbihlLHQpe3ZhciBuPWUudG9wLHI9ZS5sZWZ0LG89ZS5ib3R0b20saT1lLnJpZ2h0O3ZvaWQgMD09PXQmJih0PXBuKTt2YXIgYT10KHt4OnIseTpufSksbD10KHt4OmkseTpvfSk7cmV0dXJue3RvcDphLnksbGVmdDphLngsYm90dG9tOmwueSxyaWdodDpsLnh9fShlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQpKX12YXIga249ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5kZXB0aC10LmRlcHRofTtmdW5jdGlvbiBSbihlKXtyZXR1cm4gZS5wcm9qZWN0aW9uLmlzRW5hYmxlZHx8ZS5zaG91bGRSZXNldFRyYW5zZm9ybSgpfWZ1bmN0aW9uIFBuKGUsdCl7dm9pZCAwPT09dCYmKHQ9W10pO3ZhciBuPWUucGFyZW50O3JldHVybiBuJiZQbihuLHQpLFJuKGUpJiZ0LnB1c2goZSksdH1mdW5jdGlvbiBBbihlKXtpZighZS5zaG91bGRSZXNldFRyYW5zZm9ybSgpKXt2YXIgdCxuPWUuZ2V0TGF5b3V0U3RhdGUoKTtlLm5vdGlmeUJlZm9yZUxheW91dE1lYXN1cmUobi5sYXlvdXQpLG4uaXNIeWRyYXRlZD0hMCxuLmxheW91dD1lLm1lYXN1cmVWaWV3cG9ydEJveCgpLG4ubGF5b3V0Q29ycmVjdGVkPSh0PW4ubGF5b3V0LHt4OnIuX19hc3NpZ24oe30sdC54KSx5OnIuX19hc3NpZ24oe30sdC55KX0pLGUubm90aWZ5TGF5b3V0TWVhc3VyZShuLmxheW91dCxlLnByZXZWaWV3cG9ydEJveHx8bi5sYXlvdXQpLGQuZGVmYXVsdC51cGRhdGUoKGZ1bmN0aW9uKCl7cmV0dXJuIGUucmViYXNlUHJvamVjdGlvblRhcmdldCgpfSkpfX1mdW5jdGlvbiBJbihlKXtlLnNob3VsZFJlc2V0VHJhbnNmb3JtKCl8fChlLnByZXZWaWV3cG9ydEJveD1lLm1lYXN1cmVWaWV3cG9ydEJveCghMSksZS5yZWJhc2VQcm9qZWN0aW9uVGFyZ2V0KCExLGUucHJldlZpZXdwb3J0Qm94KSl9ZnVuY3Rpb24gVG4oZSx0KXtyZXR1cm57bWluOnQubWluLWUubWluLG1heDp0Lm1heC1lLm1pbn19ZnVuY3Rpb24gSG4oZSx0KXtyZXR1cm57eDpUbihlLngsdC54KSx5OlRuKGUueSx0LnkpfX1mdW5jdGlvbiBWbihlKXt2YXIgdD1lLmdldFByb3BzKCksbj10LmRyYWcscj10Ll9kcmFnWDtyZXR1cm4gbiYmIXJ9ZnVuY3Rpb24gQm4oZSx0KXtlLm1pbj10Lm1pbixlLm1heD10Lm1heH1mdW5jdGlvbiBEbihlLHQsbil7cmV0dXJuIG4rdCooZS1uKX1mdW5jdGlvbiBabihlLHQsbixyLG8pe3JldHVybiB2b2lkIDAhPT1vJiYoZT1EbihlLG8scikpLERuKGUsbixyKSt0fWZ1bmN0aW9uICRuKGUsdCxuLHIsbyl7dm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09biYmKG49MSksZS5taW49Wm4oZS5taW4sdCxuLHIsbyksZS5tYXg9Wm4oZS5tYXgsdCxuLHIsbyl9ZnVuY3Rpb24gRm4oZSx0KXt2YXIgbj10Lngscj10Lnk7JG4oZS54LG4udHJhbnNsYXRlLG4uc2NhbGUsbi5vcmlnaW5Qb2ludCksJG4oZS55LHIudHJhbnNsYXRlLHIuc2NhbGUsci5vcmlnaW5Qb2ludCl9ZnVuY3Rpb24gTm4oZSx0LG4sbyl7dmFyIGk9ci5fX3JlYWQobywzKSxhPWlbMF0scz1pWzFdLGM9aVsyXTtlLm1pbj10Lm1pbixlLm1heD10Lm1heDt2YXIgdT12b2lkIDAhPT1uW2NdP25bY106LjUsZj1sLm1peCh0Lm1pbix0Lm1heCx1KTskbihlLG5bYV0sbltzXSxmLG4uc2NhbGUpfXZhciBVbj1bXCJ4XCIsXCJzY2FsZVhcIixcIm9yaWdpblhcIl0sV249W1wieVwiLFwic2NhbGVZXCIsXCJvcmlnaW5ZXCJdO2Z1bmN0aW9uIHpuKGUsdCxuKXtObihlLngsdC54LG4sVW4pLE5uKGUueSx0LnksbixXbil9ZnVuY3Rpb24gR24oZSx0LG4scixvKXtyZXR1cm4gZT1EbihlLT10LDEvbixyKSx2b2lkIDAhPT1vJiYoZT1EbihlLDEvbyxyKSksZX1mdW5jdGlvbiBxbihlLHQsbil7dmFyIG89ci5fX3JlYWQobiwzKSxpPW9bMF0sYT1vWzFdLHM9b1syXTshZnVuY3Rpb24oZSx0LG4scixvKXt2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1uJiYobj0xKSx2b2lkIDA9PT1yJiYocj0uNSk7dmFyIGk9bC5taXgoZS5taW4sZS5tYXgsciktdDtlLm1pbj1HbihlLm1pbix0LG4saSxvKSxlLm1heD1HbihlLm1heCx0LG4saSxvKX0oZSx0W2ldLHRbYV0sdFtzXSx0LnNjYWxlKX1mdW5jdGlvbiBZbihlLHQpe3FuKGUueCx0LFVuKSxxbihlLnksdCxXbil9dmFyIEtuPW5ldyBTZXQ7ZnVuY3Rpb24gWG4oZSx0LG4pe2Vbbl18fChlW25dPVtdKSxlW25dLnB1c2godCl9ZnVuY3Rpb24gSm4oZSl7cmV0dXJuIEtuLmFkZChlKSxmdW5jdGlvbigpe3JldHVybiBLbi5kZWxldGUoZSl9fWZ1bmN0aW9uIFFuKCl7aWYoS24uc2l6ZSl7dmFyIGU9MCx0PVtbXV0sbj1bXSxyPWZ1bmN0aW9uKG4pe3JldHVybiBYbih0LG4sZSl9LG89ZnVuY3Rpb24odCl7WG4obix0LGUpLGUrK307S24uZm9yRWFjaCgoZnVuY3Rpb24odCl7dChyLG8pLGU9MH0pKSxLbi5jbGVhcigpO2Zvcih2YXIgaT1uLmxlbmd0aCxhPTA7YTw9aTthKyspdFthXSYmdFthXS5mb3JFYWNoKHRyKSxuW2FdJiZuW2FdLmZvckVhY2godHIpfX12YXIgZXIsdHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0sbnI9bmV3IFdlYWtNYXAscnI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciB0PWUudmlzdWFsRWxlbWVudDt0aGlzLmlzRHJhZ2dpbmc9ITEsdGhpcy5jdXJyZW50RGlyZWN0aW9uPW51bGwsdGhpcy5jb25zdHJhaW50cz0hMSx0aGlzLmVsYXN0aWM9e3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19LHRoaXMucHJvcHM9e30sdGhpcy5oYXNNdXRhdGVkQ29uc3RyYWludHM9ITEsdGhpcy5jdXJzb3JQcm9ncmVzcz17eDouNSx5Oi41fSx0aGlzLm9yaWdpblBvaW50PXt9LHRoaXMub3Blbkdsb2JhbExvY2s9bnVsbCx0aGlzLnBhblNlc3Npb249bnVsbCx0aGlzLnZpc3VhbEVsZW1lbnQ9dCx0aGlzLnZpc3VhbEVsZW1lbnQuZW5hYmxlTGF5b3V0UHJvamVjdGlvbigpLG5yLnNldCh0LHRoaXMpfXJldHVybiBlLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMsbz12b2lkIDA9PT10P3t9OnQsaT1vLnNuYXBUb0N1cnNvcixhPXZvaWQgMCE9PWkmJmksYz1vLmN1cnNvclByb2dyZXNzLHU9dGhpcy5wcm9wcy50cmFuc2Zvcm1QYWdlUG9pbnQ7dGhpcy5wYW5TZXNzaW9uPW5ldyBhbihlLHtvblNlc3Npb25TdGFydDpmdW5jdGlvbihlKXt2YXIgdDtuLnN0b3BNb3Rpb24oKTt2YXIgbz1mdW5jdGlvbihlKXtyZXR1cm4gcWUoZSxcImNsaWVudFwiKX0oZSkucG9pbnQ7bnVsbD09PSh0PW4uY2FuY2VsTGF5b3V0KXx8dm9pZCAwPT09dHx8dC5jYWxsKG4pLG4uY2FuY2VsTGF5b3V0PUpuKChmdW5jdGlvbihlLHQpe3ZhciBpPVBuKG4udmlzdWFsRWxlbWVudCksdT1mdW5jdGlvbihlKXt2YXIgdD1bXSxuPWZ1bmN0aW9uKGUpe1JuKGUpJiZ0LnB1c2goZSksZS5jaGlsZHJlbi5mb3JFYWNoKG4pfTtyZXR1cm4gZS5jaGlsZHJlbi5mb3JFYWNoKG4pLHQuc29ydChrbil9KG4udmlzdWFsRWxlbWVudCksZj1yLl9fc3ByZWFkQXJyYXkoci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKGkpKSxyLl9fcmVhZCh1KSksZD0hMTtuLmlzTGF5b3V0RHJhZygpJiZuLnZpc3VhbEVsZW1lbnQubG9ja1Byb2plY3Rpb25UYXJnZXQoKSx0KChmdW5jdGlvbigpe2YuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVzZXRUcmFuc2Zvcm0oKX0pKX0pKSxlKChmdW5jdGlvbigpe0FuKG4udmlzdWFsRWxlbWVudCksdS5mb3JFYWNoKEFuKX0pKSx0KChmdW5jdGlvbigpe2YuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVzdG9yZVRyYW5zZm9ybSgpfSkpLGEmJihkPW4uc25hcFRvQ3Vyc29yKG8pKX0pKSxlKChmdW5jdGlvbigpe0Jvb2xlYW4obi5nZXRBeGlzTW90aW9uVmFsdWUoXCJ4XCIpJiYhbi5pc0V4dGVybmFsRHJhZygpKXx8bi52aXN1YWxFbGVtZW50LnJlYmFzZVByb2plY3Rpb25UYXJnZXQoITAsbi52aXN1YWxFbGVtZW50Lm1lYXN1cmVWaWV3cG9ydEJveCghMSkpLG4udmlzdWFsRWxlbWVudC5zY2hlZHVsZVVwZGF0ZUxheW91dFByb2plY3Rpb24oKTt2YXIgZT1uLnZpc3VhbEVsZW1lbnQucHJvamVjdGlvbjtDbigoZnVuY3Rpb24odCl7aWYoIWQpe3ZhciByPWUudGFyZ2V0W3RdLGk9ci5taW4sYT1yLm1heDtuLmN1cnNvclByb2dyZXNzW3RdPWM/Y1t0XTpsLnByb2dyZXNzKGksYSxvW3RdKX12YXIgcz1uLmdldEF4aXNNb3Rpb25WYWx1ZSh0KTtzJiYobi5vcmlnaW5Qb2ludFt0XT1zLmdldCgpKX0pKX0pKSx0KChmdW5jdGlvbigpe3MuZmx1c2hTeW5jLnVwZGF0ZSgpLHMuZmx1c2hTeW5jLnByZVJlbmRlcigpLHMuZmx1c2hTeW5jLnJlbmRlcigpLHMuZmx1c2hTeW5jLnBvc3RSZW5kZXIoKX0pKSxlKChmdW5jdGlvbigpe3JldHVybiBuLnJlc29sdmVEcmFnQ29uc3RyYWludHMoKX0pKX0pKX0sb25TdGFydDpmdW5jdGlvbihlLHQpe3ZhciByLG8saSxhPW4ucHJvcHMsbD1hLmRyYWcscz1hLmRyYWdQcm9wYWdhdGlvbjsoIWx8fHN8fChuLm9wZW5HbG9iYWxMb2NrJiZuLm9wZW5HbG9iYWxMb2NrKCksbi5vcGVuR2xvYmFsTG9jaz1sdChsKSxuLm9wZW5HbG9iYWxMb2NrKSkmJihRbigpLG4uaXNEcmFnZ2luZz0hMCxuLmN1cnJlbnREaXJlY3Rpb249bnVsbCxudWxsPT09KG89KHI9bi5wcm9wcykub25EcmFnU3RhcnQpfHx2b2lkIDA9PT1vfHxvLmNhbGwocixlLHQpLG51bGw9PT0oaT1uLnZpc3VhbEVsZW1lbnQuYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1pfHxpLnNldEFjdGl2ZShWZS5EcmFnLCEwKSl9LG9uTW92ZTpmdW5jdGlvbihlLHQpe3ZhciByLG8saSxhLGw9bi5wcm9wcyxzPWwuZHJhZ1Byb3BhZ2F0aW9uLGM9bC5kcmFnRGlyZWN0aW9uTG9jaztpZihzfHxuLm9wZW5HbG9iYWxMb2NrKXt2YXIgdT10Lm9mZnNldDtpZihjJiZudWxsPT09bi5jdXJyZW50RGlyZWN0aW9uKXJldHVybiBuLmN1cnJlbnREaXJlY3Rpb249ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0xMCk7dmFyIG49bnVsbDtyZXR1cm4gTWF0aC5hYnMoZS55KT50P249XCJ5XCI6TWF0aC5hYnMoZS54KT50JiYobj1cInhcIiksbn0odSksdm9pZChudWxsIT09bi5jdXJyZW50RGlyZWN0aW9uJiYobnVsbD09PShvPShyPW4ucHJvcHMpLm9uRGlyZWN0aW9uTG9jayl8fHZvaWQgMD09PW98fG8uY2FsbChyLG4uY3VycmVudERpcmVjdGlvbikpKTtuLnVwZGF0ZUF4aXMoXCJ4XCIsdC5wb2ludCx1KSxuLnVwZGF0ZUF4aXMoXCJ5XCIsdC5wb2ludCx1KSxudWxsPT09KGE9KGk9bi5wcm9wcykub25EcmFnKXx8dm9pZCAwPT09YXx8YS5jYWxsKGksZSx0KSxlcj1lfX0sb25TZXNzaW9uRW5kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4uc3RvcChlLHQpfX0se3RyYW5zZm9ybVBhZ2VQb2ludDp1fSl9LGUucHJvdG90eXBlLnJlc29sdmVEcmFnQ29uc3RyYWludHM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxuPXQuZHJhZ0NvbnN0cmFpbnRzLHI9dC5kcmFnRWxhc3RpYyxvPXRoaXMudmlzdWFsRWxlbWVudC5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dENvcnJlY3RlZDt0aGlzLmNvbnN0cmFpbnRzPSEhbiYmKFAobik/dGhpcy5yZXNvbHZlUmVmQ29uc3RyYWludHMobyxuKTpmdW5jdGlvbihlLHQpe3ZhciBuPXQudG9wLHI9dC5sZWZ0LG89dC5ib3R0b20saT10LnJpZ2h0O3JldHVybnt4Ok9uKGUueCxyLGkpLHk6T24oZS55LG4sbyl9fShvLG4pKSx0aGlzLmVsYXN0aWM9ZnVuY3Rpb24oZSl7cmV0dXJuITE9PT1lP2U9MDohMD09PWUmJihlPS4zNSkse3g6U24oZSxcImxlZnRcIixcInJpZ2h0XCIpLHk6U24oZSxcInRvcFwiLFwiYm90dG9tXCIpfX0ociksdGhpcy5jb25zdHJhaW50cyYmIXRoaXMuaGFzTXV0YXRlZENvbnN0cmFpbnRzJiZDbigoZnVuY3Rpb24odCl7ZS5nZXRBeGlzTW90aW9uVmFsdWUodCkmJihlLmNvbnN0cmFpbnRzW3RdPWZ1bmN0aW9uKGUsdCl7dmFyIG49e307cmV0dXJuIHZvaWQgMCE9PXQubWluJiYobi5taW49dC5taW4tZS5taW4pLHZvaWQgMCE9PXQubWF4JiYobi5tYXg9dC5tYXgtZS5taW4pLG59KG9bdF0sZS5jb25zdHJhaW50c1t0XSkpfSkpfSxlLnByb3RvdHlwZS5yZXNvbHZlUmVmQ29uc3RyYWludHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnByb3BzLHI9bi5vbk1lYXN1cmVEcmFnQ29uc3RyYWludHMsbz1uLnRyYW5zZm9ybVBhZ2VQb2ludCxhPXQuY3VycmVudDtpLmludmFyaWFudChudWxsIT09YSxcIklmIGBkcmFnQ29uc3RyYWludHNgIGlzIHNldCBhcyBhIFJlYWN0IHJlZiwgdGhhdCByZWYgbXVzdCBiZSBwYXNzZWQgdG8gYW5vdGhlciBjb21wb25lbnQncyBgcmVmYCBwcm9wLlwiKSx0aGlzLmNvbnN0cmFpbnRzQm94PWpuKGEsbyk7dmFyIGw9ZnVuY3Rpb24oZSx0KXtyZXR1cm57eDpFbihlLngsdC54KSx5OkVuKGUueSx0LnkpfX0oZSx0aGlzLmNvbnN0cmFpbnRzQm94KTtpZihyKXt2YXIgcz1yKGZ1bmN0aW9uKGUpe3ZhciB0PWUueCxuPWUueTtyZXR1cm57dG9wOm4ubWluLGJvdHRvbTpuLm1heCxsZWZ0OnQubWluLHJpZ2h0OnQubWF4fX0obCkpO3RoaXMuaGFzTXV0YXRlZENvbnN0cmFpbnRzPSEhcyxzJiYobD1obihzKSl9cmV0dXJuIGx9LGUucHJvdG90eXBlLmNhbmNlbERyYWc9ZnVuY3Rpb24oKXt2YXIgZSx0O3RoaXMudmlzdWFsRWxlbWVudC51bmxvY2tQcm9qZWN0aW9uVGFyZ2V0KCksbnVsbD09PShlPXRoaXMuY2FuY2VsTGF5b3V0KXx8dm9pZCAwPT09ZXx8ZS5jYWxsKHRoaXMpLHRoaXMuaXNEcmFnZ2luZz0hMSx0aGlzLnBhblNlc3Npb24mJnRoaXMucGFuU2Vzc2lvbi5lbmQoKSx0aGlzLnBhblNlc3Npb249bnVsbCwhdGhpcy5wcm9wcy5kcmFnUHJvcGFnYXRpb24mJnRoaXMub3Blbkdsb2JhbExvY2smJih0aGlzLm9wZW5HbG9iYWxMb2NrKCksdGhpcy5vcGVuR2xvYmFsTG9jaz1udWxsKSxudWxsPT09KHQ9dGhpcy52aXN1YWxFbGVtZW50LmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09dHx8dC5zZXRBY3RpdmUoVmUuRHJhZywhMSl9LGUucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG87bnVsbD09PShuPXRoaXMucGFuU2Vzc2lvbil8fHZvaWQgMD09PW58fG4uZW5kKCksdGhpcy5wYW5TZXNzaW9uPW51bGw7dmFyIGk9dGhpcy5pc0RyYWdnaW5nO2lmKHRoaXMuY2FuY2VsRHJhZygpLGkpe3ZhciBhPXQudmVsb2NpdHk7dGhpcy5hbmltYXRlRHJhZ0VuZChhKSxudWxsPT09KG89KHI9dGhpcy5wcm9wcykub25EcmFnRW5kKXx8dm9pZCAwPT09b3x8by5jYWxsKHIsZSx0KX19LGUucHJvdG90eXBlLnNuYXBUb0N1cnNvcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBDbigoZnVuY3Rpb24obil7aWYob3Iobix0LnByb3BzLmRyYWcsdC5jdXJyZW50RGlyZWN0aW9uKSl7dmFyIHI9dC5nZXRBeGlzTW90aW9uVmFsdWUobik7aWYoIXIpcmV0dXJuIHQuY3Vyc29yUHJvZ3Jlc3Nbbl09LjUsITA7dmFyIG89dC52aXN1YWxFbGVtZW50LmdldExheW91dFN0YXRlKCkubGF5b3V0LGk9b1tuXS5tYXgtb1tuXS5taW4sYT1vW25dLm1pbitpLzIsbD1lW25dLWE7dC5vcmlnaW5Qb2ludFtuXT1lW25dLHIuc2V0KGwpfX0pKS5pbmNsdWRlcyghMCl9LGUucHJvdG90eXBlLnVwZGF0ZUF4aXM9ZnVuY3Rpb24oZSx0LG4pe2lmKG9yKGUsdGhpcy5wcm9wcy5kcmFnLHRoaXMuY3VycmVudERpcmVjdGlvbikpcmV0dXJuIHRoaXMuZ2V0QXhpc01vdGlvblZhbHVlKGUpP3RoaXMudXBkYXRlQXhpc01vdGlvblZhbHVlKGUsbik6dGhpcy51cGRhdGVWaXN1YWxFbGVtZW50QXhpcyhlLHQpfSxlLnByb3RvdHlwZS51cGRhdGVBeGlzTW90aW9uVmFsdWU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmdldEF4aXNNb3Rpb25WYWx1ZShlKTtpZih0JiZuKXt2YXIgcj10aGlzLm9yaWdpblBvaW50W2VdK3RbZV0sbz10aGlzLmNvbnN0cmFpbnRzP0xuKHIsdGhpcy5jb25zdHJhaW50c1tlXSx0aGlzLmVsYXN0aWNbZV0pOnI7bi5zZXQobyl9fSxlLnByb3RvdHlwZS51cGRhdGVWaXN1YWxFbGVtZW50QXhpcz1mdW5jdGlvbihlLHQpe3ZhciBuLHI9dGhpcy52aXN1YWxFbGVtZW50LmdldExheW91dFN0YXRlKCkubGF5b3V0W2VdLG89ci5tYXgtci5taW4saT10aGlzLmN1cnNvclByb2dyZXNzW2VdLGE9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT1lLXQqbjtyZXR1cm4gcj9MbihpLHIsbyk6aX0odFtlXSxvLGksbnVsbD09PShuPXRoaXMuY29uc3RyYWludHMpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuW2VdLHRoaXMuZWxhc3RpY1tlXSk7dGhpcy52aXN1YWxFbGVtZW50LnNldFByb2plY3Rpb25UYXJnZXRBeGlzKGUsYSxhK28pfSxlLnByb3RvdHlwZS5zZXRQcm9wcz1mdW5jdGlvbihlKXt2YXIgdD1lLmRyYWcsbj12b2lkIDAhPT10JiZ0LG89ZS5kcmFnRGlyZWN0aW9uTG9jayxpPXZvaWQgMCE9PW8mJm8sYT1lLmRyYWdQcm9wYWdhdGlvbixsPXZvaWQgMCE9PWEmJmEscz1lLmRyYWdDb25zdHJhaW50cyxjPXZvaWQgMCE9PXMmJnMsdT1lLmRyYWdFbGFzdGljLGY9dm9pZCAwPT09dT8uMzU6dSxkPWUuZHJhZ01vbWVudHVtLHA9dm9pZCAwPT09ZHx8ZCxoPXIuX19yZXN0KGUsW1wiZHJhZ1wiLFwiZHJhZ0RpcmVjdGlvbkxvY2tcIixcImRyYWdQcm9wYWdhdGlvblwiLFwiZHJhZ0NvbnN0cmFpbnRzXCIsXCJkcmFnRWxhc3RpY1wiLFwiZHJhZ01vbWVudHVtXCJdKTt0aGlzLnByb3BzPXIuX19hc3NpZ24oe2RyYWc6bixkcmFnRGlyZWN0aW9uTG9jazppLGRyYWdQcm9wYWdhdGlvbjpsLGRyYWdDb25zdHJhaW50czpjLGRyYWdFbGFzdGljOmYsZHJhZ01vbWVudHVtOnB9LGgpfSxlLnByb3RvdHlwZS5nZXRBeGlzTW90aW9uVmFsdWU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQubGF5b3V0LHI9dC5sYXlvdXRJZCxvPVwiX2RyYWdcIitlLnRvVXBwZXJDYXNlKCk7cmV0dXJuIHRoaXMucHJvcHNbb10/dGhpcy5wcm9wc1tvXTpufHx2b2lkIDAhPT1yP3ZvaWQgMDp0aGlzLnZpc3VhbEVsZW1lbnQuZ2V0VmFsdWUoZSwwKX0sZS5wcm90b3R5cGUuaXNMYXlvdXREcmFnPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZ2V0QXhpc01vdGlvblZhbHVlKFwieFwiKX0sZS5wcm90b3R5cGUuaXNFeHRlcm5hbERyYWc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5fZHJhZ1gsbj1lLl9kcmFnWTtyZXR1cm4gdHx8bn0sZS5wcm90b3R5cGUuYW5pbWF0ZURyYWdFbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXRoaXMucHJvcHMsbz1uLmRyYWcsaT1uLmRyYWdNb21lbnR1bSxhPW4uZHJhZ0VsYXN0aWMsbD1uLmRyYWdUcmFuc2l0aW9uLHM9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0hMCk7dmFyIG4scj1lLmdldFByb2plY3Rpb25QYXJlbnQoKTtyZXR1cm4hIXImJih0P1luKG49SG4oci5wcm9qZWN0aW9uLnRhcmdldCxlLnByb2plY3Rpb24udGFyZ2V0KSxyLmdldExhdGVzdFZhbHVlcygpKTpuPUhuKHIuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXQsZS5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dCksQ24oKGZ1bmN0aW9uKHQpe3JldHVybiBlLnNldFByb2plY3Rpb25UYXJnZXRBeGlzKHQsblt0XS5taW4sblt0XS5tYXgsITApfSkpLCEwKX0odGhpcy52aXN1YWxFbGVtZW50LHRoaXMuaXNMYXlvdXREcmFnKCkmJiF0aGlzLmlzRXh0ZXJuYWxEcmFnKCkpLGM9dGhpcy5jb25zdHJhaW50c3x8e307aWYocyYmT2JqZWN0LmtleXMoYykubGVuZ3RoJiZ0aGlzLmlzTGF5b3V0RHJhZygpKXt2YXIgdT10aGlzLnZpc3VhbEVsZW1lbnQuZ2V0UHJvamVjdGlvblBhcmVudCgpO2lmKHUpe3ZhciBmPUhuKHUucHJvamVjdGlvbi50YXJnZXRGaW5hbCxjKTtDbigoZnVuY3Rpb24oZSl7dmFyIHQ9ZltlXSxuPXQubWluLHI9dC5tYXg7Y1tlXT17bWluOmlzTmFOKG4pP3ZvaWQgMDpuLG1heDppc05hTihyKT92b2lkIDA6cn19KSl9fXZhciBkPUNuKChmdW5jdGlvbihuKXt2YXIgdTtpZihvcihuLG8sdC5jdXJyZW50RGlyZWN0aW9uKSl7dmFyIGY9bnVsbCE9PSh1PW51bGw9PWM/dm9pZCAwOmNbbl0pJiZ2b2lkIDAhPT11P3U6e30sZD1hPzIwMDoxZTYscD1hPzQwOjFlNyxoPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7dHlwZTpcImluZXJ0aWFcIix2ZWxvY2l0eTppP2Vbbl06MCxib3VuY2VTdGlmZm5lc3M6ZCxib3VuY2VEYW1waW5nOnAsdGltZUNvbnN0YW50Ojc1MCxyZXN0RGVsdGE6MSxyZXN0U3BlZWQ6MTB9LGwpLGYpO3JldHVybiB0LmdldEF4aXNNb3Rpb25WYWx1ZShuKT90LnN0YXJ0QXhpc1ZhbHVlQW5pbWF0aW9uKG4saCk6dC52aXN1YWxFbGVtZW50LnN0YXJ0TGF5b3V0QW5pbWF0aW9uKG4saCxzKX19KSk7cmV0dXJuIFByb21pc2UuYWxsKGQpLnRoZW4oKGZ1bmN0aW9uKCl7dmFyIGUsbjtudWxsPT09KG49KGU9dC5wcm9wcykub25EcmFnVHJhbnNpdGlvbkVuZCl8fHZvaWQgMD09PW58fG4uY2FsbChlKX0pKX0sZS5wcm90b3R5cGUuc3RvcE1vdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXM7Q24oKGZ1bmN0aW9uKHQpe3ZhciBuPWUuZ2V0QXhpc01vdGlvblZhbHVlKHQpO24/bi5zdG9wKCk6ZS52aXN1YWxFbGVtZW50LnN0b3BMYXlvdXRBbmltYXRpb24oKX0pKX0sZS5wcm90b3R5cGUuc3RhcnRBeGlzVmFsdWVBbmltYXRpb249ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmdldEF4aXNNb3Rpb25WYWx1ZShlKTtpZihuKXt2YXIgcj1uLmdldCgpO3JldHVybiBuLnNldChyKSxuLnNldChyKSxBdChlLG4sMCx0KX19LGUucHJvdG90eXBlLnNjYWxlUG9pbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxuPXQuZHJhZztpZihQKHQuZHJhZ0NvbnN0cmFpbnRzKSYmdGhpcy5jb25zdHJhaW50c0JveCl7dGhpcy5zdG9wTW90aW9uKCk7dmFyIHI9e3g6MCx5OjB9O0NuKChmdW5jdGlvbih0KXt2YXIgbixvLGksYSxzLGM7clt0XT0obj1lLnZpc3VhbEVsZW1lbnQucHJvamVjdGlvbi50YXJnZXRbdF0sbz1lLmNvbnN0cmFpbnRzQm94W3RdLGE9LjUscz15bihuKSwoYz15bihvKSk+cz9hPWwucHJvZ3Jlc3Moby5taW4sby5tYXgtcyxuLm1pbik6cz5jJiYoYT1sLnByb2dyZXNzKG4ubWluLG4ubWF4LWMsby5taW4pKSxpPWEsbC5jbGFtcCgwLDEsaSkpfSkpLHRoaXMudXBkYXRlQ29uc3RyYWludHMoKGZ1bmN0aW9uKCl7Q24oKGZ1bmN0aW9uKHQpe2lmKG9yKHQsbixudWxsKSl7dmFyIG89ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUubWF4LWUubWluLG89bC5taXgodC5taW4sdC5tYXgtcixuKTtyZXR1cm57bWluOm8sbWF4Om8rcn19KGUudmlzdWFsRWxlbWVudC5wcm9qZWN0aW9uLnRhcmdldFt0XSxlLmNvbnN0cmFpbnRzQm94W3RdLHJbdF0pLGk9by5taW4sYT1vLm1heDtlLnZpc3VhbEVsZW1lbnQuc2V0UHJvamVjdGlvblRhcmdldEF4aXModCxpLGEpfX0pKX0pKSxzZXRUaW1lb3V0KFFuLDEpfX0sZS5wcm90b3R5cGUudXBkYXRlQ29uc3RyYWludHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLmNhbmNlbExheW91dD1KbigoZnVuY3Rpb24obixyKXt2YXIgbz1Qbih0LnZpc3VhbEVsZW1lbnQpO3IoKGZ1bmN0aW9uKCl7cmV0dXJuIG8uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVzZXRUcmFuc2Zvcm0oKX0pKX0pKSxuKChmdW5jdGlvbigpe3JldHVybiBBbih0LnZpc3VhbEVsZW1lbnQpfSkpLHIoKGZ1bmN0aW9uKCl7cmV0dXJuIG8uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVzdG9yZVRyYW5zZm9ybSgpfSkpfSkpLG4oKGZ1bmN0aW9uKCl7dC5yZXNvbHZlRHJhZ0NvbnN0cmFpbnRzKCl9KSksZSYmcihlKX0pKX0sZS5wcm90b3R5cGUubW91bnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPW50KGUuZ2V0SW5zdGFuY2UoKSxcInBvaW50ZXJkb3duXCIsKGZ1bmN0aW9uKGUpe3ZhciBuPXQucHJvcHMscj1uLmRyYWcsbz1uLmRyYWdMaXN0ZW5lcjtyJiYodm9pZCAwPT09b3x8bykmJnQuc3RhcnQoZSl9KSkscj0kZSh3aW5kb3csXCJyZXNpemVcIiwoZnVuY3Rpb24oKXt0LnNjYWxlUG9pbnQoKX0pKSxvPWUub25MYXlvdXRVcGRhdGUoKGZ1bmN0aW9uKCl7dC5pc0RyYWdnaW5nJiZ0LnJlc29sdmVEcmFnQ29uc3RyYWludHMoKX0pKSxpPWUucHJldkRyYWdDdXJzb3I7cmV0dXJuIGkmJnRoaXMuc3RhcnQoZXIse2N1cnNvclByb2dyZXNzOml9KSxmdW5jdGlvbigpe251bGw9PW58fG4oKSxudWxsPT1yfHxyKCksbnVsbD09b3x8bygpLHQuY2FuY2VsRHJhZygpfX0sZX0oKTtmdW5jdGlvbiBvcihlLHQsbil7cmV0dXJuISghMCE9PXQmJnQhPT1lfHxudWxsIT09biYmbiE9PWUpfXZhciBpcixhcixscj17cGFuOmR0KChmdW5jdGlvbihlKXt2YXIgdD1lLm9uUGFuLG49ZS5vblBhblN0YXJ0LHI9ZS5vblBhbkVuZCxpPWUub25QYW5TZXNzaW9uU3RhcnQsYT1lLnZpc3VhbEVsZW1lbnQsbD10fHxufHxyfHxpLHM9by51c2VSZWYobnVsbCksYz1vLnVzZUNvbnRleHQoeSkudHJhbnNmb3JtUGFnZVBvaW50LHU9e29uU2Vzc2lvblN0YXJ0Omksb25TdGFydDpuLG9uTW92ZTp0LG9uRW5kOmZ1bmN0aW9uKGUsdCl7cy5jdXJyZW50PW51bGwsciYmcihlLHQpfX07by51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7bnVsbCE9PXMuY3VycmVudCYmcy5jdXJyZW50LnVwZGF0ZUhhbmRsZXJzKHUpfSkpLHJ0KGEsXCJwb2ludGVyZG93blwiLGwmJmZ1bmN0aW9uKGUpe3MuY3VycmVudD1uZXcgYW4oZSx1LHt0cmFuc2Zvcm1QYWdlUG9pbnQ6Y30pfSksZnQoKGZ1bmN0aW9uKCl7cmV0dXJuIHMuY3VycmVudCYmcy5jdXJyZW50LmVuZCgpfSkpfSkpLGRyYWc6ZHQoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZHJhZ0NvbnRyb2xzLG49ZS52aXN1YWxFbGVtZW50LGk9by51c2VDb250ZXh0KHkpLnRyYW5zZm9ybVBhZ2VQb2ludCxhPV8oKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBycih7dmlzdWFsRWxlbWVudDpufSl9KSk7YS5zZXRQcm9wcyhyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sZSkse3RyYW5zZm9ybVBhZ2VQb2ludDppfSkpLG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiB0JiZ0LnN1YnNjcmliZShhKX0pLFthXSksby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIGEubW91bnQobil9KSxbXSl9KSl9O2Z1bmN0aW9uIHNyKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiZlLnN0YXJ0c1dpdGgoXCJ2YXIoLS1cIil9IWZ1bmN0aW9uKGUpe2VbZS5FbnRlcmluZz0wXT1cIkVudGVyaW5nXCIsZVtlLlByZXNlbnQ9MV09XCJQcmVzZW50XCIsZVtlLkV4aXRpbmc9Ml09XCJFeGl0aW5nXCJ9KGlyfHwoaXI9e30pKSx0LlZpc2liaWxpdHlBY3Rpb249dm9pZCAwLChhcj10LlZpc2liaWxpdHlBY3Rpb258fCh0LlZpc2liaWxpdHlBY3Rpb249e30pKVthci5IaWRlPTBdPVwiSGlkZVwiLGFyW2FyLlNob3c9MV09XCJTaG93XCI7dmFyIGNyPS92YXJcXCgoLS1bYS16QS1aMC05LV9dKyksPyA/KFthLXpBLVowLTkgKCklIy4sLV0rKT9cXCkvO2Z1bmN0aW9uIHVyKGUsdCxuKXt2b2lkIDA9PT1uJiYobj0xKSxpLmludmFyaWFudChuPD00LCdNYXggQ1NTIHZhcmlhYmxlIGZhbGxiYWNrIGRlcHRoIGRldGVjdGVkIGluIHByb3BlcnR5IFwiJytlKydcIi4gVGhpcyBtYXkgaW5kaWNhdGUgYSBjaXJjdWxhciBmYWxsYmFjayBkZXBlbmRlbmN5LicpO3ZhciBvPXIuX19yZWFkKGZ1bmN0aW9uKGUpe3ZhciB0PWNyLmV4ZWMoZSk7aWYoIXQpcmV0dXJuWyxdO3ZhciBuPXIuX19yZWFkKHQsMyk7cmV0dXJuW25bMV0sblsyXV19KGUpLDIpLGE9b1swXSxsPW9bMV07aWYoYSl7dmFyIHM9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZShhKTtyZXR1cm4gcz9zLnRyaW0oKTpzcihsKT91cihsLHQsbisxKTpsfX1mdW5jdGlvbiBmcihlLHQpe3JldHVybiBlLyh0Lm1heC10Lm1pbikqMTAwfXZhciBkcj1cIl8kY3NzXCIscHI9e3Byb2Nlc3M6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4udGFyZ2V0O2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXtpZighYS5weC50ZXN0KGUpKXJldHVybiBlO2U9cGFyc2VGbG9hdChlKX1yZXR1cm4gZnIoZSxyLngpK1wiJSBcIitmcihlLHIueSkrXCIlXCJ9fSxocj17Ym9yZGVyUmFkaXVzOnIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxwcikse2FwcGx5VG86W1wiYm9yZGVyVG9wTGVmdFJhZGl1c1wiLFwiYm9yZGVyVG9wUmlnaHRSYWRpdXNcIixcImJvcmRlckJvdHRvbUxlZnRSYWRpdXNcIixcImJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzXCJdfSksYm9yZGVyVG9wTGVmdFJhZGl1czpwcixib3JkZXJUb3BSaWdodFJhZGl1czpwcixib3JkZXJCb3R0b21MZWZ0UmFkaXVzOnByLGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOnByLGJveFNoYWRvdzp7cHJvY2VzczpmdW5jdGlvbihlLHQpe3ZhciBuPXQuZGVsdGEscj10LnRyZWVTY2FsZSxvPWUsaT1lLmluY2x1ZGVzKFwidmFyKFwiKSxzPVtdO2kmJihlPWUucmVwbGFjZShjciwoZnVuY3Rpb24oZSl7cmV0dXJuIHMucHVzaChlKSxkcn0pKSk7dmFyIGM9YS5jb21wbGV4LnBhcnNlKGUpO2lmKGMubGVuZ3RoPjUpcmV0dXJuIG87dmFyIHU9YS5jb21wbGV4LmNyZWF0ZVRyYW5zZm9ybWVyKGUpLGY9XCJudW1iZXJcIiE9dHlwZW9mIGNbMF0/MTowLGQ9bi54LnNjYWxlKnIueCxwPW4ueS5zY2FsZSpyLnk7Y1swK2ZdLz1kLGNbMStmXS89cDt2YXIgaD1sLm1peChkLHAsLjUpO1wibnVtYmVyXCI9PXR5cGVvZiBjWzIrZl0mJihjWzIrZl0vPWgpLFwibnVtYmVyXCI9PXR5cGVvZiBjWzMrZl0mJihjWzMrZl0vPWgpO3ZhciB2PXUoYyk7aWYoaSl7dmFyIGc9MDt2PXYucmVwbGFjZShkciwoZnVuY3Rpb24oKXt2YXIgZT1zW2ddO3JldHVybiBnKyssZX0pKX1yZXR1cm4gdn19fSx2cj1mdW5jdGlvbihlKXtmdW5jdGlvbiBuKCl7dmFyIG49bnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiBuLmZyYW1lVGFyZ2V0PXt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fSxuLmN1cnJlbnRBbmltYXRpb25UYXJnZXQ9e3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19LG4uaXNBbmltYXRpbmc9e3g6ITEseTohMX0sbi5zdG9wQXhpc0FuaW1hdGlvbj17eDp2b2lkIDAseTp2b2lkIDB9LG4uaXNBbmltYXRpbmdUcmVlPSExLG4uYW5pbWF0ZT1mdW5jdGlvbihlLG8saSl7dm9pZCAwPT09aSYmKGk9e30pO3ZhciBhPWkub3JpZ2luQm94LGw9aS50YXJnZXRCb3gscz1pLnZpc2liaWxpdHlBY3Rpb24sYz1pLnNob3VsZFN0YWNrQW5pbWF0ZSx1PWkub25Db21wbGV0ZSxmPWkucHJldlBhcmVudCxkPXIuX19yZXN0KGksW1wib3JpZ2luQm94XCIsXCJ0YXJnZXRCb3hcIixcInZpc2liaWxpdHlBY3Rpb25cIixcInNob3VsZFN0YWNrQW5pbWF0ZVwiLFwib25Db21wbGV0ZVwiLFwicHJldlBhcmVudFwiXSkscD1uLnByb3BzLGg9cC52aXN1YWxFbGVtZW50LHY9cC5sYXlvdXQ7aWYoITE9PT1jKXJldHVybiBuLmlzQW5pbWF0aW5nVHJlZT0hMSxuLnNhZmVUb1JlbW92ZSgpO2lmKCFuLmlzQW5pbWF0aW5nVHJlZXx8ITA9PT1jKXtjJiYobi5pc0FuaW1hdGluZ1RyZWU9ITApLG89YXx8byxlPWx8fGU7dmFyIGcsQyxtLHk9ITEsdz1oLmdldFByb2plY3Rpb25QYXJlbnQoKTtpZih3KXt2YXIgYj13LnByZXZWaWV3cG9ydEJveCx4PXcuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXQ7ZiYmKGwmJih4PWYuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXQpLGEmJihDPXcsKGc9ZikuZ2V0TGF5b3V0SWQoKT09PShtPUMuZ2V0TGF5b3V0SWQoKSkmJih2b2lkIDAhPT1tfHxnPT09QykpJiZmLnByZXZWaWV3cG9ydEJveCYmKGI9Zi5wcmV2Vmlld3BvcnRCb3gpKSxiJiZmdW5jdGlvbihlLHQsbil7cmV0dXJuIGV8fCFlJiYhKHR8fG4pfShmLGEsbCkmJih5PSEwLG89SG4oYixvKSxlPUhuKHgsZSkpfXZhciBfLEwsTz0oTD1lLCEoQ3IoXz1vKXx8Q3IoTCl8fG1yKF8ueCxMLngpJiZtcihfLnksTC55KSkpLEU9Q24oKGZ1bmN0aW9uKGkpe3ZhciBhLGw7aWYoXCJwb3NpdGlvblwiPT09dil7dmFyIGM9ZVtpXS5tYXgtZVtpXS5taW47b1tpXS5tYXg9b1tpXS5taW4rY31pZighaC5wcm9qZWN0aW9uLmlzVGFyZ2V0TG9ja2VkKXJldHVybiB2b2lkIDA9PT1zP08/bi5hbmltYXRlQXhpcyhpLGVbaV0sb1tpXSxyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sZCkse2lzUmVsYXRpdmU6eX0pKToobnVsbD09PShsPShhPW4uc3RvcEF4aXNBbmltYXRpb24pW2ldKXx8dm9pZCAwPT09bHx8bC5jYWxsKGEpLGguc2V0UHJvamVjdGlvblRhcmdldEF4aXMoaSxlW2ldLm1pbixlW2ldLm1heCx5KSk6dm9pZCBoLnNldFZpc2liaWxpdHkocz09PXQuVmlzaWJpbGl0eUFjdGlvbi5TaG93KX0pKTtyZXR1cm4gaC5zeW5jUmVuZGVyKCksUHJvbWlzZS5hbGwoRSkudGhlbigoZnVuY3Rpb24oKXtuLmlzQW5pbWF0aW5nVHJlZT0hMSx1JiZ1KCksaC5ub3RpZnlMYXlvdXRBbmltYXRpb25Db21wbGV0ZSgpfSkpfX0sbn1yZXR1cm4gci5fX2V4dGVuZHMobixlKSxuLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLnZpc3VhbEVsZW1lbnQ7dC5hbmltYXRlTW90aW9uVmFsdWU9QXQsdC5lbmFibGVMYXlvdXRQcm9qZWN0aW9uKCksdGhpcy51bnN1YkxheW91dFJlYWR5PXQub25MYXlvdXRVcGRhdGUodGhpcy5hbmltYXRlKSx0LmxheW91dFNhZmVUb1JlbW92ZT1mdW5jdGlvbigpe3JldHVybiBlLnNhZmVUb1JlbW92ZSgpfSxXKGhyKX0sbi5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMudW5zdWJMYXlvdXRSZWFkeSgpLENuKChmdW5jdGlvbih0KXt2YXIgbixyO3JldHVybiBudWxsPT09KHI9KG49ZS5zdG9wQXhpc0FuaW1hdGlvbilbdF0pfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmNhbGwobil9KSl9LG4ucHJvdG90eXBlLmFuaW1hdGVBeGlzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGksYT10aGlzLHM9dm9pZCAwPT09cj97fTpyLGM9cy50cmFuc2l0aW9uLHU9cy5pc1JlbGF0aXZlO2lmKCF0aGlzLmlzQW5pbWF0aW5nW2VdfHwhbXIodCx0aGlzLmN1cnJlbnRBbmltYXRpb25UYXJnZXRbZV0pKXtudWxsPT09KGk9KG89dGhpcy5zdG9wQXhpc0FuaW1hdGlvbilbZV0pfHx2b2lkIDA9PT1pfHxpLmNhbGwobyksdGhpcy5pc0FuaW1hdGluZ1tlXT0hMDt2YXIgZj10aGlzLnByb3BzLnZpc3VhbEVsZW1lbnQsZD10aGlzLmZyYW1lVGFyZ2V0W2VdLHA9Zi5nZXRQcm9qZWN0aW9uQW5pbWF0aW9uUHJvZ3Jlc3MoKVtlXTtwLmNsZWFyTGlzdGVuZXJzKCkscC5zZXQoMCkscC5zZXQoMCk7dmFyIGg9ZnVuY3Rpb24oKXt2YXIgcj1wLmdldCgpLzFlMzshZnVuY3Rpb24oZSx0LG4scil7ZS5taW49bC5taXgodC5taW4sbi5taW4sciksZS5tYXg9bC5taXgodC5tYXgsbi5tYXgscil9KGQsbix0LHIpLGYuc2V0UHJvamVjdGlvblRhcmdldEF4aXMoZSxkLm1pbixkLm1heCx1KX07aCgpO3ZhciB2PXAub25DaGFuZ2UoaCk7dGhpcy5zdG9wQXhpc0FuaW1hdGlvbltlXT1mdW5jdGlvbigpe2EuaXNBbmltYXRpbmdbZV09ITEscC5zdG9wKCksdigpfSx0aGlzLmN1cnJlbnRBbmltYXRpb25UYXJnZXRbZV09dDt2YXIgZz1jfHxmLmdldERlZmF1bHRUcmFuc2l0aW9uKCl8fHlyO3JldHVybiBBdChcInhcIj09PWU/XCJsYXlvdXRYXCI6XCJsYXlvdXRZXCIscCwxZTMsZyYmUHQoZyxcImxheW91dFwiKSkudGhlbih0aGlzLnN0b3BBeGlzQW5pbWF0aW9uW2VdKX19LG4ucHJvdG90eXBlLnNhZmVUb1JlbW92ZT1mdW5jdGlvbigpe3ZhciBlLHQ7bnVsbD09PSh0PShlPXRoaXMucHJvcHMpLnNhZmVUb1JlbW92ZSl8fHZvaWQgMD09PXR8fHQuY2FsbChlKX0sbi5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LG59KHUuQ29tcG9uZW50KSxncj17bWluOjAsbWF4OjB9O2Z1bmN0aW9uIENyKGUpe3JldHVybiBtcihlLngsZ3IpJiZtcihlLnksZ3IpfWZ1bmN0aW9uIG1yKGUsdCl7cmV0dXJuIGUubWluPT09dC5taW4mJmUubWF4PT09dC5tYXh9dmFyIHlyPXtkdXJhdGlvbjouNDUsZWFzZTpbLjQsMCwuMSwxXX0sd3I9e2xheW91dFJlYWR5OmZ1bmN0aW9uKGUpe3JldHVybiBlLm5vdGlmeUxheW91dFJlYWR5KCl9fTtmdW5jdGlvbiBicigpe3ZhciBlPW5ldyBTZXQ7cmV0dXJue2FkZDpmdW5jdGlvbih0KXtyZXR1cm4gZS5hZGQodCl9LGZsdXNoOmZ1bmN0aW9uKHQpe3ZhciBuPXZvaWQgMD09PXQ/d3I6dCxvPW4ubGF5b3V0UmVhZHksaT1uLnBhcmVudDtKbigoZnVuY3Rpb24odCxuKXt2YXIgYT1BcnJheS5mcm9tKGUpLnNvcnQoa24pLGw9aT9QbihpKTpbXTtuKChmdW5jdGlvbigpe3IuX19zcHJlYWRBcnJheShyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQobCkpLHIuX19yZWFkKGEpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXNldFRyYW5zZm9ybSgpfSkpfSkpLHQoKGZ1bmN0aW9uKCl7YS5mb3JFYWNoKEFuKX0pKSxuKChmdW5jdGlvbigpe2wuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVzdG9yZVRyYW5zZm9ybSgpfSkpLGEuZm9yRWFjaChvKX0pKSx0KChmdW5jdGlvbigpe2EuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5pc1ByZXNlbnQmJihlLnByZXNlbmNlPWlyLlByZXNlbnQpfSkpfSkpLG4oKGZ1bmN0aW9uKCl7cy5mbHVzaFN5bmMucHJlUmVuZGVyKCkscy5mbHVzaFN5bmMucmVuZGVyKCl9KSksdCgoZnVuY3Rpb24oKXtkLmRlZmF1bHQucG9zdFJlbmRlcigoZnVuY3Rpb24oKXtyZXR1cm4gYS5mb3JFYWNoKHhyKX0pKSxlLmNsZWFyKCl9KSl9KSksUW4oKX19fWZ1bmN0aW9uIHhyKGUpe2UucHJldlZpZXdwb3J0Qm94PWUucHJvamVjdGlvbi50YXJnZXR9dmFyIF9yPW8uY3JlYXRlQ29udGV4dChicigpKSxMcj1vLmNyZWF0ZUNvbnRleHQoYnIoKSk7ZnVuY3Rpb24gT3IoZSl7cmV0dXJuISFlLmZvcmNlVXBkYXRlfXZhciBFcj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIG51bGwhPT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gci5fX2V4dGVuZHModCxlKSx0LnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLnN5bmNMYXlvdXQsbj1lLmZyYW1lclN5bmNMYXlvdXQscj1lLnZpc3VhbEVsZW1lbnQ7T3IodCkmJnQucmVnaXN0ZXIociksT3IobikmJm4ucmVnaXN0ZXIociksci5vblVubW91bnQoKGZ1bmN0aW9uKCl7T3IodCkmJnQucmVtb3ZlKHIpLE9yKG4pJiZuLnJlbW92ZShyKX0pKX0sdC5wcm90b3R5cGUuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5zeW5jTGF5b3V0LG49ZS52aXN1YWxFbGVtZW50O3JldHVybiBPcih0KT90LnN5bmNVcGRhdGUoKTooSW4obiksdC5hZGQobikpLG51bGx9LHQucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMuc3luY0xheW91dDtPcihlKXx8ZS5mbHVzaCgpfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdH0oZi5kZWZhdWx0LkNvbXBvbmVudCksU3I9e21lYXN1cmVMYXlvdXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9by51c2VDb250ZXh0KF9yKSxuPW8udXNlQ29udGV4dChMcik7cmV0dXJuIGYuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEVyLHIuX19hc3NpZ24oe30sZSx7c3luY0xheW91dDp0LGZyYW1lclN5bmNMYXlvdXQ6bn0pKX0sbGF5b3V0QW5pbWF0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PXIuX19yZWFkKEwoKSwyKVsxXTtyZXR1cm4gdS5jcmVhdGVFbGVtZW50KHZyLHIuX19hc3NpZ24oe30sZSx7c2FmZVRvUmVtb3ZlOnR9KSl9fTtmdW5jdGlvbiBNcigpe3JldHVybntpc0h5ZHJhdGVkOiExLGxheW91dDp7eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX0sbGF5b3V0Q29ycmVjdGVkOnt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fSx0cmVlU2NhbGU6e3g6MSx5OjF9LGRlbHRhOmduKCksZGVsdGFGaW5hbDpnbigpLGRlbHRhVHJhbnNmb3JtOlwiXCJ9fXZhciBqcj1NcigpO2Z1bmN0aW9uIGtyKGUsdCxuKXt2YXIgcj1lLngsbz1lLnksaT1cInRyYW5zbGF0ZTNkKFwiK3IudHJhbnNsYXRlL3QueCtcInB4LCBcIitvLnRyYW5zbGF0ZS90LnkrXCJweCwgMCkgXCI7aWYobil7dmFyIGE9bi5yb3RhdGUsbD1uLnJvdGF0ZVgscz1uLnJvdGF0ZVk7YSYmKGkrPVwicm90YXRlKFwiK2ErXCIpIFwiKSxsJiYoaSs9XCJyb3RhdGVYKFwiK2wrXCIpIFwiKSxzJiYoaSs9XCJyb3RhdGVZKFwiK3MrXCIpIFwiKX1yZXR1cm4gaSs9XCJzY2FsZShcIityLnNjYWxlK1wiLCBcIitvLnNjYWxlK1wiKVwiLG58fGkhPT1Qcj9pOlwiXCJ9ZnVuY3Rpb24gUnIoZSl7dmFyIHQ9ZS5kZWx0YUZpbmFsO3JldHVybiAxMDAqdC54Lm9yaWdpbitcIiUgXCIrMTAwKnQueS5vcmlnaW4rXCIlIDBcIn12YXIgUHI9a3IoanIuZGVsdGEsanIudHJlZVNjYWxlLHt4OjEseToxfSksQXI9W1wiTGF5b3V0TWVhc3VyZVwiLFwiQmVmb3JlTGF5b3V0TWVhc3VyZVwiLFwiTGF5b3V0VXBkYXRlXCIsXCJWaWV3cG9ydEJveFVwZGF0ZVwiLFwiVXBkYXRlXCIsXCJSZW5kZXJcIixcIkFuaW1hdGlvbkNvbXBsZXRlXCIsXCJMYXlvdXRBbmltYXRpb25Db21wbGV0ZVwiLFwiQW5pbWF0aW9uU3RhcnRcIixcIlNldEF4aXNUYXJnZXRcIixcIlVubW91bnRcIl0sSXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5jaGlsZHJlbj1bXSx0aGlzLmlzRGlydHk9ITF9cmV0dXJuIGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXtJdCh0aGlzLmNoaWxkcmVuLGUpLHRoaXMuaXNEaXJ0eT0hMH0sZS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGUpe1R0KHRoaXMuY2hpbGRyZW4sZSksdGhpcy5pc0RpcnR5PSEwfSxlLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGUpe3RoaXMuaXNEaXJ0eSYmdGhpcy5jaGlsZHJlbi5zb3J0KGtuKSx0aGlzLmlzRGlydHk9ITEsdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGUpfSxlfSgpLFRyPWZ1bmN0aW9uKGUpe3ZhciB0PWUudHJlZVR5cGUsbj12b2lkIDA9PT10P1wiXCI6dCxvPWUuYnVpbGQsaT1lLmdldEJhc2VUYXJnZXQsYT1lLm1ha2VUYXJnZXRBbmltYXRhYmxlLGM9ZS5tZWFzdXJlVmlld3BvcnRCb3gsdT1lLnJlbmRlcixmPWUucmVhZFZhbHVlRnJvbUluc3RhbmNlLHA9ZS5yZXNldFRyYW5zZm9ybSxoPWUucmVzdG9yZVRyYW5zZm9ybSx2PWUucmVtb3ZlVmFsdWVGcm9tUmVuZGVyU3RhdGUsZz1lLnNvcnROb2RlUG9zaXRpb24sQz1lLnNjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wcztyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbT1lLnBhcmVudCx5PWUucHJvcHMsdz1lLnByZXNlbmNlSWQsYj1lLmJsb2NrSW5pdGlhbEFuaW1hdGlvbix4PWUudmlzdWFsU3RhdGU7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBfLEwsTyxFLFMsTSxqPXgubGF0ZXN0VmFsdWVzLGs9eC5yZW5kZXJTdGF0ZSxSPWZ1bmN0aW9uKCl7dmFyIGU9QXIubWFwKChmdW5jdGlvbigpe3JldHVybiBuZXcgSHR9KSksdD17fSxuPXtjbGVhckFsbExpc3RlbmVyczpmdW5jdGlvbigpe3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsZWFyKCl9KSl9LHVwZGF0ZVByb3BMaXN0ZW5lcnM6ZnVuY3Rpb24oZSl7cmV0dXJuIEFyLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ZhciBvO251bGw9PT0obz10W3JdKXx8dm9pZCAwPT09b3x8by5jYWxsKHQpO3ZhciBpPVwib25cIityLGE9ZVtpXTthJiYodFtyXT1uW2ldKGEpKX0pKX19O3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7bltcIm9uXCIrQXJbdF1dPWZ1bmN0aW9uKHQpe3JldHVybiBlLmFkZCh0KX0sbltcIm5vdGlmeVwiK0FyW3RdXT1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZS5ub3RpZnkuYXBwbHkoZSxyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQodCkpKX19KSksbn0oKSxQPXtpc0VuYWJsZWQ6ITEsaXNIeWRyYXRlZDohMSxpc1RhcmdldExvY2tlZDohMSx0YXJnZXQ6e3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19LHRhcmdldEZpbmFsOnt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fX0sQT1QLFQ9aixIPU1yKCksRD0hMSxaPW5ldyBNYXAsJD1uZXcgTWFwLEY9e30sTj1yLl9fYXNzaWduKHt9LGopO2Z1bmN0aW9uIFUoKXtfJiYoUS5pc1Byb2plY3Rpb25SZWFkeSgpJiYoem4oQS50YXJnZXRGaW5hbCxBLnRhcmdldCxUKSxibihILmRlbHRhRmluYWwsSC5sYXlvdXRDb3JyZWN0ZWQsQS50YXJnZXRGaW5hbCxqKSksVygpLHUoXyxrKSl9ZnVuY3Rpb24gVygpe3ZhciBlPWo7aWYoRSYmRS5pc0FjdGl2ZSgpKXt2YXIgbj1FLmdldENyb3NzZmFkZVN0YXRlKFEpO24mJihlPW4pfW8oUSxrLGUsQSxILHQseSl9ZnVuY3Rpb24geigpe1Iubm90aWZ5VXBkYXRlKGopfWZ1bmN0aW9uIEcoKXtRLmxheW91dFRyZWUuZm9yRWFjaChWcil9dmFyIHE9Qyh5KTtmb3IodmFyIFkgaW4gcSl7dmFyIEs9cVtZXTt2b2lkIDAhPT1qW1ldJiZlZShLKSYmSy5zZXQoaltZXSwhMSl9dmFyIFg9Vih5KSxKPUIoeSksUT1yLl9fYXNzaWduKHIuX19hc3NpZ24oe3RyZWVUeXBlOm4sY3VycmVudDpudWxsLGRlcHRoOm0/bS5kZXB0aCsxOjAscGFyZW50Om0sY2hpbGRyZW46bmV3IFNldCxwYXRoOm0/ci5fX3NwcmVhZEFycmF5KHIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZChtLnBhdGgpKSxbbV0pOltdLGxheW91dFRyZWU6bT9tLmxheW91dFRyZWU6bmV3IElyLHByZXNlbmNlSWQ6dyxwcm9qZWN0aW9uOlAsdmFyaWFudENoaWxkcmVuOko/bmV3IFNldDp2b2lkIDAsaXNWaXNpYmxlOnZvaWQgMCxtYW51YWxseUFuaW1hdGVPbk1vdW50OkJvb2xlYW4obnVsbD09bT92b2lkIDA6bS5pc01vdW50ZWQoKSksYmxvY2tJbml0aWFsQW5pbWF0aW9uOmIsaXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4oXyl9LG1vdW50OmZ1bmN0aW9uKGUpe189US5jdXJyZW50PWUsUS5wb2ludFRvKFEpLEomJm0mJiFYJiYoTT1udWxsPT1tP3ZvaWQgMDptLmFkZFZhcmlhbnRDaGlsZChRKSksbnVsbD09bXx8bS5jaGlsZHJlbi5hZGQoUSl9LHVubW91bnQ6ZnVuY3Rpb24oKXtzLmNhbmNlbFN5bmMudXBkYXRlKHopLHMuY2FuY2VsU3luYy5yZW5kZXIoVSkscy5jYW5jZWxTeW5jLnByZVJlbmRlcihRLnVwZGF0ZUxheW91dFByb2plY3Rpb24pLCQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pKSxRLnN0b3BMYXlvdXRBbmltYXRpb24oKSxRLmxheW91dFRyZWUucmVtb3ZlKFEpLG51bGw9PU18fE0oKSxudWxsPT1tfHxtLmNoaWxkcmVuLmRlbGV0ZShRKSxudWxsPT1PfHxPKCksUi5jbGVhckFsbExpc3RlbmVycygpfSxhZGRWYXJpYW50Q2hpbGQ6ZnVuY3Rpb24oZSl7dmFyIHQsbj1RLmdldENsb3Nlc3RWYXJpYW50Tm9kZSgpO2lmKG4pcmV0dXJuIG51bGw9PT0odD1uLnZhcmlhbnRDaGlsZHJlbil8fHZvaWQgMD09PXR8fHQuYWRkKGUpLGZ1bmN0aW9uKCl7cmV0dXJuIG4udmFyaWFudENoaWxkcmVuLmRlbGV0ZShlKX19LHNvcnROb2RlUG9zaXRpb246ZnVuY3Rpb24oZSl7cmV0dXJuIGcmJm49PT1lLnRyZWVUeXBlP2coUS5nZXRJbnN0YW5jZSgpLGUuZ2V0SW5zdGFuY2UoKSk6MH0sZ2V0Q2xvc2VzdFZhcmlhbnROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIEo/UTpudWxsPT1tP3ZvaWQgMDptLmdldENsb3Nlc3RWYXJpYW50Tm9kZSgpfSxzY2hlZHVsZVVwZGF0ZUxheW91dFByb2plY3Rpb246bT9tLnNjaGVkdWxlVXBkYXRlTGF5b3V0UHJvamVjdGlvbjpmdW5jdGlvbigpe3JldHVybiBkLmRlZmF1bHQucHJlUmVuZGVyKFEudXBkYXRlVHJlZUxheW91dFByb2plY3Rpb24sITEsITApfSxnZXRMYXlvdXRJZDpmdW5jdGlvbigpe3JldHVybiB5LmxheW91dElkfSxnZXRJbnN0YW5jZTpmdW5jdGlvbigpe3JldHVybiBffSxnZXRTdGF0aWNWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4galtlXX0sc2V0U3RhdGljVmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4galtlXT10fSxnZXRMYXRlc3RWYWx1ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gan0sc2V0VmlzaWJpbGl0eTpmdW5jdGlvbihlKXtRLmlzVmlzaWJsZSE9PWUmJihRLmlzVmlzaWJsZT1lLFEuc2NoZWR1bGVSZW5kZXIoKSl9LG1ha2VUYXJnZXRBbmltYXRhYmxlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSEwKSxhKFEsZSx5LHQpfSxhZGRWYWx1ZTpmdW5jdGlvbihlLHQpe1EuaGFzVmFsdWUoZSkmJlEucmVtb3ZlVmFsdWUoZSksWi5zZXQoZSx0KSxqW2VdPXQuZ2V0KCksZnVuY3Rpb24oZSx0KXt2YXIgbj10Lm9uQ2hhbmdlKChmdW5jdGlvbih0KXtqW2VdPXQseS5vblVwZGF0ZSYmZC5kZWZhdWx0LnVwZGF0ZSh6LCExLCEwKX0pKSxyPXQub25SZW5kZXJSZXF1ZXN0KFEuc2NoZWR1bGVSZW5kZXIpOyQuc2V0KGUsKGZ1bmN0aW9uKCl7bigpLHIoKX0pKX0oZSx0KX0scmVtb3ZlVmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7Wi5kZWxldGUoZSksbnVsbD09PSh0PSQuZ2V0KGUpKXx8dm9pZCAwPT09dHx8dCgpLCQuZGVsZXRlKGUpLGRlbGV0ZSBqW2VdLHYoZSxrKX0saGFzVmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFouaGFzKGUpfSxnZXRWYWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPVouZ2V0KGUpO3JldHVybiB2b2lkIDA9PT1uJiZ2b2lkIDAhPT10JiYobj1CdCh0KSxRLmFkZFZhbHVlKGUsbikpLG59LGZvckVhY2hWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gWi5mb3JFYWNoKGUpfSxyZWFkVmFsdWU6ZnVuY3Rpb24oZSl7dmFyIG47cmV0dXJuIG51bGwhPT0obj1qW2VdKSYmdm9pZCAwIT09bj9uOmYoXyxlLHQpfSxzZXRCYXNlVGFyZ2V0OmZ1bmN0aW9uKGUsdCl7TltlXT10fSxnZXRCYXNlVGFyZ2V0OmZ1bmN0aW9uKGUpe2lmKGkpe3ZhciB0PWkoeSxlKTtpZih2b2lkIDAhPT10JiYhZWUodCkpcmV0dXJuIHR9cmV0dXJuIE5bZV19fSxSKSx7YnVpbGQ6ZnVuY3Rpb24oKXtyZXR1cm4gVygpLGt9LHNjaGVkdWxlUmVuZGVyOmZ1bmN0aW9uKCl7ZC5kZWZhdWx0LnJlbmRlcihVLCExLCEwKX0sc3luY1JlbmRlcjpVLHNldFByb3BzOmZ1bmN0aW9uKGUpe3k9ZSxSLnVwZGF0ZVByb3BMaXN0ZW5lcnMoZSksRj1mdW5jdGlvbihlLHQsbil7dmFyIHI7Zm9yKHZhciBvIGluIHQpe3ZhciBpPXRbb10sYT1uW29dO2lmKGVlKGkpKWUuYWRkVmFsdWUobyxpKTtlbHNlIGlmKGVlKGEpKWUuYWRkVmFsdWUobyxCdChpKSk7ZWxzZSBpZihhIT09aSlpZihlLmhhc1ZhbHVlKG8pKXt2YXIgbD1lLmdldFZhbHVlKG8pOyFsLmhhc0FuaW1hdGVkJiZsLnNldChpKX1lbHNlIGUuYWRkVmFsdWUobyxCdChudWxsIT09KHI9ZS5nZXRTdGF0aWNWYWx1ZShvKSkmJnZvaWQgMCE9PXI/cjppKSl9Zm9yKHZhciBvIGluIG4pdm9pZCAwPT09dFtvXSYmZS5yZW1vdmVWYWx1ZShvKTtyZXR1cm4gdH0oUSxDKHkpLEYpfSxnZXRQcm9wczpmdW5jdGlvbigpe3JldHVybiB5fSxnZXRWYXJpYW50OmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBudWxsPT09KHQ9eS52YXJpYW50cyl8fHZvaWQgMD09PXQ/dm9pZCAwOnRbZV19LGdldERlZmF1bHRUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHkudHJhbnNpdGlvbn0sZ2V0VmFyaWFudENvbnRleHQ6ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSYmKGU9ITEpLGUpcmV0dXJuIG51bGw9PW0/dm9pZCAwOm0uZ2V0VmFyaWFudENvbnRleHQoKTtpZighWCl7dmFyIHQ9KG51bGw9PW0/dm9pZCAwOm0uZ2V0VmFyaWFudENvbnRleHQoKSl8fHt9O3JldHVybiB2b2lkIDAhPT15LmluaXRpYWwmJih0LmluaXRpYWw9eS5pbml0aWFsKSx0fWZvcih2YXIgbj17fSxyPTA7cjxacjtyKyspe3ZhciBvPURyW3JdLGk9eVtvXTsoSShpKXx8ITE9PT1pKSYmKG5bb109aSl9cmV0dXJuIG59LGVuYWJsZUxheW91dFByb2plY3Rpb246ZnVuY3Rpb24oKXtQLmlzRW5hYmxlZD0hMCxRLmxheW91dFRyZWUuYWRkKFEpfSxsb2NrUHJvamVjdGlvblRhcmdldDpmdW5jdGlvbigpe1AuaXNUYXJnZXRMb2NrZWQ9ITB9LHVubG9ja1Byb2plY3Rpb25UYXJnZXQ6ZnVuY3Rpb24oKXtRLnN0b3BMYXlvdXRBbmltYXRpb24oKSxQLmlzVGFyZ2V0TG9ja2VkPSExfSxnZXRMYXlvdXRTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBIfSxzZXRDcm9zc2ZhZGVyOmZ1bmN0aW9uKGUpe0U9ZX0saXNQcm9qZWN0aW9uUmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gUC5pc0VuYWJsZWQmJlAuaXNIeWRyYXRlZCYmSC5pc0h5ZHJhdGVkfSxzdGFydExheW91dEFuaW1hdGlvbjpmdW5jdGlvbihlLHQsbil7dm9pZCAwPT09biYmKG49ITEpO3ZhciByPVEuZ2V0UHJvamVjdGlvbkFuaW1hdGlvblByb2dyZXNzKClbZV0sbz1uP1AucmVsYXRpdmVUYXJnZXRbZV06UC50YXJnZXRbZV0saT1vLm1pbixhPW8ubWF4LWk7cmV0dXJuIHIuY2xlYXJMaXN0ZW5lcnMoKSxyLnNldChpKSxyLnNldChpKSxyLm9uQ2hhbmdlKChmdW5jdGlvbih0KXtRLnNldFByb2plY3Rpb25UYXJnZXRBeGlzKGUsdCx0K2Esbil9KSksUS5hbmltYXRlTW90aW9uVmFsdWUoZSxyLDAsdCl9LHN0b3BMYXlvdXRBbmltYXRpb246ZnVuY3Rpb24oKXtDbigoZnVuY3Rpb24oZSl7cmV0dXJuIFEuZ2V0UHJvamVjdGlvbkFuaW1hdGlvblByb2dyZXNzKClbZV0uc3RvcCgpfSkpfSxtZWFzdXJlVmlld3BvcnRCb3g6ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9ITApO3ZhciBuPWMoXyx0KTtyZXR1cm4gZXx8WW4obixqKSxufSxnZXRQcm9qZWN0aW9uQW5pbWF0aW9uUHJvZ3Jlc3M6ZnVuY3Rpb24oKXtyZXR1cm4gU3x8KFM9e3g6QnQoMCkseTpCdCgwKX0pLFN9LHNldFByb2plY3Rpb25UYXJnZXRBeGlzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvO3ZvaWQgMD09PXImJihyPSExKSxyPyhQLnJlbGF0aXZlVGFyZ2V0fHwoUC5yZWxhdGl2ZVRhcmdldD17eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX0pLG89UC5yZWxhdGl2ZVRhcmdldFtlXSk6KFAucmVsYXRpdmVUYXJnZXQ9dm9pZCAwLG89UC50YXJnZXRbZV0pLFAuaXNIeWRyYXRlZD0hMCxvLm1pbj10LG8ubWF4PW4sRD0hMCxSLm5vdGlmeVNldEF4aXNUYXJnZXQoKX0scmViYXNlUHJvamVjdGlvblRhcmdldDpmdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PUgubGF5b3V0KTt2YXIgbj1RLmdldFByb2plY3Rpb25BbmltYXRpb25Qcm9ncmVzcygpLHI9bi54LG89bi55LGk9IShQLnJlbGF0aXZlVGFyZ2V0fHxQLmlzVGFyZ2V0TG9ja2VkfHxyLmlzQW5pbWF0aW5nKCl8fG8uaXNBbmltYXRpbmcoKSk7KGV8fGkpJiZDbigoZnVuY3Rpb24oZSl7dmFyIG49dFtlXSxyPW4ubWluLG89bi5tYXg7US5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyhlLHIsbyl9KSl9LG5vdGlmeUxheW91dFJlYWR5OmZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXt2YXIgdD1lLmdldFByb2plY3Rpb25QYXJlbnQoKTtpZih0KXt2YXIgbj1Ibih0LmdldExheW91dFN0YXRlKCkubGF5b3V0LGUuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXQpO0NuKChmdW5jdGlvbih0KXtlLnNldFByb2plY3Rpb25UYXJnZXRBeGlzKHQsblt0XS5taW4sblt0XS5tYXgsITApfSkpfWVsc2UgZS5yZWJhc2VQcm9qZWN0aW9uVGFyZ2V0KCl9KFEpLFEubm90aWZ5TGF5b3V0VXBkYXRlKEgubGF5b3V0LFEucHJldlZpZXdwb3J0Qm94fHxILmxheW91dCxlKX0scmVzZXRUcmFuc2Zvcm06ZnVuY3Rpb24oKXtyZXR1cm4gcChRLF8seSl9LHJlc3RvcmVUcmFuc2Zvcm06ZnVuY3Rpb24oKXtyZXR1cm4gaChfLGspfSx1cGRhdGVMYXlvdXRQcm9qZWN0aW9uOmZ1bmN0aW9uKCl7aWYoUS5pc1Byb2plY3Rpb25SZWFkeSgpKXt2YXIgZT1ILmRlbHRhLHQ9SC50cmVlU2NhbGUsbj10Lngscj10Lnksbz1ILmRlbHRhVHJhbnNmb3JtOyhmdW5jdGlvbihlLHQsbixyKXt2YXIgbyxpLGE9ZS5kZWx0YSxsPWUubGF5b3V0LHM9ZS5sYXlvdXRDb3JyZWN0ZWQsYz1lLnRyZWVTY2FsZSx1PXQudGFyZ2V0O2k9bCxCbigobz1zKS54LGkueCksQm4oby55LGkueSksZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4ubGVuZ3RoO2lmKHIpe3ZhciBvLGk7dC54PXQueT0xO2Zvcih2YXIgYT0wO2E8cjthKyspaT0obz1uW2FdKS5nZXRMYXlvdXRTdGF0ZSgpLmRlbHRhLHQueCo9aS54LnNjYWxlLHQueSo9aS55LnNjYWxlLEZuKGUsaSksVm4obykmJnpuKGUsZSxvLmdldExhdGVzdFZhbHVlcygpKX19KHMsYyxuKSxibihhLHMsdSxyKX0pKEgsQSxRLnBhdGgsaiksRCYmUS5ub3RpZnlWaWV3cG9ydEJveFVwZGF0ZShBLnRhcmdldCxlKSxEPSExO3ZhciBpPWtyKGUsdCk7aT09PW8mJm49PT10LngmJnI9PT10Lnl8fFEuc2NoZWR1bGVSZW5kZXIoKSxILmRlbHRhVHJhbnNmb3JtPWl9fSx1cGRhdGVUcmVlTGF5b3V0UHJvamVjdGlvbjpmdW5jdGlvbigpe1EubGF5b3V0VHJlZS5mb3JFYWNoKEhyKSxkLmRlZmF1bHQucHJlUmVuZGVyKEcsITEsITApfSxnZXRQcm9qZWN0aW9uUGFyZW50OmZ1bmN0aW9uKCl7aWYodm9pZCAwPT09TCl7Zm9yKHZhciBlPSExLHQ9US5wYXRoLmxlbmd0aC0xO3Q+PTA7dC0tKXt2YXIgbj1RLnBhdGhbdF07aWYobi5wcm9qZWN0aW9uLmlzRW5hYmxlZCl7ZT1uO2JyZWFrfX1MPWV9cmV0dXJuIEx9LHJlc29sdmVSZWxhdGl2ZVRhcmdldEJveDpmdW5jdGlvbigpe3ZhciBlPVEuZ2V0UHJvamVjdGlvblBhcmVudCgpO2lmKFAucmVsYXRpdmVUYXJnZXQmJmUmJihmdW5jdGlvbihlLHQpe19uKGUudGFyZ2V0LngsZS5yZWxhdGl2ZVRhcmdldC54LHQudGFyZ2V0LngpLF9uKGUudGFyZ2V0LnksZS5yZWxhdGl2ZVRhcmdldC55LHQudGFyZ2V0LnkpfShQLGUucHJvamVjdGlvbiksVm4oZSkpKXt2YXIgdD1QLnRhcmdldDt6bih0LHQsZS5nZXRMYXRlc3RWYWx1ZXMoKSl9fSxzaG91bGRSZXNldFRyYW5zZm9ybTpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHkuX2xheW91dFJlc2V0VHJhbnNmb3JtKX0scG9pbnRUbzpmdW5jdGlvbihlKXtBPWUucHJvamVjdGlvbixUPWUuZ2V0TGF0ZXN0VmFsdWVzKCksbnVsbD09T3x8TygpLE89bC5waXBlKGUub25TZXRBeGlzVGFyZ2V0KFEuc2NoZWR1bGVVcGRhdGVMYXlvdXRQcm9qZWN0aW9uKSxlLm9uTGF5b3V0QW5pbWF0aW9uQ29tcGxldGUoKGZ1bmN0aW9uKCl7dmFyIGU7US5pc1ByZXNlbnQ/US5wcmVzZW5jZT1pci5QcmVzZW50Om51bGw9PT0oZT1RLmxheW91dFNhZmVUb1JlbW92ZSl8fHZvaWQgMD09PWV8fGUuY2FsbChRKX0pKSl9LGlzUHJlc2VudDohMCxwcmVzZW5jZTppci5FbnRlcmluZ30pO3JldHVybiBRfX07ZnVuY3Rpb24gSHIoZSl7ZS5yZXNvbHZlUmVsYXRpdmVUYXJnZXRCb3goKX1mdW5jdGlvbiBWcihlKXtlLnVwZGF0ZUxheW91dFByb2plY3Rpb24oKX12YXIgQnIsRHI9ci5fX3NwcmVhZEFycmF5KFtcImluaXRpYWxcIl0sci5fX3JlYWQoZW4pKSxacj1Eci5sZW5ndGgsJHI9bmV3IFNldChbXCJ3aWR0aFwiLFwiaGVpZ2h0XCIsXCJ0b3BcIixcImxlZnRcIixcInJpZ2h0XCIsXCJib3R0b21cIixcInhcIixcInlcIl0pLEZyPWZ1bmN0aW9uKGUpe3JldHVybiAkci5oYXMoZSl9LE5yPWZ1bmN0aW9uKGUsdCl7ZS5zZXQodCwhMSksZS5zZXQodCl9LFVyPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09YS5udW1iZXJ8fGU9PT1hLnB4fTshZnVuY3Rpb24oZSl7ZS53aWR0aD1cIndpZHRoXCIsZS5oZWlnaHQ9XCJoZWlnaHRcIixlLmxlZnQ9XCJsZWZ0XCIsZS5yaWdodD1cInJpZ2h0XCIsZS50b3A9XCJ0b3BcIixlLmJvdHRvbT1cImJvdHRvbVwifShCcnx8KEJyPXt9KSk7dmFyIFdyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHBhcnNlRmxvYXQoZS5zcGxpdChcIiwgXCIpW3RdKX0senI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXt2YXIgbz1yLnRyYW5zZm9ybTtpZihcIm5vbmVcIj09PW98fCFvKXJldHVybiAwO3ZhciBpPW8ubWF0Y2goL15tYXRyaXgzZFxcKCguKylcXCkkLyk7aWYoaSlyZXR1cm4gV3IoaVsxXSx0KTt2YXIgYT1vLm1hdGNoKC9ebWF0cml4XFwoKC4rKVxcKSQvKTtyZXR1cm4gYT9XcihhWzFdLGUpOjB9fSxHcj1uZXcgU2V0KFtcInhcIixcInlcIixcInpcIl0pLHFyPUcuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hR3IuaGFzKGUpfSkpLFlyPXt3aWR0aDpmdW5jdGlvbihlKXt2YXIgdD1lLng7cmV0dXJuIHQubWF4LXQubWlufSxoZWlnaHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS55O3JldHVybiB0Lm1heC10Lm1pbn0sdG9wOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC50b3A7cmV0dXJuIHBhcnNlRmxvYXQobil9LGxlZnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmxlZnQ7cmV0dXJuIHBhcnNlRmxvYXQobil9LGJvdHRvbTpmdW5jdGlvbihlLHQpe3ZhciBuPWUueSxyPXQudG9wO3JldHVybiBwYXJzZUZsb2F0KHIpKyhuLm1heC1uLm1pbil9LHJpZ2h0OmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS54LHI9dC5sZWZ0O3JldHVybiBwYXJzZUZsb2F0KHIpKyhuLm1heC1uLm1pbil9LHg6enIoNCwxMykseTp6cig1LDE0KX07ZnVuY3Rpb24gS3IoZSx0LG4sbyl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5zb21lKEZyKX0odCk/ZnVuY3Rpb24oZSx0LG4sbyl7dm9pZCAwPT09biYmKG49e30pLHZvaWQgMD09PW8mJihvPXt9KSx0PXIuX19hc3NpZ24oe30sdCksbz1yLl9fYXNzaWduKHt9LG8pO3ZhciBsPU9iamVjdC5rZXlzKHQpLmZpbHRlcihGcikscz1bXSxjPSExLHU9W107aWYobC5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgbD1lLmdldFZhbHVlKHIpO2lmKGUuaGFzVmFsdWUocikpe3ZhciBmLGQ9bltyXSxwPXRbcl0saD0kdChkKTtpZihrZShwKSlmb3IodmFyIHY9cC5sZW5ndGgsZz1udWxsPT09cFswXT8xOjA7Zzx2O2crKylmP2kuaW52YXJpYW50KCR0KHBbZ10pPT09ZixcIkFsbCBrZXlmcmFtZXMgbXVzdCBiZSBvZiB0aGUgc2FtZSB0eXBlXCIpOihmPSR0KHBbZ10pLGkuaW52YXJpYW50KGY9PT1ofHxVcihoKSYmVXIoZiksXCJLZXlmcmFtZXMgbXVzdCBiZSBvZiB0aGUgc2FtZSBkaW1lbnNpb24gYXMgdGhlIGN1cnJlbnQgdmFsdWVcIikpO2Vsc2UgZj0kdChwKTtpZihoIT09ZilpZihVcihoKSYmVXIoZikpe3ZhciBDPWwuZ2V0KCk7XCJzdHJpbmdcIj09dHlwZW9mIEMmJmwuc2V0KHBhcnNlRmxvYXQoQykpLFwic3RyaW5nXCI9PXR5cGVvZiBwP3Rbcl09cGFyc2VGbG9hdChwKTpBcnJheS5pc0FycmF5KHApJiZmPT09YS5weCYmKHRbcl09cC5tYXAocGFyc2VGbG9hdCkpfWVsc2UobnVsbD09aD92b2lkIDA6aC50cmFuc2Zvcm0pJiYobnVsbD09Zj92b2lkIDA6Zi50cmFuc2Zvcm0pJiYoMD09PWR8fDA9PT1wKT8wPT09ZD9sLnNldChmLnRyYW5zZm9ybShkKSk6dFtyXT1oLnRyYW5zZm9ybShwKTooY3x8KHM9ZnVuY3Rpb24oZSl7dmFyIHQ9W107cmV0dXJuIHFyLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciByPWUuZ2V0VmFsdWUobik7dm9pZCAwIT09ciYmKHQucHVzaChbbixyLmdldCgpXSksci5zZXQobi5zdGFydHNXaXRoKFwic2NhbGVcIik/MTowKSl9KSksdC5sZW5ndGgmJmUuc3luY1JlbmRlcigpLHR9KGUpLGM9ITApLHUucHVzaChyKSxvW3JdPXZvaWQgMCE9PW9bcl0/b1tyXTp0W3JdLE5yKGwscCkpfX0pKSx1Lmxlbmd0aCl7dmFyIGY9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQubWVhc3VyZVZpZXdwb3J0Qm94KCksbz10LmdldEluc3RhbmNlKCksaT1nZXRDb21wdXRlZFN0eWxlKG8pLGE9aS5kaXNwbGF5LGw9e3RvcDppLnRvcCxsZWZ0OmkubGVmdCxib3R0b206aS5ib3R0b20scmlnaHQ6aS5yaWdodCx0cmFuc2Zvcm06aS50cmFuc2Zvcm19O1wibm9uZVwiPT09YSYmdC5zZXRTdGF0aWNWYWx1ZShcImRpc3BsYXlcIixlLmRpc3BsYXl8fFwiYmxvY2tcIiksdC5zeW5jUmVuZGVyKCk7dmFyIHM9dC5tZWFzdXJlVmlld3BvcnRCb3goKTtyZXR1cm4gbi5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgbz10LmdldFZhbHVlKG4pO05yKG8sWXJbbl0ocixsKSksZVtuXT1ZcltuXShzLGkpfSkpLGV9KHQsZSx1KTtyZXR1cm4gcy5sZW5ndGgmJnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49ci5fX3JlYWQodCwyKSxvPW5bMF0saT1uWzFdO2UuZ2V0VmFsdWUobykuc2V0KGkpfSkpLGUuc3luY1JlbmRlcigpLHt0YXJnZXQ6Zix0cmFuc2l0aW9uRW5kOm99fXJldHVybnt0YXJnZXQ6dCx0cmFuc2l0aW9uRW5kOm99fShlLHQsbixvKTp7dGFyZ2V0OnQsdHJhbnNpdGlvbkVuZDpvfX12YXIgWHI9e3RyZWVUeXBlOlwiZG9tXCIscmVhZFZhbHVlRnJvbUluc3RhbmNlOmZ1bmN0aW9uKGUsdCl7aWYoSyh0KSl7dmFyIG49U3QodCk7cmV0dXJuIG4mJm4uZGVmYXVsdHx8MH12YXIgcixvPShyPWUsd2luZG93LmdldENvbXB1dGVkU3R5bGUocikpO3JldHVybihuZSh0KT9vLmdldFByb3BlcnR5VmFsdWUodCk6b1t0XSl8fDB9LHNvcnROb2RlUG9zaXRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpPzE6LTF9LGdldEJhc2VUYXJnZXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gbnVsbD09PShuPWUuc3R5bGUpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuW3RdfSxtZWFzdXJlVmlld3BvcnRCb3g6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gam4oZSx0LnRyYW5zZm9ybVBhZ2VQb2ludCl9LHJlc2V0VHJhbnNmb3JtOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uLnRyYW5zZm9ybVRlbXBsYXRlO3Quc3R5bGUudHJhbnNmb3JtPXI/cih7fSxcIlwiKTpcIm5vbmVcIixlLnNjaGVkdWxlUmVuZGVyKCl9LHJlc3RvcmVUcmFuc2Zvcm06ZnVuY3Rpb24oZSx0KXtlLnN0eWxlLnRyYW5zZm9ybT10LnN0eWxlLnRyYW5zZm9ybX0scmVtb3ZlVmFsdWVGcm9tUmVuZGVyU3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnZhcnMscj10LnN0eWxlO2RlbGV0ZSBuW2VdLGRlbGV0ZSByW2VdfSxtYWtlVGFyZ2V0QW5pbWF0YWJsZTpmdW5jdGlvbihlLHQsbixvKXt2YXIgaT1uLnRyYW5zZm9ybVZhbHVlczt2b2lkIDA9PT1vJiYobz0hMCk7dmFyIGE9dC50cmFuc2l0aW9uLGw9dC50cmFuc2l0aW9uRW5kLHM9ci5fX3Jlc3QodCxbXCJ0cmFuc2l0aW9uXCIsXCJ0cmFuc2l0aW9uRW5kXCJdKSxjPXF0KHMsYXx8e30sZSk7aWYoaSYmKGwmJihsPWkobCkpLHMmJihzPWkocykpLGMmJihjPWkoYykpKSxvKXt6dChlLHMsYyk7dmFyIHU9ZnVuY3Rpb24oZSx0LG4sbyl7dmFyIGk9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvLGk9ci5fX3Jlc3QodCxbXSksYT1lLmdldEluc3RhbmNlKCk7aWYoIShhIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKXJldHVybnt0YXJnZXQ6aSx0cmFuc2l0aW9uRW5kOm59O2Zvcih2YXIgbCBpbiBuJiYobj1yLl9fYXNzaWduKHt9LG4pKSxlLmZvckVhY2hWYWx1ZSgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXQoKTtpZihzcih0KSl7dmFyIG49dXIodCxhKTtuJiZlLnNldChuKX19KSksaSl7dmFyIHM9aVtsXTtpZihzcihzKSl7dmFyIGM9dXIocyxhKTtjJiYoaVtsXT1jLG4mJihudWxsIT09KG89bltsXSkmJnZvaWQgMCE9PW98fChuW2xdPXMpKSl9fXJldHVybnt0YXJnZXQ6aSx0cmFuc2l0aW9uRW5kOm59fShlLHQsbyk7cmV0dXJuIEtyKGUsdD1pLnRhcmdldCxuLG89aS50cmFuc2l0aW9uRW5kKX0oZSxzLGMsbCk7bD11LnRyYW5zaXRpb25FbmQscz11LnRhcmdldH1yZXR1cm4gci5fX2Fzc2lnbih7dHJhbnNpdGlvbjphLHRyYW5zaXRpb25FbmQ6bH0scyl9LHNjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczpTZSxidWlsZDpmdW5jdGlvbihlLHQsbixyLG8saSxhKXt2b2lkIDAhPT1lLmlzVmlzaWJsZSYmKHQuc3R5bGUudmlzaWJpbGl0eT1lLmlzVmlzaWJsZT9cInZpc2libGVcIjpcImhpZGRlblwiKTt2YXIgbD1yLmlzRW5hYmxlZCYmby5pc0h5ZHJhdGVkO2FlKHQsbixyLG8saSxhLnRyYW5zZm9ybVRlbXBsYXRlLGw/a3I6dm9pZCAwLGw/UnI6dm9pZCAwKX0scmVuZGVyOkxlfSxKcj1UcihYciksUXI9VHIoci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LFhyKSx7Z2V0QmFzZVRhcmdldDpmdW5jdGlvbihlLHQpe3JldHVybiBlW3RdfSxyZWFkVmFsdWVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gSyh0KT8obnVsbD09PShuPVN0KHQpKXx8dm9pZCAwPT09bj92b2lkIDA6bi5kZWZhdWx0KXx8MDoodD1PZS5oYXModCk/dDpfZSh0KSxlLmdldEF0dHJpYnV0ZSh0KSl9LHNjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczpNZSxidWlsZDpmdW5jdGlvbihlLHQsbixyLG8saSxhKXt2YXIgbD1yLmlzRW5hYmxlZCYmby5pc0h5ZHJhdGVkO21lKHQsbixyLG8saSxhLnRyYW5zZm9ybVRlbXBsYXRlLGw/a3I6dm9pZCAwLGw/UnI6dm9pZCAwKX0scmVuZGVyOkVlfSkpLGVvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE4oZSk/UXIodCx7ZW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRpb246ITF9KTpKcih0LHtlbmFibGVIYXJkd2FyZUFjY2VsZXJhdGlvbjohMH0pfSx0bz1yLl9fYXNzaWduKHIuX19hc3NpZ24oci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG9uKSxwdCksbHIpLFNyKSxubz0kKChmdW5jdGlvbihlLHQpe3JldHVybiBaZShlLHQsdG8sZW8pfSkpLHJvPSQoWmUpLG9vPTA7ZnVuY3Rpb24gaW8oKXt2YXIgZT1vbztyZXR1cm4gb28rKyxlfXZhciBhbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5pbml0aWFsLHI9ZS5pc1ByZXNlbnQsaT1lLm9uRXhpdENvbXBsZXRlLGE9ZS5jdXN0b20sbD1lLnByZXNlbmNlQWZmZWN0c0xheW91dCxzPV8obG8pLGM9XyhpbyksZj1vLnVzZU1lbW8oKGZ1bmN0aW9uKCl7cmV0dXJue2lkOmMsaW5pdGlhbDpuLGlzUHJlc2VudDpyLGN1c3RvbTphLG9uRXhpdENvbXBsZXRlOmZ1bmN0aW9uKGUpe3Muc2V0KGUsITApO3ZhciB0PSEwO3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZXx8KHQ9ITEpfSkpLHQmJihudWxsPT1pfHxpKCkpfSxyZWdpc3RlcjpmdW5jdGlvbihlKXtyZXR1cm4gcy5zZXQoZSwhMSksZnVuY3Rpb24oKXtyZXR1cm4gcy5kZWxldGUoZSl9fX19KSxsP3ZvaWQgMDpbcl0pO3JldHVybiBvLnVzZU1lbW8oKGZ1bmN0aW9uKCl7cy5mb3JFYWNoKChmdW5jdGlvbihlLHQpe3JldHVybiBzLnNldCh0LCExKX0pKX0pLFtyXSksdS51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7IXImJiFzLnNpemUmJihudWxsPT1pfHxpKCkpfSksW3JdKSx1LmNyZWF0ZUVsZW1lbnQoeC5Qcm92aWRlcix7dmFsdWU6Zn0sdCl9O2Z1bmN0aW9uIGxvKCl7cmV0dXJuIG5ldyBNYXB9ZnVuY3Rpb24gc28oZSl7cmV0dXJuIGUua2V5fHxcIlwifWZ1bmN0aW9uIGNvKGUsdCxuKXt2b2lkIDA9PT1uJiYobj17fSk7dmFyIHI9ZWUoZSk/ZTpCdChlKTtyZXR1cm4gQXQoXCJcIixyLHQsbikse3N0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gci5zdG9wKCl9fX1mdW5jdGlvbiB1bygpe3ZhciBlPUJ0KDEpLHQ9e2xlYWQ6dm9pZCAwLGZvbGxvdzp2b2lkIDAsY3Jvc3NmYWRlT3BhY2l0eTohMSxwcmVzZXJ2ZUZvbGxvd09wYWNpdHk6ITF9LG49ci5fX2Fzc2lnbih7fSx0KSxvPXt9LGk9e30sYT0hMSxjPW51bGwsdT0wO2Z1bmN0aW9uIGYobixvKXt2YXIgaT10LmxlYWQsbD10LmZvbGxvdzthPSEwLGM9bnVsbDt2YXIgdT0hMSxmPWZ1bmN0aW9uKCl7dT0hMCxpJiZpLnNjaGVkdWxlUmVuZGVyKCksbCYmbC5zY2hlZHVsZVJlbmRlcigpfSxwPWZ1bmN0aW9uKCl7YT0hMSxjPXMuZ2V0RnJhbWVEYXRhKCkudGltZXN0YW1wfTtyZXR1cm4gbz1vJiZQdChvLFwiY3Jvc3NmYWRlXCIpLGNvKGUsbixyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbykse29uVXBkYXRlOmYsb25Db21wbGV0ZTpmdW5jdGlvbigpe3U/cCgpOihlLnNldChuKSxkLmRlZmF1bHQucmVhZChwKSksZigpfX0pKX1yZXR1cm57aXNBY3RpdmU6ZnVuY3Rpb24oKXtyZXR1cm4gbyYmKGF8fHMuZ2V0RnJhbWVEYXRhKCkudGltZXN0YW1wPT09Yyl9LGZyb21MZWFkOmZ1bmN0aW9uKGUpe3JldHVybiBmKDAsZSl9LHRvTGVhZDpmdW5jdGlvbihyKXt2YXIgbz0wO3JldHVybiB0LnByZXZWYWx1ZXN8fHQuZm9sbG93P24ubGVhZD09PXQuZm9sbG93JiZuLmZvbGxvdz09PXQubGVhZCYmKG89MS1lLmdldCgpKTpvPTEsZS5zZXQobyksZigxLHIpfSxyZXNldDpmdW5jdGlvbigpe3JldHVybiBlLnNldCgxKX0sc3RvcDpmdW5jdGlvbigpe3JldHVybiBlLnN0b3AoKX0sZ2V0Q3Jvc3NmYWRlU3RhdGU6ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG4scixhPXMuZ2V0RnJhbWVEYXRhKCkudGltZXN0YW1wLGM9dC5sZWFkLGY9dC5mb2xsb3c7aWYoYSE9PXUmJmMpe3U9YTt2YXIgZD1jLmdldExhdGVzdFZhbHVlcygpO09iamVjdC5hc3NpZ24obyxkKTt2YXIgcD1mP2YuZ2V0TGF0ZXN0VmFsdWVzKCk6dC5wcmV2VmFsdWVzO09iamVjdC5hc3NpZ24oaSxwKTt2YXIgaD1lLmdldCgpLHY9bnVsbCE9PShuPWQub3BhY2l0eSkmJnZvaWQgMCE9PW4/bjoxLGc9bnVsbCE9PShyPW51bGw9PXA/dm9pZCAwOnAub3BhY2l0eSkmJnZvaWQgMCE9PXI/cjoxO3QuY3Jvc3NmYWRlT3BhY2l0eSYmZj8oby5vcGFjaXR5PWwubWl4KCExIT09Zi5pc1Zpc2libGU/MDpnLHYsZm8oaCkpLGkub3BhY2l0eT10LnByZXNlcnZlRm9sbG93T3BhY2l0eT9nOmwubWl4KGcsMCxwbyhoKSkpOmZ8fChvLm9wYWNpdHk9bC5taXgoZyx2LGgpKSxmdW5jdGlvbihlLHQsbixyLG8saSl7Zm9yKHZhciBhPTA7YTxnbzthKyspe3ZhciBzPVwiYm9yZGVyXCIrdm9bYV0rXCJSYWRpdXNcIixjPUNvKHIscyksdT1DbyhuLHMpO2lmKCh2b2lkIDAhPT1jfHx2b2lkIDAhPT11KSYmKGN8fChjPTApLHV8fCh1PTApLFwibnVtYmVyXCI9PXR5cGVvZiBjJiZcIm51bWJlclwiPT10eXBlb2YgdSkpe3ZhciBmPU1hdGgubWF4KGwubWl4KGMsdSxpKSwwKTtlW3NdPXRbc109Zn19aWYoci5yb3RhdGV8fG4ucm90YXRlKXt2YXIgZD1sLm1peChyLnJvdGF0ZXx8MCxuLnJvdGF0ZXx8MCxpKTtlLnJvdGF0ZT10LnJvdGF0ZT1kfSFvJiZuLmJhY2tncm91bmRDb2xvciYmci5iYWNrZ3JvdW5kQ29sb3ImJihlLmJhY2tncm91bmRDb2xvcj10LmJhY2tncm91bmRDb2xvcj1sLm1peENvbG9yKHIuYmFja2dyb3VuZENvbG9yLG4uYmFja2dyb3VuZENvbG9yKShpKSl9KG8saSxkLHB8fHt9LEJvb2xlYW4oZiksaCl9fSgpLG49PT10LmxlYWQ/bzpuPT09dC5mb2xsb3c/aTp2b2lkIDB9LHNldE9wdGlvbnM6ZnVuY3Rpb24oZSl7bj10LHQ9ZSxvPXt9LGk9e319LGdldExhdGVzdFZhbHVlczpmdW5jdGlvbigpe3JldHVybiBvfX19dmFyIGZvPWhvKDAsLjUsbC5jaXJjT3V0KSxwbz1obyguNSwuOTUsbC5saW5lYXIpO2Z1bmN0aW9uIGhvKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHI8ZT8wOnI+dD8xOm4obC5wcm9ncmVzcyhlLHQscikpfX12YXIgdm89W1wiVG9wTGVmdFwiLFwiVG9wUmlnaHRcIixcIkJvdHRvbUxlZnRcIixcIkJvdHRvbVJpZ2h0XCJdLGdvPXZvLmxlbmd0aDtmdW5jdGlvbiBDbyhlLHQpe3ZhciBuO3JldHVybiBudWxsIT09KG49ZVt0XSkmJnZvaWQgMCE9PW4/bjplLmJvcmRlclJhZGl1c312YXIgbW89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciB0PW51bGwhPT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gdC5jaGlsZHJlbj1uZXcgU2V0LHQuc3RhY2tzPW5ldyBNYXAsdC5oYXNNb3VudGVkPSExLHQudXBkYXRlU2NoZWR1bGVkPSExLHQucmVuZGVyU2NoZWR1bGVkPSExLHQuc3luY0NvbnRleHQ9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGJyKCkpLHtzeW5jVXBkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiB0LnNjaGVkdWxlVXBkYXRlKGUpfSxmb3JjZVVwZGF0ZTpmdW5jdGlvbigpe3Quc3luY0NvbnRleHQ9ci5fX2Fzc2lnbih7fSx0LnN5bmNDb250ZXh0KSx0LnNjaGVkdWxlVXBkYXRlKCEwKX0scmVnaXN0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuYWRkQ2hpbGQoZSl9LHJlbW92ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5yZW1vdmVDaGlsZChlKX19KSx0fXJldHVybiByLl9fZXh0ZW5kcyh0LGUpLHQucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dGhpcy5oYXNNb3VudGVkPSEwfSx0LnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLnN0YXJ0TGF5b3V0QW5pbWF0aW9uKCl9LHQucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlclNjaGVkdWxlZD0hMCwhMH0sdC5wcm90b3R5cGUuc3RhcnRMYXlvdXRBbmltYXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMucmVuZGVyU2NoZWR1bGVkPXRoaXMudXBkYXRlU2NoZWR1bGVkPSExO3ZhciB0PXRoaXMucHJvcHMudHlwZTt0aGlzLmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuaXNQcmVzZW50P2UucHJlc2VuY2UhPT1pci5FbnRlcmluZyYmKGUucHJlc2VuY2U9ZS5wcmVzZW5jZT09PWlyLkV4aXRpbmc/aXIuRW50ZXJpbmc6aXIuUHJlc2VudCk6ZS5wcmVzZW5jZT1pci5FeGl0aW5nfSkpLHRoaXMudXBkYXRlU3RhY2tzKCk7dmFyIG49e2xheW91dFJlYWR5OmZ1bmN0aW9uKG4pe3ZvaWQgMCE9PW4uZ2V0TGF5b3V0SWQoKT9lLmdldFN0YWNrKG4pLmFuaW1hdGUobixcImNyb3NzZmFkZVwiPT09dCk6bi5ub3RpZnlMYXlvdXRSZWFkeSgpfSxwYXJlbnQ6dGhpcy5jb250ZXh0LnZpc3VhbEVsZW1lbnR9O3RoaXMuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuc3luY0NvbnRleHQuYWRkKHQpfSkpLHRoaXMuc3luY0NvbnRleHQuZmx1c2gobiksdGhpcy5zdGFja3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xlYXJTbmFwc2hvdCgpfSkpfSx0LnByb3RvdHlwZS51cGRhdGVTdGFja3M9ZnVuY3Rpb24oKXt0aGlzLnN0YWNrcy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS51cGRhdGVMZWFkQW5kRm9sbG93KCl9KSl9LHQucHJvdG90eXBlLnNjaGVkdWxlVXBkYXRlPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSExKSwhZSYmdGhpcy51cGRhdGVTY2hlZHVsZWR8fCh0aGlzLnVwZGF0ZVNjaGVkdWxlZD0hMCx0aGlzLmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXtmb3IodmFyIHQ9ITEsbj17fSxyPTA7cjx6Lmxlbmd0aDtyKyspe3ZhciBvPVwicm90YXRlXCIreltyXTtlLmhhc1ZhbHVlKG8pJiYwIT09ZS5nZXRTdGF0aWNWYWx1ZShvKSYmKHQ9ITAsbltvXT1lLmdldFN0YXRpY1ZhbHVlKG8pLGUuc2V0U3RhdGljVmFsdWUobywwKSl9aWYodCl7Zm9yKHZhciBvIGluIGUuc3luY1JlbmRlcigpLG4pZS5zZXRTdGF0aWNWYWx1ZShvLG5bb10pO2Uuc2NoZWR1bGVSZW5kZXIoKX19KGUpLGUuc2hvdWxkUmVzZXRUcmFuc2Zvcm0oKSYmZS5yZXNldFRyYW5zZm9ybSgpfSkpLHRoaXMuY2hpbGRyZW4uZm9yRWFjaChJbiksdGhpcy5zdGFja3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudXBkYXRlU25hcHNob3QoKX0pKSwhZSYmdGhpcy5yZW5kZXJTY2hlZHVsZWR8fCh0aGlzLnJlbmRlclNjaGVkdWxlZD0hMCx0aGlzLmZvcmNlVXBkYXRlKCkpKX0sdC5wcm90b3R5cGUuYWRkQ2hpbGQ9ZnVuY3Rpb24oZSl7dGhpcy5jaGlsZHJlbi5hZGQoZSksdGhpcy5hZGRUb1N0YWNrKGUpLGUucHJlc2VuY2U9dGhpcy5oYXNNb3VudGVkP2lyLkVudGVyaW5nOmlyLlByZXNlbnR9LHQucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKGUpe3RoaXMuc2NoZWR1bGVVcGRhdGUoKSx0aGlzLmNoaWxkcmVuLmRlbGV0ZShlKSx0aGlzLnJlbW92ZUZyb21TdGFjayhlKX0sdC5wcm90b3R5cGUuYWRkVG9TdGFjaz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldFN0YWNrKGUpO251bGw9PXR8fHQuYWRkKGUpfSx0LnByb3RvdHlwZS5yZW1vdmVGcm9tU3RhY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRTdGFjayhlKTtudWxsPT10fHx0LnJlbW92ZShlKX0sdC5wcm90b3R5cGUuZ2V0U3RhY2s9ZnVuY3Rpb24oZSl7dmFyIHQsbixvLGksYSxsLHMsYyx1PWUuZ2V0TGF5b3V0SWQoKTtpZih2b2lkIDAhPT11KXJldHVybiF0aGlzLnN0YWNrcy5oYXModSkmJnRoaXMuc3RhY2tzLnNldCh1LChpPW5ldyBTZXQsYT17bGVhZElzRXhpdGluZzohMX0sbD1yLl9fYXNzaWduKHt9LGEpLHM9dW8oKSxjPSExLHthZGQ6ZnVuY3Rpb24oZSl7ZS5zZXRDcm9zc2ZhZGVyKHMpLGkuYWRkKGUpLG8mJihlLnByZXZEcmFnQ3Vyc29yPW8pLGEubGVhZHx8KGEubGVhZD1lKX0scmVtb3ZlOmZ1bmN0aW9uKGUpe2kuZGVsZXRlKGUpfSxnZXRMZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIGEubGVhZH0sdXBkYXRlU25hcHNob3Q6ZnVuY3Rpb24oKXtpZihhLmxlYWQpe3Q9cy5pc0FjdGl2ZSgpP3MuZ2V0TGF0ZXN0VmFsdWVzKCk6YS5sZWFkLmdldExhdGVzdFZhbHVlcygpLG49YS5sZWFkLnByZXZWaWV3cG9ydEJveDt2YXIgZT1uci5nZXQoYS5sZWFkKTtlJiZlLmlzRHJhZ2dpbmcmJihvPWUuY3Vyc29yUHJvZ3Jlc3MpfX0sY2xlYXJTbmFwc2hvdDpmdW5jdGlvbigpe289bj12b2lkIDB9LHVwZGF0ZUxlYWRBbmRGb2xsb3c6ZnVuY3Rpb24oKXt2YXIgZSxuLG87bD1yLl9fYXNzaWduKHt9LGEpO2Zvcih2YXIgdT1BcnJheS5mcm9tKGkpLGY9dS5sZW5ndGg7Zi0tO2Y+PTApe3ZhciBkPXVbZl07aWYobiYmKG51bGwhPW98fChvPWQpKSxudWxsIT1ufHwobj1kKSxuJiZvKWJyZWFrfWEubGVhZD1uLGEuZm9sbG93PW8sYS5sZWFkSXNFeGl0aW5nPShudWxsPT09KGU9YS5sZWFkKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5wcmVzZW5jZSk9PT1pci5FeGl0aW5nLHMuc2V0T3B0aW9ucyh7bGVhZDpuLGZvbGxvdzpvLHByZXZWYWx1ZXM6dCxjcm9zc2ZhZGVPcGFjaXR5OihudWxsPT1vP3ZvaWQgMDpvLmlzUHJlc2VuY2VSb290KXx8KG51bGw9PW4/dm9pZCAwOm4uaXNQcmVzZW5jZVJvb3QpfSksYS5sZWFkPT09bC5mb2xsb3d8fGwubGVhZD09PWEubGVhZCYmbC5sZWFkSXNFeGl0aW5nPT09YS5sZWFkSXNFeGl0aW5nfHwoYz0hMCl9LGFuaW1hdGU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtpZih2b2lkIDA9PT10JiYodD0hMSksZT09PWEubGVhZCl7dD9lLnBvaW50VG8oYS5sZWFkKTplLnNldFZpc2liaWxpdHkoITApO3ZhciBvPXt9LGk9bnVsbD09PShyPWEuZm9sbG93KXx8dm9pZCAwPT09cj92b2lkIDA6ci5nZXRQcm9qZWN0aW9uUGFyZW50KCk7aWYoaSYmKG8ucHJldlBhcmVudD1pKSxlLnByZXNlbmNlPT09aXIuRW50ZXJpbmc/by5vcmlnaW5Cb3g9YS5mb2xsb3c/YS5mb2xsb3cucHJldlZpZXdwb3J0Qm94Om46ZS5wcmVzZW5jZT09PWlyLkV4aXRpbmcmJihvLnRhcmdldEJveD1mdW5jdGlvbigpe3ZhciBlO3JldHVybiBudWxsPT09KGU9YS5mb2xsb3cpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmdldExheW91dFN0YXRlKCkubGF5b3V0fSgpKSxjKXtjPSExO3ZhciBsPWUuZ2V0RGVmYXVsdFRyYW5zaXRpb24oKTtlLnByZXNlbmNlPT09aXIuRW50ZXJpbmc/cy50b0xlYWQobCk6cy5mcm9tTGVhZChsKX1lLm5vdGlmeUxheW91dFJlYWR5KG8pfWVsc2UgdD9hLmxlYWQmJmUucG9pbnRUbyhhLmxlYWQpOmUuc2V0VmlzaWJpbGl0eSghMSl9fSkpLHRoaXMuc3RhY2tzLmdldCh1KX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHUuY3JlYXRlRWxlbWVudChfci5Qcm92aWRlcix7dmFsdWU6dGhpcy5zeW5jQ29udGV4dH0sdGhpcy5wcm9wcy5jaGlsZHJlbil9LHQuY29udGV4dFR5cGU9dyx0fSh1LkNvbXBvbmVudCk7ZnVuY3Rpb24geW8oZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZX12YXIgd289ci5fX2Fzc2lnbihyLl9fYXNzaWduKHtyZW5kZXJlcjplb30sb24pLHB0KSxibz1yLl9fYXNzaWduKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSx3byksbHIpLFNyKTtmdW5jdGlvbiB4byhlKXt2YXIgdD1fKChmdW5jdGlvbigpe3JldHVybiBCdChlKX0pKTtpZihvLnVzZUNvbnRleHQoeSkuaXNTdGF0aWMpe3ZhciBuPXIuX19yZWFkKG8udXNlU3RhdGUoZSksMilbMV07by51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHQub25DaGFuZ2Uobil9KSxbXSl9cmV0dXJuIHR9ZnVuY3Rpb24gX28oZSx0KXtvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtpZihlZShlKSlyZXR1cm4gZS5vbkNoYW5nZSh0KX0pLFt0XSl9ZnVuY3Rpb24gTG8oZSx0KXt2YXIgbj14byh0KCkpLHI9ZnVuY3Rpb24oKXtyZXR1cm4gbi5zZXQodCgpKX07cmV0dXJuIHIoKSxmdW5jdGlvbihlLHQpe28udXNlRWZmZWN0KChmdW5jdGlvbigpe3ZhciBuPWUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5vbkNoYW5nZSh0KX0pKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbi5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSkpfX0pKX0oZSwoZnVuY3Rpb24oKXtyZXR1cm4gZC5kZWZhdWx0LnVwZGF0ZShyLCExLCEwKX0pKSxufXZhciBPbyxFbz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJmUubWl4fShlKT9lLm1peDp2b2lkIDB9O2Z1bmN0aW9uIFNvKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO3ZhciBuPSFBcnJheS5pc0FycmF5KGVbMF0pLG89bj8wOi0xLGk9ZVswK29dLGE9ZVsxK29dLHM9ZVsyK29dLGM9ZVszK29dLHU9bC5pbnRlcnBvbGF0ZShhLHMsci5fX2Fzc2lnbih7bWl4ZXI6RW8oc1swXSl9LGMpKTtyZXR1cm4gbj91KGkpOnV9ZnVuY3Rpb24gTW8oZSx0LG4sbyl7dmFyIGk9XCJmdW5jdGlvblwiPT10eXBlb2YgdD90OlNvKHQsbixvKTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9qbyhlLGkpOmpvKFtlXSwoZnVuY3Rpb24oZSl7dmFyIHQ9ci5fX3JlYWQoZSwxKVswXTtyZXR1cm4gaSh0KX0pKX1mdW5jdGlvbiBqbyhlLHQpe3ZhciBuPV8oKGZ1bmN0aW9uKCl7cmV0dXJuW119KSk7cmV0dXJuIExvKGUsKGZ1bmN0aW9uKCl7bi5sZW5ndGg9MDtmb3IodmFyIHI9ZS5sZW5ndGgsbz0wO288cjtvKyspbltvXT1lW29dLmdldCgpO3JldHVybiB0KG4pfSkpfWZ1bmN0aW9uIGtvKCl7cmV0dXJue3Njcm9sbFg6QnQoMCksc2Nyb2xsWTpCdCgwKSxzY3JvbGxYUHJvZ3Jlc3M6QnQoMCksc2Nyb2xsWVByb2dyZXNzOkJ0KDApfX1mdW5jdGlvbiBSbyhlLHQsbil7bi5zZXQoZSYmdD9lL3Q6MCl9ZnVuY3Rpb24gUG8oZSx0KXt2YXIgbj1mdW5jdGlvbigpe3ZhciBuPXQoKSxyPW4ueE9mZnNldCxvPW4ueU9mZnNldCxpPW4ueE1heE9mZnNldCxhPW4ueU1heE9mZnNldDtlLnNjcm9sbFguc2V0KHIpLGUuc2Nyb2xsWS5zZXQobyksUm8ocixpLGUuc2Nyb2xsWFByb2dyZXNzKSxSbyhvLGEsZS5zY3JvbGxZUHJvZ3Jlc3MpfTtyZXR1cm4gbigpLG59ZnVuY3Rpb24gQW8oKXtyZXR1cm57eE9mZnNldDp3aW5kb3cucGFnZVhPZmZzZXQseU9mZnNldDp3aW5kb3cucGFnZVlPZmZzZXQseE1heE9mZnNldDpkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoLXdpbmRvdy5pbm5lcldpZHRoLHlNYXhPZmZzZXQ6ZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQtd2luZG93LmlubmVySGVpZ2h0fX12YXIgSW8sVG89ITE7ZnVuY3Rpb24gSG8oKXt2YXIgZT0hMSx0PVtdLG49bmV3IFNldCxvPXtzdWJzY3JpYmU6ZnVuY3Rpb24oZSl7cmV0dXJuIG4uYWRkKGUpLGZ1bmN0aW9uKCl7bi5kZWxldGUoZSl9fSxzdGFydDpmdW5jdGlvbihyLG8pe2lmKGUpe3ZhciBpPVtdO3JldHVybiBuLmZvckVhY2goKGZ1bmN0aW9uKGUpe2kucHVzaChZdChlLHIse3RyYW5zaXRpb25PdmVycmlkZTpvfSkpfSkpLFByb21pc2UuYWxsKGkpfXJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dC5wdXNoKHthbmltYXRpb246W3Isb10scmVzb2x2ZTplfSl9KSl9LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gaS5pbnZhcmlhbnQoZSxcImNvbnRyb2xzLnNldCgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBhIGNvbXBvbmVudCBoYXMgbW91bnRlZC4gQ29uc2lkZXIgY2FsbGluZyB3aXRoaW4gYSB1c2VFZmZlY3QgaG9vay5cIiksbi5mb3JFYWNoKChmdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtBcnJheS5pc0FycmF5KHQpP1d0KGUsdCk6XCJzdHJpbmdcIj09dHlwZW9mIHQ/V3QoZSxbdF0pOlV0KGUsdCl9KGUsdCl9KSl9LHN0b3A6ZnVuY3Rpb24oKXtuLmZvckVhY2goKGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXtlLmZvckVhY2hWYWx1ZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3RvcCgpfSkpfShlKX0pKX0sbW91bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZT0hMCx0LmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWUuYW5pbWF0aW9uLG49ZS5yZXNvbHZlO28uc3RhcnQuYXBwbHkobyxyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQodCkpKS50aGVuKG4pfSkpLGZ1bmN0aW9uKCl7ZT0hMSxvLnN0b3AoKX19fTtyZXR1cm4gb312YXIgVm89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5jb21wb25lbnRDb250cm9scz1uZXcgU2V0fXJldHVybiBlLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5jb21wb25lbnRDb250cm9scy5hZGQoZSksZnVuY3Rpb24oKXtyZXR1cm4gdC5jb21wb25lbnRDb250cm9scy5kZWxldGUoZSl9fSxlLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihlLHQpe3RoaXMuY29tcG9uZW50Q29udHJvbHMuZm9yRWFjaCgoZnVuY3Rpb24obil7bi5zdGFydChlLm5hdGl2ZUV2ZW50fHxlLHQpfSkpfSxlLnByb3RvdHlwZS51cGRhdGVDb25zdHJhaW50cz1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT0hMCksdGhpcy5jb21wb25lbnRDb250cm9scy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnVwZGF0ZUNvbnN0cmFpbnRzKCl9KSksZSYmUW4oKX0sZX0oKSxCbz1mdW5jdGlvbigpe3JldHVybiBuZXcgVm99LERvPWZ1bmN0aW9uKCl7cmV0dXJue319LFpvPVRyKHtidWlsZDpmdW5jdGlvbigpe30sbWVhc3VyZVZpZXdwb3J0Qm94OmZ1bmN0aW9uKCl7cmV0dXJue3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19fSxyZXNldFRyYW5zZm9ybTpmdW5jdGlvbigpe30scmVzdG9yZVRyYW5zZm9ybTpmdW5jdGlvbigpe30scmVtb3ZlVmFsdWVGcm9tUmVuZGVyU3RhdGU6ZnVuY3Rpb24oKXt9LHJlbmRlcjpmdW5jdGlvbigpe30sc2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzOkRvLHJlYWRWYWx1ZUZyb21JbnN0YW5jZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4uaW5pdGlhbFN0YXRlW3RdfHwwfSxtYWtlVGFyZ2V0QW5pbWF0YWJsZTpmdW5jdGlvbihlLHQpe3ZhciBuPXQudHJhbnNpdGlvbixvPXQudHJhbnNpdGlvbkVuZCxpPXIuX19yZXN0KHQsW1widHJhbnNpdGlvblwiLFwidHJhbnNpdGlvbkVuZFwiXSk7cmV0dXJuIHp0KGUsaSxxdChpLG58fHt9LGUpKSxyLl9fYXNzaWduKHt0cmFuc2l0aW9uOm4sdHJhbnNpdGlvbkVuZDpvfSxpKX19KSwkbz1UZSh7c2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzOkRvLGNyZWF0ZVJlbmRlclN0YXRlOkRvfSksRm89ZnVuY3Rpb24oZSl7cmV0dXJuIGU+LjAwMT8xL2U6MWU1fSxObz0hMTt0LkFuaW1hdGVQcmVzZW5jZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5jdXN0b20saT1lLmluaXRpYWwsYT12b2lkIDA9PT1pfHxpLGw9ZS5vbkV4aXRDb21wbGV0ZSxzPWUuZXhpdEJlZm9yZUVudGVyLGM9ZS5wcmVzZW5jZUFmZmVjdHNMYXlvdXQsZj12b2lkIDA9PT1jfHxjLGQ9ZnVuY3Rpb24oKXt2YXIgZT1vLnVzZVJlZighMSksdD1yLl9fcmVhZChvLnVzZVN0YXRlKDApLDIpLG49dFswXSxpPXRbMV07cmV0dXJuIGZ0KChmdW5jdGlvbigpe3JldHVybiBlLmN1cnJlbnQ9ITB9KSksby51c2VDYWxsYmFjaygoZnVuY3Rpb24oKXshZS5jdXJyZW50JiZpKG4rMSl9KSxbbl0pfSgpLHA9by51c2VDb250ZXh0KF9yKTtPcihwKSYmKGQ9cC5mb3JjZVVwZGF0ZSk7dmFyIGg9by51c2VSZWYoITApLHY9ZnVuY3Rpb24oZSl7dmFyIHQ9W107cmV0dXJuIG8uQ2hpbGRyZW4uZm9yRWFjaChlLChmdW5jdGlvbihlKXtvLmlzVmFsaWRFbGVtZW50KGUpJiZ0LnB1c2goZSl9KSksdH0odCksZz1vLnVzZVJlZih2KSxDPW8udXNlUmVmKG5ldyBNYXApLmN1cnJlbnQsbT1vLnVzZVJlZihuZXcgU2V0KS5jdXJyZW50O2lmKGZ1bmN0aW9uKGUsdCl7ZS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1zbyhlKTt0LnNldChuLGUpfSkpfSh2LEMpLGguY3VycmVudClyZXR1cm4gaC5jdXJyZW50PSExLHUuY3JlYXRlRWxlbWVudCh1LkZyYWdtZW50LG51bGwsdi5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB1LmNyZWF0ZUVsZW1lbnQoYW8se2tleTpzbyhlKSxpc1ByZXNlbnQ6ITAsaW5pdGlhbDohIWEmJnZvaWQgMCxwcmVzZW5jZUFmZmVjdHNMYXlvdXQ6Zn0sZSl9KSkpO2Zvcih2YXIgeT1yLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQodikpLHc9Zy5jdXJyZW50Lm1hcChzbyksYj12Lm1hcChzbykseD13Lmxlbmd0aCxfPTA7Xzx4O18rKyl7dmFyIEw9d1tfXTstMT09PWIuaW5kZXhPZihMKT9tLmFkZChMKTptLmRlbGV0ZShMKX1yZXR1cm4gcyYmbS5zaXplJiYoeT1bXSksbS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZigtMT09PWIuaW5kZXhPZihlKSl7dmFyIHQ9Qy5nZXQoZSk7aWYodCl7dmFyIHI9dy5pbmRleE9mKGUpO3kuc3BsaWNlKHIsMCx1LmNyZWF0ZUVsZW1lbnQoYW8se2tleTpzbyh0KSxpc1ByZXNlbnQ6ITEsb25FeGl0Q29tcGxldGU6ZnVuY3Rpb24oKXtDLmRlbGV0ZShlKSxtLmRlbGV0ZShlKTt2YXIgdD1nLmN1cnJlbnQuZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdC5rZXk9PT1lfSkpO2cuY3VycmVudC5zcGxpY2UodCwxKSxtLnNpemV8fChnLmN1cnJlbnQ9dixkKCksbCYmbCgpKX0sY3VzdG9tOm4scHJlc2VuY2VBZmZlY3RzTGF5b3V0OmZ9LHQpKX19fSkpLHk9eS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PWUua2V5O3JldHVybiBtLmhhcyh0KT9lOnUuY3JlYXRlRWxlbWVudChhbyx7a2V5OnNvKGUpLGlzUHJlc2VudDohMCxwcmVzZW5jZUFmZmVjdHNMYXlvdXQ6Zn0sZSl9KSksZy5jdXJyZW50PXksdS5jcmVhdGVFbGVtZW50KHUuRnJhZ21lbnQsbnVsbCxtLnNpemU/eTp5Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG8uY2xvbmVFbGVtZW50KGUpfSkpKX0sdC5BbmltYXRlU2hhcmVkTGF5b3V0PW1vLHQuRHJhZ0NvbnRyb2xzPVZvLHQuRmxhdFRyZWU9SXIsdC5GcmFtZXJUcmVlTGF5b3V0Q29udGV4dD1Mcix0LkxheW91dEdyb3VwQ29udGV4dD1qLHQuTGF6eU1vdGlvbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5mZWF0dXJlcyxpPWUuc3RyaWN0LGE9dm9pZCAwIT09aSYmaSxsPXIuX19yZWFkKG8udXNlU3RhdGUoIXlvKG4pKSwyKVsxXSxzPW8udXNlUmVmKHZvaWQgMCk7aWYoIXlvKG4pKXt2YXIgYz1uLnJlbmRlcmVyLGY9ci5fX3Jlc3QobixbXCJyZW5kZXJlclwiXSk7cy5jdXJyZW50PWMsdihmKX1yZXR1cm4gby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7eW8obikmJm4oKS50aGVuKChmdW5jdGlvbihlKXt2YXIgdD1lLnJlbmRlcmVyO3Yoci5fX3Jlc3QoZSxbXCJyZW5kZXJlclwiXSkpLHMuY3VycmVudD10LGwoITApfSkpfSksW10pLHUuY3JlYXRlRWxlbWVudChnLlByb3ZpZGVyLHt2YWx1ZTp7cmVuZGVyZXI6cy5jdXJyZW50LHN0cmljdDphfX0sdCl9LHQuTW90aW9uQ29uZmlnPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1yLl9fcmVzdChlLFtcImNoaWxkcmVuXCJdKTsobj1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sby51c2VDb250ZXh0KHkpKSxuKSkuaXNTdGF0aWM9XygoZnVuY3Rpb24oKXtyZXR1cm4gbi5pc1N0YXRpY30pKTt2YXIgaT1cIm9iamVjdFwiPT10eXBlb2Ygbi50cmFuc2l0aW9uP24udHJhbnNpdGlvbi50b1N0cmluZygpOlwiXCIsYT1vLnVzZU1lbW8oKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSxbaSxuLnRyYW5zZm9ybVBhZ2VQb2ludF0pO3JldHVybiB1LmNyZWF0ZUVsZW1lbnQoeS5Qcm92aWRlcix7dmFsdWU6YX0sdCl9LHQuTW90aW9uQ29uZmlnQ29udGV4dD15LHQuTW90aW9uVmFsdWU9VnQsdC5QcmVzZW5jZUNvbnRleHQ9eCx0LlNoYXJlZExheW91dENvbnRleHQ9X3IsdC5hZGRTY2FsZUNvcnJlY3Rpb249Vyx0LmFuaW1hdGU9Y28sdC5hbmltYXRlVmlzdWFsRWxlbWVudD1ZdCx0LmFuaW1hdGlvbkNvbnRyb2xzPUhvLHQuYmF0Y2hMYXlvdXQ9Sm4sdC5jcmVhdGVCYXRjaGVyPWJyLHQuY3JlYXRlQ3Jvc3NmYWRlcj11byx0LmNyZWF0ZURvbU1vdGlvbkNvbXBvbmVudD1mdW5jdGlvbihlKXtyZXR1cm4gWihaZShlLHtmb3J3YXJkTW90aW9uUHJvcHM6ITF9LHRvLGVvKSl9LHQuY3JlYXRlTW90aW9uQ29tcG9uZW50PVosdC5kb21BbmltYXRpb249d28sdC5kb21NYXg9Ym8sdC5mbHVzaExheW91dD1Rbix0LmlzVmFsaWRNb3Rpb25Qcm9wPWZlLHQubT1ybyx0Lm1vdGlvbj1ubyx0Lm1vdGlvblZhbHVlPUJ0LHQucmVzb2x2ZU1vdGlvblZhbHVlPUFlLHQuc25hcHNob3RWaWV3cG9ydEJveD1Jbix0LnRyYW5zZm9ybT1Tbyx0LnVzZUFuaW1hdGlvbj1mdW5jdGlvbigpe3ZhciBlPV8oSG8pO3JldHVybiBvLnVzZUVmZmVjdChlLm1vdW50LFtdKSxlfSx0LnVzZUN5Y2xlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO3ZhciBuPW8udXNlUmVmKDApLGk9ci5fX3JlYWQoby51c2VTdGF0ZShlW24uY3VycmVudF0pLDIpLGE9aVswXSxzPWlbMV07cmV0dXJuW2EsZnVuY3Rpb24odCl7bi5jdXJyZW50PVwibnVtYmVyXCIhPXR5cGVvZiB0P2wud3JhcCgwLGUubGVuZ3RoLG4uY3VycmVudCsxKTp0LHMoZVtuLmN1cnJlbnRdKX1dfSx0LnVzZURlcHJlY2F0ZWRBbmltYXRlZFN0YXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXIuX19yZWFkKG8udXNlU3RhdGUoZSksMiksbj10WzBdLGk9dFsxXSxhPSRvKHt9LCExKSxsPV8oKGZ1bmN0aW9uKCl7cmV0dXJuIFpvKHtwcm9wczp7fSx2aXN1YWxTdGF0ZTphfSx7aW5pdGlhbFN0YXRlOmV9KX0pKTtyZXR1cm4gby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIGwubW91bnQoe30pLGwudW5tb3VudCgpfSksW10pLG8udXNlRWZmZWN0KChmdW5jdGlvbigpe2wuc2V0UHJvcHMoe29uVXBkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBpKHIuX19hc3NpZ24oe30sZSkpfX0pfSkpLFtuLF8oKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBZdChsLGUpfX0pKV19LHQudXNlRGVwcmVjYXRlZEludmVydGVkU2NhbGU9ZnVuY3Rpb24oZSl7dmFyIHQ9eG8oMSksbj14bygxKSxyPWIoKTtyZXR1cm4gaS5pbnZhcmlhbnQoISghZSYmIXIpLFwiSWYgbm8gc2NhbGUgdmFsdWVzIGFyZSBwcm92aWRlZCwgdXNlSW52ZXJ0ZWRTY2FsZSBtdXN0IGJlIHVzZWQgd2l0aGluIGEgY2hpbGQgb2YgYW5vdGhlciBtb3Rpb24gY29tcG9uZW50LlwiKSxpLndhcm5pbmcoTm8sXCJ1c2VJbnZlcnRlZFNjYWxlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjAuIFVzZSB0aGUgbGF5b3V0IHByb3AgaW5zdGVhZC5cIiksTm89ITAsZT8odD1lLnNjYWxlWHx8dCxuPWUuc2NhbGVZfHxuKTpyJiYodD1yLmdldFZhbHVlKFwic2NhbGVYXCIsMSksbj1yLmdldFZhbHVlKFwic2NhbGVZXCIsMSkpLHtzY2FsZVg6TW8odCxGbyksc2NhbGVZOk1vKG4sRm8pfX0sdC51c2VEb21FdmVudD1GZSx0LnVzZURyYWdDb250cm9scz1mdW5jdGlvbigpe3JldHVybiBfKEJvKX0sdC51c2VFbGVtZW50U2Nyb2xsPWZ1bmN0aW9uKGUpe3ZhciB0PV8oa28pO3JldHVybiBSKChmdW5jdGlvbigpe3ZhciBuPWUuY3VycmVudDtpZihpLmludmFyaWFudCghIW4sXCJyZWYgcHJvdmlkZWQgdG8gdXNlU2Nyb2xsIG11c3QgYmUgcGFzc2VkIGludG8gYSBIVE1MIGVsZW1lbnQuXCIpLG4pe3ZhciByPVBvKHQsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJue3hPZmZzZXQ6ZS5zY3JvbGxMZWZ0LHlPZmZzZXQ6ZS5zY3JvbGxUb3AseE1heE9mZnNldDplLnNjcm9sbFdpZHRoLWUub2Zmc2V0V2lkdGgseU1heE9mZnNldDplLnNjcm9sbEhlaWdodC1lLm9mZnNldEhlaWdodH19fShuKSksbz0kZShuLFwic2Nyb2xsXCIscix7cGFzc2l2ZTohMH0pLGE9JGUobixcInJlc2l6ZVwiLHIpO3JldHVybiBmdW5jdGlvbigpe28mJm8oKSxhJiZhKCl9fX0pLFtdKSx0fSx0LnVzZUlzUHJlc2VudD1mdW5jdGlvbigpe3JldHVybiBPKG8udXNlQ29udGV4dCh4KSl9LHQudXNlTW90aW9uVGVtcGxhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07dmFyIHI9ZS5sZW5ndGg7cmV0dXJuIExvKHQsKGZ1bmN0aW9uKCl7Zm9yKHZhciBuPVwiXCIsbz0wO288cjtvKyspbis9ZVtvXSx0W29dJiYobis9dFtvXS5nZXQoKSk7cmV0dXJuIG59KSl9LHQudXNlTW90aW9uVmFsdWU9eG8sdC51c2VQcmVzZW5jZT1MLHQudXNlUmVkdWNlZE1vdGlvbj1mdW5jdGlvbigpeyFJbyYmZnVuY3Rpb24oKXtpZihJbz1CdChudWxsKSxcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93KWlmKHdpbmRvdy5tYXRjaE1lZGlhKXt2YXIgZT13aW5kb3cubWF0Y2hNZWRpYShcIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uKVwiKSx0PWZ1bmN0aW9uKCl7cmV0dXJuIElvLnNldChlLm1hdGNoZXMpfTtlLmFkZExpc3RlbmVyKHQpLHQoKX1lbHNlIElvLnNldCghMSl9KCk7dmFyIGU9ci5fX3JlYWQoby51c2VTdGF0ZShJby5nZXQoKSksMiksdD1lWzBdLG49ZVsxXTtyZXR1cm4gX28oSW8sbiksdH0sdC51c2VTcHJpbmc9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD17fSk7dmFyIG49by51c2VDb250ZXh0KHkpLmlzU3RhdGljLGk9by51c2VSZWYobnVsbCksYT14byhlZShlKT9lLmdldCgpOmUpO3JldHVybiBvLnVzZU1lbW8oKGZ1bmN0aW9uKCl7cmV0dXJuIGEuYXR0YWNoKChmdW5jdGlvbihlLG8pe3JldHVybiBuP28oZSk6KGkuY3VycmVudCYmaS5jdXJyZW50LnN0b3AoKSxpLmN1cnJlbnQ9bC5hbmltYXRlKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7ZnJvbTphLmdldCgpLHRvOmUsdmVsb2NpdHk6YS5nZXRWZWxvY2l0eSgpfSx0KSx7b25VcGRhdGU6b30pKSxhLmdldCgpKX0pKX0pLE9iamVjdC52YWx1ZXModCkpLF9vKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBhLnNldChwYXJzZUZsb2F0KGUpKX0pKSxhfSx0LnVzZVRyYW5zZm9ybT1Nbyx0LnVzZVZlbG9jaXR5PWZ1bmN0aW9uKGUpe3ZhciB0PXhvKGUuZ2V0VmVsb2NpdHkoKSk7cmV0dXJuIG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiBlLnZlbG9jaXR5VXBkYXRlU3Vic2NyaWJlcnMuYWRkKChmdW5jdGlvbihlKXt0LnNldChlKX0pKX0pLFtlXSksdH0sdC51c2VWaWV3cG9ydFNjcm9sbD1mdW5jdGlvbigpe3JldHVybiBPb3x8KE9vPWtvKCkpLFIoKGZ1bmN0aW9uKCl7IVRvJiZmdW5jdGlvbigpe2lmKFRvPSEwLFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cpe3ZhciBlPVBvKE9vLEFvKTskZSh3aW5kb3csXCJzY3JvbGxcIixlLHtwYXNzaXZlOiEwfSksJGUod2luZG93LFwicmVzaXplXCIsZSl9fSgpfSksW10pLE9vfSx0LnZpc3VhbEVsZW1lbnQ9VHJ9LDQ4Mzk6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgbj0xLzYwKjFlMyxyPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBwZXJmb3JtYW5jZT9mdW5jdGlvbigpe3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX06ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKX0sbz1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P2Z1bmN0aW9uKGUpe3JldHVybiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZShyKCkpfSksbil9LGk9ITAsYT0hMSxsPSExLHM9e2RlbHRhOjAsdGltZXN0YW1wOjB9LGM9W1wicmVhZFwiLFwidXBkYXRlXCIsXCJwcmVSZW5kZXJcIixcInJlbmRlclwiLFwicG9zdFJlbmRlclwiXSx1PWMucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlW3RdPWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49W10scj0wLG89ITEsaT1uZXcgV2Vha1NldCxhPXtzY2hlZHVsZTpmdW5jdGlvbihlLGEsbCl7dm9pZCAwPT09YSYmKGE9ITEpLHZvaWQgMD09PWwmJihsPSExKTt2YXIgcz1sJiZvLGM9cz90Om47cmV0dXJuIGEmJmkuYWRkKGUpLC0xPT09Yy5pbmRleE9mKGUpJiYoYy5wdXNoKGUpLHMmJm8mJihyPXQubGVuZ3RoKSksZX0sY2FuY2VsOmZ1bmN0aW9uKGUpe3ZhciB0PW4uaW5kZXhPZihlKTstMSE9PXQmJm4uc3BsaWNlKHQsMSksaS5kZWxldGUoZSl9LHByb2Nlc3M6ZnVuY3Rpb24obCl7dmFyIHM7aWYobz0hMCx0PShzPVtuLHRdKVswXSwobj1zWzFdKS5sZW5ndGg9MCxyPXQubGVuZ3RoKWZvcih2YXIgYz0wO2M8cjtjKyspe3ZhciB1PXRbY107dShsKSxpLmhhcyh1KSYmKGEuc2NoZWR1bGUodSksZSgpKX1vPSExfX07cmV0dXJuIGF9KChmdW5jdGlvbigpe3JldHVybiBhPSEwfSkpLGV9KSx7fSksZj1jLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXt2YXIgbj11W3RdO3JldHVybiBlW3RdPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITEpLHZvaWQgMD09PXImJihyPSExKSxhfHxnKCksbi5zY2hlZHVsZShlLHQscil9LGV9KSx7fSksZD1jLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XT11W3RdLmNhbmNlbCxlfSkse30pLHA9Yy5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF09ZnVuY3Rpb24oKXtyZXR1cm4gdVt0XS5wcm9jZXNzKHMpfSxlfSkse30pLGg9ZnVuY3Rpb24oZSl7cmV0dXJuIHVbZV0ucHJvY2VzcyhzKX0sdj1mdW5jdGlvbihlKXthPSExLHMuZGVsdGE9aT9uOk1hdGgubWF4KE1hdGgubWluKGUtcy50aW1lc3RhbXAsNDApLDEpLHMudGltZXN0YW1wPWUsbD0hMCxjLmZvckVhY2goaCksbD0hMSxhJiYoaT0hMSxvKHYpKX0sZz1mdW5jdGlvbigpe2E9ITAsaT0hMCxsfHxvKHYpfTt0LmNhbmNlbFN5bmM9ZCx0LmRlZmF1bHQ9Zix0LmZsdXNoU3luYz1wLHQuZ2V0RnJhbWVEYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHN9fSw0Mzk0OihlLHQsbik9PntuLnIodCksbi5kKHQse2ludmFyaWFudDooKT0+byx3YXJuaW5nOigpPT5yfSk7dmFyIHI9ZnVuY3Rpb24oKXt9LG89ZnVuY3Rpb24oKXt9fSw3NzM6KGUsdCxuKT0+e3ZhciByLG89XCJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fXCIsaT0vXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvLGE9XCJvYmplY3RcIj09dHlwZW9mIG4uZyYmbi5nJiZuLmcuT2JqZWN0PT09T2JqZWN0JiZuLmcsbD1cIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYscz1hfHxsfHxGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCksYz1BcnJheS5wcm90b3R5cGUsdT1GdW5jdGlvbi5wcm90b3R5cGUsZj1PYmplY3QucHJvdG90eXBlLGQ9c1tcIl9fY29yZS1qc19zaGFyZWRfX1wiXSxwPShyPS9bXi5dKyQvLmV4ZWMoZCYmZC5rZXlzJiZkLmtleXMuSUVfUFJPVE98fFwiXCIpKT9cIlN5bWJvbChzcmMpXzEuXCIrcjpcIlwiLGg9dS50b1N0cmluZyx2PWYuaGFzT3duUHJvcGVydHksZz1mLnRvU3RyaW5nLEM9UmVnRXhwKFwiXlwiK2guY2FsbCh2KS5yZXBsYWNlKC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZyxcIlxcXFwkJlwiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLFwiJDEuKj9cIikrXCIkXCIpLG09Yy5zcGxpY2UseT1FKHMsXCJNYXBcIiksdz1FKE9iamVjdCxcImNyZWF0ZVwiKTtmdW5jdGlvbiBiKGUpe3ZhciB0PS0xLG49ZT9lLmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PG47KXt2YXIgcj1lW3RdO3RoaXMuc2V0KHJbMF0sclsxXSl9fWZ1bmN0aW9uIHgoZSl7dmFyIHQ9LTEsbj1lP2UubGVuZ3RoOjA7Zm9yKHRoaXMuY2xlYXIoKTsrK3Q8bjspe3ZhciByPWVbdF07dGhpcy5zZXQoclswXSxyWzFdKX19ZnVuY3Rpb24gXyhlKXt2YXIgdD0tMSxuPWU/ZS5sZW5ndGg6MDtmb3IodGhpcy5jbGVhcigpOysrdDxuOyl7dmFyIHI9ZVt0XTt0aGlzLnNldChyWzBdLHJbMV0pfX1mdW5jdGlvbiBMKGUsdCl7Zm9yKHZhciBuLHIsbz1lLmxlbmd0aDtvLS07KWlmKChuPWVbb11bMF0pPT09KHI9dCl8fG4hPW4mJnIhPXIpcmV0dXJuIG87cmV0dXJuLTF9ZnVuY3Rpb24gTyhlLHQpe3ZhciBuLHIsbz1lLl9fZGF0YV9fO3JldHVybihcInN0cmluZ1wiPT0ocj10eXBlb2Yobj10KSl8fFwibnVtYmVyXCI9PXJ8fFwic3ltYm9sXCI9PXJ8fFwiYm9vbGVhblwiPT1yP1wiX19wcm90b19fXCIhPT1uOm51bGw9PT1uKT9vW1wic3RyaW5nXCI9PXR5cGVvZiB0P1wic3RyaW5nXCI6XCJoYXNoXCJdOm8ubWFwfWZ1bmN0aW9uIEUoZSx0KXt2YXIgbj1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfShlLHQpO3JldHVybiBmdW5jdGlvbihlKXtpZighTShlKXx8cCYmcCBpbiBlKXJldHVybiExO3ZhciB0PWZ1bmN0aW9uKGUpe3ZhciB0PU0oZSk/Zy5jYWxsKGUpOlwiXCI7cmV0dXJuXCJbb2JqZWN0IEZ1bmN0aW9uXVwiPT10fHxcIltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dXCI9PXR9KGUpfHxmdW5jdGlvbihlKXt2YXIgdD0hMTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLnRvU3RyaW5nKXRyeXt0PSEhKGUrXCJcIil9Y2F0Y2goZSl7fXJldHVybiB0fShlKT9DOmk7cmV0dXJuIHQudGVzdChmdW5jdGlvbihlKXtpZihudWxsIT1lKXt0cnl7cmV0dXJuIGguY2FsbChlKX1jYXRjaChlKXt9dHJ5e3JldHVybiBlK1wiXCJ9Y2F0Y2goZSl7fX1yZXR1cm5cIlwifShlKSl9KG4pP246dm9pZCAwfWZ1bmN0aW9uIFMoZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlfHx0JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCBhIGZ1bmN0aW9uXCIpO3ZhciBuPWZ1bmN0aW9uKCl7dmFyIHI9YXJndW1lbnRzLG89dD90LmFwcGx5KHRoaXMscik6clswXSxpPW4uY2FjaGU7aWYoaS5oYXMobykpcmV0dXJuIGkuZ2V0KG8pO3ZhciBhPWUuYXBwbHkodGhpcyxyKTtyZXR1cm4gbi5jYWNoZT1pLnNldChvLGEpLGF9O3JldHVybiBuLmNhY2hlPW5ldyhTLkNhY2hlfHxfKSxufWZ1bmN0aW9uIE0oZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuISFlJiYoXCJvYmplY3RcIj09dHx8XCJmdW5jdGlvblwiPT10KX1iLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189dz93KG51bGwpOnt9fSxiLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaGFzKGUpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1tlXX0sYi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX187aWYodyl7dmFyIG49dFtlXTtyZXR1cm4gbj09PW8/dm9pZCAwOm59cmV0dXJuIHYuY2FsbCh0LGUpP3RbZV06dm9pZCAwfSxiLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXztyZXR1cm4gdz92b2lkIDAhPT10W2VdOnYuY2FsbCh0LGUpfSxiLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2RhdGFfX1tlXT13JiZ2b2lkIDA9PT10P286dCx0aGlzfSx4LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W119LHgucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fLG49TCh0LGUpO3JldHVybiEobjwwfHwobj09dC5sZW5ndGgtMT90LnBvcCgpOm0uY2FsbCh0LG4sMSksMCkpfSx4LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxuPUwodCxlKTtyZXR1cm4gbjwwP3ZvaWQgMDp0W25dWzFdfSx4LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIEwodGhpcy5fX2RhdGFfXyxlKT4tMX0seC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2RhdGFfXyxyPUwobixlKTtyZXR1cm4gcjwwP24ucHVzaChbZSx0XSk6bltyXVsxXT10LHRoaXN9LF8ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgYixtYXA6bmV3KHl8fHgpLHN0cmluZzpuZXcgYn19LF8ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXtyZXR1cm4gTyh0aGlzLGUpLmRlbGV0ZShlKX0sXy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBPKHRoaXMsZSkuZ2V0KGUpfSxfLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIE8odGhpcyxlKS5oYXMoZSl9LF8ucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3JldHVybiBPKHRoaXMsZSkuc2V0KGUsdCksdGhpc30sUy5DYWNoZT1fLGUuZXhwb3J0cz1TfSw3NDE4OmU9Pnt2YXIgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLG49T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxyPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3ZhciBlPW5ldyBTdHJpbmcoXCJhYmNcIik7aWYoZVs1XT1cImRlXCIsXCI1XCI9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30sbj0wO248MTA7bisrKXRbXCJfXCIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjtpZihcIjAxMjM0NTY3ODlcIiE9PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSkuam9pbihcIlwiKSlyZXR1cm4hMTt2YXIgcj17fTtyZXR1cm5cImFiY2RlZmdoaWprbG1ub3BxcnN0XCIuc3BsaXQoXCJcIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cltlXT1lfSkpLFwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIj09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30scikpLmpvaW4oXCJcIil9Y2F0Y2goZSl7cmV0dXJuITF9fSgpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oZSxvKXtmb3IodmFyIGksYSxsPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBPYmplY3QoZSl9KGUpLHM9MTtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKXtmb3IodmFyIGMgaW4gaT1PYmplY3QoYXJndW1lbnRzW3NdKSluLmNhbGwoaSxjKSYmKGxbY109aVtjXSk7aWYodCl7YT10KGkpO2Zvcih2YXIgdT0wO3U8YS5sZW5ndGg7dSsrKXIuY2FsbChpLGFbdV0pJiYobFthW3VdXT1pW2FbdV1dKX19cmV0dXJuIGx9fSw5Mjk0OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1uKDY1NSksbz1uKDQzOTQpLGk9bigzNTczKSxhPW4oNDgzOSk7dmFyIGw9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZcImRlZmF1bHRcImluIGU/ZTp7ZGVmYXVsdDplfX0oYSkscz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KG4sZSksdCl9LGM9LjAwMSx1PS4wMSxmPTEwLGQ9LjA1LHA9MSxoPTEyO2Z1bmN0aW9uIHYoZSx0KXtyZXR1cm4gZSpNYXRoLnNxcnQoMS10KnQpfXZhciBnPVtcImR1cmF0aW9uXCIsXCJib3VuY2VcIl0sQz1bXCJzdGlmZm5lc3NcIixcImRhbXBpbmdcIixcIm1hc3NcIl07ZnVuY3Rpb24gbShlLHQpe3JldHVybiB0LnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT1lW3RdfSkpfWZ1bmN0aW9uIHkoZSl7dmFyIHQ9ZS5mcm9tLG49dm9pZCAwPT09dD8wOnQsaT1lLnRvLGE9dm9pZCAwPT09aT8xOmksbD1lLnJlc3RTcGVlZCx5PXZvaWQgMD09PWw/MjpsLGI9ZS5yZXN0RGVsdGEseD1yLl9fcmVzdChlLFtcImZyb21cIixcInRvXCIsXCJyZXN0U3BlZWRcIixcInJlc3REZWx0YVwiXSksXz17ZG9uZTohMSx2YWx1ZTpufSxMPWZ1bmN0aW9uKGUpe3ZhciB0PXIuX19hc3NpZ24oe3ZlbG9jaXR5OjAsc3RpZmZuZXNzOjEwMCxkYW1waW5nOjEwLG1hc3M6MSxpc1Jlc29sdmVkRnJvbUR1cmF0aW9uOiExfSxlKTtpZighbShlLEMpJiZtKGUsZykpe3ZhciBuPWZ1bmN0aW9uKGUpe3ZhciB0LG4scj1lLmR1cmF0aW9uLGk9dm9pZCAwPT09cj84MDA6cixhPWUuYm91bmNlLGw9dm9pZCAwPT09YT8uMjU6YSxnPWUudmVsb2NpdHksQz12b2lkIDA9PT1nPzA6ZyxtPWUubWFzcyx5PXZvaWQgMD09PW0/MTptO28ud2FybmluZyhpPD0xZTMqZixcIlNwcmluZyBkdXJhdGlvbiBtdXN0IGJlIDEwIHNlY29uZHMgb3IgbGVzc1wiKTt2YXIgdz0xLWw7dz1zKGQscCx3KSxpPXModSxmLGkvMWUzKSx3PDE/KHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSp3LG49dCppLHI9dC1DLG89dihlLHcpLGE9TWF0aC5leHAoLW4pO3JldHVybiBjLXIvbyphfSxuPWZ1bmN0aW9uKGUpe3ZhciBuPWUqdyppLHI9bipDK0Msbz1NYXRoLnBvdyh3LDIpKk1hdGgucG93KGUsMikqaSxhPU1hdGguZXhwKC1uKSxsPXYoTWF0aC5wb3coZSwyKSx3KTtyZXR1cm4oLXQoZSkrYz4wPy0xOjEpKigoci1vKSphKS9sfSk6KHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZXhwKC1lKmkpKigoZS1DKSppKzEpLWN9LG49ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZXhwKC1lKmkpKihpKmkqKEMtZSkpfSk7dmFyIGI9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uLG89MTtvPGg7bysrKXItPWUocikvdChyKTtyZXR1cm4gcn0odCxuLDUvaSk7aWYoaSo9MWUzLGlzTmFOKGIpKXJldHVybntzdGlmZm5lc3M6MTAwLGRhbXBpbmc6MTAsZHVyYXRpb246aX07dmFyIHg9TWF0aC5wb3coYiwyKSp5O3JldHVybntzdGlmZm5lc3M6eCxkYW1waW5nOjIqdypNYXRoLnNxcnQoeSp4KSxkdXJhdGlvbjppfX0oZSk7KHQ9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdCksbikse3ZlbG9jaXR5OjAsbWFzczoxfSkpLmlzUmVzb2x2ZWRGcm9tRHVyYXRpb249ITB9cmV0dXJuIHR9KHgpLE89TC5zdGlmZm5lc3MsRT1MLmRhbXBpbmcsUz1MLm1hc3MsTT1MLnZlbG9jaXR5LGo9TC5kdXJhdGlvbixrPUwuaXNSZXNvbHZlZEZyb21EdXJhdGlvbixSPXcsUD13O2Z1bmN0aW9uIEEoKXt2YXIgZT1NPy1NLzFlMzowLHQ9YS1uLHI9RS8oMipNYXRoLnNxcnQoTypTKSksbz1NYXRoLnNxcnQoTy9TKS8xZTM7aWYobnVsbCE9Ynx8KGI9TWF0aC5hYnMoYS1uKTw9MT8uMDE6LjQpLHI8MSl7dmFyIGk9dihvLHIpO1I9ZnVuY3Rpb24obil7dmFyIGw9TWF0aC5leHAoLXIqbypuKTtyZXR1cm4gYS1sKigoZStyKm8qdCkvaSpNYXRoLnNpbihpKm4pK3QqTWF0aC5jb3MoaSpuKSl9LFA9ZnVuY3Rpb24obil7dmFyIGE9TWF0aC5leHAoLXIqbypuKTtyZXR1cm4gcipvKmEqKE1hdGguc2luKGkqbikqKGUrcipvKnQpL2krdCpNYXRoLmNvcyhpKm4pKS1hKihNYXRoLmNvcyhpKm4pKihlK3Iqbyp0KS1pKnQqTWF0aC5zaW4oaSpuKSl9fWVsc2UgaWYoMT09PXIpUj1mdW5jdGlvbihuKXtyZXR1cm4gYS1NYXRoLmV4cCgtbypuKSoodCsoZStvKnQpKm4pfTtlbHNle3ZhciBsPW8qTWF0aC5zcXJ0KHIqci0xKTtSPWZ1bmN0aW9uKG4pe3ZhciBpPU1hdGguZXhwKC1yKm8qbikscz1NYXRoLm1pbihsKm4sMzAwKTtyZXR1cm4gYS1pKigoZStyKm8qdCkqTWF0aC5zaW5oKHMpK2wqdCpNYXRoLmNvc2gocykpL2x9fX1yZXR1cm4gQSgpLHtuZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PVIoZSk7aWYoaylfLmRvbmU9ZT49ajtlbHNle3ZhciBuPTFlMypQKGUpLHI9TWF0aC5hYnMobik8PXksbz1NYXRoLmFicyhhLXQpPD1iO18uZG9uZT1yJiZvfXJldHVybiBfLnZhbHVlPV8uZG9uZT9hOnQsX30sZmxpcFRhcmdldDpmdW5jdGlvbigpe3ZhciBlO009LU0sbj0oZT1bYSxuXSlbMF0sYT1lWzFdLEEoKX19fXkubmVlZHNJbnRlcnBvbGF0aW9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwic3RyaW5nXCI9PXR5cGVvZiB0fTt2YXIgdz1mdW5jdGlvbihlKXtyZXR1cm4gMH0sYj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dC1lO3JldHVybiAwPT09cj8xOihuLWUpL3J9LHg9ZnVuY3Rpb24oZSx0LG4pe3JldHVybi1uKmUrbip0K2V9LF89ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUqZSxvPXQqdDtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgubWF4KDAsbiooby1yKStyKSl9LEw9W2kuaGV4LGkucmdiYSxpLmhzbGFdLE89ZnVuY3Rpb24oZSl7cmV0dXJuIEwuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudGVzdChlKX0pKX0sRT1mdW5jdGlvbihlKXtyZXR1cm5cIidcIitlK1wiJyBpcyBub3QgYW4gYW5pbWF0YWJsZSBjb2xvci4gVXNlIHRoZSBlcXVpdmFsZW50IGNvbG9yIGNvZGUgaW5zdGVhZC5cIn0sUz1mdW5jdGlvbihlLHQpe3ZhciBuPU8oZSksYT1PKHQpO28uaW52YXJpYW50KCEhbixFKGUpKSxvLmludmFyaWFudCghIWEsRSh0KSksby5pbnZhcmlhbnQobi50cmFuc2Zvcm09PT1hLnRyYW5zZm9ybSxcIkJvdGggY29sb3JzIG11c3QgYmUgaGV4L1JHQkEsIE9SIGJvdGggbXVzdCBiZSBIU0xBLlwiKTt2YXIgbD1uLnBhcnNlKGUpLHM9YS5wYXJzZSh0KSxjPXIuX19hc3NpZ24oe30sbCksdT1uPT09aS5oc2xhP3g6XztyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGMpXCJhbHBoYVwiIT09dCYmKGNbdF09dShsW3RdLHNbdF0sZSkpO3JldHVybiBjLmFscGhhPXgobC5hbHBoYSxzLmFscGhhLGUpLG4udHJhbnNmb3JtKGMpfX0sTT17eDowLHk6MCx6OjB9LGo9ZnVuY3Rpb24oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGV9LGs9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQoZShuKSl9fSxSPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO3JldHVybiBlLnJlZHVjZShrKX07ZnVuY3Rpb24gUChlLHQpe3JldHVybiBqKGUpP2Z1bmN0aW9uKG4pe3JldHVybiB4KGUsdCxuKX06aS5jb2xvci50ZXN0KGUpP1MoZSx0KTpIKGUsdCl9dmFyIEE9ZnVuY3Rpb24oZSx0KXt2YXIgbj1yLl9fc3ByZWFkQXJyYXkoW10sZSksbz1uLmxlbmd0aCxpPWUubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiBQKGUsdFtuXSl9KSk7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8bzt0Kyspblt0XT1pW3RdKGUpO3JldHVybiBufX0sST1mdW5jdGlvbihlLHQpe3ZhciBuPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxlKSx0KSxvPXt9O2Zvcih2YXIgaSBpbiBuKXZvaWQgMCE9PWVbaV0mJnZvaWQgMCE9PXRbaV0mJihvW2ldPVAoZVtpXSx0W2ldKSk7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBvKW5bdF09b1t0XShlKTtyZXR1cm4gbn19O2Z1bmN0aW9uIFQoZSl7Zm9yKHZhciB0PWkuY29tcGxleC5wYXJzZShlKSxuPXQubGVuZ3RoLHI9MCxvPTAsYT0wLGw9MDtsPG47bCsrKXJ8fFwibnVtYmVyXCI9PXR5cGVvZiB0W2xdP3IrKzp2b2lkIDAhPT10W2xdLmh1ZT9hKys6bysrO3JldHVybntwYXJzZWQ6dCxudW1OdW1iZXJzOnIsbnVtUkdCOm8sbnVtSFNMOmF9fXZhciBIPWZ1bmN0aW9uKGUsdCl7dmFyIG49aS5jb21wbGV4LmNyZWF0ZVRyYW5zZm9ybWVyKHQpLHI9VChlKSxhPVQodCk7cmV0dXJuIG8uaW52YXJpYW50KHIubnVtSFNMPT09YS5udW1IU0wmJnIubnVtUkdCPT09YS5udW1SR0ImJnIubnVtTnVtYmVycz49YS5udW1OdW1iZXJzLFwiQ29tcGxleCB2YWx1ZXMgJ1wiK2UrXCInIGFuZCAnXCIrdCtcIicgdG9vIGRpZmZlcmVudCB0byBtaXguIEVuc3VyZSBhbGwgY29sb3JzIGFyZSBvZiB0aGUgc2FtZSB0eXBlLlwiKSxSKEEoci5wYXJzZWQsYS5wYXJzZWQpLG4pfSxWPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB4KGUsdCxuKX19O2Z1bmN0aW9uIEIoZSx0LG4pe3ZhciByPXZvaWQgMD09PW4/e306bixhPXIuY2xhbXAsbD12b2lkIDA9PT1hfHxhLGM9ci5lYXNlLHU9ci5taXhlcixmPWUubGVuZ3RoO28uaW52YXJpYW50KGY9PT10Lmxlbmd0aCxcIkJvdGggaW5wdXQgYW5kIG91dHB1dCByYW5nZXMgbXVzdCBiZSB0aGUgc2FtZSBsZW5ndGhcIiksby5pbnZhcmlhbnQoIWN8fCFBcnJheS5pc0FycmF5KGMpfHxjLmxlbmd0aD09PWYtMSxcIkFycmF5IG9mIGVhc2luZyBmdW5jdGlvbnMgbXVzdCBiZSBvZiBsZW5ndGggYGlucHV0Lmxlbmd0aCAtIDFgLCBhcyBpdCBhcHBsaWVzIHRvIHRoZSB0cmFuc2l0aW9ucyAqKmJldHdlZW4qKiB0aGUgZGVmaW5lZCB2YWx1ZXMuXCIpLGVbMF0+ZVtmLTFdJiYoZT1bXS5jb25jYXQoZSksdD1bXS5jb25jYXQodCksZS5yZXZlcnNlKCksdC5yZXZlcnNlKCkpO3ZhciBkPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIsbz1bXSxhPW58fChcIm51bWJlclwiPT10eXBlb2Yocj1lWzBdKT9WOlwic3RyaW5nXCI9PXR5cGVvZiByP2kuY29sb3IudGVzdChyKT9TOkg6QXJyYXkuaXNBcnJheShyKT9BOlwib2JqZWN0XCI9PXR5cGVvZiByP0k6dm9pZCAwKSxsPWUubGVuZ3RoLTEscz0wO3M8bDtzKyspe3ZhciBjPWEoZVtzXSxlW3MrMV0pO2lmKHQpe3ZhciB1PUFycmF5LmlzQXJyYXkodCk/dFtzXTp0O2M9Uih1LGMpfW8ucHVzaChjKX1yZXR1cm4gb30odCxjLHUpLHA9Mj09PWY/ZnVuY3Rpb24oZSx0KXt2YXIgbj1lWzBdLHI9ZVsxXSxvPXRbMF07cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBvKGIobixyLGUpKX19KGUsZCk6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aCxyPW4tMTtyZXR1cm4gZnVuY3Rpb24obyl7dmFyIGk9MCxhPSExO2lmKG88PWVbMF0/YT0hMDpvPj1lW3JdJiYoaT1yLTEsYT0hMCksIWEpe2Zvcih2YXIgbD0xO2w8biYmIShlW2xdPm98fGw9PT1yKTtsKyspO2k9bC0xfXZhciBzPWIoZVtpXSxlW2krMV0sbyk7cmV0dXJuIHRbaV0ocyl9fShlLGQpO3JldHVybiBsP2Z1bmN0aW9uKHQpe3JldHVybiBwKHMoZVswXSxlW2YtMV0sdCkpfTpwfXZhciBEPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gMS1lKDEtdCl9fSxaPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdDw9LjU/ZSgyKnQpLzI6KDItZSgyKigxLXQpKSkvMn19LCQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdyh0LGUpfX0sRj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQqdCooKGUrMSkqdC1lKX19LE49ZnVuY3Rpb24oZSl7dmFyIHQ9RihlKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKGUqPTIpPDE/LjUqdChlKTouNSooMi1NYXRoLnBvdygyLC0xMCooZS0xKSkpfX0sVT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sVz0kKDIpLHo9RChXKSxHPVooVykscT1mdW5jdGlvbihlKXtyZXR1cm4gMS1NYXRoLnNpbihNYXRoLmFjb3MoZSkpfSxZPUQocSksSz1aKFkpLFg9RigxLjUyNSksSj1EKFgpLFE9WihYKSxlZT1OKDEuNTI1KSx0ZT1mdW5jdGlvbihlKXtpZigxPT09ZXx8MD09PWUpcmV0dXJuIGU7dmFyIHQ9ZSplO3JldHVybiBlPC4zNjM2MzYzNjM2MzYzNjM2NT83LjU2MjUqdDplPC43MjcyNzI3MjcyNzI3MjczPzkuMDc1KnQtOS45KmUrMy40OmU8Ljk/MTIuMDY2NDgxOTk0NDU5ODMzKnQtMTkuNjM1NDU3MDYzNzExOTEqZSs4Ljg5ODA2MDk0MTgyODI1NToxMC44KmUqZS0yMC41MiplKzEwLjcyfSxuZT1EKHRlKTtmdW5jdGlvbiByZShlLHQpe3JldHVybiBlLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gdHx8R30pKS5zcGxpY2UoMCxlLmxlbmd0aC0xKX1mdW5jdGlvbiBvZShlKXt2YXIgdD1lLmZyb20sbj12b2lkIDA9PT10PzA6dCxyPWUudG8sbz12b2lkIDA9PT1yPzE6cixpPWUuZWFzZSxhPWUub2Zmc2V0LGw9ZS5kdXJhdGlvbixzPXZvaWQgMD09PWw/MzAwOmwsYz17ZG9uZTohMSx2YWx1ZTpufSx1PUFycmF5LmlzQXJyYXkobyk/bzpbbixvXSxmPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZSp0fSkpfShhJiZhLmxlbmd0aD09PXUubGVuZ3RoP2E6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7cmV0dXJuIGUubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiAwIT09bj9uLyh0LTEpOjB9KSl9KHUpLHMpO2Z1bmN0aW9uIGQoKXtyZXR1cm4gQihmLHUse2Vhc2U6QXJyYXkuaXNBcnJheShpKT9pOnJlKHUsaSl9KX12YXIgcD1kKCk7cmV0dXJue25leHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGMudmFsdWU9cChlKSxjLmRvbmU9ZT49cyxjfSxmbGlwVGFyZ2V0OmZ1bmN0aW9uKCl7dS5yZXZlcnNlKCkscD1kKCl9fX1mdW5jdGlvbiBpZShlKXt2YXIgdD1lLnZlbG9jaXR5LG49dm9pZCAwPT09dD8wOnQscj1lLmZyb20sbz12b2lkIDA9PT1yPzA6cixpPWUucG93ZXIsYT12b2lkIDA9PT1pPy44OmksbD1lLnRpbWVDb25zdGFudCxzPXZvaWQgMD09PWw/MzUwOmwsYz1lLnJlc3REZWx0YSx1PXZvaWQgMD09PWM/LjU6YyxmPWUubW9kaWZ5VGFyZ2V0LGQ9e2RvbmU6ITEsdmFsdWU6b30scD1hKm4saD1vK3Asdj12b2lkIDA9PT1mP2g6ZihoKTtyZXR1cm4gdiE9PWgmJihwPXYtbykse25leHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9LXAqTWF0aC5leHAoLWUvcyk7cmV0dXJuIGQuZG9uZT0hKHQ+dXx8dDwtdSksZC52YWx1ZT1kLmRvbmU/djp2K3QsZH0sZmxpcFRhcmdldDpmdW5jdGlvbigpe319fXZhciBhZT17a2V5ZnJhbWVzOm9lLHNwcmluZzp5LGRlY2F5OmllfTtmdW5jdGlvbiBsZShlLHQsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPTApLGUtdC1ufXZhciBzZT1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbih0KXt2YXIgbj10LmRlbHRhO3JldHVybiBlKG4pfTtyZXR1cm57c3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5kZWZhdWx0LnVwZGF0ZSh0LCEwKX0sc3RvcDpmdW5jdGlvbigpe3JldHVybiBhLmNhbmNlbFN5bmMudXBkYXRlKHQpfX19O2Z1bmN0aW9uIGNlKGUpe3ZhciB0LG4sbyxpLGEsbD1lLmZyb20scz1lLmF1dG9wbGF5LGM9dm9pZCAwPT09c3x8cyx1PWUuZHJpdmVyLGY9dm9pZCAwPT09dT9zZTp1LGQ9ZS5lbGFwc2VkLHA9dm9pZCAwPT09ZD8wOmQsaD1lLnJlcGVhdCx2PXZvaWQgMD09PWg/MDpoLGc9ZS5yZXBlYXRUeXBlLEM9dm9pZCAwPT09Zz9cImxvb3BcIjpnLG09ZS5yZXBlYXREZWxheSx3PXZvaWQgMD09PW0/MDptLGI9ZS5vblBsYXkseD1lLm9uU3RvcCxfPWUub25Db21wbGV0ZSxMPWUub25SZXBlYXQsTz1lLm9uVXBkYXRlLEU9ci5fX3Jlc3QoZSxbXCJmcm9tXCIsXCJhdXRvcGxheVwiLFwiZHJpdmVyXCIsXCJlbGFwc2VkXCIsXCJyZXBlYXRcIixcInJlcGVhdFR5cGVcIixcInJlcGVhdERlbGF5XCIsXCJvblBsYXlcIixcIm9uU3RvcFwiLFwib25Db21wbGV0ZVwiLFwib25SZXBlYXRcIixcIm9uVXBkYXRlXCJdKSxTPUUudG8sTT0wLGo9RS5kdXJhdGlvbixrPSExLFI9ITAsUD1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUudG8pKXJldHVybiBvZTtpZihhZVtlLnR5cGVdKXJldHVybiBhZVtlLnR5cGVdO3ZhciB0PW5ldyBTZXQoT2JqZWN0LmtleXMoZSkpO3JldHVybiB0LmhhcyhcImVhc2VcIil8fHQuaGFzKFwiZHVyYXRpb25cIikmJiF0LmhhcyhcImRhbXBpbmdSYXRpb1wiKT9vZTp0LmhhcyhcImRhbXBpbmdSYXRpb1wiKXx8dC5oYXMoXCJzdGlmZm5lc3NcIil8fHQuaGFzKFwibWFzc1wiKXx8dC5oYXMoXCJkYW1waW5nXCIpfHx0LmhhcyhcInJlc3RTcGVlZFwiKXx8dC5oYXMoXCJyZXN0RGVsdGFcIik/eTpvZX0oRSk7KG51bGw9PT0obj0odD1QKS5uZWVkc0ludGVycG9sYXRpb24pfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmNhbGwodCxsLFMpKSYmKGE9QihbMCwxMDBdLFtsLFNdLHtjbGFtcDohMX0pLGw9MCxTPTEwMCk7dmFyIEE9UChyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sRSkse2Zyb206bCx0bzpTfSkpO3JldHVybiBjJiYobnVsbD09Ynx8YigpLChvPWYoKGZ1bmN0aW9uKGUpe2lmKFJ8fChlPS1lKSxwKz1lLCFrKXt2YXIgdD1BLm5leHQoTWF0aC5tYXgoMCxwKSk7aT10LnZhbHVlLGEmJihpPWEoaSkpLGs9Uj90LmRvbmU6cDw9MH1udWxsPT1PfHxPKGkpLGsmJigwPT09TSYmKG51bGwhPWp8fChqPXApKSxNPHY/ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHI/ZT49dCtuOmU8PS1ufShwLGosdyxSKSYmKE0rKyxcInJldmVyc2VcIj09PUM/cD1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdm9pZCAwPT09biYmKG49MCksdm9pZCAwPT09ciYmKHI9ITApLHI/bGUodCstZSx0LG4pOnQtKGUtdCkrbn0ocCxqLHcsUj1NJTI9PTApOihwPWxlKHAsaix3KSxcIm1pcnJvclwiPT09QyYmQS5mbGlwVGFyZ2V0KCkpLGs9ITEsTCYmTCgpKTooby5zdG9wKCksXyYmXygpKSl9KSkpLnN0YXJ0KCkpLHtzdG9wOmZ1bmN0aW9uKCl7bnVsbD09eHx8eCgpLG8uc3RvcCgpfX19ZnVuY3Rpb24gdWUoZSx0KXtyZXR1cm4gdD9lKigxZTMvdCk6MH12YXIgZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIDE4MCplL01hdGguUEl9LGRlPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxwZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ZGUpLGZ1bmN0aW9uKHQsbixyKXt2YXIgbz1uLXIsaT0tKDAtdCsxKSooMC1lKE1hdGguYWJzKG8pKSk7cmV0dXJuIG88PTA/bitpOm4taX19LGhlPXBlKCksdmU9cGUoTWF0aC5zcXJ0KSxnZT1mdW5jdGlvbihlKXtyZXR1cm4gZSpNYXRoLlBJLzE4MH0sQ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkoXCJ4XCIpJiZlLmhhc093blByb3BlcnR5KFwieVwiKX0sbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIENlKGUpJiZlLmhhc093blByb3BlcnR5KFwielwiKX0seWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5hYnMoZS10KX0sd2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9MiksdD1NYXRoLnBvdygxMCx0KSxNYXRoLnJvdW5kKGUqdCkvdH0sYmU9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHZvaWQgMD09PXImJihyPTApLHdlKGUrbioodC1lKS9NYXRoLm1heChyLG4pKX0seGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMS0zKnQrMyplfSxfZT1mdW5jdGlvbihlLHQpe3JldHVybiAzKnQtNiplfSxMZT1mdW5jdGlvbihlKXtyZXR1cm4gMyplfSxPZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuKCh4ZSh0LG4pKmUrX2UodCxuKSkqZStMZSh0KSkqZX0sRWU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiAzKnhlKHQsbikqZSplKzIqX2UodCxuKSplK0xlKHQpfSxTZT0uMTt0LmFuZ2xlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PU0pLGZlKE1hdGguYXRhbjIodC55LWUueSx0LngtZS54KSl9LHQuYW5pbWF0ZT1jZSx0LmFudGljaXBhdGU9ZWUsdC5hcHBseU9mZnNldD1mdW5jdGlvbihlLHQpe3ZhciBuPSEwO3JldHVybiB2b2lkIDA9PT10JiYodD1lLG49ITEpLGZ1bmN0aW9uKHIpe3JldHVybiBuP3ItZSt0OihlPXIsbj0hMCx0KX19LHQuYXR0cmFjdD1oZSx0LmF0dHJhY3RFeHBvPXZlLHQuYmFja0luPVgsdC5iYWNrSW5PdXQ9USx0LmJhY2tPdXQ9Six0LmJvdW5jZUluPW5lLHQuYm91bmNlSW5PdXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU8LjU/LjUqKDEtdGUoMS0yKmUpKTouNSp0ZSgyKmUtMSkrLjV9LHQuYm91bmNlT3V0PXRlLHQuY2lyY0luPXEsdC5jaXJjSW5PdXQ9Syx0LmNpcmNPdXQ9WSx0LmNsYW1wPXMsdC5jcmVhdGVBbnRpY2lwYXRlPU4sdC5jcmVhdGVBdHRyYWN0b3I9cGUsdC5jcmVhdGVCYWNrSW49Rix0LmNyZWF0ZUV4cG9Jbj0kLHQuY3ViaWNCZXppZXI9ZnVuY3Rpb24oZSx0LG4scil7aWYoZT09PXQmJm49PT1yKXJldHVybiBVO2Zvcih2YXIgbz1uZXcgRmxvYXQzMkFycmF5KDExKSxpPTA7aTwxMTsrK2kpb1tpXT1PZShpKlNlLGUsbik7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiAwPT09aXx8MT09PWk/aTpPZShmdW5jdGlvbih0KXtmb3IodmFyIHI9MCxpPTE7MTAhPT1pJiZvW2ldPD10OysraSlyKz1TZTstLWk7dmFyIGE9cisodC1vW2ldKS8ob1tpKzFdLW9baV0pKlNlLGw9RWUoYSxlLG4pO3JldHVybiBsPj0uMDAxP2Z1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgbz0wO288ODsrK28pe3ZhciBpPUVlKHQsbixyKTtpZigwPT09aSlyZXR1cm4gdDt0LT0oT2UodCxuLHIpLWUpL2l9cmV0dXJuIHR9KHQsYSxlLG4pOjA9PT1sP2E6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaSxhLGw9MDtkb3soaT1PZShhPXQrKG4tdCkvMixyLG8pLWUpPjA/bj1hOnQ9YX13aGlsZShNYXRoLmFicyhpKT4xZS03JiYrK2w8MTApO3JldHVybiBhfSh0LHIscitTZSxlLG4pfShpKSx0LHIpfX0sdC5kZWNheT1pZSx0LmRlZ3JlZXNUb1JhZGlhbnM9Z2UsdC5kaXN0YW5jZT1mdW5jdGlvbihlLHQpe2lmKGooZSkmJmoodCkpcmV0dXJuIHllKGUsdCk7aWYoQ2UoZSkmJkNlKHQpKXt2YXIgbj15ZShlLngsdC54KSxyPXllKGUueSx0LnkpLG89bWUoZSkmJm1lKHQpP3llKGUueix0LnopOjA7cmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyhuLDIpK01hdGgucG93KHIsMikrTWF0aC5wb3cobywyKSl9fSx0LmVhc2VJbj1XLHQuZWFzZUluT3V0PUcsdC5lYXNlT3V0PXosdC5pbmVydGlhPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5mcm9tLG89dm9pZCAwPT09bj8wOm4saT1lLnZlbG9jaXR5LGw9dm9pZCAwPT09aT8wOmkscz1lLm1pbixjPWUubWF4LHU9ZS5wb3dlcixmPXZvaWQgMD09PXU/Ljg6dSxkPWUudGltZUNvbnN0YW50LHA9dm9pZCAwPT09ZD83NTA6ZCxoPWUuYm91bmNlU3RpZmZuZXNzLHY9dm9pZCAwPT09aD81MDA6aCxnPWUuYm91bmNlRGFtcGluZyxDPXZvaWQgMD09PWc/MTA6ZyxtPWUucmVzdERlbHRhLHk9dm9pZCAwPT09bT8xOm0sdz1lLm1vZGlmeVRhcmdldCxiPWUuZHJpdmVyLHg9ZS5vblVwZGF0ZSxfPWUub25Db21wbGV0ZTtmdW5jdGlvbiBMKGUpe3JldHVybiB2b2lkIDAhPT1zJiZlPHN8fHZvaWQgMCE9PWMmJmU+Y31mdW5jdGlvbiBPKGUpe3JldHVybiB2b2lkIDA9PT1zP2M6dm9pZCAwPT09Y3x8TWF0aC5hYnMocy1lKTxNYXRoLmFicyhjLWUpP3M6Y31mdW5jdGlvbiBFKGUpe251bGw9PXR8fHQuc3RvcCgpLHQ9Y2Uoci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGUpLHtkcml2ZXI6YixvblVwZGF0ZTpmdW5jdGlvbih0KXt2YXIgbjtudWxsPT14fHx4KHQpLG51bGw9PT0obj1lLm9uVXBkYXRlKXx8dm9pZCAwPT09bnx8bi5jYWxsKGUsdCl9LG9uQ29tcGxldGU6X30pKX1mdW5jdGlvbiBTKGUpe0Uoci5fX2Fzc2lnbih7dHlwZTpcInNwcmluZ1wiLHN0aWZmbmVzczp2LGRhbXBpbmc6QyxyZXN0RGVsdGE6eX0sZSkpfWlmKEwobykpUyh7ZnJvbTpvLHZlbG9jaXR5OmwsdG86TyhvKX0pO2Vsc2V7dmFyIE09ZipsK287dm9pZCAwIT09dyYmKE09dyhNKSk7dmFyIGosayxSPU8oTSksUD1SPT09cz8tMToxO0Uoe3R5cGU6XCJkZWNheVwiLGZyb206byx2ZWxvY2l0eTpsLHRpbWVDb25zdGFudDpwLHBvd2VyOmYscmVzdERlbHRhOnksbW9kaWZ5VGFyZ2V0Oncsb25VcGRhdGU6TChNKT9mdW5jdGlvbihlKXtqPWssaz1lLGw9dWUoZS1qLGEuZ2V0RnJhbWVEYXRhKCkuZGVsdGEpLCgxPT09UCYmZT5SfHwtMT09PVAmJmU8UikmJlMoe2Zyb206ZSx0bzpSLHZlbG9jaXR5Omx9KX06dm9pZCAwfSl9cmV0dXJue3N0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dC5zdG9wKCl9fX0sdC5pbnRlcnBvbGF0ZT1CLHQuaXNQb2ludD1DZSx0LmlzUG9pbnQzRD1tZSx0LmtleWZyYW1lcz1vZSx0LmxpbmVhcj1VLHQubWlycm9yRWFzaW5nPVosdC5taXg9eCx0Lm1peENvbG9yPVMsdC5taXhDb21wbGV4PUgsdC5waXBlPVIsdC5wb2ludEZyb21WZWN0b3I9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PWdlKHQpLHt4Om4qTWF0aC5jb3ModCkrZS54LHk6bipNYXRoLnNpbih0KStlLnl9fSx0LnByb2dyZXNzPWIsdC5yYWRpYW5zVG9EZWdyZWVzPWZlLHQucmV2ZXJzZUVhc2luZz1ELHQuc21vb3RoPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPTUwKTt2YXIgdD0wLG49MDtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG89YS5nZXRGcmFtZURhdGEoKS50aW1lc3RhbXAsaT1vIT09bj9vLW46MCxsPWk/YmUodCxyLGksZSk6dDtyZXR1cm4gbj1vLHQ9bCxsfX0sdC5zbW9vdGhGcmFtZT1iZSx0LnNuYXA9ZnVuY3Rpb24oZSl7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpcmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQvZSkqZX07dmFyIHQ9MCxuPWUubGVuZ3RoO3JldHVybiBmdW5jdGlvbihyKXt2YXIgbz1NYXRoLmFicyhlWzBdLXIpO2Zvcih0PTE7dDxuO3QrKyl7dmFyIGk9ZVt0XSxhPU1hdGguYWJzKGktcik7aWYoMD09PWEpcmV0dXJuIGk7aWYoYT5vKXJldHVybiBlW3QtMV07aWYodD09PW4tMSlyZXR1cm4gaTtvPWF9fX0sdC5zcHJpbmc9eSx0LnN0ZXBzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PVwiZW5kXCIpLGZ1bmN0aW9uKG4pe3ZhciByPShuPVwiZW5kXCI9PT10P01hdGgubWluKG4sLjk5OSk6TWF0aC5tYXgobiwuMDAxKSkqZSxvPVwiZW5kXCI9PT10P01hdGguZmxvb3Iocik6TWF0aC5jZWlsKHIpO3JldHVybiBzKDAsMSxvL2UpfX0sdC50b0RlY2ltYWw9d2UsdC52ZWxvY2l0eVBlckZyYW1lPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUvKDFlMy90KX0sdC52ZWxvY2l0eVBlclNlY29uZD11ZSx0LndyYXA9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQtZTtyZXR1cm4oKG4tZSklcityKSVyK2V9fSwyNzAzOihlLHQsbik9Pnt2YXIgcj1uKDQxNCk7ZnVuY3Rpb24gbygpe31mdW5jdGlvbiBpKCl7fWkucmVzZXRXYXJuaW5nQ2FjaGU9byxlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLG8saSxhKXtpZihhIT09cil7dmFyIGw9bmV3IEVycm9yKFwiQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlc1wiKTt0aHJvdyBsLm5hbWU9XCJJbnZhcmlhbnQgVmlvbGF0aW9uXCIsbH19ZnVuY3Rpb24gdCgpe3JldHVybiBlfWUuaXNSZXF1aXJlZD1lO3ZhciBuPXthcnJheTplLGJpZ2ludDplLGJvb2w6ZSxmdW5jOmUsbnVtYmVyOmUsb2JqZWN0OmUsc3RyaW5nOmUsc3ltYm9sOmUsYW55OmUsYXJyYXlPZjp0LGVsZW1lbnQ6ZSxlbGVtZW50VHlwZTplLGluc3RhbmNlT2Y6dCxub2RlOmUsb2JqZWN0T2Y6dCxvbmVPZjp0LG9uZU9mVHlwZTp0LHNoYXBlOnQsZXhhY3Q6dCxjaGVja1Byb3BUeXBlczppLHJlc2V0V2FybmluZ0NhY2hlOm99O3JldHVybiBuLlByb3BUeXBlcz1uLG59fSw1Njk3OihlLHQsbik9PntlLmV4cG9ydHM9bigyNzAzKSgpfSw0MTQ6ZT0+e2UuZXhwb3J0cz1cIlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEXCJ9LDcyOTI6KGUsdCxuKT0+e24ucih0KSxuLmQodCx7Q2FsZW5kYXI6KCk9PkpuLENlbnR1cnlWaWV3OigpPT5rdCxEZWNhZGVWaWV3OigpPT5GdCxNb250aFZpZXc6KCk9PlNuLE5hdmlnYXRpb246KCk9PkZlLFllYXJWaWV3OigpPT50bixkZWZhdWx0OigpPT50cn0pO3ZhciByPW4oNjY4OSksbz1uLm4ociksaT1uKDU2OTcpLGE9bi5uKGkpO2Z1bmN0aW9uIGwoZSl7dmFyIHQsbixyPVwiXCI7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlKXIrPWU7ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgZSlpZihBcnJheS5pc0FycmF5KGUpKWZvcih0PTA7dDxlLmxlbmd0aDt0KyspZVt0XSYmKG49bChlW3RdKSkmJihyJiYocis9XCIgXCIpLHIrPW4pO2Vsc2UgZm9yKHQgaW4gZSllW3RdJiYociYmKHIrPVwiIFwiKSxyKz10KTtyZXR1cm4gcn1jb25zdCBzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQsbj0wLHI9XCJcIjtuPGFyZ3VtZW50cy5sZW5ndGg7KShlPWFyZ3VtZW50c1tuKytdKSYmKHQ9bChlKSkmJihyJiYocis9XCIgXCIpLHIrPXQpO3JldHVybiByfTt2YXIgYz1uKDc3MyksdT1uLm4oYyk7ZnVuY3Rpb24gZihlKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZSl9dmFyIGQ9dSgpKChmdW5jdGlvbihlKXt2YXIgdCxuPXZvaWQgMD09PWU/e306ZSxyPW4udXNlRmFsbGJhY2tMb2NhbGUsbz12b2lkIDA9PT1yfHxyLGk9bi5mYWxsYmFja0xvY2FsZSxhPXZvaWQgMD09PWk/XCJlbi1VU1wiOmksbD1bXTtpZihcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93KXt2YXIgcz13aW5kb3cubmF2aWdhdG9yO2w9bC5jb25jYXQocy5sYW5ndWFnZXMscy5sYW5ndWFnZSxzLnVzZXJMYW5ndWFnZSxzLmJyb3dzZXJMYW5ndWFnZSxzLnN5c3RlbUxhbmd1YWdlKX1yZXR1cm4gbyYmbC5wdXNoKGEpLGZ1bmN0aW9uKGUpe3JldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7aWYoIWV8fC0xPT09ZS5pbmRleE9mKFwiLVwiKXx8ZS50b0xvd2VyQ2FzZSgpIT09ZSlyZXR1cm4gZTt2YXIgdD1lLnNwbGl0KFwiLVwiKTtyZXR1cm4gdFswXStcIi1cIit0WzFdLnRvVXBwZXJDYXNlKCl9KSl9KCh0PWwpLmZpbHRlcigoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZSYmdC5pbmRleE9mKGUpPT09bn0pKSl9KSxmKSxwPXUoKSgoZnVuY3Rpb24oZSl7cmV0dXJuIGQoZSlbMF18fG51bGx9KSxmKTtjb25zdCBoPXA7ZnVuY3Rpb24gdihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIsbyl7dm9pZCAwPT09byYmKG89bik7dmFyIGk9ZShyKStvO3JldHVybiB0KGkpfX1mdW5jdGlvbiBnKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbmV3IERhdGUoZSh0KS5nZXRUaW1lKCktMSl9fWZ1bmN0aW9uIEMoZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuW2UobiksdChuKV19fWZ1bmN0aW9uIG0oZSl7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIGUuZ2V0RnVsbFllYXIoKTtpZihcIm51bWJlclwiPT10eXBlb2YgZSlyZXR1cm4gZTt2YXIgdD1wYXJzZUludChlLDEwKTtpZihcInN0cmluZ1wiPT10eXBlb2YgZSYmIWlzTmFOKHQpKXJldHVybiB0O3Rocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBnZXQgeWVhciBmcm9tIGRhdGU6IFwiLmNvbmNhdChlLFwiLlwiKSl9ZnVuY3Rpb24geShlKXtpZihlIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gZS5nZXRNb250aCgpO3Rocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBnZXQgbW9udGggZnJvbSBkYXRlOiBcIi5jb25jYXQoZSxcIi5cIikpfWZ1bmN0aW9uIHcoZSl7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIGUuZ2V0RGF0ZSgpO3Rocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBnZXQgeWVhciBmcm9tIGRhdGU6IFwiLmNvbmNhdChlLFwiLlwiKSl9ZnVuY3Rpb24gYihlKXt2YXIgdD1tKGUpLG49dCsoMS10KSUxMDAscj1uZXcgRGF0ZTtyZXR1cm4gci5zZXRGdWxsWWVhcihuLDAsMSksci5zZXRIb3VycygwLDAsMCwwKSxyfXZhciB4PXYobSxiLC0xMDApLF89dihtLGIsMTAwKSxMPWcoXyksTz12KG0sTCwtMTAwKSxFPSh2KG0sTCwxMDApLEMoYixMKSk7ZnVuY3Rpb24gUyhlKXt2YXIgdD1tKGUpLG49dCsoMS10KSUxMCxyPW5ldyBEYXRlO3JldHVybiByLnNldEZ1bGxZZWFyKG4sMCwxKSxyLnNldEhvdXJzKDAsMCwwLDApLHJ9dmFyIE09dihtLFMsLTEwKSxqPXYobSxTLDEwKSxrPWcoaiksUj12KG0saywtMTApLFA9KHYobSxrLDEwKSxDKFMsaykpO2Z1bmN0aW9uIEEoZSl7dmFyIHQ9bShlKSxuPW5ldyBEYXRlO3JldHVybiBuLnNldEZ1bGxZZWFyKHQsMCwxKSxuLnNldEhvdXJzKDAsMCwwLDApLG59dmFyIEk9dihtLEEsLTEpLFQ9dihtLEEsMSksSD1nKFQpLFY9dihtLEgsLTEpLEI9KHYobSxILDEpLEMoQSxIKSk7ZnVuY3Rpb24gRChlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe3ZvaWQgMD09PXImJihyPXQpO3ZhciBvPW0obiksaT15KG4pK3IsYT1uZXcgRGF0ZTtyZXR1cm4gYS5zZXRGdWxsWWVhcihvLGksMSksYS5zZXRIb3VycygwLDAsMCwwKSxlKGEpfX1mdW5jdGlvbiBaKGUpe3ZhciB0PW0oZSksbj15KGUpLHI9bmV3IERhdGU7cmV0dXJuIHIuc2V0RnVsbFllYXIodCxuLDEpLHIuc2V0SG91cnMoMCwwLDAsMCkscn12YXIgJD1EKFosLTEpLEY9RChaLDEpLE49ZyhGKSxVPUQoTiwtMSksVz0oRChOLDEpLEMoWixOKSk7ZnVuY3Rpb24geihlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe3ZvaWQgMD09PXImJihyPXQpO3ZhciBvPW0obiksaT15KG4pLGE9dyhuKStyLGw9bmV3IERhdGU7cmV0dXJuIGwuc2V0RnVsbFllYXIobyxpLGEpLGwuc2V0SG91cnMoMCwwLDAsMCksZShsKX19ZnVuY3Rpb24gRyhlKXt2YXIgdD1tKGUpLG49eShlKSxyPXcoZSksbz1uZXcgRGF0ZTtyZXR1cm4gby5zZXRGdWxsWWVhcih0LG4sciksby5zZXRIb3VycygwLDAsMCwwKSxvfXooRywtMSk7dmFyIHEsWT1nKHooRywxKSksSz0oeihZLC0xKSx6KFksMSksQyhHLFkpKTtmdW5jdGlvbiBYKGUpe3JldHVybiB3KE4oZSkpfWZ1bmN0aW9uIEooZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBRKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgZWUsdGU9e0FSQUJJQzpcIkFyYWJpY1wiLEhFQlJFVzpcIkhlYnJld1wiLElTT184NjAxOlwiSVNPIDg2MDFcIixVUzpcIlVTXCJ9LG5lPShRKHE9e30sdGUuVVMsW1wiZW4tQ0FcIixcImVuLVVTXCIsXCJlcy1BUlwiLFwiZXMtQk9cIixcImVzLUNMXCIsXCJlcy1DT1wiLFwiZXMtQ1JcIixcImVzLURPXCIsXCJlcy1FQ1wiLFwiZXMtR1RcIixcImVzLUhOXCIsXCJlcy1NWFwiLFwiZXMtTklcIixcImVzLVBBXCIsXCJlcy1QRVwiLFwiZXMtUFJcIixcImVzLVNWXCIsXCJlcy1WRVwiLFwicHQtQlJcIl0pLFEocSx0ZS5BUkFCSUMsW1wiYXJcIixcImFyLUFFXCIsXCJhci1CSFwiLFwiYXItRFpcIixcImFyLUVHXCIsXCJhci1JUVwiLFwiYXItSk9cIixcImFyLUtXXCIsXCJhci1MWVwiLFwiYXItT01cIixcImFyLVFBXCIsXCJhci1TQVwiLFwiYXItU0RcIixcImFyLVNZXCIsXCJhci1ZRVwiLFwiZHZcIixcImR2LU1WXCIsXCJwc1wiLFwicHMtQVJcIl0pLFEocSx0ZS5IRUJSRVcsW1wiaGVcIixcImhlLUlMXCJdKSxxKSxyZT0oZWU9QXJyYXkoNyksZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gSihlKX0oZWUpfHxmdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbXCJAQGl0ZXJhdG9yXCJdKXJldHVybiBBcnJheS5mcm9tKGUpfShlZSl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIEooZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uP0FycmF5LmZyb20oZSk6XCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP0ooZSx0KTp2b2lkIDB9fShlZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpLm1hcCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0pKSxvZT1uZXcgTWFwO2Z1bmN0aW9uIGllKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgcj10fHxoKCk7b2UuaGFzKHIpfHxvZS5zZXQocixuZXcgTWFwKTt2YXIgbz1vZS5nZXQocik7cmV0dXJuIG8uaGFzKGUpfHxvLnNldChlLG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHIsZSkuZm9ybWF0KSxvLmdldChlKShuKX19KGUpKHQsZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IERhdGUoZSk7cmV0dXJuIG5ldyBEYXRlKHQuc2V0SG91cnMoMTIpKX0obikpfX1pZSh7ZGF5OlwibnVtZXJpY1wiLG1vbnRoOlwibnVtZXJpY1wiLHllYXI6XCJudW1lcmljXCJ9KTt2YXIgYWU9aWUoe2RheTpcIm51bWVyaWNcIn0pLGxlPWllKHtkYXk6XCJudW1lcmljXCIsbW9udGg6XCJsb25nXCIseWVhcjpcIm51bWVyaWNcIn0pLHNlPWllKHttb250aDpcImxvbmdcIn0pLGNlPWllKHttb250aDpcImxvbmdcIix5ZWFyOlwibnVtZXJpY1wifSksdWU9aWUoe3dlZWtkYXk6XCJzaG9ydFwifSksZmU9aWUoe3dlZWtkYXk6XCJsb25nXCJ9KSxkZT1pZSh7eWVhcjpcIm51bWVyaWNcIn0pLHBlPXJlWzBdLGhlPXJlWzVdLHZlPXJlWzZdO2Z1bmN0aW9uIGdlKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0ZS5JU09fODYwMSxuPWUuZ2V0RGF5KCk7c3dpdGNoKHQpe2Nhc2UgdGUuSVNPXzg2MDE6cmV0dXJuKG4rNiklNztjYXNlIHRlLkFSQUJJQzpyZXR1cm4obisxKSU3O2Nhc2UgdGUuSEVCUkVXOmNhc2UgdGUuVVM6cmV0dXJuIG47ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBjYWxlbmRhciB0eXBlLlwiKX19ZnVuY3Rpb24gQ2UoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRlLklTT184NjAxLG49bShlKSxyPXkoZSksbz1lLmdldERhdGUoKS1nZShlLHQpO3JldHVybiBuZXcgRGF0ZShuLHIsbyl9ZnVuY3Rpb24gbWUoZSx0KXtzd2l0Y2goZSl7Y2FzZVwiY2VudHVyeVwiOnJldHVybiBiKHQpO2Nhc2VcImRlY2FkZVwiOnJldHVybiBTKHQpO2Nhc2VcInllYXJcIjpyZXR1cm4gQSh0KTtjYXNlXCJtb250aFwiOnJldHVybiBaKHQpO2Nhc2VcImRheVwiOnJldHVybiBHKHQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fWZ1bmN0aW9uIHllKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4gXyh0KTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gaih0KTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIFQodCk7Y2FzZVwibW9udGhcIjpyZXR1cm4gRih0KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX12YXIgd2U9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIE0odCwtMTAwKTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIEkodCwtMTApO2Nhc2VcIm1vbnRoXCI6cmV0dXJuICQodCwtMTIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fSxiZT1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gaih0LDEwMCk7Y2FzZVwieWVhclwiOnJldHVybiBUKHQsMTApO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIEYodCwxMik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19O2Z1bmN0aW9uIHhlKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4gTCh0KTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gayh0KTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIEgodCk7Y2FzZVwibW9udGhcIjpyZXR1cm4gTih0KTtjYXNlXCJkYXlcIjpyZXR1cm4gWSh0KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX12YXIgX2U9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIFIodCwtMTAwKTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIFYodCwtMTApO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIFUodCwtMTIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fTtmdW5jdGlvbiBMZShlLHQpe3N3aXRjaChlKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIEUodCk7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIFAodCk7Y2FzZVwieWVhclwiOnJldHVybiBCKHQpO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIFcodCk7Y2FzZVwiZGF5XCI6cmV0dXJuIEsodCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19ZnVuY3Rpb24gT2UoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOmRlO3JldHVybihhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCkubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSkpLmpvaW4oXCIg4oCTIFwiKX1mdW5jdGlvbiBFZShlLHQsbil7cmV0dXJuIE9lKGUsdCxQKG4pKX1mdW5jdGlvbiBTZShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGUuSVNPXzg2MDEsbj1lLmdldERheSgpO3N3aXRjaCh0KXtjYXNlIHRlLkFSQUJJQzpjYXNlIHRlLkhFQlJFVzpyZXR1cm4gbj09PWhlfHxuPT09dmU7Y2FzZSB0ZS5JU09fODYwMTpjYXNlIHRlLlVTOnJldHVybiBuPT09dmV8fG49PT1wZTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGNhbGVuZGFyIHR5cGUuXCIpfX1mdW5jdGlvbiBNZShlKXtyZXR1cm4gTWU9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sTWUoZSl9dmFyIGplPU9iamVjdC52YWx1ZXModGUpLGtlPVtcImNlbnR1cnlcIixcImRlY2FkZVwiLFwieWVhclwiLFwibW9udGhcIl0sUmU9YSgpLm9uZU9mKGplKSxQZT1hKCkub25lT2ZUeXBlKFthKCkuc3RyaW5nLGEoKS5hcnJheU9mKGEoKS5zdHJpbmcpXSksQWU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWVbdF07aWYoIXIpcmV0dXJuIG51bGw7aWYoIShyIGluc3RhbmNlb2YgRGF0ZSkpcmV0dXJuIG5ldyBFcnJvcihcIkludmFsaWQgcHJvcCBgXCIuY29uY2F0KHQsXCJgIG9mIHR5cGUgYFwiKS5jb25jYXQoTWUociksXCJgIHN1cHBsaWVkIHRvIGBcIikuY29uY2F0KG4sXCJgLCBleHBlY3RlZCBpbnN0YW5jZSBvZiBgRGF0ZWAuXCIpKTt2YXIgbz1lLm1heERhdGU7cmV0dXJuIG8mJnI+bz9uZXcgRXJyb3IoXCJJbnZhbGlkIHByb3AgYFwiLmNvbmNhdCh0LFwiYCBvZiB0eXBlIGBcIikuY29uY2F0KE1lKHIpLFwiYCBzdXBwbGllZCB0byBgXCIpLmNvbmNhdChuLFwiYCwgbWluRGF0ZSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gbWF4RGF0ZS5cIikpOm51bGx9LEllPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lW3RdO2lmKCFyKXJldHVybiBudWxsO2lmKCEociBpbnN0YW5jZW9mIERhdGUpKXJldHVybiBuZXcgRXJyb3IoXCJJbnZhbGlkIHByb3AgYFwiLmNvbmNhdCh0LFwiYCBvZiB0eXBlIGBcIikuY29uY2F0KE1lKHIpLFwiYCBzdXBwbGllZCB0byBgXCIpLmNvbmNhdChuLFwiYCwgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgYERhdGVgLlwiKSk7dmFyIG89ZS5taW5EYXRlO3JldHVybiBvJiZyPG8/bmV3IEVycm9yKFwiSW52YWxpZCBwcm9wIGBcIi5jb25jYXQodCxcImAgb2YgdHlwZSBgXCIpLmNvbmNhdChNZShyKSxcImAgc3VwcGxpZWQgdG8gYFwiKS5jb25jYXQobixcImAsIG1heERhdGUgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiBtaW5EYXRlLlwiKSk6bnVsbH0sVGU9YSgpLm9uZU9mVHlwZShbYSgpLmZ1bmMsYSgpLnNoYXBlKHtjdXJyZW50OmEoKS5hbnl9KV0pLEhlPWEoKS5vbmVPZlR5cGUoW2EoKS5pbnN0YW5jZU9mKERhdGUpLGEoKS5hcnJheU9mKGEoKS5pbnN0YW5jZU9mKERhdGUpKV0pLFZlPWEoKS5hcnJheU9mKGEoKS5vbmVPZihrZSkpLEJlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lW3RdLG89ZS52aWV3c3x8a2U7cmV0dXJuIHZvaWQgMCE9PXImJi0xPT09by5pbmRleE9mKHIpP25ldyBFcnJvcihcIkludmFsaWQgcHJvcCBgXCIuY29uY2F0KHQsXCJgIG9mIHZhbHVlIGBcIikuY29uY2F0KHIsXCJgIHN1cHBsaWVkIHRvIGBcIikuY29uY2F0KG4sXCJgLCBleHBlY3RlZCBvbmUgb2YgW1wiKS5jb25jYXQoby5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybidcIicuY29uY2F0KGUsJ1wiJyl9KSkuam9pbihcIiwgXCIpLFwiXS5cIikpOm51bGx9O0JlLmlzUmVxdWlyZWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWVbdF07cmV0dXJuIHI/QmUoZSx0LG4pOm5ldyBFcnJvcihcIlRoZSBwcm9wIGBcIi5jb25jYXQodCxcImAgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGluIGBcIikuY29uY2F0KG4sXCJgLCBidXQgaXRzIHZhbHVlIGlzIGBcIikuY29uY2F0KHIsXCJgLlwiKSl9O3ZhciBEZT17YWN0aXZlU3RhcnREYXRlOmEoKS5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsaG92ZXI6YSgpLmluc3RhbmNlT2YoRGF0ZSksbG9jYWxlOmEoKS5zdHJpbmcsbWF4RGF0ZTpJZSxtaW5EYXRlOkFlLG9uQ2xpY2s6YSgpLmZ1bmMsb25Nb3VzZU92ZXI6YSgpLmZ1bmMsdGlsZUNsYXNzTmFtZTphKCkub25lT2ZUeXBlKFthKCkuZnVuYyxQZV0pLHRpbGVDb250ZW50OmEoKS5vbmVPZlR5cGUoW2EoKS5mdW5jLGEoKS5ub2RlXSksdmFsdWU6SGUsdmFsdWVUeXBlOmEoKS5zdHJpbmd9LFplPXthY3RpdmVTdGFydERhdGU6YSgpLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxjbGFzc2VzOmEoKS5hcnJheU9mKGEoKS5zdHJpbmcpLmlzUmVxdWlyZWQsZGF0ZTphKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLGxvY2FsZTphKCkuc3RyaW5nLG1heERhdGU6SWUsbWluRGF0ZTpBZSxvbkNsaWNrOmEoKS5mdW5jLG9uTW91c2VPdmVyOmEoKS5mdW5jLHN0eWxlOmEoKS5vYmplY3RPZihhKCkub25lT2ZUeXBlKFthKCkuc3RyaW5nLGEoKS5udW1iZXJdKSksdGlsZUNsYXNzTmFtZTphKCkub25lT2ZUeXBlKFthKCkuZnVuYyxQZV0pLHRpbGVDb250ZW50OmEoKS5vbmVPZlR5cGUoW2EoKS5mdW5jLGEoKS5ub2RlXSksdGlsZURpc2FibGVkOmEoKS5mdW5jfSwkZT1cInJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uXCI7ZnVuY3Rpb24gRmUoZSl7dmFyIHQsbj1lLmFjdGl2ZVN0YXJ0RGF0ZSxyPWUuZHJpbGxVcCxpPWUuZm9ybWF0TW9udGhZZWFyLGE9dm9pZCAwPT09aT9jZTppLGw9ZS5mb3JtYXRZZWFyLHM9dm9pZCAwPT09bD9kZTpsLGM9ZS5sb2NhbGUsdT1lLm1heERhdGUsZj1lLm1pbkRhdGUsZD1lLm5hdmlnYXRpb25BcmlhTGFiZWwsaD12b2lkIDA9PT1kP1wiXCI6ZCx2PWUubmF2aWdhdGlvbkFyaWFMaXZlLGc9ZS5uYXZpZ2F0aW9uTGFiZWwsQz1lLm5leHQyQXJpYUxhYmVsLG09dm9pZCAwPT09Qz9cIlwiOkMseT1lLm5leHQyTGFiZWwsdz12b2lkIDA9PT15P1wiwrtcIjp5LGI9ZS5uZXh0QXJpYUxhYmVsLF89dm9pZCAwPT09Yj9cIlwiOmIsTD1lLm5leHRMYWJlbCxTPXZvaWQgMD09PUw/XCLigLpcIjpMLGo9ZS5wcmV2MkFyaWFMYWJlbCxrPXZvaWQgMD09PWo/XCJcIjpqLFA9ZS5wcmV2MkxhYmVsLEE9dm9pZCAwPT09UD9cIsKrXCI6UCxUPWUucHJldkFyaWFMYWJlbCxIPXZvaWQgMD09PVQ/XCJcIjpULEI9ZS5wcmV2TGFiZWwsRD12b2lkIDA9PT1CP1wi4oC5XCI6QixaPWUuc2V0QWN0aXZlU3RhcnREYXRlLEY9ZS5zaG93RG91YmxlVmlldyxOPWUudmlldyxXPWUudmlld3MuaW5kZXhPZihOKT4wLHo9XCJjZW50dXJ5XCIhPT1OLEc9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZVwiY2VudHVyeVwiOnJldHVybiB4KHQpO2Nhc2VcImRlY2FkZVwiOnJldHVybiBNKHQpO2Nhc2VcInllYXJcIjpyZXR1cm4gSSh0KTtjYXNlXCJtb250aFwiOnJldHVybiAkKHQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fShOLG4pLHE9eiYmd2UoTixuKSxZPXllKE4sbiksSz16JiZiZShOLG4pLFg9ZnVuY3Rpb24oKXtpZihHLmdldEZ1bGxZZWFyKCk8MClyZXR1cm4hMDt2YXIgZT1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIE8odCk7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIFIodCk7Y2FzZVwieWVhclwiOnJldHVybiBWKHQpO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIFUodCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19KE4sbik7cmV0dXJuIGYmJmY+PWV9KCksSj16JiZmdW5jdGlvbigpe2lmKHEuZ2V0RnVsbFllYXIoKTwwKXJldHVybiEwO3ZhciBlPV9lKE4sbik7cmV0dXJuIGYmJmY+PWV9KCksUT11JiZ1PFksZWU9eiYmdSYmdTxLO2Z1bmN0aW9uIHRlKGUpe3ZhciB0PWZ1bmN0aW9uKCl7c3dpdGNoKE4pe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiBPZShlLHQsRShuKSl9KGMscyxlKTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gRWUoYyxzLGUpO2Nhc2VcInllYXJcIjpyZXR1cm4gcyhjLGUpO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIGEoYyxlKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdmlldzogXCIuY29uY2F0KE4sXCIuXCIpKX19KCk7cmV0dXJuIGc/Zyh7ZGF0ZTplLGxhYmVsOnQsbG9jYWxlOmN8fHAoKSx2aWV3Ok59KTp0fXJldHVybiBvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6JGV9LG51bGwhPT1BJiZ6JiZvKCkuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHtcImFyaWEtbGFiZWxcIjprLGNsYXNzTmFtZTpcIlwiLmNvbmNhdCgkZSxcIl9fYXJyb3cgXCIpLmNvbmNhdCgkZSxcIl9fcHJldjItYnV0dG9uXCIpLGRpc2FibGVkOkosb25DbGljazpmdW5jdGlvbigpe1oocSxcInByZXYyXCIpfSx0eXBlOlwiYnV0dG9uXCJ9LEEpLG51bGwhPT1EJiZvKCkuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHtcImFyaWEtbGFiZWxcIjpILGNsYXNzTmFtZTpcIlwiLmNvbmNhdCgkZSxcIl9fYXJyb3cgXCIpLmNvbmNhdCgkZSxcIl9fcHJldi1idXR0b25cIiksZGlzYWJsZWQ6WCxvbkNsaWNrOmZ1bmN0aW9uKCl7WihHLFwicHJldlwiKX0sdHlwZTpcImJ1dHRvblwifSxEKSwodD1cIlwiLmNvbmNhdCgkZSxcIl9fbGFiZWxcIiksbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6aCxcImFyaWEtbGl2ZVwiOnYsY2xhc3NOYW1lOnQsZGlzYWJsZWQ6IVcsb25DbGljazpyLHN0eWxlOntmbGV4R3JvdzoxfSx0eXBlOlwiYnV0dG9uXCJ9LG8oKS5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtjbGFzc05hbWU6XCJcIi5jb25jYXQodCxcIl9fbGFiZWxUZXh0IFwiKS5jb25jYXQodCxcIl9fbGFiZWxUZXh0LS1mcm9tXCIpfSx0ZShuKSksRiYmbygpLmNyZWF0ZUVsZW1lbnQobygpLkZyYWdtZW50LG51bGwsbygpLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIse2NsYXNzTmFtZTpcIlwiLmNvbmNhdCh0LFwiX19kaXZpZGVyXCIpfSxcIiDigJMgXCIpLG8oKS5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtjbGFzc05hbWU6XCJcIi5jb25jYXQodCxcIl9fbGFiZWxUZXh0IFwiKS5jb25jYXQodCxcIl9fbGFiZWxUZXh0LS10b1wiKX0sdGUoWSkpKSkpLG51bGwhPT1TJiZvKCkuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHtcImFyaWEtbGFiZWxcIjpfLGNsYXNzTmFtZTpcIlwiLmNvbmNhdCgkZSxcIl9fYXJyb3cgXCIpLmNvbmNhdCgkZSxcIl9fbmV4dC1idXR0b25cIiksZGlzYWJsZWQ6USxvbkNsaWNrOmZ1bmN0aW9uKCl7WihZLFwibmV4dFwiKX0sdHlwZTpcImJ1dHRvblwifSxTKSxudWxsIT09dyYmeiYmbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6bSxjbGFzc05hbWU6XCJcIi5jb25jYXQoJGUsXCJfX2Fycm93IFwiKS5jb25jYXQoJGUsXCJfX25leHQyLWJ1dHRvblwiKSxkaXNhYmxlZDplZSxvbkNsaWNrOmZ1bmN0aW9uKCl7WihLLFwibmV4dDJcIil9LHR5cGU6XCJidXR0b25cIn0sdykpfUZlLnByb3BUeXBlcz17YWN0aXZlU3RhcnREYXRlOmEoKS5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsZHJpbGxVcDphKCkuZnVuYy5pc1JlcXVpcmVkLGZvcm1hdE1vbnRoWWVhcjphKCkuZnVuYyxmb3JtYXRZZWFyOmEoKS5mdW5jLGxvY2FsZTphKCkuc3RyaW5nLG1heERhdGU6YSgpLmluc3RhbmNlT2YoRGF0ZSksbWluRGF0ZTphKCkuaW5zdGFuY2VPZihEYXRlKSxuYXZpZ2F0aW9uQXJpYUxhYmVsOmEoKS5zdHJpbmcsbmF2aWdhdGlvbkFyaWFMaXZlOmEoKS5zdHJpbmcsbmF2aWdhdGlvbkxhYmVsOmEoKS5mdW5jLG5leHQyQXJpYUxhYmVsOmEoKS5zdHJpbmcsbmV4dDJMYWJlbDphKCkubm9kZSxuZXh0QXJpYUxhYmVsOmEoKS5zdHJpbmcsbmV4dExhYmVsOmEoKS5ub2RlLHByZXYyQXJpYUxhYmVsOmEoKS5zdHJpbmcscHJldjJMYWJlbDphKCkubm9kZSxwcmV2QXJpYUxhYmVsOmEoKS5zdHJpbmcscHJldkxhYmVsOmEoKS5ub2RlLHNldEFjdGl2ZVN0YXJ0RGF0ZTphKCkuZnVuYy5pc1JlcXVpcmVkLHNob3dEb3VibGVWaWV3OmEoKS5ib29sLHZpZXc6QmUuaXNSZXF1aXJlZCx2aWV3czpWZS5pc1JlcXVpcmVkfTt2YXIgTmU9W1wiY2hpbGRyZW5cIixcImNsYXNzTmFtZVwiLFwiZGlyZWN0aW9uXCIsXCJjb3VudFwiLFwib2Zmc2V0XCIsXCJzdHlsZVwiLFwid3JhcFwiXTtmdW5jdGlvbiBVZSgpe3JldHVybiBVZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LFVlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBXZShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gemUoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/V2UoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtHZShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6V2UoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gR2UoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHFlKGUpe3JldHVyblwiXCIuY29uY2F0KGUsXCIlXCIpfWZ1bmN0aW9uIFllKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1lLmNsYXNzTmFtZSxyPWUuZGlyZWN0aW9uLGk9ZS5jb3VudCxhPWUub2Zmc2V0LGw9ZS5zdHlsZSxzPWUud3JhcCxjPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxOZSk7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsVWUoe2NsYXNzTmFtZTpuLHN0eWxlOnplKHtkaXNwbGF5OlwiZmxleFwiLGZsZXhEaXJlY3Rpb246cixmbGV4V3JhcDpzP1wid3JhcFwiOlwibm8td3JhcFwifSxsKX0sYyksbygpLkNoaWxkcmVuLm1hcCh0LChmdW5jdGlvbihlLHQpe3JldHVybiBvKCkuY2xvbmVFbGVtZW50KGUsemUoemUoe30sZS5wcm9wcykse30se3N0eWxlOntmbGV4QmFzaXM6cWUoMTAwL2kpLGZsZXhTaHJpbms6MCxmbGV4R3JvdzowLG92ZXJmbG93OlwiaGlkZGVuXCIsbWFyZ2luTGVmdDphJiYwPT09dD9xZSgxMDAqYS9pKTpudWxsfX0pKX0pKSl9ZnVuY3Rpb24gS2UoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIFhlKGUpfShlKXx8ZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lW1wiQEBpdGVyYXRvclwiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIFhlKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVyblwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bj9BcnJheS5mcm9tKGUpOlwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9YZShlLHQpOnZvaWQgMH19KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIFhlKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gSmUoZSx0KXtyZXR1cm4gdFswXTw9ZSYmdFsxXT49ZX1mdW5jdGlvbiBRZShlLHQpe3JldHVybiBKZShlWzBdLHQpfHxKZShlWzFdLHQpfWZ1bmN0aW9uIGV0KGUsdCxuKXt2YXIgcj1bXTtpZihRZSh0LGUpKXtyLnB1c2gobik7dmFyIG89SmUoZVswXSx0KSxpPUplKGVbMV0sdCk7byYmci5wdXNoKFwiXCIuY29uY2F0KG4sXCJTdGFydFwiKSksaSYmci5wdXNoKFwiXCIuY29uY2F0KG4sXCJFbmRcIikpLG8mJmkmJnIucHVzaChcIlwiLmNvbmNhdChuLFwiQm90aEVuZHNcIikpfXJldHVybiByfWZ1bmN0aW9uIHR0KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9ZS52YWx1ZSxuPWUudmFsdWVUeXBlLHI9ZS5kYXRlLG89ZS5kYXRlVHlwZSxpPWUuaG92ZXIsYT1cInJlYWN0LWNhbGVuZGFyX190aWxlXCIsbD1bYV07aWYoIXIpcmV0dXJuIGw7aWYoIUFycmF5LmlzQXJyYXkocikmJiFvKXRocm93IG5ldyBFcnJvcihcImdldFRpbGVDbGFzc2VzKCk6IFVuYWJsZSB0byBnZXQgdGlsZSBhY3Rpdml0eSBjbGFzc2VzIGJlY2F1c2Ugb25lIG9yIG1vcmUgcmVxdWlyZWQgYXJndW1lbnRzIHdlcmUgbm90IHBhc3NlZC5cIik7dmFyIHM9bmV3IERhdGUsYz1BcnJheS5pc0FycmF5KHIpP3I6TGUobyxyKTtpZihKZShzLGMpJiZsLnB1c2goXCJcIi5jb25jYXQoYSxcIi0tbm93XCIpKSwhdClyZXR1cm4gbDtpZighQXJyYXkuaXNBcnJheSh0KSYmIW4pdGhyb3cgbmV3IEVycm9yKFwiZ2V0VGlsZUNsYXNzZXMoKTogVW5hYmxlIHRvIGdldCB0aWxlIGFjdGl2aXR5IGNsYXNzZXMgYmVjYXVzZSBvbmUgb3IgbW9yZSByZXF1aXJlZCBhcmd1bWVudHMgd2VyZSBub3QgcGFzc2VkLlwiKTt2YXIgdSxmLGQ9QXJyYXkuaXNBcnJheSh0KT90OkxlKG4sdCk7Zj1jLCh1PWQpWzBdPD1mWzBdJiZ1WzFdPj1mWzFdP2wucHVzaChcIlwiLmNvbmNhdChhLFwiLS1hY3RpdmVcIikpOlFlKGQsYykmJmwucHVzaChcIlwiLmNvbmNhdChhLFwiLS1oYXNBY3RpdmVcIikpO3ZhciBwPWV0KGQsYyxcIlwiLmNvbmNhdChhLFwiLS1yYW5nZVwiKSk7bC5wdXNoLmFwcGx5KGwsS2UocCkpO3ZhciBoPVtdLmNvbmNhdCh0KTtpZihpJiYxPT09aC5sZW5ndGgpe3ZhciB2PWV0KGk+ZFswXT9bZFswXSxpXTpbaSxkWzBdXSxjLFwiXCIuY29uY2F0KGEsXCItLWhvdmVyXCIpKTtsLnB1c2guYXBwbHkobCxLZSh2KSl9cmV0dXJuIGx9WWUucHJvcFR5cGVzPXtjaGlsZHJlbjphKCkubm9kZSxjbGFzc05hbWU6YSgpLnN0cmluZyxjb3VudDphKCkubnVtYmVyLmlzUmVxdWlyZWQsZGlyZWN0aW9uOmEoKS5zdHJpbmcsb2Zmc2V0OmEoKS5udW1iZXIsc3R5bGU6YSgpLm9iamVjdE9mKGEoKS5vbmVPZlR5cGUoW2EoKS5zdHJpbmcsYSgpLm51bWJlcl0pKSx3cmFwOmEoKS5ib29sfTt2YXIgbnQ9W1wiY2xhc3NOYW1lXCIsXCJjb3VudFwiLFwiZGF0ZVRyYW5zZm9ybVwiLFwiZGF0ZVR5cGVcIixcImVuZFwiLFwiaG92ZXJcIixcIm9mZnNldFwiLFwic3RhcnRcIixcInN0ZXBcIixcInRpbGVcIixcInZhbHVlXCIsXCJ2YWx1ZVR5cGVcIl07ZnVuY3Rpb24gcnQoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIG90KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3J0KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7aXQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnJ0KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGl0KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBhdCgpe3JldHVybiBhdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGF0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBsdChlKXtmb3IodmFyIHQ9ZS5jbGFzc05hbWUsbj1lLmNvdW50LHI9dm9pZCAwPT09bj8zOm4saT1lLmRhdGVUcmFuc2Zvcm0sYT1lLmRhdGVUeXBlLGw9ZS5lbmQscz1lLmhvdmVyLGM9ZS5vZmZzZXQsdT1lLnN0YXJ0LGY9ZS5zdGVwLGQ9dm9pZCAwPT09Zj8xOmYscD1lLnRpbGUsaD1lLnZhbHVlLHY9ZS52YWx1ZVR5cGUsZz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsbnQpLEM9W10sbT11O208PWw7bSs9ZCl7dmFyIHk9aShtKTtDLnB1c2gobygpLmNyZWF0ZUVsZW1lbnQocCxhdCh7a2V5OnkuZ2V0VGltZSgpLGNsYXNzZXM6dHQoe3ZhbHVlOmgsdmFsdWVUeXBlOnYsZGF0ZTp5LGRhdGVUeXBlOmEsaG92ZXI6c30pLGRhdGU6eSxwb2ludDptfSxnKSkpfXJldHVybiBvKCkuY3JlYXRlRWxlbWVudChZZSx7Y2xhc3NOYW1lOnQsY291bnQ6cixvZmZzZXQ6Yyx3cmFwOiEwfSxDKX1mdW5jdGlvbiBzdChlKXtyZXR1cm4gc3Q9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sc3QoZSl9ZnVuY3Rpb24gY3QoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHV0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2N0KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dnQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmN0KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGZ0KGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1mdW5jdGlvbiBkdChlLHQpe3JldHVybiBkdD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGR0KGUsdCl9ZnVuY3Rpb24gcHQoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIGV9ZnVuY3Rpb24gaHQoZSl7cmV0dXJuIGh0PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxodChlKX1mdW5jdGlvbiB2dChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gZ3QoZSx0KXtyZXR1cm4gZSYmIXR8fCFlJiZ0fHxlJiZ0JiZlLmdldFRpbWUoKSE9PXQuZ2V0VGltZSgpfWZ1bmN0aW9uIEN0KGUsdCl7dmFyIG49ZS5hY3RpdmVTdGFydERhdGUscj1lLmRhdGUsbz1lLnZpZXc7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdD90KHthY3RpdmVTdGFydERhdGU6bixkYXRlOnIsdmlldzpvfSk6dH1sdC5wcm9wVHlwZXM9b3Qob3Qoe30sRGUpLHt9LHthY3RpdmVTdGFydERhdGU6YSgpLmluc3RhbmNlT2YoRGF0ZSksY291bnQ6YSgpLm51bWJlcixkYXRlVHJhbnNmb3JtOmEoKS5mdW5jLmlzUmVxdWlyZWQsZGF0ZVR5cGU6YSgpLnN0cmluZyxvZmZzZXQ6YSgpLm51bWJlcixzdGVwOmEoKS5udW1iZXIsdGlsZTphKCkuZnVuYy5pc1JlcXVpcmVkfSk7dmFyIG10PWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSx0JiZkdChlLHQpfShjLGUpO3ZhciB0LG4scixpLGEsbD0oaT1jLGE9ZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmdW5jdGlvbigpe3ZhciBlLHQ9aHQoaSk7aWYoYSl7dmFyIG49aHQodGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdCh0LGFyZ3VtZW50cyxuKX1lbHNlIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKFwib2JqZWN0XCI9PT1zdCh0KXx8XCJmdW5jdGlvblwiPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7cmV0dXJuIHB0KGUpfSh0aGlzLGUpfSk7ZnVuY3Rpb24gYygpe3ZhciBlOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsYyk7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1hcmd1bWVudHNbcl07cmV0dXJuIHZ0KHB0KGU9bC5jYWxsLmFwcGx5KGwsW3RoaXNdLmNvbmNhdChuKSkpLFwic3RhdGVcIix7fSksZX1yZXR1cm4gdD1jLHI9W3trZXk6XCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPWUuYWN0aXZlU3RhcnREYXRlLHI9ZS50aWxlQ2xhc3NOYW1lLG89ZS50aWxlQ29udGVudCxpPXt9O3JldHVybihyIT09dC50aWxlQ2xhc3NOYW1lUHJvcHN8fGd0KG4sdC5hY3RpdmVTdGFydERhdGVQcm9wcykpJiYoaS50aWxlQ2xhc3NOYW1lPUN0KGUsciksaS50aWxlQ2xhc3NOYW1lUHJvcHM9ciksKG8hPT10LnRpbGVDb250ZW50UHJvcHN8fGd0KG4sdC5hY3RpdmVTdGFydERhdGVQcm9wcykpJiYoaS50aWxlQ29udGVudD1DdChlLG8pLGkudGlsZUNvbnRlbnRQcm9wcz1vKSxpLmFjdGl2ZVN0YXJ0RGF0ZVByb3BzPW4saX19XSwobj1be2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuYWN0aXZlU3RhcnREYXRlLG49ZS5jaGlsZHJlbixyPWUuY2xhc3NlcyxpPWUuZGF0ZSxhPWUuZm9ybWF0QWJicixsPWUubG9jYWxlLGM9ZS5tYXhEYXRlLHU9ZS5tYXhEYXRlVHJhbnNmb3JtLGY9ZS5taW5EYXRlLGQ9ZS5taW5EYXRlVHJhbnNmb3JtLHA9ZS5vbkNsaWNrLGg9ZS5vbk1vdXNlT3Zlcix2PWUuc3R5bGUsZz1lLnRpbGVEaXNhYmxlZCxDPWUudmlldyxtPXRoaXMuc3RhdGUseT1tLnRpbGVDbGFzc05hbWUsdz1tLnRpbGVDb250ZW50O3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHtjbGFzc05hbWU6cyhyLHkpLGRpc2FibGVkOmYmJmQoZik+aXx8YyYmdShjKTxpfHxnJiZnKHthY3RpdmVTdGFydERhdGU6dCxkYXRlOmksdmlldzpDfSksb25DbGljazpwJiZmdW5jdGlvbihlKXtyZXR1cm4gcChpLGUpfSxvbkZvY3VzOmgmJmZ1bmN0aW9uKCl7cmV0dXJuIGgoaSl9LG9uTW91c2VPdmVyOmgmJmZ1bmN0aW9uKCl7cmV0dXJuIGgoaSl9LHN0eWxlOnYsdHlwZTpcImJ1dHRvblwifSxhP28oKS5jcmVhdGVFbGVtZW50KFwiYWJiclwiLHtcImFyaWEtbGFiZWxcIjphKGwsaSl9LG4pOm4sdyl9fV0pJiZmdCh0LnByb3RvdHlwZSxuKSxyJiZmdCh0LHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksY30oci5Db21wb25lbnQpO210LnByb3BUeXBlcz11dCh1dCh7fSxaZSkse30se2NoaWxkcmVuOmEoKS5ub2RlLmlzUmVxdWlyZWQsZm9ybWF0QWJicjphKCkuZnVuYyxtYXhEYXRlVHJhbnNmb3JtOmEoKS5mdW5jLmlzUmVxdWlyZWQsbWluRGF0ZVRyYW5zZm9ybTphKCkuZnVuYy5pc1JlcXVpcmVkfSk7dmFyIHl0PVtcImNsYXNzZXNcIixcImZvcm1hdFllYXJcIl07ZnVuY3Rpb24gd3QoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGJ0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3d0KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7eHQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnd0KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIHh0KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBfdCgpe3JldHVybiBfdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LF90LmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgTHQ9XCJyZWFjdC1jYWxlbmRhcl9fY2VudHVyeS12aWV3X19kZWNhZGVzX19kZWNhZGVcIjtmdW5jdGlvbiBPdChlKXt2YXIgdD1lLmNsYXNzZXMsbj1lLmZvcm1hdFllYXIscj12b2lkIDA9PT1uP2RlOm4saT1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUseXQpLGE9aS5kYXRlLGw9aS5sb2NhbGU7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KG10LF90KHt9LGkse2NsYXNzZXM6W10uY29uY2F0KHQsTHQpLG1heERhdGVUcmFuc2Zvcm06ayxtaW5EYXRlVHJhbnNmb3JtOlMsdmlldzpcImNlbnR1cnlcIn0pLEVlKGwscixhKSl9ZnVuY3Rpb24gRXQoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFN0KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBNdCgpe3JldHVybiBNdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LE10LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBqdChlKXt2YXIgdD1tKGIoZS5hY3RpdmVTdGFydERhdGUpKSxuPXQrOTk7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KGx0LE10KHt9LGUse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX19jZW50dXJ5LXZpZXdfX2RlY2FkZXNcIixkYXRlVHJhbnNmb3JtOlMsZGF0ZVR5cGU6XCJkZWNhZGVcIixlbmQ6bixzdGFydDp0LHN0ZXA6MTAsdGlsZTpPdH0pKX1mdW5jdGlvbiBrdChlKXtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX2NlbnR1cnktdmlld1wifSxvKCkuY3JlYXRlRWxlbWVudChqdCxlKSl9T3QucHJvcFR5cGVzPWJ0KGJ0KHt9LFplKSx7fSx7Zm9ybWF0WWVhcjphKCkuZnVuY30pLGp0LnByb3BUeXBlcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9FdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe1N0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpFdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX0oe30sRGUpO3ZhciBSdD1bXCJjbGFzc2VzXCIsXCJmb3JtYXRZZWFyXCJdO2Z1bmN0aW9uIFB0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBBdChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9QdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe0l0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpQdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBJdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gVHQoKXtyZXR1cm4gVHQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxUdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIEh0PVwicmVhY3QtY2FsZW5kYXJfX2RlY2FkZS12aWV3X195ZWFyc19feWVhclwiO2Z1bmN0aW9uIFZ0KGUpe3ZhciB0PWUuY2xhc3NlcyxuPWUuZm9ybWF0WWVhcixyPXZvaWQgMD09PW4/ZGU6bixpPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxSdCksYT1pLmRhdGUsbD1pLmxvY2FsZTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQobXQsVHQoe30saSx7Y2xhc3NlczpbXS5jb25jYXQodCxIdCksbWF4RGF0ZVRyYW5zZm9ybTpILG1pbkRhdGVUcmFuc2Zvcm06QSx2aWV3OlwiZGVjYWRlXCJ9KSxyKGwsYSkpfWZ1bmN0aW9uIEJ0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBEdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gWnQoKXtyZXR1cm4gWnQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxadC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gJHQoZSl7dmFyIHQ9bShTKGUuYWN0aXZlU3RhcnREYXRlKSksbj10Kzk7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KGx0LFp0KHt9LGUse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX19kZWNhZGUtdmlld19feWVhcnNcIixkYXRlVHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlO3JldHVybiB0LnNldEZ1bGxZZWFyKGUsMCwxKSx0LnNldEhvdXJzKDAsMCwwLDApLHR9LGRhdGVUeXBlOlwieWVhclwiLGVuZDpuLHN0YXJ0OnQsdGlsZTpWdH0pKX1mdW5jdGlvbiBGdChlKXtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX2RlY2FkZS12aWV3XCJ9LG8oKS5jcmVhdGVFbGVtZW50KCR0LGUpKX1WdC5wcm9wVHlwZXM9QXQoQXQoe30sWmUpLHt9LHtmb3JtYXRZZWFyOmEoKS5mdW5jfSksJHQucHJvcFR5cGVzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP0J0KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7RHQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOkJ0KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfSh7fSxEZSk7dmFyIE50PVtcImNsYXNzZXNcIixcImZvcm1hdE1vbnRoXCIsXCJmb3JtYXRNb250aFllYXJcIl07ZnVuY3Rpb24gVXQoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFd0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1V0KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7enQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlV0KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIHp0KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBHdCgpe3JldHVybiBHdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LEd0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgcXQ9XCJyZWFjdC1jYWxlbmRhcl9feWVhci12aWV3X19tb250aHNfX21vbnRoXCI7ZnVuY3Rpb24gWXQoZSl7dmFyIHQ9ZS5jbGFzc2VzLG49ZS5mb3JtYXRNb250aCxyPXZvaWQgMD09PW4/c2U6bixpPWUuZm9ybWF0TW9udGhZZWFyLGE9dm9pZCAwPT09aT9jZTppLGw9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLE50KSxzPWwuZGF0ZSxjPWwubG9jYWxlO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChtdCxHdCh7fSxsLHtjbGFzc2VzOltdLmNvbmNhdCh0LHF0KSxmb3JtYXRBYmJyOmEsbWF4RGF0ZVRyYW5zZm9ybTpOLG1pbkRhdGVUcmFuc2Zvcm06Wix2aWV3OlwieWVhclwifSkscihjLHMpKX1mdW5jdGlvbiBLdChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gWHQoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/S3QoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtKdChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6S3QoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gSnQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFF0KCl7cmV0dXJuIFF0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sUXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGVuKGUpe3ZhciB0PW0oZS5hY3RpdmVTdGFydERhdGUpO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChsdCxRdCh7fSxlLHtjbGFzc05hbWU6XCJyZWFjdC1jYWxlbmRhcl9feWVhci12aWV3X19tb250aHNcIixkYXRlVHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiBuLnNldEZ1bGxZZWFyKHQsZSwxKSxuLnNldEhvdXJzKDAsMCwwLDApLG59LGRhdGVUeXBlOlwibW9udGhcIixlbmQ6MTEsc3RhcnQ6MCx0aWxlOll0fSkpfWZ1bmN0aW9uIHRuKGUpe3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6XCJyZWFjdC1jYWxlbmRhcl9feWVhci12aWV3XCJ9LG8oKS5jcmVhdGVFbGVtZW50KGVuLGUpKX1ZdC5wcm9wVHlwZXM9V3QoV3Qoe30sWmUpLHt9LHtmb3JtYXRNb250aDphKCkuZnVuYyxmb3JtYXRNb250aFllYXI6YSgpLmZ1bmN9KSxlbi5wcm9wVHlwZXM9WHQoWHQoe30sRGUpLHt9LHtsb2NhbGU6YSgpLnN0cmluZ30pO3ZhciBubj1bXCJmb3JtYXREYXlcIixcImZvcm1hdExvbmdEYXRlXCIsXCJjYWxlbmRhclR5cGVcIixcImNsYXNzZXNcIixcImN1cnJlbnRNb250aEluZGV4XCJdO2Z1bmN0aW9uIHJuKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9ybihPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2FuKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpybihPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBhbihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gbG4oKXtyZXR1cm4gbG49T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxsbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIHNuPVwicmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX2RheXNfX2RheVwiO2Z1bmN0aW9uIGNuKGUpe3ZhciB0PWUuZm9ybWF0RGF5LG49dm9pZCAwPT09dD9hZTp0LHI9ZS5mb3JtYXRMb25nRGF0ZSxpPXZvaWQgMD09PXI/bGU6cixhPWUuY2FsZW5kYXJUeXBlLGw9ZS5jbGFzc2VzLHM9ZS5jdXJyZW50TW9udGhJbmRleCxjPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxubiksdT1jLmRhdGUsZj1jLmxvY2FsZTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQobXQsbG4oe30sYyx7Y2xhc3NlczpbXS5jb25jYXQobCxzbixTZSh1LGEpP1wiXCIuY29uY2F0KHNuLFwiLS13ZWVrZW5kXCIpOm51bGwsdS5nZXRNb250aCgpIT09cz9cIlwiLmNvbmNhdChzbixcIi0tbmVpZ2hib3JpbmdNb250aFwiKTpudWxsKSxmb3JtYXRBYmJyOmksbWF4RGF0ZVRyYW5zZm9ybTpZLG1pbkRhdGVUcmFuc2Zvcm06Ryx2aWV3OlwibW9udGhcIn0pLG4oZix1KSl9Y24ucHJvcFR5cGVzPW9uKG9uKHt9LFplKSx7fSx7Y3VycmVudE1vbnRoSW5kZXg6YSgpLm51bWJlci5pc1JlcXVpcmVkLGZvcm1hdERheTphKCkuZnVuYyxmb3JtYXRMb25nRGF0ZTphKCkuZnVuY30pO3ZhciB1bj1bXCJzaG93Rml4ZWROdW1iZXJPZldlZWtzXCIsXCJzaG93TmVpZ2hib3JpbmdNb250aFwiXTtmdW5jdGlvbiBmbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gZG4oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHBuKCl7cmV0dXJuIHBuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0scG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGhuKGUpe3ZhciB0PWUuYWN0aXZlU3RhcnREYXRlLG49ZS5jYWxlbmRhclR5cGUscj1lLnNob3dGaXhlZE51bWJlck9mV2Vla3MsaT1lLnNob3dOZWlnaGJvcmluZ01vbnRoLGE9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLHVuKSxsPW0odCkscz15KHQpLGM9cnx8aSx1PWdlKHQsbiksZj1jPzA6dSxkPTErKGM/LXU6MCkscD1mdW5jdGlvbigpe2lmKHIpcmV0dXJuIGQrNDItMTt2YXIgZT1YKHQpO2lmKGkpe3ZhciBvPW5ldyBEYXRlO3JldHVybiBvLnNldEZ1bGxZZWFyKGwscyxlKSxvLnNldEhvdXJzKDAsMCwwLDApLGUrKDctZ2UobyxuKS0xKX1yZXR1cm4gZX0oKTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQobHQscG4oe30sYSx7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX2RheXNcIixjb3VudDo3LGN1cnJlbnRNb250aEluZGV4OnMsZGF0ZVRyYW5zZm9ybTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgRGF0ZTtyZXR1cm4gdC5zZXRGdWxsWWVhcihsLHMsZSksdC5zZXRIb3VycygwLDAsMCwwKSx0fSxkYXRlVHlwZTpcImRheVwiLGVuZDpwLG9mZnNldDpmLHN0YXJ0OmQsdGlsZTpjbn0pKX1obi5wcm9wVHlwZXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/Zm4oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtkbihlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6Zm4oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9KHtjYWxlbmRhclR5cGU6UmUuaXNSZXF1aXJlZCxzaG93Rml4ZWROdW1iZXJPZldlZWtzOmEoKS5ib29sLHNob3dOZWlnaGJvcmluZ01vbnRoOmEoKS5ib29sfSxEZSk7dmFyIHZuPVwicmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzXCIsZ249XCJcIi5jb25jYXQodm4sXCJfX3dlZWtkYXlcIik7ZnVuY3Rpb24gQ24oZSl7Zm9yKHZhciB0PWUuY2FsZW5kYXJUeXBlLG49ZS5mb3JtYXRTaG9ydFdlZWtkYXkscj12b2lkIDA9PT1uP3VlOm4saT1lLmZvcm1hdFdlZWtkYXksYT12b2lkIDA9PT1pP2ZlOmksbD1lLmxvY2FsZSxjPWUub25Nb3VzZUxlYXZlLHU9WihuZXcgRGF0ZSksZj1tKHUpLGQ9eSh1KSxwPVtdLGg9MTtoPD03O2grPTEpe3ZhciB2PW5ldyBEYXRlKGYsZCxoLWdlKHUsdCkpLGc9YShsLHYpO3AucHVzaChvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtrZXk6aCxjbGFzc05hbWU6cyhnbixTZSh2LHQpJiZcIlwiLmNvbmNhdChnbixcIi0td2Vla2VuZFwiKSl9LG8oKS5jcmVhdGVFbGVtZW50KFwiYWJiclwiLHtcImFyaWEtbGFiZWxcIjpnLHRpdGxlOmd9LHIobCx2KS5yZXBsYWNlKFwiLlwiLFwiXCIpKSkpfXJldHVybiBvKCkuY3JlYXRlRWxlbWVudChZZSx7Y2xhc3NOYW1lOnZuLGNvdW50Ojcsb25Gb2N1czpjLG9uTW91c2VPdmVyOmN9LHApfUNuLnByb3BUeXBlcz17Y2FsZW5kYXJUeXBlOlJlLmlzUmVxdWlyZWQsZm9ybWF0U2hvcnRXZWVrZGF5OmEoKS5mdW5jLGZvcm1hdFdlZWtkYXk6YSgpLmZ1bmMsbG9jYWxlOmEoKS5zdHJpbmcsb25Nb3VzZUxlYXZlOmEoKS5mdW5jfTt2YXIgbW49W1wiZGF0ZVwiLFwib25DbGlja1dlZWtOdW1iZXJcIixcIndlZWtOdW1iZXJcIl07ZnVuY3Rpb24geW4oKXtyZXR1cm4geW49T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSx5bi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gd24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGJuKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgeG49XCJyZWFjdC1jYWxlbmRhcl9fdGlsZVwiO2Z1bmN0aW9uIF9uKGUpe3ZhciB0PWUuZGF0ZSxuPWUub25DbGlja1dlZWtOdW1iZXIscj1lLndlZWtOdW1iZXIsaT1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsbW4pLGE9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/d24oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtibihlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6d24oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9KHtjbGFzc05hbWU6eG59LGkpLGw9bygpLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsbnVsbCxyKTtyZXR1cm4gbj9vKCkuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHluKHt9LGEse29uQ2xpY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIG4ocix0LGUpfSx0eXBlOlwiYnV0dG9uXCJ9KSxsKTpvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLGEsbCl9ZnVuY3Rpb24gTG4oZSl7dmFyIHQ9ZS5hY3RpdmVTdGFydERhdGUsbj1lLmNhbGVuZGFyVHlwZSxyPWUub25DbGlja1dlZWtOdW1iZXIsaT1lLm9uTW91c2VMZWF2ZSxhPWUuc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrcyxsPWZ1bmN0aW9uKCl7aWYoYSlyZXR1cm4gNjt2YXIgZT1YKHQpLSg3LWdlKHQsbikpO3JldHVybiAxK01hdGguY2VpbChlLzcpfSgpLHM9ZnVuY3Rpb24oKXtmb3IodmFyIGU9bSh0KSxyPXkodCksbz13KHQpLGk9W10sYT0wO2E8bDthKz0xKWkucHVzaChDZShuZXcgRGF0ZShlLHIsbys3KmEpLG4pKTtyZXR1cm4gaX0oKSxjPXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQsbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGUuSVNPXzg2MDEscj1uPT09dGUuVVM/dGUuVVM6dGUuSVNPXzg2MDEsbz1DZShlLG4pLGk9bShlKSsxO2Rve3Q9Q2UobmV3IERhdGUoaSwwLHI9PT10ZS5JU09fODYwMT80OjEpLG4pLGktPTF9d2hpbGUoZTx0KTtyZXR1cm4gTWF0aC5yb3VuZCgoby10KS82MDQ4ZTUpKzF9KGUsbil9KSk7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFllLHtjbGFzc05hbWU6XCJyZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fd2Vla051bWJlcnNcIixjb3VudDpsLGRpcmVjdGlvbjpcImNvbHVtblwiLG9uRm9jdXM6aSxvbk1vdXNlT3ZlcjppLHN0eWxlOntmbGV4QmFzaXM6XCJjYWxjKDEwMCUgKiAoMSAvIDgpXCIsZmxleFNocmluazowfX0sYy5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KF9uLHtrZXk6ZSxkYXRlOnNbdF0sb25DbGlja1dlZWtOdW1iZXI6cix3ZWVrTnVtYmVyOmV9KX0pKSl9X24ucHJvcFR5cGVzPXtkYXRlOmEoKS5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsb25DbGlja1dlZWtOdW1iZXI6YSgpLmZ1bmMsd2Vla051bWJlcjphKCkubm9kZS5pc1JlcXVpcmVkfSxMbi5wcm9wVHlwZXM9e2FjdGl2ZVN0YXJ0RGF0ZTphKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLGNhbGVuZGFyVHlwZTpSZS5pc1JlcXVpcmVkLG9uQ2xpY2tXZWVrTnVtYmVyOmEoKS5mdW5jLG9uTW91c2VMZWF2ZTphKCkuZnVuYyxzaG93Rml4ZWROdW1iZXJPZldlZWtzOmEoKS5ib29sfTt2YXIgT249W1wiY2FsZW5kYXJUeXBlXCIsXCJmb3JtYXRTaG9ydFdlZWtkYXlcIixcImZvcm1hdFdlZWtkYXlcIixcIm9uQ2xpY2tXZWVrTnVtYmVyXCIsXCJzaG93V2Vla051bWJlcnNcIl07ZnVuY3Rpb24gRW4oKXtyZXR1cm4gRW49T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxFbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gU24oZSl7dmFyIHQ9ZS5hY3RpdmVTdGFydERhdGUsbj1lLmxvY2FsZSxyPWUub25Nb3VzZUxlYXZlLGk9ZS5zaG93Rml4ZWROdW1iZXJPZldlZWtzLGE9ZS5jYWxlbmRhclR5cGUsbD12b2lkIDA9PT1hP2Z1bmN0aW9uKGUpe3JldHVybiBPYmplY3Qua2V5cyhuZSkuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIG5lW3RdLmluY2x1ZGVzKGUpfSkpfHx0ZS5JU09fODYwMX0obik6YSxjPWUuZm9ybWF0U2hvcnRXZWVrZGF5LHU9ZS5mb3JtYXRXZWVrZGF5LGY9ZS5vbkNsaWNrV2Vla051bWJlcixkPWUuc2hvd1dlZWtOdW1iZXJzLHA9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLE9uKSxoPVwicmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdcIjtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOnMoaCxkP1wiXCIuY29uY2F0KGgsXCItLXdlZWtOdW1iZXJzXCIpOlwiXCIpfSxvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdHlsZTp7ZGlzcGxheTpcImZsZXhcIixhbGlnbkl0ZW1zOlwiZmxleC1lbmRcIn19LGQ/bygpLmNyZWF0ZUVsZW1lbnQoTG4se2FjdGl2ZVN0YXJ0RGF0ZTp0LGNhbGVuZGFyVHlwZTpsLG9uQ2xpY2tXZWVrTnVtYmVyOmYsb25Nb3VzZUxlYXZlOnIsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczppfSk6bnVsbCxvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdHlsZTp7ZmxleEdyb3c6MSx3aWR0aDpcIjEwMCVcIn19LG8oKS5jcmVhdGVFbGVtZW50KENuLHtjYWxlbmRhclR5cGU6bCxmb3JtYXRTaG9ydFdlZWtkYXk6Yyxmb3JtYXRXZWVrZGF5OnUsbG9jYWxlOm4sb25Nb3VzZUxlYXZlOnJ9KSxvKCkuY3JlYXRlRWxlbWVudChobixFbih7Y2FsZW5kYXJUeXBlOmx9LHApKSkpKX1Tbi5wcm9wVHlwZXM9e2FjdGl2ZVN0YXJ0RGF0ZTphKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLGNhbGVuZGFyVHlwZTpSZSxmb3JtYXRTaG9ydFdlZWtkYXk6YSgpLmZ1bmMsZm9ybWF0V2Vla2RheTphKCkuZnVuYyxsb2NhbGU6YSgpLnN0cmluZyxvbkNsaWNrV2Vla051bWJlcjphKCkuZnVuYyxvbk1vdXNlTGVhdmU6YSgpLmZ1bmMsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczphKCkuYm9vbCxzaG93V2Vla051bWJlcnM6YSgpLmJvb2x9O3ZhciBNbj1bXCJhY3RpdmVTdGFydERhdGVcIixcImRlZmF1bHRBY3RpdmVTdGFydERhdGVcIixcImRlZmF1bHRWYWx1ZVwiLFwiZGVmYXVsdFZpZXdcIixcIm1heERldGFpbFwiLFwibWluRGV0YWlsXCIsXCJ2YWx1ZVwiLFwidmlld1wiXTtmdW5jdGlvbiBqbigpe3JldHVybiBqbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGpuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBrbihlKXtyZXR1cm4ga249XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sa24oZSl9ZnVuY3Rpb24gUm4oZSx0KXtyZXR1cm4gUm49T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxSbihlLHQpfWZ1bmN0aW9uIFBuKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiBlfWZ1bmN0aW9uIEFuKGUpe3JldHVybiBBbj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sQW4oZSl9ZnVuY3Rpb24gSW4oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFRuKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP0luKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7SG4oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOkluKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIEhuKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBWbihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBCbj1uZXcgRGF0ZTtCbi5zZXRGdWxsWWVhcigxLDAsMSksQm4uc2V0SG91cnMoMCwwLDAsMCk7dmFyIERuPW5ldyBEYXRlKDg2NGUxMyksWm49XCJyZWFjdC1jYWxlbmRhclwiLCRuPVtcImNlbnR1cnlcIixcImRlY2FkZVwiLFwieWVhclwiLFwibW9udGhcIl0sRm49W10uY29uY2F0KGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBWbihlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVtcIkBAaXRlcmF0b3JcIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBWbihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm5cIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4/QXJyYXkuZnJvbShlKTpcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/Vm4oZSx0KTp2b2lkIDB9fShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX0oJG4uc2xpY2UoMSkpLFtcImRheVwiXSk7ZnVuY3Rpb24gTm4oZSx0KXtyZXR1cm4gJG4uc2xpY2UoJG4uaW5kZXhPZihlKSwkbi5pbmRleE9mKHQpKzEpfWZ1bmN0aW9uIFVuKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybi0xIT09Tm4odCxuKS5pbmRleE9mKGUpfShlLHQsbik/ZTpufWZ1bmN0aW9uIFduKGUpe3JldHVybiBGblskbi5pbmRleE9mKGUpXX1mdW5jdGlvbiB6bihlLHQpe3ZhciBuPWUudmFsdWUscj1lLm1pbkRhdGUsbz1lLm1heERhdGUsaT1lLm1heERldGFpbCxhPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuIG51bGw7dmFyIG49QXJyYXkuaXNBcnJheShlKSYmMj09PWUubGVuZ3RoP2VbdF06ZTtpZighbilyZXR1cm4gbnVsbDt2YXIgcj1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIERhdGU/ZTpuZXcgRGF0ZShlKX0obik7aWYoaXNOYU4oci5nZXRUaW1lKCkpKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZGF0ZTogXCIuY29uY2F0KGUpKTtyZXR1cm4gcn0obix0KTtpZighYSlyZXR1cm4gbnVsbDt2YXIgbD1XbihpKTtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiZ0PmU/dDpuJiZuPGU/bjplfShbbWUseGVdW3RdKGwsYSkscixvKX12YXIgR249ZnVuY3Rpb24oZSl7cmV0dXJuIHpuKGUsMCl9LHFuPWZ1bmN0aW9uKGUpe3JldHVybiB6bihlLDEpfSxZbj1mdW5jdGlvbihlKXt2YXIgdD1lLnZhbHVlO3JldHVybiBBcnJheS5pc0FycmF5KHQpP3Q6W0duLHFuXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0KGUpfSkpfTtmdW5jdGlvbiBLbihlKXt2YXIgdD1lLm1heERhdGUsbj1lLm1heERldGFpbCxyPWUubWluRGF0ZSxvPWUubWluRGV0YWlsLGk9ZS52YWx1ZTtyZXR1cm4gbWUoVW4oZS52aWV3LG8sbiksR24oe3ZhbHVlOmksbWluRGF0ZTpyLG1heERhdGU6dCxtYXhEZXRhaWw6bn0pfHxuZXcgRGF0ZSl9dmFyIFhuPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYxPT09W10uY29uY2F0KGUpLmxlbmd0aH0sSm49ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInByb3RvdHlwZVwiLHt3cml0YWJsZTohMX0pLHQmJlJuKGUsdCl9KGwsZSk7dmFyIHQsbixyLGksYT0ocj1sLGk9ZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmdW5jdGlvbigpe3ZhciBlLHQ9QW4ocik7aWYoaSl7dmFyIG49QW4odGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdCh0LGFyZ3VtZW50cyxuKX1lbHNlIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKFwib2JqZWN0XCI9PT1rbih0KXx8XCJmdW5jdGlvblwiPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7cmV0dXJuIFBuKGUpfSh0aGlzLGUpfSk7ZnVuY3Rpb24gbCgpe3ZhciBlOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsbCk7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1hcmd1bWVudHNbcl07cmV0dXJuIEhuKFBuKGU9YS5jYWxsLmFwcGx5KGEsW3RoaXNdLmNvbmNhdChuKSkpLFwic3RhdGVcIix7YWN0aXZlU3RhcnREYXRlOmUucHJvcHMuZGVmYXVsdEFjdGl2ZVN0YXJ0RGF0ZSx2YWx1ZTplLnByb3BzLmRlZmF1bHRWYWx1ZSx2aWV3OmUucHJvcHMuZGVmYXVsdFZpZXd9KSxIbihQbihlKSxcInNldFN0YXRlQW5kQ2FsbENhbGxiYWNrc1wiLChmdW5jdGlvbih0LG4scil7dmFyIG89UG4oZSksaT1vLmFjdGl2ZVN0YXJ0RGF0ZSxhPW8udmlldyxsPWUucHJvcHMscz1sLmFsbG93UGFydGlhbFJhbmdlLGM9bC5vbkFjdGl2ZVN0YXJ0RGF0ZUNoYW5nZSx1PWwub25DaGFuZ2UsZj1sLm9uVmlld0NoYW5nZSxkPWwuc2VsZWN0UmFuZ2UscD17YWN0aXZlU3RhcnREYXRlOmksdmlldzphfTtlLnNldFN0YXRlKHQsKGZ1bmN0aW9uKCl7dmFyIG89e2FjdGlvbjp0LmFjdGlvbixhY3RpdmVTdGFydERhdGU6dC5hY3RpdmVTdGFydERhdGV8fGUuYWN0aXZlU3RhcnREYXRlLHZhbHVlOnQudmFsdWV8fGUudmFsdWUsdmlldzp0LnZpZXd8fGUudmlld307ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSBpbiB0JiYoa24odFtlXSkhPT1rbihwW2VdKXx8KHRbZV1pbnN0YW5jZW9mIERhdGU/dFtlXS5nZXRUaW1lKCkhPT1wW2VdLmdldFRpbWUoKTp0W2VdIT09cFtlXSkpfWkoXCJhY3RpdmVTdGFydERhdGVcIikmJmMmJmMobyksaShcInZpZXdcIikmJmYmJmYobyksaShcInZhbHVlXCIpJiZ1JiYoZCYmWG4odC52YWx1ZSk/cyYmdShbdC52YWx1ZV0sbik6dSh0LnZhbHVlLG4pKSxyJiZyKG8pfSkpfSkpLEhuKFBuKGUpLFwic2V0QWN0aXZlU3RhcnREYXRlXCIsKGZ1bmN0aW9uKHQsbil7ZS5zZXRTdGF0ZUFuZENhbGxDYWxsYmFja3Moe2FjdGlvbjpuLGFjdGl2ZVN0YXJ0RGF0ZTp0fSl9KSksSG4oUG4oZSksXCJkcmlsbERvd25cIiwoZnVuY3Rpb24odCxuKXtpZihlLmRyaWxsRG93bkF2YWlsYWJsZSl7ZS5vbkNsaWNrVGlsZSh0LG4pO3ZhciByPVBuKGUpLG89ci52aWV3LGk9ci52aWV3cyxhPWUucHJvcHMub25EcmlsbERvd24sbD1pW2kuaW5kZXhPZihvKSsxXTtlLnNldFN0YXRlQW5kQ2FsbENhbGxiYWNrcyh7YWN0aW9uOlwiZHJpbGxEb3duXCIsYWN0aXZlU3RhcnREYXRlOnQsdmlldzpsfSx2b2lkIDAsYSl9fSkpLEhuKFBuKGUpLFwiZHJpbGxVcFwiLChmdW5jdGlvbigpe2lmKGUuZHJpbGxVcEF2YWlsYWJsZSl7dmFyIHQ9UG4oZSksbj10LmFjdGl2ZVN0YXJ0RGF0ZSxyPXQudmlldyxvPXQudmlld3MsaT1lLnByb3BzLm9uRHJpbGxVcCxhPW9bby5pbmRleE9mKHIpLTFdLGw9bWUoYSxuKTtlLnNldFN0YXRlQW5kQ2FsbENhbGxiYWNrcyh7YWN0aW9uOlwiZHJpbGxVcFwiLGFjdGl2ZVN0YXJ0RGF0ZTpsLHZpZXc6YX0sdm9pZCAwLGkpfX0pKSxIbihQbihlKSxcIm9uQ2hhbmdlXCIsKGZ1bmN0aW9uKHQsbil7dmFyIHI9UG4oZSkudmFsdWUsbz1lLnByb3BzLGk9by5nb1RvUmFuZ2VTdGFydE9uU2VsZWN0LGE9by5zZWxlY3RSYW5nZTtlLm9uQ2xpY2tUaWxlKHQsbik7dmFyIGwscyxjLHU9YSYmIVhuKHIpO2lmKGEpe3ZhciBmPVBuKGUpLnZhbHVlVHlwZTtsPXU/bWUoZix0KTpbbWUocz1mLChjPVtyLHRdLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUtdH0pKSlbMF0pLHhlKHMsY1sxXSldfWVsc2UgbD1lLmdldFByb2Nlc3NlZFZhbHVlKHQpO3ZhciBkPSFhfHx1fHxpP0tuKFRuKFRuKHt9LGUucHJvcHMpLHt9LHt2YWx1ZTpsfSkpOm51bGw7bi5wZXJzaXN0KCksZS5zZXRTdGF0ZUFuZENhbGxDYWxsYmFja3Moe2FjdGlvbjpcIm9uQ2hhbmdlXCIsYWN0aXZlU3RhcnREYXRlOmQsdmFsdWU6bH0sbil9KSksSG4oUG4oZSksXCJvbkNsaWNrVGlsZVwiLChmdW5jdGlvbih0LG4pe3ZhciByPVBuKGUpLnZpZXcsbz1lLnByb3BzLGk9by5vbkNsaWNrRGF5LGE9by5vbkNsaWNrRGVjYWRlLGw9by5vbkNsaWNrTW9udGgscz1vLm9uQ2xpY2tZZWFyLGM9ZnVuY3Rpb24oKXtzd2l0Y2gocil7Y2FzZVwiY2VudHVyeVwiOnJldHVybiBhO2Nhc2VcImRlY2FkZVwiOnJldHVybiBzO2Nhc2VcInllYXJcIjpyZXR1cm4gbDtjYXNlXCJtb250aFwiOnJldHVybiBpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB2aWV3OiBcIi5jb25jYXQocixcIi5cIikpfX0oKTtjJiZjKHQsbil9KSksSG4oUG4oZSksXCJvbk1vdXNlT3ZlclwiLChmdW5jdGlvbih0KXtlLnNldFN0YXRlKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ob3ZlciYmZS5ob3Zlci5nZXRUaW1lKCk9PT10LmdldFRpbWUoKT9udWxsOntob3Zlcjp0fX0pKX0pKSxIbihQbihlKSxcIm9uTW91c2VMZWF2ZVwiLChmdW5jdGlvbigpe2Uuc2V0U3RhdGUoe2hvdmVyOm51bGx9KX0pKSxlfXJldHVybiB0PWwsbj1be2tleTpcImFjdGl2ZVN0YXJ0RGF0ZVwiLGdldDpmdW5jdGlvbigpe3ZhciBlLHQsbixyLG8saSxhLGwscyxjLHUsZixkPXRoaXMucHJvcHMuYWN0aXZlU3RhcnREYXRlLHA9dGhpcy5zdGF0ZS5hY3RpdmVTdGFydERhdGU7cmV0dXJuIGR8fHB8fCh0PShlPXRoaXMucHJvcHMpLmFjdGl2ZVN0YXJ0RGF0ZSxuPWUuZGVmYXVsdEFjdGl2ZVN0YXJ0RGF0ZSxyPWUuZGVmYXVsdFZhbHVlLG89ZS5kZWZhdWx0VmlldyxpPWUubWF4RGV0YWlsLGE9ZS5taW5EZXRhaWwsbD1lLnZhbHVlLHM9ZS52aWV3LGM9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLE1uKSx1PVVuKHMsYSxpKSwoZj10fHxuKT9tZSh1LGYpOktuKFRuKHttYXhEZXRhaWw6aSxtaW5EZXRhaWw6YSx2YWx1ZTpsfHxyLHZpZXc6c3x8b30sYykpKX19LHtrZXk6XCJ2YWx1ZVwiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLnNlbGVjdFJhbmdlLG49ZS52YWx1ZSxyPXRoaXMuc3RhdGUudmFsdWU7cmV0dXJuIHQmJlhuKHIpP3I6dm9pZCAwIT09bj9uOnJ9fSx7a2V5OlwidmFsdWVUeXBlXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFduKHRoaXMucHJvcHMubWF4RGV0YWlsKX19LHtrZXk6XCJ2aWV3XCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUubWluRGV0YWlsLG49ZS5tYXhEZXRhaWwscj1lLnZpZXcsbz10aGlzLnN0YXRlLnZpZXc7cmV0dXJuIFVuKHJ8fG8sdCxuKX19LHtrZXk6XCJ2aWV3c1wiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHM7cmV0dXJuIE5uKGUubWluRGV0YWlsLGUubWF4RGV0YWlsKX19LHtrZXk6XCJob3ZlclwiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMuc2VsZWN0UmFuZ2UsdD10aGlzLnN0YXRlLmhvdmVyO3JldHVybiBlP3Q6bnVsbH19LHtrZXk6XCJkcmlsbERvd25BdmFpbGFibGVcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnZpZXcsdD10aGlzLnZpZXdzO3JldHVybiB0LmluZGV4T2YoZSk8dC5sZW5ndGgtMX19LHtrZXk6XCJkcmlsbFVwQXZhaWxhYmxlXCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy52aWV3O3JldHVybiB0aGlzLnZpZXdzLmluZGV4T2YoZSk+MH19LHtrZXk6XCJnZXRQcm9jZXNzZWRWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10Lm1pbkRhdGUscj10Lm1heERhdGUsbz10Lm1heERldGFpbCxpPXQucmV0dXJuVmFsdWU7cmV0dXJuIGZ1bmN0aW9uKCl7c3dpdGNoKGkpe2Nhc2VcInN0YXJ0XCI6cmV0dXJuIEduO2Nhc2VcImVuZFwiOnJldHVybiBxbjtjYXNlXCJyYW5nZVwiOnJldHVybiBZbjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmV0dXJuVmFsdWUuXCIpfX0oKSh7dmFsdWU6ZSxtaW5EYXRlOm4sbWF4RGF0ZTpyLG1heERldGFpbDpvfSl9fSx7a2V5OlwicmVuZGVyQ29udGVudFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuYWN0aXZlU3RhcnREYXRlLG49dGhpcy5vbk1vdXNlT3ZlcixyPXRoaXMudmFsdWVUeXBlLGk9dGhpcy52YWx1ZSxhPXRoaXMudmlldyxsPXRoaXMucHJvcHMscz1sLmNhbGVuZGFyVHlwZSxjPWwubG9jYWxlLHU9bC5tYXhEYXRlLGY9bC5taW5EYXRlLGQ9bC5zZWxlY3RSYW5nZSxwPWwudGlsZUNsYXNzTmFtZSxoPWwudGlsZUNvbnRlbnQsdj1sLnRpbGVEaXNhYmxlZCxnPXRoaXMuaG92ZXIsQz17YWN0aXZlU3RhcnREYXRlOmU/eWUoYSx0KTptZShhLHQpLGhvdmVyOmcsbG9jYWxlOmMsbWF4RGF0ZTp1LG1pbkRhdGU6ZixvbkNsaWNrOnRoaXMuZHJpbGxEb3duQXZhaWxhYmxlP3RoaXMuZHJpbGxEb3duOnRoaXMub25DaGFuZ2Usb25Nb3VzZU92ZXI6ZD9uOm51bGwsdGlsZUNsYXNzTmFtZTpwLHRpbGVDb250ZW50OmgsdGlsZURpc2FibGVkOnYsdmFsdWU6aSx2YWx1ZVR5cGU6cn07c3dpdGNoKGEpe2Nhc2VcImNlbnR1cnlcIjp2YXIgbT10aGlzLnByb3BzLmZvcm1hdFllYXI7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KGt0LGpuKHtmb3JtYXRZZWFyOm19LEMpKTtjYXNlXCJkZWNhZGVcIjp2YXIgeT10aGlzLnByb3BzLmZvcm1hdFllYXI7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KEZ0LGpuKHtmb3JtYXRZZWFyOnl9LEMpKTtjYXNlXCJ5ZWFyXCI6dmFyIHc9dGhpcy5wcm9wcyxiPXcuZm9ybWF0TW9udGgseD13LmZvcm1hdE1vbnRoWWVhcjtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQodG4sam4oe2Zvcm1hdE1vbnRoOmIsZm9ybWF0TW9udGhZZWFyOnh9LEMpKTtjYXNlXCJtb250aFwiOnZhciBfPXRoaXMucHJvcHMsTD1fLmZvcm1hdERheSxPPV8uZm9ybWF0TG9uZ0RhdGUsRT1fLmZvcm1hdFNob3J0V2Vla2RheSxTPV8uZm9ybWF0V2Vla2RheSxNPV8ub25DbGlja1dlZWtOdW1iZXIsaj1fLnNob3dEb3VibGVWaWV3LGs9Xy5zaG93Rml4ZWROdW1iZXJPZldlZWtzLFI9Xy5zaG93TmVpZ2hib3JpbmdNb250aCxQPV8uc2hvd1dlZWtOdW1iZXJzLEE9dGhpcy5vbk1vdXNlTGVhdmU7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFNuLGpuKHtjYWxlbmRhclR5cGU6cyxmb3JtYXREYXk6TCxmb3JtYXRMb25nRGF0ZTpPLGZvcm1hdFNob3J0V2Vla2RheTpFLGZvcm1hdFdlZWtkYXk6UyxvbkNsaWNrV2Vla051bWJlcjpNLG9uTW91c2VMZWF2ZTpkP0E6bnVsbCxzaG93Rml4ZWROdW1iZXJPZldlZWtzOnZvaWQgMCE9PWs/azpqLHNob3dOZWlnaGJvcmluZ01vbnRoOlIsc2hvd1dlZWtOdW1iZXJzOlB9LEMpKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdmlldzogXCIuY29uY2F0KGEsXCIuXCIpKX19fSx7a2V5OlwicmVuZGVyTmF2aWdhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMucHJvcHMuc2hvd05hdmlnYXRpb24pcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5hY3RpdmVTdGFydERhdGUsdD10aGlzLnZpZXcsbj10aGlzLnZpZXdzLHI9dGhpcy5wcm9wcyxpPXIuZm9ybWF0TW9udGhZZWFyLGE9ci5mb3JtYXRZZWFyLGw9ci5sb2NhbGUscz1yLm1heERhdGUsYz1yLm1pbkRhdGUsdT1yLm5hdmlnYXRpb25BcmlhTGFiZWwsZj1yLm5hdmlnYXRpb25BcmlhTGl2ZSxkPXIubmF2aWdhdGlvbkxhYmVsLHA9ci5uZXh0MkFyaWFMYWJlbCxoPXIubmV4dDJMYWJlbCx2PXIubmV4dEFyaWFMYWJlbCxnPXIubmV4dExhYmVsLEM9ci5wcmV2MkFyaWFMYWJlbCxtPXIucHJldjJMYWJlbCx5PXIucHJldkFyaWFMYWJlbCx3PXIucHJldkxhYmVsLGI9ci5zaG93RG91YmxlVmlldztyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoRmUse2FjdGl2ZVN0YXJ0RGF0ZTplLGRyaWxsVXA6dGhpcy5kcmlsbFVwLGZvcm1hdE1vbnRoWWVhcjppLGZvcm1hdFllYXI6YSxsb2NhbGU6bCxtYXhEYXRlOnMsbWluRGF0ZTpjLG5hdmlnYXRpb25BcmlhTGFiZWw6dSxuYXZpZ2F0aW9uQXJpYUxpdmU6ZixuYXZpZ2F0aW9uTGFiZWw6ZCxuZXh0MkFyaWFMYWJlbDpwLG5leHQyTGFiZWw6aCxuZXh0QXJpYUxhYmVsOnYsbmV4dExhYmVsOmcscHJldjJBcmlhTGFiZWw6QyxwcmV2MkxhYmVsOm0scHJldkFyaWFMYWJlbDp5LHByZXZMYWJlbDp3LHNldEFjdGl2ZVN0YXJ0RGF0ZTp0aGlzLnNldEFjdGl2ZVN0YXJ0RGF0ZSxzaG93RG91YmxlVmlldzpiLHZpZXc6dCx2aWV3czpufSl9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jbGFzc05hbWUsbj1lLmlucHV0UmVmLHI9ZS5zZWxlY3RSYW5nZSxpPWUuc2hvd0RvdWJsZVZpZXcsYT10aGlzLm9uTW91c2VMZWF2ZSxsPXRoaXMudmFsdWUsYz1bXS5jb25jYXQobCk7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpzKFpuLHImJjE9PT1jLmxlbmd0aCYmXCJcIi5jb25jYXQoWm4sXCItLXNlbGVjdFJhbmdlXCIpLGkmJlwiXCIuY29uY2F0KFpuLFwiLS1kb3VibGVWaWV3XCIpLHQpLHJlZjpufSx0aGlzLnJlbmRlck5hdmlnYXRpb24oKSxvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6XCJcIi5jb25jYXQoWm4sXCJfX3ZpZXdDb250YWluZXJcIiksb25CbHVyOnI/YTpudWxsLG9uTW91c2VMZWF2ZTpyP2E6bnVsbH0sdGhpcy5yZW5kZXJDb250ZW50KCksaSYmdGhpcy5yZW5kZXJDb250ZW50KCEwKSkpfX1dLG4mJmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX0odC5wcm90b3R5cGUsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSxsfShyLkNvbXBvbmVudCk7Sm4uZGVmYXVsdFByb3BzPXtnb1RvUmFuZ2VTdGFydE9uU2VsZWN0OiEwLG1heERhdGU6RG4sbWF4RGV0YWlsOlwibW9udGhcIixtaW5EYXRlOkJuLG1pbkRldGFpbDpcImNlbnR1cnlcIixyZXR1cm5WYWx1ZTpcInN0YXJ0XCIsc2hvd05hdmlnYXRpb246ITAsc2hvd05laWdoYm9yaW5nTW9udGg6ITB9O3ZhciBRbj1hKCkuaW5zdGFuY2VPZihEYXRlKSxlcj1hKCkub25lT2ZUeXBlKFthKCkuc3RyaW5nLEhlXSk7Sm4ucHJvcFR5cGVzPXthY3RpdmVTdGFydERhdGU6UW4sYWxsb3dQYXJ0aWFsUmFuZ2U6YSgpLmJvb2wsY2FsZW5kYXJUeXBlOlJlLGNsYXNzTmFtZTpQZSxkZWZhdWx0QWN0aXZlU3RhcnREYXRlOlFuLGRlZmF1bHRWYWx1ZTplcixkZWZhdWx0VmlldzpCZSxmb3JtYXREYXk6YSgpLmZ1bmMsZm9ybWF0TG9uZ0RhdGU6YSgpLmZ1bmMsZm9ybWF0TW9udGg6YSgpLmZ1bmMsZm9ybWF0TW9udGhZZWFyOmEoKS5mdW5jLGZvcm1hdFNob3J0V2Vla2RheTphKCkuZnVuYyxmb3JtYXRXZWVrZGF5OmEoKS5mdW5jLGZvcm1hdFllYXI6YSgpLmZ1bmMsZ29Ub1JhbmdlU3RhcnRPblNlbGVjdDphKCkuYm9vbCxpbnB1dFJlZjpUZSxsb2NhbGU6YSgpLnN0cmluZyxtYXhEYXRlOkllLG1heERldGFpbDphKCkub25lT2YoJG4pLG1pbkRhdGU6QWUsbWluRGV0YWlsOmEoKS5vbmVPZigkbiksbmF2aWdhdGlvbkFyaWFMYWJlbDphKCkuc3RyaW5nLG5hdmlnYXRpb25BcmlhTGl2ZTphKCkub25lT2YoW1wib2ZmXCIsXCJwb2xpdGVcIixcImFzc2VydGl2ZVwiXSksbmF2aWdhdGlvbkxhYmVsOmEoKS5mdW5jLG5leHQyQXJpYUxhYmVsOmEoKS5zdHJpbmcsbmV4dDJMYWJlbDphKCkubm9kZSxuZXh0QXJpYUxhYmVsOmEoKS5zdHJpbmcsbmV4dExhYmVsOmEoKS5ub2RlLG9uQWN0aXZlU3RhcnREYXRlQ2hhbmdlOmEoKS5mdW5jLG9uQ2hhbmdlOmEoKS5mdW5jLG9uQ2xpY2tEYXk6YSgpLmZ1bmMsb25DbGlja0RlY2FkZTphKCkuZnVuYyxvbkNsaWNrTW9udGg6YSgpLmZ1bmMsb25DbGlja1dlZWtOdW1iZXI6YSgpLmZ1bmMsb25DbGlja1llYXI6YSgpLmZ1bmMsb25EcmlsbERvd246YSgpLmZ1bmMsb25EcmlsbFVwOmEoKS5mdW5jLG9uVmlld0NoYW5nZTphKCkuZnVuYyxwcmV2MkFyaWFMYWJlbDphKCkuc3RyaW5nLHByZXYyTGFiZWw6YSgpLm5vZGUscHJldkFyaWFMYWJlbDphKCkuc3RyaW5nLHByZXZMYWJlbDphKCkubm9kZSxyZXR1cm5WYWx1ZTphKCkub25lT2YoW1wic3RhcnRcIixcImVuZFwiLFwicmFuZ2VcIl0pLHNlbGVjdFJhbmdlOmEoKS5ib29sLHNob3dEb3VibGVWaWV3OmEoKS5ib29sLHNob3dGaXhlZE51bWJlck9mV2Vla3M6YSgpLmJvb2wsc2hvd05hdmlnYXRpb246YSgpLmJvb2wsc2hvd05laWdoYm9yaW5nTW9udGg6YSgpLmJvb2wsc2hvd1dlZWtOdW1iZXJzOmEoKS5ib29sLHRpbGVDbGFzc05hbWU6YSgpLm9uZU9mVHlwZShbYSgpLmZ1bmMsUGVdKSx0aWxlQ29udGVudDphKCkub25lT2ZUeXBlKFthKCkuZnVuYyxhKCkubm9kZV0pLHRpbGVEaXNhYmxlZDphKCkuZnVuYyx2YWx1ZTplcix2aWV3OkJlfTtjb25zdCB0cj1Kbn0sNTI1MTooZSx0LG4pPT57big3NDE4KTt2YXIgcj1uKDY2ODkpLG89NjAxMDM7aWYodC5GcmFnbWVudD02MDEwNyxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3Ipe3ZhciBpPVN5bWJvbC5mb3I7bz1pKFwicmVhY3QuZWxlbWVudFwiKSx0LkZyYWdtZW50PWkoXCJyZWFjdC5mcmFnbWVudFwiKX12YXIgYT1yLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLGw9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxzPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07ZnVuY3Rpb24gYyhlLHQsbil7dmFyIHIsaT17fSxjPW51bGwsdT1udWxsO2ZvcihyIGluIHZvaWQgMCE9PW4mJihjPVwiXCIrbiksdm9pZCAwIT09dC5rZXkmJihjPVwiXCIrdC5rZXkpLHZvaWQgMCE9PXQucmVmJiYodT10LnJlZiksdClsLmNhbGwodCxyKSYmIXMuaGFzT3duUHJvcGVydHkocikmJihpW3JdPXRbcl0pO2lmKGUmJmUuZGVmYXVsdFByb3BzKWZvcihyIGluIHQ9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09aVtyXSYmKGlbcl09dFtyXSk7cmV0dXJueyQkdHlwZW9mOm8sdHlwZTplLGtleTpjLHJlZjp1LHByb3BzOmksX293bmVyOmEuY3VycmVudH19dC5qc3g9Yyx0LmpzeHM9Y30sNTg5MzooZSx0LG4pPT57ZS5leHBvcnRzPW4oNTI1MSl9LDM1NzM6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPW4oNjU1KSxvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuLHQpLGUpfX0saT1mdW5jdGlvbihlKXtyZXR1cm4gZSUxP051bWJlcihlLnRvRml4ZWQoNSkpOmV9LGE9LygtKT8oW1xcZF0qXFwuP1tcXGRdKSsvZyxsPS8oI1swLTlhLWZdezZ9fCNbMC05YS1mXXszfXwjKD86WzAtOWEtZl17Mn0pezIsNH18KHJnYnxoc2wpYT9cXCgoLT9bXFxkXFwuXSslP1ssXFxzXSspezIsM31cXHMqXFwvKlxccypbXFxkXFwuXSslP1xcKSkvZ2kscz0vXigjWzAtOWEtZl17M318Iyg/OlswLTlhLWZdezJ9KXsyLDR9fChyZ2J8aHNsKWE/XFwoKC0/W1xcZFxcLl0rJT9bLFxcc10rKXsyLDN9XFxzKlxcLypcXHMqW1xcZFxcLl0rJT9cXCkpJC9pO2Z1bmN0aW9uIGMoZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV9dmFyIHU9e3Rlc3Q6ZnVuY3Rpb24oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGV9LHBhcnNlOnBhcnNlRmxvYXQsdHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3JldHVybiBlfX0sZj1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdSkse3RyYW5zZm9ybTpvKDAsMSl9KSxkPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSx1KSx7ZGVmYXVsdDoxfSkscD1mdW5jdGlvbihlKXtyZXR1cm57dGVzdDpmdW5jdGlvbih0KXtyZXR1cm4gYyh0KSYmdC5lbmRzV2l0aChlKSYmMT09PXQuc3BsaXQoXCIgXCIpLmxlbmd0aH0scGFyc2U6cGFyc2VGbG9hdCx0cmFuc2Zvcm06ZnVuY3Rpb24odCl7cmV0dXJuXCJcIit0K2V9fX0saD1wKFwiZGVnXCIpLHY9cChcIiVcIiksZz1wKFwicHhcIiksQz1wKFwidmhcIiksbT1wKFwidndcIikseT1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdikse3BhcnNlOmZ1bmN0aW9uKGUpe3JldHVybiB2LnBhcnNlKGUpLzEwMH0sdHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3JldHVybiB2LnRyYW5zZm9ybSgxMDAqZSl9fSksdz1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gQm9vbGVhbihjKG4pJiZzLnRlc3QobikmJm4uc3RhcnRzV2l0aChlKXx8dCYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sdCkpfX0sYj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBvO2lmKCFjKHIpKXJldHVybiByO3ZhciBpPXIubWF0Y2goYSksbD1pWzBdLHM9aVsxXSx1PWlbMl0sZj1pWzNdO3JldHVybihvPXt9KVtlXT1wYXJzZUZsb2F0KGwpLG9bdF09cGFyc2VGbG9hdChzKSxvW25dPXBhcnNlRmxvYXQodSksby5hbHBoYT12b2lkIDAhPT1mP3BhcnNlRmxvYXQoZik6MSxvfX0seD17dGVzdDp3KFwiaHNsXCIsXCJodWVcIikscGFyc2U6YihcImh1ZVwiLFwic2F0dXJhdGlvblwiLFwibGlnaHRuZXNzXCIpLHRyYW5zZm9ybTpmdW5jdGlvbihlKXt2YXIgdD1lLmh1ZSxuPWUuc2F0dXJhdGlvbixyPWUubGlnaHRuZXNzLG89ZS5hbHBoYSxhPXZvaWQgMD09PW8/MTpvO3JldHVyblwiaHNsYShcIitNYXRoLnJvdW5kKHQpK1wiLCBcIit2LnRyYW5zZm9ybShpKG4pKStcIiwgXCIrdi50cmFuc2Zvcm0oaShyKSkrXCIsIFwiK2koZi50cmFuc2Zvcm0oYSkpK1wiKVwifX0sXz1vKDAsMjU1KSxMPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSx1KSx7dHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnJvdW5kKF8oZSkpfX0pLE89e3Rlc3Q6dyhcInJnYlwiLFwicmVkXCIpLHBhcnNlOmIoXCJyZWRcIixcImdyZWVuXCIsXCJibHVlXCIpLHRyYW5zZm9ybTpmdW5jdGlvbihlKXt2YXIgdD1lLnJlZCxuPWUuZ3JlZW4scj1lLmJsdWUsbz1lLmFscGhhLGE9dm9pZCAwPT09bz8xOm87cmV0dXJuXCJyZ2JhKFwiK0wudHJhbnNmb3JtKHQpK1wiLCBcIitMLnRyYW5zZm9ybShuKStcIiwgXCIrTC50cmFuc2Zvcm0ocikrXCIsIFwiK2koZi50cmFuc2Zvcm0oYSkpK1wiKVwifX0sRT17dGVzdDp3KFwiI1wiKSxwYXJzZTpmdW5jdGlvbihlKXt2YXIgdD1cIlwiLG49XCJcIixyPVwiXCIsbz1cIlwiO3JldHVybiBlLmxlbmd0aD41Pyh0PWUuc3Vic3RyKDEsMiksbj1lLnN1YnN0cigzLDIpLHI9ZS5zdWJzdHIoNSwyKSxvPWUuc3Vic3RyKDcsMikpOih0PWUuc3Vic3RyKDEsMSksbj1lLnN1YnN0cigyLDEpLHI9ZS5zdWJzdHIoMywxKSxvPWUuc3Vic3RyKDQsMSksdCs9dCxuKz1uLHIrPXIsbys9bykse3JlZDpwYXJzZUludCh0LDE2KSxncmVlbjpwYXJzZUludChuLDE2KSxibHVlOnBhcnNlSW50KHIsMTYpLGFscGhhOm8/cGFyc2VJbnQobywxNikvMjU1OjF9fSx0cmFuc2Zvcm06Ty50cmFuc2Zvcm19LFM9e3Rlc3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIE8udGVzdChlKXx8RS50ZXN0KGUpfHx4LnRlc3QoZSl9LHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybiBPLnRlc3QoZSk/Ty5wYXJzZShlKTp4LnRlc3QoZSk/eC5wYXJzZShlKTpFLnBhcnNlKGUpfSx0cmFuc2Zvcm06ZnVuY3Rpb24oZSl7cmV0dXJuIGMoZSk/ZTplLmhhc093blByb3BlcnR5KFwicmVkXCIpP08udHJhbnNmb3JtKGUpOngudHJhbnNmb3JtKGUpfX0sTT1cIiR7Y31cIixqPVwiJHtufVwiO2Z1bmN0aW9uIGsoZSl7dmFyIHQ9W10sbj0wLHI9ZS5tYXRjaChsKTtyJiYobj1yLmxlbmd0aCxlPWUucmVwbGFjZShsLE0pLHQucHVzaC5hcHBseSh0LHIubWFwKFMucGFyc2UpKSk7dmFyIG89ZS5tYXRjaChhKTtyZXR1cm4gbyYmKGU9ZS5yZXBsYWNlKGEsaiksdC5wdXNoLmFwcGx5KHQsby5tYXAodS5wYXJzZSkpKSx7dmFsdWVzOnQsbnVtQ29sb3JzOm4sdG9rZW5pc2VkOmV9fWZ1bmN0aW9uIFIoZSl7cmV0dXJuIGsoZSkudmFsdWVzfWZ1bmN0aW9uIFAoZSl7dmFyIHQ9ayhlKSxuPXQudmFsdWVzLHI9dC5udW1Db2xvcnMsbz10LnRva2VuaXNlZCxhPW4ubGVuZ3RoO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9byxuPTA7bjxhO24rKyl0PXQucmVwbGFjZShuPHI/TTpqLG48cj9TLnRyYW5zZm9ybShlW25dKTppKGVbbl0pKTtyZXR1cm4gdH19dmFyIEE9ZnVuY3Rpb24oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGU/MDplfSxJPXt0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0LG4scixvO3JldHVybiBpc05hTihlKSYmYyhlKSYmKG51bGwhPT0obj1udWxsPT09KHQ9ZS5tYXRjaChhKSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQubGVuZ3RoKSYmdm9pZCAwIT09bj9uOjApKyhudWxsIT09KG89bnVsbD09PShyPWUubWF0Y2gobCkpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmxlbmd0aCkmJnZvaWQgMCE9PW8/bzowKT4wfSxwYXJzZTpSLGNyZWF0ZVRyYW5zZm9ybWVyOlAsZ2V0QW5pbWF0YWJsZU5vbmU6ZnVuY3Rpb24oZSl7dmFyIHQ9UihlKTtyZXR1cm4gUChlKSh0Lm1hcChBKSl9fSxUPW5ldyBTZXQoW1wiYnJpZ2h0bmVzc1wiLFwiY29udHJhc3RcIixcInNhdHVyYXRlXCIsXCJvcGFjaXR5XCJdKTtmdW5jdGlvbiBIKGUpe3ZhciB0PWUuc2xpY2UoMCwtMSkuc3BsaXQoXCIoXCIpLG49dFswXSxyPXRbMV07aWYoXCJkcm9wLXNoYWRvd1wiPT09bilyZXR1cm4gZTt2YXIgbz0oci5tYXRjaChhKXx8W10pWzBdO2lmKCFvKXJldHVybiBlO3ZhciBpPXIucmVwbGFjZShvLFwiXCIpLGw9VC5oYXMobik/MTowO3JldHVybiBvIT09ciYmKGwqPTEwMCksbitcIihcIitsK2krXCIpXCJ9dmFyIFY9LyhbYS16LV0qKVxcKC4qP1xcKS9nLEI9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LEkpLHtnZXRBbmltYXRhYmxlTm9uZTpmdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKFYpO3JldHVybiB0P3QubWFwKEgpLmpvaW4oXCIgXCIpOmV9fSk7dC5hbHBoYT1mLHQuY29sb3I9Uyx0LmNvbXBsZXg9SSx0LmRlZ3JlZXM9aCx0LmZpbHRlcj1CLHQuaGV4PUUsdC5oc2xhPXgsdC5udW1iZXI9dSx0LnBlcmNlbnQ9dix0LnByb2dyZXNzUGVyY2VudGFnZT15LHQucHg9Zyx0LnJnYlVuaXQ9TCx0LnJnYmE9Tyx0LnNjYWxlPWQsdC52aD1DLHQudnc9bX0sODM4ODooZSx0LG4pPT57bi5yKHQpLG4uZCh0LHtmb2N1c2FibGU6KCk9PncsaXNGb2N1c2FibGU6KCk9Pl8saXNUYWJiYWJsZTooKT0+Yix0YWJiYWJsZTooKT0+eX0pO3ZhciByPVtcImlucHV0Om5vdChbaW5lcnRdKVwiLFwic2VsZWN0Om5vdChbaW5lcnRdKVwiLFwidGV4dGFyZWE6bm90KFtpbmVydF0pXCIsXCJhW2hyZWZdOm5vdChbaW5lcnRdKVwiLFwiYnV0dG9uOm5vdChbaW5lcnRdKVwiLFwiW3RhYmluZGV4XTpub3Qoc2xvdCk6bm90KFtpbmVydF0pXCIsXCJhdWRpb1tjb250cm9sc106bm90KFtpbmVydF0pXCIsXCJ2aWRlb1tjb250cm9sc106bm90KFtpbmVydF0pXCIsJ1tjb250ZW50ZWRpdGFibGVdOm5vdChbY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIl0pOm5vdChbaW5lcnRdKScsXCJkZXRhaWxzPnN1bW1hcnk6Zmlyc3Qtb2YtdHlwZTpub3QoW2luZXJ0XSlcIixcImRldGFpbHM6bm90KFtpbmVydF0pXCJdLG89ci5qb2luKFwiLFwiKSxpPVwidW5kZWZpbmVkXCI9PXR5cGVvZiBFbGVtZW50LGE9aT9mdW5jdGlvbigpe306RWxlbWVudC5wcm90b3R5cGUubWF0Y2hlc3x8RWxlbWVudC5wcm90b3R5cGUubXNNYXRjaGVzU2VsZWN0b3J8fEVsZW1lbnQucHJvdG90eXBlLndlYmtpdE1hdGNoZXNTZWxlY3RvcixsPSFpJiZFbGVtZW50LnByb3RvdHlwZS5nZXRSb290Tm9kZT9mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gbnVsbD09ZXx8bnVsbD09PSh0PWUuZ2V0Um9vdE5vZGUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplLm93bmVyRG9jdW1lbnR9LHM9ZnVuY3Rpb24gZSh0LG4pe3ZhciByO3ZvaWQgMD09PW4mJihuPSEwKTt2YXIgbz1udWxsPT10fHxudWxsPT09KHI9dC5nZXRBdHRyaWJ1dGUpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmNhbGwodCxcImluZXJ0XCIpO3JldHVyblwiXCI9PT1vfHxcInRydWVcIj09PW98fG4mJnQmJmUodC5wYXJlbnROb2RlKX0sYz1mdW5jdGlvbihlLHQsbil7aWYocyhlKSlyZXR1cm5bXTt2YXIgcj1BcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoZS5xdWVyeVNlbGVjdG9yQWxsKG8pKTtyZXR1cm4gdCYmYS5jYWxsKGUsbykmJnIudW5zaGlmdChlKSxyLmZpbHRlcihuKX0sdT1mdW5jdGlvbiBlKHQsbixyKXtmb3IodmFyIGk9W10sbD1BcnJheS5mcm9tKHQpO2wubGVuZ3RoOyl7dmFyIGM9bC5zaGlmdCgpO2lmKCFzKGMsITEpKWlmKFwiU0xPVFwiPT09Yy50YWdOYW1lKXt2YXIgdT1jLmFzc2lnbmVkRWxlbWVudHMoKSxmPWUodS5sZW5ndGg/dTpjLmNoaWxkcmVuLCEwLHIpO3IuZmxhdHRlbj9pLnB1c2guYXBwbHkoaSxmKTppLnB1c2goe3Njb3BlUGFyZW50OmMsY2FuZGlkYXRlczpmfSl9ZWxzZXthLmNhbGwoYyxvKSYmci5maWx0ZXIoYykmJihufHwhdC5pbmNsdWRlcyhjKSkmJmkucHVzaChjKTt2YXIgZD1jLnNoYWRvd1Jvb3R8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHIuZ2V0U2hhZG93Um9vdCYmci5nZXRTaGFkb3dSb290KGMpLHA9IXMoZCwhMSkmJighci5zaGFkb3dSb290RmlsdGVyfHxyLnNoYWRvd1Jvb3RGaWx0ZXIoYykpO2lmKGQmJnApe3ZhciBoPWUoITA9PT1kP2MuY2hpbGRyZW46ZC5jaGlsZHJlbiwhMCxyKTtyLmZsYXR0ZW4/aS5wdXNoLmFwcGx5KGksaCk6aS5wdXNoKHtzY29wZVBhcmVudDpjLGNhbmRpZGF0ZXM6aH0pfWVsc2UgbC51bnNoaWZ0LmFwcGx5KGwsYy5jaGlsZHJlbil9fXJldHVybiBpfSxmPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudGFiSW5kZXg8MCYmKHR8fC9eKEFVRElPfFZJREVPfERFVEFJTFMpJC8udGVzdChlLnRhZ05hbWUpfHxmdW5jdGlvbihlKXt2YXIgdCxuPW51bGw9PWV8fG51bGw9PT0odD1lLmdldEF0dHJpYnV0ZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuY2FsbChlLFwiY29udGVudGVkaXRhYmxlXCIpO3JldHVyblwiXCI9PT1ufHxcInRydWVcIj09PW59KGUpKSYmaXNOYU4ocGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKSwxMCkpPzA6ZS50YWJJbmRleH0sZD1mdW5jdGlvbihlLHQpe3JldHVybiBlLnRhYkluZGV4PT09dC50YWJJbmRleD9lLmRvY3VtZW50T3JkZXItdC5kb2N1bWVudE9yZGVyOmUudGFiSW5kZXgtdC50YWJJbmRleH0scD1mdW5jdGlvbihlKXtyZXR1cm5cIklOUFVUXCI9PT1lLnRhZ05hbWV9LGg9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXQud2lkdGgscj10LmhlaWdodDtyZXR1cm4gMD09PW4mJjA9PT1yfSx2PWZ1bmN0aW9uKGUsdCl7cmV0dXJuISh0LmRpc2FibGVkfHxzKHQpfHxmdW5jdGlvbihlKXtyZXR1cm4gcChlKSYmXCJoaWRkZW5cIj09PWUudHlwZX0odCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49dC5kaXNwbGF5Q2hlY2sscj10LmdldFNoYWRvd1Jvb3Q7aWYoXCJoaWRkZW5cIj09PWdldENvbXB1dGVkU3R5bGUoZSkudmlzaWJpbGl0eSlyZXR1cm4hMDt2YXIgbz1hLmNhbGwoZSxcImRldGFpbHM+c3VtbWFyeTpmaXJzdC1vZi10eXBlXCIpP2UucGFyZW50RWxlbWVudDplO2lmKGEuY2FsbChvLFwiZGV0YWlsczpub3QoW29wZW5dKSAqXCIpKXJldHVybiEwO2lmKG4mJlwiZnVsbFwiIT09biYmXCJsZWdhY3ktZnVsbFwiIT09bil7aWYoXCJub24temVyby1hcmVhXCI9PT1uKXJldHVybiBoKGUpfWVsc2V7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcil7Zm9yKHZhciBpPWU7ZTspe3ZhciBzPWUucGFyZW50RWxlbWVudCxjPWwoZSk7aWYocyYmIXMuc2hhZG93Um9vdCYmITA9PT1yKHMpKXJldHVybiBoKGUpO2U9ZS5hc3NpZ25lZFNsb3Q/ZS5hc3NpZ25lZFNsb3Q6c3x8Yz09PWUub3duZXJEb2N1bWVudD9zOmMuaG9zdH1lPWl9aWYoZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8saT1lJiZsKGUpLGE9bnVsbD09PSh0PWkpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lmhvc3Qscz0hMTtpZihpJiZpIT09ZSlmb3Iocz0hIShudWxsIT09KG49YSkmJnZvaWQgMCE9PW4mJm51bGwhPT0ocj1uLm93bmVyRG9jdW1lbnQpJiZ2b2lkIDAhPT1yJiZyLmNvbnRhaW5zKGEpfHxudWxsIT1lJiZudWxsIT09KG89ZS5vd25lckRvY3VtZW50KSYmdm9pZCAwIT09byYmby5jb250YWlucyhlKSk7IXMmJmE7KXt2YXIgYyx1LGY7cz0hKG51bGw9PT0odT1hPW51bGw9PT0oYz1pPWwoYSkpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmhvc3QpfHx2b2lkIDA9PT11fHxudWxsPT09KGY9dS5vd25lckRvY3VtZW50KXx8dm9pZCAwPT09Znx8IWYuY29udGFpbnMoYSkpfXJldHVybiBzfShlKSlyZXR1cm4hZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aDtpZihcImxlZ2FjeS1mdWxsXCIhPT1uKXJldHVybiEwfXJldHVybiExfSh0LGUpfHxmdW5jdGlvbihlKXtyZXR1cm5cIkRFVEFJTFNcIj09PWUudGFnTmFtZSYmQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGUuY2hpbGRyZW4pLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVyblwiU1VNTUFSWVwiPT09ZS50YWdOYW1lfSkpfSh0KXx8ZnVuY3Rpb24oZSl7aWYoL14oSU5QVVR8QlVUVE9OfFNFTEVDVHxURVhUQVJFQSkkLy50ZXN0KGUudGFnTmFtZSkpZm9yKHZhciB0PWUucGFyZW50RWxlbWVudDt0Oyl7aWYoXCJGSUVMRFNFVFwiPT09dC50YWdOYW1lJiZ0LmRpc2FibGVkKXtmb3IodmFyIG49MDtuPHQuY2hpbGRyZW4ubGVuZ3RoO24rKyl7dmFyIHI9dC5jaGlsZHJlbi5pdGVtKG4pO2lmKFwiTEVHRU5EXCI9PT1yLnRhZ05hbWUpcmV0dXJuISFhLmNhbGwodCxcImZpZWxkc2V0W2Rpc2FibGVkXSAqXCIpfHwhci5jb250YWlucyhlKX1yZXR1cm4hMH10PXQucGFyZW50RWxlbWVudH1yZXR1cm4hMX0odCkpfSxnPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIShmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHAoZSkmJlwicmFkaW9cIj09PWUudHlwZX0oZSkmJiFmdW5jdGlvbihlKXtpZighZS5uYW1lKXJldHVybiEwO3ZhciB0LG49ZS5mb3JtfHxsKGUpLHI9ZnVuY3Rpb24oZSl7cmV0dXJuIG4ucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cInJhZGlvXCJdW25hbWU9XCInK2UrJ1wiXScpfTtpZihcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuQ1NTJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB3aW5kb3cuQ1NTLmVzY2FwZSl0PXIod2luZG93LkNTUy5lc2NhcGUoZS5uYW1lKSk7ZWxzZSB0cnl7dD1yKGUubmFtZSl9Y2F0Y2goZSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoXCJMb29rcyBsaWtlIHlvdSBoYXZlIGEgcmFkaW8gYnV0dG9uIHdpdGggYSBuYW1lIGF0dHJpYnV0ZSBjb250YWluaW5nIGludmFsaWQgQ1NTIHNlbGVjdG9yIGNoYXJhY3RlcnMgYW5kIG5lZWQgdGhlIENTUy5lc2NhcGUgcG9seWZpbGw6ICVzXCIsZS5tZXNzYWdlKSwhMX12YXIgbz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKGVbbl0uY2hlY2tlZCYmZVtuXS5mb3JtPT09dClyZXR1cm4gZVtuXX0odCxlLmZvcm0pO3JldHVybiFvfHxvPT09ZX0oZSl9KHQpfHxmKHQpPDB8fCF2KGUsdCkpfSxDPWZ1bmN0aW9uKGUpe3ZhciB0PXBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIiksMTApO3JldHVybiEhKGlzTmFOKHQpfHx0Pj0wKX0sbT1mdW5jdGlvbiBlKHQpe3ZhciBuPVtdLHI9W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCxvKXt2YXIgaT0hIXQuc2NvcGVQYXJlbnQsYT1pP3Quc2NvcGVQYXJlbnQ6dCxsPWYoYSxpKSxzPWk/ZSh0LmNhbmRpZGF0ZXMpOmE7MD09PWw/aT9uLnB1c2guYXBwbHkobixzKTpuLnB1c2goYSk6ci5wdXNoKHtkb2N1bWVudE9yZGVyOm8sdGFiSW5kZXg6bCxpdGVtOnQsaXNTY29wZTppLGNvbnRlbnQ6c30pfSkpLHIuc29ydChkKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuaXNTY29wZT9lLnB1c2guYXBwbHkoZSx0LmNvbnRlbnQpOmUucHVzaCh0LmNvbnRlbnQpLGV9KSxbXSkuY29uY2F0KG4pfSx5PWZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIG49KHQ9dHx8e30pLmdldFNoYWRvd1Jvb3Q/dShbZV0sdC5pbmNsdWRlQ29udGFpbmVyLHtmaWx0ZXI6Zy5iaW5kKG51bGwsdCksZmxhdHRlbjohMSxnZXRTaGFkb3dSb290OnQuZ2V0U2hhZG93Um9vdCxzaGFkb3dSb290RmlsdGVyOkN9KTpjKGUsdC5pbmNsdWRlQ29udGFpbmVyLGcuYmluZChudWxsLHQpKSxtKG4pfSx3PWZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQ9dHx8e30pLmdldFNoYWRvd1Jvb3Q/dShbZV0sdC5pbmNsdWRlQ29udGFpbmVyLHtmaWx0ZXI6di5iaW5kKG51bGwsdCksZmxhdHRlbjohMCxnZXRTaGFkb3dSb290OnQuZ2V0U2hhZG93Um9vdH0pOmMoZSx0LmluY2x1ZGVDb250YWluZXIsdi5iaW5kKG51bGwsdCkpfSxiPWZ1bmN0aW9uKGUsdCl7aWYodD10fHx7fSwhZSl0aHJvdyBuZXcgRXJyb3IoXCJObyBub2RlIHByb3ZpZGVkXCIpO3JldHVybiExIT09YS5jYWxsKGUsbykmJmcodCxlKX0seD1yLmNvbmNhdChcImlmcmFtZVwiKS5qb2luKFwiLFwiKSxfPWZ1bmN0aW9uKGUsdCl7aWYodD10fHx7fSwhZSl0aHJvdyBuZXcgRXJyb3IoXCJObyBub2RlIHByb3ZpZGVkXCIpO3JldHVybiExIT09YS5jYWxsKGUseCkmJnYodCxlKX19LDQyNDk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CdXR0b25UZXh0T25seT10LkJ1dHRvblNlY29uZGFyeT10LkJ1dHRvblByaW1hcnk9dC5CdXR0b249dm9pZCAwO2NvbnN0IGk9big1ODkzKSxhPW8obig3NTE4KSksbD1uKDEzMzUpLHM9big5NTA3KSxjPW4oNjEyNik7dC5CdXR0b249ZT0+e3ZhcntsYWJlbDp0LGNoaWxkcmVuOm4sc2l6ZTpvPVwiYmFzZVwiLHNoYXBlOmE9XCJzcXVhcmVcIixraW5kOmw9XCJwcmltYXJ5XCIsbGF5b3V0OnM9XCJmaXRcIixocmVmOmN9PWUsZD1yKGUsW1wibGFiZWxcIixcImNoaWxkcmVuXCIsXCJzaXplXCIsXCJzaGFwZVwiLFwia2luZFwiLFwibGF5b3V0XCIsXCJocmVmXCJdKTtyZXR1cm4oMCxpLmpzeCkodSxPYmplY3QuYXNzaWduKHthczpjP1wiYVwiOlwiYnV0dG9uXCIsc2l6ZTpvLHNoYXBlOmEsa2luZDpsLGxheW91dDpzfSxkLHtjaGlsZHJlbjp0PygwLGkuanN4KShmLE9iamVjdC5hc3NpZ24oe2FsaWduSXRlbXM6XCJjZW50ZXJcIixqdXN0aWZ5Q29udGVudDpcImNlbnRlclwifSx7Y2hpbGRyZW46dH0pKTpufSkpfTtjb25zdCB1PWEuZGVmYXVsdC5idXR0b25gXG4gIC8qIERlZmF1bHQgdmFsdWVzIHRoYXQgZ2V0IG92ZXJyaWRkZW4gYnkgdmFyaWFudHMgKi9cbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0QmFja2dyb3VuZH07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEJhY2tncm91bmR9O1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeVRleHR9O1xuXG4gIC8qIEluamVjdCB2YXJpYW50cyAqL1xuICAkeygwLHMuZ2V0VmFyaWFudENTUykoYy52YXJpYW50cyxjLlZhcmlhbnQuc2l6ZSl9XG4gICR7KDAscy5nZXRWYXJpYW50Q1NTKShjLnZhcmlhbnRzLGMuVmFyaWFudC5zaGFwZSl9XG4gICR7KDAscy5nZXRWYXJpYW50Q1NTKShjLnZhcmlhbnRzLGMuVmFyaWFudC5raW5kKX1cbiAgJHsoMCxzLmdldFZhcmlhbnRDU1MpKGMudmFyaWFudHMsYy5WYXJpYW50LmxheW91dCl9XG5cbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIG91dGxpbmU6IG5vbmU7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUubGluZUhlaWdodC51aX07XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRXZWlnaHQuYm9sZH07XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pO1xuXG4gICY6bm90KDpkaXNhYmxlZCkge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6ZGlzYWJsZWQsXG4gICY6YWN0aXZlOmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dFBsYWNlaG9sZGVyfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG5gLGY9KDAsYS5kZWZhdWx0KShsLkJveClgXG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAwICR7ZS5weC54c21hbGx9YH07XG5gO3QuQnV0dG9uUHJpbWFyeT1lPT4oMCxpLmpzeCkodC5CdXR0b24sT2JqZWN0LmFzc2lnbih7fSxlLHtraW5kOlwicHJpbWFyeVwifSkpLHQuQnV0dG9uU2Vjb25kYXJ5PWU9PigwLGkuanN4KSh0LkJ1dHRvbixPYmplY3QuYXNzaWduKHt9LGUse2tpbmQ6XCJzZWNvbmRhcnlcIn0pKSx0LkJ1dHRvblRleHRPbmx5PWU9PigwLGkuanN4KSh0LkJ1dHRvbixPYmplY3QuYXNzaWduKHt9LGUse2tpbmQ6XCJ0ZXh0T25seVwifSkpfSw2MTI2OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnZhcmlhbnRzPXQuQnV0dG9uU2hhcGU9dC5CdXR0b25MYXlvdXQ9dC5CdXR0b25TaXplPXQuQnV0dG9uS2luZD10LlZhcmlhbnQ9dm9pZCAwO2NvbnN0IHI9big3NTE4KTt0LlZhcmlhbnQ9e3NoYXBlOlwic2hhcGVcIixzaXplOlwic2l6ZVwiLGtpbmQ6XCJraW5kXCIsbGF5b3V0OlwibGF5b3V0XCJ9LHQuQnV0dG9uS2luZD17cHJpbWFyeTpcInByaW1hcnlcIixzZWNvbmRhcnk6XCJzZWNvbmRhcnlcIix0ZXh0T25seTpcInRleHRPbmx5XCJ9LHQuQnV0dG9uU2l6ZT17c21hbGw6XCJzbWFsbFwiLGJhc2U6XCJiYXNlXCIsbGFyZ2U6XCJsYXJnZVwifSx0LkJ1dHRvbkxheW91dD17Zml0OlwiZml0XCIsZnVsbDpcImZ1bGxcIn0sdC5CdXR0b25TaGFwZT17c3F1YXJlOlwic3F1YXJlXCIscGlsbDpcInBpbGxcIn0sdC52YXJpYW50cz17W3QuVmFyaWFudC5zaXplXTp7W3QuQnV0dG9uU2l6ZS5iYXNlXTpyLmNzc2BcbiAgICAgIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5sYXJnZX1gfTtcbiAgICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgICBgLFt0LkJ1dHRvblNpemUuc21hbGxdOnIuY3NzYFxuICAgICAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC54c21hbGx9ICR7ZS5weC5iYXNlfWB9O1xuICAgICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLnNtYWxsfTtcbiAgICBgLFt0LkJ1dHRvblNpemUubGFyZ2VdOnIuY3NzYFxuICAgICAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5iYXNlfSAke2UucHgueGxhcmdlfWB9O1xuICAgICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmxhcmdlfTtcbiAgICBgfSxbdC5WYXJpYW50LnNoYXBlXTp7W3QuQnV0dG9uU2hhcGUuc3F1YXJlXTpyLmNzc2BcbiAgICAgIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgICBgLFt0LkJ1dHRvblNoYXBlLnBpbGxdOnIuY3NzYFxuICAgICAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMucGlsbH07XG4gICAgYH0sW3QuVmFyaWFudC5sYXlvdXRdOntbdC5CdXR0b25MYXlvdXQuZml0XTpyLmNzc2BcbiAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICBgLFt0LkJ1dHRvbkxheW91dC5mdWxsXTpyLmNzc2BcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIGB9LFt0LlZhcmlhbnQua2luZF06e1t0LkJ1dHRvbktpbmQucHJpbWFyeV06ci5jc3NgXG4gICAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5fTtcbiAgICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX07XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5SG92ZXJ9O1xuICAgICAgfVxuXG4gICAgICAmOmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnlBY3RpdmV9O1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5Rm9jdXNlZH07XG4gICAgICB9XG4gICAgYCxbdC5CdXR0b25LaW5kLnNlY29uZGFyeV06ci5jc3NgXG4gICAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnl9O1xuICAgICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnl9O1xuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFNlY29uZGFyeVRleHR9O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kU2Vjb25kYXJ5SG92ZXJ9O1xuICAgICAgfVxuXG4gICAgICAmOmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFNlY29uZGFyeUFjdGl2ZX07XG4gICAgICB9XG5cbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFNlY29uZGFyeUZvY3VzZWR9O1xuICAgICAgfVxuICAgIGAsW3QuQnV0dG9uS2luZC50ZXh0T25seV06ci5jc3NgXG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICB9XG5cbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEZvY3VzZWR9O1xuICAgICAgfVxuICAgIGB9fX0sNDEzMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNDI0OSksdCksbyhuKDYxMjYpLHQpfSwzOTExOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNhcmRDb250YWluZXI9dm9pZCAwO2NvbnN0IG89big1ODkzKSxpPXIobig3NTE4KSksYT1uKDk1MDcpLGw9bigxMzM1KTt0LkNhcmRDb250YWluZXI9ZT0+KDAsby5qc3gpKHMsT2JqZWN0LmFzc2lnbih7c3R5bGU6e21heEhlaWdodDplLm1heEhlaWdodCxvdmVyZmxvd1k6XCJhdXRvXCJ9LGlkOlwiY2FyZC1jb250YWluZXJcIixcImRhdGEtdGVzdGlkXCI6XCJjYXJkLWNvbnRhaW5lclwifSx7Y2hpbGRyZW46KDAsby5qc3gpKGMse2NoaWxkcmVuOmUuY2hpbGRyZW59KX0pKTtjb25zdCBzPSgwLGkuZGVmYXVsdCkobC5Cb3gpYFxuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDN9O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ1fTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfVxuICAgICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gICR7YS5NaXhpbnMuc2Nyb2xsYmFyLmJhc2V9O1xuICBnYXA6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG5gLGM9aS5kZWZhdWx0LmRpdmBcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH0gJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH0gMHB4XG4gICAgJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgd2lkdGg6IDEwMCU7XG5gfSwxMjQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29sbGFwc2libGVDYXJkPXZvaWQgMDtjb25zdCBvPW4oNTg5MyksaT1uKDY2ODkpLGE9cihuKDc1MTgpKSxsPW4oMzEzNikscz1uKDk2MzQpLGM9bigxMzM1KSx1PW4oMzkxMSksZj1uKDc3NjkpLGQ9big5NTA3KTt0LkNvbGxhcHNpYmxlQ2FyZD1lPT57Y29uc3RbdCxuXT0oMCxpLnVzZVN0YXRlKShlLmV4cGFuZGVkfHwhMSkscj1lPT57bihudWxsIT1lP2U6IXQpfTtyZXR1cm4oMCxvLmpzeHMpKHAsT2JqZWN0LmFzc2lnbih7XCJkYXRhLXRlc3RpZFwiOlwiY29sbGFwc2libGUtY2FyZFwifSx7Y2hpbGRyZW46WygwLG8uanN4cykodixPYmplY3QuYXNzaWduKHtcImFyaWEtZXhwYW5kZWRcIjp0LFwiZGF0YS10ZXN0aWRcIjpcImhlYWRpbmctY29udGFpbmVyXCIsc3R5bGU6e3Bvc2l0aW9uOmUuZml4ZWRIZWFkZXI/XCJzdGlja3lcIjp2b2lkIDAsdG9wOjB9LG9uQ2xpY2s6KCk9PnIoKSx0YWJJbmRleDowLG9uS2V5RG93bjplPT57c3dpdGNoKGUuY29kZSl7Y2FzZVwiRW50ZXJcIjpjYXNlXCJTcGFjZVwiOmUucHJldmVudERlZmF1bHQoKSxyKCl9fX0se2NoaWxkcmVuOlsoMCxvLmpzeCkoaCx7Y2hpbGRyZW46ZS50aXRsZX0pLCgwLG8uanN4cykoXCJkaXZcIixPYmplY3QuYXNzaWduKHtpZDpcImljb24tY29udGFpbmVyXCJ9LHtjaGlsZHJlbjpbdm9pZCAwIT09ZS5iYWRnZVRleHQmJigwLG8uanN4KShsLkJhZGdlLHtjb3VudDplLmJhZGdlVGV4dCxpZDpcImNvbGxhcHNpYmxlLWNhcmQtaGVhZGluZy1iYWRnZVwiLFwiZGF0YS10ZXN0aWRcIjpcImNvbGxhcHNpYmxlLWNhcmQtaGVhZGluZy1iYWRnZVwifSksKDAsby5qc3gpKHMuSWNvbix7aWNvbjp0P1wiQ2hldnJvblVwSWNvblwiOlwiQ2hldnJvbkRvd25JY29uXCJ9KV19KSldfSkpLHQmJigwLG8uanN4KSh1LkNhcmRDb250YWluZXIsT2JqZWN0LmFzc2lnbih7bWF4SGVpZ2h0OmUubWF4SGVpZ2h0fHxcIm5vbmVcIn0se2NoaWxkcmVuOigwLG8uanN4KShcImRpdlwiLHtjaGlsZHJlbjplLmNoaWxkcmVufSl9KSldfSkpfTtjb25zdCBwPWEuZGVmYXVsdC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMTAwJTtcbmAsaD0oMCxhLmRlZmF1bHQpKGYuVGV4dClgXG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICAke2QuTWl4aW5zLnRleHRPdmVyZmxvd307XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gLHY9KDAsYS5kZWZhdWx0KShjLkJveClgXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kM307XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDV9O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ1fTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5saW5lSGVpZ2h0LmhlYWRpbmd9O1xuICBvdXRsaW5lOiBub25lO1xuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pO1xuICB3aWR0aDogMTAwJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAjaWNvbi1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgfVxuXG4gICNjb2xsYXBzaWJsZS1jYXJkLWhlYWRpbmctYmFkZ2Uge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kMn07XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNX07XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNX07XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJvcmRlck5ldXRyYWx9O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYm9yZGVyTmV1dHJhbH07XG4gIH1cbmB9LDc0MDE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDEyNCksdCl9LDk2NDQ6KGUsdCk9Pnt2YXIgbjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkV4cGFuZERpcmVjdGlvbj12b2lkIDAsKG49dC5FeHBhbmREaXJlY3Rpb258fCh0LkV4cGFuZERpcmVjdGlvbj17fSkpW24uVXA9MF09XCJVcFwiLG5bbi5Eb3duPTFdPVwiRG93blwifSw0MDIxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkV4cGFuZGFibGVCdXR0b249dm9pZCAwO2NvbnN0IG89big1ODkzKSxpPW4oNjY4OSksYT1uKDQxMzApLGw9cihuKDc1MTgpKSxzPW4oOTYzNCksYz1uKDkxNDEpLHU9bigzMDMwKSxmPW4oMTMzNSksZD1uKDk2NDQpO3QuRXhwYW5kYWJsZUJ1dHRvbj1lPT57dmFyIHQsbixyLGwscyxwO2NvbnN0W3csYl09KDAsaS51c2VTdGF0ZSkoe3Nob3c6ITEscmVxdWVzdGVkQnlDb2xsYXBzZTohMX0pLHg9e3NpemU6ZS5zaXplLGtpbmQ6ZS5raW5kLGRpc2FibGVkOmUuZGlzYWJsZWR9LF89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtzaGFwZTphLkJ1dHRvblNoYXBlLnNxdWFyZSxcImFyaWEtbGFiZWxcIjpudWxsIT09KHQ9ZVtcImFyaWEtbGFiZWxcIl0pJiZ2b2lkIDAhPT10P3Q6YFByaW1hcnkgQnV0dG9uICR7ZS50aXRsZX1gfSksTD1udWxsIT09KG49ZS5leHBhbmREaXJlY3Rpb24pJiZ2b2lkIDAhPT1uP246ZC5FeHBhbmREaXJlY3Rpb24uRG93bjtyZXR1cm4oMCxpLnVzZUVmZmVjdCkoKCgpPT57aWYoIXcucmVxdWVzdGVkQnlDb2xsYXBzZSlyZXR1cm47Y29uc3QgZT1zZXRUaW1lb3V0KCgoKT0+Yih7cmVxdWVzdGVkQnlDb2xsYXBzZTohMSxzaG93OiExfSkpLDIwMCk7cmV0dXJuKCk9PmNsZWFyVGltZW91dChlKX0pLFt3LnJlcXVlc3RlZEJ5Q29sbGFwc2VdKSwoMCxvLmpzeHMpKHkse2NoaWxkcmVuOlsoMCxvLmpzeHMpKG0se2NoaWxkcmVuOlsoMCxvLmpzeCkodixPYmplY3QuYXNzaWduKHt9LF8se2NoaWxkcmVuOigwLG8uanN4KShnLHtjaGlsZHJlbjpudWxsIT09KHI9ZS5jaGlsZHJlbikmJnZvaWQgMCE9PXI/cjpfLnRpdGxlfSl9KSksZS5zZWNvbmRhcnlCdXR0b25zJiZlLnNlY29uZGFyeUJ1dHRvbnMubGVuZ3RoPjAmJigwLG8uanN4KShmLkJveCxPYmplY3QuYXNzaWduKHtpZDpcImRyb3Bkb3duLWNvbnRhaW5lclwifSx7Y2hpbGRyZW46KDAsby5qc3hzKShDLE9iamVjdC5hc3NpZ24oe30seCx7cm9sZTpcImNvbWJvYm94XCIsb25DbGljazooKT0+e3cucmVxdWVzdGVkQnlDb2xsYXBzZXx8Yih7cmVxdWVzdGVkQnlDb2xsYXBzZTohMSxzaG93OiF3LnNob3d9KX0sXCJhcmlhLWxhYmVsXCI6XCJFeHBhbmQgU2Vjb25kYXJ5IEJ1dHRvbnMgUGFuZWxcIixcImFyaWEtZXhwYW5kZWRcIjp3LnNob3d9LHtjaGlsZHJlbjpbTD09PWQuRXhwYW5kRGlyZWN0aW9uLkRvd24mJigwLG8uanN4KShoLHtraW5kOm51bGwhPT0obD1lLmtpbmQpJiZ2b2lkIDAhPT1sP2w6YS5CdXR0b25LaW5kLnByaW1hcnksaWNvbjpcIkNhcmV0RG93bkljb25cIn0pLEw9PT1kLkV4cGFuZERpcmVjdGlvbi5VcCYmKDAsby5qc3gpKGgse2tpbmQ6bnVsbCE9PShzPWUua2luZCkmJnZvaWQgMCE9PXM/czphLkJ1dHRvbktpbmQucHJpbWFyeSxpY29uOlwiQ2FyZXRVcEljb25cIn0pXX0pKX0pKV19KSxlLnNlY29uZGFyeUJ1dHRvbnMmJmUuc2Vjb25kYXJ5QnV0dG9ucy5sZW5ndGg+MCYmKDAsby5qc3gpKGMuQW5pbWF0ZVByZXNlbmNlLHtjaGlsZHJlbjp3LnNob3cmJigwLG8uanN4KSh1LkV4cGFuZGFibGVQYW5lbCx7ZXhwYW5kRGlyZWN0aW9uOkwsc2Vjb25kYXJ5QnV0dG9uczpudWxsIT09KHA9ZS5zZWNvbmRhcnlCdXR0b25zKSYmdm9pZCAwIT09cD9wOltdLHN0cmV0Y2g6ZS5zdHJldGNoRXhwYW5kYWJsZVBhbmVsLGNsb3NlUGFuZWxPblNlY29uZGFyeUJ1dHRvbkNsaWNrOmUuY2xvc2VQYW5lbE9uU2Vjb25kYXJ5QnV0dG9uQ2xpY2ssb25Db2xsYXBzZVJlcXVlc3Q6KCk9PmIoe3Nob3c6ITEscmVxdWVzdGVkQnlDb2xsYXBzZTohMH0pLGJ1dHRvblNpemU6ZS5zaXplLGRvY3VtZW50OmUuZG9jdW1lbnR9KX0pXX0pfTtjb25zdCBwPXtbYS5CdXR0b25LaW5kLnByaW1hcnldOmU9PmUucGFsZXR0ZS5icmFuZFByaW1hcnlUZXh0LFthLkJ1dHRvbktpbmQuc2Vjb25kYXJ5XTplPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnlUZXh0LFthLkJ1dHRvbktpbmQudGV4dE9ubHldOmU9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH0saD0oMCxsLmRlZmF1bHQpKHMuSWNvbilgXG4gIHN2ZyBwYXRoIHtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmUsa2luZDp0fSk9PnBbdF0oZSl9O1xuICB9XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmxpbmVIZWlnaHQudWl9O1xuICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0LmJvbGR9O1xuYCx2PSgwLGwuZGVmYXVsdCkoYS5CdXR0b24pYFxuICBtYXJnaW4tcmlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbmAsZz0oMCxsLmRlZmF1bHQpKGYuQm94KWBcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuYCxDPSgwLGwuZGVmYXVsdCkoYS5CdXR0b24pYFxuICB3aWR0aDogJHtlPT5lLnRoZW1lLnB4Lnh4bGFyZ2V9O1xuICBwYWRkaW5nOiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmAsbT1sLmRlZmF1bHQuZGl2YFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYCx5PWwuZGVmYXVsdC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuYH0sMjEyODooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5zZXR1cEV4cGFuZGFibGVQYW5lbD12b2lkIDA7Y29uc3Qgcj1uKDk2NDQpO3Quc2V0dXBFeHBhbmRhYmxlUGFuZWw9KGUsdCxuPSExKT0+e2lmKCFlfHwwPT09ZS5jaGlsZE5vZGVzLmxlbmd0aClyZXR1cm47Y29uc3Qgbz1lLnBhcmVudEVsZW1lbnQsaT1udWxsPT1vP3ZvaWQgMDpvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZighaSlyZXR1cm47Y29uc3QgbD1hLmhlaWdodCxzPWEud2lkdGg8PWkud2lkdGh8fG4/YS53aWR0aDppLndpZHRoLGM9aS54K3M+ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aHx8czxpLndpZHRoO2Uuc3R5bGUud2lkdGg9YCR7c31weGAsZS5zdHlsZS5vcGFjaXR5PVwiMVwiLGM/ZS5zdHlsZS5yaWdodD1cIjBweFwiOmUuc3R5bGUubGVmdD1cIjBweFwiLHQ9PT1yLkV4cGFuZERpcmVjdGlvbi5Eb3duJiYoZS5zdHlsZS50b3A9YCR7aS5oZWlnaHR9cHhgKSx0PT09ci5FeHBhbmREaXJlY3Rpb24uVXAmJihlLnN0eWxlLnRvcD0tMSpsK1wicHhcIil9fSwzMDMwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkV4cGFuZGFibGVQYW5lbD12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpLGk9cihuKDc1MTgpKSxhPW4oOTE0MSksbD1uKDQxMzApLHM9bigxMzM1KSxjPW4oMjEyOCksdT1yKG4oNDQ4MykpLGY9e3R5cGU6XCJzcHJpbmdcIixkdXJhdGlvbjouMixib3VuY2U6LjI1fTt0LkV4cGFuZGFibGVQYW5lbD1lPT57dmFyIHQ7Y29uc3Qgbj1gJHtlLnBhbmVsSWR9LWV4cGFuZGFibGUtcGFuZWxgO3JldHVybigwLG8uanN4KSh1LmRlZmF1bHQsT2JqZWN0LmFzc2lnbih7Zm9jdXNUcmFwT3B0aW9uczp7ZmFsbGJhY2tGb2N1czpgIyR7bn1gLGNsaWNrT3V0c2lkZURlYWN0aXZhdGVzOiEwLG9uRGVhY3RpdmF0ZTplLm9uQ29sbGFwc2VSZXF1ZXN0LGluaXRpYWxGb2N1czohMSxkb2N1bWVudDplLmRvY3VtZW50fX0se2NoaWxkcmVuOigwLG8uanN4KShoLE9iamVjdC5hc3NpZ24oe3JlZjp0PT4oMCxjLnNldHVwRXhwYW5kYWJsZVBhbmVsKSh0LGUuZXhwYW5kRGlyZWN0aW9uLGUuc3RyZXRjaCksdGFiSW5kZXg6MCxpZDpuLGluaXRpYWw6XCJpbml0aWFsXCIsZXhpdDpcImhpZGRlblwiLGJ1dHRvblNpemU6bnVsbCE9PSh0PWUuYnV0dG9uU2l6ZSkmJnZvaWQgMCE9PXQ/dDpsLkJ1dHRvblNpemUuYmFzZSxhbmltYXRlOlwidmlzaWJsZVwiLHJvbGU6XCJtZW51XCIsdHJhbnNpdGlvbjpmLG9uTW91c2VPdmVyOigpPT57dmFyIGU7cmV0dXJuIG51bGw9PT0oZT1kb2N1bWVudC5hY3RpdmVFbGVtZW50KXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5ibHVyKCl9fSx7Y2hpbGRyZW46ZS5zZWNvbmRhcnlCdXR0b25zLm1hcCgoKHQsbik9PigwLG8uanN4KShsLkJ1dHRvbixPYmplY3QuYXNzaWduKHtjbGFzc05hbWU6XCJtZW51LWl0ZW1cIix0YWJJbmRleDpuKzEsdGl0bGU6dC50aXRsZSxyb2xlOlwibWVudWl0ZW1cIixzaXplOmUuYnV0dG9uU2l6ZSxkaXNhYmxlZDp0LmRpc2FibGVkLGtpbmQ6XCJ0ZXh0T25seVwiLG9uQ2xpY2s6bj0+KCh0LG4pPT57ZS5jbG9zZVBhbmVsT25TZWNvbmRhcnlCdXR0b25DbGljaz8obi5vbkNsaWNrKHQpLGUub25Db2xsYXBzZVJlcXVlc3QoKSk6bi5vbkNsaWNrKHQsKCgpPT5lLm9uQ29sbGFwc2VSZXF1ZXN0KCkpKX0pKG4sdCksXCJhcmlhLWxhYmVsXCI6dC50aXRsZX0se2NoaWxkcmVuOigwLG8uanN4KShkLE9iamVjdC5hc3NpZ24oe1wiYXJpYS1sYWJlbFwiOnQudGl0bGV9LHtjaGlsZHJlbjp0LnRpdGxlfSkpfSksbikpKX0pLFwiZXhwYW5kYWJsZVBhbmVsXCIpfSkpfTtjb25zdCBkPSgwLGkuZGVmYXVsdCkocy5Cb3gpYFxuICBwYWRkaW5nLWJvdHRvbTogMXB4O1xuICBwYWRkaW5nLXRvcDogMXB4O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gLHA9e1tsLkJ1dHRvblNpemUuc21hbGxdOmU9PmUucHguc21hbGwsW2wuQnV0dG9uU2l6ZS5iYXNlXTplPT5lLnB4LmJhc2UsW2wuQnV0dG9uU2l6ZS5sYXJnZV06ZT0+ZS5weC5sYXJnZX0saD0oMCxpLmRlZmF1bHQpKGEubW90aW9uLmRpdilgXG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgb3BhY2l0eTogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206ICR7ZT0+ZS50aGVtZS5weC54eHhsYXJnZX07XG4gIG1heC13aWR0aDogbWF4LWNvbnRlbnQ7XG4gIG1pbi13aWR0aDogODBweDtcbiAgYmFja2dyb3VuZDogJHtlPT5lLnRoZW1lLnBhbGV0dGUuYmFja2dyb3VuZDR9O1xuICBib3gtc2hhZG93OiAke2U9PmUudGhlbWUuc2hhZG93LmJhc2V9O1xuICBoZWlnaHQ6IG1heC1jb250ZW50O1xuICB6LWluZGV4OiAxMDA7XG5cbiAgLm1lbnUtaXRlbSB7XG4gICAgYm9yZGVyLXJhZGl1czogdW5zZXQ7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IHRyYW5zcGFyZW50O1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG92ZXJmbG93OiBjbGlwO1xuICAgICYgPiAqIHtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuICAgIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRXZWlnaHQubm9ybWFsfTtcbiAgICBwYWRkaW5nLXRvcDogJHsoe3RoZW1lOmUsYnV0dG9uU2l6ZTp0fSk9PnBbdF0oZSl9O1xuICAgIHBhZGRpbmctYm90dG9tOiAkeyh7dGhlbWU6ZSxidXR0b25TaXplOnR9KT0+cFt0XShlKX07XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcblxuICAgIDpmaXJzdC1jaGlsZCB7XG4gICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICAgIH1cblxuICAgIDpsYXN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gICAgfVxuXG4gICAgJjpmb2N1cyxcbiAgICAmOmhvdmVyIHtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2dyb3VuZDogJHtlPT5lLnRoZW1lLnBhbGV0dGUuYmFja2dyb3VuZDJ9O1xuICAgIH1cblxuICAgICY6ZGlzYWJsZWQsXG4gICAgJjphY3RpdmU6ZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0SW5hY3RpdmV9O1xuICAgICAgYmFja2dyb3VuZDogJHtlPT5lLnRoZW1lLnBhbGV0dGUuYmFja2dyb3VuZDR9O1xuICAgICAgb3BhY2l0eTogdW5zZXQ7XG4gICAgfVxuICB9XG5gfSw0OTI1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig0MDIxKSx0KSxvKG4oOTY0NCksdCl9LDI2MDk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDU5NzEpLHQpfSw1OTcxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVG9nZ2xlPXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1uKDY2ODkpLGw9byhuKDc1MTgpKSxzPW4oODUxMCksYz1uKDEzMzUpO3QuVG9nZ2xlPWU9Pnt2YXJ7aWQ6dCxsYWJlbDpuLG9uQ2hhbmdlOm8sbGFiZWxTaWRlOmw9XCJyaWdodFwiLHR5cGU6cz1cImNoZWNrYm94XCJ9PWUsYz1yKGUsW1wiaWRcIixcImxhYmVsXCIsXCJvbkNoYW5nZVwiLFwibGFiZWxTaWRlXCIsXCJ0eXBlXCJdKTtjb25zdFt2LGddPSgwLGEudXNlU3RhdGUpKGMuY2hlY2tlZCk7cmV0dXJuKDAsYS51c2VFZmZlY3QpKCgoKT0+e2coYy5jaGVja2VkKX0pLFtjLmNoZWNrZWRdKSwoMCxpLmpzeHMpKHUsT2JqZWN0LmFzc2lnbih7bGFiZWxTaWRlOmx9LHtjaGlsZHJlbjpbbj8oMCxpLmpzeCkoaCxPYmplY3QuYXNzaWduKHtodG1sRm9yOnR9LHtjaGlsZHJlbjpufSkpOnZvaWQgMCwoMCxpLmpzeHMpKGYsT2JqZWN0LmFzc2lnbih7aXNDaGVja2VkOnZ9LHtjaGlsZHJlbjpbKDAsaS5qc3gpKHAsT2JqZWN0LmFzc2lnbih7fSxjLHtpZDp0LHR5cGU6cyxvbkNoYW5nZTplPT57ZyhlLnRhcmdldC5jaGVja2VkKSxudWxsPT1vfHxvKGUpfX0pKSwoMCxpLmpzeCkoZCx7dGFiSW5kZXg6LTEsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwiLGlzQ2hlY2tlZDp2fSldfSkpXX0pKX07Y29uc3QgdT1sLmRlZmF1bHQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6ICR7KHt0aGVtZTplfSk9PmUucHgueGxhcmdlfTtcbiAgZmxleC1kaXJlY3Rpb246ICR7KHtsYWJlbFNpZGU6ZX0pPT5cImxlZnRcIj09PWU/XCJyb3dcIjpcInJvdy1yZXZlcnNlXCJ9O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC54bGFyZ2V9O1xuYCxmPSgwLGwuZGVmYXVsdCkoYy5Cb3gpYFxuICAtLXB4LXRvZ2dsZTogJHsoe3RoZW1lOmV9KT0+ZS5weC54bGFyZ2V9O1xuICAtLXB4LWtub2I6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IHZhcigtLXB4LXRvZ2dsZSk7XG4gIHdpZHRoOiBjYWxjKDIgKiB2YXIoLS1weC10b2dnbGUpKTtcbiAgYm9yZGVyOiAxcHggc29saWRcbiAgICAkeyh7aXNDaGVja2VkOmUsdGhlbWU6dH0pPT5lP3QucGFsZXR0ZS5icmFuZFByaW1hcnk6dC5wYWxldHRlLmJhY2tncm91bmQ2fTtcbiAgYm9yZGVyLXJhZGl1czogY2FsYygwLjUgKiB2YXIoLS1weC10b2dnbGUpKTtcblxuICBiYWNrZ3JvdW5kOiAkeyh7aXNDaGVja2VkOmUsdGhlbWU6dH0pPT5lP3QucGFsZXR0ZS5icmFuZFByaW1hcnk6dC5wYWxldHRlLmJhY2tncm91bmQ2fTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pLFxuICAgIGJvcmRlci1jb2xvciB2YXIoLS0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKTtcblxuICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRGb2N1c2VkfTtcbiAgfVxuYCxkPWwuZGVmYXVsdC5idXR0b25gXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IHZhcigtLXB4LWtub2IpO1xuICBoZWlnaHQ6IHZhcigtLXB4LWtub2IpO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZDogJHsoe2lzQ2hlY2tlZDplLHRoZW1lOnR9KT0+ZT90LnBhbGV0dGUuYnJhbmRQcmltYXJ5VGV4dDp0LnBhbGV0dGUuaW5wdXRDb2xvcn07XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgdHJhbnNpdGlvbjogbGVmdCB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pLCBiYWNrZ3JvdW5kIHZhcigtLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbik7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lOyAvKiBBbGxvdyBwYXNzLXRocnUgZm9yIG5hdGl2ZSBpbnB1dCAqL1xuYCxwPSgwLGwuZGVmYXVsdCkocy5SYXdJbnB1dClgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvcGFjaXR5OiAwO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuXG4gICY6Y2hlY2tlZCArICR7ZH0ge1xuICAgIGxlZnQ6IGNhbGMoMTAwJSAtICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9KTtcbiAgfVxuICAmOmRpc2FibGVkICsgJHtkfSB7XG4gICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICB9XG4gICY6bm90KDpkaXNhYmxlZCkge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuYCxoPWwuZGVmYXVsdC5sYWJlbGBgfSw1MzAwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQmFkZ2U9dm9pZCAwO2NvbnN0IGk9big1ODkzKSxhPW8obig3NTE4KSksbD1uKDEzMzUpO3QuQmFkZ2U9ZT0+e3Zhcntjb3VudDp0PTAsbWF4Om59PWUsbz1yKGUsW1wiY291bnRcIixcIm1heFwiXSk7bGV0IGE9dC50b1N0cmluZygpO3JldHVybiBuJiZ0Pm4mJihhPWAke259K2ApLCgwLGkuanN4KShzLE9iamVjdC5hc3NpZ24oe30sbyx7Y2hpbGRyZW46YX0pKX07Y29uc3Qgcz0oMCxhLmRlZmF1bHQpKGwuQm94KWBcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnN0YXR1c0NyaXRpY2FsfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMucGlsbH07XG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLl9jb2xvci53aGl0ZX07XG4gIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5zbWFsbH07XG4gIG1pbi13aWR0aDogJHsoe3RoZW1lOmV9KT0+ZS5weC54bGFyZ2V9O1xuICBwYWRkaW5nOiAycHggNnB4O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJveC1zaGFkb3c6ICR7KHt0aGVtZTplfSk9PmUuc2hhZG93LmJhc2V9O1xuYH0sMzEzNjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNTMwMCksdCl9LDY4OTU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9KSxpPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZyKHQsZSxuKTtyZXR1cm4gbyh0LGUpLHR9LGE9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DYWxlbmRhcj12b2lkIDA7Y29uc3QgbD1uKDU4OTMpLHM9big2Njg5KSxjPWEobig3NTE4KSksdT1uKDcyOTIpLGY9big0MTMwKSxkPW4oMTMzNSkscD1uKDk1MDcpLGg9aShuKDUyOTkpKTt0LkNhbGVuZGFyPSh7dmFsdWU6ZSxvbkNoYW5nZTp0LG9uRGlzbWlzczpufSk9Pntjb25zdFtyXT0oMCxzLnVzZVN0YXRlKShlKSxbbyxpXT0oMCxzLnVzZVN0YXRlKShlKSxhPSgwLHMudXNlQ2FsbGJhY2spKChlPT57aShlKSxudWxsPT10fHx0KGUpfSksW10pLGM9KDAscy51c2VDYWxsYmFjaykoKCgpPT57YShyKSxudWxsPT1ufHxuKCl9KSxbXSk7cmV0dXJuKDAsbC5qc3hzKShDLE9iamVjdC5hc3NpZ24oe1wiZGF0YS10ZXN0aWRcIjpcInJlYWN0LWNhbGVuZGFyXCJ9LHtjaGlsZHJlbjpbKDAsbC5qc3gpKHUuQ2FsZW5kYXIse3ZhbHVlOm8sb25DaGFuZ2U6YSxjYWxlbmRhclR5cGU6XCJVU1wiLGRlZmF1bHRWaWV3OlwibW9udGhcIixtaW5EZXRhaWw6XCJ5ZWFyXCIsbmV4dDJMYWJlbDpudWxsLHByZXYyTGFiZWw6bnVsbCxzaG93Rml4ZWROdW1iZXJPZldlZWtzOiEwLG1pbkRhdGU6bmV3IERhdGV9KSwoMCxsLmpzeHMpKHYse2NoaWxkcmVuOlsoMCxsLmpzeCkoZyx7XCJkYXRhLXRlc3RpZFwiOlwiY2FsZW5kYXItY2FuY2VsLWJ1dHRvblwiLFwiYXJpYS1sYWJlbFwiOlwiY2FuY2VsLWJ1dHRvblwiLGxhYmVsOlwiQ2FuY2VsXCIsc2l6ZTpcImJhc2VcIixraW5kOlwidGV4dE9ubHlcIixvbkNsaWNrOmN9KSwoMCxsLmpzeCkoZyx7XCJkYXRhLXRlc3RpZFwiOlwiY2FsZW5kYXItYXBwbHktYnV0dG9uXCIsXCJhcmlhLWxhYmVsXCI6XCJhcHBseS1idXR0b25cIixsYWJlbDpcIkFwcGx5XCIsc2l6ZTpcImJhc2VcIixraW5kOlwicHJpbWFyeVwiLG9uQ2xpY2s6bn0pXX0pXX0pKX07Y29uc3Qgdj0oMCxjLmRlZmF1bHQpKGQuQm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9IDBweGB9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBtYXJnaW4tcmlnaHQ6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9YH07XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIGJvcmRlci10b3A6IG5vbmU7XG5gLGc9KDAsYy5kZWZhdWx0KShmLkJ1dHRvbilgXG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5zbWFsbH1gfTtcbiAgbWFyZ2luLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfWB9O1xuYCxDPSgwLGMuZGVmYXVsdCkoZC5Cb3gpYFxuICAke2h9XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZvbnQtZmFtaWx5OiAke3AuRm9udFN0YWNrfTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDEycHg7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICAucmVhY3QtY2FsZW5kYXIge1xuICAgIG1pbi13aWR0aDogMjMwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gICAgYm9yZGVyOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ2fTtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH0gIWltcG9ydGFudDtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbl9fYXJyb3cge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH0gIWltcG9ydGFudDtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUubGFyZ2V9O1xuICAgIDpkaXNhYmxlZCB7XG4gICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICAgIH1cbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb25fX2xhYmVsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fdmlld0NvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRDb2xvcn07XG4gICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fd2Vla2RheXMge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgICBhYmJyIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX190aWxlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgIGFzcGVjdC1yYXRpbzogMS8xO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICA6ZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0SW5hY3RpdmV9O1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgIDpob3ZlciB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gICAgOmhvdmVyIHtcbiAgICAgIGJvcmRlcjogMnB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9O1xuICAgICAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gICAgfVxuICAgIDpmb2N1cyB7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5fTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgIH1cbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX3RpbGUtLW5vdyB7XG4gICAgYm9yZGVyOiAycHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX0gIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX0gIWltcG9ydGFudDtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeVRleHR9O1xuICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgIDpmb2N1cyB7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5fTtcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICAgICAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gICAgfVxuICB9XG5gfSw5NzM0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig2ODk1KSx0KX0sNjA2MjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Ecm9wZG93bk1lbnU9dm9pZCAwO2NvbnN0IG89big1ODkzKSxpPW4oNjY4OSksYT1uKDEzMzUpLGw9big5NjM0KSxzPXIobig3NTE4KSksYz1uKDcyNjEpLHU9bigyNzkpLGY9bigzNDcpO3QuRHJvcGRvd25NZW51PSh7bGFiZWw6ZSxvcHRpb25zOnQ9W1tdXSxwbGFjZWhvbGRlcjpuPVwiU2VsZWN0IGFuIG9wdGlvblwiLHNlbGVjdGVkOnIsb25PcHRpb25Ib3ZlcjpzLG9uQ2hhbmdlOnYscmVuZGVyTGFiZWw6ZyxmaXRDb250ZW50OkN9KT0+e3ZhciBtLHk7Y29uc3RbdyxiXT0oMCxpLnVzZVN0YXRlKSghMSk7KDAsaS51c2VFZmZlY3QpKCgoKT0+ezE9PT10WzBdLmxlbmd0aCYmeCghMSl9KSxbdF0pO2NvbnN0IHg9ZT0+e2IobnVsbCE9ZT9lOiF3KX0se2ZvY3VzZWRPcHRpb246XyxoYW5kbGVLZXlEb3duOkx9PSgwLGYudXNlRHJvcGRvd25LZXlib2FyZE5hdmlnYXRpb24pKHQscix3LHgsdik7cmV0dXJuKDAsby5qc3gpKGQsT2JqZWN0LmFzc2lnbih7ZmxleERpcmVjdGlvbjpcImNvbHVtblwiLG9uQmx1cjplPT57ZS5jdXJyZW50VGFyZ2V0LmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCl8fGIoITEpfSxvbktleURvd246TH0se2NoaWxkcmVuOigwLG8uanN4cykoYS5Cb3gsT2JqZWN0LmFzc2lnbih7Z2FwOlwiYmFzZVwiLGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixzdHlsZTp7d2lkdGg6XCIxMDAlXCJ9fSx7Y2hpbGRyZW46W2UmJigwLG8uanN4KShcImxhYmVsXCIsT2JqZWN0LmFzc2lnbih7aHRtbEZvcjpcImRyb3Bkb3duLWJ1dHRvblwifSx7Y2hpbGRyZW46KDAsby5qc3gpKGMuT3B0aW9uVGl0bGUse2NoaWxkcmVuOmV9KX0pKSwoMCxvLmpzeHMpKHAse2NoaWxkcmVuOltnP2cocnx8e3RpdGxlOm4sdmFsdWU6bnVsbH0sdyx4LF8pOigwLG8uanN4cykoaCxPYmplY3QuYXNzaWduKHtyb2xlOlwiY29tYm94Ym94XCIsdGFiSW5kZXg6MCxcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiOmBtZW51LW9wdGlvbi0ke251bGw9PV8/dm9pZCAwOl8udmFsdWV9YCxcImFyaWEtZXhwYW5kZWRcIjp3LFwiYXJpYS1oYXNwb3B1cFwiOlwibGlzdGJveFwiLFwiYXJpYS1jb250cm9sc1wiOlwiZHJvcGRvd24tbGlzdGJveFwiLG9uQ2xpY2s6KCk9PngoKSxhczpcImJ1dHRvblwiLFwiZGF0YS10ZXN0aWRcIjpcImRyb3Bkb3duLWJ1dHRvblwiLHRpdGxlOm51bGwhPT0obT1udWxsPT1yP3ZvaWQgMDpyLnRpdGxlKSYmdm9pZCAwIT09bT9tOm59LHtjaGlsZHJlbjpbKG51bGw9PXI/dm9pZCAwOnIuaWNvblVybCkmJigwLG8uanN4KSh1LkJ1dHRvbkltYWdlLHtzcmM6ci5pY29uVXJsfSksKDAsby5qc3gpKGMuT3B0aW9uVGl0bGUsT2JqZWN0LmFzc2lnbih7XCJhcmlhLWxpdmVcIjpcInBvbGl0ZVwiLFwiZGF0YS10ZXN0aWRcIjpcInNlbGVjdGVkLW9wdGlvblwifSx7Y2hpbGRyZW46bnVsbCE9PSh5PW51bGw9PXI/dm9pZCAwOnIudGl0bGUpJiZ2b2lkIDAhPT15P3k6bn0pKSwoMCxvLmpzeCkobC5JY29uLHtpY29uOncmJnRbMF0ubGVuZ3RoPjE/XCJDaGV2cm9uVXBJY29uXCI6XCJDaGV2cm9uRG93bkljb25cIn0pXX0pKSx0Lmxlbmd0aCYmdFswXS5sZW5ndGg+MSYmdyYmKDAsby5qc3gpKHUuTWVudSx7bWVudUlkOlwiZHJvcGRvd24tbGlzdGJveFwiLG9wdGlvbnM6dCxzZWxlY3RlZDpyLGhhbmRsZUV4cGFuZE1lbnU6eCxvbk9wdGlvbkhvdmVyOnMsb25DaGFuZ2U6dixmaXRDb250ZW50OkMsZm9jdXNlZE9wdGlvbjpfLGFic29sdXRlUG9zaXRpb246ITB9KV19KV19KSl9KSl9O2NvbnN0IGQ9KDAscy5kZWZhdWx0KShhLkJveClgXG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gLHA9KDAscy5kZWZhdWx0KShhLkJveClgYCxoPSgwLHMuZGVmYXVsdCkoYS5Cb3gpYFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9O1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZm9udC13ZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuZm9udFdlaWdodC5ib2xkfTtcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5saW5lSGVpZ2h0LnVpfTtcbiAgb3V0bGluZTogbm9uZTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH0gJHtlLnB4LnNtYWxsfWB9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbik7XG4gIHdpZHRoOiAxMDAlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICR7bC5JY29ufSB7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIH1cblxuICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRGb2N1c2VkfTtcbiAgfVxuYH0sNjAyNjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNjA2MiksdCksbyhuKDI3OSksdCl9LDI3OTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CdXR0b25JbWFnZT10Lk1lbnU9dm9pZCAwO2NvbnN0IG89big1ODkzKSxpPXIobig2Njg5KSksYT1yKG4oNzUxOCkpLGw9big5NjM0KSxzPW4oMTMzNSksYz1uKDcyNjEpO3QuTWVudT0oe29wdGlvbnM6ZSxzZWxlY3RlZDpuLG1lbnVJZDpyLGhhbmRsZUV4cGFuZE1lbnU6YSxvbk9wdGlvbkhvdmVyOmwsb25DaGFuZ2U6cyx3aWR0aDp2LGhlaWdodDpnLGhlYWRlcjpDLGZvY3VzZWRPcHRpb246bSxhYnNvbHV0ZVBvc2l0aW9uOnl9KT0+e2NvbnN0IHc9ZT0+e251bGw9PWx8fGwoZSl9O3JldHVybigwLG8uanN4cykodSxPYmplY3QuYXNzaWduKHtyb2xlOlwibGlzdGJveFwiLGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixvbk1vdXNlTGVhdmU6KCk9Pnt3KG51bGwpfSxcImRhdGEtdGVzdGlkXCI6XCJtZW51XCIsaWQ6cix3aWR0aDp2LGhlaWdodDpnLGFic29sdXRlUG9zaXRpb246eX0se2NoaWxkcmVuOltDJiYoMCxvLmpzeHMpKGkuZGVmYXVsdC5GcmFnbWVudCx7Y2hpbGRyZW46WygwLG8uanN4KShkLHtjaGlsZHJlbjooMCxvLmpzeCkoYy5PcHRpb25UaXRsZSx7Y2hpbGRyZW46Q30pfSksKDAsby5qc3gpKGgse30pXX0pLGUubWFwKCgoZSxyKT0+KDAsby5qc3hzKShpLmRlZmF1bHQuRnJhZ21lbnQse2NoaWxkcmVuOlswIT09ciYmKDAsby5qc3gpKGgse30pLGUubWFwKCgoZSxyKT0+KDAsby5qc3hzKShmLE9iamVjdC5hc3NpZ24oe3JvbGU6XCJvcHRpb25cIixpc0ZvY3VzZWQ6KG51bGw9PW0/dm9pZCAwOm0udmFsdWUpPT09ZS52YWx1ZSxcImFyaWEtc2VsZWN0ZWRcIjoobnVsbD09bj92b2lkIDA6bi52YWx1ZSk9PT1lLnZhbHVlLGFsaWduSXRlbXM6XCJjZW50ZXJcIixhczpcImJ1dHRvblwiLFwiZGF0YS10ZXN0aWRcIjpgbWVudS1vcHRpb24tJHtyfWAsaWQ6YG1lbnUtb3B0aW9uLSR7ZS52YWx1ZX1gLHRpdGxlOmUudGl0bGUsb25DbGljazooKT0+e2Uub3ZlcnJpZGVPbkNsaWNrP2Uub3ZlcnJpZGVPbkNsaWNrKGUpOnMoZSksbnVsbD09YXx8YSgpfSxvbk1vdXNlT3ZlcjooKT0+dyhlLnZhbHVlKX0se2NoaWxkcmVuOlsobnVsbD09ZT92b2lkIDA6ZS5pY29uVXJsKSYmKDAsby5qc3gpKHQuQnV0dG9uSW1hZ2Use3NyYzplLmljb25Vcmwsc3R5bGU6e21hcmdpblJpZ2h0OlwiOHB4XCJ9fSksKDAsby5qc3gpKGMuT3B0aW9uVGl0bGUse2NoaWxkcmVuOmUudGl0bGV9KSwobnVsbD09bj92b2lkIDA6bi52YWx1ZSk9PT1lLnZhbHVlPygwLG8uanN4KShwLHtpY29uOlwiQ2hlY2tJY29uXCJ9KTooMCxvLmpzeCkocCx7Y2hpbGRyZW46KDAsby5qc3gpKG8uRnJhZ21lbnQse30pfSldfSkscikpKV19LHIpKSldfSkpfTtjb25zdCB1PSgwLGEuZGVmYXVsdCkocy5Cb3gpYFxuICB3aWR0aDogJHsoe3dpZHRoOmUsZml0Q29udGVudDp0fSk9PmV8fCh0P1wiZml0LWNvbnRlbnRcIjpcIjEwMCVcIil9O1xuICBtYXgtaGVpZ2h0OiAkeyh7aGVpZ2h0OmV9KT0+bnVsbCE9ZT9lOlwiZml0LWNvbnRlbnRcIn07XG4gIHRvcDogJHsoe3RoZW1lOmV9KT0+YGNhbGMoMTAwJSArICR7ZS5weC54c21hbGx9KWB9O1xuICByaWdodDogMDtcbiAgYm94LXNoYWRvdzogMHB4IDRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIHotaW5kZXg6IDEwO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kfTtcbiAgcG9zaXRpb246ICR7KHthYnNvbHV0ZVBvc2l0aW9uOmV9KT0+ZT9cImFic29sdXRlXCI6XCJpbml0aWFsXCJ9O1xuYCxmPSgwLGEuZGVmYXVsdCkocy5Cb3gpYFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBib3JkZXI6ICR7KHtpc0ZvY3VzZWQ6ZSx0aGVtZTp0fSk9PmU/YDFweCBzb2xpZCAke3QucGFsZXR0ZS5ib3JkZXJOZXV0cmFsfWA6XCIxcHggc29saWQgdHJhbnNwYXJlbnRcIn07XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBvdXRsaW5lOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH0gJHtlLnB4LnNtYWxsfWB9O1xuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDJ9O1xuICB9XG5gLGQ9KDAsYS5kZWZhdWx0KShzLkJveClgXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHRIZWxwfTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH0gJHtlLnB4LnNtYWxsfWB9O1xuYCxwPSgwLGEuZGVmYXVsdCkobC5JY29uKWBcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG5gLGg9KDAsYS5kZWZhdWx0KShzLkJveClgXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kfTtcbmA7dC5CdXR0b25JbWFnZT1hLmRlZmF1bHQuaW1nYFxuICBoZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueGxhcmdlfTtcbiAgd2lkdGg6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueGxhcmdlfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuYH0sNzI2MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnVzZVRvb2x0aXA9dC5pc0VsZW1lbnRPdmVyZmxvd249dC5PcHRpb25UaXRsZT12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGE9big2Njg5KSxsPW4oNzc2OSkscz1uKDk1MDcpLGM9byhuKDc1MTgpKTt0Lk9wdGlvblRpdGxlPWU9Pnt2YXJ7Y2hpbGRyZW46bn09ZSxvPXIoZSxbXCJjaGlsZHJlblwiXSk7cmV0dXJuKDAsaS5qc3gpKHUsT2JqZWN0LmFzc2lnbih7cmVmOigwLHQudXNlVG9vbHRpcCkobil9LG8se2NoaWxkcmVuOm59KSl9O2NvbnN0IHU9KDAsYy5kZWZhdWx0KShsLlRleHQpYFxuICAke3MuTWl4aW5zLnRleHRPdmVyZmxvd307XG4gIG1hcmdpbi1sZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG5gO2Z1bmN0aW9uIGYoZSl7cmV0dXJuIGUuc2Nyb2xsSGVpZ2h0PmUuY2xpZW50SGVpZ2h0fHxlLnNjcm9sbFdpZHRoPmUuY2xpZW50V2lkdGh9dC5pc0VsZW1lbnRPdmVyZmxvd249Zix0LnVzZVRvb2x0aXA9ZT0+KDAsYS51c2VDYWxsYmFjaykoKHQ9Pnt0JiZlJiZmKHQpJiYodC50aXRsZT1lKX0pLFtdKX0sNzAwNjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lkljb249dm9pZCAwO2NvbnN0IGk9big1ODkzKSxhPW8obig3NTE4KSksbD1uKDEzMzUpLHM9big5NTA3KSxjPW4oMzQ3MSksdT1uKDk2NjkpO3QuSWNvbj0oMCxhLmRlZmF1bHQpKChlPT57dmFye2ljb246dCxjaGlsZHJlbjpuLHNpemU6bz1cImJhc2VcIixjb250YWluZXJTaXplOmEsXCJkYXRhLXRlc3RpZFwiOmx9PWUscz1yKGUsW1wiaWNvblwiLFwiY2hpbGRyZW5cIixcInNpemVcIixcImNvbnRhaW5lclNpemVcIixcImRhdGEtdGVzdGlkXCJdKTtyZXR1cm4oMCxpLmpzeCkoZCxPYmplY3QuYXNzaWduKHt9LHMse2ljb25TaXplOm8sY29udGFpbmVyU2l6ZTphfHxvLGp1c3RpZnlDb250ZW50OlwiY2VudGVyXCIsYWxpZ25JdGVtczpcImNlbnRlclwiLFwiZGF0YS10ZXN0aWRcIjpsfSx7Y2hpbGRyZW46dD8oMCxpLmpzeCkoZixPYmplY3QuYXNzaWduKHthcmlhTGFiZWw6c1tcImFyaWEtbGFiZWxcIl0saWNvbjp0fSxzKSk6bn0pKX0pKWBgO2NvbnN0IGY9KDAsYS5kZWZhdWx0KSgoZT0+e3ZhcntpY29uOnQsYXJpYUxhYmVsOm59PWUsbz1yKGUsW1wiaWNvblwiLFwiYXJpYUxhYmVsXCJdKTtjb25zdCBhPWMuSWNvblNldFt0XTtyZXR1cm4oMCxpLmpzeCkoYSxPYmplY3QuYXNzaWduKHtyb2xlOlwiaW1nXCIsXCJhcmlhLWxhYmVsXCI6bn0sbykpfSkpYGAsZD0oMCxhLmRlZmF1bHQpKGwuQm94KWBcbiAgLyoqXG4gICAqIDEuIEluaXRpYWxpemUgbG9jYWwgdmFyaWFibGVzIHdpdGggcmVhc29uYWJsZSBkZWZhdWx0c1xuICAgKi9cbiAgLS1weC1kZWZhdWx0OiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLmJhc2V9O1xuXG4gIC8qKlxuICAgKiAyLiBJbmplY3QgdmFyaWFudHMgLS0gPyBXaGF0IGFyZSBWYXJpYW50c1xuICAgKi9cbiAgJHsoMCxzLmdldFZhcmlhbnRDU1MpKHUudmFyaWFudHMsdS5WYXJpYW50LmNvbnRhaW5lclNpemUpfVxuICAkeygwLHMuZ2V0VmFyaWFudENTUykodS52YXJpYW50cyx1LlZhcmlhbnQuaWNvblNpemUpfVxuXG4gIHdpZHRoOiB2YXIoLS1weC1jb250YWluZXIsIHZhcigtLXB4LWRlZmF1bHQpKTtcbiAgaGVpZ2h0OiB2YXIoLS1weC1jb250YWluZXIsIHZhcigtLXB4LWRlZmF1bHQpKTtcblxuICAvKiBTVkcgQXNzZXQgKi9cbiAgJiA+ICosXG4gICR7Zn0ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiB2YXIoLS1weC1pY29uLCB2YXIoLS1weC1kZWZhdWx0KSk7XG4gICAgaGVpZ2h0OiB2YXIoLS1weC1pY29uLCB2YXIoLS1weC1kZWZhdWx0KSk7XG4gICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgfVxuYH0sOTY2OTooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC52YXJpYW50cz10LlZhcmlhbnQ9dm9pZCAwO2NvbnN0IHI9big3NTE4KTt0LlZhcmlhbnQ9e2ljb25TaXplOlwiaWNvblNpemVcIixjb250YWluZXJTaXplOlwiY29udGFpbmVyU2l6ZVwifSx0LnZhcmlhbnRzPXtbdC5WYXJpYW50Lmljb25TaXplXTp7eHNtYWxsOnIuY3NzYFxuICAgICAgLS1weC1pY29uOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnhzbWFsbH07XG4gICAgYCxzbWFsbDpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5zbWFsbH07XG4gICAgYCxiYXNlOnIuY3NzYFxuICAgICAgLS1weC1pY29uOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLmJhc2V9O1xuICAgIGAsbGFyZ2U6ci5jc3NgXG4gICAgICAtLXB4LWljb246ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUubGFyZ2V9O1xuICAgIGAseGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1pY29uOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnhsYXJnZX07XG4gICAgYCx4eGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1pY29uOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnh4bGFyZ2V9O1xuICAgIGAseHh4bGFyZ2U6ci5jc3NgXG4gICAgICAtLXB4LWljb246ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueHh4bGFyZ2V9O1xuICAgIGB9LFt0LlZhcmlhbnQuY29udGFpbmVyU2l6ZV06e3hzbWFsbDpyLmNzc2BcbiAgICAgIC0tcHgtY29udGFpbmVyOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnhzbWFsbH07XG4gICAgYCxzbWFsbDpyLmNzc2BcbiAgICAgIC0tcHgtY29udGFpbmVyOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnNtYWxsfTtcbiAgICBgLGJhc2U6ci5jc3NgXG4gICAgICAtLXB4LWNvbnRhaW5lcjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5iYXNlfTtcbiAgICBgLGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1jb250YWluZXI6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUubGFyZ2V9O1xuICAgIGAseGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1jb250YWluZXI6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueGxhcmdlfTtcbiAgICBgLHh4bGFyZ2U6ci5jc3NgXG4gICAgICAtLXB4LWNvbnRhaW5lcjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54eGxhcmdlfTtcbiAgICBgLHh4eGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1jb250YWluZXI6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueHh4bGFyZ2V9O1xuICAgIGB9fX0sOTYzNDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNzAwNiksdCl9LDkyODU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQmVsbEZpbGxlZEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkJlbGxGaWxsZWRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeHMpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIyMFwiLGhlaWdodDpcIjIwXCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjpbKDAsby5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTEyIDJDMTEuMjI5NiAyIDEwLjU4NDUgMi41ODM3OSAxMC41MDc4IDMuMzUwNDFDMTAuNDk1MiAzLjQ3Njc3IDEwLjQwNTcgMy41ODE1NyAxMC4yODQ2IDMuNjE5NzFDOC4wNjU1NCA0LjMxODUxIDYuNDIyMzggNi4zMzc5NiA2LjMwMDMzIDguNzc4OTNMNi4xMjM4MiAxMi4zMDkxQzYuMDk5MzYgMTIuNzk4MiA1LjgxMzMxIDEzLjIzNjIgNS4zNzUzIDEzLjQ1NTJMNC42MDczOSAxMy44MzkyQzQuMTQ3NjEgMTQuMDY5MSAzLjg1NzE4IDE0LjUzOSAzLjg1NzE4IDE1LjA1MzFWMTYuMjVDMy44NTcxOCAxNi42MjQ4IDQuMTYwOTggMTYuOTI4NiA0LjUzNTc1IDE2LjkyODZIMTkuNDY0M0MxOS44MzkxIDE2LjkyODYgMjAuMTQyOSAxNi42MjQ4IDIwLjE0MjkgMTYuMjVWMTUuMDUzMUMyMC4xNDI5IDE0LjUzOSAxOS44NTI1IDE0LjA2OTEgMTkuMzkyNyAxMy44MzkyTDE4LjYyNDcgMTMuNDU1MkMxOC4xODY3IDEzLjIzNjIgMTcuOTAwNiAxMi43OTgyIDE3Ljg3NjIgMTIuMzA5MUwxNy42OTk3IDguNzc4OTNDMTcuNTc3NiA2LjMzNzk2IDE1LjkzNDQgNC4zMTg1MSAxMy43MTU0IDMuNjE5NzJDMTMuNTk0MiAzLjU4MTU3IDEzLjUwNDggMy40NzY3OCAxMy40OTIyIDMuMzUwNDFDMTMuNDE1NSAyLjU4MzggMTIuNzcwNCAyIDEyIDJaXCIsZmlsbDp0fSksKDAsby5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTkuMjg1NzEgMTguMjg1N0M5LjI4NTcxIDE5Ljc4NDggMTAuNTAwOSAyMSAxMiAyMUMxMy40OTkxIDIxIDE0LjcxNDMgMTkuNzg0OCAxNC43MTQzIDE4LjI4NTdMOS4yODU3MSAxOC4yODU3WlwiLGZpbGw6dH0pXX0pKX19LDQ3MTg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQmVsbEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkJlbGxJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk03LjQ3MzA2IDEuMjI5NDNDNi41MTkzIDEuMjI5NDMgNS44NzI5MSAxLjk4Mzk5IDUuNjUzNzEgMi43MjY5N0M1LjY1MjA3IDIuNzI5MzIgNS42NDkyMSAyLjczMzAzIDUuNjQ0ODUgMi43Mzc1NkM1LjYzOTIgMi43NDM0MiA1LjYzMjY0IDIuNzQ4OTYgNS42MjU5OSAyLjc1MzU1QzUuNjE5MjYgMi43NTgxOSA1LjYxNDUyIDIuNzYwNCA1LjYxMyAyLjc2MTAyTDUuNjEyNjUgMi43NjExN0M1LjA1MDg4IDIuOTkyNTEgNC4zOTE5MyAzLjM2MDIyIDMuODc2OTcgNC4wMzM1N0MzLjM1ODE1IDQuNzExOTYgMy4wMTk0OSA1LjY1NTcxIDMuMDE5NDUgNi45Nzc0OUw1LjY1MzcxIDIuNzI2OTdMMy4wMTk0NSA2Ljk3Nzc2QzMuMDE4NjYgOC4zMDE2NSAyLjg3ODcxIDkuMDMxMyAyLjY3MDkxIDkuNTM0MzlDMi40ODg3OSA5Ljk3NTMxIDIuMjQ4ODkgMTAuMjY1OCAxLjkxMiAxMC42NzM4TDEuOTExODUgMTAuNjc0QzEuODYyNjMgMTAuNzMzNiAxLjgxMTM1IDEwLjc5NTcgMS43NTc4NyAxMC44NjEyQzEuMTQ5MjMgMTEuNjA2IDEuNzI3MjkgMTIuNjQxOSAyLjY1OTg2IDEyLjY0MTlINS4wOTAxOUM1LjIxMTkxIDEyLjk4IDUuNDA3MjYgMTMuMjkwNiA1LjY2NjE4IDEzLjU0OTVDNi4xMjgyNyAxNC4wMTE2IDYuNzU0OTkgMTQuMjcxMiA3LjQwODQ4IDE0LjI3MTJDOC4wNjE5NyAxNC4yNzEyIDguNjg4NyAxNC4wMTE2IDkuMTUwNzggMTMuNTQ5NUM5LjQwOTcxIDEzLjI5MDYgOS42MDUwNSAxMi45OCA5LjcyNjc4IDEyLjY0MTlIMTIuMjg5NEMxMy4yMjM0IDEyLjY0MTkgMTMuNzkyIDExLjYwMDggMTMuMTg4NCAxMC44NjEzTDEzLjE4ODMgMTAuODYxMkMxMy4xMzQ4IDEwLjc5NTcgMTMuMDgzNSAxMC43MzM2IDEzLjAzNDIgMTAuNjc0QzEyLjY5NzMgMTAuMjY1OSAxMi40NTc0IDkuOTc1NCAxMi4yNzU1IDkuNTM0NTFDMTIuMDY3OCA5LjAzMTQ3IDExLjkyODIgOC4zMDE4MiAxMS45MjgyIDYuOTc3NzZDMTEuOTI4MiA1LjY1Njg4IDExLjU4OTEgNC43MTI5OSAxMS4wNzAzIDQuMDM0MzNDMTAuNTU1MyAzLjM2MDc1IDkuODk2NTIgMi45OTIzNCA5LjMzNDk5IDIuNzYxMTVMOS4zMzQ2NyAyLjc2MTAyQzkuMzM0MDkgMi43NjA3OSA5LjMyOTgyIDIuNzU4ODggOS4zMjMxMyAyLjc1NDI0QzkuMzE2NTUgMi43NDk2NyA5LjMwOTgxIDIuNzQzOTQgOS4zMDM4MiAyLjczNzdDOS4yOTg3NSAyLjczMjQxIDkuMjk1NDUgMi43MjgwMyA5LjI5MzYzIDIuNzI1MzFDOS4wNzI2NCAxLjk4Mzc4IDguNDI2OTEgMS4yMjk0MyA3LjQ3MzA2IDEuMjI5NDNaTTguNjg2NTQgMTIuNjQxOUg2LjEzMDQyQzYuMTg3NiAxMi43Mjk1IDYuMjU0MDMgMTIuODExNSA2LjMyOTEgMTIuODg2NkM2LjYxNTM3IDEzLjE3MjkgNy4wMDM2MyAxMy4zMzM3IDcuNDA4NDggMTMuMzMzN0M3LjgxMzMzIDEzLjMzMzcgOC4yMDE2IDEzLjE3MjkgOC40ODc4NyAxMi44ODY2QzguNTYyOTMgMTIuODExNSA4LjYyOTM3IDEyLjcyOTUgOC42ODY1NCAxMi42NDE5Wk02LjU1MTQ1IDIuOTk3MTZDNi42OTU3MSAyLjUwMDg1IDcuMDcxMjEgMi4xNjY5MyA3LjQ3MzA2IDIuMTY2OTNDNy44NzQ5MiAyLjE2NjkzIDguMjUwNSAyLjUwMDYxIDguMzk2NiAyLjk5Nzg1TDguMzk2OTUgMi45OTkwNEM4LjQ4NDk5IDMuMjk1NzUgOC43Mjg0MyAzLjUyNTM4IDguOTc4MDkgMy42MjgwNkM5LjQ1NjI1IDMuODI0OTIgOS45NDg5NCA0LjExMTE5IDEwLjMyNTUgNC42MDM3M0MxMC42OTgyIDUuMDkxMTkgMTAuOTkwNyA1LjgyNDg2IDEwLjk5MDcgNi45Nzc3NkMxMC45OTA3IDguMzU1MDYgMTEuMTMzNyA5LjIyNTUgMTEuNDA4OSA5Ljg5MjE3QzExLjY0ODMgMTAuNDcyMyAxMS45ODIzIDEwLjg3NDkgMTIuMzE2NyAxMS4yNzhDMTIuMzY1MyAxMS4zMzY2IDEyLjQxMzkgMTEuMzk1MSAxMi40NjIyIDExLjQ1NDJDMTIuNTAxNiAxMS41MDI1IDEyLjUwNDYgMTEuNTU1MiAxMi40NzkzIDExLjYwNUMxMi40NTUzIDExLjY1MjQgMTIuMzk5NiAxMS43MDQ0IDEyLjI4OTQgMTEuNzA0NEgyLjY1OTg2QzIuNTQ2MDQgMTEuNzA0NCAyLjQ4OTU1IDExLjY1MDkgMi40NjU4OCAxMS42MDQ1QzIuNDQxMTkgMTEuNTU2MiAyLjQ0MzI1IDExLjUwNCAyLjQ4MzggMTEuNDU0NEwyLjQ4MzgzIDExLjQ1NDRDMi41MzIxNSAxMS4zOTUyIDIuNTgwNzUgMTEuMzM2NiAyLjYyOTM0IDExLjI3ODFMMi42Mjk0NiAxMS4yNzc5QzIuOTYzODkgMTAuODc0OCAzLjI5Nzg1IDEwLjQ3MjMgMy41Mzc0IDkuODkyMjlDMy44MTI3MyA5LjIyNTcxIDMuOTU2MTUgOC4zNTUzMyAzLjk1Njk1IDYuOTc4MDNWNi45Nzc3NkMzLjk1Njk1IDUuODIzNDEgNC4yNDkyOCA1LjA4OTk5IDQuNjIxNjUgNC42MDMwOUM0Ljk5NzkyIDQuMTExMSA1LjQ5MDQ0IDMuODI1MzcgNS45Njk2MyAzLjYyODA1QzYuMjE2NjEgMy41MjY0NSA2LjQ2MjU3IDMuMzAwMDIgNi41NTExMSAyLjk5ODMzTDYuNTUxNDUgMi45OTcxNlpcIixmaWxsOnQscm9sZTpcImltZ1wifSl9KSl9fSw4MjY1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJyb2tlbkxpbmtJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5Ccm9rZW5MaW5rSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3hzKShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMzJcIixoZWlnaHQ6XCIzMlwiLHZpZXdCb3g6XCIwIDAgMzIgMzJcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46WygwLG8uanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk02LjMzMzUgMy43MDAyQzYuMDU3MzUgMy43MDAyIDUuODMzNSAzLjkyNDA1IDUuODMzNSA0LjIwMDJWMjcuODAwMkM1LjgzMzUgMjguMDc2MyA2LjA1NzM1IDI4LjMwMDIgNi4zMzM1IDI4LjMwMDJIMjUuNjY2OEMyNS45NDMgMjguMzAwMiAyNi4xNjY4IDI4LjA3NjMgMjYuMTY2OCAyNy44MDAyVjEyLjIzMzVIMTguMTMzNUMxNy44NTc0IDEyLjIzMzUgMTcuNjMzNSAxMi4wMDk3IDE3LjYzMzUgMTEuNzMzNVYzLjcwMDJINi4zMzM1Wk0xOC42MzM1IDQuNDA3M0wyNS40NTk3IDExLjIzMzVIMTguNjMzNVY0LjQwNzNaTTQuODMzNSA0LjIwMDJDNC44MzM1IDMuMzcxNzcgNS41MDUwNyAyLjcwMDIgNi4zMzM1IDIuNzAwMkgxOC4xMzM1QzE4LjI2NjEgMi43MDAyIDE4LjM5MzMgMi43NTI4NyAxOC40ODcgMi44NDY2NEwyNy4wMjA0IDExLjM4QzI3LjExNDEgMTEuNDczNyAyNy4xNjY4IDExLjYwMDkgMjcuMTY2OCAxMS43MzM1VjI3LjgwMDJDMjcuMTY2OCAyOC42Mjg2IDI2LjQ5NTMgMjkuMzAwMiAyNS42NjY4IDI5LjMwMDJINi4zMzM1QzUuNTA1MDcgMjkuMzAwMiA0LjgzMzUgMjguNjI4NiA0LjgzMzUgMjcuODAwMlY0LjIwMDJaXCIsZmlsbDp0fSksKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTE0LjI0OCAyMS45MDg0VjIxLjg0MDlDMTQuMjUyOCAyMS40MDA2IDE0LjI5NjYgMjEuMDUwMiAxNC4zNzk0IDIwLjc4OThDMTQuNDY0NyAyMC41Mjk0IDE0LjU4NTQgMjAuMzE4NyAxNC43NDE3IDIwLjE1NzdDMTQuODk3OSAxOS45OTY3IDE1LjA4NjEgMTkuODQ5OSAxNS4zMDYzIDE5LjcxNzNDMTUuNDQ4MyAxOS42Mjc0IDE1LjU3NjIgMTkuNTI2OCAxNS42ODk4IDE5LjQxNTVDMTUuODAzNCAxOS4zMDQyIDE1Ljg5MzQgMTkuMTc2NCAxNS45NTk3IDE5LjAzMkMxNi4wMjYgMTguODg3NSAxNi4wNTkxIDE4LjcyNzcgMTYuMDU5MSAxOC41NTI2QzE2LjA1OTEgMTguMzQxOSAxNi4wMDk0IDE4LjE1OTYgMTUuOTEgMTguMDA1N0MxNS44MTA1IDE3Ljg1MTggMTUuNjc4IDE3LjczMzQgMTUuNTEyMyAxNy42NTA2QzE1LjM0ODkgMTcuNTY1MyAxNS4xNjY2IDE3LjUyMjcgMTQuOTY1NCAxNy41MjI3QzE0Ljc4MzEgMTcuNTIyNyAxNC42MDkxIDE3LjU2MDYgMTQuNDQzNCAxNy42MzY0QzE0LjI3NzYgMTcuNzEyMSAxNC4xNDAzIDE3LjgzMDUgMTQuMDMxNCAxNy45OTE1QzEzLjkyMjUgMTguMTUwMSAxMy44NTk4IDE4LjM1NDkgMTMuODQzMiAxOC42MDU4SDEyLjc2MzdDMTIuNzgwMiAxOC4xNzk3IDEyLjg4OCAxNy44MTk4IDEzLjA4NjggMTcuNTI2M0MxMy4yODU3IDE3LjIzMDQgMTMuNTQ4NSAxNy4wMDY2IDEzLjg3NTIgMTYuODU1MUMxNC4yMDQyIDE2LjcwMzYgMTQuNTY3NiAxNi42Mjc4IDE0Ljk2NTQgMTYuNjI3OEMxNS40MDEgMTYuNjI3OCAxNS43ODIxIDE2LjcwOTUgMTYuMTA4OCAxNi44NzI5QzE2LjQzNTUgMTcuMDMzOSAxNi42ODg5IDE3LjI1OTkgMTYuODY4OCAxNy41NTExQzE3LjA1MTEgMTcuODQgMTcuMTQyMiAxOC4xNzczIDE3LjE0MjIgMTguNTYzMkMxNy4xNDIyIDE4LjgyODQgMTcuMTAwOCAxOS4wNjc1IDE3LjAxNzkgMTkuMjgwNUMxNi45MzUxIDE5LjQ5MTIgMTYuODE2NyAxOS42Nzk1IDE2LjY2MjggMTkuODQ1MkMxNi41MTEzIDIwLjAxMDkgMTYuMzI5IDIwLjE1NzcgMTYuMTE1OSAyMC4yODU1QzE1LjkxNDcgMjAuNDExIDE1Ljc1MTQgMjAuNTQxMiAxNS42MjU5IDIwLjY3NjFDMTUuNTAyOCAyMC44MTExIDE1LjQxMjggMjAuOTcwOSAxNS4zNTYgMjEuMTU1NUMxNS4yOTkyIDIxLjM0MDIgMTUuMjY4NCAyMS41Njg3IDE1LjI2MzcgMjEuODQwOVYyMS45MDg0SDE0LjI0OFpNMTQuNzg0MyAyNC4wNjc1QzE0LjU5MDEgMjQuMDY3NSAxNC40MjMyIDIzLjk5ODggMTQuMjgzNiAyMy44NjE1QzE0LjE0MzkgMjMuNzIxOCAxNC4wNzQgMjMuNTUzNyAxNC4wNzQgMjMuMzU3MkMxNC4wNzQgMjMuMTYzMSAxNC4xNDM5IDIyLjk5NzQgMTQuMjgzNiAyMi44NjAxQzE0LjQyMzIgMjIuNzIwNCAxNC41OTAxIDIyLjY1MDYgMTQuNzg0MyAyMi42NTA2QzE0Ljk3NiAyMi42NTA2IDE1LjE0MTcgMjIuNzIwNCAxNS4yODE0IDIyLjg2MDFDMTUuNDIzNSAyMi45OTc0IDE1LjQ5NDUgMjMuMTYzMSAxNS40OTQ1IDIzLjM1NzJDMTUuNDk0NSAyMy40ODc1IDE1LjQ2MTQgMjMuNjA3IDE1LjM5NTEgMjMuNzE1OUMxNS4zMzExIDIzLjgyMjQgMTUuMjQ1OSAyMy45MDc3IDE1LjEzOTQgMjMuOTcxNkMxNS4wMzI4IDI0LjAzNTUgMTQuOTE0NSAyNC4wNjc1IDE0Ljc4NDMgMjQuMDY3NVpcIixmaWxsOnR9KV19KSl9fSw2NDQ3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoZXZyb25Eb3duSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuQ2hldnJvbkRvd25JY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIyNFwiLGhlaWdodDpcIjI0XCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCJ9LHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIsT2JqZWN0LmFzc2lnbih7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk01LjA1MjgyIDkuODg3MDdDNS4zMzYxMiA5LjU4NDg5IDUuODEwNzUgOS41Njk1OCA2LjExMjkzIDkuODUyODdMMTIgMTUuMzcyTDE3Ljg4NyA5Ljg1Mjg3QzE4LjE4OTIgOS41Njk1OCAxOC42NjM4IDkuNTg0ODkgMTguOTQ3MSA5Ljg4NzA3QzE5LjIzMDQgMTAuMTg5MyAxOS4yMTUxIDEwLjY2MzkgMTguOTEyOSAxMC45NDcyTDEyLjUxMjkgMTYuOTQ3MkMxMi4yMjQ0IDE3LjIxNzYgMTEuNzc1NSAxNy4yMTc2IDExLjQ4NyAxNi45NDcyTDUuMDg3MDIgMTAuOTQ3MkM0Ljc4NDg0IDEwLjY2MzkgNC43Njk1MiAxMC4xODkzIDUuMDUyODIgOS44ODcwN1pcIixmaWxsOnR9LG4pKX0pKX19LDIxNDc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2hldnJvbkxlZnRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5DaGV2cm9uTGVmdEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix3aWR0aDpcIjI0XCIsaGVpZ2h0OlwiMjRcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIn0se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIixPYmplY3QuYXNzaWduKHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTE0LjExMjcgNS4wNTI3MkMxNC40MTQ5IDUuMzM2MDEgMTQuNDMwMiA1LjgxMDY0IDE0LjE0NjkgNi4xMTI4Mkw4LjYyNzg0IDExLjk5OTlMMTQuMTQ2OSAxNy44ODY5QzE0LjQzMDIgMTguMTg5MSAxNC40MTQ5IDE4LjY2MzcgMTQuMTEyNyAxOC45NDdDMTMuODEwNiAxOS4yMzAzIDEzLjMzNTkgMTkuMjE1IDEzLjA1MjYgMTguOTEyOEw3LjA1MjY0IDEyLjUxMjhDNi43ODIxOCAxMi4yMjQzIDYuNzgyMTggMTEuNzc1NCA3LjA1MjY0IDExLjQ4NjlMMTMuMDUyNiA1LjA4NjkxQzEzLjMzNTkgNC43ODQ3MyAxMy44MTA2IDQuNzY5NDIgMTQuMTEyNyA1LjA1MjcyWlwiLGZpbGw6dH0sbikpfSkpfX0sMjQwMjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DaGV2cm9uUmlnaHRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5DaGV2cm9uUmlnaHRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIyNFwiLGhlaWdodDpcIjI0XCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCJ9LHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIsT2JqZWN0LmFzc2lnbih7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk05Ljg2OTg2IDYuNjY5NzJDMTAuMTYyOCA2LjM3NjgzIDEwLjYzNzYgNi4zNzY4MyAxMC45MzA1IDYuNjY5NzJMMTUuNzMwNSAxMS40Njk3QzE1Ljg3MTIgMTEuNjEwNCAxNS45NTAyIDExLjgwMTEgMTUuOTUwMiAxMkMxNS45NTAyIDEyLjE5OSAxNS44NzEyIDEyLjM4OTcgMTUuNzMwNSAxMi41MzA0TDEwLjkzMDUgMTcuMzMwNEMxMC42Mzc2IDE3LjYyMzMgMTAuMTYyOCAxNy42MjMzIDkuODY5ODYgMTcuMzMwNEM5LjU3Njk2IDE3LjAzNzUgOS41NzY5NiAxNi41NjI2IDkuODY5ODYgMTYuMjY5N0wxNC4xMzk1IDEyTDkuODY5ODYgNy43MzAzOEM5LjU3Njk2IDcuNDM3NDkgOS41NzY5NiA2Ljk2MjYxIDkuODY5ODYgNi42Njk3MlpcIixmaWxsOnR9LG4pKX0pKX19LDQ4MjU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2hldnJvblVwSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuQ2hldnJvblVwSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMjRcIixoZWlnaHQ6XCIyNFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwifSx7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLE9iamVjdC5hc3NpZ24oe2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNS4wNTI4NSAxNC4xMTI5QzUuMzM2MTUgMTQuNDE1MSA1LjgxMDc4IDE0LjQzMDQgNi4xMTI5NiAxNC4xNDcxTDEyIDguNjI4MDJMMTcuODg3IDE0LjE0NzFDMTguMTg5MiAxNC40MzA0IDE4LjY2MzkgMTQuNDE1MSAxOC45NDcyIDE0LjExMjlDMTkuMjMwNSAxMy44MTA3IDE5LjIxNTEgMTMuMzM2MSAxOC45MTMgMTMuMDUyOEwxMi41MTMgNy4wNTI4MkMxMi4yMjQ1IDYuNzgyMzYgMTEuNzc1NSA2Ljc4MjM2IDExLjQ4NzEgNy4wNTI4Mkw1LjA4NzA1IDEzLjA1MjhDNC43ODQ4NyAxMy4zMzYxIDQuNzY5NTYgMTMuODEwNyA1LjA1Mjg1IDE0LjExMjlaXCIsZmlsbDp0fSxuKSl9KSl9fSwxMjgxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkV4Y2xhbWF0aW9uQ2lyY2xlZEZpbGxlZEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKSxpPW4oNzUxOCksYT1uKDY2ODkpLGw9bigzNDcxKTt0LkV4Y2xhbWF0aW9uQ2lyY2xlZEZpbGxlZEljb249ZT0+e3ZhcntzZWNvbmRhcnlDb2xvcjp0LGNvbG9yOm49XCJjdXJyZW50Q29sb3JcIn09ZSxzPXIoZSxbXCJzZWNvbmRhcnlDb2xvclwiLFwiY29sb3JcIl0pO2NvbnN0IGM9KDAsYS51c2VDb250ZXh0KShpLlRoZW1lQ29udGV4dCkuc2VsZWN0ZWRTY2hlbWU7cmV0dXJuIHR8fCh0PVwiZGFya1wiPT09Yz9sLkNvbG9yLmRhcmtHcmF5NTpsLkNvbG9yLndoaXRlKSwoMCxvLmpzeHMpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE3XCIsdmlld0JveDpcIjAgMCAxNiAxN1wiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxzLHtjaGlsZHJlbjpbKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTcuOTk5ODggMTUuMzMxN0MxMS43NzI5IDE1LjMzMTcgMTQuODMxNiAxMi4yNzMxIDE0LjgzMTYgOC41MDAwN0MxNC44MzE2IDQuNzI3MDQgMTEuNzcyOSAxLjY2ODQgNy45OTk4OCAxLjY2ODRDNC4yMjY4NiAxLjY2ODQgMS4xNjgyMSA0LjcyNzA0IDEuMTY4MjEgOC41MDAwN0MxLjE2ODIxIDEyLjI3MzEgNC4yMjY4NiAxNS4zMzE3IDcuOTk5ODggMTUuMzMxN1pcIixmaWxsOm59KSwoMCxvLmpzeCkoXCJtYXNrXCIsT2JqZWN0LmFzc2lnbih7aWQ6XCJwYXRoLTItaW5zaWRlLTFfNl8yNjIwMzNcIixmaWxsOnR9LHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNy45OTk5MyA0LjM3Mzg0QzcuNTc1MjUgNC4zNzM4NCA3LjIzNTY0IDQuNzI2NzYgNy4yNTE5NiA1LjE1MTEzTDcuNDIyOTYgOS41OTcwNkM3LjQzNDg5IDkuOTA3MDggNy42ODk2OCAxMC4xNTIzIDcuOTk5OTMgMTAuMTUyM0M4LjMxMDE5IDEwLjE1MjMgOC41NjQ5OCA5LjkwNzA4IDguNTc2OSA5LjU5NzA2TDguNzQ3OSA1LjE1MTEzQzguNzY0MjIgNC43MjY3NiA4LjQyNDYxIDQuMzczODQgNy45OTk5MyA0LjM3Mzg0Wk03Ljk5OTkzIDEyLjY0MDZDOC40NjAyMiAxMi42NDA2IDguODMzMzUgMTIuMjY3NSA4LjgzMzM1IDExLjgwNzJDOC44MzMzNSAxMS4zNDY5IDguNDYwMjIgMTAuOTczOCA3Ljk5OTkzIDEwLjk3MzhDNy41Mzk2NCAxMC45NzM4IDcuMTY2NSAxMS4zNDY5IDcuMTY2NSAxMS44MDcyQzcuMTY2NSAxMi4yNjc1IDcuNTM5NjQgMTIuNjQwNiA3Ljk5OTkzIDEyLjY0MDZaXCJ9KX0pKSwoMCxvLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNy45OTk5MyA0LjM3Mzg0QzcuNTc1MjUgNC4zNzM4NCA3LjIzNTY0IDQuNzI2NzYgNy4yNTE5NiA1LjE1MTEzTDcuNDIyOTYgOS41OTcwNkM3LjQzNDg5IDkuOTA3MDggNy42ODk2OCAxMC4xNTIzIDcuOTk5OTMgMTAuMTUyM0M4LjMxMDE5IDEwLjE1MjMgOC41NjQ5OCA5LjkwNzA4IDguNTc2OSA5LjU5NzA2TDguNzQ3OSA1LjE1MTEzQzguNzY0MjIgNC43MjY3NiA4LjQyNDYxIDQuMzczODQgNy45OTk5MyA0LjM3Mzg0Wk03Ljk5OTkzIDEyLjY0MDZDOC40NjAyMiAxMi42NDA2IDguODMzMzUgMTIuMjY3NSA4LjgzMzM1IDExLjgwNzJDOC44MzMzNSAxMS4zNDY5IDguNDYwMjIgMTAuOTczOCA3Ljk5OTkzIDEwLjk3MzhDNy41Mzk2NCAxMC45NzM4IDcuMTY2NSAxMS4zNDY5IDcuMTY2NSAxMS44MDcyQzcuMTY2NSAxMi4yNjc1IDcuNTM5NjQgMTIuNjQwNiA3Ljk5OTkzIDEyLjY0MDZaXCIsZmlsbDp0fSksKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTcuMjUxOTYgNS4xNTExM0w1LjY0ODc0IDUuMjEyNzlMNS42NDg3NCA1LjIxMjc5TDcuMjUxOTYgNS4xNTExM1pNNy40MjI5NiA5LjU5NzA2TDkuMDI2MTggOS41MzU0TDkuMDI2MTggOS41MzU0TDcuNDIyOTYgOS41OTcwNlpNOC41NzY5IDkuNTk3MDZMMTAuMTgwMSA5LjY1ODcyTDguNTc2OSA5LjU5NzA2Wk04Ljc0NzkgNS4xNTExM0wxMC4zNTExIDUuMjEyNzlMMTAuMzUxMSA1LjIxMjc5TDguNzQ3OSA1LjE1MTEzWk04Ljg1NTE5IDUuMDg5NDdDOC44NzM4NSA1LjU3NDcgOC40ODU1MyA1Ljk3ODI1IDcuOTk5OTMgNS45NzgyNVYyLjc2OTQzQzYuNjY0OTggMi43Njk0MyA1LjU5NzQ0IDMuODc4ODIgNS42NDg3NCA1LjIxMjc5TDguODU1MTkgNS4wODk0N1pNOS4wMjYxOCA5LjUzNTRMOC44NTUxOSA1LjA4OTQ3TDUuNjQ4NzQgNS4yMTI3OUw1LjgxOTc0IDkuNjU4NzJMOS4wMjYxOCA5LjUzNTRaTTcuOTk5OTMgOC41NDc4NkM4LjU1MTc3IDguNTQ3ODYgOS4wMDQ5OCA4Ljk4Mzk2IDkuMDI2MTggOS41MzU0TDUuODE5NzQgOS42NTg3MkM1Ljg2NDggMTAuODMwMiA2LjgyNzU4IDExLjc1NjcgNy45OTk5MyAxMS43NTY3VjguNTQ3ODZaTTYuOTczNjggOS41MzU0QzYuOTk0ODkgOC45ODM5NiA3LjQ0ODA5IDguNTQ3ODYgNy45OTk5MyA4LjU0Nzg2VjExLjc1NjdDOS4xNzIyOCAxMS43NTY3IDEwLjEzNTEgMTAuODMwMiAxMC4xODAxIDkuNjU4NzJMNi45NzM2OCA5LjUzNTRaTTcuMTQ0NjggNS4wODk0N0w2Ljk3MzY4IDkuNTM1NEwxMC4xODAxIDkuNjU4NzJMMTAuMzUxMSA1LjIxMjc5TDcuMTQ0NjggNS4wODk0N1pNNy45OTk5MyA1Ljk3ODI1QzcuNTE0MzQgNS45NzgyNSA3LjEyNjAyIDUuNTc0NyA3LjE0NDY4IDUuMDg5NDdMMTAuMzUxMSA1LjIxMjc5QzEwLjQwMjQgMy44Nzg4MiA5LjMzNDg5IDIuNzY5NDMgNy45OTk5MyAyLjc2OTQzVjUuOTc4MjVaTTcuMjI4OTUgMTEuODA3MkM3LjIyODk1IDExLjM4MTQgNy41NzQxMyAxMS4wMzYyIDcuOTk5OTMgMTEuMDM2MlYxNC4yNDVDOS4zNDYzMSAxNC4yNDUgMTAuNDM3OCAxMy4xNTM2IDEwLjQzNzggMTEuODA3Mkg3LjIyODk1Wk03Ljk5OTkzIDEyLjU3ODJDNy41NzQxMyAxMi41NzgyIDcuMjI4OTUgMTIuMjMzIDcuMjI4OTUgMTEuODA3MkgxMC40Mzc4QzEwLjQzNzggMTAuNDYwOCA5LjM0NjMxIDkuMzY5MzcgNy45OTk5MyA5LjM2OTM3VjEyLjU3ODJaTTguNzcwOTEgMTEuODA3MkM4Ljc3MDkxIDEyLjIzMyA4LjQyNTczIDEyLjU3ODIgNy45OTk5MyAxMi41NzgyVjkuMzY5MzdDNi42NTM1NSA5LjM2OTM3IDUuNTYyMSAxMC40NjA4IDUuNTYyMSAxMS44MDcySDguNzcwOTFaTTcuOTk5OTMgMTEuMDM2MkM4LjQyNTczIDExLjAzNjIgOC43NzA5MSAxMS4zODE0IDguNzcwOTEgMTEuODA3Mkg1LjU2MjFDNS41NjIxIDEzLjE1MzYgNi42NTM1NSAxNC4yNDUgNy45OTk5MyAxNC4yNDVWMTEuMDM2MlpcIixmaWxsOnQsbWFzazpcInVybCgjcGF0aC0yLWluc2lkZS0xXzZfMjYyMDMzKVwifSldfSkpfX0sNjc5NTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5GaWx0ZXJJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5GaWx0ZXJJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjEyXCIsaGVpZ2h0OlwiN1wiLHZpZXdCb3g6XCIwIDAgMTIgN1wiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNNCA2LjVDNCA2LjM2NzM5IDQuMDUyNjggNi4yNDAyMSA0LjE0NjQ1IDYuMTQ2NDVDNC4yNDAyMSA2LjA1MjY4IDQuMzY3MzkgNiA0LjUgNkg3LjVDNy42MzI2MSA2IDcuNzU5NzkgNi4wNTI2OCA3Ljg1MzU1IDYuMTQ2NDVDNy45NDczMiA2LjI0MDIxIDggNi4zNjczOSA4IDYuNUM4IDYuNjMyNjEgNy45NDczMiA2Ljc1OTc5IDcuODUzNTUgNi44NTM1NUM3Ljc1OTc5IDYuOTQ3MzIgNy42MzI2MSA3IDcuNSA3SDQuNUM0LjM2NzM5IDcgNC4yNDAyMSA2Ljk0NzMyIDQuMTQ2NDUgNi44NTM1NUM0LjA1MjY4IDYuNzU5NzkgNCA2LjYzMjYxIDQgNi41Wk0yIDMuNUMyIDMuMzY3MzkgMi4wNTI2OCAzLjI0MDIxIDIuMTQ2NDUgMy4xNDY0NUMyLjI0MDIxIDMuMDUyNjggMi4zNjczOSAzIDIuNSAzSDkuNUM5LjYzMjYxIDMgOS43NTk3OSAzLjA1MjY4IDkuODUzNTUgMy4xNDY0NUM5Ljk0NzMyIDMuMjQwMjEgMTAgMy4zNjczOSAxMCAzLjVDMTAgMy42MzI2MSA5Ljk0NzMyIDMuNzU5NzkgOS44NTM1NSAzLjg1MzU1QzkuNzU5NzkgMy45NDczMiA5LjYzMjYxIDQgOS41IDRIMi41QzIuMzY3MzkgNCAyLjI0MDIxIDMuOTQ3MzIgMi4xNDY0NSAzLjg1MzU1QzIuMDUyNjggMy43NTk3OSAyIDMuNjMyNjEgMiAzLjVaTTAgMC41QzAgMC4zNjczOTIgMC4wNTI2Nzg1IDAuMjQwMjE1IDAuMTQ2NDQ3IDAuMTQ2NDQ3QzAuMjQwMjE1IDAuMDUyNjc4NSAwLjM2NzM5MiAwIDAuNSAwSDExLjVDMTEuNjMyNiAwIDExLjc1OTggMC4wNTI2Nzg1IDExLjg1MzYgMC4xNDY0NDdDMTEuOTQ3MyAwLjI0MDIxNSAxMiAwLjM2NzM5MiAxMiAwLjVDMTIgMC42MzI2MDggMTEuOTQ3MyAwLjc1OTc4NSAxMS44NTM2IDAuODUzNTUzQzExLjc1OTggMC45NDczMjEgMTEuNjMyNiAxIDExLjUgMUgwLjVDMC4zNjczOTIgMSAwLjI0MDIxNSAwLjk0NzMyMSAwLjE0NjQ0NyAwLjg1MzU1M0MwLjA1MjY3ODUgMC43NTk3ODUgMCAwLjYzMjYwOCAwIDAuNVpcIixmaWxsOnR9KX0pKX19LDExNzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5GbG9wcHlEaXNrSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuRmxvcHB5RGlza0ljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTJcIixoZWlnaHQ6XCIxMlwiLHZpZXdCb3g6XCIwIDAgMTIgMTJcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTEuODc1IDIuMTg3NUMxLjg3NSAyLjE1Mjk4IDEuOTAyOTggMi4xMjUgMS45Mzc1IDIuMTI1SDguMjMwMzlDOC4yNDY5NyAyLjEyNSA4LjI2Mjg3IDIuMTMxNTggOC4yNzQ1OSAyLjE0MzMxTDkuOTgxNjkgMy44NTA0MUM5Ljk5MzQxIDMuODYyMTMgMTAgMy44NzgwMyAxMCAzLjg5NDYxVjEwLjE4NzVDMTAgMTAuMjIyIDkuOTcyMDIgMTAuMjUgOS45Mzc1IDEwLjI1SDEuOTM3NUMxLjkwMjk4IDEwLjI1IDEuODc1IDEwLjIyMiAxLjg3NSAxMC4xODc1VjIuMTg3NVpNMS45Mzc1IDEuMjVDMS40MTk3MyAxLjI1IDEgMS42Njk3MyAxIDIuMTg3NVYxMC4xODc1QzEgMTAuNzA1MyAxLjQxOTczIDExLjEyNSAxLjkzNzUgMTEuMTI1SDkuOTM3NUMxMC40NTUzIDExLjEyNSAxMC44NzUgMTAuNzA1MyAxMC44NzUgMTAuMTg3NVYzLjg5NDYxQzEwLjg3NSAzLjY0NTk3IDEwLjc3NjIgMy40MDc1MSAxMC42MDA0IDMuMjMxNjlMOC44OTMzMSAxLjUyNDU5QzguNzE3NDkgMS4zNDg3NyA4LjQ3OTAzIDEuMjUgOC4yMzAzOSAxLjI1SDEuOTM3NVpNMi44NDkyNCAzLjQwODFDMi44NDkyNCAzLjIzNzU0IDIuOTg3NTEgMy4wOTkyNyAzLjE1ODA3IDMuMDk5MjdINy40ODE2QzcuNjUyMTUgMy4wOTkyNyA3Ljc5MDQyIDMuMjM3NTQgNy43OTA0MiAzLjQwODFWNC42NDMzOUM3Ljc5MDQyIDQuODEzOTUgNy42NTIxNSA0Ljk1MjIxIDcuNDgxNiA0Ljk1MjIxSDMuMTU4MDdDMi45ODc1MSA0Ljk1MjIxIDIuODQ5MjQgNC44MTM5NSAyLjg0OTI0IDQuNjQzMzlWMy40MDgxWk00LjUzNjggNi42Mzk3N0M0LjgyNjM4IDYuMzUwMTkgNS4yMTkxMyA2LjE4NzUxIDUuNjI4NjUgNi4xODc1MUM2LjAzODE4IDYuMTg3NTEgNi40MzA5MyA2LjM1MDE5IDYuNzIwNTEgNi42Mzk3N0M3LjAxMDA5IDYuOTI5MzUgNy4xNzI3NyA3LjMyMjEgNy4xNzI3NyA3LjczMTYzQzcuMTcyNzcgOC4xNDExNSA3LjAxMDA5IDguNTMzOSA2LjcyMDUxIDguODIzNDhDNi40MzA5MyA5LjExMzA2IDYuMDM4MTggOS4yNzU3NCA1LjYyODY1IDkuMjc1NzRDNS4yMTkxMyA5LjI3NTc0IDQuODI2MzggOS4xMTMwNiA0LjUzNjggOC44MjM0OEM0LjI0NzIyIDguNTMzOSA0LjA4NDU0IDguMTQxMTUgNC4wODQ1NCA3LjczMTYzQzQuMDg0NTQgNy4zMjIxIDQuMjQ3MjIgNi45MjkzNSA0LjUzNjggNi42Mzk3N1pcIixmaWxsOnQscm9sZTpcImltZ1wifSl9KSl9fSw1Mjk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRnJhZ21lbnRzSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuRnJhZ21lbnRzSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIyMFwiLGhlaWdodDpcIjIwXCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNOC44MDAwMSA0LjgwMDAySDQuODAwMDFDMy45MTc2MSA0LjgwMDAyIDMuMjAwMDEgNS41MTc2MiAzLjIwMDAxIDYuNDAwMDJWMTAuNEMzLjIwMDAxIDExLjI4MjQgMy45MTc2MSAxMiA0LjgwMDAxIDEySDguODAwMDFDOS42ODI0MSAxMiAxMC40IDExLjI4MjQgMTAuNCAxMC40VjYuNDAwMDJDMTAuNCA1LjUxNzYyIDkuNjgyNDEgNC44MDAwMiA4LjgwMDAxIDQuODAwMDJaTTIwLjM1OTIgNi40Njg4MkwxNy41MzEyIDMuNjQwMDJDMTYuOTA4IDMuMDE2MDIgMTUuODkyIDMuMDE2MDIgMTUuMjY4OCAzLjY0MDAyTDEyLjQ0MDggNi40Njg4MkMxMS44MTY4IDcuMDkyODIgMTEuODE2OCA4LjEwNzIyIDEyLjQ0MDggOC43MzEyMkwxNS4yNjg4IDExLjU2QzE1LjU4MDggMTEuODcyIDE1Ljk5MDQgMTIuMDI4IDE2LjQgMTIuMDI4QzE2LjgwOTYgMTIuMDI4IDE3LjIxOTIgMTEuODcyIDE3LjUzMTIgMTEuNTZMMjAuMzU5MiA4LjczMTIyQzIwLjk4MzIgOC4xMDcyMiAyMC45ODMyIDcuMDkyODIgMjAuMzU5MiA2LjQ2ODgyWk04LjgwMDAxIDEzLjZINC44MDAwMUMzLjkxNzYxIDEzLjYgMy4yMDAwMSAxNC4zMTc2IDMuMjAwMDEgMTUuMlYxOS4yQzMuMjAwMDEgMjAuMDgyNCAzLjkxNzYxIDIwLjggNC44MDAwMSAyMC44SDguODAwMDFDOS42ODI0MSAyMC44IDEwLjQgMjAuMDgyNCAxMC40IDE5LjJWMTUuMkMxMC40IDE0LjMxNzYgOS42ODI0MSAxMy42IDguODAwMDEgMTMuNlpNMTcuNiAxMy42SDEzLjZDMTIuNzE3NiAxMy42IDEyIDE0LjMxNzYgMTIgMTUuMlYxOS4yQzEyIDIwLjA4MjQgMTIuNzE3NiAyMC44IDEzLjYgMjAuOEgxNy42QzE4LjQ4MjQgMjAuOCAxOS4yIDIwLjA4MjQgMTkuMiAxOS4yVjE1LjJDMTkuMiAxNC4zMTc2IDE4LjQ4MjQgMTMuNiAxNy42IDEzLjZaXCIsZmlsbDp0fSl9KSl9fSw3Nzg4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkxpZ2h0QnVsYkZpbGxlZEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkxpZ2h0QnVsYkZpbGxlZEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4cykoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjEwXCIsaGVpZ2h0OlwiMTJcIix2aWV3Qm94OlwiMCAwIDEwIDEyXCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOlsoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNMS44MyAxLjMxMDA4QzIuMjQ0MDkgMC44OTE2NjcgMi43Mzc2OCAwLjU2MDMwNyAzLjI4MTc0IDAuMzM1NTA0QzMuODI1ODEgMC4xMTA3MDEgNC40MDkzNCAtMC4wMDMwMDMzMyA0Ljk5OCAwLjAwMTA4MjkxQzYuMTg2MjggLTAuMDAzMTA3ODUgNy4zMjkwNSAwLjQ1NzczMyA4LjE4MiAxLjI4NTA4QzguNTk4ODEgMS42ODcxOSA4LjkzMDQ2IDIuMTY5MDMgOS4xNTcyMyAyLjcwMTk0QzkuMzg0IDMuMjM0ODUgOS41MDEyNSAzLjgwNzkzIDkuNTAyIDQuMzg3MDhDOS41MDIgNS42ODAwOCA4LjkxNyA2LjgzMDA4IDcuODgzIDcuODI1MDhMNy41NzcgOS4wMDAwOEgyLjQ2NkwyLjIzNiA4LjAzNzA4QzEuMTU0IDYuOTA3MDggMC41NTYgNS44MTkwOCAwLjUgNC41ODIwOFY0LjU0NDA4QzAuNTQgMy4yNDgwOCAxLjAzMyAyLjEyMTA4IDEuODMxIDEuMzExMDhMMS44MyAxLjMxMDA4WlwiLGZpbGw6dH0pLCgwLG8uanN4KShcInBhdGhcIix7ZDpcIk0yLjcwNDEgMTBMMi45MzcxIDEwLjk3OEwyLjk0NTEgMTFDMy4wNDUxIDExLjI5NyAzLjIzNzEgMTEuNTQ0IDMuNDc5MSAxMS43MTdDMy43MzAxIDExLjg5NyA0LjAzNzEgMTEuOTk5IDQuMzYxMSAxMS45OTlINC4zNjMxTDUuNzQ2MSAxMS45OTVMNS43NjcxIDExLjk5M0M2LjA3NTg3IDExLjk2NjkgNi4zNjkxMyAxMS44NDY1IDYuNjA3MSAxMS42NDhDNi44MzgxIDExLjQ1NCA3LjAxMzEgMTEuMTg4IDcuMDg3MSAxMC44NzRMNy4zMTYxIDEwSDIuNzA0MVYxMFpcIixmaWxsOnR9KV19KSl9fSwzNzAzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkxpZ2h0QnVsYk91dGxpbmVkSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuTGlnaHRCdWxiT3V0bGluZWRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjEwXCIsaGVpZ2h0OlwiMTJcIix2aWV3Qm94OlwiMCAwIDEwIDEyXCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZDpcIk00Ljk5NzY2IDAuMDAxMDAxNDlDMy43Njg2NiAwLjAwMTAwMTQ5IDIuNjQ3NjYgMC40ODIwMDIgMS44Mjk2NiAxLjMxMUMxLjAzMTY2IDIuMTIxIDAuNTM5NjU3IDMuMjQ4IDAuNDk5NjU3IDQuNTQ0TDAuNDk4NjU3IDQuNTYzVjQuNTgzQzAuNTU1NjU3IDUuODE5IDEuMTUzNjYgNi45MDcgMi4yMzU2NiA4LjAzN0wyLjkzNzY2IDEwLjk3OEwyLjk0NDY2IDExQzMuMDQ0NjYgMTEuMjk3IDMuMjM2NjYgMTEuNTQ0IDMuNDc4NjYgMTEuNzE3QzMuNzI5NjYgMTEuODk3IDQuMDM2NjYgMTEuOTk5IDQuMzYxNjYgMTEuOTk5TDUuNzQ1NjYgMTEuOTk1TDUuNzY2NjYgMTEuOTkzQzYuMDc1NDIgMTEuOTY2OSA2LjM2ODY5IDExLjg0NjUgNi42MDY2NiAxMS42NDhDNi44Mzc2NiAxMS40NTQgNy4wMTI2NiAxMS4xODggNy4wODY2NiAxMC44NzRMNy44ODI2NiA3LjgyNEM4LjkxNjY2IDYuODMgOS41MDA2NiA1LjY4IDkuNTAwNjYgNC4zODdDOS40OTk5MSAzLjgwNzg1IDkuMzgyNjYgMy4yMzQ3NyA5LjE1NTg5IDIuNzAxODZDOC45MjkxMiAyLjE2ODk1IDguNTk3NDYgMS42ODcxMSA4LjE4MDY2IDEuMjg1QzcuMzI3OTYgMC40NTc4OTQgNi4xODU1OSAtMC4wMDI5Mjc4OCA0Ljk5NzY2IDAuMDAxMDAxNDlaTTIuNTQyNjYgMi4wMTNDMi44NjM0NCAxLjY4ODcxIDMuMjQ1OTYgMS40MzE5OCAzLjY2NzYyIDEuMjU4QzQuMDg5MjggMS4wODQwMSA0LjU0MTUzIDAuOTk2MjgzIDQuOTk3NjYgMUM1LjkyNTE0IDAuOTk1Nzg0IDYuODE3NDQgMS4zNTQ3MSA3LjQ4MzY2IDJDNy44MDQ3MSAyLjMwOTA0IDguMDYwMjMgMi42Nzk1NyA4LjIzNDk2IDMuMDg5NTFDOC40MDk2OSAzLjQ5OTQ1IDguNTAwMDUgMy45NDAzOCA4LjUwMDY2IDQuMzg2QzguNTAwNjYgNS4zNzcgOC4wNDc2NiA2LjMxMiA3LjA5NjY2IDcuMTkxTDYuOTg4NjYgNy4yOTFMNi41NDI2NiA5SDMuNDkzNjZMMy4xNDQ2NiA3LjUzNkwzLjA0NzY2IDcuNDM2QzEuOTk5NjYgNi4zNzIgMS41NDc2NiA1LjQ4IDEuNDk4NjYgNC41NTdDMS41MzY2NiAzLjUwOSAxLjkzMjY2IDIuNjMyIDIuNTQyNjYgMi4wMTRWMi4wMTNaTTMuNzMyNjYgMTBINi4yODI2Nkw2LjExNzY2IDEwLjYyN0w2LjExNDY2IDEwLjY0QzYuMDkyMTEgMTAuNzM0MiA2LjAzOTQ0IDEwLjgxODUgNS45NjQ2NiAxMC44OEM1Ljg4ODczIDEwLjk0MzUgNS43OTU5NSAxMC45ODM0IDUuNjk3NjYgMTAuOTk1TDQuMzYwNjYgMTFDNC4yNTMyMSAxMS4wMDAzIDQuMTQ4MzMgMTAuOTY3MSA0LjA2MDY2IDEwLjkwNUMzLjk4NzcgMTAuODUzNiAzLjkzMTM5IDEwLjc4MiAzLjg5ODY2IDEwLjY5OUwzLjczMTY2IDEwSDMuNzMyNjZaXCIsZmlsbDp0fSl9KSl9fSw4MzExOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkxvY2tlZENsb3NlZEZpbGxlZEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkxvY2tlZENsb3NlZEZpbGxlZEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTUuMDAwMDMgNC42MzYyM0M1LjAwMDAzIDMuNzYwNTIgNS4yNDIyMiAzLjEwNTYxIDUuNjQzMjcgMi42NzM3OEM2LjAzOTM4IDIuMjQ3MjcgNi42NDU4NSAxLjk3ODUyIDcuNTAxNDMgMS45Nzg1MkM4LjM1NzQ4IDEuOTc4NTIgOC45NjMwOSAyLjI0NjczIDkuMzU4MjcgMi42NzIzQzkuNzU4NDEgMy4xMDMyMSAxMCAzLjc1NzI5IDEwIDQuNjMzNDZWNi41MDAyMUgxMVY0LjYzMzQ2QzExIDMuNTc5MTcgMTAuNzA3NiAyLjY1NTc4IDEwLjA5MTEgMS45OTE4M0M5LjQ2OTU1IDEuMzIyNTQgOC41NzU4NiAwLjk3ODUxNiA3LjUwMTQzIDAuOTc4NTE2QzYuNDI2NzggMC45Nzg1MTYgNS41MzI1NSAxLjMyMzUgNC45MTA1MiAxLjk5MzI4QzQuMjkzNDIgMi42NTc3NSA0LjAwMDAzIDMuNTgxNjkgNC4wMDAwMyA0LjYzNjIzVjYuNTAwMjFINS4wMDAwM1Y0LjYzNjIzWk0zIDYuNTAwMjFDMi43MjM4NiA2LjUwMDIxIDIuNSA2LjcyNDA3IDIuNSA3LjAwMDIxVjEzLjAwMDJDMi41IDEzLjI3NjQgMi43MjM4NiAxMy41MDAyIDMgMTMuNTAwMkgxMkMxMi4yNzYxIDEzLjUwMDIgMTIuNSAxMy4yNzY0IDEyLjUgMTMuMDAwMlY3LjAwMDIxQzEyLjUgNi43MjQwNyAxMi4yNzYxIDYuNTAwMjEgMTIgNi41MDAyMUgzWlwiLGZpbGw6dCxyb2xlOlwiaW1nXCJ9KX0pKX19LDU3Mjk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTWluaW1pemVJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5NaW5pbWl6ZUljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTIuMTY2MDIgMTJDMi4xNjYwMiAxMS43MjM5IDIuMzg5ODcgMTEuNSAyLjY2NjAyIDExLjVIMTMuMzMyN0MxMy42MDg4IDExLjUgMTMuODMyNyAxMS43MjM5IDEzLjgzMjcgMTJDMTMuODMyNyAxMi4yNzYxIDEzLjYwODggMTIuNSAxMy4zMzI3IDEyLjVIMi42NjYwMkMyLjM4OTg3IDEyLjUgMi4xNjYwMiAxMi4yNzYxIDIuMTY2MDIgMTJaXCIsZmlsbDp0LHJvbGU6XCJpbWdcIn0pfSkpfX0sMzc5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk9wZW5GaW5JY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5PcGVuRmluSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTQuMjY4NSA1LjczOTE2QzE0LjE3ODUgNS42NDkwNiAxNC4wODE3IDUuNTY1OTIgMTMuOTc5IDUuNDkwNDdMMTMuOTQxMiA1LjQ2NDI5QzEzLjkxOTYgNS40NDkxOSAxMy44OTg0IDUuNDMzNTggMTMuODc2MyA1LjQxODk4QzEzLjg1NDEgNS40MDQzOCAxMy44Mjg0IDUuMzg4NzggMTMuODA0OCA1LjM3NDE4TDEzLjc3MTUgNS4zNTM1NEMxMy43NDE4IDUuMzM1OTIgMTMuNzExNiA1LjMxOTMgMTMuNjgxNCA1LjMwMzE5TDEzLjY2MzggNS4yOTM2M0MxMy4zMDY1IDUuMTA2MTggMTIuOTA5MSA1LjAwODA3IDEyLjUwNTcgNS4wMDc2OEMxMS44NDE3IDUuMDA3MTUgMTEuMjA1MiA0Ljc0MjkxIDEwLjczNjIgNC4yNzMxQzEwLjI2NzEgMy44MDMzIDEwLjAwNCAzLjE2NjQyIDEwLjAwNDYgMi41MDI2MkMxMC4wMDY1IDEuNDkyMjIgOS4zOTkzMyAwLjU4MDIxOSA4LjQ2NjM0IDAuMTkxOTExQzcuNTMzMzUgLTAuMTk2Mzk3IDYuNDU4MjYgMC4wMTU0NjYgNS43NDI0NCAwLjcyODcwMUM1LjAyNjYxIDEuNDQxOTQgNC44MTEwMyAyLjUxNjA3IDUuMTk2MjEgMy40NTAyQzUuNTgxNCA0LjM4NDMzIDYuNDkxNSA0Ljk5NDQ3IDcuNTAyMSA0Ljk5NjFDOC4xNjYwMyA0Ljk5NjY0IDguODAyNTYgNS4yNjA4OCA5LjI3MTYxIDUuNzMwNjhDOS43NDA2NiA2LjIwMDQ5IDEwLjAwMzggNi44MzczNiAxMC4wMDMxIDcuNTAxMTdDMTAuMDAyNiA4LjE2NDk3IDkuNzM4MyA4LjgwMTM3IDkuMjY4NCA5LjI3MDMyQzguNzk4NSA5LjczOTI4IDguMTYxNSAxMC4wMDI0IDcuNDk3NTYgMTAuMDAxN0M2LjgzNDEzIDEwLjAwMjIgNi4xOTc3MiA5LjczODk0IDUuNzI4NjUgOS4yNjk4N0M1LjI1OTU4IDguODAwOCA0Ljk5NjM2IDguMTY0NDcgNC45OTcwMyA3LjUwMTE3QzQuOTk3MDMgNi4xMjE1NSAzLjg3ODQxIDUuMDAzMTUgMi40OTg1MiA1LjAwMzE1QzEuMTE4NjIgNS4wMDMxNSAwIDYuMTIxNTUgMCA3LjUwMTE3QzAgOC44ODA3OCAxLjExODYyIDkuOTk5MTggMi40OTg1MiA5Ljk5OTE4QzMuODc4NDEgOS45OTkxOCA0Ljk5NzAzIDExLjExNzYgNC45OTcwMyAxMi40OTcyQzQuOTk3MDMgMTMuODc5NSA2LjExNzggMTUgNy41MDAzMyAxNUM4Ljg4Mjg3IDE1IDEwLjAwMzYgMTMuODc5NSAxMC4wMDM2IDEyLjQ5NzJDMTAuMDAzNiAxMS4xMTc2IDExLjEyMjMgOS45OTkxOCAxMi41MDIxIDkuOTk5MThDMTIuOTQ4MiA5Ljk5OTQ4IDEzLjM4NjIgOS44ODAyMiAxMy43NzA1IDkuNjUzODNDMTMuODAzOCA5LjYzNDIgMTMuODM2NSA5LjYxMzU2IDEzLjg3MTIgOS41OTI0MUwxMy44NzgzIDkuNTg3ODhDMTMuOTA4NSA5LjU2Nzc1IDEzLjkzODcgOS41NDY2IDEzLjk2NzkgOS41MjU0NkwxMy45ODEgOS41MTY0QzE0LjAwNzIgOS40OTcyNyAxNC4wMzE0IDkuNDc2NjIgMTQuMDU5MSA5LjQ1NTk4TDE0LjA4MTIgOS40Mzg4N0MxNC4xMDU0IDkuNDE5MjMgMTQuMTI4NiA5LjM5ODU5IDE0LjE1MjIgOS4zNzc5NUwxNC4xNzc5IDkuMzU1OEMxNC4yMDgxIDkuMzI4NjIgMTQuMjM3OCA5LjMwMDQyIDE0LjI2NyA5LjI3MTIzTDE0LjI3MTYgOS4yNjcyQzE0LjM3OTQgOS4xNTg4NyAxNC40NzcyIDkuMDQwOTEgMTQuNTYzNiA4LjkxNDhDMTQuNTgyNCA4Ljg4NzYxIDE0LjYwMDUgOC44NjAwOSAxNC42MTggOC44MzIyM0MxNS4yMzcgNy44NDU4NCAxNS4wOTIgNi41NjI2NyAxNC4yNjg1IDUuNzM5MTZaXCIsZmlsbDp0LHJvbGU6XCJpbWdcIn0pfSkpfX0sMTUzOTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5TdGFja0ljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LlN0YWNrSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIyMFwiLGhlaWdodDpcIjIwXCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTQuMjE3OCAzLjAwMDkyQzE0LjE1MDQgMy4wMDUxNCAxNC4wODM5IDMuMDE4NDQgMTQuMDIgMy4wNDA0N0wzLjUxOTg2IDYuNDI4N0MzLjM2ODY0IDYuNDc3NDMgMy4yMzY4MSA2LjU3MjkxIDMuMTQzMzUgNi43MDEzOEMzLjA0OTg5IDYuODI5ODYgMi45OTk2NCA2Ljk4NDY5IDIuOTk5ODMgNy4xNDM1NlYxNS43NTRDMi45OTg0MyAxNS44NTM0IDMuMDE2NzkgMTUuOTUyMSAzLjA1Mzg1IDE2LjA0NDNDMy4wOTA5MSAxNi4xMzY2IDMuMTQ1OTMgMTYuMjIwNSAzLjIxNTcxIDE2LjI5MTNDMy4yODU1IDE2LjM2MjEgMy4zNjg2NSAxNi40MTgzIDMuNDYwMzUgMTYuNDU2NkMzLjU1MjA0IDE2LjQ5NSAzLjY1MDQ1IDE2LjUxNDcgMy43NDk4NCAxNi41MTQ3QzMuODQ5MjQgMTYuNTE0NyAzLjk0NzY0IDE2LjQ5NSA0LjAzOTM0IDE2LjQ1NjZDNC4xMzEwMyAxNi40MTgzIDQuMjE0MTkgMTYuMzYyMSA0LjI4Mzk3IDE2LjI5MTNDNC4zNTM3NSAxNi4yMjA1IDQuNDA4NzggMTYuMTM2NiA0LjQ0NTg0IDE2LjA0NDNDNC40ODI5IDE1Ljk1MjEgNC41MDEyNiAxNS44NTM0IDQuNDk5ODUgMTUuNzU0VjcuNjg4NDlMMTQuNDggNC40NjcyNUMxNC42NDkgNC40MTUyOSAxNC43OTQyIDQuMzA1MzIgMTQuODkgNC4xNTY3NEMxNC45ODU4IDQuMDA4MTUgMTUuMDI2IDMuODMwNSAxNS4wMDM2IDMuNjU1MTRDMTQuOTgxMiAzLjQ3OTc3IDE0Ljg5NzUgMy4zMTc5NyAxNC43Njc0IDMuMTk4MjdDMTQuNjM3MyAzLjA3ODU3IDE0LjQ2OTEgMy4wMDg2OCAxNC4yOTI1IDMuMDAwOTJDMTQuMjY3NiAyLjk5OTY3IDE0LjI0MjcgMi45OTk2NyAxNC4yMTc4IDMuMDAwOTJaTTE3LjIxNzggNS4yNTA5NUMxNy4xNTA0IDUuMjU1MTcgMTcuMDgzOSA1LjI2ODQ4IDE3LjAyMDEgNS4yOTA1TDYuNTE5OSA4LjY3ODc0QzYuMzY4NjkgOC43Mjc0NiA2LjIzNjg1IDguODIyOTQgNi4xNDMzOSA4Ljk1MTQyQzYuMDQ5OTMgOS4wNzk4OSA1Ljk5OTY4IDkuMjM0NzIgNS45OTk4OCA5LjM5MzU5VjE4LjAwNDFDNS45OTg0NyAxOC4xMDM1IDYuMDE2ODMgMTguMjAyMSA2LjA1Mzg5IDE4LjI5NDRDNi4wOTA5NSAxOC4zODY2IDYuMTQ1OTcgMTguNDcwNSA2LjIxNTc2IDE4LjU0MTNDNi4yODU1NCAxOC42MTIxIDYuMzY4NyAxOC42NjgzIDYuNDYwMzkgMTguNzA2NkM2LjU1MjA5IDE4Ljc0NSA2LjY1MDQ5IDE4Ljc2NDggNi43NDk4OSAxOC43NjQ4QzYuODQ5MjggMTguNzY0OCA2Ljk0NzY5IDE4Ljc0NSA3LjAzOTM4IDE4LjcwNjZDNy4xMzEwOCAxOC42NjgzIDcuMjE0MjMgMTguNjEyMSA3LjI4NDAyIDE4LjU0MTNDNy4zNTM4IDE4LjQ3MDUgNy40MDg4MiAxOC4zODY2IDcuNDQ1ODggMTguMjk0NEM3LjQ4Mjk0IDE4LjIwMjEgNy41MDEzIDE4LjEwMzUgNy40OTk5IDE4LjAwNDFWOS45Mzg1MkwxNy40OCA2LjcxNzI4QzE3LjY0OSA2LjY2NTMzIDE3Ljc5NDIgNi41NTUzNSAxNy44OSA2LjQwNjc3QzE3Ljk4NTggNi4yNTgxOCAxOC4wMjYxIDYuMDgwNTQgMTguMDAzNiA1LjkwNTE3QzE3Ljk4MTIgNS43Mjk4MSAxNy44OTc2IDUuNTY4IDE3Ljc2NzUgNS40NDgzQzE3LjYzNzQgNS4zMjg2MSAxNy40NjkxIDUuMjU4NzEgMTcuMjkyNSA1LjI1MDk1QzE3LjI2NzYgNS4yNDk3MSAxNy4yNDI3IDUuMjQ5NzEgMTcuMjE3OCA1LjI1MDk1Wk0yMC4xOTMgNy41MDUzOEMyMC4xMzQ0IDcuNTA5ODIgMjAuMDc1OCA3LjUyMTk3IDIwLjAxODYgNy41NDA1M0w5LjUxODQ4IDEwLjkyODhDOS4yMDk0OCAxMS4wMjkzIDguOTk5OTIgMTEuMzE4MSA4Ljk5OTkyIDExLjY0MzZWMjAuMjU0MUM4Ljk5OTkyIDIwLjQ5NzkgOS4xMTgyOSAyMC43MjYyIDkuMzE3OCAyMC44NjY0QzkuNDQ2MDUgMjAuOTU3MiA5LjU5NjkzIDIxLjAwNDEgOS43NDk5MyAyMS4wMDQxQzkuODM0NjggMjEuMDA0MSA5LjkyMDE0IDIwLjk4OTQgMTAuMDAxOSAyMC45NjAyTDIwLjUwMiAxNy4yMTAxQzIwLjgwMDYgMTcuMTA0NCAyMS4wMDAxIDE2LjgyMTMgMjEuMDAwMSAxNi41MDRWOC4yNTM5MkMyMS4wMDAxIDguMDE0NjcgMjAuODg1MyA3Ljc4OTIyIDIwLjY5MSA3LjY0NzQ3QzIwLjU0NTkgNy41NDE3MiAyMC4zNjg4IDcuNDkyMDUgMjAuMTkzIDcuNTA1MzhaXCIsZmlsbDp0fSl9KSl9fSw0MDIwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlN0b3JlZnJvbnRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5TdG9yZWZyb250SWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIyMFwiLGhlaWdodDpcIjIwXCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNNSAzQzQuNDQ4IDMgNCAzLjQ0OCA0IDRDNCA0LjU1MiA0LjQ0OCA1IDUgNUgxOUMxOS41NTIgNSAyMCA0LjU1MiAyMCA0QzIwIDMuNDQ4IDE5LjU1MiAzIDE5IDNINVpNNC42MTcxOSA3QzQuMjM4MTkgNyAzLjg5MzYxIDcuMjEzNzMgMy43MjQ2MSA3LjU1MjczTDIuMTA1NDcgMTAuNzg5MUMyLjAzNTQ3IDEwLjkyODEgMiAxMS4wODEzIDIgMTEuMjM2M1YxMkMyIDEyLjU1MiAyLjQ0OCAxMyAzIDEzVjE5QzMgMjAuMTA1IDMuODk1IDIxIDUgMjFIMTlDMjAuMTA1IDIxIDIxIDIwLjEwNSAyMSAxOVYxM0MyMS41NTIgMTMgMjIgMTIuNTUyIDIyIDEyVjExLjIzNjNDMjIgMTEuMDgxMyAyMS45NjQ1IDEwLjkyODEgMjEuODk0NSAxMC43ODkxTDIwLjI3NTQgNy41NTI3M0MyMC4xMDY0IDcuMjEzNzMgMTkuNzYxOCA3IDE5LjM4MjggN0g0LjYxNzE5Wk02IDEzSDE4QzE4LjU1MiAxMyAxOSAxMy40NDggMTkgMTRWMThDMTkgMTguNTUyIDE4LjU1MiAxOSAxOCAxOUg2QzUuNDQ4IDE5IDUgMTguNTUyIDUgMThWMTRDNSAxMy40NDggNS40NDggMTMgNiAxM1pcIixmaWxsOnR9KX0pKX19LDc5Mzc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuV29ya3NwYWNlSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuV29ya3NwYWNlSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3hzKShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixyb2xlOlwiaW1nXCJ9LG4se2NoaWxkcmVuOlsoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNNi43MzgxMSAyLjgxMjVIMy41MzEzN0MzLjEzNDQyIDIuODEyNSAyLjgxMjYyIDMuMTM0MyAyLjgxMjYyIDMuNTMxMjVWNy41MTIwNEMyLjgxMjYyIDcuOTA5IDMuMTM0NDIgOC4yMzA3OSAzLjUzMTM3IDguMjMwNzlINi43MzgxMUM3LjEzNTA2IDguMjMwNzkgNy40NTY4NiA3LjkwOSA3LjQ1Njg2IDcuNTEyMDRWMy41MzEyNUM3LjQ1Njg2IDMuMTM0MyA3LjEzNTA2IDIuODEyNSA2LjczODExIDIuODEyNVpcIixmaWxsOnR9KSwoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTIuMTU2NSA2LjI2NzU4SDguOTQ5NzFDOC43NTEyMyA2LjI2NzU4IDguNTkwMzMgNi40Mjg0OCA4LjU5MDMzIDYuNjI2OTZWMTEuMzgxOEM4LjU5MDMzIDExLjU4MDMgOC43NTEyMyAxMS43NDEyIDguOTQ5NzEgMTEuNzQxMkgxMi4xNTY1QzEyLjM1NDkgMTEuNzQxMiAxMi41MTU4IDExLjU4MDMgMTIuNTE1OCAxMS4zODE4VjYuNjI2OTZDMTIuNTE1OCA2LjQyODQ4IDEyLjM1NDkgNi4yNjc1OCAxMi4xNTY1IDYuMjY3NThaXCIsc3Ryb2tlOnQsc3Ryb2tlV2lkdGg6XCIwLjcxODc1M1wifSksKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTEyLjE1NjQgMi44MTI1SDguOTQ5NzFDOC41NTI3NSAyLjgxMjUgOC4yMzA5NiAzLjEzNDMgOC4yMzA5NiAzLjUzMTI1VjQuNDE1ODdDOC4yMzA5NiA0LjgxMjgzIDguNTUyNzUgNS4xMzQ2MyA4Ljk0OTcxIDUuMTM0NjNIMTIuMTU2NEMxMi41NTM0IDUuMTM0NjMgMTIuODc1MiA0LjgxMjgzIDEyLjg3NTIgNC40MTU4N1YzLjUzMTI1QzEyLjg3NTIgMy4xMzQzIDEyLjU1MzQgMi44MTI1IDEyLjE1NjQgMi44MTI1WlwiLGZpbGw6dH0pLCgwLG8uanN4KShcInBhdGhcIix7ZDpcIk02LjczNzk4IDkuMDA0ODhIMy41MzEyNUMzLjEzNDMgOS4wMDQ4OCAyLjgxMjUgOS4zMjY2OCAyLjgxMjUgOS43MjM2NFYxMS4zODIzQzIuODEyNSAxMS43NzkzIDMuMTM0MyAxMi4xMDExIDMuNTMxMjUgMTIuMTAxMUg2LjczNzk4QzcuMTM0OTQgMTIuMTAxMSA3LjQ1Njc0IDExLjc3OTMgNy40NTY3NCAxMS4zODIzVjkuNzIzNjRDNy40NTY3NCA5LjMyNjY4IDcuMTM0OTQgOS4wMDQ4OCA2LjczNzk4IDkuMDA0ODhaXCIsZmlsbDp0fSldfSkpfX0sMjc3MjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzc5KSx0KSxvKG4oNDcxOCksdCksbyhuKDc5MzcpLHQpLG8obig4MzExKSx0KSxvKG4oNTcyOSksdCksbyhuKDc3ODgpLHQpLG8obigzNzAzKSx0KSxvKG4oNjc5NSksdCksbyhuKDgyNjUpLHQpLG8obigxMTcpLHQpLG8obigxNTM5KSx0KSxvKG4oOTI4NSksdCksbyhuKDQwMjApLHQpLG8obig1MjkpLHQpLG8obigyNDAyKSx0KSxvKG4oMjE0NyksdCksbyhuKDQ4MjUpLHQpLG8obig2NDQ3KSx0KSxvKG4oMTI4MSksdCl9LDMxMTc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5JY29uV2l0aEJhZGdlPXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1vKG4oNzUxOCkpLGw9big3MDA2KSxzPW4oMzEzNiksYz1uKDEzMzUpO3QuSWNvbldpdGhCYWRnZT1lPT57dmFye2NvdW50OnQ9MCxtYXg6bn09ZSxvPXIoZSxbXCJjb3VudFwiLFwibWF4XCJdKTtyZXR1cm4oMCxpLmpzeHMpKHUse2NoaWxkcmVuOlsoMCxpLmpzeCkobC5JY29uLE9iamVjdC5hc3NpZ24oe30sbykpLHQ+MCYmKDAsaS5qc3gpKGYse2NvdW50OnQsbWF4Om59KV19KX07Y29uc3QgdT0oMCxhLmRlZmF1bHQpKGMuQm94KWBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYCxmPSgwLGEuZGVmYXVsdCkocy5CYWRnZSlgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdHJhbnNmb3JtOiBzY2FsZSg3MCUpO1xuICByaWdodDogLSR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIHRvcDogLSR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuYH0sMTQ0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigzMTE3KSx0KX0sOTIzOTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oODI3NSksdCksbyhuKDY5MyksdCl9LDgyNzU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Mb2FkZXI9dm9pZCAwO2NvbnN0IGk9big1ODkzKSxhPW8obig3NTE4KSksbD1uKDk2MzQpO3QuTG9hZGVyPSgwLGEuZGVmYXVsdCkoKGU9Pnt2YXIgdD1yKGUsW10pO3JldHVybigwLGkuanN4KShsLkljb24sT2JqZWN0LmFzc2lnbih7fSx0LHtjaGlsZHJlbjooMCxpLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjEwMCVcIixoZWlnaHQ6XCIxMDAlXCIsdmlld0JveDpcIjAgMCAzOCAzOFwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixzdHJva2U6XCJjdXJyZW50Q29sb3JcIn0se2NoaWxkcmVuOigwLGkuanN4KShcImdcIixPYmplY3QuYXNzaWduKHtmaWxsOlwibm9uZVwiLGZpbGxSdWxlOlwiZXZlbm9kZFwifSx7Y2hpbGRyZW46KDAsaS5qc3hzKShcImdcIixPYmplY3QuYXNzaWduKHt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoMSAxKVwiLHN0cm9rZVdpZHRoOlwiMlwifSx7Y2hpbGRyZW46WygwLGkuanN4KShcImNpcmNsZVwiLHtzdHJva2VPcGFjaXR5OlwiLjVcIixjeDpcIjE4XCIsY3k6XCIxOFwiLHI6XCIxOFwifSksKDAsaS5qc3gpKFwicGF0aFwiLE9iamVjdC5hc3NpZ24oe2Q6XCJNMzYgMThjMC05Ljk0LTguMDYtMTgtMTgtMThcIn0se2NoaWxkcmVuOigwLGkuanN4KShcImFuaW1hdGVUcmFuc2Zvcm1cIix7YXR0cmlidXRlTmFtZTpcInRyYW5zZm9ybVwiLHR5cGU6XCJyb3RhdGVcIixmcm9tOlwiMCAxOCAxOFwiLHRvOlwiMzYwIDE4IDE4XCIsZHVyOlwiMXNcIixyZXBlYXRDb3VudDpcImluZGVmaW5pdGVcIn0pfSkpXX0pKX0pKX0pKX0pKX0pKWBgfSw2OTM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9KSxpPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZyKHQsZSxuKTtyZXR1cm4gbyh0LGUpLHR9LGE9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5PcGVuZmluTG9hZGVyPXZvaWQgMDtjb25zdCBsPW4oNTg5Mykscz1pKG4oNzUxOCkpLGM9big5NjM0KTt0Lk9wZW5maW5Mb2FkZXI9KDAscy5kZWZhdWx0KSgoZT0+e3ZhciB0PWEoZSxbXSk7cmV0dXJuKDAsbC5qc3gpKGMuSWNvbixPYmplY3QuYXNzaWduKHt9LHQse2NoaWxkcmVuOigwLGwuanN4cykoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjEwMCVcIixoZWlnaHQ6XCIxMDAlXCIsdmlld0JveDpcIjAgMCAxOCAxOFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSx7Y2hpbGRyZW46WygwLGwuanN4KSh1LHtkOlwiXFxuICAgICAgICAgICAgTSAxNy4xMjIyIDYuODg3XFxuICAgICAgICAgICAgQyAxNy4wMTQxIDYuNzc4ODcgMTYuODk4IDYuNjc5MTEgMTYuNzc0OCA2LjU4ODU2XFxuICAgICAgICAgICAgTCAxNi43Mjk1IDYuNTU3MTVcXG4gICAgICAgICAgICBDIDE2LjcwMzUgNi41MzkwMyAxNi42NzgxIDYuNTIwMyAxNi42NTE1IDYuNTAyNzhcXG4gICAgICAgICAgICBDIDE2LjYyNSA2LjQ4NTI2IDE2LjU5NDEgNi40NjY1MyAxNi41NjU3IDYuNDQ5MDFcXG4gICAgICAgICAgICBMIDE2LjUyNTkgNi40MjQyNFxcbiAgICAgICAgICAgIEMgMTYuNDkwMiA2LjQwMzEgMTYuNDU0IDYuMzgzMTYgMTYuNDE3NyA2LjM2MzgzXFxuICAgICAgICAgICAgTCAxNi4zOTY2IDYuMzUyMzZcXG4gICAgICAgICAgICBDIDE1Ljk2NzggNi4xMjc0MiAxNS40OTEgNi4wMDk2OCAxNS4wMDY4IDYuMDA5MjJcXG4gICAgICAgICAgICBDIDE0LjIxMDEgNi4wMDg1OCAxMy40NDYzIDUuNjkxNDkgMTIuODgzNCA1LjEyNzcyXFxuICAgICAgICAgICAgQyAxMi4zMjA1IDQuNTYzOTUgMTIuMDA0OCAzLjc5OTcxIDEyLjAwNTYgMy4wMDMxNFxcbiAgICAgICAgICAgIEMgMTIuMDA3OCAxLjc5MDY2IDExLjI3OTIgMC42OTYyNjMgMTAuMTU5NiAwLjIzMDI5M1xcbiAgICAgICAgICAgIEMgOS4wNDAwMiAtMC4yMzU2NzYgNy43NDk5MiAwLjAxODU1OTIgNi44OTA5MyAwLjg3NDQ0MVxcbiAgICAgICAgICAgIEMgNi4wMzE5NCAxLjczMDMyIDUuNzczMjMgMy4wMTkyOCA2LjIzNTQ2IDQuMTQwMjRcXG4gICAgICAgICAgICBDIDYuNjk3NjggNS4yNjExOSA3Ljc4OTggNS45OTMzNyA5LjAwMjUxIDUuOTk1MzJcXG4gICAgICAgICAgICBDIDkuNzk5MjQgNS45OTU5NiAxMC41NjMxIDYuMzEzMDUgMTEuMTI1OSA2Ljg3NjgyXFxuICAgICAgICAgICAgQyAxMS42ODg4IDcuNDQwNTkgMTIuMDA0NiA4LjIwNDg0IDEyLjAwMzggOS4wMDE0XFxuICAgICAgICAgICAgQyAxMi4wMDMxIDkuNzk3OTcgMTEuNjg2IDEwLjU2MTYgMTEuMTIyMSAxMS4xMjQ0XFxuICAgICAgICAgICAgQyAxMC41NTgyIDExLjY4NzEgOS43OTM4IDEyLjAwMjggOC45OTcwOCAxMi4wMDJcXG4gICAgICAgICAgICBDIDguMjAwOTYgMTIuMDAyNyA3LjQzNzI3IDExLjY4NjcgNi44NzQzOCAxMS4xMjM4XFxuICAgICAgICAgICAgQyA2LjMxMTUgMTAuNTYxIDUuOTk1NjQgOS43OTczNiA1Ljk5NjQ0IDkuMDAxNFxcbiAgICAgICAgICAgIEMgNS45OTY0NCA3LjM0NTg2IDQuNjU0MDkgNi4wMDM3OCAyLjk5ODIyIDYuMDAzNzhcXG4gICAgICAgICAgICBDIDEuMzQyMzUgNi4wMDM3OCAwIDcuMzQ1ODYgMCA5LjAwMTRcXG4gICAgICAgICAgICBDIDAgMTAuNjU2OSAxLjM0MjM1IDExLjk5OSAyLjk5ODIyIDExLjk5OVxcbiAgICAgICAgICAgIEMgNC42NTQwOSAxMS45OTkgNS45OTY0NCAxMy4zNDExIDUuOTk2NDQgMTQuOTk2NlxcbiAgICAgICAgICAgIEMgNS45OTY0NCAxNi42NTUzIDcuMzQxMzYgMTggOS4wMDA0IDE4XFxuICAgICAgICAgICAgQyAxMC42NTk0IDE4IDEyLjAwNDQgMTYuNjU1MyAxMi4wMDQ0IDE0Ljk5NjZcXG4gICAgICAgICAgICBDIDEyLjAwNDQgMTMuMzQxMSAxMy4zNDY3IDExLjk5OSAxNS4wMDI2IDExLjk5OVxcbiAgICAgICAgICAgIEMgMTUuNTM3OSAxMS45OTk0IDE2LjA2MzUgMTEuODU2MyAxNi41MjQ3IDExLjU4NDZcXG4gICAgICAgICAgICBDIDE2LjU2NDUgMTEuNTYxIDE2LjYwMzggMTEuNTM2MyAxNi42NDU1IDExLjUxMDlcXG4gICAgICAgICAgICBMIDE2LjY1NCAxMS41MDU1XFxuICAgICAgICAgICAgQyAxNi42OTAyIDExLjQ4MTMgMTYuNzI2NSAxMS40NTU5IDE2Ljc2MTUgMTEuNDMwNVxcbiAgICAgICAgICAgIEwgMTYuNzc3MiAxMS40MTk3XFxuICAgICAgICAgICAgQyAxNi44MDg2IDExLjM5NjcgMTYuODM3NiAxMS4zNzIgMTYuODcwOSAxMS4zNDcyXFxuICAgICAgICAgICAgTCAxNi44OTc1IDExLjMyNjZcXG4gICAgICAgICAgICBDIDE2LjkyNjUgMTEuMzAzMSAxNi45NTQzIDExLjI3ODMgMTYuOTgyNyAxMS4yNTM1XFxuICAgICAgICAgICAgTCAxNy4wMTM1IDExLjIyN1xcbiAgICAgICAgICAgIEMgMTcuMDQ5NyAxMS4xOTQzIDE3LjA4NTQgMTEuMTYwNSAxNy4xMjA0IDExLjEyNTVcXG4gICAgICAgICAgICBMIDE3LjEyNTkgMTEuMTIwNlxcbiAgICAgICAgICAgIEMgMTcuMjU1MyAxMC45OTA2IDE3LjM3MjYgMTAuODQ5MSAxNy40NzYzIDEwLjY5NzhcXG4gICAgICAgICAgICBDIDE3LjQ5ODkgMTAuNjY1MSAxNy41MjA2IDEwLjYzMjEgMTcuNTQxNiAxMC41OTg3XFxuICAgICAgICAgICAgQyAxOC4yODQzIDkuNDE1IDE4LjExMDQgNy44NzUyIDE3LjEyMjIgNi44ODdaXFxuICAgICAgICAgICAgXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSksKDAsbC5qc3gpKGYse2N4OlwiOVwiLGN5OlwiM1wiLHI6XCIyLjlcIixmaWxsOlwiY3VycmVudENvbG9yXCIsYW5nbGU6MH0pLCgwLGwuanN4KShmLHtjeDpcIjE1XCIsY3k6XCI5XCIscjpcIjIuNzVcIixmaWxsOlwiY3VycmVudENvbG9yXCIsYW5nbGU6LTkwfSksKDAsbC5qc3gpKGYse2N4OlwiOVwiLGN5OlwiMTVcIixyOlwiMi41XCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLGFuZ2xlOi0xODB9KSwoMCxsLmpzeCkoZix7Y3g6XCIzXCIsY3k6XCI5XCIscjpcIjIuMjVcIixmaWxsOlwiY3VycmVudENvbG9yXCIsYW5nbGU6LTI3MH0pXX0pKX0pKX0pKWBgO2NvbnN0IHU9cy5kZWZhdWx0LnBhdGhgXG4gIEBrZXlmcmFtZXMgbG9nb0FuaW1hdGlvbiB7XG4gICAgMCUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgMjUlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDM1JSB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICA2MCUge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gICAgNzUlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICBhbmltYXRpb246IGxvZ29BbmltYXRpb24gMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG5gLGY9cy5kZWZhdWx0LmNpcmNsZWBcbiAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICBhbmltYXRpb246ICR7KHthbmdsZTplfSk9PihlPT5zLmtleWZyYW1lc2BcbiAgICAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICAgIDI1JSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDMwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgke2V9ZGVnKTtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDcwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMzYwZGVnKTtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDc1JSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMzYwZGVnKTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTM2MGRlZyk7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbmApKGUpfSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbmB9LDM1ODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlN0eWxlZElucHV0RmllbGQ9dC5CYXNlSW5wdXQ9dm9pZCAwO2NvbnN0IGk9big1ODkzKSxhPW4oNjY4OSksbD1vKG4oNzUxOCkpLHM9bigxMzM1KSxjPW4oOTUwNyksdT1uKDc3NjkpLGY9big5NjM0KTt0LkJhc2VJbnB1dD0oMCxhLmZvcndhcmRSZWYpKCgoZSxuKT0+e3ZhcntjbGFzc05hbWU6byxyZW5kZXJJbnB1dDphLG1lc3NhZ2U6bCxsYWJlbDpzLHN0YXR1czpjLG5hbWU6dSxpY29uOmYsdHlwZTpDPVwidGV4dFwifT1lLG09cihlLFtcImNsYXNzTmFtZVwiLFwicmVuZGVySW5wdXRcIixcIm1lc3NhZ2VcIixcImxhYmVsXCIsXCJzdGF0dXNcIixcIm5hbWVcIixcImljb25cIixcInR5cGVcIl0pO2NvbnN0IHk9XCJjaGVja2JveFwiPT09Q3x8XCJyYWRpb1wiPT09QztyZXR1cm4oMCxpLmpzeHMpKGcsT2JqZWN0LmFzc2lnbih7ZmxleERpcmVjdGlvbjpcImNvbHVtblwiLGFsaWduSXRlbXM6XCJmbGV4LXN0YXJ0XCJ9LHtjaGlsZHJlbjpbKDAsaS5qc3hzKShkLE9iamVjdC5hc3NpZ24oe2lubGluZTp5fSx7Y2hpbGRyZW46WyEhcyYmKDAsaS5qc3gpKGgsT2JqZWN0LmFzc2lnbih7YXM6XCJsYWJlbFwiLGh0bWxGb3I6dSx3ZWlnaHQ6XCJib2xkXCJ9LHtjaGlsZHJlbjpzfSkpLCEhZiYmKDAsaS5qc3gpKHAse2ljb246Zn0pLCEhYSYmYShPYmplY3QuYXNzaWduKHtuYW1lOnUsc3RhdHVzOmMsdHlwZTpDfSxtKSksIWEmJigwLGkuanN4KSh0LlN0eWxlZElucHV0RmllbGQsT2JqZWN0LmFzc2lnbih7Y2xhc3NOYW1lOm8sbmFtZTp1LHN0YXR1czpjLHR5cGU6Q30sbSx7cmVmOm59KSldfSkpLCEhbCYmKDAsaS5qc3gpKHYsT2JqZWN0LmFzc2lnbih7c3RhdHVzOmN9LHtjaGlsZHJlbjpsfSkpXX0pKX0pKSx0LkJhc2VJbnB1dC5kaXNwbGF5TmFtZT1cIkJhc2VJbnB1dFwiO2NvbnN0IGQ9KDAsbC5kZWZhdWx0KShzLkJveClgXG4gIGFsaWduLWl0ZW1zOiAkeyh7aW5saW5lOmV9KT0+ZT9cImNlbnRlclwiOlwiZmxleC1zdGFydFwifTtcbiAgZmxleC1kaXJlY3Rpb246ICR7KHtpbmxpbmU6ZX0pPT5lP1wicm93LXJldmVyc2VcIjpcImNvbHVtblwifTtcbiAganVzdGlmeS1jb250ZW50OiAkeyh7aW5saW5lOmV9KT0+ZT9cImZsZXgtZW5kXCI6XCJmbGV4LXN0YXJ0XCJ9O1xuICB3aWR0aDogMTAwJTtcblxuICAkeyh7aW5saW5lOmUsdGhlbWU6dH0pPT5lJiZgXFxuICAgICR7aH0ge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAke3QucHguc21hbGx9O1xcbiAgICAgIGZvbnQtd2VpZ2h0OiAke3QuZm9udFdlaWdodC5ub3JtYWx9O1xcbiAgICB9XFxuICBgfVxuYCxwPSgwLGwuZGVmYXVsdCkoZi5JY29uKWBcbiAgbWFyZ2luLWxlZnQ6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgbWluLXdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnNtYWxsfTtcbiAgbWluLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5zbWFsbH07XG5gLGg9KDAsbC5kZWZhdWx0KSh1LlRleHQpYFxuICBtYXJnaW4tYm90dG9tOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG5gLHY9KDAsbC5kZWZhdWx0KSh1LlRleHQpYFxuICBjb2xvcjogJHsoe3RoZW1lOmUsc3RhdHVzOnR9KT0+KDAsYy5nZXRTdGF0dXNDb2xvcikoZSx0LFwidGV4dEhlbHBcIil9O1xuICBtYXJnaW4tdG9wOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbmAsZz0oMCxsLmRlZmF1bHQpKHMuQm94KWBcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbmA7dC5TdHlsZWRJbnB1dEZpZWxkPWwuZGVmYXVsdC5pbnB1dGBcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ1fTtcbiAgYm9yZGVyOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ2fTtcbiAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZSxzdGF0dXM6dH0pPT4oMCxjLmdldFN0YXR1c0NvbG9yKShlLHQsXCJpbnB1dEJvcmRlclwiKX07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgYm94LXNoYWRvdzogJHsoe3RoZW1lOmV9KT0+ZS5zaGFkb3cuYmFzZX07XG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRDb2xvcn07XG4gIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH0gJHtlLnB4LmJhc2V9YH07XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pO1xuICB3aWR0aDogMTAwJTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmUsc3RhdHVzOnR9KT0+KDAsYy5nZXRTdGF0dXNDb2xvcikoZSx0LFwiaW5wdXRGb2N1c2VkXCIpfTtcbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIH1cblxuICAmOmRpc2FibGVkOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgaGFjayB0byBpbnZlcnQgdGhlIGNhbGVuZGFyIGljb24uIFRoaXMgb25seSB3b3JrcyBpbiBkYXJrIG1vZGUuXG4gICAqIFVudGlsIGVpdGhlciBsaWdodCBtb2RlIGlzIGEgdGhpbmcgb3Igd2UgZ2V0IGEgZGF0ZXRpbWUgcGlja2VyIGRlc2lnbiwgdGhpcyB3aWxsIGRvLlxuICAgKi9cbiAgOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3Ige1xuICAgIGZpbHRlcjogaW52ZXJ0KDEpO1xuICB9XG5gfSw4ODc4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigzNTgpLHQpfSwxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksaT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fSxhPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LGw9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DaGVja2JveD12b2lkIDA7Y29uc3Qgcz1uKDU4OTMpLGM9aShuKDY2ODkpKSx1PWwobig3NTE4KSksZj1uKDg4NzgpLGQ9big5NjM0KSxwPW4oOTUwNyk7dC5DaGVja2JveD1jLmZvcndhcmRSZWYoKChlLHQpPT57dmFye3N0YXR1czpufT1lLHI9YShlLFtcInN0YXR1c1wiXSk7cmV0dXJuKDAscy5qc3gpKGYuQmFzZUlucHV0LE9iamVjdC5hc3NpZ24oe30scix7dHlwZTpcImNoZWNrYm94XCIsc3RhdHVzOm4scmVuZGVySW5wdXQ6ZT0+e3ZhciByPWEoZSxbXSk7cmV0dXJuKDAscy5qc3hzKShoLHtjaGlsZHJlbjpbKDAscy5qc3gpKEMsT2JqZWN0LmFzc2lnbih7cmVmOnQsaWQ6ci5uYW1lLHR5cGU6XCJjaGVja2JveFwifSxyKSksKDAscy5qc3gpKHYsT2JqZWN0LmFzc2lnbih7c3RhdHVzOm59LHtjaGlsZHJlbjooMCxzLmpzeCkoZyx7fSl9KSldfSl9fSkpfSkpLHQuQ2hlY2tib3guZGlzcGxheU5hbWU9XCJDaGVja2JveFwiO2NvbnN0IGg9dS5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gLHY9dS5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgd2lkdGg6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmUsc3RhdHVzOnR9KT0+KDAscC5nZXRTdGF0dXNDb2xvcikoZSx0LFwidGV4dERlZmF1bHRcIil9O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCxnPSgwLHUuZGVmYXVsdCkoZC5JY29uKS5hdHRycyh7aWNvbjpcIkNoZWNrSWNvblwiLHNpemU6XCJzbWFsbFwifSlgXG4gIG9wYWNpdHk6IDA7XG5gLEM9dS5kZWZhdWx0LmlucHV0YFxuICBvcGFjaXR5OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAmOmNoZWNrZWQgKyAke3YrXCIgXCIrZ30ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAmOmhvdmVyICsgJHt2fSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDFweCAxcHggJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Rm9jdXNlZH07XG4gIH1cblxuICAmOmZvY3VzICsgJHt2fSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDFweCAxcHggJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Rm9jdXNlZH07XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG5cbiAgJjpkaXNhYmxlZCArICR7dn0ge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxuYH0sODA1MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMSksdCl9LDkwMjI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9KSxpPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZyKHQsZSxuKTtyZXR1cm4gbyh0LGUpLHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2hlY2tib3hHcm91cD12b2lkIDA7Y29uc3QgYT1uKDU4OTMpLGw9aShuKDY2ODkpKSxzPWkobig3NTE4KSksYz1uKDEzMzUpLHU9big3NzY5KSxmPW4oMSk7dC5DaGVja2JveEdyb3VwPSh7ZGlzYWJsZWQ6ZSxnYXA6dD1cInNtYWxsXCIsbWVzc2FnZTpuLG5hbWU6cixjaGlsZHJlbjpvfSk9PigwLGEuanN4cykoZCx7Y2hpbGRyZW46WygwLGEuanN4KShwLE9iamVjdC5hc3NpZ24oe2dhcDp0fSx7Y2hpbGRyZW46bC5DaGlsZHJlbi5tYXAobywodD0+e2NvbnN0IG49dDtyZXR1cm4gbi50eXBlPT09Zi5DaGVja2JveD9sLmNsb25lRWxlbWVudChuLHtuYW1lOnIsZGlzYWJsZWQ6ZX0pOm59KSl9KSksbj8oMCxhLmpzeCkoaCxPYmplY3QuYXNzaWduKHtkaXNhYmxlZDplfSx7Y2hpbGRyZW46bn0pKTpudWxsXX0pO2NvbnN0IGQ9KDAscy5kZWZhdWx0KShjLkJveClgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiBtYXgtY29udGVudDtcbmAscD0oMCxzLmRlZmF1bHQpKGMuQm94KWBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG5gLGg9KDAscy5kZWZhdWx0KSh1LlRleHQpYFxuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0UGxhY2Vob2xkZXJ9O1xuICBtYXJnaW4tdG9wOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuXG4gICR7KHtkaXNhYmxlZDplfSk9PmUmJnMuY3NzYFxuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgICBgfVxuYH0sNDE2OTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oOTAyMiksdCl9LDkzNjg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5EYXRlSW5wdXQ9dm9pZCAwO2NvbnN0IGk9big1ODkzKSxhPW4oNjY4OSksbD1vKG4oNzUxOCkpLHM9big5NjM0KSxjPW4oMTMzNSksdT1uKDk1MDcpLGY9big4ODc4KTt0LkRhdGVJbnB1dD0oMCxhLmZvcndhcmRSZWYpKCgoZSx0KT0+e3Zhcnt2YWx1ZTpuPVwiXCIsdHlwZTpvPVwiZGF0ZVwiLGV4cGFuZGVkOmw9ITEsb25DaGFuZ2U6c309ZSxjPXIoZSxbXCJ2YWx1ZVwiLFwidHlwZVwiLFwiZXhwYW5kZWRcIixcIm9uQ2hhbmdlXCJdKTtjb25zdFt1LHBdPSgwLGEudXNlU3RhdGUpKG4pO3JldHVybigwLGEudXNlRWZmZWN0KSgoKCk9PnAobikpLFtdKSwoMCxpLmpzeCkoZi5CYXNlSW5wdXQsT2JqZWN0LmFzc2lnbih7dHlwZTpvfSxjLHtyZW5kZXJJbnB1dDplPT57dmFyIG49cihlLFtdKTtyZXR1cm4oMCxpLmpzeCkoZCxPYmplY3QuYXNzaWduKHtyZWY6dCx0eXBlOm8sb25DaGFuZ2U6ZT0+e2NvbnN0e3ZhbHVlOnR9PWUudGFyZ2V0O3QmJnAodCksbnVsbD09c3x8cyhlKX0sdmFsdWU6dSxleHBhbmRlZDpsfSxuKSl9fSkpfSkpLHQuRGF0ZUlucHV0LmRpc3BsYXlOYW1lPVwiRGF0ZUlucHV0XCI7Y29uc3QgZD0oMCxhLmZvcndhcmRSZWYpKCgoZSx0KT0+e3Zhcnt0eXBlOm4sZXhwYW5kZWQ6byxvbkV4cGFuZDphfT1lLGw9cihlLFtcInR5cGVcIixcImV4cGFuZGVkXCIsXCJvbkV4cGFuZFwiXSk7cmV0dXJuKDAsaS5qc3hzKShwLHtjaGlsZHJlbjpbKDAsaS5qc3gpKHYse2NoaWxkcmVuOigwLGkuanN4KShzLkljb24se2ljb246XCJ0aW1lXCI9PT1uP1wiQ2xvY2tJY29uXCI6XCJDYWxlbmRhckljb25cIn0pfSksKDAsaS5qc3gpKEMsT2JqZWN0LmFzc2lnbih7cmVmOnQsdHlwZTpuLG9uS2V5RG93bjplPT57XCIgXCI9PT1lLmtleSYmZS5wcmV2ZW50RGVmYXVsdCgpfX0sbCkpLCgwLGkuanN4KShnLE9iamVjdC5hc3NpZ24oe2ZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixkaXNhYmxlZDpsLmRpc2FibGVkLG9uQ2xpY2s6YX0se2NoaWxkcmVuOigwLGkuanN4KShzLkljb24se2ljb246bz9cIkNoZXZyb25VcEljb25cIjpcIkNoZXZyb25Eb3duSWNvblwifSl9KSldfSl9KSk7ZC5kaXNwbGF5TmFtZT1cIlN0eWxlZERhdGVJbnB1dFwiO2NvbnN0IHA9bC5kZWZhdWx0LmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gIHdpZHRoOiAxMDAlO1xuYCxoPSgwLGwuZGVmYXVsdCkoYy5Cb3gpYFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAycHgpO1xuYCx2PSgwLGwuZGVmYXVsdCkoaClgXG4gIGxlZnQ6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAsZz0oMCxsLmRlZmF1bHQpKGgpYFxuICByaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIHBvaW50ZXItZXZlbnRzOiAkeyh7ZGlzYWJsZWQ6ZX0pPT5lP1wibm9uZVwiOnZvaWQgMH07XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ2fTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbmAsQz0oMCxsLmRlZmF1bHQpKGYuU3R5bGVkSW5wdXRGaWVsZClgXG4gIGFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgZm9udC1mYW1pbHk6ICR7dS5Gb250U3RhY2t9O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4Lnh4eGxhcmdlfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4Lnh4eGxhcmdlfTtcbiAgOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuICA6Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5gfSw5NjU0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig5MzY4KSx0KX0sMTk3ODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNjg4NCksdCl9LDY4ODQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5OdW1iZXJJbnB1dD12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGE9big2Njg5KSxsPW8obig3NTE4KSkscz1uKDY2MDYpLGM9big5NjM0KSx1PW4oMTMzNSksZj1uKDg4NzgpO3ZhciBkOyFmdW5jdGlvbihlKXtlW2UuVXA9MV09XCJVcFwiLGVbZS5Eb3duPS0xXT1cIkRvd25cIn0oZHx8KGQ9e30pKSx0Lk51bWJlcklucHV0PSgwLGEuZm9yd2FyZFJlZikoKChlLHQpPT57dmFye21pbjpuLG1heDpvLG9uQ2hhbmdlOmwsc3RlcDpjPTEsdmFsdWU6dX09ZSxoPXIoZSxbXCJtaW5cIixcIm1heFwiLFwib25DaGFuZ2VcIixcInN0ZXBcIixcInZhbHVlXCJdKTtjb25zdCB2PU51bWJlcihjKSxbZyxDXT0oMCxhLnVzZVN0YXRlKShOdW1iZXIodSkpOygwLGEudXNlRWZmZWN0KSgoKCk9PkMoTnVtYmVyKHUpKSksW10pO2NvbnN0IG09ZT0+e2NvbnN0IHQ9Zz9OdW1iZXIoZyk6MCxyPW4/TnVtYmVyKG4pOnZvaWQgMCxpPW8/TnVtYmVyKG8pOnZvaWQgMCxhPSgwLHMuY2xhbXApKHQrdiplLHIsaSk7QyhhKX07cmV0dXJuKDAsaS5qc3gpKGYuQmFzZUlucHV0LE9iamVjdC5hc3NpZ24oe3R5cGU6XCJudW1iZXJcIn0saCx7cmVuZGVySW5wdXQ6ZT0+e3ZhciBhPXIoZSxbXSk7cmV0dXJuKDAsaS5qc3gpKHAsT2JqZWN0LmFzc2lnbih7cmVmOnQsb25JbmNyZW1lbnQ6KCk9Pm0oZC5VcCksb25EZWNyZW1lbnQ6KCk9Pm0oZC5Eb3duKSxvbkNoYW5nZTplPT57Y29uc3R7dmFsdWU6dH09ZS50YXJnZXQ7dCYmQyhOdW1iZXIodCkpLGwmJmwoZSl9LG1pbjpuLG1heDpvLHN0ZXA6Y30sYSx7dmFsdWU6Z30pKX19KSl9KSksdC5OdW1iZXJJbnB1dC5kaXNwbGF5TmFtZT1cIk51bWJlcklucHV0XCI7Y29uc3QgcD0oMCxhLmZvcndhcmRSZWYpKCgoZSx0KT0+e3ZhcntvbkluY3JlbWVudDpuLG9uRGVjcmVtZW50Om99PWUsYT1yKGUsW1wib25JbmNyZW1lbnRcIixcIm9uRGVjcmVtZW50XCJdKTtyZXR1cm4oMCxpLmpzeHMpKGgse2NoaWxkcmVuOlsoMCxpLmpzeCkoQyxPYmplY3QuYXNzaWduKHtyZWY6dH0sYSkpLCgwLGkuanN4cykodixPYmplY3QuYXNzaWduKHtmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsZGlzYWJsZWQ6YS5kaXNhYmxlZH0se2NoaWxkcmVuOlsoMCxpLmpzeCkoZyxPYmplY3QuYXNzaWduKHtvbkNsaWNrOm4sZGlzYWJsZWQ6YS5kaXNhYmxlZH0se2NoaWxkcmVuOigwLGkuanN4KShjLkljb24se2ljb246XCJUcmlhbmdsZVVwSWNvblwifSl9KSksKDAsaS5qc3gpKGcsT2JqZWN0LmFzc2lnbih7b25DbGljazpvLGRpc2FibGVkOmEuZGlzYWJsZWR9LHtjaGlsZHJlbjooMCxpLmpzeCkoYy5JY29uLHtpY29uOlwiVHJpYW5nbGVEb3duSWNvblwifSl9KSldfSkpXX0pfSkpO3AuZGlzcGxheU5hbWU9XCJTdHlsZWROdW1iZXJJbnB1dFwiO2NvbnN0IGg9bC5kZWZhdWx0LmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gIHdpZHRoOiAxMDAlO1xuYCx2PSgwLGwuZGVmYXVsdCkodS5Cb3gpYFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAxcHg7XG4gIHRvcDogMXB4O1xuICBnYXA6IDFweDtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAycHgpO1xuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5gMCAke2UucmFkaXVzLnNtYWxsfSAke2UucmFkaXVzLnNtYWxsfSAwYH07XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgcG9pbnRlci1ldmVudHM6ICR7KHtkaXNhYmxlZDplfSk9PmU/XCJub25lXCI6dm9pZCAwfTtcbmAsZz0oMCxsLmRlZmF1bHQpKHUuQm94KWBcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gIHBhZGRpbmc6IDAgJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgaGVpZ2h0OiA1MCU7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gIGNvbG9yOiAkeyh7ZGlzYWJsZWQ6ZSx0aGVtZTp0fSk9PmU/dC5wYWxldHRlLnRleHRIZWxwOnQucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Rm9jdXNlZH07XG4gIH1cblxuICAmOmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Q29sb3J9O1xuICB9XG5gLEM9KDAsbC5kZWZhdWx0KShmLlN0eWxlZElucHV0RmllbGQpYFxuICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgueHh4bGFyZ2V9O1xuXG4gIDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbiAgOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuYH0sNTIxNTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMjI1NSksdCl9LDIyNTU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9KSxpPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZyKHQsZSxuKTtyZXR1cm4gbyh0LGUpLHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuUmFkaW9Hcm91cD12b2lkIDA7Y29uc3QgYT1uKDU4OTMpLGw9aShuKDY2ODkpKSxzPWkobig3NTE4KSksYz1uKDEzMzUpLHU9big3NzY5KSxmPW4oMjU2NSk7dC5SYWRpb0dyb3VwPSh7ZGlyZWN0aW9uOmU9XCJjb2x1bW5cIixkaXNhYmxlZDp0LGxhYmVsU2lkZTpuPVwicmlnaHRcIixnYXA6cj1cInNtYWxsXCIsbWVzc2FnZTpvLG5hbWU6aSxjaGlsZHJlbjpzfSk9PigwLGEuanN4cykoZCx7Y2hpbGRyZW46WygwLGEuanN4KShwLE9iamVjdC5hc3NpZ24oe2RpcmVjdGlvbjplLGxhYmVsU2lkZTpuLGdhcDpyfSx7Y2hpbGRyZW46bC5DaGlsZHJlbi5tYXAocywoZT0+e2NvbnN0IHI9ZTtyZXR1cm4gci50eXBlPT09Zi5SYWRpb0lucHV0P2wuY2xvbmVFbGVtZW50KHIse25hbWU6aSxsYWJlbFNpZGU6bixkaXNhYmxlZDp0fSk6cn0pKX0pKSxvPygwLGEuanN4KShoLE9iamVjdC5hc3NpZ24oe2Rpc2FibGVkOnR9LHtjaGlsZHJlbjpvfSkpOm51bGxdfSk7Y29uc3QgZD0oMCxzLmRlZmF1bHQpKGMuQm94KWBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IG1heC1jb250ZW50O1xuYCxwPSgwLHMuZGVmYXVsdCkoYy5Cb3gpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogJHtlPT5lLmRpcmVjdGlvbn07XG4gIGFsaWduLWl0ZW1zOiAke2U9Pntzd2l0Y2goZS5sYWJlbFNpZGUpe2Nhc2VcImxlZnRcIjpyZXR1cm5cImVuZFwiO2Nhc2VcInJpZ2h0XCI6cmV0dXJuXCJzdGFydFwiO2RlZmF1bHQ6cmV0dXJuXCJjZW50ZXJcIn19fTtcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xuYCxoPSgwLHMuZGVmYXVsdCkodS5UZXh0KWBcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dFBsYWNlaG9sZGVyfTtcbiAgbWFyZ2luLXRvcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcblxuICAkeyh7ZGlzYWJsZWQ6ZX0pPT5lJiZzLmNzc2BcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gICAgYH1cbmB9LDM2NDE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDI1NjUpLHQpfSwyNTY1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksaT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fSxhPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuUmFkaW9JbnB1dD12b2lkIDA7Y29uc3QgbD1uKDU4OTMpLHM9big3NzY5KSxjPWkobig2Njg5KSksdT1pKG4oNzUxOCkpLGY9bigxMzM1KSxkPW4oOTYzNCk7dC5SYWRpb0lucHV0PWMuZm9yd2FyZFJlZigoKGUsdCk9Pnt2YXJ7ZGlzYWJsZWQ6bixpZDpyLGxhYmVsOm8sbGFiZWxTaWRlOmksaWNvbjpzfT1lLGM9YShlLFtcImRpc2FibGVkXCIsXCJpZFwiLFwibGFiZWxcIixcImxhYmVsU2lkZVwiLFwiaWNvblwiXSk7cmV0dXJuKDAsbC5qc3gpKHAse2NoaWxkcmVuOigwLGwuanN4cykoZyxPYmplY3QuYXNzaWduKHthczpcImxhYmVsXCIsaHRtbEZvcjpyLGxhYmVsU2lkZTppLGRpc2FibGVkOm59LHtjaGlsZHJlbjpbKDAsbC5qc3gpKHYsT2JqZWN0LmFzc2lnbih7cmVmOnQsdHlwZTpcInJhZGlvXCIsZGlzYWJsZWQ6bn0sYykpLCgwLGwuanN4KShoLHt9KSwhIXMmJigwLGwuanN4KShkLkljb24se2ljb246c30pLG98fFwiXCJdfSkpfSl9KSksdC5SYWRpb0lucHV0LmRpc3BsYXlOYW1lPVwiUmFkaW9JbnB1dFwiO2NvbnN0IHA9KDAsdS5kZWZhdWx0KShmLkJveClgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5gLGg9dS5kZWZhdWx0LmRpdmBcbiAgd2lkdGg6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIGhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDJweDtcbiAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcblxuICBpbnB1dDpjaGVja2VkIH4gJjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gICAgd2lkdGg6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgICBoZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgfVxuXG4gIGlucHV0OmRpc2FibGVkIH4gJiB7XG4gICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gIH1cblxuICBpbnB1dDpkaXNhYmxlZCB+ICY6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgfVxuYCx2PXUuZGVmYXVsdC5pbnB1dGBcbiAgb3BhY2l0eTogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICB9XG5gLGc9KDAsdS5kZWZhdWx0KShzLlRleHQpYFxuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiAkeyh7bGFiZWxTaWRlOmV9KT0+e3N3aXRjaChlfHxcInJpZ2h0XCIpe2Nhc2VcImxlZnRcIjpyZXR1cm5cInJvdy1yZXZlcnNlXCI7Y2FzZVwicmlnaHRcIjpyZXR1cm5cInJvd1wiO2Nhc2VcInRvcFwiOnJldHVyblwiY29sdW1uLXJldmVyc2VcIjtjYXNlXCJib3R0b21cIjpyZXR1cm5cImNvbHVtblwifX19O1xuICBnYXA6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgJHsoe2Rpc2FibGVkOmV9KT0+ZT91LmNzc2BcbiAgICAgICAgICAmIHtcbiAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICAgICAgICBgOm51bGx9XG5gfSw4NTEwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig3NDI5KSx0KX0sNzQyOTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5SYXdJbnB1dD12b2lkIDA7Y29uc3Qgbz1yKG4oNzUxOCkpO3QuUmF3SW5wdXQ9by5kZWZhdWx0LmlucHV0YGAsdC5SYXdJbnB1dC5kaXNwbGF5TmFtZT1cIlJhd0lucHV0XCJ9LDMxMTk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDc5OSksdCl9LDc5OTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5UZXh0QXJlYT12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpLGk9big2Njg5KSxhPXIobig3NTE4KSksbD1uKDk1MDcpLHM9big5NTA3KSxjPW4oOTUwNyk7dC5UZXh0QXJlYT0oMCxpLmZvcndhcmRSZWYpKCgoZSx0KT0+KDAsby5qc3gpKHUsT2JqZWN0LmFzc2lnbih7cmVmOnR9LGUse29uQ2hhbmdlOmUub25DaGFuZ2V9KSkpKSx0LlRleHRBcmVhLmRpc3BsYXlOYW1lPVwiVGV4dEFyZWFcIjtjb25zdCB1PWEuZGVmYXVsdC50ZXh0YXJlYWBcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgYm9yZGVyOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Qm9yZGVyfTtcbiAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZSxzdGF0dXM6dH0pPT4oMCxjLmdldFN0YXR1c0NvbG9yKShlLHQsXCJpbnB1dEJvcmRlclwiKX07XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHJlc2l6ZTogbm9uZTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgJHtsLk1peGlucy5zY3JvbGxiYXIuc21hbGx9O1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Q29sb3J9O1xuICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmxpbmVIZWlnaHQudGV4dH07XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRXZWlnaHQubm9ybWFsfTtcbiAgZm9udC1mYW1pbHk6ICR7cy5Gb250U3RhY2t9O1xuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfSAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfSAwcHhcbiAgICAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmUsc3RhdHVzOnR9KT0+KDAsYy5nZXRTdGF0dXNDb2xvcikoZSx0LFwiaW5wdXRGb2N1c2VkXCIpfTtcbiAgfVxuXG4gICY6ZGlzYWJsZWQ6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICB9XG5gfSw4OTUxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigyMzUyKSx0KX0sMjM1MjooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5UZXh0SW5wdXQ9dm9pZCAwO2NvbnN0IHI9big1ODkzKSxvPW4oNjY4OSksaT1uKDg4NzgpO3QuVGV4dElucHV0PSgwLG8uZm9yd2FyZFJlZikoKChlLHQpPT4oMCxyLmpzeCkoaS5CYXNlSW5wdXQsT2JqZWN0LmFzc2lnbih7cmVmOnQsdHlwZTpcInRleHRcIn0sZSkpKSksdC5UZXh0SW5wdXQuZGlzcGxheU5hbWU9XCJUZXh0SW5wdXRcIn0sMzMzOTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Cb3g9dm9pZCAwO2NvbnN0IG89cihuKDc1MTgpKSxpPW4oODczMiksYT1uKDU0NTkpLGw9ezE6YS5QYWxldHRlLmJhY2tncm91bmQxLDI6YS5QYWxldHRlLmJhY2tncm91bmQyLDM6YS5QYWxldHRlLmJhY2tncm91bmQzLDQ6YS5QYWxldHRlLmJhY2tncm91bmQ0LDU6YS5QYWxldHRlLmJhY2tncm91bmQ1LDY6YS5QYWxldHRlLmJhY2tncm91bmQ2fTt0LkJveD1vLmRlZmF1bHQuZGl2YFxuICAvKipcbiAgICogU3R5bGUgU2Nyb2xsYmFyIGZvciBCb3hlcyB3aXRoIG92ZXJmbG93XG4gICAqL1xuICAke2kuTWl4aW5zLnNjcm9sbGJhci5iYXNlfVxuXG4gIGRpc3BsYXk6ICR7KHtkaXNwbGF5OmU9XCJmbGV4XCJ9KT0+ZX07XG4gIGZsZXgtZGlyZWN0aW9uOiAkeyh7ZmxleERpcmVjdGlvbjplPVwicm93XCJ9KT0+ZX07XG4gIGZsZXgtd3JhcDogJHsoe2ZsZXhXcmFwOmU9XCJub3dyYXBcIn0pPT5lfTtcbiAgYWxpZ24taXRlbXM6ICR7KHthbGlnbkl0ZW1zOmV9KT0+ZX07XG4gIGp1c3RpZnktY29udGVudDogJHsoe2p1c3RpZnlDb250ZW50OmV9KT0+ZX07XG4gIGdhcDogJHsoe3RoZW1lOmUsZ2FwOnR9KT0+dCYmZS5weFt0XX07XG4gIGFsaWduLXNlbGY6ICR7KHthbGlnblNlbGY6ZX0pPT5lfTtcbiAgZmxleC1iYXNpczogJHsoe2ZsZXhCYXNpczplfSk9PmV9O1xuICBmbGV4LWdyb3c6ICR7KHtmbGV4R3JvdzplfSk9PmV9O1xuICBmbGV4LXNocmluazogJHsoe2ZsZXhTaHJpbms6ZX0pPT5lfTtcbiAgb3JkZXI6ICR7KHtvcmRlcjplfSk9PmV9O1xuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZSxwYWRkaW5nOnR9KT0+dCYmZS5weFt0XX07XG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplLGJhY2tncm91bmQ6dH0pPT50JiZlLnBhbGV0dGVbbFt0XV19O1xuYCx0LkJveC5kaXNwbGF5TmFtZT1cIkJveFwifSwxMzM1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigzMzM5KSx0KX0sNjcxMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkRlZmluaXRpb25MaXN0PXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1vKG4oNzUxOCkpO3QuRGVmaW5pdGlvbkxpc3Q9ZT0+e3ZhcntkZWZpbml0aW9uczp0fT1lLG49cihlLFtcImRlZmluaXRpb25zXCJdKTtyZXR1cm4oMCxpLmpzeCkocyxPYmplY3QuYXNzaWduKHt9LG4se3JvbGU6XCJsaXN0XCJ9LHtjaGlsZHJlbjooQXJyYXkuaXNBcnJheSh0KT90OkFycmF5LmZyb20odCkpLm1hcCgoKFtlLHRdLG4pPT4oMCxpLmpzeHMpKGwsT2JqZWN0LmFzc2lnbih7cm9sZTpcImxpc3RpdGVtXCJ9LHtjaGlsZHJlbjpbKDAsaS5qc3gpKGMsT2JqZWN0LmFzc2lnbih7aWQ6YHRlcm0ke259YH0se2NoaWxkcmVuOmV9KSksKDAsaS5qc3gpKHUsT2JqZWN0LmFzc2lnbih7XCJhcmlhLWxhYmVsbGVkYnlcIjpgdGVybSR7bn1gfSx7Y2hpbGRyZW46dH0pKV19KSxgJHtlfS0ke259YCkpKX0pKX07Y29uc3QgbD1hLmRlZmF1bHQuZGl2YFxuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAzZnI7XG5gLHM9YS5kZWZhdWx0LmRsYFxuICBnYXA6ICR7KHt0aGVtZTplfSk9PmAwICR7ZS5weC5sYXJnZX1gfTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH0gJHtlLnB4LmJhc2V9YH07XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG5gLGM9YS5kZWZhdWx0LmR0YFxuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHRIZWxwfTtcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLnNtYWxsfTtcbiAgZm9udC13ZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuZm9udFdlaWdodC5ub3JtYWx9O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgcGFkZGluZy1ib3R0b206ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuYCx1PWEuZGVmYXVsdC5kZGBcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5zbWFsbH07XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG5gfSw1Mzc3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig2NzEwKSx0KX0sOTQzMTooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5HbG9iYWxTdHlsZXM9dm9pZCAwO2NvbnN0IHI9big3NTE4KSxvPW4oMzQ3MSksaT1uKDU3NSk7dC5HbG9iYWxTdHlsZXM9ci5jcmVhdGVHbG9iYWxTdHlsZWBcbiAgLyoqIC0+IERlZmluZSBHbG9iYWwgQ1NTIFZhcnMgKi9cbiAgOnJvb3Qge1xuICAgIC0tb3BlbmZpbi11aS1nbG9iYWxCYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDF9O1xuICAgIC0tb3BlbmZpbi11aS1nbG9iYWxUZXh0OiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICAgIC0tb3BlbmZpbi11aS1nbG9iYWxQbGFjZWhvbGRlcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0UGxhY2Vob2xkZXJ9O1xuICAgIC0tb3BlbmZpbi11aS1nbG9iYWxUeXBvZ3JhcGh5OiAke28uVHlwb2dyYXBoeS5iYXNlfTtcbiAgICAtLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbjogJHsoe3RoZW1lOmV9KT0+ZS50cmFuc2l0aW9uLmJhc2V9O1xuXG4gICAgLyogTWFwIG92ZXIgdGhlIHBhbGV0dGUga2V5cyBhbmQgY3JlYXRlIHZhcmlhYmxlcyBvdXQgb2YgdGhlbSAqL1xuICAgICR7aS5nZXRSb290Q3NzVmFyc31cbiAgfVxuXG4gIC8qKiAtPiBAZm9udC1mYWNlIERlY2xhcmF0aW9uICovXG4gICR7aS5nZXRGb250RmFjZXN9XG5cbiAgLyoqIC0+IE1pY3JvIFJlc2V0ICovXG4gICoge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgLyoqXG4gICAgICogUHJldmVudCBicm93c2VyIGF1dG8td2VpZ2h0aW5nXG4gICAgICogQGxpbmsgaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9hbG1hbmFjL3Byb3BlcnRpZXMvZi9mb250LXN5bnRoZXNpcy9cbiAgICAgKi9cbiAgICBmb250LXN5bnRoZXNpczogbm9uZTtcbiAgfVxuXG4gIC8qKiAtPiBBcHBseSBHbG9iYWwgU3R5bGVzICovXG4gIDpyb290LFxuICBib2R5IHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbEJhY2tncm91bmQpO1xuICAgIGNvbG9yOiB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRleHQpO1xuICAgIGZvbnQ6IHZhcigtLW9wZW5maW4tdWktZ2xvYmFsVHlwb2dyYXBoeSk7XG4gIH1cblxuICA6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxQbGFjZWhvbGRlcik7XG4gIH1cblxuICAvKiogLT4gUmVkdWNlZCBNb3Rpb24gKEFjY2Vzc2liaWxpdHkpICovXG4gIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbikge1xuICAgIDpyb290IHtcbiAgICAgIC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uOiAkeyh7dGhlbWU6ZX0pPT5lLnRyYW5zaXRpb24ubm9uZX07XG4gICAgfVxuICB9XG5gfSwxMDY5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig5NDMxKSx0KX0sOTUwNzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzQ3MSksdCksbyhuKDY3MTQpLHQpLG8obig5MjcyKSx0KSxvKG4oNTc1KSx0KSxvKG4oMTQ0MSksdCksbyhuKDg3MzIpLHQpLG8obig1NDU5KSx0KSxvKG4oNTMxNyksdCksbyhuKDQyMCksdCl9LDk5ODQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZ2V0TW9zdFJlYWRhYmxlPXQuZGFya2VuQ29sb3I9dC5saWdodGVuQ29sb3I9dm9pZCAwO2NvbnN0IG89cihuKDgyMDcpKTt0LmxpZ2h0ZW5Db2xvcj0oZSx0KT0+aShlLFwibGlnaHRlblwiLHQpLHQuZGFya2VuQ29sb3I9KGUsdCk9PmkoZSxcImRhcmtlblwiLHQpO2NvbnN0IGk9KGUsdCxuKT0+e2lmKG4mJihuPDB8fG4+MTAwKSl0aHJvdyBuZXcgRXJyb3IoYCR7bn0gbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEwMGApO3JldHVybigwLG8uZGVmYXVsdCkoZSlbdF0obikudG9TdHJpbmcoKX07dC5nZXRNb3N0UmVhZGFibGU9KGUsdCk9Pm8uZGVmYXVsdC5tb3N0UmVhZGFibGUoZSx0KS50b0hleFN0cmluZygpfSw4MDI5OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db25maWd1cmF0aW9uPXZvaWQgMCx0LkNvbmZpZ3VyYXRpb249e2ZvbnRMb2FkaW5nOlwiY2RuXCJ9fSwzNDcxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksaT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNkbkZvbnRGYWNlQ3NzPXQuSWNvblNpemU9dC5JY29uU2V0PXQuVHJhbnNpdGlvbj10LlR5cG9ncmFwaHk9dC5MaW5lSGVpZ2h0PXQuRm9udFdlaWdodD10LkZvbnRTaXplPXQuRm9udFN0YWNrPXQuU2hhZG93PXQuUmFkaXVzPXQuVW5pdFB4PXQuVW5pdD10LlNpemVOYW1lPXQuU2l6ZT10LkNvbG9yPXZvaWQgMDtjb25zdCBhPWkobigxNTIxKSksbD1pKG4oMjc3MikpLHM9big5MjcyKTt0LkNvbG9yPXt3aGl0ZTpcIiNGRkZGRkZcIixsaWdodEdyYXkxOlwiI0ZBRkJGRVwiLGxpZ2h0R3JheTI6XCIjRjNGNUY4XCIsbGlnaHRHcmF5MzpcIiNFQ0VFRjFcIixsaWdodEdyYXk0OlwiI0REREZFNFwiLGxpZ2h0R3JheTU6XCIjQzlDQkQyXCIsbmV1dHJhbEdyYXk6XCIjN0Q4MDhBXCIsbmV1dHJhbEdyYXk4MDpcInJnYmEoMTI1LDEyOCwxMzgsMC44KVwiLHNpbHZlckdyYXk6XCIjQzBDMUMyXCIsZGFya0dyYXkxOlwiIzUzNTY1RlwiLGRhcmtHcmF5MjpcIiMzODNBNDBcIixkYXJrR3JheTM6XCIjMkYzMTM2XCIsZGFya0dyYXk0OlwiIzI0MjYyQlwiLGRhcmtHcmF5NTpcIiMxRTFGMjNcIixkYXJrR3JheTY6XCIjMTExMjE0XCIsb3BlbkZpbkRhcmtlc3Q6XCIjM0QzOUNEXCIsb3BlbkZpbkRhcmtlcjpcIiM0NjQyRTBcIixvcGVuRmluOlwiIzUwNENGRlwiLG9wZW5GaW5MaWdodDpcIiM1MjU0RkJcIixvcGVuRmluTGlnaHRlcjpcIiM1QzVFRkVcIixvcGVuRmluTGlnaHRlc3Q6XCIjNjg2NEZGXCIsZnVuY3Rpb25hbDE6XCIjMjA3NzM1XCIsZnVuY3Rpb25hbDI6XCIjNDZDOEYxXCIsZnVuY3Rpb25hbDM6XCIjMEE3NkQzXCIsZnVuY3Rpb25hbDQ6XCIjNkNBREU1XCIsZnVuY3Rpb25hbDU6XCIjMEE3NkQzXCIsZnVuY3Rpb25hbDY6XCIjODgyQkZFXCIsZnVuY3Rpb25hbDc6XCIjRjMxODE4XCIsZnVuY3Rpb25hbDg6XCIjQzkzNDAwXCIsZnVuY3Rpb25hbDk6XCIjRkY1RTYwXCIsZnVuY3Rpb25hbDEwOlwiI0Y0OEYwMFwiLHB1cnBsZTpcIiM4QzYxRkZcIixsaWdodGJsdWU6XCIjMzZDM0ZFXCIsYXF1YTpcIiMwMENDODhcIix5ZWxsb3c6XCIjRkZFQjAwXCIsc2FsbW9uOlwiI0ZGOEM0Q1wiLHBpbms6XCIjRkY1RTYwXCIsbGlnaHRwaW5rOlwiI0ZGOEZCOFwiLHdoaXRlMDA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuMClcIix3aGl0ZTEwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjEpXCIsd2hpdGUyMDpcInJnYmEoMjU1LDI1NSwyNTUsMC4yKVwiLHdoaXRlMzA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuMylcIix3aGl0ZTQwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjQpXCIsd2hpdGU1MDpcInJnYmEoMjU1LDI1NSwyNTUsMC41KVwiLHdoaXRlNjA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNilcIix3aGl0ZTcwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjcpXCIsd2hpdGU4MDpcInJnYmEoMjU1LDI1NSwyNTUsMC44KVwiLHdoaXRlOTA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuOSlcIixibGFjazAwOlwicmdiYSgwLDAsMCwwLjApXCIsYmxhY2sxMDpcInJnYmEoMCwwLDAsMC4xKVwiLGJsYWNrMjA6XCJyZ2JhKDAsMCwwLDAuMilcIixibGFjazMwOlwicmdiYSgwLDAsMCwwLjMpXCIsYmxhY2s0MDpcInJnYmEoMCwwLDAsMC40KVwiLGJsYWNrNTA6XCJyZ2JhKDAsMCwwLDAuNSlcIixibGFjazYwOlwicmdiYSgwLDAsMCwwLjYpXCIsYmxhY2s3MDpcInJnYmEoMCwwLDAsMC43KVwiLGJsYWNrODA6XCJyZ2JhKDAsMCwwLDAuOClcIixibGFjazkwOlwicmdiYSgwLDAsMCwwLjkpXCIsdHJhbnNwYXJlbnQ6XCJ0cmFuc3BhcmVudFwifSx0LlNpemU9e3hzbWFsbDpcInhzbWFsbFwiLHNtYWxsOlwic21hbGxcIixiYXNlOlwiYmFzZVwiLGxhcmdlOlwibGFyZ2VcIix4bGFyZ2U6XCJ4bGFyZ2VcIix4eGxhcmdlOlwieHhsYXJnZVwiLHh4eGxhcmdlOlwieHh4bGFyZ2VcIix4eHh4bGFyZ2U6XCJ4eHh4bGFyZ2VcIn0sdC5TaXplTmFtZT17W3QuU2l6ZS54c21hbGxdOlwiRXh0cmEgU21hbGxcIixbdC5TaXplLnNtYWxsXTpcIlNtYWxsXCIsW3QuU2l6ZS5iYXNlXTpcIkJhc2VcIixbdC5TaXplLmxhcmdlXTpcIkxhcmdlXCIsW3QuU2l6ZS54bGFyZ2VdOlwiRXh0cmEgTGFyZ2VcIixbdC5TaXplLnh4bGFyZ2VdOlwiMlggTGFyZ2VcIixbdC5TaXplLnh4eGxhcmdlXTpcIjNYIExhcmdlXCIsW3QuU2l6ZS54eHh4bGFyZ2VdOlwiNFggTGFyZ2VcIn0sdC5Vbml0PXtbdC5TaXplLnhzbWFsbF06NCxbdC5TaXplLnNtYWxsXTo4LFt0LlNpemUuYmFzZV06MTIsW3QuU2l6ZS5sYXJnZV06MTYsW3QuU2l6ZS54bGFyZ2VdOjIwLFt0LlNpemUueHhsYXJnZV06MjQsW3QuU2l6ZS54eHhsYXJnZV06MzIsW3QuU2l6ZS54eHh4bGFyZ2VdOjQ4fSx0LlVuaXRQeD17W3QuU2l6ZS54c21hbGxdOlwiNHB4XCIsW3QuU2l6ZS5zbWFsbF06XCI4cHhcIixbdC5TaXplLmJhc2VdOlwiMTJweFwiLFt0LlNpemUubGFyZ2VdOlwiMTZweFwiLFt0LlNpemUueGxhcmdlXTpcIjIwcHhcIixbdC5TaXplLnh4bGFyZ2VdOlwiMjRweFwiLFt0LlNpemUueHh4bGFyZ2VdOlwiMzJweFwiLFt0LlNpemUueHh4eGxhcmdlXTpcIjQ4cHhcIn0sdC5SYWRpdXM9e1t0LlNpemUueHNtYWxsXTpcIjJweFwiLFt0LlNpemUuc21hbGxdOlwiNHB4XCIsW3QuU2l6ZS5iYXNlXTpcIjhweFwiLFt0LlNpemUubGFyZ2VdOlwiMjRweFwiLHBpbGw6XCIxMDB2aFwiLHJvdW5kOlwiNTAlXCIsbm9uZTpcIjBcIn0sdC5TaGFkb3c9e1t0LlNpemUuYmFzZV06XCIwIDRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjI1KVwifSx0LkZvbnRTdGFjaz1bXCJJbnRlclwiLFwiLWFwcGxlLXN5c3RlbVwiLFwiQmxpbmtNYWNTeXN0ZW1Gb250XCIsXCJTZWdvZSBVSVwiLFwiUm9ib3RvXCIsXCJPeHlnZW4tU2Fuc1wiLFwiVWJ1bnR1XCIsXCJDYW50YXJlbGxcIixcIkhlbHZldGljYSBOZXVlXCIsXCJzYW5zLXNlcmlmXCJdLmpvaW4oXCIsIFwiKSx0LkZvbnRTaXplPXtbdC5TaXplLnhzbWFsbF06XCI4cHhcIixbdC5TaXplLnNtYWxsXTpcIjEwcHhcIixbdC5TaXplLmJhc2VdOlwiMTJweFwiLFt0LlNpemUubGFyZ2VdOlwiMTRweFwiLFt0LlNpemUueGxhcmdlXTpcIjE2cHhcIixbdC5TaXplLnh4bGFyZ2VdOlwiMThweFwiLFt0LlNpemUueHh4bGFyZ2VdOlwiMjBweFwiLFt0LlNpemUueHh4eGxhcmdlXTpcIjQwcHhcIn0sdC5Gb250V2VpZ2h0PXtub3JtYWw6NDAwLGJvbGQ6NjAwfSx0LkxpbmVIZWlnaHQ9e3VpOjEsaGVhZGluZzoxLjIsdGV4dDoxLjV9LHQuVHlwb2dyYXBoeT17YmFzZTpgJHt0LkZvbnRTaXplLmJhc2V9LyR7dC5MaW5lSGVpZ2h0LnRleHR9ICR7dC5Gb250U3RhY2t9YH0sdC5UcmFuc2l0aW9uPXtiYXNlOlwiMjAwbXMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSlcIixub25lOlwiMG1zXCJ9LHQuSWNvblNldD1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYSksbCksdC5JY29uU2l6ZT17W3QuU2l6ZS54c21hbGxdOnQuVW5pdFB4LnNtYWxsLFt0LlNpemUuc21hbGxdOnQuVW5pdFB4LmJhc2UsW3QuU2l6ZS5iYXNlXTpcIjE1cHhcIixbdC5TaXplLmxhcmdlXTp0LlVuaXRQeC54bGFyZ2UsW3QuU2l6ZS54bGFyZ2VdOnQuVW5pdFB4Lnh4bGFyZ2UsW3QuU2l6ZS54eGxhcmdlXTp0LlVuaXRQeC54eHhsYXJnZSxbdC5TaXplLnh4eGxhcmdlXTp0LlVuaXRQeC54eHh4bGFyZ2V9LHQuY2RuRm9udEZhY2VDc3M9KDAscy5jcmVhdGVGb250RmFjZUNzcykoe3JlZ3VsYXI6XCIvL2Nkbi5vcGVuZmluLmNvL2ZvbnRzL2ludGVyL0ludGVyLVJlZ3VsYXIud29mZjI/djMuMTVcIixpdGFsaWM6XCIvL2Nkbi5vcGVuZmluLmNvL2ZvbnRzL2ludGVyL0ludGVyLUl0YWxpYy53b2ZmMj92My4xNVwiLHNlbWlCb2xkOlwiLy9jZG4ub3BlbmZpbi5jby9mb250cy9pbnRlci9JbnRlci1TZW1pQm9sZC53b2ZmMj92My4xNVwiLHNlbWlCb2xkSXRhbGljOlwiLy9jZG4ub3BlbmZpbi5jby9mb250cy9pbnRlci9JbnRlci1TZW1pQm9sZEl0YWxpYy53b2ZmMj92My4xNVwifSl9LDkyNzI6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuY3JlYXRlRm9udEZhY2VDc3M9dm9pZCAwO2NvbnN0IHI9big3NTE4KSxvPW4oMzQ3MSk7dC5jcmVhdGVGb250RmFjZUNzcz1mdW5jdGlvbihlKXtyZXR1cm4gci5jc3NgXG4gICAgQGZvbnQtZmFjZSB7XG4gICAgICBmb250LWZhbWlseTogJ0ludGVyJztcbiAgICAgIHNyYzogdXJsKCR7ZS5yZWd1bGFyfSkgZm9ybWF0KCd3b2ZmMicpO1xuICAgICAgZm9udC13ZWlnaHQ6ICR7by5Gb250V2VpZ2h0Lm5vcm1hbH07XG4gICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgfVxuICAgIEBmb250LWZhY2Uge1xuICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICBzcmM6IHVybCgke2UuaXRhbGljfSkgZm9ybWF0KCd3b2ZmMicpO1xuICAgICAgZm9udC13ZWlnaHQ6ICR7by5Gb250V2VpZ2h0Lm5vcm1hbH07XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgfVxuXG4gICAgQGZvbnQtZmFjZSB7XG4gICAgICBmb250LWZhbWlseTogJ0ludGVyJztcbiAgICAgIHNyYzogdXJsKCR7ZS5zZW1pQm9sZH0pIGZvcm1hdCgnd29mZjInKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke28uRm9udFdlaWdodC5ib2xkfTtcbiAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICB9XG5cbiAgICBAZm9udC1mYWNlIHtcbiAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInO1xuICAgICAgc3JjOiB1cmwoJHtlLnNlbWlCb2xkSXRhbGljfSkgZm9ybWF0KCd3b2ZmMicpO1xuICAgICAgZm9udC13ZWlnaHQ6ICR7by5Gb250V2VpZ2h0LmJvbGR9O1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgIH1cbiAgYH19LDY3MTQ6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuY3JlYXRlVGhlbWU9dm9pZCAwO2NvbnN0IHI9big4MDI5KSxvPW4oMzQ3MSksaT1uKDk5ODQpLGE9big1NDU5KSxsPXtfY29uZmlnOnIuQ29uZmlndXJhdGlvbixfY29sb3I6by5Db2xvcixmb250U2l6ZTpvLkZvbnRTaXplLGZvbnRXZWlnaHQ6by5Gb250V2VpZ2h0LGxpbmVIZWlnaHQ6by5MaW5lSGVpZ2h0LGljb25TaXplOm8uSWNvblNpemUscmFkaXVzOm8uUmFkaXVzLHNoYWRvdzpvLlNoYWRvdyx0cmFuc2l0aW9uOm8uVHJhbnNpdGlvbix1bml0Om8uVW5pdCxweDpvLlVuaXRQeH0scz0oZSx0KT0+KHtbYCR7ZX1BY3RpdmVgXTooMCxpLmRhcmtlbkNvbG9yKSh0LDIpLFtgJHtlfUhvdmVyYF06KDAsaS5saWdodGVuQ29sb3IpKHQsNSksW2Ake2V9Rm9jdXNlZGBdOigwLGkuZ2V0TW9zdFJlYWRhYmxlKSh0LFtvLkNvbG9yLndoaXRlLG8uQ29sb3IuZGFya0dyYXk1XSksW2Ake2V9VGV4dGBdOigwLGkuZ2V0TW9zdFJlYWRhYmxlKSh0LFtvLkNvbG9yLndoaXRlLG8uQ29sb3IuZGFya0dyYXk1XSl9KTt0LmNyZWF0ZVRoZW1lPShlLHQ9XCJkYXJrXCIpPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbCkse3BhbGV0dGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkscyhhLlBhbGV0dGUuYnJhbmRQcmltYXJ5LGUuYnJhbmRQcmltYXJ5KSkscyhhLlBhbGV0dGUuYnJhbmRTZWNvbmRhcnksZS5icmFuZFNlY29uZGFyeSkpfSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2VsZWN0ZWRTY2hlbWU6dH0pfX0sNTc1OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldFN0YXR1c0NvbG9yPXQuZ2V0Rm9udEZhY2VzPXQuZ2V0Um9vdENzc1ZhcnM9dC5nZXRWYXJpYW50Q1NTPXZvaWQgMDtjb25zdCByPW4oMzQ3MSksbz1uKDU0NTkpO3QuZ2V0VmFyaWFudENTUz0oZSx0KT0+bj0+ZVt0XVtuW3RdXSx0LmdldFJvb3RDc3NWYXJzPSh7dGhlbWU6ZX0pPT5PYmplY3Qua2V5cyhvLlBhbGV0dGUpLm1hcCgodD0+YC0tb3BlbmZpbi11aS0ke3R9OiAke2UucGFsZXR0ZVt0XX07YCkpLmpvaW4oXCJcXG5cIiksdC5nZXRGb250RmFjZXM9KHt0aGVtZTplfSk9PlwiaW1wb3J0XCI9PT1lLl9jb25maWcuZm9udExvYWRpbmc/ZS5fY29uZmlnLmZvbnRDc3M6ci5jZG5Gb250RmFjZUNzcyx0LmdldFN0YXR1c0NvbG9yPShlLHQsbik9Pntzd2l0Y2godCl7Y2FzZVwiYWN0aXZlXCI6cmV0dXJuIGUucGFsZXR0ZS5zdGF0dXNBY3RpdmU7Y2FzZVwiY3JpdGljYWxcIjpyZXR1cm4gZS5wYWxldHRlLnN0YXR1c0NyaXRpY2FsO2Nhc2VcIndhcm5pbmdcIjpyZXR1cm4gZS5wYWxldHRlLnN0YXR1c1dhcm5pbmc7Y2FzZVwic3VjY2Vzc1wiOnJldHVybiBlLnBhbGV0dGUuc3RhdHVzU3VjY2VzcztkZWZhdWx0OnJldHVybiBuP2UucGFsZXR0ZVtuXTpcImluaGVyaXRcIn19fSwxNDQxOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LDg3MzI6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTWl4aW5zPXZvaWQgMDtjb25zdCByPW4oMzQ3MSksbz1uKDc1MTgpLGk9by5jc3NgXG4gIHVzZXItc2VsZWN0OiBub25lO1xuYCxhPW8uY3NzYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmAsbD1vLmNzc2BcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiB2YXIoLS1zY3JvbGxiYXJTaXplLCAke3IuVW5pdFB4LnhzbWFsbH0pO1xuICAgIGhlaWdodDogdmFyKC0tc2Nyb2xsYmFyU2l6ZSwgJHtyLlVuaXRQeC54c21hbGx9KTtcbiAgfVxuXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiAke3IuQ29sb3IubmV1dHJhbEdyYXk4MH07XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2Nyb2xsYmFyU2l6ZSwgJHtyLlVuaXRQeC54c21hbGx9KTtcbiAgICBvcGFjaXR5OiAwLjg7XG4gIH1cblxuICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgYmFja2dyb3VuZDogJHtyLkNvbG9yLndoaXRlODB9O1xuICAgIHdpZHRoOiB2YXIoLS1zY3JvbGxiYXJTaXplLCAke3IuVW5pdFB4LnhzbWFsbH0pO1xuICAgIGhlaWdodDogdmFyKC0tc2Nyb2xsYmFyU2l6ZSwgJHtyLlVuaXRQeC54c21hbGx9KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zY3JvbGxiYXJTaXplLCAke3IuVW5pdFB4LnhzbWFsbH0pO1xuICAgIG9wYWNpdHk6IDAuODtcbiAgfVxuYCxzPW8uY3NzYFxuICAtLXNjcm9sbGJhclNpemU6IDJweDtcbiAgJHtsfTtcbmAsYz1vLmNzc2BcbiAgLXdlYmtpdC1hcHAtcmVnaW9uOiBkcmFnO1xuYCx1PW8uY3NzYFxuICAtd2Via2l0LWFwcC1yZWdpb246IG5vLWRyYWc7XG5gO3QuTWl4aW5zPXtub1NlbGVjdDppLHRleHRPdmVyZmxvdzphLHNjcm9sbGJhcjp7W3IuU2l6ZS5iYXNlXTpsLFtyLlNpemUuc21hbGxdOnN9LGFwcFJlZ2lvbjp7ZHJhZzpjLG5vRHJhZzp1fX19LDU0NTk6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlBhbGV0dGU9dm9pZCAwLHQuUGFsZXR0ZT17YmFja2dyb3VuZDE6XCJiYWNrZ3JvdW5kMVwiLGJhY2tncm91bmQyOlwiYmFja2dyb3VuZDJcIixiYWNrZ3JvdW5kMzpcImJhY2tncm91bmQzXCIsYmFja2dyb3VuZDQ6XCJiYWNrZ3JvdW5kNFwiLGJhY2tncm91bmQ1OlwiYmFja2dyb3VuZDVcIixiYWNrZ3JvdW5kNjpcImJhY2tncm91bmQ2XCIsYnJhbmRQcmltYXJ5OlwiYnJhbmRQcmltYXJ5XCIsYnJhbmRTZWNvbmRhcnk6XCJicmFuZFNlY29uZGFyeVwiLGJyYW5kUHJpbWFyeUFjdGl2ZTpcImJyYW5kUHJpbWFyeUFjdGl2ZVwiLGJyYW5kUHJpbWFyeUhvdmVyOlwiYnJhbmRQcmltYXJ5SG92ZXJcIixicmFuZFByaW1hcnlGb2N1c2VkOlwiYnJhbmRQcmltYXJ5Rm9jdXNlZFwiLGJyYW5kUHJpbWFyeVRleHQ6XCJicmFuZFByaW1hcnlUZXh0XCIsYnJhbmRTZWNvbmRhcnlBY3RpdmU6XCJicmFuZFNlY29uZGFyeUFjdGl2ZVwiLGJyYW5kU2Vjb25kYXJ5SG92ZXI6XCJicmFuZFNlY29uZGFyeUhvdmVyXCIsYnJhbmRTZWNvbmRhcnlGb2N1c2VkOlwiYnJhbmRTZWNvbmRhcnlGb2N1c2VkXCIsYnJhbmRTZWNvbmRhcnlUZXh0OlwiYnJhbmRTZWNvbmRhcnlUZXh0XCIsaW5wdXRCYWNrZ3JvdW5kOlwiaW5wdXRCYWNrZ3JvdW5kXCIsaW5wdXRDb2xvcjpcImlucHV0Q29sb3JcIixpbnB1dFBsYWNlaG9sZGVyOlwiaW5wdXRQbGFjZWhvbGRlclwiLGlucHV0RGlzYWJsZWQ6XCJpbnB1dERpc2FibGVkXCIsaW5wdXRGb2N1c2VkOlwiaW5wdXRGb2N1c2VkXCIsaW5wdXRCb3JkZXI6XCJpbnB1dEJvcmRlclwiLHN0YXR1c1N1Y2Nlc3M6XCJzdGF0dXNTdWNjZXNzXCIsc3RhdHVzV2FybmluZzpcInN0YXR1c1dhcm5pbmdcIixzdGF0dXNDcml0aWNhbDpcInN0YXR1c0NyaXRpY2FsXCIsc3RhdHVzQWN0aXZlOlwic3RhdHVzQWN0aXZlXCIsdGV4dERlZmF1bHQ6XCJ0ZXh0RGVmYXVsdFwiLHRleHRIZWxwOlwidGV4dEhlbHBcIix0ZXh0SW5hY3RpdmU6XCJ0ZXh0SW5hY3RpdmVcIixib3JkZXJOZXV0cmFsOlwiYm9yZGVyTmV1dHJhbFwiLGNvbnRlbnRCYWNrZ3JvdW5kMTpcImNvbnRlbnRCYWNrZ3JvdW5kMVwiLGNvbnRlbnRCYWNrZ3JvdW5kMjpcImNvbnRlbnRCYWNrZ3JvdW5kMlwiLGNvbnRlbnRCYWNrZ3JvdW5kMzpcImNvbnRlbnRCYWNrZ3JvdW5kM1wiLGNvbnRlbnRCYWNrZ3JvdW5kNDpcImNvbnRlbnRCYWNrZ3JvdW5kNFwiLGNvbnRlbnRCYWNrZ3JvdW5kNTpcImNvbnRlbnRCYWNrZ3JvdW5kNVwiLGxpbmtEZWZhdWx0OlwibGlua0RlZmF1bHRcIixsaW5rSG92ZXI6XCJsaW5rSG92ZXJcIn19LDUzMTc6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sNDI2NjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oOTQ4MyksdCl9LDk0ODM6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT3BlbkZpbkRhcmtUaGVtZT10Lk9wZW5GaW5MaWdodFRoZW1lPXZvaWQgMDtjb25zdCByPW4oNTQ1OSksbz1uKDM0NzEpLGk9big2NzE0KSxhPXtbci5QYWxldHRlLmJyYW5kUHJpbWFyeV06by5Db2xvci5vcGVuRmluLFtyLlBhbGV0dGUuc3RhdHVzU3VjY2Vzc106by5Db2xvci5mdW5jdGlvbmFsMSxbci5QYWxldHRlLnN0YXR1c1dhcm5pbmddOm8uQ29sb3IuZnVuY3Rpb25hbDEwLFtyLlBhbGV0dGUuc3RhdHVzQ3JpdGljYWxdOm8uQ29sb3IuZnVuY3Rpb25hbDcsW3IuUGFsZXR0ZS5zdGF0dXNBY3RpdmVdOm8uQ29sb3IuZnVuY3Rpb25hbDMsW3IuUGFsZXR0ZS5ib3JkZXJOZXV0cmFsXTpvLkNvbG9yLnNpbHZlckdyYXksW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDFdOm8uQ29sb3Iub3BlbkZpbixbci5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kMl06XCIjMDAwMDAwXCIsW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDNdOlwiIzAwMDAwMFwiLFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQ0XTpcIiMwMDAwMDBcIixbci5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kNV06XCIjMDAwMDAwXCIsW3IuUGFsZXR0ZS5saW5rRGVmYXVsdF06by5Db2xvci5mdW5jdGlvbmFsNCxbci5QYWxldHRlLmxpbmtIb3Zlcl06by5Db2xvci5mdW5jdGlvbmFsNX07dC5PcGVuRmluTGlnaHRUaGVtZT0oMCxpLmNyZWF0ZVRoZW1lKShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYSkse1tyLlBhbGV0dGUuYmFja2dyb3VuZDFdOm8uQ29sb3Iud2hpdGUsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kMl06by5Db2xvci5saWdodEdyYXkxLFtyLlBhbGV0dGUuYmFja2dyb3VuZDNdOm8uQ29sb3IubGlnaHRHcmF5Mixbci5QYWxldHRlLmJhY2tncm91bmQ0XTpvLkNvbG9yLmxpZ2h0R3JheTMsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNV06by5Db2xvci5saWdodEdyYXkzLFtyLlBhbGV0dGUuYmFja2dyb3VuZDZdOm8uQ29sb3IubGlnaHRHcmF5NSxbci5QYWxldHRlLmJyYW5kU2Vjb25kYXJ5XTpvLkNvbG9yLmxpZ2h0R3JheTQsW3IuUGFsZXR0ZS5pbnB1dEJhY2tncm91bmRdOm8uQ29sb3IubGlnaHRHcmF5Myxbci5QYWxldHRlLmlucHV0Q29sb3JdOm8uQ29sb3IuZGFya0dyYXk1LFtyLlBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcl06by5Db2xvci5kYXJrR3JheTIsW3IuUGFsZXR0ZS5pbnB1dERpc2FibGVkXTpvLkNvbG9yLm5ldXRyYWxHcmF5LFtyLlBhbGV0dGUuaW5wdXRGb2N1c2VkXTpvLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS5pbnB1dEJvcmRlcl06by5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLnRleHREZWZhdWx0XTpvLkNvbG9yLmRhcmtHcmF5NSxbci5QYWxldHRlLnRleHRIZWxwXTpvLkNvbG9yLm5ldXRyYWxHcmF5LFtyLlBhbGV0dGUudGV4dEluYWN0aXZlXTpvLkNvbG9yLm5ldXRyYWxHcmF5fSksXCJsaWdodFwiKSx0Lk9wZW5GaW5EYXJrVGhlbWU9KDAsaS5jcmVhdGVUaGVtZSkoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLHtbci5QYWxldHRlLmJhY2tncm91bmQxXTpvLkNvbG9yLmRhcmtHcmF5Nixbci5QYWxldHRlLmJhY2tncm91bmQyXTpvLkNvbG9yLmRhcmtHcmF5NSxbci5QYWxldHRlLmJhY2tncm91bmQzXTpvLkNvbG9yLmRhcmtHcmF5NCxbci5QYWxldHRlLmJhY2tncm91bmQ0XTpvLkNvbG9yLmRhcmtHcmF5Myxbci5QYWxldHRlLmJhY2tncm91bmQ1XTpvLkNvbG9yLmRhcmtHcmF5Mixbci5QYWxldHRlLmJhY2tncm91bmQ2XTpvLkNvbG9yLmRhcmtHcmF5MSxbci5QYWxldHRlLmJyYW5kU2Vjb25kYXJ5XTpvLkNvbG9yLmRhcmtHcmF5Mixbci5QYWxldHRlLmlucHV0QmFja2dyb3VuZF06by5Db2xvci5kYXJrR3JheTEsW3IuUGFsZXR0ZS5pbnB1dENvbG9yXTpvLkNvbG9yLndoaXRlLFtyLlBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcl06by5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUuaW5wdXREaXNhYmxlZF06by5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLmlucHV0Rm9jdXNlZF06by5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUuaW5wdXRCb3JkZXJdOm8uQ29sb3IubmV1dHJhbEdyYXksW3IuUGFsZXR0ZS50ZXh0RGVmYXVsdF06by5Db2xvci53aGl0ZSxbci5QYWxldHRlLnRleHRIZWxwXTpvLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS50ZXh0SW5hY3RpdmVdOm8uQ29sb3IubmV1dHJhbEdyYXl9KSxcImRhcmtcIil9LDQyMDooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5UaGVtZVByb3ZpZGVyPXZvaWQgMDtjb25zdCByPW4oNTg5Myksbz1uKDc1MTgpLGk9big3MDg4KSxhPW4oMTA2OSk7dC5UaGVtZVByb3ZpZGVyPSh7Y2hpbGRyZW46ZSx0aGVtZXM6dCxzY2hlbWU6bixjb25maWc6bCxpbmNsdWRlR2xvYmFsU3R5bGVzOnM9ITB9KT0+e2NvbnN0IGM9KDAsaS51c2VUaGVtZSkoe3RoZW1lczp0LHNjaGVtZTpuLGNvbmZpZzpsfSk7cmV0dXJuKDAsci5qc3gpKG8uVGhlbWVQcm92aWRlcixPYmplY3QuYXNzaWduKHt0aGVtZTpjfSx7Y2hpbGRyZW46KDAsci5qc3hzKShyLkZyYWdtZW50LHtjaGlsZHJlbjpbcyYmKDAsci5qc3gpKGEuR2xvYmFsU3R5bGVzLHt9KSxlXX0pfSkpfX0sOTc1ODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db250YWN0U3RhdHVzSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpLGk9cihuKDc1MTgpKSxhPW4oMTMzMyksbD17YXZhaWxhYmxlOigwLG8uanN4KShhLkNoZWNrU1ZHLHt9KSxhd2F5OigwLG8uanN4KShhLkJ1c3lTVkcse30pLFwiZG8tbm90LWRpc3R1cmJcIjooMCxvLmpzeCkoYS5Eb05vdERpc3R1cmJTVkcse30pLG9mZmxpbmU6KDAsby5qc3gpKGEuT2ZmbGluZVNWRyx7fSksYnVzeTpudWxsfTt0LkNvbnRhY3RTdGF0dXNJY29uPSh7b25saW5lU3RhdHVzOmV9KT0+ZT8oMCxvLmpzeCkocyxPYmplY3QuYXNzaWduKHtvbmxpbmVTdGF0dXM6ZX0se2NoaWxkcmVuOmxbZV18fG51bGx9KSk6bnVsbDtjb25zdCBzPWkuZGVmYXVsdC5kaXZgXG4gIGJvcmRlcjogMS42cHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQxfTtcblxuICBiYWNrZ3JvdW5kOiAkeyh7b25saW5lU3RhdHVzOmUsdGhlbWU6dH0pPT5cImJ1c3lcIj09PWU/XCIjQzIxMzEzXCI6dC5wYWxldHRlLmJhY2tncm91bmQxfTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gIGhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5sYXJnZX07XG4gIHdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmxhcmdlfTtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDc4Ljk1JTtcbiAgcmlnaHQ6IC03LjAyJTtcbiAgdG9wOiA3Ny4xMiU7XG4gIGJvdHRvbTogLTQuMjQlO1xuYH0sMTMzMzooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5PZmZsaW5lU1ZHPXQuRG9Ob3REaXN0dXJiU1ZHPXQuQnVzeVNWRz10LkNoZWNrU1ZHPXZvaWQgMDtjb25zdCByPW4oNTg5Myk7dC5DaGVja1NWRz0oKT0+KDAsci5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSx7Y2hpbGRyZW46KDAsci5qc3gpKFwicGF0aFwiLHtkOlwiTTggMEM4LjczNDM4IDAgOS40NDAxIDAuMDk2MzU0MiAxMC4xMTcyIDAuMjg5MDYzQzEwLjc5NDMgMC40ODE3NzEgMTEuNDI5NyAwLjc1MjYwNCAxMi4wMjM0IDEuMTAxNTZDMTIuNjE3MiAxLjQ1MDUyIDEzLjE1NjMgMS44Njk3OSAxMy42NDA2IDIuMzU5MzhDMTQuMTMwMiAyLjg0Mzc1IDE0LjU0OTUgMy4zODI4MSAxNC44OTg0IDMuOTc2NTZDMTUuMjQ3NCA0LjU3MDMxIDE1LjUxODIgNS4yMDU3MyAxNS43MTA5IDUuODgyODFDMTUuOTAzNiA2LjU1OTkgMTYgNy4yNjU2MyAxNiA4QzE2IDguNzI5MTcgMTUuOTAzNiA5LjQzNDkgMTUuNzEwOSAxMC4xMTcyQzE1LjUxODIgMTAuNzk0MyAxNS4yNDc0IDExLjQyOTcgMTQuODk4NCAxMi4wMjM0QzE0LjU0OTUgMTIuNjE3MiAxNC4xMzAyIDEzLjE1ODkgMTMuNjQwNiAxMy42NDg0QzEzLjE1NjMgMTQuMTMyOCAxMi42MTcyIDE0LjU0OTUgMTIuMDIzNCAxNC44OTg0QzExLjQyOTcgMTUuMjQ3NCAxMC43OTE3IDE1LjUxODIgMTAuMTA5NCAxNS43MTA5QzkuNDMyMjkgMTUuOTAzNiA4LjcyOTE3IDE2IDggMTZDNy4yNzA4MyAxNiA2LjU2NTEgMTUuOTAzNiA1Ljg4MjgxIDE1LjcxMDlDNS4yMDU3MyAxNS41MTgyIDQuNTcwMzEgMTUuMjQ3NCAzLjk3NjU2IDE0Ljg5ODRDMy4zODI4MSAxNC41NDk1IDIuODQxMTUgMTQuMTMyOCAyLjM1MTU2IDEzLjY0ODRDMS44NjcxOSAxMy4xNTg5IDEuNDUwNTIgMTIuNjE3MiAxLjEwMTU2IDEyLjAyMzRDMC43NTI2MDQgMTEuNDI5NyAwLjQ4MTc3MSAxMC43OTQzIDAuMjg5MDYzIDEwLjExNzJDMC4wOTYzNTQyIDkuNDM0OSAwIDguNzI5MTcgMCA4QzAgNy4yNzA4MyAwLjA5NjM1NDIgNi41Njc3MSAwLjI4OTA2MyA1Ljg5MDYzQzAuNDgxNzcxIDUuMjA4MzMgMC43NTI2MDQgNC41NzAzMSAxLjEwMTU2IDMuOTc2NTZDMS40NTA1MiAzLjM4MjgxIDEuODY3MTkgMi44NDM3NSAyLjM1MTU2IDIuMzU5MzhDMi44NDExNSAxLjg2OTc5IDMuMzgyODEgMS40NTA1MiAzLjk3NjU2IDEuMTAxNTZDNC41NzAzMSAwLjc1MjYwNCA1LjIwNTczIDAuNDgxNzcxIDUuODgyODEgMC4yODkwNjNDNi41NjUxIDAuMDk2MzU0MiA3LjI3MDgzIDAgOCAwWk0xMC42MzI4IDUuNjg3NUMxMC40MjQ1IDUuNjg3NSAxMC4yNDc0IDUuNzYwNDIgMTAuMTAxNiA1LjkwNjI1TDcuMjczNDQgOC43NUw2LjI2NTYzIDcuNzVDNi4xMTk3OSA3LjYwNDE3IDUuOTQ1MzEgNy41MzEyNSA1Ljc0MjE5IDcuNTMxMjVDNS42NDMyMyA3LjUzMTI1IDUuNTQ5NDggNy41NTIwOCA1LjQ2MDk0IDcuNTkzNzVDNS4zNzI0IDcuNjM1NDIgNS4yOTE2NyA3LjY5MjcxIDUuMjE4NzUgNy43NjU2M0M1LjE1MTA0IDcuODMzMzMgNS4wOTYzNSA3LjkxMTQ2IDUuMDU0NjkgOEM1LjAxMzAyIDguMDg4NTQgNC45OTIxOSA4LjE4MjI5IDQuOTkyMTkgOC4yODEyNUM0Ljk5MjE5IDguNDg5NTggNS4wNjUxIDguNjY2NjcgNS4yMTA5NCA4LjgxMjVMNi43NDIxOSAxMC4zNDM4QzYuODg4MDIgMTAuNDg5NiA3LjA2NTEgMTAuNTYyNSA3LjI3MzQ0IDEwLjU2MjVDNy40ODE3NyAxMC41NjI1IDcuNjU4ODUgMTAuNDg5NiA3LjgwNDY5IDEwLjM0MzhMMTEuMTY0MSA2Ljk2ODc1QzExLjMwOTkgNi44MjI5MiAxMS4zODI4IDYuNjQ1ODMgMTEuMzgyOCA2LjQzNzVDMTEuMzgyOCA2LjMzODU0IDExLjM2MiA2LjI0NDc5IDExLjMyMDMgNi4xNTYyNUMxMS4yNzg2IDYuMDY3NzEgMTEuMjIxNCA1Ljk4OTU4IDExLjE0ODQgNS45MjE4OEMxMS4wODA3IDUuODQ4OTYgMTEuMDAyNiA1Ljc5MTY3IDEwLjkxNDEgNS43NUMxMC44MjU1IDUuNzA4MzMgMTAuNzMxOCA1LjY4NzUgMTAuNjMyOCA1LjY4NzVaXCIsZmlsbDpcIiMyMDc3MzVcIn0pfSkpLHQuQnVzeVNWRz0oKT0+KDAsci5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE3XCIsdmlld0JveDpcIjAgMCAxNiAxN1wiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSx7Y2hpbGRyZW46KDAsci5qc3gpKFwicGF0aFwiLHtkOlwiTTggMC43OTAyMzdDOC43MzQzOCAwLjc5MDIzNyA5LjQ0MDEgMC44ODY1OTIgMTAuMTE3MiAxLjA3OTNDMTAuNzk0MyAxLjI3MjAxIDExLjQyOTcgMS41NDI4NCAxMi4wMjM0IDEuODkxOEMxMi42MTcyIDIuMjQwNzYgMTMuMTU2MyAyLjY2MDAzIDEzLjY0MDYgMy4xNDk2MUMxNC4xMzAyIDMuNjMzOTkgMTQuNTQ5NSA0LjE3MzA1IDE0Ljg5ODQgNC43NjY4QzE1LjI0NzQgNS4zNjA1NSAxNS41MTgyIDUuOTk1OTcgMTUuNzEwOSA2LjY3MzA1QzE1LjkwMzYgNy4zNTAxMyAxNiA4LjA1NTg2IDE2IDguNzkwMjRDMTYgOS41MTk0IDE1LjkwMzYgMTAuMjI1MSAxNS43MTA5IDEwLjkwNzRDMTUuNTE4MiAxMS41ODQ1IDE1LjI0NzQgMTIuMjE5OSAxNC44OTg0IDEyLjgxMzdDMTQuNTQ5NSAxMy40MDc0IDE0LjEzMDIgMTMuOTQ5MSAxMy42NDA2IDE0LjQzODdDMTMuMTU2MyAxNC45MjMxIDEyLjYxNzIgMTUuMzM5NyAxMi4wMjM0IDE1LjY4ODdDMTEuNDI5NyAxNi4wMzc2IDEwLjc5MTcgMTYuMzA4NSAxMC4xMDk0IDE2LjUwMTJDOS40MzIyOSAxNi42OTM5IDguNzI5MTcgMTYuNzkwMiA4IDE2Ljc5MDJDNy4yNzA4MyAxNi43OTAyIDYuNTY1MSAxNi42OTM5IDUuODgyODEgMTYuNTAxMkM1LjIwNTczIDE2LjMwODUgNC41NzAzMSAxNi4wMzc2IDMuOTc2NTYgMTUuNjg4N0MzLjM4MjgxIDE1LjMzOTcgMi44NDExNSAxNC45MjMxIDIuMzUxNTYgMTQuNDM4N0MxLjg2NzE5IDEzLjk0OTEgMS40NTA1MiAxMy40MDc0IDEuMTAxNTYgMTIuODEzN0MwLjc1MjYwNCAxMi4yMTk5IDAuNDgxNzcxIDExLjU4NDUgMC4yODkwNjMgMTAuOTA3NEMwLjA5NjM1NDIgMTAuMjI1MSAwIDkuNTE5NCAwIDguNzkwMjRDMCA4LjA2MTA3IDAuMDk2MzU0MiA3LjM1Nzk1IDAuMjg5MDYzIDYuNjgwODZDMC40ODE3NzEgNS45OTg1NyAwLjc1MjYwNCA1LjM2MDU1IDEuMTAxNTYgNC43NjY4QzEuNDUwNTIgNC4xNzMwNSAxLjg2NzE5IDMuNjMzOTkgMi4zNTE1NiAzLjE0OTYxQzIuODQxMTUgMi42NjAwMyAzLjM4MjgxIDIuMjQwNzYgMy45NzY1NiAxLjg5MThDNC41NzAzMSAxLjU0Mjg0IDUuMjA1NzMgMS4yNzIwMSA1Ljg4MjgxIDEuMDc5M0M2LjU2NTEgMC44ODY1OTIgNy4yNzA4MyAwLjc5MDIzNyA4IDAuNzkwMjM3Wk03LjMyMDMxIDQuMDQ4MDVDNy4yMTA5NCA0LjA0ODA1IDcuMTA2NzcgNC4wNzE0OSA3LjAwNzgxIDQuMTE4MzZDNi45MTQwNiA0LjE2MDAzIDYuODI4MTMgNC4yMTk5MiA2Ljc1IDQuMjk4MDVDNi42NzcwOCA0LjM3MDk3IDYuNjE3MTkgNC40NTY5IDYuNTcwMzEgNC41NTU4NkM2LjUyODY1IDQuNjQ5NjEgNi41MDc4MSA0Ljc1MTE3IDYuNTA3ODEgNC44NjA1NVY5LjE5NjQ5QzYuNTA3ODEgOS4zMDU4NiA2LjUyODY1IDkuNDEyNjMgNi41NzAzMSA5LjUxNjhDNi42MTE5OCA5LjYyMDk3IDYuNjcxODggOS43MTIxMSA2Ljc1IDkuNzkwMjRMOS4xODc1IDEyLjIxMjFDOS4zNDg5NiAxMi4zNzM2IDkuNTQxNjcgMTIuNDU0MyA5Ljc2NTYzIDEyLjQ1NDNDOS44NzUgMTIuNDU0MyA5Ljk3OTE3IDEyLjQzMzUgMTAuMDc4MSAxMi4zOTE4QzEwLjE3NzEgMTIuMzQ0OSAxMC4yNjMgMTIuMjg1IDEwLjMzNTkgMTIuMjEyMUMxMC40MDg5IDEyLjEzNCAxMC40NjYxIDEyLjA0NTQgMTAuNTA3OCAxMS45NDY1QzEwLjU1NDcgMTEuODQ3NSAxMC41NzgxIDExLjc0MzQgMTAuNTc4MSAxMS42MzRDMTAuNTc4MSAxMS41Mjk4IDEwLjU1NDcgMTEuNDI4MyAxMC41MDc4IDExLjMyOTNDMTAuNDY2MSAxMS4yMjUxIDEwLjQwODkgMTEuMTM2NiAxMC4zMzU5IDExLjA2MzdMOC4xMzI4MSA4Ljg3NjE4VjQuODYwNTVDOC4xMzI4MSA0Ljc1MTE3IDguMTA5MzggNC42NDcwMSA4LjA2MjUgNC41NDgwNUM4LjAyMDgzIDQuNDQ5MDkgNy45NjM1NCA0LjM2MzE1IDcuODkwNjMgNC4yOTAyNEM3LjgxNzcxIDQuMjE3MzIgNy43MzE3NyA0LjE2MDAzIDcuNjMyODEgNC4xMTgzNkM3LjUzMzg1IDQuMDcxNDkgNy40Mjk2OSA0LjA0ODA1IDcuMzIwMzEgNC4wNDgwNVpcIixmaWxsOlwiI0ZFOUY0RFwifSl9KSksdC5Eb05vdERpc3R1cmJTVkc9KCk9PigwLHIuanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxN1wiLHZpZXdCb3g6XCIwIDAgMTYgMTdcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0se2NoaWxkcmVuOigwLHIuanN4KShcInBhdGhcIix7ZDpcIk04IDAuNTkwMjU2QzguNzM0MzggMC41OTAyNTYgOS40NDAxIDAuNjg2NjEgMTAuMTE3MiAwLjg3OTMxOEMxMC43OTQzIDEuMDcyMDMgMTEuNDI5NyAxLjM0Mjg2IDEyLjAyMzQgMS42OTE4MkMxMi42MTcyIDIuMDQwNzggMTMuMTU2MiAyLjQ2MDA1IDEzLjY0MDYgMi45NDk2M0MxNC4xMzAyIDMuNDM0MDEgMTQuNTQ5NSAzLjk3MzA3IDE0Ljg5ODQgNC41NjY4MkMxNS4yNDc0IDUuMTYwNTcgMTUuNTE4MiA1Ljc5NTk4IDE1LjcxMDkgNi40NzMwN0MxNS45MDM2IDcuMTUwMTUgMTYgNy44NTU4OCAxNiA4LjU5MDI2QzE2IDkuMzE5NDIgMTUuOTAzNiAxMC4wMjUyIDE1LjcxMDkgMTAuNzA3NEMxNS41MTgyIDExLjM4NDUgMTUuMjQ3NCAxMi4wMTk5IDE0Ljg5ODQgMTIuNjEzN0MxNC41NDk1IDEzLjIwNzQgMTQuMTMwMiAxMy43NDkxIDEzLjY0MDYgMTQuMjM4N0MxMy4xNTYyIDE0LjcyMzEgMTIuNjE3MiAxNS4xMzk3IDEyLjAyMzQgMTUuNDg4N0MxMS40Mjk3IDE1LjgzNzcgMTAuNzkxNyAxNi4xMDg1IDEwLjEwOTQgMTYuMzAxMkM5LjQzMjI5IDE2LjQ5MzkgOC43MjkxNyAxNi41OTAzIDggMTYuNTkwM0M3LjI3MDgzIDE2LjU5MDMgNi41NjUxIDE2LjQ5MzkgNS44ODI4MSAxNi4zMDEyQzUuMjA1NzMgMTYuMTA4NSA0LjU3MDMxIDE1LjgzNzcgMy45NzY1NiAxNS40ODg3QzMuMzgyODEgMTUuMTM5NyAyLjg0MTE1IDE0LjcyMzEgMi4zNTE1NiAxNC4yMzg3QzEuODY3MTkgMTMuNzQ5MSAxLjQ1MDUyIDEzLjIwNzQgMS4xMDE1NiAxMi42MTM3QzAuNzUyNjA0IDEyLjAxOTkgMC40ODE3NzEgMTEuMzg0NSAwLjI4OTA2MiAxMC43MDc0QzAuMDk2MzU0MiAxMC4wMjUyIDAgOS4zMTk0MiAwIDguNTkwMjZDMCA3Ljg2MTA5IDAuMDk2MzU0MiA3LjE1Nzk2IDAuMjg5MDYyIDYuNDgwODhDMC40ODE3NzEgNS43OTg1OSAwLjc1MjYwNCA1LjE2MDU3IDEuMTAxNTYgNC41NjY4MkMxLjQ1MDUyIDMuOTczMDcgMS44NjcxOSAzLjQzNDAxIDIuMzUxNTYgMi45NDk2M0MyLjg0MTE1IDIuNDYwMDUgMy4zODI4MSAyLjA0MDc4IDMuOTc2NTYgMS42OTE4MkM0LjU3MDMxIDEuMzQyODYgNS4yMDU3MyAxLjA3MjAzIDUuODgyODEgMC44NzkzMThDNi41NjUxIDAuNjg2NjEgNy4yNzA4MyAwLjU5MDI1NiA4IDAuNTkwMjU2Wk01LjQ3NjU2IDcuNzQ2NTFDNS4zNjcxOSA3Ljc0NjUxIDUuMjYwNDIgNy43Njk5NCA1LjE1NjI1IDcuODE2ODJDNS4wNTcyOSA3Ljg2MzY5IDQuOTY4NzUgNy45MjYxOSA0Ljg5MDYyIDguMDA0MzJDNC44MTI1IDguMDgyNDQgNC43NSA4LjE3MzU5IDQuNzAzMTIgOC4yNzc3NkM0LjY1NjI1IDguMzc2NzEgNC42MzI4MSA4LjQ4MDg4IDQuNjMyODEgOC41OTAyNkM0LjYzMjgxIDguNjk5NjMgNC42NTYyNSA4LjgwNjQgNC43MDMxMiA4LjkxMDU3QzQuNzUgOS4wMDk1MyA0LjgxMjUgOS4wOTgwNyA0Ljg5MDYyIDkuMTc2MTlDNC45Njg3NSA5LjI1NDMyIDUuMDU3MjkgOS4zMTY4MiA1LjE1NjI1IDkuMzYzNjlDNS4yNjA0MiA5LjQxMDU3IDUuMzY3MTkgOS40MzQwMSA1LjQ3NjU2IDkuNDM0MDFIMTAuNTIzNEMxMC42MzI4IDkuNDM0MDEgMTAuNzM3IDkuNDEwNTcgMTAuODM1OSA5LjM2MzY5QzEwLjk0MDEgOS4zMTY4MiAxMS4wMzEyIDkuMjU0MzIgMTEuMTA5NCA5LjE3NjE5QzExLjE4NzUgOS4wOTgwNyAxMS4yNSA5LjAwOTUzIDExLjI5NjkgOC45MTA1N0MxMS4zNDM4IDguODA2NCAxMS4zNjcyIDguNjk5NjMgMTEuMzY3MiA4LjU5MDI2QzExLjM2NzIgOC40ODA4OCAxMS4zNDM4IDguMzc2NzEgMTEuMjk2OSA4LjI3Nzc2QzExLjI1IDguMTczNTkgMTEuMTg3NSA4LjA4MjQ0IDExLjEwOTQgOC4wMDQzMkMxMS4wMzEyIDcuOTI2MTkgMTAuOTQwMSA3Ljg2MzY5IDEwLjgzNTkgNy44MTY4MkMxMC43MzcgNy43Njk5NCAxMC42MzI4IDcuNzQ2NTEgMTAuNTIzNCA3Ljc0NjUxSDUuNDc2NTZaXCIsZmlsbDpcIiNDMjEzMTNcIn0pfSkpLHQuT2ZmbGluZVNWRz0oKT0+KDAsci5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE3XCIsdmlld0JveDpcIjAgMCAxNiAxN1wiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSx7Y2hpbGRyZW46KDAsci5qc3gpKFwicGF0aFwiLHtkOlwiTTggMC45OTAyNTJDOC43MzQzOCAwLjk5MDI1MiA5LjQ0MDEgMS4wODY2MSAxMC4xMTcyIDEuMjc5MzFDMTAuNzk0MyAxLjQ3MjAyIDExLjQyOTcgMS43NDI4NiAxMi4wMjM0IDIuMDkxODFDMTIuNjE3MiAyLjQ0MDc3IDEzLjE1NjIgMi44NjAwNCAxMy42NDA2IDMuMzQ5NjNDMTQuMTMwMiAzLjgzNCAxNC41NDk1IDQuMzczMDYgMTQuODk4NCA0Ljk2NjgxQzE1LjI0NzQgNS41NjA1NiAxNS41MTgyIDYuMTk1OTggMTUuNzEwOSA2Ljg3MzA2QzE1LjkwMzYgNy41NTAxNSAxNiA4LjI1NTg4IDE2IDguOTkwMjVDMTYgOS43MTk0MiAxNS45MDM2IDEwLjQyNTEgMTUuNzEwOSAxMS4xMDc0QzE1LjUxODIgMTEuNzg0NSAxNS4yNDc0IDEyLjQxOTkgMTQuODk4NCAxMy4wMTM3QzE0LjU0OTUgMTMuNjA3NCAxNC4xMzAyIDE0LjE0OTEgMTMuNjQwNiAxNC42Mzg3QzEzLjE1NjIgMTUuMTIzMSAxMi42MTcyIDE1LjUzOTcgMTIuMDIzNCAxNS44ODg3QzExLjQyOTcgMTYuMjM3NiAxMC43OTE3IDE2LjUwODUgMTAuMTA5NCAxNi43MDEyQzkuNDMyMjkgMTYuODkzOSA4LjcyOTE3IDE2Ljk5MDMgOCAxNi45OTAzQzcuMjcwODMgMTYuOTkwMyA2LjU2NTEgMTYuODkzOSA1Ljg4MjgxIDE2LjcwMTJDNS4yMDU3MyAxNi41MDg1IDQuNTcwMzEgMTYuMjM3NiAzLjk3NjU2IDE1Ljg4ODdDMy4zODI4MSAxNS41Mzk3IDIuODQxMTUgMTUuMTIzMSAyLjM1MTU2IDE0LjYzODdDMS44NjcxOSAxNC4xNDkxIDEuNDUwNTIgMTMuNjA3NCAxLjEwMTU2IDEzLjAxMzdDMC43NTI2MDQgMTIuNDE5OSAwLjQ4MTc3MSAxMS43ODQ1IDAuMjg5MDYyIDExLjEwNzRDMC4wOTYzNTQyIDEwLjQyNTEgMCA5LjcxOTQyIDAgOC45OTAyNUMwIDguMjYxMDkgMC4wOTYzNTQyIDcuNTU3OTYgMC4yODkwNjIgNi44ODA4OEMwLjQ4MTc3MSA2LjE5ODU5IDAuNzUyNjA0IDUuNTYwNTYgMS4xMDE1NiA0Ljk2NjgxQzEuNDUwNTIgNC4zNzMwNiAxLjg2NzE5IDMuODM0IDIuMzUxNTYgMy4zNDk2M0MyLjg0MTE1IDIuODYwMDQgMy4zODI4MSAyLjQ0MDc3IDMuOTc2NTYgMi4wOTE4MUM0LjU3MDMxIDEuNzQyODYgNS4yMDU3MyAxLjQ3MjAyIDUuODgyODEgMS4yNzkzMUM2LjU2NTEgMS4wODY2MSA3LjI3MDgzIDAuOTkwMjUyIDggMC45OTAyNTJaTTggMi42Nzc3NUM3LjQyMTg4IDIuNjc3NzUgNi44NjQ1OCAyLjc1MzI3IDYuMzI4MTIgMi45MDQzMUM1Ljc5MTY3IDMuMDU1MzYgNS4yODkwNiAzLjI2ODkgNC44MjAzMSAzLjU0NDk0QzQuMzUxNTYgMy44MjA5OCAzLjkyNDQ4IDQuMTUxNzEgMy41MzkwNiA0LjUzNzEzQzMuMTU4ODUgNC45MTczNCAyLjgzMDczIDUuMzQxODEgMi41NTQ2OSA1LjgxMDU2QzIuMjc4NjUgNi4yNzkzMSAyLjA2NTEgNi43ODE5MiAxLjkxNDA2IDcuMzE4MzhDMS43NjMwMiA3Ljg1NDg0IDEuNjg3NSA4LjQxMjEzIDEuNjg3NSA4Ljk5MDI1QzEuNjg3NSA5LjU2ODM4IDEuNzYzMDIgMTAuMTI1NyAxLjkxNDA2IDEwLjY2MjFDMi4wNjUxIDExLjE5ODYgMi4yNzg2NSAxMS43MDEyIDIuNTU0NjkgMTIuMTY5OUMyLjgzMDczIDEyLjYzODcgMy4xNTg4NSAxMy4wNjU4IDMuNTM5MDYgMTMuNDUxMkMzLjkyNDQ4IDEzLjgzMTQgNC4zNTE1NiAxNC4xNTk1IDQuODIwMzEgMTQuNDM1NkM1LjI4OTA2IDE0LjcxMTYgNS43OTE2NyAxNC45MjUxIDYuMzI4MTIgMTUuMDc2MkM2Ljg2NDU4IDE1LjIyNzIgNy40MjE4OCAxNS4zMDI4IDggMTUuMzAyOEM4LjU3ODEyIDE1LjMwMjggOS4xMzU0MiAxNS4yMjcyIDkuNjcxODggMTUuMDc2MkMxMC4yMDgzIDE0LjkyNTEgMTAuNzEwOSAxNC43MTE2IDExLjE3OTcgMTQuNDM1NkMxMS42NDg0IDE0LjE1OTUgMTIuMDcyOSAxMy44MzE0IDEyLjQ1MzEgMTMuNDUxMkMxMi44Mzg1IDEzLjA2NTggMTMuMTY5MyAxMi42Mzg3IDEzLjQ0NTMgMTIuMTY5OUMxMy43MjE0IDExLjcwMTIgMTMuOTM0OSAxMS4xOTg2IDE0LjA4NTkgMTAuNjYyMUMxNC4yMzcgMTAuMTI1NyAxNC4zMTI1IDkuNTY4MzggMTQuMzEyNSA4Ljk5MDI1QzE0LjMxMjUgOC40MTIxMyAxNC4yMzcgNy44NTQ4NCAxNC4wODU5IDcuMzE4MzhDMTMuOTM0OSA2Ljc4MTkyIDEzLjcyMTQgNi4yNzkzMSAxMy40NDUzIDUuODEwNTZDMTMuMTY5MyA1LjM0MTgxIDEyLjgzODUgNC45MTczNCAxMi40NTMxIDQuNTM3MTNDMTIuMDcyOSA0LjE1MTcxIDExLjY0ODQgMy44MjA5OCAxMS4xNzk3IDMuNTQ0OTRDMTAuNzEwOSAzLjI2ODkgMTAuMjA4MyAzLjA1NTM2IDkuNjcxODggMi45MDQzMUM5LjEzNTQyIDIuNzUzMjcgOC41NzgxMiAyLjY3Nzc1IDggMi42Nzc3NVpcIixmaWxsOlwiIzk3OTc5N1wifSl9KSl9LDM0Mjk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9KSxpPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZyKHQsZSxuKTtyZXR1cm4gbyh0LGUpLHR9LGE9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbD10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNvbnRhY3RDYXJkPXZvaWQgMDtjb25zdCBzPW4oNTg5MyksYz1pKG4oNjY4OSkpLHU9bChuKDc1MTgpKSxmPW4oNTM3NyksZD1uKDc0NDQpLHA9big5NzU4KSxoPW4oODgzMik7dC5Db250YWN0Q2FyZD1lPT57dmFye25hbWU6dCx0aXRsZTpuLHBob3RvVXJsOnIsdXNlSW5pdGlhbHM6bz0hMSxkZXRhaWxzOmksb25saW5lU3RhdHVzOmx9PWUsdT1hKGUsW1wibmFtZVwiLFwidGl0bGVcIixcInBob3RvVXJsXCIsXCJ1c2VJbml0aWFsc1wiLFwiZGV0YWlsc1wiLFwib25saW5lU3RhdHVzXCJdKTtjb25zdCBmPXJ8fG8sRT0oMCxjLnVzZU1lbW8pKCgoKT0+KDAsZC5nZXRJbml0aWFscykodCkpLFt0XSksUz0oMCxjLnVzZU1lbW8pKCgoKT0+KDAsaC5nZW5lcmF0ZUNvbG9yRnJvbVN0cmluZykodCkpLFt0XSk7cmV0dXJuKDAscy5qc3hzKSh2LE9iamVjdC5hc3NpZ24oe30sdSx7Y2hpbGRyZW46WygwLHMuanN4cykoZyx7Y2hpbGRyZW46W2YmJigwLHMuanN4cykoQyxPYmplY3QuYXNzaWduKHtpY29uQ29sb3I6U30se2NoaWxkcmVuOltyPygwLHMuanN4KSh5LHthbHQ6bixzcmM6cn0pOigwLHMuanN4KShtLHtjaGlsZHJlbjpFfSksKDAscy5qc3gpKHAuQ29udGFjdFN0YXR1c0ljb24se29ubGluZVN0YXR1czpsfSldfSkpLCgwLHMuanN4cykodyx7Y2hpbGRyZW46WygwLHMuanN4cykoYix7Y2hpbGRyZW46W1wiIFwiLHQsXCIgXCJdfSksbiYmKDAscy5qc3hzKSh4LHtjaGlsZHJlbjpbXCIgXCIsbixcIiBcIl19KV19KV19KSwoMCxzLmpzeCkoTCx7fSksKDAscy5qc3gpKF8se2NoaWxkcmVuOihudWxsPT1pP3ZvaWQgMDppLmxlbmd0aCk+MD9pLm1hcCgoKGUsbik9PigwLHMuanN4cykoYy5kZWZhdWx0LkZyYWdtZW50LHtjaGlsZHJlbjpbKDAscy5qc3gpKE8se2RlZmluaXRpb25zOmV9KSxuPGkubGVuZ3RoLTEmJigwLHMuanN4KShMLHtwYWRkaW5nOiEwfSldfSxgJHt0fS1kZXRhaWxzLSR7bn1gKSkpOigwLHMuanN4KShcInBcIix7Y2hpbGRyZW46XCJObyBpbmZvcm1hdGlvbiBhdmFpbGFibGUuXCJ9KX0pXX0pKX07Y29uc3Qgdj11LmRlZmF1bHQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBoZWlnaHQ6IDEwMCU7XG5gLGc9dS5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZy1ib3R0b206ICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9O1xuYCxDPXUuZGVmYXVsdC5kaXZgXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7ZT0+ZS5pY29uQ29sb3J9O1xuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gIGhlaWdodDogNjBweDtcbiAgd2lkdGg6IDYwcHg7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYCxtPXUuZGVmYXVsdC5zcGFuYFxuICBmb250LXNpemU6IDI0cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5gLHk9dS5kZWZhdWx0LmltZ2BcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG5gLHc9dS5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBtaW4td2lkdGg6IDA7XG4gIG1hcmdpbi1sZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuYCxiPXUuZGVmYXVsdC5zcGFuYFxuICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUubGFyZ2V9O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5sYXJnZX07XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRXZWlnaHQuYm9sZH07XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuYCx4PXUuZGVmYXVsdC5zcGFuYFxuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHRIZWxwfTtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmctYm90dG9tOiAycHg7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuYCxfPXUuZGVmYXVsdC5kaXZgXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgZmxleDogMTtcbiAgbWFyZ2luLXRvcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5sYXJnZX07XG4gIG1hcmdpbi1ib3R0b206ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIG92ZXJmbG93LXk6IGF1dG87XG5gLEw9dS5kZWZhdWx0LmRpdmBcbiAgYm9yZGVyLWJvdHRvbTogc29saWQgMXB4ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIG1hcmdpbi1ib3R0b206ICR7KHt0aGVtZTplLHBhZGRpbmc6dH0pPT50JiZlLnB4LmJhc2V9O1xuYCxPPSgwLHUuZGVmYXVsdCkoZi5EZWZpbml0aW9uTGlzdClgXG4gIGR0IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICB9XG5cbiAgZGQge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgfVxuYH0sMzE4ODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzQyOSksdCl9LDc0NDQ6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldEluaXRpYWxzPXZvaWQgMCx0LmdldEluaXRpYWxzPWU9Pntjb25zdCB0PWUudHJpbSgpLG49dC5sYXN0SW5kZXhPZihcIiBcIik7cmV0dXJuIG4+LTE/W3QuY2hhckF0KDApLHQuY2hhckF0KG4rMSldLmpvaW4oXCJcIik6dC5zbGljZSgwLDIpfX0sMTk5NjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lkg2PXQuSDU9dC5IND10LkgzPXQuSDI9dC5IMT10LkhlYWRpbmc9dC5kZWZhdWx0U2l6ZT12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGE9byhuKDc1MTgpKSxsPW4oMzQ3MSkscz1uKDc3NjkpO3QuZGVmYXVsdFNpemU9e2gxOmwuU2l6ZS54eHhsYXJnZSxoMjpsLlNpemUueHhsYXJnZSxoMzpsLlNpemUueGxhcmdlLGg0OmwuU2l6ZS5sYXJnZSxoNTpsLlNpemUuYmFzZSxoNjpsLlNpemUuc21hbGx9LHQuSGVhZGluZz1lPT57dmFye2xldmVsOm49MSxjbGFzc05hbWU6b309ZSxhPXIoZSxbXCJsZXZlbFwiLFwiY2xhc3NOYW1lXCJdKTtjb25zdCBsPWBoJHtufWA7cmV0dXJuKDAsaS5qc3gpKGMsT2JqZWN0LmFzc2lnbih7Y2xhc3NOYW1lOm8sYXM6bCxzaXplOnQuZGVmYXVsdFNpemVbbF0sd2VpZ2h0OlwiYm9sZFwifSxhKSl9O2NvbnN0IGM9KDAsYS5kZWZhdWx0KShzLlRleHQpYFxuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5saW5lSGVpZ2h0LmhlYWRpbmd9O1xuYDt0LkgxPSgwLGEuZGVmYXVsdCkodC5IZWFkaW5nKS5hdHRycygoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtsZXZlbDoxfSkpKWBgLHQuSDI9KDAsYS5kZWZhdWx0KSh0LkhlYWRpbmcpLmF0dHJzKChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2xldmVsOjJ9KSkpYGAsdC5IMz0oMCxhLmRlZmF1bHQpKHQuSGVhZGluZykuYXR0cnMoKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bGV2ZWw6M30pKSlgYCx0Lkg0PSgwLGEuZGVmYXVsdCkodC5IZWFkaW5nKS5hdHRycygoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtsZXZlbDo0fSkpKWBgLHQuSDU9KDAsYS5kZWZhdWx0KSh0LkhlYWRpbmcpLmF0dHJzKChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2xldmVsOjV9KSkpYGAsdC5INj0oMCxhLmRlZmF1bHQpKHQuSGVhZGluZykuYXR0cnMoKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bGV2ZWw6Nn0pKSlgYH0sNzA2MzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMTk5NiksdCl9LDc3Njk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDU0MzEpLHQpfSw1NDMxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRleHQ9dm9pZCAwO2NvbnN0IG89cihuKDc1MTgpKTt0LlRleHQ9by5kZWZhdWx0LnNwYW5gXG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICBmb250LXNpemU6ICR7KHt0aGVtZTplLHNpemU6dD1cImJhc2VcIn0pPT5lLmZvbnRTaXplW3RdfTtcbiAgZm9udC13ZWlnaHQ6ICR7KHt0aGVtZTplLHdlaWdodDp0PVwibm9ybWFsXCJ9KT0+ZS5mb250V2VpZ2h0W3RdfTtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUubGluZUhlaWdodC50ZXh0fTtcbmAsdC5UZXh0LmRpc3BsYXlOYW1lPVwiVGV4dFwifSwzMTkwOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnVzZUNvbG9yU2NoZW1lPXQuQ29sb3JTY2hlbWU9dm9pZCAwO2NvbnN0IHI9big2Njg5KTt0LkNvbG9yU2NoZW1lPXtkYXJrOlwiZGFya1wiLGxpZ2h0OlwibGlnaHRcIixzeXN0ZW06XCJzeXN0ZW1cIn07Y29uc3Qgbz1cIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaylcIjt0LnVzZUNvbG9yU2NoZW1lPSh7cmVxdWVzdGVkU2NoZW1lOmUsZmFsbGJhY2tTY2hlbWU6bj10LkNvbG9yU2NoZW1lLmxpZ2h0fSk9Pntjb25zdFtpLGFdPSgwLHIudXNlU3RhdGUpKG4pLGw9ZT0+YShlLm1hdGNoZXM/XCJkYXJrXCI6XCJsaWdodFwiKTtyZXR1cm4oMCxyLnVzZUVmZmVjdCkoKCgpPT57aWYoXCJsaWdodFwiPT09ZXx8XCJkYXJrXCI9PT1lKXJldHVybiB2b2lkIGEoZSk7Y29uc3QgdD13aW5kb3cubWF0Y2hNZWRpYShvKTtyZXR1cm4gYSh0Lm1hdGNoZXM/XCJkYXJrXCI6XCJsaWdodFwiKSx0LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIixsKSwoKT0+dC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsbCl9KSxbZSxpLG9dKSxpfX0sMzQ3OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnVzZURyb3Bkb3duS2V5Ym9hcmROYXZpZ2F0aW9uPXZvaWQgMDtjb25zdCByPW4oNjY4OSk7dC51c2VEcm9wZG93bktleWJvYXJkTmF2aWdhdGlvbj0oZSx0LG4sbyxpKT0+e2NvbnN0W2EsbF09KDAsci51c2VTdGF0ZSkoMCksW3MsY109KDAsci51c2VTdGF0ZSkoXCJcIik7bGV0IHU7aWYoKDAsci51c2VFZmZlY3QpKCgoKT0+e2lmKHQmJiFuKXtjb25zdCBuPWUuZmxhdCgpLmZpbmRJbmRleCgoZT0+ZS52YWx1ZT09PXQudmFsdWUpKTtuPj0wJiZsKG4pfX0pLFtlLHQsbl0pLCgwLHIudXNlRWZmZWN0KSgoKCk9PntufHxjKFwiXCIpfSksW25dKSwoMCxyLnVzZUVmZmVjdCkoKCgpPT57aWYocyl7Y29uc3QgdD1lLmZsYXQoKS5maW5kSW5kZXgoKGU9PmUudGl0bGUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHMudG9Mb3dlckNhc2UoKSkpKTt0Pj0wJiZsKHQpfX0pLFtlLHNdKSxlWzBdLmxlbmd0aD4wKXtjb25zdFt0LG5dPVtNYXRoLmZsb29yKGEvZVswXS5sZW5ndGgpLGElZVswXS5sZW5ndGhdO3U9ZVt0XVtuXX1yZXR1cm4oMCxyLnVzZUVmZmVjdCkoKCgpPT57Y29uc3QgZT1zZXRUaW1lb3V0KCgoKT0+e2MoXCJcIil9KSw1MDApO3JldHVybigpPT5jbGVhclRpbWVvdXQoZSl9KSxbc10pLHtmb2N1c2VkT3B0aW9uOnUsaGFuZGxlS2V5RG93bjp0PT57c3dpdGNoKHQuY29kZSl7Y2FzZVwiQXJyb3dVcFwiOnQucHJldmVudERlZmF1bHQoKSxhPjAmJmwoYS0xKTticmVhaztjYXNlXCJBcnJvd0Rvd25cIjp0LnByZXZlbnREZWZhdWx0KCksYTxlLmZsYXQoKS5sZW5ndGgtMSYmbChhKzEpO2JyZWFrO2Nhc2VcIkVudGVyXCI6Y2FzZVwiU3BhY2VcIjp0LnByZXZlbnREZWZhdWx0KCksbj8oKG51bGw9PXU/dm9pZCAwOnUub3ZlcnJpZGVPbkNsaWNrKT91Lm92ZXJyaWRlT25DbGljaygpOmkobnVsbCE9dT91OmVbMF1bMF0pLG8oKSk6bygpO2JyZWFrO2Nhc2VcIkVzY2FwZVwiOnQucHJldmVudERlZmF1bHQoKSxvKCExKTticmVhaztkZWZhdWx0Oi9eW2EtejAtOV0kL2kudGVzdCh0LmtleSkmJmMoKGU9PmUrdC5rZXkpKX19fX19LDQ0ODE6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudXNlTGF5b3V0TWVkaWFRdWVyeT10LnVzZU1lZGlhUXVlcnk9dm9pZCAwO2NvbnN0IHI9big2Njg5KSxvPWU9PnQ9Pntjb25zdFtuLG9dPSgwLHIudXNlU3RhdGUpKCExKTtyZXR1cm4gZSgoKCk9Pntjb25zdCBlPXdpbmRvdy5tYXRjaE1lZGlhKHQpO2lmKGUpe2UubWF0Y2hlcyE9PW4mJm8oZS5tYXRjaGVzKTtjb25zdCB0PSgpPT5vKGUubWF0Y2hlcykscj0oKT0+ZS5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsdCk7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLHQpLHJ9fSksW24sdF0pLG59O3QudXNlTWVkaWFRdWVyeT1vKHIudXNlRWZmZWN0KSx0LnVzZUxheW91dE1lZGlhUXVlcnk9byhyLnVzZUxheW91dEVmZmVjdCl9LDI3NzY6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudXNlUHJldmlvdXM9dm9pZCAwO2NvbnN0IHI9big2Njg5KTt0LnVzZVByZXZpb3VzPWU9Pntjb25zdCB0PSgwLHIudXNlUmVmKSgpO3JldHVybigwLHIudXNlRWZmZWN0KSgoKCk9Pnt0LmN1cnJlbnQ9ZX0pLFtlXSksdC5jdXJyZW50fX0sNzA4ODooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC51c2VUaGVtZT12b2lkIDA7Y29uc3Qgcj1uKDY2ODkpLG89big0MjY2KSxpPW4oMzE5MCksYT1uKDk1MDcpLGw9e1tpLkNvbG9yU2NoZW1lLmRhcmtdOm8uT3BlbkZpbkRhcmtUaGVtZSxbaS5Db2xvclNjaGVtZS5saWdodF06by5PcGVuRmluTGlnaHRUaGVtZX07dC51c2VUaGVtZT0oe3RoZW1lczplLHNjaGVtZTp0LGNvbmZpZzpufSk9Pntjb25zdCBvPSgwLGkudXNlQ29sb3JTY2hlbWUpKHtyZXF1ZXN0ZWRTY2hlbWU6dH0pLHM9KDAsci51c2VNZW1vKSgoKCk9PnZvaWQgMD09PWU/bFtvXTooMCxhLmNyZWF0ZVRoZW1lKShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbFtvXS5wYWxldHRlKSxlW29dLnBhbGV0dGUpLG8pKSxbZSxvXSk7cmV0dXJuIG4/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHMpLHtfY29uZmlnOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxzLl9jb25maWcpLG4pfSk6c319LDM0MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNDEzMCksdCksbyhuKDc0MDEpLHQpLG8obig0OTI1KSx0KSxvKG4oMjYwOSksdCksbyhuKDMxMzYpLHQpLG8obig5NzM0KSx0KSxvKG4oNjAyNiksdCksbyhuKDk2MzQpLHQpLG8obigxNDQpLHQpLG8obig5MjM5KSx0KSxvKG4oODg3OCksdCksbyhuKDg1MTApLHQpLG8obig4OTUxKSx0KSxvKG4oMTk3OCksdCksbyhuKDgwNTEpLHQpLG8obig0MTY5KSx0KSxvKG4oMzY0MSksdCksbyhuKDUyMTUpLHQpLG8obig5NjU0KSx0KSxvKG4oMzExOSksdCksbyhuKDEzMzUpLHQpLG8obig1Mzc3KSx0KSxvKG4oMTA2OSksdCksbyhuKDk1MDcpLHQpLG8obigzMTg4KSx0KSxvKG4oNzA2MyksdCksbyhuKDc3NjkpLHQpLG8obigzMTkwKSx0KSxvKG4oNDQ4MSksdCksbyhuKDI3NzYpLHQpLG8obigzNDcpLHQpLG8obig0OTkxKSx0KSxvKG4oODgzMiksdCl9LDg4MzI6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdlbmVyYXRlQ29sb3JGcm9tU3RyaW5nPXZvaWQgMCx0LmdlbmVyYXRlQ29sb3JGcm9tU3RyaW5nPWZ1bmN0aW9uKGU9XCJcIix0PTcwLG49NTApe2xldCByPTA7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspcj1lLmNoYXJDb2RlQXQodCkrKChyPDw1KS1yKSxyJj1yO3JldHVybmBoc2woJHtyJTM2MH0sICR7dH0lLCAke259JSlgfX0sNjYwNjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZ2VuZXJhdGVSYW5kb21JbnRlZ2VyPXQuY2xhbXA9dm9pZCAwLHQuY2xhbXA9KGUsdCxuKT0+dCYmbj9NYXRoLm1pbihNYXRoLm1heChlLHQpLG4pOm4mJiF0P01hdGgubWluKGUsbik6dCYmIW4/TWF0aC5tYXgoZSx0KTplLHQuZ2VuZXJhdGVSYW5kb21JbnRlZ2VyPSgpPT5NYXRoLmZsb29yKDFlMypNYXRoLnJhbmRvbSgpKX0sNDk5MTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQud2hlbkZpbj12b2lkIDAsdC53aGVuRmluPWZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1cInVuZGVmaW5lZFwiIT10eXBlb2YgZmluP2U6dDtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBuP24oKTpufX0sNjU1OihlLHQsbik9PntuLnIodCksbi5kKHQse19fYXNzaWduOigpPT5pLF9fYXN5bmNEZWxlZ2F0b3I6KCk9Pk8sX19hc3luY0dlbmVyYXRvcjooKT0+TCxfX2FzeW5jVmFsdWVzOigpPT5FLF9fYXdhaXQ6KCk9Pl8sX19hd2FpdGVyOigpPT5oLF9fY2xhc3NQcml2YXRlRmllbGRHZXQ6KCk9PlIsX19jbGFzc1ByaXZhdGVGaWVsZEluOigpPT5BLF9fY2xhc3NQcml2YXRlRmllbGRTZXQ6KCk9PlAsX19jcmVhdGVCaW5kaW5nOigpPT5nLF9fZGVjb3JhdGU6KCk9PmwsX19lc0RlY29yYXRlOigpPT5jLF9fZXhwb3J0U3RhcjooKT0+QyxfX2V4dGVuZHM6KCk9Pm8sX19nZW5lcmF0b3I6KCk9PnYsX19pbXBvcnREZWZhdWx0OigpPT5rLF9faW1wb3J0U3RhcjooKT0+aixfX21ha2VUZW1wbGF0ZU9iamVjdDooKT0+UyxfX21ldGFkYXRhOigpPT5wLF9fcGFyYW06KCk9PnMsX19wcm9wS2V5OigpPT5mLF9fcmVhZDooKT0+eSxfX3Jlc3Q6KCk9PmEsX19ydW5Jbml0aWFsaXplcnM6KCk9PnUsX19zZXRGdW5jdGlvbk5hbWU6KCk9PmQsX19zcHJlYWQ6KCk9PncsX19zcHJlYWRBcnJheTooKT0+eCxfX3NwcmVhZEFycmF5czooKT0+YixfX3ZhbHVlczooKT0+bX0pO3ZhciByPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHI9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSxyKGUsdCl9O2Z1bmN0aW9uIG8oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfXIoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihuLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgbil9dmFyIGk9ZnVuY3Rpb24oKXtyZXR1cm4gaT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQsbj0xLHI9YXJndW1lbnRzLmxlbmd0aDtuPHI7bisrKWZvcih2YXIgbyBpbiB0PWFyZ3VtZW50c1tuXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxvKSYmKGVbb109dFtvXSk7cmV0dXJuIGV9LGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtmdW5jdGlvbiBhKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn1mdW5jdGlvbiBsKGUsdCxuLHIpe3ZhciBvLGk9YXJndW1lbnRzLmxlbmd0aCxhPWk8Mz90Om51bGw9PT1yP3I9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pOnI7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpYT1SZWZsZWN0LmRlY29yYXRlKGUsdCxuLHIpO2Vsc2UgZm9yKHZhciBsPWUubGVuZ3RoLTE7bD49MDtsLS0pKG89ZVtsXSkmJihhPShpPDM/byhhKTppPjM/byh0LG4sYSk6byh0LG4pKXx8YSk7cmV0dXJuIGk+MyYmYSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbixhKSxhfWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXt0KG4scixlKX19ZnVuY3Rpb24gYyhlLHQsbixyLG8saSl7ZnVuY3Rpb24gYShlKXtpZih2b2lkIDAhPT1lJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoXCJGdW5jdGlvbiBleHBlY3RlZFwiKTtyZXR1cm4gZX1mb3IodmFyIGwscz1yLmtpbmQsYz1cImdldHRlclwiPT09cz9cImdldFwiOlwic2V0dGVyXCI9PT1zP1wic2V0XCI6XCJ2YWx1ZVwiLHU9IXQmJmU/ci5zdGF0aWM/ZTplLnByb3RvdHlwZTpudWxsLGY9dHx8KHU/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih1LHIubmFtZSk6e30pLGQ9ITEscD1uLmxlbmd0aC0xO3A+PTA7cC0tKXt2YXIgaD17fTtmb3IodmFyIHYgaW4gciloW3ZdPVwiYWNjZXNzXCI9PT12P3t9OnJbdl07Zm9yKHZhciB2IGluIHIuYWNjZXNzKWguYWNjZXNzW3ZdPXIuYWNjZXNzW3ZdO2guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oZSl7aWYoZCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpO2kucHVzaChhKGV8fG51bGwpKX07dmFyIGc9KDAsbltwXSkoXCJhY2Nlc3NvclwiPT09cz97Z2V0OmYuZ2V0LHNldDpmLnNldH06ZltjXSxoKTtpZihcImFjY2Vzc29yXCI9PT1zKXtpZih2b2lkIDA9PT1nKWNvbnRpbnVlO2lmKG51bGw9PT1nfHxcIm9iamVjdFwiIT10eXBlb2YgZyl0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkXCIpOyhsPWEoZy5nZXQpKSYmKGYuZ2V0PWwpLChsPWEoZy5zZXQpKSYmKGYuc2V0PWwpLChsPWEoZy5pbml0KSkmJm8ucHVzaChsKX1lbHNlKGw9YShnKSkmJihcImZpZWxkXCI9PT1zP28ucHVzaChsKTpmW2NdPWwpfXUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LHIubmFtZSxmKSxkPSEwfWZ1bmN0aW9uIHUoZSx0LG4pe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjIsbz0wO288dC5sZW5ndGg7bysrKW49cj90W29dLmNhbGwoZSxuKTp0W29dLmNhbGwoZSk7cmV0dXJuIHI/bjp2b2lkIDB9ZnVuY3Rpb24gZihlKXtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgZT9lOlwiXCIuY29uY2F0KGUpfWZ1bmN0aW9uIGQoZSx0LG4pe3JldHVyblwic3ltYm9sXCI9PXR5cGVvZiB0JiYodD10LmRlc2NyaXB0aW9uP1wiW1wiLmNvbmNhdCh0LmRlc2NyaXB0aW9uLFwiXVwiKTpcIlwiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIm5hbWVcIix7Y29uZmlndXJhYmxlOiEwLHZhbHVlOm4/XCJcIi5jb25jYXQobixcIiBcIix0KTp0fSl9ZnVuY3Rpb24gcChlLHQpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhKXJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKGUsdCl9ZnVuY3Rpb24gaChlLHQsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24obyxpKXtmdW5jdGlvbiBhKGUpe3RyeXtzKHIubmV4dChlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gbChlKXt0cnl7cyhyLnRocm93KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiBzKGUpe3ZhciB0O2UuZG9uZT9vKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihhLGwpfXMoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX1mdW5jdGlvbiB2KGUsdCl7dmFyIG4scixvLGksYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZvWzBdKXRocm93IG9bMV07cmV0dXJuIG9bMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gaT17bmV4dDpsKDApLHRocm93OmwoMSkscmV0dXJuOmwoMil9LFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmKGlbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksaTtmdW5jdGlvbiBsKGwpe3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gZnVuY3Rpb24obCl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO2kmJihpPTAsbFswXSYmKGE9MCkpLGE7KXRyeXtpZihuPTEsciYmKG89MiZsWzBdP3IucmV0dXJuOmxbMF0/ci50aHJvd3x8KChvPXIucmV0dXJuKSYmby5jYWxsKHIpLDApOnIubmV4dCkmJiEobz1vLmNhbGwocixsWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gocj0wLG8mJihsPVsyJmxbMF0sby52YWx1ZV0pLGxbMF0pe2Nhc2UgMDpjYXNlIDE6bz1sO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpsWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKysscj1sWzFdLGw9WzBdO2NvbnRpbnVlO2Nhc2UgNzpsPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKG89KG89YS50cnlzKS5sZW5ndGg+MCYmb1tvLmxlbmd0aC0xXSl8fDYhPT1sWzBdJiYyIT09bFswXSkpe2E9MDtjb250aW51ZX1pZigzPT09bFswXSYmKCFvfHxsWzFdPm9bMF0mJmxbMV08b1szXSkpe2EubGFiZWw9bFsxXTticmVha31pZig2PT09bFswXSYmYS5sYWJlbDxvWzFdKXthLmxhYmVsPW9bMV0sbz1sO2JyZWFrfWlmKG8mJmEubGFiZWw8b1syXSl7YS5sYWJlbD1vWzJdLGEub3BzLnB1c2gobCk7YnJlYWt9b1syXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfWw9dC5jYWxsKGUsYSl9Y2F0Y2goZSl7bD1bNixlXSxyPTB9ZmluYWxseXtuPW89MH1pZig1JmxbMF0pdGhyb3cgbFsxXTtyZXR1cm57dmFsdWU6bFswXT9sWzFdOnZvaWQgMCxkb25lOiEwfX0oW2wsc10pfX19dmFyIGc9T2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfTtmdW5jdGlvbiBDKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8Zyh0LGUsbil9ZnVuY3Rpb24gbShlKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixuPXQmJmVbdF0scj0wO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZihlJiZcIm51bWJlclwiPT10eXBlb2YgZS5sZW5ndGgpcmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSYmcj49ZS5sZW5ndGgmJihlPXZvaWQgMCkse3ZhbHVlOmUmJmVbcisrXSxkb25lOiFlfX19O3Rocm93IG5ldyBUeXBlRXJyb3IodD9cIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCI6XCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpfWZ1bmN0aW9uIHkoZSx0KXt2YXIgbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXTtpZighbilyZXR1cm4gZTt2YXIgcixvLGk9bi5jYWxsKGUpLGE9W107dHJ5e2Zvcig7KHZvaWQgMD09PXR8fHQtLSA+MCkmJiEocj1pLm5leHQoKSkuZG9uZTspYS5wdXNoKHIudmFsdWUpfWNhdGNoKGUpe289e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e3ImJiFyLmRvbmUmJihuPWkucmV0dXJuKSYmbi5jYWxsKGkpfWZpbmFsbHl7aWYobyl0aHJvdyBvLmVycm9yfX1yZXR1cm4gYX1mdW5jdGlvbiB3KCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWU9ZS5jb25jYXQoeShhcmd1bWVudHNbdF0pKTtyZXR1cm4gZX1mdW5jdGlvbiBiKCl7Zm9yKHZhciBlPTAsdD0wLG49YXJndW1lbnRzLmxlbmd0aDt0PG47dCsrKWUrPWFyZ3VtZW50c1t0XS5sZW5ndGg7dmFyIHI9QXJyYXkoZSksbz0wO2Zvcih0PTA7dDxuO3QrKylmb3IodmFyIGk9YXJndW1lbnRzW3RdLGE9MCxsPWkubGVuZ3RoO2E8bDthKyssbysrKXJbb109aVthXTtyZXR1cm4gcn1mdW5jdGlvbiB4KGUsdCxuKXtpZihufHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIHIsbz0wLGk9dC5sZW5ndGg7bzxpO28rKykhciYmbyBpbiB0fHwocnx8KHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLG8pKSxyW29dPXRbb10pO3JldHVybiBlLmNvbmNhdChyfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9ZnVuY3Rpb24gXyhlKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF8/KHRoaXMudj1lLHRoaXMpOm5ldyBfKGUpfWZ1bmN0aW9uIEwoZSx0LG4pe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO3ZhciByLG89bi5hcHBseShlLHR8fFtdKSxpPVtdO3JldHVybiByPXt9LGEoXCJuZXh0XCIpLGEoXCJ0aHJvd1wiKSxhKFwicmV0dXJuXCIpLHJbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHI7ZnVuY3Rpb24gYShlKXtvW2VdJiYocltlXT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4scil7aS5wdXNoKFtlLHQsbixyXSk+MXx8bChlLHQpfSkpfSl9ZnVuY3Rpb24gbChlLHQpe3RyeXsobj1vW2VdKHQpKS52YWx1ZSBpbnN0YW5jZW9mIF8/UHJvbWlzZS5yZXNvbHZlKG4udmFsdWUudikudGhlbihzLGMpOnUoaVswXVsyXSxuKX1jYXRjaChlKXt1KGlbMF1bM10sZSl9dmFyIG59ZnVuY3Rpb24gcyhlKXtsKFwibmV4dFwiLGUpfWZ1bmN0aW9uIGMoZSl7bChcInRocm93XCIsZSl9ZnVuY3Rpb24gdShlLHQpe2UodCksaS5zaGlmdCgpLGkubGVuZ3RoJiZsKGlbMF1bMF0saVswXVsxXSl9fWZ1bmN0aW9uIE8oZSl7dmFyIHQsbjtyZXR1cm4gdD17fSxyKFwibmV4dFwiKSxyKFwidGhyb3dcIiwoZnVuY3Rpb24oZSl7dGhyb3cgZX0pKSxyKFwicmV0dXJuXCIpLHRbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0O2Z1bmN0aW9uIHIocixvKXt0W3JdPWVbcl0/ZnVuY3Rpb24odCl7cmV0dXJuKG49IW4pP3t2YWx1ZTpfKGVbcl0odCkpLGRvbmU6ITF9Om8/byh0KTp0fTpvfX1mdW5jdGlvbiBFKGUpe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO3ZhciB0LG49ZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl07cmV0dXJuIG4/bi5jYWxsKGUpOihlPW0oZSksdD17fSxyKFwibmV4dFwiKSxyKFwidGhyb3dcIikscihcInJldHVyblwiKSx0W1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0KTtmdW5jdGlvbiByKG4pe3Rbbl09ZVtuXSYmZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8peyFmdW5jdGlvbihlLHQsbixyKXtQcm9taXNlLnJlc29sdmUocikudGhlbigoZnVuY3Rpb24odCl7ZSh7dmFsdWU6dCxkb25lOm59KX0pLHQpfShyLG8sKHQ9ZVtuXSh0KSkuZG9uZSx0LnZhbHVlKX0pKX19fWZ1bmN0aW9uIFMoZSx0KXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5P09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwicmF3XCIse3ZhbHVlOnR9KTplLnJhdz10LGV9dmFyIE09T2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH07ZnVuY3Rpb24gaihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZnKHQsZSxuKTtyZXR1cm4gTSh0LGUpLHR9ZnVuY3Rpb24gayhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gUihlLHQsbixyKXtpZihcImFcIj09PW4mJiFyKXRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdD9lIT09dHx8IXI6IXQuaGFzKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7cmV0dXJuXCJtXCI9PT1uP3I6XCJhXCI9PT1uP3IuY2FsbChlKTpyP3IudmFsdWU6dC5nZXQoZSl9ZnVuY3Rpb24gUChlLHQsbixyLG8pe2lmKFwibVwiPT09cil0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO2lmKFwiYVwiPT09ciYmIW8pdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P2UhPT10fHwhbzohdC5oYXMoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO3JldHVyblwiYVwiPT09cj9vLmNhbGwoZSxuKTpvP28udmFsdWU9bjp0LnNldChlLG4pLG59ZnVuY3Rpb24gQShlLHQpe2lmKG51bGw9PT10fHxcIm9iamVjdFwiIT10eXBlb2YgdCYmXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZT90PT09ZTplLmhhcyh0KX19LDY2ODk6ZT0+e2UuZXhwb3J0cz1uKDM3OCl9LDc1MTg6ZT0+e2UuZXhwb3J0cz1uKDkyMSl9LDgyMDc6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtyZXR1cm4oZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSkodCl9dmFyIHQ9L15cXHMrLyxuPS9cXHMrJC87ZnVuY3Rpb24gcihvLGkpe2lmKGk9aXx8e30sKG89b3x8XCJcIilpbnN0YW5jZW9mIHIpcmV0dXJuIG87aWYoISh0aGlzIGluc3RhbmNlb2YgcikpcmV0dXJuIG5ldyByKG8saSk7dmFyIGE9ZnVuY3Rpb24ocil7dmFyIG8saSxhLGw9e3I6MCxnOjAsYjowfSxzPTEsYz1udWxsLHU9bnVsbCxmPW51bGwsZD0hMSxwPSExO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiByJiYocj1mdW5jdGlvbihlKXtlPWUucmVwbGFjZSh0LFwiXCIpLnJlcGxhY2UobixcIlwiKS50b0xvd2VyQ2FzZSgpO3ZhciByLG89ITE7aWYod1tlXSllPXdbZV0sbz0hMDtlbHNlIGlmKFwidHJhbnNwYXJlbnRcIj09ZSlyZXR1cm57cjowLGc6MCxiOjAsYTowLGZvcm1hdDpcIm5hbWVcIn07cmV0dXJuKHI9QS5yZ2IuZXhlYyhlKSk/e3I6clsxXSxnOnJbMl0sYjpyWzNdfToocj1BLnJnYmEuZXhlYyhlKSk/e3I6clsxXSxnOnJbMl0sYjpyWzNdLGE6cls0XX06KHI9QS5oc2wuZXhlYyhlKSk/e2g6clsxXSxzOnJbMl0sbDpyWzNdfToocj1BLmhzbGEuZXhlYyhlKSk/e2g6clsxXSxzOnJbMl0sbDpyWzNdLGE6cls0XX06KHI9QS5oc3YuZXhlYyhlKSk/e2g6clsxXSxzOnJbMl0sdjpyWzNdfToocj1BLmhzdmEuZXhlYyhlKSk/e2g6clsxXSxzOnJbMl0sdjpyWzNdLGE6cls0XX06KHI9QS5oZXg4LmV4ZWMoZSkpP3tyOk8oclsxXSksZzpPKHJbMl0pLGI6TyhyWzNdKSxhOmoocls0XSksZm9ybWF0Om8/XCJuYW1lXCI6XCJoZXg4XCJ9OihyPUEuaGV4Ni5leGVjKGUpKT97cjpPKHJbMV0pLGc6TyhyWzJdKSxiOk8oclszXSksZm9ybWF0Om8/XCJuYW1lXCI6XCJoZXhcIn06KHI9QS5oZXg0LmV4ZWMoZSkpP3tyOk8oclsxXStcIlwiK3JbMV0pLGc6TyhyWzJdK1wiXCIrclsyXSksYjpPKHJbM10rXCJcIityWzNdKSxhOmoocls0XStcIlwiK3JbNF0pLGZvcm1hdDpvP1wibmFtZVwiOlwiaGV4OFwifTohIShyPUEuaGV4My5leGVjKGUpKSYme3I6TyhyWzFdK1wiXCIrclsxXSksZzpPKHJbMl0rXCJcIityWzJdKSxiOk8oclszXStcIlwiK3JbM10pLGZvcm1hdDpvP1wibmFtZVwiOlwiaGV4XCJ9fShyKSksXCJvYmplY3RcIj09ZShyKSYmKEkoci5yKSYmSShyLmcpJiZJKHIuYik/KG89ci5yLGk9ci5nLGE9ci5iLGw9e3I6MjU1Kl8obywyNTUpLGc6MjU1Kl8oaSwyNTUpLGI6MjU1Kl8oYSwyNTUpfSxkPSEwLHA9XCIlXCI9PT1TdHJpbmcoci5yKS5zdWJzdHIoLTEpP1wicHJnYlwiOlwicmdiXCIpOkkoci5oKSYmSShyLnMpJiZJKHIudik/KGM9UyhyLnMpLHU9UyhyLnYpLGw9ZnVuY3Rpb24oZSx0LG4pe2U9NipfKGUsMzYwKSx0PV8odCwxMDApLG49XyhuLDEwMCk7dmFyIHI9TWF0aC5mbG9vcihlKSxvPWUtcixpPW4qKDEtdCksYT1uKigxLW8qdCksbD1uKigxLSgxLW8pKnQpLHM9ciU2O3JldHVybntyOjI1NSpbbixhLGksaSxsLG5dW3NdLGc6MjU1KltsLG4sbixhLGksaV1bc10sYjoyNTUqW2ksaSxsLG4sbixhXVtzXX19KHIuaCxjLHUpLGQ9ITAscD1cImhzdlwiKTpJKHIuaCkmJkkoci5zKSYmSShyLmwpJiYoYz1TKHIucyksZj1TKHIubCksbD1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpO2Z1bmN0aW9uIGEoZSx0LG4pe3JldHVybiBuPDAmJihuKz0xKSxuPjEmJihuLT0xKSxuPDEvNj9lKzYqKHQtZSkqbjpuPC41P3Q6bjwyLzM/ZSsodC1lKSooMi8zLW4pKjY6ZX1pZihlPV8oZSwzNjApLHQ9Xyh0LDEwMCksbj1fKG4sMTAwKSwwPT09dClyPW89aT1uO2Vsc2V7dmFyIGw9bjwuNT9uKigxK3QpOm4rdC1uKnQscz0yKm4tbDtyPWEocyxsLGUrMS8zKSxvPWEocyxsLGUpLGk9YShzLGwsZS0xLzMpfXJldHVybntyOjI1NSpyLGc6MjU1Km8sYjoyNTUqaX19KHIuaCxjLGYpLGQ9ITAscD1cImhzbFwiKSxyLmhhc093blByb3BlcnR5KFwiYVwiKSYmKHM9ci5hKSkscz14KHMpLHtvazpkLGZvcm1hdDpyLmZvcm1hdHx8cCxyOk1hdGgubWluKDI1NSxNYXRoLm1heChsLnIsMCkpLGc6TWF0aC5taW4oMjU1LE1hdGgubWF4KGwuZywwKSksYjpNYXRoLm1pbigyNTUsTWF0aC5tYXgobC5iLDApKSxhOnN9fShvKTt0aGlzLl9vcmlnaW5hbElucHV0PW8sdGhpcy5fcj1hLnIsdGhpcy5fZz1hLmcsdGhpcy5fYj1hLmIsdGhpcy5fYT1hLmEsdGhpcy5fcm91bmRBPU1hdGgucm91bmQoMTAwKnRoaXMuX2EpLzEwMCx0aGlzLl9mb3JtYXQ9aS5mb3JtYXR8fGEuZm9ybWF0LHRoaXMuX2dyYWRpZW50VHlwZT1pLmdyYWRpZW50VHlwZSx0aGlzLl9yPDEmJih0aGlzLl9yPU1hdGgucm91bmQodGhpcy5fcikpLHRoaXMuX2c8MSYmKHRoaXMuX2c9TWF0aC5yb3VuZCh0aGlzLl9nKSksdGhpcy5fYjwxJiYodGhpcy5fYj1NYXRoLnJvdW5kKHRoaXMuX2IpKSx0aGlzLl9vaz1hLm9rfWZ1bmN0aW9uIG8oZSx0LG4pe2U9XyhlLDI1NSksdD1fKHQsMjU1KSxuPV8obiwyNTUpO3ZhciByLG8saT1NYXRoLm1heChlLHQsbiksYT1NYXRoLm1pbihlLHQsbiksbD0oaSthKS8yO2lmKGk9PWEpcj1vPTA7ZWxzZXt2YXIgcz1pLWE7c3dpdGNoKG89bD4uNT9zLygyLWktYSk6cy8oaSthKSxpKXtjYXNlIGU6cj0odC1uKS9zKyh0PG4/NjowKTticmVhaztjYXNlIHQ6cj0obi1lKS9zKzI7YnJlYWs7Y2FzZSBuOnI9KGUtdCkvcys0fXIvPTZ9cmV0dXJue2g6cixzOm8sbH19ZnVuY3Rpb24gaShlLHQsbil7ZT1fKGUsMjU1KSx0PV8odCwyNTUpLG49XyhuLDI1NSk7dmFyIHIsbyxpPU1hdGgubWF4KGUsdCxuKSxhPU1hdGgubWluKGUsdCxuKSxsPWkscz1pLWE7aWYobz0wPT09aT8wOnMvaSxpPT1hKXI9MDtlbHNle3N3aXRjaChpKXtjYXNlIGU6cj0odC1uKS9zKyh0PG4/NjowKTticmVhaztjYXNlIHQ6cj0obi1lKS9zKzI7YnJlYWs7Y2FzZSBuOnI9KGUtdCkvcys0fXIvPTZ9cmV0dXJue2g6cixzOm8sdjpsfX1mdW5jdGlvbiBhKGUsdCxuLHIpe3ZhciBvPVtFKE1hdGgucm91bmQoZSkudG9TdHJpbmcoMTYpKSxFKE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpKSxFKE1hdGgucm91bmQobikudG9TdHJpbmcoMTYpKV07cmV0dXJuIHImJm9bMF0uY2hhckF0KDApPT1vWzBdLmNoYXJBdCgxKSYmb1sxXS5jaGFyQXQoMCk9PW9bMV0uY2hhckF0KDEpJiZvWzJdLmNoYXJBdCgwKT09b1syXS5jaGFyQXQoMSk/b1swXS5jaGFyQXQoMCkrb1sxXS5jaGFyQXQoMCkrb1syXS5jaGFyQXQoMCk6by5qb2luKFwiXCIpfWZ1bmN0aW9uIGwoZSx0LG4scil7cmV0dXJuW0UoTShyKSksRShNYXRoLnJvdW5kKGUpLnRvU3RyaW5nKDE2KSksRShNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KSksRShNYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDE2KSldLmpvaW4oXCJcIil9ZnVuY3Rpb24gcyhlLHQpe3Q9MD09PXQ/MDp0fHwxMDt2YXIgbj1yKGUpLnRvSHNsKCk7cmV0dXJuIG4ucy09dC8xMDAsbi5zPUwobi5zKSxyKG4pfWZ1bmN0aW9uIGMoZSx0KXt0PTA9PT10PzA6dHx8MTA7dmFyIG49cihlKS50b0hzbCgpO3JldHVybiBuLnMrPXQvMTAwLG4ucz1MKG4ucykscihuKX1mdW5jdGlvbiB1KGUpe3JldHVybiByKGUpLmRlc2F0dXJhdGUoMTAwKX1mdW5jdGlvbiBmKGUsdCl7dD0wPT09dD8wOnR8fDEwO3ZhciBuPXIoZSkudG9Ic2woKTtyZXR1cm4gbi5sKz10LzEwMCxuLmw9TChuLmwpLHIobil9ZnVuY3Rpb24gZChlLHQpe3Q9MD09PXQ/MDp0fHwxMDt2YXIgbj1yKGUpLnRvUmdiKCk7cmV0dXJuIG4ucj1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxuLnItTWF0aC5yb3VuZCgtdC8xMDAqMjU1KSkpLG4uZz1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxuLmctTWF0aC5yb3VuZCgtdC8xMDAqMjU1KSkpLG4uYj1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxuLmItTWF0aC5yb3VuZCgtdC8xMDAqMjU1KSkpLHIobil9ZnVuY3Rpb24gcChlLHQpe3Q9MD09PXQ/MDp0fHwxMDt2YXIgbj1yKGUpLnRvSHNsKCk7cmV0dXJuIG4ubC09dC8xMDAsbi5sPUwobi5sKSxyKG4pfWZ1bmN0aW9uIGgoZSx0KXt2YXIgbj1yKGUpLnRvSHNsKCksbz0obi5oK3QpJTM2MDtyZXR1cm4gbi5oPW88MD8zNjArbzpvLHIobil9ZnVuY3Rpb24gdihlKXt2YXIgdD1yKGUpLnRvSHNsKCk7cmV0dXJuIHQuaD0odC5oKzE4MCklMzYwLHIodCl9ZnVuY3Rpb24gZyhlLHQpe2lmKGlzTmFOKHQpfHx0PD0wKXRocm93IG5ldyBFcnJvcihcIkFyZ3VtZW50IHRvIHBvbHlhZCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyXCIpO2Zvcih2YXIgbj1yKGUpLnRvSHNsKCksbz1bcihlKV0saT0zNjAvdCxhPTE7YTx0O2ErKylvLnB1c2gocih7aDoobi5oK2EqaSklMzYwLHM6bi5zLGw6bi5sfSkpO3JldHVybiBvfWZ1bmN0aW9uIEMoZSl7dmFyIHQ9cihlKS50b0hzbCgpLG49dC5oO3JldHVybltyKGUpLHIoe2g6KG4rNzIpJTM2MCxzOnQucyxsOnQubH0pLHIoe2g6KG4rMjE2KSUzNjAsczp0LnMsbDp0Lmx9KV19ZnVuY3Rpb24gbShlLHQsbil7dD10fHw2LG49bnx8MzA7dmFyIG89cihlKS50b0hzbCgpLGk9MzYwL24sYT1bcihlKV07Zm9yKG8uaD0oby5oLShpKnQ+PjEpKzcyMCklMzYwOy0tdDspby5oPShvLmgraSklMzYwLGEucHVzaChyKG8pKTtyZXR1cm4gYX1mdW5jdGlvbiB5KGUsdCl7dD10fHw2O2Zvcih2YXIgbj1yKGUpLnRvSHN2KCksbz1uLmgsaT1uLnMsYT1uLnYsbD1bXSxzPTEvdDt0LS07KWwucHVzaChyKHtoOm8sczppLHY6YX0pKSxhPShhK3MpJTE7cmV0dXJuIGx9ci5wcm90b3R5cGU9e2lzRGFyazpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEJyaWdodG5lc3MoKTwxMjh9LGlzTGlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0RhcmsoKX0saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9va30sZ2V0T3JpZ2luYWxJbnB1dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vcmlnaW5hbElucHV0fSxnZXRGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9ybWF0fSxnZXRBbHBoYTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hfSxnZXRCcmlnaHRuZXNzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50b1JnYigpO3JldHVybigyOTkqZS5yKzU4NyplLmcrMTE0KmUuYikvMWUzfSxnZXRMdW1pbmFuY2U6ZnVuY3Rpb24oKXt2YXIgZSx0LG4scj10aGlzLnRvUmdiKCk7cmV0dXJuIGU9ci5yLzI1NSx0PXIuZy8yNTUsbj1yLmIvMjU1LC4yMTI2KihlPD0uMDM5Mjg/ZS8xMi45MjpNYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpKSsuNzE1MioodDw9LjAzOTI4P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KSkrLjA3MjIqKG48PS4wMzkyOD9uLzEyLjkyOk1hdGgucG93KChuKy4wNTUpLzEuMDU1LDIuNCkpfSxzZXRBbHBoYTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYT14KGUpLHRoaXMuX3JvdW5kQT1NYXRoLnJvdW5kKDEwMCp0aGlzLl9hKS8xMDAsdGhpc30sdG9Ic3Y6ZnVuY3Rpb24oKXt2YXIgZT1pKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iKTtyZXR1cm57aDozNjAqZS5oLHM6ZS5zLHY6ZS52LGE6dGhpcy5fYX19LHRvSHN2U3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGU9aSh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYiksdD1NYXRoLnJvdW5kKDM2MCplLmgpLG49TWF0aC5yb3VuZCgxMDAqZS5zKSxyPU1hdGgucm91bmQoMTAwKmUudik7cmV0dXJuIDE9PXRoaXMuX2E/XCJoc3YoXCIrdCtcIiwgXCIrbitcIiUsIFwiK3IrXCIlKVwiOlwiaHN2YShcIit0K1wiLCBcIituK1wiJSwgXCIrcitcIiUsIFwiK3RoaXMuX3JvdW5kQStcIilcIn0sdG9Ic2w6ZnVuY3Rpb24oKXt2YXIgZT1vKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iKTtyZXR1cm57aDozNjAqZS5oLHM6ZS5zLGw6ZS5sLGE6dGhpcy5fYX19LHRvSHNsU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGU9byh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYiksdD1NYXRoLnJvdW5kKDM2MCplLmgpLG49TWF0aC5yb3VuZCgxMDAqZS5zKSxyPU1hdGgucm91bmQoMTAwKmUubCk7cmV0dXJuIDE9PXRoaXMuX2E/XCJoc2woXCIrdCtcIiwgXCIrbitcIiUsIFwiK3IrXCIlKVwiOlwiaHNsYShcIit0K1wiLCBcIituK1wiJSwgXCIrcitcIiUsIFwiK3RoaXMuX3JvdW5kQStcIilcIn0sdG9IZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGEodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsZSl9LHRvSGV4U3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVyblwiI1wiK3RoaXMudG9IZXgoZSl9LHRvSGV4ODpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT1bRShNYXRoLnJvdW5kKGUpLnRvU3RyaW5nKDE2KSksRShNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KSksRShNYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDE2KSksRShNKHIpKV07cmV0dXJuIG8mJmlbMF0uY2hhckF0KDApPT1pWzBdLmNoYXJBdCgxKSYmaVsxXS5jaGFyQXQoMCk9PWlbMV0uY2hhckF0KDEpJiZpWzJdLmNoYXJBdCgwKT09aVsyXS5jaGFyQXQoMSkmJmlbM10uY2hhckF0KDApPT1pWzNdLmNoYXJBdCgxKT9pWzBdLmNoYXJBdCgwKStpWzFdLmNoYXJBdCgwKStpWzJdLmNoYXJBdCgwKStpWzNdLmNoYXJBdCgwKTppLmpvaW4oXCJcIil9KHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLHRoaXMuX2EsZSl9LHRvSGV4OFN0cmluZzpmdW5jdGlvbihlKXtyZXR1cm5cIiNcIit0aGlzLnRvSGV4OChlKX0sdG9SZ2I6ZnVuY3Rpb24oKXtyZXR1cm57cjpNYXRoLnJvdW5kKHRoaXMuX3IpLGc6TWF0aC5yb3VuZCh0aGlzLl9nKSxiOk1hdGgucm91bmQodGhpcy5fYiksYTp0aGlzLl9hfX0sdG9SZ2JTdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gMT09dGhpcy5fYT9cInJnYihcIitNYXRoLnJvdW5kKHRoaXMuX3IpK1wiLCBcIitNYXRoLnJvdW5kKHRoaXMuX2cpK1wiLCBcIitNYXRoLnJvdW5kKHRoaXMuX2IpK1wiKVwiOlwicmdiYShcIitNYXRoLnJvdW5kKHRoaXMuX3IpK1wiLCBcIitNYXRoLnJvdW5kKHRoaXMuX2cpK1wiLCBcIitNYXRoLnJvdW5kKHRoaXMuX2IpK1wiLCBcIit0aGlzLl9yb3VuZEErXCIpXCJ9LHRvUGVyY2VudGFnZVJnYjpmdW5jdGlvbigpe3JldHVybntyOk1hdGgucm91bmQoMTAwKl8odGhpcy5fciwyNTUpKStcIiVcIixnOk1hdGgucm91bmQoMTAwKl8odGhpcy5fZywyNTUpKStcIiVcIixiOk1hdGgucm91bmQoMTAwKl8odGhpcy5fYiwyNTUpKStcIiVcIixhOnRoaXMuX2F9fSx0b1BlcmNlbnRhZ2VSZ2JTdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gMT09dGhpcy5fYT9cInJnYihcIitNYXRoLnJvdW5kKDEwMCpfKHRoaXMuX3IsMjU1KSkrXCIlLCBcIitNYXRoLnJvdW5kKDEwMCpfKHRoaXMuX2csMjU1KSkrXCIlLCBcIitNYXRoLnJvdW5kKDEwMCpfKHRoaXMuX2IsMjU1KSkrXCIlKVwiOlwicmdiYShcIitNYXRoLnJvdW5kKDEwMCpfKHRoaXMuX3IsMjU1KSkrXCIlLCBcIitNYXRoLnJvdW5kKDEwMCpfKHRoaXMuX2csMjU1KSkrXCIlLCBcIitNYXRoLnJvdW5kKDEwMCpfKHRoaXMuX2IsMjU1KSkrXCIlLCBcIit0aGlzLl9yb3VuZEErXCIpXCJ9LHRvTmFtZTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fYT9cInRyYW5zcGFyZW50XCI6ISh0aGlzLl9hPDEpJiYoYlthKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLCEwKV18fCExKX0sdG9GaWx0ZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9XCIjXCIrbCh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYix0aGlzLl9hKSxuPXQsbz10aGlzLl9ncmFkaWVudFR5cGU/XCJHcmFkaWVudFR5cGUgPSAxLCBcIjpcIlwiO2lmKGUpe3ZhciBpPXIoZSk7bj1cIiNcIitsKGkuX3IsaS5fZyxpLl9iLGkuX2EpfXJldHVyblwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KFwiK28rXCJzdGFydENvbG9yc3RyPVwiK3QrXCIsZW5kQ29sb3JzdHI9XCIrbitcIilcIn0sdG9TdHJpbmc6ZnVuY3Rpb24oZSl7dmFyIHQ9ISFlO2U9ZXx8dGhpcy5fZm9ybWF0O3ZhciBuPSExLHI9dGhpcy5fYTwxJiZ0aGlzLl9hPj0wO3JldHVybiB0fHwhcnx8XCJoZXhcIiE9PWUmJlwiaGV4NlwiIT09ZSYmXCJoZXgzXCIhPT1lJiZcImhleDRcIiE9PWUmJlwiaGV4OFwiIT09ZSYmXCJuYW1lXCIhPT1lPyhcInJnYlwiPT09ZSYmKG49dGhpcy50b1JnYlN0cmluZygpKSxcInByZ2JcIj09PWUmJihuPXRoaXMudG9QZXJjZW50YWdlUmdiU3RyaW5nKCkpLFwiaGV4XCIhPT1lJiZcImhleDZcIiE9PWV8fChuPXRoaXMudG9IZXhTdHJpbmcoKSksXCJoZXgzXCI9PT1lJiYobj10aGlzLnRvSGV4U3RyaW5nKCEwKSksXCJoZXg0XCI9PT1lJiYobj10aGlzLnRvSGV4OFN0cmluZyghMCkpLFwiaGV4OFwiPT09ZSYmKG49dGhpcy50b0hleDhTdHJpbmcoKSksXCJuYW1lXCI9PT1lJiYobj10aGlzLnRvTmFtZSgpKSxcImhzbFwiPT09ZSYmKG49dGhpcy50b0hzbFN0cmluZygpKSxcImhzdlwiPT09ZSYmKG49dGhpcy50b0hzdlN0cmluZygpKSxufHx0aGlzLnRvSGV4U3RyaW5nKCkpOlwibmFtZVwiPT09ZSYmMD09PXRoaXMuX2E/dGhpcy50b05hbWUoKTp0aGlzLnRvUmdiU3RyaW5nKCl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy50b1N0cmluZygpKX0sX2FwcGx5TW9kaWZpY2F0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5hcHBseShudWxsLFt0aGlzXS5jb25jYXQoW10uc2xpY2UuY2FsbCh0KSkpO3JldHVybiB0aGlzLl9yPW4uX3IsdGhpcy5fZz1uLl9nLHRoaXMuX2I9bi5fYix0aGlzLnNldEFscGhhKG4uX2EpLHRoaXN9LGxpZ2h0ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oZixhcmd1bWVudHMpfSxicmlnaHRlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihkLGFyZ3VtZW50cyl9LGRhcmtlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihwLGFyZ3VtZW50cyl9LGRlc2F0dXJhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24ocyxhcmd1bWVudHMpfSxzYXR1cmF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihjLGFyZ3VtZW50cyl9LGdyZXlzY2FsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbih1LGFyZ3VtZW50cyl9LHNwaW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oaCxhcmd1bWVudHMpfSxfYXBwbHlDb21iaW5hdGlvbjpmdW5jdGlvbihlLHQpe3JldHVybiBlLmFwcGx5KG51bGwsW3RoaXNdLmNvbmNhdChbXS5zbGljZS5jYWxsKHQpKSl9LGFuYWxvZ291czpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKG0sYXJndW1lbnRzKX0sY29tcGxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKHYsYXJndW1lbnRzKX0sbW9ub2Nocm9tYXRpYzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKHksYXJndW1lbnRzKX0sc3BsaXRjb21wbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24oQyxhcmd1bWVudHMpfSx0cmlhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKGcsWzNdKX0sdGV0cmFkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24oZyxbNF0pfX0sci5mcm9tUmF0aW89ZnVuY3Rpb24odCxuKXtpZihcIm9iamVjdFwiPT1lKHQpKXt2YXIgbz17fTtmb3IodmFyIGkgaW4gdCl0Lmhhc093blByb3BlcnR5KGkpJiYob1tpXT1cImFcIj09PWk/dFtpXTpTKHRbaV0pKTt0PW99cmV0dXJuIHIodCxuKX0sci5lcXVhbHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hKCFlfHwhdCkmJnIoZSkudG9SZ2JTdHJpbmcoKT09cih0KS50b1JnYlN0cmluZygpfSxyLnJhbmRvbT1mdW5jdGlvbigpe3JldHVybiByLmZyb21SYXRpbyh7cjpNYXRoLnJhbmRvbSgpLGc6TWF0aC5yYW5kb20oKSxiOk1hdGgucmFuZG9tKCl9KX0sci5taXg9ZnVuY3Rpb24oZSx0LG4pe249MD09PW4/MDpufHw1MDt2YXIgbz1yKGUpLnRvUmdiKCksaT1yKHQpLnRvUmdiKCksYT1uLzEwMDtyZXR1cm4gcih7cjooaS5yLW8ucikqYStvLnIsZzooaS5nLW8uZykqYStvLmcsYjooaS5iLW8uYikqYStvLmIsYTooaS5hLW8uYSkqYStvLmF9KX0sci5yZWFkYWJpbGl0eT1mdW5jdGlvbihlLHQpe3ZhciBuPXIoZSksbz1yKHQpO3JldHVybihNYXRoLm1heChuLmdldEx1bWluYW5jZSgpLG8uZ2V0THVtaW5hbmNlKCkpKy4wNSkvKE1hdGgubWluKG4uZ2V0THVtaW5hbmNlKCksby5nZXRMdW1pbmFuY2UoKSkrLjA1KX0sci5pc1JlYWRhYmxlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbyxpLGEsbCxzLGM9ci5yZWFkYWJpbGl0eShlLHQpO3N3aXRjaChpPSExLChhPW4sXCJBQVwiIT09KGw9KChhPWF8fHtsZXZlbDpcIkFBXCIsc2l6ZTpcInNtYWxsXCJ9KS5sZXZlbHx8XCJBQVwiKS50b1VwcGVyQ2FzZSgpKSYmXCJBQUFcIiE9PWwmJihsPVwiQUFcIiksXCJzbWFsbFwiIT09KHM9KGEuc2l6ZXx8XCJzbWFsbFwiKS50b0xvd2VyQ2FzZSgpKSYmXCJsYXJnZVwiIT09cyYmKHM9XCJzbWFsbFwiKSxvPXtsZXZlbDpsLHNpemU6c30pLmxldmVsK28uc2l6ZSl7Y2FzZVwiQUFzbWFsbFwiOmNhc2VcIkFBQWxhcmdlXCI6aT1jPj00LjU7YnJlYWs7Y2FzZVwiQUFsYXJnZVwiOmk9Yz49MzticmVhaztjYXNlXCJBQUFzbWFsbFwiOmk9Yz49N31yZXR1cm4gaX0sci5tb3N0UmVhZGFibGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvLGksYSxsLHM9bnVsbCxjPTA7aT0obj1ufHx7fSkuaW5jbHVkZUZhbGxiYWNrQ29sb3JzLGE9bi5sZXZlbCxsPW4uc2l6ZTtmb3IodmFyIHU9MDt1PHQubGVuZ3RoO3UrKykobz1yLnJlYWRhYmlsaXR5KGUsdFt1XSkpPmMmJihjPW8scz1yKHRbdV0pKTtyZXR1cm4gci5pc1JlYWRhYmxlKGUscyx7bGV2ZWw6YSxzaXplOmx9KXx8IWk/czoobi5pbmNsdWRlRmFsbGJhY2tDb2xvcnM9ITEsci5tb3N0UmVhZGFibGUoZSxbXCIjZmZmXCIsXCIjMDAwXCJdLG4pKX07dmFyIHc9ci5uYW1lcz17YWxpY2VibHVlOlwiZjBmOGZmXCIsYW50aXF1ZXdoaXRlOlwiZmFlYmQ3XCIsYXF1YTpcIjBmZlwiLGFxdWFtYXJpbmU6XCI3ZmZmZDRcIixhenVyZTpcImYwZmZmZlwiLGJlaWdlOlwiZjVmNWRjXCIsYmlzcXVlOlwiZmZlNGM0XCIsYmxhY2s6XCIwMDBcIixibGFuY2hlZGFsbW9uZDpcImZmZWJjZFwiLGJsdWU6XCIwMGZcIixibHVldmlvbGV0OlwiOGEyYmUyXCIsYnJvd246XCJhNTJhMmFcIixidXJseXdvb2Q6XCJkZWI4ODdcIixidXJudHNpZW5uYTpcImVhN2U1ZFwiLGNhZGV0Ymx1ZTpcIjVmOWVhMFwiLGNoYXJ0cmV1c2U6XCI3ZmZmMDBcIixjaG9jb2xhdGU6XCJkMjY5MWVcIixjb3JhbDpcImZmN2Y1MFwiLGNvcm5mbG93ZXJibHVlOlwiNjQ5NWVkXCIsY29ybnNpbGs6XCJmZmY4ZGNcIixjcmltc29uOlwiZGMxNDNjXCIsY3lhbjpcIjBmZlwiLGRhcmtibHVlOlwiMDAwMDhiXCIsZGFya2N5YW46XCIwMDhiOGJcIixkYXJrZ29sZGVucm9kOlwiYjg4NjBiXCIsZGFya2dyYXk6XCJhOWE5YTlcIixkYXJrZ3JlZW46XCIwMDY0MDBcIixkYXJrZ3JleTpcImE5YTlhOVwiLGRhcmtraGFraTpcImJkYjc2YlwiLGRhcmttYWdlbnRhOlwiOGIwMDhiXCIsZGFya29saXZlZ3JlZW46XCI1NTZiMmZcIixkYXJrb3JhbmdlOlwiZmY4YzAwXCIsZGFya29yY2hpZDpcIjk5MzJjY1wiLGRhcmtyZWQ6XCI4YjAwMDBcIixkYXJrc2FsbW9uOlwiZTk5NjdhXCIsZGFya3NlYWdyZWVuOlwiOGZiYzhmXCIsZGFya3NsYXRlYmx1ZTpcIjQ4M2Q4YlwiLGRhcmtzbGF0ZWdyYXk6XCIyZjRmNGZcIixkYXJrc2xhdGVncmV5OlwiMmY0ZjRmXCIsZGFya3R1cnF1b2lzZTpcIjAwY2VkMVwiLGRhcmt2aW9sZXQ6XCI5NDAwZDNcIixkZWVwcGluazpcImZmMTQ5M1wiLGRlZXBza3libHVlOlwiMDBiZmZmXCIsZGltZ3JheTpcIjY5Njk2OVwiLGRpbWdyZXk6XCI2OTY5NjlcIixkb2RnZXJibHVlOlwiMWU5MGZmXCIsZmlyZWJyaWNrOlwiYjIyMjIyXCIsZmxvcmFsd2hpdGU6XCJmZmZhZjBcIixmb3Jlc3RncmVlbjpcIjIyOGIyMlwiLGZ1Y2hzaWE6XCJmMGZcIixnYWluc2Jvcm86XCJkY2RjZGNcIixnaG9zdHdoaXRlOlwiZjhmOGZmXCIsZ29sZDpcImZmZDcwMFwiLGdvbGRlbnJvZDpcImRhYTUyMFwiLGdyYXk6XCI4MDgwODBcIixncmVlbjpcIjAwODAwMFwiLGdyZWVueWVsbG93OlwiYWRmZjJmXCIsZ3JleTpcIjgwODA4MFwiLGhvbmV5ZGV3OlwiZjBmZmYwXCIsaG90cGluazpcImZmNjliNFwiLGluZGlhbnJlZDpcImNkNWM1Y1wiLGluZGlnbzpcIjRiMDA4MlwiLGl2b3J5OlwiZmZmZmYwXCIsa2hha2k6XCJmMGU2OGNcIixsYXZlbmRlcjpcImU2ZTZmYVwiLGxhdmVuZGVyYmx1c2g6XCJmZmYwZjVcIixsYXduZ3JlZW46XCI3Y2ZjMDBcIixsZW1vbmNoaWZmb246XCJmZmZhY2RcIixsaWdodGJsdWU6XCJhZGQ4ZTZcIixsaWdodGNvcmFsOlwiZjA4MDgwXCIsbGlnaHRjeWFuOlwiZTBmZmZmXCIsbGlnaHRnb2xkZW5yb2R5ZWxsb3c6XCJmYWZhZDJcIixsaWdodGdyYXk6XCJkM2QzZDNcIixsaWdodGdyZWVuOlwiOTBlZTkwXCIsbGlnaHRncmV5OlwiZDNkM2QzXCIsbGlnaHRwaW5rOlwiZmZiNmMxXCIsbGlnaHRzYWxtb246XCJmZmEwN2FcIixsaWdodHNlYWdyZWVuOlwiMjBiMmFhXCIsbGlnaHRza3libHVlOlwiODdjZWZhXCIsbGlnaHRzbGF0ZWdyYXk6XCI3ODlcIixsaWdodHNsYXRlZ3JleTpcIjc4OVwiLGxpZ2h0c3RlZWxibHVlOlwiYjBjNGRlXCIsbGlnaHR5ZWxsb3c6XCJmZmZmZTBcIixsaW1lOlwiMGYwXCIsbGltZWdyZWVuOlwiMzJjZDMyXCIsbGluZW46XCJmYWYwZTZcIixtYWdlbnRhOlwiZjBmXCIsbWFyb29uOlwiODAwMDAwXCIsbWVkaXVtYXF1YW1hcmluZTpcIjY2Y2RhYVwiLG1lZGl1bWJsdWU6XCIwMDAwY2RcIixtZWRpdW1vcmNoaWQ6XCJiYTU1ZDNcIixtZWRpdW1wdXJwbGU6XCI5MzcwZGJcIixtZWRpdW1zZWFncmVlbjpcIjNjYjM3MVwiLG1lZGl1bXNsYXRlYmx1ZTpcIjdiNjhlZVwiLG1lZGl1bXNwcmluZ2dyZWVuOlwiMDBmYTlhXCIsbWVkaXVtdHVycXVvaXNlOlwiNDhkMWNjXCIsbWVkaXVtdmlvbGV0cmVkOlwiYzcxNTg1XCIsbWlkbmlnaHRibHVlOlwiMTkxOTcwXCIsbWludGNyZWFtOlwiZjVmZmZhXCIsbWlzdHlyb3NlOlwiZmZlNGUxXCIsbW9jY2FzaW46XCJmZmU0YjVcIixuYXZham93aGl0ZTpcImZmZGVhZFwiLG5hdnk6XCIwMDAwODBcIixvbGRsYWNlOlwiZmRmNWU2XCIsb2xpdmU6XCI4MDgwMDBcIixvbGl2ZWRyYWI6XCI2YjhlMjNcIixvcmFuZ2U6XCJmZmE1MDBcIixvcmFuZ2VyZWQ6XCJmZjQ1MDBcIixvcmNoaWQ6XCJkYTcwZDZcIixwYWxlZ29sZGVucm9kOlwiZWVlOGFhXCIscGFsZWdyZWVuOlwiOThmYjk4XCIscGFsZXR1cnF1b2lzZTpcImFmZWVlZVwiLHBhbGV2aW9sZXRyZWQ6XCJkYjcwOTNcIixwYXBheWF3aGlwOlwiZmZlZmQ1XCIscGVhY2hwdWZmOlwiZmZkYWI5XCIscGVydTpcImNkODUzZlwiLHBpbms6XCJmZmMwY2JcIixwbHVtOlwiZGRhMGRkXCIscG93ZGVyYmx1ZTpcImIwZTBlNlwiLHB1cnBsZTpcIjgwMDA4MFwiLHJlYmVjY2FwdXJwbGU6XCI2NjMzOTlcIixyZWQ6XCJmMDBcIixyb3N5YnJvd246XCJiYzhmOGZcIixyb3lhbGJsdWU6XCI0MTY5ZTFcIixzYWRkbGVicm93bjpcIjhiNDUxM1wiLHNhbG1vbjpcImZhODA3MlwiLHNhbmR5YnJvd246XCJmNGE0NjBcIixzZWFncmVlbjpcIjJlOGI1N1wiLHNlYXNoZWxsOlwiZmZmNWVlXCIsc2llbm5hOlwiYTA1MjJkXCIsc2lsdmVyOlwiYzBjMGMwXCIsc2t5Ymx1ZTpcIjg3Y2VlYlwiLHNsYXRlYmx1ZTpcIjZhNWFjZFwiLHNsYXRlZ3JheTpcIjcwODA5MFwiLHNsYXRlZ3JleTpcIjcwODA5MFwiLHNub3c6XCJmZmZhZmFcIixzcHJpbmdncmVlbjpcIjAwZmY3ZlwiLHN0ZWVsYmx1ZTpcIjQ2ODJiNFwiLHRhbjpcImQyYjQ4Y1wiLHRlYWw6XCIwMDgwODBcIix0aGlzdGxlOlwiZDhiZmQ4XCIsdG9tYXRvOlwiZmY2MzQ3XCIsdHVycXVvaXNlOlwiNDBlMGQwXCIsdmlvbGV0OlwiZWU4MmVlXCIsd2hlYXQ6XCJmNWRlYjNcIix3aGl0ZTpcImZmZlwiLHdoaXRlc21va2U6XCJmNWY1ZjVcIix5ZWxsb3c6XCJmZjBcIix5ZWxsb3dncmVlbjpcIjlhY2QzMlwifSxiPXIuaGV4TmFtZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbZVtuXV09bik7cmV0dXJuIHR9KHcpO2Z1bmN0aW9uIHgoZSl7cmV0dXJuIGU9cGFyc2VGbG9hdChlKSwoaXNOYU4oZSl8fGU8MHx8ZT4xKSYmKGU9MSksZX1mdW5jdGlvbiBfKGUsdCl7KGZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiYtMSE9ZS5pbmRleE9mKFwiLlwiKSYmMT09PXBhcnNlRmxvYXQoZSl9KShlKSYmKGU9XCIxMDAlXCIpO3ZhciBuPWZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiYtMSE9ZS5pbmRleE9mKFwiJVwiKX0oZSk7cmV0dXJuIGU9TWF0aC5taW4odCxNYXRoLm1heCgwLHBhcnNlRmxvYXQoZSkpKSxuJiYoZT1wYXJzZUludChlKnQsMTApLzEwMCksTWF0aC5hYnMoZS10KTwxZS02PzE6ZSV0L3BhcnNlRmxvYXQodCl9ZnVuY3Rpb24gTChlKXtyZXR1cm4gTWF0aC5taW4oMSxNYXRoLm1heCgwLGUpKX1mdW5jdGlvbiBPKGUpe3JldHVybiBwYXJzZUludChlLDE2KX1mdW5jdGlvbiBFKGUpe3JldHVybiAxPT1lLmxlbmd0aD9cIjBcIitlOlwiXCIrZX1mdW5jdGlvbiBTKGUpe3JldHVybiBlPD0xJiYoZT0xMDAqZStcIiVcIiksZX1mdW5jdGlvbiBNKGUpe3JldHVybiBNYXRoLnJvdW5kKDI1NSpwYXJzZUZsb2F0KGUpKS50b1N0cmluZygxNil9ZnVuY3Rpb24gaihlKXtyZXR1cm4gTyhlKS8yNTV9dmFyIGssUixQLEE9KFI9XCJbXFxcXHN8XFxcXChdKyhcIisoaz1cIig/OlstXFxcXCtdP1xcXFxkKlxcXFwuXFxcXGQrJT8pfCg/OlstXFxcXCtdP1xcXFxkKyU/KVwiKStcIilbLHxcXFxcc10rKFwiK2srXCIpWyx8XFxcXHNdKyhcIitrK1wiKVxcXFxzKlxcXFwpP1wiLFA9XCJbXFxcXHN8XFxcXChdKyhcIitrK1wiKVssfFxcXFxzXSsoXCIraytcIilbLHxcXFxcc10rKFwiK2srXCIpWyx8XFxcXHNdKyhcIitrK1wiKVxcXFxzKlxcXFwpP1wiLHtDU1NfVU5JVDpuZXcgUmVnRXhwKGspLHJnYjpuZXcgUmVnRXhwKFwicmdiXCIrUikscmdiYTpuZXcgUmVnRXhwKFwicmdiYVwiK1ApLGhzbDpuZXcgUmVnRXhwKFwiaHNsXCIrUiksaHNsYTpuZXcgUmVnRXhwKFwiaHNsYVwiK1ApLGhzdjpuZXcgUmVnRXhwKFwiaHN2XCIrUiksaHN2YTpuZXcgUmVnRXhwKFwiaHN2YVwiK1ApLGhleDM6L14jPyhbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KSQvLGhleDY6L14jPyhbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KSQvLGhleDQ6L14jPyhbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkkLyxoZXg4Oi9eIz8oWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pJC99KTtmdW5jdGlvbiBJKGUpe3JldHVybiEhQS5DU1NfVU5JVC5leGVjKGUpfXJldHVybiByfSgpfX0sbz17fTtmdW5jdGlvbiBpKGUpe3ZhciB0PW9bZV07aWYodm9pZCAwIT09dClyZXR1cm4gdC5leHBvcnRzO3ZhciBuPW9bZV09e2lkOmUsZXhwb3J0czp7fX07cmV0dXJuIHJbZV0uY2FsbChuLmV4cG9ydHMsbixuLmV4cG9ydHMsaSksbi5leHBvcnRzfWkubj1lPT57dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlPygpPT5lLmRlZmF1bHQ6KCk9PmU7cmV0dXJuIGkuZCh0LHthOnR9KSx0fSxpLmQ9KGUsdCk9Pntmb3IodmFyIG4gaW4gdClpLm8odCxuKSYmIWkubyhlLG4pJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHtlbnVtZXJhYmxlOiEwLGdldDp0W25dfSl9LGkuZz1mdW5jdGlvbigpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBnbG9iYWxUaGlzKXJldHVybiBnbG9iYWxUaGlzO3RyeXtyZXR1cm4gdGhpc3x8bmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKX1jYXRjaChlKXtpZihcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93KXJldHVybiB3aW5kb3d9fSgpLGkubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCksaS5yPWU9PntcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfTt2YXIgYT1pKDM0MSksbD10O2Zvcih2YXIgcyBpbiBhKWxbc109YVtzXTthLl9fZXNNb2R1bGUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSwxOTg6KGUsdCxuKT0+e3ZhciByPU5hTixvPVwiW29iamVjdCBTeW1ib2xdXCIsaT0vXlxccyt8XFxzKyQvZyxhPS9eWy0rXTB4WzAtOWEtZl0rJC9pLGw9L14wYlswMV0rJC9pLHM9L14wb1swLTddKyQvaSxjPXBhcnNlSW50LHU9XCJvYmplY3RcIj09dHlwZW9mIG4uZyYmbi5nJiZuLmcuT2JqZWN0PT09T2JqZWN0JiZuLmcsZj1cIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsZD11fHxmfHxGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCkscD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGg9TWF0aC5tYXgsdj1NYXRoLm1pbixnPWZ1bmN0aW9uKCl7cmV0dXJuIGQuRGF0ZS5ub3coKX07ZnVuY3Rpb24gQyhlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4hIWUmJihcIm9iamVjdFwiPT10fHxcImZ1bmN0aW9uXCI9PXQpfWZ1bmN0aW9uIG0oZSl7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoZnVuY3Rpb24oZSl7cmV0dXJuXCJzeW1ib2xcIj09dHlwZW9mIGV8fGZ1bmN0aW9uKGUpe3JldHVybiEhZSYmXCJvYmplY3RcIj09dHlwZW9mIGV9KGUpJiZwLmNhbGwoZSk9PW99KGUpKXJldHVybiByO2lmKEMoZSkpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIGUudmFsdWVPZj9lLnZhbHVlT2YoKTplO2U9Qyh0KT90K1wiXCI6dH1pZihcInN0cmluZ1wiIT10eXBlb2YgZSlyZXR1cm4gMD09PWU/ZTorZTtlPWUucmVwbGFjZShpLFwiXCIpO3ZhciBuPWwudGVzdChlKTtyZXR1cm4gbnx8cy50ZXN0KGUpP2MoZS5zbGljZSgyKSxuPzI6OCk6YS50ZXN0KGUpP3I6K2V9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGksYSxsLHMsYz0wLHU9ITEsZj0hMSxkPSEwO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIGEgZnVuY3Rpb25cIik7ZnVuY3Rpb24gcCh0KXt2YXIgbj1yLGk9bztyZXR1cm4gcj1vPXZvaWQgMCxjPXQsYT1lLmFwcGx5KGksbil9ZnVuY3Rpb24geShlKXt2YXIgbj1lLXM7cmV0dXJuIHZvaWQgMD09PXN8fG4+PXR8fG48MHx8ZiYmZS1jPj1pfWZ1bmN0aW9uIHcoKXt2YXIgZT1nKCk7aWYoeShlKSlyZXR1cm4gYihlKTtsPXNldFRpbWVvdXQodyxmdW5jdGlvbihlKXt2YXIgbj10LShlLXMpO3JldHVybiBmP3YobixpLShlLWMpKTpufShlKSl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gbD12b2lkIDAsZCYmcj9wKGUpOihyPW89dm9pZCAwLGEpfWZ1bmN0aW9uIHgoKXt2YXIgZT1nKCksbj15KGUpO2lmKHI9YXJndW1lbnRzLG89dGhpcyxzPWUsbil7aWYodm9pZCAwPT09bClyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGM9ZSxsPXNldFRpbWVvdXQodyx0KSx1P3AoZSk6YX0ocyk7aWYoZilyZXR1cm4gbD1zZXRUaW1lb3V0KHcsdCkscChzKX1yZXR1cm4gdm9pZCAwPT09bCYmKGw9c2V0VGltZW91dCh3LHQpKSxhfXJldHVybiB0PW0odCl8fDAsQyhuKSYmKHU9ISFuLmxlYWRpbmcsaT0oZj1cIm1heFdhaXRcImluIG4pP2gobShuLm1heFdhaXQpfHwwLHQpOmksZD1cInRyYWlsaW5nXCJpbiBuPyEhbi50cmFpbGluZzpkKSx4LmNhbmNlbD1mdW5jdGlvbigpe3ZvaWQgMCE9PWwmJmNsZWFyVGltZW91dChsKSxjPTAscj1zPW89bD12b2lkIDB9LHguZmx1c2g9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09bD9hOmIoZygpKX0seH19LDUyNTplPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscj1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO2UuZXhwb3J0cz1mdW5jdGlvbigpe3RyeXtpZighT2JqZWN0LmFzc2lnbilyZXR1cm4hMTt2YXIgZT1uZXcgU3RyaW5nKFwiYWJjXCIpO2lmKGVbNV09XCJkZVwiLFwiNVwiPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSlbMF0pcmV0dXJuITE7Zm9yKHZhciB0PXt9LG49MDtuPDEwO24rKyl0W1wiX1wiK1N0cmluZy5mcm9tQ2hhckNvZGUobildPW47aWYoXCIwMTIzNDU2Nzg5XCIhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkpLmpvaW4oXCJcIikpcmV0dXJuITE7dmFyIHI9e307cmV0dXJuXCJhYmNkZWZnaGlqa2xtbm9wcXJzdFwiLnNwbGl0KFwiXCIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JbZV09ZX0pKSxcImFiY2RlZmdoaWprbG1ub3BxcnN0XCI9PT1PYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LHIpKS5qb2luKFwiXCIpfWNhdGNoKGUpe3JldHVybiExfX0oKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGUsbyl7Zm9yKHZhciBpLGEsbD1mdW5jdGlvbihlKXtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4gT2JqZWN0KGUpfShlKSxzPTE7czxhcmd1bWVudHMubGVuZ3RoO3MrKyl7Zm9yKHZhciBjIGluIGk9T2JqZWN0KGFyZ3VtZW50c1tzXSkpbi5jYWxsKGksYykmJihsW2NdPWlbY10pO2lmKHQpe2E9dChpKTtmb3IodmFyIHU9MDt1PGEubGVuZ3RoO3UrKylyLmNhbGwoaSxhW3VdKSYmKGxbYVt1XV09aVthW3VdXSl9fXJldHVybiBsfX0sNzAyOihlLHQpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG49XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLHI9bj9TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKTo2MDEwMyxvPW4/U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKTo2MDEwNixpPW4/U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpOjYwMTA3LGE9bj9TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIik6NjAxMDgsbD1uP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKTo2MDExNCxzPW4/U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpOjYwMTA5LGM9bj9TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKTo2MDExMCx1PW4/U3ltYm9sLmZvcihcInJlYWN0LmFzeW5jX21vZGVcIik6NjAxMTEsZj1uP1N5bWJvbC5mb3IoXCJyZWFjdC5jb25jdXJyZW50X21vZGVcIik6NjAxMTEsZD1uP1N5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKTo2MDExMixwPW4/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpOjYwMTEzLGg9bj9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKTo2MDEyMCx2PW4/U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIik6NjAxMTUsZz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpOjYwMTE2LEM9bj9TeW1ib2wuZm9yKFwicmVhY3QuYmxvY2tcIik6NjAxMjEsbT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5mdW5kYW1lbnRhbFwiKTo2MDExNyx5PW4/U3ltYm9sLmZvcihcInJlYWN0LnJlc3BvbmRlclwiKTo2MDExOCx3PW4/U3ltYm9sLmZvcihcInJlYWN0LnNjb3BlXCIpOjYwMTE5O2Z1bmN0aW9uIGIoZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lKXt2YXIgdD1lLiQkdHlwZW9mO3N3aXRjaCh0KXtjYXNlIHI6c3dpdGNoKGU9ZS50eXBlKXtjYXNlIHU6Y2FzZSBmOmNhc2UgaTpjYXNlIGw6Y2FzZSBhOmNhc2UgcDpyZXR1cm4gZTtkZWZhdWx0OnN3aXRjaChlPWUmJmUuJCR0eXBlb2Ype2Nhc2UgYzpjYXNlIGQ6Y2FzZSBnOmNhc2UgdjpjYXNlIHM6cmV0dXJuIGU7ZGVmYXVsdDpyZXR1cm4gdH19Y2FzZSBvOnJldHVybiB0fX19ZnVuY3Rpb24geChlKXtyZXR1cm4gYihlKT09PWZ9dC5Gb3J3YXJkUmVmPWQsdC5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwiZnVuY3Rpb25cIj09dHlwZW9mIGV8fGU9PT1pfHxlPT09Znx8ZT09PWx8fGU9PT1hfHxlPT09cHx8ZT09PWh8fFwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmKGUuJCR0eXBlb2Y9PT1nfHxlLiQkdHlwZW9mPT09dnx8ZS4kJHR5cGVvZj09PXN8fGUuJCR0eXBlb2Y9PT1jfHxlLiQkdHlwZW9mPT09ZHx8ZS4kJHR5cGVvZj09PW18fGUuJCR0eXBlb2Y9PT15fHxlLiQkdHlwZW9mPT09d3x8ZS4kJHR5cGVvZj09PUMpfX0sMTg1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9big3MDIpfSw1MzU6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByPW4oNTI1KSxvPTYwMTAzLGk9NjAxMDY7dC5GcmFnbWVudD02MDEwNyx0LlN0cmljdE1vZGU9NjAxMDgsdC5Qcm9maWxlcj02MDExNDt2YXIgYT02MDEwOSxsPTYwMTEwLHM9NjAxMTI7dC5TdXNwZW5zZT02MDExMzt2YXIgYz02MDExNSx1PTYwMTE2O2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcil7dmFyIGY9U3ltYm9sLmZvcjtvPWYoXCJyZWFjdC5lbGVtZW50XCIpLGk9ZihcInJlYWN0LnBvcnRhbFwiKSx0LkZyYWdtZW50PWYoXCJyZWFjdC5mcmFnbWVudFwiKSx0LlN0cmljdE1vZGU9ZihcInJlYWN0LnN0cmljdF9tb2RlXCIpLHQuUHJvZmlsZXI9ZihcInJlYWN0LnByb2ZpbGVyXCIpLGE9ZihcInJlYWN0LnByb3ZpZGVyXCIpLGw9ZihcInJlYWN0LmNvbnRleHRcIikscz1mKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksdC5TdXNwZW5zZT1mKFwicmVhY3Quc3VzcGVuc2VcIiksYz1mKFwicmVhY3QubWVtb1wiKSx1PWYoXCJyZWFjdC5sYXp5XCIpfXZhciBkPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIHAoZSl7Zm9yKHZhciB0PVwiaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9XCIrZSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0Kz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tuXSk7cmV0dXJuXCJNaW5pZmllZCBSZWFjdCBlcnJvciAjXCIrZStcIjsgdmlzaXQgXCIrdCtcIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuXCJ9dmFyIGg9e2lzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiExfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbigpe319LHY9e307ZnVuY3Rpb24gZyhlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz12LHRoaXMudXBkYXRlcj1ufHxofWZ1bmN0aW9uIEMoKXt9ZnVuY3Rpb24gbShlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz12LHRoaXMudXBkYXRlcj1ufHxofWcucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e30sZy5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXtpZihcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmbnVsbCE9ZSl0aHJvdyBFcnJvcihwKDg1KSk7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGUsdCxcInNldFN0YXRlXCIpfSxnLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsZSxcImZvcmNlVXBkYXRlXCIpfSxDLnByb3RvdHlwZT1nLnByb3RvdHlwZTt2YXIgeT1tLnByb3RvdHlwZT1uZXcgQzt5LmNvbnN0cnVjdG9yPW0scih5LGcucHJvdG90eXBlKSx5LmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwO3ZhciB3PXtjdXJyZW50Om51bGx9LGI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSx4PXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07ZnVuY3Rpb24gXyhlLHQsbil7dmFyIHIsaT17fSxhPW51bGwsbD1udWxsO2lmKG51bGwhPXQpZm9yKHIgaW4gdm9pZCAwIT09dC5yZWYmJihsPXQucmVmKSx2b2lkIDAhPT10LmtleSYmKGE9XCJcIit0LmtleSksdCliLmNhbGwodCxyKSYmIXguaGFzT3duUHJvcGVydHkocikmJihpW3JdPXRbcl0pO3ZhciBzPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09cylpLmNoaWxkcmVuPW47ZWxzZSBpZigxPHMpe2Zvcih2YXIgYz1BcnJheShzKSx1PTA7dTxzO3UrKyljW3VdPWFyZ3VtZW50c1t1KzJdO2kuY2hpbGRyZW49Y31pZihlJiZlLmRlZmF1bHRQcm9wcylmb3IociBpbiBzPWUuZGVmYXVsdFByb3BzKXZvaWQgMD09PWlbcl0mJihpW3JdPXNbcl0pO3JldHVybnskJHR5cGVvZjpvLHR5cGU6ZSxrZXk6YSxyZWY6bCxwcm9wczppLF9vd25lcjp3LmN1cnJlbnR9fWZ1bmN0aW9uIEwoZSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09b312YXIgTz0vXFwvKy9nO2Z1bmN0aW9uIEUoZSx0KXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUmJm51bGwhPWUua2V5P2Z1bmN0aW9uKGUpe3ZhciB0PXtcIj1cIjpcIj0wXCIsXCI6XCI6XCI9MlwifTtyZXR1cm5cIiRcIitlLnJlcGxhY2UoL1s9Ol0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSl9KFwiXCIrZS5rZXkpOnQudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIFMoZSx0LG4scixhKXt2YXIgbD10eXBlb2YgZTtcInVuZGVmaW5lZFwiIT09bCYmXCJib29sZWFuXCIhPT1sfHwoZT1udWxsKTt2YXIgcz0hMTtpZihudWxsPT09ZSlzPSEwO2Vsc2Ugc3dpdGNoKGwpe2Nhc2VcInN0cmluZ1wiOmNhc2VcIm51bWJlclwiOnM9ITA7YnJlYWs7Y2FzZVwib2JqZWN0XCI6c3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgbzpjYXNlIGk6cz0hMH19aWYocylyZXR1cm4gYT1hKHM9ZSksZT1cIlwiPT09cj9cIi5cIitFKHMsMCk6cixBcnJheS5pc0FycmF5KGEpPyhuPVwiXCIsbnVsbCE9ZSYmKG49ZS5yZXBsYWNlKE8sXCIkJi9cIikrXCIvXCIpLFMoYSx0LG4sXCJcIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSkpOm51bGwhPWEmJihMKGEpJiYoYT1mdW5jdGlvbihlLHQpe3JldHVybnskJHR5cGVvZjpvLHR5cGU6ZS50eXBlLGtleTp0LHJlZjplLnJlZixwcm9wczplLnByb3BzLF9vd25lcjplLl9vd25lcn19KGEsbisoIWEua2V5fHxzJiZzLmtleT09PWEua2V5P1wiXCI6KFwiXCIrYS5rZXkpLnJlcGxhY2UoTyxcIiQmL1wiKStcIi9cIikrZSkpLHQucHVzaChhKSksMTtpZihzPTAscj1cIlwiPT09cj9cIi5cIjpyK1wiOlwiLEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBjPTA7YzxlLmxlbmd0aDtjKyspe3ZhciB1PXIrRShsPWVbY10sYyk7cys9UyhsLHQsbix1LGEpfWVsc2UgaWYodT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlP251bGw6XCJmdW5jdGlvblwiPT10eXBlb2YoZT1kJiZlW2RdfHxlW1wiQEBpdGVyYXRvclwiXSk/ZTpudWxsfShlKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB1KWZvcihlPXUuY2FsbChlKSxjPTA7IShsPWUubmV4dCgpKS5kb25lOylzKz1TKGw9bC52YWx1ZSx0LG4sdT1yK0UobCxjKyspLGEpO2Vsc2UgaWYoXCJvYmplY3RcIj09PWwpdGhyb3cgdD1cIlwiK2UsRXJyb3IocCgzMSxcIltvYmplY3QgT2JqZWN0XVwiPT09dD9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKGUpLmpvaW4oXCIsIFwiKStcIn1cIjp0KSk7cmV0dXJuIHN9ZnVuY3Rpb24gTShlLHQsbil7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgcj1bXSxvPTA7cmV0dXJuIFMoZSxyLFwiXCIsXCJcIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHQuY2FsbChuLGUsbysrKX0pKSxyfWZ1bmN0aW9uIGooZSl7aWYoLTE9PT1lLl9zdGF0dXMpe3ZhciB0PWUuX3Jlc3VsdDt0PXQoKSxlLl9zdGF0dXM9MCxlLl9yZXN1bHQ9dCx0LnRoZW4oKGZ1bmN0aW9uKHQpezA9PT1lLl9zdGF0dXMmJih0PXQuZGVmYXVsdCxlLl9zdGF0dXM9MSxlLl9yZXN1bHQ9dCl9KSwoZnVuY3Rpb24odCl7MD09PWUuX3N0YXR1cyYmKGUuX3N0YXR1cz0yLGUuX3Jlc3VsdD10KX0pKX1pZigxPT09ZS5fc3RhdHVzKXJldHVybiBlLl9yZXN1bHQ7dGhyb3cgZS5fcmVzdWx0fXZhciBrPXtjdXJyZW50Om51bGx9O2Z1bmN0aW9uIFIoKXt2YXIgZT1rLmN1cnJlbnQ7aWYobnVsbD09PWUpdGhyb3cgRXJyb3IocCgzMjEpKTtyZXR1cm4gZX12YXIgUD17UmVhY3RDdXJyZW50RGlzcGF0Y2hlcjprLFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnOnt0cmFuc2l0aW9uOjB9LFJlYWN0Q3VycmVudE93bmVyOncsSXNTb21lUmVuZGVyZXJBY3Rpbmc6e2N1cnJlbnQ6ITF9LGFzc2lnbjpyfTt0LkNoaWxkcmVuPXttYXA6TSxmb3JFYWNoOmZ1bmN0aW9uKGUsdCxuKXtNKGUsKGZ1bmN0aW9uKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxuKX0sY291bnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9MDtyZXR1cm4gTShlLChmdW5jdGlvbigpe3QrK30pKSx0fSx0b0FycmF5OmZ1bmN0aW9uKGUpe3JldHVybiBNKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpfHxbXX0sb25seTpmdW5jdGlvbihlKXtpZighTChlKSl0aHJvdyBFcnJvcihwKDE0MykpO3JldHVybiBlfX0sdC5Db21wb25lbnQ9Zyx0LlB1cmVDb21wb25lbnQ9bSx0Ll9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPVAsdC5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0LG4pe2lmKG51bGw9PWUpdGhyb3cgRXJyb3IocCgyNjcsZSkpO3ZhciBpPXIoe30sZS5wcm9wcyksYT1lLmtleSxsPWUucmVmLHM9ZS5fb3duZXI7aWYobnVsbCE9dCl7aWYodm9pZCAwIT09dC5yZWYmJihsPXQucmVmLHM9dy5jdXJyZW50KSx2b2lkIDAhPT10LmtleSYmKGE9XCJcIit0LmtleSksZS50eXBlJiZlLnR5cGUuZGVmYXVsdFByb3BzKXZhciBjPWUudHlwZS5kZWZhdWx0UHJvcHM7Zm9yKHUgaW4gdCliLmNhbGwodCx1KSYmIXguaGFzT3duUHJvcGVydHkodSkmJihpW3VdPXZvaWQgMD09PXRbdV0mJnZvaWQgMCE9PWM/Y1t1XTp0W3VdKX12YXIgdT1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PXUpaS5jaGlsZHJlbj1uO2Vsc2UgaWYoMTx1KXtjPUFycmF5KHUpO2Zvcih2YXIgZj0wO2Y8dTtmKyspY1tmXT1hcmd1bWVudHNbZisyXTtpLmNoaWxkcmVuPWN9cmV0dXJueyQkdHlwZW9mOm8sdHlwZTplLnR5cGUsa2V5OmEscmVmOmwscHJvcHM6aSxfb3duZXI6c319LHQuY3JlYXRlQ29udGV4dD1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1udWxsKSwoZT17JCR0eXBlb2Y6bCxfY2FsY3VsYXRlQ2hhbmdlZEJpdHM6dCxfY3VycmVudFZhbHVlOmUsX2N1cnJlbnRWYWx1ZTI6ZSxfdGhyZWFkQ291bnQ6MCxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGx9KS5Qcm92aWRlcj17JCR0eXBlb2Y6YSxfY29udGV4dDplfSxlLkNvbnN1bWVyPWV9LHQuY3JlYXRlRWxlbWVudD1fLHQuY3JlYXRlRmFjdG9yeT1mdW5jdGlvbihlKXt2YXIgdD1fLmJpbmQobnVsbCxlKTtyZXR1cm4gdC50eXBlPWUsdH0sdC5jcmVhdGVSZWY9ZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDpudWxsfX0sdC5mb3J3YXJkUmVmPWZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpzLHJlbmRlcjplfX0sdC5pc1ZhbGlkRWxlbWVudD1MLHQubGF6eT1mdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6dSxfcGF5bG9hZDp7X3N0YXR1czotMSxfcmVzdWx0OmV9LF9pbml0Omp9fSx0Lm1lbW89ZnVuY3Rpb24oZSx0KXtyZXR1cm57JCR0eXBlb2Y6Yyx0eXBlOmUsY29tcGFyZTp2b2lkIDA9PT10P251bGw6dH19LHQudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUigpLnVzZUNhbGxiYWNrKGUsdCl9LHQudXNlQ29udGV4dD1mdW5jdGlvbihlLHQpe3JldHVybiBSKCkudXNlQ29udGV4dChlLHQpfSx0LnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9LHQudXNlRWZmZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFIoKS51c2VFZmZlY3QoZSx0KX0sdC51c2VJbXBlcmF0aXZlSGFuZGxlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUigpLnVzZUltcGVyYXRpdmVIYW5kbGUoZSx0LG4pfSx0LnVzZUxheW91dEVmZmVjdD1mdW5jdGlvbihlLHQpe3JldHVybiBSKCkudXNlTGF5b3V0RWZmZWN0KGUsdCl9LHQudXNlTWVtbz1mdW5jdGlvbihlLHQpe3JldHVybiBSKCkudXNlTWVtbyhlLHQpfSx0LnVzZVJlZHVjZXI9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBSKCkudXNlUmVkdWNlcihlLHQsbil9LHQudXNlUmVmPWZ1bmN0aW9uKGUpe3JldHVybiBSKCkudXNlUmVmKGUpfSx0LnVzZVN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBSKCkudXNlU3RhdGUoZSl9LHQudmVyc2lvbj1cIjE3LjAuMlwifSwzNzg6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uKDUzNSl9LDkyMTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLG4uZCh0LHtTZXJ2ZXJTdHlsZVNoZWV0OigpPT5wdCxTdHlsZVNoZWV0Q29uc3VtZXI6KCk9PnZ0LFN0eWxlU2hlZXRDb250ZXh0OigpPT5odCxTdHlsZVNoZWV0TWFuYWdlcjooKT0+Z3QsVGhlbWVDb25zdW1lcjooKT0+ZnQsVGhlbWVDb250ZXh0OigpPT51dCxUaGVtZVByb3ZpZGVyOigpPT5kdCxfX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfSEFVTlRFRF9CWV9TUE9PS1lfR0hPU1RTOigpPT5FdCxjcmVhdGVHbG9iYWxTdHlsZTooKT0+eHQsY3NzOigpPT5WZSxkZWZhdWx0OigpPT5TdCxpc1N0eWxlZENvbXBvbmVudDooKT0+RixrZXlmcmFtZXM6KCk9Pkx0LHdpdGhUaGVtZTooKT0+T3R9KTt2YXIgcj1uKDk0Niksbz1uLm4ociksaT1uKDI0NiksYT1uLm4oaSksbD1uKDM3OCk7Y29uc3Qgcz17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6MSxib3JkZXJJbWFnZU91dHNldDoxLGJvcmRlckltYWdlU2xpY2U6MSxib3JkZXJJbWFnZVdpZHRoOjEsYm94RmxleDoxLGJveEZsZXhHcm91cDoxLGJveE9yZGluYWxHcm91cDoxLGNvbHVtbkNvdW50OjEsY29sdW1uczoxLGZsZXg6MSxmbGV4R3JvdzoxLGZsZXhQb3NpdGl2ZToxLGZsZXhTaHJpbms6MSxmbGV4TmVnYXRpdmU6MSxmbGV4T3JkZXI6MSxncmlkUm93OjEsZ3JpZFJvd0VuZDoxLGdyaWRSb3dTcGFuOjEsZ3JpZFJvd1N0YXJ0OjEsZ3JpZENvbHVtbjoxLGdyaWRDb2x1bW5FbmQ6MSxncmlkQ29sdW1uU3BhbjoxLGdyaWRDb2x1bW5TdGFydDoxLG1zR3JpZFJvdzoxLG1zR3JpZFJvd1NwYW46MSxtc0dyaWRDb2x1bW46MSxtc0dyaWRDb2x1bW5TcGFuOjEsZm9udFdlaWdodDoxLGxpbmVIZWlnaHQ6MSxvcGFjaXR5OjEsb3JkZXI6MSxvcnBoYW5zOjEsdGFiU2l6ZToxLHdpZG93czoxLHpJbmRleDoxLHpvb206MSxXZWJraXRMaW5lQ2xhbXA6MSxmaWxsT3BhY2l0eToxLGZsb29kT3BhY2l0eToxLHN0b3BPcGFjaXR5OjEsc3Ryb2tlRGFzaGFycmF5OjEsc3Ryb2tlRGFzaG9mZnNldDoxLHN0cm9rZU1pdGVybGltaXQ6MSxzdHJva2VPcGFjaXR5OjEsc3Ryb2tlV2lkdGg6MX07dmFyIGM9bigxODUpLHU9TnVtYmVyLmlzTmFOfHxmdW5jdGlvbihlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZSYmZSE9ZX07ZnVuY3Rpb24gZihlLHQpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaWYocj1lW25dLG89dFtuXSwhKHI9PT1vfHx1KHIpJiZ1KG8pKSlyZXR1cm4hMTt2YXIgcixvO3JldHVybiEwfWNvbnN0IGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbjt2b2lkIDA9PT10JiYodD1mKTt2YXIgcixvPVtdLGk9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBhPVtdLGw9MDtsPGFyZ3VtZW50cy5sZW5ndGg7bCsrKWFbbF09YXJndW1lbnRzW2xdO3JldHVybiBpJiZuPT09dGhpcyYmdChhLG8pfHwocj1lLmFwcGx5KHRoaXMsYSksaT0hMCxuPXRoaXMsbz1hKSxyfX07dmFyIHA9L14oKGNoaWxkcmVufGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MfGtleXxyZWZ8YXV0b0ZvY3VzfGRlZmF1bHRWYWx1ZXxkZWZhdWx0Q2hlY2tlZHxpbm5lckhUTUx8c3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nfHN1cHByZXNzSHlkcmF0aW9uV2FybmluZ3x2YWx1ZUxpbmt8YWNjZXB0fGFjY2VwdENoYXJzZXR8YWNjZXNzS2V5fGFjdGlvbnxhbGxvd3xhbGxvd1VzZXJNZWRpYXxhbGxvd1BheW1lbnRSZXF1ZXN0fGFsbG93RnVsbFNjcmVlbnxhbGxvd1RyYW5zcGFyZW5jeXxhbHR8YXN5bmN8YXV0b0NvbXBsZXRlfGF1dG9QbGF5fGNhcHR1cmV8Y2VsbFBhZGRpbmd8Y2VsbFNwYWNpbmd8Y2hhbGxlbmdlfGNoYXJTZXR8Y2hlY2tlZHxjaXRlfGNsYXNzSUR8Y2xhc3NOYW1lfGNvbHN8Y29sU3Bhbnxjb250ZW50fGNvbnRlbnRFZGl0YWJsZXxjb250ZXh0TWVudXxjb250cm9sc3xjb250cm9sc0xpc3R8Y29vcmRzfGNyb3NzT3JpZ2lufGRhdGF8ZGF0ZVRpbWV8ZGVjb2Rpbmd8ZGVmYXVsdHxkZWZlcnxkaXJ8ZGlzYWJsZWR8ZGlzYWJsZVBpY3R1cmVJblBpY3R1cmV8ZG93bmxvYWR8ZHJhZ2dhYmxlfGVuY1R5cGV8Zm9ybXxmb3JtQWN0aW9ufGZvcm1FbmNUeXBlfGZvcm1NZXRob2R8Zm9ybU5vVmFsaWRhdGV8Zm9ybVRhcmdldHxmcmFtZUJvcmRlcnxoZWFkZXJzfGhlaWdodHxoaWRkZW58aGlnaHxocmVmfGhyZWZMYW5nfGh0bWxGb3J8aHR0cEVxdWl2fGlkfGlucHV0TW9kZXxpbnRlZ3JpdHl8aXN8a2V5UGFyYW1zfGtleVR5cGV8a2luZHxsYWJlbHxsYW5nfGxpc3R8bG9hZGluZ3xsb29wfGxvd3xtYXJnaW5IZWlnaHR8bWFyZ2luV2lkdGh8bWF4fG1heExlbmd0aHxtZWRpYXxtZWRpYUdyb3VwfG1ldGhvZHxtaW58bWluTGVuZ3RofG11bHRpcGxlfG11dGVkfG5hbWV8bm9uY2V8bm9WYWxpZGF0ZXxvcGVufG9wdGltdW18cGF0dGVybnxwbGFjZWhvbGRlcnxwbGF5c0lubGluZXxwb3N0ZXJ8cHJlbG9hZHxwcm9maWxlfHJhZGlvR3JvdXB8cmVhZE9ubHl8cmVmZXJyZXJQb2xpY3l8cmVsfHJlcXVpcmVkfHJldmVyc2VkfHJvbGV8cm93c3xyb3dTcGFufHNhbmRib3h8c2NvcGV8c2NvcGVkfHNjcm9sbGluZ3xzZWFtbGVzc3xzZWxlY3RlZHxzaGFwZXxzaXplfHNpemVzfHNsb3R8c3BhbnxzcGVsbENoZWNrfHNyY3xzcmNEb2N8c3JjTGFuZ3xzcmNTZXR8c3RhcnR8c3RlcHxzdHlsZXxzdW1tYXJ5fHRhYkluZGV4fHRhcmdldHx0aXRsZXx0eXBlfHVzZU1hcHx2YWx1ZXx3aWR0aHx3bW9kZXx3cmFwfGFib3V0fGRhdGF0eXBlfGlubGlzdHxwcmVmaXh8cHJvcGVydHl8cmVzb3VyY2V8dHlwZW9mfHZvY2FifGF1dG9DYXBpdGFsaXplfGF1dG9Db3JyZWN0fGF1dG9TYXZlfGNvbG9yfGluZXJ0fGl0ZW1Qcm9wfGl0ZW1TY29wZXxpdGVtVHlwZXxpdGVtSUR8aXRlbVJlZnxvbnxyZXN1bHRzfHNlY3VyaXR5fHVuc2VsZWN0YWJsZXxhY2NlbnRIZWlnaHR8YWNjdW11bGF0ZXxhZGRpdGl2ZXxhbGlnbm1lbnRCYXNlbGluZXxhbGxvd1Jlb3JkZXJ8YWxwaGFiZXRpY3xhbXBsaXR1ZGV8YXJhYmljRm9ybXxhc2NlbnR8YXR0cmlidXRlTmFtZXxhdHRyaWJ1dGVUeXBlfGF1dG9SZXZlcnNlfGF6aW11dGh8YmFzZUZyZXF1ZW5jeXxiYXNlbGluZVNoaWZ0fGJhc2VQcm9maWxlfGJib3h8YmVnaW58Ymlhc3xieXxjYWxjTW9kZXxjYXBIZWlnaHR8Y2xpcHxjbGlwUGF0aFVuaXRzfGNsaXBQYXRofGNsaXBSdWxlfGNvbG9ySW50ZXJwb2xhdGlvbnxjb2xvckludGVycG9sYXRpb25GaWx0ZXJzfGNvbG9yUHJvZmlsZXxjb2xvclJlbmRlcmluZ3xjb250ZW50U2NyaXB0VHlwZXxjb250ZW50U3R5bGVUeXBlfGN1cnNvcnxjeHxjeXxkfGRlY2VsZXJhdGV8ZGVzY2VudHxkaWZmdXNlQ29uc3RhbnR8ZGlyZWN0aW9ufGRpc3BsYXl8ZGl2aXNvcnxkb21pbmFudEJhc2VsaW5lfGR1cnxkeHxkeXxlZGdlTW9kZXxlbGV2YXRpb258ZW5hYmxlQmFja2dyb3VuZHxlbmR8ZXhwb25lbnR8ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZHxmaWxsfGZpbGxPcGFjaXR5fGZpbGxSdWxlfGZpbHRlcnxmaWx0ZXJSZXN8ZmlsdGVyVW5pdHN8Zmxvb2RDb2xvcnxmbG9vZE9wYWNpdHl8Zm9jdXNhYmxlfGZvbnRGYW1pbHl8Zm9udFNpemV8Zm9udFNpemVBZGp1c3R8Zm9udFN0cmV0Y2h8Zm9udFN0eWxlfGZvbnRWYXJpYW50fGZvbnRXZWlnaHR8Zm9ybWF0fGZyb218ZnJ8Znh8Znl8ZzF8ZzJ8Z2x5cGhOYW1lfGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsfGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbHxnbHlwaFJlZnxncmFkaWVudFRyYW5zZm9ybXxncmFkaWVudFVuaXRzfGhhbmdpbmd8aG9yaXpBZHZYfGhvcml6T3JpZ2luWHxpZGVvZ3JhcGhpY3xpbWFnZVJlbmRlcmluZ3xpbnxpbjJ8aW50ZXJjZXB0fGt8azF8azJ8azN8azR8a2VybmVsTWF0cml4fGtlcm5lbFVuaXRMZW5ndGh8a2VybmluZ3xrZXlQb2ludHN8a2V5U3BsaW5lc3xrZXlUaW1lc3xsZW5ndGhBZGp1c3R8bGV0dGVyU3BhY2luZ3xsaWdodGluZ0NvbG9yfGxpbWl0aW5nQ29uZUFuZ2xlfGxvY2FsfG1hcmtlckVuZHxtYXJrZXJNaWR8bWFya2VyU3RhcnR8bWFya2VySGVpZ2h0fG1hcmtlclVuaXRzfG1hcmtlcldpZHRofG1hc2t8bWFza0NvbnRlbnRVbml0c3xtYXNrVW5pdHN8bWF0aGVtYXRpY2FsfG1vZGV8bnVtT2N0YXZlc3xvZmZzZXR8b3BhY2l0eXxvcGVyYXRvcnxvcmRlcnxvcmllbnR8b3JpZW50YXRpb258b3JpZ2lufG92ZXJmbG93fG92ZXJsaW5lUG9zaXRpb258b3ZlcmxpbmVUaGlja25lc3N8cGFub3NlMXxwYWludE9yZGVyfHBhdGhMZW5ndGh8cGF0dGVybkNvbnRlbnRVbml0c3xwYXR0ZXJuVHJhbnNmb3JtfHBhdHRlcm5Vbml0c3xwb2ludGVyRXZlbnRzfHBvaW50c3xwb2ludHNBdFh8cG9pbnRzQXRZfHBvaW50c0F0WnxwcmVzZXJ2ZUFscGhhfHByZXNlcnZlQXNwZWN0UmF0aW98cHJpbWl0aXZlVW5pdHN8cnxyYWRpdXN8cmVmWHxyZWZZfHJlbmRlcmluZ0ludGVudHxyZXBlYXRDb3VudHxyZXBlYXREdXJ8cmVxdWlyZWRFeHRlbnNpb25zfHJlcXVpcmVkRmVhdHVyZXN8cmVzdGFydHxyZXN1bHR8cm90YXRlfHJ4fHJ5fHNjYWxlfHNlZWR8c2hhcGVSZW5kZXJpbmd8c2xvcGV8c3BhY2luZ3xzcGVjdWxhckNvbnN0YW50fHNwZWN1bGFyRXhwb25lbnR8c3BlZWR8c3ByZWFkTWV0aG9kfHN0YXJ0T2Zmc2V0fHN0ZERldmlhdGlvbnxzdGVtaHxzdGVtdnxzdGl0Y2hUaWxlc3xzdG9wQ29sb3J8c3RvcE9wYWNpdHl8c3RyaWtldGhyb3VnaFBvc2l0aW9ufHN0cmlrZXRocm91Z2hUaGlja25lc3N8c3RyaW5nfHN0cm9rZXxzdHJva2VEYXNoYXJyYXl8c3Ryb2tlRGFzaG9mZnNldHxzdHJva2VMaW5lY2FwfHN0cm9rZUxpbmVqb2lufHN0cm9rZU1pdGVybGltaXR8c3Ryb2tlT3BhY2l0eXxzdHJva2VXaWR0aHxzdXJmYWNlU2NhbGV8c3lzdGVtTGFuZ3VhZ2V8dGFibGVWYWx1ZXN8dGFyZ2V0WHx0YXJnZXRZfHRleHRBbmNob3J8dGV4dERlY29yYXRpb258dGV4dFJlbmRlcmluZ3x0ZXh0TGVuZ3RofHRvfHRyYW5zZm9ybXx1MXx1Mnx1bmRlcmxpbmVQb3NpdGlvbnx1bmRlcmxpbmVUaGlja25lc3N8dW5pY29kZXx1bmljb2RlQmlkaXx1bmljb2RlUmFuZ2V8dW5pdHNQZXJFbXx2QWxwaGFiZXRpY3x2SGFuZ2luZ3x2SWRlb2dyYXBoaWN8dk1hdGhlbWF0aWNhbHx2YWx1ZXN8dmVjdG9yRWZmZWN0fHZlcnNpb258dmVydEFkdll8dmVydE9yaWdpblh8dmVydE9yaWdpbll8dmlld0JveHx2aWV3VGFyZ2V0fHZpc2liaWxpdHl8d2lkdGhzfHdvcmRTcGFjaW5nfHdyaXRpbmdNb2RlfHh8eEhlaWdodHx4MXx4Mnx4Q2hhbm5lbFNlbGVjdG9yfHhsaW5rQWN0dWF0ZXx4bGlua0FyY3JvbGV8eGxpbmtIcmVmfHhsaW5rUm9sZXx4bGlua1Nob3d8eGxpbmtUaXRsZXx4bGlua1R5cGV8eG1sQmFzZXx4bWxuc3x4bWxuc1hsaW5rfHhtbExhbmd8eG1sU3BhY2V8eXx5MXx5Mnx5Q2hhbm5lbFNlbGVjdG9yfHp8em9vbUFuZFBhbnxmb3J8Y2xhc3N8YXV0b2ZvY3VzKXwoKFtEZF1bQWFdW1R0XVtBYV18W0FhXVtScl1bSWldW0FhXXx4KS0uKikpJC87Y29uc3QgaD1mdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHZvaWQgMD09PXRbbl0mJih0W25dPWUobikpLHRbbl19fSgoZnVuY3Rpb24oZSl7cmV0dXJuIHAudGVzdChlKXx8MTExPT09ZS5jaGFyQ29kZUF0KDApJiYxMTA9PT1lLmNoYXJDb2RlQXQoMSkmJmUuY2hhckNvZGVBdCgyKTw5MX0pKTtmdW5jdGlvbiB2KGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSl9ZnVuY3Rpb24gZyhlKXtyZXR1cm5cIlVuZGVmaW5lZFwiPT09dihlKX1mdW5jdGlvbiBDKGUpe3JldHVyblwiTnVsbFwiPT09dihlKX1mdW5jdGlvbiBtKGUpe3JldHVyblwiT2JqZWN0XCI9PT12KGUpJiYoZS5jb25zdHJ1Y3Rvcj09PU9iamVjdCYmT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09T2JqZWN0LnByb3RvdHlwZSl9ZnVuY3Rpb24geShlKXtyZXR1cm5cIkFycmF5XCI9PT12KGUpfWZ1bmN0aW9uIHcoZSl7cmV0dXJuXCJTeW1ib2xcIj09PXYoZSl9dmFyIGIseCxfLEwsTztiPUMseD1nO2Z1bmN0aW9uIEUoKXtmb3IodmFyIGU9MCx0PTAsbj1hcmd1bWVudHMubGVuZ3RoO3Q8bjt0KyspZSs9YXJndW1lbnRzW3RdLmxlbmd0aDt2YXIgcj1BcnJheShlKSxvPTA7Zm9yKHQ9MDt0PG47dCsrKWZvcih2YXIgaT1hcmd1bWVudHNbdF0sYT0wLGw9aS5sZW5ndGg7YTxsO2ErKyxvKyspcltvXT1pW2FdO3JldHVybiByfWZ1bmN0aW9uIFMoZSx0LG4scil7dmFyIG89ci5wcm9wZXJ0eUlzRW51bWVyYWJsZSh0KT9cImVudW1lcmFibGVcIjpcIm5vbmVudW1lcmFibGVcIjtcImVudW1lcmFibGVcIj09PW8mJihlW3RdPW4pLFwibm9uZW51bWVyYWJsZVwiPT09byYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIE0oZSx0LG4pe2lmKCFtKHQpKXJldHVybiBuJiZ5KG4pJiZuLmZvckVhY2goKGZ1bmN0aW9uKG4pe3Q9bihlLHQpfSkpLHQ7dmFyIHI9e307bShlKSYmKHI9RShPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKSxPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpKS5yZWR1Y2UoKGZ1bmN0aW9uKG4scil7dmFyIG89ZVtyXTtyZXR1cm4oIXcocikmJiFPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5pbmNsdWRlcyhyKXx8dyhyKSYmIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCkuaW5jbHVkZXMocikpJiZTKG4scixvLGUpLG59KSx7fSkpO3JldHVybiBFKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCkpLnJlZHVjZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10W29dLGE9bShlKT9lW29dOnZvaWQgMDtyZXR1cm4gbiYmeShuKSYmbi5mb3JFYWNoKChmdW5jdGlvbihlKXtpPWUoYSxpKX0pKSx2b2lkIDAhPT1hJiZtKGkpJiYoaT1NKGEsaSxuKSksUyhyLG8saSx0KSxyfSkscil9Y29uc3Qgaj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTt2YXIgcj1udWxsLG89ZTtyZXR1cm4gbShlKSYmZS5leHRlbnNpb25zJiYxPT09T2JqZWN0LmtleXMoZSkubGVuZ3RoJiYobz17fSxyPWUuZXh0ZW5zaW9ucyksdC5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE0oZSx0LHIpfSksbyl9O3ZhciBrPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtlWzBdXSxyPTAsbz10Lmxlbmd0aDtyPG87cis9MSluLnB1c2godFtyXSxlW3IrMV0pO3JldHVybiBufSxSPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LFA9ZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSxBPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksST1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxUPWZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9LEg9ZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIXR8fFwib2JqZWN0XCIhPXR5cGVvZiB0JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0P2U6dH0sVj1mdW5jdGlvbihlKXtyZXR1cm5cIm9iamVjdFwiPT09KHZvaWQgMD09PWU/XCJ1bmRlZmluZWRcIjpSKGUpKSYmZS5jb25zdHJ1Y3Rvcj09PU9iamVjdH0sQj1PYmplY3QuZnJlZXplKFtdKSxEPU9iamVjdC5mcmVlemUoe30pO2Z1bmN0aW9uIFooZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZX1mdW5jdGlvbiAkKGUpe3JldHVybiBlLmRpc3BsYXlOYW1lfHxlLm5hbWV8fFwiQ29tcG9uZW50XCJ9ZnVuY3Rpb24gRihlKXtyZXR1cm4gZSYmXCJzdHJpbmdcIj09dHlwZW9mIGUuc3R5bGVkQ29tcG9uZW50SWR9dmFyIE49XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJihwcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfQVRUUnx8cHJvY2Vzcy5lbnYuU0NfQVRUUil8fFwiZGF0YS1zdHlsZWRcIixVPVwiZGF0YS1zdHlsZWQtdmVyc2lvblwiLFc9XCJkYXRhLXN0eWxlZC1zdHJlYW1lZFwiLHo9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmXCJIVE1MRWxlbWVudFwiaW4gd2luZG93LEc9XCJib29sZWFuXCI9PXR5cGVvZiBTQ19ESVNBQkxFX1NQRUVEWSYmU0NfRElTQUJMRV9TUEVFRFl8fFwidW5kZWZpbmVkXCIhPXR5cGVvZiBwcm9jZXNzJiYocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0RJU0FCTEVfU1BFRURZfHxwcm9jZXNzLmVudi5TQ19ESVNBQkxFX1NQRUVEWSl8fCExLHE9e307dmFyIFk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtQKHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1BcnJheShyPjE/ci0xOjApLGk9MTtpPHI7aSsrKW9baS0xXT1hcmd1bWVudHNbaV07dmFyIGE9SCh0aGlzLGUuY2FsbCh0aGlzLFwiQW4gZXJyb3Igb2NjdXJyZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc3R5bGVkLWNvbXBvbmVudHMvc3R5bGVkLWNvbXBvbmVudHMvYmxvYi9tYXN0ZXIvcGFja2FnZXMvc3R5bGVkLWNvbXBvbmVudHMvc3JjL3V0aWxzL2Vycm9ycy5tZCNcIituK1wiIGZvciBtb3JlIGluZm9ybWF0aW9uLlwiKyhvLmxlbmd0aD4wP1wiIEFkZGl0aW9uYWwgYXJndW1lbnRzOiBcIitvLmpvaW4oXCIsIFwiKTpcIlwiKSkpO3JldHVybiBIKGEpfXJldHVybiBUKHQsZSksdH0oRXJyb3IpLEs9L15bXlxcU1xcbl0qP1xcL1xcKiBzYy1jb21wb25lbnQtaWQ6XFxzKihcXFMrKVxccytcXCpcXC8vZ20sWD1mdW5jdGlvbihlKXt2YXIgdD1cIlwiKyhlfHxcIlwiKSxuPVtdO3JldHVybiB0LnJlcGxhY2UoSywoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBuLnB1c2goe2NvbXBvbmVudElkOnQsbWF0Y2hJbmRleDpyfSksZX0pKSxuLm1hcCgoZnVuY3Rpb24oZSxyKXt2YXIgbz1lLmNvbXBvbmVudElkLGk9ZS5tYXRjaEluZGV4LGE9bltyKzFdO3JldHVybntjb21wb25lbnRJZDpvLGNzc0Zyb21ET006YT90LnNsaWNlKGksYS5tYXRjaEluZGV4KTp0LnNsaWNlKGkpfX0pKX0sSj0vXlxccypcXC9cXC8uKiQvZ20sUT1uZXcobygpKSh7Z2xvYmFsOiExLGNhc2NhZGU6ITAsa2V5ZnJhbWU6ITEscHJlZml4OiExLGNvbXByZXNzOiExLHNlbWljb2xvbjohMH0pLGVlPW5ldyhvKCkpKHtnbG9iYWw6ITEsY2FzY2FkZTohMCxrZXlmcmFtZTohMSxwcmVmaXg6ITAsY29tcHJlc3M6ITEsc2VtaWNvbG9uOiExfSksdGU9W10sbmU9ZnVuY3Rpb24oZSl7aWYoLTI9PT1lKXt2YXIgdD10ZTtyZXR1cm4gdGU9W10sdH19LHJlPWEoKSgoZnVuY3Rpb24oZSl7dGUucHVzaChlKX0pKSxvZT12b2lkIDAsaWU9dm9pZCAwLGFlPXZvaWQgMCxsZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHQ+MCYmLTEhPT1uLnNsaWNlKDAsdCkuaW5kZXhPZihpZSkmJm4uc2xpY2UodC1pZS5sZW5ndGgsdCkhPT1pZT9cIi5cIitvZTplfTtlZS51c2UoW2Z1bmN0aW9uKGUsdCxuKXsyPT09ZSYmbi5sZW5ndGgmJm5bMF0ubGFzdEluZGV4T2YoaWUpPjAmJihuWzBdPW5bMF0ucmVwbGFjZShhZSxsZSkpfSxyZSxuZV0pLFEudXNlKFtyZSxuZV0pO3ZhciBzZT1mdW5jdGlvbihlKXtyZXR1cm4gUShcIlwiLGUpfTtmdW5jdGlvbiBjZShlLHQsbil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOlwiJlwiLG89ZS5qb2luKFwiXCIpLnJlcGxhY2UoSixcIlwiKSxpPXQmJm4/bitcIiBcIit0K1wiIHsgXCIrbytcIiB9XCI6bztyZXR1cm4gb2U9cixpZT10LGFlPW5ldyBSZWdFeHAoXCJcXFxcXCIraWUrXCJcXFxcYlwiLFwiZ1wiKSxlZShufHwhdD9cIlwiOnQsaSl9dmFyIHVlPWZ1bmN0aW9uKCl7cmV0dXJuIG4ubmN9LGZlPWZ1bmN0aW9uKGUsdCxuKXtuJiYoKGVbdF18fChlW3RdPU9iamVjdC5jcmVhdGUobnVsbCkpKVtuXT0hMCl9LGRlPWZ1bmN0aW9uKGUsdCl7ZVt0XT1PYmplY3QuY3JlYXRlKG51bGwpfSxwZT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gdm9pZCAwIT09ZVt0XSYmZVt0XVtuXX19LGhlPWZ1bmN0aW9uKGUpe3ZhciB0PVwiXCI7Zm9yKHZhciBuIGluIGUpdCs9T2JqZWN0LmtleXMoZVtuXSkuam9pbihcIiBcIikrXCIgXCI7cmV0dXJuIHQudHJpbSgpfSx2ZT1mdW5jdGlvbihlKXtpZihlLnNoZWV0KXJldHVybiBlLnNoZWV0O2Zvcih2YXIgdD1lLm93bmVyRG9jdW1lbnQuc3R5bGVTaGVldHMubGVuZ3RoLG49MDtuPHQ7bis9MSl7dmFyIHI9ZS5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzW25dO2lmKHIub3duZXJOb2RlPT09ZSlyZXR1cm4gcn10aHJvdyBuZXcgWSgxMCl9LGdlPWZ1bmN0aW9uKGUsdCxuKXtpZighdClyZXR1cm4hMTt2YXIgcj1lLmNzc1J1bGVzLmxlbmd0aDt0cnl7ZS5pbnNlcnRSdWxlKHQsbjw9cj9uOnIpfWNhdGNoKGUpe3JldHVybiExfXJldHVybiEwfSxDZT1mdW5jdGlvbihlKXtyZXR1cm5cIlxcbi8qIHNjLWNvbXBvbmVudC1pZDogXCIrZStcIiAqL1xcblwifSxtZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLHI9MDtyPD10O3IrPTEpbis9ZVtyXTtyZXR1cm4gbn0seWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9dWUoKTtyZXR1cm5cIjxzdHlsZSBcIitbciYmJ25vbmNlPVwiJytyKydcIicsTisnPVwiJytoZSh0KSsnXCInLFUrJz1cIjQuNC4xXCInLG5dLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKStcIj5cIitlKCkrXCI8L3N0eWxlPlwifX0sd2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbixyPSgobj17fSlbTl09aGUodCksbltVXT1cIjQuNC4xXCIsbiksbz11ZSgpO3JldHVybiBvJiYoci5ub25jZT1vKSxsLmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLEkoe30scix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDplKCl9fSkpfX0sYmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKGUpfX0seGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jcmVhdGVUZXh0Tm9kZShDZSh0KSl9LF9lPWZ1bmN0aW9uIGUodCxuKXt2YXIgcj12b2lkIDA9PT10P09iamVjdC5jcmVhdGUobnVsbCk6dCxvPXZvaWQgMD09PW4/T2JqZWN0LmNyZWF0ZShudWxsKTpuLGk9ZnVuY3Rpb24oZSl7dmFyIHQ9b1tlXTtyZXR1cm4gdm9pZCAwIT09dD90Om9bZV09W1wiXCJdfSxhPWZ1bmN0aW9uKCl7dmFyIGU9XCJcIjtmb3IodmFyIHQgaW4gbyl7dmFyIG49b1t0XVswXTtuJiYoZSs9Q2UodCkrbil9cmV0dXJuIGV9LGw9e2Nsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IodmFyIG4gaW4gZSl0W25dPUkoe30sZVtuXSk7cmV0dXJuIHR9KHIpLG49T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IodmFyIGkgaW4gbyluW2ldPVtvW2ldWzBdXTtyZXR1cm4gZSh0LG4pfSxjc3M6YSxnZXRJZHM6YmUobyksaGFzTmFtZUZvcklkOnBlKHIpLGluc2VydE1hcmtlcjppLGluc2VydFJ1bGVzOmZ1bmN0aW9uKGUsdCxuKXtpKGUpWzBdKz10LmpvaW4oXCIgXCIpLGZlKHIsZSxuKX0scmVtb3ZlUnVsZXM6ZnVuY3Rpb24oZSl7dmFyIHQ9b1tlXTt2b2lkIDAhPT10JiYodFswXT1cIlwiLGRlKHIsZSkpfSxzZWFsZWQ6ITEsc3R5bGVUYWc6bnVsbCx0b0VsZW1lbnQ6d2UoYSxyKSx0b0hUTUw6eWUoYSxyKX07cmV0dXJuIGx9LExlPWZ1bmN0aW9uKGUsdCxuLHIsbyl7aWYoeiYmIW4pe3ZhciBpPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1kb2N1bWVudDtlP3I9ZS5vd25lckRvY3VtZW50OnQmJihyPXQub3duZXJEb2N1bWVudCk7dmFyIG89ci5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7by5zZXRBdHRyaWJ1dGUoTixcIlwiKSxvLnNldEF0dHJpYnV0ZShVLFwiNC40LjFcIik7dmFyIGk9dWUoKTtpZihpJiZvLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsaSksby5hcHBlbmRDaGlsZChyLmNyZWF0ZVRleHROb2RlKFwiXCIpKSxlJiYhdCllLmFwcGVuZENoaWxkKG8pO2Vsc2V7aWYoIXR8fCFlfHwhdC5wYXJlbnROb2RlKXRocm93IG5ldyBZKDYpO3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobyxuP3Q6dC5uZXh0U2libGluZyl9cmV0dXJuIG99KGUsdCxyKTtyZXR1cm4gRz9mdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj1PYmplY3QuY3JlYXRlKG51bGwpLG89dm9pZCAwIT09dCxpPSExLGE9ZnVuY3Rpb24odCl7dmFyIG89clt0XTtyZXR1cm4gdm9pZCAwIT09bz9vOihyW3RdPXhlKGUub3duZXJEb2N1bWVudCx0KSxlLmFwcGVuZENoaWxkKHJbdF0pLG5bdF09T2JqZWN0LmNyZWF0ZShudWxsKSxyW3RdKX0sbD1mdW5jdGlvbigpe3ZhciBlPVwiXCI7Zm9yKHZhciB0IGluIHIpZSs9clt0XS5kYXRhO3JldHVybiBlfTtyZXR1cm57Y2xvbmU6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgWSg1KX0sY3NzOmwsZ2V0SWRzOmJlKHIpLGhhc05hbWVGb3JJZDpwZShuKSxpbnNlcnRNYXJrZXI6YSxpbnNlcnRSdWxlczpmdW5jdGlvbihlLHIsbCl7Zm9yKHZhciBzPWEoZSksYz1bXSx1PXIubGVuZ3RoLGY9MDtmPHU7Zis9MSl7dmFyIGQ9cltmXSxwPW87aWYocCYmLTEhPT1kLmluZGV4T2YoXCJAaW1wb3J0XCIpKWMucHVzaChkKTtlbHNle3A9ITE7dmFyIGg9Zj09PXUtMT9cIlwiOlwiIFwiO3MuYXBwZW5kRGF0YShcIlwiK2QraCl9fWZlKG4sZSxsKSxvJiZjLmxlbmd0aD4wJiYoaT0hMCx0KCkuaW5zZXJ0UnVsZXMoZStcIi1pbXBvcnRcIixjKSl9LHJlbW92ZVJ1bGVzOmZ1bmN0aW9uKGEpe3ZhciBsPXJbYV07aWYodm9pZCAwIT09bCl7dmFyIHM9eGUoZS5vd25lckRvY3VtZW50LGEpO2UucmVwbGFjZUNoaWxkKHMsbCksclthXT1zLGRlKG4sYSksbyYmaSYmdCgpLnJlbW92ZVJ1bGVzKGErXCItaW1wb3J0XCIpfX0sc2VhbGVkOiExLHN0eWxlVGFnOmUsdG9FbGVtZW50OndlKGwsbiksdG9IVE1MOnllKGwsbil9fShpLG8pOmZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPU9iamVjdC5jcmVhdGUobnVsbCksbz1bXSxpPXZvaWQgMCE9PXQsYT0hMSxsPWZ1bmN0aW9uKGUpe3ZhciB0PXJbZV07cmV0dXJuIHZvaWQgMCE9PXQ/dDoocltlXT1vLmxlbmd0aCxvLnB1c2goMCksZGUobixlKSxyW2VdKX0scz1mdW5jdGlvbigpe3ZhciB0PXZlKGUpLmNzc1J1bGVzLG49XCJcIjtmb3IodmFyIGkgaW4gcil7bis9Q2UoaSk7Zm9yKHZhciBhPXJbaV0sbD1tZShvLGEpLHM9bC1vW2FdO3M8bDtzKz0xKXt2YXIgYz10W3NdO3ZvaWQgMCE9PWMmJihuKz1jLmNzc1RleHQpfX1yZXR1cm4gbn07cmV0dXJue2Nsb25lOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IFkoNSl9LGNzczpzLGdldElkczpiZShyKSxoYXNOYW1lRm9ySWQ6cGUobiksaW5zZXJ0TWFya2VyOmwsaW5zZXJ0UnVsZXM6ZnVuY3Rpb24ocixzLGMpe2Zvcih2YXIgdT1sKHIpLGY9dmUoZSksZD1tZShvLHUpLHA9MCxoPVtdLHY9cy5sZW5ndGgsZz0wO2c8djtnKz0xKXt2YXIgQz1zW2ddLG09aTttJiYtMSE9PUMuaW5kZXhPZihcIkBpbXBvcnRcIik/aC5wdXNoKEMpOmdlKGYsQyxkK3ApJiYobT0hMSxwKz0xKX1pJiZoLmxlbmd0aD4wJiYoYT0hMCx0KCkuaW5zZXJ0UnVsZXMocitcIi1pbXBvcnRcIixoKSksb1t1XSs9cCxmZShuLHIsYyl9LHJlbW92ZVJ1bGVzOmZ1bmN0aW9uKGwpe3ZhciBzPXJbbF07aWYodm9pZCAwIT09cyYmITEhPT1lLmlzQ29ubmVjdGVkKXt2YXIgYz1vW3NdOyFmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPXQtbixvPXQ7bz5yO28tPTEpZS5kZWxldGVSdWxlKG8pfSh2ZShlKSxtZShvLHMpLTEsYyksb1tzXT0wLGRlKG4sbCksaSYmYSYmdCgpLnJlbW92ZVJ1bGVzKGwrXCItaW1wb3J0XCIpfX0sc2VhbGVkOiExLHN0eWxlVGFnOmUsdG9FbGVtZW50OndlKHMsbiksdG9IVE1MOnllKHMsbil9fShpLG8pfXJldHVybiBfZSgpfSxPZT0vXFxzKy8sRWU9dm9pZCAwO0VlPXo/Rz80MDoxZTM6LTE7dmFyIFNlPTAsTWU9dm9pZCAwLGplPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06ej9kb2N1bWVudC5oZWFkOm51bGwscj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO1AodGhpcyxlKSx0aGlzLmdldEltcG9ydFJ1bGVUYWc9ZnVuY3Rpb24oKXt2YXIgZT10LmltcG9ydFJ1bGVUYWc7aWYodm9pZCAwIT09ZSlyZXR1cm4gZTt2YXIgbj10LnRhZ3NbMF07cmV0dXJuIHQuaW1wb3J0UnVsZVRhZz1MZSh0LnRhcmdldCxuP24uc3R5bGVUYWc6bnVsbCx0LmZvcmNlU2VydmVyLCEwKX0sU2UrPTEsdGhpcy5pZD1TZSx0aGlzLmZvcmNlU2VydmVyPXIsdGhpcy50YXJnZXQ9cj9udWxsOm4sdGhpcy50YWdNYXA9e30sdGhpcy5kZWZlcnJlZD17fSx0aGlzLnJlaHlkcmF0ZWROYW1lcz17fSx0aGlzLmlnbm9yZVJlaHlkcmF0ZWROYW1lcz17fSx0aGlzLnRhZ3M9W10sdGhpcy5jYXBhY2l0eT0xLHRoaXMuY2xvbmVzPVtdfXJldHVybiBlLnByb3RvdHlwZS5yZWh5ZHJhdGU9ZnVuY3Rpb24oKXtpZighenx8dGhpcy5mb3JjZVNlcnZlcilyZXR1cm4gdGhpczt2YXIgZT1bXSx0PVtdLG49ITEscj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic3R5bGVbXCIrTitcIl1bXCIrVSsnPVwiNC40LjFcIl0nKSxvPXIubGVuZ3RoO2lmKCFvKXJldHVybiB0aGlzO2Zvcih2YXIgaT0wO2k8bztpKz0xKXt2YXIgYT1yW2ldO258fChuPSEhYS5nZXRBdHRyaWJ1dGUoVykpO2Zvcih2YXIgbCxzPShhLmdldEF0dHJpYnV0ZShOKXx8XCJcIikudHJpbSgpLnNwbGl0KE9lKSxjPXMubGVuZ3RoLHU9MDt1PGM7dSs9MSlsPXNbdV0sdGhpcy5yZWh5ZHJhdGVkTmFtZXNbbF09ITA7dC5wdXNoLmFwcGx5KHQsWChhLnRleHRDb250ZW50KSksZS5wdXNoKGEpfXZhciBmPXQubGVuZ3RoO2lmKCFmKXJldHVybiB0aGlzO3ZhciBkPXRoaXMubWFrZVRhZyhudWxsKTshZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj0wLG89bi5sZW5ndGg7cjxvO3IrPTEpe3ZhciBpPW5bcl0sYT1pLmNvbXBvbmVudElkLGw9aS5jc3NGcm9tRE9NLHM9c2UobCk7ZS5pbnNlcnRSdWxlcyhhLHMpfWZvcih2YXIgYz0wLHU9dC5sZW5ndGg7Yzx1O2MrPTEpe3ZhciBmPXRbY107Zi5wYXJlbnROb2RlJiZmLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZil9fShkLGUsdCksdGhpcy5jYXBhY2l0eT1NYXRoLm1heCgxLEVlLWYpLHRoaXMudGFncy5wdXNoKGQpO2Zvcih2YXIgcD0wO3A8ZjtwKz0xKXRoaXMudGFnTWFwW3RbcF0uY29tcG9uZW50SWRdPWQ7cmV0dXJuIHRoaXN9LGUucmVzZXQ9ZnVuY3Rpb24oKXtNZT1uZXcgZSh2b2lkIDAsYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSkucmVoeWRyYXRlKCl9LGUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IGUodGhpcy50YXJnZXQsdGhpcy5mb3JjZVNlcnZlcik7cmV0dXJuIHRoaXMuY2xvbmVzLnB1c2godCksdC50YWdzPXRoaXMudGFncy5tYXAoKGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1lLmdldElkcygpLHI9ZS5jbG9uZSgpLG89MDtvPG4ubGVuZ3RoO28rPTEpdC50YWdNYXBbbltvXV09cjtyZXR1cm4gcn0pKSx0LnJlaHlkcmF0ZWROYW1lcz1JKHt9LHRoaXMucmVoeWRyYXRlZE5hbWVzKSx0LmRlZmVycmVkPUkoe30sdGhpcy5kZWZlcnJlZCksdH0sZS5wcm90b3R5cGUuc2VhbEFsbFRhZ3M9ZnVuY3Rpb24oKXt0aGlzLmNhcGFjaXR5PTEsdGhpcy50YWdzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Uuc2VhbGVkPSEwfSkpfSxlLnByb3RvdHlwZS5tYWtlVGFnPWZ1bmN0aW9uKGUpe3ZhciB0PWU/ZS5zdHlsZVRhZzpudWxsO3JldHVybiBMZSh0aGlzLnRhcmdldCx0LHRoaXMuZm9yY2VTZXJ2ZXIsITEsdGhpcy5nZXRJbXBvcnRSdWxlVGFnKX0sZS5wcm90b3R5cGUuZ2V0VGFnRm9ySWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50YWdNYXBbZV07aWYodm9pZCAwIT09dCYmIXQuc2VhbGVkKXJldHVybiB0O3ZhciBuPXRoaXMudGFnc1t0aGlzLnRhZ3MubGVuZ3RoLTFdO3JldHVybiB0aGlzLmNhcGFjaXR5LT0xLDA9PT10aGlzLmNhcGFjaXR5JiYodGhpcy5jYXBhY2l0eT1FZSxuPXRoaXMubWFrZVRhZyhuKSx0aGlzLnRhZ3MucHVzaChuKSksdGhpcy50YWdNYXBbZV09bn0sZS5wcm90b3R5cGUuaGFzSWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMudGFnTWFwW2VdfSxlLnByb3RvdHlwZS5oYXNOYW1lRm9ySWQ9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT10aGlzLmlnbm9yZVJlaHlkcmF0ZWROYW1lc1tlXSYmdGhpcy5yZWh5ZHJhdGVkTmFtZXNbdF0pcmV0dXJuITA7dmFyIG49dGhpcy50YWdNYXBbZV07cmV0dXJuIHZvaWQgMCE9PW4mJm4uaGFzTmFtZUZvcklkKGUsdCl9LGUucHJvdG90eXBlLmRlZmVycmVkSW5qZWN0PWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dGhpcy50YWdNYXBbZV0pe2Zvcih2YXIgbj10aGlzLmNsb25lcyxyPTA7cjxuLmxlbmd0aDtyKz0xKW5bcl0uZGVmZXJyZWRJbmplY3QoZSx0KTt0aGlzLmdldFRhZ0ZvcklkKGUpLmluc2VydE1hcmtlcihlKSx0aGlzLmRlZmVycmVkW2VdPXR9fSxlLnByb3RvdHlwZS5pbmplY3Q9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj10aGlzLmNsb25lcyxvPTA7bzxyLmxlbmd0aDtvKz0xKXJbb10uaW5qZWN0KGUsdCxuKTt2YXIgaT10aGlzLmdldFRhZ0ZvcklkKGUpO2lmKHZvaWQgMCE9PXRoaXMuZGVmZXJyZWRbZV0pe3ZhciBhPXRoaXMuZGVmZXJyZWRbZV0uY29uY2F0KHQpO2kuaW5zZXJ0UnVsZXMoZSxhLG4pLHRoaXMuZGVmZXJyZWRbZV09dm9pZCAwfWVsc2UgaS5pbnNlcnRSdWxlcyhlLHQsbil9LGUucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnRhZ01hcFtlXTtpZih2b2lkIDAhPT10KXtmb3IodmFyIG49dGhpcy5jbG9uZXMscj0wO3I8bi5sZW5ndGg7cis9MSluW3JdLnJlbW92ZShlKTt0LnJlbW92ZVJ1bGVzKGUpLHRoaXMuaWdub3JlUmVoeWRyYXRlZE5hbWVzW2VdPSEwLHRoaXMuZGVmZXJyZWRbZV09dm9pZCAwfX0sZS5wcm90b3R5cGUudG9IVE1MPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFncy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRvSFRNTCgpfSkpLmpvaW4oXCJcIil9LGUucHJvdG90eXBlLnRvUmVhY3RFbGVtZW50cz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuaWQ7cmV0dXJuIHRoaXMudGFncy5tYXAoKGZ1bmN0aW9uKHQsbil7dmFyIHI9XCJzYy1cIitlK1wiLVwiK247cmV0dXJuKDAsbC5jbG9uZUVsZW1lbnQpKHQudG9FbGVtZW50KCkse2tleTpyfSl9KSl9LEEoZSxudWxsLFt7a2V5OlwibWFzdGVyXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE1lfHwoTWU9KG5ldyBlKS5yZWh5ZHJhdGUoKSl9fSx7a2V5OlwiaW5zdGFuY2VcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5tYXN0ZXJ9fV0pLGV9KCksa2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbil7dmFyIHI9dGhpcztQKHRoaXMsZSksdGhpcy5pbmplY3Q9ZnVuY3Rpb24oZSl7ZS5oYXNOYW1lRm9ySWQoci5pZCxyLm5hbWUpfHxlLmluamVjdChyLmlkLHIucnVsZXMsci5uYW1lKX0sdGhpcy50b1N0cmluZz1mdW5jdGlvbigpe3Rocm93IG5ldyBZKDEyLFN0cmluZyhyLm5hbWUpKX0sdGhpcy5uYW1lPXQsdGhpcy5ydWxlcz1uLHRoaXMuaWQ9XCJzYy1rZXlmcmFtZXMtXCIrdH1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWV9LGV9KCksUmU9LyhbQS1aXSkvZyxQZT0vXm1zLS87ZnVuY3Rpb24gQWUoZSl7cmV0dXJuIGUucmVwbGFjZShSZSxcIi0kMVwiKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoUGUsXCItbXMtXCIpfXZhciBJZT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZXx8ITE9PT1lfHxcIlwiPT09ZX0sVGU9ZnVuY3Rpb24gZSh0LG4pe3ZhciByPVtdO3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihuKXtpZighSWUodFtuXSkpe2lmKFYodFtuXSkpcmV0dXJuIHIucHVzaC5hcHBseShyLGUodFtuXSxuKSkscjtpZihaKHRbbl0pKXJldHVybiByLnB1c2goQWUobikrXCI6XCIsdFtuXSxcIjtcIikscjtyLnB1c2goQWUobikrXCI6IFwiKyhvPW4sKG51bGw9PShpPXRbbl0pfHxcImJvb2xlYW5cIj09dHlwZW9mIGl8fFwiXCI9PT1pP1wiXCI6XCJudW1iZXJcIiE9dHlwZW9mIGl8fDA9PT1pfHxvIGluIHM/U3RyaW5nKGkpLnRyaW0oKTppK1wicHhcIikrXCI7XCIpKX12YXIgbyxpO3JldHVybiByfSkpLG4/W24rXCIge1wiXS5jb25jYXQocixbXCJ9XCJdKTpyfTtmdW5jdGlvbiBIZShlLHQsbil7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciByLG89W10saT0wLGE9ZS5sZW5ndGg7aTxhO2krPTEpbnVsbCE9PShyPUhlKGVbaV0sdCxuKSkmJihBcnJheS5pc0FycmF5KHIpP28ucHVzaC5hcHBseShvLHIpOm8ucHVzaChyKSk7cmV0dXJuIG99cmV0dXJuIEllKGUpP251bGw6RihlKT9cIi5cIitlLnN0eWxlZENvbXBvbmVudElkOlooZSk/XCJmdW5jdGlvblwiIT10eXBlb2YobD1lKXx8bC5wcm90b3R5cGUmJmwucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnR8fCF0P2U6SGUoZSh0KSx0LG4pOmUgaW5zdGFuY2VvZiBrZT9uPyhlLmluamVjdChuKSxlLmdldE5hbWUoKSk6ZTpWKGUpP1RlKGUpOmUudG9TdHJpbmcoKTt2YXIgbH1mdW5jdGlvbiBWZShlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTtyZXR1cm4gWihlKXx8VihlKT9IZShrKEIsW2VdLmNvbmNhdChuKSkpOkhlKGsoZSxuKSl9ZnVuY3Rpb24gQmUoZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06RDtpZighKDAsYy5pc1ZhbGlkRWxlbWVudFR5cGUpKHQpKXRocm93IG5ldyBZKDEsU3RyaW5nKHQpKTt2YXIgcj1mdW5jdGlvbigpe3JldHVybiBlKHQsbixWZS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9O3JldHVybiByLndpdGhDb25maWc9ZnVuY3Rpb24ocil7cmV0dXJuIEJlKGUsdCxJKHt9LG4scikpfSxyLmF0dHJzPWZ1bmN0aW9uKHIpe3JldHVybiBCZShlLHQsSSh7fSxuLHthdHRyczpBcnJheS5wcm90b3R5cGUuY29uY2F0KG4uYXR0cnMscikuZmlsdGVyKEJvb2xlYW4pfSkpfSxyfWZ1bmN0aW9uIERlKGUpe2Zvcih2YXIgdCxuPTB8ZS5sZW5ndGgscj0wfG4sbz0wO24+PTQ7KXQ9MTU0MDQ4MzQ3NyooNjU1MzUmKHQ9MjU1JmUuY2hhckNvZGVBdChvKXwoMjU1JmUuY2hhckNvZGVBdCgrK28pKTw8OHwoMjU1JmUuY2hhckNvZGVBdCgrK28pKTw8MTZ8KDI1NSZlLmNoYXJDb2RlQXQoKytvKSk8PDI0KSkrKCgxNTQwNDgzNDc3Kih0Pj4+MTYpJjY1NTM1KTw8MTYpLHI9MTU0MDQ4MzQ3NyooNjU1MzUmcikrKCgxNTQwNDgzNDc3KihyPj4+MTYpJjY1NTM1KTw8MTYpXih0PTE1NDA0ODM0NzcqKDY1NTM1Jih0Xj10Pj4+MjQpKSsoKDE1NDA0ODM0NzcqKHQ+Pj4xNikmNjU1MzUpPDwxNikpLG4tPTQsKytvO3N3aXRjaChuKXtjYXNlIDM6cl49KDI1NSZlLmNoYXJDb2RlQXQobysyKSk8PDE2O2Nhc2UgMjpyXj0oMjU1JmUuY2hhckNvZGVBdChvKzEpKTw8ODtjYXNlIDE6cj0xNTQwNDgzNDc3Kig2NTUzNSYocl49MjU1JmUuY2hhckNvZGVBdChvKSkpKygoMTU0MDQ4MzQ3Nyoocj4+PjE2KSY2NTUzNSk8PDE2KX1yZXR1cm4oKHI9MTU0MDQ4MzQ3NyooNjU1MzUmKHJePXI+Pj4xMykpKygoMTU0MDQ4MzQ3Nyoocj4+PjE2KSY2NTUzNSk8PDE2KSlecj4+PjE1KT4+PjB9dmFyIFplPTUyLCRlPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUrKGU+MjU/Mzk6OTcpKX07ZnVuY3Rpb24gRmUoZSl7dmFyIHQ9XCJcIixuPXZvaWQgMDtmb3Iobj1lO24+WmU7bj1NYXRoLmZsb29yKG4vWmUpKXQ9JGUobiVaZSkrdDtyZXR1cm4gJGUobiVaZSkrdH1mdW5jdGlvbiBOZShlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bis9MSl7dmFyIHI9ZVtuXTtpZihBcnJheS5pc0FycmF5KHIpJiYhTmUocix0KSlyZXR1cm4hMTtpZihaKHIpJiYhRihyKSlyZXR1cm4hMX1yZXR1cm4hdC5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gWihlKXx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGUpaWYoWihlW3RdKSlyZXR1cm4hMDtyZXR1cm4hMX0oZSl9KSl9dmFyIFVlLFdlPWZ1bmN0aW9uKGUpe3JldHVybiBGZShEZShlKSl9LHplPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4scil7UCh0aGlzLGUpLHRoaXMucnVsZXM9dCx0aGlzLmlzU3RhdGljPU5lKHQsbiksdGhpcy5jb21wb25lbnRJZD1yLGplLm1hc3Rlci5oYXNJZChyKXx8amUubWFzdGVyLmRlZmVycmVkSW5qZWN0KHIsW10pfXJldHVybiBlLnByb3RvdHlwZS5nZW5lcmF0ZUFuZEluamVjdFN0eWxlcz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuaXNTdGF0aWMscj10aGlzLmNvbXBvbmVudElkLG89dGhpcy5sYXN0Q2xhc3NOYW1lO2lmKHomJm4mJlwic3RyaW5nXCI9PXR5cGVvZiBvJiZ0Lmhhc05hbWVGb3JJZChyLG8pKXJldHVybiBvO3ZhciBpPUhlKHRoaXMucnVsZXMsZSx0KSxhPVdlKHRoaXMuY29tcG9uZW50SWQraS5qb2luKFwiXCIpKTtyZXR1cm4gdC5oYXNOYW1lRm9ySWQocixhKXx8dC5pbmplY3QodGhpcy5jb21wb25lbnRJZCxjZShpLFwiLlwiK2Esdm9pZCAwLHIpLGEpLHRoaXMubGFzdENsYXNzTmFtZT1hLGF9LGUuZ2VuZXJhdGVOYW1lPWZ1bmN0aW9uKGUpe3JldHVybiBXZShlKX0sZX0oKSxHZT1mdW5jdGlvbihlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpELHI9ISFuJiZlLnRoZW1lPT09bi50aGVtZTtyZXR1cm4gZS50aGVtZSYmIXI/ZS50aGVtZTp0fHxuLnRoZW1lfSxxZT0vW1tcXF0uIyokPjwrfj18XjooKSxcIidgLV0rL2csWWU9LyheLXwtJCkvZztmdW5jdGlvbiBLZShlKXtyZXR1cm4gZS5yZXBsYWNlKHFlLFwiLVwiKS5yZXBsYWNlKFllLFwiXCIpfWZ1bmN0aW9uIFhlKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiYhMH12YXIgSmU9e2NoaWxkQ29udGV4dFR5cGVzOiEwLGNvbnRleHRUeXBlczohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAsZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOiEwLHByb3BUeXBlczohMCx0eXBlOiEwfSxRZT17bmFtZTohMCxsZW5ndGg6ITAscHJvdG90eXBlOiEwLGNhbGxlcjohMCxjYWxsZWU6ITAsYXJndW1lbnRzOiEwLGFyaXR5OiEwfSxldD0oKFVlPXt9KVtjLkZvcndhcmRSZWZdPXskJHR5cGVvZjohMCxyZW5kZXI6ITB9LFVlKSx0dD1PYmplY3QuZGVmaW5lUHJvcGVydHksbnQ9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMscnQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxvdD12b2lkIDA9PT1ydD9mdW5jdGlvbigpe3JldHVybltdfTpydCxpdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGF0PU9iamVjdC5nZXRQcm90b3R5cGVPZixsdD1PYmplY3QucHJvdG90eXBlLHN0PUFycmF5LnByb3RvdHlwZTtmdW5jdGlvbiBjdChlLHQsbil7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQpe3ZhciByPWF0KHQpO3ImJnIhPT1sdCYmY3QoZSxyLG4pO2Zvcih2YXIgbz1zdC5jb25jYXQobnQodCksb3QodCkpLGk9ZXRbZS4kJHR5cGVvZl18fEplLGE9ZXRbdC4kJHR5cGVvZl18fEplLGw9by5sZW5ndGgscz12b2lkIDAsYz12b2lkIDA7bC0tOylpZihjPW9bbF0sIShRZVtjXXx8biYmbltjXXx8YSYmYVtjXXx8aSYmaVtjXSkmJihzPWl0KHQsYykpKXRyeXt0dChlLGMscyl9Y2F0Y2goZSl7fXJldHVybiBlfXJldHVybiBlfXZhciB1dD0oMCxsLmNyZWF0ZUNvbnRleHQpKCksZnQ9dXQuQ29uc3VtZXIsZHQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtQKHRoaXMsdCk7dmFyIHI9SCh0aGlzLGUuY2FsbCh0aGlzLG4pKTtyZXR1cm4gci5nZXRDb250ZXh0PWQoci5nZXRDb250ZXh0LmJpbmQocikpLHIucmVuZGVySW5uZXI9ci5yZW5kZXJJbm5lci5iaW5kKHIpLHJ9cmV0dXJuIFQodCxlKSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbj9sLmNyZWF0ZUVsZW1lbnQodXQuQ29uc3VtZXIsbnVsbCx0aGlzLnJlbmRlcklubmVyKTpudWxsfSx0LnByb3RvdHlwZS5yZW5kZXJJbm5lcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldENvbnRleHQodGhpcy5wcm9wcy50aGVtZSxlKTtyZXR1cm4gbC5jcmVhdGVFbGVtZW50KHV0LlByb3ZpZGVyLHt2YWx1ZTp0fSx0aGlzLnByb3BzLmNoaWxkcmVuKX0sdC5wcm90b3R5cGUuZ2V0VGhlbWU9ZnVuY3Rpb24oZSx0KXtpZihaKGUpKXJldHVybiBlKHQpO2lmKG51bGw9PT1lfHxBcnJheS5pc0FycmF5KGUpfHxcIm9iamVjdFwiIT09KHZvaWQgMD09PWU/XCJ1bmRlZmluZWRcIjpSKGUpKSl0aHJvdyBuZXcgWSg4KTtyZXR1cm4gSSh7fSx0LGUpfSx0LnByb3RvdHlwZS5nZXRDb250ZXh0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZ2V0VGhlbWUoZSx0KX0sdH0obC5Db21wb25lbnQpLHB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe1AodGhpcyxlKSx0aGlzLm1hc3RlclNoZWV0PWplLm1hc3Rlcix0aGlzLmluc3RhbmNlPXRoaXMubWFzdGVyU2hlZXQuY2xvbmUoKSx0aGlzLnNlYWxlZD0hMX1yZXR1cm4gZS5wcm90b3R5cGUuc2VhbD1mdW5jdGlvbigpe2lmKCF0aGlzLnNlYWxlZCl7dmFyIGU9dGhpcy5tYXN0ZXJTaGVldC5jbG9uZXMuaW5kZXhPZih0aGlzLmluc3RhbmNlKTt0aGlzLm1hc3RlclNoZWV0LmNsb25lcy5zcGxpY2UoZSwxKSx0aGlzLnNlYWxlZD0hMH19LGUucHJvdG90eXBlLmNvbGxlY3RTdHlsZXM9ZnVuY3Rpb24oZSl7aWYodGhpcy5zZWFsZWQpdGhyb3cgbmV3IFkoMik7cmV0dXJuIGwuY3JlYXRlRWxlbWVudChndCx7c2hlZXQ6dGhpcy5pbnN0YW5jZX0sZSl9LGUucHJvdG90eXBlLmdldFN0eWxlVGFncz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlYWwoKSx0aGlzLmluc3RhbmNlLnRvSFRNTCgpfSxlLnByb3RvdHlwZS5nZXRTdHlsZUVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWFsKCksdGhpcy5pbnN0YW5jZS50b1JlYWN0RWxlbWVudHMoKX0sZS5wcm90b3R5cGUuaW50ZXJsZWF2ZVdpdGhOb2RlU3RyZWFtPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBZKDMpfSxlfSgpLGh0PSgwLGwuY3JlYXRlQ29udGV4dCkoKSx2dD1odC5Db25zdW1lcixndD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe1AodGhpcyx0KTt2YXIgcj1IKHRoaXMsZS5jYWxsKHRoaXMsbikpO3JldHVybiByLmdldENvbnRleHQ9ZChyLmdldENvbnRleHQpLHJ9cmV0dXJuIFQodCxlKSx0LnByb3RvdHlwZS5nZXRDb250ZXh0PWZ1bmN0aW9uKGUsdCl7aWYoZSlyZXR1cm4gZTtpZih0KXJldHVybiBuZXcgamUodCk7dGhyb3cgbmV3IFkoNCl9LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmNoaWxkcmVuLG49ZS5zaGVldCxyPWUudGFyZ2V0O3JldHVybiBsLmNyZWF0ZUVsZW1lbnQoaHQuUHJvdmlkZXIse3ZhbHVlOnRoaXMuZ2V0Q29udGV4dChuLHIpfSx0KX0sdH0obC5Db21wb25lbnQpLEN0PXt9O3ZhciBtdD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7UCh0aGlzLHQpO3ZhciBuPUgodGhpcyxlLmNhbGwodGhpcykpO3JldHVybiBuLmF0dHJzPXt9LG4ucmVuZGVyT3V0ZXI9bi5yZW5kZXJPdXRlci5iaW5kKG4pLG4ucmVuZGVySW5uZXI9bi5yZW5kZXJJbm5lci5iaW5kKG4pLG59cmV0dXJuIFQodCxlKSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbC5jcmVhdGVFbGVtZW50KHZ0LG51bGwsdGhpcy5yZW5kZXJPdXRlcil9LHQucHJvdG90eXBlLnJlbmRlck91dGVyPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOmplLm1hc3RlcjtyZXR1cm4gdGhpcy5zdHlsZVNoZWV0PWUsdGhpcy5wcm9wcy5mb3J3YXJkZWRDb21wb25lbnQuY29tcG9uZW50U3R5bGUuaXNTdGF0aWM/dGhpcy5yZW5kZXJJbm5lcigpOmwuY3JlYXRlRWxlbWVudChmdCxudWxsLHRoaXMucmVuZGVySW5uZXIpfSx0LnByb3RvdHlwZS5yZW5kZXJJbm5lcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLmZvcndhcmRlZENvbXBvbmVudCxuPXQuY29tcG9uZW50U3R5bGUscj10LmRlZmF1bHRQcm9wcyxvPSh0LmRpc3BsYXlOYW1lLHQuZm9sZGVkQ29tcG9uZW50SWRzKSxpPXQuc3R5bGVkQ29tcG9uZW50SWQsYT10LnRhcmdldCxzPXZvaWQgMDtzPW4uaXNTdGF0aWM/dGhpcy5nZW5lcmF0ZUFuZEluamVjdFN0eWxlcyhELHRoaXMucHJvcHMpOnRoaXMuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMoR2UodGhpcy5wcm9wcyxlLHIpfHxELHRoaXMucHJvcHMpO3ZhciBjPXRoaXMucHJvcHMuYXN8fHRoaXMuYXR0cnMuYXN8fGEsdT1YZShjKSxmPXt9LGQ9SSh7fSx0aGlzLnByb3BzLHRoaXMuYXR0cnMpLHA9dm9pZCAwO2ZvcihwIGluIGQpXCJmb3J3YXJkZWRDb21wb25lbnRcIiE9PXAmJlwiYXNcIiE9PXAmJihcImZvcndhcmRlZFJlZlwiPT09cD9mLnJlZj1kW3BdOlwiZm9yd2FyZGVkQXNcIj09PXA/Zi5hcz1kW3BdOnUmJiFoKHApfHwoZltwXT1kW3BdKSk7cmV0dXJuIHRoaXMucHJvcHMuc3R5bGUmJnRoaXMuYXR0cnMuc3R5bGUmJihmLnN0eWxlPUkoe30sdGhpcy5hdHRycy5zdHlsZSx0aGlzLnByb3BzLnN0eWxlKSksZi5jbGFzc05hbWU9QXJyYXkucHJvdG90eXBlLmNvbmNhdChvLGkscyE9PWk/czpudWxsLHRoaXMucHJvcHMuY2xhc3NOYW1lLHRoaXMuYXR0cnMuY2xhc3NOYW1lKS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIiksKDAsbC5jcmVhdGVFbGVtZW50KShjLGYpfSx0LnByb3RvdHlwZS5idWlsZEV4ZWN1dGlvbkNvbnRleHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMsbz1JKHt9LHQse3RoZW1lOmV9KTtyZXR1cm4gbi5sZW5ndGg/KHRoaXMuYXR0cnM9e30sbi5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdCxuPWUsaT0hMSxhPXZvaWQgMCxsPXZvaWQgMDtmb3IobCBpbiBaKG4pJiYobj1uKG8pLGk9ITApLG4pYT1uW2xdLGl8fCFaKGEpfHwodD1hKSYmdC5wcm90b3R5cGUmJnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnR8fEYoYSl8fChhPWEobykpLHIuYXR0cnNbbF09YSxvW2xdPWF9KSksbyk6b30sdC5wcm90b3R5cGUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmZvcndhcmRlZENvbXBvbmVudCxyPW4uYXR0cnMsbz1uLmNvbXBvbmVudFN0eWxlO24ud2FyblRvb01hbnlDbGFzc2VzO3JldHVybiBvLmlzU3RhdGljJiYhci5sZW5ndGg/by5nZW5lcmF0ZUFuZEluamVjdFN0eWxlcyhELHRoaXMuc3R5bGVTaGVldCk6by5nZW5lcmF0ZUFuZEluamVjdFN0eWxlcyh0aGlzLmJ1aWxkRXhlY3V0aW9uQ29udGV4dChlLHQsciksdGhpcy5zdHlsZVNoZWV0KX0sdH0obC5Db21wb25lbnQpO2Z1bmN0aW9uIHl0KGUsdCxuKXt2YXIgcj1GKGUpLG89IVhlKGUpLGk9dC5kaXNwbGF5TmFtZSxhPXZvaWQgMD09PWk/ZnVuY3Rpb24oZSl7cmV0dXJuIFhlKGUpP1wic3R5bGVkLlwiK2U6XCJTdHlsZWQoXCIrJChlKStcIilcIn0oZSk6aSxzPXQuY29tcG9uZW50SWQsYz12b2lkIDA9PT1zP2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1cInN0cmluZ1wiIT10eXBlb2YgdD9cInNjXCI6S2UodCksbz0oQ3Rbcl18fDApKzE7Q3Rbcl09bzt2YXIgaT1yK1wiLVwiK2UuZ2VuZXJhdGVOYW1lKHIrbyk7cmV0dXJuIG4/bitcIi1cIitpOml9KHplLHQuZGlzcGxheU5hbWUsdC5wYXJlbnRDb21wb25lbnRJZCk6cyx1PXQuUGFyZW50Q29tcG9uZW50LGY9dm9pZCAwPT09dT9tdDp1LGQ9dC5hdHRycyxwPXZvaWQgMD09PWQ/QjpkLGg9dC5kaXNwbGF5TmFtZSYmdC5jb21wb25lbnRJZD9LZSh0LmRpc3BsYXlOYW1lKStcIi1cIit0LmNvbXBvbmVudElkOnQuY29tcG9uZW50SWR8fGMsdj1yJiZlLmF0dHJzP0FycmF5LnByb3RvdHlwZS5jb25jYXQoZS5hdHRycyxwKS5maWx0ZXIoQm9vbGVhbik6cCxnPW5ldyB6ZShyP2UuY29tcG9uZW50U3R5bGUucnVsZXMuY29uY2F0KG4pOm4sdixoKSxDPXZvaWQgMCxtPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGwuY3JlYXRlRWxlbWVudChmLEkoe30sZSx7Zm9yd2FyZGVkQ29tcG9uZW50OkMsZm9yd2FyZGVkUmVmOnR9KSl9O3JldHVybiBtLmRpc3BsYXlOYW1lPWEsKEM9bC5mb3J3YXJkUmVmKG0pKS5kaXNwbGF5TmFtZT1hLEMuYXR0cnM9dixDLmNvbXBvbmVudFN0eWxlPWcsQy5mb2xkZWRDb21wb25lbnRJZHM9cj9BcnJheS5wcm90b3R5cGUuY29uY2F0KGUuZm9sZGVkQ29tcG9uZW50SWRzLGUuc3R5bGVkQ29tcG9uZW50SWQpOkIsQy5zdHlsZWRDb21wb25lbnRJZD1oLEMudGFyZ2V0PXI/ZS50YXJnZXQ6ZSxDLndpdGhDb21wb25lbnQ9ZnVuY3Rpb24oZSl7dmFyIHI9dC5jb21wb25lbnRJZCxvPWZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59KHQsW1wiY29tcG9uZW50SWRcIl0pLGk9ciYmcitcIi1cIisoWGUoZSk/ZTpLZSgkKGUpKSk7cmV0dXJuIHl0KGUsSSh7fSxvLHthdHRyczp2LGNvbXBvbmVudElkOmksUGFyZW50Q29tcG9uZW50OmZ9KSxuKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KEMsXCJkZWZhdWx0UHJvcHNcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvbGRlZERlZmF1bHRQcm9wc30sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2ZvbGRlZERlZmF1bHRQcm9wcz1yP2ooZS5kZWZhdWx0UHJvcHMsdCk6dH19KSxDLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuXCIuXCIrQy5zdHlsZWRDb21wb25lbnRJZH0sbyYmY3QoQyxlLHthdHRyczohMCxjb21wb25lbnRTdHlsZTohMCxkaXNwbGF5TmFtZTohMCxmb2xkZWRDb21wb25lbnRJZHM6ITAsc3R5bGVkQ29tcG9uZW50SWQ6ITAsdGFyZ2V0OiEwLHdpdGhDb21wb25lbnQ6ITB9KSxDfXZhciB3dD1mdW5jdGlvbihlKXtyZXR1cm4gQmUoeXQsZSl9O1tcImFcIixcImFiYnJcIixcImFkZHJlc3NcIixcImFyZWFcIixcImFydGljbGVcIixcImFzaWRlXCIsXCJhdWRpb1wiLFwiYlwiLFwiYmFzZVwiLFwiYmRpXCIsXCJiZG9cIixcImJpZ1wiLFwiYmxvY2txdW90ZVwiLFwiYm9keVwiLFwiYnJcIixcImJ1dHRvblwiLFwiY2FudmFzXCIsXCJjYXB0aW9uXCIsXCJjaXRlXCIsXCJjb2RlXCIsXCJjb2xcIixcImNvbGdyb3VwXCIsXCJkYXRhXCIsXCJkYXRhbGlzdFwiLFwiZGRcIixcImRlbFwiLFwiZGV0YWlsc1wiLFwiZGZuXCIsXCJkaWFsb2dcIixcImRpdlwiLFwiZGxcIixcImR0XCIsXCJlbVwiLFwiZW1iZWRcIixcImZpZWxkc2V0XCIsXCJmaWdjYXB0aW9uXCIsXCJmaWd1cmVcIixcImZvb3RlclwiLFwiZm9ybVwiLFwiaDFcIixcImgyXCIsXCJoM1wiLFwiaDRcIixcImg1XCIsXCJoNlwiLFwiaGVhZFwiLFwiaGVhZGVyXCIsXCJoZ3JvdXBcIixcImhyXCIsXCJodG1sXCIsXCJpXCIsXCJpZnJhbWVcIixcImltZ1wiLFwiaW5wdXRcIixcImluc1wiLFwia2JkXCIsXCJrZXlnZW5cIixcImxhYmVsXCIsXCJsZWdlbmRcIixcImxpXCIsXCJsaW5rXCIsXCJtYWluXCIsXCJtYXBcIixcIm1hcmtcIixcIm1hcnF1ZWVcIixcIm1lbnVcIixcIm1lbnVpdGVtXCIsXCJtZXRhXCIsXCJtZXRlclwiLFwibmF2XCIsXCJub3NjcmlwdFwiLFwib2JqZWN0XCIsXCJvbFwiLFwib3B0Z3JvdXBcIixcIm9wdGlvblwiLFwib3V0cHV0XCIsXCJwXCIsXCJwYXJhbVwiLFwicGljdHVyZVwiLFwicHJlXCIsXCJwcm9ncmVzc1wiLFwicVwiLFwicnBcIixcInJ0XCIsXCJydWJ5XCIsXCJzXCIsXCJzYW1wXCIsXCJzY3JpcHRcIixcInNlY3Rpb25cIixcInNlbGVjdFwiLFwic21hbGxcIixcInNvdXJjZVwiLFwic3BhblwiLFwic3Ryb25nXCIsXCJzdHlsZVwiLFwic3ViXCIsXCJzdW1tYXJ5XCIsXCJzdXBcIixcInRhYmxlXCIsXCJ0Ym9keVwiLFwidGRcIixcInRleHRhcmVhXCIsXCJ0Zm9vdFwiLFwidGhcIixcInRoZWFkXCIsXCJ0aW1lXCIsXCJ0aXRsZVwiLFwidHJcIixcInRyYWNrXCIsXCJ1XCIsXCJ1bFwiLFwidmFyXCIsXCJ2aWRlb1wiLFwid2JyXCIsXCJjaXJjbGVcIixcImNsaXBQYXRoXCIsXCJkZWZzXCIsXCJlbGxpcHNlXCIsXCJmb3JlaWduT2JqZWN0XCIsXCJnXCIsXCJpbWFnZVwiLFwibGluZVwiLFwibGluZWFyR3JhZGllbnRcIixcIm1hcmtlclwiLFwibWFza1wiLFwicGF0aFwiLFwicGF0dGVyblwiLFwicG9seWdvblwiLFwicG9seWxpbmVcIixcInJhZGlhbEdyYWRpZW50XCIsXCJyZWN0XCIsXCJzdG9wXCIsXCJzdmdcIixcInRleHRcIixcInRzcGFuXCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3d0W2VdPXd0KGUpfSkpO3ZhciBidD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuKXtQKHRoaXMsZSksdGhpcy5ydWxlcz10LHRoaXMuY29tcG9uZW50SWQ9bix0aGlzLmlzU3RhdGljPU5lKHQsQiksamUubWFzdGVyLmhhc0lkKG4pfHxqZS5tYXN0ZXIuZGVmZXJyZWRJbmplY3QobixbXSl9cmV0dXJuIGUucHJvdG90eXBlLmNyZWF0ZVN0eWxlcz1mdW5jdGlvbihlLHQpe3ZhciBuPWNlKEhlKHRoaXMucnVsZXMsZSx0KSxcIlwiKTt0LmluamVjdCh0aGlzLmNvbXBvbmVudElkLG4pfSxlLnByb3RvdHlwZS5yZW1vdmVTdHlsZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jb21wb25lbnRJZDtlLmhhc0lkKHQpJiZlLnJlbW92ZSh0KX0sZS5wcm90b3R5cGUucmVuZGVyU3R5bGVzPWZ1bmN0aW9uKGUsdCl7dGhpcy5yZW1vdmVTdHlsZXModCksdGhpcy5jcmVhdGVTdHlsZXMoZSx0KX0sZX0oKTtmdW5jdGlvbiB4dChlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTt2YXIgbz1WZS5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChuKSksaT1cInNjLWdsb2JhbC1cIitEZShKU09OLnN0cmluZ2lmeShvKSksYT1uZXcgYnQobyxpKSxzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7UCh0aGlzLHQpO3ZhciByPUgodGhpcyxlLmNhbGwodGhpcyxuKSksbz1yLmNvbnN0cnVjdG9yLGk9by5nbG9iYWxTdHlsZSxhPW8uc3R5bGVkQ29tcG9uZW50SWQ7cmV0dXJuIHomJih3aW5kb3cuc2NDR1NITVJDYWNoZVthXT0od2luZG93LnNjQ0dTSE1SQ2FjaGVbYV18fDApKzEpLHIuc3RhdGU9e2dsb2JhbFN0eWxlOmksc3R5bGVkQ29tcG9uZW50SWQ6YX0scn1yZXR1cm4gVCh0LGUpLHQucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7d2luZG93LnNjQ0dTSE1SQ2FjaGVbdGhpcy5zdGF0ZS5zdHlsZWRDb21wb25lbnRJZF0mJih3aW5kb3cuc2NDR1NITVJDYWNoZVt0aGlzLnN0YXRlLnN0eWxlZENvbXBvbmVudElkXS09MSksMD09PXdpbmRvdy5zY0NHU0hNUkNhY2hlW3RoaXMuc3RhdGUuc3R5bGVkQ29tcG9uZW50SWRdJiZ0aGlzLnN0YXRlLmdsb2JhbFN0eWxlLnJlbW92ZVN0eWxlcyh0aGlzLnN0eWxlU2hlZXQpfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBsLmNyZWF0ZUVsZW1lbnQodnQsbnVsbCwoZnVuY3Rpb24odCl7ZS5zdHlsZVNoZWV0PXR8fGplLm1hc3Rlcjt2YXIgbj1lLnN0YXRlLmdsb2JhbFN0eWxlO3JldHVybiBuLmlzU3RhdGljPyhuLnJlbmRlclN0eWxlcyhxLGUuc3R5bGVTaGVldCksbnVsbCk6bC5jcmVhdGVFbGVtZW50KGZ0LG51bGwsKGZ1bmN0aW9uKHQpe3ZhciByPWUuY29uc3RydWN0b3IuZGVmYXVsdFByb3BzLG89SSh7fSxlLnByb3BzKTtyZXR1cm4gdm9pZCAwIT09dCYmKG8udGhlbWU9R2UoZS5wcm9wcyx0LHIpKSxuLnJlbmRlclN0eWxlcyhvLGUuc3R5bGVTaGVldCksbnVsbH0pKX0pKX0sdH0obC5Db21wb25lbnQpO3JldHVybiBzLmdsb2JhbFN0eWxlPWEscy5zdHlsZWRDb21wb25lbnRJZD1pLHN9eiYmKHdpbmRvdy5zY0NHU0hNUkNhY2hlPXt9KTt2YXIgX3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXFxzfFxcXFxuL2csXCJcIil9O2Z1bmN0aW9uIEx0KGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkodD4xP3QtMTowKSxyPTE7cjx0O3IrKyluW3ItMV09YXJndW1lbnRzW3JdO3ZhciBvPVZlLmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KG4pKSxpPUZlKERlKF90KEpTT04uc3RyaW5naWZ5KG8pKSkpO3JldHVybiBuZXcga2UoaSxjZShvLGksXCJAa2V5ZnJhbWVzXCIpKX12YXIgT3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9bC5mb3J3YXJkUmVmKChmdW5jdGlvbih0LG4pe3JldHVybiBsLmNyZWF0ZUVsZW1lbnQoZnQsbnVsbCwoZnVuY3Rpb24ocil7dmFyIG89ZS5kZWZhdWx0UHJvcHMsaT1HZSh0LHIsbyk7cmV0dXJuIGwuY3JlYXRlRWxlbWVudChlLEkoe30sdCx7dGhlbWU6aSxyZWY6bn0pKX0pKX0pKTtyZXR1cm4gY3QodCxlKSx0LmRpc3BsYXlOYW1lPVwiV2l0aFRoZW1lKFwiKyQoZSkrXCIpXCIsdH0sRXQ9e1N0eWxlU2hlZXQ6amV9O2NvbnN0IFN0PXd0fSwyNDY6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1cIi8qfCovXCIsbj10K1wifVwiO2Z1bmN0aW9uIHIodCl7aWYodCl0cnl7ZSh0K1wifVwiKX1jYXRjaChlKXt9fXJldHVybiBmdW5jdGlvbihvLGksYSxsLHMsYyx1LGYsZCxwKXtzd2l0Y2gobyl7Y2FzZSAxOmlmKDA9PT1kJiY2ND09PWkuY2hhckNvZGVBdCgwKSlyZXR1cm4gZShpK1wiO1wiKSxcIlwiO2JyZWFrO2Nhc2UgMjppZigwPT09ZilyZXR1cm4gaSt0O2JyZWFrO2Nhc2UgMzpzd2l0Y2goZil7Y2FzZSAxMDI6Y2FzZSAxMTI6cmV0dXJuIGUoYVswXStpKSxcIlwiO2RlZmF1bHQ6cmV0dXJuIGkrKDA9PT1wP3Q6XCJcIil9Y2FzZS0yOmkuc3BsaXQobikuZm9yRWFjaChyKX19fX0oKX0sOTQ2OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0KXtcInVzZSBzdHJpY3RcIjt2YXIgbj0vXlxcMCsvZyxyPS9bXFwwXFxyXFxmXS9nLG89LzogKi9nLGk9L3pvb3xncmEvLGE9LyhbLDogXSkodHJhbnNmb3JtKS9nLGw9LywrXFxzKig/IVteKF0qWyldKS9nLHM9LyArXFxzKig/IVteKF0qWyldKS9nLGM9LyAqW1xcMF0gKi9nLHU9LyxcXHIrPy9nLGY9LyhbXFx0XFxyXFxuIF0pKlxcZj8mL2csZD0vOmdsb2JhbFxcKCgoPzpbXlxcKFxcKVxcW1xcXV0qfFxcWy4qXFxdfFxcKFteXFwoXFwpXSpcXCkpKilcXCkvZyxwPS9cXFcrL2csaD0vQChrXFx3KylcXHMqKFxcUyopXFxzKi8sdj0vOjoocGxhY2UpL2csZz0vOihyZWFkLW9ubHkpL2csQz0vXFxzKyg/PVt7XFxdOz06Pl0pL2csbT0vKFtbfT06Pl0pXFxzKy9nLHk9LyhcXHtbXntdKz8pOyg/PVxcfSkvZyx3PS9cXHN7Mix9L2csYj0vKFteXFwoXSkoOispICovZyx4PS9bc3ZoXVxcdystW3RibHJdezJ9LyxfPS9cXChcXHMqKC4qKVxccypcXCkvZyxMPS8oW1xcc1xcU10qPyk7L2csTz0vLXNlbGZ8ZmxleC0vZyxFPS9bXl0qPyg6W3JwXVtlbF1hW1xcdy1dKylbXl0qLyxTPS9zdHJldGNofDpcXHMqXFx3K1xcLSg/OmNvbnRlfGF2YWlsKS8sTT0vKFteLV0pKGltYWdlLXNldFxcKCkvLGo9XCItd2Via2l0LVwiLGs9XCItbW96LVwiLFI9XCItbXMtXCIsUD01OSxBPTEyNSxJPTEyMyxUPTQwLEg9NDEsVj05MSxCPTkzLEQ9MTAsWj0xMywkPTksRj02NCxOPTMyLFU9MzgsVz00NSx6PTk1LEc9NDIscT00NCxZPTU4LEs9MzksWD0zNCxKPTQ3LFE9NjIsZWU9NDMsdGU9MTI2LG5lPTAscmU9MTIsb2U9MTEsaWU9MTA3LGFlPTEwOSxsZT0xMTUsc2U9MTEyLGNlPTExMSx1ZT0xMDUsZmU9OTksZGU9MTAwLHBlPTExMixoZT0xLHZlPTEsZ2U9MCxDZT0xLG1lPTEseWU9MSx3ZT0wLGJlPTAseGU9MCxfZT1bXSxMZT1bXSxPZT0wLEVlPW51bGwsU2U9LTIsTWU9LTEsamU9MCxrZT0xLFJlPTIsUGU9MyxBZT0wLEllPTEsVGU9XCJcIixIZT1cIlwiLFZlPVwiXCI7ZnVuY3Rpb24gQmUoZSx0LG8saSxhKXtmb3IodmFyIGwscyx1PTAsZj0wLGQ9MCxwPTAsQz0wLG09MCx5PTAsdz0wLHg9MCxMPTAsTz0wLEU9MCxTPTAsTT0wLHo9MCx3ZT0wLExlPTAsRWU9MCxTZT0wLE1lPW8ubGVuZ3RoLFplPU1lLTEsemU9XCJcIixHZT1cIlwiLHFlPVwiXCIsWWU9XCJcIixLZT1cIlwiLFhlPVwiXCI7ejxNZTspe2lmKHk9by5jaGFyQ29kZUF0KHopLHo9PT1aZSYmZitwK2QrdSE9PTAmJigwIT09ZiYmKHk9Zj09PUo/RDpKKSxwPWQ9dT0wLE1lKyssWmUrKyksZitwK2QrdT09PTApe2lmKHo9PT1aZSYmKHdlPjAmJihHZT1HZS5yZXBsYWNlKHIsXCJcIikpLEdlLnRyaW0oKS5sZW5ndGg+MCkpe3N3aXRjaCh5KXtjYXNlIE46Y2FzZSAkOmNhc2UgUDpjYXNlIFo6Y2FzZSBEOmJyZWFrO2RlZmF1bHQ6R2UrPW8uY2hhckF0KHopfXk9UH1pZigxPT09TGUpc3dpdGNoKHkpe2Nhc2UgSTpjYXNlIEE6Y2FzZSBQOmNhc2UgWDpjYXNlIEs6Y2FzZSBUOmNhc2UgSDpjYXNlIHE6TGU9MDtjYXNlICQ6Y2FzZSBaOmNhc2UgRDpjYXNlIE46YnJlYWs7ZGVmYXVsdDpmb3IoTGU9MCxTZT16LEM9eSx6LS0seT1QO1NlPE1lOylzd2l0Y2goby5jaGFyQ29kZUF0KFNlKyspKXtjYXNlIEQ6Y2FzZSBaOmNhc2UgUDorK3oseT1DLFNlPU1lO2JyZWFrO2Nhc2UgWTp3ZT4wJiYoKyt6LHk9Qyk7Y2FzZSBJOlNlPU1lfX1zd2l0Y2goeSl7Y2FzZSBJOmZvcihDPShHZT1HZS50cmltKCkpLmNoYXJDb2RlQXQoMCksTz0xLFNlPSsrejt6PE1lOyl7c3dpdGNoKHk9by5jaGFyQ29kZUF0KHopKXtjYXNlIEk6TysrO2JyZWFrO2Nhc2UgQTpPLS07YnJlYWs7Y2FzZSBKOnN3aXRjaChtPW8uY2hhckNvZGVBdCh6KzEpKXtjYXNlIEc6Y2FzZSBKOno9V2UobSx6LFplLG8pfWJyZWFrO2Nhc2UgVjp5Kys7Y2FzZSBUOnkrKztjYXNlIFg6Y2FzZSBLOmZvcig7eisrPFplJiZvLmNoYXJDb2RlQXQoeikhPT15Oyk7fWlmKDA9PT1PKWJyZWFrO3orK31pZihxZT1vLnN1YnN0cmluZyhTZSx6KSxDPT09bmUmJihDPShHZT1HZS5yZXBsYWNlKG4sXCJcIikudHJpbSgpKS5jaGFyQ29kZUF0KDApKSxDPT09Ril7c3dpdGNoKHdlPjAmJihHZT1HZS5yZXBsYWNlKHIsXCJcIikpLG09R2UuY2hhckNvZGVBdCgxKSl7Y2FzZSBkZTpjYXNlIGFlOmNhc2UgbGU6Y2FzZSBXOmw9dDticmVhaztkZWZhdWx0Omw9X2V9aWYoU2U9KHFlPUJlKHQsbCxxZSxtLGErMSkpLmxlbmd0aCx4ZT4wJiYwPT09U2UmJihTZT1HZS5sZW5ndGgpLE9lPjAmJihsPURlKF9lLEdlLEVlKSxzPVVlKFBlLHFlLGwsdCx2ZSxoZSxTZSxtLGEsaSksR2U9bC5qb2luKFwiXCIpLHZvaWQgMCE9PXMmJjA9PT0oU2U9KHFlPXMudHJpbSgpKS5sZW5ndGgpJiYobT0wLHFlPVwiXCIpKSxTZT4wKXN3aXRjaChtKXtjYXNlIGxlOkdlPUdlLnJlcGxhY2UoXyxOZSk7Y2FzZSBkZTpjYXNlIGFlOmNhc2UgVzpxZT1HZStcIntcIitxZStcIn1cIjticmVhaztjYXNlIGllOnFlPShHZT1HZS5yZXBsYWNlKGgsXCIkMSAkMlwiKyhJZT4wP1RlOlwiXCIpKSkrXCJ7XCIrcWUrXCJ9XCIscWU9MT09PW1lfHwyPT09bWUmJkZlKFwiQFwiK3FlLDMpP1wiQFwiK2orcWUrXCJAXCIrcWU6XCJAXCIrcWU7YnJlYWs7ZGVmYXVsdDpxZT1HZStxZSxpPT09cGUmJihZZSs9cWUscWU9XCJcIil9ZWxzZSBxZT1cIlwifWVsc2UgcWU9QmUodCxEZSh0LEdlLEVlKSxxZSxpLGErMSk7S2UrPXFlLEU9MCxMZT0wLE09MCx3ZT0wLEVlPTAsUz0wLEdlPVwiXCIscWU9XCJcIix5PW8uY2hhckNvZGVBdCgrK3opO2JyZWFrO2Nhc2UgQTpjYXNlIFA6aWYoKFNlPShHZT0od2U+MD9HZS5yZXBsYWNlKHIsXCJcIik6R2UpLnRyaW0oKSkubGVuZ3RoKT4xKXN3aXRjaCgwPT09TSYmKChDPUdlLmNoYXJDb2RlQXQoMCkpPT09V3x8Qz45NiYmQzwxMjMpJiYoU2U9KEdlPUdlLnJlcGxhY2UoXCIgXCIsXCI6XCIpKS5sZW5ndGgpLE9lPjAmJnZvaWQgMCE9PShzPVVlKGtlLEdlLHQsZSx2ZSxoZSxZZS5sZW5ndGgsaSxhLGkpKSYmMD09PShTZT0oR2U9cy50cmltKCkpLmxlbmd0aCkmJihHZT1cIlxcMFxcMFwiKSxDPUdlLmNoYXJDb2RlQXQoMCksbT1HZS5jaGFyQ29kZUF0KDEpLEMpe2Nhc2UgbmU6YnJlYWs7Y2FzZSBGOmlmKG09PT11ZXx8bT09PWZlKXtYZSs9R2Urby5jaGFyQXQoeik7YnJlYWt9ZGVmYXVsdDppZihHZS5jaGFyQ29kZUF0KFNlLTEpPT09WSlicmVhaztZZSs9JGUoR2UsQyxtLEdlLmNoYXJDb2RlQXQoMikpfUU9MCxMZT0wLE09MCx3ZT0wLEVlPTAsR2U9XCJcIix5PW8uY2hhckNvZGVBdCgrK3opfX1zd2l0Y2goeSl7Y2FzZSBaOmNhc2UgRDppZihmK3ArZCt1K2JlPT09MClzd2l0Y2goTCl7Y2FzZSBIOmNhc2UgSzpjYXNlIFg6Y2FzZSBGOmNhc2UgdGU6Y2FzZSBROmNhc2UgRzpjYXNlIGVlOmNhc2UgSjpjYXNlIFc6Y2FzZSBZOmNhc2UgcTpjYXNlIFA6Y2FzZSBJOmNhc2UgQTpicmVhaztkZWZhdWx0Ok0+MCYmKExlPTEpfWY9PT1KP2Y9MDpDZStFPT09MCYmaSE9PWllJiZHZS5sZW5ndGg+MCYmKHdlPTEsR2UrPVwiXFwwXCIpLE9lKkFlPjAmJlVlKGplLEdlLHQsZSx2ZSxoZSxZZS5sZW5ndGgsaSxhLGkpLGhlPTEsdmUrKzticmVhaztjYXNlIFA6Y2FzZSBBOmlmKGYrcCtkK3U9PT0wKXtoZSsrO2JyZWFrfWRlZmF1bHQ6c3dpdGNoKGhlKyssemU9by5jaGFyQXQoeikseSl7Y2FzZSAkOmNhc2UgTjppZihwK3UrZj09PTApc3dpdGNoKHcpe2Nhc2UgcTpjYXNlIFk6Y2FzZSAkOmNhc2UgTjp6ZT1cIlwiO2JyZWFrO2RlZmF1bHQ6eSE9PU4mJih6ZT1cIiBcIil9YnJlYWs7Y2FzZSBuZTp6ZT1cIlxcXFwwXCI7YnJlYWs7Y2FzZSByZTp6ZT1cIlxcXFxmXCI7YnJlYWs7Y2FzZSBvZTp6ZT1cIlxcXFx2XCI7YnJlYWs7Y2FzZSBVOnArZit1PT09MCYmQ2U+MCYmKEVlPTEsd2U9MSx6ZT1cIlxcZlwiK3plKTticmVhaztjYXNlIDEwODppZihwK2YrdStnZT09PTAmJk0+MClzd2l0Y2goei1NKXtjYXNlIDI6dz09PXNlJiZvLmNoYXJDb2RlQXQoei0zKT09PVkmJihnZT13KTtjYXNlIDg6eD09PWNlJiYoZ2U9eCl9YnJlYWs7Y2FzZSBZOnArZit1PT09MCYmKE09eik7YnJlYWs7Y2FzZSBxOmYrZCtwK3U9PT0wJiYod2U9MSx6ZSs9XCJcXHJcIik7YnJlYWs7Y2FzZSBYOmNhc2UgSzowPT09ZiYmKHA9cD09PXk/MDowPT09cD95OnApO2JyZWFrO2Nhc2UgVjpwK2YrZD09PTAmJnUrKzticmVhaztjYXNlIEI6cCtmK2Q9PT0wJiZ1LS07YnJlYWs7Y2FzZSBIOnArZit1PT09MCYmZC0tO2JyZWFrO2Nhc2UgVDpwK2YrdT09PTAmJigwPT09RSYmKDIqdyszKng9PTUzM3x8KE89MCxFPTEpKSxkKyspO2JyZWFrO2Nhc2UgRjpmK2QrcCt1K00rUz09PTAmJihTPTEpO2JyZWFrO2Nhc2UgRzpjYXNlIEo6aWYocCt1K2Q+MClicmVhaztzd2l0Y2goZil7Y2FzZSAwOnN3aXRjaCgyKnkrMypvLmNoYXJDb2RlQXQoeisxKSl7Y2FzZSAyMzU6Zj1KO2JyZWFrO2Nhc2UgMjIwOlNlPXosZj1HfWJyZWFrO2Nhc2UgRzp5PT09SiYmdz09PUcmJlNlKzIhPT16JiYoMzM9PT1vLmNoYXJDb2RlQXQoU2UrMikmJihZZSs9by5zdWJzdHJpbmcoU2UseisxKSksemU9XCJcIixmPTApfX1pZigwPT09Zil7aWYoQ2UrcCt1K1M9PT0wJiZpIT09aWUmJnkhPT1QKXN3aXRjaCh5KXtjYXNlIHE6Y2FzZSB0ZTpjYXNlIFE6Y2FzZSBlZTpjYXNlIEg6Y2FzZSBUOmlmKDA9PT1FKXtzd2l0Y2godyl7Y2FzZSAkOmNhc2UgTjpjYXNlIEQ6Y2FzZSBaOnplKz1cIlxcMFwiO2JyZWFrO2RlZmF1bHQ6emU9XCJcXDBcIit6ZSsoeT09PXE/XCJcIjpcIlxcMFwiKX13ZT0xfWVsc2Ugc3dpdGNoKHkpe2Nhc2UgVDpNKzc9PT16JiYxMDg9PT13JiYoTT0wKSxFPSsrTzticmVhaztjYXNlIEg6MD09KEU9LS1PKSYmKHdlPTEsemUrPVwiXFwwXCIpfWJyZWFrO2Nhc2UgJDpjYXNlIE46c3dpdGNoKHcpe2Nhc2UgbmU6Y2FzZSBJOmNhc2UgQTpjYXNlIFA6Y2FzZSBxOmNhc2UgcmU6Y2FzZSAkOmNhc2UgTjpjYXNlIEQ6Y2FzZSBaOmJyZWFrO2RlZmF1bHQ6MD09PUUmJih3ZT0xLHplKz1cIlxcMFwiKX19R2UrPXplLHkhPT1OJiZ5IT09JCYmKEw9eSl9fXg9dyx3PXkseisrfWlmKFNlPVllLmxlbmd0aCx4ZT4wJiYwPT09U2UmJjA9PT1LZS5sZW5ndGgmJjA9PT10WzBdLmxlbmd0aD09MCYmKGkhPT1hZXx8MT09PXQubGVuZ3RoJiYoQ2U+MD9IZTpWZSk9PT10WzBdKSYmKFNlPXQuam9pbihcIixcIikubGVuZ3RoKzIpLFNlPjApe2lmKGw9MD09PUNlJiZpIT09aWU/ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG4sbz0wLGk9ZS5sZW5ndGgsYT1BcnJheShpKTtvPGk7KytvKXtmb3IodmFyIGw9ZVtvXS5zcGxpdChjKSxzPVwiXCIsdT0wLGY9MCxkPTAscD0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZighKDA9PT0oZj0obj1sW3VdKS5sZW5ndGgpJiZoPjEpKXtpZihkPXMuY2hhckNvZGVBdChzLmxlbmd0aC0xKSxwPW4uY2hhckNvZGVBdCgwKSx0PVwiXCIsMCE9PXUpc3dpdGNoKGQpe2Nhc2UgRzpjYXNlIHRlOmNhc2UgUTpjYXNlIGVlOmNhc2UgTjpjYXNlIFQ6YnJlYWs7ZGVmYXVsdDp0PVwiIFwifXN3aXRjaChwKXtjYXNlIFU6bj10K0hlO2Nhc2UgdGU6Y2FzZSBROmNhc2UgZWU6Y2FzZSBOOmNhc2UgSDpjYXNlIFQ6YnJlYWs7Y2FzZSBWOm49dCtuK0hlO2JyZWFrO2Nhc2UgWTpzd2l0Y2goMipuLmNoYXJDb2RlQXQoMSkrMypuLmNoYXJDb2RlQXQoMikpe2Nhc2UgNTMwOmlmKHllPjApe249dCtuLnN1YnN0cmluZyg4LGYtMSk7YnJlYWt9ZGVmYXVsdDoodTwxfHxsW3UtMV0ubGVuZ3RoPDEpJiYobj10K0hlK24pfWJyZWFrO2Nhc2UgcTp0PVwiXCI7ZGVmYXVsdDpuPWY+MSYmbi5pbmRleE9mKFwiOlwiKT4wP3Qrbi5yZXBsYWNlKGIsXCIkMVwiK0hlK1wiJDJcIik6dCtuK0hlfXMrPW59YVtvXT1zLnJlcGxhY2UocixcIlwiKS50cmltKCl9cmV0dXJuIGF9KHQpOnQsT2U+MCYmdm9pZCAwIT09KHM9VWUoUmUsWWUsbCxlLHZlLGhlLFNlLGksYSxpKSkmJjA9PT0oWWU9cykubGVuZ3RoKXJldHVybiBYZStZZStLZTtpZihZZT1sLmpvaW4oXCIsXCIpK1wie1wiK1llK1wifVwiLG1lKmdlIT0wKXtzd2l0Y2goMiE9PW1lfHxGZShZZSwyKXx8KGdlPTApLGdlKXtjYXNlIGNlOlllPVllLnJlcGxhY2UoZyxcIjpcIitrK1wiJDFcIikrWWU7YnJlYWs7Y2FzZSBzZTpZZT1ZZS5yZXBsYWNlKHYsXCI6OlwiK2orXCJpbnB1dC0kMVwiKStZZS5yZXBsYWNlKHYsXCI6OlwiK2srXCIkMVwiKStZZS5yZXBsYWNlKHYsXCI6XCIrUitcImlucHV0LSQxXCIpK1llfWdlPTB9fXJldHVybiBYZStZZStLZX1mdW5jdGlvbiBEZShlLHQsbil7dmFyIHI9dC50cmltKCkuc3BsaXQodSksbz1yLGk9ci5sZW5ndGgsYT1lLmxlbmd0aDtzd2l0Y2goYSl7Y2FzZSAwOmNhc2UgMTpmb3IodmFyIGw9MCxzPTA9PT1hP1wiXCI6ZVswXStcIiBcIjtsPGk7KytsKW9bbF09WmUocyxvW2xdLG4sYSkudHJpbSgpO2JyZWFrO2RlZmF1bHQ6bD0wO3ZhciBjPTA7Zm9yKG89W107bDxpOysrbClmb3IodmFyIGY9MDtmPGE7KytmKW9bYysrXT1aZShlW2ZdK1wiIFwiLHJbbF0sbixhKS50cmltKCl9cmV0dXJuIG99ZnVuY3Rpb24gWmUoZSx0LG4scil7dmFyIG89dCxpPW8uY2hhckNvZGVBdCgwKTtzd2l0Y2goaTwzMyYmKGk9KG89by50cmltKCkpLmNoYXJDb2RlQXQoMCkpLGkpe2Nhc2UgVTpzd2l0Y2goQ2Urcil7Y2FzZSAwOmNhc2UgMTppZigwPT09ZS50cmltKCkubGVuZ3RoKWJyZWFrO2RlZmF1bHQ6cmV0dXJuIG8ucmVwbGFjZShmLFwiJDFcIitlLnRyaW0oKSl9YnJlYWs7Y2FzZSBZOmlmKDEwMyE9PW8uY2hhckNvZGVBdCgxKSlyZXR1cm4gZS50cmltKCkrby5yZXBsYWNlKGYsXCIkMVwiK2UudHJpbSgpKTtpZih5ZT4wJiZDZT4wKXJldHVybiBvLnJlcGxhY2UoZCxcIiQxXCIpLnJlcGxhY2UoZixcIiQxXCIrVmUpO2RlZmF1bHQ6aWYobipDZT4wJiZvLmluZGV4T2YoXCJcXGZcIik+MClyZXR1cm4gby5yZXBsYWNlKGYsKGUuY2hhckNvZGVBdCgwKT09PVk/XCJcIjpcIiQxXCIpK2UudHJpbSgpKX1yZXR1cm4gZStvfWZ1bmN0aW9uICRlKGUsdCxuLHIpe3ZhciBjLHU9MCxmPWUrXCI7XCIsZD0yKnQrMypuKzQqcjtpZig5NDQ9PT1kKXJldHVybiBmdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aCxuPWUuaW5kZXhPZihcIjpcIiw5KSsxLHI9ZS5zdWJzdHJpbmcoMCxuKS50cmltKCksbz1lLnN1YnN0cmluZyhuLHQtMSkudHJpbSgpO3N3aXRjaChlLmNoYXJDb2RlQXQoOSkqSWUpe2Nhc2UgMDpicmVhaztjYXNlIFc6aWYoMTEwIT09ZS5jaGFyQ29kZUF0KDEwKSlicmVhaztkZWZhdWx0OnZhciBpPW8uc3BsaXQoKG89XCJcIixsKSksYT0wO2ZvcihuPTAsdD1pLmxlbmd0aDthPHQ7bj0wLCsrYSl7Zm9yKHZhciBjPWlbYV0sdT1jLnNwbGl0KHMpO2M9dVtuXTspe3ZhciBmPWMuY2hhckNvZGVBdCgwKTtpZigxPT09SWUmJihmPkYmJmY8OTB8fGY+OTYmJmY8MTIzfHxmPT09enx8Zj09PVcmJmMuY2hhckNvZGVBdCgxKSE9PVcpJiZpc05hTihwYXJzZUZsb2F0KGMpKSsoLTEhPT1jLmluZGV4T2YoXCIoXCIpKT09PTEpc3dpdGNoKGMpe2Nhc2VcImluZmluaXRlXCI6Y2FzZVwiYWx0ZXJuYXRlXCI6Y2FzZVwiYmFja3dhcmRzXCI6Y2FzZVwicnVubmluZ1wiOmNhc2VcIm5vcm1hbFwiOmNhc2VcImZvcndhcmRzXCI6Y2FzZVwiYm90aFwiOmNhc2VcIm5vbmVcIjpjYXNlXCJsaW5lYXJcIjpjYXNlXCJlYXNlXCI6Y2FzZVwiZWFzZS1pblwiOmNhc2VcImVhc2Utb3V0XCI6Y2FzZVwiZWFzZS1pbi1vdXRcIjpjYXNlXCJwYXVzZWRcIjpjYXNlXCJyZXZlcnNlXCI6Y2FzZVwiYWx0ZXJuYXRlLXJldmVyc2VcIjpjYXNlXCJpbmhlcml0XCI6Y2FzZVwiaW5pdGlhbFwiOmNhc2VcInVuc2V0XCI6Y2FzZVwic3RlcC1zdGFydFwiOmNhc2VcInN0ZXAtZW5kXCI6YnJlYWs7ZGVmYXVsdDpjKz1UZX11W24rK109Y31vKz0oMD09PWE/XCJcIjpcIixcIikrdS5qb2luKFwiIFwiKX19cmV0dXJuIG89citvK1wiO1wiLDE9PT1tZXx8Mj09PW1lJiZGZShvLDEpP2orbytvOm99KGYpO2lmKDA9PT1tZXx8Mj09PW1lJiYhRmUoZiwxKSlyZXR1cm4gZjtzd2l0Y2goZCl7Y2FzZSAxMDE1OnJldHVybiA5Nz09PWYuY2hhckNvZGVBdCgxMCk/aitmK2Y6ZjtjYXNlIDk1MTpyZXR1cm4gMTE2PT09Zi5jaGFyQ29kZUF0KDMpP2orZitmOmY7Y2FzZSA5NjM6cmV0dXJuIDExMD09PWYuY2hhckNvZGVBdCg1KT9qK2YrZjpmO2Nhc2UgMTAwOTppZigxMDAhPT1mLmNoYXJDb2RlQXQoNCkpYnJlYWs7Y2FzZSA5Njk6Y2FzZSA5NDI6cmV0dXJuIGorZitmO2Nhc2UgOTc4OnJldHVybiBqK2YraytmK2Y7Y2FzZSAxMDE5OmNhc2UgOTgzOnJldHVybiBqK2YraytmK1IrZitmO2Nhc2UgODgzOnJldHVybiBmLmNoYXJDb2RlQXQoOCk9PT1XP2orZitmOmYuaW5kZXhPZihcImltYWdlLXNldChcIiwxMSk+MD9mLnJlcGxhY2UoTSxcIiQxXCIraitcIiQyXCIpK2Y6ZjtjYXNlIDkzMjppZihmLmNoYXJDb2RlQXQoNCk9PT1XKXN3aXRjaChmLmNoYXJDb2RlQXQoNSkpe2Nhc2UgMTAzOnJldHVybiBqK1wiYm94LVwiK2YucmVwbGFjZShcIi1ncm93XCIsXCJcIikraitmK1IrZi5yZXBsYWNlKFwiZ3Jvd1wiLFwicG9zaXRpdmVcIikrZjtjYXNlIDExNTpyZXR1cm4gaitmK1IrZi5yZXBsYWNlKFwic2hyaW5rXCIsXCJuZWdhdGl2ZVwiKStmO2Nhc2UgOTg6cmV0dXJuIGorZitSK2YucmVwbGFjZShcImJhc2lzXCIsXCJwcmVmZXJyZWQtc2l6ZVwiKStmfXJldHVybiBqK2YrUitmK2Y7Y2FzZSA5NjQ6cmV0dXJuIGorZitSK1wiZmxleC1cIitmK2Y7Y2FzZSAxMDIzOmlmKDk5IT09Zi5jaGFyQ29kZUF0KDgpKWJyZWFrO3JldHVybiBjPWYuc3Vic3RyaW5nKGYuaW5kZXhPZihcIjpcIiwxNSkpLnJlcGxhY2UoXCJmbGV4LVwiLFwiXCIpLnJlcGxhY2UoXCJzcGFjZS1iZXR3ZWVuXCIsXCJqdXN0aWZ5XCIpLGorXCJib3gtcGFja1wiK2MraitmK1IrXCJmbGV4LXBhY2tcIitjK2Y7Y2FzZSAxMDA1OnJldHVybiBpLnRlc3QoZik/Zi5yZXBsYWNlKG8sXCI6XCIraikrZi5yZXBsYWNlKG8sXCI6XCIraykrZjpmO2Nhc2UgMWUzOnN3aXRjaCh1PShjPWYuc3Vic3RyaW5nKDEzKS50cmltKCkpLmluZGV4T2YoXCItXCIpKzEsYy5jaGFyQ29kZUF0KDApK2MuY2hhckNvZGVBdCh1KSl7Y2FzZSAyMjY6Yz1mLnJlcGxhY2UoeCxcInRiXCIpO2JyZWFrO2Nhc2UgMjMyOmM9Zi5yZXBsYWNlKHgsXCJ0Yi1ybFwiKTticmVhaztjYXNlIDIyMDpjPWYucmVwbGFjZSh4LFwibHJcIik7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gZn1yZXR1cm4gaitmK1IrYytmO2Nhc2UgMTAxNzppZigtMT09PWYuaW5kZXhPZihcInN0aWNreVwiLDkpKXJldHVybiBmO2Nhc2UgOTc1OnN3aXRjaCh1PShmPWUpLmxlbmd0aC0xMCxkPShjPSgzMz09PWYuY2hhckNvZGVBdCh1KT9mLnN1YnN0cmluZygwLHUpOmYpLnN1YnN0cmluZyhlLmluZGV4T2YoXCI6XCIsNykrMSkudHJpbSgpKS5jaGFyQ29kZUF0KDApKygwfGMuY2hhckNvZGVBdCg3KSkpe2Nhc2UgMjAzOmlmKGMuY2hhckNvZGVBdCg4KTwxMTEpYnJlYWs7Y2FzZSAxMTU6Zj1mLnJlcGxhY2UoYyxqK2MpK1wiO1wiK2Y7YnJlYWs7Y2FzZSAyMDc6Y2FzZSAxMDI6Zj1mLnJlcGxhY2UoYyxqKyhkPjEwMj9cImlubGluZS1cIjpcIlwiKStcImJveFwiKStcIjtcIitmLnJlcGxhY2UoYyxqK2MpK1wiO1wiK2YucmVwbGFjZShjLFIrYytcImJveFwiKStcIjtcIitmfXJldHVybiBmK1wiO1wiO2Nhc2UgOTM4OmlmKGYuY2hhckNvZGVBdCg1KT09PVcpc3dpdGNoKGYuY2hhckNvZGVBdCg2KSl7Y2FzZSAxMDU6cmV0dXJuIGM9Zi5yZXBsYWNlKFwiLWl0ZW1zXCIsXCJcIiksaitmK2orXCJib3gtXCIrYytSK1wiZmxleC1cIitjK2Y7Y2FzZSAxMTU6cmV0dXJuIGorZitSK1wiZmxleC1pdGVtLVwiK2YucmVwbGFjZShPLFwiXCIpK2Y7ZGVmYXVsdDpyZXR1cm4gaitmK1IrXCJmbGV4LWxpbmUtcGFja1wiK2YucmVwbGFjZShcImFsaWduLWNvbnRlbnRcIixcIlwiKS5yZXBsYWNlKE8sXCJcIikrZn1icmVhaztjYXNlIDk3MzpjYXNlIDk4OTppZihmLmNoYXJDb2RlQXQoMykhPT1XfHwxMjI9PT1mLmNoYXJDb2RlQXQoNCkpYnJlYWs7Y2FzZSA5MzE6Y2FzZSA5NTM6aWYoITA9PT1TLnRlc3QoZSkpcmV0dXJuIDExNT09PShjPWUuc3Vic3RyaW5nKGUuaW5kZXhPZihcIjpcIikrMSkpLmNoYXJDb2RlQXQoMCk/JGUoZS5yZXBsYWNlKFwic3RyZXRjaFwiLFwiZmlsbC1hdmFpbGFibGVcIiksdCxuLHIpLnJlcGxhY2UoXCI6ZmlsbC1hdmFpbGFibGVcIixcIjpzdHJldGNoXCIpOmYucmVwbGFjZShjLGorYykrZi5yZXBsYWNlKGMsaytjLnJlcGxhY2UoXCJmaWxsLVwiLFwiXCIpKStmO2JyZWFrO2Nhc2UgOTYyOmlmKGY9aitmKygxMDI9PT1mLmNoYXJDb2RlQXQoNSk/UitmOlwiXCIpK2YsbityPT09MjExJiYxMDU9PT1mLmNoYXJDb2RlQXQoMTMpJiZmLmluZGV4T2YoXCJ0cmFuc2Zvcm1cIiwxMCk+MClyZXR1cm4gZi5zdWJzdHJpbmcoMCxmLmluZGV4T2YoXCI7XCIsMjcpKzEpLnJlcGxhY2UoYSxcIiQxXCIraitcIiQyXCIpK2Z9cmV0dXJuIGZ9ZnVuY3Rpb24gRmUoZSx0KXt2YXIgbj1lLmluZGV4T2YoMT09PXQ/XCI6XCI6XCJ7XCIpLHI9ZS5zdWJzdHJpbmcoMCwzIT09dD9uOjEwKSxvPWUuc3Vic3RyaW5nKG4rMSxlLmxlbmd0aC0xKTtyZXR1cm4gRWUoMiE9PXQ/cjpyLnJlcGxhY2UoRSxcIiQxXCIpLG8sdCl9ZnVuY3Rpb24gTmUoZSx0KXt2YXIgbj0kZSh0LHQuY2hhckNvZGVBdCgwKSx0LmNoYXJDb2RlQXQoMSksdC5jaGFyQ29kZUF0KDIpKTtyZXR1cm4gbiE9PXQrXCI7XCI/bi5yZXBsYWNlKEwsXCIgb3IgKCQxKVwiKS5zdWJzdHJpbmcoNCk6XCIoXCIrdCtcIilcIn1mdW5jdGlvbiBVZShlLHQsbixyLG8saSxhLGwscyxjKXtmb3IodmFyIHUsZj0wLGQ9dDtmPE9lOysrZilzd2l0Y2godT1MZVtmXS5jYWxsKEdlLGUsZCxuLHIsbyxpLGEsbCxzLGMpKXtjYXNlIHZvaWQgMDpjYXNlITE6Y2FzZSEwOmNhc2UgbnVsbDpicmVhaztkZWZhdWx0OmQ9dX1pZihkIT09dClyZXR1cm4gZH1mdW5jdGlvbiBXZShlLHQsbixyKXtmb3IodmFyIG89dCsxO288bjsrK28pc3dpdGNoKHIuY2hhckNvZGVBdChvKSl7Y2FzZSBKOmlmKGU9PT1HJiZyLmNoYXJDb2RlQXQoby0xKT09PUcmJnQrMiE9PW8pcmV0dXJuIG8rMTticmVhaztjYXNlIEQ6aWYoZT09PUopcmV0dXJuIG8rMX1yZXR1cm4gb31mdW5jdGlvbiB6ZShlKXtmb3IodmFyIHQgaW4gZSl7dmFyIG49ZVt0XTtzd2l0Y2godCl7Y2FzZVwia2V5ZnJhbWVcIjpJZT0wfG47YnJlYWs7Y2FzZVwiZ2xvYmFsXCI6eWU9MHxuO2JyZWFrO2Nhc2VcImNhc2NhZGVcIjpDZT0wfG47YnJlYWs7Y2FzZVwiY29tcHJlc3NcIjp3ZT0wfG47YnJlYWs7Y2FzZVwic2VtaWNvbG9uXCI6YmU9MHxuO2JyZWFrO2Nhc2VcInByZXNlcnZlXCI6eGU9MHxuO2JyZWFrO2Nhc2VcInByZWZpeFwiOkVlPW51bGwsbj9cImZ1bmN0aW9uXCIhPXR5cGVvZiBuP21lPTE6KG1lPTIsRWU9bik6bWU9MH19cmV0dXJuIHplfWZ1bmN0aW9uIEdlKHQsbil7aWYodm9pZCAwIT09dGhpcyYmdGhpcy5jb25zdHJ1Y3Rvcj09PUdlKXJldHVybiBlKHQpO3ZhciBvPXQsaT1vLmNoYXJDb2RlQXQoMCk7aTwzMyYmKGk9KG89by50cmltKCkpLmNoYXJDb2RlQXQoMCkpLEllPjAmJihUZT1vLnJlcGxhY2UocCxpPT09Vj9cIlwiOlwiLVwiKSksaT0xLDE9PT1DZT9WZT1vOkhlPW87dmFyIGEsbD1bVmVdO09lPjAmJnZvaWQgMCE9PShhPVVlKE1lLG4sbCxsLHZlLGhlLDAsMCwwLDApKSYmXCJzdHJpbmdcIj09dHlwZW9mIGEmJihuPWEpO3ZhciBzPUJlKF9lLGwsbiwwLDApO3JldHVybiBPZT4wJiZ2b2lkIDAhPT0oYT1VZShTZSxzLGwsbCx2ZSxoZSxzLmxlbmd0aCwwLDAsMCkpJiZcInN0cmluZ1wiIT10eXBlb2Yocz1hKSYmKGk9MCksVGU9XCJcIixWZT1cIlwiLEhlPVwiXCIsZ2U9MCx2ZT0xLGhlPTEsd2UqaT09MD9zOnMucmVwbGFjZShyLFwiXCIpLnJlcGxhY2UoQyxcIlwiKS5yZXBsYWNlKG0sXCIkMVwiKS5yZXBsYWNlKHksXCIkMVwiKS5yZXBsYWNlKHcsXCIgXCIpfXJldHVybiBHZS51c2U9ZnVuY3Rpb24gZSh0KXtzd2l0Y2godCl7Y2FzZSB2b2lkIDA6Y2FzZSBudWxsOk9lPUxlLmxlbmd0aD0wO2JyZWFrO2RlZmF1bHQ6aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdClMZVtPZSsrXT10O2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIHQpZm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7KytuKWUodFtuXSk7ZWxzZSBBZT0wfCEhdH1yZXR1cm4gZX0sR2Uuc2V0PXplLHZvaWQgMCE9PXQmJnplKHQpLEdlfShudWxsKX0sMzM3OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuKDY3OCksbig0MzgpLG4oMTAwKSxuKDEyNyk7big3MDUpfSw3MDU6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24oNjEpLG4oNzI4KSxuKDEyMSksbigxMjcpO3ZhciByPW4oMTE3KTt2YXIgbzshZnVuY3Rpb24oZSl7ZS5VcGRhdGVQbGF0Zm9ybVRoZW1lU2NoZW1lPVwidXBkYXRlLXBsYXRmb3JtLXRoZW1lLXNjaGVtZVwifShvfHwobz17fSkpOygwLHIuWikoXCJvZi13b3Jrc3BhY2Utbm90aWZpY2F0aW9ucy1zeW5jXCIpO24oMTUwKSxuKDQzOCl9LDEwMDooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse3doOigpPT5yfSk7dmFyIHIsbyxpLGEsbCxzLGMsdTtuKDU2NCksbig0OTUpOyFmdW5jdGlvbihlKXtlLk5ld1dpbmRvdz1cIk5ld1dpbmRvd1wiLGUuTmV3UGFnZT1cIk5ld1BhZ2VcIixlLlNhdmVQYWdlPVwiU2F2ZVBhZ2VcIixlLlNhdmVQYWdlQXM9XCJTYXZlUGFnZUFzXCIsZS5QcmludD1cIlByaW50XCIsZS5QcmludEFsbD1cIlByaW50QWxsXCIsZS5QcmludFNjcmVlbj1cIlByaW50U2NyZWVuXCIsZS5DbG9zZVdpbmRvdz1cIkNsb3NlV2luZG93XCIsZS5SZXN0b3JlQ2hhbmdlcz1cIlJlc3RvcmVDaGFuZ2VzXCIsZS5TYXZlV29ya3NwYWNlPVwiU2F2ZVdvcmtzcGFjZVwiLGUuU2F2ZVdvcmtzcGFjZUFzPVwiU2F2ZVdvcmtzcGFjZUFzXCIsZS5SZW5hbWVXb3Jrc3BhY2U9XCJSZW5hbWVXb3Jrc3BhY2VcIixlLlN3aXRjaFdvcmtzcGFjZT1cIlN3aXRjaFdvcmtzcGFjZVwiLGUuRGVsZXRlV29ya3NwYWNlPVwiRGVsZXRlV29ya3NwYWNlXCIsZS5PcGVuU3RvcmVmcm9udD1cIk9wZW5TdG9yZWZyb250XCIsZS5BcHBlYXJhbmNlPVwiQXBwZWFyYW5jZVwiLGUuUXVpdD1cIlF1aXRcIixlLkN1c3RvbT1cIkN1c3RvbVwifShyfHwocj17fSkpLGZ1bmN0aW9uKGUpe2UuTGlnaHQ9XCJsaWdodFwiLGUuRGFyaz1cImRhcmtcIixlLlN5c3RlbT1cInN5c3RlbVwifShvfHwobz17fSkpLGZ1bmN0aW9uKGUpe2UuQ2xvc2U9XCJDbG9zZVwiLGUuRHVwbGljYXRlPVwiRHVwbGljYXRlXCIsZS5SZW5hbWU9XCJSZW5hbWVcIixlLlNhdmU9XCJTYXZlXCIsZS5TYXZlQXM9XCJTYXZlIEFzXCIsZS5DdXN0b209XCJDdXN0b21cIn0oaXx8KGk9e30pKSxmdW5jdGlvbihlKXtlLk5ld1ZpZXc9XCJOZXdWaWV3XCIsZS5EdXBsaWNhdGVWaWV3cz1cIkR1cGxpY2F0ZVZpZXdcIixlLk9wZW5XaXRoRGVmYXVsdEJyb3dzZXI9XCJPcGVuV2l0aERlZmF1bHRCcm93c2VyXCIsZS5SZWxvYWRWaWV3cz1cIlJlbG9hZFRhYlwiLGUuQ2xvc2VWaWV3cz1cIkNsb3NlVGFiXCIsZS5BZGRUb0NoYW5uZWw9XCJBZGRUb0NoYW5uZWxcIixlLlJlbW92ZUZyb21DaGFubmVsPVwiUmVtb3ZlRnJvbUNoYW5uZWxcIixlLkJhY2s9XCJCYWNrXCIsZS5Gb3J3YXJkPVwiRm9yd2FyZFwiLGUuUHJpbnQ9XCJQcmludFwiLGUuUHJpbnRBbGw9XCJQcmludEFsbFwiLGUuUHJpbnRTY3JlZW49XCJQcmludFNjcmVlblwiLGUuQ3VzdG9tPVwiQ3VzdG9tXCJ9KGF8fChhPXt9KSksZnVuY3Rpb24oZSl7ZS5TaG93SGlkZVRhYnM9XCJTaG93SGlkZVRhYnNcIixlLkNvbG9yTGlua2luZz1cIkNvbG9yTGlua2luZ1wiLGUuUHJlc2V0TGF5b3V0cz1cIlByZXNldExheW91dHNcIixlLkxvY2tVbmxvY2tQYWdlPVwiTG9ja1VubG9ja1BhZ2VcIixlLlNhdmVNZW51PVwiU2F2ZU1lbnVcIixlLlNhdmVQYWdlPVwiU2F2ZVBhZ2VcIixlLk1pbmltaXNlPVwiTWluaW1pc2VcIixlLk1heGltaXNlPVwiTWF4aW1pc2VcIixlLkNsb3NlPVwiQ2xvc2VcIixlLkN1c3RvbT1cIkN1c3RvbVwifShsfHwobD17fSkpLGZ1bmN0aW9uKGUpe2UuU2F2ZVBhZ2U9XCJTYXZlUGFnZVwiLGUuU2F2ZVdvcmtzcGFjZT1cIlNhdmVXb3Jrc3BhY2VcIixlLlNhdmVQYWdlQXM9XCJTYXZlUGFnZUFzXCIsZS5TYXZlV29ya3NwYWNlQXM9XCJTYXZlV29ya3NwYWNlQXNcIixlLkN1c3RvbT1cIkN1c3RvbVwifShzfHwocz17fSkpLGZ1bmN0aW9uKGUpe2UuQ3VzdG9tQnV0dG9uPVwiQ3VzdG9tQnV0dG9uXCIsZS5TdG9yZUN1c3RvbUJ1dHRvbj1cIlN0b3JlQ3VzdG9tQnV0dG9uXCIsZS5DdXN0b21Ecm9wZG93bkl0ZW09XCJDdXN0b21Ecm9wZG93bkl0ZW1cIixlLkdsb2JhbENvbnRleHRNZW51PVwiR2xvYmFsQ29udGV4dE1lbnVcIixlLlZpZXdUYWJDb250ZXh0TWVudT1cIlZpZXdUYWJDb250ZXh0TWVudVwiLGUuUGFnZVRhYkNvbnRleHRNZW51PVwiUGFnZVRhYkNvbnRleHRNZW51XCIsZS5TYXZlQnV0dG9uQ29udGV4dE1lbnU9XCJTYXZlQnV0dG9uQ29udGV4dE1lbnVcIixlLkFQST1cIkFQSVwifShjfHwoYz17fSkpLGZ1bmN0aW9uKGUpe2UuU0FWRV9QQUdFPVwiU0FWRV9QQUdFXCIsZS5TQVZFX1dPUktTUEFDRT1cIlNBVkVfV09SS1NQQUNFXCIsZS5TQVZFX1BBR0VfQVM9XCJTQVZFX1BBR0VfQVNcIixlLlNBVkVfV09SS1NQQUNFX0FTPVwiU0FWRV9XT1JLU1BBQ0VfQVNcIixlLlJFTkFNRV9QQUdFPVwiUkVOQU1FX1BBR0VcIixlLlJFTkFNRV9XT1JLU1BBQ0U9XCJSRU5BTUVfV09SS1NQQUNFXCJ9KHV8fCh1PXt9KSl9LDI2MTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLG4uZCh0LHtDTElBY3Rpb246KCk9PncuUHQsQ0xJRmlsdGVyT3B0aW9uVHlwZTooKT0+dy5lbCxDTElUZW1wbGF0ZTooKT0+dy55VyxkZXJlZ2lzdGVyOigpPT5fLGhpZGU6KCk9Pk8scmVnaXN0ZXI6KCk9Pngsc2hvdzooKT0+TH0pO3ZhciByPW4oNjc4KSxvPW4oNzcyKTtjb25zdCBpPXtyZW1vdGVQcm92aWRlckRhdGFTdHJlYW1JZDpcIjBcIixyZW1vdGVDbGllbnRTZWFyY2hTdHJlYW1JZDpcIjFcIixyZW1vdGVQcm92aWRlclJlZ2lzdHJhdGlvblN0cmVhbUlkOlwiMlwiLHJlbW90ZVByb3ZpZGVyRGVyZWdpc3RyYXRpb25TdHJlYW1JZDpcIjNcIixyZW1vdGVQcm92aWRlckluZm9TdHJlYW1JZDpcIjRcIixyZW1vdGVQcm92aWRlckRpc3BhdGNoU3RyZWFtSWQ6XCI1XCIscmVtb3RlU2VhcmNoQ2xvc2VTdHJlYW1JZDpcIjZcIn07dmFyIGE9bigxNTApLGw9big0MzgpLHM9bigyNjQpO3ZhciBjPW4oNDYpO2NvbnN0IHU9KCk9Pnt9O2Z1bmN0aW9uIGYoZSl7Y29uc3QgdD17fTtsZXQgbj1bXTtsZXQgcj1bXTtsZXQgbz1udWxsO2xldCBpPWMudzEuSW5pdGlhbDt0LmdldFN0YXR1cz0oKT0+aSx0LmdldFJlc3VsdEJ1ZmZlcj0oKT0+bix0LnNldFJlc3VsdEJ1ZmZlcj1lPT57bj1lLG4/Lmxlbmd0aCYmdC5vbkNoYW5nZSgpfSx0LmdldFJldm9rZWRCdWZmZXI9KCk9PnIsdC5zZXRSZXZva2VkQnVmZmVyPWU9PntyPWUscj8ubGVuZ3RoJiZ0Lm9uQ2hhbmdlKCl9LHQuc2V0VXBkYXRlZENvbnRleHQ9ZT0+e289ZSxudWxsIT09byYmdC5vbkNoYW5nZSgpfSx0LmdldFVwZGF0ZWRDb250ZXh0PSgpPT5vLHQub25DaGFuZ2U9dTtjb25zdCBhPXt9O3JldHVybiB0LnJlcz1hLGEuY2xvc2U9KCk9PntpIT09Yy53MS5DbG9zZSYmKGk9Yy53MS5DbG9zZSx0Lm9uQ2hhbmdlKCkpfSxhLm9wZW49KCk9PntpIT09Yy53MS5PcGVuJiYoaT1jLncxLk9wZW4sdC5vbkNoYW5nZSgpKX0sYS5yZXNwb25kPW49Pntjb25zdCByPWZ1bmN0aW9uKGU9W10sdD1bXSxuPVwiYXNjZW5kaW5nXCIpe2NvbnN0IHI9W10sbz1uZXcgTWFwO3QuZm9yRWFjaCgoZT0+e2lmKGUua2V5KXJldHVybiBvLnNldChlLmtleSxlKTtyLnB1c2goZSl9KSk7bGV0IGk9ZS5tYXAoKGU9PntpZihlLmtleSl7Y29uc3QgdD1vLmdldChlLmtleSk7aWYodClyZXR1cm4gby5kZWxldGUoZS5rZXkpLHR9cmV0dXJuIGV9KSk7cmV0dXJuIGkucHVzaCguLi5vLnZhbHVlcygpLC4uLnIpLGk9XCJhc2NlbmRpbmdcIj09PW4/aS5zb3J0KCgoZSx0KT0+KGU/LnNjb3JlPz8xLzApLSh0Py5zY29yZT8/MS8wKSkpOmkuc29ydCgoKGUsdCk9Pih0Py5zY29yZT8/MS8wKS0oZT8uc2NvcmU/PzEvMCkpKSxpfSh0LmdldFJlc3VsdEJ1ZmZlcigpLG4sZSk7dC5zZXRSZXN1bHRCdWZmZXIocil9LGEucmV2b2tlPSguLi5lKT0+e2NvbnN0IG49bmV3IFNldChlKSxyPXQuZ2V0UmVzdWx0QnVmZmVyKCkuZmlsdGVyKCgoe2tleTplfSk9Pntjb25zdCB0PW4uaGFzKGUpO3JldHVybiB0JiZuLmRlbGV0ZShlKSwhdH0pKTt0LnNldFJlc3VsdEJ1ZmZlcihyKSxuLnNpemUmJih0LmdldFJldm9rZWRCdWZmZXIoKS5mb3JFYWNoKChlPT5uLmFkZChlKSkpLHQuc2V0UmV2b2tlZEJ1ZmZlcihbLi4ubl0pKX0sYS51cGRhdGVDb250ZXh0PWU9Pnt0LnNldFVwZGF0ZWRDb250ZXh0KGUpfSx0fWNvbnN0IGQ9bmV3IE1hcCxwPTEwMDthc3luYyBmdW5jdGlvbiBoKGUpe2NvbnN0e2lkOnQscHJvdmlkZXJJZDpufT1lLHI9bS5nZXRQcm92aWRlck9yRmFpbChuKTtsZXQgbz1kLmdldCh0KTtvfHwobz1mdW5jdGlvbihlLHQpe2NvbnN0IG49bmV3IFNldDtsZXQgcj0hMTtyZXR1cm57Y2xvc2U6KCk9PntyPSEwO2Zvcihjb25zdCBlIG9mIG4pZSgpfSxyZXE6e2lkOmUsLi4udCxjb250ZXh0OnQ/LmNvbnRleHR8fHt9LG9uQ2xvc2U6ZT0+e24uYWRkKGUpLHImJmUoKX0scmVtb3ZlTGlzdGVuZXI6ZT0+e24uZGVsZXRlKGUpfX19fSh0LGUpLGQuc2V0KHQsbykpO2NvbnN0IGw9ZigpLHM9KCk9Pntjb25zdCBlPWwuZ2V0UmVzdWx0QnVmZmVyKCk7bC5zZXRSZXN1bHRCdWZmZXIoW10pO2NvbnN0IHI9bC5nZXRSZXZva2VkQnVmZmVyKCk7bC5zZXRSZXZva2VkQnVmZmVyKFtdKTtjb25zdCBvPWwuZ2V0VXBkYXRlZENvbnRleHQoKTtsLnNldFVwZGF0ZWRDb250ZXh0KG51bGwpO2NvbnN0IHM9bC5nZXRTdGF0dXMoKTshYXN5bmMgZnVuY3Rpb24oZSl7KGF3YWl0KDAsYS5WRCkoKSkuZGlzcGF0Y2goaS5yZW1vdGVQcm92aWRlckRhdGFTdHJlYW1JZCxlKX0oe2lkOnQscHJvdmlkZXJJZDpuLHJlc3VsdHM6ZSxyZXZva2VkOnIsc3RhdHVzOnMsY29udGV4dDpvfSl9O2xldCBjPSEwLHU9ITE7bC5vbkNoYW5nZT0oKT0+e2lmKGMpcmV0dXJuIGM9ITEsdm9pZCBzKCk7dXx8KHU9ITAsc2V0VGltZW91dCgoKCk9Pnt1PSExLHMoKX0pLHApKX07dHJ5e2NvbnN0e3Jlc3VsdHM6ZSxjb250ZXh0Oml9PWF3YWl0IHIub25Vc2VySW5wdXQoby5yZXEsbC5yZXMpLGE9bC5nZXRTdGF0dXMoKTtyZXR1cm57aWQ6dCxwcm92aWRlcklkOm4sc3RhdHVzOmEscmVzdWx0czplLGNvbnRleHQ6aX19Y2F0Y2goZSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoYE9wZW5GaW4vV29ya3NwYWNlL0hvbWUuIFVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiBzZWFyY2ggcHJvdmlkZXIgJHtufSBmb3Igc2VhcmNoICR7dH1gLFwiVGhpcyBpcyBsaWtlbHkgYSBidWcgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzZWFyY2ggcHJvdmlkZXIuXCIsZSkse2lkOnQscHJvdmlkZXJJZDpuLGVycm9yOmU/Lm1lc3NhZ2V9fX1hc3luYyBmdW5jdGlvbiB2KCl7Zm9yKGNvbnN0e3JlcTplLGNsb3NlOnR9b2YgZC52YWx1ZXMoKSl0KCksZC5kZWxldGUoZS5pZCl9YXN5bmMgZnVuY3Rpb24gZyhlLHQpe2NvbnN0IG49bS5nZXRQcm92aWRlck9yRmFpbChlLnByb3ZpZGVySWQpO3JldHVybiBlLnJlc3VsdC5kaXNwYXRjaGVySWRlbnRpdHk9dCxuLm9uUmVzdWx0RGlzcGF0Y2g/LihlLnJlc3VsdCl9ZnVuY3Rpb24gQyhlKXtjb25zdCB0PWQuZ2V0KGUuaWQpO3Q/LmNsb3NlKCksZC5kZWxldGUoZS5pZCl9Y29uc3QgbT1uZXcgcy5sVChcImhvbWVcIikseT1hc3luYyBlPT57YXdhaXQoMCxhLmFCKSgpOyEoXCJza2lwUGxhdGZvcm1Jbml0Q2hlY2tcImluIGUmJiEwPT09ZS5za2lwUGxhdGZvcm1Jbml0Q2hlY2spJiZhd2FpdCgwLGwuSGgpKGZpbi5tZS5pZGVudGl0eSk7bS5hc3NlcnROb3RBbHJlYWR5UmVnaXN0ZXJlZChlLmlkKSxtLnNldFByb3ZpZGVyKGUpO2NvbnN0IHQ9YXdhaXQoMCxhLlZEKSgpO3JldHVybiBmdW5jdGlvbihlKXtlLmhvbWVDaGFubmVsQWN0aW9uc1JlZ2lzdGVyZWR8fChlLmhvbWVDaGFubmVsQWN0aW9uc1JlZ2lzdGVyZWQ9ITAsZS5yZWdpc3RlcihpLnJlbW90ZVByb3ZpZGVyRGF0YVN0cmVhbUlkLGgpLGUucmVnaXN0ZXIoaS5yZW1vdGVTZWFyY2hDbG9zZVN0cmVhbUlkLEMpLGUucmVnaXN0ZXIoaS5yZW1vdGVQcm92aWRlckRpc3BhdGNoU3RyZWFtSWQsZyksZS5hZGREaXNjb25uZWN0aW9uTGlzdGVuZXIodikpfSh0KSx0LmRpc3BhdGNoKGkucmVtb3RlUHJvdmlkZXJSZWdpc3RyYXRpb25TdHJlYW1JZCx7aWQ6ZS5pZCx0aXRsZTplLnRpdGxlLGljb246ZS5pY29uLGNsaWVudEFQSVZlcnNpb246ci51MCxpZGVudGl0eTpmaW4ubWUuaWRlbnRpdHksc2NvcmVPcmRlcjplLnNjb3JlT3JkZXIsY29tbWFuZENvZGU6ZS5jb21tYW5kQ29kZSxkZXNjcmlwdGlvbjplLmRlc2NyaXB0aW9uLGhpZGRlbjplLmhpZGRlbixsaXN0VGl0bGU6ZS5saXN0VGl0bGUsaW5wdXRQbGFjZWhvbGRlcjplLmlucHV0UGxhY2Vob2xkZXIsbG9nb1VybDplLmxvZ29VcmwsZGlzcGF0Y2hGb2N1c0V2ZW50czplLmRpc3BhdGNoRm9jdXNFdmVudHN9KX07dmFyIHc9big3NTgpO2xldCBiO2NvbnN0IHg9YXN5bmMgZT0+e2lmKCFlLmljb24pdGhyb3cgbmV3IEVycm9yKGAke2UuaWR9IHByb3ZpZGVyIG5lZWRzIHRvIGhhdmUgaWNvbiBwcm9wZXJ0eSBkZWZpbmVkLmApO3JldHVybiBiPW5ldyBQcm9taXNlKChhc3luYyh0LG4pPT57dHJ5e2NvbnN0IG49YXdhaXQgeShlKTsoMCxvLmNrKSh7YWxsb3dlZDohMCxjb21wb25lbnRWZXJzaW9uOm4/LndvcmtzcGFjZVZlcnNpb259KSxuPy53b3Jrc3BhY2VWZXJzaW9uLHIudTAsdCh7Li4ubixjbGllbnRBUElWZXJzaW9uOnIudTAsc2V0U2VhcmNoUXVlcnk6YXN5bmMgdD0+KGF3YWl0KDAsYS54WikoKSkuZGlzcGF0Y2goXCJzZXQtc2VhcmNoLXF1ZXJ5XCIse3F1ZXJ5OnQscHJvdmlkZXJJRDplLmlkfSl9KX1jYXRjaChlKXsoMCxvLmNrKSh7YWxsb3dlZDohMSxyZWplY3Rpb25Db2RlOmUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6XCJ1bmtub3duXCJ9KSxuKGUpfX0pKSxifSxfPWFzeW5jIGU9PnttLmRlbGV0ZVByb3ZpZGVyKGUpO2NvbnN0IHQ9YXdhaXQoMCxhLlZEKSgpO2F3YWl0IHQuZGlzcGF0Y2goaS5yZW1vdGVQcm92aWRlckRlcmVnaXN0cmF0aW9uU3RyZWFtSWQsZSl9O2FzeW5jIGZ1bmN0aW9uIEwoKXthd2FpdCBiO2NvbnN0IGU9YXdhaXQoMCxhLnhaKSgpO2F3YWl0IGUuZGlzcGF0Y2goXCJzaG93LWhvbWVcIix2b2lkIDApfWFzeW5jIGZ1bmN0aW9uIE8oKXthd2FpdCBiO2NvbnN0IGU9YXdhaXQoMCxhLnhaKSgpO2F3YWl0IGUuZGlzcGF0Y2goXCJoaWRlLWhvbWVcIix2b2lkIDApfX0sMjY0OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7bFQ6KCk9PmR9KTt2YXIgcj0vXFxiKD86YW4/ZD98YVtzdF18YmVjYXVzZXxidXR8Ynl8ZW58Zm9yfGlbZm5dfG5laXRoZXJ8bm9yfG9bZm5yXXxvbmx5fG92ZXJ8cGVyfHNvfHNvbWV8dGhhW3RuXXx0aGV8dG98dXB8dXBvbnx2cz9cXC4/fHZlcnN1c3x2aWF8d2hlbnx3aXRofHdpdGhvdXR8eWV0KVxcYi9pLG89L1teXFxzOuKAk+KAlC1dK3wuL2csaT0vXFxzLyxhPS8uKD89W0EtWl18XFwuLikvLGw9L1tBLVphLXowLTlcXHUwMEMwLVxcdTAwRkZdLztmdW5jdGlvbiBzKGUpe2Zvcih2YXIgdCxuPVwiXCI7bnVsbCE9PSh0PW8uZXhlYyhlKSk7KXt2YXIgcz10WzBdLGM9dC5pbmRleDthLnRlc3Qocyl8fHIudGVzdChzKSYmMCE9PWMmJmMrcy5sZW5ndGghPT1lLmxlbmd0aHx8XCI6XCI9PT1lLmNoYXJBdChjK3MubGVuZ3RoKSYmIWkudGVzdChlLmNoYXJBdChjK3MubGVuZ3RoKzEpKT9uKz1zOm4rPXMucmVwbGFjZShsLChmdW5jdGlvbihlKXtyZXR1cm4gZS50b1VwcGVyQ2FzZSgpfSkpfXJldHVybiBufWNsYXNzIGMgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHQpe2NvbnN0IG49cyhlKTtzdXBlcihgJHtufSBQcm92aWRlci4gJHtufSBQcm92aWRlciR7dD9gIHdpdGggaWQgJHt0fWA6XCJcIn0gaXMgbm90IGN1cnJlbnRseSByZWdpc3RlcmVkLmApfX1jbGFzcyB1IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSx0KXtjb25zdCBuPXMoZSk7c3VwZXIoYCR7bn0gUHJvdmlkZXIuICR7bn0gUHJvdmlkZXIke3Q/YCB3aXRoIGlkICR7dH1gOlwiXCJ9IGlzIGFscmVhZHkgcmVnaXN0ZXJlZC4gQ2FsbCBcXGBkZXJlZ2lzdGVyXFxgIGJlZm9yZSByZWdpc3RlcmluZyBhZ2Fpbi5gKX19Y2xhc3MgZiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCl7Y29uc3Qgbj1zKGUpO3N1cGVyKGBGYWlsZWQgdG8gZ2V0ICR7bn0gUHJvdmlkZXIuICR7bn0gUHJvdmlkZXIgd2l0aCBpZCAke3R9IGlzIG5vdCBjdXJyZW50bHkgcmVnaXN0ZXJlZC5gKX19Y2xhc3MgZHtjb25zdHJ1Y3RvcihlKXt0aGlzLnByb3ZpZGVyc01hcD1uZXcgTWFwLHRoaXMucHJvdmlkZXJUeXBlPWV9YXNzZXJ0Tm90QWxyZWFkeVJlZ2lzdGVyZWQoZSl7aWYodGhpcy5oYXNQcm92aWRlcihlKSl0aHJvdyBuZXcgdSh0aGlzLnByb3ZpZGVyVHlwZSxlKX1hc3NlcnRSZWdpc3RlcmVkKGUpe2lmKCF0aGlzLmhhc1Byb3ZpZGVyKGUpKXRocm93IG5ldyBjKHRoaXMucHJvdmlkZXJUeXBlLGUpfWdldFByb3ZpZGVyKGUpe3JldHVybiB0aGlzLnByb3ZpZGVyc01hcC5nZXQoZSl9aGFzUHJvdmlkZXIoZSl7cmV0dXJuIHRoaXMucHJvdmlkZXJzTWFwLmhhcyhlKX1zZXRQcm92aWRlcihlKXt0aGlzLnByb3ZpZGVyc01hcC5zZXQoZS5pZCxlKX1kZWxldGVQcm92aWRlcihlKXt0aGlzLnByb3ZpZGVyc01hcC5kZWxldGUoZSl9Z2V0UHJvdmlkZXJPckZhaWwoZSl7Y29uc3QgdD10aGlzLmdldFByb3ZpZGVyKGUpO2lmKCF0KXRocm93IG5ldyBmKHRoaXMucHJvdmlkZXJUeXBlLGUpO3JldHVybiB0fWNsZWFyUHJvdmlkZXJzKCl7dGhpcy5wcm92aWRlcnNNYXAuY2xlYXIoKX19fSwyMjI6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByLG8saTtuLmQodCx7cDooKT0+byx3OigpPT5pfSksZnVuY3Rpb24oZSl7ZS5GZXRjaGluZz1cImZldGNoaW5nXCIsZS5GZXRjaGVkPVwiZmV0Y2hlZFwiLGUuQ29tcGxldGU9XCJjb21wbGV0ZVwifShyfHwocj17fSkpLGZ1bmN0aW9uKGUpe2UuVXNlckFjdGlvbj1cInVzZXItYWN0aW9uXCIsZS5Gb2N1c0NoYW5nZT1cImZvY3VzLWNoYW5nZVwiLGUuUmVsb2FkPVwicmVsb2FkXCJ9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7ZS5BY3RpdmU9XCJhY3RpdmVcIixlLkRlZmF1bHQ9XCJkZWZhdWx0XCJ9KGl8fChpPXt9KSl9LDQyNzooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHI7bi5kKHQse3Y6KCk9PnJ9KSxmdW5jdGlvbihlKXtlLkFjdGlvbkJ1dHRvbj1cIkFjdGlvbkJ1dHRvblwiLGUuRHJvcGRvd25CdXR0b249XCJEcm9wZG93bkJ1dHRvblwifShyfHwocj17fSkpfSw3NTg6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByLG8saTtuLmQodCx7UHQ6KCk9PnIsZWw6KCk9PmkseVc6KCk9Pm99KSxmdW5jdGlvbihlKXtlLlN1Z2dlc3Rpb249XCJzdWdnZXN0aW9uXCJ9KHJ8fChyPXt9KSksZnVuY3Rpb24oZSl7ZS5Db250YWN0PVwiQ29udGFjdFwiLGUuQ3VzdG9tPVwiQ3VzdG9tXCIsZS5MaXN0PVwiTGlzdFwiLGUuUGxhaW49XCJQbGFpblwiLGUuU2ltcGxlVGV4dD1cIlNpbXBsZVRleHRcIixlLkxvYWRpbmc9XCJMb2FkaW5nXCIsZS5FcnJvcj1cIkVycm9yXCJ9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7ZS5NdWx0aVNlbGVjdD1cIk11bHRpU2VsZWN0XCJ9KGl8fChpPXt9KSl9LDU2NDooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bigyMjIpLG4oNzU4KSxuKDExNCksbigxMDkpLG4oNDI3KX0sMTE0OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcixvO24uZCh0LHtMOigpPT5yLFQ6KCk9Pm99KSxmdW5jdGlvbihlKXtlLlNuYXBzaG90PVwic25hcHNob3RcIixlLk1hbmlmZXN0PVwibWFuaWZlc3RcIixlLlZpZXc9XCJ2aWV3XCIsZS5FeHRlcm5hbD1cImV4dGVybmFsXCJ9KHJ8fChyPXt9KSksZnVuY3Rpb24oZSl7ZS5MYW5kaW5nUGFnZT1cImxhbmRpbmdQYWdlXCIsZS5BcHBHcmlkPVwiYXBwR3JpZFwifShvfHwobz17fSkpfSwxMDk6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtHbzooKT0+byxaSjooKT0+YSxiSTooKT0+aSxwNjooKT0+cn0pO2NvbnN0IHI9e0NvbnRhaW5lcjpcIkNvbnRhaW5lclwiLEJ1dHRvbjpcIkJ1dHRvblwifSxvPXtUZXh0OlwiVGV4dFwiLEltYWdlOlwiSW1hZ2VcIixMaXN0OlwiTGlzdFwifSxpPXsuLi5yLC4uLm99O3ZhciBhOyFmdW5jdGlvbihlKXtlLlByaW1hcnk9XCJwcmltYXJ5XCIsZS5TZWNvbmRhcnk9XCJzZWNvbmRhcnlcIixlLlRleHRPbmx5PVwidGV4dE9ubHlcIn0oYXx8KGE9e30pKX0sNTI4OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQse0FwcE1hbmlmZXN0VHlwZTooKT0+aS5MLFN0b3JlZnJvbnRUZW1wbGF0ZTooKT0+aS5ULGRlcmVnaXN0ZXI6KCk9PnYsaGlkZTooKT0+ZyxyZWdpc3RlcjooKT0+aCxzaG93OigpPT5DfSk7dmFyIHI9big3NzIpLG89bigxNTApLGk9bigxMTQpLGE9big2NzgpLGw9big0MzgpLHM9bigyNjQpO2xldCBjPSExO2FzeW5jIGZ1bmN0aW9uIHUoZSx0LG4pe2NvbnN0IHI9YXdhaXQoMCxvLkRtKSgpO3RyeXtyZXR1cm4gYXdhaXQgci5kaXNwYXRjaChlLmFjdGlvbixlLnBheWxvYWQpfWNhdGNoKG8pe2lmKG8gaW5zdGFuY2VvZiBFcnJvciYmLTEhPT1vLnRvU3RyaW5nKCkuaW5kZXhPZihlLmFjdGlvbikpcmV0dXJuIGN8fGNvbnNvbGUud2FybihcIllvdSBhcmUgdXNpbmcgYSBuZXdlciB2ZXJzaW9uIG9mIHRoZSBXb3Jrc3BhY2UgY2xpZW50IGxpYnJhcnkgdGhhdCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50bHkgcnVubmluZyB3b3Jrc3BhY2UgcHJvdmlkZXIuIFBsZWFzZSB1cGdyYWRlIHRoZSBXb3Jrc3BhY2UgdG8gdmVyc2lvbiA5LjAgb3IgbGF0ZXIuXCIpLGM9ITAsYXdhaXQgci5kaXNwYXRjaCh0LmFjdGlvbix0LnBheWxvYWQpLG47dGhyb3cgb319Y29uc3QgZj1uZXcgcy5sVChcInN0b3JlZnJvbnRcIiksZD1hc3luYyBlPT57YXdhaXQoMCxsLkhoKShmaW4ubWUuaWRlbnRpdHkpO2NvbnN0IHQ9YXdhaXQoMCxvLnhaKSgpO3JldHVybiBmLmFzc2VydE5vdEFscmVhZHlSZWdpc3RlcmVkKGUuaWQpLGYuc2V0UHJvdmlkZXIoZSksKGU9PntlLnN0b3JlZnJvbnRDaGFubmVsQWN0aW9uc1JlZ2lzdGVyZWR8fChlLnN0b3JlZnJvbnRDaGFubmVsQWN0aW9uc1JlZ2lzdGVyZWQ9ITAsZS5yZWdpc3RlcihcImdldC1zdG9yZWZyb250LXByb3ZpZGVyLWFwcHNcIiwoZT0+Zi5nZXRQcm92aWRlck9yRmFpbChlKS5nZXRBcHBzKCkpKSxlLnJlZ2lzdGVyKFwiZ2V0LXN0b3JlZnJvbnQtcHJvdmlkZXItZm9vdGVyXCIsKGU9PmYuZ2V0UHJvdmlkZXJPckZhaWwoZSkuZ2V0Rm9vdGVyKCkpKSxlLnJlZ2lzdGVyKFwiZ2V0LXN0b3JlZnJvbnQtcHJvdmlkZXItbGFuZGluZy1wYWdlXCIsKGU9PmYuZ2V0UHJvdmlkZXJPckZhaWwoZSkuZ2V0TGFuZGluZ1BhZ2UoKSkpLGUucmVnaXN0ZXIoXCJnZXQtc3RvcmVmcm9udC1wcm92aWRlci1uYXZpZ2F0aW9uXCIsKGU9PmYuZ2V0UHJvdmlkZXJPckZhaWwoZSkuZ2V0TmF2aWdhdGlvbigpKSksZS5yZWdpc3RlcihcImxhdW5jaC1zdG9yZWZyb250LXByb3ZpZGVyLWFwcFwiLCgoe2lkOmUsYXBwOnR9KT0+Zi5nZXRQcm92aWRlck9yRmFpbChlKS5sYXVuY2hBcHAodCkpKSl9KSh0KSxlLmNsaWVudEFQSVZlcnNpb249YS51MCx1KHthY3Rpb246XCJyZWdpc3Rlci1wcm92aWRlclwiLHBheWxvYWQ6e3Byb3ZpZGVyVHlwZTpcInN0b3JlZnJvbnRcIixpbmZvOmV9fSx7YWN0aW9uOlwicmVnaXN0ZXItc3RvcmVmcm9udC1wcm92aWRlclwiLHBheWxvYWQ6ZX0se3dvcmtzcGFjZVZlcnNpb246XCJ1bmtub3duXCJ9KX07bGV0IHA7Y29uc3QgaD1lPT4ocD1uZXcgUHJvbWlzZSgoYXN5bmModCxuKT0+e3RyeXtjb25zdCBuPWF3YWl0IGQoZSk7KDAsci5kOSkoe2FsbG93ZWQ6ITAsY29tcG9uZW50VmVyc2lvbjpuPy53b3Jrc3BhY2VWZXJzaW9ufSksbj8ud29ya3NwYWNlVmVyc2lvbixhLnUwLHQoe2NsaWVudEFQSVZlcnNpb246YS51MCx3b3Jrc3BhY2VWZXJzaW9uOm4/LndvcmtzcGFjZVZlcnNpb24/P1wiXCIsdXBkYXRlQXBwQ2FyZEJ1dHRvbnM6YXN5bmMgdD0+e2NvbnN0IG49YXdhaXQoMCxvLlhsKSgpO2F3YWl0IG4uZGlzcGF0Y2goXCJ1cGRhdGUtYXBwLWNhcmQtYnV0dG9uLWNvbmZpZ1wiLHsuLi50LGlkOmUuaWQsdGl0bGU6ZS50aXRsZSxpY29uOmUuaWNvbixwbGF0Zm9ybUlkZW50aXR5OmZpbi5tZS5pZGVudGl0eX0pfX0pfWNhdGNoKGUpeygwLHIuZDkpKHthbGxvd2VkOiExLHJlamVjdGlvbkNvZGU6ZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTpcInVua25vd25cIn0pLG4oZSl9fSkpLHApLHY9YXN5bmMgZT0+KGF3YWl0IHAsZi5hc3NlcnRSZWdpc3RlcmVkKGUpLGYuZGVsZXRlUHJvdmlkZXIoZSksYXdhaXQoMCxvLmFCKSgpLHUoe2FjdGlvbjpcImRlcmVnaXN0ZXItcHJvdmlkZXJcIixwYXlsb2FkOntwcm92aWRlclR5cGU6XCJzdG9yZWZyb250XCIsaWQ6ZX19LHthY3Rpb246XCJkZXJlZ2lzdGVyLXN0b3JlZnJvbnQtcHJvdmlkZXJcIixwYXlsb2FkOmV9KSksZz1hc3luYygpPT4oYXdhaXQgcCxhd2FpdCgwLG8uYUIpKCksdSh7YWN0aW9uOlwiaGlkZS1wcm92aWRlci13aW5kb3dcIixwYXlsb2FkOntwcm92aWRlclR5cGU6XCJzdG9yZWZyb250XCJ9fSx7YWN0aW9uOlwiaGlkZS1zdG9yZWZyb250XCJ9KSksQz1hc3luYygpPT4oYXdhaXQgcCxhd2FpdCgwLG8uYUIpKCksdSh7YWN0aW9uOlwic2hvdy1wcm92aWRlci13aW5kb3dcIixwYXlsb2FkOntwcm92aWRlclR5cGU6XCJzdG9yZWZyb250XCJ9fSx7YWN0aW9uOlwic2hvdy1zdG9yZWZyb250XCJ9KSl9LDQyMDooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse2hkOigpPT5vfSk7bigzMTEpLG4oOTEyKTt2YXIgcj1uKDE1MCk7YXN5bmMgZnVuY3Rpb24gbygpe3JldHVybihhd2FpdCgwLHIuRG0pKCkpLmRpc3BhdGNoKFwiZ2V0LWxlZ2FjeS1wYWdlc1wiLHZvaWQgMCl9fSw0OTU6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByOyFmdW5jdGlvbihlKXtlLkxlZnQ9XCJMZWZ0XCIsZS5SaWdodD1cIlJpZ2h0XCIsZS5Ub3A9XCJUb3BcIixlLkJvdHRvbT1cIkJvdHRvbVwifShyfHwocj17fSkpfSwxMjc6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtEbTooKT0+YSx5ejooKT0+Y30pO3ZhciByPW4oMTE3KTtuKDEyMSk7Y29uc3Qgbz1lPT5gX19icm93c2VyX3dpbmRvd19fLSR7ZS51dWlkfS0ke2UubmFtZX1gLGk9bmV3IE1hcCxhPWU9Pntjb25zdCB0PW8oZSk7cmV0dXJuIGkuaGFzKHQpfHxpLnNldCh0LCgwLHIuWikodCkpLGkuZ2V0KHQpKCl9O3ZhciBsLHM7IWZ1bmN0aW9uKGUpe2UuQ2xvc2VCcm93c2VyV2luZG93PVwiY2xvc2UtYnJvd3Nlci13aW5kb3dcIixlLlF1aXRQbGF0Zm9ybT1cInF1aXQtcGxhdGZvcm1cIixlLkNsb3NlUGFnZT1cImNsb3NlLXBhZ2VcIixlLkFkZFRvQ2hhbm5lbD1cImFkZC10by1jaGFubmVsXCIsZS5SZW1vdmVGcm9tQ2hhbm5lbD1cInJlbW92ZS1mcm9tLWNoYW5uZWxcIixlLk9wZW5TYXZlTW9kYWxJbnRlcm5hbD1cIm9wZW4tc2F2ZS1tb2RhbC1pbnRlcm5hbFwiLGUuRHVwbGljYXRlUGFnZT1cImR1cGxpY2F0ZS1wYWdlXCIsZS5TZXRTZWxlY3RlZFNjaGVtZT1cInNldC1zZWxlY3RlZC1zY2hlbWVcIn0obHx8KGw9e30pKSxmdW5jdGlvbihlKXtlLkdldFBhZ2VzPVwiZ2V0LXBhZ2VzXCIsZS5HZXRBY3RpdmVQYWdlRm9yV2luZG93PVwiZ2V0LWFjdGl2ZS1wYWdlLWZvci13aW5kb3dcIixlLkF0dGFjaFBhZ2VzVG9XaW5kb3c9XCJhdHRhY2gtcGFnZXMtdG8td2luZG93XCIsZS5EZXRhY2hQYWdlc0Zyb21XaW5kb3c9XCJkZXRhY2gtcGFnZXMtZnJvbS13aW5kb3dcIixlLlNldEFjdGl2ZVBhZ2VGb3JXaW5kb3c9XCJzZXQtYWN0aXZlLXBhZ2UtZm9yLXdpbmRvd1wiLGUuUmVuYW1lUGFnZT1cInJlbmFtZS1wYWdlXCIsZS5SZW9yZGVyUGFnZXNGb3JXaW5kb3c9XCJyZW9yZGVyLXBhZ2VzLWZvci13aW5kb3dcIixlLlVwZGF0ZVBhZ2VGb3JXaW5kb3c9XCJ1cGRhdGUtcGFnZS1mb3Itd2luZG93XCIsZS5VcGRhdGVQYWdlc1dpbmRvd09wdGlvbnM9XCJ1cGRhdGUtcGFnZXMtd2luZG93LW9wdGlvbnNcIixlLklzRGV0YWNoaW5nUGFnZXM9XCJpcy1kZXRhY2hpbmctcGFnZXNcIixlLklzQWN0aXZlUGFnZUNoYW5naW5nPVwiaXMtYWN0aXZlLXBhZ2UtY2hhbmdpbmdcIn0oc3x8KHM9e30pKTtjb25zdCBjPXsuLi5sLC4uLnN9fSw0Mzg6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByO24uZCh0LHtIaDooKT0+aX0pLGZ1bmN0aW9uKGUpe2UuTGF1bmNoQXBwPVwibGF1bmNoQXBwXCIsZS5TYXZlUGFnZT1cInNhdmVQYWdlXCIsZS5HZXRTYXZlZFBhZ2U9XCJnZXRTYXZlZFBhZ2VcIixlLkNyZWF0ZVNhdmVkUGFnZT1cImNyZWF0ZVNhdmVkUGFnZVwiLGUuVXBkYXRlU2F2ZWRQYWdlPVwidXBkYXRlU2F2ZWRQYWdlXCIsZS5EZWxldGVTYXZlZFBhZ2U9XCJkZWxldGVTYXZlZFBhZ2VcIixlLkdldFNhdmVkUGFnZXM9XCJnZXRTYXZlZFBhZ2VzXCIsZS5DcmVhdGVTYXZlZFBhZ2VJbnRlcm5hbD1cImNyZWF0ZVNhdmVkUGFnZUludGVybmFsXCIsZS5VcGRhdGVTYXZlZFBhZ2VJbnRlcm5hbD1cInVwZGF0ZVNhdmVkUGFnZUludGVybmFsXCIsZS5EZWxldGVTYXZlZFBhZ2VJbnRlcm5hbD1cImRlbGV0ZVNhdmVkUGFnZUludGVybmFsXCIsZS5TaGFyZVBhZ2U9XCJzaGFyZVBhZ2VcIixlLlVwZGF0ZVBhZ2VGb3JXaW5kb3c9XCJ1cGRhdGVQYWdlRm9yV2luZG93XCIsZS5BdHRhY2hQYWdlc1RvV2luZG93PVwiYXR0YWNoUGFnZXNUb1dpbmRvd1wiLGUuRGV0YWNoUGFnZXNGcm9tV2luZG93PVwiZGV0YWNoUGFnZXNGcm9tV2luZG93XCIsZS5SZW9yZGVyUGFnZXNGb3JXaW5kb3c9XCJyZW9yZGVyUGFnZXNGb3JXaW5kb3dcIixlLlNldEFjdGl2ZVBhZ2U9XCJzZXRBY3RpdmVQYWdlXCIsZS5HZXRBbGxBdHRhY2hlZFBhZ2VzPVwiZ2V0QWxsQXR0YWNoZWRQYWdlc1wiLGUuR2V0QWN0aXZlUGFnZUlkRm9yV2luZG93PVwiZ2V0QWN0aXZlUGFnZUlkRm9yV2luZG93XCIsZS5HZXRQYWdlc0ZvcldpbmRvdz1cImdldFBhZ2VzRm9yV2luZG93XCIsZS5HZXRQYWdlRm9yV2luZG93PVwiZ2V0UGFnZUZvcldpbmRvd1wiLGUuR2V0U2F2ZWRQYWdlTWV0YWRhdGE9XCJnZXRTYXZlZFBhZ2VNZXRhZGF0YVwiLGUuR2V0VW5pcXVlUGFnZVRpdGxlPVwiZ2V0VW5pcXVlUGFnZVRpdGxlXCIsZS5HZXRMYXN0Rm9jdXNlZEJyb3dzZXJXaW5kb3c9XCJnZXRMYXN0Rm9jdXNlZEJyb3dzZXJXaW5kb3dcIixlLkdldFRoZW1lcz1cImdldFRoZW1lc1wiLGUuR2V0U2VsZWN0ZWRTY2hlbWU9XCJnZXRTZWxlY3RlZFNjaGVtZVwiLGUuU2V0U2VsZWN0ZWRTY2hlbWU9XCJzZXRTZWxlY3RlZFNjaGVtZVwiLGUuT3Blbkdsb2JhbENvbnRleHRNZW51SW50ZXJuYWw9XCJvcGVuR2xvYmFsQ29udGV4dE1lbnVJbnRlcm5hbFwiLGUuT3BlblZpZXdUYWJDb250ZXh0TWVudUludGVybmFsPVwib3BlblZpZXdUYWJDb250ZXh0TWVudUludGVybmFsXCIsZS5PcGVuUGFnZVRhYkNvbnRleHRNZW51SW50ZXJuYWw9XCJvcGVuUGFnZVRhYkNvbnRleHRNZW51SW50ZXJuYWxcIixlLk9wZW5TYXZlQnV0dG9uQ29udGV4dE1lbnVJbnRlcm5hbD1cIm9wZW5TYXZlQnV0dG9uQ29udGV4dE1lbnVJbnRlcm5hbFwiLGUuSW52b2tlQ3VzdG9tQWN0aW9uSW50ZXJuYWw9XCJpbnZva2VDdXN0b21BY3Rpb25JbnRlcm5hbFwiLGUuUmVxdWVzdFF1aXRQbGF0Zm9ybURpYWxvZ0ludGVybmFsPVwicmVxdWVzdFF1aXRQbGF0Zm9ybURpYWxvZ0ludGVybmFsXCIsZS5HZXRTYXZlZFdvcmtzcGFjZT1cImdldFNhdmVkV29ya3NwYWNlXCIsZS5DcmVhdGVTYXZlZFdvcmtzcGFjZT1cImNyZWF0ZVNhdmVkV29ya3NwYWNlXCIsZS5VcGRhdGVTYXZlZFdvcmtzcGFjZT1cInVwZGF0ZVNhdmVkV29ya3NwYWNlXCIsZS5EZWxldGVTYXZlZFdvcmtzcGFjZT1cImRlbGV0ZVNhdmVkV29ya3NwYWNlXCIsZS5HZXRTYXZlZFdvcmtzcGFjZXM9XCJnZXRTYXZlZFdvcmtzcGFjZXNcIixlLlNhdmVXb3Jrc3BhY2U9XCJzYXZlV29ya3NwYWNlXCIsZS5HZXRDdXJyZW50V29ya3NwYWNlPVwiZ2V0Q3VycmVudFdvcmtzcGFjZVwiLGUuQXBwbHlXb3Jrc3BhY2U9XCJhcHBseVdvcmtzcGFjZVwiLGUuU2V0QWN0aXZlV29ya3NwYWNlPVwic2V0QWN0aXZlV29ya3NwYWNlXCIsZS5Jc0Jyb3dzZXJJbml0aWFsaXplZD1cImlzQnJvd3NlckluaXRpYWxpemVkXCIsZS5BbmFseXRpY3M9XCJhbmFseXRpY3NJbnRlcm5hbFwiLGUuR2V0RG9ja1Byb3ZpZGVyQ29uZmlnPVwiZ2V0RG9ja1Byb3ZpZGVyQ29uZmlnXCIsZS5TYXZlRG9ja1Byb3ZpZGVyQ29uZmlnPVwic2F2ZURvY2tQcm92aWRlckNvbmZpZ1wifShyfHwocj17fSkpO2NvbnN0IG89YXN5bmMgZT0+ZmluLlBsYXRmb3JtLndyYXBTeW5jKGUpLmdldENsaWVudCgpLGk9YXN5bmMgZT0+e2NvbnN0IHQ9YXdhaXQgbyhlKSxuPVwiVGFyZ2V0IGlzIG5vdCBhIFdvcmtzcGFjZSBQbGF0Zm9ybS4gVGFyZ2V0IG11c3QgY2FsbCBXb3Jrc3BhY2VQbGF0Zm9ybS5pbml0XCI7bGV0IHI7dHJ5e3I9YXdhaXQgdC5kaXNwYXRjaChcImlzV29ya3NwYWNlUGxhdGZvcm1cIil9Y2F0Y2goZSl7dGhyb3cgbmV3IEVycm9yKG4pfWlmKFwiYm9vbGVhblwiPT10eXBlb2YgciYmcilyZXR1cm4gY29uc29sZS53YXJuKFwiWW91IGFyZSB1c2luZyBhbiBvbGRlciB2ZXJzaW9uIG9mIHRoZSB3b3Jrc3BhY2UgcGxhdGZvcm0uIFBsZWFzZSB1cGRhdGUgeW91ciB3b3Jrc3BhY2UgcGxhdGZvcm0uXCIpLHI7aWYoXCJvYmplY3RcIj09dHlwZW9mIHImJnIuaXNXb3Jrc3BhY2VQbGF0Zm9ybSlyZXR1cm4gcjt0aHJvdyBuZXcgRXJyb3Iobil9fSwxNTA6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtEbTooKT0+cyxWRDooKT0+dSxYbDooKT0+cCxhQjooKT0+ZCx4WjooKT0+aH0pO3ZhciByPW4oMTE3KSxvPW4oNjc4KSxpPW4oMTIxKSxhPW4oNDYpO2NvbnN0IGw9KDAsci5aKShcIl9fb2Zfd29ya3NwYWNlX3Byb3RvY29sX19cIikscz1sLGM9bCx1PSgwLHIuWikoYS5ReCksZj1lPT57Y29uc3QgdD1uZXcgVVJMKGUpO3JldHVybiB0LnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJpc0xhdW5jaGVkVmlhTGliXCIsXCJ0cnVlXCIpLHQudG9TdHJpbmcoKX0sZD1hc3luYygpPT57aWYoIWF3YWl0KDAsaS5KVikoaS5pVykpe2lmKG8uWkt8fC0xPT09bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKFwiV2luXCIpKXJldHVybiB2b2lkIGF3YWl0IGZpbi5BcHBsaWNhdGlvbi5zdGFydEZyb21NYW5pZmVzdChmKG8uYVcpKTthd2FpdCBmaW4uU3lzdGVtLm9wZW5VcmxXaXRoQnJvd3NlcihmKG8uR1gpKX19LHA9YXN5bmMoKT0+KGF3YWl0IGQoKSxzKCkpLGg9YXN5bmMoKT0+KGF3YWl0IGQoKSxjKCkpfSw4MjooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1I4OigpPT5hLFJSOigpPT5vLFhfOigpPT5pfSk7dmFyIHI9bigxNTApO2NvbnN0IG89KHtwbGF0Zm9ybUlkZW50aXR5OmUsaWQ6dD1cIlwifSk9PmAke2UubmFtZX0tJHtlLnV1aWR9LSR7dH1gLGk9YXN5bmMgZT0+KGF3YWl0KDAsci5EbSkoKSkuZGlzcGF0Y2goXCJzaG93LXByb3ZpZGVyLXdpbmRvd1wiLHtwcm92aWRlclR5cGU6ZX0pLGE9YXN5bmMgZT0+KGF3YWl0KDAsci5EbSkoKSkuZGlzcGF0Y2goXCJoaWRlLXByb3ZpZGVyLXdpbmRvd1wiLHtwcm92aWRlclR5cGU6ZX0pfSw0NjooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1F4OigpPT5vLHcxOigpPT5hfSk7dmFyIHI9bigxMjEpOygwLG4oODIpLlJSKSh7aWQ6XCJob21lLWNvbW1hbmRzXCIscGxhdGZvcm1JZGVudGl0eTpyLk9JfSk7Y29uc3Qgbz1cIl9fc2VhcmNoLW9wZW5maW4tYnJvd3Nlci1ob21lLXRvcGljX19cIjt2YXIgaSxhOyFmdW5jdGlvbihlKXtlLkZldGNoaW5nPVwiZmV0Y2hpbmdcIixlLkZldGNoZWQ9XCJmZXRjaGVkXCIsZS5Db21wbGV0ZT1cImNvbXBsZXRlXCJ9KGl8fChpPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkluaXRpYWw9MF09XCJJbml0aWFsXCIsZVtlLk9wZW49MV09XCJPcGVuXCIsZVtlLkNsb3NlPTJdPVwiQ2xvc2VcIn0oYXx8KGE9e30pKX0sNjU6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByPW4oMzA0KTtuKDMzNyksbigxMDApLG4oMTUwKTtjb25zdCBvPXtbci5QYWxldHRlLmJyYW5kUHJpbWFyeV06XCIjMEE3NkQzXCIsW3IuUGFsZXR0ZS5zdGF0dXNTdWNjZXNzXTpyLkNvbG9yLmZ1bmN0aW9uYWwxLFtyLlBhbGV0dGUuc3RhdHVzV2FybmluZ106ci5Db2xvci5mdW5jdGlvbmFsMTAsW3IuUGFsZXR0ZS5zdGF0dXNDcml0aWNhbF06ci5Db2xvci5mdW5jdGlvbmFsNyxbci5QYWxldHRlLnN0YXR1c0FjdGl2ZV06ci5Db2xvci5mdW5jdGlvbmFsMyxbci5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kMV06XCIjMEE3NkQzXCIsW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDJdOlwiIzAwMDAwMFwiLFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQzXTpcIiMwMDAwMDBcIixbci5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kNF06XCIjMDAwMDAwXCIsW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDVdOlwiIzAwMDAwMFwifSxpPXsuLi5vLFtyLlBhbGV0dGUuYmFja2dyb3VuZDFdOnIuQ29sb3Iud2hpdGUsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kMl06ci5Db2xvci5saWdodEdyYXkxLFtyLlBhbGV0dGUuYmFja2dyb3VuZDNdOnIuQ29sb3IubGlnaHRHcmF5Mixbci5QYWxldHRlLmJhY2tncm91bmQ0XTpyLkNvbG9yLmxpZ2h0R3JheTMsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNV06ci5Db2xvci5saWdodEdyYXk0LFtyLlBhbGV0dGUuYmFja2dyb3VuZDZdOnIuQ29sb3IubGlnaHRHcmF5NSxbci5QYWxldHRlLmJyYW5kU2Vjb25kYXJ5XTpyLkNvbG9yLmRhcmtHcmF5NSxbci5QYWxldHRlLmlucHV0QmFja2dyb3VuZF06ci5Db2xvci5saWdodEdyYXkzLFtyLlBhbGV0dGUuaW5wdXRDb2xvcl06ci5Db2xvci5kYXJrR3JheTUsW3IuUGFsZXR0ZS5pbnB1dFBsYWNlaG9sZGVyXTpyLkNvbG9yLmRhcmtHcmF5Mixbci5QYWxldHRlLmlucHV0RGlzYWJsZWRdOnIuQ29sb3IubmV1dHJhbEdyYXksW3IuUGFsZXR0ZS5pbnB1dEZvY3VzZWRdOnIuQ29sb3IubGlnaHRHcmF5NSxbci5QYWxldHRlLmlucHV0Qm9yZGVyXTpyLkNvbG9yLm5ldXRyYWxHcmF5LFtyLlBhbGV0dGUudGV4dERlZmF1bHRdOnIuQ29sb3IuZGFya0dyYXk1LFtyLlBhbGV0dGUudGV4dEhlbHBdOnIuQ29sb3IuZGFya0dyYXkzLFtyLlBhbGV0dGUudGV4dEluYWN0aXZlXTpyLkNvbG9yLm5ldXRyYWxHcmF5fSxhPXsuLi5vLFtyLlBhbGV0dGUuYmFja2dyb3VuZDFdOnIuQ29sb3IuZGFya0dyYXk2LFtyLlBhbGV0dGUuYmFja2dyb3VuZDJdOnIuQ29sb3IuZGFya0dyYXk1LFtyLlBhbGV0dGUuYmFja2dyb3VuZDNdOnIuQ29sb3IuZGFya0dyYXk0LFtyLlBhbGV0dGUuYmFja2dyb3VuZDRdOnIuQ29sb3IuZGFya0dyYXkzLFtyLlBhbGV0dGUuYmFja2dyb3VuZDVdOnIuQ29sb3IuZGFya0dyYXkyLFtyLlBhbGV0dGUuYmFja2dyb3VuZDZdOnIuQ29sb3IuZGFya0dyYXkxLFtyLlBhbGV0dGUuYnJhbmRTZWNvbmRhcnldOnIuQ29sb3IuZGFya0dyYXkyLFtyLlBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kXTpyLkNvbG9yLmRhcmtHcmF5MSxbci5QYWxldHRlLmlucHV0Q29sb3JdOnIuQ29sb3Iud2hpdGUsW3IuUGFsZXR0ZS5pbnB1dFBsYWNlaG9sZGVyXTpyLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS5pbnB1dERpc2FibGVkXTpyLkNvbG9yLm5ldXRyYWxHcmF5LFtyLlBhbGV0dGUuaW5wdXRGb2N1c2VkXTpyLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS5pbnB1dEJvcmRlcl06ci5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLnRleHREZWZhdWx0XTpyLkNvbG9yLndoaXRlLFtyLlBhbGV0dGUudGV4dEhlbHBdOnIuQ29sb3IubGlnaHRHcmF5NSxbci5QYWxldHRlLnRleHRJbmFjdGl2ZV06ci5Db2xvci5uZXV0cmFsR3JheX07ci5Db2xvci5kYXJrR3JheTUsci5Db2xvci5kYXJrR3JheTUsci5Db2xvci5kYXJrR3JheTIsci5Db2xvci5kYXJrR3JheTV9LDgwNjooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse0Q5OigpPT5zLHE5OigpPT5yfSk7dmFyIHIsbyxpPW4oNjc4KTshZnVuY3Rpb24oZSl7ZS5Xb3Jrc3BhY2U9XCJvcGVuZmluLXdvcmtzcGFjZVwiLGUuT2xkV29ya3NwYWNlPVwib3BlbmZpbi1icm93c2VyXCJ9KHJ8fChyPXt9KSksZnVuY3Rpb24oZSl7ZS5GaW5Qcm90b2NvbD1cImZpbi1wcm90b2NvbFwifShvfHwobz17fSkpO2NvbnN0IGE9e3V1aWQ6aS5BQn0sbD0oci5Xb3Jrc3BhY2UsZT0+e2lmKCFpLnNTKXRocm93IG5ldyBFcnJvcihcImdldEFwcGxpY2F0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGEgbm9uIE9wZW5GaW4gZW52LiBBdm9pZCB1c2luZyB0aGlzIGR1cmluZyBwcmUtcmVuZGVyaW5nLlwiKTtyZXR1cm4gZmluLkFwcGxpY2F0aW9uLndyYXBTeW5jKGUpfSkscz0oKT0+bChhKX0sMTE3OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7WjooKT0+aX0pO3ZhciByPW4oNjc4KTtjb25zdCBvPXIuQXgmJlwiY29tcGxldGVcIiE9PWRvY3VtZW50LnJlYWR5U3RhdGUmJm5ldyBQcm9taXNlKChlPT5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwicmVhZHlzdGF0ZWNoYW5nZVwiLCgoKT0+e1wiY29tcGxldGVcIj09PWRvY3VtZW50LnJlYWR5U3RhdGUmJmUoKX0pKSkpO2Z1bmN0aW9uIGkoZSl7bGV0IHQ7Y29uc3Qgbj1uZXcgU2V0O3JldHVybigpPT57aWYoIXIuc1MpdGhyb3cgbmV3IEVycm9yKFwiZ2V0Q2hhbm5lbENsaWVudCBjYW5ub3QgYmUgdXNlZCBvdXRzaWRlIGFuIE9wZW5GaW4gZW52LiBBdm9pZCB1c2luZyB0aGlzIG1ldGhvZCBkdXJpbmcgcHJlLXJlbmRlcmluZy5cIik7cmV0dXJuIHR8fCh0PShhc3luYygpPT57YXdhaXQgbztjb25zdCBpPXtjbGllbnRBUElWZXJzaW9uOnIudTB9LGE9YXdhaXQgZmluLkludGVyQXBwbGljYXRpb25CdXMuQ2hhbm5lbC5jb25uZWN0KGUse3BheWxvYWQ6aX0pO3JldHVybiBhLm9uRGlzY29ubmVjdGlvbigoYXN5bmMoKT0+e24uZm9yRWFjaCgoZT0+ZSgpKSksbi5jbGVhcigpLGNvbnNvbGUud2FybihgZGlzY29ubmVjdGVkIGZyb20gY2hhbm5lbCBwcm92aWRlciAke2V9YCksdD12b2lkIDB9KSksYX0pKCkudGhlbigoZT0+KGUuYWRkRGlzY29ubmVjdGlvbkxpc3RlbmVyPWU9PntuLmFkZChlKX0sZSkpKS5jYXRjaCgobj0+e3Rocm93IHQ9dm9pZCAwLG5ldyBFcnJvcihgZmFpbGVkIHRvIGNvbm5lY3QgdG8gY2hhbm5lbCBwcm92aWRlciAke2V9OiAke259YCl9KSkpLHR9fX0sNjc4OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcjtuLmQodCx7QUI6KCk9PnMsQXg6KCk9PmksR1g6KCk9PmYsWks6KCk9PnUsX1Y6KCk9PmEsYVc6KCk9PmQsb0M6KCk9PmMscng6KCk9Pmgsc1M6KCk9Pm8sdTA6KCk9PnZ9KSxmdW5jdGlvbihlKXtlLkxvY2FsPVwibG9jYWxcIixlLkRldj1cImRldlwiLGUuU3RhZ2luZz1cInN0YWdpbmdcIixlLlByb2Q9XCJwcm9kXCJ9KHJ8fChyPXt9KSk7Y29uc3Qgbz1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZcInVuZGVmaW5lZFwiIT10eXBlb2YgZmluLGk9KFwidW5kZWZpbmVkXCI9PXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzLmVudj8uSkVTVF9XT1JLRVJfSUQsXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyksYT1pJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgaW5kZXhlZERCLGw9aT93aW5kb3cub3JpZ2luOnIuTG9jYWwscz1vJiZmaW4ubWUudXVpZCxjPW8mJmZpbi5tZS5uYW1lLHU9KG8mJmZpbi5tZS5lbnRpdHlUeXBlLFwicHJvZFwiPT09ci5Mb2NhbCksZj0oci5EZXYsci5TdGFnaW5nLHIuUHJvZCxcImZpbnM6Ly9zeXN0ZW0tYXBwcy93b3Jrc3BhY2VcIiksZD1cImh0dHBzOi8vd29ya3NwYWNlLm9wZW5maW4uY28vd29ya3NwYWNlLzE0LjAuMjIvYXBwLmpzb25cIixwPWU9PmUuc3RhcnRzV2l0aChcImh0dHA6Ly9cIil8fGUuc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpP2U6bCtlLGg9KHAoXCJodHRwczovL3dvcmtzcGFjZS5vcGVuZmluLmNvL3dvcmtzcGFjZS8xNC4wLjIyXCIpLHAoXCJodHRwczovL3dvcmtzcGFjZS5vcGVuZmluLmNvL3dvcmtzcGFjZS8xNC4wLjIyXCIpKSx2PShcInVuZGVmaW5lZFwiIT10eXBlb2YgV09SS1NQQUNFX0RPQ1NfUExBVEZPUk1fVVJMJiZwKFdPUktTUEFDRV9ET0NTX1BMQVRGT1JNX1VSTCksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFdPUktTUEFDRV9ET0NTX0NMSUVOVF9VUkwmJnAoV09SS1NQQUNFX0RPQ1NfQ0xJRU5UX1VSTCksXCIxNC4wLjIyXCIpO1widW5kZWZpbmVkXCIhPXR5cGVvZiBXT1JLU1BBQ0VfQlVJTERfU0hBJiZXT1JLU1BBQ0VfQlVJTERfU0hBfSwzMTE6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtDJDooKT0+cn0pO24oNjc4KSxuKDEyMSk7Y29uc3Qgcj1lPT57Y29uc3QgdD1bXTtyZXR1cm4oZSYmQXJyYXkuaXNBcnJheShlKT9lOltdKS5mb3JFYWNoKChlPT57aWYoXCJjb21wb25lbnRcIj09PWUudHlwZSlyZXR1cm4gdC5wdXNoKGUuY29tcG9uZW50U3RhdGUpO2NvbnN0IG49cihlLmNvbnRlbnQpO3QucHVzaCguLi5uKX0pKSx0fTtuZXcgTWFwfSw2MTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHI7bi5kKHQse1o6KCk9Pm99KSxmdW5jdGlvbihlKXtlLkN1cnJlbnRXb3Jrc3BhY2VJZD1cImN1cnJlbnRXb3Jrc3BhY2VJZFwiLGUuTGFzdEZvY3VzZWRCcm93c2VyV2luZG93PVwibGFzdEZvY3VzZWRCcm93c2VyV2luZG93XCIsZS5NYWNoaW5lTmFtZT1cIm1hY2hpbmVOYW1lXCIsZS5OZXdUYWJQYWdlTGF5b3V0PVwiTmV3VGFiUGFnZUxheW91dFwiLGUuTmV3VGFiUGFnZVNvcnQ9XCJOZXdUYWJQYWdlU29ydFwiLGUuRG9ja1Bvc2l0aW9uPVwiRG9ja1Bvc2l0aW9uXCIsZS5TZWxlY3RlZENvbG9yU2NoZW1lPVwiU2VsZWN0ZWRDb2xvclNjaGVtZVwiLGUuSGFzTW92ZWRTdG9yZT1cIkhhc01vdmVkU3RvcmVcIn0ocnx8KHI9e30pKTtjb25zdCBvPXJ9LDcyODooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse0w6KCk9Pm8scjooKT0+aX0pO3ZhciByPW4oNjc4KTtjb25zdCBvPShlLHQpPT57bG9jYWxTdG9yYWdlLnNldEl0ZW0oYCR7ci5BQn0tJHtlfWAsdCl9LGk9ZT0+bG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7ci5BQn0tJHtlfWApfSw1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcjtuLmQodCx7WlA6KCk9PmwsZGU6KCk9Pml9KSxmdW5jdGlvbihlKXtlLkhvbWU9XCIvaG9tZS9cIixlLkhvbWVTZWFyY2g9XCIvaG9tZS8/ZGVlcGxpbms9c2VhcmNoXCIsZS5Ib21lUGFnZXNSZW5hbWU9XCIvaG9tZS9wYWdlcy9yZW5hbWUvXCIsZS5Eb2NrPVwiL2RvY2svXCIsZS5Ccm93c2VyPVwiL2Jyb3dzZXIvXCIsZS5Ccm93c2VyUG9wdXBNZW51PVwiL2Jyb3dzZXIvcG9wdXAtbWVudS9cIixlLlByb3ZpZGVyPVwiL3Byb3ZpZGVyL1wiLGUuQnJvd3NlclBvcHVwTWVudVNoYXJlUGFnZT1cIi9icm93c2VyL3BvcHVwLW1lbnUvc2hhcmUtcGFnZS9cIixlLkJyb3dzZXJQb3B1cE1lbnVTYXZlTW9kYWw9XCIvYnJvd3Nlci9wb3B1cC1tZW51L3NhdmUtbW9kYWwvXCIsZS5Ccm93c2VyUG9wdXBNZW51TGF5b3V0cz1cIi9icm93c2VyL3BvcHVwLW1lbnUvbGF5b3V0cy9sYXlvdXRzL1wiLGUuQnJvd3NlclBvcHVwTWVudUNvbG9yTGlua2luZz1cIi9icm93c2VyL3BvcHVwLW1lbnUvY29sb3ItbGlua2luZy9jb2xvci1saW5raW5nL1wiLGUuQnJvd3NlckluZGljYXRvcj1cIi9icm93c2VyL2luZGljYXRvci9cIixlLlJlc3BvbnNlTW9kYWw9XCIvYnJvd3Nlci9wb3B1cC1tZW51L3Jlc3BvbnNlLW1vZGFsL1wiLGUuRG9jcz1cIi9wcm92aWRlci9kb2NzL1wiLGUuU3RvcmVmcm9udD1cIi9zdG9yZWZyb250L1wiLGUuRGVwcmVjYXRlZEFsZXJ0PVwiL3Byb3ZpZGVyL2RlcHJlY2F0ZWQtYWxlcnQvXCIsZS5BbmFseXRpY3M9XCIvcHJvdmlkZXIvYW5hbHl0aWNzL1wifShyfHwocj17fSkpO2NvbnN0IG89XCIvbWljcm9zb2Z0LTM2NS1pbnRlZ3JhdGlvbi1hc3NldHMvXCIsaT17SWNvbk9wZW5GaW5Mb2dvOlwiL2ljb25zL29wZW5maW5sb2dvLnN2Z1wiLEljb25GaWx0ZXI6XCIvaWNvbnMvZmlsdGVyLnN2Z1wiLExpZ2h0U3RvcmVmcm9udDpcIi9pY29ucy9saWdodHN0b3JlZnJvbnQucG5nXCIsRGFya1N0b3JlZnJvbnQ6XCIvaWNvbnMvZGFya3N0b3JlZnJvbnQucG5nXCIsQ2FsbEljb25MaWdodDpcIi9pY29ucy9jYWxsLWljb24tbGlnaHQuc3ZnXCIsQ2FsbEljb25EYXJrOlwiL2ljb25zL2NhbGwtaWNvbi1kYXJrLnN2Z1wiLENoYXRJY29uTGlnaHQ6XCIvaWNvbnMvY2hhdC1pY29uLWxpZ2h0LnN2Z1wiLENoYXRJY29uRGFyazpcIi9pY29ucy9jaGF0LWljb24tZGFyay5zdmdcIixNZXNzYWdlSWNvbkxpZ2h0OlwiL2ljb25zL21lc3NhZ2UtaWNvbi1saWdodC5zdmdcIixNZXNzYWdlSWNvbkRhcms6XCIvaWNvbnMvbWVzc2FnZS1pY29uLWRhcmsuc3ZnXCIsTWljcm9zb2Z0MzY1QXNzZXRzOntNaWNyb3NvZnQzNjVEb2N1bWVudEljb246YCR7b31taWNyb3NvZnQtMzY1LWRvY3VtZW50LWljb24uc3ZnYCxNaWNyb3NvZnQzNjVFeGNlbEljb246YCR7b31taWNyb3NvZnQtMzY1LWV4Y2VsLWljb24uc3ZnYCxNaWNyb3NvZnQzNjVQb3dlcnBvaW50SWNvbjpgJHtvfW1pY3Jvc29mdC0zNjUtcG93ZXJwb2ludC1pY29uLnN2Z2AsTWljcm9zb2Z0MzY1T3V0bG9va0ljb246YCR7b31taWNyb3NvZnQtMzY1LW91dGxvb2staWNvbi5zdmdgLE1pY3Jvc29mdDM2NVRlYW1zSWNvbjpgJHtvfW1pY3Jvc29mdC0zNjUtdGVhbXMtaWNvbi5zdmdgLE1pY3Jvc29mdDM2NUljb246YCR7b31taWNyb3NvZnQtMzY1LWljb24uc3ZnYCxQREZGaWxlSWNvbjpgJHtvfXBkZi1maWxlLWljb24uc3ZnYH19O3ZhciBhOyFmdW5jdGlvbihlKXtlLlNlYXJjaD1cInNlYXJjaFwifShhfHwoYT17fSkpO2NvbnN0IGw9cn0sNjUwOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7SzM6KCk9Pml9KTt2YXIgcjtuKDY3OCk7IWZ1bmN0aW9uKGUpe2UuSG9tZT1cIi9ob21lXCIsZS5Ccm93c2VyPVwiL2Jyb3dzZXJcIixlLlByb3ZpZGVyPVwiL3Byb3ZpZGVyXCIsZS5TdG9yZWZyb250PVwiL3N0b3JlZnJvbnRcIixlLkRvY2s9XCIvZG9ja1wifShyfHwocj17fSkpO2NvbnN0IG89XCIvd29ya3NwYWNlLzE0LjAuMjJcIjtmdW5jdGlvbiBpKGUpe3JldHVybiBvK2V9fSw5MTI6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24oMzExKSxuKDYxKX0sNzcyOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7V246KCk9PkIsY2s6KCk9PkgsZDk6KCk9PlZ9KTt2YXIgcj1uKDY3OCksbz1uKDEyMSksaT1uKDEwMCk7bigzNzgpO3ZhciBhPW4oODA2KTt2YXIgbD1uKDUpLHM9bigxMjcpO24oNDM4KTt2YXIgYz1uKDMxMSk7Y29uc3QgdT1hc3luYygpPT57Y29uc3QgZT1hd2FpdCgwLG8uR1ApKCk7cmV0dXJuKGF3YWl0IFByb21pc2UuYWxsKGUubWFwKChhc3luYyBlPT57dHJ5e3JldHVybihhc3luYyBlPT57Y29uc3QgdD1hd2FpdCgwLHMuRG0pKGUpO3JldHVybiBhd2FpdCB0LmRpc3BhdGNoKHMueXouR2V0UGFnZXMpfSkoZS5pZGVudGl0eSl9Y2F0Y2godCl7SlNPTi5zdHJpbmdpZnkoZS5pZGVudGl0eSk7Y29uc3Qgbj1hd2FpdCBlLmdldE9wdGlvbnMoKTtyZXR1cm4gbi53b3Jrc3BhY2VQbGF0Zm9ybT8ucGFnZXN8fFtdfX0pKSkpLnJlZHVjZSgoKGUsdCk9PmUuY29uY2F0KHQpKSxbXSl9O25ldyBNYXA7dmFyIGY7IWZ1bmN0aW9uKGUpe2UuRVJST1I9XCJlcnJvclwiLGUuU1VDQ0VTUz1cInN1Y2Nlc3NcIixlLklORk89XCJpbmZvXCJ9KGZ8fChmPXt9KSk7Y29uc3QgZD0oKGUsdCk9Pntjb25zdCBuPWU7cmV0dXJuIG4ud29ya3NwYWNlUGxhdGZvcm18fChuLndvcmtzcGFjZVBsYXRmb3JtPXt9KSxuLndvcmtzcGFjZVBsYXRmb3JtLl9pbnRlcm5hbERlZmVyU2hvd09wdGlvbnM9e3NldEFzRm9yZWdyb3VuZDohIXQsZGVmZXJTaG93RW5hYmxlZDohMCxhdXRvU2hvdzpuLndvcmtzcGFjZVBsYXRmb3JtPy5faW50ZXJuYWxBdXRvU2hvd3x8bi53b3Jrc3BhY2VQbGF0Zm9ybT8uX2ludGVybmFsRGVmZXJTaG93T3B0aW9ucz8uYXV0b1Nob3d8fHZvaWQgMD09PW4uYXV0b1Nob3d8fG4uYXV0b1Nob3d9LG4uYXV0b1Nob3c9ITEsbn0pKHthbHdheXNPblRvcDohMCxhdXRvU2hvdzohMSxmcmFtZTohMSxyZXNpemFibGU6ITEsc2hvd1Rhc2tiYXJJY29uOiExfSk7dmFyIHA7IWZ1bmN0aW9uKGUpe2UuTG9ja2VkPVwiTG9ja0Nsb3NlZEljb25cIixlLlVubG9ja2VkPVwiTG9ja09wZW4xSWNvblwifShwfHwocD17fSkpOyFmdW5jdGlvbihlPWQpe2NvbnN0IHQ9bmV3IE1hcH0oKTt2YXIgaD1uKDYxKSx2PW4oNzI4KTtuKDY1MCk7Y29uc3QgZz0oZSx0PTApPT57bGV0IG4scixvPSExO2NvbnN0IGk9YXN5bmMgcj0+e2NvbnN0IGE9YXdhaXQgZSguLi5yKTtpZihvKXthd2FpdCBuZXcgUHJvbWlzZSgoZT0+c2V0VGltZW91dChlLHQpKSk7Y29uc3QgZT1uO3JldHVybiBuPXZvaWQgMCxvPSExLGkoZSl9cmV0dXJuIGF9O3JldHVybiguLi5lKT0+KHI/KG89ITAsbj1lKTpyPWkoZSkuY2F0Y2goKGU9Pnt0aHJvdyBjb25zb2xlLmVycm9yKFwibWFrZURlYm91bmNlZEZ1bmNcIixlKSxlfSkpLmZpbmFsbHkoKCgpPT57cj12b2lkIDB9KSkscil9O2Z1bmN0aW9uIEMoZSx0KXtyZXR1cm4gYXN5bmMobiwuLi5yKT0+e2UuaGFzKG4pJiZlLmdldChuKS5mb3JFYWNoKChlPT5lKC4uLnIpKSksdCYmYXdhaXQgdCh7ZXZlbnQ6bixwYXlsb2FkOnJ9KX19ZnVuY3Rpb24gbShlLHQpe3JldHVybiB0JiZ0KCh0PT57Y29uc3R7ZXZlbnQ6bixwYXlsb2FkOnJ9PXQ7ZS5oYXMobikmJmUuZ2V0KG4pLmZvckVhY2goKGU9PmUoLi4ucikpKX0pKSwodCxuKT0+e2UuaGFzKHQpfHxlLnNldCh0LG5ldyBTZXQpLGUuZ2V0KHQpLmFkZChuKX19ZnVuY3Rpb24geShlKXtyZXR1cm4odCxuKT0+e2UuaGFzKHQpfHxlLnNldCh0LG5ldyBTZXQpO2NvbnN0IHI9ZS5nZXQodCksbz0oLi4uZSk9PntuKC4uLmUpLHIuZGVsZXRlKG8pfTtyLmFkZChvKX19ZnVuY3Rpb24gdyhlKXtyZXR1cm4odCxuKT0+e2UuaGFzKHQpJiZlLmdldCh0KS5kZWxldGUobil9fW4oNjUpO28uSUEuQnJvd3Nlck1lbnU7KGZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IE1hcDtDKHQsKHQ9PnIuc1MmJmZpbi5JbnRlckFwcGxpY2F0aW9uQnVzLnB1Ymxpc2goZSx0KSkpLG0odCwodD0+ci5zUyYmZmluLkludGVyQXBwbGljYXRpb25CdXMuc3Vic2NyaWJlKHt1dWlkOmZpbi5tZS51dWlkfSxlLHQpKSksdyh0KSx5KHQpfSkoXCJ3aW5kb3cubWVudVwiKSxnKCgoKT0+KDAsYS5EOSkoKS5nZXRDaGlsZFdpbmRvd3MoKSksNTAwKTtuZXcgTWFwO3ZhciBiPW4oMTk4KSx4PW4ubihiKTtjb25zdCBfPWU9PmAke2UubmFtZX1gLEw9YXN5bmMoKT0+e2NvbnN0IGU9YXdhaXQgdSgpLHQ9bmV3IFNldDtyZXR1cm4gZS5mb3JFYWNoKChlPT57Wy4uLigwLGMuQyQpKGUubGF5b3V0LmNvbnRlbnQpLC4uLihlLnBhbmVsc3x8W10pLm1hcCgoZT0+ZS52aWV3T3B0aW9ucykpXS5mb3JFYWNoKChlPT57Y29uc3Qgbj1fKGUpO24mJnQuYWRkKG4pfSkpfSkpLHR9O3goKSgoKCk9PmFzeW5jIGZ1bmN0aW9uKCl7Y29uc3QgZT1hd2FpdCBMKCksdD0oMCxvLmxRKSgpLG49KGF3YWl0IHQuZ2V0Q3VycmVudFZpZXdzKCkpLmZpbHRlcigoKHtpZGVudGl0eTp0fSk9PiFlLmhhcyhfKHQpKSkpO24ubGVuZ3RoJiZzZXRUaW1lb3V0KChhc3luYygpPT57Y29uc3QgZT1hd2FpdCBMKCk7bi5mb3JFYWNoKCgoe2lkZW50aXR5OnR9KT0+e2NvbnN0IG49Xyh0KTtlLmhhcyhuKXx8ZmluLlZpZXcud3JhcFN5bmModCkuZGVzdHJveSgpfSkpfSksMjUwMCl9KCkuY2F0Y2goKGU9PmNvbnNvbGUuZGVidWcoXCJlcnJvciBpbiBzY2hlZHVsZVZpZXdDbGVhbnVwXCIsZSkpKSksNWUzLHtsZWFkaW5nOiExLHRyYWlsaW5nOiEwfSk7eCgpKChhc3luYygpPT57Y29uc3QgZT1hd2FpdCBmaW4uUGxhdGZvcm0uZ2V0Q3VycmVudFN5bmMoKS5BcHBsaWNhdGlvbi5nZXRDaGlsZFdpbmRvd3MoKTtsZXQgdCxuPSExO2Zvcihjb25zdCByIG9mIGUpaWYoci5pZGVudGl0eS5uYW1lPT09by5JQS5Ccm93c2VyTWVudT90PXI6YXdhaXQoMCxvLkIpKHIuaWRlbnRpdHkpJiYobj0hMCksbilicmVhazshbiYmdCYmdC5jbG9zZSgpfSksMTAwLHtsZWFkaW5nOiExLHRyYWlsaW5nOiEwfSk7big5MTIpO2Z1bmN0aW9uIE8oZSl7cmV0dXJuIG5ldyBQcm9taXNlKCgodCxuKT0+e2Uub25jb21wbGV0ZT1lLm9uc3VjY2Vzcz0oKT0+dChlLnJlc3VsdCksZS5vbmFib3J0PWUub25lcnJvcj0oKT0+bihlLmVycm9yKX0pKX1mdW5jdGlvbiBFKGUsdCl7Y29uc3Qgbj1pbmRleGVkREIub3BlbihlKTtuLm9udXBncmFkZW5lZWRlZD0oKT0+bi5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUodCk7Y29uc3Qgcj1PKG4pO3JldHVybihlLG4pPT5yLnRoZW4oKHI9Pm4oci50cmFuc2FjdGlvbih0LGUpLm9iamVjdFN0b3JlKHQpKSkpfWxldCBTO2Z1bmN0aW9uIE0oKXtyZXR1cm4gU3x8KFM9RShcImtleXZhbC1zdG9yZVwiLFwia2V5dmFsXCIpKSxTfWZ1bmN0aW9uIGooZSx0KXtyZXR1cm4gZS5vcGVuQ3Vyc29yKCkub25zdWNjZXNzPWZ1bmN0aW9uKCl7dGhpcy5yZXN1bHQmJih0KHRoaXMucmVzdWx0KSx0aGlzLnJlc3VsdC5jb250aW51ZSgpKX0sTyhlLnRyYW5zYWN0aW9uKX1jb25zdCBrPWFzeW5jKGUsdCxuKT0+e2NvbnN0IHI9di5yKGguWi5IYXNNb3ZlZFN0b3JlKSxvPXI/SlNPTi5wYXJzZShyKTp7fTtpZihvJiZvW25dKXJldHVybjtvW25dPSEwLHYuTChoLlouSGFzTW92ZWRTdG9yZSxKU09OLnN0cmluZ2lmeShvKSk7Y29uc3QgaT1hd2FpdCBmdW5jdGlvbihlPU0oKSl7cmV0dXJuIGUoXCJyZWFkb25seVwiLCh0PT57aWYodC5nZXRBbGwmJnQuZ2V0QWxsS2V5cylyZXR1cm4gUHJvbWlzZS5hbGwoW08odC5nZXRBbGxLZXlzKCkpLE8odC5nZXRBbGwoKSldKS50aGVuKCgoW2UsdF0pPT5lLm1hcCgoKGUsbik9PltlLHRbbl1dKSkpKTtjb25zdCBuPVtdO3JldHVybiBlKFwicmVhZG9ubHlcIiwoZT0+aihlLChlPT5uLnB1c2goW2Uua2V5LGUudmFsdWVdKSkpLnRoZW4oKCgpPT5uKSkpKX0pKX0oZSk7YXdhaXQgZnVuY3Rpb24oZSx0PU0oKSl7cmV0dXJuIHQoXCJyZWFkd3JpdGVcIiwodD0+KGUuZm9yRWFjaCgoZT0+dC5wdXQoZVsxXSxlWzBdKSkpLE8odC50cmFuc2FjdGlvbikpKSl9KGksdCl9LFI9KGUsdCk9PkUoZStcIi1cIitmaW4ubWUudXVpZCx0KSxQPShlLHQpPT57Y29uc3Qgbj1SKGUsdCkscj1FKGUsdCk7cmV0dXJuIGsocixuLGUpLG59O3IuX1YmJnIuc1MmJlAoXCJvcGVuZmluLWhvbWUtcGFnZXNcIixcInBhZ2VzXCIpO3ZhciBBOyFmdW5jdGlvbihlKXtlLkxhYmVsPVwibm9ybWFsXCIsZS5TZXBhcmF0b3I9XCJzZXBhcmF0b3JcIixlLlN1Ym1lbnU9XCJzdWJtZW51XCIsZS5DaGVja2JveD1cImNoZWNrYm94XCJ9KEF8fChBPXt9KSk7QS5TZXBhcmF0b3I7big0MjApLG4oMzM3KTtBLkxhYmVsLGkud2guQ2xvc2VXaW5kb3csQS5MYWJlbCxpLndoLk9wZW5TdG9yZWZyb250LEEuTGFiZWwsaS53aC5RdWl0LEEuTGFiZWwsaS53aC5OZXdXaW5kb3csQS5MYWJlbCxpLndoLlNhdmVQYWdlLEEuTGFiZWwsaS53aC5TYXZlUGFnZUFzLEEuTGFiZWwsaS53aC5SZXN0b3JlQ2hhbmdlcyxBLkxhYmVsLGkud2guU2F2ZVdvcmtzcGFjZSxBLkxhYmVsLGkud2guU2F2ZVdvcmtzcGFjZUFzLEEuTGFiZWwsaS53aC5SZW5hbWVXb3Jrc3BhY2U7ci5fViYmci5zUyYmUihcImRvY2stcHJvdmlkZXItY29uZmlnc1wiLFwiZG9jay1wcm92aWRlci1jb25maWdzXCIpO24oNzA1KTtyLl9WJiZyLnNTJiZQKFwib3BlbmZpbi13b3Jrc3BhY2UtcGxhdGZvcm0td29ya3NwYWNlc1wiLFwid29ya3NwYWNlc1wiKTtuKDU2NCk7big0OTUpO3IucngsbC5aUC5Ccm93c2VyLHIucng7dmFyIEk7IWZ1bmN0aW9uKGUpe2UuQnJvd3Nlcj1cIkJyb3dzZXJcIixlLkRvY2s9XCJEb2NrXCIsZS5Ib21lPVwiSG9tZVwiLGUuTm90aWZpY2F0aW9uPVwiTm90aWZpY2F0aW9uXCIsZS5TdG9yZWZyb250PVwiU3RvcmVmcm9udFwiLGUuUGxhdGZvcm09XCJQbGF0Zm9ybVwiLGUuVGhlbWluZz1cIlRoZW1pbmdcIixlLk1pY3JvZmxvdz1cIk1pY3JvZmxvd1wifShJfHwoST17fSkpO2NvbnN0IFQ9YXN5bmMoZSx0KT0+e2NvbnN0IG49e2FwaVZlcnNpb246dC5hcGlWZXJzaW9ufHxyLnUwLGNvbXBvbmVudE5hbWU6ZSxjb21wb25lbnRWZXJzaW9uOnQuY29tcG9uZW50VmVyc2lvbnx8ci51MCxhbGxvd2VkOnQuYWxsb3dlZCxyZWplY3Rpb25Db2RlOnQucmVqZWN0aW9uQ29kZX07ZmluLlN5c3RlbS5yZWdpc3RlclVzYWdlKHt0eXBlOlwid29ya3NwYWNlLWxpY2Vuc2luZ1wiLGRhdGE6bn0pfTtjb25zdCBIPWU9PntvLk9JLnV1aWQ9PT1vLkdpLnV1aWQmJm8uT0kubmFtZT09PW8uR2kubmFtZXx8VChJLkhvbWUsZSl9LFY9ZT0+e1QoSS5TdG9yZWZyb250LGUpfSxCPWU9PntUKEkuRG9jayxlKX07dmFyIEQ7IWZ1bmN0aW9uKGUpe2UuQnJvd3Nlcj1cIkJyb3dzZXJcIixlLkRvY2s9XCJEb2NrXCIsZS5Ib21lPVwiSG9tZVwiLGUuTm90aWZpY2F0aW9uPVwiTm90aWZpY2F0aW9uXCIsZS5TdG9yZWZyb250PVwiU3RvcmVmcm9udFwiLGUuUGxhdGZvcm09XCJQbGF0Zm9ybVwiLGUuVGhlbWluZz1cIlRoZW1pbmdcIixlLkludGVyb3A9XCJJbnRlcm9wXCJ9KER8fChEPXt9KSk7bmV3IE1hcH0sMTIxOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7QjooKT0+ZixHUDooKT0+ZCxHaTooKT0+bCxJQTooKT0+cixKVjooKT0+cCxPSTooKT0+YyxpVzooKT0+dSxsUTooKT0+c30pO3ZhciByLG89big4MDYpLGk9big2NzgpOyFmdW5jdGlvbihlKXtlLkhvbWU9XCJvcGVuZmluLWhvbWVcIixlLkRvY2s9XCJvcGVuZmluLWRvY2tcIixlLlN0b3JlZnJvbnQ9XCJvcGVuZmluLXN0b3JlZnJvbnRcIixlLkhvbWVJbnRlcm5hbD1cIm9wZW5maW4taG9tZS1pbnRlcm5hbFwiLGUuQnJvd3Nlck1lbnU9XCJvcGVuZmluLWJyb3dzZXItbWVudVwiLGUuQnJvd3NlckluZGljYXRvcj1cIm9wZW5maW4tYnJvd3Nlci1pbmRpY2F0b3JcIixlLkJyb3dzZXJXaW5kb3c9XCJpbnRlcm5hbC1nZW5lcmF0ZWQtd2luZG93XCIsZS5DbGFzc2ljV2luZG93PVwiaW50ZXJuYWwtZ2VuZXJhdGVkLWNsYXNzaWMtd2luZG93XCJ9KHJ8fChyPXt9KSk7ZnVuY3Rpb24gYShlKXtpZighaS5zUyl0aHJvdyBuZXcgRXJyb3IoXCJnZXRPRldpbmRvdyBjYW4gb25seSBiZSB1c2VkIGluIGFuIE9wZW5GaW4gZW52LiBBdm9pZCBjYWxsaW5nIHRoaXMgbWV0aG9kIGR1cmluZyBwcmUtcmVuZGVyaW5nLlwiKTtyZXR1cm4gZmluLldpbmRvdy53cmFwU3luYyhlKX1jb25zdCBsPXtuYW1lOmkub0MsdXVpZDppLkFCfTtmdW5jdGlvbiBzKCl7cmV0dXJuIGEobCl9Y29uc3QgYz17bmFtZTpyLkhvbWUsdXVpZDpvLnE5LldvcmtzcGFjZX0sdT0oci5Eb2NrLG8ucTkuV29ya3NwYWNlLHIuU3RvcmVmcm9udCxvLnE5LldvcmtzcGFjZSx7bmFtZTpvLnE5LldvcmtzcGFjZSx1dWlkOm8ucTkuV29ya3NwYWNlfSk7Y29uc3QgZj1hc3luYyBlPT57aWYoIWUubmFtZS5zdGFydHNXaXRoKHIuQnJvd3NlcldpbmRvdykpcmV0dXJuITE7Y29uc3QgdD1hd2FpdCBmaW4uV2luZG93LndyYXBTeW5jKHtuYW1lOmUubmFtZSx1dWlkOmUudXVpZD8/ZmluLm1lLnV1aWR9KS5nZXRPcHRpb25zKCk7cmV0dXJuISF0LndvcmtzcGFjZVBsYXRmb3JtPy5wYWdlc307YXN5bmMgZnVuY3Rpb24gZCgpe2NvbnN0IGU9YXdhaXQgZmluLkFwcGxpY2F0aW9uLmdldEN1cnJlbnRTeW5jKCkuZ2V0Q2hpbGRXaW5kb3dzKCksdD1hd2FpdCBQcm9taXNlLmFsbChlLm1hcCgoYXN5bmMgZT0+ZihlLmlkZW50aXR5KSkpKTtyZXR1cm4gZS5maWx0ZXIoKChlLG4pPT50W25dKSl9Y29uc3QgcD1lPT5hKGUpLmdldE9wdGlvbnMoKS50aGVuKCgoKT0+ITApKS5jYXRjaCgoKCk9PiExKSl9fSx0PXt9O2Z1bmN0aW9uIG4ocil7dmFyIG89dFtyXTtpZih2b2lkIDAhPT1vKXJldHVybiBvLmV4cG9ydHM7dmFyIGk9dFtyXT17ZXhwb3J0czp7fX07cmV0dXJuIGVbcl0oaSxpLmV4cG9ydHMsbiksaS5leHBvcnRzfW4ubj1lPT57dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlPygpPT5lLmRlZmF1bHQ6KCk9PmU7cmV0dXJuIG4uZCh0LHthOnR9KSx0fSxuLmQ9KGUsdCk9Pntmb3IodmFyIHIgaW4gdCluLm8odCxyKSYmIW4ubyhlLHIpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9LG4uZz1mdW5jdGlvbigpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBnbG9iYWxUaGlzKXJldHVybiBnbG9iYWxUaGlzO3RyeXtyZXR1cm4gdGhpc3x8bmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKX1jYXRjaChlKXtpZihcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93KXJldHVybiB3aW5kb3d9fSgpLG4ubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCksbi5yPWU9PntcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSxuLm5jPXZvaWQgMDt2YXIgcj17fTsoKCk9PntcInVzZSBzdHJpY3RcIjtuLnIociksbi5kKHIse0FjdGlvblRyaWdnZXI6KCk9PlVlLnAsQXBwTWFuaWZlc3RUeXBlOigpPT56ZS5MLEJ1dHRvblN0eWxlOigpPT5XZS5aSixDTElBY3Rpb246KCk9PkIuUHQsQ0xJRmlsdGVyT3B0aW9uVHlwZTooKT0+Qi5lbCxDTElUZW1wbGF0ZTooKT0+Qi55VyxDb250YWluZXJUZW1wbGF0ZUZyYWdtZW50TmFtZXM6KCk9PldlLnA2LERvY2s6KCk9PmUsRG9ja0J1dHRvbk5hbWVzOigpPT51LnYsSG9tZTooKT0+YixJbnRlZ3JhdGlvbnM6KCk9PnQsTGVnYWN5OigpPT5vLFByZXNlbnRhdGlvblRlbXBsYXRlRnJhZ21lbnROYW1lczooKT0+V2UuR28sU2VhcmNoVGFnQmFja2dyb3VuZDooKT0+VWUudyxTdG9yZWZyb250OigpPT5OZSxTdG9yZWZyb250VGVtcGxhdGU6KCk9PnplLlQsVGVtcGxhdGVGcmFnbWVudFR5cGVzOigpPT5XZS5iSX0pO3ZhciBlPXt9O24ucihlKSxuLmQoZSx7RG9ja0J1dHRvbk5hbWVzOigpPT51LnYsZGVyZWdpc3RlcjooKT0+dixtaW5pbWl6ZTooKT0+ZyxyZWdpc3RlcjooKT0+aCxzaG93OigpPT5DfSk7dmFyIHQ9e307bi5yKHQpLG4uZCh0LHtNaWNyb3NvZnQzNjVXb3JrZmxvd0ludGVncmF0aW9uOigpPT5EZX0pO3ZhciBvPXt9O24ucihvKSxuLmQobyx7Z2V0UGFnZXM6KCk9PiRlLGdldFdvcmtzcGFjZXM6KCk9PkZlfSk7dmFyIGk9big2NzgpLGE9big3NzIpLGw9bigxNTApLHM9big0MzgpLGM9big4MiksdT1uKDQyNyk7bGV0IGYsZDtjb25zdCBwPShlPVtdKT0+e2NvbnN0IHQ9ZS5maWx0ZXIoKGU9PiEhZS5pZCkpLm1hcCgoZT0+ZS5pZCkpO2lmKG5ldyBTZXQodCkuc2l6ZSE9PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIkRvY2sgcHJvdmlkZXIgYnV0dG9ucyBtdXN0IGhhdmUgdW5pcXVlIGlkZW50aWZpZXJzIGlmIHNwZWNpZmllZC5cIil9LGg9ZT0+KGY9bmV3IFByb21pc2UoKGFzeW5jKHQsbik9Pnt0cnl7KGU9PntlLndvcmtzcGFjZUNvbXBvbmVudHMmJiFBcnJheS5pc0FycmF5KGUud29ya3NwYWNlQ29tcG9uZW50cykmJmNvbnNvbGUud2FybihcIlVzaW5nIHRoZSBgV29ya3NwYWNlQ29tcG9uZW50QnV0dG9uT3B0aW9uc2AgdHlwZSB0byBjb25maWd1cmUgdGhlIFdvcmtzcGFjZSBDb21wb25lbnRzIEJ1dHRvbnMgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBgV29ya3NwYWNlQnV0dG9uc0NvbmZpZ2AgaW5zdGVhZC5cIil9KShlKSxwKGUuYnV0dG9ucyk7Y29uc3Qgbj1hd2FpdChhc3luYyBlPT57YXdhaXQoMCxzLkhoKShmaW4ubWUuaWRlbnRpdHkpO2NvbnN0IHQ9YXdhaXQoMCxsLnhaKSgpO2lmKGQpdGhyb3cgbmV3IEVycm9yKFwiRXJyb3IgdXNpbmcgYERvY2sucmVnaXN0ZXJgLiBBIERvY2sgcHJvdmlkZXIgZm9yIHRoaXMgV29ya3NwYWNlIFBsYXRmb3JtIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC4gQ2FsbCBgRG9jay5kZXJlZ2lzdGVyYCBiZWZvcmUgY2FsbGluZyBgRG9jay5yZWdpc3RlcmAgYWdhaW4uXCIpO3JldHVybiBkPWUsZS5jbGllbnRBUElWZXJzaW9uPWkudTAsdC5kaXNwYXRjaChcInJlZ2lzdGVyLXByb3ZpZGVyXCIse3Byb3ZpZGVyVHlwZTpcImRvY2tcIixpbmZvOmV9KX0pKGUpOygwLGEuV24pKHthbGxvd2VkOiEwLGNvbXBvbmVudFZlcnNpb246bj8ud29ya3NwYWNlVmVyc2lvbn0pLG4/LndvcmtzcGFjZVZlcnNpb24saS51MCx0KHtjbGllbnRBUElWZXJzaW9uOmkudTAsd29ya3NwYWNlVmVyc2lvbjpuPy53b3Jrc3BhY2VWZXJzaW9uPz9cIlwiLHVwZGF0ZURvY2tQcm92aWRlckNvbmZpZzphc3luYyB0PT57aWYoIWQpdGhyb3cgbmV3IEVycm9yKFwiRXJyb3IgdXNpbmcgYERvY2sudXBkYXRlRG9ja1Byb3ZpZGVyQ29uZmlnYC4gRG9jayBwcm92aWRlciBpcyBub3QgcmVnaXN0ZXJlZC4gTWFrZSBzdXJlIHRvIGNhbGwgYERvY2sucmVnaXN0ZXJgIGZpcnN0LlwiKTtwKHQuYnV0dG9ucyk7Y29uc3Qgbj1hd2FpdCgwLGwueFopKCk7YXdhaXQgbi5kaXNwYXRjaChcInVwZGF0ZS1wcm92aWRlclwiLHtwcm92aWRlclR5cGU6XCJkb2NrXCIscHJvdmlkZXI6ey4uLmUsd29ya3NwYWNlQ29tcG9uZW50czp0LndvcmtzcGFjZUNvbXBvbmVudHMsYnV0dG9uczp0LmJ1dHRvbnMsdGl0bGU6dC50aXRsZSxpY29uOnQuaWNvbixkaXNhYmxlVXNlclJlYXJyYW5nZW1lbnQ6dC5kaXNhYmxlVXNlclJlYXJyYW5nZW1lbnQsaWQ6ZS5pZH19KX19KX1jYXRjaChlKXsoMCxhLlduKSh7YWxsb3dlZDohMSxyZWplY3Rpb25Db2RlOmUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6XCJ1bmtub3duXCJ9KSxuKGUpLGY9dm9pZCAwfX0pKSxmKSx2PWFzeW5jKCk9PntpZihhd2FpdCBmLCFkKXRocm93IG5ldyBFcnJvcihcIkVycm9yIHVzaW5nIGBEb2NrLmRlcmVnaXN0ZXJgLiBEb2NrIHByb3ZpZGVyIGlzIG5vdCByZWdpc3RlcmVkLiBDYWxsIGBEb2NrLnJlZ2lzdGVyYCBiZWZvcmUgY2FsbGluZyBgRG9jay5kZXJlZ2lzdGVyYC5cIik7Y29uc3QgZT1hd2FpdCgwLGwueFopKCk7YXdhaXQgZS5kaXNwYXRjaChcImRlcmVnaXN0ZXItcHJvdmlkZXJcIix7cHJvdmlkZXJUeXBlOlwiZG9ja1wiLGlkOmQuaWR9KSxkPXZvaWQgMCxmPXZvaWQgMH0sZz1hc3luYygpPT57YXdhaXQgZixhd2FpdCgwLGwuYUIpKCksYXdhaXQoMCxjLlI4KShcImRvY2tcIil9LEM9YXN5bmMoKT0+e2F3YWl0IGYsYXdhaXQoMCxsLmFCKSgpLGF3YWl0KDAsYy5YXykoXCJkb2NrXCIpfTt2YXIgbSx5LHcsYj1uKDI2MSkseD1mdW5jdGlvbihlLHQsbixyLG8pe2lmKFwibVwiPT09cil0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO2lmKFwiYVwiPT09ciYmIW8pdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P2UhPT10fHwhbzohdC5oYXMoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO3JldHVyblwiYVwiPT09cj9vLmNhbGwoZSxuKTpvP28udmFsdWU9bjp0LnNldChlLG4pLG59LF89ZnVuY3Rpb24oZSx0LG4scil7aWYoXCJhXCI9PT1uJiYhcil0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/ZSE9PXR8fCFyOiF0LmhhcyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO3JldHVyblwibVwiPT09bj9yOlwiYVwiPT09bj9yLmNhbGwoZSk6cj9yLnZhbHVlOnQuZ2V0KGUpfTttPW5ldyBXZWFrTWFwLHk9bmV3IFdlYWtNYXAsdz1uZXcgV2Vha01hcDtjb25zdCBMPWNsYXNze2NvbnN0cnVjdG9yKGUpe20uc2V0KHRoaXMsdm9pZCAwKSx5LnNldCh0aGlzLHZvaWQgMCksdy5zZXQodGhpcyx2b2lkIDApLHgodGhpcyxtLGUsXCJmXCIpLHgodGhpcyx5LG5ldyBNYXAsXCJmXCIpLHgodGhpcyx3LFtdLFwiZlwiKX1nZXQoZSl7aWYoXyh0aGlzLHksXCJmXCIpLmhhcyhlKSlyZXR1cm4gdGhpcy51cGRhdGVRdWV1ZShlKSxfKHRoaXMseSxcImZcIikuZ2V0KGUpfWhhcyhlKXtyZXR1cm4gXyh0aGlzLHksXCJmXCIpLmhhcyhlKX1wdXQoZSx0KXtpZihfKHRoaXMseSxcImZcIikuaGFzKGUpKV8odGhpcyx5LFwiZlwiKS5zZXQoZSx0KSx0aGlzLnVwZGF0ZVF1ZXVlKGUpO2Vsc2V7aWYoXyh0aGlzLHcsXCJmXCIpLmxlbmd0aD09PV8odGhpcyxtLFwiZlwiKSl7Y29uc3QgZT1fKHRoaXMsdyxcImZcIikuc2hpZnQoKTtlJiZfKHRoaXMseSxcImZcIikuZGVsZXRlKGUpfV8odGhpcyx5LFwiZlwiKS5zZXQoZSx0KSxfKHRoaXMsdyxcImZcIikucHVzaChlKX19dXBkYXRlUXVldWUoZSl7Y29uc3QgdD1fKHRoaXMsdyxcImZcIikuaW5kZXhPZihlKTstMSE9PXQmJihfKHRoaXMsdyxcImZcIikuc3BsaWNlKHQsMSksXyh0aGlzLHcsXCJmXCIpLnB1c2goZSkpfX07ZnVuY3Rpb24gTyhlKXtyZXR1cm4gZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJiFBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIEUoZSwuLi50KXtpZighdC5sZW5ndGgpcmV0dXJuIGU7Y29uc3Qgbj10LnNoaWZ0KCk7cmV0dXJuIE8oZSkmJk8obikmJk9iamVjdC5lbnRyaWVzKG4pLmZvckVhY2goKChbdCxuXSk9PntpZihPKG4pKXJldHVybiBlW3RdfHwoZVt0XT17fSksRShlW3RdLG4pO2VbdF09bn0pKSxFKGUsLi4udCl9dmFyIFMsTSxqLGssUixQPW4oNSksQT1uKDY1MCksST1mdW5jdGlvbihlLHQsbixyLG8pe2lmKFwibVwiPT09cil0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO2lmKFwiYVwiPT09ciYmIW8pdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P2UhPT10fHwhbzohdC5oYXMoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO3JldHVyblwiYVwiPT09cj9vLmNhbGwoZSxuKTpvP28udmFsdWU9bjp0LnNldChlLG4pLG59LFQ9ZnVuY3Rpb24oZSx0LG4scil7aWYoXCJhXCI9PT1uJiYhcil0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/ZSE9PXR8fCFyOiF0LmhhcyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO3JldHVyblwibVwiPT09bj9yOlwiYVwiPT09bj9yLmNhbGwoZSk6cj9yLnZhbHVlOnQuZ2V0KGUpfTtNPW5ldyBXZWFrTWFwLGo9bmV3IFdlYWtNYXAsaz1uZXcgV2Vha01hcCxTPW5ldyBXZWFrU2V0LFI9ZnVuY3Rpb24oKXtjb25zdCBlPUFycmF5LmZyb20oVCh0aGlzLE0sXCJmXCIpLmVudHJpZXMoKSkucmVkdWNlKCgoZSx0KT0+IWV8fHRbMV0udGltZXN0YW1wPGVbMV0udGltZXN0YW1wP3Q6ZSksbnVsbCk7cmV0dXJuIGU/ZVswXTpudWxsfTtjb25zdCBIPWNsYXNze2NvbnN0cnVjdG9yKGU9M2U1LHQ9MTAwKXtTLmFkZCh0aGlzKSxNLnNldCh0aGlzLHZvaWQgMCksai5zZXQodGhpcyx2b2lkIDApLGsuc2V0KHRoaXMsdm9pZCAwKSxJKHRoaXMsTSxuZXcgTWFwLFwiZlwiKSxJKHRoaXMsaixlLFwiZlwiKSxJKHRoaXMsayx0LFwiZlwiKX1nZXQoZSl7Y29uc3QgdD1UKHRoaXMsTSxcImZcIikuZ2V0KGUpO2lmKCF0KXJldHVybiBudWxsO3JldHVybiBEYXRlLm5vdygpLXQudGltZXN0YW1wPFQodGhpcyxqLFwiZlwiKT90LnZhbHVlOihUKHRoaXMsTSxcImZcIikuZGVsZXRlKGUpLG51bGwpfXB1dChlLHQpe2lmKFQodGhpcyxNLFwiZlwiKS5zaXplPj1UKHRoaXMsayxcImZcIikpe2NvbnN0IGU9VCh0aGlzLFMsXCJtXCIsUikuY2FsbCh0aGlzKTtudWxsIT1lJiZUKHRoaXMsTSxcImZcIikuZGVsZXRlKGUpfVQodGhpcyxNLFwiZlwiKS5zZXQoZSx7dmFsdWU6dCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfXJlbW92ZShlKXtUKHRoaXMsTSxcImZcIikuZGVsZXRlKGUpfWNsZWFyKCl7VCh0aGlzLE0sXCJmXCIpLmNsZWFyKCl9fTt2YXIgVixCPW4oNzU4KSxEPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKFwiYVwiPT09biYmIXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P2UhPT10fHwhcjohdC5oYXMoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtyZXR1cm5cIm1cIj09PW4/cjpcImFcIj09PW4/ci5jYWxsKGUpOnI/ci52YWx1ZTp0LmdldChlKX07Y29uc3QgWj17fTtjbGFzcyAke2NvbnN0cnVjdG9yKGUpe1Yuc2V0KHRoaXMsbmV3IFNldCksdGhpcy5faW5pdGlhbGl6ZVdvcmtmbG93cz1hc3luYyhlPXRoaXMuY29uZmlnKT0+e2NvbnN0e3dvcmtmbG93czp0fT1lO2Zvcihjb25zdCBlIGluIHQpe2lmKCF0W2VdLmRpc2FibGVBdXRvSW5pdGlhbGl6ZSl0cnl7RCh0aGlzLFYsXCJmXCIpLmhhcyhlKT9jb25zb2xlLndhcm4oYFdvcmtmbG93ICR7ZX0gYWxyZWFkeSBpbml0aWFsaXplZC5gKTooRCh0aGlzLFYsXCJmXCIpLmFkZChlKSxhd2FpdCB0aGlzLmluaXRpYWxpemVXb3JrZmxvdyhlKSl9Y2F0Y2godCl7RCh0aGlzLFYsXCJmXCIpLmRlbGV0ZShlKSxjb25zb2xlLmVycm9yKGBFcnJvciByZWdpc3RlcmluZyAke2V9OmAsdCl9fX07Y29uc3QgdD1FKHt9LFosZSk7dGhpcy5jb25maWc9dH1hc3luYyBpbml0aWFsaXplV29ya2Zsb3coZSl7RCh0aGlzLFYsXCJmXCIpLmFkZChlKX19Vj1uZXcgV2Vha01hcDt2YXIgRj17ODc2OmU9Pntjb25zdHtBYm9ydENvbnRyb2xsZXI6dCxBYm9ydFNpZ25hbDpufT1cInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOlwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMDtlLmV4cG9ydHM9dCxlLmV4cG9ydHMuQWJvcnRTaWduYWw9bixlLmV4cG9ydHMuZGVmYXVsdD10fSw2MDooZSx0KT0+e3QuYnl0ZUxlbmd0aD1mdW5jdGlvbihlKXt2YXIgdD1sKGUpLG49dFswXSxyPXRbMV07cmV0dXJuIDMqKG4rcikvNC1yfSx0LnRvQnl0ZUFycmF5PWZ1bmN0aW9uKGUpe3ZhciB0LG4saT1sKGUpLGE9aVswXSxzPWlbMV0sYz1uZXcgbyhmdW5jdGlvbihlLHQsbil7cmV0dXJuIDMqKHQrbikvNC1ufSgwLGEscykpLHU9MCxmPXM+MD9hLTQ6YTtmb3Iobj0wO248ZjtuKz00KXQ9cltlLmNoYXJDb2RlQXQobildPDwxOHxyW2UuY2hhckNvZGVBdChuKzEpXTw8MTJ8cltlLmNoYXJDb2RlQXQobisyKV08PDZ8cltlLmNoYXJDb2RlQXQobiszKV0sY1t1KytdPXQ+PjE2JjI1NSxjW3UrK109dD4+OCYyNTUsY1t1KytdPTI1NSZ0O3JldHVybiAyPT09cyYmKHQ9cltlLmNoYXJDb2RlQXQobildPDwyfHJbZS5jaGFyQ29kZUF0KG4rMSldPj40LGNbdSsrXT0yNTUmdCksMT09PXMmJih0PXJbZS5jaGFyQ29kZUF0KG4pXTw8MTB8cltlLmNoYXJDb2RlQXQobisxKV08PDR8cltlLmNoYXJDb2RlQXQobisyKV0+PjIsY1t1KytdPXQ+PjgmMjU1LGNbdSsrXT0yNTUmdCksY30sdC5mcm9tQnl0ZUFycmF5PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPWUubGVuZ3RoLG89ciUzLGk9W10sYT0xNjM4MyxsPTAsYz1yLW87bDxjO2wrPWEpaS5wdXNoKHMoZSxsLGwrYT5jP2M6bCthKSk7cmV0dXJuIDE9PT1vPyh0PWVbci0xXSxpLnB1c2goblt0Pj4yXStuW3Q8PDQmNjNdK1wiPT1cIikpOjI9PT1vJiYodD0oZVtyLTJdPDw4KStlW3ItMV0saS5wdXNoKG5bdD4+MTBdK25bdD4+NCY2M10rblt0PDwyJjYzXStcIj1cIikpLGkuam9pbihcIlwiKX07Zm9yKHZhciBuPVtdLHI9W10sbz1cInVuZGVmaW5lZFwiIT10eXBlb2YgVWludDhBcnJheT9VaW50OEFycmF5OkFycmF5LGk9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCIsYT0wO2E8NjQ7KythKW5bYV09aVthXSxyW2kuY2hhckNvZGVBdChhKV09YTtmdW5jdGlvbiBsKGUpe3ZhciB0PWUubGVuZ3RoO2lmKHQlND4wKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDRcIik7dmFyIG49ZS5pbmRleE9mKFwiPVwiKTtyZXR1cm4tMT09PW4mJihuPXQpLFtuLG49PT10PzA6NC1uJTRdfWZ1bmN0aW9uIHMoZSx0LHIpe2Zvcih2YXIgbyxpLGE9W10sbD10O2w8cjtsKz0zKW89KGVbbF08PDE2JjE2NzExNjgwKSsoZVtsKzFdPDw4JjY1MjgwKSsoMjU1JmVbbCsyXSksYS5wdXNoKG5bKGk9byk+PjE4JjYzXStuW2k+PjEyJjYzXStuW2k+PjYmNjNdK25bNjMmaV0pO3JldHVybiBhLmpvaW4oXCJcIil9cltcIi1cIi5jaGFyQ29kZUF0KDApXT02MixyW1wiX1wiLmNoYXJDb2RlQXQoMCldPTYzfSw0ODU6KGUsdCxuKT0+e2NvbnN0IHI9big2MCksbz1uKDIxNSksaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbC5mb3I/U3ltYm9sLmZvcihcIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tXCIpOm51bGw7dC5CdWZmZXI9cyx0LlNsb3dCdWZmZXI9ZnVuY3Rpb24oZSl7cmV0dXJuK2UhPWUmJihlPTApLHMuYWxsb2MoK2UpfSx0LklOU1BFQ1RfTUFYX0JZVEVTPTUwO2NvbnN0IGE9MjE0NzQ4MzY0NztmdW5jdGlvbiBsKGUpe2lmKGU+YSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIFwiJytlKydcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKTtjb25zdCB0PW5ldyBVaW50OEFycmF5KGUpO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YodCxzLnByb3RvdHlwZSksdH1mdW5jdGlvbiBzKGUsdCxuKXtpZihcIm51bWJlclwiPT10eXBlb2YgZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwic3RyaW5nXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTtyZXR1cm4gZihlKX1yZXR1cm4gYyhlLHQsbil9ZnVuY3Rpb24gYyhlLHQsbil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQmJlwiXCIhPT10fHwodD1cInV0ZjhcIiksIXMuaXNFbmNvZGluZyh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5rbm93biBlbmNvZGluZzogXCIrdCk7Y29uc3Qgbj0wfHYoZSx0KTtsZXQgcj1sKG4pO2NvbnN0IG89ci53cml0ZShlLHQpO3JldHVybiBvIT09biYmKHI9ci5zbGljZSgwLG8pKSxyfShlLHQpO2lmKEFycmF5QnVmZmVyLmlzVmlldyhlKSlyZXR1cm4gZnVuY3Rpb24oZSl7aWYoWShlLFVpbnQ4QXJyYXkpKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KGUpO3JldHVybiBwKHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpfXJldHVybiBkKGUpfShlKTtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSBcIit0eXBlb2YgZSk7aWYoWShlLEFycmF5QnVmZmVyKXx8ZSYmWShlLmJ1ZmZlcixBcnJheUJ1ZmZlcikpcmV0dXJuIHAoZSx0LG4pO2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciYmKFkoZSxTaGFyZWRBcnJheUJ1ZmZlcil8fGUmJlkoZS5idWZmZXIsU2hhcmVkQXJyYXlCdWZmZXIpKSlyZXR1cm4gcChlLHQsbik7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwidmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTtjb25zdCByPWUudmFsdWVPZiYmZS52YWx1ZU9mKCk7aWYobnVsbCE9ciYmciE9PWUpcmV0dXJuIHMuZnJvbShyLHQsbik7Y29uc3Qgbz1mdW5jdGlvbihlKXtpZihzLmlzQnVmZmVyKGUpKXtjb25zdCB0PTB8aChlLmxlbmd0aCksbj1sKHQpO3JldHVybiAwPT09bi5sZW5ndGh8fGUuY29weShuLDAsMCx0KSxufXJldHVybiB2b2lkIDAhPT1lLmxlbmd0aD9cIm51bWJlclwiIT10eXBlb2YgZS5sZW5ndGh8fEsoZS5sZW5ndGgpP2woMCk6ZChlKTpcIkJ1ZmZlclwiPT09ZS50eXBlJiZBcnJheS5pc0FycmF5KGUuZGF0YSk/ZChlLmRhdGEpOnZvaWQgMH0oZSk7aWYobylyZXR1cm4gbztpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1TeW1ib2wudG9QcmltaXRpdmUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGVbU3ltYm9sLnRvUHJpbWl0aXZlXSlyZXR1cm4gcy5mcm9tKGVbU3ltYm9sLnRvUHJpbWl0aXZlXShcInN0cmluZ1wiKSx0LG4pO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSBcIit0eXBlb2YgZSl9ZnVuY3Rpb24gdShlKXtpZihcIm51bWJlclwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyJyk7aWYoZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInK2UrJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcInNpemVcIicpfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIHUoZSksbChlPDA/MDowfGgoZSkpfWZ1bmN0aW9uIGQoZSl7Y29uc3QgdD1lLmxlbmd0aDwwPzA6MHxoKGUubGVuZ3RoKSxuPWwodCk7Zm9yKGxldCByPTA7cjx0O3IrPTEpbltyXT0yNTUmZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBwKGUsdCxuKXtpZih0PDB8fGUuYnl0ZUxlbmd0aDx0KXRocm93IG5ldyBSYW5nZUVycm9yKCdcIm9mZnNldFwiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpO2lmKGUuYnl0ZUxlbmd0aDx0KyhufHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJsZW5ndGhcIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKTtsZXQgcjtyZXR1cm4gcj12b2lkIDA9PT10JiZ2b2lkIDA9PT1uP25ldyBVaW50OEFycmF5KGUpOnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkoZSx0KTpuZXcgVWludDhBcnJheShlLHQsbiksT2JqZWN0LnNldFByb3RvdHlwZU9mKHIscy5wcm90b3R5cGUpLHJ9ZnVuY3Rpb24gaChlKXtpZihlPj1hKXRocm93IG5ldyBSYW5nZUVycm9yKFwiQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSBzaXplOiAweFwiK2EudG9TdHJpbmcoMTYpK1wiIGJ5dGVzXCIpO3JldHVybiAwfGV9ZnVuY3Rpb24gdihlLHQpe2lmKHMuaXNCdWZmZXIoZSkpcmV0dXJuIGUubGVuZ3RoO2lmKEFycmF5QnVmZmVyLmlzVmlldyhlKXx8WShlLEFycmF5QnVmZmVyKSlyZXR1cm4gZS5ieXRlTGVuZ3RoO2lmKFwic3RyaW5nXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIG9yIEFycmF5QnVmZmVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIGUpO2NvbnN0IG49ZS5sZW5ndGgscj1hcmd1bWVudHMubGVuZ3RoPjImJiEwPT09YXJndW1lbnRzWzJdO2lmKCFyJiYwPT09bilyZXR1cm4gMDtsZXQgbz0hMTtmb3IoOzspc3dpdGNoKHQpe2Nhc2VcImFzY2lpXCI6Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuIG47Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cmV0dXJuIHooZSkubGVuZ3RoO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVybiAyKm47Y2FzZVwiaGV4XCI6cmV0dXJuIG4+Pj4xO2Nhc2VcImJhc2U2NFwiOnJldHVybiBHKGUpLmxlbmd0aDtkZWZhdWx0OmlmKG8pcmV0dXJuIHI/LTE6eihlKS5sZW5ndGg7dD0oXCJcIit0KS50b0xvd2VyQ2FzZSgpLG89ITB9fWZ1bmN0aW9uIGcoZSx0LG4pe2xldCByPSExO2lmKCh2b2lkIDA9PT10fHx0PDApJiYodD0wKSx0PnRoaXMubGVuZ3RoKXJldHVyblwiXCI7aWYoKHZvaWQgMD09PW58fG4+dGhpcy5sZW5ndGgpJiYobj10aGlzLmxlbmd0aCksbjw9MClyZXR1cm5cIlwiO2lmKChuPj4+PTApPD0odD4+Pj0wKSlyZXR1cm5cIlwiO2ZvcihlfHwoZT1cInV0ZjhcIik7Oylzd2l0Y2goZSl7Y2FzZVwiaGV4XCI6cmV0dXJuIGsodGhpcyx0LG4pO2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOnJldHVybiBFKHRoaXMsdCxuKTtjYXNlXCJhc2NpaVwiOnJldHVybiBNKHRoaXMsdCxuKTtjYXNlXCJsYXRpbjFcIjpjYXNlXCJiaW5hcnlcIjpyZXR1cm4gaih0aGlzLHQsbik7Y2FzZVwiYmFzZTY0XCI6cmV0dXJuIE8odGhpcyx0LG4pO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVybiBSKHRoaXMsdCxuKTtkZWZhdWx0OmlmKHIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK2UpO2U9KGUrXCJcIikudG9Mb3dlckNhc2UoKSxyPSEwfX1mdW5jdGlvbiBDKGUsdCxuKXtjb25zdCByPWVbdF07ZVt0XT1lW25dLGVbbl09cn1mdW5jdGlvbiBtKGUsdCxuLHIsbyl7aWYoMD09PWUubGVuZ3RoKXJldHVybi0xO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBuPyhyPW4sbj0wKTpuPjIxNDc0ODM2NDc/bj0yMTQ3NDgzNjQ3Om48LTIxNDc0ODM2NDgmJihuPS0yMTQ3NDgzNjQ4KSxLKG49K24pJiYobj1vPzA6ZS5sZW5ndGgtMSksbjwwJiYobj1lLmxlbmd0aCtuKSxuPj1lLmxlbmd0aCl7aWYobylyZXR1cm4tMTtuPWUubGVuZ3RoLTF9ZWxzZSBpZihuPDApe2lmKCFvKXJldHVybi0xO249MH1pZihcInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9cy5mcm9tKHQscikpLHMuaXNCdWZmZXIodCkpcmV0dXJuIDA9PT10Lmxlbmd0aD8tMTp5KGUsdCxuLHIsbyk7aWYoXCJudW1iZXJcIj09dHlwZW9mIHQpcmV0dXJuIHQmPTI1NSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP28/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUsdCxuKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGUsdCxuKTp5KGUsW3RdLG4scixvKTt0aHJvdyBuZXcgVHlwZUVycm9yKFwidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyXCIpfWZ1bmN0aW9uIHkoZSx0LG4scixvKXtsZXQgaSxhPTEsbD1lLmxlbmd0aCxzPXQubGVuZ3RoO2lmKHZvaWQgMCE9PXImJihcInVjczJcIj09PShyPVN0cmluZyhyKS50b0xvd2VyQ2FzZSgpKXx8XCJ1Y3MtMlwiPT09cnx8XCJ1dGYxNmxlXCI9PT1yfHxcInV0Zi0xNmxlXCI9PT1yKSl7aWYoZS5sZW5ndGg8Mnx8dC5sZW5ndGg8MilyZXR1cm4tMTthPTIsbC89MixzLz0yLG4vPTJ9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiAxPT09YT9lW3RdOmUucmVhZFVJbnQxNkJFKHQqYSl9aWYobyl7bGV0IHI9LTE7Zm9yKGk9bjtpPGw7aSsrKWlmKGMoZSxpKT09PWModCwtMT09PXI/MDppLXIpKXtpZigtMT09PXImJihyPWkpLGktcisxPT09cylyZXR1cm4gciphfWVsc2UtMSE9PXImJihpLT1pLXIpLHI9LTF9ZWxzZSBmb3IobitzPmwmJihuPWwtcyksaT1uO2k+PTA7aS0tKXtsZXQgbj0hMDtmb3IobGV0IHI9MDtyPHM7cisrKWlmKGMoZSxpK3IpIT09Yyh0LHIpKXtuPSExO2JyZWFrfWlmKG4pcmV0dXJuIGl9cmV0dXJuLTF9ZnVuY3Rpb24gdyhlLHQsbixyKXtuPU51bWJlcihuKXx8MDtjb25zdCBvPWUubGVuZ3RoLW47cj8ocj1OdW1iZXIocikpPm8mJihyPW8pOnI9bztjb25zdCBpPXQubGVuZ3RoO2xldCBhO2ZvcihyPmkvMiYmKHI9aS8yKSxhPTA7YTxyOysrYSl7Y29uc3Qgcj1wYXJzZUludCh0LnN1YnN0cigyKmEsMiksMTYpO2lmKEsocikpcmV0dXJuIGE7ZVtuK2FdPXJ9cmV0dXJuIGF9ZnVuY3Rpb24gYihlLHQsbixyKXtyZXR1cm4gcSh6KHQsZS5sZW5ndGgtbiksZSxuLHIpfWZ1bmN0aW9uIHgoZSx0LG4scil7cmV0dXJuIHEoZnVuY3Rpb24oZSl7Y29uc3QgdD1bXTtmb3IobGV0IG49MDtuPGUubGVuZ3RoOysrbil0LnB1c2goMjU1JmUuY2hhckNvZGVBdChuKSk7cmV0dXJuIHR9KHQpLGUsbixyKX1mdW5jdGlvbiBfKGUsdCxuLHIpe3JldHVybiBxKEcodCksZSxuLHIpfWZ1bmN0aW9uIEwoZSx0LG4scil7cmV0dXJuIHEoZnVuY3Rpb24oZSx0KXtsZXQgbixyLG87Y29uc3QgaT1bXTtmb3IobGV0IGE9MDthPGUubGVuZ3RoJiYhKCh0LT0yKTwwKTsrK2Epbj1lLmNoYXJDb2RlQXQoYSkscj1uPj44LG89biUyNTYsaS5wdXNoKG8pLGkucHVzaChyKTtyZXR1cm4gaX0odCxlLmxlbmd0aC1uKSxlLG4scil9ZnVuY3Rpb24gTyhlLHQsbil7cmV0dXJuIDA9PT10JiZuPT09ZS5sZW5ndGg/ci5mcm9tQnl0ZUFycmF5KGUpOnIuZnJvbUJ5dGVBcnJheShlLnNsaWNlKHQsbikpfWZ1bmN0aW9uIEUoZSx0LG4pe249TWF0aC5taW4oZS5sZW5ndGgsbik7Y29uc3Qgcj1bXTtsZXQgbz10O2Zvcig7bzxuOyl7Y29uc3QgdD1lW29dO2xldCBpPW51bGwsYT10PjIzOT80OnQ+MjIzPzM6dD4xOTE/MjoxO2lmKG8rYTw9bil7bGV0IG4scixsLHM7c3dpdGNoKGEpe2Nhc2UgMTp0PDEyOCYmKGk9dCk7YnJlYWs7Y2FzZSAyOm49ZVtvKzFdLDEyOD09KDE5MiZuKSYmKHM9KDMxJnQpPDw2fDYzJm4scz4xMjcmJihpPXMpKTticmVhaztjYXNlIDM6bj1lW28rMV0scj1lW28rMl0sMTI4PT0oMTkyJm4pJiYxMjg9PSgxOTImcikmJihzPSgxNSZ0KTw8MTJ8KDYzJm4pPDw2fDYzJnIscz4yMDQ3JiYoczw1NTI5Nnx8cz41NzM0MykmJihpPXMpKTticmVhaztjYXNlIDQ6bj1lW28rMV0scj1lW28rMl0sbD1lW28rM10sMTI4PT0oMTkyJm4pJiYxMjg9PSgxOTImcikmJjEyOD09KDE5MiZsKSYmKHM9KDE1JnQpPDwxOHwoNjMmbik8PDEyfCg2MyZyKTw8Nnw2MyZsLHM+NjU1MzUmJnM8MTExNDExMiYmKGk9cykpfX1udWxsPT09aT8oaT02NTUzMyxhPTEpOmk+NjU1MzUmJihpLT02NTUzNixyLnB1c2goaT4+PjEwJjEwMjN8NTUyOTYpLGk9NTYzMjB8MTAyMyZpKSxyLnB1c2goaSksbys9YX1yZXR1cm4gZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmxlbmd0aDtpZih0PD1TKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlKTtsZXQgbj1cIlwiLHI9MDtmb3IoO3I8dDspbis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZS5zbGljZShyLHIrPVMpKTtyZXR1cm4gbn0ocil9dC5rTWF4TGVuZ3RoPWEscy5UWVBFRF9BUlJBWV9TVVBQT1JUPWZ1bmN0aW9uKCl7dHJ5e2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoMSksdD17Zm9vOmZ1bmN0aW9uKCl7cmV0dXJuIDQyfX07cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZih0LFVpbnQ4QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KSw0Mj09PWUuZm9vKCl9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLHMuVFlQRURfQVJSQVlfU1VQUE9SVHx8XCJ1bmRlZmluZWRcIj09dHlwZW9mIGNvbnNvbGV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGNvbnNvbGUuZXJyb3J8fGNvbnNvbGUuZXJyb3IoXCJUaGlzIGJyb3dzZXIgbGFja3MgdHlwZWQgYXJyYXkgKFVpbnQ4QXJyYXkpIHN1cHBvcnQgd2hpY2ggaXMgcmVxdWlyZWQgYnkgYGJ1ZmZlcmAgdjUueC4gVXNlIGBidWZmZXJgIHY0LnggaWYgeW91IHJlcXVpcmUgb2xkIGJyb3dzZXIgc3VwcG9ydC5cIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHMucHJvdG90eXBlLFwicGFyZW50XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYocy5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5idWZmZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHMucHJvdG90eXBlLFwib2Zmc2V0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYocy5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5ieXRlT2Zmc2V0fX0pLHMucG9vbFNpemU9ODE5MixzLmZyb209ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBjKGUsdCxuKX0sT2JqZWN0LnNldFByb3RvdHlwZU9mKHMucHJvdG90eXBlLFVpbnQ4QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YocyxVaW50OEFycmF5KSxzLmFsbG9jPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiB1KGUpLGU8PTA/bChlKTp2b2lkIDAhPT10P1wic3RyaW5nXCI9PXR5cGVvZiBuP2woZSkuZmlsbCh0LG4pOmwoZSkuZmlsbCh0KTpsKGUpfShlLHQsbil9LHMuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGYoZSl9LHMuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGUpe3JldHVybiBmKGUpfSxzLmlzQnVmZmVyPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiYhMD09PWUuX2lzQnVmZmVyJiZlIT09cy5wcm90b3R5cGV9LHMuY29tcGFyZT1mdW5jdGlvbihlLHQpe2lmKFkoZSxVaW50OEFycmF5KSYmKGU9cy5mcm9tKGUsZS5vZmZzZXQsZS5ieXRlTGVuZ3RoKSksWSh0LFVpbnQ4QXJyYXkpJiYodD1zLmZyb20odCx0Lm9mZnNldCx0LmJ5dGVMZW5ndGgpKSwhcy5pc0J1ZmZlcihlKXx8IXMuaXNCdWZmZXIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiYnVmMVwiLCBcImJ1ZjJcIiBhcmd1bWVudHMgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheScpO2lmKGU9PT10KXJldHVybiAwO2xldCBuPWUubGVuZ3RoLHI9dC5sZW5ndGg7Zm9yKGxldCBvPTAsaT1NYXRoLm1pbihuLHIpO288aTsrK28paWYoZVtvXSE9PXRbb10pe249ZVtvXSxyPXRbb107YnJlYWt9cmV0dXJuIG48cj8tMTpyPG4/MTowfSxzLmlzRW5jb2Rpbmc9ZnVuY3Rpb24oZSl7c3dpdGNoKFN0cmluZyhlKS50b0xvd2VyQ2FzZSgpKXtjYXNlXCJoZXhcIjpjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpjYXNlXCJhc2NpaVwiOmNhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOmNhc2VcImJhc2U2NFwiOmNhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxzLmNvbmNhdD1mdW5jdGlvbihlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gcy5hbGxvYygwKTtsZXQgbjtpZih2b2lkIDA9PT10KWZvcih0PTAsbj0wO248ZS5sZW5ndGg7KytuKXQrPWVbbl0ubGVuZ3RoO2NvbnN0IHI9cy5hbGxvY1Vuc2FmZSh0KTtsZXQgbz0wO2ZvcihuPTA7bjxlLmxlbmd0aDsrK24pe2xldCB0PWVbbl07aWYoWSh0LFVpbnQ4QXJyYXkpKW8rdC5sZW5ndGg+ci5sZW5ndGg/KHMuaXNCdWZmZXIodCl8fCh0PXMuZnJvbSh0KSksdC5jb3B5KHIsbykpOlVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKHIsdCxvKTtlbHNle2lmKCFzLmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO3QuY29weShyLG8pfW8rPXQubGVuZ3RofXJldHVybiByfSxzLmJ5dGVMZW5ndGg9dixzLnByb3RvdHlwZS5faXNCdWZmZXI9ITAscy5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLmxlbmd0aDtpZihlJTIhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0c1wiKTtmb3IobGV0IHQ9MDt0PGU7dCs9MilDKHRoaXMsdCx0KzEpO3JldHVybiB0aGlzfSxzLnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMubGVuZ3RoO2lmKGUlNCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzXCIpO2ZvcihsZXQgdD0wO3Q8ZTt0Kz00KUModGhpcyx0LHQrMyksQyh0aGlzLHQrMSx0KzIpO3JldHVybiB0aGlzfSxzLnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMubGVuZ3RoO2lmKGUlOCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzXCIpO2ZvcihsZXQgdD0wO3Q8ZTt0Kz04KUModGhpcyx0LHQrNyksQyh0aGlzLHQrMSx0KzYpLEModGhpcyx0KzIsdCs1KSxDKHRoaXMsdCszLHQrNCk7cmV0dXJuIHRoaXN9LHMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLmxlbmd0aDtyZXR1cm4gMD09PWU/XCJcIjowPT09YXJndW1lbnRzLmxlbmd0aD9FKHRoaXMsMCxlKTpnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0scy5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmc9cy5wcm90b3R5cGUudG9TdHJpbmcscy5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKGUpe2lmKCFzLmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyXCIpO3JldHVybiB0aGlzPT09ZXx8MD09PXMuY29tcGFyZSh0aGlzLGUpfSxzLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7bGV0IGU9XCJcIjtjb25zdCBuPXQuSU5TUEVDVF9NQVhfQllURVM7cmV0dXJuIGU9dGhpcy50b1N0cmluZyhcImhleFwiLDAsbikucmVwbGFjZSgvKC57Mn0pL2csXCIkMSBcIikudHJpbSgpLHRoaXMubGVuZ3RoPm4mJihlKz1cIiAuLi4gXCIpLFwiPEJ1ZmZlciBcIitlK1wiPlwifSxpJiYocy5wcm90b3R5cGVbaV09cy5wcm90b3R5cGUuaW5zcGVjdCkscy5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbihlLHQsbixyLG8pe2lmKFkoZSxVaW50OEFycmF5KSYmKGU9cy5mcm9tKGUsZS5vZmZzZXQsZS5ieXRlTGVuZ3RoKSksIXMuaXNCdWZmZXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwidGFyZ2V0XCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheS4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBlKTtpZih2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1uJiYobj1lP2UubGVuZ3RoOjApLHZvaWQgMD09PXImJihyPTApLHZvaWQgMD09PW8mJihvPXRoaXMubGVuZ3RoKSx0PDB8fG4+ZS5sZW5ndGh8fHI8MHx8bz50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIm91dCBvZiByYW5nZSBpbmRleFwiKTtpZihyPj1vJiZ0Pj1uKXJldHVybiAwO2lmKHI+PW8pcmV0dXJuLTE7aWYodD49bilyZXR1cm4gMTtpZih0aGlzPT09ZSlyZXR1cm4gMDtsZXQgaT0obz4+Pj0wKS0ocj4+Pj0wKSxhPShuPj4+PTApLSh0Pj4+PTApO2NvbnN0IGw9TWF0aC5taW4oaSxhKSxjPXRoaXMuc2xpY2UocixvKSx1PWUuc2xpY2UodCxuKTtmb3IobGV0IGU9MDtlPGw7KytlKWlmKGNbZV0hPT11W2VdKXtpPWNbZV0sYT11W2VdO2JyZWFrfXJldHVybiBpPGE/LTE6YTxpPzE6MH0scy5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybi0xIT09dGhpcy5pbmRleE9mKGUsdCxuKX0scy5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG0odGhpcyxlLHQsbiwhMCl9LHMucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbSh0aGlzLGUsdCxuLCExKX0scy5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSx0LG4scil7aWYodm9pZCAwPT09dClyPVwidXRmOFwiLG49dGhpcy5sZW5ndGgsdD0wO2Vsc2UgaWYodm9pZCAwPT09biYmXCJzdHJpbmdcIj09dHlwZW9mIHQpcj10LG49dGhpcy5sZW5ndGgsdD0wO2Vsc2V7aWYoIWlzRmluaXRlKHQpKXRocm93IG5ldyBFcnJvcihcIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkXCIpO3Q+Pj49MCxpc0Zpbml0ZShuKT8obj4+Pj0wLHZvaWQgMD09PXImJihyPVwidXRmOFwiKSk6KHI9bixuPXZvaWQgMCl9Y29uc3Qgbz10aGlzLmxlbmd0aC10O2lmKCh2b2lkIDA9PT1ufHxuPm8pJiYobj1vKSxlLmxlbmd0aD4wJiYobjwwfHx0PDApfHx0PnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKFwiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHNcIik7cnx8KHI9XCJ1dGY4XCIpO2xldCBpPSExO2Zvcig7Oylzd2l0Y2gocil7Y2FzZVwiaGV4XCI6cmV0dXJuIHcodGhpcyxlLHQsbik7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cmV0dXJuIGIodGhpcyxlLHQsbik7Y2FzZVwiYXNjaWlcIjpjYXNlXCJsYXRpbjFcIjpjYXNlXCJiaW5hcnlcIjpyZXR1cm4geCh0aGlzLGUsdCxuKTtjYXNlXCJiYXNlNjRcIjpyZXR1cm4gXyh0aGlzLGUsdCxuKTtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4gTCh0aGlzLGUsdCxuKTtkZWZhdWx0OmlmKGkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK3IpO3I9KFwiXCIrcikudG9Mb3dlckNhc2UoKSxpPSEwfX0scy5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6XCJCdWZmZXJcIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O2NvbnN0IFM9NDA5NjtmdW5jdGlvbiBNKGUsdCxuKXtsZXQgcj1cIlwiO249TWF0aC5taW4oZS5sZW5ndGgsbik7Zm9yKGxldCBvPXQ7bzxuOysrbylyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZlW29dKTtyZXR1cm4gcn1mdW5jdGlvbiBqKGUsdCxuKXtsZXQgcj1cIlwiO249TWF0aC5taW4oZS5sZW5ndGgsbik7Zm9yKGxldCBvPXQ7bzxuOysrbylyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbb10pO3JldHVybiByfWZ1bmN0aW9uIGsoZSx0LG4pe2NvbnN0IHI9ZS5sZW5ndGg7KCF0fHx0PDApJiYodD0wKSwoIW58fG48MHx8bj5yKSYmKG49cik7bGV0IG89XCJcIjtmb3IobGV0IHI9dDtyPG47KytyKW8rPVhbZVtyXV07cmV0dXJuIG99ZnVuY3Rpb24gUihlLHQsbil7Y29uc3Qgcj1lLnNsaWNlKHQsbik7bGV0IG89XCJcIjtmb3IobGV0IGU9MDtlPHIubGVuZ3RoLTE7ZSs9MilvKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHJbZV0rMjU2KnJbZSsxXSk7cmV0dXJuIG99ZnVuY3Rpb24gUChlLHQsbil7aWYoZSUxIT0wfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJvZmZzZXQgaXMgbm90IHVpbnRcIik7aWYoZSt0Pm4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoXCIpfWZ1bmN0aW9uIEEoZSx0LG4scixvLGkpe2lmKCFzLmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpO2lmKHQ+b3x8dDxpKXRocm93IG5ldyBSYW5nZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKG4rcj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKX1mdW5jdGlvbiBJKGUsdCxuLHIsbyl7Rih0LHIsbyxlLG4sNyk7bGV0IGk9TnVtYmVyKHQmQmlnSW50KDQyOTQ5NjcyOTUpKTtlW24rK109aSxpPj49OCxlW24rK109aSxpPj49OCxlW24rK109aSxpPj49OCxlW24rK109aTtsZXQgYT1OdW1iZXIodD4+QmlnSW50KDMyKSZCaWdJbnQoNDI5NDk2NzI5NSkpO3JldHVybiBlW24rK109YSxhPj49OCxlW24rK109YSxhPj49OCxlW24rK109YSxhPj49OCxlW24rK109YSxufWZ1bmN0aW9uIFQoZSx0LG4scixvKXtGKHQscixvLGUsbiw3KTtsZXQgaT1OdW1iZXIodCZCaWdJbnQoNDI5NDk2NzI5NSkpO2Vbbis3XT1pLGk+Pj04LGVbbis2XT1pLGk+Pj04LGVbbis1XT1pLGk+Pj04LGVbbis0XT1pO2xldCBhPU51bWJlcih0Pj5CaWdJbnQoMzIpJkJpZ0ludCg0Mjk0OTY3Mjk1KSk7cmV0dXJuIGVbbiszXT1hLGE+Pj04LGVbbisyXT1hLGE+Pj04LGVbbisxXT1hLGE+Pj04LGVbbl09YSxuKzh9ZnVuY3Rpb24gSChlLHQsbixyLG8saSl7aWYobityPmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKFwiSW5kZXggb3V0IG9mIHJhbmdlXCIpO2lmKG48MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKX1mdW5jdGlvbiBWKGUsdCxuLHIsaSl7cmV0dXJuIHQ9K3Qsbj4+Pj0wLGl8fEgoZSwwLG4sNCksby53cml0ZShlLHQsbixyLDIzLDQpLG4rNH1mdW5jdGlvbiBCKGUsdCxuLHIsaSl7cmV0dXJuIHQ9K3Qsbj4+Pj0wLGl8fEgoZSwwLG4sOCksby53cml0ZShlLHQsbixyLDUyLDgpLG4rOH1zLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihlLHQpe2NvbnN0IG49dGhpcy5sZW5ndGg7KGU9fn5lKTwwPyhlKz1uKTwwJiYoZT0wKTplPm4mJihlPW4pLCh0PXZvaWQgMD09PXQ/bjp+fnQpPDA/KHQrPW4pPDAmJih0PTApOnQ+biYmKHQ9biksdDxlJiYodD1lKTtjb25zdCByPXRoaXMuc3ViYXJyYXkoZSx0KTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHIscy5wcm90b3R5cGUpLHJ9LHMucHJvdG90eXBlLnJlYWRVaW50TEU9cy5wcm90b3R5cGUucmVhZFVJbnRMRT1mdW5jdGlvbihlLHQsbil7ZT4+Pj0wLHQ+Pj49MCxufHxQKGUsdCx0aGlzLmxlbmd0aCk7bGV0IHI9dGhpc1tlXSxvPTEsaT0wO2Zvcig7KytpPHQmJihvKj0yNTYpOylyKz10aGlzW2UraV0qbztyZXR1cm4gcn0scy5wcm90b3R5cGUucmVhZFVpbnRCRT1zLnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGUsdCxuKXtlPj4+PTAsdD4+Pj0wLG58fFAoZSx0LHRoaXMubGVuZ3RoKTtsZXQgcj10aGlzW2UrLS10XSxvPTE7Zm9yKDt0PjAmJihvKj0yNTYpOylyKz10aGlzW2UrLS10XSpvO3JldHVybiByfSxzLnByb3RvdHlwZS5yZWFkVWludDg9cy5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU+Pj49MCx0fHxQKGUsMSx0aGlzLmxlbmd0aCksdGhpc1tlXX0scy5wcm90b3R5cGUucmVhZFVpbnQxNkxFPXMucHJvdG90eXBlLnJlYWRVSW50MTZMRT1mdW5jdGlvbihlLHQpe3JldHVybiBlPj4+PTAsdHx8UChlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fSxzLnByb3RvdHlwZS5yZWFkVWludDE2QkU9cy5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU+Pj49MCx0fHxQKGUsMix0aGlzLmxlbmd0aCksdGhpc1tlXTw8OHx0aGlzW2UrMV19LHMucHJvdG90eXBlLnJlYWRVaW50MzJMRT1zLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT4+Pj0wLHR8fFAoZSw0LHRoaXMubGVuZ3RoKSwodGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNikrMTY3NzcyMTYqdGhpc1tlKzNdfSxzLnByb3RvdHlwZS5yZWFkVWludDMyQkU9cy5wcm90b3R5cGUucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU+Pj49MCx0fHxQKGUsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tlXSsodGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdKX0scy5wcm90b3R5cGUucmVhZEJpZ1VJbnQ2NExFPUooKGZ1bmN0aW9uKGUpe04oZT4+Pj0wLFwib2Zmc2V0XCIpO2NvbnN0IHQ9dGhpc1tlXSxuPXRoaXNbZSs3XTt2b2lkIDAhPT10JiZ2b2lkIDAhPT1ufHxVKGUsdGhpcy5sZW5ndGgtOCk7Y29uc3Qgcj10KzI1Nip0aGlzWysrZV0rNjU1MzYqdGhpc1srK2VdK3RoaXNbKytlXSoyKioyNCxvPXRoaXNbKytlXSsyNTYqdGhpc1srK2VdKzY1NTM2KnRoaXNbKytlXStuKjIqKjI0O3JldHVybiBCaWdJbnQocikrKEJpZ0ludChvKTw8QmlnSW50KDMyKSl9KSkscy5wcm90b3R5cGUucmVhZEJpZ1VJbnQ2NEJFPUooKGZ1bmN0aW9uKGUpe04oZT4+Pj0wLFwib2Zmc2V0XCIpO2NvbnN0IHQ9dGhpc1tlXSxuPXRoaXNbZSs3XTt2b2lkIDAhPT10JiZ2b2lkIDAhPT1ufHxVKGUsdGhpcy5sZW5ndGgtOCk7Y29uc3Qgcj10KjIqKjI0KzY1NTM2KnRoaXNbKytlXSsyNTYqdGhpc1srK2VdK3RoaXNbKytlXSxvPXRoaXNbKytlXSoyKioyNCs2NTUzNip0aGlzWysrZV0rMjU2KnRoaXNbKytlXStuO3JldHVybihCaWdJbnQocik8PEJpZ0ludCgzMikpK0JpZ0ludChvKX0pKSxzLnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24oZSx0LG4pe2U+Pj49MCx0Pj4+PTAsbnx8UChlLHQsdGhpcy5sZW5ndGgpO2xldCByPXRoaXNbZV0sbz0xLGk9MDtmb3IoOysraTx0JiYobyo9MjU2KTspcis9dGhpc1tlK2ldKm87cmV0dXJuIG8qPTEyOCxyPj1vJiYoci09TWF0aC5wb3coMiw4KnQpKSxyfSxzLnByb3RvdHlwZS5yZWFkSW50QkU9ZnVuY3Rpb24oZSx0LG4pe2U+Pj49MCx0Pj4+PTAsbnx8UChlLHQsdGhpcy5sZW5ndGgpO2xldCByPXQsbz0xLGk9dGhpc1tlKy0tcl07Zm9yKDtyPjAmJihvKj0yNTYpOylpKz10aGlzW2UrLS1yXSpvO3JldHVybiBvKj0xMjgsaT49byYmKGktPU1hdGgucG93KDIsOCp0KSksaX0scy5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT4+Pj0wLHR8fFAoZSwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1tlXT8tMSooMjU1LXRoaXNbZV0rMSk6dGhpc1tlXX0scy5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24oZSx0KXtlPj4+PTAsdHx8UChlLDIsdGhpcy5sZW5ndGgpO2NvbnN0IG49dGhpc1tlXXx0aGlzW2UrMV08PDg7cmV0dXJuIDMyNzY4Jm4/NDI5NDkwMTc2MHxuOm59LHMucHJvdG90eXBlLnJlYWRJbnQxNkJFPWZ1bmN0aW9uKGUsdCl7ZT4+Pj0wLHR8fFAoZSwyLHRoaXMubGVuZ3RoKTtjb25zdCBuPXRoaXNbZSsxXXx0aGlzW2VdPDw4O3JldHVybiAzMjc2OCZuPzQyOTQ5MDE3NjB8bjpufSxzLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiBlPj4+PTAsdHx8UChlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTZ8dGhpc1tlKzNdPDwyNH0scy5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT4+Pj0wLHR8fFAoZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdPDwyNHx0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM119LHMucHJvdG90eXBlLnJlYWRCaWdJbnQ2NExFPUooKGZ1bmN0aW9uKGUpe04oZT4+Pj0wLFwib2Zmc2V0XCIpO2NvbnN0IHQ9dGhpc1tlXSxuPXRoaXNbZSs3XTt2b2lkIDAhPT10JiZ2b2lkIDAhPT1ufHxVKGUsdGhpcy5sZW5ndGgtOCk7Y29uc3Qgcj10aGlzW2UrNF0rMjU2KnRoaXNbZSs1XSs2NTUzNip0aGlzW2UrNl0rKG48PDI0KTtyZXR1cm4oQmlnSW50KHIpPDxCaWdJbnQoMzIpKStCaWdJbnQodCsyNTYqdGhpc1srK2VdKzY1NTM2KnRoaXNbKytlXSt0aGlzWysrZV0qMioqMjQpfSkpLHMucHJvdG90eXBlLnJlYWRCaWdJbnQ2NEJFPUooKGZ1bmN0aW9uKGUpe04oZT4+Pj0wLFwib2Zmc2V0XCIpO2NvbnN0IHQ9dGhpc1tlXSxuPXRoaXNbZSs3XTt2b2lkIDAhPT10JiZ2b2lkIDAhPT1ufHxVKGUsdGhpcy5sZW5ndGgtOCk7Y29uc3Qgcj0odDw8MjQpKzY1NTM2KnRoaXNbKytlXSsyNTYqdGhpc1srK2VdK3RoaXNbKytlXTtyZXR1cm4oQmlnSW50KHIpPDxCaWdJbnQoMzIpKStCaWdJbnQodGhpc1srK2VdKjIqKjI0KzY1NTM2KnRoaXNbKytlXSsyNTYqdGhpc1srK2VdK24pfSkpLHMucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU+Pj49MCx0fHxQKGUsNCx0aGlzLmxlbmd0aCksby5yZWFkKHRoaXMsZSwhMCwyMyw0KX0scy5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT4+Pj0wLHR8fFAoZSw0LHRoaXMubGVuZ3RoKSxvLnJlYWQodGhpcyxlLCExLDIzLDQpfSxzLnByb3RvdHlwZS5yZWFkRG91YmxlTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT4+Pj0wLHR8fFAoZSw4LHRoaXMubGVuZ3RoKSxvLnJlYWQodGhpcyxlLCEwLDUyLDgpfSxzLnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT4+Pj0wLHR8fFAoZSw4LHRoaXMubGVuZ3RoKSxvLnJlYWQodGhpcyxlLCExLDUyLDgpfSxzLnByb3RvdHlwZS53cml0ZVVpbnRMRT1zLnByb3RvdHlwZS53cml0ZVVJbnRMRT1mdW5jdGlvbihlLHQsbixyKXtlPStlLHQ+Pj49MCxuPj4+PTAscnx8QSh0aGlzLGUsdCxuLE1hdGgucG93KDIsOCpuKS0xLDApO2xldCBvPTEsaT0wO2Zvcih0aGlzW3RdPTI1NSZlOysraTxuJiYobyo9MjU2KTspdGhpc1t0K2ldPWUvbyYyNTU7cmV0dXJuIHQrbn0scy5wcm90b3R5cGUud3JpdGVVaW50QkU9cy5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oZSx0LG4scil7ZT0rZSx0Pj4+PTAsbj4+Pj0wLHJ8fEEodGhpcyxlLHQsbixNYXRoLnBvdygyLDgqbiktMSwwKTtsZXQgbz1uLTEsaT0xO2Zvcih0aGlzW3Qrb109MjU1JmU7LS1vPj0wJiYoaSo9MjU2KTspdGhpc1t0K29dPWUvaSYyNTU7cmV0dXJuIHQrbn0scy5wcm90b3R5cGUud3JpdGVVaW50OD1zLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0Pj4+PTAsbnx8QSh0aGlzLGUsdCwxLDI1NSwwKSx0aGlzW3RdPTI1NSZlLHQrMX0scy5wcm90b3R5cGUud3JpdGVVaW50MTZMRT1zLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0Pj4+PTAsbnx8QSh0aGlzLGUsdCwyLDY1NTM1LDApLHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44LHQrMn0scy5wcm90b3R5cGUud3JpdGVVaW50MTZCRT1zLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0Pj4+PTAsbnx8QSh0aGlzLGUsdCwyLDY1NTM1LDApLHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlLHQrMn0scy5wcm90b3R5cGUud3JpdGVVaW50MzJMRT1zLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0Pj4+PTAsbnx8QSh0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksdGhpc1t0KzNdPWU+Pj4yNCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCsxXT1lPj4+OCx0aGlzW3RdPTI1NSZlLHQrNH0scy5wcm90b3R5cGUud3JpdGVVaW50MzJCRT1zLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0Pj4+PTAsbnx8QSh0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksdGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlLHQrNH0scy5wcm90b3R5cGUud3JpdGVCaWdVSW50NjRMRT1KKChmdW5jdGlvbihlLHQ9MCl7cmV0dXJuIEkodGhpcyxlLHQsQmlnSW50KDApLEJpZ0ludChcIjB4ZmZmZmZmZmZmZmZmZmZmZlwiKSl9KSkscy5wcm90b3R5cGUud3JpdGVCaWdVSW50NjRCRT1KKChmdW5jdGlvbihlLHQ9MCl7cmV0dXJuIFQodGhpcyxlLHQsQmlnSW50KDApLEJpZ0ludChcIjB4ZmZmZmZmZmZmZmZmZmZmZlwiKSl9KSkscy5wcm90b3R5cGUud3JpdGVJbnRMRT1mdW5jdGlvbihlLHQsbixyKXtpZihlPStlLHQ+Pj49MCwhcil7Y29uc3Qgcj1NYXRoLnBvdygyLDgqbi0xKTtBKHRoaXMsZSx0LG4sci0xLC1yKX1sZXQgbz0wLGk9MSxhPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytvPG4mJihpKj0yNTYpOyllPDAmJjA9PT1hJiYwIT09dGhpc1t0K28tMV0mJihhPTEpLHRoaXNbdCtvXT0oZS9pPj4wKS1hJjI1NTtyZXR1cm4gdCtufSxzLnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9K2UsdD4+Pj0wLCFyKXtjb25zdCByPU1hdGgucG93KDIsOCpuLTEpO0EodGhpcyxlLHQsbixyLTEsLXIpfWxldCBvPW4tMSxpPTEsYT0wO2Zvcih0aGlzW3Qrb109MjU1JmU7LS1vPj0wJiYoaSo9MjU2KTspZTwwJiYwPT09YSYmMCE9PXRoaXNbdCtvKzFdJiYoYT0xKSx0aGlzW3Qrb109KGUvaT4+MCktYSYyNTU7cmV0dXJuIHQrbn0scy5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0Pj4+PTAsbnx8QSh0aGlzLGUsdCwxLDEyNywtMTI4KSxlPDAmJihlPTI1NStlKzEpLHRoaXNbdF09MjU1JmUsdCsxfSxzLnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHQ+Pj49MCxufHxBKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSx0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0KzJ9LHMucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9K2UsdD4+Pj0wLG58fEEodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlLHQrMn0scy5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0Pj4+PTAsbnx8QSh0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzNdPWU+Pj4yNCx0KzR9LHMucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9K2UsdD4+Pj0wLG58fEEodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxlPDAmJihlPTQyOTQ5NjcyOTUrZSsxKSx0aGlzW3RdPWU+Pj4yNCx0aGlzW3QrMV09ZT4+PjE2LHRoaXNbdCsyXT1lPj4+OCx0aGlzW3QrM109MjU1JmUsdCs0fSxzLnByb3RvdHlwZS53cml0ZUJpZ0ludDY0TEU9SigoZnVuY3Rpb24oZSx0PTApe3JldHVybiBJKHRoaXMsZSx0LC1CaWdJbnQoXCIweDgwMDAwMDAwMDAwMDAwMDBcIiksQmlnSW50KFwiMHg3ZmZmZmZmZmZmZmZmZmZmXCIpKX0pKSxzLnByb3RvdHlwZS53cml0ZUJpZ0ludDY0QkU9SigoZnVuY3Rpb24oZSx0PTApe3JldHVybiBUKHRoaXMsZSx0LC1CaWdJbnQoXCIweDgwMDAwMDAwMDAwMDAwMDBcIiksQmlnSW50KFwiMHg3ZmZmZmZmZmZmZmZmZmZmXCIpKX0pKSxzLnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBWKHRoaXMsZSx0LCEwLG4pfSxzLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBWKHRoaXMsZSx0LCExLG4pfSxzLnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gQih0aGlzLGUsdCwhMCxuKX0scy5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIEIodGhpcyxlLHQsITEsbil9LHMucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSx0LG4scil7aWYoIXMuaXNCdWZmZXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcImFyZ3VtZW50IHNob3VsZCBiZSBhIEJ1ZmZlclwiKTtpZihufHwobj0wKSxyfHwwPT09cnx8KHI9dGhpcy5sZW5ndGgpLHQ+PWUubGVuZ3RoJiYodD1lLmxlbmd0aCksdHx8KHQ9MCkscj4wJiZyPG4mJihyPW4pLHI9PT1uKXJldHVybiAwO2lmKDA9PT1lLmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAwO2lmKHQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHNcIik7aWYobjwwfHxuPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKTtpZihyPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kc1wiKTtyPnRoaXMubGVuZ3RoJiYocj10aGlzLmxlbmd0aCksZS5sZW5ndGgtdDxyLW4mJihyPWUubGVuZ3RoLXQrbik7Y29uc3Qgbz1yLW47cmV0dXJuIHRoaXM9PT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluP3RoaXMuY29weVdpdGhpbih0LG4scik6VWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoZSx0aGlzLnN1YmFycmF5KG4sciksdCksb30scy5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbihlLHQsbixyKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQ/KHI9dCx0PTAsbj10aGlzLmxlbmd0aCk6XCJzdHJpbmdcIj09dHlwZW9mIG4mJihyPW4sbj10aGlzLmxlbmd0aCksdm9pZCAwIT09ciYmXCJzdHJpbmdcIiE9dHlwZW9mIHIpdGhyb3cgbmV3IFR5cGVFcnJvcihcImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmdcIik7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHImJiFzLmlzRW5jb2RpbmcocikpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK3IpO2lmKDE9PT1lLmxlbmd0aCl7Y29uc3QgdD1lLmNoYXJDb2RlQXQoMCk7KFwidXRmOFwiPT09ciYmdDwxMjh8fFwibGF0aW4xXCI9PT1yKSYmKGU9dCl9fWVsc2VcIm51bWJlclwiPT10eXBlb2YgZT9lJj0yNTU6XCJib29sZWFuXCI9PXR5cGVvZiBlJiYoZT1OdW1iZXIoZSkpO2lmKHQ8MHx8dGhpcy5sZW5ndGg8dHx8dGhpcy5sZW5ndGg8bil0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIk91dCBvZiByYW5nZSBpbmRleFwiKTtpZihuPD10KXJldHVybiB0aGlzO2xldCBvO2lmKHQ+Pj49MCxuPXZvaWQgMD09PW4/dGhpcy5sZW5ndGg6bj4+PjAsZXx8KGU9MCksXCJudW1iZXJcIj09dHlwZW9mIGUpZm9yKG89dDtvPG47KytvKXRoaXNbb109ZTtlbHNle2NvbnN0IGk9cy5pc0J1ZmZlcihlKT9lOnMuZnJvbShlLHIpLGE9aS5sZW5ndGg7aWYoMD09PWEpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlIFwiJytlKydcIiBpcyBpbnZhbGlkIGZvciBhcmd1bWVudCBcInZhbHVlXCInKTtmb3Iobz0wO288bi10Oysrbyl0aGlzW28rdF09aVtvJWFdfXJldHVybiB0aGlzfTtjb25zdCBEPXt9O2Z1bmN0aW9uIFooZSx0LG4pe0RbZV09Y2xhc3MgZXh0ZW5kcyBue2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxcIm1lc3NhZ2VcIix7dmFsdWU6dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdGhpcy5uYW1lPWAke3RoaXMubmFtZX0gWyR7ZX1dYCx0aGlzLnN0YWNrLGRlbGV0ZSB0aGlzLm5hbWV9Z2V0IGNvZGUoKXtyZXR1cm4gZX1zZXQgY29kZShlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxcImNvZGVcIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6ZSx3cml0YWJsZTohMH0pfXRvU3RyaW5nKCl7cmV0dXJuYCR7dGhpcy5uYW1lfSBbJHtlfV06ICR7dGhpcy5tZXNzYWdlfWB9fX1mdW5jdGlvbiAkKGUpe2xldCB0PVwiXCIsbj1lLmxlbmd0aDtjb25zdCByPVwiLVwiPT09ZVswXT8xOjA7Zm9yKDtuPj1yKzQ7bi09Myl0PWBfJHtlLnNsaWNlKG4tMyxuKX0ke3R9YDtyZXR1cm5gJHtlLnNsaWNlKDAsbil9JHt0fWB9ZnVuY3Rpb24gRihlLHQsbixyLG8saSl7aWYoZT5ufHxlPHQpe2NvbnN0IHI9XCJiaWdpbnRcIj09dHlwZW9mIHQ/XCJuXCI6XCJcIjtsZXQgbzt0aHJvdyBvPWk+Mz8wPT09dHx8dD09PUJpZ0ludCgwKT9gPj0gMCR7cn0gYW5kIDwgMiR7cn0gKiogJHs4KihpKzEpfSR7cn1gOmA+PSAtKDIke3J9ICoqICR7OCooaSsxKS0xfSR7cn0pIGFuZCA8IDIgKiogJHs4KihpKzEpLTF9JHtyfWA6YD49ICR7dH0ke3J9IGFuZCA8PSAke259JHtyfWAsbmV3IEQuRVJSX09VVF9PRl9SQU5HRShcInZhbHVlXCIsbyxlKX0hZnVuY3Rpb24oZSx0LG4pe04odCxcIm9mZnNldFwiKSx2b2lkIDAhPT1lW3RdJiZ2b2lkIDAhPT1lW3Qrbl18fFUodCxlLmxlbmd0aC0obisxKSl9KHIsbyxpKX1mdW5jdGlvbiBOKGUsdCl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEQuRVJSX0lOVkFMSURfQVJHX1RZUEUodCxcIm51bWJlclwiLGUpfWZ1bmN0aW9uIFUoZSx0LG4pe2lmKE1hdGguZmxvb3IoZSkhPT1lKXRocm93IE4oZSxuKSxuZXcgRC5FUlJfT1VUX09GX1JBTkdFKG58fFwib2Zmc2V0XCIsXCJhbiBpbnRlZ2VyXCIsZSk7aWYodDwwKXRocm93IG5ldyBELkVSUl9CVUZGRVJfT1VUX09GX0JPVU5EUzt0aHJvdyBuZXcgRC5FUlJfT1VUX09GX1JBTkdFKG58fFwib2Zmc2V0XCIsYD49ICR7bj8xOjB9IGFuZCA8PSAke3R9YCxlKX1aKFwiRVJSX0JVRkZFUl9PVVRfT0ZfQk9VTkRTXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlP2Ake2V9IGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kc2A6XCJBdHRlbXB0IHRvIGFjY2VzcyBtZW1vcnkgb3V0c2lkZSBidWZmZXIgYm91bmRzXCJ9KSxSYW5nZUVycm9yKSxaKFwiRVJSX0lOVkFMSURfQVJHX1RZUEVcIiwoZnVuY3Rpb24oZSx0KXtyZXR1cm5gVGhlIFwiJHtlfVwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2YgdH1gfSksVHlwZUVycm9yKSxaKFwiRVJSX09VVF9PRl9SQU5HRVwiLChmdW5jdGlvbihlLHQsbil7bGV0IHI9YFRoZSB2YWx1ZSBvZiBcIiR7ZX1cIiBpcyBvdXQgb2YgcmFuZ2UuYCxvPW47cmV0dXJuIE51bWJlci5pc0ludGVnZXIobikmJk1hdGguYWJzKG4pPjIqKjMyP289JChTdHJpbmcobikpOlwiYmlnaW50XCI9PXR5cGVvZiBuJiYobz1TdHJpbmcobiksKG4+QmlnSW50KDIpKipCaWdJbnQoMzIpfHxuPC0oQmlnSW50KDIpKipCaWdJbnQoMzIpKSkmJihvPSQobykpLG8rPVwiblwiKSxyKz1gIEl0IG11c3QgYmUgJHt0fS4gUmVjZWl2ZWQgJHtvfWAscn0pLFJhbmdlRXJyb3IpO2NvbnN0IFc9L1teKy8wLTlBLVphLXotX10vZztmdW5jdGlvbiB6KGUsdCl7bGV0IG47dD10fHwxLzA7Y29uc3Qgcj1lLmxlbmd0aDtsZXQgbz1udWxsO2NvbnN0IGk9W107Zm9yKGxldCBhPTA7YTxyOysrYSl7aWYobj1lLmNoYXJDb2RlQXQoYSksbj41NTI5NSYmbjw1NzM0NCl7aWYoIW8pe2lmKG4+NTYzMTkpeyh0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pZihhKzE9PT1yKXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9bz1uO2NvbnRpbnVlfWlmKG48NTYzMjApeyh0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KSxvPW47Y29udGludWV9bj02NTUzNisoby01NTI5Njw8MTB8bi01NjMyMCl9ZWxzZSBvJiYodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSk7aWYobz1udWxsLG48MTI4KXtpZigodC09MSk8MClicmVhaztpLnB1c2gobil9ZWxzZSBpZihuPDIwNDgpe2lmKCh0LT0yKTwwKWJyZWFrO2kucHVzaChuPj42fDE5Miw2MyZufDEyOCl9ZWxzZSBpZihuPDY1NTM2KXtpZigodC09Myk8MClicmVhaztpLnB1c2gobj4+MTJ8MjI0LG4+PjYmNjN8MTI4LDYzJm58MTI4KX1lbHNle2lmKCEobjwxMTE0MTEyKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNvZGUgcG9pbnRcIik7aWYoKHQtPTQpPDApYnJlYWs7aS5wdXNoKG4+PjE4fDI0MCxuPj4xMiY2M3wxMjgsbj4+NiY2M3wxMjgsNjMmbnwxMjgpfX1yZXR1cm4gaX1mdW5jdGlvbiBHKGUpe3JldHVybiByLnRvQnl0ZUFycmF5KGZ1bmN0aW9uKGUpe2lmKChlPShlPWUuc3BsaXQoXCI9XCIpWzBdKS50cmltKCkucmVwbGFjZShXLFwiXCIpKS5sZW5ndGg8MilyZXR1cm5cIlwiO2Zvcig7ZS5sZW5ndGglNCE9MDspZSs9XCI9XCI7cmV0dXJuIGV9KGUpKX1mdW5jdGlvbiBxKGUsdCxuLHIpe2xldCBvO2ZvcihvPTA7bzxyJiYhKG8rbj49dC5sZW5ndGh8fG8+PWUubGVuZ3RoKTsrK28pdFtvK25dPWVbb107cmV0dXJuIG99ZnVuY3Rpb24gWShlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgdHx8bnVsbCE9ZSYmbnVsbCE9ZS5jb25zdHJ1Y3RvciYmbnVsbCE9ZS5jb25zdHJ1Y3Rvci5uYW1lJiZlLmNvbnN0cnVjdG9yLm5hbWU9PT10Lm5hbWV9ZnVuY3Rpb24gSyhlKXtyZXR1cm4gZSE9ZX1jb25zdCBYPWZ1bmN0aW9uKCl7Y29uc3QgZT1cIjAxMjM0NTY3ODlhYmNkZWZcIix0PW5ldyBBcnJheSgyNTYpO2ZvcihsZXQgbj0wO248MTY7KytuKXtjb25zdCByPTE2Km47Zm9yKGxldCBvPTA7bzwxNjsrK28pdFtyK29dPWVbbl0rZVtvXX1yZXR1cm4gdH0oKTtmdW5jdGlvbiBKKGUpe3JldHVyblwidW5kZWZpbmVkXCI9PXR5cGVvZiBCaWdJbnQ/UTplfWZ1bmN0aW9uIFEoKXt0aHJvdyBuZXcgRXJyb3IoXCJCaWdJbnQgbm90IHN1cHBvcnRlZFwiKX19LDQ2NTplPT57dmFyIHQsbj1cIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdD9SZWZsZWN0Om51bGwscj1uJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLmFwcGx5P24uYXBwbHk6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChlLHQsbil9O3Q9biYmXCJmdW5jdGlvblwiPT10eXBlb2Ygbi5vd25LZXlzP24ub3duS2V5czpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSl9OmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKX07dmFyIG89TnVtYmVyLmlzTmFOfHxmdW5jdGlvbihlKXtyZXR1cm4gZSE9ZX07ZnVuY3Rpb24gaSgpe2kuaW5pdC5jYWxsKHRoaXMpfWUuZXhwb3J0cz1pLGUuZXhwb3J0cy5vbmNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLHIpe2Z1bmN0aW9uIG8obil7ZS5yZW1vdmVMaXN0ZW5lcih0LGkpLHIobil9ZnVuY3Rpb24gaSgpe1wiZnVuY3Rpb25cIj09dHlwZW9mIGUucmVtb3ZlTGlzdGVuZXImJmUucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLG8pLG4oW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX12KGUsdCxpLHtvbmNlOiEwfSksXCJlcnJvclwiIT09dCYmZnVuY3Rpb24oZSx0LG4pe1wiZnVuY3Rpb25cIj09dHlwZW9mIGUub24mJnYoZSxcImVycm9yXCIsdCx7b25jZTohMH0pfShlLG8pfSkpfSxpLkV2ZW50RW1pdHRlcj1pLGkucHJvdG90eXBlLl9ldmVudHM9dm9pZCAwLGkucHJvdG90eXBlLl9ldmVudHNDb3VudD0wLGkucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnM9dm9pZCAwO3ZhciBhPTEwO2Z1bmN0aW9uIGwoZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBlKX1mdW5jdGlvbiBzKGUpe3JldHVybiB2b2lkIDA9PT1lLl9tYXhMaXN0ZW5lcnM/aS5kZWZhdWx0TWF4TGlzdGVuZXJzOmUuX21heExpc3RlbmVyc31mdW5jdGlvbiBjKGUsdCxuLHIpe3ZhciBvLGksYSxjO2lmKGwobiksdm9pZCAwPT09KGk9ZS5fZXZlbnRzKT8oaT1lLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxlLl9ldmVudHNDb3VudD0wKToodm9pZCAwIT09aS5uZXdMaXN0ZW5lciYmKGUuZW1pdChcIm5ld0xpc3RlbmVyXCIsdCxuLmxpc3RlbmVyP24ubGlzdGVuZXI6biksaT1lLl9ldmVudHMpLGE9aVt0XSksdm9pZCAwPT09YSlhPWlbdF09biwrK2UuX2V2ZW50c0NvdW50O2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgYT9hPWlbdF09cj9bbixhXTpbYSxuXTpyP2EudW5zaGlmdChuKTphLnB1c2gobiksKG89cyhlKSk+MCYmYS5sZW5ndGg+byYmIWEud2FybmVkKXthLndhcm5lZD0hMDt2YXIgdT1uZXcgRXJyb3IoXCJQb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5IGxlYWsgZGV0ZWN0ZWQuIFwiK2EubGVuZ3RoK1wiIFwiK1N0cmluZyh0KStcIiBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0XCIpO3UubmFtZT1cIk1heExpc3RlbmVyc0V4Y2VlZGVkV2FybmluZ1wiLHUuZW1pdHRlcj1lLHUudHlwZT10LHUuY291bnQ9YS5sZW5ndGgsYz11LGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKGMpfXJldHVybiBlfWZ1bmN0aW9uIHUoKXtpZighdGhpcy5maXJlZClyZXR1cm4gdGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBlLHRoaXMud3JhcEZuKSx0aGlzLmZpcmVkPSEwLDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk6dGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCxhcmd1bWVudHMpfWZ1bmN0aW9uIGYoZSx0LG4pe3ZhciByPXtmaXJlZDohMSx3cmFwRm46dm9pZCAwLHRhcmdldDplLHR5cGU6dCxsaXN0ZW5lcjpufSxvPXUuYmluZChyKTtyZXR1cm4gby5saXN0ZW5lcj1uLHIud3JhcEZuPW8sb31mdW5jdGlvbiBkKGUsdCxuKXt2YXIgcj1lLl9ldmVudHM7aWYodm9pZCAwPT09cilyZXR1cm5bXTt2YXIgbz1yW3RdO3JldHVybiB2b2lkIDA9PT1vP1tdOlwiZnVuY3Rpb25cIj09dHlwZW9mIG8/bj9bby5saXN0ZW5lcnx8b106W29dOm4/ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBBcnJheShlLmxlbmd0aCksbj0wO248dC5sZW5ndGg7KytuKXRbbl09ZVtuXS5saXN0ZW5lcnx8ZVtuXTtyZXR1cm4gdH0obyk6aChvLG8ubGVuZ3RoKX1mdW5jdGlvbiBwKGUpe3ZhciB0PXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT10KXt2YXIgbj10W2VdO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4pcmV0dXJuIDE7aWYodm9pZCAwIT09bilyZXR1cm4gbi5sZW5ndGh9cmV0dXJuIDB9ZnVuY3Rpb24gaChlLHQpe2Zvcih2YXIgbj1uZXcgQXJyYXkodCkscj0wO3I8dDsrK3IpbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIHYoZSx0LG4scil7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5vbilyLm9uY2U/ZS5vbmNlKHQsbik6ZS5vbih0LG4pO2Vsc2V7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZS5hZGRFdmVudExpc3RlbmVyKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImVtaXR0ZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRXZlbnRFbWl0dGVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIGUpO2UuYWRkRXZlbnRMaXN0ZW5lcih0LChmdW5jdGlvbiBvKGkpe3Iub25jZSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbyksbihpKX0pKX19T2JqZWN0LmRlZmluZVByb3BlcnR5KGksXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGF9LHNldDpmdW5jdGlvbihlKXtpZihcIm51bWJlclwiIT10eXBlb2YgZXx8ZTwwfHxvKGUpKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytlK1wiLlwiKTthPWV9fSksaS5pbml0PWZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5fZXZlbnRzJiZ0aGlzLl9ldmVudHMhPT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2V2ZW50c3x8KHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApLHRoaXMuX21heExpc3RlbmVycz10aGlzLl9tYXhMaXN0ZW5lcnN8fHZvaWQgMH0saS5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKGUpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiBlfHxlPDB8fG8oZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcIm5cIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnK2UrXCIuXCIpO3JldHVybiB0aGlzLl9tYXhMaXN0ZW5lcnM9ZSx0aGlzfSxpLnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzKX0saS5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdC5wdXNoKGFyZ3VtZW50c1tuXSk7dmFyIG89XCJlcnJvclwiPT09ZSxpPXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT1pKW89byYmdm9pZCAwPT09aS5lcnJvcjtlbHNlIGlmKCFvKXJldHVybiExO2lmKG8pe3ZhciBhO2lmKHQubGVuZ3RoPjAmJihhPXRbMF0pLGEgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBhO3ZhciBsPW5ldyBFcnJvcihcIlVuaGFuZGxlZCBlcnJvci5cIisoYT9cIiAoXCIrYS5tZXNzYWdlK1wiKVwiOlwiXCIpKTt0aHJvdyBsLmNvbnRleHQ9YSxsfXZhciBzPWlbZV07aWYodm9pZCAwPT09cylyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBzKXIocyx0aGlzLHQpO2Vsc2V7dmFyIGM9cy5sZW5ndGgsdT1oKHMsYyk7Zm9yKG49MDtuPGM7KytuKXIodVtuXSx0aGlzLHQpfXJldHVybiEwfSxpLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3JldHVybiBjKHRoaXMsZSx0LCExKX0saS5wcm90b3R5cGUub249aS5wcm90b3R5cGUuYWRkTGlzdGVuZXIsaS5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGModGhpcyxlLHQsITApfSxpLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGwodCksdGhpcy5vbihlLGYodGhpcyxlLHQpKSx0aGlzfSxpLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGwodCksdGhpcy5wcmVwZW5kTGlzdGVuZXIoZSxmKHRoaXMsZSx0KSksdGhpc30saS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8saSxhO2lmKGwodCksdm9pZCAwPT09KHI9dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT0obj1yW2VdKSlyZXR1cm4gdGhpcztpZihuPT09dHx8bi5saXN0ZW5lcj09PXQpMD09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTooZGVsZXRlIHJbZV0sci5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KFwicmVtb3ZlTGlzdGVuZXJcIixlLG4ubGlzdGVuZXJ8fHQpKTtlbHNlIGlmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIG4pe2ZvcihvPS0xLGk9bi5sZW5ndGgtMTtpPj0wO2ktLSlpZihuW2ldPT09dHx8bltpXS5saXN0ZW5lcj09PXQpe2E9bltpXS5saXN0ZW5lcixvPWk7YnJlYWt9aWYobzwwKXJldHVybiB0aGlzOzA9PT1vP24uc2hpZnQoKTpmdW5jdGlvbihlLHQpe2Zvcig7dCsxPGUubGVuZ3RoO3QrKyllW3RdPWVbdCsxXTtlLnBvcCgpfShuLG8pLDE9PT1uLmxlbmd0aCYmKHJbZV09blswXSksdm9pZCAwIT09ci5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KFwicmVtb3ZlTGlzdGVuZXJcIixlLGF8fHQpfXJldHVybiB0aGlzfSxpLnByb3RvdHlwZS5vZmY9aS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIsaS5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3ZhciB0LG4scjtpZih2b2lkIDA9PT0obj10aGlzLl9ldmVudHMpKXJldHVybiB0aGlzO2lmKHZvaWQgMD09PW4ucmVtb3ZlTGlzdGVuZXIpcmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoPyh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKTp2b2lkIDAhPT1uW2VdJiYoMD09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTpkZWxldGUgbltlXSksdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIG8saT1PYmplY3Qua2V5cyhuKTtmb3Iocj0wO3I8aS5sZW5ndGg7KytyKVwicmVtb3ZlTGlzdGVuZXJcIiE9PShvPWlbcl0pJiZ0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhvKTtyZXR1cm4gdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoXCJyZW1vdmVMaXN0ZW5lclwiKSx0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wLHRoaXN9aWYoXCJmdW5jdGlvblwiPT10eXBlb2YodD1uW2VdKSl0aGlzLnJlbW92ZUxpc3RlbmVyKGUsdCk7ZWxzZSBpZih2b2lkIDAhPT10KWZvcihyPXQubGVuZ3RoLTE7cj49MDtyLS0pdGhpcy5yZW1vdmVMaXN0ZW5lcihlLHRbcl0pO3JldHVybiB0aGlzfSxpLnByb3RvdHlwZS5saXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuIGQodGhpcyxlLCEwKX0saS5wcm90b3R5cGUucmF3TGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybiBkKHRoaXMsZSwhMSl9LGkubGlzdGVuZXJDb3VudD1mdW5jdGlvbihlLHQpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGUubGlzdGVuZXJDb3VudD9lLmxpc3RlbmVyQ291bnQodCk6cC5jYWxsKGUsdCl9LGkucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9cCxpLnByb3RvdHlwZS5ldmVudE5hbWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50PjA/dCh0aGlzLl9ldmVudHMpOltdfX0sMjE1OihlLHQpPT57dC5yZWFkPWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGksYSxsPTgqby1yLTEscz0oMTw8bCktMSxjPXM+PjEsdT0tNyxmPW4/by0xOjAsZD1uPy0xOjEscD1lW3QrZl07Zm9yKGYrPWQsaT1wJigxPDwtdSktMSxwPj49LXUsdSs9bDt1PjA7aT0yNTYqaStlW3QrZl0sZis9ZCx1LT04KTtmb3IoYT1pJigxPDwtdSktMSxpPj49LXUsdSs9cjt1PjA7YT0yNTYqYStlW3QrZl0sZis9ZCx1LT04KTtpZigwPT09aSlpPTEtYztlbHNle2lmKGk9PT1zKXJldHVybiBhP05hTjoxLzAqKHA/LTE6MSk7YSs9TWF0aC5wb3coMixyKSxpLT1jfXJldHVybihwPy0xOjEpKmEqTWF0aC5wb3coMixpLXIpfSx0LndyaXRlPWZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2YXIgYSxsLHMsYz04Kmktby0xLHU9KDE8PGMpLTEsZj11Pj4xLGQ9MjM9PT1vP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxwPXI/MDppLTEsaD1yPzE6LTEsdj10PDB8fDA9PT10JiYxL3Q8MD8xOjA7Zm9yKHQ9TWF0aC5hYnModCksaXNOYU4odCl8fHQ9PT0xLzA/KGw9aXNOYU4odCk/MTowLGE9dSk6KGE9TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMiksdCoocz1NYXRoLnBvdygyLC1hKSk8MSYmKGEtLSxzKj0yKSwodCs9YStmPj0xP2QvczpkKk1hdGgucG93KDIsMS1mKSkqcz49MiYmKGErKyxzLz0yKSxhK2Y+PXU/KGw9MCxhPXUpOmErZj49MT8obD0odCpzLTEpKk1hdGgucG93KDIsbyksYSs9Zik6KGw9dCpNYXRoLnBvdygyLGYtMSkqTWF0aC5wb3coMixvKSxhPTApKTtvPj04O2VbbitwXT0yNTUmbCxwKz1oLGwvPTI1NixvLT04KTtmb3IoYT1hPDxvfGwsYys9bztjPjA7ZVtuK3BdPTI1NSZhLHArPWgsYS89MjU2LGMtPTgpO2VbbitwLWhdfD0xMjgqdn19LDk1MTpmdW5jdGlvbihlLHQsbil7dmFyIHI7ZT1uLm5tZChlKSxmdW5jdGlvbigpe3ZhciBvLGk9XCJFeHBlY3RlZCBhIGZ1bmN0aW9uXCIsYT1cIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX19cIixsPVwiX19sb2Rhc2hfcGxhY2Vob2xkZXJfX1wiLHM9MzIsYz0xMjgsdT0xLzAsZj05MDA3MTk5MjU0NzQwOTkxLGQ9TmFOLHA9NDI5NDk2NzI5NSxoPVtbXCJhcnlcIixjXSxbXCJiaW5kXCIsMV0sW1wiYmluZEtleVwiLDJdLFtcImN1cnJ5XCIsOF0sW1wiY3VycnlSaWdodFwiLDE2XSxbXCJmbGlwXCIsNTEyXSxbXCJwYXJ0aWFsXCIsc10sW1wicGFydGlhbFJpZ2h0XCIsNjRdLFtcInJlYXJnXCIsMjU2XV0sdj1cIltvYmplY3QgQXJndW1lbnRzXVwiLGc9XCJbb2JqZWN0IEFycmF5XVwiLEM9XCJbb2JqZWN0IEJvb2xlYW5dXCIsbT1cIltvYmplY3QgRGF0ZV1cIix5PVwiW29iamVjdCBFcnJvcl1cIix3PVwiW29iamVjdCBGdW5jdGlvbl1cIixiPVwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl1cIix4PVwiW29iamVjdCBNYXBdXCIsXz1cIltvYmplY3QgTnVtYmVyXVwiLEw9XCJbb2JqZWN0IE9iamVjdF1cIixPPVwiW29iamVjdCBQcm9taXNlXVwiLEU9XCJbb2JqZWN0IFJlZ0V4cF1cIixTPVwiW29iamVjdCBTZXRdXCIsTT1cIltvYmplY3QgU3RyaW5nXVwiLGo9XCJbb2JqZWN0IFN5bWJvbF1cIixrPVwiW29iamVjdCBXZWFrTWFwXVwiLFI9XCJbb2JqZWN0IEFycmF5QnVmZmVyXVwiLFA9XCJbb2JqZWN0IERhdGFWaWV3XVwiLEE9XCJbb2JqZWN0IEZsb2F0MzJBcnJheV1cIixJPVwiW29iamVjdCBGbG9hdDY0QXJyYXldXCIsVD1cIltvYmplY3QgSW50OEFycmF5XVwiLEg9XCJbb2JqZWN0IEludDE2QXJyYXldXCIsVj1cIltvYmplY3QgSW50MzJBcnJheV1cIixCPVwiW29iamVjdCBVaW50OEFycmF5XVwiLEQ9XCJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XVwiLFo9XCJbb2JqZWN0IFVpbnQxNkFycmF5XVwiLCQ9XCJbb2JqZWN0IFVpbnQzMkFycmF5XVwiLEY9L1xcYl9fcCBcXCs9ICcnOy9nLE49L1xcYihfX3AgXFwrPSkgJycgXFwrL2csVT0vKF9fZVxcKC4qP1xcKXxcXGJfX3RcXCkpIFxcK1xcbicnOy9nLFc9LyYoPzphbXB8bHR8Z3R8cXVvdHwjMzkpOy9nLHo9L1smPD5cIiddL2csRz1SZWdFeHAoVy5zb3VyY2UpLHE9UmVnRXhwKHouc291cmNlKSxZPS88JS0oW1xcc1xcU10rPyklPi9nLEs9LzwlKFtcXHNcXFNdKz8pJT4vZyxYPS88JT0oW1xcc1xcU10rPyklPi9nLEo9L1xcLnxcXFsoPzpbXltcXF1dKnwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKj9cXDEpXFxdLyxRPS9eXFx3KiQvLGVlPS9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZyx0ZT0vW1xcXFxeJC4qKz8oKVtcXF17fXxdL2csbmU9UmVnRXhwKHRlLnNvdXJjZSkscmU9L15cXHMrLyxvZT0vXFxzLyxpZT0vXFx7KD86XFxuXFwvXFwqIFxcW3dyYXBwZWQgd2l0aCAuK1xcXSBcXCpcXC8pP1xcbj8vLGFlPS9cXHtcXG5cXC9cXCogXFxbd3JhcHBlZCB3aXRoICguKylcXF0gXFwqLyxsZT0vLD8gJiAvLHNlPS9bXlxceDAwLVxceDJmXFx4M2EtXFx4NDBcXHg1Yi1cXHg2MFxceDdiLVxceDdmXSsvZyxjZT0vWygpPSx7fVxcW1xcXVxcL1xcc10vLHVlPS9cXFxcKFxcXFwpPy9nLGZlPS9cXCRcXHsoW15cXFxcfV0qKD86XFxcXC5bXlxcXFx9XSopKilcXH0vZyxkZT0vXFx3KiQvLHBlPS9eWy0rXTB4WzAtOWEtZl0rJC9pLGhlPS9eMGJbMDFdKyQvaSx2ZT0vXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvLGdlPS9eMG9bMC03XSskL2ksQ2U9L14oPzowfFsxLTldXFxkKikkLyxtZT0vW1xceGMwLVxceGQ2XFx4ZDgtXFx4ZjZcXHhmOC1cXHhmZlxcdTAxMDAtXFx1MDE3Zl0vZyx5ZT0vKCReKS8sd2U9L1snXFxuXFxyXFx1MjAyOFxcdTIwMjlcXFxcXS9nLGJlPVwiXFxcXHVkODAwLVxcXFx1ZGZmZlwiLHhlPVwiXFxcXHUwMzAwLVxcXFx1MDM2ZlxcXFx1ZmUyMC1cXFxcdWZlMmZcXFxcdTIwZDAtXFxcXHUyMGZmXCIsX2U9XCJcXFxcdTI3MDAtXFxcXHUyN2JmXCIsTGU9XCJhLXpcXFxceGRmLVxcXFx4ZjZcXFxceGY4LVxcXFx4ZmZcIixPZT1cIkEtWlxcXFx4YzAtXFxcXHhkNlxcXFx4ZDgtXFxcXHhkZVwiLEVlPVwiXFxcXHVmZTBlXFxcXHVmZTBmXCIsU2U9XCJcXFxceGFjXFxcXHhiMVxcXFx4ZDdcXFxceGY3XFxcXHgwMC1cXFxceDJmXFxcXHgzYS1cXFxceDQwXFxcXHg1Yi1cXFxceDYwXFxcXHg3Yi1cXFxceGJmXFxcXHUyMDAwLVxcXFx1MjA2ZiBcXFxcdFxcXFx4MGJcXFxcZlxcXFx4YTBcXFxcdWZlZmZcXFxcblxcXFxyXFxcXHUyMDI4XFxcXHUyMDI5XFxcXHUxNjgwXFxcXHUxODBlXFxcXHUyMDAwXFxcXHUyMDAxXFxcXHUyMDAyXFxcXHUyMDAzXFxcXHUyMDA0XFxcXHUyMDA1XFxcXHUyMDA2XFxcXHUyMDA3XFxcXHUyMDA4XFxcXHUyMDA5XFxcXHUyMDBhXFxcXHUyMDJmXFxcXHUyMDVmXFxcXHUzMDAwXCIsTWU9XCJbXCIrYmUrXCJdXCIsamU9XCJbXCIrU2UrXCJdXCIsa2U9XCJbXCIreGUrXCJdXCIsUmU9XCJcXFxcZCtcIixQZT1cIltcIitfZStcIl1cIixBZT1cIltcIitMZStcIl1cIixJZT1cIlteXCIrYmUrU2UrUmUrX2UrTGUrT2UrXCJdXCIsVGU9XCJcXFxcdWQ4M2NbXFxcXHVkZmZiLVxcXFx1ZGZmZl1cIixIZT1cIlteXCIrYmUrXCJdXCIsVmU9XCIoPzpcXFxcdWQ4M2NbXFxcXHVkZGU2LVxcXFx1ZGRmZl0pezJ9XCIsQmU9XCJbXFxcXHVkODAwLVxcXFx1ZGJmZl1bXFxcXHVkYzAwLVxcXFx1ZGZmZl1cIixEZT1cIltcIitPZStcIl1cIixaZT1cIlxcXFx1MjAwZFwiLCRlPVwiKD86XCIrQWUrXCJ8XCIrSWUrXCIpXCIsRmU9XCIoPzpcIitEZStcInxcIitJZStcIilcIixOZT1cIig/Olsn4oCZXSg/OmR8bGx8bXxyZXxzfHR8dmUpKT9cIixVZT1cIig/Olsn4oCZXSg/OkR8TEx8TXxSRXxTfFR8VkUpKT9cIixXZT1cIig/OlwiK2tlK1wifFwiK1RlK1wiKT9cIix6ZT1cIltcIitFZStcIl0/XCIsR2U9emUrV2UrXCIoPzpcIitaZStcIig/OlwiK1tIZSxWZSxCZV0uam9pbihcInxcIikrXCIpXCIremUrV2UrXCIpKlwiLHFlPVwiKD86XCIrW1BlLFZlLEJlXS5qb2luKFwifFwiKStcIilcIitHZSxZZT1cIig/OlwiK1tIZStrZStcIj9cIixrZSxWZSxCZSxNZV0uam9pbihcInxcIikrXCIpXCIsS2U9UmVnRXhwKFwiWyfigJldXCIsXCJnXCIpLFhlPVJlZ0V4cChrZSxcImdcIiksSmU9UmVnRXhwKFRlK1wiKD89XCIrVGUrXCIpfFwiK1llK0dlLFwiZ1wiKSxRZT1SZWdFeHAoW0RlK1wiP1wiK0FlK1wiK1wiK05lK1wiKD89XCIrW2plLERlLFwiJFwiXS5qb2luKFwifFwiKStcIilcIixGZStcIitcIitVZStcIig/PVwiK1tqZSxEZSskZSxcIiRcIl0uam9pbihcInxcIikrXCIpXCIsRGUrXCI/XCIrJGUrXCIrXCIrTmUsRGUrXCIrXCIrVWUsXCJcXFxcZCooPzoxU1R8Mk5EfDNSRHwoPyFbMTIzXSlcXFxcZFRIKSg/PVxcXFxifFthLXpfXSlcIixcIlxcXFxkKig/OjFzdHwybmR8M3JkfCg/IVsxMjNdKVxcXFxkdGgpKD89XFxcXGJ8W0EtWl9dKVwiLFJlLHFlXS5qb2luKFwifFwiKSxcImdcIiksZXQ9UmVnRXhwKFwiW1wiK1plK2JlK3hlK0VlK1wiXVwiKSx0dD0vW2Etel1bQS1aXXxbQS1aXXsyfVthLXpdfFswLTldW2EtekEtWl18W2EtekEtWl1bMC05XXxbXmEtekEtWjAtOSBdLyxudD1bXCJBcnJheVwiLFwiQnVmZmVyXCIsXCJEYXRhVmlld1wiLFwiRGF0ZVwiLFwiRXJyb3JcIixcIkZsb2F0MzJBcnJheVwiLFwiRmxvYXQ2NEFycmF5XCIsXCJGdW5jdGlvblwiLFwiSW50OEFycmF5XCIsXCJJbnQxNkFycmF5XCIsXCJJbnQzMkFycmF5XCIsXCJNYXBcIixcIk1hdGhcIixcIk9iamVjdFwiLFwiUHJvbWlzZVwiLFwiUmVnRXhwXCIsXCJTZXRcIixcIlN0cmluZ1wiLFwiU3ltYm9sXCIsXCJUeXBlRXJyb3JcIixcIlVpbnQ4QXJyYXlcIixcIlVpbnQ4Q2xhbXBlZEFycmF5XCIsXCJVaW50MTZBcnJheVwiLFwiVWludDMyQXJyYXlcIixcIldlYWtNYXBcIixcIl9cIixcImNsZWFyVGltZW91dFwiLFwiaXNGaW5pdGVcIixcInBhcnNlSW50XCIsXCJzZXRUaW1lb3V0XCJdLHJ0PS0xLG90PXt9O290W0FdPW90W0ldPW90W1RdPW90W0hdPW90W1ZdPW90W0JdPW90W0RdPW90W1pdPW90WyRdPSEwLG90W3ZdPW90W2ddPW90W1JdPW90W0NdPW90W1BdPW90W21dPW90W3ldPW90W3ddPW90W3hdPW90W19dPW90W0xdPW90W0VdPW90W1NdPW90W01dPW90W2tdPSExO3ZhciBpdD17fTtpdFt2XT1pdFtnXT1pdFtSXT1pdFtQXT1pdFtDXT1pdFttXT1pdFtBXT1pdFtJXT1pdFtUXT1pdFtIXT1pdFtWXT1pdFt4XT1pdFtfXT1pdFtMXT1pdFtFXT1pdFtTXT1pdFtNXT1pdFtqXT1pdFtCXT1pdFtEXT1pdFtaXT1pdFskXT0hMCxpdFt5XT1pdFt3XT1pdFtrXT0hMTt2YXIgYXQ9e1wiXFxcXFwiOlwiXFxcXFwiLFwiJ1wiOlwiJ1wiLFwiXFxuXCI6XCJuXCIsXCJcXHJcIjpcInJcIixcIlxcdTIwMjhcIjpcInUyMDI4XCIsXCJcXHUyMDI5XCI6XCJ1MjAyOVwifSxsdD1wYXJzZUZsb2F0LHN0PXBhcnNlSW50LGN0PVwib2JqZWN0XCI9PXR5cGVvZiBuLmcmJm4uZyYmbi5nLk9iamVjdD09PU9iamVjdCYmbi5nLHV0PVwib2JqZWN0XCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixmdD1jdHx8dXR8fEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSxkdD10JiYhdC5ub2RlVHlwZSYmdCxwdD1kdCYmZSYmIWUubm9kZVR5cGUmJmUsaHQ9cHQmJnB0LmV4cG9ydHM9PT1kdCx2dD1odCYmY3QucHJvY2VzcyxndD1mdW5jdGlvbigpe3RyeXtyZXR1cm4gcHQmJnB0LnJlcXVpcmUmJnB0LnJlcXVpcmUoXCJ1dGlsXCIpLnR5cGVzfHx2dCYmdnQuYmluZGluZyYmdnQuYmluZGluZyhcInV0aWxcIil9Y2F0Y2goZSl7fX0oKSxDdD1ndCYmZ3QuaXNBcnJheUJ1ZmZlcixtdD1ndCYmZ3QuaXNEYXRlLHl0PWd0JiZndC5pc01hcCx3dD1ndCYmZ3QuaXNSZWdFeHAsYnQ9Z3QmJmd0LmlzU2V0LHh0PWd0JiZndC5pc1R5cGVkQXJyYXk7ZnVuY3Rpb24gX3QoZSx0LG4pe3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBlLmNhbGwodCk7Y2FzZSAxOnJldHVybiBlLmNhbGwodCxuWzBdKTtjYXNlIDI6cmV0dXJuIGUuY2FsbCh0LG5bMF0sblsxXSk7Y2FzZSAzOnJldHVybiBlLmNhbGwodCxuWzBdLG5bMV0sblsyXSl9cmV0dXJuIGUuYXBwbHkodCxuKX1mdW5jdGlvbiBMdChlLHQsbixyKXtmb3IodmFyIG89LTEsaT1udWxsPT1lPzA6ZS5sZW5ndGg7KytvPGk7KXt2YXIgYT1lW29dO3QocixhLG4oYSksZSl9cmV0dXJuIHJ9ZnVuY3Rpb24gT3QoZSx0KXtmb3IodmFyIG49LTEscj1udWxsPT1lPzA6ZS5sZW5ndGg7KytuPHImJiExIT09dChlW25dLG4sZSk7KTtyZXR1cm4gZX1mdW5jdGlvbiBFdChlLHQpe2Zvcih2YXIgbj1udWxsPT1lPzA6ZS5sZW5ndGg7bi0tJiYhMSE9PXQoZVtuXSxuLGUpOyk7cmV0dXJuIGV9ZnVuY3Rpb24gU3QoZSx0KXtmb3IodmFyIG49LTEscj1udWxsPT1lPzA6ZS5sZW5ndGg7KytuPHI7KWlmKCF0KGVbbl0sbixlKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBNdChlLHQpe2Zvcih2YXIgbj0tMSxyPW51bGw9PWU/MDplLmxlbmd0aCxvPTAsaT1bXTsrK248cjspe3ZhciBhPWVbbl07dChhLG4sZSkmJihpW28rK109YSl9cmV0dXJuIGl9ZnVuY3Rpb24ganQoZSx0KXtyZXR1cm4hKG51bGw9PWV8fCFlLmxlbmd0aCkmJkR0KGUsdCwwKT4tMX1mdW5jdGlvbiBrdChlLHQsbil7Zm9yKHZhciByPS0xLG89bnVsbD09ZT8wOmUubGVuZ3RoOysrcjxvOylpZihuKHQsZVtyXSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gUnQoZSx0KXtmb3IodmFyIG49LTEscj1udWxsPT1lPzA6ZS5sZW5ndGgsbz1BcnJheShyKTsrK248cjspb1tuXT10KGVbbl0sbixlKTtyZXR1cm4gb31mdW5jdGlvbiBQdChlLHQpe2Zvcih2YXIgbj0tMSxyPXQubGVuZ3RoLG89ZS5sZW5ndGg7KytuPHI7KWVbbytuXT10W25dO3JldHVybiBlfWZ1bmN0aW9uIEF0KGUsdCxuLHIpe3ZhciBvPS0xLGk9bnVsbD09ZT8wOmUubGVuZ3RoO2ZvcihyJiZpJiYobj1lWysrb10pOysrbzxpOyluPXQobixlW29dLG8sZSk7cmV0dXJuIG59ZnVuY3Rpb24gSXQoZSx0LG4scil7dmFyIG89bnVsbD09ZT8wOmUubGVuZ3RoO2ZvcihyJiZvJiYobj1lWy0tb10pO28tLTspbj10KG4sZVtvXSxvLGUpO3JldHVybiBufWZ1bmN0aW9uIFR0KGUsdCl7Zm9yKHZhciBuPS0xLHI9bnVsbD09ZT8wOmUubGVuZ3RoOysrbjxyOylpZih0KGVbbl0sbixlKSlyZXR1cm4hMDtyZXR1cm4hMX12YXIgSHQ9TnQoXCJsZW5ndGhcIik7ZnVuY3Rpb24gVnQoZSx0LG4pe3ZhciByO3JldHVybiBuKGUsKGZ1bmN0aW9uKGUsbixvKXtpZih0KGUsbixvKSlyZXR1cm4gcj1uLCExfSkpLHJ9ZnVuY3Rpb24gQnQoZSx0LG4scil7Zm9yKHZhciBvPWUubGVuZ3RoLGk9bisocj8xOi0xKTtyP2ktLTorK2k8bzspaWYodChlW2ldLGksZSkpcmV0dXJuIGk7cmV0dXJuLTF9ZnVuY3Rpb24gRHQoZSx0LG4pe3JldHVybiB0PT10P2Z1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bi0xLG89ZS5sZW5ndGg7KytyPG87KWlmKGVbcl09PT10KXJldHVybiByO3JldHVybi0xfShlLHQsbik6QnQoZSwkdCxuKX1mdW5jdGlvbiBadChlLHQsbixyKXtmb3IodmFyIG89bi0xLGk9ZS5sZW5ndGg7KytvPGk7KWlmKHIoZVtvXSx0KSlyZXR1cm4gbztyZXR1cm4tMX1mdW5jdGlvbiAkdChlKXtyZXR1cm4gZSE9ZX1mdW5jdGlvbiBGdChlLHQpe3ZhciBuPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gbj96dChlLHQpL246ZH1mdW5jdGlvbiBOdChlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/bzp0W2VdfX1mdW5jdGlvbiBVdChlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PWU/bzplW3RdfX1mdW5jdGlvbiBXdChlLHQsbixyLG8pe3JldHVybiBvKGUsKGZ1bmN0aW9uKGUsbyxpKXtuPXI/KHI9ITEsZSk6dChuLGUsbyxpKX0pKSxufWZ1bmN0aW9uIHp0KGUsdCl7Zm9yKHZhciBuLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspe3ZhciBhPXQoZVtyXSk7YSE9PW8mJihuPW49PT1vP2E6bithKX1yZXR1cm4gbn1mdW5jdGlvbiBHdChlLHQpe2Zvcih2YXIgbj0tMSxyPUFycmF5KGUpOysrbjxlOylyW25dPXQobik7cmV0dXJuIHJ9ZnVuY3Rpb24gcXQoZSl7cmV0dXJuIGU/ZS5zbGljZSgwLGZuKGUpKzEpLnJlcGxhY2UocmUsXCJcIik6ZX1mdW5jdGlvbiBZdChlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUodCl9fWZ1bmN0aW9uIEt0KGUsdCl7cmV0dXJuIFJ0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSkpfWZ1bmN0aW9uIFh0KGUsdCl7cmV0dXJuIGUuaGFzKHQpfWZ1bmN0aW9uIEp0KGUsdCl7Zm9yKHZhciBuPS0xLHI9ZS5sZW5ndGg7KytuPHImJkR0KHQsZVtuXSwwKT4tMTspO3JldHVybiBufWZ1bmN0aW9uIFF0KGUsdCl7Zm9yKHZhciBuPWUubGVuZ3RoO24tLSYmRHQodCxlW25dLDApPi0xOyk7cmV0dXJuIG59dmFyIGVuPVV0KHvDgDpcIkFcIizDgTpcIkFcIizDgjpcIkFcIizDgzpcIkFcIizDhDpcIkFcIizDhTpcIkFcIizDoDpcImFcIizDoTpcImFcIizDojpcImFcIizDozpcImFcIizDpDpcImFcIizDpTpcImFcIizDhzpcIkNcIizDpzpcImNcIizDkDpcIkRcIizDsDpcImRcIizDiDpcIkVcIizDiTpcIkVcIizDijpcIkVcIizDizpcIkVcIizDqDpcImVcIizDqTpcImVcIizDqjpcImVcIizDqzpcImVcIizDjDpcIklcIizDjTpcIklcIizDjjpcIklcIizDjzpcIklcIizDrDpcImlcIizDrTpcImlcIizDrjpcImlcIizDrzpcImlcIizDkTpcIk5cIizDsTpcIm5cIizDkjpcIk9cIizDkzpcIk9cIizDlDpcIk9cIizDlTpcIk9cIizDljpcIk9cIizDmDpcIk9cIizDsjpcIm9cIizDszpcIm9cIizDtDpcIm9cIizDtTpcIm9cIizDtjpcIm9cIizDuDpcIm9cIizDmTpcIlVcIizDmjpcIlVcIizDmzpcIlVcIizDnDpcIlVcIizDuTpcInVcIizDujpcInVcIizDuzpcInVcIizDvDpcInVcIizDnTpcIllcIizDvTpcInlcIizDvzpcInlcIizDhjpcIkFlXCIsw6Y6XCJhZVwiLMOeOlwiVGhcIizDvjpcInRoXCIsw586XCJzc1wiLMSAOlwiQVwiLMSCOlwiQVwiLMSEOlwiQVwiLMSBOlwiYVwiLMSDOlwiYVwiLMSFOlwiYVwiLMSGOlwiQ1wiLMSIOlwiQ1wiLMSKOlwiQ1wiLMSMOlwiQ1wiLMSHOlwiY1wiLMSJOlwiY1wiLMSLOlwiY1wiLMSNOlwiY1wiLMSOOlwiRFwiLMSQOlwiRFwiLMSPOlwiZFwiLMSROlwiZFwiLMSSOlwiRVwiLMSUOlwiRVwiLMSWOlwiRVwiLMSYOlwiRVwiLMSaOlwiRVwiLMSTOlwiZVwiLMSVOlwiZVwiLMSXOlwiZVwiLMSZOlwiZVwiLMSbOlwiZVwiLMScOlwiR1wiLMSeOlwiR1wiLMSgOlwiR1wiLMSiOlwiR1wiLMSdOlwiZ1wiLMSfOlwiZ1wiLMShOlwiZ1wiLMSjOlwiZ1wiLMSkOlwiSFwiLMSmOlwiSFwiLMSlOlwiaFwiLMSnOlwiaFwiLMSoOlwiSVwiLMSqOlwiSVwiLMSsOlwiSVwiLMSuOlwiSVwiLMSwOlwiSVwiLMSpOlwiaVwiLMSrOlwiaVwiLMStOlwiaVwiLMSvOlwiaVwiLMSxOlwiaVwiLMS0OlwiSlwiLMS1OlwialwiLMS2OlwiS1wiLMS3Olwia1wiLMS4Olwia1wiLMS5OlwiTFwiLMS7OlwiTFwiLMS9OlwiTFwiLMS/OlwiTFwiLMWBOlwiTFwiLMS6OlwibFwiLMS8OlwibFwiLMS+OlwibFwiLMWAOlwibFwiLMWCOlwibFwiLMWDOlwiTlwiLMWFOlwiTlwiLMWHOlwiTlwiLMWKOlwiTlwiLMWEOlwiblwiLMWGOlwiblwiLMWIOlwiblwiLMWLOlwiblwiLMWMOlwiT1wiLMWOOlwiT1wiLMWQOlwiT1wiLMWNOlwib1wiLMWPOlwib1wiLMWROlwib1wiLMWUOlwiUlwiLMWWOlwiUlwiLMWYOlwiUlwiLMWVOlwiclwiLMWXOlwiclwiLMWZOlwiclwiLMWaOlwiU1wiLMWcOlwiU1wiLMWeOlwiU1wiLMWgOlwiU1wiLMWbOlwic1wiLMWdOlwic1wiLMWfOlwic1wiLMWhOlwic1wiLMWiOlwiVFwiLMWkOlwiVFwiLMWmOlwiVFwiLMWjOlwidFwiLMWlOlwidFwiLMWnOlwidFwiLMWoOlwiVVwiLMWqOlwiVVwiLMWsOlwiVVwiLMWuOlwiVVwiLMWwOlwiVVwiLMWyOlwiVVwiLMWpOlwidVwiLMWrOlwidVwiLMWtOlwidVwiLMWvOlwidVwiLMWxOlwidVwiLMWzOlwidVwiLMW0OlwiV1wiLMW1Olwid1wiLMW2OlwiWVwiLMW3OlwieVwiLMW4OlwiWVwiLMW5OlwiWlwiLMW7OlwiWlwiLMW9OlwiWlwiLMW6OlwielwiLMW8OlwielwiLMW+OlwielwiLMSyOlwiSUpcIizEszpcImlqXCIsxZI6XCJPZVwiLMWTOlwib2VcIizFiTpcIiduXCIsxb86XCJzXCJ9KSx0bj1VdCh7XCImXCI6XCImYW1wO1wiLFwiPFwiOlwiJmx0O1wiLFwiPlwiOlwiJmd0O1wiLCdcIic6XCImcXVvdDtcIixcIidcIjpcIiYjMzk7XCJ9KTtmdW5jdGlvbiBubihlKXtyZXR1cm5cIlxcXFxcIithdFtlXX1mdW5jdGlvbiBybihlKXtyZXR1cm4gZXQudGVzdChlKX1mdW5jdGlvbiBvbihlKXt2YXIgdD0tMSxuPUFycmF5KGUuc2l6ZSk7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSxyKXtuWysrdF09W3IsZV19KSksbn1mdW5jdGlvbiBhbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZSh0KG4pKX19ZnVuY3Rpb24gbG4oZSx0KXtmb3IodmFyIG49LTEscj1lLmxlbmd0aCxvPTAsaT1bXTsrK248cjspe3ZhciBhPWVbbl07YSE9PXQmJmEhPT1sfHwoZVtuXT1sLGlbbysrXT1uKX1yZXR1cm4gaX1mdW5jdGlvbiBzbihlKXt2YXIgdD0tMSxuPUFycmF5KGUuc2l6ZSk7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7blsrK3RdPWV9KSksbn1mdW5jdGlvbiBjbihlKXtyZXR1cm4gcm4oZSk/ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PUplLmxhc3RJbmRleD0wO0plLnRlc3QoZSk7KSsrdDtyZXR1cm4gdH0oZSk6SHQoZSl9ZnVuY3Rpb24gdW4oZSl7cmV0dXJuIHJuKGUpP2Z1bmN0aW9uKGUpe3JldHVybiBlLm1hdGNoKEplKXx8W119KGUpOmZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KFwiXCIpfShlKX1mdW5jdGlvbiBmbihlKXtmb3IodmFyIHQ9ZS5sZW5ndGg7dC0tJiZvZS50ZXN0KGUuY2hhckF0KHQpKTspO3JldHVybiB0fXZhciBkbj1VdCh7XCImYW1wO1wiOlwiJlwiLFwiJmx0O1wiOlwiPFwiLFwiJmd0O1wiOlwiPlwiLFwiJnF1b3Q7XCI6J1wiJyxcIiYjMzk7XCI6XCInXCJ9KSxwbj1mdW5jdGlvbiBlKHQpe3ZhciBuLHI9KHQ9bnVsbD09dD9mdDpwbi5kZWZhdWx0cyhmdC5PYmplY3QoKSx0LHBuLnBpY2soZnQsbnQpKSkuQXJyYXksb2U9dC5EYXRlLGJlPXQuRXJyb3IseGU9dC5GdW5jdGlvbixfZT10Lk1hdGgsTGU9dC5PYmplY3QsT2U9dC5SZWdFeHAsRWU9dC5TdHJpbmcsU2U9dC5UeXBlRXJyb3IsTWU9ci5wcm90b3R5cGUsamU9eGUucHJvdG90eXBlLGtlPUxlLnByb3RvdHlwZSxSZT10W1wiX19jb3JlLWpzX3NoYXJlZF9fXCJdLFBlPWplLnRvU3RyaW5nLEFlPWtlLmhhc093blByb3BlcnR5LEllPTAsVGU9KG49L1teLl0rJC8uZXhlYyhSZSYmUmUua2V5cyYmUmUua2V5cy5JRV9QUk9UT3x8XCJcIikpP1wiU3ltYm9sKHNyYylfMS5cIituOlwiXCIsSGU9a2UudG9TdHJpbmcsVmU9UGUuY2FsbChMZSksQmU9ZnQuXyxEZT1PZShcIl5cIitQZS5jYWxsKEFlKS5yZXBsYWNlKHRlLFwiXFxcXCQmXCIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csXCIkMS4qP1wiKStcIiRcIiksWmU9aHQ/dC5CdWZmZXI6bywkZT10LlN5bWJvbCxGZT10LlVpbnQ4QXJyYXksTmU9WmU/WmUuYWxsb2NVbnNhZmU6byxVZT1hbihMZS5nZXRQcm90b3R5cGVPZixMZSksV2U9TGUuY3JlYXRlLHplPWtlLnByb3BlcnR5SXNFbnVtZXJhYmxlLEdlPU1lLnNwbGljZSxxZT0kZT8kZS5pc0NvbmNhdFNwcmVhZGFibGU6byxZZT0kZT8kZS5pdGVyYXRvcjpvLEplPSRlPyRlLnRvU3RyaW5nVGFnOm8sZXQ9ZnVuY3Rpb24oKXt0cnl7dmFyIGU9c2koTGUsXCJkZWZpbmVQcm9wZXJ0eVwiKTtyZXR1cm4gZSh7fSxcIlwiLHt9KSxlfWNhdGNoKGUpe319KCksYXQ9dC5jbGVhclRpbWVvdXQhPT1mdC5jbGVhclRpbWVvdXQmJnQuY2xlYXJUaW1lb3V0LGN0PW9lJiZvZS5ub3chPT1mdC5EYXRlLm5vdyYmb2Uubm93LHV0PXQuc2V0VGltZW91dCE9PWZ0LnNldFRpbWVvdXQmJnQuc2V0VGltZW91dCxkdD1fZS5jZWlsLHB0PV9lLmZsb29yLHZ0PUxlLmdldE93blByb3BlcnR5U3ltYm9scyxndD1aZT9aZS5pc0J1ZmZlcjpvLEh0PXQuaXNGaW5pdGUsVXQ9TWUuam9pbixobj1hbihMZS5rZXlzLExlKSx2bj1fZS5tYXgsZ249X2UubWluLENuPW9lLm5vdyxtbj10LnBhcnNlSW50LHluPV9lLnJhbmRvbSx3bj1NZS5yZXZlcnNlLGJuPXNpKHQsXCJEYXRhVmlld1wiKSx4bj1zaSh0LFwiTWFwXCIpLF9uPXNpKHQsXCJQcm9taXNlXCIpLExuPXNpKHQsXCJTZXRcIiksT249c2kodCxcIldlYWtNYXBcIiksRW49c2koTGUsXCJjcmVhdGVcIiksU249T24mJm5ldyBPbixNbj17fSxqbj1JaShibiksa249SWkoeG4pLFJuPUlpKF9uKSxQbj1JaShMbiksQW49SWkoT24pLEluPSRlPyRlLnByb3RvdHlwZTpvLFRuPUluP0luLnZhbHVlT2Y6byxIbj1Jbj9Jbi50b1N0cmluZzpvO2Z1bmN0aW9uIFZuKGUpe2lmKFhhKGUpJiYhWmEoZSkmJiEoZSBpbnN0YW5jZW9mICRuKSl7aWYoZSBpbnN0YW5jZW9mIFpuKXJldHVybiBlO2lmKEFlLmNhbGwoZSxcIl9fd3JhcHBlZF9fXCIpKXJldHVybiBUaShlKX1yZXR1cm4gbmV3IFpuKGUpfXZhciBCbj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKCFLYSh0KSlyZXR1cm57fTtpZihXZSlyZXR1cm4gV2UodCk7ZS5wcm90b3R5cGU9dDt2YXIgbj1uZXcgZTtyZXR1cm4gZS5wcm90b3R5cGU9byxufX0oKTtmdW5jdGlvbiBEbigpe31mdW5jdGlvbiBabihlLHQpe3RoaXMuX193cmFwcGVkX189ZSx0aGlzLl9fYWN0aW9uc19fPVtdLHRoaXMuX19jaGFpbl9fPSEhdCx0aGlzLl9faW5kZXhfXz0wLHRoaXMuX192YWx1ZXNfXz1vfWZ1bmN0aW9uICRuKGUpe3RoaXMuX193cmFwcGVkX189ZSx0aGlzLl9fYWN0aW9uc19fPVtdLHRoaXMuX19kaXJfXz0xLHRoaXMuX19maWx0ZXJlZF9fPSExLHRoaXMuX19pdGVyYXRlZXNfXz1bXSx0aGlzLl9fdGFrZUNvdW50X189cCx0aGlzLl9fdmlld3NfXz1bXX1mdW5jdGlvbiBGbihlKXt2YXIgdD0tMSxuPW51bGw9PWU/MDplLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrdDxuOyl7dmFyIHI9ZVt0XTt0aGlzLnNldChyWzBdLHJbMV0pfX1mdW5jdGlvbiBObihlKXt2YXIgdD0tMSxuPW51bGw9PWU/MDplLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrdDxuOyl7dmFyIHI9ZVt0XTt0aGlzLnNldChyWzBdLHJbMV0pfX1mdW5jdGlvbiBVbihlKXt2YXIgdD0tMSxuPW51bGw9PWU/MDplLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrdDxuOyl7dmFyIHI9ZVt0XTt0aGlzLnNldChyWzBdLHJbMV0pfX1mdW5jdGlvbiBXbihlKXt2YXIgdD0tMSxuPW51bGw9PWU/MDplLmxlbmd0aDtmb3IodGhpcy5fX2RhdGFfXz1uZXcgVW47Kyt0PG47KXRoaXMuYWRkKGVbdF0pfWZ1bmN0aW9uIHpuKGUpe3ZhciB0PXRoaXMuX19kYXRhX189bmV3IE5uKGUpO3RoaXMuc2l6ZT10LnNpemV9ZnVuY3Rpb24gR24oZSx0KXt2YXIgbj1aYShlKSxyPSFuJiZEYShlKSxvPSFuJiYhciYmVWEoZSksaT0hbiYmIXImJiFvJiZpbChlKSxhPW58fHJ8fG98fGksbD1hP0d0KGUubGVuZ3RoLEVlKTpbXSxzPWwubGVuZ3RoO2Zvcih2YXIgYyBpbiBlKSF0JiYhQWUuY2FsbChlLGMpfHxhJiYoXCJsZW5ndGhcIj09Y3x8byYmKFwib2Zmc2V0XCI9PWN8fFwicGFyZW50XCI9PWMpfHxpJiYoXCJidWZmZXJcIj09Y3x8XCJieXRlTGVuZ3RoXCI9PWN8fFwiYnl0ZU9mZnNldFwiPT1jKXx8dmkoYyxzKSl8fGwucHVzaChjKTtyZXR1cm4gbH1mdW5jdGlvbiBxbihlKXt2YXIgdD1lLmxlbmd0aDtyZXR1cm4gdD9lW1VyKDAsdC0xKV06b31mdW5jdGlvbiBZbihlLHQpe3JldHVybiBSaShFbyhlKSxvcih0LDAsZS5sZW5ndGgpKX1mdW5jdGlvbiBLbihlKXtyZXR1cm4gUmkoRW8oZSkpfWZ1bmN0aW9uIFhuKGUsdCxuKXsobiE9PW8mJiFIYShlW3RdLG4pfHxuPT09byYmISh0IGluIGUpKSYmbnIoZSx0LG4pfWZ1bmN0aW9uIEpuKGUsdCxuKXt2YXIgcj1lW3RdO0FlLmNhbGwoZSx0KSYmSGEocixuKSYmKG4hPT1vfHx0IGluIGUpfHxucihlLHQsbil9ZnVuY3Rpb24gUW4oZSx0KXtmb3IodmFyIG49ZS5sZW5ndGg7bi0tOylpZihIYShlW25dWzBdLHQpKXJldHVybiBuO3JldHVybi0xfWZ1bmN0aW9uIGVyKGUsdCxuLHIpe3JldHVybiBjcihlLChmdW5jdGlvbihlLG8saSl7dChyLGUsbihlKSxpKX0pKSxyfWZ1bmN0aW9uIHRyKGUsdCl7cmV0dXJuIGUmJlNvKHQsU2wodCksZSl9ZnVuY3Rpb24gbnIoZSx0LG4pe1wiX19wcm90b19fXCI9PXQmJmV0P2V0KGUsdCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6bix3cml0YWJsZTohMH0pOmVbdF09bn1mdW5jdGlvbiBycihlLHQpe2Zvcih2YXIgbj0tMSxpPXQubGVuZ3RoLGE9cihpKSxsPW51bGw9PWU7KytuPGk7KWFbbl09bD9vOnhsKGUsdFtuXSk7cmV0dXJuIGF9ZnVuY3Rpb24gb3IoZSx0LG4pe3JldHVybiBlPT1lJiYobiE9PW8mJihlPWU8PW4/ZTpuKSx0IT09byYmKGU9ZT49dD9lOnQpKSxlfWZ1bmN0aW9uIGlyKGUsdCxuLHIsaSxhKXt2YXIgbCxzPTEmdCxjPTImdCx1PTQmdDtpZihuJiYobD1pP24oZSxyLGksYSk6bihlKSksbCE9PW8pcmV0dXJuIGw7aWYoIUthKGUpKXJldHVybiBlO3ZhciBmPVphKGUpO2lmKGYpe2lmKGw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGgsbj1uZXcgZS5jb25zdHJ1Y3Rvcih0KTtyZXR1cm4gdCYmXCJzdHJpbmdcIj09dHlwZW9mIGVbMF0mJkFlLmNhbGwoZSxcImluZGV4XCIpJiYobi5pbmRleD1lLmluZGV4LG4uaW5wdXQ9ZS5pbnB1dCksbn0oZSksIXMpcmV0dXJuIEVvKGUsbCl9ZWxzZXt2YXIgZD1maShlKSxwPWQ9PXd8fGQ9PWI7aWYoVWEoZSkpcmV0dXJuIHdvKGUscyk7aWYoZD09THx8ZD09dnx8cCYmIWkpe2lmKGw9Y3x8cD97fTpwaShlKSwhcylyZXR1cm4gYz9mdW5jdGlvbihlLHQpe3JldHVybiBTbyhlLHVpKGUpLHQpfShlLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJlNvKHQsTWwodCksZSl9KGwsZSkpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFNvKGUsY2koZSksdCl9KGUsdHIobCxlKSl9ZWxzZXtpZighaXRbZF0pcmV0dXJuIGk/ZTp7fTtsPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvPWUuY29uc3RydWN0b3I7c3dpdGNoKHQpe2Nhc2UgUjpyZXR1cm4gYm8oZSk7Y2FzZSBDOmNhc2UgbTpyZXR1cm4gbmV3IG8oK2UpO2Nhc2UgUDpyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj10P2JvKGUuYnVmZmVyKTplLmJ1ZmZlcjtyZXR1cm4gbmV3IGUuY29uc3RydWN0b3IobixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKX0oZSxuKTtjYXNlIEE6Y2FzZSBJOmNhc2UgVDpjYXNlIEg6Y2FzZSBWOmNhc2UgQjpjYXNlIEQ6Y2FzZSBaOmNhc2UgJDpyZXR1cm4geG8oZSxuKTtjYXNlIHg6cmV0dXJuIG5ldyBvO2Nhc2UgXzpjYXNlIE06cmV0dXJuIG5ldyBvKGUpO2Nhc2UgRTpyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGUuY29uc3RydWN0b3IoZS5zb3VyY2UsZGUuZXhlYyhlKSk7cmV0dXJuIHQubGFzdEluZGV4PWUubGFzdEluZGV4LHR9KGUpO2Nhc2UgUzpyZXR1cm4gbmV3IG87Y2FzZSBqOnJldHVybiByPWUsVG4/TGUoVG4uY2FsbChyKSk6e319fShlLGQscyl9fWF8fChhPW5ldyB6bik7dmFyIGg9YS5nZXQoZSk7aWYoaClyZXR1cm4gaDthLnNldChlLGwpLG5sKGUpP2UuZm9yRWFjaCgoZnVuY3Rpb24ocil7bC5hZGQoaXIocix0LG4scixlLGEpKX0pKTpKYShlKSYmZS5mb3JFYWNoKChmdW5jdGlvbihyLG8pe2wuc2V0KG8saXIocix0LG4sbyxlLGEpKX0pKTt2YXIgZz1mP286KHU/Yz90aTplaTpjP01sOlNsKShlKTtyZXR1cm4gT3QoZ3x8ZSwoZnVuY3Rpb24ocixvKXtnJiYocj1lW289cl0pLEpuKGwsbyxpcihyLHQsbixvLGUsYSkpfSkpLGx9ZnVuY3Rpb24gYXIoZSx0LG4pe3ZhciByPW4ubGVuZ3RoO2lmKG51bGw9PWUpcmV0dXJuIXI7Zm9yKGU9TGUoZSk7ci0tOyl7dmFyIGk9bltyXSxhPXRbaV0sbD1lW2ldO2lmKGw9PT1vJiYhKGkgaW4gZSl8fCFhKGwpKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIGxyKGUsdCxuKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBTZShpKTtyZXR1cm4gU2koKGZ1bmN0aW9uKCl7ZS5hcHBseShvLG4pfSksdCl9ZnVuY3Rpb24gc3IoZSx0LG4scil7dmFyIG89LTEsaT1qdCxhPSEwLGw9ZS5sZW5ndGgscz1bXSxjPXQubGVuZ3RoO2lmKCFsKXJldHVybiBzO24mJih0PVJ0KHQsWXQobikpKSxyPyhpPWt0LGE9ITEpOnQubGVuZ3RoPj0yMDAmJihpPVh0LGE9ITEsdD1uZXcgV24odCkpO2U6Zm9yKDsrK288bDspe3ZhciB1PWVbb10sZj1udWxsPT1uP3U6bih1KTtpZih1PXJ8fDAhPT11P3U6MCxhJiZmPT1mKXtmb3IodmFyIGQ9YztkLS07KWlmKHRbZF09PT1mKWNvbnRpbnVlIGU7cy5wdXNoKHUpfWVsc2UgaSh0LGYscil8fHMucHVzaCh1KX1yZXR1cm4gc31Wbi50ZW1wbGF0ZVNldHRpbmdzPXtlc2NhcGU6WSxldmFsdWF0ZTpLLGludGVycG9sYXRlOlgsdmFyaWFibGU6XCJcIixpbXBvcnRzOntfOlZufX0sVm4ucHJvdG90eXBlPURuLnByb3RvdHlwZSxWbi5wcm90b3R5cGUuY29uc3RydWN0b3I9Vm4sWm4ucHJvdG90eXBlPUJuKERuLnByb3RvdHlwZSksWm4ucHJvdG90eXBlLmNvbnN0cnVjdG9yPVpuLCRuLnByb3RvdHlwZT1CbihEbi5wcm90b3R5cGUpLCRuLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj0kbixGbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPUVuP0VuKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxGbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuaGFzKGUpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1tlXTtyZXR1cm4gdGhpcy5zaXplLT10PzE6MCx0fSxGbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX187aWYoRW4pe3ZhciBuPXRbZV07cmV0dXJuIG49PT1hP286bn1yZXR1cm4gQWUuY2FsbCh0LGUpP3RbZV06b30sRm4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO3JldHVybiBFbj90W2VdIT09bzpBZS5jYWxsKHQsZSl9LEZuLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKGUpPzA6MSxuW2VdPUVuJiZ0PT09bz9hOnQsdGhpc30sTm4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sTm4ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fLG49UW4odCxlKTtyZXR1cm4hKG48MHx8KG49PXQubGVuZ3RoLTE/dC5wb3AoKTpHZS5jYWxsKHQsbiwxKSwtLXRoaXMuc2l6ZSwwKSl9LE5uLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxuPVFuKHQsZSk7cmV0dXJuIG48MD9vOnRbbl1bMV19LE5uLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIFFuKHRoaXMuX19kYXRhX18sZSk+LTF9LE5uLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9fZGF0YV9fLHI9UW4obixlKTtyZXR1cm4gcjwwPygrK3RoaXMuc2l6ZSxuLnB1c2goW2UsdF0pKTpuW3JdWzFdPXQsdGhpc30sVW4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgRm4sbWFwOm5ldyh4bnx8Tm4pLHN0cmluZzpuZXcgRm59fSxVbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3ZhciB0PWFpKHRoaXMsZSkuZGVsZXRlKGUpO3JldHVybiB0aGlzLnNpemUtPXQ/MTowLHR9LFVuLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFpKHRoaXMsZSkuZ2V0KGUpfSxVbi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiBhaSh0aGlzLGUpLmhhcyhlKX0sVW4ucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3ZhciBuPWFpKHRoaXMsZSkscj1uLnNpemU7cmV0dXJuIG4uc2V0KGUsdCksdGhpcy5zaXplKz1uLnNpemU9PXI/MDoxLHRoaXN9LFduLnByb3RvdHlwZS5hZGQ9V24ucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KGUsYSksdGhpc30sV24ucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoZSl9LHpuLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189bmV3IE5uLHRoaXMuc2l6ZT0wfSx6bi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18sbj10LmRlbGV0ZShlKTtyZXR1cm4gdGhpcy5zaXplPXQuc2l6ZSxufSx6bi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldChlKX0sem4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoZSl9LHpuLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9fZGF0YV9fO2lmKG4gaW5zdGFuY2VvZiBObil7dmFyIHI9bi5fX2RhdGFfXztpZigheG58fHIubGVuZ3RoPDE5OSlyZXR1cm4gci5wdXNoKFtlLHRdKSx0aGlzLnNpemU9KytuLnNpemUsdGhpcztuPXRoaXMuX19kYXRhX189bmV3IFVuKHIpfXJldHVybiBuLnNldChlLHQpLHRoaXMuc2l6ZT1uLnNpemUsdGhpc307dmFyIGNyPWtvKENyKSx1cj1rbyhtciwhMCk7ZnVuY3Rpb24gZnIoZSx0KXt2YXIgbj0hMDtyZXR1cm4gY3IoZSwoZnVuY3Rpb24oZSxyLG8pe3JldHVybiBuPSEhdChlLHIsbyl9KSksbn1mdW5jdGlvbiBkcihlLHQsbil7Zm9yKHZhciByPS0xLGk9ZS5sZW5ndGg7KytyPGk7KXt2YXIgYT1lW3JdLGw9dChhKTtpZihudWxsIT1sJiYocz09PW8/bD09bCYmIW9sKGwpOm4obCxzKSkpdmFyIHM9bCxjPWF9cmV0dXJuIGN9ZnVuY3Rpb24gcHIoZSx0KXt2YXIgbj1bXTtyZXR1cm4gY3IoZSwoZnVuY3Rpb24oZSxyLG8pe3QoZSxyLG8pJiZuLnB1c2goZSl9KSksbn1mdW5jdGlvbiBocihlLHQsbixyLG8pe3ZhciBpPS0xLGE9ZS5sZW5ndGg7Zm9yKG58fChuPWhpKSxvfHwobz1bXSk7KytpPGE7KXt2YXIgbD1lW2ldO3Q+MCYmbihsKT90PjE/aHIobCx0LTEsbixyLG8pOlB0KG8sbCk6cnx8KG9bby5sZW5ndGhdPWwpfXJldHVybiBvfXZhciB2cj1SbygpLGdyPVJvKCEwKTtmdW5jdGlvbiBDcihlLHQpe3JldHVybiBlJiZ2cihlLHQsU2wpfWZ1bmN0aW9uIG1yKGUsdCl7cmV0dXJuIGUmJmdyKGUsdCxTbCl9ZnVuY3Rpb24geXIoZSx0KXtyZXR1cm4gTXQodCwoZnVuY3Rpb24odCl7cmV0dXJuIEdhKGVbdF0pfSkpfWZ1bmN0aW9uIHdyKGUsdCl7Zm9yKHZhciBuPTAscj0odD1nbyh0LGUpKS5sZW5ndGg7bnVsbCE9ZSYmbjxyOyllPWVbQWkodFtuKytdKV07cmV0dXJuIG4mJm49PXI/ZTpvfWZ1bmN0aW9uIGJyKGUsdCxuKXt2YXIgcj10KGUpO3JldHVybiBaYShlKT9yOlB0KHIsbihlKSl9ZnVuY3Rpb24geHIoZSl7cmV0dXJuIG51bGw9PWU/ZT09PW8/XCJbb2JqZWN0IFVuZGVmaW5lZF1cIjpcIltvYmplY3QgTnVsbF1cIjpKZSYmSmUgaW4gTGUoZSk/ZnVuY3Rpb24oZSl7dmFyIHQ9QWUuY2FsbChlLEplKSxuPWVbSmVdO3RyeXtlW0plXT1vO3ZhciByPSEwfWNhdGNoKGUpe312YXIgaT1IZS5jYWxsKGUpO3JldHVybiByJiYodD9lW0plXT1uOmRlbGV0ZSBlW0plXSksaX0oZSk6ZnVuY3Rpb24oZSl7cmV0dXJuIEhlLmNhbGwoZSl9KGUpfWZ1bmN0aW9uIF9yKGUsdCl7cmV0dXJuIGU+dH1mdW5jdGlvbiBMcihlLHQpe3JldHVybiBudWxsIT1lJiZBZS5jYWxsKGUsdCl9ZnVuY3Rpb24gT3IoZSx0KXtyZXR1cm4gbnVsbCE9ZSYmdCBpbiBMZShlKX1mdW5jdGlvbiBFcihlLHQsbil7Zm9yKHZhciBpPW4/a3Q6anQsYT1lWzBdLmxlbmd0aCxsPWUubGVuZ3RoLHM9bCxjPXIobCksdT0xLzAsZj1bXTtzLS07KXt2YXIgZD1lW3NdO3MmJnQmJihkPVJ0KGQsWXQodCkpKSx1PWduKGQubGVuZ3RoLHUpLGNbc109IW4mJih0fHxhPj0xMjAmJmQubGVuZ3RoPj0xMjApP25ldyBXbihzJiZkKTpvfWQ9ZVswXTt2YXIgcD0tMSxoPWNbMF07ZTpmb3IoOysrcDxhJiZmLmxlbmd0aDx1Oyl7dmFyIHY9ZFtwXSxnPXQ/dCh2KTp2O2lmKHY9bnx8MCE9PXY/djowLCEoaD9YdChoLGcpOmkoZixnLG4pKSl7Zm9yKHM9bDstLXM7KXt2YXIgQz1jW3NdO2lmKCEoQz9YdChDLGcpOmkoZVtzXSxnLG4pKSljb250aW51ZSBlfWgmJmgucHVzaChnKSxmLnB1c2godil9fXJldHVybiBmfWZ1bmN0aW9uIFNyKGUsdCxuKXt2YXIgcj1udWxsPT0oZT1MaShlLHQ9Z28odCxlKSkpP2U6ZVtBaSh6aSh0KSldO3JldHVybiBudWxsPT1yP286X3QocixlLG4pfWZ1bmN0aW9uIE1yKGUpe3JldHVybiBYYShlKSYmeHIoZSk9PXZ9ZnVuY3Rpb24ganIoZSx0LG4scixpKXtyZXR1cm4gZT09PXR8fChudWxsPT1lfHxudWxsPT10fHwhWGEoZSkmJiFYYSh0KT9lIT1lJiZ0IT10OmZ1bmN0aW9uKGUsdCxuLHIsaSxhKXt2YXIgbD1aYShlKSxzPVphKHQpLGM9bD9nOmZpKGUpLHU9cz9nOmZpKHQpLGY9KGM9Yz09dj9MOmMpPT1MLGQ9KHU9dT09dj9MOnUpPT1MLHA9Yz09dTtpZihwJiZVYShlKSl7aWYoIVVhKHQpKXJldHVybiExO2w9ITAsZj0hMX1pZihwJiYhZilyZXR1cm4gYXx8KGE9bmV3IHpuKSxsfHxpbChlKT9KbyhlLHQsbixyLGksYSk6ZnVuY3Rpb24oZSx0LG4scixvLGksYSl7c3dpdGNoKG4pe2Nhc2UgUDppZihlLmJ5dGVMZW5ndGghPXQuYnl0ZUxlbmd0aHx8ZS5ieXRlT2Zmc2V0IT10LmJ5dGVPZmZzZXQpcmV0dXJuITE7ZT1lLmJ1ZmZlcix0PXQuYnVmZmVyO2Nhc2UgUjpyZXR1cm4hKGUuYnl0ZUxlbmd0aCE9dC5ieXRlTGVuZ3RofHwhaShuZXcgRmUoZSksbmV3IEZlKHQpKSk7Y2FzZSBDOmNhc2UgbTpjYXNlIF86cmV0dXJuIEhhKCtlLCt0KTtjYXNlIHk6cmV0dXJuIGUubmFtZT09dC5uYW1lJiZlLm1lc3NhZ2U9PXQubWVzc2FnZTtjYXNlIEU6Y2FzZSBNOnJldHVybiBlPT10K1wiXCI7Y2FzZSB4OnZhciBsPW9uO2Nhc2UgUzp2YXIgcz0xJnI7aWYobHx8KGw9c24pLGUuc2l6ZSE9dC5zaXplJiYhcylyZXR1cm4hMTt2YXIgYz1hLmdldChlKTtpZihjKXJldHVybiBjPT10O3J8PTIsYS5zZXQoZSx0KTt2YXIgdT1KbyhsKGUpLGwodCkscixvLGksYSk7cmV0dXJuIGEuZGVsZXRlKGUpLHU7Y2FzZSBqOmlmKFRuKXJldHVybiBUbi5jYWxsKGUpPT1Ubi5jYWxsKHQpfXJldHVybiExfShlLHQsYyxuLHIsaSxhKTtpZighKDEmbikpe3ZhciBoPWYmJkFlLmNhbGwoZSxcIl9fd3JhcHBlZF9fXCIpLHc9ZCYmQWUuY2FsbCh0LFwiX193cmFwcGVkX19cIik7aWYoaHx8dyl7dmFyIGI9aD9lLnZhbHVlKCk6ZSxPPXc/dC52YWx1ZSgpOnQ7cmV0dXJuIGF8fChhPW5ldyB6biksaShiLE8sbixyLGEpfX1yZXR1cm4hIXAmJihhfHwoYT1uZXcgem4pLGZ1bmN0aW9uKGUsdCxuLHIsaSxhKXt2YXIgbD0xJm4scz1laShlKSxjPXMubGVuZ3RoO2lmKGMhPWVpKHQpLmxlbmd0aCYmIWwpcmV0dXJuITE7Zm9yKHZhciB1PWM7dS0tOyl7dmFyIGY9c1t1XTtpZighKGw/ZiBpbiB0OkFlLmNhbGwodCxmKSkpcmV0dXJuITF9dmFyIGQ9YS5nZXQoZSkscD1hLmdldCh0KTtpZihkJiZwKXJldHVybiBkPT10JiZwPT1lO3ZhciBoPSEwO2Euc2V0KGUsdCksYS5zZXQodCxlKTtmb3IodmFyIHY9bDsrK3U8Yzspe3ZhciBnPWVbZj1zW3VdXSxDPXRbZl07aWYocil2YXIgbT1sP3IoQyxnLGYsdCxlLGEpOnIoZyxDLGYsZSx0LGEpO2lmKCEobT09PW8/Zz09PUN8fGkoZyxDLG4scixhKTptKSl7aD0hMTticmVha312fHwodj1cImNvbnN0cnVjdG9yXCI9PWYpfWlmKGgmJiF2KXt2YXIgeT1lLmNvbnN0cnVjdG9yLHc9dC5jb25zdHJ1Y3Rvcjt5PT13fHwhKFwiY29uc3RydWN0b3JcImluIGUpfHwhKFwiY29uc3RydWN0b3JcImluIHQpfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiB5JiZ5IGluc3RhbmNlb2YgeSYmXCJmdW5jdGlvblwiPT10eXBlb2YgdyYmdyBpbnN0YW5jZW9mIHd8fChoPSExKX1yZXR1cm4gYS5kZWxldGUoZSksYS5kZWxldGUodCksaH0oZSx0LG4scixpLGEpKX0oZSx0LG4scixqcixpKSl9ZnVuY3Rpb24ga3IoZSx0LG4scil7dmFyIGk9bi5sZW5ndGgsYT1pLGw9IXI7aWYobnVsbD09ZSlyZXR1cm4hYTtmb3IoZT1MZShlKTtpLS07KXt2YXIgcz1uW2ldO2lmKGwmJnNbMl0/c1sxXSE9PWVbc1swXV06IShzWzBdaW4gZSkpcmV0dXJuITF9Zm9yKDsrK2k8YTspe3ZhciBjPShzPW5baV0pWzBdLHU9ZVtjXSxmPXNbMV07aWYobCYmc1syXSl7aWYodT09PW8mJiEoYyBpbiBlKSlyZXR1cm4hMX1lbHNle3ZhciBkPW5ldyB6bjtpZihyKXZhciBwPXIodSxmLGMsZSx0LGQpO2lmKCEocD09PW8/anIoZix1LDMscixkKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9ZnVuY3Rpb24gUnIoZSl7cmV0dXJuISghS2EoZSl8fCh0PWUsVGUmJlRlIGluIHQpKSYmKEdhKGUpP0RlOnZlKS50ZXN0KElpKGUpKTt2YXIgdH1mdW5jdGlvbiBQcihlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2U6bnVsbD09ZT9RbDpcIm9iamVjdFwiPT10eXBlb2YgZT9aYShlKT9WcihlWzBdLGVbMV0pOkhyKGUpOnNzKGUpfWZ1bmN0aW9uIEFyKGUpe2lmKCF3aShlKSlyZXR1cm4gaG4oZSk7dmFyIHQ9W107Zm9yKHZhciBuIGluIExlKGUpKUFlLmNhbGwoZSxuKSYmXCJjb25zdHJ1Y3RvclwiIT1uJiZ0LnB1c2gobik7cmV0dXJuIHR9ZnVuY3Rpb24gSXIoZSx0KXtyZXR1cm4gZTx0fWZ1bmN0aW9uIFRyKGUsdCl7dmFyIG49LTEsbz1GYShlKT9yKGUubGVuZ3RoKTpbXTtyZXR1cm4gY3IoZSwoZnVuY3Rpb24oZSxyLGkpe29bKytuXT10KGUscixpKX0pKSxvfWZ1bmN0aW9uIEhyKGUpe3ZhciB0PWxpKGUpO3JldHVybiAxPT10Lmxlbmd0aCYmdFswXVsyXT94aSh0WzBdWzBdLHRbMF1bMV0pOmZ1bmN0aW9uKG4pe3JldHVybiBuPT09ZXx8a3IobixlLHQpfX1mdW5jdGlvbiBWcihlLHQpe3JldHVybiBDaShlKSYmYmkodCk/eGkoQWkoZSksdCk6ZnVuY3Rpb24obil7dmFyIHI9eGwobixlKTtyZXR1cm4gcj09PW8mJnI9PT10P19sKG4sZSk6anIodCxyLDMpfX1mdW5jdGlvbiBCcihlLHQsbixyLGkpe2UhPT10JiZ2cih0LChmdW5jdGlvbihhLGwpe2lmKGl8fChpPW5ldyB6biksS2EoYSkpIWZ1bmN0aW9uKGUsdCxuLHIsaSxhLGwpe3ZhciBzPU9pKGUsbiksYz1PaSh0LG4pLHU9bC5nZXQoYyk7aWYodSlYbihlLG4sdSk7ZWxzZXt2YXIgZj1hP2EocyxjLG4rXCJcIixlLHQsbCk6byxkPWY9PT1vO2lmKGQpe3ZhciBwPVphKGMpLGg9IXAmJlVhKGMpLHY9IXAmJiFoJiZpbChjKTtmPWMscHx8aHx8dj9aYShzKT9mPXM6TmEocyk/Zj1FbyhzKTpoPyhkPSExLGY9d28oYywhMCkpOnY/KGQ9ITEsZj14byhjLCEwKSk6Zj1bXTplbChjKXx8RGEoYyk/KGY9cyxEYShzKT9mPXBsKHMpOkthKHMpJiYhR2Eocyl8fChmPXBpKGMpKSk6ZD0hMX1kJiYobC5zZXQoYyxmKSxpKGYsYyxyLGEsbCksbC5kZWxldGUoYykpLFhuKGUsbixmKX19KGUsdCxsLG4sQnIscixpKTtlbHNle3ZhciBzPXI/cihPaShlLGwpLGEsbCtcIlwiLGUsdCxpKTpvO3M9PT1vJiYocz1hKSxYbihlLGwscyl9fSksTWwpfWZ1bmN0aW9uIERyKGUsdCl7dmFyIG49ZS5sZW5ndGg7aWYobilyZXR1cm4gdmkodCs9dDwwP246MCxuKT9lW3RdOm99ZnVuY3Rpb24gWnIoZSx0LG4pe3Q9dC5sZW5ndGg/UnQodCwoZnVuY3Rpb24oZSl7cmV0dXJuIFphKGUpP2Z1bmN0aW9uKHQpe3JldHVybiB3cih0LDE9PT1lLmxlbmd0aD9lWzBdOmUpfTplfSkpOltRbF07dmFyIHI9LTE7dD1SdCh0LFl0KGlpKCkpKTt2YXIgbz1UcihlLChmdW5jdGlvbihlLG4sbyl7dmFyIGk9UnQodCwoZnVuY3Rpb24odCl7cmV0dXJuIHQoZSl9KSk7cmV0dXJue2NyaXRlcmlhOmksaW5kZXg6KytyLHZhbHVlOmV9fSkpO3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPWUubGVuZ3RoO2ZvcihlLnNvcnQodCk7bi0tOyllW25dPWVbbl0udmFsdWU7cmV0dXJuIGV9KG8sKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9LTEsbz1lLmNyaXRlcmlhLGk9dC5jcml0ZXJpYSxhPW8ubGVuZ3RoLGw9bi5sZW5ndGg7KytyPGE7KXt2YXIgcz1fbyhvW3JdLGlbcl0pO2lmKHMpcmV0dXJuIHI+PWw/czpzKihcImRlc2NcIj09bltyXT8tMToxKX1yZXR1cm4gZS5pbmRleC10LmluZGV4fShlLHQsbil9KSl9ZnVuY3Rpb24gJHIoZSx0LG4pe2Zvcih2YXIgcj0tMSxvPXQubGVuZ3RoLGk9e307KytyPG87KXt2YXIgYT10W3JdLGw9d3IoZSxhKTtuKGwsYSkmJllyKGksZ28oYSxlKSxsKX1yZXR1cm4gaX1mdW5jdGlvbiBGcihlLHQsbixyKXt2YXIgbz1yP1p0OkR0LGk9LTEsYT10Lmxlbmd0aCxsPWU7Zm9yKGU9PT10JiYodD1Fbyh0KSksbiYmKGw9UnQoZSxZdChuKSkpOysraTxhOylmb3IodmFyIHM9MCxjPXRbaV0sdT1uP24oYyk6Yzsocz1vKGwsdSxzLHIpKT4tMTspbCE9PWUmJkdlLmNhbGwobCxzLDEpLEdlLmNhbGwoZSxzLDEpO3JldHVybiBlfWZ1bmN0aW9uIE5yKGUsdCl7Zm9yKHZhciBuPWU/dC5sZW5ndGg6MCxyPW4tMTtuLS07KXt2YXIgbz10W25dO2lmKG49PXJ8fG8hPT1pKXt2YXIgaT1vO3ZpKG8pP0dlLmNhbGwoZSxvLDEpOmxvKGUsbyl9fXJldHVybiBlfWZ1bmN0aW9uIFVyKGUsdCl7cmV0dXJuIGUrcHQoeW4oKSoodC1lKzEpKX1mdW5jdGlvbiBXcihlLHQpe3ZhciBuPVwiXCI7aWYoIWV8fHQ8MXx8dD5mKXJldHVybiBuO2Rve3QlMiYmKG4rPWUpLCh0PXB0KHQvMikpJiYoZSs9ZSl9d2hpbGUodCk7cmV0dXJuIG59ZnVuY3Rpb24genIoZSx0KXtyZXR1cm4gTWkoX2koZSx0LFFsKSxlK1wiXCIpfWZ1bmN0aW9uIEdyKGUpe3JldHVybiBxbihIbChlKSl9ZnVuY3Rpb24gcXIoZSx0KXt2YXIgbj1IbChlKTtyZXR1cm4gUmkobixvcih0LDAsbi5sZW5ndGgpKX1mdW5jdGlvbiBZcihlLHQsbixyKXtpZighS2EoZSkpcmV0dXJuIGU7Zm9yKHZhciBpPS0xLGE9KHQ9Z28odCxlKSkubGVuZ3RoLGw9YS0xLHM9ZTtudWxsIT1zJiYrK2k8YTspe3ZhciBjPUFpKHRbaV0pLHU9bjtpZihcIl9fcHJvdG9fX1wiPT09Y3x8XCJjb25zdHJ1Y3RvclwiPT09Y3x8XCJwcm90b3R5cGVcIj09PWMpcmV0dXJuIGU7aWYoaSE9bCl7dmFyIGY9c1tjXTsodT1yP3IoZixjLHMpOm8pPT09byYmKHU9S2EoZik/Zjp2aSh0W2krMV0pP1tdOnt9KX1KbihzLGMsdSkscz1zW2NdfXJldHVybiBlfXZhciBLcj1Tbj9mdW5jdGlvbihlLHQpe3JldHVybiBTbi5zZXQoZSx0KSxlfTpRbCxYcj1ldD9mdW5jdGlvbihlLHQpe3JldHVybiBldChlLFwidG9TdHJpbmdcIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6S2wodCksd3JpdGFibGU6ITB9KX06UWw7ZnVuY3Rpb24gSnIoZSl7cmV0dXJuIFJpKEhsKGUpKX1mdW5jdGlvbiBRcihlLHQsbil7dmFyIG89LTEsaT1lLmxlbmd0aDt0PDAmJih0PS10Pmk/MDppK3QpLChuPW4+aT9pOm4pPDAmJihuKz1pKSxpPXQ+bj8wOm4tdD4+PjAsdD4+Pj0wO2Zvcih2YXIgYT1yKGkpOysrbzxpOylhW29dPWVbbyt0XTtyZXR1cm4gYX1mdW5jdGlvbiBlbyhlLHQpe3ZhciBuO3JldHVybiBjcihlLChmdW5jdGlvbihlLHIsbyl7cmV0dXJuIShuPXQoZSxyLG8pKX0pKSwhIW59ZnVuY3Rpb24gdG8oZSx0LG4pe3ZhciByPTAsbz1udWxsPT1lP3I6ZS5sZW5ndGg7aWYoXCJudW1iZXJcIj09dHlwZW9mIHQmJnQ9PXQmJm88PTIxNDc0ODM2NDcpe2Zvcig7cjxvOyl7dmFyIGk9citvPj4+MSxhPWVbaV07bnVsbCE9PWEmJiFvbChhKSYmKG4/YTw9dDphPHQpP3I9aSsxOm89aX1yZXR1cm4gb31yZXR1cm4gbm8oZSx0LFFsLG4pfWZ1bmN0aW9uIG5vKGUsdCxuLHIpe3ZhciBpPTAsYT1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoMD09PWEpcmV0dXJuIDA7Zm9yKHZhciBsPSh0PW4odCkpIT10LHM9bnVsbD09PXQsYz1vbCh0KSx1PXQ9PT1vO2k8YTspe3ZhciBmPXB0KChpK2EpLzIpLGQ9bihlW2ZdKSxwPWQhPT1vLGg9bnVsbD09PWQsdj1kPT1kLGc9b2woZCk7aWYobCl2YXIgQz1yfHx2O2Vsc2UgQz11P3YmJihyfHxwKTpzP3YmJnAmJihyfHwhaCk6Yz92JiZwJiYhaCYmKHJ8fCFnKTohaCYmIWcmJihyP2Q8PXQ6ZDx0KTtDP2k9ZisxOmE9Zn1yZXR1cm4gZ24oYSw0Mjk0OTY3Mjk0KX1mdW5jdGlvbiBybyhlLHQpe2Zvcih2YXIgbj0tMSxyPWUubGVuZ3RoLG89MCxpPVtdOysrbjxyOyl7dmFyIGE9ZVtuXSxsPXQ/dChhKTphO2lmKCFufHwhSGEobCxzKSl7dmFyIHM9bDtpW28rK109MD09PWE/MDphfX1yZXR1cm4gaX1mdW5jdGlvbiBvbyhlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT9lOm9sKGUpP2Q6K2V9ZnVuY3Rpb24gaW8oZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoWmEoZSkpcmV0dXJuIFJ0KGUsaW8pK1wiXCI7aWYob2woZSkpcmV0dXJuIEhuP0huLmNhbGwoZSk6XCJcIjt2YXIgdD1lK1wiXCI7cmV0dXJuXCIwXCI9PXQmJjEvZT09LTEvMD9cIi0wXCI6dH1mdW5jdGlvbiBhbyhlLHQsbil7dmFyIHI9LTEsbz1qdCxpPWUubGVuZ3RoLGE9ITAsbD1bXSxzPWw7aWYobilhPSExLG89a3Q7ZWxzZSBpZihpPj0yMDApe3ZhciBjPXQ/bnVsbDp6byhlKTtpZihjKXJldHVybiBzbihjKTthPSExLG89WHQscz1uZXcgV259ZWxzZSBzPXQ/W106bDtlOmZvcig7KytyPGk7KXt2YXIgdT1lW3JdLGY9dD90KHUpOnU7aWYodT1ufHwwIT09dT91OjAsYSYmZj09Zil7Zm9yKHZhciBkPXMubGVuZ3RoO2QtLTspaWYoc1tkXT09PWYpY29udGludWUgZTt0JiZzLnB1c2goZiksbC5wdXNoKHUpfWVsc2UgbyhzLGYsbil8fChzIT09bCYmcy5wdXNoKGYpLGwucHVzaCh1KSl9cmV0dXJuIGx9ZnVuY3Rpb24gbG8oZSx0KXtyZXR1cm4gbnVsbD09KGU9TGkoZSx0PWdvKHQsZSkpKXx8ZGVsZXRlIGVbQWkoemkodCkpXX1mdW5jdGlvbiBzbyhlLHQsbixyKXtyZXR1cm4gWXIoZSx0LG4od3IoZSx0KSkscil9ZnVuY3Rpb24gY28oZSx0LG4scil7Zm9yKHZhciBvPWUubGVuZ3RoLGk9cj9vOi0xOyhyP2ktLTorK2k8bykmJnQoZVtpXSxpLGUpOyk7cmV0dXJuIG4/UXIoZSxyPzA6aSxyP2krMTpvKTpRcihlLHI/aSsxOjAscj9vOmkpfWZ1bmN0aW9uIHVvKGUsdCl7dmFyIG49ZTtyZXR1cm4gbiBpbnN0YW5jZW9mICRuJiYobj1uLnZhbHVlKCkpLEF0KHQsKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuZnVuYy5hcHBseSh0LnRoaXNBcmcsUHQoW2VdLHQuYXJncykpfSksbil9ZnVuY3Rpb24gZm8oZSx0LG4pe3ZhciBvPWUubGVuZ3RoO2lmKG88MilyZXR1cm4gbz9hbyhlWzBdKTpbXTtmb3IodmFyIGk9LTEsYT1yKG8pOysraTxvOylmb3IodmFyIGw9ZVtpXSxzPS0xOysrczxvOylzIT1pJiYoYVtpXT1zcihhW2ldfHxsLGVbc10sdCxuKSk7cmV0dXJuIGFvKGhyKGEsMSksdCxuKX1mdW5jdGlvbiBwbyhlLHQsbil7Zm9yKHZhciByPS0xLGk9ZS5sZW5ndGgsYT10Lmxlbmd0aCxsPXt9OysrcjxpOyl7dmFyIHM9cjxhP3Rbcl06bztuKGwsZVtyXSxzKX1yZXR1cm4gbH1mdW5jdGlvbiBobyhlKXtyZXR1cm4gTmEoZSk/ZTpbXX1mdW5jdGlvbiB2byhlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2U6UWx9ZnVuY3Rpb24gZ28oZSx0KXtyZXR1cm4gWmEoZSk/ZTpDaShlLHQpP1tlXTpQaShobChlKSl9dmFyIENvPXpyO2Z1bmN0aW9uIG1vKGUsdCxuKXt2YXIgcj1lLmxlbmd0aDtyZXR1cm4gbj1uPT09bz9yOm4sIXQmJm4+PXI/ZTpRcihlLHQsbil9dmFyIHlvPWF0fHxmdW5jdGlvbihlKXtyZXR1cm4gZnQuY2xlYXJUaW1lb3V0KGUpfTtmdW5jdGlvbiB3byhlLHQpe2lmKHQpcmV0dXJuIGUuc2xpY2UoKTt2YXIgbj1lLmxlbmd0aCxyPU5lP05lKG4pOm5ldyBlLmNvbnN0cnVjdG9yKG4pO3JldHVybiBlLmNvcHkocikscn1mdW5jdGlvbiBibyhlKXt2YXIgdD1uZXcgZS5jb25zdHJ1Y3RvcihlLmJ5dGVMZW5ndGgpO3JldHVybiBuZXcgRmUodCkuc2V0KG5ldyBGZShlKSksdH1mdW5jdGlvbiB4byhlLHQpe3ZhciBuPXQ/Ym8oZS5idWZmZXIpOmUuYnVmZmVyO3JldHVybiBuZXcgZS5jb25zdHJ1Y3RvcihuLGUuYnl0ZU9mZnNldCxlLmxlbmd0aCl9ZnVuY3Rpb24gX28oZSx0KXtpZihlIT09dCl7dmFyIG49ZSE9PW8scj1udWxsPT09ZSxpPWU9PWUsYT1vbChlKSxsPXQhPT1vLHM9bnVsbD09PXQsYz10PT10LHU9b2wodCk7aWYoIXMmJiF1JiYhYSYmZT50fHxhJiZsJiZjJiYhcyYmIXV8fHImJmwmJmN8fCFuJiZjfHwhaSlyZXR1cm4gMTtpZighciYmIWEmJiF1JiZlPHR8fHUmJm4mJmkmJiFyJiYhYXx8cyYmbiYmaXx8IWwmJml8fCFjKXJldHVybi0xfXJldHVybiAwfWZ1bmN0aW9uIExvKGUsdCxuLG8pe2Zvcih2YXIgaT0tMSxhPWUubGVuZ3RoLGw9bi5sZW5ndGgscz0tMSxjPXQubGVuZ3RoLHU9dm4oYS1sLDApLGY9cihjK3UpLGQ9IW87KytzPGM7KWZbc109dFtzXTtmb3IoOysraTxsOykoZHx8aTxhKSYmKGZbbltpXV09ZVtpXSk7Zm9yKDt1LS07KWZbcysrXT1lW2krK107cmV0dXJuIGZ9ZnVuY3Rpb24gT28oZSx0LG4sbyl7Zm9yKHZhciBpPS0xLGE9ZS5sZW5ndGgsbD0tMSxzPW4ubGVuZ3RoLGM9LTEsdT10Lmxlbmd0aCxmPXZuKGEtcywwKSxkPXIoZit1KSxwPSFvOysraTxmOylkW2ldPWVbaV07Zm9yKHZhciBoPWk7KytjPHU7KWRbaCtjXT10W2NdO2Zvcig7KytsPHM7KShwfHxpPGEpJiYoZFtoK25bbF1dPWVbaSsrXSk7cmV0dXJuIGR9ZnVuY3Rpb24gRW8oZSx0KXt2YXIgbj0tMSxvPWUubGVuZ3RoO2Zvcih0fHwodD1yKG8pKTsrK248bzspdFtuXT1lW25dO3JldHVybiB0fWZ1bmN0aW9uIFNvKGUsdCxuLHIpe3ZhciBpPSFuO258fChuPXt9KTtmb3IodmFyIGE9LTEsbD10Lmxlbmd0aDsrK2E8bDspe3ZhciBzPXRbYV0sYz1yP3IobltzXSxlW3NdLHMsbixlKTpvO2M9PT1vJiYoYz1lW3NdKSxpP25yKG4scyxjKTpKbihuLHMsYyl9cmV0dXJuIG59ZnVuY3Rpb24gTW8oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXt2YXIgbz1aYShuKT9MdDplcixpPXQ/dCgpOnt9O3JldHVybiBvKG4sZSxpaShyLDIpLGkpfX1mdW5jdGlvbiBqbyhlKXtyZXR1cm4genIoKGZ1bmN0aW9uKHQsbil7dmFyIHI9LTEsaT1uLmxlbmd0aCxhPWk+MT9uW2ktMV06byxsPWk+Mj9uWzJdOm87Zm9yKGE9ZS5sZW5ndGg+MyYmXCJmdW5jdGlvblwiPT10eXBlb2YgYT8oaS0tLGEpOm8sbCYmZ2koblswXSxuWzFdLGwpJiYoYT1pPDM/bzphLGk9MSksdD1MZSh0KTsrK3I8aTspe3ZhciBzPW5bcl07cyYmZSh0LHMscixhKX1yZXR1cm4gdH0pKX1mdW5jdGlvbiBrbyhlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe2lmKG51bGw9PW4pcmV0dXJuIG47aWYoIUZhKG4pKXJldHVybiBlKG4scik7Zm9yKHZhciBvPW4ubGVuZ3RoLGk9dD9vOi0xLGE9TGUobik7KHQ/aS0tOisraTxvKSYmITEhPT1yKGFbaV0saSxhKTspO3JldHVybiBufX1mdW5jdGlvbiBSbyhlKXtyZXR1cm4gZnVuY3Rpb24odCxuLHIpe2Zvcih2YXIgbz0tMSxpPUxlKHQpLGE9cih0KSxsPWEubGVuZ3RoO2wtLTspe3ZhciBzPWFbZT9sOisrb107aWYoITE9PT1uKGlbc10scyxpKSlicmVha31yZXR1cm4gdH19ZnVuY3Rpb24gUG8oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXJuKHQ9aGwodCkpP3VuKHQpOm8scj1uP25bMF06dC5jaGFyQXQoMCksaT1uP21vKG4sMSkuam9pbihcIlwiKTp0LnNsaWNlKDEpO3JldHVybiByW2VdKCkraX19ZnVuY3Rpb24gQW8oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBBdChHbChEbCh0KS5yZXBsYWNlKEtlLFwiXCIpKSxlLFwiXCIpfX1mdW5jdGlvbiBJbyhlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHM7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyBlO2Nhc2UgMTpyZXR1cm4gbmV3IGUodFswXSk7Y2FzZSAyOnJldHVybiBuZXcgZSh0WzBdLHRbMV0pO2Nhc2UgMzpyZXR1cm4gbmV3IGUodFswXSx0WzFdLHRbMl0pO2Nhc2UgNDpyZXR1cm4gbmV3IGUodFswXSx0WzFdLHRbMl0sdFszXSk7Y2FzZSA1OnJldHVybiBuZXcgZSh0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0pO2Nhc2UgNjpyZXR1cm4gbmV3IGUodFswXSx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV0pO2Nhc2UgNzpyZXR1cm4gbmV3IGUodFswXSx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV0sdFs2XSl9dmFyIG49Qm4oZS5wcm90b3R5cGUpLHI9ZS5hcHBseShuLHQpO3JldHVybiBLYShyKT9yOm59fWZ1bmN0aW9uIFRvKGUpe3JldHVybiBmdW5jdGlvbih0LG4scil7dmFyIGk9TGUodCk7aWYoIUZhKHQpKXt2YXIgYT1paShuLDMpO3Q9U2wodCksbj1mdW5jdGlvbihlKXtyZXR1cm4gYShpW2VdLGUsaSl9fXZhciBsPWUodCxuLHIpO3JldHVybiBsPi0xP2lbYT90W2xdOmxdOm99fWZ1bmN0aW9uIEhvKGUpe3JldHVybiBRbygoZnVuY3Rpb24odCl7dmFyIG49dC5sZW5ndGgscj1uLGE9Wm4ucHJvdG90eXBlLnRocnU7Zm9yKGUmJnQucmV2ZXJzZSgpO3ItLTspe3ZhciBsPXRbcl07aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgbCl0aHJvdyBuZXcgU2UoaSk7aWYoYSYmIXMmJlwid3JhcHBlclwiPT1yaShsKSl2YXIgcz1uZXcgWm4oW10sITApfWZvcihyPXM/cjpuOysrcjxuOyl7dmFyIGM9cmkobD10W3JdKSx1PVwid3JhcHBlclwiPT1jP25pKGwpOm87cz11JiZtaSh1WzBdKSYmNDI0PT11WzFdJiYhdVs0XS5sZW5ndGgmJjE9PXVbOV0/c1tyaSh1WzBdKV0uYXBwbHkocyx1WzNdKToxPT1sLmxlbmd0aCYmbWkobCk/c1tjXSgpOnMudGhydShsKX1yZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMscj1lWzBdO2lmKHMmJjE9PWUubGVuZ3RoJiZaYShyKSlyZXR1cm4gcy5wbGFudChyKS52YWx1ZSgpO2Zvcih2YXIgbz0wLGk9bj90W29dLmFwcGx5KHRoaXMsZSk6cjsrK288bjspaT10W29dLmNhbGwodGhpcyxpKTtyZXR1cm4gaX19KSl9ZnVuY3Rpb24gVm8oZSx0LG4saSxhLGwscyx1LGYsZCl7dmFyIHA9dCZjLGg9MSZ0LHY9MiZ0LGc9MjQmdCxDPTUxMiZ0LG09dj9vOklvKGUpO3JldHVybiBmdW5jdGlvbiBjKCl7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsdz1yKHkpLGI9eTtiLS07KXdbYl09YXJndW1lbnRzW2JdO2lmKGcpdmFyIHg9b2koYyksXz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aCxyPTA7bi0tOyllW25dPT09dCYmKytyO3JldHVybiByfSh3LHgpO2lmKGkmJih3PUxvKHcsaSxhLGcpKSxsJiYodz1Pbyh3LGwscyxnKSkseS09XyxnJiZ5PGQpe3ZhciBMPWxuKHcseCk7cmV0dXJuIFVvKGUsdCxWbyxjLnBsYWNlaG9sZGVyLG4sdyxMLHUsZixkLXkpfXZhciBPPWg/bjp0aGlzLEU9dj9PW2VdOmU7cmV0dXJuIHk9dy5sZW5ndGgsdT93PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPWUubGVuZ3RoLHI9Z24odC5sZW5ndGgsbiksaT1FbyhlKTtyLS07KXt2YXIgYT10W3JdO2Vbcl09dmkoYSxuKT9pW2FdOm99cmV0dXJuIGV9KHcsdSk6QyYmeT4xJiZ3LnJldmVyc2UoKSxwJiZmPHkmJih3Lmxlbmd0aD1mKSx0aGlzJiZ0aGlzIT09ZnQmJnRoaXMgaW5zdGFuY2VvZiBjJiYoRT1tfHxJbyhFKSksRS5hcHBseShPLHcpfX1mdW5jdGlvbiBCbyhlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe3JldHVybiBmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gQ3IoZSwoZnVuY3Rpb24oZSxvLGkpe3QocixuKGUpLG8saSl9KSkscn0obixlLHQocikse30pfX1mdW5jdGlvbiBEbyhlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe3ZhciBpO2lmKG49PT1vJiZyPT09bylyZXR1cm4gdDtpZihuIT09byYmKGk9biksciE9PW8pe2lmKGk9PT1vKXJldHVybiByO1wic3RyaW5nXCI9PXR5cGVvZiBufHxcInN0cmluZ1wiPT10eXBlb2Ygcj8obj1pbyhuKSxyPWlvKHIpKToobj1vbyhuKSxyPW9vKHIpKSxpPWUobixyKX1yZXR1cm4gaX19ZnVuY3Rpb24gWm8oZSl7cmV0dXJuIFFvKChmdW5jdGlvbih0KXtyZXR1cm4gdD1SdCh0LFl0KGlpKCkpKSx6cigoZnVuY3Rpb24obil7dmFyIHI9dGhpcztyZXR1cm4gZSh0LChmdW5jdGlvbihlKXtyZXR1cm4gX3QoZSxyLG4pfSkpfSkpfSkpfWZ1bmN0aW9uICRvKGUsdCl7dmFyIG49KHQ9dD09PW8/XCIgXCI6aW8odCkpLmxlbmd0aDtpZihuPDIpcmV0dXJuIG4/V3IodCxlKTp0O3ZhciByPVdyKHQsZHQoZS9jbih0KSkpO3JldHVybiBybih0KT9tbyh1bihyKSwwLGUpLmpvaW4oXCJcIik6ci5zbGljZSgwLGUpfWZ1bmN0aW9uIEZvKGUpe3JldHVybiBmdW5jdGlvbih0LG4saSl7cmV0dXJuIGkmJlwibnVtYmVyXCIhPXR5cGVvZiBpJiZnaSh0LG4saSkmJihuPWk9byksdD1jbCh0KSxuPT09bz8obj10LHQ9MCk6bj1jbChuKSxmdW5jdGlvbihlLHQsbixvKXtmb3IodmFyIGk9LTEsYT12bihkdCgodC1lKS8obnx8MSkpLDApLGw9cihhKTthLS07KWxbbz9hOisraV09ZSxlKz1uO3JldHVybiBsfSh0LG4saT1pPT09bz90PG4/MTotMTpjbChpKSxlKX19ZnVuY3Rpb24gTm8oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQmJlwic3RyaW5nXCI9PXR5cGVvZiBufHwodD1kbCh0KSxuPWRsKG4pKSxlKHQsbil9fWZ1bmN0aW9uIFVvKGUsdCxuLHIsaSxhLGwsYyx1LGYpe3ZhciBkPTgmdDt0fD1kP3M6NjQsNCYodCY9fihkPzY0OnMpKXx8KHQmPS00KTt2YXIgcD1bZSx0LGksZD9hOm8sZD9sOm8sZD9vOmEsZD9vOmwsYyx1LGZdLGg9bi5hcHBseShvLHApO3JldHVybiBtaShlKSYmRWkoaCxwKSxoLnBsYWNlaG9sZGVyPXIsamkoaCxlLHQpfWZ1bmN0aW9uIFdvKGUpe3ZhciB0PV9lW2VdO3JldHVybiBmdW5jdGlvbihlLG4pe2lmKGU9ZGwoZSksKG49bnVsbD09bj8wOmduKHVsKG4pLDI5MikpJiZIdChlKSl7dmFyIHI9KGhsKGUpK1wiZVwiKS5zcGxpdChcImVcIik7cmV0dXJuKygocj0oaGwodChyWzBdK1wiZVwiKygrclsxXStuKSkpK1wiZVwiKS5zcGxpdChcImVcIikpWzBdK1wiZVwiKygrclsxXS1uKSl9cmV0dXJuIHQoZSl9fXZhciB6bz1MbiYmMS9zbihuZXcgTG4oWywtMF0pKVsxXT09dT9mdW5jdGlvbihlKXtyZXR1cm4gbmV3IExuKGUpfTpvcztmdW5jdGlvbiBHbyhlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49ZmkodCk7cmV0dXJuIG49PXg/b24odCk6bj09Uz9mdW5jdGlvbihlKXt2YXIgdD0tMSxuPUFycmF5KGUuc2l6ZSk7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7blsrK3RdPVtlLGVdfSkpLG59KHQpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFJ0KHQsKGZ1bmN0aW9uKHQpe3JldHVyblt0LGVbdF1dfSkpfSh0LGUodCkpfX1mdW5jdGlvbiBxbyhlLHQsbixhLHUsZixkLHApe3ZhciBoPTImdDtpZighaCYmXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgU2UoaSk7dmFyIHY9YT9hLmxlbmd0aDowO2lmKHZ8fCh0Jj0tOTcsYT11PW8pLGQ9ZD09PW8/ZDp2bih1bChkKSwwKSxwPXA9PT1vP3A6dWwocCksdi09dT91Lmxlbmd0aDowLDY0JnQpe3ZhciBnPWEsQz11O2E9dT1vfXZhciBtPWg/bzpuaShlKSx5PVtlLHQsbixhLHUsZyxDLGYsZCxwXTtpZihtJiZmdW5jdGlvbihlLHQpe3ZhciBuPWVbMV0scj10WzFdLG89bnxyLGk9bzwxMzEsYT1yPT1jJiY4PT1ufHxyPT1jJiYyNTY9PW4mJmVbN10ubGVuZ3RoPD10WzhdfHwzODQ9PXImJnRbN10ubGVuZ3RoPD10WzhdJiY4PT1uO2lmKCFpJiYhYSlyZXR1cm4gZTsxJnImJihlWzJdPXRbMl0sb3w9MSZuPzA6NCk7dmFyIHM9dFszXTtpZihzKXt2YXIgdT1lWzNdO2VbM109dT9Mbyh1LHMsdFs0XSk6cyxlWzRdPXU/bG4oZVszXSxsKTp0WzRdfShzPXRbNV0pJiYodT1lWzVdLGVbNV09dT9Pbyh1LHMsdFs2XSk6cyxlWzZdPXU/bG4oZVs1XSxsKTp0WzZdKSwocz10WzddKSYmKGVbN109cyksciZjJiYoZVs4XT1udWxsPT1lWzhdP3RbOF06Z24oZVs4XSx0WzhdKSksbnVsbD09ZVs5XSYmKGVbOV09dFs5XSksZVswXT10WzBdLGVbMV09b30oeSxtKSxlPXlbMF0sdD15WzFdLG49eVsyXSxhPXlbM10sdT15WzRdLCEocD15WzldPXlbOV09PT1vP2g/MDplLmxlbmd0aDp2bih5WzldLXYsMCkpJiYyNCZ0JiYodCY9LTI1KSx0JiYxIT10KXc9OD09dHx8MTY9PXQ/ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPUlvKGUpO3JldHVybiBmdW5jdGlvbiBhKCl7Zm9yKHZhciBsPWFyZ3VtZW50cy5sZW5ndGgscz1yKGwpLGM9bCx1PW9pKGEpO2MtLTspc1tjXT1hcmd1bWVudHNbY107dmFyIGY9bDwzJiZzWzBdIT09dSYmc1tsLTFdIT09dT9bXTpsbihzLHUpO3JldHVybihsLT1mLmxlbmd0aCk8bj9VbyhlLHQsVm8sYS5wbGFjZWhvbGRlcixvLHMsZixvLG8sbi1sKTpfdCh0aGlzJiZ0aGlzIT09ZnQmJnRoaXMgaW5zdGFuY2VvZiBhP2k6ZSx0aGlzLHMpfX0oZSx0LHApOnQhPXMmJjMzIT10fHx1Lmxlbmd0aD9Wby5hcHBseShvLHkpOmZ1bmN0aW9uKGUsdCxuLG8pe3ZhciBpPTEmdCxhPUlvKGUpO3JldHVybiBmdW5jdGlvbiB0KCl7Zm9yKHZhciBsPS0xLHM9YXJndW1lbnRzLmxlbmd0aCxjPS0xLHU9by5sZW5ndGgsZj1yKHUrcyksZD10aGlzJiZ0aGlzIT09ZnQmJnRoaXMgaW5zdGFuY2VvZiB0P2E6ZTsrK2M8dTspZltjXT1vW2NdO2Zvcig7cy0tOylmW2MrK109YXJndW1lbnRzWysrbF07cmV0dXJuIF90KGQsaT9uOnRoaXMsZil9fShlLHQsbixhKTtlbHNlIHZhciB3PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0xJnQsbz1JbyhlKTtyZXR1cm4gZnVuY3Rpb24gdCgpe3JldHVybih0aGlzJiZ0aGlzIT09ZnQmJnRoaXMgaW5zdGFuY2VvZiB0P286ZSkuYXBwbHkocj9uOnRoaXMsYXJndW1lbnRzKX19KGUsdCxuKTtyZXR1cm4gamkoKG0/S3I6RWkpKHcseSksZSx0KX1mdW5jdGlvbiBZbyhlLHQsbixyKXtyZXR1cm4gZT09PW98fEhhKGUsa2Vbbl0pJiYhQWUuY2FsbChyLG4pP3Q6ZX1mdW5jdGlvbiBLbyhlLHQsbixyLGksYSl7cmV0dXJuIEthKGUpJiZLYSh0KSYmKGEuc2V0KHQsZSksQnIoZSx0LG8sS28sYSksYS5kZWxldGUodCkpLGV9ZnVuY3Rpb24gWG8oZSl7cmV0dXJuIGVsKGUpP286ZX1mdW5jdGlvbiBKbyhlLHQsbixyLGksYSl7dmFyIGw9MSZuLHM9ZS5sZW5ndGgsYz10Lmxlbmd0aDtpZihzIT1jJiYhKGwmJmM+cykpcmV0dXJuITE7dmFyIHU9YS5nZXQoZSksZj1hLmdldCh0KTtpZih1JiZmKXJldHVybiB1PT10JiZmPT1lO3ZhciBkPS0xLHA9ITAsaD0yJm4/bmV3IFduOm87Zm9yKGEuc2V0KGUsdCksYS5zZXQodCxlKTsrK2Q8czspe3ZhciB2PWVbZF0sZz10W2RdO2lmKHIpdmFyIEM9bD9yKGcsdixkLHQsZSxhKTpyKHYsZyxkLGUsdCxhKTtpZihDIT09byl7aWYoQyljb250aW51ZTtwPSExO2JyZWFrfWlmKGgpe2lmKCFUdCh0LChmdW5jdGlvbihlLHQpe2lmKCFYdChoLHQpJiYodj09PWV8fGkodixlLG4scixhKSkpcmV0dXJuIGgucHVzaCh0KX0pKSl7cD0hMTticmVha319ZWxzZSBpZih2IT09ZyYmIWkodixnLG4scixhKSl7cD0hMTticmVha319cmV0dXJuIGEuZGVsZXRlKGUpLGEuZGVsZXRlKHQpLHB9ZnVuY3Rpb24gUW8oZSl7cmV0dXJuIE1pKF9pKGUsbywkaSksZStcIlwiKX1mdW5jdGlvbiBlaShlKXtyZXR1cm4gYnIoZSxTbCxjaSl9ZnVuY3Rpb24gdGkoZSl7cmV0dXJuIGJyKGUsTWwsdWkpfXZhciBuaT1Tbj9mdW5jdGlvbihlKXtyZXR1cm4gU24uZ2V0KGUpfTpvcztmdW5jdGlvbiByaShlKXtmb3IodmFyIHQ9ZS5uYW1lK1wiXCIsbj1Nblt0XSxyPUFlLmNhbGwoTW4sdCk/bi5sZW5ndGg6MDtyLS07KXt2YXIgbz1uW3JdLGk9by5mdW5jO2lmKG51bGw9PWl8fGk9PWUpcmV0dXJuIG8ubmFtZX1yZXR1cm4gdH1mdW5jdGlvbiBvaShlKXtyZXR1cm4oQWUuY2FsbChWbixcInBsYWNlaG9sZGVyXCIpP1ZuOmUpLnBsYWNlaG9sZGVyfWZ1bmN0aW9uIGlpKCl7dmFyIGU9Vm4uaXRlcmF0ZWV8fGVzO3JldHVybiBlPWU9PT1lcz9QcjplLGFyZ3VtZW50cy5sZW5ndGg/ZShhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdKTplfWZ1bmN0aW9uIGFpKGUsdCl7dmFyIG4scixvPWUuX19kYXRhX187cmV0dXJuKFwic3RyaW5nXCI9PShyPXR5cGVvZihuPXQpKXx8XCJudW1iZXJcIj09cnx8XCJzeW1ib2xcIj09cnx8XCJib29sZWFuXCI9PXI/XCJfX3Byb3RvX19cIiE9PW46bnVsbD09PW4pP29bXCJzdHJpbmdcIj09dHlwZW9mIHQ/XCJzdHJpbmdcIjpcImhhc2hcIl06by5tYXB9ZnVuY3Rpb24gbGkoZSl7Zm9yKHZhciB0PVNsKGUpLG49dC5sZW5ndGg7bi0tOyl7dmFyIHI9dFtuXSxvPWVbcl07dFtuXT1bcixvLGJpKG8pXX1yZXR1cm4gdH1mdW5jdGlvbiBzaShlLHQpe3ZhciBuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/bzplW3RdfShlLHQpO3JldHVybiBScihuKT9uOm99dmFyIGNpPXZ0P2Z1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP1tdOihlPUxlKGUpLE10KHZ0KGUpLChmdW5jdGlvbih0KXtyZXR1cm4gemUuY2FsbChlLHQpfSkpKX06ZnMsdWk9dnQ/ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdO2U7KVB0KHQsY2koZSkpLGU9VWUoZSk7cmV0dXJuIHR9OmZzLGZpPXhyO2Z1bmN0aW9uIGRpKGUsdCxuKXtmb3IodmFyIHI9LTEsbz0odD1nbyh0LGUpKS5sZW5ndGgsaT0hMTsrK3I8bzspe3ZhciBhPUFpKHRbcl0pO2lmKCEoaT1udWxsIT1lJiZuKGUsYSkpKWJyZWFrO2U9ZVthXX1yZXR1cm4gaXx8KytyIT1vP2k6ISEobz1udWxsPT1lPzA6ZS5sZW5ndGgpJiZZYShvKSYmdmkoYSxvKSYmKFphKGUpfHxEYShlKSl9ZnVuY3Rpb24gcGkoZSl7cmV0dXJuXCJmdW5jdGlvblwiIT10eXBlb2YgZS5jb25zdHJ1Y3Rvcnx8d2koZSk/e306Qm4oVWUoZSkpfWZ1bmN0aW9uIGhpKGUpe3JldHVybiBaYShlKXx8RGEoZSl8fCEhKHFlJiZlJiZlW3FlXSl9ZnVuY3Rpb24gdmkoZSx0KXt2YXIgbj10eXBlb2YgZTtyZXR1cm4hISh0PW51bGw9PXQ/Zjp0KSYmKFwibnVtYmVyXCI9PW58fFwic3ltYm9sXCIhPW4mJkNlLnRlc3QoZSkpJiZlPi0xJiZlJTE9PTAmJmU8dH1mdW5jdGlvbiBnaShlLHQsbil7aWYoIUthKG4pKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEhKFwibnVtYmVyXCI9PXI/RmEobikmJnZpKHQsbi5sZW5ndGgpOlwic3RyaW5nXCI9PXImJnQgaW4gbikmJkhhKG5bdF0sZSl9ZnVuY3Rpb24gQ2koZSx0KXtpZihaYShlKSlyZXR1cm4hMTt2YXIgbj10eXBlb2YgZTtyZXR1cm4hKFwibnVtYmVyXCIhPW4mJlwic3ltYm9sXCIhPW4mJlwiYm9vbGVhblwiIT1uJiZudWxsIT1lJiYhb2woZSkpfHxRLnRlc3QoZSl8fCFKLnRlc3QoZSl8fG51bGwhPXQmJmUgaW4gTGUodCl9ZnVuY3Rpb24gbWkoZSl7dmFyIHQ9cmkoZSksbj1Wblt0XTtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBufHwhKHQgaW4gJG4ucHJvdG90eXBlKSlyZXR1cm4hMTtpZihlPT09bilyZXR1cm4hMDt2YXIgcj1uaShuKTtyZXR1cm4hIXImJmU9PT1yWzBdfShibiYmZmkobmV3IGJuKG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1QfHx4biYmZmkobmV3IHhuKSE9eHx8X24mJmZpKF9uLnJlc29sdmUoKSkhPU98fExuJiZmaShuZXcgTG4pIT1TfHxPbiYmZmkobmV3IE9uKSE9aykmJihmaT1mdW5jdGlvbihlKXt2YXIgdD14cihlKSxuPXQ9PUw/ZS5jb25zdHJ1Y3RvcjpvLHI9bj9JaShuKTpcIlwiO2lmKHIpc3dpdGNoKHIpe2Nhc2Ugam46cmV0dXJuIFA7Y2FzZSBrbjpyZXR1cm4geDtjYXNlIFJuOnJldHVybiBPO2Nhc2UgUG46cmV0dXJuIFM7Y2FzZSBBbjpyZXR1cm4ga31yZXR1cm4gdH0pO3ZhciB5aT1SZT9HYTpkcztmdW5jdGlvbiB3aShlKXt2YXIgdD1lJiZlLmNvbnN0cnVjdG9yO3JldHVybiBlPT09KFwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJnQucHJvdG90eXBlfHxrZSl9ZnVuY3Rpb24gYmkoZSl7cmV0dXJuIGU9PWUmJiFLYShlKX1mdW5jdGlvbiB4aShlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbnVsbCE9biYmbltlXT09PXQmJih0IT09b3x8ZSBpbiBMZShuKSl9fWZ1bmN0aW9uIF9pKGUsdCxuKXtyZXR1cm4gdD12bih0PT09bz9lLmxlbmd0aC0xOnQsMCksZnVuY3Rpb24oKXtmb3IodmFyIG89YXJndW1lbnRzLGk9LTEsYT12bihvLmxlbmd0aC10LDApLGw9cihhKTsrK2k8YTspbFtpXT1vW3QraV07aT0tMTtmb3IodmFyIHM9cih0KzEpOysraTx0OylzW2ldPW9baV07cmV0dXJuIHNbdF09bihsKSxfdChlLHRoaXMscyl9fWZ1bmN0aW9uIExpKGUsdCl7cmV0dXJuIHQubGVuZ3RoPDI/ZTp3cihlLFFyKHQsMCwtMSkpfWZ1bmN0aW9uIE9pKGUsdCl7aWYoKFwiY29uc3RydWN0b3JcIiE9PXR8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGVbdF0pJiZcIl9fcHJvdG9fX1wiIT10KXJldHVybiBlW3RdfXZhciBFaT1raShLciksU2k9dXR8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ0LnNldFRpbWVvdXQoZSx0KX0sTWk9a2koWHIpO2Z1bmN0aW9uIGppKGUsdCxuKXt2YXIgcj10K1wiXCI7cmV0dXJuIE1pKGUsZnVuY3Rpb24oZSx0KXt2YXIgbj10Lmxlbmd0aDtpZighbilyZXR1cm4gZTt2YXIgcj1uLTE7cmV0dXJuIHRbcl09KG4+MT9cIiYgXCI6XCJcIikrdFtyXSx0PXQuam9pbihuPjI/XCIsIFwiOlwiIFwiKSxlLnJlcGxhY2UoaWUsXCJ7XFxuLyogW3dyYXBwZWQgd2l0aCBcIit0K1wiXSAqL1xcblwiKX0ocixmdW5jdGlvbihlLHQpe3JldHVybiBPdChoLChmdW5jdGlvbihuKXt2YXIgcj1cIl8uXCIrblswXTt0Jm5bMV0mJiFqdChlLHIpJiZlLnB1c2gocil9KSksZS5zb3J0KCl9KGZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goYWUpO3JldHVybiB0P3RbMV0uc3BsaXQobGUpOltdfShyKSxuKSkpfWZ1bmN0aW9uIGtpKGUpe3ZhciB0PTAsbj0wO3JldHVybiBmdW5jdGlvbigpe3ZhciByPUNuKCksaT0xNi0oci1uKTtpZihuPXIsaT4wKXtpZigrK3Q+PTgwMClyZXR1cm4gYXJndW1lbnRzWzBdfWVsc2UgdD0wO3JldHVybiBlLmFwcGx5KG8sYXJndW1lbnRzKX19ZnVuY3Rpb24gUmkoZSx0KXt2YXIgbj0tMSxyPWUubGVuZ3RoLGk9ci0xO2Zvcih0PXQ9PT1vP3I6dDsrK248dDspe3ZhciBhPVVyKG4saSksbD1lW2FdO2VbYV09ZVtuXSxlW25dPWx9cmV0dXJuIGUubGVuZ3RoPXQsZX12YXIgUGk9ZnVuY3Rpb24oZSl7dmFyIHQ9a2EoKGZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiA0Nj09PWUuY2hhckNvZGVBdCgwKSYmdC5wdXNoKFwiXCIpLGUucmVwbGFjZShlZSwoZnVuY3Rpb24oZSxuLHIsbyl7dC5wdXNoKHI/by5yZXBsYWNlKHVlLFwiJDFcIik6bnx8ZSl9KSksdH0pLChmdW5jdGlvbihlKXtyZXR1cm4gNTAwPT09bi5zaXplJiZuLmNsZWFyKCksZX0pKSxuPXQuY2FjaGU7cmV0dXJuIHR9KCk7ZnVuY3Rpb24gQWkoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGV8fG9sKGUpKXJldHVybiBlO3ZhciB0PWUrXCJcIjtyZXR1cm5cIjBcIj09dCYmMS9lPT0tMS8wP1wiLTBcIjp0fWZ1bmN0aW9uIElpKGUpe2lmKG51bGwhPWUpe3RyeXtyZXR1cm4gUGUuY2FsbChlKX1jYXRjaChlKXt9dHJ5e3JldHVybiBlK1wiXCJ9Y2F0Y2goZSl7fX1yZXR1cm5cIlwifWZ1bmN0aW9uIFRpKGUpe2lmKGUgaW5zdGFuY2VvZiAkbilyZXR1cm4gZS5jbG9uZSgpO3ZhciB0PW5ldyBabihlLl9fd3JhcHBlZF9fLGUuX19jaGFpbl9fKTtyZXR1cm4gdC5fX2FjdGlvbnNfXz1FbyhlLl9fYWN0aW9uc19fKSx0Ll9faW5kZXhfXz1lLl9faW5kZXhfXyx0Ll9fdmFsdWVzX189ZS5fX3ZhbHVlc19fLHR9dmFyIEhpPXpyKChmdW5jdGlvbihlLHQpe3JldHVybiBOYShlKT9zcihlLGhyKHQsMSxOYSwhMCkpOltdfSkpLFZpPXpyKChmdW5jdGlvbihlLHQpe3ZhciBuPXppKHQpO3JldHVybiBOYShuKSYmKG49byksTmEoZSk/c3IoZSxocih0LDEsTmEsITApLGlpKG4sMikpOltdfSkpLEJpPXpyKChmdW5jdGlvbihlLHQpe3ZhciBuPXppKHQpO3JldHVybiBOYShuKSYmKG49byksTmEoZSk/c3IoZSxocih0LDEsTmEsITApLG8sbik6W119KSk7ZnVuY3Rpb24gRGkoZSx0LG4pe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtpZighcilyZXR1cm4tMTt2YXIgbz1udWxsPT1uPzA6dWwobik7cmV0dXJuIG88MCYmKG89dm4ocitvLDApKSxCdChlLGlpKHQsMyksbyl9ZnVuY3Rpb24gWmkoZSx0LG4pe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtpZighcilyZXR1cm4tMTt2YXIgaT1yLTE7cmV0dXJuIG4hPT1vJiYoaT11bChuKSxpPW48MD92bihyK2ksMCk6Z24oaSxyLTEpKSxCdChlLGlpKHQsMyksaSwhMCl9ZnVuY3Rpb24gJGkoZSl7cmV0dXJuIG51bGwhPWUmJmUubGVuZ3RoP2hyKGUsMSk6W119ZnVuY3Rpb24gRmkoZSl7cmV0dXJuIGUmJmUubGVuZ3RoP2VbMF06b312YXIgTmk9enIoKGZ1bmN0aW9uKGUpe3ZhciB0PVJ0KGUsaG8pO3JldHVybiB0Lmxlbmd0aCYmdFswXT09PWVbMF0/RXIodCk6W119KSksVWk9enIoKGZ1bmN0aW9uKGUpe3ZhciB0PXppKGUpLG49UnQoZSxobyk7cmV0dXJuIHQ9PT16aShuKT90PW86bi5wb3AoKSxuLmxlbmd0aCYmblswXT09PWVbMF0/RXIobixpaSh0LDIpKTpbXX0pKSxXaT16cigoZnVuY3Rpb24oZSl7dmFyIHQ9emkoZSksbj1SdChlLGhvKTtyZXR1cm4odD1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3Q6bykmJm4ucG9wKCksbi5sZW5ndGgmJm5bMF09PT1lWzBdP0VyKG4sbyx0KTpbXX0pKTtmdW5jdGlvbiB6aShlKXt2YXIgdD1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHQ/ZVt0LTFdOm99dmFyIEdpPXpyKHFpKTtmdW5jdGlvbiBxaShlLHQpe3JldHVybiBlJiZlLmxlbmd0aCYmdCYmdC5sZW5ndGg/RnIoZSx0KTplfXZhciBZaT1RbygoZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lPzA6ZS5sZW5ndGgscj1ycihlLHQpO3JldHVybiBOcihlLFJ0KHQsKGZ1bmN0aW9uKGUpe3JldHVybiB2aShlLG4pPytlOmV9KSkuc29ydChfbykpLHJ9KSk7ZnVuY3Rpb24gS2koZSl7cmV0dXJuIG51bGw9PWU/ZTp3bi5jYWxsKGUpfXZhciBYaT16cigoZnVuY3Rpb24oZSl7cmV0dXJuIGFvKGhyKGUsMSxOYSwhMCkpfSkpLEppPXpyKChmdW5jdGlvbihlKXt2YXIgdD16aShlKTtyZXR1cm4gTmEodCkmJih0PW8pLGFvKGhyKGUsMSxOYSwhMCksaWkodCwyKSl9KSksUWk9enIoKGZ1bmN0aW9uKGUpe3ZhciB0PXppKGUpO3JldHVybiB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dDpvLGFvKGhyKGUsMSxOYSwhMCksbyx0KX0pKTtmdW5jdGlvbiBlYShlKXtpZighZXx8IWUubGVuZ3RoKXJldHVybltdO3ZhciB0PTA7cmV0dXJuIGU9TXQoZSwoZnVuY3Rpb24oZSl7aWYoTmEoZSkpcmV0dXJuIHQ9dm4oZS5sZW5ndGgsdCksITB9KSksR3QodCwoZnVuY3Rpb24odCl7cmV0dXJuIFJ0KGUsTnQodCkpfSkpfWZ1bmN0aW9uIHRhKGUsdCl7aWYoIWV8fCFlLmxlbmd0aClyZXR1cm5bXTt2YXIgbj1lYShlKTtyZXR1cm4gbnVsbD09dD9uOlJ0KG4sKGZ1bmN0aW9uKGUpe3JldHVybiBfdCh0LG8sZSl9KSl9dmFyIG5hPXpyKChmdW5jdGlvbihlLHQpe3JldHVybiBOYShlKT9zcihlLHQpOltdfSkpLHJhPXpyKChmdW5jdGlvbihlKXtyZXR1cm4gZm8oTXQoZSxOYSkpfSkpLG9hPXpyKChmdW5jdGlvbihlKXt2YXIgdD16aShlKTtyZXR1cm4gTmEodCkmJih0PW8pLGZvKE10KGUsTmEpLGlpKHQsMikpfSkpLGlhPXpyKChmdW5jdGlvbihlKXt2YXIgdD16aShlKTtyZXR1cm4gdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3Q6byxmbyhNdChlLE5hKSxvLHQpfSkpLGFhPXpyKGVhKSxsYT16cigoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGgsbj10PjE/ZVt0LTFdOm87cmV0dXJuIG49XCJmdW5jdGlvblwiPT10eXBlb2Ygbj8oZS5wb3AoKSxuKTpvLHRhKGUsbil9KSk7ZnVuY3Rpb24gc2EoZSl7dmFyIHQ9Vm4oZSk7cmV0dXJuIHQuX19jaGFpbl9fPSEwLHR9ZnVuY3Rpb24gY2EoZSx0KXtyZXR1cm4gdChlKX12YXIgdWE9UW8oKGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoLG49dD9lWzBdOjAscj10aGlzLl9fd3JhcHBlZF9fLGk9ZnVuY3Rpb24odCl7cmV0dXJuIHJyKHQsZSl9O3JldHVybiEodD4xfHx0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCkmJnIgaW5zdGFuY2VvZiAkbiYmdmkobik/KChyPXIuc2xpY2UobiwrbisodD8xOjApKSkuX19hY3Rpb25zX18ucHVzaCh7ZnVuYzpjYSxhcmdzOltpXSx0aGlzQXJnOm99KSxuZXcgWm4ocix0aGlzLl9fY2hhaW5fXykudGhydSgoZnVuY3Rpb24oZSl7cmV0dXJuIHQmJiFlLmxlbmd0aCYmZS5wdXNoKG8pLGV9KSkpOnRoaXMudGhydShpKX0pKSxmYT1NbygoZnVuY3Rpb24oZSx0LG4pe0FlLmNhbGwoZSxuKT8rK2Vbbl06bnIoZSxuLDEpfSkpLGRhPVRvKERpKSxwYT1UbyhaaSk7ZnVuY3Rpb24gaGEoZSx0KXtyZXR1cm4oWmEoZSk/T3Q6Y3IpKGUsaWkodCwzKSl9ZnVuY3Rpb24gdmEoZSx0KXtyZXR1cm4oWmEoZSk/RXQ6dXIpKGUsaWkodCwzKSl9dmFyIGdhPU1vKChmdW5jdGlvbihlLHQsbil7QWUuY2FsbChlLG4pP2Vbbl0ucHVzaCh0KTpucihlLG4sW3RdKX0pKSxDYT16cigoZnVuY3Rpb24oZSx0LG4pe3ZhciBvPS0xLGk9XCJmdW5jdGlvblwiPT10eXBlb2YgdCxhPUZhKGUpP3IoZS5sZW5ndGgpOltdO3JldHVybiBjcihlLChmdW5jdGlvbihlKXthWysrb109aT9fdCh0LGUsbik6U3IoZSx0LG4pfSkpLGF9KSksbWE9TW8oKGZ1bmN0aW9uKGUsdCxuKXtucihlLG4sdCl9KSk7ZnVuY3Rpb24geWEoZSx0KXtyZXR1cm4oWmEoZSk/UnQ6VHIpKGUsaWkodCwzKSl9dmFyIHdhPU1vKChmdW5jdGlvbihlLHQsbil7ZVtuPzA6MV0ucHVzaCh0KX0pLChmdW5jdGlvbigpe3JldHVybltbXSxbXV19KSksYmE9enIoKGZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm5bXTt2YXIgbj10Lmxlbmd0aDtyZXR1cm4gbj4xJiZnaShlLHRbMF0sdFsxXSk/dD1bXTpuPjImJmdpKHRbMF0sdFsxXSx0WzJdKSYmKHQ9W3RbMF1dKSxacihlLGhyKHQsMSksW10pfSkpLHhhPWN0fHxmdW5jdGlvbigpe3JldHVybiBmdC5EYXRlLm5vdygpfTtmdW5jdGlvbiBfYShlLHQsbil7cmV0dXJuIHQ9bj9vOnQsdD1lJiZudWxsPT10P2UubGVuZ3RoOnQscW8oZSxjLG8sbyxvLG8sdCl9ZnVuY3Rpb24gTGEoZSx0KXt2YXIgbjtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IG5ldyBTZShpKTtyZXR1cm4gZT11bChlKSxmdW5jdGlvbigpe3JldHVybi0tZT4wJiYobj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSksZTw9MSYmKHQ9byksbn19dmFyIE9hPXpyKChmdW5jdGlvbihlLHQsbil7dmFyIHI9MTtpZihuLmxlbmd0aCl7dmFyIG89bG4obixvaShPYSkpO3J8PXN9cmV0dXJuIHFvKGUscix0LG4sbyl9KSksRWE9enIoKGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zO2lmKG4ubGVuZ3RoKXt2YXIgbz1sbihuLG9pKEVhKSk7cnw9c31yZXR1cm4gcW8odCxyLGUsbixvKX0pKTtmdW5jdGlvbiBTYShlLHQsbil7dmFyIHIsYSxsLHMsYyx1LGY9MCxkPSExLHA9ITEsaD0hMDtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBTZShpKTtmdW5jdGlvbiB2KHQpe3ZhciBuPXIsaT1hO3JldHVybiByPWE9byxmPXQscz1lLmFwcGx5KGksbil9ZnVuY3Rpb24gZyhlKXt2YXIgbj1lLXU7cmV0dXJuIHU9PT1vfHxuPj10fHxuPDB8fHAmJmUtZj49bH1mdW5jdGlvbiBDKCl7dmFyIGU9eGEoKTtpZihnKGUpKXJldHVybiBtKGUpO2M9U2koQyxmdW5jdGlvbihlKXt2YXIgbj10LShlLXUpO3JldHVybiBwP2duKG4sbC0oZS1mKSk6bn0oZSkpfWZ1bmN0aW9uIG0oZSl7cmV0dXJuIGM9byxoJiZyP3YoZSk6KHI9YT1vLHMpfWZ1bmN0aW9uIHkoKXt2YXIgZT14YSgpLG49ZyhlKTtpZihyPWFyZ3VtZW50cyxhPXRoaXMsdT1lLG4pe2lmKGM9PT1vKXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZj1lLGM9U2koQyx0KSxkP3YoZSk6c30odSk7aWYocClyZXR1cm4geW8oYyksYz1TaShDLHQpLHYodSl9cmV0dXJuIGM9PT1vJiYoYz1TaShDLHQpKSxzfXJldHVybiB0PWRsKHQpfHwwLEthKG4pJiYoZD0hIW4ubGVhZGluZyxsPShwPVwibWF4V2FpdFwiaW4gbik/dm4oZGwobi5tYXhXYWl0KXx8MCx0KTpsLGg9XCJ0cmFpbGluZ1wiaW4gbj8hIW4udHJhaWxpbmc6aCkseS5jYW5jZWw9ZnVuY3Rpb24oKXtjIT09byYmeW8oYyksZj0wLHI9dT1hPWM9b30seS5mbHVzaD1mdW5jdGlvbigpe3JldHVybiBjPT09bz9zOm0oeGEoKSl9LHl9dmFyIE1hPXpyKChmdW5jdGlvbihlLHQpe3JldHVybiBscihlLDEsdCl9KSksamE9enIoKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbHIoZSxkbCh0KXx8MCxuKX0pKTtmdW5jdGlvbiBrYShlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGV8fG51bGwhPXQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFNlKGkpO3ZhciBuPWZ1bmN0aW9uKCl7dmFyIHI9YXJndW1lbnRzLG89dD90LmFwcGx5KHRoaXMscik6clswXSxpPW4uY2FjaGU7aWYoaS5oYXMobykpcmV0dXJuIGkuZ2V0KG8pO3ZhciBhPWUuYXBwbHkodGhpcyxyKTtyZXR1cm4gbi5jYWNoZT1pLnNldChvLGEpfHxpLGF9O3JldHVybiBuLmNhY2hlPW5ldyhrYS5DYWNoZXx8VW4pLG59ZnVuY3Rpb24gUmEoZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgU2UoaSk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzO3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAwOnJldHVybiFlLmNhbGwodGhpcyk7Y2FzZSAxOnJldHVybiFlLmNhbGwodGhpcyx0WzBdKTtjYXNlIDI6cmV0dXJuIWUuY2FsbCh0aGlzLHRbMF0sdFsxXSk7Y2FzZSAzOnJldHVybiFlLmNhbGwodGhpcyx0WzBdLHRbMV0sdFsyXSl9cmV0dXJuIWUuYXBwbHkodGhpcyx0KX19a2EuQ2FjaGU9VW47dmFyIFBhPUNvKChmdW5jdGlvbihlLHQpe3ZhciBuPSh0PTE9PXQubGVuZ3RoJiZaYSh0WzBdKT9SdCh0WzBdLFl0KGlpKCkpKTpSdChocih0LDEpLFl0KGlpKCkpKSkubGVuZ3RoO3JldHVybiB6cigoZnVuY3Rpb24ocil7Zm9yKHZhciBvPS0xLGk9Z24oci5sZW5ndGgsbik7KytvPGk7KXJbb109dFtvXS5jYWxsKHRoaXMscltvXSk7cmV0dXJuIF90KGUsdGhpcyxyKX0pKX0pKSxBYT16cigoZnVuY3Rpb24oZSx0KXt2YXIgbj1sbih0LG9pKEFhKSk7cmV0dXJuIHFvKGUscyxvLHQsbil9KSksSWE9enIoKGZ1bmN0aW9uKGUsdCl7dmFyIG49bG4odCxvaShJYSkpO3JldHVybiBxbyhlLDY0LG8sdCxuKX0pKSxUYT1RbygoZnVuY3Rpb24oZSx0KXtyZXR1cm4gcW8oZSwyNTYsbyxvLG8sdCl9KSk7ZnVuY3Rpb24gSGEoZSx0KXtyZXR1cm4gZT09PXR8fGUhPWUmJnQhPXR9dmFyIFZhPU5vKF9yKSxCYT1ObygoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT49dH0pKSxEYT1NcihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP01yOmZ1bmN0aW9uKGUpe3JldHVybiBYYShlKSYmQWUuY2FsbChlLFwiY2FsbGVlXCIpJiYhemUuY2FsbChlLFwiY2FsbGVlXCIpfSxaYT1yLmlzQXJyYXksJGE9Q3Q/WXQoQ3QpOmZ1bmN0aW9uKGUpe3JldHVybiBYYShlKSYmeHIoZSk9PVJ9O2Z1bmN0aW9uIEZhKGUpe3JldHVybiBudWxsIT1lJiZZYShlLmxlbmd0aCkmJiFHYShlKX1mdW5jdGlvbiBOYShlKXtyZXR1cm4gWGEoZSkmJkZhKGUpfXZhciBVYT1ndHx8ZHMsV2E9bXQ/WXQobXQpOmZ1bmN0aW9uKGUpe3JldHVybiBYYShlKSYmeHIoZSk9PW19O2Z1bmN0aW9uIHphKGUpe2lmKCFYYShlKSlyZXR1cm4hMTt2YXIgdD14cihlKTtyZXR1cm4gdD09eXx8XCJbb2JqZWN0IERPTUV4Y2VwdGlvbl1cIj09dHx8XCJzdHJpbmdcIj09dHlwZW9mIGUubWVzc2FnZSYmXCJzdHJpbmdcIj09dHlwZW9mIGUubmFtZSYmIWVsKGUpfWZ1bmN0aW9uIEdhKGUpe2lmKCFLYShlKSlyZXR1cm4hMTt2YXIgdD14cihlKTtyZXR1cm4gdD09d3x8dD09Ynx8XCJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dXCI9PXR8fFwiW29iamVjdCBQcm94eV1cIj09dH1mdW5jdGlvbiBxYShlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZSYmZT09dWwoZSl9ZnVuY3Rpb24gWWEoZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJmU+LTEmJmUlMT09MCYmZTw9Zn1mdW5jdGlvbiBLYShlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4gbnVsbCE9ZSYmKFwib2JqZWN0XCI9PXR8fFwiZnVuY3Rpb25cIj09dCl9ZnVuY3Rpb24gWGEoZSl7cmV0dXJuIG51bGwhPWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlfXZhciBKYT15dD9ZdCh5dCk6ZnVuY3Rpb24oZSl7cmV0dXJuIFhhKGUpJiZmaShlKT09eH07ZnVuY3Rpb24gUWEoZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGV8fFhhKGUpJiZ4cihlKT09X31mdW5jdGlvbiBlbChlKXtpZighWGEoZSl8fHhyKGUpIT1MKXJldHVybiExO3ZhciB0PVVlKGUpO2lmKG51bGw9PT10KXJldHVybiEwO3ZhciBuPUFlLmNhbGwodCxcImNvbnN0cnVjdG9yXCIpJiZ0LmNvbnN0cnVjdG9yO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIG4mJm4gaW5zdGFuY2VvZiBuJiZQZS5jYWxsKG4pPT1WZX12YXIgdGw9d3Q/WXQod3QpOmZ1bmN0aW9uKGUpe3JldHVybiBYYShlKSYmeHIoZSk9PUV9LG5sPWJ0P1l0KGJ0KTpmdW5jdGlvbihlKXtyZXR1cm4gWGEoZSkmJmZpKGUpPT1TfTtmdW5jdGlvbiBybChlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZXx8IVphKGUpJiZYYShlKSYmeHIoZSk9PU19ZnVuY3Rpb24gb2woZSl7cmV0dXJuXCJzeW1ib2xcIj09dHlwZW9mIGV8fFhhKGUpJiZ4cihlKT09an12YXIgaWw9eHQ/WXQoeHQpOmZ1bmN0aW9uKGUpe3JldHVybiBYYShlKSYmWWEoZS5sZW5ndGgpJiYhIW90W3hyKGUpXX0sYWw9Tm8oSXIpLGxsPU5vKChmdW5jdGlvbihlLHQpe3JldHVybiBlPD10fSkpO2Z1bmN0aW9uIHNsKGUpe2lmKCFlKXJldHVybltdO2lmKEZhKGUpKXJldHVybiBybChlKT91bihlKTpFbyhlKTtpZihZZSYmZVtZZV0pcmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPVtdOyEodD1lLm5leHQoKSkuZG9uZTspbi5wdXNoKHQudmFsdWUpO3JldHVybiBufShlW1llXSgpKTt2YXIgdD1maShlKTtyZXR1cm4odD09eD9vbjp0PT1TP3NuOkhsKShlKX1mdW5jdGlvbiBjbChlKXtyZXR1cm4gZT8oZT1kbChlKSk9PT11fHxlPT09LTEvMD8xNzk3NjkzMTM0ODYyMzE1N2UyOTIqKGU8MD8tMToxKTplPT1lP2U6MDowPT09ZT9lOjB9ZnVuY3Rpb24gdWwoZSl7dmFyIHQ9Y2woZSksbj10JTE7cmV0dXJuIHQ9PXQ/bj90LW46dDowfWZ1bmN0aW9uIGZsKGUpe3JldHVybiBlP29yKHVsKGUpLDAscCk6MH1mdW5jdGlvbiBkbChlKXtpZihcIm51bWJlclwiPT10eXBlb2YgZSlyZXR1cm4gZTtpZihvbChlKSlyZXR1cm4gZDtpZihLYShlKSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgZS52YWx1ZU9mP2UudmFsdWVPZigpOmU7ZT1LYSh0KT90K1wiXCI6dH1pZihcInN0cmluZ1wiIT10eXBlb2YgZSlyZXR1cm4gMD09PWU/ZTorZTtlPXF0KGUpO3ZhciBuPWhlLnRlc3QoZSk7cmV0dXJuIG58fGdlLnRlc3QoZSk/c3QoZS5zbGljZSgyKSxuPzI6OCk6cGUudGVzdChlKT9kOitlfWZ1bmN0aW9uIHBsKGUpe3JldHVybiBTbyhlLE1sKGUpKX1mdW5jdGlvbiBobChlKXtyZXR1cm4gbnVsbD09ZT9cIlwiOmlvKGUpfXZhciB2bD1qbygoZnVuY3Rpb24oZSx0KXtpZih3aSh0KXx8RmEodCkpU28odCxTbCh0KSxlKTtlbHNlIGZvcih2YXIgbiBpbiB0KUFlLmNhbGwodCxuKSYmSm4oZSxuLHRbbl0pfSkpLGdsPWpvKChmdW5jdGlvbihlLHQpe1NvKHQsTWwodCksZSl9KSksQ2w9am8oKGZ1bmN0aW9uKGUsdCxuLHIpe1NvKHQsTWwodCksZSxyKX0pKSxtbD1qbygoZnVuY3Rpb24oZSx0LG4scil7U28odCxTbCh0KSxlLHIpfSkpLHlsPVFvKHJyKSx3bD16cigoZnVuY3Rpb24oZSx0KXtlPUxlKGUpO3ZhciBuPS0xLHI9dC5sZW5ndGgsaT1yPjI/dFsyXTpvO2ZvcihpJiZnaSh0WzBdLHRbMV0saSkmJihyPTEpOysrbjxyOylmb3IodmFyIGE9dFtuXSxsPU1sKGEpLHM9LTEsYz1sLmxlbmd0aDsrK3M8Yzspe3ZhciB1PWxbc10sZj1lW3VdOyhmPT09b3x8SGEoZixrZVt1XSkmJiFBZS5jYWxsKGUsdSkpJiYoZVt1XT1hW3VdKX1yZXR1cm4gZX0pKSxibD16cigoZnVuY3Rpb24oZSl7cmV0dXJuIGUucHVzaChvLEtvKSxfdChrbCxvLGUpfSkpO2Z1bmN0aW9uIHhsKGUsdCxuKXt2YXIgcj1udWxsPT1lP286d3IoZSx0KTtyZXR1cm4gcj09PW8/bjpyfWZ1bmN0aW9uIF9sKGUsdCl7cmV0dXJuIG51bGwhPWUmJmRpKGUsdCxPcil9dmFyIExsPUJvKChmdW5jdGlvbihlLHQsbil7bnVsbCE9dCYmXCJmdW5jdGlvblwiIT10eXBlb2YgdC50b1N0cmluZyYmKHQ9SGUuY2FsbCh0KSksZVt0XT1ufSksS2woUWwpKSxPbD1CbygoZnVuY3Rpb24oZSx0LG4pe251bGwhPXQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHQudG9TdHJpbmcmJih0PUhlLmNhbGwodCkpLEFlLmNhbGwoZSx0KT9lW3RdLnB1c2gobik6ZVt0XT1bbl19KSxpaSksRWw9enIoU3IpO2Z1bmN0aW9uIFNsKGUpe3JldHVybiBGYShlKT9HbihlKTpBcihlKX1mdW5jdGlvbiBNbChlKXtyZXR1cm4gRmEoZSk/R24oZSwhMCk6ZnVuY3Rpb24oZSl7aWYoIUthKGUpKXJldHVybiBmdW5jdGlvbihlKXt2YXIgdD1bXTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBMZShlKSl0LnB1c2gobik7cmV0dXJuIHR9KGUpO3ZhciB0PXdpKGUpLG49W107Zm9yKHZhciByIGluIGUpKFwiY29uc3RydWN0b3JcIiE9cnx8IXQmJkFlLmNhbGwoZSxyKSkmJm4ucHVzaChyKTtyZXR1cm4gbn0oZSl9dmFyIGpsPWpvKChmdW5jdGlvbihlLHQsbil7QnIoZSx0LG4pfSkpLGtsPWpvKChmdW5jdGlvbihlLHQsbixyKXtCcihlLHQsbixyKX0pKSxSbD1RbygoZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtpZihudWxsPT1lKXJldHVybiBuO3ZhciByPSExO3Q9UnQodCwoZnVuY3Rpb24odCl7cmV0dXJuIHQ9Z28odCxlKSxyfHwocj10Lmxlbmd0aD4xKSx0fSkpLFNvKGUsdGkoZSksbiksciYmKG49aXIobiw3LFhvKSk7Zm9yKHZhciBvPXQubGVuZ3RoO28tLTspbG8obix0W29dKTtyZXR1cm4gbn0pKSxQbD1RbygoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZT97fTpmdW5jdGlvbihlLHQpe3JldHVybiAkcihlLHQsKGZ1bmN0aW9uKHQsbil7cmV0dXJuIF9sKGUsbil9KSl9KGUsdCl9KSk7ZnVuY3Rpb24gQWwoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuPVJ0KHRpKGUpLChmdW5jdGlvbihlKXtyZXR1cm5bZV19KSk7cmV0dXJuIHQ9aWkodCksJHIoZSxuLChmdW5jdGlvbihlLG4pe3JldHVybiB0KGUsblswXSl9KSl9dmFyIElsPUdvKFNsKSxUbD1HbyhNbCk7ZnVuY3Rpb24gSGwoZSl7cmV0dXJuIG51bGw9PWU/W106S3QoZSxTbChlKSl9dmFyIFZsPUFvKChmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQ9dC50b0xvd2VyQ2FzZSgpLGUrKG4/QmwodCk6dCl9KSk7ZnVuY3Rpb24gQmwoZSl7cmV0dXJuIHpsKGhsKGUpLnRvTG93ZXJDYXNlKCkpfWZ1bmN0aW9uIERsKGUpe3JldHVybihlPWhsKGUpKSYmZS5yZXBsYWNlKG1lLGVuKS5yZXBsYWNlKFhlLFwiXCIpfXZhciBabD1BbygoZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlKyhuP1wiLVwiOlwiXCIpK3QudG9Mb3dlckNhc2UoKX0pKSwkbD1BbygoZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlKyhuP1wiIFwiOlwiXCIpK3QudG9Mb3dlckNhc2UoKX0pKSxGbD1QbyhcInRvTG93ZXJDYXNlXCIpLE5sPUFvKChmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUrKG4/XCJfXCI6XCJcIikrdC50b0xvd2VyQ2FzZSgpfSkpLFVsPUFvKChmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUrKG4/XCIgXCI6XCJcIikremwodCl9KSksV2w9QW8oKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSsobj9cIiBcIjpcIlwiKSt0LnRvVXBwZXJDYXNlKCl9KSksemw9UG8oXCJ0b1VwcGVyQ2FzZVwiKTtmdW5jdGlvbiBHbChlLHQsbil7cmV0dXJuIGU9aGwoZSksKHQ9bj9vOnQpPT09bz9mdW5jdGlvbihlKXtyZXR1cm4gdHQudGVzdChlKX0oZSk/ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWF0Y2goUWUpfHxbXX0oZSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWF0Y2goc2UpfHxbXX0oZSk6ZS5tYXRjaCh0KXx8W119dmFyIHFsPXpyKChmdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gX3QoZSxvLHQpfWNhdGNoKGUpe3JldHVybiB6YShlKT9lOm5ldyBiZShlKX19KSksWWw9UW8oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE90KHQsKGZ1bmN0aW9uKHQpe3Q9QWkodCksbnIoZSx0LE9hKGVbdF0sZSkpfSkpLGV9KSk7ZnVuY3Rpb24gS2woZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBYbD1IbygpLEpsPUhvKCEwKTtmdW5jdGlvbiBRbChlKXtyZXR1cm4gZX1mdW5jdGlvbiBlcyhlKXtyZXR1cm4gUHIoXCJmdW5jdGlvblwiPT10eXBlb2YgZT9lOmlyKGUsMSkpfXZhciB0cz16cigoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIFNyKG4sZSx0KX19KSksbnM9enIoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBTcihlLG4sdCl9fSkpO2Z1bmN0aW9uIHJzKGUsdCxuKXt2YXIgcj1TbCh0KSxvPXlyKHQscik7bnVsbCE9bnx8S2EodCkmJihvLmxlbmd0aHx8IXIubGVuZ3RoKXx8KG49dCx0PWUsZT10aGlzLG89eXIodCxTbCh0KSkpO3ZhciBpPSEoS2EobikmJlwiY2hhaW5cImluIG4mJiFuLmNoYWluKSxhPUdhKGUpO3JldHVybiBPdChvLChmdW5jdGlvbihuKXt2YXIgcj10W25dO2Vbbl09cixhJiYoZS5wcm90b3R5cGVbbl09ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9fY2hhaW5fXztpZihpfHx0KXt2YXIgbj1lKHRoaXMuX193cmFwcGVkX18pO3JldHVybihuLl9fYWN0aW9uc19fPUVvKHRoaXMuX19hY3Rpb25zX18pKS5wdXNoKHtmdW5jOnIsYXJnczphcmd1bWVudHMsdGhpc0FyZzplfSksbi5fX2NoYWluX189dCxufXJldHVybiByLmFwcGx5KGUsUHQoW3RoaXMudmFsdWUoKV0sYXJndW1lbnRzKSl9KX0pKSxlfWZ1bmN0aW9uIG9zKCl7fXZhciBpcz1abyhSdCksYXM9Wm8oU3QpLGxzPVpvKFR0KTtmdW5jdGlvbiBzcyhlKXtyZXR1cm4gQ2koZSk/TnQoQWkoZSkpOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gd3IodCxlKX19KGUpfXZhciBjcz1GbygpLHVzPUZvKCEwKTtmdW5jdGlvbiBmcygpe3JldHVybltdfWZ1bmN0aW9uIGRzKCl7cmV0dXJuITF9dmFyIHBzLGhzPURvKChmdW5jdGlvbihlLHQpe3JldHVybiBlK3R9KSwwKSx2cz1XbyhcImNlaWxcIiksZ3M9RG8oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUvdH0pLDEpLENzPVdvKFwiZmxvb3JcIiksbXM9RG8oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUqdH0pLDEpLHlzPVdvKFwicm91bmRcIiksd3M9RG8oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUtdH0pLDApO3JldHVybiBWbi5hZnRlcj1mdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFNlKGkpO3JldHVybiBlPXVsKGUpLGZ1bmN0aW9uKCl7aWYoLS1lPDEpcmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sVm4uYXJ5PV9hLFZuLmFzc2lnbj12bCxWbi5hc3NpZ25Jbj1nbCxWbi5hc3NpZ25JbldpdGg9Q2wsVm4uYXNzaWduV2l0aD1tbCxWbi5hdD15bCxWbi5iZWZvcmU9TGEsVm4uYmluZD1PYSxWbi5iaW5kQWxsPVlsLFZuLmJpbmRLZXk9RWEsVm4uY2FzdEFycmF5PWZ1bmN0aW9uKCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW107dmFyIGU9YXJndW1lbnRzWzBdO3JldHVybiBaYShlKT9lOltlXX0sVm4uY2hhaW49c2EsVm4uY2h1bms9ZnVuY3Rpb24oZSx0LG4pe3Q9KG4/Z2koZSx0LG4pOnQ9PT1vKT8xOnZuKHVsKHQpLDApO3ZhciBpPW51bGw9PWU/MDplLmxlbmd0aDtpZighaXx8dDwxKXJldHVybltdO2Zvcih2YXIgYT0wLGw9MCxzPXIoZHQoaS90KSk7YTxpOylzW2wrK109UXIoZSxhLGErPXQpO3JldHVybiBzfSxWbi5jb21wYWN0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0tMSxuPW51bGw9PWU/MDplLmxlbmd0aCxyPTAsbz1bXTsrK3Q8bjspe3ZhciBpPWVbdF07aSYmKG9bcisrXT1pKX1yZXR1cm4gb30sVm4uY29uY2F0PWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDtpZighZSlyZXR1cm5bXTtmb3IodmFyIHQ9cihlLTEpLG49YXJndW1lbnRzWzBdLG89ZTtvLS07KXRbby0xXT1hcmd1bWVudHNbb107cmV0dXJuIFB0KFphKG4pP0VvKG4pOltuXSxocih0LDEpKX0sVm4uY29uZD1mdW5jdGlvbihlKXt2YXIgdD1udWxsPT1lPzA6ZS5sZW5ndGgsbj1paSgpO3JldHVybiBlPXQ/UnQoZSwoZnVuY3Rpb24oZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZVsxXSl0aHJvdyBuZXcgU2UoaSk7cmV0dXJuW24oZVswXSksZVsxXV19KSk6W10senIoKGZ1bmN0aW9uKG4pe2Zvcih2YXIgcj0tMTsrK3I8dDspe3ZhciBvPWVbcl07aWYoX3Qob1swXSx0aGlzLG4pKXJldHVybiBfdChvWzFdLHRoaXMsbil9fSkpfSxWbi5jb25mb3Jtcz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9U2woZSk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBhcihuLGUsdCl9fShpcihlLDEpKX0sVm4uY29uc3RhbnQ9S2wsVm4uY291bnRCeT1mYSxWbi5jcmVhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1CbihlKTtyZXR1cm4gbnVsbD09dD9uOnRyKG4sdCl9LFZuLmN1cnJ5PWZ1bmN0aW9uIGUodCxuLHIpe3ZhciBpPXFvKHQsOCxvLG8sbyxvLG8sbj1yP286bik7cmV0dXJuIGkucGxhY2Vob2xkZXI9ZS5wbGFjZWhvbGRlcixpfSxWbi5jdXJyeVJpZ2h0PWZ1bmN0aW9uIGUodCxuLHIpe3ZhciBpPXFvKHQsMTYsbyxvLG8sbyxvLG49cj9vOm4pO3JldHVybiBpLnBsYWNlaG9sZGVyPWUucGxhY2Vob2xkZXIsaX0sVm4uZGVib3VuY2U9U2EsVm4uZGVmYXVsdHM9d2wsVm4uZGVmYXVsdHNEZWVwPWJsLFZuLmRlZmVyPU1hLFZuLmRlbGF5PWphLFZuLmRpZmZlcmVuY2U9SGksVm4uZGlmZmVyZW5jZUJ5PVZpLFZuLmRpZmZlcmVuY2VXaXRoPUJpLFZuLmRyb3A9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj9RcihlLCh0PW58fHQ9PT1vPzE6dWwodCkpPDA/MDp0LHIpOltdfSxWbi5kcm9wUmlnaHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj9RcihlLDAsKHQ9ci0odD1ufHx0PT09bz8xOnVsKHQpKSk8MD8wOnQpOltdfSxWbi5kcm9wUmlnaHRXaGlsZT1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD9jbyhlLGlpKHQsMyksITAsITApOltdfSxWbi5kcm9wV2hpbGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/Y28oZSxpaSh0LDMpLCEwKTpbXX0sVm4uZmlsbD1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIGk/KG4mJlwibnVtYmVyXCIhPXR5cGVvZiBuJiZnaShlLHQsbikmJihuPTAscj1pKSxmdW5jdGlvbihlLHQsbixyKXt2YXIgaT1lLmxlbmd0aDtmb3IoKG49dWwobikpPDAmJihuPS1uPmk/MDppK24pLChyPXI9PT1vfHxyPmk/aTp1bChyKSk8MCYmKHIrPWkpLHI9bj5yPzA6Zmwocik7bjxyOyllW24rK109dDtyZXR1cm4gZX0oZSx0LG4scikpOltdfSxWbi5maWx0ZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oWmEoZSk/TXQ6cHIpKGUsaWkodCwzKSl9LFZuLmZsYXRNYXA9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaHIoeWEoZSx0KSwxKX0sVm4uZmxhdE1hcERlZXA9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaHIoeWEoZSx0KSx1KX0sVm4uZmxhdE1hcERlcHRoPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj1uPT09bz8xOnVsKG4pLGhyKHlhKGUsdCksbil9LFZuLmZsYXR0ZW49JGksVm4uZmxhdHRlbkRlZXA9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJmUubGVuZ3RoP2hyKGUsdSk6W119LFZuLmZsYXR0ZW5EZXB0aD1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT1lJiZlLmxlbmd0aD9ocihlLHQ9dD09PW8/MTp1bCh0KSk6W119LFZuLmZsaXA9ZnVuY3Rpb24oZSl7cmV0dXJuIHFvKGUsNTEyKX0sVm4uZmxvdz1YbCxWbi5mbG93UmlnaHQ9SmwsVm4uZnJvbVBhaXJzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0tMSxuPW51bGw9PWU/MDplLmxlbmd0aCxyPXt9OysrdDxuOyl7dmFyIG89ZVt0XTtyW29bMF1dPW9bMV19cmV0dXJuIHJ9LFZuLmZ1bmN0aW9ucz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9bXTp5cihlLFNsKGUpKX0sVm4uZnVuY3Rpb25zSW49ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/W106eXIoZSxNbChlKSl9LFZuLmdyb3VwQnk9Z2EsVm4uaW5pdGlhbD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmZS5sZW5ndGg/UXIoZSwwLC0xKTpbXX0sVm4uaW50ZXJzZWN0aW9uPU5pLFZuLmludGVyc2VjdGlvbkJ5PVVpLFZuLmludGVyc2VjdGlvbldpdGg9V2ksVm4uaW52ZXJ0PUxsLFZuLmludmVydEJ5PU9sLFZuLmludm9rZU1hcD1DYSxWbi5pdGVyYXRlZT1lcyxWbi5rZXlCeT1tYSxWbi5rZXlzPVNsLFZuLmtleXNJbj1NbCxWbi5tYXA9eWEsVm4ubWFwS2V5cz1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O3JldHVybiB0PWlpKHQsMyksQ3IoZSwoZnVuY3Rpb24oZSxyLG8pe25yKG4sdChlLHIsbyksZSl9KSksbn0sVm4ubWFwVmFsdWVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49e307cmV0dXJuIHQ9aWkodCwzKSxDcihlLChmdW5jdGlvbihlLHIsbyl7bnIobixyLHQoZSxyLG8pKX0pKSxufSxWbi5tYXRjaGVzPWZ1bmN0aW9uKGUpe3JldHVybiBIcihpcihlLDEpKX0sVm4ubWF0Y2hlc1Byb3BlcnR5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFZyKGUsaXIodCwxKSl9LFZuLm1lbW9pemU9a2EsVm4ubWVyZ2U9amwsVm4ubWVyZ2VXaXRoPWtsLFZuLm1ldGhvZD10cyxWbi5tZXRob2RPZj1ucyxWbi5taXhpbj1ycyxWbi5uZWdhdGU9UmEsVm4ubnRoQXJnPWZ1bmN0aW9uKGUpe3JldHVybiBlPXVsKGUpLHpyKChmdW5jdGlvbih0KXtyZXR1cm4gRHIodCxlKX0pKX0sVm4ub21pdD1SbCxWbi5vbWl0Qnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQWwoZSxSYShpaSh0KSkpfSxWbi5vbmNlPWZ1bmN0aW9uKGUpe3JldHVybiBMYSgyLGUpfSxWbi5vcmRlckJ5PWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBudWxsPT1lP1tdOihaYSh0KXx8KHQ9bnVsbD09dD9bXTpbdF0pLFphKG49cj9vOm4pfHwobj1udWxsPT1uP1tdOltuXSksWnIoZSx0LG4pKX0sVm4ub3Zlcj1pcyxWbi5vdmVyQXJncz1QYSxWbi5vdmVyRXZlcnk9YXMsVm4ub3ZlclNvbWU9bHMsVm4ucGFydGlhbD1BYSxWbi5wYXJ0aWFsUmlnaHQ9SWEsVm4ucGFydGl0aW9uPXdhLFZuLnBpY2s9UGwsVm4ucGlja0J5PUFsLFZuLnByb3BlcnR5PXNzLFZuLnByb3BlcnR5T2Y9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT1lP286d3IoZSx0KX19LFZuLnB1bGw9R2ksVm4ucHVsbEFsbD1xaSxWbi5wdWxsQWxsQnk9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlJiZlLmxlbmd0aCYmdCYmdC5sZW5ndGg/RnIoZSx0LGlpKG4sMikpOmV9LFZuLnB1bGxBbGxXaXRoPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSYmZS5sZW5ndGgmJnQmJnQubGVuZ3RoP0ZyKGUsdCxvLG4pOmV9LFZuLnB1bGxBdD1ZaSxWbi5yYW5nZT1jcyxWbi5yYW5nZVJpZ2h0PXVzLFZuLnJlYXJnPVRhLFZuLnJlamVjdD1mdW5jdGlvbihlLHQpe3JldHVybihaYShlKT9NdDpwcikoZSxSYShpaSh0LDMpKSl9LFZuLnJlbW92ZT1mdW5jdGlvbihlLHQpe3ZhciBuPVtdO2lmKCFlfHwhZS5sZW5ndGgpcmV0dXJuIG47dmFyIHI9LTEsbz1bXSxpPWUubGVuZ3RoO2Zvcih0PWlpKHQsMyk7KytyPGk7KXt2YXIgYT1lW3JdO3QoYSxyLGUpJiYobi5wdXNoKGEpLG8ucHVzaChyKSl9cmV0dXJuIE5yKGUsbyksbn0sVm4ucmVzdD1mdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFNlKGkpO3JldHVybiB6cihlLHQ9dD09PW8/dDp1bCh0KSl9LFZuLnJldmVyc2U9S2ksVm4uc2FtcGxlU2l6ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHQ9KG4/Z2koZSx0LG4pOnQ9PT1vKT8xOnVsKHQpLChaYShlKT9ZbjpxcikoZSx0KX0sVm4uc2V0PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09ZT9lOllyKGUsdCxuKX0sVm4uc2V0V2l0aD1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gcj1cImZ1bmN0aW9uXCI9PXR5cGVvZiByP3I6byxudWxsPT1lP2U6WXIoZSx0LG4scil9LFZuLnNodWZmbGU9ZnVuY3Rpb24oZSl7cmV0dXJuKFphKGUpP0tuOkpyKShlKX0sVm4uc2xpY2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj8obiYmXCJudW1iZXJcIiE9dHlwZW9mIG4mJmdpKGUsdCxuKT8odD0wLG49cik6KHQ9bnVsbD09dD8wOnVsKHQpLG49bj09PW8/cjp1bChuKSksUXIoZSx0LG4pKTpbXX0sVm4uc29ydEJ5PWJhLFZuLnNvcnRlZFVuaXE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUubGVuZ3RoP3JvKGUpOltdfSxWbi5zb3J0ZWRVbmlxQnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/cm8oZSxpaSh0LDIpKTpbXX0sVm4uc3BsaXQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuJiZcIm51bWJlclwiIT10eXBlb2YgbiYmZ2koZSx0LG4pJiYodD1uPW8pLChuPW49PT1vP3A6bj4+PjApPyhlPWhsKGUpKSYmKFwic3RyaW5nXCI9PXR5cGVvZiB0fHxudWxsIT10JiYhdGwodCkpJiYhKHQ9aW8odCkpJiZybihlKT9tbyh1bihlKSwwLG4pOmUuc3BsaXQodCxuKTpbXX0sVm4uc3ByZWFkPWZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgU2UoaSk7cmV0dXJuIHQ9bnVsbD09dD8wOnZuKHVsKHQpLDApLHpyKChmdW5jdGlvbihuKXt2YXIgcj1uW3RdLG89bW8obiwwLHQpO3JldHVybiByJiZQdChvLHIpLF90KGUsdGhpcyxvKX0pKX0sVm4udGFpbD1mdW5jdGlvbihlKXt2YXIgdD1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHQ/UXIoZSwxLHQpOltdfSxWbi50YWtlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSYmZS5sZW5ndGg/UXIoZSwwLCh0PW58fHQ9PT1vPzE6dWwodCkpPDA/MDp0KTpbXX0sVm4udGFrZVJpZ2h0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHI/UXIoZSwodD1yLSh0PW58fHQ9PT1vPzE6dWwodCkpKTwwPzA6dCxyKTpbXX0sVm4udGFrZVJpZ2h0V2hpbGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/Y28oZSxpaSh0LDMpLCExLCEwKTpbXX0sVm4udGFrZVdoaWxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmUubGVuZ3RoP2NvKGUsaWkodCwzKSk6W119LFZuLnRhcD1mdW5jdGlvbihlLHQpe3JldHVybiB0KGUpLGV9LFZuLnRocm90dGxlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0hMCxvPSEwO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFNlKGkpO3JldHVybiBLYShuKSYmKHI9XCJsZWFkaW5nXCJpbiBuPyEhbi5sZWFkaW5nOnIsbz1cInRyYWlsaW5nXCJpbiBuPyEhbi50cmFpbGluZzpvKSxTYShlLHQse2xlYWRpbmc6cixtYXhXYWl0OnQsdHJhaWxpbmc6b30pfSxWbi50aHJ1PWNhLFZuLnRvQXJyYXk9c2wsVm4udG9QYWlycz1JbCxWbi50b1BhaXJzSW49VGwsVm4udG9QYXRoPWZ1bmN0aW9uKGUpe3JldHVybiBaYShlKT9SdChlLEFpKTpvbChlKT9bZV06RW8oUGkoaGwoZSkpKX0sVm4udG9QbGFpbk9iamVjdD1wbCxWbi50cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVphKGUpLG89cnx8VWEoZSl8fGlsKGUpO2lmKHQ9aWkodCw0KSxudWxsPT1uKXt2YXIgaT1lJiZlLmNvbnN0cnVjdG9yO249bz9yP25ldyBpOltdOkthKGUpJiZHYShpKT9CbihVZShlKSk6e319cmV0dXJuKG8/T3Q6Q3IpKGUsKGZ1bmN0aW9uKGUscixvKXtyZXR1cm4gdChuLGUscixvKX0pKSxufSxWbi51bmFyeT1mdW5jdGlvbihlKXtyZXR1cm4gX2EoZSwxKX0sVm4udW5pb249WGksVm4udW5pb25CeT1KaSxWbi51bmlvbldpdGg9UWksVm4udW5pcT1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5sZW5ndGg/YW8oZSk6W119LFZuLnVuaXFCeT1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD9hbyhlLGlpKHQsMikpOltdfSxWbi51bmlxV2l0aD1mdW5jdGlvbihlLHQpe3JldHVybiB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dDpvLGUmJmUubGVuZ3RoP2FvKGUsbyx0KTpbXX0sVm4udW5zZXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZXx8bG8oZSx0KX0sVm4udW56aXA9ZWEsVm4udW56aXBXaXRoPXRhLFZuLnVwZGF0ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PWU/ZTpzbyhlLHQsdm8obikpfSxWbi51cGRhdGVXaXRoPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiByPVwiZnVuY3Rpb25cIj09dHlwZW9mIHI/cjpvLG51bGw9PWU/ZTpzbyhlLHQsdm8obikscil9LFZuLnZhbHVlcz1IbCxWbi52YWx1ZXNJbj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9bXTpLdChlLE1sKGUpKX0sVm4ud2l0aG91dD1uYSxWbi53b3Jkcz1HbCxWbi53cmFwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEFhKHZvKHQpLGUpfSxWbi54b3I9cmEsVm4ueG9yQnk9b2EsVm4ueG9yV2l0aD1pYSxWbi56aXA9YWEsVm4uemlwT2JqZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHBvKGV8fFtdLHR8fFtdLEpuKX0sVm4uemlwT2JqZWN0RGVlcD1mdW5jdGlvbihlLHQpe3JldHVybiBwbyhlfHxbXSx0fHxbXSxZcil9LFZuLnppcFdpdGg9bGEsVm4uZW50cmllcz1JbCxWbi5lbnRyaWVzSW49VGwsVm4uZXh0ZW5kPWdsLFZuLmV4dGVuZFdpdGg9Q2wscnMoVm4sVm4pLFZuLmFkZD1ocyxWbi5hdHRlbXB0PXFsLFZuLmNhbWVsQ2FzZT1WbCxWbi5jYXBpdGFsaXplPUJsLFZuLmNlaWw9dnMsVm4uY2xhbXA9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuPT09byYmKG49dCx0PW8pLG4hPT1vJiYobj0obj1kbChuKSk9PW4/bjowKSx0IT09byYmKHQ9KHQ9ZGwodCkpPT10P3Q6MCksb3IoZGwoZSksdCxuKX0sVm4uY2xvbmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGlyKGUsNCl9LFZuLmNsb25lRGVlcD1mdW5jdGlvbihlKXtyZXR1cm4gaXIoZSw1KX0sVm4uY2xvbmVEZWVwV2l0aD1mdW5jdGlvbihlLHQpe3JldHVybiBpcihlLDUsdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3Q6byl9LFZuLmNsb25lV2l0aD1mdW5jdGlvbihlLHQpe3JldHVybiBpcihlLDQsdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3Q6byl9LFZuLmNvbmZvcm1zVG89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09dHx8YXIoZSx0LFNsKHQpKX0sVm4uZGVidXJyPURsLFZuLmRlZmF1bHRUbz1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1lfHxlIT1lP3Q6ZX0sVm4uZGl2aWRlPWdzLFZuLmVuZHNXaXRoPWZ1bmN0aW9uKGUsdCxuKXtlPWhsKGUpLHQ9aW8odCk7dmFyIHI9ZS5sZW5ndGgsaT1uPW49PT1vP3I6b3IodWwobiksMCxyKTtyZXR1cm4obi09dC5sZW5ndGgpPj0wJiZlLnNsaWNlKG4saSk9PXR9LFZuLmVxPUhhLFZuLmVzY2FwZT1mdW5jdGlvbihlKXtyZXR1cm4oZT1obChlKSkmJnEudGVzdChlKT9lLnJlcGxhY2Uoeix0bik6ZX0sVm4uZXNjYXBlUmVnRXhwPWZ1bmN0aW9uKGUpe3JldHVybihlPWhsKGUpKSYmbmUudGVzdChlKT9lLnJlcGxhY2UodGUsXCJcXFxcJCZcIik6ZX0sVm4uZXZlcnk9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVphKGUpP1N0OmZyO3JldHVybiBuJiZnaShlLHQsbikmJih0PW8pLHIoZSxpaSh0LDMpKX0sVm4uZmluZD1kYSxWbi5maW5kSW5kZXg9RGksVm4uZmluZEtleT1mdW5jdGlvbihlLHQpe3JldHVybiBWdChlLGlpKHQsMyksQ3IpfSxWbi5maW5kTGFzdD1wYSxWbi5maW5kTGFzdEluZGV4PVppLFZuLmZpbmRMYXN0S2V5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFZ0KGUsaWkodCwzKSxtcil9LFZuLmZsb29yPUNzLFZuLmZvckVhY2g9aGEsVm4uZm9yRWFjaFJpZ2h0PXZhLFZuLmZvckluPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/ZTp2cihlLGlpKHQsMyksTWwpfSxWbi5mb3JJblJpZ2h0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/ZTpncihlLGlpKHQsMyksTWwpfSxWbi5mb3JPd249ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmQ3IoZSxpaSh0LDMpKX0sVm4uZm9yT3duUmlnaHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmbXIoZSxpaSh0LDMpKX0sVm4uZ2V0PXhsLFZuLmd0PVZhLFZuLmd0ZT1CYSxWbi5oYXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9ZSYmZGkoZSx0LExyKX0sVm4uaGFzSW49X2wsVm4uaGVhZD1GaSxWbi5pZGVudGl0eT1RbCxWbi5pbmNsdWRlcz1mdW5jdGlvbihlLHQsbixyKXtlPUZhKGUpP2U6SGwoZSksbj1uJiYhcj91bChuKTowO3ZhciBvPWUubGVuZ3RoO3JldHVybiBuPDAmJihuPXZuKG8rbiwwKSkscmwoZSk/bjw9byYmZS5pbmRleE9mKHQsbik+LTE6ISFvJiZEdChlLHQsbik+LTF9LFZuLmluZGV4T2Y9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtpZighcilyZXR1cm4tMTt2YXIgbz1udWxsPT1uPzA6dWwobik7cmV0dXJuIG88MCYmKG89dm4ocitvLDApKSxEdChlLHQsbyl9LFZuLmluUmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PWNsKHQpLG49PT1vPyhuPXQsdD0wKTpuPWNsKG4pLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT49Z24odCxuKSYmZTx2bih0LG4pfShlPWRsKGUpLHQsbil9LFZuLmludm9rZT1FbCxWbi5pc0FyZ3VtZW50cz1EYSxWbi5pc0FycmF5PVphLFZuLmlzQXJyYXlCdWZmZXI9JGEsVm4uaXNBcnJheUxpa2U9RmEsVm4uaXNBcnJheUxpa2VPYmplY3Q9TmEsVm4uaXNCb29sZWFuPWZ1bmN0aW9uKGUpe3JldHVybiEwPT09ZXx8ITE9PT1lfHxYYShlKSYmeHIoZSk9PUN9LFZuLmlzQnVmZmVyPVVhLFZuLmlzRGF0ZT1XYSxWbi5pc0VsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFhhKGUpJiYxPT09ZS5ub2RlVHlwZSYmIWVsKGUpfSxWbi5pc0VtcHR5PWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuITA7aWYoRmEoZSkmJihaYShlKXx8XCJzdHJpbmdcIj09dHlwZW9mIGV8fFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuc3BsaWNlfHxVYShlKXx8aWwoZSl8fERhKGUpKSlyZXR1cm4hZS5sZW5ndGg7dmFyIHQ9ZmkoZSk7aWYodD09eHx8dD09UylyZXR1cm4hZS5zaXplO2lmKHdpKGUpKXJldHVybiFBcihlKS5sZW5ndGg7Zm9yKHZhciBuIGluIGUpaWYoQWUuY2FsbChlLG4pKXJldHVybiExO3JldHVybiEwfSxWbi5pc0VxdWFsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGpyKGUsdCl9LFZuLmlzRXF1YWxXaXRoPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0obj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBuP246byk/bihlLHQpOm87cmV0dXJuIHI9PT1vP2pyKGUsdCxvLG4pOiEhcn0sVm4uaXNFcnJvcj16YSxWbi5pc0Zpbml0ZT1mdW5jdGlvbihlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZSYmSHQoZSl9LFZuLmlzRnVuY3Rpb249R2EsVm4uaXNJbnRlZ2VyPXFhLFZuLmlzTGVuZ3RoPVlhLFZuLmlzTWFwPUphLFZuLmlzTWF0Y2g9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXR8fGtyKGUsdCxsaSh0KSl9LFZuLmlzTWF0Y2hXaXRoPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBuP246byxrcihlLHQsbGkodCksbil9LFZuLmlzTmFOPWZ1bmN0aW9uKGUpe3JldHVybiBRYShlKSYmZSE9K2V9LFZuLmlzTmF0aXZlPWZ1bmN0aW9uKGUpe2lmKHlpKGUpKXRocm93IG5ldyBiZShcIlVuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLlwiKTtyZXR1cm4gUnIoZSl9LFZuLmlzTmlsPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfSxWbi5pc051bGw9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfSxWbi5pc051bWJlcj1RYSxWbi5pc09iamVjdD1LYSxWbi5pc09iamVjdExpa2U9WGEsVm4uaXNQbGFpbk9iamVjdD1lbCxWbi5pc1JlZ0V4cD10bCxWbi5pc1NhZmVJbnRlZ2VyPWZ1bmN0aW9uKGUpe3JldHVybiBxYShlKSYmZT49LTkwMDcxOTkyNTQ3NDA5OTEmJmU8PWZ9LFZuLmlzU2V0PW5sLFZuLmlzU3RyaW5nPXJsLFZuLmlzU3ltYm9sPW9sLFZuLmlzVHlwZWRBcnJheT1pbCxWbi5pc1VuZGVmaW5lZD1mdW5jdGlvbihlKXtyZXR1cm4gZT09PW99LFZuLmlzV2Vha01hcD1mdW5jdGlvbihlKXtyZXR1cm4gWGEoZSkmJmZpKGUpPT1rfSxWbi5pc1dlYWtTZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFhhKGUpJiZcIltvYmplY3QgV2Vha1NldF1cIj09eHIoZSl9LFZuLmpvaW49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZT9cIlwiOlV0LmNhbGwoZSx0KX0sVm4ua2ViYWJDYXNlPVpsLFZuLmxhc3Q9emksVm4ubGFzdEluZGV4T2Y9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtpZighcilyZXR1cm4tMTt2YXIgaT1yO3JldHVybiBuIT09byYmKGk9KGk9dWwobikpPDA/dm4ocitpLDApOmduKGksci0xKSksdD09dD9mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPW4rMTtyLS07KWlmKGVbcl09PT10KXJldHVybiByO3JldHVybiByfShlLHQsaSk6QnQoZSwkdCxpLCEwKX0sVm4ubG93ZXJDYXNlPSRsLFZuLmxvd2VyRmlyc3Q9RmwsVm4ubHQ9YWwsVm4ubHRlPWxsLFZuLm1heD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5sZW5ndGg/ZHIoZSxRbCxfcik6b30sVm4ubWF4Qnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/ZHIoZSxpaSh0LDIpLF9yKTpvfSxWbi5tZWFuPWZ1bmN0aW9uKGUpe3JldHVybiBGdChlLFFsKX0sVm4ubWVhbkJ5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEZ0KGUsaWkodCwyKSl9LFZuLm1pbj1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5sZW5ndGg/ZHIoZSxRbCxJcik6b30sVm4ubWluQnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/ZHIoZSxpaSh0LDIpLElyKTpvfSxWbi5zdHViQXJyYXk9ZnMsVm4uc3R1YkZhbHNlPWRzLFZuLnN0dWJPYmplY3Q9ZnVuY3Rpb24oKXtyZXR1cm57fX0sVm4uc3R1YlN0cmluZz1mdW5jdGlvbigpe3JldHVyblwiXCJ9LFZuLnN0dWJUcnVlPWZ1bmN0aW9uKCl7cmV0dXJuITB9LFZuLm11bHRpcGx5PW1zLFZuLm50aD1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD9EcihlLHVsKHQpKTpvfSxWbi5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGZ0Ll89PT10aGlzJiYoZnQuXz1CZSksdGhpc30sVm4ubm9vcD1vcyxWbi5ub3c9eGEsVm4ucGFkPWZ1bmN0aW9uKGUsdCxuKXtlPWhsKGUpO3ZhciByPSh0PXVsKHQpKT9jbihlKTowO2lmKCF0fHxyPj10KXJldHVybiBlO3ZhciBvPSh0LXIpLzI7cmV0dXJuICRvKHB0KG8pLG4pK2UrJG8oZHQobyksbil9LFZuLnBhZEVuZD1mdW5jdGlvbihlLHQsbil7ZT1obChlKTt2YXIgcj0odD11bCh0KSk/Y24oZSk6MDtyZXR1cm4gdCYmcjx0P2UrJG8odC1yLG4pOmV9LFZuLnBhZFN0YXJ0PWZ1bmN0aW9uKGUsdCxuKXtlPWhsKGUpO3ZhciByPSh0PXVsKHQpKT9jbihlKTowO3JldHVybiB0JiZyPHQ/JG8odC1yLG4pK2U6ZX0sVm4ucGFyc2VJbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBufHxudWxsPT10P3Q9MDp0JiYodD0rdCksbW4oaGwoZSkucmVwbGFjZShyZSxcIlwiKSx0fHwwKX0sVm4ucmFuZG9tPWZ1bmN0aW9uKGUsdCxuKXtpZihuJiZcImJvb2xlYW5cIiE9dHlwZW9mIG4mJmdpKGUsdCxuKSYmKHQ9bj1vKSxuPT09byYmKFwiYm9vbGVhblwiPT10eXBlb2YgdD8obj10LHQ9byk6XCJib29sZWFuXCI9PXR5cGVvZiBlJiYobj1lLGU9bykpLGU9PT1vJiZ0PT09bz8oZT0wLHQ9MSk6KGU9Y2woZSksdD09PW8/KHQ9ZSxlPTApOnQ9Y2wodCkpLGU+dCl7dmFyIHI9ZTtlPXQsdD1yfWlmKG58fGUlMXx8dCUxKXt2YXIgaT15bigpO3JldHVybiBnbihlK2kqKHQtZStsdChcIjFlLVwiKygoaStcIlwiKS5sZW5ndGgtMSkpKSx0KX1yZXR1cm4gVXIoZSx0KX0sVm4ucmVkdWNlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1aYShlKT9BdDpXdCxvPWFyZ3VtZW50cy5sZW5ndGg8MztyZXR1cm4gcihlLGlpKHQsNCksbixvLGNyKX0sVm4ucmVkdWNlUmlnaHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVphKGUpP0l0Old0LG89YXJndW1lbnRzLmxlbmd0aDwzO3JldHVybiByKGUsaWkodCw0KSxuLG8sdXIpfSxWbi5yZXBlYXQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PShuP2dpKGUsdCxuKTp0PT09byk/MTp1bCh0KSxXcihobChlKSx0KX0sVm4ucmVwbGFjZT1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cyx0PWhsKGVbMF0pO3JldHVybiBlLmxlbmd0aDwzP3Q6dC5yZXBsYWNlKGVbMV0sZVsyXSl9LFZuLnJlc3VsdD1mdW5jdGlvbihlLHQsbil7dmFyIHI9LTEsaT0odD1nbyh0LGUpKS5sZW5ndGg7Zm9yKGl8fChpPTEsZT1vKTsrK3I8aTspe3ZhciBhPW51bGw9PWU/bzplW0FpKHRbcl0pXTthPT09byYmKHI9aSxhPW4pLGU9R2EoYSk/YS5jYWxsKGUpOmF9cmV0dXJuIGV9LFZuLnJvdW5kPXlzLFZuLnJ1bkluQ29udGV4dD1lLFZuLnNhbXBsZT1mdW5jdGlvbihlKXtyZXR1cm4oWmEoZSk/cW46R3IpKGUpfSxWbi5zaXplPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIDA7aWYoRmEoZSkpcmV0dXJuIHJsKGUpP2NuKGUpOmUubGVuZ3RoO3ZhciB0PWZpKGUpO3JldHVybiB0PT14fHx0PT1TP2Uuc2l6ZTpBcihlKS5sZW5ndGh9LFZuLnNuYWtlQ2FzZT1ObCxWbi5zb21lPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1aYShlKT9UdDplbztyZXR1cm4gbiYmZ2koZSx0LG4pJiYodD1vKSxyKGUsaWkodCwzKSl9LFZuLnNvcnRlZEluZGV4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRvKGUsdCl9LFZuLnNvcnRlZEluZGV4Qnk9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBubyhlLHQsaWkobiwyKSl9LFZuLnNvcnRlZEluZGV4T2Y9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lPzA6ZS5sZW5ndGg7aWYobil7dmFyIHI9dG8oZSx0KTtpZihyPG4mJkhhKGVbcl0sdCkpcmV0dXJuIHJ9cmV0dXJuLTF9LFZuLnNvcnRlZExhc3RJbmRleD1mdW5jdGlvbihlLHQpe3JldHVybiB0byhlLHQsITApfSxWbi5zb3J0ZWRMYXN0SW5kZXhCeT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG5vKGUsdCxpaShuLDIpLCEwKX0sVm4uc29ydGVkTGFzdEluZGV4T2Y9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT1lJiZlLmxlbmd0aCl7dmFyIG49dG8oZSx0LCEwKS0xO2lmKEhhKGVbbl0sdCkpcmV0dXJuIG59cmV0dXJuLTF9LFZuLnN0YXJ0Q2FzZT1VbCxWbi5zdGFydHNXaXRoPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT1obChlKSxuPW51bGw9PW4/MDpvcih1bChuKSwwLGUubGVuZ3RoKSx0PWlvKHQpLGUuc2xpY2UobixuK3QubGVuZ3RoKT09dH0sVm4uc3VidHJhY3Q9d3MsVm4uc3VtPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLmxlbmd0aD96dChlLFFsKTowfSxWbi5zdW1CeT1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD96dChlLGlpKHQsMikpOjB9LFZuLnRlbXBsYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1Wbi50ZW1wbGF0ZVNldHRpbmdzO24mJmdpKGUsdCxuKSYmKHQ9byksZT1obChlKSx0PUNsKHt9LHQscixZbyk7dmFyIGksYSxsPUNsKHt9LHQuaW1wb3J0cyxyLmltcG9ydHMsWW8pLHM9U2wobCksYz1LdChsLHMpLHU9MCxmPXQuaW50ZXJwb2xhdGV8fHllLGQ9XCJfX3AgKz0gJ1wiLHA9T2UoKHQuZXNjYXBlfHx5ZSkuc291cmNlK1wifFwiK2Yuc291cmNlK1wifFwiKyhmPT09WD9mZTp5ZSkuc291cmNlK1wifFwiKyh0LmV2YWx1YXRlfHx5ZSkuc291cmNlK1wifCRcIixcImdcIiksaD1cIi8vIyBzb3VyY2VVUkw9XCIrKEFlLmNhbGwodCxcInNvdXJjZVVSTFwiKT8odC5zb3VyY2VVUkwrXCJcIikucmVwbGFjZSgvXFxzL2csXCIgXCIpOlwibG9kYXNoLnRlbXBsYXRlU291cmNlc1tcIisgKytydCtcIl1cIikrXCJcXG5cIjtlLnJlcGxhY2UocCwoZnVuY3Rpb24odCxuLHIsbyxsLHMpe3JldHVybiByfHwocj1vKSxkKz1lLnNsaWNlKHUscykucmVwbGFjZSh3ZSxubiksbiYmKGk9ITAsZCs9XCInICtcXG5fX2UoXCIrbitcIikgK1xcbidcIiksbCYmKGE9ITAsZCs9XCInO1xcblwiK2wrXCI7XFxuX19wICs9ICdcIiksciYmKGQrPVwiJyArXFxuKChfX3QgPSAoXCIrcitcIikpID09IG51bGwgPyAnJyA6IF9fdCkgK1xcbidcIiksdT1zK3QubGVuZ3RoLHR9KSksZCs9XCInO1xcblwiO3ZhciB2PUFlLmNhbGwodCxcInZhcmlhYmxlXCIpJiZ0LnZhcmlhYmxlO2lmKHYpe2lmKGNlLnRlc3QodikpdGhyb3cgbmV3IGJlKFwiSW52YWxpZCBgdmFyaWFibGVgIG9wdGlvbiBwYXNzZWQgaW50byBgXy50ZW1wbGF0ZWBcIil9ZWxzZSBkPVwid2l0aCAob2JqKSB7XFxuXCIrZCtcIlxcbn1cXG5cIjtkPShhP2QucmVwbGFjZShGLFwiXCIpOmQpLnJlcGxhY2UoTixcIiQxXCIpLnJlcGxhY2UoVSxcIiQxO1wiKSxkPVwiZnVuY3Rpb24oXCIrKHZ8fFwib2JqXCIpK1wiKSB7XFxuXCIrKHY/XCJcIjpcIm9iaiB8fCAob2JqID0ge30pO1xcblwiKStcInZhciBfX3QsIF9fcCA9ICcnXCIrKGk/XCIsIF9fZSA9IF8uZXNjYXBlXCI6XCJcIikrKGE/XCIsIF9faiA9IEFycmF5LnByb3RvdHlwZS5qb2luO1xcbmZ1bmN0aW9uIHByaW50KCkgeyBfX3AgKz0gX19qLmNhbGwoYXJndW1lbnRzLCAnJykgfVxcblwiOlwiO1xcblwiKStkK1wicmV0dXJuIF9fcFxcbn1cIjt2YXIgZz1xbCgoZnVuY3Rpb24oKXtyZXR1cm4geGUocyxoK1wicmV0dXJuIFwiK2QpLmFwcGx5KG8sYyl9KSk7aWYoZy5zb3VyY2U9ZCx6YShnKSl0aHJvdyBnO3JldHVybiBnfSxWbi50aW1lcz1mdW5jdGlvbihlLHQpe2lmKChlPXVsKGUpKTwxfHxlPmYpcmV0dXJuW107dmFyIG49cCxyPWduKGUscCk7dD1paSh0KSxlLT1wO2Zvcih2YXIgbz1HdChyLHQpOysrbjxlOyl0KG4pO3JldHVybiBvfSxWbi50b0Zpbml0ZT1jbCxWbi50b0ludGVnZXI9dWwsVm4udG9MZW5ndGg9ZmwsVm4udG9Mb3dlcj1mdW5jdGlvbihlKXtyZXR1cm4gaGwoZSkudG9Mb3dlckNhc2UoKX0sVm4udG9OdW1iZXI9ZGwsVm4udG9TYWZlSW50ZWdlcj1mdW5jdGlvbihlKXtyZXR1cm4gZT9vcih1bChlKSwtOTAwNzE5OTI1NDc0MDk5MSxmKTowPT09ZT9lOjB9LFZuLnRvU3RyaW5nPWhsLFZuLnRvVXBwZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGhsKGUpLnRvVXBwZXJDYXNlKCl9LFZuLnRyaW09ZnVuY3Rpb24oZSx0LG4pe2lmKChlPWhsKGUpKSYmKG58fHQ9PT1vKSlyZXR1cm4gcXQoZSk7aWYoIWV8fCEodD1pbyh0KSkpcmV0dXJuIGU7dmFyIHI9dW4oZSksaT11bih0KTtyZXR1cm4gbW8ocixKdChyLGkpLFF0KHIsaSkrMSkuam9pbihcIlwiKX0sVm4udHJpbUVuZD1mdW5jdGlvbihlLHQsbil7aWYoKGU9aGwoZSkpJiYobnx8dD09PW8pKXJldHVybiBlLnNsaWNlKDAsZm4oZSkrMSk7aWYoIWV8fCEodD1pbyh0KSkpcmV0dXJuIGU7dmFyIHI9dW4oZSk7cmV0dXJuIG1vKHIsMCxRdChyLHVuKHQpKSsxKS5qb2luKFwiXCIpfSxWbi50cmltU3RhcnQ9ZnVuY3Rpb24oZSx0LG4pe2lmKChlPWhsKGUpKSYmKG58fHQ9PT1vKSlyZXR1cm4gZS5yZXBsYWNlKHJlLFwiXCIpO2lmKCFlfHwhKHQ9aW8odCkpKXJldHVybiBlO3ZhciByPXVuKGUpO3JldHVybiBtbyhyLEp0KHIsdW4odCkpKS5qb2luKFwiXCIpfSxWbi50cnVuY2F0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPTMwLHI9XCIuLi5cIjtpZihLYSh0KSl7dmFyIGk9XCJzZXBhcmF0b3JcImluIHQ/dC5zZXBhcmF0b3I6aTtuPVwibGVuZ3RoXCJpbiB0P3VsKHQubGVuZ3RoKTpuLHI9XCJvbWlzc2lvblwiaW4gdD9pbyh0Lm9taXNzaW9uKTpyfXZhciBhPShlPWhsKGUpKS5sZW5ndGg7aWYocm4oZSkpe3ZhciBsPXVuKGUpO2E9bC5sZW5ndGh9aWYobj49YSlyZXR1cm4gZTt2YXIgcz1uLWNuKHIpO2lmKHM8MSlyZXR1cm4gcjt2YXIgYz1sP21vKGwsMCxzKS5qb2luKFwiXCIpOmUuc2xpY2UoMCxzKTtpZihpPT09bylyZXR1cm4gYytyO2lmKGwmJihzKz1jLmxlbmd0aC1zKSx0bChpKSl7aWYoZS5zbGljZShzKS5zZWFyY2goaSkpe3ZhciB1LGY9Yztmb3IoaS5nbG9iYWx8fChpPU9lKGkuc291cmNlLGhsKGRlLmV4ZWMoaSkpK1wiZ1wiKSksaS5sYXN0SW5kZXg9MDt1PWkuZXhlYyhmKTspdmFyIGQ9dS5pbmRleDtjPWMuc2xpY2UoMCxkPT09bz9zOmQpfX1lbHNlIGlmKGUuaW5kZXhPZihpbyhpKSxzKSE9cyl7dmFyIHA9Yy5sYXN0SW5kZXhPZihpKTtwPi0xJiYoYz1jLnNsaWNlKDAscCkpfXJldHVybiBjK3J9LFZuLnVuZXNjYXBlPWZ1bmN0aW9uKGUpe3JldHVybihlPWhsKGUpKSYmRy50ZXN0KGUpP2UucmVwbGFjZShXLGRuKTplfSxWbi51bmlxdWVJZD1mdW5jdGlvbihlKXt2YXIgdD0rK0llO3JldHVybiBobChlKSt0fSxWbi51cHBlckNhc2U9V2wsVm4udXBwZXJGaXJzdD16bCxWbi5lYWNoPWhhLFZuLmVhY2hSaWdodD12YSxWbi5maXJzdD1GaSxycyhWbiwocHM9e30sQ3IoVm4sKGZ1bmN0aW9uKGUsdCl7QWUuY2FsbChWbi5wcm90b3R5cGUsdCl8fChwc1t0XT1lKX0pKSxwcykse2NoYWluOiExfSksVm4uVkVSU0lPTj1cIjQuMTcuMjFcIixPdChbXCJiaW5kXCIsXCJiaW5kS2V5XCIsXCJjdXJyeVwiLFwiY3VycnlSaWdodFwiLFwicGFydGlhbFwiLFwicGFydGlhbFJpZ2h0XCJdLChmdW5jdGlvbihlKXtWbltlXS5wbGFjZWhvbGRlcj1Wbn0pKSxPdChbXCJkcm9wXCIsXCJ0YWtlXCJdLChmdW5jdGlvbihlLHQpeyRuLnByb3RvdHlwZVtlXT1mdW5jdGlvbihuKXtuPW49PT1vPzE6dm4odWwobiksMCk7dmFyIHI9dGhpcy5fX2ZpbHRlcmVkX18mJiF0P25ldyAkbih0aGlzKTp0aGlzLmNsb25lKCk7cmV0dXJuIHIuX19maWx0ZXJlZF9fP3IuX190YWtlQ291bnRfXz1nbihuLHIuX190YWtlQ291bnRfXyk6ci5fX3ZpZXdzX18ucHVzaCh7c2l6ZTpnbihuLHApLHR5cGU6ZSsoci5fX2Rpcl9fPDA/XCJSaWdodFwiOlwiXCIpfSkscn0sJG4ucHJvdG90eXBlW2UrXCJSaWdodFwiXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXZlcnNlKClbZV0odCkucmV2ZXJzZSgpfX0pKSxPdChbXCJmaWx0ZXJcIixcIm1hcFwiLFwidGFrZVdoaWxlXCJdLChmdW5jdGlvbihlLHQpe3ZhciBuPXQrMSxyPTE9PW58fDM9PW47JG4ucHJvdG90eXBlW2VdPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY2xvbmUoKTtyZXR1cm4gdC5fX2l0ZXJhdGVlc19fLnB1c2goe2l0ZXJhdGVlOmlpKGUsMyksdHlwZTpufSksdC5fX2ZpbHRlcmVkX189dC5fX2ZpbHRlcmVkX198fHIsdH19KSksT3QoW1wiaGVhZFwiLFwibGFzdFwiXSwoZnVuY3Rpb24oZSx0KXt2YXIgbj1cInRha2VcIisodD9cIlJpZ2h0XCI6XCJcIik7JG4ucHJvdG90eXBlW2VdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbbl0oMSkudmFsdWUoKVswXX19KSksT3QoW1wiaW5pdGlhbFwiLFwidGFpbFwiXSwoZnVuY3Rpb24oZSx0KXt2YXIgbj1cImRyb3BcIisodD9cIlwiOlwiUmlnaHRcIik7JG4ucHJvdG90eXBlW2VdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19maWx0ZXJlZF9fP25ldyAkbih0aGlzKTp0aGlzW25dKDEpfX0pKSwkbi5wcm90b3R5cGUuY29tcGFjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbHRlcihRbCl9LCRuLnByb3RvdHlwZS5maW5kPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmZpbHRlcihlKS5oZWFkKCl9LCRuLnByb3RvdHlwZS5maW5kTGFzdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZXZlcnNlKCkuZmluZChlKX0sJG4ucHJvdG90eXBlLmludm9rZU1hcD16cigoZnVuY3Rpb24oZSx0KXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlP25ldyAkbih0aGlzKTp0aGlzLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIFNyKG4sZSx0KX0pKX0pKSwkbi5wcm90b3R5cGUucmVqZWN0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmZpbHRlcihSYShpaShlKSkpfSwkbi5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXtlPXVsKGUpO3ZhciBuPXRoaXM7cmV0dXJuIG4uX19maWx0ZXJlZF9fJiYoZT4wfHx0PDApP25ldyAkbihuKTooZTwwP249bi50YWtlUmlnaHQoLWUpOmUmJihuPW4uZHJvcChlKSksdCE9PW8mJihuPSh0PXVsKHQpKTwwP24uZHJvcFJpZ2h0KC10KTpuLnRha2UodC1lKSksbil9LCRuLnByb3RvdHlwZS50YWtlUmlnaHRXaGlsZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZXZlcnNlKCkudGFrZVdoaWxlKGUpLnJldmVyc2UoKX0sJG4ucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWtlKHApfSxDcigkbi5wcm90b3R5cGUsKGZ1bmN0aW9uKGUsdCl7dmFyIG49L14oPzpmaWx0ZXJ8ZmluZHxtYXB8cmVqZWN0KXxXaGlsZSQvLnRlc3QodCkscj0vXig/OmhlYWR8bGFzdCkkLy50ZXN0KHQpLGk9Vm5bcj9cInRha2VcIisoXCJsYXN0XCI9PXQ/XCJSaWdodFwiOlwiXCIpOnRdLGE9cnx8L15maW5kLy50ZXN0KHQpO2kmJihWbi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9fd3JhcHBlZF9fLGw9cj9bMV06YXJndW1lbnRzLHM9dCBpbnN0YW5jZW9mICRuLGM9bFswXSx1PXN8fFphKHQpLGY9ZnVuY3Rpb24oZSl7dmFyIHQ9aS5hcHBseShWbixQdChbZV0sbCkpO3JldHVybiByJiZkP3RbMF06dH07dSYmbiYmXCJmdW5jdGlvblwiPT10eXBlb2YgYyYmMSE9Yy5sZW5ndGgmJihzPXU9ITEpO3ZhciBkPXRoaXMuX19jaGFpbl9fLHA9ISF0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCxoPWEmJiFkLHY9cyYmIXA7aWYoIWEmJnUpe3Q9dj90Om5ldyAkbih0aGlzKTt2YXIgZz1lLmFwcGx5KHQsbCk7cmV0dXJuIGcuX19hY3Rpb25zX18ucHVzaCh7ZnVuYzpjYSxhcmdzOltmXSx0aGlzQXJnOm99KSxuZXcgWm4oZyxkKX1yZXR1cm4gaCYmdj9lLmFwcGx5KHRoaXMsbCk6KGc9dGhpcy50aHJ1KGYpLGg/cj9nLnZhbHVlKClbMF06Zy52YWx1ZSgpOmcpfSl9KSksT3QoW1wicG9wXCIsXCJwdXNoXCIsXCJzaGlmdFwiLFwic29ydFwiLFwic3BsaWNlXCIsXCJ1bnNoaWZ0XCJdLChmdW5jdGlvbihlKXt2YXIgdD1NZVtlXSxuPS9eKD86cHVzaHxzb3J0fHVuc2hpZnQpJC8udGVzdChlKT9cInRhcFwiOlwidGhydVwiLHI9L14oPzpwb3B8c2hpZnQpJC8udGVzdChlKTtWbi5wcm90b3R5cGVbZV09ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHM7aWYociYmIXRoaXMuX19jaGFpbl9fKXt2YXIgbz10aGlzLnZhbHVlKCk7cmV0dXJuIHQuYXBwbHkoWmEobyk/bzpbXSxlKX1yZXR1cm4gdGhpc1tuXSgoZnVuY3Rpb24obil7cmV0dXJuIHQuYXBwbHkoWmEobik/bjpbXSxlKX0pKX19KSksQ3IoJG4ucHJvdG90eXBlLChmdW5jdGlvbihlLHQpe3ZhciBuPVZuW3RdO2lmKG4pe3ZhciByPW4ubmFtZStcIlwiO0FlLmNhbGwoTW4scil8fChNbltyXT1bXSksTW5bcl0ucHVzaCh7bmFtZTp0LGZ1bmM6bn0pfX0pKSxNbltWbyhvLDIpLm5hbWVdPVt7bmFtZTpcIndyYXBwZXJcIixmdW5jOm99XSwkbi5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgJG4odGhpcy5fX3dyYXBwZWRfXyk7cmV0dXJuIGUuX19hY3Rpb25zX189RW8odGhpcy5fX2FjdGlvbnNfXyksZS5fX2Rpcl9fPXRoaXMuX19kaXJfXyxlLl9fZmlsdGVyZWRfXz10aGlzLl9fZmlsdGVyZWRfXyxlLl9faXRlcmF0ZWVzX189RW8odGhpcy5fX2l0ZXJhdGVlc19fKSxlLl9fdGFrZUNvdW50X189dGhpcy5fX3Rha2VDb3VudF9fLGUuX192aWV3c19fPUVvKHRoaXMuX192aWV3c19fKSxlfSwkbi5wcm90b3R5cGUucmV2ZXJzZT1mdW5jdGlvbigpe2lmKHRoaXMuX19maWx0ZXJlZF9fKXt2YXIgZT1uZXcgJG4odGhpcyk7ZS5fX2Rpcl9fPS0xLGUuX19maWx0ZXJlZF9fPSEwfWVsc2UoZT10aGlzLmNsb25lKCkpLl9fZGlyX18qPS0xO3JldHVybiBlfSwkbi5wcm90b3R5cGUudmFsdWU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fd3JhcHBlZF9fLnZhbHVlKCksdD10aGlzLl9fZGlyX18sbj1aYShlKSxyPXQ8MCxvPW4/ZS5sZW5ndGg6MCxpPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9LTEsbz1uLmxlbmd0aDsrK3I8bzspe3ZhciBpPW5bcl0sYT1pLnNpemU7c3dpdGNoKGkudHlwZSl7Y2FzZVwiZHJvcFwiOmUrPWE7YnJlYWs7Y2FzZVwiZHJvcFJpZ2h0XCI6dC09YTticmVhaztjYXNlXCJ0YWtlXCI6dD1nbih0LGUrYSk7YnJlYWs7Y2FzZVwidGFrZVJpZ2h0XCI6ZT12bihlLHQtYSl9fXJldHVybntzdGFydDplLGVuZDp0fX0oMCxvLHRoaXMuX192aWV3c19fKSxhPWkuc3RhcnQsbD1pLmVuZCxzPWwtYSxjPXI/bDphLTEsdT10aGlzLl9faXRlcmF0ZWVzX18sZj11Lmxlbmd0aCxkPTAscD1nbihzLHRoaXMuX190YWtlQ291bnRfXyk7aWYoIW58fCFyJiZvPT1zJiZwPT1zKXJldHVybiB1byhlLHRoaXMuX19hY3Rpb25zX18pO3ZhciBoPVtdO2U6Zm9yKDtzLS0mJmQ8cDspe2Zvcih2YXIgdj0tMSxnPWVbYys9dF07Kyt2PGY7KXt2YXIgQz11W3ZdLG09Qy5pdGVyYXRlZSx5PUMudHlwZSx3PW0oZyk7aWYoMj09eSlnPXc7ZWxzZSBpZighdyl7aWYoMT09eSljb250aW51ZSBlO2JyZWFrIGV9fWhbZCsrXT1nfXJldHVybiBofSxWbi5wcm90b3R5cGUuYXQ9dWEsVm4ucHJvdG90eXBlLmNoYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHNhKHRoaXMpfSxWbi5wcm90b3R5cGUuY29tbWl0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBabih0aGlzLnZhbHVlKCksdGhpcy5fX2NoYWluX18pfSxWbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3RoaXMuX192YWx1ZXNfXz09PW8mJih0aGlzLl9fdmFsdWVzX189c2wodGhpcy52YWx1ZSgpKSk7dmFyIGU9dGhpcy5fX2luZGV4X18+PXRoaXMuX192YWx1ZXNfXy5sZW5ndGg7cmV0dXJue2RvbmU6ZSx2YWx1ZTplP286dGhpcy5fX3ZhbHVlc19fW3RoaXMuX19pbmRleF9fKytdfX0sVm4ucHJvdG90eXBlLnBsYW50PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPXRoaXM7biBpbnN0YW5jZW9mIERuOyl7dmFyIHI9VGkobik7ci5fX2luZGV4X189MCxyLl9fdmFsdWVzX189byx0P2kuX193cmFwcGVkX189cjp0PXI7dmFyIGk9cjtuPW4uX193cmFwcGVkX199cmV0dXJuIGkuX193cmFwcGVkX189ZSx0fSxWbi5wcm90b3R5cGUucmV2ZXJzZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX193cmFwcGVkX187aWYoZSBpbnN0YW5jZW9mICRuKXt2YXIgdD1lO3JldHVybiB0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCYmKHQ9bmV3ICRuKHRoaXMpKSwodD10LnJldmVyc2UoKSkuX19hY3Rpb25zX18ucHVzaCh7ZnVuYzpjYSxhcmdzOltLaV0sdGhpc0FyZzpvfSksbmV3IFpuKHQsdGhpcy5fX2NoYWluX18pfXJldHVybiB0aGlzLnRocnUoS2kpfSxWbi5wcm90b3R5cGUudG9KU09OPVZuLnByb3RvdHlwZS52YWx1ZU9mPVZuLnByb3RvdHlwZS52YWx1ZT1mdW5jdGlvbigpe3JldHVybiB1byh0aGlzLl9fd3JhcHBlZF9fLHRoaXMuX19hY3Rpb25zX18pfSxWbi5wcm90b3R5cGUuZmlyc3Q9Vm4ucHJvdG90eXBlLmhlYWQsWWUmJihWbi5wcm90b3R5cGVbWWVdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxWbn0oKTtmdC5fPXBuLChyPWZ1bmN0aW9uKCl7cmV0dXJuIHBufS5jYWxsKHQsbix0LGUpKT09PW98fChlLmV4cG9ydHM9cil9LmNhbGwodGhpcyl9LDMwMDooZSx0LG4pPT57dmFyIHIsbztlPW4ubm1kKGUpLGZ1bmN0aW9uKHQpe3QucnVubmluZ0luTm9kZUpTPWZ1bmN0aW9uKCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIHByb2Nlc3MmJlwib2JqZWN0XCI9PXR5cGVvZiBwcm9jZXNzLnZlcnNpb25zJiZcInN0cmluZ1wiPT10eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlfSx0LnJ1bm5pbmdJbk1haW5Ob2RlSlNNb2R1bGU9ZnVuY3Rpb24oKXtyZXR1cm4gdC5ydW5uaW5nSW5Ob2RlSlMoKSYmbi5jW24uc109PT1lfSx0LmNvbW1vbkpTQXZhaWxhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUuZXhwb3J0c30sdC5ydW5uaW5nSW5XZWJXb3JrZXI9ZnVuY3Rpb24oKXtyZXR1cm5cInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93JiZcIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmXCJmdW5jdGlvblwiPT10eXBlb2Ygc2VsZi5hZGRFdmVudExpc3RlbmVyJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBzZWxmLmNsb3NlfSx0LnJ1bm5pbmdJbk5vZGVDaGlsZFByb2Nlc3M9ZnVuY3Rpb24oKXtyZXR1cm4gdC5ydW5uaW5nSW5Ob2RlSlMoKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgcHJvY2Vzcy5zZW5kfSx0LnJ1bm5pbmdJbk51bGxPcmlnaW49ZnVuY3Rpb24oKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2Ygd2luZG93JiZcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93LmxvY2F0aW9uJiZcIm9iamVjdFwiPT10eXBlb2YgZG9jdW1lbnQmJlwiaHR0cDpcIiE9PWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sJiZcImh0dHBzOlwiIT09ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2x9LHQud2ViV29ya2Vyc0F2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVybiEoXCJmdW5jdGlvblwiIT10eXBlb2YgV29ya2VyfHx0LnJ1bm5pbmdJbk51bGxPcmlnaW4oKXx8dC5ydW5uaW5nSW5Ob2RlSlMoKXx8bmF2aWdhdG9yJiZuYXZpZ2F0b3IudXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoXCJBbmRyb2lkIDQuM1wiKT49MCl9LHQubG9nPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITEpLFwib2JqZWN0XCI9PXR5cGVvZiBjb25zb2xlJiZ0JiZcIm9iamVjdFwiPT10eXBlb2YgZG9jdW1lbnQmJihkb2N1bWVudC5ib2R5LmlubmVySFRNTCs9ZStcIjxici8+XCIpfSx0LmNyZWF0ZUVycm9yTWVzc2FnZT1mdW5jdGlvbihlLG4pe2lmKHZvaWQgMD09PW4mJihuPVwiVW5oYW5kbGVkIGV4Y2VwdGlvblwiKSxudWxsPT1lKXJldHVybiBuO2lmKG4rPVwiOiBcIixcIm9iamVjdFwiPT10eXBlb2YgZS5jb250ZW50KXtpZih0LnJ1bm5pbmdJbk5vZGVKUygpKXJldHVybiBuK2UuY29udGVudC5zdGFjazt2YXIgcj1KU09OLnN0cmluZ2lmeShlLmNvbnRlbnQpO3JldHVyblwie31cIiE9PXI/bityOm4rZS5jb250ZW50fXJldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlLmNvbnRlbnQ/bitlLmNvbnRlbnQ6bitlfSx0LnByaW50RXhjZXB0aW9uQW5kU3RhY2tUcmFjZVRvQ29uc29sZT1mdW5jdGlvbihlLG4pe3ZvaWQgMD09PW4mJihuPVwiVW5oYW5kbGVkIGV4Y2VwdGlvblwiKSx0LmxvZyh0LmNyZWF0ZUVycm9yTWVzc2FnZShlLG4pKX0sdC5nZXRHbG9iYWxPYmplY3Q9ZnVuY3Rpb24oKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2Ygbi5nP24uZzpcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93P3dpbmRvdzpcIm9iamVjdFwiPT10eXBlb2Ygc2VsZj9zZWxmOnt9fSx0LnRvU3RyaW5nPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsdC5jb21tb25KU0F2YWlsYWJsZSgpJiYoZS5leHBvcnRzPXQpfShvfHwobz17fSkpLGZ1bmN0aW9uKGUpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFVpbnQ4QXJyYXkmJjAhPT1uZXcgVWludDhBcnJheSgxKS5zdWJhcnJheSgxKS5ieXRlTGVuZ3RoKXt2YXIgdD1mdW5jdGlvbihlLHQpe3ZhciBuPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZTx0P3Q6ZT5uP246ZX07ZXw9MCx0fD0wLGFyZ3VtZW50cy5sZW5ndGg8MSYmKGU9MCksYXJndW1lbnRzLmxlbmd0aDwyJiYodD10aGlzLmxlbmd0aCksZTwwJiYoZT10aGlzLmxlbmd0aCtlKSx0PDAmJih0PXRoaXMubGVuZ3RoK3QpLGU9bihlLDAsdGhpcy5sZW5ndGgpO3ZhciByPSh0PW4odCwwLHRoaXMubGVuZ3RoKSktZTtyZXR1cm4gcjwwJiYocj0wKSxuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLmJ1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrZSp0aGlzLkJZVEVTX1BFUl9FTEVNRU5ULHIpfSxuPVtcIkludDhBcnJheVwiLFwiVWludDhBcnJheVwiLFwiVWludDhDbGFtcGVkQXJyYXlcIixcIkludDE2QXJyYXlcIixcIlVpbnQxNkFycmF5XCIsXCJJbnQzMkFycmF5XCIsXCJVaW50MzJBcnJheVwiLFwiRmxvYXQzMkFycmF5XCIsXCJGbG9hdDY0QXJyYXlcIl0scj12b2lkIDA7aWYoXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdz9yPXdpbmRvdzpcIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmKHI9c2VsZiksdm9pZCAwIT09cilmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKylyW25bb11dJiYocltuW29dXS5wcm90b3R5cGUuc3ViYXJyYXk9dCl9fShyfHwocj17fSkpLGZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5jb21wcmVzc0FzeW5jPWZ1bmN0aW9uKHQsbixyKXt2YXIgbz1uZXcgZS5UaW1lcixpPW5ldyBlLkNvbXByZXNzb3I7aWYoIXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcImNvbXByZXNzQXN5bmM6IE5vIGNhbGxiYWNrIGFyZ3VtZW50IGdpdmVuXCIpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXQ9ZS5lbmNvZGVVVEY4KHQpO2Vsc2UgaWYobnVsbD09dHx8ISh0IGluc3RhbmNlb2YgVWludDhBcnJheSkpcmV0dXJuIHZvaWQgcih2b2lkIDAsbmV3IFR5cGVFcnJvcihcImNvbXByZXNzQXN5bmM6IEludmFsaWQgaW5wdXQgYXJndW1lbnQsIG9ubHkgJ3N0cmluZycgYW5kICdVaW50OEFycmF5JyBhcmUgc3VwcG9ydGVkXCIpKTt2YXIgYT1lLkFycmF5VG9vbHMuc3BsaXRCeXRlQXJyYXkodCxuLmJsb2NrU2l6ZSksbD1bXSxzPWZ1bmN0aW9uKHQpe2lmKHQ8YS5sZW5ndGgpe3ZhciBjPXZvaWQgMDt0cnl7Yz1pLmNvbXByZXNzQmxvY2soYVt0XSl9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgcih2b2lkIDAsZSl9bC5wdXNoKGMpLG8uZ2V0RWxhcHNlZFRpbWUoKTw9MjA/cyh0KzEpOihlLmVucXVldWVJbW1lZGlhdGUoKGZ1bmN0aW9uKCl7cmV0dXJuIHModCsxKX0pKSxvLnJlc3RhcnQoKSl9ZWxzZXt2YXIgdT1lLkFycmF5VG9vbHMuY29uY2F0VWludDhBcnJheXMobCk7ZS5lbnF1ZXVlSW1tZWRpYXRlKChmdW5jdGlvbigpe3ZhciB0O3RyeXt0PWUuQ29tcHJlc3Npb25Db21tb24uZW5jb2RlQ29tcHJlc3NlZEJ5dGVzKHUsbi5vdXRwdXRFbmNvZGluZyl9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgcih2b2lkIDAsZSl9ZS5lbnF1ZXVlSW1tZWRpYXRlKChmdW5jdGlvbigpe3JldHVybiByKHQpfSkpfSkpfX07ZS5lbnF1ZXVlSW1tZWRpYXRlKChmdW5jdGlvbigpe3JldHVybiBzKDApfSkpfSx0LmNyZWF0ZUNvbXByZXNzaW9uU3RyZWFtPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IGUuQ29tcHJlc3NvcixyPW5ldyhuKDk5KS5UcmFuc2Zvcm0pKHtkZWNvZGVTdHJpbmdzOiEwLGhpZ2hXYXRlck1hcms6NjU1MzZ9KTtyZXR1cm4gci5fdHJhbnNmb3JtPWZ1bmN0aW9uKG4sbyxpKXt2YXIgYTt0cnl7YT1lLkJ1ZmZlclRvb2xzLnVpbnQ4QXJyYXlUb0J1ZmZlcih0LmNvbXByZXNzQmxvY2soZS5CdWZmZXJUb29scy5idWZmZXJUb1VpbnQ4QXJyYXkobikpKX1jYXRjaChlKXtyZXR1cm4gdm9pZCByLmVtaXQoXCJlcnJvclwiLGUpfXIucHVzaChhKSxpKCl9LHJ9LHR9KCk7ZS5Bc3luY0NvbXByZXNzb3I9dH0ob3x8KG89e30pKSxmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuZGVjb21wcmVzc0FzeW5jPWZ1bmN0aW9uKHQsbixyKXtpZighcil0aHJvdyBuZXcgVHlwZUVycm9yKFwiZGVjb21wcmVzc0FzeW5jOiBObyBjYWxsYmFjayBhcmd1bWVudCBnaXZlblwiKTt2YXIgbz1uZXcgZS5UaW1lcjt0cnl7dD1lLkNvbXByZXNzaW9uQ29tbW9uLmRlY29kZUNvbXByZXNzZWRCeXRlcyh0LG4uaW5wdXRFbmNvZGluZyl9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgcih2b2lkIDAsZSl9dmFyIGk9bmV3IGUuRGVjb21wcmVzc29yLGE9ZS5BcnJheVRvb2xzLnNwbGl0Qnl0ZUFycmF5KHQsbi5ibG9ja1NpemUpLGw9W10scz1mdW5jdGlvbih0KXtpZih0PGEubGVuZ3RoKXt2YXIgYz12b2lkIDA7dHJ5e2M9aS5kZWNvbXByZXNzQmxvY2soYVt0XSl9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgcih2b2lkIDAsZSl9bC5wdXNoKGMpLG8uZ2V0RWxhcHNlZFRpbWUoKTw9MjA/cyh0KzEpOihlLmVucXVldWVJbW1lZGlhdGUoKGZ1bmN0aW9uKCl7cmV0dXJuIHModCsxKX0pKSxvLnJlc3RhcnQoKSl9ZWxzZXt2YXIgdT1lLkFycmF5VG9vbHMuY29uY2F0VWludDhBcnJheXMobCk7ZS5lbnF1ZXVlSW1tZWRpYXRlKChmdW5jdGlvbigpe3ZhciB0O3RyeXt0PWUuQ29tcHJlc3Npb25Db21tb24uZW5jb2RlRGVjb21wcmVzc2VkQnl0ZXModSxuLm91dHB1dEVuY29kaW5nKX1jYXRjaChlKXtyZXR1cm4gdm9pZCByKHZvaWQgMCxlKX1lLmVucXVldWVJbW1lZGlhdGUoKGZ1bmN0aW9uKCl7cmV0dXJuIHIodCl9KSl9KSl9fTtlLmVucXVldWVJbW1lZGlhdGUoKGZ1bmN0aW9uKCl7cmV0dXJuIHMoMCl9KSl9LHQuY3JlYXRlRGVjb21wcmVzc2lvblN0cmVhbT1mdW5jdGlvbigpe3ZhciB0PW5ldyBlLkRlY29tcHJlc3NvcixyPW5ldyhuKDk5KS5UcmFuc2Zvcm0pKHtkZWNvZGVTdHJpbmdzOiEwLGhpZ2hXYXRlck1hcms6NjU1MzZ9KTtyZXR1cm4gci5fdHJhbnNmb3JtPWZ1bmN0aW9uKG4sbyxpKXt2YXIgYTt0cnl7YT1lLkJ1ZmZlclRvb2xzLnVpbnQ4QXJyYXlUb0J1ZmZlcih0LmRlY29tcHJlc3NCbG9jayhlLkJ1ZmZlclRvb2xzLmJ1ZmZlclRvVWludDhBcnJheShuKSkpfWNhdGNoKGUpe3JldHVybiB2b2lkIHIuZW1pdChcImVycm9yXCIsZSl9ci5wdXNoKGEpLGkoKX0scn0sdH0oKTtlLkFzeW5jRGVjb21wcmVzc29yPXR9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7dmFyIHQ7IWZ1bmN0aW9uKHQpe3QuY29tcHJlc3NBc3luYz1mdW5jdGlvbihlLG4scil7aWYoXCJCeXRlQXJyYXlcIiE9bi5pbnB1dEVuY29kaW5nfHxlIGluc3RhbmNlb2YgVWludDhBcnJheSl7dmFyIG89e3Rva2VuOk1hdGgucmFuZG9tKCkudG9TdHJpbmcoKSx0eXBlOlwiY29tcHJlc3NcIixkYXRhOmUsaW5wdXRFbmNvZGluZzpuLmlucHV0RW5jb2Rpbmcsb3V0cHV0RW5jb2Rpbmc6bi5vdXRwdXRFbmNvZGluZ30saT1mdW5jdGlvbihlKXt2YXIgbj1lLmRhdGE7biYmbi50b2tlbj09by50b2tlbiYmKHQuZ2xvYmFsV29ya2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsaSksXCJlcnJvclwiPT1uLnR5cGU/cih2b2lkIDAsbmV3IEVycm9yKG4uZXJyb3IpKTpyKG4uZGF0YSkpfTt0Lmdsb2JhbFdvcmtlci5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLGkpLHQuZ2xvYmFsV29ya2VyLnBvc3RNZXNzYWdlKG8sW10pfWVsc2Ugcih2b2lkIDAsbmV3IFR5cGVFcnJvcihcImNvbXByZXNzQXN5bmM6IGlucHV0IGlzIG5vdCBhIFVpbnQ4QXJyYXlcIikpfSx0LmRlY29tcHJlc3NBc3luYz1mdW5jdGlvbihlLG4scil7dmFyIG89e3Rva2VuOk1hdGgucmFuZG9tKCkudG9TdHJpbmcoKSx0eXBlOlwiZGVjb21wcmVzc1wiLGRhdGE6ZSxpbnB1dEVuY29kaW5nOm4uaW5wdXRFbmNvZGluZyxvdXRwdXRFbmNvZGluZzpuLm91dHB1dEVuY29kaW5nfSxpPWZ1bmN0aW9uKGUpe3ZhciBuPWUuZGF0YTtuJiZuLnRva2VuPT1vLnRva2VuJiYodC5nbG9iYWxXb3JrZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIixpKSxcImVycm9yXCI9PW4udHlwZT9yKHZvaWQgMCxuZXcgRXJyb3Iobi5lcnJvcikpOnIobi5kYXRhKSl9O3QuZ2xvYmFsV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsaSksdC5nbG9iYWxXb3JrZXIucG9zdE1lc3NhZ2UobyxbXSl9LHQuaW5zdGFsbFdlYldvcmtlcklmTmVlZGVkPWZ1bmN0aW9uKCl7XCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJnZvaWQgMD09PXNlbGYuZG9jdW1lbnQmJm51bGwhPXNlbGYuYWRkRXZlbnRMaXN0ZW5lciYmKHNlbGYuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwoZnVuY3Rpb24odCl7dmFyIG49dC5kYXRhO2lmKFwiY29tcHJlc3NcIj09bi50eXBlKXt2YXIgcj12b2lkIDA7dHJ5e3I9ZS5jb21wcmVzcyhuLmRhdGEse291dHB1dEVuY29kaW5nOm4ub3V0cHV0RW5jb2Rpbmd9KX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBzZWxmLnBvc3RNZXNzYWdlKHt0b2tlbjpuLnRva2VuLHR5cGU6XCJlcnJvclwiLGVycm9yOmUuY3JlYXRlRXJyb3JNZXNzYWdlKHQpfSxbXSl9KG89e3Rva2VuOm4udG9rZW4sdHlwZTpcImNvbXByZXNzaW9uUmVzdWx0XCIsZGF0YTpyLGVuY29kaW5nOm4ub3V0cHV0RW5jb2Rpbmd9KS5kYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSYmLTE9PT1uYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKFwiTVNJRSAxMFwiKT9zZWxmLnBvc3RNZXNzYWdlKG8sW28uZGF0YS5idWZmZXJdKTpzZWxmLnBvc3RNZXNzYWdlKG8sW10pfWVsc2UgaWYoXCJkZWNvbXByZXNzXCI9PW4udHlwZSl7dmFyIG8saT12b2lkIDA7dHJ5e2k9ZS5kZWNvbXByZXNzKG4uZGF0YSx7aW5wdXRFbmNvZGluZzpuLmlucHV0RW5jb2Rpbmcsb3V0cHV0RW5jb2Rpbmc6bi5vdXRwdXRFbmNvZGluZ30pfWNhdGNoKHQpe3JldHVybiB2b2lkIHNlbGYucG9zdE1lc3NhZ2Uoe3Rva2VuOm4udG9rZW4sdHlwZTpcImVycm9yXCIsZXJyb3I6ZS5jcmVhdGVFcnJvck1lc3NhZ2UodCl9LFtdKX0obz17dG9rZW46bi50b2tlbix0eXBlOlwiZGVjb21wcmVzc2lvblJlc3VsdFwiLGRhdGE6aSxlbmNvZGluZzpuLm91dHB1dEVuY29kaW5nfSkuZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJi0xPT09bmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZihcIk1TSUUgMTBcIik/c2VsZi5wb3N0TWVzc2FnZShvLFtvLmRhdGEuYnVmZmVyXSk6c2VsZi5wb3N0TWVzc2FnZShvLFtdKX19KSksc2VsZi5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwoZnVuY3Rpb24odCl7ZS5sb2coZS5jcmVhdGVFcnJvck1lc3NhZ2UodC5lcnJvcixcIlVuZXhwZWN0ZWQgTFpVVEY4IFdlYldvcmtlciBleGNlcHRpb25cIikpfSkpKX0sdC5jcmVhdGVHbG9iYWxXb3JrZXJJZk5lZWRlZD1mdW5jdGlvbigpe2lmKHQuZ2xvYmFsV29ya2VyKXJldHVybiEwO2lmKCFlLndlYldvcmtlcnNBdmFpbGFibGUoKSlyZXR1cm4hMTtpZighdC5zY3JpcHRVUkkmJlwib2JqZWN0XCI9PXR5cGVvZiBkb2N1bWVudCl7dmFyIG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsenV0ZjhcIik7bnVsbCE9biYmKHQuc2NyaXB0VVJJPW4uZ2V0QXR0cmlidXRlKFwic3JjXCIpfHx2b2lkIDApfXJldHVybiEhdC5zY3JpcHRVUkkmJih0Lmdsb2JhbFdvcmtlcj1uZXcgV29ya2VyKHQuc2NyaXB0VVJJKSwhMCl9LHQudGVybWluYXRlPWZ1bmN0aW9uKCl7dC5nbG9iYWxXb3JrZXImJih0Lmdsb2JhbFdvcmtlci50ZXJtaW5hdGUoKSx0Lmdsb2JhbFdvcmtlcj12b2lkIDApfX0odD1lLldlYldvcmtlcnx8KGUuV2ViV29ya2VyPXt9KSksdC5pbnN0YWxsV2ViV29ya2VySWZOZWVkZWQoKX0ob3x8KG89e30pKSxmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4pe3RoaXMuY29udGFpbmVyPWUsdGhpcy5zdGFydFBvc2l0aW9uPXQsdGhpcy5sZW5ndGg9bn1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNvbnRhaW5lclt0aGlzLnN0YXJ0UG9zaXRpb24rZV19LGUucHJvdG90eXBlLmdldEluUmV2ZXJzZWRPcmRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb250YWluZXJbdGhpcy5zdGFydFBvc2l0aW9uK3RoaXMubGVuZ3RoLTEtZV19LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3RoaXMuY29udGFpbmVyW3RoaXMuc3RhcnRQb3NpdGlvbitlXT10fSxlfSgpO2UuQXJyYXlTZWdtZW50PXR9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUpe2UuY29weUVsZW1lbnRzPWZ1bmN0aW9uKGUsdCxuLHIsbyl7Zm9yKDtvLS07KW5bcisrXT1lW3QrK119LGUuemVyb0VsZW1lbnRzPWZ1bmN0aW9uKGUsdCxuKXtmb3IoO24tLTspZVt0KytdPTB9LGUuY291bnROb256ZXJvVmFsdWVzSW5BcnJheT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPTA7bjxlLmxlbmd0aDtuKyspZVtuXSYmdCsrO3JldHVybiB0fSxlLnRydW5jYXRlU3RhcnRpbmdFbGVtZW50cz1mdW5jdGlvbihlLHQpe2lmKGUubGVuZ3RoPD10KXRocm93IG5ldyBSYW5nZUVycm9yKFwidHJ1bmNhdGVTdGFydGluZ0VsZW1lbnRzOiBSZXF1ZXN0ZWQgbGVuZ3RoIHNob3VsZCBiZSBzbWFsbGVyIHRoYW4gYXJyYXkgbGVuZ3RoXCIpO2Zvcih2YXIgbj1lLmxlbmd0aC10LHI9MDtyPHQ7cisrKWVbcl09ZVtuK3JdO2UubGVuZ3RoPXR9LGUuZG91YmxlQnl0ZUFycmF5Q2FwYWNpdHk9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkoMiplLmxlbmd0aCk7cmV0dXJuIHQuc2V0KGUpLHR9LGUuY29uY2F0VWludDhBcnJheXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj0wLHI9ZTtuPHIubGVuZ3RoO24rKyl0Kz0ocz1yW25dKS5sZW5ndGg7Zm9yKHZhciBvPW5ldyBVaW50OEFycmF5KHQpLGk9MCxhPTAsbD1lO2E8bC5sZW5ndGg7YSsrKXt2YXIgcz1sW2FdO28uc2V0KHMsaSksaSs9cy5sZW5ndGh9cmV0dXJuIG99LGUuc3BsaXRCeXRlQXJyYXk9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W10scj0wO3I8ZS5sZW5ndGg7KXt2YXIgbz1NYXRoLm1pbih0LGUubGVuZ3RoLXIpO24ucHVzaChlLnN1YmFycmF5KHIscitvKSkscis9b31yZXR1cm4gbn19KGUuQXJyYXlUb29sc3x8KGUuQXJyYXlUb29scz17fSkpfShvfHwobz17fSkpLGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXtlLmNvbnZlcnRUb1VpbnQ4QXJyYXlJZk5lZWRlZD1mdW5jdGlvbih0KXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBCdWZmZXImJkJ1ZmZlci5pc0J1ZmZlcih0KT9lLmJ1ZmZlclRvVWludDhBcnJheSh0KTp0fSxlLnVpbnQ4QXJyYXlUb0J1ZmZlcj1mdW5jdGlvbihlKXtpZihCdWZmZXIucHJvdG90eXBlIGluc3RhbmNlb2YgVWludDhBcnJheSl7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCk7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZih0LEJ1ZmZlci5wcm90b3R5cGUpLHR9Zm9yKHZhciBuPWUubGVuZ3RoLHI9bmV3IEJ1ZmZlcihuKSxvPTA7bzxuO28rKylyW29dPWVbb107cmV0dXJuIHJ9LGUuYnVmZmVyVG9VaW50OEFycmF5PWZ1bmN0aW9uKGUpe2lmKEJ1ZmZlci5wcm90b3R5cGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiBuZXcgVWludDhBcnJheShlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKTtmb3IodmFyIHQ9ZS5sZW5ndGgsbj1uZXcgVWludDhBcnJheSh0KSxyPTA7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59fShlLkJ1ZmZlclRvb2xzfHwoZS5CdWZmZXJUb29scz17fSkpfShvfHwobz17fSkpLGZ1bmN0aW9uKGUpeyFmdW5jdGlvbih0KXt0LmdldENyb3BwZWRCdWZmZXI9ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9MCk7dmFyIG89bmV3IFVpbnQ4QXJyYXkobityKTtyZXR1cm4gby5zZXQoZS5zdWJhcnJheSh0LHQrbikpLG99LHQuZ2V0Q3JvcHBlZEFuZEFwcGVuZGVkQnl0ZUFycmF5PWZ1bmN0aW9uKHQsbixyLG8pe3JldHVybiBlLkFycmF5VG9vbHMuY29uY2F0VWludDhBcnJheXMoW3Quc3ViYXJyYXkobixuK3IpLG9dKX0sdC5kZXRlY3RDb21wcmVzc2lvblNvdXJjZUVuY29kaW5nPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcImRldGVjdENvbXByZXNzaW9uU291cmNlRW5jb2Rpbmc6IGlucHV0IGlzIG51bGwgb3IgdW5kZWZpbmVkXCIpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVyblwiU3RyaW5nXCI7aWYoZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fFwiZnVuY3Rpb25cIj09dHlwZW9mIEJ1ZmZlciYmQnVmZmVyLmlzQnVmZmVyKGUpKXJldHVyblwiQnl0ZUFycmF5XCI7dGhyb3cgbmV3IFR5cGVFcnJvcihcImRldGVjdENvbXByZXNzaW9uU291cmNlRW5jb2Rpbmc6IGlucHV0IG11c3QgYmUgb2YgdHlwZSAnc3RyaW5nJywgJ1VpbnQ4QXJyYXknIG9yICdCdWZmZXInXCIpfSx0LmVuY29kZUNvbXByZXNzZWRCeXRlcz1mdW5jdGlvbih0LG4pe3N3aXRjaChuKXtjYXNlXCJCeXRlQXJyYXlcIjpyZXR1cm4gdDtjYXNlXCJCdWZmZXJcIjpyZXR1cm4gZS5CdWZmZXJUb29scy51aW50OEFycmF5VG9CdWZmZXIodCk7Y2FzZVwiQmFzZTY0XCI6cmV0dXJuIGUuZW5jb2RlQmFzZTY0KHQpO2Nhc2VcIkJpbmFyeVN0cmluZ1wiOnJldHVybiBlLmVuY29kZUJpbmFyeVN0cmluZyh0KTtjYXNlXCJTdG9yYWdlQmluYXJ5U3RyaW5nXCI6cmV0dXJuIGUuZW5jb2RlU3RvcmFnZUJpbmFyeVN0cmluZyh0KTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoXCJlbmNvZGVDb21wcmVzc2VkQnl0ZXM6IGludmFsaWQgb3V0cHV0IGVuY29kaW5nIHJlcXVlc3RlZFwiKX19LHQuZGVjb2RlQ29tcHJlc3NlZEJ5dGVzPWZ1bmN0aW9uKHQsbil7aWYobnVsbD09bil0aHJvdyBuZXcgVHlwZUVycm9yKFwiZGVjb2RlQ29tcHJlc3NlZERhdGE6IElucHV0IGlzIG51bGwgb3IgdW5kZWZpbmVkXCIpO3N3aXRjaChuKXtjYXNlXCJCeXRlQXJyYXlcIjpjYXNlXCJCdWZmZXJcIjp2YXIgcj1lLkJ1ZmZlclRvb2xzLmNvbnZlcnRUb1VpbnQ4QXJyYXlJZk5lZWRlZCh0KTtpZighKHIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiZGVjb2RlQ29tcHJlc3NlZERhdGE6ICdCeXRlQXJyYXknIG9yICdCdWZmZXInIGlucHV0IHR5cGUgd2FzIHNwZWNpZmllZCBidXQgaW5wdXQgaXMgbm90IGEgVWludDhBcnJheSBvciBCdWZmZXJcIik7cmV0dXJuIHI7Y2FzZVwiQmFzZTY0XCI6aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihcImRlY29kZUNvbXByZXNzZWREYXRhOiAnQmFzZTY0JyBpbnB1dCB0eXBlIHdhcyBzcGVjaWZpZWQgYnV0IGlucHV0IGlzIG5vdCBhIHN0cmluZ1wiKTtyZXR1cm4gZS5kZWNvZGVCYXNlNjQodCk7Y2FzZVwiQmluYXJ5U3RyaW5nXCI6aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihcImRlY29kZUNvbXByZXNzZWREYXRhOiAnQmluYXJ5U3RyaW5nJyBpbnB1dCB0eXBlIHdhcyBzcGVjaWZpZWQgYnV0IGlucHV0IGlzIG5vdCBhIHN0cmluZ1wiKTtyZXR1cm4gZS5kZWNvZGVCaW5hcnlTdHJpbmcodCk7Y2FzZVwiU3RvcmFnZUJpbmFyeVN0cmluZ1wiOmlmKFwic3RyaW5nXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJkZWNvZGVDb21wcmVzc2VkRGF0YTogJ1N0b3JhZ2VCaW5hcnlTdHJpbmcnIGlucHV0IHR5cGUgd2FzIHNwZWNpZmllZCBidXQgaW5wdXQgaXMgbm90IGEgc3RyaW5nXCIpO3JldHVybiBlLmRlY29kZVN0b3JhZ2VCaW5hcnlTdHJpbmcodCk7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKFwiZGVjb2RlQ29tcHJlc3NlZERhdGE6IGludmFsaWQgaW5wdXQgZW5jb2RpbmcgcmVxdWVzdGVkOiAnXCIuY29uY2F0KG4sXCInXCIpKX19LHQuZW5jb2RlRGVjb21wcmVzc2VkQnl0ZXM9ZnVuY3Rpb24odCxuKXtzd2l0Y2gobil7Y2FzZVwiU3RyaW5nXCI6cmV0dXJuIGUuZGVjb2RlVVRGOCh0KTtjYXNlXCJCeXRlQXJyYXlcIjpyZXR1cm4gdDtjYXNlXCJCdWZmZXJcIjppZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBCdWZmZXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcImVuY29kZURlY29tcHJlc3NlZEJ5dGVzOiBhICdCdWZmZXInIHR5cGUgd2FzIHNwZWNpZmllZCBidXQgaXMgbm90IHN1cHBvcnRlZCBhdCB0aGUgY3VycmVudCBlbnZpcm5tZW50XCIpO3JldHVybiBlLkJ1ZmZlclRvb2xzLnVpbnQ4QXJyYXlUb0J1ZmZlcih0KTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoXCJlbmNvZGVEZWNvbXByZXNzZWRCeXRlczogaW52YWxpZCBvdXRwdXQgZW5jb2RpbmcgcmVxdWVzdGVkXCIpfX19KGUuQ29tcHJlc3Npb25Db21tb258fChlLkNvbXByZXNzaW9uQ29tbW9uPXt9KSl9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7dmFyIHQ7IWZ1bmN0aW9uKHQpe3ZhciBuLHI9W107dC5lbnF1ZXVlSW1tZWRpYXRlPWZ1bmN0aW9uKGUpe3IucHVzaChlKSwxPT09ci5sZW5ndGgmJm4oKX0sdC5pbml0aWFsaXplU2NoZWR1bGVyPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxuPXI7dDxuLmxlbmd0aDt0Kyspe3ZhciBvPW5bdF07dHJ5e28uY2FsbCh2b2lkIDApfWNhdGNoKHQpe2UucHJpbnRFeGNlcHRpb25BbmRTdGFja1RyYWNlVG9Db25zb2xlKHQsXCJlbnF1ZXVlSW1tZWRpYXRlIGV4Y2VwdGlvblwiKX19ci5sZW5ndGg9MH07aWYoZS5ydW5uaW5nSW5Ob2RlSlMoKSluPWZ1bmN0aW9uKCl7cmV0dXJuIHNldEltbWVkaWF0ZSgoZnVuY3Rpb24oKXtyZXR1cm4gdCgpfSkpfTtlbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB3aW5kb3cucG9zdE1lc3NhZ2Upe3ZhciBvLGk9XCJlbnF1ZXVlSW1tZWRpYXRlLVwiK01hdGgucmFuZG9tKCkudG9TdHJpbmcoKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwoZnVuY3Rpb24oZSl7ZS5kYXRhPT09aSYmdCgpfSkpLG89ZS5ydW5uaW5nSW5OdWxsT3JpZ2luKCk/XCIqXCI6d2luZG93LmxvY2F0aW9uLmhyZWYsbj1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cucG9zdE1lc3NhZ2UoaSxvKX19ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBNZXNzYWdlQ2hhbm5lbCYmXCJmdW5jdGlvblwiPT10eXBlb2YgTWVzc2FnZVBvcnQpe3ZhciBhPW5ldyBNZXNzYWdlQ2hhbm5lbDthLnBvcnQxLm9ubWVzc2FnZT1mdW5jdGlvbigpe3JldHVybiB0KCl9LG49ZnVuY3Rpb24oKXtyZXR1cm4gYS5wb3J0Mi5wb3N0TWVzc2FnZSgwKX19ZWxzZSBuPWZ1bmN0aW9uKCl7cmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIHQoKX0pLDApfX0sdC5pbml0aWFsaXplU2NoZWR1bGVyKCl9KHQ9ZS5FdmVudExvb3B8fChlLkV2ZW50TG9vcD17fSkpLGUuZW5xdWV1ZUltbWVkaWF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdC5lbnF1ZXVlSW1tZWRpYXRlKGUpfX0ob3x8KG89e30pKSxmdW5jdGlvbihlKXshZnVuY3Rpb24oZSl7ZS5vdmVycmlkZT1mdW5jdGlvbih0LG4pe3JldHVybiBlLmV4dGVuZCh0LG4pfSxlLmV4dGVuZD1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIm9iaiBpcyBudWxsIG9yIHVuZGVmaW5lZFwiKTtpZihcIm9iamVjdFwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwib2JqIGlzIG5vdCBhbiBvYmplY3RcIik7aWYobnVsbD09dCYmKHQ9e30pLFwib2JqZWN0XCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJuZXdQcm9wZXJ0aWVzIGlzIG5vdCBhbiBvYmplY3RcIik7aWYobnVsbCE9dClmb3IodmFyIG4gaW4gdCllW25dPXRbbl07cmV0dXJuIGV9fShlLk9iamVjdFRvb2xzfHwoZS5PYmplY3RUb29scz17fSkpfShvfHwobz17fSkpLGZ1bmN0aW9uKGUpe2UuZ2V0UmFuZG9tSW50ZWdlckluUmFuZ2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKHQtZSkpfSxlLmdldFJhbmRvbVVURjE2U3RyaW5nT2ZMZW5ndGg9ZnVuY3Rpb24odCl7Zm9yKHZhciBuPVwiXCIscj0wO3I8dDtyKyspe3ZhciBvPXZvaWQgMDtkb3tvPWUuZ2V0UmFuZG9tSW50ZWdlckluUmFuZ2UoMCwxMTE0MTEyKX13aGlsZShvPj01NTI5NiYmbzw9NTczNDMpO24rPWUuRW5jb2RpbmcuQ29kZVBvaW50LmRlY29kZVRvU3RyaW5nKG8pfXJldHVybiBufX0ob3x8KG89e30pKSxmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9MTAyNCksdGhpcy5vdXRwdXRCdWZmZXJDYXBhY2l0eT1lLHRoaXMub3V0cHV0UG9zaXRpb249MCx0aGlzLm91dHB1dFN0cmluZz1cIlwiLHRoaXMub3V0cHV0QnVmZmVyPW5ldyBVaW50MTZBcnJheSh0aGlzLm91dHB1dEJ1ZmZlckNhcGFjaXR5KX1yZXR1cm4gZS5wcm90b3R5cGUuYXBwZW5kQ2hhckNvZGU9ZnVuY3Rpb24oZSl7dGhpcy5vdXRwdXRCdWZmZXJbdGhpcy5vdXRwdXRQb3NpdGlvbisrXT1lLHRoaXMub3V0cHV0UG9zaXRpb249PT10aGlzLm91dHB1dEJ1ZmZlckNhcGFjaXR5JiZ0aGlzLmZsdXNoQnVmZmVyVG9PdXRwdXRTdHJpbmcoKX0sZS5wcm90b3R5cGUuYXBwZW5kQ2hhckNvZGVzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl0aGlzLmFwcGVuZENoYXJDb2RlKGVbdF0pfSxlLnByb3RvdHlwZS5hcHBlbmRTdHJpbmc9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXRoaXMuYXBwZW5kQ2hhckNvZGUoZS5jaGFyQ29kZUF0KHQpKX0sZS5wcm90b3R5cGUuYXBwZW5kQ29kZVBvaW50PWZ1bmN0aW9uKGUpe2lmKGU8PTY1NTM1KXRoaXMuYXBwZW5kQ2hhckNvZGUoZSk7ZWxzZXtpZighKGU8PTExMTQxMTEpKXRocm93IG5ldyBFcnJvcihcImFwcGVuZENvZGVQb2ludDogQSBjb2RlIHBvaW50IG9mIFwiLmNvbmNhdChlLFwiIGNhbm5vdCBiZSBlbmNvZGVkIGluIFVURi0xNlwiKSk7dGhpcy5hcHBlbmRDaGFyQ29kZSg1NTI5NisoZS02NTUzNj4+PjEwKSksdGhpcy5hcHBlbmRDaGFyQ29kZSg1NjMyMCsoZS02NTUzNiYxMDIzKSl9fSxlLnByb3RvdHlwZS5nZXRPdXRwdXRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mbHVzaEJ1ZmZlclRvT3V0cHV0U3RyaW5nKCksdGhpcy5vdXRwdXRTdHJpbmd9LGUucHJvdG90eXBlLmZsdXNoQnVmZmVyVG9PdXRwdXRTdHJpbmc9ZnVuY3Rpb24oKXt0aGlzLm91dHB1dFBvc2l0aW9uPT09dGhpcy5vdXRwdXRCdWZmZXJDYXBhY2l0eT90aGlzLm91dHB1dFN0cmluZys9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHRoaXMub3V0cHV0QnVmZmVyKTp0aGlzLm91dHB1dFN0cmluZys9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHRoaXMub3V0cHV0QnVmZmVyLnN1YmFycmF5KDAsdGhpcy5vdXRwdXRQb3NpdGlvbikpLHRoaXMub3V0cHV0UG9zaXRpb249MH0sZX0oKTtlLlN0cmluZ0J1aWxkZXI9dH0ob3x8KG89e30pKSxmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLnJlc3RhcnQoKX1yZXR1cm4gdC5wcm90b3R5cGUucmVzdGFydD1mdW5jdGlvbigpe3RoaXMuc3RhcnRUaW1lPXQuZ2V0VGltZXN0YW1wKCl9LHQucHJvdG90eXBlLmdldEVsYXBzZWRUaW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHQuZ2V0VGltZXN0YW1wKCktdGhpcy5zdGFydFRpbWV9LHQucHJvdG90eXBlLmdldEVsYXBzZWRUaW1lQW5kUmVzdGFydD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0RWxhcHNlZFRpbWUoKTtyZXR1cm4gdGhpcy5yZXN0YXJ0KCksZX0sdC5wcm90b3R5cGUubG9nQW5kUmVzdGFydD1mdW5jdGlvbih0LG4pe3ZvaWQgMD09PW4mJihuPSEwKTt2YXIgcj10aGlzLmdldEVsYXBzZWRUaW1lKCksbz1cIlwiLmNvbmNhdCh0LFwiOiBcIikuY29uY2F0KHIudG9GaXhlZCgzKSxcIm1zXCIpO3JldHVybiBlLmxvZyhvLG4pLHRoaXMucmVzdGFydCgpLHJ9LHQuZ2V0VGltZXN0YW1wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGltZXN0YW1wRnVuY3x8dGhpcy5jcmVhdGVHbG9iYWxUaW1lc3RhbXBGdW5jdGlvbigpLHRoaXMudGltZXN0YW1wRnVuYygpfSx0LmdldE1pY3Jvc2Vjb25kVGltZXN0YW1wPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IoMWUzKnQuZ2V0VGltZXN0YW1wKCkpfSx0LmNyZWF0ZUdsb2JhbFRpbWVzdGFtcEZ1bmN0aW9uPWZ1bmN0aW9uKCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIHByb2Nlc3MmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHByb2Nlc3MuaHJ0aW1lKXt2YXIgZT0wO3RoaXMudGltZXN0YW1wRnVuYz1mdW5jdGlvbigpe3ZhciB0PXByb2Nlc3MuaHJ0aW1lKCksbj0xZTMqdFswXSt0WzFdLzFlNjtyZXR1cm4gZStufSxlPURhdGUubm93KCktdGhpcy50aW1lc3RhbXBGdW5jKCl9ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgY2hyb21lJiZjaHJvbWUuSW50ZXJ2YWwpe3ZhciB0PURhdGUubm93KCksbj1uZXcgY2hyb21lLkludGVydmFsO24uc3RhcnQoKSx0aGlzLnRpbWVzdGFtcEZ1bmM9ZnVuY3Rpb24oKXtyZXR1cm4gdCtuLm1pY3Jvc2Vjb25kcygpLzFlM319ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdyl7dmFyIHI9RGF0ZS5ub3coKS1wZXJmb3JtYW5jZS5ub3coKTt0aGlzLnRpbWVzdGFtcEZ1bmM9ZnVuY3Rpb24oKXtyZXR1cm4gcitwZXJmb3JtYW5jZS5ub3coKX19ZWxzZSBEYXRlLm5vdz90aGlzLnRpbWVzdGFtcEZ1bmM9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKX06dGhpcy50aW1lc3RhbXBGdW5jPWZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9fSx0fSgpO2UuVGltZXI9dH0ob3x8KG89e30pKSxmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dm9pZCAwPT09dCYmKHQ9ITApLHRoaXMuTWluaW11bVNlcXVlbmNlTGVuZ3RoPTQsdGhpcy5NYXhpbXVtU2VxdWVuY2VMZW5ndGg9MzEsdGhpcy5NYXhpbXVtTWF0Y2hEaXN0YW5jZT0zMjc2Nyx0aGlzLlByZWZpeEhhc2hUYWJsZVNpemU9NjU1MzcsdGhpcy5pbnB1dEJ1ZmZlclN0cmVhbU9mZnNldD0xLHQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFVpbnQzMkFycmF5P3RoaXMucHJlZml4SGFzaFRhYmxlPW5ldyBlLkNvbXByZXNzb3JDdXN0b21IYXNoVGFibGUodGhpcy5QcmVmaXhIYXNoVGFibGVTaXplKTp0aGlzLnByZWZpeEhhc2hUYWJsZT1uZXcgZS5Db21wcmVzc29yU2ltcGxlSGFzaFRhYmxlKHRoaXMuUHJlZml4SGFzaFRhYmxlU2l6ZSl9cmV0dXJuIHQucHJvdG90eXBlLmNvbXByZXNzQmxvY2s9ZnVuY3Rpb24odCl7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiY29tcHJlc3NCbG9jazogdW5kZWZpbmVkIG9yIG51bGwgaW5wdXQgcmVjZWl2ZWRcIik7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PWUuZW5jb2RlVVRGOCh0KSksdD1lLkJ1ZmZlclRvb2xzLmNvbnZlcnRUb1VpbnQ4QXJyYXlJZk5lZWRlZCh0KSx0aGlzLmNvbXByZXNzVXRmOEJsb2NrKHQpfSx0LnByb3RvdHlwZS5jb21wcmVzc1V0ZjhCbG9jaz1mdW5jdGlvbihlKXtpZighZXx8MD09ZS5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO3ZhciB0PXRoaXMuY3JvcEFuZEFkZE5ld0J5dGVzVG9JbnB1dEJ1ZmZlcihlKSxuPXRoaXMuaW5wdXRCdWZmZXIscj10aGlzLmlucHV0QnVmZmVyLmxlbmd0aDt0aGlzLm91dHB1dEJ1ZmZlcj1uZXcgVWludDhBcnJheShlLmxlbmd0aCksdGhpcy5vdXRwdXRCdWZmZXJQb3NpdGlvbj0wO2Zvcih2YXIgbz0wLGk9dDtpPHI7aSsrKXt2YXIgYT1uW2ldLGw9aTxvO2lmKGk+ci10aGlzLk1pbmltdW1TZXF1ZW5jZUxlbmd0aClsfHx0aGlzLm91dHB1dFJhd0J5dGUoYSk7ZWxzZXt2YXIgcz10aGlzLmdldEJ1Y2tldEluZGV4Rm9yUHJlZml4KGkpO2lmKCFsKXt2YXIgYz10aGlzLmZpbmRMb25nZXN0TWF0Y2goaSxzKTtudWxsIT1jJiYodGhpcy5vdXRwdXRQb2ludGVyQnl0ZXMoYy5sZW5ndGgsYy5kaXN0YW5jZSksbz1pK2MubGVuZ3RoLGw9ITApfWx8fHRoaXMub3V0cHV0UmF3Qnl0ZShhKTt2YXIgdT10aGlzLmlucHV0QnVmZmVyU3RyZWFtT2Zmc2V0K2k7dGhpcy5wcmVmaXhIYXNoVGFibGUuYWRkVmFsdWVUb0J1Y2tldChzLHUpfX1yZXR1cm4gdGhpcy5vdXRwdXRCdWZmZXIuc3ViYXJyYXkoMCx0aGlzLm91dHB1dEJ1ZmZlclBvc2l0aW9uKX0sdC5wcm90b3R5cGUuZmluZExvbmdlc3RNYXRjaD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucHJlZml4SGFzaFRhYmxlLmdldEFycmF5U2VnbWVudEZvckJ1Y2tldEluZGV4KHQsdGhpcy5yZXVzYWJsZUFycmF5U2VnbWVudE9iamVjdCk7aWYobnVsbD09bilyZXR1cm4gbnVsbDtmb3IodmFyIHIsbz10aGlzLmlucHV0QnVmZmVyLGk9MCxhPTA7YTxuLmxlbmd0aDthKyspe3ZhciBsLHM9bi5nZXRJblJldmVyc2VkT3JkZXIoYSktdGhpcy5pbnB1dEJ1ZmZlclN0cmVhbU9mZnNldCxjPWUtcztpZihsPXZvaWQgMD09PXI/dGhpcy5NaW5pbXVtU2VxdWVuY2VMZW5ndGgtMTpyPDEyOCYmYz49MTI4P2krKGk+Pj4xKTppLGM+dGhpcy5NYXhpbXVtTWF0Y2hEaXN0YW5jZXx8bD49dGhpcy5NYXhpbXVtU2VxdWVuY2VMZW5ndGh8fGUrbD49by5sZW5ndGgpYnJlYWs7aWYob1tzK2xdPT09b1tlK2xdKWZvcih2YXIgdT0wOzt1Kyspe2lmKGUrdT09PW8ubGVuZ3RofHxvW3MrdV0hPT1vW2UrdV0pe3U+bCYmKHI9YyxpPXUpO2JyZWFrfWlmKHU9PT10aGlzLk1heGltdW1TZXF1ZW5jZUxlbmd0aClyZXR1cm57ZGlzdGFuY2U6YyxsZW5ndGg6dGhpcy5NYXhpbXVtU2VxdWVuY2VMZW5ndGh9fX1yZXR1cm4gdm9pZCAwIT09cj97ZGlzdGFuY2U6cixsZW5ndGg6aX06bnVsbH0sdC5wcm90b3R5cGUuZ2V0QnVja2V0SW5kZXhGb3JQcmVmaXg9ZnVuY3Rpb24oZSl7cmV0dXJuKDc4ODA1OTkqdGhpcy5pbnB1dEJ1ZmZlcltlXSszOTYwMSp0aGlzLmlucHV0QnVmZmVyW2UrMV0rMTk5KnRoaXMuaW5wdXRCdWZmZXJbZSsyXSt0aGlzLmlucHV0QnVmZmVyW2UrM10pJXRoaXMuUHJlZml4SGFzaFRhYmxlU2l6ZX0sdC5wcm90b3R5cGUub3V0cHV0UG9pbnRlckJ5dGVzPWZ1bmN0aW9uKGUsdCl7dDwxMjg/KHRoaXMub3V0cHV0UmF3Qnl0ZSgxOTJ8ZSksdGhpcy5vdXRwdXRSYXdCeXRlKHQpKToodGhpcy5vdXRwdXRSYXdCeXRlKDIyNHxlKSx0aGlzLm91dHB1dFJhd0J5dGUodD4+PjgpLHRoaXMub3V0cHV0UmF3Qnl0ZSgyNTUmdCkpfSx0LnByb3RvdHlwZS5vdXRwdXRSYXdCeXRlPWZ1bmN0aW9uKGUpe3RoaXMub3V0cHV0QnVmZmVyW3RoaXMub3V0cHV0QnVmZmVyUG9zaXRpb24rK109ZX0sdC5wcm90b3R5cGUuY3JvcEFuZEFkZE5ld0J5dGVzVG9JbnB1dEJ1ZmZlcj1mdW5jdGlvbih0KXtpZih2b2lkIDA9PT10aGlzLmlucHV0QnVmZmVyKXJldHVybiB0aGlzLmlucHV0QnVmZmVyPXQsMDt2YXIgbj1NYXRoLm1pbih0aGlzLmlucHV0QnVmZmVyLmxlbmd0aCx0aGlzLk1heGltdW1NYXRjaERpc3RhbmNlKSxyPXRoaXMuaW5wdXRCdWZmZXIubGVuZ3RoLW47cmV0dXJuIHRoaXMuaW5wdXRCdWZmZXI9ZS5Db21wcmVzc2lvbkNvbW1vbi5nZXRDcm9wcGVkQW5kQXBwZW5kZWRCeXRlQXJyYXkodGhpcy5pbnB1dEJ1ZmZlcixyLG4sdCksdGhpcy5pbnB1dEJ1ZmZlclN0cmVhbU9mZnNldCs9cixufSx0fSgpO2UuQ29tcHJlc3Nvcj10fShvfHwobz17fSkpLGZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt0aGlzLm1pbmltdW1CdWNrZXRDYXBhY2l0eT00LHRoaXMubWF4aW11bUJ1Y2tldENhcGFjaXR5PTY0LHRoaXMuYnVja2V0TG9jYXRvcnM9bmV3IFVpbnQzMkFycmF5KDIqZSksdGhpcy5zdG9yYWdlPW5ldyBVaW50MzJBcnJheSgyKmUpLHRoaXMuc3RvcmFnZUluZGV4PTF9cmV0dXJuIHQucHJvdG90eXBlLmFkZFZhbHVlVG9CdWNrZXQ9ZnVuY3Rpb24odCxuKXt0PDw9MSx0aGlzLnN0b3JhZ2VJbmRleD49dGhpcy5zdG9yYWdlLmxlbmd0aD4+PjEmJnRoaXMuY29tcGFjdCgpO3ZhciByLG89dGhpcy5idWNrZXRMb2NhdG9yc1t0XTtpZigwPT09bylvPXRoaXMuc3RvcmFnZUluZGV4LHI9MSx0aGlzLnN0b3JhZ2VbdGhpcy5zdG9yYWdlSW5kZXhdPW4sdGhpcy5zdG9yYWdlSW5kZXgrPXRoaXMubWluaW11bUJ1Y2tldENhcGFjaXR5O2Vsc2V7KHI9dGhpcy5idWNrZXRMb2NhdG9yc1t0KzFdKT09PXRoaXMubWF4aW11bUJ1Y2tldENhcGFjaXR5LTEmJihyPXRoaXMudHJ1bmNhdGVCdWNrZXRUb05ld2VyRWxlbWVudHMobyxyLHRoaXMubWF4aW11bUJ1Y2tldENhcGFjaXR5LzIpKTt2YXIgaT1vK3I7MD09PXRoaXMuc3RvcmFnZVtpXT8odGhpcy5zdG9yYWdlW2ldPW4saT09PXRoaXMuc3RvcmFnZUluZGV4JiYodGhpcy5zdG9yYWdlSW5kZXgrPXIpKTooZS5BcnJheVRvb2xzLmNvcHlFbGVtZW50cyh0aGlzLnN0b3JhZ2Usbyx0aGlzLnN0b3JhZ2UsdGhpcy5zdG9yYWdlSW5kZXgsciksbz10aGlzLnN0b3JhZ2VJbmRleCx0aGlzLnN0b3JhZ2VJbmRleCs9cix0aGlzLnN0b3JhZ2VbdGhpcy5zdG9yYWdlSW5kZXgrK109bix0aGlzLnN0b3JhZ2VJbmRleCs9cikscisrfXRoaXMuYnVja2V0TG9jYXRvcnNbdF09byx0aGlzLmJ1Y2tldExvY2F0b3JzW3QrMV09cn0sdC5wcm90b3R5cGUudHJ1bmNhdGVCdWNrZXRUb05ld2VyRWxlbWVudHM9ZnVuY3Rpb24odCxuLHIpe3ZhciBvPXQrbi1yO3JldHVybiBlLkFycmF5VG9vbHMuY29weUVsZW1lbnRzKHRoaXMuc3RvcmFnZSxvLHRoaXMuc3RvcmFnZSx0LHIpLGUuQXJyYXlUb29scy56ZXJvRWxlbWVudHModGhpcy5zdG9yYWdlLHQrcixuLXIpLHJ9LHQucHJvdG90eXBlLmNvbXBhY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmJ1Y2tldExvY2F0b3JzLG49dGhpcy5zdG9yYWdlO3RoaXMuYnVja2V0TG9jYXRvcnM9bmV3IFVpbnQzMkFycmF5KHRoaXMuYnVja2V0TG9jYXRvcnMubGVuZ3RoKSx0aGlzLnN0b3JhZ2VJbmRleD0xO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cis9Mil7dmFyIG89dFtyKzFdOzAhPT1vJiYodGhpcy5idWNrZXRMb2NhdG9yc1tyXT10aGlzLnN0b3JhZ2VJbmRleCx0aGlzLmJ1Y2tldExvY2F0b3JzW3IrMV09byx0aGlzLnN0b3JhZ2VJbmRleCs9TWF0aC5tYXgoTWF0aC5taW4oMipvLHRoaXMubWF4aW11bUJ1Y2tldENhcGFjaXR5KSx0aGlzLm1pbmltdW1CdWNrZXRDYXBhY2l0eSkpfWZvcih0aGlzLnN0b3JhZ2U9bmV3IFVpbnQzMkFycmF5KDgqdGhpcy5zdG9yYWdlSW5kZXgpLHI9MDtyPHQubGVuZ3RoO3IrPTIpe3ZhciBpPXRbcl07aWYoMCE9PWkpe3ZhciBhPXRoaXMuYnVja2V0TG9jYXRvcnNbcl0sbD10aGlzLmJ1Y2tldExvY2F0b3JzW3IrMV07ZS5BcnJheVRvb2xzLmNvcHlFbGVtZW50cyhuLGksdGhpcy5zdG9yYWdlLGEsbCl9fX0sdC5wcm90b3R5cGUuZ2V0QXJyYXlTZWdtZW50Rm9yQnVja2V0SW5kZXg9ZnVuY3Rpb24odCxuKXt0PDw9MTt2YXIgcj10aGlzLmJ1Y2tldExvY2F0b3JzW3RdO3JldHVybiAwPT09cj9udWxsOih2b2lkIDA9PT1uJiYobj1uZXcgZS5BcnJheVNlZ21lbnQodGhpcy5zdG9yYWdlLHIsdGhpcy5idWNrZXRMb2NhdG9yc1t0KzFdKSksbil9LHQucHJvdG90eXBlLmdldFVzZWRCdWNrZXRDb3VudD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmZsb29yKGUuQXJyYXlUb29scy5jb3VudE5vbnplcm9WYWx1ZXNJbkFycmF5KHRoaXMuYnVja2V0TG9jYXRvcnMpLzIpfSx0LnByb3RvdHlwZS5nZXRUb3RhbEVsZW1lbnRDb3VudD1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLHQ9MDt0PHRoaXMuYnVja2V0TG9jYXRvcnMubGVuZ3RoO3QrPTIpZSs9dGhpcy5idWNrZXRMb2NhdG9yc1t0KzFdO3JldHVybiBlfSx0fSgpO2UuQ29tcHJlc3NvckN1c3RvbUhhc2hUYWJsZT10fShvfHwobz17fSkpLGZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt0aGlzLm1heGltdW1CdWNrZXRDYXBhY2l0eT02NCx0aGlzLmJ1Y2tldHM9bmV3IEFycmF5KGUpfXJldHVybiB0LnByb3RvdHlwZS5hZGRWYWx1ZVRvQnVja2V0PWZ1bmN0aW9uKHQsbil7dmFyIHI9dGhpcy5idWNrZXRzW3RdO3ZvaWQgMD09PXI/dGhpcy5idWNrZXRzW3RdPVtuXTooci5sZW5ndGg9PT10aGlzLm1heGltdW1CdWNrZXRDYXBhY2l0eS0xJiZlLkFycmF5VG9vbHMudHJ1bmNhdGVTdGFydGluZ0VsZW1lbnRzKHIsdGhpcy5tYXhpbXVtQnVja2V0Q2FwYWNpdHkvMiksci5wdXNoKG4pKX0sdC5wcm90b3R5cGUuZ2V0QXJyYXlTZWdtZW50Rm9yQnVja2V0SW5kZXg9ZnVuY3Rpb24odCxuKXt2YXIgcj10aGlzLmJ1Y2tldHNbdF07cmV0dXJuIHZvaWQgMD09PXI/bnVsbDoodm9pZCAwPT09biYmKG49bmV3IGUuQXJyYXlTZWdtZW50KHIsMCxyLmxlbmd0aCkpLG4pfSx0LnByb3RvdHlwZS5nZXRVc2VkQnVja2V0Q291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gZS5BcnJheVRvb2xzLmNvdW50Tm9uemVyb1ZhbHVlc0luQXJyYXkodGhpcy5idWNrZXRzKX0sdC5wcm90b3R5cGUuZ2V0VG90YWxFbGVtZW50Q291bnQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PTA7dDx0aGlzLmJ1Y2tldHMubGVuZ3RoO3QrKyl2b2lkIDAhPT10aGlzLmJ1Y2tldHNbdF0mJihlKz10aGlzLmJ1Y2tldHNbdF0ubGVuZ3RoKTtyZXR1cm4gZX0sdH0oKTtlLkNvbXByZXNzb3JTaW1wbGVIYXNoVGFibGU9dH0ob3x8KG89e30pKSxmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLk1heGltdW1NYXRjaERpc3RhbmNlPTMyNzY3LHRoaXMub3V0cHV0UG9zaXRpb249MH1yZXR1cm4gdC5wcm90b3R5cGUuZGVjb21wcmVzc0Jsb2NrVG9TdHJpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9ZS5CdWZmZXJUb29scy5jb252ZXJ0VG9VaW50OEFycmF5SWZOZWVkZWQodCksZS5kZWNvZGVVVEY4KHRoaXMuZGVjb21wcmVzc0Jsb2NrKHQpKX0sdC5wcm90b3R5cGUuZGVjb21wcmVzc0Jsb2NrPWZ1bmN0aW9uKHQpe3RoaXMuaW5wdXRCdWZmZXJSZW1haW5kZXImJih0PWUuQXJyYXlUb29scy5jb25jYXRVaW50OEFycmF5cyhbdGhpcy5pbnB1dEJ1ZmZlclJlbWFpbmRlcix0XSksdGhpcy5pbnB1dEJ1ZmZlclJlbWFpbmRlcj12b2lkIDApO2Zvcih2YXIgbj10aGlzLmNyb3BPdXRwdXRCdWZmZXJUb1dpbmRvd0FuZEluaXRpYWxpemUoTWF0aC5tYXgoNCp0Lmxlbmd0aCwxMDI0KSkscj0wLG89dC5sZW5ndGg7cjxvO3IrKyl7dmFyIGk9dFtyXTtpZihpPj4+Nj09Myl7dmFyIGE9aT4+PjU7aWYocj09by0xfHxyPT1vLTImJjc9PWEpe3RoaXMuaW5wdXRCdWZmZXJSZW1haW5kZXI9dC5zdWJhcnJheShyKTticmVha31pZih0W3IrMV0+Pj43PT0xKXRoaXMub3V0cHV0Qnl0ZShpKTtlbHNle3ZhciBsPTMxJmkscz12b2lkIDA7Nj09YT8ocz10W3IrMV0scis9MSk6KHM9dFtyKzFdPDw4fHRbcisyXSxyKz0yKTtmb3IodmFyIGM9dGhpcy5vdXRwdXRQb3NpdGlvbi1zLHU9MDt1PGw7dSsrKXRoaXMub3V0cHV0Qnl0ZSh0aGlzLm91dHB1dEJ1ZmZlcltjK3VdKX19ZWxzZSB0aGlzLm91dHB1dEJ5dGUoaSl9cmV0dXJuIHRoaXMucm9sbEJhY2tJZk91dHB1dEJ1ZmZlckVuZHNXaXRoQVRydW5jYXRlZE11bHRpYnl0ZVNlcXVlbmNlKCksZS5Db21wcmVzc2lvbkNvbW1vbi5nZXRDcm9wcGVkQnVmZmVyKHRoaXMub3V0cHV0QnVmZmVyLG4sdGhpcy5vdXRwdXRQb3NpdGlvbi1uKX0sdC5wcm90b3R5cGUub3V0cHV0Qnl0ZT1mdW5jdGlvbih0KXt0aGlzLm91dHB1dFBvc2l0aW9uPT09dGhpcy5vdXRwdXRCdWZmZXIubGVuZ3RoJiYodGhpcy5vdXRwdXRCdWZmZXI9ZS5BcnJheVRvb2xzLmRvdWJsZUJ5dGVBcnJheUNhcGFjaXR5KHRoaXMub3V0cHV0QnVmZmVyKSksdGhpcy5vdXRwdXRCdWZmZXJbdGhpcy5vdXRwdXRQb3NpdGlvbisrXT10fSx0LnByb3RvdHlwZS5jcm9wT3V0cHV0QnVmZmVyVG9XaW5kb3dBbmRJbml0aWFsaXplPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLm91dHB1dEJ1ZmZlcilyZXR1cm4gdGhpcy5vdXRwdXRCdWZmZXI9bmV3IFVpbnQ4QXJyYXkodCksMDt2YXIgbj1NYXRoLm1pbih0aGlzLm91dHB1dFBvc2l0aW9uLHRoaXMuTWF4aW11bU1hdGNoRGlzdGFuY2UpO2lmKHRoaXMub3V0cHV0QnVmZmVyPWUuQ29tcHJlc3Npb25Db21tb24uZ2V0Q3JvcHBlZEJ1ZmZlcih0aGlzLm91dHB1dEJ1ZmZlcix0aGlzLm91dHB1dFBvc2l0aW9uLW4sbix0KSx0aGlzLm91dHB1dFBvc2l0aW9uPW4sdGhpcy5vdXRwdXRCdWZmZXJSZW1haW5kZXIpe2Zvcih2YXIgcj0wO3I8dGhpcy5vdXRwdXRCdWZmZXJSZW1haW5kZXIubGVuZ3RoO3IrKyl0aGlzLm91dHB1dEJ5dGUodGhpcy5vdXRwdXRCdWZmZXJSZW1haW5kZXJbcl0pO3RoaXMub3V0cHV0QnVmZmVyUmVtYWluZGVyPXZvaWQgMH1yZXR1cm4gbn0sdC5wcm90b3R5cGUucm9sbEJhY2tJZk91dHB1dEJ1ZmZlckVuZHNXaXRoQVRydW5jYXRlZE11bHRpYnl0ZVNlcXVlbmNlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTE7ZTw9NCYmdGhpcy5vdXRwdXRQb3NpdGlvbi1lPj0wO2UrKyl7dmFyIHQ9dGhpcy5vdXRwdXRCdWZmZXJbdGhpcy5vdXRwdXRQb3NpdGlvbi1lXTtpZihlPDQmJnQ+Pj4zPT0zMHx8ZTwzJiZ0Pj4+ND09MTR8fGU8MiYmdD4+PjU9PTYpcmV0dXJuIHRoaXMub3V0cHV0QnVmZmVyUmVtYWluZGVyPXRoaXMub3V0cHV0QnVmZmVyLnN1YmFycmF5KHRoaXMub3V0cHV0UG9zaXRpb24tZSx0aGlzLm91dHB1dFBvc2l0aW9uKSx2b2lkKHRoaXMub3V0cHV0UG9zaXRpb24tPWUpfX0sdH0oKTtlLkRlY29tcHJlc3Nvcj10fShvfHwobz17fSkpLGZ1bmN0aW9uKGUpeyFmdW5jdGlvbih0KXshZnVuY3Rpb24odCl7dmFyIG49bmV3IFVpbnQ4QXJyYXkoWzY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNDMsNDddKSxyPW5ldyBVaW50OEFycmF5KFsyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsNjIsMjU1LDI1NSwyNTUsNjMsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsMjU1LDI1NSwyNTUsMCwyNTUsMjU1LDI1NSwwLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDI1NSwyNTUsMjU1LDI1NV0pO3QuZW5jb2RlPWZ1bmN0aW9uKG4pe3JldHVybiBuJiYwIT1uLmxlbmd0aD9lLnJ1bm5pbmdJbk5vZGVKUygpP2UuQnVmZmVyVG9vbHMudWludDhBcnJheVRvQnVmZmVyKG4pLnRvU3RyaW5nKFwiYmFzZTY0XCIpOnQuZW5jb2RlV2l0aEpTKG4pOlwiXCJ9LHQuZGVjb2RlPWZ1bmN0aW9uKG4pe3JldHVybiBuP2UucnVubmluZ0luTm9kZUpTKCk/ZS5CdWZmZXJUb29scy5idWZmZXJUb1VpbnQ4QXJyYXkoQnVmZmVyLmZyb20obixcImJhc2U2NFwiKSk6dC5kZWNvZGVXaXRoSlMobik6bmV3IFVpbnQ4QXJyYXkoMCl9LHQuZW5jb2RlV2l0aEpTPWZ1bmN0aW9uKHQscil7aWYodm9pZCAwPT09ciYmKHI9ITApLCF0fHwwPT10Lmxlbmd0aClyZXR1cm5cIlwiO2Zvcih2YXIgbyxpPW4sYT1uZXcgZS5TdHJpbmdCdWlsZGVyLGw9MCxzPXQubGVuZ3RoO2w8cztsKz0zKWw8PXMtMz8obz10W2xdPDwxNnx0W2wrMV08PDh8dFtsKzJdLGEuYXBwZW5kQ2hhckNvZGUoaVtvPj4+MTgmNjNdKSxhLmFwcGVuZENoYXJDb2RlKGlbbz4+PjEyJjYzXSksYS5hcHBlbmRDaGFyQ29kZShpW28+Pj42JjYzXSksYS5hcHBlbmRDaGFyQ29kZShpWzYzJm9dKSxvPTApOmw9PT1zLTI/KG89dFtsXTw8MTZ8dFtsKzFdPDw4LGEuYXBwZW5kQ2hhckNvZGUoaVtvPj4+MTgmNjNdKSxhLmFwcGVuZENoYXJDb2RlKGlbbz4+PjEyJjYzXSksYS5hcHBlbmRDaGFyQ29kZShpW28+Pj42JjYzXSksciYmYS5hcHBlbmRDaGFyQ29kZSg2MSkpOmw9PT1zLTEmJihvPXRbbF08PDE2LGEuYXBwZW5kQ2hhckNvZGUoaVtvPj4+MTgmNjNdKSxhLmFwcGVuZENoYXJDb2RlKGlbbz4+PjEyJjYzXSksciYmKGEuYXBwZW5kQ2hhckNvZGUoNjEpLGEuYXBwZW5kQ2hhckNvZGUoNjEpKSk7cmV0dXJuIGEuZ2V0T3V0cHV0U3RyaW5nKCl9LHQuZGVjb2RlV2l0aEpTPWZ1bmN0aW9uKGUsdCl7aWYoIWV8fDA9PWUubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTt2YXIgbj1lLmxlbmd0aCU0O2lmKDE9PT1uKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgQmFzZTY0IHN0cmluZzogbGVuZ3RoICUgNCA9PSAxXCIpOzI9PT1uP2UrPVwiPT1cIjozPT09biYmKGUrPVwiPVwiKSx0fHwodD1uZXcgVWludDhBcnJheShlLmxlbmd0aCkpO2Zvcih2YXIgbz0wLGk9ZS5sZW5ndGgsYT0wO2E8aTthKz00KXt2YXIgbD1yW2UuY2hhckNvZGVBdChhKV08PDE4fHJbZS5jaGFyQ29kZUF0KGErMSldPDwxMnxyW2UuY2hhckNvZGVBdChhKzIpXTw8NnxyW2UuY2hhckNvZGVBdChhKzMpXTt0W28rK109bD4+PjE2JjI1NSx0W28rK109bD4+PjgmMjU1LHRbbysrXT0yNTUmbH1yZXR1cm4gNjE9PWUuY2hhckNvZGVBdChpLTEpJiZvLS0sNjE9PWUuY2hhckNvZGVBdChpLTIpJiZvLS0sdC5zdWJhcnJheSgwLG8pfX0odC5CYXNlNjR8fCh0LkJhc2U2ND17fSkpfShlLkVuY29kaW5nfHwoZS5FbmNvZGluZz17fSkpfShvfHwobz17fSkpLGZ1bmN0aW9uKGUpeyFmdW5jdGlvbih0KXshZnVuY3Rpb24odCl7dC5lbmNvZGU9ZnVuY3Rpb24odCl7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQmluYXJ5U3RyaW5nLmVuY29kZTogdW5kZWZpbmVkIG9yIG51bGwgaW5wdXQgcmVjZWl2ZWRcIik7aWYoMD09PXQubGVuZ3RoKXJldHVyblwiXCI7Zm9yKHZhciBuPXQubGVuZ3RoLHI9bmV3IGUuU3RyaW5nQnVpbGRlcixvPTAsaT0xLGE9MDthPG47YSs9Mil7dmFyIGw7bD1hPT1uLTE/dFthXTw8ODp0W2FdPDw4fHRbYSsxXSxyLmFwcGVuZENoYXJDb2RlKG88PDE2LWl8bD4+PmkpLG89bCYoMTw8aSktMSwxNT09PWk/KHIuYXBwZW5kQ2hhckNvZGUobyksbz0wLGk9MSk6aSs9MSxhPj1uLTImJnIuYXBwZW5kQ2hhckNvZGUobzw8MTYtaSl9cmV0dXJuIHIuYXBwZW5kQ2hhckNvZGUoMzI3Njh8biUyKSxyLmdldE91dHB1dFN0cmluZygpfSx0LmRlY29kZT1mdW5jdGlvbihlKXtpZihcInN0cmluZ1wiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQmluYXJ5U3RyaW5nLmRlY29kZTogaW52YWxpZCBpbnB1dCB0eXBlXCIpO2lmKFwiXCI9PWUpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2Zvcih2YXIgdD1uZXcgVWludDhBcnJheSgzKmUubGVuZ3RoKSxuPTAscj1mdW5jdGlvbihlKXt0W24rK109ZT4+PjgsdFtuKytdPTI1NSZlfSxvPTAsaT0wLGE9MDthPGUubGVuZ3RoO2ErKyl7dmFyIGw9ZS5jaGFyQ29kZUF0KGEpO2w+PTMyNzY4PygzMjc2OT09bCYmbi0tLGk9MCk6KDA9PWk/bz1sOihyKG88PGl8bD4+PjE1LWkpLG89bCYoMTw8MTUtaSktMSksMTU9PWk/aT0wOmkrPTEpfXJldHVybiB0LnN1YmFycmF5KDAsbil9fSh0LkJpbmFyeVN0cmluZ3x8KHQuQmluYXJ5U3RyaW5nPXt9KSl9KGUuRW5jb2Rpbmd8fChlLkVuY29kaW5nPXt9KSl9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXtlLmVuY29kZUZyb21TdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNoYXJDb2RlQXQodCk7aWYobjw1NTI5Nnx8bj41NjMxOSlyZXR1cm4gbjt2YXIgcj1lLmNoYXJDb2RlQXQodCsxKTtpZihyPj01NjMyMCYmcjw9NTczNDMpcmV0dXJuIHItNTYzMjArKG4tNTUyOTY8PDEwKSs2NTUzNjt0aHJvdyBuZXcgRXJyb3IoXCJnZXRVbmljb2RlQ29kZVBvaW50OiBSZWNlaXZlZCBhIGxlYWQgc3Vycm9nYXRlIGNoYXJhY3RlciwgY2hhciBjb2RlIFwiLmNvbmNhdChuLFwiLCBmb2xsb3dlZCBieSBcIikuY29uY2F0KHIsXCIsIHdoaWNoIGlzIG5vdCBhIHRyYWlsaW5nIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgY29kZS5cIikpfSxlLmRlY29kZVRvU3RyaW5nPWZ1bmN0aW9uKGUpe2lmKGU8PTY1NTM1KXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpO2lmKGU8PTExMTQxMTEpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTYrKGUtNjU1MzY+Pj4xMCksNTYzMjArKGUtNjU1MzYmMTAyMykpO3Rocm93IG5ldyBFcnJvcihcImdldFN0cmluZ0Zyb21Vbmljb2RlQ29kZVBvaW50OiBBIGNvZGUgcG9pbnQgb2YgXCIuY29uY2F0KGUsXCIgY2Fubm90IGJlIGVuY29kZWQgaW4gVVRGLTE2XCIpKX19KGUuQ29kZVBvaW50fHwoZS5Db2RlUG9pbnQ9e30pKX0oZS5FbmNvZGluZ3x8KGUuRW5jb2Rpbmc9e30pKX0ob3x8KG89e30pKSxmdW5jdGlvbihlKXshZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUpe3ZhciB0PVtcIjAwMFwiLFwiMDAxXCIsXCIwMDJcIixcIjAwM1wiLFwiMDA0XCIsXCIwMDVcIixcIjAwNlwiLFwiMDA3XCIsXCIwMDhcIixcIjAwOVwiLFwiMDEwXCIsXCIwMTFcIixcIjAxMlwiLFwiMDEzXCIsXCIwMTRcIixcIjAxNVwiLFwiMDE2XCIsXCIwMTdcIixcIjAxOFwiLFwiMDE5XCIsXCIwMjBcIixcIjAyMVwiLFwiMDIyXCIsXCIwMjNcIixcIjAyNFwiLFwiMDI1XCIsXCIwMjZcIixcIjAyN1wiLFwiMDI4XCIsXCIwMjlcIixcIjAzMFwiLFwiMDMxXCIsXCIwMzJcIixcIjAzM1wiLFwiMDM0XCIsXCIwMzVcIixcIjAzNlwiLFwiMDM3XCIsXCIwMzhcIixcIjAzOVwiLFwiMDQwXCIsXCIwNDFcIixcIjA0MlwiLFwiMDQzXCIsXCIwNDRcIixcIjA0NVwiLFwiMDQ2XCIsXCIwNDdcIixcIjA0OFwiLFwiMDQ5XCIsXCIwNTBcIixcIjA1MVwiLFwiMDUyXCIsXCIwNTNcIixcIjA1NFwiLFwiMDU1XCIsXCIwNTZcIixcIjA1N1wiLFwiMDU4XCIsXCIwNTlcIixcIjA2MFwiLFwiMDYxXCIsXCIwNjJcIixcIjA2M1wiLFwiMDY0XCIsXCIwNjVcIixcIjA2NlwiLFwiMDY3XCIsXCIwNjhcIixcIjA2OVwiLFwiMDcwXCIsXCIwNzFcIixcIjA3MlwiLFwiMDczXCIsXCIwNzRcIixcIjA3NVwiLFwiMDc2XCIsXCIwNzdcIixcIjA3OFwiLFwiMDc5XCIsXCIwODBcIixcIjA4MVwiLFwiMDgyXCIsXCIwODNcIixcIjA4NFwiLFwiMDg1XCIsXCIwODZcIixcIjA4N1wiLFwiMDg4XCIsXCIwODlcIixcIjA5MFwiLFwiMDkxXCIsXCIwOTJcIixcIjA5M1wiLFwiMDk0XCIsXCIwOTVcIixcIjA5NlwiLFwiMDk3XCIsXCIwOThcIixcIjA5OVwiLFwiMTAwXCIsXCIxMDFcIixcIjEwMlwiLFwiMTAzXCIsXCIxMDRcIixcIjEwNVwiLFwiMTA2XCIsXCIxMDdcIixcIjEwOFwiLFwiMTA5XCIsXCIxMTBcIixcIjExMVwiLFwiMTEyXCIsXCIxMTNcIixcIjExNFwiLFwiMTE1XCIsXCIxMTZcIixcIjExN1wiLFwiMTE4XCIsXCIxMTlcIixcIjEyMFwiLFwiMTIxXCIsXCIxMjJcIixcIjEyM1wiLFwiMTI0XCIsXCIxMjVcIixcIjEyNlwiLFwiMTI3XCIsXCIxMjhcIixcIjEyOVwiLFwiMTMwXCIsXCIxMzFcIixcIjEzMlwiLFwiMTMzXCIsXCIxMzRcIixcIjEzNVwiLFwiMTM2XCIsXCIxMzdcIixcIjEzOFwiLFwiMTM5XCIsXCIxNDBcIixcIjE0MVwiLFwiMTQyXCIsXCIxNDNcIixcIjE0NFwiLFwiMTQ1XCIsXCIxNDZcIixcIjE0N1wiLFwiMTQ4XCIsXCIxNDlcIixcIjE1MFwiLFwiMTUxXCIsXCIxNTJcIixcIjE1M1wiLFwiMTU0XCIsXCIxNTVcIixcIjE1NlwiLFwiMTU3XCIsXCIxNThcIixcIjE1OVwiLFwiMTYwXCIsXCIxNjFcIixcIjE2MlwiLFwiMTYzXCIsXCIxNjRcIixcIjE2NVwiLFwiMTY2XCIsXCIxNjdcIixcIjE2OFwiLFwiMTY5XCIsXCIxNzBcIixcIjE3MVwiLFwiMTcyXCIsXCIxNzNcIixcIjE3NFwiLFwiMTc1XCIsXCIxNzZcIixcIjE3N1wiLFwiMTc4XCIsXCIxNzlcIixcIjE4MFwiLFwiMTgxXCIsXCIxODJcIixcIjE4M1wiLFwiMTg0XCIsXCIxODVcIixcIjE4NlwiLFwiMTg3XCIsXCIxODhcIixcIjE4OVwiLFwiMTkwXCIsXCIxOTFcIixcIjE5MlwiLFwiMTkzXCIsXCIxOTRcIixcIjE5NVwiLFwiMTk2XCIsXCIxOTdcIixcIjE5OFwiLFwiMTk5XCIsXCIyMDBcIixcIjIwMVwiLFwiMjAyXCIsXCIyMDNcIixcIjIwNFwiLFwiMjA1XCIsXCIyMDZcIixcIjIwN1wiLFwiMjA4XCIsXCIyMDlcIixcIjIxMFwiLFwiMjExXCIsXCIyMTJcIixcIjIxM1wiLFwiMjE0XCIsXCIyMTVcIixcIjIxNlwiLFwiMjE3XCIsXCIyMThcIixcIjIxOVwiLFwiMjIwXCIsXCIyMjFcIixcIjIyMlwiLFwiMjIzXCIsXCIyMjRcIixcIjIyNVwiLFwiMjI2XCIsXCIyMjdcIixcIjIyOFwiLFwiMjI5XCIsXCIyMzBcIixcIjIzMVwiLFwiMjMyXCIsXCIyMzNcIixcIjIzNFwiLFwiMjM1XCIsXCIyMzZcIixcIjIzN1wiLFwiMjM4XCIsXCIyMzlcIixcIjI0MFwiLFwiMjQxXCIsXCIyNDJcIixcIjI0M1wiLFwiMjQ0XCIsXCIyNDVcIixcIjI0NlwiLFwiMjQ3XCIsXCIyNDhcIixcIjI0OVwiLFwiMjUwXCIsXCIyNTFcIixcIjI1MlwiLFwiMjUzXCIsXCIyNTRcIixcIjI1NVwiXTtlLmVuY29kZT1mdW5jdGlvbihlKXtmb3IodmFyIG49W10scj0wO3I8ZS5sZW5ndGg7cisrKW4ucHVzaCh0W2Vbcl1dKTtyZXR1cm4gbi5qb2luKFwiIFwiKX19KGUuRGVjaW1hbFN0cmluZ3x8KGUuRGVjaW1hbFN0cmluZz17fSkpfShlLkVuY29kaW5nfHwoZS5FbmNvZGluZz17fSkpfShvfHwobz17fSkpLGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXshZnVuY3Rpb24odCl7dC5lbmNvZGU9ZnVuY3Rpb24odCl7cmV0dXJuIGUuQmluYXJ5U3RyaW5nLmVuY29kZSh0KS5yZXBsYWNlKC9cXDAvZyxcIuiAglwiKX0sdC5kZWNvZGU9ZnVuY3Rpb24odCl7cmV0dXJuIGUuQmluYXJ5U3RyaW5nLmRlY29kZSh0LnJlcGxhY2UoL1xcdTgwMDIvZyxcIlxcMFwiKSl9fShlLlN0b3JhZ2VCaW5hcnlTdHJpbmd8fChlLlN0b3JhZ2VCaW5hcnlTdHJpbmc9e30pKX0oZS5FbmNvZGluZ3x8KGUuRW5jb2Rpbmc9e30pKX0ob3x8KG89e30pKSxmdW5jdGlvbihlKXshZnVuY3Rpb24odCl7IWZ1bmN0aW9uKG4pe3ZhciByLG87bi5lbmNvZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJjAhPXQubGVuZ3RoP2UucnVubmluZ0luTm9kZUpTKCk/ZS5CdWZmZXJUb29scy5idWZmZXJUb1VpbnQ4QXJyYXkoQnVmZmVyLmZyb20odCxcInV0ZjhcIikpOm4uY3JlYXRlTmF0aXZlVGV4dEVuY29kZXJBbmREZWNvZGVySWZBdmFpbGFibGUoKT9yLmVuY29kZSh0KTpuLmVuY29kZVdpdGhKUyh0KTpuZXcgVWludDhBcnJheSgwKX0sbi5kZWNvZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJjAhPXQubGVuZ3RoP2UucnVubmluZ0luTm9kZUpTKCk/ZS5CdWZmZXJUb29scy51aW50OEFycmF5VG9CdWZmZXIodCkudG9TdHJpbmcoXCJ1dGY4XCIpOm4uY3JlYXRlTmF0aXZlVGV4dEVuY29kZXJBbmREZWNvZGVySWZBdmFpbGFibGUoKT9vLmRlY29kZSh0KTpuLmRlY29kZVdpdGhKUyh0KTpcIlwifSxuLmVuY29kZVdpdGhKUz1mdW5jdGlvbihlLG4pe2lmKCFlfHwwPT1lLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bnx8KG49bmV3IFVpbnQ4QXJyYXkoNCplLmxlbmd0aCkpO2Zvcih2YXIgcj0wLG89MDtvPGUubGVuZ3RoO28rKyl7dmFyIGk9dC5Db2RlUG9pbnQuZW5jb2RlRnJvbVN0cmluZyhlLG8pO2lmKGk8PTEyNyluW3IrK109aTtlbHNlIGlmKGk8PTIwNDcpbltyKytdPTE5MnxpPj4+NixuW3IrK109MTI4fDYzJmk7ZWxzZSBpZihpPD02NTUzNSluW3IrK109MjI0fGk+Pj4xMixuW3IrK109MTI4fGk+Pj42JjYzLG5bcisrXT0xMjh8NjMmaTtlbHNle2lmKCEoaTw9MTExNDExMSkpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBVVEYtMTYgc3RyaW5nOiBFbmNvdW50ZXJlZCBhIGNoYXJhY3RlciB1bnN1cHBvcnRlZCBieSBVVEYtOC8xNiAoUkZDIDM2MjkpXCIpO25bcisrXT0yNDB8aT4+PjE4LG5bcisrXT0xMjh8aT4+PjEyJjYzLG5bcisrXT0xMjh8aT4+PjYmNjMsbltyKytdPTEyOHw2MyZpLG8rK319cmV0dXJuIG4uc3ViYXJyYXkoMCxyKX0sbi5kZWNvZGVXaXRoSlM9ZnVuY3Rpb24odCxuLHIpe2lmKHZvaWQgMD09PW4mJihuPTApLCF0fHwwPT10Lmxlbmd0aClyZXR1cm5cIlwiO3ZvaWQgMD09PXImJihyPXQubGVuZ3RoKTtmb3IodmFyIG8saSxhPW5ldyBlLlN0cmluZ0J1aWxkZXIsbD1uLHM9cjtsPHM7KXtpZigoaT10W2xdKT4+Pjc9PTApbz1pLGwrPTE7ZWxzZSBpZihpPj4+NT09Nil7aWYobCsxPj1yKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgVVRGLTggc3RyZWFtOiBUcnVuY2F0ZWQgY29kZXBvaW50IHNlcXVlbmNlIGVuY291bnRlcmVkIGF0IHBvc2l0aW9uIFwiK2wpO289KDMxJmkpPDw2fDYzJnRbbCsxXSxsKz0yfWVsc2UgaWYoaT4+PjQ9PTE0KXtpZihsKzI+PXIpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBVVEYtOCBzdHJlYW06IFRydW5jYXRlZCBjb2RlcG9pbnQgc2VxdWVuY2UgZW5jb3VudGVyZWQgYXQgcG9zaXRpb24gXCIrbCk7bz0oMTUmaSk8PDEyfCg2MyZ0W2wrMV0pPDw2fDYzJnRbbCsyXSxsKz0zfWVsc2V7aWYoaT4+PjMhPTMwKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgVVRGLTggc3RyZWFtOiBBbiBpbnZhbGlkIGxlYWQgYnl0ZSB2YWx1ZSBlbmNvdW50ZXJlZCBhdCBwb3NpdGlvbiBcIitsKTtpZihsKzM+PXIpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBVVEYtOCBzdHJlYW06IFRydW5jYXRlZCBjb2RlcG9pbnQgc2VxdWVuY2UgZW5jb3VudGVyZWQgYXQgcG9zaXRpb24gXCIrbCk7bz0oNyZpKTw8MTh8KDYzJnRbbCsxXSk8PDEyfCg2MyZ0W2wrMl0pPDw2fDYzJnRbbCszXSxsKz00fWEuYXBwZW5kQ29kZVBvaW50KG8pfXJldHVybiBhLmdldE91dHB1dFN0cmluZygpfSxuLmNyZWF0ZU5hdGl2ZVRleHRFbmNvZGVyQW5kRGVjb2RlcklmQXZhaWxhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuISFyfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBUZXh0RW5jb2RlciYmKHI9bmV3IFRleHRFbmNvZGVyKFwidXRmLThcIiksbz1uZXcgVGV4dERlY29kZXIoXCJ1dGYtOFwiKSwhMCl9fSh0LlVURjh8fCh0LlVURjg9e30pKX0oZS5FbmNvZGluZ3x8KGUuRW5jb2Rpbmc9e30pKX0ob3x8KG89e30pKSxmdW5jdGlvbihlKXtlLmNvbXByZXNzPWZ1bmN0aW9uKHQsbil7aWYodm9pZCAwPT09biYmKG49e30pLG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcImNvbXByZXNzOiB1bmRlZmluZWQgb3IgbnVsbCBpbnB1dCByZWNlaXZlZFwiKTt2YXIgcj1lLkNvbXByZXNzaW9uQ29tbW9uLmRldGVjdENvbXByZXNzaW9uU291cmNlRW5jb2RpbmcodCk7bj1lLk9iamVjdFRvb2xzLm92ZXJyaWRlKHtpbnB1dEVuY29kaW5nOnIsb3V0cHV0RW5jb2Rpbmc6XCJCeXRlQXJyYXlcIn0sbik7dmFyIG89KG5ldyBlLkNvbXByZXNzb3IpLmNvbXByZXNzQmxvY2sodCk7cmV0dXJuIGUuQ29tcHJlc3Npb25Db21tb24uZW5jb2RlQ29tcHJlc3NlZEJ5dGVzKG8sbi5vdXRwdXRFbmNvZGluZyl9LGUuZGVjb21wcmVzcz1mdW5jdGlvbih0LG4pe2lmKHZvaWQgMD09PW4mJihuPXt9KSxudWxsPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJkZWNvbXByZXNzOiB1bmRlZmluZWQgb3IgbnVsbCBpbnB1dCByZWNlaXZlZFwiKTtuPWUuT2JqZWN0VG9vbHMub3ZlcnJpZGUoe2lucHV0RW5jb2Rpbmc6XCJCeXRlQXJyYXlcIixvdXRwdXRFbmNvZGluZzpcIlN0cmluZ1wifSxuKTt2YXIgcj1lLkNvbXByZXNzaW9uQ29tbW9uLmRlY29kZUNvbXByZXNzZWRCeXRlcyh0LG4uaW5wdXRFbmNvZGluZyksbz0obmV3IGUuRGVjb21wcmVzc29yKS5kZWNvbXByZXNzQmxvY2socik7cmV0dXJuIGUuQ29tcHJlc3Npb25Db21tb24uZW5jb2RlRGVjb21wcmVzc2VkQnl0ZXMobyxuLm91dHB1dEVuY29kaW5nKX0sZS5jb21wcmVzc0FzeW5jPWZ1bmN0aW9uKHQsbixyKXt2YXIgbztudWxsPT1yJiYocj1mdW5jdGlvbigpe30pO3RyeXtvPWUuQ29tcHJlc3Npb25Db21tb24uZGV0ZWN0Q29tcHJlc3Npb25Tb3VyY2VFbmNvZGluZyh0KX1jYXRjaChlKXtyZXR1cm4gdm9pZCByKHZvaWQgMCxlKX1uPWUuT2JqZWN0VG9vbHMub3ZlcnJpZGUoe2lucHV0RW5jb2Rpbmc6byxvdXRwdXRFbmNvZGluZzpcIkJ5dGVBcnJheVwiLHVzZVdlYldvcmtlcjohMCxibG9ja1NpemU6NjU1MzZ9LG4pLGUuZW5xdWV1ZUltbWVkaWF0ZSgoZnVuY3Rpb24oKXtuLnVzZVdlYldvcmtlciYmZS5XZWJXb3JrZXIuY3JlYXRlR2xvYmFsV29ya2VySWZOZWVkZWQoKT9lLldlYldvcmtlci5jb21wcmVzc0FzeW5jKHQsbixyKTplLkFzeW5jQ29tcHJlc3Nvci5jb21wcmVzc0FzeW5jKHQsbixyKX0pKX0sZS5kZWNvbXByZXNzQXN5bmM9ZnVuY3Rpb24odCxuLHIpe2lmKG51bGw9PXImJihyPWZ1bmN0aW9uKCl7fSksbnVsbCE9dCl7bj1lLk9iamVjdFRvb2xzLm92ZXJyaWRlKHtpbnB1dEVuY29kaW5nOlwiQnl0ZUFycmF5XCIsb3V0cHV0RW5jb2Rpbmc6XCJTdHJpbmdcIix1c2VXZWJXb3JrZXI6ITAsYmxvY2tTaXplOjY1NTM2fSxuKTt2YXIgbz1lLkJ1ZmZlclRvb2xzLmNvbnZlcnRUb1VpbnQ4QXJyYXlJZk5lZWRlZCh0KTtlLkV2ZW50TG9vcC5lbnF1ZXVlSW1tZWRpYXRlKChmdW5jdGlvbigpe24udXNlV2ViV29ya2VyJiZlLldlYldvcmtlci5jcmVhdGVHbG9iYWxXb3JrZXJJZk5lZWRlZCgpP2UuV2ViV29ya2VyLmRlY29tcHJlc3NBc3luYyhvLG4scik6ZS5Bc3luY0RlY29tcHJlc3Nvci5kZWNvbXByZXNzQXN5bmModCxuLHIpfSkpfWVsc2Ugcih2b2lkIDAsbmV3IFR5cGVFcnJvcihcImRlY29tcHJlc3NBc3luYzogdW5kZWZpbmVkIG9yIG51bGwgaW5wdXQgcmVjZWl2ZWRcIikpfSxlLmNyZWF0ZUNvbXByZXNzaW9uU3RyZWFtPWZ1bmN0aW9uKCl7cmV0dXJuIGUuQXN5bmNDb21wcmVzc29yLmNyZWF0ZUNvbXByZXNzaW9uU3RyZWFtKCl9LGUuY3JlYXRlRGVjb21wcmVzc2lvblN0cmVhbT1mdW5jdGlvbigpe3JldHVybiBlLkFzeW5jRGVjb21wcmVzc29yLmNyZWF0ZURlY29tcHJlc3Npb25TdHJlYW0oKX0sZS5lbmNvZGVVVEY4PWZ1bmN0aW9uKHQpe3JldHVybiBlLkVuY29kaW5nLlVURjguZW5jb2RlKHQpfSxlLmRlY29kZVVURjg9ZnVuY3Rpb24odCl7cmV0dXJuIGUuRW5jb2RpbmcuVVRGOC5kZWNvZGUodCl9LGUuZW5jb2RlQmFzZTY0PWZ1bmN0aW9uKHQpe3JldHVybiBlLkVuY29kaW5nLkJhc2U2NC5lbmNvZGUodCl9LGUuZGVjb2RlQmFzZTY0PWZ1bmN0aW9uKHQpe3JldHVybiBlLkVuY29kaW5nLkJhc2U2NC5kZWNvZGUodCl9LGUuZW5jb2RlQmluYXJ5U3RyaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBlLkVuY29kaW5nLkJpbmFyeVN0cmluZy5lbmNvZGUodCl9LGUuZGVjb2RlQmluYXJ5U3RyaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBlLkVuY29kaW5nLkJpbmFyeVN0cmluZy5kZWNvZGUodCl9LGUuZW5jb2RlU3RvcmFnZUJpbmFyeVN0cmluZz1mdW5jdGlvbih0KXtyZXR1cm4gZS5FbmNvZGluZy5TdG9yYWdlQmluYXJ5U3RyaW5nLmVuY29kZSh0KX0sZS5kZWNvZGVTdG9yYWdlQmluYXJ5U3RyaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBlLkVuY29kaW5nLlN0b3JhZ2VCaW5hcnlTdHJpbmcuZGVjb2RlKHQpfX0ob3x8KG89e30pKX0sMzc0OihlLHQsbik9Pntjb25zdHtBYm9ydEVycm9yOnIsY29kZXM6b309bigxNDEpLHtpc05vZGVTdHJlYW06aSxpc1dlYlN0cmVhbTphLGtDb250cm9sbGVyRXJyb3JGdW5jdGlvbjpsfT1uKDEzMikscz1uKDg2KSx7RVJSX0lOVkFMSURfQVJHX1RZUEU6Y309bztlLmV4cG9ydHMuYWRkQWJvcnRTaWduYWw9ZnVuY3Rpb24odCxuKXtpZigoKGUsdCk9PntpZihcIm9iamVjdFwiIT10eXBlb2YgZXx8IShcImFib3J0ZWRcImluIGUpKXRocm93IG5ldyBjKFwic2lnbmFsXCIsXCJBYm9ydFNpZ25hbFwiLGUpfSkodCksIWkobikmJiFhKG4pKXRocm93IG5ldyBjKFwic3RyZWFtXCIsW1wiUmVhZGFibGVTdHJlYW1cIixcIldyaXRhYmxlU3RyZWFtXCIsXCJTdHJlYW1cIl0sbik7cmV0dXJuIGUuZXhwb3J0cy5hZGRBYm9ydFNpZ25hbE5vVmFsaWRhdGUodCxuKX0sZS5leHBvcnRzLmFkZEFib3J0U2lnbmFsTm9WYWxpZGF0ZT1mdW5jdGlvbihlLHQpe2lmKFwib2JqZWN0XCIhPXR5cGVvZiBlfHwhKFwiYWJvcnRlZFwiaW4gZSkpcmV0dXJuIHQ7Y29uc3Qgbj1pKHQpPygpPT57dC5kZXN0cm95KG5ldyByKHZvaWQgMCx7Y2F1c2U6ZS5yZWFzb259KSl9OigpPT57dFtsXShuZXcgcih2b2lkIDAse2NhdXNlOmUucmVhc29ufSkpfTtyZXR1cm4gZS5hYm9ydGVkP24oKTooZS5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIixuKSxzKHQsKCgpPT5lLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLG4pKSkpLHR9fSw2MTY6KGUsdCxuKT0+e2NvbnN0e1N0cmluZ1Byb3RvdHlwZVNsaWNlOnIsU3ltYm9sSXRlcmF0b3I6byxUeXBlZEFycmF5UHJvdG90eXBlU2V0OmksVWludDhBcnJheTphfT1uKDE5MSkse0J1ZmZlcjpsfT1uKDQ4NSkse2luc3BlY3Q6c309big3NzUpO2UuZXhwb3J0cz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaGVhZD1udWxsLHRoaXMudGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9cHVzaChlKXtjb25zdCB0PXtkYXRhOmUsbmV4dDpudWxsfTt0aGlzLmxlbmd0aD4wP3RoaXMudGFpbC5uZXh0PXQ6dGhpcy5oZWFkPXQsdGhpcy50YWlsPXQsKyt0aGlzLmxlbmd0aH11bnNoaWZ0KGUpe2NvbnN0IHQ9e2RhdGE6ZSxuZXh0OnRoaXMuaGVhZH07MD09PXRoaXMubGVuZ3RoJiYodGhpcy50YWlsPXQpLHRoaXMuaGVhZD10LCsrdGhpcy5sZW5ndGh9c2hpZnQoKXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuO2NvbnN0IGU9dGhpcy5oZWFkLmRhdGE7cmV0dXJuIDE9PT10aGlzLmxlbmd0aD90aGlzLmhlYWQ9dGhpcy50YWlsPW51bGw6dGhpcy5oZWFkPXRoaXMuaGVhZC5uZXh0LC0tdGhpcy5sZW5ndGgsZX1jbGVhcigpe3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfWpvaW4oZSl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVyblwiXCI7bGV0IHQ9dGhpcy5oZWFkLG49XCJcIit0LmRhdGE7Zm9yKDtudWxsIT09KHQ9dC5uZXh0KTspbis9ZSt0LmRhdGE7cmV0dXJuIG59Y29uY2F0KGUpe2lmKDA9PT10aGlzLmxlbmd0aClyZXR1cm4gbC5hbGxvYygwKTtjb25zdCB0PWwuYWxsb2NVbnNhZmUoZT4+PjApO2xldCBuPXRoaXMuaGVhZCxyPTA7Zm9yKDtuOylpKHQsbi5kYXRhLHIpLHIrPW4uZGF0YS5sZW5ndGgsbj1uLm5leHQ7cmV0dXJuIHR9Y29uc3VtZShlLHQpe2NvbnN0IG49dGhpcy5oZWFkLmRhdGE7aWYoZTxuLmxlbmd0aCl7Y29uc3QgdD1uLnNsaWNlKDAsZSk7cmV0dXJuIHRoaXMuaGVhZC5kYXRhPW4uc2xpY2UoZSksdH1yZXR1cm4gZT09PW4ubGVuZ3RoP3RoaXMuc2hpZnQoKTp0P3RoaXMuX2dldFN0cmluZyhlKTp0aGlzLl9nZXRCdWZmZXIoZSl9Zmlyc3QoKXtyZXR1cm4gdGhpcy5oZWFkLmRhdGF9KltvXSgpe2ZvcihsZXQgZT10aGlzLmhlYWQ7ZTtlPWUubmV4dCl5aWVsZCBlLmRhdGF9X2dldFN0cmluZyhlKXtsZXQgdD1cIlwiLG49dGhpcy5oZWFkLG89MDtkb3tjb25zdCBpPW4uZGF0YTtpZighKGU+aS5sZW5ndGgpKXtlPT09aS5sZW5ndGg/KHQrPWksKytvLG4ubmV4dD90aGlzLmhlYWQ9bi5uZXh0OnRoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCk6KHQrPXIoaSwwLGUpLHRoaXMuaGVhZD1uLG4uZGF0YT1yKGksZSkpO2JyZWFrfXQrPWksZS09aS5sZW5ndGgsKytvfXdoaWxlKG51bGwhPT0obj1uLm5leHQpKTtyZXR1cm4gdGhpcy5sZW5ndGgtPW8sdH1fZ2V0QnVmZmVyKGUpe2NvbnN0IHQ9bC5hbGxvY1Vuc2FmZShlKSxuPWU7bGV0IHI9dGhpcy5oZWFkLG89MDtkb3tjb25zdCBsPXIuZGF0YTtpZighKGU+bC5sZW5ndGgpKXtlPT09bC5sZW5ndGg/KGkodCxsLG4tZSksKytvLHIubmV4dD90aGlzLmhlYWQ9ci5uZXh0OnRoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCk6KGkodCxuZXcgYShsLmJ1ZmZlcixsLmJ5dGVPZmZzZXQsZSksbi1lKSx0aGlzLmhlYWQ9cixyLmRhdGE9bC5zbGljZShlKSk7YnJlYWt9aSh0LGwsbi1lKSxlLT1sLmxlbmd0aCwrK299d2hpbGUobnVsbCE9PShyPXIubmV4dCkpO3JldHVybiB0aGlzLmxlbmd0aC09byx0fVtTeW1ib2wuZm9yKFwibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b21cIildKGUsdCl7cmV0dXJuIHModGhpcyx7Li4udCxkZXB0aDowLGN1c3RvbUluc3BlY3Q6ITF9KX19fSw4MTg6KGUsdCxuKT0+e2NvbnN0e3BpcGVsaW5lOnJ9PW4oNzU0KSxvPW4oMTgyKSx7ZGVzdHJveWVyOml9PW4oMjMwKSx7aXNOb2RlU3RyZWFtOmEsaXNSZWFkYWJsZTpsLGlzV3JpdGFibGU6cyxpc1dlYlN0cmVhbTpjLGlzVHJhbnNmb3JtU3RyZWFtOnUsaXNXcml0YWJsZVN0cmVhbTpmLGlzUmVhZGFibGVTdHJlYW06ZH09bigxMzIpLHtBYm9ydEVycm9yOnAsY29kZXM6e0VSUl9JTlZBTElEX0FSR19WQUxVRTpoLEVSUl9NSVNTSU5HX0FSR1M6dn19PW4oMTQxKSxnPW4oODYpO2UuZXhwb3J0cz1mdW5jdGlvbiguLi5lKXtpZigwPT09ZS5sZW5ndGgpdGhyb3cgbmV3IHYoXCJzdHJlYW1zXCIpO2lmKDE9PT1lLmxlbmd0aClyZXR1cm4gby5mcm9tKGVbMF0pO2NvbnN0IHQ9Wy4uLmVdO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGVbMF0mJihlWzBdPW8uZnJvbShlWzBdKSksXCJmdW5jdGlvblwiPT10eXBlb2YgZVtlLmxlbmd0aC0xXSl7Y29uc3QgdD1lLmxlbmd0aC0xO2VbdF09by5mcm9tKGVbdF0pfWZvcihsZXQgbj0wO248ZS5sZW5ndGg7KytuKWlmKGEoZVtuXSl8fGMoZVtuXSkpe2lmKG48ZS5sZW5ndGgtMSYmIShsKGVbbl0pfHxkKGVbbl0pfHx1KGVbbl0pKSl0aHJvdyBuZXcgaChgc3RyZWFtc1ske259XWAsdFtuXSxcIm11c3QgYmUgcmVhZGFibGVcIik7aWYobj4wJiYhKHMoZVtuXSl8fGYoZVtuXSl8fHUoZVtuXSkpKXRocm93IG5ldyBoKGBzdHJlYW1zWyR7bn1dYCx0W25dLFwibXVzdCBiZSB3cml0YWJsZVwiKX1sZXQgbixDLG0seSx3O2NvbnN0IGI9ZVswXSx4PXIoZSwoZnVuY3Rpb24oZSl7Y29uc3QgdD15O3k9bnVsbCx0P3QoZSk6ZT93LmRlc3Ryb3koZSk6THx8X3x8dy5kZXN0cm95KCl9KSksXz0hIShzKGIpfHxmKGIpfHx1KGIpKSxMPSEhKGwoeCl8fGQoeCl8fHUoeCkpO2lmKHc9bmV3IG8oe3dyaXRhYmxlT2JqZWN0TW9kZTohKG51bGw9PWJ8fCFiLndyaXRhYmxlT2JqZWN0TW9kZSkscmVhZGFibGVPYmplY3RNb2RlOiEobnVsbD09eHx8IXgud3JpdGFibGVPYmplY3RNb2RlKSx3cml0YWJsZTpfLHJlYWRhYmxlOkx9KSxfKXtpZihhKGIpKXcuX3dyaXRlPWZ1bmN0aW9uKGUsdCxyKXtiLndyaXRlKGUsdCk/cigpOm49cn0sdy5fZmluYWw9ZnVuY3Rpb24oZSl7Yi5lbmQoKSxDPWV9LGIub24oXCJkcmFpblwiLChmdW5jdGlvbigpe2lmKG4pe2NvbnN0IGU9bjtuPW51bGwsZSgpfX0pKTtlbHNlIGlmKGMoYikpe2NvbnN0IGU9KHUoYik/Yi53cml0YWJsZTpiKS5nZXRXcml0ZXIoKTt3Ll93cml0ZT1hc3luYyBmdW5jdGlvbih0LG4scil7dHJ5e2F3YWl0IGUucmVhZHksZS53cml0ZSh0KS5jYXRjaCgoKCk9Pnt9KSkscigpfWNhdGNoKGUpe3IoZSl9fSx3Ll9maW5hbD1hc3luYyBmdW5jdGlvbih0KXt0cnl7YXdhaXQgZS5yZWFkeSxlLmNsb3NlKCkuY2F0Y2goKCgpPT57fSkpLEM9dH1jYXRjaChlKXt0KGUpfX19Y29uc3QgZT11KHgpP3gucmVhZGFibGU6eDtnKGUsKCgpPT57aWYoQyl7Y29uc3QgZT1DO0M9bnVsbCxlKCl9fSkpfWlmKEwpaWYoYSh4KSl4Lm9uKFwicmVhZGFibGVcIiwoZnVuY3Rpb24oKXtpZihtKXtjb25zdCBlPW07bT1udWxsLGUoKX19KSkseC5vbihcImVuZFwiLChmdW5jdGlvbigpe3cucHVzaChudWxsKX0pKSx3Ll9yZWFkPWZ1bmN0aW9uKCl7Zm9yKDs7KXtjb25zdCBlPXgucmVhZCgpO2lmKG51bGw9PT1lKXJldHVybiB2b2lkKG09dy5fcmVhZCk7aWYoIXcucHVzaChlKSlyZXR1cm59fTtlbHNlIGlmKGMoeCkpe2NvbnN0IGU9KHUoeCk/eC5yZWFkYWJsZTp4KS5nZXRSZWFkZXIoKTt3Ll9yZWFkPWFzeW5jIGZ1bmN0aW9uKCl7Zm9yKDs7KXRyeXtjb25zdHt2YWx1ZTp0LGRvbmU6bn09YXdhaXQgZS5yZWFkKCk7aWYoIXcucHVzaCh0KSlyZXR1cm47aWYobilyZXR1cm4gdm9pZCB3LnB1c2gobnVsbCl9Y2F0Y2h7cmV0dXJufX19cmV0dXJuIHcuX2Rlc3Ryb3k9ZnVuY3Rpb24oZSx0KXtlfHxudWxsPT09eXx8KGU9bmV3IHApLG09bnVsbCxuPW51bGwsQz1udWxsLG51bGw9PT15P3QoZSk6KHk9dCxhKHgpJiZpKHgsZSkpfSx3fX0sMjMwOihlLHQsbik9Pntjb25zdCByPW4oNTMzKSx7YWdncmVnYXRlVHdvRXJyb3JzOm8sY29kZXM6e0VSUl9NVUxUSVBMRV9DQUxMQkFDSzppfSxBYm9ydEVycm9yOmF9PW4oMTQxKSx7U3ltYm9sOmx9PW4oMTkxKSx7a0Rlc3Ryb3llZDpzLGlzRGVzdHJveWVkOmMsaXNGaW5pc2hlZDp1LGlzU2VydmVyUmVxdWVzdDpmfT1uKDEzMiksZD1sKFwia0Rlc3Ryb3lcIikscD1sKFwia0NvbnN0cnVjdFwiKTtmdW5jdGlvbiBoKGUsdCxuKXtlJiYoZS5zdGFjayx0JiYhdC5lcnJvcmVkJiYodC5lcnJvcmVkPWUpLG4mJiFuLmVycm9yZWQmJihuLmVycm9yZWQ9ZSkpfWZ1bmN0aW9uIHYoZSx0LG4pe2xldCBvPSExO2Z1bmN0aW9uIGkodCl7aWYobylyZXR1cm47bz0hMDtjb25zdCBpPWUuX3JlYWRhYmxlU3RhdGUsYT1lLl93cml0YWJsZVN0YXRlO2godCxhLGkpLGEmJihhLmNsb3NlZD0hMCksaSYmKGkuY2xvc2VkPSEwKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBuJiZuKHQpLHQ/ci5uZXh0VGljayhnLGUsdCk6ci5uZXh0VGljayhDLGUpfXRyeXtlLl9kZXN0cm95KHR8fG51bGwsaSl9Y2F0Y2godCl7aSh0KX19ZnVuY3Rpb24gZyhlLHQpe20oZSx0KSxDKGUpfWZ1bmN0aW9uIEMoZSl7Y29uc3QgdD1lLl9yZWFkYWJsZVN0YXRlLG49ZS5fd3JpdGFibGVTdGF0ZTtuJiYobi5jbG9zZUVtaXR0ZWQ9ITApLHQmJih0LmNsb3NlRW1pdHRlZD0hMCksKG51bGwhPW4mJm4uZW1pdENsb3NlfHxudWxsIT10JiZ0LmVtaXRDbG9zZSkmJmUuZW1pdChcImNsb3NlXCIpfWZ1bmN0aW9uIG0oZSx0KXtjb25zdCBuPWUuX3JlYWRhYmxlU3RhdGUscj1lLl93cml0YWJsZVN0YXRlO251bGwhPXImJnIuZXJyb3JFbWl0dGVkfHxudWxsIT1uJiZuLmVycm9yRW1pdHRlZHx8KHImJihyLmVycm9yRW1pdHRlZD0hMCksbiYmKG4uZXJyb3JFbWl0dGVkPSEwKSxlLmVtaXQoXCJlcnJvclwiLHQpKX1mdW5jdGlvbiB5KGUsdCxuKXtjb25zdCBvPWUuX3JlYWRhYmxlU3RhdGUsaT1lLl93cml0YWJsZVN0YXRlO2lmKG51bGwhPWkmJmkuZGVzdHJveWVkfHxudWxsIT1vJiZvLmRlc3Ryb3llZClyZXR1cm4gdGhpcztudWxsIT1vJiZvLmF1dG9EZXN0cm95fHxudWxsIT1pJiZpLmF1dG9EZXN0cm95P2UuZGVzdHJveSh0KTp0JiYodC5zdGFjayxpJiYhaS5lcnJvcmVkJiYoaS5lcnJvcmVkPXQpLG8mJiFvLmVycm9yZWQmJihvLmVycm9yZWQ9dCksbj9yLm5leHRUaWNrKG0sZSx0KTptKGUsdCkpfWZ1bmN0aW9uIHcoZSl7bGV0IHQ9ITE7ZnVuY3Rpb24gbihuKXtpZih0KXJldHVybiB2b2lkIHkoZSxudWxsIT1uP246bmV3IGkpO3Q9ITA7Y29uc3Qgbz1lLl9yZWFkYWJsZVN0YXRlLGE9ZS5fd3JpdGFibGVTdGF0ZSxsPWF8fG87byYmKG8uY29uc3RydWN0ZWQ9ITApLGEmJihhLmNvbnN0cnVjdGVkPSEwKSxsLmRlc3Ryb3llZD9lLmVtaXQoZCxuKTpuP3koZSxuLCEwKTpyLm5leHRUaWNrKGIsZSl9dHJ5e2UuX2NvbnN0cnVjdCgoZT0+e3IubmV4dFRpY2sobixlKX0pKX1jYXRjaChlKXtyLm5leHRUaWNrKG4sZSl9fWZ1bmN0aW9uIGIoZSl7ZS5lbWl0KHApfWZ1bmN0aW9uIHgoZSl7cmV0dXJuKG51bGw9PWU/dm9pZCAwOmUuc2V0SGVhZGVyKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5hYm9ydH1mdW5jdGlvbiBfKGUpe2UuZW1pdChcImNsb3NlXCIpfWZ1bmN0aW9uIEwoZSx0KXtlLmVtaXQoXCJlcnJvclwiLHQpLHIubmV4dFRpY2soXyxlKX1lLmV4cG9ydHM9e2NvbnN0cnVjdDpmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUuX2NvbnN0cnVjdClyZXR1cm47Y29uc3Qgbj1lLl9yZWFkYWJsZVN0YXRlLG89ZS5fd3JpdGFibGVTdGF0ZTtuJiYobi5jb25zdHJ1Y3RlZD0hMSksbyYmKG8uY29uc3RydWN0ZWQ9ITEpLGUub25jZShwLHQpLGUubGlzdGVuZXJDb3VudChwKT4xfHxyLm5leHRUaWNrKHcsZSl9LGRlc3Ryb3llcjpmdW5jdGlvbihlLHQpe2UmJiFjKGUpJiYodHx8dShlKXx8KHQ9bmV3IGEpLGYoZSk/KGUuc29ja2V0PW51bGwsZS5kZXN0cm95KHQpKTp4KGUpP2UuYWJvcnQoKTp4KGUucmVxKT9lLnJlcS5hYm9ydCgpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuZGVzdHJveT9lLmRlc3Ryb3kodCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZS5jbG9zZT9lLmNsb3NlKCk6dD9yLm5leHRUaWNrKEwsZSx0KTpyLm5leHRUaWNrKF8sZSksZS5kZXN0cm95ZWR8fChlW3NdPSEwKSl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSx0KXtjb25zdCBuPXRoaXMuX3JlYWRhYmxlU3RhdGUscj10aGlzLl93cml0YWJsZVN0YXRlLGk9cnx8bjtyZXR1cm4gbnVsbCE9ciYmci5kZXN0cm95ZWR8fG51bGwhPW4mJm4uZGVzdHJveWVkPyhcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZ0KCksdGhpcyk6KGgoZSxyLG4pLHImJihyLmRlc3Ryb3llZD0hMCksbiYmKG4uZGVzdHJveWVkPSEwKSxpLmNvbnN0cnVjdGVkP3YodGhpcyxlLHQpOnRoaXMub25jZShkLChmdW5jdGlvbihuKXt2KHRoaXMsbyhuLGUpLHQpfSkpLHRoaXMpfSx1bmRlc3Ryb3k6ZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMuX3JlYWRhYmxlU3RhdGUsdD10aGlzLl93cml0YWJsZVN0YXRlO2UmJihlLmNvbnN0cnVjdGVkPSEwLGUuY2xvc2VkPSExLGUuY2xvc2VFbWl0dGVkPSExLGUuZGVzdHJveWVkPSExLGUuZXJyb3JlZD1udWxsLGUuZXJyb3JFbWl0dGVkPSExLGUucmVhZGluZz0hMSxlLmVuZGVkPSExPT09ZS5yZWFkYWJsZSxlLmVuZEVtaXR0ZWQ9ITE9PT1lLnJlYWRhYmxlKSx0JiYodC5jb25zdHJ1Y3RlZD0hMCx0LmRlc3Ryb3llZD0hMSx0LmNsb3NlZD0hMSx0LmNsb3NlRW1pdHRlZD0hMSx0LmVycm9yZWQ9bnVsbCx0LmVycm9yRW1pdHRlZD0hMSx0LmZpbmFsQ2FsbGVkPSExLHQucHJlZmluaXNoZWQ9ITEsdC5lbmRlZD0hMT09PXQud3JpdGFibGUsdC5lbmRpbmc9ITE9PT10LndyaXRhYmxlLHQuZmluaXNoZWQ9ITE9PT10LndyaXRhYmxlKX0sZXJyb3JPckRlc3Ryb3k6eX19LDE4MjooZSx0LG4pPT57Y29uc3R7T2JqZWN0RGVmaW5lUHJvcGVydGllczpyLE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcjpvLE9iamVjdEtleXM6aSxPYmplY3RTZXRQcm90b3R5cGVPZjphfT1uKDE5MSk7ZS5leHBvcnRzPWM7Y29uc3QgbD1uKDg1OCkscz1uKDM3Myk7YShjLnByb3RvdHlwZSxsLnByb3RvdHlwZSksYShjLGwpO3tjb25zdCBlPWkocy5wcm90b3R5cGUpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCBuPWVbdF07Yy5wcm90b3R5cGVbbl18fChjLnByb3RvdHlwZVtuXT1zLnByb3RvdHlwZVtuXSl9fWZ1bmN0aW9uIGMoZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgYykpcmV0dXJuIG5ldyBjKGUpO2wuY2FsbCh0aGlzLGUpLHMuY2FsbCh0aGlzLGUpLGU/KHRoaXMuYWxsb3dIYWxmT3Blbj0hMSE9PWUuYWxsb3dIYWxmT3BlbiwhMT09PWUucmVhZGFibGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRhYmxlPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kZWQ9ITAsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkPSEwKSwhMT09PWUud3JpdGFibGUmJih0aGlzLl93cml0YWJsZVN0YXRlLndyaXRhYmxlPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nPSEwLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQ9ITAsdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZD0hMCkpOnRoaXMuYWxsb3dIYWxmT3Blbj0hMH1sZXQgdSxmO2Z1bmN0aW9uIGQoKXtyZXR1cm4gdm9pZCAwPT09dSYmKHU9e30pLHV9cihjLnByb3RvdHlwZSx7d3JpdGFibGU6e19fcHJvdG9fXzpudWxsLC4uLm8ocy5wcm90b3R5cGUsXCJ3cml0YWJsZVwiKX0sd3JpdGFibGVIaWdoV2F0ZXJNYXJrOntfX3Byb3RvX186bnVsbCwuLi5vKHMucHJvdG90eXBlLFwid3JpdGFibGVIaWdoV2F0ZXJNYXJrXCIpfSx3cml0YWJsZU9iamVjdE1vZGU6e19fcHJvdG9fXzpudWxsLC4uLm8ocy5wcm90b3R5cGUsXCJ3cml0YWJsZU9iamVjdE1vZGVcIil9LHdyaXRhYmxlQnVmZmVyOntfX3Byb3RvX186bnVsbCwuLi5vKHMucHJvdG90eXBlLFwid3JpdGFibGVCdWZmZXJcIil9LHdyaXRhYmxlTGVuZ3RoOntfX3Byb3RvX186bnVsbCwuLi5vKHMucHJvdG90eXBlLFwid3JpdGFibGVMZW5ndGhcIil9LHdyaXRhYmxlRmluaXNoZWQ6e19fcHJvdG9fXzpudWxsLC4uLm8ocy5wcm90b3R5cGUsXCJ3cml0YWJsZUZpbmlzaGVkXCIpfSx3cml0YWJsZUNvcmtlZDp7X19wcm90b19fOm51bGwsLi4ubyhzLnByb3RvdHlwZSxcIndyaXRhYmxlQ29ya2VkXCIpfSx3cml0YWJsZUVuZGVkOntfX3Byb3RvX186bnVsbCwuLi5vKHMucHJvdG90eXBlLFwid3JpdGFibGVFbmRlZFwiKX0sd3JpdGFibGVOZWVkRHJhaW46e19fcHJvdG9fXzpudWxsLC4uLm8ocy5wcm90b3R5cGUsXCJ3cml0YWJsZU5lZWREcmFpblwiKX0sZGVzdHJveWVkOntfX3Byb3RvX186bnVsbCxnZXQoKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQoZSl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPWUsdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9ZSl9fX0pLGMuZnJvbVdlYj1mdW5jdGlvbihlLHQpe3JldHVybiBkKCkubmV3U3RyZWFtRHVwbGV4RnJvbVJlYWRhYmxlV3JpdGFibGVQYWlyKGUsdCl9LGMudG9XZWI9ZnVuY3Rpb24oZSl7cmV0dXJuIGQoKS5uZXdSZWFkYWJsZVdyaXRhYmxlUGFpckZyb21EdXBsZXgoZSl9LGMuZnJvbT1mdW5jdGlvbihlKXtyZXR1cm4gZnx8KGY9big3NDkpKSxmKGUsXCJib2R5XCIpfX0sNzQ5OihlLHQsbik9Pntjb25zdCByPW4oNTMzKSxvPW4oNDg1KSx7aXNSZWFkYWJsZTppLGlzV3JpdGFibGU6YSxpc0l0ZXJhYmxlOmwsaXNOb2RlU3RyZWFtOnMsaXNSZWFkYWJsZU5vZGVTdHJlYW06Yyxpc1dyaXRhYmxlTm9kZVN0cmVhbTp1LGlzRHVwbGV4Tm9kZVN0cmVhbTpmfT1uKDEzMiksZD1uKDg2KSx7QWJvcnRFcnJvcjpwLGNvZGVzOntFUlJfSU5WQUxJRF9BUkdfVFlQRTpoLEVSUl9JTlZBTElEX1JFVFVSTl9WQUxVRTp2fX09bigxNDEpLHtkZXN0cm95ZXI6Z309bigyMzApLEM9bigxODIpLG09big4NTgpLHtjcmVhdGVEZWZlcnJlZFByb21pc2U6eX09big3NzUpLHc9big5MTMpLGI9Z2xvYmFsVGhpcy5CbG9ifHxvLkJsb2IseD12b2lkIDAhPT1iP2Z1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgYn06ZnVuY3Rpb24oZSl7cmV0dXJuITF9LF89Z2xvYmFsVGhpcy5BYm9ydENvbnRyb2xsZXJ8fG4oODc2KS5BYm9ydENvbnRyb2xsZXIse0Z1bmN0aW9uUHJvdG90eXBlQ2FsbDpMfT1uKDE5MSk7Y2xhc3MgTyBleHRlbmRzIEN7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksITE9PT0obnVsbD09ZT92b2lkIDA6ZS5yZWFkYWJsZSkmJih0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRhYmxlPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kZWQ9ITAsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkPSEwKSwhMT09PShudWxsPT1lP3ZvaWQgMDplLndyaXRhYmxlKSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUud3JpdGFibGU9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRpbmc9ITAsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZD0hMCx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkPSEwKX19ZnVuY3Rpb24gRShlKXtjb25zdCB0PWUucmVhZGFibGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGUucmVhZGFibGUucmVhZD9tLndyYXAoZS5yZWFkYWJsZSk6ZS5yZWFkYWJsZSxuPWUud3JpdGFibGU7bGV0IHIsbyxsLHMsYyx1PSEhaSh0KSxmPSEhYShuKTtmdW5jdGlvbiBoKGUpe2NvbnN0IHQ9cztzPW51bGwsdD90KGUpOmUmJmMuZGVzdHJveShlKX1yZXR1cm4gYz1uZXcgTyh7cmVhZGFibGVPYmplY3RNb2RlOiEobnVsbD09dHx8IXQucmVhZGFibGVPYmplY3RNb2RlKSx3cml0YWJsZU9iamVjdE1vZGU6IShudWxsPT1ufHwhbi53cml0YWJsZU9iamVjdE1vZGUpLHJlYWRhYmxlOnUsd3JpdGFibGU6Zn0pLGYmJihkKG4sKGU9PntmPSExLGUmJmcodCxlKSxoKGUpfSkpLGMuX3dyaXRlPWZ1bmN0aW9uKGUsdCxvKXtuLndyaXRlKGUsdCk/bygpOnI9b30sYy5fZmluYWw9ZnVuY3Rpb24oZSl7bi5lbmQoKSxvPWV9LG4ub24oXCJkcmFpblwiLChmdW5jdGlvbigpe2lmKHIpe2NvbnN0IGU9cjtyPW51bGwsZSgpfX0pKSxuLm9uKFwiZmluaXNoXCIsKGZ1bmN0aW9uKCl7aWYobyl7Y29uc3QgZT1vO289bnVsbCxlKCl9fSkpKSx1JiYoZCh0LChlPT57dT0hMSxlJiZnKHQsZSksaChlKX0pKSx0Lm9uKFwicmVhZGFibGVcIiwoZnVuY3Rpb24oKXtpZihsKXtjb25zdCBlPWw7bD1udWxsLGUoKX19KSksdC5vbihcImVuZFwiLChmdW5jdGlvbigpe2MucHVzaChudWxsKX0pKSxjLl9yZWFkPWZ1bmN0aW9uKCl7Zm9yKDs7KXtjb25zdCBlPXQucmVhZCgpO2lmKG51bGw9PT1lKXJldHVybiB2b2lkKGw9Yy5fcmVhZCk7aWYoIWMucHVzaChlKSlyZXR1cm59fSksYy5fZGVzdHJveT1mdW5jdGlvbihlLGkpe2V8fG51bGw9PT1zfHwoZT1uZXcgcCksbD1udWxsLHI9bnVsbCxvPW51bGwsbnVsbD09PXM/aShlKToocz1pLGcobixlKSxnKHQsZSkpfSxjfWUuZXhwb3J0cz1mdW5jdGlvbiBlKHQsbil7aWYoZih0KSlyZXR1cm4gdDtpZihjKHQpKXJldHVybiBFKHtyZWFkYWJsZTp0fSk7aWYodSh0KSlyZXR1cm4gRSh7d3JpdGFibGU6dH0pO2lmKHModCkpcmV0dXJuIEUoe3dyaXRhYmxlOiExLHJlYWRhYmxlOiExfSk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdCl7Y29uc3R7dmFsdWU6ZSx3cml0ZTpvLGZpbmFsOmksZGVzdHJveTphfT1mdW5jdGlvbihlKXtsZXR7cHJvbWlzZTp0LHJlc29sdmU6bn09eSgpO2NvbnN0IG89bmV3IF8saT1vLnNpZ25hbCxhPWUoYXN5bmMgZnVuY3Rpb24qKCl7Zm9yKDs7KXtjb25zdCBlPXQ7dD1udWxsO2NvbnN0e2NodW5rOm8sZG9uZTphLGNiOmx9PWF3YWl0IGU7aWYoci5uZXh0VGljayhsKSxhKXJldHVybjtpZihpLmFib3J0ZWQpdGhyb3cgbmV3IHAodm9pZCAwLHtjYXVzZTppLnJlYXNvbn0pOyh7cHJvbWlzZTp0LHJlc29sdmU6bn09eSgpKSx5aWVsZCBvfX0oKSx7c2lnbmFsOml9KTtyZXR1cm57dmFsdWU6YSx3cml0ZShlLHQscil7Y29uc3Qgbz1uO249bnVsbCxvKHtjaHVuazplLGRvbmU6ITEsY2I6cn0pfSxmaW5hbChlKXtjb25zdCB0PW47bj1udWxsLHQoe2RvbmU6ITAsY2I6ZX0pfSxkZXN0cm95KGUsdCl7by5hYm9ydCgpLHQoZSl9fX0odCk7aWYobChlKSlyZXR1cm4gdyhPLGUse29iamVjdE1vZGU6ITAsd3JpdGU6byxmaW5hbDppLGRlc3Ryb3k6YX0pO2NvbnN0IHM9bnVsbD09ZT92b2lkIDA6ZS50aGVuO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHMpe2xldCB0O2NvbnN0IG49TChzLGUsKGU9PntpZihudWxsIT1lKXRocm93IG5ldyB2KFwibnVsbHlcIixcImJvZHlcIixlKX0pLChlPT57Zyh0LGUpfSkpO3JldHVybiB0PW5ldyBPKHtvYmplY3RNb2RlOiEwLHJlYWRhYmxlOiExLHdyaXRlOm8sZmluYWwoZSl7aSgoYXN5bmMoKT0+e3RyeXthd2FpdCBuLHIubmV4dFRpY2soZSxudWxsKX1jYXRjaCh0KXtyLm5leHRUaWNrKGUsdCl9fSkpfSxkZXN0cm95OmF9KX10aHJvdyBuZXcgdihcIkl0ZXJhYmxlLCBBc3luY0l0ZXJhYmxlIG9yIEFzeW5jRnVuY3Rpb25cIixuLGUpfWlmKHgodCkpcmV0dXJuIGUodC5hcnJheUJ1ZmZlcigpKTtpZihsKHQpKXJldHVybiB3KE8sdCx7b2JqZWN0TW9kZTohMCx3cml0YWJsZTohMX0pO2lmKFwib2JqZWN0XCI9PXR5cGVvZihudWxsPT10P3ZvaWQgMDp0LndyaXRhYmxlKXx8XCJvYmplY3RcIj09dHlwZW9mKG51bGw9PXQ/dm9pZCAwOnQucmVhZGFibGUpKXJldHVybiBFKHtyZWFkYWJsZTpudWxsIT10JiZ0LnJlYWRhYmxlP2MobnVsbD09dD92b2lkIDA6dC5yZWFkYWJsZSk/bnVsbD09dD92b2lkIDA6dC5yZWFkYWJsZTplKHQucmVhZGFibGUpOnZvaWQgMCx3cml0YWJsZTpudWxsIT10JiZ0LndyaXRhYmxlP3UobnVsbD09dD92b2lkIDA6dC53cml0YWJsZSk/bnVsbD09dD92b2lkIDA6dC53cml0YWJsZTplKHQud3JpdGFibGUpOnZvaWQgMH0pO2NvbnN0IG89bnVsbD09dD92b2lkIDA6dC50aGVuO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG8pe2xldCBlO3JldHVybiBMKG8sdCwodD0+e251bGwhPXQmJmUucHVzaCh0KSxlLnB1c2gobnVsbCl9KSwodD0+e2coZSx0KX0pKSxlPW5ldyBPKHtvYmplY3RNb2RlOiEwLHdyaXRhYmxlOiExLHJlYWQoKXt9fSl9dGhyb3cgbmV3IGgobixbXCJCbG9iXCIsXCJSZWFkYWJsZVN0cmVhbVwiLFwiV3JpdGFibGVTdHJlYW1cIixcIlN0cmVhbVwiLFwiSXRlcmFibGVcIixcIkFzeW5jSXRlcmFibGVcIixcIkZ1bmN0aW9uXCIsXCJ7IHJlYWRhYmxlLCB3cml0YWJsZSB9IHBhaXJcIixcIlByb21pc2VcIl0sdCl9fSw4NjooZSx0LG4pPT57Y29uc3Qgcj1uKDUzMykse0Fib3J0RXJyb3I6byxjb2RlczppfT1uKDE0MSkse0VSUl9JTlZBTElEX0FSR19UWVBFOmEsRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0U6bH09aSx7a0VtcHR5T2JqZWN0OnMsb25jZTpjfT1uKDc3NSkse3ZhbGlkYXRlQWJvcnRTaWduYWw6dSx2YWxpZGF0ZUZ1bmN0aW9uOmYsdmFsaWRhdGVPYmplY3Q6ZCx2YWxpZGF0ZUJvb2xlYW46cH09big5MDQpLHtQcm9taXNlOmgsUHJvbWlzZVByb3RvdHlwZVRoZW46dn09bigxOTEpLHtpc0Nsb3NlZDpnLGlzUmVhZGFibGU6Qyxpc1JlYWRhYmxlTm9kZVN0cmVhbTptLGlzUmVhZGFibGVTdHJlYW06eSxpc1JlYWRhYmxlRmluaXNoZWQ6dyxpc1JlYWRhYmxlRXJyb3JlZDpiLGlzV3JpdGFibGU6eCxpc1dyaXRhYmxlTm9kZVN0cmVhbTpfLGlzV3JpdGFibGVTdHJlYW06TCxpc1dyaXRhYmxlRmluaXNoZWQ6Tyxpc1dyaXRhYmxlRXJyb3JlZDpFLGlzTm9kZVN0cmVhbTpTLHdpbGxFbWl0Q2xvc2U6TSxrSXNDbG9zZWRQcm9taXNlOmp9PW4oMTMyKSxrPSgpPT57fTtmdW5jdGlvbiBSKGUsdCxuKXt2YXIgaSxwO2lmKDI9PT1hcmd1bWVudHMubGVuZ3RoPyhuPXQsdD1zKTpudWxsPT10P3Q9czpkKHQsXCJvcHRpb25zXCIpLGYobixcImNhbGxiYWNrXCIpLHUodC5zaWduYWwsXCJvcHRpb25zLnNpZ25hbFwiKSxuPWMobikseShlKXx8TChlKSlyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe2xldCBpPSExLGE9aztpZih0LnNpZ25hbClpZihhPSgpPT57aT0hMCxuLmNhbGwoZSxuZXcgbyh2b2lkIDAse2NhdXNlOnQuc2lnbmFsLnJlYXNvbn0pKX0sdC5zaWduYWwuYWJvcnRlZClyLm5leHRUaWNrKGEpO2Vsc2V7Y29uc3Qgcj1uO249YygoKC4uLm4pPT57dC5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsYSksci5hcHBseShlLG4pfSkpLHQuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLGEpfWNvbnN0IGw9KC4uLnQpPT57aXx8ci5uZXh0VGljaygoKCk9Pm4uYXBwbHkoZSx0KSkpfTtyZXR1cm4gdihlW2pdLnByb21pc2UsbCxsKSxrfShlLHQsbik7aWYoIVMoZSkpdGhyb3cgbmV3IGEoXCJzdHJlYW1cIixbXCJSZWFkYWJsZVN0cmVhbVwiLFwiV3JpdGFibGVTdHJlYW1cIixcIlN0cmVhbVwiXSxlKTtjb25zdCBoPW51bGwhPT0oaT10LnJlYWRhYmxlKSYmdm9pZCAwIT09aT9pOm0oZSksUj1udWxsIT09KHA9dC53cml0YWJsZSkmJnZvaWQgMCE9PXA/cDpfKGUpLFA9ZS5fd3JpdGFibGVTdGF0ZSxBPWUuX3JlYWRhYmxlU3RhdGUsST0oKT0+e2Uud3JpdGFibGV8fFYoKX07bGV0IFQ9TShlKSYmbShlKT09PWgmJl8oZSk9PT1SLEg9TyhlLCExKTtjb25zdCBWPSgpPT57SD0hMCxlLmRlc3Ryb3llZCYmKFQ9ITEpLCghVHx8ZS5yZWFkYWJsZSYmIWgpJiYoaCYmIUJ8fG4uY2FsbChlKSl9O2xldCBCPXcoZSwhMSk7Y29uc3QgRD0oKT0+e0I9ITAsZS5kZXN0cm95ZWQmJihUPSExKSwoIVR8fGUud3JpdGFibGUmJiFSKSYmKFImJiFIfHxuLmNhbGwoZSkpfSxaPXQ9PntuLmNhbGwoZSx0KX07bGV0ICQ9ZyhlKTtjb25zdCBGPSgpPT57JD0hMDtjb25zdCB0PUUoZSl8fGIoZSk7cmV0dXJuIHQmJlwiYm9vbGVhblwiIT10eXBlb2YgdD9uLmNhbGwoZSx0KTpoJiYhQiYmbShlLCEwKSYmIXcoZSwhMSk/bi5jYWxsKGUsbmV3IGwpOiFSfHxIfHxPKGUsITEpP3ZvaWQgbi5jYWxsKGUpOm4uY2FsbChlLG5ldyBsKX0sTj0oKT0+eyQ9ITA7Y29uc3QgdD1FKGUpfHxiKGUpO2lmKHQmJlwiYm9vbGVhblwiIT10eXBlb2YgdClyZXR1cm4gbi5jYWxsKGUsdCk7bi5jYWxsKGUpfSxVPSgpPT57ZS5yZXEub24oXCJmaW5pc2hcIixWKX07IWZ1bmN0aW9uKGUpe3JldHVybiBlLnNldEhlYWRlciYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5hYm9ydH0oZSk/UiYmIVAmJihlLm9uKFwiZW5kXCIsSSksZS5vbihcImNsb3NlXCIsSSkpOihlLm9uKFwiY29tcGxldGVcIixWKSxUfHxlLm9uKFwiYWJvcnRcIixGKSxlLnJlcT9VKCk6ZS5vbihcInJlcXVlc3RcIixVKSksVHx8XCJib29sZWFuXCIhPXR5cGVvZiBlLmFib3J0ZWR8fGUub24oXCJhYm9ydGVkXCIsRiksZS5vbihcImVuZFwiLEQpLGUub24oXCJmaW5pc2hcIixWKSwhMSE9PXQuZXJyb3ImJmUub24oXCJlcnJvclwiLFopLGUub24oXCJjbG9zZVwiLEYpLCQ/ci5uZXh0VGljayhGKTpudWxsIT1QJiZQLmVycm9yRW1pdHRlZHx8bnVsbCE9QSYmQS5lcnJvckVtaXR0ZWQ/VHx8ci5uZXh0VGljayhOKTooaHx8VCYmIUMoZSl8fCFIJiYhMSE9PXgoZSkpJiYoUnx8VCYmIXgoZSl8fCFCJiYhMSE9PUMoZSkpP0EmJmUucmVxJiZlLmFib3J0ZWQmJnIubmV4dFRpY2soTik6ci5uZXh0VGljayhOKTtjb25zdCBXPSgpPT57bj1rLGUucmVtb3ZlTGlzdGVuZXIoXCJhYm9ydGVkXCIsRiksZS5yZW1vdmVMaXN0ZW5lcihcImNvbXBsZXRlXCIsViksZS5yZW1vdmVMaXN0ZW5lcihcImFib3J0XCIsRiksZS5yZW1vdmVMaXN0ZW5lcihcInJlcXVlc3RcIixVKSxlLnJlcSYmZS5yZXEucmVtb3ZlTGlzdGVuZXIoXCJmaW5pc2hcIixWKSxlLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsSSksZS5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsSSksZS5yZW1vdmVMaXN0ZW5lcihcImZpbmlzaFwiLFYpLGUucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIixEKSxlLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixaKSxlLnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIixGKX07aWYodC5zaWduYWwmJiEkKXtjb25zdCBpPSgpPT57Y29uc3Qgcj1uO1coKSxyLmNhbGwoZSxuZXcgbyh2b2lkIDAse2NhdXNlOnQuc2lnbmFsLnJlYXNvbn0pKX07aWYodC5zaWduYWwuYWJvcnRlZClyLm5leHRUaWNrKGkpO2Vsc2V7Y29uc3Qgcj1uO249YygoKC4uLm4pPT57dC5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsaSksci5hcHBseShlLG4pfSkpLHQuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLGkpfX1yZXR1cm4gV31lLmV4cG9ydHM9UixlLmV4cG9ydHMuZmluaXNoZWQ9ZnVuY3Rpb24oZSx0KXt2YXIgbjtsZXQgcj0hMTtyZXR1cm4gbnVsbD09PXQmJih0PXMpLG51bGwhPT0obj10KSYmdm9pZCAwIT09biYmbi5jbGVhbnVwJiYocCh0LmNsZWFudXAsXCJjbGVhbnVwXCIpLHI9dC5jbGVhbnVwKSxuZXcgaCgoKG4sbyk9Pntjb25zdCBpPVIoZSx0LChlPT57ciYmaSgpLGU/byhlKTpuKCl9KSl9KSl9fSw5MTM6KGUsdCxuKT0+e2NvbnN0IHI9big1MzMpLHtQcm9taXNlUHJvdG90eXBlVGhlbjpvLFN5bWJvbEFzeW5jSXRlcmF0b3I6aSxTeW1ib2xJdGVyYXRvcjphfT1uKDE5MSkse0J1ZmZlcjpsfT1uKDQ4NSkse0VSUl9JTlZBTElEX0FSR19UWVBFOnMsRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUzpjfT1uKDE0MSkuY29kZXM7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtsZXQgdSxmO2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgbClyZXR1cm4gbmV3IGUoe29iamVjdE1vZGU6ITAsLi4ubixyZWFkKCl7dGhpcy5wdXNoKHQpLHRoaXMucHVzaChudWxsKX19KTtpZih0JiZ0W2ldKWY9ITAsdT10W2ldKCk7ZWxzZXtpZighdHx8IXRbYV0pdGhyb3cgbmV3IHMoXCJpdGVyYWJsZVwiLFtcIkl0ZXJhYmxlXCJdLHQpO2Y9ITEsdT10W2FdKCl9Y29uc3QgZD1uZXcgZSh7b2JqZWN0TW9kZTohMCxoaWdoV2F0ZXJNYXJrOjEsLi4ubn0pO2xldCBwPSExO3JldHVybiBkLl9yZWFkPWZ1bmN0aW9uKCl7cHx8KHA9ITAsYXN5bmMgZnVuY3Rpb24oKXtmb3IoOzspe3RyeXtjb25zdHt2YWx1ZTplLGRvbmU6dH09Zj9hd2FpdCB1Lm5leHQoKTp1Lm5leHQoKTtpZih0KWQucHVzaChudWxsKTtlbHNle2NvbnN0IHQ9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS50aGVuP2F3YWl0IGU6ZTtpZihudWxsPT09dCl0aHJvdyBwPSExLG5ldyBjO2lmKGQucHVzaCh0KSljb250aW51ZTtwPSExfX1jYXRjaChlKXtkLmRlc3Ryb3koZSl9YnJlYWt9fSgpKX0sZC5fZGVzdHJveT1mdW5jdGlvbihlLHQpe28oYXN5bmMgZnVuY3Rpb24oZSl7Y29uc3QgdD1udWxsIT1lLG49XCJmdW5jdGlvblwiPT10eXBlb2YgdS50aHJvdztpZih0JiZuKXtjb25zdHt2YWx1ZTp0LGRvbmU6bn09YXdhaXQgdS50aHJvdyhlKTtpZihhd2FpdCB0LG4pcmV0dXJufWlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHUucmV0dXJuKXtjb25zdHt2YWx1ZTplfT1hd2FpdCB1LnJldHVybigpO2F3YWl0IGV9fShlKSwoKCk9PnIubmV4dFRpY2sodCxlKSksKG49PnIubmV4dFRpY2sodCxufHxlKSkpfSxkfX0sMjAwOihlLHQsbik9Pntjb25zdHtBcnJheUlzQXJyYXk6cixPYmplY3RTZXRQcm90b3R5cGVPZjpvfT1uKDE5MSkse0V2ZW50RW1pdHRlcjppfT1uKDQ2NSk7ZnVuY3Rpb24gYShlKXtpLmNhbGwodGhpcyxlKX1mdW5jdGlvbiBsKGUsdCxuKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnByZXBlbmRMaXN0ZW5lcilyZXR1cm4gZS5wcmVwZW5kTGlzdGVuZXIodCxuKTtlLl9ldmVudHMmJmUuX2V2ZW50c1t0XT9yKGUuX2V2ZW50c1t0XSk/ZS5fZXZlbnRzW3RdLnVuc2hpZnQobik6ZS5fZXZlbnRzW3RdPVtuLGUuX2V2ZW50c1t0XV06ZS5vbih0LG4pfW8oYS5wcm90b3R5cGUsaS5wcm90b3R5cGUpLG8oYSxpKSxhLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj10aGlzO2Z1bmN0aW9uIHIodCl7ZS53cml0YWJsZSYmITE9PT1lLndyaXRlKHQpJiZuLnBhdXNlJiZuLnBhdXNlKCl9ZnVuY3Rpb24gbygpe24ucmVhZGFibGUmJm4ucmVzdW1lJiZuLnJlc3VtZSgpfW4ub24oXCJkYXRhXCIsciksZS5vbihcImRyYWluXCIsbyksZS5faXNTdGRpb3x8dCYmITE9PT10LmVuZHx8KG4ub24oXCJlbmRcIixzKSxuLm9uKFwiY2xvc2VcIixjKSk7bGV0IGE9ITE7ZnVuY3Rpb24gcygpe2F8fChhPSEwLGUuZW5kKCkpfWZ1bmN0aW9uIGMoKXthfHwoYT0hMCxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmRlc3Ryb3kmJmUuZGVzdHJveSgpKX1mdW5jdGlvbiB1KGUpe2YoKSwwPT09aS5saXN0ZW5lckNvdW50KHRoaXMsXCJlcnJvclwiKSYmdGhpcy5lbWl0KFwiZXJyb3JcIixlKX1mdW5jdGlvbiBmKCl7bi5yZW1vdmVMaXN0ZW5lcihcImRhdGFcIixyKSxlLnJlbW92ZUxpc3RlbmVyKFwiZHJhaW5cIixvKSxuLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIscyksbi5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsYyksbi5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsdSksZS5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsdSksbi5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLGYpLG4ucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLGYpLGUucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLGYpfXJldHVybiBsKG4sXCJlcnJvclwiLHUpLGwoZSxcImVycm9yXCIsdSksbi5vbihcImVuZFwiLGYpLG4ub24oXCJjbG9zZVwiLGYpLGUub24oXCJjbG9zZVwiLGYpLGUuZW1pdChcInBpcGVcIixuKSxlfSxlLmV4cG9ydHM9e1N0cmVhbTphLHByZXBlbmRMaXN0ZW5lcjpsfX0sNTU0OihlLHQsbik9Pntjb25zdCByPWdsb2JhbFRoaXMuQWJvcnRDb250cm9sbGVyfHxuKDg3NikuQWJvcnRDb250cm9sbGVyLHtjb2Rlczp7RVJSX0lOVkFMSURfQVJHX1ZBTFVFOm8sRVJSX0lOVkFMSURfQVJHX1RZUEU6aSxFUlJfTUlTU0lOR19BUkdTOmEsRVJSX09VVF9PRl9SQU5HRTpsfSxBYm9ydEVycm9yOnN9PW4oMTQxKSx7dmFsaWRhdGVBYm9ydFNpZ25hbDpjLHZhbGlkYXRlSW50ZWdlcjp1LHZhbGlkYXRlT2JqZWN0OmZ9PW4oOTA0KSxkPW4oMTkxKS5TeW1ib2woXCJrV2Vha1wiKSx7ZmluaXNoZWQ6cH09big4NiksaD1uKDgxOCkse2FkZEFib3J0U2lnbmFsTm9WYWxpZGF0ZTp2fT1uKDM3NCkse2lzV3JpdGFibGU6Zyxpc05vZGVTdHJlYW06Q309bigxMzIpLHtBcnJheVByb3RvdHlwZVB1c2g6bSxNYXRoRmxvb3I6eSxOdW1iZXI6dyxOdW1iZXJJc05hTjpiLFByb21pc2U6eCxQcm9taXNlUmVqZWN0Ol8sUHJvbWlzZVByb3RvdHlwZVRoZW46TCxTeW1ib2w6T309bigxOTEpLEU9TyhcImtFbXB0eVwiKSxTPU8oXCJrRW9mXCIpO2Z1bmN0aW9uIE0oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBpKFwiZm5cIixbXCJGdW5jdGlvblwiLFwiQXN5bmNGdW5jdGlvblwiXSxlKTtudWxsIT10JiZmKHQsXCJvcHRpb25zXCIpLG51bGwhPShudWxsPT10P3ZvaWQgMDp0LnNpZ25hbCkmJmModC5zaWduYWwsXCJvcHRpb25zLnNpZ25hbFwiKTtsZXQgbj0xO3JldHVybiBudWxsIT0obnVsbD09dD92b2lkIDA6dC5jb25jdXJyZW5jeSkmJihuPXkodC5jb25jdXJyZW5jeSkpLHUobixcImNvbmN1cnJlbmN5XCIsMSksYXN5bmMgZnVuY3Rpb24qKCl7dmFyIG8saTtjb25zdCBhPW5ldyByLGw9dGhpcyxjPVtdLHU9YS5zaWduYWwsZj17c2lnbmFsOnV9LGQ9KCk9PmEuYWJvcnQoKTtsZXQgcCxoO251bGwhPXQmJm51bGwhPT0obz10LnNpZ25hbCkmJnZvaWQgMCE9PW8mJm8uYWJvcnRlZCYmZCgpLG51bGw9PXR8fG51bGw9PT0oaT10LnNpZ25hbCl8fHZvaWQgMD09PWl8fGkuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsZCk7bGV0IHY9ITE7ZnVuY3Rpb24gZygpe3Y9ITB9IWFzeW5jIGZ1bmN0aW9uKCl7dHJ5e2ZvciBhd2FpdChsZXQgdCBvZiBsKXt2YXIgcjtpZih2KXJldHVybjtpZih1LmFib3J0ZWQpdGhyb3cgbmV3IHM7dHJ5e3Q9ZSh0LGYpfWNhdGNoKGUpe3Q9XyhlKX10IT09RSYmKFwiZnVuY3Rpb25cIj09dHlwZW9mKG51bGw9PT0ocj10KXx8dm9pZCAwPT09cj92b2lkIDA6ci5jYXRjaCkmJnQuY2F0Y2goZyksYy5wdXNoKHQpLHAmJihwKCkscD1udWxsKSwhdiYmYy5sZW5ndGgmJmMubGVuZ3RoPj1uJiZhd2FpdCBuZXcgeCgoZT0+e2g9ZX0pKSl9Yy5wdXNoKFMpfWNhdGNoKGUpe2NvbnN0IHQ9XyhlKTtMKHQsdm9pZCAwLGcpLGMucHVzaCh0KX1maW5hbGx5e3ZhciBvO3Y9ITAscCYmKHAoKSxwPW51bGwpLG51bGw9PXR8fG51bGw9PT0obz10LnNpZ25hbCl8fHZvaWQgMD09PW98fG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsZCl9fSgpO3RyeXtmb3IoOzspe2Zvcig7Yy5sZW5ndGg+MDspe2NvbnN0IGU9YXdhaXQgY1swXTtpZihlPT09UylyZXR1cm47aWYodS5hYm9ydGVkKXRocm93IG5ldyBzO2UhPT1FJiYoeWllbGQgZSksYy5zaGlmdCgpLGgmJihoKCksaD1udWxsKX1hd2FpdCBuZXcgeCgoZT0+e3A9ZX0pKX19ZmluYWxseXthLmFib3J0KCksdj0hMCxoJiYoaCgpLGg9bnVsbCl9fS5jYWxsKHRoaXMpfWFzeW5jIGZ1bmN0aW9uIGooZSx0PXVuZGVmaW5lZCl7Zm9yIGF3YWl0KGNvbnN0IG4gb2Ygay5jYWxsKHRoaXMsZSx0KSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBrKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgaShcImZuXCIsW1wiRnVuY3Rpb25cIixcIkFzeW5jRnVuY3Rpb25cIl0sZSk7cmV0dXJuIE0uY2FsbCh0aGlzLChhc3luYyBmdW5jdGlvbih0LG4pe3JldHVybiBhd2FpdCBlKHQsbik/dDpFfSksdCl9Y2xhc3MgUiBleHRlbmRzIGF7Y29uc3RydWN0b3IoKXtzdXBlcihcInJlZHVjZVwiKSx0aGlzLm1lc3NhZ2U9XCJSZWR1Y2Ugb2YgYW4gZW1wdHkgc3RyZWFtIHJlcXVpcmVzIGFuIGluaXRpYWwgdmFsdWVcIn19ZnVuY3Rpb24gUChlKXtpZihlPXcoZSksYihlKSlyZXR1cm4gMDtpZihlPDApdGhyb3cgbmV3IGwoXCJudW1iZXJcIixcIj49IDBcIixlKTtyZXR1cm4gZX1lLmV4cG9ydHMuc3RyZWFtUmV0dXJuaW5nT3BlcmF0b3JzPXthc0luZGV4ZWRQYWlyczpmdW5jdGlvbihlPXVuZGVmaW5lZCl7cmV0dXJuIG51bGwhPWUmJmYoZSxcIm9wdGlvbnNcIiksbnVsbCE9KG51bGw9PWU/dm9pZCAwOmUuc2lnbmFsKSYmYyhlLnNpZ25hbCxcIm9wdGlvbnMuc2lnbmFsXCIpLGFzeW5jIGZ1bmN0aW9uKigpe2xldCB0PTA7Zm9yIGF3YWl0KGNvbnN0IHIgb2YgdGhpcyl7dmFyIG47aWYobnVsbCE9ZSYmbnVsbCE9PShuPWUuc2lnbmFsKSYmdm9pZCAwIT09biYmbi5hYm9ydGVkKXRocm93IG5ldyBzKHtjYXVzZTplLnNpZ25hbC5yZWFzb259KTt5aWVsZFt0Kysscl19fS5jYWxsKHRoaXMpfSxkcm9wOmZ1bmN0aW9uKGUsdD11bmRlZmluZWQpe3JldHVybiBudWxsIT10JiZmKHQsXCJvcHRpb25zXCIpLG51bGwhPShudWxsPT10P3ZvaWQgMDp0LnNpZ25hbCkmJmModC5zaWduYWwsXCJvcHRpb25zLnNpZ25hbFwiKSxlPVAoZSksYXN5bmMgZnVuY3Rpb24qKCl7dmFyIG47aWYobnVsbCE9dCYmbnVsbCE9PShuPXQuc2lnbmFsKSYmdm9pZCAwIT09biYmbi5hYm9ydGVkKXRocm93IG5ldyBzO2ZvciBhd2FpdChjb25zdCBuIG9mIHRoaXMpe3ZhciByO2lmKG51bGwhPXQmJm51bGwhPT0ocj10LnNpZ25hbCkmJnZvaWQgMCE9PXImJnIuYWJvcnRlZCl0aHJvdyBuZXcgcztlLS08PTAmJih5aWVsZCBuKX19LmNhbGwodGhpcyl9LGZpbHRlcjprLGZsYXRNYXA6ZnVuY3Rpb24oZSx0KXtjb25zdCBuPU0uY2FsbCh0aGlzLGUsdCk7cmV0dXJuIGFzeW5jIGZ1bmN0aW9uKigpe2ZvciBhd2FpdChjb25zdCBlIG9mIG4peWllbGQqZX0uY2FsbCh0aGlzKX0sbWFwOk0sdGFrZTpmdW5jdGlvbihlLHQ9dW5kZWZpbmVkKXtyZXR1cm4gbnVsbCE9dCYmZih0LFwib3B0aW9uc1wiKSxudWxsIT0obnVsbD09dD92b2lkIDA6dC5zaWduYWwpJiZjKHQuc2lnbmFsLFwib3B0aW9ucy5zaWduYWxcIiksZT1QKGUpLGFzeW5jIGZ1bmN0aW9uKigpe3ZhciBuO2lmKG51bGwhPXQmJm51bGwhPT0obj10LnNpZ25hbCkmJnZvaWQgMCE9PW4mJm4uYWJvcnRlZCl0aHJvdyBuZXcgcztmb3IgYXdhaXQoY29uc3QgbiBvZiB0aGlzKXt2YXIgcjtpZihudWxsIT10JiZudWxsIT09KHI9dC5zaWduYWwpJiZ2b2lkIDAhPT1yJiZyLmFib3J0ZWQpdGhyb3cgbmV3IHM7aWYoIShlLS0gPjApKXJldHVybjt5aWVsZCBufX0uY2FsbCh0aGlzKX0sY29tcG9zZTpmdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJmYodCxcIm9wdGlvbnNcIiksbnVsbCE9KG51bGw9PXQ/dm9pZCAwOnQuc2lnbmFsKSYmYyh0LnNpZ25hbCxcIm9wdGlvbnMuc2lnbmFsXCIpLEMoZSkmJiFnKGUpKXRocm93IG5ldyBvKFwic3RyZWFtXCIsZSxcIm11c3QgYmUgd3JpdGFibGVcIik7Y29uc3Qgbj1oKHRoaXMsZSk7cmV0dXJuIG51bGwhPXQmJnQuc2lnbmFsJiZ2KHQuc2lnbmFsLG4pLG59fSxlLmV4cG9ydHMucHJvbWlzZVJldHVybmluZ09wZXJhdG9ycz17ZXZlcnk6YXN5bmMgZnVuY3Rpb24oZSx0PXVuZGVmaW5lZCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgaShcImZuXCIsW1wiRnVuY3Rpb25cIixcIkFzeW5jRnVuY3Rpb25cIl0sZSk7cmV0dXJuIWF3YWl0IGouY2FsbCh0aGlzLChhc3luYyguLi50KT0+IWF3YWl0IGUoLi4udCkpLHQpfSxmb3JFYWNoOmFzeW5jIGZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgaShcImZuXCIsW1wiRnVuY3Rpb25cIixcIkFzeW5jRnVuY3Rpb25cIl0sZSk7Zm9yIGF3YWl0KGNvbnN0IG4gb2YgTS5jYWxsKHRoaXMsKGFzeW5jIGZ1bmN0aW9uKHQsbil7cmV0dXJuIGF3YWl0IGUodCxuKSxFfSksdCkpO30scmVkdWNlOmFzeW5jIGZ1bmN0aW9uKGUsdCxuKXt2YXIgbztpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBpKFwicmVkdWNlclwiLFtcIkZ1bmN0aW9uXCIsXCJBc3luY0Z1bmN0aW9uXCJdLGUpO251bGwhPW4mJmYobixcIm9wdGlvbnNcIiksbnVsbCE9KG51bGw9PW4/dm9pZCAwOm4uc2lnbmFsKSYmYyhuLnNpZ25hbCxcIm9wdGlvbnMuc2lnbmFsXCIpO2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MTtpZihudWxsIT1uJiZudWxsIT09KG89bi5zaWduYWwpJiZ2b2lkIDAhPT1vJiZvLmFib3J0ZWQpe2NvbnN0IGU9bmV3IHModm9pZCAwLHtjYXVzZTpuLnNpZ25hbC5yZWFzb259KTt0aHJvdyB0aGlzLm9uY2UoXCJlcnJvclwiLCgoKT0+e30pKSxhd2FpdCBwKHRoaXMuZGVzdHJveShlKSksZX1jb25zdCBsPW5ldyByLHU9bC5zaWduYWw7aWYobnVsbCE9biYmbi5zaWduYWwpe2NvbnN0IGU9e29uY2U6ITAsW2RdOnRoaXN9O24uc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCgoKT0+bC5hYm9ydCgpKSxlKX1sZXQgaD0hMTt0cnl7Zm9yIGF3YWl0KGNvbnN0IHIgb2YgdGhpcyl7dmFyIHY7aWYoaD0hMCxudWxsIT1uJiZudWxsIT09KHY9bi5zaWduYWwpJiZ2b2lkIDAhPT12JiZ2LmFib3J0ZWQpdGhyb3cgbmV3IHM7YT90PWF3YWl0IGUodCxyLHtzaWduYWw6dX0pOih0PXIsYT0hMCl9aWYoIWgmJiFhKXRocm93IG5ldyBSfWZpbmFsbHl7bC5hYm9ydCgpfXJldHVybiB0fSx0b0FycmF5OmFzeW5jIGZ1bmN0aW9uKGUpe251bGwhPWUmJmYoZSxcIm9wdGlvbnNcIiksbnVsbCE9KG51bGw9PWU/dm9pZCAwOmUuc2lnbmFsKSYmYyhlLnNpZ25hbCxcIm9wdGlvbnMuc2lnbmFsXCIpO2NvbnN0IHQ9W107Zm9yIGF3YWl0KGNvbnN0IHIgb2YgdGhpcyl7dmFyIG47aWYobnVsbCE9ZSYmbnVsbCE9PShuPWUuc2lnbmFsKSYmdm9pZCAwIT09biYmbi5hYm9ydGVkKXRocm93IG5ldyBzKHZvaWQgMCx7Y2F1c2U6ZS5zaWduYWwucmVhc29ufSk7bSh0LHIpfXJldHVybiB0fSxzb21lOmosZmluZDphc3luYyBmdW5jdGlvbihlLHQpe2ZvciBhd2FpdChjb25zdCBuIG9mIGsuY2FsbCh0aGlzLGUsdCkpcmV0dXJuIG59fX0sNDY3OihlLHQsbik9Pntjb25zdHtPYmplY3RTZXRQcm90b3R5cGVPZjpyfT1uKDE5MSk7ZS5leHBvcnRzPWk7Y29uc3Qgbz1uKDIxMCk7ZnVuY3Rpb24gaShlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBpKSlyZXR1cm4gbmV3IGkoZSk7by5jYWxsKHRoaXMsZSl9cihpLnByb3RvdHlwZSxvLnByb3RvdHlwZSkscihpLG8pLGkucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LG4pe24obnVsbCxlKX19LDc1NDooZSx0LG4pPT57Y29uc3Qgcj1uKDUzMykse0FycmF5SXNBcnJheTpvLFByb21pc2U6aSxTeW1ib2xBc3luY0l0ZXJhdG9yOmF9PW4oMTkxKSxsPW4oODYpLHtvbmNlOnN9PW4oNzc1KSxjPW4oMjMwKSx1PW4oMTgyKSx7YWdncmVnYXRlVHdvRXJyb3JzOmYsY29kZXM6e0VSUl9JTlZBTElEX0FSR19UWVBFOmQsRVJSX0lOVkFMSURfUkVUVVJOX1ZBTFVFOnAsRVJSX01JU1NJTkdfQVJHUzpoLEVSUl9TVFJFQU1fREVTVFJPWUVEOnYsRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0U6Z30sQWJvcnRFcnJvcjpDfT1uKDE0MSkse3ZhbGlkYXRlRnVuY3Rpb246bSx2YWxpZGF0ZUFib3J0U2lnbmFsOnl9PW4oOTA0KSx7aXNJdGVyYWJsZTp3LGlzUmVhZGFibGU6Yixpc1JlYWRhYmxlTm9kZVN0cmVhbTp4LGlzTm9kZVN0cmVhbTpfLGlzVHJhbnNmb3JtU3RyZWFtOkwsaXNXZWJTdHJlYW06Tyxpc1JlYWRhYmxlU3RyZWFtOkUsaXNSZWFkYWJsZUVuZGVkOlN9PW4oMTMyKSxNPWdsb2JhbFRoaXMuQWJvcnRDb250cm9sbGVyfHxuKDg3NikuQWJvcnRDb250cm9sbGVyO2xldCBqLGs7ZnVuY3Rpb24gUihlLHQsbil7bGV0IHI9ITE7cmV0dXJuIGUub24oXCJjbG9zZVwiLCgoKT0+e3I9ITB9KSkse2Rlc3Ryb3k6dD0+e3J8fChyPSEwLGMuZGVzdHJveWVyKGUsdHx8bmV3IHYoXCJwaXBlXCIpKSl9LGNsZWFudXA6bChlLHtyZWFkYWJsZTp0LHdyaXRhYmxlOm59LChlPT57cj0hZX0pKX19ZnVuY3Rpb24gUChlKXtpZih3KGUpKXJldHVybiBlO2lmKHgoZSkpcmV0dXJuIGFzeW5jIGZ1bmN0aW9uKihlKXtrfHwoaz1uKDg1OCkpLHlpZWxkKmsucHJvdG90eXBlW2FdLmNhbGwoZSl9KGUpO3Rocm93IG5ldyBkKFwidmFsXCIsW1wiUmVhZGFibGVcIixcIkl0ZXJhYmxlXCIsXCJBc3luY0l0ZXJhYmxlXCJdLGUpfWFzeW5jIGZ1bmN0aW9uIEEoZSx0LG4se2VuZDpyfSl7bGV0IG8sYT1udWxsO2NvbnN0IHM9ZT0+e2lmKGUmJihvPWUpLGEpe2NvbnN0IGU9YTthPW51bGwsZSgpfX0sYz0oKT0+bmV3IGkoKChlLHQpPT57bz90KG8pOmE9KCk9PntvP3Qobyk6ZSgpfX0pKTt0Lm9uKFwiZHJhaW5cIixzKTtjb25zdCB1PWwodCx7cmVhZGFibGU6ITF9LHMpO3RyeXt0LndyaXRhYmxlTmVlZERyYWluJiZhd2FpdCBjKCk7Zm9yIGF3YWl0KGNvbnN0IG4gb2YgZSl0LndyaXRlKG4pfHxhd2FpdCBjKCk7ciYmdC5lbmQoKSxhd2FpdCBjKCksbigpfWNhdGNoKGUpe24obyE9PWU/ZihvLGUpOmUpfWZpbmFsbHl7dSgpLHQub2ZmKFwiZHJhaW5cIixzKX19YXN5bmMgZnVuY3Rpb24gSShlLHQsbix7ZW5kOnJ9KXtMKHQpJiYodD10LndyaXRhYmxlKTtjb25zdCBvPXQuZ2V0V3JpdGVyKCk7dHJ5e2ZvciBhd2FpdChjb25zdCB0IG9mIGUpYXdhaXQgby5yZWFkeSxvLndyaXRlKHQpLmNhdGNoKCgoKT0+e30pKTthd2FpdCBvLnJlYWR5LHImJmF3YWl0IG8uY2xvc2UoKSxuKCl9Y2F0Y2goZSl7dHJ5e2F3YWl0IG8uYWJvcnQoZSksbihlKX1jYXRjaChlKXtuKGUpfX19ZnVuY3Rpb24gVChlLHQsaSl7aWYoMT09PWUubGVuZ3RoJiZvKGVbMF0pJiYoZT1lWzBdKSxlLmxlbmd0aDwyKXRocm93IG5ldyBoKFwic3RyZWFtc1wiKTtjb25zdCBhPW5ldyBNLGw9YS5zaWduYWwscz1udWxsPT1pP3ZvaWQgMDppLnNpZ25hbCxjPVtdO2Z1bmN0aW9uIGYoKXtWKG5ldyBDKX1sZXQgdixnO3kocyxcIm9wdGlvbnMuc2lnbmFsXCIpLG51bGw9PXN8fHMuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsZik7Y29uc3QgbT1bXTtsZXQgUyxrPTA7ZnVuY3Rpb24gVChlKXtWKGUsMD09LS1rKX1mdW5jdGlvbiBWKGUsbil7aWYoIWV8fHYmJlwiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0VcIiE9PXYuY29kZXx8KHY9ZSksdnx8bil7Zm9yKDttLmxlbmd0aDspbS5zaGlmdCgpKHYpO251bGw9PXN8fHMucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsZiksYS5hYm9ydCgpLG4mJih2fHxjLmZvckVhY2goKGU9PmUoKSkpLHIubmV4dFRpY2sodCx2LGcpKX19Zm9yKGxldCBaPTA7WjxlLmxlbmd0aDtaKyspe2NvbnN0ICQ9ZVtaXSxGPVo8ZS5sZW5ndGgtMSxOPVo+MCxVPUZ8fCExIT09KG51bGw9PWk/dm9pZCAwOmkuZW5kKSxXPVo9PT1lLmxlbmd0aC0xO2lmKF8oJCkpe2lmKFUpe2NvbnN0e2Rlc3Ryb3k6RyxjbGVhbnVwOnF9PVIoJCxGLE4pO20ucHVzaChHKSxiKCQpJiZXJiZjLnB1c2gocSl9ZnVuY3Rpb24geihlKXtlJiZcIkFib3J0RXJyb3JcIiE9PWUubmFtZSYmXCJFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRVwiIT09ZS5jb2RlJiZUKGUpfSQub24oXCJlcnJvclwiLHopLGIoJCkmJlcmJmMucHVzaCgoKCk9PnskLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIix6KX0pKX1pZigwPT09WilpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiAkKXtpZihTPSQoe3NpZ25hbDpsfSksIXcoUykpdGhyb3cgbmV3IHAoXCJJdGVyYWJsZSwgQXN5bmNJdGVyYWJsZSBvciBTdHJlYW1cIixcInNvdXJjZVwiLFMpfWVsc2UgUz13KCQpfHx4KCQpfHxMKCQpPyQ6dS5mcm9tKCQpO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgJCl7dmFyIEI7aWYoUz1MKFMpP1AobnVsbD09PShCPVMpfHx2b2lkIDA9PT1CP3ZvaWQgMDpCLnJlYWRhYmxlKTpQKFMpLFM9JChTLHtzaWduYWw6bH0pLEYpe2lmKCF3KFMsITApKXRocm93IG5ldyBwKFwiQXN5bmNJdGVyYWJsZVwiLGB0cmFuc2Zvcm1bJHtaLTF9XWAsUyl9ZWxzZXt2YXIgRDtqfHwoaj1uKDQ2NykpO2NvbnN0IFk9bmV3IGooe29iamVjdE1vZGU6ITB9KSxLPW51bGw9PT0oRD1TKXx8dm9pZCAwPT09RD92b2lkIDA6RC50aGVuO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIEspaysrLEsuY2FsbChTLChlPT57Zz1lLG51bGwhPWUmJlkud3JpdGUoZSksVSYmWS5lbmQoKSxyLm5leHRUaWNrKFQpfSksKGU9PntZLmRlc3Ryb3koZSksci5uZXh0VGljayhULGUpfSkpO2Vsc2UgaWYodyhTLCEwKSlrKyssQShTLFksVCx7ZW5kOlV9KTtlbHNle2lmKCFFKFMpJiYhTChTKSl0aHJvdyBuZXcgcChcIkFzeW5jSXRlcmFibGUgb3IgUHJvbWlzZVwiLFwiZGVzdGluYXRpb25cIixTKTt7Y29uc3QgUT1TLnJlYWRhYmxlfHxTO2srKyxBKFEsWSxULHtlbmQ6VX0pfX1TPVk7Y29uc3R7ZGVzdHJveTpYLGNsZWFudXA6Sn09UihTLCExLCEwKTttLnB1c2goWCksVyYmYy5wdXNoKEopfX1lbHNlIGlmKF8oJCkpe2lmKHgoUykpe2srPTI7Y29uc3QgZWU9SChTLCQsVCx7ZW5kOlV9KTtiKCQpJiZXJiZjLnB1c2goZWUpfWVsc2UgaWYoTChTKXx8RShTKSl7Y29uc3QgdGU9Uy5yZWFkYWJsZXx8UztrKyssQSh0ZSwkLFQse2VuZDpVfSl9ZWxzZXtpZighdyhTKSl0aHJvdyBuZXcgZChcInZhbFwiLFtcIlJlYWRhYmxlXCIsXCJJdGVyYWJsZVwiLFwiQXN5bmNJdGVyYWJsZVwiLFwiUmVhZGFibGVTdHJlYW1cIixcIlRyYW5zZm9ybVN0cmVhbVwiXSxTKTtrKyssQShTLCQsVCx7ZW5kOlV9KX1TPSR9ZWxzZSBpZihPKCQpKXtpZih4KFMpKWsrKyxJKFAoUyksJCxULHtlbmQ6VX0pO2Vsc2UgaWYoRShTKXx8dyhTKSlrKyssSShTLCQsVCx7ZW5kOlV9KTtlbHNle2lmKCFMKFMpKXRocm93IG5ldyBkKFwidmFsXCIsW1wiUmVhZGFibGVcIixcIkl0ZXJhYmxlXCIsXCJBc3luY0l0ZXJhYmxlXCIsXCJSZWFkYWJsZVN0cmVhbVwiLFwiVHJhbnNmb3JtU3RyZWFtXCJdLFMpO2srKyxJKFMucmVhZGFibGUsJCxULHtlbmQ6VX0pfVM9JH1lbHNlIFM9dS5mcm9tKCQpfXJldHVybihudWxsIT1sJiZsLmFib3J0ZWR8fG51bGwhPXMmJnMuYWJvcnRlZCkmJnIubmV4dFRpY2soZiksU31mdW5jdGlvbiBIKGUsdCxuLHtlbmQ6b30pe2xldCBpPSExO2lmKHQub24oXCJjbG9zZVwiLCgoKT0+e2l8fG4obmV3IGcpfSkpLGUucGlwZSh0LHtlbmQ6ITF9KSxvKXtmdW5jdGlvbiBhKCl7aT0hMCx0LmVuZCgpfVMoZSk/ci5uZXh0VGljayhhKTplLm9uY2UoXCJlbmRcIixhKX1lbHNlIG4oKTtyZXR1cm4gbChlLHtyZWFkYWJsZTohMCx3cml0YWJsZTohMX0sKHQ9Pntjb25zdCByPWUuX3JlYWRhYmxlU3RhdGU7dCYmXCJFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRVwiPT09dC5jb2RlJiZyJiZyLmVuZGVkJiYhci5lcnJvcmVkJiYhci5lcnJvckVtaXR0ZWQ/ZS5vbmNlKFwiZW5kXCIsbikub25jZShcImVycm9yXCIsbik6bih0KX0pKSxsKHQse3JlYWRhYmxlOiExLHdyaXRhYmxlOiEwfSxuKX1lLmV4cG9ydHM9e3BpcGVsaW5lSW1wbDpULHBpcGVsaW5lOmZ1bmN0aW9uKC4uLmUpe3JldHVybiBUKGUscyhmdW5jdGlvbihlKXtyZXR1cm4gbShlW2UubGVuZ3RoLTFdLFwic3RyZWFtc1tzdHJlYW0ubGVuZ3RoIC0gMV1cIiksZS5wb3AoKX0oZSkpKX19fSw4NTg6KGUsdCxuKT0+e2NvbnN0IHI9big1MzMpLHtBcnJheVByb3RvdHlwZUluZGV4T2Y6byxOdW1iZXJJc0ludGVnZXI6aSxOdW1iZXJJc05hTjphLE51bWJlclBhcnNlSW50OmwsT2JqZWN0RGVmaW5lUHJvcGVydGllczpzLE9iamVjdEtleXM6YyxPYmplY3RTZXRQcm90b3R5cGVPZjp1LFByb21pc2U6ZixTYWZlU2V0OmQsU3ltYm9sQXN5bmNJdGVyYXRvcjpwLFN5bWJvbDpofT1uKDE5MSk7ZS5leHBvcnRzPUQsRC5SZWFkYWJsZVN0YXRlPUI7Y29uc3R7RXZlbnRFbWl0dGVyOnZ9PW4oNDY1KSx7U3RyZWFtOmcscHJlcGVuZExpc3RlbmVyOkN9PW4oMjAwKSx7QnVmZmVyOm19PW4oNDg1KSx7YWRkQWJvcnRTaWduYWw6eX09bigzNzQpLHc9big4Nik7bGV0IGI9big3NzUpLmRlYnVnbG9nKFwic3RyZWFtXCIsKGU9PntiPWV9KSk7Y29uc3QgeD1uKDYxNiksXz1uKDIzMCkse2dldEhpZ2hXYXRlck1hcms6TCxnZXREZWZhdWx0SGlnaFdhdGVyTWFyazpPfT1uKDQ5OCkse2FnZ3JlZ2F0ZVR3b0Vycm9yczpFLGNvZGVzOntFUlJfSU5WQUxJRF9BUkdfVFlQRTpTLEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEOk0sRVJSX09VVF9PRl9SQU5HRTpqLEVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0Y6ayxFUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UOlJ9fT1uKDE0MSkse3ZhbGlkYXRlT2JqZWN0OlB9PW4oOTA0KSxBPWgoXCJrUGF1c2VkXCIpLHtTdHJpbmdEZWNvZGVyOkl9PW4oNDY0KSxUPW4oOTEzKTt1KEQucHJvdG90eXBlLGcucHJvdG90eXBlKSx1KEQsZyk7Y29uc3QgSD0oKT0+e30se2Vycm9yT3JEZXN0cm95OlZ9PV87ZnVuY3Rpb24gQihlLHQscil7XCJib29sZWFuXCIhPXR5cGVvZiByJiYocj10IGluc3RhbmNlb2YgbigxODIpKSx0aGlzLm9iamVjdE1vZGU9ISghZXx8IWUub2JqZWN0TW9kZSksciYmKHRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVjdE1vZGV8fCEoIWV8fCFlLnJlYWRhYmxlT2JqZWN0TW9kZSkpLHRoaXMuaGlnaFdhdGVyTWFyaz1lP0wodGhpcyxlLFwicmVhZGFibGVIaWdoV2F0ZXJNYXJrXCIscik6TyghMSksdGhpcy5idWZmZXI9bmV3IHgsdGhpcy5sZW5ndGg9MCx0aGlzLnBpcGVzPVtdLHRoaXMuZmxvd2luZz1udWxsLHRoaXMuZW5kZWQ9ITEsdGhpcy5lbmRFbWl0dGVkPSExLHRoaXMucmVhZGluZz0hMSx0aGlzLmNvbnN0cnVjdGVkPSEwLHRoaXMuc3luYz0hMCx0aGlzLm5lZWRSZWFkYWJsZT0hMSx0aGlzLmVtaXR0ZWRSZWFkYWJsZT0hMSx0aGlzLnJlYWRhYmxlTGlzdGVuaW5nPSExLHRoaXMucmVzdW1lU2NoZWR1bGVkPSExLHRoaXNbQV09bnVsbCx0aGlzLmVycm9yRW1pdHRlZD0hMSx0aGlzLmVtaXRDbG9zZT0hZXx8ITEhPT1lLmVtaXRDbG9zZSx0aGlzLmF1dG9EZXN0cm95PSFlfHwhMSE9PWUuYXV0b0Rlc3Ryb3ksdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5lcnJvcmVkPW51bGwsdGhpcy5jbG9zZWQ9ITEsdGhpcy5jbG9zZUVtaXR0ZWQ9ITEsdGhpcy5kZWZhdWx0RW5jb2Rpbmc9ZSYmZS5kZWZhdWx0RW5jb2Rpbmd8fFwidXRmOFwiLHRoaXMuYXdhaXREcmFpbldyaXRlcnM9bnVsbCx0aGlzLm11bHRpQXdhaXREcmFpbj0hMSx0aGlzLnJlYWRpbmdNb3JlPSExLHRoaXMuZGF0YUVtaXR0ZWQ9ITEsdGhpcy5kZWNvZGVyPW51bGwsdGhpcy5lbmNvZGluZz1udWxsLGUmJmUuZW5jb2RpbmcmJih0aGlzLmRlY29kZXI9bmV3IEkoZS5lbmNvZGluZyksdGhpcy5lbmNvZGluZz1lLmVuY29kaW5nKX1mdW5jdGlvbiBEKGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEQpKXJldHVybiBuZXcgRChlKTtjb25zdCB0PXRoaXMgaW5zdGFuY2VvZiBuKDE4Mik7dGhpcy5fcmVhZGFibGVTdGF0ZT1uZXcgQihlLHRoaXMsdCksZSYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUucmVhZCYmKHRoaXMuX3JlYWQ9ZS5yZWFkKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PWUuZGVzdHJveSksXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25zdHJ1Y3QmJih0aGlzLl9jb25zdHJ1Y3Q9ZS5jb25zdHJ1Y3QpLGUuc2lnbmFsJiYhdCYmeShlLnNpZ25hbCx0aGlzKSksZy5jYWxsKHRoaXMsZSksXy5jb25zdHJ1Y3QodGhpcywoKCk9Pnt0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZSYmVyh0aGlzLHRoaXMuX3JlYWRhYmxlU3RhdGUpfSkpfWZ1bmN0aW9uIFooZSx0LG4scil7YihcInJlYWRhYmxlQWRkQ2h1bmtcIix0KTtjb25zdCBvPWUuX3JlYWRhYmxlU3RhdGU7bGV0IGk7aWYoby5vYmplY3RNb2RlfHwoXCJzdHJpbmdcIj09dHlwZW9mIHQ/KG49bnx8by5kZWZhdWx0RW5jb2Rpbmcsby5lbmNvZGluZyE9PW4mJihyJiZvLmVuY29kaW5nP3Q9bS5mcm9tKHQsbikudG9TdHJpbmcoby5lbmNvZGluZyk6KHQ9bS5mcm9tKHQsbiksbj1cIlwiKSkpOnQgaW5zdGFuY2VvZiBtP249XCJcIjpnLl9pc1VpbnQ4QXJyYXkodCk/KHQ9Zy5fdWludDhBcnJheVRvQnVmZmVyKHQpLG49XCJcIik6bnVsbCE9dCYmKGk9bmV3IFMoXCJjaHVua1wiLFtcInN0cmluZ1wiLFwiQnVmZmVyXCIsXCJVaW50OEFycmF5XCJdLHQpKSksaSlWKGUsaSk7ZWxzZSBpZihudWxsPT09dClvLnJlYWRpbmc9ITEsZnVuY3Rpb24oZSx0KXtpZihiKFwib25Fb2ZDaHVua1wiKSwhdC5lbmRlZCl7aWYodC5kZWNvZGVyKXtjb25zdCBlPXQuZGVjb2Rlci5lbmQoKTtlJiZlLmxlbmd0aCYmKHQuYnVmZmVyLnB1c2goZSksdC5sZW5ndGgrPXQub2JqZWN0TW9kZT8xOmUubGVuZ3RoKX10LmVuZGVkPSEwLHQuc3luYz9OKGUpOih0Lm5lZWRSZWFkYWJsZT0hMSx0LmVtaXR0ZWRSZWFkYWJsZT0hMCxVKGUpKX19KGUsbyk7ZWxzZSBpZihvLm9iamVjdE1vZGV8fHQmJnQubGVuZ3RoPjApaWYocilpZihvLmVuZEVtaXR0ZWQpVihlLG5ldyBSKTtlbHNle2lmKG8uZGVzdHJveWVkfHxvLmVycm9yZWQpcmV0dXJuITE7JChlLG8sdCwhMCl9ZWxzZSBpZihvLmVuZGVkKVYoZSxuZXcgayk7ZWxzZXtpZihvLmRlc3Ryb3llZHx8by5lcnJvcmVkKXJldHVybiExO28ucmVhZGluZz0hMSxvLmRlY29kZXImJiFuPyh0PW8uZGVjb2Rlci53cml0ZSh0KSxvLm9iamVjdE1vZGV8fDAhPT10Lmxlbmd0aD8kKGUsbyx0LCExKTpXKGUsbykpOiQoZSxvLHQsITEpfWVsc2Ugcnx8KG8ucmVhZGluZz0hMSxXKGUsbykpO3JldHVybiFvLmVuZGVkJiYoby5sZW5ndGg8by5oaWdoV2F0ZXJNYXJrfHwwPT09by5sZW5ndGgpfWZ1bmN0aW9uICQoZSx0LG4scil7dC5mbG93aW5nJiYwPT09dC5sZW5ndGgmJiF0LnN5bmMmJmUubGlzdGVuZXJDb3VudChcImRhdGFcIik+MD8odC5tdWx0aUF3YWl0RHJhaW4/dC5hd2FpdERyYWluV3JpdGVycy5jbGVhcigpOnQuYXdhaXREcmFpbldyaXRlcnM9bnVsbCx0LmRhdGFFbWl0dGVkPSEwLGUuZW1pdChcImRhdGFcIixuKSk6KHQubGVuZ3RoKz10Lm9iamVjdE1vZGU/MTpuLmxlbmd0aCxyP3QuYnVmZmVyLnVuc2hpZnQobik6dC5idWZmZXIucHVzaChuKSx0Lm5lZWRSZWFkYWJsZSYmTihlKSksVyhlLHQpfWZ1bmN0aW9uIEYoZSx0KXtyZXR1cm4gZTw9MHx8MD09PXQubGVuZ3RoJiZ0LmVuZGVkPzA6dC5vYmplY3RNb2RlPzE6YShlKT90LmZsb3dpbmcmJnQubGVuZ3RoP3QuYnVmZmVyLmZpcnN0KCkubGVuZ3RoOnQubGVuZ3RoOmU8PXQubGVuZ3RoP2U6dC5lbmRlZD90Lmxlbmd0aDowfWZ1bmN0aW9uIE4oZSl7Y29uc3QgdD1lLl9yZWFkYWJsZVN0YXRlO2IoXCJlbWl0UmVhZGFibGVcIix0Lm5lZWRSZWFkYWJsZSx0LmVtaXR0ZWRSZWFkYWJsZSksdC5uZWVkUmVhZGFibGU9ITEsdC5lbWl0dGVkUmVhZGFibGV8fChiKFwiZW1pdFJlYWRhYmxlXCIsdC5mbG93aW5nKSx0LmVtaXR0ZWRSZWFkYWJsZT0hMCxyLm5leHRUaWNrKFUsZSkpfWZ1bmN0aW9uIFUoZSl7Y29uc3QgdD1lLl9yZWFkYWJsZVN0YXRlO2IoXCJlbWl0UmVhZGFibGVfXCIsdC5kZXN0cm95ZWQsdC5sZW5ndGgsdC5lbmRlZCksdC5kZXN0cm95ZWR8fHQuZXJyb3JlZHx8IXQubGVuZ3RoJiYhdC5lbmRlZHx8KGUuZW1pdChcInJlYWRhYmxlXCIpLHQuZW1pdHRlZFJlYWRhYmxlPSExKSx0Lm5lZWRSZWFkYWJsZT0hdC5mbG93aW5nJiYhdC5lbmRlZCYmdC5sZW5ndGg8PXQuaGlnaFdhdGVyTWFyayxLKGUpfWZ1bmN0aW9uIFcoZSx0KXshdC5yZWFkaW5nTW9yZSYmdC5jb25zdHJ1Y3RlZCYmKHQucmVhZGluZ01vcmU9ITAsci5uZXh0VGljayh6LGUsdCkpfWZ1bmN0aW9uIHooZSx0KXtmb3IoOyF0LnJlYWRpbmcmJiF0LmVuZGVkJiYodC5sZW5ndGg8dC5oaWdoV2F0ZXJNYXJrfHx0LmZsb3dpbmcmJjA9PT10Lmxlbmd0aCk7KXtjb25zdCBuPXQubGVuZ3RoO2lmKGIoXCJtYXliZVJlYWRNb3JlIHJlYWQgMFwiKSxlLnJlYWQoMCksbj09PXQubGVuZ3RoKWJyZWFrfXQucmVhZGluZ01vcmU9ITF9ZnVuY3Rpb24gRyhlKXtjb25zdCB0PWUuX3JlYWRhYmxlU3RhdGU7dC5yZWFkYWJsZUxpc3RlbmluZz1lLmxpc3RlbmVyQ291bnQoXCJyZWFkYWJsZVwiKT4wLHQucmVzdW1lU2NoZWR1bGVkJiYhMT09PXRbQV0/dC5mbG93aW5nPSEwOmUubGlzdGVuZXJDb3VudChcImRhdGFcIik+MD9lLnJlc3VtZSgpOnQucmVhZGFibGVMaXN0ZW5pbmd8fCh0LmZsb3dpbmc9bnVsbCl9ZnVuY3Rpb24gcShlKXtiKFwicmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwXCIpLGUucmVhZCgwKX1mdW5jdGlvbiBZKGUsdCl7YihcInJlc3VtZVwiLHQucmVhZGluZyksdC5yZWFkaW5nfHxlLnJlYWQoMCksdC5yZXN1bWVTY2hlZHVsZWQ9ITEsZS5lbWl0KFwicmVzdW1lXCIpLEsoZSksdC5mbG93aW5nJiYhdC5yZWFkaW5nJiZlLnJlYWQoMCl9ZnVuY3Rpb24gSyhlKXtjb25zdCB0PWUuX3JlYWRhYmxlU3RhdGU7Zm9yKGIoXCJmbG93XCIsdC5mbG93aW5nKTt0LmZsb3dpbmcmJm51bGwhPT1lLnJlYWQoKTspO31mdW5jdGlvbiBYKGUsdCl7XCJmdW5jdGlvblwiIT10eXBlb2YgZS5yZWFkJiYoZT1ELndyYXAoZSx7b2JqZWN0TW9kZTohMH0pKTtjb25zdCBuPWFzeW5jIGZ1bmN0aW9uKihlLHQpe2xldCBuLHI9SDtmdW5jdGlvbiBvKHQpe3RoaXM9PT1lPyhyKCkscj1IKTpyPXR9ZS5vbihcInJlYWRhYmxlXCIsbyk7Y29uc3QgaT13KGUse3dyaXRhYmxlOiExfSwoZT0+e249ZT9FKG4sZSk6bnVsbCxyKCkscj1IfSkpO3RyeXtmb3IoOzspe2NvbnN0IHQ9ZS5kZXN0cm95ZWQ/bnVsbDplLnJlYWQoKTtpZihudWxsIT09dCl5aWVsZCB0O2Vsc2V7aWYobil0aHJvdyBuO2lmKG51bGw9PT1uKXJldHVybjthd2FpdCBuZXcgZihvKX19fWNhdGNoKGUpe3Rocm93IG49RShuLGUpLG59ZmluYWxseXshbiYmITE9PT0obnVsbD09dD92b2lkIDA6dC5kZXN0cm95T25SZXR1cm4pfHx2b2lkIDAhPT1uJiYhZS5fcmVhZGFibGVTdGF0ZS5hdXRvRGVzdHJveT8oZS5vZmYoXCJyZWFkYWJsZVwiLG8pLGkoKSk6Xy5kZXN0cm95ZXIoZSxudWxsKX19KGUsdCk7cmV0dXJuIG4uc3RyZWFtPWUsbn1mdW5jdGlvbiBKKGUsdCl7aWYoMD09PXQubGVuZ3RoKXJldHVybiBudWxsO2xldCBuO3JldHVybiB0Lm9iamVjdE1vZGU/bj10LmJ1ZmZlci5zaGlmdCgpOiFlfHxlPj10Lmxlbmd0aD8obj10LmRlY29kZXI/dC5idWZmZXIuam9pbihcIlwiKToxPT09dC5idWZmZXIubGVuZ3RoP3QuYnVmZmVyLmZpcnN0KCk6dC5idWZmZXIuY29uY2F0KHQubGVuZ3RoKSx0LmJ1ZmZlci5jbGVhcigpKTpuPXQuYnVmZmVyLmNvbnN1bWUoZSx0LmRlY29kZXIpLG59ZnVuY3Rpb24gUShlKXtjb25zdCB0PWUuX3JlYWRhYmxlU3RhdGU7YihcImVuZFJlYWRhYmxlXCIsdC5lbmRFbWl0dGVkKSx0LmVuZEVtaXR0ZWR8fCh0LmVuZGVkPSEwLHIubmV4dFRpY2soZWUsdCxlKSl9ZnVuY3Rpb24gZWUoZSx0KXtpZihiKFwiZW5kUmVhZGFibGVOVFwiLGUuZW5kRW1pdHRlZCxlLmxlbmd0aCksIWUuZXJyb3JlZCYmIWUuY2xvc2VFbWl0dGVkJiYhZS5lbmRFbWl0dGVkJiYwPT09ZS5sZW5ndGgpaWYoZS5lbmRFbWl0dGVkPSEwLHQuZW1pdChcImVuZFwiKSx0LndyaXRhYmxlJiYhMT09PXQuYWxsb3dIYWxmT3BlbilyLm5leHRUaWNrKHRlLHQpO2Vsc2UgaWYoZS5hdXRvRGVzdHJveSl7Y29uc3QgZT10Ll93cml0YWJsZVN0YXRlOyghZXx8ZS5hdXRvRGVzdHJveSYmKGUuZmluaXNoZWR8fCExPT09ZS53cml0YWJsZSkpJiZ0LmRlc3Ryb3koKX19ZnVuY3Rpb24gdGUoZSl7ZS53cml0YWJsZSYmIWUud3JpdGFibGVFbmRlZCYmIWUuZGVzdHJveWVkJiZlLmVuZCgpfWxldCBuZTtmdW5jdGlvbiByZSgpe3JldHVybiB2b2lkIDA9PT1uZSYmKG5lPXt9KSxuZX1ELnByb3RvdHlwZS5kZXN0cm95PV8uZGVzdHJveSxELnByb3RvdHlwZS5fdW5kZXN0cm95PV8udW5kZXN0cm95LEQucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKGUsdCl7dChlKX0sRC5wcm90b3R5cGVbdi5jYXB0dXJlUmVqZWN0aW9uU3ltYm9sXT1mdW5jdGlvbihlKXt0aGlzLmRlc3Ryb3koZSl9LEQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gWih0aGlzLGUsdCwhMSl9LEQucHJvdG90eXBlLnVuc2hpZnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gWih0aGlzLGUsdCwhMCl9LEQucHJvdG90eXBlLmlzUGF1c2VkPWZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiEwPT09ZVtBXXx8ITE9PT1lLmZsb3dpbmd9LEQucHJvdG90eXBlLnNldEVuY29kaW5nPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IEkoZSk7dGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyPXQsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZz10aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIuZW5jb2Rpbmc7Y29uc3Qgbj10aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlcjtsZXQgcj1cIlwiO2Zvcihjb25zdCBlIG9mIG4pcis9dC53cml0ZShlKTtyZXR1cm4gbi5jbGVhcigpLFwiXCIhPT1yJiZuLnB1c2gociksdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGg9ci5sZW5ndGgsdGhpc30sRC5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihlKXtiKFwicmVhZFwiLGUpLHZvaWQgMD09PWU/ZT1OYU46aShlKXx8KGU9bChlLDEwKSk7Y29uc3QgdD10aGlzLl9yZWFkYWJsZVN0YXRlLG49ZTtpZihlPnQuaGlnaFdhdGVyTWFyayYmKHQuaGlnaFdhdGVyTWFyaz1mdW5jdGlvbihlKXtpZihlPjEwNzM3NDE4MjQpdGhyb3cgbmV3IGooXCJzaXplXCIsXCI8PSAxR2lCXCIsZSk7cmV0dXJuIGUtLSxlfD1lPj4+MSxlfD1lPj4+MixlfD1lPj4+NCxlfD1lPj4+OCxlfD1lPj4+MTYsKytlfShlKSksMCE9PWUmJih0LmVtaXR0ZWRSZWFkYWJsZT0hMSksMD09PWUmJnQubmVlZFJlYWRhYmxlJiYoKDAhPT10LmhpZ2hXYXRlck1hcms/dC5sZW5ndGg+PXQuaGlnaFdhdGVyTWFyazp0Lmxlbmd0aD4wKXx8dC5lbmRlZCkpcmV0dXJuIGIoXCJyZWFkOiBlbWl0UmVhZGFibGVcIix0Lmxlbmd0aCx0LmVuZGVkKSwwPT09dC5sZW5ndGgmJnQuZW5kZWQ/USh0aGlzKTpOKHRoaXMpLG51bGw7aWYoMD09PShlPUYoZSx0KSkmJnQuZW5kZWQpcmV0dXJuIDA9PT10Lmxlbmd0aCYmUSh0aGlzKSxudWxsO2xldCByLG89dC5uZWVkUmVhZGFibGU7aWYoYihcIm5lZWQgcmVhZGFibGVcIixvKSwoMD09PXQubGVuZ3RofHx0Lmxlbmd0aC1lPHQuaGlnaFdhdGVyTWFyaykmJihvPSEwLGIoXCJsZW5ndGggbGVzcyB0aGFuIHdhdGVybWFya1wiLG8pKSx0LmVuZGVkfHx0LnJlYWRpbmd8fHQuZGVzdHJveWVkfHx0LmVycm9yZWR8fCF0LmNvbnN0cnVjdGVkKW89ITEsYihcInJlYWRpbmcsIGVuZGVkIG9yIGNvbnN0cnVjdGluZ1wiLG8pO2Vsc2UgaWYobyl7YihcImRvIHJlYWRcIiksdC5yZWFkaW5nPSEwLHQuc3luYz0hMCwwPT09dC5sZW5ndGgmJih0Lm5lZWRSZWFkYWJsZT0hMCk7dHJ5e3RoaXMuX3JlYWQodC5oaWdoV2F0ZXJNYXJrKX1jYXRjaChlKXtWKHRoaXMsZSl9dC5zeW5jPSExLHQucmVhZGluZ3x8KGU9RihuLHQpKX1yZXR1cm4gcj1lPjA/SihlLHQpOm51bGwsbnVsbD09PXI/KHQubmVlZFJlYWRhYmxlPXQubGVuZ3RoPD10LmhpZ2hXYXRlck1hcmssZT0wKToodC5sZW5ndGgtPWUsdC5tdWx0aUF3YWl0RHJhaW4/dC5hd2FpdERyYWluV3JpdGVycy5jbGVhcigpOnQuYXdhaXREcmFpbldyaXRlcnM9bnVsbCksMD09PXQubGVuZ3RoJiYodC5lbmRlZHx8KHQubmVlZFJlYWRhYmxlPSEwKSxuIT09ZSYmdC5lbmRlZCYmUSh0aGlzKSksbnVsbD09PXJ8fHQuZXJyb3JFbWl0dGVkfHx0LmNsb3NlRW1pdHRlZHx8KHQuZGF0YUVtaXR0ZWQ9ITAsdGhpcy5lbWl0KFwiZGF0YVwiLHIpKSxyfSxELnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbihlKXt0aHJvdyBuZXcgTShcIl9yZWFkKClcIil9LEQucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oZSx0KXtjb25zdCBuPXRoaXMsbz10aGlzLl9yZWFkYWJsZVN0YXRlOzE9PT1vLnBpcGVzLmxlbmd0aCYmKG8ubXVsdGlBd2FpdERyYWlufHwoby5tdWx0aUF3YWl0RHJhaW49ITAsby5hd2FpdERyYWluV3JpdGVycz1uZXcgZChvLmF3YWl0RHJhaW5Xcml0ZXJzP1tvLmF3YWl0RHJhaW5Xcml0ZXJzXTpbXSkpKSxvLnBpcGVzLnB1c2goZSksYihcInBpcGUgY291bnQ9JWQgb3B0cz0lalwiLG8ucGlwZXMubGVuZ3RoLHQpO2NvbnN0IGk9dCYmITE9PT10LmVuZHx8ZT09PXIuc3Rkb3V0fHxlPT09ci5zdGRlcnI/djphO2Z1bmN0aW9uIGEoKXtiKFwib25lbmRcIiksZS5lbmQoKX1sZXQgbDtvLmVuZEVtaXR0ZWQ/ci5uZXh0VGljayhpKTpuLm9uY2UoXCJlbmRcIixpKSxlLm9uKFwidW5waXBlXCIsKGZ1bmN0aW9uIHQocixpKXtiKFwib251bnBpcGVcIikscj09PW4mJmkmJiExPT09aS5oYXNVbnBpcGVkJiYoaS5oYXNVbnBpcGVkPSEwLGIoXCJjbGVhbnVwXCIpLGUucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLHApLGUucmVtb3ZlTGlzdGVuZXIoXCJmaW5pc2hcIixoKSxsJiZlLnJlbW92ZUxpc3RlbmVyKFwiZHJhaW5cIixsKSxlLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixmKSxlLnJlbW92ZUxpc3RlbmVyKFwidW5waXBlXCIsdCksbi5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLGEpLG4ucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIix2KSxuLnJlbW92ZUxpc3RlbmVyKFwiZGF0YVwiLHUpLHM9ITAsbCYmby5hd2FpdERyYWluV3JpdGVycyYmKCFlLl93cml0YWJsZVN0YXRlfHxlLl93cml0YWJsZVN0YXRlLm5lZWREcmFpbikmJmwoKSl9KSk7bGV0IHM9ITE7ZnVuY3Rpb24gYygpe3N8fCgxPT09by5waXBlcy5sZW5ndGgmJm8ucGlwZXNbMF09PT1lPyhiKFwiZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlXCIsMCksby5hd2FpdERyYWluV3JpdGVycz1lLG8ubXVsdGlBd2FpdERyYWluPSExKTpvLnBpcGVzLmxlbmd0aD4xJiZvLnBpcGVzLmluY2x1ZGVzKGUpJiYoYihcImZhbHNlIHdyaXRlIHJlc3BvbnNlLCBwYXVzZVwiLG8uYXdhaXREcmFpbldyaXRlcnMuc2l6ZSksby5hd2FpdERyYWluV3JpdGVycy5hZGQoZSkpLG4ucGF1c2UoKSksbHx8KGw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtjb25zdCBuPWUuX3JlYWRhYmxlU3RhdGU7bi5hd2FpdERyYWluV3JpdGVycz09PXQ/KGIoXCJwaXBlT25EcmFpblwiLDEpLG4uYXdhaXREcmFpbldyaXRlcnM9bnVsbCk6bi5tdWx0aUF3YWl0RHJhaW4mJihiKFwicGlwZU9uRHJhaW5cIixuLmF3YWl0RHJhaW5Xcml0ZXJzLnNpemUpLG4uYXdhaXREcmFpbldyaXRlcnMuZGVsZXRlKHQpKSxuLmF3YWl0RHJhaW5Xcml0ZXJzJiYwIT09bi5hd2FpdERyYWluV3JpdGVycy5zaXplfHwhZS5saXN0ZW5lckNvdW50KFwiZGF0YVwiKXx8ZS5yZXN1bWUoKX19KG4sZSksZS5vbihcImRyYWluXCIsbCkpfWZ1bmN0aW9uIHUodCl7YihcIm9uZGF0YVwiKTtjb25zdCBuPWUud3JpdGUodCk7YihcImRlc3Qud3JpdGVcIixuKSwhMT09PW4mJmMoKX1mdW5jdGlvbiBmKHQpe2lmKGIoXCJvbmVycm9yXCIsdCksdigpLGUucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLGYpLDA9PT1lLmxpc3RlbmVyQ291bnQoXCJlcnJvclwiKSl7Y29uc3Qgbj1lLl93cml0YWJsZVN0YXRlfHxlLl9yZWFkYWJsZVN0YXRlO24mJiFuLmVycm9yRW1pdHRlZD9WKGUsdCk6ZS5lbWl0KFwiZXJyb3JcIix0KX19ZnVuY3Rpb24gcCgpe2UucmVtb3ZlTGlzdGVuZXIoXCJmaW5pc2hcIixoKSx2KCl9ZnVuY3Rpb24gaCgpe2IoXCJvbmZpbmlzaFwiKSxlLnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIixwKSx2KCl9ZnVuY3Rpb24gdigpe2IoXCJ1bnBpcGVcIiksbi51bnBpcGUoZSl9cmV0dXJuIG4ub24oXCJkYXRhXCIsdSksQyhlLFwiZXJyb3JcIixmKSxlLm9uY2UoXCJjbG9zZVwiLHApLGUub25jZShcImZpbmlzaFwiLGgpLGUuZW1pdChcInBpcGVcIixuKSwhMD09PWUud3JpdGFibGVOZWVkRHJhaW4/by5mbG93aW5nJiZjKCk6by5mbG93aW5nfHwoYihcInBpcGUgcmVzdW1lXCIpLG4ucmVzdW1lKCkpLGV9LEQucHJvdG90eXBlLnVucGlwZT1mdW5jdGlvbihlKXtjb25zdCB0PXRoaXMuX3JlYWRhYmxlU3RhdGU7aWYoMD09PXQucGlwZXMubGVuZ3RoKXJldHVybiB0aGlzO2lmKCFlKXtjb25zdCBlPXQucGlwZXM7dC5waXBlcz1bXSx0aGlzLnBhdXNlKCk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XS5lbWl0KFwidW5waXBlXCIsdGhpcyx7aGFzVW5waXBlZDohMX0pO3JldHVybiB0aGlzfWNvbnN0IG49byh0LnBpcGVzLGUpO3JldHVybi0xPT09bnx8KHQucGlwZXMuc3BsaWNlKG4sMSksMD09PXQucGlwZXMubGVuZ3RoJiZ0aGlzLnBhdXNlKCksZS5lbWl0KFwidW5waXBlXCIsdGhpcyx7aGFzVW5waXBlZDohMX0pKSx0aGlzfSxELnByb3RvdHlwZS5vbj1mdW5jdGlvbihlLHQpe2NvbnN0IG49Zy5wcm90b3R5cGUub24uY2FsbCh0aGlzLGUsdCksbz10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVyblwiZGF0YVwiPT09ZT8oby5yZWFkYWJsZUxpc3RlbmluZz10aGlzLmxpc3RlbmVyQ291bnQoXCJyZWFkYWJsZVwiKT4wLCExIT09by5mbG93aW5nJiZ0aGlzLnJlc3VtZSgpKTpcInJlYWRhYmxlXCI9PT1lJiYoby5lbmRFbWl0dGVkfHxvLnJlYWRhYmxlTGlzdGVuaW5nfHwoby5yZWFkYWJsZUxpc3RlbmluZz1vLm5lZWRSZWFkYWJsZT0hMCxvLmZsb3dpbmc9ITEsby5lbWl0dGVkUmVhZGFibGU9ITEsYihcIm9uIHJlYWRhYmxlXCIsby5sZW5ndGgsby5yZWFkaW5nKSxvLmxlbmd0aD9OKHRoaXMpOm8ucmVhZGluZ3x8ci5uZXh0VGljayhxLHRoaXMpKSksbn0sRC5wcm90b3R5cGUuYWRkTGlzdGVuZXI9RC5wcm90b3R5cGUub24sRC5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXtjb25zdCBuPWcucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLmNhbGwodGhpcyxlLHQpO3JldHVyblwicmVhZGFibGVcIj09PWUmJnIubmV4dFRpY2soRyx0aGlzKSxufSxELnByb3RvdHlwZS5vZmY9RC5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIsRC5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9Zy5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm5cInJlYWRhYmxlXCIhPT1lJiZ2b2lkIDAhPT1lfHxyLm5leHRUaWNrKEcsdGhpcyksdH0sRC5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiBlLmZsb3dpbmd8fChiKFwicmVzdW1lXCIpLGUuZmxvd2luZz0hZS5yZWFkYWJsZUxpc3RlbmluZyxmdW5jdGlvbihlLHQpe3QucmVzdW1lU2NoZWR1bGVkfHwodC5yZXN1bWVTY2hlZHVsZWQ9ITAsci5uZXh0VGljayhZLGUsdCkpfSh0aGlzLGUpKSxlW0FdPSExLHRoaXN9LEQucHJvdG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7cmV0dXJuIGIoXCJjYWxsIHBhdXNlIGZsb3dpbmc9JWpcIix0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpLCExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiYoYihcInBhdXNlXCIpLHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz0hMSx0aGlzLmVtaXQoXCJwYXVzZVwiKSksdGhpcy5fcmVhZGFibGVTdGF0ZVtBXT0hMCx0aGlzfSxELnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKGUpe2xldCB0PSExO2Uub24oXCJkYXRhXCIsKG49PnshdGhpcy5wdXNoKG4pJiZlLnBhdXNlJiYodD0hMCxlLnBhdXNlKCkpfSkpLGUub24oXCJlbmRcIiwoKCk9Pnt0aGlzLnB1c2gobnVsbCl9KSksZS5vbihcImVycm9yXCIsKGU9PntWKHRoaXMsZSl9KSksZS5vbihcImNsb3NlXCIsKCgpPT57dGhpcy5kZXN0cm95KCl9KSksZS5vbihcImRlc3Ryb3lcIiwoKCk9Pnt0aGlzLmRlc3Ryb3koKX0pKSx0aGlzLl9yZWFkPSgpPT57dCYmZS5yZXN1bWUmJih0PSExLGUucmVzdW1lKCkpfTtjb25zdCBuPWMoZSk7Zm9yKGxldCB0PTE7dDxuLmxlbmd0aDt0Kyspe2NvbnN0IHI9blt0XTt2b2lkIDA9PT10aGlzW3JdJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlW3JdJiYodGhpc1tyXT1lW3JdLmJpbmQoZSkpfXJldHVybiB0aGlzfSxELnByb3RvdHlwZVtwXT1mdW5jdGlvbigpe3JldHVybiBYKHRoaXMpfSxELnByb3RvdHlwZS5pdGVyYXRvcj1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZSYmUChlLFwib3B0aW9uc1wiKSxYKHRoaXMsZSl9LHMoRC5wcm90b3R5cGUse3JlYWRhYmxlOntfX3Byb3RvX186bnVsbCxnZXQoKXtjb25zdCBlPXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuISghZXx8ITE9PT1lLnJlYWRhYmxlfHxlLmRlc3Ryb3llZHx8ZS5lcnJvckVtaXR0ZWR8fGUuZW5kRW1pdHRlZCl9LHNldChlKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkYWJsZT0hIWUpfX0scmVhZGFibGVEaWRSZWFkOntfX3Byb3RvX186bnVsbCxlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmRhdGFFbWl0dGVkfX0scmVhZGFibGVBYm9ydGVkOntfX3Byb3RvX186bnVsbCxlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiEoITE9PT10aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRhYmxlfHwhdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQmJiF0aGlzLl9yZWFkYWJsZVN0YXRlLmVycm9yZWR8fHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCl9fSxyZWFkYWJsZUhpZ2hXYXRlck1hcms6e19fcHJvdG9fXzpudWxsLGVudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319LHJlYWRhYmxlQnVmZmVyOntfX3Byb3RvX186bnVsbCxlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlcn19LHJlYWRhYmxlRmxvd2luZzp7X19wcm90b19fOm51bGwsZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz1lKX19LHJlYWRhYmxlTGVuZ3RoOntfX3Byb3RvX186bnVsbCxlbnVtZXJhYmxlOiExLGdldCgpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmxlbmd0aH19LHJlYWRhYmxlT2JqZWN0TW9kZTp7X19wcm90b19fOm51bGwsZW51bWVyYWJsZTohMSxnZXQoKXtyZXR1cm4hIXRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUub2JqZWN0TW9kZX19LHJlYWRhYmxlRW5jb2Rpbmc6e19fcHJvdG9fXzpudWxsLGVudW1lcmFibGU6ITEsZ2V0KCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGU/dGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZzpudWxsfX0sZXJyb3JlZDp7X19wcm90b19fOm51bGwsZW51bWVyYWJsZTohMSxnZXQoKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZT90aGlzLl9yZWFkYWJsZVN0YXRlLmVycm9yZWQ6bnVsbH19LGNsb3NlZDp7X19wcm90b19fOm51bGwsZ2V0KCl7cmV0dXJuISF0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmNsb3NlZH19LGRlc3Ryb3llZDp7X19wcm90b19fOm51bGwsZW51bWVyYWJsZTohMSxnZXQoKXtyZXR1cm4hIXRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQoZSl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPWUpfX0scmVhZGFibGVFbmRlZDp7X19wcm90b19fOm51bGwsZW51bWVyYWJsZTohMSxnZXQoKXtyZXR1cm4hIXRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZH19fSkscyhCLnByb3RvdHlwZSx7cGlwZXNDb3VudDp7X19wcm90b19fOm51bGwsZ2V0KCl7cmV0dXJuIHRoaXMucGlwZXMubGVuZ3RofX0scGF1c2VkOntfX3Byb3RvX186bnVsbCxnZXQoKXtyZXR1cm4hMSE9PXRoaXNbQV19LHNldChlKXt0aGlzW0FdPSEhZX19fSksRC5fZnJvbUxpc3Q9SixELmZyb209ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVChELGUsdCl9LEQuZnJvbVdlYj1mdW5jdGlvbihlLHQpe3JldHVybiByZSgpLm5ld1N0cmVhbVJlYWRhYmxlRnJvbVJlYWRhYmxlU3RyZWFtKGUsdCl9LEQudG9XZWI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcmUoKS5uZXdSZWFkYWJsZVN0cmVhbUZyb21TdHJlYW1SZWFkYWJsZShlLHQpfSxELndyYXA9ZnVuY3Rpb24oZSx0KXt2YXIgbixyO3JldHVybiBuZXcgRCh7b2JqZWN0TW9kZTpudWxsPT09KG49bnVsbCE9PShyPWUucmVhZGFibGVPYmplY3RNb2RlKSYmdm9pZCAwIT09cj9yOmUub2JqZWN0TW9kZSl8fHZvaWQgMD09PW58fG4sLi4udCxkZXN0cm95KHQsbil7Xy5kZXN0cm95ZXIoZSx0KSxuKHQpfX0pLndyYXAoZSl9fSw0OTg6KGUsdCxuKT0+e2NvbnN0e01hdGhGbG9vcjpyLE51bWJlcklzSW50ZWdlcjpvfT1uKDE5MSkse0VSUl9JTlZBTElEX0FSR19WQUxVRTppfT1uKDE0MSkuY29kZXM7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZT8xNjoxNjM4NH1lLmV4cG9ydHM9e2dldEhpZ2hXYXRlck1hcms6ZnVuY3Rpb24oZSx0LG4sbCl7Y29uc3Qgcz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGwhPWUuaGlnaFdhdGVyTWFyaz9lLmhpZ2hXYXRlck1hcms6dD9lW25dOm51bGx9KHQsbCxuKTtpZihudWxsIT1zKXtpZighbyhzKXx8czwwKXRocm93IG5ldyBpKGw/YG9wdGlvbnMuJHtufWA6XCJvcHRpb25zLmhpZ2hXYXRlck1hcmtcIixzKTtyZXR1cm4gcihzKX1yZXR1cm4gYShlLm9iamVjdE1vZGUpfSxnZXREZWZhdWx0SGlnaFdhdGVyTWFyazphfX0sMjEwOihlLHQsbik9Pntjb25zdHtPYmplY3RTZXRQcm90b3R5cGVPZjpyLFN5bWJvbDpvfT1uKDE5MSk7ZS5leHBvcnRzPWM7Y29uc3R7RVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQ6aX09bigxNDEpLmNvZGVzLGE9bigxODIpLHtnZXRIaWdoV2F0ZXJNYXJrOmx9PW4oNDk4KTtyKGMucHJvdG90eXBlLGEucHJvdG90eXBlKSxyKGMsYSk7Y29uc3Qgcz1vKFwia0NhbGxiYWNrXCIpO2Z1bmN0aW9uIGMoZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgYykpcmV0dXJuIG5ldyBjKGUpO2NvbnN0IHQ9ZT9sKHRoaXMsZSxcInJlYWRhYmxlSGlnaFdhdGVyTWFya1wiLCEwKTpudWxsOzA9PT10JiYoZT17Li4uZSxoaWdoV2F0ZXJNYXJrOm51bGwscmVhZGFibGVIaWdoV2F0ZXJNYXJrOnQsd3JpdGFibGVIaWdoV2F0ZXJNYXJrOmUud3JpdGFibGVIaWdoV2F0ZXJNYXJrfHwwfSksYS5jYWxsKHRoaXMsZSksdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jPSExLHRoaXNbc109bnVsbCxlJiYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS50cmFuc2Zvcm0mJih0aGlzLl90cmFuc2Zvcm09ZS50cmFuc2Zvcm0pLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuZmx1c2gmJih0aGlzLl9mbHVzaD1lLmZsdXNoKSksdGhpcy5vbihcInByZWZpbmlzaFwiLGYpfWZ1bmN0aW9uIHUoZSl7XCJmdW5jdGlvblwiIT10eXBlb2YgdGhpcy5fZmx1c2h8fHRoaXMuZGVzdHJveWVkPyh0aGlzLnB1c2gobnVsbCksZSYmZSgpKTp0aGlzLl9mbHVzaCgoKHQsbik9Pnt0P2U/ZSh0KTp0aGlzLmRlc3Ryb3kodCk6KG51bGwhPW4mJnRoaXMucHVzaChuKSx0aGlzLnB1c2gobnVsbCksZSYmZSgpKX0pKX1mdW5jdGlvbiBmKCl7dGhpcy5fZmluYWwhPT11JiZ1LmNhbGwodGhpcyl9Yy5wcm90b3R5cGUuX2ZpbmFsPXUsYy5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihlLHQsbil7dGhyb3cgbmV3IGkoXCJfdHJhbnNmb3JtKClcIil9LGMucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihlLHQsbil7Y29uc3Qgcj10aGlzLl9yZWFkYWJsZVN0YXRlLG89dGhpcy5fd3JpdGFibGVTdGF0ZSxpPXIubGVuZ3RoO3RoaXMuX3RyYW5zZm9ybShlLHQsKChlLHQpPT57ZT9uKGUpOihudWxsIT10JiZ0aGlzLnB1c2godCksby5lbmRlZHx8aT09PXIubGVuZ3RofHxyLmxlbmd0aDxyLmhpZ2hXYXRlck1hcms/bigpOnRoaXNbc109bil9KSl9LGMucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKCl7aWYodGhpc1tzXSl7Y29uc3QgZT10aGlzW3NdO3RoaXNbc109bnVsbCxlKCl9fX0sMTMyOihlLHQsbik9Pntjb25zdHtTeW1ib2w6cixTeW1ib2xBc3luY0l0ZXJhdG9yOm8sU3ltYm9sSXRlcmF0b3I6aSxTeW1ib2xGb3I6YX09bigxOTEpLGw9cihcImtEZXN0cm95ZWRcIikscz1yKFwia0lzRXJyb3JlZFwiKSxjPXIoXCJrSXNSZWFkYWJsZVwiKSx1PXIoXCJrSXNEaXN0dXJiZWRcIiksZj1hKFwibm9kZWpzLndlYnN0cmVhbS5pc0Nsb3NlZFByb21pc2VcIiksZD1hKFwibm9kZWpzLndlYnN0cmVhbS5jb250cm9sbGVyRXJyb3JGdW5jdGlvblwiKTtmdW5jdGlvbiBwKGUsdD0hMSl7dmFyIG47cmV0dXJuISghZXx8XCJmdW5jdGlvblwiIT10eXBlb2YgZS5waXBlfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLm9ufHx0JiYoXCJmdW5jdGlvblwiIT10eXBlb2YgZS5wYXVzZXx8XCJmdW5jdGlvblwiIT10eXBlb2YgZS5yZXN1bWUpfHxlLl93cml0YWJsZVN0YXRlJiYhMT09PShudWxsPT09KG49ZS5fcmVhZGFibGVTdGF0ZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4ucmVhZGFibGUpfHxlLl93cml0YWJsZVN0YXRlJiYhZS5fcmVhZGFibGVTdGF0ZSl9ZnVuY3Rpb24gaChlKXt2YXIgdDtyZXR1cm4hKCFlfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLndyaXRlfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLm9ufHxlLl9yZWFkYWJsZVN0YXRlJiYhMT09PShudWxsPT09KHQ9ZS5fd3JpdGFibGVTdGF0ZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQud3JpdGFibGUpKX1mdW5jdGlvbiB2KGUpe3JldHVybiBlJiYoZS5fcmVhZGFibGVTdGF0ZXx8ZS5fd3JpdGFibGVTdGF0ZXx8XCJmdW5jdGlvblwiPT10eXBlb2YgZS53cml0ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5vbnx8XCJmdW5jdGlvblwiPT10eXBlb2YgZS5waXBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLm9uKX1mdW5jdGlvbiBnKGUpe3JldHVybiEoIWV8fHYoZSl8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUucGlwZVRocm91Z2h8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUuZ2V0UmVhZGVyfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLmNhbmNlbCl9ZnVuY3Rpb24gQyhlKXtyZXR1cm4hKCFlfHx2KGUpfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLmdldFdyaXRlcnx8XCJmdW5jdGlvblwiIT10eXBlb2YgZS5hYm9ydCl9ZnVuY3Rpb24gbShlKXtyZXR1cm4hKCFlfHx2KGUpfHxcIm9iamVjdFwiIT10eXBlb2YgZS5yZWFkYWJsZXx8XCJvYmplY3RcIiE9dHlwZW9mIGUud3JpdGFibGUpfWZ1bmN0aW9uIHkoZSl7aWYoIXYoZSkpcmV0dXJuIG51bGw7Y29uc3QgdD1lLl93cml0YWJsZVN0YXRlLG49ZS5fcmVhZGFibGVTdGF0ZSxyPXR8fG47cmV0dXJuISEoZS5kZXN0cm95ZWR8fGVbbF18fG51bGwhPXImJnIuZGVzdHJveWVkKX1mdW5jdGlvbiB3KGUpe2lmKCFoKGUpKXJldHVybiBudWxsO2lmKCEwPT09ZS53cml0YWJsZUVuZGVkKXJldHVybiEwO2NvbnN0IHQ9ZS5fd3JpdGFibGVTdGF0ZTtyZXR1cm4obnVsbD09dHx8IXQuZXJyb3JlZCkmJihcImJvb2xlYW5cIiE9dHlwZW9mKG51bGw9PXQ/dm9pZCAwOnQuZW5kZWQpP251bGw6dC5lbmRlZCl9ZnVuY3Rpb24gYihlLHQpe2lmKCFwKGUpKXJldHVybiBudWxsO2NvbnN0IG49ZS5fcmVhZGFibGVTdGF0ZTtyZXR1cm4obnVsbD09bnx8IW4uZXJyb3JlZCkmJihcImJvb2xlYW5cIiE9dHlwZW9mKG51bGw9PW4/dm9pZCAwOm4uZW5kRW1pdHRlZCk/bnVsbDohIShuLmVuZEVtaXR0ZWR8fCExPT09dCYmITA9PT1uLmVuZGVkJiYwPT09bi5sZW5ndGgpKX1mdW5jdGlvbiB4KGUpe3JldHVybiBlJiZudWxsIT1lW2NdP2VbY106XCJib29sZWFuXCIhPXR5cGVvZihudWxsPT1lP3ZvaWQgMDplLnJlYWRhYmxlKT9udWxsOiF5KGUpJiZwKGUpJiZlLnJlYWRhYmxlJiYhYihlKX1mdW5jdGlvbiBfKGUpe3JldHVyblwiYm9vbGVhblwiIT10eXBlb2YobnVsbD09ZT92b2lkIDA6ZS53cml0YWJsZSk/bnVsbDoheShlKSYmaChlKSYmZS53cml0YWJsZSYmIXcoZSl9ZnVuY3Rpb24gTChlKXtyZXR1cm5cImJvb2xlYW5cIj09dHlwZW9mIGUuX2Nsb3NlZCYmXCJib29sZWFuXCI9PXR5cGVvZiBlLl9kZWZhdWx0S2VlcEFsaXZlJiZcImJvb2xlYW5cIj09dHlwZW9mIGUuX3JlbW92ZWRDb25uZWN0aW9uJiZcImJvb2xlYW5cIj09dHlwZW9mIGUuX3JlbW92ZWRDb250TGVufWZ1bmN0aW9uIE8oZSl7cmV0dXJuXCJib29sZWFuXCI9PXR5cGVvZiBlLl9zZW50MTAwJiZMKGUpfWUuZXhwb3J0cz17a0Rlc3Ryb3llZDpsLGlzRGlzdHVyYmVkOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiEoIWV8fCEobnVsbCE9PSh0PWVbdV0pJiZ2b2lkIDAhPT10P3Q6ZS5yZWFkYWJsZURpZFJlYWR8fGUucmVhZGFibGVBYm9ydGVkKSl9LGtJc0Rpc3R1cmJlZDp1LGlzRXJyb3JlZDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxpLGEsbCxjLHUsZjtyZXR1cm4hKCFlfHwhKG51bGwhPT0odD1udWxsIT09KG49bnVsbCE9PShyPW51bGwhPT0obz1udWxsIT09KGk9bnVsbCE9PShhPWVbc10pJiZ2b2lkIDAhPT1hP2E6ZS5yZWFkYWJsZUVycm9yZWQpJiZ2b2lkIDAhPT1pP2k6ZS53cml0YWJsZUVycm9yZWQpJiZ2b2lkIDAhPT1vP286bnVsbD09PShsPWUuX3JlYWRhYmxlU3RhdGUpfHx2b2lkIDA9PT1sP3ZvaWQgMDpsLmVycm9yRW1pdHRlZCkmJnZvaWQgMCE9PXI/cjpudWxsPT09KGM9ZS5fd3JpdGFibGVTdGF0ZSl8fHZvaWQgMD09PWM/dm9pZCAwOmMuZXJyb3JFbWl0dGVkKSYmdm9pZCAwIT09bj9uOm51bGw9PT0odT1lLl9yZWFkYWJsZVN0YXRlKXx8dm9pZCAwPT09dT92b2lkIDA6dS5lcnJvcmVkKSYmdm9pZCAwIT09dD90Om51bGw9PT0oZj1lLl93cml0YWJsZVN0YXRlKXx8dm9pZCAwPT09Zj92b2lkIDA6Zi5lcnJvcmVkKSl9LGtJc0Vycm9yZWQ6cyxpc1JlYWRhYmxlOngsa0lzUmVhZGFibGU6YyxrSXNDbG9zZWRQcm9taXNlOmYsa0NvbnRyb2xsZXJFcnJvckZ1bmN0aW9uOmQsaXNDbG9zZWQ6ZnVuY3Rpb24oZSl7aWYoIXYoZSkpcmV0dXJuIG51bGw7aWYoXCJib29sZWFuXCI9PXR5cGVvZiBlLmNsb3NlZClyZXR1cm4gZS5jbG9zZWQ7Y29uc3QgdD1lLl93cml0YWJsZVN0YXRlLG49ZS5fcmVhZGFibGVTdGF0ZTtyZXR1cm5cImJvb2xlYW5cIj09dHlwZW9mKG51bGw9PXQ/dm9pZCAwOnQuY2xvc2VkKXx8XCJib29sZWFuXCI9PXR5cGVvZihudWxsPT1uP3ZvaWQgMDpuLmNsb3NlZCk/KG51bGw9PXQ/dm9pZCAwOnQuY2xvc2VkKXx8KG51bGw9PW4/dm9pZCAwOm4uY2xvc2VkKTpcImJvb2xlYW5cIj09dHlwZW9mIGUuX2Nsb3NlZCYmTChlKT9lLl9jbG9zZWQ6bnVsbH0saXNEZXN0cm95ZWQ6eSxpc0R1cGxleE5vZGVTdHJlYW06ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8XCJmdW5jdGlvblwiIT10eXBlb2YgZS5waXBlfHwhZS5fcmVhZGFibGVTdGF0ZXx8XCJmdW5jdGlvblwiIT10eXBlb2YgZS5vbnx8XCJmdW5jdGlvblwiIT10eXBlb2YgZS53cml0ZSl9LGlzRmluaXNoZWQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdihlKT8hKCF5KGUpJiYoITEhPT0obnVsbD09dD92b2lkIDA6dC5yZWFkYWJsZSkmJngoZSl8fCExIT09KG51bGw9PXQ/dm9pZCAwOnQud3JpdGFibGUpJiZfKGUpKSk6bnVsbH0saXNJdGVyYWJsZTpmdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT1lJiYoITA9PT10P1wiZnVuY3Rpb25cIj09dHlwZW9mIGVbb106ITE9PT10P1wiZnVuY3Rpb25cIj09dHlwZW9mIGVbaV06XCJmdW5jdGlvblwiPT10eXBlb2YgZVtvXXx8XCJmdW5jdGlvblwiPT10eXBlb2YgZVtpXSl9LGlzUmVhZGFibGVOb2RlU3RyZWFtOnAsaXNSZWFkYWJsZVN0cmVhbTpnLGlzUmVhZGFibGVFbmRlZDpmdW5jdGlvbihlKXtpZighcChlKSlyZXR1cm4gbnVsbDtpZighMD09PWUucmVhZGFibGVFbmRlZClyZXR1cm4hMDtjb25zdCB0PWUuX3JlYWRhYmxlU3RhdGU7cmV0dXJuISghdHx8dC5lcnJvcmVkKSYmKFwiYm9vbGVhblwiIT10eXBlb2YobnVsbD09dD92b2lkIDA6dC5lbmRlZCk/bnVsbDp0LmVuZGVkKX0saXNSZWFkYWJsZUZpbmlzaGVkOmIsaXNSZWFkYWJsZUVycm9yZWQ6ZnVuY3Rpb24oZSl7dmFyIHQsbjtyZXR1cm4gdihlKT9lLnJlYWRhYmxlRXJyb3JlZD9lLnJlYWRhYmxlRXJyb3JlZDpudWxsIT09KHQ9bnVsbD09PShuPWUuX3JlYWRhYmxlU3RhdGUpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmVycm9yZWQpJiZ2b2lkIDAhPT10P3Q6bnVsbDpudWxsfSxpc05vZGVTdHJlYW06dixpc1dlYlN0cmVhbTpmdW5jdGlvbihlKXtyZXR1cm4gZyhlKXx8QyhlKXx8bShlKX0saXNXcml0YWJsZTpfLGlzV3JpdGFibGVOb2RlU3RyZWFtOmgsaXNXcml0YWJsZVN0cmVhbTpDLGlzV3JpdGFibGVFbmRlZDp3LGlzV3JpdGFibGVGaW5pc2hlZDpmdW5jdGlvbihlLHQpe2lmKCFoKGUpKXJldHVybiBudWxsO2lmKCEwPT09ZS53cml0YWJsZUZpbmlzaGVkKXJldHVybiEwO2NvbnN0IG49ZS5fd3JpdGFibGVTdGF0ZTtyZXR1cm4obnVsbD09bnx8IW4uZXJyb3JlZCkmJihcImJvb2xlYW5cIiE9dHlwZW9mKG51bGw9PW4/dm9pZCAwOm4uZmluaXNoZWQpP251bGw6ISEobi5maW5pc2hlZHx8ITE9PT10JiYhMD09PW4uZW5kZWQmJjA9PT1uLmxlbmd0aCkpfSxpc1dyaXRhYmxlRXJyb3JlZDpmdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiB2KGUpP2Uud3JpdGFibGVFcnJvcmVkP2Uud3JpdGFibGVFcnJvcmVkOm51bGwhPT0odD1udWxsPT09KG49ZS5fd3JpdGFibGVTdGF0ZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZXJyb3JlZCkmJnZvaWQgMCE9PXQ/dDpudWxsOm51bGx9LGlzU2VydmVyUmVxdWVzdDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm5cImJvb2xlYW5cIj09dHlwZW9mIGUuX2NvbnN1bWluZyYmXCJib29sZWFuXCI9PXR5cGVvZiBlLl9kdW1wZWQmJnZvaWQgMD09PShudWxsPT09KHQ9ZS5yZXEpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LnVwZ3JhZGVPckNvbm5lY3QpfSxpc1NlcnZlclJlc3BvbnNlOk8sd2lsbEVtaXRDbG9zZTpmdW5jdGlvbihlKXtpZighdihlKSlyZXR1cm4gbnVsbDtjb25zdCB0PWUuX3dyaXRhYmxlU3RhdGUsbj1lLl9yZWFkYWJsZVN0YXRlLHI9dHx8bjtyZXR1cm4hciYmTyhlKXx8ISEociYmci5hdXRvRGVzdHJveSYmci5lbWl0Q2xvc2UmJiExPT09ci5jbG9zZWQpfSxpc1RyYW5zZm9ybVN0cmVhbTptfX0sMzczOihlLHQsbik9Pntjb25zdCByPW4oNTMzKSx7QXJyYXlQcm90b3R5cGVTbGljZTpvLEVycm9yOmksRnVuY3Rpb25Qcm90b3R5cGVTeW1ib2xIYXNJbnN0YW5jZTphLE9iamVjdERlZmluZVByb3BlcnR5OmwsT2JqZWN0RGVmaW5lUHJvcGVydGllczpzLE9iamVjdFNldFByb3RvdHlwZU9mOmMsU3RyaW5nUHJvdG90eXBlVG9Mb3dlckNhc2U6dSxTeW1ib2w6ZixTeW1ib2xIYXNJbnN0YW5jZTpkfT1uKDE5MSk7ZS5leHBvcnRzPUksSS5Xcml0YWJsZVN0YXRlPVA7Y29uc3R7RXZlbnRFbWl0dGVyOnB9PW4oNDY1KSxoPW4oMjAwKS5TdHJlYW0se0J1ZmZlcjp2fT1uKDQ4NSksZz1uKDIzMCkse2FkZEFib3J0U2lnbmFsOkN9PW4oMzc0KSx7Z2V0SGlnaFdhdGVyTWFyazptLGdldERlZmF1bHRIaWdoV2F0ZXJNYXJrOnl9PW4oNDk4KSx7RVJSX0lOVkFMSURfQVJHX1RZUEU6dyxFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRDpiLEVSUl9NVUxUSVBMRV9DQUxMQkFDSzp4LEVSUl9TVFJFQU1fQ0FOTk9UX1BJUEU6XyxFUlJfU1RSRUFNX0RFU1RST1lFRDpMLEVSUl9TVFJFQU1fQUxSRUFEWV9GSU5JU0hFRDpPLEVSUl9TVFJFQU1fTlVMTF9WQUxVRVM6RSxFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORDpTLEVSUl9VTktOT1dOX0VOQ09ESU5HOk19PW4oMTQxKS5jb2Rlcyx7ZXJyb3JPckRlc3Ryb3k6an09ZztmdW5jdGlvbiBrKCl7fWMoSS5wcm90b3R5cGUsaC5wcm90b3R5cGUpLGMoSSxoKTtjb25zdCBSPWYoXCJrT25GaW5pc2hlZFwiKTtmdW5jdGlvbiBQKGUsdCxyKXtcImJvb2xlYW5cIiE9dHlwZW9mIHImJihyPXQgaW5zdGFuY2VvZiBuKDE4MikpLHRoaXMub2JqZWN0TW9kZT0hKCFlfHwhZS5vYmplY3RNb2RlKSxyJiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISghZXx8IWUud3JpdGFibGVPYmplY3RNb2RlKSksdGhpcy5oaWdoV2F0ZXJNYXJrPWU/bSh0aGlzLGUsXCJ3cml0YWJsZUhpZ2hXYXRlck1hcmtcIixyKTp5KCExKSx0aGlzLmZpbmFsQ2FsbGVkPSExLHRoaXMubmVlZERyYWluPSExLHRoaXMuZW5kaW5nPSExLHRoaXMuZW5kZWQ9ITEsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMTtjb25zdCBvPSEoIWV8fCExIT09ZS5kZWNvZGVTdHJpbmdzKTt0aGlzLmRlY29kZVN0cmluZ3M9IW8sdGhpcy5kZWZhdWx0RW5jb2Rpbmc9ZSYmZS5kZWZhdWx0RW5jb2Rpbmd8fFwidXRmOFwiLHRoaXMubGVuZ3RoPTAsdGhpcy53cml0aW5nPSExLHRoaXMuY29ya2VkPTAsdGhpcy5zeW5jPSEwLHRoaXMuYnVmZmVyUHJvY2Vzc2luZz0hMSx0aGlzLm9ud3JpdGU9Qi5iaW5kKHZvaWQgMCx0KSx0aGlzLndyaXRlY2I9bnVsbCx0aGlzLndyaXRlbGVuPTAsdGhpcy5hZnRlcldyaXRlVGlja0luZm89bnVsbCxBKHRoaXMpLHRoaXMucGVuZGluZ2NiPTAsdGhpcy5jb25zdHJ1Y3RlZD0hMCx0aGlzLnByZWZpbmlzaGVkPSExLHRoaXMuZXJyb3JFbWl0dGVkPSExLHRoaXMuZW1pdENsb3NlPSFlfHwhMSE9PWUuZW1pdENsb3NlLHRoaXMuYXV0b0Rlc3Ryb3k9IWV8fCExIT09ZS5hdXRvRGVzdHJveSx0aGlzLmVycm9yZWQ9bnVsbCx0aGlzLmNsb3NlZD0hMSx0aGlzLmNsb3NlRW1pdHRlZD0hMSx0aGlzW1JdPVtdfWZ1bmN0aW9uIEEoZSl7ZS5idWZmZXJlZD1bXSxlLmJ1ZmZlcmVkSW5kZXg9MCxlLmFsbEJ1ZmZlcnM9ITAsZS5hbGxOb29wPSEwfWZ1bmN0aW9uIEkoZSl7Y29uc3QgdD10aGlzIGluc3RhbmNlb2YgbigxODIpO2lmKCF0JiYhYShJLHRoaXMpKXJldHVybiBuZXcgSShlKTt0aGlzLl93cml0YWJsZVN0YXRlPW5ldyBQKGUsdGhpcyx0KSxlJiYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS53cml0ZSYmKHRoaXMuX3dyaXRlPWUud3JpdGUpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUud3JpdGV2JiYodGhpcy5fd3JpdGV2PWUud3JpdGV2KSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PWUuZGVzdHJveSksXCJmdW5jdGlvblwiPT10eXBlb2YgZS5maW5hbCYmKHRoaXMuX2ZpbmFsPWUuZmluYWwpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uc3RydWN0JiYodGhpcy5fY29uc3RydWN0PWUuY29uc3RydWN0KSxlLnNpZ25hbCYmQyhlLnNpZ25hbCx0aGlzKSksaC5jYWxsKHRoaXMsZSksZy5jb25zdHJ1Y3QodGhpcywoKCk9Pntjb25zdCBlPXRoaXMuX3dyaXRhYmxlU3RhdGU7ZS53cml0aW5nfHxGKHRoaXMsZSksVSh0aGlzLGUpfSkpfWZ1bmN0aW9uIFQoZSx0LG4sbyl7Y29uc3QgaT1lLl93cml0YWJsZVN0YXRlO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4pbz1uLG49aS5kZWZhdWx0RW5jb2Rpbmc7ZWxzZXtpZihuKXtpZihcImJ1ZmZlclwiIT09biYmIXYuaXNFbmNvZGluZyhuKSl0aHJvdyBuZXcgTShuKX1lbHNlIG49aS5kZWZhdWx0RW5jb2Rpbmc7XCJmdW5jdGlvblwiIT10eXBlb2YgbyYmKG89ayl9aWYobnVsbD09PXQpdGhyb3cgbmV3IEU7aWYoIWkub2JqZWN0TW9kZSlpZihcInN0cmluZ1wiPT10eXBlb2YgdCkhMSE9PWkuZGVjb2RlU3RyaW5ncyYmKHQ9di5mcm9tKHQsbiksbj1cImJ1ZmZlclwiKTtlbHNlIGlmKHQgaW5zdGFuY2VvZiB2KW49XCJidWZmZXJcIjtlbHNle2lmKCFoLl9pc1VpbnQ4QXJyYXkodCkpdGhyb3cgbmV3IHcoXCJjaHVua1wiLFtcInN0cmluZ1wiLFwiQnVmZmVyXCIsXCJVaW50OEFycmF5XCJdLHQpO3Q9aC5fdWludDhBcnJheVRvQnVmZmVyKHQpLG49XCJidWZmZXJcIn1sZXQgYTtyZXR1cm4gaS5lbmRpbmc/YT1uZXcgUzppLmRlc3Ryb3llZCYmKGE9bmV3IEwoXCJ3cml0ZVwiKSksYT8oci5uZXh0VGljayhvLGEpLGooZSxhLCEwKSxhKTooaS5wZW5kaW5nY2IrKyxmdW5jdGlvbihlLHQsbixyLG8pe2NvbnN0IGk9dC5vYmplY3RNb2RlPzE6bi5sZW5ndGg7dC5sZW5ndGgrPWk7Y29uc3QgYT10Lmxlbmd0aDx0LmhpZ2hXYXRlck1hcms7cmV0dXJuIGF8fCh0Lm5lZWREcmFpbj0hMCksdC53cml0aW5nfHx0LmNvcmtlZHx8dC5lcnJvcmVkfHwhdC5jb25zdHJ1Y3RlZD8odC5idWZmZXJlZC5wdXNoKHtjaHVuazpuLGVuY29kaW5nOnIsY2FsbGJhY2s6b30pLHQuYWxsQnVmZmVycyYmXCJidWZmZXJcIiE9PXImJih0LmFsbEJ1ZmZlcnM9ITEpLHQuYWxsTm9vcCYmbyE9PWsmJih0LmFsbE5vb3A9ITEpKToodC53cml0ZWxlbj1pLHQud3JpdGVjYj1vLHQud3JpdGluZz0hMCx0LnN5bmM9ITAsZS5fd3JpdGUobixyLHQub253cml0ZSksdC5zeW5jPSExKSxhJiYhdC5lcnJvcmVkJiYhdC5kZXN0cm95ZWR9KGUsaSx0LG4sbykpfWZ1bmN0aW9uIEgoZSx0LG4scixvLGksYSl7dC53cml0ZWxlbj1yLHQud3JpdGVjYj1hLHQud3JpdGluZz0hMCx0LnN5bmM9ITAsdC5kZXN0cm95ZWQ/dC5vbndyaXRlKG5ldyBMKFwid3JpdGVcIikpOm4/ZS5fd3JpdGV2KG8sdC5vbndyaXRlKTplLl93cml0ZShvLGksdC5vbndyaXRlKSx0LnN5bmM9ITF9ZnVuY3Rpb24gVihlLHQsbixyKXstLXQucGVuZGluZ2NiLHIobiksJCh0KSxqKGUsbil9ZnVuY3Rpb24gQihlLHQpe2NvbnN0IG49ZS5fd3JpdGFibGVTdGF0ZSxvPW4uc3luYyxpPW4ud3JpdGVjYjtcImZ1bmN0aW9uXCI9PXR5cGVvZiBpPyhuLndyaXRpbmc9ITEsbi53cml0ZWNiPW51bGwsbi5sZW5ndGgtPW4ud3JpdGVsZW4sbi53cml0ZWxlbj0wLHQ/KHQuc3RhY2ssbi5lcnJvcmVkfHwobi5lcnJvcmVkPXQpLGUuX3JlYWRhYmxlU3RhdGUmJiFlLl9yZWFkYWJsZVN0YXRlLmVycm9yZWQmJihlLl9yZWFkYWJsZVN0YXRlLmVycm9yZWQ9dCksbz9yLm5leHRUaWNrKFYsZSxuLHQsaSk6VihlLG4sdCxpKSk6KG4uYnVmZmVyZWQubGVuZ3RoPm4uYnVmZmVyZWRJbmRleCYmRihlLG4pLG8/bnVsbCE9PW4uYWZ0ZXJXcml0ZVRpY2tJbmZvJiZuLmFmdGVyV3JpdGVUaWNrSW5mby5jYj09PWk/bi5hZnRlcldyaXRlVGlja0luZm8uY291bnQrKzoobi5hZnRlcldyaXRlVGlja0luZm89e2NvdW50OjEsY2I6aSxzdHJlYW06ZSxzdGF0ZTpufSxyLm5leHRUaWNrKEQsbi5hZnRlcldyaXRlVGlja0luZm8pKTpaKGUsbiwxLGkpKSk6aihlLG5ldyB4KX1mdW5jdGlvbiBEKHtzdHJlYW06ZSxzdGF0ZTp0LGNvdW50Om4sY2I6cn0pe3JldHVybiB0LmFmdGVyV3JpdGVUaWNrSW5mbz1udWxsLFooZSx0LG4scil9ZnVuY3Rpb24gWihlLHQsbixyKXtmb3IoIXQuZW5kaW5nJiYhZS5kZXN0cm95ZWQmJjA9PT10Lmxlbmd0aCYmdC5uZWVkRHJhaW4mJih0Lm5lZWREcmFpbj0hMSxlLmVtaXQoXCJkcmFpblwiKSk7bi0tID4wOyl0LnBlbmRpbmdjYi0tLHIoKTt0LmRlc3Ryb3llZCYmJCh0KSxVKGUsdCl9ZnVuY3Rpb24gJChlKXtpZihlLndyaXRpbmcpcmV0dXJuO2ZvcihsZXQgbj1lLmJ1ZmZlcmVkSW5kZXg7bjxlLmJ1ZmZlcmVkLmxlbmd0aDsrK24pe3ZhciB0O2NvbnN0e2NodW5rOnIsY2FsbGJhY2s6b309ZS5idWZmZXJlZFtuXSxpPWUub2JqZWN0TW9kZT8xOnIubGVuZ3RoO2UubGVuZ3RoLT1pLG8obnVsbCE9PSh0PWUuZXJyb3JlZCkmJnZvaWQgMCE9PXQ/dDpuZXcgTChcIndyaXRlXCIpKX1jb25zdCBuPWVbUl0uc3BsaWNlKDApO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXt2YXIgcjtuW3RdKG51bGwhPT0ocj1lLmVycm9yZWQpJiZ2b2lkIDAhPT1yP3I6bmV3IEwoXCJlbmRcIikpfUEoZSl9ZnVuY3Rpb24gRihlLHQpe2lmKHQuY29ya2VkfHx0LmJ1ZmZlclByb2Nlc3Npbmd8fHQuZGVzdHJveWVkfHwhdC5jb25zdHJ1Y3RlZClyZXR1cm47Y29uc3R7YnVmZmVyZWQ6bixidWZmZXJlZEluZGV4OnIsb2JqZWN0TW9kZTppfT10LGE9bi5sZW5ndGgtcjtpZighYSlyZXR1cm47bGV0IGw9cjtpZih0LmJ1ZmZlclByb2Nlc3Npbmc9ITAsYT4xJiZlLl93cml0ZXYpe3QucGVuZGluZ2NiLT1hLTE7Y29uc3Qgcj10LmFsbE5vb3A/azplPT57Zm9yKGxldCB0PWw7dDxuLmxlbmd0aDsrK3Qpblt0XS5jYWxsYmFjayhlKX0saT10LmFsbE5vb3AmJjA9PT1sP246byhuLGwpO2kuYWxsQnVmZmVycz10LmFsbEJ1ZmZlcnMsSChlLHQsITAsdC5sZW5ndGgsaSxcIlwiLHIpLEEodCl9ZWxzZXtkb3tjb25zdHtjaHVuazpyLGVuY29kaW5nOm8sY2FsbGJhY2s6YX09bltsXTtuW2wrK109bnVsbCxIKGUsdCwhMSxpPzE6ci5sZW5ndGgscixvLGEpfXdoaWxlKGw8bi5sZW5ndGgmJiF0LndyaXRpbmcpO2w9PT1uLmxlbmd0aD9BKHQpOmw+MjU2PyhuLnNwbGljZSgwLGwpLHQuYnVmZmVyZWRJbmRleD0wKTp0LmJ1ZmZlcmVkSW5kZXg9bH10LmJ1ZmZlclByb2Nlc3Npbmc9ITF9ZnVuY3Rpb24gTihlKXtyZXR1cm4gZS5lbmRpbmcmJiFlLmRlc3Ryb3llZCYmZS5jb25zdHJ1Y3RlZCYmMD09PWUubGVuZ3RoJiYhZS5lcnJvcmVkJiYwPT09ZS5idWZmZXJlZC5sZW5ndGgmJiFlLmZpbmlzaGVkJiYhZS53cml0aW5nJiYhZS5lcnJvckVtaXR0ZWQmJiFlLmNsb3NlRW1pdHRlZH1mdW5jdGlvbiBVKGUsdCxuKXtOKHQpJiYoZnVuY3Rpb24oZSx0KXt0LnByZWZpbmlzaGVkfHx0LmZpbmFsQ2FsbGVkfHwoXCJmdW5jdGlvblwiIT10eXBlb2YgZS5fZmluYWx8fHQuZGVzdHJveWVkPyh0LnByZWZpbmlzaGVkPSEwLGUuZW1pdChcInByZWZpbmlzaFwiKSk6KHQuZmluYWxDYWxsZWQ9ITAsZnVuY3Rpb24oZSx0KXtsZXQgbj0hMTtmdW5jdGlvbiBvKG8pe2lmKG4paihlLG51bGwhPW8/bzp4KCkpO2Vsc2UgaWYobj0hMCx0LnBlbmRpbmdjYi0tLG8pe2NvbnN0IG49dFtSXS5zcGxpY2UoMCk7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspbltlXShvKTtqKGUsbyx0LnN5bmMpfWVsc2UgTih0KSYmKHQucHJlZmluaXNoZWQ9ITAsZS5lbWl0KFwicHJlZmluaXNoXCIpLHQucGVuZGluZ2NiKyssci5uZXh0VGljayhXLGUsdCkpfXQuc3luYz0hMCx0LnBlbmRpbmdjYisrO3RyeXtlLl9maW5hbChvKX1jYXRjaChlKXtvKGUpfXQuc3luYz0hMX0oZSx0KSkpfShlLHQpLDA9PT10LnBlbmRpbmdjYiYmKG4/KHQucGVuZGluZ2NiKyssci5uZXh0VGljaygoKGUsdCk9PntOKHQpP1coZSx0KTp0LnBlbmRpbmdjYi0tfSksZSx0KSk6Tih0KSYmKHQucGVuZGluZ2NiKyssVyhlLHQpKSkpfWZ1bmN0aW9uIFcoZSx0KXt0LnBlbmRpbmdjYi0tLHQuZmluaXNoZWQ9ITA7Y29uc3Qgbj10W1JdLnNwbGljZSgwKTtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyluW2VdKCk7aWYoZS5lbWl0KFwiZmluaXNoXCIpLHQuYXV0b0Rlc3Ryb3kpe2NvbnN0IHQ9ZS5fcmVhZGFibGVTdGF0ZTsoIXR8fHQuYXV0b0Rlc3Ryb3kmJih0LmVuZEVtaXR0ZWR8fCExPT09dC5yZWFkYWJsZSkpJiZlLmRlc3Ryb3koKX19UC5wcm90b3R5cGUuZ2V0QnVmZmVyPWZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcy5idWZmZXJlZCx0aGlzLmJ1ZmZlcmVkSW5kZXgpfSxsKFAucHJvdG90eXBlLFwiYnVmZmVyZWRSZXF1ZXN0Q291bnRcIix7X19wcm90b19fOm51bGwsZ2V0KCl7cmV0dXJuIHRoaXMuYnVmZmVyZWQubGVuZ3RoLXRoaXMuYnVmZmVyZWRJbmRleH19KSxsKEksZCx7X19wcm90b19fOm51bGwsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuISFhKHRoaXMsZSl8fHRoaXM9PT1JJiZlJiZlLl93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgUH19KSxJLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKCl7aih0aGlzLG5ldyBfKX0sSS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiEwPT09VCh0aGlzLGUsdCxuKX0sSS5wcm90b3R5cGUuY29yaz1mdW5jdGlvbigpe3RoaXMuX3dyaXRhYmxlU3RhdGUuY29ya2VkKyt9LEkucHJvdG90eXBlLnVuY29yaz1mdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5fd3JpdGFibGVTdGF0ZTtlLmNvcmtlZCYmKGUuY29ya2VkLS0sZS53cml0aW5nfHxGKHRoaXMsZSkpfSxJLnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2Rpbmc9ZnVuY3Rpb24oZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJihlPXUoZSkpLCF2LmlzRW5jb2RpbmcoZSkpdGhyb3cgbmV3IE0oZSk7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nPWUsdGhpc30sSS5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKGUsdCxuKXtpZighdGhpcy5fd3JpdGV2KXRocm93IG5ldyBiKFwiX3dyaXRlKClcIik7dGhpcy5fd3JpdGV2KFt7Y2h1bms6ZSxlbmNvZGluZzp0fV0sbil9LEkucHJvdG90eXBlLl93cml0ZXY9bnVsbCxJLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IG89dGhpcy5fd3JpdGFibGVTdGF0ZTtsZXQgYTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlPyhuPWUsZT1udWxsLHQ9bnVsbCk6XCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKG49dCx0PW51bGwpLG51bGwhPWUpe2NvbnN0IG49VCh0aGlzLGUsdCk7biBpbnN0YW5jZW9mIGkmJihhPW4pfXJldHVybiBvLmNvcmtlZCYmKG8uY29ya2VkPTEsdGhpcy51bmNvcmsoKSksYXx8KG8uZXJyb3JlZHx8by5lbmRpbmc/by5maW5pc2hlZD9hPW5ldyBPKFwiZW5kXCIpOm8uZGVzdHJveWVkJiYoYT1uZXcgTChcImVuZFwiKSk6KG8uZW5kaW5nPSEwLFUodGhpcyxvLCEwKSxvLmVuZGVkPSEwKSksXCJmdW5jdGlvblwiPT10eXBlb2YgbiYmKGF8fG8uZmluaXNoZWQ/ci5uZXh0VGljayhuLGEpOm9bUl0ucHVzaChuKSksdGhpc30scyhJLnByb3RvdHlwZSx7Y2xvc2VkOntfX3Byb3RvX186bnVsbCxnZXQoKXtyZXR1cm4hIXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuY2xvc2VkfX0sZGVzdHJveWVkOntfX3Byb3RvX186bnVsbCxnZXQoKXtyZXR1cm4hIXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQoZSl7dGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPWUpfX0sd3JpdGFibGU6e19fcHJvdG9fXzpudWxsLGdldCgpe2NvbnN0IGU9dGhpcy5fd3JpdGFibGVTdGF0ZTtyZXR1cm4hKCFlfHwhMT09PWUud3JpdGFibGV8fGUuZGVzdHJveWVkfHxlLmVycm9yZWR8fGUuZW5kaW5nfHxlLmVuZGVkKX0sc2V0KGUpe3RoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLndyaXRhYmxlPSEhZSl9fSx3cml0YWJsZUZpbmlzaGVkOntfX3Byb3RvX186bnVsbCxnZXQoKXtyZXR1cm4hIXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWR9fSx3cml0YWJsZU9iamVjdE1vZGU6e19fcHJvdG9fXzpudWxsLGdldCgpe3JldHVybiEhdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5vYmplY3RNb2RlfX0sd3JpdGFibGVCdWZmZXI6e19fcHJvdG9fXzpudWxsLGdldCgpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmdldEJ1ZmZlcigpfX0sd3JpdGFibGVFbmRlZDp7X19wcm90b19fOm51bGwsZ2V0KCl7cmV0dXJuISF0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZ319LHdyaXRhYmxlTmVlZERyYWluOntfX3Byb3RvX186bnVsbCxnZXQoKXtjb25zdCBlPXRoaXMuX3dyaXRhYmxlU3RhdGU7cmV0dXJuISFlJiYhZS5kZXN0cm95ZWQmJiFlLmVuZGluZyYmZS5uZWVkRHJhaW59fSx3cml0YWJsZUhpZ2hXYXRlck1hcms6e19fcHJvdG9fXzpudWxsLGdldCgpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSx3cml0YWJsZUNvcmtlZDp7X19wcm90b19fOm51bGwsZ2V0KCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGU/dGhpcy5fd3JpdGFibGVTdGF0ZS5jb3JrZWQ6MH19LHdyaXRhYmxlTGVuZ3RoOntfX3Byb3RvX186bnVsbCxnZXQoKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5sZW5ndGh9fSxlcnJvcmVkOntfX3Byb3RvX186bnVsbCxlbnVtZXJhYmxlOiExLGdldCgpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlP3RoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JlZDpudWxsfX0sd3JpdGFibGVBYm9ydGVkOntfX3Byb3RvX186bnVsbCxlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiEoITE9PT10aGlzLl93cml0YWJsZVN0YXRlLndyaXRhYmxlfHwhdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQmJiF0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yZWR8fHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQpfX19KTtjb25zdCB6PWcuZGVzdHJveTtsZXQgRztmdW5jdGlvbiBxKCl7cmV0dXJuIHZvaWQgMD09PUcmJihHPXt9KSxHfUkucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oZSx0KXtjb25zdCBuPXRoaXMuX3dyaXRhYmxlU3RhdGU7cmV0dXJuIW4uZGVzdHJveWVkJiYobi5idWZmZXJlZEluZGV4PG4uYnVmZmVyZWQubGVuZ3RofHxuW1JdLmxlbmd0aCkmJnIubmV4dFRpY2soJCxuKSx6LmNhbGwodGhpcyxlLHQpLHRoaXN9LEkucHJvdG90eXBlLl91bmRlc3Ryb3k9Zy51bmRlc3Ryb3ksSS5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oZSx0KXt0KGUpfSxJLnByb3RvdHlwZVtwLmNhcHR1cmVSZWplY3Rpb25TeW1ib2xdPWZ1bmN0aW9uKGUpe3RoaXMuZGVzdHJveShlKX0sSS5mcm9tV2ViPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHEoKS5uZXdTdHJlYW1Xcml0YWJsZUZyb21Xcml0YWJsZVN0cmVhbShlLHQpfSxJLnRvV2ViPWZ1bmN0aW9uKGUpe3JldHVybiBxKCkubmV3V3JpdGFibGVTdHJlYW1Gcm9tU3RyZWFtV3JpdGFibGUoZSl9fSw5MDQ6KGUsdCxuKT0+e2NvbnN0e0FycmF5SXNBcnJheTpyLEFycmF5UHJvdG90eXBlSW5jbHVkZXM6byxBcnJheVByb3RvdHlwZUpvaW46aSxBcnJheVByb3RvdHlwZU1hcDphLE51bWJlcklzSW50ZWdlcjpsLE51bWJlcklzTmFOOnMsTnVtYmVyTUFYX1NBRkVfSU5URUdFUjpjLE51bWJlck1JTl9TQUZFX0lOVEVHRVI6dSxOdW1iZXJQYXJzZUludDpmLE9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5OmQsUmVnRXhwUHJvdG90eXBlRXhlYzpwLFN0cmluZzpoLFN0cmluZ1Byb3RvdHlwZVRvVXBwZXJDYXNlOnYsU3RyaW5nUHJvdG90eXBlVHJpbTpnfT1uKDE5MSkse2hpZGVTdGFja0ZyYW1lczpDLGNvZGVzOntFUlJfU09DS0VUX0JBRF9QT1JUOm0sRVJSX0lOVkFMSURfQVJHX1RZUEU6eSxFUlJfSU5WQUxJRF9BUkdfVkFMVUU6dyxFUlJfT1VUX09GX1JBTkdFOmIsRVJSX1VOS05PV05fU0lHTkFMOnh9fT1uKDE0MSkse25vcm1hbGl6ZUVuY29kaW5nOl99PW4oNzc1KSx7aXNBc3luY0Z1bmN0aW9uOkwsaXNBcnJheUJ1ZmZlclZpZXc6T309big3NzUpLnR5cGVzLEU9e30sUz0vXlswLTddKyQvLE09QygoKGUsdCxuPXUscj1jKT0+e2lmKFwibnVtYmVyXCIhPXR5cGVvZiBlKXRocm93IG5ldyB5KHQsXCJudW1iZXJcIixlKTtpZighbChlKSl0aHJvdyBuZXcgYih0LFwiYW4gaW50ZWdlclwiLGUpO2lmKGU8bnx8ZT5yKXRocm93IG5ldyBiKHQsYD49ICR7bn0gJiYgPD0gJHtyfWAsZSl9KSksaj1DKCgoZSx0LG49LTIxNDc0ODM2NDgscj0yMTQ3NDgzNjQ3KT0+e2lmKFwibnVtYmVyXCIhPXR5cGVvZiBlKXRocm93IG5ldyB5KHQsXCJudW1iZXJcIixlKTtpZighbChlKSl0aHJvdyBuZXcgYih0LFwiYW4gaW50ZWdlclwiLGUpO2lmKGU8bnx8ZT5yKXRocm93IG5ldyBiKHQsYD49ICR7bn0gJiYgPD0gJHtyfWAsZSl9KSksaz1DKCgoZSx0LG49ITEpPT57aWYoXCJudW1iZXJcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IHkodCxcIm51bWJlclwiLGUpO2lmKCFsKGUpKXRocm93IG5ldyBiKHQsXCJhbiBpbnRlZ2VyXCIsZSk7Y29uc3Qgcj1uPzE6MCxvPTQyOTQ5NjcyOTU7aWYoZTxyfHxlPm8pdGhyb3cgbmV3IGIodCxgPj0gJHtyfSAmJiA8PSAke299YCxlKX0pKTtmdW5jdGlvbiBSKGUsdCl7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IHkodCxcInN0cmluZ1wiLGUpfWNvbnN0IFA9QygoKGUsdCxuKT0+e2lmKCFvKG4sZSkpe2NvbnN0IHI9aShhKG4sKGU9Plwic3RyaW5nXCI9PXR5cGVvZiBlP2AnJHtlfSdgOmgoZSkpKSxcIiwgXCIpO3Rocm93IG5ldyB3KHQsZSxcIm11c3QgYmUgb25lIG9mOiBcIityKX19KSk7ZnVuY3Rpb24gQShlLHQpe2lmKFwiYm9vbGVhblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgeSh0LFwiYm9vbGVhblwiLGUpfWZ1bmN0aW9uIEkoZSx0LG4pe3JldHVybiBudWxsIT1lJiZkKGUsdCk/ZVt0XTpufWNvbnN0IFQ9QygoKGUsdCxuPW51bGwpPT57Y29uc3Qgbz1JKG4sXCJhbGxvd0FycmF5XCIsITEpLGk9SShuLFwiYWxsb3dGdW5jdGlvblwiLCExKTtpZighSShuLFwibnVsbGFibGVcIiwhMSkmJm51bGw9PT1lfHwhbyYmcihlKXx8XCJvYmplY3RcIiE9dHlwZW9mIGUmJighaXx8XCJmdW5jdGlvblwiIT10eXBlb2YgZSkpdGhyb3cgbmV3IHkodCxcIk9iamVjdFwiLGUpfSkpLEg9QygoKGUsdCk9PntpZihudWxsIT1lJiZcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgeSh0LFwiYSBkaWN0aW9uYXJ5XCIsZSl9KSksVj1DKCgoZSx0LG49MCk9PntpZighcihlKSl0aHJvdyBuZXcgeSh0LFwiQXJyYXlcIixlKTtpZihlLmxlbmd0aDxuKXRocm93IG5ldyB3KHQsZSxgbXVzdCBiZSBsb25nZXIgdGhhbiAke259YCl9KSksQj1DKCgoZSx0PVwiYnVmZmVyXCIpPT57aWYoIU8oZSkpdGhyb3cgbmV3IHkodCxbXCJCdWZmZXJcIixcIlR5cGVkQXJyYXlcIixcIkRhdGFWaWV3XCJdLGUpfSkpLEQ9QygoKGUsdCk9PntpZih2b2lkIDAhPT1lJiYobnVsbD09PWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlfHwhKFwiYWJvcnRlZFwiaW4gZSkpKXRocm93IG5ldyB5KHQsXCJBYm9ydFNpZ25hbFwiLGUpfSkpLFo9QygoKGUsdCk9PntpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyB5KHQsXCJGdW5jdGlvblwiLGUpfSkpLCQ9QygoKGUsdCk9PntpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlfHxMKGUpKXRocm93IG5ldyB5KHQsXCJGdW5jdGlvblwiLGUpfSkpLEY9QygoKGUsdCk9PntpZih2b2lkIDAhPT1lKXRocm93IG5ldyB5KHQsXCJ1bmRlZmluZWRcIixlKX0pKSxOPS9eKD86PFtePl0qPikoPzpcXHMqO1xccypbXjtcIlxcc10rKD86PShcIik/W147XCJcXHNdKlxcMSk/KSokLztmdW5jdGlvbiBVKGUsdCl7aWYodm9pZCAwPT09ZXx8IXAoTixlKSl0aHJvdyBuZXcgdyh0LGUsJ211c3QgYmUgYW4gYXJyYXkgb3Igc3RyaW5nIG9mIGZvcm1hdCBcIjwvc3R5bGVzLmNzcz47IHJlbD1wcmVsb2FkOyBhcz1zdHlsZVwiJyl9ZS5leHBvcnRzPXtpc0ludDMyOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09KDB8ZSl9LGlzVWludDMyOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09ZT4+PjB9LHBhcnNlRmlsZU1vZGU6ZnVuY3Rpb24oZSx0LG4pe2lmKHZvaWQgMD09PWUmJihlPW4pLFwic3RyaW5nXCI9PXR5cGVvZiBlKXtpZihudWxsPT09cChTLGUpKXRocm93IG5ldyB3KHQsZSxcIm11c3QgYmUgYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciBvciBhbiBvY3RhbCBzdHJpbmdcIik7ZT1mKGUsOCl9cmV0dXJuIGsoZSx0KSxlfSx2YWxpZGF0ZUFycmF5OlYsdmFsaWRhdGVTdHJpbmdBcnJheTpmdW5jdGlvbihlLHQpe1YoZSx0KTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKylSKGVbbl0sYCR7dH1bJHtufV1gKX0sdmFsaWRhdGVCb29sZWFuQXJyYXk6ZnVuY3Rpb24oZSx0KXtWKGUsdCk7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspQShlW25dLGAke3R9WyR7bn1dYCl9LHZhbGlkYXRlQm9vbGVhbjpBLHZhbGlkYXRlQnVmZmVyOkIsdmFsaWRhdGVEaWN0aW9uYXJ5OkgsdmFsaWRhdGVFbmNvZGluZzpmdW5jdGlvbihlLHQpe2NvbnN0IG49Xyh0KSxyPWUubGVuZ3RoO2lmKFwiaGV4XCI9PT1uJiZyJTIhPTApdGhyb3cgbmV3IHcoXCJlbmNvZGluZ1wiLHQsYGlzIGludmFsaWQgZm9yIGRhdGEgb2YgbGVuZ3RoICR7cn1gKX0sdmFsaWRhdGVGdW5jdGlvbjpaLHZhbGlkYXRlSW50MzI6aix2YWxpZGF0ZUludGVnZXI6TSx2YWxpZGF0ZU51bWJlcjpmdW5jdGlvbihlLHQsbj11bmRlZmluZWQscil7aWYoXCJudW1iZXJcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IHkodCxcIm51bWJlclwiLGUpO2lmKG51bGwhPW4mJmU8bnx8bnVsbCE9ciYmZT5yfHwobnVsbCE9bnx8bnVsbCE9cikmJnMoZSkpdGhyb3cgbmV3IGIodCxgJHtudWxsIT1uP2A+PSAke259YDpcIlwifSR7bnVsbCE9biYmbnVsbCE9cj9cIiAmJiBcIjpcIlwifSR7bnVsbCE9cj9gPD0gJHtyfWA6XCJcIn1gLGUpfSx2YWxpZGF0ZU9iamVjdDpULHZhbGlkYXRlT25lT2Y6UCx2YWxpZGF0ZVBsYWluRnVuY3Rpb246JCx2YWxpZGF0ZVBvcnQ6ZnVuY3Rpb24oZSx0PVwiUG9ydFwiLG49ITApe2lmKFwibnVtYmVyXCIhPXR5cGVvZiBlJiZcInN0cmluZ1wiIT10eXBlb2YgZXx8XCJzdHJpbmdcIj09dHlwZW9mIGUmJjA9PT1nKGUpLmxlbmd0aHx8K2UhPStlPj4+MHx8ZT42NTUzNXx8MD09PWUmJiFuKXRocm93IG5ldyBtKHQsZSxuKTtyZXR1cm4gMHxlfSx2YWxpZGF0ZVNpZ25hbE5hbWU6ZnVuY3Rpb24oZSx0PVwic2lnbmFsXCIpe2lmKFIoZSx0KSx2b2lkIDA9PT1FW2VdKXtpZih2b2lkIDAhPT1FW3YoZSldKXRocm93IG5ldyB4KGUrXCIgKHNpZ25hbHMgbXVzdCB1c2UgYWxsIGNhcGl0YWwgbGV0dGVycylcIik7dGhyb3cgbmV3IHgoZSl9fSx2YWxpZGF0ZVN0cmluZzpSLHZhbGlkYXRlVWludDMyOmssdmFsaWRhdGVVbmRlZmluZWQ6Rix2YWxpZGF0ZVVuaW9uOmZ1bmN0aW9uKGUsdCxuKXtpZighbyhuLGUpKXRocm93IG5ldyB5KHQsYCgnJHtpKG4sXCJ8XCIpfScpYCxlKX0sdmFsaWRhdGVBYm9ydFNpZ25hbDpELHZhbGlkYXRlTGlua0hlYWRlclZhbHVlOmZ1bmN0aW9uKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBVKGUsXCJoaW50c1wiKSxlO2lmKHIoZSkpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IG49XCJcIjtpZigwPT09dClyZXR1cm4gbjtmb3IobGV0IHI9MDtyPHQ7cisrKXtjb25zdCBvPWVbcl07VShvLFwiaGludHNcIiksbis9byxyIT09dC0xJiYobis9XCIsIFwiKX1yZXR1cm4gbn10aHJvdyBuZXcgdyhcImhpbnRzXCIsZSwnbXVzdCBiZSBhbiBhcnJheSBvciBzdHJpbmcgb2YgZm9ybWF0IFwiPC9zdHlsZXMuY3NzPjsgcmVsPXByZWxvYWQ7IGFzPXN0eWxlXCInKX19fSw5OTooZSx0LG4pPT57Y29uc3Qgcj1uKDI5Miksbz1uKDc2MCksaT1yLlJlYWRhYmxlLmRlc3Ryb3k7ZS5leHBvcnRzPXIuUmVhZGFibGUsZS5leHBvcnRzLl91aW50OEFycmF5VG9CdWZmZXI9ci5fdWludDhBcnJheVRvQnVmZmVyLGUuZXhwb3J0cy5faXNVaW50OEFycmF5PXIuX2lzVWludDhBcnJheSxlLmV4cG9ydHMuaXNEaXN0dXJiZWQ9ci5pc0Rpc3R1cmJlZCxlLmV4cG9ydHMuaXNFcnJvcmVkPXIuaXNFcnJvcmVkLGUuZXhwb3J0cy5pc1JlYWRhYmxlPXIuaXNSZWFkYWJsZSxlLmV4cG9ydHMuUmVhZGFibGU9ci5SZWFkYWJsZSxlLmV4cG9ydHMuV3JpdGFibGU9ci5Xcml0YWJsZSxlLmV4cG9ydHMuRHVwbGV4PXIuRHVwbGV4LGUuZXhwb3J0cy5UcmFuc2Zvcm09ci5UcmFuc2Zvcm0sZS5leHBvcnRzLlBhc3NUaHJvdWdoPXIuUGFzc1Rocm91Z2gsZS5leHBvcnRzLmFkZEFib3J0U2lnbmFsPXIuYWRkQWJvcnRTaWduYWwsZS5leHBvcnRzLmZpbmlzaGVkPXIuZmluaXNoZWQsZS5leHBvcnRzLmRlc3Ryb3k9ci5kZXN0cm95LGUuZXhwb3J0cy5kZXN0cm95PWksZS5leHBvcnRzLnBpcGVsaW5lPXIucGlwZWxpbmUsZS5leHBvcnRzLmNvbXBvc2U9ci5jb21wb3NlLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLFwicHJvbWlzZXNcIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OigpPT5vfSksZS5leHBvcnRzLlN0cmVhbT1yLlN0cmVhbSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHN9LDE0MTooZSx0LG4pPT57Y29uc3R7Zm9ybWF0OnIsaW5zcGVjdDpvLEFnZ3JlZ2F0ZUVycm9yOml9PW4oNzc1KSxhPWdsb2JhbFRoaXMuQWdncmVnYXRlRXJyb3J8fGksbD1TeW1ib2woXCJrSXNOb2RlRXJyb3JcIikscz1bXCJzdHJpbmdcIixcImZ1bmN0aW9uXCIsXCJudW1iZXJcIixcIm9iamVjdFwiLFwiRnVuY3Rpb25cIixcIk9iamVjdFwiLFwiYm9vbGVhblwiLFwiYmlnaW50XCIsXCJzeW1ib2xcIl0sYz0vXihbQS1aXVthLXowLTldKikrJC8sdT17fTtmdW5jdGlvbiBmKGUsdCl7aWYoIWUpdGhyb3cgbmV3IHUuRVJSX0lOVEVSTkFMX0FTU0VSVElPTih0KX1mdW5jdGlvbiBkKGUpe2xldCB0PVwiXCIsbj1lLmxlbmd0aDtjb25zdCByPVwiLVwiPT09ZVswXT8xOjA7Zm9yKDtuPj1yKzQ7bi09Myl0PWBfJHtlLnNsaWNlKG4tMyxuKX0ke3R9YDtyZXR1cm5gJHtlLnNsaWNlKDAsbil9JHt0fWB9ZnVuY3Rpb24gcChlLHQsbil7bnx8KG49RXJyb3IpO2NsYXNzIG8gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKC4uLm4pe3N1cGVyKGZ1bmN0aW9uKGUsdCxuKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KXJldHVybiBmKHQubGVuZ3RoPD1uLmxlbmd0aCxgQ29kZTogJHtlfTsgVGhlIHByb3ZpZGVkIGFyZ3VtZW50cyBsZW5ndGggKCR7bi5sZW5ndGh9KSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWlyZWQgb25lcyAoJHt0Lmxlbmd0aH0pLmApLHQoLi4ubik7Y29uc3Qgbz0odC5tYXRjaCgvJVtkZmlqb09zXS9nKXx8W10pLmxlbmd0aDtyZXR1cm4gZihvPT09bi5sZW5ndGgsYENvZGU6ICR7ZX07IFRoZSBwcm92aWRlZCBhcmd1bWVudHMgbGVuZ3RoICgke24ubGVuZ3RofSkgZG9lcyBub3QgbWF0Y2ggdGhlIHJlcXVpcmVkIG9uZXMgKCR7b30pLmApLDA9PT1uLmxlbmd0aD90OnIodCwuLi5uKX0oZSx0LG4pKX10b1N0cmluZygpe3JldHVybmAke3RoaXMubmFtZX0gWyR7ZX1dOiAke3RoaXMubWVzc2FnZX1gfX1PYmplY3QuZGVmaW5lUHJvcGVydGllcyhvLnByb3RvdHlwZSx7bmFtZTp7dmFsdWU6bi5uYW1lLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSx0b1N0cmluZzp7dmFsdWUoKXtyZXR1cm5gJHt0aGlzLm5hbWV9IFske2V9XTogJHt0aGlzLm1lc3NhZ2V9YH0sd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9fSksby5wcm90b3R5cGUuY29kZT1lLG8ucHJvdG90eXBlW2xdPSEwLHVbZV09b31mdW5jdGlvbiBoKGUpe2NvbnN0IHQ9XCJfX25vZGVfaW50ZXJuYWxfXCIrZS5uYW1lO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIm5hbWVcIix7dmFsdWU6dH0pLGV9Y2xhc3MgdiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGU9XCJUaGUgb3BlcmF0aW9uIHdhcyBhYm9ydGVkXCIsdD11bmRlZmluZWQpe2lmKHZvaWQgMCE9PXQmJlwib2JqZWN0XCIhPXR5cGVvZiB0KXRocm93IG5ldyB1LkVSUl9JTlZBTElEX0FSR19UWVBFKFwib3B0aW9uc1wiLFwiT2JqZWN0XCIsdCk7c3VwZXIoZSx0KSx0aGlzLmNvZGU9XCJBQk9SVF9FUlJcIix0aGlzLm5hbWU9XCJBYm9ydEVycm9yXCJ9fXAoXCJFUlJfQVNTRVJUSU9OXCIsXCIlc1wiLEVycm9yKSxwKFwiRVJSX0lOVkFMSURfQVJHX1RZUEVcIiwoKGUsdCxuKT0+e2YoXCJzdHJpbmdcIj09dHlwZW9mIGUsXCInbmFtZScgbXVzdCBiZSBhIHN0cmluZ1wiKSxBcnJheS5pc0FycmF5KHQpfHwodD1bdF0pO2xldCByPVwiVGhlIFwiO2UuZW5kc1dpdGgoXCIgYXJndW1lbnRcIik/cis9YCR7ZX0gYDpyKz1gXCIke2V9XCIgJHtlLmluY2x1ZGVzKFwiLlwiKT9cInByb3BlcnR5XCI6XCJhcmd1bWVudFwifSBgLHIrPVwibXVzdCBiZSBcIjtjb25zdCBpPVtdLGE9W10sbD1bXTtmb3IoY29uc3QgZSBvZiB0KWYoXCJzdHJpbmdcIj09dHlwZW9mIGUsXCJBbGwgZXhwZWN0ZWQgZW50cmllcyBoYXZlIHRvIGJlIG9mIHR5cGUgc3RyaW5nXCIpLHMuaW5jbHVkZXMoZSk/aS5wdXNoKGUudG9Mb3dlckNhc2UoKSk6Yy50ZXN0KGUpP2EucHVzaChlKTooZihcIm9iamVjdFwiIT09ZSwnVGhlIHZhbHVlIFwib2JqZWN0XCIgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgXCJPYmplY3RcIicpLGwucHVzaChlKSk7aWYoYS5sZW5ndGg+MCl7Y29uc3QgZT1pLmluZGV4T2YoXCJvYmplY3RcIik7LTEhPT1lJiYoaS5zcGxpY2UoaSxlLDEpLGEucHVzaChcIk9iamVjdFwiKSl9aWYoaS5sZW5ndGg+MCl7c3dpdGNoKGkubGVuZ3RoKXtjYXNlIDE6cis9YG9mIHR5cGUgJHtpWzBdfWA7YnJlYWs7Y2FzZSAyOnIrPWBvbmUgb2YgdHlwZSAke2lbMF19IG9yICR7aVsxXX1gO2JyZWFrO2RlZmF1bHQ6e2NvbnN0IGU9aS5wb3AoKTtyKz1gb25lIG9mIHR5cGUgJHtpLmpvaW4oXCIsIFwiKX0sIG9yICR7ZX1gfX0oYS5sZW5ndGg+MHx8bC5sZW5ndGg+MCkmJihyKz1cIiBvciBcIil9aWYoYS5sZW5ndGg+MCl7c3dpdGNoKGEubGVuZ3RoKXtjYXNlIDE6cis9YGFuIGluc3RhbmNlIG9mICR7YVswXX1gO2JyZWFrO2Nhc2UgMjpyKz1gYW4gaW5zdGFuY2Ugb2YgJHthWzBdfSBvciAke2FbMV19YDticmVhaztkZWZhdWx0Ontjb25zdCBlPWEucG9wKCk7cis9YGFuIGluc3RhbmNlIG9mICR7YS5qb2luKFwiLCBcIil9LCBvciAke2V9YH19bC5sZW5ndGg+MCYmKHIrPVwiIG9yIFwiKX1zd2l0Y2gobC5sZW5ndGgpe2Nhc2UgMDpicmVhaztjYXNlIDE6bFswXS50b0xvd2VyQ2FzZSgpIT09bFswXSYmKHIrPVwiYW4gXCIpLHIrPWAke2xbMF19YDticmVhaztjYXNlIDI6cis9YG9uZSBvZiAke2xbMF19IG9yICR7bFsxXX1gO2JyZWFrO2RlZmF1bHQ6e2NvbnN0IGU9bC5wb3AoKTtyKz1gb25lIG9mICR7bC5qb2luKFwiLCBcIil9LCBvciAke2V9YH19aWYobnVsbD09bilyKz1gLiBSZWNlaXZlZCAke259YDtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4mJm4ubmFtZSlyKz1gLiBSZWNlaXZlZCBmdW5jdGlvbiAke24ubmFtZX1gO2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIG4pe3ZhciB1O251bGwhPT0odT1uLmNvbnN0cnVjdG9yKSYmdm9pZCAwIT09dSYmdS5uYW1lP3IrPWAuIFJlY2VpdmVkIGFuIGluc3RhbmNlIG9mICR7bi5jb25zdHJ1Y3Rvci5uYW1lfWA6cis9YC4gUmVjZWl2ZWQgJHtvKG4se2RlcHRoOi0xfSl9YH1lbHNle2xldCBlPW8obix7Y29sb3JzOiExfSk7ZS5sZW5ndGg+MjUmJihlPWAke2Uuc2xpY2UoMCwyNSl9Li4uYCkscis9YC4gUmVjZWl2ZWQgdHlwZSAke3R5cGVvZiBufSAoJHtlfSlgfXJldHVybiByfSksVHlwZUVycm9yKSxwKFwiRVJSX0lOVkFMSURfQVJHX1ZBTFVFXCIsKChlLHQsbj1cImlzIGludmFsaWRcIik9PntsZXQgcj1vKHQpO3JldHVybiByLmxlbmd0aD4xMjgmJihyPXIuc2xpY2UoMCwxMjgpK1wiLi4uXCIpLGBUaGUgJHtlLmluY2x1ZGVzKFwiLlwiKT9cInByb3BlcnR5XCI6XCJhcmd1bWVudFwifSAnJHtlfScgJHtufS4gUmVjZWl2ZWQgJHtyfWB9KSxUeXBlRXJyb3IpLHAoXCJFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUVcIiwoKGUsdCxuKT0+e3ZhciByO3JldHVybmBFeHBlY3RlZCAke2V9IHRvIGJlIHJldHVybmVkIGZyb20gdGhlIFwiJHt0fVwiIGZ1bmN0aW9uIGJ1dCBnb3QgJHtudWxsIT1uJiZudWxsIT09KHI9bi5jb25zdHJ1Y3RvcikmJnZvaWQgMCE9PXImJnIubmFtZT9gaW5zdGFuY2Ugb2YgJHtuLmNvbnN0cnVjdG9yLm5hbWV9YDpcInR5cGUgXCIrdHlwZW9mIG59LmB9KSxUeXBlRXJyb3IpLHAoXCJFUlJfTUlTU0lOR19BUkdTXCIsKCguLi5lKT0+e2xldCB0O2YoZS5sZW5ndGg+MCxcIkF0IGxlYXN0IG9uZSBhcmcgbmVlZHMgdG8gYmUgc3BlY2lmaWVkXCIpO2NvbnN0IG49ZS5sZW5ndGg7c3dpdGNoKGU9KEFycmF5LmlzQXJyYXkoZSk/ZTpbZV0pLm1hcCgoZT0+YFwiJHtlfVwiYCkpLmpvaW4oXCIgb3IgXCIpLG4pe2Nhc2UgMTp0Kz1gVGhlICR7ZVswXX0gYXJndW1lbnRgO2JyZWFrO2Nhc2UgMjp0Kz1gVGhlICR7ZVswXX0gYW5kICR7ZVsxXX0gYXJndW1lbnRzYDticmVhaztkZWZhdWx0Ontjb25zdCBuPWUucG9wKCk7dCs9YFRoZSAke2Uuam9pbihcIiwgXCIpfSwgYW5kICR7bn0gYXJndW1lbnRzYH19cmV0dXJuYCR7dH0gbXVzdCBiZSBzcGVjaWZpZWRgfSksVHlwZUVycm9yKSxwKFwiRVJSX09VVF9PRl9SQU5HRVwiLCgoZSx0LG4pPT57bGV0IHI7cmV0dXJuIGYodCwnTWlzc2luZyBcInJhbmdlXCIgYXJndW1lbnQnKSxOdW1iZXIuaXNJbnRlZ2VyKG4pJiZNYXRoLmFicyhuKT4yKiozMj9yPWQoU3RyaW5nKG4pKTpcImJpZ2ludFwiPT10eXBlb2Ygbj8ocj1TdHJpbmcobiksKG4+Mm4qKjMybnx8bjwtKDJuKiozMm4pKSYmKHI9ZChyKSkscis9XCJuXCIpOnI9byhuKSxgVGhlIHZhbHVlIG9mIFwiJHtlfVwiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSAke3R9LiBSZWNlaXZlZCAke3J9YH0pLFJhbmdlRXJyb3IpLHAoXCJFUlJfTVVMVElQTEVfQ0FMTEJBQ0tcIixcIkNhbGxiYWNrIGNhbGxlZCBtdWx0aXBsZSB0aW1lc1wiLEVycm9yKSxwKFwiRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URURcIixcIlRoZSAlcyBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkXCIsRXJyb3IpLHAoXCJFUlJfU1RSRUFNX0FMUkVBRFlfRklOSVNIRURcIixcIkNhbm5vdCBjYWxsICVzIGFmdGVyIGEgc3RyZWFtIHdhcyBmaW5pc2hlZFwiLEVycm9yKSxwKFwiRVJSX1NUUkVBTV9DQU5OT1RfUElQRVwiLFwiQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZVwiLEVycm9yKSxwKFwiRVJSX1NUUkVBTV9ERVNUUk9ZRURcIixcIkNhbm5vdCBjYWxsICVzIGFmdGVyIGEgc3RyZWFtIHdhcyBkZXN0cm95ZWRcIixFcnJvcikscChcIkVSUl9TVFJFQU1fTlVMTF9WQUxVRVNcIixcIk1heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtXCIsVHlwZUVycm9yKSxwKFwiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0VcIixcIlByZW1hdHVyZSBjbG9zZVwiLEVycm9yKSxwKFwiRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRlwiLFwic3RyZWFtLnB1c2goKSBhZnRlciBFT0ZcIixFcnJvcikscChcIkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlRcIixcInN0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50XCIsRXJyb3IpLHAoXCJFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORFwiLFwid3JpdGUgYWZ0ZXIgZW5kXCIsRXJyb3IpLHAoXCJFUlJfVU5LTk9XTl9FTkNPRElOR1wiLFwiVW5rbm93biBlbmNvZGluZzogJXNcIixUeXBlRXJyb3IpLGUuZXhwb3J0cz17QWJvcnRFcnJvcjp2LGFnZ3JlZ2F0ZVR3b0Vycm9yczpoKChmdW5jdGlvbihlLHQpe2lmKGUmJnQmJmUhPT10KXtpZihBcnJheS5pc0FycmF5KHQuZXJyb3JzKSlyZXR1cm4gdC5lcnJvcnMucHVzaChlKSx0O2NvbnN0IG49bmV3IGEoW3QsZV0sdC5tZXNzYWdlKTtyZXR1cm4gbi5jb2RlPXQuY29kZSxufXJldHVybiBlfHx0fSkpLGhpZGVTdGFja0ZyYW1lczpoLGNvZGVzOnV9fSwxOTE6ZT0+e2UuZXhwb3J0cz17QXJyYXlJc0FycmF5OmU9PkFycmF5LmlzQXJyYXkoZSksQXJyYXlQcm90b3R5cGVJbmNsdWRlczooZSx0KT0+ZS5pbmNsdWRlcyh0KSxBcnJheVByb3RvdHlwZUluZGV4T2Y6KGUsdCk9PmUuaW5kZXhPZih0KSxBcnJheVByb3RvdHlwZUpvaW46KGUsdCk9PmUuam9pbih0KSxBcnJheVByb3RvdHlwZU1hcDooZSx0KT0+ZS5tYXAodCksQXJyYXlQcm90b3R5cGVQb3A6KGUsdCk9PmUucG9wKHQpLEFycmF5UHJvdG90eXBlUHVzaDooZSx0KT0+ZS5wdXNoKHQpLEFycmF5UHJvdG90eXBlU2xpY2U6KGUsdCxuKT0+ZS5zbGljZSh0LG4pLEVycm9yLEZ1bmN0aW9uUHJvdG90eXBlQ2FsbDooZSx0LC4uLm4pPT5lLmNhbGwodCwuLi5uKSxGdW5jdGlvblByb3RvdHlwZVN5bWJvbEhhc0luc3RhbmNlOihlLHQpPT5GdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXS5jYWxsKGUsdCksTWF0aEZsb29yOk1hdGguZmxvb3IsTnVtYmVyLE51bWJlcklzSW50ZWdlcjpOdW1iZXIuaXNJbnRlZ2VyLE51bWJlcklzTmFOOk51bWJlci5pc05hTixOdW1iZXJNQVhfU0FGRV9JTlRFR0VSOk51bWJlci5NQVhfU0FGRV9JTlRFR0VSLE51bWJlck1JTl9TQUZFX0lOVEVHRVI6TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsTnVtYmVyUGFyc2VJbnQ6TnVtYmVyLnBhcnNlSW50LE9iamVjdERlZmluZVByb3BlcnRpZXM6KGUsdCk9Pk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsdCksT2JqZWN0RGVmaW5lUHJvcGVydHk6KGUsdCxuKT0+T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxuKSxPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6KGUsdCk9Pk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KSxPYmplY3RLZXlzOmU9Pk9iamVjdC5rZXlzKGUpLE9iamVjdFNldFByb3RvdHlwZU9mOihlLHQpPT5PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KSxQcm9taXNlLFByb21pc2VQcm90b3R5cGVDYXRjaDooZSx0KT0+ZS5jYXRjaCh0KSxQcm9taXNlUHJvdG90eXBlVGhlbjooZSx0LG4pPT5lLnRoZW4odCxuKSxQcm9taXNlUmVqZWN0OmU9PlByb21pc2UucmVqZWN0KGUpLFJlZmxlY3RBcHBseTpSZWZsZWN0LmFwcGx5LFJlZ0V4cFByb3RvdHlwZVRlc3Q6KGUsdCk9PmUudGVzdCh0KSxTYWZlU2V0OlNldCxTdHJpbmcsU3RyaW5nUHJvdG90eXBlU2xpY2U6KGUsdCxuKT0+ZS5zbGljZSh0LG4pLFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlOmU9PmUudG9Mb3dlckNhc2UoKSxTdHJpbmdQcm90b3R5cGVUb1VwcGVyQ2FzZTplPT5lLnRvVXBwZXJDYXNlKCksU3RyaW5nUHJvdG90eXBlVHJpbTplPT5lLnRyaW0oKSxTeW1ib2wsU3ltYm9sRm9yOlN5bWJvbC5mb3IsU3ltYm9sQXN5bmNJdGVyYXRvcjpTeW1ib2wuYXN5bmNJdGVyYXRvcixTeW1ib2xIYXNJbnN0YW5jZTpTeW1ib2wuaGFzSW5zdGFuY2UsU3ltYm9sSXRlcmF0b3I6U3ltYm9sLml0ZXJhdG9yLFR5cGVkQXJyYXlQcm90b3R5cGVTZXQ6KGUsdCxuKT0+ZS5zZXQodCxuKSxVaW50OEFycmF5fX0sNzc1OihlLHQsbik9Pntjb25zdCByPW4oNDg1KSxvPU9iamVjdC5nZXRQcm90b3R5cGVPZigoYXN5bmMgZnVuY3Rpb24oKXt9KSkuY29uc3RydWN0b3IsaT1nbG9iYWxUaGlzLkJsb2J8fHIuQmxvYixhPXZvaWQgMCE9PWk/ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBpfTpmdW5jdGlvbihlKXtyZXR1cm4hMX07Y2xhc3MgbCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUpe2lmKCFBcnJheS5pc0FycmF5KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCBpbnB1dCB0byBiZSBhbiBBcnJheSwgZ290IFwiK3R5cGVvZiBlKTtsZXQgdD1cIlwiO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXQrPWAgICAgJHtlW25dLnN0YWNrfVxcbmA7c3VwZXIodCksdGhpcy5uYW1lPVwiQWdncmVnYXRlRXJyb3JcIix0aGlzLmVycm9ycz1lfX1lLmV4cG9ydHM9e0FnZ3JlZ2F0ZUVycm9yOmwsa0VtcHR5T2JqZWN0Ok9iamVjdC5mcmVlemUoe30pLG9uY2UoZSl7bGV0IHQ9ITE7cmV0dXJuIGZ1bmN0aW9uKC4uLm4pe3R8fCh0PSEwLGUuYXBwbHkodGhpcyxuKSl9fSxjcmVhdGVEZWZlcnJlZFByb21pc2U6ZnVuY3Rpb24oKXtsZXQgZSx0O3JldHVybntwcm9taXNlOm5ldyBQcm9taXNlKCgobixyKT0+e2U9bix0PXJ9KSkscmVzb2x2ZTplLHJlamVjdDp0fX0scHJvbWlzaWZ5OmU9Pm5ldyBQcm9taXNlKCgodCxuKT0+e2UoKChlLC4uLnIpPT5lP24oZSk6dCguLi5yKSkpfSkpLGRlYnVnbG9nOigpPT5mdW5jdGlvbigpe30sZm9ybWF0OihlLC4uLnQpPT5lLnJlcGxhY2UoLyUoW3NkaWZqXSkvZywoZnVuY3Rpb24oLi4uW2Usbl0pe2NvbnN0IHI9dC5zaGlmdCgpO3JldHVyblwiZlwiPT09bj9yLnRvRml4ZWQoNik6XCJqXCI9PT1uP0pTT04uc3RyaW5naWZ5KHIpOlwic1wiPT09biYmXCJvYmplY3RcIj09dHlwZW9mIHI/YCR7ci5jb25zdHJ1Y3RvciE9PU9iamVjdD9yLmNvbnN0cnVjdG9yLm5hbWU6XCJcIn0ge31gLnRyaW0oKTpyLnRvU3RyaW5nKCl9KSksaW5zcGVjdChlKXtzd2l0Y2godHlwZW9mIGUpe2Nhc2VcInN0cmluZ1wiOmlmKGUuaW5jbHVkZXMoXCInXCIpKXtpZighZS5pbmNsdWRlcygnXCInKSlyZXR1cm5gXCIke2V9XCJgO2lmKCFlLmluY2x1ZGVzKFwiYFwiKSYmIWUuaW5jbHVkZXMoXCIke1wiKSlyZXR1cm5gXFxgJHtlfVxcYGB9cmV0dXJuYCcke2V9J2A7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIGlzTmFOKGUpP1wiTmFOXCI6T2JqZWN0LmlzKGUsLTApP1N0cmluZyhlKTplO2Nhc2VcImJpZ2ludFwiOnJldHVybmAke1N0cmluZyhlKX1uYDtjYXNlXCJib29sZWFuXCI6Y2FzZVwidW5kZWZpbmVkXCI6cmV0dXJuIFN0cmluZyhlKTtjYXNlXCJvYmplY3RcIjpyZXR1cm5cInt9XCJ9fSx0eXBlczp7aXNBc3luY0Z1bmN0aW9uOmU9PmUgaW5zdGFuY2VvZiBvLGlzQXJyYXlCdWZmZXJWaWV3OmU9PkFycmF5QnVmZmVyLmlzVmlldyhlKX0saXNCbG9iOmF9LGUuZXhwb3J0cy5wcm9taXNpZnkuY3VzdG9tPVN5bWJvbC5mb3IoXCJub2RlanMudXRpbC5wcm9taXNpZnkuY3VzdG9tXCIpfSwyOTI6KGUsdCxuKT0+e2NvbnN0e0J1ZmZlcjpyfT1uKDQ4NSkse09iamVjdERlZmluZVByb3BlcnR5Om8sT2JqZWN0S2V5czppLFJlZmxlY3RBcHBseTphfT1uKDE5MSkse3Byb21pc2lmeTp7Y3VzdG9tOmx9fT1uKDc3NSkse3N0cmVhbVJldHVybmluZ09wZXJhdG9yczpzLHByb21pc2VSZXR1cm5pbmdPcGVyYXRvcnM6Y309big1NTQpLHtjb2Rlczp7RVJSX0lMTEVHQUxfQ09OU1RSVUNUT1I6dX19PW4oMTQxKSxmPW4oODE4KSx7cGlwZWxpbmU6ZH09big3NTQpLHtkZXN0cm95ZXI6cH09bigyMzApLGg9big4Niksdj1uKDc2MCksZz1uKDEzMiksQz1lLmV4cG9ydHM9bigyMDApLlN0cmVhbTtDLmlzRGlzdHVyYmVkPWcuaXNEaXN0dXJiZWQsQy5pc0Vycm9yZWQ9Zy5pc0Vycm9yZWQsQy5pc1JlYWRhYmxlPWcuaXNSZWFkYWJsZSxDLlJlYWRhYmxlPW4oODU4KTtmb3IoY29uc3QgeSBvZiBpKHMpKXtjb25zdCB3PXNbeV07ZnVuY3Rpb24gYiguLi5lKXtpZihuZXcudGFyZ2V0KXRocm93IHUoKTtyZXR1cm4gQy5SZWFkYWJsZS5mcm9tKGEodyx0aGlzLGUpKX1vKGIsXCJuYW1lXCIse19fcHJvdG9fXzpudWxsLHZhbHVlOncubmFtZX0pLG8oYixcImxlbmd0aFwiLHtfX3Byb3RvX186bnVsbCx2YWx1ZTp3Lmxlbmd0aH0pLG8oQy5SZWFkYWJsZS5wcm90b3R5cGUseSx7X19wcm90b19fOm51bGwsdmFsdWU6YixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pfWZvcihjb25zdCB4IG9mIGkoYykpe2NvbnN0IF89Y1t4XTtmdW5jdGlvbiBMKC4uLmUpe2lmKG5ldy50YXJnZXQpdGhyb3cgdSgpO3JldHVybiBhKF8sdGhpcyxlKX1vKEwsXCJuYW1lXCIse19fcHJvdG9fXzpudWxsLHZhbHVlOl8ubmFtZX0pLG8oTCxcImxlbmd0aFwiLHtfX3Byb3RvX186bnVsbCx2YWx1ZTpfLmxlbmd0aH0pLG8oQy5SZWFkYWJsZS5wcm90b3R5cGUseCx7X19wcm90b19fOm51bGwsdmFsdWU6TCxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pfUMuV3JpdGFibGU9bigzNzMpLEMuRHVwbGV4PW4oMTgyKSxDLlRyYW5zZm9ybT1uKDIxMCksQy5QYXNzVGhyb3VnaD1uKDQ2NyksQy5waXBlbGluZT1kO2NvbnN0e2FkZEFib3J0U2lnbmFsOm19PW4oMzc0KTtDLmFkZEFib3J0U2lnbmFsPW0sQy5maW5pc2hlZD1oLEMuZGVzdHJveT1wLEMuY29tcG9zZT1mLG8oQyxcInByb21pc2VzXCIse19fcHJvdG9fXzpudWxsLGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDooKT0+dn0pLG8oZCxsLHtfX3Byb3RvX186bnVsbCxlbnVtZXJhYmxlOiEwLGdldDooKT0+di5waXBlbGluZX0pLG8oaCxsLHtfX3Byb3RvX186bnVsbCxlbnVtZXJhYmxlOiEwLGdldDooKT0+di5maW5pc2hlZH0pLEMuU3RyZWFtPUMsQy5faXNVaW50OEFycmF5PWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgVWludDhBcnJheX0sQy5fdWludDhBcnJheVRvQnVmZmVyPWZ1bmN0aW9uKGUpe3JldHVybiByLmZyb20oZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCl9fSw3NjA6KGUsdCxuKT0+e2NvbnN0e0FycmF5UHJvdG90eXBlUG9wOnIsUHJvbWlzZTpvfT1uKDE5MSkse2lzSXRlcmFibGU6aSxpc05vZGVTdHJlYW06YSxpc1dlYlN0cmVhbTpsfT1uKDEzMikse3BpcGVsaW5lSW1wbDpzfT1uKDc1NCkse2ZpbmlzaGVkOmN9PW4oODYpO24oOTEpLGUuZXhwb3J0cz17ZmluaXNoZWQ6YyxwaXBlbGluZTpmdW5jdGlvbiguLi5lKXtyZXR1cm4gbmV3IG8oKCh0LG4pPT57bGV0IG8sYztjb25zdCB1PWVbZS5sZW5ndGgtMV07aWYodSYmXCJvYmplY3RcIj09dHlwZW9mIHUmJiFhKHUpJiYhaSh1KSYmIWwodSkpe2NvbnN0IHQ9cihlKTtvPXQuc2lnbmFsLGM9dC5lbmR9cyhlLCgoZSxyKT0+e2U/bihlKTp0KHIpfSkse3NpZ25hbDpvLGVuZDpjfSl9KSl9fX0sNTMzOmU9Pnt2YXIgdCxuLHI9ZS5leHBvcnRzPXt9O2Z1bmN0aW9uIG8oKXt0aHJvdyBuZXcgRXJyb3IoXCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkXCIpfWZ1bmN0aW9uIGkoKXt0aHJvdyBuZXcgRXJyb3IoXCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWRcIil9ZnVuY3Rpb24gYShlKXtpZih0PT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKCh0PT09b3x8IXQpJiZzZXRUaW1lb3V0KXJldHVybiB0PXNldFRpbWVvdXQsc2V0VGltZW91dChlLDApO3RyeXtyZXR1cm4gdChlLDApfWNhdGNoKG4pe3RyeXtyZXR1cm4gdC5jYWxsKG51bGwsZSwwKX1jYXRjaChuKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSwwKX19fSFmdW5jdGlvbigpe3RyeXt0PVwiZnVuY3Rpb25cIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpvfWNhdGNoKGUpe3Q9b310cnl7bj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0Oml9Y2F0Y2goZSl7bj1pfX0oKTt2YXIgbCxzPVtdLGM9ITEsdT0tMTtmdW5jdGlvbiBmKCl7YyYmbCYmKGM9ITEsbC5sZW5ndGg/cz1sLmNvbmNhdChzKTp1PS0xLHMubGVuZ3RoJiZkKCkpfWZ1bmN0aW9uIGQoKXtpZighYyl7dmFyIGU9YShmKTtjPSEwO2Zvcih2YXIgdD1zLmxlbmd0aDt0Oyl7Zm9yKGw9cyxzPVtdOysrdTx0OylsJiZsW3VdLnJ1bigpO3U9LTEsdD1zLmxlbmd0aH1sPW51bGwsYz0hMSxmdW5jdGlvbihlKXtpZihuPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQoZSk7aWYoKG49PT1pfHwhbikmJmNsZWFyVGltZW91dClyZXR1cm4gbj1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGUpO3RyeXtyZXR1cm4gbihlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIG4uY2FsbChudWxsLGUpfWNhdGNoKHQpe3JldHVybiBuLmNhbGwodGhpcyxlKX19fShlKX19ZnVuY3Rpb24gcChlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fWZ1bmN0aW9uIGgoKXt9ci5uZXh0VGljaz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3MucHVzaChuZXcgcChlLHQpKSwxIT09cy5sZW5ndGh8fGN8fGEoZCl9LHAucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LHIudGl0bGU9XCJicm93c2VyXCIsci5icm93c2VyPSEwLHIuZW52PXt9LHIuYXJndj1bXSxyLnZlcnNpb249XCJcIixyLnZlcnNpb25zPXt9LHIub249aCxyLmFkZExpc3RlbmVyPWgsci5vbmNlPWgsci5vZmY9aCxyLnJlbW92ZUxpc3RlbmVyPWgsci5yZW1vdmVBbGxMaXN0ZW5lcnM9aCxyLmVtaXQ9aCxyLnByZXBlbmRMaXN0ZW5lcj1oLHIucHJlcGVuZE9uY2VMaXN0ZW5lcj1oLHIubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybltdfSxyLmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWRcIil9LHIuY3dkPWZ1bmN0aW9uKCl7cmV0dXJuXCIvXCJ9LHIuY2hkaXI9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkXCIpfSxyLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSwzNzc6KGUsdCxuKT0+e3ZhciByPW4oNDg1KSxvPXIuQnVmZmVyO2Z1bmN0aW9uIGkoZSx0KXtmb3IodmFyIG4gaW4gZSl0W25dPWVbbl19ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIG8oZSx0LG4pfW8uZnJvbSYmby5hbGxvYyYmby5hbGxvY1Vuc2FmZSYmby5hbGxvY1Vuc2FmZVNsb3c/ZS5leHBvcnRzPXI6KGkocix0KSx0LkJ1ZmZlcj1hKSxpKG8sYSksYS5mcm9tPWZ1bmN0aW9uKGUsdCxuKXtpZihcIm51bWJlclwiPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXJcIik7cmV0dXJuIG8oZSx0LG4pfSxhLmFsbG9jPWZ1bmN0aW9uKGUsdCxuKXtpZihcIm51bWJlclwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwiKTt2YXIgcj1vKGUpO3JldHVybiB2b2lkIDAhPT10P1wic3RyaW5nXCI9PXR5cGVvZiBuP3IuZmlsbCh0LG4pOnIuZmlsbCh0KTpyLmZpbGwoMCkscn0sYS5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtpZihcIm51bWJlclwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwiKTtyZXR1cm4gbyhlKX0sYS5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXJcIik7cmV0dXJuIHIuU2xvd0J1ZmZlcihlKX19LDQ2NDooZSx0LG4pPT57dmFyIHI9bigzNzcpLkJ1ZmZlcixvPXIuaXNFbmNvZGluZ3x8ZnVuY3Rpb24oZSl7c3dpdGNoKChlPVwiXCIrZSkmJmUudG9Mb3dlckNhc2UoKSl7Y2FzZVwiaGV4XCI6Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6Y2FzZVwiYXNjaWlcIjpjYXNlXCJiaW5hcnlcIjpjYXNlXCJiYXNlNjRcIjpjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpjYXNlXCJyYXdcIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX07ZnVuY3Rpb24gaShlKXt2YXIgdDtzd2l0Y2godGhpcy5lbmNvZGluZz1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlKXtpZighZSlyZXR1cm5cInV0ZjhcIjtmb3IodmFyIHQ7Oylzd2l0Y2goZSl7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cmV0dXJuXCJ1dGY4XCI7Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6cmV0dXJuXCJ1dGYxNmxlXCI7Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuXCJsYXRpbjFcIjtjYXNlXCJiYXNlNjRcIjpjYXNlXCJhc2NpaVwiOmNhc2VcImhleFwiOnJldHVybiBlO2RlZmF1bHQ6aWYodClyZXR1cm47ZT0oXCJcIitlKS50b0xvd2VyQ2FzZSgpLHQ9ITB9fShlKTtpZihcInN0cmluZ1wiIT10eXBlb2YgdCYmKHIuaXNFbmNvZGluZz09PW98fCFvKGUpKSl0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIitlKTtyZXR1cm4gdHx8ZX0oZSksdGhpcy5lbmNvZGluZyl7Y2FzZVwidXRmMTZsZVwiOnRoaXMudGV4dD1zLHRoaXMuZW5kPWMsdD00O2JyZWFrO2Nhc2VcInV0ZjhcIjp0aGlzLmZpbGxMYXN0PWwsdD00O2JyZWFrO2Nhc2VcImJhc2U2NFwiOnRoaXMudGV4dD11LHRoaXMuZW5kPWYsdD0zO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHRoaXMud3JpdGU9ZCx2b2lkKHRoaXMuZW5kPXApfXRoaXMubGFzdE5lZWQ9MCx0aGlzLmxhc3RUb3RhbD0wLHRoaXMubGFzdENoYXI9ci5hbGxvY1Vuc2FmZSh0KX1mdW5jdGlvbiBhKGUpe3JldHVybiBlPD0xMjc/MDplPj41PT02PzI6ZT4+ND09MTQ/MzplPj4zPT0zMD80OmU+PjY9PTI/LTE6LTJ9ZnVuY3Rpb24gbChlKXt2YXIgdD10aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLG49ZnVuY3Rpb24oZSx0LG4pe2lmKDEyOCE9KDE5MiZ0WzBdKSlyZXR1cm4gZS5sYXN0TmVlZD0wLFwi77+9XCI7aWYoZS5sYXN0TmVlZD4xJiZ0Lmxlbmd0aD4xKXtpZigxMjghPSgxOTImdFsxXSkpcmV0dXJuIGUubGFzdE5lZWQ9MSxcIu+/vVwiO2lmKGUubGFzdE5lZWQ+MiYmdC5sZW5ndGg+MiYmMTI4IT0oMTkyJnRbMl0pKXJldHVybiBlLmxhc3ROZWVkPTIsXCLvv71cIn19KHRoaXMsZSk7cmV0dXJuIHZvaWQgMCE9PW4/bjp0aGlzLmxhc3ROZWVkPD1lLmxlbmd0aD8oZS5jb3B5KHRoaXMubGFzdENoYXIsdCwwLHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKSk6KGUuY29weSh0aGlzLmxhc3RDaGFyLHQsMCxlLmxlbmd0aCksdm9pZCh0aGlzLmxhc3ROZWVkLT1lLmxlbmd0aCkpfWZ1bmN0aW9uIHMoZSx0KXtpZigoZS5sZW5ndGgtdCklMj09MCl7dmFyIG49ZS50b1N0cmluZyhcInV0ZjE2bGVcIix0KTtpZihuKXt2YXIgcj1uLmNoYXJDb2RlQXQobi5sZW5ndGgtMSk7aWYocj49NTUyOTYmJnI8PTU2MzE5KXJldHVybiB0aGlzLmxhc3ROZWVkPTIsdGhpcy5sYXN0VG90YWw9NCx0aGlzLmxhc3RDaGFyWzBdPWVbZS5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT1lW2UubGVuZ3RoLTFdLG4uc2xpY2UoMCwtMSl9cmV0dXJuIG59cmV0dXJuIHRoaXMubGFzdE5lZWQ9MSx0aGlzLmxhc3RUb3RhbD0yLHRoaXMubGFzdENoYXJbMF09ZVtlLmxlbmd0aC0xXSxlLnRvU3RyaW5nKFwidXRmMTZsZVwiLHQsZS5sZW5ndGgtMSl9ZnVuY3Rpb24gYyhlKXt2YXIgdD1lJiZlLmxlbmd0aD90aGlzLndyaXRlKGUpOlwiXCI7aWYodGhpcy5sYXN0TmVlZCl7dmFyIG49dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZDtyZXR1cm4gdCt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKFwidXRmMTZsZVwiLDAsbil9cmV0dXJuIHR9ZnVuY3Rpb24gdShlLHQpe3ZhciBuPShlLmxlbmd0aC10KSUzO3JldHVybiAwPT09bj9lLnRvU3RyaW5nKFwiYmFzZTY0XCIsdCk6KHRoaXMubGFzdE5lZWQ9My1uLHRoaXMubGFzdFRvdGFsPTMsMT09PW4/dGhpcy5sYXN0Q2hhclswXT1lW2UubGVuZ3RoLTFdOih0aGlzLmxhc3RDaGFyWzBdPWVbZS5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT1lW2UubGVuZ3RoLTFdKSxlLnRvU3RyaW5nKFwiYmFzZTY0XCIsdCxlLmxlbmd0aC1uKSl9ZnVuY3Rpb24gZihlKXt2YXIgdD1lJiZlLmxlbmd0aD90aGlzLndyaXRlKGUpOlwiXCI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/dCt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKFwiYmFzZTY0XCIsMCwzLXRoaXMubGFzdE5lZWQpOnR9ZnVuY3Rpb24gZChlKXtyZXR1cm4gZS50b1N0cmluZyh0aGlzLmVuY29kaW5nKX1mdW5jdGlvbiBwKGUpe3JldHVybiBlJiZlLmxlbmd0aD90aGlzLndyaXRlKGUpOlwiXCJ9dC5TdHJpbmdEZWNvZGVyPWksaS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7aWYoMD09PWUubGVuZ3RoKXJldHVyblwiXCI7dmFyIHQsbjtpZih0aGlzLmxhc3ROZWVkKXtpZih2b2lkIDA9PT0odD10aGlzLmZpbGxMYXN0KGUpKSlyZXR1cm5cIlwiO249dGhpcy5sYXN0TmVlZCx0aGlzLmxhc3ROZWVkPTB9ZWxzZSBuPTA7cmV0dXJuIG48ZS5sZW5ndGg/dD90K3RoaXMudGV4dChlLG4pOnRoaXMudGV4dChlLG4pOnR8fFwiXCJ9LGkucHJvdG90eXBlLmVuZD1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLmxlbmd0aD90aGlzLndyaXRlKGUpOlwiXCI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/dCtcIu+/vVwiOnR9LGkucHJvdG90eXBlLnRleHQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dC5sZW5ndGgtMTtpZihyPG4pcmV0dXJuIDA7dmFyIG89YSh0W3JdKTtyZXR1cm4gbz49MD8obz4wJiYoZS5sYXN0TmVlZD1vLTEpLG8pOi0tcjxufHwtMj09PW8/MDoobz1hKHRbcl0pKT49MD8obz4wJiYoZS5sYXN0TmVlZD1vLTIpLG8pOi0tcjxufHwtMj09PW8/MDoobz1hKHRbcl0pKT49MD8obz4wJiYoMj09PW8/bz0wOmUubGFzdE5lZWQ9by0zKSxvKTowfSh0aGlzLGUsdCk7aWYoIXRoaXMubGFzdE5lZWQpcmV0dXJuIGUudG9TdHJpbmcoXCJ1dGY4XCIsdCk7dGhpcy5sYXN0VG90YWw9bjt2YXIgcj1lLmxlbmd0aC0obi10aGlzLmxhc3ROZWVkKTtyZXR1cm4gZS5jb3B5KHRoaXMubGFzdENoYXIsMCxyKSxlLnRvU3RyaW5nKFwidXRmOFwiLHQscil9LGkucHJvdG90eXBlLmZpbGxMYXN0PWZ1bmN0aW9uKGUpe2lmKHRoaXMubGFzdE5lZWQ8PWUubGVuZ3RoKXJldHVybiBlLmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAsdGhpcy5sYXN0TmVlZCksdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsdGhpcy5sYXN0VG90YWwpO2UuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCxlLmxlbmd0aCksdGhpcy5sYXN0TmVlZC09ZS5sZW5ndGh9fSw1NDooZSx0LG4pPT57bi5kKHQse01TOigpPT5rLGNGOigpPT5SLEFLOigpPT5QLE1fOigpPT5BLGNYOigpPT5JLEJUOigpPT5yZSxfVzooKT0+SCxQZzooKT0+aGUsJGo6KCk9PnRlLFUkOigpPT5GLFU3OigpPT5OfSk7dmFyIHI9e2Q6KGUsdCk9Pntmb3IodmFyIG4gaW4gdClyLm8odCxuKSYmIXIubyhlLG4pJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHtlbnVtZXJhYmxlOiEwLGdldDp0W25dfSl9LG86KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxvPXt9O3IuZChvLHtNUzooKT0+aSxjRjooKT0+YSxBSzooKT0+cyxNXzooKT0+bCxjWDooKT0+YyxZZDooKT0+ZyxuajooKT0+dSxPNDooKT0+aixfVzooKT0+ZixVJDooKT0+cCxVNzooKT0+aH0pO2NsYXNzIGkgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHQpe3ZhciBuLHI7c3VwZXIoZT1udWxsIT09KG49bnVsbCE9ZT9lOm51bGw9PXQ/dm9pZCAwOnQubWVzc2FnZSkmJnZvaWQgMCE9PW4/bjpcIkFuIHVuZXhwZWN0ZWQgZXJyb3IgaGFzIG9jY3VycmVkXCIpLHRoaXMubmFtZT10aGlzLmNvbnN0cnVjdG9yLm5hbWUsdGhpcy5zdGFjaz0oZT90aGlzLnN0YWNrOm51bGwhPT0ocj1udWxsPT10P3ZvaWQgMDp0LnN0YWNrKSYmdm9pZCAwIT09cj9yOnRoaXMuc3RhY2spLnJlcGxhY2UoL14oXFx3KkVycm9yKS8sYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfWApfX1jbGFzcyBhIGV4dGVuZHMgaXtjb25zdHJ1Y3RvcihlLHQsbil7dmFyIHI7c3VwZXIoZT1udWxsIT09KHI9bnVsbCE9ZT9lOm51bGw9PW4/dm9pZCAwOm4ubWVzc2FnZSkmJnZvaWQgMCE9PXI/cjpcIkFuIGVycm9yIG9jY3VycmVkIHdoZW4gZXhlY3V0aW5nIHRoZSBBUEkgcmVxdWVzdFwiLG4pLHRoaXMuc3RhdHVzPXR9fWNsYXNzIGwgZXh0ZW5kcyBpe2NvbnN0cnVjdG9yKGUsdCl7dmFyIG47c3VwZXIoZT1udWxsIT09KG49bnVsbCE9ZT9lOm51bGw9PXQ/dm9pZCAwOnQubWVzc2FnZSkmJnZvaWQgMCE9PW4/bjpcIkFuIGF1dGhvcml6YXRpb24gZXJyb3Igb2NjdXJyZWRcIix0KX19Y2xhc3MgcyBleHRlbmRzIGl7Y29uc3RydWN0b3IoZSx0KXt2YXIgbjtzdXBlcihlPW51bGwhPT0obj1udWxsIT1lP2U6bnVsbD09dD92b2lkIDA6dC5tZXNzYWdlKSYmdm9pZCAwIT09bj9uOlwiVGhlIEFQSSByZXF1ZXN0IGZhaWxlZCBhcyB0aGUgYXV0aG9yaXphdGlvbiB0b2tlbnMgaGF2ZSBleHBpcmVkXCIsdCl9fWNsYXNzIGMgZXh0ZW5kcyBpe2NvbnN0cnVjdG9yKGUsdCl7dmFyIG47c3VwZXIoZT1udWxsIT09KG49bnVsbCE9ZT9lOm51bGw9PXQ/dm9pZCAwOnQubWVzc2FnZSkmJnZvaWQgMCE9PW4/bjpcIkFuIGluaXRpYWxpemF0aW9uIGVycm9yIG9jY3VycmVkXCIsdCl9fWNsYXNzIHUgZXh0ZW5kcyBpe2NvbnN0cnVjdG9yKGUsdCl7dmFyIG47c3VwZXIoZT1udWxsIT09KG49bnVsbCE9ZT9lOm51bGw9PXQ/dm9pZCAwOnQubWVzc2FnZSkmJnZvaWQgMCE9PW4/bjpcIlRoZSBtZXRob2QgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkXCIsdCl9fWNsYXNzIGYgZXh0ZW5kcyBpe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGU9bnVsbCE9ZT9lOlwiSW52YWxpZCBwYXJhbWV0ZXIgZGV0ZWN0ZWRcIil9fWNvbnN0IGQ9ZT0+e2xldCB0PWZpbi5JbnRlZ3JhdGlvbnM7dHx8KGZpbi5JbnRlZ3JhdGlvbnM9e30sdD1maW4uSW50ZWdyYXRpb25zKTtsZXQgbj10W2VdO3JldHVybiBufHwodFtlXT17fSxuPXRbZV0pLG59LHA9ZT0+e2QoZSkubG9nZ2luZ0VuYWJsZWQ9ITF9LGg9KGUsdD1cIjAuMC4wXCIpPT57ZChlKS5sb2dnaW5nRW5hYmxlZD0hMCx2KGUpfSx2PWU9PmBbQG9wZW5maW4vJHtlLnRvTG93ZXJDYXNlKCl9XWA7Y2xhc3MgZ3tjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZSx0aGlzLnByZWZpeD12KGUpLHRoaXMuaXNMb2dnaW5nRW5hYmxlZD10aGlzLmlzTG9nZ2luZ0VuYWJsZWQuYmluZCh0aGlzKSx0aGlzLmxvZ0Vycm9yPXRoaXMubG9nRXJyb3IuYmluZCh0aGlzKSx0aGlzLmxvZ0luZm89dGhpcy5sb2dJbmZvLmJpbmQodGhpcyksdGhpcy5sb2dXYXJuaW5nPXRoaXMubG9nV2FybmluZy5iaW5kKHRoaXMpfWlzTG9nZ2luZ0VuYWJsZWQoKXtyZXR1cm4gZCh0aGlzLm5hbWUpLmxvZ2dpbmdFbmFibGVkfWxvZ0Vycm9yKGUpe3RoaXMuaXNMb2dnaW5nRW5hYmxlZCgpJiYoZS5pbm5lckVycm9yP2NvbnNvbGUuZXJyb3IodGhpcy5wcmVmaXgsZSxcIlxcblxcbihpbm5lcilcIixlLmlubmVyRXJyb3IpOmNvbnNvbGUuZXJyb3IodGhpcy5wcmVmaXgsZSkpfWxvZ0luZm8oLi4uZSl7dGhpcy5pc0xvZ2dpbmdFbmFibGVkKCkmJnRoaXMucHJlZml4fWxvZ1dhcm5pbmcoLi4uZSl7dGhpcy5pc0xvZ2dpbmdFbmFibGVkKCkmJmNvbnNvbGUud2Fybih0aGlzLnByZWZpeCwuLi5lKX19Y29uc3QgQz1cIm9hdXRoLWFwaS1hdXRoLWZsb3dcIixtPShlLHQsbixyLG8sYSxsLHMpPT5hc3luYyBjPT57Y29uc3QgdT1uZXcgVVJMKGMpO2lmKDAhPT11LmhyZWYudG9Mb3dlckNhc2UoKS5pbmRleE9mKG8udG9Mb3dlckNhc2UoKSkpcmV0dXJuITE7aWYod2luZG93LmNsZWFySW50ZXJ2YWwocyksd2luZG93LmNsZWFyVGltZW91dCh0KSx3aW5kb3cuY2xlYXJUaW1lb3V0KG4pLGUucmVtb3ZlQWxsTGlzdGVuZXJzKCksZS5jbG9zZSghMCksdS5zZWFyY2hQYXJhbXMuZ2V0KFwiZXJyb3JcIikpe2NvbnN0IGU9bmV3IGkoXCJBdXRob3JpemF0aW9uIGVycm9yXCIpO3JldHVybiBlLmRhdGE9dS50b1N0cmluZygpLGwoZSksITB9aWYodS5zZWFyY2hQYXJhbXMuZ2V0KFwic3RhdGVcIikhPT1yKXtjb25zdCBlPW5ldyBpKFwiU3RhdGUgbWlzbWF0Y2hcIik7cmV0dXJuIGUuZGF0YT11LnRvU3RyaW5nKCksbChlKSwhMH1jb25zdCBmPXUuc2VhcmNoUGFyYW1zLmdldChcImNvZGVcIik7aWYoIWYpe2NvbnN0IGU9bmV3IGkoXCJBdXRob3JpemF0aW9uIGNvZGUgbWlzc2luZ1wiKTtyZXR1cm4gZS5kYXRhPXUudG9TdHJpbmcoKSxsKGUpLCEwfXJldHVybiBhKGYpLCEwfSx5PShlLHQsbixyKT0+YXN5bmMobyxhKT0+e2xldCBsO2NvbnN0IHM9d2luZG93LnNldFRpbWVvdXQoKCgpPT57d2luZG93LmNsZWFySW50ZXJ2YWwobCksd2luZG93LmNsZWFyVGltZW91dChzKSxlLnJlbW92ZUFsbExpc3RlbmVycygpLGUuY2xvc2UoITApLGEobmV3IGkoXCJBdXRob3JpemF0aW9uIHRpbWVkIG91dFwiKSl9KSwzZTUpO2UuYWRkTGlzdGVuZXIoXCJjbG9zaW5nXCIsKGFzeW5jKCk9PntyLmxvZ0luZm8oXCJVc2VyIGNsb3NlZCBhdXRoIHdpbmRvd1wiKSx3aW5kb3cuY2xlYXJJbnRlcnZhbChsKSx3aW5kb3cuY2xlYXJUaW1lb3V0KHMpLGUucmVtb3ZlQWxsTGlzdGVuZXJzKCksYShuZXcgaShcIkZhaWxlZCB0byBjb21wbGV0ZSBhdXRob3JpemF0aW9uIGNvZGUgZmxvd1wiKSl9KSk7Y29uc3QgYz13aW5kb3cuc2V0VGltZW91dCgoYXN5bmMoKT0+e3RyeXthd2FpdCBlLmlzU2hvd2luZygpfHwoci5sb2dJbmZvKFwiU2hvd2luZyBhdXRoIHdpbmRvd1wiKSxhd2FpdCBlLnNob3coITApLGF3YWl0IGUuZm9jdXMoKSl9Y2F0Y2goZSl7ci5sb2dXYXJuaW5nKFwiVW5hYmxlIHRvIHNob3cgYXV0aCB3aW5kb3dcIil9fSksMmUzKSx7dmVyc2lvbjp1fT1hd2FpdCBmaW4uU3lzdGVtLmdldFJ1bnRpbWVJbmZvKCk7cGFyc2VJbnQodS5zcGxpdChcIi5cIilbMF0sMTApPj0zMD9hd2FpdCBtKGUscyxjLHQsbixvLGEpKChhd2FpdCBlLmdldEluZm8oKSkudXJsKXx8YXdhaXQgZS5hZGRMaXN0ZW5lcihcInVybC1jaGFuZ2VkXCIsKGk9PntyLmxvZ0luZm8oXCJBdXRoIHdpbmRvdyBuYXZpZ2F0ZWQgdG9cIixpLnVybCksbShlLHMsYyx0LG4sbyxhKShpLnVybCl9KSk6bD13aW5kb3cuc2V0SW50ZXJ2YWwoKCgpPT4oYXN5bmMoZSx0LG4scixvLGEsbCxzKT0+e2xldCBjO3RyeXtjPWF3YWl0IGUuZ2V0SW5mbygpfWNhdGNoKGUpe3JldHVybiB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0KSx3aW5kb3cuY2xlYXJUaW1lb3V0KG4pLHdpbmRvdy5jbGVhclRpbWVvdXQocikscyhuZXcgaShcIkNvdWxkIG5vdCBsb2NhdGUgYXV0aCB3aW5kb3dcIikpLCExfXJldHVybiBtKGUsbixyLG8sYSxsLHMsdCkoYy51cmwpfSkoZSxsLHMsYyx0LG4sbyxhKSksNTAwKX0sdz0oKT0+e2xldCBlLHQsbixyO2NvbnN0IG89YXN5bmModCxuPSExKT0+e2NvbnN0e2NvbW1hbmQ6cixkYXRhOmEsaWQ6bH09dCxzPXtjb21tYW5kOnIsaWQ6bH07dHJ5e2lmKCFlKXRocm93IG5ldyBFcnJvcihcIkFjY2VzcyB0b2tlbiBub3QgZm91bmRcIik7Y29uc3R7YXBpUmVxdWVzdFVybDpyLGRhdGE6bCxoZWFkZXJzOmMsaHR0cE1ldGhvZDp1LGluY2x1ZGVBdXRob3JpemF0aW9uOmZ9PWEsZD1hd2FpdChhc3luYyh0LG4scixvLGkpPT57dmFyIGEsbDtjb25zdCBzPU9iamVjdC5hc3NpZ24oe0FjY2VwdDpcImFwcGxpY2F0aW9uL2pzb25cIn0sbyk7XCJQQVRDSFwiIT09biYmXCJQT1NUXCIhPT1uJiZcIlBVVFwiIT09bnx8L2NvbnRlbnQtdHlwZS9pLnRlc3QoT2JqZWN0LmtleXMocykuam9pbihcIixcIikpfHwoc1tcIkNvbnRlbnQtVHlwZVwiXT1cImFwcGxpY2F0aW9uL2pzb25cIiksaSYmKHMuQXV0aG9yaXphdGlvbj1gQmVhcmVyICR7ZX1gKTtjb25zdCBjPWF3YWl0IGZldGNoKHQse2JvZHk6XCJvYmplY3RcIj09dHlwZW9mIHI/SlNPTi5zdHJpbmdpZnkocik6cixoZWFkZXJzOnMsbWV0aG9kOm59KTtpZighYy5vayl7Y29uc3QgZT17bWVzc2FnZTpcIkZhaWxlZCB0byBleGVjdXRlIEFQSSByZXF1ZXN0XCJ9O3JldHVybihudWxsPT09KGE9Yy5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKSl8fHZvaWQgMD09PWE/dm9pZCAwOmEuaW5jbHVkZXMoXCJhcHBsaWNhdGlvbi9qc29uXCIpKSYmKGUuZGF0YT1hd2FpdCBjLmpzb24oKSksW2Muc3RhdHVzLHZvaWQgMCx2b2lkIDAsZV19bGV0IHU7Y29uc3QgZj1udWxsIT09KGw9Yy5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKSkmJnZvaWQgMCE9PWw/bDpcIlwiO3N3aXRjaCghMCl7Y2FzZSFmOmJyZWFrO2Nhc2UvXmFwcGxpY2F0aW9uXFwvKFxcdytcXCspP2pzb24vaS50ZXN0KGYpOnU9YXdhaXQgYy5qc29uKCk7YnJlYWs7Y2FzZS9ebXVsdGlwYXJ0XFwvZm9ybS0/ZGF0YXxeYXBwbGljYXRpb25cXC94LT93d3ctP2Zvcm0tP3VybGVuY29kZWQvaS50ZXN0KGYpOnU9YXdhaXQgYy5mb3JtRGF0YSgpO2JyZWFrO2Nhc2UvXmFwcGxpY2F0aW9uXFwvKChbXi9dKyk/eG1sfHZuZFxcLm9wZW54bWxmb3JtYXRzKXxedGV4dFxcL3xeaW1hZ2VcXC9zdmcvaS50ZXN0KGYpOnU9YXdhaXQgYy50ZXh0KCk7YnJlYWs7ZGVmYXVsdDp1PWF3YWl0IGMuYXJyYXlCdWZmZXIoKX1yZXR1cm5bYy5zdGF0dXMsdSxmLHZvaWQgMF19KShyLHUsbCxjLGYpLFtwLGgsdixnXT1kO2lmKHMuc3RhdHVzPXAsZyl7aWYoIW4mJjQwMT09PXApe2NvbnN0W2Usbl09YXdhaXQgaSgpO3JldHVybiBuPyhzLnN0YXR1cz1lLHMuZXJyb3I9bixzKTphd2FpdCBvKHQsITApfXMuZXJyb3I9Z31lbHNlIGgmJihzLmRhdGE9aCxzLnR5cGU9dil9Y2F0Y2goZSl7ZSBpbnN0YW5jZW9mIEVycm9yP3MuZXJyb3I9e21lc3NhZ2U6ZS5tZXNzYWdlfTpzLmVycm9yPXttZXNzYWdlOlwiRmFpbGVkIHRvIGV4ZWN1dGUgQVBJIHJlcXVlc3RcIn19cmV0dXJuIFByb21pc2UucmVzb2x2ZShzKX0saT1hc3luYygpPT57dmFyIG87aWYoIW4pdGhyb3cgbmV3IEVycm9yKFwiQXV0aG9yaXphdGlvbiBzZXJ2ZXIgbWV0YWRhdGEgbm90IHNldFwiKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoXCJDbGllbnQgSUQgbm90IHNldFwiKTtjb25zdCBpPWBncmFudF90eXBlPXJlZnJlc2hfdG9rZW4mY2xpZW50X2lkPSR7dH0mcmVmcmVzaF90b2tlbj0ke3J9YCxhPWF3YWl0IGZldGNoKG4udG9rZW5fZW5kcG9pbnQse2JvZHk6aSxoZWFkZXJzOntBY2NlcHQ6XCJhcHBsaWNhdGlvbi9qc29uXCIsXCJDb250ZW50LVR5cGVcIjpcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwifSxtZXRob2Q6XCJQT1NUXCJ9KTtpZighYS5vayl7Y29uc3QgZT17bWVzc2FnZTpcIkZhaWxlZCB0byByZWZyZXNoIGFjY2VzcyB0b2tlblwifTtyZXR1cm4obnVsbD09PShvPWEuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIikpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLmluY2x1ZGVzKFwiYXBwbGljYXRpb24vanNvblwiKSkmJihlLmRhdGE9YXdhaXQgYS5qc29uKCkpLFthLnN0YXR1cyxlXX1jb25zdCBsPWF3YWl0IGEuanNvbigpO3JldHVybiBlPWwuYWNjZXNzX3Rva2VuLFthLnN0YXR1c119O3NlbGYub25tZXNzYWdlPWFzeW5jIGk9Pntjb25zdHtjb21tYW5kOmEsaWQ6bH09aS5kYXRhO2xldCBzPXtjb21tYW5kOmEsaWQ6bH07c3dpdGNoKGEpe2Nhc2VcIkFQSV9SRVFVRVNUXCI6cz1hd2FpdCBvKGkuZGF0YSk7YnJlYWs7Y2FzZVwiQ09ERV9FWENIQU5HRVwiOnM9YXdhaXQoYXN5bmMgbz0+e3ZhciBpO2NvbnN0e2NvbW1hbmQ6YSxkYXRhOmwsaWQ6c309byxjPXtjb21tYW5kOmEsaWQ6c307dHJ5e2lmKCFuKXRocm93IG5ldyBFcnJvcihcIkF1dGhvcml6YXRpb24gc2VydmVyIG1ldGFkYXRhIG5vdCBzZXRcIik7aWYoIXQpdGhyb3cgbmV3IEVycm9yKFwiQ2xpZW50IElEIG5vdCBzZXRcIik7Y29uc3R7Y29kZTpvLGNvZGVWZXJpZmllcjphLHJlZGlyZWN0VXJpOnN9PWwsdT1gZ3JhbnRfdHlwZT1hdXRob3JpemF0aW9uX2NvZGUmY2xpZW50X2lkPSR7dH0mY29kZT0ke299JmNvZGVfdmVyaWZpZXI9JHthfSZyZWRpcmVjdF91cmk9JHtzfWAsZj1hd2FpdCBmZXRjaChuLnRva2VuX2VuZHBvaW50LHtib2R5OnUsaGVhZGVyczp7QWNjZXB0OlwiYXBwbGljYXRpb24vanNvblwiLFwiQ29udGVudC1UeXBlXCI6XCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIn0sbWV0aG9kOlwiUE9TVFwifSk7aWYoZi5vayl7Y29uc3QgdD1hd2FpdCBmLmpzb24oKTtlPXQuYWNjZXNzX3Rva2VuLHI9dC5yZWZyZXNoX3Rva2VufWVsc2V7Y29uc3QgZT17bWVzc2FnZTpcIkZhaWxlZCB0byByZXRyaWV2ZSB0b2tlbnNcIn07KG51bGw9PT0oaT1mLmhlYWRlcnMuZ2V0KFwiQ29udGVudC1UeXBlXCIpKXx8dm9pZCAwPT09aT92b2lkIDA6aS5pbmNsdWRlcyhcImFwcGxpY2F0aW9uL2pzb25cIikpJiYoZS5kYXRhPWF3YWl0IGYuanNvbigpKSxjLmVycm9yPWV9fWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBFcnJvcj9jLmVycm9yPXttZXNzYWdlOmUubWVzc2FnZX06Yy5lcnJvcj17bWVzc2FnZTpcIkZhaWxlZCB0byByZXRyaWV2ZSB0b2tlbnNcIn19cmV0dXJuIFByb21pc2UucmVzb2x2ZShjKX0pKGkuZGF0YSk7YnJlYWs7Y2FzZVwiRVhQSVJFX1RPS0VOU1wiOnM9YXdhaXQoYXN5bmMgdD0+e3ZhciBvO2NvbnN0e2NvbW1hbmQ6aSxleHBpcmVBY2Nlc3NUb2tlbk9ubHk6YSxpZDpsfT10LHM9e2NvbW1hbmQ6aSxpZDpsfTt0cnl7aWYoIWEmJiFyKXRocm93IG5ldyBFcnJvcihcIlJlZnJlc2ggdG9rZW4gbm90IGZvdW5kXCIpO2lmKCFuKXRocm93IG5ldyBFcnJvcihcIkF1dGhvcml6YXRpb24gc2VydmVyIG1ldGFkYXRhIG5vdCBzZXRcIik7aWYoIW4ucmV2b2NhdGlvbl9lbmRwb2ludCl0aHJvdyBuZXcgRXJyb3IoXCJSZXZvY2F0aW9uIGVuZHBvaW50IG1pc3NpbmcgaW4gYXV0aG9yaXphdGlvbiBzZXJ2ZXIgbWV0YWRhdGFcIik7Y29uc3QgdD1hP2U6cixpPWF3YWl0IGZldGNoKGAke24ucmV2b2NhdGlvbl9lbmRwb2ludH0/dG9rZW49JHt0fWAse2hlYWRlcnM6e0FjY2VwdDpcImFwcGxpY2F0aW9uL2pzb25cIn19KTtpZighaS5vayl7Y29uc3QgZT17bWVzc2FnZTpcIkZhaWxlZCB0byByZXZva2UgdG9rZW5zXCJ9OyhudWxsPT09KG89aS5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKSl8fHZvaWQgMD09PW8/dm9pZCAwOm8uaW5jbHVkZXMoXCJhcHBsaWNhdGlvbi9qc29uXCIpKSYmKGUuZGF0YT1hd2FpdCBpLmpzb24oKSkscy5lcnJvcj1lfX1jYXRjaChlKXtlIGluc3RhbmNlb2YgRXJyb3I/cy5lcnJvcj17bWVzc2FnZTplLm1lc3NhZ2V9OnMuZXJyb3I9e21lc3NhZ2U6XCJGYWlsZWQgdG8gcmV2b2tlIHRva2Vuc1wifX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHMpfSkoaS5kYXRhKTticmVhaztjYXNlXCJJTklUXCI6cz1hd2FpdChhc3luYyBlPT57Y29uc3R7Y29tbWFuZDpyLGRhdGE6byxpZDppfT1lLGE9e2NvbW1hbmQ6cixpZDppfTtyZXR1cm4gdD1vLmNsaWVudElkLG49by5tZXRhZGF0YSxQcm9taXNlLnJlc29sdmUoYSl9KShpLmRhdGEpO2JyZWFrO2RlZmF1bHQ6cy5lcnJvcj1uZXcgRXJyb3IoYFVuZXhwZWN0ZWQgb2F1dGggd29ya2VyIGNvbW1hbmQ6ICR7YX1gKX1zZWxmLnBvc3RNZXNzYWdlKHMpfX07dmFyIGI7IWZ1bmN0aW9uKGUpe2UuQXBpUmVxdWVzdD1cIkFQSV9SRVFVRVNUXCIsZS5Db2RlRXhjaGFuZ2U9XCJDT0RFX0VYQ0hBTkdFXCIsZS5FeHBpcmVUb2tlbnM9XCJFWFBJUkVfVE9LRU5TXCIsZS5Jbml0PVwiSU5JVFwifShifHwoYj17fSkpO2NvbnN0IHg9W10sXz1lPT57eC5wdXNoKGUpfSxMPShlLHQpPT4obixyLG8pPT5uZXcgUHJvbWlzZSgoKGksYSk9Pntjb25zdCBsPXtjb21tYW5kOmIuQ29kZUV4Y2hhbmdlLGRhdGE6e2NvZGU6bixjb2RlVmVyaWZpZXI6cixyZWRpcmVjdFVyaTpvfSxpZDpEYXRlLm5vdygpLnRvU3RyaW5nKCl9LHtjb21tYW5kOnMsaWQ6Y309bDtfKHtjb21tYW5kOnMsaWQ6YyxyZWplY3Q6YSxyZXNvbHZlOml9KSxlLnBvc3RNZXNzYWdlKGwpLHQubG9nSW5mbyhcIldvcmtlciByZXF1ZXN0IHNlbnRcIixsKX0pKSxPPShlLHQsbik9PihyLG8saSxhLGwpPT5uZXcgUHJvbWlzZSgoKHMsYyk9Pntjb25zdCB1PXtjb21tYW5kOmIuQXBpUmVxdWVzdCxkYXRhOnthcGlSZXF1ZXN0VXJsOnIsY2xpZW50SWQ6ZSxkYXRhOmksaGVhZGVyczphLGh0dHBNZXRob2Q6byxpbmNsdWRlQXV0aG9yaXphdGlvbjpsfSxpZDpEYXRlLm5vdygpLnRvU3RyaW5nKCl9LHtjb21tYW5kOmYsaWQ6ZH09dTtfKHtjb21tYW5kOmYsaWQ6ZCxyZWplY3Q6YyxyZXNvbHZlOnN9KSx0LnBvc3RNZXNzYWdlKHUpLG4ubG9nSW5mbyhcIldvcmtlciByZXF1ZXN0IHNlbnRcIix1KX0pKSxFPShlLHQpPT5uPT5uZXcgUHJvbWlzZSgoKHIsbyk9Pntjb25zdCBpPXtjb21tYW5kOmIuRXhwaXJlVG9rZW5zLGV4cGlyZUFjY2Vzc1Rva2VuT25seTpuLGlkOkRhdGUubm93KCkudG9TdHJpbmcoKX0se2NvbW1hbmQ6YSxpZDpsfT1pO18oe2NvbW1hbmQ6YSxpZDpsLHJlamVjdDpvLHJlc29sdmU6cn0pLGUucG9zdE1lc3NhZ2UoaSksdC5sb2dJbmZvKFwiV29ya2VyIHJlcXVlc3Qgc2VudFwiLGkpfSkpLFM9KGUsdCk9Pntjb25zdCBuPXguZmluZEluZGV4KChuPT5uLmNvbW1hbmQ9PT10JiZuLmlkPT09ZSkpO24+PTAmJnguc3BsaWNlKG4sMSl9LE09KGUsdCk9PmFzeW5jKCk9Pnt0cnl7YXdhaXQgRShlLHQpKCExKX1jYXRjaChlKXt0LmxvZ1dhcm5pbmcoZS5tZXNzYWdlKX1lLnRlcm1pbmF0ZSgpLHQubG9nSW5mbyhcIldvcmtlciB0ZXJtaW5hdGVkXCIpfTtjbGFzcyBqe2dldCBhcGlPcmlnaW4oKXtyZXR1cm4gdGhpcy5fYXBpT3JpZ2lufWdldCBjbGllbnRJZCgpe3JldHVybiB0aGlzLl9jbGllbnRJZH1nZXQgbG9nZ2VyKCl7cmV0dXJuIHRoaXMuX2xvZ2dlcn1nZXQgbWV0YWRhdGEoKXtyZXR1cm4gdGhpcy5fbWV0YWRhdGF9Z2V0IHdvcmtlcigpe3JldHVybiB0aGlzLl93b3JrZXJ9Y29uc3RydWN0b3IoZSx0LG4scixvKXtpZih0aGlzLmV4ZWN1dGVBcGlSZXF1ZXN0PWFzeW5jKGUsdD1cIkdFVFwiLG4scixvPSEwLGk9ITEpPT57dGhpcy5fbG9nZ2VyLmxvZ0luZm8oXCJFeGVjdXRlQXBpUmVxdWVzdCBzdGFydGVkXCIsZSx0LG4scik7dHJ5e2NvbnN0IGk9YXdhaXQoKGUsdCk9PmFzeW5jKG4scixvLGksbCk9Pnt0cnl7cmV0dXJuIGF3YWl0IHQuZXhlY3V0ZUFwaVJlcXVlc3QoYCR7ZX0ke259YCxyLG8saSxsKX1jYXRjaChlKXtsZXQgdDtjb25zdHtkYXRhOm4sbWVzc2FnZTpyLHN0YXR1czpvfT1lO3Rocm93IHQ9ZSBpbnN0YW5jZW9mIEVycm9yP25ldyBhKHIsbyk6XCJGYWlsZWQgdG8gcmVmcmVzaCBhY2Nlc3MgdG9rZW5cIj09PXI/bmV3IHMocik6bmV3IGEocixvKSx0LmRhdGE9bix0fX0pKHRoaXMuX2FwaU9yaWdpbix0aGlzLl93b3JrZXIpKGUsdCxuLHIsbyk7cmV0dXJuIHRoaXMuX2xvZ2dlci5sb2dJbmZvKFwiRXhlY3V0ZUFwaVJlcXVlc3QgY29tcGxldGVkXCIsaSksaX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgYSl7Y29uc3R7ZGF0YTp0LG1lc3NhZ2U6bixuYW1lOnIsc3RhY2s6b309ZSxpPXRoaXMuZ2V0RXJyb3JNZXNzYWdlRnJvbVNlcnZlclJlc3BvbnNlKHQpO2kmJihlLm1lc3NhZ2U9aSxlLnN0YWNrPW51bGw9PW8/dm9pZCAwOm8ucmVwbGFjZShgJHtyfTogJHtufWAsYCR7cn06ICR7aX1gKSl9dGhyb3cgaSYmdGhpcy5sb2dnZXIubG9nRXJyb3IoZSksZX19LCEoZSYmdCYmbiYmciYmbykpdGhyb3cgbmV3IGMoXCJQcm92aWRlciBoYXMgbm90IGJlZW4gcHJvcGVybHkgaW5pdGlhbGl6ZWQgKGNhbGwgaW5pdCB0byBjcmVhdGUgbmV3IGluc3RhbmNlcylcIik7dGhpcy5fYXBpT3JpZ2luPWUsdGhpcy5fY2xpZW50SWQ9dCx0aGlzLl9tZXRhZGF0YT1uLHRoaXMuX3dvcmtlcj1yLHRoaXMuX2xvZ2dlcj1vLHRoaXMuYXV0aG9yaXplPXRoaXMuYXV0aG9yaXplLmJpbmQodGhpcyksdGhpcy5jbG9zZT10aGlzLmNsb3NlLmJpbmQodGhpcyksdGhpcy5leGVjdXRlQXBpUmVxdWVzdD10aGlzLmV4ZWN1dGVBcGlSZXF1ZXN0LmJpbmQodGhpcyksdGhpcy5leHBpcmVUb2tlbnM9dGhpcy5leHBpcmVUb2tlbnMuYmluZCh0aGlzKSx0aGlzLmdldEVycm9yTWVzc2FnZUZyb21TZXJ2ZXJSZXNwb25zZT10aGlzLmdldEVycm9yTWVzc2FnZUZyb21TZXJ2ZXJSZXNwb25zZS5iaW5kKHRoaXMpfWFzeW5jIGF1dGhvcml6ZShlLHQsbil7aWYodGhpcy5fbG9nZ2VyLmxvZ0luZm8oXCJBdXRob3JpemUgc3RhcnRlZFwiLGUsdCxuKSwhdGhpcy5fbWV0YWRhdGF8fCF0aGlzLl9jbGllbnRJZHx8IXRoaXMuX3dvcmtlcil0aHJvdyBuZXcgYyhcIlByb3ZpZGVyIGhhcyBub3QgYmVlbiBwcm9wZXJseSBpbml0aWFsaXplZCAoY2FsbCBpbml0IHRvIGNyZWF0ZSBuZXcgaW5zdGFuY2VzKVwiKTt0cnl7YXdhaXQocj10aGlzLl9tZXRhZGF0YSxvPXRoaXMuX2NsaWVudElkLGE9dGhpcy5fd29ya2VyLHM9dGhpcy5fbG9nZ2VyLGFzeW5jKGUsdCxuKT0+e2NvbnN0e2F1dGhvcml6YXRpb25fZW5kcG9pbnQ6aX09cixsPWZpbi5BcHBsaWNhdGlvbi5nZXRDdXJyZW50U3luYygpLGM9KGF3YWl0IGwuZ2V0Q2hpbGRXaW5kb3dzKCkpLmZpbmQoKGU9PmUuaWRlbnRpdHkubmFtZT09PUMpKTtjJiZhd2FpdCBjLmNsb3NlKCEwKTtjb25zdCB1PShuZXcgRGF0ZSkuZ2V0VGltZSgpLnRvU3RyaW5nKCksZj0oKCk9Pntjb25zdCBlPW5ldyBVaW50MzJBcnJheSg2NCk7cmV0dXJuIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGUpLEFycmF5LmZyb20oZSwoZT0+YDAke2UudG9TdHJpbmcoMTYpfWAuc2xpY2UoLTIpKSkuam9pbihcIlwiKX0pKCksZD0oYXdhaXQoYXN5bmMgZT0+e2NvbnN0IHQ9KG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGUpLG49YXdhaXQgd2luZG93LmNyeXB0by5zdWJ0bGUuZGlnZXN0KFwiU0hBLTI1NlwiLHQpLHI9YXdhaXQoZT0+bmV3IFByb21pc2UoKCh0LG4pPT57dHJ5e2NvbnN0IHI9bmV3IEJsb2IoW2VdKSxvPW5ldyBGaWxlUmVhZGVyO28ub25sb2FkPWU9Pnt2YXIgcixvO2NvbnN0IGk9bnVsbD09PShyPWUudGFyZ2V0KXx8dm9pZCAwPT09cj92b2lkIDA6ci5yZXN1bHQ7aWYoaSl7Y29uc3RbLGVdPUFycmF5LmZyb20obnVsbCE9PShvPWkubWF0Y2goL2Jhc2U2NCwoLiopJC9pKSkmJnZvaWQgMCE9PW8/bzpbXSk7dChudWxsIT1lP2U6XCJcIil9bihuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIGVtcHR5IHJlc3VsdFwiKSl9LG8ucmVhZEFzRGF0YVVSTChyKX1jYXRjaChlKXtuKGUpfX0pKSkobik7cmV0dXJuIHIucmVwbGFjZSgvXFwrL2csXCItXCIpLnJlcGxhY2UoL1xcLy9nLFwiX1wiKX0pKGYpKS5yZXBsYWNlKC89KyQvLFwiXCIpO2xldCBwPVwiXCI7dCYmKHA9XCImXCIscCs9T2JqZWN0LmVudHJpZXModCkubWFwKChlPT5gJHtlbmNvZGVVUklDb21wb25lbnQoZVswXSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KGVbMV0pfWApKS5qb2luKFwiJlwiKSk7Y29uc3QgaD1gJHtpfT9jbGllbnRfaWQ9JHtlbmNvZGVVUklDb21wb25lbnQobyl9JnJlZGlyZWN0X3VyaT0ke2VuY29kZVVSSUNvbXBvbmVudChlKX0mcmVzcG9uc2VfdHlwZT1jb2RlJnN0YXRlPSR7dX0mY29kZV9jaGFsbGVuZ2U9JHtkfSZjb2RlX2NoYWxsZW5nZV9tZXRob2Q9UzI1NiR7cH1gLHY9bnVsbCE9bj9uOnt9LHtkZWZhdWx0SGVpZ2h0OmcsZGVmYXVsdFdpZHRoOm19PXYsdz1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59KHYsW1wiZGVmYXVsdEhlaWdodFwiLFwiZGVmYXVsdFdpZHRoXCJdKTtzLmxvZ0luZm8oXCJTdGFydGluZyBPQXV0aCBmbG93XCIsaCk7Y29uc3QgYj1hd2FpdCBmaW4uV2luZG93LmNyZWF0ZShPYmplY3QuYXNzaWduKHthbHdheXNPblRvcDohMCxtYXhpbWl6YWJsZTohMSxtaW5pbWl6YWJsZTohMSxhdXRvU2hvdzohMSxkZWZhdWx0Q2VudGVyZWQ6ITAsZGVmYXVsdEhlaWdodDpudWxsIT1nP2c6NzAwLGRlZmF1bHRXaWR0aDpudWxsIT1tP206NjAwLGluY2x1ZGVJblNuYXBzaG90czohMSxuYW1lOkMscmVzaXphYmxlOiExLHNhdmVXaW5kb3dTdGF0ZTohMSxzaG93VGFza2Jhckljb246ITEsdXJsOmh9LHcpKSx4PWF3YWl0IG5ldyBQcm9taXNlKHkoYix1LGUscykpO3MubG9nSW5mbyhcIlJlY2VpdmVkIGF1dGhvcml6YXRpb24gY29kZVwiKSxhd2FpdCBhLmV4Y2hhbmdlQ29kZUZvclRva2Vucyh4LGYsZSkscy5sb2dJbmZvKFwiUmVjZWl2ZWQgdG9rZW5zXCIpfSkoZSx0LG4pLHRoaXMuX2xvZ2dlci5sb2dJbmZvKFwiQXV0aG9yaXplIGNvbXBsZXRlZFwiKX1jYXRjaChlKXtsZXQgdDtpZihlIGluc3RhbmNlb2YgaSl7Y29uc3R7ZGF0YTpufT1lLHI9dGhpcy5nZXRFcnJvck1lc3NhZ2VGcm9tU2VydmVyUmVzcG9uc2Uobik7dD1uZXcgbChyLGUpLHQuZGF0YT1ufWVsc2UgdD1uZXcgbCh2b2lkIDAsZSk7dGhyb3cgdGhpcy5sb2dnZXIubG9nRXJyb3IodCksdH12YXIgcixvLGEsc31hc3luYyBjbG9zZSgpe3ZhciBlO3RoaXMuX2xvZ2dlci5sb2dJbmZvKFwiQ2xvc2Ugc3RhcnRlZFwiKTt0cnl7YXdhaXQobnVsbD09PShlPXRoaXMuX3dvcmtlcil8fHZvaWQgMD09PWU/dm9pZCAwOmUudGVybWluYXRlKCkpLHRoaXMuX3dvcmtlcj12b2lkIDAsdGhpcy5fYXBpT3JpZ2luPXZvaWQgMCx0aGlzLl9jbGllbnRJZD12b2lkIDAsdGhpcy5fbWV0YWRhdGE9dm9pZCAwLHRoaXMuX2xvZ2dlci5sb2dJbmZvKFwiQ2xvc2UgY29tcGxldGVkXCIpfWNhdGNoKGUpe2NvbnN0IHQ9bmV3IGkodm9pZCAwLGUpO3Rocm93IHRoaXMuX2xvZ2dlci5sb2dFcnJvcih0KSx0fX1hc3luYyBleHBpcmVUb2tlbnMoZT0hMSl7dmFyIHQ7dGhpcy5fbG9nZ2VyLmxvZ0luZm8oXCJFeHBpcmVUb2tlbnMgc3RhcnRlZFwiKTt0cnl7YXdhaXQobnVsbD09PSh0PXRoaXMuX3dvcmtlcil8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZXhwaXJlVG9rZW5zKGUpKSx0aGlzLl9sb2dnZXIubG9nSW5mbyhcIkV4cGlyZVRva2VucyBjb21wbGV0ZWRcIil9Y2F0Y2goZSl7Y29uc3QgdD1uZXcgaSh2b2lkIDAsZSk7dGhyb3cgdGhpcy5fbG9nZ2VyLmxvZ0Vycm9yKHQpLHR9fWdldEVycm9yTWVzc2FnZUZyb21TZXJ2ZXJSZXNwb25zZShlKXtlJiZ0aGlzLl9sb2dnZXIubG9nV2FybmluZyhlKX1zdGF0aWMgYXN5bmMgaW5pdChlLHQsbixyLC4uLm8pe2NvbnN0IGE9bmV3IGcocik7bGV0IGw7YS5sb2dJbmZvKFwiSW5pdCBzdGFydGVkXCIsZSx0LG4pO3RyeXtsPW5ldyBVUkwodCl9Y2F0Y2goZSl7Y29uc3QgdD1uZXcgZihcIlVuZXhwZWN0ZWQgaW52YWxpZCBBUEkgb3JpZ2luXCIpO3Rocm93IGEubG9nRXJyb3IodCksdH10cnl7Y29uc3QgdD1hd2FpdChhc3luYyBlPT57bGV0IHQ7dHJ5e3Q9bmV3IFVSTChlKX1jYXRjaChlKXt0aHJvdyBuZXcgZihcIlVuZXhwZWN0ZWQgaW52YWxpZCBtZXRhZGF0YSBVUkxcIil9Y29uc3Qgbj1hd2FpdCBmZXRjaCh0LHtoZWFkZXJzOntBY2NlcHQ6XCJhcHBsaWNhdGlvbi9qc29uXCJ9fSk7aWYoIW4ub2spdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIHJldHJpZXZlIGF1dGhvcml6YXRpb24gc2VydmVyIG1ldGFkYXRhXCIpO2NvbnN0IHI9YXdhaXQgbi5qc29uKCk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBlbXB0eSBhdXRob3JpemF0aW9uIHNlcnZlciBtZXRhZGF0YSByZXNwb25zZVwiKTtpZighci5yZXNwb25zZV90eXBlc19zdXBwb3J0ZWQuZmluZCgoZT0+XCJjb2RlXCI9PT1lLnRvTG93ZXJDYXNlKCkpKSl0aHJvdyBuZXcgRXJyb3IoXCJBdXRob3JpemF0aW9uIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBhdXRob3JpemF0aW9uIGNvZGUgcmVzcG9uc2UgdHlwZVwiKTtyZXR1cm4gcn0pKGUpLHI9YXdhaXQoYXN5bmMoZSx0LG4pPT57Y29uc3Qgcj1uZXcgQmxvYihbYCgke3d9KSgpYF0se3R5cGU6XCJ0ZXh0L2phdmFzY3JpcHRcIn0pLG89VVJMLmNyZWF0ZU9iamVjdFVSTChyKSxpPW5ldyBXb3JrZXIobyk7cmV0dXJuIGkub25tZXNzYWdlPShlPT50PT57ZS5sb2dJbmZvKFwiV29ya2VyIHJlc3BvbnNlIHJlY2VpdmVkXCIsdC5kYXRhKTtjb25zdCBuPXQuZGF0YSx7Y29tbWFuZDpyLGVycm9yOm8saWQ6aX09bixhPWZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0obixbXCJjb21tYW5kXCIsXCJlcnJvclwiLFwiaWRcIl0pLGw9KChlLHQpPT54LmZpbmQoKG49Pm4uY29tbWFuZD09PXQmJm4uaWQ9PT1lKSkpKGkscik7bD8obz8oXCJzdGF0dXNcImluIGEmJnZvaWQgMCE9PWEuc3RhdHVzJiYoby5zdGF0dXM9YS5zdGF0dXMpLGwucmVqZWN0KG8pKTpsLnJlc29sdmUoYSksUyhpLHIpKTplLmxvZ0Vycm9yKG5ldyBFcnJvcihcIlVuYWJsZSB0byBsb2NhdGUgYXdhaXRlZCByZXF1ZXN0XCIpKX0pKG4pLGF3YWl0KChlLHQsbixyKT0+bmV3IFByb21pc2UoKChvLGkpPT57Y29uc3QgYT17Y29tbWFuZDpiLkluaXQsZGF0YTp7Y2xpZW50SWQ6dCxtZXRhZGF0YTplfSxpZDpEYXRlLm5vdygpLnRvU3RyaW5nKCl9LHtjb21tYW5kOmwsaWQ6c309YTtfKHtjb21tYW5kOmwsaWQ6cyxyZWplY3Q6aSxyZXNvbHZlOm99KSxuLnBvc3RNZXNzYWdlKGEpLHIubG9nSW5mbyhcIldvcmtlciByZXF1ZXN0IHNlbnRcIixhKX0pKSkoZSx0LGksbikse2V4Y2hhbmdlQ29kZUZvclRva2VuczpMKGksbiksZXhlY3V0ZUFwaVJlcXVlc3Q6Tyh0LGksbiksZXhwaXJlVG9rZW5zOkUoaSxuKSx0ZXJtaW5hdGU6TShpLG4pfX0pKHQsbixhKTtyZXR1cm4gYS5sb2dJbmZvKFwiSW5pdCBjb21wbGV0ZWRcIix0KSxuZXcgaihsLm9yaWdpbixuLHQscixhKX1jYXRjaChlKXtsZXQgdDt0aHJvdyB0PWUgaW5zdGFuY2VvZiBpP2U6bmV3IGModm9pZCAwLGUpLGEubG9nRXJyb3IodCksdH19fXZhciBrPW8uTVMsUj1vLmNGLFA9by5BSyxBPW8uTV8sST1vLmNYLFQ9by5PNCxIPW8uX1csVj1vLlUkLEI9by5VNyxEPW4oOTUxKTtjb25zdCBaPVwiMS4wLjFcIiwkPVwiTWljcm9zb2Z0MzY1XCIsRj0oKT0+e1YoJCl9LE49KCk9PntCKCQsWil9O1widW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJihcInVuZGVmaW5lZFwiPT10eXBlb2YgZmluJiZPYmplY3QuYXNzaWduKHdpbmRvdyx7ZmluOnt9fSksT2JqZWN0LmFzc2lnbihmaW4se0ludGVncmF0aW9uczp7TWljcm9zb2Z0MzY1OntlbmFibGVMb2dnaW5nOk4sZGlzYWJsZUxvZ2dpbmc6Rn19fSkpO2NvbnN0IFU9ZT0+YXN5bmModCxuLHIsbyxpKT0+e3ZhciBhO3JldHVybiB0PShhPXQpLnN0YXJ0c1dpdGgoXCIvXCIpP2E6YC8ke2F9YCxlLmV4ZWN1dGVBcGlSZXF1ZXN0KHQsbixyLG8saSwhMCl9LFc9YXN5bmMoZSx0LG49W10pPT57Y29uc3Qgcj1bXCJpZFwiLFwidXNlclByaW5jaXBhbE5hbWVcIixcInVzZXJUeXBlXCIsLi4ubl0uam9pbihcIixcIiksbz1hd2FpdChhc3luYyhlLHQ9W10pPT57aWYoIShudWxsPT10P3ZvaWQgMDp0Lmxlbmd0aCkpcmV0dXJuW107Y29uc3Qgbj1bXTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrPTIwKXtjb25zdCBvPXtyZXF1ZXN0czp0LnNsaWNlKHIscisyMCkubWFwKChlPT4oZS5pZD1jcnlwdG8ucmFuZG9tVVVJRCgpLGUpKSl9O24ucHVzaChlLmV4ZWN1dGVBcGlSZXF1ZXN0KFwiL3YxLjAvJGJhdGNoXCIsXCJQT1NUXCIsbykpfWNvbnN0IHI9KGF3YWl0IFByb21pc2UuYWxsKG4pKS5mbGF0TWFwKChlPT5lLmRhdGEucmVzcG9uc2VzKSk7cmV0dXJuIHQubWFwKChlPT57dmFyIHQ7cmV0dXJuIG51bGw9PT0odD1yLmZpbmQoKHQ9PnQuaWQ9PT1lLmlkKSkpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmJvZHl9KSl9KShlLHQubWFwKChlPT4oe21ldGhvZDpcIkdFVFwiLHVybDpgL3VzZXJzPyRmaWx0ZXI9bWFpbCBlcSAnJHtlbmNvZGVVUklDb21wb25lbnQoZSl9JyYkc2VsZWN0PSR7cn1gfSkpKSksaT1vLm1hcCgoZT0+e3ZhciB0O3JldHVybiBudWxsPT09KHQ9ZS52YWx1ZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnRbMF19KSk7cmV0dXJuIGUubG9nZ2VyLmxvZ0luZm8oXCJSZXNvbHZlZCB1c2VycyBmcm9tIGVtYWlsIGFkZHJlc3Nlc1wiLGksdCksaX07dmFyIHo9bigzMDApO2NvbnN0IEc9ZT0+ZS5tYXAoKGU9PmU/e2lkOmUudXNlclByaW5jaXBhbE5hbWUsZW1haWxBZGRyZXNzOmUubWFpbCxuYW1lOmUuZGlzcGxheU5hbWV9OnZvaWQgMCkpLHE9YXN5bmMoZSx0KT0+e3RyeXthd2FpdCBmaW4uU3lzdGVtLnJlZ2lzdGVyVXNhZ2Uoe3R5cGU6XCJpbnRlZ3JhdGlvbi1mZWF0dXJlXCIsZGF0YTp7YXBpVmVyc2lvbjpaLGNvbXBvbmVudE5hbWU6ZX19KX1jYXRjaChuKXt0LmxvZ1dhcm5pbmcoYFVuYWJsZSB0byByZWdpc3RlciB1c2FnZSBmb3IgZmVhdHVyZSAke2V9OiAke251bGw9PW4/dm9pZCAwOm4ubWVzc2FnZX1gKX19LFk9ZT0+e2xldCB0PWU7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5maWx0ZXIoQm9vbGVhbikubWFwKFkpOihcIm9iamVjdFwiPT10eXBlb2YgZSYmKHQ9T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoKFssZV0pPT52b2lkIDAhPT0obnVsbCE9ZT9lOnZvaWQgMCkpKS5tYXAoKChbZSx0XSk9PltlLFkodCldKSkpKSx0KX0sSz1lPT4vI0VYVCNALy50ZXN0KGUudXNlclByaW5jaXBhbE5hbWUpO3ZhciBYOyFmdW5jdGlvbihlKXtlLk1TMzY1PVwiTVMtMzY1XCIsZS5UZWFtcz1cIk1TLVRFQU1TXCJ9KFh8fChYPXt9KSk7Y2xhc3MgSiBleHRlbmRzIFR7Z2V0IGN1cnJlbnRVc2VyKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRVc2VyfWdldCByZWRpcmVjdFVyaSgpe3JldHVybiB0aGlzLl9yZWRpcmVjdFVyaX1nZXQgcGVybWlzc2lvbnMoKXtyZXR1cm4gdGhpcy5fcGVybWlzc2lvbnN9Z2V0IHRlbmFudElkKCl7cmV0dXJuIHRoaXMuX3RlbmFudElkfWNvbnN0cnVjdG9yKGUsdCxuLHIsbyxpLGEsbCl7c3VwZXIoZSx0LGksYSxsKSx0aGlzLl9wZXJtaXNzaW9ucz1vLHRoaXMuX3JlZGlyZWN0VXJpPXIsdGhpcy5fdGVuYW50SWQ9bixxKFguTVMzNjUsbCl9YXN5bmMgYXV0aG9yaXplKGUsdCxuKXthd2FpdCBzdXBlci5hdXRob3JpemUoZSx0LG4pO2NvbnN0IHI9YXdhaXQoYXN5bmMgZT0+e2NvbnN0e2RhdGE6dH09YXdhaXQgZS5leGVjdXRlQXBpUmVxdWVzdChcIi92MS4wL21lXCIpO3JldHVybiB0fSkodGhpcyk7dGhpcy5fY3VycmVudFVzZXI9cn1nZXRFcnJvck1lc3NhZ2VGcm9tU2VydmVyUmVzcG9uc2UoZSl7dmFyIHQsbixyO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXRyeXtyZXR1cm4gbnVsbD09PShuPW51bGw9PT0odD1uZXcgVVJMKGUpLnNlYXJjaFBhcmFtcy5nZXQoXCJlcnJvcl9kZXNjcmlwdGlvblwiKSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuc3BsaXQoL1xcclxcbi8pKXx8dm9pZCAwPT09bj92b2lkIDA6blswXX1jYXRjaChlKXtyZXR1cm59cmV0dXJuIG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLmVycm9yKXx8dm9pZCAwPT09cj92b2lkIDA6ci5tZXNzYWdlfXN0YXRpYyBhc3luYyBpbml0KGUsdCxuLHIsbyxpLGEpe2NvbnN0IGw9YXdhaXQgc3VwZXIuaW5pdChlLHQsbixyKTtyZXR1cm4gbmV3IEoodCxuLG8saSxhLG51bGw9PWw/dm9pZCAwOmwubWV0YWRhdGEsbnVsbD09bD92b2lkIDA6bC53b3JrZXIsbnVsbD09bD92b2lkIDA6bC5sb2dnZXIpfX1jb25zdCBRPVtcIlVzZXIuUmVhZEJhc2ljLkFsbFwiLFwiVGVhbS5SZWFkQmFzaWMuQWxsXCIsXCJDaGFubmVsLlJlYWRCYXNpYy5BbGxcIixcIkNoYW5uZWxNZXNzYWdlLlNlbmRcIixcIkNoYXQuQ3JlYXRlXCIsXCJDaGF0TWVzc2FnZS5TZW5kXCIsXCJvZmZsaW5lX2FjY2Vzc1wiXTtsZXQgZWU7Y29uc3QgdGU9YXN5bmMoZSx0LG4scj1bXSxvLGkpPT57YXdhaXQgbmUoZSx0LG4scik7Y29uc3QgYT1PYmplY3QuYXNzaWduKHtzY29wZTpbLi4uUSwuLi5yXS5qb2luKFwiIFwiKX0sbyksbD1PYmplY3QuYXNzaWduKHtkZWZhdWx0SGVpZ2h0OjYwMCxkZWZhdWx0V2lkdGg6NTUwfSxpKTtyZXR1cm4gYXdhaXQgZWUuYXV0aG9yaXplKG4sYSxsKSx7Y2xpZW50SWQ6ZSxjdXJyZW50VXNlcjplZS5jdXJyZW50VXNlcixkaXNjb25uZWN0OmVlLmNsb3NlLGV4ZWN1dGVBcGlSZXF1ZXN0OlUoZWUpLHByb3ZpZGVyOmVlLHRlbmFudElkOnR9fSxuZT1hc3luYyhlLHQsbixyKT0+e2lmKCFlKXRocm93IG5ldyBIKFwiSW52YWxpZCBjbGllbnQgSURcIik7aWYoIXQpdGhyb3cgbmV3IEgoXCJJbnZhbGlkIHRlbmFudCBJRFwiKTtpZighbil0aHJvdyBuZXcgSChcIkludmFsaWQgcmVkaXJlY3QgVVJJXCIpO2NvbnN0IG89YGh0dHBzOi8vbG9naW4ubWljcm9zb2Z0b25saW5lLmNvbS8ke3R9L3YyLjAvLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb25gOyghZWV8fGVlLmNsaWVudElkIT09ZXx8ZWUudGVuYW50SWQhPT10fHxlZS5yZWRpcmVjdFVyaSE9PW58fCgwLEQueG9yKShlZS5wZXJtaXNzaW9ucyxyKS5sZW5ndGg+MCkmJihlZT1hd2FpdCBKLmluaXQobyxcImh0dHBzOi8vZ3JhcGgubWljcm9zb2Z0LmNvbVwiLGUsJCx0LG4scikpfTtjbGFzcyByZSBleHRlbmRzIGt7Y29uc3RydWN0b3IoZSx0KXt2YXIgbjtzdXBlcihlPW51bGwhPT0obj1udWxsIT1lP2U6bnVsbD09dD92b2lkIDA6dC5tZXNzYWdlKSYmdm9pZCAwIT09bj9uOlwiQW4gaW50ZXJvcCBlcnJvciBvY2N1cnJlZFwiLHQpfX12YXIgb2UsaWUsYWUsbGUsc2UsY2U7IWZ1bmN0aW9uKGUpe2UuQXBwTm90Rm91bmQ9XCJBcHBOb3RGb3VuZFwiLGUuRXJyb3JPbkxhdW5jaD1cIkVycm9yT25MYXVuY2hcIixlLkFwcFRpbWVvdXQ9XCJBcHBUaW1lb3V0XCIsZS5SZXNvbHZlclVuYXZhaWxhYmxlPVwiUmVzb2x2ZXJVbmF2YWlsYWJsZVwifShvZXx8KG9lPXt9KSksZnVuY3Rpb24oZSl7ZS5Ob0FwcHNGb3VuZD1cIk5vQXBwc0ZvdW5kXCIsZS5SZXNvbHZlclVuYXZhaWxhYmxlPVwiUmVzb2x2ZXJVbmF2YWlsYWJsZVwiLGUuUmVzb2x2ZXJUaW1lb3V0PVwiUmVzb2x2ZXJUaW1lb3V0XCJ9KGllfHwoaWU9e30pKSxmdW5jdGlvbihlKXtlLk5vQ2hhbm5lbEZvdW5kPVwiTm9DaGFubmVsRm91bmRcIixlLkFjY2Vzc0RlbmllZD1cIkFjY2Vzc0RlbmllZFwiLGUuQ3JlYXRpb25GYWlsZWQ9XCJDcmVhdGlvbkZhaWxlZFwifShhZXx8KGFlPXt9KSksbGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30saT1vLml0ZXJhdG9yfHxcIkBAaXRlcmF0b3JcIixhPW8uYXN5bmNJdGVyYXRvcnx8XCJAQGFzeW5jSXRlcmF0b3JcIixsPW8udG9TdHJpbmdUYWd8fFwiQEB0b1N0cmluZ1RhZ1wiO2Z1bmN0aW9uIHMoZSx0LG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksZVt0XX10cnl7cyh7fSxcIlwiKX1jYXRjaChlKXtzPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZVt0XT1ufX1mdW5jdGlvbiBjKGUsdCxuLHIpe3ZhciBvPXQmJnQucHJvdG90eXBlIGluc3RhbmNlb2YgZz90OmcsaT1PYmplY3QuY3JlYXRlKG8ucHJvdG90eXBlKSxhPW5ldyBNKHJ8fFtdKTtyZXR1cm4gaS5faW52b2tlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1mO3JldHVybiBmdW5jdGlvbihvLGkpe2lmKHI9PT1wKXRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7aWYocj09PWgpe2lmKFwidGhyb3dcIj09PW8pdGhyb3cgaTtyZXR1cm4gaygpfWZvcihuLm1ldGhvZD1vLG4uYXJnPWk7Oyl7dmFyIGE9bi5kZWxlZ2F0ZTtpZihhKXt2YXIgbD1PKGEsbik7aWYobCl7aWYobD09PXYpY29udGludWU7cmV0dXJuIGx9fWlmKFwibmV4dFwiPT09bi5tZXRob2Qpbi5zZW50PW4uX3NlbnQ9bi5hcmc7ZWxzZSBpZihcInRocm93XCI9PT1uLm1ldGhvZCl7aWYocj09PWYpdGhyb3cgcj1oLG4uYXJnO24uZGlzcGF0Y2hFeGNlcHRpb24obi5hcmcpfWVsc2VcInJldHVyblwiPT09bi5tZXRob2QmJm4uYWJydXB0KFwicmV0dXJuXCIsbi5hcmcpO3I9cDt2YXIgcz11KGUsdCxuKTtpZihcIm5vcm1hbFwiPT09cy50eXBlKXtpZihyPW4uZG9uZT9oOmQscy5hcmc9PT12KWNvbnRpbnVlO3JldHVybnt2YWx1ZTpzLmFyZyxkb25lOm4uZG9uZX19XCJ0aHJvd1wiPT09cy50eXBlJiYocj1oLG4ubWV0aG9kPVwidGhyb3dcIixuLmFyZz1zLmFyZyl9fX0oZSxuLGEpLGl9ZnVuY3Rpb24gdShlLHQsbil7dHJ5e3JldHVybnt0eXBlOlwibm9ybWFsXCIsYXJnOmUuY2FsbCh0LG4pfX1jYXRjaChlKXtyZXR1cm57dHlwZTpcInRocm93XCIsYXJnOmV9fX1lLndyYXA9Yzt2YXIgZj1cInN1c3BlbmRlZFN0YXJ0XCIsZD1cInN1c3BlbmRlZFlpZWxkXCIscD1cImV4ZWN1dGluZ1wiLGg9XCJjb21wbGV0ZWRcIix2PXt9O2Z1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gQygpe31mdW5jdGlvbiBtKCl7fXZhciB5PXt9O3lbaV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dmFyIHc9T2JqZWN0LmdldFByb3RvdHlwZU9mLGI9dyYmdyh3KGooW10pKSk7YiYmYiE9PW4mJnIuY2FsbChiLGkpJiYoeT1iKTt2YXIgeD1tLnByb3RvdHlwZT1nLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHkpO2Z1bmN0aW9uIF8oZSl7W1wibmV4dFwiLFwidGhyb3dcIixcInJldHVyblwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXtzKGUsdCwoZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2ludm9rZSh0LGUpfSkpfSkpfWZ1bmN0aW9uIEwoZSx0KXtmdW5jdGlvbiBuKG8saSxhLGwpe3ZhciBzPXUoZVtvXSxlLGkpO2lmKFwidGhyb3dcIiE9PXMudHlwZSl7dmFyIGM9cy5hcmcsZj1jLnZhbHVlO3JldHVybiBmJiZcIm9iamVjdFwiPT10eXBlb2YgZiYmci5jYWxsKGYsXCJfX2F3YWl0XCIpP3QucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKGUpe24oXCJuZXh0XCIsZSxhLGwpfSksKGZ1bmN0aW9uKGUpe24oXCJ0aHJvd1wiLGUsYSxsKX0pKTp0LnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24oZSl7Yy52YWx1ZT1lLGEoYyl9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIG4oXCJ0aHJvd1wiLGUsYSxsKX0pKX1sKHMuYXJnKX12YXIgbzt0aGlzLl9pbnZva2U9ZnVuY3Rpb24oZSxyKXtmdW5jdGlvbiBpKCl7cmV0dXJuIG5ldyB0KChmdW5jdGlvbih0LG8pe24oZSxyLHQsbyl9KSl9cmV0dXJuIG89bz9vLnRoZW4oaSxpKTppKCl9fWZ1bmN0aW9uIE8oZSxuKXt2YXIgcj1lLml0ZXJhdG9yW24ubWV0aG9kXTtpZihyPT09dCl7aWYobi5kZWxlZ2F0ZT1udWxsLFwidGhyb3dcIj09PW4ubWV0aG9kKXtpZihlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPVwicmV0dXJuXCIsbi5hcmc9dCxPKGUsbiksXCJ0aHJvd1wiPT09bi5tZXRob2QpKXJldHVybiB2O24ubWV0aG9kPVwidGhyb3dcIixuLmFyZz1uZXcgVHlwZUVycm9yKFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKX1yZXR1cm4gdn12YXIgbz11KHIsZS5pdGVyYXRvcixuLmFyZyk7aWYoXCJ0aHJvd1wiPT09by50eXBlKXJldHVybiBuLm1ldGhvZD1cInRocm93XCIsbi5hcmc9by5hcmcsbi5kZWxlZ2F0ZT1udWxsLHY7dmFyIGk9by5hcmc7cmV0dXJuIGk/aS5kb25lPyhuW2UucmVzdWx0TmFtZV09aS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLFwicmV0dXJuXCIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPVwibmV4dFwiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCx2KTppOihuLm1ldGhvZD1cInRocm93XCIsbi5hcmc9bmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpLG4uZGVsZWdhdGU9bnVsbCx2KX1mdW5jdGlvbiBFKGUpe3ZhciB0PXt0cnlMb2M6ZVswXX07MSBpbiBlJiYodC5jYXRjaExvYz1lWzFdKSwyIGluIGUmJih0LmZpbmFsbHlMb2M9ZVsyXSx0LmFmdGVyTG9jPWVbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKHQpfWZ1bmN0aW9uIFMoZSl7dmFyIHQ9ZS5jb21wbGV0aW9ufHx7fTt0LnR5cGU9XCJub3JtYWxcIixkZWxldGUgdC5hcmcsZS5jb21wbGV0aW9uPXR9ZnVuY3Rpb24gTShlKXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6XCJyb290XCJ9XSxlLmZvckVhY2goRSx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBqKGUpe2lmKGUpe3ZhciBuPWVbaV07aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxhPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0Omt9fWZ1bmN0aW9uIGsoKXtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1yZXR1cm4gQy5wcm90b3R5cGU9eC5jb25zdHJ1Y3Rvcj1tLG0uY29uc3RydWN0b3I9QyxDLmRpc3BsYXlOYW1lPXMobSxsLFwiR2VuZXJhdG9yRnVuY3Rpb25cIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJmUuY29uc3RydWN0b3I7cmV0dXJuISF0JiYodD09PUN8fFwiR2VuZXJhdG9yRnVuY3Rpb25cIj09PSh0LmRpc3BsYXlOYW1lfHx0Lm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsbSk6KGUuX19wcm90b19fPW0scyhlLGwsXCJHZW5lcmF0b3JGdW5jdGlvblwiKSksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh4KSxlfSxlLmF3cmFwPWZ1bmN0aW9uKGUpe3JldHVybntfX2F3YWl0OmV9fSxfKEwucHJvdG90eXBlKSxMLnByb3RvdHlwZVthXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlLkFzeW5jSXRlcmF0b3I9TCxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEwoYyh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9uZT9lLnZhbHVlOmEubmV4dCgpfSkpfSxfKHgpLHMoeCxsLFwiR2VuZXJhdG9yXCIpLHhbaV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30seC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiW29iamVjdCBHZW5lcmF0b3JdXCJ9LGUua2V5cz1mdW5jdGlvbihlKXt2YXIgdD1bXTtmb3IodmFyIG4gaW4gZSl0LnB1c2gobik7cmV0dXJuIHQucmV2ZXJzZSgpLGZ1bmN0aW9uIG4oKXtmb3IoO3QubGVuZ3RoOyl7dmFyIHI9dC5wb3AoKTtpZihyIGluIGUpcmV0dXJuIG4udmFsdWU9cixuLmRvbmU9ITEsbn1yZXR1cm4gbi5kb25lPSEwLG59fSxlLnZhbHVlcz1qLE0ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpNLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD1cIm5leHRcIix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKFMpLCFlKWZvcih2YXIgbiBpbiB0aGlzKVwidFwiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgZT10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZihcInRocm93XCI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIGwudHlwZT1cInRocm93XCIsbC5hcmc9ZSxuLm5leHQ9cixvJiYobi5tZXRob2Q9XCJuZXh0XCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSxsPWEuY29tcGxldGlvbjtpZihcInJvb3RcIj09PWEudHJ5TG9jKXJldHVybiBvKFwiZW5kXCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLFwiY2F0Y2hMb2NcIiksYz1yLmNhbGwoYSxcImZpbmFsbHlMb2NcIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBuZXcgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobyxcImZpbmFsbHlMb2NcIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJihcImJyZWFrXCI9PT1lfHxcImNvbnRpbnVlXCI9PT1lKSYmaS50cnlMb2M8PXQmJnQ8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT1lLGEuYXJnPXQsaT8odGhpcy5tZXRob2Q9XCJuZXh0XCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyx2KTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbihlLHQpe2lmKFwidGhyb3dcIj09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm5cImJyZWFrXCI9PT1lLnR5cGV8fFwiY29udGludWVcIj09PWUudHlwZT90aGlzLm5leHQ9ZS5hcmc6XCJyZXR1cm5cIj09PWUudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPWUuYXJnLHRoaXMubWV0aG9kPVwicmV0dXJuXCIsdGhpcy5uZXh0PVwiZW5kXCIpOlwibm9ybWFsXCI9PT1lLnR5cGUmJnQmJih0aGlzLm5leHQ9dCksdn0sZmluaXNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciBuPXRoaXMudHJ5RW50cmllc1t0XTtpZihuLmZpbmFsbHlMb2M9PT1lKXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxTKG4pLHZ9fSxjYXRjaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgbj10aGlzLnRyeUVudHJpZXNbdF07aWYobi50cnlMb2M9PT1lKXt2YXIgcj1uLmNvbXBsZXRpb247aWYoXCJ0aHJvd1wiPT09ci50eXBlKXt2YXIgbz1yLmFyZztTKG4pfXJldHVybiBvfX10aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpqKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LFwibmV4dFwiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz10KSx2fX0sZX0oZS5leHBvcnRzKTt0cnl7cmVnZW5lcmF0b3JSdW50aW1lPXR9Y2F0Y2goZSl7RnVuY3Rpb24oXCJyXCIsXCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByXCIpKHQpfX0sbGUoe2V4cG9ydHM6e319KSxmdW5jdGlvbihlKXtlLkNvbnRhY3Q9XCJmZGMzLmNvbnRhY3RcIixlLkNvbnRhY3RMaXN0PVwiZmRjMy5jb250YWN0TGlzdFwiLGUuQ291bnRyeT1cImZkYzMuY291bnRyeVwiLGUuSW5zdHJ1bWVudD1cImZkYzMuaW5zdHJ1bWVudFwiLGUuT3JnYW5pemF0aW9uPVwiZmRjMy5vcmdhbml6YXRpb25cIixlLlBvcnRmb2xpbz1cImZkYzMucG9ydGZvbGlvXCIsZS5Qb3NpdGlvbj1cImZkYzMucG9zaXRpb25cIn0oc2V8fChzZT17fSkpLGZ1bmN0aW9uKGUpe2UuU3RhcnRDYWxsPVwiU3RhcnRDYWxsXCIsZS5TdGFydENoYXQ9XCJTdGFydENoYXRcIixlLlZpZXdDaGFydD1cIlZpZXdDaGFydFwiLGUuVmlld0NvbnRhY3Q9XCJWaWV3Q29udGFjdFwiLGUuVmlld1F1b3RlPVwiVmlld1F1b3RlXCIsZS5WaWV3TmV3cz1cIlZpZXdOZXdzXCIsZS5WaWV3SW5zdHJ1bWVudD1cIlZpZXdJbnN0cnVtZW50XCIsZS5WaWV3QW5hbHlzaXM9XCJWaWV3QW5hbHlzaXNcIn0oY2V8fChjZT17fSkpO2NvbnN0IHVlPVwib2ZtczM2NWFjdGlvblwiLGZlPWU9PmU/XCJtc3RlYW1zOlwiOlwiaHR0cHM6Ly90ZWFtcy5taWNyb3NvZnQuY29tXCIsZGU9YXN5bmMgZT0+e2NvbnN0IHQ9bnVsbD09ZT92b2lkIDA6ZVt1ZV07aWYodCl0cnl7Y29uc3QgZT0oZT0+e2NvbnN0IHQ9KDAsei5kZWNvbXByZXNzKShlLHtpbnB1dEVuY29kaW5nOlwiQmFzZTY0XCIsb3V0cHV0RW5jb2Rpbmc6XCJTdHJpbmdcIn0pO3JldHVybiBKU09OLnBhcnNlKHQpfSkodCkse2NvbnRleHQ6bixpbnRlbnQ6cn09ZSxvPXtjb250ZXh0Om4sbmFtZTpyfTtyZXR1cm4gYXdhaXQgZmluLm1lLmludGVyb3AuZmlyZUludGVudChvKSxvfWNhdGNoKGUpe2NvbnN0IHQ9ZS5tZXNzYWdlO3Rocm93IG5ldyBrKFwiRmFpbGVkIHRvIGRlY29tcHJlc3Mgc2hhcmUgcGF5bG9hZFwiKyh0P2AgKCR7dH0pYDpcIlwiKSxlKX19LHBlPWFzeW5jKGUsdCxuKT0+e2NvbnN0IHI9YXdhaXQoYXN5bmMoZSx0LG49W10pPT57dHJ5e2NvbnN0IHI9W1wiaWRcIiwuLi5uXS5qb2luKFwiLFwiKSx7ZGF0YTpvfT1hd2FpdCBlLmV4ZWN1dGVBcGlSZXF1ZXN0KGAvdjEuMC90ZWFtcy8ke2VuY29kZVVSSUNvbXBvbmVudCh0KX0/JHNlbGVjdD0ke3J9YCk7cmV0dXJuIG99Y2F0Y2goZSl7aWYoNDA0IT09ZS5zdGF0dXMpdGhyb3cgZX19KShlLHQsW1wiZGlzcGxheU5hbWVcIl0pO2lmKCFyKXJldHVybjtsZXQgbztpZihlLmxvZ2dlci5sb2dJbmZvKFwiUmVzb2x2ZWQgdGVhbVwiLHIpLG4pe2lmKG89YXdhaXQoYXN5bmMoZSx0LG4scj1bXSk9Pnt0cnl7Y29uc3Qgbz1bXCJpZFwiLC4uLnJdLmpvaW4oXCIsXCIpLHtkYXRhOml9PWF3YWl0IGUuZXhlY3V0ZUFwaVJlcXVlc3QoYC92MS4wL3RlYW1zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KG4pfS9jaGFubmVscy8ke2VuY29kZVVSSUNvbXBvbmVudCh0KX0/JHNlbGVjdD0ke299YCk7cmV0dXJuIGl9Y2F0Y2goZSl7aWYoNDA0IT09ZS5zdGF0dXMpdGhyb3cgZX19KShlLG4sdCxbXCJkaXNwbGF5TmFtZVwiXSksIW8pcmV0dXJuIHZvaWQgZS5sb2dnZXIubG9nV2FybmluZyhgQ291bGQgbm90IHJlc29sdmUgY2hhbm5lbCBmcm9tIGlkICR7bn1gKX1lbHNle2UubG9nZ2VyLmxvZ0luZm8oXCJObyBjaGFubmVsIGlkIHN1cHBsaWVkLCB1c2luZyBwcmltYXJ5IGNoYW5uZWxcIik7Y29uc3R7ZGF0YTpufT1hd2FpdCBlLmV4ZWN1dGVBcGlSZXF1ZXN0KGAvdjEuMC90ZWFtcy8ke2VuY29kZVVSSUNvbXBvbmVudCh0KX0vcHJpbWFyeUNoYW5uZWw/JHNlbGVjdD1kaXNwbGF5TmFtZSxpZGApO289bn1jb25zdCBpPXtjaGFubmVsSWQ6by5pZCxjaGFubmVsTmFtZTpvLmRpc3BsYXlOYW1lLHRlYW1JZDpyLmlkLHRlYW1OYW1lOnIuZGlzcGxheU5hbWV9O3JldHVybiBlLmxvZ2dlci5sb2dJbmZvKFwiUmVzb2x2ZWQgdGVhbSBjaGFubmVsXCIsdCxuLGkpLGl9O2NsYXNzIGhle2NvbnN0cnVjdG9yKGUsdD0hMCl7dGhpcy5sb2dnZXI9ZS5wcm92aWRlci5sb2dnZXIsdGhpcy5wcm92aWRlcj1lLnByb3ZpZGVyLHRoaXMudXNlTXNUZWFtc1Byb3RvY29sPXQsdGhpcy5yZWdpc3RlckludGVudEhhbmRsZXJzPXRoaXMucmVnaXN0ZXJJbnRlbnRIYW5kbGVycy5iaW5kKHRoaXMpLHRoaXMuc2hhcmU9dGhpcy5zaGFyZS5iaW5kKHRoaXMpLHRoaXMuc3RhcnRDYWxsPXRoaXMuc3RhcnRDYWxsLmJpbmQodGhpcyksdGhpcy5zdGFydENoYXQ9dGhpcy5zdGFydENoYXQuYmluZCh0aGlzKSx0aGlzLmVuYWJsZVNoYXJlUGF5bG9hZEhhbmRsZXIoKSxxKFguVGVhbXMsdGhpcy5sb2dnZXIpfWFzeW5jIGVuYWJsZVNoYXJlUGF5bG9hZEhhbmRsZXIoKXtjb25zdHtpbml0aWFsT3B0aW9uczplfT1hd2FpdCBmaW4uQXBwbGljYXRpb24uZ2V0Q3VycmVudFN5bmMoKS5nZXRJbmZvKCkse3VzZXJBcHBDb25maWdBcmdzOnR9PWUsbj1hd2FpdCBkZSh0KTtuJiZ0aGlzLmxvZ2dlci5sb2dJbmZvKFwiRmlyaW5nIGludGVudFwiLG4pLGZpbi5BcHBsaWNhdGlvbi5nZXRDdXJyZW50U3luYygpLmFkZExpc3RlbmVyKFwicnVuLXJlcXVlc3RlZFwiLChhc3luYyBlPT57dHJ5e2NvbnN0IHQ9YXdhaXQgZGUoZS51c2VyQXBwQ29uZmlnQXJncyk7dCYmdGhpcy5sb2dnZXIubG9nSW5mbyhcIkZpcmluZyBpbnRlbnRcIix0KX1jYXRjaChlKXt0aGlzLmxvZ2dlci5sb2dFcnJvcihlKX19KSl9YXN5bmMgb3BlblVybChlKXt0aGlzLmxvZ2dlci5sb2dJbmZvKFwib3BlblVybCBzdGFydGVkXCIsZSk7dHJ5e2NvbnN0IHQ9dGhpcy51c2VNc1RlYW1zUHJvdG9jb2w/ZS5yZXBsYWNlKC9eaHR0cHM6XFwvXFwvdGVhbXMubWljcm9zb2Z0LmNvbVxcLy9pLFwibXN0ZWFtczpcIik6ZTt0aGlzLmxvZ2dlci5sb2dJbmZvKFwiT3BlbmluZyB1cmxcIix0KSxhd2FpdCBmaW4uU3lzdGVtLm9wZW5VcmxXaXRoQnJvd3Nlcih0KSx0aGlzLmxvZ2dlci5sb2dJbmZvKFwib3BlblVybCBjb21wbGV0ZWRcIil9Y2F0Y2goZSl7dGhyb3cgdGhpcy5sb2dnZXIubG9nRXJyb3IoZSksZX19YXN5bmMgcmVnaXN0ZXJJbnRlbnRIYW5kbGVycygpe2lmKHRoaXMubG9nZ2VyLmxvZ0luZm8oXCJyZWdpc3RlckludGVudEhhbmRsZXJzIHN0YXJ0ZWRcIiksdGhpcy51bnN1YnNjcmliZUludGVudEhhbmRsZXJzKXJldHVybnt1bnN1YnNjcmliZTp0aGlzLnVuc3Vic2NyaWJlSW50ZW50SGFuZGxlcnN9O3RyeXthd2FpdCBmaW4ubWUuaW50ZXJvcC5nZXRDb250ZXh0R3JvdXBzKCk7Y29uc3QgZT1hd2FpdCBmaW4ubWUuaW50ZXJvcC5yZWdpc3RlckludGVudEhhbmRsZXIoKGFzeW5jIGU9Pnt0cnl7YXdhaXQoKGUsdCk9PmFzeW5jIG49Pnt2YXIgcixvLGksYTtpZihlLmxvZ2dlci5sb2dJbmZvKFwiaGFuZGxlU3RhcnRDYWxsSW50ZW50IHN0YXJ0ZWRcIixuKSwobnVsbD09PShyPW4ubmFtZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIudG9Mb3dlckNhc2UoKSkhPT1jZS5TdGFydENhbGwudG9Mb3dlckNhc2UoKSl0aHJvdyBuZXcgayhgVW5leHBlY3RlZCBpbnRlbnQgdHlwZTogJHtuLm5hbWV9YCk7Y29uc3R7Y29udGV4dDpsfT1uO2lmKChudWxsPT09KG89bC50eXBlKXx8dm9pZCAwPT09bz92b2lkIDA6by50b0xvd2VyQ2FzZSgpKSE9PXNlLkNvbnRhY3QudG9Mb3dlckNhc2UoKSYmKG51bGw9PT0oaT1sLnR5cGUpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnRvTG93ZXJDYXNlKCkpIT09c2UuQ29udGFjdExpc3QudG9Mb3dlckNhc2UoKSl0aHJvdyBuZXcgayhgVW5leHBlY3RlZCBjb250ZXh0IHR5cGU6ICR7bC50eXBlfWApO2NvbnN0IHM9KG51bGw9PT0oYT1sLnR5cGUpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnRvTG93ZXJDYXNlKCkpPT09c2UuQ29udGFjdExpc3QudG9Mb3dlckNhc2UoKT9sLmNvbnRhY3RzLm1hcCgoZT0+ZS5pZC5lbWFpbCkpLmZpbHRlcihCb29sZWFuKTpbbC5pZC5lbWFpbF0sYz1hd2FpdCB0KHMpO2UubG9nZ2VyLmxvZ0luZm8oXCJoYW5kbGVTdGFydENhbGxJbnRlbnQgY29tcGxldGVkXCIsYyl9KSh0aGlzLnByb3ZpZGVyLHRoaXMuc3RhcnRDYWxsKShlKX1jYXRjaChlKXt0aHJvdyB0aGlzLmxvZ2dlci5sb2dFcnJvcihlKSxlfX0pLFwiU3RhcnRDYWxsXCIpLHQ9YXdhaXQgZmluLm1lLmludGVyb3AucmVnaXN0ZXJJbnRlbnRIYW5kbGVyKChhc3luYyBlPT57dHJ5e2F3YWl0KChlLHQpPT5hc3luYyBuPT57dmFyIHIsbyxpLGE7aWYoZS5sb2dnZXIubG9nSW5mbyhcImhhbmRsZVN0YXJ0Q2hhdEludGVudCBzdGFydGVkXCIsbiksKG51bGw9PT0ocj1uLm5hbWUpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnRvTG93ZXJDYXNlKCkpIT09Y2UuU3RhcnRDaGF0LnRvTG93ZXJDYXNlKCkpdGhyb3cgbmV3IGsoYFVuZXhwZWN0ZWQgaW50ZW50IHR5cGU6ICR7bi5uYW1lfWApO2NvbnN0e2NvbnRleHQ6bH09bjtpZigobnVsbD09PShvPWwudHlwZSl8fHZvaWQgMD09PW8/dm9pZCAwOm8udG9Mb3dlckNhc2UoKSkhPT1zZS5Db250YWN0LnRvTG93ZXJDYXNlKCkmJihudWxsPT09KGk9bC50eXBlKXx8dm9pZCAwPT09aT92b2lkIDA6aS50b0xvd2VyQ2FzZSgpKSE9PXNlLkNvbnRhY3RMaXN0LnRvTG93ZXJDYXNlKCkpdGhyb3cgbmV3IGsoYFVuZXhwZWN0ZWQgY29udGV4dCB0eXBlOiAke2wudHlwZX1gKTtjb25zdCBzPShudWxsPT09KGE9bC50eXBlKXx8dm9pZCAwPT09YT92b2lkIDA6YS50b0xvd2VyQ2FzZSgpKT09PXNlLkNvbnRhY3RMaXN0LnRvTG93ZXJDYXNlKCk/bC5jb250YWN0cy5tYXAoKGU9PmUuaWQuZW1haWwpKS5maWx0ZXIoQm9vbGVhbik6W2wuaWQuZW1haWxdLGM9YXdhaXQgdCh7ZW1haWxBZGRyZXNzZXM6cyx0b3BpY05hbWU6bC5uYW1lfSk7ZS5sb2dnZXIubG9nSW5mbyhcImhhbmRsZVN0YXJ0Q2hhdEludGVudCBjb21wbGV0ZWRcIixjKX0pKHRoaXMucHJvdmlkZXIsdGhpcy5zdGFydENoYXQpKGUpfWNhdGNoKGUpe3Rocm93IHRoaXMubG9nZ2VyLmxvZ0Vycm9yKGUpLGV9fSksXCJTdGFydENoYXRcIik7cmV0dXJuIHRoaXMudW5zdWJzY3JpYmVJbnRlbnRIYW5kbGVycz1hc3luYygpPT57dGhpcy5sb2dnZXIubG9nSW5mbyhcInVuc3Vic2NyaWJlSW50ZW50SGFuZGxlcnMgc3RhcnRlZFwiKSxhd2FpdCBlLnVuc3Vic2NyaWJlKCksYXdhaXQgdC51bnN1YnNjcmliZSgpLHRoaXMudW5zdWJzY3JpYmVJbnRlbnRIYW5kbGVycz12b2lkIDAsdGhpcy5sb2dnZXIubG9nSW5mbyhcInVuc3Vic2NyaWJlSW50ZW50SGFuZGxlcnMgY29tcGxldGVkXCIpfSx0aGlzLmxvZ2dlci5sb2dJbmZvKFwicmVnaXN0ZXJJbnRlbnRIYW5kbGVycyBjb21wbGV0ZWRcIikse3Vuc3Vic2NyaWJlOnRoaXMudW5zdWJzY3JpYmVJbnRlbnRIYW5kbGVyc319Y2F0Y2goZSl7Y29uc3QgdD1uZXcgcmUoZS5tZXNzYWdlKTt0aHJvdyB0aGlzLmxvZ2dlci5sb2dFcnJvcih0KSx0fX1hc3luYyBzaGFyZShlKXt2YXIgdCxuLHIsbzt0aGlzLmxvZ2dlci5sb2dJbmZvKFwic2hhcmUgc3RhcnRlZFwiLGUpO3RyeXtpZighZS50YXJnZXQpdGhyb3cgbmV3IEgoXCJUYXJnZXQgbm90IHByb3ZpZGVkXCIpO2lmKChudWxsPT09KHQ9ZS5jb250ZXh0KXx8dm9pZCAwPT09dD92b2lkIDA6dC50eXBlLnRvTG93ZXJDYXNlKCkpIT09c2UuSW5zdHJ1bWVudC50b0xvd2VyQ2FzZSgpKXRocm93IG5ldyBIKFwiVW5zdXBwb3J0ZWQgY29udGV4dCB0eXBlXCIpO2lmKCEobnVsbD09PShyPW51bGw9PT0obj1lLmNvbnRleHQpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmlkKXx8dm9pZCAwPT09cj92b2lkIDA6ci50aWNrZXIpKXRocm93IG5ldyBIKFwiVGlja2VyIG5vdCBwcm92aWRlZFwiKTtpZighZS5jaGFydEltYWdlJiZudWxsPT1lLnByaWNlQ3VycmVudCl0aHJvdyBuZXcgSChcIkN1cnJlbnQgcHJpY2Ugbm90IHByb3ZpZGVkXCIpO2NvbnN0IGk9bnVsbD09PShvPWUuc2hvd01lc3NhZ2UpfHx2b2lkIDA9PT1vfHxvLGE9YXdhaXQoYXN5bmMoZSx0KT0+e3ZhciBuLHIsbyxpO2NvbnN0e2NoYXJ0SW1hZ2U6YSxjb250ZXh0Omx9PXQse3ByaWNlQ3VycmVudDpzLHByaWNlSGlnaDpjLHByaWNlTG93OnUscHJpY2VPcGVuOmZ9PXQsZD0obnVsbD09PShyPW51bGw9PT0obj1sLmlkKXx8dm9pZCAwPT09bj92b2lkIDA6bi50aWNrZXIpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnRyaW0oKSl8fHZvaWQgMCxwPShudWxsPT09KG89bC5uYW1lKXx8dm9pZCAwPT09bz92b2lkIDA6by50cmltKCkpfHx2b2lkIDA7bGV0IGgsdixnLEMsbSx5O2lmKG51bGwhPXQudGltZXN0YW1wfHwhYSl0cnl7aD1uZXcgRGF0ZShudWxsIT09KGk9dC50aW1lc3RhbXApJiZ2b2lkIDAhPT1pP2k6RGF0ZS5ub3coKSkudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9cXC5cXGQrWiQvLFwiKzAwOjAwXCIpfWNhdGNoKG4pe2UubG9nZ2VyLmxvZ1dhcm5pbmcoXCJJbnZhbGlkIHRpbWVzdGFtcFwiLHQudGltZXN0YW1wKX1pZihudWxsIT1zJiZudWxsIT1mJiYodj1zLWYsZz12L2YqMTAwLG09dj4wP1wi4payXCI6djwwP1wi4pa8XCI6XCLil49cIixDPXY+MD9cIkdvb2RcIjp2PDA/XCJBdHRlbnRpb25cIjpcIldhcm5pbmdcIiksYSl7aWYoIS9eaW1hZ2VcXC8oZ2lmfGpwKGV8ZT9nKXxwbmcpJC9pLnRlc3QoYS50eXBlKSl0aHJvdyBuZXcgSChcIkNoYXJ0IGltYWdlIE1JTUUgdHlwZSBub3Qgc3VwcG9ydGVkXCIpO3RyeXt5PWF3YWl0KGFzeW5jIGU9Pm5ldyBQcm9taXNlKCgodCxuKT0+e2NvbnN0IHI9bmV3IEZpbGVSZWFkZXI7ci5vbmxvYWRlbmQ9KCk9PnQoci5yZXN1bHQpLHIub25lcnJvcj0oKT0+bihuZXcgRXJyb3IoXCJGYWlsZWQgdG8gY29udmVydCBibG9iIHRvIGJhc2U2NFwiKSksci5yZWFkQXNEYXRhVVJMKGUpfSkpKShhKX1jYXRjaChlKXt0aHJvdyBuZXcgayhcIkZhaWxlZCB0byBjb252ZXJ0IGJsb2IgdG8gYmFzZTY0XCIsZSl9fWNvbnN0IHc9KGF3YWl0IGZpbi5TeXN0ZW0uZ2V0UnVudGltZUluZm8oKSkubWFuaWZlc3RVcmwsYj0oeD17Y29udGV4dDpsLGludGVudDphP2NlLlZpZXdDaGFydDpjZS5WaWV3SW5zdHJ1bWVudCx2ZXJzaW9uOlp9LCgwLHouY29tcHJlc3MpKEpTT04uc3RyaW5naWZ5KHgpLHtvdXRwdXRFbmNvZGluZzpcIkJhc2U2NFwifSkpO3ZhciB4O2NvbnN0IF89YCR7d30/JCQke3VlfT0ke2VuY29kZVVSSUNvbXBvbmVudChiKX1gLEw9YGh0dHBzOi8vc3RhcnQub3BlbmZpbi5jby8/bWFuaWZlc3Q9JHtlbmNvZGVVUklDb21wb25lbnQoXyl9YCxPPXskc2NoZW1hOlwiaHR0cDovL2FkYXB0aXZlY2FyZHMuaW8vc2NoZW1hcy9hZGFwdGl2ZS1jYXJkLmpzb25cIix0eXBlOlwiQWRhcHRpdmVDYXJkXCIsdmVyc2lvbjpcIjEuNFwiLGJvZHk6W3t0eXBlOlwiQ29sdW1uU2V0XCIsY29sdW1uczpbe3R5cGU6XCJDb2x1bW5cIix3aWR0aDpcInN0cmV0Y2hcIixpdGVtczpbe3R5cGU6XCJDb250YWluZXJcIixpdGVtczpbe3R5cGU6XCJUZXh0QmxvY2tcIix0ZXh0Om51bGwhPXA/cDpkLnRvVXBwZXJDYXNlKCksd3JhcDohMCxzaXplOlwiTGFyZ2VcIixzcGFjaW5nOlwiTm9uZVwifSxwJiZ7dHlwZTpcIlRleHRCbG9ja1wiLHRleHQ6ZC50b1VwcGVyQ2FzZSgpLGlzU3VidGxlOiEwLHdyYXA6ITAsc3BhY2luZzpcIk5vbmVcIn0saCYme3R5cGU6XCJUZXh0QmxvY2tcIix0ZXh0OmB7e0RBVEUoJHtofSwgU0hPUlQpfX0ge3tUSU1FKCR7aH0pfX1gLHdyYXA6ITAsc2l6ZTpcIlNtYWxsXCJ9XX1dfSxudWxsIT1zJiYheSYme3R5cGU6XCJDb2x1bW5cIix3aWR0aDpcInN0cmV0Y2hcIixpdGVtczpbe3R5cGU6XCJUZXh0QmxvY2tcIix0ZXh0OnMudG9GaXhlZCgyKSxzaXplOlwiRXh0cmFMYXJnZVwiLHdyYXA6ITAsaG9yaXpvbnRhbEFsaWdubWVudDpcIlJpZ2h0XCJ9LG51bGwhPXYmJm51bGwhPWcmJnt0eXBlOlwiVGV4dEJsb2NrXCIsdGV4dDpgJHttfSAke3YudG9GaXhlZCgyKX0gKCR7Zy50b0ZpeGVkKDIpfSUpYCxjb2xvcjpDLHNwYWNpbmc6XCJOb25lXCIsd3JhcDohMCxob3Jpem9udGFsQWxpZ25tZW50OlwiUmlnaHRcIn0sKG51bGwhPWZ8fG51bGwhPWN8fG51bGwhPXUpJiZ7dHlwZTpcIkNvbnRhaW5lclwiLGhvcml6b250YWxBbGlnbm1lbnQ6XCJSaWdodFwiLGl0ZW1zOlt7dHlwZTpcIkNvbHVtblNldFwiLGNvbHVtbnM6W3t0eXBlOlwiQ29sdW1uXCIsd2lkdGg6XCJzdHJldGNoXCIsaXRlbXM6W251bGwhPWYmJnt0eXBlOlwiVGV4dEJsb2NrXCIsdGV4dDpcIk9wZW5cIix3cmFwOiEwLGhvcml6b250YWxBbGlnbm1lbnQ6XCJSaWdodFwiLHNpemU6XCJTbWFsbFwiLHdlaWdodDpcIkJvbGRlclwiLHNwYWNpbmc6XCJOb25lXCJ9LG51bGwhPWMmJnt0eXBlOlwiVGV4dEJsb2NrXCIsdGV4dDpcIkhpZ2hcIix3cmFwOiEwLHNwYWNpbmc6XCJOb25lXCIsaG9yaXpvbnRhbEFsaWdubWVudDpcIlJpZ2h0XCIsc2l6ZTpcIlNtYWxsXCIsd2VpZ2h0OlwiQm9sZGVyXCJ9LG51bGwhPXUmJnt0eXBlOlwiVGV4dEJsb2NrXCIsdGV4dDpcIkxvd1wiLHdyYXA6ITAsc3BhY2luZzpcIk5vbmVcIixob3Jpem9udGFsQWxpZ25tZW50OlwiUmlnaHRcIixzaXplOlwiU21hbGxcIix3ZWlnaHQ6XCJCb2xkZXJcIn1dfSx7dHlwZTpcIkNvbHVtblwiLHdpZHRoOlwiYXV0b1wiLGl0ZW1zOltudWxsIT1mJiZ7dHlwZTpcIlRleHRCbG9ja1wiLHRleHQ6Zi50b0ZpeGVkKDIpLHdyYXA6ITAsc3BhY2luZzpcIk5vbmVcIixob3Jpem9udGFsQWxpZ25tZW50OlwiUmlnaHRcIixzaXplOlwiU21hbGxcIn0sbnVsbCE9YyYme3R5cGU6XCJUZXh0QmxvY2tcIix0ZXh0OmMudG9GaXhlZCgyKSx3cmFwOiEwLHNwYWNpbmc6XCJOb25lXCIsaG9yaXpvbnRhbEFsaWdubWVudDpcIlJpZ2h0XCIsc2l6ZTpcIlNtYWxsXCJ9LG51bGwhPXUmJnt0eXBlOlwiVGV4dEJsb2NrXCIsdGV4dDp1LnRvRml4ZWQoMiksd3JhcDohMCxzcGFjaW5nOlwiTm9uZVwiLGhvcml6b250YWxBbGlnbm1lbnQ6XCJSaWdodFwiLHNpemU6XCJTbWFsbFwifV19XX1dLHNwYWNpbmc6XCJTbWFsbFwifV19XX0seSYme3R5cGU6XCJJbWFnZVwiLHVybDpcIi4uL2hvc3RlZENvbnRlbnRzLzEvJHZhbHVlXCIsc3BhY2luZzpcIlNtYWxsXCJ9LHt0eXBlOlwiQWN0aW9uU2V0XCIsYWN0aW9uczpbe3R5cGU6XCJBY3Rpb24uT3BlblVybFwiLHVybDpMLHRpdGxlOlwiT3BlblwifV19XX0sRT17YXR0YWNobWVudHM6W3tpZDpcIjFcIixjb250ZW50VHlwZTpcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC5hZGFwdGl2ZVwiLGNvbnRlbnQ6SlNPTi5zdHJpbmdpZnkoWShPKSl9XSxib2R5Ontjb250ZW50VHlwZTpcImh0bWxcIixjb250ZW50Oic8YXR0YWNobWVudCBpZD1cIjFcIj48L2F0dGFjaG1lbnQ+J30sc3VtbWFyeTpcIlRlc3Qgc3VtbWFyeVwifTtpZih5KXtjb25zdFssZSx0XT1bLi4ueS5tYXRjaCgvXmRhdGE6KFteO10rKTtiYXNlNjQsKC4rKSQvaSldO0UuaG9zdGVkQ29udGVudHM9W3tcIkBtaWNyb3NvZnQuZ3JhcGgudGVtcG9yYXJ5SWRcIjpcIjFcIixjb250ZW50Qnl0ZXM6dCxjb250ZW50VHlwZTplfV19cmV0dXJuIEV9KSh0aGlzLnByb3ZpZGVyLGUpO2xldCBsO2lmKEFycmF5LmlzQXJyYXkoZS50YXJnZXQpKXtjb25zdHt0YXJnZXQ6dH09ZSxuPWF3YWl0IFcodGhpcy5wcm92aWRlcix0LFtcImRpc3BsYXlOYW1lXCIsXCJtYWlsXCJdKSxyPW4uZmlsdGVyKEJvb2xlYW4pO2lmKCFyLmxlbmd0aClyZXR1cm4gdGhpcy5sb2dnZXIubG9nV2FybmluZyhcIkNvdWxkIG5vdCByZXNvbHZlIGFueSB2YWxpZCB1c2VycyBmcm9tIGVtYWlsIGFkZHJlc3Nlc1wiLHQpLHQubWFwKCgoKT0+e30pKTtjb25zdHtpZDpvLHdlYlVybDpzfT1hd2FpdChhc3luYyhlLHQpPT57Y29uc3Qgbj17Y2hhdFR5cGU6dC5sZW5ndGg+Mj9cImdyb3VwXCI6XCJvbmVPbk9uZVwiLG1lbWJlcnM6dC5tYXAoKHQ9Pih7XCJAb2RhdGEudHlwZVwiOlwiI21pY3Jvc29mdC5ncmFwaC5hYWRVc2VyQ29udmVyc2F0aW9uTWVtYmVyXCIscm9sZXM6Syh0KT9bXCJndWVzdFwiXTpbXCJvd25lclwiXSxcInVzZXJAb2RhdGEuYmluZFwiOmAke2UuYXBpT3JpZ2lufS92MS4wL3VzZXJzKCcke3QuaWR9JylgfSkpKX0se2RhdGE6cn09YXdhaXQgZS5leGVjdXRlQXBpUmVxdWVzdChcIi92MS4wL2NoYXRzXCIsXCJQT1NUXCIsbik7cmV0dXJuIHJ9KSh0aGlzLnByb3ZpZGVyLFt0aGlzLnByb3ZpZGVyLmN1cnJlbnRVc2VyLC4uLnJdKSx7ZGF0YTpjfT1hd2FpdCB0aGlzLnByb3ZpZGVyLmV4ZWN1dGVBcGlSZXF1ZXN0KGAvdjEuMC9jaGF0cy8ke2VuY29kZVVSSUNvbXBvbmVudChvKX0vbWVzc2FnZXNgLFwiUE9TVFwiLGEpO3RoaXMubG9nZ2VyLmxvZ0luZm8oXCJTZW50IGNoYXQgbWVzc2FnZVwiLGMpLGkmJmF3YWl0IHRoaXMub3BlblVybChzKSxsPUcobil9ZWxzZXtjb25zdHt0YXJnZXQ6dH09ZSxuPWF3YWl0IHBlKHRoaXMucHJvdmlkZXIsdC50ZWFtSWQsdC5jaGFubmVsSWQpO2lmKCFuKXJldHVybiB2b2lkIHRoaXMubG9nZ2VyLmxvZ1dhcm5pbmcoXCJDb3VsZCBub3QgcmVzb2x2ZSB0ZWFtL2NoYW5uZWxcIix0LnRlYW1JZCx0LmNoYW5uZWxJZCk7Y29uc3R7Y2hhbm5lbElkOnIsdGVhbUlkOm99PW4se2RhdGE6c309YXdhaXQgdGhpcy5wcm92aWRlci5leGVjdXRlQXBpUmVxdWVzdChgL3YxLjAvdGVhbXMvJHtlbmNvZGVVUklDb21wb25lbnQobyl9L2NoYW5uZWxzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHIpfS9tZXNzYWdlc2AsXCJQT1NUXCIsYSk7dGhpcy5sb2dnZXIubG9nSW5mbyhcIlNlbnQgY2hhdCBtZXNzYWdlXCIscyksaSYmYXdhaXQgdGhpcy5vcGVuVXJsKHMud2ViVXJsKSxsPW59cmV0dXJuIHRoaXMubG9nZ2VyLmxvZ0luZm8oXCJzaGFyZSBjb21wbGV0ZWRcIixsKSxsfWNhdGNoKGUpe3Rocm93IHRoaXMubG9nZ2VyLmxvZ0Vycm9yKGUpLGV9fWFzeW5jIHN0YXJ0Q2FsbChlPVtdLHQ9ITEpe3RoaXMubG9nZ2VyLmxvZ0luZm8oXCJzdGFydENhbGwgc3RhcnRlZFwiLGUpO3RyeXtsZXQgbj1gJHtmZSh0aGlzLnVzZU1zVGVhbXNQcm90b2NvbCl9L2wvY2FsbC8wLzA/YDtjb25zdCByPWF3YWl0IFcodGhpcy5wcm92aWRlcixlLFtcImRpc3BsYXlOYW1lXCIsXCJtYWlsXCJdKSxvPXIuZmlsdGVyKEJvb2xlYW4pLm1hcCgoZT0+ZW5jb2RlVVJJQ29tcG9uZW50KGUudXNlclByaW5jaXBhbE5hbWUpKSk7aWYoIW8ubGVuZ3RoKXJldHVybiB0aGlzLmxvZ2dlci5sb2dXYXJuaW5nKFwiQ291bGQgbm90IHJlc29sdmUgYW55IHZhbGlkIHVzZXJzIGZyb20gc3VwcGxpZWQgZW1haWxzXCIsZSksZS5tYXAoKCgpPT57fSkpO24rPWB1c2Vycz0ke28uam9pbihcIixcIil9JndpdGhWaWRlbz0ke3R9YCx0aGlzLmxvZ2dlci5sb2dJbmZvKFwiT3BlbmluZyBUZWFtc1wiLG4pLGF3YWl0IGZpbi5TeXN0ZW0ub3BlblVybFdpdGhCcm93c2VyKG4pO2NvbnN0IGk9RyhyKTtyZXR1cm4gdGhpcy5sb2dnZXIubG9nSW5mbyhcInN0YXJ0Q2FsbCBjb21wbGV0ZWRcIixpKSxpfWNhdGNoKGUpe3Rocm93IHRoaXMubG9nZ2VyLmxvZ0Vycm9yKGUpLGV9fWFzeW5jIHN0YXJ0Q2hhdChlKXt0aGlzLmxvZ2dlci5sb2dJbmZvKFwic3RhcnRDaGF0IHN0YXJ0ZWRcIixlKTt0cnl7bGV0IHQsbjtpZihcInRlYW1JZFwiaW4gZSl7Y29uc3R7dGVhbUlkOnIsY2hhbm5lbElkOm99PWUsaT1hd2FpdCBwZSh0aGlzLnByb3ZpZGVyLHIsbyk7aWYoIWkpcmV0dXJuIHZvaWQgdGhpcy5sb2dnZXIubG9nV2FybmluZyhcIkNvdWxkIG5vdCByZXNvbHZlIHRlYW0vY2hhbm5lbFwiLHIsbyk7dD1gJHtmZSh0aGlzLnVzZU1zVGVhbXNQcm90b2NvbCl9L2wvY2hhbm5lbC8ke2VuY29kZVVSSUNvbXBvbmVudChpLmNoYW5uZWxJZCl9LyR7ZW5jb2RlVVJJQ29tcG9uZW50KGkuY2hhbm5lbE5hbWUpfT9ncm91cElkPSR7aS50ZWFtSWR9JnRlbmFudElkPSR7dGhpcy5wcm92aWRlci50ZW5hbnRJZH1gLG49aX1lbHNle2NvbnN0e2VtYWlsQWRkcmVzc2VzOnIsbWVzc2FnZTpvLHRvcGljTmFtZTppfT1lO3Q9YCR7ZmUodGhpcy51c2VNc1RlYW1zUHJvdG9jb2wpfS9sL2NoYXQvMC8wP2A7Y29uc3QgYT1hd2FpdCBXKHRoaXMucHJvdmlkZXIscixbXCJkaXNwbGF5TmFtZVwiLFwibWFpbFwiXSksbD1hLmZpbHRlcihCb29sZWFuKS5tYXAoKGU9PmVuY29kZVVSSUNvbXBvbmVudChlLnVzZXJQcmluY2lwYWxOYW1lKSkpO2lmKCFsLmxlbmd0aClyZXR1cm4gdGhpcy5sb2dnZXIubG9nV2FybmluZyhcIkNvdWxkIG5vdCByZXNvbHZlIGFueSB2YWxpZCB1c2VycyBmcm9tIGVtYWlsIGFkZHJlc3Nlc1wiLHIpLHIubWFwKCgoKT0+e30pKTt0Kz1gdXNlcnM9JHtsLmpvaW4oXCIsXCIpfWAsaSYmKHQrPWAmdG9waWNOYW1lPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGkpfWApLG8mJih0Kz1gJm1lc3NhZ2U9JHtlbmNvZGVVUklDb21wb25lbnQobyl9YCksbj1HKGEpfXJldHVybiB0aGlzLmxvZ2dlci5sb2dJbmZvKFwiT3BlbmluZyBUZWFtc1wiLHQpLGF3YWl0IGZpbi5TeXN0ZW0ub3BlblVybFdpdGhCcm93c2VyKHQpLHRoaXMubG9nZ2VyLmxvZ0luZm8oXCJzdGFydENoYXQgY29tcGxldGVkXCIsbiksbn1jYXRjaChlKXt0aHJvdyB0aGlzLmxvZ2dlci5sb2dFcnJvcihlKSxlfX19fSw5MTooKT0+e319LE49e307ZnVuY3Rpb24gVShlKXt2YXIgdD1OW2VdO2lmKHZvaWQgMCE9PXQpcmV0dXJuIHQuZXhwb3J0czt2YXIgbj1OW2VdPXtpZDplLGxvYWRlZDohMSxleHBvcnRzOnt9fTtyZXR1cm4gRltlXS5jYWxsKG4uZXhwb3J0cyxuLG4uZXhwb3J0cyxVKSxuLmxvYWRlZD0hMCxuLmV4cG9ydHN9VS5jPU4sVS5kPShlLHQpPT57Zm9yKHZhciBuIGluIHQpVS5vKHQsbikmJiFVLm8oZSxuKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTohMCxnZXQ6dFtuXX0pfSxVLmc9ZnVuY3Rpb24oKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsVGhpcylyZXR1cm4gZ2xvYmFsVGhpczt0cnl7cmV0dXJuIHRoaXN8fG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCl9Y2F0Y2goZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93fX0oKSxVLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpLFUubm1kPWU9PihlLnBhdGhzPVtdLGUuY2hpbGRyZW58fChlLmNoaWxkcmVuPVtdKSxlKTt2YXIgVz1VKFUucz01NCksej0oVy5NUyxXLmNGLFcuQUspLEc9KFcuTV8sVy5jWCxXLkJULFcuX1csVy5QZykscT1XLiRqLFk9KFcuVSQsVy5VNyk7bGV0IEs9MDtjb25zdCBYPXtjaGF0TWVzc2FnZTpcIkNoYXQgTWVzc2FnZVwiLGV2ZW50OlwiRXZlbnRcIixtZXNzYWdlOlwiRW1haWxcIixkcml2ZTpcIkRvY3VtZW50XCIsY29udGFjdDpcIkNvbnRhY3RcIix1c2VyOlwiVXNlclwiLGxpc3Q6XCJMaXN0XCJ9LEo9e3BkZjpcIlBERlwiLGRvY3g6XCJXb3JkXCIscHB0eDpcIlBvd2VyUG9pbnRcIix4bHN4OlwiRXhjZWxcIixvbmVub3RlOlwiT25lTm90ZVwifSxRPXtjaGF0TWVzc2FnZTpbXCJDaGF0LlJlYWRcIixcIkNoYW5uZWxNZXNzYWdlLlJlYWQuQWxsXCJdLGxpc3Q6W1wiU2l0ZXMuUmVhZC5BbGxcIl0sZXZlbnQ6W1wiQ2FsZW5kYXJzLlJlYWRcIl0sbWVzc2FnZTpbXCJNYWlsLlJlYWRXcml0ZS5TaGFyZWRcIl0sY29udGFjdDpbXCJDb250YWN0cy5SZWFkLlNoYXJlZFwiLFwiTWFpbC5SZWFkV3JpdGUuU2hhcmVkXCJdLHVzZXI6W1wiVXNlci5SZWFkLkFsbFwiLFwiUHJlc2VuY2UuUmVhZC5BbGxcIl19LGVlPVwiTUlDUk9TT0ZUXzM2NV9TRUFSQ0hfVFlQRV9GSUxURVJcIix0ZT1cIk1JQ1JPU09GVF8zNjVfU0VBUkNIX0ZJTEVfVFlQRV9GSUxURVJcIixuZT1cIk1JQ1JPU09GVF8zNjVfU0VBUkNIX0RFUEFSVE1FTlRfRklMVEVSXCIscmU9XCJNSUNST1NPRlRfMzY1X1NFQVJDSF9KT0JfVElUTEVfRklMVEVSXCIsb2U9XCJUZWFtcyBDYWxsXCIsaWU9XCJUZWFtcyBDaGF0XCIsYWU9XCJFbWFpbFwiLGxlPShlLHQpPT57Y29uc3Qgbj1bXSxyPXtpdGVtOmUuY29udGV4dC5zZWxlY3RlZEZpbHRlcnM/LmZpbmQoKGU9PmUuaWQ9PT1lZSkpLGRvY3VtZW50VHlwZTplLmNvbnRleHQuc2VsZWN0ZWRGaWx0ZXJzPy5maW5kKChlPT5lLmlkPT09dGUpKX0sbz1be3ZhbHVlOlwiRG9jdW1lbnRcIixpc1NlbGVjdGVkOiEhci5pdGVtPy5vcHRpb25zPy5maW5kKCgoe3ZhbHVlOmV9KT0+XCJGaWxlXCI9PT1lKSk/LmlzU2VsZWN0ZWR9LHt2YWx1ZTpcIkNvbnRhY3RcIixpc1NlbGVjdGVkOiEhci5pdGVtPy5vcHRpb25zPy5maW5kKCgoe3ZhbHVlOmV9KT0+XCJDb250YWN0XCI9PT1lKSk/LmlzU2VsZWN0ZWR9LHt2YWx1ZTpcIkNoYXQgTWVzc2FnZVwiLGlzU2VsZWN0ZWQ6ISFyLml0ZW0/Lm9wdGlvbnM/LmZpbmQoKCh7dmFsdWU6ZX0pPT5cIkNoYXQgTWVzc2FnZVwiPT09ZSkpPy5pc1NlbGVjdGVkfSx7dmFsdWU6XCJFbWFpbFwiLGlzU2VsZWN0ZWQ6ISFyLml0ZW0/Lm9wdGlvbnM/LmZpbmQoKCh7dmFsdWU6ZX0pPT5cIkVtYWlsXCI9PT1lKSk/LmlzU2VsZWN0ZWR9LHt2YWx1ZTpcIkV2ZW50XCIsaXNTZWxlY3RlZDohIXIuaXRlbT8ub3B0aW9ucz8uZmluZCgoKHt2YWx1ZTplfSk9PlwiRXZlbnRcIj09PWUpKT8uaXNTZWxlY3RlZH0se3ZhbHVlOlwiTGlzdFwiLGlzU2VsZWN0ZWQ6ISFyLml0ZW0/Lm9wdGlvbnM/LmZpbmQoKCh7dmFsdWU6ZX0pPT5cIkxpc3RcIj09PWUpKT8uaXNTZWxlY3RlZH1dO3JldHVybiBuLnB1c2goe2lkOmVlLHRpdGxlOlwiVHlwZVwiLHR5cGU6Qi5lbC5NdWx0aVNlbGVjdCxvcHRpb25zOm8uZmlsdGVyKChlPT50LmhhcyhlLnZhbHVlKSkpfSksXCJEb2N1bWVudFwiPT09ci5pdGVtPy5vcHRpb25zPy5maWx0ZXIoKGU9PmUuaXNTZWxlY3RlZCkpPy5bMF0udmFsdWUmJm4ucHVzaCh7aWQ6dGUsdGl0bGU6XCJGaWxlIFR5cGVcIix0eXBlOkIuZWwuTXVsdGlTZWxlY3Qsb3B0aW9uczpPYmplY3QuZW50cmllcyhKKS5tYXAoKChbLGVdKT0+KHt2YWx1ZTplLGlzU2VsZWN0ZWQ6ISFyLmRvY3VtZW50VHlwZT8ub3B0aW9ucz8uZmlsdGVyKChlPT5lLmlzU2VsZWN0ZWQpKT8uZmluZCgoKHt2YWx1ZTplfSk9PlwiRmlsZVwiPT09ZSkpPy5pc1NlbGVjdGVkfSkpKX0pLG59LHNlPShlLHQpPT57Y29uc3Qgbj10LmNvbnRleHQuc2VsZWN0ZWRGaWx0ZXJzPy5maW5kKChlPT5lLmlkPT09ZWUpKT8ub3B0aW9ucztpZighQXJyYXkuaXNBcnJheShuKXx8IW4uZmluZCgoZT0+XCJDb250YWN0XCI9PT1lLnZhbHVlfHxcIlVzZXJcIj09PWUudmFsdWUpKT8uaXNTZWxlY3RlZClyZXR1cm5bXTtjb25zdHtkZXBhcnRtZW50OnIsam9iVGl0bGU6b309ZS5yZWR1Y2UoKChlLHQpPT4odC5kZXBhcnRtZW50JiZlLmRlcGFydG1lbnQuYWRkKHQuZGVwYXJ0bWVudCksdC5qb2JUaXRsZSYmZS5qb2JUaXRsZS5hZGQodC5qb2JUaXRsZSksZSkpLHtkZXBhcnRtZW50Om5ldyBTZXQsam9iVGl0bGU6bmV3IFNldH0pLGk9dC5jb250ZXh0LnNlbGVjdGVkRmlsdGVycz8uZmluZCgoZT0+ZS5pZD09PW5lKSksYT1BcnJheS5mcm9tKHIpLm1hcCgoZT0+KHt2YWx1ZTplLGlzU2VsZWN0ZWQ6ISFpPy5vcHRpb25zPy5maW5kKCgoe3ZhbHVlOnR9KT0+dD09PWUpKT8uaXNTZWxlY3RlZH0pKSksbD10LmNvbnRleHQuc2VsZWN0ZWRGaWx0ZXJzPy5maW5kKChlPT5lLmlkPT09bmUpKSxzPUFycmF5LmZyb20obykubWFwKChlPT4oe3ZhbHVlOmUsaXNTZWxlY3RlZDohIWw/Lm9wdGlvbnM/LmZpbmQoKCh7dmFsdWU6dH0pPT50PT09ZSkpPy5pc1NlbGVjdGVkfSkpKTtyZXR1cm5be2lkOm5lLHRpdGxlOlwiRGVwYXJ0bWVudFwiLHR5cGU6Qi5lbC5NdWx0aVNlbGVjdCxvcHRpb25zOmF9LHtpZDpyZSx0aXRsZTpcIkpvYiBUaXRsZVwiLHR5cGU6Qi5lbC5NdWx0aVNlbGVjdCxvcHRpb25zOnN9XX0sY2U9ZT0+e2NvbnN0IHQ9ZS5jb250ZXh0LnNlbGVjdGVkRmlsdGVycz8uZmluZCgoZT0+ZS5pZD09PW5lKSksbj1BcnJheS5pc0FycmF5KHQ/Lm9wdGlvbnMpP3Qub3B0aW9ucy5maWx0ZXIoKGU9PmUuaXNTZWxlY3RlZCkpLm1hcCgoZT0+ZS52YWx1ZSkpOltdLHI9ZS5jb250ZXh0LnNlbGVjdGVkRmlsdGVycz8uZmluZCgoZT0+ZS5pZD09PXJlKSksbz1BcnJheS5pc0FycmF5KHI/Lm9wdGlvbnMpP3Iub3B0aW9ucy5maWx0ZXIoKGU9PmUuaXNTZWxlY3RlZCkpLm1hcCgoZT0+ZS52YWx1ZSkpOltdO3JldHVybntkZXBhcnRtZW50Om4sam9iVGl0bGU6b319LHVlPShlLHQpPT57Y29uc3R7ZGVwYXJ0bWVudDpuLGpvYlRpdGxlOnJ9PXQ7cmV0dXJuIGUuZmlsdGVyKChlPT4oIW4ubGVuZ3RofHxuLmluY2x1ZGVzKGUuZGVwYXJ0bWVudCkpJiYoIXIubGVuZ3RofHxyLmluY2x1ZGVzKGUuam9iVGl0bGUpKSkpfSxmZT1lPT57Y29uc3QgdD1BcnJheS5pc0FycmF5KGUuY29udGV4dC5zZWxlY3RlZEZpbHRlcnM/LmZpbmQoKGU9PmUuaWQ9PT10ZSkpPy5vcHRpb25zKT9lLmNvbnRleHQuc2VsZWN0ZWRGaWx0ZXJzLmZpbmQoKGU9PmUuaWQ9PT10ZSkpPy5vcHRpb25zOltdO3JldHVybntmaWx0ZXJGaWxlczp0JiZ0LnNvbWUoKCh7aXNTZWxlY3RlZDplfSk9PmUpKSxzaG93V29yZDp0LmZpbmQoKCh7dmFsdWU6ZX0pPT5cIldvcmRcIj09PWUpKT8uaXNTZWxlY3RlZCxzaG93RXhjZWw6dC5maW5kKCgoe3ZhbHVlOmV9KT0+XCJFeGNlbFwiPT09ZSkpPy5pc1NlbGVjdGVkLHNob3dQb3dlclBvaW50OnQuZmluZCgoKHt2YWx1ZTplfSk9PlwiUG93ZXJQb2ludFwiPT09ZSkpPy5pc1NlbGVjdGVkLHNob3dQREY6dC5maW5kKCgoe3ZhbHVlOmV9KT0+XCJQREZcIj09PWUpKT8uaXNTZWxlY3RlZCxzaG93T25lTm90ZTp0LmZpbmQoKCh7dmFsdWU6ZX0pPT5cIk9uZU5vdGVcIj09PWUpKT8uaXNTZWxlY3RlZH19LGRlPShlLHQpPT57Y29uc3Qgbj1bXTtyZXR1cm4gdC5zaG93V29yZCYmbi5wdXNoKFwiLmRvY3hcIiksdC5zaG93RXhjZWwmJm4ucHVzaChcIi54bHN4XCIpLHQuc2hvd1Bvd2VyUG9pbnQmJm4ucHVzaChcIi5wcHR4XCIpLHQuc2hvd1BERiYmbi5wdXNoKFwiLnBkZlwiKSx0LnNob3dPbmVOb3RlJiZuLnB1c2goXCIub25lXCIpLGUuZmlsdGVyKChlPT57aWYoZS5maWxlKXtjb25zdCB0PWUubmFtZS5zdWJzdHJpbmcoZS5uYW1lLmxhc3RJbmRleE9mKFwiLlwiKSk7cmV0dXJuIG4uaW5jbHVkZXModCl9cmV0dXJuITF9KSl9LHBlPShlPVwiXCIpPT57c3dpdGNoKGUuc3BsaXQoXCIuXCIpLnBvcCgpPy50b0xvd2VyQ2FzZSgpPz9cIlwiKXtjYXNlXCJkb2N4XCI6Y2FzZVwiZG9jXCI6cmV0dXJuXCJNaWNyb3NvZnQgV29yZFwiO2Nhc2VcInhsc3hcIjpjYXNlXCJ4bHNcIjpyZXR1cm5cIk1pY3Jvc29mdCBFeGNlbFwiO2Nhc2VcInBwdHhcIjpjYXNlXCJwcHRcIjpyZXR1cm5cIk1pY3Jvc29mdCBQb3dlclBvaW50XCI7Y2FzZVwicGRmXCI6cmV0dXJuXCJQREZcIjtjYXNlXCJwbmdcIjpjYXNlXCJqcGdcIjpjYXNlXCJqcGVnXCI6Y2FzZVwiZ2lmXCI6cmV0dXJuXCJJbWFnZVwiO2Nhc2VcInR4dFwiOnJldHVyblwiVGV4dFwiO2RlZmF1bHQ6cmV0dXJuXCJGaWxlXCJ9fSxoZT0oZT1cIlwiKT0+e3N3aXRjaChlLnNwbGl0KFwiLlwiKS5wb3AoKT8udG9Mb3dlckNhc2UoKT8/XCJcIil7Y2FzZVwiZG9jeFwiOmNhc2VcImRvY1wiOnJldHVybigwLEEuSzMpKFAuZGUuTWljcm9zb2Z0MzY1QXNzZXRzLk1pY3Jvc29mdDM2NURvY3VtZW50SWNvbik7Y2FzZVwieGxzeFwiOmNhc2VcInhsc1wiOnJldHVybigwLEEuSzMpKFAuZGUuTWljcm9zb2Z0MzY1QXNzZXRzLk1pY3Jvc29mdDM2NUV4Y2VsSWNvbik7Y2FzZVwicHB0eFwiOmNhc2VcInBwdFwiOnJldHVybigwLEEuSzMpKFAuZGUuTWljcm9zb2Z0MzY1QXNzZXRzLk1pY3Jvc29mdDM2NVBvd2VycG9pbnRJY29uKTtjYXNlXCJwZGZcIjpyZXR1cm4oMCxBLkszKShQLmRlLk1pY3Jvc29mdDM2NUFzc2V0cy5QREZGaWxlSWNvbik7ZGVmYXVsdDpyZXR1cm59fSx2ZT1lPT5lLnJlcGxhY2UoL1xcKy9nLFwiX1wiKS5yZXBsYWNlKC9cXC8vZyxcIi1cIik7dmFyIGdlLENlLG1lLHllLHdlLGJlLHhlLF9lLExlLE9lLEVlLFNlLE1lLGplLGtlLFJlLFBlLEFlLEllLFRlLEhlLFZlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKFwiYVwiPT09biYmIXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P2UhPT10fHwhcjohdC5oYXMoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtyZXR1cm5cIm1cIj09PW4/cjpcImFcIj09PW4/ci5jYWxsKGUpOnI/ci52YWx1ZTp0LmdldChlKX0sQmU9ZnVuY3Rpb24oZSx0LG4scixvKXtpZihcIm1cIj09PXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtpZihcImFcIj09PXImJiFvKXRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdD9lIT09dHx8IW86IXQuaGFzKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtyZXR1cm5cImFcIj09PXI/by5jYWxsKGUsbik6bz9vLnZhbHVlPW46dC5zZXQoZSxuKSxufTtjbGFzcyBEZSBleHRlbmRzICR7Y29uc3RydWN0b3IoZSl7Y29uc3QgdD1FKHt9LHt3b3JrZmxvd3M6e3NlYXJjaDooSys9MSx7aG9tZVByb3ZpZGVyOntkZXNjcmlwdGlvbjpcIk1pY3Jvc29mdCAzNjUgc2VhcmNoIHJlc3VsdHMgcHJvdmlkZXJcIixpZDpgTVMzNjUtJHtmaW4ubWUuaWRlbnRpdHkudXVpZH0tJHtLfWAsbG9nb1VybDooMCxBLkszKShQLmRlLk1pY3Jvc29mdDM2NUFzc2V0cy5NaWNyb3NvZnQzNjVJY29uKSxpY29uOigwLEEuSzMpKFAuZGUuTWljcm9zb2Z0MzY1QXNzZXRzLk1pY3Jvc29mdDM2NUljb24pLHRpdGxlOlwiTWljcm9zb2Z0IDM2NSBTZWFyY2hcIixpbnB1dFBsYWNlaG9sZGVyOlwiV2hhdCB3b3VsZCB5b3UgbGlrZSB0byBzZWFyY2ggaW4gTWljcm9zb2Z0IDM2NSB0b2RheT9cIixkaXNwYXRjaEZvY3VzRXZlbnRzOiEwfSxtaWNyb3NvZnRFbnRpdHlUeXBlQ29uZmlnOnttZXNzYWdlOiEwLGNoYXRNZXNzYWdlOiEwLGRyaXZlOiEwLGV2ZW50OiEwLHVzZXI6ITAsY29udGFjdDohMCxsaXN0OiEwfSx1c2VUZWFtc0RlZXBMaW5rOiEwfSl9fSxlKTtzdXBlcih0KSxnZS5hZGQodGhpcyksQ2Uuc2V0KHRoaXMsdm9pZCAwKSx0aGlzLndvcmtmbG93SW50ZWdyYXRpb25OYW1lPVwiTWljcm9zb2Z0IDM2NVwiLG1lLnNldCh0aGlzLHZvaWQgMCkseWUuc2V0KHRoaXMsdm9pZCAwKSx3ZS5zZXQodGhpcywxKSxiZS5zZXQodGhpcyxuZXcgU2V0KSx4ZS5zZXQodGhpcyxuZXcgTCgxMDApKSxfZS5zZXQodGhpcyxuZXcgSCg2ZTQpKSx0aGlzLmNvbm5lY3Q9YXN5bmMoZT10aGlzLmNvbmZpZy5jb25uZWN0KT0+e2NvbnN0e2NsaWVudElkOnQsdGVuYW50SWQ6bixyZWRpcmVjdFVyaTpyfT1lLG89dGhpcy5jb25maWcud29ya2Zsb3dzPy5zZWFyY2g/T2JqZWN0LmVudHJpZXModGhpcy5jb25maWcud29ya2Zsb3dzPy5zZWFyY2g/Lm1pY3Jvc29mdEVudGl0eVR5cGVDb25maWc/P3t9KS5maWx0ZXIoKChbZSx0XSk9PnQpKS5tYXAoKChbZV0pPT5RW2VdKSkuZmlsdGVyKChlPT52b2lkIDAhPT1lKSkuZmxhdCgpOltdO3RoaXMuY29uZmlnLmNvbm5lY3Q9ZSxCZSh0aGlzLENlLGF3YWl0IHEodCxuLHIsWy4uLm5ldyBTZXQobyldKSxcImZcIil9LExlLnNldCh0aGlzLCgoKT0+e2lmKCFWZSh0aGlzLENlLFwiZlwiKSl0aHJvdyBuZXcgRXJyb3IoXCJNaWNyb3NvZnQzNjVXb3JrZmxvd0ludGVncmF0aW9uIG5vdCBjb25uZWN0ZWRcIik7cmV0dXJuIFZlKHRoaXMsQ2UsXCJmXCIpfSkpLGplLnNldCh0aGlzLChhc3luYyBlPT57aWYoQmUodGhpcyx5ZSxlLFwiZlwiKSxlLmRhdGE/Lml0ZW0/LmlkKXtjb25zdCB0PVZlKHRoaXMsX2UsXCJmXCIpLmdldChlLmRhdGEuaXRlbS5pZCk7aWYodClyZXR1cm4gdm9pZCBWZSh0aGlzLG1lLFwiZlwiKS5yZXNwb25kKFt0XSl9aWYoXCJ1c2VyXCI9PT1lLmRhdGE/LnR5cGUpVmUodGhpcyxJZSxcImZcIikuY2FsbCh0aGlzLGUpfSkpLGtlLnNldCh0aGlzLChhc3luYyBlPT57YXdhaXQgZmluLlBsYXRmb3JtLmdldEN1cnJlbnRTeW5jKCkuY3JlYXRlV2luZG93KHtsYXlvdXQ6e2NvbnRlbnQ6W3t0eXBlOlwic3RhY2tcIixjb250ZW50Olt7dHlwZTpcImNvbXBvbmVudFwiLGNvbXBvbmVudE5hbWU6XCJ2aWV3XCIsY29tcG9uZW50U3RhdGU6e3VybDplfX1dfV19LHdvcmtzcGFjZVBsYXRmb3JtOnZvaWQgMH0pfSkpLFJlLnNldCh0aGlzLChhc3luYyBlPT57aWYoZS5kYXRhLml0ZW0uY2hhbm5lbElkZW50aXR5LnRlYW1JZCl7Y29uc3QgdD1uZXcgVVJMKGBtc3RlYW1zOi9sL2NoYW5uZWwvJHtlLmRhdGEuaXRlbS5jaGFubmVsSWRlbnRpdHkuY2hhbm5lbElkfS8ke2UuZGF0YS5pdGVtLmlkfWApO3JldHVybiExPT09dGhpcy5jb25maWcud29ya2Zsb3dzPy5zZWFyY2g/LnVzZVRlYW1zRGVlcExpbmsmJih0LnByb3RvY29sPVwiaHR0cHM6XCIpLHQuc2VhcmNoUGFyYW1zLmFwcGVuZChcImNvbnRleHRcIixKU09OLnN0cmluZ2lmeSh7Y29udGV4dFR5cGU6XCJjaGFubmVsXCJ9KSksdm9pZCBhd2FpdCBmaW4uU3lzdGVtLm9wZW5VcmxXaXRoQnJvd3Nlcih0LnRvU3RyaW5nKCkpfWNvbnN0IHQ9bmV3IFVSTChgbXN0ZWFtczovbC9tZXNzYWdlLyR7ZS5kYXRhLml0ZW0uY2hhdElkfS8ke2UuZGF0YS5pdGVtLmlkfWApOyExPT09dGhpcy5jb25maWcud29ya2Zsb3dzPy5zZWFyY2g/LnVzZVRlYW1zRGVlcExpbmsmJih0LnByb3RvY29sPVwiaHR0cHM6XCIpLHQuc2VhcmNoUGFyYW1zLmFwcGVuZChcImNvbnRleHRcIixKU09OLnN0cmluZ2lmeSh7Y29udGV4dFR5cGU6XCJjaGF0XCJ9KSksYXdhaXQgZmluLlN5c3RlbS5vcGVuVXJsV2l0aEJyb3dzZXIodC50b1N0cmluZygpKX0pKSxQZS5zZXQodGhpcywoYXN5bmMgZT0+e3N3aXRjaChlLmFjdGlvbi5uYW1lKXtjYXNlIG9lOntjb25zdCB0PW5ldyBHKFZlKHRoaXMsTGUsXCJmXCIpLmNhbGwodGhpcyksdGhpcy5jb25maWcud29ya2Zsb3dzPy5zZWFyY2g/LnVzZVRlYW1zRGVlcExpbmspO1ZlKHRoaXMsZ2UsXCJtXCIsT2UpLmNhbGwodGhpcywoKCk9PnQuc3RhcnRDYWxsKFtlLmRhdGEuaXRlbS5tYWlsXSkpKTticmVha31jYXNlIGFlOntjb25zdCB0PWF3YWl0IHRoaXMuZXhlY3V0ZUFwaVJlcXVlc3QoXCIvdjEuMC9tZS9tZXNzYWdlc1wiLFwiUE9TVFwiLHt0b1JlY2lwaWVudHM6W3tlbWFpbEFkZHJlc3M6e2FkZHJlc3M6ZS5kYXRhLml0ZW0ubWFpbH19XX0pO2F3YWl0IFZlKHRoaXMsa2UsXCJmXCIpLmNhbGwodGhpcyx0LmRhdGEud2ViTGluayk7YnJlYWt9Y2FzZSBpZTpjb25zdCB0PVZlKHRoaXMsTGUsXCJmXCIpLmNhbGwodGhpcyksbj1uZXcgRyh0LHRoaXMuY29uZmlnLndvcmtmbG93cz8uc2VhcmNoPy51c2VUZWFtc0RlZXBMaW5rKTtWZSh0aGlzLGdlLFwibVwiLE9lKS5jYWxsKHRoaXMsKCgpPT5uLnN0YXJ0Q2hhdCh7ZW1haWxBZGRyZXNzZXM6W3QuY3VycmVudFVzZXIubWFpbCxlLmRhdGEuaXRlbS5tYWlsXX0pKSk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oXCJVbmhhbmRsZWQgdXNlciBhY3Rpb24gZm9yIHJlc3VsdDpcIixlLGBVbmtub3duIGFjdGlvbiBcIiR7ZS5hY3Rpb24ubmFtZX1cImApfX0pKSxBZS5zZXQodGhpcywoYXN5bmMgZT0+e3N3aXRjaChlLmRhdGEudHlwZSl7Y2FzZVwiZHJpdmVJdGVtXCI6VmUodGhpcyxrZSxcImZcIikuY2FsbCh0aGlzLGUuZGF0YS5pdGVtLndlYlVybCk7YnJlYWs7Y2FzZVwiZXZlbnRcIjpjb25zdCB0PWUuZGF0YS5pdGVtLG49YXdhaXQgdGhpcy5leGVjdXRlQXBpUmVxdWVzdChgL3YxLjAvbWUvZXZlbnRzLyR7dC5pZH1gKTtWZSh0aGlzLGtlLFwiZlwiKS5jYWxsKHRoaXMsbi5kYXRhLndlYkxpbmspO2JyZWFrO2Nhc2VcImNoYXRNZXNzYWdlXCI6VmUodGhpcyxSZSxcImZcIikuY2FsbCh0aGlzLGUpO2JyZWFrO2Nhc2VcIm1lc3NhZ2VcIjpWZSh0aGlzLGtlLFwiZlwiKS5jYWxsKHRoaXMsZS5kYXRhLml0ZW0ud2ViTGluayk7YnJlYWs7Y2FzZVwibGlzdFwiOmNvbnN0IHI9ZS5kYXRhLml0ZW0sbz1hd2FpdCB0aGlzLmV4ZWN1dGVBcGlSZXF1ZXN0KGAvdjEuMC9zaXRlcy8ke3IucGFyZW50UmVmZXJlbmNlPy5zaXRlSWR9L2xpc3RzLyR7ci5pZH1gKTtWZSh0aGlzLGtlLFwiZlwiKS5jYWxsKHRoaXMsby5kYXRhLndlYlVybCk7YnJlYWs7Y2FzZVwidXNlclwiOlZlKHRoaXMsUGUsXCJmXCIpLmNhbGwodGhpcyxlKTticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybihcIlVuaGFuZGxlZCB1c2VyIGFjdGlvbiBmb3IgcmVzdWx0OlwiLGUsYFVua25vd24gcmVzdWx0IHR5cGUgXCIke2UuZGF0YS50eXBlfVwiYCl9fSkpLEllLnNldCh0aGlzLChhc3luYyBlPT57bGV0IHQsbjtjb25zdCByPVtdLG89ZS5kYXRhLml0ZW07VmUodGhpcyx4ZSxcImZcIikuaGFzKG8uaWQpP3Q9VmUodGhpcyx4ZSxcImZcIikuZ2V0KG8uaWQpOnIucHVzaCh7aWQ6XCJjb250YWN0UGhvdG9cIixtZXRob2Q6XCJHRVRcIix1cmw6YC91c2Vycy8ke2UuZGF0YS5pdGVtLmlkfS9waG90by8kdmFsdWVgLGhlYWRlcnM6e0NvbnNpc3RlbmN5TGV2ZWw6XCJldmVudHVhbFwifX0pLHIucHVzaCh7aWQ6XCJwcmVzZW5jZVwiLG1ldGhvZDpcIkdFVFwiLHVybDpgL3VzZXJzLyR7ZS5kYXRhLml0ZW0uaWR9L3ByZXNlbmNlYH0pO3RyeXtjb25zdCBlPWF3YWl0IFZlKHRoaXMsZ2UsXCJtXCIsRWUpLmNhbGwodGhpcyxyKSxhPWUuZGF0YT8ucmVzcG9uc2VzLmZpbmQoKGU9PlwiY29udGFjdFBob3RvXCI9PT1lLmlkKSk7YSYmMjAwIT09YS5zdGF0dXMmJmNvbnNvbGUud2FybihcIkVycm9yIGZldGNoaW5nIHVzZXIgcGhvdG9cIixhKSxhPy5ib2R5JiYyMDA9PT1hPy5zdGF0dXMmJih0PWBkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCR7YS5ib2R5fWAsVmUodGhpcyx4ZSxcImZcIikucHV0KG8uaWQsdCkpO2NvbnN0IGw9ZS5kYXRhPy5yZXNwb25zZXMuZmluZCgoZT0+XCJwcmVzZW5jZVwiPT09ZS5pZCkpOzIwMCE9PWwuc3RhdHVzJiZjb25zb2xlLndhcm4oXCJFcnJvciBmZXRjaGluZyB1c2VyIHByZXNlbmNlXCIsbCksbD8uYm9keSYmMjAwPT09bC5zdGF0dXMmJihpPWwuYm9keSxuPXthdmFpbGFibGU6XCJhdmFpbGFibGVcIixhdmFpbGFibGVpZGxlOlwiYXZhaWxhYmxlXCIsYXdheTpcImF3YXlcIixiZXJpZ2h0YmFjazpcImF3YXlcIixidXN5OlwiYnVzeVwiLGJ1c3lpZGxlOlwiYnVzeVwiLGRvbm90ZGlzdHVyYjpcImRvLW5vdC1kaXN0dXJiXCIsb2ZmbGluZTpcIm9mZmxpbmVcIixwcmVzZW5jZXVua25vd246XCJvZmZsaW5lXCJ9W2kuYXZhaWxhYmlsaXR5Py50b0xvd2VyQ2FzZSgpXSl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihcIkVycm9yIGZldGNoaW5nIHVzZXIgZGF0YVwiLGUpfXZhciBpO2NvbnN0IGE9W1tcIkRlcGFydG1lbnRcIixvLmRlcGFydG1lbnR8fFwiTi9BXCJdLFtcIkVtYWlsXCIsby5tYWlsfHxcIk4vQVwiXSxbXCJXb3JrIFBob25lXCIsby5idXNpbmVzc1Bob25lcz8uWzBdfHxcIk4vQVwiXSxbXCJNb2JpbGVcIixvLm1vYmlsZVBob25lfHxcIk4vQVwiXSxbXCJMb2NhdGlvblwiLG8ub2ZmaWNlTG9jYXRpb258fFwiTi9BXCJdXSxsPXsuLi5lLHRlbXBsYXRlOkIueVcuQ29udGFjdCx0ZW1wbGF0ZUNvbnRlbnQ6e25hbWU6ZS5kYXRhLml0ZW0uZGlzcGxheU5hbWUsdGl0bGU6ZS5kYXRhLml0ZW0uam9iVGl0bGUsZGV0YWlsczpbYV0scGhvdG9Vcmw6dCxvbmxpbmVTdGF0dXM6bixidXR0b25zOlt7dHlwZTpcImJ1dHRvblwiLGljb246e2xpZ2h0OigwLEEuSzMpKFAuZGUuQ2FsbEljb25MaWdodCksZGFyazooMCxBLkszKShQLmRlLkNhbGxJY29uRGFyayl9LHRvb2x0aXA6XCJUZWFtcyBDYWxsXCIsYWN0aW9uOm9lfSx7dHlwZTpcImJ1dHRvblwiLGljb246e2xpZ2h0OigwLEEuSzMpKFAuZGUuQ2hhdEljb25MaWdodCksZGFyazooMCxBLkszKShQLmRlLkNoYXRJY29uRGFyayl9LHRvb2x0aXA6XCJDaGF0XCIsYWN0aW9uOmllfSx7dHlwZTpcImJ1dHRvblwiLGljb246e2xpZ2h0OigwLEEuSzMpKFAuZGUuTWVzc2FnZUljb25MaWdodCksZGFyazooMCxBLkszKShQLmRlLk1lc3NhZ2VJY29uRGFyayl9LHRvb2x0aXA6XCJFLW1haWxcIixhY3Rpb246YWV9XX19O1ZlKHRoaXMsX2UsXCJmXCIpLnB1dChlLmRhdGEuaXRlbS5pZCxsKSxWZSh0aGlzLG1lLFwiZlwiKS5yZXNwb25kKFtsXSl9KSksVGUuc2V0KHRoaXMsKGFzeW5jKGUsdCk9PntpZihWZSh0aGlzLG1lLFwiZlwiKSYmVmUodGhpcyxtZSxcImZcIikuY2xvc2UoKSxCZSh0aGlzLG1lLHQsXCJmXCIpLFZlKHRoaXMsbWUsXCJmXCIpLm9wZW4oKSxlLnF1ZXJ5Lmxlbmd0aDxWZSh0aGlzLHdlLFwiZlwiKSlyZXR1cm57cmVzdWx0czpbXX07Y29uc3Qgbj1lbmNvZGVVUklDb21wb25lbnQoZS5xdWVyeSkscj1bXSxvPSgoZSx0KT0+e2NvbnN0IG49QXJyYXkuaXNBcnJheShlLmNvbnRleHQuc2VsZWN0ZWRGaWx0ZXJzPy5maW5kKChlPT5lLmlkPT09ZWUpKT8ub3B0aW9ucyk/ZS5jb250ZXh0LnNlbGVjdGVkRmlsdGVycy5maW5kKChlPT5lLmlkPT09ZWUpKT8ub3B0aW9uczpbXSxyPW4uZXZlcnkoKCh7aXNTZWxlY3RlZDplfSk9PiFlKSk7cmV0dXJue3Nob3dEb2N1bWVudHM6dC5oYXMoXCJEb2N1bWVudFwiKSYmKHJ8fCEhbi5maW5kKCgoe3ZhbHVlOmV9KT0+XCJEb2N1bWVudFwiPT09ZSkpPy5pc1NlbGVjdGVkKSxzaG93Q29udGFjdHM6dC5oYXMoXCJDb250YWN0XCIpJiYocnx8ISFuLmZpbmQoKCh7dmFsdWU6ZX0pPT5cIkNvbnRhY3RcIj09PWUpKT8uaXNTZWxlY3RlZCksc2hvd0NoYXRNZXNzYWdlczp0LmhhcyhcIkNoYXQgTWVzc2FnZVwiKSYmKHJ8fCEhbi5maW5kKCgoe3ZhbHVlOmV9KT0+XCJDaGF0IE1lc3NhZ2VcIj09PWUpKT8uaXNTZWxlY3RlZCksc2hvd01lc3NhZ2VzOnQuaGFzKFwiRW1haWxcIikmJihyfHwhIW4uZmluZCgoKHt2YWx1ZTplfSk9PlwiRW1haWxcIj09PWUpKT8uaXNTZWxlY3RlZCksc2hvd0V2ZW50czp0LmhhcyhcIkV2ZW50XCIpJiYocnx8ISFuLmZpbmQoKCh7dmFsdWU6ZX0pPT5cIkV2ZW50XCI9PT1lKSk/LmlzU2VsZWN0ZWQpLHNob3dMaXN0czp0LmhhcyhcIkxpc3RcIikmJihyfHwhIW4uZmluZCgoKHt2YWx1ZTplfSk9PlwiTGlzdFwiPT09ZSkpPy5pc1NlbGVjdGVkKX19KShlLFZlKHRoaXMsYmUsXCJmXCIpKTtpZihvLnNob3dEb2N1bWVudHMpe2NvbnN0IGU9YCcke259J2A7ci5wdXNoKHtpZDpcImRyaXZlSXRlbVwiLG1ldGhvZDpcIkdFVFwiLHVybDpgL21lL2RyaXZlL3Jvb3Qvc2VhcmNoKHE9JHtlbmNvZGVVUklDb21wb25lbnQoZSl9KWAsaGVhZGVyczp7Q29uc2lzdGVuY3lMZXZlbDpcImV2ZW50dWFsXCJ9fSl9aWYoby5zaG93RXZlbnRzJiZyLnB1c2goe2lkOlwiZXZlbnRcIix1cmw6XCIvc2VhcmNoL3F1ZXJ5XCIsbWV0aG9kOlwiUE9TVFwiLGJvZHk6e3JlcXVlc3RzOlt7ZW50aXR5VHlwZXM6W1wiZXZlbnRcIl0scXVlcnk6e3F1ZXJ5U3RyaW5nOmUucXVlcnl9LGZyb206MCxzaXplOjEwfV19LGhlYWRlcnM6e1wiQ29udGVudC1UeXBlXCI6XCJhcHBsaWNhdGlvbi9qc29uXCJ9fSksby5zaG93Q29udGFjdHMpe2NvbnN0IHQ9YFwiJHtlLnF1ZXJ5fVwiYDtyLnB1c2goe2lkOlwiY29udGFjdFwiLG1ldGhvZDpcIkdFVFwiLHVybDpgL21lL2NvbnRhY3RzPyRzZWFyY2g9JHtlbmNvZGVVUklDb21wb25lbnQodCl9JiR0b3A9MTBgfSk7Y29uc3Qgbj1bXCJkaXNwbGF5TmFtZVwiLFwiZ2l2ZW5OYW1lXCIsXCJzdXJuYW1lXCJdLm1hcCgodD0+YFwiJHt0fToke2UucXVlcnl9XCJgKSkuam9pbihcIiBPUiBcIik7ci5wdXNoKHtpZDpcInVzZXJcIixtZXRob2Q6XCJHRVRcIix1cmw6YC91c2Vycz8kc2VhcmNoPSR7ZW5jb2RlVVJJQ29tcG9uZW50KG4pfSYkdG9wPTEwJiRzZWxlY3Q9aWQsZGlzcGxheU5hbWUsZGVwYXJ0bWVudCxtYWlsLGJ1c2luZXNzUGhvbmVzLG1vYmlsZVBob25lLG9mZmljZUxvY2F0aW9uLGpvYlRpdGxlYCxoZWFkZXJzOntDb25zaXN0ZW5jeUxldmVsOlwiZXZlbnR1YWxcIn19KX1pZihvLnNob3dNZXNzYWdlcyYmci5wdXNoKHtpZDpcIm1lc3NhZ2VcIixtZXRob2Q6XCJHRVRcIix1cmw6YC9tZS9tZXNzYWdlcz8kc2VsZWN0PXNlbmRlcixzdWJqZWN0LGJvZHlQcmV2aWV3LHJlY2VpdmVkRGF0ZVRpbWUsd2ViTGluayYkc2VhcmNoPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGBcIiR7ZS5xdWVyeX1cImApfSYkdG9wPTEwYH0pLG8uc2hvd0NoYXRNZXNzYWdlcyYmci5wdXNoKHtpZDpcImNoYXRNZXNzYWdlXCIsdXJsOlwiL3NlYXJjaC9xdWVyeVwiLG1ldGhvZDpcIlBPU1RcIixib2R5OntyZXF1ZXN0czpbe2VudGl0eVR5cGVzOltcImNoYXRNZXNzYWdlXCJdLHF1ZXJ5OntxdWVyeVN0cmluZzplLnF1ZXJ5fSxmcm9tOjAsc2l6ZToxMH1dfSxoZWFkZXJzOntcIkNvbnRlbnQtVHlwZVwiOlwiYXBwbGljYXRpb24vanNvblwifX0pLG8uc2hvd0xpc3RzJiZyLnB1c2goe2lkOlwibGlzdFwiLHVybDpcIi9zZWFyY2gvcXVlcnlcIixtZXRob2Q6XCJQT1NUXCIsYm9keTp7cmVxdWVzdHM6W3tlbnRpdHlUeXBlczpbXCJsaXN0XCJdLHF1ZXJ5OntxdWVyeVN0cmluZzplLnF1ZXJ5fSxmcm9tOjAsc2l6ZToxMH1dfSxoZWFkZXJzOntcIkNvbnRlbnQtVHlwZVwiOlwiYXBwbGljYXRpb24vanNvblwifX0pLDA9PT1yLmxlbmd0aClyZXR1cm57cmVzdWx0czpbXX07Y29uc3R7cmVzdWx0czppLGZpbHRlcnM6YX09YXdhaXQgVmUodGhpcyxnZSxcIm1cIixTZSkuY2FsbCh0aGlzLHIsZSk7cmV0dXJuIGkuZmluZCgoZT0+ZS5rZXk9PT1WZSh0aGlzLHllLFwiZlwiKT8ua2V5KSk/LnRlbXBsYXRlPT09Qi55Vy5Mb2FkaW5nJiZWZSh0aGlzLGplLFwiZlwiKS5jYWxsKHRoaXMsVmUodGhpcyx5ZSxcImZcIikpLHtyZXN1bHRzOmksY29udGV4dDp7ZmlsdGVyczphfX19KSksSGUuc2V0KHRoaXMsKGFzeW5jIGU9Pntzd2l0Y2goZS5hY3Rpb24udHJpZ2dlcil7Y2FzZSBVZS5wLkZvY3VzQ2hhbmdlOlZlKHRoaXMsamUsXCJmXCIpLmNhbGwodGhpcyxlKTticmVhaztjYXNlIFVlLnAuVXNlckFjdGlvbjpWZSh0aGlzLEFlLFwiZlwiKS5jYWxsKHRoaXMsZSk7YnJlYWs7Y2FzZSBVZS5wLlJlbG9hZDpicmVhaztkZWZhdWx0OmNvbnNvbGUud2FybihgVW5rbm93biBhY3Rpb24gdHJpZ2dlcjogJHtlLmFjdGlvbi50cmlnZ2VyfWApfX0pKSx0aGlzLmluaXRpYWxpemVXb3JrZmxvdz1hc3luYyBlPT57aWYoXCJzZWFyY2hcIiE9PWUpdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSB1bmtub3duIHdvcmtmbG93OiAke2V9YCk7YXdhaXQgYi5yZWdpc3Rlcih7Li4udGhpcy5jb25maWcud29ya2Zsb3dzLnNlYXJjaC5ob21lUHJvdmlkZXIsb25Vc2VySW5wdXQ6VmUodGhpcyxUZSxcImZcIiksb25SZXN1bHREaXNwYXRjaDpWZSh0aGlzLEhlLFwiZlwiKX0pLFkoKSxhd2FpdCB0aGlzLmNvbm5lY3QoKSxzdXBlci5pbml0aWFsaXplV29ya2Zsb3coZSl9LE9iamVjdC5lbnRyaWVzKHQud29ya2Zsb3dzPy5zZWFyY2g/Lm1pY3Jvc29mdEVudGl0eVR5cGVDb25maWd8fHt9KS5maWx0ZXIoKChbZSx0XSk9PnQpKS5mb3JFYWNoKCgoW2VdKT0+e1ZlKHRoaXMsYmUsXCJmXCIpLmFkZChYW2VdKX0pKX1hc3luYyBleGVjdXRlQXBpUmVxdWVzdCguLi5lKXtyZXR1cm4gVmUodGhpcyxnZSxcIm1cIixPZSkuY2FsbCh0aGlzLCgoKT0+VmUodGhpcyxMZSxcImZcIikuY2FsbCh0aGlzKS5leGVjdXRlQXBpUmVxdWVzdCguLi5lKSkpfX1DZT1uZXcgV2Vha01hcCxtZT1uZXcgV2Vha01hcCx5ZT1uZXcgV2Vha01hcCx3ZT1uZXcgV2Vha01hcCxiZT1uZXcgV2Vha01hcCx4ZT1uZXcgV2Vha01hcCxfZT1uZXcgV2Vha01hcCxMZT1uZXcgV2Vha01hcCxqZT1uZXcgV2Vha01hcCxrZT1uZXcgV2Vha01hcCxSZT1uZXcgV2Vha01hcCxQZT1uZXcgV2Vha01hcCxBZT1uZXcgV2Vha01hcCxJZT1uZXcgV2Vha01hcCxUZT1uZXcgV2Vha01hcCxIZT1uZXcgV2Vha01hcCxnZT1uZXcgV2Vha1NldCxPZT1hc3luYyBmdW5jdGlvbihlKXt0cnl7cmV0dXJuIGF3YWl0IGUoKX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgeilyZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0KCksZSgpO3Rocm93IHR9fSxFZT1hc3luYyBmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5leGVjdXRlQXBpUmVxdWVzdChcIi92MS4wLyRiYXRjaFwiLFwiUE9TVFwiLHtyZXF1ZXN0czplfSl9LFNlPWFzeW5jIGZ1bmN0aW9uKGUsdCl7dHJ5e2NvbnN0IG49YXdhaXQgVmUodGhpcyxnZSxcIm1cIixFZSkuY2FsbCh0aGlzLGUpLHI9Wy4uLmxlKHQsVmUodGhpcyxiZSxcImZcIikpLC4uLnNlKG4uZGF0YS5yZXNwb25zZXMuZmluZCgoZT0+XCJ1c2VyXCI9PT1lLmlkKSk/LmJvZHk/LnZhbHVlfHxbXSx0KV07cmV0dXJue2ZpbHRlcnM6cixyZXN1bHRzOlZlKHRoaXMsZ2UsXCJtXCIsTWUpLmNhbGwodGhpcyxuLHQpfX1jYXRjaChlKXtyZXR1cm4gY29uc29sZS53YXJuKFwiRmFpbGVkIHRvIGV4ZWN1dGUgQmF0Y2ggQVBJIHJlcXVlc3Q6IFwiLGUpLHtmaWx0ZXJzOltdLHJlc3VsdHM6W3trZXk6Y3J5cHRvLnJhbmRvbVVVSUQoKSx0aXRsZTpcIkVycm9yIEZldGNoaW5nIFNlYXJjaCBSZXN1bHRzXCIsZGVzY3JpcHRpb246XCJcIixhY3Rpb25zOltdLHRlbXBsYXRlOkIueVcuRXJyb3IsdGVtcGxhdGVDb250ZW50OmBGYWlsZWQgdG8gZXhlY3V0ZSBCYXRjaCBBUEkgcmVxdWVzdDogJHtKU09OLnN0cmluZ2lmeShlKX1gfV19fX0sTWU9ZnVuY3Rpb24oZSx0KXtsZXQgbj1bXTtmb3IoY29uc3QgciBvZiBlLmRhdGEucmVzcG9uc2VzKWlmKDIwMD09PXIuc3RhdHVzKXN3aXRjaChyLmlkKXtjYXNlXCJkcml2ZUl0ZW1cIjpjb25zdCBlPWZlKHQpLG89ZS5maWx0ZXJGaWxlcz9kZShyLmJvZHkudmFsdWUsZSk6ci5ib2R5LnZhbHVlO24ucHVzaCguLi4ob3x8W10pLm1hcCgoZT0+KHtrZXk6ZS5pZD8/Y3J5cHRvLnJhbmRvbVVVSUQoKSx0aXRsZTplLm5hbWU/P1wiXCIsZGVzY3JpcHRpb246ZS5maWxlPy5taW1lVHlwZT8/XCJcIixsYWJlbDpwZShlLm5hbWUpLGljb246aGUoZS5uYW1lKSxkYXRhOnt0eXBlOlwiZHJpdmVJdGVtXCIsaXRlbTplfSxhY3Rpb25zOlt7bmFtZTpcIkxhdW5jaFwifV0sdGVtcGxhdGU6Qi55Vy5QbGFpbix0ZW1wbGF0ZUNvbnRlbnQ6dm9pZCAwfSkpKSk7YnJlYWs7Y2FzZVwiZXZlbnRcIjpuLnB1c2goLi4uci5ib2R5Py52YWx1ZT8uWzBdPy5oaXRzQ29udGFpbmVycz8uWzBdPy5oaXRzPy5maWx0ZXIoKGU9PmUucmVzb3VyY2Uuc3ViamVjdCkpLm1hcCgoZT0+e2NvbnN0IHQ9ZS5yZXNvdXJjZSxuPXZlKGUuaGl0SWQpO3JldHVybntrZXk6bix0aXRsZTp0LnN1YmplY3Q/P1wiXCIsbGFiZWw6XCJDYWxlbmRhciBFdmVudFwiLGljb246KDAsQS5LMykoUC5kZS5NaWNyb3NvZnQzNjVBc3NldHMuTWljcm9zb2Z0MzY1T3V0bG9va0ljb24pLGFjdGlvbnM6W3tuYW1lOlwiTGF1bmNoXCJ9XSxkYXRhOnt0eXBlOlwiZXZlbnRcIixpdGVtOnsuLi50LGlkOm59fSx0ZW1wbGF0ZTpCLnlXLlBsYWluLHRlbXBsYXRlQ29udGVudDp2b2lkIDB9fSkpfHxbXSk7YnJlYWs7Y2FzZVwiY29udGFjdFwiOmNvbnN0IGk9Y2UodCksYT11ZShyLmJvZHkudmFsdWV8fFtdLGkpO24ucHVzaCguLi4oYXx8W10pLm1hcCgoZT0+KHtrZXk6ZS5pZD8/Y3J5cHRvLnJhbmRvbVVVSUQoKSx0aXRsZTplLmRpc3BsYXlOYW1lPz9cIlwiLGxhYmVsOlwiT3V0bG9vayBjb250YWN0XCIsaWNvbjooMCxBLkszKShQLmRlLk1pY3Jvc29mdDM2NUFzc2V0cy5NaWNyb3NvZnQzNjVPdXRsb29rSWNvbiksYWN0aW9uczpbXSxkYXRhOnt0eXBlOlwiY29udGFjdFwiLGl0ZW06ZX0sdGVtcGxhdGU6Qi55Vy5QbGFpbix0ZW1wbGF0ZUNvbnRlbnQ6dm9pZCAwfSkpKSk7YnJlYWs7Y2FzZVwidXNlclwiOmNvbnN0IGw9Y2UodCkscz11ZShyLmJvZHkudmFsdWV8fFtdLGwpO24ucHVzaCguLi4oc3x8W10pLm1hcCgoZT0+KHtrZXk6ZS5pZD8/Y3J5cHRvLnJhbmRvbVVVSUQoKSx0aXRsZTplLmRpc3BsYXlOYW1lPz9cIlwiLGxhYmVsOlwiVGVhbXMgY29udGFjdFwiLGljb246KDAsQS5LMykoUC5kZS5NaWNyb3NvZnQzNjVBc3NldHMuTWljcm9zb2Z0MzY1VGVhbXNJY29uKSxhY3Rpb25zOltdLGRhdGE6e3R5cGU6XCJ1c2VyXCIsaXRlbTplfSx0ZW1wbGF0ZTpCLnlXLkxvYWRpbmcsdGVtcGxhdGVDb250ZW50OnZvaWQgMH0pKSkpO2JyZWFrO2Nhc2VcIm1lc3NhZ2VcIjpuLnB1c2goLi4uKHIuYm9keS52YWx1ZXx8W10pLm1hcCgoZT0+KHtrZXk6ZS5pZD8/Y3J5cHRvLnJhbmRvbVVVSUQoKSx0aXRsZTpgJHtlLnN1YmplY3Q/P1wiVW50aXRsZWQgTWVzc2FnZVwifSR7ZS5pc0RyYWZ0P1wiIChEcmFmdClcIjpcIlwifWAsbGFiZWw6XCJFbWFpbFwiLGljb246KDAsQS5LMykoUC5kZS5NaWNyb3NvZnQzNjVBc3NldHMuTWljcm9zb2Z0MzY1T3V0bG9va0ljb24pLGFjdGlvbnM6W10sZGF0YTp7dHlwZTpcIm1lc3NhZ2VcIixpdGVtOmV9LHRlbXBsYXRlOkIueVcuUGxhaW4sdGVtcGxhdGVDb250ZW50OnZvaWQgMH0pKSkpO2JyZWFrO2Nhc2VcImNoYXRNZXNzYWdlXCI6bi5wdXNoKC4uLnIuYm9keT8udmFsdWU/LlswXT8uaGl0c0NvbnRhaW5lcnM/LlswXT8uaGl0cz8ubWFwKChlPT57Y29uc3QgdD1lLnJlc291cmNlO3JldHVybntrZXk6dC5pZD8/Y3J5cHRvLnJhbmRvbVVVSUQoKSx0aXRsZTplLnN1bW1hcnk/P1wiVW50aXRsZWQgTWVzc2FnZVwiLGxhYmVsOlwiQ2hhdFwiLGljb246KDAsQS5LMykoUC5kZS5NaWNyb3NvZnQzNjVBc3NldHMuTWljcm9zb2Z0MzY1VGVhbXNJY29uKSxhY3Rpb25zOltdLGRhdGE6e3R5cGU6XCJjaGF0TWVzc2FnZVwiLGl0ZW06dH0sdGVtcGxhdGU6Qi55Vy5QbGFpbix0ZW1wbGF0ZUNvbnRlbnQ6dm9pZCAwfX0pKXx8W10pO2JyZWFrO2Nhc2VcImxpc3RcIjpuLnB1c2goLi4uci5ib2R5Py52YWx1ZT8uWzBdPy5oaXRzQ29udGFpbmVycz8uWzBdPy5oaXRzPy5tYXAoKGU9Pntjb25zdCB0PWUucmVzb3VyY2Usbj12ZShlLmhpdElkKTtyZXR1cm57a2V5Om4sdGl0bGU6dC5kaXNwbGF5TmFtZT8/XCJVbnRpdGxlZCBMaXN0XCIsbGFiZWw6XCJMaXN0XCIsYWN0aW9uczpbe25hbWU6XCJMYXVuY2hcIn1dLGRhdGE6e3R5cGU6XCJsaXN0XCIsaXRlbTp7Li4udCxpZDpufX0sdGVtcGxhdGU6Qi55Vy5QbGFpbix0ZW1wbGF0ZUNvbnRlbnQ6dm9pZCAwfX0pKXx8W10pO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKGBVbmtub3duIGJhdGNoIHJlc3BvbnNlIGlkOiAke3IuaWR9YCxyLmJvZHkpfWVsc2UgY29uc29sZS53YXJuKFwiQmF0Y2ggQVBJIHJlcXVlc3QgZmFpbGVkOiBcIixyKTtyZXR1cm4gbj1uLm1hcCgoZT0+e2lmKCFlLmRhdGE/Lml0ZW0/LmlkKXJldHVybiBlO2NvbnN0IHQ9VmUodGhpcyxfZSxcImZcIikuZ2V0KGUuZGF0YS5pdGVtLmlkKTtyZXR1cm4gdD97Li4uZSx0ZW1wbGF0ZTp0LnRlbXBsYXRlLHRlbXBsYXRlQ29udGVudDp0LnRlbXBsYXRlQ29udGVudH06ZX0pKSxuLnNvcnQoKChlLHQpPT5lLnRpdGxlPnQudGl0bGU/MTotMSkpfTt2YXIgWmU9big0MjApO2NvbnN0ICRlPSgpPT5aZS5oZCgpLEZlPSgpPT4oYXN5bmMoKT0+KGF3YWl0KDAsbC5EbSkoKSkuZGlzcGF0Y2goXCJnZXQtbGVnYWN5LXdvcmtzcGFjZXNcIix2b2lkIDApKSgpO3ZhciBOZT1uKDUyOCksVWU9bigyMjIpLFdlPW4oMTA5KSx6ZT1uKDExNCl9KSgpLG1vZHVsZS5leHBvcnRzPXJ9KSgpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiLyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgbm90aWZpY2F0aW9ucy5qcy5MSUNFTlNFLnR4dCAqL1xuKCgpPT57dmFyIGU9ezM1MTplPT57dmFyIHQ7c2VsZix0PSgpPT57cmV0dXJuIGU9ezE3MTg3OmU9PntcInVzZSBzdHJpY3RcIjt2YXIgdCxuPVwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0P1JlZmxlY3Q6bnVsbCxyPW4mJlwiZnVuY3Rpb25cIj09dHlwZW9mIG4uYXBwbHk/bi5hcHBseTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGUsdCxuKX07dD1uJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLm93bktleXM/bi5vd25LZXlzOk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpKX06ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpfTt2YXIgbz1OdW1iZXIuaXNOYU58fGZ1bmN0aW9uKGUpe3JldHVybiBlIT1lfTtmdW5jdGlvbiBpKCl7aS5pbml0LmNhbGwodGhpcyl9ZS5leHBvcnRzPWksZS5leHBvcnRzLm9uY2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4scil7ZnVuY3Rpb24gbyhuKXtlLnJlbW92ZUxpc3RlbmVyKHQsaSkscihuKX1mdW5jdGlvbiBpKCl7XCJmdW5jdGlvblwiPT10eXBlb2YgZS5yZW1vdmVMaXN0ZW5lciYmZS5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsbyksbihbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfWgoZSx0LGkse29uY2U6ITB9KSxcImVycm9yXCIhPT10JiZmdW5jdGlvbihlLHQsbil7XCJmdW5jdGlvblwiPT10eXBlb2YgZS5vbiYmaChlLFwiZXJyb3JcIix0LHtvbmNlOiEwfSl9KGUsbyl9KSl9LGkuRXZlbnRFbWl0dGVyPWksaS5wcm90b3R5cGUuX2V2ZW50cz12b2lkIDAsaS5wcm90b3R5cGUuX2V2ZW50c0NvdW50PTAsaS5wcm90b3R5cGUuX21heExpc3RlbmVycz12b2lkIDA7dmFyIGE9MTA7ZnVuY3Rpb24gbChlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIGUpfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIHZvaWQgMD09PWUuX21heExpc3RlbmVycz9pLmRlZmF1bHRNYXhMaXN0ZW5lcnM6ZS5fbWF4TGlzdGVuZXJzfWZ1bmN0aW9uIHMoZSx0LG4scil7dmFyIG8saSxhLHM7aWYobChuKSx2b2lkIDA9PT0oaT1lLl9ldmVudHMpPyhpPWUuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLGUuX2V2ZW50c0NvdW50PTApOih2b2lkIDAhPT1pLm5ld0xpc3RlbmVyJiYoZS5lbWl0KFwibmV3TGlzdGVuZXJcIix0LG4ubGlzdGVuZXI/bi5saXN0ZW5lcjpuKSxpPWUuX2V2ZW50cyksYT1pW3RdKSx2b2lkIDA9PT1hKWE9aVt0XT1uLCsrZS5fZXZlbnRzQ291bnQ7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBhP2E9aVt0XT1yP1tuLGFdOlthLG5dOnI/YS51bnNoaWZ0KG4pOmEucHVzaChuKSwobz1jKGUpKT4wJiZhLmxlbmd0aD5vJiYhYS53YXJuZWQpe2Eud2FybmVkPSEwO3ZhciB1PW5ldyBFcnJvcihcIlBvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgbGVhayBkZXRlY3RlZC4gXCIrYS5sZW5ndGgrXCIgXCIrU3RyaW5nKHQpK1wiIGxpc3RlbmVycyBhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gaW5jcmVhc2UgbGltaXRcIik7dS5uYW1lPVwiTWF4TGlzdGVuZXJzRXhjZWVkZWRXYXJuaW5nXCIsdS5lbWl0dGVyPWUsdS50eXBlPXQsdS5jb3VudD1hLmxlbmd0aCxzPXUsY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4ocyl9cmV0dXJuIGV9ZnVuY3Rpb24gdSgpe2lmKCF0aGlzLmZpcmVkKXJldHVybiB0aGlzLnRhcmdldC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsdGhpcy53cmFwRm4pLHRoaXMuZmlyZWQ9ITAsMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0KTp0aGlzLmxpc3RlbmVyLmFwcGx5KHRoaXMudGFyZ2V0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gZChlLHQsbil7dmFyIHI9e2ZpcmVkOiExLHdyYXBGbjp2b2lkIDAsdGFyZ2V0OmUsdHlwZTp0LGxpc3RlbmVyOm59LG89dS5iaW5kKHIpO3JldHVybiBvLmxpc3RlbmVyPW4sci53cmFwRm49byxvfWZ1bmN0aW9uIGYoZSx0LG4pe3ZhciByPWUuX2V2ZW50cztpZih2b2lkIDA9PT1yKXJldHVybltdO3ZhciBvPXJbdF07cmV0dXJuIHZvaWQgMD09PW8/W106XCJmdW5jdGlvblwiPT10eXBlb2Ygbz9uP1tvLmxpc3RlbmVyfHxvXTpbb106bj9mdW5jdGlvbihlKXtmb3IodmFyIHQ9bmV3IEFycmF5KGUubGVuZ3RoKSxuPTA7bjx0Lmxlbmd0aDsrK24pdFtuXT1lW25dLmxpc3RlbmVyfHxlW25dO3JldHVybiB0fShvKTpDKG8sby5sZW5ndGgpfWZ1bmN0aW9uIHAoZSl7dmFyIHQ9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PXQpe3ZhciBuPXRbZV07aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgbilyZXR1cm4gMTtpZih2b2lkIDAhPT1uKXJldHVybiBuLmxlbmd0aH1yZXR1cm4gMH1mdW5jdGlvbiBDKGUsdCl7Zm9yKHZhciBuPW5ldyBBcnJheSh0KSxyPTA7cjx0OysrciluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gaChlLHQsbixyKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLm9uKXIub25jZT9lLm9uY2UodCxuKTplLm9uKHQsbik7ZWxzZXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLmFkZEV2ZW50TGlzdGVuZXIpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiZW1pdHRlclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBFdmVudEVtaXR0ZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgZSk7ZS5hZGRFdmVudExpc3RlbmVyKHQsKGZ1bmN0aW9uIG8oaSl7ci5vbmNlJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxvKSxuKGkpfSkpfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoaSxcImRlZmF1bHRNYXhMaXN0ZW5lcnNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sc2V0OmZ1bmN0aW9uKGUpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiBlfHxlPDB8fG8oZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcImRlZmF1bHRNYXhMaXN0ZW5lcnNcIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnK2UrXCIuXCIpO2E9ZX19KSxpLmluaXQ9ZnVuY3Rpb24oKXt2b2lkIDAhPT10aGlzLl9ldmVudHMmJnRoaXMuX2V2ZW50cyE9PU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5fZXZlbnRzfHwodGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCksdGhpcy5fbWF4TGlzdGVuZXJzPXRoaXMuX21heExpc3RlbmVyc3x8dm9pZCAwfSxpLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIGV8fGU8MHx8byhlKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mIFwiblwiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcrZStcIi5cIik7cmV0dXJuIHRoaXMuX21heExpc3RlbmVycz1lLHRoaXN9LGkucHJvdG90eXBlLmdldE1heExpc3RlbmVycz1mdW5jdGlvbigpe3JldHVybiBjKHRoaXMpfSxpLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0LnB1c2goYXJndW1lbnRzW25dKTt2YXIgbz1cImVycm9yXCI9PT1lLGk9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PWkpbz1vJiZ2b2lkIDA9PT1pLmVycm9yO2Vsc2UgaWYoIW8pcmV0dXJuITE7aWYobyl7dmFyIGE7aWYodC5sZW5ndGg+MCYmKGE9dFswXSksYSBpbnN0YW5jZW9mIEVycm9yKXRocm93IGE7dmFyIGw9bmV3IEVycm9yKFwiVW5oYW5kbGVkIGVycm9yLlwiKyhhP1wiIChcIithLm1lc3NhZ2UrXCIpXCI6XCJcIikpO3Rocm93IGwuY29udGV4dD1hLGx9dmFyIGM9aVtlXTtpZih2b2lkIDA9PT1jKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGMpcihjLHRoaXMsdCk7ZWxzZXt2YXIgcz1jLmxlbmd0aCx1PUMoYyxzKTtmb3Iobj0wO248czsrK24pcih1W25dLHRoaXMsdCl9cmV0dXJuITB9LGkucHJvdG90eXBlLmFkZExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHModGhpcyxlLHQsITEpfSxpLnByb3RvdHlwZS5vbj1pLnByb3RvdHlwZS5hZGRMaXN0ZW5lcixpLnByb3RvdHlwZS5wcmVwZW5kTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcyh0aGlzLGUsdCwhMCl9LGkucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbCh0KSx0aGlzLm9uKGUsZCh0aGlzLGUsdCkpLHRoaXN9LGkucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbCh0KSx0aGlzLnByZXBlbmRMaXN0ZW5lcihlLGQodGhpcyxlLHQpKSx0aGlzfSxpLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpLGE7aWYobCh0KSx2b2lkIDA9PT0ocj10aGlzLl9ldmVudHMpKXJldHVybiB0aGlzO2lmKHZvaWQgMD09PShuPXJbZV0pKXJldHVybiB0aGlzO2lmKG49PT10fHxuLmxpc3RlbmVyPT09dCkwPT0tLXRoaXMuX2V2ZW50c0NvdW50P3RoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpOihkZWxldGUgcltlXSxyLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoXCJyZW1vdmVMaXN0ZW5lclwiLGUsbi5saXN0ZW5lcnx8dCkpO2Vsc2UgaWYoXCJmdW5jdGlvblwiIT10eXBlb2Ygbil7Zm9yKG89LTEsaT1uLmxlbmd0aC0xO2k+PTA7aS0tKWlmKG5baV09PT10fHxuW2ldLmxpc3RlbmVyPT09dCl7YT1uW2ldLmxpc3RlbmVyLG89aTticmVha31pZihvPDApcmV0dXJuIHRoaXM7MD09PW8/bi5zaGlmdCgpOmZ1bmN0aW9uKGUsdCl7Zm9yKDt0KzE8ZS5sZW5ndGg7dCsrKWVbdF09ZVt0KzFdO2UucG9wKCl9KG4sbyksMT09PW4ubGVuZ3RoJiYocltlXT1uWzBdKSx2b2lkIDAhPT1yLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoXCJyZW1vdmVMaXN0ZW5lclwiLGUsYXx8dCl9cmV0dXJuIHRoaXN9LGkucHJvdG90eXBlLm9mZj1pLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcixpLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7dmFyIHQsbixyO2lmKHZvaWQgMD09PShuPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRoaXM7aWYodm9pZCAwPT09bi5yZW1vdmVMaXN0ZW5lcilyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApOnZvaWQgMCE9PW5bZV0mJigwPT0tLXRoaXMuX2V2ZW50c0NvdW50P3RoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpOmRlbGV0ZSBuW2VdKSx0aGlzO2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXt2YXIgbyxpPU9iamVjdC5rZXlzKG4pO2ZvcihyPTA7cjxpLmxlbmd0aDsrK3IpXCJyZW1vdmVMaXN0ZW5lclwiIT09KG89aVtyXSkmJnRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKG8pO3JldHVybiB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhcInJlbW92ZUxpc3RlbmVyXCIpLHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTAsdGhpc31pZihcImZ1bmN0aW9uXCI9PXR5cGVvZih0PW5bZV0pKXRoaXMucmVtb3ZlTGlzdGVuZXIoZSx0KTtlbHNlIGlmKHZvaWQgMCE9PXQpZm9yKHI9dC5sZW5ndGgtMTtyPj0wO3ItLSl0aGlzLnJlbW92ZUxpc3RlbmVyKGUsdFtyXSk7cmV0dXJuIHRoaXN9LGkucHJvdG90eXBlLmxpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm4gZih0aGlzLGUsITApfSxpLnByb3RvdHlwZS5yYXdMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuIGYodGhpcyxlLCExKX0saS5saXN0ZW5lckNvdW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZS5saXN0ZW5lckNvdW50P2UubGlzdGVuZXJDb3VudCh0KTpwLmNhbGwoZSx0KX0saS5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1wLGkucHJvdG90eXBlLmV2ZW50TmFtZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXZlbnRzQ291bnQ+MD90KHRoaXMuX2V2ZW50cyk6W119fSw1NDQ1NjooZSx0KT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRGVmZXJyZWRQcm9taXNlPWNsYXNze2NvbnN0cnVjdG9yKCl7Y29uc3QgZT1uZXcgUHJvbWlzZSgoKGUsdCk9Pnt0aGlzLl9yZXNvbHZlPWUsdGhpcy5fcmVqZWN0PXR9KSk7dGhpcy5fcHJvbWlzZT1lfWdldCBwcm9taXNlKCl7cmV0dXJuIHRoaXMuX3Byb21pc2V9Z2V0IHJlc29sdmUoKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZX1nZXQgcmVqZWN0KCl7cmV0dXJuIHRoaXMuX3JlamVjdH19fSwxNjI3MjooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Y29uc3Qgcj1uKDU0NDU2KTthc3luYyBmdW5jdGlvbiBvKGUsdCl7bGV0IG49MDtmb3IoY29uc3QgciBvZiBlKWF3YWl0IHQocixuLGUpLG4rK31hc3luYyBmdW5jdGlvbiBpKGUsdCl7YXdhaXQgUHJvbWlzZS5hbGwoZS5tYXAodCkpfWZ1bmN0aW9uIGEoZSx0LG4pe2NvbnN0IG89bmV3IHIuRGVmZXJyZWRQcm9taXNlLGk9ZS5hZGQoKCguLi5lKT0+e3QoLi4uZSkmJihpLnJlbW92ZSgpLG8ucmVzb2x2ZSgpKX0pKTtyZXR1cm4gbiYmbi5jYXRjaCgoZT0+e2kucmVtb3ZlKCksby5yZWplY3QoZSl9KSksbChvLnByb21pc2UpfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGUuY2F0Y2goKCgpPT57fSkpLGV9dC5zZXJpYWxGb3JFYWNoPW8sdC5zZXJpYWxNYXA9YXN5bmMgZnVuY3Rpb24oZSx0KXtjb25zdCBuPVtdO3JldHVybiBhd2FpdCBvKGUsKGFzeW5jKGUscixvKT0+e24ucHVzaChhd2FpdCB0KGUscixvKSl9KSksbn0sdC5zZXJpYWxGaWx0ZXI9YXN5bmMgZnVuY3Rpb24oZSx0KXtjb25zdCBuPVtdO3JldHVybiBhd2FpdCBvKGUsKGFzeW5jKGUscixvKT0+e2F3YWl0IHQoZSxyLG8pJiZuLnB1c2goZSl9KSksbn0sdC5wYXJhbGxlbEZvckVhY2g9aSx0LnBhcmFsbGVsTWFwPWFzeW5jIGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1bXTtyZXR1cm4gYXdhaXQgaShlLChhc3luYyhlLHIsbyk9PntuW3JdPWF3YWl0IHQoZSxyLG8pfSkpLG59LHQucGFyYWxsZWxGaWx0ZXI9YXN5bmMgZnVuY3Rpb24oZSx0KXtjb25zdCBuPVtdO3JldHVybiBhd2FpdCBpKGUsKGFzeW5jKGUscixvKT0+e25bcl09YXdhaXQgdChlLHIsbyl9KSksZS5maWx0ZXIoKChlLHQpPT5uW3RdKSl9LHQud2l0aFN0cmljdFRpbWVvdXQ9ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9bmV3IFByb21pc2UoKCh0LHIpPT5zZXRUaW1lb3V0KCgoKT0+cihuZXcgRXJyb3IobikpKSxlKSkpO3JldHVybiBsKFByb21pc2UucmFjZShbcix0XSkpfSx0LndpdGhUaW1lb3V0PWZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1uZXcgUHJvbWlzZSgodD0+c2V0VGltZW91dCgoKCk9PnQoWyEwLHZvaWQgMF0pKSxlKSkpLHI9dC50aGVuKChlPT5bITEsZV0pKTtyZXR1cm4gUHJvbWlzZS5yYWNlKFtuLHJdKX0sdC51bnRpbFRydWU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0KCk/UHJvbWlzZS5yZXNvbHZlKCk6YShlLHQsbil9LHQudW50aWxTaWduYWw9YSx0LmFsbG93UmVqZWN0PWx9LDk1ODgxOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2Zvcih2YXIgbiBpbiBlKXQuaGFzT3duUHJvcGVydHkobil8fCh0W25dPWVbbl0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHIobigxNjI3MikpLHIobig1NDQ1NikpfSwyOTE0MDplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPWUuc3BsaXQoXCIuXCIpLHI9dC5zcGxpdChcIi5cIiksbz0wO288MztvKyspe3ZhciBpPU51bWJlcihuW29dKSxhPU51bWJlcihyW29dKTtpZihpPmEpcmV0dXJuIDE7aWYoYT5pKXJldHVybi0xO2lmKCFpc05hTihpKSYmaXNOYU4oYSkpcmV0dXJuIDE7aWYoaXNOYU4oaSkmJiFpc05hTihhKSlyZXR1cm4tMX1yZXR1cm4gMH19LDE3Mzg1OmZ1bmN0aW9uKGUsdCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5FdmVudFJvdXRlcj12b2lkIDAsdC5FdmVudFJvdXRlcj1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLl9lbWl0dGVyUHJvdmlkZXJzPXt9LHRoaXMuX2Rlc2VyaWFsaXplcnM9e30sdGhpcy5fZGVmYXVsdEVtaXR0ZXI9ZX1yZWdpc3RlckVtaXR0ZXJQcm92aWRlcihlLHQpe3RoaXMuX2VtaXR0ZXJQcm92aWRlcnNbZV09dH1yZWdpc3RlckRlc2VyaWFsaXplcihlLHQpe3RoaXMuX2Rlc2VyaWFsaXplcnNbZV09dH1kaXNwYXRjaEV2ZW50KGUpe2NvbnN0e3R5cGU6dCx0YXJnZXQ6cn09ZSxvPW4oZSxbXCJ0eXBlXCIsXCJ0YXJnZXRcIl0pO2xldCBpO2lmKCFyKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZXZlbnQsIG5vIHRhcmdldCBzcGVjaWZpZWRcIik7aWYoXCJkZWZhdWx0XCI9PT1yKWk9dGhpcy5fZGVmYXVsdEVtaXR0ZXI7ZWxzZXtpZighdGhpcy5fZW1pdHRlclByb3ZpZGVyc1tyLnR5cGVdKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0YXJnZXQsIG5vIHByb3ZpZGVyIHJlZ2lzdGVyZWQgZm9yICcke3IudHlwZX0nYCk7aT10aGlzLl9lbWl0dGVyUHJvdmlkZXJzW3IudHlwZV0oci5pZCl9Y29uc3QgYT1PYmplY3QuYXNzaWduKHt0eXBlOnR9LG8pLGw9dGhpcy5fZGVzZXJpYWxpemVyc1t0XTtsP2kuZW1pdCh0LGwoYSkpOmkuZW1pdCh0LGEpfX19LDE5NjU5OihlLHQpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG47T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5BY3Rpb25Cb2R5Q2xpY2tUeXBlPXQuQWN0aW9uTm9vcFR5cGU9dC5BY3Rpb25UcmlnZ2VyPXZvaWQgMCwobj10LkFjdGlvblRyaWdnZXJ8fCh0LkFjdGlvblRyaWdnZXI9e30pKS5DT05UUk9MPVwiY29udHJvbFwiLG4uU0VMRUNUPVwic2VsZWN0XCIsbi5DTE9TRT1cImNsb3NlXCIsbi5FWFBJUkU9XCJleHBpcmVcIixuLlBST0dSQU1NQVRJQz1cInByb2dyYW1tYXRpY1wiLCh0LkFjdGlvbk5vb3BUeXBlfHwodC5BY3Rpb25Ob29wVHlwZT17fSkpLkVWRU5UX0RJU01JU1M9XCJldmVudF9kaXNtaXNzXCIsKHQuQWN0aW9uQm9keUNsaWNrVHlwZXx8KHQuQWN0aW9uQm9keUNsaWNrVHlwZT17fSkpLkRJU01JU1NfRVZFTlQ9XCJkaXNtaXNzX2V2ZW50XCJ9LDEyMDUyOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldEV2ZW50Um91dGVyPXQudHJ5U2VydmljZURpc3BhdGNoPXQuZ2V0U2VydmljZVByb21pc2U9dC5ldmVudEVtaXR0ZXI9dm9pZCAwO2NvbnN0IHI9bigxNzE4Nyksbz1uKDk1ODgxKSxpPW4oNzY1OTgpLGE9bigxNzM4NSk7bGV0IGw7dC5ldmVudEVtaXR0ZXI9bmV3IHIuRXZlbnRFbWl0dGVyO2NvbnN0IGM9bmV3IG8uRGVmZXJyZWRQcm9taXNlO2xldCBzLHU9ITE7YXN5bmMgZnVuY3Rpb24gZCgpe2lmKHdpbmRvdy5uYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcyhcIldpbmRvd3NcIikpdHJ5e2NvbnN0IGU9YXdhaXQgZmluLlN5c3RlbS5nZXRSdm1JbmZvKCk7cGFyc2VJbnQoZS52ZXJzaW9uLnNwbGl0KFwiLlwiKVswXSk+PTYmJihmaW4uU3lzdGVtLmxhdW5jaE1hbmlmZXN0P2Zpbi5TeXN0ZW0ubGF1bmNoTWFuaWZlc3QoXCJmaW5zOi8vc3lzdGVtLWFwcHMvbm90aWZpY2F0aW9uLWNlbnRlclwiLHtub1VpOiEwfSkuY2F0Y2goKGU9Pntjb25zb2xlLmVycm9yKFwiVW5hYmxlIHRvIGxhdW5jaCB0aGUgTm90aWZpY2F0aW9uIENlbnRlciBhcyBhIHN5c3RlbSBhcHBcIixlKX0pKTpmaW4uU3lzdGVtLm9wZW5VcmxXaXRoQnJvd3NlcihcImZpbnM6Ly9zeXN0ZW0tYXBwcy9ub3RpZmljYXRpb24tY2VudGVyXCIpLmNhdGNoKCgoKT0+e30pKSl9Y2F0Y2goZSl7fWVsc2UgZmluLlN5c3RlbS5vcGVuVXJsV2l0aEJyb3dzZXIoXCJmaW5zOi8vc3lzdGVtLWFwcHMvbm90aWZpY2F0aW9uLWNlbnRlclwiKX1hc3luYyBmdW5jdGlvbiBmKCl7dmFyIGU7aWYoYXdhaXQgYy5wcm9taXNlLCFsKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgZmluKXtjb25zdCBlPVwiZmluIGlzIG5vdCBkZWZpbmVkLiBUaGUgb3BlbmZpbi1ub3RpZmljYXRpb25zIG1vZHVsZSBpcyBvbmx5IGludGVuZGVkIGZvciB1c2UgaW4gYW4gT3BlbkZpbiBhcHBsaWNhdGlvbi5cIjtyZXR1cm4gbD1Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoZSkpLGx9ZmluLlN5c3RlbS5nZXRWZXJzaW9uKCkudGhlbigoZT0+e2NvbnN0IHQ9cGFyc2VJbnQoZS5zcGxpdChcIi5cIilbMl0pO3Q8NTMmJmNvbnNvbGUud2FybihgQVBJIHZlcnNpb24gJHt0fSBvZiBPcGVuRmluIHZlcnNpb24gJHtlfSBpcyBsZXNzIHRoYW4gNTMuIFBsZWFzZSB1cGdyYWRlIHRoZSBydW50aW1lIHZlcnNpb24uYCl9KSk7Y29uc3R7bmFtZTp0LHV1aWQ6bn09bnVsbCE9PShlPWZpbi5tZS5pZGVudGl0eSkmJnZvaWQgMCE9PWU/ZTpmaW4uV2luZG93Lm1lO2lmKG49PT1pLlNFUlZJQ0VfSURFTlRJVFkudXVpZCYmdD09PWkuU0VSVklDRV9JREVOVElUWS5uYW1lKWw9UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiVHJ5aW5nIHRvIGNvbm5lY3QgdG8gcHJvdmlkZXIgZnJvbSBwcm92aWRlclwiKSk7ZWxzZXtjb25zdCBlPXdpbmRvdy5zZXRUaW1lb3V0KCgoKT0+e2NvbnNvbGUud2FybihcIlRha2luZyBhIGxvbmcgdGltZSB0byBjb25uZWN0IHRvIE5vdGlmaWNhdGlvbnMgc2VydmljZS4gSXMgdGhlIE5vdGlmaWNhdGlvbnMgc2VydmljZSBydW5uaW5nP1wiKX0pLDVlMyk7bD1maW4uSW50ZXJBcHBsaWNhdGlvbkJ1cy5DaGFubmVsLmNvbm5lY3QoaS5TRVJWSUNFX0NIQU5ORUwse3dhaXQ6ITAscGF5bG9hZDp7dmVyc2lvbjpcIjEuMjUuMFwifX0pLnRoZW4oKHQ9Pnt3aW5kb3cuY2xlYXJUaW1lb3V0KGUpO2NvbnN0IG49cCgpO3JldHVybiB0LnJlZ2lzdGVyKFwiV0FSTlwiLChlPT5jb25zb2xlLndhcm4oZSkpKSx0LnJlZ2lzdGVyKFwiZXZlbnRcIiwoZT0+e24uZGlzcGF0Y2hFdmVudChlKX0pKSx0LnNldERlZmF1bHRBY3Rpb24oKCgpPT4hMSkpLHQub25EaXNjb25uZWN0aW9uKCgoKT0+e2NvbnNvbGUud2FybihcIkRpc2Nvbm5lY3RlZCBmcm9tIE5vdGlmaWNhdGlvbnMgc2VydmljZVwiKSx1PSEwLGw9bnVsbCxkKCksc2V0VGltZW91dCgoKCk9PntmKCl9KSwzMDApfSkpLHR9KSl9fXJldHVybiBsfWZ1bmN0aW9uIHAoKXtyZXR1cm4gc3x8KHM9bmV3IGEuRXZlbnRSb3V0ZXIodC5ldmVudEVtaXR0ZXIpKSxzfSFmdW5jdGlvbigpe3RyeXtcInVuZGVmaW5lZFwiIT10eXBlb2YgZmluJiZcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93PyhkKCksZigpLFwibG9hZGluZ1wiIT09ZG9jdW1lbnQucmVhZHlTdGF0ZT9jLnJlc29sdmUoKTood2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsKCgpPT57Yy5yZXNvbHZlKCl9KSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIiwoKCk9PntjLnJlc29sdmUoKX0pKSkpOmNvbnNvbGUud2FybihcIkNvdWxkIG5vdCBjb25uZWN0IHRvIG5vdGlmaWNhdGlvbnMsIGBmaW5gIGlzIG5vdCBkZWZpbmVkXCIpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9fSgpLHQuZ2V0U2VydmljZVByb21pc2U9Zix0LnRyeVNlcnZpY2VEaXNwYXRjaD1hc3luYyBmdW5jdGlvbihlLHQpe3JldHVybihhd2FpdCBmKCkpLmRpc3BhdGNoKGUsdCl9LHQuZ2V0RXZlbnRSb3V0ZXI9cH0sNDkwOihlLHQpPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LDk3NDkwOihlLHQpPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5GaWVsZFR5cGU9dm9pZCAwLHQuRmllbGRUeXBlPXtzdHJpbmc6XCJzdHJpbmdcIixudW1iZXI6XCJudW1iZXJcIixib29sZWFuOlwiYm9vbGVhblwifX0sODkxMDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oOTc0OTApLHQpLG8obig3NzEzKSx0KX0sNzcxMzooZSx0KT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuV2lkZ2V0VHlwZT10LkJvb2xlYW5XaWRnZXRUeXBlPXQuTnVtYmVyV2lkZ2V0VHlwZT10LlN0cmluZ1dpZGdldFR5cGU9dm9pZCAwLHQuU3RyaW5nV2lkZ2V0VHlwZT17VGV4dDpcIlRleHRcIn0sdC5OdW1iZXJXaWRnZXRUeXBlPXtOdW1iZXI6XCJOdW1iZXJcIn0sdC5Cb29sZWFuV2lkZ2V0VHlwZT17VG9nZ2xlOlwiVG9nZ2xlXCIsQ2hlY2tib3g6XCJDaGVja2JveFwifSx0LldpZGdldFR5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5TdHJpbmdXaWRnZXRUeXBlKSx0Lk51bWJlcldpZGdldFR5cGUpLHQuQm9vbGVhbldpZGdldFR5cGUpfSw2MTk5NTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGk9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH0sYT10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX0sbD10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldE5vdGlmaWNhdGlvbnNDb3VudD10LmhpZGU9dC5zaG93PXQudG9nZ2xlTm90aWZpY2F0aW9uQ2VudGVyPXQuY2xlYXJBbGw9dC5nZXRBbGw9dC5jbGVhcj10LnVwZGF0ZT10LmNyZWF0ZT10LnJlbW92ZUV2ZW50TGlzdGVuZXI9dC5hZGRFdmVudExpc3RlbmVyPXQuVkVSU0lPTj10Lk5vdGlmaWNhdGlvbkluZGljYXRvclR5cGU9dC5JbmRpY2F0b3JDb2xvcj10Lk5vdGlmaWNhdGlvbkluZGljYXRvcj10Lk5vdGlmaWNhdGlvbk9wdGlvbnM9dC5wcm92aWRlcj10LmFjdGlvbnM9dm9pZCAwO2NvbnN0IGM9bigxOTY1OSkscz1uKDEyMDUyKSx1PW4oNzY1OTgpLGQ9aShuKDMwMjA3KSk7dC5wcm92aWRlcj1kO2NvbnN0IGY9big3MjQ3NSkscD1uKDUyMjEpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiTm90aWZpY2F0aW9uSW5kaWNhdG9yXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHAuTm90aWZpY2F0aW9uSW5kaWNhdG9yfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiTm90aWZpY2F0aW9uSW5kaWNhdG9yVHlwZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBwLkluZGljYXRvclR5cGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJJbmRpY2F0b3JDb2xvclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBwLkluZGljYXRvckNvbG9yfX0pO2NvbnN0IEM9bigxMjkwOCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJOb3RpZmljYXRpb25PcHRpb25zXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEMuTm90aWZpY2F0aW9uT3B0aW9uc319KTtjb25zdCBoPWkobigxOTY1OSkpO3QuYWN0aW9ucz1oLGEobigxOTY1OSksdCksYShuKDQ5MCksdCksYShuKDU1MDYzKSx0KSxhKG4oODkxMCksdCksYShuKDg3MjIxKSx0KSxhKG4oNDk3NTcpLHQpLGEobig3MDA1KSx0KSx0LlZFUlNJT049XCIxLjI1LjBcIjtjb25zdCB2PSgwLHMuZ2V0RXZlbnRSb3V0ZXIpKCk7ZnVuY3Rpb24gZyhlKXtjb25zdHtub3RpZmljYXRpb246dH09ZTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtub3RpZmljYXRpb246T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtkYXRlOm5ldyBEYXRlKHQuZGF0ZSksZXhwaXJlczpudWxsIT09dC5leHBpcmVzP25ldyBEYXRlKHQuZXhwaXJlcyk6bnVsbH0pfSl9di5yZWdpc3RlckRlc2VyaWFsaXplcihcIm5vdGlmaWNhdGlvbi1jcmVhdGVkXCIsKGU9PmcoZSkpKSx2LnJlZ2lzdGVyRGVzZXJpYWxpemVyKFwibm90aWZpY2F0aW9uLXRvYXN0LWRpc21pc3NlZFwiLChlPT5nKGUpKSksdi5yZWdpc3RlckRlc2VyaWFsaXplcihcIm5vdGlmaWNhdGlvbi1jbG9zZWRcIiwoZT0+ZyhlKSkpLHYucmVnaXN0ZXJEZXNlcmlhbGl6ZXIoXCJub3RpZmljYXRpb24tYWN0aW9uXCIsKGU9Pnt2YXIgdDtjb25zdCBuPWcoZSkse2NvbnRyb2xTb3VyY2U6cixjb250cm9sSW5kZXg6b309bixpPWwobixbXCJjb250cm9sU291cmNlXCIsXCJjb250cm9sSW5kZXhcIl0pO3JldHVybiBlLnRyaWdnZXI9PT1jLkFjdGlvblRyaWdnZXIuQ09OVFJPTD9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saSkse2NvbnRyb2w6bnVsbD09PSh0PWUubm90aWZpY2F0aW9uW3JdKXx8dm9pZCAwPT09dD92b2lkIDA6dFtvXX0pOml9KSksdi5yZWdpc3RlckRlc2VyaWFsaXplcihcIm5vdGlmaWNhdGlvbnMtY291bnQtY2hhbmdlZFwiLChlPT5lKSksdi5yZWdpc3RlckRlc2VyaWFsaXplcihcIm5vdGlmaWNhdGlvbi1yZW1pbmRlci1jcmVhdGVkXCIsKGU9Pntjb25zdCB0PWcoZSkse3JlbWluZGVyRGF0ZTpufT10LHI9bCh0LFtcInJlbWluZGVyRGF0ZVwiXSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxyKSx7cmVtaW5kZXJEYXRlOm5ldyBEYXRlKG4pfSl9KSksdi5yZWdpc3RlckRlc2VyaWFsaXplcihcIm5vdGlmaWNhdGlvbi1yZW1pbmRlci1yZW1vdmVkXCIsKGU9PmcoZSkpKSx0LmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXsoMCxmLnZhbGlkYXRlRW52aXJvbm1lbnQpKCksZT0oMCxmLnNhbml0aXplRXZlbnRUeXBlKShlKSx0PSgwLGYuc2FuaXRpemVGdW5jdGlvbikodCk7Y29uc3Qgbj1zLmV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50KGUpO3MuZXZlbnRFbWl0dGVyLmFkZExpc3RlbmVyKGUsdCksMD09PW4mJjE9PT1zLmV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50KGUpJiYoMCxzLnRyeVNlcnZpY2VEaXNwYXRjaCkodS5BUElUb3BpYy5BRERfRVZFTlRfTElTVEVORVIsZSl9LHQucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpeygwLGYudmFsaWRhdGVFbnZpcm9ubWVudCkoKSxlPSgwLGYuc2FuaXRpemVFdmVudFR5cGUpKGUpLHQ9KDAsZi5zYW5pdGl6ZUZ1bmN0aW9uKSh0KTtjb25zdCBuPXMuZXZlbnRFbWl0dGVyLmxpc3RlbmVyQ291bnQoZSk7cy5ldmVudEVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIoZSx0KSwxPT09biYmMD09PXMuZXZlbnRFbWl0dGVyLmxpc3RlbmVyQ291bnQoZSkmJigwLHMudHJ5U2VydmljZURpc3BhdGNoKSh1LkFQSVRvcGljLlJFTU9WRV9FVkVOVF9MSVNURU5FUixlKX0sdC5jcmVhdGU9YXN5bmMgZnVuY3Rpb24oZSx0KXtpZihcIm9iamVjdFwiIT10eXBlb2YgZXx8bnVsbD09PWUpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gY3JlYXRlOiBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCBhbmQgbXVzdCBub3QgYmUgbnVsbFwiKTtpZih2b2lkIDAhPT1lLmRhdGUmJiEoZS5kYXRlIGluc3RhbmNlb2YgRGF0ZSkpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBjcmVhdGU6IFwiZGF0ZVwiIG11c3QgYmUgYSB2YWxpZCBEYXRlIG9iamVjdCcpO2lmKHZvaWQgMCE9PWUuZXhwaXJlcyYmbnVsbCE9PWUuZXhwaXJlcyYmIShlLmV4cGlyZXMgaW5zdGFuY2VvZiBEYXRlKSl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGNyZWF0ZTogXCJleHBpcmVzXCIgbXVzdCBiZSBudWxsIG9yIGEgdmFsaWQgRGF0ZSBvYmplY3QnKTtpZih0JiZ0LnJlbWluZGVyRGF0ZSl7aWYoITE9PT1lLmFsbG93UmVtaW5kZXIpdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCBub3Qgc3BlY2lmeSBhIHJlbWluZGVyIGRhdGUgZm9yIGEgbm90aWZpY2F0aW9uIHdpdGggXCJhbGxvd1JlbWluZGVyXCIgb3B0aW9uIHNldCB0byBmYWxzZS4nKTtpZighKHQucmVtaW5kZXJEYXRlIGluc3RhbmNlb2YgRGF0ZSkpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byByZW1pbmRlciBPcHRpb25zOiBcImRhdGVcIiBtdXN0IGEgdmFsaWQgRGF0ZSBvYmplY3QnKTtpZihlLmV4cGlyZXMmJmUuZXhwaXJlcy5nZXRUaW1lKCk8dC5yZW1pbmRlckRhdGUuZ2V0VGltZSgpKXRocm93IG5ldyBFcnJvcihcIkV4cGlyYXRpb24gZGF0ZSBtdXN0IG5vdCBiZSBlYXJsaWVyIHRoYW4gcmVtaW5kZXIgZGF0ZS5cIil9dm9pZCAwIT09ZS5jYXRlZ29yeSYmbnVsbCE9PWUuY2F0ZWdvcnl8fChlLmNhdGVnb3J5PVwiZGVmYXVsdFwiKTtjb25zdCBuPWF3YWl0KDAscy50cnlTZXJ2aWNlRGlzcGF0Y2gpKHUuQVBJVG9waWMuQ1JFQVRFX05PVElGSUNBVElPTixPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2RhdGU6ZS5kYXRlJiZlLmRhdGUudmFsdWVPZigpLGV4cGlyZXM6ZS5leHBpcmVzJiZlLmV4cGlyZXMudmFsdWVPZigpLHJlbWluZGVyOihudWxsPT10P3ZvaWQgMDp0LnJlbWluZGVyRGF0ZSkmJnQucmVtaW5kZXJEYXRlLnZhbHVlT2YoKX0pKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtkYXRlOm5ldyBEYXRlKG4uZGF0ZSksZXhwaXJlczpudWxsIT09bi5leHBpcmVzP25ldyBEYXRlKG4uZXhwaXJlcyk6bnVsbH0pfSx0LnVwZGF0ZT1hc3luYyBmdW5jdGlvbihlKXtpZihcIm9iamVjdFwiIT10eXBlb2YgZXx8bnVsbD09PWUpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gY3JlYXRlOiBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCBhbmQgbXVzdCBub3QgYmUgbnVsbFwiKTtpZighZS5pZCl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGNyZWF0ZTogXCJpZFwiIG11c3QgYmUgSWQgb2YgcHJldmlvdXNseSBjcmVhdGVkIE5vdGlmaWNhdGlvbicpO2NvbnN0IHQ9YXdhaXQoMCxzLnRyeVNlcnZpY2VEaXNwYXRjaCkodS5BUElUb3BpYy5VUERBVEVfTk9USUZJQ0FUSU9OLE9iamVjdC5hc3NpZ24oe30sZSkpO3JldHVybiBPYmplY3QuYXNzaWduKHt9LHQpfSx0LmNsZWFyPWFzeW5jIGZ1bmN0aW9uKGUpe3JldHVybigwLHMudHJ5U2VydmljZURpc3BhdGNoKSh1LkFQSVRvcGljLkNMRUFSX05PVElGSUNBVElPTix7aWQ6ZX0pfSx0LmdldEFsbD1hc3luYyBmdW5jdGlvbigpe3JldHVybihhd2FpdCgwLHMudHJ5U2VydmljZURpc3BhdGNoKSh1LkFQSVRvcGljLkdFVF9BUFBfTk9USUZJQ0FUSU9OUyx2b2lkIDApKS5tYXAoKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7aW5kaWNhdG9yOmUuaW5kaWNhdG9yfHxudWxsLGRhdGU6bmV3IERhdGUoZS5kYXRlKSxleHBpcmVzOm51bGwhPT1lLmV4cGlyZXM/bmV3IERhdGUoZS5leHBpcmVzKTpudWxsfSkpKX0sdC5jbGVhckFsbD1hc3luYyBmdW5jdGlvbigpe3JldHVybigwLHMudHJ5U2VydmljZURpc3BhdGNoKSh1LkFQSVRvcGljLkNMRUFSX0FQUF9OT1RJRklDQVRJT05TLHZvaWQgMCl9LHQudG9nZ2xlTm90aWZpY2F0aW9uQ2VudGVyPWFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuKDAscy50cnlTZXJ2aWNlRGlzcGF0Y2gpKHUuQVBJVG9waWMuVE9HR0xFX05PVElGSUNBVElPTl9DRU5URVIsdm9pZCAwKX0sdC5zaG93PWFzeW5jIGZ1bmN0aW9uKGUpe3JldHVybigwLHMudHJ5U2VydmljZURpc3BhdGNoKSh1LkFQSVRvcGljLlNIT1dfTk9USUZJQ0FUSU9OX0NFTlRFUixlKX0sdC5oaWRlPWFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuKDAscy50cnlTZXJ2aWNlRGlzcGF0Y2gpKHUuQVBJVG9waWMuSElERV9OT1RJRklDQVRJT05fQ0VOVEVSLHZvaWQgMCl9LHQuZ2V0Tm90aWZpY2F0aW9uc0NvdW50PWFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuKDAscy50cnlTZXJ2aWNlRGlzcGF0Y2gpKHUuQVBJVG9waWMuR0VUX05PVElGSUNBVElPTlNfQ09VTlQsdm9pZCAwKX19LDUyMjE6KGUsdCk9PntcInVzZSBzdHJpY3RcIjt2YXIgbixyO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuSW5kaWNhdG9yQ29sb3I9dC5JbmRpY2F0b3JUeXBlPXZvaWQgMCwocj10LkluZGljYXRvclR5cGV8fCh0LkluZGljYXRvclR5cGU9e30pKS5GQUlMVVJFPVwiZmFpbHVyZVwiLHIuV0FSTklORz1cIndhcm5pbmdcIixyLlNVQ0NFU1M9XCJzdWNjZXNzXCIsKG49dC5JbmRpY2F0b3JDb2xvcnx8KHQuSW5kaWNhdG9yQ29sb3I9e30pKS5SRUQ9XCJyZWRcIixuLkdSRUVOPVwiZ3JlZW5cIixuLllFTExPVz1cInllbGxvd1wiLG4uQkxVRT1cImJsdWVcIixuLlBVUlBMRT1cInB1cnBsZVwiLG4uR1JBWT1cImdyYXlcIn0sNzY1OTg6KGUsdCk9PntcInVzZSBzdHJpY3RcIjt2YXIgbjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkFQSVRvcGljPXQuU0VSVklDRV9DSEFOTkVMPXQuU0VSVklDRV9JREVOVElUWT12b2lkIDAsdC5TRVJWSUNFX0lERU5USVRZPXt1dWlkOlwibm90aWZpY2F0aW9ucy1zZXJ2aWNlXCIsbmFtZTpcIm5vdGlmaWNhdGlvbnMtc2VydmljZVwifSx0LlNFUlZJQ0VfQ0hBTk5FTD1cIm9mLW5vdGlmaWNhdGlvbnMtc2VydmljZS12MVwiLChuPXQuQVBJVG9waWN8fCh0LkFQSVRvcGljPXt9KSkuQ1JFQVRFX05PVElGSUNBVElPTj1cImNyZWF0ZS1ub3RpZmljYXRpb25cIixuLlVQREFURV9OT1RJRklDQVRJT049XCJ1cGRhdGUtbm90aWZpY2F0aW9uXCIsbi5DTEVBUl9OT1RJRklDQVRJT049XCJjbGVhci1ub3RpZmljYXRpb25cIixuLkdFVF9BUFBfTk9USUZJQ0FUSU9OUz1cImZldGNoLWFwcC1ub3RpZmljYXRpb25zXCIsbi5DTEVBUl9BUFBfTk9USUZJQ0FUSU9OUz1cImNsZWFyLWFwcC1ub3RpZmljYXRpb25zXCIsbi5UT0dHTEVfTk9USUZJQ0FUSU9OX0NFTlRFUj1cInRvZ2dsZS1ub3RpZmljYXRpb24tY2VudGVyXCIsbi5BRERfRVZFTlRfTElTVEVORVI9XCJhZGQtZXZlbnQtbGlzdGVuZXJcIixuLlJFTU9WRV9FVkVOVF9MSVNURU5FUj1cInJlbW92ZS1ldmVudC1saXN0ZW5lclwiLG4uR0VUX1BST1ZJREVSX1NUQVRVUz1cImdldC1wcm92aWRlci1zdGF0dXNcIixuLkdFVF9OT1RJRklDQVRJT05TX0NPVU5UPVwiZ2V0LW5vdGlmaWNhdGlvbnMtY291bnRcIixuLlJFR0lTVEVSX1BMQVRGT1JNPVwicmVnaXN0ZXItbm90aWZpY2F0aW9ucy1wbGF0Zm9ybVwiLG4uREVSRUdJU1RFUl9QTEFURk9STT1cImRlcmVnaXN0ZXItbm90aWZpY2F0aW9ucy1wbGF0Zm9ybVwiLG4uU0hPV19OT1RJRklDQVRJT05fQ0VOVEVSPVwic2hvdy1ub3RpZmljYXRpb24tY2VudGVyXCIsbi5ISURFX05PVElGSUNBVElPTl9DRU5URVI9XCJoaWRlLW5vdGlmaWNhdGlvbi1jZW50ZXJcIn0sNzAwNTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZXJlZ2lzdGVyUGxhdGZvcm09dC5yZWdpc3RlclBsYXRmb3JtPXZvaWQgMDtjb25zdCByPW4oMTIwNTIpLG89big3NjU5OCk7dC5yZWdpc3RlclBsYXRmb3JtPWFzeW5jIGZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCIhPXR5cGVvZiBlfHxudWxsPT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byByZWdpc3RlclBsYXRmb3JtOiBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCBhbmQgbXVzdCBub3QgYmUgbnVsbFwiKTtpZighZS5pZCl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIHJlZ2lzdGVyUGxhdGZvcm06IFwiaWRcIiBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZyBpbiBwbGF0Zm9ybSBpbmZvLicpO2NvbnN0IHQ9YXdhaXQoMCxyLnRyeVNlcnZpY2VEaXNwYXRjaCkoby5BUElUb3BpYy5SRUdJU1RFUl9QTEFURk9STSxPYmplY3QuYXNzaWduKHt9LGUpKTtyZXR1cm57bm90aWZpY2F0aW9uc1ZlcnNpb246dD90Lm5vdGlmaWNhdGlvbnNWZXJzaW9uOlwidW5rbm93blwiLGNsaWVudEFQSVZlcnNpb246XCIxLjI1LjBcIn19LHQuZGVyZWdpc3RlclBsYXRmb3JtPWFzeW5jIGZ1bmN0aW9uKGUpe2lmKCFlKXRocm93IG5ldyBFcnJvcignSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gZGVyZWdpc3RlclBsYXRmb3JtOiBcImlkXCIgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcuJyk7cmV0dXJuKDAsci50cnlTZXJ2aWNlRGlzcGF0Y2gpKG8uQVBJVG9waWMuREVSRUdJU1RFUl9QTEFURk9STSx7aWQ6ZX0pfX0sMzAyMDc6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuaXNDb25uZWN0ZWRUb0F0TGVhc3Q9dC5nZXRTdGF0dXM9dm9pZCAwO2NvbnN0IG89cihuKDI5MTQwKSksaT1uKDk1ODgxKSxhPW4oMTIwNTIpLGw9big3NjU5OCk7ZnVuY3Rpb24gYygpe3JldHVybigwLGkud2l0aFN0cmljdFRpbWVvdXQpKDUwMCwoMCxhLnRyeVNlcnZpY2VEaXNwYXRjaCkobC5BUElUb3BpYy5HRVRfUFJPVklERVJfU1RBVFVTLHZvaWQgMCksXCJcIikuY2F0Y2goKCgpPT4oe2Nvbm5lY3RlZDohMSx2ZXJzaW9uOm51bGwsdGVtcGxhdGVBUElWZXJzaW9uOm51bGx9KSkpfXQuZ2V0U3RhdHVzPWMsdC5pc0Nvbm5lY3RlZFRvQXRMZWFzdD1hc3luYyBmdW5jdGlvbihlKXtjb25zdCB0PWF3YWl0IGMoKTtpZih0LmNvbm5lY3RlZCYmbnVsbCE9PXQudmVyc2lvbil7Y29uc3Qgbj0oMCxvLmRlZmF1bHQpKHQudmVyc2lvbixlKTtpZigwPT09bnx8MT09PW4pcmV0dXJuITB9cmV0dXJuITF9fSw1NTA2MzooZSx0KT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSw4NzIyMTooZSx0KT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSwzMDYwMDooZSx0KT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSwyMzM3MTooZSx0KT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSw0OTc1NzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzA2MDApLHQpLG8obigyMzM3MSksdCksbyhuKDEyOTA4KSx0KSxvKG4oNDg4NzcpLHQpfSwxMjkwODooZSx0KT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVGVtcGxhdGVGcmFnbWVudE5hbWVzPXQuUHJlc2VudGF0aW9uVGVtcGxhdGVGcmFnbWVudE5hbWVzPXQuQ29udGFpbmVyVGVtcGxhdGVGcmFnbWVudE5hbWVzPXQuVGVtcGxhdGVOYW1lcz12b2lkIDAsdC5UZW1wbGF0ZU5hbWVzPXttYXJrZG93bjpcIm1hcmtkb3duXCIsbGlzdDpcImxpc3RcIixjdXN0b206XCJjdXN0b21cIn0sdC5Db250YWluZXJUZW1wbGF0ZUZyYWdtZW50TmFtZXM9e2NvbnRhaW5lcjpcImNvbnRhaW5lclwifSx0LlByZXNlbnRhdGlvblRlbXBsYXRlRnJhZ21lbnROYW1lcz17dGV4dDpcInRleHRcIixpbWFnZTpcImltYWdlXCIsbGlzdDpcImxpc3RcIixhY3Rpb25hYmxlVGV4dDpcImFjdGlvbmFibGVUZXh0XCJ9LHQuVGVtcGxhdGVGcmFnbWVudE5hbWVzPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LkNvbnRhaW5lclRlbXBsYXRlRnJhZ21lbnROYW1lcyksdC5QcmVzZW50YXRpb25UZW1wbGF0ZUZyYWdtZW50TmFtZXMpfSw0ODg3NzooZSx0KT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSw3MjQ3NTooZSx0KT0+e1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4oZSx0KXtsZXQgbjt0cnl7bj1KU09OLnN0cmluZ2lmeShlKX1jYXRjaChlKXtuPXR9cmV0dXJuIG59T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5zYWZlU3RyaW5naWZ5PXQudmFsaWRhdGVFbnZpcm9ubWVudD10LnNhbml0aXplRXZlbnRUeXBlPXQuc2FuaXRpemVGdW5jdGlvbj12b2lkIDAsdC5zYW5pdGl6ZUZ1bmN0aW9uPWZ1bmN0aW9uKGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZDogJHtuKGUsXCJUaGUgcHJvdmlkZWQgdmFsdWVcIil9IGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uYCk7cmV0dXJuIGV9LHQuc2FuaXRpemVFdmVudFR5cGU9ZnVuY3Rpb24oZSl7aWYoXCJub3RpZmljYXRpb24tYWN0aW9uXCI9PT1lfHxcIm5vdGlmaWNhdGlvbi1jcmVhdGVkXCI9PT1lfHxcIm5vdGlmaWNhdGlvbi10b2FzdC1kaXNtaXNzZWRcIj09PWV8fFwibm90aWZpY2F0aW9uLWNsb3NlZFwiPT09ZXx8XCJub3RpZmljYXRpb25zLWNvdW50LWNoYW5nZWRcIj09PWV8fFwibm90aWZpY2F0aW9uLWZvcm0tc3VibWl0dGVkXCI9PT1lfHxcIm5vdGlmaWNhdGlvbi1yZW1pbmRlci1jcmVhdGVkXCI9PT1lfHxcIm5vdGlmaWNhdGlvbi1yZW1pbmRlci1yZW1vdmVkXCI9PT1lKXJldHVybiBlO3Rocm93IG5ldyBFcnJvcihgSW52YWxpZCBhcmd1bWVudCBwYXNzZWQ6ICR7bihlLFwiVGhlIHByb3ZpZGVkIGV2ZW50IHR5cGVcIil9IGlzIG5vdCBhIHZhbGlkIE5vdGlmaWNhdGlvbnMgZXZlbnQgdHlwZWApfSx0LnZhbGlkYXRlRW52aXJvbm1lbnQ9ZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgZmluKXRocm93IG5ldyBFcnJvcihcImZpbiBpcyBub3QgZGVmaW5lZC4gVGhlIG9wZW5maW4tbm90aWZpY2F0aW9ucyBtb2R1bGUgaXMgb25seSBpbnRlbmRlZCBmb3IgdXNlIGluIGFuIE9wZW5GaW4gYXBwbGljYXRpb24uXCIpfSx0LnNhZmVTdHJpbmdpZnk9bn19LHQ9e30sZnVuY3Rpb24gbihyKXt2YXIgbz10W3JdO2lmKHZvaWQgMCE9PW8pcmV0dXJuIG8uZXhwb3J0czt2YXIgaT10W3JdPXtleHBvcnRzOnt9fTtyZXR1cm4gZVtyXS5jYWxsKGkuZXhwb3J0cyxpLGkuZXhwb3J0cyxuKSxpLmV4cG9ydHN9KDYxOTk1KTt2YXIgZSx0fSxlLmV4cG9ydHM9dCgpfSwzMDQ6KGUsdCxuKT0+e3ZhciByPXs4NTk0OihlLHQsbik9PntuLmQodCx7WjooKT0+b30pO3ZhciByPS9eKChjaGlsZHJlbnxkYW5nZXJvdXNseVNldElubmVySFRNTHxrZXl8cmVmfGF1dG9Gb2N1c3xkZWZhdWx0VmFsdWV8ZGVmYXVsdENoZWNrZWR8aW5uZXJIVE1MfHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ3xzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmd8dmFsdWVMaW5rfGFjY2VwdHxhY2NlcHRDaGFyc2V0fGFjY2Vzc0tleXxhY3Rpb258YWxsb3d8YWxsb3dVc2VyTWVkaWF8YWxsb3dQYXltZW50UmVxdWVzdHxhbGxvd0Z1bGxTY3JlZW58YWxsb3dUcmFuc3BhcmVuY3l8YWx0fGFzeW5jfGF1dG9Db21wbGV0ZXxhdXRvUGxheXxjYXB0dXJlfGNlbGxQYWRkaW5nfGNlbGxTcGFjaW5nfGNoYWxsZW5nZXxjaGFyU2V0fGNoZWNrZWR8Y2l0ZXxjbGFzc0lEfGNsYXNzTmFtZXxjb2xzfGNvbFNwYW58Y29udGVudHxjb250ZW50RWRpdGFibGV8Y29udGV4dE1lbnV8Y29udHJvbHN8Y29udHJvbHNMaXN0fGNvb3Jkc3xjcm9zc09yaWdpbnxkYXRhfGRhdGVUaW1lfGRlY29kaW5nfGRlZmF1bHR8ZGVmZXJ8ZGlyfGRpc2FibGVkfGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlfGRvd25sb2FkfGRyYWdnYWJsZXxlbmNUeXBlfGZvcm18Zm9ybUFjdGlvbnxmb3JtRW5jVHlwZXxmb3JtTWV0aG9kfGZvcm1Ob1ZhbGlkYXRlfGZvcm1UYXJnZXR8ZnJhbWVCb3JkZXJ8aGVhZGVyc3xoZWlnaHR8aGlkZGVufGhpZ2h8aHJlZnxocmVmTGFuZ3xodG1sRm9yfGh0dHBFcXVpdnxpZHxpbnB1dE1vZGV8aW50ZWdyaXR5fGlzfGtleVBhcmFtc3xrZXlUeXBlfGtpbmR8bGFiZWx8bGFuZ3xsaXN0fGxvYWRpbmd8bG9vcHxsb3d8bWFyZ2luSGVpZ2h0fG1hcmdpbldpZHRofG1heHxtYXhMZW5ndGh8bWVkaWF8bWVkaWFHcm91cHxtZXRob2R8bWlufG1pbkxlbmd0aHxtdWx0aXBsZXxtdXRlZHxuYW1lfG5vbmNlfG5vVmFsaWRhdGV8b3BlbnxvcHRpbXVtfHBhdHRlcm58cGxhY2Vob2xkZXJ8cGxheXNJbmxpbmV8cG9zdGVyfHByZWxvYWR8cHJvZmlsZXxyYWRpb0dyb3VwfHJlYWRPbmx5fHJlZmVycmVyUG9saWN5fHJlbHxyZXF1aXJlZHxyZXZlcnNlZHxyb2xlfHJvd3N8cm93U3BhbnxzYW5kYm94fHNjb3BlfHNjb3BlZHxzY3JvbGxpbmd8c2VhbWxlc3N8c2VsZWN0ZWR8c2hhcGV8c2l6ZXxzaXplc3xzbG90fHNwYW58c3BlbGxDaGVja3xzcmN8c3JjRG9jfHNyY0xhbmd8c3JjU2V0fHN0YXJ0fHN0ZXB8c3R5bGV8c3VtbWFyeXx0YWJJbmRleHx0YXJnZXR8dGl0bGV8dHlwZXx1c2VNYXB8dmFsdWV8d2lkdGh8d21vZGV8d3JhcHxhYm91dHxkYXRhdHlwZXxpbmxpc3R8cHJlZml4fHByb3BlcnR5fHJlc291cmNlfHR5cGVvZnx2b2NhYnxhdXRvQ2FwaXRhbGl6ZXxhdXRvQ29ycmVjdHxhdXRvU2F2ZXxjb2xvcnxpbmVydHxpdGVtUHJvcHxpdGVtU2NvcGV8aXRlbVR5cGV8aXRlbUlEfGl0ZW1SZWZ8b258cmVzdWx0c3xzZWN1cml0eXx1bnNlbGVjdGFibGV8YWNjZW50SGVpZ2h0fGFjY3VtdWxhdGV8YWRkaXRpdmV8YWxpZ25tZW50QmFzZWxpbmV8YWxsb3dSZW9yZGVyfGFscGhhYmV0aWN8YW1wbGl0dWRlfGFyYWJpY0Zvcm18YXNjZW50fGF0dHJpYnV0ZU5hbWV8YXR0cmlidXRlVHlwZXxhdXRvUmV2ZXJzZXxhemltdXRofGJhc2VGcmVxdWVuY3l8YmFzZWxpbmVTaGlmdHxiYXNlUHJvZmlsZXxiYm94fGJlZ2lufGJpYXN8Ynl8Y2FsY01vZGV8Y2FwSGVpZ2h0fGNsaXB8Y2xpcFBhdGhVbml0c3xjbGlwUGF0aHxjbGlwUnVsZXxjb2xvckludGVycG9sYXRpb258Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyc3xjb2xvclByb2ZpbGV8Y29sb3JSZW5kZXJpbmd8Y29udGVudFNjcmlwdFR5cGV8Y29udGVudFN0eWxlVHlwZXxjdXJzb3J8Y3h8Y3l8ZHxkZWNlbGVyYXRlfGRlc2NlbnR8ZGlmZnVzZUNvbnN0YW50fGRpcmVjdGlvbnxkaXNwbGF5fGRpdmlzb3J8ZG9taW5hbnRCYXNlbGluZXxkdXJ8ZHh8ZHl8ZWRnZU1vZGV8ZWxldmF0aW9ufGVuYWJsZUJhY2tncm91bmR8ZW5kfGV4cG9uZW50fGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWR8ZmlsbHxmaWxsT3BhY2l0eXxmaWxsUnVsZXxmaWx0ZXJ8ZmlsdGVyUmVzfGZpbHRlclVuaXRzfGZsb29kQ29sb3J8Zmxvb2RPcGFjaXR5fGZvY3VzYWJsZXxmb250RmFtaWx5fGZvbnRTaXplfGZvbnRTaXplQWRqdXN0fGZvbnRTdHJldGNofGZvbnRTdHlsZXxmb250VmFyaWFudHxmb250V2VpZ2h0fGZvcm1hdHxmcm9tfGZyfGZ4fGZ5fGcxfGcyfGdseXBoTmFtZXxnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbHxnbHlwaE9yaWVudGF0aW9uVmVydGljYWx8Z2x5cGhSZWZ8Z3JhZGllbnRUcmFuc2Zvcm18Z3JhZGllbnRVbml0c3xoYW5naW5nfGhvcml6QWR2WHxob3Jpek9yaWdpblh8aWRlb2dyYXBoaWN8aW1hZ2VSZW5kZXJpbmd8aW58aW4yfGludGVyY2VwdHxrfGsxfGsyfGszfGs0fGtlcm5lbE1hdHJpeHxrZXJuZWxVbml0TGVuZ3RofGtlcm5pbmd8a2V5UG9pbnRzfGtleVNwbGluZXN8a2V5VGltZXN8bGVuZ3RoQWRqdXN0fGxldHRlclNwYWNpbmd8bGlnaHRpbmdDb2xvcnxsaW1pdGluZ0NvbmVBbmdsZXxsb2NhbHxtYXJrZXJFbmR8bWFya2VyTWlkfG1hcmtlclN0YXJ0fG1hcmtlckhlaWdodHxtYXJrZXJVbml0c3xtYXJrZXJXaWR0aHxtYXNrfG1hc2tDb250ZW50VW5pdHN8bWFza1VuaXRzfG1hdGhlbWF0aWNhbHxtb2RlfG51bU9jdGF2ZXN8b2Zmc2V0fG9wYWNpdHl8b3BlcmF0b3J8b3JkZXJ8b3JpZW50fG9yaWVudGF0aW9ufG9yaWdpbnxvdmVyZmxvd3xvdmVybGluZVBvc2l0aW9ufG92ZXJsaW5lVGhpY2tuZXNzfHBhbm9zZTF8cGFpbnRPcmRlcnxwYXRoTGVuZ3RofHBhdHRlcm5Db250ZW50VW5pdHN8cGF0dGVyblRyYW5zZm9ybXxwYXR0ZXJuVW5pdHN8cG9pbnRlckV2ZW50c3xwb2ludHN8cG9pbnRzQXRYfHBvaW50c0F0WXxwb2ludHNBdFp8cHJlc2VydmVBbHBoYXxwcmVzZXJ2ZUFzcGVjdFJhdGlvfHByaW1pdGl2ZVVuaXRzfHJ8cmFkaXVzfHJlZlh8cmVmWXxyZW5kZXJpbmdJbnRlbnR8cmVwZWF0Q291bnR8cmVwZWF0RHVyfHJlcXVpcmVkRXh0ZW5zaW9uc3xyZXF1aXJlZEZlYXR1cmVzfHJlc3RhcnR8cmVzdWx0fHJvdGF0ZXxyeHxyeXxzY2FsZXxzZWVkfHNoYXBlUmVuZGVyaW5nfHNsb3BlfHNwYWNpbmd8c3BlY3VsYXJDb25zdGFudHxzcGVjdWxhckV4cG9uZW50fHNwZWVkfHNwcmVhZE1ldGhvZHxzdGFydE9mZnNldHxzdGREZXZpYXRpb258c3RlbWh8c3RlbXZ8c3RpdGNoVGlsZXN8c3RvcENvbG9yfHN0b3BPcGFjaXR5fHN0cmlrZXRocm91Z2hQb3NpdGlvbnxzdHJpa2V0aHJvdWdoVGhpY2tuZXNzfHN0cmluZ3xzdHJva2V8c3Ryb2tlRGFzaGFycmF5fHN0cm9rZURhc2hvZmZzZXR8c3Ryb2tlTGluZWNhcHxzdHJva2VMaW5lam9pbnxzdHJva2VNaXRlcmxpbWl0fHN0cm9rZU9wYWNpdHl8c3Ryb2tlV2lkdGh8c3VyZmFjZVNjYWxlfHN5c3RlbUxhbmd1YWdlfHRhYmxlVmFsdWVzfHRhcmdldFh8dGFyZ2V0WXx0ZXh0QW5jaG9yfHRleHREZWNvcmF0aW9ufHRleHRSZW5kZXJpbmd8dGV4dExlbmd0aHx0b3x0cmFuc2Zvcm18dTF8dTJ8dW5kZXJsaW5lUG9zaXRpb258dW5kZXJsaW5lVGhpY2tuZXNzfHVuaWNvZGV8dW5pY29kZUJpZGl8dW5pY29kZVJhbmdlfHVuaXRzUGVyRW18dkFscGhhYmV0aWN8dkhhbmdpbmd8dklkZW9ncmFwaGljfHZNYXRoZW1hdGljYWx8dmFsdWVzfHZlY3RvckVmZmVjdHx2ZXJzaW9ufHZlcnRBZHZZfHZlcnRPcmlnaW5YfHZlcnRPcmlnaW5ZfHZpZXdCb3h8dmlld1RhcmdldHx2aXNpYmlsaXR5fHdpZHRoc3x3b3JkU3BhY2luZ3x3cml0aW5nTW9kZXx4fHhIZWlnaHR8eDF8eDJ8eENoYW5uZWxTZWxlY3Rvcnx4bGlua0FjdHVhdGV8eGxpbmtBcmNyb2xlfHhsaW5rSHJlZnx4bGlua1JvbGV8eGxpbmtTaG93fHhsaW5rVGl0bGV8eGxpbmtUeXBlfHhtbEJhc2V8eG1sbnN8eG1sbnNYbGlua3x4bWxMYW5nfHhtbFNwYWNlfHl8eTF8eTJ8eUNoYW5uZWxTZWxlY3Rvcnx6fHpvb21BbmRQYW58Zm9yfGNsYXNzfGF1dG9mb2N1cyl8KChbRGRdW0FhXVtUdF1bQWFdfFtBYV1bUnJdW0lpXVtBYV18eCktLiopKSQvO2NvbnN0IG89KGk9e30sZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWlbZV0mJihpW2VdPSh0PWUsci50ZXN0KHQpfHwxMTE9PT10LmNoYXJDb2RlQXQoMCkmJjExMD09PXQuY2hhckNvZGVBdCgxKSYmdC5jaGFyQ29kZUF0KDIpPDkxKSksaVtlXTt2YXIgdH0pO3ZhciBpfSwxNTIxOihlLHQsbik9PntuLnIodCksbi5kKHQse0FjdGl2aXR5TG9nSWNvbjooKT0+aSxBbGlnbkJhc2VsaW5lSWNvbjooKT0+YSxBbGlnbkJvdHRvbUljb246KCk9PmwsQWxpZ25DZW50ZXJIb3Jpem9udGFsbHlJY29uOigpPT5jLEFsaWduQ2VudGVyVmVydGljYWxseUljb246KCk9PnMsQWxpZ25MZWZ0SWNvbjooKT0+dSxBbGlnblJpZ2h0SWNvbjooKT0+ZCxBbGlnblRvcEljb246KCk9PmYsQWxsU2lkZXNJY29uOigpPT5wLEFuZ2xlSWNvbjooKT0+QyxBcmNoaXZlSWNvbjooKT0+aCxBcnJvd0JvdHRvbUxlZnRJY29uOigpPT52LEFycm93Qm90dG9tUmlnaHRJY29uOigpPT5nLEFycm93RG93bkljb246KCk9Pm0sQXJyb3dMZWZ0SWNvbjooKT0+dyxBcnJvd1JpZ2h0SWNvbjooKT0+eSxBcnJvd1RvcExlZnRJY29uOigpPT5iLEFycm93VG9wUmlnaHRJY29uOigpPT54LEFycm93VXBJY29uOigpPT5PLEFzcGVjdFJhdGlvSWNvbjooKT0+TCxBdmF0YXJJY29uOigpPT5fLEJhY2twYWNrSWNvbjooKT0+TSxCYWRnZUljb246KCk9PmosQmFyQ2hhcnRJY29uOigpPT5FLEJlbGxJY29uOigpPT5TLEJsZW5kaW5nTW9kZUljb246KCk9PlAsQm9va21hcmtJY29uOigpPT5ILEJvcmRlckFsbEljb246KCk9PmssQm9yZGVyQm90dG9tSWNvbjooKT0+VixCb3JkZXJEYXNoZWRJY29uOigpPT5SLEJvcmRlckRvdHRlZEljb246KCk9PkksQm9yZGVyTGVmdEljb246KCk9PlosQm9yZGVyTm9uZUljb246KCk9PlQsQm9yZGVyUmlnaHRJY29uOigpPT5BLEJvcmRlclNvbGlkSWNvbjooKT0+RCxCb3JkZXJTcGxpdEljb246KCk9PkIsQm9yZGVyU3R5bGVJY29uOigpPT4kLEJvcmRlclRvcEljb246KCk9PkYsQm94SWNvbjooKT0+TixCb3hNb2RlbEljb246KCk9PnosQnV0dG9uSWNvbjooKT0+VyxDYWxlbmRhckljb246KCk9PkcsQ2FtZXJhSWNvbjooKT0+VSxDYXJkU3RhY2tJY29uOigpPT5xLENhcmRTdGFja01pbnVzSWNvbjooKT0+WSxDYXJkU3RhY2tQbHVzSWNvbjooKT0+SyxDYXJldERvd25JY29uOigpPT5YLENhcmV0TGVmdEljb246KCk9PlEsQ2FyZXRSaWdodEljb246KCk9PkosQ2FyZXRTb3J0SWNvbjooKT0+ZWUsQ2FyZXRVcEljb246KCk9PnRlLENoYXRCdWJibGVJY29uOigpPT5uZSxDaGVja0NpcmNsZWRJY29uOigpPT5vZSxDaGVja0ljb246KCk9PnJlLENoZWNrYm94SWNvbjooKT0+aWUsQ2hldnJvbkRvd25JY29uOigpPT5hZSxDaGV2cm9uTGVmdEljb246KCk9PmxlLENoZXZyb25SaWdodEljb246KCk9PmNlLENoZXZyb25VcEljb246KCk9PnNlLENpcmNsZUJhY2tzbGFzaEljb246KCk9PmRlLENpcmNsZUljb246KCk9PnVlLENsaXBib2FyZENvcHlJY29uOigpPT5wZSxDbGlwYm9hcmRJY29uOigpPT5mZSxDbG9ja0ljb246KCk9PkNlLENvZGVJY29uOigpPT5oZSxDb2RlU2FuZGJveExvZ29JY29uOigpPT52ZSxDb2x1bW5TcGFjaW5nSWNvbjooKT0+Z2UsQ29sdW1uc0ljb246KCk9Pm1lLENvbW1pdEljb246KCk9PndlLENvbXBvbmVudDFJY29uOigpPT55ZSxDb21wb25lbnQySWNvbjooKT0+YmUsQ29tcG9uZW50Qm9vbGVhbkljb246KCk9PnhlLENvbXBvbmVudEluc3RhbmNlSWNvbjooKT0+T2UsQ29tcG9uZW50Tm9uZUljb246KCk9PkxlLENvbXBvbmVudFBsYWNlaG9sZGVySWNvbjooKT0+X2UsQ29udGFpbmVySWNvbjooKT0+TWUsQ29va2llSWNvbjooKT0+amUsQ29weUljb246KCk9PkVlLENvcm5lckJvdHRvbUxlZnRJY29uOigpPT5TZSxDb3JuZXJCb3R0b21SaWdodEljb246KCk9PlBlLENvcm5lclRvcExlZnRJY29uOigpPT5IZSxDb3JuZXJUb3BSaWdodEljb246KCk9PmtlLENvcm5lcnNJY29uOigpPT5WZSxDb3VudGRvd25UaW1lckljb246KCk9PlJlLENvdW50ZXJDbG9ja3dpc2VDbG9ja0ljb246KCk9PkllLENyb3BJY29uOigpPT5aZSxDcm9zczFJY29uOigpPT5UZSxDcm9zczJJY29uOigpPT5BZSxDcm9zc0NpcmNsZWRJY29uOigpPT5EZSxDcm9zc2hhaXIxSWNvbjooKT0+QmUsQ3Jvc3NoYWlyMkljb246KCk9PiRlLENydW1wbGVkUGFwZXJJY29uOigpPT5GZSxDdWJlSWNvbjooKT0+TmUsQ3Vyc29yQXJyb3dJY29uOigpPT56ZSxDdXJzb3JUZXh0SWNvbjooKT0+V2UsRGFzaEljb246KCk9PkdlLERhc2hib2FyZEljb246KCk9PlVlLERpbWVuc2lvbnNJY29uOigpPT5xZSxEaXNjSWNvbjooKT0+WWUsRGl2aWRlckhvcml6b250YWxJY29uOigpPT5LZSxEaXZpZGVyVmVydGljYWxJY29uOigpPT5YZSxEb3RGaWxsZWRJY29uOigpPT5KZSxEb3RJY29uOigpPT5RZSxEb3RzSG9yaXpvbnRhbEljb246KCk9PmV0LERvdHNWZXJ0aWNhbEljb246KCk9PnR0LERvdWJsZUFycm93RG93bkljb246KCk9Pm50LERvdWJsZUFycm93TGVmdEljb246KCk9PnJ0LERvdWJsZUFycm93UmlnaHRJY29uOigpPT5vdCxEb3VibGVBcnJvd1VwSWNvbjooKT0+aXQsRG93bmxvYWRJY29uOigpPT5hdCxEcmFnSGFuZGxlRG90czFJY29uOigpPT5sdCxEcmFnSGFuZGxlRG90czJJY29uOigpPT5jdCxEcmFnSGFuZGxlSG9yaXpvbnRhbEljb246KCk9PnN0LERyYWdIYW5kbGVWZXJ0aWNhbEljb246KCk9PnV0LERyYXdpbmdQaW5GaWxsZWRJY29uOigpPT5mdCxEcmF3aW5nUGluSWNvbjooKT0+ZHQsRHJvcGRvd25NZW51SWNvbjooKT0+cHQsRW50ZXJGdWxsU2NyZWVuSWNvbjooKT0+aHQsRW50ZXJJY29uOigpPT5DdCxFbnZlbG9wZUNsb3NlZEljb246KCk9PnZ0LEVudmVsb3BlT3Blbkljb246KCk9Pmd0LEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uOigpPT5tdCxFeGl0RnVsbFNjcmVlbkljb246KCk9Pnl0LEV4aXRJY29uOigpPT53dCxFeHRlcm5hbExpbmtJY29uOigpPT5idCxFeWVDbG9zZWRJY29uOigpPT54dCxFeWVOb25lSWNvbjooKT0+T3QsRXllT3Blbkljb246KCk9Pkx0LEZhY2VJY29uOigpPT5fdCxGaWdtYUxvZ29JY29uOigpPT5NdCxGaWxlSWNvbjooKT0+anQsRmlsZU1pbnVzSWNvbjooKT0+RXQsRmlsZVBsdXNJY29uOigpPT5TdCxGaWxlVGV4dEljb246KCk9PlB0LEZvbnRCb2xkSWNvbjooKT0+SHQsRm9udEZhbWlseUljb246KCk9Pmt0LEZvbnRJdGFsaWNJY29uOigpPT5WdCxGb250Um9tYW5JY29uOigpPT5SdCxGb250U2l6ZUljb246KCk9Pkl0LEZvbnRTdHlsZUljb246KCk9Plp0LEZyYW1lSWNvbjooKT0+VHQsRnJhbWVyTG9nb0ljb246KCk9PkF0LEdlYXJJY29uOigpPT5EdCxHaXRIdWJMb2dvSWNvbjooKT0+QnQsR2xvYmVJY29uOigpPT4kdCxHcmlkSWNvbjooKT0+RnQsR3JvdXBJY29uOigpPT5OdCxIYWxmMUljb246KCk9Pnp0LEhhbGYySWNvbjooKT0+V3QsSGFtYnVyZ2VyTWVudUljb246KCk9Pkd0LEhhbmRJY29uOigpPT5VdCxIZWFkaW5nSWNvbjooKT0+cXQsSGVpZ2h0SWNvbjooKT0+WXQsSG9tZUljb246KCk9Pkt0LEljb25KYXJMb2dvSWNvbjooKT0+WHQsSWRDYXJkSWNvbjooKT0+UXQsSW1hZ2VJY29uOigpPT5KdCxJbmZvQ2lyY2xlZEljb246KCk9PmVuLElucHV0SWNvbjooKT0+dG4sTGFwVGltZXJJY29uOigpPT5ubixMYXllcnNJY29uOigpPT5ybixMYXlvdXRJY29uOigpPT5vbixMZXR0ZXJDYXNlQ2FwaXRhbGl6ZUljb246KCk9PmFuLExldHRlckNhc2VMb3dlcmNhc2VJY29uOigpPT5sbixMZXR0ZXJDYXNlVG9nZ2xlSWNvbjooKT0+Y24sTGV0dGVyQ2FzZVVwcGVyY2FzZUljb246KCk9PnNuLExldHRlclNwYWNpbmdJY29uOigpPT51bixMaWdodG5pbmdCb2x0SWNvbjooKT0+ZG4sTGluZUhlaWdodEljb246KCk9PmZuLExpbmsxSWNvbjooKT0+cG4sTGluazJJY29uOigpPT5DbixMaW5rQnJlYWsxSWNvbjooKT0+aG4sTGlua0JyZWFrMkljb246KCk9PnZuLExpbmtOb25lMUljb246KCk9PmduLExpbmtOb25lMkljb246KCk9Pm1uLExpc3RCdWxsZXRJY29uOigpPT53bixMb2NrQ2xvc2VkSWNvbjooKT0+eW4sTG9ja09wZW4xSWNvbjooKT0+Ym4sTG9ja09wZW4ySWNvbjooKT0+eG4sTG9vcEljb246KCk9Pk9uLE1hZ2ljV2FuZEljb246KCk9PkxuLE1hZ25pZnlpbmdHbGFzc0ljb246KCk9Pl9uLE1hcmdpbkljb246KCk9Pk1uLE1hc2tPZmZJY29uOigpPT5qbixNYXNrT25JY29uOigpPT5FbixNaW51c0NpcmNsZWRJY29uOigpPT5QbixNaW51c0ljb246KCk9PlNuLE1peEljb246KCk9PkhuLE1peGVySG9yaXpvbnRhbEljb246KCk9PmtuLE1peGVyVmVydGljYWxJY29uOigpPT5WbixNb2R1bHpMb2dvSWNvbjooKT0+Um4sTW9vbkljb246KCk9PkluLE1vdmVJY29uOigpPT5abixOb3Rpb25Mb2dvSWNvbjooKT0+VG4sT3BhY2l0eUljb246KCk9PkFuLE92ZXJsaW5lSWNvbjooKT0+RG4sUGFkZGluZ0ljb246KCk9PkJuLFBhcGVyUGxhbmVJY29uOigpPT4kbixQYXVzZUljb246KCk9PkZuLFBlbmNpbDFJY29uOigpPT5ObixQZW5jaWwySWNvbjooKT0+em4sUGVyc29uSWNvbjooKT0+V24sUGllQ2hhcnRJY29uOigpPT5HbixQaWxjcm93SWNvbjooKT0+VW4sUGluQm90dG9tSWNvbjooKT0+cW4sUGluTGVmdEljb246KCk9PlluLFBpblJpZ2h0SWNvbjooKT0+S24sUGluVG9wSWNvbjooKT0+WG4sUGxheUljb246KCk9PlFuLFBsdXNDaXJjbGVkSWNvbjooKT0+ZXIsUGx1c0ljb246KCk9PkpuLFF1ZXN0aW9uTWFya0NpcmNsZWRJY29uOigpPT5ucixRdWVzdGlvbk1hcmtJY29uOigpPT50cixRdW90ZUljb246KCk9PnJyLFJhZGlvYnV0dG9uSWNvbjooKT0+b3IsUmVhZGVySWNvbjooKT0+aXIsUmVsb2FkSWNvbjooKT0+YXIsUmVzZXRJY29uOigpPT5scixSZXN1bWVJY29uOigpPT5jcixSb2NrZXRJY29uOigpPT5zcixSb3RhdGVDb3VudGVyQ2xvY2t3aXNlSWNvbjooKT0+dXIsUm93U3BhY2luZ0ljb246KCk9PmRyLFJvd3NJY29uOigpPT5mcixSdWxlckhvcml6b250YWxJY29uOigpPT5wcixSdWxlclNxdWFyZUljb246KCk9PkNyLFNlY3Rpb25JY29uOigpPT5ocixTZXdpbmdQaW5GaWxsZWRJY29uOigpPT5ncixTZXdpbmdQaW5JY29uOigpPT52cixTaGFkb3dJY29uOigpPT5tcixTaGFkb3dJbm5lckljb246KCk9PndyLFNoYWRvd05vbmVJY29uOigpPT55cixTaGFkb3dPdXRlckljb246KCk9PmJyLFNoYXJlMUljb246KCk9PnhyLFNoYXJlMkljb246KCk9Pk9yLFNodWZmbGVJY29uOigpPT5McixTaXplSWNvbjooKT0+X3IsU2tldGNoTG9nb0ljb246KCk9Pk1yLFNsYXNoSWNvbjooKT0+anIsU2xpZGVySWNvbjooKT0+RXIsU3BhY2VCZXR3ZWVuSG9yaXpvbnRhbGx5SWNvbjooKT0+U3IsU3BhY2VCZXR3ZWVuVmVydGljYWxseUljb246KCk9PlByLFNwYWNlRXZlbmx5SG9yaXpvbnRhbGx5SWNvbjooKT0+SHIsU3BhY2VFdmVubHlWZXJ0aWNhbGx5SWNvbjooKT0+a3IsU3BlYWtlckxvdWRJY29uOigpPT5WcixTcGVha2VyTW9kZXJhdGVJY29uOigpPT5ScixTcGVha2VyT2ZmSWNvbjooKT0+SXIsU3BlYWtlclF1aWV0SWNvbjooKT0+WnIsU3F1YXJlSWNvbjooKT0+VHIsU3RhY2tJY29uOigpPT5BcixTdGFyRmlsbGVkSWNvbjooKT0+QnIsU3Rhckljb246KCk9PkRyLFN0aXRjaGVzTG9nb0ljb246KCk9PiRyLFN0b3BJY29uOigpPT5GcixTdG9wd2F0Y2hJY29uOigpPT5OcixTdHJldGNoSG9yaXpvbnRhbGx5SWNvbjooKT0+enIsU3RyZXRjaFZlcnRpY2FsbHlJY29uOigpPT5XcixTdHJpa2V0aHJvdWdoSWNvbjooKT0+R3IsU3VuSWNvbjooKT0+VXIsU3dpdGNoSWNvbjooKT0+cXIsU3ltYm9sSWNvbjooKT0+WXIsVGFibGVJY29uOigpPT5LcixUYXJnZXRJY29uOigpPT5YcixUZXh0QWxpZ25DZW50ZXJJY29uOigpPT5KcixUZXh0QWxpZ25KdXN0aWZ5SWNvbjooKT0+ZW8sVGV4dEFsaWduTGVmdEljb246KCk9PnRvLFRleHRBbGlnblJpZ2h0SWNvbjooKT0+bm8sVGV4dEljb246KCk9PlFyLFRleHROb25lSWNvbjooKT0+cm8sVGhpY2tBcnJvd0Rvd25JY29uOigpPT5vbyxUaGlja0Fycm93TGVmdEljb246KCk9PmlvLFRoaWNrQXJyb3dSaWdodEljb246KCk9PmFvLFRoaWNrQXJyb3dVcEljb246KCk9PmxvLFRpbWVySWNvbjooKT0+Y28sVG9rZW5zSWNvbjooKT0+c28sVHJhY2tOZXh0SWNvbjooKT0+dW8sVHJhY2tQcmV2aW91c0ljb246KCk9PmZvLFRyYW5zcGFyZW5jeUdyaWRJY29uOigpPT5wbyxUcmFzaEljb246KCk9PkNvLFRyaWFuZ2xlRG93bkljb246KCk9PmhvLFRyaWFuZ2xlTGVmdEljb246KCk9PnZvLFRyaWFuZ2xlUmlnaHRJY29uOigpPT5nbyxUcmlhbmdsZVVwSWNvbjooKT0+bW8sVHdpdHRlckxvZ29JY29uOigpPT53byxVbmRlcmxpbmVJY29uOigpPT55byxVcGRhdGVJY29uOigpPT5ibyxVcGxvYWRJY29uOigpPT54byxWYWx1ZUljb246KCk9Pk9vLFZhbHVlTm9uZUljb246KCk9PkxvLFZlcmNlbExvZ29JY29uOigpPT5fbyxWaWRlb0ljb246KCk9Pk1vLFZpZXdHcmlkSWNvbjooKT0+am8sVmlld0hvcml6b250YWxJY29uOigpPT5FbyxWaWV3Tm9uZUljb246KCk9PlNvLFZpZXdWZXJ0aWNhbEljb246KCk9PlBvLFdpZHRoSWNvbjooKT0+SG8sWm9vbUluSWNvbjooKT0+a28sWm9vbU91dEljb246KCk9PlZvfSk7dmFyIHI9big2Njg5KTtmdW5jdGlvbiBvKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfXZhciBpPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wIDEuNUMwIDEuMjIzODYgMC4yMjM4NTggMSAwLjUgMUgyLjVDMi43NzYxNCAxIDMgMS4yMjM4NiAzIDEuNUMzIDEuNzc2MTQgMi43NzYxNCAyIDIuNSAySDAuNUMwLjIyMzg1OCAyIDAgMS43NzYxNCAwIDEuNVpNNCAxLjVDNCAxLjIyMzg2IDQuMjIzODYgMSA0LjUgMUgxNC41QzE0Ljc3NjEgMSAxNSAxLjIyMzg2IDE1IDEuNUMxNSAxLjc3NjE0IDE0Ljc3NjEgMiAxNC41IDJINC41QzQuMjIzODYgMiA0IDEuNzc2MTQgNCAxLjVaTTQgNC41QzQgNC4yMjM4NiA0LjIyMzg2IDQgNC41IDRIMTEuNUMxMS43NzYxIDQgMTIgNC4yMjM4NiAxMiA0LjVDMTIgNC43NzYxNCAxMS43NzYxIDUgMTEuNSA1SDQuNUM0LjIyMzg2IDUgNCA0Ljc3NjE0IDQgNC41Wk0wIDcuNUMwIDcuMjIzODYgMC4yMjM4NTggNyAwLjUgN0gyLjVDMi43NzYxNCA3IDMgNy4yMjM4NiAzIDcuNUMzIDcuNzc2MTQgMi43NzYxNCA4IDIuNSA4SDAuNUMwLjIyMzg1OCA4IDAgNy43NzYxNCAwIDcuNVpNNCA3LjVDNCA3LjIyMzg2IDQuMjIzODYgNyA0LjUgN0gxNC41QzE0Ljc3NjEgNyAxNSA3LjIyMzg2IDE1IDcuNUMxNSA3Ljc3NjE0IDE0Ljc3NjEgOCAxNC41IDhINC41QzQuMjIzODYgOCA0IDcuNzc2MTQgNCA3LjVaTTQgMTAuNUM0IDEwLjIyMzkgNC4yMjM4NiAxMCA0LjUgMTBIMTEuNUMxMS43NzYxIDEwIDEyIDEwLjIyMzkgMTIgMTAuNUMxMiAxMC43NzYxIDExLjc3NjEgMTEgMTEuNSAxMUg0LjVDNC4yMjM4NiAxMSA0IDEwLjc3NjEgNCAxMC41Wk0wIDEzLjVDMCAxMy4yMjM5IDAuMjIzODU4IDEzIDAuNSAxM0gyLjVDMi43NzYxNCAxMyAzIDEzLjIyMzkgMyAxMy41QzMgMTMuNzc2MSAyLjc3NjE0IDE0IDIuNSAxNEgwLjVDMC4yMjM4NTggMTQgMCAxMy43NzYxIDAgMTMuNVpNNCAxMy41QzQgMTMuMjIzOSA0LjIyMzg2IDEzIDQuNSAxM0gxNC41QzE0Ljc3NjEgMTMgMTUgMTMuMjIzOSAxNSAxMy41QzE1IDEzLjc3NjEgMTQuNzc2MSAxNCAxNC41IDE0SDQuNUM0LjIyMzg2IDE0IDQgMTMuNzc2MSA0IDEzLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxhPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMC41IDEuNzUwMDNDMTAuNzEwNyAxLjc1MDAzIDEwLjg5ODggMS44ODIxNyAxMC45NzAzIDIuMDgwNDJMMTMuOTcwMyAxMC40QzE0LjA2NCAxMC42NTk4IDEzLjkyOTMgMTAuOTQ2MyAxMy42Njk2IDExLjA0QzEzLjQwOTggMTEuMTMzNiAxMy4xMjMzIDEwLjk5OSAxMy4wMjk2IDEwLjczOTJMMTIuMDQ3NyA4LjAxNjA2SDguOTUyMjdMNy45NzAzMSAxMC43MzkyQzcuODc2NjQgMTAuOTk5IDcuNTkwMTIgMTEuMTMzNiA3LjMzMDM1IDExLjA0QzcuMDcwNTggMTAuOTQ2MyA2LjkzNTkzIDEwLjY1OTggNy4wMjk2IDEwLjRMMTAuMDI5NiAyLjA4MDQyQzEwLjEwMTEgMS44ODIxNyAxMC4yODkyIDEuNzUwMDMgMTAuNSAxLjc1MDAzWk0xMC41IDMuNzI0MDJMMTEuNzQxMSA3LjE2NjA2SDkuMjU4NzdMMTAuNSAzLjcyNDAyWk0yLjQ5OTQ5IDIuMDk5OTdDMi43MjA0IDIuMDk5OTcgMi44OTk0OSAyLjI3OTA2IDIuODk5NDkgMi40OTk5N0wyLjg5OTQ5IDkuNTM0MjhMNC4yMTY2NCA4LjIxNzEzQzQuMzcyODUgOC4wNjA5MiA0LjYyNjEyIDguMDYwOTIgNC43ODIzMyA4LjIxNzEzQzQuOTM4NTQgOC4zNzMzNCA0LjkzODU0IDguNjI2NiA0Ljc4MjMzIDguNzgyODFMMi43ODIzMyAxMC43ODI4QzIuNzA3MzIgMTAuODU3OCAyLjYwNTU3IDEwLjkgMi40OTk0OSAxMC45QzIuMzkzNCAxMC45IDIuMjkxNjYgMTAuODU3OCAyLjIxNjY0IDEwLjc4MjhMMC4yMTY2NDUgOC43ODI4MUMwLjA2MDQzNDkgOC42MjY2IDAuMDYwNDM0OSA4LjM3MzM0IDAuMjE2NjQ1IDguMjE3MTNDMC4zNzI4NTQgOC4wNjA5MiAwLjYyNjEyIDguMDYwOTIgMC43ODIzMyA4LjIxNzEzTDIuMDk5NDkgOS41MzQyOEwyLjA5OTQ5IDIuNDk5OTdDMi4wOTk0OSAyLjI3OTA2IDIuMjc4NTcgMi4wOTk5NyAyLjQ5OTQ5IDIuMDk5OTdaTTAuMDk5OTY5NSAxMy41MDAxQzAuMDk5OTY5NSAxMy4yNzkxIDAuMjc5MDU2IDEzLjEwMDEgMC40OTk5NjkgMTMuMTAwMUgxNC41QzE0LjcyMDkgMTMuMTAwMSAxNC45IDEzLjI3OTEgMTQuOSAxMy41MDAxQzE0LjkgMTMuNzIxIDE0LjcyMDkgMTMuOTAwMSAxNC41IDEzLjkwMDFIMC40OTk5NjlDMC4yNzkwNTYgMTMuOTAwMSAwLjA5OTk2OTUgMTMuNzIxIDAuMDk5OTY5NSAxMy41MDAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOSAzQzkgMi40NDc3MiA4LjU1MjI5IDIgOCAySDdDNi40NDc3MiAyIDYgMi40NDc3MiA2IDNMNiAxNEgxLjVDMS4yMjM4NiAxNCAxIDE0LjIyMzkgMSAxNC41QzEgMTQuNzc2MSAxLjIyMzg2IDE1IDEuNSAxNUw2IDE1SDlIMTMuNUMxMy43NzYxIDE1IDE0IDE0Ljc3NjEgMTQgMTQuNUMxNCAxNC4yMjM5IDEzLjc3NjEgMTQgMTMuNSAxNEg5VjNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxjPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02Ljk5OTg4IDFDNi40NDc1OSAxIDUuOTk5ODggMS40NDc3MiA1Ljk5OTg4IDJWN0gxLjQ5OTg4QzEuMjIzNzQgNyAwLjk5OTg3OCA3LjIyMzg2IDAuOTk5ODc4IDcuNUMwLjk5OTg3OCA3Ljc3NjE0IDEuMjIzNzQgOCAxLjQ5OTg4IDhINS45OTk4OFYxM0M1Ljk5OTg4IDEzLjU1MjMgNi40NDc1OSAxNCA2Ljk5OTg4IDE0SDcuOTk5ODhDOC41NTIxNiAxNCA4Ljk5OTg4IDEzLjU1MjMgOC45OTk4OCAxM1Y4SDEzLjQ5OTlDMTMuNzc2IDggMTMuOTk5OSA3Ljc3NjE0IDEzLjk5OTkgNy41QzEzLjk5OTkgNy4yMjM4NiAxMy43NzYgNyAxMy40OTk5IDdIOC45OTk4OFYyQzguOTk5ODggMS40NDc3MiA4LjU1MjE2IDEgNy45OTk4OCAxTDYuOTk5ODggMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuOTk5ODggNkMxLjQ0NzU5IDYgMC45OTk4NzcgNi40NDc3MiAwLjk5OTg3NyA3TDAuOTk5ODc3IDhDMC45OTk4NzcgOC41NTIyOCAxLjQ0NzU5IDkgMS45OTk4OCA5TDYuOTk5ODggOUw2Ljk5OTg4IDEzLjVDNi45OTk4OCAxMy43NzYxIDcuMjIzNzQgMTQgNy40OTk4OCAxNEM3Ljc3NjAyIDE0IDcuOTk5ODggMTMuNzc2MSA3Ljk5OTg4IDEzLjVMNy45OTk4OCA5TDEyLjk5OTkgOUMxMy41NTIyIDkgMTMuOTk5OSA4LjU1MjI4IDEzLjk5OTkgOEwxMy45OTk5IDdDMTMuOTk5OSA2LjQ0NzcyIDEzLjU1MjIgNiAxMi45OTk5IDZMNy45OTk4OCA2TDcuOTk5ODggMS41QzcuOTk5ODggMS4yMjM4NiA3Ljc3NjAyIDEgNy40OTk4OCAxQzcuMjIzNzMgMSA2Ljk5OTg4IDEuMjIzODYgNi45OTk4OCAxLjVMNi45OTk4OCA2TDEuOTk5ODggNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuNDk5OTk1IDAuOTk5OTk1QzAuMjIzODU1IDAuOTk5OTk1IC01LjU4NDU4ZS0wNyAxLjIyMzg1IC01LjQ2Mzg4ZS0wNyAxLjQ5OTk5TC0yLjE4NTU0ZS0wOCAxMy40OTk5Qy05Ljc4NDkyZS0wOSAxMy43NzYgMC4yMjM4NTUgMTMuOTk5OSAwLjQ5OTk5NSAxMy45OTk5QzAuNzc2MTM2IDEzLjk5OTkgMC45OTk5OTEgMTMuNzc2IDAuOTk5OTkxIDEzLjQ5OTlMMC45OTk5OTEgOC45OTk5M0wxMiA4Ljk5OTkzQzEyLjU1MjMgOC45OTk5MyAxMyA4LjU1MjIyIDEzIDcuOTk5OTNMMTMgNi45OTk5NEMxMyA2LjQ0NzY2IDEyLjU1MjMgNS45OTk5NSAxMiA1Ljk5OTk1TDAuOTk5OTkxIDUuOTk5OTVMMC45OTk5OTEgMS40OTk5OUMwLjk5OTk5MSAxLjIyMzg1IDAuNzc2MTM1IDAuOTk5OTk1IDAuNDk5OTk1IDAuOTk5OTk1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTQuNDk5OSAxQzE0LjIyMzcgMSAxMy45OTk5IDEuMjIzODYgMTMuOTk5OSAxLjVMMTMuOTk5OSA2TDIuOTk5ODggNkMyLjQ0NzU5IDYgMS45OTk4OCA2LjQ0NzcyIDEuOTk5ODggN0wxLjk5OTg4IDhDMS45OTk4OCA4LjU1MjI4IDIuNDQ3NTkgOSAyLjk5OTg4IDlMMTMuOTk5OSA5TDEzLjk5OTkgMTMuNUMxMy45OTk5IDEzLjc3NjEgMTQuMjIzNyAxNCAxNC40OTk5IDE0QzE0Ljc3NiAxNCAxNC45OTk5IDEzLjc3NjEgMTQuOTk5OSAxMy41TDE0Ljk5OTkgOUwxNC45OTk5IDZMMTQuOTk5OSAxLjVDMTQuOTk5OSAxLjIyMzg2IDE0Ljc3NiAxIDE0LjQ5OTkgMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNSAwQzEuMjIzODYgMCAxIDAuMjIzODU4IDEgMC41QzEgMC43NzYxNDIgMS4yMjM4NiAxIDEuNSAxSDZWMTJDNiAxMi41NTIzIDYuNDQ3NzIgMTMgNyAxM0g4QzguNTUyMjggMTMgOSAxMi41NTIzIDkgMTJWMUgxMy41QzEzLjc3NjEgMSAxNCAwLjc3NjE0MiAxNCAwLjVDMTQgMC4yMjM4NTggMTMuNzc2MSAwIDEzLjUgMEg5SDZIMS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDAuNzVMOS43NSAzSDUuMjVMNy41IDAuNzVaTTcuNSAxNC4yNUw5Ljc1IDEySDUuMjVMNy41IDE0LjI1Wk0zIDUuMjVMMC43NSA3LjVMMyA5Ljc1VjUuMjVaTTE0LjI1IDcuNUwxMiA1LjI1VjkuNzVMMTQuMjUgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC44OTE0IDIuMTkzN0M5LjExNTggMi4zNTQ2NCA5LjE2NzI1IDIuNjY3MDEgOS4wMDYzMSAyLjg5MTQxTDIuNDczODggMTJIMTMuNUMxMy43NzYxIDEyIDE0IDEyLjIyMzkgMTQgMTIuNUMxNCAxMi43NzYyIDEzLjc3NjEgMTMgMTMuNSAxM0gxLjVDMS4zMTI1NCAxMyAxLjE0MDgyIDEyLjg5NTIgMS4wNTUyIDEyLjcyODRDMC45Njk1NzggMTIuNTYxNiAwLjk4NDQzOCAxMi4zNjEgMS4wOTM2OSAxMi4yMDg2TDguMTkzNjkgMi4zMDg2MkM4LjM1NDYyIDIuMDg0MjIgOC42NjcgMi4wMzI3NyA4Ljg5MTQgMi4xOTM3Wk0xMS4xIDYuNTAwMDFDMTEuMSA2LjIyMzg3IDExLjMyMzggNi4wMDAwMSAxMS42IDYuMDAwMDFDMTEuODc2MSA2LjAwMDAxIDEyLjEgNi4yMjM4NyAxMi4xIDYuNTAwMDFDMTIuMSA2Ljc3NjE1IDExLjg3NjEgNy4wMDAwMSAxMS42IDcuMDAwMDFDMTEuMzIzOCA3LjAwMDAxIDExLjEgNi43NzYxNSAxMS4xIDYuNTAwMDFaTTEwLjQgNC4wMDAwMUMxMC4xMjM5IDQuMDAwMDEgOS45MDAwMyA0LjIyMzg3IDkuOTAwMDMgNC41MDAwMUM5LjkwMDAzIDQuNzc2MTUgMTAuMTIzOSA1LjAwMDAxIDEwLjQgNS4wMDAwMUMxMC42NzYyIDUuMDAwMDEgMTAuOSA0Ljc3NjE1IDEwLjkgNC41MDAwMUMxMC45IDQuMjIzODcgMTAuNjc2MiA0LjAwMDAxIDEwLjQgNC4wMDAwMVpNMTIuMSA4LjUwMDAxQzEyLjEgOC4yMjM4NyAxMi4zMjM4IDguMDAwMDEgMTIuNiA4LjAwMDAxQzEyLjg3NjEgOC4wMDAwMSAxMy4xIDguMjIzODcgMTMuMSA4LjUwMDAxQzEzLjEgOC43NzYxNSAxMi44NzYxIDkuMDAwMDEgMTIuNiA5LjAwMDAxQzEyLjMyMzggOS4wMDAwMSAxMi4xIDguNzc2MTUgMTIuMSA4LjUwMDAxWk0xMy40IDEwQzEzLjEyMzkgMTAgMTIuOSAxMC4yMjM5IDEyLjkgMTAuNUMxMi45IDEwLjc3NjEgMTMuMTIzOSAxMSAxMy40IDExQzEzLjY3NjIgMTEgMTMuOSAxMC43NzYxIDEzLjkgMTAuNUMxMy45IDEwLjIyMzkgMTMuNjc2MiAxMCAxMy40IDEwWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4zMDkwMiAxQzIuOTMwMjUgMSAyLjU4Mzk4IDEuMjE0IDIuNDE0NTkgMS41NTI3OUwxLjA1Mjc5IDQuMjc2MzlDMS4wMTgwNyA0LjM0NTgyIDEgNC40MjIzOCAxIDQuNVYxM0MxIDEzLjU1MjMgMS40NDc3MiAxNCAyIDE0SDEzQzEzLjU1MjMgMTQgMTQgMTMuNTUyMyAxNCAxM1Y0LjVDMTQgNC40MjIzOCAxMy45ODE5IDQuMzQ1ODIgMTMuOTQ3MiA0LjI3NjM5TDEyLjU4NTQgMS41NTI4MUMxMi40MTYgMS4yMTQwMyAxMi4wNjk4IDEuMDAwMDMgMTEuNjkxIDEuMDAwMDNMNy41IDEuMDAwMDFMMy4zMDkwMiAxWk0zLjMwOTAyIDJMNyAyLjAwMDAxVjRIMi4zMDkwMkwzLjMwOTAyIDJaTTggNFYyLjAwMDAyTDExLjY5MSAyLjAwMDAzTDEyLjY5MSA0SDhaTTcuNSA1SDEzVjEzSDJWNUg3LjVaTTUuNSA3QzUuMjIzODYgNyA1IDcuMjIzODYgNSA3LjVDNSA3Ljc3NjE0IDUuMjIzODYgOCA1LjUgOEg5LjVDOS43NzYxNCA4IDEwIDcuNzc2MTQgMTAgNy41QzEwIDcuMjIzODYgOS43NzYxNCA3IDkuNSA3SDUuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjM1MzYgMy42NDY0NEMxMS41NDg4IDMuODQxNyAxMS41NDg4IDQuMTU4MjggMTEuMzUzNiA0LjM1MzU0TDQuNzA3MTEgMTFMOSAxMUM5LjI3NjE0IDExIDkuNSAxMS4yMjM5IDkuNSAxMS41QzkuNSAxMS43NzYxIDkuMjc2MTQgMTIgOSAxMkwzLjUgMTJDMy4zNjczOSAxMiAzLjI0MDIxIDExLjk0NzMgMy4xNDY0NSAxMS44NTM2QzMuMDUyNjggMTEuNzU5OCAzIDExLjYzMjYgMyAxMS41TDMgNS45OTk5OUMzIDUuNzIzODUgMy4yMjM4NiA1LjQ5OTk5IDMuNSA1LjQ5OTk5QzMuNzc2MTQgNS40OTk5OSA0IDUuNzIzODUgNCA1Ljk5OTk5VjEwLjI5MjlMMTAuNjQ2NCAzLjY0NjQzQzEwLjg0MTcgMy40NTExNyAxMS4xNTgzIDMuNDUxMTcgMTEuMzUzNiAzLjY0NjQ0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy42NDY0NSAzLjY0NjQ0QzMuNDUxMTggMy44NDE3IDMuNDUxMTggNC4xNTgyOCAzLjY0NjQ1IDQuMzUzNTRMMTAuMjkyOSAxMUw2IDExQzUuNzIzODYgMTEgNS41IDExLjIyMzkgNS41IDExLjVDNS41IDExLjc3NjEgNS43MjM4NiAxMiA2IDEyTDExLjUgMTJDMTEuNjMyNiAxMiAxMS43NTk4IDExLjk0NzMgMTEuODUzNiAxMS44NTM2QzExLjk0NzMgMTEuNzU5OCAxMiAxMS42MzI2IDEyIDExLjVMMTIgNS45OTk5OUMxMiA1LjcyMzg1IDExLjc3NjEgNS40OTk5OSAxMS41IDUuNDk5OTlDMTEuMjIzOSA1LjQ5OTk5IDExIDUuNzIzODUgMTEgNS45OTk5OVYxMC4yOTI5TDQuMzUzNTUgMy42NDY0M0M0LjE1ODI5IDMuNDUxMTcgMy44NDE3MSAzLjQ1MTE3IDMuNjQ2NDUgMy42NDY0NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG09ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAyQzcuNzc2MTQgMiA4IDIuMjIzODYgOCAyLjVMOCAxMS4yOTI5TDExLjE0NjQgOC4xNDY0NUMxMS4zNDE3IDcuOTUxMTggMTEuNjU4MyA3Ljk1MTE4IDExLjg1MzYgOC4xNDY0NUMxMi4wNDg4IDguMzQxNzEgMTIuMDQ4OCA4LjY1ODI5IDExLjg1MzYgOC44NTM1NUw3Ljg1MzU1IDEyLjg1MzZDNy43NTk3OSAxMi45NDczIDcuNjMyNjEgMTMgNy41IDEzQzcuMzY3MzkgMTMgNy4yNDAyMSAxMi45NDczIDcuMTQ2NDUgMTIuODUzNkwzLjE0NjQ1IDguODUzNTVDMi45NTExOCA4LjY1ODI5IDIuOTUxMTggOC4zNDE3MSAzLjE0NjQ1IDguMTQ2NDVDMy4zNDE3MSA3Ljk1MTE4IDMuNjU4MjkgNy45NTExOCAzLjg1MzU1IDguMTQ2NDVMNyAxMS4yOTI5TDcgMi41QzcgMi4yMjM4NiA3LjIyMzg2IDIgNy41IDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx3PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02Ljg1MzU1IDMuMTQ2NDVDNy4wNDg4MiAzLjM0MTcxIDcuMDQ4ODIgMy42NTgyOSA2Ljg1MzU1IDMuODUzNTVMMy43MDcxMSA3SDEyLjVDMTIuNzc2MSA3IDEzIDcuMjIzODYgMTMgNy41QzEzIDcuNzc2MTQgMTIuNzc2MSA4IDEyLjUgOEgzLjcwNzExTDYuODUzNTUgMTEuMTQ2NEM3LjA0ODgyIDExLjM0MTcgNy4wNDg4MiAxMS42NTgzIDYuODUzNTUgMTEuODUzNkM2LjY1ODI5IDEyLjA0ODggNi4zNDE3MSAxMi4wNDg4IDYuMTQ2NDUgMTEuODUzNkwyLjE0NjQ1IDcuODUzNTVDMS45NTExOCA3LjY1ODI5IDEuOTUxMTggNy4zNDE3MSAyLjE0NjQ1IDcuMTQ2NDVMNi4xNDY0NSAzLjE0NjQ1QzYuMzQxNzEgMi45NTExOCA2LjY1ODI5IDIuOTUxMTggNi44NTM1NSAzLjE0NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC4xNDY0NSAzLjE0NjQ1QzguMzQxNzEgMi45NTExOCA4LjY1ODI5IDIuOTUxMTggOC44NTM1NSAzLjE0NjQ1TDEyLjg1MzYgNy4xNDY0NUMxMy4wNDg4IDcuMzQxNzEgMTMuMDQ4OCA3LjY1ODI5IDEyLjg1MzYgNy44NTM1NUw4Ljg1MzU1IDExLjg1MzZDOC42NTgyOSAxMi4wNDg4IDguMzQxNzEgMTIuMDQ4OCA4LjE0NjQ1IDExLjg1MzZDNy45NTExOCAxMS42NTgzIDcuOTUxMTggMTEuMzQxNyA4LjE0NjQ1IDExLjE0NjRMMTEuMjkyOSA4SDIuNUMyLjIyMzg2IDggMiA3Ljc3NjE0IDIgNy41QzIgNy4yMjM4NiAyLjIyMzg2IDcgMi41IDdIMTEuMjkyOUw4LjE0NjQ1IDMuODUzNTVDNy45NTExOCAzLjY1ODI5IDcuOTUxMTggMy4zNDE3MSA4LjE0NjQ1IDMuMTQ2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxiPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS4zNTM2IDExLjM1MzZDMTEuNTQ4OCAxMS4xNTgzIDExLjU0ODggMTAuODQxNyAxMS4zNTM2IDEwLjY0NjVMNC43MDcxMSA0TDkgNEM5LjI3NjE0IDQgOS41IDMuNzc2MTQgOS41IDMuNUM5LjUgMy4yMjM4NiA5LjI3NjE0IDMgOSAzTDMuNSAzQzMuMzY3MzkgMyAzLjI0MDIxIDMuMDUyNjggMy4xNDY0NSAzLjE0NjQ1QzMuMDUyNjggMy4yNDAyMiAzIDMuMzY3MzkgMyAzLjVMMyA5LjAwMDAxQzMgOS4yNzYxNSAzLjIyMzg2IDkuNTAwMDEgMy41IDkuNTAwMDFDMy43NzYxNCA5LjUwMDAxIDQgOS4yNzYxNSA0IDkuMDAwMDFWNC43MDcxMUwxMC42NDY0IDExLjM1MzZDMTAuODQxNyAxMS41NDg4IDExLjE1ODMgMTEuNTQ4OCAxMS4zNTM2IDExLjM1MzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx4PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjY0NjQ1IDExLjM1MzZDMy40NTExOCAxMS4xNTgzIDMuNDUxMTggMTAuODQxNyAzLjY0NjQ1IDEwLjY0NjVMMTAuMjkyOSA0TDYgNEM1LjcyMzg2IDQgNS41IDMuNzc2MTQgNS41IDMuNUM1LjUgMy4yMjM4NiA1LjcyMzg2IDMgNiAzTDExLjUgM0MxMS42MzI2IDMgMTEuNzU5OCAzLjA1MjY4IDExLjg1MzYgMy4xNDY0NUMxMS45NDczIDMuMjQwMjIgMTIgMy4zNjczOSAxMiAzLjVMMTIgOS4wMDAwMUMxMiA5LjI3NjE1IDExLjc3NjEgOS41MDAwMSAxMS41IDkuNTAwMDFDMTEuMjIzOSA5LjUwMDAxIDExIDkuMjc2MTUgMTEgOS4wMDAwMVY0LjcwNzExTDQuMzUzNTUgMTEuMzUzNkM0LjE1ODI5IDExLjU0ODggMy44NDE3MSAxMS41NDg4IDMuNjQ2NDUgMTEuMzUzNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMTQ2NDUgMi4xNDY0NUM3LjM0MTcxIDEuOTUxMTggNy42NTgyOSAxLjk1MTE4IDcuODUzNTUgMi4xNDY0NUwxMS44NTM2IDYuMTQ2NDVDMTIuMDQ4OCA2LjM0MTcxIDEyLjA0ODggNi42NTgyOSAxMS44NTM2IDYuODUzNTVDMTEuNjU4MyA3LjA0ODgyIDExLjM0MTcgNy4wNDg4MiAxMS4xNDY0IDYuODUzNTVMOCAzLjcwNzExTDggMTIuNUM4IDEyLjc3NjEgNy43NzYxNCAxMyA3LjUgMTNDNy4yMjM4NiAxMyA3IDEyLjc3NjEgNyAxMi41TDcgMy43MDcxMUwzLjg1MzU1IDYuODUzNTVDMy42NTgyOSA3LjA0ODgyIDMuMzQxNzEgNy4wNDg4MiAzLjE0NjQ1IDYuODUzNTVDMi45NTExOCA2LjY1ODI5IDIuOTUxMTggNi4zNDE3MSAzLjE0NjQ1IDYuMTQ2NDVMNy4xNDY0NSAyLjE0NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi41IDJIMTIuNUMxMi43NzYxIDIgMTMgMi4yMjM4NiAxMyAyLjVWMTIuNUMxMyAxMi43NzYxIDEyLjc3NjEgMTMgMTIuNSAxM0gyLjVDMi4yMjM4NiAxMyAyIDEyLjc3NjEgMiAxMi41VjIuNUMyIDIuMjIzODYgMi4yMjM4NiAyIDIuNSAyWk0xIDIuNUMxIDEuNjcxNTcgMS42NzE1NyAxIDIuNSAxSDEyLjVDMTMuMzI4NCAxIDE0IDEuNjcxNTcgMTQgMi41VjEyLjVDMTQgMTMuMzI4NCAxMy4zMjg0IDE0IDEyLjUgMTRIMi41QzEuNjcxNTcgMTQgMSAxMy4zMjg0IDEgMTIuNVYyLjVaTTcuNSA0QzcuNzc2MTQgNCA4IDMuNzc2MTQgOCAzLjVDOCAzLjIyMzg2IDcuNzc2MTQgMyA3LjUgM0M3LjIyMzg2IDMgNyAzLjIyMzg2IDcgMy41QzcgMy43NzYxNCA3LjIyMzg2IDQgNy41IDRaTTggNS41QzggNS43NzYxNCA3Ljc3NjE0IDYgNy41IDZDNy4yMjM4NiA2IDcgNS43NzYxNCA3IDUuNUM3IDUuMjIzODYgNy4yMjM4NiA1IDcuNSA1QzcuNzc2MTQgNSA4IDUuMjIzODYgOCA1LjVaTTcuNSA4QzcuNzc2MTQgOCA4IDcuNzc2MTQgOCA3LjVDOCA3LjIyMzg2IDcuNzc2MTQgNyA3LjUgN0M3LjIyMzg2IDcgNyA3LjIyMzg2IDcgNy41QzcgNy43NzYxNCA3LjIyMzg2IDggNy41IDhaTTEwIDcuNUMxMCA3Ljc3NjE0IDkuNzc2MTQgOCA5LjUgOEM5LjIyMzg2IDggOSA3Ljc3NjE0IDkgNy41QzkgNy4yMjM4NiA5LjIyMzg2IDcgOS41IDdDOS43NzYxNCA3IDEwIDcuMjIzODYgMTAgNy41Wk0xMS41IDhDMTEuNzc2MSA4IDEyIDcuNzc2MTQgMTIgNy41QzEyIDcuMjIzODYgMTEuNzc2MSA3IDExLjUgN0MxMS4yMjM5IDcgMTEgNy4yMjM4NiAxMSA3LjVDMTEgNy43NzYxNCAxMS4yMjM5IDggMTEuNSA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sXz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwMTQgNy40OTk4OEMwLjg3NzAxNCAzLjg0MjE5IDMuODQyMTYgMC44NzcwNDUgNy40OTk4NSAwLjg3NzA0NUMxMS4xNTc1IDAuODc3MDQ1IDE0LjEyMjcgMy44NDIxOSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAxMS4xNTc1IDExLjE1NzUgMTQuMTIyNyA3LjQ5OTg1IDE0LjEyMjdDMy44NDIxNiAxNC4xMjI3IDAuODc3MDE0IDExLjE1NzUgMC44NzcwMTQgNy40OTk4OFpNNy40OTk4NSAxLjgyNzA0QzQuMzY2ODMgMS44MjcwNCAxLjgyNzAxIDQuMzY2ODYgMS44MjcwMSA3LjQ5OTg4QzEuODI3MDEgOC45NzE5NiAyLjM4Nzc0IDEwLjMxMzEgMy4zMDcyNyAxMS4zMjEzQzQuMTkwNzQgOS45NDExOSA1LjczODE4IDkuMDI0OTkgNy41MDAyMyA5LjAyNDk5QzkuMjYyMDYgOS4wMjQ5OSAxMC44MDkzIDkuOTQwOTcgMTEuNjkyOSAxMS4zMjA4QzEyLjYxMjEgMTAuMzEyNyAxMy4xNzI3IDguOTcxNzIgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNC4zNjY4NiAxMC42MzI4IDEuODI3MDQgNy40OTk4NSAxLjgyNzA0Wk0xMC45ODE4IDExLjk3ODdDMTAuMjgzOSAxMC43Nzk1IDguOTg1NyA5Ljk3NDk5IDcuNTAwMjMgOS45NzQ5OUM2LjAxNDU4IDkuOTc0OTkgNC43MTYyNCAxMC43Nzk3IDQuMDE4NDUgMTEuOTc5MUM0Ljk3OTUyIDEyLjcyNzIgNi4xODc2NSAxMy4xNzI3IDcuNDk5ODUgMTMuMTcyN0M4LjgxMjI3IDEzLjE3MjcgMTAuMDIwNiAxMi43MjcgMTAuOTgxOCAxMS45Nzg3Wk01LjE0OTk5IDYuNTA0ODdDNS4xNDk5OSA1LjIwNyA2LjIwMjEyIDQuMTU0ODcgNy40OTk5OSA0LjE1NDg3QzguNzk3ODYgNC4xNTQ4NyA5Ljg0OTk5IDUuMjA3IDkuODQ5OTkgNi41MDQ4N0M5Ljg0OTk5IDcuODAyNzQgOC43OTc4NiA4Ljg1NDg3IDcuNDk5OTkgOC44NTQ4N0M2LjIwMjEyIDguODU0ODcgNS4xNDk5OSA3LjgwMjc0IDUuMTQ5OTkgNi41MDQ4N1pNNy40OTk5OSA1LjEwNDg3QzYuNzI2NzkgNS4xMDQ4NyA2LjA5OTk5IDUuNzMxNjcgNi4wOTk5OSA2LjUwNDg3QzYuMDk5OTkgNy4yNzgwNyA2LjcyNjc5IDcuOTA0ODcgNy40OTk5OSA3LjkwNDg3QzguMjczMTkgNy45MDQ4NyA4Ljg5OTk5IDcuMjc4MDcgOC44OTk5OSA2LjUwNDg3QzguODk5OTkgNS43MzE2NyA4LjI3MzE5IDUuMTA0ODcgNy40OTk5OSA1LjEwNDg3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSAxQzUgMC40NDc3MTUgNS40NDc3MiAwIDYgMEg5QzkuNTUyMjggMCAxMCAwLjQ0NzcxNSAxMCAxVjJIMTRDMTQuNTUyMyAyIDE1IDIuNDQ3NzIgMTUgM1Y2QzE1IDYuODg4OCAxNC42MTMxIDcuNjg3MzQgMTQgOC4yMzYwOFYxMS41QzE0IDEyLjMyODQgMTMuMzI4NCAxMyAxMi41IDEzSDIuNUMxLjY3MTU3IDEzIDEgMTIuMzI4NCAxIDExLjVWOC4yMzU5QzAuMzg2OTcgNy42ODcyMSAwIDYuODg4ODMgMCA2VjNDMCAyLjQ0NzcyIDAuNDQ3NzE2IDIgMSAySDVWMVpNOSAxVjJINlYxSDlaTTEgM0g1SDUuNUg5LjVIMTBIMTRWNkMxNCA2LjY1NCAxMy42ODY2IDcuMjM0NjcgMTMuMTk5NyA3LjYwMDRDMTIuODY1NSA3Ljg1MTQ0IDEyLjQ1MDggOCAxMiA4SDhWNy41QzggNy4yMjM4NiA3Ljc3NjE0IDcgNy41IDdDNy4yMjM4NiA3IDcgNy4yMjM4NiA3IDcuNVY4SDNDMi41NDkzIDggMi4xMzQ2IDcuODUxMzMgMS44MDAyOSA3LjYwMDIyQzEuMzEzMzUgNy4yMzQ0NiAxIDYuNjUzOTYgMSA2VjNaTTcgOUgzQzIuNjQ5NjEgOSAyLjMxMjkyIDguOTM5NzIgMiA4LjgyOTA1VjExLjVDMiAxMS43NzYxIDIuMjIzODYgMTIgMi41IDEySDEyLjVDMTIuNzc2MSAxMiAxMyAxMS43NzYxIDEzIDExLjVWOC44MjkxNUMxMi42ODcxIDguOTM5NzggMTIuMzUwNCA5IDEyIDlIOFY5LjVDOCA5Ljc3NjE0IDcuNzc2MTQgMTAgNy41IDEwQzcuMjIzODYgMTAgNyA5Ljc3NjE0IDcgOS41VjlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxqPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjUgNkgxMS41QzEyLjMyODQgNiAxMyA2LjY3MTU3IDEzIDcuNUMxMyA4LjMyODQzIDEyLjMyODQgOSAxMS41IDlIMy41QzIuNjcxNTcgOSAyIDguMzI4NDMgMiA3LjVDMiA2LjY3MTU3IDIuNjcxNTcgNiAzLjUgNlpNMSA3LjVDMSA2LjExOTI5IDIuMTE5MjkgNSAzLjUgNUgxMS41QzEyLjg4MDcgNSAxNCA2LjExOTI5IDE0IDcuNUMxNCA4Ljg4MDcxIDEyLjg4MDcgMTAgMTEuNSAxMEgzLjVDMi4xMTkyOSAxMCAxIDguODgwNzEgMSA3LjVaTTQuNSA3QzQuMjIzODYgNyA0IDcuMjIzODYgNCA3LjVDNCA3Ljc3NjE0IDQuMjIzODYgOCA0LjUgOEgxMC41QzEwLjc3NjEgOCAxMSA3Ljc3NjE0IDExIDcuNUMxMSA3LjIyMzg2IDEwLjc3NjEgNyAxMC41IDdINC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEuNSAxQzExLjc3NjEgMSAxMiAxLjIyMzg2IDEyIDEuNVYxMy41QzEyIDEzLjc3NjEgMTEuNzc2MSAxNCAxMS41IDE0QzExLjIyMzkgMTQgMTEgMTMuNzc2MSAxMSAxMy41VjEuNUMxMSAxLjIyMzg2IDExLjIyMzkgMSAxMS41IDFaTTkuNSAzQzkuNzc2MTQgMyAxMCAzLjIyMzg2IDEwIDMuNVYxMy41QzEwIDEzLjc3NjEgOS43NzYxNCAxNCA5LjUgMTRDOS4yMjM4NiAxNCA5IDEzLjc3NjEgOSAxMy41VjMuNUM5IDMuMjIzODYgOS4yMjM4NiAzIDkuNSAzWk0xMy41IDNDMTMuNzc2MSAzIDE0IDMuMjIzODYgMTQgMy41VjEzLjVDMTQgMTMuNzc2MSAxMy43NzYxIDE0IDEzLjUgMTRDMTMuMjIzOSAxNCAxMyAxMy43NzYxIDEzIDEzLjVWMy41QzEzIDMuMjIzODYgMTMuMjIzOSAzIDEzLjUgM1pNNS41IDRDNS43NzYxNCA0IDYgNC4yMjM4NiA2IDQuNVYxMy41QzYgMTMuNzc2MSA1Ljc3NjE0IDE0IDUuNSAxNEM1LjIyMzg2IDE0IDUgMTMuNzc2MSA1IDEzLjVWNC41QzUgNC4yMjM4NiA1LjIyMzg2IDQgNS41IDRaTTEuNSA1QzEuNzc2MTQgNSAyIDUuMjIzODYgMiA1LjVWMTMuNUMyIDEzLjc3NjEgMS43NzYxNCAxNCAxLjUgMTRDMS4yMjM4NiAxNCAxIDEzLjc3NjEgMSAxMy41VjUuNUMxIDUuMjIzODYgMS4yMjM4NiA1IDEuNSA1Wk03LjUgNUM3Ljc3NjE0IDUgOCA1LjIyMzg2IDggNS41VjEzLjVDOCAxMy43NzYxIDcuNzc2MTQgMTQgNy41IDE0QzcuMjIzODYgMTQgNyAxMy43NzYxIDcgMTMuNVY1LjVDNyA1LjIyMzg2IDcuMjIzODYgNSA3LjUgNVpNMy41IDdDMy43NzYxNCA3IDQgNy4yMjM4NiA0IDcuNVYxMy41QzQgMTMuNzc2MSAzLjc3NjE0IDE0IDMuNSAxNEMzLjIyMzg2IDE0IDMgMTMuNzc2MSAzIDEzLjVWNy41QzMgNy4yMjM4NiAzLjIyMzg2IDcgMy41IDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxTPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjYwMTI0IDEuMjUwODZDOC42MDEyNCAxLjc1NDU5IDguMjYyNzggMi4xNzkyNyA3LjgwMDg3IDIuMzA5ODlDMTAuMTQ1OSAyLjQ2NDcgMTIgNC40MTU4MiAxMiA2Ljc5OTk5VjEwLjI1QzEyIDExLjA1NjMgMTIuMDMyOSAxMS43MDc0IDEyLjcyMzYgMTIuMDUyOEMxMi45MzEgMTIuMTU2NSAxMy4wMzk5IDEyLjM4OTIgMTIuOTg2NiAxMi42MTQ5QzEyLjkzMzMgMTIuODQwNiAxMi43MzE5IDEzIDEyLjUgMTNIOC4xNjE0NEM4LjM2OTA0IDEzLjE4MzIgOC40OTk5NyAxMy40NTEzIDguNDk5OTcgMTMuNzVDOC40OTk5NyAxNC4zMDIzIDguMDUyMjYgMTQuNzUgNy40OTk5NyAxNC43NUM2Ljk0NzY5IDE0Ljc1IDYuNDk5OTcgMTQuMzAyMyA2LjQ5OTk3IDEzLjc1QzYuNDk5OTcgMTMuNDUxMyA2LjYzMDkxIDEzLjE4MzIgNi44Mzg1MSAxM0gyLjQ5OTk5QzIuMjY4MSAxMyAyLjA2NjY0IDEyLjg0MDYgMi4wMTMzNiAxMi42MTQ5QzEuOTYwMDkgMTIuMzg5MiAyLjA2ODk3IDEyLjE1NjUgMi4yNzYzOCAxMi4wNTI4QzIuOTY3MDggMTEuNzA3NCAyLjk5OTk5IDExLjA1NjMgMi45OTk5OSAxMC4yNVY2Ljc5OTk5QzIuOTk5OTkgNC40MTUzNyA0Ljg1NDgxIDIuNDYzOTYgNy4yMDA0MiAyLjMwOThDNi43Mzg2NyAyLjE3OTA4IDYuNDAwMzYgMS43NTQ0OCA2LjQwMDM2IDEuMjUwODZDNi40MDAzNiAwLjY0MzEwNCA2Ljg5MzA0IDAuMTUwNDIxIDcuNTAwOCAwLjE1MDQyMUM4LjEwODU1IDAuMTUwNDIxIDguNjAxMjQgMC42NDMxMDQgOC42MDEyNCAxLjI1MDg2Wk03LjQ5OTk5IDMuMjk5OTlDNS41NjY5OSAzLjI5OTk5IDMuOTk5OTkgNC44NjY5OSAzLjk5OTk5IDYuNzk5OTlWMTAuMjVMNC4wMDAwMiAxMC4zMDA5QzQuMDAwNSAxMC43NDYzIDQuMDAxMjEgMTEuNDA4NCAzLjY5OTI5IDEySDExLjMwMDdDMTAuOTk4OCAxMS40MDg0IDEwLjk5OTUgMTAuNzQ2MyAxMSAxMC4zMDA5TDExIDEwLjI1VjYuNzk5OTlDMTEgNC44NjY5OSA5LjQzMjk5IDMuMjk5OTkgNy40OTk5OSAzLjI5OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyA5QzMgNi41IDQuNSA0LjI1IDcuNSAxLjVDMTAuNSA0LjI1IDEyIDYuNSAxMiA5QzEyIDExLjQ4NTMgOS45ODUyOCAxMy41IDcuNSAxMy41QzUuMDE0NzIgMTMuNSAzIDExLjQ4NTMgMyA5Wk0xMC45NTI0IDguMzAzMDdDOS42NzM0NyA3LjgyMTIxIDguMjg3OSA4LjQ2MjA4IDYuOTg5NTYgOS4wNjI1OUM1LjkzMjcgOS41NTE0MiA0LjkzMzY1IDEwLjAxMzUgNC4wOTY5NSA5LjgyMTUzQzQuMDMzNTcgOS41NTgwNCA0IDkuMjgyOTQgNCA5QzQgNy4xMTIwMyA1LjAyNjg2IDUuMjcxOTUgNy41IDIuODczNTdDOS42NjgzNyA0Ljk3NjM5IDEwLjcyNSA2LjY1MDA0IDEwLjk1MjQgOC4zMDMwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEg9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgMi41QzMgMi4yMjM4NiAzLjIyMzg2IDIgMy41IDJIMTEuNUMxMS43NzYxIDIgMTIgMi4yMjM4NiAxMiAyLjVWMTMuNUMxMiAxMy42ODE4IDExLjkwMTQgMTMuODQ5MiAxMS43NDI0IDEzLjkzNzNDMTEuNTgzNCAxNC4wMjU0IDExLjM4OTEgMTQuMDIwMyAxMS4yMzUgMTMuOTI0TDcuNSAxMS41ODk2TDMuNzY1IDEzLjkyNEMzLjYxMDg3IDE0LjAyMDMgMy40MTY1OSAxNC4wMjU0IDMuMjU3NjIgMTMuOTM3M0MzLjA5ODY0IDEzLjg0OTIgMyAxMy42ODE4IDMgMTMuNVYyLjVaTTQgM1YxMi41OTc5TDYuOTcgMTAuNzQxNkM3LjI5NDI3IDEwLjUzOSA3LjcwNTczIDEwLjUzOSA4LjAzIDEwLjc0MTZMMTEgMTIuNTk3OVYzSDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxrPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjI1IDFDMC4yNSAwLjU4NTc4NiAwLjU4NTc4NiAwLjI1IDEgMC4yNUgxNEMxNC40MTQyIDAuMjUgMTQuNzUgMC41ODU3ODYgMTQuNzUgMVYxNEMxNC43NSAxNC40MTQyIDE0LjQxNDIgMTQuNzUgMTQgMTQuNzVIMUMwLjU4NTc4NiAxNC43NSAwLjI1IDE0LjQxNDIgMC4yNSAxNFYxWk0xLjc1IDEuNzVWMTMuMjVIMTMuMjVWMS43NUgxLjc1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI5XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI5XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSkpfSxWPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDEzLjI1TDE0IDEzLjI1VjE0Ljc1TDEgMTQuNzVWMTMuMjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCIzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIzXCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI5XCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI5XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTFcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiOVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjlcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjExXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiMTFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjdcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjlcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjExXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSl9LFI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAgNy41QzAgNy4yMjM4NiAwLjIyMzg1OCA3IDAuNSA3SDNDMy4yNzYxNCA3IDMuNSA3LjIyMzg2IDMuNSA3LjVDMy41IDcuNzc2MTQgMy4yNzYxNCA4IDMgOEgwLjVDMC4yMjM4NTggOCAwIDcuNzc2MTQgMCA3LjVaTTUuNzUgNy41QzUuNzUgNy4yMjM4NiA1Ljk3Mzg2IDcgNi4yNSA3SDguNzVDOS4wMjYxNCA3IDkuMjUgNy4yMjM4NiA5LjI1IDcuNUM5LjI1IDcuNzc2MTQgOS4wMjYxNCA4IDguNzUgOEg2LjI1QzUuOTczODYgOCA1Ljc1IDcuNzc2MTQgNS43NSA3LjVaTTEyIDdDMTEuNzIzOSA3IDExLjUgNy4yMjM4NiAxMS41IDcuNUMxMS41IDcuNzc2MTQgMTEuNzIzOSA4IDEyIDhIMTQuNUMxNC43NzYxIDggMTUgNy43NzYxNCAxNSA3LjVDMTUgNy4yMjM4NiAxNC43NzYxIDcgMTQuNSA3SDEyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sST1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41IDYuNjI1QzEuMDE2NzUgNi42MjUgMC42MjUgNy4wMTY3NSAwLjYyNSA3LjVDMC42MjUgNy45ODMyNSAxLjAxNjc1IDguMzc1IDEuNSA4LjM3NUMxLjk4MzI1IDguMzc1IDIuMzc1IDcuOTgzMjUgMi4zNzUgNy41QzIuMzc1IDcuMDE2NzUgMS45ODMyNSA2LjYyNSAxLjUgNi42MjVaTTUuNSA2LjYyNUM1LjAxNjc1IDYuNjI1IDQuNjI1IDcuMDE2NzUgNC42MjUgNy41QzQuNjI1IDcuOTgzMjUgNS4wMTY3NSA4LjM3NSA1LjUgOC4zNzVDNS45ODMyNSA4LjM3NSA2LjM3NSA3Ljk4MzI1IDYuMzc1IDcuNUM2LjM3NSA3LjAxNjc1IDUuOTgzMjUgNi42MjUgNS41IDYuNjI1Wk05LjUgNi42MjVDOS4wMTY3NSA2LjYyNSA4LjYyNSA3LjAxNjc1IDguNjI1IDcuNUM4LjYyNSA3Ljk4MzI1IDkuMDE2NzUgOC4zNzUgOS41IDguMzc1QzkuOTgzMjUgOC4zNzUgMTAuMzc1IDcuOTgzMjUgMTAuMzc1IDcuNUMxMC4zNzUgNy4wMTY3NSA5Ljk4MzI1IDYuNjI1IDkuNSA2LjYyNVpNMTIuNjI1IDcuNUMxMi42MjUgNy4wMTY3NSAxMy4wMTY4IDYuNjI1IDEzLjUgNi42MjVDMTMuOTgzMiA2LjYyNSAxNC4zNzUgNy4wMTY3NSAxNC4zNzUgNy41QzE0LjM3NSA3Ljk4MzI1IDEzLjk4MzIgOC4zNzUgMTMuNSA4LjM3NUMxMy4wMTY4IDguMzc1IDEyLjYyNSA3Ljk4MzI1IDEyLjYyNSA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxaPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjc1IDFMMS43NSAxNEwwLjI0OTk5OSAxNEwwLjI1IDFMMS43NSAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMFwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTAgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTBcIix5OlwiMTNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxMCAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTJcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDEyIDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEyXCIseTpcIjEzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgMTIgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDggNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiN1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiMTNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCIxM1wiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDE0IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDUpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCA1KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjNcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCAzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjlcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDkpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjlcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCA5KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjExXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgOCAxMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiMTFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCAxMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNlwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgNiA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI2XCIseTpcIjEzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgNiAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNFwiLHk6XCI3XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgNCA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI0XCIseTpcIjEzXCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoOTAgNCAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTBcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDEwIDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEyXCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxMiAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA4IDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCAxNCAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI2XCIseTpcIjFcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSg5MCA2IDEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjRcIix5OlwiMVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKDkwIDQgMSlcIixmaWxsOm59KSl9LFQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI1LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjUuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNVwiLHk6XCIxMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiM1wiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjNcIix5OlwiMTMuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiM1wiLHk6XCIxLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI5XCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjExXCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjExXCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI5LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEzXCIseTpcIjkuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxM1wiLHk6XCIxMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjUuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCIzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjEzLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxXCIseTpcIjkuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMVwiLHk6XCIxMS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pKX0sQT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMjUgMUwxMy4yNSAxNEwxNC43NSAxNEwxNC43NSAxTDEzLjI1IDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA1IDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA1IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMyA3KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMyAxMylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDcgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDEgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDcgMTMpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCAxIDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyA1KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSA1KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyAzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSAzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyA5KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSA5KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyAxMSlcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDEgMTEpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA5IDcpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7d2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJtYXRyaXgoMCAxIDEgMCA5IDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMTEgNylcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcIm1hdHJpeCgwIDEgMSAwIDExIDEzKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNSAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMyAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgNyAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMSAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgOSAxKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3dpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwibWF0cml4KDAgMSAxIDAgMTEgMSlcIixmaWxsOm59KSl9LEQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuMjUgNy41QzEuMjUgNy4yMjM4NiAxLjQ3Mzg2IDcgMS43NSA3SDEzLjI1QzEzLjUyNjEgNyAxMy43NSA3LjIyMzg2IDEzLjc1IDcuNUMxMy43NSA3Ljc3NjE0IDEzLjUyNjEgOCAxMy4yNSA4SDEuNzVDMS40NzM4NiA4IDEuMjUgNy43NzYxNCAxLjI1IDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCI1LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiN1wiLHk6XCIxMy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjEuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTNcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI1XCIseTpcIjcuMDI1XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiM1wiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjlcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMVwiLHk6XCI3LjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjdcIix5OlwiOS4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI3XCIseTpcIjExLjAyNVwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjFcIix5OlwiNy4wMjVcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMSAxLjQ5OTk0QzEgMS4yMjM4IDEuMjIzODYgMC45OTk5MzkgMS41IDAuOTk5OTM5SDZWMS45OTk5NEgyVjUuOTk5OTRIMVYxLjQ5OTk0Wk0xMyAxLjk5OTk0SDlWMC45OTk5MzlIMTMuNUMxMy43NzYxIDAuOTk5OTM5IDE0IDEuMjIzOCAxNCAxLjQ5OTk0VjUuOTk5OTRIMTNWMS45OTk5NFpNMSAxMy40OTk5VjguOTk5OTRIMlYxMi45OTk5SDZWMTMuOTk5OUgxLjVDMS4yMjM4NiAxMy45OTk5IDEgMTMuNzc2MSAxIDEzLjQ5OTlaTTEzIDEyLjk5OTlWOC45OTk5NEgxNFYxMy40OTk5QzE0IDEzLjc3NjEgMTMuNzc2MSAxMy45OTk5IDEzLjUgMTMuOTk5OUg5LjVWMTIuOTk5OUgxM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LCQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNSAzQzEuMjIzODYgMyAxIDMuMjIzODYgMSAzLjVDMSAzLjc3NjE0IDEuMjIzODYgNCAxLjUgNEgxMy41QzEzLjc3NjEgNCAxNCAzLjc3NjE0IDE0IDMuNUMxNCAzLjIyMzg2IDEzLjc3NjEgMyAxMy41IDNIMS41Wk0xIDcuNUMxIDcuMjIzODYgMS4yMjM4NiA3IDEuNSA3SDMuNUMzLjc3NjE0IDcgNCA3LjIyMzg2IDQgNy41QzQgNy43NzYxNCAzLjc3NjE0IDggMy41IDhIMS41QzEuMjIzODYgOCAxIDcuNzc2MTQgMSA3LjVaTTEgMTEuNUMxIDExLjIyMzkgMS4yMjM4NiAxMSAxLjUgMTFDMS43NzYxNCAxMSAyIDExLjIyMzkgMiAxMS41QzIgMTEuNzc2MSAxLjc3NjE0IDEyIDEuNSAxMkMxLjIyMzg2IDEyIDEgMTEuNzc2MSAxIDExLjVaTTMgMTEuNUMzIDExLjIyMzkgMy4yMjM4NiAxMSAzLjUgMTFDMy43NzYxNCAxMSA0IDExLjIyMzkgNCAxMS41QzQgMTEuNzc2MSAzLjc3NjE0IDEyIDMuNSAxMkMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVaTTUuNSAxMUM1LjIyMzg2IDExIDUgMTEuMjIzOSA1IDExLjVDNSAxMS43NzYxIDUuMjIzODYgMTIgNS41IDEyQzUuNzc2MTQgMTIgNiAxMS43NzYxIDYgMTEuNUM2IDExLjIyMzkgNS43NzYxNCAxMSA1LjUgMTFaTTcgMTEuNUM3IDExLjIyMzkgNy4yMjM4NiAxMSA3LjUgMTFDNy43NzYxNCAxMSA4IDExLjIyMzkgOCAxMS41QzggMTEuNzc2MSA3Ljc3NjE0IDEyIDcuNSAxMkM3LjIyMzg2IDEyIDcgMTEuNzc2MSA3IDExLjVaTTkuNSAxMUM5LjIyMzg2IDExIDkgMTEuMjIzOSA5IDExLjVDOSAxMS43NzYxIDkuMjIzODYgMTIgOS41IDEyQzkuNzc2MTQgMTIgMTAgMTEuNzc2MSAxMCAxMS41QzEwIDExLjIyMzkgOS43NzYxNCAxMSA5LjUgMTFaTTExIDExLjVDMTEgMTEuMjIzOSAxMS4yMjM5IDExIDExLjUgMTFDMTEuNzc2MSAxMSAxMiAxMS4yMjM5IDEyIDExLjVDMTIgMTEuNzc2MSAxMS43NzYxIDEyIDExLjUgMTJDMTEuMjIzOSAxMiAxMSAxMS43NzYxIDExIDExLjVaTTEzLjUgMTFDMTMuMjIzOSAxMSAxMyAxMS4yMjM5IDEzIDExLjVDMTMgMTEuNzc2MSAxMy4yMjM5IDEyIDEzLjUgMTJDMTMuNzc2MSAxMiAxNCAxMS43NzYxIDE0IDExLjVDMTQgMTEuMjIzOSAxMy43NzYxIDExIDEzLjUgMTFaTTYuNSA3QzYuMjIzODYgNyA2IDcuMjIzODYgNiA3LjVDNiA3Ljc3NjE0IDYuMjIzODYgOCA2LjUgOEg4LjVDOC43NzYxNCA4IDkgNy43NzYxNCA5IDcuNUM5IDcuMjIzODYgOC43NzYxNCA3IDguNSA3SDYuNVpNMTEgNy41QzExIDcuMjIzODYgMTEuMjIzOSA3IDExLjUgN0gxMy41QzEzLjc3NjEgNyAxNCA3LjIyMzg2IDE0IDcuNUMxNCA3Ljc3NjE0IDEzLjc3NjEgOCAxMy41IDhIMTEuNUMxMS4yMjM5IDggMTEgNy43NzYxNCAxMSA3LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxGPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNCAxLjc1TDEgMS43NUwxIDAuMjQ5OTk5TDE0IDAuMjVMMTQgMS43NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCIxMFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgOCAxMClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMlwiLHk6XCIxMFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMiAxMClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCIxMlwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgOCAxMilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMlwiLHk6XCIxMlwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMiAxMilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiOFwiLHk6XCI4XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA4IDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiMTRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDggMTQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjJcIix5OlwiOFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMiA4KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIyXCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAyIDE0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMFwiLHk6XCI4XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxMCA4KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxMFwiLHk6XCIxNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTAgMTQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEyXCIseTpcIjhcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDEyIDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjEyXCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxMiAxNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiNlwiLHk6XCI4XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA2IDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjZcIix5OlwiMTRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDYgMTQpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjRcIix5OlwiOFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgNCA4KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI0XCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCA0IDE0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCI4XCIseTpcIjZcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDggNilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMlwiLHk6XCI2XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAyIDYpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjhcIix5OlwiNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgOCA0KVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIyXCIseTpcIjRcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDIgNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiMTBcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDE0IDEwKVwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJyZWN0XCIse3g6XCIxNFwiLHk6XCIxMlwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTQgMTIpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjhcIix3aWR0aDpcIjFcIixoZWlnaHQ6XCIxXCIscng6XCIuNVwiLHRyYW5zZm9ybTpcInJvdGF0ZSgtMTgwIDE0IDgpXCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcInJlY3RcIix7eDpcIjE0XCIseTpcIjE0XCIsd2lkdGg6XCIxXCIsaGVpZ2h0OlwiMVwiLHJ4OlwiLjVcIix0cmFuc2Zvcm06XCJyb3RhdGUoLTE4MCAxNCAxNClcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiNlwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTQgNilcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicmVjdFwiLHt4OlwiMTRcIix5OlwiNFwiLHdpZHRoOlwiMVwiLGhlaWdodDpcIjFcIixyeDpcIi41XCIsdHJhbnNmb3JtOlwicm90YXRlKC0xODAgMTQgNClcIixmaWxsOm59KSl9LE49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjUgMkgyLjVDMi4yMjM4NiAyIDIgMi4yMjM4NiAyIDIuNVYxMi41QzIgMTIuNzc2MSAyLjIyMzg2IDEzIDIuNSAxM0gxMi41QzEyLjc3NjEgMTMgMTMgMTIuNzc2MSAxMyAxMi41VjIuNUMxMyAyLjIyMzg2IDEyLjc3NjEgMiAxMi41IDJaTTIuNSAxQzEuNjcxNTcgMSAxIDEuNjcxNTcgMSAyLjVWMTIuNUMxIDEzLjMyODQgMS42NzE1NyAxNCAyLjUgMTRIMTIuNUMxMy4zMjg0IDE0IDE0IDEzLjMyODQgMTQgMTIuNVYyLjVDMTQgMS42NzE1NyAxMy4zMjg0IDEgMTIuNSAxSDIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHo9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuOTk5OTggMC45OTk5NzZDMS40NDc2OSAwLjk5OTk3NiAwLjk5OTk3NiAxLjQ0NzY5IDAuOTk5OTc2IDEuOTk5OThWMTNDMC45OTk5NzYgMTMuNTUyMyAxLjQ0NzY5IDE0IDEuOTk5OTggMTRIMTNDMTMuNTUyMyAxNCAxNCAxMy41NTIzIDE0IDEzVjEuOTk5OThDMTQgMS40NDc2OSAxMy41NTIzIDAuOTk5OTc2IDEzIDAuOTk5OTc2SDEuOTk5OThaTTEuOTk5OTggMS45OTk5OEwxMyAxLjk5OTk4VjEzSDEuOTk5OThWMS45OTk5OFpNNC40OTk5NiAzLjk5OTk2QzQuMjIzODIgMy45OTk5NiAzLjk5OTk2IDQuMjIzODIgMy45OTk5NiA0LjQ5OTk2VjEwLjVDMy45OTk5NiAxMC43NzYxIDQuMjIzODIgMTEgNC40OTk5NiAxMUgxMC41QzEwLjc3NjEgMTEgMTEgMTAuNzc2MSAxMSAxMC41VjQuNDk5OTZDMTEgNC4yMjM4MiAxMC43NzYxIDMuOTk5OTYgMTAuNSAzLjk5OTk2SDQuNDk5OTZaTTQuOTk5OTYgOS45OTk5NlY0Ljk5OTk2SDkuOTk5OTZWOS45OTk5Nkg0Ljk5OTk2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiA1SDEzQzEzLjU1MjMgNSAxNCA1LjQ0NzcyIDE0IDZWOUMxNCA5LjU1MjI4IDEzLjU1MjMgMTAgMTMgMTBIMkMxLjQ0NzcyIDEwIDEgOS41NTIyOCAxIDlWNkMxIDUuNDQ3NzIgMS40NDc3MiA1IDIgNVpNMCA2QzAgNC44OTU0MyAwLjg5NTQzMSA0IDIgNEgxM0MxNC4xMDQ2IDQgMTUgNC44OTU0MyAxNSA2VjlDMTUgMTAuMTA0NiAxNC4xMDQ2IDExIDEzIDExSDJDMC44OTU0MyAxMSAwIDEwLjEwNDYgMCA5VjZaTTQuNSA2Ljc1QzQuMDg1NzkgNi43NSAzLjc1IDcuMDg1NzkgMy43NSA3LjVDMy43NSA3LjkxNDIxIDQuMDg1NzkgOC4yNSA0LjUgOC4yNUM0LjkxNDIxIDguMjUgNS4yNSA3LjkxNDIxIDUuMjUgNy41QzUuMjUgNy4wODU3OSA0LjkxNDIxIDYuNzUgNC41IDYuNzVaTTYuNzUgNy41QzYuNzUgNy4wODU3OSA3LjA4NTc5IDYuNzUgNy41IDYuNzVDNy45MTQyMSA2Ljc1IDguMjUgNy4wODU3OSA4LjI1IDcuNUM4LjI1IDcuOTE0MjEgNy45MTQyMSA4LjI1IDcuNSA4LjI1QzcuMDg1NzkgOC4yNSA2Ljc1IDcuOTE0MjEgNi43NSA3LjVaTTEwLjUgNi43NUMxMC4wODU4IDYuNzUgOS43NSA3LjA4NTc5IDkuNzUgNy41QzkuNzUgNy45MTQyMSAxMC4wODU4IDguMjUgMTAuNSA4LjI1QzEwLjkxNDIgOC4yNSAxMS4yNSA3LjkxNDIxIDExLjI1IDcuNUMxMS4yNSA3LjA4NTc5IDEwLjkxNDIgNi43NSAxMC41IDYuNzVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxHPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjUgMUM0Ljc3NjE0IDEgNSAxLjIyMzg2IDUgMS41VjJIMTBWMS41QzEwIDEuMjIzODYgMTAuMjIzOSAxIDEwLjUgMUMxMC43NzYxIDEgMTEgMS4yMjM4NiAxMSAxLjVWMkgxMi41QzEzLjMyODQgMiAxNCAyLjY3MTU3IDE0IDMuNVYxMi41QzE0IDEzLjMyODQgMTMuMzI4NCAxNCAxMi41IDE0SDIuNUMxLjY3MTU3IDE0IDEgMTMuMzI4NCAxIDEyLjVWMy41QzEgMi42NzE1NyAxLjY3MTU3IDIgMi41IDJINFYxLjVDNCAxLjIyMzg2IDQuMjIzODYgMSA0LjUgMVpNMTAgM1YzLjVDMTAgMy43NzYxNCAxMC4yMjM5IDQgMTAuNSA0QzEwLjc3NjEgNCAxMSAzLjc3NjE0IDExIDMuNVYzSDEyLjVDMTIuNzc2MSAzIDEzIDMuMjIzODYgMTMgMy41VjVIMlYzLjVDMiAzLjIyMzg2IDIuMjIzODYgMyAyLjUgM0g0VjMuNUM0IDMuNzc2MTQgNC4yMjM4NiA0IDQuNSA0QzQuNzc2MTQgNCA1IDMuNzc2MTQgNSAzLjVWM0gxMFpNMiA2VjEyLjVDMiAxMi43NzYxIDIuMjIzODYgMTMgMi41IDEzSDEyLjVDMTIuNzc2MSAxMyAxMyAxMi43NzYxIDEzIDEyLjVWNkgyWk03IDcuNUM3IDcuMjIzODYgNy4yMjM4NiA3IDcuNSA3QzcuNzc2MTQgNyA4IDcuMjIzODYgOCA3LjVDOCA3Ljc3NjE0IDcuNzc2MTQgOCA3LjUgOEM3LjIyMzg2IDggNyA3Ljc3NjE0IDcgNy41Wk05LjUgN0M5LjIyMzg2IDcgOSA3LjIyMzg2IDkgNy41QzkgNy43NzYxNCA5LjIyMzg2IDggOS41IDhDOS43NzYxNCA4IDEwIDcuNzc2MTQgMTAgNy41QzEwIDcuMjIzODYgOS43NzYxNCA3IDkuNSA3Wk0xMSA3LjVDMTEgNy4yMjM4NiAxMS4yMjM5IDcgMTEuNSA3QzExLjc3NjEgNyAxMiA3LjIyMzg2IDEyIDcuNUMxMiA3Ljc3NjE0IDExLjc3NjEgOCAxMS41IDhDMTEuMjIzOSA4IDExIDcuNzc2MTQgMTEgNy41Wk0xMS41IDlDMTEuMjIzOSA5IDExIDkuMjIzODYgMTEgOS41QzExIDkuNzc2MTQgMTEuMjIzOSAxMCAxMS41IDEwQzExLjc3NjEgMTAgMTIgOS43NzYxNCAxMiA5LjVDMTIgOS4yMjM4NiAxMS43NzYxIDkgMTEuNSA5Wk05IDkuNUM5IDkuMjIzODYgOS4yMjM4NiA5IDkuNSA5QzkuNzc2MTQgOSAxMCA5LjIyMzg2IDEwIDkuNUMxMCA5Ljc3NjE0IDkuNzc2MTQgMTAgOS41IDEwQzkuMjIzODYgMTAgOSA5Ljc3NjE0IDkgOS41Wk03LjUgOUM3LjIyMzg2IDkgNyA5LjIyMzg2IDcgOS41QzcgOS43NzYxNCA3LjIyMzg2IDEwIDcuNSAxMEM3Ljc3NjE0IDEwIDggOS43NzYxNCA4IDkuNUM4IDkuMjIzODYgNy43NzYxNCA5IDcuNSA5Wk01IDkuNUM1IDkuMjIzODYgNS4yMjM4NiA5IDUuNSA5QzUuNzc2MTQgOSA2IDkuMjIzODYgNiA5LjVDNiA5Ljc3NjE0IDUuNzc2MTQgMTAgNS41IDEwQzUuMjIzODYgMTAgNSA5Ljc3NjE0IDUgOS41Wk0zLjUgOUMzLjIyMzg2IDkgMyA5LjIyMzg2IDMgOS41QzMgOS43NzYxNCAzLjIyMzg2IDEwIDMuNSAxMEMzLjc3NjE0IDEwIDQgOS43NzYxNCA0IDkuNUM0IDkuMjIzODYgMy43NzYxNCA5IDMuNSA5Wk0zIDExLjVDMyAxMS4yMjM5IDMuMjIzODYgMTEgMy41IDExQzMuNzc2MTQgMTEgNCAxMS4yMjM5IDQgMTEuNUM0IDExLjc3NjEgMy43NzYxNCAxMiAzLjUgMTJDMy4yMjM4NiAxMiAzIDExLjc3NjEgMyAxMS41Wk01LjUgMTFDNS4yMjM4NiAxMSA1IDExLjIyMzkgNSAxMS41QzUgMTEuNzc2MSA1LjIyMzg2IDEyIDUuNSAxMkM1Ljc3NjE0IDEyIDYgMTEuNzc2MSA2IDExLjVDNiAxMS4yMjM5IDUuNzc2MTQgMTEgNS41IDExWk03IDExLjVDNyAxMS4yMjM5IDcuMjIzODYgMTEgNy41IDExQzcuNzc2MTQgMTEgOCAxMS4yMjM5IDggMTEuNUM4IDExLjc3NjEgNy43NzYxNCAxMiA3LjUgMTJDNy4yMjM4NiAxMiA3IDExLjc3NjEgNyAxMS41Wk05LjUgMTFDOS4yMjM4NiAxMSA5IDExLjIyMzkgOSAxMS41QzkgMTEuNzc2MSA5LjIyMzg2IDEyIDkuNSAxMkM5Ljc3NjE0IDEyIDEwIDExLjc3NjEgMTAgMTEuNUMxMCAxMS4yMjM5IDkuNzc2MTQgMTEgOS41IDExWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiAzQzEuNDQ3NzIgMyAxIDMuNDQ3NzIgMSA0VjExQzEgMTEuNTUyMyAxLjQ0NzcyIDEyIDIgMTJIMTNDMTMuNTUyMyAxMiAxNCAxMS41NTIzIDE0IDExVjRDMTQgMy40NDc3MiAxMy41NTIzIDMgMTMgM0gyWk0wIDRDMCAyLjg5NTQzIDAuODk1NDMxIDIgMiAySDEzQzE0LjEwNDYgMiAxNSAyLjg5NTQzIDE1IDRWMTFDMTUgMTIuMTA0NiAxNC4xMDQ2IDEzIDEzIDEzSDJDMC44OTU0MzEgMTMgMCAxMi4xMDQ2IDAgMTFWNFpNMiA0LjI1QzIgNC4xMTE5MyAyLjExMTkzIDQgMi4yNSA0SDQuNzVDNC44ODgwNyA0IDUgNC4xMTE5MyA1IDQuMjVWNS43NTQ1NEM1IDUuODkyNjEgNC44ODgwNyA2LjAwNDU0IDQuNzUgNi4wMDQ1NEgyLjI1QzIuMTExOTMgNi4wMDQ1NCAyIDUuODkyNjEgMiA1Ljc1NDU0VjQuMjVaTTEyLjEwMSA3LjU4NDIxQzEyLjEwMSA5LjAyMDczIDEwLjkzNjUgMTAuMTg1MyA5LjQ5OTk4IDEwLjE4NTNDOC4wNjM0NiAxMC4xODUzIDYuODk4OTMgOS4wMjA3MyA2Ljg5ODkzIDcuNTg0MjFDNi44OTg5MyA2LjE0NzY5IDguMDYzNDYgNC45ODMxNSA5LjQ5OTk4IDQuOTgzMTVDMTAuOTM2NSA0Ljk4MzE1IDEyLjEwMSA2LjE0NzY5IDEyLjEwMSA3LjU4NDIxWk0xMy4xMDEgNy41ODQyMUMxMy4xMDEgOS41NzMwMiAxMS40ODg4IDExLjE4NTMgOS40OTk5OCAxMS4xODUzQzcuNTExMTcgMTEuMTg1MyA1Ljg5ODkzIDkuNTczMDIgNS44OTg5MyA3LjU4NDIxQzUuODk4OTMgNS41OTU0IDcuNTExMTcgMy45ODMxNSA5LjQ5OTk4IDMuOTgzMTVDMTEuNDg4OCAzLjk4MzE1IDEzLjEwMSA1LjU5NTQgMTMuMTAxIDcuNTg0MjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxxPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDMuNUMyIDMuMjIzODYgMi4yMjM4NiAzIDIuNSAzSDEyLjVDMTIuNzc2MSAzIDEzIDMuMjIzODYgMTMgMy41VjkuNUMxMyA5Ljc3NjE0IDEyLjc3NjEgMTAgMTIuNSAxMEgyLjVDMi4yMjM4NiAxMCAyIDkuNzc2MTQgMiA5LjVWMy41Wk0yIDEwLjkxNDZDMS40MTc0IDEwLjcwODcgMSAxMC4xNTMxIDEgOS41VjMuNUMxIDIuNjcxNTcgMS42NzE1NyAyIDIuNSAySDEyLjVDMTMuMzI4NCAyIDE0IDIuNjcxNTcgMTQgMy41VjkuNUMxNCAxMC4xNTMxIDEzLjU4MjYgMTAuNzA4NyAxMyAxMC45MTQ2VjExLjVDMTMgMTIuMzI4NCAxMi4zMjg0IDEzIDExLjUgMTNIMy41QzIuNjcxNTcgMTMgMiAxMi4zMjg0IDIgMTEuNVYxMC45MTQ2Wk0xMiAxMVYxMS41QzEyIDExLjc3NjEgMTEuNzc2MSAxMiAxMS41IDEySDMuNUMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVWMTFIMTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxZPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjUgM0MyLjIyMzg2IDMgMiAzLjIyMzg2IDIgMy41VjkuNUMyIDkuNzc2MTQgMi4yMjM4NiAxMCAyLjUgMTBIMTIuNUMxMi43NzYxIDEwIDEzIDkuNzc2MTQgMTMgOS41VjMuNUMxMyAzLjIyMzg2IDEyLjc3NjEgMyAxMi41IDNIMi41Wk0xIDkuNUMxIDEwLjE1MzEgMS40MTc0IDEwLjcwODcgMiAxMC45MTQ2VjExLjVDMiAxMi4zMjg0IDIuNjcxNTcgMTMgMy41IDEzSDExLjVDMTIuMzI4NCAxMyAxMyAxMi4zMjg0IDEzIDExLjVWMTAuOTE0NkMxMy41ODI2IDEwLjcwODcgMTQgMTAuMTUzMSAxNCA5LjVWMy41QzE0IDIuNjcxNTcgMTMuMzI4NCAyIDEyLjUgMkgyLjVDMS42NzE1NyAyIDEgMi42NzE1NyAxIDMuNVY5LjVaTTEyIDExLjVWMTFIM1YxMS41QzMgMTEuNzc2MSAzLjIyMzg2IDEyIDMuNSAxMkgxMS41QzExLjc3NjEgMTIgMTIgMTEuNzc2MSAxMiAxMS41Wk01LjUgNkM1LjIyMzg2IDYgNSA2LjIyMzg2IDUgNi41QzUgNi43NzYxNCA1LjIyMzg2IDcgNS41IDdIOS41QzkuNzc2MTQgNyAxMCA2Ljc3NjE0IDEwIDYuNUMxMCA2LjIyMzg2IDkuNzc2MTQgNiA5LjUgNkg1LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxLPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDMuNUMyIDMuMjIzODYgMi4yMjM4NiAzIDIuNSAzSDEyLjVDMTIuNzc2MSAzIDEzIDMuMjIzODYgMTMgMy41VjkuNUMxMyA5Ljc3NjE0IDEyLjc3NjEgMTAgMTIuNSAxMEgyLjVDMi4yMjM4NiAxMCAyIDkuNzc2MTQgMiA5LjVWMy41Wk0yIDEwLjkxNDZDMS40MTc0IDEwLjcwODcgMSAxMC4xNTMxIDEgOS41VjMuNUMxIDIuNjcxNTcgMS42NzE1NyAyIDIuNSAySDEyLjVDMTMuMzI4NCAyIDE0IDIuNjcxNTcgMTQgMy41VjkuNUMxNCAxMC4xNTMxIDEzLjU4MjYgMTAuNzA4NyAxMyAxMC45MTQ2VjExLjVDMTMgMTIuMzI4NCAxMi4zMjg0IDEzIDExLjUgMTNIMy41QzIuNjcxNTcgMTMgMiAxMi4zMjg0IDIgMTEuNVYxMC45MTQ2Wk0xMiAxMVYxMS41QzEyIDExLjc3NjEgMTEuNzc2MSAxMiAxMS41IDEySDMuNUMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVWMTFIMTJaTTUgNi41QzUgNi4yMjM4NiA1LjIyMzg2IDYgNS41IDZIN1Y0LjVDNyA0LjIyMzg2IDcuMjIzODYgNCA3LjUgNEM3Ljc3NjE0IDQgOCA0LjIyMzg2IDggNC41VjZIOS41QzkuNzc2MTQgNiAxMCA2LjIyMzg2IDEwIDYuNUMxMCA2Ljc3NjE0IDkuNzc2MTQgNyA5LjUgN0g4VjguNUM4IDguNzc2MTQgNy43NzYxNCA5IDcuNSA5QzcuMjIzODYgOSA3IDguNzc2MTQgNyA4LjVWN0g1LjVDNS4yMjM4NiA3IDUgNi43NzYxNCA1IDYuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFg9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuMTgxNzkgNi4xODE4MUM0LjM1NzUzIDYuMDA2MDggNC42NDI0NSA2LjAwNjA4IDQuODE4MTkgNi4xODE4MUw3LjQ5OTk5IDguODYzNjJMMTAuMTgxOCA2LjE4MTgxQzEwLjM1NzUgNi4wMDYwOCAxMC42NDI0IDYuMDA2MDggMTAuODE4MiA2LjE4MTgxQzEwLjk5MzkgNi4zNTc1NSAxMC45OTM5IDYuNjQyNDcgMTAuODE4MiA2LjgxODIxTDcuODE4MTkgOS44MTgyMUM3LjczMzc5IDkuOTAyNiA3LjYxOTM0IDkuOTUwMDEgNy40OTk5OSA5Ljk1MDAxQzcuMzgwNjQgOS45NTAwMSA3LjI2NjE4IDkuOTAyNiA3LjE4MTc5IDkuODE4MjFMNC4xODE3OSA2LjgxODIxQzQuMDA2MDUgNi42NDI0NyA0LjAwNjA1IDYuMzU3NTUgNC4xODE3OSA2LjE4MTgxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC44MTgwOSA0LjE4MTc5QzguOTkzODMgNC4zNTc1MyA4Ljk5MzgzIDQuNjQyNDUgOC44MTgwOSA0LjgxODE5TDYuMTM2MjkgNy40OTk5OUw4LjgxODA5IDEwLjE4MThDOC45OTM4MyAxMC4zNTc1IDguOTkzODMgMTAuNjQyNCA4LjgxODA5IDEwLjgxODJDOC42NDIzNiAxMC45OTM5IDguMzU3NDMgMTAuOTkzOSA4LjE4MTcgMTAuODE4Mkw1LjE4MTcgNy44MTgxOUM1LjA5NzMxIDcuNzMzNzkgNS4wNDk5IDcuNjE5MzMgNS4wNDk5IDcuNDk5OTlDNS4wNDk5IDcuMzgwNjQgNS4wOTczMSA3LjI2NjE4IDUuMTgxNyA3LjE4MTc5TDguMTgxNyA0LjE4MTc5QzguMzU3NDMgNC4wMDYwNSA4LjY0MjM2IDQuMDA2MDUgOC44MTgwOSA0LjE4MTc5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi4xODE5NCA0LjE4MTg1QzYuMzU3NjcgNC4wMDYxMSA2LjY0MjYgNC4wMDYxMSA2LjgxODMzIDQuMTgxODVMOS44MTgzMyA3LjE4MTg1QzkuOTAyNzIgNy4yNjYyNCA5Ljk1MDEzIDcuMzgwNyA5Ljk1MDEzIDcuNTAwMDVDOS45NTAxMyA3LjYxOTQgOS45MDI3MiA3LjczMzg2IDkuODE4MzMgNy44MTgyNUw2LjgxODMzIDEwLjgxODJDNi42NDI2IDEwLjk5NCA2LjM1NzY3IDEwLjk5NCA2LjE4MTk0IDEwLjgxODJDNi4wMDYyIDEwLjY0MjUgNi4wMDYyIDEwLjM1NzYgNi4xODE5NCAxMC4xODE5TDguODYzNzQgNy41MDAwNUw2LjE4MTk0IDQuODE4MjVDNi4wMDYyIDQuNjQyNTEgNi4wMDYyIDQuMzU3NTkgNi4xODE5NCA0LjE4MTg1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuOTMxNzkgNS40MzE3OUM0Ljc1NjA1IDUuNjA3NTMgNC43NTYwNSA1Ljg5MjQ1IDQuOTMxNzkgNi4wNjgxOUM1LjEwNzUzIDYuMjQzOTIgNS4zOTI0NSA2LjI0MzkyIDUuNTY4MTkgNi4wNjgxOUw3LjQ5OTk5IDQuMTM2MzhMOS40MzE3OSA2LjA2ODE5QzkuNjA3NTMgNi4yNDM5MiA5Ljg5MjQ1IDYuMjQzOTIgMTAuMDY4MiA2LjA2ODE5QzEwLjI0MzkgNS44OTI0NSAxMC4yNDM5IDUuNjA3NTMgMTAuMDY4MiA1LjQzMTc5TDcuODE4MTkgMy4xODE3OUM3LjczMzc5IDMuMDk3NCA3LjYxOTMzIDMuMDQ5OTkgNy40OTk5OSAzLjA0OTk5QzcuMzgwNjQgMy4wNDk5OSA3LjI2NjE4IDMuMDk3NCA3LjE4MTc5IDMuMTgxNzlMNC45MzE3OSA1LjQzMTc5Wk0xMC4wNjgyIDkuNTY4MTlDMTAuMjQzOSA5LjM5MjQ1IDEwLjI0MzkgOS4xMDc1MyAxMC4wNjgyIDguOTMxNzlDOS44OTI0NSA4Ljc1NjA2IDkuNjA3NTMgOC43NTYwNiA5LjQzMTc5IDguOTMxNzlMNy40OTk5OSAxMC44NjM2TDUuNTY4MTkgOC45MzE3OUM1LjM5MjQ1IDguNzU2MDYgNS4xMDc1MyA4Ljc1NjA2IDQuOTMxNzkgOC45MzE3OUM0Ljc1NjA1IDkuMTA3NTMgNC43NTYwNSA5LjM5MjQ1IDQuOTMxNzkgOS41NjgxOUw3LjE4MTc5IDExLjgxODJDNy4zNTc1MyAxMS45OTM5IDcuNjQyNDUgMTEuOTkzOSA3LjgxODE5IDExLjgxODJMMTAuMDY4MiA5LjU2ODE5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuMTgxNzkgOC44MTgxOUM0LjAwNjA1IDguNjQyNDUgNC4wMDYwNSA4LjM1NzUzIDQuMTgxNzkgOC4xODE3OUw3LjE4MTc5IDUuMTgxNzlDNy4yNjYxOCA1LjA5NzQgNy4zODA2NCA1LjA0OTk5IDcuNDk5OTkgNS4wNDk5OUM3LjYxOTMzIDUuMDQ5OTkgNy43MzM3OSA1LjA5NzQgNy44MTgxOSA1LjE4MTc5TDEwLjgxODIgOC4xODE3OUMxMC45OTM5IDguMzU3NTMgMTAuOTkzOSA4LjY0MjQ1IDEwLjgxODIgOC44MTgxOUMxMC42NDI0IDguOTkzOTIgMTAuMzU3NSA4Ljk5MzkyIDEwLjE4MTggOC44MTgxOUw3LjQ5OTk5IDYuMTM2MzhMNC44MTgxOSA4LjgxODE5QzQuNjQyNDUgOC45OTM5MiA0LjM1NzUzIDguOTkzOTIgNC4xODE3OSA4LjgxODE5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEyLjUgM0wyLjQ5OTk5IDMuMDAwMDJDMS42NzE1NyAzLjAwMDAyIDAuOTk5OTk5IDMuNjcxNTkgMC45OTk5OTkgNC41MDAwMlY5LjUwMDAyQzAuOTk5OTk5IDEwLjMyODQgMS42NzE1NyAxMSAyLjUgMTFINy41MDAwMkM3LjYzMjYzIDExIDcuNzU5ODEgMTEuMDUyNyA3Ljg1MzU4IDExLjE0NjVMOS45OTk5OSAxMy4yOTI5VjExLjVDOS45OTk5OSAxMS4yMjM5IDEwLjIyMzkgMTEgMTAuNSAxMUgxMi41QzEzLjMyODQgMTEgMTQgMTAuMzI4NCAxNCA5LjUwMDAyVjQuNUMxNCAzLjY3MTU3IDEzLjMyODQgMyAxMi41IDNaTTIuNDk5OTkgMi4wMDAwMkwxMi41IDJDMTMuODgwNyAyIDE1IDMuMTE5MjggMTUgNC41VjkuNTAwMDJDMTUgMTAuODgwNyAxMy44ODA3IDEyIDEyLjUgMTJIMTFWMTQuNUMxMSAxNC43MDIyIDEwLjg3ODIgMTQuODg0NSAxMC42OTEzIDE0Ljk2MTlDMTAuNTA0NSAxNS4wMzkzIDEwLjI4OTQgMTQuOTk2NSAxMC4xNDY0IDE0Ljg1MzVMNy4yOTI5MiAxMkgyLjVDMS4xMTkyOSAxMiAwIDEwLjg4MDcgMCA5LjUwMDAyVjQuNTAwMDJDMCAzLjExOTMxIDEuMTE5MjggMi4wMDAwMiAyLjQ5OTk5IDIuMDAwMDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxyZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTEuNDY2OSAzLjcyNjg0QzExLjc1NTggMy45MTU3NCAxMS44MzY5IDQuMzAzMDggMTEuNjQ4IDQuNTkxOThMNy4zOTc5OSAxMS4wOTJDNy4yOTc4MyAxMS4yNDUyIDcuMTM1NTYgMTEuMzQ2NyA2Ljk1NDAyIDExLjM2OTlDNi43NzI0NyAxMS4zOTMxIDYuNTg5ODkgMTEuMzM1NSA2LjQ1NDQ2IDExLjIxMjRMMy43MDQ0NiA4LjcxMjQxQzMuNDQ5MDUgOC40ODAyMiAzLjQzMDIzIDguMDg0OTQgMy42NjI0MiA3LjgyOTUzQzMuODk0NjEgNy41NzQxMiA0LjI4OTg5IDcuNTU1MjkgNC41NDUzIDcuNzg3NDlMNi43NTI5MiA5Ljc5NDQxTDEwLjYwMTggMy45MDc5MkMxMC43OTA3IDMuNjE5MDIgMTEuMTc4IDMuNTM3OTUgMTEuNDY2OSAzLjcyNjg0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sb2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzcwNDVDMy44NDIyMiAwLjg3NzA0NSAwLjg3NzA3NSAzLjg0MjE5IDAuODc3MDc1IDcuNDk5ODhDMC44NzcwNzUgMTEuMTU3NSAzLjg0MjIyIDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzExLjE1NzYgMTQuMTIyNyAxNC4xMjI3IDExLjE1NzUgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgMy44NDIxOSAxMS4xNTc2IDAuODc3MDQ1IDcuNDk5OTEgMC44NzcwNDVaTTEuODI3MDggNy40OTk4OEMxLjgyNzA4IDQuMzY2ODYgNC4zNjY4OSAxLjgyNzA0IDcuNDk5OTEgMS44MjcwNEMxMC42MzI5IDEuODI3MDQgMTMuMTcyNyA0LjM2Njg2IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDEwLjYzMjkgMTAuNjMyOSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0M0LjM2Njg5IDEzLjE3MjcgMS44MjcwOCAxMC42MzI5IDEuODI3MDggNy40OTk4OFpNMTAuMTU4OSA1LjUzNzc0QzEwLjMxNzggNS4zMTE5MSAxMC4yNjM2IDUuMDAwMDEgMTAuMDM3OCA0Ljg0MTA5QzkuODExOTQgNC42ODIxNyA5LjUwMDA0IDQuNzM2NDIgOS4zNDExMiA0Ljk2MjI1TDYuNTE5NzcgOC45NzE1NEw1LjM1NjgxIDcuNzg3MDZDNS4xNjMzNCA3LjU5MDAyIDQuODQ2NzcgNy41ODcxMSA0LjY0OTczIDcuNzgwNThDNC40NTI2OCA3Ljk3NDA0IDQuNDQ5NzggOC4yOTA2MSA0LjY0MzI1IDguNDg3NjVMNi4yMjY1OCAxMC4xMDAzQzYuMzMwNTQgMTAuMjA2MiA2LjQ3NjE3IDEwLjI2MDQgNi42MjQwNyAxMC4yNDgzQzYuNzcxOTcgMTAuMjM2MyA2LjkwNjg2IDEwLjE1OTEgNi45OTIyNiAxMC4wMzc3TDEwLjE1ODkgNS41Mzc3NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGllPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zIDNIMTJWMTJIM0wzIDNaTTIgM0MyIDIuNDQ3NzEgMi40NDc3MiAyIDMgMkgxMkMxMi41NTIzIDIgMTMgMi40NDc3MiAxMyAzVjEyQzEzIDEyLjU1MjMgMTIuNTUyMyAxMyAxMiAxM0gzQzIuNDQ3NzEgMTMgMiAxMi41NTIzIDIgMTJWM1pNMTAuMzQ5OCA1LjUxMTA1QzEwLjUwNiA1LjI4MzM3IDEwLjQ0ODEgNC45NzIxMiAxMC4yMjA0IDQuODE1ODdDOS45OTI3NSA0LjY1OTYxIDkuNjgxNSA0LjcxNzUxIDkuNTI1MjUgNC45NDUxOUw2LjY0MDQ4IDkuMTQ4NTdMNS4xOTczMyA3LjQwODg5QzUuMDIxMDIgNy4xOTYzNSA0LjcwNTggNy4xNjY5OSA0LjQ5MzI3IDcuMzQzMjlDNC4yODA3MyA3LjUxOTYgNC4yNTEzNyA3LjgzNDgyIDQuNDI3NjcgOC4wNDczNUw2LjI5MzQgMTAuMjk2NEM2LjM5MzQ4IDEwLjQxNzEgNi41NDQzNyAxMC40ODM4IDYuNzAwOTcgMTAuNDc2N0M2Ljg1NzU3IDEwLjQ2OTUgNy4wMDE3NyAxMC4zODk0IDcuMDkwNDcgMTAuMjYwMUwxMC4zNDk4IDUuNTExMDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxhZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4xMzUyMyA2LjE1ODAzQzMuMzI0MSA1Ljk1NjU3IDMuNjQwNTIgNS45NDYzNyAzLjg0MTk3IDYuMTM1MjNMNy41IDkuNTY0NjRMMTEuMTU4IDYuMTM1MjNDMTEuMzU5NSA1Ljk0NjM3IDExLjY3NTkgNS45NTY1NyAxMS44NjQ4IDYuMTU4MDNDMTIuMDUzNiA2LjM1OTQ5IDEyLjA0MzQgNi42NzU5MSAxMS44NDIgNi44NjQ3N0w3Ljg0MTk3IDEwLjYxNDhDNy42NDk2NCAxMC43OTUxIDcuMzUwMzYgMTAuNzk1MSA3LjE1ODAzIDEwLjYxNDhMMy4xNTgwMyA2Ljg2NDc3QzIuOTU2NTcgNi42NzU5MSAyLjk0NjM3IDYuMzU5NDkgMy4xMzUyMyA2LjE1ODAzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTguODQxODIgMy4xMzUxNEM5LjA0MzI3IDMuMzI0MDEgOS4wNTM0OCAzLjY0MDQyIDguODY0NjIgMy44NDE4OEw1LjQzNTIxIDcuNDk5OTFMOC44NjQ2MiAxMS4xNTc5QzkuMDUzNDggMTEuMzU5NCA5LjA0MzI3IDExLjY3NTggOC44NDE4MiAxMS44NjQ3QzguNjQwMzYgMTIuMDUzNSA4LjMyMzk0IDEyLjA0MzMgOC4xMzUwOCAxMS44NDE5TDQuMzg1MDggNy44NDE4OEM0LjIwNDc3IDcuNjQ5NTUgNC4yMDQ3NyA3LjM1MDI3IDQuMzg1MDggNy4xNTc5NEw4LjEzNTA4IDMuMTU3OTRDOC4zMjM5NCAyLjk1NjQ4IDguNjQwMzYgMi45NDYyOCA4Ljg0MTgyIDMuMTM1MTRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxjZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNi4xNTg0IDMuMTM1MDhDNi4zNTk4NSAyLjk0NjIxIDYuNjc2MjcgMi45NTY0MiA2Ljg2NTE0IDMuMTU3ODhMMTAuNjE1MSA3LjE1Nzg4QzEwLjc5NTQgNy4zNTAyIDEwLjc5NTQgNy42NDk0OSAxMC42MTUxIDcuODQxODJMNi44NjUxNCAxMS44NDE4QzYuNjc2MjcgMTIuMDQzMyA2LjM1OTg1IDEyLjA1MzUgNi4xNTg0IDExLjg2NDZDNS45NTY5NCAxMS42NzU3IDUuOTQ2NzMgMTEuMzU5MyA2LjEzNTYgMTEuMTU3OUw5LjU2NSA3LjQ5OTg1TDYuMTM1NiAzLjg0MTgyQzUuOTQ2NzMgMy42NDAzNiA1Ljk1Njk0IDMuMzIzOTQgNi4xNTg0IDMuMTM1MDhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxzZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4xMzUyMyA4Ljg0MTk3QzMuMzI0MSA5LjA0MzQzIDMuNjQwNTIgOS4wNTM2MyAzLjg0MTk3IDguODY0NzdMNy41IDUuNDM1MzZMMTEuMTU4IDguODY0NzdDMTEuMzU5NSA5LjA1MzYzIDExLjY3NTkgOS4wNDM0MyAxMS44NjQ4IDguODQxOTdDMTIuMDUzNiA4LjY0MDUxIDEyLjA0MzQgOC4zMjQwOSAxMS44NDIgOC4xMzUyM0w3Ljg0MTk3IDQuMzg1MjNDNy42NDk2NCA0LjIwNDkyIDcuMzUwMzYgNC4yMDQ5MiA3LjE1ODAzIDQuMzg1MjNMMy4xNTgwMyA4LjEzNTIzQzIuOTU2NTcgOC4zMjQwOSAyLjk0NjM3IDguNjQwNTEgMy4xMzUyMyA4Ljg0MTk3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuODc3MDc1IDcuNDk5OTFDMC44NzcwNzUgMy44NDIyMiAzLjg0MjIyIDAuODc3MDc1IDcuNDk5OTEgMC44NzcwNzVDMTEuMTU3NiAwLjg3NzA3NSAxNC4xMjI3IDMuODQyMjIgMTQuMTIyNyA3LjQ5OTkxQzE0LjEyMjcgMTEuMTU3NiAxMS4xNTc2IDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzMuODQyMjIgMTQuMTIyNyAwLjg3NzA3NSAxMS4xNTc2IDAuODc3MDc1IDcuNDk5OTFaTTcuNDk5OTEgMS44MjcwOEM0LjM2Njg5IDEuODI3MDggMS44MjcwOCA0LjM2Njg5IDEuODI3MDggNy40OTk5MUMxLjgyNzA4IDEwLjYzMjkgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0MxMC42MzI5IDEzLjE3MjcgMTMuMTcyNyAxMC42MzI5IDEzLjE3MjcgNy40OTk5MUMxMy4xNzI3IDQuMzY2ODkgMTAuNjMyOSAxLjgyNzA4IDcuNDk5OTEgMS44MjcwOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc3MDc1QzMuODQyMjIgMC44NzcwNzUgMC44NzcwNzUgMy44NDIyMiAwLjg3NzA3NSA3LjQ5OTkxQzAuODc3MDc1IDExLjE1NzYgMy44NDIyMiAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MxMS4xNTc2IDE0LjEyMjcgMTQuMTIyNyAxMS4xNTc2IDE0LjEyMjcgNy40OTk5MUMxNC4xMjI3IDMuODQyMjIgMTEuMTU3NiAwLjg3NzA3NSA3LjQ5OTkxIDAuODc3MDc1Wk0zLjg1NzY4IDMuMTUwNTdDNC44NDMxMSAyLjMyNDQ4IDYuMTEzNDIgMS44MjcwOCA3LjQ5OTkxIDEuODI3MDhDMTAuNjMyOSAxLjgyNzA4IDEzLjE3MjcgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTFDMTMuMTcyNyA4Ljg4NjM4IDEyLjY3NTMgMTAuMTU2NyAxMS44NDkyIDExLjE0MjFMMy44NTc2OCAzLjE1MDU3Wk0zLjE1MDU3IDMuODU3NjhDMi4zMjQ0OCA0Ljg0MzExIDEuODI3MDggNi4xMTM0MiAxLjgyNzA4IDcuNDk5OTFDMS44MjcwOCAxMC42MzI5IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDOC44ODYzOCAxMy4xNzI3IDEwLjE1NjcgMTIuNjc1MyAxMS4xNDIxIDExLjg0OTJMMy4xNTA1NyAzLjg1NzY4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUgMlYxSDEwVjJINVpNNC43NSAwQzQuMzM1NzkgMCA0IDAuMzM1Nzg2IDQgMC43NVYxSDMuNUMyLjY3MTU3IDEgMiAxLjY3MTU3IDIgMi41VjEyLjVDMiAxMy4zMjg0IDIuNjcxNTcgMTQgMy41IDE0SDExLjVDMTIuMzI4NCAxNCAxMyAxMy4zMjg0IDEzIDEyLjVWMi41QzEzIDEuNjcxNTcgMTIuMzI4NCAxIDExLjUgMUgxMVYwLjc1QzExIDAuMzM1Nzg2IDEwLjY2NDIgMCAxMC4yNSAwSDQuNzVaTTExIDJWMi4yNUMxMSAyLjY2NDIxIDEwLjY2NDIgMyAxMC4yNSAzSDQuNzVDNC4zMzU3OSAzIDQgMi42NjQyMSA0IDIuMjVWMkgzLjVDMy4yMjM4NiAyIDMgMi4yMjM4NiAzIDIuNVYxMi41QzMgMTIuNzc2MSAzLjIyMzg2IDEzIDMuNSAxM0gxMS41QzExLjc3NjEgMTMgMTIgMTIuNzc2MSAxMiAxMi41VjIuNUMxMiAyLjIyMzg2IDExLjc3NjEgMiAxMS41IDJIMTFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxwZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSAyVjFIMTBWMkg1Wk00Ljc1IDBDNC4zMzU3OSAwIDQgMC4zMzU3ODYgNCAwLjc1VjFIMy41QzIuNjcxNTcgMSAyIDEuNjcxNTcgMiAyLjVWMTIuNUMyIDEzLjMyODQgMi42NzE1NyAxNCAzLjUgMTRIN1YxM0gzLjVDMy4yMjM4NiAxMyAzIDEyLjc3NjEgMyAxMi41VjIuNUMzIDIuMjIzODYgMy4yMjM4NiAyIDMuNSAySDRWMi4yNUM0IDIuNjY0MjEgNC4zMzU3OSAzIDQuNzUgM0gxMC4yNUMxMC42NjQyIDMgMTEgMi42NjQyMSAxMSAyLjI1VjJIMTEuNUMxMS43NzYxIDIgMTIgMi4yMjM4NiAxMiAyLjVWN0gxM1YyLjVDMTMgMS42NzE1NyAxMi4zMjg0IDEgMTEuNSAxSDExVjAuNzVDMTEgMC4zMzU3ODYgMTAuNjY0MiAwIDEwLjI1IDBINC43NVpNOSA4LjVDOSA4Ljc3NjE0IDguNzc2MTQgOSA4LjUgOUM4LjIyMzg2IDkgOCA4Ljc3NjE0IDggOC41QzggOC4yMjM4NiA4LjIyMzg2IDggOC41IDhDOC43NzYxNCA4IDkgOC4yMjM4NiA5IDguNVpNMTAuNSA5QzEwLjc3NjEgOSAxMSA4Ljc3NjE0IDExIDguNUMxMSA4LjIyMzg2IDEwLjc3NjEgOCAxMC41IDhDMTAuMjIzOSA4IDEwIDguMjIzODYgMTAgOC41QzEwIDguNzc2MTQgMTAuMjIzOSA5IDEwLjUgOVpNMTMgOC41QzEzIDguNzc2MTQgMTIuNzc2MSA5IDEyLjUgOUMxMi4yMjM5IDkgMTIgOC43NzYxNCAxMiA4LjVDMTIgOC4yMjM4NiAxMi4yMjM5IDggMTIuNSA4QzEyLjc3NjEgOCAxMyA4LjIyMzg2IDEzIDguNVpNMTQuNSA5QzE0Ljc3NjEgOSAxNSA4Ljc3NjE0IDE1IDguNUMxNSA4LjIyMzg2IDE0Ljc3NjEgOCAxNC41IDhDMTQuMjIzOSA4IDE0IDguMjIzODYgMTQgOC41QzE0IDguNzc2MTQgMTQuMjIzOSA5IDE0LjUgOVpNMTUgMTAuNUMxNSAxMC43NzYxIDE0Ljc3NjEgMTEgMTQuNSAxMUMxNC4yMjM5IDExIDE0IDEwLjc3NjEgMTQgMTAuNUMxNCAxMC4yMjM5IDE0LjIyMzkgMTAgMTQuNSAxMEMxNC43NzYxIDEwIDE1IDEwLjIyMzkgMTUgMTAuNVpNMTQuNSAxM0MxNC43NzYxIDEzIDE1IDEyLjc3NjEgMTUgMTIuNUMxNSAxMi4yMjM5IDE0Ljc3NjEgMTIgMTQuNSAxMkMxNC4yMjM5IDEyIDE0IDEyLjIyMzkgMTQgMTIuNUMxNCAxMi43NzYxIDE0LjIyMzkgMTMgMTQuNSAxM1pNMTQuNSAxNUMxNC43NzYxIDE1IDE1IDE0Ljc3NjEgMTUgMTQuNUMxNSAxNC4yMjM5IDE0Ljc3NjEgMTQgMTQuNSAxNEMxNC4yMjM5IDE0IDE0IDE0LjIyMzkgMTQgMTQuNUMxNCAxNC43NzYxIDE0LjIyMzkgMTUgMTQuNSAxNVpNOC41IDExQzguNzc2MTQgMTEgOSAxMC43NzYxIDkgMTAuNUM5IDEwLjIyMzkgOC43NzYxNCAxMCA4LjUgMTBDOC4yMjM4NiAxMCA4IDEwLjIyMzkgOCAxMC41QzggMTAuNzc2MSA4LjIyMzg2IDExIDguNSAxMVpNOSAxMi41QzkgMTIuNzc2MSA4Ljc3NjE0IDEzIDguNSAxM0M4LjIyMzg2IDEzIDggMTIuNzc2MSA4IDEyLjVDOCAxMi4yMjM5IDguMjIzODYgMTIgOC41IDEyQzguNzc2MTQgMTIgOSAxMi4yMjM5IDkgMTIuNVpNOC41IDE1QzguNzc2MTQgMTUgOSAxNC43NzYxIDkgMTQuNUM5IDE0LjIyMzkgOC43NzYxNCAxNCA4LjUgMTRDOC4yMjM4NiAxNCA4IDE0LjIyMzkgOCAxNC41QzggMTQuNzc2MSA4LjIyMzg2IDE1IDguNSAxNVpNMTEgMTQuNUMxMSAxNC43NzYxIDEwLjc3NjEgMTUgMTAuNSAxNUMxMC4yMjM5IDE1IDEwIDE0Ljc3NjEgMTAgMTQuNUMxMCAxNC4yMjM5IDEwLjIyMzkgMTQgMTAuNSAxNEMxMC43NzYxIDE0IDExIDE0LjIyMzkgMTEgMTQuNVpNMTIuNSAxNUMxMi43NzYxIDE1IDEzIDE0Ljc3NjEgMTMgMTQuNUMxMyAxNC4yMjM5IDEyLjc3NjEgMTQgMTIuNSAxNEMxMi4yMjM5IDE0IDEyIDE0LjIyMzkgMTIgMTQuNUMxMiAxNC43NzYxIDEyLjIyMzkgMTUgMTIuNSAxNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LENlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUwMDA5IDAuODc3MDE0QzMuODQyNDEgMC44NzcwMTQgMC44NzcyNTggMy44NDIxNiAwLjg3NzI1OCA3LjQ5OTg0QzAuODc3MjU4IDExLjE1NzUgMy44NDI0IDE0LjEyMjcgNy41MDAwOSAxNC4xMjI3QzExLjE1NzggMTQuMTIyNyAxNC4xMjI5IDExLjE1NzUgMTQuMTIyOSA3LjQ5OTg0QzE0LjEyMjkgMy44NDIxNiAxMS4xNTc3IDAuODc3MDE0IDcuNTAwMDkgMC44NzcwMTRaTTEuODI3MjYgNy40OTk4NEMxLjgyNzI2IDQuMzY2ODMgNC4zNjcwOCAxLjgyNzAxIDcuNTAwMDkgMS44MjcwMUMxMC42MzMxIDEuODI3MDEgMTMuMTcyOSA0LjM2NjgzIDEzLjE3MjkgNy40OTk4NEMxMy4xNzI5IDEwLjYzMjggMTAuNjMzMSAxMy4xNzI3IDcuNTAwMDkgMTMuMTcyN0M0LjM2NzA4IDEzLjE3MjcgMS44MjcyNiAxMC42MzI4IDEuODI3MjYgNy40OTk4NFpNOCA0LjUwMDAxQzggNC4yMjM4NyA3Ljc3NjE0IDQuMDAwMDEgNy41IDQuMDAwMDFDNy4yMjM4NiA0LjAwMDAxIDcgNC4yMjM4NyA3IDQuNTAwMDFWNy41MDAwMUM3IDcuNjMyNjIgNy4wNTI2OCA3Ljc1OTggNy4xNDY0NSA3Ljg1MzU3TDkuMTQ2NDUgOS44NTM1N0M5LjM0MTcxIDEwLjA0ODggOS42NTgyOSAxMC4wNDg4IDkuODUzNTUgOS44NTM1N0MxMC4wNDg4IDkuNjU4MzEgMTAuMDQ4OCA5LjM0MTcyIDkuODUzNTUgOS4xNDY0Nkw4IDcuMjkyOTFWNC41MDAwMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGhlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05Ljk2NDI0IDIuNjg1NzFDMTAuMDY2OCAyLjQyOTMxIDkuOTQyMDkgMi4xMzgzMyA5LjY4NTcgMi4wMzU3N0M5LjQyOTMgMS45MzMyMiA5LjEzODMyIDIuMDU3OTIgOS4wMzU3NiAyLjMxNDMyTDUuMDM1NzYgMTIuMzE0M0M0LjkzMzIgMTIuNTcwNyA1LjA1NzkxIDEyLjg2MTcgNS4zMTQzIDEyLjk2NDJDNS41NzA3IDEzLjA2NjggNS44NjE2OCAxMi45NDIxIDUuOTY0MjQgMTIuNjg1N0w5Ljk2NDI0IDIuNjg1NzFaTTMuODUzNTUgNS4xNDY0NkM0LjA0ODgyIDUuMzQxNzIgNC4wNDg4MiA1LjY1ODMgMy44NTM1NSA1Ljg1MzU2TDIuMjA3MTEgNy41MDAwMUwzLjg1MzU1IDkuMTQ2NDZDNC4wNDg4MiA5LjM0MTcyIDQuMDQ4ODIgOS42NTgzIDMuODUzNTUgOS44NTM1NkMzLjY1ODI5IDEwLjA0ODggMy4zNDE3MSAxMC4wNDg4IDMuMTQ2NDUgOS44NTM1NkwxLjE0NjQ1IDcuODUzNTZDMC45NTExODQgNy42NTgzIDAuOTUxMTg0IDcuMzQxNzIgMS4xNDY0NSA3LjE0NjQ2TDMuMTQ2NDUgNS4xNDY0NkMzLjM0MTcxIDQuOTUxMiAzLjY1ODI5IDQuOTUxMiAzLjg1MzU1IDUuMTQ2NDZaTTExLjE0NjQgNS4xNDY0NkMxMS4zNDE3IDQuOTUxMiAxMS42NTgzIDQuOTUxMiAxMS44NTM2IDUuMTQ2NDZMMTMuODUzNiA3LjE0NjQ2QzE0LjA0ODggNy4zNDE3MiAxNC4wNDg4IDcuNjU4MyAxMy44NTM2IDcuODUzNTZMMTEuODUzNiA5Ljg1MzU2QzExLjY1ODMgMTAuMDQ4OCAxMS4zNDE3IDEwLjA0ODggMTEuMTQ2NCA5Ljg1MzU2QzEwLjk1MTIgOS42NTgzIDEwLjk1MTIgOS4zNDE3MiAxMS4xNDY0IDkuMTQ2NDZMMTIuNzkyOSA3LjUwMDAxTDExLjE0NjQgNS44NTM1NkMxMC45NTEyIDUuNjU4MyAxMC45NTEyIDUuMzQxNzIgMTEuMTQ2NCA1LjE0NjQ2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sdmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNzExNDQgMC43OTY5MDJDNy41Nzc0MSAwLjczNDM1NyA3LjQyMjU3IDAuNzM0MzU3IDcuMjg4NTUgMC43OTY5MDJMMS4yODg1NSAzLjU5NjlDMS4xMTI1MSAzLjY3OTA1IDAuOTk5OTkzIDMuODU1NzMgMC45OTk5OTMgNC4wNDk5OVYxMC45NUMwLjk5OTk5MyAxMS4xNDQzIDEuMTEyNTEgMTEuMzIwOSAxLjI4ODU1IDExLjQwMzFMNy4yODg1NSAxNC4yMDMxQzcuNDIyNTcgMTQuMjY1NiA3LjU3NzQxIDE0LjI2NTYgNy43MTE0NCAxNC4yMDMxTDEzLjcxMTQgMTEuNDAzMUMxMy44ODc1IDExLjMyMDkgMTQgMTEuMTQ0MyAxNCAxMC45NVY0LjA0OTk5QzE0IDMuODU1NzMgMTMuODg3NSAzLjY3OTA1IDEzLjcxMTQgMy41OTY5TDcuNzExNDQgMC43OTY5MDJaTTcuNDk5OTkgMy4xNTY3NEw1Ljk4MDM5IDIuNTEwOTFMNy40OTk5OSAxLjgwMTc2TDkuMDE5NTkgMi41MTA5MUw3LjQ5OTk5IDMuMTU2NzRaTTcuNjk1NTYgNC4xNjAxOEwxMC4yMzgyIDMuMDc5NThMMTIuMjcxOSA0LjAyODY1TDcuNDk5OTkgNi4wNTY3MUwyLjcyODA4IDQuMDI4NjVMNC43NjE4MSAzLjA3OTU4TDcuMzA0NDIgNC4xNjAxOEM3LjQyOTM5IDQuMjEzMyA3LjU3MDU5IDQuMjEzMyA3LjY5NTU2IDQuMTYwMThaTTcuOTk5OTkgNi45MzA3OEwxMyA0LjgwNTc4VjcuOTI5NjZMMTEuMDgyMSA4LjgxMTlDMTAuNzI3MyA4Ljk3NTA5IDEwLjUgOS4zMjk4OCAxMC41IDkuNzIwMzlWMTEuNzk4Mkw3Ljk5OTk5IDEyLjk2NDlWNi45MzA3OFpNMTEuNSAxMS4zMzE2TDEzIDEwLjYzMTZWOS4wMzAzOUwxMS41IDkuNzIwMzlWMTEuMzMxNlpNNi45OTk5OSA2LjkzMDc4VjEyLjk2NDlMNC41MDIzMSAxMS43OTkzVjkuNzIwMzZDNC41MDIzMSA5LjMyOTg1IDQuMjc0OTkgOC45NzUwNiAzLjkyMDIyIDguODExODdMMS45OTk5OSA3LjkyODU2VjQuODA1NzhMNi45OTk5OSA2LjkzMDc4Wk0xLjk5OTk5IDEwLjYzMTZMMy41MDIzMSAxMS4zMzI2TDMuNTAyMzEgOS43MjAzNkwxLjk5OTk5IDkuMDI5MjlWMTAuNjMxNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjAwMDEyIDEuNUM4LjAwMDEyIDEuMjIzODYgNy43NzYyNiAxIDcuNTAwMTIgMUM3LjIyMzk4IDEgNy4wMDAxMiAxLjIyMzg2IDcuMDAwMTIgMS41VjEzLjVDNy4wMDAxMiAxMy43NzYxIDcuMjIzOTggMTQgNy41MDAxMiAxNEM3Ljc3NjI2IDE0IDguMDAwMTIgMTMuNzc2MSA4LjAwMDEyIDEzLjVWMS41Wk0zLjMxODEyIDUuODE4QzMuNDkzODYgNS42NDIyNyAzLjQ5Mzg2IDUuMzU3MzQgMy4zMTgxMiA1LjE4MTYxQzMuMTQyMzkgNS4wMDU4NyAyLjg1NzQ2IDUuMDA1ODcgMi42ODE3MyA1LjE4MTYxTDAuNjgxNzI5IDcuMTgxNjFDMC41MDU5OTMgNy4zNTczNCAwLjUwNTk5MyA3LjY0MjI3IDAuNjgxNzI5IDcuODE4TDIuNjgxNzMgOS44MThDMi44NTc0NiA5Ljk5Mzc0IDMuMTQyMzkgOS45OTM3NCAzLjMxODEyIDkuODE4QzMuNDkzODYgOS42NDIyNyAzLjQ5Mzg2IDkuMzU3MzQgMy4zMTgxMiA5LjE4MTYxTDIuMDg2MzIgNy45NDk4SDUuNTAwMTdDNS43NDg3IDcuOTQ5OCA1Ljk1MDE3IDcuNzQ4MzMgNS45NTAxNyA3LjQ5OThDNS45NTAxNyA3LjI1MTI4IDUuNzQ4NyA3LjA0OTggNS41MDAxNyA3LjA0OThIMi4wODYzMkwzLjMxODEyIDUuODE4Wk0xMi4zMTgxIDUuMTgxNjFDMTIuMTQyNCA1LjAwNTg3IDExLjg1NzUgNS4wMDU4NyAxMS42ODE3IDUuMTgxNjFDMTEuNTA2IDUuMzU3MzQgMTEuNTA2IDUuNjQyMjcgMTEuNjgxNyA1LjgxOEwxMi45MTM1IDcuMDQ5OEg5LjUwMDE3QzkuMjUxNjQgNy4wNDk4IDkuMDUwMTcgNy4yNTEyOCA5LjA1MDE3IDcuNDk5OEM5LjA1MDE3IDcuNzQ4MzMgOS4yNTE2NCA3Ljk0OTggOS41MDAxNyA3Ljk0OThIMTIuOTEzNUwxMS42ODE3IDkuMTgxNjFDMTEuNTA2IDkuMzU3MzQgMTEuNTA2IDkuNjQyMjcgMTEuNjgxNyA5LjgxOEMxMS44NTc1IDkuOTkzNzQgMTIuMTQyNCA5Ljk5Mzc0IDEyLjMxODEgOS44MThMMTQuMzE4MSA3LjgxOEMxNC40OTM5IDcuNjQyMjcgMTQuNDkzOSA3LjM1NzM0IDE0LjMxODEgNy4xODE2MUwxMi4zMTgxIDUuMTgxNjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxtZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi4xNDk5OCAxNFYxSDAuODQ5OTc2VjE0SDIuMTQ5OThaTTYuMTQ5OTggMTRWMUg0Ljg0OTk4VjE0SDYuMTQ5OThaTTEwLjE1IDFWMTRIOC44NDk5OFYxSDEwLjE1Wk0xNC4xNSAxNFYxSDEyLjg1VjE0SDE0LjE1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sd2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuOTQ5NjkgNy40OTk4OUM5Ljk0OTY5IDguODUyODggOC44NTI4OCA5Ljk0OTY5IDcuNDk5ODkgOS45NDk2OUM2LjE0NjkxIDkuOTQ5NjkgNS4wNTAxIDguODUyODggNS4wNTAxIDcuNDk5ODlDNS4wNTAxIDYuMTQ2OTEgNi4xNDY5MSA1LjA1MDEgNy40OTk4OSA1LjA1MDFDOC44NTI4OCA1LjA1MDEgOS45NDk2OSA2LjE0NjkxIDkuOTQ5NjkgNy40OTk4OVpNMTAuODYzMiA4QzEwLjYyMTMgOS42NDA1NSA5LjIwNzY0IDEwLjg5OTcgNy40OTk4OSAxMC44OTk3QzUuNzkyMTQgMTAuODk5NyA0LjM3ODQ3IDkuNjQwNTUgNC4xMzY2MiA4SDAuNUMwLjIyMzg1OCA4IDAgNy43NzYxNCAwIDcuNUMwIDcuMjIzODYgMC4yMjM4NTggNyAwLjUgN0g0LjEzNjU5QzQuMzc4MzUgNS4zNTkzNSA1Ljc5MjA2IDQuMTAwMSA3LjQ5OTg5IDQuMTAwMUM5LjIwNzcyIDQuMTAwMSAxMC42MjE0IDUuMzU5MzUgMTAuODYzMiA3SDE0LjVDMTQuNzc2MSA3IDE1IDcuMjIzODYgMTUgNy41QzE1IDcuNzc2MTQgMTQuNzc2MSA4IDE0LjUgOEgxMC44NjMyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNjcxMjkgMy4xNDYzNEM0LjQ3NjAzIDMuMzQxNjEgNC40NzYwMyAzLjY1ODE5IDQuNjcxMjkgMy44NTM0NUw3LjE0NjE2IDYuMzI4MzNDNy4zNDE0MiA2LjUyMzU5IDcuNjU4MDEgNi41MjM1OSA3Ljg1MzI3IDYuMzI4MzNMMTAuMzI4MSAzLjg1MzQ1QzEwLjUyMzQgMy42NTgxOSAxMC41MjM0IDMuMzQxNjEgMTAuMzI4MSAzLjE0NjM0TDcuODUzMjcgMC42NzE0NzFDNy42NTgwMSAwLjQ3NjIwOSA3LjM0MTQyIDAuNDc2MjA5IDcuMTQ2MTYgMC42NzE0NzFMNC42NzEyOSAzLjE0NjM0Wk03LjQ5OTcxIDUuMjY3NjZMNS43MzE5NSAzLjQ5OTlMNy40OTk3MSAxLjczMjEzTDkuMjY3NDggMy40OTk5TDcuNDk5NzEgNS4yNjc2NlpNOC42NzEyOSA3LjE0NjM0QzguNDc2MDMgNy4zNDE2MSA4LjQ3NjAzIDcuNjU4MTkgOC42NzEyOSA3Ljg1MzQ1TDExLjE0NjIgMTAuMzI4M0MxMS4zNDE0IDEwLjUyMzYgMTEuNjU4IDEwLjUyMzYgMTEuODUzMyAxMC4zMjgzTDE0LjMyODEgNy44NTM0NUMxNC41MjM0IDcuNjU4MTkgMTQuNTIzNCA3LjM0MTYxIDE0LjMyODEgNy4xNDYzNEwxMS44NTMzIDQuNjcxNDdDMTEuNjU4IDQuNDc2MjEgMTEuMzQxNCA0LjQ3NjIxIDExLjE0NjIgNC42NzE0N0w4LjY3MTI5IDcuMTQ2MzRaTTExLjQ5OTcgOS4yNjc2Nkw5LjczMTk1IDcuNDk5OUwxMS40OTk3IDUuNzMyMTNMMTMuMjY3NSA3LjQ5OTlMMTEuNDk5NyA5LjI2NzY2Wk00LjY3MTI5IDExLjg1MzVDNC40NzYwMyAxMS42NTgyIDQuNDc2MDMgMTEuMzQxNiA0LjY3MTI5IDExLjE0NjNMNy4xNDYxNiA4LjY3MTQ3QzcuMzQxNDIgOC40NzYyMSA3LjY1ODAxIDguNDc2MjEgNy44NTMyNyA4LjY3MTQ3TDEwLjMyODEgMTEuMTQ2M0MxMC41MjM0IDExLjM0MTYgMTAuNTIzNCAxMS42NTgyIDEwLjMyODEgMTEuODUzNUw3Ljg1MzI3IDE0LjMyODNDNy42NTgwMSAxNC41MjM2IDcuMzQxNDIgMTQuNTIzNiA3LjE0NjE2IDE0LjMyODNMNC42NzEyOSAxMS44NTM1Wk01LjczMTk1IDExLjQ5OTlMNy40OTk3MSAxMy4yNjc3TDkuMjY3NDggMTEuNDk5OUw3LjQ5OTcxIDkuNzMyMTNMNS43MzE5NSAxMS40OTk5Wk0wLjY3MTI4OCA3LjE0NjQ5QzAuNDc2MDI2IDcuMzQxNzUgMC40NzYwMjYgNy42NTgzNCAwLjY3MTI4OCA3Ljg1MzZMMy4xNDYxNiAxMC4zMjg1QzMuMzQxNDIgMTAuNTIzNyAzLjY1ODAxIDEwLjUyMzcgMy44NTMyNyAxMC4zMjg1TDYuMzI4MTQgNy44NTM2QzYuNTIzNCA3LjY1ODM0IDYuNTIzNCA3LjM0MTc1IDYuMzI4MTQgNy4xNDY0OUwzLjg1MzI3IDQuNjcxNjJDMy42NTgwMSA0LjQ3NjM2IDMuMzQxNDIgNC40NzYzNiAzLjE0NjE2IDQuNjcxNjJMMC42NzEyODggNy4xNDY0OVpNMy40OTk3MiA5LjI2NzgxTDEuNzMxOTUgNy41MDAwNUwzLjQ5OTcyIDUuNzMyMjhMNS4yNjc0OCA3LjUwMDA1TDMuNDk5NzIgOS4yNjc4MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGJlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjg3OTM1IDFIMy45SDExLjFIMTEuMTIwN0MxMS41MjMxIDAuOTk5OTk0IDExLjg1NTMgMC45OTk5ODkgMTIuMTI1OSAxLjAyMjFDMTIuNDA3IDEuMDQ1MDYgMTIuNjY1MyAxLjA5NDM0IDEyLjkwOCAxLjIxNzk5QzEzLjI4NDMgMS40MDk3MyAxMy41OTAzIDEuNzE1NyAxMy43ODIgMi4wOTIwMkMxMy45MDU3IDIuMzM0NjkgMTMuOTU0OSAyLjU5MzA0IDEzLjk3NzkgMi44NzQwOUMxNCAzLjE0NDY4IDE0IDMuNDc2ODYgMTQgMy44NzkzNFYzLjlWMTEuMVYxMS4xMjA3QzE0IDExLjUyMzEgMTQgMTEuODU1MyAxMy45Nzc5IDEyLjEyNTlDMTMuOTU0OSAxMi40MDcgMTMuOTA1NyAxMi42NjUzIDEzLjc4MiAxMi45MDhDMTMuNTkwMyAxMy4yODQzIDEzLjI4NDMgMTMuNTkwMyAxMi45MDggMTMuNzgyQzEyLjY2NTMgMTMuOTA1NyAxMi40MDcgMTMuOTU0OSAxMi4xMjU5IDEzLjk3NzlDMTEuODU1MyAxNCAxMS41MjMxIDE0IDExLjEyMDcgMTRIMTEuMUgzLjlIMy44NzkzNEMzLjQ3Njg2IDE0IDMuMTQ0NjggMTQgMi44NzQwOSAxMy45Nzc5QzIuNTkzMDQgMTMuOTU0OSAyLjMzNDY5IDEzLjkwNTcgMi4wOTIwMiAxMy43ODJDMS43MTU3IDEzLjU5MDMgMS40MDk3MyAxMy4yODQzIDEuMjE3OTkgMTIuOTA4QzEuMDk0MzQgMTIuNjY1MyAxLjA0NTA2IDEyLjQwNyAxLjAyMjEgMTIuMTI1OUMwLjk5OTk4OSAxMS44NTUzIDAuOTk5OTk0IDExLjUyMzEgMSAxMS4xMjA3VjExLjEyMDdWMTEuMVYzLjlWMy44NzkzNVYzLjg3OTM0QzAuOTk5OTk0IDMuNDc2ODYgMC45OTk5ODkgMy4xNDQ2OCAxLjAyMjEgMi44NzQwOUMxLjA0NTA2IDIuNTkzMDQgMS4wOTQzNCAyLjMzNDY5IDEuMjE3OTkgMi4wOTIwMkMxLjQwOTczIDEuNzE1NyAxLjcxNTcgMS40MDk3MyAyLjA5MjAyIDEuMjE3OTlDMi4zMzQ2OSAxLjA5NDM0IDIuNTkzMDQgMS4wNDUwNiAyLjg3NDA5IDEuMDIyMUMzLjE0NDY5IDAuOTk5OTg5IDMuNDc2ODcgMC45OTk5OTQgMy44NzkzNSAxWk0yLjk1NTUyIDIuMDE4NzhDMi43MzYzMSAyLjAzNjY5IDIuNjI0MjEgMi4wNjkxNSAyLjU0NjAxIDIuMTA4OTlDMi4zNTc4NSAyLjIwNDg3IDIuMjA0ODcgMi4zNTc4NSAyLjEwODk5IDIuNTQ2MDFDMi4wNjkxNSAyLjYyNDIxIDIuMDM2NjkgMi43MzYzMSAyLjAxODc4IDIuOTU1NTJDMi4wMDAzOSAzLjE4MDU2IDIgMy40NzE3MSAyIDMuOVY3SDdWMkgzLjlDMy40NzE3MSAyIDMuMTgwNTYgMi4wMDAzOSAyLjk1NTUyIDIuMDE4NzhaTTcgOEgyVjExLjFDMiAxMS41MjgzIDIuMDAwMzkgMTEuODE5NCAyLjAxODc4IDEyLjA0NDVDMi4wMzY2OSAxMi4yNjM3IDIuMDY5MTUgMTIuMzc1OCAyLjEwODk5IDEyLjQ1NEMyLjIwNDg3IDEyLjY0MjIgMi4zNTc4NSAxMi43OTUxIDIuNTQ2MDEgMTIuODkxQzIuNjI0MjEgMTIuOTMwOSAyLjczNjMxIDEyLjk2MzMgMi45NTU1MiAxMi45ODEyQzMuMTgwNTYgMTIuOTk5NiAzLjQ3MTcxIDEzIDMuOSAxM0g3VjhaTTggOEgxM1YxMS4xQzEzIDExLjUyODMgMTIuOTk5NiAxMS44MTk0IDEyLjk4MTIgMTIuMDQ0NUMxMi45NjMzIDEyLjI2MzcgMTIuOTMwOSAxMi4zNzU4IDEyLjg5MSAxMi40NTRDMTIuNzk1MSAxMi42NDIyIDEyLjY0MjIgMTIuNzk1MSAxMi40NTQgMTIuODkxQzEyLjM3NTggMTIuOTMwOSAxMi4yNjM3IDEyLjk2MzMgMTIuMDQ0NSAxMi45ODEyQzExLjgxOTQgMTIuOTk5NiAxMS41MjgzIDEzIDExLjEgMTNIOFY4Wk0xMyA3SDhWMkgxMS4xQzExLjUyODMgMiAxMS44MTk0IDIuMDAwMzkgMTIuMDQ0NSAyLjAxODc4QzEyLjI2MzcgMi4wMzY2OSAxMi4zNzU4IDIuMDY5MTUgMTIuNDU0IDIuMTA4OTlDMTIuNjQyMiAyLjIwNDg3IDEyLjc5NTEgMi4zNTc4NSAxMi44OTEgMi41NDYwMUMxMi45MzA5IDIuNjI0MjEgMTIuOTYzMyAyLjczNjMxIDEyLjk4MTIgMi45NTU1MkMxMi45OTk2IDMuMTgwNTYgMTMgMy40NzE3MSAxMyAzLjlWN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHhlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03Ljg1MzY3IDEuNDg5NTZDNy42NTg0MSAxLjI5NDI5IDcuMzQxODIgMS4yOTQyOSA3LjE0NjU2IDEuNDg5NTZMMS40ODk3MSA3LjE0NjQxQzEuMjk0NDUgNy4zNDE2NyAxLjI5NDQ1IDcuNjU4MjUgMS40ODk3MSA3Ljg1MzUyTDcuMTQ2NTYgMTMuNTEwNEM3LjM0MTgyIDEzLjcwNTYgNy42NTg0MSAxMy43MDU2IDcuODUzNjcgMTMuNTEwNEwxMy41MTA1IDcuODUzNTJDMTMuNzA1OCA3LjY1ODI1IDEzLjcwNTggNy4zNDE2NyAxMy41MTA1IDcuMTQ2NDFMNy44NTM2NyAxLjQ4OTU2Wk03LjUgMi41NTAzM0wyLjU1MDM3IDcuNDk5OTZMNy41IDEyLjQ0OTZWMi41NTAzM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE9lPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjE0NjUgMS40ODk1OUM3LjM0MTc2IDEuMjk0MzIgNy42NTgzNSAxLjI5NDMyIDcuODUzNjEgMS40ODk1OUwxMy41MTA1IDcuMTQ2NDRDMTMuNzA1NyA3LjM0MTcgMTMuNzA1NyA3LjY1ODI5IDEzLjUxMDUgNy44NTM1NUw3Ljg1MzYxIDEzLjUxMDRDNy42NTgzNSAxMy43MDU3IDcuMzQxNzYgMTMuNzA1NyA3LjE0NjUgMTMuNTEwNEwxLjQ4OTY1IDcuODUzNTVDMS4yOTQzOSA3LjY1ODI5IDEuMjk0MzkgNy4zNDE3IDEuNDg5NjUgNy4xNDY0NEw3LjE0NjUgMS40ODk1OVpNNy41MDAwNSAyLjU1MDI1TDIuNTUwMzEgNy40OTk5OUw3LjUwMDA1IDEyLjQ0OTdMMTIuNDQ5OCA3LjQ5OTk5TDcuNTAwMDUgMi41NTAyNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LExlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03Ljg1MzYxIDEuNDg5NTlDNy42NTgzNSAxLjI5NDMyIDcuMzQxNzYgMS4yOTQzMiA3LjE0NjUgMS40ODk1OUwxLjQ4OTY1IDcuMTQ2NDRDMS4yOTQzOSA3LjM0MTcgMS4yOTQzOSA3LjY1ODI5IDEuNDg5NjUgNy44NTM1NUwzLjk2NDUgMTAuMzI4NEwxLjY0NjQ0IDEyLjY0NjRDMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTMuMTU4MyAxLjY0NjQ0IDEzLjM1MzZDMS44NDE3MSAxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAyLjM1MzU1IDEzLjM1MzZMNC42NzE2IDExLjAzNTVMNy4xNDY1IDEzLjUxMDRDNy4zNDE3NiAxMy43MDU3IDcuNjU4MzUgMTMuNzA1NyA3Ljg1MzYxIDEzLjUxMDRMMTMuNTEwNSA3Ljg1MzU1QzEzLjcwNTcgNy42NTgyOSAxMy43MDU3IDcuMzQxNyAxMy41MTA1IDcuMTQ2NDRMMTEuMDM1NiA0LjY3MTU0TDEzLjM1MzUgMi4zNTM1NUMxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAxLjg0MTcxIDEzLjM1MzUgMS42NDY0NUMxMy4xNTgzIDEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEyLjY0NjQgMS42NDY0NUwxMC4zMjg1IDMuOTY0NDNMNy44NTM2MSAxLjQ4OTU5Wk05LjYyMTM1IDQuNjcxNTRMNy41MDAwNSAyLjU1MDI1TDIuNTUwMzEgNy40OTk5OUw0LjY3MTYgOS42MjEyOUw5LjYyMTM1IDQuNjcxNTRaTTUuMzc4NzEgMTAuMzI4NEw3LjUwMDA1IDEyLjQ0OTdMMTIuNDQ5OCA3LjQ5OTk5TDEwLjMyODUgNS4zNzg2NUw1LjM3ODcxIDEwLjMyODRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxfZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTIuODAzNCA3LjE0NjQ0QzEyLjk5ODYgNi45NTExOCAxMy4zMTUyIDYuOTUxMTggMTMuNTEwNSA3LjE0NjQ0QzEzLjcwNTcgNy4zNDE3IDEzLjcwNTcgNy42NTgyOSAxMy41MTA1IDcuODUzNTVDMTMuMzE1MiA4LjA0ODgxIDEyLjk5ODYgOC4wNDg4MSAxMi44MDM0IDcuODUzNTVDMTIuNjA4MSA3LjY1ODI4IDEyLjYwODEgNy4zNDE3IDEyLjgwMzQgNy4xNDY0NFpNMTIuMDk2MiA4LjU2MDY1QzEyLjI5MTUgOC43NTU5MiAxMi4yOTE1IDkuMDcyNSAxMi4wOTYyIDkuMjY3NzZDMTEuOTAxIDkuNDYzMDIgMTEuNTg0NCA5LjQ2MzAyIDExLjM4OTEgOS4yNjc3NkMxMS4xOTM5IDkuMDcyNSAxMS4xOTM5IDguNzU1OTIgMTEuMzg5MSA4LjU2MDY1QzExLjU4NDQgOC4zNjUzOSAxMS45MDEgOC4zNjUzOSAxMi4wOTYyIDguNTYwNjVaTTEwLjY4MiA5Ljk3NDg3QzEwLjg3NzMgMTAuMTcwMSAxMC44NzczIDEwLjQ4NjcgMTAuNjgyIDEwLjY4MkMxMC40ODY4IDEwLjg3NzIgMTAuMTcwMiAxMC44NzcyIDkuOTc0OTMgMTAuNjgyQzkuNzc5NjcgMTAuNDg2NyA5Ljc3OTY3IDEwLjE3MDEgOS45NzQ5MyA5Ljk3NDg3QzEwLjE3MDIgOS43Nzk2IDEwLjQ4NjggOS43Nzk2IDEwLjY4MiA5Ljk3NDg3Wk05LjI2NzgyIDExLjM4OTFDOS40NjMwOCAxMS41ODQzIDkuNDYzMDggMTEuOTAwOSA5LjI2NzgyIDEyLjA5NjJDOS4wNzI1NiAxMi4yOTE1IDguNzU1OTggMTIuMjkxNSA4LjU2MDcxIDEyLjA5NjJDOC4zNjU0NSAxMS45MDA5IDguMzY1NDUgMTEuNTg0MyA4LjU2MDcyIDExLjM4OTFDOC43NTU5OCAxMS4xOTM4IDkuMDcyNTYgMTEuMTkzOCA5LjI2NzgyIDExLjM4OTFaTTcuMTQ2NSAxMy41MTA0QzYuOTUxMjQgMTMuMzE1MSA2Ljk1MTI0IDEyLjk5ODYgNy4xNDY1IDEyLjgwMzNDNy4xNzA5MSAxMi43Nzg5IDcuMTk3MjEgMTIuNzU3NSA3LjIyNDk0IDEyLjczOTJDNy40MTkwMSAxMi42MTExIDcuNjgyNzUgMTIuNjMyNCA3Ljg1MzYxIDEyLjgwMzNDOC4wNDg4NyAxMi45OTg2IDguMDQ4ODcgMTMuMzE1MSA3Ljg1MzYxIDEzLjUxMDRDNy42NTgzNSAxMy43MDU3IDcuMzQxNzYgMTMuNzA1NyA3LjE0NjUgMTMuNTEwNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuOTAzODYgOC41NjA2NUMyLjcwODYgOC43NTU5MiAyLjcwODYgOS4wNzI1IDIuOTAzODYgOS4yNjc3NiAzLjA5OTEyIDkuNDYzMDIgMy40MTU3MSA5LjQ2MzAyIDMuNjEwOTcgOS4yNjc3NiAzLjgwNjIzIDkuMDcyNSAzLjgwNjIzIDguNzU1OTIgMy42MTA5NyA4LjU2MDY1IDMuNDE1NzEgOC4zNjUzOSAzLjA5OTEyIDguMzY1MzkgMi45MDM4NiA4LjU2MDY1ek00LjMxODA3IDkuOTc0ODdDNC4xMjI4MSAxMC4xNzAxIDQuMTIyODEgMTAuNDg2NyA0LjMxODA3IDEwLjY4MiA0LjUxMzM0IDEwLjg3NzIgNC44Mjk5MiAxMC44NzcyIDUuMDI1MTggMTAuNjgyIDUuMjIwNDQgMTAuNDg2NyA1LjIyMDQ0IDEwLjE3MDEgNS4wMjUxOCA5Ljk3NDg3IDQuODI5OTIgOS43Nzk2IDQuNTEzMzQgOS43Nzk2IDQuMzE4MDcgOS45NzQ4N3pNNS43MzIyOSAxMS4zODkxQzUuNTM3MDMgMTEuNTg0MyA1LjUzNzAzIDExLjkwMDkgNS43MzIyOSAxMi4wOTYyIDUuOTI3NTUgMTIuMjkxNCA2LjI0NDEzIDEyLjI5MTUgNi40MzkzOSAxMi4wOTYyIDYuNjM0NjYgMTEuOTAwOSA2LjYzNDY2IDExLjU4NDMgNi40MzkzOSAxMS4zODkxIDYuMjQ0MTMgMTEuMTkzOCA1LjkyNzU1IDExLjE5MzggNS43MzIyOSAxMS4zODkxek0yLjE5Njc1IDcuODUzNTVDMi4zNjc2MSA3LjY4MjY5IDIuMzg4OTcgNy40MTg5NSAyLjI2MDgyIDcuMjI0ODggMi4wOTA0NiA2Ljk2Njg0IDEuNzEwNjMgNi45MjU0NiAxLjQ4OTY1IDcuMTQ2NDQgMS4yOTQzOSA3LjM0MTcgMS4yOTQzOSA3LjY1ODI5IDEuNDg5NjUgNy44NTM1NSAxLjY4NDkxIDguMDQ4ODEgMi4wMDE0OSA4LjA0ODgxIDIuMTk2NzUgNy44NTM1NXpNMy42MTA5NyA1LjczMjIzQzMuNDE1NzEgNS41MzY5NiAzLjA5OTEyIDUuNTM2OTYgMi45MDM4NiA1LjczMjIzIDIuNzA4NiA1LjkyNzQ5IDIuNzA4NiA2LjI0NDA3IDIuOTAzODYgNi40MzkzMyAzLjA5OTEyIDYuNjM0NiAzLjQxNTcxIDYuNjM0NiAzLjYxMDk3IDYuNDM5MzMgMy44MDYyMyA2LjI0NDA3IDMuODA2MjMgNS45Mjc0OSAzLjYxMDk3IDUuNzMyMjN6TTUuMDI1MTggNC4zMTgwMUM0LjgyOTkyIDQuMTIyNzUgNC41MTMzNCA0LjEyMjc1IDQuMzE4MDcgNC4zMTgwMSA0LjEyMjgxIDQuNTEzMjggNC4xMjI4MSA0LjgyOTg2IDQuMzE4MDcgNS4wMjUxMiA0LjUxMzM0IDUuMjIwMzggNC44Mjk5MiA1LjIyMDM4IDUuMDI1MTggNS4wMjUxMiA1LjIyMDQ0IDQuODI5ODYgNS4yMjA0NCA0LjUxMzI4IDUuMDI1MTggNC4zMTgwMXpNNi40MzkzOSAyLjkwMzhDNi4yNDQxMyAyLjcwODU0IDUuOTI3NTUgMi43MDg1NCA1LjczMjI5IDIuOTAzOCA1LjUzNzAzIDMuMDk5MDYgNS41MzcwMyAzLjQxNTY0IDUuNzMyMjkgMy42MTA5MSA1LjkyNzU1IDMuODA2MTcgNi4yNDQxMyAzLjgwNjE3IDYuNDM5MzkgMy42MTA5MSA2LjYzNDY2IDMuNDE1NjQgNi42MzQ2NiAzLjA5OTA2IDYuNDM5MzkgMi45MDM4ek03Ljg1MzYxIDEuNDg5NTlDNy42NTgzNSAxLjI5NDMyIDcuMzQxNzYgMS4yOTQzMiA3LjE0NjUgMS40ODk1OSA2Ljk1MTI0IDEuNjg0ODUgNi45NTEyNCAyLjAwMTQzIDcuMTQ2NSAyLjE5NjY5IDcuMzQxNzYgMi4zOTE5NiA3LjY1ODM1IDIuMzkxOTYgNy44NTM2MSAyLjE5NjY5IDguMDQ4ODcgMi4wMDE0MyA4LjA0ODg3IDEuNjg0ODUgNy44NTM2MSAxLjQ4OTU5ek05LjI2NzgyIDIuOTAzOEM5LjA3MjU2IDIuNzA4NTQgOC43NTU5OCAyLjcwODU0IDguNTYwNzEgMi45MDM4IDguMzY1NDUgMy4wOTkwNiA4LjM2NTQ1IDMuNDE1NjQgOC41NjA3MSAzLjYxMDkxIDguNzU1OTggMy44MDYxNyA5LjA3MjU2IDMuODA2MTcgOS4yNjc4MiAzLjYxMDkxIDkuNDYzMDggMy40MTU2NCA5LjQ2MzA4IDMuMDk5MDYgOS4yNjc4MiAyLjkwMzh6TTEwLjY4MiA0LjMxODAxQzEwLjQ4NjggNC4xMjI3NSAxMC4xNzAyIDQuMTIyNzUgOS45NzQ5MyA0LjMxODAxIDkuNzc5NjcgNC41MTMyOCA5Ljc3OTY3IDQuODI5ODYgOS45NzQ5MyA1LjAyNTEyIDEwLjE3MDIgNS4yMjAzOCAxMC40ODY4IDUuMjIwMzggMTAuNjgyIDUuMDI1MTIgMTAuODc3MyA0LjgyOTg2IDEwLjg3NzMgNC41MTMyOCAxMC42ODIgNC4zMTgwMXpNMTIuMDk2MiA1LjczMjIzQzExLjkwMSA1LjUzNjk2IDExLjU4NDQgNS41MzY5NiAxMS4zODkxIDUuNzMyMjMgMTEuMTkzOSA1LjkyNzQ5IDExLjE5MzkgNi4yNDQwNyAxMS4zODkxIDYuNDM5MzMgMTEuNTg0NCA2LjYzNDYgMTEuOTAxIDYuNjM0NiAxMi4wOTYyIDYuNDM5MzMgMTIuMjkxNSA2LjI0NDA3IDEyLjI5MTUgNS45Mjc0OSAxMi4wOTYyIDUuNzMyMjN6XCIsZmlsbDpufSkpfSxNZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiAxLjVDMiAxLjc3NjE0IDEuNzc2MTQgMiAxLjUgMkMxLjIyMzg2IDIgMSAxLjc3NjE0IDEgMS41QzEgMS4yMjM4NiAxLjIyMzg2IDEgMS41IDFDMS43NzYxNCAxIDIgMS4yMjM4NiAyIDEuNVpNNSAxM0gxMFYyTDUgMkw1IDEzWk00IDEzQzQgMTMuNTUyMyA0LjQ0NzcyIDE0IDUgMTRIMTBDMTAuNTUyMyAxNCAxMSAxMy41NTIzIDExIDEzVjJDMTEgMS40NDc3MiAxMC41NTIzIDEgMTAgMUg1QzQuNDQ3NzIgMSA0IDEuNDQ3NzEgNCAyVjEzWk0xMy41IDJDMTMuNzc2MSAyIDE0IDEuNzc2MTQgMTQgMS41QzE0IDEuMjIzODYgMTMuNzc2MSAxIDEzLjUgMUMxMy4yMjM5IDEgMTMgMS4yMjM4NiAxMyAxLjVDMTMgMS43NzYxNCAxMy4yMjM5IDIgMTMuNSAyWk0yIDMuNUMyIDMuNzc2MTQgMS43NzYxNCA0IDEuNSA0QzEuMjIzODYgNCAxIDMuNzc2MTQgMSAzLjVDMSAzLjIyMzg2IDEuMjIzODYgMyAxLjUgM0MxLjc3NjE0IDMgMiAzLjIyMzg2IDIgMy41Wk0xMy41IDRDMTMuNzc2MSA0IDE0IDMuNzc2MTQgMTQgMy41QzE0IDMuMjIzODYgMTMuNzc2MSAzIDEzLjUgM0MxMy4yMjM5IDMgMTMgMy4yMjM4NiAxMyAzLjVDMTMgMy43NzYxNCAxMy4yMjM5IDQgMTMuNSA0Wk0yIDUuNUMyIDUuNzc2MTQgMS43NzYxNCA2IDEuNSA2QzEuMjIzODYgNiAxIDUuNzc2MTQgMSA1LjVDMSA1LjIyMzg2IDEuMjIzODYgNSAxLjUgNUMxLjc3NjE0IDUgMiA1LjIyMzg2IDIgNS41Wk0xMy41IDZDMTMuNzc2MSA2IDE0IDUuNzc2MTQgMTQgNS41QzE0IDUuMjIzODYgMTMuNzc2MSA1IDEzLjUgNUMxMy4yMjM5IDUgMTMgNS4yMjM4NiAxMyA1LjVDMTMgNS43NzYxNCAxMy4yMjM5IDYgMTMuNSA2Wk0yIDcuNUMyIDcuNzc2MTQgMS43NzYxNCA4IDEuNSA4QzEuMjIzODYgOCAxIDcuNzc2MTQgMSA3LjVDMSA3LjIyMzg2IDEuMjIzODYgNyAxLjUgN0MxLjc3NjE0IDcgMiA3LjIyMzg2IDIgNy41Wk0xMy41IDhDMTMuNzc2MSA4IDE0IDcuNzc2MTQgMTQgNy41QzE0IDcuMjIzODYgMTMuNzc2MSA3IDEzLjUgN0MxMy4yMjM5IDcgMTMgNy4yMjM4NiAxMyA3LjVDMTMgNy43NzYxNCAxMy4yMjM5IDggMTMuNSA4Wk0yIDkuNUMyIDkuNzc2MTQgMS43NzYxNCAxMCAxLjUgMTBDMS4yMjM4NiAxMCAxIDkuNzc2MTQgMSA5LjVDMSA5LjIyMzg2IDEuMjIzODYgOSAxLjUgOUMxLjc3NjE0IDkgMiA5LjIyMzg2IDIgOS41Wk0xMy41IDEwQzEzLjc3NjEgMTAgMTQgOS43NzYxNCAxNCA5LjVDMTQgOS4yMjM4NiAxMy43NzYxIDkgMTMuNSA5QzEzLjIyMzkgOSAxMyA5LjIyMzg2IDEzIDkuNUMxMyA5Ljc3NjE0IDEzLjIyMzkgMTAgMTMuNSAxMFpNMiAxMS41QzIgMTEuNzc2MSAxLjc3NjE0IDEyIDEuNSAxMkMxLjIyMzg2IDEyIDEgMTEuNzc2MSAxIDExLjVDMSAxMS4yMjM5IDEuMjIzODYgMTEgMS41IDExQzEuNzc2MTQgMTEgMiAxMS4yMjM5IDIgMTEuNVpNMTMuNSAxMkMxMy43NzYxIDEyIDE0IDExLjc3NjEgMTQgMTEuNUMxNCAxMS4yMjM5IDEzLjc3NjEgMTEgMTMuNSAxMUMxMy4yMjM5IDExIDEzIDExLjIyMzkgMTMgMTEuNUMxMyAxMS43NzYxIDEzLjIyMzkgMTIgMTMuNSAxMlpNMiAxMy41QzIgMTMuNzc2MSAxLjc3NjE0IDE0IDEuNSAxNEMxLjIyMzg2IDE0IDEgMTMuNzc2MSAxIDEzLjVDMSAxMy4yMjM5IDEuMjIzODYgMTMgMS41IDEzQzEuNzc2MTQgMTMgMiAxMy4yMjM5IDIgMTMuNVpNMTMuNSAxNEMxMy43NzYxIDE0IDE0IDEzLjc3NjEgMTQgMTMuNUMxNCAxMy4yMjM5IDEzLjc3NjEgMTMgMTMuNSAxM0MxMy4yMjM5IDEzIDEzIDEzLjIyMzkgMTMgMTMuNUMxMyAxMy43NzYxIDEzLjIyMzkgMTQgMTMuNSAxNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGplPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi4wNjk3IDEuNzY3NDZDMTIuNDgwNyAxLjIxOTQ3IDExLjQ2MDUgMC40NTQzMTEgMTEuMDQ5NSAxLjAwMjNDMTAuNjM4NSAxLjU1MDI4IDExLjY1ODggMi4zMTU0NCAxMi4wNjk3IDEuNzY3NDZaTTguMzkyNjMgMS4wNzgxMUM3LjE1NTg1IDAuOTUwNjAyIDUuNzgyMyAxLjE2MzQ4IDQuNTg0MzMgMS43MDkzN0MzLjM4NTUyIDIuMjU1NjMgMi4zMjczNSAzLjE1MzA5IDEuNzg4NDQgNC40MTgzMkMxLjM3NTc0IDUuMzg3MjQgMS4wMTcxNSA2LjI4MTEzIDEuMDAwODggNy40NDM1NEMwLjk4NDcyNCA4LjU5ODQ0IDEuMzA1MjIgOS45Njg5OCAyLjEzMTc0IDExLjkyOEMyLjYxMTQyIDEzLjA2NDkgNC4wMzk2MyAxMy41NDQ2IDUuMTM4OTUgMTMuODA3OUM2LjQwODM2IDE0LjExMTkgNy44MDg1NyAxNC4xOTE0IDguNjY0NCAxNC4wNzQyQzkuMzY1MTUgMTMuOTc4MiAxMC4xNDQ4IDEzLjgyODQgMTAuNzk4NyAxMy4yOTdDMTEuODk3NyAxMi40MDM5IDEyLjkwMDkgMTEuMzk1NSAxMy40OTk0IDEwLjMzOTNDMTQuMTA0IDkuMjcyMjEgMTQuMzI1NiA4LjA5MjA3IDEzLjcyMTYgNi45NTMyNEMxMy41NjI4IDYuNjUzNzMgMTMuMzE2IDYuNTc3MzQgMTMuMDQxMiA2LjQ5MjNDMTIuOTM3NCA2LjQ2MDE2IDEyLjgyOTUgNi40MjY3OCAxMi43MjA5IDYuMzc5NjZDMTEuNjIxMSA1LjkwMjM0IDEwLjk2NDYgNS4zNDk2MyAxMC45MTM1IDUuMDI4NzZDMTAuODY1NiA0LjcyODA4IDEwLjkyMjEgNC41MTQ2MyAxMC45ODExIDQuMjkxODFDMTEuMDEyOSA0LjE3MTk5IDExLjA0NTMgNC4wNDk0NyAxMS4wNjI2IDMuOTA5MjJDMTEuMDgzOCAzLjczNzM3IDExLjA4MTQgMy4zMzMxOSAxMC42OTk2IDMuMTI3NjFDMTAuNDA0OCAyLjk2ODg4IDEwLjIxNjQgMi42NTg0MyAxMC4wNDA3IDIuMzY5MDRDOS45OTc0MiAyLjI5Nzc1IDkuOTU0OTIgMi4yMjc3MyA5LjkxMTggMi4xNjE1OEM5LjYyNjM0IDEuNzIzNjcgOS4yMDc2OSAxLjE2MjEzIDguMzkyNjMgMS4wNzgxMVpNNC45OTg5OSAyLjYxOTM1QzMuOTY0ODMgMy4wOTA1OCAzLjEyNTU0IDMuODMwOTcgMi43MDg0NiA0LjgxMDE4QzIuMjk4MDggNS43NzM2OCAyLjAxNDA2IDYuNTA4NzMgMi4wMDA3OSA3LjQ1NzUzQzEuOTg3NDEgOC40MTM4NSAyLjI1MDQzIDkuNjM2OCAzLjA1MzEgMTEuNTM5M0MzLjM5MTgxIDEyLjM0MjEgNC42MjE2NyAxMi42NTU3IDUuMzcxODYgMTIuODM1NEM2LjU0OTMgMTMuMTE3NCA3LjgyMiAxMy4xODAyIDguNTI4NjggMTMuMDgzNEM5LjIxMjcxIDEyLjk4OTcgOS43NDU2OCAxMi44NjQyIDEwLjE2ODEgMTIuNTIwOUMxMS4yMjkgMTEuNjU4NyAxMi4xMjEgMTAuNzQzNSAxMi42MjkzIDkuODQ2MzVDMTIuOTM0OSA5LjMwNzA5IDEzLjUxNDEgNy43MDI4IDEyLjYyOTIgNy4zODczQzEwLjc1MzkgNi43MTg3NSAxMC4yNjIgNi4wNjY2OSA5Ljk5MDExIDUuNDEyNjhDOS44MDkxNSA0Ljk3NzQ0IDkuODI4NjggNC41MjI4MiA5Ljk1NzQxIDQuMDc4ODVMOS45NTc0MSA0LjA3ODg0QzkuOTc2NjIgNC4wMTI2IDkuOTk1MzggMy45NDc5MSAxMC4wMzM0IDMuODg4ODJDOS44MTg1NyAzLjczNjc2IDkuNjUxNSAzLjU1MTk1IDkuNTE0NjQgMy4zNzE1QzkuNDI4NzYgMy4yNTgyOCA5LjM0NjkgMy4xMjA5OSA5LjI2MTk3IDIuOTc4NTZDOS4wMTg2NiAyLjU3MDUyIDguNzUwMTggMi4xMjAyNyA4LjI5MDA4IDIuMDcyODNDNy4yMjg4OSAxLjk2MzQzIDYuMDMzOTggMi4xNDc3MiA0Ljk5ODk5IDIuNjE5MzVaTTEzLjIwODEgMy43NzQ3MUMxMy40NDEgMy4yMjY3MSAxMi40NTQ3IDIuNjM2MDYgMTIuMDgyMiAzLjEwMTYzQzExLjU4MTcgMy43MjczMiAxMi45MDI5IDQuNDkyODEgMTMuMjA4MSAzLjc3NDcxWk0xNC4zNjcyIDIuMjYwMzFDMTQuOTY2OCAyLjI3NDkzIDE1LjE1NTEgMS4xMTYwMyAxNC41NzE4IDAuOTQ5MzcxQzEzLjgwNzYgMC43MzEwMjYgMTMuNTkxOCAyLjI0MTM5IDE0LjM2NzIgMi4yNjAzMVpNMTQuMjg1NyA1LjA5MDk4QzE0Ljg2NDQgNS4xMDAwNCAxNS4wNDYyIDQuMzgyMjIgMTQuNDgzMiA0LjI3ODk5QzEzLjc0NTUgNC4xNDM3NSAxMy41MzczIDUuMDc5MjcgMTQuMjg1NyA1LjA5MDk4Wk02LjkwNzUgNC4yODY3MkM2LjQ2ODk4IDQuNjY3NTQgNi4wNTIyIDQuMTUxODUgNS45Nzk4MyAzLjczNjVDNS44Njg0OCAzLjA5NzQ0IDYuMzM2OTYgMi41Njg1NiA2Ljk0ODIzIDIuOTExNTZDNy40MzM0NCAzLjE4MzgyIDcuMjY2NzggMy45NzQ3MSA2LjkwNzUgNC4yODY3MlpNNC45NDQ1NSA1Ljg4MTg0QzUuNDA4ODUgNS40MTc1NCA0LjU5NTY3IDQuNTcwMTMgNC4xMTQyNSA1LjA1MTU0QzMuODMzMzggNS4zMzI0MiA0LjAwOTM2IDUuNjUzNzYgNC4yMzc0NCA1Ljg4MTg0QzQuNDMyNzEgNi4wNzcxIDQuNzQ5MjkgNi4wNzcxIDQuOTQ0NTUgNS44ODE4NFpNNi45NzcxNiA2LjcxOTg0QzcuMzExODEgNy4zODkxNCA4LjQ4ODA0IDYuNzkxNTkgNy45OTQxMyA2LjE0Nzg4QzcuODY1MTkgNS45Nzk4MyA3LjY4NjU3IDUuOTQ5NCA3LjYyMTQ1IDUuOTQyMDdDNy4yMTIxNyA1Ljg5NjAxIDYuNzYzNDkgNi4yOTI1IDYuOTc3MTYgNi43MTk4NFpNNi45ODc5OCA4LjcyNDYxQzcuMTQwNjYgOS4xMTg4IDcuNTExMjIgOS4zMTg3IDcuOTE5MTUgOS4xNjMzQzguMjc0MzQgOS4wMjc5OSA4LjMzMTg2IDguMzk2ODkgOC4xNzE3NSA4LjA3NDI3QzguMDIzMzEgNy43NzUxNCA3LjYzOTU2IDcuNjc3OTMgNy4zMzc0NyA3Ljc5NDE3QzYuOTg1MTIgNy45Mjk3NiA2Ljg1NjcyIDguMzg3MDggNi45ODU3NiA4LjcxODg5TDYuOTg3OTggOC43MjQ2MVpNMTAuMzg4NSA4Ljg0MDgxQzEwLjc1NzUgOC42NTY2IDExLjQ2MTcgOC44Mjc3MSAxMS40NjE3IDkuMzExOTlDMTEuNDYxNyA5LjcxMjg2IDEwLjk1ODcgMTAuMjE2NSAxMC41NjM0IDEwLjI4MjZDMTAuMTgxMyAxMC4zNDY1IDkuNzA1MTUgOS45NzU4MSA5Ljc2NjQ4IDkuNTc3MThDOS44MTQ0NSA5LjI2NTM5IDEwLjEyMTcgOC45NzQwMSAxMC4zODg1IDguODQwODFaTTcuNTY3MDQgMTAuODQzMkM3LjMzNDYxIDEwLjc1MDIgNy4xNDM1MyAxMC44NjAxIDcuMTE0MzcgMTAuODc2OUw3LjExMjc5IDEwLjg3NzhDNi45MDc4MiAxMC45OTQ5IDYuNzEzODMgMTEuMjQzOSA2LjY3NDcgMTEuNDg0MkM2LjU5MDE4IDEyLjAwMzQgNy4xMzE5OSAxMi4xMjM5IDcuNTI2NjEgMTIuMDk4N0M4LjIwNzQgMTIuMDU1MyA4LjA2NTQ3IDExLjA0MjYgNy41NjcwNCAxMC44NDMyWk00Ljg4MDUgMTAuODkzMkM1LjA2NzQgMTAuNzcyMyA1LjE1NjU4IDEwLjUzNjMgNS4wODI5MyAxMC4zMTUzQzQuOTMwNDYgOS43OTY4NyA0LjMyNDYgOS43MTI1MiAzLjk2NTYxIDEwLjEyOTdDMy43OTMzNiAxMC4zMjk5IDMuODA3NDkgMTAuNjI3NCAzLjk5MjE0IDEwLjgxMDVMMy45OTQ5NSAxMC44MTRMMy45OTc5IDEwLjgxNzZDNC4yMjAyNSAxMS4wOTQyIDQuNjM2MjQgMTEuMTg1NyA0Ljg4MDUgMTAuODkzMlpNMy4wNDY5NSA3LjgxMzE4QzMuMzMxNDcgOC4wOTc3IDMuNjAwNzcgOC4xNTA2NyAzLjk4NDQzIDguMDU4NTlDNC42MDgyNiA3LjkwODg3IDQuMTM4MTQgNi4yNDI5OSAzLjA0NyA2Ljg3Mjk2QzIuNzA5MzkgNy4wNjc4OCAyLjg2NzE2IDcuNjMzMzkgMy4wNDY5NSA3LjgxMzE4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgOS41MDAwNkMxIDEwLjMyODUgMS42NzE1NyAxMS4wMDAxIDIuNSAxMS4wMDAxSDRMNCAxMC4wMDAxSDIuNUMyLjIyMzg2IDEwLjAwMDEgMiA5Ljc3NjIgMiA5LjUwMDA2TDIgMi41MDAwNkMyIDIuMjIzOTIgMi4yMjM4NiAyLjAwMDA2IDIuNSAyLjAwMDA2TDkuNSAyLjAwMDA2QzkuNzc2MTQgMi4wMDAwNiAxMCAyLjIyMzkyIDEwIDIuNTAwMDZWNC4wMDAwMkg1LjVDNC42NzE1OCA0LjAwMDAyIDQgNC42NzE1OSA0IDUuNTAwMDJWMTIuNUM0IDEzLjMyODQgNC42NzE1OCAxNCA1LjUgMTRIMTIuNUMxMy4zMjg0IDE0IDE0IDEzLjMyODQgMTQgMTIuNVY1LjUwMDAyQzE0IDQuNjcxNTkgMTMuMzI4NCA0LjAwMDAyIDEyLjUgNC4wMDAwMkgxMVYyLjUwMDA2QzExIDEuNjcxNjMgMTAuMzI4NCAxLjAwMDA2IDkuNSAxLjAwMDA2SDIuNUMxLjY3MTU3IDEuMDAwMDYgMSAxLjY3MTYzIDEgMi41MDAwNlY5LjUwMDA2Wk01IDUuNTAwMDJDNSA1LjIyMzg4IDUuMjIzODYgNS4wMDAwMiA1LjUgNS4wMDAwMkgxMi41QzEyLjc3NjEgNS4wMDAwMiAxMyA1LjIyMzg4IDEzIDUuNTAwMDJWMTIuNUMxMyAxMi43NzYyIDEyLjc3NjEgMTMgMTIuNSAxM0g1LjVDNS4yMjM4NiAxMyA1IDEyLjc3NjIgNSAxMi41VjUuNTAwMDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxTZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOS44NzczNyAxMkg5LjlIMTEuNUMxMS43NzYxIDEyIDEyIDExLjc3NjEgMTIgMTEuNUMxMiAxMS4yMjM5IDExLjc3NjEgMTEgMTEuNSAxMUg5LjlDOC43NzE2NCAxMSA3Ljk1NTQ1IDEwLjk5OTYgNy4zMTM1MiAxMC45NDcyQzYuNjc3NDQgMTAuODk1MiA2LjI1NjYyIDEwLjc5NDYgNS45MTEwMyAxMC42MTg1QzUuMjUyNDcgMTAuMjgzIDQuNzE3MDMgOS43NDc1MyA0LjM4MTQ4IDkuMDg4OTdDNC4yMDUzOSA4Ljc0MzM4IDQuMTA0ODEgOC4zMjI1NiA0LjA1Mjg0IDcuNjg2NDhDNC4wMDAzOSA3LjA0NDU1IDQgNi4yMjgzNiA0IDUuMVYzLjVDNCAzLjIyMzg2IDMuNzc2MTQgMyAzLjUgM0MzLjIyMzg2IDMgMyAzLjIyMzg2IDMgMy41VjUuMVY1LjEyMjYzQzMgNi4yMjM1OSAzIDcuMDgwNTIgMy4wNTYxNiA3Ljc2NzkxQzMuMTEzMTggOC40NjU4NCAzLjIzMDU4IDkuMDMyOSAzLjQ5MDQ3IDkuNTQyOTZDMy45MjE5IDEwLjM4OTcgNC42MTAzMSAxMS4wNzgxIDUuNDU3MDQgMTEuNTA5NUM1Ljk2NzEgMTEuNzY5NCA2LjUzNDE2IDExLjg4NjggNy4yMzIwOSAxMS45NDM4QzcuOTE5NDggMTIgOC43NzY0MSAxMiA5Ljg3NzM3IDEyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuMTIyNjMgMTJINS4xSDMuNUMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVDMyAxMS4yMjM5IDMuMjIzODYgMTEgMy41IDExSDUuMUM2LjIyODM2IDExIDcuMDQ0NTUgMTAuOTk5NiA3LjY4NjQ4IDEwLjk0NzJDOC4zMjI1NiAxMC44OTUyIDguNzQzMzggMTAuNzk0NiA5LjA4ODk3IDEwLjYxODVDOS43NDc1MyAxMC4yODMgMTAuMjgzIDkuNzQ3NTMgMTAuNjE4NSA5LjA4ODk3QzEwLjc5NDYgOC43NDMzOCAxMC44OTUyIDguMzIyNTYgMTAuOTQ3MiA3LjY4NjQ4QzEwLjk5OTYgNy4wNDQ1NSAxMSA2LjIyODM2IDExIDUuMVYzLjVDMTEgMy4yMjM4NiAxMS4yMjM5IDMgMTEuNSAzQzExLjc3NjEgMyAxMiAzLjIyMzg2IDEyIDMuNVY1LjFWNS4xMjI2M0MxMiA2LjIyMzU5IDEyIDcuMDgwNTIgMTEuOTQzOCA3Ljc2NzkxQzExLjg4NjggOC40NjU4NCAxMS43Njk0IDkuMDMyOSAxMS41MDk1IDkuNTQyOTZDMTEuMDc4MSAxMC4zODk3IDEwLjM4OTcgMTEuMDc4MSA5LjU0Mjk2IDExLjUwOTVDOS4wMzI5IDExLjc2OTQgOC40NjU4NCAxMS44ODY4IDcuNzY3OTEgMTEuOTQzOEM3LjA4MDUyIDEyIDYuMjIzNTkgMTIgNS4xMjI2MyAxMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEhlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05Ljg3NzM3IDNIOS45SDExLjVDMTEuNzc2MSAzIDEyIDMuMjIzODYgMTIgMy41QzEyIDMuNzc2MTQgMTEuNzc2MSA0IDExLjUgNEg5LjlDOC43NzE2NCA0IDcuOTU1NDUgNC4wMDAzOSA3LjMxMzUyIDQuMDUyODRDNi42Nzc0NCA0LjEwNDgxIDYuMjU2NjIgNC4yMDUzOSA1LjkxMTAzIDQuMzgxNDhDNS4yNTI0NyA0LjcxNzAzIDQuNzE3MDMgNS4yNTI0NyA0LjM4MTQ4IDUuOTExMDNDNC4yMDUzOSA2LjI1NjYyIDQuMTA0ODEgNi42Nzc0NCA0LjA1Mjg0IDcuMzEzNTJDNC4wMDAzOSA3Ljk1NTQ1IDQgOC43NzE2NCA0IDkuOVYxMS41QzQgMTEuNzc2MSAzLjc3NjE0IDEyIDMuNSAxMkMzLjIyMzg2IDEyIDMgMTEuNzc2MSAzIDExLjVWOS45VjkuODc3MzdDMyA4Ljc3NjQxIDMgNy45MTk0OCAzLjA1NjE2IDcuMjMyMDlDMy4xMTMxOCA2LjUzNDE2IDMuMjMwNTggNS45NjcxIDMuNDkwNDcgNS40NTcwNEMzLjkyMTkgNC42MTAzMSA0LjYxMDMxIDMuOTIxOSA1LjQ1NzA0IDMuNDkwNDdDNS45NjcxIDMuMjMwNTggNi41MzQxNiAzLjExMzE4IDcuMjMyMDkgMy4wNTYxNkM3LjkxOTQ4IDMgOC43NzY0MSAzIDkuODc3MzcgM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGtlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjEyMjYzIDNINS4xSDMuNUMzLjIyMzg2IDMgMyAzLjIyMzg2IDMgMy41QzMgMy43NzYxNCAzLjIyMzg2IDQgMy41IDRINS4xQzYuMjI4MzYgNCA3LjA0NDU1IDQuMDAwMzkgNy42ODY0OCA0LjA1Mjg0QzguMzIyNTYgNC4xMDQ4MSA4Ljc0MzM4IDQuMjA1MzkgOS4wODg5NyA0LjM4MTQ4QzkuNzQ3NTMgNC43MTcwMyAxMC4yODMgNS4yNTI0NyAxMC42MTg1IDUuOTExMDNDMTAuNzk0NiA2LjI1NjYyIDEwLjg5NTIgNi42Nzc0NCAxMC45NDcyIDcuMzEzNTJDMTAuOTk5NiA3Ljk1NTQ1IDExIDguNzcxNjQgMTEgOS45VjExLjVDMTEgMTEuNzc2MSAxMS4yMjM5IDEyIDExLjUgMTJDMTEuNzc2MSAxMiAxMiAxMS43NzYxIDEyIDExLjVWOS45VjkuODc3MzdDMTIgOC43NzY0MSAxMiA3LjkxOTQ4IDExLjk0MzggNy4yMzIwOUMxMS44ODY4IDYuNTM0MTYgMTEuNzY5NCA1Ljk2NzEgMTEuNTA5NSA1LjQ1NzA0QzExLjA3ODEgNC42MTAzMSAxMC4zODk3IDMuOTIxOSA5LjU0Mjk2IDMuNDkwNDdDOS4wMzI5IDMuMjMwNTggOC40NjU4NCAzLjExMzE4IDcuNzY3OTEgMy4wNTYxNkM3LjA4MDUyIDMgNi4yMjM1OSAzIDUuMTIyNjMgM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFZlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMC4xIDNDMTAuNTI4MyAzIDEwLjgxOTQgMy4wMDAzOSAxMS4wNDQ1IDMuMDE4NzhDMTEuMjYzNyAzLjAzNjY5IDExLjM3NTggMy4wNjkxNSAxMS40NTQgMy4xMDg5OUMxMS42NDIyIDMuMjA0ODcgMTEuNzk1MSAzLjM1Nzg1IDExLjg5MSAzLjU0NjAxQzExLjkzMDkgMy42MjQyMSAxMS45NjMzIDMuNzM2MzEgMTEuOTgxMiAzLjk1NTUyQzExLjk5OTYgNC4xODA1NiAxMiA0LjQ3MTcxIDEyIDQuOVY1LjVDMTIgNS43NzYxNCAxMi4yMjM5IDYgMTIuNSA2QzEyLjc3NjEgNiAxMyA1Ljc3NjE0IDEzIDUuNVY0Ljg3OTM1QzEzIDQuNDc2ODcgMTMgNC4xNDQ2OSAxMi45Nzc5IDMuODc0MDlDMTIuOTU0OSAzLjU5MzA0IDEyLjkwNTcgMy4zMzQ2OSAxMi43ODIgMy4wOTIwMkMxMi41OTAzIDIuNzE1NyAxMi4yODQzIDIuNDA5NzMgMTEuOTA4IDIuMjE3OTlDMTEuNjY1MyAyLjA5NDM0IDExLjQwNyAyLjA0NTA2IDExLjEyNTkgMi4wMjIxQzEwLjg1NTMgMS45OTk5OSAxMC41MjMxIDEuOTk5OTkgMTAuMTIwNyAySDEwLjEyMDZIMTAuMUg5LjVDOS4yMjM4NiAyIDkgMi4yMjM4NiA5IDIuNUM5IDIuNzc2MTQgOS4yMjM4NiAzIDkuNSAzSDEwLjFaTTUuNSAySDQuODc5MzVINC44NzkzNEM0LjQ3Njg2IDEuOTk5OTkgNC4xNDQ2OCAxLjk5OTk5IDMuODc0MDkgMi4wMjIxQzMuNTkzMDQgMi4wNDUwNiAzLjMzNDY5IDIuMDk0MzQgMy4wOTIwMiAyLjIxNzk5QzIuNzE1NyAyLjQwOTczIDIuNDA5NzMgMi43MTU3IDIuMjE3OTkgMy4wOTIwMkMyLjA5NDM0IDMuMzM0NjkgMi4wNDUwNiAzLjU5MzA0IDIuMDIyMSAzLjg3NDA5QzEuOTk5OTkgNC4xNDQ2OCAxLjk5OTk5IDQuNDc2ODYgMiA0Ljg3OTM0VjQuODc5MzVWNS41QzIgNS43NzYxNCAyLjIyMzg2IDYgMi41IDZDMi43NzYxNCA2IDMgNS43NzYxNCAzIDUuNVY0LjlDMyA0LjQ3MTcxIDMuMDAwMzkgNC4xODA1NiAzLjAxODc4IDMuOTU1NTJDMy4wMzY2OSAzLjczNjMxIDMuMDY5MTUgMy42MjQyMSAzLjEwODk5IDMuNTQ2MDFDMy4yMDQ4NyAzLjM1Nzg1IDMuMzU3ODUgMy4yMDQ4NyAzLjU0NjAxIDMuMTA4OTlDMy42MjQyMSAzLjA2OTE1IDMuNzM2MzEgMy4wMzY2OSAzLjk1NTUyIDMuMDE4NzhDNC4xODA1NiAzLjAwMDM5IDQuNDcxNzEgMyA0LjkgM0g1LjVDNS43NzYxNCAzIDYgMi43NzYxNCA2IDIuNUM2IDIuMjIzODYgNS43NzYxNCAyIDUuNSAyWk0xMyA5LjVDMTMgOS4yMjM4NiAxMi43NzYxIDkgMTIuNSA5QzEyLjIyMzkgOSAxMiA5LjIyMzg2IDEyIDkuNVYxMC4xQzEyIDEwLjUyODMgMTEuOTk5NiAxMC44MTk0IDExLjk4MTIgMTEuMDQ0NUMxMS45NjMzIDExLjI2MzcgMTEuOTMwOSAxMS4zNzU4IDExLjg5MSAxMS40NTRDMTEuNzk1MSAxMS42NDIyIDExLjY0MjIgMTEuNzk1MSAxMS40NTQgMTEuODkxQzExLjM3NTggMTEuOTMwOSAxMS4yNjM3IDExLjk2MzMgMTEuMDQ0NSAxMS45ODEyQzEwLjgxOTQgMTEuOTk5NiAxMC41MjgzIDEyIDEwLjEgMTJIOS41QzkuMjIzODYgMTIgOSAxMi4yMjM5IDkgMTIuNUM5IDEyLjc3NjEgOS4yMjM4NiAxMyA5LjUgMTNIMTAuMTIwNkMxMC41MjMxIDEzIDEwLjg1NTMgMTMgMTEuMTI1OSAxMi45Nzc5QzExLjQwNyAxMi45NTQ5IDExLjY2NTMgMTIuOTA1NyAxMS45MDggMTIuNzgyQzEyLjI4NDMgMTIuNTkwMyAxMi41OTAzIDEyLjI4NDMgMTIuNzgyIDExLjkwOEMxMi45MDU3IDExLjY2NTMgMTIuOTU0OSAxMS40MDcgMTIuOTc3OSAxMS4xMjU5QzEzIDEwLjg1NTMgMTMgMTAuNTIzMSAxMyAxMC4xMjA2VjkuNVpNMi41IDlDMi43NzYxNCA5IDMgOS4yMjM4NiAzIDkuNVYxMC4xQzMgMTAuNTI4MyAzLjAwMDM5IDEwLjgxOTQgMy4wMTg3OCAxMS4wNDQ1QzMuMDM2NjkgMTEuMjYzNyAzLjA2OTE1IDExLjM3NTggMy4xMDg5OSAxMS40NTRDMy4yMDQ4NyAxMS42NDIyIDMuMzU3ODUgMTEuNzk1MSAzLjU0NjAxIDExLjg5MUMzLjYyNDIxIDExLjkzMDkgMy43MzYzMSAxMS45NjMzIDMuOTU1NTIgMTEuOTgxMkM0LjE4MDU2IDExLjk5OTYgNC40NzE3MSAxMiA0LjkgMTJINS41QzUuNzc2MTQgMTIgNiAxMi4yMjM5IDYgMTIuNUM2IDEyLjc3NjEgNS43NzYxNCAxMyA1LjUgMTNINC44NzkzNUM0LjQ3Njg3IDEzIDQuMTQ0NjkgMTMgMy44NzQwOSAxMi45Nzc5QzMuNTkzMDQgMTIuOTU0OSAzLjMzNDY5IDEyLjkwNTcgMy4wOTIwMiAxMi43ODJDMi43MTU3IDEyLjU5MDMgMi40MDk3MyAxMi4yODQzIDIuMjE3OTkgMTEuOTA4QzIuMDk0MzQgMTEuNjY1MyAyLjA0NTA2IDExLjQwNyAyLjAyMjEgMTEuMTI1OUMxLjk5OTk5IDEwLjg1NTMgMS45OTk5OSAxMC41MjMxIDIgMTAuMTIwN1YxMC4xMjA2VjEwLjFWOS41QzIgOS4yMjM4NiAyLjIyMzg2IDkgMi41IDlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxSZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMTUgNy40OTk5OEMxMy4xNSA0LjY2NDU4IDEwLjk0MDIgMS44NDk5OCA3LjUwMDAyIDEuODQ5OThDNC43MjE3IDEuODQ5OTggMy4zNDg1MSAzLjkwNjM2IDIuNzYzMzYgNC45OTk5N0g0LjVDNC43NzYxNCA0Ljk5OTk3IDUgNS4yMjM4MyA1IDUuNDk5OTdDNSA1Ljc3NjExIDQuNzc2MTQgNS45OTk5NyA0LjUgNS45OTk5N0gxLjVDMS4yMjM4NiA1Ljk5OTk3IDEgNS43NzYxMSAxIDUuNDk5OTdWMi40OTk5N0MxIDIuMjIzODMgMS4yMjM4NiAxLjk5OTk3IDEuNSAxLjk5OTk3QzEuNzc2MTQgMS45OTk5NyAyIDIuMjIzODMgMiAyLjQ5OTk3VjQuMzEzMThDMi43MDQ1MyAzLjA3MTI2IDQuMzM0MDYgMC44NDk5NzYgNy41MDAwMiAwLjg0OTk3NkMxMS41NjI4IDAuODQ5OTc2IDE0LjE1IDQuMTg1MzcgMTQuMTUgNy40OTk5OEMxNC4xNSAxMC44MTQ2IDExLjU2MjggMTQuMTUgNy41MDAwMiAxNC4xNUM1LjU1NjE4IDE0LjE1IDMuOTM3NzggMTMuMzgwOCAyLjc4NTQ4IDEyLjIwODRDMi4xNjg1MiAxMS41ODA2IDEuNjg2NjggMTAuODM5IDEuMzU4MTYgMTAuMDQwN0MxLjI1MzA2IDkuNzg1MzYgMS4zNzQ4OCA5LjQ5MzE1IDEuNjMwMjQgOS4zODgwNkMxLjg4NTYgOS4yODI5NiAyLjE3NzgxIDkuNDA0NzggMi4yODI5IDkuNjYwMTRDMi41NjM3NCAxMC4zNDI1IDIuOTc0OTUgMTAuOTc0NSAzLjQ5ODcgMTEuNTA3NEM0LjQ3MDUyIDEyLjQ5NjMgNS44MzQ5NiAxMy4xNSA3LjUwMDAyIDEzLjE1QzEwLjk0MDIgMTMuMTUgMTMuMTUgMTAuMzM1NCAxMy4xNSA3LjQ5OTk4Wk03IDEwVjUuMDAwMDFIOFYxMEg3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjE1IDcuNDk5OThDMTMuMTUgNC42NjQ1OCAxMC45NDAyIDEuODQ5OTggNy41MDAwMiAxLjg0OTk4QzQuNzIxNjcgMS44NDk5OCAzLjM0ODQ5IDMuOTA2NCAyLjc2MzM1IDVINC41QzQuNzc2MTQgNSA1IDUuMjIzODYgNSA1LjVDNSA1Ljc3NjE0IDQuNzc2MTQgNiA0LjUgNkgxLjVDMS4yMjM4NiA2IDEgNS43NzYxNCAxIDUuNVYyLjVDMSAyLjIyMzg2IDEuMjIzODYgMiAxLjUgMkMxLjc3NjE0IDIgMiAyLjIyMzg2IDIgMi41VjQuMzEzMThDMi43MDQ1MyAzLjA3MTI2IDQuMzM0MDYgMC44NDk5NzYgNy41MDAwMiAwLjg0OTk3NkMxMS41NjI4IDAuODQ5OTc2IDE0LjE1IDQuMTg1MzcgMTQuMTUgNy40OTk5OEMxNC4xNSAxMC44MTQ2IDExLjU2MjggMTQuMTUgNy41MDAwMiAxNC4xNUM1LjU1NjE4IDE0LjE1IDMuOTM3NzggMTMuMzgwOCAyLjc4NTQ4IDEyLjIwODRDMi4xNjg1MiAxMS41ODA2IDEuNjg2NjggMTAuODM5IDEuMzU4MTYgMTAuMDQwN0MxLjI1MzA2IDkuNzg1MzYgMS4zNzQ4OCA5LjQ5MzE1IDEuNjMwMjQgOS4zODgwNkMxLjg4NTYgOS4yODI5NiAyLjE3NzgxIDkuNDA0NzggMi4yODI5IDkuNjYwMTRDMi41NjM3NCAxMC4zNDI1IDIuOTc0OTUgMTAuOTc0NSAzLjQ5ODcgMTEuNTA3NEM0LjQ3MDUyIDEyLjQ5NjMgNS44MzQ5NiAxMy4xNSA3LjUwMDAyIDEzLjE1QzEwLjk0MDIgMTMuMTUgMTMuMTUgMTAuMzM1NCAxMy4xNSA3LjQ5OTk4Wk03LjUgNC4wMDAwMUM3Ljc3NjE0IDQuMDAwMDEgOCA0LjIyMzg3IDggNC41MDAwMVY3LjI5MjkxTDkuODUzNTUgOS4xNDY0NkMxMC4wNDg4IDkuMzQxNzIgMTAuMDQ4OCA5LjY1ODMxIDkuODUzNTUgOS44NTM1N0M5LjY1ODI5IDEwLjA0ODggOS4zNDE3MSAxMC4wNDg4IDkuMTQ2NDUgOS44NTM1N0w3LjE0NjQ1IDcuODUzNTdDNy4wNTI2OCA3Ljc1OTggNyA3LjYzMjYyIDcgNy41MDAwMVY0LjUwMDAxQzcgNC4yMjM4NyA3LjIyMzg2IDQuMDAwMDEgNy41IDQuMDAwMDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxaZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy41IDguMDA2ODRlLTA3QzMuNzc2MTQgNy44ODYxNGUtMDcgNCAwLjIyMzg1OSA0IDAuNTAwMDAxTDQgMy4wMDAwNkwxMS41IDMuMDAwMDZDMTEuNzc2MSAzLjAwMDA2IDEyIDMuMjIzOTIgMTIgMy41MDAwNkwxMiAxMS4wMDAxTDE0LjUgMTFDMTQuNzc2MSAxMSAxNSAxMS4yMjM4IDE1IDExLjVDMTUgMTEuNzc2MSAxNC43NzYyIDEyIDE0LjUgMTJMMTIgMTIuMDAwMUwxMiAxNC41QzEyIDE0Ljc3NjEgMTEuNzc2MSAxNSAxMS41IDE1QzExLjIyMzkgMTUgMTEgMTQuNzc2MSAxMSAxNC41TDExIDEyLjAwMDFMMy41IDEyLjAwMDFDMy4yMjM4NiAxMi4wMDAxIDMgMTEuNzc2MiAzIDExLjUwMDFMMyA0LjAwMDA1TDAuNDk5OTg5IDRDMC4yMjM4NDcgNCAtNi4xMDU0MWUtMDYgMy43NzYxMyAtNS4wMjU3NmUtMDcgMy40OTk5OUM1LjEzMDA2ZS0wNiAzLjIyMzg1IDAuMjIzODY3IDMgMC41MDAwMSAzTDMgMy4wMDAwNUwzIDAuNTAwMDAxQzMgMC4yMjM4NTkgMy4yMjM4NiA4LjEyNzU1ZS0wNyAzLjUgOC4wMDY4NGUtMDdaTTQgNC4wMDAwNkw0IDExLjAwMDFMMTEgMTEuMDAwMUwxMSA0LjAwMDA2TDQgNC4wMDAwNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi44NTM2IDIuODUzNTVDMTMuMDQ4OCAyLjY1ODI5IDEzLjA0ODggMi4zNDE3MSAxMi44NTM2IDIuMTQ2NDVDMTIuNjU4MyAxLjk1MTE4IDEyLjM0MTcgMS45NTExOCAxMi4xNDY0IDIuMTQ2NDVMNy41IDYuNzkyODlMMi44NTM1NSAyLjE0NjQ1QzIuNjU4MjkgMS45NTExOCAyLjM0MTcxIDEuOTUxMTggMi4xNDY0NSAyLjE0NjQ1QzEuOTUxMTggMi4zNDE3MSAxLjk1MTE4IDIuNjU4MjkgMi4xNDY0NSAyLjg1MzU1TDYuNzkyODkgNy41TDIuMTQ2NDUgMTIuMTQ2NEMxLjk1MTE4IDEyLjM0MTcgMS45NTExOCAxMi42NTgzIDIuMTQ2NDUgMTIuODUzNkMyLjM0MTcxIDEzLjA0ODggMi42NTgyOSAxMy4wNDg4IDIuODUzNTUgMTIuODUzNkw3LjUgOC4yMDcxMUwxMi4xNDY0IDEyLjg1MzZDMTIuMzQxNyAxMy4wNDg4IDEyLjY1ODMgMTMuMDQ4OCAxMi44NTM2IDEyLjg1MzZDMTMuMDQ4OCAxMi42NTgzIDEzLjA0ODggMTIuMzQxNyAxMi44NTM2IDEyLjE0NjRMOC4yMDcxMSA3LjVMMTIuODUzNiAyLjg1MzU1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTExLjc4MTYgNC4wMzE1N0MxMi4wMDYyIDMuODA3MDIgMTIuMDA2MiAzLjQ0Mjk1IDExLjc4MTYgMy4yMTg0QzExLjU1NzEgMi45OTM4NSAxMS4xOTMgMi45OTM4NSAxMC45Njg1IDMuMjE4NEw3LjUwMDA1IDYuNjg2ODJMNC4wMzE2NCAzLjIxODRDMy44MDcwOCAyLjk5Mzg1IDMuNDQzMDEgMi45OTM4NSAzLjIxODQ2IDMuMjE4NEMyLjk5MzkxIDMuNDQyOTUgMi45OTM5MSAzLjgwNzAyIDMuMjE4NDYgNC4wMzE1N0w2LjY4Njg4IDcuNDk5OTlMMy4yMTg0NiAxMC45Njg0QzIuOTkzOTEgMTEuMTkzIDIuOTkzOTEgMTEuNTU3IDMuMjE4NDYgMTEuNzgxNkMzLjQ0MzAxIDEyLjAwNjEgMy44MDcwOCAxMi4wMDYxIDQuMDMxNjQgMTEuNzgxNkw3LjUwMDA1IDguMzEzMTZMMTAuOTY4NSAxMS43ODE2QzExLjE5MyAxMi4wMDYxIDExLjU1NzEgMTIuMDA2MSAxMS43ODE2IDExLjc4MTZDMTIuMDA2MiAxMS41NTcgMTIuMDA2MiAxMS4xOTMgMTEuNzgxNiAxMC45Njg0TDguMzEzMjIgNy40OTk5OUwxMS43ODE2IDQuMDMxNTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxEZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwNzUgNy40OTk4OEMwLjg3NzA3NSAzLjg0MjE5IDMuODQyMjIgMC44NzcwNDUgNy40OTk5MSAwLjg3NzA0NUMxMS4xNTc2IDAuODc3MDQ1IDE0LjEyMjcgMy44NDIxOSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAxMS4xNTc1IDExLjE1NzYgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMy44NDIyMiAxNC4xMjI3IDAuODc3MDc1IDExLjE1NzUgMC44NzcwNzUgNy40OTk4OFpNNy40OTk5MSAxLjgyNzA0QzQuMzY2ODkgMS44MjcwNCAxLjgyNzA4IDQuMzY2ODYgMS44MjcwOCA3LjQ5OTg4QzEuODI3MDggMTAuNjMyOSA0LjM2Njg5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzEwLjYzMjkgMTMuMTcyNyAxMy4xNzI3IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNC4zNjY4NiAxMC42MzI5IDEuODI3MDQgNy40OTk5MSAxLjgyNzA0Wk05Ljg1MzU4IDUuMTQ2NDRDMTAuMDQ4OCA1LjM0MTcgMTAuMDQ4OCA1LjY1ODI5IDkuODUzNTggNS44NTM1NUw4LjIwNzEzIDcuNDk5OTlMOS44NTM1OCA5LjE0NjQ0QzEwLjA0ODggOS4zNDE3IDEwLjA0ODggOS42NTgyOSA5Ljg1MzU4IDkuODUzNTVDOS42NTgzMiAxMC4wNDg4IDkuMzQxNzMgMTAuMDQ4OCA5LjE0NjQ3IDkuODUzNTVMNy41MDAwMiA4LjIwNzFMNS44NTM1OCA5Ljg1MzU1QzUuNjU4MzIgMTAuMDQ4OCA1LjM0MTczIDEwLjA0ODggNS4xNDY0NyA5Ljg1MzU1QzQuOTUxMjEgOS42NTgyOSA0Ljk1MTIxIDkuMzQxNyA1LjE0NjQ3IDkuMTQ2NDRMNi43OTI5MiA3LjQ5OTk5TDUuMTQ2NDcgNS44NTM1NUM0Ljk1MTIxIDUuNjU4MjkgNC45NTEyMSA1LjM0MTcgNS4xNDY0NyA1LjE0NjQ0QzUuMzQxNzMgNC45NTExOCA1LjY1ODMyIDQuOTUxMTggNS44NTM1OCA1LjE0NjQ0TDcuNTAwMDIgNi43OTI4OUw5LjE0NjQ3IDUuMTQ2NDRDOS4zNDE3MyA0Ljk1MTE4IDkuNjU4MzIgNC45NTExOCA5Ljg1MzU4IDUuMTQ2NDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxCZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwNzUgNy41MDIwN0MwLjg3NzA3NSAzLjg0MzE5IDMuODQzMTkgMC44NzcwNzUgNy41MDIwOCAwLjg3NzA3NUMxMS4xNjA5IDAuODc3MDc1IDE0LjEyNzEgMy44NDMxOSAxNC4xMjcxIDcuNTAyMDdDMTQuMTI3MSAxMS4xNjA5IDExLjE2MDkgMTQuMTI3MSA3LjUwMjA4IDE0LjEyNzFDMy44NDMxOSAxNC4xMjcxIDAuODc3MDc1IDExLjE2MDkgMC44NzcwNzUgNy41MDIwN1pNMS44NDg5OCA3LjAwMDAzQzIuMDg4NiA0LjI2NjM5IDQuMjY2MzkgMi4wODg2IDcuMDAwMDMgMS44NDg5OFY0LjUwMDAzQzcuMDAwMDMgNC43NzYxNyA3LjIyMzg4IDUuMDAwMDMgNy41MDAwMyA1LjAwMDAzQzcuNzc2MTcgNS4wMDAwMyA4LjAwMDAzIDQuNzc2MTcgOC4wMDAwMyA0LjUwMDAzVjEuODQ4NjJDMTAuNzM1NiAyLjA4NjQzIDEyLjkxNTQgNC4yNjUwMiAxMy4xNTUyIDcuMDAwMDNIMTAuNUMxMC4yMjM5IDcuMDAwMDMgMTAgNy4yMjM4OCAxMCA3LjUwMDAzQzEwIDcuNzc2MTcgMTAuMjIzOSA4LjAwMDAzIDEwLjUgOC4wMDAwM0gxMy4xNTU1QzEyLjkxNzYgMTAuNzM2OSAxMC43MzY5IDEyLjkxNzYgOC4wMDAwMyAxMy4xNTU1VjEwLjVDOC4wMDAwMyAxMC4yMjM5IDcuNzc2MTcgMTAgNy41MDAwMyAxMEM3LjIyMzg4IDEwIDcuMDAwMDMgMTAuMjIzOSA3LjAwMDAzIDEwLjVWMTMuMTU1MkM0LjI2NTAyIDEyLjkxNTQgMi4wODY0MyAxMC43MzU2IDEuODQ4NjIgOC4wMDAwM0g0LjUwMDAzQzQuNzc2MTcgOC4wMDAwMyA1LjAwMDAzIDcuNzc2MTcgNS4wMDAwMyA3LjUwMDAzQzUuMDAwMDMgNy4yMjM4OCA0Ljc3NjE3IDcuMDAwMDMgNC41MDAwMyA3LjAwMDAzSDEuODQ4OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSwkZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDBDNy43NzYxNCAwIDggMC4yMjM4NTggOCAwLjVWMS44MDY4N0MxMC42OTIyIDIuMDkzNSAxMi44MTY3IDQuMjgwMTIgMTMuMDA2OCA3SDE0LjVDMTQuNzc2MSA3IDE1IDcuMjIzODYgMTUgNy41QzE1IDcuNzc2MTQgMTQuNzc2MSA4IDE0LjUgOEgxMi45ODg4QzEyLjcwOTQgMTAuNjI0NCAxMC42MjQ0IDEyLjcwOTQgOCAxMi45ODg4VjE0LjVDOCAxNC43NzYxIDcuNzc2MTQgMTUgNy41IDE1QzcuMjIzODYgMTUgNyAxNC43NzYxIDcgMTQuNVYxMy4wMDY4QzQuMjgwMTIgMTIuODE2NyAyLjA5MzUgMTAuNjkyMiAxLjgwNjg3IDhIMC41QzAuMjIzODU4IDggMCA3Ljc3NjE0IDAgNy41QzAgNy4yMjM4NiAwLjIyMzg1OCA3IDAuNSA3SDEuNzg4ODZDMS45ODM3NiA0LjIxMTY2IDQuMjExNjYgMS45ODM3NiA3IDEuNzg4ODZWMC41QzcgMC4yMjM4NTggNy4yMjM4NiAwIDcuNSAwWk04IDEyLjAzMjJWOS41QzggOS4yMjM4NiA3Ljc3NjE0IDkgNy41IDlDNy4yMjM4NiA5IDcgOS4yMjM4NiA3IDkuNVYxMi4wNTRDNC44MDUxNyAxMS44Njg5IDMuMDQyMjIgMTAuMTY2OCAyLjc2MzQ0IDhINS41QzUuNzc2MTQgOCA2IDcuNzc2MTQgNiA3LjVDNiA3LjIyMzg2IDUuNzc2MTQgNyA1LjUgN0gyLjc0MTdDMi45MzI1MiA0LjczNjYyIDQuNzM2NjIgMi45MzI1MiA3IDIuNzQxN1Y1LjVDNyA1Ljc3NjE0IDcuMjIzODYgNiA3LjUgNkM3Ljc3NjE0IDYgOCA1Ljc3NjE0IDggNS41VjIuNzYzNDRDMTAuMTY2OCAzLjA0MjIyIDExLjg2ODkgNC44MDUxNyAxMi4wNTQgN0g5LjVDOS4yMjM4NiA3IDkgNy4yMjM4NiA5IDcuNUM5IDcuNzc2MTQgOS4yMjM4NiA4IDkuNSA4SDEyLjAzMjJDMTEuNzYyMSAxMC4wOTkxIDEwLjA5OTEgMTEuNzYyMSA4IDEyLjAzMjJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxGZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC42MDkxMyAwLjA2MzQyODdDNC4zOTA4MiAwLjAwODg1MDUgNC4xNjU3NSAwLjEyMzkzIDQuMDgyMTggMC4zMzI4NjdMMy4xNTM4IDIuNjUzOEwwLjgzMjg2NiAzLjU4MjE4QzAuNzAyODg0IDMuNjM0MTcgMC42MDQ1MDQgMy43NDM3IDAuNTY2NzA1IDMuODc4NDlDMC41Mjg5MDYgNC4wMTMyOSAwLjU1NTk5NCA0LjE1OCAwLjYzOTk5MiA0LjI2OTk5TDIuMDExNDggNi4wOTg2NEwxLjA2MzQzIDkuODkwODVDMS4wMDk0NCAxMC4xMDY4IDEuMTIxNDUgMTAuMzI5OCAxLjMyNjkxIDEwLjQxNTRMNC4yMDExNSAxMS42MTNMNS42MjU1NyAxMy43NDk2QzUuNzM0MTIgMTMuOTEyNCA1LjkzNTQ1IDEzLjk4NjQgNi4xMjM2MiAxMy45MzI3TDkuNjIzNjIgMTIuOTMyN0M5LjYyOTg4IDEyLjkzMDkgOS42MzYxMSAxMi45MjkgOS42NDIyOSAxMi45MjY5TDEyLjY0MjMgMTEuOTI2OUMxMi43OTIzIDExLjg3NjkgMTIuOTA1IDExLjc1MTkgMTIuOTM5MyAxMS41OTc2TDEzLjkzOTMgNy4wOTc2MUMxMy45Nzc2IDYuOTI1MDYgMTMuOTExNCA2Ljc0NjA1IDEzLjc3IDYuNjM5OTlMMTEuOTUgNS4yNzQ5OVYyLjk5OTk5QzExLjk1IDIuODI5NTUgMTEuODUzNyAyLjY3MzczIDExLjcwMTIgMi41OTc1TDguNzAxMjQgMS4wOTc1QzguNjcxODcgMS4wODI4MiA4LjY0MDk4IDEuMDcxMzkgOC42MDkxMyAxLjA2MzQzTDQuNjA5MTMgMC4wNjM0Mjg3Wk0xMS40MzIzIDYuMDExNzNMMTIuNzc0OCA3LjAxODU4TDEwLjIxMTkgOS4xNTQyOUMxMC4xNDc2IDkuMjA3ODYgMTAuMDk5NSA5LjI3ODMgMTAuMDczMSA5LjM1NzY5TDkuMjUzODIgMTEuODE1NUw3LjczODQ5IDEwLjg2ODRDNy41Mjc3NCAxMC43MzY3IDcuMjUwMTEgMTAuODAwNyA3LjExODM5IDExLjAxMTVDNi45ODY2NyAxMS4yMjIyIDcuMDUwNzQgMTEuNDk5OSA3LjI2MTQ5IDExLjYzMTZMOC40MDM0MSAxMi4zNDUzTDYuMTkyMjEgMTIuOTc3MUw0Ljg3NDQxIDExLjAwMDRDNC44MjUxMyAxMC45MjY1IDQuNzU1MDggMTAuODY4OCA0LjY3MzA3IDEwLjgzNDZMMi4wMzA0NiA5LjczMzUyTDIuODUxMzQgNi40NDk5OUg0Ljk5OTk5QzUuMjQ4NTIgNi40NDk5OSA1LjQ0OTk5IDYuMjQ4NTIgNS40NDk5OSA1Ljk5OTk5QzUuNDQ5OTkgNS43NTE0NiA1LjI0ODUyIDUuNTQ5OTkgNC45OTk5OSA1LjU0OTk5SDIuNzI0OTlMMS43MTIzIDQuMTk5NzRMMy41MTQwNyAzLjQ3OTAzTDYuMzU3NjkgNC40MjY5QzYuNTM2NTUgNC40ODY1MiA2LjczMzYxIDQuNDI4MzIgNi44NTEzOCA0LjI4MTExTDguNjI0MTMgMi4wNjUxOEwxMS4wNSAzLjI3ODExVjUuMTk1MzNMOC44MzI4NyA2LjA4MjE4QzguNzA5OTYgNi4xMzEzNCA4LjYxNDk0IDYuMjMyMTIgOC41NzMwOCA2LjM1NzY5TDguMDczMDggNy44NTc2OUM3Ljk5NDQ5IDguMDkzNDYgOC4xMjE5MSA4LjM0ODMxIDguMzU3NjkgOC40MjY5QzguNTkzNDYgOC41MDU0OSA4Ljg0ODMxIDguMzc4MDcgOC45MjY5IDguMTQyMjlMOS4zNjA5IDYuODQwMjlMMTEuNDMyMyA2LjAxMTczWk03LjcxMDUyIDEuNzY2NDhMNi4zNDQ2MiAzLjQ3Mzg2TDQuMDk1MDUgMi43MjRMNC43NzE5MiAxLjAzMTgzTDcuNzEwNTIgMS43NjY0OFpNMTAuMjExNSAxMS43ODg1TDEyLjExNiAxMS4xNTM3TDEyLjc3NDUgOC4xOTAzNEwxMC44ODY0IDkuNzYzNzRMMTAuMjExNSAxMS43ODg1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMjg4NTYgMC43OTY5MDhDNy40MjI1OCAwLjczNDM2NCA3LjU3NzQyIDAuNzM0MzY0IDcuNzExNDQgMC43OTY5MDhMMTMuNzExNCAzLjU5NjkxQzEzLjg4NzUgMy42NzkwNiAxNCAzLjg1NTc0IDE0IDQuMDVWMTAuOTVDMTQgMTEuMTQ0MyAxMy44ODc1IDExLjMyMDkgMTMuNzExNCAxMS40MDMxTDcuNzExNDQgMTQuMjAzMUM3LjU3NzQyIDE0LjI2NTYgNy40MjI1OCAxNC4yNjU2IDcuMjg4NTYgMTQuMjAzMUwxLjI4ODU2IDExLjQwMzFDMS4xMTI1MiAxMS4zMjA5IDEgMTEuMTQ0MyAxIDEwLjk1VjQuMDVDMSAzLjg1NTc0IDEuMTEyNTIgMy42NzkwNiAxLjI4ODU2IDMuNTk2OTFMNy4yODg1NiAwLjc5NjkwOFpNMiA0LjgwNTc4TDcgNi45MzA3OFYxMi45NjQ5TDIgMTAuNjMxNlY0LjgwNTc4Wk04IDEyLjk2NDlMMTMgMTAuNjMxNlY0LjgwNTc4TDggNi45MzA3OFYxMi45NjQ5Wk03LjUgNi4wNTY3MkwxMi4yNzE5IDQuMDI4NjZMNy41IDEuODAxNzZMMi43MjgwOSA0LjAyODY2TDcuNSA2LjA1NjcyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0semU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMjkyMjcgMC4wNDg5ODRDMy40NzAzMyAtMC4wMzIzMzggMy42Nzk0NiAtMC4wMDIyODIxNCAzLjgyNzQgMC4xMjU4OTFMMTIuODU4NyA3Ljk1MDI2QzEzLjAxMzQgOC4wODQzMiAxMy4wNzA4IDguMjk5MTYgMTMuMDAzNSA4LjQ5MjUxQzEyLjkzNjIgOC42ODU4NiAxMi43NTc4IDguODE4NjYgMTIuNTUzMyA4LjgyNzY4TDkuMjE4ODcgOC45NzQ3NEwxMS4xNTA0IDEzLjIxODdDMTEuMjY0OCAxMy40NyAxMS4xNTM4IDEzLjc2NjQgMTAuOTAyNiAxMy44ODA4TDguNzUwMjQgMTQuODYxM0M4LjQ5OSAxNC45NzU4IDguMjAyNTUgMTQuODY0OSA4LjA4ODAyIDE0LjYxMzdMNi4xNTMzOSAxMC4zNzAzTDMuODYyNzkgMTIuNzg1NUMzLjcyMTk2IDEyLjkzNCAzLjUwNDg3IDEyLjk4MTcgMy4zMTQ3OSAxMi45MDU5QzMuMTI0NyAxMi44MzAxIDMgMTIuNjQ2MSAzIDEyLjQ0MTRWMC41MDM3OTJDMyAwLjMwODA0OCAzLjExNDIyIDAuMTMwMzA2IDMuMjkyMjcgMC4wNDg5ODRaTTQgMS41OTg1MlYxMS4xODc3TDUuOTM3OTkgOS4xNDQyNUM2LjA1MjM4IDkuMDIzNjMgNi4yMTkyNCA4Ljk2Nzc2IDYuMzgzMTkgOC45OTUxNkM2LjU0NzE1IDkuMDIyNTYgNi42ODY3NyA5LjEyOTY1IDYuNzU1NzMgOS4yODA5TDguNzkwNTYgMTMuNzQ0MUwxMC4wMzMyIDEzLjE3OEw4LjAwMTk1IDguNzE0OTdDNy45MzMxMyA4LjU2Mzc2IDcuOTQzOTEgOC4zODgyNCA4LjAzMDcyIDguMjQ2NTlDOC4xMTc1MyA4LjEwNDk0IDguMjY5MDMgOC4wMTU2NiA4LjQzNSA4LjAwODM0TDExLjI1NDkgNy44ODM5N0w0IDEuNTk4NTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxXZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC41IDFDNC4yMjM4NiAxIDQgMS4yMjM4NiA0IDEuNUM0IDEuNzc2MTQgNC4yMjM4NiAyIDQuNSAyQzUuNDIyMTUgMiA2LjAzOTkgMi4yMzA1NCA2LjQyMDc1IDIuNTYzNzlDNi43OTI4NiAyLjg4OTM5IDcgMy4zNjYyNiA3IDRWN0g1Ljc1QzUuNDczODYgNyA1LjI1IDcuMjIzODYgNS4yNSA3LjVDNS4yNSA3Ljc3NjE0IDUuNDczODYgOCA1Ljc1IDhIN1YxMUM3IDExLjYzMzcgNi43OTI4NiAxMi4xMTA2IDYuNDIwNzUgMTIuNDM2MkM2LjAzOTkgMTIuNzY5NSA1LjQyMjE1IDEzIDQuNSAxM0M0LjIyMzg2IDEzIDQgMTMuMjIzOSA0IDEzLjVDNCAxMy43NzYxIDQuMjIzODYgMTQgNC41IDE0QzUuNTc3ODUgMTQgNi40NjAxIDEzLjczMDUgNy4wNzkyNSAxMy4xODg4QzcuMjQxNjggMTMuMDQ2NyA3LjM4MTY5IDEyLjg4OTYgNy41IDEyLjcxOThDNy42MTgzMiAxMi44ODk2IDcuNzU4MzIgMTMuMDQ2NyA3LjkyMDc1IDEzLjE4ODhDOC41Mzk5IDEzLjczMDUgOS40MjIxNSAxNCAxMC41IDE0QzEwLjc3NjEgMTQgMTEgMTMuNzc2MSAxMSAxMy41QzExIDEzLjIyMzkgMTAuNzc2MSAxMyAxMC41IDEzQzkuNTc3ODUgMTMgOC45NjAxIDEyLjc2OTUgOC41NzkyNSAxMi40MzYyQzguMjA3MTQgMTIuMTEwNiA4IDExLjYzMzcgOCAxMVY4SDkuMjVDOS41MjYxNCA4IDkuNzUgNy43NzYxNCA5Ljc1IDcuNUM5Ljc1IDcuMjIzODYgOS41MjYxNCA3IDkuMjUgN0g4VjRDOCAzLjM2NjI2IDguMjA3MTQgMi44ODkzOSA4LjU3OTI1IDIuNTYzNzlDOC45NjAxIDIuMjMwNTQgOS41Nzc4NSAyIDEwLjUgMkMxMC43NzYxIDIgMTEgMS43NzYxNCAxMSAxLjVDMTEgMS4yMjM4NiAxMC43NzYxIDEgMTAuNSAxQzkuNDIyMTUgMSA4LjUzOTkgMS4yNjk0NiA3LjkyMDc1IDEuODExMjFDNy43NTgzMiAxLjk1MzMzIDcuNjE4MzIgMi4xMTA0MyA3LjUgMi4yODAyM0M3LjM4MTY4IDIuMTEwNDMgNy4yNDE2OCAxLjk1MzMzIDcuMDc5MjUgMS44MTEyMUM2LjQ2MDEgMS4yNjk0NiA1LjU3Nzg1IDEgNC41IDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxHZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSA3LjVDNSA3LjIyMzg2IDUuMjIzODYgNyA1LjUgN0g5LjVDOS43NzYxNCA3IDEwIDcuMjIzODYgMTAgNy41QzEwIDcuNzc2MTQgOS43NzYxNCA4IDkuNSA4SDUuNUM1LjIyMzg2IDggNSA3Ljc3NjE0IDUgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuOCAxTDIuNzQ5NjcgMC45OTk5N0MyLjUyMTIyIDAuOTk5NzUyIDIuMzI0MjkgMC45OTk1NjQgMi4xNDk4MyAxLjA0MTQ1QzEuNjAxMzYgMS4xNzMxMiAxLjE3MzEyIDEuNjAxMzYgMS4wNDE0NSAyLjE0OTgzQzAuOTk5NTY0IDIuMzI0MjkgMC45OTk3NTIgMi41MjEyMiAwLjk5OTk3IDIuNzQ5NjdMMSAyLjhWNS4yTDAuOTk5OTcgNS4yNTAzM0MwLjk5OTc1MiA1LjQ3ODc4IDAuOTk5NTY0IDUuNjc1NzIgMS4wNDE0NSA1Ljg1MDE3QzEuMTczMTIgNi4zOTg2NCAxLjYwMTM2IDYuODI2ODggMi4xNDk4MyA2Ljk1ODU2QzIuMzI0MjkgNy4wMDA0NCAyLjUyMTIyIDcuMDAwMjUgMi43NDk2NyA3LjAwMDAzTDIuOCA3SDUuMkw1LjI1MDMzIDcuMDAwMDNDNS40Nzg3OCA3LjAwMDI1IDUuNjc1NzIgNy4wMDA0NCA1Ljg1MDE3IDYuOTU4NTZDNi4zOTg2NCA2LjgyNjg4IDYuODI2ODggNi4zOTg2NCA2Ljk1ODU2IDUuODUwMTdDNy4wMDA0NCA1LjY3NTcyIDcuMDAwMjUgNS40Nzg3OCA3LjAwMDAzIDUuMjUwMzNMNyA1LjJWMi44TDcuMDAwMDMgMi43NDk2N0M3LjAwMDI1IDIuNTIxMjIgNy4wMDA0NCAyLjMyNDI5IDYuOTU4NTYgMi4xNDk4M0M2LjgyNjg4IDEuNjAxMzYgNi4zOTg2NCAxLjE3MzEyIDUuODUwMTcgMS4wNDE0NUM1LjY3NTcyIDAuOTk5NTY0IDUuNDc4NzggMC45OTk3NTIgNS4yNTAzMyAwLjk5OTk3TDUuMiAxSDIuOFpNMi4zODMyOCAyLjAxMzgyQzIuNDI2MzIgMi4wMDM0OCAyLjQ5MjIyIDIgMi44IDJINS4yQzUuNTA3NzkgMiA1LjU3MzY5IDIuMDAzNDggNS42MTY3MiAyLjAxMzgyQzUuNzk5NTUgMi4wNTc3MSA1Ljk0MjI5IDIuMjAwNDUgNS45ODYxOSAyLjM4MzI4QzUuOTk2NTIgMi40MjYzMiA2IDIuNDkyMjIgNiAyLjhWNS4yQzYgNS41MDc3OSA1Ljk5NjUyIDUuNTczNjkgNS45ODYxOSA1LjYxNjcyQzUuOTQyMjkgNS43OTk1NSA1Ljc5OTU1IDUuOTQyMjkgNS42MTY3MiA1Ljk4NjE5QzUuNTczNjkgNS45OTY1MiA1LjUwNzc5IDYgNS4yIDZIMi44QzIuNDkyMjIgNiAyLjQyNjMyIDUuOTk2NTIgMi4zODMyOCA1Ljk4NjE5QzIuMjAwNDUgNS45NDIyOSAyLjA1NzcxIDUuNzk5NTUgMi4wMTM4MiA1LjYxNjcyQzIuMDAzNDggNS41NzM2OSAyIDUuNTA3NzkgMiA1LjJWMi44QzIgMi40OTIyMiAyLjAwMzQ4IDIuNDI2MzIgMi4wMTM4MiAyLjM4MzI4QzIuMDU3NzEgMi4yMDA0NSAyLjIwMDQ1IDIuMDU3NzEgMi4zODMyOCAyLjAxMzgyWk05LjggMUw5Ljc0OTY3IDAuOTk5OTdDOS41MjEyMiAwLjk5OTc1MiA5LjMyNDI5IDAuOTk5NTY0IDkuMTQ5ODMgMS4wNDE0NUM4LjYwMTM2IDEuMTczMTIgOC4xNzMxMiAxLjYwMTM2IDguMDQxNDUgMi4xNDk4M0M3Ljk5OTU2IDIuMzI0MjkgNy45OTk3NSAyLjUyMTIyIDcuOTk5OTcgMi43NDk2N0w4IDIuOFY1LjJMNy45OTk5NyA1LjI1MDMzQzcuOTk5NzUgNS40Nzg3OCA3Ljk5OTU2IDUuNjc1NzIgOC4wNDE0NSA1Ljg1MDE3QzguMTczMTIgNi4zOTg2NCA4LjYwMTM2IDYuODI2ODggOS4xNDk4MyA2Ljk1ODU2QzkuMzI0MjkgNy4wMDA0NCA5LjUyMTIyIDcuMDAwMjUgOS43NDk2NyA3LjAwMDAzTDkuOCA3SDEyLjJMMTIuMjUwMyA3LjAwMDAzQzEyLjQ3ODggNy4wMDAyNSAxMi42NzU3IDcuMDAwNDQgMTIuODUwMiA2Ljk1ODU2QzEzLjM5ODYgNi44MjY4OCAxMy44MjY5IDYuMzk4NjQgMTMuOTU4NiA1Ljg1MDE3QzE0LjAwMDQgNS42NzU3MiAxNC4wMDAzIDUuNDc4NzggMTQgNS4yNTAzM0wxNCA1LjJWMi44TDE0IDIuNzQ5NjdDMTQuMDAwMyAyLjUyMTIyIDE0LjAwMDQgMi4zMjQyOSAxMy45NTg2IDIuMTQ5ODNDMTMuODI2OSAxLjYwMTM2IDEzLjM5ODYgMS4xNzMxMiAxMi44NTAyIDEuMDQxNDVDMTIuNjc1NyAwLjk5OTU2NCAxMi40Nzg4IDAuOTk5NzUyIDEyLjI1MDMgMC45OTk5N0wxMi4yIDFIOS44Wk05LjM4MzI4IDIuMDEzODJDOS40MjYzMiAyLjAwMzQ4IDkuNDkyMjIgMiA5LjggMkgxMi4yQzEyLjUwNzggMiAxMi41NzM3IDIuMDAzNDggMTIuNjE2NyAyLjAxMzgyQzEyLjc5OTUgMi4wNTc3MSAxMi45NDIzIDIuMjAwNDUgMTIuOTg2MiAyLjM4MzI4QzEyLjk5NjUgMi40MjYzMiAxMyAyLjQ5MjIyIDEzIDIuOFY1LjJDMTMgNS41MDc3OSAxMi45OTY1IDUuNTczNjkgMTIuOTg2MiA1LjYxNjcyQzEyLjk0MjMgNS43OTk1NSAxMi43OTk1IDUuOTQyMjkgMTIuNjE2NyA1Ljk4NjE5QzEyLjU3MzcgNS45OTY1MiAxMi41MDc4IDYgMTIuMiA2SDkuOEM5LjQ5MjIyIDYgOS40MjYzMiA1Ljk5NjUyIDkuMzgzMjggNS45ODYxOUM5LjIwMDQ1IDUuOTQyMjkgOS4wNTc3MSA1Ljc5OTU1IDkuMDEzODIgNS42MTY3MkM5LjAwMzQ4IDUuNTczNjkgOSA1LjUwNzc5IDkgNS4yVjIuOEM5IDIuNDkyMjIgOS4wMDM0OCAyLjQyNjMyIDkuMDEzODIgMi4zODMyOEM5LjA1NzcxIDIuMjAwNDUgOS4yMDA0NSAyLjA1NzcxIDkuMzgzMjggMi4wMTM4MlpNMi43NDk2NyA3Ljk5OTk3TDIuOCA4SDUuMkw1LjI1MDMzIDcuOTk5OTdDNS40Nzg3OCA3Ljk5OTc1IDUuNjc1NzIgNy45OTk1NiA1Ljg1MDE3IDguMDQxNDVDNi4zOTg2NCA4LjE3MzEyIDYuODI2ODggOC42MDEzNiA2Ljk1ODU2IDkuMTQ5ODNDNy4wMDA0NCA5LjMyNDI5IDcuMDAwMjUgOS41MjEyMiA3LjAwMDAzIDkuNzQ5NjdMNyA5LjhWMTIuMkw3LjAwMDAzIDEyLjI1MDNDNy4wMDAyNSAxMi40Nzg4IDcuMDAwNDQgMTIuNjc1NyA2Ljk1ODU2IDEyLjg1MDJDNi44MjY4OCAxMy4zOTg2IDYuMzk4NjQgMTMuODI2OSA1Ljg1MDE3IDEzLjk1ODZDNS42NzU3MiAxNC4wMDA0IDUuNDc4NzggMTQuMDAwMyA1LjI1MDMzIDE0TDUuMiAxNEgyLjhMMi43NDk2NyAxNEMyLjUyMTIyIDE0LjAwMDMgMi4zMjQyOSAxNC4wMDA0IDIuMTQ5ODMgMTMuOTU4NkMxLjYwMTM2IDEzLjgyNjkgMS4xNzMxMiAxMy4zOTg2IDEuMDQxNDUgMTIuODUwMkMwLjk5OTU2NCAxMi42NzU3IDAuOTk5NzUyIDEyLjQ3ODggMC45OTk5NyAxMi4yNTAzTDEgMTIuMlY5LjhMMC45OTk5NyA5Ljc0OTY3QzAuOTk5NzUyIDkuNTIxMjIgMC45OTk1NjQgOS4zMjQyOSAxLjA0MTQ1IDkuMTQ5ODNDMS4xNzMxMiA4LjYwMTM2IDEuNjAxMzYgOC4xNzMxMiAyLjE0OTgzIDguMDQxNDVDMi4zMjQyOSA3Ljk5OTU2IDIuNTIxMjIgNy45OTk3NSAyLjc0OTY3IDcuOTk5OTdaTTIuOCA5QzIuNDkyMjIgOSAyLjQyNjMyIDkuMDAzNDggMi4zODMyOCA5LjAxMzgyQzIuMjAwNDUgOS4wNTc3MSAyLjA1NzcxIDkuMjAwNDUgMi4wMTM4MiA5LjM4MzI4QzIuMDAzNDggOS40MjYzMiAyIDkuNDkyMjIgMiA5LjhWMTIuMkMyIDEyLjUwNzggMi4wMDM0OCAxMi41NzM3IDIuMDEzODIgMTIuNjE2N0MyLjA1NzcxIDEyLjc5OTUgMi4yMDA0NSAxMi45NDIzIDIuMzgzMjggMTIuOTg2MkMyLjQyNjMyIDEyLjk5NjUgMi40OTIyMiAxMyAyLjggMTNINS4yQzUuNTA3NzkgMTMgNS41NzM2OSAxMi45OTY1IDUuNjE2NzIgMTIuOTg2MkM1Ljc5OTU1IDEyLjk0MjMgNS45NDIyOSAxMi43OTk1IDUuOTg2MTkgMTIuNjE2N0M1Ljk5NjUyIDEyLjU3MzcgNiAxMi41MDc4IDYgMTIuMlY5LjhDNiA5LjQ5MjIyIDUuOTk2NTIgOS40MjYzMiA1Ljk4NjE5IDkuMzgzMjhDNS45NDIyOSA5LjIwMDQ1IDUuNzk5NTUgOS4wNTc3MSA1LjYxNjcyIDkuMDEzODJDNS41NzM2OSA5LjAwMzQ4IDUuNTA3NzkgOSA1LjIgOUgyLjhaTTkuOCA4TDkuNzQ5NjcgNy45OTk5N0M5LjUyMTIyIDcuOTk5NzUgOS4zMjQyOSA3Ljk5OTU2IDkuMTQ5ODMgOC4wNDE0NUM4LjYwMTM2IDguMTczMTIgOC4xNzMxMiA4LjYwMTM2IDguMDQxNDUgOS4xNDk4M0M3Ljk5OTU2IDkuMzI0MjkgNy45OTk3NSA5LjUyMTIyIDcuOTk5OTcgOS43NDk2N0w4IDkuOFYxMi4yTDcuOTk5OTcgMTIuMjUwM0M3Ljk5OTc1IDEyLjQ3ODggNy45OTk1NiAxMi42NzU3IDguMDQxNDUgMTIuODUwMkM4LjE3MzEyIDEzLjM5ODYgOC42MDEzNiAxMy44MjY5IDkuMTQ5ODMgMTMuOTU4NkM5LjMyNDI5IDE0LjAwMDQgOS41MjEyMiAxNC4wMDAzIDkuNzQ5NjcgMTRMOS44IDE0SDEyLjJMMTIuMjUwMyAxNEMxMi40Nzg4IDE0LjAwMDMgMTIuNjc1NyAxNC4wMDA0IDEyLjg1MDIgMTMuOTU4NkMxMy4zOTg2IDEzLjgyNjkgMTMuODI2OSAxMy4zOTg2IDEzLjk1ODYgMTIuODUwMkMxNC4wMDA0IDEyLjY3NTcgMTQuMDAwMyAxMi40Nzg4IDE0IDEyLjI1MDNMMTQgMTIuMlY5LjhMMTQgOS43NDk2N0MxNC4wMDAzIDkuNTIxMjIgMTQuMDAwNCA5LjMyNDI5IDEzLjk1ODYgOS4xNDk4M0MxMy44MjY5IDguNjAxMzYgMTMuMzk4NiA4LjE3MzEyIDEyLjg1MDIgOC4wNDE0NUMxMi42NzU3IDcuOTk5NTYgMTIuNDc4OCA3Ljk5OTc1IDEyLjI1MDMgNy45OTk5N0wxMi4yIDhIOS44Wk05LjM4MzI4IDkuMDEzODJDOS40MjYzMiA5LjAwMzQ4IDkuNDkyMjIgOSA5LjggOUgxMi4yQzEyLjUwNzggOSAxMi41NzM3IDkuMDAzNDggMTIuNjE2NyA5LjAxMzgyQzEyLjc5OTUgOS4wNTc3MSAxMi45NDIzIDkuMjAwNDUgMTIuOTg2MiA5LjM4MzI4QzEyLjk5NjUgOS40MjYzMiAxMyA5LjQ5MjIyIDEzIDkuOFYxMi4yQzEzIDEyLjUwNzggMTIuOTk2NSAxMi41NzM3IDEyLjk4NjIgMTIuNjE2N0MxMi45NDIzIDEyLjc5OTUgMTIuNzk5NSAxMi45NDIzIDEyLjYxNjcgMTIuOTg2MkMxMi41NzM3IDEyLjk5NjUgMTIuNTA3OCAxMyAxMi4yIDEzSDkuOEM5LjQ5MjIyIDEzIDkuNDI2MzIgMTIuOTk2NSA5LjM4MzI4IDEyLjk4NjJDOS4yMDA0NSAxMi45NDIzIDkuMDU3NzEgMTIuNzk5NSA5LjAxMzgyIDEyLjYxNjdDOS4wMDM0OCAxMi41NzM3IDkgMTIuNTA3OCA5IDEyLjJWOS44QzkgOS40OTIyMiA5LjAwMzQ4IDkuNDI2MzIgOS4wMTM4MiA5LjM4MzI4QzkuMDU3NzEgOS4yMDA0NSA5LjIwMDQ1IDkuMDU3NzEgOS4zODMyOCA5LjAxMzgyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMDAwMTQgMi43Mzg5NUMzLjAwMDE0IDIuOTQ2OTggMi43NjA4NyAzLjA2NDAxIDIuNTk2NjYgMi45MzYyOEwxLjAwMzg2IDEuNjk3NDRDMC44NzUxNzcgMS41OTczNSAwLjg3NTE3NyAxLjQwMjg2IDEuMDAzODYgMS4zMDI3N0wyLjU5NjY2IDAuMDYzOTI4QzIuNzYwODcgLTAuMDYzNzk0NCAzLjAwMDE0IDAuMDUzMjI5MyAzLjAwMDE0IDAuMjYxMjY2VjEuMDAwMTJIOS4wMDAwOVYwLjI2MTI5NkM5LjAwMDA5IDAuMDUzMjU5MSA5LjIzOTM2IC0wLjA2Mzc2NDYgOS40MDM1OCAwLjA2Mzk1NzhMMTAuOTk2NCAxLjMwMjhDMTEuMTI1MSAxLjQwMjg5IDExLjEyNTEgMS41OTczOCAxMC45OTY0IDEuNjk3NDdMOS40MDM1OCAyLjkzNjMxQzkuMjM5MzYgMy4wNjQwNCA5LjAwMDA5IDIuOTQ3MDEgOS4wMDAwOSAyLjczODk4VjIuMDAwMTJIMy4wMDAxNFYyLjczODk1Wk05LjUwMDAyIDQuOTk5OThIMi41MDAwMkMyLjIyMzg4IDQuOTk5OTggMi4wMDAwMiA1LjIyMzg0IDIuMDAwMDIgNS40OTk5OFYxMi41QzIuMDAwMDIgMTIuNzc2MSAyLjIyMzg4IDEzIDIuNTAwMDIgMTNIOS41MDAwMkM5Ljc3NjE2IDEzIDEwIDEyLjc3NjEgMTAgMTIuNVY1LjQ5OTk4QzEwIDUuMjIzODQgOS43NzYxNiA0Ljk5OTk4IDkuNTAwMDIgNC45OTk5OFpNMi41MDAwMiAzLjk5OTk4QzEuNjcxNTkgMy45OTk5OCAxLjAwMDAyIDQuNjcxNTYgMS4wMDAwMiA1LjQ5OTk4VjEyLjVDMS4wMDAwMiAxMy4zMjg0IDEuNjcxNTkgMTQgMi41MDAwMiAxNEg5LjUwMDAyQzEwLjMyODQgMTQgMTEgMTMuMzI4NCAxMSAxMi41VjUuNDk5OThDMTEgNC42NzE1NiAxMC4zMjg0IDMuOTk5OTggOS41MDAwMiAzLjk5OTk4SDIuNTAwMDJaTTE0LjczODkgNi4wMDAwMUgxNFYxMkgxNC43Mzg5QzE0Ljk0NjkgMTIgMTUuMDY0IDEyLjIzOTMgMTQuOTM2MiAxMi40MDM1TDEzLjY5NzQgMTMuOTk2M0MxMy41OTczIDE0LjEyNSAxMy40MDI4IDE0LjEyNSAxMy4zMDI3IDEzLjk5NjNMMTIuMDYzOSAxMi40MDM1QzExLjkzNjIgMTIuMjM5MyAxMi4wNTMyIDEyIDEyLjI2MTIgMTJIMTNWNi4wMDAwMUgxMi4yNjEyQzEyLjA1MzIgNi4wMDAwMSAxMS45MzYxIDUuNzYwNzQgMTIuMDYzOSA1LjU5NjUzTDEzLjMwMjcgNC4wMDM3M0MxMy40MDI4IDMuODc1MDUgMTMuNTk3MyAzLjg3NTA1IDEzLjY5NzQgNC4wMDM3NEwxNC45MzYyIDUuNTk2NTNDMTUuMDYzOSA1Ljc2MDc0IDE0Ljk0NjkgNi4wMDAwMSAxNC43Mzg5IDYuMDAwMDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxZZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3NzA3NUMzLjg0MjIyIDAuODc3MDc1IDAuODc3MDc1IDMuODQyMjIgMC44NzcwNzUgNy40OTk5MUMwLjg3NzA3NSAxMS4xNTc2IDMuODQyMjIgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMTEuMTU3NiAxNC4xMjI3IDE0LjEyMjcgMTEuMTU3NiAxNC4xMjI3IDcuNDk5OTFDMTQuMTIyNyAzLjg0MjIyIDExLjE1NzYgMC44NzcwNzUgNy40OTk5MSAwLjg3NzA3NVpNMS44MjcwOCA3LjQ5OTkxQzEuODI3MDggNC4zNjY4OSA0LjM2Njg5IDEuODI3MDcgNy40OTk5MSAxLjgyNzA3QzEwLjYzMjkgMS44MjcwNyAxMy4xNzI3IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxQzEzLjE3MjcgMTAuNjMyOSAxMC42MzI5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzQuMzY2ODkgMTMuMTcyNyAxLjgyNzA4IDEwLjYzMjkgMS44MjcwOCA3LjQ5OTkxWk04LjM3Mjg3IDcuNTAwMDZDOC4zNzI4NyA3Ljk4MTk2IDcuOTgyMjEgOC4zNzI2MyA3LjUwMDMgOC4zNzI2M0M3LjAxODM5IDguMzcyNjMgNi42Mjc3MyA3Ljk4MTk2IDYuNjI3NzMgNy41MDAwNkM2LjYyNzczIDcuMDE4MTUgNy4wMTgzOSA2LjYyNzQ4IDcuNTAwMyA2LjYyNzQ4QzcuOTgyMjEgNi42Mjc0OCA4LjM3Mjg3IDcuMDE4MTUgOC4zNzI4NyA3LjUwMDA2Wk05LjMyMjg3IDcuNTAwMDZDOS4zMjI4NyA4LjUwNjY0IDguNTA2ODggOS4zMjI2MyA3LjUwMDMgOS4zMjI2M0M2LjQ5MzcyIDkuMzIyNjMgNS42Nzc3MyA4LjUwNjY0IDUuNjc3NzMgNy41MDAwNkM1LjY3NzczIDYuNDkzNDggNi40OTM3MiA1LjY3NzQ4IDcuNTAwMyA1LjY3NzQ4QzguNTA2ODggNS42Nzc0OCA5LjMyMjg3IDYuNDkzNDggOS4zMjI4NyA3LjUwMDA2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sS2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgNy41QzIgNy4yMjM4NiAyLjIyMzg2IDcgMi41IDdIMTIuNUMxMi43NzYxIDcgMTMgNy4yMjM4NiAxMyA3LjVDMTMgNy43NzYxNCAxMi43NzYxIDggMTIuNSA4SDIuNUMyLjIyMzg2IDggMiA3Ljc3NjE0IDIgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAyQzcuNzc2MTQgMiA4IDIuMjIzODYgOCAyLjVMOCAxMi41QzggMTIuNzc2MSA3Ljc3NjE0IDEzIDcuNSAxM0M3LjIyMzg2IDEzIDcgMTIuNzc2MSA3IDEyLjVMNyAyLjVDNyAyLjIyMzg2IDcuMjIzODYgMiA3LjUgMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFFlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgOS4xMjVDOC4zOTc0NiA5LjEyNSA5LjEyNSA4LjM5NzQ2IDkuMTI1IDcuNUM5LjEyNSA2LjYwMjU0IDguMzk3NDYgNS44NzUgNy41IDUuODc1QzYuNjAyNTQgNS44NzUgNS44NzUgNi42MDI1NCA1Ljg3NSA3LjVDNS44NzUgOC4zOTc0NiA2LjYwMjU0IDkuMTI1IDcuNSA5LjEyNVpNNy41IDEwLjEyNUM4Ljk0OTc1IDEwLjEyNSAxMC4xMjUgOC45NDk3NSAxMC4xMjUgNy41QzEwLjEyNSA2LjA1MDI1IDguOTQ5NzUgNC44NzUgNy41IDQuODc1QzYuMDUwMjUgNC44NzUgNC44NzUgNi4wNTAyNSA0Ljg3NSA3LjVDNC44NzUgOC45NDk3NSA2LjA1MDI1IDEwLjEyNSA3LjUgMTAuMTI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuODc1IDcuNUM5Ljg3NSA4LjgxMTY4IDguODExNjggOS44NzUgNy41IDkuODc1QzYuMTg4MzIgOS44NzUgNS4xMjUgOC44MTE2OCA1LjEyNSA3LjVDNS4xMjUgNi4xODgzMiA2LjE4ODMyIDUuMTI1IDcuNSA1LjEyNUM4LjgxMTY4IDUuMTI1IDkuODc1IDYuMTg4MzIgOS44NzUgNy41WlwiLGZpbGw6bn0pKX0sZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNjI1IDcuNUMzLjYyNSA4LjEyMTMyIDMuMTIxMzIgOC42MjUgMi41IDguNjI1QzEuODc4NjggOC42MjUgMS4zNzUgOC4xMjEzMiAxLjM3NSA3LjVDMS4zNzUgNi44Nzg2OCAxLjg3ODY4IDYuMzc1IDIuNSA2LjM3NUMzLjEyMTMyIDYuMzc1IDMuNjI1IDYuODc4NjggMy42MjUgNy41Wk04LjYyNSA3LjVDOC42MjUgOC4xMjEzMiA4LjEyMTMyIDguNjI1IDcuNSA4LjYyNUM2Ljg3ODY4IDguNjI1IDYuMzc1IDguMTIxMzIgNi4zNzUgNy41QzYuMzc1IDYuODc4NjggNi44Nzg2OCA2LjM3NSA3LjUgNi4zNzVDOC4xMjEzMiA2LjM3NSA4LjYyNSA2Ljg3ODY4IDguNjI1IDcuNVpNMTIuNSA4LjYyNUMxMy4xMjEzIDguNjI1IDEzLjYyNSA4LjEyMTMyIDEzLjYyNSA3LjVDMTMuNjI1IDYuODc4NjggMTMuMTIxMyA2LjM3NSAxMi41IDYuMzc1QzExLjg3ODcgNi4zNzUgMTEuMzc1IDYuODc4NjggMTEuMzc1IDcuNUMxMS4zNzUgOC4xMjEzMiAxMS44Nzg3IDguNjI1IDEyLjUgOC42MjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx0dD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC42MjUgMi41QzguNjI1IDMuMTIxMzIgOC4xMjEzMiAzLjYyNSA3LjUgMy42MjVDNi44Nzg2OCAzLjYyNSA2LjM3NSAzLjEyMTMyIDYuMzc1IDIuNUM2LjM3NSAxLjg3ODY4IDYuODc4NjggMS4zNzUgNy41IDEuMzc1QzguMTIxMzIgMS4zNzUgOC42MjUgMS44Nzg2OCA4LjYyNSAyLjVaTTguNjI1IDcuNUM4LjYyNSA4LjEyMTMyIDguMTIxMzIgOC42MjUgNy41IDguNjI1QzYuODc4NjggOC42MjUgNi4zNzUgOC4xMjEzMiA2LjM3NSA3LjVDNi4zNzUgNi44Nzg2OCA2Ljg3ODY4IDYuMzc1IDcuNSA2LjM3NUM4LjEyMTMyIDYuMzc1IDguNjI1IDYuODc4NjggOC42MjUgNy41Wk03LjUgMTMuNjI1QzguMTIxMzIgMTMuNjI1IDguNjI1IDEzLjEyMTMgOC42MjUgMTIuNUM4LjYyNSAxMS44Nzg3IDguMTIxMzIgMTEuMzc1IDcuNSAxMS4zNzVDNi44Nzg2OCAxMS4zNzUgNi4zNzUgMTEuODc4NyA2LjM3NSAxMi41QzYuMzc1IDEzLjEyMTMgNi44Nzg2OCAxMy42MjUgNy41IDEzLjYyNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG50PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjg1MzU1IDIuMTQ2NDVDMy42NTgyOSAxLjk1MTE4IDMuMzQxNzEgMS45NTExOCAzLjE0NjQ1IDIuMTQ2NDVDMi45NTExOCAyLjM0MTcxIDIuOTUxMTggMi42NTgyOSAzLjE0NjQ1IDIuODUzNTVMNy4xNDY0NSA2Ljg1MzU1QzcuMzQxNzEgNy4wNDg4MiA3LjY1ODI5IDcuMDQ4ODIgNy44NTM1NSA2Ljg1MzU1TDExLjg1MzYgMi44NTM1NUMxMi4wNDg4IDIuNjU4MjkgMTIuMDQ4OCAyLjM0MTcxIDExLjg1MzYgMi4xNDY0NUMxMS42NTgzIDEuOTUxMTggMTEuMzQxNyAxLjk1MTE4IDExLjE0NjQgMi4xNDY0NUw3LjUgNS43OTI4OUwzLjg1MzU1IDIuMTQ2NDVaTTMuODUzNTUgOC4xNDY0NUMzLjY1ODI5IDcuOTUxMTggMy4zNDE3MSA3Ljk1MTE4IDMuMTQ2NDUgOC4xNDY0NUMyLjk1MTE4IDguMzQxNzEgMi45NTExOCA4LjY1ODI5IDMuMTQ2NDUgOC44NTM1NUw3LjE0NjQ1IDEyLjg1MzZDNy4zNDE3MSAxMy4wNDg4IDcuNjU4MjkgMTMuMDQ4OCA3Ljg1MzU1IDEyLjg1MzZMMTEuODUzNiA4Ljg1MzU1QzEyLjA0ODggOC42NTgyOSAxMi4wNDg4IDguMzQxNzEgMTEuODUzNiA4LjE0NjQ1QzExLjY1ODMgNy45NTExOCAxMS4zNDE3IDcuOTUxMTggMTEuMTQ2NCA4LjE0NjQ1TDcuNSAxMS43OTI5TDMuODUzNTUgOC4xNDY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHJ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02Ljg1MzU1IDMuODUzNTVDNy4wNDg4MiAzLjY1ODI5IDcuMDQ4ODIgMy4zNDE3MSA2Ljg1MzU1IDMuMTQ2NDVDNi42NTgyOSAyLjk1MTE4IDYuMzQxNzEgMi45NTExOCA2LjE0NjQ1IDMuMTQ2NDVMMi4xNDY0NSA3LjE0NjQ1QzEuOTUxMTggNy4zNDE3MSAxLjk1MTE4IDcuNjU4MjkgMi4xNDY0NSA3Ljg1MzU1TDYuMTQ2NDUgMTEuODUzNkM2LjM0MTcxIDEyLjA0ODggNi42NTgyOSAxMi4wNDg4IDYuODUzNTUgMTEuODUzNkM3LjA0ODgyIDExLjY1ODMgNy4wNDg4MiAxMS4zNDE3IDYuODUzNTUgMTEuMTQ2NEwzLjIwNzExIDcuNUw2Ljg1MzU1IDMuODUzNTVaTTEyLjg1MzYgMy44NTM1NUMxMy4wNDg4IDMuNjU4MjkgMTMuMDQ4OCAzLjM0MTcxIDEyLjg1MzYgMy4xNDY0NUMxMi42NTgzIDIuOTUxMTggMTIuMzQxNyAyLjk1MTE4IDEyLjE0NjQgMy4xNDY0NUw4LjE0NjQ1IDcuMTQ2NDVDNy45NTExOCA3LjM0MTcxIDcuOTUxMTggNy42NTgyOSA4LjE0NjQ1IDcuODUzNTVMMTIuMTQ2NCAxMS44NTM2QzEyLjM0MTcgMTIuMDQ4OCAxMi42NTgzIDEyLjA0ODggMTIuODUzNiAxMS44NTM2QzEzLjA0ODggMTEuNjU4MyAxMy4wNDg4IDExLjM0MTcgMTIuODUzNiAxMS4xNDY0TDkuMjA3MTEgNy41TDEyLjg1MzYgMy44NTM1NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG90PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjE0NjQ1IDExLjE0NjRDMS45NTExOCAxMS4zNDE3IDEuOTUxMTggMTEuNjU4MyAyLjE0NjQ1IDExLjg1MzZDMi4zNDE3MSAxMi4wNDg4IDIuNjU4MjkgMTIuMDQ4OCAyLjg1MzU1IDExLjg1MzZMNi44NTM1NSA3Ljg1MzU1QzcuMDQ4ODIgNy42NTgyOSA3LjA0ODgyIDcuMzQxNzEgNi44NTM1NSA3LjE0NjQ1TDIuODUzNTUgMy4xNDY0NUMyLjY1ODI5IDIuOTUxMTggMi4zNDE3MSAyLjk1MTE4IDIuMTQ2NDUgMy4xNDY0NUMxLjk1MTE4IDMuMzQxNzEgMS45NTExOCAzLjY1ODI5IDIuMTQ2NDUgMy44NTM1NUw1Ljc5Mjg5IDcuNUwyLjE0NjQ1IDExLjE0NjRaTTguMTQ2NDUgMTEuMTQ2NEM3Ljk1MTE4IDExLjM0MTcgNy45NTExOCAxMS42NTgzIDguMTQ2NDUgMTEuODUzNkM4LjM0MTcxIDEyLjA0ODggOC42NTgyOSAxMi4wNDg4IDguODUzNTUgMTEuODUzNkwxMi44NTM2IDcuODUzNTVDMTMuMDQ4OCA3LjY1ODI5IDEzLjA0ODggNy4zNDE3MSAxMi44NTM2IDcuMTQ2NDVMOC44NTM1NSAzLjE0NjQ1QzguNjU4MjkgMi45NTExOCA4LjM0MTcxIDIuOTUxMTggOC4xNDY0NSAzLjE0NjQ1QzcuOTUxMTggMy4zNDE3MSA3Ljk1MTE4IDMuNjU4MjkgOC4xNDY0NSAzLjg1MzU1TDExLjc5MjkgNy41TDguMTQ2NDUgMTEuMTQ2NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGl0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS4xNDY0IDYuODUzNTVDMTEuMzQxNyA3LjA0ODgyIDExLjY1ODMgNy4wNDg4MiAxMS44NTM2IDYuODUzNTVDMTIuMDQ4OCA2LjY1ODI5IDEyLjA0ODggNi4zNDE3MSAxMS44NTM2IDYuMTQ2NDVMNy44NTM1NSAyLjE0NjQ1QzcuNjU4MjkgMS45NTExOCA3LjM0MTcxIDEuOTUxMTggNy4xNDY0NSAyLjE0NjQ1TDMuMTQ2NDUgNi4xNDY0NUMyLjk1MTE4IDYuMzQxNzEgMi45NTExOCA2LjY1ODI5IDMuMTQ2NDUgNi44NTM1NUMzLjM0MTcxIDcuMDQ4ODIgMy42NTgyOSA3LjA0ODgyIDMuODUzNTUgNi44NTM1NUw3LjUgMy4yMDcxMUwxMS4xNDY0IDYuODUzNTVaTTExLjE0NjQgMTIuODUzNkMxMS4zNDE3IDEzLjA0ODggMTEuNjU4MyAxMy4wNDg4IDExLjg1MzYgMTIuODUzNkMxMi4wNDg4IDEyLjY1ODMgMTIuMDQ4OCAxMi4zNDE3IDExLjg1MzYgMTIuMTQ2NEw3Ljg1MzU1IDguMTQ2NDVDNy42NTgyOSA3Ljk1MTE4IDcuMzQxNzEgNy45NTExOCA3LjE0NjQ1IDguMTQ2NDVMMy4xNDY0NSAxMi4xNDY0QzIuOTUxMTggMTIuMzQxNyAyLjk1MTE4IDEyLjY1ODMgMy4xNDY0NSAxMi44NTM2QzMuMzQxNzEgMTMuMDQ4OCAzLjY1ODI5IDEzLjA0ODggMy44NTM1NSAxMi44NTM2TDcuNSA5LjIwNzExTDExLjE0NjQgMTIuODUzNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGF0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUwMDA1IDEuMDQ5OTlDNy43NDg1OCAxLjA0OTk5IDcuOTUwMDUgMS4yNTE0NiA3Ljk1MDA1IDEuNDk5OTlWOC40MTM1OUwxMC4xODE5IDYuMTgxNzlDMTAuMzU3NiA2LjAwNjA1IDEwLjY0MjUgNi4wMDYwNSAxMC44MTgyIDYuMTgxNzlDMTAuOTk0IDYuMzU3NTMgMTAuOTk0IDYuNjQyNDUgMTAuODE4MiA2LjgxODE5TDcuODE4MjUgOS44MTgxOUM3LjY0MjUxIDkuOTkzOTIgNy4zNTc1OSA5Ljk5MzkyIDcuMTgxODUgOS44MTgxOUw0LjE4MTg1IDYuODE4MTlDNC4wMDYxMSA2LjY0MjQ1IDQuMDA2MTEgNi4zNTc1MyA0LjE4MTg1IDYuMTgxNzlDNC4zNTc1OSA2LjAwNjA1IDQuNjQyNTEgNi4wMDYwNSA0LjgxODI1IDYuMTgxNzlMNy4wNTAwNSA4LjQxMzU5VjEuNDk5OTlDNy4wNTAwNSAxLjI1MTQ2IDcuMjUxNTIgMS4wNDk5OSA3LjUwMDA1IDEuMDQ5OTlaTTIuNSAxMEMyLjc3NjE0IDEwIDMgMTAuMjIzOSAzIDEwLjVWMTJDMyAxMi41NTM5IDMuNDQ1NjUgMTMgMy45OTYzNSAxM0gxMS4wMDEyQzExLjU1MjkgMTMgMTIgMTIuNTUyOCAxMiAxMlYxMC41QzEyIDEwLjIyMzkgMTIuMjIzOSAxMCAxMi41IDEwQzEyLjc3NjEgMTAgMTMgMTAuMjIzOSAxMyAxMC41VjEyQzEzIDEzLjEwNDEgMTIuMTA2MiAxNCAxMS4wMDEyIDE0SDMuOTk2MzVDMi44OTAxOSAxNCAyIDEzLjEwMyAyIDEyVjEwLjVDMiAxMC4yMjM5IDIuMjIzODYgMTAgMi41IDEwWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNC41XCIsY3k6XCIyLjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNC41XCIsY3k6XCI0LjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNC41XCIsY3k6XCI2LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI0LjVcIixjeTpcIjguNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjQuNVwiLGN5OlwiMTAuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjQuNVwiLGN5OlwiMTIuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjYuNVwiLGN5OlwiMi41XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjYuNVwiLGN5OlwiNC41XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjYuNVwiLGN5OlwiNi40OTlcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiNi41XCIsY3k6XCI4LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI2LjVcIixjeTpcIjEwLjQ5OFwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI2LjVcIixjeTpcIjEyLjQ5OFwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI4LjQ5OVwiLGN5OlwiMi41XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjguNDk5XCIsY3k6XCI0LjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiOC40OTlcIixjeTpcIjYuNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjguNDk5XCIsY3k6XCI4LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCI4LjQ5OVwiLGN5OlwiMTAuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjguNDk5XCIsY3k6XCIxMi40OThcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiMTAuNDk5XCIsY3k6XCIyLjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiMTAuNDk5XCIsY3k6XCI0LjVcIixyOlwiLjZcIixmaWxsOm59KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwiY2lyY2xlXCIse2N4OlwiMTAuNDk5XCIsY3k6XCI2LjQ5OVwiLHI6XCIuNlwiLGZpbGw6bn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJjaXJjbGVcIix7Y3g6XCIxMC40OTlcIixjeTpcIjguNDk5XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjEwLjQ5OVwiLGN5OlwiMTAuNDk4XCIscjpcIi42XCIsZmlsbDpufSksKDAsci5jcmVhdGVFbGVtZW50KShcImNpcmNsZVwiLHtjeDpcIjEwLjQ5OVwiLGN5OlwiMTIuNDk4XCIscjpcIi42XCIsZmlsbDpufSkpfSxjdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS41IDQuNjI1QzYuMTIxMzIgNC42MjUgNi42MjUgNC4xMjEzMiA2LjYyNSAzLjVDNi42MjUgMi44Nzg2OCA2LjEyMTMyIDIuMzc1IDUuNSAyLjM3NUM0Ljg3ODY4IDIuMzc1IDQuMzc1IDIuODc4NjggNC4zNzUgMy41QzQuMzc1IDQuMTIxMzIgNC44Nzg2OCA0LjYyNSA1LjUgNC42MjVaTTkuNSA0LjYyNUMxMC4xMjEzIDQuNjI1IDEwLjYyNSA0LjEyMTMyIDEwLjYyNSAzLjVDMTAuNjI1IDIuODc4NjggMTAuMTIxMyAyLjM3NSA5LjUgMi4zNzVDOC44Nzg2OCAyLjM3NSA4LjM3NSAyLjg3ODY4IDguMzc1IDMuNUM4LjM3NSA0LjEyMTMyIDguODc4NjggNC42MjUgOS41IDQuNjI1Wk0xMC42MjUgNy41QzEwLjYyNSA4LjEyMTMyIDEwLjEyMTMgOC42MjUgOS41IDguNjI1QzguODc4NjggOC42MjUgOC4zNzUgOC4xMjEzMiA4LjM3NSA3LjVDOC4zNzUgNi44Nzg2OCA4Ljg3ODY4IDYuMzc1IDkuNSA2LjM3NUMxMC4xMjEzIDYuMzc1IDEwLjYyNSA2Ljg3ODY4IDEwLjYyNSA3LjVaTTUuNSA4LjYyNUM2LjEyMTMyIDguNjI1IDYuNjI1IDguMTIxMzIgNi42MjUgNy41QzYuNjI1IDYuODc4NjggNi4xMjEzMiA2LjM3NSA1LjUgNi4zNzVDNC44Nzg2OCA2LjM3NSA0LjM3NSA2Ljg3ODY4IDQuMzc1IDcuNUM0LjM3NSA4LjEyMTMyIDQuODc4NjggOC42MjUgNS41IDguNjI1Wk0xMC42MjUgMTEuNUMxMC42MjUgMTIuMTIxMyAxMC4xMjEzIDEyLjYyNSA5LjUgMTIuNjI1QzguODc4NjggMTIuNjI1IDguMzc1IDEyLjEyMTMgOC4zNzUgMTEuNUM4LjM3NSAxMC44Nzg3IDguODc4NjggMTAuMzc1IDkuNSAxMC4zNzVDMTAuMTIxMyAxMC4zNzUgMTAuNjI1IDEwLjg3ODcgMTAuNjI1IDExLjVaTTUuNSAxMi42MjVDNi4xMjEzMiAxMi42MjUgNi42MjUgMTIuMTIxMyA2LjYyNSAxMS41QzYuNjI1IDEwLjg3ODcgNi4xMjEzMiAxMC4zNzUgNS41IDEwLjM3NUM0Ljg3ODY4IDEwLjM3NSA0LjM3NSAxMC44Nzg3IDQuMzc1IDExLjVDNC4zNzUgMTIuMTIxMyA0Ljg3ODY4IDEyLjYyNSA1LjUgMTIuNjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sc3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuNDk5OTggNC4wOTk5OEMyLjI3OTA2IDQuMDk5OTggMi4wOTk5OCA0LjI3OTA2IDIuMDk5OTggNC40OTk5OEMyLjA5OTk4IDQuNzIwODkgMi4yNzkwNiA0Ljg5OTk4IDIuNDk5OTggNC44OTk5OEgxMi41QzEyLjcyMDkgNC44OTk5OCAxMi45IDQuNzIwODkgMTIuOSA0LjQ5OTk4QzEyLjkgNC4yNzkwNiAxMi43MjA5IDQuMDk5OTggMTIuNSA0LjA5OTk4SDIuNDk5OThaTTIuNDk5OTggNi4wOTk5OEMyLjI3OTA2IDYuMDk5OTggMi4wOTk5OCA2LjI3OTA2IDIuMDk5OTggNi40OTk5OEMyLjA5OTk4IDYuNzIwODkgMi4yNzkwNiA2Ljg5OTk4IDIuNDk5OTggNi44OTk5OEgxMi41QzEyLjcyMDkgNi44OTk5OCAxMi45IDYuNzIwODkgMTIuOSA2LjQ5OTk4QzEyLjkgNi4yNzkwNiAxMi43MjA5IDYuMDk5OTggMTIuNSA2LjA5OTk4SDIuNDk5OThaTTIuMDk5OTggOC40OTk5OEMyLjA5OTk4IDguMjc5MDYgMi4yNzkwNiA4LjA5OTk4IDIuNDk5OTggOC4wOTk5OEgxMi41QzEyLjcyMDkgOC4wOTk5OCAxMi45IDguMjc5MDYgMTIuOSA4LjQ5OTk4QzEyLjkgOC43MjA4OSAxMi43MjA5IDguODk5OTggMTIuNSA4Ljg5OTk4SDIuNDk5OThDMi4yNzkwNiA4Ljg5OTk4IDIuMDk5OTggOC43MjA4OSAyLjA5OTk4IDguNDk5OThaTTIuNDk5OTggMTAuMUMyLjI3OTA2IDEwLjEgMi4wOTk5OCAxMC4yNzkxIDIuMDk5OTggMTAuNUMyLjA5OTk4IDEwLjcyMDkgMi4yNzkwNiAxMC45IDIuNDk5OTggMTAuOUgxMi41QzEyLjcyMDkgMTAuOSAxMi45IDEwLjcyMDkgMTIuOSAxMC41QzEyLjkgMTAuMjc5MSAxMi43MjA5IDEwLjEgMTIuNSAxMC4xSDIuNDk5OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx1dD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC4wOTk5OCAxMi41QzQuMDk5OTggMTIuNzIwOSA0LjI3OTA2IDEyLjkgNC40OTk5OCAxMi45QzQuNzIwODkgMTIuOSA0Ljg5OTk4IDEyLjcyMDkgNC44OTk5OCAxMi41TDQuODk5OTggMi41MDAwMkM0Ljg5OTk4IDIuMjc5MTEgNC43MjA4OSAyLjEwMDAzIDQuNDk5OTggMi4xMDAwM0M0LjI3OTA2IDIuMTAwMDMgNC4wOTk5OCAyLjI3OTExIDQuMDk5OTggMi41MDAwMkw0LjA5OTk4IDEyLjVaTTYuMDk5OTggMTIuNUM2LjA5OTk4IDEyLjcyMDkgNi4yNzkwNiAxMi45IDYuNDk5OTggMTIuOUM2LjcyMDg5IDEyLjkgNi44OTk5OCAxMi43MjA5IDYuODk5OTggMTIuNUw2Ljg5OTk4IDIuNTAwMDJDNi44OTk5OCAyLjI3OTExIDYuNzIwODkgMi4xMDAwMyA2LjQ5OTk4IDIuMTAwMDNDNi4yNzkwNiAyLjEwMDAzIDYuMDk5OTggMi4yNzkxMSA2LjA5OTk4IDIuNTAwMDJMNi4wOTk5OCAxMi41Wk04LjQ5OTk4IDEyLjlDOC4yNzkwNiAxMi45IDguMDk5OTggMTIuNzIwOSA4LjA5OTk4IDEyLjVMOC4wOTk5OCAyLjUwMDAyQzguMDk5OTggMi4yNzkxMSA4LjI3OTA2IDIuMTAwMDIgOC40OTk5OCAyLjEwMDAyQzguNzIwODkgMi4xMDAwMiA4Ljg5OTk4IDIuMjc5MTEgOC44OTk5OCAyLjUwMDAyTDguODk5OTggMTIuNUM4Ljg5OTk4IDEyLjcyMDkgOC43MjA4OSAxMi45IDguNDk5OTggMTIuOVpNMTAuMSAxMi41QzEwLjEgMTIuNzIwOSAxMC4yNzkxIDEyLjkgMTAuNSAxMi45QzEwLjcyMDkgMTIuOSAxMC45IDEyLjcyMDkgMTAuOSAxMi41TDEwLjkgMi41MDAwMkMxMC45IDIuMjc5MTEgMTAuNzIwOSAyLjEwMDAyIDEwLjUgMi4xMDAwMkMxMC4yNzkxIDIuMTAwMDIgMTAuMSAyLjI3OTExIDEwLjEgMi41MDAwMkwxMC4xIDEyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxkdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAuMzI4NSAxLjEzNjA3QzEwLjEzMzIgMC45NDA4MDkgOS44MTY2MiAwLjk0MDgwOCA5LjYyMTM2IDEuMTM2MDdDOS40MjYwOSAxLjMzMTMzIDkuNDI2MDkgMS42NDc5MiA5LjYyMTM2IDEuODQzMThMMTAuMjc0NCAyLjQ5NjE5TDUuNDI1NjMgNi4xMzI3NEw0LjMxODA1IDUuMDI1MTZDNC4xMjI3OSA0LjgyOTkgMy44MDYyMSA0LjgyOTkgMy42MTA5NSA1LjAyNTE2QzMuNDE1NjkgNS4yMjA0MiAzLjQxNTY5IDUuNTM3IDMuNjEwOTUgNS43MzIyNkw1LjAyNTE2IDcuMTQ2NDhMNi4wODU4MiA4LjIwNzE0TDIuODE1NDUgMTEuNDc3NUMyLjYyMDE5IDExLjY3MjggMi42MjAxOSAxMS45ODk0IDIuODE1NDUgMTIuMTg0NkMzLjAxMDcyIDEyLjM3OTkgMy4zMjczIDEyLjM3OTkgMy41MjI1NiAxMi4xODQ2TDYuNzkyOTMgOC45MTQyNUw3Ljg1MzU5IDkuOTc0OTFMOS4yNjc4IDExLjM4OTFDOS40NjMwNiAxMS41ODQ0IDkuNzc5NjUgMTEuNTg0NCA5Ljk3NDkxIDExLjM4OTFDMTAuMTcwMiAxMS4xOTM5IDEwLjE3MDIgMTAuODc3MyA5Ljk3NDkxIDEwLjY4Mkw4Ljg2NzMzIDkuNTc0NDNMMTIuNTAzOSA0LjcyNTdMMTMuMTU2OSA1LjM3ODcxQzEzLjM1MjIgNS41NzM5NyAxMy42Njg3IDUuNTczOTcgMTMuODY0IDUuMzc4NzFDMTQuMDU5MyA1LjE4MzQ1IDE0LjA1OTMgNC44NjY4NyAxMy44NjQgNC42NzE2TDEyLjgwMzMgMy42MTA5NEwxMS4zODkxIDIuMTk2NzNMMTAuMzI4NSAxLjEzNjA3Wk02LjEzOTkyIDYuODQ3MDJMMTAuOTg4NyAzLjIxMDQ3TDExLjc4OTYgNC4wMTE0Mkw4LjE1MzA1IDguODYwMTVMNi4xMzk5MiA2Ljg0NzAyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuNjIxMjkgMS4xMzYwN0M5LjgxNjU2IDAuOTQwODA4IDEwLjEzMzEgMC45NDA4MDkgMTAuMzI4NCAxLjEzNjA3TDExLjM4OTEgMi4xOTY3M0wxMi44MDMzIDMuNjEwOTRMMTMuODYzOSA0LjY3MTZDMTQuMDU5MiA0Ljg2Njg3IDE0LjA1OTIgNS4xODM0NSAxMy44NjM5IDUuMzc4NzFDMTMuNjY4NyA1LjU3Mzk3IDEzLjM1MjEgNS41NzM5NyAxMy4xNTY4IDUuMzc4NzFMMTIuNTAzOCA0LjcyNTdMOC44NjcyNyA5LjU3NDQzTDkuOTc0ODUgMTAuNjgyQzEwLjE3MDEgMTAuODc3MyAxMC4xNzAxIDExLjE5MzkgOS45NzQ4NSAxMS4zODkxQzkuNzc5NTkgMTEuNTg0NCA5LjQ2MyAxMS41ODQ0IDkuMjY3NzQgMTEuMzg5MUw3Ljg1MzUzIDkuOTc0OTFMNi43OTI4NyA4LjkxNDI1TDMuNTIyNSAxMi4xODQ2QzMuMzI3MjQgMTIuMzc5OSAzLjAxMDY1IDEyLjM3OTkgMi44MTUzOSAxMi4xODQ2QzIuNjIwMTMgMTEuOTg5NCAyLjYyMDEzIDExLjY3MjggMi44MTUzOSAxMS40Nzc1TDYuMDg1NzYgOC4yMDcxNEw1LjAyNTEgNy4xNDY0OEwzLjYxMDg5IDUuNzMyMjZDMy40MTU2MyA1LjUzNyAzLjQxNTYyIDUuMjIwNDIgMy42MTA4OSA1LjAyNTE2QzMuODA2MTUgNC44Mjk5IDQuMTIyNzMgNC44Mjk5IDQuMzE3OTkgNS4wMjUxNkw1LjQyNTU3IDYuMTMyNzRMMTAuMjc0MyAyLjQ5NjE5TDkuNjIxMjkgMS44NDMxOEM5LjQyNjAzIDEuNjQ3OTIgOS40MjYwMyAxLjMzMTMzIDkuNjIxMjkgMS4xMzYwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkuNjIxMjkgMS4xMzYwN0M5LjgxNjU2IDAuOTQwODA4IDEwLjEzMzEgMC45NDA4MDkgMTAuMzI4NCAxLjEzNjA3TDExLjM4OTEgMi4xOTY3M0wxMi44MDMzIDMuNjEwOTRMMTMuODYzOSA0LjY3MTZDMTQuMDU5MiA0Ljg2Njg3IDE0LjA1OTIgNS4xODM0NSAxMy44NjM5IDUuMzc4NzFDMTMuNjY4NyA1LjU3Mzk3IDEzLjM1MjEgNS41NzM5NyAxMy4xNTY4IDUuMzc4NzFMMTIuNTAzOCA0LjcyNTdMOC44NjcyNyA5LjU3NDQzTDkuOTc0ODUgMTAuNjgyQzEwLjE3MDEgMTAuODc3MyAxMC4xNzAxIDExLjE5MzkgOS45NzQ4NSAxMS4zODkxQzkuNzc5NTkgMTEuNTg0NCA5LjQ2MyAxMS41ODQ0IDkuMjY3NzQgMTEuMzg5MUw3Ljg1MzUzIDkuOTc0OTFMNi43OTI4NyA4LjkxNDI1TDMuNTIyNSAxMi4xODQ2QzMuMzI3MjQgMTIuMzc5OSAzLjAxMDY1IDEyLjM3OTkgMi44MTUzOSAxMi4xODQ2QzIuNjIwMTMgMTEuOTg5NCAyLjYyMDEzIDExLjY3MjggMi44MTUzOSAxMS40Nzc1TDYuMDg1NzYgOC4yMDcxNEw1LjAyNTEgNy4xNDY0OEwzLjYxMDg5IDUuNzMyMjZDMy40MTU2MyA1LjUzNyAzLjQxNTYyIDUuMjIwNDIgMy42MTA4OSA1LjAyNTE2QzMuODA2MTUgNC44Mjk5IDQuMTIyNzMgNC44Mjk5IDQuMzE3OTkgNS4wMjUxNkw1LjQyNTU3IDYuMTMyNzRMMTAuMjc0MyAyLjQ5NjE5TDkuNjIxMjkgMS44NDMxOEM5LjQyNjAzIDEuNjQ3OTIgOS40MjYwMyAxLjMzMTMzIDkuNjIxMjkgMS4xMzYwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHB0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTk5IDMuMDk5OThDNy4yNzkwNyAzLjA5OTk4IDcuMDk5OTkgMy4yNzkwNiA3LjA5OTk5IDMuNDk5OThDNy4wOTk5OSAzLjcyMDg5IDcuMjc5MDcgMy44OTk5OCA3LjQ5OTk5IDMuODk5OThIMTQuNUMxNC43MjA5IDMuODk5OTggMTQuOSAzLjcyMDg5IDE0LjkgMy40OTk5OEMxNC45IDMuMjc5MDYgMTQuNzIwOSAzLjA5OTk4IDE0LjUgMy4wOTk5OEg3LjQ5OTk5Wk03LjQ5OTk4IDUuMUM3LjI3OTA3IDUuMSA3LjA5OTk4IDUuMjc5MDggNy4wOTk5OCA1LjVDNy4wOTk5OCA1LjcyMDkxIDcuMjc5MDcgNS45IDcuNDk5OTggNS45SDE0LjVDMTQuNzIwOSA1LjkgMTQuOSA1LjcyMDkxIDE0LjkgNS41QzE0LjkgNS4yNzkwOCAxNC43MjA5IDUuMSAxNC41IDUuMUg3LjQ5OTk4Wk03LjEgNy41QzcuMSA3LjI3OTA4IDcuMjc5MDkgNy4xIDcuNSA3LjFIMTQuNUMxNC43MjA5IDcuMSAxNC45IDcuMjc5MDggMTQuOSA3LjVDMTQuOSA3LjcyMDkxIDE0LjcyMDkgNy45IDE0LjUgNy45SDcuNUM3LjI3OTA5IDcuOSA3LjEgNy43MjA5MSA3LjEgNy41Wk03LjQ5OTk4IDkuMUM3LjI3OTA3IDkuMSA3LjA5OTk4IDkuMjc5MDggNy4wOTk5OCA5LjVDNy4wOTk5OCA5LjcyMDkxIDcuMjc5MDcgOS45IDcuNDk5OTggOS45SDE0LjVDMTQuNzIwOSA5LjkgMTQuOSA5LjcyMDkxIDE0LjkgOS41QzE0LjkgOS4yNzkwOCAxNC43MjA5IDkuMSAxNC41IDkuMUg3LjQ5OTk4Wk03LjA5OTk4IDExLjVDNy4wOTk5OCAxMS4yNzkxIDcuMjc5MDcgMTEuMSA3LjQ5OTk4IDExLjFIMTQuNUMxNC43MjA5IDExLjEgMTQuOSAxMS4yNzkxIDE0LjkgMTEuNUMxNC45IDExLjcyMDkgMTQuNzIwOSAxMS45IDE0LjUgMTEuOUg3LjQ5OTk4QzcuMjc5MDcgMTEuOSA3LjA5OTk4IDExLjcyMDkgNy4wOTk5OCAxMS41Wk0yLjUgOS4yNTAwM0w1IDYuMDAwMDNIMEwyLjUgOS4yNTAwM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEN0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjUgMUM0LjIyMzg2IDEgNCAxLjIyMzg2IDQgMS41QzQgMS43NzYxNCA0LjIyMzg2IDIgNC41IDJIMTJWMTNINC41QzQuMjIzODYgMTMgNCAxMy4yMjM5IDQgMTMuNUM0IDEzLjc3NjEgNC4yMjM4NiAxNCA0LjUgMTRIMTJDMTIuNTUyMyAxNCAxMyAxMy41NTIzIDEzIDEzVjJDMTMgMS40NDc3MiAxMi41NTIzIDEgMTIgMUg0LjVaTTYuNjAzNTUgNC44OTY0NUM2LjQwODI5IDQuNzAxMTggNi4wOTE3MSA0LjcwMTE4IDUuODk2NDUgNC44OTY0NUM1LjcwMTE4IDUuMDkxNzEgNS43MDExOCA1LjQwODI5IDUuODk2NDUgNS42MDM1NUw3LjI5Mjg5IDdIMC41QzAuMjIzODU4IDcgMCA3LjIyMzg2IDAgNy41QzAgNy43NzYxNCAwLjIyMzg1OCA4IDAuNSA4SDcuMjkyODlMNS44OTY0NSA5LjM5NjQ1QzUuNzAxMTggOS41OTE3MSA1LjcwMTE4IDkuOTA4MjkgNS44OTY0NSAxMC4xMDM2QzYuMDkxNzEgMTAuMjk4OCA2LjQwODI5IDEwLjI5ODggNi42MDM1NSAxMC4xMDM2TDguODUzNTUgNy44NTM1NUM5LjA0ODgyIDcuNjU4MjkgOS4wNDg4MiA3LjM0MTcxIDguODUzNTUgNy4xNDY0NUw2LjYwMzU1IDQuODk2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxodD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiAyLjVDMiAyLjIyMzg2IDIuMjIzODYgMiAyLjUgMkg1LjVDNS43NzYxNCAyIDYgMi4yMjM4NiA2IDIuNUM2IDIuNzc2MTQgNS43NzYxNCAzIDUuNSAzSDNWNS41QzMgNS43NzYxNCAyLjc3NjE0IDYgMi41IDZDMi4yMjM4NiA2IDIgNS43NzYxNCAyIDUuNVYyLjVaTTkgMi41QzkgMi4yMjM4NiA5LjIyMzg2IDIgOS41IDJIMTIuNUMxMi43NzYxIDIgMTMgMi4yMjM4NiAxMyAyLjVWNS41QzEzIDUuNzc2MTQgMTIuNzc2MSA2IDEyLjUgNkMxMi4yMjM5IDYgMTIgNS43NzYxNCAxMiA1LjVWM0g5LjVDOS4yMjM4NiAzIDkgMi43NzYxNCA5IDIuNVpNMi41IDlDMi43NzYxNCA5IDMgOS4yMjM4NiAzIDkuNVYxMkg1LjVDNS43NzYxNCAxMiA2IDEyLjIyMzkgNiAxMi41QzYgMTIuNzc2MSA1Ljc3NjE0IDEzIDUuNSAxM0gyLjVDMi4yMjM4NiAxMyAyIDEyLjc3NjEgMiAxMi41VjkuNUMyIDkuMjIzODYgMi4yMjM4NiA5IDIuNSA5Wk0xMi41IDlDMTIuNzc2MSA5IDEzIDkuMjIzODYgMTMgOS41VjEyLjVDMTMgMTIuNzc2MSAxMi43NzYxIDEzIDEyLjUgMTNIOS41QzkuMjIzODYgMTMgOSAxMi43NzYxIDkgMTIuNUM5IDEyLjIyMzkgOS4yMjM4NiAxMiA5LjUgMTJIMTJWOS41QzEyIDkuMjIzODYgMTIuMjIzOSA5IDEyLjUgOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHZ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDJDMC40NDc3MTUgMiAwIDIuNDQ3NzIgMCAzVjEyQzAgMTIuNTUyMyAwLjQ0NzcxNSAxMyAxIDEzSDE0QzE0LjU1MjMgMTMgMTUgMTIuNTUyMyAxNSAxMlYzQzE1IDIuNDQ3NzIgMTQuNTUyMyAyIDE0IDJIMVpNMSAzTDE0IDNWMy45MjQ5NEMxMy45MTc0IDMuOTI0ODYgMTMuODMzOCAzLjk0NzUxIDEzLjc1ODkgMy45OTUwNUw3LjUgNy45NjcwM0wxLjI0MTEyIDMuOTk1MDVDMS4xNjYyMSAzLjk0NzUxIDEuMDgyNiAzLjkyNDg2IDEgMy45MjQ5NFYzWk0xIDQuOTA3OTdWMTJIMTRWNC45MDc5N0w3Ljc0MTEyIDguODc5OTVDNy41OTM5NCA4Ljk3MzM1IDcuNDA2MDYgOC45NzMzNSA3LjI1ODg4IDguODc5OTVMMSA0LjkwNzk3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZ3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuOTQ3MjEgMC4xNjQ1OTRDNy42NjU2OSAwLjAyMzgyOTkgNy4zMzQzMSAwLjAyMzgzMDIgNy4wNTI3OSAwLjE2NDU5NEwwLjU1Mjc4NiAzLjQxNDU5QzAuMjE0MDAyIDMuNTgzOTkgMCAzLjkzMDI1IDAgNC4zMDkwMlYxMkMwIDEyLjU1MjMgMC40NDc3MTUgMTMgMSAxM0gxNEMxNC41NTIzIDEzIDE1IDEyLjU1MjMgMTUgMTJWNC4zMDkwMkMxNSAzLjkzMDI1IDE0Ljc4NiAzLjU4Mzk5IDE0LjQ0NzIgMy40MTQ1OUw3Ljk0NzIxIDAuMTY0NTk0Wk0xMy41Njg5IDQuMDkzNDlMNy41IDEuMDU5MDJMMS40MzEwNSA0LjA5MzQ5TDcuNSA3LjI5MTM2TDEzLjU2ODkgNC4wOTM0OVpNMSA0Ljg4MzY2VjEySDE0VjQuODgzNjZMNy43MDk3NyA4LjE5ODEzQzcuNTc4NDggOC4yNjczMSA3LjQyMTUyIDguMjY3MzEgNy4yOTAyMyA4LjE5ODEzTDEgNC44ODM2NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG10PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjQ0NDkgMC42MDg3NjVDOC4wMTgzIC0wLjEwNzAxNSA2Ljk4MTcgLTAuMTA3MDE1IDYuNTU1MDkgMC42MDg3NjZMMC4xNjExNzggMTEuMzM2OEMtMC4yNzU4MjQgMTIuMDcgMC4yNTI1MDMgMTMgMS4xMDYwOCAxM0gxMy44OTM5QzE0Ljc0NzUgMTMgMTUuMjc1OCAxMi4wNyAxNC44Mzg4IDExLjMzNjhMOC40NDQ5IDAuNjA4NzY1Wk03LjQxNDEgMS4xMjA3M0M3LjQ1Mjg4IDEuMDU1NjYgNy41NDcxMiAxLjA1NTY2IDcuNTg1OSAxLjEyMDczTDEzLjk3OTggMTEuODQ4OEMxNC4wMTk2IDExLjkxNTQgMTMuOTcxNSAxMiAxMy44OTM5IDEySDEuMTA2MDhDMS4wMjg0OSAxMiAwLjk4MDQ1NCAxMS45MTU0IDEuMDIwMTggMTEuODQ4OEw3LjQxNDEgMS4xMjA3M1pNNi44MjY5IDQuNDg2MTFDNi44MTIyMSA0LjEwNDIzIDcuMTE3ODMgMy43ODY2MyA3LjUgMy43ODY2M0M3Ljg4MjE3IDMuNzg2NjMgOC4xODc3OCA0LjEwNDIzIDguMTczMSA0LjQ4NjEyTDguMDE5MjEgOC40ODcwMUM4LjAwODQ4IDguNzY2IDcuNzc5MiA4Ljk4NjY0IDcuNSA4Ljk4NjY0QzcuMjIwOCA4Ljk4NjY0IDYuOTkxNTEgOC43NjYgNi45ODA3OCA4LjQ4NzAxTDYuODI2OSA0LjQ4NjExWk04LjI0OTg5IDEwLjQ3NkM4LjI0OTg5IDEwLjg5MDIgNy45MTQxIDExLjIyNiA3LjQ5OTg5IDExLjIyNkM3LjA4NTY3IDExLjIyNiA2Ljc0OTg5IDEwLjg5MDIgNi43NDk4OSAxMC40NzZDNi43NDk4OSAxMC4wNjE4IDcuMDg1NjcgOS43MjU5OSA3LjQ5OTg5IDkuNzI1OTlDNy45MTQxIDkuNzI1OTkgOC4yNDk4OSAxMC4wNjE4IDguMjQ5ODkgMTAuNDc2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sd3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgMUMyLjQ0NzcxIDEgMiAxLjQ0NzcyIDIgMlYxM0MyIDEzLjU1MjMgMi40NDc3MiAxNCAzIDE0SDEwLjVDMTAuNzc2MSAxNCAxMSAxMy43NzYxIDExIDEzLjVDMTEgMTMuMjIzOSAxMC43NzYxIDEzIDEwLjUgMTNIM1YyTDEwLjUgMkMxMC43NzYxIDIgMTEgMS43NzYxNCAxMSAxLjVDMTEgMS4yMjM4NiAxMC43NzYxIDEgMTAuNSAxSDNaTTEyLjYwMzYgNC44OTY0NUMxMi40MDgzIDQuNzAxMTggMTIuMDkxNyA0LjcwMTE4IDExLjg5NjQgNC44OTY0NUMxMS43MDEyIDUuMDkxNzEgMTEuNzAxMiA1LjQwODI5IDExLjg5NjQgNS42MDM1NUwxMy4yOTI5IDdINi41QzYuMjIzODYgNyA2IDcuMjIzODYgNiA3LjVDNiA3Ljc3NjE0IDYuMjIzODYgOCA2LjUgOEgxMy4yOTI5TDExLjg5NjQgOS4zOTY0NUMxMS43MDEyIDkuNTkxNzEgMTEuNzAxMiA5LjkwODI5IDExLjg5NjQgMTAuMTAzNkMxMi4wOTE3IDEwLjI5ODggMTIuNDA4MyAxMC4yOTg4IDEyLjYwMzYgMTAuMTAzNkwxNC44NTM2IDcuODUzNTVDMTUuMDQ4OCA3LjY1ODI5IDE1LjA0ODggNy4zNDE3MSAxNC44NTM2IDcuMTQ2NDVMMTIuNjAzNiA0Ljg5NjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNSAyQzUuNzc2MTQgMiA2IDIuMjIzODYgNiAyLjVWNS41QzYgNS43NzYxNCA1Ljc3NjE0IDYgNS41IDZIMi41QzIuMjIzODYgNiAyIDUuNzc2MTQgMiA1LjVDMiA1LjIyMzg2IDIuMjIzODYgNSAyLjUgNUg1VjIuNUM1IDIuMjIzODYgNS4yMjM4NiAyIDUuNSAyWk05LjUgMkM5Ljc3NjE0IDIgMTAgMi4yMjM4NiAxMCAyLjVWNUgxMi41QzEyLjc3NjEgNSAxMyA1LjIyMzg2IDEzIDUuNUMxMyA1Ljc3NjE0IDEyLjc3NjEgNiAxMi41IDZIOS41QzkuMjIzODYgNiA5IDUuNzc2MTQgOSA1LjVWMi41QzkgMi4yMjM4NiA5LjIyMzg2IDIgOS41IDJaTTIgOS41QzIgOS4yMjM4NiAyLjIyMzg2IDkgMi41IDlINS41QzUuNzc2MTQgOSA2IDkuMjIzODYgNiA5LjVWMTIuNUM2IDEyLjc3NjEgNS43NzYxNCAxMyA1LjUgMTNDNS4yMjM4NiAxMyA1IDEyLjc3NjEgNSAxMi41VjEwSDIuNUMyLjIyMzg2IDEwIDIgOS43NzYxNCAyIDkuNVpNOSA5LjVDOSA5LjIyMzg2IDkuMjIzODYgOSA5LjUgOUgxMi41QzEyLjc3NjEgOSAxMyA5LjIyMzg2IDEzIDkuNUMxMyA5Ljc3NjE0IDEyLjc3NjEgMTAgMTIuNSAxMEgxMFYxMi41QzEwIDEyLjc3NjEgOS43NzYxNCAxMyA5LjUgMTNDOS4yMjM4NiAxMyA5IDEyLjc3NjEgOSAxMi41VjkuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGJ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zIDJDMi40NDc3MiAyIDIgMi40NDc3MiAyIDNWMTJDMiAxMi41NTIzIDIuNDQ3NzIgMTMgMyAxM0gxMkMxMi41NTIzIDEzIDEzIDEyLjU1MjMgMTMgMTJWOC41QzEzIDguMjIzODYgMTIuNzc2MSA4IDEyLjUgOEMxMi4yMjM5IDggMTIgOC4yMjM4NiAxMiA4LjVWMTJIM1YzTDYuNSAzQzYuNzc2MTQgMyA3IDIuNzc2MTQgNyAyLjVDNyAyLjIyMzg2IDYuNzc2MTQgMiA2LjUgMkgzWk0xMi44NTM2IDIuMTQ2NDVDMTIuOTAxNSAyLjE5NDM5IDEyLjkzNzcgMi4yNDk2NCAxMi45NjIxIDIuMzA4NjFDMTIuOTg2MSAyLjM2NjY5IDEyLjk5OTYgMi40MzAzIDEzIDIuNDk3TDEzIDIuNVYyLjUwMDQ5VjUuNUMxMyA1Ljc3NjE0IDEyLjc3NjEgNiAxMi41IDZDMTIuMjIzOSA2IDEyIDUuNzc2MTQgMTIgNS41VjMuNzA3MTFMNi44NTM1NSA4Ljg1MzU1QzYuNjU4MjkgOS4wNDg4MiA2LjM0MTcxIDkuMDQ4ODIgNi4xNDY0NSA4Ljg1MzU1QzUuOTUxMTggOC42NTgyOSA1Ljk1MTE4IDguMzQxNzEgNi4xNDY0NSA4LjE0NjQ1TDExLjI5MjkgM0g5LjVDOS4yMjM4NiAzIDkgMi43NzYxNCA5IDIuNUM5IDIuMjIzODYgOS4yMjM4NiAyIDkuNSAySDEyLjQ5OTlIMTIuNUMxMi41Njc4IDIgMTIuNjMyNCAyLjAxMzQ5IDEyLjY5MTQgMi4wMzc5NEMxMi43NTA0IDIuMDYyMzQgMTIuODA1NiAyLjA5ODUxIDEyLjg1MzYgMi4xNDY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHh0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNC43NjQ5IDYuMDc1OTVDMTQuOTk5MSA2LjIyMjMxIDE1LjA3MDMgNi41MzA3OCAxNC45MjM5IDYuNzY0OTVDMTQuNDg0OSA3LjQ2NzQyIDEzLjk2MzIgOC4xMDY0NCAxMy4zNzAyIDguNjYzMDRMMTQuNTcxMiA5Ljg2NDA1QzE0Ljc2NjQgMTAuMDU5MyAxNC43NjY0IDEwLjM3NTkgMTQuNTcxMiAxMC41NzEyQzE0LjM3NTkgMTAuNzY2NCAxNC4wNTkzIDEwLjc2NjQgMTMuODY0MSAxMC41NzEyTDEyLjYwMTEgOS4zMDgxNkMxMS44MDQ5IDkuOTAyODIgMTAuOTA4OSAxMC4zNjIxIDkuOTMzNzQgMTAuNjUxTDEwLjM4MyAxMi4zMjc2QzEwLjQ1NDQgMTIuNTk0NCAxMC4yOTYxIDEyLjg2ODUgMTAuMDI5NCAxMi45NEM5Ljc2MjY2IDEzLjAxMTUgOS40ODg1IDEyLjg1MzIgOS40MTcwMyAxMi41ODY0TDguOTU5MTYgMTAuODc3NUM4LjQ4NzQyIDEwLjk1OCA4LjAwMDM1IDEwLjk5OTkgNy41IDEwLjk5OTlDNi45OTk2NCAxMC45OTk5IDYuNTEyNTcgMTAuOTU4IDYuMDQwODIgMTAuODc3NUw1LjU4Mjk5IDEyLjU4NjRDNS41MTE1MyAxMi44NTMyIDUuMjM3MzcgMTMuMDExNSA0Ljk3MDYzIDEyLjk0QzQuNzAzOSAxMi44Njg1IDQuNTQ1NiAxMi41OTQ0IDQuNjE3MDYgMTIuMzI3N0w1LjA2NjI0IDEwLjY1MUM0LjA5MTExIDEwLjM2MjEgMy4xOTUwMyA5LjkwMjgxIDIuMzk4OSA5LjMwODE0TDEuMTM1OSAxMC41NzExQzAuOTQwNjM4IDEwLjc2NjQgMC42MjQwNTggMTAuNzY2NCAwLjQyODc5NyAxMC41NzExQzAuMjMzNTM3IDEwLjM3NTkgMC4yMzM1MzcgMTAuMDU5MyAwLjQyODc5NyA5Ljg2NDA0TDEuNjI5ODIgOC42NjMwMkMxLjAzNjgyIDguMTA2NDMgMC41MTUxMTMgNy40Njc0MiAwLjA3NjA2NzcgNi43NjQ5NUMtMC4wNzAyODY3IDYuNTMwNzggMC4wMDA4OTg1NDQgNi4yMjIzMSAwLjIzNTA2NCA2LjA3NTk1QzAuNDY5MjMgNS45Mjk2IDAuNzc3NzAzIDYuMDAwNzggMC45MjQwNTcgNi4yMzQ5NUMxLjQwMzU0IDcuMDAyMTIgMS45ODkgNy42ODA1NiAyLjY2MjMzIDguMjQyN0MyLjY3MzE1IDguMjUwOTYgMi42ODM3IDguMjU5NzEgMi42OTM5NyA4LjI2ODk3QzQuMDA4OTcgOS4zNTUyNyA1LjY1NTM2IDkuOTk5OSA3LjUgOS45OTk5QzEwLjMwNzggOS45OTk5IDEyLjY1NjMgOC41MDYyOSAxNC4wNzU5IDYuMjM0OTVDMTQuMjIyMyA2LjAwMDc4IDE0LjUzMDggNS45Mjk2IDE0Ljc2NDkgNi4wNzU5NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE90PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMy4zNTM2IDIuMzUzNTVDMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMS44NDE3MSAxMy4zNTM2IDEuNjQ2NDVDMTMuMTU4MyAxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMi42NDY0IDEuNjQ2NDVMMTAuNjgyOCAzLjYxMDEyQzkuNzA2NTIgMy4yMTY3MSA4LjYzNzU5IDMgNy41IDNDNC4zMDc4NiAzIDEuNjU2MzkgNC43MDYzOCAwLjA3NjAwMDIgNy4yMzUwMUMtMC4wMjUzMzM4IDcuMzk3MTUgLTAuMDI1MzMzNCA3LjYwMjg4IDAuMDc2MDAxNCA3Ljc2NTAxQzAuOTAyOTQ1IDkuMDg4MTIgMi4wMjMxNCAxMC4xODYxIDMuMzYwNjEgMTAuOTMyM0wxLjY0NjQ1IDEyLjY0NjRDMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTMuMTU4MyAxLjY0NjQ1IDEzLjM1MzZDMS44NDE3MSAxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAyLjM1MzU1IDEzLjM1MzZMNC4zMTcyMyAxMS4zODk5QzUuMjkzNDggMTEuNzgzMyA2LjM2MjQxIDEyIDcuNSAxMkMxMC42OTIxIDEyIDEzLjM0MzYgMTAuMjkzNiAxNC45MjQgNy43NjUwMUMxNS4wMjUzIDcuNjAyODggMTUuMDI1MyA3LjM5NzE1IDE0LjkyNCA3LjIzNTAxQzE0LjA5NzEgNS45MTE5IDEyLjk3NjkgNC44MTM5MSAxMS42Mzk0IDQuMDY3NzFMMTMuMzUzNiAyLjM1MzU1Wk05LjkwNDI4IDQuMzg4NjFDOS4xNTMzMiA0LjEzNjEgOC4zNDc1OSA0IDcuNSA0QzQuODAyODUgNCAyLjUyOTUyIDUuMzc4MTYgMS4wOTYyMiA3LjUwMDAxQzEuODcyODQgOC42NDk3IDIuODk2MDkgOS41ODEwNiA0LjA5OTc0IDEwLjE5MzFMOS45MDQyOCA0LjM4ODYxWk01LjA5NTcyIDEwLjYxMTRMMTAuOTAwMyA0LjgwNjg1QzEyLjEwMzkgNS40MTg5NCAxMy4xMjcyIDYuMzUwMzEgMTMuOTAzOCA3LjUwMDAxQzEyLjQ3MDUgOS42MjE4MyAxMC4xOTcxIDExIDcuNSAxMUM2LjY1MjQxIDExIDUuODQ2NjggMTAuODYzOSA1LjA5NTcyIDEwLjYxMTRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxMdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDExQzQuODAyODUgMTEgMi41Mjk1MiA5LjYyMTg0IDEuMDk2MjIgNy41MDAwMUMyLjUyOTUyIDUuMzc4MTYgNC44MDI4NSA0IDcuNSA0QzEwLjE5NzEgNCAxMi40NzA1IDUuMzc4MTYgMTMuOTAzOCA3LjUwMDAxQzEyLjQ3MDUgOS42MjE4MyAxMC4xOTcxIDExIDcuNSAxMVpNNy41IDNDNC4zMDc4NiAzIDEuNjU2MzkgNC43MDYzOCAwLjA3NjAwMDIgNy4yMzUwMUMtMC4wMjUzMzM4IDcuMzk3MTUgLTAuMDI1MzMzNCA3LjYwMjg4IDAuMDc2MDAxNCA3Ljc2NTAxQzEuNjU2MzkgMTAuMjkzNiA0LjMwNzg2IDEyIDcuNSAxMkMxMC42OTIxIDEyIDEzLjM0MzYgMTAuMjkzNiAxNC45MjQgNy43NjUwMUMxNS4wMjUzIDcuNjAyODggMTUuMDI1MyA3LjM5NzE1IDE0LjkyNCA3LjIzNTAxQzEzLjM0MzYgNC43MDYzOCAxMC42OTIxIDMgNy41IDNaTTcuNSA5LjVDOC42MDQ1NyA5LjUgOS41IDguNjA0NTcgOS41IDcuNUM5LjUgNi4zOTU0MyA4LjYwNDU3IDUuNSA3LjUgNS41QzYuMzk1NDMgNS41IDUuNSA2LjM5NTQzIDUuNSA3LjVDNS41IDguNjA0NTcgNi4zOTU0MyA5LjUgNy41IDkuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LF90PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc2ODkyQzMuODQyMjIgMC44NzY4OTIgMC44NzcwNzUgMy44NDIwNCAwLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDExLjE1NzQgMy44NDIyMiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMxMS4xNTc2IDE0LjEyMjYgMTQuMTIyNyAxMS4xNTc0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDMuODQyMDQgMTEuMTU3NiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyWk0xLjgyNzA4IDcuNDk5NzJDMS44MjcwOCA0LjM2NjcxIDQuMzY2ODkgMS44MjY4OSA3LjQ5OTkxIDEuODI2ODlDMTAuNjMyOSAxLjgyNjg5IDEzLjE3MjcgNC4zNjY3MSAxMy4xNzI3IDcuNDk5NzJDMTMuMTcyNyAxMC42MzI3IDEwLjYzMjkgMTMuMTcyNiA3LjQ5OTkxIDEzLjE3MjZDNC4zNjY4OSAxMy4xNzI2IDEuODI3MDggMTAuNjMyNyAxLjgyNzA4IDcuNDk5NzJaTTUuMDM3NDcgOS4yMTM5NUM0Ljg3OTQ5IDguOTg3NDYgNC41Njc4MiA4LjkzMTkzIDQuMzQxMzMgOS4wODk5MUM0LjExNDg0IDkuMjQ3ODkgNC4wNTkzMSA5LjU1OTU2IDQuMjE3MjkgOS43ODYwNUM0LjkzOTI2IDEwLjgyMTEgNi4xNDAzMyAxMS41IDcuNTAwMDQgMTEuNUM4Ljg1OTc0IDExLjUgMTAuMDYwOCAxMC44MjExIDEwLjc4MjggOS43ODYwNUMxMC45NDA4IDkuNTU5NTYgMTAuODg1MiA5LjI0Nzg5IDEwLjY1ODcgOS4wODk5MUMxMC40MzIzIDguOTMxOTMgMTAuMTIwNiA4Ljk4NzQ2IDkuOTYyNiA5LjIxMzk1QzkuNDE5NjMgOS45OTIzOCA4LjUxOTA3IDEwLjUgNy41MDAwNCAxMC41QzYuNDgxIDEwLjUgNS41ODA0NCA5Ljk5MjM4IDUuMDM3NDcgOS4yMTM5NVpNNS4zNzUwMyA2Ljg0OTk4QzUuODU4MjggNi44NDk5OCA2LjI1MDAzIDYuNDU4MTUgNi4yNTAwMyA1Ljk3NDk4QzYuMjUwMDMgNS40OTE4IDUuODU4MjggNS4wOTk5OCA1LjM3NTAzIDUuMDk5OThDNC44OTE3OSA1LjA5OTk4IDQuNTAwMDMgNS40OTE4IDQuNTAwMDMgNS45NzQ5OEM0LjUwMDAzIDYuNDU4MTUgNC44OTE3OSA2Ljg0OTk4IDUuMzc1MDMgNi44NDk5OFpNMTAuNSA1Ljk3NDk4QzEwLjUgNi40NTgxNSAxMC4xMDgzIDYuODQ5OTggOS42MjUwMyA2Ljg0OTk4QzkuMTQxNzkgNi44NDk5OCA4Ljc1MDAzIDYuNDU4MTUgOC43NTAwMyA1Ljk3NDk4QzguNzUwMDMgNS40OTE4IDkuMTQxNzkgNS4wOTk5OCA5LjYyNTAzIDUuMDk5OThDMTAuMTA4MyA1LjA5OTk4IDEwLjUgNS40OTE4IDEwLjUgNS45NzQ5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE10PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjAwMDA1IDIuMDQ5OTlINS41MjUwNUM0LjcxMDQzIDIuMDQ5OTkgNC4wNTAwNSAyLjcxMDM3IDQuMDUwMDUgMy41MjQ5OUM0LjA1MDA1IDQuMzM5NjEgNC43MTA0MyA0Ljk5OTk5IDUuNTI1MDUgNC45OTk5OUg3LjAwMDA1VjIuMDQ5OTlaTTcuMDAwMDUgMS4wNDk5OUg4LjAwMDA1SDkuNDc1MDVDMTAuODQyIDEuMDQ5OTkgMTEuOTUgMi4xNTgwOCAxMS45NSAzLjUyNDk5QzExLjk1IDQuMzMxNjMgMTEuNTY0MiA1LjA0ODE1IDEwLjk2NjkgNS40OTk5OUMxMS41NjQyIDUuOTUxODQgMTEuOTUgNi42NjgzNiAxMS45NSA3LjQ3NUMxMS45NSA4Ljg0MTkgMTAuODQyIDkuOTUgOS40NzUwNSA5Ljk1QzguOTIyMzYgOS45NSA4LjQxMTk4IDkuNzY4ODQgOC4wMDAwNSA5LjQ2MjY2VjkuOTVMOC4wMDAwNSAxMS40MjVDOC4wMDAwNSAxMi43OTE5IDYuODkxOTUgMTMuOSA1LjUyNTA1IDEzLjlDNC4xNTgxNCAxMy45IDMuMDUwMDUgMTIuNzkxOSAzLjA1MDA1IDExLjQyNUMzLjA1MDA1IDEwLjYxODMgMy40MzU5MyA5LjkwMTg0IDQuMDMzMTcgOS40NDk5OUMzLjQzNTkzIDguOTk4MTQgMy4wNTAwNSA4LjI4MTYzIDMuMDUwMDUgNy40NzVDMy4wNTAwNSA2LjY2ODM2IDMuNDM1OTQgNS45NTE4NCA0LjAzMzE5IDUuNUMzLjQzNTk0IDUuMDQ4MTUgMy4wNTAwNSA0LjMzMTYzIDMuMDUwMDUgMy41MjQ5OUMzLjA1MDA1IDIuMTU4MDggNC4xNTgxNCAxLjA0OTk5IDUuNTI1MDUgMS4wNDk5OUg3LjAwMDA1Wk04LjAwMDA1IDIuMDQ5OTlWNC45OTk5OUg5LjQ3NTA1QzEwLjI4OTcgNC45OTk5OSAxMC45NSA0LjMzOTYxIDEwLjk1IDMuNTI0OTlDMTAuOTUgMi43MTAzNyAxMC4yODk3IDIuMDQ5OTkgOS40NzUwNSAyLjA0OTk5SDguMDAwMDVaTTUuNTI1MDUgOC45NDk5OEg3LjAwMDA1TDcuMDAwMDUgNy40Nzg4TDcuMDAwMDUgNy40NzVMNy4wMDAwNSA3LjQ3MTJWNkg1LjUyNTA1QzQuNzEwNDMgNiA0LjA1MDA1IDYuNjYwMzggNC4wNTAwNSA3LjQ3NUM0LjA1MDA1IDguMjg3NjcgNC43MDcyNyA4Ljk0Njg0IDUuNTE5MiA4Ljk0OTk5TDUuNTI1MDUgOC45NDk5OFpNNC4wNTAwNSAxMS40MjVDNC4wNTAwNSAxMC42MTIzIDQuNzA3MjcgOS45NTMxNSA1LjUxOTIgOS45NDk5OUw1LjUyNTA1IDkuOTVINy4wMDAwNUw3LjAwMDA1IDExLjQyNUM3LjAwMDA1IDEyLjIzOTYgNi4zMzk2NyAxMi45IDUuNTI1MDUgMTIuOUM0LjcxMDQzIDEyLjkgNC4wNTAwNSAxMi4yMzk2IDQuMDUwMDUgMTEuNDI1Wk04LjAwMDA1IDcuNDcyMDZDOC4wMDE2NCA2LjY1ODc5IDguNjYxNDEgNiA5LjQ3NTA1IDZDMTAuMjg5NyA2IDEwLjk1IDYuNjYwMzggMTAuOTUgNy40NzVDMTAuOTUgOC4yODk2MiAxMC4yODk3IDguOTUgOS40NzUwNSA4Ljk1QzguNjYxNDEgOC45NSA4LjAwMTY0IDguMjkxMjEgOC4wMDAwNSA3LjQ3Nzk0VjcuNDcyMDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxqdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy41IDJDMy4yMjM4NiAyIDMgMi4yMjM4NiAzIDIuNVYxMi41QzMgMTIuNzc2MSAzLjIyMzg2IDEzIDMuNSAxM0gxMS41QzExLjc3NjEgMTMgMTIgMTIuNzc2MSAxMiAxMi41VjZIOC41QzguMjIzODYgNiA4IDUuNzc2MTQgOCA1LjVWMkgzLjVaTTkgMi43MDcxMUwxMS4yOTI5IDVIOVYyLjcwNzExWk0yIDIuNUMyIDEuNjcxNTcgMi42NzE1NyAxIDMuNSAxSDguNUM4LjYzMjYxIDEgOC43NTk3OSAxLjA1MjY4IDguODUzNTUgMS4xNDY0NUwxMi44NTM2IDUuMTQ2NDVDMTIuOTQ3MyA1LjI0MDIxIDEzIDUuMzY3MzkgMTMgNS41VjEyLjVDMTMgMTMuMzI4NCAxMi4zMjg0IDE0IDExLjUgMTRIMy41QzIuNjcxNTcgMTQgMiAxMy4zMjg0IDIgMTIuNVYyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxFdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMyAyLjVDMyAyLjIyMzg2IDMuMjIzODYgMiAzLjUgMkg5LjI5Mjg5TDEyIDQuNzA3MTFWMTIuNUMxMiAxMi43NzYxIDExLjc3NjEgMTMgMTEuNSAxM0gzLjVDMy4yMjM4NiAxMyAzIDEyLjc3NjEgMyAxMi41VjIuNVpNMy41IDFDMi42NzE1NyAxIDIgMS42NzE1NyAyIDIuNVYxMi41QzIgMTMuMzI4NCAyLjY3MTU3IDE0IDMuNSAxNEgxMS41QzEyLjMyODQgMTQgMTMgMTMuMzI4NCAxMyAxMi41VjQuNjAzNTVDMTMgNC40MDQ2NCAxMi45MjEgNC4yMTM4OCAxMi43ODAzIDQuMDczMjJMOS44NTM1NSAxLjE0NjQ1QzkuNzU5NzkgMS4wNTI2OCA5LjYzMjYxIDEgOS41IDFIMy41Wk01LjI1IDdDNC45NzM4NiA3IDQuNzUgNy4yMjM4NiA0Ljc1IDcuNUM0Ljc1IDcuNzc2MTQgNC45NzM4NiA4IDUuMjUgOEg5Ljc1QzEwLjAyNjEgOCAxMC4yNSA3Ljc3NjE0IDEwLjI1IDcuNUMxMC4yNSA3LjIyMzg2IDEwLjAyNjEgNyA5Ljc1IDdINS4yNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFN0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjUgMkMzLjIyMzg2IDIgMyAyLjIyMzg2IDMgMi41VjEyLjVDMyAxMi43NzYxIDMuMjIzODYgMTMgMy41IDEzSDExLjVDMTEuNzc2MSAxMyAxMiAxMi43NzYxIDEyIDEyLjVWNC43MDcxMUw5LjI5Mjg5IDJIMy41Wk0yIDIuNUMyIDEuNjcxNTcgMi42NzE1NyAxIDMuNSAxSDkuNUM5LjYzMjYxIDEgOS43NTk3OSAxLjA1MjY4IDkuODUzNTUgMS4xNDY0NUwxMi43ODAzIDQuMDczMjJDMTIuOTIxIDQuMjEzODggMTMgNC40MDQ2NCAxMyA0LjYwMzU1VjEyLjVDMTMgMTMuMzI4NCAxMi4zMjg0IDE0IDExLjUgMTRIMy41QzIuNjcxNTcgMTQgMiAxMy4zMjg0IDIgMTIuNVYyLjVaTTQuNzUgNy41QzQuNzUgNy4yMjM4NiA0Ljk3Mzg2IDcgNS4yNSA3SDdWNS4yNUM3IDQuOTczODYgNy4yMjM4NiA0Ljc1IDcuNSA0Ljc1QzcuNzc2MTQgNC43NSA4IDQuOTczODYgOCA1LjI1VjdIOS43NUMxMC4wMjYxIDcgMTAuMjUgNy4yMjM4NiAxMC4yNSA3LjVDMTAuMjUgNy43NzYxNCAxMC4wMjYxIDggOS43NSA4SDhWOS43NUM4IDEwLjAyNjEgNy43NzYxNCAxMC4yNSA3LjUgMTAuMjVDNy4yMjM4NiAxMC4yNSA3IDEwLjAyNjEgNyA5Ljc1VjhINS4yNUM0Ljk3Mzg2IDggNC43NSA3Ljc3NjE0IDQuNzUgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgMi41QzMgMi4yMjM4NiAzLjIyMzg2IDIgMy41IDJIOS4wODU3OUM5LjIxODM5IDIgOS4zNDU1NyAyLjA1MjY4IDkuNDM5MzQgMi4xNDY0NUwxMS44NTM2IDQuNTYwNjZDMTEuOTQ3MyA0LjY1NDQzIDEyIDQuNzgxNjEgMTIgNC45MTQyMVYxMi41QzEyIDEyLjc3NjEgMTEuNzc2MSAxMyAxMS41IDEzSDMuNUMzLjIyMzg2IDEzIDMgMTIuNzc2MSAzIDEyLjVWMi41Wk0zLjUgMUMyLjY3MTU3IDEgMiAxLjY3MTU3IDIgMi41VjEyLjVDMiAxMy4zMjg0IDIuNjcxNTcgMTQgMy41IDE0SDExLjVDMTIuMzI4NCAxNCAxMyAxMy4zMjg0IDEzIDEyLjVWNC45MTQyMUMxMyA0LjUxNjM5IDEyLjg0MiA0LjEzNDg2IDEyLjU2MDcgMy44NTM1NUwxMC4xNDY0IDEuNDM5MzRDOS44NjUxNCAxLjE1ODA0IDkuNDgzNjEgMSA5LjA4NTc5IDFIMy41Wk00LjUgNEM0LjIyMzg2IDQgNCA0LjIyMzg2IDQgNC41QzQgNC43NzYxNCA0LjIyMzg2IDUgNC41IDVINy41QzcuNzc2MTQgNSA4IDQuNzc2MTQgOCA0LjVDOCA0LjIyMzg2IDcuNzc2MTQgNCA3LjUgNEg0LjVaTTQuNSA3QzQuMjIzODYgNyA0IDcuMjIzODYgNCA3LjVDNCA3Ljc3NjE0IDQuMjIzODYgOCA0LjUgOEgxMC41QzEwLjc3NjEgOCAxMSA3Ljc3NjE0IDExIDcuNUMxMSA3LjIyMzg2IDEwLjc3NjEgNyAxMC41IDdINC41Wk00LjUgMTBDNC4yMjM4NiAxMCA0IDEwLjIyMzkgNCAxMC41QzQgMTAuNzc2MSA0LjIyMzg2IDExIDQuNSAxMUgxMC41QzEwLjc3NjEgMTEgMTEgMTAuNzc2MSAxMSAxMC41QzExIDEwLjIyMzkgMTAuNzc2MSAxMCAxMC41IDEwSDQuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEh0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjEwNTA1IDEyQzQuNzA4MDUgMTIgNC40MjM2IDExLjkxMiA0LjI1MTcxIDExLjczNkM0LjA4MzkgMTEuNTU1OSA0IDExLjI3MTUgNCAxMC44ODI3VjQuMTE3MzNDNCAzLjcyMDMzIDQuMDg1OTUgMy40MzU4OCA0LjI1Nzg0IDMuMjYzOThDNC40MzM4MyAzLjA4Nzk5IDQuNzE2MjMgMyA1LjEwNTA1IDNDNi40Mjc0MSAzIDguMjU1OTEgMyA5LjAyODUyIDNDMTAuMTM3MyAzIDExLjA1MzkgMy45ODE1MyAxMS4wNTM5IDUuMTg0NkMxMS4wNTM5IDYuMDg1MDEgMTAuNjAzNyA2LjgxODU1IDkuNzAzMjcgNy4yMzYwMkMxMC44NjU3IDcuNDQ4NTEgMTEuNTE3NiA4LjYyNzg3IDExLjUxNzYgOS40ODEyOEMxMS41MTc2IDEwLjUxMjUgMTAuOTkwMiAxMiA5LjI3NzM0IDEyQzguNzc3NDIgMTIgNi40MjYyNiAxMiA1LjEwNTA1IDEyWk04LjM3ODkxIDguMDAzNDFINS44VjEwLjYzMUg4LjM3ODkxQzguOSAxMC42MzEgOS42Mjk2IDEwLjEyMTEgOS42Mjk2IDkuMjk4NzdDOS42Mjk2IDguNDc2NDMgOC45IDguMDAzNDEgOC4zNzg5MSA4LjAwMzQxWk01LjggNC4zNjkwM1Y2LjY5NTc3SDguMTc5NjlDOC41MzkwNiA2LjY5NTc3IDkuMjc3MzQgNi4zNTkzOSA5LjI3NzM0IDUuNTAwMDJDOS4yNzczNCA0LjY0MDY0IDguNDgwNDcgNC4zNjkwMyA4LjE3OTY5IDQuMzY5MDNINS44WlwiLGZpbGw6bn0pKX0sa3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuNSA0LjVDMi41IDMuMDk4ODYgMy41OTg4NiAyIDUgMkgxMi40OTlDMTIuNzc1MiAyIDEzIDIuMjIzODYgMTMgMi41QzEzIDIuNzc2MTQgMTIuNzc2MSAzIDEyLjUgM0g4LjY5MjQ0TDguNDA1MDkgMy44NTQ1OEM4LjE4ODY5IDQuNDk3NTIgNy44OTQwMSA1LjM3MTk3IDcuNTgwOTEgNi4yOTc5NEM3LjUwMjU5IDYuNTI5NTYgNy40MjMwOCA2Ljc2NDUzIDcuMzQzMzIgN0g4LjVDOC43NzYxNCA3IDkgNy4yMjM4NiA5IDcuNUM5IDcuNzc2MTQgOC43NzYxNCA4IDguNSA4SDcuMDA0MDdDNi41NjcyNCA5LjI4NTQzIDYuMTY0MzUgMTAuNDYxMyA1Ljk1Nzk5IDExLjAzODZDNS42MzYyNyAxMS45Mzg2IDUuMjA3MTIgMTIuNDg1NyA0LjY2NzQxIDEyLjc3NzhDNC4xNjMzNSAxMy4wNTA3IDMuNjQxNTQgMTMuMDUwMyAzLjI4Mzc4IDEzLjA1TDMuMjUgMTMuMDVDMi45NDYyNCAxMy4wNSAyLjcgMTIuODAzNyAyLjcgMTIuNUMyLjcgMTIuMTk2MiAyLjk0NjI0IDExLjk1IDMuMjUgMTEuOTVDMy42NDE4MiAxMS45NSAzLjkwMzUgMTEuOTQwNSA0LjE0Mzc0IDExLjgxMDVDNC4zNjQ0MyAxMS42OTEgNC42NTUzMiAxMS40MTQ4IDQuOTIyMTcgMTAuNjY4M0M1LjEwNjk1IDEwLjE1MTQgNS40NTM3NSA5LjE0MTM0IDUuODQyMiA4SDQuNUM0LjIyMzg2IDggNCA3Ljc3NjE0IDQgNy41QzQgNy4yMjM4NiA0LjIyMzg2IDcgNC41IDdINi4xODE4N0M2LjMwMTI3IDYuNjQ3ODUgNi40MjEzMiA2LjI5MzIzIDYuNTM4ODcgNS45NDU1OUM2Ljg1MTc1IDUuMDIwMjUgNy4xNDYyNyA0LjE0NjMxIDcuMzYyNTYgMy41MDM2OEw3LjUzMTkyIDNINUM0LjE1MTE0IDMgMy41IDMuNjUxMTQgMy41IDQuNUMzLjUgNC43NzYxNCAzLjI3NjE0IDUgMyA1QzIuNzIzODYgNSAyLjUgNC43NzYxNCAyLjUgNC41WlwiLGZpbGw6bn0pKX0sVnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNjc0OTQgMy41MDAxN0M1LjY3NDk0IDMuMjUxNjQgNS44NzY0MSAzLjA1MDE3IDYuMTI0OTQgMy4wNTAxN0gxMC42MjQ5QzEwLjg3MzUgMy4wNTAxNyAxMS4wNzQ5IDMuMjUxNjQgMTEuMDc0OSAzLjUwMDE3QzExLjA3NDkgMy43NDg3IDEwLjg3MzUgMy45NTAxNyAxMC42MjQ5IDMuOTUwMTdIOS4wMDU4N0w3LjIzMDkgMTEuMDVIOC44NzQ5M0M5LjEyMzQ1IDExLjA1IDkuMzI0OTMgMTEuMjUxNSA5LjMyNDkzIDExLjVDOS4zMjQ5MyAxMS43NDg2IDkuMTIzNDUgMTEuOTUgOC44NzQ5MyAxMS45NUg0LjM3NDkzQzQuMTI2NCAxMS45NSAzLjkyNDkzIDExLjc0ODYgMy45MjQ5MyAxMS41QzMuOTI0OTMgMTEuMjUxNSA0LjEyNjQgMTEuMDUgNC4zNzQ5MyAxMS4wNUg1Ljk5Mzk3TDcuNzY4OTQgMy45NTAxN0g2LjEyNDk0QzUuODc2NDEgMy45NTAxNyA1LjY3NDk0IDMuNzQ4NyA1LjY3NDk0IDMuNTAwMTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxSdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC43OTk5MyAzLjUwMDE3QzQuNzk5OTMgMy4yNTE2NCA1LjAwMTQgMy4wNTAxNyA1LjI0OTkzIDMuMDUwMTdIOS43NDk5M0M5Ljk5ODQ1IDMuMDUwMTcgMTAuMTk5OSAzLjI1MTY0IDEwLjE5OTkgMy41MDAxN0MxMC4xOTk5IDMuNzQ4NyA5Ljk5ODQ1IDMuOTUwMTcgOS43NDk5MyAzLjk1MDE3SDguMDk5OTNWMTEuMDVIOS43NDk5NEM5Ljk5ODQ3IDExLjA1IDEwLjE5OTkgMTEuMjUxNSAxMC4xOTk5IDExLjVDMTAuMTk5OSAxMS43NDg2IDkuOTk4NDcgMTEuOTUgOS43NDk5NCAxMS45NUg1LjI0OTk0QzUuMDAxNDEgMTEuOTUgNC43OTk5NCAxMS43NDg2IDQuNzk5OTQgMTEuNUM0Ljc5OTk0IDExLjI1MTUgNS4wMDE0MSAxMS4wNSA1LjI0OTk0IDExLjA1SDYuODk5OTNWMy45NTAxN0g1LjI0OTkzQzUuMDAxNCAzLjk1MDE3IDQuNzk5OTMgMy43NDg3IDQuNzk5OTMgMy41MDAxN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEl0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjc4MjMzIDIuMjE3MDdDMi43MDczMiAyLjE0MjA2IDIuNjA1NTcgMi4wOTk5MSAyLjQ5OTQ5IDIuMDk5OTFDMi4zOTM0IDIuMDk5OTEgMi4yOTE2NiAyLjE0MjA2IDIuMjE2NjQgMi4yMTcwN0wwLjIxNjY0NSA0LjIxNzA3QzAuMDYwNDM1MSA0LjM3MzI4IDAuMDYwNDM1MSA0LjYyNjU1IDAuMjE2NjQ1IDQuNzgyNzZDMC4zNzI4NTUgNC45Mzg5NyAwLjYyNjEyMSA0LjkzODk3IDAuNzgyMzMgNC43ODI3NkwyLjA5OTQ5IDMuNDY1NkwyLjA5OTQ5IDExLjUzNDJMMC43ODIzMyAxMC4yMTcxQzAuNjI2MTIgMTAuMDYwOSAwLjM3Mjg1NCAxMC4wNjA5IDAuMjE2NjQ1IDEwLjIxNzFDMC4wNjA0MzQ5IDEwLjM3MzMgMC4wNjA0MzQ5IDEwLjYyNjUgMC4yMTY2NDUgMTAuNzgyOEwyLjIxNjY0IDEyLjc4MjhDMi4yOTE2NiAxMi44NTc4IDIuMzkzNCAxMi44OTk5IDIuNDk5NDkgMTIuODk5OUMyLjYwNTU3IDEyLjg5OTkgMi43MDczMSAxMi44NTc4IDIuNzgyMzMgMTIuNzgyOEw0Ljc4MjMzIDEwLjc4MjhDNC45Mzg1NCAxMC42MjY1IDQuOTM4NTQgMTAuMzczMyA0Ljc4MjMzIDEwLjIxNzFDNC42MjYxMiAxMC4wNjA5IDQuMzcyODUgMTAuMDYwOSA0LjIxNjY0IDEwLjIxNzFMMi44OTk0OSAxMS41MzQyTDIuODk5NDkgMy40NjU2TDQuMjE2NjQgNC43ODI3NkM0LjM3Mjg1IDQuOTM4OTcgNC42MjYxMiA0LjkzODk3IDQuNzgyMzMgNC43ODI3NkM0LjkzODU0IDQuNjI2NTUgNC45Mzg1NCA0LjM3MzI4IDQuNzgyMzMgNC4yMTcwN0wyLjc4MjMzIDIuMjE3MDdaTTEwLjUgMi43NDk5N0MxMC43MTA3IDIuNzQ5OTcgMTAuODk4OCAyLjg4MjExIDEwLjk3MDMgMy4wODAzNkwxMy45NzAzIDExLjM5OTlDMTQuMDY0IDExLjY1OTcgMTMuOTI5MyAxMS45NDYyIDEzLjY2OTYgMTIuMDM5OUMxMy40MDk4IDEyLjEzMzYgMTMuMTIzMyAxMS45OTg5IDEzLjAyOTYgMTEuNzM5MkwxMi4wNDc3IDkuMDE2SDguOTUyMjhMNy45NzAzMyAxMS43MzkyQzcuODc2NjYgMTEuOTk4OSA3LjU5MDEzIDEyLjEzMzYgNy4zMzAzNiAxMi4wMzk5QzcuMDcwNTkgMTEuOTQ2MiA2LjkzNTk1IDExLjY1OTcgNy4wMjk2MiAxMS4zOTk5TDEwLjAyOTYgMy4wODAzNkMxMC4xMDExIDIuODgyMTEgMTAuMjg5MiAyLjc0OTk3IDEwLjUgMi43NDk5N1pNMTAuNSA0LjcyMzk2TDExLjc0MTIgOC4xNjZIOS4yNTg3OUwxMC41IDQuNzIzOTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxadD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS4wMzc5MSA5Ljk4MDc1QzAuOTM0Nzc3IDkuNjU4MyAxLjExNjAzIDkuMzc3MTkgMS40MDAwNSA5LjI0ODcxQzEuNjg0MDggOS4xMjAyMiAyLjA5NDYzIDkuMTM0MTIgMi4yNzA3MSA5LjQ1NDI2QzIuODUzOTMgMTAuNTE0NyAzLjY0NTk5IDEwLjcyODIgNC40ODY2NSAxMC43MjgyQzUuNTI3MjEgMTAuNzI4MiA2LjI5NjU5IDEwLjI2MTUgNi4yOTY1OSA5LjQ1NDI2QzYuMjk2NTkgOC44MDQ3IDUuOTExOSA4LjQ2NDE2IDQuODcxMzQgOC4xNDI1M0w0LjE1ODcyIDcuOTIxODFDMi42NDUxOCA3LjQ0ODgzIDEuODg4NDIgNi42OTIwNiAxLjg4ODQyIDUuNDU2MDFDMS44ODg0MiAzLjc5NzQzIDMuMjc1ODMgMi42ODc1IDUuMjQzNDIgMi42ODc1QzYuOTE3MzMgMi42ODc1IDcuOTc0MDkgMy4zMzUzNiA4LjQzODMzIDQuMzEwNjVDOC41NzA4NyA0LjU4OTA5IDguNTc2MTQgNC45MTI5NCA4LjIyNzk0IDUuMTkxMTRDNy44Nzk3NCA1LjQ2OTM0IDcuNTIzNTEgNS4zNDc5OSA3LjIzMzI3IDUuMDM4MzlDNi40NzIxNSA0LjIyNjUzIDUuOTk1NDUgNC4wNDk2OCA1LjI1NjA0IDQuMDQ5NjhDNC4xMzk4IDQuMDQ5NjggMy41NDcgNC42MzYxOCAzLjU0NyA1LjI3OTQzQzMuNTQ3IDUuODY1OTIgMy45NjMyMiA2LjIzMTY5IDQuOTQ3MDIgNi41MzQ0TDUuNjc4NTYgNi43NjE0M0M3LjIyOTk0IDcuMjM0NDEgNy45NzQwOSA3Ljk1OTY0IDcuOTc0MDkgOS4xNzA0N0M3Ljk3NDA5IDEwLjc3MjMgNi42OTM4OSAxMi4wOTAzIDQuNDYxNDMgMTIuMDkwM0MyLjg2NjEyIDEyLjA5MDMgMS40MDAwNSAxMS4xMTMxIDEuMDM3OTEgOS45ODA3NVpNMTEuODQ5MSA4Ljc3OTg1QzEwLjY2MSA4LjM5NTQzIDEwLjE2NDkgNy44NjExNCAxMC4xNjQ5IDYuOTg4MDVDMTAuMTY0OSA1Ljg2NzM2IDExLjE2MzYgNS4wNDYzOSAxMi42MTI4IDUuMDQ2MzlDMTMuODU0NiA1LjA0NjM5IDE0LjY2MjkgNS42MzM0NSAxNC45Nzc4IDYuNjM0NkMxNS4wNDQzIDYuODQ1OTkgMTQuOTU5MyA2Ljk4MDA2IDE0Ljc0NzUgNy4wNDkxQzE0LjUzOTQgNy4xMTY5NyAxNC4zMTc2IDcuMDk5NzQgMTQuMjM4IDYuODk2MTFDMTMuOTM1NiA2LjEyMjczIDEzLjM1MiA1Ljc2MzExIDEyLjU5OTggNS43NjMxMUMxMS42NDY3IDUuNzYzMTEgMTEuMDEzNSA2LjI1MTc4IDExLjAxMzUgNi45MTYzOEMxMS4wMTM1IDcuNDUwNjYgMTEuMzQ2NCA3Ljc1MDM4IDEyLjI0NzMgOC4wNDM1OEwxMi44MzQ4IDguMjMyNTRDMTQuMDYyIDguNjI5OTkgMTQuNTUxNiA5LjEzODIxIDE0LjU1MTYgMTAuMDE3OEMxNC41NTE2IDExLjE5NzIgMTMuNDgxIDEyLjA0NDIgMTEuOTkyNyAxMi4wNDQyQzEwLjY0MzkgMTIuMDQ0MiA5LjY1NjQ0IDExLjI4MDkgOS40MTk3OSAxMC4zMzYxQzkuMzY1MzUgMTAuMTE4OCA5LjQxMTkyIDEwLjAyODcgOS43MDAzOSA5Ljk2MTg0QzkuOTg4ODYgOS44OTQ5OSAxMC4wNzE0IDkuODk5MTggMTAuMTcxNSAxMC4xMzY5QzEwLjQ1NTUgMTAuODExNCAxMS4xNTMxIDExLjMyNzUgMTIuMDMxOCAxMS4zMjc1QzEyLjk5MTQgMTEuMzI3NSAxMy42ODM0IDEwLjc4MDIgMTMuNjgzNCAxMC4wNjM0QzEzLjY4MzQgOS41MzU2NyAxMy4zOTYxIDkuMjg4MDcgMTIuNDM2NiA4Ljk3NTMyTDExLjg0OTEgOC43Nzk4NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFR0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMSAxLjVDMTEgMS4yMjM4NiAxMC43NzYxIDEgMTAuNSAxQzEwLjIyMzkgMSAxMCAxLjIyMzg2IDEwIDEuNVY0SDVWMS41QzUgMS4yMjM4NiA0Ljc3NjE0IDEgNC41IDFDNC4yMjM4NiAxIDQgMS4yMjM4NiA0IDEuNVY0SDEuNUMxLjIyMzg2IDQgMSA0LjIyMzg2IDEgNC41QzEgNC43NzYxNCAxLjIyMzg2IDUgMS41IDVINFYxMEgxLjVDMS4yMjM4NiAxMCAxIDEwLjIyMzkgMSAxMC41QzEgMTAuNzc2MSAxLjIyMzg2IDExIDEuNSAxMUg0VjEzLjVDNCAxMy43NzYxIDQuMjIzODYgMTQgNC41IDE0QzQuNzc2MTQgMTQgNSAxMy43NzYxIDUgMTMuNVYxMUgxMFYxMy41QzEwIDEzLjc3NjEgMTAuMjIzOSAxNCAxMC41IDE0QzEwLjc3NjEgMTQgMTEgMTMuNzc2MSAxMSAxMy41VjExSDEzLjVDMTMuNzc2MSAxMSAxNCAxMC43NzYxIDE0IDEwLjVDMTQgMTAuMjIzOSAxMy43NzYxIDEwIDEzLjUgMTBIMTFWNUgxMy41QzEzLjc3NjEgNSAxNCA0Ljc3NjE0IDE0IDQuNUMxNCA0LjIyMzg2IDEzLjc3NjEgNCAxMy41IDRIMTFWMS41Wk0xMCAxMFY1SDVWMTBIMTBaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxBdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy4zODI1IDEuMjk1NjdDMy40NjI0MSAxLjExNDMyIDMuNjQxODggMC45OTcyODQgMy44NDAwNSAwLjk5NzI4NEgxMS41QzExLjc3NjEgMC45OTcyODQgMTIgMS4yMjExNCAxMiAxLjQ5NzI4VjUuNUMxMiA1Ljc3NjE0IDExLjc3NjEgNiAxMS41IDZIOC42MzUyMUwxMS41Mjg4IDkuMTYyNDdDMTEuNjYyNiA5LjMwODcgMTEuNjk3NCA5LjUyMDE1IDExLjYxNzUgOS43MDE1NEMxMS41Mzc2IDkuODgyOTMgMTEuMzU4MiAxMCAxMS4xNiAxMEg4VjEzLjVDOCAxMy43MDIyIDcuODc4MTggMTMuODg0NSA3LjY5MTM0IDEzLjk2MTlDNy41MDQ1IDE0LjAzOTMgNy4yODk0NSAxMy45OTY2IDcuMTQ2NDUgMTMuODUzNkwzLjE0NjQ1IDkuODUzNTVDMy4wNTI2OCA5Ljc1OTc5IDMgOS42MzI2MSAzIDkuNVY1LjVDMyA1LjIyMzg2IDMuMjIzODYgNSAzLjUgNUg2LjM2NTMxTDMuNDcxMDUgMS44MzQ2OEMzLjMzNzMyIDEuNjg4NDQgMy4zMDI1OSAxLjQ3NzAxIDMuMzgyNSAxLjI5NTY3Wk03LjcyMDMyIDVMNC45NzQ3NCAxLjk5NzI4SDExVjVINy43MjAzMlpNNy4yNzk3OCA2SDRWOUg3LjVIMTAuMDI0N0w3LjI3OTc4IDZaTTQuNzA3MTEgMTBMNyAxMi4yOTI5VjEwSDQuNzA3MTFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxEdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4wNzA5NSAwLjY1MDIzOEM2LjY3MzkxIDAuNjUwMjM4IDYuMzI5NzcgMC45MjUwOTYgNi4yNDE5OCAxLjMxMjMxTDYuMDAzOSAyLjM2MjQ3QzUuNjI0OSAyLjQ3MjY5IDUuMjYzMzUgMi42MjM2MyA0LjkyNDM2IDIuODEwMTNMNC4wMTMzNSAyLjIzNTg1QzMuNjc3NDggMi4wMjQxMyAzLjIzOTc4IDIuMDczMTIgMi45NTkwMyAyLjM1Mzg2TDIuMzUyOTQgMi45NTk5NkMyLjA3MjIgMy4yNDA3IDIuMDIzMiAzLjY3ODQgMi4yMzQ5MyA0LjAxNDI3TDIuODA5NDIgNC45MjU2MUMyLjYyMzA3IDUuMjY0NSAyLjQ3MjI3IDUuNjI1OTQgMi4zNjIxNiA2LjAwNDgxTDEuMzEyMDkgNi4yNDI4N0MwLjkyNDg4MyA2LjMzMDY1IDAuNjUwMDI0IDYuNjc0OCAwLjY1MDAyNCA3LjA3MTgzVjcuOTI4OTdDMC42NTAwMjQgOC4zMjYwMSAwLjkyNDg4MyA4LjY3MDE1IDEuMzEyMDkgOC43NTc5NEwyLjM2MjI4IDguOTk2MDNDMi40NzI0NiA5LjM3NSAyLjYyMzM1IDkuNzM2NTIgMi44MDk3OSAxMC4wNzU1TDIuMjM1NCAxMC45ODY3QzIuMDIzNjcgMTEuMzIyNSAyLjA3MjY3IDExLjc2MDIgMi4zNTM0MSAxMi4wNDFMMi45NTk1MSAxMi42NDcxQzMuMjQwMjUgMTIuOTI3OCAzLjY3Nzk1IDEyLjk3NjggNC4wMTM4MiAxMi43NjUxTDQuOTI1MDYgMTIuMTkwN0M1LjI2Mzg0IDEyLjM3NyA1LjYyNTE2IDEyLjUyNzggNi4wMDM5IDEyLjYzNzlMNi4yNDE5OCAxMy42ODgxQzYuMzI5NzcgMTQuMDc1MyA2LjY3MzkxIDE0LjM1MDIgNy4wNzA5NSAxNC4zNTAySDcuOTI4MDlDOC4zMjUxMiAxNC4zNTAyIDguNjY5MjcgMTQuMDc1MyA4Ljc1NzA1IDEzLjY4ODFMOC45OTUwNSAxMi42MzgzQzkuMzc0MTEgMTIuNTI4MiA5LjczNTczIDEyLjM3NzMgMTAuMDc0OCAxMi4xOTA5TDEwLjk4NiAxMi43NjUzQzExLjMyMTggMTIuOTc3IDExLjc1OTUgMTIuOTI4IDEyLjA0MDMgMTIuNjQ3M0wxMi42NDY0IDEyLjA0MTJDMTIuOTI3MSAxMS43NjA0IDEyLjk3NjEgMTEuMzIyNyAxMi43NjQ0IDEwLjk4NjlMMTIuMTkwMiAxMC4wNzZDMTIuMzc2OCA5LjczNjg4IDEyLjUyNzggOS4zNzUxNSAxMi42MzggOC45OTU5NkwxMy42ODc5IDguNzU3OTRDMTQuMDc1MSA4LjY3MDE1IDE0LjM1IDguMzI2MDEgMTQuMzUgNy45Mjg5N1Y3LjA3MTgzQzE0LjM1IDYuNjc0OCAxNC4wNzUxIDYuMzMwNjUgMTMuNjg3OSA2LjI0Mjg3TDEyLjYzODEgNi4wMDQ4OEMxMi41MjggNS42MjU3OCAxMi4zNzcxIDUuMjY0MTQgMTIuMTkwNiA0LjkyNTA3TDEyLjc2NDggNC4wMTQwN0MxMi45NzY2IDMuNjc4MiAxMi45Mjc2IDMuMjQwNSAxMi42NDY4IDIuOTU5NzVMMTIuMDQwNyAyLjM1MzY2QzExLjc2IDIuMDcyOTIgMTEuMzIyMyAyLjAyMzkyIDEwLjk4NjQgMi4yMzU2NUwxMC4wNzU1IDIuODA5ODlDOS43MzYyMiAyLjYyMzI4IDkuMzc0MzcgMi40NzIyOSA4Ljk5NTA1IDIuMzYyMDlMOC43NTcwNSAxLjMxMjMxQzguNjY5MjcgMC45MjUwOTYgOC4zMjUxMiAwLjY1MDIzOCA3LjkyODA5IDAuNjUwMjM4SDcuMDcwOTVaTTQuOTIwNTMgMy44MTI1MUM1LjQ0NzI0IDMuNDQzMzkgNi4wNTY2NSAzLjE4NDI0IDYuNzE1NDMgMy4wNjgzOUw3LjA3MDk1IDEuNTAwMjRINy45MjgwOUw4LjI4MzU1IDMuMDY4MTZDOC45NDI2NyAzLjE4Mzg3IDkuNTUyNCAzLjQ0MzAyIDEwLjA3OTQgMy44MTIyNEwxMS40Mzk3IDIuOTU0N0wxMi4wNDU4IDMuNTYwNzlMMTEuMTg4MiA0LjkyMTE3QzExLjU1NzMgNS40NDc5OCAxMS44MTY0IDYuMDU3NSAxMS45MzIxIDYuNzE2MzhMMTMuNSA3LjA3MTgzVjcuOTI4OTdMMTEuOTMyIDguMjg0NDRDMTEuODE2MiA4Ljk0MzQyIDExLjU1NyA5LjU1MzAxIDExLjE4NzggMTAuMDc5OEwxMi4wNDUzIDExLjQ0MDJMMTEuNDM5MiAxMi4wNDYyTDEwLjA3ODcgMTEuMTg4NkM5LjU1MTkyIDExLjU1NzYgOC45NDI0MSAxMS44MTY2IDguMjgzNTUgMTEuOTMyM0w3LjkyODA5IDEzLjUwMDJINy4wNzA5NUw2LjcxNTQzIDExLjkzMkM2LjA1NjkgMTEuODE2MiA1LjQ0NzcyIDExLjU1NzIgNC45MjExNiAxMS4xODgzTDMuNTYwNTUgMTIuMDQ2TDIuOTU0NDUgMTEuNDM5OUwzLjgxMjEzIDEwLjA3OTRDMy40NDMxIDkuNTUyNjYgMy4xODQwMyA4Ljk0MzI2IDMuMDY4MjUgOC4yODQ1TDEuNTAwMDIgNy45Mjg5N1Y3LjA3MTgzTDMuMDY4MTggNi43MTYzMkMzLjE4Mzg4IDYuMDU3NjUgMy40NDI4MyA1LjQ0ODMzIDMuODExNzEgNC45MjE2NUwyLjk1Mzk4IDMuNTYxTDMuNTYwMDggMi45NTQ5MUw0LjkyMDUzIDMuODEyNTFaTTkuMDI0OTYgNy41MDAwOEM5LjAyNDk2IDguMzQyMjYgOC4zNDIyMyA5LjAyNDk5IDcuNTAwMDUgOS4wMjQ5OUM2LjY1Nzg2IDkuMDI0OTkgNS45NzUxMyA4LjM0MjI2IDUuOTc1MTMgNy41MDAwOEM1Ljk3NTEzIDYuNjU3ODkgNi42NTc4NiA1Ljk3NTE2IDcuNTAwMDUgNS45NzUxNkM4LjM0MjIzIDUuOTc1MTYgOS4wMjQ5NiA2LjY1Nzg5IDkuMDI0OTYgNy41MDAwOFpNOS45MjQ5NiA3LjUwMDA4QzkuOTI0OTYgOC44MzkzMiA4LjgzOTI5IDkuOTI0OTkgNy41MDAwNSA5LjkyNDk5QzYuMTYwOCA5LjkyNDk5IDUuMDc1MTMgOC44MzkzMiA1LjA3NTEzIDcuNTAwMDhDNS4wNzUxMyA2LjE2MDg0IDYuMTYwOCA1LjA3NTE2IDcuNTAwMDUgNS4wNzUxNkM4LjgzOTI5IDUuMDc1MTYgOS45MjQ5NiA2LjE2MDg0IDkuOTI0OTYgNy41MDAwOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEJ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTM2IDAuODUwMDA2QzMuODI3NjcgMC44NTAwMDYgMC44NDk5NzYgMy44MjczIDAuODQ5OTc2IDcuNTAwMjNDMC44NDk5NzYgMTAuNDM3OSAyLjc1NTIzIDEyLjkzMDYgNS4zOTc3NSAxMy44MTA0QzUuNzMwNDcgMTMuODcxMiA1Ljg1MTcxIDEzLjY2NTggNS44NTE3MSAxMy40ODk1QzUuODUxNzEgMTMuMzMxNSA1Ljg0NiAxMi45MTM1IDUuODQyNzMgMTIuMzU4N0MzLjk5MzAxIDEyLjc2MDQgMy42MDI3MyAxMS40NjcxIDMuNjAyNzMgMTEuNDY3MUMzLjMwMDIyIDEwLjY5ODggMi44NjQyMyAxMC40OTQyIDIuODY0MjMgMTAuNDk0MkMyLjI2MDQ0IDEwLjA4MTkgMi45MDk5NSAxMC4wOTAxIDIuOTA5OTUgMTAuMDkwMUMzLjU3NzQyIDEwLjEzNyAzLjkyODUgMTAuNzc1NSAzLjkyODUgMTAuNzc1NUM0LjUyMTY3IDExLjc5MTYgNS40ODUxMiAxMS40OTgxIDUuODYzOTYgMTEuMzI3OUM1LjkyNDM4IDEwLjg5ODQgNi4wOTYyNSAxMC42MDUzIDYuMjg2MDggMTAuNDM5MUM0LjgwOTQ4IDEwLjI3MDkgMy4yNTY5NSA5LjcwMDYzIDMuMjU2OTUgNy4xNTI0MUMzLjI1Njk1IDYuNDI2MTUgMy41MTYxOCA1LjgzMjk4IDMuOTQxNTcgNS4zNjhDMy44NzI5OSA1LjE5OTggMy42NDQ3OCA0LjUyMzc1IDQuMDA2ODkgMy42MDgwN0M0LjAwNjg5IDMuNjA4MDcgNC41NjQ5NCAzLjQyOTI2IDUuODM1MzggNC4yODk0MUM2LjM2NTY4IDQuMTQyMDQgNi45MzQ3NyA0LjA2ODU2IDcuNTAwMTggNC4wNjU3QzguMDY1MTggNC4wNjg1NiA4LjYzMzg2IDQuMTQyMDQgOS4xNjQ5OCA0LjI4OTQxQzEwLjQzNDYgMy40MjkyNiAxMC45OTE4IDMuNjA4MDcgMTAuOTkxOCAzLjYwODA3QzExLjM1NDggNC41MjM3NSAxMS4xMjY2IDUuMTk5OCAxMS4wNTg0IDUuMzY4QzExLjQ4NDYgNS44MzI5OCAxMS43NDE4IDYuNDI2MTUgMTEuNzQxOCA3LjE1MjQxQzExLjc0MTggOS43MDcxNiAxMC4xODY4IDEwLjI2OTMgOC43MDU3MSAxMC40MzM4QzguOTQ0MTIgMTAuNjM5MiA5LjE1NjgxIDExLjA0NSA5LjE1NjgxIDExLjY2NTVDOS4xNTY4MSAxMi41NTQyIDkuMTQ4NjUgMTMuMjcxNSA5LjE0ODY1IDEzLjQ4OTVDOS4xNDg2NSAxMy42Njc1IDkuMjY4NjcgMTMuODc0NSA5LjYwNTg4IDEzLjgwOTVDMTIuMjQ2NCAxMi45MjgyIDE0LjE1IDEwLjQzNzUgMTQuMTUgNy41MDAyM0MxNC4xNSAzLjgyNzMgMTEuMTcyMyAwLjg1MDAwNiA3LjQ5OTM2IDAuODUwMDA2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sJHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTYgMS44MDAwMkM0LjM1MTk0IDEuODAwMDIgMS43OTk5NiA0LjM1MiAxLjc5OTk2IDcuNTAwMDJDMS43OTk5NiAxMC42NDggNC4zNTE5NCAxMy4yIDcuNDk5OTYgMTMuMkMxMC42NDggMTMuMiAxMy4yIDEwLjY0OCAxMy4yIDcuNTAwMDJDMTMuMiA0LjM1MiAxMC42NDggMS44MDAwMiA3LjQ5OTk2IDEuODAwMDJaTTAuODk5OTYzIDcuNTAwMDJDMC44OTk5NjMgMy44NTQ5NCAzLjg1NDg4IDAuOTAwMDI0IDcuNDk5OTYgMC45MDAwMjRDMTEuMTQ1IDAuOTAwMDI0IDE0LjEgMy44NTQ5NCAxNC4xIDcuNTAwMDJDMTQuMSAxMS4xNDUxIDExLjE0NSAxNC4xIDcuNDk5OTYgMTQuMUMzLjg1NDg4IDE0LjEgMC44OTk5NjMgMTEuMTQ1MSAwLjg5OTk2MyA3LjUwMDAyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuNDk5OSA3Ljg5OTk4SDEuNDk5OTRWNy4wOTk5OEgxMy40OTk5VjcuODk5OThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjA5OTkxIDEzLjVWMS41SDcuODk5OTFWMTMuNUg3LjA5OTkxek0xMC4zNzUgNy40OTk5OEMxMC4zNzUgNS4zMjcyNCA5LjU5MzY0IDMuMTc3NzggOC4wNjE4MyAxLjc1NjU2TDguNTM3OTMgMS4yNDM0MUMxMC4yMzk2IDIuODIyMTggMTEuMDc1IDUuMTcyNzMgMTEuMDc1IDcuNDk5OTggMTEuMDc1IDkuODI3MjQgMTAuMjM5NiAxMi4xNzc4IDguNTM3OTMgMTMuNzU2Nkw4LjA2MTgzIDEzLjI0MzRDOS41OTM2NCAxMS44MjIyIDEwLjM3NSA5LjY3MjczIDEwLjM3NSA3LjQ5OTk4ek0zLjk5OTY5IDcuNUMzLjk5OTY5IDUuMTc2MTEgNC44MDc4NiAyLjgyNjc4IDYuNDU3NjggMS4yNDcxOUw2Ljk0MTc3IDEuNzUyODFDNS40NTgyIDMuMTczMjMgNC42OTk2OSA1LjMyMzg5IDQuNjk5NjkgNy41IDQuNjk5NyA5LjY3NjExIDUuNDU4MjIgMTEuODI2OCA2Ljk0MTc5IDEzLjI0NzJMNi40NTc2OSAxMy43NTI4QzQuODA3ODggMTIuMTczMiAzLjk5OTcgOS44MjM5IDMuOTk5NjkgNy41elwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5NiAzLjk1ODAxQzkuNjY5MjggMy45NTgwMSAxMS44NzUzIDQuMzU5MTUgMTMuMzcwNiA1LjE5NDQ4IDEzLjUzOTQgNS4yODg3NSAxMy41OTk4IDUuNTAxOTcgMTMuNTA1NSA1LjY3MDczIDEzLjQxMTMgNS44Mzk0OCAxMy4xOTggNS44OTk4NyAxMy4wMjkzIDUuODA1NiAxMS42Nzk0IDUuMDUxNTUgOS42MDc5OSA0LjY1ODAxIDcuNDk5OTYgNC42NTgwMSA1LjM5MTkyIDQuNjU4MDEgMy4zMjA1MiA1LjA1MTU1IDEuOTcwNjQgNS44MDU2IDEuODAxODggNS44OTk4NyAxLjU4ODY2IDUuODM5NDggMS40OTQzOSA1LjY3MDczIDEuNDAwMTMgNS41MDE5NyAxLjQ2MDUxIDUuMjg4NzUgMS42MjkyNyA1LjE5NDQ4IDMuMTI0NjYgNC4zNTkxNSA1LjMzMDYzIDMuOTU4MDEgNy40OTk5NiAzLjk1ODAxek03LjQ5OTk2IDEwLjg1QzkuNjY5MjggMTAuODUgMTEuODc1MyAxMC40NDg4IDEzLjM3MDYgOS42MTM1IDEzLjUzOTQgOS41MTkyNCAxMy41OTk4IDkuMzA2MDEgMTMuNTA1NSA5LjEzNzI2IDEzLjQxMTMgOC45Njg1IDEzLjE5OCA4LjkwODEyIDEzLjAyOTMgOS4wMDIzOCAxMS42Nzk0IDkuNzU2NDMgOS42MDc5OSAxMC4xNSA3LjQ5OTk2IDEwLjE1IDUuMzkxOTIgMTAuMTUgMy4zMjA1MiA5Ljc1NjQzIDEuOTcwNjQgOS4wMDIzOSAxLjgwMTg4IDguOTA4MTIgMS41ODg2NiA4Ljk2ODUgMS40OTQzOSA5LjEzNzI2IDEuNDAwMTMgOS4zMDYwMSAxLjQ2MDUxIDkuNTE5MjQgMS42MjkyNyA5LjYxMzUgMy4xMjQ2NiAxMC40NDg4IDUuMzMwNjMgMTAuODUgNy40OTk5NiAxMC44NXpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEZ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi41IDJIOFY3SDEzVjIuNUMxMyAyLjIyMzg2IDEyLjc3NjEgMiAxMi41IDJaTTEzIDhIOFYxM0gxMi41QzEyLjc3NjEgMTMgMTMgMTIuNzc2MSAxMyAxMi41VjhaTTcgN1YySDIuNUMyLjIyMzg2IDIgMiAyLjIyMzg2IDIgMi41VjdIN1pNMiA4VjEyLjVDMiAxMi43NzYxIDIuMjIzODYgMTMgMi41IDEzSDdWOEgyWk0yLjUgMUMxLjY3MTU3IDEgMSAxLjY3MTU3IDEgMi41VjEyLjVDMSAxMy4zMjg0IDEuNjcxNTcgMTQgMi41IDE0SDEyLjVDMTMuMzI4NCAxNCAxNCAxMy4zMjg0IDE0IDEyLjVWMi41QzE0IDEuNjcxNTcgMTMuMzI4NCAxIDEyLjUgMUgyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxOdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS40NDk5NSAwLjk0OTk1MUMxLjMxNzM0IDAuOTQ5OTUxIDEuMTkwMTYgMS4wMDI2MyAxLjA5NjQgMS4wOTY0QzEuMDAyNjMgMS4xOTAxNyAwLjk0OTk1MSAxLjMxNzM1IDAuOTQ5OTUxIDEuNDQ5OTVMMC45NDk5NjYgMy40NDk5NUMwLjk0OTk2OSAzLjcyNjEgMS4xNzM4MyAzLjk0OTk1IDEuNDQ5OTcgMy45NDk5NUMxLjcyNjExIDMuOTQ5OTUgMS45NDk5NyAzLjcyNjA5IDEuOTQ5OTcgMy40NDk5NUwxLjk0OTk1IDEuOTQ5OTVIMy40NDk5N0MzLjcyNjExIDEuOTQ5OTUgMy45NDk5NyAxLjcyNjA5IDMuOTQ5OTcgMS40NDk5NUMzLjk0OTk3IDEuMTczODEgMy43MjYxMSAwLjk0OTk1MSAzLjQ0OTk3IDAuOTQ5OTUxSDEuNDQ5OTVaTTUuOTQ5OTUgMC45NDk5NTFDNS42NzM4MSAwLjk0OTk1MSA1LjQ0OTk1IDEuMTczODEgNS40NDk5NSAxLjQ0OTk1QzUuNDQ5OTUgMS43MjYwOSA1LjY3MzgxIDEuOTQ5OTUgNS45NDk5NSAxLjk0OTk1SDguOTQ5OTVDOS4yMjYwOSAxLjk0OTk1IDkuNDQ5OTUgMS43MjYwOSA5LjQ0OTk1IDEuNDQ5OTVDOS40NDk5NSAxLjE3MzgxIDkuMjI2MDkgMC45NDk5NTEgOC45NDk5NSAwLjk0OTk1MUg1Ljk0OTk1Wk01LjQ0OTk1IDEzLjQ1QzUuNDQ5OTUgMTMuMTczOCA1LjY3MzgxIDEyLjk1IDUuOTQ5OTUgMTIuOTVIOC45NDk5NUM5LjIyNjA5IDEyLjk1IDkuNDQ5OTUgMTMuMTczOCA5LjQ0OTk1IDEzLjQ1QzkuNDQ5OTUgMTMuNzI2MSA5LjIyNjA5IDEzLjk1IDguOTQ5OTUgMTMuOTVINS45NDk5NUM1LjY3MzgxIDEzLjk1IDUuNDQ5OTUgMTMuNzI2MSA1LjQ0OTk1IDEzLjQ1Wk0xLjk0OTk1IDUuOTQ5OTVDMS45NDk5NSA1LjY3MzgxIDEuNzI2MDkgNS40NDk5NSAxLjQ0OTk1IDUuNDQ5OTVDMS4xNzM4MSA1LjQ0OTk1IDAuOTQ5OTUxIDUuNjczODEgMC45NDk5NTEgNS45NDk5NVY4Ljk0OTk1QzAuOTQ5OTUxIDkuMjI2MDkgMS4xNzM4MSA5LjQ0OTk1IDEuNDQ5OTUgOS40NDk5NUMxLjcyNjA5IDkuNDQ5OTUgMS45NDk5NSA5LjIyNjA5IDEuOTQ5OTUgOC45NDk5NVY1Ljk0OTk1Wk0xMy40NSA1LjQ0OTk1QzEzLjcyNjEgNS40NDk5NSAxMy45NSA1LjY3MzgxIDEzLjk1IDUuOTQ5OTVWOC45NDk5NUMxMy45NSA5LjIyNjA5IDEzLjcyNjEgOS40NDk5NSAxMy40NSA5LjQ0OTk1QzEzLjE3MzggOS40NDk5NSAxMi45NSA5LjIyNjA5IDEyLjk1IDguOTQ5OTVWNS45NDk5NUMxMi45NSA1LjY3MzgxIDEzLjE3MzggNS40NDk5NSAxMy40NSA1LjQ0OTk1Wk0xMS40NSAwLjk0OTk1MUMxMS4xNzM4IDAuOTQ5OTUxIDEwLjk1IDEuMTczODEgMTAuOTUgMS40NDk5NUMxMC45NSAxLjcyNjA5IDExLjE3MzggMS45NDk5NSAxMS40NSAxLjk0OTk1SDEyLjk0OTlWMy40NDk5NUMxMi45NDk5IDMuNzI2MDkgMTMuMTczOCAzLjk0OTk1IDEzLjQ0OTkgMy45NDk5NUMxMy43MjYxIDMuOTQ5OTUgMTMuOTQ5OSAzLjcyNjA5IDEzLjk0OTkgMy40NDk5NVYxLjQ0OTk1QzEzLjk0OTkgMS4xNzM4MSAxMy43MjUyIDAuOTQ5OTUxIDEzLjQ0OSAwLjk0OTk1MUgxMS40NVpNMS40NDk5NSAxMC45NUMxLjcyNjA5IDEwLjk1IDEuOTQ5OTUgMTEuMTczOCAxLjk0OTk1IDExLjQ1VjEyLjk1SDMuNDQ5OTdDMy43MjYxMSAxMi45NSAzLjk0OTk3IDEzLjE3MzggMy45NDk5NyAxMy40NUMzLjk0OTk3IDEzLjcyNjEgMy43MjYxMSAxMy45NSAzLjQ0OTk3IDEzLjk1SDEuNDQ5OTVDMS4xNzM4MSAxMy45NSAwLjk0OTk1MSAxMy43MjYxIDAuOTQ5OTUxIDEzLjQ1VjExLjQ1QzAuOTQ5OTUxIDExLjE3MzggMS4xNzM4MSAxMC45NSAxLjQ0OTk1IDEwLjk1Wk0xMy45NSAxMS40NUMxMy45NSAxMS4xNzM4IDEzLjcyNjEgMTAuOTUgMTMuNDUgMTAuOTVDMTMuMTczOCAxMC45NDk5IDEyLjk1IDExLjE3MzggMTIuOTUgMTEuNDQ5OUwxMi45NDkxIDEyLjk1SDExLjQ1QzExLjE3MzggMTIuOTUgMTAuOTUgMTMuMTczOCAxMC45NSAxMy40NUMxMC45NSAxMy43MjYxIDExLjE3MzggMTMuOTUgMTEuNDUgMTMuOTVIMTMuNDQ5OUMxMy43MjYxIDEzLjk1IDEzLjk0OTkgMTMuNzI2MSAxMy45NDk5IDEzLjQ1TDEzLjk1IDExLjQ1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0senQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzY4OTJDMy44NDIyMiAwLjg3Njg5MiAwLjg3NzA3NSAzLjg0MjA0IDAuODc3MDc1IDcuNDk5NzJDMC44NzcwNzUgMTEuMTU3NCAzLjg0MjIyIDE0LjEyMjYgNy40OTk5MSAxNC4xMjI2QzExLjE1NzYgMTQuMTIyNiAxNC4xMjI3IDExLjE1NzQgMTQuMTIyNyA3LjQ5OTcyQzE0LjEyMjcgMy44NDIwNCAxMS4xNTc2IDAuODc2ODkyIDcuNDk5OTEgMC44NzY4OTJaTTcuMDAwMDMgMS44NDg2MUM0LjEwMTE0IDIuMTAxNyAxLjgyNzA3IDQuNTM1MTUgMS44MjcwNyA3LjQ5OTcyQzEuODI3MDcgMTAuNDY0MyA0LjEwMTE0IDEyLjg5NzcgNy4wMDAwMyAxMy4xNTA4VjEuODQ4NjFaTTguMDAwMDMgMTMuMTUwOEMxMC44OTg4IDEyLjg5NzYgMTMuMTcyNyAxMC40NjQyIDEzLjE3MjcgNy40OTk3MkMxMy4xNzI3IDQuNTM1MjQgMTAuODk4OCAyLjEwMTg1IDguMDAwMDMgMS44NDg2NFYxMy4xNTA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sV3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTEgMC44NzY4OTJDMy44NDIyMiAwLjg3Njg5MiAwLjg3NzA3NSAzLjg0MjA0IDAuODc3MDc1IDcuNDk5NzJDMC44NzcwNzUgMTEuMTU3NCAzLjg0MjIyIDE0LjEyMjYgNy40OTk5MSAxNC4xMjI2QzExLjE1NzYgMTQuMTIyNiAxNC4xMjI3IDExLjE1NzQgMTQuMTIyNyA3LjQ5OTcyQzE0LjEyMjcgMy44NDIwNCAxMS4xNTc2IDAuODc2ODkyIDcuNDk5OTEgMC44NzY4OTJaTTcuNDk5ODggMS44MjY4OUM0LjM2Njg4IDEuODI2OSAxLjgyNzA3IDQuMzY2NzIgMS44MjcwNyA3LjQ5OTcyQzEuODI3MDcgMTAuNjMyNyA0LjM2Njg4IDEzLjE3MjUgNy40OTk4OCAxMy4xNzI2VjEuODI2ODlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxHdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41IDNDMS4yMjM4NiAzIDEgMy4yMjM4NiAxIDMuNUMxIDMuNzc2MTQgMS4yMjM4NiA0IDEuNSA0SDEzLjVDMTMuNzc2MSA0IDE0IDMuNzc2MTQgMTQgMy41QzE0IDMuMjIzODYgMTMuNzc2MSAzIDEzLjUgM0gxLjVaTTEgNy41QzEgNy4yMjM4NiAxLjIyMzg2IDcgMS41IDdIMTMuNUMxMy43NzYxIDcgMTQgNy4yMjM4NiAxNCA3LjVDMTQgNy43NzYxNCAxMy43NzYxIDggMTMuNSA4SDEuNUMxLjIyMzg2IDggMSA3Ljc3NjE0IDEgNy41Wk0xIDExLjVDMSAxMS4yMjM5IDEuMjIzODYgMTEgMS41IDExSDEzLjVDMTMuNzc2MSAxMSAxNCAxMS4yMjM5IDE0IDExLjVDMTQgMTEuNzc2MSAxMy43NzYxIDEyIDEzLjUgMTJIMS41QzEuMjIzODYgMTIgMSAxMS43NzYxIDEgMTEuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFV0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02LjgxMTMgMS42NDcwNkM2LjYyMTg4IDIuODc5MTggNi42ODI2OCAzLjg4NTIzIDYuNzY4NDggNS4zMDQ5OUM2Ljc4NDE1IDUuNTY0MjYgNi44MDA2NSA1LjgzNzMyIDYuODE2NjEgNi4xMjgwOEM2LjgzMTExIDYuMzkyMDggNi42Mzc1OCA2LjYyMTcyIDYuMzc0OTUgNi42NTIxN0M2LjExMjMyIDYuNjgyNjIgNS44NzEzOCA2LjUwMzM0IDUuODI1MDkgNi4yNDMwNEw1Ljc0NzU0IDUuODA2OThDNS42NDQwMiA1LjE2NTI5IDUuNDgzNTUgNC4yNTQ4MSA1LjE3ODA3IDMuNDQ3NDFDNC44NjI0MSAyLjYxMzEyIDQuNDQ4NiAyLjA0MTIxIDMuOTM0MzYgMS44NjA0NEMzLjY0OTk0IDEuNzYxMDQgMy40MTkwMSAxLjg0Mjc5IDMuMjU4NjggMi4wMTA1MkMzLjA4NzQ2IDIuMTg5NjIgMi45OTc2IDIuNDcwNjUgMy4wNjI3IDIuNzUzOTlDMy4yMTQ2IDMuMzQ0MjQgMy40NDYyNyAzLjkxNjcgMy42OTgzNiA0LjUxODAyQzMuNzIwODIgNC41NzE1OCAzLjc0MzQ2IDQuNjI1NDMgMy43NjYyMSA0LjY3OTU0QzMuOTk1NCA1LjIyNDU3IDQuMjM2MTkgNS43OTcyIDQuNDE2NDQgNi4zOTA4MUw0LjQxNjkxIDYuMzkyMzhDNC41NjIgNi44NzU4NiA0LjY1NjQ2IDcuMjU5NSA0LjczMDg2IDcuNTYxNjVDNC43NjAzNCA3LjY4MTM4IDQuNzg2NjcgNy43ODgzMSA0LjgxMTc1IDcuODgzNTlDNC44Njc2OCA4LjA5NjA2IDQuNzc4MzYgOC4zMjAxNCA0LjU5MTYxIDguNDM1ODhDNC40MDQ4NiA4LjU1MTYxIDQuMTY0NDUgOC41MzE4OCAzLjk5OTA3IDguMzg3MjVDMy43Mzc0OSA4LjE1ODQ4IDMuNTE1IDcuOTI3ODQgMy4zMTgxNyA3LjcxODAyQzMuMjc2MjcgNy42NzMzNSAzLjIzNjAyIDcuNjMwMTggMy4xOTcwNSA3LjU4ODM4QzMuMDQ3NzcgNy40MjgyNiAyLjkxNzEyIDcuMjg4MTIgMi43ODMzNCA3LjE2MDI5QzIuNDU5ODkgNi44NTEyMiAyLjE4Mzk4IDYuNjgwMDQgMS44MDU4NSA2LjY0MzY5TDEuODAzMjQgNi42NDM0M0MxLjU2MTE3IDYuNjE4ODggMS40MTQwMiA2LjY2NDQxIDEuMzE3NTYgNi43MjYyN0MxLjIxODk5IDYuNzg5NDcgMS4xMTk4OCA2LjkwNDE0IDEuMDM3ODQgNy4xMTIzQzAuOTc2NTc2IDcuMjg0OTIgMS4wMTUxNSA3LjYyOTg3IDEuMTkyOSA3Ljk2OTExTDEuMTk3MjggNy45Nzc0N0MxLjQwMDg2IDguMzg0NTIgMS43NDQ3NSA4LjgxNTg3IDIuMTgxNDEgOS4yOTI5OUMyLjM5NzM5IDkuNTI4OTggMi42Mjg3MiA5Ljc2ODQ5IDIuODY5MzQgMTAuMDE3NEwyLjg3OTY2IDEwLjAyODFDMy4xMTU0NiAxMC4yNzIxIDMuMzU5NjIgMTAuNTI0NyAzLjU5NzEzIDEwLjc4MjdDNC40Mjg4IDExLjY4NjMgNS4yNzcwNiAxMi43NTM4IDUuNDYyNyAxNEgxMS41MDg3QzExLjU2MzYgMTIuNDM1MyAxMS44NzU2IDExLjI2OCAxMi4yODc1IDEwLjEzNDZDMTIuNDQ1NCA5LjcwMDQxIDEyLjYxMjEgOS4yODQxMiAxMi43ODI2IDguODU4MjlDMTMuMTA5NyA4LjA0MTM5IDEzLjQ1MDkgNy4xODkzNyAxMy43NzA1IDYuMTA4MjRDMTQuMDk4OSA0Ljk5NzM3IDE0LjAwOTcgNC4zNzAzMyAxMy44NjEzIDQuMDM5ODRDMTMuNzE3IDMuNzE4NTggMTMuNDkxNCAzLjYxNzg2IDEzLjM4MTYgMy41OTYwNkMxMy4xMzgxIDMuNTQ3NzQgMTMuMDM4NCAzLjYwOTQ3IDEyLjk2OTggMy42NzkwMUMxMi44NjcgMy43ODMxNiAxMi43Njk4IDMuOTgyNzMgMTIuNjkyMSA0LjMwMjY5QzEyLjYxNjYgNC42MTM0NSAxMi41NzUyIDQuOTY1MTcgMTIuNTMzIDUuMzI1MDFMMTIuNTI5OCA1LjM1Mjg1QzEyLjQ5MjQgNS42NzI0MiAxMi40NTA1IDYuMDMwMTYgMTIuMzY2NSA2LjMwMDk4QzEyLjMzODMgNi40MDY5OSAxMi4yODE5IDYuNTA0MDcgMTIuMTk3OSA2LjU3NTM5QzEyLjEzODIgNi42MjYxIDEyLjAxMDQgNi43MDgxOCAxMS44MzA5IDYuNjkzMTJDMTEuNTQyNCA2LjY2ODkxIDExLjM3MTIgNi40MjE0MyAxMS4zNjUgNi4xNDc4M0MxMS4zNTYgNS43NTQ1NCAxMS4zODgzIDUuMzU4NjQgMTEuNDA3NCA0Ljk2NjA4QzExLjQ0MjggNC4yMzY0NiAxMS40NzcgMy41MzM3IDExLjQyNDUgMi44MzQyTDExLjQyNDIgMi44MjkzNEMxMS4zOTE2IDIuMzI5OTcgMTEuMDQ5MyAyLjAwMjI4IDEwLjcwMDcgMS45MjI4QzEwLjUzMDUgMS44ODQwMSAxMC4zNjkgMS45MDYwMSAxMC4yMzQ3IDEuOTgzNUMxMC4xMDMgMi4wNTk0NiA5Ljk1NTM1IDIuMjEzMTggOS44NTc0IDIuNTEzOTRMOS44NTYzMSAyLjUxNzI2QzkuODE1MjUgMi42NDA0IDkuNzcyOTggMi44Nzc1MyA5LjczNjA2IDMuMjEyNEM5LjcwMDQ0IDMuNTM1NDIgOS42NzMzNyAzLjkxMjc5IDkuNjUxNTYgNC4yOTQxOEM5LjYzMjkgNC42MjAzMyA5LjYxNzg1IDQuOTU4NCA5LjYwNDM0IDUuMjYxOTRDOS41ODcyOCA1LjY0NTI5IDkuNTcyNjcgNS45NzM1NyA5LjU1NjMzIDYuMTUzMkM5LjU0OTgzIDYuMjI0NTkgOS41MjkzOSA2LjI5NDkzIDkuNDk1MDEgNi4zNTc4NUM5LjQ3MzU2IDYuMzk3MTEgOS4zNjExNSA2LjYwOTQ3IDkuMDcxMDYgNi42MTg0M0M4Ljc3OTE3IDYuNjI3NDQgOC42Mzk3NSA2LjQwMDU3IDguNjE2OTggNi4zNTkxOUM4LjU1NjM0IDYuMjQ4OTkgOC41NTA2NiA2LjExODA3IDguNTQ3NTQgNS45OTI4M0M4LjU0NDc0IDUuODgwNjQgOC41NDI5NCA1LjcxNzk4IDguNTQxNzQgNS41NDc2N0M4LjUzOTM1IDUuMjA1ODIgOC41MzkzNSA0LjgxOTE5IDguNTM5MzUgNC43MDk1MkM4LjUzOTM1IDMuNjY1NyA4LjUzODM4IDIuNjUzNzIgOC40NDcxNCAxLjY0MzcyQzguMzkxODMgMS4yNDEyNyA4LjA2Mjc4IDEuMDA0NTUgNy42NDM2IDEuMDAwMDVDNy4yMjM5OSAwLjk5NTU1MiA2Ljg3OTE4IDEuMjI3MDQgNi44MTEzIDEuNjQ3MDZaTTkuNDEyMTkgMS4zNjE3QzkuMjE0NjkgMC40NDg0ODQgOC4zOTkxMyAwLjAwODEwMzI0IDcuNjU0MzMgMC4wMDAxMTE1NEM2Ljg2NDUyIC0wLjAwODM2MzA4IDUuOTg3NjEgMC40NjU4ODEgNS44MjM2NSAxLjQ5MDM3TDUuODIzMTggMS40OTMzNEM1Ljc4MjM5IDEuNzU4NCA1Ljc1MjI5IDIuMDE0ODEgNS43MzA5IDIuMjY2NTJDNS4zOTQyMyAxLjY3MzY0IDQuOTI2MjIgMS4xNDg5NCA0LjI2NTUgMC45MTY4NTlDMy41ODY2MSAwLjY3OTMxMiAyLjk0OTIgMC44ODcwODcgMi41MzU4MiAxLjMxOTUyQzIuMTM0MTUgMS43Mzk3MSAxLjk0NDM4IDIuMzY3NDIgMi4wOTAzMSAyLjk4NzQ2TDIuMDkyNjkgMi45OTcxM0MyLjI2NDc4IDMuNjY4MDggMi41MjM5NiA0LjMwMzE2IDIuNzc2MTMgNC45MDQ2NUMyLjc5ODE0IDQuOTU3MTcgMi44MjAxIDUuMDA5NDEgMi44NDE5NCA1LjA2MTM5QzMuMDIxMzkgNS40ODg0MiAzLjE5Mzc4IDUuODk4NjYgMy4zMzg3MSA2LjMxMjU2QzIuOTY0MDQgNS45ODE0MiAyLjUxOTI1IDUuNzA3OTYgMS45MDI3NiA1LjY0ODRDMS40ODg2NSA1LjYwNjYzIDEuMTAzOTEgNS42NzUzNiAwLjc3NzgwNSA1Ljg4NDQ0QzAuNDU0MjM5IDYuMDkxOSAwLjI0MDY3MSA2LjQwNDA1IDAuMTA0MTg3IDYuNzU0MDZMMC4xMDA4NjggNi43NjI4MUMtMC4xMDE4NCA3LjMxMjg2IDAuMDY2MzMxMiA3Ljk3MTU3IDAuMzA0ODk1IDguNDI4OTdDMC41NzM3MDQgOC45NjQ3NCAwLjk5NjEwNCA5LjQ3OTA0IDEuNDQzNzIgOS45NjgxM0MxLjY3MDQ2IDEwLjIxNTkgMS45MTEzNiAxMC40NjUyIDIuMTUwMzMgMTAuNzEyNEwyLjE1NjgyIDEwLjcxOTFDMi4zOTUyNCAxMC45NjU4IDIuNjMyMTcgMTEuMjEwOSAyLjg2MTM0IDExLjQ1OTlDMy44MDkzNyAxMi40OSA0LjUwMDAyIDEzLjQ2MzIgNC41MDAwMiAxNC41QzQuNTAwMDIgMTQuNzc2MSA0LjcyMzg4IDE1IDUuMDAwMDIgMTVIMTJDMTIuMjc2MiAxNSAxMi41IDE0Ljc3NjEgMTIuNSAxNC41QzEyLjUgMTIuODIxMiAxMi44MDIxIDExLjY0NjIgMTMuMjI3NCAxMC40NzYyQzEzLjM2NTMgMTAuMDk2OCAxMy41MjE2IDkuNzA1NzkgMTMuNjg2OCA5LjI5MjQ3QzE0LjAyMzggOC40NDkyMiAxNC4zOTggNy41MTI5OCAxNC43Mjk1IDYuMzkxNzVDMTUuMDk1NiA1LjE1MzI0IDE1LjA1NTkgNC4yNTkwNCAxNC43NzM1IDMuNjMwMTdDMTQuNDg3IDIuOTkyMDggMTMuOTc5OCAyLjY5NTMgMTMuNTc2MyAyLjYxNTJDMTMuMTI3NiAyLjUyNjE0IDEyLjczNjcgMi42MDQ3NSAxMi40MjY4IDIuODMwODFDMTIuNDI1MyAyLjgwNzczIDEyLjQyMzYgMi43ODQ2OCAxMi40MjE5IDIuNzYxNjdDMTIuMzU4NyAxLjgxMDUgMTEuNjkwNyAxLjEyMjg1IDEwLjkyMyAwLjk0NzgyMUMxMC41MzQ2IDAuODU5Mjg3IDEwLjExMTEgMC45MDAzOTMgOS43MzUwOSAxLjExNzI0QzkuNjE4NTIgMS4xODQ0NiA5LjUxMDU1IDEuMjY2MjMgOS40MTIxOSAxLjM2MTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxxdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC43NTQzMiAyLjA1MDJDOC41MDU3OSAyLjA1MDIgOC4zMDQzMiAyLjI1MTY3IDguMzA0MzIgMi41MDAyQzguMzA0MzIgMi43NDg3MyA4LjUwNTc5IDIuOTUwMiA4Ljc1NDMyIDIuOTUwMkg5Ljk0OTk3VjcuMDUwMDRINS4wNDk5N1YyLjk1MDJINi4yNTQzMkM2LjUwMjg1IDIuOTUwMiA2LjcwNDMyIDIuNzQ4NzMgNi43MDQzMiAyLjUwMDJDNi43MDQzMiAyLjI1MTY3IDYuNTAyODUgMi4wNTAyIDYuMjU0MzIgMi4wNTAySDIuNzU0MzJDMi41MDU3OSAyLjA1MDIgMi4zMDQzMiAyLjI1MTY3IDIuMzA0MzIgMi41MDAyQzIuMzA0MzIgMi43NDg3MyAyLjUwNTc5IDIuOTUwMiAyLjc1NDMyIDIuOTUwMkgzLjk0OTk3VjEyLjA1MDJIMi43NTQzMkMyLjUwNTc5IDEyLjA1MDIgMi4zMDQzMiAxMi4yNTE3IDIuMzA0MzIgMTIuNTAwMkMyLjMwNDMyIDEyLjc0ODcgMi41MDU3OSAxMi45NTAyIDIuNzU0MzIgMTIuOTUwMkg2LjI1NDMyQzYuNTAyODUgMTIuOTUwMiA2LjcwNDMyIDEyLjc0ODcgNi43MDQzMiAxMi41MDAyQzYuNzA0MzIgMTIuMjUxNyA2LjUwMjg1IDEyLjA1MDIgNi4yNTQzMiAxMi4wNTAySDUuMDQ5OTdWNy45NTAwNEg5Ljk0OTk3VjEyLjA1MDJIOC43NTQzMkM4LjUwNTc5IDEyLjA1MDIgOC4zMDQzMiAxMi4yNTE3IDguMzA0MzIgMTIuNTAwMkM4LjMwNDMyIDEyLjc0ODcgOC41MDU3OSAxMi45NTAyIDguNzU0MzIgMTIuOTUwMkgxMi4yNTQzQzEyLjUwMjggMTIuOTUwMiAxMi43MDQzIDEyLjc0ODcgMTIuNzA0MyAxMi41MDAyQzEyLjcwNDMgMTIuMjUxNyAxMi41MDI4IDEyLjA1MDIgMTIuMjU0MyAxMi4wNTAySDExLjA1VjIuOTUwMkgxMi4yNTQzQzEyLjUwMjggMi45NTAyIDEyLjcwNDMgMi43NDg3MyAxMi43MDQzIDIuNTAwMkMxMi43MDQzIDIuMjUxNjcgMTIuNTAyOCAyLjA1MDIgMTIuMjU0MyAyLjA1MDJIOC43NTQzMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFl0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjE4MTMgMS42ODE3OUM3LjM1NzA0IDEuNTA2MDUgNy42NDE5NiAxLjUwNjA1IDcuODE3NyAxLjY4MTc5TDEwLjMxNzcgNC4xODE3OUMxMC40OTM0IDQuMzU3NTMgMTAuNDkzNCA0LjY0MjQ1IDEwLjMxNzcgNC44MTgxOUMxMC4xNDIgNC45OTM5MiA5Ljg1NzA0IDQuOTkzOTIgOS42ODEzIDQuODE4MTlMNy45NDk1IDMuMDg2MzhMNy45NDk1IDExLjkxMzZMOS42ODEzIDEwLjE4MThDOS44NTcwNCAxMC4wMDYxIDEwLjE0MiAxMC4wMDYxIDEwLjMxNzcgMTAuMTgxOEMxMC40OTM0IDEwLjM1NzUgMTAuNDkzNCAxMC42NDI0IDEwLjMxNzcgMTAuODE4Mkw3LjgxNzcgMTMuMzE4MkM3LjczMzMxIDEzLjQwMjYgNy42MTg4NSAxMy40NSA3LjQ5OTUgMTMuNDVDNy4zODAxNSAxMy40NSA3LjI2NTY5IDEzLjQwMjYgNy4xODEzIDEzLjMxODJMNC42ODEzIDEwLjgxODJDNC41MDU1NyAxMC42NDI0IDQuNTA1NTcgMTAuMzU3NSA0LjY4MTMgMTAuMTgxOEM0Ljg1NzA0IDEwLjAwNjEgNS4xNDE5NiAxMC4wMDYxIDUuMzE3NyAxMC4xODE4TDcuMDQ5NSAxMS45MTM2TDcuMDQ5NSAzLjA4NjM4TDUuMzE3NyA0LjgxODE5QzUuMTQxOTYgNC45OTM5MiA0Ljg1NzA0IDQuOTkzOTIgNC42ODEzIDQuODE4MTlDNC41MDU1NyA0LjY0MjQ1IDQuNTA1NTcgNC4zNTc1MyA0LjY4MTMgNC4xODE3OUw3LjE4MTMgMS42ODE3OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEt0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjA3OTI2IDAuMjIyMjUzQzcuMzEyNzUgLTAuMDA3NDM0IDcuNjg3MyAtMC4wMDc0MzQgNy45MjA3OSAwLjIyMjI1M0wxNC42NzA4IDYuODYyMjdDMTQuOTA3IDcuMDk0NjUgMTQuOTEwMSA3LjQ3NDUzIDE0LjY3NzggNy43MTA3NkMxNC40NDU0IDcuOTQ3IDE0LjA2NTUgNy45NTAxMiAxMy44MjkzIDcuNzE3NzNMMTMgNi45MDIwMVYxMi41QzEzIDEyLjc3NjEgMTIuNzc2MiAxMyAxMi41IDEzSDIuNTAwMDJDMi4yMjM4OCAxMyAyLjAwMDAyIDEyLjc3NjEgMi4wMDAwMiAxMi41VjYuOTAyMDFMMS4xNzA3OSA3LjcxNzczQzAuOTM0NTU4IDcuOTUwMTIgMC41NTQ2NzIgNy45NDcgMC4zMjIyOSA3LjcxMDc2QzAuMDg5OTA3OSA3LjQ3NDUzIDAuMDkzMDI4MyA3LjA5NDY1IDAuMzI5MjYgNi44NjIyN0w3LjA3OTI2IDAuMjIyMjUzWk03LjUwMDAyIDEuNDkxNjNMMTIgNS45MTgzMVYxMkgxMFY4LjQ5OTk5QzEwIDguMjIzODUgOS43NzYxNyA3Ljk5OTk5IDkuNTAwMDIgNy45OTk5OUg2LjUwMDAyQzYuMjIzODggNy45OTk5OSA2LjAwMDAyIDguMjIzODUgNi4wMDAwMiA4LjQ5OTk5VjEySDMuMDAwMDJWNS45MTgzMUw3LjUwMDAyIDEuNDkxNjNaTTcuMDAwMDIgMTJIOS4wMDAwMlY4Ljk5OTk5SDcuMDAwMDJWMTJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxYdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41IDAuMDAzMjk1OUM2LjgwNDczIDAuMDAzMjk1OSA2LjI0OTUzIDAuMjgxMTA2IDYuMjUgMC43NDk5OTVDNi4yNSAwLjk5NzI1OCA2LjQyNDQ2IDEuMTIwMTQgNi41NzY4NyAxLjIyNzQ5QzYuNjk1MDcgMS4zMTA3NCA2LjggMS4zODQ2NSA2LjggMS41QzYuOCAxLjcwNzEgNi4wNjIyNCAxLjc0MjY0IDUuMTk3ODkgMS43ODQyN0MzLjk3NTUzIDEuODQzMTQgMi41IDEuOTE0MjEgMi41IDIuNUMyLjUgMi43NzYxNCAyLjcyMzg2IDMgMyAzSDEyQzEyLjI3NjEgMyAxMi41IDIuNzc2MTQgMTIuNSAyLjVDMTIuNSAxLjkxNDIxIDExLjAyNDUgMS44NDMxNCA5LjgwMjExIDEuNzg0MjdDOC45Mzc3NiAxLjc0MjY0IDguMiAxLjcwNzEgOC4yIDEuNUM4LjIgMS4zODQ2NSA4LjMwNDkzIDEuMzEwNzQgOC40MjMxMyAxLjIyNzQ5QzguNTc1NTQgMS4xMjAxNCA4Ljc1IDAuOTk3MjU4IDguNzUgMC43NDk5OTVDOC43NTA0NyAwLjI4MTEwNiA4LjE5NTI3IDAuMDAzMjk1OSA3LjUgMC4wMDMyOTU5Wk0yLjg5NDUxIDYuMTIyNjZDMi4yNTgwNiA2LjUyNDcxIDEuOTA0MTcgNy4zMTExOCAyLjAyNDczIDguMDU1NkwyLjgzNTg4IDEyLjQ3NzJDMy4wMDk5MyAxMy4zNTYyIDMuNzYyOSAxNCA0LjY2MDYxIDE0SDEwLjMzNzNDMTEuMjM1NCAxNCAxMS45ODg0IDEzLjM1NjIgMTIuMTYyNSAxMi40NzcyTDEyLjk3MzYgOC4wNTYwN0MxMy4wODkgNy4zMjM1OCAxMi44Mjg0IDYuNTMyNzYgMTIuMTMzMSA2LjA5MzczQzExLjcyODMgNS44MzAxMyAxMS42NDEyIDUuMzMyMzEgMTIuMTMzMSA1LjEyNzk2QzEyLjgyODQgNC44NjQzNSAxMi42OTQ4IDQgMTIgNEgxMC4zMDAxSDYuODAwMDVIMi45OTk5NkMyLjMwNDY5IDQgMi4xOTg3OCA0Ljg5MzI4IDIuODk0NTEgNS4xNTY4OUMzLjM4NjQyIDUuMzMyMzEgMy4yOTkzOSA1LjgzMDEzIDIuODk0NTEgNi4xMjI2NlpNOC4yMDAwNiA2LjI1QzguMjAwMDYgNS44MTc2OSA4LjA4NTcyIDUuMzc2MTUgNy45MDYzNSA1TDQuMTEwOTMgNUM0LjIwNjI2IDUuMjEzMTIgNC4yNDE5IDUuNDM4ODkgNC4yMjkwNCA1LjY1NTIxQzQuMTk1MjIgNi4yMjQxMiAzLjg0NTg3IDYuNjY4OTkgMy40ODAxNiA2LjkzMzIyTDMuNDU0OTIgNi45NTE0NkwzLjQyODU4IDYuOTY4MUMzLjEzNDA3IDcuMTU0MTQgMi45NTgwMSA3LjUzOTg5IDMuMDEwNTggNy44ODc0OUwzLjgxNzk3IDEyLjI4ODZDMy45MDUxMyAxMi43MTU0IDQuMjYxNDggMTMgNC42NjA2MSAxM0gxMC4zMzczQzEwLjczNyAxMyAxMS4wOTMyIDEyLjcxNTMgMTEuMTgwNCAxMi4yODg2TDExLjk4NzQgNy44ODk4QzEyLjA0OCA3LjQ4MjQ3IDExLjg5NTQgNy4xMjYzMSAxMS41OTkyIDYuOTM5MjdMMTEuNTg3NSA2LjkzMTg0TDExLjU4NzUgNi45MzE3NkMxMS4xOTQ3IDYuNjc2MDIgMTAuODMzMSA2LjIyNzg1IDEwLjc5ODYgNS42NDc5OEMxMC43ODQ2IDUuNDEyIDEwLjgyNjQgNS4xOTM5NyAxMC45MTEyIDVIOS4wNTUxN0M5LjAxOTg3IDUuMTQ2MTEgOS4wMDAwNiA1LjMxMjAxIDkuMDAwMDYgNS41QzkuMDAwMDYgNS45NzQ1IDkuMjE2NzkgNi4zNzEyNyA5LjQ0MzY3IDYuNzg2NjJDOS42OTI4NCA3LjI0Mjc4IDkuOTU0MjUgNy43MjEzNiA5Ljk1NDI1IDguMzQ5OTNDOS45NTQyNSA5LjI2OTggOS40OTg2OCA5Ljg0MjA1IDguNjIxODkgOS44NDIwNUM4LjEzMjA2IDkuODQyMDUgNy41NzgxOCA5LjQ2MDk3IDcuNTc4MTggOC43NTc4MUM3LjU3ODE4IDguMzUyNzkgNy43MTU1OCA4LjAxNjQ2IDcuODYxMjEgNy42NTk5OEM4LjAyNTQgNy4yNTgwNiA4LjIwMDA2IDYuODMwNTEgOC4yMDAwNiA2LjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0IDExLjAwMDFWNC4wMDAwNkwxIDQuMDAwMDZMMSAxMS4wMDAxSDE0Wk0xNSA0LjAwMDA2VjExLjAwMDFDMTUgMTEuNTUyMyAxNC41NTIzIDEyLjAwMDEgMTQgMTIuMDAwMUgxQzAuNDQ3NzE1IDEyLjAwMDEgMCAxMS41NTIzIDAgMTEuMDAwMVY0LjAwMDA2QzAgMy40NDc3OCAwLjQ0NzcxNSAzLjAwMDA2IDEgMy4wMDAwNkgxNEMxNC41NTIzIDMuMDAwMDYgMTUgMy40NDc3OCAxNSA0LjAwMDA2Wk0yIDUuMjVDMiA1LjExMTkzIDIuMTExOTMgNSAyLjI1IDVINS43NUM1Ljg4ODA3IDUgNiA1LjExMTkzIDYgNS4yNVY5Ljc1QzYgOS44ODgwNyA1Ljg4ODA3IDEwIDUuNzUgMTBIMi4yNUMyLjExMTkzIDEwIDIgOS44ODgwNyAyIDkuNzVWNS4yNVpNNy41IDdDNy4yMjM4NiA3IDcgNy4yMjM4NiA3IDcuNUM3IDcuNzc2MTQgNy4yMjM4NiA4IDcuNSA4SDEwLjVDMTAuNzc2MSA4IDExIDcuNzc2MTQgMTEgNy41QzExIDcuMjIzODYgMTAuNzc2MSA3IDEwLjUgN0g3LjVaTTcgOS41QzcgOS4yMjM4NiA3LjIyMzg2IDkgNy41IDlIMTIuNUMxMi43NzYxIDkgMTMgOS4yMjM4NiAxMyA5LjVDMTMgOS43NzYxNCAxMi43NzYxIDEwIDEyLjUgMTBINy41QzcuMjIzODYgMTAgNyA5Ljc3NjE0IDcgOS41Wk03LjUgNUM3LjIyMzg2IDUgNyA1LjIyMzg2IDcgNS41QzcgNS43NzYxNCA3LjIyMzg2IDYgNy41IDZIMTEuNUMxMS43NzYxIDYgMTIgNS43NzYxNCAxMiA1LjVDMTIgNS4yMjM4NiAxMS43NzYxIDUgMTEuNSA1SDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEp0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjUgMUgxMi41QzEzLjMyODQgMSAxNCAxLjY3MTU3IDE0IDIuNVYxMi41QzE0IDEzLjMyODQgMTMuMzI4NCAxNCAxMi41IDE0SDIuNUMxLjY3MTU3IDE0IDEgMTMuMzI4NCAxIDEyLjVWMi41QzEgMS42NzE1NyAxLjY3MTU3IDEgMi41IDFaTTIuNSAyQzIuMjIzODYgMiAyIDIuMjIzODYgMiAyLjVWOC4zNjM2TDMuNjgxOCA2LjY4MThDMy43NjgwOSA2LjU5NTUxIDMuODg1NzIgNi41NDc5NyA0LjAwNzc0IDYuNTUwMDdDNC4xMjk3NSA2LjU1MjE2IDQuMjQ1NjggNi42MDM3MiA0LjMyODk1IDYuNjkyOTNMNy44NzM1NSAxMC40OTAxTDEwLjY4MTggNy42ODE4QzEwLjg1NzUgNy41MDYwNyAxMS4xNDI1IDcuNTA2MDcgMTEuMzE4MiA3LjY4MThMMTMgOS4zNjM2VjIuNUMxMyAyLjIyMzg2IDEyLjc3NjEgMiAxMi41IDJIMi41Wk0yIDEyLjVWOS42MzY0TDMuOTg4ODcgNy42NDc1M0w3LjUzMTEgMTEuNDQyMUw4Ljk0MTEzIDEzSDIuNUMyLjIyMzg2IDEzIDIgMTIuNzc2MSAyIDEyLjVaTTEyLjUgMTNIMTAuMTU1TDguNDgzMzYgMTEuMTUzTDExIDguNjM2NEwxMyAxMC42MzY0VjEyLjVDMTMgMTIuNzc2MSAxMi43NzYxIDEzIDEyLjUgMTNaTTYuNjQ5MjIgNS41QzYuNjQ5MjIgNS4wMzAxMyA3LjAzMDEzIDQuNjQ5MjIgNy41IDQuNjQ5MjJDNy45Njk4NyA0LjY0OTIyIDguMzUwNzggNS4wMzAxMyA4LjM1MDc4IDUuNUM4LjM1MDc4IDUuOTY5ODcgNy45Njk4NyA2LjM1MDc4IDcuNSA2LjM1MDc4QzcuMDMwMTMgNi4zNTA3OCA2LjY0OTIyIDUuOTY5ODcgNi42NDkyMiA1LjVaTTcuNSAzLjc0OTIyQzYuNTMzMDcgMy43NDkyMiA1Ljc0OTIyIDQuNTMzMDcgNS43NDkyMiA1LjVDNS43NDkyMiA2LjQ2NjkzIDYuNTMzMDcgNy4yNTA3OCA3LjUgNy4yNTA3OEM4LjQ2NjkzIDcuMjUwNzggOS4yNTA3OCA2LjQ2NjkzIDkuMjUwNzggNS41QzkuMjUwNzggNC41MzMwNyA4LjQ2NjkzIDMuNzQ5MjIgNy41IDMuNzQ5MjJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxlbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy40OTk5MSAwLjg3Njg5MkMzLjg0MjIyIDAuODc2ODkyIDAuODc3MDc1IDMuODQyMDQgMC44NzcwNzUgNy40OTk3MkMwLjg3NzA3NSAxMS4xNTc0IDMuODQyMjIgMTQuMTIyNiA3LjQ5OTkxIDE0LjEyMjZDMTEuMTU3NiAxNC4xMjI2IDE0LjEyMjcgMTEuMTU3NCAxNC4xMjI3IDcuNDk5NzJDMTQuMTIyNyAzLjg0MjA0IDExLjE1NzYgMC44NzY4OTIgNy40OTk5MSAwLjg3Njg5MlpNMS44MjcwNyA3LjQ5OTcyQzEuODI3MDcgNC4zNjY3MSA0LjM2Njg5IDEuODI2ODkgNy40OTk5MSAxLjgyNjg5QzEwLjYzMjkgMS44MjY4OSAxMy4xNzI3IDQuMzY2NzEgMTMuMTcyNyA3LjQ5OTcyQzEzLjE3MjcgMTAuNjMyNyAxMC42MzI5IDEzLjE3MjYgNy40OTk5MSAxMy4xNzI2QzQuMzY2ODkgMTMuMTcyNiAxLjgyNzA3IDEwLjYzMjcgMS44MjcwNyA3LjQ5OTcyWk04LjI0OTkyIDQuNDk5OTlDOC4yNDk5MiA0LjkxNDIgNy45MTQxMyA1LjI0OTk5IDcuNDk5OTIgNS4yNDk5OUM3LjA4NTcxIDUuMjQ5OTkgNi43NDk5MiA0LjkxNDIgNi43NDk5MiA0LjQ5OTk5QzYuNzQ5OTIgNC4wODU3NyA3LjA4NTcxIDMuNzQ5OTkgNy40OTk5MiAzLjc0OTk5QzcuOTE0MTMgMy43NDk5OSA4LjI0OTkyIDQuMDg1NzcgOC4yNDk5MiA0LjQ5OTk5Wk02LjAwMDAzIDUuOTk5OTlINi41MDAwM0g3LjUwMDAzQzcuNzc2MTggNS45OTk5OSA4LjAwMDAzIDYuMjIzODQgOC4wMDAwMyA2LjQ5OTk5VjkuOTk5OTlIOC41MDAwM0g5LjAwMDAzVjExSDguNTAwMDNINy41MDAwM0g2LjUwMDAzSDYuMDAwMDNWOS45OTk5OUg2LjUwMDAzSDcuMDAwMDNWNi45OTk5OUg2LjUwMDAzSDYuMDAwMDNWNS45OTk5OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHRuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02LjUgMUM2LjIyMzg2IDEgNiAxLjIyMzg2IDYgMS41QzYgMS43NzYxNCA2LjIyMzg2IDIgNi41IDJDNy4xMjY3MSAyIDcuNDU3MTggMi4yMDAyOCA3LjY1NTYzIDIuNDc4MTJDNy44NzgxIDIuNzg5NTcgOCAzLjI4ODM3IDggNFYxMUM4IDExLjcxMTYgNy44NzgxIDEyLjIxMDQgNy42NTU2MyAxMi41MjE5QzcuNDU3MTggMTIuNzk5NyA3LjEyNjcxIDEzIDYuNSAxM0M2LjIyMzg2IDEzIDYgMTMuMjIzOSA2IDEzLjVDNiAxMy43NzYxIDYuMjIzODYgMTQgNi41IDE0QzcuMzczMjkgMTQgOC4wNDI4MiAxMy43MDAzIDguNDY5MzcgMTMuMTAzMUM4LjQ3OTc2IDEzLjA4ODYgOC40ODk5NyAxMy4wNzM5IDguNSAxMy4wNTkxQzguNTEwMDMgMTMuMDczOSA4LjUyMDI0IDEzLjA4ODYgOC41MzA2MyAxMy4xMDMxQzguOTU3MTggMTMuNzAwMyA5LjYyNjcxIDE0IDEwLjUgMTRDMTAuNzc2MSAxNCAxMSAxMy43NzYxIDExIDEzLjVDMTEgMTMuMjIzOSAxMC43NzYxIDEzIDEwLjUgMTNDOS44NzMyOSAxMyA5LjU0MjgyIDEyLjc5OTcgOS4zNDQzNyAxMi41MjE5QzkuMTIxOSAxMi4yMTA0IDkgMTEuNzExNiA5IDExVjRDOSAzLjI4ODM3IDkuMTIxOSAyLjc4OTU3IDkuMzQ0MzcgMi40NzgxMkM5LjU0MjgyIDIuMjAwMjggOS44NzMyOSAyIDEwLjUgMkMxMC43NzYxIDIgMTEgMS43NzYxNCAxMSAxLjVDMTEgMS4yMjM4NiAxMC43NzYxIDEgMTAuNSAxQzkuNjI2NzEgMSA4Ljk1NzE4IDEuMjk5NzIgOC41MzA2MyAxLjg5Njg4QzguNTIwMjQgMS45MTE0MyA4LjUxMDAzIDEuOTI2MTEgOC41IDEuOTQwOUM4LjQ4OTk3IDEuOTI2MTEgOC40Nzk3NiAxLjkxMTQzIDguNDY5MzcgMS44OTY4OEM4LjA0MjgyIDEuMjk5NzIgNy4zNzMyOSAxIDYuNSAxWk0xNCA1SDExVjRIMTRDMTQuNTUyMyA0IDE1IDQuNDQ3NzIgMTUgNVYxMEMxNSAxMC41NTIzIDE0LjU1MjMgMTEgMTQgMTFIMTFWMTBIMTRWNVpNNiA0VjVIMUwxIDEwSDZWMTFIMUMwLjQ0NzcxNSAxMSAwIDEwLjU1MjMgMCAxMFY1QzAgNC40NDc3MiAwLjQ0NzcxNSA0IDEgNEg2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNDk5OTggMC41QzUuNDk5OTggMC4yMjM4NTggNS43MjM4MyAwIDUuOTk5OTggMEg3LjQ5OTk4SDguOTk5OThDOS4yNzYxMiAwIDkuNDk5OTggMC4yMjM4NTggOS40OTk5OCAwLjVDOS40OTk5OCAwLjc3NjE0MiA5LjI3NjEyIDEgOC45OTk5OCAxSDcuOTk5OThWMi4xMTkyMkM5LjA5ODMyIDIuMjA0MDkgMTAuMTE5IDIuNTY2MjIgMTAuOTkyIDMuMTM1NzJDMTEuMDExNiAzLjEwODUxIDExLjAzMzYgMy4wODI1MiAxMS4wNTggMy4wNTgwNkwxMi4wNTggMi4wNTgwNkMxMi4zMDIxIDEuODEzOTggMTIuNjk3OCAxLjgxMzk4IDEyLjk0MTkgMi4wNTgwNkMxMy4xODYgMi4zMDIxNCAxMy4xODYgMi42OTc4NiAxMi45NDE5IDIuOTQxOTRMMTEuOTY3IDMuOTE2ODJDMTMuMTU5NSA1LjA3OTI1IDEzLjkgNi43MDMxNCAxMy45IDguNDk5OThDMTMuOSAxMi4wMzQ2IDExLjAzNDYgMTQuOSA3LjQ5OTk4IDE0LjlDMy45NjUzNSAxNC45IDEuMDk5OTggMTIuMDM0NiAxLjA5OTk4IDguNDk5OThDMS4wOTk5OCA1LjEzMzYxIDMuNjk5MDQgMi4zNzQzIDYuOTk5OTggMi4xMTkyMlYxSDUuOTk5OThDNS43MjM4MyAxIDUuNDk5OTggMC43NzYxNDIgNS40OTk5OCAwLjVaTTIuMDk5OTggOC40OTk5OEMyLjA5OTk4IDUuNTE3NjQgNC41MTc2NCAzLjA5OTk4IDcuNDk5OTggMy4wOTk5OEMxMC40ODIzIDMuMDk5OTggMTIuOSA1LjUxNzY0IDEyLjkgOC40OTk5OEMxMi45IDExLjQ4MjMgMTAuNDgyMyAxMy45IDcuNDk5OTggMTMuOUM0LjUxNzY0IDEzLjkgMi4wOTk5OCAxMS40ODIzIDIuMDk5OTggOC40OTk5OFpNNy40OTk5OCA4LjQ5OTk4VjQuMDk5OThDNS4wNjk5MiA0LjA5OTk4IDMuMDk5OTggNi4wNjk5MiAzLjA5OTk4IDguNDk5OThDMy4wOTk5OCAxMC45MyA1LjA2OTkyIDEyLjkgNy40OTk5OCAxMi45QzguNzE1IDEyLjkgOS44MTUgMTIuNDA3NSAxMC42MTEyIDExLjYxMTJMNy40OTk5OCA4LjQ5OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNzU0MzIgMC44MTk1MzdDNy41OTc0MiAwLjcyNjgyMSA3LjQwMjUgMC43MjY4MjEgNy4yNDU1OSAwLjgxOTUzN0wxLjc0NTU5IDQuMDY5NTRDMS41OTMzNiA0LjE1OTQ5IDEuNDk5OTYgNC4zMjMxNyAxLjQ5OTk2IDQuNUMxLjQ5OTk2IDQuNjc2ODMgMS41OTMzNiA0Ljg0MDUxIDEuNzQ1NTkgNC45MzA0Nkw3LjI0NTU5IDguMTgwNDZDNy40MDI1IDguMjczMTggNy41OTc0MiA4LjI3MzE4IDcuNzU0MzIgOC4xODA0NkwxMy4yNTQzIDQuOTMwNDZDMTMuNDA2NiA0Ljg0MDUxIDEzLjUgNC42NzY4MyAxMy41IDQuNUMxMy41IDQuMzIzMTcgMTMuNDA2NiA0LjE1OTQ5IDEzLjI1NDMgNC4wNjk1NEw3Ljc1NDMyIDAuODE5NTM3Wk03LjQ5OTk2IDcuMTY5MjNMMi45ODI4IDQuNUw3LjQ5OTk2IDEuODMwNzdMMTIuMDE3MSA0LjVMNy40OTk5NiA3LjE2OTIzWk0xLjU2OTUgNy40OTU2NEMxLjcwOTk4IDcuMjU3OSAyLjAxNjU5IDcuMTc5MDYgMi4yNTQzMiA3LjMxOTU0TDcuNDk5OTYgMTAuNDE5MkwxMi43NDU2IDcuMzE5NTRDMTIuOTgzMyA3LjE3OTA2IDEzLjI4OTkgNy4yNTc5IDEzLjQzMDQgNy40OTU2NEMxMy41NzA5IDcuNzMzMzcgMTMuNDkyMSA4LjAzOTk4IDEzLjI1NDMgOC4xODA0Nkw3Ljc1NDMyIDExLjQzMDVDNy41OTc0MiAxMS41MjMyIDcuNDAyNSAxMS41MjMyIDcuMjQ1NTkgMTEuNDMwNUwxLjc0NTU5IDguMTgwNDZDMS41MDc4NiA4LjAzOTk4IDEuNDI5MDEgNy43MzMzNyAxLjU2OTUgNy40OTU2NFpNMS41Njk0OSAxMC40OTU2QzEuNzA5OTggMTAuMjU3OSAyLjAxNjU4IDEwLjE3OTEgMi4yNTQzMiAxMC4zMTk1TDcuNDk5OTYgMTMuNDE5MkwxMi43NDU2IDEwLjMxOTVDMTIuOTgzMyAxMC4xNzkxIDEzLjI4OTkgMTAuMjU3OSAxMy40MzA0IDEwLjQ5NTZDMTMuNTcwOSAxMC43MzM0IDEzLjQ5MjEgMTEuMDQgMTMuMjU0MyAxMS4xODA1TDcuNzU0MzIgMTQuNDMwNUM3LjU5NzQyIDE0LjUyMzIgNy40MDI1IDE0LjUyMzIgNy4yNDU1OSAxNC40MzA1TDEuNzQ1NTkgMTEuMTgwNUMxLjUwNzg1IDExLjA0IDEuNDI5MDEgMTAuNzMzNCAxLjU2OTQ5IDEwLjQ5NTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxvbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOSAySDZWMTNIOVYyWk0xMCAyVjEzSDEyLjVDMTIuNzc2MSAxMyAxMyAxMi43NzYxIDEzIDEyLjVWMi41QzEzIDIuMjIzODYgMTIuNzc2MSAyIDEyLjUgMkgxMFpNMi41IDJINVYxM0gyLjVDMi4yMjM4NiAxMyAyIDEyLjc3NjEgMiAxMi41VjIuNUMyIDIuMjIzODYgMi4yMjM4NiAyIDIuNSAyWk0yLjUgMUMxLjY3MTU3IDEgMSAxLjY3MTU3IDEgMi41VjEyLjVDMSAxMy4zMjg0IDEuNjcxNTcgMTQgMi41IDE0SDEyLjVDMTMuMzI4NCAxNCAxNCAxMy4zMjg0IDE0IDEyLjVWMi41QzE0IDEuNjcxNTcgMTMuMzI4NCAxIDEyLjUgMUgyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxhbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy42ODk3OSAyLjc1QzMuODk2NjcgMi43NDk3OSA0LjA4MjMyIDIuODc3MDEgNC4xNTY3OSAzLjA3MDAzTDcuMzY2NjIgMTEuMzlDNy40NjYwMiAxMS42NDc3IDcuMzM3NzQgMTEuOTM3MSA3LjA4MDEgMTIuMDM2NUM2LjgyMjQ3IDEyLjEzNTkgNi41MzMwNCAxMi4wMDc2IDYuNDMzNjUgMTEuNzVMNS4zODI1IDkuMDI1MzdIMi4wMTEzM0wwLjk2Njk5MiAxMS43NDlDMC44NjgxMjggMTIuMDA2OCAwLjU3ODk2NCAxMi4xMzU3IDAuMzIxMTI2IDEyLjAzNjlDMC4wNjMyODc4IDExLjkzOCAtMC4wNjU1ODY0IDExLjY0ODggMC4wMzMyNzc0IDExLjM5MUwzLjIyMzQ0IDMuMDcwOTlDMy4yOTc1MSAyLjg3NzgyIDMuNDgyOSAyLjc1MDIxIDMuNjg5NzkgMi43NVpNMy42OTE3NCA0LjY0Mjg0TDUuMDU0NTggOC4xNzUzN0gyLjMzNzI0TDMuNjkxNzQgNC42NDI4NFpNMTAuODk4OSA1LjIwNzAzQzkuMjU4MTggNS4yMDcwMyA4LjAwOTE1IDYuNjg1NjkgOC4wMDkxNSA4LjYwOTcyQzguMDA5MTUgMTAuNjMzNyA5LjM1ODE4IDEyLjAxMjQgMTAuODk4OSAxMi4wMTI0QzExLjcyMTQgMTIuMDEyNCAxMi41NzQ0IDExLjY2OTIgMTMuMTU0MyAxMS4wMjE5VjExLjUzQzEzLjE1NDMgMTEuNzc4NSAxMy4zNTU3IDExLjk4IDEzLjYwNDMgMTEuOThDMTMuODUyOCAxMS45OCAxNC4wNTQzIDExLjc3ODUgMTQuMDU0MyAxMS41M1Y1LjcyQzE0LjA1NDMgNS40NzE0NyAxMy44NTI4IDUuMjcgMTMuNjA0MyA1LjI3QzEzLjM1NTcgNS4yNyAxMy4xNTQzIDUuNDcxNDcgMTMuMTU0MyA1LjcyVjYuMjIzMTdDMTIuNjA1NCA1LjYwMDk1IDExLjc5MjQgNS4yMDcwMyAxMC44OTg5IDUuMjA3MDNaTTEzLjE1NDMgOS43OTgyM1Y3LjMwMTk1QzEyLjc2MzkgNi41ODEwMSAxMS45NDE0IDYuMDU3NTcgMTEuMDg2OCA2LjA1NzU3QzEwLjEwODggNi4wNTc1NyA5LjAzNTAzIDYuOTY1ODEgOS4wMzUwMyA4LjYwOTU1QzkuMDM1MDMgMTAuMTUzMyAxMC4wMDg4IDExLjE2MTUgMTEuMDg2OCAxMS4xNjE1QzExLjk3MDEgMTEuMTYxNSAxMi43NzE5IDEwLjQ5NTIgMTMuMTU0MyA5Ljc5ODIzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNjk4OTkgNS4yMDcwM0MyLjA1ODIzIDUuMjA3MDMgMC44MDkyMDQgNi42ODU2OSAwLjgwOTIwNCA4LjYwOTcyQzAuODA5MjA0IDEwLjYzMzcgMi4xNTgyMyAxMi4wMTI0IDMuNjk4OTkgMTIuMDEyNEM0LjUyMTI2IDEyLjAxMjQgNS4zNzQwMiAxMS42NjkzIDUuOTUzOSAxMS4wMjIzVjExLjUzQzUuOTUzOSAxMS43Nzg1IDYuMTU1MzcgMTEuOTggNi40MDM5IDExLjk4QzYuNjUyNDMgMTEuOTggNi44NTM5IDExLjc3ODUgNi44NTM5IDExLjUzVjUuNzIwMDFDNi44NTM5IDUuNDcxNDkgNi42NTI0MyA1LjI3MDAxIDYuNDAzOSA1LjI3MDAxQzYuMTU1MzcgNS4yNzAwMSA1Ljk1MzkgNS40NzE0OSA1Ljk1MzkgNS43MjAwMVY2LjIyMjY5QzUuNDA1MDYgNS42MDA3NSA0LjU5MjE4IDUuMjA3MDMgMy42OTg5OSA1LjIwNzAzWk01Ljk1MzkgOS43OTlWNy4zMDExN0M1LjU2MzM5IDYuNTgwNjQgNC43NDExOCA2LjA1NzU3IDMuODg2OCA2LjA1NzU3QzIuOTA4OSA2LjA1NzU3IDEuODM1MDggNi45NjU4MSAxLjgzNTA4IDguNjA5NTVDMS44MzUwOCAxMC4xNTMzIDIuODA4ODkgMTEuMTYxNSAzLjg4NjggMTEuMTYxNUM0Ljc2OTg0IDExLjE2MTUgNS41NzE0MSAxMC40OTU3IDUuOTUzOSA5Ljc5OVpNMTAuNzk5IDUuMjA3MDNDOS4xNTgyMyA1LjIwNzAzIDcuOTA5MiA2LjY4NTY5IDcuOTA5MiA4LjYwOTcyQzcuOTA5MiAxMC42MzM3IDkuMjU4MjMgMTIuMDEyNCAxMC43OTkgMTIuMDEyNEMxMS42MjE1IDEyLjAxMjQgMTIuNDc0NCAxMS42NjkyIDEzLjA1NDMgMTEuMDIxOFYxMS41M0MxMy4wNTQzIDExLjc3ODUgMTMuMjU1OCAxMS45OCAxMy41MDQzIDExLjk4QzEzLjc1MjkgMTEuOTggMTMuOTU0MyAxMS43Nzg1IDEzLjk1NDMgMTEuNTNWNS43MkMxMy45NTQzIDUuNDcxNDcgMTMuNzUyOSA1LjI3IDEzLjUwNDMgNS4yN0MxMy4yNTU4IDUuMjcgMTMuMDU0MyA1LjQ3MTQ3IDEzLjA1NDMgNS43MlY2LjIyMzE4QzEyLjUwNTUgNS42MDA5NSAxMS42OTI0IDUuMjA3MDMgMTAuNzk5IDUuMjA3MDNaTTEzLjA1NDMgOS43OTgyMlY3LjMwMTk2QzEyLjY2NCA2LjU4MTAyIDExLjg0MTUgNi4wNTc1NyAxMC45ODY4IDYuMDU3NTdDMTAuMDA4OSA2LjA1NzU3IDguOTM1MDggNi45NjU4MSA4LjkzNTA4IDguNjA5NTVDOC45MzUwOCAxMC4xNTMzIDkuOTA4ODkgMTEuMTYxNSAxMC45ODY4IDExLjE2MTVDMTEuODcwMiAxMS4xNjE1IDEyLjY3MiAxMC40OTUyIDEzLjA1NDMgOS43OTgyMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGNuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS4yODk1IDIuNzVDMTEuNDk2NCAyLjc0OTc5IDExLjY4MjEgMi44NzcwMSAxMS43NTY1IDMuMDcwMDNMMTQuOTY2NCAxMS4zOUMxNS4wNjU3IDExLjY0NzcgMTQuOTM3NSAxMS45MzcxIDE0LjY3OTggMTIuMDM2NUMxNC40MjIyIDEyLjEzNTkgMTQuMTMyOCAxMi4wMDc2IDE0LjAzMzQgMTEuNzVMMTIuOTgyMiA5LjAyNTM3SDkuNjExMDZMOC41NjY3MiAxMS43NDlDOC40Njc4NiAxMi4wMDY4IDguMTc4NyAxMi4xMzU3IDcuOTIwODYgMTIuMDM2OUM3LjY2MzAyIDExLjkzOCA3LjUzNDE0IDExLjY0ODggNy42MzMwMSAxMS4zOTFMMTAuODIzMiAzLjA3MDk5QzEwLjg5NzIgMi44Nzc4MiAxMS4wODI2IDIuNzUwMjEgMTEuMjg5NSAyLjc1Wk0xMS4yOTE1IDQuNjQyODRMMTIuNjU0MyA4LjE3NTM3SDkuOTM2OThMMTEuMjkxNSA0LjY0Mjg0Wk0yLjg5ODk1IDUuMjA3MDNDMS4yNTgxOCA1LjIwNzAzIDAuMDA5MTU1MjcgNi42ODU2OSAwLjAwOTE1NTI3IDguNjA5NzJDMC4wMDkxNTUyNyAxMC42MzM3IDEuMzU4MTggMTIuMDEyNCAyLjg5ODk1IDEyLjAxMjRDMy43MjE0MSAxMi4wMTI0IDQuNTc0MzggMTEuNjY5MiA1LjE1NDI3IDExLjAyMTlWMTEuNTNDNS4xNTQyNyAxMS43Nzg1IDUuMzU1NzQgMTEuOTggNS42MDQyNyAxMS45OEM1Ljg1MjggMTEuOTggNi4wNTQyNyAxMS43Nzg1IDYuMDU0MjcgMTEuNTNWNS43MkM2LjA1NDI3IDUuNDcxNDcgNS44NTI4IDUuMjcgNS42MDQyNyA1LjI3QzUuMzU1NzQgNS4yNyA1LjE1NDI3IDUuNDcxNDcgNS4xNTQyNyA1LjcyVjYuMjIzMTdDNC42MDU0MyA1LjYwMDk1IDMuNzkyMzYgNS4yMDcwMyAyLjg5ODk1IDUuMjA3MDNaTTUuMTU0MjcgOS43OTgyM1Y3LjMwMTk1QzQuNzYzOTMgNi41ODEwMSAzLjk0MTQ0IDYuMDU3NTcgMy4wODY3NSA2LjA1NzU3QzIuMTA4ODUgNi4wNTc1NyAxLjAzNTAzIDYuOTY1ODEgMS4wMzUwMyA4LjYwOTU1QzEuMDM1MDMgMTAuMTUzMyAyLjAwODg1IDExLjE2MTUgMy4wODY3NSAxMS4xNjE1QzMuOTcwMTEgMTEuMTYxNSA0Ljc3MTk1IDEwLjQ5NTIgNS4xNTQyNyA5Ljc5ODIzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sc249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNjI1NSAyLjc1QzMuODM0NzggMi43NSA0LjAyMTkyIDIuODgwMzQgNC4wOTQ0OCAzLjA3NjY0TDcuMTY5ODUgMTEuMzk2MkM3LjI2NTYgMTEuNjU1MiA3LjEzMzI0IDExLjk0MjggNi44NzQyMyAxMi4wMzg2QzYuNjE1MjIgMTIuMTM0MyA2LjMyNzYzIDEyLjAwMiA2LjIzMTg4IDExLjc0MjlMNS4yMjM4NyA5LjAxNjAzSDIuMDI3MTJMMS4wMTkxMSAxMS43NDI5QzAuOTIzMzYyIDEyLjAwMiAwLjYzNTc3NCAxMi4xMzQzIDAuMzc2NzYyIDEyLjAzODZDMC4xMTc3NDkgMTEuOTQyOCAtMC4wMTQ2MDUyIDExLjY1NTIgMC4wODExNDAxIDExLjM5NjJMMy4xNTY1MSAzLjA3NjY0QzMuMjI5MDggMi44ODAzNCAzLjQxNjIxIDIuNzUgMy42MjU1IDIuNzVaTTMuNjI1NSA0LjY5MjA3TDQuOTA5NjYgOC4xNjYwM0gyLjM0MTMzTDMuNjI1NSA0LjY5MjA3Wk0xMS4zNzE5IDIuNzVDMTEuNTgxMSAyLjc1IDExLjc2ODMgMi44ODAzNCAxMS44NDA4IDMuMDc2NjRMMTQuOTE2MiAxMS4zOTYyQzE1LjAxMiAxMS42NTUyIDE0Ljg3OTYgMTEuOTQyOCAxNC42MjA2IDEyLjAzODZDMTQuMzYxNiAxMi4xMzQzIDE0LjA3NCAxMi4wMDIgMTMuOTc4MiAxMS43NDI5TDEyLjk3MDIgOS4wMTYwM0g5Ljc3MzQ4TDguNzY1NDcgMTEuNzQyOUM4LjY2OTcyIDEyLjAwMiA4LjM4MjEzIDEyLjEzNDMgOC4xMjMxMiAxMi4wMzg2QzcuODY0MTEgMTEuOTQyOCA3LjczMTc1IDExLjY1NTIgNy44Mjc1IDExLjM5NjJMMTAuOTAyOSAzLjA3NjY0QzEwLjk3NTQgMi44ODAzNCAxMS4xNjI2IDIuNzUgMTEuMzcxOSAyLjc1Wk0xMS4zNzE5IDQuNjkyMDdMMTIuNjU2IDguMTY2MDNIMTAuMDg3N0wxMS4zNzE5IDQuNjkyMDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx1bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC41NTI5MyAwLjk5OTk2OUM0Ljc1Mjk1IDAuOTk5OTY5IDQuOTMzNzIgMS4xMTkxNyA1LjAxMjUgMS4zMDMwMUw4LjAxMTA2IDguMjk5ODJDOC4xMTk4NCA4LjU1MzYzIDguMDAyMjYgOC44NDc1NyA3Ljc0ODQ0IDguOTU2MzVDNy40OTQ2MyA5LjA2NTEyIDcuMjAwNjkgOC45NDc1NCA3LjA5MTkxIDguNjkzNzNMNi4xMTYxMyA2LjQxNjg1SDIuOTg5NzNMMi4wMTM5NSA4LjY5MzczQzEuOTA1MTcgOC45NDc1NCAxLjYxMTIzIDkuMDY1MTIgMS4zNTc0MiA4Ljk1NjM1QzEuMTAzNiA4Ljg0NzU3IDAuOTg2MDIzIDguNTUzNjMgMS4wOTQ4IDguMjk5ODJMNC4wOTMzNiAxLjMwMzAxQzQuMTcyMTQgMS4xMTkxNyA0LjM1MjkxIDAuOTk5OTY5IDQuNTUyOTMgMC45OTk5NjlaTTQuNTUyOTMgMi43NjkyOUw1Ljc1MTg2IDUuNTY2ODVIMy4zNTRMNC41NTI5MyAyLjc2OTI5Wk0xMS4wNTYyIDkuMDAyMTRDMTEuMjYxNyA5LjAwMjE0IDExLjQ0NjMgOC44NzYzMyAxMS41MjE1IDguNjg1MDJMMTQuMjczMyAxLjY4Mjk5QzE0LjM3NDMgMS40MjU5OCAxNC4yNDc4IDEuMTM1NzUgMTMuOTkwOCAxLjAzNDc1QzEzLjczMzggMC45MzM3NDcgMTMuNDQzNiAxLjA2MDIxIDEzLjM0MjYgMS4zMTcyMkwxMS4wNTYyIDcuMTM1MTRMOC43Njk3MyAxLjMxNzIyQzguNjY4NzMgMS4wNjAyMSA4LjM3ODUgMC45MzM3NDcgOC4xMjE1IDEuMDM0NzVDNy44NjQ0OSAxLjEzNTc1IDcuNzM4MDIgMS40MjU5OCA3LjgzOTAyIDEuNjgyOTlMMTAuNTkwOCA4LjY4NTAyQzEwLjY2NiA4Ljg3NjMzIDEwLjg1MDYgOS4wMDIxNCAxMS4wNTYyIDkuMDAyMTRaTTE0Ljk1MzcgMTIuNDk5OUMxNC45NTM3IDEyLjYwNiAxNC45MTE1IDEyLjcwNzcgMTQuODM2NSAxMi43ODI4TDEyLjgzNjUgMTQuNzgyOEMxMi42ODAzIDE0LjkzOSAxMi40MjcxIDE0LjkzOSAxMi4yNzA4IDE0Ljc4MjhDMTIuMTE0NiAxNC42MjY1IDEyLjExNDYgMTQuMzczMyAxMi4yNzA4IDE0LjIxNzFMMTMuNTg4IDEyLjg5OTlIMS41MTkzN0wyLjgzNjUzIDE0LjIxNzFDMi45OTI3NCAxNC4zNzMzIDIuOTkyNzQgMTQuNjI2NSAyLjgzNjUzIDE0Ljc4MjhDMi42ODAzMiAxNC45MzkgMi40MjcwNSAxNC45MzkgMi4yNzA4NCAxNC43ODI4TDAuMjcwODQzIDEyLjc4MjhDMC4xOTU4MjggMTIuNzA3NyAwLjE1MzY4NyAxMi42MDYgMC4xNTM2ODcgMTIuNDk5OUMwLjE1MzY4NyAxMi4zOTM4IDAuMTk1ODI4IDEyLjI5MjEgMC4yNzA4NDMgMTIuMjE3MUwyLjI3MDg0IDEwLjIxNzFDMi40MjcwNSAxMC4wNjA5IDIuNjgwMzIgMTAuMDYwOSAyLjgzNjUzIDEwLjIxNzFDMi45OTI3NCAxMC4zNzMzIDIuOTkyNzQgMTAuNjI2NSAyLjgzNjUzIDEwLjc4MjhMMS41MTkzNyAxMi4wOTk5TDEzLjU4OCAxMi4wOTk5TDEyLjI3MDggMTAuNzgyOEMxMi4xMTQ2IDEwLjYyNjUgMTIuMTE0NiAxMC4zNzMzIDEyLjI3MDggMTAuMjE3MUMxMi40MjcxIDEwLjA2MDkgMTIuNjgwMyAxMC4wNjA5IDEyLjgzNjUgMTAuMjE3MUwxNC44MzY1IDEyLjIxNzFDMTQuOTExNSAxMi4yOTIxIDE0Ljk1MzcgMTIuMzkzOCAxNC45NTM3IDEyLjQ5OTlaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxkbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOC42OTY2NiAwLjA0MDM1NEM4LjkwODU5IDAuMTMxMDM4IDkuMDMxMDUgMC4zNTQ4NTYgOC45OTMxNSAwLjU4MjIzNUw4LjA5MDE5IDYuMDAwMDFIMTIuNDk5OUMxMi42ODkzIDYuMDAwMDEgMTIuODYyNSA2LjEwNzAxIDEyLjk0NzIgNi4yNzY0QzEzLjAzMTggNi40NDU3OSAxMy4wMTM2IDYuNjQ4NSAxMi44OTk5IDYuOEw2Ljg5OTk3IDE0LjhDNi43NjE2NiAxNC45ODQ0IDYuNTE1MiAxNS4wNTAzIDYuMzAzMjcgMTQuOTU5NkM2LjA5MTM0IDE0Ljg2OSA1Ljk2ODg4IDE0LjY0NTEgNi4wMDY3OCAxNC40MTc4TDYuOTA5NzQgOC45OTk5OUgyLjQ5OTk5QzIuMzEwNjEgOC45OTk5OSAyLjEzNzQ3IDguODkyOTkgMi4wNTI3OCA4LjcyMzZDMS45NjgwOCA4LjU1NDIxIDEuOTg2MzYgOC4zNTE1IDIuMDk5OTkgOC4yTDguMDk5OTYgMC4yMDAwMzdDOC4yMzgyNyAwLjAxNTYyNTUgOC40ODQ3MyAtMC4wNTAzMzAxIDguNjk2NjYgMC4wNDAzNTRaTTMuNDk5OTkgOEg3LjQ5OTk2QzcuNjQ2OTQgOCA3Ljc4NjQ3IDguMDY0NjYgNy44ODE0NyA4LjE3NjgxQzcuOTc2NDcgOC4yODg5NSA4LjAxNzMyIDguNDM3MjIgNy45OTMxNiA4LjU4MjE5TDcuMzMwMjYgMTIuNTU5NkwxMS40OTk5IDdINy40OTk5NkM3LjM1Mjk5IDcgNy4yMTM0NiA2LjkzNTM0IDcuMTE4NDYgNi44MjMxOUM3LjAyMzQ2IDYuNzExMDUgNi45ODI2MSA2LjU2Mjc4IDcuMDA2NzcgNi40MTc4MUw3LjY2OTY3IDIuNDQwNDJMMy40OTk5OSA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNzgyMzMgMi4yMTcxM0MzLjcwNzMyIDIuMTQyMTIgMy42MDU1NyAyLjA5OTk4IDMuNDk5NDkgMi4wOTk5OEMzLjM5MzQgMi4wOTk5OCAzLjI5MTY2IDIuMTQyMTIgMy4yMTY2NCAyLjIxNzEzTDEuMjE2NjQgNC4yMTcxM0MxLjA2MDQ0IDQuMzczMzQgMS4wNjA0NCA0LjYyNjYxIDEuMjE2NjQgNC43ODI4MkMxLjM3Mjg1IDQuOTM5MDMgMS42MjYxMiA0LjkzOTAzIDEuNzgyMzMgNC43ODI4MkwzLjA5OTQ5IDMuNDY1NjZMMy4wOTk0OSAxMS41MzQzTDEuNzgyMzMgMTAuMjE3MUMxLjYyNjEyIDEwLjA2MDkgMS4zNzI4NSAxMC4wNjA5IDEuMjE2NjQgMTAuMjE3MUMxLjA2MDQzIDEwLjM3MzMgMS4wNjA0MyAxMC42MjY2IDEuMjE2NjQgMTAuNzgyOEwzLjIxNjY0IDEyLjc4MjhDMy4yOTE2NiAxMi44NTc4IDMuMzkzNCAxMi45IDMuNDk5NDkgMTIuOUMzLjYwNTU3IDEyLjkgMy43MDczMSAxMi44NTc4IDMuNzgyMzMgMTIuNzgyOEw1Ljc4MjMzIDEwLjc4MjhDNS45Mzg1NCAxMC42MjY2IDUuOTM4NTQgMTAuMzczMyA1Ljc4MjMzIDEwLjIxNzFDNS42MjYxMiAxMC4wNjA5IDUuMzcyODUgMTAuMDYwOSA1LjIxNjY0IDEwLjIxNzFMMy44OTk0OSAxMS41MzQzTDMuODk5NDkgMy40NjU2Nkw1LjIxNjY0IDQuNzgyODJDNS4zNzI4NSA0LjkzOTAzIDUuNjI2MTIgNC45MzkwMyA1Ljc4MjMzIDQuNzgyODJDNS45Mzg1NCA0LjYyNjYxIDUuOTM4NTQgNC4zNzMzNCA1Ljc4MjMzIDQuMjE3MTNMMy43ODIzMyAyLjIxNzEzWk04LjQ5OTk4IDMuOTk5OTdDOC4yMjM4MyAzLjk5OTk3IDcuOTk5OTggNC4yMjM4MiA3Ljk5OTk4IDQuNDk5OTdDNy45OTk5OCA0Ljc3NjExIDguMjIzODMgNC45OTk5NyA4LjQ5OTk4IDQuOTk5OTdIMTQuNUMxNC43NzYxIDQuOTk5OTcgMTUgNC43NzYxMSAxNSA0LjQ5OTk3QzE1IDQuMjIzODIgMTQuNzc2MSAzLjk5OTk3IDE0LjUgMy45OTk5N0g4LjQ5OTk4Wk03Ljk5OTk4IDcuNDk5OTdDNy45OTk5OCA3LjIyMzgyIDguMjIzODMgNi45OTk5NyA4LjQ5OTk4IDYuOTk5OTdIMTQuNUMxNC43NzYxIDYuOTk5OTcgMTUgNy4yMjM4MiAxNSA3LjQ5OTk3QzE1IDcuNzc2MTEgMTQuNzc2MSA3Ljk5OTk3IDE0LjUgNy45OTk5N0g4LjQ5OTk4QzguMjIzODMgNy45OTk5NyA3Ljk5OTk4IDcuNzc2MTEgNy45OTk5OCA3LjQ5OTk3Wk04LjQ5OTk4IDkuOTk5OTdDOC4yMjM4MyA5Ljk5OTk3IDcuOTk5OTggMTAuMjIzOCA3Ljk5OTk4IDEwLjVDNy45OTk5OCAxMC43NzYxIDguMjIzODMgMTEgOC40OTk5OCAxMUgxNC41QzE0Ljc3NjEgMTEgMTUgMTAuNzc2MSAxNSAxMC41QzE1IDEwLjIyMzggMTQuNzc2MSA5Ljk5OTk3IDE0LjUgOS45OTk5N0g4LjQ5OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNjI0NzEgNC4wMDAwMUw0LjU2NDAyIDQuMDAwMDFDNC4wNDEzNCAzLjk5OTkzIDMuNzA2ODcgMy45OTk4OCAzLjQxODIgNC4wNTVDMi4yMzc5IDQuMjgwMzkgMS4yOTg0NiA1LjE3MDUzIDEuMDU4MTUgNi4zMzAzNUMwLjk5OTUzOCA2LjYxMzIxIDAuOTk5NjA0IDYuOTM5OTggMC45OTk3MDMgNy40MzY4OUwwLjk5OTcxMSA3LjUwMDAxTDAuOTk5NzAzIDcuNTYzMTNDMC45OTk2MDQgOC4wNjAwNCAwLjk5OTUzOCA4LjM4NjgxIDEuMDU4MTUgOC42Njk2N0MxLjI5ODQ2IDkuODI5NSAyLjIzNzkgMTAuNzE5NiAzLjQxODIgMTAuOTQ1QzMuNzA2ODggMTEuMDAwMSA0LjA0MTM1IDExLjAwMDEgNC41NjQwMyAxMUw0LjYyNDcxIDExSDUuNDk5NzFDNS43NzU4NSAxMSA1Ljk5OTcxIDEwLjc3NjIgNS45OTk3MSAxMC41QzUuOTk5NzEgMTAuMjIzOSA1Ljc3NTg1IDEwIDUuNDk5NzEgMTBINC42MjQ3MUM0LjAyMDg0IDEwIDMuNzg5MDcgOS45OTc3NyAzLjYwNTc3IDkuOTYyNzdDMi44MDI2MiA5LjgwOTQgMi4xOTE1NyA5LjIxMTA4IDIuMDM3MzUgOC40NjY3OEMyLjAwMjMzIDguMjk3NzggMS45OTk3MSA4LjA4MjUxIDEuOTk5NzEgNy41MDAwMUMxLjk5OTcxIDYuOTE3NTIgMi4wMDIzMyA2LjcwMjI1IDIuMDM3MzUgNi41MzMyNEMyLjE5MTU3IDUuNzg4OTUgMi44MDI2MiA1LjE5MDYyIDMuNjA1NzcgNS4wMzcyNUMzLjc4OTA3IDUuMDAyMjUgNC4wMjA4NCA1LjAwMDAxIDQuNjI0NzEgNS4wMDAwMUg1LjQ5OTcxQzUuNzc1ODUgNS4wMDAwMSA1Ljk5OTcxIDQuNzc2MTUgNS45OTk3MSA0LjUwMDAxQzUuOTk5NzEgNC4yMjM4NyA1Ljc3NTg1IDQuMDAwMDEgNS40OTk3MSA0LjAwMDAxSDQuNjI0NzFaTTEwLjM3NDcgNS4wMDAwMUMxMC45Nzg2IDUuMDAwMDEgMTEuMjEwNCA1LjAwMjI1IDExLjM5MzcgNS4wMzcyNUMxMi4xOTY4IDUuMTkwNjIgMTIuODA3OSA1Ljc4ODk1IDEyLjk2MjEgNi41MzMyNEMxMi45OTcxIDYuNzAyMjUgMTIuOTk5NyA2LjkxNzUyIDEyLjk5OTcgNy41MDAwMUMxMi45OTk3IDguMDgyNTEgMTIuOTk3MSA4LjI5Nzc4IDEyLjk2MjEgOC40NjY3OEMxMi44MDc5IDkuMjExMDggMTIuMTk2OCA5LjgwOTQgMTEuMzkzNyA5Ljk2Mjc3QzExLjIxMDQgOS45OTc3NyAxMC45Nzg2IDEwIDEwLjM3NDcgMTBIOS40OTk3MUM5LjIyMzU3IDEwIDguOTk5NzEgMTAuMjIzOSA4Ljk5OTcxIDEwLjVDOC45OTk3MSAxMC43NzYyIDkuMjIzNTcgMTEgOS40OTk3MSAxMUgxMC4zNzQ3TDEwLjQzNTQgMTFDMTAuOTU4MSAxMS4wMDAxIDExLjI5MjUgMTEuMDAwMSAxMS41ODEyIDEwLjk0NUMxMi43NjE1IDEwLjcxOTYgMTMuNzAxIDkuODI5NSAxMy45NDEzIDguNjY5NjdDMTMuOTk5OSA4LjM4NjgxIDEzLjk5OTggOC4wNjAwNSAxMy45OTk3IDcuNTYzMTRMMTMuOTk5NyA3LjUwMDAxTDEzLjk5OTcgNy40MzY4OEMxMy45OTk4IDYuOTM5OTggMTMuOTk5OSA2LjYxMzIxIDEzLjk0MTMgNi4zMzAzNUMxMy43MDEgNS4xNzA1MyAxMi43NjE1IDQuMjgwMzkgMTEuNTgxMiA0LjA1NUMxMS4yOTI1IDMuOTk5ODggMTAuOTU4MSAzLjk5OTkzIDEwLjQzNTQgNC4wMDAwMUwxMC4zNzQ3IDQuMDAwMDFIOS40OTk3MUM5LjIyMzU3IDQuMDAwMDEgOC45OTk3MSA0LjIyMzg3IDguOTk5NzEgNC41MDAwMUM4Ljk5OTcxIDQuNzc2MTUgOS4yMjM1NyA1LjAwMDAxIDkuNDk5NzEgNS4wMDAwMUgxMC4zNzQ3Wk01LjAwMDM4IDdDNC43MjQyNCA3IDQuNTAwMzggNy4yMjM4NiA0LjUwMDM4IDcuNUM0LjUwMDM4IDcuNzc2MTQgNC43MjQyNCA4IDUuMDAwMzggOEgxMC4wMDA0QzEwLjI3NjUgOCAxMC41MDA0IDcuNzc2MTQgMTAuNTAwNCA3LjVDMTAuNTAwNCA3LjIyMzg2IDEwLjI3NjUgNyAxMC4wMDA0IDdINS4wMDAzOFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LENuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04LjUxMTk0IDMuMDA1NDFDOS4xODgyOSAyLjU0NTk0IDEwLjA0MzUgMi41MzY5NCAxMC42Nzg4IDIuOTU0MTlDMTAuODIzMSAzLjA0ODkzIDEwLjk3NzEgMy4xOTkzIDExLjM4OSAzLjYxMTE5QzExLjgwMDkgNC4wMjMwNyAxMS45NTEzIDQuMTc3MTQgMTIuMDQ2IDQuMzIxNDFDMTIuNDYzMyA0Ljk1Njc1IDEyLjQ1NDMgNS44MTE5MiAxMS45OTQ4IDYuNDg4MjdDMTEuODg5OSA2LjY0MjY0IDExLjcyNzYgNi44MDgxMSAxMS4zMDA2IDcuMjM1MTFMMTAuNjgxOSA3Ljg1MzgzQzEwLjQ4NjcgOC4wNDkwOSAxMC40ODY3IDguMzY1NjcgMTAuNjgxOSA4LjU2MDkzQzEwLjg3NzIgOC43NTYyIDExLjE5MzggOC43NTYyIDExLjM4OSA4LjU2MDkzTDEyLjAwNzcgNy45NDIyMUwxMi4wNTA3IDcuODk5MjlDMTIuNDIwMyA3LjUyOTc2IDEyLjY1NjggNy4yOTMzIDEyLjgyMiA3LjA1MDJDMTMuNDk3MiA2LjA1NjIzIDEzLjUzMjEgNC43NjI1MiAxMi44ODE5IDMuNzcyNDhDMTIuNzIzMyAzLjUzMTAyIDEyLjQ5MjIgMy4zMDAwMSAxMi4xNDA4IDIuOTQ4NzFMMTIuMDk2MSAyLjkwNDA4TDEyLjA1MTUgMi44NTk0MkMxMS43MDAyIDIuNTA4IDExLjQ2OTIgMi4yNzY4OSAxMS4yMjc3IDIuMTE4MzJDMTAuMjM3NyAxLjQ2ODEzIDguOTQzOTggMS41MDI5OSA3Ljk1MDAxIDIuMTc4MjJDNy43MDY5MSAyLjM0MzM2IDcuNDcwNDQgMi41Nzk5MSA3LjEwMDkgMi45NDk1NUw3LjA1OCAyLjk5MjQ3TDYuNDM5MjggMy42MTExOUM2LjI0NDAxIDMuODA2NDUgNi4yNDQwMSA0LjEyMzAzIDYuNDM5MjggNC4zMTgyOUM2LjYzNDU0IDQuNTEzNTUgNi45NTExMiA0LjUxMzU1IDcuMTQ2MzggNC4zMTgyOUw3Ljc2NTEgMy42OTk1N0M4LjE5MjEgMy4yNzI1NyA4LjM1NzU3IDMuMTEwMjcgOC41MTE5NCAzLjAwNTQxWk00LjMxNzk2IDcuMTQ2NzJDNC41MTMyMiA2Ljk1MTQ2IDQuNTEzMjIgNi42MzQ4NyA0LjMxNzk2IDYuNDM5NjFDNC4xMjI2OSA2LjI0NDM1IDMuODA2MTEgNi4yNDQzNSAzLjYxMDg1IDYuNDM5NjFMMi45OTIxMyA3LjA1ODMzTDIuOTQ5MjIgNy4xMDEyNEMyLjU3OTU3IDcuNDcwNzcgMi4zNDMwMyA3LjcwNzI0IDIuMTc3ODggNy45NTAzNUMxLjUwMjY1IDguOTQ0MzIgMS40Njc4IDEwLjIzOCAyLjExNzk5IDExLjIyODFDMi4yNzY1NiAxMS40Njk1IDIuNTA3NjYgMTEuNzAwNSAyLjg1OTEgMTIuMDUxOEwyLjkwMzc0IDEyLjA5NjVMMi45NDgzNyAxMi4xNDExQzMuMjk5NjcgMTIuNDkyNSAzLjUzMDY4IDEyLjcyMzcgMy43NzIxNCAxMi44ODIyQzQuNzYyMTkgMTMuNTMyNCA2LjA1NTg5IDEzLjQ5NzYgNy4wNDk4NiAxMi44MjIzQzcuMjkyOTYgMTIuNjU3MiA3LjUyOTQzIDEyLjQyMDYgNy44OTg5NiAxMi4wNTFMNy44OTg5NyAxMi4wNTFMNy45NDE4OCAxMi4wMDgxTDguNTYwNiAxMS4zODk0QzguNzU1ODYgMTEuMTk0MSA4Ljc1NTg2IDEwLjg3NzUgOC41NjA2IDEwLjY4MjNDOC4zNjUzMyAxMC40ODcgOC4wNDg3NSAxMC40ODcgNy44NTM0OSAxMC42ODIzTDcuMjM0NzcgMTEuMzAxQzYuODA3NzcgMTEuNzI4IDYuNjQyMyAxMS44OTAzIDYuNDg3OTQgMTEuOTk1MUM1LjgxMTU4IDEyLjQ1NDYgNC45NTY0MiAxMi40NjM2IDQuMzIxMDcgMTIuMDQ2NEM0LjE3NjgxIDExLjk1MTYgNC4wMjI3NCAxMS44MDEyIDMuNjEwODUgMTEuMzg5NEMzLjE5ODk2IDEwLjk3NzUgMy4wNDg2IDEwLjgyMzQgMi45NTM4NSAxMC42NzkxQzIuNTM2NjEgMTAuMDQzOCAyLjU0NTYxIDkuMTg4NjMgMy4wMDUwNyA4LjUxMjI3QzMuMTA5OTMgOC4zNTc5MSAzLjI3MjI0IDguMTkyNDQgMy42OTkyNCA3Ljc2NTQ0TDQuMzE3OTYgNy4xNDY3MlpNOS42MjE3MiA2LjA4NTU4QzkuODE2OTggNS44OTAzMiA5LjgxNjk4IDUuNTczNzMgOS42MjE3MiA1LjM3ODQ3QzkuNDI2NDYgNS4xODMyMSA5LjEwOTg4IDUuMTgzMjEgOC45MTQ2MSA1LjM3ODQ3TDUuMzc5MDggOC45MTQwMUM1LjE4MzgyIDkuMTA5MjcgNS4xODM4MiA5LjQyNTg1IDUuMzc5MDggOS42MjExMUM1LjU3NDM0IDkuODE2MzcgNS44OTA5MiA5LjgxNjM3IDYuMDg2MTkgOS42MjExMUw5LjYyMTcyIDYuMDg1NThaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxobj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMzUzNiAyLjM1MzU1QzEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDEuODQxNzEgMTMuMzUzNiAxLjY0NjQ1QzEzLjE1ODMgMS40NTExOCAxMi44NDE3IDEuNDUxMTggMTIuNjQ2NCAxLjY0NjQ1TDEuNjQ2NDUgMTIuNjQ2NEMxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMy4xNTgzIDEuNjQ2NDUgMTMuMzUzNkMxLjg0MTcxIDEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDIuMzUzNTUgMTMuMzUzNkwxMy4zNTM2IDIuMzUzNTVaTTIuMDM3MzUgOC40NjY3OEMyLjE3Mzk4IDkuMTI2MTkgMi42NjkxOCA5LjY3MTAzIDMuMzM4ODYgOS44OTMzOEwyLjU3ODMzIDEwLjY1MzlDMS44MDg0MyAxMC4yNTM0IDEuMjM3ODQgOS41MzY5MyAxLjA1ODE1IDguNjY5NjdDMC45OTk1MzggOC4zODY4MSAwLjk5OTYwNCA4LjA2MDA0IDAuOTk5NzAzIDcuNTYzMTNMMC45OTk3MTEgNy41MDAwMUwwLjk5OTcwMyA3LjQzNjg5QzAuOTk5NjA0IDYuOTM5OTggMC45OTk1MzggNi42MTMyMSAxLjA1ODE1IDYuMzMwMzVDMS4yOTg0NiA1LjE3MDUzIDIuMjM3OSA0LjI4MDM5IDMuNDE4MiA0LjA1NUMzLjcwNjg3IDMuOTk5ODggNC4wNDEzNCAzLjk5OTkzIDQuNTY0MDIgNC4wMDAwMUw0LjYyNDcxIDQuMDAwMDFINS40OTk3MUM1Ljc3NTg1IDQuMDAwMDEgNS45OTk3MSA0LjIyMzg3IDUuOTk5NzEgNC41MDAwMUM1Ljk5OTcxIDQuNzc2MTUgNS43NzU4NSA1LjAwMDAxIDUuNDk5NzEgNS4wMDAwMUg0LjYyNDcxQzQuMDIwODQgNS4wMDAwMSAzLjc4OTA3IDUuMDAyMjUgMy42MDU3NyA1LjAzNzI1QzIuODAyNjIgNS4xOTA2MiAyLjE5MTU3IDUuNzg4OTUgMi4wMzczNSA2LjUzMzI0QzIuMDAyMzMgNi43MDIyNSAxLjk5OTcxIDYuOTE3NTIgMS45OTk3MSA3LjUwMDAxQzEuOTk5NzEgOC4wODI1MSAyLjAwMjMzIDguMjk3NzggMi4wMzczNSA4LjQ2Njc4Wk0xMi45NjIxIDYuNTMzMjRDMTIuODI1NSA1Ljg3Mzk3IDEyLjMzMDQgNS4zMjkyMiAxMS42NjEgNS4xMDY3OUwxMi40MjE1IDQuMzQ2MzFDMTMuMTkxMiA0Ljc0Njg2IDEzLjc2MTYgNS40NjMyMyAxMy45NDEzIDYuMzMwMzVDMTMuOTk5OSA2LjYxMzIxIDEzLjk5OTggNi45Mzk5OCAxMy45OTk3IDcuNDM2ODhMMTMuOTk5NyA3LjUwMDAxTDEzLjk5OTcgNy41NjMxNEMxMy45OTk4IDguMDYwMDUgMTMuOTk5OSA4LjM4NjgxIDEzLjk0MTMgOC42Njk2N0MxMy43MDEgOS44Mjk1IDEyLjc2MTUgMTAuNzE5NiAxMS41ODEyIDEwLjk0NUMxMS4yOTI1IDExLjAwMDEgMTAuOTU4MSAxMS4wMDAxIDEwLjQzNTQgMTFMMTAuMzc0NyAxMUg5LjQ5OTcxQzkuMjIzNTcgMTEgOC45OTk3MSAxMC43NzYyIDguOTk5NzEgMTAuNUM4Ljk5OTcxIDEwLjIyMzkgOS4yMjM1NyAxMCA5LjQ5OTcxIDEwSDEwLjM3NDdDMTAuOTc4NiAxMCAxMS4yMTA0IDkuOTk3NzcgMTEuMzkzNyA5Ljk2Mjc3QzEyLjE5NjggOS44MDk0IDEyLjgwNzkgOS4yMTEwOCAxMi45NjIxIDguNDY2NzhDMTIuOTk3MSA4LjI5Nzc4IDEyLjk5OTcgOC4wODI1MSAxMi45OTk3IDcuNTAwMDFDMTIuOTk5NyA2LjkxNzUyIDEyLjk5NzEgNi43MDIyNSAxMi45NjIxIDYuNTMzMjRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx2bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNC41MDAyMSAwQzQuNzc2MzUgMCA1LjAwMDIgMC4yMjM4NTMgNS4wMDAyIDAuNDk5OTlWMi40OTk5NUM1LjAwMDIgMi43NzYwOSA0Ljc3NjM1IDIuOTk5OTQgNC41MDAyMSAyLjk5OTk0QzQuMjI0MDggMi45OTk5NCA0LjAwMDIyIDIuNzc2MDkgNC4wMDAyMiAyLjQ5OTk1VjAuNDk5OTlDNC4wMDAyMiAwLjIyMzg1MyA0LjIyNDA4IDAgNC41MDAyMSAwWk0wLjY0NjQ1MSAwLjY0NjQ3QzAuODQxNzEgMC40NTEyMTIgMS4xNTgyOSAwLjQ1MTIxMiAxLjM1MzU0IDAuNjQ2NDdMMi44NTM1MSAyLjE0NjQ0QzMuMDQ4NzcgMi4zNDE3IDMuMDQ4NzcgMi42NTgyNyAyLjg1MzUxIDIuODUzNTNDMi42NTgyNiAzLjA0ODc5IDIuMzQxNjggMy4wNDg3OSAyLjE0NjQyIDIuODUzNTNMMC42NDY0NTIgMS4zNTM1NkMwLjQ1MTE5MyAxLjE1ODMgMC40NTExOTMgMC44NDE3MjggMC42NDY0NTEgMC42NDY0N1pNMC4wMDAzMDUxNyA0LjQ5OTkxQzAuMDAwMzA1MTcgNC4yMjM3NyAwLjIyNDE1OCAzLjk5OTkyIDAuNTAwMjk1IDMuOTk5OTJIMi41MDAyNUMyLjc3NjM5IDMuOTk5OTIgMy4wMDAyNCA0LjIyMzc3IDMuMDAwMjQgNC40OTk5MUMzLjAwMDI0IDQuNzc2MDUgMi43NzYzOSA0Ljk5OTkgMi41MDAyNSA0Ljk5OTlIMC41MDAyOTVDMC4yMjQxNTggNC45OTk5IDAuMDAwMzA1MTcgNC43NzYwNSAwLjAwMDMwNTE3IDQuNDk5OTFaTTEyLjAwMDEgMTAuNDk5OEMxMi4wMDAxIDEwLjIyMzYgMTIuMjIzOSA5Ljk5OTggMTIuNTAwMSA5Ljk5OThIMTQuNUMxNC43NzYxIDkuOTk5OCAxNSAxMC4yMjM2IDE1IDEwLjQ5OThDMTUgMTAuNzc1OSAxNC43NzYxIDEwLjk5OTggMTQuNSAxMC45OTk4SDEyLjUwMDFDMTIuMjIzOSAxMC45OTk4IDEyLjAwMDEgMTAuNzc1OSAxMi4wMDAxIDEwLjQ5OThaTTEwLjUwMDEgMTEuOTk5OEMxMC43NzYyIDExLjk5OTggMTEuMDAwMSAxMi4yMjM2IDExLjAwMDEgMTIuNDk5N1YxNC40OTk3QzExLjAwMDEgMTQuNzc1OCAxMC43NzYyIDE0Ljk5OTcgMTAuNTAwMSAxNC45OTk3QzEwLjIyNCAxNC45OTk3IDEwLjAwMDEgMTQuNzc1OCAxMC4wMDAxIDE0LjQ5OTdWMTIuNDk5N0MxMC4wMDAxIDEyLjIyMzYgMTAuMjI0IDExLjk5OTggMTAuNTAwMSAxMS45OTk4Wk0xMi4xNDYyIDEyLjE0NjJDMTIuMzQxNSAxMS45NTEgMTIuNjU4IDExLjk1MSAxMi44NTMzIDEyLjE0NjJMMTQuMzUzMyAxMy42NDYyQzE0LjU0ODUgMTMuODQxNSAxNC41NDg1IDE0LjE1OCAxNC4zNTMzIDE0LjM1MzNDMTQuMTU4IDE0LjU0ODUgMTMuODQxNCAxNC41NDg1IDEzLjY0NjIgMTQuMzUzM0wxMi4xNDYyIDEyLjg1MzNDMTEuOTUxIDEyLjY1ODEgMTEuOTUxIDEyLjM0MTUgMTIuMTQ2MiAxMi4xNDYyWk03Ljc2NDc4IDMuNjk5MzhDOC4xOTE3NyAzLjI3MjM4IDguMzU3MjQgMy4xMTAwOCA4LjUxMTYgMy4wMDUyMkM5LjE4Nzk0IDIuNTQ1NzcgMTAuMDQzMSAyLjUzNjc3IDEwLjY3ODQgMi45NTQwMUMxMC44MjI3IDMuMDQ4NzUgMTAuOTc2NyAzLjE5OTExIDExLjM4ODYgMy42MTA5OUMxMS44MDA1IDQuMDIyODcgMTEuOTUwOSA0LjE3Njk0IDEyLjA0NTYgNC4zMjEyQzEyLjQ2MjggNC45NTY1MyAxMi40NTM5IDUuODExNjggMTEuOTk0NCA2LjQ4ODAyQzExLjg4OTUgNi42NDIzOCAxMS43MjcyIDYuODA3ODUgMTEuMzAwMiA3LjIzNDg0TDEwLjY4MTUgNy44NTM1NEMxMC40ODYzIDguMDQ4OCAxMC40ODYzIDguMzY1MzggMTAuNjgxNSA4LjU2MDY0QzEwLjg3NjggOC43NTU4OSAxMS4xOTM0IDguNzU1ODkgMTEuMzg4NiA4LjU2MDY0TDEyLjAwNzMgNy45NDE5M0wxMi4wNTAyIDcuODk5MDNDMTIuNDE5OSA3LjUyOTUgMTIuNjU2NCA3LjI5MzAzIDEyLjgyMTYgNy4wNDk5M0MxMy40OTY4IDYuMDU1OTggMTMuNTMxNiA0Ljc2MjMgMTIuODgxNSAzLjc3MjI4QzEyLjcyMjkgMy41MzA4MyAxMi40OTE4IDMuMjk5ODIgMTIuMTQwNCAyLjk0ODUzTDEyLjA5NTcgMi45MDM5TDEyLjA1MTEgMi44NTkyNUMxMS42OTk4IDIuNTA3ODIgMTEuNDY4OCAyLjI3NjcyIDExLjIyNzMgMi4xMTgxNkMxMC4yMzczIDEuNDY3OTggOC45NDM2NCAxLjUwMjg0IDcuOTQ5NjggMi4xNzgwNUM3LjcwNjU5IDIuMzQzMTkgNy40NzAxMiAyLjU3OTczIDcuMTAwNiAyLjk0OTM2TDcuMTAwNiAyLjk0OTM3TDcuMDU3NjkgMi45OTIyOEw2LjQzODk4IDMuNjEwOTlDNi4yNDM3MiAzLjgwNjI1IDYuMjQzNzIgNC4xMjI4MiA2LjQzODk4IDQuMzE4MDhDNi42MzQyNCA0LjUxMzM0IDYuOTUwODEgNC41MTMzNCA3LjE0NjA3IDQuMzE4MDhMNy43NjQ3OCAzLjY5OTM4Wk0yLjk5MTkxIDcuMDU4MDdMMi45NDg5OSA3LjEwMDk3QzIuNTc5MzUgNy40NzA1IDIuMzQyODIgNy43MDY5NyAyLjE3NzY3IDcuOTUwMDZDMS41MDI0NiA4Ljk0NDAxIDEuNDY3NiAxMC4yMzc3IDIuMTE3NzggMTEuMjI3N0MyLjI3NjM0IDExLjQ2OTIgMi41MDc0NCAxMS43MDAyIDIuODU4ODYgMTIuMDUxNUwyLjg1ODg4IDEyLjA1MTVMMi45MDM1MiAxMi4wOTYxTDIuOTQ4MTUgMTIuMTQwN0wyLjk0ODE1IDEyLjE0MDdMMi45NDgxNyAxMi4xNDA4QzMuMjk5NDUgMTIuNDkyMiAzLjUzMDQ1IDEyLjcyMzMgMy43NzE5IDEyLjg4MThDNC43NjE5MyAxMy41MzIgNi4wNTU2IDEzLjQ5NzIgNy4wNDk1NiAxMi44MjE5QzcuMjkyNjUgMTIuNjU2OCA3LjUyOTEyIDEyLjQyMDMgNy44OTg2NSAxMi4wNTA2TDcuOTQxNTUgMTIuMDA3N0w4LjU2MDI2IDExLjM4OUM4Ljc1NTUyIDExLjE5MzcgOC43NTU1MiAxMC44NzcyIDguNTYwMjYgMTAuNjgxOUM4LjM2NSAxMC40ODY3IDguMDQ4NDIgMTAuNDg2NyA3Ljg1MzE3IDEwLjY4MTlMNy4yMzQ0NiAxMS4zMDA2QzYuODA3NDcgMTEuNzI3NiA2LjY0MiAxMS44ODk5IDYuNDg3NjQgMTEuOTk0OEM1LjgxMTMgMTIuNDU0MiA0Ljk1NjE1IDEyLjQ2MzIgNC4zMjA4MiAxMi4wNDZDNC4xNzY1NiAxMS45NTEyIDQuMDIyNDkgMTEuODAwOSAzLjYxMDYxIDExLjM4OUMzLjE5ODczIDEwLjk3NzEgMy4wNDgzNyAxMC44MjMxIDIuOTUzNjMgMTAuNjc4OEMyLjUzNjM5IDEwLjA0MzUgMi41NDUzOSA5LjE4ODMyIDMuMDA0ODQgOC41MTE5OEMzLjEwOTcxIDguMzU3NjEgMy4yNzIwMSA4LjE5MjE1IDMuNjk5IDcuNzY1MTZMNC4zMTc3IDcuMTQ2NDVDNC41MTI5NiA2Ljk1MTE5IDQuNTEyOTYgNi42MzQ2MiA0LjMxNzcgNi40MzkzNkM0LjEyMjQ1IDYuMjQ0MSAzLjgwNTg3IDYuMjQ0MSAzLjYxMDYxIDYuNDM5MzZMMi45OTE5MSA3LjA1ODA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZ249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNTY0MjcgMy45OTk4OEM0LjU4NDIyIDMuOTk5ODkgNC42MDQ0NSAzLjk5OTg5IDQuNjI0OTYgMy45OTk4OUg1LjQ5OTk2QzUuNzc2MSAzLjk5OTg5IDUuOTk5OTYgNC4yMjM3NSA1Ljk5OTk2IDQuNDk5ODlDNS45OTk5NiA0Ljc3NjAzIDUuNzc2MSA0Ljk5OTg5IDUuNDk5OTYgNC45OTk4OUg0LjYyNDk2QzQuMDIxMDggNC45OTk4OSAzLjc4OTMyIDUuMDAyMTMgMy42MDYwMSA1LjAzNzEzQzIuODAyODcgNS4xOTA1IDIuMTkxODEgNS43ODg4MyAyLjAzNzU5IDYuNTMzMTJDMi4wMDI1NyA2LjcwMjEyIDEuOTk5OTYgNi45MTczOSAxLjk5OTk2IDcuNDk5ODlDMS45OTk5NiA4LjA4MjM5IDIuMDAyNTcgOC4yOTc2NiAyLjAzNzU5IDguNDY2NjZDMi4xOTE4MSA5LjIxMDk1IDIuODAyODcgOS44MDkyOCAzLjYwNjAxIDkuOTYyNjVDMy43ODkzMiA5Ljk5NzY1IDQuMDIxMDggOS45OTk4OSA0LjYyNDk2IDkuOTk5ODlINS40OTk5NkM1Ljc3NjEgOS45OTk4OSA1Ljk5OTk2IDEwLjIyMzcgNS45OTk5NiAxMC40OTk5QzUuOTk5OTYgMTAuNzc2IDUuNzc2MSAxMC45OTk5IDUuNDk5OTYgMTAuOTk5OUg0LjYyNDk2QzQuNjA0NDUgMTAuOTk5OSA0LjU4NDIyIDEwLjk5OTkgNC41NjQyNyAxMC45OTk5QzQuMDQxNTkgMTEgMy43MDcxMiAxMSAzLjQxODQ1IDEwLjk0NDlDMi4yMzgxNCAxMC43MTk1IDEuMjk4NzEgOS44MjkzNyAxLjA1ODM5IDguNjY5NTVDMC45OTk3ODIgOC4zODY2OSAwLjk5OTg0OCA4LjA1OTkyIDAuOTk5OTQ3IDcuNTYzMDFDMC45OTk5NTEgNy41NDIyNyAwLjk5OTk1NSA3LjUyMTIzIDAuOTk5OTU1IDcuNDk5ODlDMC45OTk5NTUgNy40Nzg1NSAwLjk5OTk1MSA3LjQ1NzUxIDAuOTk5OTQ3IDcuNDM2NzdDMC45OTk4NDggNi45Mzk4NiAwLjk5OTc4MiA2LjYxMzA5IDEuMDU4MzkgNi4zMzAyM0MxLjI5ODcxIDUuMTcwNDEgMi4yMzgxNCA0LjI4MDI3IDMuNDE4NDUgNC4wNTQ4OEMzLjcwNzEyIDMuOTk5NzYgNC4wNDE1OSAzLjk5OTgxIDQuNTY0MjcgMy45OTk4OFpNMTEuMzkzOSA1LjAzNzEzQzExLjIxMDYgNS4wMDIxMyAxMC45Nzg4IDQuOTk5ODkgMTAuMzc1IDQuOTk5ODlIOS40OTk5NkM5LjIyMzgxIDQuOTk5ODkgOC45OTk5NiA0Ljc3NjAzIDguOTk5OTYgNC40OTk4OUM4Ljk5OTk2IDQuMjIzNzUgOS4yMjM4MSAzLjk5OTg5IDkuNDk5OTYgMy45OTk4OUgxMC4zNzVDMTAuMzk1NSAzLjk5OTg5IDEwLjQxNTcgMy45OTk4OSAxMC40MzU2IDMuOTk5ODhDMTAuOTU4MyAzLjk5OTgxIDExLjI5MjggMy45OTk3NiAxMS41ODE1IDQuMDU0ODhDMTIuNzYxOCA0LjI4MDI3IDEzLjcwMTIgNS4xNzA0MSAxMy45NDE1IDYuMzMwMjNDMTQuMDAwMSA2LjYxMzA5IDE0LjAwMDEgNi45Mzk4NSAxNCA3LjQzNjc2QzE0IDcuNDU3NSAxNCA3LjQ3ODU0IDE0IDcuNDk5ODlDMTQgNy41MjEyNCAxNCA3LjU0MjI4IDE0IDcuNTYzMDJDMTQuMDAwMSA4LjA1OTkyIDE0LjAwMDEgOC4zODY2OSAxMy45NDE1IDguNjY5NTVDMTMuNzAxMiA5LjgyOTM3IDEyLjc2MTggMTAuNzE5NSAxMS41ODE1IDEwLjk0NDlDMTEuMjkyOCAxMSAxMC45NTgzIDExIDEwLjQzNTYgMTAuOTk5OUMxMC40MTU3IDEwLjk5OTkgMTAuMzk1NSAxMC45OTk5IDEwLjM3NSAxMC45OTk5SDkuNDk5OTZDOS4yMjM4MSAxMC45OTk5IDguOTk5OTYgMTAuNzc2IDguOTk5OTYgMTAuNDk5OUM4Ljk5OTk2IDEwLjIyMzcgOS4yMjM4MSA5Ljk5OTg5IDkuNDk5OTYgOS45OTk4OUgxMC4zNzVDMTAuOTc4OCA5Ljk5OTg5IDExLjIxMDYgOS45OTc2NSAxMS4zOTM5IDkuOTYyNjVDMTIuMTk3IDkuODA5MjggMTIuODA4MSA5LjIxMDk1IDEyLjk2MjMgOC40NjY2NkMxMi45OTczIDguMjk3NjYgMTMgOC4wODIzOSAxMyA3LjQ5OTg5QzEzIDYuOTE3MzkgMTIuOTk3MyA2LjcwMjEyIDEyLjk2MjMgNi41MzMxMkMxMi44MDgxIDUuNzg4ODMgMTIuMTk3IDUuMTkwNSAxMS4zOTM5IDUuMDM3MTNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxtbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAuNjc4OCAyLjk1NDE5QzEwLjA0MzUgMi41MzY5NCA5LjE4ODI5IDIuNTQ1OTQgOC41MTE5NCAzLjAwNTQxQzguMzU3NTcgMy4xMTAyNyA4LjE5MjEgMy4yNzI1NyA3Ljc2NTEgMy42OTk1N0w3LjE0NjM4IDQuMzE4MjlDNi45NTExMiA0LjUxMzU1IDYuNjM0NTQgNC41MTM1NSA2LjQzOTI4IDQuMzE4MjlDNi4yNDQwMSA0LjEyMzAzIDYuMjQ0MDEgMy44MDY0NSA2LjQzOTI4IDMuNjExMTlMNy4wNTggMi45OTI0N0M3LjA3MjUgMi45Nzc5NyA3LjA4Njc5IDIuOTYzNjYgNy4xMDA5IDIuOTQ5NTVDNy40NzA0NCAyLjU3OTkxIDcuNzA2OTEgMi4zNDMzNiA3Ljk1MDAxIDIuMTc4MjJDOC45NDM5OCAxLjUwMjk5IDEwLjIzNzcgMS40NjgxMyAxMS4yMjc3IDIuMTE4MzJDMTEuNDY5MiAyLjI3Njg5IDExLjcwMDIgMi41MDggMTIuMDUxNSAyLjg1OTQyQzEyLjA2NjIgMi44NzQxIDEyLjA4MSAyLjg4ODk4IDEyLjA5NjEgMi45MDQwOEMxMi4xMTEyIDIuOTE5MTcgMTIuMTI2MSAyLjkzNDA1IDEyLjE0MDggMi45NDg3MUMxMi40OTIyIDMuMzAwMDEgMTIuNzIzMyAzLjUzMTAyIDEyLjg4MTkgMy43NzI0OEMxMy41MzIxIDQuNzYyNTIgMTMuNDk3MiA2LjA1NjIzIDEyLjgyMiA3LjA1MDJDMTIuNjU2OCA3LjI5MzMgMTIuNDIwMyA3LjUyOTc2IDEyLjA1MDcgNy44OTkyOUMxMi4wMzY2IDcuOTEzNCAxMi4wMjIyIDcuOTI3NzEgMTIuMDA3NyA3Ljk0MjIxTDExLjM4OSA4LjU2MDkzQzExLjE5MzggOC43NTYyIDEwLjg3NzIgOC43NTYyIDEwLjY4MTkgOC41NjA5M0MxMC40ODY3IDguMzY1NjcgMTAuNDg2NyA4LjA0OTA5IDEwLjY4MTkgNy44NTM4M0wxMS4zMDA2IDcuMjM1MTFDMTEuNzI3NiA2LjgwODExIDExLjg4OTkgNi42NDI2NCAxMS45OTQ4IDYuNDg4MjdDMTIuNDU0MyA1LjgxMTkyIDEyLjQ2MzMgNC45NTY3NSAxMi4wNDYgNC4zMjE0MUMxMS45NTEzIDQuMTc3MTQgMTEuODAwOSA0LjAyMzA3IDExLjM4OSAzLjYxMTE5QzEwLjk3NzEgMy4xOTkzIDEwLjgyMzEgMy4wNDg5MyAxMC42Nzg4IDIuOTU0MTlaTTQuMzE3OTYgNi40Mzk2MUM0LjUxMzIyIDYuNjM0ODcgNC41MTMyMiA2Ljk1MTQ2IDQuMzE3OTYgNy4xNDY3MkwzLjY5OTI0IDcuNzY1NDRDMy4yNzIyNCA4LjE5MjQ0IDMuMTA5OTMgOC4zNTc5MSAzLjAwNTA3IDguNTEyMjdDMi41NDU2MSA5LjE4ODYzIDIuNTM2NjEgMTAuMDQzOCAyLjk1Mzg1IDEwLjY3OTFDMy4wNDg2IDEwLjgyMzQgMy4xOTg5NiAxMC45Nzc1IDMuNjEwODUgMTEuMzg5NEM0LjAyMjc0IDExLjgwMTIgNC4xNzY4MSAxMS45NTE2IDQuMzIxMDcgMTIuMDQ2NEM0Ljk1NjQyIDEyLjQ2MzYgNS44MTE1OCAxMi40NTQ2IDYuNDg3OTQgMTEuOTk1MUM2LjY0MjMgMTEuODkwMyA2LjgwNzc3IDExLjcyOCA3LjIzNDc3IDExLjMwMUw3Ljg1MzQ5IDEwLjY4MjNDOC4wNDg3NSAxMC40ODcgOC4zNjUzMyAxMC40ODcgOC41NjA2IDEwLjY4MjNDOC43NTU4NiAxMC44Nzc1IDguNzU1ODYgMTEuMTk0MSA4LjU2MDYgMTEuMzg5NEw3Ljk0MTg4IDEyLjAwODFDNy45MjczOCAxMi4wMjI2IDcuOTEzMDcgMTIuMDM2OSA3Ljg5ODk3IDEyLjA1MUM3LjUyOTQzIDEyLjQyMDYgNy4yOTI5NiAxMi42NTcyIDcuMDQ5ODYgMTIuODIyM0M2LjA1NTg5IDEzLjQ5NzYgNC43NjIxOSAxMy41MzI0IDMuNzcyMTQgMTIuODgyMkMzLjUzMDY4IDEyLjcyMzcgMy4yOTk2NyAxMi40OTI1IDIuOTQ4MzcgMTIuMTQxMUMyLjkzMzcxIDEyLjEyNjQgMi45MTg4MyAxMi4xMTE2IDIuOTAzNzQgMTIuMDk2NUMyLjg4ODY1IDEyLjA4MTQgMi44NzM3NyAxMi4wNjY1IDIuODU5MSAxMi4wNTE4QzIuNTA3NjYgMTEuNzAwNSAyLjI3NjU2IDExLjQ2OTUgMi4xMTc5OSAxMS4yMjgxQzEuNDY3OCAxMC4yMzggMS41MDI2NSA4Ljk0NDMyIDIuMTc3ODggNy45NTAzNUMyLjM0MzAzIDcuNzA3MjQgMi41Nzk1NyA3LjQ3MDc3IDIuOTQ5MjIgNy4xMDEyNEMyLjk2MzMzIDcuMDg3MTMgMi45Nzc2MyA3LjA3MjgzIDIuOTkyMTMgNy4wNTgzM0wzLjYxMDg1IDYuNDM5NjFDMy44MDYxMSA2LjI0NDM1IDQuMTIyNjkgNi4yNDQzNSA0LjMxNzk2IDYuNDM5NjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx3bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS41IDUuMjVDMS45MTQyMSA1LjI1IDIuMjUgNC45MTQyMSAyLjI1IDQuNUMyLjI1IDQuMDg1NzkgMS45MTQyMSAzLjc1IDEuNSAzLjc1QzEuMDg1NzkgMy43NSAwLjc1IDQuMDg1NzkgMC43NSA0LjVDMC43NSA0LjkxNDIxIDEuMDg1NzkgNS4yNSAxLjUgNS4yNVpNNCA0LjVDNCA0LjIyMzg2IDQuMjIzODYgNCA0LjUgNEgxMy41QzEzLjc3NjEgNCAxNCA0LjIyMzg2IDE0IDQuNUMxNCA0Ljc3NjE0IDEzLjc3NjEgNSAxMy41IDVINC41QzQuMjIzODYgNSA0IDQuNzc2MTQgNCA0LjVaTTQuNSA3QzQuMjIzODYgNyA0IDcuMjIzODYgNCA3LjVDNCA3Ljc3NjE0IDQuMjIzODYgOCA0LjUgOEgxMy41QzEzLjc3NjEgOCAxNCA3Ljc3NjE0IDE0IDcuNUMxNCA3LjIyMzg2IDEzLjc3NjEgNyAxMy41IDdINC41Wk00LjUgMTBDNC4yMjM4NiAxMCA0IDEwLjIyMzkgNCAxMC41QzQgMTAuNzc2MSA0LjIyMzg2IDExIDQuNSAxMUgxMy41QzEzLjc3NjEgMTEgMTQgMTAuNzc2MSAxNCAxMC41QzE0IDEwLjIyMzkgMTMuNzc2MSAxMCAxMy41IDEwSDQuNVpNMi4yNSA3LjVDMi4yNSA3LjkxNDIxIDEuOTE0MjEgOC4yNSAxLjUgOC4yNUMxLjA4NTc5IDguMjUgMC43NSA3LjkxNDIxIDAuNzUgNy41QzAuNzUgNy4wODU3OSAxLjA4NTc5IDYuNzUgMS41IDYuNzVDMS45MTQyMSA2Ljc1IDIuMjUgNy4wODU3OSAyLjI1IDcuNVpNMS41IDExLjI1QzEuOTE0MjEgMTEuMjUgMi4yNSAxMC45MTQyIDIuMjUgMTAuNUMyLjI1IDEwLjA4NTggMS45MTQyMSA5Ljc1IDEuNSA5Ljc1QzEuMDg1NzkgOS43NSAwLjc1IDEwLjA4NTggMC43NSAxMC41QzAuNzUgMTAuOTE0MiAxLjA4NTc5IDExLjI1IDEuNSAxMS4yNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHluPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDQuNjM2MDFDNSAzLjc2MDMxIDUuMjQyMTkgMy4xMDU0IDUuNjQzMjMgMi42NzM1N0M2LjAzOTM0IDIuMjQ3MDUgNi42NDU4MiAxLjk3ODMgNy41MDE0IDEuOTc4M0M4LjM1NzQ1IDEuOTc4MyA4Ljk2MzA2IDIuMjQ2NTIgOS4zNTgyMyAyLjY3MjA4QzkuNzU4MzggMy4xMDI5OSAxMCAzLjc1NzA4IDEwIDQuNjMzMjVWNS45OTk5OUg1VjQuNjM2MDFaTTQgNS45OTk5OVY0LjYzNjAxQzQgMy41ODE0OCA0LjI5MzM5IDIuNjU3NTQgNC45MTA0OSAxLjk5MzA3QzUuNTMyNTIgMS4zMjMyOSA2LjQyNjc1IDAuOTc4MzAyIDcuNTAxNCAwLjk3ODMwMkM4LjU3NTgzIDAuOTc4MzAyIDkuNDY5NTIgMS4zMjIzMyAxMC4wOTEgMS45OTE2MkMxMC43MDc2IDIuNjU1NTcgMTEgMy41Nzg5NiAxMSA0LjYzMzI1VjUuOTk5OTlIMTJDMTIuNTUyMyA1Ljk5OTk5IDEzIDYuNDQ3NzEgMTMgNi45OTk5OVYxM0MxMyAxMy41NTIzIDEyLjU1MjMgMTQgMTIgMTRIM0MyLjQ0NzcyIDE0IDIgMTMuNTUyMyAyIDEzVjYuOTk5OTlDMiA2LjQ0NzcxIDIuNDQ3NzIgNS45OTk5OSAzIDUuOTk5OTlINFpNMyA2Ljk5OTk5SDEyVjEzSDNWNi45OTk5OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGJuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5ODYgMEM2LjMyNTcgMCA1LjM2MTA3IDAuMzg5NDMgNC43Mzc1MyAxLjE5MzYxQzQuMjM3NDUgMS44Mzg1NiA0IDIuNjgyNDIgNCAzLjYzMzI1SDVDNSAyLjg0MzEzIDUuMTk2OTEgMi4yMzMxMiA1LjUyNzggMS44MDYzNkM1LjkxNjE1IDEuMzA1NTIgNi41NTE1MiAxIDcuNDk4NiAxQzguMzU2ODMgMSA4Ljk2MzM2IDEuMjY1MDIgOS4zNTg0NiAxLjY4NjIzQzkuNzU3OTMgMi4xMTIxMSAxMCAyLjc2MDQ0IDEwIDMuNjM2MDFWNkgzQzIuNDQ3NzIgNiAyIDYuNDQ3NzIgMiA3VjEzQzIgMTMuNTUyMyAyLjQ0NzcyIDE0IDMgMTRIMTJDMTIuNTUyMyAxNCAxMyAxMy41NTIzIDEzIDEzVjdDMTMgNi40NDc3MSAxMi41NTIzIDYgMTIgNkgxMVYzLjYzNjAxQzExIDIuNTgxMzUgMTAuNzA2NSAxLjY2MTY3IDEwLjA4NzggMS4wMDIxQzkuNDY0NzcgMC4zMzc4NzEgOC41NzA2MSAwIDcuNDk4NiAwWk0zIDdIMTJWMTNIM1Y3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0seG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkgMy42MzYwMUM5IDIuNzYwNDQgOS4yNDIwNyAyLjExMjExIDkuNjQxNTQgMS42ODYyM0MxMC4wMzY2IDEuMjY1MDIgMTAuNjQzMiAxIDExLjUwMTQgMUMxMi40NDg1IDEgMTMuMDgzOSAxLjMwNTUyIDEzLjQ3MjIgMS44MDYzNkMxMy44MDMxIDIuMjMzMTIgMTQgMi44NDMxMyAxNCAzLjYzMzI1SDE1QzE1IDIuNjgyNDIgMTQuNzYyNiAxLjgzODU2IDE0LjI2MjUgMS4xOTM2MUMxMy42Mzg5IDAuMzg5NDMgMTIuNjc0MyAwIDExLjUwMTQgMEMxMC40Mjk0IDAgOS41MzUyMyAwLjMzNzg3MSA4LjkxMjE4IDEuMDAyMUM4LjI5MzUxIDEuNjYxNjcgOCAyLjU4MTM1IDggMy42MzYwMVY2SDFDMC40NDc3MTUgNiAwIDYuNDQ3NzIgMCA3VjEzQzAgMTMuNTUyMyAwLjQ0NzcxNSAxNCAxIDE0SDEwQzEwLjU1MjMgMTQgMTEgMTMuNTUyMyAxMSAxM1Y3QzExIDYuNDQ3NzIgMTAuNTUyMyA2IDEwIDZIOVYzLjYzNjAxWk0xIDdIMTBWMTNIMVY3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sT249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMzUzNTUgMS44NTM1NUMzLjU0ODgyIDEuNjU4MjkgMy41NDg4MiAxLjM0MTcxIDMuMzUzNTUgMS4xNDY0NUMzLjE1ODI5IDAuOTUxMTg0IDIuODQxNzEgMC45NTExODQgMi42NDY0NSAxLjE0NjQ1TDAuNjQ2NDQ3IDMuMTQ2NDVDMC40NTExODQgMy4zNDE3MSAwLjQ1MTE4NCAzLjY1ODI5IDAuNjQ2NDQ3IDMuODUzNTVMMi42NDY0NSA1Ljg1MzU1QzIuODQxNzEgNi4wNDg4MiAzLjE1ODI5IDYuMDQ4ODIgMy4zNTM1NSA1Ljg1MzU1QzMuNTQ4ODIgNS42NTgyOSAzLjU0ODgyIDUuMzQxNzEgMy4zNTM1NSA1LjE0NjQ1TDIuMjA3MTEgNEg5LjVDMTEuNDMzIDQgMTMgNS41NjcgMTMgNy41QzEzIDcuNzc2MTQgMTMuMjIzOSA4IDEzLjUgOEMxMy43NzYxIDggMTQgNy43NzYxNCAxNCA3LjVDMTQgNS4wMTQ3MiAxMS45ODUzIDMgOS41IDNIMi4yMDcxMUwzLjM1MzU1IDEuODUzNTVaTTIgNy41QzIgNy4yMjM4NiAxLjc3NjE0IDcgMS41IDdDMS4yMjM4NiA3IDEgNy4yMjM4NiAxIDcuNUMxIDkuOTg1MjggMy4wMTQ3MiAxMiA1LjUgMTJIMTIuNzkyOUwxMS42NDY0IDEzLjE0NjRDMTEuNDUxMiAxMy4zNDE3IDExLjQ1MTIgMTMuNjU4MyAxMS42NDY0IDEzLjg1MzZDMTEuODQxNyAxNC4wNDg4IDEyLjE1ODMgMTQuMDQ4OCAxMi4zNTM2IDEzLjg1MzZMMTQuMzUzNiAxMS44NTM2QzE0LjU0ODggMTEuNjU4MyAxNC41NDg4IDExLjM0MTcgMTQuMzUzNiAxMS4xNDY0TDEyLjM1MzYgOS4xNDY0NUMxMi4xNTgzIDguOTUxMTggMTEuODQxNyA4Ljk1MTE4IDExLjY0NjQgOS4xNDY0NUMxMS40NTEyIDkuMzQxNzEgMTEuNDUxMiA5LjY1ODI5IDExLjY0NjQgOS44NTM1NUwxMi43OTI5IDExSDUuNUMzLjU2NyAxMSAyIDkuNDMzIDIgNy41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjkgMC40OTk5NzZDMTMuOSAwLjI3OTA2MiAxMy43MjA5IDAuMDk5OTc1NiAxMy41IDAuMDk5OTc1NkMxMy4yNzkxIDAuMDk5OTc1NiAxMy4xIDAuMjc5MDYyIDEzLjEgMC40OTk5NzZWMS4wOTk5OEgxMi41QzEyLjI3OTEgMS4wOTk5OCAxMi4xIDEuMjc5MDYgMTIuMSAxLjQ5OTk4QzEyLjEgMS43MjA4OSAxMi4yNzkxIDEuODk5OTggMTIuNSAxLjg5OTk4SDEzLjFWMi40OTk5OEMxMy4xIDIuNzIwODkgMTMuMjc5MSAyLjg5OTk4IDEzLjUgMi44OTk5OEMxMy43MjA5IDIuODk5OTggMTMuOSAyLjcyMDg5IDEzLjkgMi40OTk5OFYxLjg5OTk4SDE0LjVDMTQuNzIwOSAxLjg5OTk4IDE0LjkgMS43MjA4OSAxNC45IDEuNDk5OThDMTQuOSAxLjI3OTA2IDE0LjcyMDkgMS4wOTk5OCAxNC41IDEuMDk5OThIMTMuOVYwLjQ5OTk3NlpNMTEuODUzNiAzLjE0NjQyQzEyLjA0ODggMy4zNDE2OCAxMi4wNDg4IDMuNjU4MjYgMTEuODUzNiAzLjg1MzUzTDEwLjg1MzYgNC44NTM1M0MxMC42NTgzIDUuMDQ4NzkgMTAuMzQxNyA1LjA0ODc5IDEwLjE0NjUgNC44NTM1M0M5Ljk1MTIgNC42NTgyNyA5Ljk1MTIgNC4zNDE2OSAxMC4xNDY1IDQuMTQ2NDJMMTEuMTQ2NCAzLjE0NjQzQzExLjM0MTcgMi45NTExNiAxMS42NTgzIDIuOTUxMTYgMTEuODUzNiAzLjE0NjQyWk05Ljg1MzU3IDUuMTQ2NDJDMTAuMDQ4OCA1LjM0MTY4IDEwLjA0ODggNS42NTgyNyA5Ljg1MzU3IDUuODUzNTNMMi44NTM1NSAxMi44NTM1QzIuNjU4MjkgMTMuMDQ4OCAyLjM0MTcxIDEzLjA0ODggMi4xNDY0NSAxMi44NTM1QzEuOTUxMTggMTIuNjU4MyAxLjk1MTE4IDEyLjM0MTcgMi4xNDY0NSAxMi4xNDY0TDkuMTQ2NDYgNS4xNDY0MkM5LjM0MTcyIDQuOTUxMTYgOS42NTgzMSA0Ljk1MTE2IDkuODUzNTcgNS4xNDY0MlpNMTMuNSA1LjA5OTk4QzEzLjcyMDkgNS4wOTk5OCAxMy45IDUuMjc5MDYgMTMuOSA1LjQ5OTk4VjYuMDk5OThIMTQuNUMxNC43MjA5IDYuMDk5OTggMTQuOSA2LjI3OTA2IDE0LjkgNi40OTk5OEMxNC45IDYuNzIwODkgMTQuNzIwOSA2Ljg5OTk4IDE0LjUgNi44OTk5OEgxMy45VjcuNDk5OThDMTMuOSA3LjcyMDg5IDEzLjcyMDkgNy44OTk5OCAxMy41IDcuODk5OThDMTMuMjc5MSA3Ljg5OTk4IDEzLjEgNy43MjA4OSAxMy4xIDcuNDk5OThWNi44OTk5OEgxMi41QzEyLjI3OTEgNi44OTk5OCAxMi4xIDYuNzIwODkgMTIuMSA2LjQ5OTk4QzEyLjEgNi4yNzkwNiAxMi4yNzkxIDYuMDk5OTggMTIuNSA2LjA5OTk4SDEzLjFWNS40OTk5OEMxMy4xIDUuMjc5MDYgMTMuMjc5MSA1LjA5OTk4IDEzLjUgNS4wOTk5OFpNOC45MDAwMiAwLjQ5OTk3NkM4LjkwMDAyIDAuMjc5MDYyIDguNzIwOTMgMC4wOTk5NzU2IDguNTAwMDIgMC4wOTk5NzU2QzguMjc5MSAwLjA5OTk3NTYgOC4xMDAwMiAwLjI3OTA2MiA4LjEwMDAyIDAuNDk5OTc2VjEuMDk5OThINy41MDAwMkM3LjI3OTEgMS4wOTk5OCA3LjEwMDAyIDEuMjc5MDYgNy4xMDAwMiAxLjQ5OTk4QzcuMTAwMDIgMS43MjA4OSA3LjI3OTEgMS44OTk5OCA3LjUwMDAyIDEuODk5OThIOC4xMDAwMlYyLjQ5OTk4QzguMTAwMDIgMi43MjA4OSA4LjI3OTEgMi44OTk5OCA4LjUwMDAyIDIuODk5OThDOC43MjA5MyAyLjg5OTk4IDguOTAwMDIgMi43MjA4OSA4LjkwMDAyIDIuNDk5OThWMS44OTk5OEg5LjUwMDAyQzkuNzIwOTMgMS44OTk5OCA5LjkwMDAyIDEuNzIwODkgOS45MDAwMiAxLjQ5OTk4QzkuOTAwMDIgMS4yNzkwNiA5LjcyMDkzIDEuMDk5OTggOS41MDAwMiAxLjA5OTk4SDguOTAwMDJWMC40OTk5NzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxfbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTAgNi41QzEwIDguNDMzIDguNDMzIDEwIDYuNSAxMEM0LjU2NyAxMCAzIDguNDMzIDMgNi41QzMgNC41NjcgNC41NjcgMyA2LjUgM0M4LjQzMyAzIDEwIDQuNTY3IDEwIDYuNVpNOS4zMDg4NCAxMC4wMTU5QzguNTM5MDEgMTAuNjMxOCA3LjU2MjUxIDExIDYuNSAxMUM0LjAxNDcyIDExIDIgOC45ODUyOCAyIDYuNUMyIDQuMDE0NzIgNC4wMTQ3MiAyIDYuNSAyQzguOTg1MjggMiAxMSA0LjAxNDcyIDExIDYuNUMxMSA3LjU2MjUxIDEwLjYzMTggOC41MzkwMSAxMC4wMTU5IDkuMzA4ODRMMTIuODUzNiAxMi4xNDY0QzEzLjA0ODggMTIuMzQxNyAxMy4wNDg4IDEyLjY1ODMgMTIuODUzNiAxMi44NTM2QzEyLjY1ODMgMTMuMDQ4OCAxMi4zNDE3IDEzLjA0ODggMTIuMTQ2NCAxMi44NTM2TDkuMzA4ODQgMTAuMDE1OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE1uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjQ5OTg4IDIuMDAwMTJDMS43NzYwMiAyLjAwMDEyIDEuOTk5ODggMS43NzYyNiAxLjk5OTg4IDEuNTAwMTJDMS45OTk4OCAxLjIyMzk4IDEuNzc2MDIgMS4wMDAxMiAxLjQ5OTg4IDEuMDAwMTJDMS4yMjM3NCAxLjAwMDEyIDAuOTk5ODc4IDEuMjIzOTggMC45OTk4NzggMS41MDAxMkMwLjk5OTg3OCAxLjc3NjI2IDEuMjIzNzQgMi4wMDAxMiAxLjQ5OTg4IDIuMDAwMTJaTTQuNDk5ODggMi4wMDAxMkM0Ljc3NjAyIDIuMDAwMTIgNC45OTk4OCAxLjc3NjI2IDQuOTk5ODggMS41MDAxMkM0Ljk5OTg4IDEuMjIzOTggNC43NzYwMiAxLjAwMDEyIDQuNDk5ODggMS4wMDAxMkM0LjIyMzc0IDEuMDAwMTIgMy45OTk4OCAxLjIyMzk4IDMuOTk5ODggMS41MDAxMkMzLjk5OTg4IDEuNzc2MjYgNC4yMjM3NCAyLjAwMDEyIDQuNDk5ODggMi4wMDAxMlpNNy45OTk4OCAxLjUwMDEyQzcuOTk5ODggMS43NzYyNiA3Ljc3NjAyIDIuMDAwMTIgNy40OTk4OCAyLjAwMDEyQzcuMjIzNzQgMi4wMDAxMiA2Ljk5OTg4IDEuNzc2MjYgNi45OTk4OCAxLjUwMDEyQzYuOTk5ODggMS4yMjM5OCA3LjIyMzc0IDEuMDAwMTIgNy40OTk4OCAxLjAwMDEyQzcuNzc2MDIgMS4wMDAxMiA3Ljk5OTg4IDEuMjIzOTggNy45OTk4OCAxLjUwMDEyWk0xMC40OTk5IDIuMDAwMTJDMTAuNzc2IDIuMDAwMTIgMTAuOTk5OSAxLjc3NjI2IDEwLjk5OTkgMS41MDAxMkMxMC45OTk5IDEuMjIzOTggMTAuNzc2IDEuMDAwMTIgMTAuNDk5OSAxLjAwMDEyQzEwLjIyMzcgMS4wMDAxMiA5Ljk5OTg4IDEuMjIzOTggOS45OTk4OCAxLjUwMDEyQzkuOTk5ODggMS43NzYyNiAxMC4yMjM3IDIuMDAwMTIgMTAuNDk5OSAyLjAwMDEyWk0xMy45OTk5IDEuNTAwMTJDMTMuOTk5OSAxLjc3NjI2IDEzLjc3NiAyLjAwMDEyIDEzLjQ5OTkgMi4wMDAxMkMxMy4yMjM3IDIuMDAwMTIgMTIuOTk5OSAxLjc3NjI2IDEyLjk5OTkgMS41MDAxMkMxMi45OTk5IDEuMjIzOTggMTMuMjIzNyAxLjAwMDEyIDEzLjQ5OTkgMS4wMDAxMkMxMy43NzYgMS4wMDAxMiAxMy45OTk5IDEuMjIzOTggMTMuOTk5OSAxLjUwMDEyWk0xLjQ5OTg4IDE0LjAwMDFDMS43NzYwMiAxNC4wMDAxIDEuOTk5ODggMTMuNzc2MyAxLjk5OTg4IDEzLjUwMDFDMS45OTk4OCAxMy4yMjQgMS43NzYwMiAxMy4wMDAxIDEuNDk5ODggMTMuMDAwMUMxLjIyMzc0IDEzLjAwMDEgMC45OTk4NzggMTMuMjI0IDAuOTk5ODc4IDEzLjUwMDFDMC45OTk4NzggMTMuNzc2MyAxLjIyMzc0IDE0LjAwMDEgMS40OTk4OCAxNC4wMDAxWk0xLjk5OTg4IDEwLjUwMDFDMS45OTk4OCAxMC43NzYzIDEuNzc2MDIgMTEuMDAwMSAxLjQ5OTg4IDExLjAwMDFDMS4yMjM3NCAxMS4wMDAxIDAuOTk5ODc4IDEwLjc3NjMgMC45OTk4NzggMTAuNTAwMUMwLjk5OTg3OCAxMC4yMjQgMS4yMjM3NCAxMC4wMDAxIDEuNDk5ODggMTAuMDAwMUMxLjc3NjAyIDEwLjAwMDEgMS45OTk4OCAxMC4yMjQgMS45OTk4OCAxMC41MDAxWk0xLjQ5OTg4IDguMDAwMTJDMS43NzYwMiA4LjAwMDEyIDEuOTk5ODggNy43NzYyNiAxLjk5OTg4IDcuNTAwMTJDMS45OTk4OCA3LjIyMzk4IDEuNzc2MDIgNy4wMDAxMiAxLjQ5OTg4IDcuMDAwMTJDMS4yMjM3NCA3LjAwMDEyIDAuOTk5ODc4IDcuMjIzOTggMC45OTk4NzggNy41MDAxMkMwLjk5OTg3OCA3Ljc3NjI2IDEuMjIzNzQgOC4wMDAxMiAxLjQ5OTg4IDguMDAwMTJaTTEuOTk5ODggNC41MDAxMkMxLjk5OTg4IDQuNzc2MjYgMS43NzYwMiA1LjAwMDEyIDEuNDk5ODggNS4wMDAxMkMxLjIyMzc0IDUuMDAwMTIgMC45OTk4NzggNC43NzYyNiAwLjk5OTg3OCA0LjUwMDEyQzAuOTk5ODc4IDQuMjIzOTggMS4yMjM3NCA0LjAwMDEyIDEuNDk5ODggNC4wMDAxMkMxLjc3NjAyIDQuMDAwMTIgMS45OTk4OCA0LjIyMzk4IDEuOTk5ODggNC41MDAxMlpNMTMuNDk5OSAxMS4wMDAxQzEzLjc3NiAxMS4wMDAxIDEzLjk5OTkgMTAuNzc2MyAxMy45OTk5IDEwLjUwMDFDMTMuOTk5OSAxMC4yMjQgMTMuNzc2IDEwLjAwMDEgMTMuNDk5OSAxMC4wMDAxQzEzLjIyMzcgMTAuMDAwMSAxMi45OTk5IDEwLjIyNCAxMi45OTk5IDEwLjUwMDFDMTIuOTk5OSAxMC43NzYzIDEzLjIyMzcgMTEuMDAwMSAxMy40OTk5IDExLjAwMDFaTTEzLjk5OTkgNy41MDAxMkMxMy45OTk5IDcuNzc2MjYgMTMuNzc2IDguMDAwMTIgMTMuNDk5OSA4LjAwMDEyQzEzLjIyMzcgOC4wMDAxMiAxMi45OTk5IDcuNzc2MjYgMTIuOTk5OSA3LjUwMDEyQzEyLjk5OTkgNy4yMjM5OCAxMy4yMjM3IDcuMDAwMTIgMTMuNDk5OSA3LjAwMDEyQzEzLjc3NiA3LjAwMDEyIDEzLjk5OTkgNy4yMjM5OCAxMy45OTk5IDcuNTAwMTJaTTEzLjQ5OTkgNS4wMDAxMkMxMy43NzYgNS4wMDAxMiAxMy45OTk5IDQuNzc2MjYgMTMuOTk5OSA0LjUwMDEyQzEzLjk5OTkgNC4yMjM5OCAxMy43NzYgNC4wMDAxMiAxMy40OTk5IDQuMDAwMTJDMTMuMjIzNyA0LjAwMDEyIDEyLjk5OTkgNC4yMjM5OCAxMi45OTk5IDQuNTAwMTJDMTIuOTk5OSA0Ljc3NjI2IDEzLjIyMzcgNS4wMDAxMiAxMy40OTk5IDUuMDAwMTJaTTQuOTk5ODggMTMuNTAwMUM0Ljk5OTg4IDEzLjc3NjMgNC43NzYwMiAxNC4wMDAxIDQuNDk5ODggMTQuMDAwMUM0LjIyMzc0IDE0LjAwMDEgMy45OTk4OCAxMy43NzYzIDMuOTk5ODggMTMuNTAwMUMzLjk5OTg4IDEzLjIyNCA0LjIyMzc0IDEzLjAwMDEgNC40OTk4OCAxMy4wMDAxQzQuNzc2MDIgMTMuMDAwMSA0Ljk5OTg4IDEzLjIyNCA0Ljk5OTg4IDEzLjUwMDFaTTcuNDk5ODggMTQuMDAwMUM3Ljc3NjAyIDE0LjAwMDEgNy45OTk4OCAxMy43NzYzIDcuOTk5ODggMTMuNTAwMUM3Ljk5OTg4IDEzLjIyNCA3Ljc3NjAyIDEzLjAwMDEgNy40OTk4OCAxMy4wMDAxQzcuMjIzNzQgMTMuMDAwMSA2Ljk5OTg4IDEzLjIyNCA2Ljk5OTg4IDEzLjUwMDFDNi45OTk4OCAxMy43NzYzIDcuMjIzNzQgMTQuMDAwMSA3LjQ5OTg4IDE0LjAwMDFaTTEwLjk5OTkgMTMuNTAwMUMxMC45OTk5IDEzLjc3NjMgMTAuNzc2IDE0LjAwMDEgMTAuNDk5OSAxNC4wMDAxQzEwLjIyMzcgMTQuMDAwMSA5Ljk5OTg4IDEzLjc3NjMgOS45OTk4OCAxMy41MDAxQzkuOTk5ODggMTMuMjI0IDEwLjIyMzcgMTMuMDAwMSAxMC40OTk5IDEzLjAwMDFDMTAuNzc2IDEzLjAwMDEgMTAuOTk5OSAxMy4yMjQgMTAuOTk5OSAxMy41MDAxWk0xMy40OTk5IDE0LjAwMDFDMTMuNzc2IDE0LjAwMDEgMTMuOTk5OSAxMy43NzYzIDEzLjk5OTkgMTMuNTAwMUMxMy45OTk5IDEzLjIyNCAxMy43NzYgMTMuMDAwMSAxMy40OTk5IDEzLjAwMDFDMTMuMjIzNyAxMy4wMDAxIDEyLjk5OTkgMTMuMjI0IDEyLjk5OTkgMTMuNTAwMUMxMi45OTk5IDEzLjc3NjMgMTMuMjIzNyAxNC4wMDAxIDEzLjQ5OTkgMTQuMDAwMVpNMy45OTk4OCA1LjAwMDEyQzMuOTk5ODggNC40NDc4NCA0LjQ0NzU5IDQuMDAwMTIgNC45OTk4OCA0LjAwMDEySDkuOTk5ODhDMTAuNTUyMiA0LjAwMDEyIDEwLjk5OTkgNC40NDc4NCAxMC45OTk5IDUuMDAwMTJWMTAuMDAwMUMxMC45OTk5IDEwLjU1MjQgMTAuNTUyMiAxMS4wMDAxIDkuOTk5ODggMTEuMDAwMUg0Ljk5OTg4QzQuNDQ3NTkgMTEuMDAwMSAzLjk5OTg4IDEwLjU1MjQgMy45OTk4OCAxMC4wMDAxVjUuMDAwMTJaTTQuOTk5ODggNS4wMDAxMkg5Ljk5OTg4VjEwLjAwMDFINC45OTk4OFY1LjAwMDEyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sam49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgMkgxNFYxM0gxTDEgMlpNMCAyQzAgMS40NDc3MiAwLjQ0NzcxNSAxIDEgMUgxNEMxNC41NTIzIDEgMTUgMS40NDc3MiAxNSAyVjEzQzE1IDEzLjU1MjMgMTQuNTUyMyAxNCAxNCAxNEgxQzAuNDQ3NzE1IDE0IDAgMTMuNTUyMyAwIDEzVjJaTTQuODc1IDcuNUM0Ljg3NSA2LjA1MDI1IDYuMDUwMjUgNC44NzUgNy41IDQuODc1QzguOTQ5NzUgNC44NzUgMTAuMTI1IDYuMDUwMjUgMTAuMTI1IDcuNUMxMC4xMjUgOC45NDk3NSA4Ljk0OTc1IDEwLjEyNSA3LjUgMTAuMTI1QzYuMDUwMjUgMTAuMTI1IDQuODc1IDguOTQ5NzUgNC44NzUgNy41Wk03LjUgMy44NzVDNS40OTc5NyAzLjg3NSAzLjg3NSA1LjQ5Nzk3IDMuODc1IDcuNUMzLjg3NSA5LjUwMjAzIDUuNDk3OTcgMTEuMTI1IDcuNSAxMS4xMjVDOS41MDIwMyAxMS4xMjUgMTEuMTI1IDkuNTAyMDMgMTEuMTI1IDcuNUMxMS4xMjUgNS40OTc5NyA5LjUwMjAzIDMuODc1IDcuNSAzLjg3NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEVuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xIDFDMC40NDc3MTUgMSAwIDEuNDQ3NzIgMCAyVjEzQzAgMTMuNTUyMyAwLjQ0NzcxNSAxNCAxIDE0SDE0QzE0LjU1MjMgMTQgMTUgMTMuNTUyMyAxNSAxM1YyQzE1IDEuNDQ3NzIgMTQuNTUyMyAxIDE0IDFIMVpNNy41IDEwLjYyNUM5LjIyNTg5IDEwLjYyNSAxMC42MjUgOS4yMjU4OSAxMC42MjUgNy41QzEwLjYyNSA1Ljc3NDExIDkuMjI1ODkgNC4zNzUgNy41IDQuMzc1QzUuNzc0MTEgNC4zNzUgNC4zNzUgNS43NzQxMSA0LjM3NSA3LjVDNC4zNzUgOS4yMjU4OSA1Ljc3NDExIDEwLjYyNSA3LjUgMTAuNjI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sU249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuMjUgNy41QzIuMjUgNy4yMjM4NiAyLjQ3Mzg2IDcgMi43NSA3SDEyLjI1QzEyLjUyNjEgNyAxMi43NSA3LjIyMzg2IDEyLjc1IDcuNUMxMi43NSA3Ljc3NjE0IDEyLjUyNjEgOCAxMi4yNSA4SDIuNzVDMi40NzM4NiA4IDIuMjUgNy43NzYxNCAyLjI1IDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFBuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc2ODkyQzMuODQyMjIgMC44NzY4OTIgMC44NzcwNzUgMy44NDIwNCAwLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDExLjE1NzQgMy44NDIyMiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMxMS4xNTc2IDE0LjEyMjYgMTQuMTIyNyAxMS4xNTc0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDMuODQyMDQgMTEuMTU3NiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyWk0xLjgyNzA3IDcuNDk5NzJDMS44MjcwNyA0LjM2NjcxIDQuMzY2ODkgMS44MjY4OSA3LjQ5OTkxIDEuODI2ODlDMTAuNjMyOSAxLjgyNjg5IDEzLjE3MjcgNC4zNjY3MSAxMy4xNzI3IDcuNDk5NzJDMTMuMTcyNyAxMC42MzI3IDEwLjYzMjkgMTMuMTcyNiA3LjQ5OTkxIDEzLjE3MjZDNC4zNjY4OSAxMy4xNzI2IDEuODI3MDcgMTAuNjMyNyAxLjgyNzA3IDcuNDk5NzJaTTQuNTAwMDMgN0M0LjIyMzg5IDcgNC4wMDAwMyA3LjIyMzg2IDQuMDAwMDMgNy41QzQuMDAwMDMgNy43NzYxNCA0LjIyMzg5IDggNC41MDAwMyA4SDEwLjVDMTAuNzc2MiA4IDExIDcuNzc2MTQgMTEgNy41QzExIDcuMjIzODYgMTAuNzc2MiA3IDEwLjUgN0g0LjUwMDAzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIuMTQ5MjEgMy45OTk5NkMyLjE0OTIxIDIuOTc3NzggMi45Nzc4NCAyLjE0OTE1IDQuMDAwMDIgMi4xNDkxNUM1LjAyMjE5IDIuMTQ5MTUgNS44NTA4MyAyLjk3Nzc4IDUuODUwODMgMy45OTk5NkM1Ljg1MDgzIDUuMDIyMTMgNS4wMjIxOSA1Ljg1MDc3IDQuMDAwMDIgNS44NTA3N0MyLjk3Nzg0IDUuODUwNzcgMi4xNDkyMSA1LjAyMjEzIDIuMTQ5MjEgMy45OTk5NlpNNC4wMDAwMiAxLjI0OTE1QzIuNDgwNzkgMS4yNDkxNSAxLjI0OTIxIDIuNDgwNzMgMS4yNDkyMSAzLjk5OTk2QzEuMjQ5MjEgNS41MTkxOSAyLjQ4MDc5IDYuNzUwNzcgNC4wMDAwMiA2Ljc1MDc3QzUuNTE5MjUgNi43NTA3NyA2Ljc1MDgzIDUuNTE5MTkgNi43NTA4MyAzLjk5OTk2QzYuNzUwODMgMi40ODA3MyA1LjUxOTI1IDEuMjQ5MTUgNC4wMDAwMiAxLjI0OTE1Wk01LjgyMDM0IDExLjAwMDFMMi40OTk5OCAxMi44MzY5VjkuMTYzMzFMNS44MjAzNCAxMS4wMDAxWk0yLjYzODgzIDguMjExNTlDMi4xNzIyOCA3Ljk1MzUgMS41OTk5OCA4LjI5MDkzIDEuNTk5OTggOC44MjQxMVYxMy4xNzYxQzEuNTk5OTggMTMuNzA5MyAyLjE3MjI4IDE0LjA0NjcgMi42Mzg4MyAxMy43ODg2TDYuNTcyMzUgMTEuNjEyNkM3LjA1Mzg5IDExLjM0NjIgNy4wNTM4OSAxMC42NTQgNi41NzIzNSAxMC4zODc2TDIuNjM4ODMgOC4yMTE1OVpNOC4zMDAwMSA5LjAwMDAzQzguMzAwMDEgOC42MTM0MyA4LjYxMzQxIDguMzAwMDMgOS4wMDAwMSA4LjMwMDAzSDEzQzEzLjM4NjYgOC4zMDAwMyAxMy43IDguNjEzNDMgMTMuNyA5LjAwMDAzVjEzQzEzLjcgMTMuMzg2NiAxMy4zODY2IDEzLjcgMTMgMTMuN0g5LjAwMDAxQzguNjEzNDEgMTMuNyA4LjMwMDAxIDEzLjM4NjYgOC4zMDAwMSAxM1Y5LjAwMDAzWk05LjIwMDAxIDkuMjAwMDNWMTIuOEgxMi44VjkuMjAwMDNIOS4yMDAwMVpNMTMuNDQzMiAyLjE5MzExQzEzLjYxODkgMi4wMTczNyAxMy42MTg5IDEuNzMyNDUgMTMuNDQzMiAxLjU1NjcxQzEzLjI2NzUgMS4zODA5OCAxMi45ODI2IDEuMzgwOTggMTIuODA2OCAxLjU1NjcxTDExIDMuMzYzNTNMOS4xOTMyMSAxLjU1Njc0QzkuMDE3NDggMS4zODEgOC43MzI1NSAxLjM4MSA4LjU1NjgyIDEuNTU2NzRDOC4zODEwOCAxLjczMjQ3IDguMzgxMDggMi4wMTc0IDguNTU2ODIgMi4xOTMxM0wxMC4zNjM2IDMuOTk5OTJMOC41NTY4MiA1LjgwNjcxQzguMzgxMDggNS45ODI0NSA4LjM4MTA4IDYuMjY3MzcgOC41NTY4MiA2LjQ0MzExQzguNzMyNTUgNi42MTg4NSA5LjAxNzQ4IDYuNjE4ODUgOS4xOTMyMSA2LjQ0MzExTDExIDQuNjM2MzJMMTIuODA2OCA2LjQ0MzE0QzEyLjk4MjYgNi42MTg4NyAxMy4yNjc1IDYuNjE4ODcgMTMuNDQzMiA2LjQ0MzE0QzEzLjYxODkgNi4yNjc0IDEzLjYxODkgNS45ODI0NyAxMy40NDMyIDUuODA2NzRMMTEuNjM2NCAzLjk5OTkyTDEzLjQ0MzIgMi4xOTMxMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGtuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjUgM0M0LjY3MTU3IDMgNCAzLjY3MTU3IDQgNC41QzQgNS4zMjg0MyA0LjY3MTU3IDYgNS41IDZDNi4zMjg0MyA2IDcgNS4zMjg0MyA3IDQuNUM3IDMuNjcxNTcgNi4zMjg0MyAzIDUuNSAzWk0zIDVDMy4wMTY3MSA1IDMuMDMzMjMgNC45OTkxOCAzLjA0OTUyIDQuOTk3NThDMy4yODAyMiA2LjEzOTkgNC4yODk2NyA3IDUuNSA3QzYuNzEwMzMgNyA3LjcxOTc4IDYuMTM5OSA3Ljk1MDQ4IDQuOTk3NThDNy45NjY3NyA0Ljk5OTE4IDcuOTgzMjkgNSA4IDVIMTMuNUMxMy43NzYxIDUgMTQgNC43NzYxNCAxNCA0LjVDMTQgNC4yMjM4NiAxMy43NzYxIDQgMTMuNSA0SDhDNy45ODMyOSA0IDcuOTY2NzcgNC4wMDA4MiA3Ljk1MDQ4IDQuMDAyNDJDNy43MTk3OCAyLjg2MDA5IDYuNzEwMzMgMiA1LjUgMkM0LjI4OTY3IDIgMy4yODAyMiAyLjg2MDA5IDMuMDQ5NTIgNC4wMDI0MkMzLjAzMzIzIDQuMDAwODIgMy4wMTY3MSA0IDMgNEgxLjVDMS4yMjM4NiA0IDEgNC4yMjM4NiAxIDQuNUMxIDQuNzc2MTQgMS4yMjM4NiA1IDEuNSA1SDNaTTExLjk1MDUgMTAuOTk3NkMxMS43MTk4IDEyLjEzOTkgMTAuNzEwMyAxMyA5LjUgMTNDOC4yODk2NyAxMyA3LjI4MDIyIDEyLjEzOTkgNy4wNDk1MiAxMC45OTc2QzcuMDMzMjMgMTAuOTk5MiA3LjAxNjcxIDExIDcgMTFIMS41QzEuMjIzODYgMTEgMSAxMC43NzYxIDEgMTAuNUMxIDEwLjIyMzkgMS4yMjM4NiAxMCAxLjUgMTBIN0M3LjAxNjcxIDEwIDcuMDMzMjMgMTAuMDAwOCA3LjA0OTUyIDEwLjAwMjRDNy4yODAyMiA4Ljg2MDEgOC4yODk2NyA4IDkuNSA4QzEwLjcxMDMgOCAxMS43MTk4IDguODYwMSAxMS45NTA1IDEwLjAwMjRDMTEuOTY2OCAxMC4wMDA4IDExLjk4MzMgMTAgMTIgMTBIMTMuNUMxMy43NzYxIDEwIDE0IDEwLjIyMzkgMTQgMTAuNUMxNCAxMC43NzYxIDEzLjc3NjEgMTEgMTMuNSAxMUgxMkMxMS45ODMzIDExIDExLjk2NjggMTAuOTk5MiAxMS45NTA1IDEwLjk5NzZaTTggMTAuNUM4IDkuNjcxNTcgOC42NzE1NyA5IDkuNSA5QzEwLjMyODQgOSAxMSA5LjY3MTU3IDExIDEwLjVDMTEgMTEuMzI4NCAxMC4zMjg0IDEyIDkuNSAxMkM4LjY3MTU3IDEyIDggMTEuMzI4NCA4IDEwLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxWbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNSAxLjVDNSAxLjIyMzg2IDQuNzc2MTQgMSA0LjUgMUM0LjIyMzg2IDEgNCAxLjIyMzg2IDQgMS41TDQgN0M0IDcuMDE2NzEgNC4wMDA4MiA3LjAzMzIzIDQuMDAyNDIgNy4wNDk1MkMyLjg2MDA5IDcuMjgwMjIgMiA4LjI4OTY3IDIgOS41QzIgMTAuNzEwMyAyLjg2MDA5IDExLjcxOTggNC4wMDI0MiAxMS45NTA1QzQuMDAwODIgMTEuOTY2OCA0IDExLjk4MzMgNCAxMlYxMy41QzQgMTMuNzc2MSA0LjIyMzg2IDE0IDQuNSAxNEM0Ljc3NjE0IDE0IDUgMTMuNzc2MSA1IDEzLjVWMTJDNSAxMS45ODMzIDQuOTk5MTggMTEuOTY2OCA0Ljk5NzU4IDExLjk1MDVDNi4xMzk5IDExLjcxOTggNyAxMC43MTAzIDcgOS41QzcgOC4yODk2NyA2LjEzOTkgNy4yODAyMiA0Ljk5NzU4IDcuMDQ5NTJDNC45OTkxOCA3LjAzMzIzIDUgNy4wMTY3MSA1IDdMNSAxLjVaTTExIDEuNUMxMSAxLjIyMzg2IDEwLjc3NjEgMSAxMC41IDFDMTAuMjIzOSAxIDEwIDEuMjIzODYgMTAgMS41VjNDMTAgMy4wMTY3MSAxMC4wMDA4IDMuMDMzMjMgMTAuMDAyNCAzLjA0OTUyQzguODYwMSAzLjI4MDIyIDggNC4yODk2NyA4IDUuNUM4IDYuNzEwMzMgOC44NjAxIDcuNzE5NzggMTAuMDAyNCA3Ljk1MDQ4QzEwLjAwMDggNy45NjY3NyAxMCA3Ljk4MzI5IDEwIDhWMTMuNUMxMCAxMy43NzYxIDEwLjIyMzkgMTQgMTAuNSAxNEMxMC43NzYxIDE0IDExIDEzLjc3NjEgMTEgMTMuNVY4QzExIDcuOTgzMjkgMTAuOTk5MiA3Ljk2Njc3IDEwLjk5NzYgNy45NTA0OEMxMi4xMzk5IDcuNzE5NzggMTMgNi43MTAzMyAxMyA1LjVDMTMgNC4yODk2NyAxMi4xMzk5IDMuMjgwMjIgMTAuOTk3NiAzLjA0OTUyQzEwLjk5OTIgMy4wMzMyMyAxMSAzLjAxNjcxIDExIDNWMS41Wk00LjUgOEMzLjY3MTU3IDggMyA4LjY3MTU3IDMgOS41QzMgMTAuMzI4NCAzLjY3MTU3IDExIDQuNSAxMUM1LjMyODQzIDExIDYgMTAuMzI4NCA2IDkuNUM2IDguNjcxNTcgNS4zMjg0MyA4IDQuNSA4Wk05IDUuNUM5IDQuNjcxNTcgOS42NzE1NyA0IDEwLjUgNEMxMS4zMjg0IDQgMTIgNC42NzE1NyAxMiA1LjVDMTIgNi4zMjg0MyAxMS4zMjg0IDcgMTAuNSA3QzkuNjcxNTcgNyA5IDYuMzI4NDMgOSA1LjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxSbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy4yNTkyNSAzLjE2NjY3TDQuMzcwMzYgNS4zMzMzM1YxTDcuMjU5MjUgMy4xNjY2N1pNMSA4LjIyMjIyTDMuODg4ODkgNi4wNTU1NUwxIDMuODg4ODlWOC4yMjIyMlpNMSAxNEwzLjg4ODg5IDExLjgzMzNMMSA5LjY2NjY2VjE0Wk03Ljc0MDcyIDguMjIyMjJMMTAuNjI5NiA2LjA1NTU1TDcuNzQwNzIgMy44ODg4OVY4LjIyMjIyWk0xNCAzLjE2NjY3TDExLjExMTEgNS4zMzMzM1YxTDE0IDMuMTY2NjdaTTExLjExMTEgMTEuMTExMUwxNCA4Ljk0NDQ0TDExLjExMTEgNi43Nzc3N1YxMS4xMTExWk0zLjg4ODg5IDExLjExMTFMMSA4Ljk0NDQ0TDMuODg4ODkgNi43Nzc3N1YxMS4xMTExWk00LjM3MDM2IDYuMDU1NTVMNy4yNTkyNSA4LjIyMjIyVjMuODg4ODlMNC4zNzAzNiA2LjA1NTU1Wk0zLjg4ODg5IDUuMzMzMzNMMSAzLjE2NjY3TDMuODg4ODkgMVY1LjMzMzMzWk03Ljc0MDcyIDMuMTY2NjdMMTAuNjI5NiA1LjMzMzMzVjFMNy43NDA3MiAzLjE2NjY3Wk0xNCA4LjIyMjIyTDExLjExMTEgNi4wNTU1NUwxNCAzLjg4ODg5VjguMjIyMjJaTTExLjExMTEgMTEuODMzM0wxNCAxNFY5LjY2NjY2TDExLjExMTEgMTEuODMzM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEluPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjg5OTk4IDAuNDk5OTc2QzIuODk5OTggMC4yNzkwNjIgMi43MjA4OSAwLjA5OTk3NTYgMi40OTk5OCAwLjA5OTk3NTZDMi4yNzkwNiAwLjA5OTk3NTYgMi4wOTk5OCAwLjI3OTA2MiAyLjA5OTk4IDAuNDk5OTc2VjEuMDk5OThIMS40OTk5OEMxLjI3OTA2IDEuMDk5OTggMS4wOTk5OCAxLjI3OTA2IDEuMDk5OTggMS40OTk5OEMxLjA5OTk4IDEuNzIwODkgMS4yNzkwNiAxLjg5OTk4IDEuNDk5OTggMS44OTk5OEgyLjA5OTk4VjIuNDk5OThDMi4wOTk5OCAyLjcyMDg5IDIuMjc5MDYgMi44OTk5OCAyLjQ5OTk4IDIuODk5OThDMi43MjA4OSAyLjg5OTk4IDIuODk5OTggMi43MjA4OSAyLjg5OTk4IDIuNDk5OThWMS44OTk5OEgzLjQ5OTk4QzMuNzIwODkgMS44OTk5OCAzLjg5OTk4IDEuNzIwODkgMy44OTk5OCAxLjQ5OTk4QzMuODk5OTggMS4yNzkwNiAzLjcyMDg5IDEuMDk5OTggMy40OTk5OCAxLjA5OTk4SDIuODk5OThWMC40OTk5NzZaTTUuODk5OTggMy40OTk5OEM1Ljg5OTk4IDMuMjc5MDYgNS43MjA4OSAzLjA5OTk4IDUuNDk5OTggMy4wOTk5OEM1LjI3OTA2IDMuMDk5OTggNS4wOTk5OCAzLjI3OTA2IDUuMDk5OTggMy40OTk5OFY0LjA5OTk4SDQuNDk5OThDNC4yNzkwNiA0LjA5OTk4IDQuMDk5OTggNC4yNzkwNiA0LjA5OTk4IDQuNDk5OThDNC4wOTk5OCA0LjcyMDg5IDQuMjc5MDYgNC44OTk5OCA0LjQ5OTk4IDQuODk5OThINS4wOTk5OFY1LjQ5OTk4QzUuMDk5OTggNS43MjA4OSA1LjI3OTA2IDUuODk5OTggNS40OTk5OCA1Ljg5OTk4QzUuNzIwODkgNS44OTk5OCA1Ljg5OTk4IDUuNzIwODkgNS44OTk5OCA1LjQ5OTk4VjQuODk5OThINi40OTk5OEM2LjcyMDg5IDQuODk5OTggNi44OTk5OCA0LjcyMDg5IDYuODk5OTggNC40OTk5OEM2Ljg5OTk4IDQuMjc5MDYgNi43MjA4OSA0LjA5OTk4IDYuNDk5OTggNC4wOTk5OEg1Ljg5OTk4VjMuNDk5OThaTTEuODk5OTggNi40OTk5OEMxLjg5OTk4IDYuMjc5MDYgMS43MjA4OSA2LjA5OTk4IDEuNDk5OTggNi4wOTk5OEMxLjI3OTA2IDYuMDk5OTggMS4wOTk5OCA2LjI3OTA2IDEuMDk5OTggNi40OTk5OFY3LjA5OTk4SDAuNDk5OTc2QzAuMjc5MDYyIDcuMDk5OTggMC4wOTk5NzU2IDcuMjc5MDYgMC4wOTk5NzU2IDcuNDk5OThDMC4wOTk5NzU2IDcuNzIwODkgMC4yNzkwNjIgNy44OTk5OCAwLjQ5OTk3NiA3Ljg5OTk4SDEuMDk5OThWOC40OTk5OEMxLjA5OTk4IDguNzIwODkgMS4yNzkwNiA4Ljg5OTk3IDEuNDk5OTggOC44OTk5N0MxLjcyMDg5IDguODk5OTcgMS44OTk5OCA4LjcyMDg5IDEuODk5OTggOC40OTk5OFY3Ljg5OTk4SDIuNDk5OThDMi43MjA4OSA3Ljg5OTk4IDIuODk5OTggNy43MjA4OSAyLjg5OTk4IDcuNDk5OThDMi44OTk5OCA3LjI3OTA2IDIuNzIwODkgNy4wOTk5OCAyLjQ5OTk4IDcuMDk5OThIMS44OTk5OFY2LjQ5OTk4Wk04LjU0NDA2IDAuOTgxODRMOC4yNDYxOCAwLjk0MTU4NkM4LjAzMjc1IDAuOTE3Njc2IDcuOTA2OTIgMS4xNjU1IDguMDI5MzYgMS4zNDE5NEM4LjE3MDEzIDEuNTQ0NzkgOC4yOTk4MSAxLjc1NTkyIDguNDE3NTQgMS45NzQ0NUM4LjkxODc4IDIuOTA0ODUgOS4yMDMyMiAzLjk2OTMyIDkuMjAzMjIgNS4xMDAyMkM5LjIwMzIyIDguMzcyMDEgNi44MjI0NyAxMS4wODc4IDMuNjk4ODcgMTEuNjA5N0MzLjQ1NzM2IDExLjY1IDMuMjA5ODggMTEuNjc3MiAyLjk2MDA4IDExLjY5MDZDMi43NDU2MyAxMS43MDIgMi42MjcyOSAxMS45NTM1IDIuNzc3MjEgMTIuMTA3MkMyLjg0NTUxIDEyLjE3NzMgMi45MTUzNSAxMi4yNDU4IDIuOTg2NjcgMTIuMzEyOEwzLjA1ODgzIDEyLjM3OTVMMy4zMTg4MyAxMi42MDQ1TDMuNTA2ODQgMTIuNzUzMkwzLjYyNzk2IDEyLjg0MzNMMy44MTQ5MSAxMi45NzQyTDMuOTkwNzkgMTMuMDg5QzQuMTExNzUgMTMuMTY1MSA0LjIzNTM2IDEzLjIzNzUgNC4zNjE1NyAxMy4zMDU5TDQuNjI0OTYgMTMuNDQxMkw0Ljg4NTUzIDEzLjU2MDdMNS4xODgzNyAxMy42ODI4TDUuNDMxNjkgMTMuNzY4NkM1LjU2NTY0IDEzLjgxMjggNS43MDE0OSAxMy44NTI5IDUuODM4NTcgMTMuODg4NUM1Ljk0MjYyIDEzLjkxNTUgNi4wNDc2NyAxMy45NDAxIDYuMTU0MDUgMTMuOTYyMkM2LjI3OTkzIDEzLjk4ODMgNi40MDcxMyAxNC4wMTA5IDYuNTM1NDQgMTQuMDI5OEw2Ljg1MjQxIDE0LjA2ODVMNy4xMTkzNCAxNC4wODkyQzcuMjQ2MzcgMTQuMDk2NSA3LjM3NDM2IDE0LjEwMDIgNy41MDMyMiAxNC4xMDAyQzExLjE0ODMgMTQuMTAwMiAxNC4xMDMyIDExLjE0NTMgMTQuMTAzMiA3LjUwMDIzQzE0LjEwMzIgNy4yNTA0NCAxNC4wODkzIDcuMDAzODkgMTQuMDYyMyA2Ljc2MTMxTDE0LjAyNTUgNi40ODQwN0MxMy45OTEgNi4yNjA4MyAxMy45NDUzIDYuMDQxMjkgMTMuODg5MSA1LjgyNjQyQzEzLjgyMTMgNS41NjcwOSAxMy43MzgyIDUuMzEzOTggMTMuNjQwOSA1LjA2ODgxTDEzLjUyNzkgNC44MDEzMkwxMy40NTA3IDQuNjM1NDJMMTMuMzc2NiA0LjQ4NjY2QzEzLjIxNzggNC4xNzc3MyAxMy4wMzUzIDMuODgyOTUgMTIuODMxMiAzLjYwNDIzTDEyLjY3ODIgMy40MDM1MkwxMi40NzkzIDMuMTY0MzJMMTIuMzE1NyAyLjk4MzYxTDEyLjE5NjEgMi44NTk1MUwxMi4wMzU1IDIuNzAyNDZMMTEuODEzNCAyLjUwMTg0TDExLjQ5MjUgMi4yNDE5MUwxMS4yNDgzIDIuMDY0OThMMTAuOTU2MiAxLjg3NDQ2TDEwLjYzNDYgMS42ODg5NEwxMC4zMDczIDEuNTIzNzhMMTAuMTkzOCAxLjQ3MTc2TDkuOTU0ODggMS4zNzA2TDkuNjc3OTEgMS4yNjY5TDkuNDI1NjYgMS4xODQ2TDkuMTAwNzUgMS4wOTQ4OUw4LjgzNTk5IDEuMDM0ODZMOC41NDQwNiAwLjk4MTg0Wk0xMC40MDMyIDUuMzAwMjNDMTAuNDAzMiA0LjI3NTg4IDEwLjIwMDIgMy4yOTgyOSA5LjgzMjQ0IDIuNDA2MDRDMTEuNzYyMyAzLjI4OTk1IDEzLjEwMzIgNS4yMzg2MiAxMy4xMDMyIDcuNTAwMjNDMTMuMTAzMiAxMC41OTMgMTAuNTk2IDEzLjEwMDIgNy41MDMyMiAxMy4xMDAyQzYuNjM2NDYgMTMuMTAwMiA1LjgxNTk3IDEyLjkwMzYgNS4wODM1NSAxMi41NTIyQzYuNTQxOSAxMi4wOTQxIDcuODEwODEgMTEuMjA4MiA4Ljc0MzIyIDEwLjA0MTZDOC44Nzk2MyAxMC4yMjg0IDkuMTAwMjggMTAuMzQ5NyA5LjM0OTI4IDEwLjM0OTdDOS43NjM0OSAxMC4zNDk3IDEwLjA5OTMgMTAuMDEzOSAxMC4wOTkzIDkuNTk5NzFDMTAuMDk5MyA5LjI0MjU2IDkuODQ5NjUgOC45NDM3MyA5LjUxNTM1IDguODY4MTZDOS41Nzc0MSA4Ljc1MTY1IDkuNjM2NTMgOC42MzMzNCA5LjY5MjYgOC41MTMzMkM5Ljg4MzU4IDguNjMxNjMgMTAuMTA4OCA4LjY5OTkzIDEwLjM1IDguNjk5OTNDMTEuMDQwMyA4LjY5OTkzIDExLjYgOC4xNDAyOCAxMS42IDcuNDQ5OTNDMTEuNiA2Ljc1OTc2IDExLjA0MDYgNi4yMDAyNCAxMC4zNTA1IDYuMTk5OTNDMTAuMzg1MyA1LjkwNDg3IDEwLjQwMzIgNS42MDQ2NCAxMC40MDMyIDUuMzAwMjNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxabj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy44MTgxOSAwLjkzMTc5QzcuNjQyNDUgMC43NTYwNTQgNy4zNTc1MyAwLjc1NjA1NCA3LjE4MTc5IDAuOTMxNzlMNS40MzE3OSAyLjY4MTc5QzUuMjU2MDUgMi44NTc1MyA1LjI1NjA1IDMuMTQyNDUgNS40MzE3OSAzLjMxODE5QzUuNjA3NTMgMy40OTM5MiA1Ljg5MjQ1IDMuNDkzOTIgNi4wNjgxOSAzLjMxODE5TDYuOTk5OTkgMi4zODYzOFY1LjQ5OTk5QzYuOTk5OTkgNS43NzYxMyA3LjIyMzg1IDUuOTk5OTkgNy40OTk5OSA1Ljk5OTk5QzcuNzc2MTMgNS45OTk5OSA3Ljk5OTk5IDUuNzc2MTMgNy45OTk5OSA1LjQ5OTk5VjIuMzg2MzhMOC45MzE3OSAzLjMxODE5QzkuMTA3NTMgMy40OTM5MiA5LjM5MjQ1IDMuNDkzOTIgOS41NjgxOSAzLjMxODE5QzkuNzQzOTIgMy4xNDI0NSA5Ljc0MzkyIDIuODU3NTMgOS41NjgxOSAyLjY4MTc5TDcuODE4MTkgMC45MzE3OVpNNy45OTk5OSA5LjQ5OTk5QzcuOTk5OTkgOS4yMjM4NSA3Ljc3NjEzIDguOTk5OTkgNy40OTk5OSA4Ljk5OTk5QzcuMjIzODUgOC45OTk5OSA2Ljk5OTk5IDkuMjIzODUgNi45OTk5OSA5LjQ5OTk5VjEyLjYxMzZMNi4wNjgxOSAxMS42ODE4QzUuODkyNDUgMTEuNTA2MSA1LjYwNzUzIDExLjUwNjEgNS40MzE3OSAxMS42ODE4QzUuMjU2MDUgMTEuODU3NSA1LjI1NjA1IDEyLjE0MjQgNS40MzE3OSAxMi4zMTgyTDcuMTgxNzkgMTQuMDY4MkM3LjM1NzUzIDE0LjI0MzkgNy42NDI0NSAxNC4yNDM5IDcuODE4MTkgMTQuMDY4Mkw5LjU2ODE5IDEyLjMxODJDOS43NDM5MiAxMi4xNDI0IDkuNzQzOTIgMTEuODU3NSA5LjU2ODE5IDExLjY4MThDOS4zOTI0NSAxMS41MDYxIDkuMTA3NTMgMTEuNTA2MSA4LjkzMTc5IDExLjY4MThMNy45OTk5OSAxMi42MTM2VjkuNDk5OTlaTTguOTk5OTkgNy40OTk5OUM4Ljk5OTk5IDcuMjIzODUgOS4yMjM4NSA2Ljk5OTk5IDkuNDk5OTkgNi45OTk5OUgxMi42MTM2TDExLjY4MTggNi4wNjgxOUMxMS41MDYxIDUuODkyNDUgMTEuNTA2MSA1LjYwNzUzIDExLjY4MTggNS40MzE3OUMxMS44NTc1IDUuMjU2MDUgMTIuMTQyNCA1LjI1NjA1IDEyLjMxODIgNS40MzE3OUwxNC4wNjgyIDcuMTgxNzlDMTQuMjQzOSA3LjM1NzUzIDE0LjI0MzkgNy42NDI0NSAxNC4wNjgyIDcuODE4MTlMMTIuMzE4MiA5LjU2ODE5QzEyLjE0MjQgOS43NDM5MiAxMS44NTc1IDkuNzQzOTIgMTEuNjgxOCA5LjU2ODE5QzExLjUwNjEgOS4zOTI0NSAxMS41MDYxIDkuMTA3NTMgMTEuNjgxOCA4LjkzMTc5TDEyLjYxMzYgNy45OTk5OUg5LjQ5OTk5QzkuMjIzODUgNy45OTk5OSA4Ljk5OTk5IDcuNzc2MTMgOC45OTk5OSA3LjQ5OTk5Wk0zLjMxODE5IDYuMDY4MTlMMi4zODYzOCA2Ljk5OTk5SDUuNDk5OTlDNS43NzYxMyA2Ljk5OTk5IDUuOTk5OTkgNy4yMjM4NSA1Ljk5OTk5IDcuNDk5OTlDNS45OTk5OSA3Ljc3NjEzIDUuNzc2MTMgNy45OTk5OSA1LjQ5OTk5IDcuOTk5OTlIMi4zODYzOEwzLjMxODE5IDguOTMxNzlDMy40OTM5MiA5LjEwNzUzIDMuNDkzOTIgOS4zOTI0NSAzLjMxODE5IDkuNTY4MTlDMy4xNDI0NSA5Ljc0MzkyIDIuODU3NTMgOS43NDM5MiAyLjY4MTc5IDkuNTY4MTlMMC45MzE3OSA3LjgxODE5QzAuNzU2MDU0IDcuNjQyNDUgMC43NTYwNTQgNy4zNTc1MyAwLjkzMTc5IDcuMTgxNzlMMi42ODE3OSA1LjQzMTc5QzIuODU3NTMgNS4yNTYwNSAzLjE0MjQ1IDUuMjU2MDUgMy4zMTgxOSA1LjQzMTc5QzMuNDkzOTIgNS42MDc1MyAzLjQ5MzkyIDUuODkyNDUgMy4zMTgxOSA2LjA2ODE5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuMjU3ODEgMy4xMTY4NEMzLjY3NzcxIDMuNDU3OTYgMy44MzUyMyAzLjQzMTkzIDQuNjIzNjkgMy4zNzkzM0wxMi4wNTcxIDIuOTMyOTlDMTIuMjE0NyAyLjkzMjk5IDEyLjA4MzYgMi43NzU3MSAxMi4wMzExIDIuNzQ5NTdMMTAuNzk2NSAxLjg1NzExQzEwLjU2IDEuNjczNDcgMTAuMjQ0OCAxLjQ2MzE1IDkuNjQwODMgMS41MTU3NkwyLjQ0MzA4IDIuMDQwNzRDMi4xODA1OSAyLjA2Njc3IDIuMTI4MTUgMi4xOTgwMSAyLjIzMjcgMi4zMDMyMkwzLjI1NzgxIDMuMTE2ODRaTTMuNzA0MSA0Ljg0OTE3VjEyLjY3MDRDMy43MDQxIDEzLjA5MDcgMy45MTQxNSAxMy4yNDggNC4zODY5MyAxMy4yMjJMMTIuNTU2MiAxMi43NDkzQzEzLjAyOTIgMTIuNzIzMyAxMy4wODE5IDEyLjQzNDEgMTMuMDgxOSAxMi4wOTI3VjQuMzIzOTdDMTMuMDgxOSAzLjk4MzA2IDEyLjk1MDggMy43OTkyMSAxMi42NjEyIDMuODI1NDVMNC4xMjQyMiA0LjMyMzk3QzMuODA5MTggNC4zNTA0NCAzLjcwNDEgNC41MDgwMyAzLjcwNDEgNC44NDkxN1pNMTEuNzY4OCA1LjI2ODcyQzExLjgyMTIgNS41MDUxOCAxMS43Njg4IDUuNzQxNDIgMTEuNTMxOSA1Ljc2Nzk5TDExLjEzODMgNS44NDY0MVYxMS42MjA1QzEwLjc5NjUgMTEuODA0MiAxMC40ODE0IDExLjkwOTIgMTAuMjE4OCAxMS45MDkyQzkuNzk4MzUgMTEuOTA5MiA5LjY5MzA1IDExLjc3NzkgOS4zNzgxMiAxMS4zODQ0TDYuODAzNDUgNy4zNDI0OVYxMS4yNTMyTDcuNjE4MTYgMTEuNDM3QzcuNjE4MTYgMTEuNDM3IDcuNjE4MTYgMTEuOTA5MiA2Ljk2MDg2IDExLjkwOTJMNS4xNDg3OSAxMi4wMTQzQzUuMDk2MTUgMTEuOTA5MiA1LjE0ODc5IDExLjY0NyA1LjMzMjU5IDExLjU5NDRMNS44MDU0NiAxMS40NjM0VjYuMjkyNzZMNS4xNDg5IDYuMjQwMTVDNS4wOTYyNSA2LjAwMzY5IDUuMjI3MzkgNS42NjI3OCA1LjU5NTQgNS42MzYzMUw3LjUzOTM1IDUuNTA1MjhMMTAuMjE4OCA5LjU5OThWNS45Nzc2NUw5LjUzNTY0IDUuODk5MjRDOS40ODMyIDUuNjEwMTggOS42OTMwNSA1LjQwMDI4IDkuOTU1NzYgNS4zNzQyNUwxMS43Njg4IDUuMjY4NzJaTTEuODM4NzQgMS4zMzIxMkw5LjMyNTU3IDAuNzgwNzg3QzEwLjI0NSAwLjcwMTkzMiAxMC40ODE1IDAuNzU0NzUzIDExLjA1OTQgMS4xNzQ1MkwxMy40NDkyIDIuODU0MjRDMTMuODQzNiAzLjE0MzA5IDEzLjk3NSAzLjIyMTczIDEzLjk3NSAzLjUzNjYxVjEyLjc0OTNDMTMuOTc1IDEzLjMyNjYgMTMuNzY0NyAxMy42NjgxIDEzLjAyOTMgMTMuNzIwM0w0LjMzNDkyIDE0LjI0NTRDMy43ODI5MSAxNC4yNzE3IDMuNTIwMTkgMTQuMTkzIDMuMjMxMTEgMTMuODI1M0wxLjQ3MTE2IDExLjU0MTlDMS4xNTU4IDExLjEyMTYgMS4wMjQ2NiAxMC44MDcxIDEuMDI0NjYgMTAuNDM5MlYyLjI1MDQxQzEuMDI0NjYgMS43NzgyNSAxLjIzNTA0IDEuMzg0NDEgMS44Mzg3NCAxLjMzMjEyWlwiLGZpbGw6bn0pKX0sQW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAxLjVDNC41IDQuMjUgMyA2LjUgMyA5QzMgMTEuNDg1MyA1LjAxNDcyIDEzLjUgNy41IDEzLjVDOS45ODUyOCAxMy41IDEyIDExLjQ4NTMgMTIgOUMxMiA2LjUgMTAuNSA0LjI1IDcuNSAxLjVaTTExIDlDMTEgNy4xMTIwMyA5Ljk3MzE1IDUuMjcxOTUgNy41IDIuODczNTdDNS4wMjY4NiA1LjI3MTk1IDQgNy4xMTIwMyA0IDlDNCAxMC45MzMgNS41NjcgMTIuNSA3LjUgMTIuNUM5LjQzMyAxMi41IDExIDEwLjkzMyAxMSA5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMuNDk5ODUgMS4xMDAwMUMzLjI3ODk0IDEuMTAwMDEgMy4wOTk4NSAxLjI3OTA5IDMuMDk5ODUgMS41MDAwMUMzLjA5OTg1IDEuNzIwOTIgMy4yNzg5NCAxLjkwMDAxIDMuNDk5ODUgMS45MDAwMUgxMS40OTk5QzExLjcyMDggMS45MDAwMSAxMS44OTk5IDEuNzIwOTIgMTEuODk5OSAxLjUwMDAxQzExLjg5OTkgMS4yNzkwOSAxMS43MjA4IDEuMTAwMDEgMTEuNDk5OSAxLjEwMDAxSDMuNDk5ODVaTTQuOTk5OTUgNC4yNTAwMUM0Ljk5OTk1IDMuOTczODcgNC43NzYwOSAzLjc1MDAxIDQuNDk5OTUgMy43NTAwMUM0LjIyMzgxIDMuNzUwMDEgMy45OTk5NSAzLjk3Mzg3IDMuOTk5OTUgNC4yNTAwMVY5LjU1MDAxQzMuOTk5OTUgMTEuNDgzIDUuNTY2OTUgMTMuMDUgNy40OTk5NSAxMy4wNUM5LjQzMjk1IDEzLjA1IDExIDExLjQ4MyAxMSA5LjU1MDAxVjQuMjUwMDFDMTEgMy45NzM4NyAxMC43NzYxIDMuNzUwMDEgMTAuNSAzLjc1MDAxQzEwLjIyMzggMy43NTAwMSA5Ljk5OTk1IDMuOTczODcgOS45OTk5NSA0LjI1MDAxVjkuNTUwMDFDOS45OTk5NSAxMC45MzA3IDguODgwNjYgMTIuMDUgNy40OTk5NSAxMi4wNUM2LjExOTI0IDEyLjA1IDQuOTk5OTUgMTAuOTMwNyA0Ljk5OTk1IDkuNTUwMDFWNC4yNTAwMVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEJuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yLjg1NzE0IDJIMTIuMTQyOUMxMi42MTYyIDIgMTMgMi4zODM3NiAxMyAyLjg1NzE0VjEyLjE0MjlDMTMgMTIuNjE2MiAxMi42MTYyIDEzIDEyLjE0MjkgMTNIMi44NTcxNEMyLjM4Mzc2IDEzIDIgMTIuNjE2MiAyIDEyLjE0MjlWMi44NTcxNEMyIDIuMzgzNzYgMi4zODM3NiAyIDIuODU3MTQgMlpNMSAyLjg1NzE0QzEgMS44MzE0NyAxLjgzMTQ3IDEgMi44NTcxNCAxSDEyLjE0MjlDMTMuMTY4NSAxIDE0IDEuODMxNDcgMTQgMi44NTcxNFYxMi4xNDI5QzE0IDEzLjE2ODUgMTMuMTY4NSAxNCAxMi4xNDI5IDE0SDIuODU3MTRDMS44MzE0NyAxNCAxIDEzLjE2ODUgMSAxMi4xNDI5VjIuODU3MTRaTTcuNDk5ODggNS4wMDAxMkM3Ljc3NjAyIDUuMDAwMTIgNy45OTk4OCA0Ljc3NjI2IDcuOTk5ODggNC41MDAxMkM3Ljk5OTg4IDQuMjIzOTggNy43NzYwMiA0LjAwMDEyIDcuNDk5ODggNC4wMDAxMkM3LjIyMzc0IDQuMDAwMTIgNi45OTk4OCA0LjIyMzk4IDYuOTk5ODggNC41MDAxMkM2Ljk5OTg4IDQuNzc2MjYgNy4yMjM3NCA1LjAwMDEyIDcuNDk5ODggNS4wMDAxMlpNNC40OTk4OCAxMS4wMDAxQzQuNzc2MDIgMTEuMDAwMSA0Ljk5OTg4IDEwLjc3NjMgNC45OTk4OCAxMC41MDAxQzQuOTk5ODggMTAuMjI0IDQuNzc2MDIgMTAuMDAwMSA0LjQ5OTg4IDEwLjAwMDFDNC4yMjM3NCAxMC4wMDAxIDMuOTk5ODggMTAuMjI0IDMuOTk5ODggMTAuNTAwMUMzLjk5OTg4IDEwLjc3NjMgNC4yMjM3NCAxMS4wMDAxIDQuNDk5ODggMTEuMDAwMVpNNC45OTk4OCA3LjUwMDEyQzQuOTk5ODggNy43NzYyNiA0Ljc3NjAyIDguMDAwMTIgNC40OTk4OCA4LjAwMDEyQzQuMjIzNzQgOC4wMDAxMiAzLjk5OTg4IDcuNzc2MjYgMy45OTk4OCA3LjUwMDEyQzMuOTk5ODggNy4yMjM5OCA0LjIyMzc0IDcuMDAwMTIgNC40OTk4OCA3LjAwMDEyQzQuNzc2MDIgNy4wMDAxMiA0Ljk5OTg4IDcuMjIzOTggNC45OTk4OCA3LjUwMDEyWk00LjQ5OTg4IDUuMDAwMTJDNC43NzYwMiA1LjAwMDEyIDQuOTk5ODggNC43NzYyNiA0Ljk5OTg4IDQuNTAwMTJDNC45OTk4OCA0LjIyMzk4IDQuNzc2MDIgNC4wMDAxMiA0LjQ5OTg4IDQuMDAwMTJDNC4yMjM3NCA0LjAwMDEyIDMuOTk5ODggNC4yMjM5OCAzLjk5OTg4IDQuNTAwMTJDMy45OTk4OCA0Ljc3NjI2IDQuMjIzNzQgNS4wMDAxMiA0LjQ5OTg4IDUuMDAwMTJaTTEwLjk5OTkgMTAuNTAwMUMxMC45OTk5IDEwLjc3NjMgMTAuNzc2IDExLjAwMDEgMTAuNDk5OSAxMS4wMDAxQzEwLjIyMzcgMTEuMDAwMSA5Ljk5OTg4IDEwLjc3NjMgOS45OTk4OCAxMC41MDAxQzkuOTk5ODggMTAuMjI0IDEwLjIyMzcgMTAuMDAwMSAxMC40OTk5IDEwLjAwMDFDMTAuNzc2IDEwLjAwMDEgMTAuOTk5OSAxMC4yMjQgMTAuOTk5OSAxMC41MDAxWk0xMC40OTk5IDguMDAwMTJDMTAuNzc2IDguMDAwMTIgMTAuOTk5OSA3Ljc3NjI2IDEwLjk5OTkgNy41MDAxMkMxMC45OTk5IDcuMjIzOTggMTAuNzc2IDcuMDAwMTIgMTAuNDk5OSA3LjAwMDEyQzEwLjIyMzcgNy4wMDAxMiA5Ljk5OTg4IDcuMjIzOTggOS45OTk4OCA3LjUwMDEyQzkuOTk5ODggNy43NzYyNiAxMC4yMjM3IDguMDAwMTIgMTAuNDk5OSA4LjAwMDEyWk0xMC45OTk5IDQuNTAwMTJDMTAuOTk5OSA0Ljc3NjI2IDEwLjc3NiA1LjAwMDEyIDEwLjQ5OTkgNS4wMDAxMkMxMC4yMjM3IDUuMDAwMTIgOS45OTk4OCA0Ljc3NjI2IDkuOTk5ODggNC41MDAxMkM5Ljk5OTg4IDQuMjIzOTggMTAuMjIzNyA0LjAwMDEyIDEwLjQ5OTkgNC4wMDAxMkMxMC43NzYgNC4wMDAxMiAxMC45OTk5IDQuMjIzOTggMTAuOTk5OSA0LjUwMDEyWk03LjQ5OTg4IDExLjAwMDFDNy43NzYwMiAxMS4wMDAxIDcuOTk5ODggMTAuNzc2MyA3Ljk5OTg4IDEwLjUwMDFDNy45OTk4OCAxMC4yMjQgNy43NzYwMiAxMC4wMDAxIDcuNDk5ODggMTAuMDAwMUM3LjIyMzc0IDEwLjAwMDEgNi45OTk4OCAxMC4yMjQgNi45OTk4OCAxMC41MDAxQzYuOTk5ODggMTAuNzc2MyA3LjIyMzc0IDExLjAwMDEgNy40OTk4OCAxMS4wMDAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sJG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuMjAzMDcgMS4wNDMxMkMxLjAwNDgxIDAuOTU0OTk4IDAuNzcyMzQgMS4wMDQ4IDAuNjI3NTc3IDEuMTY2NDFDMC40ODI4MTMgMS4zMjgwMiAwLjQ1ODc5NCAxLjU2NDU1IDAuNTY4MTE2IDEuNzUxOTZMMy45MjExNSA3LjUwMDAyTDAuNTY4MTE2IDEzLjI0ODFDMC40NTg3OTQgMTMuNDM1NSAwLjQ4MjgxMyAxMy42NzIgMC42Mjc1NzcgMTMuODMzNkMwLjc3MjM0IDEzLjk5NTIgMS4wMDQ4MSAxNC4wNDUgMS4yMDMwNyAxMy45NTY5TDE0LjcwMzEgNy45NTY5MkMxNC44ODM2IDcuODc2NjcgMTUgNy42OTc2MSAxNSA3LjUwMDAyQzE1IDcuMzAyNDIgMTQuODgzNiA3LjEyMzM2IDE0LjcwMzEgNy4wNDMxMUwxLjIwMzA3IDEuMDQzMTJaTTQuODQ1NTIgNy4xMDAwMkwyLjIxMjM0IDIuNTg2TDEzLjI2ODkgNy41MDAwMkwyLjIxMjM0IDEyLjQxNEw0Ljg0NTUyIDcuOTAwMDJIOUM5LjIyMDkxIDcuOTAwMDIgOS40IDcuNzIwOTQgOS40IDcuNTAwMDJDOS40IDcuMjc5MTEgOS4yMjA5MSA3LjEwMDAyIDkgNy4xMDAwMkg0Ljg0NTUyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuMDQ5OTUgMi43NDk5OEM2LjA0OTk1IDIuNDQ2MjMgNS44MDM3MSAyLjE5OTk4IDUuNDk5OTUgMi4xOTk5OEM1LjE5NjE5IDIuMTk5OTggNC45NDk5NSAyLjQ0NjIzIDQuOTQ5OTUgMi43NDk5OFYxMi4yNUM0Ljk0OTk1IDEyLjU1MzcgNS4xOTYxOSAxMi44IDUuNDk5OTUgMTIuOEM1LjgwMzcxIDEyLjggNi4wNDk5NSAxMi41NTM3IDYuMDQ5OTUgMTIuMjVWMi43NDk5OFpNMTAuMDUgMi43NDk5OEMxMC4wNSAyLjQ0NjIzIDkuODAzNzEgMi4xOTk5OCA5LjQ5OTk1IDIuMTk5OThDOS4xOTYxOSAyLjE5OTk4IDguOTQ5OTUgMi40NDYyMyA4Ljk0OTk1IDIuNzQ5OThWMTIuMjVDOC45NDk5NSAxMi41NTM3IDkuMTk2MTkgMTIuOCA5LjQ5OTk1IDEyLjhDOS44MDM3MSAxMi44IDEwLjA1IDEyLjU1MzcgMTAuMDUgMTIuMjVWMi43NDk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS44NTM2IDEuMTQ2NDVDMTEuNjU4MyAwLjk1MTE4NCAxMS4zNDE3IDAuOTUxMTg0IDExLjE0NjUgMS4xNDY0NUwzLjcxNDU1IDguNTc4MzZDMy42MjQ1OSA4LjY2ODMyIDMuNTUyNjMgOC43NzQ2MSAzLjUwMjUxIDguODkxNTVMMi4wNDA0NCAxMi4zMDNDMS45NTk5IDEyLjQ5MSAyLjAwMTg5IDEyLjcwOSAyLjE0NjQ2IDEyLjg1MzZDMi4yOTEwMyAxMi45OTgxIDIuNTA5MDUgMTMuMDQwMSAyLjY5Njk3IDEyLjk1OTZMNi4xMDg0NyAxMS40OTc1QzYuMjI1NCAxMS40NDc0IDYuMzMxNyAxMS4zNzU0IDYuNDIxNjYgMTEuMjg1NUwxMy44NTM2IDMuODUzNTVDMTQuMDQ4OCAzLjY1ODI5IDE0LjA0ODggMy4zNDE3MSAxMy44NTM2IDMuMTQ2NDVMMTEuODUzNiAxLjE0NjQ1Wk00LjQyMTY2IDkuMjg1NDdMMTEuNSAyLjIwNzExTDEyLjc5MjkgMy41TDUuNzE0NTUgMTAuNTc4NEw0LjIxOTI0IDExLjIxOTJMMy43ODA4MSAxMC43ODA4TDQuNDIxNjYgOS4yODU0N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHpuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi4xNDY0IDEuMTQ2NDVDMTIuMzQxNyAwLjk1MTE4NCAxMi42NTgzIDAuOTUxMTg0IDEyLjg1MzUgMS4xNDY0NUwxNC44NTM1IDMuMTQ2NDVDMTUuMDQ4OCAzLjM0MTcxIDE1LjA0ODggMy42NTgyOSAxNC44NTM1IDMuODUzNTVMMTAuOTEwOSA3Ljc5NjE4QzEwLjgzNDkgNy44NzIxOCAxMC43NDcxIDcuOTM1NDMgMTAuNjUxIDcuOTgzNUw2LjcyMzU5IDkuOTQ3MjFDNi41MzEwOSAxMC4wNDM1IDYuMjk4NjEgMTAuMDA1NyA2LjE0NjQzIDkuODUzNTVDNS45OTQyNSA5LjcwMTM3IDUuOTU2NTIgOS40Njg4OSA2LjA1Mjc3IDkuMjc2MzlMOC4wMTY0OCA1LjM0ODk3QzguMDY0NTUgNS4yNTI4MyA4LjEyNzggNS4xNjUwNyA4LjIwMzggNS4wODkwN0wxMi4xNDY0IDEuMTQ2NDVaTTEyLjUgMi4yMDcxMUw4LjkxMDkxIDUuNzk2MThMNy44NzI2NiA3Ljg3MjY3TDguMTI3MzEgOC4xMjczMkwxMC4yMDM4IDcuMDg5MDdMMTMuNzkyOSAzLjVMMTIuNSAyLjIwNzExWk05Ljk5OTk4IDJMOC45OTk5OCAzSDQuOUM0LjQ3MTcxIDMgNC4xODA1NiAzLjAwMDM5IDMuOTU1NTIgMy4wMTg3N0MzLjczNjMxIDMuMDM2NjggMy42MjQyMSAzLjA2OTE1IDMuNTQ2MDEgMy4xMDg5OUMzLjM1Nzg1IDMuMjA0ODcgMy4yMDQ4NyAzLjM1Nzg1IDMuMTA4OTkgMy41NDYwMUMzLjA2OTE1IDMuNjI0MjEgMy4wMzY2OSAzLjczNjMxIDMuMDE4NzggMy45NTU1MkMzLjAwMDM5IDQuMTgwNTYgMyA0LjQ3MTcxIDMgNC45VjExLjFDMyAxMS41MjgzIDMuMDAwMzkgMTEuODE5NCAzLjAxODc4IDEyLjA0NDVDMy4wMzY2OSAxMi4yNjM3IDMuMDY5MTUgMTIuMzc1OCAzLjEwODk5IDEyLjQ1NEMzLjIwNDg3IDEyLjY0MjIgMy4zNTc4NSAxMi43OTUxIDMuNTQ2MDEgMTIuODkxQzMuNjI0MjEgMTIuOTMwOSAzLjczNjMxIDEyLjk2MzMgMy45NTU1MiAxMi45ODEyQzQuMTgwNTYgMTIuOTk5NiA0LjQ3MTcxIDEzIDQuOSAxM0gxMS4xQzExLjUyODMgMTMgMTEuODE5NCAxMi45OTk2IDEyLjA0NDUgMTIuOTgxMkMxMi4yNjM3IDEyLjk2MzMgMTIuMzc1OCAxMi45MzA5IDEyLjQ1NCAxMi44OTFDMTIuNjQyMiAxMi43OTUxIDEyLjc5NTEgMTIuNjQyMiAxMi44OTEgMTIuNDU0QzEyLjkzMDkgMTIuMzc1OCAxMi45NjMzIDEyLjI2MzcgMTIuOTgxMiAxMi4wNDQ1QzEyLjk5OTYgMTEuODE5NCAxMyAxMS41MjgzIDEzIDExLjFWNi45OTk5OEwxNCA1Ljk5OTk4VjExLjFWMTEuMTIwN0MxNCAxMS41MjMxIDE0IDExLjg1NTMgMTMuOTc3OSAxMi4xMjU5QzEzLjk1NDkgMTIuNDA3IDEzLjkwNTcgMTIuNjY1MyAxMy43ODIgMTIuOTA4QzEzLjU5MDMgMTMuMjg0MyAxMy4yODQzIDEzLjU5MDMgMTIuOTA4IDEzLjc4MkMxMi42NjUzIDEzLjkwNTcgMTIuNDA3IDEzLjk1NDkgMTIuMTI1OSAxMy45Nzc5QzExLjg1NTMgMTQgMTEuNTIzMSAxNCAxMS4xMjA3IDE0SDExLjFINC45SDQuODc5MzRDNC40NzY4NiAxNCA0LjE0NDY4IDE0IDMuODc0MDkgMTMuOTc3OUMzLjU5MzA0IDEzLjk1NDkgMy4zMzQ2OSAxMy45MDU3IDMuMDkyMDIgMTMuNzgyQzIuNzE1NyAxMy41OTAzIDIuNDA5NzMgMTMuMjg0MyAyLjIxNzk5IDEyLjkwOEMyLjA5NDM0IDEyLjY2NTMgMi4wNDUwNiAxMi40MDcgMi4wMjIxIDEyLjEyNTlDMS45OTk5OSAxMS44NTUzIDEuOTk5OTkgMTEuNTIzMSAyIDExLjEyMDdWMTEuMTIwNlYxMS4xVjQuOVY0Ljg3OTM1VjQuODc5MzJWNC44NzkzMUMxLjk5OTk5IDQuNDc2ODUgMS45OTk5OSA0LjE0NDY4IDIuMDIyMSAzLjg3NDA5QzIuMDQ1MDYgMy41OTMwNCAyLjA5NDM0IDMuMzM0NjkgMi4yMTc5OSAzLjA5MjAyQzIuNDA5NzMgMi43MTU2OSAyLjcxNTcgMi40MDk3MyAzLjA5MjAyIDIuMjE3OTlDMy4zMzQ2OSAyLjA5NDM0IDMuNTkzMDQgMi4wNDUwNiAzLjg3NDA5IDIuMDIyMUM0LjE0NDY4IDEuOTk5OTkgNC40NzY4NSAxLjk5OTk5IDQuODc5MzIgMkg0Ljg3OTM1SDQuOUg5Ljk5OTk4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sV249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAwLjg3NUM1LjQ5Nzk3IDAuODc1IDMuODc1IDIuNDk3OTcgMy44NzUgNC41QzMuODc1IDYuMTUyODggNC45ODEyNCA3LjU0NzM4IDYuNDkzNzMgNy45ODM1MUM1LjI5OTcgOC4xMjkwMSA0LjI3NTU3IDguNTUxMzQgMy41MDQwNyA5LjMxMTY3QzIuNTIyMTYgMTAuMjc5NCAyLjAyNTAyIDExLjcyIDIuMDI1MDIgMTMuNTk5OUMyLjAyNTAyIDEzLjg2MjMgMi4yMzc2OSAxNC4wNzQ5IDIuNTAwMDIgMTQuMDc0OUMyLjc2MjM2IDE0LjA3NDkgMi45NzUwMiAxMy44NjIzIDIuOTc1MDIgMTMuNTk5OUMyLjk3NTAyIDExLjg3OTkgMy40Mjc4NiAxMC43MjA2IDQuMTcwOTEgOS45ODgzQzQuOTE1MzYgOS4yNTQ2MyA2LjAyNjc0IDguODc0OTkgNy40OTk5NSA4Ljg3NDk5QzguOTczMTcgOC44NzQ5OSAxMC4wODQ2IDkuMjU0NjMgMTAuODI5MSA5Ljk4ODMxQzExLjU3MjEgMTAuNzIwNiAxMi4wMjUgMTEuODc5OSAxMi4wMjUgMTMuNTk5OUMxMi4wMjUgMTMuODYyMyAxMi4yMzc2IDE0LjA3NDkgMTIuNSAxNC4wNzQ5QzEyLjc2MjMgMTQuMDc1IDEyLjk3NSAxMy44NjIzIDEyLjk3NSAxMy42QzEyLjk3NSAxMS43MiAxMi40Nzc4IDEwLjI3OTQgMTEuNDk1OSA5LjMxMTY2QzEwLjcyNDQgOC41NTEzNSA5LjcwMDI1IDguMTI5MDMgOC41MDYyNSA3Ljk4MzUyQzEwLjAxODcgNy41NDc0IDExLjEyNSA2LjE1Mjg5IDExLjEyNSA0LjVDMTEuMTI1IDIuNDk3OTcgOS41MDIwMyAwLjg3NSA3LjUgMC44NzVaTTQuODI1IDQuNUM0LjgyNSAzLjAyMjY0IDYuMDIyNjQgMS44MjUgNy41IDEuODI1QzguOTc3MzYgMS44MjUgMTAuMTc1IDMuMDIyNjQgMTAuMTc1IDQuNUMxMC4xNzUgNS45NzczNiA4Ljk3NzM2IDcuMTc1IDcuNSA3LjE3NUM2LjAyMjY0IDcuMTc1IDQuODI1IDUuOTc3MzYgNC44MjUgNC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sR249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuODUwMDEgNy41MDA0M0MxLjg1MDAxIDQuMzc5NzUgNC4zNzk2MyAxLjg1MDAxIDcuNTAwMDEgMS44NTAwMUMxMC42MjA0IDEuODUwMDEgMTMuMTUgNC4zNzk3NSAxMy4xNSA3LjUwMDQzQzEzLjE1IDEwLjYyMTEgMTAuNjIwNCAxMy4xNTA5IDcuNTAwMDEgMTMuMTUwOUM0LjM3OTYzIDEzLjE1MDkgMS44NTAwMSAxMC42MjExIDEuODUwMDEgNy41MDA0M1pNNy41MDAwMSAwLjg1MDAwNkMzLjgyNzI4IDAuODUwMDA2IDAuODUwMDA2IDMuODI3NTMgMC44NTAwMDYgNy41MDA0M0MwLjg1MDAwNiAxMS4xNzMzIDMuODI3MjggMTQuMTUwOSA3LjUwMDAxIDE0LjE1MDlDMTEuMTcyNyAxNC4xNTA5IDE0LjE1IDExLjE3MzMgMTQuMTUgNy41MDA0M0MxNC4xNSAzLjgyNzUzIDExLjE3MjcgMC44NTAwMDYgNy41MDAwMSAwLjg1MDAwNlpNNy4wMDAwMSA4LjAwMDAxVjMuMTI4MTFDNy4xNjQxMSAzLjEwOTU0IDcuMzMwOTQgMy4xMDAwMSA3LjUwMDAxIDMuMTAwMDFDOS45MzAwNiAzLjEwMDAxIDExLjkgNS4wNzAxNCAxMS45IDcuNTAwNDNDMTEuOSA3LjY2OTM1IDExLjg5MDUgNy44MzYwNCAxMS44NzIgOC4wMDAwMUg3LjAwMDAxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTMgNS41QzMgNy45ODMgNC45OTE2OSA5IDcgOVYxMi41QzcgMTIuNzc2MSA3LjIyMzg2IDEzIDcuNSAxM0M3Ljc3NjE0IDEzIDggMTIuNzc2MSA4IDEyLjVWOVYzLjFIOVYxMi41QzkgMTIuNzc2MSA5LjIyMzg2IDEzIDkuNSAxM0M5Ljc3NjE0IDEzIDEwIDEyLjc3NjEgMTAgMTIuNVYzLjFIMTEuNUMxMS44MDM4IDMuMSAxMi4wNSAyLjg1Mzc2IDEyLjA1IDIuNTVDMTIuMDUgMi4yNDYyNCAxMS44MDM4IDIgMTEuNSAySDkuNUg4SDcuNUg3QzQuOTkxNjkgMiAzIDMuMDE3IDMgNS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjUgMTMuOTVDMTMuNzQ4NSAxMy45NSAxMy45NSAxMy43NDg1IDEzLjk1IDEzLjVDMTMuOTUgMTMuMjUxNCAxMy43NDg1IDEzLjA1IDEzLjUgMTMuMDVMMS40OTk5NSAxMy4wNUMxLjI1MTQyIDEzLjA1IDEuMDQ5OTUgMTMuMjUxNCAxLjA0OTk1IDEzLjVDMS4wNDk5NSAxMy43NDg1IDEuMjUxNDIgMTMuOTUgMS40OTk5NSAxMy45NUwxMy41IDEzLjk1Wk0xMS4wNjgxIDcuNTY4M0MxMS4yNDM5IDcuMzkyNTcgMTEuMjQzOSA3LjEwNzY0IDExLjA2ODEgNi45MzE5MUMxMC44OTI0IDYuNzU2MTcgMTAuNjA3NSA2Ljc1NjE3IDEwLjQzMTcgNi45MzE5MUw3Ljk0OTkzIDkuNDEzNzFMNy45NDk5MyAxLjQ5OTk4QzcuOTQ5OTMgMS4yNTE0NiA3Ljc0ODQ2IDEuMDQ5OTggNy40OTk5MyAxLjA0OTk4QzcuMjUxNCAxLjA0OTk4IDcuMDQ5OTMgMS4yNTE0NiA3LjA0OTkzIDEuNDk5OThMNy4wNDk5MyA5LjQxMzcxTDQuNTY4MTMgNi45MzE5MUM0LjM5MjM5IDYuNzU2MTcgNC4xMDc0NiA2Ljc1NjE3IDMuOTMxNzMgNi45MzE5MUMzLjc1NTk5IDcuMTA3NjQgMy43NTU5OSA3LjM5MjU3IDMuOTMxNzMgNy41NjgzTDcuMTgxNzMgMTAuODE4M0M3LjM1NzQ2IDEwLjk5NCA3LjY0MjM5IDEwLjk5NCA3LjgxODEyIDEwLjgxODNMMTEuMDY4MSA3LjU2ODNaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxZbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi4wNTAwNSAxMy41QzIuMDUwMDUgMTMuNzQ4NSAyLjI1MTUyIDEzLjk1IDIuNTAwMDUgMTMuOTVDMi43NDg1OCAxMy45NSAyLjk1MDA1IDEzLjc0ODUgMi45NTAwNSAxMy41TDIuOTUwMDUgMS40OTk5NUMyLjk1MDA1IDEuMjUxNDIgMi43NDg1OCAxLjA0OTk1IDIuNTAwMDUgMS4wNDk5NUMyLjI1MTUyIDEuMDQ5OTUgMi4wNTAwNSAxLjI1MTQyIDIuMDUwMDUgMS40OTk5NUwyLjA1MDA1IDEzLjVaTTguNDMxNyAxMS4wNjgxQzguNjA3NDMgMTEuMjQzOSA4Ljg5MjM2IDExLjI0MzkgOS4wNjgwOSAxMS4wNjgxQzkuMjQzODMgMTAuODkyNCA5LjI0MzgzIDEwLjYwNzUgOS4wNjgwOSAxMC40MzE3TDYuNTg2MjkgNy45NDk5M0wxNC41IDcuOTQ5OTNDMTQuNzQ4NSA3Ljk0OTkzIDE0Ljk1IDcuNzQ4NDYgMTQuOTUgNy40OTk5M0MxNC45NSA3LjI1MTQgMTQuNzQ4NSA3LjA0OTkzIDE0LjUgNy4wNDk5M0w2LjU4NjI5IDcuMDQ5OTNMOS4wNjgwOSA0LjU2ODEzQzkuMjQzODMgNC4zOTIzOSA5LjI0MzgzIDQuMTA3NDYgOS4wNjgwOSAzLjkzMTczQzguODkyMzYgMy43NTU5OSA4LjYwNzQzIDMuNzU1OTkgOC40MzE3IDMuOTMxNzNMNS4xODE3IDcuMTgxNzNDNS4wMDU5NiA3LjM1NzQ2IDUuMDA1OTYgNy42NDIzOSA1LjE4MTcgNy44MTgxMkw4LjQzMTcgMTEuMDY4MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEtuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi45NSAxLjUwMDA1QzEyLjk1IDEuMjUxNTIgMTIuNzQ4NSAxLjA1MDA1IDEyLjUgMS4wNTAwNUMxMi4yNTE0IDEuMDUwMDUgMTIuMDUgMS4yNTE1MiAxMi4wNSAxLjUwMDA1TDEyLjA1IDEzLjVDMTIuMDUgMTMuNzQ4NiAxMi4yNTE0IDEzLjk1IDEyLjUgMTMuOTVDMTIuNzQ4NSAxMy45NSAxMi45NSAxMy43NDg2IDEyLjk1IDEzLjVMMTIuOTUgMS41MDAwNVpNNi41NjgzIDMuOTMxODhDNi4zOTI1NyAzLjc1NjE0IDYuMTA3NjQgMy43NTYxNCA1LjkzMTkxIDMuOTMxODhDNS43NTYxNyA0LjEwNzYxIDUuNzU2MTcgNC4zOTI1NCA1LjkzMTkxIDQuNTY4MjdMOC40MTM3MSA3LjA1MDA3TDAuNDk5OTg0IDcuMDUwMDdDMC4yNTE0NTYgNy4wNTAwNyAwLjA0OTk4NDcgNy4yNTE1NSAwLjA0OTk4NDcgNy41MDAwN0MwLjA0OTk4NDYgNy43NDg2IDAuMjUxNDU3IDcuOTUwMDcgMC40OTk5ODQgNy45NTAwN0w4LjQxMzcxIDcuOTUwMDdMNS45MzE5MSAxMC40MzE5QzUuNzU2MTcgMTAuNjA3NiA1Ljc1NjE3IDEwLjg5MjUgNS45MzE5MSAxMS4wNjgzQzYuMTA3NjQgMTEuMjQ0IDYuMzkyNTcgMTEuMjQ0IDYuNTY4MzEgMTEuMDY4M0w5LjgxODMgNy44MTgyN0M5Ljk5NDA0IDcuNjQyNTQgOS45OTQwNCA3LjM1NzYxIDkuODE4MyA3LjE4MTg4TDYuNTY4MyAzLjkzMTg4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sWG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNTAwMDUgMS4wNTAwNUMxLjI1MTUyIDEuMDUwMDUgMS4wNTAwNSAxLjI1MTUyIDEuMDUwMDUgMS41MDAwNUMxLjA1MDA1IDEuNzQ4NTggMS4yNTE1MiAxLjk1MDA1IDEuNTAwMDUgMS45NTAwNUwxMy41IDEuOTUwMDVDMTMuNzQ4NiAxLjk1MDA1IDEzLjk1IDEuNzQ4NTggMTMuOTUgMS41MDAwNUMxMy45NSAxLjI1MTUyIDEzLjc0ODYgMS4wNTAwNSAxMy41IDEuMDUwMDVIMS41MDAwNVpNMy45MzE4OCA3LjQzMTY5QzMuNzU2MTQgNy42MDc0MyAzLjc1NjE0IDcuODkyMzYgMy45MzE4OCA4LjA2ODA5QzQuMTA3NjEgOC4yNDM4MyA0LjM5MjU0IDguMjQzODMgNC41NjgyNyA4LjA2ODA5TDcuMDUwMDcgNS41ODYyOVYxMy41QzcuMDUwMDcgMTMuNzQ4NSA3LjI1MTU1IDEzLjk1IDcuNTAwMDcgMTMuOTVDNy43NDg2IDEzLjk1IDcuOTUwMDcgMTMuNzQ4NSA3Ljk1MDA3IDEzLjVMNy45NTAwNyA1LjU4NjI5TDEwLjQzMTkgOC4wNjgwOUMxMC42MDc2IDguMjQzODMgMTAuODkyNSA4LjI0MzgzIDExLjA2ODMgOC4wNjgwOUMxMS4yNDQgNy44OTIzNSAxMS4yNDQgNy42MDc0MyAxMS4wNjgzIDcuNDMxNjlMNy44MTgyNyA0LjE4MTY5QzcuNjQyNTQgNC4wMDU5NiA3LjM1NzYxIDQuMDA1OTYgNy4xODE4OCA0LjE4MTY5TDMuOTMxODggNy40MzE2OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFFuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjI0MTgyIDIuMzIxODFDMy4zOTE5IDIuMjMxMzIgMy41Nzg0IDIuMjI2MDEgMy43MzMzOCAyLjMwNzgxTDEyLjczMzQgNy4wNTc4MUMxMi44OTc0IDcuMTQ0MzYgMTMgNy4zMTQ1NyAxMyA3LjVDMTMgNy42ODU0MyAxMi44OTc0IDcuODU1NjQgMTIuNzMzNCA3Ljk0MjE5TDMuNzMzMzggMTIuNjkyMkMzLjU3ODQgMTIuNzc0IDMuMzkxOSAxMi43Njg3IDMuMjQxODIgMTIuNjc4MkMzLjA5MTc1IDEyLjU4NzcgMyAxMi40MjUyIDMgMTIuMjVWMi43NUMzIDIuNTc0NzYgMy4wOTE3NSAyLjQxMjMgMy4yNDE4MiAyLjMyMTgxWk00IDMuNTc5MjVWMTEuNDIwN0wxMS40Mjg4IDcuNUw0IDMuNTc5MjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxKbj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOCAyLjc1QzggMi40NzM4NiA3Ljc3NjE0IDIuMjUgNy41IDIuMjVDNy4yMjM4NiAyLjI1IDcgMi40NzM4NiA3IDIuNzVWN0gyLjc1QzIuNDczODYgNyAyLjI1IDcuMjIzODYgMi4yNSA3LjVDMi4yNSA3Ljc3NjE0IDIuNDczODYgOCAyLjc1IDhIN1YxMi4yNUM3IDEyLjUyNjEgNy4yMjM4NiAxMi43NSA3LjUgMTIuNzVDNy43NzYxNCAxMi43NSA4IDEyLjUyNjEgOCAxMi4yNVY4SDEyLjI1QzEyLjUyNjEgOCAxMi43NSA3Ljc3NjE0IDEyLjc1IDcuNUMxMi43NSA3LjIyMzg2IDEyLjUyNjEgNyAxMi4yNSA3SDhWMi43NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGVyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc2ODkyQzMuODQyMjIgMC44NzY4OTIgMC44NzcwNzUgMy44NDIwNCAwLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDExLjE1NzQgMy44NDIyMiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMxMS4xNTc2IDE0LjEyMjYgMTQuMTIyNyAxMS4xNTc0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDMuODQyMDQgMTEuMTU3NiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyWk0xLjgyNzA3IDcuNDk5NzJDMS44MjcwNyA0LjM2NjcxIDQuMzY2ODkgMS44MjY4OSA3LjQ5OTkxIDEuODI2ODlDMTAuNjMyOSAxLjgyNjg5IDEzLjE3MjcgNC4zNjY3MSAxMy4xNzI3IDcuNDk5NzJDMTMuMTcyNyAxMC42MzI3IDEwLjYzMjkgMTMuMTcyNiA3LjQ5OTkxIDEzLjE3MjZDNC4zNjY4OSAxMy4xNzI2IDEuODI3MDcgMTAuNjMyNyAxLjgyNzA3IDcuNDk5NzJaTTcuNTAwMDMgNEM3Ljc3NjE3IDQgOC4wMDAwMyA0LjIyMzg2IDguMDAwMDMgNC41VjdIMTAuNUMxMC43NzYyIDcgMTEgNy4yMjM4NiAxMSA3LjVDMTEgNy43NzYxNCAxMC43NzYyIDggMTAuNSA4SDguMDAwMDNWMTAuNUM4LjAwMDAzIDEwLjc3NjEgNy43NzYxNyAxMSA3LjUwMDAzIDExQzcuMjIzODkgMTEgNy4wMDAwMyAxMC43NzYxIDcuMDAwMDMgMTAuNVY4SDQuNTAwMDNDNC4yMjM4OSA4IDQuMDAwMDMgNy43NzYxNCA0LjAwMDAzIDcuNUM0LjAwMDAzIDcuMjIzODYgNC4yMjM4OSA3IDQuNTAwMDMgN0g3LjAwMDAzVjQuNUM3LjAwMDAzIDQuMjIzODYgNy4yMjM4OSA0IDcuNTAwMDMgNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHRyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjA3NTA1IDQuMTAwMDFDNS4wNzUwNSAyLjkxMTAzIDYuMjU3MjcgMS45MjUwMiA3LjUwMDA1IDEuOTI1MDJDOC43NDI4MyAxLjkyNTAyIDkuOTI1MDUgMi45MTEwMyA5LjkyNTA1IDQuMTAwMDFDOS45MjUwNSA1LjE5ODYxIDkuMzY3ODIgNS43MTQzNiA4LjYxODU0IDYuMzc4ODRMOC41ODc1NyA2LjQwNjNDNy44NDQ4MSA3LjA2NDY3IDYuOTI1MDUgNy44Nzk5NSA2LjkyNTA1IDkuNUM2LjkyNTA1IDkuODE3NTcgNy4xODI0OCAxMC4wNzUgNy41MDAwNSAxMC4wNzVDNy44MTc2MSAxMC4wNzUgOC4wNzUwNSA5LjgxNzU3IDguMDc1MDUgOS41QzguMDc1MDUgOC40MTUxNyA4LjYyOTQ1IDcuOTA2MjMgOS4zODE1NiA3LjIzOTI1TDkuNDAyMzggNy4yMjA3OUMxMC4xNDk2IDYuNTU4MjkgMTEuMDc1IDUuNzM3NzUgMTEuMDc1IDQuMTAwMDFDMTEuMDc1IDIuMTI3NTcgOS4yMTg2OSAwLjc3NTAyNCA3LjUwMDA1IDAuNzc1MDI0QzUuNzgxNCAwLjc3NTAyNCAzLjkyNTA1IDIuMTI3NTcgMy45MjUwNSA0LjEwMDAxQzMuOTI1MDUgNC40MTc1OCA0LjE4MjQ5IDQuNjc1MDEgNC41MDAwNSA0LjY3NTAxQzQuODE3NjEgNC42NzUwMSA1LjA3NTA1IDQuNDE3NTggNS4wNzUwNSA0LjEwMDAxWk03LjUwMDA1IDEzLjM1NzVDNy45ODMzIDEzLjM1NzUgOC4zNzUwNSAxMi45NjU3IDguMzc1MDUgMTIuNDgyNUM4LjM3NTA1IDExLjk5OTIgNy45ODMzIDExLjYwNzUgNy41MDAwNSAxMS42MDc1QzcuMDE2OCAxMS42MDc1IDYuNjI1MDUgMTEuOTk5MiA2LjYyNTA1IDEyLjQ4MjVDNi42MjUwNSAxMi45NjU3IDcuMDE2OCAxMy4zNTc1IDcuNTAwMDUgMTMuMzU3NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG5yPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzA3NSA3LjQ5OTcyQzAuODc3MDc1IDMuODQyMDQgMy44NDIyMiAwLjg3Njg5MiA3LjQ5OTkxIDAuODc2ODkyQzExLjE1NzYgMC44NzY4OTIgMTQuMTIyNyAzLjg0MjA0IDE0LjEyMjcgNy40OTk3MkMxNC4xMjI3IDExLjE1NzQgMTEuMTU3NiAxNC4xMjI2IDcuNDk5OTEgMTQuMTIyNkMzLjg0MjIyIDE0LjEyMjYgMC44NzcwNzUgMTEuMTU3NCAwLjg3NzA3NSA3LjQ5OTcyWk03LjQ5OTkxIDEuODI2ODlDNC4zNjY4OSAxLjgyNjg5IDEuODI3MDggNC4zNjY3MSAxLjgyNzA4IDcuNDk5NzJDMS44MjcwOCAxMC42MzI3IDQuMzY2ODkgMTMuMTcyNiA3LjQ5OTkxIDEzLjE3MjZDMTAuNjMyOSAxMy4xNzI2IDEzLjE3MjcgMTAuNjMyNyAxMy4xNzI3IDcuNDk5NzJDMTMuMTcyNyA0LjM2NjcxIDEwLjYzMjkgMS44MjY4OSA3LjQ5OTkxIDEuODI2ODlaTTguMjQ5OTMgMTAuNUM4LjI0OTkzIDEwLjkxNDIgNy45MTQxNCAxMS4yNSA3LjQ5OTkzIDExLjI1QzcuMDg1NzEgMTEuMjUgNi43NDk5MyAxMC45MTQyIDYuNzQ5OTMgMTAuNUM2Ljc0OTkzIDEwLjA4NTggNy4wODU3MSA5Ljc1IDcuNDk5OTMgOS43NUM3LjkxNDE0IDkuNzUgOC4yNDk5MyAxMC4wODU4IDguMjQ5OTMgMTAuNVpNNi4wNTAwMyA2LjI1QzYuMDUwMDMgNS41NzIxMSA2LjYzNTExIDQuOTI1IDcuNTAwMDMgNC45MjVDOC4zNjQ5NiA0LjkyNSA4Ljk1MDAzIDUuNTcyMTEgOC45NTAwMyA2LjI1QzguOTUwMDMgNi43NDExOCA4LjY4MDAyIDYuOTkyMTIgOC4yMTQ0NyA3LjI3NDk0QzguMTYyNTEgNy4zMDY1MSA4LjEwMjU4IDcuMzQxMzEgOC4wMzg0NyA3LjM3ODU0TDguMDM4NDEgNy4zNzg1OEM3Ljg1NTIxIDcuNDg0OTcgNy42Mzc4OCA3LjYxMTE5IDcuNDc0NDkgNy43Mzg0OUM3LjIzMjE0IDcuOTI3MzIgNi45NTAwMyA4LjIzMTk4IDYuOTUwMDMgOC43QzYuOTUwMDQgOS4wMDM3NiA3LjE5NjI4IDkuMjUgNy41MDAwNCA5LjI1QzcuODAyNCA5LjI1IDguMDQ3NzggOS4wMDYwMSA4LjA1MDAyIDguNzA0MTdMOC4wNTA1NiA4LjcwMzNDOC4wNTkyNCA4LjY4OTYgOC4wODQ5MyA4LjY1NzM1IDguMTUwNTggOC42MDYyQzguMjUyMDcgOC41MjcxMiA4LjM2NTA4IDguNDYxNjMgOC41MTU2NyA4LjM3NDM2TDguNTE1NzEgOC4zNzQzM0M4LjU5NDIyIDguMzI4ODMgOC42ODI5NiA4LjI3NzQxIDguNzg1NTkgOC4yMTUwNkM5LjMyMDA0IDcuODkwMzggMTAuMDUgNy4zNTM4MiAxMC4wNSA2LjI1QzEwLjA1IDQuOTI3ODkgOC45MzUxMSAzLjgyNSA3LjUwMDAzIDMuODI1QzYuMDY0OTYgMy44MjUgNC45NTAwMyA0LjkyNzg5IDQuOTUwMDMgNi4yNUM0Ljk1MDAzIDYuNTUzNzYgNS4xOTYyOCA2LjggNS41MDAwMyA2LjhDNS44MDM3OSA2LjggNi4wNTAwMyA2LjU1Mzc2IDYuMDUwMDMgNi4yNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHJyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk05LjQyNTAzIDMuNDQxMzZDMTAuMDU2MSAzLjIzNjU0IDEwLjc4MzcgMy4yNDAyIDExLjM3OTIgMy41NDYyM0MxMi43NTMyIDQuMjUyMjQgMTMuMzQ3NyA2LjA3MTkxIDEyLjc5NDYgOEMxMi41NDY1IDguODY0OSAxMi4xMTAyIDkuNzA0NzIgMTEuMTg2MSAxMC41NTI0QzEwLjI2MiAxMS40IDguOTgwMzQgMTEuOSA4LjM4NTcxIDExLjlDOC4xNzI2OSAxMS45IDggMTEuNzMyMSA4IDExLjUyNUM4IDExLjMxNzkgOC4xNzY0NCAxMS4xNSA4LjM4NTcxIDExLjE1QzkuMDY0OTcgMTEuMTUgOS42NzE4OSAxMC43ODA0IDEwLjM5MDYgMTAuMjM2QzEwLjk0MDYgOS44MTkzIDExLjM3MDEgOS4yODYzMyAxMS42MDggOC44MjE5MUMxMi4wNjI4IDcuOTMzNjcgMTIuMDc4MiA2LjY4MTc0IDExLjM0MzMgNi4zNDkwMUMxMC45OTA0IDYuNzM0NTUgMTAuNTI5NSA2Ljk1OTQ2IDkuOTc3MjUgNi45NTk0NkM4Ljc3NzMgNi45NTk0NiA4LjA3MDEgNS45OTQxMiA4LjEwMDUxIDUuMTIwMDlDOC4xMjk1NyA0LjI4NDc0IDguNjYwMzIgMy42ODk1NCA5LjQyNTAzIDMuNDQxMzZaTTMuNDI1MDMgMy40NDEzNkM0LjA1NjE0IDMuMjM2NTQgNC43ODM2NiAzLjI0MDIgNS4zNzkyMyAzLjU0NjIzQzYuNzUzMiA0LjI1MjI0IDcuMzQ3NjYgNi4wNzE5MSA2Ljc5NDYyIDhDNi41NDY1NCA4Ljg2NDkgNi4xMTAxOSA5LjcwNDcyIDUuMTg2MSAxMC41NTI0QzQuMjYyMDEgMTEuNCAyLjk4MDM0IDExLjkgMi4zODU3MSAxMS45QzIuMTcyNjkgMTEuOSAyIDExLjczMjEgMiAxMS41MjVDMiAxMS4zMTc5IDIuMTc2NDQgMTEuMTUgMi4zODU3MSAxMS4xNUMzLjA2NDk3IDExLjE1IDMuNjcxODkgMTAuNzgwNCA0LjM5MDU4IDEwLjIzNkM0Ljk0MDY1IDkuODE5MyA1LjM3MDE0IDkuMjg2MzMgNS42MDc5NyA4LjgyMTkxQzYuMDYyODIgNy45MzM2NyA2LjA3ODIxIDYuNjgxNzQgNS4zNDMzIDYuMzQ5MDFDNC45OTAzNyA2LjczNDU1IDQuNTI5NDggNi45NTk0NiAzLjk3NzI1IDYuOTU5NDZDMi43NzczIDYuOTU5NDYgMi4wNzAxIDUuOTk0MTIgMi4xMDA1MSA1LjEyMDA5QzIuMTI5NTcgNC4yODQ3NCAyLjY2MDMyIDMuNjg5NTQgMy40MjUwMyAzLjQ0MTM2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sb3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5ODUgMC44NzcwNDVDMy44NDIxNiAwLjg3NzA0NSAwLjg3NzAxNCAzLjg0MjE5IDAuODc3MDE0IDcuNDk5ODhDMC44NzcwMTQgMTEuMTU3NSAzLjg0MjE2IDE0LjEyMjcgNy40OTk4NSAxNC4xMjI3QzExLjE1NzUgMTQuMTIyNyAxNC4xMjI3IDExLjE1NzUgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgMy44NDIxOSAxMS4xNTc1IDAuODc3MDQ1IDcuNDk5ODUgMC44NzcwNDVaTTEuODI3MDEgNy40OTk4OEMxLjgyNzAxIDQuMzY2ODYgNC4zNjY4MyAxLjgyNzA0IDcuNDk5ODUgMS44MjcwNEMxMC42MzI4IDEuODI3MDQgMTMuMTcyNyA0LjM2Njg2IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDEwLjYzMjkgMTAuNjMyOCAxMy4xNzI3IDcuNDk5ODUgMTMuMTcyN0M0LjM2NjgzIDEzLjE3MjcgMS44MjcwMSAxMC42MzI5IDEuODI3MDEgNy40OTk4OFpNNy40OTk5OSA5LjQ5OTk5QzguNjA0NTYgOS40OTk5OSA5LjQ5OTk5IDguNjA0NTYgOS40OTk5OSA3LjQ5OTk5QzkuNDk5OTkgNi4zOTU0MiA4LjYwNDU2IDUuNDk5OTkgNy40OTk5OSA1LjQ5OTk5QzYuMzk1NDIgNS40OTk5OSA1LjQ5OTk5IDYuMzk1NDIgNS40OTk5OSA3LjQ5OTk5QzUuNDk5OTkgOC42MDQ1NiA2LjM5NTQyIDkuNDk5OTkgNy40OTk5OSA5LjQ5OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0saXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuMiAxSDQuMTc3NDFINC4xNzc0QzMuODY5MzYgMC45OTk5ODggMy42MDM2OCAwLjk5OTk3OCAzLjM4NjA5IDEuMDIwNjdDMy4xNTU3NiAxLjA0MjU3IDIuOTI4MjUgMS4wOTExMyAyLjcxNjI1IDEuMjIxMDRDMi41MTQ0MiAxLjM0NDcyIDIuMzQ0NzMgMS41MTQ0MiAyLjIyMTA0IDEuNzE2MjVDMi4wOTExMyAxLjkyODI1IDIuMDQyNTcgMi4xNTU3NiAyLjAyMDY3IDIuMzg2MDlDMS45OTk5OCAyLjYwMzY3IDEuOTk5OTkgMi44NjkzNSAyIDMuMTc3MzhWMy4xNzc0VjMuMlYxMS44VjExLjgyMjZWMTEuODIyNkMxLjk5OTk5IDEyLjEzMDcgMS45OTk5OCAxMi4zOTYzIDIuMDIwNjcgMTIuNjEzOUMyLjA0MjU3IDEyLjg0NDIgMi4wOTExMyAxMy4wNzE3IDIuMjIxMDQgMTMuMjgzN0MyLjM0NDczIDEzLjQ4NTYgMi41MTQ0MiAxMy42NTUzIDIuNzE2MjUgMTMuNzc5QzIuOTI4MjUgMTMuOTA4OSAzLjE1NTc2IDEzLjk1NzQgMy4zODYwOSAxMy45NzkzQzMuNjAzNjggMTQgMy44NjkzNyAxNCA0LjE3NzQxIDE0SDQuMkgxMC44SDEwLjgyMjZDMTEuMTMwNiAxNCAxMS4zOTYzIDE0IDExLjYxMzkgMTMuOTc5M0MxMS44NDQyIDEzLjk1NzQgMTIuMDcxNyAxMy45MDg5IDEyLjI4MzcgMTMuNzc5QzEyLjQ4NTYgMTMuNjU1MyAxMi42NTUzIDEzLjQ4NTYgMTIuNzc5IDEzLjI4MzdDMTIuOTA4OSAxMy4wNzE3IDEyLjk1NzQgMTIuODQ0MiAxMi45NzkzIDEyLjYxMzlDMTMgMTIuMzk2MyAxMyAxMi4xMzA2IDEzIDExLjgyMjZWMTEuOFYzLjJWMy4xNzc0MUMxMyAyLjg2OTM2IDEzIDIuNjAzNjggMTIuOTc5MyAyLjM4NjA5QzEyLjk1NzQgMi4xNTU3NiAxMi45MDg5IDEuOTI4MjUgMTIuNzc5IDEuNzE2MjVDMTIuNjU1MyAxLjUxNDQyIDEyLjQ4NTYgMS4zNDQ3MiAxMi4yODM3IDEuMjIxMDRDMTIuMDcxNyAxLjA5MTEzIDExLjg0NDIgMS4wNDI1NyAxMS42MTM5IDEuMDIwNjdDMTEuMzk2MyAwLjk5OTk3OCAxMS4xMzA2IDAuOTk5OTg4IDEwLjgyMjYgMUgxMC44SDQuMlpNMy4yMzg3NSAyLjA3MzY4QzMuMjY3MjIgMi4wNTYyMyAzLjMyMzYyIDIuMDMxMTIgMy40ODA3NSAyLjAxNjE4QzMuNjQ1MzIgMi4wMDA1MyAzLjg2Mjk4IDIgNC4yIDJIMTAuOEMxMS4xMzcgMiAxMS4zNTQ3IDIuMDAwNTMgMTEuNTE5MyAyLjAxNjE4QzExLjY3NjQgMi4wMzExMiAxMS43MzI4IDIuMDU2MjMgMTEuNzYxMyAyLjA3MzY4QzExLjgyODUgMi4xMTQ5MSAxMS44ODUxIDIuMTcxNDcgMTEuOTI2MyAyLjIzODc1QzExLjk0MzggMi4yNjcyMiAxMS45Njg5IDIuMzIzNjIgMTEuOTgzOCAyLjQ4MDc1QzExLjk5OTUgMi42NDUzMiAxMiAyLjg2Mjk4IDEyIDMuMlYxMS44QzEyIDEyLjEzNyAxMS45OTk1IDEyLjM1NDcgMTEuOTgzOCAxMi41MTkzQzExLjk2ODkgMTIuNjc2NCAxMS45NDM4IDEyLjczMjggMTEuOTI2MyAxMi43NjEzQzExLjg4NTEgMTIuODI4NSAxMS44Mjg1IDEyLjg4NTEgMTEuNzYxMyAxMi45MjYzQzExLjczMjggMTIuOTQzOCAxMS42NzY0IDEyLjk2ODkgMTEuNTE5MyAxMi45ODM4QzExLjM1NDcgMTIuOTk5NSAxMS4xMzcgMTMgMTAuOCAxM0g0LjJDMy44NjI5OCAxMyAzLjY0NTMyIDEyLjk5OTUgMy40ODA3NSAxMi45ODM4QzMuMzIzNjIgMTIuOTY4OSAzLjI2NzIyIDEyLjk0MzggMy4yMzg3NSAxMi45MjYzQzMuMTcxNDcgMTIuODg1MSAzLjExNDkxIDEyLjgyODUgMy4wNzM2OCAxMi43NjEzQzMuMDU2MjQgMTIuNzMyOCAzLjAzMTEyIDEyLjY3NjQgMy4wMTYxOCAxMi41MTkzQzMuMDAwNTMgMTIuMzU0NyAzIDEyLjEzNyAzIDExLjhWMy4yQzMgMi44NjI5OCAzLjAwMDUzIDIuNjQ1MzIgMy4wMTYxOCAyLjQ4MDc1QzMuMDMxMTIgMi4zMjM2MiAzLjA1NjI0IDIuMjY3MjIgMy4wNzM2OCAyLjIzODc1QzMuMTE0OTEgMi4xNzE0NyAzLjE3MTQ3IDIuMTE0OTEgMy4yMzg3NSAyLjA3MzY4Wk01IDEwQzQuNzIzODYgMTAgNC41IDEwLjIyMzkgNC41IDEwLjVDNC41IDEwLjc3NjEgNC43MjM4NiAxMSA1IDExSDhDOC4yNzYxNCAxMSA4LjUgMTAuNzc2MSA4LjUgMTAuNUM4LjUgMTAuMjIzOSA4LjI3NjE0IDEwIDggMTBINVpNNC41IDcuNUM0LjUgNy4yMjM4NiA0LjcyMzg2IDcgNSA3SDEwQzEwLjI3NjEgNyAxMC41IDcuMjIzODYgMTAuNSA3LjVDMTAuNSA3Ljc3NjE0IDEwLjI3NjEgOCAxMCA4SDVDNC43MjM4NiA4IDQuNSA3Ljc3NjE0IDQuNSA3LjVaTTUgNEM0LjcyMzg2IDQgNC41IDQuMjIzODYgNC41IDQuNUM0LjUgNC43NzYxNCA0LjcyMzg2IDUgNSA1SDEwQzEwLjI3NjEgNSAxMC41IDQuNzc2MTQgMTAuNSA0LjVDMTAuNSA0LjIyMzg2IDEwLjI3NjEgNCAxMCA0SDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxhcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS44NDk5OCA3LjQ5OTk4QzEuODQ5OTggNC42NjQ1OCA0LjA1OTc5IDEuODQ5OTggNy40OTk5OCAxLjg0OTk4QzEwLjI3ODMgMS44NDk5OCAxMS42NTE1IDMuOTA2NCAxMi4yMzY3IDVIMTAuNUMxMC4yMjM5IDUgMTAgNS4yMjM4NiAxMCA1LjVDMTAgNS43NzYxNCAxMC4yMjM5IDYgMTAuNSA2SDEzLjVDMTMuNzc2MSA2IDE0IDUuNzc2MTQgMTQgNS41VjIuNUMxNCAyLjIyMzg2IDEzLjc3NjEgMiAxMy41IDJDMTMuMjIzOSAyIDEzIDIuMjIzODYgMTMgMi41VjQuMzEzMThDMTIuMjk1NSAzLjA3MTI2IDEwLjY2NTkgMC44NDk5NzYgNy40OTk5OCAwLjg0OTk3NkMzLjQzNzE2IDAuODQ5OTc2IDAuODQ5OTc2IDQuMTg1MzcgMC44NDk5NzYgNy40OTk5OEMwLjg0OTk3NiAxMC44MTQ2IDMuNDM3MTYgMTQuMTUgNy40OTk5OCAxNC4xNUM5LjQ0MzgyIDE0LjE1IDExLjA2MjIgMTMuMzgwOCAxMi4yMTQ1IDEyLjIwODRDMTIuODMxNSAxMS41ODA2IDEzLjMxMzMgMTAuODM5IDEzLjY0MTggMTAuMDQwN0MxMy43NDY5IDkuNzg1MzYgMTMuNjI1MSA5LjQ5MzE1IDEzLjM2OTggOS4zODgwNkMxMy4xMTQ0IDkuMjgyOTYgMTIuODIyMiA5LjQwNDc4IDEyLjcxNzEgOS42NjAxNEMxMi40MzYzIDEwLjM0MjUgMTIuMDI1MSAxMC45NzQ1IDExLjUwMTMgMTEuNTA3NEMxMC41Mjk1IDEyLjQ5NjMgOS4xNjUwNCAxMy4xNSA3LjQ5OTk4IDEzLjE1QzQuMDU5NzkgMTMuMTUgMS44NDk5OCAxMC4zMzU0IDEuODQ5OTggNy40OTk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGxyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00Ljg1MzU1IDIuMTQ2NDVDNS4wNDg4MiAyLjM0MTcxIDUuMDQ4ODIgMi42NTgyOSA0Ljg1MzU1IDIuODUzNTVMMy43MDcxMSA0SDlDMTEuNDg1MyA0IDEzLjUgNi4wMTQ3MiAxMy41IDguNUMxMy41IDEwLjk4NTMgMTEuNDg1MyAxMyA5IDEzSDVDNC43MjM4NiAxMyA0LjUgMTIuNzc2MSA0LjUgMTIuNUM0LjUgMTIuMjIzOSA0LjcyMzg2IDEyIDUgMTJIOUMxMC45MzMgMTIgMTIuNSAxMC40MzMgMTIuNSA4LjVDMTIuNSA2LjU2NyAxMC45MzMgNSA5IDVIMy43MDcxMUw0Ljg1MzU1IDYuMTQ2NDVDNS4wNDg4MiA2LjM0MTcxIDUuMDQ4ODIgNi42NTgyOSA0Ljg1MzU1IDYuODUzNTVDNC42NTgyOSA3LjA0ODgyIDQuMzQxNzEgNy4wNDg4MiA0LjE0NjQ1IDYuODUzNTVMMi4xNDY0NSA0Ljg1MzU1QzEuOTUxMTggNC42NTgyOSAxLjk1MTE4IDQuMzQxNzEgMi4xNDY0NSA0LjE0NjQ1TDQuMTQ2NDUgMi4xNDY0NUM0LjM0MTcxIDEuOTUxMTggNC42NTgyOSAxLjk1MTE4IDQuODUzNTUgMi4xNDY0NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGNyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0zLjA0OTk1IDIuNzQ5OTVDMy4wNDk5NSAyLjQ0NjE5IDIuODAzNzEgMi4xOTk5NSAyLjQ5OTk1IDIuMTk5OTVDMi4xOTYxOSAyLjE5OTk1IDEuOTQ5OTUgMi40NDYxOSAxLjk0OTk1IDIuNzQ5OTVWMTIuMjVDMS45NDk5NSAxMi41NTM3IDIuMTk2MTkgMTIuOCAyLjQ5OTk1IDEyLjhDMi44MDM3MSAxMi44IDMuMDQ5OTUgMTIuNTUzNyAzLjA0OTk1IDEyLjI1VjIuNzQ5OTVaTTUuNzMzMzMgMi4zMDc3NkM1LjU3ODM1IDIuMjI1OTYgNS4zOTE4NSAyLjIzMTI3IDUuMjQxNzcgMi4zMjE3NkM1LjA5MTcgMi40MTIyNSA0Ljk5OTk1IDIuNTc0NzEgNC45OTk5NSAyLjc0OTk1VjEyLjI1QzQuOTk5OTUgMTIuNDI1MiA1LjA5MTcgMTIuNTg3NyA1LjI0MTc3IDEyLjY3ODFDNS4zOTE4NSAxMi43Njg2IDUuNTc4MzUgMTIuNzczOSA1LjczMzMzIDEyLjY5MjFMMTQuNzMzMyA3Ljk0MjE0QzE0Ljg5NzMgNy44NTU1OSAxNSA3LjY4NTM5IDE1IDcuNDk5OTVDMTUgNy4zMTQ1MiAxNC44OTczIDcuMTQ0MzEgMTQuNzMzMyA3LjA1Nzc2TDUuNzMzMzMgMi4zMDc3NlpNNS45OTk5NSAxMS40MjA3VjMuNTc5MkwxMy40Mjg3IDcuNDk5OTVMNS45OTk5NSAxMS40MjA3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sc3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuODUzNTcgMy44NTM1NUw3LjY1MzU1IDMuMDUzNTNDOC4yOTgxIDIuNDA5MDEgOS40Mjg1OCAxLjk2MTcyIDEwLjU1MiAxLjgwMTI1QzExLjEwNTYgMS43MjIxNyAxMS42MjkxIDEuNzE3MjUgMTIuMDU2NCAxLjc4MTI0QzEyLjQ5ODcgMS44NDc0OCAxMi43Njk4IDEuOTc2OTYgMTIuODk2NSAyLjEwMzU3QzEzLjAyMzEgMi4yMzAxOCAxMy4xNTI2IDIuNTAxMjUgMTMuMjE4OCAyLjk0MzU3QzEzLjI4MjggMy4zNzA4NiAxMy4yNzc5IDMuODk0MzkgMTMuMTk4OCA0LjQ0ODAxQzEzLjAzODMgNS41NzEzOSAxMi41OTEgNi43MDE4OCAxMS45NDY0IDcuMzQ2NDVMNy40OTk5OSAxMS43OTI5TDYuMzUzNTQgMTAuNjQ2NUM2LjE1ODI3IDEwLjQ1MTIgNS44NDE2OSAxMC40NTEyIDUuNjQ2NDMgMTAuNjQ2NUM1LjQ1MTE3IDEwLjg0MTcgNS40NTExNyAxMS4xNTgzIDUuNjQ2NDMgMTEuMzUzNkw3LjE0NjQ0IDEyLjg1MzZDNy4zNDE3MSAxMy4wNDg4IDcuNjU4MjkgMTMuMDQ4OCA3Ljg1MzU1IDEyLjg1MzZMOC40MDA3MyAxMi4zMDY0TDkuNTcxMjQgMTQuMjU3MkM5LjY1MDQ2IDE0LjM4OTMgOS43ODYwOCAxNC40Nzc0IDkuOTM4OSAxNC40OTYzQzEwLjA5MTcgMTQuNTE1MSAxMC4yNDQ3IDE0LjQ2MjQgMTAuMzUzNSAxNC4zNTM2TDEyLjM1MzUgMTIuMzUzNkMxMi40NjQ4IDEyLjI0MjMgMTIuNTE3MiAxMi4wODUxIDEyLjQ5NSAxMS45MjkzTDEyLjAzMDMgOC42NzY3OUwxMi42NTM2IDguMDUzNTVDMTMuNTA5IDcuMTk4MDggMTQuMDExNyA1LjgyODU1IDE0LjE4ODcgNC41ODk0M0MxNC4yNzg0IDMuOTYxOCAxNC4yODkxIDMuMzM4NDcgMTQuMjA3OCAyLjc5NTQ2QzE0LjEyODcgMi4yNjc0OCAxMy45NTE5IDEuNzQ0ODIgMTMuNjAzNSAxLjM5NjQ1QzEzLjI1NTIgMS4wNDgwOSAxMi43MzI1IDAuODcxMzMyIDEyLjIwNDUgMC43OTIyNjRDMTEuNjYxNSAwLjcxMDk0NSAxMS4wMzgyIDAuNzIxNjQ0IDEwLjQxMDUgMC44MTEzQzkuMTcxNDMgMC45ODgzMDYgNy44MDE4OSAxLjQ5MSA2Ljk0NjQ0IDIuMzQ2NDJMNi4zMjMyMiAyLjk2OTY4TDMuMDcwNzEgMi41MDUwNEMyLjkxNDkyIDIuNDgyNzggMi43NTc3MyAyLjUzNTE3IDIuNjQ2NDUgMi42NDY0NkwwLjY0NjQ1MSA0LjY0NjQ1QzAuNTM3NTc5IDQuNzU1MzMgMC40ODQ5MzggNC45MDgyOSAwLjUwMzc1IDUuMDYxMUMwLjUyMjU2MyA1LjIxMzkxIDAuNjEwNzMgNS4zNDk1NCAwLjc0Mjc1NyA1LjQyODc2TDIuNjkzNjQgNi41OTkyOEwyLjE0NjQ2IDcuMTQ2NDVDMi4wNTI3IDcuMjQwMjIgMi4wMDAwMiA3LjM2NzQgMi4wMDAwMiA3LjUwMDAxQzIuMDAwMDIgNy42MzI2MSAyLjA1MjcgNy43NTk3OSAyLjE0NjQ2IDcuODUzNTZMMy42NDY0NyA5LjM1MzU2QzMuODQxNzMgOS41NDg4MyA0LjE1ODMxIDkuNTQ4ODMgNC4zNTM1NyA5LjM1MzU2QzQuNTQ4ODQgOS4xNTgzIDQuNTQ4ODQgOC44NDE3MiA0LjM1MzU3IDguNjQ2NDZMMy4yMDcxMiA3LjUwMDAxTDMuODUzNTcgNi44NTM1Nkw2Ljg1MzU3IDMuODUzNTVaTTEwLjA5OTMgMTMuMTkzNkw5LjEyOTU5IDExLjU3NzVMMTEuMTQ2NCA5LjU2MDY3TDExLjQ2OTcgMTEuODIzMkwxMC4wOTkzIDEzLjE5MzZaTTMuNDIyNTEgNS44NzA0MUw1LjQzOTM1IDMuODUzNTZMMy4xNzY3OCAzLjUzMDM0TDEuODA2MzggNC45MDA3NEwzLjQyMjUxIDUuODcwNDFaTTIuMzUzNTYgMTAuMzUzNUMyLjU0ODgyIDEwLjE1ODMgMi41NDg4MiA5Ljg0MTcgMi4zNTM1NiA5LjY0NjQ0QzIuMTU4MyA5LjQ1MTE4IDEuODQxNzEgOS40NTExOCAxLjY0NjQ1IDkuNjQ2NDRMMC42NDY0NTEgMTAuNjQ2NEMwLjQ1MTE4OCAxMC44NDE3IDAuNDUxMTg4IDExLjE1ODMgMC42NDY0NTEgMTEuMzUzNUMwLjg0MTcxMyAxMS41NDg4IDEuMTU4MyAxMS41NDg4IDEuMzUzNTYgMTEuMzUzNUwyLjM1MzU2IDEwLjM1MzVaTTMuODUzNTggMTEuODUzNkM0LjA0ODg0IDExLjY1ODMgNC4wNDg4NSAxMS4zNDE3IDMuODUzNTkgMTEuMTQ2NUMzLjY1ODMzIDEwLjk1MTIgMy4zNDE3NSAxMC45NTEyIDMuMTQ2NDggMTEuMTQ2NUwxLjE0NjQ1IDEzLjE0NjRDMC45NTExOSAxMy4zNDE3IDAuOTUxMTg3IDEzLjY1ODMgMS4xNDY0NSAxMy44NTM1QzEuMzQxNzEgMTQuMDQ4OCAxLjY1ODI5IDE0LjA0ODggMS44NTM1NSAxMy44NTM2TDMuODUzNTggMTEuODUzNlpNNS4zNTM1NiAxMy4zNTM1QzUuNTQ4ODIgMTMuMTU4MyA1LjU0ODgyIDEyLjg0MTcgNS4zNTM1NiAxMi42NDY0QzUuMTU4MyAxMi40NTEyIDQuODQxNzEgMTIuNDUxMiA0LjY0NjQ1IDEyLjY0NjRMMy42NDY0NSAxMy42NDY0QzMuNDUxMTkgMTMuODQxNyAzLjQ1MTE5IDE0LjE1ODMgMy42NDY0NSAxNC4zNTM1QzMuODQxNzEgMTQuNTQ4OCA0LjE1ODMgMTQuNTQ4OCA0LjM1MzU2IDE0LjM1MzVMNS4zNTM1NiAxMy4zNTM1Wk05LjQ5OTk3IDYuNzQ4ODFDMTAuMTg5NyA2Ljc0ODgxIDEwLjc0ODggNi4xODk3IDEwLjc0ODggNS41QzEwLjc0ODggNC44MTAzIDEwLjE4OTcgNC4yNTExOCA5LjQ5OTk3IDQuMjUxMThDOC44MTAyNiA0LjI1MTE4IDguMjUxMTUgNC44MTAzIDguMjUxMTUgNS41QzguMjUxMTUgNi4xODk3IDguODEwMjYgNi43NDg4MSA5LjQ5OTk3IDYuNzQ4ODFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx1cj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy41OTY2NCAyLjkzNjI4QzcuNzYwODUgMy4wNjQwMSA4LjAwMDEyIDIuOTQ2OTggOC4wMDAxMiAyLjczODk1VjEuOTk5OThDOS45ODE0MyAyIDExLjE4NDggMi4zNjM3IDExLjkxMDUgMy4wODk0NUMxMi42MzYzIDMuODE1MjIgMTMgNS4wMTg2IDEzIDYuOTk5OThDMTMgNy4yNzYxMyAxMy4yMjM5IDcuNDk5OTggMTMuNSA3LjQ5OTk4QzEzLjc3NjEgNy40OTk5OCAxNCA3LjI3NjEzIDE0IDYuOTk5OThDMTQgNC45NDM4IDEzLjYzMjUgMy4zOTcxOSAxMi42MTc2IDIuMzgyMzRDMTEuNjAyOCAxLjM2NzUyIDEwLjA1NjIgMC45OTk5OTkgOC4wMDAxMiAwLjk5OTk4NFYwLjI2MTI2NkM4LjAwMDEyIDAuMDUzMjI5MyA3Ljc2MDg1IC0wLjA2Mzc5NDQgNy41OTY2NCAwLjA2MzkyOEw2LjAwMzg0IDEuMzAyNzdDNS44NzUxNiAxLjQwMjg2IDUuODc1MTYgMS41OTczNSA2LjAwMzg0IDEuNjk3NDRMNy41OTY2NCAyLjkzNjI4Wk05LjUgNUgyLjVDMi4yMjM4NiA1IDIgNS4yMjM4NiAyIDUuNVYxMi41QzIgMTIuNzc2MSAyLjIyMzg2IDEzIDIuNSAxM0g5LjVDOS43NzYxNCAxMyAxMCAxMi43NzYxIDEwIDEyLjVWNS41QzEwIDUuMjIzODYgOS43NzYxNCA1IDkuNSA1Wk0yLjUgNEMxLjY3MTU3IDQgMSA0LjY3MTU3IDEgNS41VjEyLjVDMSAxMy4zMjg0IDEuNjcxNTcgMTQgMi41IDE0SDkuNUMxMC4zMjg0IDE0IDExIDEzLjMyODQgMTEgMTIuNVY1LjVDMTEgNC42NzE1NyAxMC4zMjg0IDQgOS41IDRIMi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuODE4MzIgMC42ODE3OUM3LjY0MjU4IDAuNTA2MDU0IDcuMzU3NjYgMC41MDYwNTQgNy4xODE5MiAwLjY4MTc5TDUuMTgxOTIgMi42ODE3OUM1LjAwNjE5IDIuODU3NTMgNS4wMDYxOSAzLjE0MjQ1IDUuMTgxOTIgMy4zMTgxOUM1LjM1NzY2IDMuNDkzOTIgNS42NDI1OCAzLjQ5MzkyIDUuODE4MzIgMy4zMTgxOUw3LjA1MDEyIDIuMDg2MzhMNy4wNTAxMiA1LjUwMDIzQzcuMDUwMTIgNS43NDg3NiA3LjI1MTU5IDUuOTUwMjMgNy41MDAxMiA1Ljk1MDIzQzcuNzQ4NjUgNS45NTAyMyA3Ljk1MDEyIDUuNzQ4NzYgNy45NTAxMiA1LjUwMDIzTDcuOTUwMTIgMi4wODYzOEw5LjE4MTkyIDMuMzE4MTlDOS4zNTc2NiAzLjQ5MzkyIDkuNjQyNTggMy40OTM5MiA5LjgxODMyIDMuMzE4MTlDOS45OTQwNiAzLjE0MjQ1IDkuOTk0MDYgMi44NTc1MyA5LjgxODMyIDIuNjgxNzlMNy44MTgzMiAwLjY4MTc5Wk03Ljk1MDEyIDEyLjkxMzZWOS41MDAyM0M3Ljk1MDEyIDkuMjUxNyA3Ljc0ODY1IDkuMDUwMjMgNy41MDAxMiA5LjA1MDIzQzcuMjUxNTkgOS4wNTAyMyA3LjA1MDEyIDkuMjUxNyA3LjA1MDEyIDkuNTAwMjNWMTIuOTEzNkw1LjgxODMyIDExLjY4MThDNS42NDI1OCAxMS41MDYxIDUuMzU3NjYgMTEuNTA2MSA1LjE4MTkyIDExLjY4MThDNS4wMDYxOSAxMS44NTc1IDUuMDA2MTkgMTIuMTQyNCA1LjE4MTkyIDEyLjMxODJMNy4xODE5MiAxNC4zMTgyQzcuMjY2MzIgMTQuNDAyNiA3LjM4MDc3IDE0LjQ1IDcuNTAwMTIgMTQuNDVDNy42MTk0NyAxNC40NSA3LjczMzkzIDE0LjQwMjYgNy44MTgzMiAxNC4zMTgyTDkuODE4MzIgMTIuMzE4MkM5Ljk5NDA2IDEyLjE0MjQgOS45OTQwNiAxMS44NTc1IDkuODE4MzIgMTEuNjgxOEM5LjY0MjU4IDExLjUwNjEgOS4zNTc2NiAxMS41MDYxIDkuMTgxOTIgMTEuNjgxOEw3Ljk1MDEyIDEyLjkxMzZaTTEuNDk5OTQgNy4wMDAxN0MxLjIyMzggNy4wMDAxNyAwLjk5OTkzOSA3LjIyNDAzIDAuOTk5OTM5IDcuNTAwMTdDMC45OTk5MzkgNy43NzYzMSAxLjIyMzggOC4wMDAxNyAxLjQ5OTk0IDguMDAwMTdMMTMuNDk5OSA4LjAwMDE3QzEzLjc3NjEgOC4wMDAxNyAxMy45OTk5IDcuNzc2MzEgMTMuOTk5OSA3LjUwMDE3QzEzLjk5OTkgNy4yMjQwMyAxMy43NzYxIDcuMDAwMTcgMTMuNDk5OSA3LjAwMDE3TDEuNDk5OTQgNy4wMDAxN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGZyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNCAxMi44NUwxIDEyLjg1TDEgMTQuMTVMMTQgMTQuMTVMMTQgMTIuODVaTTE0IDguODUwMDJMMSA4Ljg1MDAyTDEgMTAuMTVMMTQgMTAuMTVMMTQgOC44NTAwMlpNMSA0Ljg1MDAzTDE0IDQuODUwMDNMMTQgNi4xNTAwM0wxIDYuMTUwMDJMMSA0Ljg1MDAzWk0xNCAwLjg1MDAyNUwxIDAuODUwMDI1TDEgMi4xNTAwMkwxNCAyLjE1MDAyTDE0IDAuODUwMDI1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuNSA0QzAuMjIzODU4IDQgMCA0LjIyMzg2IDAgNC41VjEwLjVDMCAxMC43NzYxIDAuMjIzODU4IDExIDAuNSAxMUgxNC41QzE0Ljc3NjEgMTEgMTUgMTAuNzc2MSAxNSAxMC41VjQuNUMxNSA0LjIyMzg2IDE0Ljc3NjEgNCAxNC41IDRIMC41Wk0xIDEwVjVIMi4wNzVWNy41QzIuMDc1IDcuNzM0NzIgMi4yNjUyOCA3LjkyNSAyLjUgNy45MjVDMi43MzQ3MiA3LjkyNSAyLjkyNSA3LjczNDcyIDIuOTI1IDcuNVY1SDQuMDc1VjYuNUM0LjA3NSA2LjczNDcyIDQuMjY1MjggNi45MjUgNC41IDYuOTI1QzQuNzM0NzIgNi45MjUgNC45MjUgNi43MzQ3MiA0LjkyNSA2LjVWNUg2LjA3NVY2LjVDNi4wNzUgNi43MzQ3MiA2LjI2NTI4IDYuOTI1IDYuNSA2LjkyNUM2LjczNDcyIDYuOTI1IDYuOTI1IDYuNzM0NzIgNi45MjUgNi41VjVIOC4wNzVWNy41QzguMDc1IDcuNzM0NzIgOC4yNjUyOCA3LjkyNSA4LjUgNy45MjVDOC43MzQ3MiA3LjkyNSA4LjkyNSA3LjczNDcyIDguOTI1IDcuNVY1SDEwLjA3NVY2LjVDMTAuMDc1IDYuNzM0NzIgMTAuMjY1MyA2LjkyNSAxMC41IDYuOTI1QzEwLjczNDcgNi45MjUgMTAuOTI1IDYuNzM0NzIgMTAuOTI1IDYuNVY1SDEyLjA3NVY2LjVDMTIuMDc1IDYuNzM0NzIgMTIuMjY1MyA2LjkyNSAxMi41IDYuOTI1QzEyLjczNDcgNi45MjUgMTIuOTI1IDYuNzM0NzIgMTIuOTI1IDYuNVY1SDE0VjEwSDFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxDcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC41IDBDMC4yMjM4NTggMCAwIDAuMjIzODU4IDAgMC41VjE0LjVDMCAxNC43NzYxIDAuMjIzODU4IDE1IDAuNSAxNUg0LjVDNC43NzYxNCAxNSA1IDE0Ljc3NjEgNSAxNC41VjVIMTQuNUMxNC43NzYxIDUgMTUgNC43NzYxNCAxNSA0LjVWMC41QzE1IDAuMjIzODU4IDE0Ljc3NjEgMCAxNC41IDBIMC41Wk0xIDQuMDc1MDVMMSAxSDQuMDc1MDJDNC4wNzUwMiAxIDQuMDc1MDIgMSA0LjA3NTAyIDFMNC4wNzUwNSA0LjA3NTA3TDEgNC4wNzUwNVpNMC45OTk5OTcgNC45MjUwNUwxIDE0SDRWMTIuOTI1SDIuNzUwMDJDMi41MTUzIDEyLjkyNSAyLjMyNTAyIDEyLjczNDggMi4zMjUwMiAxMi41QzIuMzI1MDIgMTIuMjY1MyAyLjUxNTMgMTIuMDc1IDIuNzUwMDIgMTIuMDc1SDRWMTAuOTI1SDIuMjUwMDJDMi4wMTUzIDEwLjkyNSAxLjgyNTAyIDEwLjczNDcgMS44MjUwMiAxMC41QzEuODI1MDIgMTAuMjY1MyAyLjAxNTMgMTAuMDc1IDIuMjUwMDIgMTAuMDc1SDRWOC45MjUwNEwyLjc1MDAyIDguOTI1MDJDMi41MTUzIDguOTI1MDIgMi4zMjUwMiA4LjczNDc0IDIuMzI1MDIgOC41MDAwMkMyLjMyNTAzIDguMjY1MjkgMi41MTUzMSA4LjA3NTAyIDIuNzUwMDMgOC4wNzUwMkw0IDguMDc1MDRWNi45MjUwMkwyLjc0OTk5IDYuOTI1QzIuNTE1MjcgNi45MjUgMi4zMjUgNi43MzQ3MiAyLjMyNSA2LjVDMi4zMjUgNi4yNjUyOCAyLjUxNTI5IDYuMDc1IDIuNzUwMDEgNi4wNzVMNCA2LjA3NTAyVjQuOTI1MDdMMC45OTk5OTcgNC45MjUwNVpNNC45MjUwNSA0SDYuMDc1VjIuNzUwMDZDNi4wNzUgMi41MTUzNCA2LjI2NTI4IDIuMzI1MDYgNi41IDIuMzI1MDZDNi43MzQ3MiAyLjMyNTA2IDYuOTI1IDIuNTE1MzQgNi45MjUgMi43NTAwNlY0SDguMDc1MDJWMi43NTAwNUM4LjA3NTAyIDIuNTE1MzMgOC4yNjUzIDIuMzI1MDUgOC41MDAwMiAyLjMyNTA1QzguNzM0NzQgMi4zMjUwNSA4LjkyNTAyIDIuNTE1MzMgOC45MjUwMiAyLjc1MDA1VjRIMTAuMDc1MVYyLjI1MDA1QzEwLjA3NTEgMi4wMTUzMyAxMC4yNjUzIDEuODI1MDUgMTAuNTAwMSAxLjgyNTA1QzEwLjczNDggMS44MjUwNSAxMC45MjUxIDIuMDE1MzMgMTAuOTI1MSAyLjI1MDA1VjRIMTIuMDc1MVYyLjc1MDA1QzEyLjA3NTEgMi41MTUzMyAxMi4yNjU0IDIuMzI1MDUgMTIuNTAwMSAyLjMyNTA1QzEyLjczNDggMi4zMjUwNSAxMi45MjUxIDIuNTE1MzMgMTIuOTI1MSAyLjc1MDA1VjRIMTRWMUg0LjkyNTAyTDQuOTI1MDUgNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGhyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDEuNUMyIDEuNzc2MTQgMS43NzYxNCAyIDEuNSAyQzEuMjIzODYgMiAxIDEuNzc2MTQgMSAxLjVDMSAxLjIyMzg2IDEuMjIzODYgMSAxLjUgMUMxLjc3NjE0IDEgMiAxLjIyMzg2IDIgMS41Wk0yIDVMMiAxMEgxM1Y1SDJaTTIgNEMxLjQ0NzcyIDQgMSA0LjQ0NzcyIDEgNVYxMEMxIDEwLjU1MjMgMS40NDc3MiAxMSAyIDExSDEzQzEzLjU1MjMgMTEgMTQgMTAuNTUyMyAxNCAxMFY1QzE0IDQuNDQ3NzIgMTMuNTUyMyA0IDEzIDRIMlpNMS41IDE0QzEuNzc2MTQgMTQgMiAxMy43NzYxIDIgMTMuNUMyIDEzLjIyMzkgMS43NzYxNCAxMyAxLjUgMTNDMS4yMjM4NiAxMyAxIDEzLjIyMzkgMSAxMy41QzEgMTMuNzc2MSAxLjIyMzg2IDE0IDEuNSAxNFpNNCAxLjVDNCAxLjc3NjE0IDMuNzc2MTQgMiAzLjUgMkMzLjIyMzg2IDIgMyAxLjc3NjE0IDMgMS41QzMgMS4yMjM4NiAzLjIyMzg2IDEgMy41IDFDMy43NzYxNCAxIDQgMS4yMjM4NiA0IDEuNVpNMy41IDE0QzMuNzc2MTQgMTQgNCAxMy43NzYxIDQgMTMuNUM0IDEzLjIyMzkgMy43NzYxNCAxMyAzLjUgMTNDMy4yMjM4NiAxMyAzIDEzLjIyMzkgMyAxMy41QzMgMTMuNzc2MSAzLjIyMzg2IDE0IDMuNSAxNFpNNiAxLjVDNiAxLjc3NjE0IDUuNzc2MTQgMiA1LjUgMkM1LjIyMzg2IDIgNSAxLjc3NjE0IDUgMS41QzUgMS4yMjM4NiA1LjIyMzg2IDEgNS41IDFDNS43NzYxNCAxIDYgMS4yMjM4NiA2IDEuNVpNNS41IDE0QzUuNzc2MTQgMTQgNiAxMy43NzYxIDYgMTMuNUM2IDEzLjIyMzkgNS43NzYxNCAxMyA1LjUgMTNDNS4yMjM4NiAxMyA1IDEzLjIyMzkgNSAxMy41QzUgMTMuNzc2MSA1LjIyMzg2IDE0IDUuNSAxNFpNOCAxLjVDOCAxLjc3NjE0IDcuNzc2MTQgMiA3LjUgMkM3LjIyMzg2IDIgNyAxLjc3NjE0IDcgMS41QzcgMS4yMjM4NiA3LjIyMzg2IDEgNy41IDFDNy43NzYxNCAxIDggMS4yMjM4NiA4IDEuNVpNNy41IDE0QzcuNzc2MTQgMTQgOCAxMy43NzYxIDggMTMuNUM4IDEzLjIyMzkgNy43NzYxNCAxMyA3LjUgMTNDNy4yMjM4NiAxMyA3IDEzLjIyMzkgNyAxMy41QzcgMTMuNzc2MSA3LjIyMzg2IDE0IDcuNSAxNFpNMTAgMS41QzEwIDEuNzc2MTQgOS43NzYxNCAyIDkuNSAyQzkuMjIzODYgMiA5IDEuNzc2MTQgOSAxLjVDOSAxLjIyMzg2IDkuMjIzODYgMSA5LjUgMUM5Ljc3NjE0IDEgMTAgMS4yMjM4NiAxMCAxLjVaTTkuNSAxNEM5Ljc3NjE0IDE0IDEwIDEzLjc3NjEgMTAgMTMuNUMxMCAxMy4yMjM5IDkuNzc2MTQgMTMgOS41IDEzQzkuMjIzODYgMTMgOSAxMy4yMjM5IDkgMTMuNUM5IDEzLjc3NjEgOS4yMjM4NiAxNCA5LjUgMTRaTTEyIDEuNUMxMiAxLjc3NjE0IDExLjc3NjEgMiAxMS41IDJDMTEuMjIzOSAyIDExIDEuNzc2MTQgMTEgMS41QzExIDEuMjIzODYgMTEuMjIzOSAxIDExLjUgMUMxMS43NzYxIDEgMTIgMS4yMjM4NiAxMiAxLjVaTTExLjUgMTRDMTEuNzc2MSAxNCAxMiAxMy43NzYxIDEyIDEzLjVDMTIgMTMuMjIzOSAxMS43NzYxIDEzIDExLjUgMTNDMTEuMjIzOSAxMyAxMSAxMy4yMjM5IDExIDEzLjVDMTEgMTMuNzc2MSAxMS4yMjM5IDE0IDExLjUgMTRaTTE0IDEuNUMxNCAxLjc3NjE0IDEzLjc3NjEgMiAxMy41IDJDMTMuMjIzOSAyIDEzIDEuNzc2MTQgMTMgMS41QzEzIDEuMjIzODYgMTMuMjIzOSAxIDEzLjUgMUMxMy43NzYxIDEgMTQgMS4yMjM4NiAxNCAxLjVaTTEzLjUgMTRDMTMuNzc2MSAxNCAxNCAxMy43NzYxIDE0IDEzLjVDMTQgMTMuMjIzOSAxMy43NzYxIDEzIDEzLjUgMTNDMTMuMjIzOSAxMyAxMyAxMy4yMjM5IDEzIDEzLjVDMTMgMTMuNzc2MSAxMy4yMjM5IDE0IDEzLjUgMTRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx2cj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNiAzLjVDNiAyLjY3MTU3IDYuNjcxNTcgMiA3LjUgMkM4LjMyODQzIDIgOSAyLjY3MTU3IDkgMy41QzkgNC4zMjg0MyA4LjMyODQzIDUgNy41IDVDNi42NzE1NyA1IDYgNC4zMjg0MyA2IDMuNVpNOCA1Ljk0OTk5QzkuMTQxMTIgNS43MTgzNiAxMCA0LjcwOTQ4IDEwIDMuNUMxMCAyLjExOTI5IDguODgwNzEgMSA3LjUgMUM2LjExOTI5IDEgNSAyLjExOTI5IDUgMy41QzUgNC43MDk0OCA1Ljg1ODg4IDUuNzE4MzYgNyA1Ljk0OTk5VjEzLjVDNyAxMy43NzYxIDcuMjIzODYgMTQgNy41IDE0QzcuNzc2MTQgMTQgOCAxMy43NzYxIDggMTMuNVY1Ljk0OTk5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sZ3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwIDMuNUMxMCA0LjcwOTQ4IDkuMTQxMTIgNS43MTgzNiA4IDUuOTQ5OTlWMTMuNUM4IDEzLjc3NjEgNy43NzYxNCAxNCA3LjUgMTRDNy4yMjM4NiAxNCA3IDEzLjc3NjEgNyAxMy41VjUuOTQ5OTlDNS44NTg4OCA1LjcxODM2IDUgNC43MDk0OCA1IDMuNUM1IDIuMTE5MjkgNi4xMTkyOSAxIDcuNSAxQzguODgwNzEgMSAxMCAyLjExOTI5IDEwIDMuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG1yPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjg3NzA3NSA3LjQ5OTg4QzAuODc3MDc1IDMuODQyMTkgMy44NDIyMiAwLjg3NzA0NSA3LjQ5OTkxIDAuODc3MDQ1QzExLjE1NzYgMC44NzcwNDUgMTQuMTIyNyAzLjg0MjE5IDE0LjEyMjcgNy40OTk4OEMxNC4xMjI3IDExLjE1NzUgMTEuMTU3NiAxNC4xMjI3IDcuNDk5OTEgMTQuMTIyN0MzLjg0MjIyIDE0LjEyMjcgMC44NzcwNzUgMTEuMTU3NSAwLjg3NzA3NSA3LjQ5OTg4Wk03LjQ5OTkxIDEuODI3MDRDNC4zNjY4OSAxLjgyNzA0IDEuODI3MDggNC4zNjY4NiAxLjgyNzA4IDcuNDk5ODhDMS44MjcwOCAxMC42MzI5IDQuMzY2ODkgMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDMTAuNjMyOSAxMy4xNzI3IDEzLjE3MjcgMTAuNjMyOSAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyA0LjM2Njg2IDEwLjYzMjkgMS44MjcwNCA3LjQ5OTkxIDEuODI3MDRaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4wNVwiLGQ6XCJNNi43ODI5NiAxMy4zNzZDOC43MzkwNCA5Ljk1Mjg0IDguNzM5MDQgNS4wNDcxOSA2Ljc4Mjk2IDEuNjI0MDVMNy4yMTcwOCAxLjM3NTk4QzkuMjYxIDQuOTUyODMgOS4yNjEgMTAuMDQ3MiA3LjIxNzA4IDEzLjYyNEw2Ljc4Mjk2IDEzLjM3NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjFcIixkOlwiTTcuMjgyMDQgMTMuNDc3NUM5LjIzOTI5IDkuOTk1MjMgOS4yMzkyOSA1LjAwNDc1IDcuMjgyMDQgMS41MjI0OEw3LjcxNzkxIDEuMjc3NUM5Ljc2MDY3IDQuOTExOSA5Ljc2MDY3IDEwLjA4ODEgNy43MTc5MSAxMy43MjI1TDcuMjgyMDQgMTMuNDc3NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjE1XCIsZDpcIk03LjgyMDk4IDEzLjUwNjRDOS43MjUwMiA5Ljk5NTIzIDkuNzI2MzYgNS4wMTQxMSA3LjgyNDkyIDEuNTAwODRMOC4yNjQ2NSAxLjI2Mjg1QzEwLjI0NjUgNC45MjQ2NiAxMC4yNDUxIDEwLjA4NSA4LjI2MDUyIDEzLjc0NDhMNy44MjA5OCAxMy41MDY0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMlwiLGQ6XCJNOC40MTI4NCAxMy40MjlDMTAuMTk1MiA5LjkyODQyIDEwLjE5NTcgNS4wNzUzNyA4LjQxNDM1IDEuNTc0MDJMOC44NTk5OSAxLjM0NzI5QzEwLjcxMzkgNC45OTExMyAxMC43MTMzIDEwLjAxMjggOC44NTg0MSAxMy42NTU5TDguNDEyODQgMTMuNDI5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMjVcIixkOlwiTTkuMDI0NDEgMTMuMjk1NkMxMC42NTY3IDkuODM3OSAxMC42NTg2IDUuMTc3MTUgOS4wMzAwNSAxLjcxNjU2TDkuNDgyNDUgMS41MDM2NkMxMS4xNzQ1IDUuMDk5MTkgMTEuMTcyNiA5LjkxNjI5IDkuNDc2NTcgMTMuNTA5MUw5LjAyNDQxIDEzLjI5NTZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4zXCIsZDpcIk05LjY2ODA5IDEzLjA2NTVDMTEuMTA5NyA5LjY5NTcyIDExLjExMDcgNS4zMTIxIDkuNjcwODggMS45NDA5NUwxMC4xMzA3IDEuNzQ0NTdDMTEuNjI0MSA1LjI0MTIxIDExLjYyMzEgOS43NjY4MyAxMC4xMjc4IDEzLjI2MjJMOS42NjgwOSAxMy4wNjU1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMzVcIixkOlwiTTEwLjMzMSAxMi43NDU2QzExLjU1NTEgOS41MjA3MyAxMS41NTY0IDUuNDkxMDMgMTAuMzM0NyAyLjI2NDQ0TDEwLjgwMjQgMi4wODc0QzEyLjA2NzIgNS40MjgxNSAxMi4wNjU5IDkuNTgzOTQgMTAuNzk4NSAxMi45MjMxTDEwLjMzMSAxMi43NDU2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNFwiLGQ6XCJNMTEuMDE1NSAxMi4yOTg2QzExLjk5MzggOS4yOTc0NCAxMS45OTQ4IDUuNzEyOTYgMTEuMDE4NCAyLjcxMDY3TDExLjQ5MzkgMi41NTYwM0MxMi41MDMgNS42NTg5IDEyLjUwMiA5LjM1MTc4IDExLjQ5MDkgMTIuNDUzNUwxMS4wMTU1IDEyLjI5ODZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi40NVwiLGQ6XCJNMTEuNzIxNCAxMS42NjhDMTIuNDI1NCA5LjAxMzAzIDEyLjQyNjIgNS45OTY5MSAxMS43MjM3IDMuMzQxMTZMMTIuMjA3MSAzLjIxMzI5QzEyLjkzMTggNS45NTI5MiAxMi45MzEgOS4wNTcyOCAxMi4yMDQ3IDExLjc5NjFMMTEuNzIxNCAxMS42NjhaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi41XCIsZDpcIk0xMi40NDMyIDEwLjc1MkMxMi44NTI0IDguNjM3NjIgMTIuODUyMyA2LjM2MDg5IDEyLjQ0MjkgNC4yNDY2TDEyLjkzMzggNC4xNTE1NUMxMy4zNTUzIDYuMzI4NjEgMTMuMzU1NCA4LjY2OTg1IDEyLjkzNDEgMTAuODQ3TDEyLjQ0MzIgMTAuNzUyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sd3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTAuODc3MDc1IDcuNDk5ODhDMC44NzcwNzUgMy44NDIxOSAzLjg0MjIyIDAuODc3MDQ1IDcuNDk5OTEgMC44NzcwNDVDMTEuMTU3NiAwLjg3NzA0NSAxNC4xMjI3IDMuODQyMTkgMTQuMTIyNyA3LjQ5OTg4QzE0LjEyMjcgMTEuMTU3NSAxMS4xNTc2IDE0LjEyMjcgNy40OTk5MSAxNC4xMjI3QzMuODQyMjIgMTQuMTIyNyAwLjg3NzA3NSAxMS4xNTc1IDAuODc3MDc1IDcuNDk5ODhaTTcuNDk5OTEgMS44MjcwNEM0LjM2Njg5IDEuODI3MDQgMS44MjcwOCA0LjM2Njg2IDEuODI3MDggNy40OTk4OEMxLjgyNzA4IDEwLjYzMjkgNC4zNjY4OSAxMy4xNzI3IDcuNDk5OTEgMTMuMTcyN0MxMC42MzI5IDEzLjE3MjcgMTMuMTcyNyAxMC42MzI5IDEzLjE3MjcgNy40OTk4OEMxMy4xNzI3IDQuMzY2ODYgMTAuNjMyOSAxLjgyNzA0IDcuNDk5OTEgMS44MjcwNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjA1XCIsZDpcIk0xMi4xNjE5IDMuODUxODJDOC4zNTgxNyA0Ljg4OTE4IDQuODg5MzYgOC4zNTggMy44NTE5OSAxMi4xNjE3TDMuMzY5NiAxMi4wMzAxQzQuNDUzNTYgOC4wNTU2NCA4LjA1NTgxIDQuNDUzMzkgMTIuMDMwMyAzLjM2OTQzTDEyLjE2MTkgMy44NTE4MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjFcIixkOlwiTTExLjg4MDcgMy40MjcwN0M4LjAzNDQxIDQuNTA1NDIgNC41MDU2MSA4LjAzNDIyIDMuNDI3MjYgMTEuODgwNUwyLjk0NTgyIDExLjc0NTZDNC4wNzEyOSA3LjczMTIxIDcuNzMxNCA0LjA3MTEgMTEuNzQ1OCAyLjk0NTYzTDExLjg4MDcgMy40MjcwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjE1XCIsZDpcIk0xMS41MjAxIDMuMDI1NTZDNy42OTA5MiA0LjE2MTk5IDQuMTY3NzkgNy42ODMyMyAzLjAyODA1IDExLjUxMkwyLjU0ODgzIDExLjM2OTRDMy43MzY3NiA3LjM3ODY5IDcuMzg2NTkgMy43MzA3NiAxMS4zNzc4IDIuNTQ2MjNMMTEuNTIwMSAzLjAyNTU2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMlwiLGQ6XCJNMTEuMDQ2OCAyLjY2MTY5QzcuMzExMTcgMy44NzY2NCAzLjg3OTE4IDcuMzA3OSAyLjY2Mjk4IDExLjA0MzRMMi4xODc1NCAxMC44ODg2QzMuNDUzMjQgNy4wMDEwOSA3LjAwNDQ1IDMuNDUwNjIgMTAuODkyMSAyLjE4NjIxTDExLjA0NjggMi42NjE2OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjI1XCIsZDpcIk0xMC41MjAxIDIuMzIzNjVDNi45MjA5MSAzLjYxNDQ3IDMuNjIzOTEgNi45MDg3NiAyLjMyODQ1IDEwLjUwNzNMMS44NTggMTAuMzM4QzMuMjAzOTggNi41OTkwOSA2LjYxMTU1IDMuMTk0MjQgMTAuMzUxMyAxLjg1MzAxTDEwLjUyMDEgMi4zMjM2NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjNcIixkOlwiTTkuOTAyMjIgMi4wMzEyMkM2LjUwMDAzIDMuMzk0NjUgMy4zOTk2OCA2LjQ5MzY3IDIuMDMzOTkgOS44OTU1MUwxLjU2OTk4IDkuNzA5MjRDMi45ODY1MSA2LjE4MDc2IDYuMTg3MjggMi45ODEzMyA5LjcxNjIyIDEuNTY3MUw5LjkwMjIyIDIuMDMxMjJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4zNVwiLGQ6XCJNOS4yMDcyNyAxLjc4ODczQzYuMDYxMzYgMy4yMDM0OSAzLjIxMTAzIDYuMDUyMDMgMS43OTMzMSA5LjE5NzM4TDEuMzM3NDcgOC45OTE5MkMyLjgwNTM2IDUuNzM1MjggNS43NDQ4NSAyLjc5NzYgOS4wMDIyIDEuMzMyNzJMOS4yMDcyNyAxLjc4ODczWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNFwiLGQ6XCJNOC40MDcxMyAxLjYyMDg1QzUuNTkzMjMgMy4wNTExNyAzLjA1Nzk0IDUuNTg1MDkgMS42MjU0NCA4LjM5ODQ3TDEuMTc5ODcgOC4xNzE2QzIuNjYwMzYgNS4yNjM5NyA1LjI3MjMyIDIuNjUzNCA4LjE4MDU3IDEuMTc1MTNMOC40MDcxMyAxLjYyMDg1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNDVcIixkOlwiTTcuNDYyMDcgMS41Njc0N0M1LjA4Njg5IDIuOTQ2OTUgMi45NTM2MiA1LjA3OTEyIDEuNTcyNDkgNy40NTM3OUwxLjE0MDI4IDcuMjAyNDFDMi41NjUwMyA0Ljc1MjczIDQuNzYwNyAyLjU1ODE4IDcuMjEwOTYgMS4xMzUxTDcuNDYyMDcgMS41Njc0N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjVcIixkOlwiTTYuMzA0MDcgMS43MDQ4N0M0LjUxOTY0IDIuOTEwNjMgMi45MDk4MyA0LjUyMDYxIDEuNzA0MyA2LjMwNTEzTDEuMjg5OTggNi4wMjUyNEMyLjUzMTMgNC4xODc3MyA0LjE4NjczIDIuNTMyMTQgNi4wMjQxMyAxLjI5MDU5TDYuMzA0MDcgMS43MDQ4N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHlyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ5OTkxIDAuODc3MDQ1QzMuODQyMjIgMC44NzcwNDUgMC44NzcwNzUgMy44NDIxOSAwLjg3NzA3NSA3LjQ5OTg4QzAuODc3MDc1IDkuMTQ4OCAxLjQ3OTY5IDEwLjY1NyAyLjQ3NjcgMTEuODE2MkwxLjY0NjQ3IDEyLjY0NjRDMS40NTEyMSAxMi44NDE3IDEuNDUxMjEgMTMuMTU4MyAxLjY0NjQ3IDEzLjM1MzVDMS44NDE3MyAxMy41NDg4IDIuMTU4MzIgMTMuNTQ4OCAyLjM1MzU4IDEzLjM1MzVMMy4xODM4MyAxMi41MjMzQzQuMzQzMDIgMTMuNTIwMiA1Ljg1MTEgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMTEuMTU3NiAxNC4xMjI3IDE0LjEyMjcgMTEuMTU3NSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyA1Ljg1MTA3IDEzLjUyMDIgNC4zNDI5OCAxMi41MjMzIDMuMTgzOEwxMy4zNTM2IDIuMzUzNTVDMTMuNTQ4OCAyLjE1ODI5IDEzLjU0ODggMS44NDE3IDEzLjM1MzYgMS42NDY0NEMxMy4xNTgzIDEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEyLjY0NjUgMS42NDY0NEwxMS44MTYyIDIuNDc2NjdDMTAuNjU3IDEuNDc5NjYgOS4xNDg4MyAwLjg3NzA0NSA3LjQ5OTkxIDAuODc3MDQ1Wk0xMS4xNDIzIDMuMTUwNjVDMTAuMTU2OCAyLjMyNDQ5IDguODg2NDQgMS44MjcwNCA3LjQ5OTkxIDEuODI3MDRDNC4zNjY4OSAxLjgyNzA0IDEuODI3MDggNC4zNjY4NiAxLjgyNzA4IDcuNDk5ODhDMS44MjcwOCA4Ljg4NjQxIDIuMzI0NTIgMTAuMTU2OCAzLjE1MDY5IDExLjE0MjJMMTEuMTQyMyAzLjE1MDY1Wk0zLjg1NzgxIDExLjg0OTNDNC44NDMyMiAxMi42NzUzIDYuMTEzNDggMTMuMTcyNyA3LjQ5OTkxIDEzLjE3MjdDMTAuNjMyOSAxMy4xNzI3IDEzLjE3MjcgMTAuNjMyOSAxMy4xNzI3IDcuNDk5ODhDMTMuMTcyNyA2LjExMzQ1IDEyLjY3NTQgNC44NDMxOSAxMS44NDkzIDMuODU3NzhMMy44NTc4MSAxMS44NDkzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuMDVcIixkOlwiTTYuNzgyOTYgMTMuMzc2QzguNzM5MDQgOS45NTI4NCA4LjczOTA0IDUuMDQ3MTkgNi43ODI5NiAxLjYyNDA1TDcuMjE3MDggMS4zNzU5OEM5LjI2MSA0Ljk1MjgzIDkuMjYxIDEwLjA0NzIgNy4yMTcwOCAxMy42MjRMNi43ODI5NiAxMy4zNzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4xXCIsZDpcIk03LjI4MjA0IDEzLjQ3NzVDOS4yMzkyOSA5Ljk5NTIzIDkuMjM5MjkgNS4wMDQ3NSA3LjI4MjA0IDEuNTIyNDhMNy43MTc5MSAxLjI3NzVDOS43NjA2NyA0LjkxMTkgOS43NjA2NyAxMC4wODgxIDcuNzE3OTEgMTMuNzIyNUw3LjI4MjA0IDEzLjQ3NzVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4xNVwiLGQ6XCJNNy44MjA5OCAxMy41MDY0QzkuNzI1MDIgOS45OTUyMyA5LjcyNjM2IDUuMDE0MTEgNy44MjQ5MiAxLjUwMDg0TDguMjY0NjUgMS4yNjI4NUMxMC4yNDY1IDQuOTI0NjYgMTAuMjQ1MSAxMC4wODUgOC4yNjA1MiAxMy43NDQ4TDcuODIwOTggMTMuNTA2NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjJcIixkOlwiTTguNDEyODQgMTMuNDI5QzEwLjE5NTIgOS45Mjg0MiAxMC4xOTU3IDUuMDc1MzcgOC40MTQzNSAxLjU3NDAyTDguODU5OTkgMS4zNDcyOUMxMC43MTM5IDQuOTkxMTMgMTAuNzEzMyAxMC4wMTI4IDguODU4NDEgMTMuNjU1OUw4LjQxMjg0IDEzLjQyOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjI1XCIsZDpcIk05LjAyNDQxIDEzLjI5NTZDMTAuNjU2NyA5LjgzNzkgMTAuNjU4NiA1LjE3NzE1IDkuMDMwMDUgMS43MTY1Nkw5LjQ4MjQ1IDEuNTAzNjZDMTEuMTc0NSA1LjA5OTE5IDExLjE3MjYgOS45MTYyOSA5LjQ3NjU3IDEzLjUwOTFMOS4wMjQ0MSAxMy4yOTU2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuM1wiLGQ6XCJNOS42NjgwOSAxMy4wNjU1QzExLjEwOTcgOS42OTU3MiAxMS4xMTA3IDUuMzEyMSA5LjY3MDg4IDEuOTQwOTVMMTAuMTMwNyAxLjc0NDU3QzExLjYyNDEgNS4yNDEyMSAxMS42MjMxIDkuNzY2ODMgMTAuMTI3OCAxMy4yNjIyTDkuNjY4MDkgMTMuMDY1NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjM1XCIsZDpcIk0xMC4zMzEgMTIuNzQ1NkMxMS41NTUxIDkuNTIwNzMgMTEuNTU2NCA1LjQ5MTAzIDEwLjMzNDcgMi4yNjQ0NEwxMC44MDI0IDIuMDg3NEMxMi4wNjcyIDUuNDI4MTUgMTIuMDY1OSA5LjU4Mzk0IDEwLjc5ODUgMTIuOTIzMUwxMC4zMzEgMTIuNzQ1NlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjRcIixkOlwiTTExLjAxNTUgMTIuMjk4NkMxMS45OTM4IDkuMjk3NDQgMTEuOTk0OCA1LjcxMjk2IDExLjAxODQgMi43MTA2N0wxMS40OTM5IDIuNTU2MDNDMTIuNTAzIDUuNjU4OSAxMi41MDIgOS4zNTE3OCAxMS40OTA5IDEyLjQ1MzVMMTEuMDE1NSAxMi4yOTg2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNDVcIixkOlwiTTExLjcyMTQgMTEuNjY4QzEyLjQyNTQgOS4wMTMwMyAxMi40MjYyIDUuOTk2OTEgMTEuNzIzNyAzLjM0MTE2TDEyLjIwNzEgMy4yMTMyOUMxMi45MzE4IDUuOTUyOTIgMTIuOTMxIDkuMDU3MjggMTIuMjA0NyAxMS43OTYxTDExLjcyMTQgMTEuNjY4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNVwiLGQ6XCJNMTIuNDQzMiAxMC43NTJDMTIuODUyNCA4LjYzNzYyIDEyLjg1MjMgNi4zNjA4OSAxMi40NDI5IDQuMjQ2NkwxMi45MzM4IDQuMTUxNTVDMTMuMzU1MyA2LjMyODYxIDEzLjM1NTQgOC42Njk4NSAxMi45MzQxIDEwLjg0N0wxMi40NDMyIDEwLjc1MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGJyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7b3BhY2l0eTpcIi4wNVwiLGQ6XCJNMTIuMTM5OCAzLjg4NjE2QzEzLjg1NTMgNC45NDE1OSAxNSA2LjgzNyAxNSA4Ljk5OTk5QzE1IDEyLjMxMzcgMTIuMzEzNyAxNSA5LjAwMDAxIDE1QzYuODQzNSAxNSA0Ljk1Mjk1IDEzLjg2MjEgMy44OTU2OSAxMi4xNTUyTDQuMzIwNzUgMTEuODkxOUM1LjI5MDY5IDEzLjQ1NzggNy4wMjM3NSAxNC41IDkuMDAwMDEgMTQuNUMxMi4wMzc1IDE0LjUgMTQuNSAxMi4wMzc1IDE0LjUgOC45OTk5OUMxNC41IDcuMDE3OCAxMy40NTE2IDUuMjgwMjYgMTEuODc3OCA0LjMxMjAyTDEyLjEzOTggMy44ODYxNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjJcIixkOlwiTTEyLjg1MSA1LjA3MzJDMTMuODY4NCA2LjA3MTA1IDE0LjUgNy40NjE5OCAxNC41IDguOTk5OTlDMTQuNSAxMi4wMzc1IDEyLjAzNzYgMTQuNSA5LjAwMDAyIDE0LjVDNy40NjIxNCAxNC41IDYuMDcxMzEgMTMuODY4NSA1LjA3MzQ4IDEyLjg1MTJMNS40MzA0MiAxMi41MDExQzYuMzM4MDkgMTMuNDI2NCA3LjYwMTg1IDE0IDkuMDAwMDIgMTRDMTEuNzYxNCAxNCAxNCAxMS43NjE0IDE0IDguOTk5OTlDMTQgNy42MDE3IDEzLjQyNjQgNi4zMzc4NSAxMi41MDA5IDUuNDMwMTdMMTIuODUxIDUuMDczMlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjM1XCIsZDpcIk0xMy4zMDIxIDYuNDUwNzFDMTMuNzQ1NSA3LjE5NzM3IDE0IDguMDY5MzQgMTQgOUMxNCAxMS43NjE0IDExLjc2MTQgMTQgOS4wMDAwMSAxNEM4LjA0ODY3IDE0IDcuMTU4NjcgMTMuNzM0MSA2LjQwMTE4IDEzLjI3MjNMNi42NjE0MSAxMi44NDU0QzcuMzQyNzQgMTMuMjYwNyA4LjE0MzA1IDEzLjUgOS4wMDAwMSAxMy41QzExLjQ4NTMgMTMuNSAxMy41IDExLjQ4NTMgMTMuNSA5QzEzLjUgOC4xNjE2NCAxMy4yNzEgNy4zNzc1MyAxMi44NzIyIDYuNzA1OThMMTMuMzAyMSA2LjQ1MDcxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNVwiLGQ6XCJNMTMuMzc0NCA3Ljk0MDIxQzEzLjQ1NjYgOC4yODAzIDEzLjUgOC42MzUyNCAxMy41IDlDMTMuNSAxMS40ODUzIDExLjQ4NTMgMTMuNSA5LjAwMDAyIDEzLjVDOC42MTEwMyAxMy41IDguMjMzMjEgMTMuNDUwNiA3Ljg3MjY3IDEzLjM1NzZMNy45OTc1OCAxMi44NzM0QzguMzE3NjcgMTIuOTU2IDguNjUzNTIgMTMgOS4wMDAwMiAxM0MxMS4yMDkxIDEzIDEzIDExLjIwOTEgMTMgOUMxMyA4LjY3NTA3IDEyLjk2MTMgOC4zNTk1MiAxMi44ODg0IDguMDU3NTZMMTMuMzc0NCA3Ljk0MDIxWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse29wYWNpdHk6XCIuNjVcIixkOlwiTTEyLjkxNTUgOS44MjEzMkMxMi41ODk4IDExLjM4MTMgMTEuMzU2MiAxMi42MDcyIDkuNzkyMDMgMTIuOTIxNUw5LjY5MzUzIDEyLjQzMTNDMTEuMDYxMyAxMi4xNTY1IDEyLjE0MTMgMTEuMDgzMyAxMi40MjYxIDkuNzE5MTNMMTIuOTE1NSA5LjgyMTMyWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS4yNzcxIDcuNTAyNTJDMS4yNzcxIDQuMDY0NTUgNC4wNjQxMyAxLjI3NzUzIDcuNTAyMDkgMS4yNzc1M0MxMC45NCAxLjI3NzUzIDEzLjcyNzEgNC4wNjQ1NSAxMy43MjcxIDcuNTAyNTJDMTMuNzI3MSAxMC45NDA1IDEwLjk0IDEzLjcyNzUgNy41MDIwOSAxMy43Mjc1QzQuMDY0MTIgMTMuNzI3NSAxLjI3NzEgMTAuOTQwNSAxLjI3NzEgNy41MDI1MlpNNy41MDIwOSAyLjIyNzUyQzQuNTg4OCAyLjIyNzUyIDIuMjI3MSA0LjU4OTIyIDIuMjI3MSA3LjUwMjUyQzIuMjI3MSAxMC40MTU4IDQuNTg4OCAxMi43Nzc1IDcuNTAyMDkgMTIuNzc3NUMxMC40MTU0IDEyLjc3NzUgMTIuNzc3MSAxMC40MTU4IDEyLjc3NzEgNy41MDI1MkMxMi43NzcxIDQuNTg5MjIgMTAuNDE1NCAyLjIyNzUyIDcuNTAyMDkgMi4yMjc1MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHhyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01IDcuNTAwMDNDNSA4LjMyODQ1IDQuMzI4NDMgOS4wMDAwMyAzLjUgOS4wMDAwM0MyLjY3MTU3IDkuMDAwMDMgMiA4LjMyODQ1IDIgNy41MDAwM0MyIDYuNjcxNiAyLjY3MTU3IDYuMDAwMDMgMy41IDYuMDAwMDNDNC4zMjg0MyA2LjAwMDAzIDUgNi42NzE2IDUgNy41MDAwM1pNNS43MTMxMyA4LjY2Mzg4QzUuMjk0NDUgOS40NTgzOCA0LjQ2MDQ4IDEwIDMuNSAxMEMyLjExOTI5IDEwIDEgOC44ODA3NCAxIDcuNTAwMDNDMSA2LjExOTMxIDIuMTE5MjkgNS4wMDAwMyAzLjUgNS4wMDAwM0M0LjQ2MDQ4IDUuMDAwMDMgNS4yOTQ0NSA1LjU0MTY3IDUuNzEzMTMgNi4zMzYxNkw5LjEwNDI0IDQuMjE2NzFDOS4wMzY0MyAzLjk4OTY4IDkgMy43NDkxMSA5IDMuNTAwMDNDOSAyLjExOTMyIDEwLjExOTMgMS4wMDAwMyAxMS41IDEuMDAwMDNDMTIuODgwNyAxLjAwMDAzIDE0IDIuMTE5MzIgMTQgMy41MDAwM0MxNCA0Ljg4MDc0IDEyLjg4MDcgNi4wMDAwMyAxMS41IDYuMDAwMDNDMTAuNjkxNSA2LjAwMDAzIDkuOTcyNjQgNS42MTYyNCA5LjUxNTY2IDUuMDIwOUw1Ljk4NTMgNy4yMjczOEM1Ljk5NTAyIDcuMzE2OTIgNiA3LjQwNzg5IDYgNy41MDAwM0M2IDcuNTkyMTYgNS45OTUwMiA3LjY4MzEyIDUuOTg1MyA3Ljc3MjY3TDkuNTE1NjcgOS45NzkxNUM5Ljk3MjY1IDkuMzgzODIgMTAuNjkxNSA5LjAwMDAzIDExLjUgOS4wMDAwM0MxMi44ODA3IDkuMDAwMDMgMTQgMTAuMTE5MyAxNCAxMS41QzE0IDEyLjg4MDcgMTIuODgwNyAxNCAxMS41IDE0QzEwLjExOTMgMTQgOSAxMi44ODA3IDkgMTEuNUM5IDExLjI1MDkgOS4wMzY0MyAxMS4wMTA0IDkuMTA0MjUgMTAuNzgzM0w1LjcxMzEzIDguNjYzODhaTTExLjUgNS4wMDAwM0MxMi4zMjg0IDUuMDAwMDMgMTMgNC4zMjg0NiAxMyAzLjUwMDAzQzEzIDIuNjcxNiAxMi4zMjg0IDIuMDAwMDMgMTEuNSAyLjAwMDAzQzEwLjY3MTYgMi4wMDAwMyAxMCAyLjY3MTYgMTAgMy41MDAwM0MxMCA0LjMyODQ2IDEwLjY3MTYgNS4wMDAwMyAxMS41IDUuMDAwMDNaTTEzIDExLjVDMTMgMTIuMzI4NSAxMi4zMjg0IDEzIDExLjUgMTNDMTAuNjcxNiAxMyAxMCAxMi4zMjg1IDEwIDExLjVDMTAgMTAuNjcxNiAxMC42NzE2IDEwIDExLjUgMTBDMTIuMzI4NCAxMCAxMyAxMC42NzE2IDEzIDExLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxPcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy41IDUuMDAwMDZDMy4yMjM4NiA1LjAwMDA2IDMgNS4yMjM5MiAzIDUuNTAwMDZMMyAxMS41MDAxQzMgMTEuNzc2MiAzLjIyMzg2IDEyLjAwMDEgMy41IDEyLjAwMDFMMTEuNSAxMi4wMDAxQzExLjc3NjEgMTIuMDAwMSAxMiAxMS43NzYyIDEyIDExLjUwMDFMMTIgNS41MDAwNkMxMiA1LjIyMzkyIDExLjc3NjEgNS4wMDAwNiAxMS41IDUuMDAwMDZMMTAuMjUgNS4wMDAwNkM5Ljk3Mzg2IDUuMDAwMDYgOS43NSA0Ljc3NjIgOS43NSA0LjUwMDA2QzkuNzUgNC4yMjM5MiA5Ljk3Mzg2IDQuMDAwMDYgMTAuMjUgNC4wMDAwNkwxMS41IDQuMDAwMDZDMTIuMzI4NCA0LjAwMDA2IDEzIDQuNjcxNjMgMTMgNS41MDAwNkwxMyAxMS41MDAxQzEzIDEyLjMyODUgMTIuMzI4NCAxMy4wMDAxIDExLjUgMTMuMDAwMUwzLjUgMTMuMDAwMUMyLjY3MTU3IDEzLjAwMDEgMiAxMi4zMjg1IDIgMTEuNTAwMUwyIDUuNTAwMDZDMiA0LjY3MTYzIDIuNjcxNTcgNC4wMDAwNiAzLjUgNC4wMDAwNkw0Ljc1IDQuMDAwMDZDNS4wMjYxNCA0LjAwMDA2IDUuMjUgNC4yMjM5MiA1LjI1IDQuNTAwMDZDNS4yNSA0Ljc3NjIgNS4wMjYxNCA1LjAwMDA2IDQuNzUgNS4wMDAwNkwzLjUgNS4wMDAwNlpNNyAxLjYzNjRMNS41NjgyIDMuMDY4MkM1LjM5MjQ2IDMuMjQzOTMgNS4xMDc1NCAzLjI0MzkzIDQuOTMxOCAzLjA2ODJDNC43NTYwNyAyLjg5MjQ2IDQuNzU2MDcgMi42MDc1NCA0LjkzMTggMi40MzE4TDcuMTgxOCAwLjE4MTgwMkM3LjI2NjE5IDAuMDk3NDEgNy4zODA2NSAwLjA0OTk5OSA3LjUgMC4wNDk5OTlDNy42MTkzNSAwLjA0OTk5OSA3LjczMzgxIDAuMDk3NDEgNy44MTgyIDAuMTgxODAyTDEwLjA2ODIgMi40MzE4QzEwLjI0MzkgMi42MDc1NCAxMC4yNDM5IDIuODkyNDYgMTAuMDY4MiAzLjA2ODJDOS44OTI0NiAzLjI0MzkzIDkuNjA3NTQgMy4yNDM5MyA5LjQzMTggMy4wNjgyTDggMS42MzY0TDggOC41QzggOC43NzYxNCA3Ljc3NjE0IDkgNy41IDlDNy4yMjM4NiA5IDcgOC43NzYxNCA3IDguNUw3IDEuNjM2NFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LExyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMi4zNTM2IDEuMTQ2NDVDMTIuMTU4MyAwLjk1MTE4NCAxMS44NDE3IDAuOTUxMTg0IDExLjY0NjQgMS4xNDY0NUMxMS40NTEyIDEuMzQxNzEgMTEuNDUxMiAxLjY1ODI5IDExLjY0NjQgMS44NTM1NUwxMi43OTI5IDNIMTJDMTAuNzAzNyAzIDkuNzExMTEgMy41ODQyMyA4Ljg3MjQ4IDQuMzg5MzFDOC4yMDA2NSA1LjAzNDI3IDcuNTkzNDkgNS44NTY4NCA2Ljk5NDYxIDYuNjY4MkM2Ljg2Mjg3IDYuODQ2NjggNi43MzE1NCA3LjAyNDYyIDYuNiA3LjJDNS4xMDg3NCA5LjE4ODM1IDMuNDkwMzcgMTEgMC41IDExQzAuMjIzODU4IDExIDAgMTEuMjIzOSAwIDExLjVDMCAxMS43NzYxIDAuMjIzODU4IDEyIDAuNSAxMkM0LjAwOTYzIDEyIDUuODkxMjYgOS44MTE2NSA3LjQgNy44QzcuNTQzNjcgNy42MDg0NSA3LjY4MzIgNy40MTk2MiA3LjgxOTk2IDcuMjM0NTRMNy44MjAwNSA3LjIzNDQzTDcuODIwMDYgNy4yMzQ0MUM4LjQxNjc0IDYuNDI2OTUgOC45NjA2OSA1LjY5MDg1IDkuNTY1MDIgNS4xMTA2OUMxMC4yODg5IDQuNDE1NzcgMTEuMDQ2MyA0IDEyIDRIMTIuNzkyOUwxMS42NDY0IDUuMTQ2NDVDMTEuNDUxMiA1LjM0MTcxIDExLjQ1MTIgNS42NTgyOSAxMS42NDY0IDUuODUzNTVDMTEuODQxNyA2LjA0ODgyIDEyLjE1ODMgNi4wNDg4MiAxMi4zNTM2IDUuODUzNTVMMTQuMzUzNiAzLjg1MzU1QzE0LjU0ODggMy42NTgyOSAxNC41NDg4IDMuMzQxNzEgMTQuMzUzNiAzLjE0NjQ1TDEyLjM1MzYgMS4xNDY0NVpNMC41IDNDMy4zNTI3OCAzIDUuMTI5OTIgNC40NDU4OCA2LjUwNTQ4IDYuMDY3NDZMNi4zNzYyIDYuMjQyNjZDNi4yNDgzIDYuNDE2MSA2LjEyMjkzIDYuNTg2MDkgNiA2Ljc1QzUuOTYzOTcgNi43OTgwNCA1LjkyNzk4IDYuODQ1ODEgNS44OTIgNi44OTMzMUM0LjU3MzQ4IDUuMjkzMDYgMy4wMjYzNyA0IDAuNSA0QzAuMjIzODU4IDQgMCAzLjc3NjE0IDAgMy41QzAgMy4yMjM4NiAwLjIyMzg1OCAzIDAuNSAzWk04Ljg3MjQ4IDEwLjYxMDdDOC4zNzI4NCAxMC4xMzEgNy45MDg5NyA5LjU1MzE0IDcuNDU3NjcgOC45NTQ2OEM3LjY0Njg4IDguNzE2OTMgNy44MjcwNCA4LjQ4MDYxIDggOC4yNUw4LjA4OTg3IDguMTI5ODdDOC41ODQxMiA4Ljc5NDAyIDkuMDUyODggOS4zOTc2NiA5LjU2NTAyIDkuODg5MzFDMTAuMjg4OSAxMC41ODQyIDExLjA0NjMgMTEgMTIgMTFIMTIuNzkyOUwxMS42NDY0IDkuODUzNTVDMTEuNDUxMiA5LjY1ODI5IDExLjQ1MTIgOS4zNDE3MSAxMS42NDY0IDkuMTQ2NDVDMTEuODQxNyA4Ljk1MTE4IDEyLjE1ODMgOC45NTExOCAxMi4zNTM2IDkuMTQ2NDVMMTQuMzUzNiAxMS4xNDY0QzE0LjU0ODggMTEuMzQxNyAxNC41NDg4IDExLjY1ODMgMTQuMzUzNiAxMS44NTM2TDEyLjM1MzYgMTMuODUzNkMxMi4xNTgzIDE0LjA0ODggMTEuODQxNyAxNC4wNDg4IDExLjY0NjQgMTMuODUzNkMxMS40NTEyIDEzLjY1ODMgMTEuNDUxMiAxMy4zNDE3IDExLjY0NjQgMTMuMTQ2NEwxMi43OTI5IDEySDEyQzEwLjcwMzcgMTIgOS43MTExMSAxMS40MTU4IDguODcyNDggMTAuNjEwN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LF9yPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMS41IDMuMDQ5OTlDMTEuNzQ4NSAzLjA0OTk5IDExLjk1IDMuMjUxNDYgMTEuOTUgMy40OTk5OVY3LjQ5OTk5QzExLjk1IDcuNzQ4NTIgMTEuNzQ4NSA3Ljk0OTk5IDExLjUgNy45NDk5OUMxMS4yNTE1IDcuOTQ5OTkgMTEuMDUgNy43NDg1MiAxMS4wNSA3LjQ5OTk5VjQuNTg2MzlMNC41ODYzOCAxMS4wNUg3LjQ5OTk5QzcuNzQ4NTIgMTEuMDUgNy45NDk5OSAxMS4yNTE1IDcuOTQ5OTkgMTEuNUM3Ljk0OTk5IDExLjc0ODUgNy43NDg1MiAxMS45NSA3LjQ5OTk5IDExLjk1TDMuNDk5OTkgMTEuOTVDMy4zODA2NCAxMS45NSAzLjI2NjE4IDExLjkwMjYgMy4xODE3OSAxMS44MTgyQzMuMDk3NCAxMS43MzM4IDMuMDQ5OTkgMTEuNjE5MyAzLjA0OTk5IDExLjVMMy4wNDk5OSA3LjQ5OTk5QzMuMDQ5OTkgNy4yNTE0NiAzLjI1MTQ2IDcuMDQ5OTkgMy40OTk5OSA3LjA0OTk5QzMuNzQ4NTIgNy4wNDk5OSAzLjk0OTk5IDcuMjUxNDYgMy45NDk5OSA3LjQ5OTk5TDMuOTQ5OTkgMTAuNDEzNkwxMC40MTM2IDMuOTQ5OTlMNy40OTk5OSAzLjk0OTk5QzcuMjUxNDYgMy45NDk5OSA3LjA0OTk5IDMuNzQ4NTIgNy4wNDk5OSAzLjQ5OTk5QzcuMDQ5OTkgMy4yNTE0NiA3LjI1MTQ2IDMuMDQ5OTkgNy40OTk5OSAzLjA0OTk5TDExLjUgMy4wNDk5OVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE1yPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUzNzMxIDAuODI2ODczQzcuNTEyNSAwLjgyNDM5MiA3LjQ4NzUgMC44MjQzOTIgNy40NjI2OSAwLjgyNjg3M0wzLjk2MjY5IDEuMTc2ODdDMy44NTY3MiAxLjE4NzQ3IDMuNzYwMjUgMS4yNDI2MiAzLjY5NzM2IDEuMzI4NTdMMC42OTk3NzEgNS40MjUyOEMwLjY1NDA0NiA1LjQ4NjI3IDAuNjI2NDcgNS41NjE2NSAwLjYyNTA1NyA1LjY0MzRDMC42MjUwMTkgNS42NDU2IDAuNjI1IDUuNjQ3ODEgMC42MjUgNS42NTAwMUMwLjYyNSA1LjY1MDUyIDAuNjI1MDAxIDUuNjUxMDMgMC42MjUwMDMgNS42NTE1M0MwLjYyNTM2MyA1Ljc0MjM3IDAuNjU4MDIxIDUuODI1NTkgMC43MTIwODcgNS44OTAzTDcuMjEwNDIgMTMuNzg4M0M3LjI4MTY1IDEzLjg3NDkgNy4zODc4OSAxMy45MjUgNy41IDEzLjkyNUM3LjYxMjExIDEzLjkyNSA3LjcxODM1IDEzLjg3NDkgNy43ODk1OCAxMy43ODgzTDE0LjI4NzkgNS44OTAzMUMxNC4zNDIgNS44MjU2IDE0LjM3NDYgNS43NDIzNyAxNC4zNzUgNS42NTE1M0MxNC4zNzUgNS42NTEwMyAxNC4zNzUgNS42NTA1MiAxNC4zNzUgNS42NTAwMUMxNC4zNzUgNS42NDg0OSAxNC4zNzUgNS42NDY5NyAxNC4zNzUgNS42NDU0NUMxNC4zNzQ5IDUuNjM5NjMgMTQuMzc0NyA1LjYzMzgyIDE0LjM3NDQgNS42MjgwMUMxNC4zNyA1LjU1MjE5IDE0LjM0MzEgNS40ODI0MiAxNC4zMDAyIDUuNDI1MjdMMTEuMzAyNiAxLjMyODU3QzExLjIzOTcgMS4yNDI2MiAxMS4xNDMzIDEuMTg3NDcgMTEuMDM3MyAxLjE3Njg3TDcuNTM3MzEgMC44MjY4NzNaTTEwLjkyNSA1LjI3NTAxVjUuMjUyMzZMMTAuOTIyMyA1LjI3NTAxSDEwLjkyNVpNMTAuOTM0MiA1LjE3NDk4SDEzLjE4NzdMMTEuMjQ5NSAyLjUyNjFMMTAuOTM0MiA1LjE3NDk4Wk0xMC41NzA3IDEuODgzOTVMOC4wNDQzMiAxLjYzMTMxTDEwLjE3NDcgNS4yMTAzNEwxMC41NzA3IDEuODgzOTVaTTYuOTU1NjggMS42MzEzMUw0LjQyOTMxIDEuODgzOTVMNC44MjUzMSA1LjIxMDM0TDYuOTU1NjggMS42MzEzMVpNMy43NTA0NiAyLjUyNjFMMS44MTIyNiA1LjE3NDk4SDQuMDY1OEwzLjc1MDQ2IDIuNTI2MVpNMS43OTQxNiA2LjAyNTAxTDYuNzU4NjEgMTIuMDU4N0w0LjIyMzcxIDYuMDY2OUM0LjIxNzg3IDYuMDUzMSA0LjIxMzE0IDYuMDM5MSA0LjIwOTQ5IDYuMDI1MDFIMS43OTQxNlpNNS4xNTA1NSA2LjAyNTAxTDcuNDk5OTkgMTIuMTA4NUw5Ljg0OTQzIDYuMDI1MDFIOS43ODY4MUg1LjIxMzE5SDUuMTUwNTVaTTEwLjc5MDUgNi4wMjUwMUMxMC43ODY5IDYuMDM5MSAxMC43ODIxIDYuMDUzMSAxMC43NzYzIDYuMDY2OUw4LjI0MTM5IDEyLjA1ODdMMTMuMjA1OCA2LjAyNTAxSDEwLjc5MDVaTTcuNSAyLjE4MzE3TDkuMzQwMzggNS4yNzUwMUg1LjY1OTYyTDcuNSAyLjE4MzE3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sanI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuMTA4NzYgMTRMOS40NjU4MiAxSDEwLjgxNzhMNS40NjA3NCAxNEg0LjEwODc2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEwLjMwMDQgNy40OTk5MUMxMC4zMDA0IDguNDk0MyA5LjQ5NDI2IDkuMzAwNDEgOC40OTk4OCA5LjMwMDQxQzcuNTA1NDkgOS4zMDA0MSA2LjY5OTM4IDguNDk0MyA2LjY5OTM4IDcuNDk5OTFDNi42OTkzOCA2LjUwNTUzIDcuNTA1NDkgNS42OTk0MiA4LjQ5OTg4IDUuNjk5NDJDOS40OTQyNiA1LjY5OTQyIDEwLjMwMDQgNi41MDU1MyAxMC4zMDA0IDcuNDk5OTFaTTExLjIwNSA4QzEwLjk2OTkgOS4yODAyOSA5Ljg0ODE2IDEwLjI1MDQgOC40OTk4OCAxMC4yNTA0QzcuMTUxNiAxMC4yNTA0IDYuMDI5OSA5LjI4MDI5IDUuNzk0NzMgOEgwLjVDMC4yMjM4NTggOCAwIDcuNzc2MTQgMCA3LjVDMCA3LjIyMzg2IDAuMjIzODU4IDcgMC41IDdINS43OTQ3QzYuMDI5OCA1LjcxOTYyIDcuMTUxNTQgNC43NDk0MiA4LjQ5OTg4IDQuNzQ5NDJDOS44NDgyMiA0Ljc0OTQyIDEwLjk2OTkgNS43MTk2MiAxMS4yMDUxIDdIMTQuNUMxNC43NzYxIDcgMTUgNy4yMjM4NiAxNSA3LjVDMTUgNy43NzYxNCAxNC43NzYxIDggMTQuNSA4SDExLjIwNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFNyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNC40OTk5IDAuOTk5OTk0QzE0LjIyMzcgMC45OTk5OTQgMTMuOTk5OSAxLjIyMzg1IDEzLjk5OTkgMS40OTk5OUwxMy45OTk5IDUuOTk5OTVMOS45OTk5MiA1Ljk5OTk1QzkuNDQ3NjQgNS45OTk5NSA4Ljk5OTkzIDYuNDQ3NjYgOC45OTk5MyA2Ljk5OTk0TDguOTk5OTMgNy45OTk5NEM4Ljk5OTkzIDguNTUyMjIgOS40NDc2NCA4Ljk5OTkzIDkuOTk5OTIgOC45OTk5M0wxMy45OTk5IDguOTk5OTNMMTMuOTk5OSAxMy40OTk5QzEzLjk5OTkgMTMuNzc2IDE0LjIyMzcgMTMuOTk5OSAxNC40OTk5IDEzLjk5OTlDMTQuNzc2IDEzLjk5OTkgMTQuOTk5OSAxMy43NzYgMTQuOTk5OSAxMy40OTk5TDE0Ljk5OTkgMS40OTk5OUMxNC45OTk5IDEuMjIzODUgMTQuNzc2IDAuOTk5OTk0IDE0LjQ5OTkgMC45OTk5OTRaTTQuOTk5OTYgNS45OTk5NUwwLjk5OTk5MiA1Ljk5OTk1TDAuOTk5OTkyIDEuNDk5OTlDMC45OTk5OTIgMS4yMjM4NSAwLjc3NjEzNiAwLjk5OTk5NCAwLjQ5OTk5NiAwLjk5OTk5NEMwLjIyMzg1NiAwLjk5OTk5NCAtOS43ODUyZS0wOSAxLjIyMzg1IC0yLjE4NTU3ZS0wOCAxLjQ5OTk5TDQuMDcyNzllLTA3IDEzLjQ5OTlDMy45NTIwOGUtMDcgMTMuNzc2IDAuMjIzODU1IDEzLjk5OTkgMC40OTk5OTYgMTMuOTk5OUMwLjc3NjEzNiAxMy45OTk5IDAuOTk5OTkyIDEzLjc3NiAwLjk5OTk5MiAxMy40OTk5TDAuOTk5OTkyIDguOTk5OTNMNC45OTk5NiA4Ljk5OTkzQzUuNTUyMjQgOC45OTk5MyA1Ljk5OTk1IDguNTUyMjIgNS45OTk5NSA3Ljk5OTkzTDUuOTk5OTUgNi45OTk5NEM1Ljk5OTk1IDYuNDQ3NjYgNS41NTIyNCA1Ljk5OTk1IDQuOTk5OTYgNS45OTk5NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFByPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjk5OTg3OCAwLjVDMC45OTk4NzggMC4yMjM4NTggMS4yMjM3NCAwIDEuNDk5ODggMEgxMy40OTk5QzEzLjc3NiAwIDEzLjk5OTkgMC4yMjM4NTggMTMuOTk5OSAwLjVDMTMuOTk5OSAwLjc3NjE0MiAxMy43NzYgMSAxMy40OTk5IDFMOSAxVjVDOSA1LjU1MjI4IDguNTUyMjggNiA4IDZIN0M2LjQ0NzcyIDYgNiA1LjU1MjI4IDYgNVYxSDEuNDk5ODhDMS4yMjM3NCAxIDAuOTk5ODc4IDAuNzc2MTQyIDAuOTk5ODc4IDAuNVpNNyA5QzYuNDQ3NzIgOSA2IDkuNDQ3NzEgNiAxMFYxNEgxLjQ5OTg4QzEuMjIzNzQgMTQgMC45OTk4NzggMTQuMjIzOSAwLjk5OTg3OCAxNC41QzAuOTk5ODc4IDE0Ljc3NjEgMS4yMjM3NCAxNSAxLjQ5OTg4IDE1SDEzLjQ5OTlDMTMuNzc2IDE1IDEzLjk5OTkgMTQuNzc2MSAxMy45OTk5IDE0LjVDMTMuOTk5OSAxNC4yMjM5IDEzLjc3NiAxNCAxMy40OTk5IDE0SDlWMTBDOSA5LjQ0NzcyIDguNTUyMjggOSA4IDlIN1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEhyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNC40OTk5IDAuOTk5OTkyQzE0LjIyMzcgMC45OTk5OTIgMTMuOTk5OSAxLjIyMzg1IDEzLjk5OTkgMS40OTk5OUwxMy45OTk5IDEzLjQ5OTlDMTMuOTk5OSAxMy43NzYgMTQuMjIzNyAxMy45OTk5IDE0LjQ5OTkgMTMuOTk5OUMxNC43NzYgMTMuOTk5OSAxNC45OTk5IDEzLjc3NiAxNC45OTk5IDEzLjQ5OTlMMTQuOTk5OSAxLjQ5OTk5QzE0Ljk5OTkgMS4yMjM4NSAxNC43NzYgMC45OTk5OTIgMTQuNDk5OSAwLjk5OTk5MlpNMC40OTk5OTYgMC45OTk5OTJDMC4yMjM4NTYgMC45OTk5OTIgLTkuNzg1MDllLTA5IDEuMjIzODUgLTIuMTg1NTZlLTA4IDEuNDk5OTlMNC4wNzI3OWUtMDcgMTMuNDk5OUMzLjk1MjA4ZS0wNyAxMy43NzYgMC4yMjM4NTUgMTMuOTk5OSAwLjQ5OTk5NiAxMy45OTk5QzAuNzc2MTM2IDEzLjk5OTkgMC45OTk5OTIgMTMuNzc2IDAuOTk5OTkyIDEzLjQ5OTlMMC45OTk5OTIgMS40OTk5OUMwLjk5OTk5MiAxLjIyMzg1IDAuNzc2MTM2IDAuOTk5OTkyIDAuNDk5OTk2IDAuOTk5OTkyWk0xLjk5OTk4IDYuOTk5OTRDMS45OTk5OCA2LjQ0NzY2IDIuNDQ3NjkgNS45OTk5NSAyLjk5OTk4IDUuOTk5OTVMNS45OTk5NSA1Ljk5OTk1QzYuNTUyMjMgNS45OTk5NSA2Ljk5OTk0IDYuNDQ3NjYgNi45OTk5NCA2Ljk5OTk0TDYuOTk5OTQgNy45OTk5M0M2Ljk5OTk0IDguNTUyMjEgNi41NTIyMyA4Ljk5OTkyIDUuOTk5OTUgOC45OTk5MkwyLjk5OTk4IDguOTk5OTJDMi40NDc3IDguOTk5OTIgMS45OTk5OCA4LjU1MjIxIDEuOTk5OTggNy45OTk5M0wxLjk5OTk4IDYuOTk5OTRaTTguOTk5OTMgNS45OTk5NUM4LjQ0NzY1IDUuOTk5OTUgNy45OTk5MyA2LjQ0NzY2IDcuOTk5OTMgNi45OTk5NEw3Ljk5OTkzIDcuOTk5OTNDNy45OTk5MyA4LjU1MjIxIDguNDQ3NjUgOC45OTk5MiA4Ljk5OTkzIDguOTk5OTJMMTEuOTk5OSA4Ljk5OTkyQzEyLjU1MjIgOC45OTk5MiAxMi45OTk5IDguNTUyMjEgMTIuOTk5OSA3Ljk5OTkzTDEyLjk5OTkgNi45OTk5NEMxMi45OTk5IDYuNDQ3NjYgMTIuNTUyMiA1Ljk5OTk1IDExLjk5OTkgNS45OTk5NUw4Ljk5OTkzIDUuOTk5OTVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxrcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC45OTk4NzggMC41QzAuOTk5ODc4IDAuMjIzODU4IDEuMjIzNzQgMCAxLjQ5OTg4IDBIMTMuNDk5OUMxMy43NzYgMCAxMy45OTk5IDAuMjIzODU4IDEzLjk5OTkgMC41QzEzLjk5OTkgMC43NzYxNDIgMTMuNzc2IDEgMTMuNDk5OSAxSDEuNDk5ODhDMS4yMjM3NCAxIDAuOTk5ODc4IDAuNzc2MTQyIDAuOTk5ODc4IDAuNVpNNyAyQzYuNDQ3NzIgMiA2IDIuNDQ3NzIgNiAzVjZDNiA2LjU1MjI4IDYuNDQ3NzIgNyA3IDdIOEM4LjU1MjI4IDcgOSA2LjU1MjI4IDkgNlYzQzkgMi40NDc3MiA4LjU1MjI4IDIgOCAySDdaTTcgOEM2LjQ0NzcyIDggNiA4LjQ0NzcxIDYgOVYxMkM2IDEyLjU1MjMgNi40NDc3MiAxMyA3IDEzSDhDOC41NTIyOCAxMyA5IDEyLjU1MjMgOSAxMlY5QzkgOC40NDc3MiA4LjU1MjI4IDggOCA4SDdaTTEuNDk5ODggMTRDMS4yMjM3NCAxNCAwLjk5OTg3OCAxNC4yMjM5IDAuOTk5ODc4IDE0LjVDMC45OTk4NzggMTQuNzc2MSAxLjIyMzc0IDE1IDEuNDk5ODggMTVIMTMuNDk5OUMxMy43NzYgMTUgMTMuOTk5OSAxNC43NzYxIDEzLjk5OTkgMTQuNUMxMy45OTk5IDE0LjIyMzkgMTMuNzc2IDE0IDEzLjQ5OTkgMTRIMS40OTk4OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFZyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjQ2OTY4IDEuMDUwODVDNy42NDEyMiAxLjEzNDc1IDcuNzUgMS4zMDkwNCA3Ljc1IDEuNVYxMy41QzcuNzUgMTMuNjkxIDcuNjQxMjIgMTMuODY1MyA3LjQ2OTY4IDEzLjk0OTJDNy4yOTgxMyAxNC4wMzMxIDcuMDkzNzcgMTQuMDExOSA2Ljk0MzAzIDEzLjg5NDdMMy4yMjEzIDExSDEuNUMwLjY3MTU3MSAxMSAwIDEwLjMyODQgMCA5LjVWNS41QzAgNC42NzE1OCAwLjY3MTU3MyA0IDEuNSA0SDMuMjIxM0w2Ljk0MzAzIDEuMTA1MzNDNy4wOTM3NyAwLjk4ODA4NSA3LjI5ODEzIDAuOTY2OTQ1IDcuNDY5NjggMS4wNTA4NVpNNi43NSAyLjUyMjMyTDMuNjk5ODMgNC44OTQ2OEMzLjYxMjA2IDQuOTYyOTQgMy41MDQwNSA1IDMuMzkyODYgNUgxLjVDMS4yMjM4NiA1IDEgNS4yMjM4NiAxIDUuNVY5LjVDMSA5Ljc3NjE1IDEuMjIzODYgMTAgMS41IDEwSDMuMzkyODZDMy41MDQwNSAxMCAzLjYxMjA2IDEwLjAzNzEgMy42OTk4MyAxMC4xMDUzTDYuNzUgMTIuNDc3N1YyLjUyMjMyWk0xMC4yNzg0IDMuODQ4MDRDMTAuNDYyMyAzLjcyNTY3IDEwLjcxMDYgMy43NzU1NyAxMC44MzMgMy45NTk0OUMxMi4yNTU4IDYuMDk3OTggMTIuMjU1OCA4LjkwMTk5IDEwLjgzMyAxMS4wNDA1QzEwLjcxMDYgMTEuMjI0NCAxMC40NjIzIDExLjI3NDMgMTAuMjc4NCAxMS4xNTE5QzEwLjA5NDQgMTEuMDI5NiAxMC4wNDQ1IDEwLjc4MTMgMTAuMTY2OSAxMC41OTczQzExLjQxMTEgOC43MjcyOCAxMS40MTExIDYuMjcyNjkgMTAuMTY2OSA0LjQwMjY0QzEwLjA0NDUgNC4yMTg3MSAxMC4wOTQ0IDMuOTcwNDEgMTAuMjc4NCAzLjg0ODA0Wk0xMi42Nzg1IDEuNDMwNDRDMTIuNTM1NiAxLjI2MTkgMTIuMjgzMiAxLjI0MTA0IDEyLjExNDcgMS4zODM4NkMxMS45NDYyIDEuNTI2NjcgMTEuOTI1MyAxLjc3OTA4IDEyLjA2ODEgMS45NDc2MkMxNC43NzczIDUuMTQ0ODggMTQuNzc3MyA5Ljg1NTEzIDEyLjA2ODEgMTMuMDUyNEMxMS45MjUzIDEzLjIyMDkgMTEuOTQ2MiAxMy40NzMzIDEyLjExNDcgMTMuNjE2MUMxMi4yODMyIDEzLjc1OSAxMi41MzU2IDEzLjczODEgMTIuNjc4NSAxMy41Njk2QzE1LjY0MDYgMTAuMDczOSAxNS42NDA2IDQuOTI2MTIgMTIuNjc4NSAxLjQzMDQ0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sUnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTggMS41QzggMS4zMTA2MiA3Ljg5MyAxLjEzNzQ5IDcuNzIzNjEgMS4wNTI3OUM3LjU1NDIxIDAuOTY4MDkzIDcuMzUxNTEgMC45ODYzNzEgNy4yIDEuMUwzLjMzMzMzIDRIMS41QzAuNjcxNTczIDQgMCA0LjY3MTU4IDAgNS41VjkuNUMwIDEwLjMyODQgMC42NzE1NzMgMTEgMS41IDExSDMuMzMzMzNMNy4yIDEzLjlDNy4zNTE1MSAxNC4wMTM2IDcuNTU0MjEgMTQuMDMxOSA3LjcyMzYxIDEzLjk0NzJDNy44OTMgMTMuODYyNSA4IDEzLjY4OTQgOCAxMy41VjEuNVpNMy44IDQuOUw3IDIuNVYxMi41TDMuOCAxMC4xQzMuNzEzNDUgMTAuMDM1MSAzLjYwODE5IDEwIDMuNSAxMEgxLjVDMS4yMjM4NiAxMCAxIDkuNzc2MTQgMSA5LjVWNS41QzEgNS4yMjM4NiAxLjIyMzg2IDUgMS41IDVIMy41QzMuNjA4MTkgNSAzLjcxMzQ1IDQuOTY0OTEgMy44IDQuOVpNMTAuODMzIDMuOTU5NDlDMTAuNzEwNiAzLjc3NTU3IDEwLjQ2MjMgMy43MjU2NyAxMC4yNzg0IDMuODQ4MDRDMTAuMDk0NCAzLjk3MDQxIDEwLjA0NDUgNC4yMTg3MSAxMC4xNjY5IDQuNDAyNjRDMTEuNDExMSA2LjI3MjY4IDExLjQxMTEgOC43MjcyOCAxMC4xNjY5IDEwLjU5NzNDMTAuMDQ0NSAxMC43ODEzIDEwLjA5NDQgMTEuMDI5NiAxMC4yNzg0IDExLjE1MTlDMTAuNDYyMyAxMS4yNzQzIDEwLjcxMDYgMTEuMjI0NCAxMC44MzMgMTEuMDQwNUMxMi4yNTU4IDguOTAxOTkgMTIuMjU1OCA2LjA5Nzk4IDEwLjgzMyAzLjk1OTQ5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNzIzNjEgMS4wNTI3OUM3Ljg5MyAxLjEzNzQ5IDggMS4zMTA2MiA4IDEuNVYxMy41QzggMTMuNjg5NCA3Ljg5MyAxMy44NjI1IDcuNzIzNjEgMTMuOTQ3MkM3LjU1NDIxIDE0LjAzMTkgNy4zNTE1MSAxNC4wMTM2IDcuMiAxMy45TDMuMzMzMzMgMTFIMS41QzAuNjcxNTczIDExIDAgMTAuMzI4NCAwIDkuNVY1LjVDMCA0LjY3MTU4IDAuNjcxNTczIDQgMS41IDRIMy4zMzMzM0w3LjIgMS4xQzcuMzUxNTEgMC45ODYzNzEgNy41NTQyMSAwLjk2ODA5MyA3LjcyMzYxIDEuMDUyNzlaTTcgMi41TDMuOCA0LjlDMy43MTM0NSA0Ljk2NDkxIDMuNjA4MTkgNSAzLjUgNUgxLjVDMS4yMjM4NiA1IDEgNS4yMjM4NiAxIDUuNVY5LjVDMSA5Ljc3NjE0IDEuMjIzODYgMTAgMS41IDEwSDMuNUMzLjYwODE5IDEwIDMuNzEzNDUgMTAuMDM1MSAzLjggMTAuMUw3IDEyLjVWMi41Wk0xNC44NTM2IDUuMTQ2NDVDMTUuMDQ4OCA1LjM0MTcxIDE1LjA0ODggNS42NTgyOSAxNC44NTM2IDUuODUzNTVMMTMuMjA3MSA3LjVMMTQuODUzNiA5LjE0NjQ1QzE1LjA0ODggOS4zNDE3MSAxNS4wNDg4IDkuNjU4MjkgMTQuODUzNiA5Ljg1MzU1QzE0LjY1ODMgMTAuMDQ4OCAxNC4zNDE3IDEwLjA0ODggMTQuMTQ2NCA5Ljg1MzU1TDEyLjUgOC4yMDcxMUwxMC44NTM2IDkuODUzNTVDMTAuNjU4MyAxMC4wNDg4IDEwLjM0MTcgMTAuMDQ4OCAxMC4xNDY0IDkuODUzNTVDOS45NTExOCA5LjY1ODI5IDkuOTUxMTggOS4zNDE3MSAxMC4xNDY0IDkuMTQ2NDVMMTEuNzkyOSA3LjVMMTAuMTQ2NCA1Ljg1MzU1QzkuOTUxMTggNS42NTgyOSA5Ljk1MTE4IDUuMzQxNzEgMTAuMTQ2NCA1LjE0NjQ1QzEwLjM0MTcgNC45NTExOCAxMC42NTgzIDQuOTUxMTggMTAuODUzNiA1LjE0NjQ1TDEyLjUgNi43OTI4OUwxNC4xNDY0IDUuMTQ2NDVDMTQuMzQxNyA0Ljk1MTE4IDE0LjY1ODMgNC45NTExOCAxNC44NTM2IDUuMTQ2NDVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxacj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOCAxLjVDOCAxLjMxMDYyIDcuODkzIDEuMTM3NDkgNy43MjM2MSAxLjA1Mjc5QzcuNTU0MjEgMC45NjgwOTMgNy4zNTE1MSAwLjk4NjM3MSA3LjIgMS4xTDMuMzMzMzMgNEgxLjVDMC42NzE1NzMgNCAwIDQuNjcxNTggMCA1LjVWOS41QzAgMTAuMzI4NCAwLjY3MTU3MyAxMSAxLjUgMTFIMy4zMzMzM0w3LjIgMTMuOUM3LjM1MTUxIDE0LjAxMzYgNy41NTQyMSAxNC4wMzE5IDcuNzIzNjEgMTMuOTQ3MkM3Ljg5MyAxMy44NjI1IDggMTMuNjg5NCA4IDEzLjVWMS41Wk0zLjggNC45TDcgMi41VjEyLjVMMy44IDEwLjFDMy43MTM0NSAxMC4wMzUxIDMuNjA4MTkgMTAgMy41IDEwSDEuNUMxLjIyMzg2IDEwIDEgOS43NzYxNCAxIDkuNVY1LjVDMSA1LjIyMzg2IDEuMjIzODYgNSAxLjUgNUgzLjVDMy42MDgxOSA1IDMuNzEzNDUgNC45NjQ5MSAzLjggNC45Wk0xMC4wODMgNS4wNTU3N0M5Ljk2MDY2IDQuODcxODUgOS43MTIzNSA0LjgyMTk1IDkuNTI4NDMgNC45NDQzMkM5LjM0NDUgNS4wNjY2OSA5LjI5NDYgNS4zMTQ5OSA5LjQxNjk3IDUuNDk4OTJDMTAuMjIwNyA2LjcwNjkzIDEwLjIyMDcgOC4yOTMwMyA5LjQxNjk3IDkuNTAxMDRDOS4yOTQ2IDkuNjg0OTYgOS4zNDQ1IDkuOTMzMjYgOS41Mjg0MyAxMC4wNTU2QzkuNzEyMzUgMTAuMTc4IDkuOTYwNjYgMTAuMTI4MSAxMC4wODMgOS45NDQxOEMxMS4wNjUzIDguNDY3NzMgMTEuMDY1MyA2LjUzMjIyIDEwLjA4MyA1LjA1NTc3WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sVHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEgMUgxLjVIMTMuNUgxNFYxLjVWMTMuNVYxNEgxMy41SDEuNUgxVjEzLjVWMS41VjFaTTIgMlYxM0gxM1YySDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxBcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy43NTQzMiAxLjgxOTU0QzcuNTk3NDIgMS43MjY4MiA3LjQwMjUgMS43MjY4MiA3LjI0NTU5IDEuODE5NTRMMS43NDU1OSA1LjA2OTU0QzEuNTkzMzYgNS4xNTk0OSAxLjQ5OTk2IDUuMzIzMTcgMS40OTk5NiA1LjVDMS40OTk5NiA1LjY3NjgzIDEuNTkzMzYgNS44NDA1MSAxLjc0NTU5IDUuOTMwNDZMNy4yNDU1OSA5LjE4MDQ2QzcuNDAyNSA5LjI3MzE4IDcuNTk3NDIgOS4yNzMxOCA3Ljc1NDMyIDkuMTgwNDZMMTMuMjU0MyA1LjkzMDQ2QzEzLjQwNjYgNS44NDA1MSAxMy41IDUuNjc2ODMgMTMuNSA1LjVDMTMuNSA1LjMyMzE3IDEzLjQwNjYgNS4xNTk0OSAxMy4yNTQzIDUuMDY5NTRMNy43NTQzMiAxLjgxOTU0Wk03LjQ5OTk2IDguMTY5MjNMMi45ODI4IDUuNUw3LjQ5OTk2IDIuODMwNzdMMTIuMDE3MSA1LjVMNy40OTk5NiA4LjE2OTIzWk0yLjI1NDMyIDguMzE5NTRDMi4wMTY1OCA4LjE3OTA2IDEuNzA5OTggOC4yNTc5IDEuNTY5NDkgOC40OTU2NEMxLjQyOTAxIDguNzMzMzcgMS41MDc4NSA5LjAzOTk4IDEuNzQ1NTkgOS4xODA0Nkw3LjI0NTU5IDEyLjQzMDVDNy40MDI1IDEyLjUyMzIgNy41OTc0MiAxMi41MjMyIDcuNzU0MzIgMTIuNDMwNUwxMy4yNTQzIDkuMTgwNDZDMTMuNDkyMSA5LjAzOTk4IDEzLjU3MDkgOC43MzMzNyAxMy40MzA0IDguNDk1NjRDMTMuMjg5OSA4LjI1NzkgMTIuOTgzMyA4LjE3OTA2IDEyLjc0NTYgOC4zMTk1NEw3LjQ5OTk2IDExLjQxOTJMMi4yNTQzMiA4LjMxOTU0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYuOTc5NDIgMS4yNTE3MUw2Ljk1ODUgMS4zMDE5OUw1LjU4NjYyIDQuNjAwMzlDNS41NDM0MiA0LjcwNDI2IDUuNDQ1NzMgNC43NzUyMyA1LjMzMzYgNC43ODQyMkwxLjc3MjcgNS4wNjk3TDEuNzE4NDEgNS4wNzQwNUwxLjM4Njg3IDUuMTAwNjNMMS4wODYwOCA1LjEyNDc1QzAuODIwMDg1IDUuMTQ2MDcgMC43MTIyMjggNS40NzgwMiAwLjkxNDg4OSA1LjY1MTYyTDEuMTQ0MDYgNS44NDc5M0wxLjM5NjY2IDYuMDY0MzFMMS40MzgwMiA2LjA5OTc0TDQuMTUxMDUgOC40MjM3NEM0LjIzNjQ4IDguNDk2OTIgNC4yNzM4IDguNjExNzYgNC4yNDc2OSA4LjcyMTE4TDMuNDE4ODIgMTIuMTk2TDMuNDA2MTggMTIuMjQ5TDMuMzI5MDEgMTIuNTcyNUwzLjI1ODk5IDEyLjg2NkMzLjE5NzA4IDEzLjEyNTYgMy40Nzk0NSAxMy4zMzA4IDMuNzA3MTggMTMuMTkxN0wzLjk2NDcgMTMuMDM0NEw0LjI0ODU0IDEyLjg2MUw0LjI5NTAyIDEyLjgzMjZMNy4zNDM2NSAxMC45NzA1QzcuNDM5NjUgMTAuOTExOSA3LjU2MDQgMTAuOTExOSA3LjY1NjQgMTAuOTcwNUwxMC43MDUgMTIuODMyNkwxMC43NTE1IDEyLjg2MUwxMS4wMzU0IDEzLjAzNDRMMTEuMjkyOSAxMy4xOTE3QzExLjUyMDYgMTMuMzMwOCAxMS44MDMgMTMuMTI1NiAxMS43NDExIDEyLjg2NkwxMS42NzEgMTIuNTcyNUwxMS41OTM5IDEyLjI0OUwxMS41ODEyIDEyLjE5NkwxMC43NTI0IDguNzIxMThDMTAuNzI2MyA4LjYxMTc2IDEwLjc2MzYgOC40OTY5MiAxMC44NDkgOC40MjM3NEwxMy41NjIgNi4wOTk3NEwxMy42MDM0IDYuMDY0MzFMMTMuODU2IDUuODQ3OTNMMTQuMDg1MiA1LjY1MTYyQzE0LjI4NzggNS40NzgwMiAxNC4xOCA1LjE0NjA3IDEzLjkxNCA1LjEyNDc1TDEzLjYxMzIgNS4xMDA2M0wxMy4yODE2IDUuMDc0MDVMMTMuMjI3NCA1LjA2OTdMOS42NjY0NSA0Ljc4NDIyQzkuNTU0MzIgNC43NzUyMyA5LjQ1NjYzIDQuNzA0MjYgOS40MTM0MyA0LjYwMDM5TDguMDQxNTUgMS4zMDE5OUw4LjAyMDY0IDEuMjUxNzFMNy44OTI5MSAwLjk0NDYwOUw3Ljc3NzAyIDAuNjY1OTkyQzcuNjc0NTQgMC40MTk2MDQgNy4zMjU1MSAwLjQxOTYwNCA3LjIyMzAzIDAuNjY1OTkyTDcuMTA3MTUgMC45NDQ2MDlMNi45Nzk0MiAxLjI1MTcxWk03LjUwMDAzIDIuNjAzOTdMNi41MDk5NCA0Ljk4NDQyQzYuMzIyNzMgNS40MzQ1MyA1Ljg5OTQ0IDUuNzQyMDcgNS40MTM1MSA1Ljc4MTAzTDIuODQzNjEgNS45ODcwNUw0LjgwMTYgNy42NjQyOEM1LjE3MTgzIDcuOTgxNDIgNS4zMzM1MSA4LjQ3OTAzIDUuMjIwNCA4Ljk1MzIxTDQuNjIyMjEgMTEuNDYxTDYuODIyNCAxMC4xMTcxQzcuMjM4NDIgOS44NjMwMiA3Ljc2MTY0IDkuODYzMDIgOC4xNzc2NiAxMC4xMTcxTDEwLjM3NzggMTEuNDYxTDkuNzc5NjUgOC45NTMyMUM5LjY2NjU0IDguNDc5MDMgOS44MjgyMiA3Ljk4MTQyIDEwLjE5ODQgNy42NjQyOEwxMi4xNTY0IDUuOTg3MDVMOS41ODY1NCA1Ljc4MTAzQzkuMTAwNjEgNS43NDIwNyA4LjY3NzMyIDUuNDM0NTMgOC40OTAxMSA0Ljk4NDQyTDcuNTAwMDMgMi42MDM5N1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LEJyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjIyMzAzIDAuNjY1OTkyQzcuMzI1NTEgMC40MTk2MDQgNy42NzQ1NCAwLjQxOTYwNCA3Ljc3NzAyIDAuNjY1OTkyTDkuNDEzNDMgNC42MDAzOUM5LjQ1NjYzIDQuNzA0MjYgOS41NTQzMiA0Ljc3NTIzIDkuNjY2NDUgNC43ODQyMkwxMy45MTQgNS4xMjQ3NUMxNC4xOCA1LjE0NjA3IDE0LjI4NzggNS40NzgwMiAxNC4wODUyIDUuNjUxNjJMMTAuODQ5IDguNDIzNzRDMTAuNzYzNiA4LjQ5NjkyIDEwLjcyNjMgOC42MTE3NiAxMC43NTI0IDguNzIxMThMMTEuNzQxMSAxMi44NjZDMTEuODAzIDEzLjEyNTYgMTEuNTIwNiAxMy4zMzA4IDExLjI5MjkgMTMuMTkxN0w3LjY1NjQgMTAuOTcwNUM3LjU2MDQgMTAuOTExOSA3LjQzOTY1IDEwLjkxMTkgNy4zNDM2NSAxMC45NzA1TDMuNzA3MTggMTMuMTkxN0MzLjQ3OTQ1IDEzLjMzMDggMy4xOTcwOCAxMy4xMjU2IDMuMjU4OTkgMTIuODY2TDQuMjQ3NjkgOC43MjExOEM0LjI3MzggOC42MTE3NiA0LjIzNjQ4IDguNDk2OTIgNC4xNTEwNSA4LjQyMzc0TDAuOTE0ODg5IDUuNjUxNjJDMC43MTIyMjggNS40NzgwMiAwLjgyMDA4NiA1LjE0NjA3IDEuMDg2MDggNS4xMjQ3NUw1LjMzMzYgNC43ODQyMkM1LjQ0NTczIDQuNzc1MjMgNS41NDM0MiA0LjcwNDI2IDUuNTg2NjIgNC42MDAzOUw3LjIyMzAzIDAuNjY1OTkyWlwiLGZpbGw6bn0pKX0sJHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuODQ5OTggNy40OTk5OEMxLjg0OTk4IDcuMjEzMjEgMS44NzEzNCA2LjkzMTQzIDEuOTEyNTYgNi42NTYxNUw5LjU2Mzc0IDIuMjM4NzVDOS44NjMxMSAyLjM1NjI3IDEwLjE1IDIuNDk4NjEgMTAuNDIxOSAyLjY2MzIyTDMuNzcwNjUgNi41MDMzMkMzLjczNjY5IDYuNTIxODMgMy43MDQ4MiA2LjU0NDkgMy42NzYwMiA2LjU3MjM4QzMuNTkxMSA2LjY1MzA4IDMuNTQyNDUgNi43NjI4NiAzLjUzNjgyIDYuODc2NThDMy41MzM1OSA2Ljk0MTggMy41NDQ1MSA3LjAwODMxIDMuNTcwODYgNy4wNzEzN0MzLjU4OTI3IDcuMTE1NyAzLjYxNDkgNy4xNTc0MiAzLjY0NzQ0IDcuMTk0NThDMy42NzMwNiA3LjIyMzk2IDMuNzAyIDcuMjQ5NDEgMy43MzMzNyA3LjI3MDY5TDcuMzI1MzMgOS44MzgxM0wzLjg3MjMyIDExLjgzMTdDMi42MzYwNCAxMC43OTUzIDEuODQ5OTggOS4yMzk0NCAxLjg0OTk4IDcuNDk5OThaTTguMzY4NDMgMTAuMjc1MUM4LjM3NjgyIDEwLjI3MDYgOC4zODUwOSAxMC4yNjU5IDguMzkzMjIgMTAuMjYwOEw5Ljg0MDkxIDkuNDI0OTlDOS44NDcwNiA5LjQyMTYzIDkuODUzMTQgOS40MTgxMiA5Ljg1OTE1IDkuNDE0NDZMMTEuMzEwMSA4LjU3Njc3QzExLjM2NTUgOC41NDY0OSAxMS40MTU0IDguNTA0IDExLjQ1NTQgOC40NDk5NUMxMS42MDM0IDguMjUwMzEgMTEuNTYxNiA3Ljk2ODQ4IDExLjM2MiA3LjgyMDQ2TDcuODI3NzkgNS4yMDAxN0wxMS4yMTYxIDMuMjQzOTNDMTIuNDAxMyA0LjI3OTYzIDEzLjE1IDUuODAyMzcgMTMuMTUgNy40OTk5OEMxMy4xNSA3LjgzNTQ2IDEzLjEyMDcgOC4xNjQxMSAxMy4wNjQ3IDguNDgzNTNMNS41Njg3NSAxMi44MTEzQzUuMjYxMzggMTIuNjk5NSA0Ljk2NjQ2IDEyLjU2MTggNC42ODY2MiAxMi40MDA4TDguMzY4NDMgMTAuMjc1MVpNOC4xODE0OSA5LjM0MzgzTDQuODE2NTkgNi45Mzg2OEw1LjUwOTE4IDYuNTM4ODFMOC44MDYwNCA4Ljk4MzI0TDguMTgxNDkgOS4zNDM4M1pNNi4zNTg3NSA2LjA0ODMyTDYuOTc4MjIgNS42OTA2N0wxMC4yNzUxIDguMTM1MDZMOS42NTU2IDguNDkyNzVMNi4zNTg3NSA2LjA0ODMyWk04LjMzMTggMS45MTA3OEwyLjI0MjYzIDUuNDI2MzZDMy4wNjk0MSAzLjMzMTg4IDUuMTExNjQgMS44NDk5OCA3LjQ5OTk4IDEuODQ5OThDNy43ODI1OCAxLjg0OTk4IDguMDYwMzMgMS44NzA3MiA4LjMzMTggMS45MTA3OFpNNi44NDY4NCAxMy4xMTI2QzcuMDYxMTQgMTMuMTM3MyA3LjI3OTA4IDEzLjE1IDcuNDk5OTggMTMuMTVDOS44MjQ2IDEzLjE1IDExLjgyMTMgMTEuNzQ2MSAxMi42ODg2IDkuNzM5OUw2Ljg0Njg0IDEzLjExMjZaTTcuNDk5OTggMC44NDk5NzZDMy44MjcyOCAwLjg0OTk3NiAwLjg0OTk3NiAzLjgyNzI4IDAuODQ5OTc2IDcuNDk5OThDMC44NDk5NzYgMTEuMTcyNyAzLjgyNzI4IDE0LjE1IDcuNDk5OTggMTQuMTVDMTEuMTcyNyAxNC4xNSAxNC4xNSAxMS4xNzI3IDE0LjE1IDcuNDk5OThDMTQuMTUgMy44MjcyOCAxMS4xNzI3IDAuODQ5OTc2IDcuNDk5OTggMC44NDk5NzZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxGcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMiAzQzIgMi40NDc3MiAyLjQ0NzcyIDIgMyAySDEyQzEyLjU1MjMgMiAxMyAyLjQ0NzcyIDEzIDNWMTJDMTMgMTIuNTUyMyAxMi41NTIzIDEzIDEyIDEzSDNDMi40NDc3MiAxMyAyIDEyLjU1MjMgMiAxMlYzWk0xMiAzSDNWMTJIMTJWM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LE5yPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk01LjQ5OTk4IDAuNUM1LjQ5OTk4IDAuMjIzODU4IDUuNzIzODMgMCA1Ljk5OTk4IDBINy40OTk5OEg4Ljk5OTk4QzkuMjc2MTIgMCA5LjQ5OTk4IDAuMjIzODU4IDkuNDk5OTggMC41QzkuNDk5OTggMC43NzYxNDIgOS4yNzYxMiAxIDguOTk5OTggMUg3Ljk5OTk4VjIuMTE5MjJDOS4wOTgzMiAyLjIwNDA5IDEwLjExOSAyLjU2NjIyIDEwLjk5MiAzLjEzNTcyQzExLjAxMTYgMy4xMDg1MSAxMS4wMzM2IDMuMDgyNTIgMTEuMDU4IDMuMDU4MDZMMTEuODU4IDIuMjU4MDZDMTIuMTAyMSAyLjAxMzk4IDEyLjQ5NzggMi4wMTM5OCAxMi43NDE5IDIuMjU4MDZDMTIuOTg2IDIuNTAyMTQgMTIuOTg2IDIuODk3ODYgMTIuNzQxOSAzLjE0MTk0TDExLjk2NyAzLjkxNjgyQzEzLjE1OTUgNS4wNzkyNSAxMy45IDYuNzAzMTQgMTMuOSA4LjQ5OTk4QzEzLjkgMTIuMDM0NiAxMS4wMzQ2IDE0LjkgNy40OTk5OCAxNC45QzMuOTY1MzUgMTQuOSAxLjA5OTk4IDEyLjAzNDYgMS4wOTk5OCA4LjQ5OTk4QzEuMDk5OTggNS4xMzM2MiAzLjY5OTA0IDIuMzc0MyA2Ljk5OTk4IDIuMTE5MjJWMUg1Ljk5OTk4QzUuNzIzODMgMSA1LjQ5OTk4IDAuNzc2MTQyIDUuNDk5OTggMC41Wk0yLjA5OTk4IDguNDk5OThDMi4wOTk5OCA1LjUxNzY0IDQuNTE3NjQgMy4wOTk5OCA3LjQ5OTk4IDMuMDk5OThDMTAuNDgyMyAzLjA5OTk4IDEyLjkgNS41MTc2NCAxMi45IDguNDk5OThDMTIuOSAxMS40ODIzIDEwLjQ4MjMgMTMuOSA3LjQ5OTk4IDEzLjlDNC41MTc2NCAxMy45IDIuMDk5OTggMTEuNDgyMyAyLjA5OTk4IDguNDk5OThaTTcuOTk5OTggNC41QzcuOTk5OTggNC4yMjM4NiA3Ljc3NjEyIDQgNy40OTk5OCA0QzcuMjIzODMgNCA2Ljk5OTk4IDQuMjIzODYgNi45OTk5OCA0LjVWOS41QzYuOTk5OTggOS43NzYxNCA3LjIyMzgzIDEwIDcuNDk5OTggMTBDNy43NzYxMiAxMCA3Ljk5OTk4IDkuNzc2MTQgNy45OTk5OCA5LjVWNC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0senI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTE0LjQ5OTkgMC45OTk5OTJDMTQuMjIzNyAwLjk5OTk5MiAxMy45OTk5IDEuMjIzODUgMTMuOTk5OSAxLjQ5OTk5TDEzLjk5OTkgNS45OTk5NUwwLjk5OTk5MiA1Ljk5OTk1TDAuOTk5OTkyIDEuNDk5OTlDMC45OTk5OTIgMS4yMjM4NSAwLjc3NjEzNiAwLjk5OTk5MiAwLjQ5OTk5NiAwLjk5OTk5MkMwLjIyMzg1NiAwLjk5OTk5MiAtOS43ODUwOWUtMDkgMS4yMjM4NSAtMi4xODU1NmUtMDggMS40OTk5OUw0LjA3Mjc5ZS0wNyAxMy40OTk5QzMuOTUyMDhlLTA3IDEzLjc3NiAwLjIyMzg1NSAxMy45OTk5IDAuNDk5OTk2IDEzLjk5OTlDMC43NzYxMzYgMTMuOTk5OSAwLjk5OTk5MiAxMy43NzYgMC45OTk5OTIgMTMuNDk5OUwwLjk5OTk5MiA4Ljk5OTkyTDEzLjk5OTkgOC45OTk5MkwxMy45OTk5IDEzLjQ5OTlDMTMuOTk5OSAxMy43NzYgMTQuMjIzNyAxMy45OTk5IDE0LjQ5OTkgMTMuOTk5OUMxNC43NzYgMTMuOTk5OSAxNC45OTk5IDEzLjc3NiAxNC45OTk5IDEzLjQ5OTlMMTQuOTk5OSAxLjQ5OTk5QzE0Ljk5OTkgMS4yMjM4NSAxNC43NzYgMC45OTk5OTIgMTQuNDk5OSAwLjk5OTk5MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFdyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0wLjk5OTg3OCAwLjVDMC45OTk4NzggMC4yMjM4NTggMS4yMjM3NCAwIDEuNDk5ODggMEgxMy40OTk5QzEzLjc3NiAwIDEzLjk5OTkgMC4yMjM4NTggMTMuOTk5OSAwLjVDMTMuOTk5OSAwLjc3NjE0MiAxMy43NzYgMSAxMy40OTk5IDFINkgxLjQ5OTg4QzEuMjIzNzQgMSAwLjk5OTg3OCAwLjc3NjE0MiAwLjk5OTg3OCAwLjVaTTkgMTRWMUw2IDFWMTRIMS40OTk4OEMxLjIyMzc0IDE0IDAuOTk5ODc4IDE0LjIyMzkgMC45OTk4NzggMTQuNUMwLjk5OTg3OCAxNC43NzYxIDEuMjIzNzQgMTUgMS40OTk4OCAxNUgxMy40OTk5QzEzLjc3NiAxNSAxMy45OTk5IDE0Ljc3NjEgMTMuOTk5OSAxNC41QzEzLjk5OTkgMTQuMjIzOSAxMy43NzYgMTQgMTMuNDk5OSAxNEg5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sR3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuMDAwMDMgMy4yNUM1LjAwMDAzIDIuOTczODYgNC43NzYxNyAyLjc1IDQuNTAwMDMgMi43NUM0LjIyMzg5IDIuNzUgNC4wMDAwMyAyLjk3Mzg2IDQuMDAwMDMgMy4yNVY3LjEwMDAzSDIuNDk5OThDMi4yNzkwNiA3LjEwMDAzIDIuMDk5OTggNy4yNzkxMiAyLjA5OTk4IDcuNTAwMDNDMi4wOTk5OCA3LjcyMDk0IDIuMjc5MDYgNy45MDAwMyAyLjQ5OTk4IDcuOTAwMDNINC4wMDAwM1Y4LjU1QzQuMDAwMDMgMTAuNDgzIDUuNTY3MDMgMTIuMDUgNy41MDAwMyAxMi4wNUM5LjQzMzAzIDEyLjA1IDExIDEwLjQ4MyAxMSA4LjU1VjcuOTAwMDNIMTIuNUMxMi43MjA5IDcuOTAwMDMgMTIuOSA3LjcyMDk0IDEyLjkgNy41MDAwM0MxMi45IDcuMjc5MTIgMTIuNzIwOSA3LjEwMDAzIDEyLjUgNy4xMDAwM0gxMVYzLjI1QzExIDIuOTczODYgMTAuNzc2MiAyLjc1IDEwLjUgMi43NUMxMC4yMjM5IDIuNzUgMTAgMi45NzM4NiAxMCAzLjI1VjcuMTAwMDNINS4wMDAwM1YzLjI1Wk01LjAwMDAzIDcuOTAwMDNWOC41NUM1LjAwMDAzIDkuOTMwNzEgNi4xMTkzMiAxMS4wNSA3LjUwMDAzIDExLjA1QzguODgwNzQgMTEuMDUgMTAgOS45MzA3MSAxMCA4LjU1VjcuOTAwMDNINS4wMDAwM1pcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFVyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk03LjUgMEM3Ljc3NjE0IDAgOCAwLjIyMzg1OCA4IDAuNVYyLjVDOCAyLjc3NjE0IDcuNzc2MTQgMyA3LjUgM0M3LjIyMzg2IDMgNyAyLjc3NjE0IDcgMi41VjAuNUM3IDAuMjIzODU4IDcuMjIzODYgMCA3LjUgMFpNMi4xOTY3IDIuMTk2N0MyLjM5MTk2IDIuMDAxNDQgMi43MDg1NCAyLjAwMTQ0IDIuOTAzODEgMi4xOTY3TDQuMzE4MDIgMy42MTA5MUM0LjUxMzI4IDMuODA2MTcgNC41MTMyOCA0LjEyMjc2IDQuMzE4MDIgNC4zMTgwMkM0LjEyMjc2IDQuNTEzMjggMy44MDYxNyA0LjUxMzI4IDMuNjEwOTEgNC4zMTgwMkwyLjE5NjcgMi45MDM4MUMyLjAwMTQ0IDIuNzA4NTQgMi4wMDE0NCAyLjM5MTk2IDIuMTk2NyAyLjE5NjdaTTAuNSA3QzAuMjIzODU4IDcgMCA3LjIyMzg2IDAgNy41QzAgNy43NzYxNCAwLjIyMzg1OCA4IDAuNSA4SDIuNUMyLjc3NjE0IDggMyA3Ljc3NjE0IDMgNy41QzMgNy4yMjM4NiAyLjc3NjE0IDcgMi41IDdIMC41Wk0yLjE5NjcgMTIuODAzM0MyLjAwMTQ0IDEyLjYwOCAyLjAwMTQ0IDEyLjI5MTUgMi4xOTY3IDEyLjA5NjJMMy42MTA5MSAxMC42ODJDMy44MDYxNyAxMC40ODY3IDQuMTIyNzYgMTAuNDg2NyA0LjMxODAyIDEwLjY4MkM0LjUxMzI4IDEwLjg3NzIgNC41MTMyOCAxMS4xOTM4IDQuMzE4MDIgMTEuMzg5MUwyLjkwMzgxIDEyLjgwMzNDMi43MDg1NCAxMi45OTg2IDIuMzkxOTYgMTIuOTk4NiAyLjE5NjcgMTIuODAzM1pNMTIuNSA3QzEyLjIyMzkgNyAxMiA3LjIyMzg2IDEyIDcuNUMxMiA3Ljc3NjE0IDEyLjIyMzkgOCAxMi41IDhIMTQuNUMxNC43NzYxIDggMTUgNy43NzYxNCAxNSA3LjVDMTUgNy4yMjM4NiAxNC43NzYxIDcgMTQuNSA3SDEyLjVaTTEwLjY4MiA0LjMxODAyQzEwLjQ4NjcgNC4xMjI3NiAxMC40ODY3IDMuODA2MTcgMTAuNjgyIDMuNjEwOTFMMTIuMDk2MiAyLjE5NjdDMTIuMjkxNSAyLjAwMTQ0IDEyLjYwOCAyLjAwMTQ0IDEyLjgwMzMgMi4xOTY3QzEyLjk5ODYgMi4zOTE5NiAxMi45OTg2IDIuNzA4NTQgMTIuODAzMyAyLjkwMzgxTDExLjM4OTEgNC4zMTgwMkMxMS4xOTM4IDQuNTEzMjggMTAuODc3MiA0LjUxMzI4IDEwLjY4MiA0LjMxODAyWk04IDEyLjVDOCAxMi4yMjM5IDcuNzc2MTQgMTIgNy41IDEyQzcuMjIzODYgMTIgNyAxMi4yMjM5IDcgMTIuNVYxNC41QzcgMTQuNzc2MSA3LjIyMzg2IDE1IDcuNSAxNUM3Ljc3NjE0IDE1IDggMTQuNzc2MSA4IDE0LjVWMTIuNVpNMTAuNjgyIDEwLjY4MkMxMC44NzcyIDEwLjQ4NjcgMTEuMTkzOCAxMC40ODY3IDExLjM4OTEgMTAuNjgyTDEyLjgwMzMgMTIuMDk2MkMxMi45OTg2IDEyLjI5MTUgMTIuOTk4NiAxMi42MDggMTIuODAzMyAxMi44MDMzQzEyLjYwOCAxMi45OTg2IDEyLjI5MTUgMTIuOTk4NiAxMi4wOTYyIDEyLjgwMzNMMTAuNjgyIDExLjM4OTFDMTAuNDg2NyAxMS4xOTM4IDEwLjQ4NjcgMTAuODc3MiAxMC42ODIgMTAuNjgyWk01LjUgNy41QzUuNSA2LjM5NTQzIDYuMzk1NDMgNS41IDcuNSA1LjVDOC42MDQ1NyA1LjUgOS41IDYuMzk1NDMgOS41IDcuNUM5LjUgOC42MDQ1NyA4LjYwNDU3IDkuNSA3LjUgOS41QzYuMzk1NDMgOS41IDUuNSA4LjYwNDU3IDUuNSA3LjVaTTcuNSA0LjVDNS44NDMxNSA0LjUgNC41IDUuODQzMTUgNC41IDcuNUM0LjUgOS4xNTY4NSA1Ljg0MzE1IDEwLjUgNy41IDEwLjVDOS4xNTY4NSAxMC41IDEwLjUgOS4xNTY4NSAxMC41IDcuNUMxMC41IDUuODQzMTUgOS4xNTY4NSA0LjUgNy41IDQuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHFyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMC41IDRDOC41NjcgNCA3IDUuNTY3IDcgNy41QzcgOS40MzMgOC41NjcgMTEgMTAuNSAxMUMxMi40MzMgMTEgMTQgOS40MzMgMTQgNy41QzE0IDUuNTY3IDEyLjQzMyA0IDEwLjUgNFpNNy42NzEzMyAxMUM2LjY1MTgzIDEwLjE3NSA2IDguOTEzNjMgNiA3LjVDNiA2LjA4NjM3IDYuNjUxODMgNC44MjQ5OCA3LjY3MTMzIDRINC41QzIuNTY3IDQgMSA1LjU2NyAxIDcuNUMxIDkuNDMzIDIuNTY3IDExIDQuNSAxMUg3LjY3MTMzWk0wIDcuNUMwIDUuMDE0NzIgMi4wMTQ3MiAzIDQuNSAzSDEwLjVDMTIuOTg1MyAzIDE1IDUuMDE0NzIgMTUgNy41QzE1IDkuOTg1MjggMTIuOTg1MyAxMiAxMC41IDEySDQuNUMyLjAxNDcyIDEyIDAgOS45ODUyOCAwIDcuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFlyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjkwMzIxIDcuMjk2NzdDMS45MDMyMSAxMC4zNDEgNC4xMTA0MSAxMi40MTQ3IDYuNTg4OTMgMTIuODQzOUM2Ljg3MjU1IDEyLjg5MyA3LjA2MjY2IDEzLjE2MjcgNy4wMTM1NSAxMy40NDY0QzYuOTY0NDQgMTMuNzMgNi42OTQ3MSAxMy45MjAxIDYuNDExMDkgMTMuODcxQzMuNDk5NDIgMTMuMzY2OCAwLjg2MDg0IDEwLjkxMjcgMC44NjA4NCA3LjI5Njc3QzAuODYwODM5IDUuNzYwMDkgMS41NTk5NiA0LjU1MjQ1IDIuMzc2MzkgMy42MzM3N0MyLjk2MTI0IDIuOTc1NjggMy42MzAzNCAyLjQ0MTM1IDQuMTY4NDYgMi4wMzIwMkwyLjUzMjA1IDIuMDMyMDJDMi4yNTU5MSAyLjAzMjAyIDIuMDMyMDUgMS44MDgxNiAyLjAzMjA1IDEuNTMyMDJDMi4wMzIwNSAxLjI1NTg4IDIuMjU1OTEgMS4wMzIwMiAyLjUzMjA1IDEuMDMyMDJMNS41MzIwNSAxLjAzMjAyQzUuODA4MTkgMS4wMzIwMiA2LjAzMjA1IDEuMjU1ODggNi4wMzIwNSAxLjUzMjAyTDYuMDMyMDUgNC41MzIwMkM2LjAzMjA1IDQuODA4MTYgNS44MDgxOSA1LjAzMjAyIDUuNTMyMDUgNS4wMzIwMkM1LjI1NTkxIDUuMDMyMDIgNS4wMzIwNSA0LjgwODE2IDUuMDMyMDUgNC41MzIwMkw1LjAzMjA1IDIuNjg2NDVMNS4wMzA1NCAyLjY4NzU5TDUuMDMwNDUgMi42ODc2Nkw1LjAzMDQ0IDIuNjg3NjdMNS4wMzA0MyAyLjY4NzY3QzQuNDU4OTYgMy4xMTg2OCAzLjc2MDU5IDMuNjQ1MzggMy4xNTU1NCA0LjMyNjJDMi40NDEwMiA1LjEzMDIxIDEuOTAzMjEgNi4xMDE1NCAxLjkwMzIxIDcuMjk2NzdaTTEzLjAxMDkgNy43MDMyMUMxMy4wMTA5IDQuNjkxMTUgMTAuODUwNSAyLjYyOTYgOC40MDM4NCAyLjE3MDI5QzguMTIwOTMgMi4xMTcxOCA3LjkzNDY1IDEuODQ0NzkgNy45ODc3NiAxLjU2MTg4QzguMDQwODcgMS4yNzg5OCA4LjMxMzI2IDEuMDkyNyA4LjU5NjE2IDEuMTQ1ODFDMTEuNDcwNCAxLjY4NTQxIDE0LjA1MzIgNC4xMjYwNSAxNC4wNTMyIDcuNzAzMjFDMTQuMDUzMiA5LjIzOTg4IDEzLjM1NDEgMTAuNDQ3NSAxMi41Mzc3IDExLjM2NjJDMTEuOTUyOCAxMi4wMjQzIDExLjI4MzcgMTIuNTU4NiAxMC43NDU2IDEyLjk2OEwxMi4zODIxIDEyLjk2OEMxMi42NTgyIDEyLjk2OCAxMi44ODIxIDEzLjE5MTggMTIuODgyMSAxMy40NjhDMTIuODgyMSAxMy43NDQxIDEyLjY1ODIgMTMuOTY4IDEyLjM4MjEgMTMuOTY4TDkuMzgyMDUgMTMuOTY4QzkuMTA1OTEgMTMuOTY4IDguODgyMDUgMTMuNzQ0MSA4Ljg4MjA1IDEzLjQ2OEw4Ljg4MjA1IDEwLjQ2OEM4Ljg4MjA1IDEwLjE5MTggOS4xMDU5MSA5Ljk2Nzk2IDkuMzgyMDUgOS45Njc5NkM5LjY1ODE5IDkuOTY3OTYgOS44ODIwNSAxMC4xOTE4IDkuODgyMDUgMTAuNDY4TDkuODgyMDUgMTIuMzEzNUw5Ljg4MzYyIDEyLjMxMjNDMTAuNDU1MSAxMS44ODEzIDExLjE1MzUgMTEuMzU0NiAxMS43NTg1IDEwLjY3MzhDMTIuNDczMSA5Ljg2OTc2IDEzLjAxMDkgOC44OTg0NCAxMy4wMTA5IDcuNzAzMjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxLcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNOCAySDEyLjVDMTIuNzc2MSAyIDEzIDIuMjIzODYgMTMgMi41VjVIOFYyWk03IDVWMkgyLjVDMi4yMjM4NiAyIDIgMi4yMjM4NiAyIDIuNVY1SDdaTTIgNlY5SDdWNkgyWk04IDZIMTNWOUg4VjZaTTggMTBIMTNWMTIuNUMxMyAxMi43NzYxIDEyLjc3NjEgMTMgMTIuNSAxM0g4VjEwWk0yIDEyLjVWMTBIN1YxM0gyLjVDMi4yMjM4NiAxMyAyIDEyLjc3NjEgMiAxMi41Wk0xIDIuNUMxIDEuNjcxNTcgMS42NzE1NyAxIDIuNSAxSDEyLjVDMTMuMzI4NCAxIDE0IDEuNjcxNTcgMTQgMi41VjEyLjVDMTQgMTMuMzI4NCAxMy4zMjg0IDE0IDEyLjUgMTRIMi41QzEuNjcxNTcgMTQgMSAxMy4zMjg0IDEgMTIuNVYyLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxYcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC45MDAwMjQgNy41MDAwMkMwLjkwMDAyNCAzLjg1NDk1IDMuODU0OTUgMC45MDAwMjQgNy41MDAwMiAwLjkwMDAyNEMxMS4xNDUxIDAuOTAwMDI0IDE0LjEgMy44NTQ5NSAxNC4xIDcuNTAwMDJDMTQuMSAxMS4xNDUxIDExLjE0NTEgMTQuMSA3LjUwMDAyIDE0LjFDMy44NTQ5NSAxNC4xIDAuOTAwMDI0IDExLjE0NTEgMC45MDAwMjQgNy41MDAwMlpNNy41MDAwMiAxLjgwMDAyQzQuMzUyMDEgMS44MDAwMiAxLjgwMDAyIDQuMzUyMDEgMS44MDAwMiA3LjUwMDAyQzEuODAwMDIgMTAuNjQ4IDQuMzUyMDEgMTMuMiA3LjUwMDAyIDEzLjJDMTAuNjQ4IDEzLjIgMTMuMiAxMC42NDggMTMuMiA3LjUwMDAyQzEzLjIgNC4zNTIwMSAxMC42NDggMS44MDAwMiA3LjUwMDAyIDEuODAwMDJaTTMuMDc1MDQgNy41MDAwMkMzLjA3NTA0IDUuMDU2MTcgNS4wNTYxOCAzLjA3NTAyIDcuNTAwMDQgMy4wNzUwMkM5Ljk0Mzg4IDMuMDc1MDIgMTEuOTI1IDUuMDU2MTcgMTEuOTI1IDcuNTAwMDJDMTEuOTI1IDkuOTQzODYgOS45NDM4OCAxMS45MjUgNy41MDAwNCAxMS45MjVDNS4wNTYxOCAxMS45MjUgMy4wNzUwNCA5Ljk0Mzg2IDMuMDc1MDQgNy41MDAwMlpNNy41MDAwNCAzLjkyNTAyQzUuNTI1NjIgMy45MjUwMiAzLjkyNTA0IDUuNTI1NjEgMy45MjUwNCA3LjUwMDAyQzMuOTI1MDQgOS40NzQ0MiA1LjUyNTYzIDExLjA3NSA3LjUwMDA0IDExLjA3NUM5LjQ3NDQ0IDExLjA3NSAxMS4wNzUgOS40NzQ0MiAxMS4wNzUgNy41MDAwMkMxMS4wNzUgNS41MjU2MSA5LjQ3NDQ0IDMuOTI1MDIgNy41MDAwNCAzLjkyNTAyWk03LjUwMDA0IDUuMjUwMDJDNi4yNTc0IDUuMjUwMDIgNS4yNTAwNCA2LjI1NzM5IDUuMjUwMDQgNy41MDAwMkM1LjI1MDA0IDguNzQyNjYgNi4yNTc0IDkuNzUwMDIgNy41MDAwNCA5Ljc1MDAyQzguNzQyNjcgOS43NTAwMiA5Ljc1MDA0IDguNzQyNjYgOS43NTAwNCA3LjUwMDAyQzkuNzUwMDQgNi4yNTczOCA4Ljc0MjY3IDUuMjUwMDIgNy41MDAwNCA1LjI1MDAyWk02LjA1MDA0IDcuNTAwMDJDNi4wNTAwNCA2LjY5OTIxIDYuNjk5MjMgNi4wNTAwMiA3LjUwMDA0IDYuMDUwMDJDOC4zMDA4NCA2LjA1MDAyIDguOTUwMDQgNi42OTkyMSA4Ljk1MDA0IDcuNTAwMDJDOC45NTAwNCA4LjMwMDgzIDguMzAwODQgOC45NTAwMiA3LjUwMDA0IDguOTUwMDJDNi42OTkyMyA4Ljk1MDAyIDYuMDUwMDQgOC4zMDA4MyA2LjA1MDA0IDcuNTAwMDJaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxRcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMy45NDk5MyAyLjk1MDAyTDMuOTQ5OTMgNC40OTk5OEMzLjk0OTkzIDQuNzQ4NTEgMy43NDg0NSA0Ljk0OTk4IDMuNDk5OTMgNC45NDk5OEMzLjI1MTQgNC45NDk5OCAzLjA0OTkzIDQuNzQ4NTEgMy4wNDk5MyA0LjQ5OTk4VjIuNTAwMDRDMy4wNDk5MyAyLjQ1MjQ2IDMuMDU3MzEgMi40MDY2MSAzLjA3MDk5IDIuMzYzNTdDMy4xMjg3OCAyLjE4MTc1IDMuMjk4OTcgMi4wNTAwMiAzLjQ5OTkzIDIuMDUwMDJIMTEuNDk5OUMxMS42NTUzIDIuMDUwMDIgMTEuNzkyMiAyLjEyODcyIDExLjg3MzEgMi4yNDg0MkMxMS45MjE2IDIuMzIwMjQgMTEuOTQ5OSAyLjQwNjgyIDExLjk0OTkgMi41MDAwMkwxMS45NDk5IDIuNTAwMDRWNC40OTk5OEMxMS45NDk5IDQuNzQ4NTEgMTEuNzQ4NSA0Ljk0OTk4IDExLjQ5OTkgNC45NDk5OEMxMS4yNTE0IDQuOTQ5OTggMTEuMDQ5OSA0Ljc0ODUxIDExLjA0OTkgNC40OTk5OFYyLjk1MDAySDguMDQ5OTNWMTIuMDVIOS4yNTQyOEM5LjUwMjgxIDEyLjA1IDkuNzA0MjggMTIuMjUxNSA5LjcwNDI4IDEyLjVDOS43MDQyOCAxMi43NDg2IDkuNTAyODEgMTIuOTUgOS4yNTQyOCAxMi45NUg1Ljc1NDI4QzUuNTA1NzUgMTIuOTUgNS4zMDQyOCAxMi43NDg2IDUuMzA0MjggMTIuNUM1LjMwNDI4IDEyLjI1MTUgNS41MDU3NSAxMi4wNSA1Ljc1NDI4IDEyLjA1SDYuOTQ5OTNWMi45NTAwMkgzLjk0OTkzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSnI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTIgNC41QzIgNC4yMjM4NiAyLjIyMzg2IDQgMi41IDRIMTIuNUMxMi43NzYxIDQgMTMgNC4yMjM4NiAxMyA0LjVDMTMgNC43NzYxNCAxMi43NzYxIDUgMTIuNSA1SDIuNUMyLjIyMzg2IDUgMiA0Ljc3NjE0IDIgNC41Wk00IDcuNUM0IDcuMjIzODYgNC4yMjM4NiA3IDQuNSA3SDEwLjVDMTAuNzc2MSA3IDExIDcuMjIzODYgMTEgNy41QzExIDcuNzc2MTQgMTAuNzc2MSA4IDEwLjUgOEg0LjVDNC4yMjM4NiA4IDQgNy43NzYxNCA0IDcuNVpNMyAxMC41QzMgMTAuMjIzOSAzLjIyMzg2IDEwIDMuNSAxMEgxMS41QzExLjc3NjEgMTAgMTIgMTAuMjIzOSAxMiAxMC41QzEyIDEwLjc3NjEgMTEuNzc2MSAxMSAxMS41IDExSDMuNUMzLjIyMzg2IDExIDMgMTAuNzc2MSAzIDEwLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxlbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMi41IDRDMi4yMjM4NiA0IDIgNC4yMjM4NiAyIDQuNUMyIDQuNzc2MTQgMi4yMjM4NiA1IDIuNSA1SDEyLjVDMTIuNzc2MSA1IDEzIDQuNzc2MTQgMTMgNC41QzEzIDQuMjIzODYgMTIuNzc2MSA0IDEyLjUgNEgyLjVaTTIgNy41QzIgNy4yMjM4NiAyLjIyMzg2IDcgMi41IDdIMTIuNUMxMi43NzYxIDcgMTMgNy4yMjM4NiAxMyA3LjVDMTMgNy43NzYxNCAxMi43NzYxIDggMTIuNSA4SDIuNUMyLjIyMzg2IDggMiA3Ljc3NjE0IDIgNy41Wk0yIDEwLjVDMiAxMC4yMjM5IDIuMjIzODYgMTAgMi41IDEwSDEyLjVDMTIuNzc2MSAxMCAxMyAxMC4yMjM5IDEzIDEwLjVDMTMgMTAuNzc2MSAxMi43NzYxIDExIDEyLjUgMTFIMi41QzIuMjIzODYgMTEgMiAxMC43NzYxIDIgMTAuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHRvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDQuNUMyIDQuMjIzODYgMi4yMjM4NiA0IDIuNSA0SDEyLjVDMTIuNzc2MSA0IDEzIDQuMjIzODYgMTMgNC41QzEzIDQuNzc2MTQgMTIuNzc2MSA1IDEyLjUgNUgyLjVDMi4yMjM4NiA1IDIgNC43NzYxNCAyIDQuNVpNMiA3LjVDMiA3LjIyMzg2IDIuMjIzODYgNyAyLjUgN0g3LjVDNy43NzYxNCA3IDggNy4yMjM4NiA4IDcuNUM4IDcuNzc2MTQgNy43NzYxNCA4IDcuNSA4SDIuNUMyLjIyMzg2IDggMiA3Ljc3NjE0IDIgNy41Wk0yIDEwLjVDMiAxMC4yMjM5IDIuMjIzODYgMTAgMi41IDEwSDEwLjVDMTAuNzc2MSAxMCAxMSAxMC4yMjM5IDExIDEwLjVDMTEgMTAuNzc2MSAxMC43NzYxIDExIDEwLjUgMTFIMi41QzIuMjIzODYgMTEgMiAxMC43NzYxIDIgMTAuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LG5vPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0yIDQuNUMyIDQuMjIzODYgMi4yMjM4NiA0IDIuNSA0SDEyLjVDMTIuNzc2MSA0IDEzIDQuMjIzODYgMTMgNC41QzEzIDQuNzc2MTQgMTIuNzc2MSA1IDEyLjUgNUgyLjVDMi4yMjM4NiA1IDIgNC43NzYxNCAyIDQuNVpNNyA3LjVDNyA3LjIyMzg2IDcuMjIzODYgNyA3LjUgN0gxMi41QzEyLjc3NjEgNyAxMyA3LjIyMzg2IDEzIDcuNUMxMyA3Ljc3NjE0IDEyLjc3NjEgOCAxMi41IDhINy41QzcuMjIzODYgOCA3IDcuNzc2MTQgNyA3LjVaTTQgMTAuNUM0IDEwLjIyMzkgNC4yMjM4NiAxMCA0LjUgMTBIMTIuNUMxMi43NzYxIDEwIDEzIDEwLjIyMzkgMTMgMTAuNUMxMyAxMC43NzYxIDEyLjc3NjEgMTEgMTIuNSAxMUg0LjVDNC4yMjM4NiAxMSA0IDEwLjc3NjEgNCAxMC41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scm89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEzLjM1MzYgMi4zNTM1NUMxMy41NDg4IDIuMTU4MjkgMTMuNTQ4OCAxLjg0MTcxIDEzLjM1MzYgMS42NDY0NUMxMy4xNTgzIDEuNDUxMTggMTIuODQxNyAxLjQ1MTE4IDEyLjY0NjQgMS42NDY0NUwxMS45MjkxIDIuMzYzODNDMTEuOTE1OSAyLjMyMjQ2IDExLjg5NyAyLjI4MzY4IDExLjg3MzIgMi4yNDg0NUMxMS43OTIzIDIuMTI4NzUgMTEuNjU1NCAyLjA1MDA1IDExLjUwMDEgMi4wNTAwNUgzLjUwMDA1QzMuMjk5MDkgMi4wNTAwNSAzLjEyODkgMi4xODE3OCAzLjA3MTExIDIuMzYzNkMzLjA1NzQzIDIuNDA2NjUgMy4wNTAwNSAyLjQ1MjQ5IDMuMDUwMDUgMi41MDAwN1Y0LjUwMDAxQzMuMDUwMDUgNC43NDg1NCAzLjI1MTUyIDQuOTUwMDEgMy41MDAwNSA0Ljk1MDAxQzMuNzQ4NTggNC45NTAwMSAzLjk1MDA1IDQuNzQ4NTQgMy45NTAwNSA0LjUwMDAxVjIuOTUwMDVINi45NTAwNlY3LjM0Mjg0TDEuNjQ2NDUgMTIuNjQ2NEMxLjQ1MTE4IDEyLjg0MTcgMS40NTExOCAxMy4xNTgzIDEuNjQ2NDUgMTMuMzUzNkMxLjg0MTcxIDEzLjU0ODggMi4xNTgyOSAxMy41NDg4IDIuMzUzNTUgMTMuMzUzNkw2Ljk1MDA2IDguNzU3MDVWMTIuMDUwMUg1Ljc1NDRDNS41MDU4NyAxMi4wNTAxIDUuMzA0NCAxMi4yNTE1IDUuMzA0NCAxMi41MDAxQzUuMzA0NCAxMi43NDg2IDUuNTA1ODcgMTIuOTUwMSA1Ljc1NDQgMTIuOTUwMUg5LjI1NDRDOS41MDI5MyAxMi45NTAxIDkuNzA0NCAxMi43NDg2IDkuNzA0NCAxMi41MDAxQzkuNzA0NCAxMi4yNTE1IDkuNTAyOTMgMTIuMDUwMSA5LjI1NDQgMTIuMDUwMUg4LjA1MDA2VjcuNjU3MDVMMTMuMzUzNiAyLjM1MzU1Wk04LjA1MDA2IDYuMjQyODRMMTEuMDUwMSAzLjI0MjgzVjIuOTUwMDVIOC4wNTAwNlY2LjI0Mjg0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sb289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUgMy41QzUgMy4yMjM4NiA1LjIyMzg2IDMgNS41IDNIOS41QzkuNzc2MTQgMyAxMCAzLjIyMzg2IDEwIDMuNVY2SDEyLjVDMTIuNjg3MyA2IDEyLjg1ODkgNi4xMDQ2NyAxMi45NDQ2IDYuMjcxMjFDMTMuMDMwMyA2LjQzNzc0IDEzLjAxNTcgNi42MzgyMSAxMi45MDY5IDYuNzkwNjJMNy45MDY4NyAxMy43OTA2QzcuODEzMDEgMTMuOTIyIDcuNjYxNDggMTQgNy41IDE0QzcuMzM4NTMgMTQgNy4xODY5OSAxMy45MjIgNy4wOTMxNCAxMy43OTA2TDIuMDkzMTQgNi43OTA2MkMxLjk4NDI3IDYuNjM4MjEgMS45Njk3MiA2LjQzNzc0IDIuMDU1NDIgNi4yNzEyMUMyLjE0MTEyIDYuMTA0NjcgMi4zMTI3MSA2IDIuNSA2SDVWMy41Wk02IDRWNi41QzYgNi43NzYxNCA1Ljc3NjE0IDcgNS41IDdIMy40NzE2TDcuNSAxMi42Mzk4TDExLjUyODQgN0g5LjVDOS4yMjM4NiA3IDkgNi43NzYxNCA5IDYuNVY0SDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxpbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMSA3LjVDMSA3LjY2MTQ4IDEuMDc3OTggNy44MTMwMSAxLjIwOTM4IDcuOTA2ODdMOC4yMDkzOCAxMi45MDY5QzguMzYxNzkgMTMuMDE1NyA4LjU2MjI2IDEzLjAzMDMgOC43Mjg3OSAxMi45NDQ2QzguODk1MzMgMTIuODU4OSA5IDEyLjY4NzMgOSAxMi41TDkgMTBMMTEuNSAxMEMxMS43NzYxIDEwIDEyIDkuNzc2MTQgMTIgOS41TDEyIDUuNUMxMiA1LjIyMzg2IDExLjc3NjEgNSAxMS41IDVMOSA1TDkgMi41QzkgMi4zMTI3MSA4Ljg5NTMzIDIuMTQxMTIgOC43Mjg3OSAyLjA1NTQyQzguNTYyMjYgMS45Njk3MiA4LjM2MTc5IDEuOTg0MjcgOC4yMDkzOCAyLjA5MzEzTDEuMjA5MzggNy4wOTMxNEMxLjA3Nzk4IDcuMTg2OTkgMSA3LjMzODUzIDEgNy41Wk04IDMuNDcxNkw4IDUuNUM4IDUuNzc2MTQgOC4yMjM4NiA2IDguNSA2TDExIDZMMTEgOUw4LjUgOUM4LjIyMzg2IDkgOCA5LjIyMzg2IDggOS41TDggMTEuNTI4NEwyLjM2MDIzIDcuNUw4IDMuNDcxNlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGFvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNCA3LjVDMTQgNy42NjE0OCAxMy45MjIgNy44MTMwMSAxMy43OTA2IDcuOTA2ODdMNi43OTA2MiAxMi45MDY5QzYuNjM4MjEgMTMuMDE1NyA2LjQzNzc0IDEzLjAzMDMgNi4yNzEyMSAxMi45NDQ2QzYuMTA0NjcgMTIuODU4OSA2IDEyLjY4NzMgNiAxMi41TDYgMTBMMy41IDEwQzMuMjIzODYgMTAgMyA5Ljc3NjE0IDMgOS41TDMgNS41QzMgNS4yMjM4NiAzLjIyMzg2IDUgMy41IDVMNiA1TDYgMi41QzYgMi4zMTI3MSA2LjEwNDY3IDIuMTQxMTIgNi4yNzEyMSAyLjA1NTQyQzYuNDM3NzQgMS45Njk3MiA2LjYzODIxIDEuOTg0MjcgNi43OTA2MiAyLjA5MzEzTDEzLjc5MDYgNy4wOTMxNEMxMy45MjIgNy4xODY5OSAxNCA3LjMzODUzIDE0IDcuNVpNNyAzLjQ3MTZMNyA1LjVDNyA1Ljc3NjE0IDYuNzc2MTQgNiA2LjUgNkw0IDZMNCA5TDYuNSA5QzYuNzc2MTQgOSA3IDkuMjIzODYgNyA5LjVMNyAxMS41Mjg0TDEyLjYzOTggNy41TDcgMy40NzE2WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sbG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNSAxQzcuNjYxNDggMSA3LjgxMzAxIDEuMDc3OTggNy45MDY4NyAxLjIwOTM4TDEyLjkwNjkgOC4yMDkzOEMxMy4wMTU3IDguMzYxNzkgMTMuMDMwMyA4LjU2MjI2IDEyLjk0NDYgOC43Mjg3OUMxMi44NTg5IDguODk1MzMgMTIuNjg3MyA5IDEyLjUgOUgxMFYxMS41QzEwIDExLjc3NjEgOS43NzYxNCAxMiA5LjUgMTJINS41QzUuMjIzODYgMTIgNSAxMS43NzYxIDUgMTEuNVY5SDIuNUMyLjMxMjcxIDkgMi4xNDExMiA4Ljg5NTMzIDIuMDU1NDIgOC43Mjg3OUMxLjk2OTcyIDguNTYyMjYgMS45ODQyNyA4LjM2MTc5IDIuMDkzMTQgOC4yMDkzOEw3LjA5MzE0IDEuMjA5MzhDNy4xODY5OSAxLjA3Nzk4IDcuMzM4NTMgMSA3LjUgMVpNMy40NzE2IDhINS41QzUuNzc2MTQgOCA2IDguMjIzODYgNiA4LjVWMTFIOVY4LjVDOSA4LjIyMzg2IDkuMjIzODYgOCA5LjUgOEgxMS41Mjg0TDcuNSAyLjM2MDIzTDMuNDcxNiA4WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sY289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTggMC44NDk5NzZDNy4yMjM4MyAwLjg0OTk3NiA2Ljk5OTk4IDEuMDczODMgNi45OTk5OCAxLjM0OTk4VjMuNTIyMzRDNi45OTk5OCAzLjc5ODQ4IDcuMjIzODMgNC4wMjIzNCA3LjQ5OTk4IDQuMDIyMzRDNy43NzYxMiA0LjAyMjM0IDcuOTk5OTggMy43OTg0OCA3Ljk5OTk4IDMuNTIyMzRWMS44NzE4QzEwLjg4NjIgMi4xMjQ4OCAxMy4xNSA0LjU0ODA2IDEzLjE1IDcuNDk5OThDMTMuMTUgMTAuNjIwNCAxMC42MjA0IDEzLjE1IDcuNDk5OTggMTMuMTVDNC4zNzk1NyAxMy4xNSAxLjg0OTk4IDEwLjYyMDQgMS44NDk5OCA3LjQ5OTk4QzEuODQ5OTggNi4xMDYxMiAyLjM1NDA3IDQuODMxMjggMy4xOTA0OSAzLjg0NTlDMy4zNjkxOSAzLjYzNTM4IDMuMzQzMzkgMy4zMTk4NSAzLjEzMjg2IDMuMTQxMTVDMi45MjIzNCAyLjk2MjQ1IDIuNjA2ODEgMi45ODgyNSAyLjQyODExIDMuMTk4NzdDMS40NDQwNSA0LjM1ODA4IDAuODQ5OTc2IDUuODYwMjkgMC44NDk5NzYgNy40OTk5OEMwLjg0OTk3NiAxMS4xNzI3IDMuODI3MjggMTQuMTUgNy40OTk5OCAxNC4xNUMxMS4xNzI3IDE0LjE1IDE0LjE1IDExLjE3MjcgMTQuMTUgNy40OTk5OEMxNC4xNSAzLjgyNzI4IDExLjE3MjcgMC44NDk5NzYgNy40OTk5OCAwLjg0OTk3NlpNNi43NDA0OSA4LjA4MDcyTDQuMjIzNjMgNC41NzIzN0M0LjE1MjMxIDQuNDcyOTUgNC4xNjM0NiA0LjMzNjUyIDQuMjQ5OTggNC4yNUM0LjMzNjQ5IDQuMTYzNDggNC40NzI5MyA0LjE1MjMzIDQuNTcyMzQgNC4yMjM2NUw4LjA4MDY5IDYuNzQwNTFDOC41NjIyNyA3LjA4NTk5IDguNjE5MDYgNy43ODA5MSA4LjE5OTk4IDguMkM3Ljc4MDg5IDguNjE5MDkgNy4wODU5NyA4LjU2MjI5IDYuNzQwNDkgOC4wODA3MlpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LHNvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00LjUgMkMzLjExOTI5IDIgMiAzLjExOTI5IDIgNC41QzIgNS44ODA3MiAzLjExOTI5IDcgNC41IDdDNS44ODA3MiA3IDcgNS44ODA3MiA3IDQuNUM3IDMuMTE5MjkgNS44ODA3MiAyIDQuNSAyWk0zIDQuNUMzIDMuNjcxNTcgMy42NzE1NyAzIDQuNSAzQzUuMzI4NDMgMyA2IDMuNjcxNTcgNiA0LjVDNiA1LjMyODQzIDUuMzI4NDMgNiA0LjUgNkMzLjY3MTU3IDYgMyA1LjMyODQzIDMgNC41Wk0xMC41IDJDOS4xMTkyOSAyIDggMy4xMTkyOSA4IDQuNUM4IDUuODgwNzIgOS4xMTkyOSA3IDEwLjUgN0MxMS44ODA3IDcgMTMgNS44ODA3MiAxMyA0LjVDMTMgMy4xMTkyOSAxMS44ODA3IDIgMTAuNSAyWk05IDQuNUM5IDMuNjcxNTcgOS42NzE1NyAzIDEwLjUgM0MxMS4zMjg0IDMgMTIgMy42NzE1NyAxMiA0LjVDMTIgNS4zMjg0MyAxMS4zMjg0IDYgMTAuNSA2QzkuNjcxNTcgNiA5IDUuMzI4NDMgOSA0LjVaTTIgMTAuNUMyIDkuMTE5MjkgMy4xMTkyOSA4IDQuNSA4QzUuODgwNzIgOCA3IDkuMTE5MjkgNyAxMC41QzcgMTEuODgwNyA1Ljg4MDcyIDEzIDQuNSAxM0MzLjExOTI5IDEzIDIgMTEuODgwNyAyIDEwLjVaTTQuNSA5QzMuNjcxNTcgOSAzIDkuNjcxNTcgMyAxMC41QzMgMTEuMzI4NCAzLjY3MTU3IDEyIDQuNSAxMkM1LjMyODQzIDEyIDYgMTEuMzI4NCA2IDEwLjVDNiA5LjY3MTU3IDUuMzI4NDMgOSA0LjUgOVpNMTAuNSA4QzkuMTE5MjkgOCA4IDkuMTE5MjkgOCAxMC41QzggMTEuODgwNyA5LjExOTI5IDEzIDEwLjUgMTNDMTEuODgwNyAxMyAxMyAxMS44ODA3IDEzIDEwLjVDMTMgOS4xMTkyOSAxMS44ODA3IDggMTAuNSA4Wk05IDEwLjVDOSA5LjY3MTU3IDkuNjcxNTcgOSAxMC41IDlDMTEuMzI4NCA5IDEyIDkuNjcxNTcgMTIgMTAuNUMxMiAxMS4zMjg0IDExLjMyODQgMTIgMTAuNSAxMkM5LjY3MTU3IDEyIDkgMTEuMzI4NCA5IDEwLjVaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx1bz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMTMuMDUwMiAyLjc0OTg5QzEzLjA1MDIgMi40NDYxMyAxMi44MDQgMi4xOTk4OSAxMi41MDAyIDIuMTk5ODlDMTIuMTk2NSAyLjE5OTg5IDExLjk1MDIgMi40NDYxMyAxMS45NTAyIDIuNzQ5ODlWNy4yODI1QzExLjkwNDYgNy4xODgwMiAxMS44Mjk1IDcuMTA4NTEgMTEuNzMzNCA3LjA1Nzc2TDIuNzMzMzggMi4zMDc3NkMyLjU3ODQgMi4yMjU5NiAyLjM5MTkgMi4yMzEyNyAyLjI0MTgyIDIuMzIxNzZDMi4wOTE3NSAyLjQxMjI1IDIgMi41NzQ3MSAyIDIuNzQ5OTVWMTIuMjVDMiAxMi40MjUyIDIuMDkxNzUgMTIuNTg3NyAyLjI0MTgyIDEyLjY3ODFDMi4zOTE5IDEyLjc2ODYgMi41Nzg0IDEyLjc3MzkgMi43MzMzOCAxMi42OTIxTDExLjczMzQgNy45NDIxNEMxMS44Mjk1IDcuODkxMzkgMTEuOTA0NiA3LjgxMTg4IDExLjk1MDIgNy43MTc0VjEyLjI0OTlDMTEuOTUwMiAxMi41NTM2IDEyLjE5NjUgMTIuNzk5OSAxMi41MDAyIDEyLjc5OTlDMTIuODA0IDEyLjc5OTkgMTMuMDUwMiAxMi41NTM2IDEzLjA1MDIgMTIuMjQ5OVYyLjc0OTg5Wk0zIDExLjQyMDdWMy41NzkyTDEwLjQyODggNy40OTk5NUwzIDExLjQyMDdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxmbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMS45NDk3NiAyLjc0OTg5QzEuOTQ5NzYgMi40NDYxMyAyLjE5NiAyLjE5OTg5IDIuNDk5NzYgMi4xOTk4OUMyLjgwMzUxIDIuMTk5ODkgMy4wNDk3NiAyLjQ0NjEzIDMuMDQ5NzYgMi43NDk4OVY3LjI4MjVDMy4wOTU0IDcuMTg4MDIgMy4xNzA0NiA3LjEwODUxIDMuMjY2NjIgNy4wNTc3NkwxMi4yNjY2IDIuMzA3NzZDMTIuNDIxNiAyLjIyNTk2IDEyLjYwODEgMi4yMzEyNyAxMi43NTgyIDIuMzIxNzZDMTIuOTA4MyAyLjQxMjI1IDEzIDIuNTc0NzEgMTMgMi43NDk5NVYxMi4yNUMxMyAxMi40MjUyIDEyLjkwODMgMTIuNTg3NyAxMi43NTgyIDEyLjY3ODFDMTIuNjA4MSAxMi43Njg2IDEyLjQyMTYgMTIuNzczOSAxMi4yNjY2IDEyLjY5MjFMMy4yNjY2MiA3Ljk0MjE0QzMuMTcwNDYgNy44OTEzOSAzLjA5NTQgNy44MTE4OCAzLjA0OTc2IDcuNzE3NFYxMi4yNDk5QzMuMDQ5NzYgMTIuNTUzNiAyLjgwMzUxIDEyLjc5OTkgMi40OTk3NiAxMi43OTk5QzIuMTk2IDEyLjc5OTkgMS45NDk3NiAxMi41NTM2IDEuOTQ5NzYgMTIuMjQ5OVYyLjc0OTg5Wk00LjU3MTIyIDcuNDk5OTVMMTIgMTEuNDIwN1YzLjU3OTJMNC41NzEyMiA3LjQ5OTk1WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0scG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtvcGFjaXR5OlwiLjI1XCIsZDpcIk0wIDBIM1YzSDBWMFpNNiAzSDNWNkgwVjlIM1YxMkgwVjE1SDNWMTJINlYxNUg5VjEySDEyVjE1SDE1VjEySDEyVjlIMTVWNkgxMlYzSDE1VjBIMTJWM0g5VjBINlYzWk02IDZWM0g5VjZINlpNNiA5SDNWNkg2VjlaTTkgOVY2SDEyVjlIOVpNOSA5SDZWMTJIOVY5WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sQ289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTUuNSAxQzUuMjIzODYgMSA1IDEuMjIzODYgNSAxLjVDNSAxLjc3NjE0IDUuMjIzODYgMiA1LjUgMkg5LjVDOS43NzYxNCAyIDEwIDEuNzc2MTQgMTAgMS41QzEwIDEuMjIzODYgOS43NzYxNCAxIDkuNSAxSDUuNVpNMyAzLjVDMyAzLjIyMzg2IDMuMjIzODYgMyAzLjUgM0g1SDEwSDExLjVDMTEuNzc2MSAzIDEyIDMuMjIzODYgMTIgMy41QzEyIDMuNzc2MTQgMTEuNzc2MSA0IDExLjUgNEgxMVYxMkMxMSAxMi41NTIzIDEwLjU1MjMgMTMgMTAgMTNINUM0LjQ0NzcyIDEzIDQgMTIuNTUyMyA0IDEyVjRMMy41IDRDMy4yMjM4NiA0IDMgMy43NzYxNCAzIDMuNVpNNSA0SDEwVjEySDVWNFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGhvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk00IDZIMTFMNy41IDEwLjVMNCA2WlwiLGZpbGw6bn0pKX0sdm89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTkgNEw5IDExTDQuNSA3LjVMOSA0WlwiLGZpbGw6bn0pKX0sZ289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTYgMTFMNiA0TDEwLjUgNy41TDYgMTFaXCIsZmlsbDpufSkpfSxtbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNCA5SDExTDcuNSA0LjVMNCA5WlwiLGZpbGw6bn0pKX0sd289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuMjMzMzYgNC42OTYyOUM3LjIzMzM2IDIuOTY4ODQgOC42MzMzNSAxLjU2ODU3IDEwLjM2IDEuNTY4NTdDMTEuMzczNiAxLjU2ODU3IDEyLjE4MyAyLjA0ODA0IDEyLjcyNTQgMi43NDM4NUMxMy4zMDc5IDIuNjI0NjcgMTMuODU1NyAyLjQwOTEzIDE0LjM1MTMgMi4xMTUwOEMxNC4xNTU5IDIuNzI1OTggMTMuNzQyNCAzLjIzOTYgMTMuMjAzMyAzLjU2NDYzQzEzLjIwMzggMy41NjU2OCAxMy4yMDQyIDMuNTY2NzQgMTMuMjA0NyAzLjU2Nzc5QzEzLjczMzQgMy41MDM2MSAxNC4yMzY0IDMuMzYzMDIgMTQuNzA0OCAzLjE1NTQ2TDE0LjcwMzcgMy4xNTcxNUMxNC4zNjY3IDMuNjYxODMgMTMuOTQzMSA0LjEwNzM2IDEzLjQ1NjEgNC40NzAzNEMxMy40ODIzIDQuNjQ2NzIgMTMuNDk1NiA0LjgyNDI3IDEzLjQ5NTYgNS4wMDA3OUMxMy40OTU2IDguNjg3MSAxMC42ODczIDEyLjk3NDYgNS41MjEyMiAxMi45NzQ2QzMuOTM5MDYgMTIuOTc0NiAyLjQ2NTQ0IDEyLjUxMSAxLjIyNTA1IDExLjcxNTJDMC45OTI2MzIgMTEuNTY2MSAwLjkyNTEwOCAxMS4yNTY4IDEuMDc0MjMgMTEuMDI0NEMxLjA4NzQgMTEuMDAzOCAxLjEwMTgzIDEwLjk4NDYgMS4xMTczNCAxMC45NjY2QzEuMjA1ODIgMTAuODIwMiAxLjM3NDM4IDEwLjczMDkgMS41NTU0IDEwLjc1MjJDMi40NzA2NiAxMC44NjAxIDMuMzg1NjggMTAuNzQ4NSA0LjE5MjE5IDEwLjM5NjJDMy4zOTIyNiAxMC4wNDM0IDIuNzcxMjkgOS4zNTk3NSAyLjUwMjA0IDguNTE5NzRDMi40NTM1OSA4LjM2ODYgMi40ODgzNSA4LjIwMzExIDIuNTkzNTEgOC4wODQyMkMyLjU5NzE2IDguMDgwMSAyLjYwMDg3IDguMDc2MDYgMi42MDQ2NCA4LjA3MjFDMS45NjM5MSA3LjUwODE5IDEuNTU5NzMgNi42ODIwOCAxLjU1OTczIDUuNzYxNDNWNS43Mjc1OUMxLjU1OTczIDUuNTY4MTQgMS42NDQxMSA1LjQyMDU5IDEuNzgxNTUgNS4zMzk3NEMxLjgyNjcxIDUuMzEzMTcgMS44NzUzNyA1LjI5NTExIDEuOTI1MzIgNS4yODU1OEMxLjcwNTQ5IDQuODYxNTQgMS41ODExNiA0LjM3OTg0IDEuNTgxMTYgMy44Njk1OEMxLjU4MTE2IDMuNDAxNjUgMS41ODM4NCAyLjgxMTkyIDEuOTEzMzIgMi4yODA4MUMxLjk4NzE4IDIuMTYxNzUgMi4xMDc1OCAyLjA4OTE1IDIuMjM2NCAyLjA3MTk1QzIuNDI1ODggMi4wMTIzNyAyLjY0MDg3IDIuMDY5NjkgMi43NzQwNiAyLjIzMzAyQzMuODY1MzYgMy41NzEyNiA1LjQ0MDY2IDQuNDk1ODMgNy4yMzM2NiA0LjczOTYxTDcuMjMzMzYgNC42OTYyOVpNNS41MjEyMiAxMS45NzQ2QzQuNzMzODcgMTEuOTc0NiAzLjk3NzgxIDExLjg0MzUgMy4yNzI0OCAxMS42MDIzQzQuMTMwMTIgMTEuNDUzOCA0Ljk1MzA3IDExLjExNTkgNS42NjIxOCAxMC41NjAyQzUuODEyMTEgMTAuNDQyNyA1Ljg3MTgyIDEwLjI0MzUgNS44MTEyNiAxMC4wNjI5QzUuNzUwNyA5Ljg4MjM0IDUuNTgzIDkuNzU5NDMgNS4zOTI1NSA5Ljc1NjA3QzQuNjg5NjggOS43NDM2NiA0LjA2NzEyIDkuMzk3MTYgMy42Nzc5MyA4Ljg2ODQ1QzMuODY4MjggOC44NTMwNiA0LjA1NDI4IDguODIwMzkgNC4yMzQ0NSA4Ljc3MTY3QzQuNDM2MDMgOC43MTcxNiA0LjU3MzYzIDguNTMxMTQgNC41NjY3NCA4LjMyMjQzQzQuNTU5ODUgOC4xMTM3MiA0LjQxMDI5IDcuOTM3MTggNC4yMDU1NSA3Ljg5NjA3QzMuNDI2OTQgNy43Mzk3NyAyLjc5ODgzIDcuMTY3NjQgMi41NjE2OSA2LjQyMTc0QzIuNzYyNTUgNi40NzAyNSAyLjk3MTAyIDYuNDk5MSAzLjE4NDgyIDYuNTA2MUMzLjM4NTYzIDYuNTEyNjcgMy41NjY0NiA2LjM4NTMzIDMuNjI3OTUgNi4xOTQwNUMzLjY4OTQzIDYuMDAyNzcgMy42MTY2NiA1Ljc5MzkxIDMuNDQ5NjMgNS42ODIyNEMyLjg2NTIzIDUuMjkxNTUgMi40ODExNiA0LjYyNDY0IDIuNDgxMTYgMy44Njk1OEMyLjQ4MTE2IDMuNzAyMTMgMi40ODM1MiAzLjU1MjY4IDIuNDkzNTUgMy40MTcxOUMzLjg1MTE1IDQuNzk5MTMgNS43MDg3MyA1LjY4OTMxIDcuNzc1ODggNS43OTMzOEM3LjkzMjI1IDUuODAxMjYgOC4wODMyOCA1LjczNTQzIDguMTgzOTUgNS42MTU1M0M4LjI4NDYzIDUuNDk1NjIgOC4zMjMzMiA1LjMzNTQ4IDguMjg4NTEgNS4xODI4NEM4LjI1MjU1IDUuMDI1MTcgOC4yMzMzNiA0Ljg2Mjg0IDguMjMzMzYgNC42OTYyOUM4LjIzMzM2IDMuNTIwODUgOS4xODU5MSAyLjU2ODU3IDEwLjM2IDIuNTY4NTdDMTEuNTk0MyAyLjU2ODU3IDEyLjQ5NTYgMy43MTIwOCAxMi40OTU2IDUuMDAwNzlDMTIuNDk1NiA4LjI1NzA5IDEwLjAyMDIgMTEuOTc0NiA1LjUyMTIyIDExLjk3NDZaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx5bz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNS4wMDAwMSAyLjc1QzUuMDAwMDEgMi40NzM4NiA0Ljc3NjE1IDIuMjUgNC41MDAwMSAyLjI1QzQuMjIzODcgMi4yNSA0LjAwMDAxIDIuNDczODYgNC4wMDAwMSAyLjc1VjguMDVDNC4wMDAwMSA5Ljk4MyA1LjU2NzAyIDExLjU1IDcuNTAwMDEgMTEuNTVDOS40MzMwMSAxMS41NSAxMSA5Ljk4MyAxMSA4LjA1VjIuNzVDMTEgMi40NzM4NiAxMC43NzYyIDIuMjUgMTAuNSAyLjI1QzEwLjIyMzkgMi4yNSAxMCAyLjQ3Mzg2IDEwIDIuNzVWOC4wNUMxMCA5LjQzMDcxIDguODgwNzIgMTAuNTUgNy41MDAwMSAxMC41NUM2LjExOTMgMTAuNTUgNS4wMDAwMSA5LjQzMDcxIDUuMDAwMDEgOC4wNVYyLjc1Wk0zLjQ5OTk4IDEzLjEwMDFDMy4yNzkwNiAxMy4xMDAxIDMuMDk5OTggMTMuMjc5MSAzLjA5OTk4IDEzLjUwMDFDMy4wOTk5OCAxMy43MjEgMy4yNzkwNiAxMy45MDAxIDMuNDk5OTggMTMuOTAwMUgxMS41QzExLjcyMDkgMTMuOTAwMSAxMS45IDEzLjcyMSAxMS45IDEzLjUwMDFDMTEuOSAxMy4yNzkxIDExLjcyMDkgMTMuMTAwMSAxMS41IDEzLjEwMDFIMy40OTk5OFpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGJvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xLjkwMzIxIDcuMjk2NzdDMS45MDMyMSAxMC4zNDEgNC4xMTA0MSAxMi40MTQ3IDYuNTg4OTMgMTIuODQzOUM2Ljg3MjU1IDEyLjg5MyA3LjA2MjY2IDEzLjE2MjcgNy4wMTM1NSAxMy40NDY0QzYuOTY0NDQgMTMuNzMgNi42OTQ3MSAxMy45MjAxIDYuNDExMDkgMTMuODcxQzMuNDk5NDIgMTMuMzY2OCAwLjg2MDg0IDEwLjkxMjcgMC44NjA4NCA3LjI5Njc3QzAuODYwODM5IDUuNzYwMDkgMS41NTk5NiA0LjU1MjQ1IDIuMzc2MzkgMy42MzM3N0MyLjk2MTI0IDIuOTc1NjggMy42MzAzNCAyLjQ0MTM1IDQuMTY4NDYgMi4wMzIwMkwyLjUzMjA1IDIuMDMyMDJDMi4yNTU5MSAyLjAzMjAyIDIuMDMyMDUgMS44MDgxNiAyLjAzMjA1IDEuNTMyMDJDMi4wMzIwNSAxLjI1NTg4IDIuMjU1OTEgMS4wMzIwMiAyLjUzMjA1IDEuMDMyMDJMNS41MzIwNSAxLjAzMjAyQzUuODA4MTkgMS4wMzIwMiA2LjAzMjA1IDEuMjU1ODggNi4wMzIwNSAxLjUzMjAyTDYuMDMyMDUgNC41MzIwMkM2LjAzMjA1IDQuODA4MTYgNS44MDgxOSA1LjAzMjAyIDUuNTMyMDUgNS4wMzIwMkM1LjI1NTkxIDUuMDMyMDIgNS4wMzIwNSA0LjgwODE2IDUuMDMyMDUgNC41MzIwMkw1LjAzMjA1IDIuNjg2NDVMNS4wMzA1NCAyLjY4NzU5TDUuMDMwNDUgMi42ODc2Nkw1LjAzMDQ0IDIuNjg3NjdMNS4wMzA0MyAyLjY4NzY3QzQuNDU4OTYgMy4xMTg2OCAzLjc2MDU5IDMuNjQ1MzggMy4xNTU1NCA0LjMyNjJDMi40NDEwMiA1LjEzMDIxIDEuOTAzMjEgNi4xMDE1NCAxLjkwMzIxIDcuMjk2NzdaTTEzLjAxMDkgNy43MDMyMUMxMy4wMTA5IDQuNjkxMTUgMTAuODUwNSAyLjYyOTYgOC40MDM4NCAyLjE3MDI5QzguMTIwOTMgMi4xMTcxOCA3LjkzNDY1IDEuODQ0NzkgNy45ODc3NiAxLjU2MTg4QzguMDQwODcgMS4yNzg5OCA4LjMxMzI2IDEuMDkyNyA4LjU5NjE2IDEuMTQ1ODFDMTEuNDcwNCAxLjY4NTQxIDE0LjA1MzIgNC4xMjYwNSAxNC4wNTMyIDcuNzAzMjFDMTQuMDUzMiA5LjIzOTg4IDEzLjM1NDEgMTAuNDQ3NSAxMi41Mzc3IDExLjM2NjJDMTEuOTUyOCAxMi4wMjQzIDExLjI4MzcgMTIuNTU4NiAxMC43NDU2IDEyLjk2OEwxMi4zODIxIDEyLjk2OEMxMi42NTgyIDEyLjk2OCAxMi44ODIxIDEzLjE5MTggMTIuODgyMSAxMy40NjhDMTIuODgyMSAxMy43NDQxIDEyLjY1ODIgMTMuOTY4IDEyLjM4MjEgMTMuOTY4TDkuMzgyMDUgMTMuOTY4QzkuMTA1OTEgMTMuOTY4IDguODgyMDUgMTMuNzQ0MSA4Ljg4MjA1IDEzLjQ2OEw4Ljg4MjA1IDEwLjQ2OEM4Ljg4MjA1IDEwLjE5MTggOS4xMDU5MSA5Ljk2Nzk2IDkuMzgyMDUgOS45Njc5NkM5LjY1ODE5IDkuOTY3OTYgOS44ODIwNSAxMC4xOTE4IDkuODgyMDUgMTAuNDY4TDkuODgyMDUgMTIuMzEzNUw5Ljg4MzYyIDEyLjMxMjNDMTAuNDU1MSAxMS44ODEzIDExLjE1MzUgMTEuMzU0NiAxMS43NTg1IDEwLjY3MzhDMTIuNDczMSA5Ljg2OTc2IDEzLjAxMDkgOC44OTg0NCAxMy4wMTA5IDcuNzAzMjFaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSx4bz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNNy44MTgyNSAxLjE4MTg4QzcuNjQyNTEgMS4wMDYxNSA3LjM1NzU5IDEuMDA2MTUgNy4xODE4NSAxLjE4MTg4TDQuMTgxODUgNC4xODE4OEM0LjAwNjExIDQuMzU3NjIgNC4wMDYxMSA0LjY0MjU0IDQuMTgxODUgNC44MTgyOEM0LjM1NzU5IDQuOTk0MDEgNC42NDI1MSA0Ljk5NDAxIDQuODE4MjUgNC44MTgyOEw3LjA1MDA1IDIuNTg2NDhWOS40OTk5NkM3LjA1MDA1IDkuNzQ4NDkgNy4yNTE1MiA5Ljk0OTk2IDcuNTAwMDUgOS45NDk5NkM3Ljc0ODU4IDkuOTQ5OTYgNy45NTAwNSA5Ljc0ODQ5IDcuOTUwMDUgOS40OTk5NlYyLjU4NjQ4TDEwLjE4MTkgNC44MTgyOEMxMC4zNTc2IDQuOTk0MDEgMTAuNjQyNSA0Ljk5NDAxIDEwLjgxODIgNC44MTgyOEMxMC45OTQgNC42NDI1NCAxMC45OTQgNC4zNTc2MiAxMC44MTgyIDQuMTgxODhMNy44MTgyNSAxLjE4MTg4Wk0yLjUgOS45OTk5N0MyLjc3NjE0IDkuOTk5OTcgMyAxMC4yMjM4IDMgMTAuNVYxMkMzIDEyLjU1MzggMy40NDU2NSAxMyAzLjk5NjM1IDEzSDExLjAwMTJDMTEuNTUyOSAxMyAxMiAxMi41NTI4IDEyIDEyVjEwLjVDMTIgMTAuMjIzOCAxMi4yMjM5IDkuOTk5OTcgMTIuNSA5Ljk5OTk3QzEyLjc3NjEgOS45OTk5NyAxMyAxMC4yMjM4IDEzIDEwLjVWMTJDMTMgMTMuMTA0IDEyLjEwNjIgMTQgMTEuMDAxMiAxNEgzLjk5NjM1QzIuODkwMTkgMTQgMiAxMy4xMDMgMiAxMlYxMC41QzIgMTAuMjIzOCAyLjIyMzg2IDkuOTk5OTcgMi41IDkuOTk5OTdaXCIsZmlsbDpuLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSkpfSxPbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbG9yLG49dm9pZCAwPT09dD9cImN1cnJlbnRDb2xvclwiOnQsaT1vKGUsW1wiY29sb3JcIl0pO3JldHVybigwLHIuY3JlYXRlRWxlbWVudCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkpLCgwLHIuY3JlYXRlRWxlbWVudCkoXCJwYXRoXCIse2Q6XCJNMC44NzcwNzUgNy40OTk4OEMwLjg3NzA3NSAzLjg0MjE5IDMuODQyMjIgMC44NzcwNDUgNy40OTk5MSAwLjg3NzA0NUMxMS4xNTc2IDAuODc3MDQ1IDE0LjEyMjcgMy44NDIxOSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyAxMS4xNTc1IDExLjE1NzYgMTQuMTIyNyA3LjQ5OTkxIDE0LjEyMjdDMy44NDIyMiAxNC4xMjI3IDAuODc3MDc1IDExLjE1NzUgMC44NzcwNzUgNy40OTk4OFpNNy40OTk5MSAxLjgyNzA0QzQuMzY2ODkgMS44MjcwNCAxLjgyNzA4IDQuMzY2ODYgMS44MjcwOCA3LjQ5OTg4QzEuODI3MDggMTAuNjMyOSA0LjM2Njg5IDEzLjE3MjcgNy40OTk5MSAxMy4xNzI3QzEwLjYzMjkgMTMuMTcyNyAxMy4xNzI3IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNC4zNjY4NiAxMC42MzI5IDEuODI3MDQgNy40OTk5MSAxLjgyNzA0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5ODUgMC44NzcwNDVDMy44NDIxNiAwLjg3NzA0NSAwLjg3NzAxNCAzLjg0MjE5IDAuODc3MDE0IDcuNDk5ODhDMC44NzcwMTQgOS4xNDg4IDEuNDc5NjMgMTAuNjU3IDIuNDc2NjUgMTEuODE2MkwxLjY0NjQzIDEyLjY0NjRDMS40NTExNyAxMi44NDE3IDEuNDUxMTcgMTMuMTU4MyAxLjY0NjQzIDEzLjM1MzVDMS44NDE3IDEzLjU0ODggMi4xNTgyOCAxMy41NDg4IDIuMzUzNTQgMTMuMzUzNUwzLjE4Mzc3IDEyLjUyMzNDNC4zNDI5NiAxMy41MjAyIDUuODUxMDQgMTQuMTIyNyA3LjQ5OTg1IDE0LjEyMjdDMTEuMTU3NSAxNC4xMjI3IDE0LjEyMjcgMTEuMTU3NSAxNC4xMjI3IDcuNDk5ODhDMTQuMTIyNyA1Ljg1MTA3IDEzLjUyMDIgNC4zNDI5OSAxMi41MjMzIDMuMTgzOEwxMy4zNTM1IDIuMzUzNTRDMTMuNTQ4OCAyLjE1ODI3IDEzLjU0ODggMS44NDE2OSAxMy4zNTM1IDEuNjQ2NDNDMTMuMTU4MyAxLjQ1MTE3IDEyLjg0MTcgMS40NTExNyAxMi42NDY0IDEuNjQ2NDNMMTEuODE2MiAyLjQ3NjY4QzEwLjY1NyAxLjQ3OTY2IDkuMTQ4NzcgMC44NzcwNDUgNy40OTk4NSAwLjg3NzA0NVpNMTEuMTQyMiAzLjE1MDY2QzEwLjE1NjcgMi4zMjQ0OSA4Ljg4NjM5IDEuODI3MDQgNy40OTk4NSAxLjgyNzA0QzQuMzY2ODMgMS44MjcwNCAxLjgyNzAxIDQuMzY2ODYgMS44MjcwMSA3LjQ5OTg4QzEuODI3MDEgOC44ODY0MiAyLjMyNDQ2IDEwLjE1NjggMy4xNTA2MyAxMS4xNDIyTDExLjE0MjIgMy4xNTA2NlpNMy44NTc3NiAxMS44NDkzQzQuODQzMTcgMTIuNjc1MyA2LjExMzQzIDEzLjE3MjcgNy40OTk4NSAxMy4xNzI3QzEwLjYzMjggMTMuMTcyNyAxMy4xNzI3IDEwLjYzMjkgMTMuMTcyNyA3LjQ5OTg4QzEzLjE3MjcgNi4xMTM0NiAxMi42NzUzIDQuODQzMiAxMS44NDkzIDMuODU3NzlMMy44NTc3NiAxMS44NDkzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sX289ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcuNDk5OTggMUw2LjkyMzIxIDIuMDAzMDdMMS4xNzQ5OCAxMkwwLjU5OTk3NiAxM0gxLjc1MzVIMTMuMjQ2NEgxNC40TDEzLjgyNSAxMkw4LjA3Njc0IDIuMDAzMDdMNy40OTk5OCAxWk03LjQ5OTk4IDMuMDA2MTNMMi4zMjg1IDEySDEyLjY3MTRMNy40OTk5OCAzLjAwNjEzWlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sTW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuNzY0NDcgMy4xMjE5OUM1LjYzMTUxIDMuMDQ4NTkgNi41NjA4MiAzIDcuNSAzQzguNDM5MTggMyA5LjM2ODQ5IDMuMDQ4NTkgMTAuMjM1NSAzLjEyMTk5QzExLjI3OTYgMy4yMTAzNyAxMS45NTUzIDMuMjcwMDggMTIuNDcyIDMuMzkyMDNDMTIuOTQyNSAzLjUwMzA0IDEzLjIwNDggMy42NDk3NiAxMy40MzA2IDMuODgwODZDMTMuNDU1MyAzLjkwNjE4IDEzLjQ5MDIgMy45NDQxNCAxMy41MTMzIDMuOTcwOTJDMTMuNzEyNiA0LjIwMTQ5IDEzLjg0MzUgNC40ODg3IDEzLjkxOCA1LjAzMjgzQzEzLjk5NzggNS42MTU2IDE0IDYuMzc2NDQgMTQgNy41MjQ5M0MxNCA4LjY2MDI2IDEzLjk5NzggOS40MTAxOSAxMy45MTgxIDkuOTg1MzhDMTMuODQzOSAxMC41MjA2IDEzLjcxMzcgMTAuODA2MSAxMy41MTI1IDExLjAzODdDMTMuNDg5NiAxMS4wNjUxIDEzLjQ1NDEgMTEuMTAzOCAxMy40Mjk2IDExLjEyODdDMTMuMjAwOSAxMS4zNjI1IDEyLjk0MDYgMTEuNTA3NiAxMi40ODE4IDExLjYxNjRDMTEuOTc1MiAxMS43MzY1IDExLjMxNDMgMTEuNzk0MiAxMC4yODc4IDExLjg3OTdDOS40MTk0OCAxMS45NTIxIDguNDc1NjYgMTIgNy41IDEyQzYuNTI0MzQgMTIgNS41ODA1MiAxMS45NTIxIDQuNzEyMiAxMS44Nzk3QzMuNjg1NzIgMTEuNzk0MiAzLjAyNDc3IDExLjczNjUgMi41MTgxNiAxMS42MTY0QzIuMDU5MzYgMTEuNTA3NiAxLjc5OTEgMTEuMzYyNSAxLjU3MDM3IDExLjEyODdDMS41NDU5MyAxMS4xMDM4IDEuNTEwMzUgMTEuMDY1MSAxLjQ4NzQ4IDExLjAzODdDMS4yODYyOCAxMC44MDYxIDEuMTU2MTIgMTAuNTIwNiAxLjA4MTkzIDkuOTg1MzhDMS4wMDIyMSA5LjQxMDE5IDEgOC42NjAyNiAxIDcuNTI0OTNDMSA2LjM3NjQ0IDEuMDAyMTYgNS42MTU2IDEuMDgyIDUuMDMyODNDMS4xNTY1NCA0LjQ4ODcgMS4yODc0NCA0LjIwMTQ5IDEuNDg2NjYgMy45NzA5MkMxLjUwOTggMy45NDQxNCAxLjU0NDY4IDMuOTA2MTggMS41Njk0MiAzLjg4MDg2QzEuNzk1MiAzLjY0OTc2IDIuMDU3NTIgMy41MDMwNCAyLjUyNzk2IDMuMzkyMDNDMy4wNDQ3MyAzLjI3MDA4IDMuNzIwNCAzLjIxMDM3IDQuNzY0NDcgMy4xMjE5OVpNMCA3LjUyNDkzQzAgNS4yODI5NiAwIDQuMTYxOTggMC43Mjk5ODUgMy4zMTcxM0MwLjc2NjQ1NyAzLjI3NDkxIDAuODE1MTM5IDMuMjIxOTQgMC44NTQxMjMgMy4xODIwNEMxLjYzNDM5IDIuMzgzMzkgMi42NDk2MyAyLjI5NzQ0IDQuNjgwMTIgMi4xMjU1NUM1LjU2OTIzIDIuMDUwMjggNi41MjcyNCAyIDcuNSAyQzguNDcyNzYgMiA5LjQzMDc3IDIuMDUwMjggMTAuMzE5OSAyLjEyNTU1QzEyLjM1MDQgMi4yOTc0NCAxMy4zNjU2IDIuMzgzMzkgMTQuMTQ1OSAzLjE4MjA0QzE0LjE4NDkgMy4yMjE5NCAxNC4yMzM1IDMuMjc0OTEgMTQuMjcgMy4zMTcxM0MxNSA0LjE2MTk4IDE1IDUuMjgyOTYgMTUgNy41MjQ5M0MxNSA5Ljc0MDEyIDE1IDEwLjg0NzcgMTQuMjY4OCAxMS42OTI5QzE0LjIzMjYgMTEuNzM0OCAxNC4xODMyIDExLjc4ODUgMTQuMTQ0NCAxMS44MjgxQzEzLjM2MjkgMTIuNjI2OSAxMi4zNjU1IDEyLjcxIDEwLjM3MDkgMTIuODc2M0M5LjQ3OTcxIDEyLjk1MDUgOC41MDc4MiAxMyA3LjUgMTNDNi40OTIxOCAxMyA1LjUyMDI4IDEyLjk1MDUgNC42MjkxNSAxMi44NzYzQzIuNjM0NDYgMTIuNzEgMS42MzcxMiAxMi42MjY5IDAuODU1NTU4IDExLjgyODFDMC44MTY4NDQgMTEuNzg4NSAwLjc2NzQ0MiAxMS43MzQ4IDAuNzMxMjIxIDExLjY5MjlDMCAxMC44NDc3IDAgOS43NDAxMiAwIDcuNTI0OTNaTTUuMjUgNS4zODI2NEM1LjI1IDUuMjAyMjUgNS40MzUyMiA1LjA4MTI0IDUuNjAwNDEgNS4xNTM2OUwxMC40MjggNy4yNzEwNUMxMC42Mjc0IDcuMzU4NTMgMTAuNjI3NCA3LjY0MTQ3IDEwLjQyOCA3LjcyODk1TDUuNjAwNDEgOS44NDYzMUM1LjQzNTIyIDkuOTE4NzYgNS4yNSA5Ljc5Nzc1IDUuMjUgOS42MTczNlY1LjM4MjY0WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sam89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTcgMkgxLjVDMS4yMjM4NiAyIDEgMi4yMjM4NiAxIDIuNVY3SDdWMlpNOCAyVjdIMTRWMi41QzE0IDIuMjIzODYgMTMuNzc2MSAyIDEzLjUgMkg4Wk03IDhIMVYxMi41QzEgMTIuNzc2MSAxLjIyMzg2IDEzIDEuNSAxM0g3VjhaTTggMTNWOEgxNFYxMi41QzE0IDEyLjc3NjEgMTMuNzc2MSAxMyAxMy41IDEzSDhaTTEuNSAxQzAuNjcxNTczIDEgMCAxLjY3MTU3IDAgMi41VjEyLjVDMCAxMy4zMjg0IDAuNjcxNTczIDE0IDEuNSAxNEgxMy41QzE0LjMyODQgMTQgMTUgMTMuMzI4NCAxNSAxMi41VjIuNUMxNSAxLjY3MTU3IDE0LjMyODQgMSAxMy41IDFIMS41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sRW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTEuNSAySDEzLjVDMTMuNzc2MSAyIDE0IDIuMjIzODYgMTQgMi41VjdIMVYyLjVDMSAyLjIyMzg2IDEuMjIzODYgMiAxLjUgMlpNMSA4VjEyLjVDMSAxMi43NzYxIDEuMjIzODYgMTMgMS41IDEzSDEzLjVDMTMuNzc2MSAxMyAxNCAxMi43NzYxIDE0IDEyLjVWOEgxWk0wIDIuNUMwIDEuNjcxNTcgMC42NzE1NzMgMSAxLjUgMUgxMy41QzE0LjMyODQgMSAxNSAxLjY3MTU3IDE1IDIuNVYxMi41QzE1IDEzLjMyODQgMTQuMzI4NCAxNCAxMy41IDE0SDEuNUMwLjY3MTU3MyAxNCAwIDEzLjMyODQgMCAxMi41VjIuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFNvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xNCAyLjU4NzExTDEuODUxNjMgMTNIMTMuNUMxMy43NzYxIDEzIDE0IDEyLjc3NjEgMTQgMTIuNVYyLjU4NzExWk0wLjc2Mjg3OSAxMy44MDY3TDAuODI1Mzk2IDEzLjg3OTZMMC44NTQ3MTcgMTMuODU0NUMxLjA1MDE3IDEzLjk0NzggMS4yNjg5OSAxNCAxLjUgMTRIMTMuNUMxNC4zMjg0IDE0IDE1IDEzLjMyODQgMTUgMTIuNVYyLjVDMTUgMS45Mzk0OSAxNC42OTI2IDEuNDUwNzggMTQuMjM3MSAxLjE5MzMxTDE0LjE3NDYgMS4xMjAzN0wxNC4xNDUzIDEuMTQ1NUMxMy45NDk4IDEuMDUyMjIgMTMuNzMxIDEgMTMuNSAxSDEuNUMwLjY3MTU3MyAxIDAgMS42NzE1NyAwIDIuNVYxMi41QzAgMTMuMDYwNSAwLjMwNzQzNSAxMy41NDkyIDAuNzYyODc5IDEzLjgwNjdaTTEgMTIuNDEyOUwxMy4xNDg0IDJIMS41QzEuMjIzODYgMiAxIDIuMjIzODYgMSAyLjVWMTIuNDEyOVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFBvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk04IDJIMTMuNUMxMy43NzYxIDIgMTQgMi4yMjM4NiAxNCAyLjVWMTIuNUMxNCAxMi43NzYxIDEzLjc3NjEgMTMgMTMuNSAxM0g4VjJaTTcgMkgxLjVDMS4yMjM4NiAyIDEgMi4yMjM4NiAxIDIuNVYxMi41QzEgMTIuNzc2MSAxLjIyMzg2IDEzIDEuNSAxM0g3VjJaTTAgMi41QzAgMS42NzE1NyAwLjY3MTU3MyAxIDEuNSAxSDEzLjVDMTQuMzI4NCAxIDE1IDEuNjcxNTcgMTUgMi41VjEyLjVDMTUgMTMuMzI4NCAxNC4zMjg0IDE0IDEzLjUgMTRIMS41QzAuNjcxNTczIDE0IDAgMTMuMzI4NCAwIDEyLjVWMi41WlwiLGZpbGw6bixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pKX0sSG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb2xvcixuPXZvaWQgMD09PXQ/XCJjdXJyZW50Q29sb3JcIjp0LGk9byhlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxyLmNyZWF0ZUVsZW1lbnQpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpKSwoMCxyLmNyZWF0ZUVsZW1lbnQpKFwicGF0aFwiLHtkOlwiTTQuODE4MTIgNC42ODE2MUM0Ljk5Mzg2IDQuODU3MzQgNC45OTM4NiA1LjE0MjI3IDQuODE4MTIgNS4zMThMMy4wODYzMiA3LjA0OThIMTEuOTEzNUwxMC4xODE3IDUuMzE4QzEwLjAwNiA1LjE0MjI3IDEwLjAwNiA0Ljg1NzM0IDEwLjE4MTcgNC42ODE2MUMxMC4zNTc1IDQuNTA1ODcgMTAuNjQyNCA0LjUwNTg3IDEwLjgxODEgNC42ODE2MUwxMy4zMTgxIDcuMTgxNjFDMTMuNDkzOSA3LjM1NzM0IDEzLjQ5MzkgNy42NDIyNyAxMy4zMTgxIDcuODE4TDEwLjgxODEgMTAuMzE4QzEwLjY0MjQgMTAuNDkzNyAxMC4zNTc1IDEwLjQ5MzcgMTAuMTgxNyAxMC4zMThDMTAuMDA2IDEwLjE0MjMgMTAuMDA2IDkuODU3MzQgMTAuMTgxNyA5LjY4MTYxTDExLjkxMzUgNy45NDk4SDMuMDg2MzJMNC44MTgxMiA5LjY4MTYxQzQuOTkzODYgOS44NTczNCA0Ljk5Mzg2IDEwLjE0MjMgNC44MTgxMiAxMC4zMThDNC42NDIzOSAxMC40OTM3IDQuMzU3NDYgMTAuNDkzNyA0LjE4MTczIDEwLjMxOEwxLjY4MTczIDcuODE4QzEuNTA1OTkgNy42NDIyNyAxLjUwNTk5IDcuMzU3MzQgMS42ODE3MyA3LjE4MTYxTDQuMTgxNzMgNC42ODE2MUM0LjM1NzQ2IDQuNTA1ODcgNC42NDIzOSA0LjUwNTg3IDQuODE4MTIgNC42ODE2MVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LGtvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk0xMCA2LjVDMTAgOC40MzMgOC40MzMgMTAgNi41IDEwQzQuNTY3IDEwIDMgOC40MzMgMyA2LjVDMyA0LjU2NyA0LjU2NyAzIDYuNSAzQzguNDMzIDMgMTAgNC41NjcgMTAgNi41Wk05LjMwODg0IDEwLjAxNTlDOC41MzkwMSAxMC42MzE4IDcuNTYyNTEgMTEgNi41IDExQzQuMDE0NzIgMTEgMiA4Ljk4NTI4IDIgNi41QzIgNC4wMTQ3MiA0LjAxNDcyIDIgNi41IDJDOC45ODUyOCAyIDExIDQuMDE0NzIgMTEgNi41QzExIDcuNTYyNTEgMTAuNjMxOCA4LjUzOTAxIDEwLjAxNTkgOS4zMDg4NEwxMi44NTM2IDEyLjE0NjRDMTMuMDQ4OCAxMi4zNDE3IDEzLjA0ODggMTIuNjU4MyAxMi44NTM2IDEyLjg1MzZDMTIuNjU4MyAxMy4wNDg4IDEyLjM0MTcgMTMuMDQ4OCAxMi4xNDY0IDEyLjg1MzZMOS4zMDg4NCAxMC4wMTU5Wk00LjI1IDYuNUM0LjI1IDYuMjIzODYgNC40NzM4NiA2IDQuNzUgNkg2VjQuNzVDNiA0LjQ3Mzg2IDYuMjIzODYgNC4yNSA2LjUgNC4yNUM2Ljc3NjE0IDQuMjUgNyA0LjQ3Mzg2IDcgNC43NVY2SDguMjVDOC41MjYxNCA2IDguNzUgNi4yMjM4NiA4Ljc1IDYuNUM4Ljc1IDYuNzc2MTQgOC41MjYxNCA3IDguMjUgN0g3VjguMjVDNyA4LjUyNjE0IDYuNzc2MTQgOC43NSA2LjUgOC43NUM2LjIyMzg2IDguNzUgNiA4LjUyNjE0IDYgOC4yNVY3SDQuNzVDNC40NzM4NiA3IDQuMjUgNi43NzYxNCA0LjI1IDYuNVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9LFZvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj12b2lkIDA9PT10P1wiY3VycmVudENvbG9yXCI6dCxpPW8oZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsci5jcmVhdGVFbGVtZW50KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0saSksKDAsci5jcmVhdGVFbGVtZW50KShcInBhdGhcIix7ZDpcIk02LjUgMTBDOC40MzMgMTAgMTAgOC40MzMgMTAgNi41QzEwIDQuNTY3IDguNDMzIDMgNi41IDNDNC41NjcgMyAzIDQuNTY3IDMgNi41QzMgOC40MzMgNC41NjcgMTAgNi41IDEwWk02LjUgMTFDNy41NjI1MSAxMSA4LjUzOTAxIDEwLjYzMTggOS4zMDg4NCAxMC4wMTU5TDEyLjE0NjQgMTIuODUzNkMxMi4zNDE3IDEzLjA0ODggMTIuNjU4MyAxMy4wNDg4IDEyLjg1MzYgMTIuODUzNkMxMy4wNDg4IDEyLjY1ODMgMTMuMDQ4OCAxMi4zNDE3IDEyLjg1MzYgMTIuMTQ2NEwxMC4wMTU5IDkuMzA4ODRDMTAuNjMxOCA4LjUzOTAxIDExIDcuNTYyNTEgMTEgNi41QzExIDQuMDE0NzIgOC45ODUyOCAyIDYuNSAyQzQuMDE0NzIgMiAyIDQuMDE0NzIgMiA2LjVDMiA4Ljk4NTI4IDQuMDE0NzIgMTEgNi41IDExWk00Ljc1IDZDNC40NzM4NiA2IDQuMjUgNi4yMjM4NiA0LjI1IDYuNUM0LjI1IDYuNzc2MTQgNC40NzM4NiA3IDQuNzUgN0g4LjI1QzguNTI2MTQgNyA4Ljc1IDYuNzc2MTQgOC43NSA2LjVDOC43NSA2LjIyMzg2IDguNTI2MTQgNiA4LjI1IDZINC43NVpcIixmaWxsOm4sZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSl9fSw1Mjk5OihlLHQsbik9PntuLnIodCksbi5kKHQse2RlZmF1bHQ6KCk9Pmx9KTt2YXIgcj1uKDgwODEpLG89bi5uKHIpLGk9bigzNjQ1KSxhPW4ubihpKSgpKG8oKSk7YS5wdXNoKFtlLmlkLFwiLnJlYWN0LWNhbGVuZGFyIHtcXG4gIHdpZHRoOiAzNTBweDtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2EwYTA5NjtcXG4gIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xcbiAgbGluZS1oZWlnaHQ6IDEuMTI1ZW07XFxufVxcbi5yZWFjdC1jYWxlbmRhci0tZG91YmxlVmlldyB7XFxuICB3aWR0aDogNzAwcHg7XFxufVxcbi5yZWFjdC1jYWxlbmRhci0tZG91YmxlVmlldyAucmVhY3QtY2FsZW5kYXJfX3ZpZXdDb250YWluZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIG1hcmdpbjogLTAuNWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXItLWRvdWJsZVZpZXcgLnJlYWN0LWNhbGVuZGFyX192aWV3Q29udGFpbmVyID4gKiB7XFxuICB3aWR0aDogNTAlO1xcbiAgbWFyZ2luOiAwLjVlbTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyLFxcbi5yZWFjdC1jYWxlbmRhciAqLFxcbi5yZWFjdC1jYWxlbmRhciAqOmJlZm9yZSxcXG4ucmVhY3QtY2FsZW5kYXIgKjphZnRlciB7XFxuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXIgYnV0dG9uIHtcXG4gIG1hcmdpbjogMDtcXG4gIGJvcmRlcjogMDtcXG4gIG91dGxpbmU6IG5vbmU7XFxufVxcbi5yZWFjdC1jYWxlbmRhciBidXR0b246ZW5hYmxlZDpob3ZlciB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgaGVpZ2h0OiA0NHB4O1xcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb24gYnV0dG9uIHtcXG4gIG1pbi13aWR0aDogNDRweDtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiBidXR0b246ZGlzYWJsZWQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uIGJ1dHRvbjplbmFibGVkOmhvdmVyLFxcbi5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiBidXR0b246ZW5hYmxlZDpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzIHtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIGZvbnQtc2l6ZTogMC43NWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzX193ZWVrZGF5IHtcXG4gIHBhZGRpbmc6IDAuNWVtO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtOdW1iZXJzIC5yZWFjdC1jYWxlbmRhcl9fdGlsZSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZm9udC1zaXplOiAwLjc1ZW07XFxuICBmb250LXdlaWdodDogYm9sZDtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzX19kYXktLXdlZWtlbmQge1xcbiAgY29sb3I6ICNkMTAwMDA7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fZGF5c19fZGF5LS1uZWlnaGJvcmluZ01vbnRoIHtcXG4gIGNvbG9yOiAjNzU3NTc1O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3llYXItdmlldyAucmVhY3QtY2FsZW5kYXJfX3RpbGUsXFxuLnJlYWN0LWNhbGVuZGFyX19kZWNhZGUtdmlldyAucmVhY3QtY2FsZW5kYXJfX3RpbGUsXFxuLnJlYWN0LWNhbGVuZGFyX19jZW50dXJ5LXZpZXcgLnJlYWN0LWNhbGVuZGFyX190aWxlIHtcXG4gIHBhZGRpbmc6IDJlbSAwLjVlbTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlIHtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIHBhZGRpbmc6IDEwcHggNi42NjY3cHg7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZTpkaXNhYmxlZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGU6ZW5hYmxlZDpob3ZlcixcXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGU6ZW5hYmxlZDpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLW5vdyB7XFxuICBiYWNrZ3JvdW5kOiAjZmZmZjc2O1xcbn1cXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLW5vdzplbmFibGVkOmhvdmVyLFxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tbm93OmVuYWJsZWQ6Zm9jdXMge1xcbiAgYmFja2dyb3VuZDogI2ZmZmZhOTtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1oYXNBY3RpdmUge1xcbiAgYmFja2dyb3VuZDogIzc2YmFmZjtcXG59XFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1oYXNBY3RpdmU6ZW5hYmxlZDpob3ZlcixcXG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWhhc0FjdGl2ZTplbmFibGVkOmZvY3VzIHtcXG4gIGJhY2tncm91bmQ6ICNhOWQ0ZmY7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tYWN0aXZlIHtcXG4gIGJhY2tncm91bmQ6ICMwMDZlZGM7XFxuICBjb2xvcjogd2hpdGU7XFxufVxcbi5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tYWN0aXZlOmVuYWJsZWQ6aG92ZXIsXFxuLnJlYWN0LWNhbGVuZGFyX190aWxlLS1hY3RpdmU6ZW5hYmxlZDpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kOiAjMTA4N2ZmO1xcbn1cXG4ucmVhY3QtY2FsZW5kYXItLXNlbGVjdFJhbmdlIC5yZWFjdC1jYWxlbmRhcl9fdGlsZS0taG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcXG59XFxuXCIsXCJcIl0pO2NvbnN0IGw9YX0sMzY0NTplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiB0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKChmdW5jdGlvbih0KXt2YXIgbj1cIlwiLHI9dm9pZCAwIT09dFs1XTtyZXR1cm4gdFs0XSYmKG4rPVwiQHN1cHBvcnRzIChcIi5jb25jYXQodFs0XSxcIikge1wiKSksdFsyXSYmKG4rPVwiQG1lZGlhIFwiLmNvbmNhdCh0WzJdLFwiIHtcIikpLHImJihuKz1cIkBsYXllclwiLmNvbmNhdCh0WzVdLmxlbmd0aD4wP1wiIFwiLmNvbmNhdCh0WzVdKTpcIlwiLFwiIHtcIikpLG4rPWUodCksciYmKG4rPVwifVwiKSx0WzJdJiYobis9XCJ9XCIpLHRbNF0mJihuKz1cIn1cIiksbn0pKS5qb2luKFwiXCIpfSx0Lmk9ZnVuY3Rpb24oZSxuLHIsbyxpKXtcInN0cmluZ1wiPT10eXBlb2YgZSYmKGU9W1tudWxsLGUsdm9pZCAwXV0pO3ZhciBhPXt9O2lmKHIpZm9yKHZhciBsPTA7bDx0aGlzLmxlbmd0aDtsKyspe3ZhciBjPXRoaXNbbF1bMF07bnVsbCE9YyYmKGFbY109ITApfWZvcih2YXIgcz0wO3M8ZS5sZW5ndGg7cysrKXt2YXIgdT1bXS5jb25jYXQoZVtzXSk7ciYmYVt1WzBdXXx8KHZvaWQgMCE9PWkmJih2b2lkIDA9PT11WzVdfHwodVsxXT1cIkBsYXllclwiLmNvbmNhdCh1WzVdLmxlbmd0aD4wP1wiIFwiLmNvbmNhdCh1WzVdKTpcIlwiLFwiIHtcIikuY29uY2F0KHVbMV0sXCJ9XCIpKSx1WzVdPWkpLG4mJih1WzJdPyh1WzFdPVwiQG1lZGlhIFwiLmNvbmNhdCh1WzJdLFwiIHtcIikuY29uY2F0KHVbMV0sXCJ9XCIpLHVbMl09bik6dVsyXT1uKSxvJiYodVs0XT8odVsxXT1cIkBzdXBwb3J0cyAoXCIuY29uY2F0KHVbNF0sXCIpIHtcIikuY29uY2F0KHVbMV0sXCJ9XCIpLHVbNF09byk6dVs0XT1cIlwiLmNvbmNhdChvKSksdC5wdXNoKHUpKX19LHR9fSw4MDgxOmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV19fSw0NDgzOihlLHQsbik9PntmdW5jdGlvbiByKGUpe3JldHVybiByPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LHIoZSl9ZnVuY3Rpb24gbyhlLHQpe3JldHVybiBvPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sbyhlLHQpfWZ1bmN0aW9uIGkoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIGV9ZnVuY3Rpb24gYShlKXtyZXR1cm4gYT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sYShlKX1mdW5jdGlvbiBsKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7aWYoXCJvYmplY3RcIiE9PXIoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgbz1uLmNhbGwoZSxcInN0cmluZ1wiKTtpZihcIm9iamVjdFwiIT09cihvKSlyZXR1cm4gbzt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIil9cmV0dXJuIFN0cmluZyhlKX0oZSk7cmV0dXJuXCJzeW1ib2xcIj09PXIodCk/dDpTdHJpbmcodCl9dmFyIGM9big2Njg5KSxzPW4oNTY5NyksdT1uKDUzMDMpLmNyZWF0ZUZvY3VzVHJhcCxkPW4oODM4OCkuaXNGb2N1c2FibGUsZj1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksdCYmbyhlLHQpfShwLGUpO3ZhciB0LG4scyx1LGY9KHM9cCx1PWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZnVuY3Rpb24oKXt2YXIgZSx0PWEocyk7aWYodSl7dmFyIG49YSh0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KHQsYXJndW1lbnRzLG4pfWVsc2UgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZih0JiYoXCJvYmplY3RcIj09PXIodCl8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBpKGUpfSh0aGlzLGUpfSk7ZnVuY3Rpb24gcChlKXt2YXIgdCxuLHIsbzshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLHApLG49aSh0PWYuY2FsbCh0aGlzLGUpKSxvPWZ1bmN0aW9uKGUpe3ZhciB0LG49bnVsbCE9PSh0PXRoaXMuaW50ZXJuYWxPcHRpb25zW2VdKSYmdm9pZCAwIT09dD90OnRoaXMub3JpZ2luYWxPcHRpb25zW2VdO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4pe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KHI+MT9yLTE6MCksaT0xO2k8cjtpKyspb1tpLTFdPWFyZ3VtZW50c1tpXTtuPW4uYXBwbHkodm9pZCAwLG8pfWlmKCEwPT09biYmKG49dm9pZCAwKSwhbil7aWYodm9pZCAwPT09bnx8ITE9PT1uKXJldHVybiBuO3Rocm93IG5ldyBFcnJvcihcImBcIi5jb25jYXQoZSxcImAgd2FzIHNwZWNpZmllZCBidXQgd2FzIG5vdCBhIG5vZGUsIG9yIGRpZCBub3QgcmV0dXJuIGEgbm9kZVwiKSl9dmFyIGEsbD1uO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBuJiYhKGw9bnVsbD09PShhPXRoaXMuZ2V0RG9jdW1lbnQoKSl8fHZvaWQgMD09PWE/dm9pZCAwOmEucXVlcnlTZWxlY3RvcihuKSkpdGhyb3cgbmV3IEVycm9yKFwiYFwiLmNvbmNhdChlLFwiYCBhcyBzZWxlY3RvciByZWZlcnMgdG8gbm8ga25vd24gbm9kZVwiKSk7cmV0dXJuIGx9LChyPWwocj1cImdldE5vZGVGb3JPcHRpb25cIikpaW4gbj9PYmplY3QuZGVmaW5lUHJvcGVydHkobixyLHt2YWx1ZTpvLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bltyXT1vLHQuaGFuZGxlRGVhY3RpdmF0ZT10LmhhbmRsZURlYWN0aXZhdGUuYmluZChpKHQpKSx0LmhhbmRsZVBvc3REZWFjdGl2YXRlPXQuaGFuZGxlUG9zdERlYWN0aXZhdGUuYmluZChpKHQpKSx0LmhhbmRsZUNsaWNrT3V0c2lkZURlYWN0aXZhdGVzPXQuaGFuZGxlQ2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXMuYmluZChpKHQpKSx0LmludGVybmFsT3B0aW9ucz17cmV0dXJuRm9jdXNPbkRlYWN0aXZhdGU6ITEsY2hlY2tDYW5SZXR1cm5Gb2N1czpudWxsLG9uRGVhY3RpdmF0ZTp0LmhhbmRsZURlYWN0aXZhdGUsb25Qb3N0RGVhY3RpdmF0ZTp0LmhhbmRsZVBvc3REZWFjdGl2YXRlLGNsaWNrT3V0c2lkZURlYWN0aXZhdGVzOnQuaGFuZGxlQ2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXN9LHQub3JpZ2luYWxPcHRpb25zPXtyZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZTohMCxvbkRlYWN0aXZhdGU6bnVsbCxvblBvc3REZWFjdGl2YXRlOm51bGwsY2hlY2tDYW5SZXR1cm5Gb2N1czpudWxsLGNsaWNrT3V0c2lkZURlYWN0aXZhdGVzOiExfTt2YXIgYT1lLmZvY3VzVHJhcE9wdGlvbnM7Zm9yKHZhciBjIGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsYykmJihcInJldHVybkZvY3VzT25EZWFjdGl2YXRlXCIhPT1jJiZcIm9uRGVhY3RpdmF0ZVwiIT09YyYmXCJvblBvc3REZWFjdGl2YXRlXCIhPT1jJiZcImNoZWNrQ2FuUmV0dXJuRm9jdXNcIiE9PWMmJlwiY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXNcIiE9PWM/dC5pbnRlcm5hbE9wdGlvbnNbY109YVtjXTp0Lm9yaWdpbmFsT3B0aW9uc1tjXT1hW2NdKTtyZXR1cm4gdC5vdXRzaWRlQ2xpY2s9bnVsbCx0LmZvY3VzVHJhcEVsZW1lbnRzPWUuY29udGFpbmVyRWxlbWVudHN8fFtdLHQudXBkYXRlUHJldmlvdXNFbGVtZW50KCksdH1yZXR1cm4gdD1wLChuPVt7a2V5OlwiZ2V0RG9jdW1lbnRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3BzLmZvY3VzVHJhcE9wdGlvbnMuZG9jdW1lbnR8fChcInVuZGVmaW5lZFwiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKX19LHtrZXk6XCJnZXRSZXR1cm5Gb2N1c05vZGVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0Tm9kZUZvck9wdGlvbihcInNldFJldHVybkZvY3VzXCIsdGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpO3JldHVybiBlfHwhMSE9PWUmJnRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50fX0se2tleTpcInVwZGF0ZVByZXZpb3VzRWxlbWVudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXREb2N1bWVudCgpO2UmJih0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudD1lLmFjdGl2ZUVsZW1lbnQpfX0se2tleTpcImRlYWN0aXZhdGVUcmFwXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmZvY3VzVHJhcCYmdGhpcy5mb2N1c1RyYXAuYWN0aXZlJiZ0aGlzLmZvY3VzVHJhcC5kZWFjdGl2YXRlKHtyZXR1cm5Gb2N1czohMSxjaGVja0NhblJldHVybkZvY3VzOm51bGwsb25EZWFjdGl2YXRlOnRoaXMub3JpZ2luYWxPcHRpb25zLm9uRGVhY3RpdmF0ZX0pfX0se2tleTpcImhhbmRsZUNsaWNrT3V0c2lkZURlYWN0aXZhdGVzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5vcmlnaW5hbE9wdGlvbnMuY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM/dGhpcy5vcmlnaW5hbE9wdGlvbnMuY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXMuY2FsbChudWxsLGUpOnRoaXMub3JpZ2luYWxPcHRpb25zLmNsaWNrT3V0c2lkZURlYWN0aXZhdGVzO3JldHVybiB0JiYodGhpcy5vdXRzaWRlQ2xpY2s9e3RhcmdldDplLnRhcmdldCxhbGxvd0RlYWN0aXZhdGlvbjp0fSksdH19LHtrZXk6XCJoYW5kbGVEZWFjdGl2YXRlXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm9yaWdpbmFsT3B0aW9ucy5vbkRlYWN0aXZhdGUmJnRoaXMub3JpZ2luYWxPcHRpb25zLm9uRGVhY3RpdmF0ZS5jYWxsKG51bGwpLHRoaXMuZGVhY3RpdmF0ZVRyYXAoKX19LHtrZXk6XCJoYW5kbGVQb3N0RGVhY3RpdmF0ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWZ1bmN0aW9uKCl7dmFyIHQ9ZS5nZXRSZXR1cm5Gb2N1c05vZGUoKSxuPSEoIWUub3JpZ2luYWxPcHRpb25zLnJldHVybkZvY3VzT25EZWFjdGl2YXRlfHxudWxsPT10fHwhdC5mb2N1c3x8ZS5vdXRzaWRlQ2xpY2smJighZS5vdXRzaWRlQ2xpY2suYWxsb3dEZWFjdGl2YXRpb258fGQoZS5vdXRzaWRlQ2xpY2sudGFyZ2V0LGUuaW50ZXJuYWxPcHRpb25zLnRhYmJhYmxlT3B0aW9ucykpKSxyPWUuaW50ZXJuYWxPcHRpb25zLnByZXZlbnRTY3JvbGwsbz12b2lkIDAhPT1yJiZyO24mJnQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6b30pLGUub3JpZ2luYWxPcHRpb25zLm9uUG9zdERlYWN0aXZhdGUmJmUub3JpZ2luYWxPcHRpb25zLm9uUG9zdERlYWN0aXZhdGUuY2FsbChudWxsKSxlLm91dHNpZGVDbGljaz1udWxsfTt0aGlzLm9yaWdpbmFsT3B0aW9ucy5jaGVja0NhblJldHVybkZvY3VzP3RoaXMub3JpZ2luYWxPcHRpb25zLmNoZWNrQ2FuUmV0dXJuRm9jdXMuY2FsbChudWxsLHRoaXMuZ2V0UmV0dXJuRm9jdXNOb2RlKCkpLnRoZW4odCx0KTp0KCl9fSx7a2V5Olwic2V0dXBGb2N1c1RyYXBcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZm9jdXNUcmFwP3RoaXMucHJvcHMuYWN0aXZlJiYhdGhpcy5mb2N1c1RyYXAuYWN0aXZlJiYodGhpcy5mb2N1c1RyYXAuYWN0aXZhdGUoKSx0aGlzLnByb3BzLnBhdXNlZCYmdGhpcy5mb2N1c1RyYXAucGF1c2UoKSk6dGhpcy5mb2N1c1RyYXBFbGVtZW50cy5zb21lKEJvb2xlYW4pJiYodGhpcy5mb2N1c1RyYXA9dGhpcy5wcm9wcy5fY3JlYXRlRm9jdXNUcmFwKHRoaXMuZm9jdXNUcmFwRWxlbWVudHMsdGhpcy5pbnRlcm5hbE9wdGlvbnMpLHRoaXMucHJvcHMuYWN0aXZlJiZ0aGlzLmZvY3VzVHJhcC5hY3RpdmF0ZSgpLHRoaXMucHJvcHMucGF1c2VkJiZ0aGlzLmZvY3VzVHJhcC5wYXVzZSgpKX19LHtrZXk6XCJjb21wb25lbnREaWRNb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5wcm9wcy5hY3RpdmUmJnRoaXMuc2V0dXBGb2N1c1RyYXAoKX19LHtrZXk6XCJjb21wb25lbnREaWRVcGRhdGVcIix2YWx1ZTpmdW5jdGlvbihlKXtpZih0aGlzLmZvY3VzVHJhcCl7ZS5jb250YWluZXJFbGVtZW50cyE9PXRoaXMucHJvcHMuY29udGFpbmVyRWxlbWVudHMmJnRoaXMuZm9jdXNUcmFwLnVwZGF0ZUNvbnRhaW5lckVsZW1lbnRzKHRoaXMucHJvcHMuY29udGFpbmVyRWxlbWVudHMpO3ZhciB0PSFlLmFjdGl2ZSYmdGhpcy5wcm9wcy5hY3RpdmUsbj1lLmFjdGl2ZSYmIXRoaXMucHJvcHMuYWN0aXZlLHI9IWUucGF1c2VkJiZ0aGlzLnByb3BzLnBhdXNlZCxvPWUucGF1c2VkJiYhdGhpcy5wcm9wcy5wYXVzZWQ7aWYodCYmKHRoaXMudXBkYXRlUHJldmlvdXNFbGVtZW50KCksdGhpcy5mb2N1c1RyYXAuYWN0aXZhdGUoKSksbilyZXR1cm4gdm9pZCB0aGlzLmRlYWN0aXZhdGVUcmFwKCk7ciYmdGhpcy5mb2N1c1RyYXAucGF1c2UoKSxvJiZ0aGlzLmZvY3VzVHJhcC51bnBhdXNlKCl9ZWxzZSBlLmNvbnRhaW5lckVsZW1lbnRzIT09dGhpcy5wcm9wcy5jb250YWluZXJFbGVtZW50cyYmKHRoaXMuZm9jdXNUcmFwRWxlbWVudHM9dGhpcy5wcm9wcy5jb250YWluZXJFbGVtZW50cyksdGhpcy5wcm9wcy5hY3RpdmUmJih0aGlzLnVwZGF0ZVByZXZpb3VzRWxlbWVudCgpLHRoaXMuc2V0dXBGb2N1c1RyYXAoKSl9fSx7a2V5OlwiY29tcG9uZW50V2lsbFVubW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGVhY3RpdmF0ZVRyYXAoKX19LHtrZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLmNoaWxkcmVuP2MuQ2hpbGRyZW4ub25seSh0aGlzLnByb3BzLmNoaWxkcmVuKTp2b2lkIDA7aWYodCl7aWYodC50eXBlJiZ0LnR5cGU9PT1jLkZyYWdtZW50KXRocm93IG5ldyBFcnJvcihcIkEgZm9jdXMtdHJhcCBjYW5ub3QgdXNlIGEgRnJhZ21lbnQgYXMgaXRzIGNoaWxkIGNvbnRhaW5lci4gVHJ5IHJlcGxhY2luZyBpdCB3aXRoIGEgPGRpdj4gZWxlbWVudC5cIik7cmV0dXJuIGMuY2xvbmVFbGVtZW50KHQse3JlZjpmdW5jdGlvbihuKXt2YXIgcj1lLnByb3BzLmNvbnRhaW5lckVsZW1lbnRzO3QmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnJlZj90LnJlZihuKTp0LnJlZiYmKHQucmVmLmN1cnJlbnQ9bikpLGUuZm9jdXNUcmFwRWxlbWVudHM9cnx8W25dfX0pfXJldHVybiBudWxsfX1dKSYmZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbChyLmtleSkscil9fSh0LnByb3RvdHlwZSxuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInByb3RvdHlwZVwiLHt3cml0YWJsZTohMX0pLHB9KGMuQ29tcG9uZW50KSxwPVwidW5kZWZpbmVkXCI9PXR5cGVvZiBFbGVtZW50P0Z1bmN0aW9uOkVsZW1lbnQ7Zi5wcm9wVHlwZXM9e2FjdGl2ZTpzLmJvb2wscGF1c2VkOnMuYm9vbCxmb2N1c1RyYXBPcHRpb25zOnMuc2hhcGUoe2RvY3VtZW50OnMub2JqZWN0LG9uQWN0aXZhdGU6cy5mdW5jLG9uUG9zdEFjdGl2YXRlOnMuZnVuYyxjaGVja0NhbkZvY3VzVHJhcDpzLmZ1bmMsb25EZWFjdGl2YXRlOnMuZnVuYyxvblBvc3REZWFjdGl2YXRlOnMuZnVuYyxjaGVja0NhblJldHVybkZvY3VzOnMuZnVuYyxpbml0aWFsRm9jdXM6cy5vbmVPZlR5cGUoW3MuaW5zdGFuY2VPZihwKSxzLnN0cmluZyxzLmJvb2wscy5mdW5jXSksZmFsbGJhY2tGb2N1czpzLm9uZU9mVHlwZShbcy5pbnN0YW5jZU9mKHApLHMuc3RyaW5nLHMuZnVuY10pLGVzY2FwZURlYWN0aXZhdGVzOnMub25lT2ZUeXBlKFtzLmJvb2wscy5mdW5jXSksY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM6cy5vbmVPZlR5cGUoW3MuYm9vbCxzLmZ1bmNdKSxyZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZTpzLmJvb2wsc2V0UmV0dXJuRm9jdXM6cy5vbmVPZlR5cGUoW3MuaW5zdGFuY2VPZihwKSxzLnN0cmluZyxzLmJvb2wscy5mdW5jXSksYWxsb3dPdXRzaWRlQ2xpY2s6cy5vbmVPZlR5cGUoW3MuYm9vbCxzLmZ1bmNdKSxwcmV2ZW50U2Nyb2xsOnMuYm9vbCx0YWJiYWJsZU9wdGlvbnM6cy5zaGFwZSh7ZGlzcGxheUNoZWNrOnMub25lT2YoW1wiZnVsbFwiLFwibGVnYWN5LWZ1bGxcIixcIm5vbi16ZXJvLWFyZWFcIixcIm5vbmVcIl0pLGdldFNoYWRvd1Jvb3Q6cy5vbmVPZlR5cGUoW3MuYm9vbCxzLmZ1bmNdKX0pLHRyYXBTdGFjazpzLmFycmF5LGlzS2V5Rm9yd2FyZDpzLmZ1bmMsaXNLZXlCYWNrd2FyZDpzLmZ1bmN9KSxjb250YWluZXJFbGVtZW50czpzLmFycmF5T2Yocy5pbnN0YW5jZU9mKHApKSxjaGlsZHJlbjpzLm9uZU9mVHlwZShbcy5lbGVtZW50LHMuaW5zdGFuY2VPZihwKV0pfSxmLmRlZmF1bHRQcm9wcz17YWN0aXZlOiEwLHBhdXNlZDohMSxmb2N1c1RyYXBPcHRpb25zOnt9LF9jcmVhdGVGb2N1c1RyYXA6dX0sZS5leHBvcnRzPWZ9LDUzMDM6KGUsdCxuKT0+e24ucih0KSxuLmQodCx7Y3JlYXRlRm9jdXNUcmFwOigpPT5ofSk7dmFyIHI9big4Mzg4KTtmdW5jdGlvbiBvKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBpKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP28oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXthKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpvKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGEoZSx0LG4pe3JldHVybih0PWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGV8fG51bGw9PT1lKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgcj1uLmNhbGwoZSxcInN0cmluZ1wiKTtpZihcIm9iamVjdFwiIT10eXBlb2YgcilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIil9cmV0dXJuIFN0cmluZyhlKX0oZSk7cmV0dXJuXCJzeW1ib2xcIj09dHlwZW9mIHQ/dDpTdHJpbmcodCl9KHQpKWluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBsPWZ1bmN0aW9uKGUpe3JldHVyblwiVGFiXCI9PT1lLmtleXx8OT09PWUua2V5Q29kZX0sYz1mdW5jdGlvbihlKXtyZXR1cm4gbChlKSYmIWUuc2hpZnRLZXl9LHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSkmJmUuc2hpZnRLZXl9LHU9ZnVuY3Rpb24oZSl7cmV0dXJuIHNldFRpbWVvdXQoZSwwKX0sZD1mdW5jdGlvbihlLHQpe3ZhciBuPS0xO3JldHVybiBlLmV2ZXJ5KChmdW5jdGlvbihlLHIpe3JldHVybiF0KGUpfHwobj1yLCExKX0pKSxufSxmPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2UuYXBwbHkodm9pZCAwLG4pOmV9LHA9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFyZ2V0LnNoYWRvd1Jvb3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29tcG9zZWRQYXRoP2UuY29tcG9zZWRQYXRoKClbMF06ZS50YXJnZXR9LEM9W10saD1mdW5jdGlvbihlLHQpe3ZhciBuLG89KG51bGw9PXQ/dm9pZCAwOnQuZG9jdW1lbnQpfHxkb2N1bWVudCxhPShudWxsPT10P3ZvaWQgMDp0LnRyYXBTdGFjayl8fEMsaD1pKHtyZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZTohMCxlc2NhcGVEZWFjdGl2YXRlczohMCxkZWxheUluaXRpYWxGb2N1czohMCxpc0tleUZvcndhcmQ6Yyxpc0tleUJhY2t3YXJkOnN9LHQpLHY9e2NvbnRhaW5lcnM6W10sY29udGFpbmVyR3JvdXBzOltdLHRhYmJhYmxlR3JvdXBzOltdLG5vZGVGb2N1c2VkQmVmb3JlQWN0aXZhdGlvbjpudWxsLG1vc3RSZWNlbnRseUZvY3VzZWROb2RlOm51bGwsYWN0aXZlOiExLHBhdXNlZDohMSxkZWxheUluaXRpYWxGb2N1c1RpbWVyOnZvaWQgMH0sZz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGUmJnZvaWQgMCE9PWVbdF0/ZVt0XTpoW258fHRdfSxtPWZ1bmN0aW9uKGUpe3JldHVybiB2LmNvbnRhaW5lckdyb3Vwcy5maW5kSW5kZXgoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuY29udGFpbmVyLHI9dC50YWJiYWJsZU5vZGVzO3JldHVybiBuLmNvbnRhaW5zKGUpfHxyLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0PT09ZX0pKX0pKX0sdz1mdW5jdGlvbihlKXt2YXIgdD1oW2VdO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4+MT9uLTE6MCksaT0xO2k8bjtpKyspcltpLTFdPWFyZ3VtZW50c1tpXTt0PXQuYXBwbHkodm9pZCAwLHIpfWlmKCEwPT09dCYmKHQ9dm9pZCAwKSwhdCl7aWYodm9pZCAwPT09dHx8ITE9PT10KXJldHVybiB0O3Rocm93IG5ldyBFcnJvcihcImBcIi5jb25jYXQoZSxcImAgd2FzIHNwZWNpZmllZCBidXQgd2FzIG5vdCBhIG5vZGUsIG9yIGRpZCBub3QgcmV0dXJuIGEgbm9kZVwiKSl9dmFyIGE9dDtpZihcInN0cmluZ1wiPT10eXBlb2YgdCYmIShhPW8ucXVlcnlTZWxlY3Rvcih0KSkpdGhyb3cgbmV3IEVycm9yKFwiYFwiLmNvbmNhdChlLFwiYCBhcyBzZWxlY3RvciByZWZlcnMgdG8gbm8ga25vd24gbm9kZVwiKSk7cmV0dXJuIGF9LHk9ZnVuY3Rpb24oKXt2YXIgZT13KFwiaW5pdGlhbEZvY3VzXCIpO2lmKCExPT09ZSlyZXR1cm4hMTtpZih2b2lkIDA9PT1lKWlmKG0oby5hY3RpdmVFbGVtZW50KT49MCllPW8uYWN0aXZlRWxlbWVudDtlbHNle3ZhciB0PXYudGFiYmFibGVHcm91cHNbMF07ZT10JiZ0LmZpcnN0VGFiYmFibGVOb2RlfHx3KFwiZmFsbGJhY2tGb2N1c1wiKX1pZighZSl0aHJvdyBuZXcgRXJyb3IoXCJZb3VyIGZvY3VzLXRyYXAgbmVlZHMgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgZm9jdXNhYmxlIGVsZW1lbnRcIik7cmV0dXJuIGV9LGI9ZnVuY3Rpb24oKXtpZih2LmNvbnRhaW5lckdyb3Vwcz12LmNvbnRhaW5lcnMubWFwKChmdW5jdGlvbihlKXt2YXIgdD0oMCxyLnRhYmJhYmxlKShlLGgudGFiYmFibGVPcHRpb25zKSxuPSgwLHIuZm9jdXNhYmxlKShlLGgudGFiYmFibGVPcHRpb25zKTtyZXR1cm57Y29udGFpbmVyOmUsdGFiYmFibGVOb2Rlczp0LGZvY3VzYWJsZU5vZGVzOm4sZmlyc3RUYWJiYWJsZU5vZGU6dC5sZW5ndGg+MD90WzBdOm51bGwsbGFzdFRhYmJhYmxlTm9kZTp0Lmxlbmd0aD4wP3RbdC5sZW5ndGgtMV06bnVsbCxuZXh0VGFiYmFibGVOb2RlOmZ1bmN0aW9uKGUpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sbz1uLmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1lfSkpO2lmKCEobzwwKSlyZXR1cm4gdD9uLnNsaWNlKG8rMSkuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuKDAsci5pc1RhYmJhYmxlKShlLGgudGFiYmFibGVPcHRpb25zKX0pKTpuLnNsaWNlKDAsbykucmV2ZXJzZSgpLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybigwLHIuaXNUYWJiYWJsZSkoZSxoLnRhYmJhYmxlT3B0aW9ucyl9KSl9fX0pKSx2LnRhYmJhYmxlR3JvdXBzPXYuY29udGFpbmVyR3JvdXBzLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFiYmFibGVOb2Rlcy5sZW5ndGg+MH0pKSx2LnRhYmJhYmxlR3JvdXBzLmxlbmd0aDw9MCYmIXcoXCJmYWxsYmFja0ZvY3VzXCIpKXRocm93IG5ldyBFcnJvcihcIllvdXIgZm9jdXMtdHJhcCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGNvbnRhaW5lciB3aXRoIGF0IGxlYXN0IG9uZSB0YWJiYWJsZSBub2RlIGluIGl0IGF0IGFsbCB0aW1lc1wiKX0seD1mdW5jdGlvbiBlKHQpeyExIT09dCYmdCE9PW8uYWN0aXZlRWxlbWVudCYmKHQmJnQuZm9jdXM/KHQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ISFoLnByZXZlbnRTY3JvbGx9KSx2Lm1vc3RSZWNlbnRseUZvY3VzZWROb2RlPXQsZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFnTmFtZSYmXCJpbnB1dFwiPT09ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuc2VsZWN0fSh0KSYmdC5zZWxlY3QoKSk6ZSh5KCkpKX0sTz1mdW5jdGlvbihlKXt2YXIgdD13KFwic2V0UmV0dXJuRm9jdXNcIixlKTtyZXR1cm4gdHx8ITEhPT10JiZlfSxMPWZ1bmN0aW9uKGUpe3ZhciB0PXAoZSk7bSh0KT49MHx8KGYoaC5jbGlja091dHNpZGVEZWFjdGl2YXRlcyxlKT9uLmRlYWN0aXZhdGUoe3JldHVybkZvY3VzOmgucmV0dXJuRm9jdXNPbkRlYWN0aXZhdGV9KTpmKGguYWxsb3dPdXRzaWRlQ2xpY2ssZSl8fGUucHJldmVudERlZmF1bHQoKSl9LF89ZnVuY3Rpb24oZSl7dmFyIHQ9cChlKSxuPW0odCk+PTA7bnx8dCBpbnN0YW5jZW9mIERvY3VtZW50P24mJih2Lm1vc3RSZWNlbnRseUZvY3VzZWROb2RlPXQpOihlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHgodi5tb3N0UmVjZW50bHlGb2N1c2VkTm9kZXx8eSgpKSl9LE09ZnVuY3Rpb24oZSl7aWYoKFwiRXNjYXBlXCI9PT0odD1lKS5rZXl8fFwiRXNjXCI9PT10LmtleXx8Mjc9PT10LmtleUNvZGUpJiYhMSE9PWYoaC5lc2NhcGVEZWFjdGl2YXRlcyxlKSlyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpLHZvaWQgbi5kZWFjdGl2YXRlKCk7dmFyIHQ7KGguaXNLZXlGb3J3YXJkKGUpfHxoLmlzS2V5QmFja3dhcmQoZSkpJiZmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLG49cChlKTtiKCk7dmFyIG89bnVsbDtpZih2LnRhYmJhYmxlR3JvdXBzLmxlbmd0aD4wKXt2YXIgaT1tKG4pLGE9aT49MD92LmNvbnRhaW5lckdyb3Vwc1tpXTp2b2lkIDA7aWYoaTwwKW89dD92LnRhYmJhYmxlR3JvdXBzW3YudGFiYmFibGVHcm91cHMubGVuZ3RoLTFdLmxhc3RUYWJiYWJsZU5vZGU6di50YWJiYWJsZUdyb3Vwc1swXS5maXJzdFRhYmJhYmxlTm9kZTtlbHNlIGlmKHQpe3ZhciBjPWQodi50YWJiYWJsZUdyb3VwcywoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5maXJzdFRhYmJhYmxlTm9kZTtyZXR1cm4gbj09PXR9KSk7aWYoYzwwJiYoYS5jb250YWluZXI9PT1ufHwoMCxyLmlzRm9jdXNhYmxlKShuLGgudGFiYmFibGVPcHRpb25zKSYmISgwLHIuaXNUYWJiYWJsZSkobixoLnRhYmJhYmxlT3B0aW9ucykmJiFhLm5leHRUYWJiYWJsZU5vZGUobiwhMSkpJiYoYz1pKSxjPj0wKXt2YXIgcz0wPT09Yz92LnRhYmJhYmxlR3JvdXBzLmxlbmd0aC0xOmMtMTtvPXYudGFiYmFibGVHcm91cHNbc10ubGFzdFRhYmJhYmxlTm9kZX1lbHNlIGwoZSl8fChvPWEubmV4dFRhYmJhYmxlTm9kZShuLCExKSl9ZWxzZXt2YXIgdT1kKHYudGFiYmFibGVHcm91cHMsKGZ1bmN0aW9uKGUpe3ZhciB0PWUubGFzdFRhYmJhYmxlTm9kZTtyZXR1cm4gbj09PXR9KSk7aWYodTwwJiYoYS5jb250YWluZXI9PT1ufHwoMCxyLmlzRm9jdXNhYmxlKShuLGgudGFiYmFibGVPcHRpb25zKSYmISgwLHIuaXNUYWJiYWJsZSkobixoLnRhYmJhYmxlT3B0aW9ucykmJiFhLm5leHRUYWJiYWJsZU5vZGUobikpJiYodT1pKSx1Pj0wKXt2YXIgZj11PT09di50YWJiYWJsZUdyb3Vwcy5sZW5ndGgtMT8wOnUrMTtvPXYudGFiYmFibGVHcm91cHNbZl0uZmlyc3RUYWJiYWJsZU5vZGV9ZWxzZSBsKGUpfHwobz1hLm5leHRUYWJiYWJsZU5vZGUobikpfX1lbHNlIG89dyhcImZhbGxiYWNrRm9jdXNcIik7byYmKGwoZSkmJmUucHJldmVudERlZmF1bHQoKSx4KG8pKX0oZSxoLmlzS2V5QmFja3dhcmQoZSkpfSxqPWZ1bmN0aW9uKGUpe3ZhciB0PXAoZSk7bSh0KT49MHx8ZihoLmNsaWNrT3V0c2lkZURlYWN0aXZhdGVzLGUpfHxmKGguYWxsb3dPdXRzaWRlQ2xpY2ssZSl8fChlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSl9LEU9ZnVuY3Rpb24oKXtpZih2LmFjdGl2ZSlyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihlLmxlbmd0aD4wKXt2YXIgbj1lW2UubGVuZ3RoLTFdO24hPT10JiZuLnBhdXNlKCl9dmFyIHI9ZS5pbmRleE9mKHQpOy0xPT09cnx8ZS5zcGxpY2UociwxKSxlLnB1c2godCl9KGEsbiksdi5kZWxheUluaXRpYWxGb2N1c1RpbWVyPWguZGVsYXlJbml0aWFsRm9jdXM/dSgoZnVuY3Rpb24oKXt4KHkoKSl9KSk6eCh5KCkpLG8uYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzaW5cIixfLCEwKSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixMLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9KSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsTCx7Y2FwdHVyZTohMCxwYXNzaXZlOiExfSksby5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixqLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9KSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsTSx7Y2FwdHVyZTohMCxwYXNzaXZlOiExfSksbn0sUz1mdW5jdGlvbigpe2lmKHYuYWN0aXZlKXJldHVybiBvLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsXywhMCksby5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsTCwhMCksby5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLEwsITApLG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsaiwhMCksby5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLE0sITApLG59O3JldHVybihuPXtnZXQgYWN0aXZlKCl7cmV0dXJuIHYuYWN0aXZlfSxnZXQgcGF1c2VkKCl7cmV0dXJuIHYucGF1c2VkfSxhY3RpdmF0ZTpmdW5jdGlvbihlKXtpZih2LmFjdGl2ZSlyZXR1cm4gdGhpczt2YXIgdD1nKGUsXCJvbkFjdGl2YXRlXCIpLG49ZyhlLFwib25Qb3N0QWN0aXZhdGVcIikscj1nKGUsXCJjaGVja0NhbkZvY3VzVHJhcFwiKTtyfHxiKCksdi5hY3RpdmU9ITAsdi5wYXVzZWQ9ITEsdi5ub2RlRm9jdXNlZEJlZm9yZUFjdGl2YXRpb249by5hY3RpdmVFbGVtZW50LHQmJnQoKTt2YXIgaT1mdW5jdGlvbigpe3ImJmIoKSxFKCksbiYmbigpfTtyZXR1cm4gcj8ocih2LmNvbnRhaW5lcnMuY29uY2F0KCkpLnRoZW4oaSxpKSx0aGlzKTooaSgpLHRoaXMpfSxkZWFjdGl2YXRlOmZ1bmN0aW9uKGUpe2lmKCF2LmFjdGl2ZSlyZXR1cm4gdGhpczt2YXIgdD1pKHtvbkRlYWN0aXZhdGU6aC5vbkRlYWN0aXZhdGUsb25Qb3N0RGVhY3RpdmF0ZTpoLm9uUG9zdERlYWN0aXZhdGUsY2hlY2tDYW5SZXR1cm5Gb2N1czpoLmNoZWNrQ2FuUmV0dXJuRm9jdXN9LGUpO2NsZWFyVGltZW91dCh2LmRlbGF5SW5pdGlhbEZvY3VzVGltZXIpLHYuZGVsYXlJbml0aWFsRm9jdXNUaW1lcj12b2lkIDAsUygpLHYuYWN0aXZlPSExLHYucGF1c2VkPSExLGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5pbmRleE9mKHQpOy0xIT09biYmZS5zcGxpY2UobiwxKSxlLmxlbmd0aD4wJiZlW2UubGVuZ3RoLTFdLnVucGF1c2UoKX0oYSxuKTt2YXIgcj1nKHQsXCJvbkRlYWN0aXZhdGVcIiksbz1nKHQsXCJvblBvc3REZWFjdGl2YXRlXCIpLGw9Zyh0LFwiY2hlY2tDYW5SZXR1cm5Gb2N1c1wiKSxjPWcodCxcInJldHVybkZvY3VzXCIsXCJyZXR1cm5Gb2N1c09uRGVhY3RpdmF0ZVwiKTtyJiZyKCk7dmFyIHM9ZnVuY3Rpb24oKXt1KChmdW5jdGlvbigpe2MmJngoTyh2Lm5vZGVGb2N1c2VkQmVmb3JlQWN0aXZhdGlvbikpLG8mJm8oKX0pKX07cmV0dXJuIGMmJmw/KGwoTyh2Lm5vZGVGb2N1c2VkQmVmb3JlQWN0aXZhdGlvbikpLnRoZW4ocyxzKSx0aGlzKToocygpLHRoaXMpfSxwYXVzZTpmdW5jdGlvbigpe3JldHVybiB2LnBhdXNlZHx8IXYuYWN0aXZlfHwodi5wYXVzZWQ9ITAsUygpKSx0aGlzfSx1bnBhdXNlOmZ1bmN0aW9uKCl7cmV0dXJuIHYucGF1c2VkJiZ2LmFjdGl2ZT8odi5wYXVzZWQ9ITEsYigpLEUoKSx0aGlzKTp0aGlzfSx1cGRhdGVDb250YWluZXJFbGVtZW50czpmdW5jdGlvbihlKXt2YXIgdD1bXS5jb25jYXQoZSkuZmlsdGVyKEJvb2xlYW4pO3JldHVybiB2LmNvbnRhaW5lcnM9dC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP28ucXVlcnlTZWxlY3RvcihlKTplfSkpLHYuYWN0aXZlJiZiKCksdGhpc319KS51cGRhdGVDb250YWluZXJFbGVtZW50cyhlKSxufX0sOTE0MTooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9big2NTUpLG89big2Njg5KSxpPW4oNDM5NCksYT1uKDM1NzMpLGw9big5Mjk0KSxjPW4oNDgzOSk7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJlwiZGVmYXVsdFwiaW4gZT9lOntkZWZhdWx0OmV9fXZhciB1PWZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBlJiZPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihuKXtpZihcImRlZmF1bHRcIiE9PW4pe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHIuZ2V0P3I6e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVbbl19fSl9fSkpLHQuZGVmYXVsdD1lLE9iamVjdC5mcmVlemUodCl9KG8pLGQ9cyhvKSxmPXMoYykscD1mdW5jdGlvbihlKXtyZXR1cm57aXNFbmFibGVkOmZ1bmN0aW9uKHQpe3JldHVybiBlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiEhdFtlXX0pKX19fSxDPXttZWFzdXJlTGF5b3V0OnAoW1wibGF5b3V0XCIsXCJsYXlvdXRJZFwiLFwiZHJhZ1wiLFwiX2xheW91dFJlc2V0VHJhbnNmb3JtXCJdKSxhbmltYXRpb246cChbXCJhbmltYXRlXCIsXCJleGl0XCIsXCJ2YXJpYW50c1wiLFwid2hpbGVIb3ZlclwiLFwid2hpbGVUYXBcIixcIndoaWxlRm9jdXNcIixcIndoaWxlRHJhZ1wiXSksZXhpdDpwKFtcImV4aXRcIl0pLGRyYWc6cChbXCJkcmFnXCIsXCJkcmFnQ29udHJvbHNcIl0pLGZvY3VzOnAoW1wid2hpbGVGb2N1c1wiXSksaG92ZXI6cChbXCJ3aGlsZUhvdmVyXCIsXCJvbkhvdmVyU3RhcnRcIixcIm9uSG92ZXJFbmRcIl0pLHRhcDpwKFtcIndoaWxlVGFwXCIsXCJvblRhcFwiLFwib25UYXBTdGFydFwiLFwib25UYXBDYW5jZWxcIl0pLHBhbjpwKFtcIm9uUGFuXCIsXCJvblBhblN0YXJ0XCIsXCJvblBhblNlc3Npb25TdGFydFwiLFwib25QYW5FbmRcIl0pLGxheW91dEFuaW1hdGlvbjpwKFtcImxheW91dFwiLFwibGF5b3V0SWRcIl0pfTtmdW5jdGlvbiBoKGUpe2Zvcih2YXIgdCBpbiBlKXt2YXIgbj1lW3RdO251bGwhPT1uJiYoQ1t0XS5Db21wb25lbnQ9bil9fXZhciB2PW8uY3JlYXRlQ29udGV4dCh7c3RyaWN0OiExfSksZz1PYmplY3Qua2V5cyhDKSxtPWcubGVuZ3RoLHc9by5jcmVhdGVDb250ZXh0KHt0cmFuc2Zvcm1QYWdlUG9pbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGlzU3RhdGljOiExfSkseT1vLmNyZWF0ZUNvbnRleHQoe30pO2Z1bmN0aW9uIGIoKXtyZXR1cm4gby51c2VDb250ZXh0KHkpLnZpc3VhbEVsZW1lbnR9dmFyIHg9by5jcmVhdGVDb250ZXh0KG51bGwpO2Z1bmN0aW9uIE8oZSl7dmFyIHQ9by51c2VSZWYobnVsbCk7cmV0dXJuIG51bGw9PT10LmN1cnJlbnQmJih0LmN1cnJlbnQ9ZSgpKSx0LmN1cnJlbnR9ZnVuY3Rpb24gTCgpe3ZhciBlPW8udXNlQ29udGV4dCh4KTtpZihudWxsPT09ZSlyZXR1cm5bITAsbnVsbF07dmFyIHQ9ZS5pc1ByZXNlbnQsbj1lLm9uRXhpdENvbXBsZXRlLHI9ZS5yZWdpc3RlcixpPUUoKTtyZXR1cm4gby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHIoaSl9KSxbXSksIXQmJm4/WyExLGZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PW4/dm9pZCAwOm4oaSl9XTpbITBdfWZ1bmN0aW9uIF8oZSl7cmV0dXJuIG51bGw9PT1lfHxlLmlzUHJlc2VudH12YXIgTT0wLGo9ZnVuY3Rpb24oKXtyZXR1cm4gTSsrfSxFPWZ1bmN0aW9uKCl7cmV0dXJuIE8oail9LFM9by5jcmVhdGVDb250ZXh0KG51bGwpLFA9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyxIPVA/by51c2VMYXlvdXRFZmZlY3Q6by51c2VFZmZlY3Q7ZnVuY3Rpb24gayhlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsXCJjdXJyZW50XCIpfWZ1bmN0aW9uIFYoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl9ZnVuY3Rpb24gUihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZXx8VihlKX1mdW5jdGlvbiBJKGUsdCxuLHIsbyl7dmFyIGk7cmV0dXJuIHZvaWQgMD09PXImJihyPXt9KSx2b2lkIDA9PT1vJiYobz17fSksXCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PW51bGw9PT0oaT1lLnZhcmlhbnRzKXx8dm9pZCAwPT09aT92b2lkIDA6aVt0XSksXCJmdW5jdGlvblwiPT10eXBlb2YgdD90KG51bGwhPW4/bjplLmN1c3RvbSxyLG8pOnR9ZnVuY3Rpb24gWihlLHQsbil7dmFyIHI9ZS5nZXRQcm9wcygpO3JldHVybiBJKHIsdCxudWxsIT1uP246ci5jdXN0b20sZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGUuZm9yRWFjaFZhbHVlKChmdW5jdGlvbihlLG4pe3JldHVybiB0W25dPWUuZ2V0KCl9KSksdH0oZSksZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGUuZm9yRWFjaFZhbHVlKChmdW5jdGlvbihlLG4pe3JldHVybiB0W25dPWUuZ2V0VmVsb2NpdHkoKX0pKSx0fShlKSl9ZnVuY3Rpb24gVChlKXt2YXIgdDtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZihudWxsPT09KHQ9ZS5hbmltYXRlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5zdGFydCl8fFIoZS5pbml0aWFsKXx8UihlLmFuaW1hdGUpfHxSKGUud2hpbGVIb3Zlcil8fFIoZS53aGlsZURyYWcpfHxSKGUud2hpbGVUYXApfHxSKGUud2hpbGVGb2N1cyl8fFIoZS5leGl0KX1mdW5jdGlvbiBBKGUpe3JldHVybiBCb29sZWFuKFQoZSl8fGUudmFyaWFudHMpfWZ1bmN0aW9uIEQoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5qb2luKFwiIFwiKTplfWZ1bmN0aW9uIEIoZSl7dmFyIHQ9ZS5wcmVsb2FkZWRGZWF0dXJlcyxuPWUuY3JlYXRlVmlzdWFsRWxlbWVudCxpPWUudXNlUmVuZGVyLGE9ZS51c2VWaXN1YWxTdGF0ZSxsPWUuQ29tcG9uZW50O3JldHVybiB0JiZoKHQpLG8uZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgYz1vLnVzZUNvbnRleHQodykuaXNTdGF0aWMscz1udWxsLGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1mdW5jdGlvbihlLHQpe2lmKFQoZSkpe3ZhciBuPWUuaW5pdGlhbCxyPWUuYW5pbWF0ZTtyZXR1cm57aW5pdGlhbDohMT09PW58fFIobik/bjp2b2lkIDAsYW5pbWF0ZTpSKHIpP3I6dm9pZCAwfX1yZXR1cm4hMSE9PWUuaW5oZXJpdD90Ont9fShlLG8udXNlQ29udGV4dCh5KSkscj1uLmluaXRpYWwsaT1uLmFuaW1hdGU7cmV0dXJuIG8udXNlTWVtbygoZnVuY3Rpb24oKXtyZXR1cm57aW5pdGlhbDpyLGFuaW1hdGU6aX19KSx0P1tEKHIpLEQoaSldOltdKX0oZSxjKSxmPWEoZSxjKTtyZXR1cm4hYyYmUCYmKGQudmlzdWFsRWxlbWVudD1mdW5jdGlvbihlLHQsbixpKXt2YXIgYT1vLnVzZUNvbnRleHQodyksbD1vLnVzZUNvbnRleHQodiksYz1iKCkscz1vLnVzZUNvbnRleHQoeCksdT1mdW5jdGlvbihlKXt2YXIgdD1lLmxheW91dElkLG49by51c2VDb250ZXh0KFMpO3JldHVybiBuJiZ2b2lkIDAhPT10P24rXCItXCIrdDp0fShuKSxkPW8udXNlUmVmKHZvaWQgMCk7aXx8KGk9bC5yZW5kZXJlciksIWQuY3VycmVudCYmaSYmKGQuY3VycmVudD1pKGUse3Zpc3VhbFN0YXRlOnQscGFyZW50OmMscHJvcHM6ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG4pLHtsYXlvdXRJZDp1fSkscHJlc2VuY2VJZDpudWxsPT1zP3ZvaWQgMDpzLmlkLGJsb2NrSW5pdGlhbEFuaW1hdGlvbjohMT09PShudWxsPT1zP3ZvaWQgMDpzLmluaXRpYWwpfSkpO3ZhciBmPWQuY3VycmVudDtyZXR1cm4gSCgoZnVuY3Rpb24oKXtmJiYoZi5zZXRQcm9wcyhyLl9fYXNzaWduKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxhKSxuKSx7bGF5b3V0SWQ6dX0pKSxmLmlzUHJlc2VudD1fKHMpLGYuaXNQcmVzZW5jZVJvb3Q9IWN8fGMucHJlc2VuY2VJZCE9PShudWxsPT1zP3ZvaWQgMDpzLmlkKSxmLnN5bmNSZW5kZXIoKSl9KSksby51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7dmFyIGU7ZiYmKG51bGw9PT0oZT1mLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09ZXx8ZS5hbmltYXRlQ2hhbmdlcygpKX0pKSxIKChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBudWxsPT1mP3ZvaWQgMDpmLm5vdGlmeVVubW91bnQoKX19KSxbXSksZn0obCxmLGUsbikscz1mdW5jdGlvbihlLHQsbil7dmFyIGk9W107aWYoby51c2VDb250ZXh0KHYpLCF0KXJldHVybiBudWxsO2Zvcih2YXIgYT0wO2E8bTthKyspe3ZhciBsPWdbYV0sYz1DW2xdLHM9Yy5pc0VuYWJsZWQsZD1jLkNvbXBvbmVudDtzKGUpJiZkJiZpLnB1c2godS5jcmVhdGVFbGVtZW50KGQsci5fX2Fzc2lnbih7a2V5Omx9LGUse3Zpc3VhbEVsZW1lbnQ6dH0pKSl9cmV0dXJuIGl9KGUsZC52aXN1YWxFbGVtZW50KSksdS5jcmVhdGVFbGVtZW50KHUuRnJhZ21lbnQsbnVsbCx1LmNyZWF0ZUVsZW1lbnQoeS5Qcm92aWRlcix7dmFsdWU6ZH0saShsLGUsZnVuY3Rpb24oZSx0LG4pe3JldHVybiBvLnVzZUNhbGxiYWNrKChmdW5jdGlvbihyKXt2YXIgbztyJiYobnVsbD09PShvPWUubW91bnQpfHx2b2lkIDA9PT1vfHxvLmNhbGwoZSxyKSksdCYmKHI/dC5tb3VudChyKTp0LnVubW91bnQoKSksbiYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4/bihyKTprKG4pJiYobi5jdXJyZW50PXIpKX0pLFt0XSl9KGYsZC52aXN1YWxFbGVtZW50LHQpLGYsYykpLHMpfSkpfWZ1bmN0aW9uICQoZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj17fSksQihlKHQsbikpfXZhciBuPW5ldyBNYXA7cmV0dXJuIG5ldyBQcm94eSh0LHtnZXQ6ZnVuY3Rpb24oZSxyKXtyZXR1cm4gbi5oYXMocil8fG4uc2V0KHIsdChyKSksbi5nZXQocil9fSl9dmFyIEY9W1wiYW5pbWF0ZVwiLFwiY2lyY2xlXCIsXCJkZWZzXCIsXCJkZXNjXCIsXCJlbGxpcHNlXCIsXCJnXCIsXCJpbWFnZVwiLFwibGluZVwiLFwiZmlsdGVyXCIsXCJtYXJrZXJcIixcIm1hc2tcIixcIm1ldGFkYXRhXCIsXCJwYXRoXCIsXCJwYXR0ZXJuXCIsXCJwb2x5Z29uXCIsXCJwb2x5bGluZVwiLFwicmVjdFwiLFwic3RvcFwiLFwic3ZnXCIsXCJzd2l0Y2hcIixcInN5bWJvbFwiLFwidGV4dFwiLFwidHNwYW5cIixcInVzZVwiLFwidmlld1wiXTtmdW5jdGlvbiBOKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiYhZS5pbmNsdWRlcyhcIi1cIikmJiEhKEYuaW5kZXhPZihlKT4tMXx8L1tBLVpdLy50ZXN0KGUpKX12YXIgej17fTtmdW5jdGlvbiBXKGUpe2Zvcih2YXIgdCBpbiBlKXpbdF09ZVt0XX12YXIgRz1bXCJcIixcIlhcIixcIllcIixcIlpcIl0sVT1bXCJ0cmFuc2Zvcm1QZXJzcGVjdGl2ZVwiLFwieFwiLFwieVwiLFwielwiXTtmdW5jdGlvbiBxKGUsdCl7cmV0dXJuIFUuaW5kZXhPZihlKS1VLmluZGV4T2YodCl9W1widHJhbnNsYXRlXCIsXCJzY2FsZVwiLFwicm90YXRlXCIsXCJza2V3XCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBHLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBVLnB1c2goZSt0KX0pKX0pKTt2YXIgWT1uZXcgU2V0KFUpO2Z1bmN0aW9uIEsoZSl7cmV0dXJuIFkuaGFzKGUpfXZhciBYPW5ldyBTZXQoW1wib3JpZ2luWFwiLFwib3JpZ2luWVwiLFwib3JpZ2luWlwiXSk7ZnVuY3Rpb24gUShlKXtyZXR1cm4gWC5oYXMoZSl9ZnVuY3Rpb24gSihlLHQpe3ZhciBuPXQubGF5b3V0LHI9dC5sYXlvdXRJZDtyZXR1cm4gSyhlKXx8UShlKXx8KG58fHZvaWQgMCE9PXIpJiYoISF6W2VdfHxcIm9wYWNpdHlcIj09PWUpfXZhciBlZT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZlLmdldFZlbG9jaXR5fSx0ZT17eDpcInRyYW5zbGF0ZVhcIix5OlwidHJhbnNsYXRlWVwiLHo6XCJ0cmFuc2xhdGVaXCIsdHJhbnNmb3JtUGVyc3BlY3RpdmU6XCJwZXJzcGVjdGl2ZVwifTtmdW5jdGlvbiBuZShlKXtyZXR1cm4gZS5zdGFydHNXaXRoKFwiLS1cIil9dmFyIHJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQmJlwibnVtYmVyXCI9PXR5cGVvZiBlP3QudHJhbnNmb3JtKGUpOmV9LG9lPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxhLm51bWJlcikse3RyYW5zZm9ybTpNYXRoLnJvdW5kfSksaWU9e2JvcmRlcldpZHRoOmEucHgsYm9yZGVyVG9wV2lkdGg6YS5weCxib3JkZXJSaWdodFdpZHRoOmEucHgsYm9yZGVyQm90dG9tV2lkdGg6YS5weCxib3JkZXJMZWZ0V2lkdGg6YS5weCxib3JkZXJSYWRpdXM6YS5weCxyYWRpdXM6YS5weCxib3JkZXJUb3BMZWZ0UmFkaXVzOmEucHgsYm9yZGVyVG9wUmlnaHRSYWRpdXM6YS5weCxib3JkZXJCb3R0b21SaWdodFJhZGl1czphLnB4LGJvcmRlckJvdHRvbUxlZnRSYWRpdXM6YS5weCx3aWR0aDphLnB4LG1heFdpZHRoOmEucHgsaGVpZ2h0OmEucHgsbWF4SGVpZ2h0OmEucHgsc2l6ZTphLnB4LHRvcDphLnB4LHJpZ2h0OmEucHgsYm90dG9tOmEucHgsbGVmdDphLnB4LHBhZGRpbmc6YS5weCxwYWRkaW5nVG9wOmEucHgscGFkZGluZ1JpZ2h0OmEucHgscGFkZGluZ0JvdHRvbTphLnB4LHBhZGRpbmdMZWZ0OmEucHgsbWFyZ2luOmEucHgsbWFyZ2luVG9wOmEucHgsbWFyZ2luUmlnaHQ6YS5weCxtYXJnaW5Cb3R0b206YS5weCxtYXJnaW5MZWZ0OmEucHgscm90YXRlOmEuZGVncmVlcyxyb3RhdGVYOmEuZGVncmVlcyxyb3RhdGVZOmEuZGVncmVlcyxyb3RhdGVaOmEuZGVncmVlcyxzY2FsZTphLnNjYWxlLHNjYWxlWDphLnNjYWxlLHNjYWxlWTphLnNjYWxlLHNjYWxlWjphLnNjYWxlLHNrZXc6YS5kZWdyZWVzLHNrZXdYOmEuZGVncmVlcyxza2V3WTphLmRlZ3JlZXMsZGlzdGFuY2U6YS5weCx0cmFuc2xhdGVYOmEucHgsdHJhbnNsYXRlWTphLnB4LHRyYW5zbGF0ZVo6YS5weCx4OmEucHgseTphLnB4LHo6YS5weCxwZXJzcGVjdGl2ZTphLnB4LHRyYW5zZm9ybVBlcnNwZWN0aXZlOmEucHgsb3BhY2l0eTphLmFscGhhLG9yaWdpblg6YS5wcm9ncmVzc1BlcmNlbnRhZ2Usb3JpZ2luWTphLnByb2dyZXNzUGVyY2VudGFnZSxvcmlnaW5aOmEucHgsekluZGV4Om9lLGZpbGxPcGFjaXR5OmEuYWxwaGEsc3Ryb2tlT3BhY2l0eTphLmFscGhhLG51bU9jdGF2ZXM6b2V9O2Z1bmN0aW9uIGFlKGUsdCxuLHIsbyxpLGEsbCl7dmFyIGMscz1lLnN0eWxlLHU9ZS52YXJzLGQ9ZS50cmFuc2Zvcm0sZj1lLnRyYW5zZm9ybUtleXMscD1lLnRyYW5zZm9ybU9yaWdpbjtmLmxlbmd0aD0wO3ZhciBDPSExLGg9ITEsdj0hMDtmb3IodmFyIGcgaW4gdCl7dmFyIG09dFtnXTtpZihuZShnKSl1W2ddPW07ZWxzZXt2YXIgdz1pZVtnXSx5PXJlKG0sdyk7aWYoSyhnKSl7aWYoQz0hMCxkW2ddPXksZi5wdXNoKGcpLCF2KWNvbnRpbnVlO20hPT0obnVsbCE9PShjPXcuZGVmYXVsdCkmJnZvaWQgMCE9PWM/YzowKSYmKHY9ITEpfWVsc2UgaWYoUShnKSlwW2ddPXksaD0hMDtlbHNlIGlmKChudWxsPT1uP3ZvaWQgMDpuLmlzSHlkcmF0ZWQpJiYobnVsbD09cj92b2lkIDA6ci5pc0h5ZHJhdGVkKSYmeltnXSl7dmFyIGI9eltnXS5wcm9jZXNzKG0scixuKSx4PXpbZ10uYXBwbHlUbztpZih4KWZvcih2YXIgTz14Lmxlbmd0aCxMPTA7TDxPO0wrKylzW3hbTF1dPWI7ZWxzZSBzW2ddPWJ9ZWxzZSBzW2ddPXl9fXImJm4mJmEmJmw/KHMudHJhbnNmb3JtPWEoci5kZWx0YUZpbmFsLHIudHJlZVNjYWxlLEM/ZDp2b2lkIDApLGkmJihzLnRyYW5zZm9ybT1pKGQscy50cmFuc2Zvcm0pKSxzLnRyYW5zZm9ybU9yaWdpbj1sKHIpKTooQyYmKHMudHJhbnNmb3JtPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPWUudHJhbnNmb3JtLGk9ZS50cmFuc2Zvcm1LZXlzLGE9dC5lbmFibGVIYXJkd2FyZUFjY2VsZXJhdGlvbixsPXZvaWQgMD09PWF8fGEsYz10LmFsbG93VHJhbnNmb3JtTm9uZSxzPXZvaWQgMD09PWN8fGMsdT1cIlwiO2kuc29ydChxKTtmb3IodmFyIGQ9ITEsZj1pLmxlbmd0aCxwPTA7cDxmO3ArKyl7dmFyIEM9aVtwXTt1Kz0odGVbQ118fEMpK1wiKFwiK29bQ10rXCIpIFwiLFwielwiPT09QyYmKGQ9ITApfXJldHVybiFkJiZsP3UrPVwidHJhbnNsYXRlWigwKVwiOnU9dS50cmltKCkscj91PXIobyxuP1wiXCI6dSk6cyYmbiYmKHU9XCJub25lXCIpLHV9KGUsbyx2LGkpKSxoJiYocy50cmFuc2Zvcm1PcmlnaW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcmlnaW5YLG49dm9pZCAwPT09dD9cIjUwJVwiOnQscj1lLm9yaWdpblksbz12b2lkIDA9PT1yP1wiNTAlXCI6cixpPWUub3JpZ2luWjtyZXR1cm4gbitcIiBcIitvK1wiIFwiKyh2b2lkIDA9PT1pPzA6aSl9KHApKSl9dmFyIGxlPWZ1bmN0aW9uKCl7cmV0dXJue3N0eWxlOnt9LHRyYW5zZm9ybTp7fSx0cmFuc2Zvcm1LZXlzOltdLHRyYW5zZm9ybU9yaWdpbjp7fSx2YXJzOnt9fX07ZnVuY3Rpb24gY2UoZSx0LG4pe2Zvcih2YXIgciBpbiB0KWVlKHRbcl0pfHxKKHIsbil8fChlW3JdPXRbcl0pfWZ1bmN0aW9uIHNlKGUsdCxuKXt2YXIgaT17fSxhPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT17fTtyZXR1cm4gY2UoaSxlLnN0eWxlfHx7fSxlKSxPYmplY3QuYXNzaWduKGksZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWUudHJhbnNmb3JtVGVtcGxhdGU7cmV0dXJuIG8udXNlTWVtbygoZnVuY3Rpb24oKXt2YXIgZT1sZSgpO2FlKGUsdCx2b2lkIDAsdm9pZCAwLHtlbmFibGVIYXJkd2FyZUFjY2VsZXJhdGlvbjohbn0saSk7dmFyIG89ZS52YXJzLGE9ZS5zdHlsZTtyZXR1cm4gci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG8pLGEpfSksW3RdKX0oZSx0LG4pKSxlLnRyYW5zZm9ybVZhbHVlcyYmKGk9ZS50cmFuc2Zvcm1WYWx1ZXMoaSkpLGl9KGUsdCxuKTtyZXR1cm4gQm9vbGVhbihlLmRyYWcpJiYoaS5kcmFnZ2FibGU9ITEsYS51c2VyU2VsZWN0PWEuV2Via2l0VXNlclNlbGVjdD1hLldlYmtpdFRvdWNoQ2FsbG91dD1cIm5vbmVcIixhLnRvdWNoQWN0aW9uPSEwPT09ZS5kcmFnP1wibm9uZVwiOlwicGFuLVwiKyhcInhcIj09PWUuZHJhZz9cInlcIjpcInhcIikpLGkuc3R5bGU9YSxpfXZhciB1ZT1uZXcgU2V0KFtcImluaXRpYWxcIixcImFuaW1hdGVcIixcImV4aXRcIixcInN0eWxlXCIsXCJ2YXJpYW50c1wiLFwidHJhbnNpdGlvblwiLFwidHJhbnNmb3JtVGVtcGxhdGVcIixcInRyYW5zZm9ybVZhbHVlc1wiLFwiY3VzdG9tXCIsXCJpbmhlcml0XCIsXCJsYXlvdXRcIixcImxheW91dElkXCIsXCJfbGF5b3V0UmVzZXRUcmFuc2Zvcm1cIixcIm9uTGF5b3V0QW5pbWF0aW9uQ29tcGxldGVcIixcIm9uVmlld3BvcnRCb3hVcGRhdGVcIixcIm9uTGF5b3V0TWVhc3VyZVwiLFwib25CZWZvcmVMYXlvdXRNZWFzdXJlXCIsXCJvbkFuaW1hdGlvblN0YXJ0XCIsXCJvbkFuaW1hdGlvbkNvbXBsZXRlXCIsXCJvblVwZGF0ZVwiLFwib25EcmFnU3RhcnRcIixcIm9uRHJhZ1wiLFwib25EcmFnRW5kXCIsXCJvbk1lYXN1cmVEcmFnQ29uc3RyYWludHNcIixcIm9uRGlyZWN0aW9uTG9ja1wiLFwib25EcmFnVHJhbnNpdGlvbkVuZFwiLFwiZHJhZ1wiLFwiZHJhZ0NvbnRyb2xzXCIsXCJkcmFnTGlzdGVuZXJcIixcImRyYWdDb25zdHJhaW50c1wiLFwiZHJhZ0RpcmVjdGlvbkxvY2tcIixcIl9kcmFnWFwiLFwiX2RyYWdZXCIsXCJkcmFnRWxhc3RpY1wiLFwiZHJhZ01vbWVudHVtXCIsXCJkcmFnUHJvcGFnYXRpb25cIixcImRyYWdUcmFuc2l0aW9uXCIsXCJ3aGlsZURyYWdcIixcIm9uUGFuXCIsXCJvblBhblN0YXJ0XCIsXCJvblBhbkVuZFwiLFwib25QYW5TZXNzaW9uU3RhcnRcIixcIm9uVGFwXCIsXCJvblRhcFN0YXJ0XCIsXCJvblRhcENhbmNlbFwiLFwib25Ib3ZlclN0YXJ0XCIsXCJvbkhvdmVyRW5kXCIsXCJ3aGlsZUZvY3VzXCIsXCJ3aGlsZVRhcFwiLFwid2hpbGVIb3ZlclwiXSk7ZnVuY3Rpb24gZGUoZSl7cmV0dXJuIHVlLmhhcyhlKX12YXIgZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIWRlKGUpfTt0cnl7dmFyIHBlPW4oODU5NCkuWjtmZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zdGFydHNXaXRoKFwib25cIik/IWRlKGUpOnBlKGUpfX1jYXRjaChlKXt9ZnVuY3Rpb24gQ2UoZSx0LG4pe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP2U6YS5weC50cmFuc2Zvcm0odCtuKmUpfXZhciBoZT1mdW5jdGlvbihlLHQpe3JldHVybiBhLnB4LnRyYW5zZm9ybShlKnQpfSx2ZT17b2Zmc2V0Olwic3Ryb2tlLWRhc2hvZmZzZXRcIixhcnJheTpcInN0cm9rZS1kYXNoYXJyYXlcIn0sZ2U9e29mZnNldDpcInN0cm9rZURhc2hvZmZzZXRcIixhcnJheTpcInN0cm9rZURhc2hhcnJheVwifTtmdW5jdGlvbiBtZShlLHQsbixvLGksYSxsLGMpe3ZhciBzPXQuYXR0clgsdT10LmF0dHJZLGQ9dC5vcmlnaW5YLGY9dC5vcmlnaW5ZLHA9dC5wYXRoTGVuZ3RoLEM9dC5wYXRoU3BhY2luZyxoPXZvaWQgMD09PUM/MTpDLHY9dC5wYXRoT2Zmc2V0LGc9dm9pZCAwPT09dj8wOnY7YWUoZSxyLl9fcmVzdCh0LFtcImF0dHJYXCIsXCJhdHRyWVwiLFwib3JpZ2luWFwiLFwib3JpZ2luWVwiLFwicGF0aExlbmd0aFwiLFwicGF0aFNwYWNpbmdcIixcInBhdGhPZmZzZXRcIl0pLG4sbyxpLGEsbCxjKSxlLmF0dHJzPWUuc3R5bGUsZS5zdHlsZT17fTt2YXIgbT1lLmF0dHJzLHc9ZS5zdHlsZSx5PWUuZGltZW5zaW9ucyxiPWUudG90YWxQYXRoTGVuZ3RoO20udHJhbnNmb3JtJiYoeSYmKHcudHJhbnNmb3JtPW0udHJhbnNmb3JtKSxkZWxldGUgbS50cmFuc2Zvcm0pLHkmJih2b2lkIDAhPT1kfHx2b2lkIDAhPT1mfHx3LnRyYW5zZm9ybSkmJih3LnRyYW5zZm9ybU9yaWdpbj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIENlKHQsZS54LGUud2lkdGgpK1wiIFwiK0NlKG4sZS55LGUuaGVpZ2h0KX0oeSx2b2lkIDAhPT1kP2Q6LjUsdm9pZCAwIT09Zj9mOi41KSksdm9pZCAwIT09cyYmKG0ueD1zKSx2b2lkIDAhPT11JiYobS55PXUpLHZvaWQgMCE9PWImJnZvaWQgMCE9PXAmJmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2b2lkIDA9PT1yJiYocj0xKSx2b2lkIDA9PT1vJiYobz0wKSx2b2lkIDA9PT1pJiYoaT0hMCk7dmFyIGE9aT92ZTpnZTtlW2Eub2Zmc2V0XT1oZSgtbyx0KTt2YXIgbD1oZShuLHQpLGM9aGUocix0KTtlW2EuYXJyYXldPWwrXCIgXCIrY30obSxiLHAsaCxnLCExKX12YXIgd2U9ZnVuY3Rpb24oKXtyZXR1cm4gci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGxlKCkpLHthdHRyczp7fX0pfTtmdW5jdGlvbiB5ZShlLHQpe3ZhciBuPW8udXNlTWVtbygoZnVuY3Rpb24oKXt2YXIgbj13ZSgpO3JldHVybiBtZShuLHQsdm9pZCAwLHZvaWQgMCx7ZW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRpb246ITF9LGUudHJhbnNmb3JtVGVtcGxhdGUpLHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxuLmF0dHJzKSx7c3R5bGU6ci5fX2Fzc2lnbih7fSxuLnN0eWxlKX0pfSksW3RdKTtpZihlLnN0eWxlKXt2YXIgaT17fTtjZShpLGUuc3R5bGUsZSksbi5zdHlsZT1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30saSksbi5zdHlsZSl9cmV0dXJuIG59ZnVuY3Rpb24gYmUoZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSxmdW5jdGlvbih0LG4saSxhLGwpe3ZhciBjPWEubGF0ZXN0VmFsdWVzLHM9KE4odCk/eWU6c2UpKG4sYyxsKSx1PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17fTtmb3IodmFyIG8gaW4gZSkoZmUobyl8fCEwPT09biYmZGUobyl8fCF0JiYhZGUobykpJiYocltvXT1lW29dKTtyZXR1cm4gcn0obixcInN0cmluZ1wiPT10eXBlb2YgdCxlKSxkPXIuX19hc3NpZ24oci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHUpLHMpLHtyZWY6aX0pO3JldHVybiBvLmNyZWF0ZUVsZW1lbnQodCxkKX19dmFyIHhlPS8oW2Etel0pKFtBLVpdKS9nLE9lPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoeGUsXCIkMS0kMlwiKS50b0xvd2VyQ2FzZSgpfTtmdW5jdGlvbiBMZShlLHQpe3ZhciBuPXQuc3R5bGUscj10LnZhcnM7Zm9yKHZhciBvIGluIE9iamVjdC5hc3NpZ24oZS5zdHlsZSxuKSxyKWUuc3R5bGUuc2V0UHJvcGVydHkobyxyW29dKX12YXIgX2U9bmV3IFNldChbXCJiYXNlRnJlcXVlbmN5XCIsXCJkaWZmdXNlQ29uc3RhbnRcIixcImtlcm5lbE1hdHJpeFwiLFwia2VybmVsVW5pdExlbmd0aFwiLFwia2V5U3BsaW5lc1wiLFwia2V5VGltZXNcIixcImxpbWl0aW5nQ29uZUFuZ2xlXCIsXCJtYXJrZXJIZWlnaHRcIixcIm1hcmtlcldpZHRoXCIsXCJudW1PY3RhdmVzXCIsXCJ0YXJnZXRYXCIsXCJ0YXJnZXRZXCIsXCJzdXJmYWNlU2NhbGVcIixcInNwZWN1bGFyQ29uc3RhbnRcIixcInNwZWN1bGFyRXhwb25lbnRcIixcInN0ZERldmlhdGlvblwiLFwidGFibGVWYWx1ZXNcIixcInZpZXdCb3hcIixcImdyYWRpZW50VHJhbnNmb3JtXCJdKTtmdW5jdGlvbiBNZShlLHQpe2Zvcih2YXIgbiBpbiBMZShlLHQpLHQuYXR0cnMpZS5zZXRBdHRyaWJ1dGUoX2UuaGFzKG4pP246T2UobiksdC5hdHRyc1tuXSl9ZnVuY3Rpb24gamUoZSl7dmFyIHQ9ZS5zdHlsZSxuPXt9O2Zvcih2YXIgciBpbiB0KShlZSh0W3JdKXx8SihyLGUpKSYmKG5bcl09dFtyXSk7cmV0dXJuIG59ZnVuY3Rpb24gRWUoZSl7dmFyIHQ9amUoZSk7Zm9yKHZhciBuIGluIGUpZWUoZVtuXSkmJih0W1wieFwiPT09bnx8XCJ5XCI9PT1uP1wiYXR0clwiK24udG9VcHBlckNhc2UoKTpuXT1lW25dKTtyZXR1cm4gdH1mdW5jdGlvbiBTZShlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5zdGFydH12YXIgUGU9ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl9LEhlPWZ1bmN0aW9uKGUpe3JldHVybiBCb29sZWFuKGUmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZlLm1peCYmZS50b1ZhbHVlKX0sa2U9ZnVuY3Rpb24oZSl7cmV0dXJuIFBlKGUpP2VbZS5sZW5ndGgtMV18fDA6ZX07ZnVuY3Rpb24gVmUoZSl7dmFyIHQ9ZWUoZSk/ZS5nZXQoKTplO3JldHVybiBIZSh0KT90LnRvVmFsdWUoKTp0fWZ1bmN0aW9uIFJlKGUsdCxuLHIpe3ZhciBvPWUuc2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzLGk9ZS5jcmVhdGVSZW5kZXJTdGF0ZSxhPWUub25Nb3VudCxsPXtsYXRlc3RWYWx1ZXM6WmUodCxuLHIsbykscmVuZGVyU3RhdGU6aSgpfTtyZXR1cm4gYSYmKGwubW91bnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGEodCxlLGwpfSksbH12YXIgSWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIHI9by51c2VDb250ZXh0KHkpLGk9by51c2VDb250ZXh0KHgpO3JldHVybiBuP1JlKGUsdCxyLGkpOk8oKGZ1bmN0aW9uKCl7cmV0dXJuIFJlKGUsdCxyLGkpfSkpfX07ZnVuY3Rpb24gWmUoZSx0LG4sbyl7dmFyIGk9e30sYT0hMT09PShudWxsPT1uP3ZvaWQgMDpuLmluaXRpYWwpLGw9byhlKTtmb3IodmFyIGMgaW4gbClpW2NdPVZlKGxbY10pO3ZhciBzPWUuaW5pdGlhbCx1PWUuYW5pbWF0ZSxkPVQoZSksZj1BKGUpO3QmJmYmJiFkJiYhMSE9PWUuaW5oZXJpdCYmKG51bGwhPXN8fChzPXQuaW5pdGlhbCksbnVsbCE9dXx8KHU9dC5hbmltYXRlKSk7dmFyIHA9YXx8ITE9PT1zP3U6cztyZXR1cm4gcCYmXCJib29sZWFuXCIhPXR5cGVvZiBwJiYhU2UocCkmJihBcnJheS5pc0FycmF5KHApP3A6W3BdKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj1JKGUsdCk7aWYobil7dmFyIG89bi50cmFuc2l0aW9uRW5kO24udHJhbnNpdGlvbjt2YXIgYT1yLl9fcmVzdChuLFtcInRyYW5zaXRpb25FbmRcIixcInRyYW5zaXRpb25cIl0pO2Zvcih2YXIgbCBpbiBhKWlbbF09YVtsXTtmb3IodmFyIGwgaW4gbylpW2xdPW9bbF19fSkpLGl9dmFyIFRlLEFlPXt1c2VWaXN1YWxTdGF0ZTpJZSh7c2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzOkVlLGNyZWF0ZVJlbmRlclN0YXRlOndlLG9uTW91bnQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4ucmVuZGVyU3RhdGUsbz1uLmxhdGVzdFZhbHVlczt0cnl7ci5kaW1lbnNpb25zPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZ2V0QkJveD90LmdldEJCb3goKTp0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWNhdGNoKGUpe3IuZGltZW5zaW9ucz17eDowLHk6MCx3aWR0aDowLGhlaWdodDowfX1cInBhdGhcIj09PXQudGFnTmFtZSYmKHIudG90YWxQYXRoTGVuZ3RoPXQuZ2V0VG90YWxMZW5ndGgoKSksbWUocixvLHZvaWQgMCx2b2lkIDAse2VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0aW9uOiExfSxlLnRyYW5zZm9ybVRlbXBsYXRlKSxNZSh0LHIpfX0pfSxEZT17dXNlVmlzdWFsU3RhdGU6SWUoe3NjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczpqZSxjcmVhdGVSZW5kZXJTdGF0ZTpsZX0pfTtmdW5jdGlvbiBCZShlLHQsbixvKXt2YXIgaT10LmZvcndhcmRNb3Rpb25Qcm9wcyxhPXZvaWQgMCE9PWkmJmksbD1OKGUpP0FlOkRlO3JldHVybiByLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbCkse3ByZWxvYWRlZEZlYXR1cmVzOm4sdXNlUmVuZGVyOmJlKGEpLGNyZWF0ZVZpc3VhbEVsZW1lbnQ6byxDb21wb25lbnQ6ZX0pfWZ1bmN0aW9uICRlKGUsdCxuLHIpe3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIodCxuLHIpLGZ1bmN0aW9uKCl7cmV0dXJuIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4scil9fWZ1bmN0aW9uIEZlKGUsdCxuLHIpe28udXNlRWZmZWN0KChmdW5jdGlvbigpe3ZhciBvPWUuY3VycmVudDtpZihuJiZvKXJldHVybiAkZShvLHQsbixyKX0pLFtlLHQsbixyXSl9ZnVuY3Rpb24gTmUoZSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFBvaW50ZXJFdmVudCYmZSBpbnN0YW5jZW9mIFBvaW50ZXJFdmVudD8hKFwibW91c2VcIiE9PWUucG9pbnRlclR5cGUpOmUgaW5zdGFuY2VvZiBNb3VzZUV2ZW50fWZ1bmN0aW9uIHplKGUpe3JldHVybiEhZS50b3VjaGVzfSFmdW5jdGlvbihlKXtlLkFuaW1hdGU9XCJhbmltYXRlXCIsZS5Ib3Zlcj1cIndoaWxlSG92ZXJcIixlLlRhcD1cIndoaWxlVGFwXCIsZS5EcmFnPVwid2hpbGVEcmFnXCIsZS5Gb2N1cz1cIndoaWxlRm9jdXNcIixlLkV4aXQ9XCJleGl0XCJ9KFRlfHwoVGU9e30pKTt2YXIgV2U9e3BhZ2VYOjAscGFnZVk6MH07ZnVuY3Rpb24gR2UoZSx0KXt2b2lkIDA9PT10JiYodD1cInBhZ2VcIik7dmFyIG49ZS50b3VjaGVzWzBdfHxlLmNoYW5nZWRUb3VjaGVzWzBdfHxXZTtyZXR1cm57eDpuW3QrXCJYXCJdLHk6blt0K1wiWVwiXX19ZnVuY3Rpb24gVWUoZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9XCJwYWdlXCIpLHt4OmVbdCtcIlhcIl0seTplW3QrXCJZXCJdfX1mdW5jdGlvbiBxZShlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1cInBhZ2VcIikse3BvaW50OnplKGUpP0dlKGUsdCk6VWUoZSx0KX19dmFyIFllPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBuLHI9ZnVuY3Rpb24odCl7cmV0dXJuIGUodCxxZSh0KSl9O3JldHVybiB0PyhuPXIsZnVuY3Rpb24oZSl7dmFyIHQ9ZSBpbnN0YW5jZW9mIE1vdXNlRXZlbnQ7KCF0fHx0JiYwPT09ZS5idXR0b24pJiZuKGUpfSk6cn0sS2U9ZnVuY3Rpb24oKXtyZXR1cm4gUCYmbnVsbD09PXdpbmRvdy5vbnBvaW50ZXJkb3dufSxYZT1mdW5jdGlvbigpe3JldHVybiBQJiZudWxsPT09d2luZG93Lm9udG91Y2hzdGFydH0sUWU9ZnVuY3Rpb24oKXtyZXR1cm4gUCYmbnVsbD09PXdpbmRvdy5vbm1vdXNlZG93bn0sSmU9e3BvaW50ZXJkb3duOlwibW91c2Vkb3duXCIscG9pbnRlcm1vdmU6XCJtb3VzZW1vdmVcIixwb2ludGVydXA6XCJtb3VzZXVwXCIscG9pbnRlcmNhbmNlbDpcIm1vdXNlY2FuY2VsXCIscG9pbnRlcm92ZXI6XCJtb3VzZW92ZXJcIixwb2ludGVyb3V0OlwibW91c2VvdXRcIixwb2ludGVyZW50ZXI6XCJtb3VzZWVudGVyXCIscG9pbnRlcmxlYXZlOlwibW91c2VsZWF2ZVwifSxldD17cG9pbnRlcmRvd246XCJ0b3VjaHN0YXJ0XCIscG9pbnRlcm1vdmU6XCJ0b3VjaG1vdmVcIixwb2ludGVydXA6XCJ0b3VjaGVuZFwiLHBvaW50ZXJjYW5jZWw6XCJ0b3VjaGNhbmNlbFwifTtmdW5jdGlvbiB0dChlKXtyZXR1cm4gS2UoKT9lOlhlKCk/ZXRbZV06UWUoKT9KZVtlXTplfWZ1bmN0aW9uIG50KGUsdCxuLHIpe3JldHVybiAkZShlLHR0KHQpLFllKG4sXCJwb2ludGVyZG93blwiPT09dCkscil9ZnVuY3Rpb24gcnQoZSx0LG4scil7cmV0dXJuIEZlKGUsdHQodCksbiYmWWUobixcInBvaW50ZXJkb3duXCI9PT10KSxyKX1mdW5jdGlvbiBvdChlKXt2YXIgdD1udWxsO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBudWxsPT09dCYmKHQ9ZSxmdW5jdGlvbigpe3Q9bnVsbH0pfX12YXIgaXQ9b3QoXCJkcmFnSG9yaXpvbnRhbFwiKSxhdD1vdChcImRyYWdWZXJ0aWNhbFwiKTtmdW5jdGlvbiBsdChlKXt2YXIgdD0hMTtpZihcInlcIj09PWUpdD1hdCgpO2Vsc2UgaWYoXCJ4XCI9PT1lKXQ9aXQoKTtlbHNle3ZhciBuPWl0KCkscj1hdCgpO24mJnI/dD1mdW5jdGlvbigpe24oKSxyKCl9OihuJiZuKCksciYmcigpKX1yZXR1cm4gdH1mdW5jdGlvbiBjdCgpe3ZhciBlPWx0KCEwKTtyZXR1cm4hZXx8KGUoKSwhMSl9ZnVuY3Rpb24gc3QoZSx0LG4pe3JldHVybiBmdW5jdGlvbihyLG8pe3ZhciBpO05lKHIpJiYhY3QoKSYmKG51bGw9PW58fG4ocixvKSxudWxsPT09KGk9ZS5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PWl8fGkuc2V0QWN0aXZlKFRlLkhvdmVyLHQpKX19dmFyIHV0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuISF0JiYoZT09PXR8fHV0KGUsdC5wYXJlbnRFbGVtZW50KSl9O2Z1bmN0aW9uIGR0KGUpe3JldHVybiBvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSgpfX0pLFtdKX12YXIgZnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpLG51bGx9fSxwdD17dGFwOmZ0KChmdW5jdGlvbihlKXt2YXIgdD1lLm9uVGFwLG49ZS5vblRhcFN0YXJ0LHI9ZS5vblRhcENhbmNlbCxpPWUud2hpbGVUYXAsYT1lLnZpc3VhbEVsZW1lbnQsYz10fHxufHxyfHxpLHM9by51c2VSZWYoITEpLHU9by51c2VSZWYobnVsbCk7ZnVuY3Rpb24gZCgpe3ZhciBlO251bGw9PT0oZT11LmN1cnJlbnQpfHx2b2lkIDA9PT1lfHxlLmNhbGwodSksdS5jdXJyZW50PW51bGx9ZnVuY3Rpb24gZigpe3ZhciBlO3JldHVybiBkKCkscy5jdXJyZW50PSExLG51bGw9PT0oZT1hLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09ZXx8ZS5zZXRBY3RpdmUoVGUuVGFwLCExKSwhY3QoKX1mdW5jdGlvbiBwKGUsbil7ZigpJiYodXQoYS5nZXRJbnN0YW5jZSgpLGUudGFyZ2V0KT9udWxsPT10fHx0KGUsbik6bnVsbD09cnx8cihlLG4pKX1mdW5jdGlvbiBDKGUsdCl7ZigpJiYobnVsbD09cnx8cihlLHQpKX1ydChhLFwicG9pbnRlcmRvd25cIixjP2Z1bmN0aW9uKGUsdCl7dmFyIHI7ZCgpLHMuY3VycmVudHx8KHMuY3VycmVudD0hMCx1LmN1cnJlbnQ9bC5waXBlKG50KHdpbmRvdyxcInBvaW50ZXJ1cFwiLHApLG50KHdpbmRvdyxcInBvaW50ZXJjYW5jZWxcIixDKSksbnVsbD09bnx8bihlLHQpLG51bGw9PT0ocj1hLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09cnx8ci5zZXRBY3RpdmUoVGUuVGFwLCEwKSl9OnZvaWQgMCksZHQoZCl9KSksZm9jdXM6ZnQoKGZ1bmN0aW9uKGUpe3ZhciB0PWUud2hpbGVGb2N1cyxuPWUudmlzdWFsRWxlbWVudDtGZShuLFwiZm9jdXNcIix0P2Z1bmN0aW9uKCl7dmFyIGU7bnVsbD09PShlPW4uYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1lfHxlLnNldEFjdGl2ZShUZS5Gb2N1cywhMCl9OnZvaWQgMCksRmUobixcImJsdXJcIix0P2Z1bmN0aW9uKCl7dmFyIGU7bnVsbD09PShlPW4uYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1lfHxlLnNldEFjdGl2ZShUZS5Gb2N1cywhMSl9OnZvaWQgMCl9KSksaG92ZXI6ZnQoKGZ1bmN0aW9uKGUpe3ZhciB0PWUub25Ib3ZlclN0YXJ0LG49ZS5vbkhvdmVyRW5kLHI9ZS53aGlsZUhvdmVyLG89ZS52aXN1YWxFbGVtZW50O3J0KG8sXCJwb2ludGVyZW50ZXJcIix0fHxyP3N0KG8sITAsdCk6dm9pZCAwKSxydChvLFwicG9pbnRlcmxlYXZlXCIsbnx8cj9zdChvLCExLG4pOnZvaWQgMCl9KSl9O2Z1bmN0aW9uIEN0KGUsdCl7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuITE7dmFyIG49dC5sZW5ndGg7aWYobiE9PWUubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgcj0wO3I8bjtyKyspaWYodFtyXSE9PWVbcl0pcmV0dXJuITE7cmV0dXJuITB9dmFyIGh0PWZ1bmN0aW9uKGUpe3JldHVybiAxZTMqZX0sdnQ9e2xpbmVhcjpsLmxpbmVhcixlYXNlSW46bC5lYXNlSW4sZWFzZUluT3V0OmwuZWFzZUluT3V0LGVhc2VPdXQ6bC5lYXNlT3V0LGNpcmNJbjpsLmNpcmNJbixjaXJjSW5PdXQ6bC5jaXJjSW5PdXQsY2lyY091dDpsLmNpcmNPdXQsYmFja0luOmwuYmFja0luLGJhY2tJbk91dDpsLmJhY2tJbk91dCxiYWNrT3V0OmwuYmFja091dCxhbnRpY2lwYXRlOmwuYW50aWNpcGF0ZSxib3VuY2VJbjpsLmJvdW5jZUluLGJvdW5jZUluT3V0OmwuYm91bmNlSW5PdXQsYm91bmNlT3V0OmwuYm91bmNlT3V0fSxndD1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtpLmludmFyaWFudCg0PT09ZS5sZW5ndGgsXCJDdWJpYyBiZXppZXIgYXJyYXlzIG11c3QgY29udGFpbiBmb3VyIG51bWVyaWNhbCB2YWx1ZXMuXCIpO3ZhciB0PXIuX19yZWFkKGUsNCksbj10WzBdLG89dFsxXSxhPXRbMl0sYz10WzNdO3JldHVybiBsLmN1YmljQmV6aWVyKG4sbyxhLGMpfXJldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlPyhpLmludmFyaWFudCh2b2lkIDAhPT12dFtlXSxcIkludmFsaWQgZWFzaW5nIHR5cGUgJ1wiK2UrXCInXCIpLHZ0W2VdKTplfSxtdD1mdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmXCJudW1iZXJcIiE9dHlwZW9mIGVbMF19LHd0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIShcInpJbmRleFwiPT09ZXx8XCJudW1iZXJcIiE9dHlwZW9mIHQmJiFBcnJheS5pc0FycmF5KHQpJiYoXCJzdHJpbmdcIiE9dHlwZW9mIHR8fCFhLmNvbXBsZXgudGVzdCh0KXx8dC5zdGFydHNXaXRoKFwidXJsKFwiKSkpfSx5dD1mdW5jdGlvbigpe3JldHVybnt0eXBlOlwic3ByaW5nXCIsc3RpZmZuZXNzOjUwMCxkYW1waW5nOjI1LHJlc3REZWx0YTouNSxyZXN0U3BlZWQ6MTB9fSxidD1mdW5jdGlvbihlKXtyZXR1cm57dHlwZTpcInNwcmluZ1wiLHN0aWZmbmVzczo1NTAsZGFtcGluZzowPT09ZT8yKk1hdGguc3FydCg1NTApOjMwLHJlc3REZWx0YTouMDEscmVzdFNwZWVkOjEwfX0seHQ9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpcImtleWZyYW1lc1wiLGVhc2U6XCJsaW5lYXJcIixkdXJhdGlvbjouM319LE90PWZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOlwia2V5ZnJhbWVzXCIsZHVyYXRpb246LjgsdmFsdWVzOmV9fSxMdD17eDp5dCx5Onl0LHo6eXQscm90YXRlOnl0LHJvdGF0ZVg6eXQscm90YXRlWTp5dCxyb3RhdGVaOnl0LHNjYWxlWDpidCxzY2FsZVk6YnQsc2NhbGU6YnQsb3BhY2l0eTp4dCxiYWNrZ3JvdW5kQ29sb3I6eHQsY29sb3I6eHQsZGVmYXVsdDpidH0sX3Q9ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gbj1QZSh0KT9PdDpMdFtlXXx8THQuZGVmYXVsdCxyLl9fYXNzaWduKHt0bzp0fSxuKHQpKX0sTXQ9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGllKSx7Y29sb3I6YS5jb2xvcixiYWNrZ3JvdW5kQ29sb3I6YS5jb2xvcixvdXRsaW5lQ29sb3I6YS5jb2xvcixmaWxsOmEuY29sb3Isc3Ryb2tlOmEuY29sb3IsYm9yZGVyQ29sb3I6YS5jb2xvcixib3JkZXJUb3BDb2xvcjphLmNvbG9yLGJvcmRlclJpZ2h0Q29sb3I6YS5jb2xvcixib3JkZXJCb3R0b21Db2xvcjphLmNvbG9yLGJvcmRlckxlZnRDb2xvcjphLmNvbG9yLGZpbHRlcjphLmZpbHRlcixXZWJraXRGaWx0ZXI6YS5maWx0ZXJ9KSxqdD1mdW5jdGlvbihlKXtyZXR1cm4gTXRbZV19O2Z1bmN0aW9uIEV0KGUsdCl7dmFyIG4scj1qdChlKTtyZXR1cm4gciE9PWEuZmlsdGVyJiYocj1hLmNvbXBsZXgpLG51bGw9PT0obj1yLmdldEFuaW1hdGFibGVOb25lKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jYWxsKHIsdCl9dmFyIFN0PSExO2Z1bmN0aW9uIFB0KGUpe3JldHVybiAwPT09ZXx8XCJzdHJpbmdcIj09dHlwZW9mIGUmJjA9PT1wYXJzZUZsb2F0KGUpJiYtMT09PWUuaW5kZXhPZihcIiBcIil9ZnVuY3Rpb24gSHQoZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGU/MDpFdChcIlwiLGUpfWZ1bmN0aW9uIGt0KGUsdCl7cmV0dXJuIGVbdF18fGUuZGVmYXVsdHx8ZX1mdW5jdGlvbiBWdChlLHQsbixvKXtyZXR1cm4gdm9pZCAwPT09byYmKG89e30pLHQuc3RhcnQoKGZ1bmN0aW9uKGEpe3ZhciBjLHMsdT1mdW5jdGlvbihlLHQsbixvLGEpe3ZhciBjLHM9a3QobyxlKSx1PW51bGwhPT0oYz1zLmZyb20pJiZ2b2lkIDAhPT1jP2M6dC5nZXQoKSxkPXd0KGUsbik7XCJub25lXCI9PT11JiZkJiZcInN0cmluZ1wiPT10eXBlb2Ygbj91PUV0KGUsbik6UHQodSkmJlwic3RyaW5nXCI9PXR5cGVvZiBuP3U9SHQobik6IUFycmF5LmlzQXJyYXkobikmJlB0KG4pJiZcInN0cmluZ1wiPT10eXBlb2YgdSYmKG49SHQodSkpO3ZhciBmPXd0KGUsdSk7cmV0dXJuIGkud2FybmluZyhmPT09ZCxcIllvdSBhcmUgdHJ5aW5nIHRvIGFuaW1hdGUgXCIrZSsnIGZyb20gXCInK3UrJ1wiIHRvIFwiJytuKydcIi4gJyt1K1wiIGlzIG5vdCBhbiBhbmltYXRhYmxlIHZhbHVlIC0gdG8gZW5hYmxlIHRoaXMgYW5pbWF0aW9uIHNldCBcIit1K1wiIHRvIGEgdmFsdWUgYW5pbWF0YWJsZSB0byBcIituK1wiIHZpYSB0aGUgYHN0eWxlYCBwcm9wZXJ0eS5cIiksZiYmZCYmITEhPT1zLnR5cGU/ZnVuY3Rpb24oKXt2YXIgbz17ZnJvbTp1LHRvOm4sdmVsb2NpdHk6dC5nZXRWZWxvY2l0eSgpLG9uQ29tcGxldGU6YSxvblVwZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5zZXQoZSl9fTtyZXR1cm5cImluZXJ0aWFcIj09PXMudHlwZXx8XCJkZWNheVwiPT09cy50eXBlP2wuaW5lcnRpYShyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sbykscykpOmwuYW5pbWF0ZShyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sZnVuY3Rpb24oZSx0LG4pe3ZhciBvO3JldHVybiBBcnJheS5pc0FycmF5KHQudG8pJiYobnVsbCE9PShvPWUuZHVyYXRpb24pJiZ2b2lkIDAhPT1vfHwoZS5kdXJhdGlvbj0uOCkpLGZ1bmN0aW9uKGUpe0FycmF5LmlzQXJyYXkoZS50bykmJm51bGw9PT1lLnRvWzBdJiYoZS50bz1yLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQoZS50bykpLGUudG9bMF09ZS5mcm9tKX0odCksZnVuY3Rpb24oZSl7ZS53aGVuLGUuZGVsYXksZS5kZWxheUNoaWxkcmVuLGUuc3RhZ2dlckNoaWxkcmVuLGUuc3RhZ2dlckRpcmVjdGlvbixlLnJlcGVhdCxlLnJlcGVhdFR5cGUsZS5yZXBlYXREZWxheSxlLmZyb207dmFyIHQ9ci5fX3Jlc3QoZSxbXCJ3aGVuXCIsXCJkZWxheVwiLFwiZGVsYXlDaGlsZHJlblwiLFwic3RhZ2dlckNoaWxkcmVuXCIsXCJzdGFnZ2VyRGlyZWN0aW9uXCIsXCJyZXBlYXRcIixcInJlcGVhdFR5cGVcIixcInJlcGVhdERlbGF5XCIsXCJmcm9tXCJdKTtyZXR1cm4hIU9iamVjdC5rZXlzKHQpLmxlbmd0aH0oZSl8fChlPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxlKSxfdChuLHQudG8pKSksci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHQpLGZ1bmN0aW9uKGUpe3ZhciB0PWUuZWFzZSxuPWUudGltZXMsbz1lLnlveW8sYT1lLmZsaXAsbD1lLmxvb3AsYz1yLl9fcmVzdChlLFtcImVhc2VcIixcInRpbWVzXCIsXCJ5b3lvXCIsXCJmbGlwXCIsXCJsb29wXCJdKSxzPXIuX19hc3NpZ24oe30sYyk7cmV0dXJuIG4mJihzLm9mZnNldD1uKSxjLmR1cmF0aW9uJiYocy5kdXJhdGlvbj1odChjLmR1cmF0aW9uKSksYy5yZXBlYXREZWxheSYmKHMucmVwZWF0RGVsYXk9aHQoYy5yZXBlYXREZWxheSkpLHQmJihzLmVhc2U9bXQodCk/dC5tYXAoZ3QpOmd0KHQpKSxcInR3ZWVuXCI9PT1jLnR5cGUmJihzLnR5cGU9XCJrZXlmcmFtZXNcIiksKG98fGx8fGEpJiYoaS53YXJuaW5nKCFTdCxcInlveW8sIGxvb3AgYW5kIGZsaXAgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgQVBJLiBSZXBsYWNlIHdpdGggcmVwZWF0IGFuZCByZXBlYXRUeXBlIG9wdGlvbnMuXCIpLFN0PSEwLG8/cy5yZXBlYXRUeXBlPVwicmV2ZXJzZVwiOmw/cy5yZXBlYXRUeXBlPVwibG9vcFwiOmEmJihzLnJlcGVhdFR5cGU9XCJtaXJyb3JcIikscy5yZXBlYXQ9bHx8b3x8YXx8Yy5yZXBlYXQpLFwic3ByaW5nXCIhPT1jLnR5cGUmJihzLnR5cGU9XCJrZXlmcmFtZXNcIiksc30oZSkpfShzLG8sZSkpLHtvblVwZGF0ZTpmdW5jdGlvbihlKXt2YXIgdDtvLm9uVXBkYXRlKGUpLG51bGw9PT0odD1zLm9uVXBkYXRlKXx8dm9pZCAwPT09dHx8dC5jYWxsKHMsZSl9LG9uQ29tcGxldGU6ZnVuY3Rpb24oKXt2YXIgZTtvLm9uQ29tcGxldGUoKSxudWxsPT09KGU9cy5vbkNvbXBsZXRlKXx8dm9pZCAwPT09ZXx8ZS5jYWxsKHMpfX0pKX06ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gdC5zZXQobiksYSgpLG51bGw9PT0oZT1udWxsPT1zP3ZvaWQgMDpzLm9uQ29tcGxldGUpfHx2b2lkIDA9PT1lfHxlLmNhbGwocykse3N0b3A6ZnVuY3Rpb24oKXt9fX19KGUsdCxuLG8sYSksZD1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBudWxsIT09KG49KGt0KGUsdCl8fHt9KS5kZWxheSkmJnZvaWQgMCE9PW4/bjowfShvLGUpLGY9ZnVuY3Rpb24oKXtyZXR1cm4gcz11KCl9O3JldHVybiBkP2M9c2V0VGltZW91dChmLGh0KGQpKTpmKCksZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYyksbnVsbD09c3x8cy5zdG9wKCl9fSkpfWZ1bmN0aW9uIFJ0KGUsdCl7LTE9PT1lLmluZGV4T2YodCkmJmUucHVzaCh0KX1mdW5jdGlvbiBJdChlLHQpe3ZhciBuPWUuaW5kZXhPZih0KTtuPi0xJiZlLnNwbGljZShuLDEpfXZhciBadD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLnN1YnNjcmlwdGlvbnM9W119cmV0dXJuIGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBSdCh0aGlzLnN1YnNjcmlwdGlvbnMsZSksZnVuY3Rpb24oKXtyZXR1cm4gSXQodC5zdWJzY3JpcHRpb25zLGUpfX0sZS5wcm90b3R5cGUubm90aWZ5PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLnN1YnNjcmlwdGlvbnMubGVuZ3RoO2lmKHIpaWYoMT09PXIpdGhpcy5zdWJzY3JpcHRpb25zWzBdKGUsdCxuKTtlbHNlIGZvcih2YXIgbz0wO288cjtvKyspe3ZhciBpPXRoaXMuc3Vic2NyaXB0aW9uc1tvXTtpJiZpKGUsdCxuKX19LGUucHJvdG90eXBlLmdldFNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdWJzY3JpcHRpb25zLmxlbmd0aH0sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnN1YnNjcmlwdGlvbnMubGVuZ3RoPTB9LGV9KCksVHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciB0LG49dGhpczt0aGlzLnRpbWVEZWx0YT0wLHRoaXMubGFzdFVwZGF0ZWQ9MCx0aGlzLnVwZGF0ZVN1YnNjcmliZXJzPW5ldyBadCx0aGlzLnZlbG9jaXR5VXBkYXRlU3Vic2NyaWJlcnM9bmV3IFp0LHRoaXMucmVuZGVyU3Vic2NyaWJlcnM9bmV3IFp0LHRoaXMuY2FuVHJhY2tWZWxvY2l0eT0hMSx0aGlzLnVwZGF0ZUFuZE5vdGlmeT1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PSEwKSxuLnByZXY9bi5jdXJyZW50LG4uY3VycmVudD1lO3ZhciByPWMuZ2V0RnJhbWVEYXRhKCksbz1yLmRlbHRhLGk9ci50aW1lc3RhbXA7bi5sYXN0VXBkYXRlZCE9PWkmJihuLnRpbWVEZWx0YT1vLG4ubGFzdFVwZGF0ZWQ9aSxmLmRlZmF1bHQucG9zdFJlbmRlcihuLnNjaGVkdWxlVmVsb2NpdHlDaGVjaykpLG4ucHJldiE9PW4uY3VycmVudCYmbi51cGRhdGVTdWJzY3JpYmVycy5ub3RpZnkobi5jdXJyZW50KSxuLnZlbG9jaXR5VXBkYXRlU3Vic2NyaWJlcnMuZ2V0U2l6ZSgpJiZuLnZlbG9jaXR5VXBkYXRlU3Vic2NyaWJlcnMubm90aWZ5KG4uZ2V0VmVsb2NpdHkoKSksdCYmbi5yZW5kZXJTdWJzY3JpYmVycy5ub3RpZnkobi5jdXJyZW50KX0sdGhpcy5zY2hlZHVsZVZlbG9jaXR5Q2hlY2s9ZnVuY3Rpb24oKXtyZXR1cm4gZi5kZWZhdWx0LnBvc3RSZW5kZXIobi52ZWxvY2l0eUNoZWNrKX0sdGhpcy52ZWxvY2l0eUNoZWNrPWZ1bmN0aW9uKGUpe2UudGltZXN0YW1wIT09bi5sYXN0VXBkYXRlZCYmKG4ucHJldj1uLmN1cnJlbnQsbi52ZWxvY2l0eVVwZGF0ZVN1YnNjcmliZXJzLm5vdGlmeShuLmdldFZlbG9jaXR5KCkpKX0sdGhpcy5oYXNBbmltYXRlZD0hMSx0aGlzLnByZXY9dGhpcy5jdXJyZW50PWUsdGhpcy5jYW5UcmFja1ZlbG9jaXR5PSh0PXRoaXMuY3VycmVudCwhaXNOYU4ocGFyc2VGbG9hdCh0KSkpfXJldHVybiBlLnByb3RvdHlwZS5vbkNoYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy51cGRhdGVTdWJzY3JpYmVycy5hZGQoZSl9LGUucHJvdG90eXBlLmNsZWFyTGlzdGVuZXJzPWZ1bmN0aW9uKCl7dGhpcy51cGRhdGVTdWJzY3JpYmVycy5jbGVhcigpfSxlLnByb3RvdHlwZS5vblJlbmRlclJlcXVlc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGUodGhpcy5nZXQoKSksdGhpcy5yZW5kZXJTdWJzY3JpYmVycy5hZGQoZSl9LGUucHJvdG90eXBlLmF0dGFjaD1mdW5jdGlvbihlKXt0aGlzLnBhc3NpdmVFZmZlY3Q9ZX0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITApLHQmJnRoaXMucGFzc2l2ZUVmZmVjdD90aGlzLnBhc3NpdmVFZmZlY3QoZSx0aGlzLnVwZGF0ZUFuZE5vdGlmeSk6dGhpcy51cGRhdGVBbmROb3RpZnkoZSx0KX0sZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudH0sZS5wcm90b3R5cGUuZ2V0UHJldmlvdXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2fSxlLnByb3RvdHlwZS5nZXRWZWxvY2l0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhblRyYWNrVmVsb2NpdHk/bC52ZWxvY2l0eVBlclNlY29uZChwYXJzZUZsb2F0KHRoaXMuY3VycmVudCktcGFyc2VGbG9hdCh0aGlzLnByZXYpLHRoaXMudGltZURlbHRhKTowfSxlLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLnN0b3AoKSxuZXcgUHJvbWlzZSgoZnVuY3Rpb24obil7dC5oYXNBbmltYXRlZD0hMCx0LnN0b3BBbmltYXRpb249ZShuKX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiB0LmNsZWFyQW5pbWF0aW9uKCl9KSl9LGUucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLnN0b3BBbmltYXRpb24mJnRoaXMuc3RvcEFuaW1hdGlvbigpLHRoaXMuY2xlYXJBbmltYXRpb24oKX0sZS5wcm90b3R5cGUuaXNBbmltYXRpbmc9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuc3RvcEFuaW1hdGlvbn0sZS5wcm90b3R5cGUuY2xlYXJBbmltYXRpb249ZnVuY3Rpb24oKXt0aGlzLnN0b3BBbmltYXRpb249bnVsbH0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMudXBkYXRlU3Vic2NyaWJlcnMuY2xlYXIoKSx0aGlzLnJlbmRlclN1YnNjcmliZXJzLmNsZWFyKCksdGhpcy5zdG9wKCl9LGV9KCk7ZnVuY3Rpb24gQXQoZSl7cmV0dXJuIG5ldyBUdChlKX12YXIgRHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LnRlc3QoZSl9fSxCdD1bYS5udW1iZXIsYS5weCxhLnBlcmNlbnQsYS5kZWdyZWVzLGEudncsYS52aCx7dGVzdDpmdW5jdGlvbihlKXtyZXR1cm5cImF1dG9cIj09PWV9LHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybiBlfX1dLCR0PWZ1bmN0aW9uKGUpe3JldHVybiBCdC5maW5kKER0KGUpKX0sRnQ9ci5fX3NwcmVhZEFycmF5KHIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZChCdCkpLFthLmNvbG9yLGEuY29tcGxleF0pO2Z1bmN0aW9uIE50KGUsdCxuKXtlLmhhc1ZhbHVlKHQpP2UuZ2V0VmFsdWUodCkuc2V0KG4pOmUuYWRkVmFsdWUodCxBdChuKSl9ZnVuY3Rpb24genQoZSx0KXt2YXIgbj1aKGUsdCksbz1uP2UubWFrZVRhcmdldEFuaW1hdGFibGUobiwhMSk6e30saT1vLnRyYW5zaXRpb25FbmQsYT12b2lkIDA9PT1pP3t9Omk7by50cmFuc2l0aW9uO3ZhciBsPXIuX19yZXN0KG8sW1widHJhbnNpdGlvbkVuZFwiLFwidHJhbnNpdGlvblwiXSk7Zm9yKHZhciBjIGluIGw9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGwpLGEpKU50KGUsYyxrZShsW2NdKSl9ZnVuY3Rpb24gV3QoZSx0KXtyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQodCkpLnJldmVyc2UoKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcixvPWUuZ2V0VmFyaWFudChuKTtvJiZ6dChlLG8pLG51bGw9PT0ocj1lLnZhcmlhbnRDaGlsZHJlbil8fHZvaWQgMD09PXJ8fHIuZm9yRWFjaCgoZnVuY3Rpb24oZSl7V3QoZSx0KX0pKX0pKX1mdW5jdGlvbiBHdChlLHQsbil7dmFyIHIsbyxpLGwsYyxzPU9iamVjdC5rZXlzKHQpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIWUuaGFzVmFsdWUodCl9KSksdT1zLmxlbmd0aDtpZih1KWZvcih2YXIgZD0wO2Q8dTtkKyspe3ZhciBmPXNbZF0scD10W2ZdLEM9bnVsbDtBcnJheS5pc0FycmF5KHApJiYoQz1wWzBdKSxudWxsPT09QyYmKEM9bnVsbCE9PShvPW51bGwhPT0ocj1uW2ZdKSYmdm9pZCAwIT09cj9yOmUucmVhZFZhbHVlKGYpKSYmdm9pZCAwIT09bz9vOnRbZl0pLG51bGwhPUMmJihcInN0cmluZ1wiPT10eXBlb2YgQyYmL15cXC0/XFxkKlxcLj9cXGQrJC8udGVzdChDKT9DPXBhcnNlRmxvYXQoQyk6KGM9QywhRnQuZmluZChEdChjKSkmJmEuY29tcGxleC50ZXN0KHApJiYoQz1FdChmLHApKSksZS5hZGRWYWx1ZShmLEF0KEMpKSxudWxsIT09KGk9KGw9bilbZl0pJiZ2b2lkIDAhPT1pfHwobFtmXT1DKSxlLnNldEJhc2VUYXJnZXQoZixDKSl9fWZ1bmN0aW9uIFV0KGUsdCl7aWYodClyZXR1cm4odFtlXXx8dC5kZWZhdWx0fHx0KS5mcm9tfWZ1bmN0aW9uIHF0KGUsdCxuKXt2YXIgcixvLGk9e307Zm9yKHZhciBhIGluIGUpaVthXT1udWxsIT09KHI9VXQoYSx0KSkmJnZvaWQgMCE9PXI/cjpudWxsPT09KG89bi5nZXRWYWx1ZShhKSl8fHZvaWQgMD09PW8/dm9pZCAwOm8uZ2V0KCk7cmV0dXJuIGl9ZnVuY3Rpb24gWXQoZSx0LG4pe3ZhciByO2lmKHZvaWQgMD09PW4mJihuPXt9KSxlLm5vdGlmeUFuaW1hdGlvblN0YXJ0KCksQXJyYXkuaXNBcnJheSh0KSl7dmFyIG89dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBLdChlLHQsbil9KSk7cj1Qcm9taXNlLmFsbChvKX1lbHNlIGlmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXI9S3QoZSx0LG4pO2Vsc2V7dmFyIGk9XCJmdW5jdGlvblwiPT10eXBlb2YgdD9aKGUsdCxuLmN1c3RvbSk6dDtyPVh0KGUsaSxuKX1yZXR1cm4gci50aGVuKChmdW5jdGlvbigpe3JldHVybiBlLm5vdGlmeUFuaW1hdGlvbkNvbXBsZXRlKHQpfSkpfWZ1bmN0aW9uIEt0KGUsdCxuKXt2YXIgbzt2b2lkIDA9PT1uJiYobj17fSk7dmFyIGk9WihlLHQsbi5jdXN0b20pLGE9KGl8fHt9KS50cmFuc2l0aW9uLGw9dm9pZCAwPT09YT9lLmdldERlZmF1bHRUcmFuc2l0aW9uKCl8fHt9OmE7bi50cmFuc2l0aW9uT3ZlcnJpZGUmJihsPW4udHJhbnNpdGlvbk92ZXJyaWRlKTt2YXIgYz1pP2Z1bmN0aW9uKCl7cmV0dXJuIFh0KGUsaSxuKX06ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LHM9KG51bGw9PT0obz1lLnZhcmlhbnRDaGlsZHJlbil8fHZvaWQgMD09PW8/dm9pZCAwOm8uc2l6ZSk/ZnVuY3Rpb24obyl7dm9pZCAwPT09byYmKG89MCk7dmFyIGk9bC5kZWxheUNoaWxkcmVuLGE9dm9pZCAwPT09aT8wOmksYz1sLnN0YWdnZXJDaGlsZHJlbixzPWwuc3RhZ2dlckRpcmVjdGlvbjtyZXR1cm4gZnVuY3Rpb24oZSx0LG4sbyxpLGEpe3ZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PW8mJihvPTApLHZvaWQgMD09PWkmJihpPTEpO3ZhciBsPVtdLGM9KGUudmFyaWFudENoaWxkcmVuLnNpemUtMSkqbyxzPTE9PT1pP2Z1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0wKSxlKm99OmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0wKSxjLWUqb307cmV0dXJuIEFycmF5LmZyb20oZS52YXJpYW50Q2hpbGRyZW4pLnNvcnQoUXQpLmZvckVhY2goKGZ1bmN0aW9uKGUsbyl7bC5wdXNoKEt0KGUsdCxyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sYSkse2RlbGF5Om4rcyhvKX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBlLm5vdGlmeUFuaW1hdGlvbkNvbXBsZXRlKHQpfSkpKX0pKSxQcm9taXNlLmFsbChsKX0oZSx0LGErbyxjLHMsbil9OmZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSx1PWwud2hlbjtpZih1KXt2YXIgZD1yLl9fcmVhZChcImJlZm9yZUNoaWxkcmVuXCI9PT11P1tjLHNdOltzLGNdLDIpLGY9ZFswXSxwPWRbMV07cmV0dXJuIGYoKS50aGVuKHApfXJldHVybiBQcm9taXNlLmFsbChbYygpLHMobi5kZWxheSldKX1mdW5jdGlvbiBYdChlLHQsbil7dmFyIG8saT12b2lkIDA9PT1uP3t9Om4sYT1pLmRlbGF5LGw9dm9pZCAwPT09YT8wOmEsYz1pLnRyYW5zaXRpb25PdmVycmlkZSxzPWkudHlwZSx1PWUubWFrZVRhcmdldEFuaW1hdGFibGUodCksZD11LnRyYW5zaXRpb24sZj12b2lkIDA9PT1kP2UuZ2V0RGVmYXVsdFRyYW5zaXRpb24oKTpkLHA9dS50cmFuc2l0aW9uRW5kLEM9ci5fX3Jlc3QodSxbXCJ0cmFuc2l0aW9uXCIsXCJ0cmFuc2l0aW9uRW5kXCJdKTtjJiYoZj1jKTt2YXIgaD1bXSx2PXMmJihudWxsPT09KG89ZS5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PW8/dm9pZCAwOm8uZ2V0U3RhdGUoKVtzXSk7Zm9yKHZhciBnIGluIEMpe3ZhciBtPWUuZ2V0VmFsdWUoZyksdz1DW2ddO2lmKCEoIW18fHZvaWQgMD09PXd8fHYmJkp0KHYsZykpKXt2YXIgeT1WdChnLG0sdyxyLl9fYXNzaWduKHtkZWxheTpsfSxmKSk7aC5wdXNoKHkpfX1yZXR1cm4gUHJvbWlzZS5hbGwoaCkudGhlbigoZnVuY3Rpb24oKXtwJiZ6dChlLHApfSkpfWZ1bmN0aW9uIFF0KGUsdCl7cmV0dXJuIGUuc29ydE5vZGVQb3NpdGlvbih0KX1mdW5jdGlvbiBKdChlLHQpe3ZhciBuPWUucHJvdGVjdGVkS2V5cyxyPWUubmVlZHNBbmltYXRpbmcsbz1uLmhhc093blByb3BlcnR5KHQpJiYhMCE9PXJbdF07cmV0dXJuIHJbdF09ITEsb312YXIgZW49W1RlLkFuaW1hdGUsVGUuSG92ZXIsVGUuVGFwLFRlLkRyYWcsVGUuRm9jdXMsVGUuRXhpdF0sdG49ci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKGVuKSkucmV2ZXJzZSgpLG5uPWVuLmxlbmd0aDtmdW5jdGlvbiBybihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLHtpc0FjdGl2ZTplLHByb3RlY3RlZEtleXM6e30sbmVlZHNBbmltYXRpbmc6e30scHJldlJlc29sdmVkVmFsdWVzOnt9fX12YXIgb249e2FuaW1hdGlvbjpmdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS52aXN1YWxFbGVtZW50LG49ZS5hbmltYXRlO3QuYW5pbWF0aW9uU3RhdGV8fCh0LmFuaW1hdGlvblN0YXRlPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBQcm9taXNlLmFsbCh0Lm1hcCgoZnVuY3Rpb24odCl7dmFyIG49dC5hbmltYXRpb24scj10Lm9wdGlvbnM7cmV0dXJuIFl0KGUsbixyKX0pKSl9fShlKSxvPSgodD17fSlbVGUuQW5pbWF0ZV09cm4oITApLHRbVGUuSG92ZXJdPXJuKCksdFtUZS5UYXBdPXJuKCksdFtUZS5EcmFnXT1ybigpLHRbVGUuRm9jdXNdPXJuKCksdFtUZS5FeGl0XT1ybigpLHQpLGk9e30sYT0hMCxsPWZ1bmN0aW9uKHQsbil7dmFyIG89WihlLG4pO2lmKG8pe28udHJhbnNpdGlvbjt2YXIgaT1vLnRyYW5zaXRpb25FbmQsYT1yLl9fcmVzdChvLFtcInRyYW5zaXRpb25cIixcInRyYW5zaXRpb25FbmRcIl0pO3Q9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdCksYSksaSl9cmV0dXJuIHR9O2Z1bmN0aW9uIGModCxjKXtmb3IodmFyIHMsdT1lLmdldFByb3BzKCksZD1lLmdldFZhcmlhbnRDb250ZXh0KCEwKXx8e30sZj1bXSxwPW5ldyBTZXQsQz17fSxoPTEvMCx2PWZ1bmN0aW9uKG4pe3ZhciBpPXRuW25dLHY9b1tpXSxnPW51bGwhPT0ocz11W2ldKSYmdm9pZCAwIT09cz9zOmRbaV0sbT1SKGcpLHc9aT09PWM/di5pc0FjdGl2ZTpudWxsOyExPT09dyYmKGg9bik7dmFyIHk9Zz09PWRbaV0mJmchPT11W2ldJiZtO2lmKHkmJmEmJmUubWFudWFsbHlBbmltYXRlT25Nb3VudCYmKHk9ITEpLHYucHJvdGVjdGVkS2V5cz1yLl9fYXNzaWduKHt9LEMpLCF2LmlzQWN0aXZlJiZudWxsPT09d3x8IWcmJiF2LnByZXZQcm9wfHxTZShnKXx8XCJib29sZWFuXCI9PXR5cGVvZiBnKXJldHVyblwiY29udGludWVcIjt2YXIgYj1mdW5jdGlvbihlLHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0P3QhPT1lOiEhVih0KSYmIUN0KHQsZSl9KHYucHJldlByb3AsZyl8fGk9PT1jJiZ2LmlzQWN0aXZlJiYheSYmbXx8bj5oJiZtLHg9QXJyYXkuaXNBcnJheShnKT9nOltnXSxPPXgucmVkdWNlKGwse30pOyExPT09dyYmKE89e30pO3ZhciBMPXYucHJldlJlc29sdmVkVmFsdWVzLF89dm9pZCAwPT09TD97fTpMLE09ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LF8pLE8pLGo9ZnVuY3Rpb24oZSl7Yj0hMCxwLmRlbGV0ZShlKSx2Lm5lZWRzQW5pbWF0aW5nW2VdPSEwfTtmb3IodmFyIEUgaW4gTSl7dmFyIFM9T1tFXSxQPV9bRV07Qy5oYXNPd25Qcm9wZXJ0eShFKXx8KFMhPT1QP1BlKFMpJiZQZShQKT9DdChTLFApP3YucHJvdGVjdGVkS2V5c1tFXT0hMDpqKEUpOnZvaWQgMCE9PVM/aihFKTpwLmFkZChFKTp2b2lkIDAhPT1TJiZwLmhhcyhFKT9qKEUpOnYucHJvdGVjdGVkS2V5c1tFXT0hMCl9di5wcmV2UHJvcD1nLHYucHJldlJlc29sdmVkVmFsdWVzPU8sdi5pc0FjdGl2ZSYmKEM9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LEMpLE8pKSxhJiZlLmJsb2NrSW5pdGlhbEFuaW1hdGlvbiYmKGI9ITEpLGImJiF5JiZmLnB1c2guYXBwbHkoZixyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQoeC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybnthbmltYXRpb246ZSxvcHRpb25zOnIuX19hc3NpZ24oe3R5cGU6aX0sdCl9fSkpKSkpfSxnPTA7ZzxubjtnKyspdihnKTtpZihpPXIuX19hc3NpZ24oe30sQykscC5zaXplKXt2YXIgbT17fTtwLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWUuZ2V0QmFzZVRhcmdldCh0KTt2b2lkIDAhPT1uJiYobVt0XT1uKX0pKSxmLnB1c2goe2FuaW1hdGlvbjptfSl9dmFyIHc9Qm9vbGVhbihmLmxlbmd0aCk7cmV0dXJuIGEmJiExPT09dS5pbml0aWFsJiYhZS5tYW51YWxseUFuaW1hdGVPbk1vdW50JiYodz0hMSksYT0hMSx3P24oZik6UHJvbWlzZS5yZXNvbHZlKCl9cmV0dXJue2lzQW5pbWF0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWlbZV19LGFuaW1hdGVDaGFuZ2VzOmMsc2V0QWN0aXZlOmZ1bmN0aW9uKHQsbixyKXt2YXIgaTtyZXR1cm4gb1t0XS5pc0FjdGl2ZT09PW4/UHJvbWlzZS5yZXNvbHZlKCk6KG51bGw9PT0oaT1lLnZhcmlhbnRDaGlsZHJlbil8fHZvaWQgMD09PWl8fGkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI7cmV0dXJuIG51bGw9PT0ocj1lLmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zZXRBY3RpdmUodCxuKX0pKSxvW3RdLmlzQWN0aXZlPW4sYyhyLHQpKX0sc2V0QW5pbWF0ZUZ1bmN0aW9uOmZ1bmN0aW9uKHQpe249dChlKX0sZ2V0U3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gb319fSh0KSksU2UobikmJm8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiBuLnN1YnNjcmliZSh0KX0pLFtuXSl9KSksZXhpdDpmdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jdXN0b20sbj1lLnZpc3VhbEVsZW1lbnQsaT1yLl9fcmVhZChMKCksMiksYT1pWzBdLGw9aVsxXSxjPW8udXNlQ29udGV4dCh4KTtvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXt2YXIgZSxyLG89bnVsbD09PShlPW4uYW5pbWF0aW9uU3RhdGUpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnNldEFjdGl2ZShUZS5FeGl0LCFhLHtjdXN0b206bnVsbCE9PShyPW51bGw9PWM/dm9pZCAwOmMuY3VzdG9tKSYmdm9pZCAwIT09cj9yOnR9KTshYSYmKG51bGw9PW98fG8udGhlbihsKSl9KSxbYV0pfSkpfSxhbj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4pe3ZhciBvPXRoaXMsaT0odm9pZCAwPT09bj97fTpuKS50cmFuc2Zvcm1QYWdlUG9pbnQ7aWYodGhpcy5zdGFydEV2ZW50PW51bGwsdGhpcy5sYXN0TW92ZUV2ZW50PW51bGwsdGhpcy5sYXN0TW92ZUV2ZW50SW5mbz1udWxsLHRoaXMuaGFuZGxlcnM9e30sdGhpcy51cGRhdGVQb2ludD1mdW5jdGlvbigpe2lmKG8ubGFzdE1vdmVFdmVudCYmby5sYXN0TW92ZUV2ZW50SW5mbyl7dmFyIGU9c24oby5sYXN0TW92ZUV2ZW50SW5mbyxvLmhpc3RvcnkpLHQ9bnVsbCE9PW8uc3RhcnRFdmVudCxuPWwuZGlzdGFuY2UoZS5vZmZzZXQse3g6MCx5OjB9KT49MztpZih0fHxuKXt2YXIgaT1lLnBvaW50LGE9Yy5nZXRGcmFtZURhdGEoKS50aW1lc3RhbXA7by5oaXN0b3J5LnB1c2goci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGkpLHt0aW1lc3RhbXA6YX0pKTt2YXIgcz1vLmhhbmRsZXJzLHU9cy5vblN0YXJ0LGQ9cy5vbk1vdmU7dHx8KHUmJnUoby5sYXN0TW92ZUV2ZW50LGUpLG8uc3RhcnRFdmVudD1vLmxhc3RNb3ZlRXZlbnQpLGQmJmQoby5sYXN0TW92ZUV2ZW50LGUpfX19LHRoaXMuaGFuZGxlUG9pbnRlck1vdmU9ZnVuY3Rpb24oZSx0KXtvLmxhc3RNb3ZlRXZlbnQ9ZSxvLmxhc3RNb3ZlRXZlbnRJbmZvPWxuKHQsby50cmFuc2Zvcm1QYWdlUG9pbnQpLE5lKGUpJiYwPT09ZS5idXR0b25zP28uaGFuZGxlUG9pbnRlclVwKGUsdCk6Zi5kZWZhdWx0LnVwZGF0ZShvLnVwZGF0ZVBvaW50LCEwKX0sdGhpcy5oYW5kbGVQb2ludGVyVXA9ZnVuY3Rpb24oZSx0KXtvLmVuZCgpO3ZhciBuPW8uaGFuZGxlcnMscj1uLm9uRW5kLGk9bi5vblNlc3Npb25FbmQsYT1zbihsbih0LG8udHJhbnNmb3JtUGFnZVBvaW50KSxvLmhpc3RvcnkpO28uc3RhcnRFdmVudCYmciYmcihlLGEpLGkmJmkoZSxhKX0sISh6ZShlKSYmZS50b3VjaGVzLmxlbmd0aD4xKSl7dGhpcy5oYW5kbGVycz10LHRoaXMudHJhbnNmb3JtUGFnZVBvaW50PWk7dmFyIGE9bG4ocWUoZSksdGhpcy50cmFuc2Zvcm1QYWdlUG9pbnQpLHM9YS5wb2ludCx1PWMuZ2V0RnJhbWVEYXRhKCkudGltZXN0YW1wO3RoaXMuaGlzdG9yeT1bci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHMpLHt0aW1lc3RhbXA6dX0pXTt2YXIgZD10Lm9uU2Vzc2lvblN0YXJ0O2QmJmQoZSxzbihhLHRoaXMuaGlzdG9yeSkpLHRoaXMucmVtb3ZlTGlzdGVuZXJzPWwucGlwZShudCh3aW5kb3csXCJwb2ludGVybW92ZVwiLHRoaXMuaGFuZGxlUG9pbnRlck1vdmUpLG50KHdpbmRvdyxcInBvaW50ZXJ1cFwiLHRoaXMuaGFuZGxlUG9pbnRlclVwKSxudCh3aW5kb3csXCJwb2ludGVyY2FuY2VsXCIsdGhpcy5oYW5kbGVQb2ludGVyVXApKX19cmV0dXJuIGUucHJvdG90eXBlLnVwZGF0ZUhhbmRsZXJzPWZ1bmN0aW9uKGUpe3RoaXMuaGFuZGxlcnM9ZX0sZS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVMaXN0ZW5lcnMmJnRoaXMucmVtb3ZlTGlzdGVuZXJzKCksYy5jYW5jZWxTeW5jLnVwZGF0ZSh0aGlzLnVwZGF0ZVBvaW50KX0sZX0oKTtmdW5jdGlvbiBsbihlLHQpe3JldHVybiB0P3twb2ludDp0KGUucG9pbnQpfTplfWZ1bmN0aW9uIGNuKGUsdCl7cmV0dXJue3g6ZS54LXQueCx5OmUueS10Lnl9fWZ1bmN0aW9uIHNuKGUsdCl7dmFyIG49ZS5wb2ludDtyZXR1cm57cG9pbnQ6bixkZWx0YTpjbihuLGRuKHQpKSxvZmZzZXQ6Y24obix1bih0KSksdmVsb2NpdHk6Zm4odCwuMSl9fWZ1bmN0aW9uIHVuKGUpe3JldHVybiBlWzBdfWZ1bmN0aW9uIGRuKGUpe3JldHVybiBlW2UubGVuZ3RoLTFdfWZ1bmN0aW9uIGZuKGUsdCl7aWYoZS5sZW5ndGg8MilyZXR1cm57eDowLHk6MH07Zm9yKHZhciBuPWUubGVuZ3RoLTEscj1udWxsLG89ZG4oZSk7bj49MCYmKHI9ZVtuXSwhKG8udGltZXN0YW1wLXIudGltZXN0YW1wPmh0KHQpKSk7KW4tLTtpZighcilyZXR1cm57eDowLHk6MH07dmFyIGk9KG8udGltZXN0YW1wLXIudGltZXN0YW1wKS8xZTM7aWYoMD09PWkpcmV0dXJue3g6MCx5OjB9O3ZhciBhPXt4OihvLngtci54KS9pLHk6KG8ueS1yLnkpL2l9O3JldHVybiBhLng9PT0xLzAmJihhLng9MCksYS55PT09MS8wJiYoYS55PTApLGF9ZnVuY3Rpb24gcG4oZSl7cmV0dXJuIGV9ZnVuY3Rpb24gQ24oZSl7dmFyIHQ9ZS50b3A7cmV0dXJue3g6e21pbjplLmxlZnQsbWF4OmUucmlnaHR9LHk6e21pbjp0LG1heDplLmJvdHRvbX19fXZhciBobj17dHJhbnNsYXRlOjAsc2NhbGU6MSxvcmlnaW46MCxvcmlnaW5Qb2ludDowfTtmdW5jdGlvbiB2bigpe3JldHVybnt4OnIuX19hc3NpZ24oe30saG4pLHk6ci5fX2Fzc2lnbih7fSxobil9fWZ1bmN0aW9uIGduKGUpe3JldHVybltlKFwieFwiKSxlKFwieVwiKV19ZnVuY3Rpb24gbW4oZSx0LG4pe3JldHVybiB2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1uJiYobj0uMDEpLGwuZGlzdGFuY2UoZSx0KTxufWZ1bmN0aW9uIHduKGUpe3JldHVybiBlLm1heC1lLm1pbn1mdW5jdGlvbiB5bihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj0uNSksZS5vcmlnaW49cixlLm9yaWdpblBvaW50PWwubWl4KHQubWluLHQubWF4LGUub3JpZ2luKSxlLnNjYWxlPXduKG4pL3duKHQpLG1uKGUuc2NhbGUsMSwxZS00KSYmKGUuc2NhbGU9MSksZS50cmFuc2xhdGU9bC5taXgobi5taW4sbi5tYXgsZS5vcmlnaW4pLWUub3JpZ2luUG9pbnQsbW4oZS50cmFuc2xhdGUpJiYoZS50cmFuc2xhdGU9MCl9ZnVuY3Rpb24gYm4oZSx0LG4scil7eW4oZS54LHQueCxuLngseG4oci5vcmlnaW5YKSkseW4oZS55LHQueSxuLnkseG4oci5vcmlnaW5ZKSl9ZnVuY3Rpb24geG4oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGU/ZTouNX1mdW5jdGlvbiBPbihlLHQsbil7ZS5taW49bi5taW4rdC5taW4sZS5tYXg9ZS5taW4rd24odCl9ZnVuY3Rpb24gTG4oZSx0LG4pe3ZhciByPXQubWluLG89dC5tYXg7cmV0dXJuIHZvaWQgMCE9PXImJmU8cj9lPW4/bC5taXgocixlLG4ubWluKTpNYXRoLm1heChlLHIpOnZvaWQgMCE9PW8mJmU+byYmKGU9bj9sLm1peChvLGUsbi5tYXgpOk1hdGgubWluKGUsbykpLGV9ZnVuY3Rpb24gX24oZSx0LG4pe3JldHVybnttaW46dm9pZCAwIT09dD9lLm1pbit0OnZvaWQgMCxtYXg6dm9pZCAwIT09bj9lLm1heCtuLShlLm1heC1lLm1pbik6dm9pZCAwfX1mdW5jdGlvbiBNbihlLHQpe3ZhciBuLG89dC5taW4tZS5taW4saT10Lm1heC1lLm1heDtyZXR1cm4gdC5tYXgtdC5taW48ZS5tYXgtZS5taW4mJihvPShuPXIuX19yZWFkKFtpLG9dLDIpKVswXSxpPW5bMV0pLHttaW46ZS5taW4rbyxtYXg6ZS5taW4raX19ZnVuY3Rpb24gam4oZSx0LG4pe3JldHVybnttaW46RW4oZSx0KSxtYXg6RW4oZSxuKX19ZnVuY3Rpb24gRW4oZSx0KXt2YXIgbjtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT9lOm51bGwhPT0obj1lW3RdKSYmdm9pZCAwIT09bj9uOjB9ZnVuY3Rpb24gU24oZSx0KXtyZXR1cm4gQ24oZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnRvcCxyPWUubGVmdCxvPWUuYm90dG9tLGk9ZS5yaWdodDt2b2lkIDA9PT10JiYodD1wbik7dmFyIGE9dCh7eDpyLHk6bn0pLGw9dCh7eDppLHk6b30pO3JldHVybnt0b3A6YS55LGxlZnQ6YS54LGJvdHRvbTpsLnkscmlnaHQ6bC54fX0oZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0KSl9dmFyIFBuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZGVwdGgtdC5kZXB0aH07ZnVuY3Rpb24gSG4oZSl7cmV0dXJuIGUucHJvamVjdGlvbi5pc0VuYWJsZWR8fGUuc2hvdWxkUmVzZXRUcmFuc2Zvcm0oKX1mdW5jdGlvbiBrbihlLHQpe3ZvaWQgMD09PXQmJih0PVtdKTt2YXIgbj1lLnBhcmVudDtyZXR1cm4gbiYma24obix0KSxIbihlKSYmdC5wdXNoKGUpLHR9ZnVuY3Rpb24gVm4oZSl7aWYoIWUuc2hvdWxkUmVzZXRUcmFuc2Zvcm0oKSl7dmFyIHQsbj1lLmdldExheW91dFN0YXRlKCk7ZS5ub3RpZnlCZWZvcmVMYXlvdXRNZWFzdXJlKG4ubGF5b3V0KSxuLmlzSHlkcmF0ZWQ9ITAsbi5sYXlvdXQ9ZS5tZWFzdXJlVmlld3BvcnRCb3goKSxuLmxheW91dENvcnJlY3RlZD0odD1uLmxheW91dCx7eDpyLl9fYXNzaWduKHt9LHQueCkseTpyLl9fYXNzaWduKHt9LHQueSl9KSxlLm5vdGlmeUxheW91dE1lYXN1cmUobi5sYXlvdXQsZS5wcmV2Vmlld3BvcnRCb3h8fG4ubGF5b3V0KSxmLmRlZmF1bHQudXBkYXRlKChmdW5jdGlvbigpe3JldHVybiBlLnJlYmFzZVByb2plY3Rpb25UYXJnZXQoKX0pKX19ZnVuY3Rpb24gUm4oZSl7ZS5zaG91bGRSZXNldFRyYW5zZm9ybSgpfHwoZS5wcmV2Vmlld3BvcnRCb3g9ZS5tZWFzdXJlVmlld3BvcnRCb3goITEpLGUucmViYXNlUHJvamVjdGlvblRhcmdldCghMSxlLnByZXZWaWV3cG9ydEJveCkpfWZ1bmN0aW9uIEluKGUsdCl7cmV0dXJue21pbjp0Lm1pbi1lLm1pbixtYXg6dC5tYXgtZS5taW59fWZ1bmN0aW9uIFpuKGUsdCl7cmV0dXJue3g6SW4oZS54LHQueCkseTpJbihlLnksdC55KX19ZnVuY3Rpb24gVG4oZSl7dmFyIHQ9ZS5nZXRQcm9wcygpLG49dC5kcmFnLHI9dC5fZHJhZ1g7cmV0dXJuIG4mJiFyfWZ1bmN0aW9uIEFuKGUsdCl7ZS5taW49dC5taW4sZS5tYXg9dC5tYXh9ZnVuY3Rpb24gRG4oZSx0LG4pe3JldHVybiBuK3QqKGUtbil9ZnVuY3Rpb24gQm4oZSx0LG4scixvKXtyZXR1cm4gdm9pZCAwIT09byYmKGU9RG4oZSxvLHIpKSxEbihlLG4scikrdH1mdW5jdGlvbiAkbihlLHQsbixyLG8pe3ZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PW4mJihuPTEpLGUubWluPUJuKGUubWluLHQsbixyLG8pLGUubWF4PUJuKGUubWF4LHQsbixyLG8pfWZ1bmN0aW9uIEZuKGUsdCl7dmFyIG49dC54LHI9dC55OyRuKGUueCxuLnRyYW5zbGF0ZSxuLnNjYWxlLG4ub3JpZ2luUG9pbnQpLCRuKGUueSxyLnRyYW5zbGF0ZSxyLnNjYWxlLHIub3JpZ2luUG9pbnQpfWZ1bmN0aW9uIE5uKGUsdCxuLG8pe3ZhciBpPXIuX19yZWFkKG8sMyksYT1pWzBdLGM9aVsxXSxzPWlbMl07ZS5taW49dC5taW4sZS5tYXg9dC5tYXg7dmFyIHU9dm9pZCAwIT09bltzXT9uW3NdOi41LGQ9bC5taXgodC5taW4sdC5tYXgsdSk7JG4oZSxuW2FdLG5bY10sZCxuLnNjYWxlKX12YXIgem49W1wieFwiLFwic2NhbGVYXCIsXCJvcmlnaW5YXCJdLFduPVtcInlcIixcInNjYWxlWVwiLFwib3JpZ2luWVwiXTtmdW5jdGlvbiBHbihlLHQsbil7Tm4oZS54LHQueCxuLHpuKSxObihlLnksdC55LG4sV24pfWZ1bmN0aW9uIFVuKGUsdCxuLHIsbyl7cmV0dXJuIGU9RG4oZS09dCwxL24sciksdm9pZCAwIT09byYmKGU9RG4oZSwxL28scikpLGV9ZnVuY3Rpb24gcW4oZSx0LG4pe3ZhciBvPXIuX19yZWFkKG4sMyksaT1vWzBdLGE9b1sxXSxjPW9bMl07IWZ1bmN0aW9uKGUsdCxuLHIsbyl7dm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09biYmKG49MSksdm9pZCAwPT09ciYmKHI9LjUpO3ZhciBpPWwubWl4KGUubWluLGUubWF4LHIpLXQ7ZS5taW49VW4oZS5taW4sdCxuLGksbyksZS5tYXg9VW4oZS5tYXgsdCxuLGksbyl9KGUsdFtpXSx0W2FdLHRbY10sdC5zY2FsZSl9ZnVuY3Rpb24gWW4oZSx0KXtxbihlLngsdCx6bikscW4oZS55LHQsV24pfXZhciBLbj1uZXcgU2V0O2Z1bmN0aW9uIFhuKGUsdCxuKXtlW25dfHwoZVtuXT1bXSksZVtuXS5wdXNoKHQpfWZ1bmN0aW9uIFFuKGUpe3JldHVybiBLbi5hZGQoZSksZnVuY3Rpb24oKXtyZXR1cm4gS24uZGVsZXRlKGUpfX1mdW5jdGlvbiBKbigpe2lmKEtuLnNpemUpe3ZhciBlPTAsdD1bW11dLG49W10scj1mdW5jdGlvbihuKXtyZXR1cm4gWG4odCxuLGUpfSxvPWZ1bmN0aW9uKHQpe1huKG4sdCxlKSxlKyt9O0tuLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QocixvKSxlPTB9KSksS24uY2xlYXIoKTtmb3IodmFyIGk9bi5sZW5ndGgsYT0wO2E8PWk7YSsrKXRbYV0mJnRbYV0uZm9yRWFjaCh0ciksblthXSYmblthXS5mb3JFYWNoKHRyKX19dmFyIGVyLHRyPWZ1bmN0aW9uKGUpe3JldHVybiBlKCl9LG5yPW5ldyBXZWFrTWFwLHJyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgdD1lLnZpc3VhbEVsZW1lbnQ7dGhpcy5pc0RyYWdnaW5nPSExLHRoaXMuY3VycmVudERpcmVjdGlvbj1udWxsLHRoaXMuY29uc3RyYWludHM9ITEsdGhpcy5lbGFzdGljPXt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fSx0aGlzLnByb3BzPXt9LHRoaXMuaGFzTXV0YXRlZENvbnN0cmFpbnRzPSExLHRoaXMuY3Vyc29yUHJvZ3Jlc3M9e3g6LjUseTouNX0sdGhpcy5vcmlnaW5Qb2ludD17fSx0aGlzLm9wZW5HbG9iYWxMb2NrPW51bGwsdGhpcy5wYW5TZXNzaW9uPW51bGwsdGhpcy52aXN1YWxFbGVtZW50PXQsdGhpcy52aXN1YWxFbGVtZW50LmVuYWJsZUxheW91dFByb2plY3Rpb24oKSxuci5zZXQodCx0aGlzKX1yZXR1cm4gZS5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLG89dm9pZCAwPT09dD97fTp0LGk9by5zbmFwVG9DdXJzb3IsYT12b2lkIDAhPT1pJiZpLHM9by5jdXJzb3JQcm9ncmVzcyx1PXRoaXMucHJvcHMudHJhbnNmb3JtUGFnZVBvaW50O3RoaXMucGFuU2Vzc2lvbj1uZXcgYW4oZSx7b25TZXNzaW9uU3RhcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ7bi5zdG9wTW90aW9uKCk7dmFyIG89ZnVuY3Rpb24oZSl7cmV0dXJuIHFlKGUsXCJjbGllbnRcIil9KGUpLnBvaW50O251bGw9PT0odD1uLmNhbmNlbExheW91dCl8fHZvaWQgMD09PXR8fHQuY2FsbChuKSxuLmNhbmNlbExheW91dD1RbigoZnVuY3Rpb24oZSx0KXt2YXIgaT1rbihuLnZpc3VhbEVsZW1lbnQpLHU9ZnVuY3Rpb24oZSl7dmFyIHQ9W10sbj1mdW5jdGlvbihlKXtIbihlKSYmdC5wdXNoKGUpLGUuY2hpbGRyZW4uZm9yRWFjaChuKX07cmV0dXJuIGUuY2hpbGRyZW4uZm9yRWFjaChuKSx0LnNvcnQoUG4pfShuLnZpc3VhbEVsZW1lbnQpLGQ9ci5fX3NwcmVhZEFycmF5KHIuX19zcHJlYWRBcnJheShbXSxyLl9fcmVhZChpKSksci5fX3JlYWQodSkpLGY9ITE7bi5pc0xheW91dERyYWcoKSYmbi52aXN1YWxFbGVtZW50LmxvY2tQcm9qZWN0aW9uVGFyZ2V0KCksdCgoZnVuY3Rpb24oKXtkLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc2V0VHJhbnNmb3JtKCl9KSl9KSksZSgoZnVuY3Rpb24oKXtWbihuLnZpc3VhbEVsZW1lbnQpLHUuZm9yRWFjaChWbil9KSksdCgoZnVuY3Rpb24oKXtkLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc3RvcmVUcmFuc2Zvcm0oKX0pKSxhJiYoZj1uLnNuYXBUb0N1cnNvcihvKSl9KSksZSgoZnVuY3Rpb24oKXtCb29sZWFuKG4uZ2V0QXhpc01vdGlvblZhbHVlKFwieFwiKSYmIW4uaXNFeHRlcm5hbERyYWcoKSl8fG4udmlzdWFsRWxlbWVudC5yZWJhc2VQcm9qZWN0aW9uVGFyZ2V0KCEwLG4udmlzdWFsRWxlbWVudC5tZWFzdXJlVmlld3BvcnRCb3goITEpKSxuLnZpc3VhbEVsZW1lbnQuc2NoZWR1bGVVcGRhdGVMYXlvdXRQcm9qZWN0aW9uKCk7dmFyIGU9bi52aXN1YWxFbGVtZW50LnByb2plY3Rpb247Z24oKGZ1bmN0aW9uKHQpe2lmKCFmKXt2YXIgcj1lLnRhcmdldFt0XSxpPXIubWluLGE9ci5tYXg7bi5jdXJzb3JQcm9ncmVzc1t0XT1zP3NbdF06bC5wcm9ncmVzcyhpLGEsb1t0XSl9dmFyIGM9bi5nZXRBeGlzTW90aW9uVmFsdWUodCk7YyYmKG4ub3JpZ2luUG9pbnRbdF09Yy5nZXQoKSl9KSl9KSksdCgoZnVuY3Rpb24oKXtjLmZsdXNoU3luYy51cGRhdGUoKSxjLmZsdXNoU3luYy5wcmVSZW5kZXIoKSxjLmZsdXNoU3luYy5yZW5kZXIoKSxjLmZsdXNoU3luYy5wb3N0UmVuZGVyKCl9KSksZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5yZXNvbHZlRHJhZ0NvbnN0cmFpbnRzKCl9KSl9KSl9LG9uU3RhcnQ6ZnVuY3Rpb24oZSx0KXt2YXIgcixvLGksYT1uLnByb3BzLGw9YS5kcmFnLGM9YS5kcmFnUHJvcGFnYXRpb247KCFsfHxjfHwobi5vcGVuR2xvYmFsTG9jayYmbi5vcGVuR2xvYmFsTG9jaygpLG4ub3Blbkdsb2JhbExvY2s9bHQobCksbi5vcGVuR2xvYmFsTG9jaykpJiYoSm4oKSxuLmlzRHJhZ2dpbmc9ITAsbi5jdXJyZW50RGlyZWN0aW9uPW51bGwsbnVsbD09PShvPShyPW4ucHJvcHMpLm9uRHJhZ1N0YXJ0KXx8dm9pZCAwPT09b3x8by5jYWxsKHIsZSx0KSxudWxsPT09KGk9bi52aXN1YWxFbGVtZW50LmFuaW1hdGlvblN0YXRlKXx8dm9pZCAwPT09aXx8aS5zZXRBY3RpdmUoVGUuRHJhZywhMCkpfSxvbk1vdmU6ZnVuY3Rpb24oZSx0KXt2YXIgcixvLGksYSxsPW4ucHJvcHMsYz1sLmRyYWdQcm9wYWdhdGlvbixzPWwuZHJhZ0RpcmVjdGlvbkxvY2s7aWYoY3x8bi5vcGVuR2xvYmFsTG9jayl7dmFyIHU9dC5vZmZzZXQ7aWYocyYmbnVsbD09PW4uY3VycmVudERpcmVjdGlvbilyZXR1cm4gbi5jdXJyZW50RGlyZWN0aW9uPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9MTApO3ZhciBuPW51bGw7cmV0dXJuIE1hdGguYWJzKGUueSk+dD9uPVwieVwiOk1hdGguYWJzKGUueCk+dCYmKG49XCJ4XCIpLG59KHUpLHZvaWQobnVsbCE9PW4uY3VycmVudERpcmVjdGlvbiYmKG51bGw9PT0obz0ocj1uLnByb3BzKS5vbkRpcmVjdGlvbkxvY2spfHx2b2lkIDA9PT1vfHxvLmNhbGwocixuLmN1cnJlbnREaXJlY3Rpb24pKSk7bi51cGRhdGVBeGlzKFwieFwiLHQucG9pbnQsdSksbi51cGRhdGVBeGlzKFwieVwiLHQucG9pbnQsdSksbnVsbD09PShhPShpPW4ucHJvcHMpLm9uRHJhZyl8fHZvaWQgMD09PWF8fGEuY2FsbChpLGUsdCksZXI9ZX19LG9uU2Vzc2lvbkVuZDpmdW5jdGlvbihlLHQpe3JldHVybiBuLnN0b3AoZSx0KX19LHt0cmFuc2Zvcm1QYWdlUG9pbnQ6dX0pfSxlLnByb3RvdHlwZS5yZXNvbHZlRHJhZ0NvbnN0cmFpbnRzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LmRyYWdDb25zdHJhaW50cyxyPXQuZHJhZ0VsYXN0aWMsbz10aGlzLnZpc3VhbEVsZW1lbnQuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXRDb3JyZWN0ZWQ7dGhpcy5jb25zdHJhaW50cz0hIW4mJihrKG4pP3RoaXMucmVzb2x2ZVJlZkNvbnN0cmFpbnRzKG8sbik6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnRvcCxyPXQubGVmdCxvPXQuYm90dG9tLGk9dC5yaWdodDtyZXR1cm57eDpfbihlLngscixpKSx5Ol9uKGUueSxuLG8pfX0obyxuKSksdGhpcy5lbGFzdGljPWZ1bmN0aW9uKGUpe3JldHVybiExPT09ZT9lPTA6ITA9PT1lJiYoZT0uMzUpLHt4OmpuKGUsXCJsZWZ0XCIsXCJyaWdodFwiKSx5OmpuKGUsXCJ0b3BcIixcImJvdHRvbVwiKX19KHIpLHRoaXMuY29uc3RyYWludHMmJiF0aGlzLmhhc011dGF0ZWRDb25zdHJhaW50cyYmZ24oKGZ1bmN0aW9uKHQpe2UuZ2V0QXhpc01vdGlvblZhbHVlKHQpJiYoZS5jb25zdHJhaW50c1t0XT1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O3JldHVybiB2b2lkIDAhPT10Lm1pbiYmKG4ubWluPXQubWluLWUubWluKSx2b2lkIDAhPT10Lm1heCYmKG4ubWF4PXQubWF4LWUubWluKSxufShvW3RdLGUuY29uc3RyYWludHNbdF0pKX0pKX0sZS5wcm90b3R5cGUucmVzb2x2ZVJlZkNvbnN0cmFpbnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5wcm9wcyxyPW4ub25NZWFzdXJlRHJhZ0NvbnN0cmFpbnRzLG89bi50cmFuc2Zvcm1QYWdlUG9pbnQsYT10LmN1cnJlbnQ7aS5pbnZhcmlhbnQobnVsbCE9PWEsXCJJZiBgZHJhZ0NvbnN0cmFpbnRzYCBpcyBzZXQgYXMgYSBSZWFjdCByZWYsIHRoYXQgcmVmIG11c3QgYmUgcGFzc2VkIHRvIGFub3RoZXIgY29tcG9uZW50J3MgYHJlZmAgcHJvcC5cIiksdGhpcy5jb25zdHJhaW50c0JveD1TbihhLG8pO3ZhciBsPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3g6TW4oZS54LHQueCkseTpNbihlLnksdC55KX19KGUsdGhpcy5jb25zdHJhaW50c0JveCk7aWYocil7dmFyIGM9cihmdW5jdGlvbihlKXt2YXIgdD1lLngsbj1lLnk7cmV0dXJue3RvcDpuLm1pbixib3R0b206bi5tYXgsbGVmdDp0Lm1pbixyaWdodDp0Lm1heH19KGwpKTt0aGlzLmhhc011dGF0ZWRDb25zdHJhaW50cz0hIWMsYyYmKGw9Q24oYykpfXJldHVybiBsfSxlLnByb3RvdHlwZS5jYW5jZWxEcmFnPWZ1bmN0aW9uKCl7dmFyIGUsdDt0aGlzLnZpc3VhbEVsZW1lbnQudW5sb2NrUHJvamVjdGlvblRhcmdldCgpLG51bGw9PT0oZT10aGlzLmNhbmNlbExheW91dCl8fHZvaWQgMD09PWV8fGUuY2FsbCh0aGlzKSx0aGlzLmlzRHJhZ2dpbmc9ITEsdGhpcy5wYW5TZXNzaW9uJiZ0aGlzLnBhblNlc3Npb24uZW5kKCksdGhpcy5wYW5TZXNzaW9uPW51bGwsIXRoaXMucHJvcHMuZHJhZ1Byb3BhZ2F0aW9uJiZ0aGlzLm9wZW5HbG9iYWxMb2NrJiYodGhpcy5vcGVuR2xvYmFsTG9jaygpLHRoaXMub3Blbkdsb2JhbExvY2s9bnVsbCksbnVsbD09PSh0PXRoaXMudmlzdWFsRWxlbWVudC5hbmltYXRpb25TdGF0ZSl8fHZvaWQgMD09PXR8fHQuc2V0QWN0aXZlKFRlLkRyYWcsITEpfSxlLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvO251bGw9PT0obj10aGlzLnBhblNlc3Npb24pfHx2b2lkIDA9PT1ufHxuLmVuZCgpLHRoaXMucGFuU2Vzc2lvbj1udWxsO3ZhciBpPXRoaXMuaXNEcmFnZ2luZztpZih0aGlzLmNhbmNlbERyYWcoKSxpKXt2YXIgYT10LnZlbG9jaXR5O3RoaXMuYW5pbWF0ZURyYWdFbmQoYSksbnVsbD09PShvPShyPXRoaXMucHJvcHMpLm9uRHJhZ0VuZCl8fHZvaWQgMD09PW98fG8uY2FsbChyLGUsdCl9fSxlLnByb3RvdHlwZS5zbmFwVG9DdXJzb3I9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gZ24oKGZ1bmN0aW9uKG4pe2lmKG9yKG4sdC5wcm9wcy5kcmFnLHQuY3VycmVudERpcmVjdGlvbikpe3ZhciByPXQuZ2V0QXhpc01vdGlvblZhbHVlKG4pO2lmKCFyKXJldHVybiB0LmN1cnNvclByb2dyZXNzW25dPS41LCEwO3ZhciBvPXQudmlzdWFsRWxlbWVudC5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dCxpPW9bbl0ubWF4LW9bbl0ubWluLGE9b1tuXS5taW4raS8yLGw9ZVtuXS1hO3Qub3JpZ2luUG9pbnRbbl09ZVtuXSxyLnNldChsKX19KSkuaW5jbHVkZXMoITApfSxlLnByb3RvdHlwZS51cGRhdGVBeGlzPWZ1bmN0aW9uKGUsdCxuKXtpZihvcihlLHRoaXMucHJvcHMuZHJhZyx0aGlzLmN1cnJlbnREaXJlY3Rpb24pKXJldHVybiB0aGlzLmdldEF4aXNNb3Rpb25WYWx1ZShlKT90aGlzLnVwZGF0ZUF4aXNNb3Rpb25WYWx1ZShlLG4pOnRoaXMudXBkYXRlVmlzdWFsRWxlbWVudEF4aXMoZSx0KX0sZS5wcm90b3R5cGUudXBkYXRlQXhpc01vdGlvblZhbHVlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRBeGlzTW90aW9uVmFsdWUoZSk7aWYodCYmbil7dmFyIHI9dGhpcy5vcmlnaW5Qb2ludFtlXSt0W2VdLG89dGhpcy5jb25zdHJhaW50cz9MbihyLHRoaXMuY29uc3RyYWludHNbZV0sdGhpcy5lbGFzdGljW2VdKTpyO24uc2V0KG8pfX0sZS5wcm90b3R5cGUudXBkYXRlVmlzdWFsRWxlbWVudEF4aXM9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPXRoaXMudmlzdWFsRWxlbWVudC5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dFtlXSxvPXIubWF4LXIubWluLGk9dGhpcy5jdXJzb3JQcm9ncmVzc1tlXSxhPWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9ZS10Km47cmV0dXJuIHI/TG4oaSxyLG8pOml9KHRbZV0sbyxpLG51bGw9PT0obj10aGlzLmNvbnN0cmFpbnRzKXx8dm9pZCAwPT09bj92b2lkIDA6bltlXSx0aGlzLmVsYXN0aWNbZV0pO3RoaXMudmlzdWFsRWxlbWVudC5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyhlLGEsYStvKX0sZS5wcm90b3R5cGUuc2V0UHJvcHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kcmFnLG49dm9pZCAwIT09dCYmdCxvPWUuZHJhZ0RpcmVjdGlvbkxvY2ssaT12b2lkIDAhPT1vJiZvLGE9ZS5kcmFnUHJvcGFnYXRpb24sbD12b2lkIDAhPT1hJiZhLGM9ZS5kcmFnQ29uc3RyYWludHMscz12b2lkIDAhPT1jJiZjLHU9ZS5kcmFnRWxhc3RpYyxkPXZvaWQgMD09PXU/LjM1OnUsZj1lLmRyYWdNb21lbnR1bSxwPXZvaWQgMD09PWZ8fGYsQz1yLl9fcmVzdChlLFtcImRyYWdcIixcImRyYWdEaXJlY3Rpb25Mb2NrXCIsXCJkcmFnUHJvcGFnYXRpb25cIixcImRyYWdDb25zdHJhaW50c1wiLFwiZHJhZ0VsYXN0aWNcIixcImRyYWdNb21lbnR1bVwiXSk7dGhpcy5wcm9wcz1yLl9fYXNzaWduKHtkcmFnOm4sZHJhZ0RpcmVjdGlvbkxvY2s6aSxkcmFnUHJvcGFnYXRpb246bCxkcmFnQ29uc3RyYWludHM6cyxkcmFnRWxhc3RpYzpkLGRyYWdNb21lbnR1bTpwfSxDKX0sZS5wcm90b3R5cGUuZ2V0QXhpc01vdGlvblZhbHVlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10LmxheW91dCxyPXQubGF5b3V0SWQsbz1cIl9kcmFnXCIrZS50b1VwcGVyQ2FzZSgpO3JldHVybiB0aGlzLnByb3BzW29dP3RoaXMucHJvcHNbb106bnx8dm9pZCAwIT09cj92b2lkIDA6dGhpcy52aXN1YWxFbGVtZW50LmdldFZhbHVlKGUsMCl9LGUucHJvdG90eXBlLmlzTGF5b3V0RHJhZz1mdW5jdGlvbigpe3JldHVybiF0aGlzLmdldEF4aXNNb3Rpb25WYWx1ZShcInhcIil9LGUucHJvdG90eXBlLmlzRXh0ZXJuYWxEcmFnPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuX2RyYWdYLG49ZS5fZHJhZ1k7cmV0dXJuIHR8fG59LGUucHJvdG90eXBlLmFuaW1hdGVEcmFnRW5kPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLnByb3BzLG89bi5kcmFnLGk9bi5kcmFnTW9tZW50dW0sYT1uLmRyYWdFbGFzdGljLGw9bi5kcmFnVHJhbnNpdGlvbixjPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITApO3ZhciBuLHI9ZS5nZXRQcm9qZWN0aW9uUGFyZW50KCk7cmV0dXJuISFyJiYodD9ZbihuPVpuKHIucHJvamVjdGlvbi50YXJnZXQsZS5wcm9qZWN0aW9uLnRhcmdldCksci5nZXRMYXRlc3RWYWx1ZXMoKSk6bj1abihyLmdldExheW91dFN0YXRlKCkubGF5b3V0LGUuZ2V0TGF5b3V0U3RhdGUoKS5sYXlvdXQpLGduKChmdW5jdGlvbih0KXtyZXR1cm4gZS5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyh0LG5bdF0ubWluLG5bdF0ubWF4LCEwKX0pKSwhMCl9KHRoaXMudmlzdWFsRWxlbWVudCx0aGlzLmlzTGF5b3V0RHJhZygpJiYhdGhpcy5pc0V4dGVybmFsRHJhZygpKSxzPXRoaXMuY29uc3RyYWludHN8fHt9O2lmKGMmJk9iamVjdC5rZXlzKHMpLmxlbmd0aCYmdGhpcy5pc0xheW91dERyYWcoKSl7dmFyIHU9dGhpcy52aXN1YWxFbGVtZW50LmdldFByb2plY3Rpb25QYXJlbnQoKTtpZih1KXt2YXIgZD1abih1LnByb2plY3Rpb24udGFyZ2V0RmluYWwscyk7Z24oKGZ1bmN0aW9uKGUpe3ZhciB0PWRbZV0sbj10Lm1pbixyPXQubWF4O3NbZV09e21pbjppc05hTihuKT92b2lkIDA6bixtYXg6aXNOYU4ocik/dm9pZCAwOnJ9fSkpfX12YXIgZj1nbigoZnVuY3Rpb24obil7dmFyIHU7aWYob3IobixvLHQuY3VycmVudERpcmVjdGlvbikpe3ZhciBkPW51bGwhPT0odT1udWxsPT1zP3ZvaWQgMDpzW25dKSYmdm9pZCAwIT09dT91Ont9LGY9YT8yMDA6MWU2LHA9YT80MDoxZTcsQz1yLl9fYXNzaWduKHIuX19hc3NpZ24oe3R5cGU6XCJpbmVydGlhXCIsdmVsb2NpdHk6aT9lW25dOjAsYm91bmNlU3RpZmZuZXNzOmYsYm91bmNlRGFtcGluZzpwLHRpbWVDb25zdGFudDo3NTAscmVzdERlbHRhOjEscmVzdFNwZWVkOjEwfSxsKSxkKTtyZXR1cm4gdC5nZXRBeGlzTW90aW9uVmFsdWUobik/dC5zdGFydEF4aXNWYWx1ZUFuaW1hdGlvbihuLEMpOnQudmlzdWFsRWxlbWVudC5zdGFydExheW91dEFuaW1hdGlvbihuLEMsYyl9fSkpO3JldHVybiBQcm9taXNlLmFsbChmKS50aGVuKChmdW5jdGlvbigpe3ZhciBlLG47bnVsbD09PShuPShlPXQucHJvcHMpLm9uRHJhZ1RyYW5zaXRpb25FbmQpfHx2b2lkIDA9PT1ufHxuLmNhbGwoZSl9KSl9LGUucHJvdG90eXBlLnN0b3BNb3Rpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2duKChmdW5jdGlvbih0KXt2YXIgbj1lLmdldEF4aXNNb3Rpb25WYWx1ZSh0KTtuP24uc3RvcCgpOmUudmlzdWFsRWxlbWVudC5zdG9wTGF5b3V0QW5pbWF0aW9uKCl9KSl9LGUucHJvdG90eXBlLnN0YXJ0QXhpc1ZhbHVlQW5pbWF0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRBeGlzTW90aW9uVmFsdWUoZSk7aWYobil7dmFyIHI9bi5nZXQoKTtyZXR1cm4gbi5zZXQociksbi5zZXQociksVnQoZSxuLDAsdCl9fSxlLnByb3RvdHlwZS5zY2FsZVBvaW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LmRyYWc7aWYoayh0LmRyYWdDb25zdHJhaW50cykmJnRoaXMuY29uc3RyYWludHNCb3gpe3RoaXMuc3RvcE1vdGlvbigpO3ZhciByPXt4OjAseTowfTtnbigoZnVuY3Rpb24odCl7dmFyIG4sbyxpLGEsYyxzO3JbdF09KG49ZS52aXN1YWxFbGVtZW50LnByb2plY3Rpb24udGFyZ2V0W3RdLG89ZS5jb25zdHJhaW50c0JveFt0XSxhPS41LGM9d24obiksKHM9d24obykpPmM/YT1sLnByb2dyZXNzKG8ubWluLG8ubWF4LWMsbi5taW4pOmM+cyYmKGE9bC5wcm9ncmVzcyhuLm1pbixuLm1heC1zLG8ubWluKSksaT1hLGwuY2xhbXAoMCwxLGkpKX0pKSx0aGlzLnVwZGF0ZUNvbnN0cmFpbnRzKChmdW5jdGlvbigpe2duKChmdW5jdGlvbih0KXtpZihvcih0LG4sbnVsbCkpe3ZhciBvPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLm1heC1lLm1pbixvPWwubWl4KHQubWluLHQubWF4LXIsbik7cmV0dXJue21pbjpvLG1heDpvK3J9fShlLnZpc3VhbEVsZW1lbnQucHJvamVjdGlvbi50YXJnZXRbdF0sZS5jb25zdHJhaW50c0JveFt0XSxyW3RdKSxpPW8ubWluLGE9by5tYXg7ZS52aXN1YWxFbGVtZW50LnNldFByb2plY3Rpb25UYXJnZXRBeGlzKHQsaSxhKX19KSl9KSksc2V0VGltZW91dChKbiwxKX19LGUucHJvdG90eXBlLnVwZGF0ZUNvbnN0cmFpbnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dGhpcy5jYW5jZWxMYXlvdXQ9UW4oKGZ1bmN0aW9uKG4scil7dmFyIG89a24odC52aXN1YWxFbGVtZW50KTtyKChmdW5jdGlvbigpe3JldHVybiBvLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc2V0VHJhbnNmb3JtKCl9KSl9KSksbigoZnVuY3Rpb24oKXtyZXR1cm4gVm4odC52aXN1YWxFbGVtZW50KX0pKSxyKChmdW5jdGlvbigpe3JldHVybiBvLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc3RvcmVUcmFuc2Zvcm0oKX0pKX0pKSxuKChmdW5jdGlvbigpe3QucmVzb2x2ZURyYWdDb25zdHJhaW50cygpfSkpLGUmJnIoZSl9KSl9LGUucHJvdG90eXBlLm1vdW50PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj1udChlLmdldEluc3RhbmNlKCksXCJwb2ludGVyZG93blwiLChmdW5jdGlvbihlKXt2YXIgbj10LnByb3BzLHI9bi5kcmFnLG89bi5kcmFnTGlzdGVuZXI7ciYmKHZvaWQgMD09PW98fG8pJiZ0LnN0YXJ0KGUpfSkpLHI9JGUod2luZG93LFwicmVzaXplXCIsKGZ1bmN0aW9uKCl7dC5zY2FsZVBvaW50KCl9KSksbz1lLm9uTGF5b3V0VXBkYXRlKChmdW5jdGlvbigpe3QuaXNEcmFnZ2luZyYmdC5yZXNvbHZlRHJhZ0NvbnN0cmFpbnRzKCl9KSksaT1lLnByZXZEcmFnQ3Vyc29yO3JldHVybiBpJiZ0aGlzLnN0YXJ0KGVyLHtjdXJzb3JQcm9ncmVzczppfSksZnVuY3Rpb24oKXtudWxsPT1ufHxuKCksbnVsbD09cnx8cigpLG51bGw9PW98fG8oKSx0LmNhbmNlbERyYWcoKX19LGV9KCk7ZnVuY3Rpb24gb3IoZSx0LG4pe3JldHVybiEoITAhPT10JiZ0IT09ZXx8bnVsbCE9PW4mJm4hPT1lKX12YXIgaXIsYXIsbHI9e3BhbjpmdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vblBhbixuPWUub25QYW5TdGFydCxyPWUub25QYW5FbmQsaT1lLm9uUGFuU2Vzc2lvblN0YXJ0LGE9ZS52aXN1YWxFbGVtZW50LGw9dHx8bnx8cnx8aSxjPW8udXNlUmVmKG51bGwpLHM9by51c2VDb250ZXh0KHcpLnRyYW5zZm9ybVBhZ2VQb2ludCx1PXtvblNlc3Npb25TdGFydDppLG9uU3RhcnQ6bixvbk1vdmU6dCxvbkVuZDpmdW5jdGlvbihlLHQpe2MuY3VycmVudD1udWxsLHImJnIoZSx0KX19O28udXNlRWZmZWN0KChmdW5jdGlvbigpe251bGwhPT1jLmN1cnJlbnQmJmMuY3VycmVudC51cGRhdGVIYW5kbGVycyh1KX0pKSxydChhLFwicG9pbnRlcmRvd25cIixsJiZmdW5jdGlvbihlKXtjLmN1cnJlbnQ9bmV3IGFuKGUsdSx7dHJhbnNmb3JtUGFnZVBvaW50OnN9KX0pLGR0KChmdW5jdGlvbigpe3JldHVybiBjLmN1cnJlbnQmJmMuY3VycmVudC5lbmQoKX0pKX0pKSxkcmFnOmZ0KChmdW5jdGlvbihlKXt2YXIgdD1lLmRyYWdDb250cm9scyxuPWUudmlzdWFsRWxlbWVudCxpPW8udXNlQ29udGV4dCh3KS50cmFuc2Zvcm1QYWdlUG9pbnQsYT1PKChmdW5jdGlvbigpe3JldHVybiBuZXcgcnIoe3Zpc3VhbEVsZW1lbnQ6bn0pfSkpO2Euc2V0UHJvcHMoci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGUpLHt0cmFuc2Zvcm1QYWdlUG9pbnQ6aX0pKSxvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdCYmdC5zdWJzY3JpYmUoYSl9KSxbYV0pLG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiBhLm1vdW50KG4pfSksW10pfSkpfTtmdW5jdGlvbiBjcihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmZS5zdGFydHNXaXRoKFwidmFyKC0tXCIpfSFmdW5jdGlvbihlKXtlW2UuRW50ZXJpbmc9MF09XCJFbnRlcmluZ1wiLGVbZS5QcmVzZW50PTFdPVwiUHJlc2VudFwiLGVbZS5FeGl0aW5nPTJdPVwiRXhpdGluZ1wifShpcnx8KGlyPXt9KSksdC5WaXNpYmlsaXR5QWN0aW9uPXZvaWQgMCwoYXI9dC5WaXNpYmlsaXR5QWN0aW9ufHwodC5WaXNpYmlsaXR5QWN0aW9uPXt9KSlbYXIuSGlkZT0wXT1cIkhpZGVcIixhclthci5TaG93PTFdPVwiU2hvd1wiO3ZhciBzcj0vdmFyXFwoKC0tW2EtekEtWjAtOS1fXSspLD8gPyhbYS16QS1aMC05ICgpJSMuLC1dKyk/XFwpLztmdW5jdGlvbiB1cihlLHQsbil7dm9pZCAwPT09biYmKG49MSksaS5pbnZhcmlhbnQobjw9NCwnTWF4IENTUyB2YXJpYWJsZSBmYWxsYmFjayBkZXB0aCBkZXRlY3RlZCBpbiBwcm9wZXJ0eSBcIicrZSsnXCIuIFRoaXMgbWF5IGluZGljYXRlIGEgY2lyY3VsYXIgZmFsbGJhY2sgZGVwZW5kZW5jeS4nKTt2YXIgbz1yLl9fcmVhZChmdW5jdGlvbihlKXt2YXIgdD1zci5leGVjKGUpO2lmKCF0KXJldHVyblssXTt2YXIgbj1yLl9fcmVhZCh0LDMpO3JldHVybltuWzFdLG5bMl1dfShlKSwyKSxhPW9bMF0sbD1vWzFdO2lmKGEpe3ZhciBjPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmdldFByb3BlcnR5VmFsdWUoYSk7cmV0dXJuIGM/Yy50cmltKCk6Y3IobCk/dXIobCx0LG4rMSk6bH19ZnVuY3Rpb24gZHIoZSx0KXtyZXR1cm4gZS8odC5tYXgtdC5taW4pKjEwMH12YXIgZnI9XCJfJGNzc1wiLHByPXtwcm9jZXNzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uLnRhcmdldDtpZihcInN0cmluZ1wiPT10eXBlb2YgZSl7aWYoIWEucHgudGVzdChlKSlyZXR1cm4gZTtlPXBhcnNlRmxvYXQoZSl9cmV0dXJuIGRyKGUsci54KStcIiUgXCIrZHIoZSxyLnkpK1wiJVwifX0sQ3I9e2JvcmRlclJhZGl1czpyLl9fYXNzaWduKHIuX19hc3NpZ24oe30scHIpLHthcHBseVRvOltcImJvcmRlclRvcExlZnRSYWRpdXNcIixcImJvcmRlclRvcFJpZ2h0UmFkaXVzXCIsXCJib3JkZXJCb3R0b21MZWZ0UmFkaXVzXCIsXCJib3JkZXJCb3R0b21SaWdodFJhZGl1c1wiXX0pLGJvcmRlclRvcExlZnRSYWRpdXM6cHIsYm9yZGVyVG9wUmlnaHRSYWRpdXM6cHIsYm9yZGVyQm90dG9tTGVmdFJhZGl1czpwcixib3JkZXJCb3R0b21SaWdodFJhZGl1czpwcixib3hTaGFkb3c6e3Byb2Nlc3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRlbHRhLHI9dC50cmVlU2NhbGUsbz1lLGk9ZS5pbmNsdWRlcyhcInZhcihcIiksYz1bXTtpJiYoZT1lLnJlcGxhY2Uoc3IsKGZ1bmN0aW9uKGUpe3JldHVybiBjLnB1c2goZSksZnJ9KSkpO3ZhciBzPWEuY29tcGxleC5wYXJzZShlKTtpZihzLmxlbmd0aD41KXJldHVybiBvO3ZhciB1PWEuY29tcGxleC5jcmVhdGVUcmFuc2Zvcm1lcihlKSxkPVwibnVtYmVyXCIhPXR5cGVvZiBzWzBdPzE6MCxmPW4ueC5zY2FsZSpyLngscD1uLnkuc2NhbGUqci55O3NbMCtkXS89ZixzWzErZF0vPXA7dmFyIEM9bC5taXgoZixwLC41KTtcIm51bWJlclwiPT10eXBlb2Ygc1syK2RdJiYoc1syK2RdLz1DKSxcIm51bWJlclwiPT10eXBlb2Ygc1szK2RdJiYoc1szK2RdLz1DKTt2YXIgaD11KHMpO2lmKGkpe3ZhciB2PTA7aD1oLnJlcGxhY2UoZnIsKGZ1bmN0aW9uKCl7dmFyIGU9Y1t2XTtyZXR1cm4gdisrLGV9KSl9cmV0dXJuIGh9fX0saHI9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe3ZhciBuPW51bGwhPT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gbi5mcmFtZVRhcmdldD17eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX0sbi5jdXJyZW50QW5pbWF0aW9uVGFyZ2V0PXt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fSxuLmlzQW5pbWF0aW5nPXt4OiExLHk6ITF9LG4uc3RvcEF4aXNBbmltYXRpb249e3g6dm9pZCAwLHk6dm9pZCAwfSxuLmlzQW5pbWF0aW5nVHJlZT0hMSxuLmFuaW1hdGU9ZnVuY3Rpb24oZSxvLGkpe3ZvaWQgMD09PWkmJihpPXt9KTt2YXIgYT1pLm9yaWdpbkJveCxsPWkudGFyZ2V0Qm94LGM9aS52aXNpYmlsaXR5QWN0aW9uLHM9aS5zaG91bGRTdGFja0FuaW1hdGUsdT1pLm9uQ29tcGxldGUsZD1pLnByZXZQYXJlbnQsZj1yLl9fcmVzdChpLFtcIm9yaWdpbkJveFwiLFwidGFyZ2V0Qm94XCIsXCJ2aXNpYmlsaXR5QWN0aW9uXCIsXCJzaG91bGRTdGFja0FuaW1hdGVcIixcIm9uQ29tcGxldGVcIixcInByZXZQYXJlbnRcIl0pLHA9bi5wcm9wcyxDPXAudmlzdWFsRWxlbWVudCxoPXAubGF5b3V0O2lmKCExPT09cylyZXR1cm4gbi5pc0FuaW1hdGluZ1RyZWU9ITEsbi5zYWZlVG9SZW1vdmUoKTtpZighbi5pc0FuaW1hdGluZ1RyZWV8fCEwPT09cyl7cyYmKG4uaXNBbmltYXRpbmdUcmVlPSEwKSxvPWF8fG8sZT1sfHxlO3ZhciB2LGcsbSx3PSExLHk9Qy5nZXRQcm9qZWN0aW9uUGFyZW50KCk7aWYoeSl7dmFyIGI9eS5wcmV2Vmlld3BvcnRCb3gseD15LmdldExheW91dFN0YXRlKCkubGF5b3V0O2QmJihsJiYoeD1kLmdldExheW91dFN0YXRlKCkubGF5b3V0KSxhJiYoZz15LCh2PWQpLmdldExheW91dElkKCk9PT0obT1nLmdldExheW91dElkKCkpJiYodm9pZCAwIT09bXx8dj09PWcpKSYmZC5wcmV2Vmlld3BvcnRCb3gmJihiPWQucHJldlZpZXdwb3J0Qm94KSksYiYmZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlfHwhZSYmISh0fHxuKX0oZCxhLGwpJiYodz0hMCxvPVpuKGIsbyksZT1abih4LGUpKX12YXIgTyxMLF89KEw9ZSwhKGdyKE89byl8fGdyKEwpfHxtcihPLngsTC54KSYmbXIoTy55LEwueSkpKSxNPWduKChmdW5jdGlvbihpKXt2YXIgYSxsO2lmKFwicG9zaXRpb25cIj09PWgpe3ZhciBzPWVbaV0ubWF4LWVbaV0ubWluO29baV0ubWF4PW9baV0ubWluK3N9aWYoIUMucHJvamVjdGlvbi5pc1RhcmdldExvY2tlZClyZXR1cm4gdm9pZCAwPT09Yz9fP24uYW5pbWF0ZUF4aXMoaSxlW2ldLG9baV0sci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGYpLHtpc1JlbGF0aXZlOnd9KSk6KG51bGw9PT0obD0oYT1uLnN0b3BBeGlzQW5pbWF0aW9uKVtpXSl8fHZvaWQgMD09PWx8fGwuY2FsbChhKSxDLnNldFByb2plY3Rpb25UYXJnZXRBeGlzKGksZVtpXS5taW4sZVtpXS5tYXgsdykpOnZvaWQgQy5zZXRWaXNpYmlsaXR5KGM9PT10LlZpc2liaWxpdHlBY3Rpb24uU2hvdyl9KSk7cmV0dXJuIEMuc3luY1JlbmRlcigpLFByb21pc2UuYWxsKE0pLnRoZW4oKGZ1bmN0aW9uKCl7bi5pc0FuaW1hdGluZ1RyZWU9ITEsdSYmdSgpLEMubm90aWZ5TGF5b3V0QW5pbWF0aW9uQ29tcGxldGUoKX0pKX19LG59cmV0dXJuIHIuX19leHRlbmRzKG4sZSksbi5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcy52aXN1YWxFbGVtZW50O3QuYW5pbWF0ZU1vdGlvblZhbHVlPVZ0LHQuZW5hYmxlTGF5b3V0UHJvamVjdGlvbigpLHRoaXMudW5zdWJMYXlvdXRSZWFkeT10Lm9uTGF5b3V0VXBkYXRlKHRoaXMuYW5pbWF0ZSksdC5sYXlvdXRTYWZlVG9SZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gZS5zYWZlVG9SZW1vdmUoKX0sVyhDcil9LG4ucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLnVuc3ViTGF5b3V0UmVhZHkoKSxnbigoZnVuY3Rpb24odCl7dmFyIG4scjtyZXR1cm4gbnVsbD09PShyPShuPWUuc3RvcEF4aXNBbmltYXRpb24pW3RdKXx8dm9pZCAwPT09cj92b2lkIDA6ci5jYWxsKG4pfSkpfSxuLnByb3RvdHlwZS5hbmltYXRlQXhpcz1mdW5jdGlvbihlLHQsbixyKXt2YXIgbyxpLGE9dGhpcyxjPXZvaWQgMD09PXI/e306cixzPWMudHJhbnNpdGlvbix1PWMuaXNSZWxhdGl2ZTtpZighdGhpcy5pc0FuaW1hdGluZ1tlXXx8IW1yKHQsdGhpcy5jdXJyZW50QW5pbWF0aW9uVGFyZ2V0W2VdKSl7bnVsbD09PShpPShvPXRoaXMuc3RvcEF4aXNBbmltYXRpb24pW2VdKXx8dm9pZCAwPT09aXx8aS5jYWxsKG8pLHRoaXMuaXNBbmltYXRpbmdbZV09ITA7dmFyIGQ9dGhpcy5wcm9wcy52aXN1YWxFbGVtZW50LGY9dGhpcy5mcmFtZVRhcmdldFtlXSxwPWQuZ2V0UHJvamVjdGlvbkFuaW1hdGlvblByb2dyZXNzKClbZV07cC5jbGVhckxpc3RlbmVycygpLHAuc2V0KDApLHAuc2V0KDApO3ZhciBDPWZ1bmN0aW9uKCl7dmFyIHI9cC5nZXQoKS8xZTM7IWZ1bmN0aW9uKGUsdCxuLHIpe2UubWluPWwubWl4KHQubWluLG4ubWluLHIpLGUubWF4PWwubWl4KHQubWF4LG4ubWF4LHIpfShmLG4sdCxyKSxkLnNldFByb2plY3Rpb25UYXJnZXRBeGlzKGUsZi5taW4sZi5tYXgsdSl9O0MoKTt2YXIgaD1wLm9uQ2hhbmdlKEMpO3RoaXMuc3RvcEF4aXNBbmltYXRpb25bZV09ZnVuY3Rpb24oKXthLmlzQW5pbWF0aW5nW2VdPSExLHAuc3RvcCgpLGgoKX0sdGhpcy5jdXJyZW50QW5pbWF0aW9uVGFyZ2V0W2VdPXQ7dmFyIHY9c3x8ZC5nZXREZWZhdWx0VHJhbnNpdGlvbigpfHx3cjtyZXR1cm4gVnQoXCJ4XCI9PT1lP1wibGF5b3V0WFwiOlwibGF5b3V0WVwiLHAsMWUzLHYmJmt0KHYsXCJsYXlvdXRcIikpLnRoZW4odGhpcy5zdG9wQXhpc0FuaW1hdGlvbltlXSl9fSxuLnByb3RvdHlwZS5zYWZlVG9SZW1vdmU9ZnVuY3Rpb24oKXt2YXIgZSx0O251bGw9PT0odD0oZT10aGlzLnByb3BzKS5zYWZlVG9SZW1vdmUpfHx2b2lkIDA9PT10fHx0LmNhbGwoZSl9LG4ucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiBudWxsfSxufSh1LkNvbXBvbmVudCksdnI9e21pbjowLG1heDowfTtmdW5jdGlvbiBncihlKXtyZXR1cm4gbXIoZS54LHZyKSYmbXIoZS55LHZyKX1mdW5jdGlvbiBtcihlLHQpe3JldHVybiBlLm1pbj09PXQubWluJiZlLm1heD09PXQubWF4fXZhciB3cj17ZHVyYXRpb246LjQ1LGVhc2U6Wy40LDAsLjEsMV19LHlyPXtsYXlvdXRSZWFkeTpmdW5jdGlvbihlKXtyZXR1cm4gZS5ub3RpZnlMYXlvdXRSZWFkeSgpfX07ZnVuY3Rpb24gYnIoKXt2YXIgZT1uZXcgU2V0O3JldHVybnthZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIGUuYWRkKHQpfSxmbHVzaDpmdW5jdGlvbih0KXt2YXIgbj12b2lkIDA9PT10P3lyOnQsbz1uLmxheW91dFJlYWR5LGk9bi5wYXJlbnQ7UW4oKGZ1bmN0aW9uKHQsbil7dmFyIGE9QXJyYXkuZnJvbShlKS5zb3J0KFBuKSxsPWk/a24oaSk6W107bigoZnVuY3Rpb24oKXtyLl9fc3ByZWFkQXJyYXkoci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKGwpKSxyLl9fcmVhZChhKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVzZXRUcmFuc2Zvcm0oKX0pKX0pKSx0KChmdW5jdGlvbigpe2EuZm9yRWFjaChWbil9KSksbigoZnVuY3Rpb24oKXtsLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc3RvcmVUcmFuc2Zvcm0oKX0pKSxhLmZvckVhY2gobyl9KSksdCgoZnVuY3Rpb24oKXthLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuaXNQcmVzZW50JiYoZS5wcmVzZW5jZT1pci5QcmVzZW50KX0pKX0pKSxuKChmdW5jdGlvbigpe2MuZmx1c2hTeW5jLnByZVJlbmRlcigpLGMuZmx1c2hTeW5jLnJlbmRlcigpfSkpLHQoKGZ1bmN0aW9uKCl7Zi5kZWZhdWx0LnBvc3RSZW5kZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIGEuZm9yRWFjaCh4cil9KSksZS5jbGVhcigpfSkpfSkpLEpuKCl9fX1mdW5jdGlvbiB4cihlKXtlLnByZXZWaWV3cG9ydEJveD1lLnByb2plY3Rpb24udGFyZ2V0fXZhciBPcj1vLmNyZWF0ZUNvbnRleHQoYnIoKSksTHI9by5jcmVhdGVDb250ZXh0KGJyKCkpO2Z1bmN0aW9uIF9yKGUpe3JldHVybiEhZS5mb3JjZVVwZGF0ZX12YXIgTXI9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBudWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIHIuX19leHRlbmRzKHQsZSksdC5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5zeW5jTGF5b3V0LG49ZS5mcmFtZXJTeW5jTGF5b3V0LHI9ZS52aXN1YWxFbGVtZW50O19yKHQpJiZ0LnJlZ2lzdGVyKHIpLF9yKG4pJiZuLnJlZ2lzdGVyKHIpLHIub25Vbm1vdW50KChmdW5jdGlvbigpe19yKHQpJiZ0LnJlbW92ZShyKSxfcihuKSYmbi5yZW1vdmUocil9KSl9LHQucHJvdG90eXBlLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuc3luY0xheW91dCxuPWUudmlzdWFsRWxlbWVudDtyZXR1cm4gX3IodCk/dC5zeW5jVXBkYXRlKCk6KFJuKG4pLHQuYWRkKG4pKSxudWxsfSx0LnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLnN5bmNMYXlvdXQ7X3IoZSl8fGUuZmx1c2goKX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHR9KGQuZGVmYXVsdC5Db21wb25lbnQpLGpyPXttZWFzdXJlTGF5b3V0OmZ1bmN0aW9uKGUpe3ZhciB0PW8udXNlQ29udGV4dChPciksbj1vLnVzZUNvbnRleHQoTHIpO3JldHVybiBkLmRlZmF1bHQuY3JlYXRlRWxlbWVudChNcixyLl9fYXNzaWduKHt9LGUse3N5bmNMYXlvdXQ6dCxmcmFtZXJTeW5jTGF5b3V0Om59KSl9LGxheW91dEFuaW1hdGlvbjpmdW5jdGlvbihlKXt2YXIgdD1yLl9fcmVhZChMKCksMilbMV07cmV0dXJuIHUuY3JlYXRlRWxlbWVudChocixyLl9fYXNzaWduKHt9LGUse3NhZmVUb1JlbW92ZTp0fSkpfX07ZnVuY3Rpb24gRXIoKXtyZXR1cm57aXNIeWRyYXRlZDohMSxsYXlvdXQ6e3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19LGxheW91dENvcnJlY3RlZDp7eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX0sdHJlZVNjYWxlOnt4OjEseToxfSxkZWx0YTp2bigpLGRlbHRhRmluYWw6dm4oKSxkZWx0YVRyYW5zZm9ybTpcIlwifX12YXIgU3I9RXIoKTtmdW5jdGlvbiBQcihlLHQsbil7dmFyIHI9ZS54LG89ZS55LGk9XCJ0cmFuc2xhdGUzZChcIityLnRyYW5zbGF0ZS90LngrXCJweCwgXCIrby50cmFuc2xhdGUvdC55K1wicHgsIDApIFwiO2lmKG4pe3ZhciBhPW4ucm90YXRlLGw9bi5yb3RhdGVYLGM9bi5yb3RhdGVZO2EmJihpKz1cInJvdGF0ZShcIithK1wiKSBcIiksbCYmKGkrPVwicm90YXRlWChcIitsK1wiKSBcIiksYyYmKGkrPVwicm90YXRlWShcIitjK1wiKSBcIil9cmV0dXJuIGkrPVwic2NhbGUoXCIrci5zY2FsZStcIiwgXCIrby5zY2FsZStcIilcIixufHxpIT09a3I/aTpcIlwifWZ1bmN0aW9uIEhyKGUpe3ZhciB0PWUuZGVsdGFGaW5hbDtyZXR1cm4gMTAwKnQueC5vcmlnaW4rXCIlIFwiKzEwMCp0Lnkub3JpZ2luK1wiJSAwXCJ9dmFyIGtyPVByKFNyLmRlbHRhLFNyLnRyZWVTY2FsZSx7eDoxLHk6MX0pLFZyPVtcIkxheW91dE1lYXN1cmVcIixcIkJlZm9yZUxheW91dE1lYXN1cmVcIixcIkxheW91dFVwZGF0ZVwiLFwiVmlld3BvcnRCb3hVcGRhdGVcIixcIlVwZGF0ZVwiLFwiUmVuZGVyXCIsXCJBbmltYXRpb25Db21wbGV0ZVwiLFwiTGF5b3V0QW5pbWF0aW9uQ29tcGxldGVcIixcIkFuaW1hdGlvblN0YXJ0XCIsXCJTZXRBeGlzVGFyZ2V0XCIsXCJVbm1vdW50XCJdLFJyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuY2hpbGRyZW49W10sdGhpcy5pc0RpcnR5PSExfXJldHVybiBlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7UnQodGhpcy5jaGlsZHJlbixlKSx0aGlzLmlzRGlydHk9ITB9LGUucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihlKXtJdCh0aGlzLmNoaWxkcmVuLGUpLHRoaXMuaXNEaXJ0eT0hMH0sZS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlKXt0aGlzLmlzRGlydHkmJnRoaXMuY2hpbGRyZW4uc29ydChQbiksdGhpcy5pc0RpcnR5PSExLHRoaXMuY2hpbGRyZW4uZm9yRWFjaChlKX0sZX0oKSxJcj1mdW5jdGlvbihlKXt2YXIgdD1lLnRyZWVUeXBlLG49dm9pZCAwPT09dD9cIlwiOnQsbz1lLmJ1aWxkLGk9ZS5nZXRCYXNlVGFyZ2V0LGE9ZS5tYWtlVGFyZ2V0QW5pbWF0YWJsZSxzPWUubWVhc3VyZVZpZXdwb3J0Qm94LHU9ZS5yZW5kZXIsZD1lLnJlYWRWYWx1ZUZyb21JbnN0YW5jZSxwPWUucmVzZXRUcmFuc2Zvcm0sQz1lLnJlc3RvcmVUcmFuc2Zvcm0saD1lLnJlbW92ZVZhbHVlRnJvbVJlbmRlclN0YXRlLHY9ZS5zb3J0Tm9kZVBvc2l0aW9uLGc9ZS5zY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG09ZS5wYXJlbnQsdz1lLnByb3BzLHk9ZS5wcmVzZW5jZUlkLGI9ZS5ibG9ja0luaXRpYWxBbmltYXRpb24seD1lLnZpc3VhbFN0YXRlO3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgTyxMLF8sTSxqLEUsUz14LmxhdGVzdFZhbHVlcyxQPXgucmVuZGVyU3RhdGUsSD1mdW5jdGlvbigpe3ZhciBlPVZyLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFp0fSkpLHQ9e30sbj17Y2xlYXJBbGxMaXN0ZW5lcnM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5jbGVhcigpfSkpfSx1cGRhdGVQcm9wTGlzdGVuZXJzOmZ1bmN0aW9uKGUpe3JldHVybiBWci5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgbztudWxsPT09KG89dFtyXSl8fHZvaWQgMD09PW98fG8uY2FsbCh0KTt2YXIgaT1cIm9uXCIrcixhPWVbaV07YSYmKHRbcl09bltpXShhKSl9KSl9fTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe25bXCJvblwiK1ZyW3RdXT1mdW5jdGlvbih0KXtyZXR1cm4gZS5hZGQodCl9LG5bXCJub3RpZnlcIitWclt0XV09ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIGUubm90aWZ5LmFwcGx5KGUsci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKHQpKSl9fSkpLG59KCksaz17aXNFbmFibGVkOiExLGlzSHlkcmF0ZWQ6ITEsaXNUYXJnZXRMb2NrZWQ6ITEsdGFyZ2V0Ont4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fSx0YXJnZXRGaW5hbDp7eDp7bWluOjAsbWF4OjF9LHk6e21pbjowLG1heDoxfX19LFY9ayxJPVMsWj1FcigpLEQ9ITEsQj1uZXcgTWFwLCQ9bmV3IE1hcCxGPXt9LE49ci5fX2Fzc2lnbih7fSxTKTtmdW5jdGlvbiB6KCl7TyYmKEouaXNQcm9qZWN0aW9uUmVhZHkoKSYmKEduKFYudGFyZ2V0RmluYWwsVi50YXJnZXQsSSksYm4oWi5kZWx0YUZpbmFsLFoubGF5b3V0Q29ycmVjdGVkLFYudGFyZ2V0RmluYWwsUykpLFcoKSx1KE8sUCkpfWZ1bmN0aW9uIFcoKXt2YXIgZT1TO2lmKE0mJk0uaXNBY3RpdmUoKSl7dmFyIG49TS5nZXRDcm9zc2ZhZGVTdGF0ZShKKTtuJiYoZT1uKX1vKEosUCxlLFYsWix0LHcpfWZ1bmN0aW9uIEcoKXtILm5vdGlmeVVwZGF0ZShTKX1mdW5jdGlvbiBVKCl7Si5sYXlvdXRUcmVlLmZvckVhY2goVHIpfXZhciBxPWcodyk7Zm9yKHZhciBZIGluIHEpe3ZhciBLPXFbWV07dm9pZCAwIT09U1tZXSYmZWUoSykmJksuc2V0KFNbWV0sITEpfXZhciBYPVQodyksUT1BKHcpLEo9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt0cmVlVHlwZTpuLGN1cnJlbnQ6bnVsbCxkZXB0aDptP20uZGVwdGgrMTowLHBhcmVudDptLGNoaWxkcmVuOm5ldyBTZXQscGF0aDptP3IuX19zcHJlYWRBcnJheShyLl9fc3ByZWFkQXJyYXkoW10sci5fX3JlYWQobS5wYXRoKSksW21dKTpbXSxsYXlvdXRUcmVlOm0/bS5sYXlvdXRUcmVlOm5ldyBScixwcmVzZW5jZUlkOnkscHJvamVjdGlvbjprLHZhcmlhbnRDaGlsZHJlbjpRP25ldyBTZXQ6dm9pZCAwLGlzVmlzaWJsZTp2b2lkIDAsbWFudWFsbHlBbmltYXRlT25Nb3VudDpCb29sZWFuKG51bGw9PW0/dm9pZCAwOm0uaXNNb3VudGVkKCkpLGJsb2NrSW5pdGlhbEFuaW1hdGlvbjpiLGlzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKE8pfSxtb3VudDpmdW5jdGlvbihlKXtPPUouY3VycmVudD1lLEoucG9pbnRUbyhKKSxRJiZtJiYhWCYmKEU9bnVsbD09bT92b2lkIDA6bS5hZGRWYXJpYW50Q2hpbGQoSikpLG51bGw9PW18fG0uY2hpbGRyZW4uYWRkKEopfSx1bm1vdW50OmZ1bmN0aW9uKCl7Yy5jYW5jZWxTeW5jLnVwZGF0ZShHKSxjLmNhbmNlbFN5bmMucmVuZGVyKHopLGMuY2FuY2VsU3luYy5wcmVSZW5kZXIoSi51cGRhdGVMYXlvdXRQcm9qZWN0aW9uKSwkLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9KSksSi5zdG9wTGF5b3V0QW5pbWF0aW9uKCksSi5sYXlvdXRUcmVlLnJlbW92ZShKKSxudWxsPT1FfHxFKCksbnVsbD09bXx8bS5jaGlsZHJlbi5kZWxldGUoSiksbnVsbD09X3x8XygpLEguY2xlYXJBbGxMaXN0ZW5lcnMoKX0sYWRkVmFyaWFudENoaWxkOmZ1bmN0aW9uKGUpe3ZhciB0LG49Si5nZXRDbG9zZXN0VmFyaWFudE5vZGUoKTtpZihuKXJldHVybiBudWxsPT09KHQ9bi52YXJpYW50Q2hpbGRyZW4pfHx2b2lkIDA9PT10fHx0LmFkZChlKSxmdW5jdGlvbigpe3JldHVybiBuLnZhcmlhbnRDaGlsZHJlbi5kZWxldGUoZSl9fSxzb3J0Tm9kZVBvc2l0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiB2JiZuPT09ZS50cmVlVHlwZT92KEouZ2V0SW5zdGFuY2UoKSxlLmdldEluc3RhbmNlKCkpOjB9LGdldENsb3Nlc3RWYXJpYW50Tm9kZTpmdW5jdGlvbigpe3JldHVybiBRP0o6bnVsbD09bT92b2lkIDA6bS5nZXRDbG9zZXN0VmFyaWFudE5vZGUoKX0sc2NoZWR1bGVVcGRhdGVMYXlvdXRQcm9qZWN0aW9uOm0/bS5zY2hlZHVsZVVwZGF0ZUxheW91dFByb2plY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gZi5kZWZhdWx0LnByZVJlbmRlcihKLnVwZGF0ZVRyZWVMYXlvdXRQcm9qZWN0aW9uLCExLCEwKX0sZ2V0TGF5b3V0SWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5sYXlvdXRJZH0sZ2V0SW5zdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gT30sZ2V0U3RhdGljVmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFNbZV19LHNldFN0YXRpY1ZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFNbZV09dH0sZ2V0TGF0ZXN0VmFsdWVzOmZ1bmN0aW9uKCl7cmV0dXJuIFN9LHNldFZpc2liaWxpdHk6ZnVuY3Rpb24oZSl7Si5pc1Zpc2libGUhPT1lJiYoSi5pc1Zpc2libGU9ZSxKLnNjaGVkdWxlUmVuZGVyKCkpfSxtYWtlVGFyZ2V0QW5pbWF0YWJsZTpmdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0hMCksYShKLGUsdyx0KX0sYWRkVmFsdWU6ZnVuY3Rpb24oZSx0KXtKLmhhc1ZhbHVlKGUpJiZKLnJlbW92ZVZhbHVlKGUpLEIuc2V0KGUsdCksU1tlXT10LmdldCgpLGZ1bmN0aW9uKGUsdCl7dmFyIG49dC5vbkNoYW5nZSgoZnVuY3Rpb24odCl7U1tlXT10LHcub25VcGRhdGUmJmYuZGVmYXVsdC51cGRhdGUoRywhMSwhMCl9KSkscj10Lm9uUmVuZGVyUmVxdWVzdChKLnNjaGVkdWxlUmVuZGVyKTskLnNldChlLChmdW5jdGlvbigpe24oKSxyKCl9KSl9KGUsdCl9LHJlbW92ZVZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O0IuZGVsZXRlKGUpLG51bGw9PT0odD0kLmdldChlKSl8fHZvaWQgMD09PXR8fHQoKSwkLmRlbGV0ZShlKSxkZWxldGUgU1tlXSxoKGUsUCl9LGhhc1ZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBCLmhhcyhlKX0sZ2V0VmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1CLmdldChlKTtyZXR1cm4gdm9pZCAwPT09biYmdm9pZCAwIT09dCYmKG49QXQodCksSi5hZGRWYWx1ZShlLG4pKSxufSxmb3JFYWNoVmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEIuZm9yRWFjaChlKX0scmVhZFZhbHVlOmZ1bmN0aW9uKGUpe3ZhciBuO3JldHVybiBudWxsIT09KG49U1tlXSkmJnZvaWQgMCE9PW4/bjpkKE8sZSx0KX0sc2V0QmFzZVRhcmdldDpmdW5jdGlvbihlLHQpe05bZV09dH0sZ2V0QmFzZVRhcmdldDpmdW5jdGlvbihlKXtpZihpKXt2YXIgdD1pKHcsZSk7aWYodm9pZCAwIT09dCYmIWVlKHQpKXJldHVybiB0fXJldHVybiBOW2VdfX0sSCkse2J1aWxkOmZ1bmN0aW9uKCl7cmV0dXJuIFcoKSxQfSxzY2hlZHVsZVJlbmRlcjpmdW5jdGlvbigpe2YuZGVmYXVsdC5yZW5kZXIoeiwhMSwhMCl9LHN5bmNSZW5kZXI6eixzZXRQcm9wczpmdW5jdGlvbihlKXt3PWUsSC51cGRhdGVQcm9wTGlzdGVuZXJzKGUpLEY9ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2Zvcih2YXIgbyBpbiB0KXt2YXIgaT10W29dLGE9bltvXTtpZihlZShpKSllLmFkZFZhbHVlKG8saSk7ZWxzZSBpZihlZShhKSllLmFkZFZhbHVlKG8sQXQoaSkpO2Vsc2UgaWYoYSE9PWkpaWYoZS5oYXNWYWx1ZShvKSl7dmFyIGw9ZS5nZXRWYWx1ZShvKTshbC5oYXNBbmltYXRlZCYmbC5zZXQoaSl9ZWxzZSBlLmFkZFZhbHVlKG8sQXQobnVsbCE9PShyPWUuZ2V0U3RhdGljVmFsdWUobykpJiZ2b2lkIDAhPT1yP3I6aSkpfWZvcih2YXIgbyBpbiBuKXZvaWQgMD09PXRbb10mJmUucmVtb3ZlVmFsdWUobyk7cmV0dXJuIHR9KEosZyh3KSxGKX0sZ2V0UHJvcHM6ZnVuY3Rpb24oKXtyZXR1cm4gd30sZ2V0VmFyaWFudDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gbnVsbD09PSh0PXcudmFyaWFudHMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0W2VdfSxnZXREZWZhdWx0VHJhbnNpdGlvbjpmdW5jdGlvbigpe3JldHVybiB3LnRyYW5zaXRpb259LGdldFZhcmlhbnRDb250ZXh0OmZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUmJihlPSExKSxlKXJldHVybiBudWxsPT1tP3ZvaWQgMDptLmdldFZhcmlhbnRDb250ZXh0KCk7aWYoIVgpe3ZhciB0PShudWxsPT1tP3ZvaWQgMDptLmdldFZhcmlhbnRDb250ZXh0KCkpfHx7fTtyZXR1cm4gdm9pZCAwIT09dy5pbml0aWFsJiYodC5pbml0aWFsPXcuaW5pdGlhbCksdH1mb3IodmFyIG49e30scj0wO3I8QnI7cisrKXt2YXIgbz1EcltyXSxpPXdbb107KFIoaSl8fCExPT09aSkmJihuW29dPWkpfXJldHVybiBufSxlbmFibGVMYXlvdXRQcm9qZWN0aW9uOmZ1bmN0aW9uKCl7ay5pc0VuYWJsZWQ9ITAsSi5sYXlvdXRUcmVlLmFkZChKKX0sbG9ja1Byb2plY3Rpb25UYXJnZXQ6ZnVuY3Rpb24oKXtrLmlzVGFyZ2V0TG9ja2VkPSEwfSx1bmxvY2tQcm9qZWN0aW9uVGFyZ2V0OmZ1bmN0aW9uKCl7Si5zdG9wTGF5b3V0QW5pbWF0aW9uKCksay5pc1RhcmdldExvY2tlZD0hMX0sZ2V0TGF5b3V0U3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gWn0sc2V0Q3Jvc3NmYWRlcjpmdW5jdGlvbihlKXtNPWV9LGlzUHJvamVjdGlvblJlYWR5OmZ1bmN0aW9uKCl7cmV0dXJuIGsuaXNFbmFibGVkJiZrLmlzSHlkcmF0ZWQmJlouaXNIeWRyYXRlZH0sc3RhcnRMYXlvdXRBbmltYXRpb246ZnVuY3Rpb24oZSx0LG4pe3ZvaWQgMD09PW4mJihuPSExKTt2YXIgcj1KLmdldFByb2plY3Rpb25BbmltYXRpb25Qcm9ncmVzcygpW2VdLG89bj9rLnJlbGF0aXZlVGFyZ2V0W2VdOmsudGFyZ2V0W2VdLGk9by5taW4sYT1vLm1heC1pO3JldHVybiByLmNsZWFyTGlzdGVuZXJzKCksci5zZXQoaSksci5zZXQoaSksci5vbkNoYW5nZSgoZnVuY3Rpb24odCl7Si5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyhlLHQsdCthLG4pfSkpLEouYW5pbWF0ZU1vdGlvblZhbHVlKGUsciwwLHQpfSxzdG9wTGF5b3V0QW5pbWF0aW9uOmZ1bmN0aW9uKCl7Z24oKGZ1bmN0aW9uKGUpe3JldHVybiBKLmdldFByb2plY3Rpb25BbmltYXRpb25Qcm9ncmVzcygpW2VdLnN0b3AoKX0pKX0sbWVhc3VyZVZpZXdwb3J0Qm94OmZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSEwKTt2YXIgbj1zKE8sdCk7cmV0dXJuIGV8fFluKG4sUyksbn0sZ2V0UHJvamVjdGlvbkFuaW1hdGlvblByb2dyZXNzOmZ1bmN0aW9uKCl7cmV0dXJuIGp8fChqPXt4OkF0KDApLHk6QXQoMCl9KSxqfSxzZXRQcm9qZWN0aW9uVGFyZ2V0QXhpczpmdW5jdGlvbihlLHQsbixyKXt2YXIgbzt2b2lkIDA9PT1yJiYocj0hMSkscj8oay5yZWxhdGl2ZVRhcmdldHx8KGsucmVsYXRpdmVUYXJnZXQ9e3g6e21pbjowLG1heDoxfSx5OnttaW46MCxtYXg6MX19KSxvPWsucmVsYXRpdmVUYXJnZXRbZV0pOihrLnJlbGF0aXZlVGFyZ2V0PXZvaWQgMCxvPWsudGFyZ2V0W2VdKSxrLmlzSHlkcmF0ZWQ9ITAsby5taW49dCxvLm1heD1uLEQ9ITAsSC5ub3RpZnlTZXRBeGlzVGFyZ2V0KCl9LHJlYmFzZVByb2plY3Rpb25UYXJnZXQ6ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD1aLmxheW91dCk7dmFyIG49Si5nZXRQcm9qZWN0aW9uQW5pbWF0aW9uUHJvZ3Jlc3MoKSxyPW4ueCxvPW4ueSxpPSEoay5yZWxhdGl2ZVRhcmdldHx8ay5pc1RhcmdldExvY2tlZHx8ci5pc0FuaW1hdGluZygpfHxvLmlzQW5pbWF0aW5nKCkpOyhlfHxpKSYmZ24oKGZ1bmN0aW9uKGUpe3ZhciBuPXRbZV0scj1uLm1pbixvPW4ubWF4O0ouc2V0UHJvamVjdGlvblRhcmdldEF4aXMoZSxyLG8pfSkpfSxub3RpZnlMYXlvdXRSZWFkeTpmdW5jdGlvbihlKXshZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRQcm9qZWN0aW9uUGFyZW50KCk7aWYodCl7dmFyIG49Wm4odC5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dCxlLmdldExheW91dFN0YXRlKCkubGF5b3V0KTtnbigoZnVuY3Rpb24odCl7ZS5zZXRQcm9qZWN0aW9uVGFyZ2V0QXhpcyh0LG5bdF0ubWluLG5bdF0ubWF4LCEwKX0pKX1lbHNlIGUucmViYXNlUHJvamVjdGlvblRhcmdldCgpfShKKSxKLm5vdGlmeUxheW91dFVwZGF0ZShaLmxheW91dCxKLnByZXZWaWV3cG9ydEJveHx8Wi5sYXlvdXQsZSl9LHJlc2V0VHJhbnNmb3JtOmZ1bmN0aW9uKCl7cmV0dXJuIHAoSixPLHcpfSxyZXN0b3JlVHJhbnNmb3JtOmZ1bmN0aW9uKCl7cmV0dXJuIEMoTyxQKX0sdXBkYXRlTGF5b3V0UHJvamVjdGlvbjpmdW5jdGlvbigpe2lmKEouaXNQcm9qZWN0aW9uUmVhZHkoKSl7dmFyIGU9Wi5kZWx0YSx0PVoudHJlZVNjYWxlLG49dC54LHI9dC55LG89Wi5kZWx0YVRyYW5zZm9ybTsoZnVuY3Rpb24oZSx0LG4scil7dmFyIG8saSxhPWUuZGVsdGEsbD1lLmxheW91dCxjPWUubGF5b3V0Q29ycmVjdGVkLHM9ZS50cmVlU2NhbGUsdT10LnRhcmdldDtpPWwsQW4oKG89YykueCxpLngpLEFuKG8ueSxpLnkpLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uLmxlbmd0aDtpZihyKXt2YXIgbyxpO3QueD10Lnk9MTtmb3IodmFyIGE9MDthPHI7YSsrKWk9KG89blthXSkuZ2V0TGF5b3V0U3RhdGUoKS5kZWx0YSx0LngqPWkueC5zY2FsZSx0LnkqPWkueS5zY2FsZSxGbihlLGkpLFRuKG8pJiZHbihlLGUsby5nZXRMYXRlc3RWYWx1ZXMoKSl9fShjLHMsbiksYm4oYSxjLHUscil9KShaLFYsSi5wYXRoLFMpLEQmJkoubm90aWZ5Vmlld3BvcnRCb3hVcGRhdGUoVi50YXJnZXQsZSksRD0hMTt2YXIgaT1QcihlLHQpO2k9PT1vJiZuPT09dC54JiZyPT09dC55fHxKLnNjaGVkdWxlUmVuZGVyKCksWi5kZWx0YVRyYW5zZm9ybT1pfX0sdXBkYXRlVHJlZUxheW91dFByb2plY3Rpb246ZnVuY3Rpb24oKXtKLmxheW91dFRyZWUuZm9yRWFjaChaciksZi5kZWZhdWx0LnByZVJlbmRlcihVLCExLCEwKX0sZ2V0UHJvamVjdGlvblBhcmVudDpmdW5jdGlvbigpe2lmKHZvaWQgMD09PUwpe2Zvcih2YXIgZT0hMSx0PUoucGF0aC5sZW5ndGgtMTt0Pj0wO3QtLSl7dmFyIG49Si5wYXRoW3RdO2lmKG4ucHJvamVjdGlvbi5pc0VuYWJsZWQpe2U9bjticmVha319TD1lfXJldHVybiBMfSxyZXNvbHZlUmVsYXRpdmVUYXJnZXRCb3g6ZnVuY3Rpb24oKXt2YXIgZT1KLmdldFByb2plY3Rpb25QYXJlbnQoKTtpZihrLnJlbGF0aXZlVGFyZ2V0JiZlJiYoZnVuY3Rpb24oZSx0KXtPbihlLnRhcmdldC54LGUucmVsYXRpdmVUYXJnZXQueCx0LnRhcmdldC54KSxPbihlLnRhcmdldC55LGUucmVsYXRpdmVUYXJnZXQueSx0LnRhcmdldC55KX0oayxlLnByb2plY3Rpb24pLFRuKGUpKSl7dmFyIHQ9ay50YXJnZXQ7R24odCx0LGUuZ2V0TGF0ZXN0VmFsdWVzKCkpfX0sc2hvdWxkUmVzZXRUcmFuc2Zvcm06ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbih3Ll9sYXlvdXRSZXNldFRyYW5zZm9ybSl9LHBvaW50VG86ZnVuY3Rpb24oZSl7Vj1lLnByb2plY3Rpb24sST1lLmdldExhdGVzdFZhbHVlcygpLG51bGw9PV98fF8oKSxfPWwucGlwZShlLm9uU2V0QXhpc1RhcmdldChKLnNjaGVkdWxlVXBkYXRlTGF5b3V0UHJvamVjdGlvbiksZS5vbkxheW91dEFuaW1hdGlvbkNvbXBsZXRlKChmdW5jdGlvbigpe3ZhciBlO0ouaXNQcmVzZW50P0oucHJlc2VuY2U9aXIuUHJlc2VudDpudWxsPT09KGU9Si5sYXlvdXRTYWZlVG9SZW1vdmUpfHx2b2lkIDA9PT1lfHxlLmNhbGwoSil9KSkpfSxpc1ByZXNlbnQ6ITAscHJlc2VuY2U6aXIuRW50ZXJpbmd9KTtyZXR1cm4gSn19O2Z1bmN0aW9uIFpyKGUpe2UucmVzb2x2ZVJlbGF0aXZlVGFyZ2V0Qm94KCl9ZnVuY3Rpb24gVHIoZSl7ZS51cGRhdGVMYXlvdXRQcm9qZWN0aW9uKCl9dmFyIEFyLERyPXIuX19zcHJlYWRBcnJheShbXCJpbml0aWFsXCJdLHIuX19yZWFkKGVuKSksQnI9RHIubGVuZ3RoLCRyPW5ldyBTZXQoW1wid2lkdGhcIixcImhlaWdodFwiLFwidG9wXCIsXCJsZWZ0XCIsXCJyaWdodFwiLFwiYm90dG9tXCIsXCJ4XCIsXCJ5XCJdKSxGcj1mdW5jdGlvbihlKXtyZXR1cm4gJHIuaGFzKGUpfSxOcj1mdW5jdGlvbihlLHQpe2Uuc2V0KHQsITEpLGUuc2V0KHQpfSx6cj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PWEubnVtYmVyfHxlPT09YS5weH07IWZ1bmN0aW9uKGUpe2Uud2lkdGg9XCJ3aWR0aFwiLGUuaGVpZ2h0PVwiaGVpZ2h0XCIsZS5sZWZ0PVwibGVmdFwiLGUucmlnaHQ9XCJyaWdodFwiLGUudG9wPVwidG9wXCIsZS5ib3R0b209XCJib3R0b21cIn0oQXJ8fChBcj17fSkpO3ZhciBXcj1mdW5jdGlvbihlLHQpe3JldHVybiBwYXJzZUZsb2F0KGUuc3BsaXQoXCIsIFwiKVt0XSl9LEdyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dmFyIG89ci50cmFuc2Zvcm07aWYoXCJub25lXCI9PT1vfHwhbylyZXR1cm4gMDt2YXIgaT1vLm1hdGNoKC9ebWF0cml4M2RcXCgoLispXFwpJC8pO2lmKGkpcmV0dXJuIFdyKGlbMV0sdCk7dmFyIGE9by5tYXRjaCgvXm1hdHJpeFxcKCguKylcXCkkLyk7cmV0dXJuIGE/V3IoYVsxXSxlKTowfX0sVXI9bmV3IFNldChbXCJ4XCIsXCJ5XCIsXCJ6XCJdKSxxcj1VLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIVVyLmhhcyhlKX0pKSxZcj17d2lkdGg6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS54O3JldHVybiB0Lm1heC10Lm1pbn0saGVpZ2h0OmZ1bmN0aW9uKGUpe3ZhciB0PWUueTtyZXR1cm4gdC5tYXgtdC5taW59LHRvcDpmdW5jdGlvbihlLHQpe3ZhciBuPXQudG9wO3JldHVybiBwYXJzZUZsb2F0KG4pfSxsZWZ0OmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5sZWZ0O3JldHVybiBwYXJzZUZsb2F0KG4pfSxib3R0b206ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnkscj10LnRvcDtyZXR1cm4gcGFyc2VGbG9hdChyKSsobi5tYXgtbi5taW4pfSxyaWdodDpmdW5jdGlvbihlLHQpe3ZhciBuPWUueCxyPXQubGVmdDtyZXR1cm4gcGFyc2VGbG9hdChyKSsobi5tYXgtbi5taW4pfSx4OkdyKDQsMTMpLHk6R3IoNSwxNCl9O2Z1bmN0aW9uIEtyKGUsdCxuLG8pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkuc29tZShGcil9KHQpP2Z1bmN0aW9uKGUsdCxuLG8pe3ZvaWQgMD09PW4mJihuPXt9KSx2b2lkIDA9PT1vJiYobz17fSksdD1yLl9fYXNzaWduKHt9LHQpLG89ci5fX2Fzc2lnbih7fSxvKTt2YXIgbD1PYmplY3Qua2V5cyh0KS5maWx0ZXIoRnIpLGM9W10scz0hMSx1PVtdO2lmKGwuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIGw9ZS5nZXRWYWx1ZShyKTtpZihlLmhhc1ZhbHVlKHIpKXt2YXIgZCxmPW5bcl0scD10W3JdLEM9JHQoZik7aWYoUGUocCkpZm9yKHZhciBoPXAubGVuZ3RoLHY9bnVsbD09PXBbMF0/MTowO3Y8aDt2KyspZD9pLmludmFyaWFudCgkdChwW3ZdKT09PWQsXCJBbGwga2V5ZnJhbWVzIG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZVwiKTooZD0kdChwW3ZdKSxpLmludmFyaWFudChkPT09Q3x8enIoQykmJnpyKGQpLFwiS2V5ZnJhbWVzIG11c3QgYmUgb2YgdGhlIHNhbWUgZGltZW5zaW9uIGFzIHRoZSBjdXJyZW50IHZhbHVlXCIpKTtlbHNlIGQ9JHQocCk7aWYoQyE9PWQpaWYoenIoQykmJnpyKGQpKXt2YXIgZz1sLmdldCgpO1wic3RyaW5nXCI9PXR5cGVvZiBnJiZsLnNldChwYXJzZUZsb2F0KGcpKSxcInN0cmluZ1wiPT10eXBlb2YgcD90W3JdPXBhcnNlRmxvYXQocCk6QXJyYXkuaXNBcnJheShwKSYmZD09PWEucHgmJih0W3JdPXAubWFwKHBhcnNlRmxvYXQpKX1lbHNlKG51bGw9PUM/dm9pZCAwOkMudHJhbnNmb3JtKSYmKG51bGw9PWQ/dm9pZCAwOmQudHJhbnNmb3JtKSYmKDA9PT1mfHwwPT09cCk/MD09PWY/bC5zZXQoZC50cmFuc2Zvcm0oZikpOnRbcl09Qy50cmFuc2Zvcm0ocCk6KHN8fChjPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiBxci5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcj1lLmdldFZhbHVlKG4pO3ZvaWQgMCE9PXImJih0LnB1c2goW24sci5nZXQoKV0pLHIuc2V0KG4uc3RhcnRzV2l0aChcInNjYWxlXCIpPzE6MCkpfSkpLHQubGVuZ3RoJiZlLnN5bmNSZW5kZXIoKSx0fShlKSxzPSEwKSx1LnB1c2gociksb1tyXT12b2lkIDAhPT1vW3JdP29bcl06dFtyXSxOcihsLHApKX19KSksdS5sZW5ndGgpe3ZhciBkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10Lm1lYXN1cmVWaWV3cG9ydEJveCgpLG89dC5nZXRJbnN0YW5jZSgpLGk9Z2V0Q29tcHV0ZWRTdHlsZShvKSxhPWkuZGlzcGxheSxsPXt0b3A6aS50b3AsbGVmdDppLmxlZnQsYm90dG9tOmkuYm90dG9tLHJpZ2h0OmkucmlnaHQsdHJhbnNmb3JtOmkudHJhbnNmb3JtfTtcIm5vbmVcIj09PWEmJnQuc2V0U3RhdGljVmFsdWUoXCJkaXNwbGF5XCIsZS5kaXNwbGF5fHxcImJsb2NrXCIpLHQuc3luY1JlbmRlcigpO3ZhciBjPXQubWVhc3VyZVZpZXdwb3J0Qm94KCk7cmV0dXJuIG4uZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIG89dC5nZXRWYWx1ZShuKTtOcihvLFlyW25dKHIsbCkpLGVbbl09WXJbbl0oYyxpKX0pKSxlfSh0LGUsdSk7cmV0dXJuIGMubGVuZ3RoJiZjLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPXIuX19yZWFkKHQsMiksbz1uWzBdLGk9blsxXTtlLmdldFZhbHVlKG8pLnNldChpKX0pKSxlLnN5bmNSZW5kZXIoKSx7dGFyZ2V0OmQsdHJhbnNpdGlvbkVuZDpvfX1yZXR1cm57dGFyZ2V0OnQsdHJhbnNpdGlvbkVuZDpvfX0oZSx0LG4sbyk6e3RhcmdldDp0LHRyYW5zaXRpb25FbmQ6b319dmFyIFhyPXt0cmVlVHlwZTpcImRvbVwiLHJlYWRWYWx1ZUZyb21JbnN0YW5jZTpmdW5jdGlvbihlLHQpe2lmKEsodCkpe3ZhciBuPWp0KHQpO3JldHVybiBuJiZuLmRlZmF1bHR8fDB9dmFyIHIsbz0ocj1lLHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHIpKTtyZXR1cm4obmUodCk/by5nZXRQcm9wZXJ0eVZhbHVlKHQpOm9bdF0pfHwwfSxzb3J0Tm9kZVBvc2l0aW9uOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIDImZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KT8xOi0xfSxnZXRCYXNlVGFyZ2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIG51bGw9PT0obj1lLnN0eWxlKXx8dm9pZCAwPT09bj92b2lkIDA6blt0XX0sbWVhc3VyZVZpZXdwb3J0Qm94OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFNuKGUsdC50cmFuc2Zvcm1QYWdlUG9pbnQpfSxyZXNldFRyYW5zZm9ybTpmdW5jdGlvbihlLHQsbil7dmFyIHI9bi50cmFuc2Zvcm1UZW1wbGF0ZTt0LnN0eWxlLnRyYW5zZm9ybT1yP3Ioe30sXCJcIik6XCJub25lXCIsZS5zY2hlZHVsZVJlbmRlcigpfSxyZXN0b3JlVHJhbnNmb3JtOmZ1bmN0aW9uKGUsdCl7ZS5zdHlsZS50cmFuc2Zvcm09dC5zdHlsZS50cmFuc2Zvcm19LHJlbW92ZVZhbHVlRnJvbVJlbmRlclN0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC52YXJzLHI9dC5zdHlsZTtkZWxldGUgbltlXSxkZWxldGUgcltlXX0sbWFrZVRhcmdldEFuaW1hdGFibGU6ZnVuY3Rpb24oZSx0LG4sbyl7dmFyIGk9bi50cmFuc2Zvcm1WYWx1ZXM7dm9pZCAwPT09byYmKG89ITApO3ZhciBhPXQudHJhbnNpdGlvbixsPXQudHJhbnNpdGlvbkVuZCxjPXIuX19yZXN0KHQsW1widHJhbnNpdGlvblwiLFwidHJhbnNpdGlvbkVuZFwiXSkscz1xdChjLGF8fHt9LGUpO2lmKGkmJihsJiYobD1pKGwpKSxjJiYoYz1pKGMpKSxzJiYocz1pKHMpKSksbyl7R3QoZSxjLHMpO3ZhciB1PWZ1bmN0aW9uKGUsdCxuLG8pe3ZhciBpPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbyxpPXIuX19yZXN0KHQsW10pLGE9ZS5nZXRJbnN0YW5jZSgpO2lmKCEoYSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSlyZXR1cm57dGFyZ2V0OmksdHJhbnNpdGlvbkVuZDpufTtmb3IodmFyIGwgaW4gbiYmKG49ci5fX2Fzc2lnbih7fSxuKSksZS5mb3JFYWNoVmFsdWUoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0KCk7aWYoY3IodCkpe3ZhciBuPXVyKHQsYSk7biYmZS5zZXQobil9fSkpLGkpe3ZhciBjPWlbbF07aWYoY3IoYykpe3ZhciBzPXVyKGMsYSk7cyYmKGlbbF09cyxuJiYobnVsbCE9PShvPW5bbF0pJiZ2b2lkIDAhPT1vfHwobltsXT1jKSkpfX1yZXR1cm57dGFyZ2V0OmksdHJhbnNpdGlvbkVuZDpufX0oZSx0LG8pO3JldHVybiBLcihlLHQ9aS50YXJnZXQsbixvPWkudHJhbnNpdGlvbkVuZCl9KGUsYyxzLGwpO2w9dS50cmFuc2l0aW9uRW5kLGM9dS50YXJnZXR9cmV0dXJuIHIuX19hc3NpZ24oe3RyYW5zaXRpb246YSx0cmFuc2l0aW9uRW5kOmx9LGMpfSxzY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM6amUsYnVpbGQ6ZnVuY3Rpb24oZSx0LG4scixvLGksYSl7dm9pZCAwIT09ZS5pc1Zpc2libGUmJih0LnN0eWxlLnZpc2liaWxpdHk9ZS5pc1Zpc2libGU/XCJ2aXNpYmxlXCI6XCJoaWRkZW5cIik7dmFyIGw9ci5pc0VuYWJsZWQmJm8uaXNIeWRyYXRlZDthZSh0LG4scixvLGksYS50cmFuc2Zvcm1UZW1wbGF0ZSxsP1ByOnZvaWQgMCxsP0hyOnZvaWQgMCl9LHJlbmRlcjpMZX0sUXI9SXIoWHIpLEpyPUlyKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxYcikse2dldEJhc2VUYXJnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XX0scmVhZFZhbHVlRnJvbUluc3RhbmNlOmZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIEsodCk/KG51bGw9PT0obj1qdCh0KSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZGVmYXVsdCl8fDA6KHQ9X2UuaGFzKHQpP3Q6T2UodCksZS5nZXRBdHRyaWJ1dGUodCkpfSxzY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM6RWUsYnVpbGQ6ZnVuY3Rpb24oZSx0LG4scixvLGksYSl7dmFyIGw9ci5pc0VuYWJsZWQmJm8uaXNIeWRyYXRlZDttZSh0LG4scixvLGksYS50cmFuc2Zvcm1UZW1wbGF0ZSxsP1ByOnZvaWQgMCxsP0hyOnZvaWQgMCl9LHJlbmRlcjpNZX0pKSxlbz1mdW5jdGlvbihlLHQpe3JldHVybiBOKGUpP0pyKHQse2VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0aW9uOiExfSk6UXIodCx7ZW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRpb246ITB9KX0sdG89ci5fX2Fzc2lnbihyLl9fYXNzaWduKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxvbikscHQpLGxyKSxqciksbm89JCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gQmUoZSx0LHRvLGVvKX0pKSxybz0kKEJlKSxvbz0wO2Z1bmN0aW9uIGlvKCl7dmFyIGU9b287cmV0dXJuIG9vKyssZX12YXIgYW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuaW5pdGlhbCxyPWUuaXNQcmVzZW50LGk9ZS5vbkV4aXRDb21wbGV0ZSxhPWUuY3VzdG9tLGw9ZS5wcmVzZW5jZUFmZmVjdHNMYXlvdXQsYz1PKGxvKSxzPU8oaW8pLGQ9by51c2VNZW1vKChmdW5jdGlvbigpe3JldHVybntpZDpzLGluaXRpYWw6bixpc1ByZXNlbnQ6cixjdXN0b206YSxvbkV4aXRDb21wbGV0ZTpmdW5jdGlvbihlKXtjLnNldChlLCEwKTt2YXIgdD0hMDtjLmZvckVhY2goKGZ1bmN0aW9uKGUpe2V8fCh0PSExKX0pKSx0JiYobnVsbD09aXx8aSgpKX0scmVnaXN0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGMuc2V0KGUsITEpLGZ1bmN0aW9uKCl7cmV0dXJuIGMuZGVsZXRlKGUpfX19fSksbD92b2lkIDA6W3JdKTtyZXR1cm4gby51c2VNZW1vKChmdW5jdGlvbigpe2MuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYy5zZXQodCwhMSl9KSl9KSxbcl0pLHUudXNlRWZmZWN0KChmdW5jdGlvbigpeyFyJiYhYy5zaXplJiYobnVsbD09aXx8aSgpKX0pLFtyXSksdS5jcmVhdGVFbGVtZW50KHguUHJvdmlkZXIse3ZhbHVlOmR9LHQpfTtmdW5jdGlvbiBsbygpe3JldHVybiBuZXcgTWFwfWZ1bmN0aW9uIGNvKGUpe3JldHVybiBlLmtleXx8XCJcIn1mdW5jdGlvbiBzbyhlLHQsbil7dm9pZCAwPT09biYmKG49e30pO3ZhciByPWVlKGUpP2U6QXQoZSk7cmV0dXJuIFZ0KFwiXCIscix0LG4pLHtzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHIuc3RvcCgpfX19ZnVuY3Rpb24gdW8oKXt2YXIgZT1BdCgxKSx0PXtsZWFkOnZvaWQgMCxmb2xsb3c6dm9pZCAwLGNyb3NzZmFkZU9wYWNpdHk6ITEscHJlc2VydmVGb2xsb3dPcGFjaXR5OiExfSxuPXIuX19hc3NpZ24oe30sdCksbz17fSxpPXt9LGE9ITEscz1udWxsLHU9MDtmdW5jdGlvbiBkKG4sbyl7dmFyIGk9dC5sZWFkLGw9dC5mb2xsb3c7YT0hMCxzPW51bGw7dmFyIHU9ITEsZD1mdW5jdGlvbigpe3U9ITAsaSYmaS5zY2hlZHVsZVJlbmRlcigpLGwmJmwuc2NoZWR1bGVSZW5kZXIoKX0scD1mdW5jdGlvbigpe2E9ITEscz1jLmdldEZyYW1lRGF0YSgpLnRpbWVzdGFtcH07cmV0dXJuIG89byYma3QobyxcImNyb3NzZmFkZVwiKSxzbyhlLG4sci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG8pLHtvblVwZGF0ZTpkLG9uQ29tcGxldGU6ZnVuY3Rpb24oKXt1P3AoKTooZS5zZXQobiksZi5kZWZhdWx0LnJlYWQocCkpLGQoKX19KSl9cmV0dXJue2lzQWN0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIG8mJihhfHxjLmdldEZyYW1lRGF0YSgpLnRpbWVzdGFtcD09PXMpfSxmcm9tTGVhZDpmdW5jdGlvbihlKXtyZXR1cm4gZCgwLGUpfSx0b0xlYWQ6ZnVuY3Rpb24ocil7dmFyIG89MDtyZXR1cm4gdC5wcmV2VmFsdWVzfHx0LmZvbGxvdz9uLmxlYWQ9PT10LmZvbGxvdyYmbi5mb2xsb3c9PT10LmxlYWQmJihvPTEtZS5nZXQoKSk6bz0xLGUuc2V0KG8pLGQoMSxyKX0scmVzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5zZXQoMSl9LHN0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gZS5zdG9wKCl9LGdldENyb3NzZmFkZVN0YXRlOmZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBuLHIsYT1jLmdldEZyYW1lRGF0YSgpLnRpbWVzdGFtcCxzPXQubGVhZCxkPXQuZm9sbG93O2lmKGEhPT11JiZzKXt1PWE7dmFyIGY9cy5nZXRMYXRlc3RWYWx1ZXMoKTtPYmplY3QuYXNzaWduKG8sZik7dmFyIHA9ZD9kLmdldExhdGVzdFZhbHVlcygpOnQucHJldlZhbHVlcztPYmplY3QuYXNzaWduKGkscCk7dmFyIEM9ZS5nZXQoKSxoPW51bGwhPT0obj1mLm9wYWNpdHkpJiZ2b2lkIDAhPT1uP246MSx2PW51bGwhPT0ocj1udWxsPT1wP3ZvaWQgMDpwLm9wYWNpdHkpJiZ2b2lkIDAhPT1yP3I6MTt0LmNyb3NzZmFkZU9wYWNpdHkmJmQ/KG8ub3BhY2l0eT1sLm1peCghMSE9PWQuaXNWaXNpYmxlPzA6dixoLGZvKEMpKSxpLm9wYWNpdHk9dC5wcmVzZXJ2ZUZvbGxvd09wYWNpdHk/djpsLm1peCh2LDAscG8oQykpKTpkfHwoby5vcGFjaXR5PWwubWl4KHYsaCxDKSksZnVuY3Rpb24oZSx0LG4scixvLGkpe2Zvcih2YXIgYT0wO2E8dm87YSsrKXt2YXIgYz1cImJvcmRlclwiK2hvW2FdK1wiUmFkaXVzXCIscz1nbyhyLGMpLHU9Z28obixjKTtpZigodm9pZCAwIT09c3x8dm9pZCAwIT09dSkmJihzfHwocz0wKSx1fHwodT0wKSxcIm51bWJlclwiPT10eXBlb2YgcyYmXCJudW1iZXJcIj09dHlwZW9mIHUpKXt2YXIgZD1NYXRoLm1heChsLm1peChzLHUsaSksMCk7ZVtjXT10W2NdPWR9fWlmKHIucm90YXRlfHxuLnJvdGF0ZSl7dmFyIGY9bC5taXgoci5yb3RhdGV8fDAsbi5yb3RhdGV8fDAsaSk7ZS5yb3RhdGU9dC5yb3RhdGU9Zn0hbyYmbi5iYWNrZ3JvdW5kQ29sb3ImJnIuYmFja2dyb3VuZENvbG9yJiYoZS5iYWNrZ3JvdW5kQ29sb3I9dC5iYWNrZ3JvdW5kQ29sb3I9bC5taXhDb2xvcihyLmJhY2tncm91bmRDb2xvcixuLmJhY2tncm91bmRDb2xvcikoaSkpfShvLGksZixwfHx7fSxCb29sZWFuKGQpLEMpfX0oKSxuPT09dC5sZWFkP286bj09PXQuZm9sbG93P2k6dm9pZCAwfSxzZXRPcHRpb25zOmZ1bmN0aW9uKGUpe249dCx0PWUsbz17fSxpPXt9fSxnZXRMYXRlc3RWYWx1ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gb319fXZhciBmbz1DbygwLC41LGwuY2lyY091dCkscG89Q28oLjUsLjk1LGwubGluZWFyKTtmdW5jdGlvbiBDbyhlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiByPGU/MDpyPnQ/MTpuKGwucHJvZ3Jlc3MoZSx0LHIpKX19dmFyIGhvPVtcIlRvcExlZnRcIixcIlRvcFJpZ2h0XCIsXCJCb3R0b21MZWZ0XCIsXCJCb3R0b21SaWdodFwiXSx2bz1oby5sZW5ndGg7ZnVuY3Rpb24gZ28oZSx0KXt2YXIgbjtyZXR1cm4gbnVsbCE9PShuPWVbdF0pJiZ2b2lkIDAhPT1uP246ZS5ib3JkZXJSYWRpdXN9dmFyIG1vPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgdD1udWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIHQuY2hpbGRyZW49bmV3IFNldCx0LnN0YWNrcz1uZXcgTWFwLHQuaGFzTW91bnRlZD0hMSx0LnVwZGF0ZVNjaGVkdWxlZD0hMSx0LnJlbmRlclNjaGVkdWxlZD0hMSx0LnN5bmNDb250ZXh0PXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxicigpKSx7c3luY1VwZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5zY2hlZHVsZVVwZGF0ZShlKX0sZm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt0LnN5bmNDb250ZXh0PXIuX19hc3NpZ24oe30sdC5zeW5jQ29udGV4dCksdC5zY2hlZHVsZVVwZGF0ZSghMCl9LHJlZ2lzdGVyOmZ1bmN0aW9uKGUpe3JldHVybiB0LmFkZENoaWxkKGUpfSxyZW1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQucmVtb3ZlQ2hpbGQoZSl9fSksdH1yZXR1cm4gci5fX2V4dGVuZHModCxlKSx0LnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3RoaXMuaGFzTW91bnRlZD0hMH0sdC5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5zdGFydExheW91dEFuaW1hdGlvbigpfSx0LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJTY2hlZHVsZWQ9ITAsITB9LHQucHJvdG90eXBlLnN0YXJ0TGF5b3V0QW5pbWF0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLnJlbmRlclNjaGVkdWxlZD10aGlzLnVwZGF0ZVNjaGVkdWxlZD0hMTt2YXIgdD10aGlzLnByb3BzLnR5cGU7dGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmlzUHJlc2VudD9lLnByZXNlbmNlIT09aXIuRW50ZXJpbmcmJihlLnByZXNlbmNlPWUucHJlc2VuY2U9PT1pci5FeGl0aW5nP2lyLkVudGVyaW5nOmlyLlByZXNlbnQpOmUucHJlc2VuY2U9aXIuRXhpdGluZ30pKSx0aGlzLnVwZGF0ZVN0YWNrcygpO3ZhciBuPXtsYXlvdXRSZWFkeTpmdW5jdGlvbihuKXt2b2lkIDAhPT1uLmdldExheW91dElkKCk/ZS5nZXRTdGFjayhuKS5hbmltYXRlKG4sXCJjcm9zc2ZhZGVcIj09PXQpOm4ubm90aWZ5TGF5b3V0UmVhZHkoKX0scGFyZW50OnRoaXMuY29udGV4dC52aXN1YWxFbGVtZW50fTt0aGlzLmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLnN5bmNDb250ZXh0LmFkZCh0KX0pKSx0aGlzLnN5bmNDb250ZXh0LmZsdXNoKG4pLHRoaXMuc3RhY2tzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsZWFyU25hcHNob3QoKX0pKX0sdC5wcm90b3R5cGUudXBkYXRlU3RhY2tzPWZ1bmN0aW9uKCl7dGhpcy5zdGFja3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudXBkYXRlTGVhZEFuZEZvbGxvdygpfSkpfSx0LnByb3RvdHlwZS5zY2hlZHVsZVVwZGF0ZT1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT0hMSksIWUmJnRoaXMudXBkYXRlU2NoZWR1bGVkfHwodGhpcy51cGRhdGVTY2hlZHVsZWQ9ITAsdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKXshZnVuY3Rpb24oZSl7Zm9yKHZhciB0PSExLG49e30scj0wO3I8Ry5sZW5ndGg7cisrKXt2YXIgbz1cInJvdGF0ZVwiK0dbcl07ZS5oYXNWYWx1ZShvKSYmMCE9PWUuZ2V0U3RhdGljVmFsdWUobykmJih0PSEwLG5bb109ZS5nZXRTdGF0aWNWYWx1ZShvKSxlLnNldFN0YXRpY1ZhbHVlKG8sMCkpfWlmKHQpe2Zvcih2YXIgbyBpbiBlLnN5bmNSZW5kZXIoKSxuKWUuc2V0U3RhdGljVmFsdWUobyxuW29dKTtlLnNjaGVkdWxlUmVuZGVyKCl9fShlKSxlLnNob3VsZFJlc2V0VHJhbnNmb3JtKCkmJmUucmVzZXRUcmFuc2Zvcm0oKX0pKSx0aGlzLmNoaWxkcmVuLmZvckVhY2goUm4pLHRoaXMuc3RhY2tzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnVwZGF0ZVNuYXBzaG90KCl9KSksIWUmJnRoaXMucmVuZGVyU2NoZWR1bGVkfHwodGhpcy5yZW5kZXJTY2hlZHVsZWQ9ITAsdGhpcy5mb3JjZVVwZGF0ZSgpKSl9LHQucHJvdG90eXBlLmFkZENoaWxkPWZ1bmN0aW9uKGUpe3RoaXMuY2hpbGRyZW4uYWRkKGUpLHRoaXMuYWRkVG9TdGFjayhlKSxlLnByZXNlbmNlPXRoaXMuaGFzTW91bnRlZD9pci5FbnRlcmluZzppci5QcmVzZW50fSx0LnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbihlKXt0aGlzLnNjaGVkdWxlVXBkYXRlKCksdGhpcy5jaGlsZHJlbi5kZWxldGUoZSksdGhpcy5yZW1vdmVGcm9tU3RhY2soZSl9LHQucHJvdG90eXBlLmFkZFRvU3RhY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRTdGFjayhlKTtudWxsPT10fHx0LmFkZChlKX0sdC5wcm90b3R5cGUucmVtb3ZlRnJvbVN0YWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0U3RhY2soZSk7bnVsbD09dHx8dC5yZW1vdmUoZSl9LHQucHJvdG90eXBlLmdldFN0YWNrPWZ1bmN0aW9uKGUpe3ZhciB0LG4sbyxpLGEsbCxjLHMsdT1lLmdldExheW91dElkKCk7aWYodm9pZCAwIT09dSlyZXR1cm4hdGhpcy5zdGFja3MuaGFzKHUpJiZ0aGlzLnN0YWNrcy5zZXQodSwoaT1uZXcgU2V0LGE9e2xlYWRJc0V4aXRpbmc6ITF9LGw9ci5fX2Fzc2lnbih7fSxhKSxjPXVvKCkscz0hMSx7YWRkOmZ1bmN0aW9uKGUpe2Uuc2V0Q3Jvc3NmYWRlcihjKSxpLmFkZChlKSxvJiYoZS5wcmV2RHJhZ0N1cnNvcj1vKSxhLmxlYWR8fChhLmxlYWQ9ZSl9LHJlbW92ZTpmdW5jdGlvbihlKXtpLmRlbGV0ZShlKX0sZ2V0TGVhZDpmdW5jdGlvbigpe3JldHVybiBhLmxlYWR9LHVwZGF0ZVNuYXBzaG90OmZ1bmN0aW9uKCl7aWYoYS5sZWFkKXt0PWMuaXNBY3RpdmUoKT9jLmdldExhdGVzdFZhbHVlcygpOmEubGVhZC5nZXRMYXRlc3RWYWx1ZXMoKSxuPWEubGVhZC5wcmV2Vmlld3BvcnRCb3g7dmFyIGU9bnIuZ2V0KGEubGVhZCk7ZSYmZS5pc0RyYWdnaW5nJiYobz1lLmN1cnNvclByb2dyZXNzKX19LGNsZWFyU25hcHNob3Q6ZnVuY3Rpb24oKXtvPW49dm9pZCAwfSx1cGRhdGVMZWFkQW5kRm9sbG93OmZ1bmN0aW9uKCl7dmFyIGUsbixvO2w9ci5fX2Fzc2lnbih7fSxhKTtmb3IodmFyIHU9QXJyYXkuZnJvbShpKSxkPXUubGVuZ3RoO2QtLTtkPj0wKXt2YXIgZj11W2RdO2lmKG4mJihudWxsIT1vfHwobz1mKSksbnVsbCE9bnx8KG49ZiksbiYmbylicmVha31hLmxlYWQ9bixhLmZvbGxvdz1vLGEubGVhZElzRXhpdGluZz0obnVsbD09PShlPWEubGVhZCl8fHZvaWQgMD09PWU/dm9pZCAwOmUucHJlc2VuY2UpPT09aXIuRXhpdGluZyxjLnNldE9wdGlvbnMoe2xlYWQ6bixmb2xsb3c6byxwcmV2VmFsdWVzOnQsY3Jvc3NmYWRlT3BhY2l0eToobnVsbD09bz92b2lkIDA6by5pc1ByZXNlbmNlUm9vdCl8fChudWxsPT1uP3ZvaWQgMDpuLmlzUHJlc2VuY2VSb290KX0pLGEubGVhZD09PWwuZm9sbG93fHxsLmxlYWQ9PT1hLmxlYWQmJmwubGVhZElzRXhpdGluZz09PWEubGVhZElzRXhpdGluZ3x8KHM9ITApfSxhbmltYXRlOmZ1bmN0aW9uKGUsdCl7dmFyIHI7aWYodm9pZCAwPT09dCYmKHQ9ITEpLGU9PT1hLmxlYWQpe3Q/ZS5wb2ludFRvKGEubGVhZCk6ZS5zZXRWaXNpYmlsaXR5KCEwKTt2YXIgbz17fSxpPW51bGw9PT0ocj1hLmZvbGxvdyl8fHZvaWQgMD09PXI/dm9pZCAwOnIuZ2V0UHJvamVjdGlvblBhcmVudCgpO2lmKGkmJihvLnByZXZQYXJlbnQ9aSksZS5wcmVzZW5jZT09PWlyLkVudGVyaW5nP28ub3JpZ2luQm94PWEuZm9sbG93P2EuZm9sbG93LnByZXZWaWV3cG9ydEJveDpuOmUucHJlc2VuY2U9PT1pci5FeGl0aW5nJiYoby50YXJnZXRCb3g9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gbnVsbD09PShlPWEuZm9sbG93KXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5nZXRMYXlvdXRTdGF0ZSgpLmxheW91dH0oKSkscyl7cz0hMTt2YXIgbD1lLmdldERlZmF1bHRUcmFuc2l0aW9uKCk7ZS5wcmVzZW5jZT09PWlyLkVudGVyaW5nP2MudG9MZWFkKGwpOmMuZnJvbUxlYWQobCl9ZS5ub3RpZnlMYXlvdXRSZWFkeShvKX1lbHNlIHQ/YS5sZWFkJiZlLnBvaW50VG8oYS5sZWFkKTplLnNldFZpc2liaWxpdHkoITEpfX0pKSx0aGlzLnN0YWNrcy5nZXQodSl9LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB1LmNyZWF0ZUVsZW1lbnQoT3IuUHJvdmlkZXIse3ZhbHVlOnRoaXMuc3luY0NvbnRleHR9LHRoaXMucHJvcHMuY2hpbGRyZW4pfSx0LmNvbnRleHRUeXBlPXksdH0odS5Db21wb25lbnQpO2Z1bmN0aW9uIHdvKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9dmFyIHlvPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7cmVuZGVyZXI6ZW99LG9uKSxwdCksYm89ci5fX2Fzc2lnbihyLl9fYXNzaWduKHIuX19hc3NpZ24oe30seW8pLGxyKSxqcik7ZnVuY3Rpb24geG8oZSl7dmFyIHQ9TygoZnVuY3Rpb24oKXtyZXR1cm4gQXQoZSl9KSk7aWYoby51c2VDb250ZXh0KHcpLmlzU3RhdGljKXt2YXIgbj1yLl9fcmVhZChvLnVzZVN0YXRlKGUpLDIpWzFdO28udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiB0Lm9uQ2hhbmdlKG4pfSksW10pfXJldHVybiB0fWZ1bmN0aW9uIE9vKGUsdCl7by51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7aWYoZWUoZSkpcmV0dXJuIGUub25DaGFuZ2UodCl9KSxbdF0pfWZ1bmN0aW9uIExvKGUsdCl7dmFyIG49eG8odCgpKSxyPWZ1bmN0aW9uKCl7cmV0dXJuIG4uc2V0KHQoKSl9O3JldHVybiByKCksZnVuY3Rpb24oZSx0KXtvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXt2YXIgbj1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUub25DaGFuZ2UodCl9KSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pKX19KSl9KGUsKGZ1bmN0aW9uKCl7cmV0dXJuIGYuZGVmYXVsdC51cGRhdGUociwhMSwhMCl9KSksbn12YXIgX28sTW89ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZlLm1peH0oZSk/ZS5taXg6dm9pZCAwfTtmdW5jdGlvbiBqbygpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTt2YXIgbj0hQXJyYXkuaXNBcnJheShlWzBdKSxvPW4/MDotMSxpPWVbMCtvXSxhPWVbMStvXSxjPWVbMitvXSxzPWVbMytvXSx1PWwuaW50ZXJwb2xhdGUoYSxjLHIuX19hc3NpZ24oe21peGVyOk1vKGNbMF0pfSxzKSk7cmV0dXJuIG4/dShpKTp1fWZ1bmN0aW9uIEVvKGUsdCxuLG8pe3ZhciBpPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dDpqbyh0LG4sbyk7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/U28oZSxpKTpTbyhbZV0sKGZ1bmN0aW9uKGUpe3ZhciB0PXIuX19yZWFkKGUsMSlbMF07cmV0dXJuIGkodCl9KSl9ZnVuY3Rpb24gU28oZSx0KXt2YXIgbj1PKChmdW5jdGlvbigpe3JldHVybltdfSkpO3JldHVybiBMbyhlLChmdW5jdGlvbigpe24ubGVuZ3RoPTA7Zm9yKHZhciByPWUubGVuZ3RoLG89MDtvPHI7bysrKW5bb109ZVtvXS5nZXQoKTtyZXR1cm4gdChuKX0pKX1mdW5jdGlvbiBQbygpe3JldHVybntzY3JvbGxYOkF0KDApLHNjcm9sbFk6QXQoMCksc2Nyb2xsWFByb2dyZXNzOkF0KDApLHNjcm9sbFlQcm9ncmVzczpBdCgwKX19ZnVuY3Rpb24gSG8oZSx0LG4pe24uc2V0KGUmJnQ/ZS90OjApfWZ1bmN0aW9uIGtvKGUsdCl7dmFyIG49ZnVuY3Rpb24oKXt2YXIgbj10KCkscj1uLnhPZmZzZXQsbz1uLnlPZmZzZXQsaT1uLnhNYXhPZmZzZXQsYT1uLnlNYXhPZmZzZXQ7ZS5zY3JvbGxYLnNldChyKSxlLnNjcm9sbFkuc2V0KG8pLEhvKHIsaSxlLnNjcm9sbFhQcm9ncmVzcyksSG8obyxhLGUuc2Nyb2xsWVByb2dyZXNzKX07cmV0dXJuIG4oKSxufWZ1bmN0aW9uIFZvKCl7cmV0dXJue3hPZmZzZXQ6d2luZG93LnBhZ2VYT2Zmc2V0LHlPZmZzZXQ6d2luZG93LnBhZ2VZT2Zmc2V0LHhNYXhPZmZzZXQ6ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aC13aW5kb3cuaW5uZXJXaWR0aCx5TWF4T2Zmc2V0OmRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0LXdpbmRvdy5pbm5lckhlaWdodH19dmFyIFJvLElvPSExO2Z1bmN0aW9uIFpvKCl7dmFyIGU9ITEsdD1bXSxuPW5ldyBTZXQsbz17c3Vic2NyaWJlOmZ1bmN0aW9uKGUpe3JldHVybiBuLmFkZChlKSxmdW5jdGlvbigpe24uZGVsZXRlKGUpfX0sc3RhcnQ6ZnVuY3Rpb24ocixvKXtpZihlKXt2YXIgaT1bXTtyZXR1cm4gbi5mb3JFYWNoKChmdW5jdGlvbihlKXtpLnB1c2goWXQoZSxyLHt0cmFuc2l0aW9uT3ZlcnJpZGU6b30pKX0pKSxQcm9taXNlLmFsbChpKX1yZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3QucHVzaCh7YW5pbWF0aW9uOltyLG9dLHJlc29sdmU6ZX0pfSkpfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGkuaW52YXJpYW50KGUsXCJjb250cm9scy5zZXQoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYSBjb21wb25lbnQgaGFzIG1vdW50ZWQuIENvbnNpZGVyIGNhbGxpbmcgd2l0aGluIGEgdXNlRWZmZWN0IGhvb2suXCIpLG4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7QXJyYXkuaXNBcnJheSh0KT9XdChlLHQpOlwic3RyaW5nXCI9PXR5cGVvZiB0P1d0KGUsW3RdKTp6dChlLHQpfShlLHQpfSkpfSxzdG9wOmZ1bmN0aW9uKCl7bi5mb3JFYWNoKChmdW5jdGlvbihlKXshZnVuY3Rpb24oZSl7ZS5mb3JFYWNoVmFsdWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0b3AoKX0pKX0oZSl9KSl9LG1vdW50OmZ1bmN0aW9uKCl7cmV0dXJuIGU9ITAsdC5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1lLmFuaW1hdGlvbixuPWUucmVzb2x2ZTtvLnN0YXJ0LmFwcGx5KG8sci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKHQpKSkudGhlbihuKX0pKSxmdW5jdGlvbigpe2U9ITEsby5zdG9wKCl9fX07cmV0dXJuIG99dmFyIFRvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuY29tcG9uZW50Q29udHJvbHM9bmV3IFNldH1yZXR1cm4gZS5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuY29tcG9uZW50Q29udHJvbHMuYWRkKGUpLGZ1bmN0aW9uKCl7cmV0dXJuIHQuY29tcG9uZW50Q29udHJvbHMuZGVsZXRlKGUpfX0sZS5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmNvbXBvbmVudENvbnRyb2xzLmZvckVhY2goKGZ1bmN0aW9uKG4pe24uc3RhcnQoZS5uYXRpdmVFdmVudHx8ZSx0KX0pKX0sZS5wcm90b3R5cGUudXBkYXRlQ29uc3RyYWludHM9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9ITApLHRoaXMuY29tcG9uZW50Q29udHJvbHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS51cGRhdGVDb25zdHJhaW50cygpfSkpLGUmJkpuKCl9LGV9KCksQW89ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFRvfSxEbz1mdW5jdGlvbigpe3JldHVybnt9fSxCbz1Jcih7YnVpbGQ6ZnVuY3Rpb24oKXt9LG1lYXN1cmVWaWV3cG9ydEJveDpmdW5jdGlvbigpe3JldHVybnt4OnttaW46MCxtYXg6MX0seTp7bWluOjAsbWF4OjF9fX0scmVzZXRUcmFuc2Zvcm06ZnVuY3Rpb24oKXt9LHJlc3RvcmVUcmFuc2Zvcm06ZnVuY3Rpb24oKXt9LHJlbW92ZVZhbHVlRnJvbVJlbmRlclN0YXRlOmZ1bmN0aW9uKCl7fSxyZW5kZXI6ZnVuY3Rpb24oKXt9LHNjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczpEbyxyZWFkVmFsdWVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuLmluaXRpYWxTdGF0ZVt0XXx8MH0sbWFrZVRhcmdldEFuaW1hdGFibGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnRyYW5zaXRpb24sbz10LnRyYW5zaXRpb25FbmQsaT1yLl9fcmVzdCh0LFtcInRyYW5zaXRpb25cIixcInRyYW5zaXRpb25FbmRcIl0pO3JldHVybiBHdChlLGkscXQoaSxufHx7fSxlKSksci5fX2Fzc2lnbih7dHJhbnNpdGlvbjpuLHRyYW5zaXRpb25FbmQ6b30saSl9fSksJG89SWUoe3NjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczpEbyxjcmVhdGVSZW5kZXJTdGF0ZTpEb30pLEZvPWZ1bmN0aW9uKGUpe3JldHVybiBlPi4wMDE/MS9lOjFlNX0sTm89ITE7dC5BbmltYXRlUHJlc2VuY2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuY3VzdG9tLGk9ZS5pbml0aWFsLGE9dm9pZCAwPT09aXx8aSxsPWUub25FeGl0Q29tcGxldGUsYz1lLmV4aXRCZWZvcmVFbnRlcixzPWUucHJlc2VuY2VBZmZlY3RzTGF5b3V0LGQ9dm9pZCAwPT09c3x8cyxmPWZ1bmN0aW9uKCl7dmFyIGU9by51c2VSZWYoITEpLHQ9ci5fX3JlYWQoby51c2VTdGF0ZSgwKSwyKSxuPXRbMF0saT10WzFdO3JldHVybiBkdCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5jdXJyZW50PSEwfSkpLG8udXNlQ2FsbGJhY2soKGZ1bmN0aW9uKCl7IWUuY3VycmVudCYmaShuKzEpfSksW25dKX0oKSxwPW8udXNlQ29udGV4dChPcik7X3IocCkmJihmPXAuZm9yY2VVcGRhdGUpO3ZhciBDPW8udXNlUmVmKCEwKSxoPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiBvLkNoaWxkcmVuLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7by5pc1ZhbGlkRWxlbWVudChlKSYmdC5wdXNoKGUpfSkpLHR9KHQpLHY9by51c2VSZWYoaCksZz1vLnVzZVJlZihuZXcgTWFwKS5jdXJyZW50LG09by51c2VSZWYobmV3IFNldCkuY3VycmVudDtpZihmdW5jdGlvbihlLHQpe2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49Y28oZSk7dC5zZXQobixlKX0pKX0oaCxnKSxDLmN1cnJlbnQpcmV0dXJuIEMuY3VycmVudD0hMSx1LmNyZWF0ZUVsZW1lbnQodS5GcmFnbWVudCxudWxsLGgubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdS5jcmVhdGVFbGVtZW50KGFvLHtrZXk6Y28oZSksaXNQcmVzZW50OiEwLGluaXRpYWw6ISFhJiZ2b2lkIDAscHJlc2VuY2VBZmZlY3RzTGF5b3V0OmR9LGUpfSkpKTtmb3IodmFyIHc9ci5fX3NwcmVhZEFycmF5KFtdLHIuX19yZWFkKGgpKSx5PXYuY3VycmVudC5tYXAoY28pLGI9aC5tYXAoY28pLHg9eS5sZW5ndGgsTz0wO088eDtPKyspe3ZhciBMPXlbT107LTE9PT1iLmluZGV4T2YoTCk/bS5hZGQoTCk6bS5kZWxldGUoTCl9cmV0dXJuIGMmJm0uc2l6ZSYmKHc9W10pLG0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoLTE9PT1iLmluZGV4T2YoZSkpe3ZhciB0PWcuZ2V0KGUpO2lmKHQpe3ZhciByPXkuaW5kZXhPZihlKTt3LnNwbGljZShyLDAsdS5jcmVhdGVFbGVtZW50KGFvLHtrZXk6Y28odCksaXNQcmVzZW50OiExLG9uRXhpdENvbXBsZXRlOmZ1bmN0aW9uKCl7Zy5kZWxldGUoZSksbS5kZWxldGUoZSk7dmFyIHQ9di5jdXJyZW50LmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5PT09ZX0pKTt2LmN1cnJlbnQuc3BsaWNlKHQsMSksbS5zaXplfHwodi5jdXJyZW50PWgsZigpLGwmJmwoKSl9LGN1c3RvbTpuLHByZXNlbmNlQWZmZWN0c0xheW91dDpkfSx0KSl9fX0pKSx3PXcubWFwKChmdW5jdGlvbihlKXt2YXIgdD1lLmtleTtyZXR1cm4gbS5oYXModCk/ZTp1LmNyZWF0ZUVsZW1lbnQoYW8se2tleTpjbyhlKSxpc1ByZXNlbnQ6ITAscHJlc2VuY2VBZmZlY3RzTGF5b3V0OmR9LGUpfSkpLHYuY3VycmVudD13LHUuY3JlYXRlRWxlbWVudCh1LkZyYWdtZW50LG51bGwsbS5zaXplP3c6dy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBvLmNsb25lRWxlbWVudChlKX0pKSl9LHQuQW5pbWF0ZVNoYXJlZExheW91dD1tbyx0LkRyYWdDb250cm9scz1Ubyx0LkZsYXRUcmVlPVJyLHQuRnJhbWVyVHJlZUxheW91dENvbnRleHQ9THIsdC5MYXlvdXRHcm91cENvbnRleHQ9Uyx0LkxhenlNb3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuZmVhdHVyZXMsaT1lLnN0cmljdCxhPXZvaWQgMCE9PWkmJmksbD1yLl9fcmVhZChvLnVzZVN0YXRlKCF3byhuKSksMilbMV0sYz1vLnVzZVJlZih2b2lkIDApO2lmKCF3byhuKSl7dmFyIHM9bi5yZW5kZXJlcixkPXIuX19yZXN0KG4sW1wicmVuZGVyZXJcIl0pO2MuY3VycmVudD1zLGgoZCl9cmV0dXJuIG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3dvKG4pJiZuKCkudGhlbigoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZW5kZXJlcjtoKHIuX19yZXN0KGUsW1wicmVuZGVyZXJcIl0pKSxjLmN1cnJlbnQ9dCxsKCEwKX0pKX0pLFtdKSx1LmNyZWF0ZUVsZW1lbnQodi5Qcm92aWRlcix7dmFsdWU6e3JlbmRlcmVyOmMuY3VycmVudCxzdHJpY3Q6YX19LHQpfSx0Lk1vdGlvbkNvbmZpZz1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ci5fX3Jlc3QoZSxbXCJjaGlsZHJlblwiXSk7KG49ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LG8udXNlQ29udGV4dCh3KSksbikpLmlzU3RhdGljPU8oKGZ1bmN0aW9uKCl7cmV0dXJuIG4uaXNTdGF0aWN9KSk7dmFyIGk9XCJvYmplY3RcIj09dHlwZW9mIG4udHJhbnNpdGlvbj9uLnRyYW5zaXRpb24udG9TdHJpbmcoKTpcIlwiLGE9by51c2VNZW1vKChmdW5jdGlvbigpe3JldHVybiBufSksW2ksbi50cmFuc2Zvcm1QYWdlUG9pbnRdKTtyZXR1cm4gdS5jcmVhdGVFbGVtZW50KHcuUHJvdmlkZXIse3ZhbHVlOmF9LHQpfSx0Lk1vdGlvbkNvbmZpZ0NvbnRleHQ9dyx0Lk1vdGlvblZhbHVlPVR0LHQuUHJlc2VuY2VDb250ZXh0PXgsdC5TaGFyZWRMYXlvdXRDb250ZXh0PU9yLHQuYWRkU2NhbGVDb3JyZWN0aW9uPVcsdC5hbmltYXRlPXNvLHQuYW5pbWF0ZVZpc3VhbEVsZW1lbnQ9WXQsdC5hbmltYXRpb25Db250cm9scz1abyx0LmJhdGNoTGF5b3V0PVFuLHQuY3JlYXRlQmF0Y2hlcj1icix0LmNyZWF0ZUNyb3NzZmFkZXI9dW8sdC5jcmVhdGVEb21Nb3Rpb25Db21wb25lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIEIoQmUoZSx7Zm9yd2FyZE1vdGlvblByb3BzOiExfSx0byxlbykpfSx0LmNyZWF0ZU1vdGlvbkNvbXBvbmVudD1CLHQuZG9tQW5pbWF0aW9uPXlvLHQuZG9tTWF4PWJvLHQuZmx1c2hMYXlvdXQ9Sm4sdC5pc1ZhbGlkTW90aW9uUHJvcD1kZSx0Lm09cm8sdC5tb3Rpb249bm8sdC5tb3Rpb25WYWx1ZT1BdCx0LnJlc29sdmVNb3Rpb25WYWx1ZT1WZSx0LnNuYXBzaG90Vmlld3BvcnRCb3g9Um4sdC50cmFuc2Zvcm09am8sdC51c2VBbmltYXRpb249ZnVuY3Rpb24oKXt2YXIgZT1PKFpvKTtyZXR1cm4gby51c2VFZmZlY3QoZS5tb3VudCxbXSksZX0sdC51c2VDeWNsZT1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTt2YXIgbj1vLnVzZVJlZigwKSxpPXIuX19yZWFkKG8udXNlU3RhdGUoZVtuLmN1cnJlbnRdKSwyKSxhPWlbMF0sYz1pWzFdO3JldHVyblthLGZ1bmN0aW9uKHQpe24uY3VycmVudD1cIm51bWJlclwiIT10eXBlb2YgdD9sLndyYXAoMCxlLmxlbmd0aCxuLmN1cnJlbnQrMSk6dCxjKGVbbi5jdXJyZW50XSl9XX0sdC51c2VEZXByZWNhdGVkQW5pbWF0ZWRTdGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1yLl9fcmVhZChvLnVzZVN0YXRlKGUpLDIpLG49dFswXSxpPXRbMV0sYT0kbyh7fSwhMSksbD1PKChmdW5jdGlvbigpe3JldHVybiBCbyh7cHJvcHM6e30sdmlzdWFsU3RhdGU6YX0se2luaXRpYWxTdGF0ZTplfSl9KSk7cmV0dXJuIG8udXNlRWZmZWN0KChmdW5jdGlvbigpe3JldHVybiBsLm1vdW50KHt9KSxsLnVubW91bnQoKX0pLFtdKSxvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtsLnNldFByb3BzKHtvblVwZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gaShyLl9fYXNzaWduKHt9LGUpKX19KX0pKSxbbixPKChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gWXQobCxlKX19KSldfSx0LnVzZURlcHJlY2F0ZWRJbnZlcnRlZFNjYWxlPWZ1bmN0aW9uKGUpe3ZhciB0PXhvKDEpLG49eG8oMSkscj1iKCk7cmV0dXJuIGkuaW52YXJpYW50KCEoIWUmJiFyKSxcIklmIG5vIHNjYWxlIHZhbHVlcyBhcmUgcHJvdmlkZWQsIHVzZUludmVydGVkU2NhbGUgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGNoaWxkIG9mIGFub3RoZXIgbW90aW9uIGNvbXBvbmVudC5cIiksaS53YXJuaW5nKE5vLFwidXNlSW52ZXJ0ZWRTY2FsZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy4wLiBVc2UgdGhlIGxheW91dCBwcm9wIGluc3RlYWQuXCIpLE5vPSEwLGU/KHQ9ZS5zY2FsZVh8fHQsbj1lLnNjYWxlWXx8bik6ciYmKHQ9ci5nZXRWYWx1ZShcInNjYWxlWFwiLDEpLG49ci5nZXRWYWx1ZShcInNjYWxlWVwiLDEpKSx7c2NhbGVYOkVvKHQsRm8pLHNjYWxlWTpFbyhuLEZvKX19LHQudXNlRG9tRXZlbnQ9RmUsdC51c2VEcmFnQ29udHJvbHM9ZnVuY3Rpb24oKXtyZXR1cm4gTyhBbyl9LHQudXNlRWxlbWVudFNjcm9sbD1mdW5jdGlvbihlKXt2YXIgdD1PKFBvKTtyZXR1cm4gSCgoZnVuY3Rpb24oKXt2YXIgbj1lLmN1cnJlbnQ7aWYoaS5pbnZhcmlhbnQoISFuLFwicmVmIHByb3ZpZGVkIHRvIHVzZVNjcm9sbCBtdXN0IGJlIHBhc3NlZCBpbnRvIGEgSFRNTCBlbGVtZW50LlwiKSxuKXt2YXIgcj1rbyh0LGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybnt4T2Zmc2V0OmUuc2Nyb2xsTGVmdCx5T2Zmc2V0OmUuc2Nyb2xsVG9wLHhNYXhPZmZzZXQ6ZS5zY3JvbGxXaWR0aC1lLm9mZnNldFdpZHRoLHlNYXhPZmZzZXQ6ZS5zY3JvbGxIZWlnaHQtZS5vZmZzZXRIZWlnaHR9fX0obikpLG89JGUobixcInNjcm9sbFwiLHIse3Bhc3NpdmU6ITB9KSxhPSRlKG4sXCJyZXNpemVcIixyKTtyZXR1cm4gZnVuY3Rpb24oKXtvJiZvKCksYSYmYSgpfX19KSxbXSksdH0sdC51c2VJc1ByZXNlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gXyhvLnVzZUNvbnRleHQoeCkpfSx0LnVzZU1vdGlvblRlbXBsYXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3ZhciByPWUubGVuZ3RoO3JldHVybiBMbyh0LChmdW5jdGlvbigpe2Zvcih2YXIgbj1cIlwiLG89MDtvPHI7bysrKW4rPWVbb10sdFtvXSYmKG4rPXRbb10uZ2V0KCkpO3JldHVybiBufSkpfSx0LnVzZU1vdGlvblZhbHVlPXhvLHQudXNlUHJlc2VuY2U9TCx0LnVzZVJlZHVjZWRNb3Rpb249ZnVuY3Rpb24oKXshUm8mJmZ1bmN0aW9uKCl7aWYoUm89QXQobnVsbCksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdylpZih3aW5kb3cubWF0Y2hNZWRpYSl7dmFyIGU9d2luZG93Lm1hdGNoTWVkaWEoXCIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbilcIiksdD1mdW5jdGlvbigpe3JldHVybiBSby5zZXQoZS5tYXRjaGVzKX07ZS5hZGRMaXN0ZW5lcih0KSx0KCl9ZWxzZSBSby5zZXQoITEpfSgpO3ZhciBlPXIuX19yZWFkKG8udXNlU3RhdGUoUm8uZ2V0KCkpLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIE9vKFJvLG4pLHR9LHQudXNlU3ByaW5nPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBuPW8udXNlQ29udGV4dCh3KS5pc1N0YXRpYyxpPW8udXNlUmVmKG51bGwpLGE9eG8oZWUoZSk/ZS5nZXQoKTplKTtyZXR1cm4gby51c2VNZW1vKChmdW5jdGlvbigpe3JldHVybiBhLmF0dGFjaCgoZnVuY3Rpb24oZSxvKXtyZXR1cm4gbj9vKGUpOihpLmN1cnJlbnQmJmkuY3VycmVudC5zdG9wKCksaS5jdXJyZW50PWwuYW5pbWF0ZShyLl9fYXNzaWduKHIuX19hc3NpZ24oe2Zyb206YS5nZXQoKSx0bzplLHZlbG9jaXR5OmEuZ2V0VmVsb2NpdHkoKX0sdCkse29uVXBkYXRlOm99KSksYS5nZXQoKSl9KSl9KSxPYmplY3QudmFsdWVzKHQpKSxPbyhlLChmdW5jdGlvbihlKXtyZXR1cm4gYS5zZXQocGFyc2VGbG9hdChlKSl9KSksYX0sdC51c2VUcmFuc2Zvcm09RW8sdC51c2VWZWxvY2l0eT1mdW5jdGlvbihlKXt2YXIgdD14byhlLmdldFZlbG9jaXR5KCkpO3JldHVybiBvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gZS52ZWxvY2l0eVVwZGF0ZVN1YnNjcmliZXJzLmFkZCgoZnVuY3Rpb24oZSl7dC5zZXQoZSl9KSl9KSxbZV0pLHR9LHQudXNlVmlld3BvcnRTY3JvbGw9ZnVuY3Rpb24oKXtyZXR1cm4gX298fChfbz1QbygpKSxIKChmdW5jdGlvbigpeyFJbyYmZnVuY3Rpb24oKXtpZihJbz0hMCxcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93KXt2YXIgZT1rbyhfbyxWbyk7JGUod2luZG93LFwic2Nyb2xsXCIsZSx7cGFzc2l2ZTohMH0pLCRlKHdpbmRvdyxcInJlc2l6ZVwiLGUpfX0oKX0pLFtdKSxfb30sdC52aXN1YWxFbGVtZW50PUlyfSw0ODM5OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIG49MS82MCoxZTMscj1cInVuZGVmaW5lZFwiIT10eXBlb2YgcGVyZm9ybWFuY2U/ZnVuY3Rpb24oKXtyZXR1cm4gcGVyZm9ybWFuY2Uubm93KCl9OmZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93KCl9LG89XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz9mdW5jdGlvbihlKXtyZXR1cm4gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShlKX06ZnVuY3Rpb24oZSl7cmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUocigpKX0pLG4pfSxpPSEwLGE9ITEsbD0hMSxjPXtkZWx0YTowLHRpbWVzdGFtcDowfSxzPVtcInJlYWRcIixcInVwZGF0ZVwiLFwicHJlUmVuZGVyXCIsXCJyZW5kZXJcIixcInBvc3RSZW5kZXJcIl0sdT1zLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XT1mdW5jdGlvbihlKXt2YXIgdD1bXSxuPVtdLHI9MCxvPSExLGk9bmV3IFdlYWtTZXQsYT17c2NoZWR1bGU6ZnVuY3Rpb24oZSxhLGwpe3ZvaWQgMD09PWEmJihhPSExKSx2b2lkIDA9PT1sJiYobD0hMSk7dmFyIGM9bCYmbyxzPWM/dDpuO3JldHVybiBhJiZpLmFkZChlKSwtMT09PXMuaW5kZXhPZihlKSYmKHMucHVzaChlKSxjJiZvJiYocj10Lmxlbmd0aCkpLGV9LGNhbmNlbDpmdW5jdGlvbihlKXt2YXIgdD1uLmluZGV4T2YoZSk7LTEhPT10JiZuLnNwbGljZSh0LDEpLGkuZGVsZXRlKGUpfSxwcm9jZXNzOmZ1bmN0aW9uKGwpe3ZhciBjO2lmKG89ITAsdD0oYz1bbix0XSlbMF0sKG49Y1sxXSkubGVuZ3RoPTAscj10Lmxlbmd0aClmb3IodmFyIHM9MDtzPHI7cysrKXt2YXIgdT10W3NdO3UobCksaS5oYXModSkmJihhLnNjaGVkdWxlKHUpLGUoKSl9bz0hMX19O3JldHVybiBhfSgoZnVuY3Rpb24oKXtyZXR1cm4gYT0hMH0pKSxlfSkse30pLGQ9cy5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7dmFyIG49dVt0XTtyZXR1cm4gZVt0XT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHZvaWQgMD09PXQmJih0PSExKSx2b2lkIDA9PT1yJiYocj0hMSksYXx8digpLG4uc2NoZWR1bGUoZSx0LHIpfSxlfSkse30pLGY9cy5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF09dVt0XS5jYW5jZWwsZX0pLHt9KSxwPXMucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIHVbdF0ucHJvY2VzcyhjKX0sZX0pLHt9KSxDPWZ1bmN0aW9uKGUpe3JldHVybiB1W2VdLnByb2Nlc3MoYyl9LGg9ZnVuY3Rpb24oZSl7YT0hMSxjLmRlbHRhPWk/bjpNYXRoLm1heChNYXRoLm1pbihlLWMudGltZXN0YW1wLDQwKSwxKSxjLnRpbWVzdGFtcD1lLGw9ITAscy5mb3JFYWNoKEMpLGw9ITEsYSYmKGk9ITEsbyhoKSl9LHY9ZnVuY3Rpb24oKXthPSEwLGk9ITAsbHx8byhoKX07dC5jYW5jZWxTeW5jPWYsdC5kZWZhdWx0PWQsdC5mbHVzaFN5bmM9cCx0LmdldEZyYW1lRGF0YT1mdW5jdGlvbigpe3JldHVybiBjfX0sNDM5NDooZSx0LG4pPT57bi5yKHQpLG4uZCh0LHtpbnZhcmlhbnQ6KCk9Pm8sd2FybmluZzooKT0+cn0pO3ZhciByPWZ1bmN0aW9uKCl7fSxvPWZ1bmN0aW9uKCl7fX0sNzczOihlLHQsbik9Pnt2YXIgcixvPVwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfX1wiLGk9L15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLyxhPVwib2JqZWN0XCI9PXR5cGVvZiBuLmcmJm4uZyYmbi5nLk9iamVjdD09PU9iamVjdCYmbi5nLGw9XCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGM9YXx8bHx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpLHM9QXJyYXkucHJvdG90eXBlLHU9RnVuY3Rpb24ucHJvdG90eXBlLGQ9T2JqZWN0LnByb3RvdHlwZSxmPWNbXCJfX2NvcmUtanNfc2hhcmVkX19cIl0scD0ocj0vW14uXSskLy5leGVjKGYmJmYua2V5cyYmZi5rZXlzLklFX1BST1RPfHxcIlwiKSk/XCJTeW1ib2woc3JjKV8xLlwiK3I6XCJcIixDPXUudG9TdHJpbmcsaD1kLmhhc093blByb3BlcnR5LHY9ZC50b1N0cmluZyxnPVJlZ0V4cChcIl5cIitDLmNhbGwoaCkucmVwbGFjZSgvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2csXCJcXFxcJCZcIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZyxcIiQxLio/XCIpK1wiJFwiKSxtPXMuc3BsaWNlLHc9TShjLFwiTWFwXCIpLHk9TShPYmplY3QsXCJjcmVhdGVcIik7ZnVuY3Rpb24gYihlKXt2YXIgdD0tMSxuPWU/ZS5sZW5ndGg6MDtmb3IodGhpcy5jbGVhcigpOysrdDxuOyl7dmFyIHI9ZVt0XTt0aGlzLnNldChyWzBdLHJbMV0pfX1mdW5jdGlvbiB4KGUpe3ZhciB0PS0xLG49ZT9lLmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PG47KXt2YXIgcj1lW3RdO3RoaXMuc2V0KHJbMF0sclsxXSl9fWZ1bmN0aW9uIE8oZSl7dmFyIHQ9LTEsbj1lP2UubGVuZ3RoOjA7Zm9yKHRoaXMuY2xlYXIoKTsrK3Q8bjspe3ZhciByPWVbdF07dGhpcy5zZXQoclswXSxyWzFdKX19ZnVuY3Rpb24gTChlLHQpe2Zvcih2YXIgbixyLG89ZS5sZW5ndGg7by0tOylpZigobj1lW29dWzBdKT09PShyPXQpfHxuIT1uJiZyIT1yKXJldHVybiBvO3JldHVybi0xfWZ1bmN0aW9uIF8oZSx0KXt2YXIgbixyLG89ZS5fX2RhdGFfXztyZXR1cm4oXCJzdHJpbmdcIj09KHI9dHlwZW9mKG49dCkpfHxcIm51bWJlclwiPT1yfHxcInN5bWJvbFwiPT1yfHxcImJvb2xlYW5cIj09cj9cIl9fcHJvdG9fX1wiIT09bjpudWxsPT09bik/b1tcInN0cmluZ1wiPT10eXBlb2YgdD9cInN0cmluZ1wiOlwiaGFzaFwiXTpvLm1hcH1mdW5jdGlvbiBNKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZT92b2lkIDA6ZVt0XX0oZSx0KTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoIUUoZSl8fHAmJnAgaW4gZSlyZXR1cm4hMTt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdD1FKGUpP3YuY2FsbChlKTpcIlwiO3JldHVyblwiW29iamVjdCBGdW5jdGlvbl1cIj09dHx8XCJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXVwiPT10fShlKXx8ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZS50b1N0cmluZyl0cnl7dD0hIShlK1wiXCIpfWNhdGNoKGUpe31yZXR1cm4gdH0oZSk/ZzppO3JldHVybiB0LnRlc3QoZnVuY3Rpb24oZSl7aWYobnVsbCE9ZSl7dHJ5e3JldHVybiBDLmNhbGwoZSl9Y2F0Y2goZSl7fXRyeXtyZXR1cm4gZStcIlwifWNhdGNoKGUpe319cmV0dXJuXCJcIn0oZSkpfShuKT9uOnZvaWQgMH1mdW5jdGlvbiBqKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZXx8dCYmXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBmdW5jdGlvblwiKTt2YXIgbj1mdW5jdGlvbigpe3ZhciByPWFyZ3VtZW50cyxvPXQ/dC5hcHBseSh0aGlzLHIpOnJbMF0saT1uLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgYT1lLmFwcGx5KHRoaXMscik7cmV0dXJuIG4uY2FjaGU9aS5zZXQobyxhKSxhfTtyZXR1cm4gbi5jYWNoZT1uZXcoai5DYWNoZXx8Tyksbn1mdW5jdGlvbiBFKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiEhZSYmKFwib2JqZWN0XCI9PXR8fFwiZnVuY3Rpb25cIj09dCl9Yi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPXk/eShudWxsKTp7fX0sYi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmhhcyhlKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bZV19LGIucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO2lmKHkpe3ZhciBuPXRbZV07cmV0dXJuIG49PT1vP3ZvaWQgMDpufXJldHVybiBoLmNhbGwodCxlKT90W2VdOnZvaWQgMH0sYi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX187cmV0dXJuIHk/dm9pZCAwIT09dFtlXTpoLmNhbGwodCxlKX0sYi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX19kYXRhX19bZV09eSYmdm9pZCAwPT09dD9vOnQsdGhpc30seC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdfSx4LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxuPUwodCxlKTtyZXR1cm4hKG48MHx8KG49PXQubGVuZ3RoLTE/dC5wb3AoKTptLmNhbGwodCxuLDEpLDApKX0seC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18sbj1MKHQsZSk7cmV0dXJuIG48MD92b2lkIDA6dFtuXVsxXX0seC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiBMKHRoaXMuX19kYXRhX18sZSk+LTF9LHgucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19kYXRhX18scj1MKG4sZSk7cmV0dXJuIHI8MD9uLnB1c2goW2UsdF0pOm5bcl1bMV09dCx0aGlzfSxPLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189e2hhc2g6bmV3IGIsbWFwOm5ldyh3fHx4KSxzdHJpbmc6bmV3IGJ9fSxPLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odGhpcyxlKS5kZWxldGUoZSl9LE8ucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gXyh0aGlzLGUpLmdldChlKX0sTy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiBfKHRoaXMsZSkuaGFzKGUpfSxPLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gXyh0aGlzLGUpLnNldChlLHQpLHRoaXN9LGouQ2FjaGU9TyxlLmV4cG9ydHM9an0sNzQxODplPT57dmFyIHQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscj1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO2UuZXhwb3J0cz1mdW5jdGlvbigpe3RyeXtpZighT2JqZWN0LmFzc2lnbilyZXR1cm4hMTt2YXIgZT1uZXcgU3RyaW5nKFwiYWJjXCIpO2lmKGVbNV09XCJkZVwiLFwiNVwiPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSlbMF0pcmV0dXJuITE7Zm9yKHZhciB0PXt9LG49MDtuPDEwO24rKyl0W1wiX1wiK1N0cmluZy5mcm9tQ2hhckNvZGUobildPW47aWYoXCIwMTIzNDU2Nzg5XCIhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkpLmpvaW4oXCJcIikpcmV0dXJuITE7dmFyIHI9e307cmV0dXJuXCJhYmNkZWZnaGlqa2xtbm9wcXJzdFwiLnNwbGl0KFwiXCIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JbZV09ZX0pKSxcImFiY2RlZmdoaWprbG1ub3BxcnN0XCI9PT1PYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LHIpKS5qb2luKFwiXCIpfWNhdGNoKGUpe3JldHVybiExfX0oKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGUsbyl7Zm9yKHZhciBpLGEsbD1mdW5jdGlvbihlKXtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4gT2JqZWN0KGUpfShlKSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7Zm9yKHZhciBzIGluIGk9T2JqZWN0KGFyZ3VtZW50c1tjXSkpbi5jYWxsKGkscykmJihsW3NdPWlbc10pO2lmKHQpe2E9dChpKTtmb3IodmFyIHU9MDt1PGEubGVuZ3RoO3UrKylyLmNhbGwoaSxhW3VdKSYmKGxbYVt1XV09aVthW3VdXSl9fXJldHVybiBsfX0sOTI5NDooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9big2NTUpLG89big0Mzk0KSxpPW4oMzU3MyksYT1uKDQ4MzkpO3ZhciBsPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmXCJkZWZhdWx0XCJpbiBlP2U6e2RlZmF1bHQ6ZX19KGEpLGM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBNYXRoLm1pbihNYXRoLm1heChuLGUpLHQpfSxzPS4wMDEsdT0uMDEsZD0xMCxmPS4wNSxwPTEsQz0xMjtmdW5jdGlvbiBoKGUsdCl7cmV0dXJuIGUqTWF0aC5zcXJ0KDEtdCp0KX12YXIgdj1bXCJkdXJhdGlvblwiLFwiYm91bmNlXCJdLGc9W1wic3RpZmZuZXNzXCIsXCJkYW1waW5nXCIsXCJtYXNzXCJdO2Z1bmN0aW9uIG0oZSx0KXtyZXR1cm4gdC5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09ZVt0XX0pKX1mdW5jdGlvbiB3KGUpe3ZhciB0PWUuZnJvbSxuPXZvaWQgMD09PXQ/MDp0LGk9ZS50byxhPXZvaWQgMD09PWk/MTppLGw9ZS5yZXN0U3BlZWQsdz12b2lkIDA9PT1sPzI6bCxiPWUucmVzdERlbHRhLHg9ci5fX3Jlc3QoZSxbXCJmcm9tXCIsXCJ0b1wiLFwicmVzdFNwZWVkXCIsXCJyZXN0RGVsdGFcIl0pLE89e2RvbmU6ITEsdmFsdWU6bn0sTD1mdW5jdGlvbihlKXt2YXIgdD1yLl9fYXNzaWduKHt2ZWxvY2l0eTowLHN0aWZmbmVzczoxMDAsZGFtcGluZzoxMCxtYXNzOjEsaXNSZXNvbHZlZEZyb21EdXJhdGlvbjohMX0sZSk7aWYoIW0oZSxnKSYmbShlLHYpKXt2YXIgbj1mdW5jdGlvbihlKXt2YXIgdCxuLHI9ZS5kdXJhdGlvbixpPXZvaWQgMD09PXI/ODAwOnIsYT1lLmJvdW5jZSxsPXZvaWQgMD09PWE/LjI1OmEsdj1lLnZlbG9jaXR5LGc9dm9pZCAwPT09dj8wOnYsbT1lLm1hc3Msdz12b2lkIDA9PT1tPzE6bTtvLndhcm5pbmcoaTw9MWUzKmQsXCJTcHJpbmcgZHVyYXRpb24gbXVzdCBiZSAxMCBzZWNvbmRzIG9yIGxlc3NcIik7dmFyIHk9MS1sO3k9YyhmLHAseSksaT1jKHUsZCxpLzFlMykseTwxPyh0PWZ1bmN0aW9uKGUpe3ZhciB0PWUqeSxuPXQqaSxyPXQtZyxvPWgoZSx5KSxhPU1hdGguZXhwKC1uKTtyZXR1cm4gcy1yL28qYX0sbj1mdW5jdGlvbihlKXt2YXIgbj1lKnkqaSxyPW4qZytnLG89TWF0aC5wb3coeSwyKSpNYXRoLnBvdyhlLDIpKmksYT1NYXRoLmV4cCgtbiksbD1oKE1hdGgucG93KGUsMikseSk7cmV0dXJuKC10KGUpK3M+MD8tMToxKSooKHItbykqYSkvbH0pOih0PWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmV4cCgtZSppKSooKGUtZykqaSsxKS1zfSxuPWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmV4cCgtZSppKSooaSppKihnLWUpKX0pO3ZhciBiPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bixvPTE7bzxDO28rKylyLT1lKHIpL3Qocik7cmV0dXJuIHJ9KHQsbiw1L2kpO2lmKGkqPTFlMyxpc05hTihiKSlyZXR1cm57c3RpZmZuZXNzOjEwMCxkYW1waW5nOjEwLGR1cmF0aW9uOml9O3ZhciB4PU1hdGgucG93KGIsMikqdztyZXR1cm57c3RpZmZuZXNzOngsZGFtcGluZzoyKnkqTWF0aC5zcXJ0KHcqeCksZHVyYXRpb246aX19KGUpOyh0PXIuX19hc3NpZ24oci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHQpLG4pLHt2ZWxvY2l0eTowLG1hc3M6MX0pKS5pc1Jlc29sdmVkRnJvbUR1cmF0aW9uPSEwfXJldHVybiB0fSh4KSxfPUwuc3RpZmZuZXNzLE09TC5kYW1waW5nLGo9TC5tYXNzLEU9TC52ZWxvY2l0eSxTPUwuZHVyYXRpb24sUD1MLmlzUmVzb2x2ZWRGcm9tRHVyYXRpb24sSD15LGs9eTtmdW5jdGlvbiBWKCl7dmFyIGU9RT8tRS8xZTM6MCx0PWEtbixyPU0vKDIqTWF0aC5zcXJ0KF8qaikpLG89TWF0aC5zcXJ0KF8vaikvMWUzO2lmKG51bGwhPWJ8fChiPU1hdGguYWJzKGEtbik8PTE/LjAxOi40KSxyPDEpe3ZhciBpPWgobyxyKTtIPWZ1bmN0aW9uKG4pe3ZhciBsPU1hdGguZXhwKC1yKm8qbik7cmV0dXJuIGEtbCooKGUrcipvKnQpL2kqTWF0aC5zaW4oaSpuKSt0Kk1hdGguY29zKGkqbikpfSxrPWZ1bmN0aW9uKG4pe3ZhciBhPU1hdGguZXhwKC1yKm8qbik7cmV0dXJuIHIqbyphKihNYXRoLnNpbihpKm4pKihlK3Iqbyp0KS9pK3QqTWF0aC5jb3MoaSpuKSktYSooTWF0aC5jb3MoaSpuKSooZStyKm8qdCktaSp0Kk1hdGguc2luKGkqbikpfX1lbHNlIGlmKDE9PT1yKUg9ZnVuY3Rpb24obil7cmV0dXJuIGEtTWF0aC5leHAoLW8qbikqKHQrKGUrbyp0KSpuKX07ZWxzZXt2YXIgbD1vKk1hdGguc3FydChyKnItMSk7SD1mdW5jdGlvbihuKXt2YXIgaT1NYXRoLmV4cCgtcipvKm4pLGM9TWF0aC5taW4obCpuLDMwMCk7cmV0dXJuIGEtaSooKGUrcipvKnQpKk1hdGguc2luaChjKStsKnQqTWF0aC5jb3NoKGMpKS9sfX19cmV0dXJuIFYoKSx7bmV4dDpmdW5jdGlvbihlKXt2YXIgdD1IKGUpO2lmKFApTy5kb25lPWU+PVM7ZWxzZXt2YXIgbj0xZTMqayhlKSxyPU1hdGguYWJzKG4pPD13LG89TWF0aC5hYnMoYS10KTw9YjtPLmRvbmU9ciYmb31yZXR1cm4gTy52YWx1ZT1PLmRvbmU/YTp0LE99LGZsaXBUYXJnZXQ6ZnVuY3Rpb24oKXt2YXIgZTtFPS1FLG49KGU9W2Esbl0pWzBdLGE9ZVsxXSxWKCl9fX13Lm5lZWRzSW50ZXJwb2xhdGlvbj1mdW5jdGlvbihlLHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlfHxcInN0cmluZ1wiPT10eXBlb2YgdH07dmFyIHk9ZnVuY3Rpb24oZSl7cmV0dXJuIDB9LGI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQtZTtyZXR1cm4gMD09PXI/MToobi1lKS9yfSx4PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4tbiplK24qdCtlfSxPPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKmUsbz10KnQ7cmV0dXJuIE1hdGguc3FydChNYXRoLm1heCgwLG4qKG8tcikrcikpfSxMPVtpLmhleCxpLnJnYmEsaS5oc2xhXSxfPWZ1bmN0aW9uKGUpe3JldHVybiBMLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRlc3QoZSl9KSl9LE09ZnVuY3Rpb24oZSl7cmV0dXJuXCInXCIrZStcIicgaXMgbm90IGFuIGFuaW1hdGFibGUgY29sb3IuIFVzZSB0aGUgZXF1aXZhbGVudCBjb2xvciBjb2RlIGluc3RlYWQuXCJ9LGo9ZnVuY3Rpb24oZSx0KXt2YXIgbj1fKGUpLGE9Xyh0KTtvLmludmFyaWFudCghIW4sTShlKSksby5pbnZhcmlhbnQoISFhLE0odCkpLG8uaW52YXJpYW50KG4udHJhbnNmb3JtPT09YS50cmFuc2Zvcm0sXCJCb3RoIGNvbG9ycyBtdXN0IGJlIGhleC9SR0JBLCBPUiBib3RoIG11c3QgYmUgSFNMQS5cIik7dmFyIGw9bi5wYXJzZShlKSxjPWEucGFyc2UodCkscz1yLl9fYXNzaWduKHt9LGwpLHU9bj09PWkuaHNsYT94Ok87cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBzKVwiYWxwaGFcIiE9PXQmJihzW3RdPXUobFt0XSxjW3RdLGUpKTtyZXR1cm4gcy5hbHBoYT14KGwuYWxwaGEsYy5hbHBoYSxlKSxuLnRyYW5zZm9ybShzKX19LEU9e3g6MCx5OjAsejowfSxTPWZ1bmN0aW9uKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlfSxQPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0KGUobikpfX0sSD1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gZS5yZWR1Y2UoUCl9O2Z1bmN0aW9uIGsoZSx0KXtyZXR1cm4gUyhlKT9mdW5jdGlvbihuKXtyZXR1cm4geChlLHQsbil9OmkuY29sb3IudGVzdChlKT9qKGUsdCk6WihlLHQpfXZhciBWPWZ1bmN0aW9uKGUsdCl7dmFyIG49ci5fX3NwcmVhZEFycmF5KFtdLGUpLG89bi5sZW5ndGgsaT1lLm1hcCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gayhlLHRbbl0pfSkpO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PG87dCsrKW5bdF09aVt0XShlKTtyZXR1cm4gbn19LFI9ZnVuY3Rpb24oZSx0KXt2YXIgbj1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sZSksdCksbz17fTtmb3IodmFyIGkgaW4gbil2b2lkIDAhPT1lW2ldJiZ2b2lkIDAhPT10W2ldJiYob1tpXT1rKGVbaV0sdFtpXSkpO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gbyluW3RdPW9bdF0oZSk7cmV0dXJuIG59fTtmdW5jdGlvbiBJKGUpe2Zvcih2YXIgdD1pLmNvbXBsZXgucGFyc2UoZSksbj10Lmxlbmd0aCxyPTAsbz0wLGE9MCxsPTA7bDxuO2wrKylyfHxcIm51bWJlclwiPT10eXBlb2YgdFtsXT9yKys6dm9pZCAwIT09dFtsXS5odWU/YSsrOm8rKztyZXR1cm57cGFyc2VkOnQsbnVtTnVtYmVyczpyLG51bVJHQjpvLG51bUhTTDphfX12YXIgWj1mdW5jdGlvbihlLHQpe3ZhciBuPWkuY29tcGxleC5jcmVhdGVUcmFuc2Zvcm1lcih0KSxyPUkoZSksYT1JKHQpO3JldHVybiBvLmludmFyaWFudChyLm51bUhTTD09PWEubnVtSFNMJiZyLm51bVJHQj09PWEubnVtUkdCJiZyLm51bU51bWJlcnM+PWEubnVtTnVtYmVycyxcIkNvbXBsZXggdmFsdWVzICdcIitlK1wiJyBhbmQgJ1wiK3QrXCInIHRvbyBkaWZmZXJlbnQgdG8gbWl4LiBFbnN1cmUgYWxsIGNvbG9ycyBhcmUgb2YgdGhlIHNhbWUgdHlwZS5cIiksSChWKHIucGFyc2VkLGEucGFyc2VkKSxuKX0sVD1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4geChlLHQsbil9fTtmdW5jdGlvbiBBKGUsdCxuKXt2YXIgcj12b2lkIDA9PT1uP3t9Om4sYT1yLmNsYW1wLGw9dm9pZCAwPT09YXx8YSxzPXIuZWFzZSx1PXIubWl4ZXIsZD1lLmxlbmd0aDtvLmludmFyaWFudChkPT09dC5sZW5ndGgsXCJCb3RoIGlucHV0IGFuZCBvdXRwdXQgcmFuZ2VzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoXCIpLG8uaW52YXJpYW50KCFzfHwhQXJyYXkuaXNBcnJheShzKXx8cy5sZW5ndGg9PT1kLTEsXCJBcnJheSBvZiBlYXNpbmcgZnVuY3Rpb25zIG11c3QgYmUgb2YgbGVuZ3RoIGBpbnB1dC5sZW5ndGggLSAxYCwgYXMgaXQgYXBwbGllcyB0byB0aGUgdHJhbnNpdGlvbnMgKipiZXR3ZWVuKiogdGhlIGRlZmluZWQgdmFsdWVzLlwiKSxlWzBdPmVbZC0xXSYmKGU9W10uY29uY2F0KGUpLHQ9W10uY29uY2F0KHQpLGUucmV2ZXJzZSgpLHQucmV2ZXJzZSgpKTt2YXIgZj1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByLG89W10sYT1ufHwoXCJudW1iZXJcIj09dHlwZW9mKHI9ZVswXSk/VDpcInN0cmluZ1wiPT10eXBlb2Ygcj9pLmNvbG9yLnRlc3Qocik/ajpaOkFycmF5LmlzQXJyYXkocik/VjpcIm9iamVjdFwiPT10eXBlb2Ygcj9SOnZvaWQgMCksbD1lLmxlbmd0aC0xLGM9MDtjPGw7YysrKXt2YXIgcz1hKGVbY10sZVtjKzFdKTtpZih0KXt2YXIgdT1BcnJheS5pc0FycmF5KHQpP3RbY106dDtzPUgodSxzKX1vLnB1c2gocyl9cmV0dXJuIG99KHQscyx1KSxwPTI9PT1kP2Z1bmN0aW9uKGUsdCl7dmFyIG49ZVswXSxyPWVbMV0sbz10WzBdO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbyhiKG4scixlKSl9fShlLGYpOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5sZW5ndGgscj1uLTE7cmV0dXJuIGZ1bmN0aW9uKG8pe3ZhciBpPTAsYT0hMTtpZihvPD1lWzBdP2E9ITA6bz49ZVtyXSYmKGk9ci0xLGE9ITApLCFhKXtmb3IodmFyIGw9MTtsPG4mJiEoZVtsXT5vfHxsPT09cik7bCsrKTtpPWwtMX12YXIgYz1iKGVbaV0sZVtpKzFdLG8pO3JldHVybiB0W2ldKGMpfX0oZSxmKTtyZXR1cm4gbD9mdW5jdGlvbih0KXtyZXR1cm4gcChjKGVbMF0sZVtkLTFdLHQpKX06cH12YXIgRD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIDEtZSgxLXQpfX0sQj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ8PS41P2UoMip0KS8yOigyLWUoMiooMS10KSkpLzJ9fSwkPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5wb3codCxlKX19LEY9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0KnQqKChlKzEpKnQtZSl9fSxOPWZ1bmN0aW9uKGUpe3ZhciB0PUYoZSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihlKj0yKTwxPy41KnQoZSk6LjUqKDItTWF0aC5wb3coMiwtMTAqKGUtMSkpKX19LHo9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LFc9JCgyKSxHPUQoVyksVT1CKFcpLHE9ZnVuY3Rpb24oZSl7cmV0dXJuIDEtTWF0aC5zaW4oTWF0aC5hY29zKGUpKX0sWT1EKHEpLEs9QihZKSxYPUYoMS41MjUpLFE9RChYKSxKPUIoWCksZWU9TigxLjUyNSksdGU9ZnVuY3Rpb24oZSl7aWYoMT09PWV8fDA9PT1lKXJldHVybiBlO3ZhciB0PWUqZTtyZXR1cm4gZTwuMzYzNjM2MzYzNjM2MzYzNjU/Ny41NjI1KnQ6ZTwuNzI3MjcyNzI3MjcyNzI3Mz85LjA3NSp0LTkuOSplKzMuNDplPC45PzEyLjA2NjQ4MTk5NDQ1OTgzMyp0LTE5LjYzNTQ1NzA2MzcxMTkxKmUrOC44OTgwNjA5NDE4MjgyNTU6MTAuOCplKmUtMjAuNTIqZSsxMC43Mn0sbmU9RCh0ZSk7ZnVuY3Rpb24gcmUoZSx0KXtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIHR8fFV9KSkuc3BsaWNlKDAsZS5sZW5ndGgtMSl9ZnVuY3Rpb24gb2UoZSl7dmFyIHQ9ZS5mcm9tLG49dm9pZCAwPT09dD8wOnQscj1lLnRvLG89dm9pZCAwPT09cj8xOnIsaT1lLmVhc2UsYT1lLm9mZnNldCxsPWUuZHVyYXRpb24sYz12b2lkIDA9PT1sPzMwMDpsLHM9e2RvbmU6ITEsdmFsdWU6bn0sdT1BcnJheS5pc0FycmF5KG8pP286W24sb10sZD1mdW5jdGlvbihlLHQpe3JldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUqdH0pKX0oYSYmYS5sZW5ndGg9PT11Lmxlbmd0aD9hOmZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO3JldHVybiBlLm1hcCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gMCE9PW4/bi8odC0xKTowfSkpfSh1KSxjKTtmdW5jdGlvbiBmKCl7cmV0dXJuIEEoZCx1LHtlYXNlOkFycmF5LmlzQXJyYXkoaSk/aTpyZSh1LGkpfSl9dmFyIHA9ZigpO3JldHVybntuZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBzLnZhbHVlPXAoZSkscy5kb25lPWU+PWMsc30sZmxpcFRhcmdldDpmdW5jdGlvbigpe3UucmV2ZXJzZSgpLHA9ZigpfX19ZnVuY3Rpb24gaWUoZSl7dmFyIHQ9ZS52ZWxvY2l0eSxuPXZvaWQgMD09PXQ/MDp0LHI9ZS5mcm9tLG89dm9pZCAwPT09cj8wOnIsaT1lLnBvd2VyLGE9dm9pZCAwPT09aT8uODppLGw9ZS50aW1lQ29uc3RhbnQsYz12b2lkIDA9PT1sPzM1MDpsLHM9ZS5yZXN0RGVsdGEsdT12b2lkIDA9PT1zPy41OnMsZD1lLm1vZGlmeVRhcmdldCxmPXtkb25lOiExLHZhbHVlOm99LHA9YSpuLEM9bytwLGg9dm9pZCAwPT09ZD9DOmQoQyk7cmV0dXJuIGghPT1DJiYocD1oLW8pLHtuZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PS1wKk1hdGguZXhwKC1lL2MpO3JldHVybiBmLmRvbmU9ISh0PnV8fHQ8LXUpLGYudmFsdWU9Zi5kb25lP2g6aCt0LGZ9LGZsaXBUYXJnZXQ6ZnVuY3Rpb24oKXt9fX12YXIgYWU9e2tleWZyYW1lczpvZSxzcHJpbmc6dyxkZWNheTppZX07ZnVuY3Rpb24gbGUoZSx0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0wKSxlLXQtbn12YXIgY2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24odCl7dmFyIG49dC5kZWx0YTtyZXR1cm4gZShuKX07cmV0dXJue3N0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGwuZGVmYXVsdC51cGRhdGUodCwhMCl9LHN0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gYS5jYW5jZWxTeW5jLnVwZGF0ZSh0KX19fTtmdW5jdGlvbiBzZShlKXt2YXIgdCxuLG8saSxhLGw9ZS5mcm9tLGM9ZS5hdXRvcGxheSxzPXZvaWQgMD09PWN8fGMsdT1lLmRyaXZlcixkPXZvaWQgMD09PXU/Y2U6dSxmPWUuZWxhcHNlZCxwPXZvaWQgMD09PWY/MDpmLEM9ZS5yZXBlYXQsaD12b2lkIDA9PT1DPzA6Qyx2PWUucmVwZWF0VHlwZSxnPXZvaWQgMD09PXY/XCJsb29wXCI6dixtPWUucmVwZWF0RGVsYXkseT12b2lkIDA9PT1tPzA6bSxiPWUub25QbGF5LHg9ZS5vblN0b3AsTz1lLm9uQ29tcGxldGUsTD1lLm9uUmVwZWF0LF89ZS5vblVwZGF0ZSxNPXIuX19yZXN0KGUsW1wiZnJvbVwiLFwiYXV0b3BsYXlcIixcImRyaXZlclwiLFwiZWxhcHNlZFwiLFwicmVwZWF0XCIsXCJyZXBlYXRUeXBlXCIsXCJyZXBlYXREZWxheVwiLFwib25QbGF5XCIsXCJvblN0b3BcIixcIm9uQ29tcGxldGVcIixcIm9uUmVwZWF0XCIsXCJvblVwZGF0ZVwiXSksaj1NLnRvLEU9MCxTPU0uZHVyYXRpb24sUD0hMSxIPSEwLGs9ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlLnRvKSlyZXR1cm4gb2U7aWYoYWVbZS50eXBlXSlyZXR1cm4gYWVbZS50eXBlXTt2YXIgdD1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKTtyZXR1cm4gdC5oYXMoXCJlYXNlXCIpfHx0LmhhcyhcImR1cmF0aW9uXCIpJiYhdC5oYXMoXCJkYW1waW5nUmF0aW9cIik/b2U6dC5oYXMoXCJkYW1waW5nUmF0aW9cIil8fHQuaGFzKFwic3RpZmZuZXNzXCIpfHx0LmhhcyhcIm1hc3NcIil8fHQuaGFzKFwiZGFtcGluZ1wiKXx8dC5oYXMoXCJyZXN0U3BlZWRcIil8fHQuaGFzKFwicmVzdERlbHRhXCIpP3c6b2V9KE0pOyhudWxsPT09KG49KHQ9aykubmVlZHNJbnRlcnBvbGF0aW9uKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jYWxsKHQsbCxqKSkmJihhPUEoWzAsMTAwXSxbbCxqXSx7Y2xhbXA6ITF9KSxsPTAsaj0xMDApO3ZhciBWPWsoci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LE0pLHtmcm9tOmwsdG86an0pKTtyZXR1cm4gcyYmKG51bGw9PWJ8fGIoKSwobz1kKChmdW5jdGlvbihlKXtpZihIfHwoZT0tZSkscCs9ZSwhUCl7dmFyIHQ9Vi5uZXh0KE1hdGgubWF4KDAscCkpO2k9dC52YWx1ZSxhJiYoaT1hKGkpKSxQPUg/dC5kb25lOnA8PTB9bnVsbD09X3x8XyhpKSxQJiYoMD09PUUmJihudWxsIT1TfHwoUz1wKSksRTxoP2Z1bmN0aW9uKGUsdCxuLHIpe3JldHVybiByP2U+PXQrbjplPD0tbn0ocCxTLHksSCkmJihFKyssXCJyZXZlcnNlXCI9PT1nP3A9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PXImJihyPSEwKSxyP2xlKHQrLWUsdCxuKTp0LShlLXQpK259KHAsUyx5LEg9RSUyPT0wKToocD1sZShwLFMseSksXCJtaXJyb3JcIj09PWcmJlYuZmxpcFRhcmdldCgpKSxQPSExLEwmJkwoKSk6KG8uc3RvcCgpLE8mJk8oKSkpfSkpKS5zdGFydCgpKSx7c3RvcDpmdW5jdGlvbigpe251bGw9PXh8fHgoKSxvLnN0b3AoKX19fWZ1bmN0aW9uIHVlKGUsdCl7cmV0dXJuIHQ/ZSooMWUzL3QpOjB9dmFyIGRlPWZ1bmN0aW9uKGUpe3JldHVybiAxODAqZS9NYXRoLlBJfSxmZT1mdW5jdGlvbihlKXtyZXR1cm4gZX0scGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPWZlKSxmdW5jdGlvbih0LG4scil7dmFyIG89bi1yLGk9LSgwLXQrMSkqKDAtZShNYXRoLmFicyhvKSkpO3JldHVybiBvPD0wP24raTpuLWl9fSxDZT1wZSgpLGhlPXBlKE1hdGguc3FydCksdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUqTWF0aC5QSS8xODB9LGdlPWZ1bmN0aW9uKGUpe3JldHVybiBlLmhhc093blByb3BlcnR5KFwieFwiKSYmZS5oYXNPd25Qcm9wZXJ0eShcInlcIil9LG1lPWZ1bmN0aW9uKGUpe3JldHVybiBnZShlKSYmZS5oYXNPd25Qcm9wZXJ0eShcInpcIil9LHdlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGguYWJzKGUtdCl9LHllPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PTIpLHQ9TWF0aC5wb3coMTAsdCksTWF0aC5yb3VuZChlKnQpL3R9LGJlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB2b2lkIDA9PT1yJiYocj0wKSx5ZShlK24qKHQtZSkvTWF0aC5tYXgocixuKSl9LHhlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDEtMyp0KzMqZX0sT2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMyp0LTYqZX0sTGU9ZnVuY3Rpb24oZSl7cmV0dXJuIDMqZX0sX2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybigoeGUodCxuKSplK09lKHQsbikpKmUrTGUodCkpKmV9LE1lPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gMyp4ZSh0LG4pKmUqZSsyKk9lKHQsbikqZStMZSh0KX0samU9LjE7dC5hbmdsZT1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1FKSxkZShNYXRoLmF0YW4yKHQueS1lLnksdC54LWUueCkpfSx0LmFuaW1hdGU9c2UsdC5hbnRpY2lwYXRlPWVlLHQuYXBwbHlPZmZzZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj0hMDtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ZSxuPSExKSxmdW5jdGlvbihyKXtyZXR1cm4gbj9yLWUrdDooZT1yLG49ITAsdCl9fSx0LmF0dHJhY3Q9Q2UsdC5hdHRyYWN0RXhwbz1oZSx0LmJhY2tJbj1YLHQuYmFja0luT3V0PUosdC5iYWNrT3V0PVEsdC5ib3VuY2VJbj1uZSx0LmJvdW5jZUluT3V0PWZ1bmN0aW9uKGUpe3JldHVybiBlPC41Py41KigxLXRlKDEtMiplKSk6LjUqdGUoMiplLTEpKy41fSx0LmJvdW5jZU91dD10ZSx0LmNpcmNJbj1xLHQuY2lyY0luT3V0PUssdC5jaXJjT3V0PVksdC5jbGFtcD1jLHQuY3JlYXRlQW50aWNpcGF0ZT1OLHQuY3JlYXRlQXR0cmFjdG9yPXBlLHQuY3JlYXRlQmFja0luPUYsdC5jcmVhdGVFeHBvSW49JCx0LmN1YmljQmV6aWVyPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9PT10JiZuPT09cilyZXR1cm4gejtmb3IodmFyIG89bmV3IEZsb2F0MzJBcnJheSgxMSksaT0wO2k8MTE7KytpKW9baV09X2UoaSpqZSxlLG4pO3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gMD09PWl8fDE9PT1pP2k6X2UoZnVuY3Rpb24odCl7Zm9yKHZhciByPTAsaT0xOzEwIT09aSYmb1tpXTw9dDsrK2kpcis9amU7LS1pO3ZhciBhPXIrKHQtb1tpXSkvKG9baSsxXS1vW2ldKSpqZSxsPU1lKGEsZSxuKTtyZXR1cm4gbD49LjAwMT9mdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIG89MDtvPDg7KytvKXt2YXIgaT1NZSh0LG4scik7aWYoMD09PWkpcmV0dXJuIHQ7dC09KF9lKHQsbixyKS1lKS9pfXJldHVybiB0fSh0LGEsZSxuKTowPT09bD9hOmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGksYSxsPTA7ZG97KGk9X2UoYT10KyhuLXQpLzIscixvKS1lKT4wP249YTp0PWF9d2hpbGUoTWF0aC5hYnMoaSk+MWUtNyYmKytsPDEwKTtyZXR1cm4gYX0odCxyLHIramUsZSxuKX0oaSksdCxyKX19LHQuZGVjYXk9aWUsdC5kZWdyZWVzVG9SYWRpYW5zPXZlLHQuZGlzdGFuY2U9ZnVuY3Rpb24oZSx0KXtpZihTKGUpJiZTKHQpKXJldHVybiB3ZShlLHQpO2lmKGdlKGUpJiZnZSh0KSl7dmFyIG49d2UoZS54LHQueCkscj13ZShlLnksdC55KSxvPW1lKGUpJiZtZSh0KT93ZShlLnosdC56KTowO3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3cobiwyKStNYXRoLnBvdyhyLDIpK01hdGgucG93KG8sMikpfX0sdC5lYXNlSW49Vyx0LmVhc2VJbk91dD1VLHQuZWFzZU91dD1HLHQuaW5lcnRpYT1mdW5jdGlvbihlKXt2YXIgdCxuPWUuZnJvbSxvPXZvaWQgMD09PW4/MDpuLGk9ZS52ZWxvY2l0eSxsPXZvaWQgMD09PWk/MDppLGM9ZS5taW4scz1lLm1heCx1PWUucG93ZXIsZD12b2lkIDA9PT11Py44OnUsZj1lLnRpbWVDb25zdGFudCxwPXZvaWQgMD09PWY/NzUwOmYsQz1lLmJvdW5jZVN0aWZmbmVzcyxoPXZvaWQgMD09PUM/NTAwOkMsdj1lLmJvdW5jZURhbXBpbmcsZz12b2lkIDA9PT12PzEwOnYsbT1lLnJlc3REZWx0YSx3PXZvaWQgMD09PW0/MTptLHk9ZS5tb2RpZnlUYXJnZXQsYj1lLmRyaXZlcix4PWUub25VcGRhdGUsTz1lLm9uQ29tcGxldGU7ZnVuY3Rpb24gTChlKXtyZXR1cm4gdm9pZCAwIT09YyYmZTxjfHx2b2lkIDAhPT1zJiZlPnN9ZnVuY3Rpb24gXyhlKXtyZXR1cm4gdm9pZCAwPT09Yz9zOnZvaWQgMD09PXN8fE1hdGguYWJzKGMtZSk8TWF0aC5hYnMocy1lKT9jOnN9ZnVuY3Rpb24gTShlKXtudWxsPT10fHx0LnN0b3AoKSx0PXNlKHIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxlKSx7ZHJpdmVyOmIsb25VcGRhdGU6ZnVuY3Rpb24odCl7dmFyIG47bnVsbD09eHx8eCh0KSxudWxsPT09KG49ZS5vblVwZGF0ZSl8fHZvaWQgMD09PW58fG4uY2FsbChlLHQpfSxvbkNvbXBsZXRlOk99KSl9ZnVuY3Rpb24gaihlKXtNKHIuX19hc3NpZ24oe3R5cGU6XCJzcHJpbmdcIixzdGlmZm5lc3M6aCxkYW1waW5nOmcscmVzdERlbHRhOnd9LGUpKX1pZihMKG8pKWooe2Zyb206byx2ZWxvY2l0eTpsLHRvOl8obyl9KTtlbHNle3ZhciBFPWQqbCtvO3ZvaWQgMCE9PXkmJihFPXkoRSkpO3ZhciBTLFAsSD1fKEUpLGs9SD09PWM/LTE6MTtNKHt0eXBlOlwiZGVjYXlcIixmcm9tOm8sdmVsb2NpdHk6bCx0aW1lQ29uc3RhbnQ6cCxwb3dlcjpkLHJlc3REZWx0YTp3LG1vZGlmeVRhcmdldDp5LG9uVXBkYXRlOkwoRSk/ZnVuY3Rpb24oZSl7Uz1QLFA9ZSxsPXVlKGUtUyxhLmdldEZyYW1lRGF0YSgpLmRlbHRhKSwoMT09PWsmJmU+SHx8LTE9PT1rJiZlPEgpJiZqKHtmcm9tOmUsdG86SCx2ZWxvY2l0eTpsfSl9OnZvaWQgMH0pfXJldHVybntzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnQuc3RvcCgpfX19LHQuaW50ZXJwb2xhdGU9QSx0LmlzUG9pbnQ9Z2UsdC5pc1BvaW50M0Q9bWUsdC5rZXlmcmFtZXM9b2UsdC5saW5lYXI9eix0Lm1pcnJvckVhc2luZz1CLHQubWl4PXgsdC5taXhDb2xvcj1qLHQubWl4Q29tcGxleD1aLHQucGlwZT1ILHQucG9pbnRGcm9tVmVjdG9yPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD12ZSh0KSx7eDpuKk1hdGguY29zKHQpK2UueCx5Om4qTWF0aC5zaW4odCkrZS55fX0sdC5wcm9ncmVzcz1iLHQucmFkaWFuc1RvRGVncmVlcz1kZSx0LnJldmVyc2VFYXNpbmc9RCx0LnNtb290aD1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT01MCk7dmFyIHQ9MCxuPTA7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBvPWEuZ2V0RnJhbWVEYXRhKCkudGltZXN0YW1wLGk9byE9PW4/by1uOjAsbD1pP2JlKHQscixpLGUpOnQ7cmV0dXJuIG49byx0PWwsbH19LHQuc21vb3RoRnJhbWU9YmUsdC5zbmFwPWZ1bmN0aW9uKGUpe2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0L2UpKmV9O3ZhciB0PTAsbj1lLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG89TWF0aC5hYnMoZVswXS1yKTtmb3IodD0xO3Q8bjt0Kyspe3ZhciBpPWVbdF0sYT1NYXRoLmFicyhpLXIpO2lmKDA9PT1hKXJldHVybiBpO2lmKGE+bylyZXR1cm4gZVt0LTFdO2lmKHQ9PT1uLTEpcmV0dXJuIGk7bz1hfX19LHQuc3ByaW5nPXcsdC5zdGVwcz1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1cImVuZFwiKSxmdW5jdGlvbihuKXt2YXIgcj0obj1cImVuZFwiPT09dD9NYXRoLm1pbihuLC45OTkpOk1hdGgubWF4KG4sLjAwMSkpKmUsbz1cImVuZFwiPT09dD9NYXRoLmZsb29yKHIpOk1hdGguY2VpbChyKTtyZXR1cm4gYygwLDEsby9lKX19LHQudG9EZWNpbWFsPXllLHQudmVsb2NpdHlQZXJGcmFtZT1mdW5jdGlvbihlLHQpe3JldHVybiBlLygxZTMvdCl9LHQudmVsb2NpdHlQZXJTZWNvbmQ9dWUsdC53cmFwPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LWU7cmV0dXJuKChuLWUpJXIrciklcitlfX0sMjcwMzooZSx0LG4pPT57dmFyIHI9big0MTQpO2Z1bmN0aW9uIG8oKXt9ZnVuY3Rpb24gaSgpe31pLnJlc2V0V2FybmluZ0NhY2hlPW8sZS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixvLGksYSl7aWYoYSE9PXIpe3ZhciBsPW5ldyBFcnJvcihcIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXNcIik7dGhyb3cgbC5uYW1lPVwiSW52YXJpYW50IFZpb2xhdGlvblwiLGx9fWZ1bmN0aW9uIHQoKXtyZXR1cm4gZX1lLmlzUmVxdWlyZWQ9ZTt2YXIgbj17YXJyYXk6ZSxiaWdpbnQ6ZSxib29sOmUsZnVuYzplLG51bWJlcjplLG9iamVjdDplLHN0cmluZzplLHN5bWJvbDplLGFueTplLGFycmF5T2Y6dCxlbGVtZW50OmUsZWxlbWVudFR5cGU6ZSxpbnN0YW5jZU9mOnQsbm9kZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0LGV4YWN0OnQsY2hlY2tQcm9wVHlwZXM6aSxyZXNldFdhcm5pbmdDYWNoZTpvfTtyZXR1cm4gbi5Qcm9wVHlwZXM9bixufX0sNTY5NzooZSx0LG4pPT57ZS5leHBvcnRzPW4oMjcwMykoKX0sNDE0OmU9PntlLmV4cG9ydHM9XCJTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRFwifSw3MjkyOihlLHQsbik9PntuLnIodCksbi5kKHQse0NhbGVuZGFyOigpPT5RbixDZW50dXJ5VmlldzooKT0+UHQsRGVjYWRlVmlldzooKT0+RnQsTW9udGhWaWV3OigpPT5qbixOYXZpZ2F0aW9uOigpPT5GZSxZZWFyVmlldzooKT0+dG4sZGVmYXVsdDooKT0+dHJ9KTt2YXIgcj1uKDY2ODkpLG89bi5uKHIpLGk9big1Njk3KSxhPW4ubihpKTtmdW5jdGlvbiBsKGUpe3ZhciB0LG4scj1cIlwiO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlfHxcIm51bWJlclwiPT10eXBlb2YgZSlyKz1lO2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIGUpaWYoQXJyYXkuaXNBcnJheShlKSlmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0mJihuPWwoZVt0XSkpJiYociYmKHIrPVwiIFwiKSxyKz1uKTtlbHNlIGZvcih0IGluIGUpZVt0XSYmKHImJihyKz1cIiBcIikscis9dCk7cmV0dXJuIHJ9Y29uc3QgYz1mdW5jdGlvbigpe2Zvcih2YXIgZSx0LG49MCxyPVwiXCI7bjxhcmd1bWVudHMubGVuZ3RoOykoZT1hcmd1bWVudHNbbisrXSkmJih0PWwoZSkpJiYociYmKHIrPVwiIFwiKSxyKz10KTtyZXR1cm4gcn07dmFyIHM9big3NzMpLHU9bi5uKHMpO2Z1bmN0aW9uIGQoZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfXZhciBmPXUoKSgoZnVuY3Rpb24oZSl7dmFyIHQsbj12b2lkIDA9PT1lP3t9OmUscj1uLnVzZUZhbGxiYWNrTG9jYWxlLG89dm9pZCAwPT09cnx8cixpPW4uZmFsbGJhY2tMb2NhbGUsYT12b2lkIDA9PT1pP1wiZW4tVVNcIjppLGw9W107aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyl7dmFyIGM9d2luZG93Lm5hdmlnYXRvcjtsPWwuY29uY2F0KGMubGFuZ3VhZ2VzLGMubGFuZ3VhZ2UsYy51c2VyTGFuZ3VhZ2UsYy5icm93c2VyTGFuZ3VhZ2UsYy5zeXN0ZW1MYW5ndWFnZSl9cmV0dXJuIG8mJmwucHVzaChhKSxmdW5jdGlvbihlKXtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe2lmKCFlfHwtMT09PWUuaW5kZXhPZihcIi1cIil8fGUudG9Mb3dlckNhc2UoKSE9PWUpcmV0dXJuIGU7dmFyIHQ9ZS5zcGxpdChcIi1cIik7cmV0dXJuIHRbMF0rXCItXCIrdFsxXS50b1VwcGVyQ2FzZSgpfSkpfSgodD1sKS5maWx0ZXIoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUmJnQuaW5kZXhPZihlKT09PW59KSkpfSksZCkscD11KCkoKGZ1bmN0aW9uKGUpe3JldHVybiBmKGUpWzBdfHxudWxsfSksZCk7Y29uc3QgQz1wO2Z1bmN0aW9uIGgoZSx0LG4pe3JldHVybiBmdW5jdGlvbihyLG8pe3ZvaWQgMD09PW8mJihvPW4pO3ZhciBpPWUocikrbztyZXR1cm4gdChpKX19ZnVuY3Rpb24gdihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEYXRlKGUodCkuZ2V0VGltZSgpLTEpfX1mdW5jdGlvbiBnKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybltlKG4pLHQobildfX1mdW5jdGlvbiBtKGUpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBlLmdldEZ1bGxZZWFyKCk7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpcmV0dXJuIGU7dmFyIHQ9cGFyc2VJbnQoZSwxMCk7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJiFpc05hTih0KSlyZXR1cm4gdDt0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZ2V0IHllYXIgZnJvbSBkYXRlOiBcIi5jb25jYXQoZSxcIi5cIikpfWZ1bmN0aW9uIHcoZSl7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIGUuZ2V0TW9udGgoKTt0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZ2V0IG1vbnRoIGZyb20gZGF0ZTogXCIuY29uY2F0KGUsXCIuXCIpKX1mdW5jdGlvbiB5KGUpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBlLmdldERhdGUoKTt0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZ2V0IHllYXIgZnJvbSBkYXRlOiBcIi5jb25jYXQoZSxcIi5cIikpfWZ1bmN0aW9uIGIoZSl7dmFyIHQ9bShlKSxuPXQrKDEtdCklMTAwLHI9bmV3IERhdGU7cmV0dXJuIHIuc2V0RnVsbFllYXIobiwwLDEpLHIuc2V0SG91cnMoMCwwLDAsMCkscn12YXIgeD1oKG0sYiwtMTAwKSxPPWgobSxiLDEwMCksTD12KE8pLF89aChtLEwsLTEwMCksTT0oaChtLEwsMTAwKSxnKGIsTCkpO2Z1bmN0aW9uIGooZSl7dmFyIHQ9bShlKSxuPXQrKDEtdCklMTAscj1uZXcgRGF0ZTtyZXR1cm4gci5zZXRGdWxsWWVhcihuLDAsMSksci5zZXRIb3VycygwLDAsMCwwKSxyfXZhciBFPWgobSxqLC0xMCksUz1oKG0saiwxMCksUD12KFMpLEg9aChtLFAsLTEwKSxrPShoKG0sUCwxMCksZyhqLFApKTtmdW5jdGlvbiBWKGUpe3ZhciB0PW0oZSksbj1uZXcgRGF0ZTtyZXR1cm4gbi5zZXRGdWxsWWVhcih0LDAsMSksbi5zZXRIb3VycygwLDAsMCwwKSxufXZhciBSPWgobSxWLC0xKSxJPWgobSxWLDEpLFo9dihJKSxUPWgobSxaLC0xKSxBPShoKG0sWiwxKSxnKFYsWikpO2Z1bmN0aW9uIEQoZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXt2b2lkIDA9PT1yJiYocj10KTt2YXIgbz1tKG4pLGk9dyhuKStyLGE9bmV3IERhdGU7cmV0dXJuIGEuc2V0RnVsbFllYXIobyxpLDEpLGEuc2V0SG91cnMoMCwwLDAsMCksZShhKX19ZnVuY3Rpb24gQihlKXt2YXIgdD1tKGUpLG49dyhlKSxyPW5ldyBEYXRlO3JldHVybiByLnNldEZ1bGxZZWFyKHQsbiwxKSxyLnNldEhvdXJzKDAsMCwwLDApLHJ9dmFyICQ9RChCLC0xKSxGPUQoQiwxKSxOPXYoRiksej1EKE4sLTEpLFc9KEQoTiwxKSxnKEIsTikpO2Z1bmN0aW9uIEcoZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXt2b2lkIDA9PT1yJiYocj10KTt2YXIgbz1tKG4pLGk9dyhuKSxhPXkobikrcixsPW5ldyBEYXRlO3JldHVybiBsLnNldEZ1bGxZZWFyKG8saSxhKSxsLnNldEhvdXJzKDAsMCwwLDApLGUobCl9fWZ1bmN0aW9uIFUoZSl7dmFyIHQ9bShlKSxuPXcoZSkscj15KGUpLG89bmV3IERhdGU7cmV0dXJuIG8uc2V0RnVsbFllYXIodCxuLHIpLG8uc2V0SG91cnMoMCwwLDAsMCksb31HKFUsLTEpO3ZhciBxLFk9dihHKFUsMSkpLEs9KEcoWSwtMSksRyhZLDEpLGcoVSxZKSk7ZnVuY3Rpb24gWChlKXtyZXR1cm4geShOKGUpKX1mdW5jdGlvbiBRKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gSihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGVlLHRlPXtBUkFCSUM6XCJBcmFiaWNcIixIRUJSRVc6XCJIZWJyZXdcIixJU09fODYwMTpcIklTTyA4NjAxXCIsVVM6XCJVU1wifSxuZT0oSihxPXt9LHRlLlVTLFtcImVuLUNBXCIsXCJlbi1VU1wiLFwiZXMtQVJcIixcImVzLUJPXCIsXCJlcy1DTFwiLFwiZXMtQ09cIixcImVzLUNSXCIsXCJlcy1ET1wiLFwiZXMtRUNcIixcImVzLUdUXCIsXCJlcy1ITlwiLFwiZXMtTVhcIixcImVzLU5JXCIsXCJlcy1QQVwiLFwiZXMtUEVcIixcImVzLVBSXCIsXCJlcy1TVlwiLFwiZXMtVkVcIixcInB0LUJSXCJdKSxKKHEsdGUuQVJBQklDLFtcImFyXCIsXCJhci1BRVwiLFwiYXItQkhcIixcImFyLURaXCIsXCJhci1FR1wiLFwiYXItSVFcIixcImFyLUpPXCIsXCJhci1LV1wiLFwiYXItTFlcIixcImFyLU9NXCIsXCJhci1RQVwiLFwiYXItU0FcIixcImFyLVNEXCIsXCJhci1TWVwiLFwiYXItWUVcIixcImR2XCIsXCJkdi1NVlwiLFwicHNcIixcInBzLUFSXCJdKSxKKHEsdGUuSEVCUkVXLFtcImhlXCIsXCJoZS1JTFwiXSkscSkscmU9KGVlPUFycmF5KDcpLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIFEoZSl9KGVlKXx8ZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lW1wiQEBpdGVyYXRvclwiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZWUpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBRKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVyblwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bj9BcnJheS5mcm9tKGUpOlwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9RKGUsdCk6dm9pZCAwfX0oZWUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKS5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9KSksb2U9bmV3IE1hcDtmdW5jdGlvbiBpZShlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIHI9dHx8QygpO29lLmhhcyhyKXx8b2Uuc2V0KHIsbmV3IE1hcCk7dmFyIG89b2UuZ2V0KHIpO3JldHVybiBvLmhhcyhlKXx8by5zZXQoZSxuZXcgSW50bC5EYXRlVGltZUZvcm1hdChyLGUpLmZvcm1hdCksby5nZXQoZSkobil9fShlKSh0LGZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlKGUpO3JldHVybiBuZXcgRGF0ZSh0LnNldEhvdXJzKDEyKSl9KG4pKX19aWUoe2RheTpcIm51bWVyaWNcIixtb250aDpcIm51bWVyaWNcIix5ZWFyOlwibnVtZXJpY1wifSk7dmFyIGFlPWllKHtkYXk6XCJudW1lcmljXCJ9KSxsZT1pZSh7ZGF5OlwibnVtZXJpY1wiLG1vbnRoOlwibG9uZ1wiLHllYXI6XCJudW1lcmljXCJ9KSxjZT1pZSh7bW9udGg6XCJsb25nXCJ9KSxzZT1pZSh7bW9udGg6XCJsb25nXCIseWVhcjpcIm51bWVyaWNcIn0pLHVlPWllKHt3ZWVrZGF5Olwic2hvcnRcIn0pLGRlPWllKHt3ZWVrZGF5OlwibG9uZ1wifSksZmU9aWUoe3llYXI6XCJudW1lcmljXCJ9KSxwZT1yZVswXSxDZT1yZVs1XSxoZT1yZVs2XTtmdW5jdGlvbiB2ZShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGUuSVNPXzg2MDEsbj1lLmdldERheSgpO3N3aXRjaCh0KXtjYXNlIHRlLklTT184NjAxOnJldHVybihuKzYpJTc7Y2FzZSB0ZS5BUkFCSUM6cmV0dXJuKG4rMSklNztjYXNlIHRlLkhFQlJFVzpjYXNlIHRlLlVTOnJldHVybiBuO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgY2FsZW5kYXIgdHlwZS5cIil9fWZ1bmN0aW9uIGdlKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0ZS5JU09fODYwMSxuPW0oZSkscj13KGUpLG89ZS5nZXREYXRlKCktdmUoZSx0KTtyZXR1cm4gbmV3IERhdGUobixyLG8pfWZ1bmN0aW9uIG1lKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4gYih0KTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gaih0KTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIFYodCk7Y2FzZVwibW9udGhcIjpyZXR1cm4gQih0KTtjYXNlXCJkYXlcIjpyZXR1cm4gVSh0KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX1mdW5jdGlvbiB3ZShlLHQpe3N3aXRjaChlKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIE8odCk7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIFModCk7Y2FzZVwieWVhclwiOnJldHVybiBJKHQpO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIEYodCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19dmFyIHllPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImRlY2FkZVwiOnJldHVybiBFKHQsLTEwMCk7Y2FzZVwieWVhclwiOnJldHVybiBSKHQsLTEwKTtjYXNlXCJtb250aFwiOnJldHVybiAkKHQsLTEyKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX0sYmU9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIFModCwxMDApO2Nhc2VcInllYXJcIjpyZXR1cm4gSSh0LDEwKTtjYXNlXCJtb250aFwiOnJldHVybiBGKHQsMTIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fTtmdW5jdGlvbiB4ZShlLHQpe3N3aXRjaChlKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIEwodCk7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIFAodCk7Y2FzZVwieWVhclwiOnJldHVybiBaKHQpO2Nhc2VcIm1vbnRoXCI6cmV0dXJuIE4odCk7Y2FzZVwiZGF5XCI6cmV0dXJuIFkodCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJhbmdlVHlwZTogXCIuY29uY2F0KGUpKX19dmFyIE9lPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImRlY2FkZVwiOnJldHVybiBIKHQsLTEwMCk7Y2FzZVwieWVhclwiOnJldHVybiBUKHQsLTEwKTtjYXNlXCJtb250aFwiOnJldHVybiB6KHQsLTEyKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX07ZnVuY3Rpb24gTGUoZSx0KXtzd2l0Y2goZSl7Y2FzZVwiY2VudHVyeVwiOnJldHVybiBNKHQpO2Nhc2VcImRlY2FkZVwiOnJldHVybiBrKHQpO2Nhc2VcInllYXJcIjpyZXR1cm4gQSh0KTtjYXNlXCJtb250aFwiOnJldHVybiBXKHQpO2Nhc2VcImRheVwiOnJldHVybiBLKHQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fWZ1bmN0aW9uIF9lKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpmZTtyZXR1cm4oYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0pKS5qb2luKFwiIOKAkyBcIil9ZnVuY3Rpb24gTWUoZSx0LG4pe3JldHVybiBfZShlLHQsayhuKSl9ZnVuY3Rpb24gamUoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRlLklTT184NjAxLG49ZS5nZXREYXkoKTtzd2l0Y2godCl7Y2FzZSB0ZS5BUkFCSUM6Y2FzZSB0ZS5IRUJSRVc6cmV0dXJuIG49PT1DZXx8bj09PWhlO2Nhc2UgdGUuSVNPXzg2MDE6Y2FzZSB0ZS5VUzpyZXR1cm4gbj09PWhlfHxuPT09cGU7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBjYWxlbmRhciB0eXBlLlwiKX19ZnVuY3Rpb24gRWUoZSl7cmV0dXJuIEVlPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LEVlKGUpfXZhciBTZT1PYmplY3QudmFsdWVzKHRlKSxQZT1bXCJjZW50dXJ5XCIsXCJkZWNhZGVcIixcInllYXJcIixcIm1vbnRoXCJdLEhlPWEoKS5vbmVPZihTZSksa2U9YSgpLm9uZU9mVHlwZShbYSgpLnN0cmluZyxhKCkuYXJyYXlPZihhKCkuc3RyaW5nKV0pLFZlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lW3RdO2lmKCFyKXJldHVybiBudWxsO2lmKCEociBpbnN0YW5jZW9mIERhdGUpKXJldHVybiBuZXcgRXJyb3IoXCJJbnZhbGlkIHByb3AgYFwiLmNvbmNhdCh0LFwiYCBvZiB0eXBlIGBcIikuY29uY2F0KEVlKHIpLFwiYCBzdXBwbGllZCB0byBgXCIpLmNvbmNhdChuLFwiYCwgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgYERhdGVgLlwiKSk7dmFyIG89ZS5tYXhEYXRlO3JldHVybiBvJiZyPm8/bmV3IEVycm9yKFwiSW52YWxpZCBwcm9wIGBcIi5jb25jYXQodCxcImAgb2YgdHlwZSBgXCIpLmNvbmNhdChFZShyKSxcImAgc3VwcGxpZWQgdG8gYFwiKS5jb25jYXQobixcImAsIG1pbkRhdGUgY2Fubm90IGJlIGxhcmdlciB0aGFuIG1heERhdGUuXCIpKTpudWxsfSxSZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZVt0XTtpZighcilyZXR1cm4gbnVsbDtpZighKHIgaW5zdGFuY2VvZiBEYXRlKSlyZXR1cm4gbmV3IEVycm9yKFwiSW52YWxpZCBwcm9wIGBcIi5jb25jYXQodCxcImAgb2YgdHlwZSBgXCIpLmNvbmNhdChFZShyKSxcImAgc3VwcGxpZWQgdG8gYFwiKS5jb25jYXQobixcImAsIGV4cGVjdGVkIGluc3RhbmNlIG9mIGBEYXRlYC5cIikpO3ZhciBvPWUubWluRGF0ZTtyZXR1cm4gbyYmcjxvP25ldyBFcnJvcihcIkludmFsaWQgcHJvcCBgXCIuY29uY2F0KHQsXCJgIG9mIHR5cGUgYFwiKS5jb25jYXQoRWUociksXCJgIHN1cHBsaWVkIHRvIGBcIikuY29uY2F0KG4sXCJgLCBtYXhEYXRlIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gbWluRGF0ZS5cIikpOm51bGx9LEllPWEoKS5vbmVPZlR5cGUoW2EoKS5mdW5jLGEoKS5zaGFwZSh7Y3VycmVudDphKCkuYW55fSldKSxaZT1hKCkub25lT2ZUeXBlKFthKCkuaW5zdGFuY2VPZihEYXRlKSxhKCkuYXJyYXlPZihhKCkuaW5zdGFuY2VPZihEYXRlKSldKSxUZT1hKCkuYXJyYXlPZihhKCkub25lT2YoUGUpKSxBZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZVt0XSxvPWUudmlld3N8fFBlO3JldHVybiB2b2lkIDAhPT1yJiYtMT09PW8uaW5kZXhPZihyKT9uZXcgRXJyb3IoXCJJbnZhbGlkIHByb3AgYFwiLmNvbmNhdCh0LFwiYCBvZiB2YWx1ZSBgXCIpLmNvbmNhdChyLFwiYCBzdXBwbGllZCB0byBgXCIpLmNvbmNhdChuLFwiYCwgZXhwZWN0ZWQgb25lIG9mIFtcIikuY29uY2F0KG8ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4nXCInLmNvbmNhdChlLCdcIicpfSkpLmpvaW4oXCIsIFwiKSxcIl0uXCIpKTpudWxsfTtBZS5pc1JlcXVpcmVkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lW3RdO3JldHVybiByP0FlKGUsdCxuKTpuZXcgRXJyb3IoXCJUaGUgcHJvcCBgXCIuY29uY2F0KHQsXCJgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCBpbiBgXCIpLmNvbmNhdChuLFwiYCwgYnV0IGl0cyB2YWx1ZSBpcyBgXCIpLmNvbmNhdChyLFwiYC5cIikpfTt2YXIgRGU9e2FjdGl2ZVN0YXJ0RGF0ZTphKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLGhvdmVyOmEoKS5pbnN0YW5jZU9mKERhdGUpLGxvY2FsZTphKCkuc3RyaW5nLG1heERhdGU6UmUsbWluRGF0ZTpWZSxvbkNsaWNrOmEoKS5mdW5jLG9uTW91c2VPdmVyOmEoKS5mdW5jLHRpbGVDbGFzc05hbWU6YSgpLm9uZU9mVHlwZShbYSgpLmZ1bmMsa2VdKSx0aWxlQ29udGVudDphKCkub25lT2ZUeXBlKFthKCkuZnVuYyxhKCkubm9kZV0pLHZhbHVlOlplLHZhbHVlVHlwZTphKCkuc3RyaW5nfSxCZT17YWN0aXZlU3RhcnREYXRlOmEoKS5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsY2xhc3NlczphKCkuYXJyYXlPZihhKCkuc3RyaW5nKS5pc1JlcXVpcmVkLGRhdGU6YSgpLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxsb2NhbGU6YSgpLnN0cmluZyxtYXhEYXRlOlJlLG1pbkRhdGU6VmUsb25DbGljazphKCkuZnVuYyxvbk1vdXNlT3ZlcjphKCkuZnVuYyxzdHlsZTphKCkub2JqZWN0T2YoYSgpLm9uZU9mVHlwZShbYSgpLnN0cmluZyxhKCkubnVtYmVyXSkpLHRpbGVDbGFzc05hbWU6YSgpLm9uZU9mVHlwZShbYSgpLmZ1bmMsa2VdKSx0aWxlQ29udGVudDphKCkub25lT2ZUeXBlKFthKCkuZnVuYyxhKCkubm9kZV0pLHRpbGVEaXNhYmxlZDphKCkuZnVuY30sJGU9XCJyZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvblwiO2Z1bmN0aW9uIEZlKGUpe3ZhciB0LG49ZS5hY3RpdmVTdGFydERhdGUscj1lLmRyaWxsVXAsaT1lLmZvcm1hdE1vbnRoWWVhcixhPXZvaWQgMD09PWk/c2U6aSxsPWUuZm9ybWF0WWVhcixjPXZvaWQgMD09PWw/ZmU6bCxzPWUubG9jYWxlLHU9ZS5tYXhEYXRlLGQ9ZS5taW5EYXRlLGY9ZS5uYXZpZ2F0aW9uQXJpYUxhYmVsLEM9dm9pZCAwPT09Zj9cIlwiOmYsaD1lLm5hdmlnYXRpb25BcmlhTGl2ZSx2PWUubmF2aWdhdGlvbkxhYmVsLGc9ZS5uZXh0MkFyaWFMYWJlbCxtPXZvaWQgMD09PWc/XCJcIjpnLHc9ZS5uZXh0MkxhYmVsLHk9dm9pZCAwPT09dz9cIsK7XCI6dyxiPWUubmV4dEFyaWFMYWJlbCxPPXZvaWQgMD09PWI/XCJcIjpiLEw9ZS5uZXh0TGFiZWwsaj12b2lkIDA9PT1MP1wi4oC6XCI6TCxTPWUucHJldjJBcmlhTGFiZWwsUD12b2lkIDA9PT1TP1wiXCI6UyxrPWUucHJldjJMYWJlbCxWPXZvaWQgMD09PWs/XCLCq1wiOmssST1lLnByZXZBcmlhTGFiZWwsWj12b2lkIDA9PT1JP1wiXCI6SSxBPWUucHJldkxhYmVsLEQ9dm9pZCAwPT09QT9cIuKAuVwiOkEsQj1lLnNldEFjdGl2ZVN0YXJ0RGF0ZSxGPWUuc2hvd0RvdWJsZVZpZXcsTj1lLnZpZXcsVz1lLnZpZXdzLmluZGV4T2YoTik+MCxHPVwiY2VudHVyeVwiIT09TixVPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4geCh0KTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gRSh0KTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIFIodCk7Y2FzZVwibW9udGhcIjpyZXR1cm4gJCh0KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VUeXBlOiBcIi5jb25jYXQoZSkpfX0oTixuKSxxPUcmJnllKE4sbiksWT13ZShOLG4pLEs9RyYmYmUoTixuKSxYPWZ1bmN0aW9uKCl7aWYoVS5nZXRGdWxsWWVhcigpPDApcmV0dXJuITA7dmFyIGU9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZVwiY2VudHVyeVwiOnJldHVybiBfKHQpO2Nhc2VcImRlY2FkZVwiOnJldHVybiBIKHQpO2Nhc2VcInllYXJcIjpyZXR1cm4gVCh0KTtjYXNlXCJtb250aFwiOnJldHVybiB6KHQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByYW5nZVR5cGU6IFwiLmNvbmNhdChlKSl9fShOLG4pO3JldHVybiBkJiZkPj1lfSgpLFE9RyYmZnVuY3Rpb24oKXtpZihxLmdldEZ1bGxZZWFyKCk8MClyZXR1cm4hMDt2YXIgZT1PZShOLG4pO3JldHVybiBkJiZkPj1lfSgpLEo9dSYmdTxZLGVlPUcmJnUmJnU8SztmdW5jdGlvbiB0ZShlKXt2YXIgdD1mdW5jdGlvbigpe3N3aXRjaChOKXtjYXNlXCJjZW50dXJ5XCI6cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gX2UoZSx0LE0obikpfShzLGMsZSk7Y2FzZVwiZGVjYWRlXCI6cmV0dXJuIE1lKHMsYyxlKTtjYXNlXCJ5ZWFyXCI6cmV0dXJuIGMocyxlKTtjYXNlXCJtb250aFwiOnJldHVybiBhKHMsZSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHZpZXc6IFwiLmNvbmNhdChOLFwiLlwiKSl9fSgpO3JldHVybiB2P3Yoe2RhdGU6ZSxsYWJlbDp0LGxvY2FsZTpzfHxwKCksdmlldzpOfSk6dH1yZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOiRlfSxudWxsIT09ViYmRyYmbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6UCxjbGFzc05hbWU6XCJcIi5jb25jYXQoJGUsXCJfX2Fycm93IFwiKS5jb25jYXQoJGUsXCJfX3ByZXYyLWJ1dHRvblwiKSxkaXNhYmxlZDpRLG9uQ2xpY2s6ZnVuY3Rpb24oKXtCKHEsXCJwcmV2MlwiKX0sdHlwZTpcImJ1dHRvblwifSxWKSxudWxsIT09RCYmbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6WixjbGFzc05hbWU6XCJcIi5jb25jYXQoJGUsXCJfX2Fycm93IFwiKS5jb25jYXQoJGUsXCJfX3ByZXYtYnV0dG9uXCIpLGRpc2FibGVkOlgsb25DbGljazpmdW5jdGlvbigpe0IoVSxcInByZXZcIil9LHR5cGU6XCJidXR0b25cIn0sRCksKHQ9XCJcIi5jb25jYXQoJGUsXCJfX2xhYmVsXCIpLG8oKS5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse1wiYXJpYS1sYWJlbFwiOkMsXCJhcmlhLWxpdmVcIjpoLGNsYXNzTmFtZTp0LGRpc2FibGVkOiFXLG9uQ2xpY2s6cixzdHlsZTp7ZmxleEdyb3c6MX0sdHlwZTpcImJ1dHRvblwifSxvKCkuY3JlYXRlRWxlbWVudChcInNwYW5cIix7Y2xhc3NOYW1lOlwiXCIuY29uY2F0KHQsXCJfX2xhYmVsVGV4dCBcIikuY29uY2F0KHQsXCJfX2xhYmVsVGV4dC0tZnJvbVwiKX0sdGUobikpLEYmJm8oKS5jcmVhdGVFbGVtZW50KG8oKS5GcmFnbWVudCxudWxsLG8oKS5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtjbGFzc05hbWU6XCJcIi5jb25jYXQodCxcIl9fZGl2aWRlclwiKX0sXCIg4oCTIFwiKSxvKCkuY3JlYXRlRWxlbWVudChcInNwYW5cIix7Y2xhc3NOYW1lOlwiXCIuY29uY2F0KHQsXCJfX2xhYmVsVGV4dCBcIikuY29uY2F0KHQsXCJfX2xhYmVsVGV4dC0tdG9cIil9LHRlKFkpKSkpKSxudWxsIT09aiYmbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6TyxjbGFzc05hbWU6XCJcIi5jb25jYXQoJGUsXCJfX2Fycm93IFwiKS5jb25jYXQoJGUsXCJfX25leHQtYnV0dG9uXCIpLGRpc2FibGVkOkosb25DbGljazpmdW5jdGlvbigpe0IoWSxcIm5leHRcIil9LHR5cGU6XCJidXR0b25cIn0saiksbnVsbCE9PXkmJkcmJm8oKS5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse1wiYXJpYS1sYWJlbFwiOm0sY2xhc3NOYW1lOlwiXCIuY29uY2F0KCRlLFwiX19hcnJvdyBcIikuY29uY2F0KCRlLFwiX19uZXh0Mi1idXR0b25cIiksZGlzYWJsZWQ6ZWUsb25DbGljazpmdW5jdGlvbigpe0IoSyxcIm5leHQyXCIpfSx0eXBlOlwiYnV0dG9uXCJ9LHkpKX1GZS5wcm9wVHlwZXM9e2FjdGl2ZVN0YXJ0RGF0ZTphKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLGRyaWxsVXA6YSgpLmZ1bmMuaXNSZXF1aXJlZCxmb3JtYXRNb250aFllYXI6YSgpLmZ1bmMsZm9ybWF0WWVhcjphKCkuZnVuYyxsb2NhbGU6YSgpLnN0cmluZyxtYXhEYXRlOmEoKS5pbnN0YW5jZU9mKERhdGUpLG1pbkRhdGU6YSgpLmluc3RhbmNlT2YoRGF0ZSksbmF2aWdhdGlvbkFyaWFMYWJlbDphKCkuc3RyaW5nLG5hdmlnYXRpb25BcmlhTGl2ZTphKCkuc3RyaW5nLG5hdmlnYXRpb25MYWJlbDphKCkuZnVuYyxuZXh0MkFyaWFMYWJlbDphKCkuc3RyaW5nLG5leHQyTGFiZWw6YSgpLm5vZGUsbmV4dEFyaWFMYWJlbDphKCkuc3RyaW5nLG5leHRMYWJlbDphKCkubm9kZSxwcmV2MkFyaWFMYWJlbDphKCkuc3RyaW5nLHByZXYyTGFiZWw6YSgpLm5vZGUscHJldkFyaWFMYWJlbDphKCkuc3RyaW5nLHByZXZMYWJlbDphKCkubm9kZSxzZXRBY3RpdmVTdGFydERhdGU6YSgpLmZ1bmMuaXNSZXF1aXJlZCxzaG93RG91YmxlVmlldzphKCkuYm9vbCx2aWV3OkFlLmlzUmVxdWlyZWQsdmlld3M6VGUuaXNSZXF1aXJlZH07dmFyIE5lPVtcImNoaWxkcmVuXCIsXCJjbGFzc05hbWVcIixcImRpcmVjdGlvblwiLFwiY291bnRcIixcIm9mZnNldFwiLFwic3R5bGVcIixcIndyYXBcIl07ZnVuY3Rpb24gemUoKXtyZXR1cm4gemU9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSx6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gV2UoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIEdlKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1dlKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7VWUoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOldlKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIFVlKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBxZShlKXtyZXR1cm5cIlwiLmNvbmNhdChlLFwiJVwiKX1mdW5jdGlvbiBZZShlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5jbGFzc05hbWUscj1lLmRpcmVjdGlvbixpPWUuY291bnQsYT1lLm9mZnNldCxsPWUuc3R5bGUsYz1lLndyYXAscz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsTmUpO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHplKHtjbGFzc05hbWU6bixzdHlsZTpHZSh7ZGlzcGxheTpcImZsZXhcIixmbGV4RGlyZWN0aW9uOnIsZmxleFdyYXA6Yz9cIndyYXBcIjpcIm5vLXdyYXBcIn0sbCl9LHMpLG8oKS5DaGlsZHJlbi5tYXAodCwoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbygpLmNsb25lRWxlbWVudChlLEdlKEdlKHt9LGUucHJvcHMpLHt9LHtzdHlsZTp7ZmxleEJhc2lzOnFlKDEwMC9pKSxmbGV4U2hyaW5rOjAsZmxleEdyb3c6MCxvdmVyZmxvdzpcImhpZGRlblwiLG1hcmdpbkxlZnQ6YSYmMD09PXQ/cWUoMTAwKmEvaSk6bnVsbH19KSl9KSkpfWZ1bmN0aW9uIEtlKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBYZShlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVtcIkBAaXRlcmF0b3JcIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBYZShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm5cIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4/QXJyYXkuZnJvbShlKTpcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/WGUoZSx0KTp2b2lkIDB9fShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBYZShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIFFlKGUsdCl7cmV0dXJuIHRbMF08PWUmJnRbMV0+PWV9ZnVuY3Rpb24gSmUoZSx0KXtyZXR1cm4gUWUoZVswXSx0KXx8UWUoZVsxXSx0KX1mdW5jdGlvbiBldChlLHQsbil7dmFyIHI9W107aWYoSmUodCxlKSl7ci5wdXNoKG4pO3ZhciBvPVFlKGVbMF0sdCksaT1RZShlWzFdLHQpO28mJnIucHVzaChcIlwiLmNvbmNhdChuLFwiU3RhcnRcIikpLGkmJnIucHVzaChcIlwiLmNvbmNhdChuLFwiRW5kXCIpKSxvJiZpJiZyLnB1c2goXCJcIi5jb25jYXQobixcIkJvdGhFbmRzXCIpKX1yZXR1cm4gcn1mdW5jdGlvbiB0dCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSx0PWUudmFsdWUsbj1lLnZhbHVlVHlwZSxyPWUuZGF0ZSxvPWUuZGF0ZVR5cGUsaT1lLmhvdmVyLGE9XCJyZWFjdC1jYWxlbmRhcl9fdGlsZVwiLGw9W2FdO2lmKCFyKXJldHVybiBsO2lmKCFBcnJheS5pc0FycmF5KHIpJiYhbyl0aHJvdyBuZXcgRXJyb3IoXCJnZXRUaWxlQ2xhc3NlcygpOiBVbmFibGUgdG8gZ2V0IHRpbGUgYWN0aXZpdHkgY2xhc3NlcyBiZWNhdXNlIG9uZSBvciBtb3JlIHJlcXVpcmVkIGFyZ3VtZW50cyB3ZXJlIG5vdCBwYXNzZWQuXCIpO3ZhciBjPW5ldyBEYXRlLHM9QXJyYXkuaXNBcnJheShyKT9yOkxlKG8scik7aWYoUWUoYyxzKSYmbC5wdXNoKFwiXCIuY29uY2F0KGEsXCItLW5vd1wiKSksIXQpcmV0dXJuIGw7aWYoIUFycmF5LmlzQXJyYXkodCkmJiFuKXRocm93IG5ldyBFcnJvcihcImdldFRpbGVDbGFzc2VzKCk6IFVuYWJsZSB0byBnZXQgdGlsZSBhY3Rpdml0eSBjbGFzc2VzIGJlY2F1c2Ugb25lIG9yIG1vcmUgcmVxdWlyZWQgYXJndW1lbnRzIHdlcmUgbm90IHBhc3NlZC5cIik7dmFyIHUsZCxmPUFycmF5LmlzQXJyYXkodCk/dDpMZShuLHQpO2Q9cywodT1mKVswXTw9ZFswXSYmdVsxXT49ZFsxXT9sLnB1c2goXCJcIi5jb25jYXQoYSxcIi0tYWN0aXZlXCIpKTpKZShmLHMpJiZsLnB1c2goXCJcIi5jb25jYXQoYSxcIi0taGFzQWN0aXZlXCIpKTt2YXIgcD1ldChmLHMsXCJcIi5jb25jYXQoYSxcIi0tcmFuZ2VcIikpO2wucHVzaC5hcHBseShsLEtlKHApKTt2YXIgQz1bXS5jb25jYXQodCk7aWYoaSYmMT09PUMubGVuZ3RoKXt2YXIgaD1ldChpPmZbMF0/W2ZbMF0saV06W2ksZlswXV0scyxcIlwiLmNvbmNhdChhLFwiLS1ob3ZlclwiKSk7bC5wdXNoLmFwcGx5KGwsS2UoaCkpfXJldHVybiBsfVllLnByb3BUeXBlcz17Y2hpbGRyZW46YSgpLm5vZGUsY2xhc3NOYW1lOmEoKS5zdHJpbmcsY291bnQ6YSgpLm51bWJlci5pc1JlcXVpcmVkLGRpcmVjdGlvbjphKCkuc3RyaW5nLG9mZnNldDphKCkubnVtYmVyLHN0eWxlOmEoKS5vYmplY3RPZihhKCkub25lT2ZUeXBlKFthKCkuc3RyaW5nLGEoKS5udW1iZXJdKSksd3JhcDphKCkuYm9vbH07dmFyIG50PVtcImNsYXNzTmFtZVwiLFwiY291bnRcIixcImRhdGVUcmFuc2Zvcm1cIixcImRhdGVUeXBlXCIsXCJlbmRcIixcImhvdmVyXCIsXCJvZmZzZXRcIixcInN0YXJ0XCIsXCJzdGVwXCIsXCJ0aWxlXCIsXCJ2YWx1ZVwiLFwidmFsdWVUeXBlXCJdO2Z1bmN0aW9uIHJ0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBvdChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9ydChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2l0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpydChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBpdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gYXQoKXtyZXR1cm4gYXQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxhdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbHQoZSl7Zm9yKHZhciB0PWUuY2xhc3NOYW1lLG49ZS5jb3VudCxyPXZvaWQgMD09PW4/MzpuLGk9ZS5kYXRlVHJhbnNmb3JtLGE9ZS5kYXRlVHlwZSxsPWUuZW5kLGM9ZS5ob3ZlcixzPWUub2Zmc2V0LHU9ZS5zdGFydCxkPWUuc3RlcCxmPXZvaWQgMD09PWQ/MTpkLHA9ZS50aWxlLEM9ZS52YWx1ZSxoPWUudmFsdWVUeXBlLHY9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLG50KSxnPVtdLG09dTttPD1sO20rPWYpe3ZhciB3PWkobSk7Zy5wdXNoKG8oKS5jcmVhdGVFbGVtZW50KHAsYXQoe2tleTp3LmdldFRpbWUoKSxjbGFzc2VzOnR0KHt2YWx1ZTpDLHZhbHVlVHlwZTpoLGRhdGU6dyxkYXRlVHlwZTphLGhvdmVyOmN9KSxkYXRlOncscG9pbnQ6bX0sdikpKX1yZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoWWUse2NsYXNzTmFtZTp0LGNvdW50OnIsb2Zmc2V0OnMsd3JhcDohMH0sZyl9ZnVuY3Rpb24gY3QoZSl7cmV0dXJuIGN0PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LGN0KGUpfWZ1bmN0aW9uIHN0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiB1dChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9zdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2h0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpzdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBkdChlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24gZnQoZSx0KXtyZXR1cm4gZnQ9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxmdChlLHQpfWZ1bmN0aW9uIHB0KGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiBlfWZ1bmN0aW9uIEN0KGUpe3JldHVybiBDdD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sQ3QoZSl9ZnVuY3Rpb24gaHQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHZ0KGUsdCl7cmV0dXJuIGUmJiF0fHwhZSYmdHx8ZSYmdCYmZS5nZXRUaW1lKCkhPT10LmdldFRpbWUoKX1mdW5jdGlvbiBndChlLHQpe3ZhciBuPWUuYWN0aXZlU3RhcnREYXRlLHI9ZS5kYXRlLG89ZS52aWV3O3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dCh7YWN0aXZlU3RhcnREYXRlOm4sZGF0ZTpyLHZpZXc6b30pOnR9bHQucHJvcFR5cGVzPW90KG90KHt9LERlKSx7fSx7YWN0aXZlU3RhcnREYXRlOmEoKS5pbnN0YW5jZU9mKERhdGUpLGNvdW50OmEoKS5udW1iZXIsZGF0ZVRyYW5zZm9ybTphKCkuZnVuYy5pc1JlcXVpcmVkLGRhdGVUeXBlOmEoKS5zdHJpbmcsb2Zmc2V0OmEoKS5udW1iZXIsc3RlcDphKCkubnVtYmVyLHRpbGU6YSgpLmZ1bmMuaXNSZXF1aXJlZH0pO3ZhciBtdD1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksdCYmZnQoZSx0KX0ocyxlKTt2YXIgdCxuLHIsaSxhLGw9KGk9cyxhPWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZnVuY3Rpb24oKXt2YXIgZSx0PUN0KGkpO2lmKGEpe3ZhciBuPUN0KHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QodCxhcmd1bWVudHMsbil9ZWxzZSBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJihcIm9iamVjdFwiPT09Y3QodCl8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBwdChlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIHMoKXt2YXIgZTshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLHMpO2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09YXJndW1lbnRzW3JdO3JldHVybiBodChwdChlPWwuY2FsbC5hcHBseShsLFt0aGlzXS5jb25jYXQobikpKSxcInN0YXRlXCIse30pLGV9cmV0dXJuIHQ9cyxyPVt7a2V5OlwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmFjdGl2ZVN0YXJ0RGF0ZSxyPWUudGlsZUNsYXNzTmFtZSxvPWUudGlsZUNvbnRlbnQsaT17fTtyZXR1cm4ociE9PXQudGlsZUNsYXNzTmFtZVByb3BzfHx2dChuLHQuYWN0aXZlU3RhcnREYXRlUHJvcHMpKSYmKGkudGlsZUNsYXNzTmFtZT1ndChlLHIpLGkudGlsZUNsYXNzTmFtZVByb3BzPXIpLChvIT09dC50aWxlQ29udGVudFByb3BzfHx2dChuLHQuYWN0aXZlU3RhcnREYXRlUHJvcHMpKSYmKGkudGlsZUNvbnRlbnQ9Z3QoZSxvKSxpLnRpbGVDb250ZW50UHJvcHM9byksaS5hY3RpdmVTdGFydERhdGVQcm9wcz1uLGl9fV0sKG49W3trZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmFjdGl2ZVN0YXJ0RGF0ZSxuPWUuY2hpbGRyZW4scj1lLmNsYXNzZXMsaT1lLmRhdGUsYT1lLmZvcm1hdEFiYnIsbD1lLmxvY2FsZSxzPWUubWF4RGF0ZSx1PWUubWF4RGF0ZVRyYW5zZm9ybSxkPWUubWluRGF0ZSxmPWUubWluRGF0ZVRyYW5zZm9ybSxwPWUub25DbGljayxDPWUub25Nb3VzZU92ZXIsaD1lLnN0eWxlLHY9ZS50aWxlRGlzYWJsZWQsZz1lLnZpZXcsbT10aGlzLnN0YXRlLHc9bS50aWxlQ2xhc3NOYW1lLHk9bS50aWxlQ29udGVudDtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7Y2xhc3NOYW1lOmMocix3KSxkaXNhYmxlZDpkJiZmKGQpPml8fHMmJnUocyk8aXx8diYmdih7YWN0aXZlU3RhcnREYXRlOnQsZGF0ZTppLHZpZXc6Z30pLG9uQ2xpY2s6cCYmZnVuY3Rpb24oZSl7cmV0dXJuIHAoaSxlKX0sb25Gb2N1czpDJiZmdW5jdGlvbigpe3JldHVybiBDKGkpfSxvbk1vdXNlT3ZlcjpDJiZmdW5jdGlvbigpe3JldHVybiBDKGkpfSxzdHlsZTpoLHR5cGU6XCJidXR0b25cIn0sYT9vKCkuY3JlYXRlRWxlbWVudChcImFiYnJcIix7XCJhcmlhLWxhYmVsXCI6YShsLGkpfSxuKTpuLHkpfX1dKSYmZHQodC5wcm90b3R5cGUsbiksciYmZHQodCxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInByb3RvdHlwZVwiLHt3cml0YWJsZTohMX0pLHN9KHIuQ29tcG9uZW50KTttdC5wcm9wVHlwZXM9dXQodXQoe30sQmUpLHt9LHtjaGlsZHJlbjphKCkubm9kZS5pc1JlcXVpcmVkLGZvcm1hdEFiYnI6YSgpLmZ1bmMsbWF4RGF0ZVRyYW5zZm9ybTphKCkuZnVuYy5pc1JlcXVpcmVkLG1pbkRhdGVUcmFuc2Zvcm06YSgpLmZ1bmMuaXNSZXF1aXJlZH0pO3ZhciB3dD1bXCJjbGFzc2VzXCIsXCJmb3JtYXRZZWFyXCJdO2Z1bmN0aW9uIHl0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBidChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj95dChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3h0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTp5dChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiB4dChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gT3QoKXtyZXR1cm4gT3Q9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxPdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIEx0PVwicmVhY3QtY2FsZW5kYXJfX2NlbnR1cnktdmlld19fZGVjYWRlc19fZGVjYWRlXCI7ZnVuY3Rpb24gX3QoZSl7dmFyIHQ9ZS5jbGFzc2VzLG49ZS5mb3JtYXRZZWFyLHI9dm9pZCAwPT09bj9mZTpuLGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLHd0KSxhPWkuZGF0ZSxsPWkubG9jYWxlO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChtdCxPdCh7fSxpLHtjbGFzc2VzOltdLmNvbmNhdCh0LEx0KSxtYXhEYXRlVHJhbnNmb3JtOlAsbWluRGF0ZVRyYW5zZm9ybTpqLHZpZXc6XCJjZW50dXJ5XCJ9KSxNZShsLHIsYSkpfWZ1bmN0aW9uIE10KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBqdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gRXQoKXtyZXR1cm4gRXQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxFdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gU3QoZSl7dmFyIHQ9bShiKGUuYWN0aXZlU3RhcnREYXRlKSksbj10Kzk5O3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChsdCxFdCh7fSxlLHtjbGFzc05hbWU6XCJyZWFjdC1jYWxlbmRhcl9fY2VudHVyeS12aWV3X19kZWNhZGVzXCIsZGF0ZVRyYW5zZm9ybTpqLGRhdGVUeXBlOlwiZGVjYWRlXCIsZW5kOm4sc3RhcnQ6dCxzdGVwOjEwLHRpbGU6X3R9KSl9ZnVuY3Rpb24gUHQoZSl7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX19jZW50dXJ5LXZpZXdcIn0sbygpLmNyZWF0ZUVsZW1lbnQoU3QsZSkpfV90LnByb3BUeXBlcz1idChidCh7fSxCZSkse30se2Zvcm1hdFllYXI6YSgpLmZ1bmN9KSxTdC5wcm9wVHlwZXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/TXQoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtqdChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6TXQoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9KHt9LERlKTt2YXIgSHQ9W1wiY2xhc3Nlc1wiLFwiZm9ybWF0WWVhclwiXTtmdW5jdGlvbiBrdChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gVnQoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/a3QoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtSdChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6a3QoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gUnQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIEl0KCl7cmV0dXJuIEl0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sSXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBadD1cInJlYWN0LWNhbGVuZGFyX19kZWNhZGUtdmlld19feWVhcnNfX3llYXJcIjtmdW5jdGlvbiBUdChlKXt2YXIgdD1lLmNsYXNzZXMsbj1lLmZvcm1hdFllYXIscj12b2lkIDA9PT1uP2ZlOm4saT1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsSHQpLGE9aS5kYXRlLGw9aS5sb2NhbGU7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KG10LEl0KHt9LGkse2NsYXNzZXM6W10uY29uY2F0KHQsWnQpLG1heERhdGVUcmFuc2Zvcm06WixtaW5EYXRlVHJhbnNmb3JtOlYsdmlldzpcImRlY2FkZVwifSkscihsLGEpKX1mdW5jdGlvbiBBdChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gRHQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIEJ0KCl7cmV0dXJuIEJ0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sQnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uICR0KGUpe3ZhciB0PW0oaihlLmFjdGl2ZVN0YXJ0RGF0ZSkpLG49dCs5O3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChsdCxCdCh7fSxlLHtjbGFzc05hbWU6XCJyZWFjdC1jYWxlbmRhcl9fZGVjYWRlLXZpZXdfX3llYXJzXCIsZGF0ZVRyYW5zZm9ybTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgRGF0ZTtyZXR1cm4gdC5zZXRGdWxsWWVhcihlLDAsMSksdC5zZXRIb3VycygwLDAsMCwwKSx0fSxkYXRlVHlwZTpcInllYXJcIixlbmQ6bixzdGFydDp0LHRpbGU6VHR9KSl9ZnVuY3Rpb24gRnQoZSl7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX19kZWNhZGUtdmlld1wifSxvKCkuY3JlYXRlRWxlbWVudCgkdCxlKSl9VHQucHJvcFR5cGVzPVZ0KFZ0KHt9LEJlKSx7fSx7Zm9ybWF0WWVhcjphKCkuZnVuY30pLCR0LnByb3BUeXBlcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9BdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe0R0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpBdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX0oe30sRGUpO3ZhciBOdD1bXCJjbGFzc2VzXCIsXCJmb3JtYXRNb250aFwiLFwiZm9ybWF0TW9udGhZZWFyXCJdO2Z1bmN0aW9uIHp0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBXdChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj96dChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe0d0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTp6dChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBHdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gVXQoKXtyZXR1cm4gVXQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxVdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIHF0PVwicmVhY3QtY2FsZW5kYXJfX3llYXItdmlld19fbW9udGhzX19tb250aFwiO2Z1bmN0aW9uIFl0KGUpe3ZhciB0PWUuY2xhc3NlcyxuPWUuZm9ybWF0TW9udGgscj12b2lkIDA9PT1uP2NlOm4saT1lLmZvcm1hdE1vbnRoWWVhcixhPXZvaWQgMD09PWk/c2U6aSxsPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxOdCksYz1sLmRhdGUscz1sLmxvY2FsZTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQobXQsVXQoe30sbCx7Y2xhc3NlczpbXS5jb25jYXQodCxxdCksZm9ybWF0QWJicjphLG1heERhdGVUcmFuc2Zvcm06TixtaW5EYXRlVHJhbnNmb3JtOkIsdmlldzpcInllYXJcIn0pLHIocyxjKSl9ZnVuY3Rpb24gS3QoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFh0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP0t0KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7UXQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOkt0KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIFF0KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBKdCgpe3JldHVybiBKdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LEp0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBlbihlKXt2YXIgdD1tKGUuYWN0aXZlU3RhcnREYXRlKTtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQobHQsSnQoe30sZSx7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX3llYXItdmlld19fbW9udGhzXCIsZGF0ZVRyYW5zZm9ybTpmdW5jdGlvbihlKXt2YXIgbj1uZXcgRGF0ZTtyZXR1cm4gbi5zZXRGdWxsWWVhcih0LGUsMSksbi5zZXRIb3VycygwLDAsMCwwKSxufSxkYXRlVHlwZTpcIm1vbnRoXCIsZW5kOjExLHN0YXJ0OjAsdGlsZTpZdH0pKX1mdW5jdGlvbiB0bihlKXtyZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX3llYXItdmlld1wifSxvKCkuY3JlYXRlRWxlbWVudChlbixlKSl9WXQucHJvcFR5cGVzPVd0KFd0KHt9LEJlKSx7fSx7Zm9ybWF0TW9udGg6YSgpLmZ1bmMsZm9ybWF0TW9udGhZZWFyOmEoKS5mdW5jfSksZW4ucHJvcFR5cGVzPVh0KFh0KHt9LERlKSx7fSx7bG9jYWxlOmEoKS5zdHJpbmd9KTt2YXIgbm49W1wiZm9ybWF0RGF5XCIsXCJmb3JtYXRMb25nRGF0ZVwiLFwiY2FsZW5kYXJUeXBlXCIsXCJjbGFzc2VzXCIsXCJjdXJyZW50TW9udGhJbmRleFwiXTtmdW5jdGlvbiBybihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/cm4oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXthbihlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6cm4oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gYW4oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIGxuKCl7cmV0dXJuIGxuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBjbj1cInJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzX19kYXlcIjtmdW5jdGlvbiBzbihlKXt2YXIgdD1lLmZvcm1hdERheSxuPXZvaWQgMD09PXQ/YWU6dCxyPWUuZm9ybWF0TG9uZ0RhdGUsaT12b2lkIDA9PT1yP2xlOnIsYT1lLmNhbGVuZGFyVHlwZSxsPWUuY2xhc3NlcyxjPWUuY3VycmVudE1vbnRoSW5kZXgscz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsbm4pLHU9cy5kYXRlLGQ9cy5sb2NhbGU7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KG10LGxuKHt9LHMse2NsYXNzZXM6W10uY29uY2F0KGwsY24samUodSxhKT9cIlwiLmNvbmNhdChjbixcIi0td2Vla2VuZFwiKTpudWxsLHUuZ2V0TW9udGgoKSE9PWM/XCJcIi5jb25jYXQoY24sXCItLW5laWdoYm9yaW5nTW9udGhcIik6bnVsbCksZm9ybWF0QWJicjppLG1heERhdGVUcmFuc2Zvcm06WSxtaW5EYXRlVHJhbnNmb3JtOlUsdmlldzpcIm1vbnRoXCJ9KSxuKGQsdSkpfXNuLnByb3BUeXBlcz1vbihvbih7fSxCZSkse30se2N1cnJlbnRNb250aEluZGV4OmEoKS5udW1iZXIuaXNSZXF1aXJlZCxmb3JtYXREYXk6YSgpLmZ1bmMsZm9ybWF0TG9uZ0RhdGU6YSgpLmZ1bmN9KTt2YXIgdW49W1wic2hvd0ZpeGVkTnVtYmVyT2ZXZWVrc1wiLFwic2hvd05laWdoYm9yaW5nTW9udGhcIl07ZnVuY3Rpb24gZG4oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGZuKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBwbigpe3JldHVybiBwbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LHBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBDbihlKXt2YXIgdD1lLmFjdGl2ZVN0YXJ0RGF0ZSxuPWUuY2FsZW5kYXJUeXBlLHI9ZS5zaG93Rml4ZWROdW1iZXJPZldlZWtzLGk9ZS5zaG93TmVpZ2hib3JpbmdNb250aCxhPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSx1biksbD1tKHQpLGM9dyh0KSxzPXJ8fGksdT12ZSh0LG4pLGQ9cz8wOnUsZj0xKyhzPy11OjApLHA9ZnVuY3Rpb24oKXtpZihyKXJldHVybiBmKzQyLTE7dmFyIGU9WCh0KTtpZihpKXt2YXIgbz1uZXcgRGF0ZTtyZXR1cm4gby5zZXRGdWxsWWVhcihsLGMsZSksby5zZXRIb3VycygwLDAsMCwwKSxlKyg3LXZlKG8sbiktMSl9cmV0dXJuIGV9KCk7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KGx0LHBuKHt9LGEse2NsYXNzTmFtZTpcInJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzXCIsY291bnQ6NyxjdXJyZW50TW9udGhJbmRleDpjLGRhdGVUcmFuc2Zvcm06ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IERhdGU7cmV0dXJuIHQuc2V0RnVsbFllYXIobCxjLGUpLHQuc2V0SG91cnMoMCwwLDAsMCksdH0sZGF0ZVR5cGU6XCJkYXlcIixlbmQ6cCxvZmZzZXQ6ZCxzdGFydDpmLHRpbGU6c259KSl9Q24ucHJvcFR5cGVzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2RuKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm4oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmRuKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfSh7Y2FsZW5kYXJUeXBlOkhlLmlzUmVxdWlyZWQsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczphKCkuYm9vbCxzaG93TmVpZ2hib3JpbmdNb250aDphKCkuYm9vbH0sRGUpO3ZhciBobj1cInJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X193ZWVrZGF5c1wiLHZuPVwiXCIuY29uY2F0KGhuLFwiX193ZWVrZGF5XCIpO2Z1bmN0aW9uIGduKGUpe2Zvcih2YXIgdD1lLmNhbGVuZGFyVHlwZSxuPWUuZm9ybWF0U2hvcnRXZWVrZGF5LHI9dm9pZCAwPT09bj91ZTpuLGk9ZS5mb3JtYXRXZWVrZGF5LGE9dm9pZCAwPT09aT9kZTppLGw9ZS5sb2NhbGUscz1lLm9uTW91c2VMZWF2ZSx1PUIobmV3IERhdGUpLGQ9bSh1KSxmPXcodSkscD1bXSxDPTE7Qzw9NztDKz0xKXt2YXIgaD1uZXcgRGF0ZShkLGYsQy12ZSh1LHQpKSx2PWEobCxoKTtwLnB1c2gobygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7a2V5OkMsY2xhc3NOYW1lOmModm4samUoaCx0KSYmXCJcIi5jb25jYXQodm4sXCItLXdlZWtlbmRcIikpfSxvKCkuY3JlYXRlRWxlbWVudChcImFiYnJcIix7XCJhcmlhLWxhYmVsXCI6dix0aXRsZTp2fSxyKGwsaCkucmVwbGFjZShcIi5cIixcIlwiKSkpKX1yZXR1cm4gbygpLmNyZWF0ZUVsZW1lbnQoWWUse2NsYXNzTmFtZTpobixjb3VudDo3LG9uRm9jdXM6cyxvbk1vdXNlT3ZlcjpzfSxwKX1nbi5wcm9wVHlwZXM9e2NhbGVuZGFyVHlwZTpIZS5pc1JlcXVpcmVkLGZvcm1hdFNob3J0V2Vla2RheTphKCkuZnVuYyxmb3JtYXRXZWVrZGF5OmEoKS5mdW5jLGxvY2FsZTphKCkuc3RyaW5nLG9uTW91c2VMZWF2ZTphKCkuZnVuY307dmFyIG1uPVtcImRhdGVcIixcIm9uQ2xpY2tXZWVrTnVtYmVyXCIsXCJ3ZWVrTnVtYmVyXCJdO2Z1bmN0aW9uIHduKCl7cmV0dXJuIHduPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sd24uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHluKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBibihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIHhuPVwicmVhY3QtY2FsZW5kYXJfX3RpbGVcIjtmdW5jdGlvbiBPbihlKXt2YXIgdD1lLmRhdGUsbj1lLm9uQ2xpY2tXZWVrTnVtYmVyLHI9ZS53ZWVrTnVtYmVyLGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLG1uKSxhPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3luKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7Ym4oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnluKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfSh7Y2xhc3NOYW1lOnhufSxpKSxsPW8oKS5jcmVhdGVFbGVtZW50KFwic3BhblwiLG51bGwscik7cmV0dXJuIG4/bygpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix3bih7fSxhLHtvbkNsaWNrOmZ1bmN0aW9uKGUpe3JldHVybiBuKHIsdCxlKX0sdHlwZTpcImJ1dHRvblwifSksbCk6bygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIixhLGwpfWZ1bmN0aW9uIExuKGUpe3ZhciB0PWUuYWN0aXZlU3RhcnREYXRlLG49ZS5jYWxlbmRhclR5cGUscj1lLm9uQ2xpY2tXZWVrTnVtYmVyLGk9ZS5vbk1vdXNlTGVhdmUsYT1lLnNob3dGaXhlZE51bWJlck9mV2Vla3MsbD1mdW5jdGlvbigpe2lmKGEpcmV0dXJuIDY7dmFyIGU9WCh0KS0oNy12ZSh0LG4pKTtyZXR1cm4gMStNYXRoLmNlaWwoZS83KX0oKSxjPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPW0odCkscj13KHQpLG89eSh0KSxpPVtdLGE9MDthPGw7YSs9MSlpLnB1c2goZ2UobmV3IERhdGUoZSxyLG8rNyphKSxuKSk7cmV0dXJuIGl9KCkscz1jLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0LG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRlLklTT184NjAxLHI9bj09PXRlLlVTP3RlLlVTOnRlLklTT184NjAxLG89Z2UoZSxuKSxpPW0oZSkrMTtkb3t0PWdlKG5ldyBEYXRlKGksMCxyPT09dGUuSVNPXzg2MDE/NDoxKSxuKSxpLT0xfXdoaWxlKGU8dCk7cmV0dXJuIE1hdGgucm91bmQoKG8tdCkvNjA0OGU1KSsxfShlLG4pfSkpO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChZZSx7Y2xhc3NOYW1lOlwicmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtOdW1iZXJzXCIsY291bnQ6bCxkaXJlY3Rpb246XCJjb2x1bW5cIixvbkZvY3VzOmksb25Nb3VzZU92ZXI6aSxzdHlsZTp7ZmxleEJhc2lzOlwiY2FsYygxMDAlICogKDEgLyA4KVwiLGZsZXhTaHJpbms6MH19LHMubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChPbix7a2V5OmUsZGF0ZTpjW3RdLG9uQ2xpY2tXZWVrTnVtYmVyOnIsd2Vla051bWJlcjplfSl9KSkpfU9uLnByb3BUeXBlcz17ZGF0ZTphKCkuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLG9uQ2xpY2tXZWVrTnVtYmVyOmEoKS5mdW5jLHdlZWtOdW1iZXI6YSgpLm5vZGUuaXNSZXF1aXJlZH0sTG4ucHJvcFR5cGVzPXthY3RpdmVTdGFydERhdGU6YSgpLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxjYWxlbmRhclR5cGU6SGUuaXNSZXF1aXJlZCxvbkNsaWNrV2Vla051bWJlcjphKCkuZnVuYyxvbk1vdXNlTGVhdmU6YSgpLmZ1bmMsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczphKCkuYm9vbH07dmFyIF9uPVtcImNhbGVuZGFyVHlwZVwiLFwiZm9ybWF0U2hvcnRXZWVrZGF5XCIsXCJmb3JtYXRXZWVrZGF5XCIsXCJvbkNsaWNrV2Vla051bWJlclwiLFwic2hvd1dlZWtOdW1iZXJzXCJdO2Z1bmN0aW9uIE1uKCl7cmV0dXJuIE1uPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sTW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGpuKGUpe3ZhciB0PWUuYWN0aXZlU3RhcnREYXRlLG49ZS5sb2NhbGUscj1lLm9uTW91c2VMZWF2ZSxpPWUuc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrcyxhPWUuY2FsZW5kYXJUeXBlLGw9dm9pZCAwPT09YT9mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmtleXMobmUpLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiBuZVt0XS5pbmNsdWRlcyhlKX0pKXx8dGUuSVNPXzg2MDF9KG4pOmEscz1lLmZvcm1hdFNob3J0V2Vla2RheSx1PWUuZm9ybWF0V2Vla2RheSxkPWUub25DbGlja1dlZWtOdW1iZXIsZj1lLnNob3dXZWVrTnVtYmVycyxwPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxfbiksQz1cInJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3XCI7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpjKEMsZj9cIlwiLmNvbmNhdChDLFwiLS13ZWVrTnVtYmVyc1wiKTpcIlwiKX0sbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3R5bGU6e2Rpc3BsYXk6XCJmbGV4XCIsYWxpZ25JdGVtczpcImZsZXgtZW5kXCJ9fSxmP28oKS5jcmVhdGVFbGVtZW50KExuLHthY3RpdmVTdGFydERhdGU6dCxjYWxlbmRhclR5cGU6bCxvbkNsaWNrV2Vla051bWJlcjpkLG9uTW91c2VMZWF2ZTpyLHNob3dGaXhlZE51bWJlck9mV2Vla3M6aX0pOm51bGwsbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3R5bGU6e2ZsZXhHcm93OjEsd2lkdGg6XCIxMDAlXCJ9fSxvKCkuY3JlYXRlRWxlbWVudChnbix7Y2FsZW5kYXJUeXBlOmwsZm9ybWF0U2hvcnRXZWVrZGF5OnMsZm9ybWF0V2Vla2RheTp1LGxvY2FsZTpuLG9uTW91c2VMZWF2ZTpyfSksbygpLmNyZWF0ZUVsZW1lbnQoQ24sTW4oe2NhbGVuZGFyVHlwZTpsfSxwKSkpKSl9am4ucHJvcFR5cGVzPXthY3RpdmVTdGFydERhdGU6YSgpLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxjYWxlbmRhclR5cGU6SGUsZm9ybWF0U2hvcnRXZWVrZGF5OmEoKS5mdW5jLGZvcm1hdFdlZWtkYXk6YSgpLmZ1bmMsbG9jYWxlOmEoKS5zdHJpbmcsb25DbGlja1dlZWtOdW1iZXI6YSgpLmZ1bmMsb25Nb3VzZUxlYXZlOmEoKS5mdW5jLHNob3dGaXhlZE51bWJlck9mV2Vla3M6YSgpLmJvb2wsc2hvd1dlZWtOdW1iZXJzOmEoKS5ib29sfTt2YXIgRW49W1wiYWN0aXZlU3RhcnREYXRlXCIsXCJkZWZhdWx0QWN0aXZlU3RhcnREYXRlXCIsXCJkZWZhdWx0VmFsdWVcIixcImRlZmF1bHRWaWV3XCIsXCJtYXhEZXRhaWxcIixcIm1pbkRldGFpbFwiLFwidmFsdWVcIixcInZpZXdcIl07ZnVuY3Rpb24gU24oKXtyZXR1cm4gU249T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxTbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUG4oZSl7cmV0dXJuIFBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LFBuKGUpfWZ1bmN0aW9uIEhuKGUsdCl7cmV0dXJuIEhuPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sSG4oZSx0KX1mdW5jdGlvbiBrbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gZX1mdW5jdGlvbiBWbihlKXtyZXR1cm4gVm49T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LFZuKGUpfWZ1bmN0aW9uIFJuKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBJbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9SbihPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe1puKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpSbihPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBabihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gVG4oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgQW49bmV3IERhdGU7QW4uc2V0RnVsbFllYXIoMSwwLDEpLEFuLnNldEhvdXJzKDAsMCwwLDApO3ZhciBEbj1uZXcgRGF0ZSg4NjRlMTMpLEJuPVwicmVhY3QtY2FsZW5kYXJcIiwkbj1bXCJjZW50dXJ5XCIsXCJkZWNhZGVcIixcInllYXJcIixcIm1vbnRoXCJdLEZuPVtdLmNvbmNhdChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gVG4oZSl9KGUpfHxmdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbXCJAQGl0ZXJhdG9yXCJdKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gVG4oZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uP0FycmF5LmZyb20oZSk6XCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP1RuKGUsdCk6dm9pZCAwfX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9KCRuLnNsaWNlKDEpKSxbXCJkYXlcIl0pO2Z1bmN0aW9uIE5uKGUsdCl7cmV0dXJuICRuLnNsaWNlKCRuLmluZGV4T2YoZSksJG4uaW5kZXhPZih0KSsxKX1mdW5jdGlvbiB6bihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4tMSE9PU5uKHQsbikuaW5kZXhPZihlKX0oZSx0LG4pP2U6bn1mdW5jdGlvbiBXbihlKXtyZXR1cm4gRm5bJG4uaW5kZXhPZihlKV19ZnVuY3Rpb24gR24oZSx0KXt2YXIgbj1lLnZhbHVlLHI9ZS5taW5EYXRlLG89ZS5tYXhEYXRlLGk9ZS5tYXhEZXRhaWwsYT1mdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybiBudWxsO3ZhciBuPUFycmF5LmlzQXJyYXkoZSkmJjI9PT1lLmxlbmd0aD9lW3RdOmU7aWYoIW4pcmV0dXJuIG51bGw7dmFyIHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEYXRlP2U6bmV3IERhdGUoZSl9KG4pO2lmKGlzTmFOKHIuZ2V0VGltZSgpKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGRhdGU6IFwiLmNvbmNhdChlKSk7cmV0dXJuIHJ9KG4sdCk7aWYoIWEpcmV0dXJuIG51bGw7dmFyIGw9V24oaSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCYmdD5lP3Q6biYmbjxlP246ZX0oW21lLHhlXVt0XShsLGEpLHIsbyl9dmFyIFVuPWZ1bmN0aW9uKGUpe3JldHVybiBHbihlLDApfSxxbj1mdW5jdGlvbihlKXtyZXR1cm4gR24oZSwxKX0sWW49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS52YWx1ZTtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90OltVbixxbl0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdChlKX0pKX07ZnVuY3Rpb24gS24oZSl7dmFyIHQ9ZS5tYXhEYXRlLG49ZS5tYXhEZXRhaWwscj1lLm1pbkRhdGUsbz1lLm1pbkRldGFpbCxpPWUudmFsdWU7cmV0dXJuIG1lKHpuKGUudmlldyxvLG4pLFVuKHt2YWx1ZTppLG1pbkRhdGU6cixtYXhEYXRlOnQsbWF4RGV0YWlsOm59KXx8bmV3IERhdGUpfXZhciBYbj1mdW5jdGlvbihlKXtyZXR1cm4gZSYmMT09PVtdLmNvbmNhdChlKS5sZW5ndGh9LFFuPWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSx0JiZIbihlLHQpfShsLGUpO3ZhciB0LG4scixpLGE9KHI9bCxpPWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZnVuY3Rpb24oKXt2YXIgZSx0PVZuKHIpO2lmKGkpe3ZhciBuPVZuKHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QodCxhcmd1bWVudHMsbil9ZWxzZSBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJihcIm9iamVjdFwiPT09UG4odCl8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBrbihlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIGwoKXt2YXIgZTshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGwpO2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09YXJndW1lbnRzW3JdO3JldHVybiBabihrbihlPWEuY2FsbC5hcHBseShhLFt0aGlzXS5jb25jYXQobikpKSxcInN0YXRlXCIse2FjdGl2ZVN0YXJ0RGF0ZTplLnByb3BzLmRlZmF1bHRBY3RpdmVTdGFydERhdGUsdmFsdWU6ZS5wcm9wcy5kZWZhdWx0VmFsdWUsdmlldzplLnByb3BzLmRlZmF1bHRWaWV3fSksWm4oa24oZSksXCJzZXRTdGF0ZUFuZENhbGxDYWxsYmFja3NcIiwoZnVuY3Rpb24odCxuLHIpe3ZhciBvPWtuKGUpLGk9by5hY3RpdmVTdGFydERhdGUsYT1vLnZpZXcsbD1lLnByb3BzLGM9bC5hbGxvd1BhcnRpYWxSYW5nZSxzPWwub25BY3RpdmVTdGFydERhdGVDaGFuZ2UsdT1sLm9uQ2hhbmdlLGQ9bC5vblZpZXdDaGFuZ2UsZj1sLnNlbGVjdFJhbmdlLHA9e2FjdGl2ZVN0YXJ0RGF0ZTppLHZpZXc6YX07ZS5zZXRTdGF0ZSh0LChmdW5jdGlvbigpe3ZhciBvPXthY3Rpb246dC5hY3Rpb24sYWN0aXZlU3RhcnREYXRlOnQuYWN0aXZlU3RhcnREYXRlfHxlLmFjdGl2ZVN0YXJ0RGF0ZSx2YWx1ZTp0LnZhbHVlfHxlLnZhbHVlLHZpZXc6dC52aWV3fHxlLnZpZXd9O2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUgaW4gdCYmKFBuKHRbZV0pIT09UG4ocFtlXSl8fCh0W2VdaW5zdGFuY2VvZiBEYXRlP3RbZV0uZ2V0VGltZSgpIT09cFtlXS5nZXRUaW1lKCk6dFtlXSE9PXBbZV0pKX1pKFwiYWN0aXZlU3RhcnREYXRlXCIpJiZzJiZzKG8pLGkoXCJ2aWV3XCIpJiZkJiZkKG8pLGkoXCJ2YWx1ZVwiKSYmdSYmKGYmJlhuKHQudmFsdWUpP2MmJnUoW3QudmFsdWVdLG4pOnUodC52YWx1ZSxuKSksciYmcihvKX0pKX0pKSxabihrbihlKSxcInNldEFjdGl2ZVN0YXJ0RGF0ZVwiLChmdW5jdGlvbih0LG4pe2Uuc2V0U3RhdGVBbmRDYWxsQ2FsbGJhY2tzKHthY3Rpb246bixhY3RpdmVTdGFydERhdGU6dH0pfSkpLFpuKGtuKGUpLFwiZHJpbGxEb3duXCIsKGZ1bmN0aW9uKHQsbil7aWYoZS5kcmlsbERvd25BdmFpbGFibGUpe2Uub25DbGlja1RpbGUodCxuKTt2YXIgcj1rbihlKSxvPXIudmlldyxpPXIudmlld3MsYT1lLnByb3BzLm9uRHJpbGxEb3duLGw9aVtpLmluZGV4T2YobykrMV07ZS5zZXRTdGF0ZUFuZENhbGxDYWxsYmFja3Moe2FjdGlvbjpcImRyaWxsRG93blwiLGFjdGl2ZVN0YXJ0RGF0ZTp0LHZpZXc6bH0sdm9pZCAwLGEpfX0pKSxabihrbihlKSxcImRyaWxsVXBcIiwoZnVuY3Rpb24oKXtpZihlLmRyaWxsVXBBdmFpbGFibGUpe3ZhciB0PWtuKGUpLG49dC5hY3RpdmVTdGFydERhdGUscj10LnZpZXcsbz10LnZpZXdzLGk9ZS5wcm9wcy5vbkRyaWxsVXAsYT1vW28uaW5kZXhPZihyKS0xXSxsPW1lKGEsbik7ZS5zZXRTdGF0ZUFuZENhbGxDYWxsYmFja3Moe2FjdGlvbjpcImRyaWxsVXBcIixhY3RpdmVTdGFydERhdGU6bCx2aWV3OmF9LHZvaWQgMCxpKX19KSksWm4oa24oZSksXCJvbkNoYW5nZVwiLChmdW5jdGlvbih0LG4pe3ZhciByPWtuKGUpLnZhbHVlLG89ZS5wcm9wcyxpPW8uZ29Ub1JhbmdlU3RhcnRPblNlbGVjdCxhPW8uc2VsZWN0UmFuZ2U7ZS5vbkNsaWNrVGlsZSh0LG4pO3ZhciBsLGMscyx1PWEmJiFYbihyKTtpZihhKXt2YXIgZD1rbihlKS52YWx1ZVR5cGU7bD11P21lKGQsdCk6W21lKGM9ZCwocz1bcix0XS5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSkpWzBdKSx4ZShjLHNbMV0pXX1lbHNlIGw9ZS5nZXRQcm9jZXNzZWRWYWx1ZSh0KTt2YXIgZj0hYXx8dXx8aT9LbihJbihJbih7fSxlLnByb3BzKSx7fSx7dmFsdWU6bH0pKTpudWxsO24ucGVyc2lzdCgpLGUuc2V0U3RhdGVBbmRDYWxsQ2FsbGJhY2tzKHthY3Rpb246XCJvbkNoYW5nZVwiLGFjdGl2ZVN0YXJ0RGF0ZTpmLHZhbHVlOmx9LG4pfSkpLFpuKGtuKGUpLFwib25DbGlja1RpbGVcIiwoZnVuY3Rpb24odCxuKXt2YXIgcj1rbihlKS52aWV3LG89ZS5wcm9wcyxpPW8ub25DbGlja0RheSxhPW8ub25DbGlja0RlY2FkZSxsPW8ub25DbGlja01vbnRoLGM9by5vbkNsaWNrWWVhcixzPWZ1bmN0aW9uKCl7c3dpdGNoKHIpe2Nhc2VcImNlbnR1cnlcIjpyZXR1cm4gYTtjYXNlXCJkZWNhZGVcIjpyZXR1cm4gYztjYXNlXCJ5ZWFyXCI6cmV0dXJuIGw7Y2FzZVwibW9udGhcIjpyZXR1cm4gaTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdmlldzogXCIuY29uY2F0KHIsXCIuXCIpKX19KCk7cyYmcyh0LG4pfSkpLFpuKGtuKGUpLFwib25Nb3VzZU92ZXJcIiwoZnVuY3Rpb24odCl7ZS5zZXRTdGF0ZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaG92ZXImJmUuaG92ZXIuZ2V0VGltZSgpPT09dC5nZXRUaW1lKCk/bnVsbDp7aG92ZXI6dH19KSl9KSksWm4oa24oZSksXCJvbk1vdXNlTGVhdmVcIiwoZnVuY3Rpb24oKXtlLnNldFN0YXRlKHtob3ZlcjpudWxsfSl9KSksZX1yZXR1cm4gdD1sLG49W3trZXk6XCJhY3RpdmVTdGFydERhdGVcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixvLGksYSxsLGMscyx1LGQsZj10aGlzLnByb3BzLmFjdGl2ZVN0YXJ0RGF0ZSxwPXRoaXMuc3RhdGUuYWN0aXZlU3RhcnREYXRlO3JldHVybiBmfHxwfHwodD0oZT10aGlzLnByb3BzKS5hY3RpdmVTdGFydERhdGUsbj1lLmRlZmF1bHRBY3RpdmVTdGFydERhdGUscj1lLmRlZmF1bHRWYWx1ZSxvPWUuZGVmYXVsdFZpZXcsaT1lLm1heERldGFpbCxhPWUubWluRGV0YWlsLGw9ZS52YWx1ZSxjPWUudmlldyxzPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxFbiksdT16bihjLGEsaSksKGQ9dHx8bik/bWUodSxkKTpLbihJbih7bWF4RGV0YWlsOmksbWluRGV0YWlsOmEsdmFsdWU6bHx8cix2aWV3OmN8fG99LHMpKSl9fSx7a2V5OlwidmFsdWVcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5zZWxlY3RSYW5nZSxuPWUudmFsdWUscj10aGlzLnN0YXRlLnZhbHVlO3JldHVybiB0JiZYbihyKT9yOnZvaWQgMCE9PW4/bjpyfX0se2tleTpcInZhbHVlVHlwZVwiLGdldDpmdW5jdGlvbigpe3JldHVybiBXbih0aGlzLnByb3BzLm1heERldGFpbCl9fSx7a2V5Olwidmlld1wiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLm1pbkRldGFpbCxuPWUubWF4RGV0YWlsLHI9ZS52aWV3LG89dGhpcy5zdGF0ZS52aWV3O3JldHVybiB6bihyfHxvLHQsbil9fSx7a2V5Olwidmlld3NcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzO3JldHVybiBObihlLm1pbkRldGFpbCxlLm1heERldGFpbCl9fSx7a2V5OlwiaG92ZXJcIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLnNlbGVjdFJhbmdlLHQ9dGhpcy5zdGF0ZS5ob3ZlcjtyZXR1cm4gZT90Om51bGx9fSx7a2V5OlwiZHJpbGxEb3duQXZhaWxhYmxlXCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy52aWV3LHQ9dGhpcy52aWV3cztyZXR1cm4gdC5pbmRleE9mKGUpPHQubGVuZ3RoLTF9fSx7a2V5OlwiZHJpbGxVcEF2YWlsYWJsZVwiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMudmlldztyZXR1cm4gdGhpcy52aWV3cy5pbmRleE9mKGUpPjB9fSx7a2V5OlwiZ2V0UHJvY2Vzc2VkVmFsdWVcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLG49dC5taW5EYXRlLHI9dC5tYXhEYXRlLG89dC5tYXhEZXRhaWwsaT10LnJldHVyblZhbHVlO3JldHVybiBmdW5jdGlvbigpe3N3aXRjaChpKXtjYXNlXCJzdGFydFwiOnJldHVybiBVbjtjYXNlXCJlbmRcIjpyZXR1cm4gcW47Y2FzZVwicmFuZ2VcIjpyZXR1cm4gWW47ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJldHVyblZhbHVlLlwiKX19KCkoe3ZhbHVlOmUsbWluRGF0ZTpuLG1heERhdGU6cixtYXhEZXRhaWw6b30pfX0se2tleTpcInJlbmRlckNvbnRlbnRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmFjdGl2ZVN0YXJ0RGF0ZSxuPXRoaXMub25Nb3VzZU92ZXIscj10aGlzLnZhbHVlVHlwZSxpPXRoaXMudmFsdWUsYT10aGlzLnZpZXcsbD10aGlzLnByb3BzLGM9bC5jYWxlbmRhclR5cGUscz1sLmxvY2FsZSx1PWwubWF4RGF0ZSxkPWwubWluRGF0ZSxmPWwuc2VsZWN0UmFuZ2UscD1sLnRpbGVDbGFzc05hbWUsQz1sLnRpbGVDb250ZW50LGg9bC50aWxlRGlzYWJsZWQsdj10aGlzLmhvdmVyLGc9e2FjdGl2ZVN0YXJ0RGF0ZTplP3dlKGEsdCk6bWUoYSx0KSxob3Zlcjp2LGxvY2FsZTpzLG1heERhdGU6dSxtaW5EYXRlOmQsb25DbGljazp0aGlzLmRyaWxsRG93bkF2YWlsYWJsZT90aGlzLmRyaWxsRG93bjp0aGlzLm9uQ2hhbmdlLG9uTW91c2VPdmVyOmY/bjpudWxsLHRpbGVDbGFzc05hbWU6cCx0aWxlQ29udGVudDpDLHRpbGVEaXNhYmxlZDpoLHZhbHVlOmksdmFsdWVUeXBlOnJ9O3N3aXRjaChhKXtjYXNlXCJjZW50dXJ5XCI6dmFyIG09dGhpcy5wcm9wcy5mb3JtYXRZZWFyO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChQdCxTbih7Zm9ybWF0WWVhcjptfSxnKSk7Y2FzZVwiZGVjYWRlXCI6dmFyIHc9dGhpcy5wcm9wcy5mb3JtYXRZZWFyO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChGdCxTbih7Zm9ybWF0WWVhcjp3fSxnKSk7Y2FzZVwieWVhclwiOnZhciB5PXRoaXMucHJvcHMsYj15LmZvcm1hdE1vbnRoLHg9eS5mb3JtYXRNb250aFllYXI7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KHRuLFNuKHtmb3JtYXRNb250aDpiLGZvcm1hdE1vbnRoWWVhcjp4fSxnKSk7Y2FzZVwibW9udGhcIjp2YXIgTz10aGlzLnByb3BzLEw9Ty5mb3JtYXREYXksXz1PLmZvcm1hdExvbmdEYXRlLE09Ty5mb3JtYXRTaG9ydFdlZWtkYXksaj1PLmZvcm1hdFdlZWtkYXksRT1PLm9uQ2xpY2tXZWVrTnVtYmVyLFM9Ty5zaG93RG91YmxlVmlldyxQPU8uc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrcyxIPU8uc2hvd05laWdoYm9yaW5nTW9udGgsaz1PLnNob3dXZWVrTnVtYmVycyxWPXRoaXMub25Nb3VzZUxlYXZlO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChqbixTbih7Y2FsZW5kYXJUeXBlOmMsZm9ybWF0RGF5OkwsZm9ybWF0TG9uZ0RhdGU6Xyxmb3JtYXRTaG9ydFdlZWtkYXk6TSxmb3JtYXRXZWVrZGF5Omosb25DbGlja1dlZWtOdW1iZXI6RSxvbk1vdXNlTGVhdmU6Zj9WOm51bGwsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczp2b2lkIDAhPT1QP1A6UyxzaG93TmVpZ2hib3JpbmdNb250aDpILHNob3dXZWVrTnVtYmVyczprfSxnKSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHZpZXc6IFwiLmNvbmNhdChhLFwiLlwiKSl9fX0se2tleTpcInJlbmRlck5hdmlnYXRpb25cIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLnByb3BzLnNob3dOYXZpZ2F0aW9uKXJldHVybiBudWxsO3ZhciBlPXRoaXMuYWN0aXZlU3RhcnREYXRlLHQ9dGhpcy52aWV3LG49dGhpcy52aWV3cyxyPXRoaXMucHJvcHMsaT1yLmZvcm1hdE1vbnRoWWVhcixhPXIuZm9ybWF0WWVhcixsPXIubG9jYWxlLGM9ci5tYXhEYXRlLHM9ci5taW5EYXRlLHU9ci5uYXZpZ2F0aW9uQXJpYUxhYmVsLGQ9ci5uYXZpZ2F0aW9uQXJpYUxpdmUsZj1yLm5hdmlnYXRpb25MYWJlbCxwPXIubmV4dDJBcmlhTGFiZWwsQz1yLm5leHQyTGFiZWwsaD1yLm5leHRBcmlhTGFiZWwsdj1yLm5leHRMYWJlbCxnPXIucHJldjJBcmlhTGFiZWwsbT1yLnByZXYyTGFiZWwsdz1yLnByZXZBcmlhTGFiZWwseT1yLnByZXZMYWJlbCxiPXIuc2hvd0RvdWJsZVZpZXc7cmV0dXJuIG8oKS5jcmVhdGVFbGVtZW50KEZlLHthY3RpdmVTdGFydERhdGU6ZSxkcmlsbFVwOnRoaXMuZHJpbGxVcCxmb3JtYXRNb250aFllYXI6aSxmb3JtYXRZZWFyOmEsbG9jYWxlOmwsbWF4RGF0ZTpjLG1pbkRhdGU6cyxuYXZpZ2F0aW9uQXJpYUxhYmVsOnUsbmF2aWdhdGlvbkFyaWFMaXZlOmQsbmF2aWdhdGlvbkxhYmVsOmYsbmV4dDJBcmlhTGFiZWw6cCxuZXh0MkxhYmVsOkMsbmV4dEFyaWFMYWJlbDpoLG5leHRMYWJlbDp2LHByZXYyQXJpYUxhYmVsOmcscHJldjJMYWJlbDptLHByZXZBcmlhTGFiZWw6dyxwcmV2TGFiZWw6eSxzZXRBY3RpdmVTdGFydERhdGU6dGhpcy5zZXRBY3RpdmVTdGFydERhdGUsc2hvd0RvdWJsZVZpZXc6Yix2aWV3OnQsdmlld3M6bn0pfX0se2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuY2xhc3NOYW1lLG49ZS5pbnB1dFJlZixyPWUuc2VsZWN0UmFuZ2UsaT1lLnNob3dEb3VibGVWaWV3LGE9dGhpcy5vbk1vdXNlTGVhdmUsbD10aGlzLnZhbHVlLHM9W10uY29uY2F0KGwpO3JldHVybiBvKCkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6YyhCbixyJiYxPT09cy5sZW5ndGgmJlwiXCIuY29uY2F0KEJuLFwiLS1zZWxlY3RSYW5nZVwiKSxpJiZcIlwiLmNvbmNhdChCbixcIi0tZG91YmxlVmlld1wiKSx0KSxyZWY6bn0sdGhpcy5yZW5kZXJOYXZpZ2F0aW9uKCksbygpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOlwiXCIuY29uY2F0KEJuLFwiX192aWV3Q29udGFpbmVyXCIpLG9uQmx1cjpyP2E6bnVsbCxvbk1vdXNlTGVhdmU6cj9hOm51bGx9LHRoaXMucmVuZGVyQ29udGVudCgpLGkmJnRoaXMucmVuZGVyQ29udGVudCghMCkpKX19XSxuJiZmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19KHQucHJvdG90eXBlLG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksbH0oci5Db21wb25lbnQpO1FuLmRlZmF1bHRQcm9wcz17Z29Ub1JhbmdlU3RhcnRPblNlbGVjdDohMCxtYXhEYXRlOkRuLG1heERldGFpbDpcIm1vbnRoXCIsbWluRGF0ZTpBbixtaW5EZXRhaWw6XCJjZW50dXJ5XCIscmV0dXJuVmFsdWU6XCJzdGFydFwiLHNob3dOYXZpZ2F0aW9uOiEwLHNob3dOZWlnaGJvcmluZ01vbnRoOiEwfTt2YXIgSm49YSgpLmluc3RhbmNlT2YoRGF0ZSksZXI9YSgpLm9uZU9mVHlwZShbYSgpLnN0cmluZyxaZV0pO1FuLnByb3BUeXBlcz17YWN0aXZlU3RhcnREYXRlOkpuLGFsbG93UGFydGlhbFJhbmdlOmEoKS5ib29sLGNhbGVuZGFyVHlwZTpIZSxjbGFzc05hbWU6a2UsZGVmYXVsdEFjdGl2ZVN0YXJ0RGF0ZTpKbixkZWZhdWx0VmFsdWU6ZXIsZGVmYXVsdFZpZXc6QWUsZm9ybWF0RGF5OmEoKS5mdW5jLGZvcm1hdExvbmdEYXRlOmEoKS5mdW5jLGZvcm1hdE1vbnRoOmEoKS5mdW5jLGZvcm1hdE1vbnRoWWVhcjphKCkuZnVuYyxmb3JtYXRTaG9ydFdlZWtkYXk6YSgpLmZ1bmMsZm9ybWF0V2Vla2RheTphKCkuZnVuYyxmb3JtYXRZZWFyOmEoKS5mdW5jLGdvVG9SYW5nZVN0YXJ0T25TZWxlY3Q6YSgpLmJvb2wsaW5wdXRSZWY6SWUsbG9jYWxlOmEoKS5zdHJpbmcsbWF4RGF0ZTpSZSxtYXhEZXRhaWw6YSgpLm9uZU9mKCRuKSxtaW5EYXRlOlZlLG1pbkRldGFpbDphKCkub25lT2YoJG4pLG5hdmlnYXRpb25BcmlhTGFiZWw6YSgpLnN0cmluZyxuYXZpZ2F0aW9uQXJpYUxpdmU6YSgpLm9uZU9mKFtcIm9mZlwiLFwicG9saXRlXCIsXCJhc3NlcnRpdmVcIl0pLG5hdmlnYXRpb25MYWJlbDphKCkuZnVuYyxuZXh0MkFyaWFMYWJlbDphKCkuc3RyaW5nLG5leHQyTGFiZWw6YSgpLm5vZGUsbmV4dEFyaWFMYWJlbDphKCkuc3RyaW5nLG5leHRMYWJlbDphKCkubm9kZSxvbkFjdGl2ZVN0YXJ0RGF0ZUNoYW5nZTphKCkuZnVuYyxvbkNoYW5nZTphKCkuZnVuYyxvbkNsaWNrRGF5OmEoKS5mdW5jLG9uQ2xpY2tEZWNhZGU6YSgpLmZ1bmMsb25DbGlja01vbnRoOmEoKS5mdW5jLG9uQ2xpY2tXZWVrTnVtYmVyOmEoKS5mdW5jLG9uQ2xpY2tZZWFyOmEoKS5mdW5jLG9uRHJpbGxEb3duOmEoKS5mdW5jLG9uRHJpbGxVcDphKCkuZnVuYyxvblZpZXdDaGFuZ2U6YSgpLmZ1bmMscHJldjJBcmlhTGFiZWw6YSgpLnN0cmluZyxwcmV2MkxhYmVsOmEoKS5ub2RlLHByZXZBcmlhTGFiZWw6YSgpLnN0cmluZyxwcmV2TGFiZWw6YSgpLm5vZGUscmV0dXJuVmFsdWU6YSgpLm9uZU9mKFtcInN0YXJ0XCIsXCJlbmRcIixcInJhbmdlXCJdKSxzZWxlY3RSYW5nZTphKCkuYm9vbCxzaG93RG91YmxlVmlldzphKCkuYm9vbCxzaG93Rml4ZWROdW1iZXJPZldlZWtzOmEoKS5ib29sLHNob3dOYXZpZ2F0aW9uOmEoKS5ib29sLHNob3dOZWlnaGJvcmluZ01vbnRoOmEoKS5ib29sLHNob3dXZWVrTnVtYmVyczphKCkuYm9vbCx0aWxlQ2xhc3NOYW1lOmEoKS5vbmVPZlR5cGUoW2EoKS5mdW5jLGtlXSksdGlsZUNvbnRlbnQ6YSgpLm9uZU9mVHlwZShbYSgpLmZ1bmMsYSgpLm5vZGVdKSx0aWxlRGlzYWJsZWQ6YSgpLmZ1bmMsdmFsdWU6ZXIsdmlldzpBZX07Y29uc3QgdHI9UW59LDUyNTE6KGUsdCxuKT0+e24oNzQxOCk7dmFyIHI9big2Njg5KSxvPTYwMTAzO2lmKHQuRnJhZ21lbnQ9NjAxMDcsXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yKXt2YXIgaT1TeW1ib2wuZm9yO289aShcInJlYWN0LmVsZW1lbnRcIiksdC5GcmFnbWVudD1pKFwicmVhY3QuZnJhZ21lbnRcIil9dmFyIGE9ci5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixsPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYz17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIHMoZSx0LG4pe3ZhciByLGk9e30scz1udWxsLHU9bnVsbDtmb3IociBpbiB2b2lkIDAhPT1uJiYocz1cIlwiK24pLHZvaWQgMCE9PXQua2V5JiYocz1cIlwiK3Qua2V5KSx2b2lkIDAhPT10LnJlZiYmKHU9dC5yZWYpLHQpbC5jYWxsKHQscikmJiFjLmhhc093blByb3BlcnR5KHIpJiYoaVtyXT10W3JdKTtpZihlJiZlLmRlZmF1bHRQcm9wcylmb3IociBpbiB0PWUuZGVmYXVsdFByb3BzKXZvaWQgMD09PWlbcl0mJihpW3JdPXRbcl0pO3JldHVybnskJHR5cGVvZjpvLHR5cGU6ZSxrZXk6cyxyZWY6dSxwcm9wczppLF9vd25lcjphLmN1cnJlbnR9fXQuanN4PXMsdC5qc3hzPXN9LDU4OTM6KGUsdCxuKT0+e2UuZXhwb3J0cz1uKDUyNTEpfSwzNTczOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1uKDY1NSksbz1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4obix0KSxlKX19LGk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUlMT9OdW1iZXIoZS50b0ZpeGVkKDUpKTplfSxhPS8oLSk/KFtcXGRdKlxcLj9bXFxkXSkrL2csbD0vKCNbMC05YS1mXXs2fXwjWzAtOWEtZl17M318Iyg/OlswLTlhLWZdezJ9KXsyLDR9fChyZ2J8aHNsKWE/XFwoKC0/W1xcZFxcLl0rJT9bLFxcc10rKXsyLDN9XFxzKlxcLypcXHMqW1xcZFxcLl0rJT9cXCkpL2dpLGM9L14oI1swLTlhLWZdezN9fCMoPzpbMC05YS1mXXsyfSl7Miw0fXwocmdifGhzbClhP1xcKCgtP1tcXGRcXC5dKyU/WyxcXHNdKyl7MiwzfVxccypcXC8qXFxzKltcXGRcXC5dKyU/XFwpKSQvaTtmdW5jdGlvbiBzKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlfXZhciB1PXt0ZXN0OmZ1bmN0aW9uKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlfSxwYXJzZTpwYXJzZUZsb2F0LHRyYW5zZm9ybTpmdW5jdGlvbihlKXtyZXR1cm4gZX19LGQ9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LHUpLHt0cmFuc2Zvcm06bygwLDEpfSksZj1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdSkse2RlZmF1bHQ6MX0pLHA9ZnVuY3Rpb24oZSl7cmV0dXJue3Rlc3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHModCkmJnQuZW5kc1dpdGgoZSkmJjE9PT10LnNwbGl0KFwiIFwiKS5sZW5ndGh9LHBhcnNlOnBhcnNlRmxvYXQsdHJhbnNmb3JtOmZ1bmN0aW9uKHQpe3JldHVyblwiXCIrdCtlfX19LEM9cChcImRlZ1wiKSxoPXAoXCIlXCIpLHY9cChcInB4XCIpLGc9cChcInZoXCIpLG09cChcInZ3XCIpLHc9ci5fX2Fzc2lnbihyLl9fYXNzaWduKHt9LGgpLHtwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm4gaC5wYXJzZShlKS8xMDB9LHRyYW5zZm9ybTpmdW5jdGlvbihlKXtyZXR1cm4gaC50cmFuc2Zvcm0oMTAwKmUpfX0pLHk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIEJvb2xlYW4ocyhuKSYmYy50ZXN0KG4pJiZuLnN0YXJ0c1dpdGgoZSl8fHQmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHQpKX19LGI9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmdW5jdGlvbihyKXt2YXIgbztpZighcyhyKSlyZXR1cm4gcjt2YXIgaT1yLm1hdGNoKGEpLGw9aVswXSxjPWlbMV0sdT1pWzJdLGQ9aVszXTtyZXR1cm4obz17fSlbZV09cGFyc2VGbG9hdChsKSxvW3RdPXBhcnNlRmxvYXQoYyksb1tuXT1wYXJzZUZsb2F0KHUpLG8uYWxwaGE9dm9pZCAwIT09ZD9wYXJzZUZsb2F0KGQpOjEsb319LHg9e3Rlc3Q6eShcImhzbFwiLFwiaHVlXCIpLHBhcnNlOmIoXCJodWVcIixcInNhdHVyYXRpb25cIixcImxpZ2h0bmVzc1wiKSx0cmFuc2Zvcm06ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5odWUsbj1lLnNhdHVyYXRpb24scj1lLmxpZ2h0bmVzcyxvPWUuYWxwaGEsYT12b2lkIDA9PT1vPzE6bztyZXR1cm5cImhzbGEoXCIrTWF0aC5yb3VuZCh0KStcIiwgXCIraC50cmFuc2Zvcm0oaShuKSkrXCIsIFwiK2gudHJhbnNmb3JtKGkocikpK1wiLCBcIitpKGQudHJhbnNmb3JtKGEpKStcIilcIn19LE89bygwLDI1NSksTD1yLl9fYXNzaWduKHIuX19hc3NpZ24oe30sdSkse3RyYW5zZm9ybTpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChPKGUpKX19KSxfPXt0ZXN0OnkoXCJyZ2JcIixcInJlZFwiKSxwYXJzZTpiKFwicmVkXCIsXCJncmVlblwiLFwiYmx1ZVwiKSx0cmFuc2Zvcm06ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZWQsbj1lLmdyZWVuLHI9ZS5ibHVlLG89ZS5hbHBoYSxhPXZvaWQgMD09PW8/MTpvO3JldHVyblwicmdiYShcIitMLnRyYW5zZm9ybSh0KStcIiwgXCIrTC50cmFuc2Zvcm0obikrXCIsIFwiK0wudHJhbnNmb3JtKHIpK1wiLCBcIitpKGQudHJhbnNmb3JtKGEpKStcIilcIn19LE09e3Rlc3Q6eShcIiNcIikscGFyc2U6ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIixuPVwiXCIscj1cIlwiLG89XCJcIjtyZXR1cm4gZS5sZW5ndGg+NT8odD1lLnN1YnN0cigxLDIpLG49ZS5zdWJzdHIoMywyKSxyPWUuc3Vic3RyKDUsMiksbz1lLnN1YnN0cig3LDIpKToodD1lLnN1YnN0cigxLDEpLG49ZS5zdWJzdHIoMiwxKSxyPWUuc3Vic3RyKDMsMSksbz1lLnN1YnN0cig0LDEpLHQrPXQsbis9bixyKz1yLG8rPW8pLHtyZWQ6cGFyc2VJbnQodCwxNiksZ3JlZW46cGFyc2VJbnQobiwxNiksYmx1ZTpwYXJzZUludChyLDE2KSxhbHBoYTpvP3BhcnNlSW50KG8sMTYpLzI1NToxfX0sdHJhbnNmb3JtOl8udHJhbnNmb3JtfSxqPXt0ZXN0OmZ1bmN0aW9uKGUpe3JldHVybiBfLnRlc3QoZSl8fE0udGVzdChlKXx8eC50ZXN0KGUpfSxwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm4gXy50ZXN0KGUpP18ucGFyc2UoZSk6eC50ZXN0KGUpP3gucGFyc2UoZSk6TS5wYXJzZShlKX0sdHJhbnNmb3JtOmZ1bmN0aW9uKGUpe3JldHVybiBzKGUpP2U6ZS5oYXNPd25Qcm9wZXJ0eShcInJlZFwiKT9fLnRyYW5zZm9ybShlKTp4LnRyYW5zZm9ybShlKX19LEU9XCIke2N9XCIsUz1cIiR7bn1cIjtmdW5jdGlvbiBQKGUpe3ZhciB0PVtdLG49MCxyPWUubWF0Y2gobCk7ciYmKG49ci5sZW5ndGgsZT1lLnJlcGxhY2UobCxFKSx0LnB1c2guYXBwbHkodCxyLm1hcChqLnBhcnNlKSkpO3ZhciBvPWUubWF0Y2goYSk7cmV0dXJuIG8mJihlPWUucmVwbGFjZShhLFMpLHQucHVzaC5hcHBseSh0LG8ubWFwKHUucGFyc2UpKSkse3ZhbHVlczp0LG51bUNvbG9yczpuLHRva2VuaXNlZDplfX1mdW5jdGlvbiBIKGUpe3JldHVybiBQKGUpLnZhbHVlc31mdW5jdGlvbiBrKGUpe3ZhciB0PVAoZSksbj10LnZhbHVlcyxyPXQubnVtQ29sb3JzLG89dC50b2tlbmlzZWQsYT1uLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW8sbj0wO248YTtuKyspdD10LnJlcGxhY2UobjxyP0U6UyxuPHI/ai50cmFuc2Zvcm0oZVtuXSk6aShlW25dKSk7cmV0dXJuIHR9fXZhciBWPWZ1bmN0aW9uKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlPzA6ZX0sUj17dGVzdDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsbztyZXR1cm4gaXNOYU4oZSkmJnMoZSkmJihudWxsIT09KG49bnVsbD09PSh0PWUubWF0Y2goYSkpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lmxlbmd0aCkmJnZvaWQgMCE9PW4/bjowKSsobnVsbCE9PShvPW51bGw9PT0ocj1lLm1hdGNoKGwpKXx8dm9pZCAwPT09cj92b2lkIDA6ci5sZW5ndGgpJiZ2b2lkIDAhPT1vP286MCk+MH0scGFyc2U6SCxjcmVhdGVUcmFuc2Zvcm1lcjprLGdldEFuaW1hdGFibGVOb25lOmZ1bmN0aW9uKGUpe3ZhciB0PUgoZSk7cmV0dXJuIGsoZSkodC5tYXAoVikpfX0sST1uZXcgU2V0KFtcImJyaWdodG5lc3NcIixcImNvbnRyYXN0XCIsXCJzYXR1cmF0ZVwiLFwib3BhY2l0eVwiXSk7ZnVuY3Rpb24gWihlKXt2YXIgdD1lLnNsaWNlKDAsLTEpLnNwbGl0KFwiKFwiKSxuPXRbMF0scj10WzFdO2lmKFwiZHJvcC1zaGFkb3dcIj09PW4pcmV0dXJuIGU7dmFyIG89KHIubWF0Y2goYSl8fFtdKVswXTtpZighbylyZXR1cm4gZTt2YXIgaT1yLnJlcGxhY2UobyxcIlwiKSxsPUkuaGFzKG4pPzE6MDtyZXR1cm4gbyE9PXImJihsKj0xMDApLG4rXCIoXCIrbCtpK1wiKVwifXZhciBUPS8oW2Etei1dKilcXCguKj9cXCkvZyxBPXIuX19hc3NpZ24oci5fX2Fzc2lnbih7fSxSKSx7Z2V0QW5pbWF0YWJsZU5vbmU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaChUKTtyZXR1cm4gdD90Lm1hcChaKS5qb2luKFwiIFwiKTplfX0pO3QuYWxwaGE9ZCx0LmNvbG9yPWosdC5jb21wbGV4PVIsdC5kZWdyZWVzPUMsdC5maWx0ZXI9QSx0LmhleD1NLHQuaHNsYT14LHQubnVtYmVyPXUsdC5wZXJjZW50PWgsdC5wcm9ncmVzc1BlcmNlbnRhZ2U9dyx0LnB4PXYsdC5yZ2JVbml0PUwsdC5yZ2JhPV8sdC5zY2FsZT1mLHQudmg9Zyx0LnZ3PW19LDgzODg6KGUsdCxuKT0+e24ucih0KSxuLmQodCx7Zm9jdXNhYmxlOigpPT55LGlzRm9jdXNhYmxlOigpPT5PLGlzVGFiYmFibGU6KCk9PmIsdGFiYmFibGU6KCk9Pnd9KTt2YXIgcj1bXCJpbnB1dDpub3QoW2luZXJ0XSlcIixcInNlbGVjdDpub3QoW2luZXJ0XSlcIixcInRleHRhcmVhOm5vdChbaW5lcnRdKVwiLFwiYVtocmVmXTpub3QoW2luZXJ0XSlcIixcImJ1dHRvbjpub3QoW2luZXJ0XSlcIixcIlt0YWJpbmRleF06bm90KHNsb3QpOm5vdChbaW5lcnRdKVwiLFwiYXVkaW9bY29udHJvbHNdOm5vdChbaW5lcnRdKVwiLFwidmlkZW9bY29udHJvbHNdOm5vdChbaW5lcnRdKVwiLCdbY29udGVudGVkaXRhYmxlXTpub3QoW2NvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJdKTpub3QoW2luZXJ0XSknLFwiZGV0YWlscz5zdW1tYXJ5OmZpcnN0LW9mLXR5cGU6bm90KFtpbmVydF0pXCIsXCJkZXRhaWxzOm5vdChbaW5lcnRdKVwiXSxvPXIuam9pbihcIixcIiksaT1cInVuZGVmaW5lZFwiPT10eXBlb2YgRWxlbWVudCxhPWk/ZnVuY3Rpb24oKXt9OkVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXN8fEVsZW1lbnQucHJvdG90eXBlLm1zTWF0Y2hlc1NlbGVjdG9yfHxFbGVtZW50LnByb3RvdHlwZS53ZWJraXRNYXRjaGVzU2VsZWN0b3IsbD0haSYmRWxlbWVudC5wcm90b3R5cGUuZ2V0Um9vdE5vZGU/ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIG51bGw9PWV8fG51bGw9PT0odD1lLmdldFJvb3ROb2RlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5jYWxsKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT92b2lkIDA6ZS5vd25lckRvY3VtZW50fSxjPWZ1bmN0aW9uIGUodCxuKXt2YXIgcjt2b2lkIDA9PT1uJiYobj0hMCk7dmFyIG89bnVsbD09dHx8bnVsbD09PShyPXQuZ2V0QXR0cmlidXRlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5jYWxsKHQsXCJpbmVydFwiKTtyZXR1cm5cIlwiPT09b3x8XCJ0cnVlXCI9PT1vfHxuJiZ0JiZlKHQucGFyZW50Tm9kZSl9LHM9ZnVuY3Rpb24oZSx0LG4pe2lmKGMoZSkpcmV0dXJuW107dmFyIHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGUucXVlcnlTZWxlY3RvckFsbChvKSk7cmV0dXJuIHQmJmEuY2FsbChlLG8pJiZyLnVuc2hpZnQoZSksci5maWx0ZXIobil9LHU9ZnVuY3Rpb24gZSh0LG4scil7Zm9yKHZhciBpPVtdLGw9QXJyYXkuZnJvbSh0KTtsLmxlbmd0aDspe3ZhciBzPWwuc2hpZnQoKTtpZighYyhzLCExKSlpZihcIlNMT1RcIj09PXMudGFnTmFtZSl7dmFyIHU9cy5hc3NpZ25lZEVsZW1lbnRzKCksZD1lKHUubGVuZ3RoP3U6cy5jaGlsZHJlbiwhMCxyKTtyLmZsYXR0ZW4/aS5wdXNoLmFwcGx5KGksZCk6aS5wdXNoKHtzY29wZVBhcmVudDpzLGNhbmRpZGF0ZXM6ZH0pfWVsc2V7YS5jYWxsKHMsbykmJnIuZmlsdGVyKHMpJiYobnx8IXQuaW5jbHVkZXMocykpJiZpLnB1c2gocyk7dmFyIGY9cy5zaGFkb3dSb290fHxcImZ1bmN0aW9uXCI9PXR5cGVvZiByLmdldFNoYWRvd1Jvb3QmJnIuZ2V0U2hhZG93Um9vdChzKSxwPSFjKGYsITEpJiYoIXIuc2hhZG93Um9vdEZpbHRlcnx8ci5zaGFkb3dSb290RmlsdGVyKHMpKTtpZihmJiZwKXt2YXIgQz1lKCEwPT09Zj9zLmNoaWxkcmVuOmYuY2hpbGRyZW4sITAscik7ci5mbGF0dGVuP2kucHVzaC5hcHBseShpLEMpOmkucHVzaCh7c2NvcGVQYXJlbnQ6cyxjYW5kaWRhdGVzOkN9KX1lbHNlIGwudW5zaGlmdC5hcHBseShsLHMuY2hpbGRyZW4pfX1yZXR1cm4gaX0sZD1mdW5jdGlvbihlLHQpe3JldHVybiBlLnRhYkluZGV4PDAmJih0fHwvXihBVURJT3xWSURFT3xERVRBSUxTKSQvLnRlc3QoZS50YWdOYW1lKXx8ZnVuY3Rpb24oZSl7dmFyIHQsbj1udWxsPT1lfHxudWxsPT09KHQ9ZS5nZXRBdHRyaWJ1dGUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmNhbGwoZSxcImNvbnRlbnRlZGl0YWJsZVwiKTtyZXR1cm5cIlwiPT09bnx8XCJ0cnVlXCI9PT1ufShlKSkmJmlzTmFOKHBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIiksMTApKT8wOmUudGFiSW5kZXh9LGY9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50YWJJbmRleD09PXQudGFiSW5kZXg/ZS5kb2N1bWVudE9yZGVyLXQuZG9jdW1lbnRPcmRlcjplLnRhYkluZGV4LXQudGFiSW5kZXh9LHA9ZnVuY3Rpb24oZSl7cmV0dXJuXCJJTlBVVFwiPT09ZS50YWdOYW1lfSxDPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10LndpZHRoLHI9dC5oZWlnaHQ7cmV0dXJuIDA9PT1uJiYwPT09cn0saD1mdW5jdGlvbihlLHQpe3JldHVybiEodC5kaXNhYmxlZHx8Yyh0KXx8ZnVuY3Rpb24oZSl7cmV0dXJuIHAoZSkmJlwiaGlkZGVuXCI9PT1lLnR5cGV9KHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuPXQuZGlzcGxheUNoZWNrLHI9dC5nZXRTaGFkb3dSb290O2lmKFwiaGlkZGVuXCI9PT1nZXRDb21wdXRlZFN0eWxlKGUpLnZpc2liaWxpdHkpcmV0dXJuITA7dmFyIG89YS5jYWxsKGUsXCJkZXRhaWxzPnN1bW1hcnk6Zmlyc3Qtb2YtdHlwZVwiKT9lLnBhcmVudEVsZW1lbnQ6ZTtpZihhLmNhbGwobyxcImRldGFpbHM6bm90KFtvcGVuXSkgKlwiKSlyZXR1cm4hMDtpZihuJiZcImZ1bGxcIiE9PW4mJlwibGVnYWN5LWZ1bGxcIiE9PW4pe2lmKFwibm9uLXplcm8tYXJlYVwiPT09bilyZXR1cm4gQyhlKX1lbHNle2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpe2Zvcih2YXIgaT1lO2U7KXt2YXIgYz1lLnBhcmVudEVsZW1lbnQscz1sKGUpO2lmKGMmJiFjLnNoYWRvd1Jvb3QmJiEwPT09cihjKSlyZXR1cm4gQyhlKTtlPWUuYXNzaWduZWRTbG90P2UuYXNzaWduZWRTbG90OmN8fHM9PT1lLm93bmVyRG9jdW1lbnQ/YzpzLmhvc3R9ZT1pfWlmKGZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGk9ZSYmbChlKSxhPW51bGw9PT0odD1pKXx8dm9pZCAwPT09dD92b2lkIDA6dC5ob3N0LGM9ITE7aWYoaSYmaSE9PWUpZm9yKGM9ISEobnVsbCE9PShuPWEpJiZ2b2lkIDAhPT1uJiZudWxsIT09KHI9bi5vd25lckRvY3VtZW50KSYmdm9pZCAwIT09ciYmci5jb250YWlucyhhKXx8bnVsbCE9ZSYmbnVsbCE9PShvPWUub3duZXJEb2N1bWVudCkmJnZvaWQgMCE9PW8mJm8uY29udGFpbnMoZSkpOyFjJiZhOyl7dmFyIHMsdSxkO2M9IShudWxsPT09KHU9YT1udWxsPT09KHM9aT1sKGEpKXx8dm9pZCAwPT09cz92b2lkIDA6cy5ob3N0KXx8dm9pZCAwPT09dXx8bnVsbD09PShkPXUub3duZXJEb2N1bWVudCl8fHZvaWQgMD09PWR8fCFkLmNvbnRhaW5zKGEpKX1yZXR1cm4gY30oZSkpcmV0dXJuIWUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg7aWYoXCJsZWdhY3ktZnVsbFwiIT09bilyZXR1cm4hMH1yZXR1cm4hMX0odCxlKXx8ZnVuY3Rpb24oZSl7cmV0dXJuXCJERVRBSUxTXCI9PT1lLnRhZ05hbWUmJkFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShlLmNoaWxkcmVuKS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm5cIlNVTU1BUllcIj09PWUudGFnTmFtZX0pKX0odCl8fGZ1bmN0aW9uKGUpe2lmKC9eKElOUFVUfEJVVFRPTnxTRUxFQ1R8VEVYVEFSRUEpJC8udGVzdChlLnRhZ05hbWUpKWZvcih2YXIgdD1lLnBhcmVudEVsZW1lbnQ7dDspe2lmKFwiRklFTERTRVRcIj09PXQudGFnTmFtZSYmdC5kaXNhYmxlZCl7Zm9yKHZhciBuPTA7bjx0LmNoaWxkcmVuLmxlbmd0aDtuKyspe3ZhciByPXQuY2hpbGRyZW4uaXRlbShuKTtpZihcIkxFR0VORFwiPT09ci50YWdOYW1lKXJldHVybiEhYS5jYWxsKHQsXCJmaWVsZHNldFtkaXNhYmxlZF0gKlwiKXx8IXIuY29udGFpbnMoZSl9cmV0dXJuITB9dD10LnBhcmVudEVsZW1lbnR9cmV0dXJuITF9KHQpKX0sdj1mdW5jdGlvbihlLHQpe3JldHVybiEoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBwKGUpJiZcInJhZGlvXCI9PT1lLnR5cGV9KGUpJiYhZnVuY3Rpb24oZSl7aWYoIWUubmFtZSlyZXR1cm4hMDt2YXIgdCxuPWUuZm9ybXx8bChlKSxyPWZ1bmN0aW9uKGUpe3JldHVybiBuLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W3R5cGU9XCJyYWRpb1wiXVtuYW1lPVwiJytlKydcIl0nKX07aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LkNTUyYmXCJmdW5jdGlvblwiPT10eXBlb2Ygd2luZG93LkNTUy5lc2NhcGUpdD1yKHdpbmRvdy5DU1MuZXNjYXBlKGUubmFtZSkpO2Vsc2UgdHJ5e3Q9cihlLm5hbWUpfWNhdGNoKGUpe3JldHVybiBjb25zb2xlLmVycm9yKFwiTG9va3MgbGlrZSB5b3UgaGF2ZSBhIHJhZGlvIGJ1dHRvbiB3aXRoIGEgbmFtZSBhdHRyaWJ1dGUgY29udGFpbmluZyBpbnZhbGlkIENTUyBzZWxlY3RvciBjaGFyYWN0ZXJzIGFuZCBuZWVkIHRoZSBDU1MuZXNjYXBlIHBvbHlmaWxsOiAlc1wiLGUubWVzc2FnZSksITF9dmFyIG89ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihlW25dLmNoZWNrZWQmJmVbbl0uZm9ybT09PXQpcmV0dXJuIGVbbl19KHQsZS5mb3JtKTtyZXR1cm4hb3x8bz09PWV9KGUpfSh0KXx8ZCh0KTwwfHwhaChlLHQpKX0sZz1mdW5jdGlvbihlKXt2YXIgdD1wYXJzZUludChlLmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpLDEwKTtyZXR1cm4hIShpc05hTih0KXx8dD49MCl9LG09ZnVuY3Rpb24gZSh0KXt2YXIgbj1bXSxyPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQsbyl7dmFyIGk9ISF0LnNjb3BlUGFyZW50LGE9aT90LnNjb3BlUGFyZW50OnQsbD1kKGEsaSksYz1pP2UodC5jYW5kaWRhdGVzKTphOzA9PT1sP2k/bi5wdXNoLmFwcGx5KG4sYyk6bi5wdXNoKGEpOnIucHVzaCh7ZG9jdW1lbnRPcmRlcjpvLHRhYkluZGV4OmwsaXRlbTp0LGlzU2NvcGU6aSxjb250ZW50OmN9KX0pKSxyLnNvcnQoZikucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiB0LmlzU2NvcGU/ZS5wdXNoLmFwcGx5KGUsdC5jb250ZW50KTplLnB1c2godC5jb250ZW50KSxlfSksW10pLmNvbmNhdChuKX0sdz1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBuPSh0PXR8fHt9KS5nZXRTaGFkb3dSb290P3UoW2VdLHQuaW5jbHVkZUNvbnRhaW5lcix7ZmlsdGVyOnYuYmluZChudWxsLHQpLGZsYXR0ZW46ITEsZ2V0U2hhZG93Um9vdDp0LmdldFNoYWRvd1Jvb3Qsc2hhZG93Um9vdEZpbHRlcjpnfSk6cyhlLHQuaW5jbHVkZUNvbnRhaW5lcix2LmJpbmQobnVsbCx0KSksbShuKX0seT1mdW5jdGlvbihlLHQpe3JldHVybih0PXR8fHt9KS5nZXRTaGFkb3dSb290P3UoW2VdLHQuaW5jbHVkZUNvbnRhaW5lcix7ZmlsdGVyOmguYmluZChudWxsLHQpLGZsYXR0ZW46ITAsZ2V0U2hhZG93Um9vdDp0LmdldFNoYWRvd1Jvb3R9KTpzKGUsdC5pbmNsdWRlQ29udGFpbmVyLGguYmluZChudWxsLHQpKX0sYj1mdW5jdGlvbihlLHQpe2lmKHQ9dHx8e30sIWUpdGhyb3cgbmV3IEVycm9yKFwiTm8gbm9kZSBwcm92aWRlZFwiKTtyZXR1cm4hMSE9PWEuY2FsbChlLG8pJiZ2KHQsZSl9LHg9ci5jb25jYXQoXCJpZnJhbWVcIikuam9pbihcIixcIiksTz1mdW5jdGlvbihlLHQpe2lmKHQ9dHx8e30sIWUpdGhyb3cgbmV3IEVycm9yKFwiTm8gbm9kZSBwcm92aWRlZFwiKTtyZXR1cm4hMSE9PWEuY2FsbChlLHgpJiZoKHQsZSl9fSw0MjQ5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQnV0dG9uVGV4dE9ubHk9dC5CdXR0b25TZWNvbmRhcnk9dC5CdXR0b25QcmltYXJ5PXQuQnV0dG9uPXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1vKG4oNzUxOCkpLGw9bigxMzM1KSxjPW4oOTUwNykscz1uKDYxMjYpO3QuQnV0dG9uPWU9Pnt2YXJ7bGFiZWw6dCxjaGlsZHJlbjpuLHNpemU6bz1cImJhc2VcIixzaGFwZTphPVwic3F1YXJlXCIsa2luZDpsPVwicHJpbWFyeVwiLGxheW91dDpjPVwiZml0XCIsaHJlZjpzfT1lLGY9cihlLFtcImxhYmVsXCIsXCJjaGlsZHJlblwiLFwic2l6ZVwiLFwic2hhcGVcIixcImtpbmRcIixcImxheW91dFwiLFwiaHJlZlwiXSk7cmV0dXJuKDAsaS5qc3gpKHUsT2JqZWN0LmFzc2lnbih7YXM6cz9cImFcIjpcImJ1dHRvblwiLHNpemU6byxzaGFwZTphLGtpbmQ6bCxsYXlvdXQ6Y30sZix7Y2hpbGRyZW46dD8oMCxpLmpzeCkoZCxPYmplY3QuYXNzaWduKHthbGlnbkl0ZW1zOlwiY2VudGVyXCIsanVzdGlmeUNvbnRlbnQ6XCJjZW50ZXJcIn0se2NoaWxkcmVuOnR9KSk6bn0pKX07Y29uc3QgdT1hLmRlZmF1bHQuYnV0dG9uYFxuICAvKiBEZWZhdWx0IHZhbHVlcyB0aGF0IGdldCBvdmVycmlkZGVuIGJ5IHZhcmlhbnRzICovXG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEJhY2tncm91bmR9O1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kfTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnlUZXh0fTtcblxuICAvKiBJbmplY3QgdmFyaWFudHMgKi9cbiAgJHsoMCxjLmdldFZhcmlhbnRDU1MpKHMudmFyaWFudHMscy5WYXJpYW50LnNpemUpfVxuICAkeygwLGMuZ2V0VmFyaWFudENTUykocy52YXJpYW50cyxzLlZhcmlhbnQuc2hhcGUpfVxuICAkeygwLGMuZ2V0VmFyaWFudENTUykocy52YXJpYW50cyxzLlZhcmlhbnQua2luZCl9XG4gICR7KDAsYy5nZXRWYXJpYW50Q1NTKShzLnZhcmlhbnRzLHMuVmFyaWFudC5sYXlvdXQpfVxuXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICBvdXRsaW5lOiBub25lO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmxpbmVIZWlnaHQudWl9O1xuICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0LmJvbGR9O1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKTtcblxuICAmOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAmOmRpc2FibGVkLFxuICAmOmFjdGl2ZTpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcn07XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgfVxuYCxkPSgwLGEuZGVmYXVsdCkobC5Cb3gpYFxuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gMCAke2UucHgueHNtYWxsfWB9O1xuYDt0LkJ1dHRvblByaW1hcnk9ZT0+KDAsaS5qc3gpKHQuQnV0dG9uLE9iamVjdC5hc3NpZ24oe30sZSx7a2luZDpcInByaW1hcnlcIn0pKSx0LkJ1dHRvblNlY29uZGFyeT1lPT4oMCxpLmpzeCkodC5CdXR0b24sT2JqZWN0LmFzc2lnbih7fSxlLHtraW5kOlwic2Vjb25kYXJ5XCJ9KSksdC5CdXR0b25UZXh0T25seT1lPT4oMCxpLmpzeCkodC5CdXR0b24sT2JqZWN0LmFzc2lnbih7fSxlLHtraW5kOlwidGV4dE9ubHlcIn0pKX0sNjEyNjooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC52YXJpYW50cz10LkJ1dHRvblNoYXBlPXQuQnV0dG9uTGF5b3V0PXQuQnV0dG9uU2l6ZT10LkJ1dHRvbktpbmQ9dC5WYXJpYW50PXZvaWQgMDtjb25zdCByPW4oNzUxOCk7dC5WYXJpYW50PXtzaGFwZTpcInNoYXBlXCIsc2l6ZTpcInNpemVcIixraW5kOlwia2luZFwiLGxheW91dDpcImxheW91dFwifSx0LkJ1dHRvbktpbmQ9e3ByaW1hcnk6XCJwcmltYXJ5XCIsc2Vjb25kYXJ5Olwic2Vjb25kYXJ5XCIsdGV4dE9ubHk6XCJ0ZXh0T25seVwifSx0LkJ1dHRvblNpemU9e3NtYWxsOlwic21hbGxcIixiYXNlOlwiYmFzZVwiLGxhcmdlOlwibGFyZ2VcIn0sdC5CdXR0b25MYXlvdXQ9e2ZpdDpcImZpdFwiLGZ1bGw6XCJmdWxsXCJ9LHQuQnV0dG9uU2hhcGU9e3NxdWFyZTpcInNxdWFyZVwiLHBpbGw6XCJwaWxsXCJ9LHQudmFyaWFudHM9e1t0LlZhcmlhbnQuc2l6ZV06e1t0LkJ1dHRvblNpemUuYmFzZV06ci5jc3NgXG4gICAgICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfSAke2UucHgubGFyZ2V9YH07XG4gICAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gICAgYCxbdC5CdXR0b25TaXplLnNtYWxsXTpyLmNzc2BcbiAgICAgIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHgueHNtYWxsfSAke2UucHguYmFzZX1gfTtcbiAgICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5zbWFsbH07XG4gICAgYCxbdC5CdXR0b25TaXplLmxhcmdlXTpyLmNzc2BcbiAgICAgIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguYmFzZX0gJHtlLnB4LnhsYXJnZX1gfTtcbiAgICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5sYXJnZX07XG4gICAgYH0sW3QuVmFyaWFudC5zaGFwZV06e1t0LkJ1dHRvblNoYXBlLnNxdWFyZV06ci5jc3NgXG4gICAgICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gICAgYCxbdC5CdXR0b25TaGFwZS5waWxsXTpyLmNzc2BcbiAgICAgIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnBpbGx9O1xuICAgIGB9LFt0LlZhcmlhbnQubGF5b3V0XTp7W3QuQnV0dG9uTGF5b3V0LmZpdF06ci5jc3NgXG4gICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgYCxbdC5CdXR0b25MYXlvdXQuZnVsbF06ci5jc3NgXG4gICAgICB3aWR0aDogMTAwJTtcbiAgICBgfSxbdC5WYXJpYW50LmtpbmRdOntbdC5CdXR0b25LaW5kLnByaW1hcnldOnIuY3NzYFxuICAgICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX07XG4gICAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeUhvdmVyfTtcbiAgICAgIH1cblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5QWN0aXZlfTtcbiAgICAgIH1cblxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeUZvY3VzZWR9O1xuICAgICAgfVxuICAgIGAsW3QuQnV0dG9uS2luZC5zZWNvbmRhcnldOnIuY3NzYFxuICAgICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kU2Vjb25kYXJ5fTtcbiAgICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kU2Vjb25kYXJ5fTtcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnlUZXh0fTtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFNlY29uZGFyeUhvdmVyfTtcbiAgICAgIH1cblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnlBY3RpdmV9O1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRTZWNvbmRhcnlGb2N1c2VkfTtcbiAgICAgIH1cbiAgICBgLFt0LkJ1dHRvbktpbmQudGV4dE9ubHldOnIuY3NzYFxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG5cbiAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRGb2N1c2VkfTtcbiAgICAgIH1cbiAgICBgfX19LDQxMzA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDQyNDkpLHQpLG8obig2MTI2KSx0KX0sMzkxMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DYXJkQ29udGFpbmVyPXZvaWQgMDtjb25zdCBvPW4oNTg5MyksaT1yKG4oNzUxOCkpLGE9big5NTA3KSxsPW4oMTMzNSk7dC5DYXJkQ29udGFpbmVyPWU9PigwLG8uanN4KShjLE9iamVjdC5hc3NpZ24oe3N0eWxlOnttYXhIZWlnaHQ6ZS5tYXhIZWlnaHQsb3ZlcmZsb3dZOlwiYXV0b1wifSxpZDpcImNhcmQtY29udGFpbmVyXCIsXCJkYXRhLXRlc3RpZFwiOlwiY2FyZC1jb250YWluZXJcIn0se2NoaWxkcmVuOigwLG8uanN4KShzLHtjaGlsZHJlbjplLmNoaWxkcmVufSl9KSk7Y29uc3QgYz0oMCxpLmRlZmF1bHQpKGwuQm94KWBcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQzfTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNX07XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfSAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH1cbiAgICAkeyh7dGhlbWU6ZX0pPT5lLnB4LmxhcmdlfSAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICAke2EuTWl4aW5zLnNjcm9sbGJhci5iYXNlfTtcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuYCxzPWkuZGVmYXVsdC5kaXZgXG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9IDBweFxuICAgICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIHdpZHRoOiAxMDAlO1xuYH0sMTI0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNvbGxhcHNpYmxlQ2FyZD12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpLGk9big2Njg5KSxhPXIobig3NTE4KSksbD1uKDMxMzYpLGM9big5NjM0KSxzPW4oMTMzNSksdT1uKDM5MTEpLGQ9big3NzY5KSxmPW4oOTUwNyk7dC5Db2xsYXBzaWJsZUNhcmQ9ZT0+e2NvbnN0W3Qsbl09KDAsaS51c2VTdGF0ZSkoZS5leHBhbmRlZHx8ITEpLHI9ZT0+e24obnVsbCE9ZT9lOiF0KX07cmV0dXJuKDAsby5qc3hzKShwLE9iamVjdC5hc3NpZ24oe1wiZGF0YS10ZXN0aWRcIjpcImNvbGxhcHNpYmxlLWNhcmRcIn0se2NoaWxkcmVuOlsoMCxvLmpzeHMpKGgsT2JqZWN0LmFzc2lnbih7XCJhcmlhLWV4cGFuZGVkXCI6dCxcImRhdGEtdGVzdGlkXCI6XCJoZWFkaW5nLWNvbnRhaW5lclwiLHN0eWxlOntwb3NpdGlvbjplLmZpeGVkSGVhZGVyP1wic3RpY2t5XCI6dm9pZCAwLHRvcDowfSxvbkNsaWNrOigpPT5yKCksdGFiSW5kZXg6MCxvbktleURvd246ZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2VcIkVudGVyXCI6Y2FzZVwiU3BhY2VcIjplLnByZXZlbnREZWZhdWx0KCkscigpfX19LHtjaGlsZHJlbjpbKDAsby5qc3gpKEMse2NoaWxkcmVuOmUudGl0bGV9KSwoMCxvLmpzeHMpKFwiZGl2XCIsT2JqZWN0LmFzc2lnbih7aWQ6XCJpY29uLWNvbnRhaW5lclwifSx7Y2hpbGRyZW46W3ZvaWQgMCE9PWUuYmFkZ2VUZXh0JiYoMCxvLmpzeCkobC5CYWRnZSx7Y291bnQ6ZS5iYWRnZVRleHQsaWQ6XCJjb2xsYXBzaWJsZS1jYXJkLWhlYWRpbmctYmFkZ2VcIixcImRhdGEtdGVzdGlkXCI6XCJjb2xsYXBzaWJsZS1jYXJkLWhlYWRpbmctYmFkZ2VcIn0pLCgwLG8uanN4KShjLkljb24se2ljb246dD9cIkNoZXZyb25VcEljb25cIjpcIkNoZXZyb25Eb3duSWNvblwifSldfSkpXX0pKSx0JiYoMCxvLmpzeCkodS5DYXJkQ29udGFpbmVyLE9iamVjdC5hc3NpZ24oe21heEhlaWdodDplLm1heEhlaWdodHx8XCJub25lXCJ9LHtjaGlsZHJlbjooMCxvLmpzeCkoXCJkaXZcIix7Y2hpbGRyZW46ZS5jaGlsZHJlbn0pfSkpXX0pKX07Y29uc3QgcD1hLmRlZmF1bHQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEwMCU7XG5gLEM9KDAsYS5kZWZhdWx0KShkLlRleHQpYFxuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgJHtmLk1peGlucy50ZXh0T3ZlcmZsb3d9O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuYCxoPSgwLGEuZGVmYXVsdCkocy5Cb3gpYFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDN9O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ1fTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNX07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGdhcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUubGluZUhlaWdodC5oZWFkaW5nfTtcbiAgb3V0bGluZTogbm9uZTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKTtcbiAgd2lkdGg6IDEwMCU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgI2ljb24tY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIH1cblxuICAjY29sbGFwc2libGUtY2FyZC1oZWFkaW5nLWJhZGdlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5fTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDJ9O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDV9O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDV9O1xuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5ib3JkZXJOZXV0cmFsfTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJvcmRlck5ldXRyYWx9O1xuICB9XG5gfSw3NDAxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigxMjQpLHQpfSw5NjQ0OihlLHQpPT57dmFyIG47T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5FeHBhbmREaXJlY3Rpb249dm9pZCAwLChuPXQuRXhwYW5kRGlyZWN0aW9ufHwodC5FeHBhbmREaXJlY3Rpb249e30pKVtuLlVwPTBdPVwiVXBcIixuW24uRG93bj0xXT1cIkRvd25cIn0sNDAyMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5FeHBhbmRhYmxlQnV0dG9uPXZvaWQgMDtjb25zdCBvPW4oNTg5MyksaT1uKDY2ODkpLGE9big0MTMwKSxsPXIobig3NTE4KSksYz1uKDk2MzQpLHM9big5MTQxKSx1PW4oMzAzMCksZD1uKDEzMzUpLGY9big5NjQ0KTt0LkV4cGFuZGFibGVCdXR0b249ZT0+e3ZhciB0LG4scixsLGMscDtjb25zdFt5LGJdPSgwLGkudXNlU3RhdGUpKHtzaG93OiExLHJlcXVlc3RlZEJ5Q29sbGFwc2U6ITF9KSx4PXtzaXplOmUuc2l6ZSxraW5kOmUua2luZCxkaXNhYmxlZDplLmRpc2FibGVkfSxPPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7c2hhcGU6YS5CdXR0b25TaGFwZS5zcXVhcmUsXCJhcmlhLWxhYmVsXCI6bnVsbCE9PSh0PWVbXCJhcmlhLWxhYmVsXCJdKSYmdm9pZCAwIT09dD90OmBQcmltYXJ5IEJ1dHRvbiAke2UudGl0bGV9YH0pLEw9bnVsbCE9PShuPWUuZXhwYW5kRGlyZWN0aW9uKSYmdm9pZCAwIT09bj9uOmYuRXhwYW5kRGlyZWN0aW9uLkRvd247cmV0dXJuKDAsaS51c2VFZmZlY3QpKCgoKT0+e2lmKCF5LnJlcXVlc3RlZEJ5Q29sbGFwc2UpcmV0dXJuO2NvbnN0IGU9c2V0VGltZW91dCgoKCk9PmIoe3JlcXVlc3RlZEJ5Q29sbGFwc2U6ITEsc2hvdzohMX0pKSwyMDApO3JldHVybigpPT5jbGVhclRpbWVvdXQoZSl9KSxbeS5yZXF1ZXN0ZWRCeUNvbGxhcHNlXSksKDAsby5qc3hzKSh3LHtjaGlsZHJlbjpbKDAsby5qc3hzKShtLHtjaGlsZHJlbjpbKDAsby5qc3gpKGgsT2JqZWN0LmFzc2lnbih7fSxPLHtjaGlsZHJlbjooMCxvLmpzeCkodix7Y2hpbGRyZW46bnVsbCE9PShyPWUuY2hpbGRyZW4pJiZ2b2lkIDAhPT1yP3I6Ty50aXRsZX0pfSkpLGUuc2Vjb25kYXJ5QnV0dG9ucyYmZS5zZWNvbmRhcnlCdXR0b25zLmxlbmd0aD4wJiYoMCxvLmpzeCkoZC5Cb3gsT2JqZWN0LmFzc2lnbih7aWQ6XCJkcm9wZG93bi1jb250YWluZXJcIn0se2NoaWxkcmVuOigwLG8uanN4cykoZyxPYmplY3QuYXNzaWduKHt9LHgse3JvbGU6XCJjb21ib2JveFwiLG9uQ2xpY2s6KCk9Pnt5LnJlcXVlc3RlZEJ5Q29sbGFwc2V8fGIoe3JlcXVlc3RlZEJ5Q29sbGFwc2U6ITEsc2hvdzoheS5zaG93fSl9LFwiYXJpYS1sYWJlbFwiOlwiRXhwYW5kIFNlY29uZGFyeSBCdXR0b25zIFBhbmVsXCIsXCJhcmlhLWV4cGFuZGVkXCI6eS5zaG93fSx7Y2hpbGRyZW46W0w9PT1mLkV4cGFuZERpcmVjdGlvbi5Eb3duJiYoMCxvLmpzeCkoQyx7a2luZDpudWxsIT09KGw9ZS5raW5kKSYmdm9pZCAwIT09bD9sOmEuQnV0dG9uS2luZC5wcmltYXJ5LGljb246XCJDYXJldERvd25JY29uXCJ9KSxMPT09Zi5FeHBhbmREaXJlY3Rpb24uVXAmJigwLG8uanN4KShDLHtraW5kOm51bGwhPT0oYz1lLmtpbmQpJiZ2b2lkIDAhPT1jP2M6YS5CdXR0b25LaW5kLnByaW1hcnksaWNvbjpcIkNhcmV0VXBJY29uXCJ9KV19KSl9KSldfSksZS5zZWNvbmRhcnlCdXR0b25zJiZlLnNlY29uZGFyeUJ1dHRvbnMubGVuZ3RoPjAmJigwLG8uanN4KShzLkFuaW1hdGVQcmVzZW5jZSx7Y2hpbGRyZW46eS5zaG93JiYoMCxvLmpzeCkodS5FeHBhbmRhYmxlUGFuZWwse2V4cGFuZERpcmVjdGlvbjpMLHNlY29uZGFyeUJ1dHRvbnM6bnVsbCE9PShwPWUuc2Vjb25kYXJ5QnV0dG9ucykmJnZvaWQgMCE9PXA/cDpbXSxzdHJldGNoOmUuc3RyZXRjaEV4cGFuZGFibGVQYW5lbCxjbG9zZVBhbmVsT25TZWNvbmRhcnlCdXR0b25DbGljazplLmNsb3NlUGFuZWxPblNlY29uZGFyeUJ1dHRvbkNsaWNrLG9uQ29sbGFwc2VSZXF1ZXN0OigpPT5iKHtzaG93OiExLHJlcXVlc3RlZEJ5Q29sbGFwc2U6ITB9KSxidXR0b25TaXplOmUuc2l6ZSxkb2N1bWVudDplLmRvY3VtZW50fSl9KV19KX07Y29uc3QgcD17W2EuQnV0dG9uS2luZC5wcmltYXJ5XTplPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5VGV4dCxbYS5CdXR0b25LaW5kLnNlY29uZGFyeV06ZT0+ZS5wYWxldHRlLmJyYW5kU2Vjb25kYXJ5VGV4dCxbYS5CdXR0b25LaW5kLnRleHRPbmx5XTplPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9LEM9KDAsbC5kZWZhdWx0KShjLkljb24pYFxuICBzdmcgcGF0aCB7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplLGtpbmQ6dH0pPT5wW3RdKGUpfTtcbiAgfVxuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5saW5lSGVpZ2h0LnVpfTtcbiAgZm9udC13ZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuZm9udFdlaWdodC5ib2xkfTtcbmAsaD0oMCxsLmRlZmF1bHQpKGEuQnV0dG9uKWBcbiAgbWFyZ2luLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG5gLHY9KDAsbC5kZWZhdWx0KShkLkJveClgXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbmAsZz0oMCxsLmRlZmF1bHQpKGEuQnV0dG9uKWBcbiAgd2lkdGg6ICR7ZT0+ZS50aGVtZS5weC54eGxhcmdlfTtcbiAgcGFkZGluZzogMDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gLG09bC5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmAsdz1sLmRlZmF1bHQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbmB9LDIxMjg6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuc2V0dXBFeHBhbmRhYmxlUGFuZWw9dm9pZCAwO2NvbnN0IHI9big5NjQ0KTt0LnNldHVwRXhwYW5kYWJsZVBhbmVsPShlLHQsbj0hMSk9PntpZighZXx8MD09PWUuY2hpbGROb2Rlcy5sZW5ndGgpcmV0dXJuO2NvbnN0IG89ZS5wYXJlbnRFbGVtZW50LGk9bnVsbD09bz92b2lkIDA6by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoIWkpcmV0dXJuO2NvbnN0IGw9YS5oZWlnaHQsYz1hLndpZHRoPD1pLndpZHRofHxuP2Eud2lkdGg6aS53aWR0aCxzPWkueCtjPmRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGh8fGM8aS53aWR0aDtlLnN0eWxlLndpZHRoPWAke2N9cHhgLGUuc3R5bGUub3BhY2l0eT1cIjFcIixzP2Uuc3R5bGUucmlnaHQ9XCIwcHhcIjplLnN0eWxlLmxlZnQ9XCIwcHhcIix0PT09ci5FeHBhbmREaXJlY3Rpb24uRG93biYmKGUuc3R5bGUudG9wPWAke2kuaGVpZ2h0fXB4YCksdD09PXIuRXhwYW5kRGlyZWN0aW9uLlVwJiYoZS5zdHlsZS50b3A9LTEqbCtcInB4XCIpfX0sMzAzMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5FeHBhbmRhYmxlUGFuZWw9dm9pZCAwO2NvbnN0IG89big1ODkzKSxpPXIobig3NTE4KSksYT1uKDkxNDEpLGw9big0MTMwKSxjPW4oMTMzNSkscz1uKDIxMjgpLHU9cihuKDQ0ODMpKSxkPXt0eXBlOlwic3ByaW5nXCIsZHVyYXRpb246LjIsYm91bmNlOi4yNX07dC5FeHBhbmRhYmxlUGFuZWw9ZT0+e3ZhciB0O2NvbnN0IG49YCR7ZS5wYW5lbElkfS1leHBhbmRhYmxlLXBhbmVsYDtyZXR1cm4oMCxvLmpzeCkodS5kZWZhdWx0LE9iamVjdC5hc3NpZ24oe2ZvY3VzVHJhcE9wdGlvbnM6e2ZhbGxiYWNrRm9jdXM6YCMke259YCxjbGlja091dHNpZGVEZWFjdGl2YXRlczohMCxvbkRlYWN0aXZhdGU6ZS5vbkNvbGxhcHNlUmVxdWVzdCxpbml0aWFsRm9jdXM6ITEsZG9jdW1lbnQ6ZS5kb2N1bWVudH19LHtjaGlsZHJlbjooMCxvLmpzeCkoQyxPYmplY3QuYXNzaWduKHtyZWY6dD0+KDAscy5zZXR1cEV4cGFuZGFibGVQYW5lbCkodCxlLmV4cGFuZERpcmVjdGlvbixlLnN0cmV0Y2gpLHRhYkluZGV4OjAsaWQ6bixpbml0aWFsOlwiaW5pdGlhbFwiLGV4aXQ6XCJoaWRkZW5cIixidXR0b25TaXplOm51bGwhPT0odD1lLmJ1dHRvblNpemUpJiZ2b2lkIDAhPT10P3Q6bC5CdXR0b25TaXplLmJhc2UsYW5pbWF0ZTpcInZpc2libGVcIixyb2xlOlwibWVudVwiLHRyYW5zaXRpb246ZCxvbk1vdXNlT3ZlcjooKT0+e3ZhciBlO3JldHVybiBudWxsPT09KGU9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCl8fHZvaWQgMD09PWU/dm9pZCAwOmUuYmx1cigpfX0se2NoaWxkcmVuOmUuc2Vjb25kYXJ5QnV0dG9ucy5tYXAoKCh0LG4pPT4oMCxvLmpzeCkobC5CdXR0b24sT2JqZWN0LmFzc2lnbih7Y2xhc3NOYW1lOlwibWVudS1pdGVtXCIsdGFiSW5kZXg6bisxLHRpdGxlOnQudGl0bGUscm9sZTpcIm1lbnVpdGVtXCIsc2l6ZTplLmJ1dHRvblNpemUsZGlzYWJsZWQ6dC5kaXNhYmxlZCxraW5kOlwidGV4dE9ubHlcIixvbkNsaWNrOm49PigodCxuKT0+e2UuY2xvc2VQYW5lbE9uU2Vjb25kYXJ5QnV0dG9uQ2xpY2s/KG4ub25DbGljayh0KSxlLm9uQ29sbGFwc2VSZXF1ZXN0KCkpOm4ub25DbGljayh0LCgoKT0+ZS5vbkNvbGxhcHNlUmVxdWVzdCgpKSl9KShuLHQpLFwiYXJpYS1sYWJlbFwiOnQudGl0bGV9LHtjaGlsZHJlbjooMCxvLmpzeCkoZixPYmplY3QuYXNzaWduKHtcImFyaWEtbGFiZWxcIjp0LnRpdGxlfSx7Y2hpbGRyZW46dC50aXRsZX0pKX0pLG4pKSl9KSxcImV4cGFuZGFibGVQYW5lbFwiKX0pKX07Y29uc3QgZj0oMCxpLmRlZmF1bHQpKGMuQm94KWBcbiAgcGFkZGluZy1ib3R0b206IDFweDtcbiAgcGFkZGluZy10b3A6IDFweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuYCxwPXtbbC5CdXR0b25TaXplLnNtYWxsXTplPT5lLnB4LnNtYWxsLFtsLkJ1dHRvblNpemUuYmFzZV06ZT0+ZS5weC5iYXNlLFtsLkJ1dHRvblNpemUubGFyZ2VdOmU9PmUucHgubGFyZ2V9LEM9KDAsaS5kZWZhdWx0KShhLm1vdGlvbi5kaXYpYFxuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gIG9wYWNpdHk6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAke2U9PmUudGhlbWUucHgueHh4bGFyZ2V9O1xuICBtYXgtd2lkdGg6IG1heC1jb250ZW50O1xuICBtaW4td2lkdGg6IDgwcHg7XG4gIGJhY2tncm91bmQ6ICR7ZT0+ZS50aGVtZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgYm94LXNoYWRvdzogJHtlPT5lLnRoZW1lLnNoYWRvdy5iYXNlfTtcbiAgaGVpZ2h0OiBtYXgtY29udGVudDtcbiAgei1pbmRleDogMTAwO1xuXG4gIC5tZW51LWl0ZW0ge1xuICAgIGJvcmRlci1yYWRpdXM6IHVuc2V0O1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm9yZGVyOiB0cmFuc3BhcmVudDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBvdmVyZmxvdzogY2xpcDtcbiAgICAmID4gKiB7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIH1cbiAgICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0Lm5vcm1hbH07XG4gICAgcGFkZGluZy10b3A6ICR7KHt0aGVtZTplLGJ1dHRvblNpemU6dH0pPT5wW3RdKGUpfTtcbiAgICBwYWRkaW5nLWJvdHRvbTogJHsoe3RoZW1lOmUsYnV0dG9uU2l6ZTp0fSk9PnBbdF0oZSl9O1xuICAgIHBhZGRpbmctbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gICAgcGFkZGluZy1yaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG5cbiAgICA6Zmlyc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgICB9XG5cbiAgICA6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICAgIH1cblxuICAgICY6Zm9jdXMsXG4gICAgJjpob3ZlciB7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tncm91bmQ6ICR7ZT0+ZS50aGVtZS5wYWxldHRlLmJhY2tncm91bmQyfTtcbiAgICB9XG5cbiAgICAmOmRpc2FibGVkLFxuICAgICY6YWN0aXZlOmRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dEluYWN0aXZlfTtcbiAgICAgIGJhY2tncm91bmQ6ICR7ZT0+ZS50aGVtZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgICAgIG9wYWNpdHk6IHVuc2V0O1xuICAgIH1cbiAgfVxuYH0sNDkyNTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNDAyMSksdCksbyhuKDk2NDQpLHQpfSwyNjA5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig1OTcxKSx0KX0sNTk3MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRvZ2dsZT12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGE9big2Njg5KSxsPW8obig3NTE4KSksYz1uKDg1MTApLHM9bigxMzM1KTt0LlRvZ2dsZT1lPT57dmFye2lkOnQsbGFiZWw6bixvbkNoYW5nZTpvLGxhYmVsU2lkZTpsPVwicmlnaHRcIix0eXBlOmM9XCJjaGVja2JveFwifT1lLHM9cihlLFtcImlkXCIsXCJsYWJlbFwiLFwib25DaGFuZ2VcIixcImxhYmVsU2lkZVwiLFwidHlwZVwiXSk7Y29uc3RbaCx2XT0oMCxhLnVzZVN0YXRlKShzLmNoZWNrZWQpO3JldHVybigwLGEudXNlRWZmZWN0KSgoKCk9Pnt2KHMuY2hlY2tlZCl9KSxbcy5jaGVja2VkXSksKDAsaS5qc3hzKSh1LE9iamVjdC5hc3NpZ24oe2xhYmVsU2lkZTpsfSx7Y2hpbGRyZW46W24/KDAsaS5qc3gpKEMsT2JqZWN0LmFzc2lnbih7aHRtbEZvcjp0fSx7Y2hpbGRyZW46bn0pKTp2b2lkIDAsKDAsaS5qc3hzKShkLE9iamVjdC5hc3NpZ24oe2lzQ2hlY2tlZDpofSx7Y2hpbGRyZW46WygwLGkuanN4KShwLE9iamVjdC5hc3NpZ24oe30scyx7aWQ6dCx0eXBlOmMsb25DaGFuZ2U6ZT0+e3YoZS50YXJnZXQuY2hlY2tlZCksbnVsbD09b3x8byhlKX19KSksKDAsaS5qc3gpKGYse3RhYkluZGV4Oi0xLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIixpc0NoZWNrZWQ6aH0pXX0pKV19KSl9O2NvbnN0IHU9bC5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhsYXJnZX07XG4gIGZsZXgtZGlyZWN0aW9uOiAkeyh7bGFiZWxTaWRlOmV9KT0+XCJsZWZ0XCI9PT1lP1wicm93XCI6XCJyb3ctcmV2ZXJzZVwifTtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgueGxhcmdlfTtcbmAsZD0oMCxsLmRlZmF1bHQpKHMuQm94KWBcbiAgLS1weC10b2dnbGU6ICR7KHt0aGVtZTplfSk9PmUucHgueGxhcmdlfTtcbiAgLS1weC1rbm9iOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiB2YXIoLS1weC10b2dnbGUpO1xuICB3aWR0aDogY2FsYygyICogdmFyKC0tcHgtdG9nZ2xlKSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkXG4gICAgJHsoe2lzQ2hlY2tlZDplLHRoZW1lOnR9KT0+ZT90LnBhbGV0dGUuYnJhbmRQcmltYXJ5OnQucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIGJvcmRlci1yYWRpdXM6IGNhbGMoMC41ICogdmFyKC0tcHgtdG9nZ2xlKSk7XG5cbiAgYmFja2dyb3VuZDogJHsoe2lzQ2hlY2tlZDplLHRoZW1lOnR9KT0+ZT90LnBhbGV0dGUuYnJhbmRQcmltYXJ5OnQucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKSxcbiAgICBib3JkZXItY29sb3IgdmFyKC0tLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbik7XG5cbiAgJjpmb2N1cy13aXRoaW4ge1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Rm9jdXNlZH07XG4gIH1cbmAsZj1sLmRlZmF1bHQuYnV0dG9uYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiB2YXIoLS1weC1rbm9iKTtcbiAgaGVpZ2h0OiB2YXIoLS1weC1rbm9iKTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQ6ICR7KHtpc0NoZWNrZWQ6ZSx0aGVtZTp0fSk9PmU/dC5wYWxldHRlLmJyYW5kUHJpbWFyeVRleHQ6dC5wYWxldHRlLmlucHV0Q29sb3J9O1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHRyYW5zaXRpb246IGxlZnQgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKSwgYmFja2dyb3VuZCB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTsgLyogQWxsb3cgcGFzcy10aHJ1IGZvciBuYXRpdmUgaW5wdXQgKi9cbmAscD0oMCxsLmRlZmF1bHQpKGMuUmF3SW5wdXQpYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3BhY2l0eTogMDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBkaXNwbGF5OiBibG9jaztcblxuICAmOmNoZWNrZWQgKyAke2Z9IHtcbiAgICBsZWZ0OiBjYWxjKDEwMCUgLSAkeyh7dGhlbWU6ZX0pPT5lLnB4LmxhcmdlfSk7XG4gIH1cbiAgJjpkaXNhYmxlZCArICR7Zn0ge1xuICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgfVxuICAmOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbmAsQz1sLmRlZmF1bHQubGFiZWxgYH0sNTMwMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn0sbz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJhZGdlPXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1vKG4oNzUxOCkpLGw9bigxMzM1KTt0LkJhZGdlPWU9Pnt2YXJ7Y291bnQ6dD0wLG1heDpufT1lLG89cihlLFtcImNvdW50XCIsXCJtYXhcIl0pO2xldCBhPXQudG9TdHJpbmcoKTtyZXR1cm4gbiYmdD5uJiYoYT1gJHtufStgKSwoMCxpLmpzeCkoYyxPYmplY3QuYXNzaWduKHt9LG8se2NoaWxkcmVuOmF9KSl9O2NvbnN0IGM9KDAsYS5kZWZhdWx0KShsLkJveClgXG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5zdGF0dXNDcml0aWNhbH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnBpbGx9O1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5fY29sb3Iud2hpdGV9O1xuICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuc21hbGx9O1xuICBtaW4td2lkdGg6ICR7KHt0aGVtZTplfSk9PmUucHgueGxhcmdlfTtcbiAgcGFkZGluZzogMnB4IDZweDtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBib3gtc2hhZG93OiAkeyh7dGhlbWU6ZX0pPT5lLnNoYWRvdy5iYXNlfTtcbmB9LDMxMzY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDUzMDApLHQpfSw2ODk1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksaT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fSxhPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2FsZW5kYXI9dm9pZCAwO2NvbnN0IGw9big1ODkzKSxjPW4oNjY4OSkscz1hKG4oNzUxOCkpLHU9big3MjkyKSxkPW4oNDEzMCksZj1uKDEzMzUpLHA9big5NTA3KSxDPWkobig1Mjk5KSk7dC5DYWxlbmRhcj0oe3ZhbHVlOmUsb25DaGFuZ2U6dCxvbkRpc21pc3M6bn0pPT57Y29uc3Rbcl09KDAsYy51c2VTdGF0ZSkoZSksW28saV09KDAsYy51c2VTdGF0ZSkoZSksYT0oMCxjLnVzZUNhbGxiYWNrKSgoZT0+e2koZSksbnVsbD09dHx8dChlKX0pLFtdKSxzPSgwLGMudXNlQ2FsbGJhY2spKCgoKT0+e2EociksbnVsbD09bnx8bigpfSksW10pO3JldHVybigwLGwuanN4cykoZyxPYmplY3QuYXNzaWduKHtcImRhdGEtdGVzdGlkXCI6XCJyZWFjdC1jYWxlbmRhclwifSx7Y2hpbGRyZW46WygwLGwuanN4KSh1LkNhbGVuZGFyLHt2YWx1ZTpvLG9uQ2hhbmdlOmEsY2FsZW5kYXJUeXBlOlwiVVNcIixkZWZhdWx0VmlldzpcIm1vbnRoXCIsbWluRGV0YWlsOlwieWVhclwiLG5leHQyTGFiZWw6bnVsbCxwcmV2MkxhYmVsOm51bGwsc2hvd0ZpeGVkTnVtYmVyT2ZXZWVrczohMCxtaW5EYXRlOm5ldyBEYXRlfSksKDAsbC5qc3hzKShoLHtjaGlsZHJlbjpbKDAsbC5qc3gpKHYse1wiZGF0YS10ZXN0aWRcIjpcImNhbGVuZGFyLWNhbmNlbC1idXR0b25cIixcImFyaWEtbGFiZWxcIjpcImNhbmNlbC1idXR0b25cIixsYWJlbDpcIkNhbmNlbFwiLHNpemU6XCJiYXNlXCIsa2luZDpcInRleHRPbmx5XCIsb25DbGljazpzfSksKDAsbC5qc3gpKHYse1wiZGF0YS10ZXN0aWRcIjpcImNhbGVuZGFyLWFwcGx5LWJ1dHRvblwiLFwiYXJpYS1sYWJlbFwiOlwiYXBwbHktYnV0dG9uXCIsbGFiZWw6XCJBcHBseVwiLHNpemU6XCJiYXNlXCIsa2luZDpcInByaW1hcnlcIixvbkNsaWNrOm59KV19KV19KSl9O2NvbnN0IGg9KDAscy5kZWZhdWx0KShmLkJveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfSAwcHhgfTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgbWFyZ2luLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfWB9O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9O1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDZ9O1xuICBib3JkZXItdG9wOiBub25lO1xuYCx2PSgwLHMuZGVmYXVsdCkoZC5CdXR0b24pYFxuICBwYWRkaW5nOiAkeyh7dGhlbWU6ZX0pPT5gJHtlLnB4LnNtYWxsfSAke2UucHguc21hbGx9YH07XG4gIG1hcmdpbi1yaWdodDogJHsoe3RoZW1lOmV9KT0+YCR7ZS5weC5zbWFsbH1gfTtcbmAsZz0oMCxzLmRlZmF1bHQpKGYuQm94KWBcbiAgJHtDfVxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmb250LWZhbWlseTogJHtwLkZvbnRTdGFja307XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgLnJlYWN0LWNhbGVuZGFyIHtcbiAgICBtaW4td2lkdGg6IDIzMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH07XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb25fX2Fycm93IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDR9ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gICAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmxhcmdlfTtcbiAgICA6ZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgICB9XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uX19sYWJlbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX3ZpZXdDb250YWluZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH0gIWltcG9ydGFudDtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Q29sb3J9O1xuICAgIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gICAgYWJiciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fdGlsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH0gIWltcG9ydGFudDtcbiAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgICBhc3BlY3QtcmF0aW86IDEvMTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgOmRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dEluYWN0aXZlfTtcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICA6aG92ZXIge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICAgIDpob3ZlciB7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYnJhbmRQcmltYXJ5fTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgIH1cbiAgICA6Zm9jdXMge1xuICAgICAgYm9yZGVyOiAycHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX07XG4gICAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgICB9XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX190aWxlLS1ub3cge1xuICAgIGJvcmRlcjogMnB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9ICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX190aWxlLS1hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnl9ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5icmFuZFByaW1hcnlUZXh0fTtcbiAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgICA6Zm9jdXMge1xuICAgICAgYm9yZGVyOiAycHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJyYW5kUHJpbWFyeX07XG4gICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgIH1cbiAgfVxuYH0sOTczNDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNjg5NSksdCl9LDYwNjI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRHJvcGRvd25NZW51PXZvaWQgMDtjb25zdCBvPW4oNTg5MyksaT1uKDY2ODkpLGE9bigxMzM1KSxsPW4oOTYzNCksYz1yKG4oNzUxOCkpLHM9big3MjYxKSx1PW4oMjc5KSxkPW4oMzQ3KTt0LkRyb3Bkb3duTWVudT0oe2xhYmVsOmUsb3B0aW9uczp0PVtbXV0scGxhY2Vob2xkZXI6bj1cIlNlbGVjdCBhbiBvcHRpb25cIixzZWxlY3RlZDpyLG9uT3B0aW9uSG92ZXI6YyxvbkNoYW5nZTpoLHJlbmRlckxhYmVsOnYsZml0Q29udGVudDpnfSk9Pnt2YXIgbSx3O2NvbnN0W3ksYl09KDAsaS51c2VTdGF0ZSkoITEpOygwLGkudXNlRWZmZWN0KSgoKCk9PnsxPT09dFswXS5sZW5ndGgmJngoITEpfSksW3RdKTtjb25zdCB4PWU9PntiKG51bGwhPWU/ZToheSl9LHtmb2N1c2VkT3B0aW9uOk8saGFuZGxlS2V5RG93bjpMfT0oMCxkLnVzZURyb3Bkb3duS2V5Ym9hcmROYXZpZ2F0aW9uKSh0LHIseSx4LGgpO3JldHVybigwLG8uanN4KShmLE9iamVjdC5hc3NpZ24oe2ZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixvbkJsdXI6ZT0+e2UuY3VycmVudFRhcmdldC5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpfHxiKCExKX0sb25LZXlEb3duOkx9LHtjaGlsZHJlbjooMCxvLmpzeHMpKGEuQm94LE9iamVjdC5hc3NpZ24oe2dhcDpcImJhc2VcIixmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsc3R5bGU6e3dpZHRoOlwiMTAwJVwifX0se2NoaWxkcmVuOltlJiYoMCxvLmpzeCkoXCJsYWJlbFwiLE9iamVjdC5hc3NpZ24oe2h0bWxGb3I6XCJkcm9wZG93bi1idXR0b25cIn0se2NoaWxkcmVuOigwLG8uanN4KShzLk9wdGlvblRpdGxlLHtjaGlsZHJlbjplfSl9KSksKDAsby5qc3hzKShwLHtjaGlsZHJlbjpbdj92KHJ8fHt0aXRsZTpuLHZhbHVlOm51bGx9LHkseCxPKTooMCxvLmpzeHMpKEMsT2JqZWN0LmFzc2lnbih7cm9sZTpcImNvbWJveGJveFwiLHRhYkluZGV4OjAsXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjpgbWVudS1vcHRpb24tJHtudWxsPT1PP3ZvaWQgMDpPLnZhbHVlfWAsXCJhcmlhLWV4cGFuZGVkXCI6eSxcImFyaWEtaGFzcG9wdXBcIjpcImxpc3Rib3hcIixcImFyaWEtY29udHJvbHNcIjpcImRyb3Bkb3duLWxpc3Rib3hcIixvbkNsaWNrOigpPT54KCksYXM6XCJidXR0b25cIixcImRhdGEtdGVzdGlkXCI6XCJkcm9wZG93bi1idXR0b25cIix0aXRsZTpudWxsIT09KG09bnVsbD09cj92b2lkIDA6ci50aXRsZSkmJnZvaWQgMCE9PW0/bTpufSx7Y2hpbGRyZW46WyhudWxsPT1yP3ZvaWQgMDpyLmljb25VcmwpJiYoMCxvLmpzeCkodS5CdXR0b25JbWFnZSx7c3JjOnIuaWNvblVybH0pLCgwLG8uanN4KShzLk9wdGlvblRpdGxlLE9iamVjdC5hc3NpZ24oe1wiYXJpYS1saXZlXCI6XCJwb2xpdGVcIixcImRhdGEtdGVzdGlkXCI6XCJzZWxlY3RlZC1vcHRpb25cIn0se2NoaWxkcmVuOm51bGwhPT0odz1udWxsPT1yP3ZvaWQgMDpyLnRpdGxlKSYmdm9pZCAwIT09dz93Om59KSksKDAsby5qc3gpKGwuSWNvbix7aWNvbjp5JiZ0WzBdLmxlbmd0aD4xP1wiQ2hldnJvblVwSWNvblwiOlwiQ2hldnJvbkRvd25JY29uXCJ9KV19KSksdC5sZW5ndGgmJnRbMF0ubGVuZ3RoPjEmJnkmJigwLG8uanN4KSh1Lk1lbnUse21lbnVJZDpcImRyb3Bkb3duLWxpc3Rib3hcIixvcHRpb25zOnQsc2VsZWN0ZWQ6cixoYW5kbGVFeHBhbmRNZW51Ongsb25PcHRpb25Ib3ZlcjpjLG9uQ2hhbmdlOmgsZml0Q29udGVudDpnLGZvY3VzZWRPcHRpb246TyxhYnNvbHV0ZVBvc2l0aW9uOiEwfSldfSldfSkpfSkpfTtjb25zdCBmPSgwLGMuZGVmYXVsdCkoYS5Cb3gpYFxuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYCxwPSgwLGMuZGVmYXVsdCkoYS5Cb3gpYGAsQz0oMCxjLmRlZmF1bHQpKGEuQm94KWBcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQ0fTtcbiAgYm9yZGVyOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0QmFja2dyb3VuZH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRXZWlnaHQuYm9sZH07XG4gIGdhcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUubGluZUhlaWdodC51aX07XG4gIG91dGxpbmU6IG5vbmU7XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5zbWFsbH1gfTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb24pO1xuICB3aWR0aDogMTAwJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAke2wuSWNvbn0ge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICB9XG5cbiAgJjpmb2N1cy13aXRoaW4ge1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Rm9jdXNlZH07XG4gIH1cbmB9LDYwMjY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDYwNjIpLHQpLG8obigyNzkpLHQpfSwyNzk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQnV0dG9uSW1hZ2U9dC5NZW51PXZvaWQgMDtjb25zdCBvPW4oNTg5MyksaT1yKG4oNjY4OSkpLGE9cihuKDc1MTgpKSxsPW4oOTYzNCksYz1uKDEzMzUpLHM9big3MjYxKTt0Lk1lbnU9KHtvcHRpb25zOmUsc2VsZWN0ZWQ6bixtZW51SWQ6cixoYW5kbGVFeHBhbmRNZW51OmEsb25PcHRpb25Ib3ZlcjpsLG9uQ2hhbmdlOmMsd2lkdGg6aCxoZWlnaHQ6dixoZWFkZXI6Zyxmb2N1c2VkT3B0aW9uOm0sYWJzb2x1dGVQb3NpdGlvbjp3fSk9Pntjb25zdCB5PWU9PntudWxsPT1sfHxsKGUpfTtyZXR1cm4oMCxvLmpzeHMpKHUsT2JqZWN0LmFzc2lnbih7cm9sZTpcImxpc3Rib3hcIixmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsb25Nb3VzZUxlYXZlOigpPT57eShudWxsKX0sXCJkYXRhLXRlc3RpZFwiOlwibWVudVwiLGlkOnIsd2lkdGg6aCxoZWlnaHQ6dixhYnNvbHV0ZVBvc2l0aW9uOnd9LHtjaGlsZHJlbjpbZyYmKDAsby5qc3hzKShpLmRlZmF1bHQuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxvLmpzeCkoZix7Y2hpbGRyZW46KDAsby5qc3gpKHMuT3B0aW9uVGl0bGUse2NoaWxkcmVuOmd9KX0pLCgwLG8uanN4KShDLHt9KV19KSxlLm1hcCgoKGUscik9PigwLG8uanN4cykoaS5kZWZhdWx0LkZyYWdtZW50LHtjaGlsZHJlbjpbMCE9PXImJigwLG8uanN4KShDLHt9KSxlLm1hcCgoKGUscik9PigwLG8uanN4cykoZCxPYmplY3QuYXNzaWduKHtyb2xlOlwib3B0aW9uXCIsaXNGb2N1c2VkOihudWxsPT1tP3ZvaWQgMDptLnZhbHVlKT09PWUudmFsdWUsXCJhcmlhLXNlbGVjdGVkXCI6KG51bGw9PW4/dm9pZCAwOm4udmFsdWUpPT09ZS52YWx1ZSxhbGlnbkl0ZW1zOlwiY2VudGVyXCIsYXM6XCJidXR0b25cIixcImRhdGEtdGVzdGlkXCI6YG1lbnUtb3B0aW9uLSR7cn1gLGlkOmBtZW51LW9wdGlvbi0ke2UudmFsdWV9YCx0aXRsZTplLnRpdGxlLG9uQ2xpY2s6KCk9PntlLm92ZXJyaWRlT25DbGljaz9lLm92ZXJyaWRlT25DbGljayhlKTpjKGUpLG51bGw9PWF8fGEoKX0sb25Nb3VzZU92ZXI6KCk9PnkoZS52YWx1ZSl9LHtjaGlsZHJlbjpbKG51bGw9PWU/dm9pZCAwOmUuaWNvblVybCkmJigwLG8uanN4KSh0LkJ1dHRvbkltYWdlLHtzcmM6ZS5pY29uVXJsLHN0eWxlOnttYXJnaW5SaWdodDpcIjhweFwifX0pLCgwLG8uanN4KShzLk9wdGlvblRpdGxlLHtjaGlsZHJlbjplLnRpdGxlfSksKG51bGw9PW4/dm9pZCAwOm4udmFsdWUpPT09ZS52YWx1ZT8oMCxvLmpzeCkocCx7aWNvbjpcIkNoZWNrSWNvblwifSk6KDAsby5qc3gpKHAse2NoaWxkcmVuOigwLG8uanN4KShvLkZyYWdtZW50LHt9KX0pXX0pLHIpKSldfSxyKSkpXX0pKX07Y29uc3QgdT0oMCxhLmRlZmF1bHQpKGMuQm94KWBcbiAgd2lkdGg6ICR7KHt3aWR0aDplLGZpdENvbnRlbnQ6dH0pPT5lfHwodD9cImZpdC1jb250ZW50XCI6XCIxMDAlXCIpfTtcbiAgbWF4LWhlaWdodDogJHsoe2hlaWdodDplfSk9Pm51bGwhPWU/ZTpcImZpdC1jb250ZW50XCJ9O1xuICB0b3A6ICR7KHt0aGVtZTplfSk9PmBjYWxjKDEwMCUgKyAke2UucHgueHNtYWxsfSlgfTtcbiAgcmlnaHQ6IDA7XG4gIGJveC1zaGFkb3c6IDBweCA0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH07XG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICB6LWluZGV4OiAxMDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgYm9yZGVyOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0QmFja2dyb3VuZH07XG4gIHBvc2l0aW9uOiAkeyh7YWJzb2x1dGVQb3NpdGlvbjplfSk9PmU/XCJhYnNvbHV0ZVwiOlwiaW5pdGlhbFwifTtcbmAsZD0oMCxhLmRlZmF1bHQpKGMuQm94KWBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYm9yZGVyOiAkeyh7aXNGb2N1c2VkOmUsdGhlbWU6dH0pPT5lP2AxcHggc29saWQgJHt0LnBhbGV0dGUuYm9yZGVyTmV1dHJhbH1gOlwiMXB4IHNvbGlkIHRyYW5zcGFyZW50XCJ9O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgb3V0bGluZTogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5zbWFsbH1gfTtcbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQyfTtcbiAgfVxuYCxmPSgwLGEuZGVmYXVsdCkoYy5Cb3gpYFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0SGVscH07XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5zbWFsbH1gfTtcbmAscD0oMCxhLmRlZmF1bHQpKGwuSWNvbilgXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuYCxDPSgwLGEuZGVmYXVsdCkoYy5Cb3gpYFxuICBib3JkZXItdG9wOiAxcHggc29saWQgJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0QmFja2dyb3VuZH07XG5gO3QuQnV0dG9uSW1hZ2U9YS5kZWZhdWx0LmltZ2BcbiAgaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnhsYXJnZX07XG4gIHdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnhsYXJnZX07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucmFkaXVzLnNtYWxsfTtcbmB9LDcyNjE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC51c2VUb29sdGlwPXQuaXNFbGVtZW50T3ZlcmZsb3duPXQuT3B0aW9uVGl0bGU9dm9pZCAwO2NvbnN0IGk9big1ODkzKSxhPW4oNjY4OSksbD1uKDc3NjkpLGM9big5NTA3KSxzPW8obig3NTE4KSk7dC5PcHRpb25UaXRsZT1lPT57dmFye2NoaWxkcmVuOm59PWUsbz1yKGUsW1wiY2hpbGRyZW5cIl0pO3JldHVybigwLGkuanN4KSh1LE9iamVjdC5hc3NpZ24oe3JlZjooMCx0LnVzZVRvb2x0aXApKG4pfSxvLHtjaGlsZHJlbjpufSkpfTtjb25zdCB1PSgwLHMuZGVmYXVsdCkobC5UZXh0KWBcbiAgJHtjLk1peGlucy50ZXh0T3ZlcmZsb3d9O1xuICBtYXJnaW4tbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuYDtmdW5jdGlvbiBkKGUpe3JldHVybiBlLnNjcm9sbEhlaWdodD5lLmNsaWVudEhlaWdodHx8ZS5zY3JvbGxXaWR0aD5lLmNsaWVudFdpZHRofXQuaXNFbGVtZW50T3ZlcmZsb3duPWQsdC51c2VUb29sdGlwPWU9PigwLGEudXNlQ2FsbGJhY2spKCh0PT57dCYmZSYmZCh0KSYmKHQudGl0bGU9ZSl9KSxbXSl9LDcwMDY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5JY29uPXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1vKG4oNzUxOCkpLGw9bigxMzM1KSxjPW4oOTUwNykscz1uKDM0NzEpLHU9big5NjY5KTt0Lkljb249KDAsYS5kZWZhdWx0KSgoZT0+e3ZhcntpY29uOnQsY2hpbGRyZW46bixzaXplOm89XCJiYXNlXCIsY29udGFpbmVyU2l6ZTphLFwiZGF0YS10ZXN0aWRcIjpsfT1lLGM9cihlLFtcImljb25cIixcImNoaWxkcmVuXCIsXCJzaXplXCIsXCJjb250YWluZXJTaXplXCIsXCJkYXRhLXRlc3RpZFwiXSk7cmV0dXJuKDAsaS5qc3gpKGYsT2JqZWN0LmFzc2lnbih7fSxjLHtpY29uU2l6ZTpvLGNvbnRhaW5lclNpemU6YXx8byxqdXN0aWZ5Q29udGVudDpcImNlbnRlclwiLGFsaWduSXRlbXM6XCJjZW50ZXJcIixcImRhdGEtdGVzdGlkXCI6bH0se2NoaWxkcmVuOnQ/KDAsaS5qc3gpKGQsT2JqZWN0LmFzc2lnbih7YXJpYUxhYmVsOmNbXCJhcmlhLWxhYmVsXCJdLGljb246dH0sYykpOm59KSl9KSlgYDtjb25zdCBkPSgwLGEuZGVmYXVsdCkoKGU9Pnt2YXJ7aWNvbjp0LGFyaWFMYWJlbDpufT1lLG89cihlLFtcImljb25cIixcImFyaWFMYWJlbFwiXSk7Y29uc3QgYT1zLkljb25TZXRbdF07cmV0dXJuKDAsaS5qc3gpKGEsT2JqZWN0LmFzc2lnbih7cm9sZTpcImltZ1wiLFwiYXJpYS1sYWJlbFwiOm59LG8pKX0pKWBgLGY9KDAsYS5kZWZhdWx0KShsLkJveClgXG4gIC8qKlxuICAgKiAxLiBJbml0aWFsaXplIGxvY2FsIHZhcmlhYmxlcyB3aXRoIHJlYXNvbmFibGUgZGVmYXVsdHNcbiAgICovXG4gIC0tcHgtZGVmYXVsdDogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5iYXNlfTtcblxuICAvKipcbiAgICogMi4gSW5qZWN0IHZhcmlhbnRzIC0tID8gV2hhdCBhcmUgVmFyaWFudHNcbiAgICovXG4gICR7KDAsYy5nZXRWYXJpYW50Q1NTKSh1LnZhcmlhbnRzLHUuVmFyaWFudC5jb250YWluZXJTaXplKX1cbiAgJHsoMCxjLmdldFZhcmlhbnRDU1MpKHUudmFyaWFudHMsdS5WYXJpYW50Lmljb25TaXplKX1cblxuICB3aWR0aDogdmFyKC0tcHgtY29udGFpbmVyLCB2YXIoLS1weC1kZWZhdWx0KSk7XG4gIGhlaWdodDogdmFyKC0tcHgtY29udGFpbmVyLCB2YXIoLS1weC1kZWZhdWx0KSk7XG5cbiAgLyogU1ZHIEFzc2V0ICovXG4gICYgPiAqLFxuICAke2R9IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogdmFyKC0tcHgtaWNvbiwgdmFyKC0tcHgtZGVmYXVsdCkpO1xuICAgIGhlaWdodDogdmFyKC0tcHgtaWNvbiwgdmFyKC0tcHgtZGVmYXVsdCkpO1xuICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gIH1cbmB9LDk2Njk6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudmFyaWFudHM9dC5WYXJpYW50PXZvaWQgMDtjb25zdCByPW4oNzUxOCk7dC5WYXJpYW50PXtpY29uU2l6ZTpcImljb25TaXplXCIsY29udGFpbmVyU2l6ZTpcImNvbnRhaW5lclNpemVcIn0sdC52YXJpYW50cz17W3QuVmFyaWFudC5pY29uU2l6ZV06e3hzbWFsbDpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54c21hbGx9O1xuICAgIGAsc21hbGw6ci5jc3NgXG4gICAgICAtLXB4LWljb246ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUuc21hbGx9O1xuICAgIGAsYmFzZTpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5iYXNlfTtcbiAgICBgLGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1pY29uOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLmxhcmdlfTtcbiAgICBgLHhsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54bGFyZ2V9O1xuICAgIGAseHhsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtaWNvbjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54eGxhcmdlfTtcbiAgICBgLHh4eGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1pY29uOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnh4eGxhcmdlfTtcbiAgICBgfSxbdC5WYXJpYW50LmNvbnRhaW5lclNpemVdOnt4c21hbGw6ci5jc3NgXG4gICAgICAtLXB4LWNvbnRhaW5lcjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS54c21hbGx9O1xuICAgIGAsc21hbGw6ci5jc3NgXG4gICAgICAtLXB4LWNvbnRhaW5lcjogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5zbWFsbH07XG4gICAgYCxiYXNlOnIuY3NzYFxuICAgICAgLS1weC1jb250YWluZXI6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUuYmFzZX07XG4gICAgYCxsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtY29udGFpbmVyOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLmxhcmdlfTtcbiAgICBgLHhsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtY29udGFpbmVyOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnhsYXJnZX07XG4gICAgYCx4eGxhcmdlOnIuY3NzYFxuICAgICAgLS1weC1jb250YWluZXI6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUueHhsYXJnZX07XG4gICAgYCx4eHhsYXJnZTpyLmNzc2BcbiAgICAgIC0tcHgtY29udGFpbmVyOiAkeyh7dGhlbWU6ZX0pPT5lLmljb25TaXplLnh4eGxhcmdlfTtcbiAgICBgfX19LDk2MzQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDcwMDYpLHQpfSw5Mjg1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJlbGxGaWxsZWRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5CZWxsRmlsbGVkSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3hzKShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMjBcIixoZWlnaHQ6XCIyMFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46WygwLG8uanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0xMiAyQzExLjIyOTYgMiAxMC41ODQ1IDIuNTgzNzkgMTAuNTA3OCAzLjM1MDQxQzEwLjQ5NTIgMy40NzY3NyAxMC40MDU3IDMuNTgxNTcgMTAuMjg0NiAzLjYxOTcxQzguMDY1NTQgNC4zMTg1MSA2LjQyMjM4IDYuMzM3OTYgNi4zMDAzMyA4Ljc3ODkzTDYuMTIzODIgMTIuMzA5MUM2LjA5OTM2IDEyLjc5ODIgNS44MTMzMSAxMy4yMzYyIDUuMzc1MyAxMy40NTUyTDQuNjA3MzkgMTMuODM5MkM0LjE0NzYxIDE0LjA2OTEgMy44NTcxOCAxNC41MzkgMy44NTcxOCAxNS4wNTMxVjE2LjI1QzMuODU3MTggMTYuNjI0OCA0LjE2MDk4IDE2LjkyODYgNC41MzU3NSAxNi45Mjg2SDE5LjQ2NDNDMTkuODM5MSAxNi45Mjg2IDIwLjE0MjkgMTYuNjI0OCAyMC4xNDI5IDE2LjI1VjE1LjA1MzFDMjAuMTQyOSAxNC41MzkgMTkuODUyNSAxNC4wNjkxIDE5LjM5MjcgMTMuODM5MkwxOC42MjQ3IDEzLjQ1NTJDMTguMTg2NyAxMy4yMzYyIDE3LjkwMDYgMTIuNzk4MiAxNy44NzYyIDEyLjMwOTFMMTcuNjk5NyA4Ljc3ODkzQzE3LjU3NzYgNi4zMzc5NiAxNS45MzQ0IDQuMzE4NTEgMTMuNzE1NCAzLjYxOTcyQzEzLjU5NDIgMy41ODE1NyAxMy41MDQ4IDMuNDc2NzggMTMuNDkyMiAzLjM1MDQxQzEzLjQxNTUgMi41ODM4IDEyLjc3MDQgMiAxMiAyWlwiLGZpbGw6dH0pLCgwLG8uanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk05LjI4NTcxIDE4LjI4NTdDOS4yODU3MSAxOS43ODQ4IDEwLjUwMDkgMjEgMTIgMjFDMTMuNDk5MSAyMSAxNC43MTQzIDE5Ljc4NDggMTQuNzE0MyAxOC4yODU3TDkuMjg1NzEgMTguMjg1N1pcIixmaWxsOnR9KV19KSl9fSw0NzE4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJlbGxJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5CZWxsSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxNVwiLGhlaWdodDpcIjE1XCIsdmlld0JveDpcIjAgMCAxNSAxNVwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNy40NzMwNiAxLjIyOTQzQzYuNTE5MyAxLjIyOTQzIDUuODcyOTEgMS45ODM5OSA1LjY1MzcxIDIuNzI2OTdDNS42NTIwNyAyLjcyOTMyIDUuNjQ5MjEgMi43MzMwMyA1LjY0NDg1IDIuNzM3NTZDNS42MzkyIDIuNzQzNDIgNS42MzI2NCAyLjc0ODk2IDUuNjI1OTkgMi43NTM1NUM1LjYxOTI2IDIuNzU4MTkgNS42MTQ1MiAyLjc2MDQgNS42MTMgMi43NjEwMkw1LjYxMjY1IDIuNzYxMTdDNS4wNTA4OCAyLjk5MjUxIDQuMzkxOTMgMy4zNjAyMiAzLjg3Njk3IDQuMDMzNTdDMy4zNTgxNSA0LjcxMTk2IDMuMDE5NDkgNS42NTU3MSAzLjAxOTQ1IDYuOTc3NDlMNS42NTM3MSAyLjcyNjk3TDMuMDE5NDUgNi45Nzc3NkMzLjAxODY2IDguMzAxNjUgMi44Nzg3MSA5LjAzMTMgMi42NzA5MSA5LjUzNDM5QzIuNDg4NzkgOS45NzUzMSAyLjI0ODg5IDEwLjI2NTggMS45MTIgMTAuNjczOEwxLjkxMTg1IDEwLjY3NEMxLjg2MjYzIDEwLjczMzYgMS44MTEzNSAxMC43OTU3IDEuNzU3ODcgMTAuODYxMkMxLjE0OTIzIDExLjYwNiAxLjcyNzI5IDEyLjY0MTkgMi42NTk4NiAxMi42NDE5SDUuMDkwMTlDNS4yMTE5MSAxMi45OCA1LjQwNzI2IDEzLjI5MDYgNS42NjYxOCAxMy41NDk1QzYuMTI4MjcgMTQuMDExNiA2Ljc1NDk5IDE0LjI3MTIgNy40MDg0OCAxNC4yNzEyQzguMDYxOTcgMTQuMjcxMiA4LjY4ODcgMTQuMDExNiA5LjE1MDc4IDEzLjU0OTVDOS40MDk3MSAxMy4yOTA2IDkuNjA1MDUgMTIuOTggOS43MjY3OCAxMi42NDE5SDEyLjI4OTRDMTMuMjIzNCAxMi42NDE5IDEzLjc5MiAxMS42MDA4IDEzLjE4ODQgMTAuODYxM0wxMy4xODgzIDEwLjg2MTJDMTMuMTM0OCAxMC43OTU3IDEzLjA4MzUgMTAuNzMzNiAxMy4wMzQyIDEwLjY3NEMxMi42OTczIDEwLjI2NTkgMTIuNDU3NCA5Ljk3NTQgMTIuMjc1NSA5LjUzNDUxQzEyLjA2NzggOS4wMzE0NyAxMS45MjgyIDguMzAxODIgMTEuOTI4MiA2Ljk3Nzc2QzExLjkyODIgNS42NTY4OCAxMS41ODkxIDQuNzEyOTkgMTEuMDcwMyA0LjAzNDMzQzEwLjU1NTMgMy4zNjA3NSA5Ljg5NjUyIDIuOTkyMzQgOS4zMzQ5OSAyLjc2MTE1TDkuMzM0NjcgMi43NjEwMkM5LjMzNDA5IDIuNzYwNzkgOS4zMjk4MiAyLjc1ODg4IDkuMzIzMTMgMi43NTQyNEM5LjMxNjU1IDIuNzQ5NjcgOS4zMDk4MSAyLjc0Mzk0IDkuMzAzODIgMi43Mzc3QzkuMjk4NzUgMi43MzI0MSA5LjI5NTQ1IDIuNzI4MDMgOS4yOTM2MyAyLjcyNTMxQzkuMDcyNjQgMS45ODM3OCA4LjQyNjkxIDEuMjI5NDMgNy40NzMwNiAxLjIyOTQzWk04LjY4NjU0IDEyLjY0MTlINi4xMzA0MkM2LjE4NzYgMTIuNzI5NSA2LjI1NDAzIDEyLjgxMTUgNi4zMjkxIDEyLjg4NjZDNi42MTUzNyAxMy4xNzI5IDcuMDAzNjMgMTMuMzMzNyA3LjQwODQ4IDEzLjMzMzdDNy44MTMzMyAxMy4zMzM3IDguMjAxNiAxMy4xNzI5IDguNDg3ODcgMTIuODg2NkM4LjU2MjkzIDEyLjgxMTUgOC42MjkzNyAxMi43Mjk1IDguNjg2NTQgMTIuNjQxOVpNNi41NTE0NSAyLjk5NzE2QzYuNjk1NzEgMi41MDA4NSA3LjA3MTIxIDIuMTY2OTMgNy40NzMwNiAyLjE2NjkzQzcuODc0OTIgMi4xNjY5MyA4LjI1MDUgMi41MDA2MSA4LjM5NjYgMi45OTc4NUw4LjM5Njk1IDIuOTk5MDRDOC40ODQ5OSAzLjI5NTc1IDguNzI4NDMgMy41MjUzOCA4Ljk3ODA5IDMuNjI4MDZDOS40NTYyNSAzLjgyNDkyIDkuOTQ4OTQgNC4xMTExOSAxMC4zMjU1IDQuNjAzNzNDMTAuNjk4MiA1LjA5MTE5IDEwLjk5MDcgNS44MjQ4NiAxMC45OTA3IDYuOTc3NzZDMTAuOTkwNyA4LjM1NTA2IDExLjEzMzcgOS4yMjU1IDExLjQwODkgOS44OTIxN0MxMS42NDgzIDEwLjQ3MjMgMTEuOTgyMyAxMC44NzQ5IDEyLjMxNjcgMTEuMjc4QzEyLjM2NTMgMTEuMzM2NiAxMi40MTM5IDExLjM5NTEgMTIuNDYyMiAxMS40NTQyQzEyLjUwMTYgMTEuNTAyNSAxMi41MDQ2IDExLjU1NTIgMTIuNDc5MyAxMS42MDVDMTIuNDU1MyAxMS42NTI0IDEyLjM5OTYgMTEuNzA0NCAxMi4yODk0IDExLjcwNDRIMi42NTk4NkMyLjU0NjA0IDExLjcwNDQgMi40ODk1NSAxMS42NTA5IDIuNDY1ODggMTEuNjA0NUMyLjQ0MTE5IDExLjU1NjIgMi40NDMyNSAxMS41MDQgMi40ODM4IDExLjQ1NDRMMi40ODM4MyAxMS40NTQ0QzIuNTMyMTUgMTEuMzk1MiAyLjU4MDc1IDExLjMzNjYgMi42MjkzNCAxMS4yNzgxTDIuNjI5NDYgMTEuMjc3OUMyLjk2Mzg5IDEwLjg3NDggMy4yOTc4NSAxMC40NzIzIDMuNTM3NCA5Ljg5MjI5QzMuODEyNzMgOS4yMjU3MSAzLjk1NjE1IDguMzU1MzMgMy45NTY5NSA2Ljk3ODAzVjYuOTc3NzZDMy45NTY5NSA1LjgyMzQxIDQuMjQ5MjggNS4wODk5OSA0LjYyMTY1IDQuNjAzMDlDNC45OTc5MiA0LjExMTEgNS40OTA0NCAzLjgyNTM3IDUuOTY5NjMgMy42MjgwNUM2LjIxNjYxIDMuNTI2NDUgNi40NjI1NyAzLjMwMDAyIDYuNTUxMTEgMi45OTgzM0w2LjU1MTQ1IDIuOTk3MTZaXCIsZmlsbDp0LHJvbGU6XCJpbWdcIn0pfSkpfX0sODI2NTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Ccm9rZW5MaW5rSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuQnJva2VuTGlua0ljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4cykoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjMyXCIsaGVpZ2h0OlwiMzJcIix2aWV3Qm94OlwiMCAwIDMyIDMyXCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOlsoMCxvLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNi4zMzM1IDMuNzAwMkM2LjA1NzM1IDMuNzAwMiA1LjgzMzUgMy45MjQwNSA1LjgzMzUgNC4yMDAyVjI3LjgwMDJDNS44MzM1IDI4LjA3NjMgNi4wNTczNSAyOC4zMDAyIDYuMzMzNSAyOC4zMDAySDI1LjY2NjhDMjUuOTQzIDI4LjMwMDIgMjYuMTY2OCAyOC4wNzYzIDI2LjE2NjggMjcuODAwMlYxMi4yMzM1SDE4LjEzMzVDMTcuODU3NCAxMi4yMzM1IDE3LjYzMzUgMTIuMDA5NyAxNy42MzM1IDExLjczMzVWMy43MDAySDYuMzMzNVpNMTguNjMzNSA0LjQwNzNMMjUuNDU5NyAxMS4yMzM1SDE4LjYzMzVWNC40MDczWk00LjgzMzUgNC4yMDAyQzQuODMzNSAzLjM3MTc3IDUuNTA1MDcgMi43MDAyIDYuMzMzNSAyLjcwMDJIMTguMTMzNUMxOC4yNjYxIDIuNzAwMiAxOC4zOTMzIDIuNzUyODcgMTguNDg3IDIuODQ2NjRMMjcuMDIwNCAxMS4zOEMyNy4xMTQxIDExLjQ3MzcgMjcuMTY2OCAxMS42MDA5IDI3LjE2NjggMTEuNzMzNVYyNy44MDAyQzI3LjE2NjggMjguNjI4NiAyNi40OTUzIDI5LjMwMDIgMjUuNjY2OCAyOS4zMDAySDYuMzMzNUM1LjUwNTA3IDI5LjMwMDIgNC44MzM1IDI4LjYyODYgNC44MzM1IDI3LjgwMDJWNC4yMDAyWlwiLGZpbGw6dH0pLCgwLG8uanN4KShcInBhdGhcIix7ZDpcIk0xNC4yNDggMjEuOTA4NFYyMS44NDA5QzE0LjI1MjggMjEuNDAwNiAxNC4yOTY2IDIxLjA1MDIgMTQuMzc5NCAyMC43ODk4QzE0LjQ2NDcgMjAuNTI5NCAxNC41ODU0IDIwLjMxODcgMTQuNzQxNyAyMC4xNTc3QzE0Ljg5NzkgMTkuOTk2NyAxNS4wODYxIDE5Ljg0OTkgMTUuMzA2MyAxOS43MTczQzE1LjQ0ODMgMTkuNjI3NCAxNS41NzYyIDE5LjUyNjggMTUuNjg5OCAxOS40MTU1QzE1LjgwMzQgMTkuMzA0MiAxNS44OTM0IDE5LjE3NjQgMTUuOTU5NyAxOS4wMzJDMTYuMDI2IDE4Ljg4NzUgMTYuMDU5MSAxOC43Mjc3IDE2LjA1OTEgMTguNTUyNkMxNi4wNTkxIDE4LjM0MTkgMTYuMDA5NCAxOC4xNTk2IDE1LjkxIDE4LjAwNTdDMTUuODEwNSAxNy44NTE4IDE1LjY3OCAxNy43MzM0IDE1LjUxMjMgMTcuNjUwNkMxNS4zNDg5IDE3LjU2NTMgMTUuMTY2NiAxNy41MjI3IDE0Ljk2NTQgMTcuNTIyN0MxNC43ODMxIDE3LjUyMjcgMTQuNjA5MSAxNy41NjA2IDE0LjQ0MzQgMTcuNjM2NEMxNC4yNzc2IDE3LjcxMjEgMTQuMTQwMyAxNy44MzA1IDE0LjAzMTQgMTcuOTkxNUMxMy45MjI1IDE4LjE1MDEgMTMuODU5OCAxOC4zNTQ5IDEzLjg0MzIgMTguNjA1OEgxMi43NjM3QzEyLjc4MDIgMTguMTc5NyAxMi44ODggMTcuODE5OCAxMy4wODY4IDE3LjUyNjNDMTMuMjg1NyAxNy4yMzA0IDEzLjU0ODUgMTcuMDA2NiAxMy44NzUyIDE2Ljg1NTFDMTQuMjA0MiAxNi43MDM2IDE0LjU2NzYgMTYuNjI3OCAxNC45NjU0IDE2LjYyNzhDMTUuNDAxIDE2LjYyNzggMTUuNzgyMSAxNi43MDk1IDE2LjEwODggMTYuODcyOUMxNi40MzU1IDE3LjAzMzkgMTYuNjg4OSAxNy4yNTk5IDE2Ljg2ODggMTcuNTUxMUMxNy4wNTExIDE3Ljg0IDE3LjE0MjIgMTguMTc3MyAxNy4xNDIyIDE4LjU2MzJDMTcuMTQyMiAxOC44Mjg0IDE3LjEwMDggMTkuMDY3NSAxNy4wMTc5IDE5LjI4MDVDMTYuOTM1MSAxOS40OTEyIDE2LjgxNjcgMTkuNjc5NSAxNi42NjI4IDE5Ljg0NTJDMTYuNTExMyAyMC4wMTA5IDE2LjMyOSAyMC4xNTc3IDE2LjExNTkgMjAuMjg1NUMxNS45MTQ3IDIwLjQxMSAxNS43NTE0IDIwLjU0MTIgMTUuNjI1OSAyMC42NzYxQzE1LjUwMjggMjAuODExMSAxNS40MTI4IDIwLjk3MDkgMTUuMzU2IDIxLjE1NTVDMTUuMjk5MiAyMS4zNDAyIDE1LjI2ODQgMjEuNTY4NyAxNS4yNjM3IDIxLjg0MDlWMjEuOTA4NEgxNC4yNDhaTTE0Ljc4NDMgMjQuMDY3NUMxNC41OTAxIDI0LjA2NzUgMTQuNDIzMiAyMy45OTg4IDE0LjI4MzYgMjMuODYxNUMxNC4xNDM5IDIzLjcyMTggMTQuMDc0IDIzLjU1MzcgMTQuMDc0IDIzLjM1NzJDMTQuMDc0IDIzLjE2MzEgMTQuMTQzOSAyMi45OTc0IDE0LjI4MzYgMjIuODYwMUMxNC40MjMyIDIyLjcyMDQgMTQuNTkwMSAyMi42NTA2IDE0Ljc4NDMgMjIuNjUwNkMxNC45NzYgMjIuNjUwNiAxNS4xNDE3IDIyLjcyMDQgMTUuMjgxNCAyMi44NjAxQzE1LjQyMzUgMjIuOTk3NCAxNS40OTQ1IDIzLjE2MzEgMTUuNDk0NSAyMy4zNTcyQzE1LjQ5NDUgMjMuNDg3NSAxNS40NjE0IDIzLjYwNyAxNS4zOTUxIDIzLjcxNTlDMTUuMzMxMSAyMy44MjI0IDE1LjI0NTkgMjMuOTA3NyAxNS4xMzk0IDIzLjk3MTZDMTUuMDMyOCAyNC4wMzU1IDE0LjkxNDUgMjQuMDY3NSAxNC43ODQzIDI0LjA2NzVaXCIsZmlsbDp0fSldfSkpfX0sNjQ0NzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DaGV2cm9uRG93bkljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkNoZXZyb25Eb3duSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMjRcIixoZWlnaHQ6XCIyNFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwifSx7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLE9iamVjdC5hc3NpZ24oe2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNS4wNTI4MiA5Ljg4NzA3QzUuMzM2MTIgOS41ODQ4OSA1LjgxMDc1IDkuNTY5NTggNi4xMTI5MyA5Ljg1Mjg3TDEyIDE1LjM3MkwxNy44ODcgOS44NTI4N0MxOC4xODkyIDkuNTY5NTggMTguNjYzOCA5LjU4NDg5IDE4Ljk0NzEgOS44ODcwN0MxOS4yMzA0IDEwLjE4OTMgMTkuMjE1MSAxMC42NjM5IDE4LjkxMjkgMTAuOTQ3MkwxMi41MTI5IDE2Ljk0NzJDMTIuMjI0NCAxNy4yMTc2IDExLjc3NTUgMTcuMjE3NiAxMS40ODcgMTYuOTQ3Mkw1LjA4NzAyIDEwLjk0NzJDNC43ODQ4NCAxMC42NjM5IDQuNzY5NTIgMTAuMTg5MyA1LjA1MjgyIDkuODg3MDdaXCIsZmlsbDp0fSxuKSl9KSl9fSwyMTQ3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoZXZyb25MZWZ0SWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuQ2hldnJvbkxlZnRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIyNFwiLGhlaWdodDpcIjI0XCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCJ9LHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIsT2JqZWN0LmFzc2lnbih7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0xNC4xMTI3IDUuMDUyNzJDMTQuNDE0OSA1LjMzNjAxIDE0LjQzMDIgNS44MTA2NCAxNC4xNDY5IDYuMTEyODJMOC42Mjc4NCAxMS45OTk5TDE0LjE0NjkgMTcuODg2OUMxNC40MzAyIDE4LjE4OTEgMTQuNDE0OSAxOC42NjM3IDE0LjExMjcgMTguOTQ3QzEzLjgxMDYgMTkuMjMwMyAxMy4zMzU5IDE5LjIxNSAxMy4wNTI2IDE4LjkxMjhMNy4wNTI2NCAxMi41MTI4QzYuNzgyMTggMTIuMjI0MyA2Ljc4MjE4IDExLjc3NTQgNy4wNTI2NCAxMS40ODY5TDEzLjA1MjYgNS4wODY5MUMxMy4zMzU5IDQuNzg0NzMgMTMuODEwNiA0Ljc2OTQyIDE0LjExMjcgNS4wNTI3MlpcIixmaWxsOnR9LG4pKX0pKX19LDI0MDI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2hldnJvblJpZ2h0SWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuQ2hldnJvblJpZ2h0SWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMjRcIixoZWlnaHQ6XCIyNFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwifSx7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLE9iamVjdC5hc3NpZ24oe2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNOS44Njk4NiA2LjY2OTcyQzEwLjE2MjggNi4zNzY4MyAxMC42Mzc2IDYuMzc2ODMgMTAuOTMwNSA2LjY2OTcyTDE1LjczMDUgMTEuNDY5N0MxNS44NzEyIDExLjYxMDQgMTUuOTUwMiAxMS44MDExIDE1Ljk1MDIgMTJDMTUuOTUwMiAxMi4xOTkgMTUuODcxMiAxMi4zODk3IDE1LjczMDUgMTIuNTMwNEwxMC45MzA1IDE3LjMzMDRDMTAuNjM3NiAxNy42MjMzIDEwLjE2MjggMTcuNjIzMyA5Ljg2OTg2IDE3LjMzMDRDOS41NzY5NiAxNy4wMzc1IDkuNTc2OTYgMTYuNTYyNiA5Ljg2OTg2IDE2LjI2OTdMMTQuMTM5NSAxMkw5Ljg2OTg2IDcuNzMwMzhDOS41NzY5NiA3LjQzNzQ5IDkuNTc2OTYgNi45NjI2MSA5Ljg2OTg2IDYuNjY5NzJaXCIsZmlsbDp0fSxuKSl9KSl9fSw0ODI1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoZXZyb25VcEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkNoZXZyb25VcEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix3aWR0aDpcIjI0XCIsaGVpZ2h0OlwiMjRcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIn0se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIixPYmplY3QuYXNzaWduKHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTUuMDUyODUgMTQuMTEyOUM1LjMzNjE1IDE0LjQxNTEgNS44MTA3OCAxNC40MzA0IDYuMTEyOTYgMTQuMTQ3MUwxMiA4LjYyODAyTDE3Ljg4NyAxNC4xNDcxQzE4LjE4OTIgMTQuNDMwNCAxOC42NjM5IDE0LjQxNTEgMTguOTQ3MiAxNC4xMTI5QzE5LjIzMDUgMTMuODEwNyAxOS4yMTUxIDEzLjMzNjEgMTguOTEzIDEzLjA1MjhMMTIuNTEzIDcuMDUyODJDMTIuMjI0NSA2Ljc4MjM2IDExLjc3NTUgNi43ODIzNiAxMS40ODcxIDcuMDUyODJMNS4wODcwNSAxMy4wNTI4QzQuNzg0ODcgMTMuMzM2MSA0Ljc2OTU2IDEzLjgxMDcgNS4wNTI4NSAxNC4xMTI5WlwiLGZpbGw6dH0sbikpfSkpfX0sMTI4MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5FeGNsYW1hdGlvbkNpcmNsZWRGaWxsZWRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5MyksaT1uKDc1MTgpLGE9big2Njg5KSxsPW4oMzQ3MSk7dC5FeGNsYW1hdGlvbkNpcmNsZWRGaWxsZWRJY29uPWU9Pnt2YXJ7c2Vjb25kYXJ5Q29sb3I6dCxjb2xvcjpuPVwiY3VycmVudENvbG9yXCJ9PWUsYz1yKGUsW1wic2Vjb25kYXJ5Q29sb3JcIixcImNvbG9yXCJdKTtjb25zdCBzPSgwLGEudXNlQ29udGV4dCkoaS5UaGVtZUNvbnRleHQpLnNlbGVjdGVkU2NoZW1lO3JldHVybiB0fHwodD1cImRhcmtcIj09PXM/bC5Db2xvci5kYXJrR3JheTU6bC5Db2xvci53aGl0ZSksKDAsby5qc3hzKShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxN1wiLHZpZXdCb3g6XCIwIDAgMTYgMTdcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sYyx7Y2hpbGRyZW46WygwLG8uanN4KShcInBhdGhcIix7ZDpcIk03Ljk5OTg4IDE1LjMzMTdDMTEuNzcyOSAxNS4zMzE3IDE0LjgzMTYgMTIuMjczMSAxNC44MzE2IDguNTAwMDdDMTQuODMxNiA0LjcyNzA0IDExLjc3MjkgMS42Njg0IDcuOTk5ODggMS42Njg0QzQuMjI2ODYgMS42Njg0IDEuMTY4MjEgNC43MjcwNCAxLjE2ODIxIDguNTAwMDdDMS4xNjgyMSAxMi4yNzMxIDQuMjI2ODYgMTUuMzMxNyA3Ljk5OTg4IDE1LjMzMTdaXCIsZmlsbDpufSksKDAsby5qc3gpKFwibWFza1wiLE9iamVjdC5hc3NpZ24oe2lkOlwicGF0aC0yLWluc2lkZS0xXzZfMjYyMDMzXCIsZmlsbDp0fSx7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTcuOTk5OTMgNC4zNzM4NEM3LjU3NTI1IDQuMzczODQgNy4yMzU2NCA0LjcyNjc2IDcuMjUxOTYgNS4xNTExM0w3LjQyMjk2IDkuNTk3MDZDNy40MzQ4OSA5LjkwNzA4IDcuNjg5NjggMTAuMTUyMyA3Ljk5OTkzIDEwLjE1MjNDOC4zMTAxOSAxMC4xNTIzIDguNTY0OTggOS45MDcwOCA4LjU3NjkgOS41OTcwNkw4Ljc0NzkgNS4xNTExM0M4Ljc2NDIyIDQuNzI2NzYgOC40MjQ2MSA0LjM3Mzg0IDcuOTk5OTMgNC4zNzM4NFpNNy45OTk5MyAxMi42NDA2QzguNDYwMjIgMTIuNjQwNiA4LjgzMzM1IDEyLjI2NzUgOC44MzMzNSAxMS44MDcyQzguODMzMzUgMTEuMzQ2OSA4LjQ2MDIyIDEwLjk3MzggNy45OTk5MyAxMC45NzM4QzcuNTM5NjQgMTAuOTczOCA3LjE2NjUgMTEuMzQ2OSA3LjE2NjUgMTEuODA3MkM3LjE2NjUgMTIuMjY3NSA3LjUzOTY0IDEyLjY0MDYgNy45OTk5MyAxMi42NDA2WlwifSl9KSksKDAsby5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTcuOTk5OTMgNC4zNzM4NEM3LjU3NTI1IDQuMzczODQgNy4yMzU2NCA0LjcyNjc2IDcuMjUxOTYgNS4xNTExM0w3LjQyMjk2IDkuNTk3MDZDNy40MzQ4OSA5LjkwNzA4IDcuNjg5NjggMTAuMTUyMyA3Ljk5OTkzIDEwLjE1MjNDOC4zMTAxOSAxMC4xNTIzIDguNTY0OTggOS45MDcwOCA4LjU3NjkgOS41OTcwNkw4Ljc0NzkgNS4xNTExM0M4Ljc2NDIyIDQuNzI2NzYgOC40MjQ2MSA0LjM3Mzg0IDcuOTk5OTMgNC4zNzM4NFpNNy45OTk5MyAxMi42NDA2QzguNDYwMjIgMTIuNjQwNiA4LjgzMzM1IDEyLjI2NzUgOC44MzMzNSAxMS44MDcyQzguODMzMzUgMTEuMzQ2OSA4LjQ2MDIyIDEwLjk3MzggNy45OTk5MyAxMC45NzM4QzcuNTM5NjQgMTAuOTczOCA3LjE2NjUgMTEuMzQ2OSA3LjE2NjUgMTEuODA3MkM3LjE2NjUgMTIuMjY3NSA3LjUzOTY0IDEyLjY0MDYgNy45OTk5MyAxMi42NDA2WlwiLGZpbGw6dH0pLCgwLG8uanN4KShcInBhdGhcIix7ZDpcIk03LjI1MTk2IDUuMTUxMTNMNS42NDg3NCA1LjIxMjc5TDUuNjQ4NzQgNS4yMTI3OUw3LjI1MTk2IDUuMTUxMTNaTTcuNDIyOTYgOS41OTcwNkw5LjAyNjE4IDkuNTM1NEw5LjAyNjE4IDkuNTM1NEw3LjQyMjk2IDkuNTk3MDZaTTguNTc2OSA5LjU5NzA2TDEwLjE4MDEgOS42NTg3Mkw4LjU3NjkgOS41OTcwNlpNOC43NDc5IDUuMTUxMTNMMTAuMzUxMSA1LjIxMjc5TDEwLjM1MTEgNS4yMTI3OUw4Ljc0NzkgNS4xNTExM1pNOC44NTUxOSA1LjA4OTQ3QzguODczODUgNS41NzQ3IDguNDg1NTMgNS45NzgyNSA3Ljk5OTkzIDUuOTc4MjVWMi43Njk0M0M2LjY2NDk4IDIuNzY5NDMgNS41OTc0NCAzLjg3ODgyIDUuNjQ4NzQgNS4yMTI3OUw4Ljg1NTE5IDUuMDg5NDdaTTkuMDI2MTggOS41MzU0TDguODU1MTkgNS4wODk0N0w1LjY0ODc0IDUuMjEyNzlMNS44MTk3NCA5LjY1ODcyTDkuMDI2MTggOS41MzU0Wk03Ljk5OTkzIDguNTQ3ODZDOC41NTE3NyA4LjU0Nzg2IDkuMDA0OTggOC45ODM5NiA5LjAyNjE4IDkuNTM1NEw1LjgxOTc0IDkuNjU4NzJDNS44NjQ4IDEwLjgzMDIgNi44Mjc1OCAxMS43NTY3IDcuOTk5OTMgMTEuNzU2N1Y4LjU0Nzg2Wk02Ljk3MzY4IDkuNTM1NEM2Ljk5NDg5IDguOTgzOTYgNy40NDgwOSA4LjU0Nzg2IDcuOTk5OTMgOC41NDc4NlYxMS43NTY3QzkuMTcyMjggMTEuNzU2NyAxMC4xMzUxIDEwLjgzMDIgMTAuMTgwMSA5LjY1ODcyTDYuOTczNjggOS41MzU0Wk03LjE0NDY4IDUuMDg5NDdMNi45NzM2OCA5LjUzNTRMMTAuMTgwMSA5LjY1ODcyTDEwLjM1MTEgNS4yMTI3OUw3LjE0NDY4IDUuMDg5NDdaTTcuOTk5OTMgNS45NzgyNUM3LjUxNDM0IDUuOTc4MjUgNy4xMjYwMiA1LjU3NDcgNy4xNDQ2OCA1LjA4OTQ3TDEwLjM1MTEgNS4yMTI3OUMxMC40MDI0IDMuODc4ODIgOS4zMzQ4OSAyLjc2OTQzIDcuOTk5OTMgMi43Njk0M1Y1Ljk3ODI1Wk03LjIyODk1IDExLjgwNzJDNy4yMjg5NSAxMS4zODE0IDcuNTc0MTMgMTEuMDM2MiA3Ljk5OTkzIDExLjAzNjJWMTQuMjQ1QzkuMzQ2MzEgMTQuMjQ1IDEwLjQzNzggMTMuMTUzNiAxMC40Mzc4IDExLjgwNzJINy4yMjg5NVpNNy45OTk5MyAxMi41NzgyQzcuNTc0MTMgMTIuNTc4MiA3LjIyODk1IDEyLjIzMyA3LjIyODk1IDExLjgwNzJIMTAuNDM3OEMxMC40Mzc4IDEwLjQ2MDggOS4zNDYzMSA5LjM2OTM3IDcuOTk5OTMgOS4zNjkzN1YxMi41NzgyWk04Ljc3MDkxIDExLjgwNzJDOC43NzA5MSAxMi4yMzMgOC40MjU3MyAxMi41NzgyIDcuOTk5OTMgMTIuNTc4MlY5LjM2OTM3QzYuNjUzNTUgOS4zNjkzNyA1LjU2MjEgMTAuNDYwOCA1LjU2MjEgMTEuODA3Mkg4Ljc3MDkxWk03Ljk5OTkzIDExLjAzNjJDOC40MjU3MyAxMS4wMzYyIDguNzcwOTEgMTEuMzgxNCA4Ljc3MDkxIDExLjgwNzJINS41NjIxQzUuNTYyMSAxMy4xNTM2IDYuNjUzNTUgMTQuMjQ1IDcuOTk5OTMgMTQuMjQ1VjExLjAzNjJaXCIsZmlsbDp0LG1hc2s6XCJ1cmwoI3BhdGgtMi1pbnNpZGUtMV82XzI2MjAzMylcIn0pXX0pKX19LDY3OTU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRmlsdGVySWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuRmlsdGVySWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMlwiLGhlaWdodDpcIjdcIix2aWV3Qm94OlwiMCAwIDEyIDdcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTQgNi41QzQgNi4zNjczOSA0LjA1MjY4IDYuMjQwMjEgNC4xNDY0NSA2LjE0NjQ1QzQuMjQwMjEgNi4wNTI2OCA0LjM2NzM5IDYgNC41IDZINy41QzcuNjMyNjEgNiA3Ljc1OTc5IDYuMDUyNjggNy44NTM1NSA2LjE0NjQ1QzcuOTQ3MzIgNi4yNDAyMSA4IDYuMzY3MzkgOCA2LjVDOCA2LjYzMjYxIDcuOTQ3MzIgNi43NTk3OSA3Ljg1MzU1IDYuODUzNTVDNy43NTk3OSA2Ljk0NzMyIDcuNjMyNjEgNyA3LjUgN0g0LjVDNC4zNjczOSA3IDQuMjQwMjEgNi45NDczMiA0LjE0NjQ1IDYuODUzNTVDNC4wNTI2OCA2Ljc1OTc5IDQgNi42MzI2MSA0IDYuNVpNMiAzLjVDMiAzLjM2NzM5IDIuMDUyNjggMy4yNDAyMSAyLjE0NjQ1IDMuMTQ2NDVDMi4yNDAyMSAzLjA1MjY4IDIuMzY3MzkgMyAyLjUgM0g5LjVDOS42MzI2MSAzIDkuNzU5NzkgMy4wNTI2OCA5Ljg1MzU1IDMuMTQ2NDVDOS45NDczMiAzLjI0MDIxIDEwIDMuMzY3MzkgMTAgMy41QzEwIDMuNjMyNjEgOS45NDczMiAzLjc1OTc5IDkuODUzNTUgMy44NTM1NUM5Ljc1OTc5IDMuOTQ3MzIgOS42MzI2MSA0IDkuNSA0SDIuNUMyLjM2NzM5IDQgMi4yNDAyMSAzLjk0NzMyIDIuMTQ2NDUgMy44NTM1NUMyLjA1MjY4IDMuNzU5NzkgMiAzLjYzMjYxIDIgMy41Wk0wIDAuNUMwIDAuMzY3MzkyIDAuMDUyNjc4NSAwLjI0MDIxNSAwLjE0NjQ0NyAwLjE0NjQ0N0MwLjI0MDIxNSAwLjA1MjY3ODUgMC4zNjczOTIgMCAwLjUgMEgxMS41QzExLjYzMjYgMCAxMS43NTk4IDAuMDUyNjc4NSAxMS44NTM2IDAuMTQ2NDQ3QzExLjk0NzMgMC4yNDAyMTUgMTIgMC4zNjczOTIgMTIgMC41QzEyIDAuNjMyNjA4IDExLjk0NzMgMC43NTk3ODUgMTEuODUzNiAwLjg1MzU1M0MxMS43NTk4IDAuOTQ3MzIxIDExLjYzMjYgMSAxMS41IDFIMC41QzAuMzY3MzkyIDEgMC4yNDAyMTUgMC45NDczMjEgMC4xNDY0NDcgMC44NTM1NTNDMC4wNTI2Nzg1IDAuNzU5Nzg1IDAgMC42MzI2MDggMCAwLjVaXCIsZmlsbDp0fSl9KSl9fSwxMTc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRmxvcHB5RGlza0ljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkZsb3BweURpc2tJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjEyXCIsaGVpZ2h0OlwiMTJcIix2aWV3Qm94OlwiMCAwIDEyIDEyXCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZDpcIk0xLjg3NSAyLjE4NzVDMS44NzUgMi4xNTI5OCAxLjkwMjk4IDIuMTI1IDEuOTM3NSAyLjEyNUg4LjIzMDM5QzguMjQ2OTcgMi4xMjUgOC4yNjI4NyAyLjEzMTU4IDguMjc0NTkgMi4xNDMzMUw5Ljk4MTY5IDMuODUwNDFDOS45OTM0MSAzLjg2MjEzIDEwIDMuODc4MDMgMTAgMy44OTQ2MVYxMC4xODc1QzEwIDEwLjIyMiA5Ljk3MjAyIDEwLjI1IDkuOTM3NSAxMC4yNUgxLjkzNzVDMS45MDI5OCAxMC4yNSAxLjg3NSAxMC4yMjIgMS44NzUgMTAuMTg3NVYyLjE4NzVaTTEuOTM3NSAxLjI1QzEuNDE5NzMgMS4yNSAxIDEuNjY5NzMgMSAyLjE4NzVWMTAuMTg3NUMxIDEwLjcwNTMgMS40MTk3MyAxMS4xMjUgMS45Mzc1IDExLjEyNUg5LjkzNzVDMTAuNDU1MyAxMS4xMjUgMTAuODc1IDEwLjcwNTMgMTAuODc1IDEwLjE4NzVWMy44OTQ2MUMxMC44NzUgMy42NDU5NyAxMC43NzYyIDMuNDA3NTEgMTAuNjAwNCAzLjIzMTY5TDguODkzMzEgMS41MjQ1OUM4LjcxNzQ5IDEuMzQ4NzcgOC40NzkwMyAxLjI1IDguMjMwMzkgMS4yNUgxLjkzNzVaTTIuODQ5MjQgMy40MDgxQzIuODQ5MjQgMy4yMzc1NCAyLjk4NzUxIDMuMDk5MjcgMy4xNTgwNyAzLjA5OTI3SDcuNDgxNkM3LjY1MjE1IDMuMDk5MjcgNy43OTA0MiAzLjIzNzU0IDcuNzkwNDIgMy40MDgxVjQuNjQzMzlDNy43OTA0MiA0LjgxMzk1IDcuNjUyMTUgNC45NTIyMSA3LjQ4MTYgNC45NTIyMUgzLjE1ODA3QzIuOTg3NTEgNC45NTIyMSAyLjg0OTI0IDQuODEzOTUgMi44NDkyNCA0LjY0MzM5VjMuNDA4MVpNNC41MzY4IDYuNjM5NzdDNC44MjYzOCA2LjM1MDE5IDUuMjE5MTMgNi4xODc1MSA1LjYyODY1IDYuMTg3NTFDNi4wMzgxOCA2LjE4NzUxIDYuNDMwOTMgNi4zNTAxOSA2LjcyMDUxIDYuNjM5NzdDNy4wMTAwOSA2LjkyOTM1IDcuMTcyNzcgNy4zMjIxIDcuMTcyNzcgNy43MzE2M0M3LjE3Mjc3IDguMTQxMTUgNy4wMTAwOSA4LjUzMzkgNi43MjA1MSA4LjgyMzQ4QzYuNDMwOTMgOS4xMTMwNiA2LjAzODE4IDkuMjc1NzQgNS42Mjg2NSA5LjI3NTc0QzUuMjE5MTMgOS4yNzU3NCA0LjgyNjM4IDkuMTEzMDYgNC41MzY4IDguODIzNDhDNC4yNDcyMiA4LjUzMzkgNC4wODQ1NCA4LjE0MTE1IDQuMDg0NTQgNy43MzE2M0M0LjA4NDU0IDcuMzIyMSA0LjI0NzIyIDYuOTI5MzUgNC41MzY4IDYuNjM5NzdaXCIsZmlsbDp0LHJvbGU6XCJpbWdcIn0pfSkpfX0sNTI5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkZyYWdtZW50c0ljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkZyYWdtZW50c0ljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMjBcIixoZWlnaHQ6XCIyMFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTguODAwMDEgNC44MDAwMkg0LjgwMDAxQzMuOTE3NjEgNC44MDAwMiAzLjIwMDAxIDUuNTE3NjIgMy4yMDAwMSA2LjQwMDAyVjEwLjRDMy4yMDAwMSAxMS4yODI0IDMuOTE3NjEgMTIgNC44MDAwMSAxMkg4LjgwMDAxQzkuNjgyNDEgMTIgMTAuNCAxMS4yODI0IDEwLjQgMTAuNFY2LjQwMDAyQzEwLjQgNS41MTc2MiA5LjY4MjQxIDQuODAwMDIgOC44MDAwMSA0LjgwMDAyWk0yMC4zNTkyIDYuNDY4ODJMMTcuNTMxMiAzLjY0MDAyQzE2LjkwOCAzLjAxNjAyIDE1Ljg5MiAzLjAxNjAyIDE1LjI2ODggMy42NDAwMkwxMi40NDA4IDYuNDY4ODJDMTEuODE2OCA3LjA5MjgyIDExLjgxNjggOC4xMDcyMiAxMi40NDA4IDguNzMxMjJMMTUuMjY4OCAxMS41NkMxNS41ODA4IDExLjg3MiAxNS45OTA0IDEyLjAyOCAxNi40IDEyLjAyOEMxNi44MDk2IDEyLjAyOCAxNy4yMTkyIDExLjg3MiAxNy41MzEyIDExLjU2TDIwLjM1OTIgOC43MzEyMkMyMC45ODMyIDguMTA3MjIgMjAuOTgzMiA3LjA5MjgyIDIwLjM1OTIgNi40Njg4MlpNOC44MDAwMSAxMy42SDQuODAwMDFDMy45MTc2MSAxMy42IDMuMjAwMDEgMTQuMzE3NiAzLjIwMDAxIDE1LjJWMTkuMkMzLjIwMDAxIDIwLjA4MjQgMy45MTc2MSAyMC44IDQuODAwMDEgMjAuOEg4LjgwMDAxQzkuNjgyNDEgMjAuOCAxMC40IDIwLjA4MjQgMTAuNCAxOS4yVjE1LjJDMTAuNCAxNC4zMTc2IDkuNjgyNDEgMTMuNiA4LjgwMDAxIDEzLjZaTTE3LjYgMTMuNkgxMy42QzEyLjcxNzYgMTMuNiAxMiAxNC4zMTc2IDEyIDE1LjJWMTkuMkMxMiAyMC4wODI0IDEyLjcxNzYgMjAuOCAxMy42IDIwLjhIMTcuNkMxOC40ODI0IDIwLjggMTkuMiAyMC4wODI0IDE5LjIgMTkuMlYxNS4yQzE5LjIgMTQuMzE3NiAxOC40ODI0IDEzLjYgMTcuNiAxMy42WlwiLGZpbGw6dH0pfSkpfX0sNzc4ODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5MaWdodEJ1bGJGaWxsZWRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5MaWdodEJ1bGJGaWxsZWRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeHMpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMFwiLGhlaWdodDpcIjEyXCIsdmlld0JveDpcIjAgMCAxMCAxMlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjpbKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTEuODMgMS4zMTAwOEMyLjI0NDA5IDAuODkxNjY3IDIuNzM3NjggMC41NjAzMDcgMy4yODE3NCAwLjMzNTUwNEMzLjgyNTgxIDAuMTEwNzAxIDQuNDA5MzQgLTAuMDAzMDAzMzMgNC45OTggMC4wMDEwODI5MUM2LjE4NjI4IC0wLjAwMzEwNzg1IDcuMzI5MDUgMC40NTc3MzMgOC4xODIgMS4yODUwOEM4LjU5ODgxIDEuNjg3MTkgOC45MzA0NiAyLjE2OTAzIDkuMTU3MjMgMi43MDE5NEM5LjM4NCAzLjIzNDg1IDkuNTAxMjUgMy44MDc5MyA5LjUwMiA0LjM4NzA4QzkuNTAyIDUuNjgwMDggOC45MTcgNi44MzAwOCA3Ljg4MyA3LjgyNTA4TDcuNTc3IDkuMDAwMDhIMi40NjZMMi4yMzYgOC4wMzcwOEMxLjE1NCA2LjkwNzA4IDAuNTU2IDUuODE5MDggMC41IDQuNTgyMDhWNC41NDQwOEMwLjU0IDMuMjQ4MDggMS4wMzMgMi4xMjEwOCAxLjgzMSAxLjMxMTA4TDEuODMgMS4zMTAwOFpcIixmaWxsOnR9KSwoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNMi43MDQxIDEwTDIuOTM3MSAxMC45NzhMMi45NDUxIDExQzMuMDQ1MSAxMS4yOTcgMy4yMzcxIDExLjU0NCAzLjQ3OTEgMTEuNzE3QzMuNzMwMSAxMS44OTcgNC4wMzcxIDExLjk5OSA0LjM2MTEgMTEuOTk5SDQuMzYzMUw1Ljc0NjEgMTEuOTk1TDUuNzY3MSAxMS45OTNDNi4wNzU4NyAxMS45NjY5IDYuMzY5MTMgMTEuODQ2NSA2LjYwNzEgMTEuNjQ4QzYuODM4MSAxMS40NTQgNy4wMTMxIDExLjE4OCA3LjA4NzEgMTAuODc0TDcuMzE2MSAxMEgyLjcwNDFWMTBaXCIsZmlsbDp0fSldfSkpfX0sMzcwMzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5MaWdodEJ1bGJPdXRsaW5lZEljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LkxpZ2h0QnVsYk91dGxpbmVkSWNvbj1lPT57dmFye2NvbG9yOnQ9XCJjdXJyZW50Q29sb3JcIn09ZSxuPXIoZSxbXCJjb2xvclwiXSk7cmV0dXJuKDAsby5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMFwiLGhlaWdodDpcIjEyXCIsdmlld0JveDpcIjAgMCAxMCAxMlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxuLHtjaGlsZHJlbjooMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNNC45OTc2NiAwLjAwMTAwMTQ5QzMuNzY4NjYgMC4wMDEwMDE0OSAyLjY0NzY2IDAuNDgyMDAyIDEuODI5NjYgMS4zMTFDMS4wMzE2NiAyLjEyMSAwLjUzOTY1NyAzLjI0OCAwLjQ5OTY1NyA0LjU0NEwwLjQ5ODY1NyA0LjU2M1Y0LjU4M0MwLjU1NTY1NyA1LjgxOSAxLjE1MzY2IDYuOTA3IDIuMjM1NjYgOC4wMzdMMi45Mzc2NiAxMC45NzhMMi45NDQ2NiAxMUMzLjA0NDY2IDExLjI5NyAzLjIzNjY2IDExLjU0NCAzLjQ3ODY2IDExLjcxN0MzLjcyOTY2IDExLjg5NyA0LjAzNjY2IDExLjk5OSA0LjM2MTY2IDExLjk5OUw1Ljc0NTY2IDExLjk5NUw1Ljc2NjY2IDExLjk5M0M2LjA3NTQyIDExLjk2NjkgNi4zNjg2OSAxMS44NDY1IDYuNjA2NjYgMTEuNjQ4QzYuODM3NjYgMTEuNDU0IDcuMDEyNjYgMTEuMTg4IDcuMDg2NjYgMTAuODc0TDcuODgyNjYgNy44MjRDOC45MTY2NiA2LjgzIDkuNTAwNjYgNS42OCA5LjUwMDY2IDQuMzg3QzkuNDk5OTEgMy44MDc4NSA5LjM4MjY2IDMuMjM0NzcgOS4xNTU4OSAyLjcwMTg2QzguOTI5MTIgMi4xNjg5NSA4LjU5NzQ2IDEuNjg3MTEgOC4xODA2NiAxLjI4NUM3LjMyNzk2IDAuNDU3ODk0IDYuMTg1NTkgLTAuMDAyOTI3ODggNC45OTc2NiAwLjAwMTAwMTQ5Wk0yLjU0MjY2IDIuMDEzQzIuODYzNDQgMS42ODg3MSAzLjI0NTk2IDEuNDMxOTggMy42Njc2MiAxLjI1OEM0LjA4OTI4IDEuMDg0MDEgNC41NDE1MyAwLjk5NjI4MyA0Ljk5NzY2IDFDNS45MjUxNCAwLjk5NTc4NCA2LjgxNzQ0IDEuMzU0NzEgNy40ODM2NiAyQzcuODA0NzEgMi4zMDkwNCA4LjA2MDIzIDIuNjc5NTcgOC4yMzQ5NiAzLjA4OTUxQzguNDA5NjkgMy40OTk0NSA4LjUwMDA1IDMuOTQwMzggOC41MDA2NiA0LjM4NkM4LjUwMDY2IDUuMzc3IDguMDQ3NjYgNi4zMTIgNy4wOTY2NiA3LjE5MUw2Ljk4ODY2IDcuMjkxTDYuNTQyNjYgOUgzLjQ5MzY2TDMuMTQ0NjYgNy41MzZMMy4wNDc2NiA3LjQzNkMxLjk5OTY2IDYuMzcyIDEuNTQ3NjYgNS40OCAxLjQ5ODY2IDQuNTU3QzEuNTM2NjYgMy41MDkgMS45MzI2NiAyLjYzMiAyLjU0MjY2IDIuMDE0VjIuMDEzWk0zLjczMjY2IDEwSDYuMjgyNjZMNi4xMTc2NiAxMC42MjdMNi4xMTQ2NiAxMC42NEM2LjA5MjExIDEwLjczNDIgNi4wMzk0NCAxMC44MTg1IDUuOTY0NjYgMTAuODhDNS44ODg3MyAxMC45NDM1IDUuNzk1OTUgMTAuOTgzNCA1LjY5NzY2IDEwLjk5NUw0LjM2MDY2IDExQzQuMjUzMjEgMTEuMDAwMyA0LjE0ODMzIDEwLjk2NzEgNC4wNjA2NiAxMC45MDVDMy45ODc3IDEwLjg1MzYgMy45MzEzOSAxMC43ODIgMy44OTg2NiAxMC42OTlMMy43MzE2NiAxMEgzLjczMjY2WlwiLGZpbGw6dH0pfSkpfX0sODMxMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Mb2NrZWRDbG9zZWRGaWxsZWRJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5Mb2NrZWRDbG9zZWRGaWxsZWRJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZDpcIk01LjAwMDAzIDQuNjM2MjNDNS4wMDAwMyAzLjc2MDUyIDUuMjQyMjIgMy4xMDU2MSA1LjY0MzI3IDIuNjczNzhDNi4wMzkzOCAyLjI0NzI3IDYuNjQ1ODUgMS45Nzg1MiA3LjUwMTQzIDEuOTc4NTJDOC4zNTc0OCAxLjk3ODUyIDguOTYzMDkgMi4yNDY3MyA5LjM1ODI3IDIuNjcyM0M5Ljc1ODQxIDMuMTAzMjEgMTAgMy43NTcyOSAxMCA0LjYzMzQ2VjYuNTAwMjFIMTFWNC42MzM0NkMxMSAzLjU3OTE3IDEwLjcwNzYgMi42NTU3OCAxMC4wOTExIDEuOTkxODNDOS40Njk1NSAxLjMyMjU0IDguNTc1ODYgMC45Nzg1MTYgNy41MDE0MyAwLjk3ODUxNkM2LjQyNjc4IDAuOTc4NTE2IDUuNTMyNTUgMS4zMjM1IDQuOTEwNTIgMS45OTMyOEM0LjI5MzQyIDIuNjU3NzUgNC4wMDAwMyAzLjU4MTY5IDQuMDAwMDMgNC42MzYyM1Y2LjUwMDIxSDUuMDAwMDNWNC42MzYyM1pNMyA2LjUwMDIxQzIuNzIzODYgNi41MDAyMSAyLjUgNi43MjQwNyAyLjUgNy4wMDAyMVYxMy4wMDAyQzIuNSAxMy4yNzY0IDIuNzIzODYgMTMuNTAwMiAzIDEzLjUwMDJIMTJDMTIuMjc2MSAxMy41MDAyIDEyLjUgMTMuMjc2NCAxMi41IDEzLjAwMDJWNy4wMDAyMUMxMi41IDYuNzI0MDcgMTIuMjc2MSA2LjUwMDIxIDEyIDYuNTAwMjFIM1pcIixmaWxsOnQscm9sZTpcImltZ1wifSl9KSl9fSw1NzI5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk1pbmltaXplSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuTWluaW1pemVJY29uPWU9Pnt2YXJ7Y29sb3I6dD1cImN1cnJlbnRDb2xvclwifT1lLG49cihlLFtcImNvbG9yXCJdKTtyZXR1cm4oMCxvLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LG4se2NoaWxkcmVuOigwLG8uanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0yLjE2NjAyIDEyQzIuMTY2MDIgMTEuNzIzOSAyLjM4OTg3IDExLjUgMi42NjYwMiAxMS41SDEzLjMzMjdDMTMuNjA4OCAxMS41IDEzLjgzMjcgMTEuNzIzOSAxMy44MzI3IDEyQzEzLjgzMjcgMTIuMjc2MSAxMy42MDg4IDEyLjUgMTMuMzMyNyAxMi41SDIuNjY2MDJDMi4zODk4NyAxMi41IDIuMTY2MDIgMTIuMjc2MSAyLjE2NjAyIDEyWlwiLGZpbGw6dCxyb2xlOlwiaW1nXCJ9KX0pKX19LDM3OTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5PcGVuRmluSWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuT3BlbkZpbkljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTVcIixoZWlnaHQ6XCIxNVwiLHZpZXdCb3g6XCIwIDAgMTUgMTVcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTE0LjI2ODUgNS43MzkxNkMxNC4xNzg1IDUuNjQ5MDYgMTQuMDgxNyA1LjU2NTkyIDEzLjk3OSA1LjQ5MDQ3TDEzLjk0MTIgNS40NjQyOUMxMy45MTk2IDUuNDQ5MTkgMTMuODk4NCA1LjQzMzU4IDEzLjg3NjMgNS40MTg5OEMxMy44NTQxIDUuNDA0MzggMTMuODI4NCA1LjM4ODc4IDEzLjgwNDggNS4zNzQxOEwxMy43NzE1IDUuMzUzNTRDMTMuNzQxOCA1LjMzNTkyIDEzLjcxMTYgNS4zMTkzIDEzLjY4MTQgNS4zMDMxOUwxMy42NjM4IDUuMjkzNjNDMTMuMzA2NSA1LjEwNjE4IDEyLjkwOTEgNS4wMDgwNyAxMi41MDU3IDUuMDA3NjhDMTEuODQxNyA1LjAwNzE1IDExLjIwNTIgNC43NDI5MSAxMC43MzYyIDQuMjczMUMxMC4yNjcxIDMuODAzMyAxMC4wMDQgMy4xNjY0MiAxMC4wMDQ2IDIuNTAyNjJDMTAuMDA2NSAxLjQ5MjIyIDkuMzk5MzMgMC41ODAyMTkgOC40NjYzNCAwLjE5MTkxMUM3LjUzMzM1IC0wLjE5NjM5NyA2LjQ1ODI2IDAuMDE1NDY2IDUuNzQyNDQgMC43Mjg3MDFDNS4wMjY2MSAxLjQ0MTk0IDQuODExMDMgMi41MTYwNyA1LjE5NjIxIDMuNDUwMkM1LjU4MTQgNC4zODQzMyA2LjQ5MTUgNC45OTQ0NyA3LjUwMjEgNC45OTYxQzguMTY2MDMgNC45OTY2NCA4LjgwMjU2IDUuMjYwODggOS4yNzE2MSA1LjczMDY4QzkuNzQwNjYgNi4yMDA0OSAxMC4wMDM4IDYuODM3MzYgMTAuMDAzMSA3LjUwMTE3QzEwLjAwMjYgOC4xNjQ5NyA5LjczODMgOC44MDEzNyA5LjI2ODQgOS4yNzAzMkM4Ljc5ODUgOS43MzkyOCA4LjE2MTUgMTAuMDAyNCA3LjQ5NzU2IDEwLjAwMTdDNi44MzQxMyAxMC4wMDIyIDYuMTk3NzIgOS43Mzg5NCA1LjcyODY1IDkuMjY5ODdDNS4yNTk1OCA4LjgwMDggNC45OTYzNiA4LjE2NDQ3IDQuOTk3MDMgNy41MDExN0M0Ljk5NzAzIDYuMTIxNTUgMy44Nzg0MSA1LjAwMzE1IDIuNDk4NTIgNS4wMDMxNUMxLjExODYyIDUuMDAzMTUgMCA2LjEyMTU1IDAgNy41MDExN0MwIDguODgwNzggMS4xMTg2MiA5Ljk5OTE4IDIuNDk4NTIgOS45OTkxOEMzLjg3ODQxIDkuOTk5MTggNC45OTcwMyAxMS4xMTc2IDQuOTk3MDMgMTIuNDk3MkM0Ljk5NzAzIDEzLjg3OTUgNi4xMTc4IDE1IDcuNTAwMzMgMTVDOC44ODI4NyAxNSAxMC4wMDM2IDEzLjg3OTUgMTAuMDAzNiAxMi40OTcyQzEwLjAwMzYgMTEuMTE3NiAxMS4xMjIzIDkuOTk5MTggMTIuNTAyMSA5Ljk5OTE4QzEyLjk0ODIgOS45OTk0OCAxMy4zODYyIDkuODgwMjIgMTMuNzcwNSA5LjY1MzgzQzEzLjgwMzggOS42MzQyIDEzLjgzNjUgOS42MTM1NiAxMy44NzEyIDkuNTkyNDFMMTMuODc4MyA5LjU4Nzg4QzEzLjkwODUgOS41Njc3NSAxMy45Mzg3IDkuNTQ2NiAxMy45Njc5IDkuNTI1NDZMMTMuOTgxIDkuNTE2NEMxNC4wMDcyIDkuNDk3MjcgMTQuMDMxNCA5LjQ3NjYyIDE0LjA1OTEgOS40NTU5OEwxNC4wODEyIDkuNDM4ODdDMTQuMTA1NCA5LjQxOTIzIDE0LjEyODYgOS4zOTg1OSAxNC4xNTIyIDkuMzc3OTVMMTQuMTc3OSA5LjM1NThDMTQuMjA4MSA5LjMyODYyIDE0LjIzNzggOS4zMDA0MiAxNC4yNjcgOS4yNzEyM0wxNC4yNzE2IDkuMjY3MkMxNC4zNzk0IDkuMTU4ODcgMTQuNDc3MiA5LjA0MDkxIDE0LjU2MzYgOC45MTQ4QzE0LjU4MjQgOC44ODc2MSAxNC42MDA1IDguODYwMDkgMTQuNjE4IDguODMyMjNDMTUuMjM3IDcuODQ1ODQgMTUuMDkyIDYuNTYyNjcgMTQuMjY4NSA1LjczOTE2WlwiLGZpbGw6dCxyb2xlOlwiaW1nXCJ9KX0pKX19LDE1Mzk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuU3RhY2tJY29uPXZvaWQgMDtjb25zdCBvPW4oNTg5Myk7dC5TdGFja0ljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMjBcIixoZWlnaHQ6XCIyMFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTE0LjIxNzggMy4wMDA5MkMxNC4xNTA0IDMuMDA1MTQgMTQuMDgzOSAzLjAxODQ0IDE0LjAyIDMuMDQwNDdMMy41MTk4NiA2LjQyODdDMy4zNjg2NCA2LjQ3NzQzIDMuMjM2ODEgNi41NzI5MSAzLjE0MzM1IDYuNzAxMzhDMy4wNDk4OSA2LjgyOTg2IDIuOTk5NjQgNi45ODQ2OSAyLjk5OTgzIDcuMTQzNTZWMTUuNzU0QzIuOTk4NDMgMTUuODUzNCAzLjAxNjc5IDE1Ljk1MjEgMy4wNTM4NSAxNi4wNDQzQzMuMDkwOTEgMTYuMTM2NiAzLjE0NTkzIDE2LjIyMDUgMy4yMTU3MSAxNi4yOTEzQzMuMjg1NSAxNi4zNjIxIDMuMzY4NjUgMTYuNDE4MyAzLjQ2MDM1IDE2LjQ1NjZDMy41NTIwNCAxNi40OTUgMy42NTA0NSAxNi41MTQ3IDMuNzQ5ODQgMTYuNTE0N0MzLjg0OTI0IDE2LjUxNDcgMy45NDc2NCAxNi40OTUgNC4wMzkzNCAxNi40NTY2QzQuMTMxMDMgMTYuNDE4MyA0LjIxNDE5IDE2LjM2MjEgNC4yODM5NyAxNi4yOTEzQzQuMzUzNzUgMTYuMjIwNSA0LjQwODc4IDE2LjEzNjYgNC40NDU4NCAxNi4wNDQzQzQuNDgyOSAxNS45NTIxIDQuNTAxMjYgMTUuODUzNCA0LjQ5OTg1IDE1Ljc1NFY3LjY4ODQ5TDE0LjQ4IDQuNDY3MjVDMTQuNjQ5IDQuNDE1MjkgMTQuNzk0MiA0LjMwNTMyIDE0Ljg5IDQuMTU2NzRDMTQuOTg1OCA0LjAwODE1IDE1LjAyNiAzLjgzMDUgMTUuMDAzNiAzLjY1NTE0QzE0Ljk4MTIgMy40Nzk3NyAxNC44OTc1IDMuMzE3OTcgMTQuNzY3NCAzLjE5ODI3QzE0LjYzNzMgMy4wNzg1NyAxNC40NjkxIDMuMDA4NjggMTQuMjkyNSAzLjAwMDkyQzE0LjI2NzYgMi45OTk2NyAxNC4yNDI3IDIuOTk5NjcgMTQuMjE3OCAzLjAwMDkyWk0xNy4yMTc4IDUuMjUwOTVDMTcuMTUwNCA1LjI1NTE3IDE3LjA4MzkgNS4yNjg0OCAxNy4wMjAxIDUuMjkwNUw2LjUxOTkgOC42Nzg3NEM2LjM2ODY5IDguNzI3NDYgNi4yMzY4NSA4LjgyMjk0IDYuMTQzMzkgOC45NTE0MkM2LjA0OTkzIDkuMDc5ODkgNS45OTk2OCA5LjIzNDcyIDUuOTk5ODggOS4zOTM1OVYxOC4wMDQxQzUuOTk4NDcgMTguMTAzNSA2LjAxNjgzIDE4LjIwMjEgNi4wNTM4OSAxOC4yOTQ0QzYuMDkwOTUgMTguMzg2NiA2LjE0NTk3IDE4LjQ3MDUgNi4yMTU3NiAxOC41NDEzQzYuMjg1NTQgMTguNjEyMSA2LjM2ODcgMTguNjY4MyA2LjQ2MDM5IDE4LjcwNjZDNi41NTIwOSAxOC43NDUgNi42NTA0OSAxOC43NjQ4IDYuNzQ5ODkgMTguNzY0OEM2Ljg0OTI4IDE4Ljc2NDggNi45NDc2OSAxOC43NDUgNy4wMzkzOCAxOC43MDY2QzcuMTMxMDggMTguNjY4MyA3LjIxNDIzIDE4LjYxMjEgNy4yODQwMiAxOC41NDEzQzcuMzUzOCAxOC40NzA1IDcuNDA4ODIgMTguMzg2NiA3LjQ0NTg4IDE4LjI5NDRDNy40ODI5NCAxOC4yMDIxIDcuNTAxMyAxOC4xMDM1IDcuNDk5OSAxOC4wMDQxVjkuOTM4NTJMMTcuNDggNi43MTcyOEMxNy42NDkgNi42NjUzMyAxNy43OTQyIDYuNTU1MzUgMTcuODkgNi40MDY3N0MxNy45ODU4IDYuMjU4MTggMTguMDI2MSA2LjA4MDU0IDE4LjAwMzYgNS45MDUxN0MxNy45ODEyIDUuNzI5ODEgMTcuODk3NiA1LjU2OCAxNy43Njc1IDUuNDQ4M0MxNy42Mzc0IDUuMzI4NjEgMTcuNDY5MSA1LjI1ODcxIDE3LjI5MjUgNS4yNTA5NUMxNy4yNjc2IDUuMjQ5NzEgMTcuMjQyNyA1LjI0OTcxIDE3LjIxNzggNS4yNTA5NVpNMjAuMTkzIDcuNTA1MzhDMjAuMTM0NCA3LjUwOTgyIDIwLjA3NTggNy41MjE5NyAyMC4wMTg2IDcuNTQwNTNMOS41MTg0OCAxMC45Mjg4QzkuMjA5NDggMTEuMDI5MyA4Ljk5OTkyIDExLjMxODEgOC45OTk5MiAxMS42NDM2VjIwLjI1NDFDOC45OTk5MiAyMC40OTc5IDkuMTE4MjkgMjAuNzI2MiA5LjMxNzggMjAuODY2NEM5LjQ0NjA1IDIwLjk1NzIgOS41OTY5MyAyMS4wMDQxIDkuNzQ5OTMgMjEuMDA0MUM5LjgzNDY4IDIxLjAwNDEgOS45MjAxNCAyMC45ODk0IDEwLjAwMTkgMjAuOTYwMkwyMC41MDIgMTcuMjEwMUMyMC44MDA2IDE3LjEwNDQgMjEuMDAwMSAxNi44MjEzIDIxLjAwMDEgMTYuNTA0VjguMjUzOTJDMjEuMDAwMSA4LjAxNDY3IDIwLjg4NTMgNy43ODkyMiAyMC42OTEgNy42NDc0N0MyMC41NDU5IDcuNTQxNzIgMjAuMzY4OCA3LjQ5MjA1IDIwLjE5MyA3LjUwNTM4WlwiLGZpbGw6dH0pfSkpfX0sNDAyMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5TdG9yZWZyb250SWNvbj12b2lkIDA7Y29uc3Qgbz1uKDU4OTMpO3QuU3RvcmVmcm9udEljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMjBcIixoZWlnaHQ6XCIyMFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sbix7Y2hpbGRyZW46KDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTUgM0M0LjQ0OCAzIDQgMy40NDggNCA0QzQgNC41NTIgNC40NDggNSA1IDVIMTlDMTkuNTUyIDUgMjAgNC41NTIgMjAgNEMyMCAzLjQ0OCAxOS41NTIgMyAxOSAzSDVaTTQuNjE3MTkgN0M0LjIzODE5IDcgMy44OTM2MSA3LjIxMzczIDMuNzI0NjEgNy41NTI3M0wyLjEwNTQ3IDEwLjc4OTFDMi4wMzU0NyAxMC45MjgxIDIgMTEuMDgxMyAyIDExLjIzNjNWMTJDMiAxMi41NTIgMi40NDggMTMgMyAxM1YxOUMzIDIwLjEwNSAzLjg5NSAyMSA1IDIxSDE5QzIwLjEwNSAyMSAyMSAyMC4xMDUgMjEgMTlWMTNDMjEuNTUyIDEzIDIyIDEyLjU1MiAyMiAxMlYxMS4yMzYzQzIyIDExLjA4MTMgMjEuOTY0NSAxMC45MjgxIDIxLjg5NDUgMTAuNzg5MUwyMC4yNzU0IDcuNTUyNzNDMjAuMTA2NCA3LjIxMzczIDE5Ljc2MTggNyAxOS4zODI4IDdINC42MTcxOVpNNiAxM0gxOEMxOC41NTIgMTMgMTkgMTMuNDQ4IDE5IDE0VjE4QzE5IDE4LjU1MiAxOC41NTIgMTkgMTggMTlINkM1LjQ0OCAxOSA1IDE4LjU1MiA1IDE4VjE0QzUgMTMuNDQ4IDUuNDQ4IDEzIDYgMTNaXCIsZmlsbDp0fSl9KSl9fSw3OTM3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LldvcmtzcGFjZUljb249dm9pZCAwO2NvbnN0IG89big1ODkzKTt0LldvcmtzcGFjZUljb249ZT0+e3Zhcntjb2xvcjp0PVwiY3VycmVudENvbG9yXCJ9PWUsbj1yKGUsW1wiY29sb3JcIl0pO3JldHVybigwLG8uanN4cykoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE1XCIsaGVpZ2h0OlwiMTVcIix2aWV3Qm94OlwiMCAwIDE1IDE1XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIscm9sZTpcImltZ1wifSxuLHtjaGlsZHJlbjpbKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTYuNzM4MTEgMi44MTI1SDMuNTMxMzdDMy4xMzQ0MiAyLjgxMjUgMi44MTI2MiAzLjEzNDMgMi44MTI2MiAzLjUzMTI1VjcuNTEyMDRDMi44MTI2MiA3LjkwOSAzLjEzNDQyIDguMjMwNzkgMy41MzEzNyA4LjIzMDc5SDYuNzM4MTFDNy4xMzUwNiA4LjIzMDc5IDcuNDU2ODYgNy45MDkgNy40NTY4NiA3LjUxMjA0VjMuNTMxMjVDNy40NTY4NiAzLjEzNDMgNy4xMzUwNiAyLjgxMjUgNi43MzgxMSAyLjgxMjVaXCIsZmlsbDp0fSksKDAsby5qc3gpKFwicGF0aFwiLHtkOlwiTTEyLjE1NjUgNi4yNjc1OEg4Ljk0OTcxQzguNzUxMjMgNi4yNjc1OCA4LjU5MDMzIDYuNDI4NDggOC41OTAzMyA2LjYyNjk2VjExLjM4MThDOC41OTAzMyAxMS41ODAzIDguNzUxMjMgMTEuNzQxMiA4Ljk0OTcxIDExLjc0MTJIMTIuMTU2NUMxMi4zNTQ5IDExLjc0MTIgMTIuNTE1OCAxMS41ODAzIDEyLjUxNTggMTEuMzgxOFY2LjYyNjk2QzEyLjUxNTggNi40Mjg0OCAxMi4zNTQ5IDYuMjY3NTggMTIuMTU2NSA2LjI2NzU4WlwiLHN0cm9rZTp0LHN0cm9rZVdpZHRoOlwiMC43MTg3NTNcIn0pLCgwLG8uanN4KShcInBhdGhcIix7ZDpcIk0xMi4xNTY0IDIuODEyNUg4Ljk0OTcxQzguNTUyNzUgMi44MTI1IDguMjMwOTYgMy4xMzQzIDguMjMwOTYgMy41MzEyNVY0LjQxNTg3QzguMjMwOTYgNC44MTI4MyA4LjU1Mjc1IDUuMTM0NjMgOC45NDk3MSA1LjEzNDYzSDEyLjE1NjRDMTIuNTUzNCA1LjEzNDYzIDEyLjg3NTIgNC44MTI4MyAxMi44NzUyIDQuNDE1ODdWMy41MzEyNUMxMi44NzUyIDMuMTM0MyAxMi41NTM0IDIuODEyNSAxMi4xNTY0IDIuODEyNVpcIixmaWxsOnR9KSwoMCxvLmpzeCkoXCJwYXRoXCIse2Q6XCJNNi43Mzc5OCA5LjAwNDg4SDMuNTMxMjVDMy4xMzQzIDkuMDA0ODggMi44MTI1IDkuMzI2NjggMi44MTI1IDkuNzIzNjRWMTEuMzgyM0MyLjgxMjUgMTEuNzc5MyAzLjEzNDMgMTIuMTAxMSAzLjUzMTI1IDEyLjEwMTFINi43Mzc5OEM3LjEzNDk0IDEyLjEwMTEgNy40NTY3NCAxMS43NzkzIDcuNDU2NzQgMTEuMzgyM1Y5LjcyMzY0QzcuNDU2NzQgOS4zMjY2OCA3LjEzNDk0IDkuMDA0ODggNi43Mzc5OCA5LjAwNDg4WlwiLGZpbGw6dH0pXX0pKX19LDI3NzI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDM3OSksdCksbyhuKDQ3MTgpLHQpLG8obig3OTM3KSx0KSxvKG4oODMxMSksdCksbyhuKDU3MjkpLHQpLG8obig3Nzg4KSx0KSxvKG4oMzcwMyksdCksbyhuKDY3OTUpLHQpLG8obig4MjY1KSx0KSxvKG4oMTE3KSx0KSxvKG4oMTUzOSksdCksbyhuKDkyODUpLHQpLG8obig0MDIwKSx0KSxvKG4oNTI5KSx0KSxvKG4oMjQwMiksdCksbyhuKDIxNDcpLHQpLG8obig0ODI1KSx0KSxvKG4oNjQ0NyksdCksbyhuKDEyODEpLHQpfSwzMTE3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuSWNvbldpdGhCYWRnZT12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGE9byhuKDc1MTgpKSxsPW4oNzAwNiksYz1uKDMxMzYpLHM9bigxMzM1KTt0Lkljb25XaXRoQmFkZ2U9ZT0+e3Zhcntjb3VudDp0PTAsbWF4Om59PWUsbz1yKGUsW1wiY291bnRcIixcIm1heFwiXSk7cmV0dXJuKDAsaS5qc3hzKSh1LHtjaGlsZHJlbjpbKDAsaS5qc3gpKGwuSWNvbixPYmplY3QuYXNzaWduKHt9LG8pKSx0PjAmJigwLGkuanN4KShkLHtjb3VudDp0LG1heDpufSldfSl9O2NvbnN0IHU9KDAsYS5kZWZhdWx0KShzLkJveClgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmAsZD0oMCxhLmRlZmF1bHQpKGMuQmFkZ2UpYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRyYW5zZm9ybTogc2NhbGUoNzAlKTtcbiAgcmlnaHQ6IC0keyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICB0b3A6IC0keyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbmB9LDE0NDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzExNyksdCl9LDkyMzk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDgyNzUpLHQpLG8obig2OTMpLHQpfSw4Mjc1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTG9hZGVyPXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1vKG4oNzUxOCkpLGw9big5NjM0KTt0LkxvYWRlcj0oMCxhLmRlZmF1bHQpKChlPT57dmFyIHQ9cihlLFtdKTtyZXR1cm4oMCxpLmpzeCkobC5JY29uLE9iamVjdC5hc3NpZ24oe30sdCx7Y2hpbGRyZW46KDAsaS5qc3gpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLHZpZXdCb3g6XCIwIDAgMzggMzhcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCJ9LHtjaGlsZHJlbjooMCxpLmpzeCkoXCJnXCIsT2JqZWN0LmFzc2lnbih7ZmlsbDpcIm5vbmVcIixmaWxsUnVsZTpcImV2ZW5vZGRcIn0se2NoaWxkcmVuOigwLGkuanN4cykoXCJnXCIsT2JqZWN0LmFzc2lnbih7dHJhbnNmb3JtOlwidHJhbnNsYXRlKDEgMSlcIixzdHJva2VXaWR0aDpcIjJcIn0se2NoaWxkcmVuOlsoMCxpLmpzeCkoXCJjaXJjbGVcIix7c3Ryb2tlT3BhY2l0eTpcIi41XCIsY3g6XCIxOFwiLGN5OlwiMThcIixyOlwiMThcIn0pLCgwLGkuanN4KShcInBhdGhcIixPYmplY3QuYXNzaWduKHtkOlwiTTM2IDE4YzAtOS45NC04LjA2LTE4LTE4LTE4XCJ9LHtjaGlsZHJlbjooMCxpLmpzeCkoXCJhbmltYXRlVHJhbnNmb3JtXCIse2F0dHJpYnV0ZU5hbWU6XCJ0cmFuc2Zvcm1cIix0eXBlOlwicm90YXRlXCIsZnJvbTpcIjAgMTggMThcIix0bzpcIjM2MCAxOCAxOFwiLGR1cjpcIjFzXCIscmVwZWF0Q291bnQ6XCJpbmRlZmluaXRlXCJ9KX0pKV19KSl9KSl9KSl9KSl9KSlgYH0sNjkzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksaT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fSxhPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT3BlbmZpbkxvYWRlcj12b2lkIDA7Y29uc3QgbD1uKDU4OTMpLGM9aShuKDc1MTgpKSxzPW4oOTYzNCk7dC5PcGVuZmluTG9hZGVyPSgwLGMuZGVmYXVsdCkoKGU9Pnt2YXIgdD1hKGUsW10pO3JldHVybigwLGwuanN4KShzLkljb24sT2JqZWN0LmFzc2lnbih7fSx0LHtjaGlsZHJlbjooMCxsLmpzeHMpKFwic3ZnXCIsT2JqZWN0LmFzc2lnbih7d2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLHZpZXdCb3g6XCIwIDAgMTggMThcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0se2NoaWxkcmVuOlsoMCxsLmpzeCkodSx7ZDpcIlxcbiAgICAgICAgICAgIE0gMTcuMTIyMiA2Ljg4N1xcbiAgICAgICAgICAgIEMgMTcuMDE0MSA2Ljc3ODg3IDE2Ljg5OCA2LjY3OTExIDE2Ljc3NDggNi41ODg1NlxcbiAgICAgICAgICAgIEwgMTYuNzI5NSA2LjU1NzE1XFxuICAgICAgICAgICAgQyAxNi43MDM1IDYuNTM5MDMgMTYuNjc4MSA2LjUyMDMgMTYuNjUxNSA2LjUwMjc4XFxuICAgICAgICAgICAgQyAxNi42MjUgNi40ODUyNiAxNi41OTQxIDYuNDY2NTMgMTYuNTY1NyA2LjQ0OTAxXFxuICAgICAgICAgICAgTCAxNi41MjU5IDYuNDI0MjRcXG4gICAgICAgICAgICBDIDE2LjQ5MDIgNi40MDMxIDE2LjQ1NCA2LjM4MzE2IDE2LjQxNzcgNi4zNjM4M1xcbiAgICAgICAgICAgIEwgMTYuMzk2NiA2LjM1MjM2XFxuICAgICAgICAgICAgQyAxNS45Njc4IDYuMTI3NDIgMTUuNDkxIDYuMDA5NjggMTUuMDA2OCA2LjAwOTIyXFxuICAgICAgICAgICAgQyAxNC4yMTAxIDYuMDA4NTggMTMuNDQ2MyA1LjY5MTQ5IDEyLjg4MzQgNS4xMjc3MlxcbiAgICAgICAgICAgIEMgMTIuMzIwNSA0LjU2Mzk1IDEyLjAwNDggMy43OTk3MSAxMi4wMDU2IDMuMDAzMTRcXG4gICAgICAgICAgICBDIDEyLjAwNzggMS43OTA2NiAxMS4yNzkyIDAuNjk2MjYzIDEwLjE1OTYgMC4yMzAyOTNcXG4gICAgICAgICAgICBDIDkuMDQwMDIgLTAuMjM1Njc2IDcuNzQ5OTIgMC4wMTg1NTkyIDYuODkwOTMgMC44NzQ0NDFcXG4gICAgICAgICAgICBDIDYuMDMxOTQgMS43MzAzMiA1Ljc3MzIzIDMuMDE5MjggNi4yMzU0NiA0LjE0MDI0XFxuICAgICAgICAgICAgQyA2LjY5NzY4IDUuMjYxMTkgNy43ODk4IDUuOTkzMzcgOS4wMDI1MSA1Ljk5NTMyXFxuICAgICAgICAgICAgQyA5Ljc5OTI0IDUuOTk1OTYgMTAuNTYzMSA2LjMxMzA1IDExLjEyNTkgNi44NzY4MlxcbiAgICAgICAgICAgIEMgMTEuNjg4OCA3LjQ0MDU5IDEyLjAwNDYgOC4yMDQ4NCAxMi4wMDM4IDkuMDAxNFxcbiAgICAgICAgICAgIEMgMTIuMDAzMSA5Ljc5Nzk3IDExLjY4NiAxMC41NjE2IDExLjEyMjEgMTEuMTI0NFxcbiAgICAgICAgICAgIEMgMTAuNTU4MiAxMS42ODcxIDkuNzkzOCAxMi4wMDI4IDguOTk3MDggMTIuMDAyXFxuICAgICAgICAgICAgQyA4LjIwMDk2IDEyLjAwMjcgNy40MzcyNyAxMS42ODY3IDYuODc0MzggMTEuMTIzOFxcbiAgICAgICAgICAgIEMgNi4zMTE1IDEwLjU2MSA1Ljk5NTY0IDkuNzk3MzYgNS45OTY0NCA5LjAwMTRcXG4gICAgICAgICAgICBDIDUuOTk2NDQgNy4zNDU4NiA0LjY1NDA5IDYuMDAzNzggMi45OTgyMiA2LjAwMzc4XFxuICAgICAgICAgICAgQyAxLjM0MjM1IDYuMDAzNzggMCA3LjM0NTg2IDAgOS4wMDE0XFxuICAgICAgICAgICAgQyAwIDEwLjY1NjkgMS4zNDIzNSAxMS45OTkgMi45OTgyMiAxMS45OTlcXG4gICAgICAgICAgICBDIDQuNjU0MDkgMTEuOTk5IDUuOTk2NDQgMTMuMzQxMSA1Ljk5NjQ0IDE0Ljk5NjZcXG4gICAgICAgICAgICBDIDUuOTk2NDQgMTYuNjU1MyA3LjM0MTM2IDE4IDkuMDAwNCAxOFxcbiAgICAgICAgICAgIEMgMTAuNjU5NCAxOCAxMi4wMDQ0IDE2LjY1NTMgMTIuMDA0NCAxNC45OTY2XFxuICAgICAgICAgICAgQyAxMi4wMDQ0IDEzLjM0MTEgMTMuMzQ2NyAxMS45OTkgMTUuMDAyNiAxMS45OTlcXG4gICAgICAgICAgICBDIDE1LjUzNzkgMTEuOTk5NCAxNi4wNjM1IDExLjg1NjMgMTYuNTI0NyAxMS41ODQ2XFxuICAgICAgICAgICAgQyAxNi41NjQ1IDExLjU2MSAxNi42MDM4IDExLjUzNjMgMTYuNjQ1NSAxMS41MTA5XFxuICAgICAgICAgICAgTCAxNi42NTQgMTEuNTA1NVxcbiAgICAgICAgICAgIEMgMTYuNjkwMiAxMS40ODEzIDE2LjcyNjUgMTEuNDU1OSAxNi43NjE1IDExLjQzMDVcXG4gICAgICAgICAgICBMIDE2Ljc3NzIgMTEuNDE5N1xcbiAgICAgICAgICAgIEMgMTYuODA4NiAxMS4zOTY3IDE2LjgzNzYgMTEuMzcyIDE2Ljg3MDkgMTEuMzQ3MlxcbiAgICAgICAgICAgIEwgMTYuODk3NSAxMS4zMjY2XFxuICAgICAgICAgICAgQyAxNi45MjY1IDExLjMwMzEgMTYuOTU0MyAxMS4yNzgzIDE2Ljk4MjcgMTEuMjUzNVxcbiAgICAgICAgICAgIEwgMTcuMDEzNSAxMS4yMjdcXG4gICAgICAgICAgICBDIDE3LjA0OTcgMTEuMTk0MyAxNy4wODU0IDExLjE2MDUgMTcuMTIwNCAxMS4xMjU1XFxuICAgICAgICAgICAgTCAxNy4xMjU5IDExLjEyMDZcXG4gICAgICAgICAgICBDIDE3LjI1NTMgMTAuOTkwNiAxNy4zNzI2IDEwLjg0OTEgMTcuNDc2MyAxMC42OTc4XFxuICAgICAgICAgICAgQyAxNy40OTg5IDEwLjY2NTEgMTcuNTIwNiAxMC42MzIxIDE3LjU0MTYgMTAuNTk4N1xcbiAgICAgICAgICAgIEMgMTguMjg0MyA5LjQxNSAxOC4xMTA0IDcuODc1MiAxNy4xMjIyIDYuODg3WlxcbiAgICAgICAgICAgIFwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pLCgwLGwuanN4KShkLHtjeDpcIjlcIixjeTpcIjNcIixyOlwiMi45XCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLGFuZ2xlOjB9KSwoMCxsLmpzeCkoZCx7Y3g6XCIxNVwiLGN5OlwiOVwiLHI6XCIyLjc1XCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLGFuZ2xlOi05MH0pLCgwLGwuanN4KShkLHtjeDpcIjlcIixjeTpcIjE1XCIscjpcIjIuNVwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixhbmdsZTotMTgwfSksKDAsbC5qc3gpKGQse2N4OlwiM1wiLGN5OlwiOVwiLHI6XCIyLjI1XCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLGFuZ2xlOi0yNzB9KV19KSl9KSl9KSlgYDtjb25zdCB1PWMuZGVmYXVsdC5wYXRoYFxuICBAa2V5ZnJhbWVzIGxvZ29BbmltYXRpb24ge1xuICAgIDAlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDI1JSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICAzNSUge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gICAgNjAlIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICAgIDc1JSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgYW5pbWF0aW9uOiBsb2dvQW5pbWF0aW9uIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuYCxkPWMuZGVmYXVsdC5jaXJjbGVgXG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbiAgYW5pbWF0aW9uOiAkeyh7YW5nbGU6ZX0pPT4oZT0+Yy5rZXlmcmFtZXNgXG4gICAgMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICAyNSUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICAzMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICA1MCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoJHtlfWRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICA3MCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTM2MGRlZyk7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICA3NSUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTM2MGRlZyk7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0zNjBkZWcpO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG5gKShlKX0gMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG5gfSwzNTg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5TdHlsZWRJbnB1dEZpZWxkPXQuQmFzZUlucHV0PXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1uKDY2ODkpLGw9byhuKDc1MTgpKSxjPW4oMTMzNSkscz1uKDk1MDcpLHU9big3NzY5KSxkPW4oOTYzNCk7dC5CYXNlSW5wdXQ9KDAsYS5mb3J3YXJkUmVmKSgoKGUsbik9Pnt2YXJ7Y2xhc3NOYW1lOm8scmVuZGVySW5wdXQ6YSxtZXNzYWdlOmwsbGFiZWw6YyxzdGF0dXM6cyxuYW1lOnUsaWNvbjpkLHR5cGU6Zz1cInRleHRcIn09ZSxtPXIoZSxbXCJjbGFzc05hbWVcIixcInJlbmRlcklucHV0XCIsXCJtZXNzYWdlXCIsXCJsYWJlbFwiLFwic3RhdHVzXCIsXCJuYW1lXCIsXCJpY29uXCIsXCJ0eXBlXCJdKTtjb25zdCB3PVwiY2hlY2tib3hcIj09PWd8fFwicmFkaW9cIj09PWc7cmV0dXJuKDAsaS5qc3hzKSh2LE9iamVjdC5hc3NpZ24oe2ZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixhbGlnbkl0ZW1zOlwiZmxleC1zdGFydFwifSx7Y2hpbGRyZW46WygwLGkuanN4cykoZixPYmplY3QuYXNzaWduKHtpbmxpbmU6d30se2NoaWxkcmVuOlshIWMmJigwLGkuanN4KShDLE9iamVjdC5hc3NpZ24oe2FzOlwibGFiZWxcIixodG1sRm9yOnUsd2VpZ2h0OlwiYm9sZFwifSx7Y2hpbGRyZW46Y30pKSwhIWQmJigwLGkuanN4KShwLHtpY29uOmR9KSwhIWEmJmEoT2JqZWN0LmFzc2lnbih7bmFtZTp1LHN0YXR1czpzLHR5cGU6Z30sbSkpLCFhJiYoMCxpLmpzeCkodC5TdHlsZWRJbnB1dEZpZWxkLE9iamVjdC5hc3NpZ24oe2NsYXNzTmFtZTpvLG5hbWU6dSxzdGF0dXM6cyx0eXBlOmd9LG0se3JlZjpufSkpXX0pKSwhIWwmJigwLGkuanN4KShoLE9iamVjdC5hc3NpZ24oe3N0YXR1czpzfSx7Y2hpbGRyZW46bH0pKV19KSl9KSksdC5CYXNlSW5wdXQuZGlzcGxheU5hbWU9XCJCYXNlSW5wdXRcIjtjb25zdCBmPSgwLGwuZGVmYXVsdCkoYy5Cb3gpYFxuICBhbGlnbi1pdGVtczogJHsoe2lubGluZTplfSk9PmU/XCJjZW50ZXJcIjpcImZsZXgtc3RhcnRcIn07XG4gIGZsZXgtZGlyZWN0aW9uOiAkeyh7aW5saW5lOmV9KT0+ZT9cInJvdy1yZXZlcnNlXCI6XCJjb2x1bW5cIn07XG4gIGp1c3RpZnktY29udGVudDogJHsoe2lubGluZTplfSk9PmU/XCJmbGV4LWVuZFwiOlwiZmxleC1zdGFydFwifTtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgJHsoe2lubGluZTplLHRoZW1lOnR9KT0+ZSYmYFxcbiAgICAke0N9IHtcXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgICBtYXJnaW4tbGVmdDogJHt0LnB4LnNtYWxsfTtcXG4gICAgICBmb250LXdlaWdodDogJHt0LmZvbnRXZWlnaHQubm9ybWFsfTtcXG4gICAgfVxcbiAgYH1cbmAscD0oMCxsLmRlZmF1bHQpKGQuSWNvbilgXG4gIG1hcmdpbi1sZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gIG1pbi13aWR0aDogJHsoe3RoZW1lOmV9KT0+ZS5pY29uU2l6ZS5zbWFsbH07XG4gIG1pbi1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUuaWNvblNpemUuc21hbGx9O1xuYCxDPSgwLGwuZGVmYXVsdCkodS5UZXh0KWBcbiAgbWFyZ2luLWJvdHRvbTogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuYCxoPSgwLGwuZGVmYXVsdCkodS5UZXh0KWBcbiAgY29sb3I6ICR7KHt0aGVtZTplLHN0YXR1czp0fSk9PigwLHMuZ2V0U3RhdHVzQ29sb3IpKGUsdCxcInRleHRIZWxwXCIpfTtcbiAgbWFyZ2luLXRvcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG5gLHY9KDAsbC5kZWZhdWx0KShjLkJveClgXG4gIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5iYXNlfTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG5gO3QuU3R5bGVkSW5wdXRGaWVsZD1sLmRlZmF1bHQuaW5wdXRgXG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNX07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmUsc3RhdHVzOnR9KT0+KDAscy5nZXRTdGF0dXNDb2xvcikoZSx0LFwiaW5wdXRCb3JkZXJcIil9O1xuICBib3JkZXItcmFkaXVzOiAkeyh7dGhlbWU6ZX0pPT5lLnJhZGl1cy5zbWFsbH07XG4gIGJveC1zaGFkb3c6ICR7KHt0aGVtZTplfSk9PmUuc2hhZG93LmJhc2V9O1xuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0Q29sb3J9O1xuICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuYmFzZX07XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5iYXNlfWB9O1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUcmFuc2l0aW9uKTtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplLHN0YXR1czp0fSk9PigwLHMuZ2V0U3RhdHVzQ29sb3IpKGUsdCxcImlucHV0Rm9jdXNlZFwiKX07XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG5cbiAgJjpkaXNhYmxlZDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhIGhhY2sgdG8gaW52ZXJ0IHRoZSBjYWxlbmRhciBpY29uLiBUaGlzIG9ubHkgd29ya3MgaW4gZGFyayBtb2RlLlxuICAgKiBVbnRpbCBlaXRoZXIgbGlnaHQgbW9kZSBpcyBhIHRoaW5nIG9yIHdlIGdldCBhIGRhdGV0aW1lIHBpY2tlciBkZXNpZ24sIHRoaXMgd2lsbCBkby5cbiAgICovXG4gIDo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIHtcbiAgICBmaWx0ZXI6IGludmVydCgxKTtcbiAgfVxuYH0sODg3ODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzU4KSx0KX0sMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGk9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH0sYT10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxsPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2hlY2tib3g9dm9pZCAwO2NvbnN0IGM9big1ODkzKSxzPWkobig2Njg5KSksdT1sKG4oNzUxOCkpLGQ9big4ODc4KSxmPW4oOTYzNCkscD1uKDk1MDcpO3QuQ2hlY2tib3g9cy5mb3J3YXJkUmVmKCgoZSx0KT0+e3ZhcntzdGF0dXM6bn09ZSxyPWEoZSxbXCJzdGF0dXNcIl0pO3JldHVybigwLGMuanN4KShkLkJhc2VJbnB1dCxPYmplY3QuYXNzaWduKHt9LHIse3R5cGU6XCJjaGVja2JveFwiLHN0YXR1czpuLHJlbmRlcklucHV0OmU9Pnt2YXIgcj1hKGUsW10pO3JldHVybigwLGMuanN4cykoQyx7Y2hpbGRyZW46WygwLGMuanN4KShnLE9iamVjdC5hc3NpZ24oe3JlZjp0LGlkOnIubmFtZSx0eXBlOlwiY2hlY2tib3hcIn0scikpLCgwLGMuanN4KShoLE9iamVjdC5hc3NpZ24oe3N0YXR1czpufSx7Y2hpbGRyZW46KDAsYy5qc3gpKHYse30pfSkpXX0pfX0pKX0pKSx0LkNoZWNrYm94LmRpc3BsYXlOYW1lPVwiQ2hlY2tib3hcIjtjb25zdCBDPXUuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYCxoPXUuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBoZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIHdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplLHN0YXR1czp0fSk9PigwLHAuZ2V0U3RhdHVzQ29sb3IpKGUsdCxcInRleHREZWZhdWx0XCIpfTtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAsdj0oMCx1LmRlZmF1bHQpKGYuSWNvbikuYXR0cnMoe2ljb246XCJDaGVja0ljb25cIixzaXplOlwic21hbGxcIn0pYFxuICBvcGFjaXR5OiAwO1xuYCxnPXUuZGVmYXVsdC5pbnB1dGBcbiAgb3BhY2l0eTogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgJjpjaGVja2VkICsgJHtoK1wiIFwiK3Z9IHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgJjpob3ZlciArICR7aH0ge1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcHggMXB4ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEZvY3VzZWR9O1xuICB9XG5cbiAgJjpmb2N1cyArICR7aH0ge1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcHggMXB4ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEZvY3VzZWR9O1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgfVxuXG4gICY6ZGlzYWJsZWQgKyAke2h9IHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cbmB9LDgwNTE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDEpLHQpfSw5MDIyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksaT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoZWNrYm94R3JvdXA9dm9pZCAwO2NvbnN0IGE9big1ODkzKSxsPWkobig2Njg5KSksYz1pKG4oNzUxOCkpLHM9bigxMzM1KSx1PW4oNzc2OSksZD1uKDEpO3QuQ2hlY2tib3hHcm91cD0oe2Rpc2FibGVkOmUsZ2FwOnQ9XCJzbWFsbFwiLG1lc3NhZ2U6bixuYW1lOnIsY2hpbGRyZW46b30pPT4oMCxhLmpzeHMpKGYse2NoaWxkcmVuOlsoMCxhLmpzeCkocCxPYmplY3QuYXNzaWduKHtnYXA6dH0se2NoaWxkcmVuOmwuQ2hpbGRyZW4ubWFwKG8sKHQ9Pntjb25zdCBuPXQ7cmV0dXJuIG4udHlwZT09PWQuQ2hlY2tib3g/bC5jbG9uZUVsZW1lbnQobix7bmFtZTpyLGRpc2FibGVkOmV9KTpufSkpfSkpLG4/KDAsYS5qc3gpKEMsT2JqZWN0LmFzc2lnbih7ZGlzYWJsZWQ6ZX0se2NoaWxkcmVuOm59KSk6bnVsbF19KTtjb25zdCBmPSgwLGMuZGVmYXVsdCkocy5Cb3gpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG5gLHA9KDAsYy5kZWZhdWx0KShzLkJveClgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xuYCxDPSgwLGMuZGVmYXVsdCkodS5UZXh0KWBcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dFBsYWNlaG9sZGVyfTtcbiAgbWFyZ2luLXRvcDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcblxuICAkeyh7ZGlzYWJsZWQ6ZX0pPT5lJiZjLmNzc2BcbiAgICAgIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gICAgYH1cbmB9LDQxNjk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDkwMjIpLHQpfSw5MzY4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRGF0ZUlucHV0PXZvaWQgMDtjb25zdCBpPW4oNTg5MyksYT1uKDY2ODkpLGw9byhuKDc1MTgpKSxjPW4oOTYzNCkscz1uKDEzMzUpLHU9big5NTA3KSxkPW4oODg3OCk7dC5EYXRlSW5wdXQ9KDAsYS5mb3J3YXJkUmVmKSgoKGUsdCk9Pnt2YXJ7dmFsdWU6bj1cIlwiLHR5cGU6bz1cImRhdGVcIixleHBhbmRlZDpsPSExLG9uQ2hhbmdlOmN9PWUscz1yKGUsW1widmFsdWVcIixcInR5cGVcIixcImV4cGFuZGVkXCIsXCJvbkNoYW5nZVwiXSk7Y29uc3RbdSxwXT0oMCxhLnVzZVN0YXRlKShuKTtyZXR1cm4oMCxhLnVzZUVmZmVjdCkoKCgpPT5wKG4pKSxbXSksKDAsaS5qc3gpKGQuQmFzZUlucHV0LE9iamVjdC5hc3NpZ24oe3R5cGU6b30scyx7cmVuZGVySW5wdXQ6ZT0+e3ZhciBuPXIoZSxbXSk7cmV0dXJuKDAsaS5qc3gpKGYsT2JqZWN0LmFzc2lnbih7cmVmOnQsdHlwZTpvLG9uQ2hhbmdlOmU9Pntjb25zdHt2YWx1ZTp0fT1lLnRhcmdldDt0JiZwKHQpLG51bGw9PWN8fGMoZSl9LHZhbHVlOnUsZXhwYW5kZWQ6bH0sbikpfX0pKX0pKSx0LkRhdGVJbnB1dC5kaXNwbGF5TmFtZT1cIkRhdGVJbnB1dFwiO2NvbnN0IGY9KDAsYS5mb3J3YXJkUmVmKSgoKGUsdCk9Pnt2YXJ7dHlwZTpuLGV4cGFuZGVkOm8sb25FeHBhbmQ6YX09ZSxsPXIoZSxbXCJ0eXBlXCIsXCJleHBhbmRlZFwiLFwib25FeHBhbmRcIl0pO3JldHVybigwLGkuanN4cykocCx7Y2hpbGRyZW46WygwLGkuanN4KShoLHtjaGlsZHJlbjooMCxpLmpzeCkoYy5JY29uLHtpY29uOlwidGltZVwiPT09bj9cIkNsb2NrSWNvblwiOlwiQ2FsZW5kYXJJY29uXCJ9KX0pLCgwLGkuanN4KShnLE9iamVjdC5hc3NpZ24oe3JlZjp0LHR5cGU6bixvbktleURvd246ZT0+e1wiIFwiPT09ZS5rZXkmJmUucHJldmVudERlZmF1bHQoKX19LGwpKSwoMCxpLmpzeCkodixPYmplY3QuYXNzaWduKHtmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsZGlzYWJsZWQ6bC5kaXNhYmxlZCxvbkNsaWNrOmF9LHtjaGlsZHJlbjooMCxpLmpzeCkoYy5JY29uLHtpY29uOm8/XCJDaGV2cm9uVXBJY29uXCI6XCJDaGV2cm9uRG93bkljb25cIn0pfSkpXX0pfSkpO2YuZGlzcGxheU5hbWU9XCJTdHlsZWREYXRlSW5wdXRcIjtjb25zdCBwPWwuZGVmYXVsdC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICB3aWR0aDogMTAwJTtcbmAsQz0oMCxsLmRlZmF1bHQpKHMuQm94KWBcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogY2FsYygxMDAlIC0gMnB4KTtcbmAsaD0oMCxsLmRlZmF1bHQpKEMpYFxuICBsZWZ0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5gLHY9KDAsbC5kZWZhdWx0KShDKWBcbiAgcmlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuICBwb2ludGVyLWV2ZW50czogJHsoe2Rpc2FibGVkOmV9KT0+ZT9cIm5vbmVcIjp2b2lkIDB9O1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNn07XG4gIHBhZGRpbmctbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG5gLGc9KDAsbC5kZWZhdWx0KShkLlN0eWxlZElucHV0RmllbGQpYFxuICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gIGZvbnQtZmFtaWx5OiAke3UuRm9udFN0YWNrfTtcbiAgcGFkZGluZy1yaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC54eHhsYXJnZX07XG4gIHBhZGRpbmctbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC54eHhsYXJnZX07XG4gIDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbiAgOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3Ige1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuYH0sOTY1NDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oOTM2OCksdCl9LDE5Nzg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDY4ODQpLHQpfSw2ODg0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSxvPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTnVtYmVySW5wdXQ9dm9pZCAwO2NvbnN0IGk9big1ODkzKSxhPW4oNjY4OSksbD1vKG4oNzUxOCkpLGM9big2NjA2KSxzPW4oOTYzNCksdT1uKDEzMzUpLGQ9big4ODc4KTt2YXIgZjshZnVuY3Rpb24oZSl7ZVtlLlVwPTFdPVwiVXBcIixlW2UuRG93bj0tMV09XCJEb3duXCJ9KGZ8fChmPXt9KSksdC5OdW1iZXJJbnB1dD0oMCxhLmZvcndhcmRSZWYpKCgoZSx0KT0+e3ZhcnttaW46bixtYXg6byxvbkNoYW5nZTpsLHN0ZXA6cz0xLHZhbHVlOnV9PWUsQz1yKGUsW1wibWluXCIsXCJtYXhcIixcIm9uQ2hhbmdlXCIsXCJzdGVwXCIsXCJ2YWx1ZVwiXSk7Y29uc3QgaD1OdW1iZXIocyksW3YsZ109KDAsYS51c2VTdGF0ZSkoTnVtYmVyKHUpKTsoMCxhLnVzZUVmZmVjdCkoKCgpPT5nKE51bWJlcih1KSkpLFtdKTtjb25zdCBtPWU9Pntjb25zdCB0PXY/TnVtYmVyKHYpOjAscj1uP051bWJlcihuKTp2b2lkIDAsaT1vP051bWJlcihvKTp2b2lkIDAsYT0oMCxjLmNsYW1wKSh0K2gqZSxyLGkpO2coYSl9O3JldHVybigwLGkuanN4KShkLkJhc2VJbnB1dCxPYmplY3QuYXNzaWduKHt0eXBlOlwibnVtYmVyXCJ9LEMse3JlbmRlcklucHV0OmU9Pnt2YXIgYT1yKGUsW10pO3JldHVybigwLGkuanN4KShwLE9iamVjdC5hc3NpZ24oe3JlZjp0LG9uSW5jcmVtZW50OigpPT5tKGYuVXApLG9uRGVjcmVtZW50OigpPT5tKGYuRG93biksb25DaGFuZ2U6ZT0+e2NvbnN0e3ZhbHVlOnR9PWUudGFyZ2V0O3QmJmcoTnVtYmVyKHQpKSxsJiZsKGUpfSxtaW46bixtYXg6byxzdGVwOnN9LGEse3ZhbHVlOnZ9KSl9fSkpfSkpLHQuTnVtYmVySW5wdXQuZGlzcGxheU5hbWU9XCJOdW1iZXJJbnB1dFwiO2NvbnN0IHA9KDAsYS5mb3J3YXJkUmVmKSgoKGUsdCk9Pnt2YXJ7b25JbmNyZW1lbnQ6bixvbkRlY3JlbWVudDpvfT1lLGE9cihlLFtcIm9uSW5jcmVtZW50XCIsXCJvbkRlY3JlbWVudFwiXSk7cmV0dXJuKDAsaS5qc3hzKShDLHtjaGlsZHJlbjpbKDAsaS5qc3gpKGcsT2JqZWN0LmFzc2lnbih7cmVmOnR9LGEpKSwoMCxpLmpzeHMpKGgsT2JqZWN0LmFzc2lnbih7ZmxleERpcmVjdGlvbjpcImNvbHVtblwiLGRpc2FibGVkOmEuZGlzYWJsZWR9LHtjaGlsZHJlbjpbKDAsaS5qc3gpKHYsT2JqZWN0LmFzc2lnbih7b25DbGljazpuLGRpc2FibGVkOmEuZGlzYWJsZWR9LHtjaGlsZHJlbjooMCxpLmpzeCkocy5JY29uLHtpY29uOlwiVHJpYW5nbGVVcEljb25cIn0pfSkpLCgwLGkuanN4KSh2LE9iamVjdC5hc3NpZ24oe29uQ2xpY2s6byxkaXNhYmxlZDphLmRpc2FibGVkfSx7Y2hpbGRyZW46KDAsaS5qc3gpKHMuSWNvbix7aWNvbjpcIlRyaWFuZ2xlRG93bkljb25cIn0pfSkpXX0pKV19KX0pKTtwLmRpc3BsYXlOYW1lPVwiU3R5bGVkTnVtYmVySW5wdXRcIjtjb25zdCBDPWwuZGVmYXVsdC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5yYWRpdXMuc21hbGx9O1xuICB3aWR0aDogMTAwJTtcbmAsaD0oMCxsLmRlZmF1bHQpKHUuQm94KWBcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMXB4O1xuICB0b3A6IDFweDtcbiAgZ2FwOiAxcHg7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gMnB4KTtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+YDAgJHtlLnJhZGl1cy5zbWFsbH0gJHtlLnJhZGl1cy5zbWFsbH0gMGB9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIHBvaW50ZXItZXZlbnRzOiAkeyh7ZGlzYWJsZWQ6ZX0pPT5lP1wibm9uZVwiOnZvaWQgMH07XG5gLHY9KDAsbC5kZWZhdWx0KSh1LkJveClgXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICBwYWRkaW5nOiAwICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGhlaWdodDogNTAlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICBjb2xvcjogJHsoe2Rpc2FibGVkOmUsdGhlbWU6dH0pPT5lP3QucGFsZXR0ZS50ZXh0SGVscDp0LnBhbGV0dGUudGV4dERlZmF1bHR9O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEZvY3VzZWR9O1xuICB9XG5cbiAgJjphY3RpdmUge1xuICAgIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dENvbG9yfTtcbiAgfVxuYCxnPSgwLGwuZGVmYXVsdCkoZC5TdHlsZWRJbnB1dEZpZWxkKWBcbiAgYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4Lnh4eGxhcmdlfTtcblxuICA6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG4gIDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBtYXJnaW46IDA7XG4gIH1cbmB9LDUyMTU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDIyNTUpLHQpfSwyMjU1OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksaT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlJhZGlvR3JvdXA9dm9pZCAwO2NvbnN0IGE9big1ODkzKSxsPWkobig2Njg5KSksYz1pKG4oNzUxOCkpLHM9bigxMzM1KSx1PW4oNzc2OSksZD1uKDI1NjUpO3QuUmFkaW9Hcm91cD0oe2RpcmVjdGlvbjplPVwiY29sdW1uXCIsZGlzYWJsZWQ6dCxsYWJlbFNpZGU6bj1cInJpZ2h0XCIsZ2FwOnI9XCJzbWFsbFwiLG1lc3NhZ2U6byxuYW1lOmksY2hpbGRyZW46Y30pPT4oMCxhLmpzeHMpKGYse2NoaWxkcmVuOlsoMCxhLmpzeCkocCxPYmplY3QuYXNzaWduKHtkaXJlY3Rpb246ZSxsYWJlbFNpZGU6bixnYXA6cn0se2NoaWxkcmVuOmwuQ2hpbGRyZW4ubWFwKGMsKGU9Pntjb25zdCByPWU7cmV0dXJuIHIudHlwZT09PWQuUmFkaW9JbnB1dD9sLmNsb25lRWxlbWVudChyLHtuYW1lOmksbGFiZWxTaWRlOm4sZGlzYWJsZWQ6dH0pOnJ9KSl9KSksbz8oMCxhLmpzeCkoQyxPYmplY3QuYXNzaWduKHtkaXNhYmxlZDp0fSx7Y2hpbGRyZW46b30pKTpudWxsXX0pO2NvbnN0IGY9KDAsYy5kZWZhdWx0KShzLkJveClgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiBtYXgtY29udGVudDtcbmAscD0oMCxjLmRlZmF1bHQpKHMuQm94KWBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7ZT0+ZS5kaXJlY3Rpb259O1xuICBhbGlnbi1pdGVtczogJHtlPT57c3dpdGNoKGUubGFiZWxTaWRlKXtjYXNlXCJsZWZ0XCI6cmV0dXJuXCJlbmRcIjtjYXNlXCJyaWdodFwiOnJldHVyblwic3RhcnRcIjtkZWZhdWx0OnJldHVyblwiY2VudGVyXCJ9fX07XG4gIHdpZHRoOiBmaXQtY29udGVudDtcbmAsQz0oMCxjLmRlZmF1bHQpKHUuVGV4dClgXG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcn07XG4gIG1hcmdpbi10b3A6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG5cbiAgJHsoe2Rpc2FibGVkOmV9KT0+ZSYmYy5jc3NgXG4gICAgICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICAgIGB9XG5gfSwzNjQxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obigyNTY1KSx0KX0sMjU2NTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGk9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH0sYT10aGlzJiZ0aGlzLl9fcmVzdHx8ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlJhZGlvSW5wdXQ9dm9pZCAwO2NvbnN0IGw9big1ODkzKSxjPW4oNzc2OSkscz1pKG4oNjY4OSkpLHU9aShuKDc1MTgpKSxkPW4oMTMzNSksZj1uKDk2MzQpO3QuUmFkaW9JbnB1dD1zLmZvcndhcmRSZWYoKChlLHQpPT57dmFye2Rpc2FibGVkOm4saWQ6cixsYWJlbDpvLGxhYmVsU2lkZTppLGljb246Y309ZSxzPWEoZSxbXCJkaXNhYmxlZFwiLFwiaWRcIixcImxhYmVsXCIsXCJsYWJlbFNpZGVcIixcImljb25cIl0pO3JldHVybigwLGwuanN4KShwLHtjaGlsZHJlbjooMCxsLmpzeHMpKHYsT2JqZWN0LmFzc2lnbih7YXM6XCJsYWJlbFwiLGh0bWxGb3I6cixsYWJlbFNpZGU6aSxkaXNhYmxlZDpufSx7Y2hpbGRyZW46WygwLGwuanN4KShoLE9iamVjdC5hc3NpZ24oe3JlZjp0LHR5cGU6XCJyYWRpb1wiLGRpc2FibGVkOm59LHMpKSwoMCxsLmpzeCkoQyx7fSksISFjJiYoMCxsLmpzeCkoZi5JY29uLHtpY29uOmN9KSxvfHxcIlwiXX0pKX0pfSkpLHQuUmFkaW9JbnB1dC5kaXNwbGF5TmFtZT1cIlJhZGlvSW5wdXRcIjtjb25zdCBwPSgwLHUuZGVmYXVsdCkoZC5Cb3gpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuYCxDPXUuZGVmYXVsdC5kaXZgXG4gIHdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBoZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiAycHg7XG4gIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG5cbiAgaW5wdXQ6Y2hlY2tlZCB+ICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICAgIHdpZHRoOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gICAgaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnhzbWFsbH07XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0RGVmYXVsdH07XG4gIH1cblxuICBpbnB1dDpkaXNhYmxlZCB+ICYge1xuICAgIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmlucHV0RGlzYWJsZWR9O1xuICB9XG5cbiAgaW5wdXQ6ZGlzYWJsZWQgfiAmOmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuaW5wdXREaXNhYmxlZH07XG4gIH1cbmAsaD11LmRlZmF1bHQuaW5wdXRgXG4gIG9wYWNpdHk6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6ZGlzYWJsZWQge1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgfVxuYCx2PSgwLHUuZGVmYXVsdCkoYy5UZXh0KWBcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4LWRpcmVjdGlvbjogJHsoe2xhYmVsU2lkZTplfSk9Pntzd2l0Y2goZXx8XCJyaWdodFwiKXtjYXNlXCJsZWZ0XCI6cmV0dXJuXCJyb3ctcmV2ZXJzZVwiO2Nhc2VcInJpZ2h0XCI6cmV0dXJuXCJyb3dcIjtjYXNlXCJ0b3BcIjpyZXR1cm5cImNvbHVtbi1yZXZlcnNlXCI7Y2FzZVwiYm90dG9tXCI6cmV0dXJuXCJjb2x1bW5cIn19fTtcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICR7KHtkaXNhYmxlZDplfSk9PmU/dS5jc3NgXG4gICAgICAgICAgJiB7XG4gICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgICAgICAgYDpudWxsfVxuYH0sODUxMDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNzQyOSksdCl9LDc0Mjk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuUmF3SW5wdXQ9dm9pZCAwO2NvbnN0IG89cihuKDc1MTgpKTt0LlJhd0lucHV0PW8uZGVmYXVsdC5pbnB1dGBgLHQuUmF3SW5wdXQuZGlzcGxheU5hbWU9XCJSYXdJbnB1dFwifSwzMTE5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig3OTkpLHQpfSw3OTk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVGV4dEFyZWE9dm9pZCAwO2NvbnN0IG89big1ODkzKSxpPW4oNjY4OSksYT1yKG4oNzUxOCkpLGw9big5NTA3KSxjPW4oOTUwNykscz1uKDk1MDcpO3QuVGV4dEFyZWE9KDAsaS5mb3J3YXJkUmVmKSgoKGUsdCk9PigwLG8uanN4KSh1LE9iamVjdC5hc3NpZ24oe3JlZjp0fSxlLHtvbkNoYW5nZTplLm9uQ2hhbmdlfSkpKSksdC5UZXh0QXJlYS5kaXNwbGF5TmFtZT1cIlRleHRBcmVhXCI7Y29uc3QgdT1hLmRlZmF1bHQudGV4dGFyZWFgXG4gIGJhY2tncm91bmQ6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kNH07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dEJvcmRlcn07XG4gIGJvcmRlci1jb2xvcjogJHsoe3RoZW1lOmUsc3RhdHVzOnR9KT0+KDAscy5nZXRTdGF0dXNDb2xvcikoZSx0LFwiaW5wdXRCb3JkZXJcIil9O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIHdpZHRoOiAxMDAlO1xuICByZXNpemU6IG5vbmU7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gICR7bC5NaXhpbnMuc2Nyb2xsYmFyLnNtYWxsfTtcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dENvbG9yfTtcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmJhc2V9O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5saW5lSGVpZ2h0LnRleHR9O1xuICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0Lm5vcm1hbH07XG4gIGZvbnQtZmFtaWx5OiAke2MuRm9udFN0YWNrfTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH0gJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH0gMHB4XG4gICAgJHsoe3RoZW1lOmV9KT0+ZS5weC5zbWFsbH07XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgICBib3JkZXItY29sb3I6ICR7KHt0aGVtZTplLHN0YXR1czp0fSk9PigwLHMuZ2V0U3RhdHVzQ29sb3IpKGUsdCxcImlucHV0Rm9jdXNlZFwiKX07XG4gIH1cblxuICAmOmRpc2FibGVkOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dERpc2FibGVkfTtcbiAgfVxuYH0sODk1MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMjM1MiksdCl9LDIzNTI6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVGV4dElucHV0PXZvaWQgMDtjb25zdCByPW4oNTg5Myksbz1uKDY2ODkpLGk9big4ODc4KTt0LlRleHRJbnB1dD0oMCxvLmZvcndhcmRSZWYpKCgoZSx0KT0+KDAsci5qc3gpKGkuQmFzZUlucHV0LE9iamVjdC5hc3NpZ24oe3JlZjp0LHR5cGU6XCJ0ZXh0XCJ9LGUpKSkpLHQuVGV4dElucHV0LmRpc3BsYXlOYW1lPVwiVGV4dElucHV0XCJ9LDMzMzk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQm94PXZvaWQgMDtjb25zdCBvPXIobig3NTE4KSksaT1uKDg3MzIpLGE9big1NDU5KSxsPXsxOmEuUGFsZXR0ZS5iYWNrZ3JvdW5kMSwyOmEuUGFsZXR0ZS5iYWNrZ3JvdW5kMiwzOmEuUGFsZXR0ZS5iYWNrZ3JvdW5kMyw0OmEuUGFsZXR0ZS5iYWNrZ3JvdW5kNCw1OmEuUGFsZXR0ZS5iYWNrZ3JvdW5kNSw2OmEuUGFsZXR0ZS5iYWNrZ3JvdW5kNn07dC5Cb3g9by5kZWZhdWx0LmRpdmBcbiAgLyoqXG4gICAqIFN0eWxlIFNjcm9sbGJhciBmb3IgQm94ZXMgd2l0aCBvdmVyZmxvd1xuICAgKi9cbiAgJHtpLk1peGlucy5zY3JvbGxiYXIuYmFzZX1cblxuICBkaXNwbGF5OiAkeyh7ZGlzcGxheTplPVwiZmxleFwifSk9PmV9O1xuICBmbGV4LWRpcmVjdGlvbjogJHsoe2ZsZXhEaXJlY3Rpb246ZT1cInJvd1wifSk9PmV9O1xuICBmbGV4LXdyYXA6ICR7KHtmbGV4V3JhcDplPVwibm93cmFwXCJ9KT0+ZX07XG4gIGFsaWduLWl0ZW1zOiAkeyh7YWxpZ25JdGVtczplfSk9PmV9O1xuICBqdXN0aWZ5LWNvbnRlbnQ6ICR7KHtqdXN0aWZ5Q29udGVudDplfSk9PmV9O1xuICBnYXA6ICR7KHt0aGVtZTplLGdhcDp0fSk9PnQmJmUucHhbdF19O1xuICBhbGlnbi1zZWxmOiAkeyh7YWxpZ25TZWxmOmV9KT0+ZX07XG4gIGZsZXgtYmFzaXM6ICR7KHtmbGV4QmFzaXM6ZX0pPT5lfTtcbiAgZmxleC1ncm93OiAkeyh7ZmxleEdyb3c6ZX0pPT5lfTtcbiAgZmxleC1zaHJpbms6ICR7KHtmbGV4U2hyaW5rOmV9KT0+ZX07XG4gIG9yZGVyOiAkeyh7b3JkZXI6ZX0pPT5lfTtcbiAgcGFkZGluZzogJHsoe3RoZW1lOmUscGFkZGluZzp0fSk9PnQmJmUucHhbdF19O1xuICBiYWNrZ3JvdW5kOiAkeyh7dGhlbWU6ZSxiYWNrZ3JvdW5kOnR9KT0+dCYmZS5wYWxldHRlW2xbdF1dfTtcbmAsdC5Cb3guZGlzcGxheU5hbWU9XCJCb3hcIn0sMTMzNTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oMzMzOSksdCl9LDY3MTA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5EZWZpbml0aW9uTGlzdD12b2lkIDA7Y29uc3QgaT1uKDU4OTMpLGE9byhuKDc1MTgpKTt0LkRlZmluaXRpb25MaXN0PWU9Pnt2YXJ7ZGVmaW5pdGlvbnM6dH09ZSxuPXIoZSxbXCJkZWZpbml0aW9uc1wiXSk7cmV0dXJuKDAsaS5qc3gpKGMsT2JqZWN0LmFzc2lnbih7fSxuLHtyb2xlOlwibGlzdFwifSx7Y2hpbGRyZW46KEFycmF5LmlzQXJyYXkodCk/dDpBcnJheS5mcm9tKHQpKS5tYXAoKChbZSx0XSxuKT0+KDAsaS5qc3hzKShsLE9iamVjdC5hc3NpZ24oe3JvbGU6XCJsaXN0aXRlbVwifSx7Y2hpbGRyZW46WygwLGkuanN4KShzLE9iamVjdC5hc3NpZ24oe2lkOmB0ZXJtJHtufWB9LHtjaGlsZHJlbjplfSkpLCgwLGkuanN4KSh1LE9iamVjdC5hc3NpZ24oe1wiYXJpYS1sYWJlbGxlZGJ5XCI6YHRlcm0ke259YH0se2NoaWxkcmVuOnR9KSldfSksYCR7ZX0tJHtufWApKSl9KSl9O2NvbnN0IGw9YS5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgM2ZyO1xuYCxjPWEuZGVmYXVsdC5kbGBcbiAgZ2FwOiAkeyh7dGhlbWU6ZX0pPT5gMCAke2UucHgubGFyZ2V9YH07XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHt0aGVtZTplfSk9PmAke2UucHguc21hbGx9ICR7ZS5weC5iYXNlfWB9O1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuYCxzPWEuZGVmYXVsdC5kdGBcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0SGVscH07XG4gIGZvbnQtc2l6ZTogJHsoe3RoZW1lOmV9KT0+ZS5mb250U2l6ZS5zbWFsbH07XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRXZWlnaHQubm9ybWFsfTtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHguYmFzZX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LnNtYWxsfTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbmAsdT1hLmRlZmF1bHQuZGRgXG4gIGNvbG9yOiAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUudGV4dERlZmF1bHR9O1xuICBmb250LXNpemU6ICR7KHt0aGVtZTplfSk9PmUuZm9udFNpemUuc21hbGx9O1xuICBsaW5lLWhlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbiAgcGFkZGluZy1ib3R0b206ICR7KHt0aGVtZTplfSk9PmUucHguc21hbGx9O1xuYH0sNTM3NzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNjcxMCksdCl9LDk0MzE6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuR2xvYmFsU3R5bGVzPXZvaWQgMDtjb25zdCByPW4oNzUxOCksbz1uKDM0NzEpLGk9big1NzUpO3QuR2xvYmFsU3R5bGVzPXIuY3JlYXRlR2xvYmFsU3R5bGVgXG4gIC8qKiAtPiBEZWZpbmUgR2xvYmFsIENTUyBWYXJzICovXG4gIDpyb290IHtcbiAgICAtLW9wZW5maW4tdWktZ2xvYmFsQmFja2dyb3VuZDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLmJhY2tncm91bmQxfTtcbiAgICAtLW9wZW5maW4tdWktZ2xvYmFsVGV4dDogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgICAtLW9wZW5maW4tdWktZ2xvYmFsUGxhY2Vob2xkZXI6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5pbnB1dFBsYWNlaG9sZGVyfTtcbiAgICAtLW9wZW5maW4tdWktZ2xvYmFsVHlwb2dyYXBoeTogJHtvLlR5cG9ncmFwaHkuYmFzZX07XG4gICAgLS1vcGVuZmluLXVpLWdsb2JhbFRyYW5zaXRpb246ICR7KHt0aGVtZTplfSk9PmUudHJhbnNpdGlvbi5iYXNlfTtcblxuICAgIC8qIE1hcCBvdmVyIHRoZSBwYWxldHRlIGtleXMgYW5kIGNyZWF0ZSB2YXJpYWJsZXMgb3V0IG9mIHRoZW0gKi9cbiAgICAke2kuZ2V0Um9vdENzc1ZhcnN9XG4gIH1cblxuICAvKiogLT4gQGZvbnQtZmFjZSBEZWNsYXJhdGlvbiAqL1xuICAke2kuZ2V0Rm9udEZhY2VzfVxuXG4gIC8qKiAtPiBNaWNybyBSZXNldCAqL1xuICAqIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIC8qKlxuICAgICAqIFByZXZlbnQgYnJvd3NlciBhdXRvLXdlaWdodGluZ1xuICAgICAqIEBsaW5rIGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vYWxtYW5hYy9wcm9wZXJ0aWVzL2YvZm9udC1zeW50aGVzaXMvXG4gICAgICovXG4gICAgZm9udC1zeW50aGVzaXM6IG5vbmU7XG4gIH1cblxuICAvKiogLT4gQXBwbHkgR2xvYmFsIFN0eWxlcyAqL1xuICA6cm9vdCxcbiAgYm9keSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxCYWNrZ3JvdW5kKTtcbiAgICBjb2xvcjogdmFyKC0tb3BlbmZpbi11aS1nbG9iYWxUZXh0KTtcbiAgICBmb250OiB2YXIoLS1vcGVuZmluLXVpLWdsb2JhbFR5cG9ncmFwaHkpO1xuICB9XG5cbiAgOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW9wZW5maW4tdWktZ2xvYmFsUGxhY2Vob2xkZXIpO1xuICB9XG5cbiAgLyoqIC0+IFJlZHVjZWQgTW90aW9uIChBY2Nlc3NpYmlsaXR5KSAqL1xuICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb24pIHtcbiAgICA6cm9vdCB7XG4gICAgICAtLW9wZW5maW4tdWktZ2xvYmFsVHJhbnNpdGlvbjogJHsoe3RoZW1lOmV9KT0+ZS50cmFuc2l0aW9uLm5vbmV9O1xuICAgIH1cbiAgfVxuYH0sMTA2OTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oOTQzMSksdCl9LDk1MDc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDM0NzEpLHQpLG8obig2NzE0KSx0KSxvKG4oOTI3MiksdCksbyhuKDU3NSksdCksbyhuKDE0NDEpLHQpLG8obig4NzMyKSx0KSxvKG4oNTQ1OSksdCksbyhuKDUzMTcpLHQpLG8obig0MjApLHQpfSw5OTg0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldE1vc3RSZWFkYWJsZT10LmRhcmtlbkNvbG9yPXQubGlnaHRlbkNvbG9yPXZvaWQgMDtjb25zdCBvPXIobig4MjA3KSk7dC5saWdodGVuQ29sb3I9KGUsdCk9PmkoZSxcImxpZ2h0ZW5cIix0KSx0LmRhcmtlbkNvbG9yPShlLHQpPT5pKGUsXCJkYXJrZW5cIix0KTtjb25zdCBpPShlLHQsbik9PntpZihuJiYobjwwfHxuPjEwMCkpdGhyb3cgbmV3IEVycm9yKGAke259IG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMDBgKTtyZXR1cm4oMCxvLmRlZmF1bHQpKGUpW3RdKG4pLnRvU3RyaW5nKCl9O3QuZ2V0TW9zdFJlYWRhYmxlPShlLHQpPT5vLmRlZmF1bHQubW9zdFJlYWRhYmxlKGUsdCkudG9IZXhTdHJpbmcoKX0sODAyOTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29uZmlndXJhdGlvbj12b2lkIDAsdC5Db25maWd1cmF0aW9uPXtmb250TG9hZGluZzpcImNkblwifX0sMzQ3MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvJiYhKFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpfHwobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGk9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5jZG5Gb250RmFjZUNzcz10Lkljb25TaXplPXQuSWNvblNldD10LlRyYW5zaXRpb249dC5UeXBvZ3JhcGh5PXQuTGluZUhlaWdodD10LkZvbnRXZWlnaHQ9dC5Gb250U2l6ZT10LkZvbnRTdGFjaz10LlNoYWRvdz10LlJhZGl1cz10LlVuaXRQeD10LlVuaXQ9dC5TaXplTmFtZT10LlNpemU9dC5Db2xvcj12b2lkIDA7Y29uc3QgYT1pKG4oMTUyMSkpLGw9aShuKDI3NzIpKSxjPW4oOTI3Mik7dC5Db2xvcj17d2hpdGU6XCIjRkZGRkZGXCIsbGlnaHRHcmF5MTpcIiNGQUZCRkVcIixsaWdodEdyYXkyOlwiI0YzRjVGOFwiLGxpZ2h0R3JheTM6XCIjRUNFRUYxXCIsbGlnaHRHcmF5NDpcIiNERERGRTRcIixsaWdodEdyYXk1OlwiI0M5Q0JEMlwiLG5ldXRyYWxHcmF5OlwiIzdEODA4QVwiLG5ldXRyYWxHcmF5ODA6XCJyZ2JhKDEyNSwxMjgsMTM4LDAuOClcIixzaWx2ZXJHcmF5OlwiI0MwQzFDMlwiLGRhcmtHcmF5MTpcIiM1MzU2NUZcIixkYXJrR3JheTI6XCIjMzgzQTQwXCIsZGFya0dyYXkzOlwiIzJGMzEzNlwiLGRhcmtHcmF5NDpcIiMyNDI2MkJcIixkYXJrR3JheTU6XCIjMUUxRjIzXCIsZGFya0dyYXk2OlwiIzExMTIxNFwiLG9wZW5GaW5EYXJrZXN0OlwiIzNEMzlDRFwiLG9wZW5GaW5EYXJrZXI6XCIjNDY0MkUwXCIsb3BlbkZpbjpcIiM1MDRDRkZcIixvcGVuRmluTGlnaHQ6XCIjNTI1NEZCXCIsb3BlbkZpbkxpZ2h0ZXI6XCIjNUM1RUZFXCIsb3BlbkZpbkxpZ2h0ZXN0OlwiIzY4NjRGRlwiLGZ1bmN0aW9uYWwxOlwiIzIwNzczNVwiLGZ1bmN0aW9uYWwyOlwiIzQ2QzhGMVwiLGZ1bmN0aW9uYWwzOlwiIzBBNzZEM1wiLGZ1bmN0aW9uYWw0OlwiIzZDQURFNVwiLGZ1bmN0aW9uYWw1OlwiIzBBNzZEM1wiLGZ1bmN0aW9uYWw2OlwiIzg4MkJGRVwiLGZ1bmN0aW9uYWw3OlwiI0YzMTgxOFwiLGZ1bmN0aW9uYWw4OlwiI0M5MzQwMFwiLGZ1bmN0aW9uYWw5OlwiI0ZGNUU2MFwiLGZ1bmN0aW9uYWwxMDpcIiNGNDhGMDBcIixwdXJwbGU6XCIjOEM2MUZGXCIsbGlnaHRibHVlOlwiIzM2QzNGRVwiLGFxdWE6XCIjMDBDQzg4XCIseWVsbG93OlwiI0ZGRUIwMFwiLHNhbG1vbjpcIiNGRjhDNENcIixwaW5rOlwiI0ZGNUU2MFwiLGxpZ2h0cGluazpcIiNGRjhGQjhcIix3aGl0ZTAwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjApXCIsd2hpdGUxMDpcInJnYmEoMjU1LDI1NSwyNTUsMC4xKVwiLHdoaXRlMjA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuMilcIix3aGl0ZTMwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjMpXCIsd2hpdGU0MDpcInJnYmEoMjU1LDI1NSwyNTUsMC40KVwiLHdoaXRlNTA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNSlcIix3aGl0ZTYwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjYpXCIsd2hpdGU3MDpcInJnYmEoMjU1LDI1NSwyNTUsMC43KVwiLHdoaXRlODA6XCJyZ2JhKDI1NSwyNTUsMjU1LDAuOClcIix3aGl0ZTkwOlwicmdiYSgyNTUsMjU1LDI1NSwwLjkpXCIsYmxhY2swMDpcInJnYmEoMCwwLDAsMC4wKVwiLGJsYWNrMTA6XCJyZ2JhKDAsMCwwLDAuMSlcIixibGFjazIwOlwicmdiYSgwLDAsMCwwLjIpXCIsYmxhY2szMDpcInJnYmEoMCwwLDAsMC4zKVwiLGJsYWNrNDA6XCJyZ2JhKDAsMCwwLDAuNClcIixibGFjazUwOlwicmdiYSgwLDAsMCwwLjUpXCIsYmxhY2s2MDpcInJnYmEoMCwwLDAsMC42KVwiLGJsYWNrNzA6XCJyZ2JhKDAsMCwwLDAuNylcIixibGFjazgwOlwicmdiYSgwLDAsMCwwLjgpXCIsYmxhY2s5MDpcInJnYmEoMCwwLDAsMC45KVwiLHRyYW5zcGFyZW50OlwidHJhbnNwYXJlbnRcIn0sdC5TaXplPXt4c21hbGw6XCJ4c21hbGxcIixzbWFsbDpcInNtYWxsXCIsYmFzZTpcImJhc2VcIixsYXJnZTpcImxhcmdlXCIseGxhcmdlOlwieGxhcmdlXCIseHhsYXJnZTpcInh4bGFyZ2VcIix4eHhsYXJnZTpcInh4eGxhcmdlXCIseHh4eGxhcmdlOlwieHh4eGxhcmdlXCJ9LHQuU2l6ZU5hbWU9e1t0LlNpemUueHNtYWxsXTpcIkV4dHJhIFNtYWxsXCIsW3QuU2l6ZS5zbWFsbF06XCJTbWFsbFwiLFt0LlNpemUuYmFzZV06XCJCYXNlXCIsW3QuU2l6ZS5sYXJnZV06XCJMYXJnZVwiLFt0LlNpemUueGxhcmdlXTpcIkV4dHJhIExhcmdlXCIsW3QuU2l6ZS54eGxhcmdlXTpcIjJYIExhcmdlXCIsW3QuU2l6ZS54eHhsYXJnZV06XCIzWCBMYXJnZVwiLFt0LlNpemUueHh4eGxhcmdlXTpcIjRYIExhcmdlXCJ9LHQuVW5pdD17W3QuU2l6ZS54c21hbGxdOjQsW3QuU2l6ZS5zbWFsbF06OCxbdC5TaXplLmJhc2VdOjEyLFt0LlNpemUubGFyZ2VdOjE2LFt0LlNpemUueGxhcmdlXToyMCxbdC5TaXplLnh4bGFyZ2VdOjI0LFt0LlNpemUueHh4bGFyZ2VdOjMyLFt0LlNpemUueHh4eGxhcmdlXTo0OH0sdC5Vbml0UHg9e1t0LlNpemUueHNtYWxsXTpcIjRweFwiLFt0LlNpemUuc21hbGxdOlwiOHB4XCIsW3QuU2l6ZS5iYXNlXTpcIjEycHhcIixbdC5TaXplLmxhcmdlXTpcIjE2cHhcIixbdC5TaXplLnhsYXJnZV06XCIyMHB4XCIsW3QuU2l6ZS54eGxhcmdlXTpcIjI0cHhcIixbdC5TaXplLnh4eGxhcmdlXTpcIjMycHhcIixbdC5TaXplLnh4eHhsYXJnZV06XCI0OHB4XCJ9LHQuUmFkaXVzPXtbdC5TaXplLnhzbWFsbF06XCIycHhcIixbdC5TaXplLnNtYWxsXTpcIjRweFwiLFt0LlNpemUuYmFzZV06XCI4cHhcIixbdC5TaXplLmxhcmdlXTpcIjI0cHhcIixwaWxsOlwiMTAwdmhcIixyb3VuZDpcIjUwJVwiLG5vbmU6XCIwXCJ9LHQuU2hhZG93PXtbdC5TaXplLmJhc2VdOlwiMCA0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yNSlcIn0sdC5Gb250U3RhY2s9W1wiSW50ZXJcIixcIi1hcHBsZS1zeXN0ZW1cIixcIkJsaW5rTWFjU3lzdGVtRm9udFwiLFwiU2Vnb2UgVUlcIixcIlJvYm90b1wiLFwiT3h5Z2VuLVNhbnNcIixcIlVidW50dVwiLFwiQ2FudGFyZWxsXCIsXCJIZWx2ZXRpY2EgTmV1ZVwiLFwic2Fucy1zZXJpZlwiXS5qb2luKFwiLCBcIiksdC5Gb250U2l6ZT17W3QuU2l6ZS54c21hbGxdOlwiOHB4XCIsW3QuU2l6ZS5zbWFsbF06XCIxMHB4XCIsW3QuU2l6ZS5iYXNlXTpcIjEycHhcIixbdC5TaXplLmxhcmdlXTpcIjE0cHhcIixbdC5TaXplLnhsYXJnZV06XCIxNnB4XCIsW3QuU2l6ZS54eGxhcmdlXTpcIjE4cHhcIixbdC5TaXplLnh4eGxhcmdlXTpcIjIwcHhcIixbdC5TaXplLnh4eHhsYXJnZV06XCI0MHB4XCJ9LHQuRm9udFdlaWdodD17bm9ybWFsOjQwMCxib2xkOjYwMH0sdC5MaW5lSGVpZ2h0PXt1aToxLGhlYWRpbmc6MS4yLHRleHQ6MS41fSx0LlR5cG9ncmFwaHk9e2Jhc2U6YCR7dC5Gb250U2l6ZS5iYXNlfS8ke3QuTGluZUhlaWdodC50ZXh0fSAke3QuRm9udFN0YWNrfWB9LHQuVHJhbnNpdGlvbj17YmFzZTpcIjIwMG1zIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpXCIsbm9uZTpcIjBtc1wifSx0Lkljb25TZXQ9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLGwpLHQuSWNvblNpemU9e1t0LlNpemUueHNtYWxsXTp0LlVuaXRQeC5zbWFsbCxbdC5TaXplLnNtYWxsXTp0LlVuaXRQeC5iYXNlLFt0LlNpemUuYmFzZV06XCIxNXB4XCIsW3QuU2l6ZS5sYXJnZV06dC5Vbml0UHgueGxhcmdlLFt0LlNpemUueGxhcmdlXTp0LlVuaXRQeC54eGxhcmdlLFt0LlNpemUueHhsYXJnZV06dC5Vbml0UHgueHh4bGFyZ2UsW3QuU2l6ZS54eHhsYXJnZV06dC5Vbml0UHgueHh4eGxhcmdlfSx0LmNkbkZvbnRGYWNlQ3NzPSgwLGMuY3JlYXRlRm9udEZhY2VDc3MpKHtyZWd1bGFyOlwiLy9jZG4ub3BlbmZpbi5jby9mb250cy9pbnRlci9JbnRlci1SZWd1bGFyLndvZmYyP3YzLjE1XCIsaXRhbGljOlwiLy9jZG4ub3BlbmZpbi5jby9mb250cy9pbnRlci9JbnRlci1JdGFsaWMud29mZjI/djMuMTVcIixzZW1pQm9sZDpcIi8vY2RuLm9wZW5maW4uY28vZm9udHMvaW50ZXIvSW50ZXItU2VtaUJvbGQud29mZjI/djMuMTVcIixzZW1pQm9sZEl0YWxpYzpcIi8vY2RuLm9wZW5maW4uY28vZm9udHMvaW50ZXIvSW50ZXItU2VtaUJvbGRJdGFsaWMud29mZjI/djMuMTVcIn0pfSw5MjcyOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNyZWF0ZUZvbnRGYWNlQ3NzPXZvaWQgMDtjb25zdCByPW4oNzUxOCksbz1uKDM0NzEpO3QuY3JlYXRlRm9udEZhY2VDc3M9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY3NzYFxuICAgIEBmb250LWZhY2Uge1xuICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICBzcmM6IHVybCgke2UucmVndWxhcn0pIGZvcm1hdCgnd29mZjInKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke28uRm9udFdlaWdodC5ub3JtYWx9O1xuICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgIH1cbiAgICBAZm9udC1mYWNlIHtcbiAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInO1xuICAgICAgc3JjOiB1cmwoJHtlLml0YWxpY30pIGZvcm1hdCgnd29mZjInKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke28uRm9udFdlaWdodC5ub3JtYWx9O1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgIH1cblxuICAgIEBmb250LWZhY2Uge1xuICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICBzcmM6IHVybCgke2Uuc2VtaUJvbGR9KSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgICBmb250LXdlaWdodDogJHtvLkZvbnRXZWlnaHQuYm9sZH07XG4gICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgfVxuXG4gICAgQGZvbnQtZmFjZSB7XG4gICAgICBmb250LWZhbWlseTogJ0ludGVyJztcbiAgICAgIHNyYzogdXJsKCR7ZS5zZW1pQm9sZEl0YWxpY30pIGZvcm1hdCgnd29mZjInKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke28uRm9udFdlaWdodC5ib2xkfTtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICB9XG4gIGB9fSw2NzE0OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNyZWF0ZVRoZW1lPXZvaWQgMDtjb25zdCByPW4oODAyOSksbz1uKDM0NzEpLGk9big5OTg0KSxhPW4oNTQ1OSksbD17X2NvbmZpZzpyLkNvbmZpZ3VyYXRpb24sX2NvbG9yOm8uQ29sb3IsZm9udFNpemU6by5Gb250U2l6ZSxmb250V2VpZ2h0Om8uRm9udFdlaWdodCxsaW5lSGVpZ2h0Om8uTGluZUhlaWdodCxpY29uU2l6ZTpvLkljb25TaXplLHJhZGl1czpvLlJhZGl1cyxzaGFkb3c6by5TaGFkb3csdHJhbnNpdGlvbjpvLlRyYW5zaXRpb24sdW5pdDpvLlVuaXQscHg6by5Vbml0UHh9LGM9KGUsdCk9Pih7W2Ake2V9QWN0aXZlYF06KDAsaS5kYXJrZW5Db2xvcikodCwyKSxbYCR7ZX1Ib3ZlcmBdOigwLGkubGlnaHRlbkNvbG9yKSh0LDUpLFtgJHtlfUZvY3VzZWRgXTooMCxpLmdldE1vc3RSZWFkYWJsZSkodCxbby5Db2xvci53aGl0ZSxvLkNvbG9yLmRhcmtHcmF5NV0pLFtgJHtlfVRleHRgXTooMCxpLmdldE1vc3RSZWFkYWJsZSkodCxbby5Db2xvci53aGl0ZSxvLkNvbG9yLmRhcmtHcmF5NV0pfSk7dC5jcmVhdGVUaGVtZT0oZSx0PVwiZGFya1wiKT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGwpLHtwYWxldHRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLGMoYS5QYWxldHRlLmJyYW5kUHJpbWFyeSxlLmJyYW5kUHJpbWFyeSkpLGMoYS5QYWxldHRlLmJyYW5kU2Vjb25kYXJ5LGUuYnJhbmRTZWNvbmRhcnkpKX0pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3NlbGVjdGVkU2NoZW1lOnR9KX19LDU3NTooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZXRTdGF0dXNDb2xvcj10LmdldEZvbnRGYWNlcz10LmdldFJvb3RDc3NWYXJzPXQuZ2V0VmFyaWFudENTUz12b2lkIDA7Y29uc3Qgcj1uKDM0NzEpLG89big1NDU5KTt0LmdldFZhcmlhbnRDU1M9KGUsdCk9Pm49PmVbdF1bblt0XV0sdC5nZXRSb290Q3NzVmFycz0oe3RoZW1lOmV9KT0+T2JqZWN0LmtleXMoby5QYWxldHRlKS5tYXAoKHQ9PmAtLW9wZW5maW4tdWktJHt0fTogJHtlLnBhbGV0dGVbdF19O2ApKS5qb2luKFwiXFxuXCIpLHQuZ2V0Rm9udEZhY2VzPSh7dGhlbWU6ZX0pPT5cImltcG9ydFwiPT09ZS5fY29uZmlnLmZvbnRMb2FkaW5nP2UuX2NvbmZpZy5mb250Q3NzOnIuY2RuRm9udEZhY2VDc3MsdC5nZXRTdGF0dXNDb2xvcj0oZSx0LG4pPT57c3dpdGNoKHQpe2Nhc2VcImFjdGl2ZVwiOnJldHVybiBlLnBhbGV0dGUuc3RhdHVzQWN0aXZlO2Nhc2VcImNyaXRpY2FsXCI6cmV0dXJuIGUucGFsZXR0ZS5zdGF0dXNDcml0aWNhbDtjYXNlXCJ3YXJuaW5nXCI6cmV0dXJuIGUucGFsZXR0ZS5zdGF0dXNXYXJuaW5nO2Nhc2VcInN1Y2Nlc3NcIjpyZXR1cm4gZS5wYWxldHRlLnN0YXR1c1N1Y2Nlc3M7ZGVmYXVsdDpyZXR1cm4gbj9lLnBhbGV0dGVbbl06XCJpbmhlcml0XCJ9fX0sMTQ0MTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSw4NzMyOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk1peGlucz12b2lkIDA7Y29uc3Qgcj1uKDM0NzEpLG89big3NTE4KSxpPW8uY3NzYFxuICB1c2VyLXNlbGVjdDogbm9uZTtcbmAsYT1vLmNzc2BcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gLGw9by5jc3NgXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogdmFyKC0tc2Nyb2xsYmFyU2l6ZSwgJHtyLlVuaXRQeC54c21hbGx9KTtcbiAgICBoZWlnaHQ6IHZhcigtLXNjcm9sbGJhclNpemUsICR7ci5Vbml0UHgueHNtYWxsfSk7XG4gIH1cblxuICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogJHtyLkNvbG9yLm5ldXRyYWxHcmF5ODB9O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNjcm9sbGJhclNpemUsICR7ci5Vbml0UHgueHNtYWxsfSk7XG4gICAgb3BhY2l0eTogMC44O1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICR7ci5Db2xvci53aGl0ZTgwfTtcbiAgICB3aWR0aDogdmFyKC0tc2Nyb2xsYmFyU2l6ZSwgJHtyLlVuaXRQeC54c21hbGx9KTtcbiAgICBoZWlnaHQ6IHZhcigtLXNjcm9sbGJhclNpemUsICR7ci5Vbml0UHgueHNtYWxsfSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2Nyb2xsYmFyU2l6ZSwgJHtyLlVuaXRQeC54c21hbGx9KTtcbiAgICBvcGFjaXR5OiAwLjg7XG4gIH1cbmAsYz1vLmNzc2BcbiAgLS1zY3JvbGxiYXJTaXplOiAycHg7XG4gICR7bH07XG5gLHM9by5jc3NgXG4gIC13ZWJraXQtYXBwLXJlZ2lvbjogZHJhZztcbmAsdT1vLmNzc2BcbiAgLXdlYmtpdC1hcHAtcmVnaW9uOiBuby1kcmFnO1xuYDt0Lk1peGlucz17bm9TZWxlY3Q6aSx0ZXh0T3ZlcmZsb3c6YSxzY3JvbGxiYXI6e1tyLlNpemUuYmFzZV06bCxbci5TaXplLnNtYWxsXTpjfSxhcHBSZWdpb246e2RyYWc6cyxub0RyYWc6dX19fSw1NDU5OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5QYWxldHRlPXZvaWQgMCx0LlBhbGV0dGU9e2JhY2tncm91bmQxOlwiYmFja2dyb3VuZDFcIixiYWNrZ3JvdW5kMjpcImJhY2tncm91bmQyXCIsYmFja2dyb3VuZDM6XCJiYWNrZ3JvdW5kM1wiLGJhY2tncm91bmQ0OlwiYmFja2dyb3VuZDRcIixiYWNrZ3JvdW5kNTpcImJhY2tncm91bmQ1XCIsYmFja2dyb3VuZDY6XCJiYWNrZ3JvdW5kNlwiLGJyYW5kUHJpbWFyeTpcImJyYW5kUHJpbWFyeVwiLGJyYW5kU2Vjb25kYXJ5OlwiYnJhbmRTZWNvbmRhcnlcIixicmFuZFByaW1hcnlBY3RpdmU6XCJicmFuZFByaW1hcnlBY3RpdmVcIixicmFuZFByaW1hcnlIb3ZlcjpcImJyYW5kUHJpbWFyeUhvdmVyXCIsYnJhbmRQcmltYXJ5Rm9jdXNlZDpcImJyYW5kUHJpbWFyeUZvY3VzZWRcIixicmFuZFByaW1hcnlUZXh0OlwiYnJhbmRQcmltYXJ5VGV4dFwiLGJyYW5kU2Vjb25kYXJ5QWN0aXZlOlwiYnJhbmRTZWNvbmRhcnlBY3RpdmVcIixicmFuZFNlY29uZGFyeUhvdmVyOlwiYnJhbmRTZWNvbmRhcnlIb3ZlclwiLGJyYW5kU2Vjb25kYXJ5Rm9jdXNlZDpcImJyYW5kU2Vjb25kYXJ5Rm9jdXNlZFwiLGJyYW5kU2Vjb25kYXJ5VGV4dDpcImJyYW5kU2Vjb25kYXJ5VGV4dFwiLGlucHV0QmFja2dyb3VuZDpcImlucHV0QmFja2dyb3VuZFwiLGlucHV0Q29sb3I6XCJpbnB1dENvbG9yXCIsaW5wdXRQbGFjZWhvbGRlcjpcImlucHV0UGxhY2Vob2xkZXJcIixpbnB1dERpc2FibGVkOlwiaW5wdXREaXNhYmxlZFwiLGlucHV0Rm9jdXNlZDpcImlucHV0Rm9jdXNlZFwiLGlucHV0Qm9yZGVyOlwiaW5wdXRCb3JkZXJcIixzdGF0dXNTdWNjZXNzOlwic3RhdHVzU3VjY2Vzc1wiLHN0YXR1c1dhcm5pbmc6XCJzdGF0dXNXYXJuaW5nXCIsc3RhdHVzQ3JpdGljYWw6XCJzdGF0dXNDcml0aWNhbFwiLHN0YXR1c0FjdGl2ZTpcInN0YXR1c0FjdGl2ZVwiLHRleHREZWZhdWx0OlwidGV4dERlZmF1bHRcIix0ZXh0SGVscDpcInRleHRIZWxwXCIsdGV4dEluYWN0aXZlOlwidGV4dEluYWN0aXZlXCIsYm9yZGVyTmV1dHJhbDpcImJvcmRlck5ldXRyYWxcIixjb250ZW50QmFja2dyb3VuZDE6XCJjb250ZW50QmFja2dyb3VuZDFcIixjb250ZW50QmFja2dyb3VuZDI6XCJjb250ZW50QmFja2dyb3VuZDJcIixjb250ZW50QmFja2dyb3VuZDM6XCJjb250ZW50QmFja2dyb3VuZDNcIixjb250ZW50QmFja2dyb3VuZDQ6XCJjb250ZW50QmFja2dyb3VuZDRcIixjb250ZW50QmFja2dyb3VuZDU6XCJjb250ZW50QmFja2dyb3VuZDVcIixsaW5rRGVmYXVsdDpcImxpbmtEZWZhdWx0XCIsbGlua0hvdmVyOlwibGlua0hvdmVyXCJ9fSw1MzE3OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LDQyNjY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDk0ODMpLHQpfSw5NDgzOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk9wZW5GaW5EYXJrVGhlbWU9dC5PcGVuRmluTGlnaHRUaGVtZT12b2lkIDA7Y29uc3Qgcj1uKDU0NTkpLG89bigzNDcxKSxpPW4oNjcxNCksYT17W3IuUGFsZXR0ZS5icmFuZFByaW1hcnldOm8uQ29sb3Iub3BlbkZpbixbci5QYWxldHRlLnN0YXR1c1N1Y2Nlc3NdOm8uQ29sb3IuZnVuY3Rpb25hbDEsW3IuUGFsZXR0ZS5zdGF0dXNXYXJuaW5nXTpvLkNvbG9yLmZ1bmN0aW9uYWwxMCxbci5QYWxldHRlLnN0YXR1c0NyaXRpY2FsXTpvLkNvbG9yLmZ1bmN0aW9uYWw3LFtyLlBhbGV0dGUuc3RhdHVzQWN0aXZlXTpvLkNvbG9yLmZ1bmN0aW9uYWwzLFtyLlBhbGV0dGUuYm9yZGVyTmV1dHJhbF06by5Db2xvci5zaWx2ZXJHcmF5LFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQxXTpvLkNvbG9yLm9wZW5GaW4sW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDJdOlwiIzAwMDAwMFwiLFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQzXTpcIiMwMDAwMDBcIixbci5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kNF06XCIjMDAwMDAwXCIsW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDVdOlwiIzAwMDAwMFwiLFtyLlBhbGV0dGUubGlua0RlZmF1bHRdOm8uQ29sb3IuZnVuY3Rpb25hbDQsW3IuUGFsZXR0ZS5saW5rSG92ZXJdOm8uQ29sb3IuZnVuY3Rpb25hbDV9O3QuT3BlbkZpbkxpZ2h0VGhlbWU9KDAsaS5jcmVhdGVUaGVtZSkoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLHtbci5QYWxldHRlLmJhY2tncm91bmQxXTpvLkNvbG9yLndoaXRlLFtyLlBhbGV0dGUuYmFja2dyb3VuZDJdOm8uQ29sb3IubGlnaHRHcmF5MSxbci5QYWxldHRlLmJhY2tncm91bmQzXTpvLkNvbG9yLmxpZ2h0R3JheTIsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNF06by5Db2xvci5saWdodEdyYXkzLFtyLlBhbGV0dGUuYmFja2dyb3VuZDVdOm8uQ29sb3IubGlnaHRHcmF5Myxbci5QYWxldHRlLmJhY2tncm91bmQ2XTpvLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS5icmFuZFNlY29uZGFyeV06by5Db2xvci5saWdodEdyYXk0LFtyLlBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kXTpvLkNvbG9yLmxpZ2h0R3JheTMsW3IuUGFsZXR0ZS5pbnB1dENvbG9yXTpvLkNvbG9yLmRhcmtHcmF5NSxbci5QYWxldHRlLmlucHV0UGxhY2Vob2xkZXJdOm8uQ29sb3IuZGFya0dyYXkyLFtyLlBhbGV0dGUuaW5wdXREaXNhYmxlZF06by5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLmlucHV0Rm9jdXNlZF06by5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUuaW5wdXRCb3JkZXJdOm8uQ29sb3IubmV1dHJhbEdyYXksW3IuUGFsZXR0ZS50ZXh0RGVmYXVsdF06by5Db2xvci5kYXJrR3JheTUsW3IuUGFsZXR0ZS50ZXh0SGVscF06by5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLnRleHRJbmFjdGl2ZV06by5Db2xvci5uZXV0cmFsR3JheX0pLFwibGlnaHRcIiksdC5PcGVuRmluRGFya1RoZW1lPSgwLGkuY3JlYXRlVGhlbWUpKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx7W3IuUGFsZXR0ZS5iYWNrZ3JvdW5kMV06by5Db2xvci5kYXJrR3JheTYsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kMl06by5Db2xvci5kYXJrR3JheTUsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kM106by5Db2xvci5kYXJrR3JheTQsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNF06by5Db2xvci5kYXJrR3JheTMsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNV06by5Db2xvci5kYXJrR3JheTIsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNl06by5Db2xvci5kYXJrR3JheTEsW3IuUGFsZXR0ZS5icmFuZFNlY29uZGFyeV06by5Db2xvci5kYXJrR3JheTIsW3IuUGFsZXR0ZS5pbnB1dEJhY2tncm91bmRdOm8uQ29sb3IuZGFya0dyYXkxLFtyLlBhbGV0dGUuaW5wdXRDb2xvcl06by5Db2xvci53aGl0ZSxbci5QYWxldHRlLmlucHV0UGxhY2Vob2xkZXJdOm8uQ29sb3IubGlnaHRHcmF5NSxbci5QYWxldHRlLmlucHV0RGlzYWJsZWRdOm8uQ29sb3IubmV1dHJhbEdyYXksW3IuUGFsZXR0ZS5pbnB1dEZvY3VzZWRdOm8uQ29sb3IubGlnaHRHcmF5NSxbci5QYWxldHRlLmlucHV0Qm9yZGVyXTpvLkNvbG9yLm5ldXRyYWxHcmF5LFtyLlBhbGV0dGUudGV4dERlZmF1bHRdOm8uQ29sb3Iud2hpdGUsW3IuUGFsZXR0ZS50ZXh0SGVscF06by5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUudGV4dEluYWN0aXZlXTpvLkNvbG9yLm5ldXRyYWxHcmF5fSksXCJkYXJrXCIpfSw0MjA6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVGhlbWVQcm92aWRlcj12b2lkIDA7Y29uc3Qgcj1uKDU4OTMpLG89big3NTE4KSxpPW4oNzA4OCksYT1uKDEwNjkpO3QuVGhlbWVQcm92aWRlcj0oe2NoaWxkcmVuOmUsdGhlbWVzOnQsc2NoZW1lOm4sY29uZmlnOmwsaW5jbHVkZUdsb2JhbFN0eWxlczpjPSEwfSk9Pntjb25zdCBzPSgwLGkudXNlVGhlbWUpKHt0aGVtZXM6dCxzY2hlbWU6bixjb25maWc6bH0pO3JldHVybigwLHIuanN4KShvLlRoZW1lUHJvdmlkZXIsT2JqZWN0LmFzc2lnbih7dGhlbWU6c30se2NoaWxkcmVuOigwLHIuanN4cykoci5GcmFnbWVudCx7Y2hpbGRyZW46W2MmJigwLHIuanN4KShhLkdsb2JhbFN0eWxlcyx7fSksZV19KX0pKX19LDk3NTg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29udGFjdFN0YXR1c0ljb249dm9pZCAwO2NvbnN0IG89big1ODkzKSxpPXIobig3NTE4KSksYT1uKDEzMzMpLGw9e2F2YWlsYWJsZTooMCxvLmpzeCkoYS5DaGVja1NWRyx7fSksYXdheTooMCxvLmpzeCkoYS5CdXN5U1ZHLHt9KSxcImRvLW5vdC1kaXN0dXJiXCI6KDAsby5qc3gpKGEuRG9Ob3REaXN0dXJiU1ZHLHt9KSxvZmZsaW5lOigwLG8uanN4KShhLk9mZmxpbmVTVkcse30pLGJ1c3k6bnVsbH07dC5Db250YWN0U3RhdHVzSWNvbj0oe29ubGluZVN0YXR1czplfSk9PmU/KDAsby5qc3gpKGMsT2JqZWN0LmFzc2lnbih7b25saW5lU3RhdHVzOmV9LHtjaGlsZHJlbjpsW2VdfHxudWxsfSkpOm51bGw7Y29uc3QgYz1pLmRlZmF1bHQuZGl2YFxuICBib3JkZXI6IDEuNnB4IHNvbGlkICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS5iYWNrZ3JvdW5kMX07XG5cbiAgYmFja2dyb3VuZDogJHsoe29ubGluZVN0YXR1czplLHRoZW1lOnR9KT0+XCJidXN5XCI9PT1lP1wiI0MyMTMxM1wiOnQucGFsZXR0ZS5iYWNrZ3JvdW5kMX07XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuICBoZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9O1xuICB3aWR0aDogJHsoe3RoZW1lOmV9KT0+ZS5weC5sYXJnZX07XG5cbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA3OC45NSU7XG4gIHJpZ2h0OiAtNy4wMiU7XG4gIHRvcDogNzcuMTIlO1xuICBib3R0b206IC00LjI0JTtcbmB9LDEzMzM6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT2ZmbGluZVNWRz10LkRvTm90RGlzdHVyYlNWRz10LkJ1c3lTVkc9dC5DaGVja1NWRz12b2lkIDA7Y29uc3Qgcj1uKDU4OTMpO3QuQ2hlY2tTVkc9KCk9PigwLHIuanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0se2NoaWxkcmVuOigwLHIuanN4KShcInBhdGhcIix7ZDpcIk04IDBDOC43MzQzOCAwIDkuNDQwMSAwLjA5NjM1NDIgMTAuMTE3MiAwLjI4OTA2M0MxMC43OTQzIDAuNDgxNzcxIDExLjQyOTcgMC43NTI2MDQgMTIuMDIzNCAxLjEwMTU2QzEyLjYxNzIgMS40NTA1MiAxMy4xNTYzIDEuODY5NzkgMTMuNjQwNiAyLjM1OTM4QzE0LjEzMDIgMi44NDM3NSAxNC41NDk1IDMuMzgyODEgMTQuODk4NCAzLjk3NjU2QzE1LjI0NzQgNC41NzAzMSAxNS41MTgyIDUuMjA1NzMgMTUuNzEwOSA1Ljg4MjgxQzE1LjkwMzYgNi41NTk5IDE2IDcuMjY1NjMgMTYgOEMxNiA4LjcyOTE3IDE1LjkwMzYgOS40MzQ5IDE1LjcxMDkgMTAuMTE3MkMxNS41MTgyIDEwLjc5NDMgMTUuMjQ3NCAxMS40Mjk3IDE0Ljg5ODQgMTIuMDIzNEMxNC41NDk1IDEyLjYxNzIgMTQuMTMwMiAxMy4xNTg5IDEzLjY0MDYgMTMuNjQ4NEMxMy4xNTYzIDE0LjEzMjggMTIuNjE3MiAxNC41NDk1IDEyLjAyMzQgMTQuODk4NEMxMS40Mjk3IDE1LjI0NzQgMTAuNzkxNyAxNS41MTgyIDEwLjEwOTQgMTUuNzEwOUM5LjQzMjI5IDE1LjkwMzYgOC43MjkxNyAxNiA4IDE2QzcuMjcwODMgMTYgNi41NjUxIDE1LjkwMzYgNS44ODI4MSAxNS43MTA5QzUuMjA1NzMgMTUuNTE4MiA0LjU3MDMxIDE1LjI0NzQgMy45NzY1NiAxNC44OTg0QzMuMzgyODEgMTQuNTQ5NSAyLjg0MTE1IDE0LjEzMjggMi4zNTE1NiAxMy42NDg0QzEuODY3MTkgMTMuMTU4OSAxLjQ1MDUyIDEyLjYxNzIgMS4xMDE1NiAxMi4wMjM0QzAuNzUyNjA0IDExLjQyOTcgMC40ODE3NzEgMTAuNzk0MyAwLjI4OTA2MyAxMC4xMTcyQzAuMDk2MzU0MiA5LjQzNDkgMCA4LjcyOTE3IDAgOEMwIDcuMjcwODMgMC4wOTYzNTQyIDYuNTY3NzEgMC4yODkwNjMgNS44OTA2M0MwLjQ4MTc3MSA1LjIwODMzIDAuNzUyNjA0IDQuNTcwMzEgMS4xMDE1NiAzLjk3NjU2QzEuNDUwNTIgMy4zODI4MSAxLjg2NzE5IDIuODQzNzUgMi4zNTE1NiAyLjM1OTM4QzIuODQxMTUgMS44Njk3OSAzLjM4MjgxIDEuNDUwNTIgMy45NzY1NiAxLjEwMTU2QzQuNTcwMzEgMC43NTI2MDQgNS4yMDU3MyAwLjQ4MTc3MSA1Ljg4MjgxIDAuMjg5MDYzQzYuNTY1MSAwLjA5NjM1NDIgNy4yNzA4MyAwIDggMFpNMTAuNjMyOCA1LjY4NzVDMTAuNDI0NSA1LjY4NzUgMTAuMjQ3NCA1Ljc2MDQyIDEwLjEwMTYgNS45MDYyNUw3LjI3MzQ0IDguNzVMNi4yNjU2MyA3Ljc1QzYuMTE5NzkgNy42MDQxNyA1Ljk0NTMxIDcuNTMxMjUgNS43NDIxOSA3LjUzMTI1QzUuNjQzMjMgNy41MzEyNSA1LjU0OTQ4IDcuNTUyMDggNS40NjA5NCA3LjU5Mzc1QzUuMzcyNCA3LjYzNTQyIDUuMjkxNjcgNy42OTI3MSA1LjIxODc1IDcuNzY1NjNDNS4xNTEwNCA3LjgzMzMzIDUuMDk2MzUgNy45MTE0NiA1LjA1NDY5IDhDNS4wMTMwMiA4LjA4ODU0IDQuOTkyMTkgOC4xODIyOSA0Ljk5MjE5IDguMjgxMjVDNC45OTIxOSA4LjQ4OTU4IDUuMDY1MSA4LjY2NjY3IDUuMjEwOTQgOC44MTI1TDYuNzQyMTkgMTAuMzQzOEM2Ljg4ODAyIDEwLjQ4OTYgNy4wNjUxIDEwLjU2MjUgNy4yNzM0NCAxMC41NjI1QzcuNDgxNzcgMTAuNTYyNSA3LjY1ODg1IDEwLjQ4OTYgNy44MDQ2OSAxMC4zNDM4TDExLjE2NDEgNi45Njg3NUMxMS4zMDk5IDYuODIyOTIgMTEuMzgyOCA2LjY0NTgzIDExLjM4MjggNi40Mzc1QzExLjM4MjggNi4zMzg1NCAxMS4zNjIgNi4yNDQ3OSAxMS4zMjAzIDYuMTU2MjVDMTEuMjc4NiA2LjA2NzcxIDExLjIyMTQgNS45ODk1OCAxMS4xNDg0IDUuOTIxODhDMTEuMDgwNyA1Ljg0ODk2IDExLjAwMjYgNS43OTE2NyAxMC45MTQxIDUuNzVDMTAuODI1NSA1LjcwODMzIDEwLjczMTggNS42ODc1IDEwLjYzMjggNS42ODc1WlwiLGZpbGw6XCIjMjA3NzM1XCJ9KX0pKSx0LkJ1c3lTVkc9KCk9PigwLHIuanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxN1wiLHZpZXdCb3g6XCIwIDAgMTYgMTdcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0se2NoaWxkcmVuOigwLHIuanN4KShcInBhdGhcIix7ZDpcIk04IDAuNzkwMjM3QzguNzM0MzggMC43OTAyMzcgOS40NDAxIDAuODg2NTkyIDEwLjExNzIgMS4wNzkzQzEwLjc5NDMgMS4yNzIwMSAxMS40Mjk3IDEuNTQyODQgMTIuMDIzNCAxLjg5MThDMTIuNjE3MiAyLjI0MDc2IDEzLjE1NjMgMi42NjAwMyAxMy42NDA2IDMuMTQ5NjFDMTQuMTMwMiAzLjYzMzk5IDE0LjU0OTUgNC4xNzMwNSAxNC44OTg0IDQuNzY2OEMxNS4yNDc0IDUuMzYwNTUgMTUuNTE4MiA1Ljk5NTk3IDE1LjcxMDkgNi42NzMwNUMxNS45MDM2IDcuMzUwMTMgMTYgOC4wNTU4NiAxNiA4Ljc5MDI0QzE2IDkuNTE5NCAxNS45MDM2IDEwLjIyNTEgMTUuNzEwOSAxMC45MDc0QzE1LjUxODIgMTEuNTg0NSAxNS4yNDc0IDEyLjIxOTkgMTQuODk4NCAxMi44MTM3QzE0LjU0OTUgMTMuNDA3NCAxNC4xMzAyIDEzLjk0OTEgMTMuNjQwNiAxNC40Mzg3QzEzLjE1NjMgMTQuOTIzMSAxMi42MTcyIDE1LjMzOTcgMTIuMDIzNCAxNS42ODg3QzExLjQyOTcgMTYuMDM3NiAxMC43OTE3IDE2LjMwODUgMTAuMTA5NCAxNi41MDEyQzkuNDMyMjkgMTYuNjkzOSA4LjcyOTE3IDE2Ljc5MDIgOCAxNi43OTAyQzcuMjcwODMgMTYuNzkwMiA2LjU2NTEgMTYuNjkzOSA1Ljg4MjgxIDE2LjUwMTJDNS4yMDU3MyAxNi4zMDg1IDQuNTcwMzEgMTYuMDM3NiAzLjk3NjU2IDE1LjY4ODdDMy4zODI4MSAxNS4zMzk3IDIuODQxMTUgMTQuOTIzMSAyLjM1MTU2IDE0LjQzODdDMS44NjcxOSAxMy45NDkxIDEuNDUwNTIgMTMuNDA3NCAxLjEwMTU2IDEyLjgxMzdDMC43NTI2MDQgMTIuMjE5OSAwLjQ4MTc3MSAxMS41ODQ1IDAuMjg5MDYzIDEwLjkwNzRDMC4wOTYzNTQyIDEwLjIyNTEgMCA5LjUxOTQgMCA4Ljc5MDI0QzAgOC4wNjEwNyAwLjA5NjM1NDIgNy4zNTc5NSAwLjI4OTA2MyA2LjY4MDg2QzAuNDgxNzcxIDUuOTk4NTcgMC43NTI2MDQgNS4zNjA1NSAxLjEwMTU2IDQuNzY2OEMxLjQ1MDUyIDQuMTczMDUgMS44NjcxOSAzLjYzMzk5IDIuMzUxNTYgMy4xNDk2MUMyLjg0MTE1IDIuNjYwMDMgMy4zODI4MSAyLjI0MDc2IDMuOTc2NTYgMS44OTE4QzQuNTcwMzEgMS41NDI4NCA1LjIwNTczIDEuMjcyMDEgNS44ODI4MSAxLjA3OTNDNi41NjUxIDAuODg2NTkyIDcuMjcwODMgMC43OTAyMzcgOCAwLjc5MDIzN1pNNy4zMjAzMSA0LjA0ODA1QzcuMjEwOTQgNC4wNDgwNSA3LjEwNjc3IDQuMDcxNDkgNy4wMDc4MSA0LjExODM2QzYuOTE0MDYgNC4xNjAwMyA2LjgyODEzIDQuMjE5OTIgNi43NSA0LjI5ODA1QzYuNjc3MDggNC4zNzA5NyA2LjYxNzE5IDQuNDU2OSA2LjU3MDMxIDQuNTU1ODZDNi41Mjg2NSA0LjY0OTYxIDYuNTA3ODEgNC43NTExNyA2LjUwNzgxIDQuODYwNTVWOS4xOTY0OUM2LjUwNzgxIDkuMzA1ODYgNi41Mjg2NSA5LjQxMjYzIDYuNTcwMzEgOS41MTY4QzYuNjExOTggOS42MjA5NyA2LjY3MTg4IDkuNzEyMTEgNi43NSA5Ljc5MDI0TDkuMTg3NSAxMi4yMTIxQzkuMzQ4OTYgMTIuMzczNiA5LjU0MTY3IDEyLjQ1NDMgOS43NjU2MyAxMi40NTQzQzkuODc1IDEyLjQ1NDMgOS45NzkxNyAxMi40MzM1IDEwLjA3ODEgMTIuMzkxOEMxMC4xNzcxIDEyLjM0NDkgMTAuMjYzIDEyLjI4NSAxMC4zMzU5IDEyLjIxMjFDMTAuNDA4OSAxMi4xMzQgMTAuNDY2MSAxMi4wNDU0IDEwLjUwNzggMTEuOTQ2NUMxMC41NTQ3IDExLjg0NzUgMTAuNTc4MSAxMS43NDM0IDEwLjU3ODEgMTEuNjM0QzEwLjU3ODEgMTEuNTI5OCAxMC41NTQ3IDExLjQyODMgMTAuNTA3OCAxMS4zMjkzQzEwLjQ2NjEgMTEuMjI1MSAxMC40MDg5IDExLjEzNjYgMTAuMzM1OSAxMS4wNjM3TDguMTMyODEgOC44NzYxOFY0Ljg2MDU1QzguMTMyODEgNC43NTExNyA4LjEwOTM4IDQuNjQ3MDEgOC4wNjI1IDQuNTQ4MDVDOC4wMjA4MyA0LjQ0OTA5IDcuOTYzNTQgNC4zNjMxNSA3Ljg5MDYzIDQuMjkwMjRDNy44MTc3MSA0LjIxNzMyIDcuNzMxNzcgNC4xNjAwMyA3LjYzMjgxIDQuMTE4MzZDNy41MzM4NSA0LjA3MTQ5IDcuNDI5NjkgNC4wNDgwNSA3LjMyMDMxIDQuMDQ4MDVaXCIsZmlsbDpcIiNGRTlGNERcIn0pfSkpLHQuRG9Ob3REaXN0dXJiU1ZHPSgpPT4oMCxyLmpzeCkoXCJzdmdcIixPYmplY3QuYXNzaWduKHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTdcIix2aWV3Qm94OlwiMCAwIDE2IDE3XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LHtjaGlsZHJlbjooMCxyLmpzeCkoXCJwYXRoXCIse2Q6XCJNOCAwLjU5MDI1NkM4LjczNDM4IDAuNTkwMjU2IDkuNDQwMSAwLjY4NjYxIDEwLjExNzIgMC44NzkzMThDMTAuNzk0MyAxLjA3MjAzIDExLjQyOTcgMS4zNDI4NiAxMi4wMjM0IDEuNjkxODJDMTIuNjE3MiAyLjA0MDc4IDEzLjE1NjIgMi40NjAwNSAxMy42NDA2IDIuOTQ5NjNDMTQuMTMwMiAzLjQzNDAxIDE0LjU0OTUgMy45NzMwNyAxNC44OTg0IDQuNTY2ODJDMTUuMjQ3NCA1LjE2MDU3IDE1LjUxODIgNS43OTU5OCAxNS43MTA5IDYuNDczMDdDMTUuOTAzNiA3LjE1MDE1IDE2IDcuODU1ODggMTYgOC41OTAyNkMxNiA5LjMxOTQyIDE1LjkwMzYgMTAuMDI1MiAxNS43MTA5IDEwLjcwNzRDMTUuNTE4MiAxMS4zODQ1IDE1LjI0NzQgMTIuMDE5OSAxNC44OTg0IDEyLjYxMzdDMTQuNTQ5NSAxMy4yMDc0IDE0LjEzMDIgMTMuNzQ5MSAxMy42NDA2IDE0LjIzODdDMTMuMTU2MiAxNC43MjMxIDEyLjYxNzIgMTUuMTM5NyAxMi4wMjM0IDE1LjQ4ODdDMTEuNDI5NyAxNS44Mzc3IDEwLjc5MTcgMTYuMTA4NSAxMC4xMDk0IDE2LjMwMTJDOS40MzIyOSAxNi40OTM5IDguNzI5MTcgMTYuNTkwMyA4IDE2LjU5MDNDNy4yNzA4MyAxNi41OTAzIDYuNTY1MSAxNi40OTM5IDUuODgyODEgMTYuMzAxMkM1LjIwNTczIDE2LjEwODUgNC41NzAzMSAxNS44Mzc3IDMuOTc2NTYgMTUuNDg4N0MzLjM4MjgxIDE1LjEzOTcgMi44NDExNSAxNC43MjMxIDIuMzUxNTYgMTQuMjM4N0MxLjg2NzE5IDEzLjc0OTEgMS40NTA1MiAxMy4yMDc0IDEuMTAxNTYgMTIuNjEzN0MwLjc1MjYwNCAxMi4wMTk5IDAuNDgxNzcxIDExLjM4NDUgMC4yODkwNjIgMTAuNzA3NEMwLjA5NjM1NDIgMTAuMDI1MiAwIDkuMzE5NDIgMCA4LjU5MDI2QzAgNy44NjEwOSAwLjA5NjM1NDIgNy4xNTc5NiAwLjI4OTA2MiA2LjQ4MDg4QzAuNDgxNzcxIDUuNzk4NTkgMC43NTI2MDQgNS4xNjA1NyAxLjEwMTU2IDQuNTY2ODJDMS40NTA1MiAzLjk3MzA3IDEuODY3MTkgMy40MzQwMSAyLjM1MTU2IDIuOTQ5NjNDMi44NDExNSAyLjQ2MDA1IDMuMzgyODEgMi4wNDA3OCAzLjk3NjU2IDEuNjkxODJDNC41NzAzMSAxLjM0Mjg2IDUuMjA1NzMgMS4wNzIwMyA1Ljg4MjgxIDAuODc5MzE4QzYuNTY1MSAwLjY4NjYxIDcuMjcwODMgMC41OTAyNTYgOCAwLjU5MDI1NlpNNS40NzY1NiA3Ljc0NjUxQzUuMzY3MTkgNy43NDY1MSA1LjI2MDQyIDcuNzY5OTQgNS4xNTYyNSA3LjgxNjgyQzUuMDU3MjkgNy44NjM2OSA0Ljk2ODc1IDcuOTI2MTkgNC44OTA2MiA4LjAwNDMyQzQuODEyNSA4LjA4MjQ0IDQuNzUgOC4xNzM1OSA0LjcwMzEyIDguMjc3NzZDNC42NTYyNSA4LjM3NjcxIDQuNjMyODEgOC40ODA4OCA0LjYzMjgxIDguNTkwMjZDNC42MzI4MSA4LjY5OTYzIDQuNjU2MjUgOC44MDY0IDQuNzAzMTIgOC45MTA1N0M0Ljc1IDkuMDA5NTMgNC44MTI1IDkuMDk4MDcgNC44OTA2MiA5LjE3NjE5QzQuOTY4NzUgOS4yNTQzMiA1LjA1NzI5IDkuMzE2ODIgNS4xNTYyNSA5LjM2MzY5QzUuMjYwNDIgOS40MTA1NyA1LjM2NzE5IDkuNDM0MDEgNS40NzY1NiA5LjQzNDAxSDEwLjUyMzRDMTAuNjMyOCA5LjQzNDAxIDEwLjczNyA5LjQxMDU3IDEwLjgzNTkgOS4zNjM2OUMxMC45NDAxIDkuMzE2ODIgMTEuMDMxMiA5LjI1NDMyIDExLjEwOTQgOS4xNzYxOUMxMS4xODc1IDkuMDk4MDcgMTEuMjUgOS4wMDk1MyAxMS4yOTY5IDguOTEwNTdDMTEuMzQzOCA4LjgwNjQgMTEuMzY3MiA4LjY5OTYzIDExLjM2NzIgOC41OTAyNkMxMS4zNjcyIDguNDgwODggMTEuMzQzOCA4LjM3NjcxIDExLjI5NjkgOC4yNzc3NkMxMS4yNSA4LjE3MzU5IDExLjE4NzUgOC4wODI0NCAxMS4xMDk0IDguMDA0MzJDMTEuMDMxMiA3LjkyNjE5IDEwLjk0MDEgNy44NjM2OSAxMC44MzU5IDcuODE2ODJDMTAuNzM3IDcuNzY5OTQgMTAuNjMyOCA3Ljc0NjUxIDEwLjUyMzQgNy43NDY1MUg1LjQ3NjU2WlwiLGZpbGw6XCIjQzIxMzEzXCJ9KX0pKSx0Lk9mZmxpbmVTVkc9KCk9PigwLHIuanN4KShcInN2Z1wiLE9iamVjdC5hc3NpZ24oe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxN1wiLHZpZXdCb3g6XCIwIDAgMTYgMTdcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0se2NoaWxkcmVuOigwLHIuanN4KShcInBhdGhcIix7ZDpcIk04IDAuOTkwMjUyQzguNzM0MzggMC45OTAyNTIgOS40NDAxIDEuMDg2NjEgMTAuMTE3MiAxLjI3OTMxQzEwLjc5NDMgMS40NzIwMiAxMS40Mjk3IDEuNzQyODYgMTIuMDIzNCAyLjA5MTgxQzEyLjYxNzIgMi40NDA3NyAxMy4xNTYyIDIuODYwMDQgMTMuNjQwNiAzLjM0OTYzQzE0LjEzMDIgMy44MzQgMTQuNTQ5NSA0LjM3MzA2IDE0Ljg5ODQgNC45NjY4MUMxNS4yNDc0IDUuNTYwNTYgMTUuNTE4MiA2LjE5NTk4IDE1LjcxMDkgNi44NzMwNkMxNS45MDM2IDcuNTUwMTUgMTYgOC4yNTU4OCAxNiA4Ljk5MDI1QzE2IDkuNzE5NDIgMTUuOTAzNiAxMC40MjUxIDE1LjcxMDkgMTEuMTA3NEMxNS41MTgyIDExLjc4NDUgMTUuMjQ3NCAxMi40MTk5IDE0Ljg5ODQgMTMuMDEzN0MxNC41NDk1IDEzLjYwNzQgMTQuMTMwMiAxNC4xNDkxIDEzLjY0MDYgMTQuNjM4N0MxMy4xNTYyIDE1LjEyMzEgMTIuNjE3MiAxNS41Mzk3IDEyLjAyMzQgMTUuODg4N0MxMS40Mjk3IDE2LjIzNzYgMTAuNzkxNyAxNi41MDg1IDEwLjEwOTQgMTYuNzAxMkM5LjQzMjI5IDE2Ljg5MzkgOC43MjkxNyAxNi45OTAzIDggMTYuOTkwM0M3LjI3MDgzIDE2Ljk5MDMgNi41NjUxIDE2Ljg5MzkgNS44ODI4MSAxNi43MDEyQzUuMjA1NzMgMTYuNTA4NSA0LjU3MDMxIDE2LjIzNzYgMy45NzY1NiAxNS44ODg3QzMuMzgyODEgMTUuNTM5NyAyLjg0MTE1IDE1LjEyMzEgMi4zNTE1NiAxNC42Mzg3QzEuODY3MTkgMTQuMTQ5MSAxLjQ1MDUyIDEzLjYwNzQgMS4xMDE1NiAxMy4wMTM3QzAuNzUyNjA0IDEyLjQxOTkgMC40ODE3NzEgMTEuNzg0NSAwLjI4OTA2MiAxMS4xMDc0QzAuMDk2MzU0MiAxMC40MjUxIDAgOS43MTk0MiAwIDguOTkwMjVDMCA4LjI2MTA5IDAuMDk2MzU0MiA3LjU1Nzk2IDAuMjg5MDYyIDYuODgwODhDMC40ODE3NzEgNi4xOTg1OSAwLjc1MjYwNCA1LjU2MDU2IDEuMTAxNTYgNC45NjY4MUMxLjQ1MDUyIDQuMzczMDYgMS44NjcxOSAzLjgzNCAyLjM1MTU2IDMuMzQ5NjNDMi44NDExNSAyLjg2MDA0IDMuMzgyODEgMi40NDA3NyAzLjk3NjU2IDIuMDkxODFDNC41NzAzMSAxLjc0Mjg2IDUuMjA1NzMgMS40NzIwMiA1Ljg4MjgxIDEuMjc5MzFDNi41NjUxIDEuMDg2NjEgNy4yNzA4MyAwLjk5MDI1MiA4IDAuOTkwMjUyWk04IDIuNjc3NzVDNy40MjE4OCAyLjY3Nzc1IDYuODY0NTggMi43NTMyNyA2LjMyODEyIDIuOTA0MzFDNS43OTE2NyAzLjA1NTM2IDUuMjg5MDYgMy4yNjg5IDQuODIwMzEgMy41NDQ5NEM0LjM1MTU2IDMuODIwOTggMy45MjQ0OCA0LjE1MTcxIDMuNTM5MDYgNC41MzcxM0MzLjE1ODg1IDQuOTE3MzQgMi44MzA3MyA1LjM0MTgxIDIuNTU0NjkgNS44MTA1NkMyLjI3ODY1IDYuMjc5MzEgMi4wNjUxIDYuNzgxOTIgMS45MTQwNiA3LjMxODM4QzEuNzYzMDIgNy44NTQ4NCAxLjY4NzUgOC40MTIxMyAxLjY4NzUgOC45OTAyNUMxLjY4NzUgOS41NjgzOCAxLjc2MzAyIDEwLjEyNTcgMS45MTQwNiAxMC42NjIxQzIuMDY1MSAxMS4xOTg2IDIuMjc4NjUgMTEuNzAxMiAyLjU1NDY5IDEyLjE2OTlDMi44MzA3MyAxMi42Mzg3IDMuMTU4ODUgMTMuMDY1OCAzLjUzOTA2IDEzLjQ1MTJDMy45MjQ0OCAxMy44MzE0IDQuMzUxNTYgMTQuMTU5NSA0LjgyMDMxIDE0LjQzNTZDNS4yODkwNiAxNC43MTE2IDUuNzkxNjcgMTQuOTI1MSA2LjMyODEyIDE1LjA3NjJDNi44NjQ1OCAxNS4yMjcyIDcuNDIxODggMTUuMzAyOCA4IDE1LjMwMjhDOC41NzgxMiAxNS4zMDI4IDkuMTM1NDIgMTUuMjI3MiA5LjY3MTg4IDE1LjA3NjJDMTAuMjA4MyAxNC45MjUxIDEwLjcxMDkgMTQuNzExNiAxMS4xNzk3IDE0LjQzNTZDMTEuNjQ4NCAxNC4xNTk1IDEyLjA3MjkgMTMuODMxNCAxMi40NTMxIDEzLjQ1MTJDMTIuODM4NSAxMy4wNjU4IDEzLjE2OTMgMTIuNjM4NyAxMy40NDUzIDEyLjE2OTlDMTMuNzIxNCAxMS43MDEyIDEzLjkzNDkgMTEuMTk4NiAxNC4wODU5IDEwLjY2MjFDMTQuMjM3IDEwLjEyNTcgMTQuMzEyNSA5LjU2ODM4IDE0LjMxMjUgOC45OTAyNUMxNC4zMTI1IDguNDEyMTMgMTQuMjM3IDcuODU0ODQgMTQuMDg1OSA3LjMxODM4QzEzLjkzNDkgNi43ODE5MiAxMy43MjE0IDYuMjc5MzEgMTMuNDQ1MyA1LjgxMDU2QzEzLjE2OTMgNS4zNDE4MSAxMi44Mzg1IDQuOTE3MzQgMTIuNDUzMSA0LjUzNzEzQzEyLjA3MjkgNC4xNTE3MSAxMS42NDg0IDMuODIwOTggMTEuMTc5NyAzLjU0NDk0QzEwLjcxMDkgMy4yNjg5IDEwLjIwODMgMy4wNTUzNiA5LjY3MTg4IDIuOTA0MzFDOS4xMzU0MiAyLjc1MzI3IDguNTc4MTIgMi42Nzc3NSA4IDIuNjc3NzVaXCIsZmlsbDpcIiM5Nzk3OTdcIn0pfSkpfSwzNDI5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksaT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fSxhPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LGw9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db250YWN0Q2FyZD12b2lkIDA7Y29uc3QgYz1uKDU4OTMpLHM9aShuKDY2ODkpKSx1PWwobig3NTE4KSksZD1uKDUzNzcpLGY9big3NDQ0KSxwPW4oOTc1OCksQz1uKDg4MzIpO3QuQ29udGFjdENhcmQ9ZT0+e3ZhcntuYW1lOnQsdGl0bGU6bixwaG90b1VybDpyLHVzZUluaXRpYWxzOm89ITEsZGV0YWlsczppLG9ubGluZVN0YXR1czpsfT1lLHU9YShlLFtcIm5hbWVcIixcInRpdGxlXCIsXCJwaG90b1VybFwiLFwidXNlSW5pdGlhbHNcIixcImRldGFpbHNcIixcIm9ubGluZVN0YXR1c1wiXSk7Y29uc3QgZD1yfHxvLE09KDAscy51c2VNZW1vKSgoKCk9PigwLGYuZ2V0SW5pdGlhbHMpKHQpKSxbdF0pLGo9KDAscy51c2VNZW1vKSgoKCk9PigwLEMuZ2VuZXJhdGVDb2xvckZyb21TdHJpbmcpKHQpKSxbdF0pO3JldHVybigwLGMuanN4cykoaCxPYmplY3QuYXNzaWduKHt9LHUse2NoaWxkcmVuOlsoMCxjLmpzeHMpKHYse2NoaWxkcmVuOltkJiYoMCxjLmpzeHMpKGcsT2JqZWN0LmFzc2lnbih7aWNvbkNvbG9yOmp9LHtjaGlsZHJlbjpbcj8oMCxjLmpzeCkodyx7YWx0Om4sc3JjOnJ9KTooMCxjLmpzeCkobSx7Y2hpbGRyZW46TX0pLCgwLGMuanN4KShwLkNvbnRhY3RTdGF0dXNJY29uLHtvbmxpbmVTdGF0dXM6bH0pXX0pKSwoMCxjLmpzeHMpKHkse2NoaWxkcmVuOlsoMCxjLmpzeHMpKGIse2NoaWxkcmVuOltcIiBcIix0LFwiIFwiXX0pLG4mJigwLGMuanN4cykoeCx7Y2hpbGRyZW46W1wiIFwiLG4sXCIgXCJdfSldfSldfSksKDAsYy5qc3gpKEwse30pLCgwLGMuanN4KShPLHtjaGlsZHJlbjoobnVsbD09aT92b2lkIDA6aS5sZW5ndGgpPjA/aS5tYXAoKChlLG4pPT4oMCxjLmpzeHMpKHMuZGVmYXVsdC5GcmFnbWVudCx7Y2hpbGRyZW46WygwLGMuanN4KShfLHtkZWZpbml0aW9uczplfSksbjxpLmxlbmd0aC0xJiYoMCxjLmpzeCkoTCx7cGFkZGluZzohMH0pXX0sYCR7dH0tZGV0YWlscy0ke259YCkpKTooMCxjLmpzeCkoXCJwXCIse2NoaWxkcmVuOlwiTm8gaW5mb3JtYXRpb24gYXZhaWxhYmxlLlwifSl9KV19KSl9O2NvbnN0IGg9dS5kZWZhdWx0LmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiAxMDAlO1xuYCx2PXUuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmxhcmdlfTtcbmAsZz11LmRlZmF1bHQuZGl2YFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2U9PmUuaWNvbkNvbG9yfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICBoZWlnaHQ6IDYwcHg7XG4gIHdpZHRoOiA2MHB4O1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmAsbT11LmRlZmF1bHQuc3BhbmBcbiAgZm9udC1zaXplOiAyNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuYCx3PXUuZGVmYXVsdC5pbWdgXG4gIGJvcmRlci1yYWRpdXM6ICR7KHt0aGVtZTplfSk9PmUucHgueHNtYWxsfTtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuYCx5PXUuZGVmYXVsdC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgbWluLXdpZHRoOiAwO1xuICBtYXJnaW4tbGVmdDogJHsoe3RoZW1lOmV9KT0+ZS5weC5iYXNlfTtcbmAsYj11LmRlZmF1bHQuc3BhbmBcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZX0pPT5lLmZvbnRTaXplLmxhcmdlfTtcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nLWJvdHRvbTogJHsoe3RoZW1lOmV9KT0+ZS5weC54c21hbGx9O1xuICBmb250LXdlaWdodDogJHsoe3RoZW1lOmV9KT0+ZS5mb250V2VpZ2h0LmJvbGR9O1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbmAseD11LmRlZmF1bHQuc3BhbmBcbiAgY29sb3I6ICR7KHt0aGVtZTplfSk9PmUucGFsZXR0ZS50ZXh0SGVscH07XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nLWJvdHRvbTogMnB4O1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbmAsTz11LmRlZmF1bHQuZGl2YFxuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGZsZXg6IDE7XG4gIG1hcmdpbi10b3A6ICR7KHt0aGVtZTplfSk9PmUucHgubGFyZ2V9O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLnB4LmJhc2V9O1xuICBvdmVyZmxvdy15OiBhdXRvO1xuYCxMPXUuZGVmYXVsdC5kaXZgXG4gIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCAkeyh7dGhlbWU6ZX0pPT5lLnBhbGV0dGUuYmFja2dyb3VuZDZ9O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7dGhlbWU6ZSxwYWRkaW5nOnR9KT0+dCYmZS5weC5iYXNlfTtcbmAsXz0oMCx1LmRlZmF1bHQpKGQuRGVmaW5pdGlvbkxpc3QpYFxuICBkdCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgfVxuXG4gIGRkIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIH1cbmB9LDMxODg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDM0MjkpLHQpfSw3NDQ0OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZXRJbml0aWFscz12b2lkIDAsdC5nZXRJbml0aWFscz1lPT57Y29uc3QgdD1lLnRyaW0oKSxuPXQubGFzdEluZGV4T2YoXCIgXCIpO3JldHVybiBuPi0xP1t0LmNoYXJBdCgwKSx0LmNoYXJBdChuKzEpXS5qb2luKFwiXCIpOnQuc2xpY2UoMCwyKX19LDE5OTY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19yZXN0fHxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59LG89dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5INj10Lkg1PXQuSDQ9dC5IMz10LkgyPXQuSDE9dC5IZWFkaW5nPXQuZGVmYXVsdFNpemU9dm9pZCAwO2NvbnN0IGk9big1ODkzKSxhPW8obig3NTE4KSksbD1uKDM0NzEpLGM9big3NzY5KTt0LmRlZmF1bHRTaXplPXtoMTpsLlNpemUueHh4bGFyZ2UsaDI6bC5TaXplLnh4bGFyZ2UsaDM6bC5TaXplLnhsYXJnZSxoNDpsLlNpemUubGFyZ2UsaDU6bC5TaXplLmJhc2UsaDY6bC5TaXplLnNtYWxsfSx0LkhlYWRpbmc9ZT0+e3ZhcntsZXZlbDpuPTEsY2xhc3NOYW1lOm99PWUsYT1yKGUsW1wibGV2ZWxcIixcImNsYXNzTmFtZVwiXSk7Y29uc3QgbD1gaCR7bn1gO3JldHVybigwLGkuanN4KShzLE9iamVjdC5hc3NpZ24oe2NsYXNzTmFtZTpvLGFzOmwsc2l6ZTp0LmRlZmF1bHRTaXplW2xdLHdlaWdodDpcImJvbGRcIn0sYSkpfTtjb25zdCBzPSgwLGEuZGVmYXVsdCkoYy5UZXh0KWBcbiAgbGluZS1oZWlnaHQ6ICR7KHt0aGVtZTplfSk9PmUubGluZUhlaWdodC5oZWFkaW5nfTtcbmA7dC5IMT0oMCxhLmRlZmF1bHQpKHQuSGVhZGluZykuYXR0cnMoKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bGV2ZWw6MX0pKSlgYCx0LkgyPSgwLGEuZGVmYXVsdCkodC5IZWFkaW5nKS5hdHRycygoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtsZXZlbDoyfSkpKWBgLHQuSDM9KDAsYS5kZWZhdWx0KSh0LkhlYWRpbmcpLmF0dHJzKChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2xldmVsOjN9KSkpYGAsdC5IND0oMCxhLmRlZmF1bHQpKHQuSGVhZGluZykuYXR0cnMoKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bGV2ZWw6NH0pKSlgYCx0Lkg1PSgwLGEuZGVmYXVsdCkodC5IZWFkaW5nKS5hdHRycygoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtsZXZlbDo1fSkpKWBgLHQuSDY9KDAsYS5kZWZhdWx0KSh0LkhlYWRpbmcpLmF0dHJzKChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2xldmVsOjZ9KSkpYGB9LDcwNjM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDE5OTYpLHQpfSw3NzY5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig1NDMxKSx0KX0sNTQzMTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5UZXh0PXZvaWQgMDtjb25zdCBvPXIobig3NTE4KSk7dC5UZXh0PW8uZGVmYXVsdC5zcGFuYFxuICBjb2xvcjogJHsoe3RoZW1lOmV9KT0+ZS5wYWxldHRlLnRleHREZWZhdWx0fTtcbiAgZm9udC1zaXplOiAkeyh7dGhlbWU6ZSxzaXplOnQ9XCJiYXNlXCJ9KT0+ZS5mb250U2l6ZVt0XX07XG4gIGZvbnQtd2VpZ2h0OiAkeyh7dGhlbWU6ZSx3ZWlnaHQ6dD1cIm5vcm1hbFwifSk9PmUuZm9udFdlaWdodFt0XX07XG4gIGxpbmUtaGVpZ2h0OiAkeyh7dGhlbWU6ZX0pPT5lLmxpbmVIZWlnaHQudGV4dH07XG5gLHQuVGV4dC5kaXNwbGF5TmFtZT1cIlRleHRcIn0sMzE5MDooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC51c2VDb2xvclNjaGVtZT10LkNvbG9yU2NoZW1lPXZvaWQgMDtjb25zdCByPW4oNjY4OSk7dC5Db2xvclNjaGVtZT17ZGFyazpcImRhcmtcIixsaWdodDpcImxpZ2h0XCIsc3lzdGVtOlwic3lzdGVtXCJ9O2NvbnN0IG89XCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspXCI7dC51c2VDb2xvclNjaGVtZT0oe3JlcXVlc3RlZFNjaGVtZTplLGZhbGxiYWNrU2NoZW1lOm49dC5Db2xvclNjaGVtZS5saWdodH0pPT57Y29uc3RbaSxhXT0oMCxyLnVzZVN0YXRlKShuKSxsPWU9PmEoZS5tYXRjaGVzP1wiZGFya1wiOlwibGlnaHRcIik7cmV0dXJuKDAsci51c2VFZmZlY3QpKCgoKT0+e2lmKFwibGlnaHRcIj09PWV8fFwiZGFya1wiPT09ZSlyZXR1cm4gdm9pZCBhKGUpO2NvbnN0IHQ9d2luZG93Lm1hdGNoTWVkaWEobyk7cmV0dXJuIGEodC5tYXRjaGVzP1wiZGFya1wiOlwibGlnaHRcIiksdC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsbCksKCk9PnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLGwpfSksW2UsaSxvXSksaX19LDM0NzooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC51c2VEcm9wZG93bktleWJvYXJkTmF2aWdhdGlvbj12b2lkIDA7Y29uc3Qgcj1uKDY2ODkpO3QudXNlRHJvcGRvd25LZXlib2FyZE5hdmlnYXRpb249KGUsdCxuLG8saSk9Pntjb25zdFthLGxdPSgwLHIudXNlU3RhdGUpKDApLFtjLHNdPSgwLHIudXNlU3RhdGUpKFwiXCIpO2xldCB1O2lmKCgwLHIudXNlRWZmZWN0KSgoKCk9PntpZih0JiYhbil7Y29uc3Qgbj1lLmZsYXQoKS5maW5kSW5kZXgoKGU9PmUudmFsdWU9PT10LnZhbHVlKSk7bj49MCYmbChuKX19KSxbZSx0LG5dKSwoMCxyLnVzZUVmZmVjdCkoKCgpPT57bnx8cyhcIlwiKX0pLFtuXSksKDAsci51c2VFZmZlY3QpKCgoKT0+e2lmKGMpe2NvbnN0IHQ9ZS5mbGF0KCkuZmluZEluZGV4KChlPT5lLnRpdGxlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjLnRvTG93ZXJDYXNlKCkpKSk7dD49MCYmbCh0KX19KSxbZSxjXSksZVswXS5sZW5ndGg+MCl7Y29uc3RbdCxuXT1bTWF0aC5mbG9vcihhL2VbMF0ubGVuZ3RoKSxhJWVbMF0ubGVuZ3RoXTt1PWVbdF1bbl19cmV0dXJuKDAsci51c2VFZmZlY3QpKCgoKT0+e2NvbnN0IGU9c2V0VGltZW91dCgoKCk9PntzKFwiXCIpfSksNTAwKTtyZXR1cm4oKT0+Y2xlYXJUaW1lb3V0KGUpfSksW2NdKSx7Zm9jdXNlZE9wdGlvbjp1LGhhbmRsZUtleURvd246dD0+e3N3aXRjaCh0LmNvZGUpe2Nhc2VcIkFycm93VXBcIjp0LnByZXZlbnREZWZhdWx0KCksYT4wJiZsKGEtMSk7YnJlYWs7Y2FzZVwiQXJyb3dEb3duXCI6dC5wcmV2ZW50RGVmYXVsdCgpLGE8ZS5mbGF0KCkubGVuZ3RoLTEmJmwoYSsxKTticmVhaztjYXNlXCJFbnRlclwiOmNhc2VcIlNwYWNlXCI6dC5wcmV2ZW50RGVmYXVsdCgpLG4/KChudWxsPT11P3ZvaWQgMDp1Lm92ZXJyaWRlT25DbGljayk/dS5vdmVycmlkZU9uQ2xpY2soKTppKG51bGwhPXU/dTplWzBdWzBdKSxvKCkpOm8oKTticmVhaztjYXNlXCJFc2NhcGVcIjp0LnByZXZlbnREZWZhdWx0KCksbyghMSk7YnJlYWs7ZGVmYXVsdDovXlthLXowLTldJC9pLnRlc3QodC5rZXkpJiZzKChlPT5lK3Qua2V5KSl9fX19fSw0NDgxOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnVzZUxheW91dE1lZGlhUXVlcnk9dC51c2VNZWRpYVF1ZXJ5PXZvaWQgMDtjb25zdCByPW4oNjY4OSksbz1lPT50PT57Y29uc3RbbixvXT0oMCxyLnVzZVN0YXRlKSghMSk7cmV0dXJuIGUoKCgpPT57Y29uc3QgZT13aW5kb3cubWF0Y2hNZWRpYSh0KTtpZihlKXtlLm1hdGNoZXMhPT1uJiZvKGUubWF0Y2hlcyk7Y29uc3QgdD0oKT0+byhlLm1hdGNoZXMpLHI9KCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLHQpO3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIix0KSxyfX0pLFtuLHRdKSxufTt0LnVzZU1lZGlhUXVlcnk9byhyLnVzZUVmZmVjdCksdC51c2VMYXlvdXRNZWRpYVF1ZXJ5PW8oci51c2VMYXlvdXRFZmZlY3QpfSwyNzc2OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnVzZVByZXZpb3VzPXZvaWQgMDtjb25zdCByPW4oNjY4OSk7dC51c2VQcmV2aW91cz1lPT57Y29uc3QgdD0oMCxyLnVzZVJlZikoKTtyZXR1cm4oMCxyLnVzZUVmZmVjdCkoKCgpPT57dC5jdXJyZW50PWV9KSxbZV0pLHQuY3VycmVudH19LDcwODg6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudXNlVGhlbWU9dm9pZCAwO2NvbnN0IHI9big2Njg5KSxvPW4oNDI2NiksaT1uKDMxOTApLGE9big5NTA3KSxsPXtbaS5Db2xvclNjaGVtZS5kYXJrXTpvLk9wZW5GaW5EYXJrVGhlbWUsW2kuQ29sb3JTY2hlbWUubGlnaHRdOm8uT3BlbkZpbkxpZ2h0VGhlbWV9O3QudXNlVGhlbWU9KHt0aGVtZXM6ZSxzY2hlbWU6dCxjb25maWc6bn0pPT57Y29uc3Qgbz0oMCxpLnVzZUNvbG9yU2NoZW1lKSh7cmVxdWVzdGVkU2NoZW1lOnR9KSxjPSgwLHIudXNlTWVtbykoKCgpPT52b2lkIDA9PT1lP2xbb106KDAsYS5jcmVhdGVUaGVtZSkoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGxbb10ucGFsZXR0ZSksZVtvXS5wYWxldHRlKSxvKSksW2Usb10pO3JldHVybiBuP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxjKSx7X2NvbmZpZzpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYy5fY29uZmlnKSxuKX0pOmN9fSwzNDE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7byYmIShcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKXx8KG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDQxMzApLHQpLG8obig3NDAxKSx0KSxvKG4oNDkyNSksdCksbyhuKDI2MDkpLHQpLG8obigzMTM2KSx0KSxvKG4oOTczNCksdCksbyhuKDYwMjYpLHQpLG8obig5NjM0KSx0KSxvKG4oMTQ0KSx0KSxvKG4oOTIzOSksdCksbyhuKDg4NzgpLHQpLG8obig4NTEwKSx0KSxvKG4oODk1MSksdCksbyhuKDE5NzgpLHQpLG8obig4MDUxKSx0KSxvKG4oNDE2OSksdCksbyhuKDM2NDEpLHQpLG8obig1MjE1KSx0KSxvKG4oOTY1NCksdCksbyhuKDMxMTkpLHQpLG8obigxMzM1KSx0KSxvKG4oNTM3NyksdCksbyhuKDEwNjkpLHQpLG8obig5NTA3KSx0KSxvKG4oMzE4OCksdCksbyhuKDcwNjMpLHQpLG8obig3NzY5KSx0KSxvKG4oMzE5MCksdCksbyhuKDQ0ODEpLHQpLG8obigyNzc2KSx0KSxvKG4oMzQ3KSx0KSxvKG4oNDk5MSksdCksbyhuKDg4MzIpLHQpfSw4ODMyOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZW5lcmF0ZUNvbG9yRnJvbVN0cmluZz12b2lkIDAsdC5nZW5lcmF0ZUNvbG9yRnJvbVN0cmluZz1mdW5jdGlvbihlPVwiXCIsdD03MCxuPTUwKXtsZXQgcj0wO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXI9ZS5jaGFyQ29kZUF0KHQpKygocjw8NSktciksciY9cjtyZXR1cm5gaHNsKCR7ciUzNjB9LCAke3R9JSwgJHtufSUpYH19LDY2MDY6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdlbmVyYXRlUmFuZG9tSW50ZWdlcj10LmNsYW1wPXZvaWQgMCx0LmNsYW1wPShlLHQsbik9PnQmJm4/TWF0aC5taW4oTWF0aC5tYXgoZSx0KSxuKTpuJiYhdD9NYXRoLm1pbihlLG4pOnQmJiFuP01hdGgubWF4KGUsdCk6ZSx0LmdlbmVyYXRlUmFuZG9tSW50ZWdlcj0oKT0+TWF0aC5mbG9vcigxZTMqTWF0aC5yYW5kb20oKSl9LDQ5OTE6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LndoZW5GaW49dm9pZCAwLHQud2hlbkZpbj1mdW5jdGlvbihlLHQpe2NvbnN0IG49XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGZpbj9lOnQ7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2Ygbj9uKCk6bn19LDY1NTooZSx0LG4pPT57bi5yKHQpLG4uZCh0LHtfX2Fzc2lnbjooKT0+aSxfX2FzeW5jRGVsZWdhdG9yOigpPT5fLF9fYXN5bmNHZW5lcmF0b3I6KCk9PkwsX19hc3luY1ZhbHVlczooKT0+TSxfX2F3YWl0OigpPT5PLF9fYXdhaXRlcjooKT0+QyxfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0OigpPT5ILF9fY2xhc3NQcml2YXRlRmllbGRJbjooKT0+VixfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0OigpPT5rLF9fY3JlYXRlQmluZGluZzooKT0+dixfX2RlY29yYXRlOigpPT5sLF9fZXNEZWNvcmF0ZTooKT0+cyxfX2V4cG9ydFN0YXI6KCk9PmcsX19leHRlbmRzOigpPT5vLF9fZ2VuZXJhdG9yOigpPT5oLF9faW1wb3J0RGVmYXVsdDooKT0+UCxfX2ltcG9ydFN0YXI6KCk9PlMsX19tYWtlVGVtcGxhdGVPYmplY3Q6KCk9PmosX19tZXRhZGF0YTooKT0+cCxfX3BhcmFtOigpPT5jLF9fcHJvcEtleTooKT0+ZCxfX3JlYWQ6KCk9PncsX19yZXN0OigpPT5hLF9fcnVuSW5pdGlhbGl6ZXJzOigpPT51LF9fc2V0RnVuY3Rpb25OYW1lOigpPT5mLF9fc3ByZWFkOigpPT55LF9fc3ByZWFkQXJyYXk6KCk9PngsX19zcHJlYWRBcnJheXM6KCk9PmIsX192YWx1ZXM6KCk9Pm19KTt2YXIgcj1mdW5jdGlvbihlLHQpe3JldHVybiByPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0scihlLHQpfTtmdW5jdGlvbiBvKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIrU3RyaW5nKHQpK1wiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9ZX1yKGUsdCksZS5wcm90b3R5cGU9bnVsbD09PXQ/T2JqZWN0LmNyZWF0ZSh0KToobi5wcm90b3R5cGU9dC5wcm90b3R5cGUsbmV3IG4pfXZhciBpPWZ1bmN0aW9uKCl7cmV0dXJuIGk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49MSxyPWFyZ3VtZW50cy5sZW5ndGg7bjxyO24rKylmb3IodmFyIG8gaW4gdD1hcmd1bWVudHNbbl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbykmJihlW29dPXRbb10pO3JldHVybiBlfSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gYShlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288ci5sZW5ndGg7bysrKXQuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyW29dKSYmKG5bcltvXV09ZVtyW29dXSl9cmV0dXJuIG59ZnVuY3Rpb24gbChlLHQsbixyKXt2YXIgbyxpPWFyZ3VtZW50cy5sZW5ndGgsYT1pPDM/dDpudWxsPT09cj9yPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTpyO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKWE9UmVmbGVjdC5kZWNvcmF0ZShlLHQsbixyKTtlbHNlIGZvcih2YXIgbD1lLmxlbmd0aC0xO2w+PTA7bC0tKShvPWVbbF0pJiYoYT0oaTwzP28oYSk6aT4zP28odCxuLGEpOm8odCxuKSl8fGEpO3JldHVybiBpPjMmJmEmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4sYSksYX1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dChuLHIsZSl9fWZ1bmN0aW9uIHMoZSx0LG4scixvLGkpe2Z1bmN0aW9uIGEoZSl7aWYodm9pZCAwIT09ZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7cmV0dXJuIGV9Zm9yKHZhciBsLGM9ci5raW5kLHM9XCJnZXR0ZXJcIj09PWM/XCJnZXRcIjpcInNldHRlclwiPT09Yz9cInNldFwiOlwidmFsdWVcIix1PSF0JiZlP3Iuc3RhdGljP2U6ZS5wcm90b3R5cGU6bnVsbCxkPXR8fCh1P09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodSxyLm5hbWUpOnt9KSxmPSExLHA9bi5sZW5ndGgtMTtwPj0wO3AtLSl7dmFyIEM9e307Zm9yKHZhciBoIGluIHIpQ1toXT1cImFjY2Vzc1wiPT09aD97fTpyW2hdO2Zvcih2YXIgaCBpbiByLmFjY2VzcylDLmFjY2Vzc1toXT1yLmFjY2Vzc1toXTtDLmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKGUpe2lmKGYpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZFwiKTtpLnB1c2goYShlfHxudWxsKSl9O3ZhciB2PSgwLG5bcF0pKFwiYWNjZXNzb3JcIj09PWM/e2dldDpkLmdldCxzZXQ6ZC5zZXR9OmRbc10sQyk7aWYoXCJhY2Nlc3NvclwiPT09Yyl7aWYodm9pZCAwPT09diljb250aW51ZTtpZihudWxsPT09dnx8XCJvYmplY3RcIiE9dHlwZW9mIHYpdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTsobD1hKHYuZ2V0KSkmJihkLmdldD1sKSwobD1hKHYuc2V0KSkmJihkLnNldD1sKSwobD1hKHYuaW5pdCkpJiZvLnB1c2gobCl9ZWxzZShsPWEodikpJiYoXCJmaWVsZFwiPT09Yz9vLnB1c2gobCk6ZFtzXT1sKX11JiZPYmplY3QuZGVmaW5lUHJvcGVydHkodSxyLm5hbWUsZCksZj0hMH1mdW5jdGlvbiB1KGUsdCxuKXtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yLG89MDtvPHQubGVuZ3RoO28rKyluPXI/dFtvXS5jYWxsKGUsbik6dFtvXS5jYWxsKGUpO3JldHVybiByP246dm9pZCAwfWZ1bmN0aW9uIGQoZSl7cmV0dXJuXCJzeW1ib2xcIj09dHlwZW9mIGU/ZTpcIlwiLmNvbmNhdChlKX1mdW5jdGlvbiBmKGUsdCxuKXtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgdCYmKHQ9dC5kZXNjcmlwdGlvbj9cIltcIi5jb25jYXQodC5kZXNjcmlwdGlvbixcIl1cIik6XCJcIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJuYW1lXCIse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTpuP1wiXCIuY29uY2F0KG4sXCIgXCIsdCk6dH0pfWZ1bmN0aW9uIHAoZSx0KXtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSlyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShlLHQpfWZ1bmN0aW9uIEMoZSx0LG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKG8saSl7ZnVuY3Rpb24gYShlKXt0cnl7YyhyLm5leHQoZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIGwoZSl7dHJ5e2Moci50aHJvdyhlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gYyhlKXt2YXIgdDtlLmRvbmU/byhlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4oYSxsKX1jKChyPXIuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9ZnVuY3Rpb24gaChlLHQpe3ZhciBuLHIsbyxpLGE9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb1swXSl0aHJvdyBvWzFdO3JldHVybiBvWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGk9e25leHQ6bCgwKSx0aHJvdzpsKDEpLHJldHVybjpsKDIpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJihpW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGk7ZnVuY3Rpb24gbChsKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKGwpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7Zm9yKDtpJiYoaT0wLGxbMF0mJihhPTApKSxhOyl0cnl7aWYobj0xLHImJihvPTImbFswXT9yLnJldHVybjpsWzBdP3IudGhyb3d8fCgobz1yLnJldHVybikmJm8uY2FsbChyKSwwKTpyLm5leHQpJiYhKG89by5jYWxsKHIsbFsxXSkpLmRvbmUpcmV0dXJuIG87c3dpdGNoKHI9MCxvJiYobD1bMiZsWzBdLG8udmFsdWVdKSxsWzBdKXtjYXNlIDA6Y2FzZSAxOm89bDticmVhaztjYXNlIDQ6cmV0dXJuIGEubGFiZWwrKyx7dmFsdWU6bFsxXSxkb25lOiExfTtjYXNlIDU6YS5sYWJlbCsrLHI9bFsxXSxsPVswXTtjb250aW51ZTtjYXNlIDc6bD1hLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChvPShvPWEudHJ5cykubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0pfHw2IT09bFswXSYmMiE9PWxbMF0pKXthPTA7Y29udGludWV9aWYoMz09PWxbMF0mJighb3x8bFsxXT5vWzBdJiZsWzFdPG9bM10pKXthLmxhYmVsPWxbMV07YnJlYWt9aWYoNj09PWxbMF0mJmEubGFiZWw8b1sxXSl7YS5sYWJlbD1vWzFdLG89bDticmVha31pZihvJiZhLmxhYmVsPG9bMl0pe2EubGFiZWw9b1syXSxhLm9wcy5wdXNoKGwpO2JyZWFrfW9bMl0mJmEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZX1sPXQuY2FsbChlLGEpfWNhdGNoKGUpe2w9WzYsZV0scj0wfWZpbmFsbHl7bj1vPTB9aWYoNSZsWzBdKXRocm93IGxbMV07cmV0dXJue3ZhbHVlOmxbMF0/bFsxXTp2b2lkIDAsZG9uZTohMH19KFtsLGNdKX19fXZhciB2PU9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO28mJiEoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSl8fChvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX07ZnVuY3Rpb24gZyhlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHYodCxlLG4pfWZ1bmN0aW9uIG0oZSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3Isbj10JiZlW3RdLHI9MDtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoZSYmXCJudW1iZXJcIj09dHlwZW9mIGUubGVuZ3RoKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGUmJnI+PWUubGVuZ3RoJiYoZT12b2lkIDApLHt2YWx1ZTplJiZlW3IrK10sZG9uZTohZX19fTt0aHJvdyBuZXcgVHlwZUVycm9yKHQ/XCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiOlwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKX1mdW5jdGlvbiB3KGUsdCl7dmFyIG49XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIGU7dmFyIHIsbyxpPW4uY2FsbChlKSxhPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT10fHx0LS0gPjApJiYhKHI9aS5uZXh0KCkpLmRvbmU7KWEucHVzaChyLnZhbHVlKX1jYXRjaChlKXtvPXtlcnJvcjplfX1maW5hbGx5e3RyeXtyJiYhci5kb25lJiYobj1pLnJldHVybikmJm4uY2FsbChpKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIGF9ZnVuY3Rpb24geSgpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllPWUuY29uY2F0KHcoYXJndW1lbnRzW3RdKSk7cmV0dXJuIGV9ZnVuY3Rpb24gYigpe2Zvcih2YXIgZT0wLHQ9MCxuPWFyZ3VtZW50cy5sZW5ndGg7dDxuO3QrKyllKz1hcmd1bWVudHNbdF0ubGVuZ3RoO3ZhciByPUFycmF5KGUpLG89MDtmb3IodD0wO3Q8bjt0KyspZm9yKHZhciBpPWFyZ3VtZW50c1t0XSxhPTAsbD1pLmxlbmd0aDthPGw7YSsrLG8rKylyW29dPWlbYV07cmV0dXJuIHJ9ZnVuY3Rpb24geChlLHQsbil7aWYobnx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciByLG89MCxpPXQubGVuZ3RoO288aTtvKyspIXImJm8gaW4gdHx8KHJ8fChyPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMCxvKSkscltvXT10W29dKTtyZXR1cm4gZS5jb25jYXQocnx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpfWZ1bmN0aW9uIE8oZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBPPyh0aGlzLnY9ZSx0aGlzKTpuZXcgTyhlKX1mdW5jdGlvbiBMKGUsdCxuKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTt2YXIgcixvPW4uYXBwbHkoZSx0fHxbXSksaT1bXTtyZXR1cm4gcj17fSxhKFwibmV4dFwiKSxhKFwidGhyb3dcIiksYShcInJldHVyblwiKSxyW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxyO2Z1bmN0aW9uIGEoZSl7b1tlXSYmKHJbZV09ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLHIpe2kucHVzaChbZSx0LG4scl0pPjF8fGwoZSx0KX0pKX0pfWZ1bmN0aW9uIGwoZSx0KXt0cnl7KG49b1tlXSh0KSkudmFsdWUgaW5zdGFuY2VvZiBPP1Byb21pc2UucmVzb2x2ZShuLnZhbHVlLnYpLnRoZW4oYyxzKTp1KGlbMF1bMl0sbil9Y2F0Y2goZSl7dShpWzBdWzNdLGUpfXZhciBufWZ1bmN0aW9uIGMoZSl7bChcIm5leHRcIixlKX1mdW5jdGlvbiBzKGUpe2woXCJ0aHJvd1wiLGUpfWZ1bmN0aW9uIHUoZSx0KXtlKHQpLGkuc2hpZnQoKSxpLmxlbmd0aCYmbChpWzBdWzBdLGlbMF1bMV0pfX1mdW5jdGlvbiBfKGUpe3ZhciB0LG47cmV0dXJuIHQ9e30scihcIm5leHRcIikscihcInRocm93XCIsKGZ1bmN0aW9uKGUpe3Rocm93IGV9KSkscihcInJldHVyblwiKSx0W1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdDtmdW5jdGlvbiByKHIsbyl7dFtyXT1lW3JdP2Z1bmN0aW9uKHQpe3JldHVybihuPSFuKT97dmFsdWU6TyhlW3JdKHQpKSxkb25lOiExfTpvP28odCk6dH06b319ZnVuY3Rpb24gTShlKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTt2YXIgdCxuPWVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdO3JldHVybiBuP24uY2FsbChlKTooZT1tKGUpLHQ9e30scihcIm5leHRcIikscihcInRocm93XCIpLHIoXCJyZXR1cm5cIiksdFtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdCk7ZnVuY3Rpb24gcihuKXt0W25dPWVbbl0mJmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXshZnVuY3Rpb24oZSx0LG4scil7UHJvbWlzZS5yZXNvbHZlKHIpLnRoZW4oKGZ1bmN0aW9uKHQpe2Uoe3ZhbHVlOnQsZG9uZTpufSl9KSx0KX0ocixvLCh0PWVbbl0odCkpLmRvbmUsdC52YWx1ZSl9KSl9fX1mdW5jdGlvbiBqKGUsdCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInJhd1wiLHt2YWx1ZTp0fSk6ZS5yYXc9dCxlfXZhciBFPU9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9O2Z1bmN0aW9uIFMoZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmdih0LGUsbik7cmV0dXJuIEUodCxlKSx0fWZ1bmN0aW9uIFAoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIEgoZSx0LG4scil7aWYoXCJhXCI9PT1uJiYhcil0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/ZSE9PXR8fCFyOiF0LmhhcyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO3JldHVyblwibVwiPT09bj9yOlwiYVwiPT09bj9yLmNhbGwoZSk6cj9yLnZhbHVlOnQuZ2V0KGUpfWZ1bmN0aW9uIGsoZSx0LG4scixvKXtpZihcIm1cIj09PXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtpZihcImFcIj09PXImJiFvKXRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdD9lIT09dHx8IW86IXQuaGFzKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtyZXR1cm5cImFcIj09PXI/by5jYWxsKGUsbik6bz9vLnZhbHVlPW46dC5zZXQoZSxuKSxufWZ1bmN0aW9uIFYoZSx0KXtpZihudWxsPT09dHx8XCJvYmplY3RcIiE9dHlwZW9mIHQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0XCIpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/dD09PWU6ZS5oYXModCl9fSw2Njg5OmU9PntlLmV4cG9ydHM9bigzNzgpfSw3NTE4OmU9PntlLmV4cG9ydHM9big5MjEpfSw4MjA3OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7cmV0dXJuKGU9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0pKHQpfXZhciB0PS9eXFxzKy8sbj0vXFxzKyQvO2Z1bmN0aW9uIHIobyxpKXtpZihpPWl8fHt9LChvPW98fFwiXCIpaW5zdGFuY2VvZiByKXJldHVybiBvO2lmKCEodGhpcyBpbnN0YW5jZW9mIHIpKXJldHVybiBuZXcgcihvLGkpO3ZhciBhPWZ1bmN0aW9uKHIpe3ZhciBvLGksYSxsPXtyOjAsZzowLGI6MH0sYz0xLHM9bnVsbCx1PW51bGwsZD1udWxsLGY9ITEscD0hMTtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgciYmKHI9ZnVuY3Rpb24oZSl7ZT1lLnJlcGxhY2UodCxcIlwiKS5yZXBsYWNlKG4sXCJcIikudG9Mb3dlckNhc2UoKTt2YXIgcixvPSExO2lmKHlbZV0pZT15W2VdLG89ITA7ZWxzZSBpZihcInRyYW5zcGFyZW50XCI9PWUpcmV0dXJue3I6MCxnOjAsYjowLGE6MCxmb3JtYXQ6XCJuYW1lXCJ9O3JldHVybihyPVYucmdiLmV4ZWMoZSkpP3tyOnJbMV0sZzpyWzJdLGI6clszXX06KHI9Vi5yZ2JhLmV4ZWMoZSkpP3tyOnJbMV0sZzpyWzJdLGI6clszXSxhOnJbNF19OihyPVYuaHNsLmV4ZWMoZSkpP3toOnJbMV0sczpyWzJdLGw6clszXX06KHI9Vi5oc2xhLmV4ZWMoZSkpP3toOnJbMV0sczpyWzJdLGw6clszXSxhOnJbNF19OihyPVYuaHN2LmV4ZWMoZSkpP3toOnJbMV0sczpyWzJdLHY6clszXX06KHI9Vi5oc3ZhLmV4ZWMoZSkpP3toOnJbMV0sczpyWzJdLHY6clszXSxhOnJbNF19OihyPVYuaGV4OC5leGVjKGUpKT97cjpfKHJbMV0pLGc6XyhyWzJdKSxiOl8oclszXSksYTpTKHJbNF0pLGZvcm1hdDpvP1wibmFtZVwiOlwiaGV4OFwifToocj1WLmhleDYuZXhlYyhlKSk/e3I6XyhyWzFdKSxnOl8oclsyXSksYjpfKHJbM10pLGZvcm1hdDpvP1wibmFtZVwiOlwiaGV4XCJ9OihyPVYuaGV4NC5leGVjKGUpKT97cjpfKHJbMV0rXCJcIityWzFdKSxnOl8oclsyXStcIlwiK3JbMl0pLGI6XyhyWzNdK1wiXCIrclszXSksYTpTKHJbNF0rXCJcIityWzRdKSxmb3JtYXQ6bz9cIm5hbWVcIjpcImhleDhcIn06ISEocj1WLmhleDMuZXhlYyhlKSkmJntyOl8oclsxXStcIlwiK3JbMV0pLGc6XyhyWzJdK1wiXCIrclsyXSksYjpfKHJbM10rXCJcIityWzNdKSxmb3JtYXQ6bz9cIm5hbWVcIjpcImhleFwifX0ocikpLFwib2JqZWN0XCI9PWUocikmJihSKHIucikmJlIoci5nKSYmUihyLmIpPyhvPXIucixpPXIuZyxhPXIuYixsPXtyOjI1NSpPKG8sMjU1KSxnOjI1NSpPKGksMjU1KSxiOjI1NSpPKGEsMjU1KX0sZj0hMCxwPVwiJVwiPT09U3RyaW5nKHIucikuc3Vic3RyKC0xKT9cInByZ2JcIjpcInJnYlwiKTpSKHIuaCkmJlIoci5zKSYmUihyLnYpPyhzPWooci5zKSx1PWooci52KSxsPWZ1bmN0aW9uKGUsdCxuKXtlPTYqTyhlLDM2MCksdD1PKHQsMTAwKSxuPU8obiwxMDApO3ZhciByPU1hdGguZmxvb3IoZSksbz1lLXIsaT1uKigxLXQpLGE9biooMS1vKnQpLGw9biooMS0oMS1vKSp0KSxjPXIlNjtyZXR1cm57cjoyNTUqW24sYSxpLGksbCxuXVtjXSxnOjI1NSpbbCxuLG4sYSxpLGldW2NdLGI6MjU1KltpLGksbCxuLG4sYV1bY119fShyLmgscyx1KSxmPSEwLHA9XCJoc3ZcIik6UihyLmgpJiZSKHIucykmJlIoci5sKSYmKHM9aihyLnMpLGQ9aihyLmwpLGw9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saTtmdW5jdGlvbiBhKGUsdCxuKXtyZXR1cm4gbjwwJiYobis9MSksbj4xJiYobi09MSksbjwxLzY/ZSs2Kih0LWUpKm46bjwuNT90Om48Mi8zP2UrKHQtZSkqKDIvMy1uKSo2OmV9aWYoZT1PKGUsMzYwKSx0PU8odCwxMDApLG49TyhuLDEwMCksMD09PXQpcj1vPWk9bjtlbHNle3ZhciBsPW48LjU/biooMSt0KTpuK3Qtbip0LGM9MipuLWw7cj1hKGMsbCxlKzEvMyksbz1hKGMsbCxlKSxpPWEoYyxsLGUtMS8zKX1yZXR1cm57cjoyNTUqcixnOjI1NSpvLGI6MjU1Kml9fShyLmgscyxkKSxmPSEwLHA9XCJoc2xcIiksci5oYXNPd25Qcm9wZXJ0eShcImFcIikmJihjPXIuYSkpLGM9eChjKSx7b2s6Zixmb3JtYXQ6ci5mb3JtYXR8fHAscjpNYXRoLm1pbigyNTUsTWF0aC5tYXgobC5yLDApKSxnOk1hdGgubWluKDI1NSxNYXRoLm1heChsLmcsMCkpLGI6TWF0aC5taW4oMjU1LE1hdGgubWF4KGwuYiwwKSksYTpjfX0obyk7dGhpcy5fb3JpZ2luYWxJbnB1dD1vLHRoaXMuX3I9YS5yLHRoaXMuX2c9YS5nLHRoaXMuX2I9YS5iLHRoaXMuX2E9YS5hLHRoaXMuX3JvdW5kQT1NYXRoLnJvdW5kKDEwMCp0aGlzLl9hKS8xMDAsdGhpcy5fZm9ybWF0PWkuZm9ybWF0fHxhLmZvcm1hdCx0aGlzLl9ncmFkaWVudFR5cGU9aS5ncmFkaWVudFR5cGUsdGhpcy5fcjwxJiYodGhpcy5fcj1NYXRoLnJvdW5kKHRoaXMuX3IpKSx0aGlzLl9nPDEmJih0aGlzLl9nPU1hdGgucm91bmQodGhpcy5fZykpLHRoaXMuX2I8MSYmKHRoaXMuX2I9TWF0aC5yb3VuZCh0aGlzLl9iKSksdGhpcy5fb2s9YS5va31mdW5jdGlvbiBvKGUsdCxuKXtlPU8oZSwyNTUpLHQ9Tyh0LDI1NSksbj1PKG4sMjU1KTt2YXIgcixvLGk9TWF0aC5tYXgoZSx0LG4pLGE9TWF0aC5taW4oZSx0LG4pLGw9KGkrYSkvMjtpZihpPT1hKXI9bz0wO2Vsc2V7dmFyIGM9aS1hO3N3aXRjaChvPWw+LjU/Yy8oMi1pLWEpOmMvKGkrYSksaSl7Y2FzZSBlOnI9KHQtbikvYysodDxuPzY6MCk7YnJlYWs7Y2FzZSB0OnI9KG4tZSkvYysyO2JyZWFrO2Nhc2UgbjpyPShlLXQpL2MrNH1yLz02fXJldHVybntoOnIsczpvLGx9fWZ1bmN0aW9uIGkoZSx0LG4pe2U9TyhlLDI1NSksdD1PKHQsMjU1KSxuPU8obiwyNTUpO3ZhciByLG8saT1NYXRoLm1heChlLHQsbiksYT1NYXRoLm1pbihlLHQsbiksbD1pLGM9aS1hO2lmKG89MD09PWk/MDpjL2ksaT09YSlyPTA7ZWxzZXtzd2l0Y2goaSl7Y2FzZSBlOnI9KHQtbikvYysodDxuPzY6MCk7YnJlYWs7Y2FzZSB0OnI9KG4tZSkvYysyO2JyZWFrO2Nhc2UgbjpyPShlLXQpL2MrNH1yLz02fXJldHVybntoOnIsczpvLHY6bH19ZnVuY3Rpb24gYShlLHQsbixyKXt2YXIgbz1bTShNYXRoLnJvdW5kKGUpLnRvU3RyaW5nKDE2KSksTShNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KSksTShNYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDE2KSldO3JldHVybiByJiZvWzBdLmNoYXJBdCgwKT09b1swXS5jaGFyQXQoMSkmJm9bMV0uY2hhckF0KDApPT1vWzFdLmNoYXJBdCgxKSYmb1syXS5jaGFyQXQoMCk9PW9bMl0uY2hhckF0KDEpP29bMF0uY2hhckF0KDApK29bMV0uY2hhckF0KDApK29bMl0uY2hhckF0KDApOm8uam9pbihcIlwiKX1mdW5jdGlvbiBsKGUsdCxuLHIpe3JldHVybltNKEUocikpLE0oTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikpLE0oTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNikpLE0oTWF0aC5yb3VuZChuKS50b1N0cmluZygxNikpXS5qb2luKFwiXCIpfWZ1bmN0aW9uIGMoZSx0KXt0PTA9PT10PzA6dHx8MTA7dmFyIG49cihlKS50b0hzbCgpO3JldHVybiBuLnMtPXQvMTAwLG4ucz1MKG4ucykscihuKX1mdW5jdGlvbiBzKGUsdCl7dD0wPT09dD8wOnR8fDEwO3ZhciBuPXIoZSkudG9Ic2woKTtyZXR1cm4gbi5zKz10LzEwMCxuLnM9TChuLnMpLHIobil9ZnVuY3Rpb24gdShlKXtyZXR1cm4gcihlKS5kZXNhdHVyYXRlKDEwMCl9ZnVuY3Rpb24gZChlLHQpe3Q9MD09PXQ/MDp0fHwxMDt2YXIgbj1yKGUpLnRvSHNsKCk7cmV0dXJuIG4ubCs9dC8xMDAsbi5sPUwobi5sKSxyKG4pfWZ1bmN0aW9uIGYoZSx0KXt0PTA9PT10PzA6dHx8MTA7dmFyIG49cihlKS50b1JnYigpO3JldHVybiBuLnI9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsbi5yLU1hdGgucm91bmQoLXQvMTAwKjI1NSkpKSxuLmc9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsbi5nLU1hdGgucm91bmQoLXQvMTAwKjI1NSkpKSxuLmI9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsbi5iLU1hdGgucm91bmQoLXQvMTAwKjI1NSkpKSxyKG4pfWZ1bmN0aW9uIHAoZSx0KXt0PTA9PT10PzA6dHx8MTA7dmFyIG49cihlKS50b0hzbCgpO3JldHVybiBuLmwtPXQvMTAwLG4ubD1MKG4ubCkscihuKX1mdW5jdGlvbiBDKGUsdCl7dmFyIG49cihlKS50b0hzbCgpLG89KG4uaCt0KSUzNjA7cmV0dXJuIG4uaD1vPDA/MzYwK286byxyKG4pfWZ1bmN0aW9uIGgoZSl7dmFyIHQ9cihlKS50b0hzbCgpO3JldHVybiB0Lmg9KHQuaCsxODApJTM2MCxyKHQpfWZ1bmN0aW9uIHYoZSx0KXtpZihpc05hTih0KXx8dDw9MCl0aHJvdyBuZXcgRXJyb3IoXCJBcmd1bWVudCB0byBwb2x5YWQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlclwiKTtmb3IodmFyIG49cihlKS50b0hzbCgpLG89W3IoZSldLGk9MzYwL3QsYT0xO2E8dDthKyspby5wdXNoKHIoe2g6KG4uaCthKmkpJTM2MCxzOm4ucyxsOm4ubH0pKTtyZXR1cm4gb31mdW5jdGlvbiBnKGUpe3ZhciB0PXIoZSkudG9Ic2woKSxuPXQuaDtyZXR1cm5bcihlKSxyKHtoOihuKzcyKSUzNjAsczp0LnMsbDp0Lmx9KSxyKHtoOihuKzIxNiklMzYwLHM6dC5zLGw6dC5sfSldfWZ1bmN0aW9uIG0oZSx0LG4pe3Q9dHx8NixuPW58fDMwO3ZhciBvPXIoZSkudG9Ic2woKSxpPTM2MC9uLGE9W3IoZSldO2ZvcihvLmg9KG8uaC0oaSp0Pj4xKSs3MjApJTM2MDstLXQ7KW8uaD0oby5oK2kpJTM2MCxhLnB1c2gocihvKSk7cmV0dXJuIGF9ZnVuY3Rpb24gdyhlLHQpe3Q9dHx8Njtmb3IodmFyIG49cihlKS50b0hzdigpLG89bi5oLGk9bi5zLGE9bi52LGw9W10sYz0xL3Q7dC0tOylsLnB1c2gocih7aDpvLHM6aSx2OmF9KSksYT0oYStjKSUxO3JldHVybiBsfXIucHJvdG90eXBlPXtpc0Rhcms6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCcmlnaHRuZXNzKCk8MTI4fSxpc0xpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNEYXJrKCl9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb2t9LGdldE9yaWdpbmFsSW5wdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3JpZ2luYWxJbnB1dH0sZ2V0Rm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Zvcm1hdH0sZ2V0QWxwaGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYX0sZ2V0QnJpZ2h0bmVzczpmdW5jdGlvbigpe3ZhciBlPXRoaXMudG9SZ2IoKTtyZXR1cm4oMjk5KmUucis1ODcqZS5nKzExNCplLmIpLzFlM30sZ2V0THVtaW5hbmNlOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLHI9dGhpcy50b1JnYigpO3JldHVybiBlPXIuci8yNTUsdD1yLmcvMjU1LG49ci5iLzI1NSwuMjEyNiooZTw9LjAzOTI4P2UvMTIuOTI6TWF0aC5wb3coKGUrLjA1NSkvMS4wNTUsMi40KSkrLjcxNTIqKHQ8PS4wMzkyOD90LzEyLjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCkpKy4wNzIyKihuPD0uMDM5Mjg/bi8xMi45MjpNYXRoLnBvdygobisuMDU1KS8xLjA1NSwyLjQpKX0sc2V0QWxwaGE6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2E9eChlKSx0aGlzLl9yb3VuZEE9TWF0aC5yb3VuZCgxMDAqdGhpcy5fYSkvMTAwLHRoaXN9LHRvSHN2OmZ1bmN0aW9uKCl7dmFyIGU9aSh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYik7cmV0dXJue2g6MzYwKmUuaCxzOmUucyx2OmUudixhOnRoaXMuX2F9fSx0b0hzdlN0cmluZzpmdW5jdGlvbigpe3ZhciBlPWkodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpLHQ9TWF0aC5yb3VuZCgzNjAqZS5oKSxuPU1hdGgucm91bmQoMTAwKmUucykscj1NYXRoLnJvdW5kKDEwMCplLnYpO3JldHVybiAxPT10aGlzLl9hP1wiaHN2KFwiK3QrXCIsIFwiK24rXCIlLCBcIityK1wiJSlcIjpcImhzdmEoXCIrdCtcIiwgXCIrbitcIiUsIFwiK3IrXCIlLCBcIit0aGlzLl9yb3VuZEErXCIpXCJ9LHRvSHNsOmZ1bmN0aW9uKCl7dmFyIGU9byh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYik7cmV0dXJue2g6MzYwKmUuaCxzOmUucyxsOmUubCxhOnRoaXMuX2F9fSx0b0hzbFN0cmluZzpmdW5jdGlvbigpe3ZhciBlPW8odGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpLHQ9TWF0aC5yb3VuZCgzNjAqZS5oKSxuPU1hdGgucm91bmQoMTAwKmUucykscj1NYXRoLnJvdW5kKDEwMCplLmwpO3JldHVybiAxPT10aGlzLl9hP1wiaHNsKFwiK3QrXCIsIFwiK24rXCIlLCBcIityK1wiJSlcIjpcImhzbGEoXCIrdCtcIiwgXCIrbitcIiUsIFwiK3IrXCIlLCBcIit0aGlzLl9yb3VuZEErXCIpXCJ9LHRvSGV4OmZ1bmN0aW9uKGUpe3JldHVybiBhKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLGUpfSx0b0hleFN0cmluZzpmdW5jdGlvbihlKXtyZXR1cm5cIiNcIit0aGlzLnRvSGV4KGUpfSx0b0hleDg6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9W00oTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikpLE0oTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNikpLE0oTWF0aC5yb3VuZChuKS50b1N0cmluZygxNikpLE0oRShyKSldO3JldHVybiBvJiZpWzBdLmNoYXJBdCgwKT09aVswXS5jaGFyQXQoMSkmJmlbMV0uY2hhckF0KDApPT1pWzFdLmNoYXJBdCgxKSYmaVsyXS5jaGFyQXQoMCk9PWlbMl0uY2hhckF0KDEpJiZpWzNdLmNoYXJBdCgwKT09aVszXS5jaGFyQXQoMSk/aVswXS5jaGFyQXQoMCkraVsxXS5jaGFyQXQoMCkraVsyXS5jaGFyQXQoMCkraVszXS5jaGFyQXQoMCk6aS5qb2luKFwiXCIpfSh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYix0aGlzLl9hLGUpfSx0b0hleDhTdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuXCIjXCIrdGhpcy50b0hleDgoZSl9LHRvUmdiOmZ1bmN0aW9uKCl7cmV0dXJue3I6TWF0aC5yb3VuZCh0aGlzLl9yKSxnOk1hdGgucm91bmQodGhpcy5fZyksYjpNYXRoLnJvdW5kKHRoaXMuX2IpLGE6dGhpcy5fYX19LHRvUmdiU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDE9PXRoaXMuX2E/XCJyZ2IoXCIrTWF0aC5yb3VuZCh0aGlzLl9yKStcIiwgXCIrTWF0aC5yb3VuZCh0aGlzLl9nKStcIiwgXCIrTWF0aC5yb3VuZCh0aGlzLl9iKStcIilcIjpcInJnYmEoXCIrTWF0aC5yb3VuZCh0aGlzLl9yKStcIiwgXCIrTWF0aC5yb3VuZCh0aGlzLl9nKStcIiwgXCIrTWF0aC5yb3VuZCh0aGlzLl9iKStcIiwgXCIrdGhpcy5fcm91bmRBK1wiKVwifSx0b1BlcmNlbnRhZ2VSZ2I6ZnVuY3Rpb24oKXtyZXR1cm57cjpNYXRoLnJvdW5kKDEwMCpPKHRoaXMuX3IsMjU1KSkrXCIlXCIsZzpNYXRoLnJvdW5kKDEwMCpPKHRoaXMuX2csMjU1KSkrXCIlXCIsYjpNYXRoLnJvdW5kKDEwMCpPKHRoaXMuX2IsMjU1KSkrXCIlXCIsYTp0aGlzLl9hfX0sdG9QZXJjZW50YWdlUmdiU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDE9PXRoaXMuX2E/XCJyZ2IoXCIrTWF0aC5yb3VuZCgxMDAqTyh0aGlzLl9yLDI1NSkpK1wiJSwgXCIrTWF0aC5yb3VuZCgxMDAqTyh0aGlzLl9nLDI1NSkpK1wiJSwgXCIrTWF0aC5yb3VuZCgxMDAqTyh0aGlzLl9iLDI1NSkpK1wiJSlcIjpcInJnYmEoXCIrTWF0aC5yb3VuZCgxMDAqTyh0aGlzLl9yLDI1NSkpK1wiJSwgXCIrTWF0aC5yb3VuZCgxMDAqTyh0aGlzLl9nLDI1NSkpK1wiJSwgXCIrTWF0aC5yb3VuZCgxMDAqTyh0aGlzLl9iLDI1NSkpK1wiJSwgXCIrdGhpcy5fcm91bmRBK1wiKVwifSx0b05hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuX2E/XCJ0cmFuc3BhcmVudFwiOiEodGhpcy5fYTwxKSYmKGJbYSh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYiwhMCldfHwhMSl9LHRvRmlsdGVyOmZ1bmN0aW9uKGUpe3ZhciB0PVwiI1wiK2wodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsdGhpcy5fYSksbj10LG89dGhpcy5fZ3JhZGllbnRUeXBlP1wiR3JhZGllbnRUeXBlID0gMSwgXCI6XCJcIjtpZihlKXt2YXIgaT1yKGUpO249XCIjXCIrbChpLl9yLGkuX2csaS5fYixpLl9hKX1yZXR1cm5cInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChcIitvK1wic3RhcnRDb2xvcnN0cj1cIit0K1wiLGVuZENvbG9yc3RyPVwiK24rXCIpXCJ9LHRvU3RyaW5nOmZ1bmN0aW9uKGUpe3ZhciB0PSEhZTtlPWV8fHRoaXMuX2Zvcm1hdDt2YXIgbj0hMSxyPXRoaXMuX2E8MSYmdGhpcy5fYT49MDtyZXR1cm4gdHx8IXJ8fFwiaGV4XCIhPT1lJiZcImhleDZcIiE9PWUmJlwiaGV4M1wiIT09ZSYmXCJoZXg0XCIhPT1lJiZcImhleDhcIiE9PWUmJlwibmFtZVwiIT09ZT8oXCJyZ2JcIj09PWUmJihuPXRoaXMudG9SZ2JTdHJpbmcoKSksXCJwcmdiXCI9PT1lJiYobj10aGlzLnRvUGVyY2VudGFnZVJnYlN0cmluZygpKSxcImhleFwiIT09ZSYmXCJoZXg2XCIhPT1lfHwobj10aGlzLnRvSGV4U3RyaW5nKCkpLFwiaGV4M1wiPT09ZSYmKG49dGhpcy50b0hleFN0cmluZyghMCkpLFwiaGV4NFwiPT09ZSYmKG49dGhpcy50b0hleDhTdHJpbmcoITApKSxcImhleDhcIj09PWUmJihuPXRoaXMudG9IZXg4U3RyaW5nKCkpLFwibmFtZVwiPT09ZSYmKG49dGhpcy50b05hbWUoKSksXCJoc2xcIj09PWUmJihuPXRoaXMudG9Ic2xTdHJpbmcoKSksXCJoc3ZcIj09PWUmJihuPXRoaXMudG9Ic3ZTdHJpbmcoKSksbnx8dGhpcy50b0hleFN0cmluZygpKTpcIm5hbWVcIj09PWUmJjA9PT10aGlzLl9hP3RoaXMudG9OYW1lKCk6dGhpcy50b1JnYlN0cmluZygpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiByKHRoaXMudG9TdHJpbmcoKSl9LF9hcHBseU1vZGlmaWNhdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuPWUuYXBwbHkobnVsbCxbdGhpc10uY29uY2F0KFtdLnNsaWNlLmNhbGwodCkpKTtyZXR1cm4gdGhpcy5fcj1uLl9yLHRoaXMuX2c9bi5fZyx0aGlzLl9iPW4uX2IsdGhpcy5zZXRBbHBoYShuLl9hKSx0aGlzfSxsaWdodGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGQsYXJndW1lbnRzKX0sYnJpZ2h0ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oZixhcmd1bWVudHMpfSxkYXJrZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24ocCxhcmd1bWVudHMpfSxkZXNhdHVyYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGMsYXJndW1lbnRzKX0sc2F0dXJhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24ocyxhcmd1bWVudHMpfSxncmV5c2NhbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24odSxhcmd1bWVudHMpfSxzcGluOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKEMsYXJndW1lbnRzKX0sX2FwcGx5Q29tYmluYXRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5hcHBseShudWxsLFt0aGlzXS5jb25jYXQoW10uc2xpY2UuY2FsbCh0KSkpfSxhbmFsb2dvdXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihtLGFyZ3VtZW50cyl9LGNvbXBsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihoLGFyZ3VtZW50cyl9LG1vbm9jaHJvbWF0aWM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbih3LGFyZ3VtZW50cyl9LHNwbGl0Y29tcGxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKGcsYXJndW1lbnRzKX0sdHJpYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbih2LFszXSl9LHRldHJhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKHYsWzRdKX19LHIuZnJvbVJhdGlvPWZ1bmN0aW9uKHQsbil7aWYoXCJvYmplY3RcIj09ZSh0KSl7dmFyIG89e307Zm9yKHZhciBpIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShpKSYmKG9baV09XCJhXCI9PT1pP3RbaV06aih0W2ldKSk7dD1vfXJldHVybiByKHQsbil9LHIuZXF1YWxzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuISghZXx8IXQpJiZyKGUpLnRvUmdiU3RyaW5nKCk9PXIodCkudG9SZ2JTdHJpbmcoKX0sci5yYW5kb209ZnVuY3Rpb24oKXtyZXR1cm4gci5mcm9tUmF0aW8oe3I6TWF0aC5yYW5kb20oKSxnOk1hdGgucmFuZG9tKCksYjpNYXRoLnJhbmRvbSgpfSl9LHIubWl4PWZ1bmN0aW9uKGUsdCxuKXtuPTA9PT1uPzA6bnx8NTA7dmFyIG89cihlKS50b1JnYigpLGk9cih0KS50b1JnYigpLGE9bi8xMDA7cmV0dXJuIHIoe3I6KGkuci1vLnIpKmErby5yLGc6KGkuZy1vLmcpKmErby5nLGI6KGkuYi1vLmIpKmErby5iLGE6KGkuYS1vLmEpKmErby5hfSl9LHIucmVhZGFiaWxpdHk9ZnVuY3Rpb24oZSx0KXt2YXIgbj1yKGUpLG89cih0KTtyZXR1cm4oTWF0aC5tYXgobi5nZXRMdW1pbmFuY2UoKSxvLmdldEx1bWluYW5jZSgpKSsuMDUpLyhNYXRoLm1pbihuLmdldEx1bWluYW5jZSgpLG8uZ2V0THVtaW5hbmNlKCkpKy4wNSl9LHIuaXNSZWFkYWJsZT1mdW5jdGlvbihlLHQsbil7dmFyIG8saSxhLGwsYyxzPXIucmVhZGFiaWxpdHkoZSx0KTtzd2l0Y2goaT0hMSwoYT1uLFwiQUFcIiE9PShsPSgoYT1hfHx7bGV2ZWw6XCJBQVwiLHNpemU6XCJzbWFsbFwifSkubGV2ZWx8fFwiQUFcIikudG9VcHBlckNhc2UoKSkmJlwiQUFBXCIhPT1sJiYobD1cIkFBXCIpLFwic21hbGxcIiE9PShjPShhLnNpemV8fFwic21hbGxcIikudG9Mb3dlckNhc2UoKSkmJlwibGFyZ2VcIiE9PWMmJihjPVwic21hbGxcIiksbz17bGV2ZWw6bCxzaXplOmN9KS5sZXZlbCtvLnNpemUpe2Nhc2VcIkFBc21hbGxcIjpjYXNlXCJBQUFsYXJnZVwiOmk9cz49NC41O2JyZWFrO2Nhc2VcIkFBbGFyZ2VcIjppPXM+PTM7YnJlYWs7Y2FzZVwiQUFBc21hbGxcIjppPXM+PTd9cmV0dXJuIGl9LHIubW9zdFJlYWRhYmxlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbyxpLGEsbCxjPW51bGwscz0wO2k9KG49bnx8e30pLmluY2x1ZGVGYWxsYmFja0NvbG9ycyxhPW4ubGV2ZWwsbD1uLnNpemU7Zm9yKHZhciB1PTA7dTx0Lmxlbmd0aDt1KyspKG89ci5yZWFkYWJpbGl0eShlLHRbdV0pKT5zJiYocz1vLGM9cih0W3VdKSk7cmV0dXJuIHIuaXNSZWFkYWJsZShlLGMse2xldmVsOmEsc2l6ZTpsfSl8fCFpP2M6KG4uaW5jbHVkZUZhbGxiYWNrQ29sb3JzPSExLHIubW9zdFJlYWRhYmxlKGUsW1wiI2ZmZlwiLFwiIzAwMFwiXSxuKSl9O3ZhciB5PXIubmFtZXM9e2FsaWNlYmx1ZTpcImYwZjhmZlwiLGFudGlxdWV3aGl0ZTpcImZhZWJkN1wiLGFxdWE6XCIwZmZcIixhcXVhbWFyaW5lOlwiN2ZmZmQ0XCIsYXp1cmU6XCJmMGZmZmZcIixiZWlnZTpcImY1ZjVkY1wiLGJpc3F1ZTpcImZmZTRjNFwiLGJsYWNrOlwiMDAwXCIsYmxhbmNoZWRhbG1vbmQ6XCJmZmViY2RcIixibHVlOlwiMDBmXCIsYmx1ZXZpb2xldDpcIjhhMmJlMlwiLGJyb3duOlwiYTUyYTJhXCIsYnVybHl3b29kOlwiZGViODg3XCIsYnVybnRzaWVubmE6XCJlYTdlNWRcIixjYWRldGJsdWU6XCI1ZjllYTBcIixjaGFydHJldXNlOlwiN2ZmZjAwXCIsY2hvY29sYXRlOlwiZDI2OTFlXCIsY29yYWw6XCJmZjdmNTBcIixjb3JuZmxvd2VyYmx1ZTpcIjY0OTVlZFwiLGNvcm5zaWxrOlwiZmZmOGRjXCIsY3JpbXNvbjpcImRjMTQzY1wiLGN5YW46XCIwZmZcIixkYXJrYmx1ZTpcIjAwMDA4YlwiLGRhcmtjeWFuOlwiMDA4YjhiXCIsZGFya2dvbGRlbnJvZDpcImI4ODYwYlwiLGRhcmtncmF5OlwiYTlhOWE5XCIsZGFya2dyZWVuOlwiMDA2NDAwXCIsZGFya2dyZXk6XCJhOWE5YTlcIixkYXJra2hha2k6XCJiZGI3NmJcIixkYXJrbWFnZW50YTpcIjhiMDA4YlwiLGRhcmtvbGl2ZWdyZWVuOlwiNTU2YjJmXCIsZGFya29yYW5nZTpcImZmOGMwMFwiLGRhcmtvcmNoaWQ6XCI5OTMyY2NcIixkYXJrcmVkOlwiOGIwMDAwXCIsZGFya3NhbG1vbjpcImU5OTY3YVwiLGRhcmtzZWFncmVlbjpcIjhmYmM4ZlwiLGRhcmtzbGF0ZWJsdWU6XCI0ODNkOGJcIixkYXJrc2xhdGVncmF5OlwiMmY0ZjRmXCIsZGFya3NsYXRlZ3JleTpcIjJmNGY0ZlwiLGRhcmt0dXJxdW9pc2U6XCIwMGNlZDFcIixkYXJrdmlvbGV0OlwiOTQwMGQzXCIsZGVlcHBpbms6XCJmZjE0OTNcIixkZWVwc2t5Ymx1ZTpcIjAwYmZmZlwiLGRpbWdyYXk6XCI2OTY5NjlcIixkaW1ncmV5OlwiNjk2OTY5XCIsZG9kZ2VyYmx1ZTpcIjFlOTBmZlwiLGZpcmVicmljazpcImIyMjIyMlwiLGZsb3JhbHdoaXRlOlwiZmZmYWYwXCIsZm9yZXN0Z3JlZW46XCIyMjhiMjJcIixmdWNoc2lhOlwiZjBmXCIsZ2FpbnNib3JvOlwiZGNkY2RjXCIsZ2hvc3R3aGl0ZTpcImY4ZjhmZlwiLGdvbGQ6XCJmZmQ3MDBcIixnb2xkZW5yb2Q6XCJkYWE1MjBcIixncmF5OlwiODA4MDgwXCIsZ3JlZW46XCIwMDgwMDBcIixncmVlbnllbGxvdzpcImFkZmYyZlwiLGdyZXk6XCI4MDgwODBcIixob25leWRldzpcImYwZmZmMFwiLGhvdHBpbms6XCJmZjY5YjRcIixpbmRpYW5yZWQ6XCJjZDVjNWNcIixpbmRpZ286XCI0YjAwODJcIixpdm9yeTpcImZmZmZmMFwiLGtoYWtpOlwiZjBlNjhjXCIsbGF2ZW5kZXI6XCJlNmU2ZmFcIixsYXZlbmRlcmJsdXNoOlwiZmZmMGY1XCIsbGF3bmdyZWVuOlwiN2NmYzAwXCIsbGVtb25jaGlmZm9uOlwiZmZmYWNkXCIsbGlnaHRibHVlOlwiYWRkOGU2XCIsbGlnaHRjb3JhbDpcImYwODA4MFwiLGxpZ2h0Y3lhbjpcImUwZmZmZlwiLGxpZ2h0Z29sZGVucm9keWVsbG93OlwiZmFmYWQyXCIsbGlnaHRncmF5OlwiZDNkM2QzXCIsbGlnaHRncmVlbjpcIjkwZWU5MFwiLGxpZ2h0Z3JleTpcImQzZDNkM1wiLGxpZ2h0cGluazpcImZmYjZjMVwiLGxpZ2h0c2FsbW9uOlwiZmZhMDdhXCIsbGlnaHRzZWFncmVlbjpcIjIwYjJhYVwiLGxpZ2h0c2t5Ymx1ZTpcIjg3Y2VmYVwiLGxpZ2h0c2xhdGVncmF5OlwiNzg5XCIsbGlnaHRzbGF0ZWdyZXk6XCI3ODlcIixsaWdodHN0ZWVsYmx1ZTpcImIwYzRkZVwiLGxpZ2h0eWVsbG93OlwiZmZmZmUwXCIsbGltZTpcIjBmMFwiLGxpbWVncmVlbjpcIjMyY2QzMlwiLGxpbmVuOlwiZmFmMGU2XCIsbWFnZW50YTpcImYwZlwiLG1hcm9vbjpcIjgwMDAwMFwiLG1lZGl1bWFxdWFtYXJpbmU6XCI2NmNkYWFcIixtZWRpdW1ibHVlOlwiMDAwMGNkXCIsbWVkaXVtb3JjaGlkOlwiYmE1NWQzXCIsbWVkaXVtcHVycGxlOlwiOTM3MGRiXCIsbWVkaXVtc2VhZ3JlZW46XCIzY2IzNzFcIixtZWRpdW1zbGF0ZWJsdWU6XCI3YjY4ZWVcIixtZWRpdW1zcHJpbmdncmVlbjpcIjAwZmE5YVwiLG1lZGl1bXR1cnF1b2lzZTpcIjQ4ZDFjY1wiLG1lZGl1bXZpb2xldHJlZDpcImM3MTU4NVwiLG1pZG5pZ2h0Ymx1ZTpcIjE5MTk3MFwiLG1pbnRjcmVhbTpcImY1ZmZmYVwiLG1pc3R5cm9zZTpcImZmZTRlMVwiLG1vY2Nhc2luOlwiZmZlNGI1XCIsbmF2YWpvd2hpdGU6XCJmZmRlYWRcIixuYXZ5OlwiMDAwMDgwXCIsb2xkbGFjZTpcImZkZjVlNlwiLG9saXZlOlwiODA4MDAwXCIsb2xpdmVkcmFiOlwiNmI4ZTIzXCIsb3JhbmdlOlwiZmZhNTAwXCIsb3JhbmdlcmVkOlwiZmY0NTAwXCIsb3JjaGlkOlwiZGE3MGQ2XCIscGFsZWdvbGRlbnJvZDpcImVlZThhYVwiLHBhbGVncmVlbjpcIjk4ZmI5OFwiLHBhbGV0dXJxdW9pc2U6XCJhZmVlZWVcIixwYWxldmlvbGV0cmVkOlwiZGI3MDkzXCIscGFwYXlhd2hpcDpcImZmZWZkNVwiLHBlYWNocHVmZjpcImZmZGFiOVwiLHBlcnU6XCJjZDg1M2ZcIixwaW5rOlwiZmZjMGNiXCIscGx1bTpcImRkYTBkZFwiLHBvd2RlcmJsdWU6XCJiMGUwZTZcIixwdXJwbGU6XCI4MDAwODBcIixyZWJlY2NhcHVycGxlOlwiNjYzMzk5XCIscmVkOlwiZjAwXCIscm9zeWJyb3duOlwiYmM4ZjhmXCIscm95YWxibHVlOlwiNDE2OWUxXCIsc2FkZGxlYnJvd246XCI4YjQ1MTNcIixzYWxtb246XCJmYTgwNzJcIixzYW5keWJyb3duOlwiZjRhNDYwXCIsc2VhZ3JlZW46XCIyZThiNTdcIixzZWFzaGVsbDpcImZmZjVlZVwiLHNpZW5uYTpcImEwNTIyZFwiLHNpbHZlcjpcImMwYzBjMFwiLHNreWJsdWU6XCI4N2NlZWJcIixzbGF0ZWJsdWU6XCI2YTVhY2RcIixzbGF0ZWdyYXk6XCI3MDgwOTBcIixzbGF0ZWdyZXk6XCI3MDgwOTBcIixzbm93OlwiZmZmYWZhXCIsc3ByaW5nZ3JlZW46XCIwMGZmN2ZcIixzdGVlbGJsdWU6XCI0NjgyYjRcIix0YW46XCJkMmI0OGNcIix0ZWFsOlwiMDA4MDgwXCIsdGhpc3RsZTpcImQ4YmZkOFwiLHRvbWF0bzpcImZmNjM0N1wiLHR1cnF1b2lzZTpcIjQwZTBkMFwiLHZpb2xldDpcImVlODJlZVwiLHdoZWF0OlwiZjVkZWIzXCIsd2hpdGU6XCJmZmZcIix3aGl0ZXNtb2tlOlwiZjVmNWY1XCIseWVsbG93OlwiZmYwXCIseWVsbG93Z3JlZW46XCI5YWNkMzJcIn0sYj1yLmhleE5hbWVzPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W2Vbbl1dPW4pO3JldHVybiB0fSh5KTtmdW5jdGlvbiB4KGUpe3JldHVybiBlPXBhcnNlRmxvYXQoZSksKGlzTmFOKGUpfHxlPDB8fGU+MSkmJihlPTEpLGV9ZnVuY3Rpb24gTyhlLHQpeyhmdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmLTEhPWUuaW5kZXhPZihcIi5cIikmJjE9PT1wYXJzZUZsb2F0KGUpfSkoZSkmJihlPVwiMTAwJVwiKTt2YXIgbj1mdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmLTEhPWUuaW5kZXhPZihcIiVcIil9KGUpO3JldHVybiBlPU1hdGgubWluKHQsTWF0aC5tYXgoMCxwYXJzZUZsb2F0KGUpKSksbiYmKGU9cGFyc2VJbnQoZSp0LDEwKS8xMDApLE1hdGguYWJzKGUtdCk8MWUtNj8xOmUldC9wYXJzZUZsb2F0KHQpfWZ1bmN0aW9uIEwoZSl7cmV0dXJuIE1hdGgubWluKDEsTWF0aC5tYXgoMCxlKSl9ZnVuY3Rpb24gXyhlKXtyZXR1cm4gcGFyc2VJbnQoZSwxNil9ZnVuY3Rpb24gTShlKXtyZXR1cm4gMT09ZS5sZW5ndGg/XCIwXCIrZTpcIlwiK2V9ZnVuY3Rpb24gaihlKXtyZXR1cm4gZTw9MSYmKGU9MTAwKmUrXCIlXCIpLGV9ZnVuY3Rpb24gRShlKXtyZXR1cm4gTWF0aC5yb3VuZCgyNTUqcGFyc2VGbG9hdChlKSkudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIFMoZSl7cmV0dXJuIF8oZSkvMjU1fXZhciBQLEgsayxWPShIPVwiW1xcXFxzfFxcXFwoXSsoXCIrKFA9XCIoPzpbLVxcXFwrXT9cXFxcZCpcXFxcLlxcXFxkKyU/KXwoPzpbLVxcXFwrXT9cXFxcZCslPylcIikrXCIpWyx8XFxcXHNdKyhcIitQK1wiKVssfFxcXFxzXSsoXCIrUCtcIilcXFxccypcXFxcKT9cIixrPVwiW1xcXFxzfFxcXFwoXSsoXCIrUCtcIilbLHxcXFxcc10rKFwiK1ArXCIpWyx8XFxcXHNdKyhcIitQK1wiKVssfFxcXFxzXSsoXCIrUCtcIilcXFxccypcXFxcKT9cIix7Q1NTX1VOSVQ6bmV3IFJlZ0V4cChQKSxyZ2I6bmV3IFJlZ0V4cChcInJnYlwiK0gpLHJnYmE6bmV3IFJlZ0V4cChcInJnYmFcIitrKSxoc2w6bmV3IFJlZ0V4cChcImhzbFwiK0gpLGhzbGE6bmV3IFJlZ0V4cChcImhzbGFcIitrKSxoc3Y6bmV3IFJlZ0V4cChcImhzdlwiK0gpLGhzdmE6bmV3IFJlZ0V4cChcImhzdmFcIitrKSxoZXgzOi9eIz8oWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkkLyxoZXg2Oi9eIz8oWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkkLyxoZXg0Oi9eIz8oWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pJC8saGV4ODovXiM/KFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KSQvfSk7ZnVuY3Rpb24gUihlKXtyZXR1cm4hIVYuQ1NTX1VOSVQuZXhlYyhlKX1yZXR1cm4gcn0oKX19LG89e307ZnVuY3Rpb24gaShlKXt2YXIgdD1vW2VdO2lmKHZvaWQgMCE9PXQpcmV0dXJuIHQuZXhwb3J0czt2YXIgbj1vW2VdPXtpZDplLGV4cG9ydHM6e319O3JldHVybiByW2VdLmNhbGwobi5leHBvcnRzLG4sbi5leHBvcnRzLGkpLG4uZXhwb3J0c31pLm49ZT0+e3ZhciB0PWUmJmUuX19lc01vZHVsZT8oKT0+ZS5kZWZhdWx0OigpPT5lO3JldHVybiBpLmQodCx7YTp0fSksdH0saS5kPShlLHQpPT57Zm9yKHZhciBuIGluIHQpaS5vKHQsbikmJiFpLm8oZSxuKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTohMCxnZXQ6dFtuXX0pfSxpLmc9ZnVuY3Rpb24oKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsVGhpcylyZXR1cm4gZ2xvYmFsVGhpczt0cnl7cmV0dXJuIHRoaXN8fG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCl9Y2F0Y2goZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93fX0oKSxpLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpLGkucj1lPT57XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX07dmFyIGE9aSgzNDEpLGw9dDtmb3IodmFyIGMgaW4gYSlsW2NdPWFbY107YS5fX2VzTW9kdWxlJiZPYmplY3QuZGVmaW5lUHJvcGVydHkobCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sMTk4OihlLHQsbik9Pnt2YXIgcj1OYU4sbz1cIltvYmplY3QgU3ltYm9sXVwiLGk9L15cXHMrfFxccyskL2csYT0vXlstK10weFswLTlhLWZdKyQvaSxsPS9eMGJbMDFdKyQvaSxjPS9eMG9bMC03XSskL2kscz1wYXJzZUludCx1PVwib2JqZWN0XCI9PXR5cGVvZiBuLmcmJm4uZyYmbi5nLk9iamVjdD09PU9iamVjdCYmbi5nLGQ9XCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGY9dXx8ZHx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpLHA9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxDPU1hdGgubWF4LGg9TWF0aC5taW4sdj1mdW5jdGlvbigpe3JldHVybiBmLkRhdGUubm93KCl9O2Z1bmN0aW9uIGcoZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuISFlJiYoXCJvYmplY3RcIj09dHx8XCJmdW5jdGlvblwiPT10KX1mdW5jdGlvbiBtKGUpe2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXJldHVybiBlO2lmKGZ1bmN0aW9uKGUpe3JldHVyblwic3ltYm9sXCI9PXR5cGVvZiBlfHxmdW5jdGlvbihlKXtyZXR1cm4hIWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlfShlKSYmcC5jYWxsKGUpPT1vfShlKSlyZXR1cm4gcjtpZihnKGUpKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnZhbHVlT2Y/ZS52YWx1ZU9mKCk6ZTtlPWcodCk/dCtcIlwiOnR9aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpcmV0dXJuIDA9PT1lP2U6K2U7ZT1lLnJlcGxhY2UoaSxcIlwiKTt2YXIgbj1sLnRlc3QoZSk7cmV0dXJuIG58fGMudGVzdChlKT9zKGUuc2xpY2UoMiksbj8yOjgpOmEudGVzdChlKT9yOitlfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpLGEsbCxjLHM9MCx1PSExLGQ9ITEsZj0hMDtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCBhIGZ1bmN0aW9uXCIpO2Z1bmN0aW9uIHAodCl7dmFyIG49cixpPW87cmV0dXJuIHI9bz12b2lkIDAscz10LGE9ZS5hcHBseShpLG4pfWZ1bmN0aW9uIHcoZSl7dmFyIG49ZS1jO3JldHVybiB2b2lkIDA9PT1jfHxuPj10fHxuPDB8fGQmJmUtcz49aX1mdW5jdGlvbiB5KCl7dmFyIGU9digpO2lmKHcoZSkpcmV0dXJuIGIoZSk7bD1zZXRUaW1lb3V0KHksZnVuY3Rpb24oZSl7dmFyIG49dC0oZS1jKTtyZXR1cm4gZD9oKG4saS0oZS1zKSk6bn0oZSkpfWZ1bmN0aW9uIGIoZSl7cmV0dXJuIGw9dm9pZCAwLGYmJnI/cChlKToocj1vPXZvaWQgMCxhKX1mdW5jdGlvbiB4KCl7dmFyIGU9digpLG49dyhlKTtpZihyPWFyZ3VtZW50cyxvPXRoaXMsYz1lLG4pe2lmKHZvaWQgMD09PWwpcmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBzPWUsbD1zZXRUaW1lb3V0KHksdCksdT9wKGUpOmF9KGMpO2lmKGQpcmV0dXJuIGw9c2V0VGltZW91dCh5LHQpLHAoYyl9cmV0dXJuIHZvaWQgMD09PWwmJihsPXNldFRpbWVvdXQoeSx0KSksYX1yZXR1cm4gdD1tKHQpfHwwLGcobikmJih1PSEhbi5sZWFkaW5nLGk9KGQ9XCJtYXhXYWl0XCJpbiBuKT9DKG0obi5tYXhXYWl0KXx8MCx0KTppLGY9XCJ0cmFpbGluZ1wiaW4gbj8hIW4udHJhaWxpbmc6ZikseC5jYW5jZWw9ZnVuY3Rpb24oKXt2b2lkIDAhPT1sJiZjbGVhclRpbWVvdXQobCkscz0wLHI9Yz1vPWw9dm9pZCAwfSx4LmZsdXNoPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PWw/YTpiKHYoKSl9LHh9fSw1MjU6ZT0+e1widXNlIHN0cmljdFwiO3ZhciB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsbj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHI9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIGU9bmV3IFN0cmluZyhcImFiY1wiKTtpZihlWzVdPVwiZGVcIixcIjVcIj09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBdKXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFtcIl9cIitTdHJpbmcuZnJvbUNoYXJDb2RlKG4pXT1uO2lmKFwiMDEyMzQ1Njc4OVwiIT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pKS5qb2luKFwiXCIpKXJldHVybiExO3ZhciByPXt9O3JldHVyblwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIi5zcGxpdChcIlwiKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyW2VdPWV9KSksXCJhYmNkZWZnaGlqa2xtbm9wcXJzdFwiPT09T2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxyKSkuam9pbihcIlwiKX1jYXRjaChlKXtyZXR1cm4hMX19KCk/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihlLG8pe2Zvcih2YXIgaSxhLGw9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWRcIik7cmV0dXJuIE9iamVjdChlKX0oZSksYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe2Zvcih2YXIgcyBpbiBpPU9iamVjdChhcmd1bWVudHNbY10pKW4uY2FsbChpLHMpJiYobFtzXT1pW3NdKTtpZih0KXthPXQoaSk7Zm9yKHZhciB1PTA7dTxhLmxlbmd0aDt1Kyspci5jYWxsKGksYVt1XSkmJihsW2FbdV1dPWlbYVt1XV0pfX1yZXR1cm4gbH19LDcwMjooZSx0KT0+e1widXNlIHN0cmljdFwiO3ZhciBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcixyPW4/U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIik6NjAxMDMsbz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIik6NjAxMDYsaT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKTo2MDEwNyxhPW4/U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpOjYwMTA4LGw9bj9TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIik6NjAxMTQsYz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKTo2MDEwOSxzPW4/U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIik6NjAxMTAsdT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5hc3luY19tb2RlXCIpOjYwMTExLGQ9bj9TeW1ib2wuZm9yKFwicmVhY3QuY29uY3VycmVudF9tb2RlXCIpOjYwMTExLGY9bj9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIscD1uP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxDPW4/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIik6NjAxMjAsaD1uP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LHY9bj9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNixnPW4/U3ltYm9sLmZvcihcInJlYWN0LmJsb2NrXCIpOjYwMTIxLG09bj9TeW1ib2wuZm9yKFwicmVhY3QuZnVuZGFtZW50YWxcIik6NjAxMTcsdz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5yZXNwb25kZXJcIik6NjAxMTgseT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTo2MDExOTtmdW5jdGlvbiBiKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSl7dmFyIHQ9ZS4kJHR5cGVvZjtzd2l0Y2godCl7Y2FzZSByOnN3aXRjaChlPWUudHlwZSl7Y2FzZSB1OmNhc2UgZDpjYXNlIGk6Y2FzZSBsOmNhc2UgYTpjYXNlIHA6cmV0dXJuIGU7ZGVmYXVsdDpzd2l0Y2goZT1lJiZlLiQkdHlwZW9mKXtjYXNlIHM6Y2FzZSBmOmNhc2UgdjpjYXNlIGg6Y2FzZSBjOnJldHVybiBlO2RlZmF1bHQ6cmV0dXJuIHR9fWNhc2UgbzpyZXR1cm4gdH19fWZ1bmN0aW9uIHgoZSl7cmV0dXJuIGIoZSk9PT1kfXQuRm9yd2FyZFJlZj1mLHQuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlfHxlPT09aXx8ZT09PWR8fGU9PT1sfHxlPT09YXx8ZT09PXB8fGU9PT1DfHxcIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUmJihlLiQkdHlwZW9mPT09dnx8ZS4kJHR5cGVvZj09PWh8fGUuJCR0eXBlb2Y9PT1jfHxlLiQkdHlwZW9mPT09c3x8ZS4kJHR5cGVvZj09PWZ8fGUuJCR0eXBlb2Y9PT1tfHxlLiQkdHlwZW9mPT09d3x8ZS4kJHR5cGVvZj09PXl8fGUuJCR0eXBlb2Y9PT1nKX19LDE4NTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4oNzAyKX0sNTM1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDUyNSksbz02MDEwMyxpPTYwMTA2O3QuRnJhZ21lbnQ9NjAxMDcsdC5TdHJpY3RNb2RlPTYwMTA4LHQuUHJvZmlsZXI9NjAxMTQ7dmFyIGE9NjAxMDksbD02MDExMCxjPTYwMTEyO3QuU3VzcGVuc2U9NjAxMTM7dmFyIHM9NjAxMTUsdT02MDExNjtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3Ipe3ZhciBkPVN5bWJvbC5mb3I7bz1kKFwicmVhY3QuZWxlbWVudFwiKSxpPWQoXCJyZWFjdC5wb3J0YWxcIiksdC5GcmFnbWVudD1kKFwicmVhY3QuZnJhZ21lbnRcIiksdC5TdHJpY3RNb2RlPWQoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSx0LlByb2ZpbGVyPWQoXCJyZWFjdC5wcm9maWxlclwiKSxhPWQoXCJyZWFjdC5wcm92aWRlclwiKSxsPWQoXCJyZWFjdC5jb250ZXh0XCIpLGM9ZChcInJlYWN0LmZvcndhcmRfcmVmXCIpLHQuU3VzcGVuc2U9ZChcInJlYWN0LnN1c3BlbnNlXCIpLHM9ZChcInJlYWN0Lm1lbW9cIiksdT1kKFwicmVhY3QubGF6eVwiKX12YXIgZj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBwKGUpe2Zvcih2YXIgdD1cImh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PVwiK2Usbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdCs9XCImYXJnc1tdPVwiK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbbl0pO3JldHVyblwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiK2UrXCI7IHZpc2l0IFwiK3QrXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLlwifXZhciBDPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxoPXt9O2Z1bmN0aW9uIHYoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9aCx0aGlzLnVwZGF0ZXI9bnx8Q31mdW5jdGlvbiBnKCl7fWZ1bmN0aW9uIG0oZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9aCx0aGlzLnVwZGF0ZXI9bnx8Q312LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LHYucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPWUpdGhyb3cgRXJyb3IocCg4NSkpO3RoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxlLHQsXCJzZXRTdGF0ZVwiKX0sdi5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLGUsXCJmb3JjZVVwZGF0ZVwiKX0sZy5wcm90b3R5cGU9di5wcm90b3R5cGU7dmFyIHc9bS5wcm90b3R5cGU9bmV3IGc7dy5jb25zdHJ1Y3Rvcj1tLHIodyx2LnByb3RvdHlwZSksdy5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgeT17Y3VycmVudDpudWxsfSxiPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkseD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIE8oZSx0LG4pe3ZhciByLGk9e30sYT1udWxsLGw9bnVsbDtpZihudWxsIT10KWZvcihyIGluIHZvaWQgMCE9PXQucmVmJiYobD10LnJlZiksdm9pZCAwIT09dC5rZXkmJihhPVwiXCIrdC5rZXkpLHQpYi5jYWxsKHQscikmJiF4Lmhhc093blByb3BlcnR5KHIpJiYoaVtyXT10W3JdKTt2YXIgYz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWMpaS5jaGlsZHJlbj1uO2Vsc2UgaWYoMTxjKXtmb3IodmFyIHM9QXJyYXkoYyksdT0wO3U8Yzt1Kyspc1t1XT1hcmd1bWVudHNbdSsyXTtpLmNoaWxkcmVuPXN9aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKHIgaW4gYz1lLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT1pW3JdJiYoaVtyXT1jW3JdKTtyZXR1cm57JCR0eXBlb2Y6byx0eXBlOmUsa2V5OmEscmVmOmwscHJvcHM6aSxfb3duZXI6eS5jdXJyZW50fX1mdW5jdGlvbiBMKGUpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmZS4kJHR5cGVvZj09PW99dmFyIF89L1xcLysvZztmdW5jdGlvbiBNKGUsdCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lJiZudWxsIT1lLmtleT9mdW5jdGlvbihlKXt2YXIgdD17XCI9XCI6XCI9MFwiLFwiOlwiOlwiPTJcIn07cmV0dXJuXCIkXCIrZS5yZXBsYWNlKC9bPTpdL2csKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkpfShcIlwiK2Uua2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBqKGUsdCxuLHIsYSl7dmFyIGw9dHlwZW9mIGU7XCJ1bmRlZmluZWRcIiE9PWwmJlwiYm9vbGVhblwiIT09bHx8KGU9bnVsbCk7dmFyIGM9ITE7aWYobnVsbD09PWUpYz0hMDtlbHNlIHN3aXRjaChsKXtjYXNlXCJzdHJpbmdcIjpjYXNlXCJudW1iZXJcIjpjPSEwO2JyZWFrO2Nhc2VcIm9iamVjdFwiOnN3aXRjaChlLiQkdHlwZW9mKXtjYXNlIG86Y2FzZSBpOmM9ITB9fWlmKGMpcmV0dXJuIGE9YShjPWUpLGU9XCJcIj09PXI/XCIuXCIrTShjLDApOnIsQXJyYXkuaXNBcnJheShhKT8obj1cIlwiLG51bGwhPWUmJihuPWUucmVwbGFjZShfLFwiJCYvXCIpK1wiL1wiKSxqKGEsdCxuLFwiXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpKTpudWxsIT1hJiYoTChhKSYmKGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm57JCR0eXBlb2Y6byx0eXBlOmUudHlwZSxrZXk6dCxyZWY6ZS5yZWYscHJvcHM6ZS5wcm9wcyxfb3duZXI6ZS5fb3duZXJ9fShhLG4rKCFhLmtleXx8YyYmYy5rZXk9PT1hLmtleT9cIlwiOihcIlwiK2Eua2V5KS5yZXBsYWNlKF8sXCIkJi9cIikrXCIvXCIpK2UpKSx0LnB1c2goYSkpLDE7aWYoYz0wLHI9XCJcIj09PXI/XCIuXCI6citcIjpcIixBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgcz0wO3M8ZS5sZW5ndGg7cysrKXt2YXIgdT1yK00obD1lW3NdLHMpO2MrPWoobCx0LG4sdSxhKX1lbHNlIGlmKHU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHxcIm9iamVjdFwiIT10eXBlb2YgZT9udWxsOlwiZnVuY3Rpb25cIj09dHlwZW9mKGU9ZiYmZVtmXXx8ZVtcIkBAaXRlcmF0b3JcIl0pP2U6bnVsbH0oZSksXCJmdW5jdGlvblwiPT10eXBlb2YgdSlmb3IoZT11LmNhbGwoZSkscz0wOyEobD1lLm5leHQoKSkuZG9uZTspYys9aihsPWwudmFsdWUsdCxuLHU9citNKGwscysrKSxhKTtlbHNlIGlmKFwib2JqZWN0XCI9PT1sKXRocm93IHQ9XCJcIitlLEVycm9yKHAoMzEsXCJbb2JqZWN0IE9iamVjdF1cIj09PXQ/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyhlKS5qb2luKFwiLCBcIikrXCJ9XCI6dCkpO3JldHVybiBjfWZ1bmN0aW9uIEUoZSx0LG4pe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIHI9W10sbz0wO3JldHVybiBqKGUscixcIlwiLFwiXCIsKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNhbGwobixlLG8rKyl9KSkscn1mdW5jdGlvbiBTKGUpe2lmKC0xPT09ZS5fc3RhdHVzKXt2YXIgdD1lLl9yZXN1bHQ7dD10KCksZS5fc3RhdHVzPTAsZS5fcmVzdWx0PXQsdC50aGVuKChmdW5jdGlvbih0KXswPT09ZS5fc3RhdHVzJiYodD10LmRlZmF1bHQsZS5fc3RhdHVzPTEsZS5fcmVzdWx0PXQpfSksKGZ1bmN0aW9uKHQpezA9PT1lLl9zdGF0dXMmJihlLl9zdGF0dXM9MixlLl9yZXN1bHQ9dCl9KSl9aWYoMT09PWUuX3N0YXR1cylyZXR1cm4gZS5fcmVzdWx0O3Rocm93IGUuX3Jlc3VsdH12YXIgUD17Y3VycmVudDpudWxsfTtmdW5jdGlvbiBIKCl7dmFyIGU9UC5jdXJyZW50O2lmKG51bGw9PT1lKXRocm93IEVycm9yKHAoMzIxKSk7cmV0dXJuIGV9dmFyIGs9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6UCxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzp7dHJhbnNpdGlvbjowfSxSZWFjdEN1cnJlbnRPd25lcjp5LElzU29tZVJlbmRlcmVyQWN0aW5nOntjdXJyZW50OiExfSxhc3NpZ246cn07dC5DaGlsZHJlbj17bWFwOkUsZm9yRWFjaDpmdW5jdGlvbihlLHQsbil7RShlLChmdW5jdGlvbigpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksbil9LGNvdW50OmZ1bmN0aW9uKGUpe3ZhciB0PTA7cmV0dXJuIEUoZSwoZnVuY3Rpb24oKXt0Kyt9KSksdH0sdG9BcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gRShlLChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKXx8W119LG9ubHk6ZnVuY3Rpb24oZSl7aWYoIUwoZSkpdGhyb3cgRXJyb3IocCgxNDMpKTtyZXR1cm4gZX19LHQuQ29tcG9uZW50PXYsdC5QdXJlQ29tcG9uZW50PW0sdC5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD1rLHQuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuKXtpZihudWxsPT1lKXRocm93IEVycm9yKHAoMjY3LGUpKTt2YXIgaT1yKHt9LGUucHJvcHMpLGE9ZS5rZXksbD1lLnJlZixjPWUuX293bmVyO2lmKG51bGwhPXQpe2lmKHZvaWQgMCE9PXQucmVmJiYobD10LnJlZixjPXkuY3VycmVudCksdm9pZCAwIT09dC5rZXkmJihhPVwiXCIrdC5rZXkpLGUudHlwZSYmZS50eXBlLmRlZmF1bHRQcm9wcyl2YXIgcz1lLnR5cGUuZGVmYXVsdFByb3BzO2Zvcih1IGluIHQpYi5jYWxsKHQsdSkmJiF4Lmhhc093blByb3BlcnR5KHUpJiYoaVt1XT12b2lkIDA9PT10W3VdJiZ2b2lkIDAhPT1zP3NbdV06dFt1XSl9dmFyIHU9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT11KWkuY2hpbGRyZW49bjtlbHNlIGlmKDE8dSl7cz1BcnJheSh1KTtmb3IodmFyIGQ9MDtkPHU7ZCsrKXNbZF09YXJndW1lbnRzW2QrMl07aS5jaGlsZHJlbj1zfXJldHVybnskJHR5cGVvZjpvLHR5cGU6ZS50eXBlLGtleTphLHJlZjpsLHByb3BzOmksX293bmVyOmN9fSx0LmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bnVsbCksKGU9eyQkdHlwZW9mOmwsX2NhbGN1bGF0ZUNoYW5nZWRCaXRzOnQsX2N1cnJlbnRWYWx1ZTplLF9jdXJyZW50VmFsdWUyOmUsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsfSkuUHJvdmlkZXI9eyQkdHlwZW9mOmEsX2NvbnRleHQ6ZX0sZS5Db25zdW1lcj1lfSx0LmNyZWF0ZUVsZW1lbnQ9Tyx0LmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9Ty5iaW5kKG51bGwsZSk7cmV0dXJuIHQudHlwZT1lLHR9LHQuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19LHQuZm9yd2FyZFJlZj1mdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6YyxyZW5kZXI6ZX19LHQuaXNWYWxpZEVsZW1lbnQ9TCx0Lmxhenk9ZnVuY3Rpb24oZSl7cmV0dXJueyQkdHlwZW9mOnUsX3BheWxvYWQ6e19zdGF0dXM6LTEsX3Jlc3VsdDplfSxfaW5pdDpTfX0sdC5tZW1vPWZ1bmN0aW9uKGUsdCl7cmV0dXJueyQkdHlwZW9mOnMsdHlwZTplLGNvbXBhcmU6dm9pZCAwPT09dD9udWxsOnR9fSx0LnVzZUNhbGxiYWNrPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEgoKS51c2VDYWxsYmFjayhlLHQpfSx0LnVzZUNvbnRleHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSCgpLnVzZUNvbnRleHQoZSx0KX0sdC51c2VEZWJ1Z1ZhbHVlPWZ1bmN0aW9uKCl7fSx0LnVzZUVmZmVjdD1mdW5jdGlvbihlLHQpe3JldHVybiBIKCkudXNlRWZmZWN0KGUsdCl9LHQudXNlSW1wZXJhdGl2ZUhhbmRsZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIEgoKS51c2VJbXBlcmF0aXZlSGFuZGxlKGUsdCxuKX0sdC51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSCgpLnVzZUxheW91dEVmZmVjdChlLHQpfSx0LnVzZU1lbW89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSCgpLnVzZU1lbW8oZSx0KX0sdC51c2VSZWR1Y2VyPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gSCgpLnVzZVJlZHVjZXIoZSx0LG4pfSx0LnVzZVJlZj1mdW5jdGlvbihlKXtyZXR1cm4gSCgpLnVzZVJlZihlKX0sdC51c2VTdGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gSCgpLnVzZVN0YXRlKGUpfSx0LnZlcnNpb249XCIxNy4wLjJcIn0sMzc4OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9big1MzUpfSw5MjE6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCx7U2VydmVyU3R5bGVTaGVldDooKT0+cHQsU3R5bGVTaGVldENvbnN1bWVyOigpPT5odCxTdHlsZVNoZWV0Q29udGV4dDooKT0+Q3QsU3R5bGVTaGVldE1hbmFnZXI6KCk9PnZ0LFRoZW1lQ29uc3VtZXI6KCk9PmR0LFRoZW1lQ29udGV4dDooKT0+dXQsVGhlbWVQcm92aWRlcjooKT0+ZnQsX19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0hBVU5URURfQllfU1BPT0tZX0dIT1NUUzooKT0+TXQsY3JlYXRlR2xvYmFsU3R5bGU6KCk9Pnh0LGNzczooKT0+VGUsZGVmYXVsdDooKT0+anQsaXNTdHlsZWRDb21wb25lbnQ6KCk9PkYsa2V5ZnJhbWVzOigpPT5MdCx3aXRoVGhlbWU6KCk9Pl90fSk7dmFyIHI9big5NDYpLG89bi5uKHIpLGk9bigyNDYpLGE9bi5uKGkpLGw9bigzNzgpO2NvbnN0IGM9e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OjEsYm9yZGVySW1hZ2VPdXRzZXQ6MSxib3JkZXJJbWFnZVNsaWNlOjEsYm9yZGVySW1hZ2VXaWR0aDoxLGJveEZsZXg6MSxib3hGbGV4R3JvdXA6MSxib3hPcmRpbmFsR3JvdXA6MSxjb2x1bW5Db3VudDoxLGNvbHVtbnM6MSxmbGV4OjEsZmxleEdyb3c6MSxmbGV4UG9zaXRpdmU6MSxmbGV4U2hyaW5rOjEsZmxleE5lZ2F0aXZlOjEsZmxleE9yZGVyOjEsZ3JpZFJvdzoxLGdyaWRSb3dFbmQ6MSxncmlkUm93U3BhbjoxLGdyaWRSb3dTdGFydDoxLGdyaWRDb2x1bW46MSxncmlkQ29sdW1uRW5kOjEsZ3JpZENvbHVtblNwYW46MSxncmlkQ29sdW1uU3RhcnQ6MSxtc0dyaWRSb3c6MSxtc0dyaWRSb3dTcGFuOjEsbXNHcmlkQ29sdW1uOjEsbXNHcmlkQ29sdW1uU3BhbjoxLGZvbnRXZWlnaHQ6MSxsaW5lSGVpZ2h0OjEsb3BhY2l0eToxLG9yZGVyOjEsb3JwaGFuczoxLHRhYlNpemU6MSx3aWRvd3M6MSx6SW5kZXg6MSx6b29tOjEsV2Via2l0TGluZUNsYW1wOjEsZmlsbE9wYWNpdHk6MSxmbG9vZE9wYWNpdHk6MSxzdG9wT3BhY2l0eToxLHN0cm9rZURhc2hhcnJheToxLHN0cm9rZURhc2hvZmZzZXQ6MSxzdHJva2VNaXRlcmxpbWl0OjEsc3Ryb2tlT3BhY2l0eToxLHN0cm9rZVdpZHRoOjF9O3ZhciBzPW4oMTg1KSx1PU51bWJlci5pc05hTnx8ZnVuY3Rpb24oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJmUhPWV9O2Z1bmN0aW9uIGQoZSx0KXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKHI9ZVtuXSxvPXRbbl0sIShyPT09b3x8dShyKSYmdShvKSkpcmV0dXJuITE7dmFyIHIsbztyZXR1cm4hMH1jb25zdCBmPWZ1bmN0aW9uKGUsdCl7dmFyIG47dm9pZCAwPT09dCYmKHQ9ZCk7dmFyIHIsbz1bXSxpPSExO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgYT1bXSxsPTA7bDxhcmd1bWVudHMubGVuZ3RoO2wrKylhW2xdPWFyZ3VtZW50c1tsXTtyZXR1cm4gaSYmbj09PXRoaXMmJnQoYSxvKXx8KHI9ZS5hcHBseSh0aGlzLGEpLGk9ITAsbj10aGlzLG89YSkscn19O3ZhciBwPS9eKChjaGlsZHJlbnxkYW5nZXJvdXNseVNldElubmVySFRNTHxrZXl8cmVmfGF1dG9Gb2N1c3xkZWZhdWx0VmFsdWV8ZGVmYXVsdENoZWNrZWR8aW5uZXJIVE1MfHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ3xzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmd8dmFsdWVMaW5rfGFjY2VwdHxhY2NlcHRDaGFyc2V0fGFjY2Vzc0tleXxhY3Rpb258YWxsb3d8YWxsb3dVc2VyTWVkaWF8YWxsb3dQYXltZW50UmVxdWVzdHxhbGxvd0Z1bGxTY3JlZW58YWxsb3dUcmFuc3BhcmVuY3l8YWx0fGFzeW5jfGF1dG9Db21wbGV0ZXxhdXRvUGxheXxjYXB0dXJlfGNlbGxQYWRkaW5nfGNlbGxTcGFjaW5nfGNoYWxsZW5nZXxjaGFyU2V0fGNoZWNrZWR8Y2l0ZXxjbGFzc0lEfGNsYXNzTmFtZXxjb2xzfGNvbFNwYW58Y29udGVudHxjb250ZW50RWRpdGFibGV8Y29udGV4dE1lbnV8Y29udHJvbHN8Y29udHJvbHNMaXN0fGNvb3Jkc3xjcm9zc09yaWdpbnxkYXRhfGRhdGVUaW1lfGRlY29kaW5nfGRlZmF1bHR8ZGVmZXJ8ZGlyfGRpc2FibGVkfGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlfGRvd25sb2FkfGRyYWdnYWJsZXxlbmNUeXBlfGZvcm18Zm9ybUFjdGlvbnxmb3JtRW5jVHlwZXxmb3JtTWV0aG9kfGZvcm1Ob1ZhbGlkYXRlfGZvcm1UYXJnZXR8ZnJhbWVCb3JkZXJ8aGVhZGVyc3xoZWlnaHR8aGlkZGVufGhpZ2h8aHJlZnxocmVmTGFuZ3xodG1sRm9yfGh0dHBFcXVpdnxpZHxpbnB1dE1vZGV8aW50ZWdyaXR5fGlzfGtleVBhcmFtc3xrZXlUeXBlfGtpbmR8bGFiZWx8bGFuZ3xsaXN0fGxvYWRpbmd8bG9vcHxsb3d8bWFyZ2luSGVpZ2h0fG1hcmdpbldpZHRofG1heHxtYXhMZW5ndGh8bWVkaWF8bWVkaWFHcm91cHxtZXRob2R8bWlufG1pbkxlbmd0aHxtdWx0aXBsZXxtdXRlZHxuYW1lfG5vbmNlfG5vVmFsaWRhdGV8b3BlbnxvcHRpbXVtfHBhdHRlcm58cGxhY2Vob2xkZXJ8cGxheXNJbmxpbmV8cG9zdGVyfHByZWxvYWR8cHJvZmlsZXxyYWRpb0dyb3VwfHJlYWRPbmx5fHJlZmVycmVyUG9saWN5fHJlbHxyZXF1aXJlZHxyZXZlcnNlZHxyb2xlfHJvd3N8cm93U3BhbnxzYW5kYm94fHNjb3BlfHNjb3BlZHxzY3JvbGxpbmd8c2VhbWxlc3N8c2VsZWN0ZWR8c2hhcGV8c2l6ZXxzaXplc3xzbG90fHNwYW58c3BlbGxDaGVja3xzcmN8c3JjRG9jfHNyY0xhbmd8c3JjU2V0fHN0YXJ0fHN0ZXB8c3R5bGV8c3VtbWFyeXx0YWJJbmRleHx0YXJnZXR8dGl0bGV8dHlwZXx1c2VNYXB8dmFsdWV8d2lkdGh8d21vZGV8d3JhcHxhYm91dHxkYXRhdHlwZXxpbmxpc3R8cHJlZml4fHByb3BlcnR5fHJlc291cmNlfHR5cGVvZnx2b2NhYnxhdXRvQ2FwaXRhbGl6ZXxhdXRvQ29ycmVjdHxhdXRvU2F2ZXxjb2xvcnxpbmVydHxpdGVtUHJvcHxpdGVtU2NvcGV8aXRlbVR5cGV8aXRlbUlEfGl0ZW1SZWZ8b258cmVzdWx0c3xzZWN1cml0eXx1bnNlbGVjdGFibGV8YWNjZW50SGVpZ2h0fGFjY3VtdWxhdGV8YWRkaXRpdmV8YWxpZ25tZW50QmFzZWxpbmV8YWxsb3dSZW9yZGVyfGFscGhhYmV0aWN8YW1wbGl0dWRlfGFyYWJpY0Zvcm18YXNjZW50fGF0dHJpYnV0ZU5hbWV8YXR0cmlidXRlVHlwZXxhdXRvUmV2ZXJzZXxhemltdXRofGJhc2VGcmVxdWVuY3l8YmFzZWxpbmVTaGlmdHxiYXNlUHJvZmlsZXxiYm94fGJlZ2lufGJpYXN8Ynl8Y2FsY01vZGV8Y2FwSGVpZ2h0fGNsaXB8Y2xpcFBhdGhVbml0c3xjbGlwUGF0aHxjbGlwUnVsZXxjb2xvckludGVycG9sYXRpb258Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyc3xjb2xvclByb2ZpbGV8Y29sb3JSZW5kZXJpbmd8Y29udGVudFNjcmlwdFR5cGV8Y29udGVudFN0eWxlVHlwZXxjdXJzb3J8Y3h8Y3l8ZHxkZWNlbGVyYXRlfGRlc2NlbnR8ZGlmZnVzZUNvbnN0YW50fGRpcmVjdGlvbnxkaXNwbGF5fGRpdmlzb3J8ZG9taW5hbnRCYXNlbGluZXxkdXJ8ZHh8ZHl8ZWRnZU1vZGV8ZWxldmF0aW9ufGVuYWJsZUJhY2tncm91bmR8ZW5kfGV4cG9uZW50fGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWR8ZmlsbHxmaWxsT3BhY2l0eXxmaWxsUnVsZXxmaWx0ZXJ8ZmlsdGVyUmVzfGZpbHRlclVuaXRzfGZsb29kQ29sb3J8Zmxvb2RPcGFjaXR5fGZvY3VzYWJsZXxmb250RmFtaWx5fGZvbnRTaXplfGZvbnRTaXplQWRqdXN0fGZvbnRTdHJldGNofGZvbnRTdHlsZXxmb250VmFyaWFudHxmb250V2VpZ2h0fGZvcm1hdHxmcm9tfGZyfGZ4fGZ5fGcxfGcyfGdseXBoTmFtZXxnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbHxnbHlwaE9yaWVudGF0aW9uVmVydGljYWx8Z2x5cGhSZWZ8Z3JhZGllbnRUcmFuc2Zvcm18Z3JhZGllbnRVbml0c3xoYW5naW5nfGhvcml6QWR2WHxob3Jpek9yaWdpblh8aWRlb2dyYXBoaWN8aW1hZ2VSZW5kZXJpbmd8aW58aW4yfGludGVyY2VwdHxrfGsxfGsyfGszfGs0fGtlcm5lbE1hdHJpeHxrZXJuZWxVbml0TGVuZ3RofGtlcm5pbmd8a2V5UG9pbnRzfGtleVNwbGluZXN8a2V5VGltZXN8bGVuZ3RoQWRqdXN0fGxldHRlclNwYWNpbmd8bGlnaHRpbmdDb2xvcnxsaW1pdGluZ0NvbmVBbmdsZXxsb2NhbHxtYXJrZXJFbmR8bWFya2VyTWlkfG1hcmtlclN0YXJ0fG1hcmtlckhlaWdodHxtYXJrZXJVbml0c3xtYXJrZXJXaWR0aHxtYXNrfG1hc2tDb250ZW50VW5pdHN8bWFza1VuaXRzfG1hdGhlbWF0aWNhbHxtb2RlfG51bU9jdGF2ZXN8b2Zmc2V0fG9wYWNpdHl8b3BlcmF0b3J8b3JkZXJ8b3JpZW50fG9yaWVudGF0aW9ufG9yaWdpbnxvdmVyZmxvd3xvdmVybGluZVBvc2l0aW9ufG92ZXJsaW5lVGhpY2tuZXNzfHBhbm9zZTF8cGFpbnRPcmRlcnxwYXRoTGVuZ3RofHBhdHRlcm5Db250ZW50VW5pdHN8cGF0dGVyblRyYW5zZm9ybXxwYXR0ZXJuVW5pdHN8cG9pbnRlckV2ZW50c3xwb2ludHN8cG9pbnRzQXRYfHBvaW50c0F0WXxwb2ludHNBdFp8cHJlc2VydmVBbHBoYXxwcmVzZXJ2ZUFzcGVjdFJhdGlvfHByaW1pdGl2ZVVuaXRzfHJ8cmFkaXVzfHJlZlh8cmVmWXxyZW5kZXJpbmdJbnRlbnR8cmVwZWF0Q291bnR8cmVwZWF0RHVyfHJlcXVpcmVkRXh0ZW5zaW9uc3xyZXF1aXJlZEZlYXR1cmVzfHJlc3RhcnR8cmVzdWx0fHJvdGF0ZXxyeHxyeXxzY2FsZXxzZWVkfHNoYXBlUmVuZGVyaW5nfHNsb3BlfHNwYWNpbmd8c3BlY3VsYXJDb25zdGFudHxzcGVjdWxhckV4cG9uZW50fHNwZWVkfHNwcmVhZE1ldGhvZHxzdGFydE9mZnNldHxzdGREZXZpYXRpb258c3RlbWh8c3RlbXZ8c3RpdGNoVGlsZXN8c3RvcENvbG9yfHN0b3BPcGFjaXR5fHN0cmlrZXRocm91Z2hQb3NpdGlvbnxzdHJpa2V0aHJvdWdoVGhpY2tuZXNzfHN0cmluZ3xzdHJva2V8c3Ryb2tlRGFzaGFycmF5fHN0cm9rZURhc2hvZmZzZXR8c3Ryb2tlTGluZWNhcHxzdHJva2VMaW5lam9pbnxzdHJva2VNaXRlcmxpbWl0fHN0cm9rZU9wYWNpdHl8c3Ryb2tlV2lkdGh8c3VyZmFjZVNjYWxlfHN5c3RlbUxhbmd1YWdlfHRhYmxlVmFsdWVzfHRhcmdldFh8dGFyZ2V0WXx0ZXh0QW5jaG9yfHRleHREZWNvcmF0aW9ufHRleHRSZW5kZXJpbmd8dGV4dExlbmd0aHx0b3x0cmFuc2Zvcm18dTF8dTJ8dW5kZXJsaW5lUG9zaXRpb258dW5kZXJsaW5lVGhpY2tuZXNzfHVuaWNvZGV8dW5pY29kZUJpZGl8dW5pY29kZVJhbmdlfHVuaXRzUGVyRW18dkFscGhhYmV0aWN8dkhhbmdpbmd8dklkZW9ncmFwaGljfHZNYXRoZW1hdGljYWx8dmFsdWVzfHZlY3RvckVmZmVjdHx2ZXJzaW9ufHZlcnRBZHZZfHZlcnRPcmlnaW5YfHZlcnRPcmlnaW5ZfHZpZXdCb3h8dmlld1RhcmdldHx2aXNpYmlsaXR5fHdpZHRoc3x3b3JkU3BhY2luZ3x3cml0aW5nTW9kZXx4fHhIZWlnaHR8eDF8eDJ8eENoYW5uZWxTZWxlY3Rvcnx4bGlua0FjdHVhdGV8eGxpbmtBcmNyb2xlfHhsaW5rSHJlZnx4bGlua1JvbGV8eGxpbmtTaG93fHhsaW5rVGl0bGV8eGxpbmtUeXBlfHhtbEJhc2V8eG1sbnN8eG1sbnNYbGlua3x4bWxMYW5nfHhtbFNwYWNlfHl8eTF8eTJ8eUNoYW5uZWxTZWxlY3Rvcnx6fHpvb21BbmRQYW58Zm9yfGNsYXNzfGF1dG9mb2N1cyl8KChbRGRdW0FhXVtUdF1bQWFdfFtBYV1bUnJdW0lpXVtBYV18eCktLiopKSQvO2NvbnN0IEM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB2b2lkIDA9PT10W25dJiYodFtuXT1lKG4pKSx0W25dfX0oKGZ1bmN0aW9uKGUpe3JldHVybiBwLnRlc3QoZSl8fDExMT09PWUuY2hhckNvZGVBdCgwKSYmMTEwPT09ZS5jaGFyQ29kZUF0KDEpJiZlLmNoYXJDb2RlQXQoMik8OTF9KSk7ZnVuY3Rpb24gaChlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpfWZ1bmN0aW9uIHYoZSl7cmV0dXJuXCJVbmRlZmluZWRcIj09PWgoZSl9ZnVuY3Rpb24gZyhlKXtyZXR1cm5cIk51bGxcIj09PWgoZSl9ZnVuY3Rpb24gbShlKXtyZXR1cm5cIk9iamVjdFwiPT09aChlKSYmKGUuY29uc3RydWN0b3I9PT1PYmplY3QmJk9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PU9iamVjdC5wcm90b3R5cGUpfWZ1bmN0aW9uIHcoZSl7cmV0dXJuXCJBcnJheVwiPT09aChlKX1mdW5jdGlvbiB5KGUpe3JldHVyblwiU3ltYm9sXCI9PT1oKGUpfXZhciBiLHgsTyxMLF87Yj1nLHg9djtmdW5jdGlvbiBNKCl7Zm9yKHZhciBlPTAsdD0wLG49YXJndW1lbnRzLmxlbmd0aDt0PG47dCsrKWUrPWFyZ3VtZW50c1t0XS5sZW5ndGg7dmFyIHI9QXJyYXkoZSksbz0wO2Zvcih0PTA7dDxuO3QrKylmb3IodmFyIGk9YXJndW1lbnRzW3RdLGE9MCxsPWkubGVuZ3RoO2E8bDthKyssbysrKXJbb109aVthXTtyZXR1cm4gcn1mdW5jdGlvbiBqKGUsdCxuLHIpe3ZhciBvPXIucHJvcGVydHlJc0VudW1lcmFibGUodCk/XCJlbnVtZXJhYmxlXCI6XCJub25lbnVtZXJhYmxlXCI7XCJlbnVtZXJhYmxlXCI9PT1vJiYoZVt0XT1uKSxcIm5vbmVudW1lcmFibGVcIj09PW8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBFKGUsdCxuKXtpZighbSh0KSlyZXR1cm4gbiYmdyhuKSYmbi5mb3JFYWNoKChmdW5jdGlvbihuKXt0PW4oZSx0KX0pKSx0O3ZhciByPXt9O20oZSkmJihyPU0oT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSksT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSkucmVkdWNlKChmdW5jdGlvbihuLHIpe3ZhciBvPWVbcl07cmV0dXJuKCF5KHIpJiYhT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuaW5jbHVkZXMocil8fHkocikmJiFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpLmluY2x1ZGVzKHIpKSYmaihuLHIsbyxlKSxufSkse30pKTtyZXR1cm4gTShPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KSxPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpKS5yZWR1Y2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dFtvXSxhPW0oZSk/ZVtvXTp2b2lkIDA7cmV0dXJuIG4mJncobikmJm4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7aT1lKGEsaSl9KSksdm9pZCAwIT09YSYmbShpKSYmKGk9RShhLGksbikpLGoocixvLGksdCkscn0pLHIpfWNvbnN0IFM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07dmFyIHI9bnVsbCxvPWU7cmV0dXJuIG0oZSkmJmUuZXh0ZW5zaW9ucyYmMT09PU9iamVjdC5rZXlzKGUpLmxlbmd0aCYmKG89e30scj1lLmV4dGVuc2lvbnMpLHQucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBFKGUsdCxyKX0pLG8pfTt2YXIgUD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bZVswXV0scj0wLG89dC5sZW5ndGg7cjxvO3IrPTEpbi5wdXNoKHRbcl0sZVtyKzFdKTtyZXR1cm4gbn0sSD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxrPWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0sVj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLFI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sST1mdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSxaPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiF0fHxcIm9iamVjdFwiIT10eXBlb2YgdCYmXCJmdW5jdGlvblwiIT10eXBlb2YgdD9lOnR9LFQ9ZnVuY3Rpb24oZSl7cmV0dXJuXCJvYmplY3RcIj09PSh2b2lkIDA9PT1lP1widW5kZWZpbmVkXCI6SChlKSkmJmUuY29uc3RydWN0b3I9PT1PYmplY3R9LEE9T2JqZWN0LmZyZWV6ZShbXSksRD1PYmplY3QuZnJlZXplKHt9KTtmdW5jdGlvbiBCKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9ZnVuY3Rpb24gJChlKXtyZXR1cm4gZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHxcIkNvbXBvbmVudFwifWZ1bmN0aW9uIEYoZSl7cmV0dXJuIGUmJlwic3RyaW5nXCI9PXR5cGVvZiBlLnN0eWxlZENvbXBvbmVudElkfXZhciBOPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBwcm9jZXNzJiYocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0FUVFJ8fHByb2Nlc3MuZW52LlNDX0FUVFIpfHxcImRhdGEtc3R5bGVkXCIsej1cImRhdGEtc3R5bGVkLXZlcnNpb25cIixXPVwiZGF0YS1zdHlsZWQtc3RyZWFtZWRcIixHPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJlwiSFRNTEVsZW1lbnRcImluIHdpbmRvdyxVPVwiYm9vbGVhblwiPT10eXBlb2YgU0NfRElTQUJMRV9TUEVFRFkmJlNDX0RJU0FCTEVfU1BFRURZfHxcInVuZGVmaW5lZFwiIT10eXBlb2YgcHJvY2VzcyYmKHByb2Nlc3MuZW52LlJFQUNUX0FQUF9TQ19ESVNBQkxFX1NQRUVEWXx8cHJvY2Vzcy5lbnYuU0NfRElTQUJMRV9TUEVFRFkpfHwhMSxxPXt9O3ZhciBZPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7ayh0aGlzLHQpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89QXJyYXkocj4xP3ItMTowKSxpPTE7aTxyO2krKylvW2ktMV09YXJndW1lbnRzW2ldO3ZhciBhPVoodGhpcyxlLmNhbGwodGhpcyxcIkFuIGVycm9yIG9jY3VycmVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3N0eWxlZC1jb21wb25lbnRzL3N0eWxlZC1jb21wb25lbnRzL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL3N0eWxlZC1jb21wb25lbnRzL3NyYy91dGlscy9lcnJvcnMubWQjXCIrbitcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIisoby5sZW5ndGg+MD9cIiBBZGRpdGlvbmFsIGFyZ3VtZW50czogXCIrby5qb2luKFwiLCBcIik6XCJcIikpKTtyZXR1cm4gWihhKX1yZXR1cm4gSSh0LGUpLHR9KEVycm9yKSxLPS9eW15cXFNcXG5dKj9cXC9cXCogc2MtY29tcG9uZW50LWlkOlxccyooXFxTKylcXHMrXFwqXFwvL2dtLFg9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIisoZXx8XCJcIiksbj1bXTtyZXR1cm4gdC5yZXBsYWNlKEssKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbi5wdXNoKHtjb21wb25lbnRJZDp0LG1hdGNoSW5kZXg6cn0pLGV9KSksbi5tYXAoKGZ1bmN0aW9uKGUscil7dmFyIG89ZS5jb21wb25lbnRJZCxpPWUubWF0Y2hJbmRleCxhPW5bcisxXTtyZXR1cm57Y29tcG9uZW50SWQ6byxjc3NGcm9tRE9NOmE/dC5zbGljZShpLGEubWF0Y2hJbmRleCk6dC5zbGljZShpKX19KSl9LFE9L15cXHMqXFwvXFwvLiokL2dtLEo9bmV3KG8oKSkoe2dsb2JhbDohMSxjYXNjYWRlOiEwLGtleWZyYW1lOiExLHByZWZpeDohMSxjb21wcmVzczohMSxzZW1pY29sb246ITB9KSxlZT1uZXcobygpKSh7Z2xvYmFsOiExLGNhc2NhZGU6ITAsa2V5ZnJhbWU6ITEscHJlZml4OiEwLGNvbXByZXNzOiExLHNlbWljb2xvbjohMX0pLHRlPVtdLG5lPWZ1bmN0aW9uKGUpe2lmKC0yPT09ZSl7dmFyIHQ9dGU7cmV0dXJuIHRlPVtdLHR9fSxyZT1hKCkoKGZ1bmN0aW9uKGUpe3RlLnB1c2goZSl9KSksb2U9dm9pZCAwLGllPXZvaWQgMCxhZT12b2lkIDAsbGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PjAmJi0xIT09bi5zbGljZSgwLHQpLmluZGV4T2YoaWUpJiZuLnNsaWNlKHQtaWUubGVuZ3RoLHQpIT09aWU/XCIuXCIrb2U6ZX07ZWUudXNlKFtmdW5jdGlvbihlLHQsbil7Mj09PWUmJm4ubGVuZ3RoJiZuWzBdLmxhc3RJbmRleE9mKGllKT4wJiYoblswXT1uWzBdLnJlcGxhY2UoYWUsbGUpKX0scmUsbmVdKSxKLnVzZShbcmUsbmVdKTt2YXIgY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIEooXCJcIixlKX07ZnVuY3Rpb24gc2UoZSx0LG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpcIiZcIixvPWUuam9pbihcIlwiKS5yZXBsYWNlKFEsXCJcIiksaT10JiZuP24rXCIgXCIrdCtcIiB7IFwiK28rXCIgfVwiOm87cmV0dXJuIG9lPXIsaWU9dCxhZT1uZXcgUmVnRXhwKFwiXFxcXFwiK2llK1wiXFxcXGJcIixcImdcIiksZWUobnx8IXQ/XCJcIjp0LGkpfXZhciB1ZT1mdW5jdGlvbigpe3JldHVybiBuLm5jfSxkZT1mdW5jdGlvbihlLHQsbil7biYmKChlW3RdfHwoZVt0XT1PYmplY3QuY3JlYXRlKG51bGwpKSlbbl09ITApfSxmZT1mdW5jdGlvbihlLHQpe2VbdF09T2JqZWN0LmNyZWF0ZShudWxsKX0scGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIHZvaWQgMCE9PWVbdF0mJmVbdF1bbl19fSxDZT1mdW5jdGlvbihlKXt2YXIgdD1cIlwiO2Zvcih2YXIgbiBpbiBlKXQrPU9iamVjdC5rZXlzKGVbbl0pLmpvaW4oXCIgXCIpK1wiIFwiO3JldHVybiB0LnRyaW0oKX0saGU9ZnVuY3Rpb24oZSl7aWYoZS5zaGVldClyZXR1cm4gZS5zaGVldDtmb3IodmFyIHQ9ZS5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aCxuPTA7bjx0O24rPTEpe3ZhciByPWUub3duZXJEb2N1bWVudC5zdHlsZVNoZWV0c1tuXTtpZihyLm93bmVyTm9kZT09PWUpcmV0dXJuIHJ9dGhyb3cgbmV3IFkoMTApfSx2ZT1mdW5jdGlvbihlLHQsbil7aWYoIXQpcmV0dXJuITE7dmFyIHI9ZS5jc3NSdWxlcy5sZW5ndGg7dHJ5e2UuaW5zZXJ0UnVsZSh0LG48PXI/bjpyKX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hMH0sZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuXCJcXG4vKiBzYy1jb21wb25lbnQtaWQ6IFwiK2UrXCIgKi9cXG5cIn0sbWU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MCxyPTA7cjw9dDtyKz0xKW4rPWVbcl07cmV0dXJuIG59LHdlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPXVlKCk7cmV0dXJuXCI8c3R5bGUgXCIrW3ImJidub25jZT1cIicrcisnXCInLE4rJz1cIicrQ2UodCkrJ1wiJyx6Kyc9XCI0LjQuMVwiJyxuXS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIikrXCI+XCIrZSgpK1wiPC9zdHlsZT5cIn19LHllPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG4scj0oKG49e30pW05dPUNlKHQpLG5bel09XCI0LjQuMVwiLG4pLG89dWUoKTtyZXR1cm4gbyYmKHIubm9uY2U9byksbC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIixSKHt9LHIse2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6ZSgpfX0pKX19LGJlPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhlKX19LHhlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY3JlYXRlVGV4dE5vZGUoZ2UodCkpfSxPZT1mdW5jdGlvbiBlKHQsbil7dmFyIHI9dm9pZCAwPT09dD9PYmplY3QuY3JlYXRlKG51bGwpOnQsbz12b2lkIDA9PT1uP09iamVjdC5jcmVhdGUobnVsbCk6bixpPWZ1bmN0aW9uKGUpe3ZhciB0PW9bZV07cmV0dXJuIHZvaWQgMCE9PXQ/dDpvW2VdPVtcIlwiXX0sYT1mdW5jdGlvbigpe3ZhciBlPVwiXCI7Zm9yKHZhciB0IGluIG8pe3ZhciBuPW9bdF1bMF07biYmKGUrPWdlKHQpK24pfXJldHVybiBlfSxsPXtjbG9uZTpmdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKGUpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKHZhciBuIGluIGUpdFtuXT1SKHt9LGVbbl0pO3JldHVybiB0fShyKSxuPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKHZhciBpIGluIG8pbltpXT1bb1tpXVswXV07cmV0dXJuIGUodCxuKX0sY3NzOmEsZ2V0SWRzOmJlKG8pLGhhc05hbWVGb3JJZDpwZShyKSxpbnNlcnRNYXJrZXI6aSxpbnNlcnRSdWxlczpmdW5jdGlvbihlLHQsbil7aShlKVswXSs9dC5qb2luKFwiIFwiKSxkZShyLGUsbil9LHJlbW92ZVJ1bGVzOmZ1bmN0aW9uKGUpe3ZhciB0PW9bZV07dm9pZCAwIT09dCYmKHRbMF09XCJcIixmZShyLGUpKX0sc2VhbGVkOiExLHN0eWxlVGFnOm51bGwsdG9FbGVtZW50OnllKGEsciksdG9IVE1MOndlKGEscil9O3JldHVybiBsfSxMZT1mdW5jdGlvbihlLHQsbixyLG8pe2lmKEcmJiFuKXt2YXIgaT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZG9jdW1lbnQ7ZT9yPWUub3duZXJEb2N1bWVudDp0JiYocj10Lm93bmVyRG9jdW1lbnQpO3ZhciBvPXIuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO28uc2V0QXR0cmlidXRlKE4sXCJcIiksby5zZXRBdHRyaWJ1dGUoeixcIjQuNC4xXCIpO3ZhciBpPXVlKCk7aWYoaSYmby5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLGkpLG8uYXBwZW5kQ2hpbGQoci5jcmVhdGVUZXh0Tm9kZShcIlwiKSksZSYmIXQpZS5hcHBlbmRDaGlsZChvKTtlbHNle2lmKCF0fHwhZXx8IXQucGFyZW50Tm9kZSl0aHJvdyBuZXcgWSg2KTt0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG8sbj90OnQubmV4dFNpYmxpbmcpfXJldHVybiBvfShlLHQscik7cmV0dXJuIFU/ZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9T2JqZWN0LmNyZWF0ZShudWxsKSxvPXZvaWQgMCE9PXQsaT0hMSxhPWZ1bmN0aW9uKHQpe3ZhciBvPXJbdF07cmV0dXJuIHZvaWQgMCE9PW8/bzooclt0XT14ZShlLm93bmVyRG9jdW1lbnQsdCksZS5hcHBlbmRDaGlsZChyW3RdKSxuW3RdPU9iamVjdC5jcmVhdGUobnVsbCksclt0XSl9LGw9ZnVuY3Rpb24oKXt2YXIgZT1cIlwiO2Zvcih2YXIgdCBpbiByKWUrPXJbdF0uZGF0YTtyZXR1cm4gZX07cmV0dXJue2Nsb25lOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IFkoNSl9LGNzczpsLGdldElkczpiZShyKSxoYXNOYW1lRm9ySWQ6cGUobiksaW5zZXJ0TWFya2VyOmEsaW5zZXJ0UnVsZXM6ZnVuY3Rpb24oZSxyLGwpe2Zvcih2YXIgYz1hKGUpLHM9W10sdT1yLmxlbmd0aCxkPTA7ZDx1O2QrPTEpe3ZhciBmPXJbZF0scD1vO2lmKHAmJi0xIT09Zi5pbmRleE9mKFwiQGltcG9ydFwiKSlzLnB1c2goZik7ZWxzZXtwPSExO3ZhciBDPWQ9PT11LTE/XCJcIjpcIiBcIjtjLmFwcGVuZERhdGEoXCJcIitmK0MpfX1kZShuLGUsbCksbyYmcy5sZW5ndGg+MCYmKGk9ITAsdCgpLmluc2VydFJ1bGVzKGUrXCItaW1wb3J0XCIscykpfSxyZW1vdmVSdWxlczpmdW5jdGlvbihhKXt2YXIgbD1yW2FdO2lmKHZvaWQgMCE9PWwpe3ZhciBjPXhlKGUub3duZXJEb2N1bWVudCxhKTtlLnJlcGxhY2VDaGlsZChjLGwpLHJbYV09YyxmZShuLGEpLG8mJmkmJnQoKS5yZW1vdmVSdWxlcyhhK1wiLWltcG9ydFwiKX19LHNlYWxlZDohMSxzdHlsZVRhZzplLHRvRWxlbWVudDp5ZShsLG4pLHRvSFRNTDp3ZShsLG4pfX0oaSxvKTpmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj1PYmplY3QuY3JlYXRlKG51bGwpLG89W10saT12b2lkIDAhPT10LGE9ITEsbD1mdW5jdGlvbihlKXt2YXIgdD1yW2VdO3JldHVybiB2b2lkIDAhPT10P3Q6KHJbZV09by5sZW5ndGgsby5wdXNoKDApLGZlKG4sZSkscltlXSl9LGM9ZnVuY3Rpb24oKXt2YXIgdD1oZShlKS5jc3NSdWxlcyxuPVwiXCI7Zm9yKHZhciBpIGluIHIpe24rPWdlKGkpO2Zvcih2YXIgYT1yW2ldLGw9bWUobyxhKSxjPWwtb1thXTtjPGw7Yys9MSl7dmFyIHM9dFtjXTt2b2lkIDAhPT1zJiYobis9cy5jc3NUZXh0KX19cmV0dXJuIG59O3JldHVybntjbG9uZTpmdW5jdGlvbigpe3Rocm93IG5ldyBZKDUpfSxjc3M6YyxnZXRJZHM6YmUociksaGFzTmFtZUZvcklkOnBlKG4pLGluc2VydE1hcmtlcjpsLGluc2VydFJ1bGVzOmZ1bmN0aW9uKHIsYyxzKXtmb3IodmFyIHU9bChyKSxkPWhlKGUpLGY9bWUobyx1KSxwPTAsQz1bXSxoPWMubGVuZ3RoLHY9MDt2PGg7dis9MSl7dmFyIGc9Y1t2XSxtPWk7bSYmLTEhPT1nLmluZGV4T2YoXCJAaW1wb3J0XCIpP0MucHVzaChnKTp2ZShkLGcsZitwKSYmKG09ITEscCs9MSl9aSYmQy5sZW5ndGg+MCYmKGE9ITAsdCgpLmluc2VydFJ1bGVzKHIrXCItaW1wb3J0XCIsQykpLG9bdV0rPXAsZGUobixyLHMpfSxyZW1vdmVSdWxlczpmdW5jdGlvbihsKXt2YXIgYz1yW2xdO2lmKHZvaWQgMCE9PWMmJiExIT09ZS5pc0Nvbm5lY3RlZCl7dmFyIHM9b1tjXTshZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj10LW4sbz10O28+cjtvLT0xKWUuZGVsZXRlUnVsZShvKX0oaGUoZSksbWUobyxjKS0xLHMpLG9bY109MCxmZShuLGwpLGkmJmEmJnQoKS5yZW1vdmVSdWxlcyhsK1wiLWltcG9ydFwiKX19LHNlYWxlZDohMSxzdHlsZVRhZzplLHRvRWxlbWVudDp5ZShjLG4pLHRvSFRNTDp3ZShjLG4pfX0oaSxvKX1yZXR1cm4gT2UoKX0sX2U9L1xccysvLE1lPXZvaWQgMDtNZT1HP1U/NDA6MWUzOi0xO3ZhciBqZT0wLEVlPXZvaWQgMCxTZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt2YXIgdD10aGlzLG49YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOkc/ZG9jdW1lbnQuaGVhZDpudWxsLHI9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtrKHRoaXMsZSksdGhpcy5nZXRJbXBvcnRSdWxlVGFnPWZ1bmN0aW9uKCl7dmFyIGU9dC5pbXBvcnRSdWxlVGFnO2lmKHZvaWQgMCE9PWUpcmV0dXJuIGU7dmFyIG49dC50YWdzWzBdO3JldHVybiB0LmltcG9ydFJ1bGVUYWc9TGUodC50YXJnZXQsbj9uLnN0eWxlVGFnOm51bGwsdC5mb3JjZVNlcnZlciwhMCl9LGplKz0xLHRoaXMuaWQ9amUsdGhpcy5mb3JjZVNlcnZlcj1yLHRoaXMudGFyZ2V0PXI/bnVsbDpuLHRoaXMudGFnTWFwPXt9LHRoaXMuZGVmZXJyZWQ9e30sdGhpcy5yZWh5ZHJhdGVkTmFtZXM9e30sdGhpcy5pZ25vcmVSZWh5ZHJhdGVkTmFtZXM9e30sdGhpcy50YWdzPVtdLHRoaXMuY2FwYWNpdHk9MSx0aGlzLmNsb25lcz1bXX1yZXR1cm4gZS5wcm90b3R5cGUucmVoeWRyYXRlPWZ1bmN0aW9uKCl7aWYoIUd8fHRoaXMuZm9yY2VTZXJ2ZXIpcmV0dXJuIHRoaXM7dmFyIGU9W10sdD1bXSxuPSExLHI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInN0eWxlW1wiK04rXCJdW1wiK3orJz1cIjQuNC4xXCJdJyksbz1yLmxlbmd0aDtpZighbylyZXR1cm4gdGhpcztmb3IodmFyIGk9MDtpPG87aSs9MSl7dmFyIGE9cltpXTtufHwobj0hIWEuZ2V0QXR0cmlidXRlKFcpKTtmb3IodmFyIGwsYz0oYS5nZXRBdHRyaWJ1dGUoTil8fFwiXCIpLnRyaW0oKS5zcGxpdChfZSkscz1jLmxlbmd0aCx1PTA7dTxzO3UrPTEpbD1jW3VdLHRoaXMucmVoeWRyYXRlZE5hbWVzW2xdPSEwO3QucHVzaC5hcHBseSh0LFgoYS50ZXh0Q29udGVudCkpLGUucHVzaChhKX12YXIgZD10Lmxlbmd0aDtpZighZClyZXR1cm4gdGhpczt2YXIgZj10aGlzLm1ha2VUYWcobnVsbCk7IWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxvPW4ubGVuZ3RoO3I8bztyKz0xKXt2YXIgaT1uW3JdLGE9aS5jb21wb25lbnRJZCxsPWkuY3NzRnJvbURPTSxjPWNlKGwpO2UuaW5zZXJ0UnVsZXMoYSxjKX1mb3IodmFyIHM9MCx1PXQubGVuZ3RoO3M8dTtzKz0xKXt2YXIgZD10W3NdO2QucGFyZW50Tm9kZSYmZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGQpfX0oZixlLHQpLHRoaXMuY2FwYWNpdHk9TWF0aC5tYXgoMSxNZS1kKSx0aGlzLnRhZ3MucHVzaChmKTtmb3IodmFyIHA9MDtwPGQ7cCs9MSl0aGlzLnRhZ01hcFt0W3BdLmNvbXBvbmVudElkXT1mO3JldHVybiB0aGlzfSxlLnJlc2V0PWZ1bmN0aW9uKCl7RWU9bmV3IGUodm9pZCAwLGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0pLnJlaHlkcmF0ZSgpfSxlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBlKHRoaXMudGFyZ2V0LHRoaXMuZm9yY2VTZXJ2ZXIpO3JldHVybiB0aGlzLmNsb25lcy5wdXNoKHQpLHQudGFncz10aGlzLnRhZ3MubWFwKChmdW5jdGlvbihlKXtmb3IodmFyIG49ZS5nZXRJZHMoKSxyPWUuY2xvbmUoKSxvPTA7bzxuLmxlbmd0aDtvKz0xKXQudGFnTWFwW25bb11dPXI7cmV0dXJuIHJ9KSksdC5yZWh5ZHJhdGVkTmFtZXM9Uih7fSx0aGlzLnJlaHlkcmF0ZWROYW1lcyksdC5kZWZlcnJlZD1SKHt9LHRoaXMuZGVmZXJyZWQpLHR9LGUucHJvdG90eXBlLnNlYWxBbGxUYWdzPWZ1bmN0aW9uKCl7dGhpcy5jYXBhY2l0eT0xLHRoaXMudGFncy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnNlYWxlZD0hMH0pKX0sZS5wcm90b3R5cGUubWFrZVRhZz1mdW5jdGlvbihlKXt2YXIgdD1lP2Uuc3R5bGVUYWc6bnVsbDtyZXR1cm4gTGUodGhpcy50YXJnZXQsdCx0aGlzLmZvcmNlU2VydmVyLCExLHRoaXMuZ2V0SW1wb3J0UnVsZVRhZyl9LGUucHJvdG90eXBlLmdldFRhZ0ZvcklkPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudGFnTWFwW2VdO2lmKHZvaWQgMCE9PXQmJiF0LnNlYWxlZClyZXR1cm4gdDt2YXIgbj10aGlzLnRhZ3NbdGhpcy50YWdzLmxlbmd0aC0xXTtyZXR1cm4gdGhpcy5jYXBhY2l0eS09MSwwPT09dGhpcy5jYXBhY2l0eSYmKHRoaXMuY2FwYWNpdHk9TWUsbj10aGlzLm1ha2VUYWcobiksdGhpcy50YWdzLnB1c2gobikpLHRoaXMudGFnTWFwW2VdPW59LGUucHJvdG90eXBlLmhhc0lkPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLnRhZ01hcFtlXX0sZS5wcm90b3R5cGUuaGFzTmFtZUZvcklkPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dGhpcy5pZ25vcmVSZWh5ZHJhdGVkTmFtZXNbZV0mJnRoaXMucmVoeWRyYXRlZE5hbWVzW3RdKXJldHVybiEwO3ZhciBuPXRoaXMudGFnTWFwW2VdO3JldHVybiB2b2lkIDAhPT1uJiZuLmhhc05hbWVGb3JJZChlLHQpfSxlLnByb3RvdHlwZS5kZWZlcnJlZEluamVjdD1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMD09PXRoaXMudGFnTWFwW2VdKXtmb3IodmFyIG49dGhpcy5jbG9uZXMscj0wO3I8bi5sZW5ndGg7cis9MSluW3JdLmRlZmVycmVkSW5qZWN0KGUsdCk7dGhpcy5nZXRUYWdGb3JJZChlKS5pbnNlcnRNYXJrZXIoZSksdGhpcy5kZWZlcnJlZFtlXT10fX0sZS5wcm90b3R5cGUuaW5qZWN0PWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9dGhpcy5jbG9uZXMsbz0wO288ci5sZW5ndGg7bys9MSlyW29dLmluamVjdChlLHQsbik7dmFyIGk9dGhpcy5nZXRUYWdGb3JJZChlKTtpZih2b2lkIDAhPT10aGlzLmRlZmVycmVkW2VdKXt2YXIgYT10aGlzLmRlZmVycmVkW2VdLmNvbmNhdCh0KTtpLmluc2VydFJ1bGVzKGUsYSxuKSx0aGlzLmRlZmVycmVkW2VdPXZvaWQgMH1lbHNlIGkuaW5zZXJ0UnVsZXMoZSx0LG4pfSxlLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50YWdNYXBbZV07aWYodm9pZCAwIT09dCl7Zm9yKHZhciBuPXRoaXMuY2xvbmVzLHI9MDtyPG4ubGVuZ3RoO3IrPTEpbltyXS5yZW1vdmUoZSk7dC5yZW1vdmVSdWxlcyhlKSx0aGlzLmlnbm9yZVJlaHlkcmF0ZWROYW1lc1tlXT0hMCx0aGlzLmRlZmVycmVkW2VdPXZvaWQgMH19LGUucHJvdG90eXBlLnRvSFRNTD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRhZ3MubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50b0hUTUwoKX0pKS5qb2luKFwiXCIpfSxlLnByb3RvdHlwZS50b1JlYWN0RWxlbWVudHM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmlkO3JldHVybiB0aGlzLnRhZ3MubWFwKChmdW5jdGlvbih0LG4pe3ZhciByPVwic2MtXCIrZStcIi1cIituO3JldHVybigwLGwuY2xvbmVFbGVtZW50KSh0LnRvRWxlbWVudCgpLHtrZXk6cn0pfSkpfSxWKGUsbnVsbCxbe2tleTpcIm1hc3RlclwiLGdldDpmdW5jdGlvbigpe3JldHVybiBFZXx8KEVlPShuZXcgZSkucmVoeWRyYXRlKCkpfX0se2tleTpcImluc3RhbmNlXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUubWFzdGVyfX1dKSxlfSgpLFBlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe3ZhciByPXRoaXM7ayh0aGlzLGUpLHRoaXMuaW5qZWN0PWZ1bmN0aW9uKGUpe2UuaGFzTmFtZUZvcklkKHIuaWQsci5uYW1lKXx8ZS5pbmplY3Qoci5pZCxyLnJ1bGVzLHIubmFtZSl9LHRoaXMudG9TdHJpbmc9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgWSgxMixTdHJpbmcoci5uYW1lKSl9LHRoaXMubmFtZT10LHRoaXMucnVsZXM9bix0aGlzLmlkPVwic2Mta2V5ZnJhbWVzLVwiK3R9cmV0dXJuIGUucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lfSxlfSgpLEhlPS8oW0EtWl0pL2csa2U9L15tcy0vO2Z1bmN0aW9uIFZlKGUpe3JldHVybiBlLnJlcGxhY2UoSGUsXCItJDFcIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKGtlLFwiLW1zLVwiKX12YXIgUmU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV8fCExPT09ZXx8XCJcIj09PWV9LEllPWZ1bmN0aW9uIGUodCxuKXt2YXIgcj1bXTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obil7aWYoIVJlKHRbbl0pKXtpZihUKHRbbl0pKXJldHVybiByLnB1c2guYXBwbHkocixlKHRbbl0sbikpLHI7aWYoQih0W25dKSlyZXR1cm4gci5wdXNoKFZlKG4pK1wiOlwiLHRbbl0sXCI7XCIpLHI7ci5wdXNoKFZlKG4pK1wiOiBcIisobz1uLChudWxsPT0oaT10W25dKXx8XCJib29sZWFuXCI9PXR5cGVvZiBpfHxcIlwiPT09aT9cIlwiOlwibnVtYmVyXCIhPXR5cGVvZiBpfHwwPT09aXx8byBpbiBjP1N0cmluZyhpKS50cmltKCk6aStcInB4XCIpK1wiO1wiKSl9dmFyIG8saTtyZXR1cm4gcn0pKSxuP1tuK1wiIHtcIl0uY29uY2F0KHIsW1wifVwiXSk6cn07ZnVuY3Rpb24gWmUoZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgcixvPVtdLGk9MCxhPWUubGVuZ3RoO2k8YTtpKz0xKW51bGwhPT0ocj1aZShlW2ldLHQsbikpJiYoQXJyYXkuaXNBcnJheShyKT9vLnB1c2guYXBwbHkobyxyKTpvLnB1c2gocikpO3JldHVybiBvfXJldHVybiBSZShlKT9udWxsOkYoZSk/XCIuXCIrZS5zdHlsZWRDb21wb25lbnRJZDpCKGUpP1wiZnVuY3Rpb25cIiE9dHlwZW9mKGw9ZSl8fGwucHJvdG90eXBlJiZsLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50fHwhdD9lOlplKGUodCksdCxuKTplIGluc3RhbmNlb2YgUGU/bj8oZS5pbmplY3QobiksZS5nZXROYW1lKCkpOmU6VChlKT9JZShlKTplLnRvU3RyaW5nKCk7dmFyIGx9ZnVuY3Rpb24gVGUoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0PjE/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07cmV0dXJuIEIoZSl8fFQoZSk/WmUoUChBLFtlXS5jb25jYXQobikpKTpaZShQKGUsbikpfWZ1bmN0aW9uIEFlKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOkQ7aWYoISgwLHMuaXNWYWxpZEVsZW1lbnRUeXBlKSh0KSl0aHJvdyBuZXcgWSgxLFN0cmluZyh0KSk7dmFyIHI9ZnVuY3Rpb24oKXtyZXR1cm4gZSh0LG4sVGUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfTtyZXR1cm4gci53aXRoQ29uZmlnPWZ1bmN0aW9uKHIpe3JldHVybiBBZShlLHQsUih7fSxuLHIpKX0sci5hdHRycz1mdW5jdGlvbihyKXtyZXR1cm4gQWUoZSx0LFIoe30sbix7YXR0cnM6QXJyYXkucHJvdG90eXBlLmNvbmNhdChuLmF0dHJzLHIpLmZpbHRlcihCb29sZWFuKX0pKX0scn1mdW5jdGlvbiBEZShlKXtmb3IodmFyIHQsbj0wfGUubGVuZ3RoLHI9MHxuLG89MDtuPj00Oyl0PTE1NDA0ODM0NzcqKDY1NTM1Jih0PTI1NSZlLmNoYXJDb2RlQXQobyl8KDI1NSZlLmNoYXJDb2RlQXQoKytvKSk8PDh8KDI1NSZlLmNoYXJDb2RlQXQoKytvKSk8PDE2fCgyNTUmZS5jaGFyQ29kZUF0KCsrbykpPDwyNCkpKygoMTU0MDQ4MzQ3NyoodD4+PjE2KSY2NTUzNSk8PDE2KSxyPTE1NDA0ODM0NzcqKDY1NTM1JnIpKygoMTU0MDQ4MzQ3Nyoocj4+PjE2KSY2NTUzNSk8PDE2KV4odD0xNTQwNDgzNDc3Kig2NTUzNSYodF49dD4+PjI0KSkrKCgxNTQwNDgzNDc3Kih0Pj4+MTYpJjY1NTM1KTw8MTYpKSxuLT00LCsrbztzd2l0Y2gobil7Y2FzZSAzOnJePSgyNTUmZS5jaGFyQ29kZUF0KG8rMikpPDwxNjtjYXNlIDI6cl49KDI1NSZlLmNoYXJDb2RlQXQobysxKSk8PDg7Y2FzZSAxOnI9MTU0MDQ4MzQ3NyooNjU1MzUmKHJePTI1NSZlLmNoYXJDb2RlQXQobykpKSsoKDE1NDA0ODM0NzcqKHI+Pj4xNikmNjU1MzUpPDwxNil9cmV0dXJuKChyPTE1NDA0ODM0NzcqKDY1NTM1JihyXj1yPj4+MTMpKSsoKDE1NDA0ODM0NzcqKHI+Pj4xNikmNjU1MzUpPDwxNikpXnI+Pj4xNSk+Pj4wfXZhciBCZT01MiwkZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlKyhlPjI1PzM5Ojk3KSl9O2Z1bmN0aW9uIEZlKGUpe3ZhciB0PVwiXCIsbj12b2lkIDA7Zm9yKG49ZTtuPkJlO249TWF0aC5mbG9vcihuL0JlKSl0PSRlKG4lQmUpK3Q7cmV0dXJuICRlKG4lQmUpK3R9ZnVuY3Rpb24gTmUoZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rPTEpe3ZhciByPWVbbl07aWYoQXJyYXkuaXNBcnJheShyKSYmIU5lKHIsdCkpcmV0dXJuITE7aWYoQihyKSYmIUYocikpcmV0dXJuITF9cmV0dXJuIXQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIEIoZSl8fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWlmKEIoZVt0XSkpcmV0dXJuITA7cmV0dXJuITF9KGUpfSkpfXZhciB6ZSxXZT1mdW5jdGlvbihlKXtyZXR1cm4gRmUoRGUoZSkpfSxHZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuLHIpe2sodGhpcyxlKSx0aGlzLnJ1bGVzPXQsdGhpcy5pc1N0YXRpYz1OZSh0LG4pLHRoaXMuY29tcG9uZW50SWQ9cixTZS5tYXN0ZXIuaGFzSWQocil8fFNlLm1hc3Rlci5kZWZlcnJlZEluamVjdChyLFtdKX1yZXR1cm4gZS5wcm90b3R5cGUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmlzU3RhdGljLHI9dGhpcy5jb21wb25lbnRJZCxvPXRoaXMubGFzdENsYXNzTmFtZTtpZihHJiZuJiZcInN0cmluZ1wiPT10eXBlb2YgbyYmdC5oYXNOYW1lRm9ySWQocixvKSlyZXR1cm4gbzt2YXIgaT1aZSh0aGlzLnJ1bGVzLGUsdCksYT1XZSh0aGlzLmNvbXBvbmVudElkK2kuam9pbihcIlwiKSk7cmV0dXJuIHQuaGFzTmFtZUZvcklkKHIsYSl8fHQuaW5qZWN0KHRoaXMuY29tcG9uZW50SWQsc2UoaSxcIi5cIithLHZvaWQgMCxyKSxhKSx0aGlzLmxhc3RDbGFzc05hbWU9YSxhfSxlLmdlbmVyYXRlTmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gV2UoZSl9LGV9KCksVWU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06RCxyPSEhbiYmZS50aGVtZT09PW4udGhlbWU7cmV0dXJuIGUudGhlbWUmJiFyP2UudGhlbWU6dHx8bi50aGVtZX0scWU9L1tbXFxdLiMqJD48K349fF46KCksXCInYC1dKy9nLFllPS8oXi18LSQpL2c7ZnVuY3Rpb24gS2UoZSl7cmV0dXJuIGUucmVwbGFjZShxZSxcIi1cIikucmVwbGFjZShZZSxcIlwiKX1mdW5jdGlvbiBYZShlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmITB9dmFyIFFlPXtjaGlsZENvbnRleHRUeXBlczohMCxjb250ZXh0VHlwZXM6ITAsZGVmYXVsdFByb3BzOiEwLGRpc3BsYXlOYW1lOiEwLGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczohMCxwcm9wVHlwZXM6ITAsdHlwZTohMH0sSmU9e25hbWU6ITAsbGVuZ3RoOiEwLHByb3RvdHlwZTohMCxjYWxsZXI6ITAsY2FsbGVlOiEwLGFyZ3VtZW50czohMCxhcml0eTohMH0sZXQ9KCh6ZT17fSlbcy5Gb3J3YXJkUmVmXT17JCR0eXBlb2Y6ITAscmVuZGVyOiEwfSx6ZSksdHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5LG50PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLHJ0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsb3Q9dm9pZCAwPT09cnQ/ZnVuY3Rpb24oKXtyZXR1cm5bXX06cnQsaXQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixhdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsbHQ9T2JqZWN0LnByb3RvdHlwZSxjdD1BcnJheS5wcm90b3R5cGU7ZnVuY3Rpb24gc3QoZSx0LG4pe2lmKFwic3RyaW5nXCIhPXR5cGVvZiB0KXt2YXIgcj1hdCh0KTtyJiZyIT09bHQmJnN0KGUscixuKTtmb3IodmFyIG89Y3QuY29uY2F0KG50KHQpLG90KHQpKSxpPWV0W2UuJCR0eXBlb2ZdfHxRZSxhPWV0W3QuJCR0eXBlb2ZdfHxRZSxsPW8ubGVuZ3RoLGM9dm9pZCAwLHM9dm9pZCAwO2wtLTspaWYocz1vW2xdLCEoSmVbc118fG4mJm5bc118fGEmJmFbc118fGkmJmlbc10pJiYoYz1pdCh0LHMpKSl0cnl7dHQoZSxzLGMpfWNhdGNoKGUpe31yZXR1cm4gZX1yZXR1cm4gZX12YXIgdXQ9KDAsbC5jcmVhdGVDb250ZXh0KSgpLGR0PXV0LkNvbnN1bWVyLGZ0PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7ayh0aGlzLHQpO3ZhciByPVoodGhpcyxlLmNhbGwodGhpcyxuKSk7cmV0dXJuIHIuZ2V0Q29udGV4dD1mKHIuZ2V0Q29udGV4dC5iaW5kKHIpKSxyLnJlbmRlcklubmVyPXIucmVuZGVySW5uZXIuYmluZChyKSxyfXJldHVybiBJKHQsZSksdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW4/bC5jcmVhdGVFbGVtZW50KHV0LkNvbnN1bWVyLG51bGwsdGhpcy5yZW5kZXJJbm5lcik6bnVsbH0sdC5wcm90b3R5cGUucmVuZGVySW5uZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRDb250ZXh0KHRoaXMucHJvcHMudGhlbWUsZSk7cmV0dXJuIGwuY3JlYXRlRWxlbWVudCh1dC5Qcm92aWRlcix7dmFsdWU6dH0sdGhpcy5wcm9wcy5jaGlsZHJlbil9LHQucHJvdG90eXBlLmdldFRoZW1lPWZ1bmN0aW9uKGUsdCl7aWYoQihlKSlyZXR1cm4gZSh0KTtpZihudWxsPT09ZXx8QXJyYXkuaXNBcnJheShlKXx8XCJvYmplY3RcIiE9PSh2b2lkIDA9PT1lP1widW5kZWZpbmVkXCI6SChlKSkpdGhyb3cgbmV3IFkoOCk7cmV0dXJuIFIoe30sdCxlKX0sdC5wcm90b3R5cGUuZ2V0Q29udGV4dD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmdldFRoZW1lKGUsdCl9LHR9KGwuQ29tcG9uZW50KSxwdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtrKHRoaXMsZSksdGhpcy5tYXN0ZXJTaGVldD1TZS5tYXN0ZXIsdGhpcy5pbnN0YW5jZT10aGlzLm1hc3RlclNoZWV0LmNsb25lKCksdGhpcy5zZWFsZWQ9ITF9cmV0dXJuIGUucHJvdG90eXBlLnNlYWw9ZnVuY3Rpb24oKXtpZighdGhpcy5zZWFsZWQpe3ZhciBlPXRoaXMubWFzdGVyU2hlZXQuY2xvbmVzLmluZGV4T2YodGhpcy5pbnN0YW5jZSk7dGhpcy5tYXN0ZXJTaGVldC5jbG9uZXMuc3BsaWNlKGUsMSksdGhpcy5zZWFsZWQ9ITB9fSxlLnByb3RvdHlwZS5jb2xsZWN0U3R5bGVzPWZ1bmN0aW9uKGUpe2lmKHRoaXMuc2VhbGVkKXRocm93IG5ldyBZKDIpO3JldHVybiBsLmNyZWF0ZUVsZW1lbnQodnQse3NoZWV0OnRoaXMuaW5zdGFuY2V9LGUpfSxlLnByb3RvdHlwZS5nZXRTdHlsZVRhZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWFsKCksdGhpcy5pbnN0YW5jZS50b0hUTUwoKX0sZS5wcm90b3R5cGUuZ2V0U3R5bGVFbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VhbCgpLHRoaXMuaW5zdGFuY2UudG9SZWFjdEVsZW1lbnRzKCl9LGUucHJvdG90eXBlLmludGVybGVhdmVXaXRoTm9kZVN0cmVhbT1mdW5jdGlvbihlKXt0aHJvdyBuZXcgWSgzKX0sZX0oKSxDdD0oMCxsLmNyZWF0ZUNvbnRleHQpKCksaHQ9Q3QuQ29uc3VtZXIsdnQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtrKHRoaXMsdCk7dmFyIHI9Wih0aGlzLGUuY2FsbCh0aGlzLG4pKTtyZXR1cm4gci5nZXRDb250ZXh0PWYoci5nZXRDb250ZXh0KSxyfXJldHVybiBJKHQsZSksdC5wcm90b3R5cGUuZ2V0Q29udGV4dD1mdW5jdGlvbihlLHQpe2lmKGUpcmV0dXJuIGU7aWYodClyZXR1cm4gbmV3IFNlKHQpO3Rocm93IG5ldyBZKDQpfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jaGlsZHJlbixuPWUuc2hlZXQscj1lLnRhcmdldDtyZXR1cm4gbC5jcmVhdGVFbGVtZW50KEN0LlByb3ZpZGVyLHt2YWx1ZTp0aGlzLmdldENvbnRleHQobixyKX0sdCl9LHR9KGwuQ29tcG9uZW50KSxndD17fTt2YXIgbXQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe2sodGhpcyx0KTt2YXIgbj1aKHRoaXMsZS5jYWxsKHRoaXMpKTtyZXR1cm4gbi5hdHRycz17fSxuLnJlbmRlck91dGVyPW4ucmVuZGVyT3V0ZXIuYmluZChuKSxuLnJlbmRlcklubmVyPW4ucmVuZGVySW5uZXIuYmluZChuKSxufXJldHVybiBJKHQsZSksdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGwuY3JlYXRlRWxlbWVudChodCxudWxsLHRoaXMucmVuZGVyT3V0ZXIpfSx0LnByb3RvdHlwZS5yZW5kZXJPdXRlcj1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpTZS5tYXN0ZXI7cmV0dXJuIHRoaXMuc3R5bGVTaGVldD1lLHRoaXMucHJvcHMuZm9yd2FyZGVkQ29tcG9uZW50LmNvbXBvbmVudFN0eWxlLmlzU3RhdGljP3RoaXMucmVuZGVySW5uZXIoKTpsLmNyZWF0ZUVsZW1lbnQoZHQsbnVsbCx0aGlzLnJlbmRlcklubmVyKX0sdC5wcm90b3R5cGUucmVuZGVySW5uZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcy5mb3J3YXJkZWRDb21wb25lbnQsbj10LmNvbXBvbmVudFN0eWxlLHI9dC5kZWZhdWx0UHJvcHMsbz0odC5kaXNwbGF5TmFtZSx0LmZvbGRlZENvbXBvbmVudElkcyksaT10LnN0eWxlZENvbXBvbmVudElkLGE9dC50YXJnZXQsYz12b2lkIDA7Yz1uLmlzU3RhdGljP3RoaXMuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMoRCx0aGlzLnByb3BzKTp0aGlzLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzKFVlKHRoaXMucHJvcHMsZSxyKXx8RCx0aGlzLnByb3BzKTt2YXIgcz10aGlzLnByb3BzLmFzfHx0aGlzLmF0dHJzLmFzfHxhLHU9WGUocyksZD17fSxmPVIoe30sdGhpcy5wcm9wcyx0aGlzLmF0dHJzKSxwPXZvaWQgMDtmb3IocCBpbiBmKVwiZm9yd2FyZGVkQ29tcG9uZW50XCIhPT1wJiZcImFzXCIhPT1wJiYoXCJmb3J3YXJkZWRSZWZcIj09PXA/ZC5yZWY9ZltwXTpcImZvcndhcmRlZEFzXCI9PT1wP2QuYXM9ZltwXTp1JiYhQyhwKXx8KGRbcF09ZltwXSkpO3JldHVybiB0aGlzLnByb3BzLnN0eWxlJiZ0aGlzLmF0dHJzLnN0eWxlJiYoZC5zdHlsZT1SKHt9LHRoaXMuYXR0cnMuc3R5bGUsdGhpcy5wcm9wcy5zdHlsZSkpLGQuY2xhc3NOYW1lPUFycmF5LnByb3RvdHlwZS5jb25jYXQobyxpLGMhPT1pP2M6bnVsbCx0aGlzLnByb3BzLmNsYXNzTmFtZSx0aGlzLmF0dHJzLmNsYXNzTmFtZSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpLCgwLGwuY3JlYXRlRWxlbWVudCkocyxkKX0sdC5wcm90b3R5cGUuYnVpbGRFeGVjdXRpb25Db250ZXh0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLG89Uih7fSx0LHt0aGVtZTplfSk7cmV0dXJuIG4ubGVuZ3RoPyh0aGlzLmF0dHJzPXt9LG4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQsbj1lLGk9ITEsYT12b2lkIDAsbD12b2lkIDA7Zm9yKGwgaW4gQihuKSYmKG49bihvKSxpPSEwKSxuKWE9bltsXSxpfHwhQihhKXx8KHQ9YSkmJnQucHJvdG90eXBlJiZ0LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50fHxGKGEpfHwoYT1hKG8pKSxyLmF0dHJzW2xdPWEsb1tsXT1hfSkpLG8pOm99LHQucHJvdG90eXBlLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5mb3J3YXJkZWRDb21wb25lbnQscj1uLmF0dHJzLG89bi5jb21wb25lbnRTdHlsZTtuLndhcm5Ub29NYW55Q2xhc3NlcztyZXR1cm4gby5pc1N0YXRpYyYmIXIubGVuZ3RoP28uZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMoRCx0aGlzLnN0eWxlU2hlZXQpOm8uZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXModGhpcy5idWlsZEV4ZWN1dGlvbkNvbnRleHQoZSx0LHIpLHRoaXMuc3R5bGVTaGVldCl9LHR9KGwuQ29tcG9uZW50KTtmdW5jdGlvbiB3dChlLHQsbil7dmFyIHI9RihlKSxvPSFYZShlKSxpPXQuZGlzcGxheU5hbWUsYT12b2lkIDA9PT1pP2Z1bmN0aW9uKGUpe3JldHVybiBYZShlKT9cInN0eWxlZC5cIitlOlwiU3R5bGVkKFwiKyQoZSkrXCIpXCJ9KGUpOmksYz10LmNvbXBvbmVudElkLHM9dm9pZCAwPT09Yz9mdW5jdGlvbihlLHQsbil7dmFyIHI9XCJzdHJpbmdcIiE9dHlwZW9mIHQ/XCJzY1wiOktlKHQpLG89KGd0W3JdfHwwKSsxO2d0W3JdPW87dmFyIGk9citcIi1cIitlLmdlbmVyYXRlTmFtZShyK28pO3JldHVybiBuP24rXCItXCIraTppfShHZSx0LmRpc3BsYXlOYW1lLHQucGFyZW50Q29tcG9uZW50SWQpOmMsdT10LlBhcmVudENvbXBvbmVudCxkPXZvaWQgMD09PXU/bXQ6dSxmPXQuYXR0cnMscD12b2lkIDA9PT1mP0E6ZixDPXQuZGlzcGxheU5hbWUmJnQuY29tcG9uZW50SWQ/S2UodC5kaXNwbGF5TmFtZSkrXCItXCIrdC5jb21wb25lbnRJZDp0LmNvbXBvbmVudElkfHxzLGg9ciYmZS5hdHRycz9BcnJheS5wcm90b3R5cGUuY29uY2F0KGUuYXR0cnMscCkuZmlsdGVyKEJvb2xlYW4pOnAsdj1uZXcgR2Uocj9lLmNvbXBvbmVudFN0eWxlLnJ1bGVzLmNvbmNhdChuKTpuLGgsQyksZz12b2lkIDAsbT1mdW5jdGlvbihlLHQpe3JldHVybiBsLmNyZWF0ZUVsZW1lbnQoZCxSKHt9LGUse2ZvcndhcmRlZENvbXBvbmVudDpnLGZvcndhcmRlZFJlZjp0fSkpfTtyZXR1cm4gbS5kaXNwbGF5TmFtZT1hLChnPWwuZm9yd2FyZFJlZihtKSkuZGlzcGxheU5hbWU9YSxnLmF0dHJzPWgsZy5jb21wb25lbnRTdHlsZT12LGcuZm9sZGVkQ29tcG9uZW50SWRzPXI/QXJyYXkucHJvdG90eXBlLmNvbmNhdChlLmZvbGRlZENvbXBvbmVudElkcyxlLnN0eWxlZENvbXBvbmVudElkKTpBLGcuc3R5bGVkQ29tcG9uZW50SWQ9QyxnLnRhcmdldD1yP2UudGFyZ2V0OmUsZy53aXRoQ29tcG9uZW50PWZ1bmN0aW9uKGUpe3ZhciByPXQuY29tcG9uZW50SWQsbz1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKXQuaW5kZXhPZihyKT49MHx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJihuW3JdPWVbcl0pO3JldHVybiBufSh0LFtcImNvbXBvbmVudElkXCJdKSxpPXImJnIrXCItXCIrKFhlKGUpP2U6S2UoJChlKSkpO3JldHVybiB3dChlLFIoe30sbyx7YXR0cnM6aCxjb21wb25lbnRJZDppLFBhcmVudENvbXBvbmVudDpkfSksbil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnLFwiZGVmYXVsdFByb3BzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb2xkZWREZWZhdWx0UHJvcHN9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9mb2xkZWREZWZhdWx0UHJvcHM9cj9TKGUuZGVmYXVsdFByb3BzLHQpOnR9fSksZy50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiLlwiK2cuc3R5bGVkQ29tcG9uZW50SWR9LG8mJnN0KGcsZSx7YXR0cnM6ITAsY29tcG9uZW50U3R5bGU6ITAsZGlzcGxheU5hbWU6ITAsZm9sZGVkQ29tcG9uZW50SWRzOiEwLHN0eWxlZENvbXBvbmVudElkOiEwLHRhcmdldDohMCx3aXRoQ29tcG9uZW50OiEwfSksZ312YXIgeXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIEFlKHd0LGUpfTtbXCJhXCIsXCJhYmJyXCIsXCJhZGRyZXNzXCIsXCJhcmVhXCIsXCJhcnRpY2xlXCIsXCJhc2lkZVwiLFwiYXVkaW9cIixcImJcIixcImJhc2VcIixcImJkaVwiLFwiYmRvXCIsXCJiaWdcIixcImJsb2NrcXVvdGVcIixcImJvZHlcIixcImJyXCIsXCJidXR0b25cIixcImNhbnZhc1wiLFwiY2FwdGlvblwiLFwiY2l0ZVwiLFwiY29kZVwiLFwiY29sXCIsXCJjb2xncm91cFwiLFwiZGF0YVwiLFwiZGF0YWxpc3RcIixcImRkXCIsXCJkZWxcIixcImRldGFpbHNcIixcImRmblwiLFwiZGlhbG9nXCIsXCJkaXZcIixcImRsXCIsXCJkdFwiLFwiZW1cIixcImVtYmVkXCIsXCJmaWVsZHNldFwiLFwiZmlnY2FwdGlvblwiLFwiZmlndXJlXCIsXCJmb290ZXJcIixcImZvcm1cIixcImgxXCIsXCJoMlwiLFwiaDNcIixcImg0XCIsXCJoNVwiLFwiaDZcIixcImhlYWRcIixcImhlYWRlclwiLFwiaGdyb3VwXCIsXCJoclwiLFwiaHRtbFwiLFwiaVwiLFwiaWZyYW1lXCIsXCJpbWdcIixcImlucHV0XCIsXCJpbnNcIixcImtiZFwiLFwia2V5Z2VuXCIsXCJsYWJlbFwiLFwibGVnZW5kXCIsXCJsaVwiLFwibGlua1wiLFwibWFpblwiLFwibWFwXCIsXCJtYXJrXCIsXCJtYXJxdWVlXCIsXCJtZW51XCIsXCJtZW51aXRlbVwiLFwibWV0YVwiLFwibWV0ZXJcIixcIm5hdlwiLFwibm9zY3JpcHRcIixcIm9iamVjdFwiLFwib2xcIixcIm9wdGdyb3VwXCIsXCJvcHRpb25cIixcIm91dHB1dFwiLFwicFwiLFwicGFyYW1cIixcInBpY3R1cmVcIixcInByZVwiLFwicHJvZ3Jlc3NcIixcInFcIixcInJwXCIsXCJydFwiLFwicnVieVwiLFwic1wiLFwic2FtcFwiLFwic2NyaXB0XCIsXCJzZWN0aW9uXCIsXCJzZWxlY3RcIixcInNtYWxsXCIsXCJzb3VyY2VcIixcInNwYW5cIixcInN0cm9uZ1wiLFwic3R5bGVcIixcInN1YlwiLFwic3VtbWFyeVwiLFwic3VwXCIsXCJ0YWJsZVwiLFwidGJvZHlcIixcInRkXCIsXCJ0ZXh0YXJlYVwiLFwidGZvb3RcIixcInRoXCIsXCJ0aGVhZFwiLFwidGltZVwiLFwidGl0bGVcIixcInRyXCIsXCJ0cmFja1wiLFwidVwiLFwidWxcIixcInZhclwiLFwidmlkZW9cIixcIndiclwiLFwiY2lyY2xlXCIsXCJjbGlwUGF0aFwiLFwiZGVmc1wiLFwiZWxsaXBzZVwiLFwiZm9yZWlnbk9iamVjdFwiLFwiZ1wiLFwiaW1hZ2VcIixcImxpbmVcIixcImxpbmVhckdyYWRpZW50XCIsXCJtYXJrZXJcIixcIm1hc2tcIixcInBhdGhcIixcInBhdHRlcm5cIixcInBvbHlnb25cIixcInBvbHlsaW5lXCIsXCJyYWRpYWxHcmFkaWVudFwiLFwicmVjdFwiLFwic3RvcFwiLFwic3ZnXCIsXCJ0ZXh0XCIsXCJ0c3BhblwiXS5mb3JFYWNoKChmdW5jdGlvbihlKXt5dFtlXT15dChlKX0pKTt2YXIgYnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbil7ayh0aGlzLGUpLHRoaXMucnVsZXM9dCx0aGlzLmNvbXBvbmVudElkPW4sdGhpcy5pc1N0YXRpYz1OZSh0LEEpLFNlLm1hc3Rlci5oYXNJZChuKXx8U2UubWFzdGVyLmRlZmVycmVkSW5qZWN0KG4sW10pfXJldHVybiBlLnByb3RvdHlwZS5jcmVhdGVTdHlsZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1zZShaZSh0aGlzLnJ1bGVzLGUsdCksXCJcIik7dC5pbmplY3QodGhpcy5jb21wb25lbnRJZCxuKX0sZS5wcm90b3R5cGUucmVtb3ZlU3R5bGVzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY29tcG9uZW50SWQ7ZS5oYXNJZCh0KSYmZS5yZW1vdmUodCl9LGUucHJvdG90eXBlLnJlbmRlclN0eWxlcz1mdW5jdGlvbihlLHQpe3RoaXMucmVtb3ZlU3R5bGVzKHQpLHRoaXMuY3JlYXRlU3R5bGVzKGUsdCl9LGV9KCk7ZnVuY3Rpb24geHQoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0PjE/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07dmFyIG89VGUuYXBwbHkodm9pZCAwLFtlXS5jb25jYXQobikpLGk9XCJzYy1nbG9iYWwtXCIrRGUoSlNPTi5zdHJpbmdpZnkobykpLGE9bmV3IGJ0KG8saSksYz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe2sodGhpcyx0KTt2YXIgcj1aKHRoaXMsZS5jYWxsKHRoaXMsbikpLG89ci5jb25zdHJ1Y3RvcixpPW8uZ2xvYmFsU3R5bGUsYT1vLnN0eWxlZENvbXBvbmVudElkO3JldHVybiBHJiYod2luZG93LnNjQ0dTSE1SQ2FjaGVbYV09KHdpbmRvdy5zY0NHU0hNUkNhY2hlW2FdfHwwKSsxKSxyLnN0YXRlPXtnbG9iYWxTdHlsZTppLHN0eWxlZENvbXBvbmVudElkOmF9LHJ9cmV0dXJuIEkodCxlKSx0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3dpbmRvdy5zY0NHU0hNUkNhY2hlW3RoaXMuc3RhdGUuc3R5bGVkQ29tcG9uZW50SWRdJiYod2luZG93LnNjQ0dTSE1SQ2FjaGVbdGhpcy5zdGF0ZS5zdHlsZWRDb21wb25lbnRJZF0tPTEpLDA9PT13aW5kb3cuc2NDR1NITVJDYWNoZVt0aGlzLnN0YXRlLnN0eWxlZENvbXBvbmVudElkXSYmdGhpcy5zdGF0ZS5nbG9iYWxTdHlsZS5yZW1vdmVTdHlsZXModGhpcy5zdHlsZVNoZWV0KX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gbC5jcmVhdGVFbGVtZW50KGh0LG51bGwsKGZ1bmN0aW9uKHQpe2Uuc3R5bGVTaGVldD10fHxTZS5tYXN0ZXI7dmFyIG49ZS5zdGF0ZS5nbG9iYWxTdHlsZTtyZXR1cm4gbi5pc1N0YXRpYz8obi5yZW5kZXJTdHlsZXMocSxlLnN0eWxlU2hlZXQpLG51bGwpOmwuY3JlYXRlRWxlbWVudChkdCxudWxsLChmdW5jdGlvbih0KXt2YXIgcj1lLmNvbnN0cnVjdG9yLmRlZmF1bHRQcm9wcyxvPVIoe30sZS5wcm9wcyk7cmV0dXJuIHZvaWQgMCE9PXQmJihvLnRoZW1lPVVlKGUucHJvcHMsdCxyKSksbi5yZW5kZXJTdHlsZXMobyxlLnN0eWxlU2hlZXQpLG51bGx9KSl9KSl9LHR9KGwuQ29tcG9uZW50KTtyZXR1cm4gYy5nbG9iYWxTdHlsZT1hLGMuc3R5bGVkQ29tcG9uZW50SWQ9aSxjfUcmJih3aW5kb3cuc2NDR1NITVJDYWNoZT17fSk7dmFyIE90PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1xcc3xcXFxcbi9nLFwiXCIpfTtmdW5jdGlvbiBMdChlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTt2YXIgbz1UZS5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChuKSksaT1GZShEZShPdChKU09OLnN0cmluZ2lmeShvKSkpKTtyZXR1cm4gbmV3IFBlKGksc2UobyxpLFwiQGtleWZyYW1lc1wiKSl9dmFyIF90PWZ1bmN0aW9uKGUpe3ZhciB0PWwuZm9yd2FyZFJlZigoZnVuY3Rpb24odCxuKXtyZXR1cm4gbC5jcmVhdGVFbGVtZW50KGR0LG51bGwsKGZ1bmN0aW9uKHIpe3ZhciBvPWUuZGVmYXVsdFByb3BzLGk9VWUodCxyLG8pO3JldHVybiBsLmNyZWF0ZUVsZW1lbnQoZSxSKHt9LHQse3RoZW1lOmkscmVmOm59KSl9KSl9KSk7cmV0dXJuIHN0KHQsZSksdC5kaXNwbGF5TmFtZT1cIldpdGhUaGVtZShcIiskKGUpK1wiKVwiLHR9LE10PXtTdHlsZVNoZWV0OlNlfTtjb25zdCBqdD15dH0sMjQ2OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9XCIvKnwqL1wiLG49dCtcIn1cIjtmdW5jdGlvbiByKHQpe2lmKHQpdHJ5e2UodCtcIn1cIil9Y2F0Y2goZSl7fX1yZXR1cm4gZnVuY3Rpb24obyxpLGEsbCxjLHMsdSxkLGYscCl7c3dpdGNoKG8pe2Nhc2UgMTppZigwPT09ZiYmNjQ9PT1pLmNoYXJDb2RlQXQoMCkpcmV0dXJuIGUoaStcIjtcIiksXCJcIjticmVhaztjYXNlIDI6aWYoMD09PWQpcmV0dXJuIGkrdDticmVhaztjYXNlIDM6c3dpdGNoKGQpe2Nhc2UgMTAyOmNhc2UgMTEyOnJldHVybiBlKGFbMF0raSksXCJcIjtkZWZhdWx0OnJldHVybiBpKygwPT09cD90OlwiXCIpfWNhc2UtMjppLnNwbGl0KG4pLmZvckVhY2gocil9fX19KCl9LDk0NjplPT57ZS5leHBvcnRzPWZ1bmN0aW9uIGUodCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49L15cXDArL2cscj0vW1xcMFxcclxcZl0vZyxvPS86ICovZyxpPS96b298Z3JhLyxhPS8oWyw6IF0pKHRyYW5zZm9ybSkvZyxsPS8sK1xccyooPyFbXihdKlspXSkvZyxjPS8gK1xccyooPyFbXihdKlspXSkvZyxzPS8gKltcXDBdICovZyx1PS8sXFxyKz8vZyxkPS8oW1xcdFxcclxcbiBdKSpcXGY/Ji9nLGY9LzpnbG9iYWxcXCgoKD86W15cXChcXClcXFtcXF1dKnxcXFsuKlxcXXxcXChbXlxcKFxcKV0qXFwpKSopXFwpL2cscD0vXFxXKy9nLEM9L0Aoa1xcdyspXFxzKihcXFMqKVxccyovLGg9Lzo6KHBsYWNlKS9nLHY9LzoocmVhZC1vbmx5KS9nLGc9L1xccysoPz1be1xcXTs9Oj5dKS9nLG09LyhbW309Oj5dKVxccysvZyx3PS8oXFx7W157XSs/KTsoPz1cXH0pL2cseT0vXFxzezIsfS9nLGI9LyhbXlxcKF0pKDorKSAqL2cseD0vW3N2aF1cXHcrLVt0YmxyXXsyfS8sTz0vXFwoXFxzKiguKilcXHMqXFwpL2csTD0vKFtcXHNcXFNdKj8pOy9nLF89Ly1zZWxmfGZsZXgtL2csTT0vW15dKj8oOltycF1bZWxdYVtcXHctXSspW15dKi8saj0vc3RyZXRjaHw6XFxzKlxcdytcXC0oPzpjb250ZXxhdmFpbCkvLEU9LyhbXi1dKShpbWFnZS1zZXRcXCgpLyxTPVwiLXdlYmtpdC1cIixQPVwiLW1vei1cIixIPVwiLW1zLVwiLGs9NTksVj0xMjUsUj0xMjMsST00MCxaPTQxLFQ9OTEsQT05MyxEPTEwLEI9MTMsJD05LEY9NjQsTj0zMix6PTM4LFc9NDUsRz05NSxVPTQyLHE9NDQsWT01OCxLPTM5LFg9MzQsUT00NyxKPTYyLGVlPTQzLHRlPTEyNixuZT0wLHJlPTEyLG9lPTExLGllPTEwNyxhZT0xMDksbGU9MTE1LGNlPTExMixzZT0xMTEsdWU9MTA1LGRlPTk5LGZlPTEwMCxwZT0xMTIsQ2U9MSxoZT0xLHZlPTAsZ2U9MSxtZT0xLHdlPTEseWU9MCxiZT0wLHhlPTAsT2U9W10sTGU9W10sX2U9MCxNZT1udWxsLGplPS0yLEVlPS0xLFNlPTAsUGU9MSxIZT0yLGtlPTMsVmU9MCxSZT0xLEllPVwiXCIsWmU9XCJcIixUZT1cIlwiO2Z1bmN0aW9uIEFlKGUsdCxvLGksYSl7Zm9yKHZhciBsLGMsdT0wLGQ9MCxmPTAscD0wLGc9MCxtPTAsdz0wLHk9MCx4PTAsTD0wLF89MCxNPTAsaj0wLEU9MCxHPTAseWU9MCxMZT0wLE1lPTAsamU9MCxFZT1vLmxlbmd0aCxCZT1FZS0xLEdlPVwiXCIsVWU9XCJcIixxZT1cIlwiLFllPVwiXCIsS2U9XCJcIixYZT1cIlwiO0c8RWU7KXtpZih3PW8uY2hhckNvZGVBdChHKSxHPT09QmUmJmQrcCtmK3UhPT0wJiYoMCE9PWQmJih3PWQ9PT1RP0Q6USkscD1mPXU9MCxFZSsrLEJlKyspLGQrcCtmK3U9PT0wKXtpZihHPT09QmUmJih5ZT4wJiYoVWU9VWUucmVwbGFjZShyLFwiXCIpKSxVZS50cmltKCkubGVuZ3RoPjApKXtzd2l0Y2godyl7Y2FzZSBOOmNhc2UgJDpjYXNlIGs6Y2FzZSBCOmNhc2UgRDpicmVhaztkZWZhdWx0OlVlKz1vLmNoYXJBdChHKX13PWt9aWYoMT09PUxlKXN3aXRjaCh3KXtjYXNlIFI6Y2FzZSBWOmNhc2UgazpjYXNlIFg6Y2FzZSBLOmNhc2UgSTpjYXNlIFo6Y2FzZSBxOkxlPTA7Y2FzZSAkOmNhc2UgQjpjYXNlIEQ6Y2FzZSBOOmJyZWFrO2RlZmF1bHQ6Zm9yKExlPTAsamU9RyxnPXcsRy0tLHc9aztqZTxFZTspc3dpdGNoKG8uY2hhckNvZGVBdChqZSsrKSl7Y2FzZSBEOmNhc2UgQjpjYXNlIGs6KytHLHc9ZyxqZT1FZTticmVhaztjYXNlIFk6eWU+MCYmKCsrRyx3PWcpO2Nhc2UgUjpqZT1FZX19c3dpdGNoKHcpe2Nhc2UgUjpmb3IoZz0oVWU9VWUudHJpbSgpKS5jaGFyQ29kZUF0KDApLF89MSxqZT0rK0c7RzxFZTspe3N3aXRjaCh3PW8uY2hhckNvZGVBdChHKSl7Y2FzZSBSOl8rKzticmVhaztjYXNlIFY6Xy0tO2JyZWFrO2Nhc2UgUTpzd2l0Y2gobT1vLmNoYXJDb2RlQXQoRysxKSl7Y2FzZSBVOmNhc2UgUTpHPVdlKG0sRyxCZSxvKX1icmVhaztjYXNlIFQ6dysrO2Nhc2UgSTp3Kys7Y2FzZSBYOmNhc2UgSzpmb3IoO0crKzxCZSYmby5jaGFyQ29kZUF0KEcpIT09dzspO31pZigwPT09XylicmVhaztHKyt9aWYocWU9by5zdWJzdHJpbmcoamUsRyksZz09PW5lJiYoZz0oVWU9VWUucmVwbGFjZShuLFwiXCIpLnRyaW0oKSkuY2hhckNvZGVBdCgwKSksZz09PUYpe3N3aXRjaCh5ZT4wJiYoVWU9VWUucmVwbGFjZShyLFwiXCIpKSxtPVVlLmNoYXJDb2RlQXQoMSkpe2Nhc2UgZmU6Y2FzZSBhZTpjYXNlIGxlOmNhc2UgVzpsPXQ7YnJlYWs7ZGVmYXVsdDpsPU9lfWlmKGplPShxZT1BZSh0LGwscWUsbSxhKzEpKS5sZW5ndGgseGU+MCYmMD09PWplJiYoamU9VWUubGVuZ3RoKSxfZT4wJiYobD1EZShPZSxVZSxNZSksYz16ZShrZSxxZSxsLHQsaGUsQ2UsamUsbSxhLGkpLFVlPWwuam9pbihcIlwiKSx2b2lkIDAhPT1jJiYwPT09KGplPShxZT1jLnRyaW0oKSkubGVuZ3RoKSYmKG09MCxxZT1cIlwiKSksamU+MClzd2l0Y2gobSl7Y2FzZSBsZTpVZT1VZS5yZXBsYWNlKE8sTmUpO2Nhc2UgZmU6Y2FzZSBhZTpjYXNlIFc6cWU9VWUrXCJ7XCIrcWUrXCJ9XCI7YnJlYWs7Y2FzZSBpZTpxZT0oVWU9VWUucmVwbGFjZShDLFwiJDEgJDJcIisoUmU+MD9JZTpcIlwiKSkpK1wie1wiK3FlK1wifVwiLHFlPTE9PT1tZXx8Mj09PW1lJiZGZShcIkBcIitxZSwzKT9cIkBcIitTK3FlK1wiQFwiK3FlOlwiQFwiK3FlO2JyZWFrO2RlZmF1bHQ6cWU9VWUrcWUsaT09PXBlJiYoWWUrPXFlLHFlPVwiXCIpfWVsc2UgcWU9XCJcIn1lbHNlIHFlPUFlKHQsRGUodCxVZSxNZSkscWUsaSxhKzEpO0tlKz1xZSxNPTAsTGU9MCxFPTAseWU9MCxNZT0wLGo9MCxVZT1cIlwiLHFlPVwiXCIsdz1vLmNoYXJDb2RlQXQoKytHKTticmVhaztjYXNlIFY6Y2FzZSBrOmlmKChqZT0oVWU9KHllPjA/VWUucmVwbGFjZShyLFwiXCIpOlVlKS50cmltKCkpLmxlbmd0aCk+MSlzd2l0Y2goMD09PUUmJigoZz1VZS5jaGFyQ29kZUF0KDApKT09PVd8fGc+OTYmJmc8MTIzKSYmKGplPShVZT1VZS5yZXBsYWNlKFwiIFwiLFwiOlwiKSkubGVuZ3RoKSxfZT4wJiZ2b2lkIDAhPT0oYz16ZShQZSxVZSx0LGUsaGUsQ2UsWWUubGVuZ3RoLGksYSxpKSkmJjA9PT0oamU9KFVlPWMudHJpbSgpKS5sZW5ndGgpJiYoVWU9XCJcXDBcXDBcIiksZz1VZS5jaGFyQ29kZUF0KDApLG09VWUuY2hhckNvZGVBdCgxKSxnKXtjYXNlIG5lOmJyZWFrO2Nhc2UgRjppZihtPT09dWV8fG09PT1kZSl7WGUrPVVlK28uY2hhckF0KEcpO2JyZWFrfWRlZmF1bHQ6aWYoVWUuY2hhckNvZGVBdChqZS0xKT09PVkpYnJlYWs7WWUrPSRlKFVlLGcsbSxVZS5jaGFyQ29kZUF0KDIpKX1NPTAsTGU9MCxFPTAseWU9MCxNZT0wLFVlPVwiXCIsdz1vLmNoYXJDb2RlQXQoKytHKX19c3dpdGNoKHcpe2Nhc2UgQjpjYXNlIEQ6aWYoZCtwK2YrdStiZT09PTApc3dpdGNoKEwpe2Nhc2UgWjpjYXNlIEs6Y2FzZSBYOmNhc2UgRjpjYXNlIHRlOmNhc2UgSjpjYXNlIFU6Y2FzZSBlZTpjYXNlIFE6Y2FzZSBXOmNhc2UgWTpjYXNlIHE6Y2FzZSBrOmNhc2UgUjpjYXNlIFY6YnJlYWs7ZGVmYXVsdDpFPjAmJihMZT0xKX1kPT09UT9kPTA6Z2UrTT09PTAmJmkhPT1pZSYmVWUubGVuZ3RoPjAmJih5ZT0xLFVlKz1cIlxcMFwiKSxfZSpWZT4wJiZ6ZShTZSxVZSx0LGUsaGUsQ2UsWWUubGVuZ3RoLGksYSxpKSxDZT0xLGhlKys7YnJlYWs7Y2FzZSBrOmNhc2UgVjppZihkK3ArZit1PT09MCl7Q2UrKzticmVha31kZWZhdWx0OnN3aXRjaChDZSsrLEdlPW8uY2hhckF0KEcpLHcpe2Nhc2UgJDpjYXNlIE46aWYocCt1K2Q9PT0wKXN3aXRjaCh5KXtjYXNlIHE6Y2FzZSBZOmNhc2UgJDpjYXNlIE46R2U9XCJcIjticmVhaztkZWZhdWx0OnchPT1OJiYoR2U9XCIgXCIpfWJyZWFrO2Nhc2UgbmU6R2U9XCJcXFxcMFwiO2JyZWFrO2Nhc2UgcmU6R2U9XCJcXFxcZlwiO2JyZWFrO2Nhc2Ugb2U6R2U9XCJcXFxcdlwiO2JyZWFrO2Nhc2UgejpwK2QrdT09PTAmJmdlPjAmJihNZT0xLHllPTEsR2U9XCJcXGZcIitHZSk7YnJlYWs7Y2FzZSAxMDg6aWYocCtkK3UrdmU9PT0wJiZFPjApc3dpdGNoKEctRSl7Y2FzZSAyOnk9PT1jZSYmby5jaGFyQ29kZUF0KEctMyk9PT1ZJiYodmU9eSk7Y2FzZSA4Ong9PT1zZSYmKHZlPXgpfWJyZWFrO2Nhc2UgWTpwK2QrdT09PTAmJihFPUcpO2JyZWFrO2Nhc2UgcTpkK2YrcCt1PT09MCYmKHllPTEsR2UrPVwiXFxyXCIpO2JyZWFrO2Nhc2UgWDpjYXNlIEs6MD09PWQmJihwPXA9PT13PzA6MD09PXA/dzpwKTticmVhaztjYXNlIFQ6cCtkK2Y9PT0wJiZ1Kys7YnJlYWs7Y2FzZSBBOnArZCtmPT09MCYmdS0tO2JyZWFrO2Nhc2UgWjpwK2QrdT09PTAmJmYtLTticmVhaztjYXNlIEk6cCtkK3U9PT0wJiYoMD09PU0mJigyKnkrMyp4PT01MzN8fChfPTAsTT0xKSksZisrKTticmVhaztjYXNlIEY6ZCtmK3ArdStFK2o9PT0wJiYoaj0xKTticmVhaztjYXNlIFU6Y2FzZSBROmlmKHArdStmPjApYnJlYWs7c3dpdGNoKGQpe2Nhc2UgMDpzd2l0Y2goMip3KzMqby5jaGFyQ29kZUF0KEcrMSkpe2Nhc2UgMjM1OmQ9UTticmVhaztjYXNlIDIyMDpqZT1HLGQ9VX1icmVhaztjYXNlIFU6dz09PVEmJnk9PT1VJiZqZSsyIT09RyYmKDMzPT09by5jaGFyQ29kZUF0KGplKzIpJiYoWWUrPW8uc3Vic3RyaW5nKGplLEcrMSkpLEdlPVwiXCIsZD0wKX19aWYoMD09PWQpe2lmKGdlK3ArdStqPT09MCYmaSE9PWllJiZ3IT09aylzd2l0Y2godyl7Y2FzZSBxOmNhc2UgdGU6Y2FzZSBKOmNhc2UgZWU6Y2FzZSBaOmNhc2UgSTppZigwPT09TSl7c3dpdGNoKHkpe2Nhc2UgJDpjYXNlIE46Y2FzZSBEOmNhc2UgQjpHZSs9XCJcXDBcIjticmVhaztkZWZhdWx0OkdlPVwiXFwwXCIrR2UrKHc9PT1xP1wiXCI6XCJcXDBcIil9eWU9MX1lbHNlIHN3aXRjaCh3KXtjYXNlIEk6RSs3PT09RyYmMTA4PT09eSYmKEU9MCksTT0rK187YnJlYWs7Y2FzZSBaOjA9PShNPS0tXykmJih5ZT0xLEdlKz1cIlxcMFwiKX1icmVhaztjYXNlICQ6Y2FzZSBOOnN3aXRjaCh5KXtjYXNlIG5lOmNhc2UgUjpjYXNlIFY6Y2FzZSBrOmNhc2UgcTpjYXNlIHJlOmNhc2UgJDpjYXNlIE46Y2FzZSBEOmNhc2UgQjpicmVhaztkZWZhdWx0OjA9PT1NJiYoeWU9MSxHZSs9XCJcXDBcIil9fVVlKz1HZSx3IT09TiYmdyE9PSQmJihMPXcpfX14PXkseT13LEcrK31pZihqZT1ZZS5sZW5ndGgseGU+MCYmMD09PWplJiYwPT09S2UubGVuZ3RoJiYwPT09dFswXS5sZW5ndGg9PTAmJihpIT09YWV8fDE9PT10Lmxlbmd0aCYmKGdlPjA/WmU6VGUpPT09dFswXSkmJihqZT10LmpvaW4oXCIsXCIpLmxlbmd0aCsyKSxqZT4wKXtpZihsPTA9PT1nZSYmaSE9PWllP2Z1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLG89MCxpPWUubGVuZ3RoLGE9QXJyYXkoaSk7bzxpOysrbyl7Zm9yKHZhciBsPWVbb10uc3BsaXQocyksYz1cIlwiLHU9MCxkPTAsZj0wLHA9MCxDPWwubGVuZ3RoO3U8QzsrK3UpaWYoISgwPT09KGQ9KG49bFt1XSkubGVuZ3RoKSYmQz4xKSl7aWYoZj1jLmNoYXJDb2RlQXQoYy5sZW5ndGgtMSkscD1uLmNoYXJDb2RlQXQoMCksdD1cIlwiLDAhPT11KXN3aXRjaChmKXtjYXNlIFU6Y2FzZSB0ZTpjYXNlIEo6Y2FzZSBlZTpjYXNlIE46Y2FzZSBJOmJyZWFrO2RlZmF1bHQ6dD1cIiBcIn1zd2l0Y2gocCl7Y2FzZSB6Om49dCtaZTtjYXNlIHRlOmNhc2UgSjpjYXNlIGVlOmNhc2UgTjpjYXNlIFo6Y2FzZSBJOmJyZWFrO2Nhc2UgVDpuPXQrbitaZTticmVhaztjYXNlIFk6c3dpdGNoKDIqbi5jaGFyQ29kZUF0KDEpKzMqbi5jaGFyQ29kZUF0KDIpKXtjYXNlIDUzMDppZih3ZT4wKXtuPXQrbi5zdWJzdHJpbmcoOCxkLTEpO2JyZWFrfWRlZmF1bHQ6KHU8MXx8bFt1LTFdLmxlbmd0aDwxKSYmKG49dCtaZStuKX1icmVhaztjYXNlIHE6dD1cIlwiO2RlZmF1bHQ6bj1kPjEmJm4uaW5kZXhPZihcIjpcIik+MD90K24ucmVwbGFjZShiLFwiJDFcIitaZStcIiQyXCIpOnQrbitaZX1jKz1ufWFbb109Yy5yZXBsYWNlKHIsXCJcIikudHJpbSgpfXJldHVybiBhfSh0KTp0LF9lPjAmJnZvaWQgMCE9PShjPXplKEhlLFllLGwsZSxoZSxDZSxqZSxpLGEsaSkpJiYwPT09KFllPWMpLmxlbmd0aClyZXR1cm4gWGUrWWUrS2U7aWYoWWU9bC5qb2luKFwiLFwiKStcIntcIitZZStcIn1cIixtZSp2ZSE9MCl7c3dpdGNoKDIhPT1tZXx8RmUoWWUsMil8fCh2ZT0wKSx2ZSl7Y2FzZSBzZTpZZT1ZZS5yZXBsYWNlKHYsXCI6XCIrUCtcIiQxXCIpK1llO2JyZWFrO2Nhc2UgY2U6WWU9WWUucmVwbGFjZShoLFwiOjpcIitTK1wiaW5wdXQtJDFcIikrWWUucmVwbGFjZShoLFwiOjpcIitQK1wiJDFcIikrWWUucmVwbGFjZShoLFwiOlwiK0grXCJpbnB1dC0kMVwiKStZZX12ZT0wfX1yZXR1cm4gWGUrWWUrS2V9ZnVuY3Rpb24gRGUoZSx0LG4pe3ZhciByPXQudHJpbSgpLnNwbGl0KHUpLG89cixpPXIubGVuZ3RoLGE9ZS5sZW5ndGg7c3dpdGNoKGEpe2Nhc2UgMDpjYXNlIDE6Zm9yKHZhciBsPTAsYz0wPT09YT9cIlwiOmVbMF0rXCIgXCI7bDxpOysrbClvW2xdPUJlKGMsb1tsXSxuLGEpLnRyaW0oKTticmVhaztkZWZhdWx0Omw9MDt2YXIgcz0wO2ZvcihvPVtdO2w8aTsrK2wpZm9yKHZhciBkPTA7ZDxhOysrZClvW3MrK109QmUoZVtkXStcIiBcIixyW2xdLG4sYSkudHJpbSgpfXJldHVybiBvfWZ1bmN0aW9uIEJlKGUsdCxuLHIpe3ZhciBvPXQsaT1vLmNoYXJDb2RlQXQoMCk7c3dpdGNoKGk8MzMmJihpPShvPW8udHJpbSgpKS5jaGFyQ29kZUF0KDApKSxpKXtjYXNlIHo6c3dpdGNoKGdlK3Ipe2Nhc2UgMDpjYXNlIDE6aWYoMD09PWUudHJpbSgpLmxlbmd0aClicmVhaztkZWZhdWx0OnJldHVybiBvLnJlcGxhY2UoZCxcIiQxXCIrZS50cmltKCkpfWJyZWFrO2Nhc2UgWTppZigxMDMhPT1vLmNoYXJDb2RlQXQoMSkpcmV0dXJuIGUudHJpbSgpK28ucmVwbGFjZShkLFwiJDFcIitlLnRyaW0oKSk7aWYod2U+MCYmZ2U+MClyZXR1cm4gby5yZXBsYWNlKGYsXCIkMVwiKS5yZXBsYWNlKGQsXCIkMVwiK1RlKTtkZWZhdWx0OmlmKG4qZ2U+MCYmby5pbmRleE9mKFwiXFxmXCIpPjApcmV0dXJuIG8ucmVwbGFjZShkLChlLmNoYXJDb2RlQXQoMCk9PT1ZP1wiXCI6XCIkMVwiKStlLnRyaW0oKSl9cmV0dXJuIGUrb31mdW5jdGlvbiAkZShlLHQsbixyKXt2YXIgcyx1PTAsZD1lK1wiO1wiLGY9Mip0KzMqbis0KnI7aWYoOTQ0PT09ZilyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGgsbj1lLmluZGV4T2YoXCI6XCIsOSkrMSxyPWUuc3Vic3RyaW5nKDAsbikudHJpbSgpLG89ZS5zdWJzdHJpbmcobix0LTEpLnRyaW0oKTtzd2l0Y2goZS5jaGFyQ29kZUF0KDkpKlJlKXtjYXNlIDA6YnJlYWs7Y2FzZSBXOmlmKDExMCE9PWUuY2hhckNvZGVBdCgxMCkpYnJlYWs7ZGVmYXVsdDp2YXIgaT1vLnNwbGl0KChvPVwiXCIsbCkpLGE9MDtmb3Iobj0wLHQ9aS5sZW5ndGg7YTx0O249MCwrK2Epe2Zvcih2YXIgcz1pW2FdLHU9cy5zcGxpdChjKTtzPXVbbl07KXt2YXIgZD1zLmNoYXJDb2RlQXQoMCk7aWYoMT09PVJlJiYoZD5GJiZkPDkwfHxkPjk2JiZkPDEyM3x8ZD09PUd8fGQ9PT1XJiZzLmNoYXJDb2RlQXQoMSkhPT1XKSYmaXNOYU4ocGFyc2VGbG9hdChzKSkrKC0xIT09cy5pbmRleE9mKFwiKFwiKSk9PT0xKXN3aXRjaChzKXtjYXNlXCJpbmZpbml0ZVwiOmNhc2VcImFsdGVybmF0ZVwiOmNhc2VcImJhY2t3YXJkc1wiOmNhc2VcInJ1bm5pbmdcIjpjYXNlXCJub3JtYWxcIjpjYXNlXCJmb3J3YXJkc1wiOmNhc2VcImJvdGhcIjpjYXNlXCJub25lXCI6Y2FzZVwibGluZWFyXCI6Y2FzZVwiZWFzZVwiOmNhc2VcImVhc2UtaW5cIjpjYXNlXCJlYXNlLW91dFwiOmNhc2VcImVhc2UtaW4tb3V0XCI6Y2FzZVwicGF1c2VkXCI6Y2FzZVwicmV2ZXJzZVwiOmNhc2VcImFsdGVybmF0ZS1yZXZlcnNlXCI6Y2FzZVwiaW5oZXJpdFwiOmNhc2VcImluaXRpYWxcIjpjYXNlXCJ1bnNldFwiOmNhc2VcInN0ZXAtc3RhcnRcIjpjYXNlXCJzdGVwLWVuZFwiOmJyZWFrO2RlZmF1bHQ6cys9SWV9dVtuKytdPXN9bys9KDA9PT1hP1wiXCI6XCIsXCIpK3Uuam9pbihcIiBcIil9fXJldHVybiBvPXIrbytcIjtcIiwxPT09bWV8fDI9PT1tZSYmRmUobywxKT9TK28rbzpvfShkKTtpZigwPT09bWV8fDI9PT1tZSYmIUZlKGQsMSkpcmV0dXJuIGQ7c3dpdGNoKGYpe2Nhc2UgMTAxNTpyZXR1cm4gOTc9PT1kLmNoYXJDb2RlQXQoMTApP1MrZCtkOmQ7Y2FzZSA5NTE6cmV0dXJuIDExNj09PWQuY2hhckNvZGVBdCgzKT9TK2QrZDpkO2Nhc2UgOTYzOnJldHVybiAxMTA9PT1kLmNoYXJDb2RlQXQoNSk/UytkK2Q6ZDtjYXNlIDEwMDk6aWYoMTAwIT09ZC5jaGFyQ29kZUF0KDQpKWJyZWFrO2Nhc2UgOTY5OmNhc2UgOTQyOnJldHVybiBTK2QrZDtjYXNlIDk3ODpyZXR1cm4gUytkK1ArZCtkO2Nhc2UgMTAxOTpjYXNlIDk4MzpyZXR1cm4gUytkK1ArZCtIK2QrZDtjYXNlIDg4MzpyZXR1cm4gZC5jaGFyQ29kZUF0KDgpPT09Vz9TK2QrZDpkLmluZGV4T2YoXCJpbWFnZS1zZXQoXCIsMTEpPjA/ZC5yZXBsYWNlKEUsXCIkMVwiK1MrXCIkMlwiKStkOmQ7Y2FzZSA5MzI6aWYoZC5jaGFyQ29kZUF0KDQpPT09Vylzd2l0Y2goZC5jaGFyQ29kZUF0KDUpKXtjYXNlIDEwMzpyZXR1cm4gUytcImJveC1cIitkLnJlcGxhY2UoXCItZ3Jvd1wiLFwiXCIpK1MrZCtIK2QucmVwbGFjZShcImdyb3dcIixcInBvc2l0aXZlXCIpK2Q7Y2FzZSAxMTU6cmV0dXJuIFMrZCtIK2QucmVwbGFjZShcInNocmlua1wiLFwibmVnYXRpdmVcIikrZDtjYXNlIDk4OnJldHVybiBTK2QrSCtkLnJlcGxhY2UoXCJiYXNpc1wiLFwicHJlZmVycmVkLXNpemVcIikrZH1yZXR1cm4gUytkK0grZCtkO2Nhc2UgOTY0OnJldHVybiBTK2QrSCtcImZsZXgtXCIrZCtkO2Nhc2UgMTAyMzppZig5OSE9PWQuY2hhckNvZGVBdCg4KSlicmVhaztyZXR1cm4gcz1kLnN1YnN0cmluZyhkLmluZGV4T2YoXCI6XCIsMTUpKS5yZXBsYWNlKFwiZmxleC1cIixcIlwiKS5yZXBsYWNlKFwic3BhY2UtYmV0d2VlblwiLFwianVzdGlmeVwiKSxTK1wiYm94LXBhY2tcIitzK1MrZCtIK1wiZmxleC1wYWNrXCIrcytkO2Nhc2UgMTAwNTpyZXR1cm4gaS50ZXN0KGQpP2QucmVwbGFjZShvLFwiOlwiK1MpK2QucmVwbGFjZShvLFwiOlwiK1ApK2Q6ZDtjYXNlIDFlMzpzd2l0Y2godT0ocz1kLnN1YnN0cmluZygxMykudHJpbSgpKS5pbmRleE9mKFwiLVwiKSsxLHMuY2hhckNvZGVBdCgwKStzLmNoYXJDb2RlQXQodSkpe2Nhc2UgMjI2OnM9ZC5yZXBsYWNlKHgsXCJ0YlwiKTticmVhaztjYXNlIDIzMjpzPWQucmVwbGFjZSh4LFwidGItcmxcIik7YnJlYWs7Y2FzZSAyMjA6cz1kLnJlcGxhY2UoeCxcImxyXCIpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIGR9cmV0dXJuIFMrZCtIK3MrZDtjYXNlIDEwMTc6aWYoLTE9PT1kLmluZGV4T2YoXCJzdGlja3lcIiw5KSlyZXR1cm4gZDtjYXNlIDk3NTpzd2l0Y2godT0oZD1lKS5sZW5ndGgtMTAsZj0ocz0oMzM9PT1kLmNoYXJDb2RlQXQodSk/ZC5zdWJzdHJpbmcoMCx1KTpkKS5zdWJzdHJpbmcoZS5pbmRleE9mKFwiOlwiLDcpKzEpLnRyaW0oKSkuY2hhckNvZGVBdCgwKSsoMHxzLmNoYXJDb2RlQXQoNykpKXtjYXNlIDIwMzppZihzLmNoYXJDb2RlQXQoOCk8MTExKWJyZWFrO2Nhc2UgMTE1OmQ9ZC5yZXBsYWNlKHMsUytzKStcIjtcIitkO2JyZWFrO2Nhc2UgMjA3OmNhc2UgMTAyOmQ9ZC5yZXBsYWNlKHMsUysoZj4xMDI/XCJpbmxpbmUtXCI6XCJcIikrXCJib3hcIikrXCI7XCIrZC5yZXBsYWNlKHMsUytzKStcIjtcIitkLnJlcGxhY2UocyxIK3MrXCJib3hcIikrXCI7XCIrZH1yZXR1cm4gZCtcIjtcIjtjYXNlIDkzODppZihkLmNoYXJDb2RlQXQoNSk9PT1XKXN3aXRjaChkLmNoYXJDb2RlQXQoNikpe2Nhc2UgMTA1OnJldHVybiBzPWQucmVwbGFjZShcIi1pdGVtc1wiLFwiXCIpLFMrZCtTK1wiYm94LVwiK3MrSCtcImZsZXgtXCIrcytkO2Nhc2UgMTE1OnJldHVybiBTK2QrSCtcImZsZXgtaXRlbS1cIitkLnJlcGxhY2UoXyxcIlwiKStkO2RlZmF1bHQ6cmV0dXJuIFMrZCtIK1wiZmxleC1saW5lLXBhY2tcIitkLnJlcGxhY2UoXCJhbGlnbi1jb250ZW50XCIsXCJcIikucmVwbGFjZShfLFwiXCIpK2R9YnJlYWs7Y2FzZSA5NzM6Y2FzZSA5ODk6aWYoZC5jaGFyQ29kZUF0KDMpIT09V3x8MTIyPT09ZC5jaGFyQ29kZUF0KDQpKWJyZWFrO2Nhc2UgOTMxOmNhc2UgOTUzOmlmKCEwPT09ai50ZXN0KGUpKXJldHVybiAxMTU9PT0ocz1lLnN1YnN0cmluZyhlLmluZGV4T2YoXCI6XCIpKzEpKS5jaGFyQ29kZUF0KDApPyRlKGUucmVwbGFjZShcInN0cmV0Y2hcIixcImZpbGwtYXZhaWxhYmxlXCIpLHQsbixyKS5yZXBsYWNlKFwiOmZpbGwtYXZhaWxhYmxlXCIsXCI6c3RyZXRjaFwiKTpkLnJlcGxhY2UocyxTK3MpK2QucmVwbGFjZShzLFArcy5yZXBsYWNlKFwiZmlsbC1cIixcIlwiKSkrZDticmVhaztjYXNlIDk2MjppZihkPVMrZCsoMTAyPT09ZC5jaGFyQ29kZUF0KDUpP0grZDpcIlwiKStkLG4rcj09PTIxMSYmMTA1PT09ZC5jaGFyQ29kZUF0KDEzKSYmZC5pbmRleE9mKFwidHJhbnNmb3JtXCIsMTApPjApcmV0dXJuIGQuc3Vic3RyaW5nKDAsZC5pbmRleE9mKFwiO1wiLDI3KSsxKS5yZXBsYWNlKGEsXCIkMVwiK1MrXCIkMlwiKStkfXJldHVybiBkfWZ1bmN0aW9uIEZlKGUsdCl7dmFyIG49ZS5pbmRleE9mKDE9PT10P1wiOlwiOlwie1wiKSxyPWUuc3Vic3RyaW5nKDAsMyE9PXQ/bjoxMCksbz1lLnN1YnN0cmluZyhuKzEsZS5sZW5ndGgtMSk7cmV0dXJuIE1lKDIhPT10P3I6ci5yZXBsYWNlKE0sXCIkMVwiKSxvLHQpfWZ1bmN0aW9uIE5lKGUsdCl7dmFyIG49JGUodCx0LmNoYXJDb2RlQXQoMCksdC5jaGFyQ29kZUF0KDEpLHQuY2hhckNvZGVBdCgyKSk7cmV0dXJuIG4hPT10K1wiO1wiP24ucmVwbGFjZShMLFwiIG9yICgkMSlcIikuc3Vic3RyaW5nKDQpOlwiKFwiK3QrXCIpXCJ9ZnVuY3Rpb24gemUoZSx0LG4scixvLGksYSxsLGMscyl7Zm9yKHZhciB1LGQ9MCxmPXQ7ZDxfZTsrK2Qpc3dpdGNoKHU9TGVbZF0uY2FsbChVZSxlLGYsbixyLG8saSxhLGwsYyxzKSl7Y2FzZSB2b2lkIDA6Y2FzZSExOmNhc2UhMDpjYXNlIG51bGw6YnJlYWs7ZGVmYXVsdDpmPXV9aWYoZiE9PXQpcmV0dXJuIGZ9ZnVuY3Rpb24gV2UoZSx0LG4scil7Zm9yKHZhciBvPXQrMTtvPG47KytvKXN3aXRjaChyLmNoYXJDb2RlQXQobykpe2Nhc2UgUTppZihlPT09VSYmci5jaGFyQ29kZUF0KG8tMSk9PT1VJiZ0KzIhPT1vKXJldHVybiBvKzE7YnJlYWs7Y2FzZSBEOmlmKGU9PT1RKXJldHVybiBvKzF9cmV0dXJuIG99ZnVuY3Rpb24gR2UoZSl7Zm9yKHZhciB0IGluIGUpe3ZhciBuPWVbdF07c3dpdGNoKHQpe2Nhc2VcImtleWZyYW1lXCI6UmU9MHxuO2JyZWFrO2Nhc2VcImdsb2JhbFwiOndlPTB8bjticmVhaztjYXNlXCJjYXNjYWRlXCI6Z2U9MHxuO2JyZWFrO2Nhc2VcImNvbXByZXNzXCI6eWU9MHxuO2JyZWFrO2Nhc2VcInNlbWljb2xvblwiOmJlPTB8bjticmVhaztjYXNlXCJwcmVzZXJ2ZVwiOnhlPTB8bjticmVhaztjYXNlXCJwcmVmaXhcIjpNZT1udWxsLG4/XCJmdW5jdGlvblwiIT10eXBlb2Ygbj9tZT0xOihtZT0yLE1lPW4pOm1lPTB9fXJldHVybiBHZX1mdW5jdGlvbiBVZSh0LG4pe2lmKHZvaWQgMCE9PXRoaXMmJnRoaXMuY29uc3RydWN0b3I9PT1VZSlyZXR1cm4gZSh0KTt2YXIgbz10LGk9by5jaGFyQ29kZUF0KDApO2k8MzMmJihpPShvPW8udHJpbSgpKS5jaGFyQ29kZUF0KDApKSxSZT4wJiYoSWU9by5yZXBsYWNlKHAsaT09PVQ/XCJcIjpcIi1cIikpLGk9MSwxPT09Z2U/VGU9bzpaZT1vO3ZhciBhLGw9W1RlXTtfZT4wJiZ2b2lkIDAhPT0oYT16ZShFZSxuLGwsbCxoZSxDZSwwLDAsMCwwKSkmJlwic3RyaW5nXCI9PXR5cGVvZiBhJiYobj1hKTt2YXIgYz1BZShPZSxsLG4sMCwwKTtyZXR1cm4gX2U+MCYmdm9pZCAwIT09KGE9emUoamUsYyxsLGwsaGUsQ2UsYy5sZW5ndGgsMCwwLDApKSYmXCJzdHJpbmdcIiE9dHlwZW9mKGM9YSkmJihpPTApLEllPVwiXCIsVGU9XCJcIixaZT1cIlwiLHZlPTAsaGU9MSxDZT0xLHllKmk9PTA/YzpjLnJlcGxhY2UocixcIlwiKS5yZXBsYWNlKGcsXCJcIikucmVwbGFjZShtLFwiJDFcIikucmVwbGFjZSh3LFwiJDFcIikucmVwbGFjZSh5LFwiIFwiKX1yZXR1cm4gVWUudXNlPWZ1bmN0aW9uIGUodCl7c3dpdGNoKHQpe2Nhc2Ugdm9pZCAwOmNhc2UgbnVsbDpfZT1MZS5sZW5ndGg9MDticmVhaztkZWZhdWx0OmlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpTGVbX2UrK109dDtlbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiB0KWZvcih2YXIgbj0wLHI9dC5sZW5ndGg7bjxyOysrbillKHRbbl0pO2Vsc2UgVmU9MHwhIXR9cmV0dXJuIGV9LFVlLnNldD1HZSx2b2lkIDAhPT10JiZHZSh0KSxVZX0obnVsbCl9LDMzNzooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse2E6KCk9PmYsTjooKT0+ZH0pO3ZhciByPW4oNjc4KSxvPW4oNDM4KSxpPW4oMTAwKSxhPW4oMTI3KTtjb25zdCBsPWU9Pih7aWRlbnRpdHk6ZSxvcGVuZmluV2luZG93OmZpbi5XaW5kb3cud3JhcFN5bmMoZSksZ2V0UGFnZXM6YXN5bmMoKT0+KGF3YWl0KDAsby54cCkoZSkpLmRpc3BhdGNoKG8uZm4uR2V0UGFnZXNGb3JXaW5kb3csZSksZ2V0UGFnZTphc3luYyB0PT4oYXdhaXQoMCxvLnhwKShlKSkuZGlzcGF0Y2goby5mbi5HZXRQYWdlRm9yV2luZG93LHtpZGVudGl0eTplLHBhZ2VJZDp0fSksYWRkUGFnZTphc3luYyB0PT57Y29uc3Qgbj1hd2FpdCgwLG8ueHApKGUpO3Q/LnRpdGxlfHwodC50aXRsZT1hd2FpdCBuLmRpc3BhdGNoKG8uZm4uR2V0VW5pcXVlUGFnZVRpdGxlLHZvaWQgMCkpO2NvbnN0IHI9KGF3YWl0IG4uZGlzcGF0Y2goby5mbi5HZXRBbGxBdHRhY2hlZFBhZ2VzLHZvaWQgMCkpLmZpbmQoKGU9PmUucGFnZUlkPT09dC5wYWdlSWR8fGUudGl0bGU9PT10LnRpdGxlKSk7aWYocil0aHJvdyByLnBhZ2VJZD09PXQucGFnZUlkP25ldyBFcnJvcihgcGFnZSB3aXRoIGlkICR7dC5wYWdlSWR9IGlzIGFscmVhZHkgYXR0YWNoZWQgdG8gYSBicm93c2VyIHdpbmRvdyAke3IucGFyZW50SWRlbnRpdHkubmFtZX1gKTpuZXcgRXJyb3IoYHBhZ2Ugd2l0aCB0aXRsZSAke3QudGl0bGV9IGlzIGFscmVhZHkgYXR0YWNoZWQgdG8gYSBicm93c2VyIHdpbmRvdyAke3IucGFyZW50SWRlbnRpdHkubmFtZX1gKTtjb25zdCBpPXtpZGVudGl0eTplLHBhZ2VzOlt0XX07cmV0dXJuIG4uZGlzcGF0Y2goby5mbi5BdHRhY2hQYWdlc1RvV2luZG93LGkpfSxyZW1vdmVQYWdlOmFzeW5jIHQ9Pihhd2FpdCgwLG8ueHApKGUpKS5kaXNwYXRjaChvLmZuLkRldGFjaFBhZ2VzRnJvbVdpbmRvdyx7aWRlbnRpdHk6ZSxwYWdlSWRzOlt0XX0pLHNldEFjdGl2ZVBhZ2U6YXN5bmMgdD0+KGF3YWl0KDAsby54cCkoZSkpLmRpc3BhdGNoKG8uZm4uU2V0QWN0aXZlUGFnZSx7aWRlbnRpdHk6ZSxwYWdlSWQ6dH0pLHVwZGF0ZVBhZ2U6YXN5bmMgdD0+e2NvbnN0IG49YXdhaXQoMCxvLnhwKShlKTtyZXR1cm4gdC5pZGVudGl0eT1lLG4uZGlzcGF0Y2goby5mbi5VcGRhdGVQYWdlRm9yV2luZG93LHQpfSxyZW9yZGVyUGFnZXM6YXN5bmMgdD0+e2NvbnN0IG49YXdhaXQoMCxvLnhwKShlKTtyZXR1cm4gdC5pZGVudGl0eT1lLG4uZGlzcGF0Y2goby5mbi5SZW9yZGVyUGFnZXNGb3JXaW5kb3csdCl9LF9vcGVuR2xvYmFsQ29udGV4dE1lbnU6YXN5bmMgdD0+e2NvbnN0IG49YXdhaXQoMCxvLnhwKShlKTtyZXR1cm4gdC5pZGVudGl0eT1lLG4uZGlzcGF0Y2goby5mbi5PcGVuR2xvYmFsQ29udGV4dE1lbnVJbnRlcm5hbCx0KX0scmVwbGFjZVRvb2xiYXJPcHRpb25zOmFzeW5jIHQ9Pnthd2FpdCgwLG8ueHApKGUpO2NvbnN0IG49ZmluLldpbmRvdy53cmFwU3luYyhlKTthd2FpdCBuLnVwZGF0ZU9wdGlvbnMoe3dvcmtzcGFjZVBsYXRmb3JtOnt0b29sYmFyT3B0aW9uczp0fX0pfSxyZXBsYWNlV2luZG93U3RhdGVCdXR0b25PcHRpb25zOmFzeW5jIHQ9Pnthd2FpdCgwLG8ueHApKGUpO2NvbnN0IG49ZmluLldpbmRvdy53cmFwU3luYyhlKTthd2FpdCBuLnVwZGF0ZU9wdGlvbnMoe3dvcmtzcGFjZVBsYXRmb3JtOnt3aW5kb3dTdGF0ZUJ1dHRvbk9wdGlvbnM6dH19KX0sX29wZW5WaWV3VGFiQ29udGV4dE1lbnU6YXN5bmMgdD0+e2NvbnN0IG49YXdhaXQoMCxvLnhwKShlKTtyZXR1cm4gdC5pZGVudGl0eT1lLG4uZGlzcGF0Y2goby5mbi5PcGVuVmlld1RhYkNvbnRleHRNZW51SW50ZXJuYWwsdCl9LF9vcGVuUGFnZVRhYkNvbnRleHRNZW51OmFzeW5jIHQ9Pntjb25zdCBuPWF3YWl0KDAsby54cCkoZSk7cmV0dXJuIHQuaWRlbnRpdHk9ZSxuLmRpc3BhdGNoKG8uZm4uT3BlblBhZ2VUYWJDb250ZXh0TWVudUludGVybmFsLHQpfSxfb3BlblNhdmVNb2RhbDphc3luYyB0PT57YXdhaXQoMCxvLnhwKShlKTtyZXR1cm4oYXdhaXQoMCxhLkRtKShlKSkuZGlzcGF0Y2goYS55ei5PcGVuU2F2ZU1vZGFsSW50ZXJuYWwsdCl9LF9vcGVuU2F2ZUJ1dHRvbkNvbnRleHRNZW51OmFzeW5jIHQ9Pntjb25zdCBuPWF3YWl0KDAsby54cCkoZSk7cmV0dXJuIHQuaWRlbnRpdHk9ZSxuLmRpc3BhdGNoKG8uZm4uT3BlblNhdmVCdXR0b25Db250ZXh0TWVudUludGVybmFsLHQpfX0pLGM9ZT0+e2NvbnN0IHQ9ZmluLlBsYXRmb3JtLndyYXBTeW5jKGUpO3JldHVybnt3cmFwU3luYzplPT5sKGUpLGNyZWF0ZVdpbmRvdzphc3luYyBuPT57YXdhaXQoMCxvLnhwKShlKTtjb25zdCByPWF3YWl0IHQuY3JlYXRlV2luZG93KG4pO3JldHVybiBsKHIuaWRlbnRpdHkpfSxnZXRBbGxBdHRhY2hlZFBhZ2VzOmFzeW5jKCk9Pihhd2FpdCgwLG8ueHApKGUpKS5kaXNwYXRjaChvLmZuLkdldEFsbEF0dGFjaGVkUGFnZXMsdm9pZCAwKSxnZXRBbGxXaW5kb3dzOmFzeW5jKCk9Pnthd2FpdCgwLG8ueHApKGUpO3JldHVybihhd2FpdCBmaW4uQXBwbGljYXRpb24ud3JhcFN5bmMoZSkuZ2V0Q2hpbGRXaW5kb3dzKCkpLmZpbHRlcigoZT0+ZS5pZGVudGl0eS5uYW1lLnN0YXJ0c1dpdGgoXCJpbnRlcm5hbC1nZW5lcmF0ZWQtd2luZG93LVwiKSkpLm1hcCgoZT0+bChlLmlkZW50aXR5KSkpfSxnZXRVbmlxdWVQYWdlVGl0bGU6YXN5bmMgdD0+KGF3YWl0KDAsby54cCkoZSkpLmRpc3BhdGNoKG8uZm4uR2V0VW5pcXVlUGFnZVRpdGxlLHQpLGdldExhc3RGb2N1c2VkV2luZG93OmFzeW5jKCk9Pihhd2FpdCgwLG8ueHApKGUpKS5kaXNwYXRjaChvLmZuLkdldExhc3RGb2N1c2VkQnJvd3NlcldpbmRvdyx2b2lkIDApfX0scz1lPT4oe2NyZWF0ZVBhZ2U6YXN5bmMgdD0+KGF3YWl0KDAsby54cCkoZSkpLmRpc3BhdGNoKG8uZm4uQ3JlYXRlU2F2ZWRQYWdlSW50ZXJuYWwsdCksZGVsZXRlUGFnZTphc3luYyB0PT4oYXdhaXQoMCxvLnhwKShlKSkuZGlzcGF0Y2goby5mbi5EZWxldGVTYXZlZFBhZ2VJbnRlcm5hbCx0KSx1cGRhdGVQYWdlOmFzeW5jIHQ9Pihhd2FpdCgwLG8ueHApKGUpKS5kaXNwYXRjaChvLmZuLlVwZGF0ZVNhdmVkUGFnZUludGVybmFsLHQpLGdldFBhZ2U6YXN5bmMgdD0+KGF3YWl0KDAsby54cCkoZSkpLmRpc3BhdGNoKG8uZm4uR2V0U2F2ZWRQYWdlLHQpLGdldFBhZ2VzOmFzeW5jIHQ9Pihhd2FpdCgwLG8ueHApKGUpKS5kaXNwYXRjaChvLmZuLkdldFNhdmVkUGFnZXMsdCksc2F2ZVBhZ2U6YXN5bmMgdD0+KGF3YWl0KDAsby54cCkoZSkpLmRpc3BhdGNoKG8uZm4uU2F2ZVBhZ2UsdCksY3JlYXRlV29ya3NwYWNlOmFzeW5jIHQ9Pihhd2FpdCgwLG8uajcpKGUpKS5kaXNwYXRjaChvLmZuLkNyZWF0ZVNhdmVkV29ya3NwYWNlLHQpLGRlbGV0ZVdvcmtzcGFjZTphc3luYyB0PT57Y29uc3Qgbj1mKCkscj1hd2FpdCBuLmdldEN1cnJlbnRXb3Jrc3BhY2UoKTtpZihyLndvcmtzcGFjZUlkPT09dCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBkZWxldGUgY3VycmVudCBhY3RpdmUgd29ya3NwYWNlICR7ci50aXRsZX1gKTtyZXR1cm4oYXdhaXQoMCxvLmo3KShlKSkuZGlzcGF0Y2goby5mbi5EZWxldGVTYXZlZFdvcmtzcGFjZSx0KX0sdXBkYXRlV29ya3NwYWNlOmFzeW5jIHQ9Pihhd2FpdCgwLG8uajcpKGUpKS5kaXNwYXRjaChvLmZuLlVwZGF0ZVNhdmVkV29ya3NwYWNlLHQpLGdldFdvcmtzcGFjZTphc3luYyB0PT4oYXdhaXQoMCxvLmo3KShlKSkuZGlzcGF0Y2goby5mbi5HZXRTYXZlZFdvcmtzcGFjZSx0KSxnZXRXb3Jrc3BhY2VzOmFzeW5jIHQ9Pihhd2FpdCgwLG8uajcpKGUpKS5kaXNwYXRjaChvLmZuLkdldFNhdmVkV29ya3NwYWNlcyx0KSxzYXZlV29ya3NwYWNlOmFzeW5jIHQ9Pihhd2FpdCgwLG8uajcpKGUpKS5kaXNwYXRjaChvLmZuLlNhdmVXb3Jrc3BhY2UsdCksZ2V0RG9ja1Byb3ZpZGVyQ29uZmlnOmFzeW5jIHQ9Pihhd2FpdCgwLG8uajcpKGUpKS5kaXNwYXRjaChvLmZuLkdldERvY2tQcm92aWRlckNvbmZpZyx0KSxzYXZlRG9ja1Byb3ZpZGVyQ29uZmlnOmFzeW5jIHQ9Pihhd2FpdCgwLG8uajcpKGUpKS5kaXNwYXRjaChvLmZuLlNhdmVEb2NrUHJvdmlkZXJDb25maWcsdCl9KTt2YXIgdT1uKDcwNSk7Y29uc3QgZD1lPT57Y29uc3QgdD1maW4uUGxhdGZvcm0ud3JhcFN5bmMoZSk7bGV0IG47cmV0dXJuIE9iamVjdC5hc3NpZ24odCx7YXBwbHlTbmFwc2hvdDphc3luYyh0LG4pPT57aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQmJiF0Py53aW5kb3dzKXRocm93IG5ldyBFcnJvcihcIk5vdCBhIHZhbGlkIGJyb3dzZXIgc25hcHNob3RcIik7cmV0dXJuIGZpbi5QbGF0Zm9ybS53cmFwU3luYyhlKS5hcHBseVNuYXBzaG90KHQsbil9LGdldFNuYXBzaG90OigpPT5maW4uUGxhdGZvcm0ud3JhcFN5bmMoZSkuZ2V0U25hcHNob3QoKS50aGVuKChlPT5lKSksbGF1bmNoQXBwOmFzeW5jIHQ9Pntjb25zb2xlLndhcm4oXCJsYXVuY2hBcHAgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIEl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSBjcmVhdGVWaWV3IC0gaHR0cHM6Ly9kZXZlbG9wZXJzLm9wZW5maW4uY28vb2YtZG9jcy9kb2NzL3BsYXRmb3JtLWdldHRpbmctc3RhcnRlZCNhZGQtYS12aWV3LXRvLWFuLWV4aXN0aW5nLXdpbmRvdyBvciAgY3JlYXRlV2luZG93IC0gaHR0cHM6Ly9kZXZlbG9wZXJzLm9wZW5maW4uY28vb2YtZG9jcy9kb2NzL3BsYXRmb3JtLWdldHRpbmctc3RhcnRlZCNjcmVhdGUtYS1wbGF0Zm9ybS13aW5kb3cgaW5zdGVhZC5cIiksdC50YXJnZXR8fCh0LnRhcmdldD17dXVpZDpyLkFCLG5hbWU6ci5vQyxlbnRpdHlUeXBlOnIuQ0x8fFwidW5rbm93blwifSk7cmV0dXJuKGF3YWl0KDAsby5qNykoZSkpLmRpc3BhdGNoKG8uZm4uTGF1bmNoQXBwLHQpfSxfaW52b2tlQ3VzdG9tQWN0aW9uOmFzeW5jKHQsbik9Pntjb25zdCByPWF3YWl0KDAsby5qNykoZSksYT17YWN0aW9uSWQ6dCxwYXlsb2FkOnsuLi5uLGNhbGxlclR5cGU6bi5jYWxsZXJUeXBlfHxpLiRnLkFQSX19O3JldHVybiByLmRpc3BhdGNoKG8uZm4uSW52b2tlQ3VzdG9tQWN0aW9uSW50ZXJuYWwsYSl9LF9yZXF1ZXN0UXVpdFBsYXRmb3JtRGlhbG9nOmFzeW5jIHQ9Pihhd2FpdCgwLG8uajcpKGUpKS5kaXNwYXRjaChvLmZuLlJlcXVlc3RRdWl0UGxhdGZvcm1EaWFsb2dJbnRlcm5hbCx0KSxnZXRDdXJyZW50V29ya3NwYWNlOmFzeW5jKCk9Pihhd2FpdCgwLG8uajcpKGUpKS5kaXNwYXRjaChvLmZuLkdldEN1cnJlbnRXb3Jrc3BhY2Usdm9pZCAwKSxhcHBseVdvcmtzcGFjZTphc3luYyh0LG4pPT4oYXdhaXQoMCxvLmo3KShlKSkuZGlzcGF0Y2goby5mbi5BcHBseVdvcmtzcGFjZSx7Li4udCxvcHRpb25zOm59KSxzZXRBY3RpdmVXb3Jrc3BhY2U6YXN5bmMgdD0+KGF3YWl0KDAsby5qNykoZSkpLmRpc3BhdGNoKG8uZm4uU2V0QWN0aXZlV29ya3NwYWNlLHQpLF9yYWlzZUFuYWx5dGljczphc3luYyB0PT57aWYobnx8KG49YXdhaXQoMCxvLkhoKShlKSksXCJvYmplY3RcIj09dHlwZW9mIG4mJm4/LmFuYWx5dGljcz8uaXNTdXBwb3J0ZWQpe3JldHVybihhd2FpdCgwLG8uajcpKGUpKS5kaXNwYXRjaChvLmZuLkFuYWx5dGljcyx0KX1lLnV1aWR9LFRoZW1lOigwLHUuUDApKGUpLEJyb3dzZXI6YyhlKSxTdG9yYWdlOnMoZSl9KX0sZj0oKT0+ZChmaW4ubWUuaWRlbnRpdHkpfSw3MDU6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtQMDooKT0+YX0pO24oNjEpLG4oNzI4KSxuKDEyMSksbigxMjcpO3ZhciByPW4oMTE3KTt2YXIgbzshZnVuY3Rpb24oZSl7ZS5VcGRhdGVQbGF0Zm9ybVRoZW1lU2NoZW1lPVwidXBkYXRlLXBsYXRmb3JtLXRoZW1lLXNjaGVtZVwifShvfHwobz17fSkpOygwLHIuWikoXCJvZi13b3Jrc3BhY2Utbm90aWZpY2F0aW9ucy1zeW5jXCIpO24oMTUwKTt2YXIgaT1uKDQzOCk7Y29uc3QgYT1lPT4oe2dldFRoZW1lczphc3luYygpPT4oYXdhaXQoMCxpLmo3KShlKSkuZGlzcGF0Y2goaS5mbi5HZXRUaGVtZXMsdm9pZCAwKSxzZXRTZWxlY3RlZFNjaGVtZTphc3luYyB0PT4oYXdhaXQoMCxpLmo3KShlKSkuZGlzcGF0Y2goaS5mbi5TZXRTZWxlY3RlZFNjaGVtZSx0KSxnZXRTZWxlY3RlZFNjaGVtZTphc3luYygpPT4oYXdhaXQoMCxpLmo3KShlKSkuZGlzcGF0Y2goaS5mbi5HZXRTZWxlY3RlZFNjaGVtZSx2b2lkIDApfSl9LDEwMDooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQseyRnOigpPT5zLGlEOigpPT5vLHdoOigpPT5yfSk7dmFyIHIsbyxpLGEsbCxjLHMsdTtuKDU2NCksbig0OTUpOyFmdW5jdGlvbihlKXtlLk5ld1dpbmRvdz1cIk5ld1dpbmRvd1wiLGUuTmV3UGFnZT1cIk5ld1BhZ2VcIixlLlNhdmVQYWdlPVwiU2F2ZVBhZ2VcIixlLlNhdmVQYWdlQXM9XCJTYXZlUGFnZUFzXCIsZS5QcmludD1cIlByaW50XCIsZS5QcmludEFsbD1cIlByaW50QWxsXCIsZS5QcmludFNjcmVlbj1cIlByaW50U2NyZWVuXCIsZS5DbG9zZVdpbmRvdz1cIkNsb3NlV2luZG93XCIsZS5SZXN0b3JlQ2hhbmdlcz1cIlJlc3RvcmVDaGFuZ2VzXCIsZS5TYXZlV29ya3NwYWNlPVwiU2F2ZVdvcmtzcGFjZVwiLGUuU2F2ZVdvcmtzcGFjZUFzPVwiU2F2ZVdvcmtzcGFjZUFzXCIsZS5SZW5hbWVXb3Jrc3BhY2U9XCJSZW5hbWVXb3Jrc3BhY2VcIixlLlN3aXRjaFdvcmtzcGFjZT1cIlN3aXRjaFdvcmtzcGFjZVwiLGUuRGVsZXRlV29ya3NwYWNlPVwiRGVsZXRlV29ya3NwYWNlXCIsZS5PcGVuU3RvcmVmcm9udD1cIk9wZW5TdG9yZWZyb250XCIsZS5BcHBlYXJhbmNlPVwiQXBwZWFyYW5jZVwiLGUuUXVpdD1cIlF1aXRcIixlLkN1c3RvbT1cIkN1c3RvbVwifShyfHwocj17fSkpLGZ1bmN0aW9uKGUpe2UuTGlnaHQ9XCJsaWdodFwiLGUuRGFyaz1cImRhcmtcIixlLlN5c3RlbT1cInN5c3RlbVwifShvfHwobz17fSkpLGZ1bmN0aW9uKGUpe2UuQ2xvc2U9XCJDbG9zZVwiLGUuRHVwbGljYXRlPVwiRHVwbGljYXRlXCIsZS5SZW5hbWU9XCJSZW5hbWVcIixlLlNhdmU9XCJTYXZlXCIsZS5TYXZlQXM9XCJTYXZlIEFzXCIsZS5DdXN0b209XCJDdXN0b21cIn0oaXx8KGk9e30pKSxmdW5jdGlvbihlKXtlLk5ld1ZpZXc9XCJOZXdWaWV3XCIsZS5EdXBsaWNhdGVWaWV3cz1cIkR1cGxpY2F0ZVZpZXdcIixlLk9wZW5XaXRoRGVmYXVsdEJyb3dzZXI9XCJPcGVuV2l0aERlZmF1bHRCcm93c2VyXCIsZS5SZWxvYWRWaWV3cz1cIlJlbG9hZFRhYlwiLGUuQ2xvc2VWaWV3cz1cIkNsb3NlVGFiXCIsZS5BZGRUb0NoYW5uZWw9XCJBZGRUb0NoYW5uZWxcIixlLlJlbW92ZUZyb21DaGFubmVsPVwiUmVtb3ZlRnJvbUNoYW5uZWxcIixlLkJhY2s9XCJCYWNrXCIsZS5Gb3J3YXJkPVwiRm9yd2FyZFwiLGUuUHJpbnQ9XCJQcmludFwiLGUuUHJpbnRBbGw9XCJQcmludEFsbFwiLGUuUHJpbnRTY3JlZW49XCJQcmludFNjcmVlblwiLGUuQ3VzdG9tPVwiQ3VzdG9tXCJ9KGF8fChhPXt9KSksZnVuY3Rpb24oZSl7ZS5TaG93SGlkZVRhYnM9XCJTaG93SGlkZVRhYnNcIixlLkNvbG9yTGlua2luZz1cIkNvbG9yTGlua2luZ1wiLGUuUHJlc2V0TGF5b3V0cz1cIlByZXNldExheW91dHNcIixlLkxvY2tVbmxvY2tQYWdlPVwiTG9ja1VubG9ja1BhZ2VcIixlLlNhdmVNZW51PVwiU2F2ZU1lbnVcIixlLlNhdmVQYWdlPVwiU2F2ZVBhZ2VcIixlLk1pbmltaXNlPVwiTWluaW1pc2VcIixlLk1heGltaXNlPVwiTWF4aW1pc2VcIixlLkNsb3NlPVwiQ2xvc2VcIixlLkN1c3RvbT1cIkN1c3RvbVwifShsfHwobD17fSkpLGZ1bmN0aW9uKGUpe2UuU2F2ZVBhZ2U9XCJTYXZlUGFnZVwiLGUuU2F2ZVdvcmtzcGFjZT1cIlNhdmVXb3Jrc3BhY2VcIixlLlNhdmVQYWdlQXM9XCJTYXZlUGFnZUFzXCIsZS5TYXZlV29ya3NwYWNlQXM9XCJTYXZlV29ya3NwYWNlQXNcIixlLkN1c3RvbT1cIkN1c3RvbVwifShjfHwoYz17fSkpLGZ1bmN0aW9uKGUpe2UuQ3VzdG9tQnV0dG9uPVwiQ3VzdG9tQnV0dG9uXCIsZS5TdG9yZUN1c3RvbUJ1dHRvbj1cIlN0b3JlQ3VzdG9tQnV0dG9uXCIsZS5DdXN0b21Ecm9wZG93bkl0ZW09XCJDdXN0b21Ecm9wZG93bkl0ZW1cIixlLkdsb2JhbENvbnRleHRNZW51PVwiR2xvYmFsQ29udGV4dE1lbnVcIixlLlZpZXdUYWJDb250ZXh0TWVudT1cIlZpZXdUYWJDb250ZXh0TWVudVwiLGUuUGFnZVRhYkNvbnRleHRNZW51PVwiUGFnZVRhYkNvbnRleHRNZW51XCIsZS5TYXZlQnV0dG9uQ29udGV4dE1lbnU9XCJTYXZlQnV0dG9uQ29udGV4dE1lbnVcIixlLkFQST1cIkFQSVwifShzfHwocz17fSkpLGZ1bmN0aW9uKGUpe2UuU0FWRV9QQUdFPVwiU0FWRV9QQUdFXCIsZS5TQVZFX1dPUktTUEFDRT1cIlNBVkVfV09SS1NQQUNFXCIsZS5TQVZFX1BBR0VfQVM9XCJTQVZFX1BBR0VfQVNcIixlLlNBVkVfV09SS1NQQUNFX0FTPVwiU0FWRV9XT1JLU1BBQ0VfQVNcIixlLlJFTkFNRV9QQUdFPVwiUkVOQU1FX1BBR0VcIixlLlJFTkFNRV9XT1JLU1BBQ0U9XCJSRU5BTUVfV09SS1NQQUNFXCJ9KHV8fCh1PXt9KSl9LDIyMjooKT0+e1widXNlIHN0cmljdFwiO3ZhciBlLHQsbjshZnVuY3Rpb24oZSl7ZS5GZXRjaGluZz1cImZldGNoaW5nXCIsZS5GZXRjaGVkPVwiZmV0Y2hlZFwiLGUuQ29tcGxldGU9XCJjb21wbGV0ZVwifShlfHwoZT17fSkpLGZ1bmN0aW9uKGUpe2UuVXNlckFjdGlvbj1cInVzZXItYWN0aW9uXCIsZS5Gb2N1c0NoYW5nZT1cImZvY3VzLWNoYW5nZVwiLGUuUmVsb2FkPVwicmVsb2FkXCJ9KHR8fCh0PXt9KSksZnVuY3Rpb24oZSl7ZS5BY3RpdmU9XCJhY3RpdmVcIixlLkRlZmF1bHQ9XCJkZWZhdWx0XCJ9KG58fChuPXt9KSl9LDQyNzooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHI7IWZ1bmN0aW9uKGUpe2UuQWN0aW9uQnV0dG9uPVwiQWN0aW9uQnV0dG9uXCIsZS5Ecm9wZG93bkJ1dHRvbj1cIkRyb3Bkb3duQnV0dG9uXCJ9KHJ8fChyPXt9KSl9LDc1ODooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHIsbyxpOyFmdW5jdGlvbihlKXtlLlN1Z2dlc3Rpb249XCJzdWdnZXN0aW9uXCJ9KHJ8fChyPXt9KSksZnVuY3Rpb24oZSl7ZS5Db250YWN0PVwiQ29udGFjdFwiLGUuQ3VzdG9tPVwiQ3VzdG9tXCIsZS5MaXN0PVwiTGlzdFwiLGUuUGxhaW49XCJQbGFpblwiLGUuU2ltcGxlVGV4dD1cIlNpbXBsZVRleHRcIixlLkxvYWRpbmc9XCJMb2FkaW5nXCIsZS5FcnJvcj1cIkVycm9yXCJ9KG98fChvPXt9KSksZnVuY3Rpb24oZSl7ZS5NdWx0aVNlbGVjdD1cIk11bHRpU2VsZWN0XCJ9KGl8fChpPXt9KSl9LDU2NDooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bigyMjIpLG4oNzU4KSxuKDExNCksbigxMDkpLG4oNDI3KX0sMTE0OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcixvOyFmdW5jdGlvbihlKXtlLlNuYXBzaG90PVwic25hcHNob3RcIixlLk1hbmlmZXN0PVwibWFuaWZlc3RcIixlLlZpZXc9XCJ2aWV3XCIsZS5FeHRlcm5hbD1cImV4dGVybmFsXCJ9KHJ8fChyPXt9KSksZnVuY3Rpb24oZSl7ZS5MYW5kaW5nUGFnZT1cImxhbmRpbmdQYWdlXCIsZS5BcHBHcmlkPVwiYXBwR3JpZFwifShvfHwobz17fSkpfSwxMDk6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByOyFmdW5jdGlvbihlKXtlLlByaW1hcnk9XCJwcmltYXJ5XCIsZS5TZWNvbmRhcnk9XCJzZWNvbmRhcnlcIixlLlRleHRPbmx5PVwidGV4dE9ubHlcIn0ocnx8KHI9e30pKX0sNDIwOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuKDMxMSksbig5MTIpLG4oMTUwKX0sNDk1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcjshZnVuY3Rpb24oZSl7ZS5MZWZ0PVwiTGVmdFwiLGUuUmlnaHQ9XCJSaWdodFwiLGUuVG9wPVwiVG9wXCIsZS5Cb3R0b209XCJCb3R0b21cIn0ocnx8KHI9e30pKX0sMTI3OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7RG06KCk9PmEseXo6KCk9PnN9KTt2YXIgcj1uKDExNyk7bigxMjEpO2NvbnN0IG89ZT0+YF9fYnJvd3Nlcl93aW5kb3dfXy0ke2UudXVpZH0tJHtlLm5hbWV9YCxpPW5ldyBNYXAsYT1lPT57Y29uc3QgdD1vKGUpO3JldHVybiBpLmhhcyh0KXx8aS5zZXQodCwoMCxyLlopKHQpKSxpLmdldCh0KSgpfTt2YXIgbCxjOyFmdW5jdGlvbihlKXtlLkNsb3NlQnJvd3NlcldpbmRvdz1cImNsb3NlLWJyb3dzZXItd2luZG93XCIsZS5RdWl0UGxhdGZvcm09XCJxdWl0LXBsYXRmb3JtXCIsZS5DbG9zZVBhZ2U9XCJjbG9zZS1wYWdlXCIsZS5BZGRUb0NoYW5uZWw9XCJhZGQtdG8tY2hhbm5lbFwiLGUuUmVtb3ZlRnJvbUNoYW5uZWw9XCJyZW1vdmUtZnJvbS1jaGFubmVsXCIsZS5PcGVuU2F2ZU1vZGFsSW50ZXJuYWw9XCJvcGVuLXNhdmUtbW9kYWwtaW50ZXJuYWxcIixlLkR1cGxpY2F0ZVBhZ2U9XCJkdXBsaWNhdGUtcGFnZVwiLGUuU2V0U2VsZWN0ZWRTY2hlbWU9XCJzZXQtc2VsZWN0ZWQtc2NoZW1lXCJ9KGx8fChsPXt9KSksZnVuY3Rpb24oZSl7ZS5HZXRQYWdlcz1cImdldC1wYWdlc1wiLGUuR2V0QWN0aXZlUGFnZUZvcldpbmRvdz1cImdldC1hY3RpdmUtcGFnZS1mb3Itd2luZG93XCIsZS5BdHRhY2hQYWdlc1RvV2luZG93PVwiYXR0YWNoLXBhZ2VzLXRvLXdpbmRvd1wiLGUuRGV0YWNoUGFnZXNGcm9tV2luZG93PVwiZGV0YWNoLXBhZ2VzLWZyb20td2luZG93XCIsZS5TZXRBY3RpdmVQYWdlRm9yV2luZG93PVwic2V0LWFjdGl2ZS1wYWdlLWZvci13aW5kb3dcIixlLlJlbmFtZVBhZ2U9XCJyZW5hbWUtcGFnZVwiLGUuUmVvcmRlclBhZ2VzRm9yV2luZG93PVwicmVvcmRlci1wYWdlcy1mb3Itd2luZG93XCIsZS5VcGRhdGVQYWdlRm9yV2luZG93PVwidXBkYXRlLXBhZ2UtZm9yLXdpbmRvd1wiLGUuVXBkYXRlUGFnZXNXaW5kb3dPcHRpb25zPVwidXBkYXRlLXBhZ2VzLXdpbmRvdy1vcHRpb25zXCIsZS5Jc0RldGFjaGluZ1BhZ2VzPVwiaXMtZGV0YWNoaW5nLXBhZ2VzXCIsZS5Jc0FjdGl2ZVBhZ2VDaGFuZ2luZz1cImlzLWFjdGl2ZS1wYWdlLWNoYW5naW5nXCJ9KGN8fChjPXt9KSk7Y29uc3Qgcz17Li4ubCwuLi5jfX0sNDM4OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcjtuLmQodCx7SGg6KCk9PmksZm46KCk9PnIsajc6KCk9PmEseHA6KCk9Pmx9KSxmdW5jdGlvbihlKXtlLkxhdW5jaEFwcD1cImxhdW5jaEFwcFwiLGUuU2F2ZVBhZ2U9XCJzYXZlUGFnZVwiLGUuR2V0U2F2ZWRQYWdlPVwiZ2V0U2F2ZWRQYWdlXCIsZS5DcmVhdGVTYXZlZFBhZ2U9XCJjcmVhdGVTYXZlZFBhZ2VcIixlLlVwZGF0ZVNhdmVkUGFnZT1cInVwZGF0ZVNhdmVkUGFnZVwiLGUuRGVsZXRlU2F2ZWRQYWdlPVwiZGVsZXRlU2F2ZWRQYWdlXCIsZS5HZXRTYXZlZFBhZ2VzPVwiZ2V0U2F2ZWRQYWdlc1wiLGUuQ3JlYXRlU2F2ZWRQYWdlSW50ZXJuYWw9XCJjcmVhdGVTYXZlZFBhZ2VJbnRlcm5hbFwiLGUuVXBkYXRlU2F2ZWRQYWdlSW50ZXJuYWw9XCJ1cGRhdGVTYXZlZFBhZ2VJbnRlcm5hbFwiLGUuRGVsZXRlU2F2ZWRQYWdlSW50ZXJuYWw9XCJkZWxldGVTYXZlZFBhZ2VJbnRlcm5hbFwiLGUuU2hhcmVQYWdlPVwic2hhcmVQYWdlXCIsZS5VcGRhdGVQYWdlRm9yV2luZG93PVwidXBkYXRlUGFnZUZvcldpbmRvd1wiLGUuQXR0YWNoUGFnZXNUb1dpbmRvdz1cImF0dGFjaFBhZ2VzVG9XaW5kb3dcIixlLkRldGFjaFBhZ2VzRnJvbVdpbmRvdz1cImRldGFjaFBhZ2VzRnJvbVdpbmRvd1wiLGUuUmVvcmRlclBhZ2VzRm9yV2luZG93PVwicmVvcmRlclBhZ2VzRm9yV2luZG93XCIsZS5TZXRBY3RpdmVQYWdlPVwic2V0QWN0aXZlUGFnZVwiLGUuR2V0QWxsQXR0YWNoZWRQYWdlcz1cImdldEFsbEF0dGFjaGVkUGFnZXNcIixlLkdldEFjdGl2ZVBhZ2VJZEZvcldpbmRvdz1cImdldEFjdGl2ZVBhZ2VJZEZvcldpbmRvd1wiLGUuR2V0UGFnZXNGb3JXaW5kb3c9XCJnZXRQYWdlc0ZvcldpbmRvd1wiLGUuR2V0UGFnZUZvcldpbmRvdz1cImdldFBhZ2VGb3JXaW5kb3dcIixlLkdldFNhdmVkUGFnZU1ldGFkYXRhPVwiZ2V0U2F2ZWRQYWdlTWV0YWRhdGFcIixlLkdldFVuaXF1ZVBhZ2VUaXRsZT1cImdldFVuaXF1ZVBhZ2VUaXRsZVwiLGUuR2V0TGFzdEZvY3VzZWRCcm93c2VyV2luZG93PVwiZ2V0TGFzdEZvY3VzZWRCcm93c2VyV2luZG93XCIsZS5HZXRUaGVtZXM9XCJnZXRUaGVtZXNcIixlLkdldFNlbGVjdGVkU2NoZW1lPVwiZ2V0U2VsZWN0ZWRTY2hlbWVcIixlLlNldFNlbGVjdGVkU2NoZW1lPVwic2V0U2VsZWN0ZWRTY2hlbWVcIixlLk9wZW5HbG9iYWxDb250ZXh0TWVudUludGVybmFsPVwib3Blbkdsb2JhbENvbnRleHRNZW51SW50ZXJuYWxcIixlLk9wZW5WaWV3VGFiQ29udGV4dE1lbnVJbnRlcm5hbD1cIm9wZW5WaWV3VGFiQ29udGV4dE1lbnVJbnRlcm5hbFwiLGUuT3BlblBhZ2VUYWJDb250ZXh0TWVudUludGVybmFsPVwib3BlblBhZ2VUYWJDb250ZXh0TWVudUludGVybmFsXCIsZS5PcGVuU2F2ZUJ1dHRvbkNvbnRleHRNZW51SW50ZXJuYWw9XCJvcGVuU2F2ZUJ1dHRvbkNvbnRleHRNZW51SW50ZXJuYWxcIixlLkludm9rZUN1c3RvbUFjdGlvbkludGVybmFsPVwiaW52b2tlQ3VzdG9tQWN0aW9uSW50ZXJuYWxcIixlLlJlcXVlc3RRdWl0UGxhdGZvcm1EaWFsb2dJbnRlcm5hbD1cInJlcXVlc3RRdWl0UGxhdGZvcm1EaWFsb2dJbnRlcm5hbFwiLGUuR2V0U2F2ZWRXb3Jrc3BhY2U9XCJnZXRTYXZlZFdvcmtzcGFjZVwiLGUuQ3JlYXRlU2F2ZWRXb3Jrc3BhY2U9XCJjcmVhdGVTYXZlZFdvcmtzcGFjZVwiLGUuVXBkYXRlU2F2ZWRXb3Jrc3BhY2U9XCJ1cGRhdGVTYXZlZFdvcmtzcGFjZVwiLGUuRGVsZXRlU2F2ZWRXb3Jrc3BhY2U9XCJkZWxldGVTYXZlZFdvcmtzcGFjZVwiLGUuR2V0U2F2ZWRXb3Jrc3BhY2VzPVwiZ2V0U2F2ZWRXb3Jrc3BhY2VzXCIsZS5TYXZlV29ya3NwYWNlPVwic2F2ZVdvcmtzcGFjZVwiLGUuR2V0Q3VycmVudFdvcmtzcGFjZT1cImdldEN1cnJlbnRXb3Jrc3BhY2VcIixlLkFwcGx5V29ya3NwYWNlPVwiYXBwbHlXb3Jrc3BhY2VcIixlLlNldEFjdGl2ZVdvcmtzcGFjZT1cInNldEFjdGl2ZVdvcmtzcGFjZVwiLGUuSXNCcm93c2VySW5pdGlhbGl6ZWQ9XCJpc0Jyb3dzZXJJbml0aWFsaXplZFwiLGUuQW5hbHl0aWNzPVwiYW5hbHl0aWNzSW50ZXJuYWxcIixlLkdldERvY2tQcm92aWRlckNvbmZpZz1cImdldERvY2tQcm92aWRlckNvbmZpZ1wiLGUuU2F2ZURvY2tQcm92aWRlckNvbmZpZz1cInNhdmVEb2NrUHJvdmlkZXJDb25maWdcIn0ocnx8KHI9e30pKTtjb25zdCBvPWFzeW5jIGU9PmZpbi5QbGF0Zm9ybS53cmFwU3luYyhlKS5nZXRDbGllbnQoKSxpPWFzeW5jIGU9Pntjb25zdCB0PWF3YWl0IG8oZSksbj1cIlRhcmdldCBpcyBub3QgYSBXb3Jrc3BhY2UgUGxhdGZvcm0uIFRhcmdldCBtdXN0IGNhbGwgV29ya3NwYWNlUGxhdGZvcm0uaW5pdFwiO2xldCByO3RyeXtyPWF3YWl0IHQuZGlzcGF0Y2goXCJpc1dvcmtzcGFjZVBsYXRmb3JtXCIpfWNhdGNoKGUpe3Rocm93IG5ldyBFcnJvcihuKX1pZihcImJvb2xlYW5cIj09dHlwZW9mIHImJnIpcmV0dXJuIGNvbnNvbGUud2FybihcIllvdSBhcmUgdXNpbmcgYW4gb2xkZXIgdmVyc2lvbiBvZiB0aGUgd29ya3NwYWNlIHBsYXRmb3JtLiBQbGVhc2UgdXBkYXRlIHlvdXIgd29ya3NwYWNlIHBsYXRmb3JtLlwiKSxyO2lmKFwib2JqZWN0XCI9PXR5cGVvZiByJiZyLmlzV29ya3NwYWNlUGxhdGZvcm0pcmV0dXJuIHI7dGhyb3cgbmV3IEVycm9yKG4pfSxhPWFzeW5jIGU9Pihhd2FpdCBpKGUpLG8oZSkpLGw9YXN5bmMgZT0+e2NvbnN0IHQ9YXdhaXQgaShlKTtpZihcIm9iamVjdFwiPT10eXBlb2YgdCYmITAhPT10Py5pc0Jyb3dzZXJJbml0aWFsaXplZCl0aHJvdyBuZXcgRXJyb3IoXCJUYXJnZXQgaXMgbm90IGEgQnJvd3Nlci1lbmFibGVkIFdvcmtzcGFjZSBQbGF0Zm9ybS5cIik7cmV0dXJuIG8oZSl9fSwxNTA6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByPW4oMTE3KSxvPShuKDY3OCksbigxMjEpLG4oNDYpKTsoMCxyLlopKFwiX19vZl93b3Jrc3BhY2VfcHJvdG9jb2xfX1wiKSwoMCxyLlopKG8uUXgpfSw4MjooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1JSOigpPT5yfSk7bigxNTApO2NvbnN0IHI9KHtwbGF0Zm9ybUlkZW50aXR5OmUsaWQ6dD1cIlwifSk9PmAke2UubmFtZX0tJHtlLnV1aWR9LSR7dH1gfSw0NjooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1F4OigpPT5vfSk7dmFyIHI9bigxMjEpOygwLG4oODIpLlJSKSh7aWQ6XCJob21lLWNvbW1hbmRzXCIscGxhdGZvcm1JZGVudGl0eTpyLk9JfSk7Y29uc3Qgbz1cIl9fc2VhcmNoLW9wZW5maW4tYnJvd3Nlci1ob21lLXRvcGljX19cIjt2YXIgaSxhOyFmdW5jdGlvbihlKXtlLkZldGNoaW5nPVwiZmV0Y2hpbmdcIixlLkZldGNoZWQ9XCJmZXRjaGVkXCIsZS5Db21wbGV0ZT1cImNvbXBsZXRlXCJ9KGl8fChpPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkluaXRpYWw9MF09XCJJbml0aWFsXCIsZVtlLk9wZW49MV09XCJPcGVuXCIsZVtlLkNsb3NlPTJdPVwiQ2xvc2VcIn0oYXx8KGE9e30pKX0sNjU6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtWYjooKT0+Zn0pO3ZhciByPW4oMzA0KSxvPW4oNTEzKSxpPW4oMzM3KSxhPW4oMTAwKTtuKDE1MCk7Y29uc3QgbD17W3IuUGFsZXR0ZS5icmFuZFByaW1hcnldOlwiIzBBNzZEM1wiLFtyLlBhbGV0dGUuc3RhdHVzU3VjY2Vzc106ci5Db2xvci5mdW5jdGlvbmFsMSxbci5QYWxldHRlLnN0YXR1c1dhcm5pbmddOnIuQ29sb3IuZnVuY3Rpb25hbDEwLFtyLlBhbGV0dGUuc3RhdHVzQ3JpdGljYWxdOnIuQ29sb3IuZnVuY3Rpb25hbDcsW3IuUGFsZXR0ZS5zdGF0dXNBY3RpdmVdOnIuQ29sb3IuZnVuY3Rpb25hbDMsW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDFdOlwiIzBBNzZEM1wiLFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQyXTpcIiMwMDAwMDBcIixbci5QYWxldHRlLmNvbnRlbnRCYWNrZ3JvdW5kM106XCIjMDAwMDAwXCIsW3IuUGFsZXR0ZS5jb250ZW50QmFja2dyb3VuZDRdOlwiIzAwMDAwMFwiLFtyLlBhbGV0dGUuY29udGVudEJhY2tncm91bmQ1XTpcIiMwMDAwMDBcIn0sYz17Li4ubCxbci5QYWxldHRlLmJhY2tncm91bmQxXTpyLkNvbG9yLndoaXRlLFtyLlBhbGV0dGUuYmFja2dyb3VuZDJdOnIuQ29sb3IubGlnaHRHcmF5MSxbci5QYWxldHRlLmJhY2tncm91bmQzXTpyLkNvbG9yLmxpZ2h0R3JheTIsW3IuUGFsZXR0ZS5iYWNrZ3JvdW5kNF06ci5Db2xvci5saWdodEdyYXkzLFtyLlBhbGV0dGUuYmFja2dyb3VuZDVdOnIuQ29sb3IubGlnaHRHcmF5NCxbci5QYWxldHRlLmJhY2tncm91bmQ2XTpyLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS5icmFuZFNlY29uZGFyeV06ci5Db2xvci5kYXJrR3JheTUsW3IuUGFsZXR0ZS5pbnB1dEJhY2tncm91bmRdOnIuQ29sb3IubGlnaHRHcmF5Myxbci5QYWxldHRlLmlucHV0Q29sb3JdOnIuQ29sb3IuZGFya0dyYXk1LFtyLlBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcl06ci5Db2xvci5kYXJrR3JheTIsW3IuUGFsZXR0ZS5pbnB1dERpc2FibGVkXTpyLkNvbG9yLm5ldXRyYWxHcmF5LFtyLlBhbGV0dGUuaW5wdXRGb2N1c2VkXTpyLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS5pbnB1dEJvcmRlcl06ci5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLnRleHREZWZhdWx0XTpyLkNvbG9yLmRhcmtHcmF5NSxbci5QYWxldHRlLnRleHRIZWxwXTpyLkNvbG9yLmRhcmtHcmF5Myxbci5QYWxldHRlLnRleHRJbmFjdGl2ZV06ci5Db2xvci5uZXV0cmFsR3JheX0scz17Li4ubCxbci5QYWxldHRlLmJhY2tncm91bmQxXTpyLkNvbG9yLmRhcmtHcmF5Nixbci5QYWxldHRlLmJhY2tncm91bmQyXTpyLkNvbG9yLmRhcmtHcmF5NSxbci5QYWxldHRlLmJhY2tncm91bmQzXTpyLkNvbG9yLmRhcmtHcmF5NCxbci5QYWxldHRlLmJhY2tncm91bmQ0XTpyLkNvbG9yLmRhcmtHcmF5Myxbci5QYWxldHRlLmJhY2tncm91bmQ1XTpyLkNvbG9yLmRhcmtHcmF5Mixbci5QYWxldHRlLmJhY2tncm91bmQ2XTpyLkNvbG9yLmRhcmtHcmF5MSxbci5QYWxldHRlLmJyYW5kU2Vjb25kYXJ5XTpyLkNvbG9yLmRhcmtHcmF5Mixbci5QYWxldHRlLmlucHV0QmFja2dyb3VuZF06ci5Db2xvci5kYXJrR3JheTEsW3IuUGFsZXR0ZS5pbnB1dENvbG9yXTpyLkNvbG9yLndoaXRlLFtyLlBhbGV0dGUuaW5wdXRQbGFjZWhvbGRlcl06ci5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUuaW5wdXREaXNhYmxlZF06ci5Db2xvci5uZXV0cmFsR3JheSxbci5QYWxldHRlLmlucHV0Rm9jdXNlZF06ci5Db2xvci5saWdodEdyYXk1LFtyLlBhbGV0dGUuaW5wdXRCb3JkZXJdOnIuQ29sb3IubmV1dHJhbEdyYXksW3IuUGFsZXR0ZS50ZXh0RGVmYXVsdF06ci5Db2xvci53aGl0ZSxbci5QYWxldHRlLnRleHRIZWxwXTpyLkNvbG9yLmxpZ2h0R3JheTUsW3IuUGFsZXR0ZS50ZXh0SW5hY3RpdmVdOnIuQ29sb3IubmV1dHJhbEdyYXl9LHU9W3tsYWJlbDpcIk9wZW5GaW4gRGVmYXVsdCBMaWdodCBhbmQgRGFyayBUaGVtZVwiLHBhbGV0dGVzOntsaWdodDp7Li4uYyxicmFuZFByaW1hcnk6XCIjMEE3NkQzXCIsYnJhbmRTZWNvbmRhcnk6ci5Db2xvci5kYXJrR3JheTUsYmFja2dyb3VuZFByaW1hcnk6ci5Db2xvci5kYXJrR3JheTV9LGRhcms6ey4uLnMsYnJhbmRQcmltYXJ5OlwiIzBBNzZEM1wiLGJyYW5kU2Vjb25kYXJ5OnIuQ29sb3IuZGFya0dyYXkyLGJhY2tncm91bmRQcmltYXJ5OnIuQ29sb3IuZGFya0dyYXk1fX19XSxkPShlLHQpPT57Y29uc3Qgbj17Li4uZX0scj17Li4udH07bGV0IGk9dC5iYWNrZ3JvdW5kUHJpbWFyeT8oMCxvLnR6KSh0LmJhY2tncm91bmRQcmltYXJ5LCEwKTp7fSxhPWUuYmFja2dyb3VuZFByaW1hcnk/KDAsby50eikoZS5iYWNrZ3JvdW5kUHJpbWFyeSk6e307aT17Li4uaSwuLi5yfSxhPXsuLi5hLC4uLm59O3JldHVybntsaWdodDp7Li4udCwuLi5pfSxkYXJrOnsuLi5lLC4uLmF9fX0sZj1hc3luYyBlPT57bGV0IHQsbj1hd2FpdCgwLGkuTikoZSkuVGhlbWUuZ2V0VGhlbWVzKCk7biYmMCE9PW4/Lmxlbmd0aHx8KG49dSk7dHJ5e3Q9YXdhaXQoMCxpLk4pKGUpLlRoZW1lLmdldFNlbGVjdGVkU2NoZW1lKCl9Y2F0Y2goZSl7Y29uc29sZS53YXJuKFwiRmFpbGVkIHRvIGdldCBzZWxlY3RlZCBzY2hlbWUgZnJvbSBwbGF0Zm9ybVwiLGUpfWNvbnN0IGw9KChlLHQpPT5lLm1hcCgoZT0+e2xldCBuLGksbCx1PWEuaUQuRGFyaztpZihcInBhbGV0dGVzXCJpbiBlKXtjb25zdCB0PWUucGFsZXR0ZXM7ZS5kZWZhdWx0JiYodT1lLmRlZmF1bHQpLG49KDAsby5vYikocyx0LmRhcmspLGk9KDAsby5vYikoYyx0LmxpZ2h0KSxsPWQodC5kYXJrLHQubGlnaHQpfWVsc2UgaWYoXCJwYWxldHRlXCJpbiBlKXtjb25zdCB0PWUucGFsZXR0ZTtuPSgwLG8ub2IpKHMsdCksaT0oMCxvLm9iKShjLHQpLGw9ZCh0LHQpfWNvbnN0IGY9KDAsci5jcmVhdGVUaGVtZSkoey4uLm4sLi4ubD8uZGFya30pLHA9KDAsci5jcmVhdGVUaGVtZSkoey4uLmksLi4ubD8ubGlnaHR9KTtyZXR1cm57bGFiZWw6ZS5sYWJlbCxsb2dvVXJsOmUubG9nb1VybCx0aGVtZTp7ZGFyazpmLGxpZ2h0OnB9LGRlZmF1bHRTY2hlbWU6dHx8dX19KSkpKG4sdClbMF07cmV0dXJuIGx9fSw4MDY6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtEOTooKT0+YyxxOTooKT0+cn0pO3ZhciByLG8saT1uKDY3OCk7IWZ1bmN0aW9uKGUpe2UuV29ya3NwYWNlPVwib3BlbmZpbi13b3Jrc3BhY2VcIixlLk9sZFdvcmtzcGFjZT1cIm9wZW5maW4tYnJvd3NlclwifShyfHwocj17fSkpLGZ1bmN0aW9uKGUpe2UuRmluUHJvdG9jb2w9XCJmaW4tcHJvdG9jb2xcIn0ob3x8KG89e30pKTtjb25zdCBhPXt1dWlkOmkuQUJ9LGw9KHIuV29ya3NwYWNlLGU9PntpZighaS5zUyl0aHJvdyBuZXcgRXJyb3IoXCJnZXRBcHBsaWNhdGlvbiBjYW5ub3QgYmUgdXNlZCBpbiBhIG5vbiBPcGVuRmluIGVudi4gQXZvaWQgdXNpbmcgdGhpcyBkdXJpbmcgcHJlLXJlbmRlcmluZy5cIik7cmV0dXJuIGZpbi5BcHBsaWNhdGlvbi53cmFwU3luYyhlKX0pLGM9KCk9PmwoYSl9LDExNzooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1o6KCk9Pml9KTt2YXIgcj1uKDY3OCk7Y29uc3Qgbz1yLkF4JiZcImNvbXBsZXRlXCIhPT1kb2N1bWVudC5yZWFkeVN0YXRlJiZuZXcgUHJvbWlzZSgoZT0+ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInJlYWR5c3RhdGVjaGFuZ2VcIiwoKCk9PntcImNvbXBsZXRlXCI9PT1kb2N1bWVudC5yZWFkeVN0YXRlJiZlKCl9KSkpKTtmdW5jdGlvbiBpKGUpe2xldCB0O2NvbnN0IG49bmV3IFNldDtyZXR1cm4oKT0+e2lmKCFyLnNTKXRocm93IG5ldyBFcnJvcihcImdldENoYW5uZWxDbGllbnQgY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBhbiBPcGVuRmluIGVudi4gQXZvaWQgdXNpbmcgdGhpcyBtZXRob2QgZHVyaW5nIHByZS1yZW5kZXJpbmcuXCIpO3JldHVybiB0fHwodD0oYXN5bmMoKT0+e2F3YWl0IG87Y29uc3QgaT17Y2xpZW50QVBJVmVyc2lvbjpyLnUwfSxhPWF3YWl0IGZpbi5JbnRlckFwcGxpY2F0aW9uQnVzLkNoYW5uZWwuY29ubmVjdChlLHtwYXlsb2FkOml9KTtyZXR1cm4gYS5vbkRpc2Nvbm5lY3Rpb24oKGFzeW5jKCk9PntuLmZvckVhY2goKGU9PmUoKSkpLG4uY2xlYXIoKSxjb25zb2xlLndhcm4oYGRpc2Nvbm5lY3RlZCBmcm9tIGNoYW5uZWwgcHJvdmlkZXIgJHtlfWApLHQ9dm9pZCAwfSkpLGF9KSgpLnRoZW4oKGU9PihlLmFkZERpc2Nvbm5lY3Rpb25MaXN0ZW5lcj1lPT57bi5hZGQoZSl9LGUpKSkuY2F0Y2goKG49Pnt0aHJvdyB0PXZvaWQgMCxuZXcgRXJyb3IoYGZhaWxlZCB0byBjb25uZWN0IHRvIGNoYW5uZWwgcHJvdmlkZXIgJHtlfTogJHtufWApfSkpKSx0fX19LDY3ODooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHI7bi5kKHQse0FCOigpPT5jLEF4OigpPT5pLENMOigpPT51LF9WOigpPT5hLG9DOigpPT5zLHJ4OigpPT5mLHNTOigpPT5vLHUwOigpPT5wfSksZnVuY3Rpb24oZSl7ZS5Mb2NhbD1cImxvY2FsXCIsZS5EZXY9XCJkZXZcIixlLlN0YWdpbmc9XCJzdGFnaW5nXCIsZS5Qcm9kPVwicHJvZFwifShyfHwocj17fSkpO2NvbnN0IG89XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGZpbixpPShcInVuZGVmaW5lZFwiPT10eXBlb2YgcHJvY2Vzc3x8cHJvY2Vzcy5lbnY/LkpFU1RfV09SS0VSX0lELFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cpLGE9aSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGluZGV4ZWREQixsPWk/d2luZG93Lm9yaWdpbjpyLkxvY2FsLGM9byYmZmluLm1lLnV1aWQscz1vJiZmaW4ubWUubmFtZSx1PW8mJmZpbi5tZS5lbnRpdHlUeXBlLGQ9KHIuTG9jYWwsci5EZXYsci5TdGFnaW5nLHIuUHJvZCxlPT5lLnN0YXJ0c1dpdGgoXCJodHRwOi8vXCIpfHxlLnN0YXJ0c1dpdGgoXCJodHRwczovL1wiKT9lOmwrZSksZj0oZChcImh0dHBzOi8vd29ya3NwYWNlLm9wZW5maW4uY28vd29ya3NwYWNlLzE0LjAuMjJcIiksZChcImh0dHBzOi8vd29ya3NwYWNlLm9wZW5maW4uY28vd29ya3NwYWNlLzE0LjAuMjJcIikpLHA9KFwidW5kZWZpbmVkXCIhPXR5cGVvZiBXT1JLU1BBQ0VfRE9DU19QTEFURk9STV9VUkwmJmQoV09SS1NQQUNFX0RPQ1NfUExBVEZPUk1fVVJMKSxcInVuZGVmaW5lZFwiIT10eXBlb2YgV09SS1NQQUNFX0RPQ1NfQ0xJRU5UX1VSTCYmZChXT1JLU1BBQ0VfRE9DU19DTElFTlRfVVJMKSxcIjE0LjAuMjJcIik7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFdPUktTUEFDRV9CVUlMRF9TSEEmJldPUktTUEFDRV9CVUlMRF9TSEF9LDMxMTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse0MkOigpPT5yfSk7big2NzgpLG4oMTIxKTtjb25zdCByPWU9Pntjb25zdCB0PVtdO3JldHVybihlJiZBcnJheS5pc0FycmF5KGUpP2U6W10pLmZvckVhY2goKGU9PntpZihcImNvbXBvbmVudFwiPT09ZS50eXBlKXJldHVybiB0LnB1c2goZS5jb21wb25lbnRTdGF0ZSk7Y29uc3Qgbj1yKGUuY29udGVudCk7dC5wdXNoKC4uLm4pfSkpLHR9O25ldyBNYXB9LDYxOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcjtuLmQodCx7WjooKT0+b30pLGZ1bmN0aW9uKGUpe2UuQ3VycmVudFdvcmtzcGFjZUlkPVwiY3VycmVudFdvcmtzcGFjZUlkXCIsZS5MYXN0Rm9jdXNlZEJyb3dzZXJXaW5kb3c9XCJsYXN0Rm9jdXNlZEJyb3dzZXJXaW5kb3dcIixlLk1hY2hpbmVOYW1lPVwibWFjaGluZU5hbWVcIixlLk5ld1RhYlBhZ2VMYXlvdXQ9XCJOZXdUYWJQYWdlTGF5b3V0XCIsZS5OZXdUYWJQYWdlU29ydD1cIk5ld1RhYlBhZ2VTb3J0XCIsZS5Eb2NrUG9zaXRpb249XCJEb2NrUG9zaXRpb25cIixlLlNlbGVjdGVkQ29sb3JTY2hlbWU9XCJTZWxlY3RlZENvbG9yU2NoZW1lXCIsZS5IYXNNb3ZlZFN0b3JlPVwiSGFzTW92ZWRTdG9yZVwifShyfHwocj17fSkpO2NvbnN0IG89cn0sNzI4OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7TDooKT0+byxyOigpPT5pfSk7dmFyIHI9big2NzgpO2NvbnN0IG89KGUsdCk9Pntsb2NhbFN0b3JhZ2Uuc2V0SXRlbShgJHtyLkFCfS0ke2V9YCx0KX0saT1lPT5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShgJHtyLkFCfS0ke2V9YCl9LDU6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByO24uZCh0LHtaUDooKT0+aX0pLGZ1bmN0aW9uKGUpe2UuSG9tZT1cIi9ob21lL1wiLGUuSG9tZVNlYXJjaD1cIi9ob21lLz9kZWVwbGluaz1zZWFyY2hcIixlLkhvbWVQYWdlc1JlbmFtZT1cIi9ob21lL3BhZ2VzL3JlbmFtZS9cIixlLkRvY2s9XCIvZG9jay9cIixlLkJyb3dzZXI9XCIvYnJvd3Nlci9cIixlLkJyb3dzZXJQb3B1cE1lbnU9XCIvYnJvd3Nlci9wb3B1cC1tZW51L1wiLGUuUHJvdmlkZXI9XCIvcHJvdmlkZXIvXCIsZS5Ccm93c2VyUG9wdXBNZW51U2hhcmVQYWdlPVwiL2Jyb3dzZXIvcG9wdXAtbWVudS9zaGFyZS1wYWdlL1wiLGUuQnJvd3NlclBvcHVwTWVudVNhdmVNb2RhbD1cIi9icm93c2VyL3BvcHVwLW1lbnUvc2F2ZS1tb2RhbC9cIixlLkJyb3dzZXJQb3B1cE1lbnVMYXlvdXRzPVwiL2Jyb3dzZXIvcG9wdXAtbWVudS9sYXlvdXRzL2xheW91dHMvXCIsZS5Ccm93c2VyUG9wdXBNZW51Q29sb3JMaW5raW5nPVwiL2Jyb3dzZXIvcG9wdXAtbWVudS9jb2xvci1saW5raW5nL2NvbG9yLWxpbmtpbmcvXCIsZS5Ccm93c2VySW5kaWNhdG9yPVwiL2Jyb3dzZXIvaW5kaWNhdG9yL1wiLGUuUmVzcG9uc2VNb2RhbD1cIi9icm93c2VyL3BvcHVwLW1lbnUvcmVzcG9uc2UtbW9kYWwvXCIsZS5Eb2NzPVwiL3Byb3ZpZGVyL2RvY3MvXCIsZS5TdG9yZWZyb250PVwiL3N0b3JlZnJvbnQvXCIsZS5EZXByZWNhdGVkQWxlcnQ9XCIvcHJvdmlkZXIvZGVwcmVjYXRlZC1hbGVydC9cIixlLkFuYWx5dGljcz1cIi9wcm92aWRlci9hbmFseXRpY3MvXCJ9KHJ8fChyPXt9KSk7dmFyIG87IWZ1bmN0aW9uKGUpe2UuU2VhcmNoPVwic2VhcmNoXCJ9KG98fChvPXt9KSk7Y29uc3QgaT1yfSw2NTA6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByO24oNjc4KTshZnVuY3Rpb24oZSl7ZS5Ib21lPVwiL2hvbWVcIixlLkJyb3dzZXI9XCIvYnJvd3NlclwiLGUuUHJvdmlkZXI9XCIvcHJvdmlkZXJcIixlLlN0b3JlZnJvbnQ9XCIvc3RvcmVmcm9udFwiLGUuRG9jaz1cIi9kb2NrXCJ9KHJ8fChyPXt9KSl9LDkxMjooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bigzMTEpLG4oNjEpfSw1MTM6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24uZCh0LHtvYjooKT0+bCx0ejooKT0+YX0pO2NvbnN0IHI9ZT0+ZS5yZXBsYWNlKC9bXlxcZCxdL2csXCJcIikuc3BsaXQoXCIsXCIpLG89ZT0+e2lmKGUubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb2xvciBvYmplY3QsIGNhbm5vdCBjb252ZXJ0IHRvIEhTTC5cIik7Y29uc3QgdD1lWzBdLzI1NSxuPWVbMV0vMjU1LHI9ZVsyXS8yNTUsbz1NYXRoLm1pbih0LG4sciksaT1NYXRoLm1heCh0LG4sciksYT1pLW87bGV0IGw9MCxjPTAscz0wO3JldHVybiBsPTA9PT1hPzA6aT09PXQ/KG4tcikvYSU2Omk9PT1uPyhyLXQpL2ErMjoodC1uKS9hKzQsbD1NYXRoLnJvdW5kKDYwKmwpLGw8MCYmKGwrPTM2MCkscz0oaStvKS8yLGM9MD09YT8wOmEvKDEtTWF0aC5hYnMoMipzLTEpKSxjPSsoMTAwKmMpLnRvRml4ZWQoMSkscz0rKDEwMCpzKS50b0ZpeGVkKDEpLHtoc2w6YGhzbCgke2x9LCAke2N9JSwgJHtzfSUpYCxoc2xhOmBoc2woJHtsfSwgJHtjfSUsICR7c30lLCAxKWAsaHVlOmwsbGlnaHRuZXNzOnMsc2F0dXJhdGlvbjpjfX0saT1lPT57aWYoIWUpdGhyb3cgbmV3IEVycm9yKFwiQ29sb3IgaXMgbm90IGRlZmluZWRcIik7Y29uc3QgdD1lLnRvTG93ZXJDYXNlKCk7bGV0IG47aWYodC5pbmNsdWRlcyhcInJnYlwiKSl7Y29uc3QgZT1yKHQpO2UubGVuZ3RoPjMmJmUucG9wKCksbj1vKGUpLmh1ZX1pZih0LmluY2x1ZGVzKFwiI1wiKSl7Y29uc3QgZT0oZT0+e2lmKCFlLmluY2x1ZGVzKFwiI1wiKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGhleCB2YWx1ZSwgY2Fubm90IGNvbnZlcnQgdG8gUkdCLiBIZXggdmFsdWUgYmVnaW5zIHdpdGggYSBoYXNodGFnLlwiKTtsZXQgdD0wLG49MCxyPTA7aWYoND09PWUubGVuZ3RoKXQ9YDB4JHtlWzFdfSR7ZVsxXX1gLG49YDB4JHtlWzJdfSR7ZVsyXX1gLHI9YDB4JHtlWzNdfSR7ZVszXX1gO2Vsc2V7aWYoNyE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaGV4IHN0cmluZyBsZW5ndGgsIGNhbm5vdCBjb252ZXJ0IHRvIFJHQi5cIik7dD1gMHgke2VbMV19JHtlWzJdfWAsbj1gMHgke2VbM119JHtlWzRdfWAscj1gMHgke2VbNV19JHtlWzZdfWB9cmV0dXJuWyt0LCtuLCtyXX0pKHQpO249byhlKS5odWV9aWYodC5pbmNsdWRlcyhcImhzbFwiKSl7bj1yKHQpWzBdfWNvbnN0IGk9bj8udG9TdHJpbmcoKTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYEh1ZSB3YXMgdW5hYmxlIHRvIGJlIGV4dHJhY3RlZCBmcm9tIFwiJHt0fVwiLCBjaGVjayBjb2xvciBmb3JtYXQuIEFjY2VwdGVkIGZvcm1hdHMgYXJlOiByZ2IoKSwgcmdiYSgpLCBoZXgsIGhzbCgpLCBhbmQgaHNsYSgpYCk7cmV0dXJuIGl9LGE9KGUsdD0hMSk9Pntjb25zdCBuPWkoZSk7cmV0dXJuIHQ/e2JhY2tncm91bmQxOmBoc2xhKCR7bn0sIDAlLCAxMDAlLCAxKWAsYmFja2dyb3VuZDI6YGhzbGEoJHtufSwgNjclLCA5OSUsIDEpYCxiYWNrZ3JvdW5kMzpgaHNsYSgke259LCAyNiUsIDk2JSwgMSlgLGJhY2tncm91bmQ0OmBoc2xhKCR7bn0sIDE1JSwgOTQlLCAxKWAsYmFja2dyb3VuZDU6YGhzbGEoJHtufSwgMTAlLCA4OCUsIDEpYCxiYWNrZ3JvdW5kNjpgaHNsYSgke259LCA4MCUsIDgwJSwgMSlgfTp7YmFja2dyb3VuZDE6YGhzbGEoJHtufSwgOCUsIDclLCAxKWAsYmFja2dyb3VuZDI6YGhzbGEoJHtufSwgOCUsIDEzJSwgMSlgLGJhY2tncm91bmQzOmBoc2xhKCR7bn0sIDklLCAxNSUsIDEpYCxiYWNrZ3JvdW5kNDpgaHNsYSgke259LCA2JSwgMjMlLCAxKWAsYmFja2dyb3VuZDU6YGhzbGEoJHtufSwgMjElLCAyOCUsIDEpYCxiYWNrZ3JvdW5kNjpgaHNsYSgke259LCA1JSwgNTElLCAxKWB9fSxsPShlLHQpPT57Y29uc3Qgbj17fTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgocj0+e25bcl09dFtyXT90W3JdOmVbcl19KSksbn19LDc3MjooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse3RqOigpPT5afSk7dmFyIHI9big2NzgpLG89bigxMjEpLGk9bigxMDApO24oMzc4KTt2YXIgYT1uKDgwNik7dmFyIGw9big1KSxjPW4oMTI3KTtuKDQzOCk7dmFyIHM9bigzMTEpO2NvbnN0IHU9YXN5bmMoKT0+e2NvbnN0IGU9YXdhaXQoMCxvLkdQKSgpO3JldHVybihhd2FpdCBQcm9taXNlLmFsbChlLm1hcCgoYXN5bmMgZT0+e3RyeXtyZXR1cm4oYXN5bmMgZT0+e2NvbnN0IHQ9YXdhaXQoMCxjLkRtKShlKTtyZXR1cm4gYXdhaXQgdC5kaXNwYXRjaChjLnl6LkdldFBhZ2VzKX0pKGUuaWRlbnRpdHkpfWNhdGNoKHQpe0pTT04uc3RyaW5naWZ5KGUuaWRlbnRpdHkpO2NvbnN0IG49YXdhaXQgZS5nZXRPcHRpb25zKCk7cmV0dXJuIG4ud29ya3NwYWNlUGxhdGZvcm0/LnBhZ2VzfHxbXX19KSkpKS5yZWR1Y2UoKChlLHQpPT5lLmNvbmNhdCh0KSksW10pfTtuZXcgTWFwO3ZhciBkOyFmdW5jdGlvbihlKXtlLkVSUk9SPVwiZXJyb3JcIixlLlNVQ0NFU1M9XCJzdWNjZXNzXCIsZS5JTkZPPVwiaW5mb1wifShkfHwoZD17fSkpO2NvbnN0IGY9KChlLHQpPT57Y29uc3Qgbj1lO3JldHVybiBuLndvcmtzcGFjZVBsYXRmb3JtfHwobi53b3Jrc3BhY2VQbGF0Zm9ybT17fSksbi53b3Jrc3BhY2VQbGF0Zm9ybS5faW50ZXJuYWxEZWZlclNob3dPcHRpb25zPXtzZXRBc0ZvcmVncm91bmQ6ISF0LGRlZmVyU2hvd0VuYWJsZWQ6ITAsYXV0b1Nob3c6bi53b3Jrc3BhY2VQbGF0Zm9ybT8uX2ludGVybmFsQXV0b1Nob3d8fG4ud29ya3NwYWNlUGxhdGZvcm0/Ll9pbnRlcm5hbERlZmVyU2hvd09wdGlvbnM/LmF1dG9TaG93fHx2b2lkIDA9PT1uLmF1dG9TaG93fHxuLmF1dG9TaG93fSxuLmF1dG9TaG93PSExLG59KSh7YWx3YXlzT25Ub3A6ITAsYXV0b1Nob3c6ITEsZnJhbWU6ITEscmVzaXphYmxlOiExLHNob3dUYXNrYmFySWNvbjohMX0pO3ZhciBwOyFmdW5jdGlvbihlKXtlLkxvY2tlZD1cIkxvY2tDbG9zZWRJY29uXCIsZS5VbmxvY2tlZD1cIkxvY2tPcGVuMUljb25cIn0ocHx8KHA9e30pKTshZnVuY3Rpb24oZT1mKXtjb25zdCB0PW5ldyBNYXB9KCk7dmFyIEM9big2MSksaD1uKDcyOCk7big2NTApO2NvbnN0IHY9KGUsdD0wKT0+e2xldCBuLHIsbz0hMTtjb25zdCBpPWFzeW5jIHI9Pntjb25zdCBhPWF3YWl0IGUoLi4ucik7aWYobyl7YXdhaXQgbmV3IFByb21pc2UoKGU9PnNldFRpbWVvdXQoZSx0KSkpO2NvbnN0IGU9bjtyZXR1cm4gbj12b2lkIDAsbz0hMSxpKGUpfXJldHVybiBhfTtyZXR1cm4oLi4uZSk9PihyPyhvPSEwLG49ZSk6cj1pKGUpLmNhdGNoKChlPT57dGhyb3cgY29uc29sZS5lcnJvcihcIm1ha2VEZWJvdW5jZWRGdW5jXCIsZSksZX0pKS5maW5hbGx5KCgoKT0+e3I9dm9pZCAwfSkpLHIpfTtmdW5jdGlvbiBnKGUsdCl7cmV0dXJuIGFzeW5jKG4sLi4ucik9PntlLmhhcyhuKSYmZS5nZXQobikuZm9yRWFjaCgoZT0+ZSguLi5yKSkpLHQmJmF3YWl0IHQoe2V2ZW50Om4scGF5bG9hZDpyfSl9fWZ1bmN0aW9uIG0oZSx0KXtyZXR1cm4gdCYmdCgodD0+e2NvbnN0e2V2ZW50Om4scGF5bG9hZDpyfT10O2UuaGFzKG4pJiZlLmdldChuKS5mb3JFYWNoKChlPT5lKC4uLnIpKSl9KSksKHQsbik9PntlLmhhcyh0KXx8ZS5zZXQodCxuZXcgU2V0KSxlLmdldCh0KS5hZGQobil9fWZ1bmN0aW9uIHcoZSl7cmV0dXJuKHQsbik9PntlLmhhcyh0KXx8ZS5zZXQodCxuZXcgU2V0KTtjb25zdCByPWUuZ2V0KHQpLG89KC4uLmUpPT57biguLi5lKSxyLmRlbGV0ZShvKX07ci5hZGQobyl9fWZ1bmN0aW9uIHkoZSl7cmV0dXJuKHQsbik9PntlLmhhcyh0KSYmZS5nZXQodCkuZGVsZXRlKG4pfX1uKDY1KTtvLklBLkJyb3dzZXJNZW51OyhmdW5jdGlvbihlKXtjb25zdCB0PW5ldyBNYXA7Zyh0LCh0PT5yLnNTJiZmaW4uSW50ZXJBcHBsaWNhdGlvbkJ1cy5wdWJsaXNoKGUsdCkpKSxtKHQsKHQ9PnIuc1MmJmZpbi5JbnRlckFwcGxpY2F0aW9uQnVzLnN1YnNjcmliZSh7dXVpZDpmaW4ubWUudXVpZH0sZSx0KSkpLHkodCksdyh0KX0pKFwid2luZG93Lm1lbnVcIiksdigoKCk9PigwLGEuRDkpKCkuZ2V0Q2hpbGRXaW5kb3dzKCkpLDUwMCk7bmV3IE1hcDt2YXIgYj1uKDE5OCkseD1uLm4oYik7Y29uc3QgTz1lPT5gJHtlLm5hbWV9YCxMPWFzeW5jKCk9Pntjb25zdCBlPWF3YWl0IHUoKSx0PW5ldyBTZXQ7cmV0dXJuIGUuZm9yRWFjaCgoZT0+e1suLi4oMCxzLkMkKShlLmxheW91dC5jb250ZW50KSwuLi4oZS5wYW5lbHN8fFtdKS5tYXAoKGU9PmUudmlld09wdGlvbnMpKV0uZm9yRWFjaCgoZT0+e2NvbnN0IG49TyhlKTtuJiZ0LmFkZChuKX0pKX0pKSx0fTt4KCkoKCgpPT5hc3luYyBmdW5jdGlvbigpe2NvbnN0IGU9YXdhaXQgTCgpLHQ9KDAsby5sUSkoKSxuPShhd2FpdCB0LmdldEN1cnJlbnRWaWV3cygpKS5maWx0ZXIoKCh7aWRlbnRpdHk6dH0pPT4hZS5oYXMoTyh0KSkpKTtuLmxlbmd0aCYmc2V0VGltZW91dCgoYXN5bmMoKT0+e2NvbnN0IGU9YXdhaXQgTCgpO24uZm9yRWFjaCgoKHtpZGVudGl0eTp0fSk9Pntjb25zdCBuPU8odCk7ZS5oYXMobil8fGZpbi5WaWV3LndyYXBTeW5jKHQpLmRlc3Ryb3koKX0pKX0pLDI1MDApfSgpLmNhdGNoKChlPT5jb25zb2xlLmRlYnVnKFwiZXJyb3IgaW4gc2NoZWR1bGVWaWV3Q2xlYW51cFwiLGUpKSkpLDVlMyx7bGVhZGluZzohMSx0cmFpbGluZzohMH0pO3goKSgoYXN5bmMoKT0+e2NvbnN0IGU9YXdhaXQgZmluLlBsYXRmb3JtLmdldEN1cnJlbnRTeW5jKCkuQXBwbGljYXRpb24uZ2V0Q2hpbGRXaW5kb3dzKCk7bGV0IHQsbj0hMTtmb3IoY29uc3QgciBvZiBlKWlmKHIuaWRlbnRpdHkubmFtZT09PW8uSUEuQnJvd3Nlck1lbnU/dD1yOmF3YWl0KDAsby5CKShyLmlkZW50aXR5KSYmKG49ITApLG4pYnJlYWs7IW4mJnQmJnQuY2xvc2UoKX0pLDEwMCx7bGVhZGluZzohMSx0cmFpbGluZzohMH0pO24oOTEyKTtmdW5jdGlvbiBfKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoKHQsbik9PntlLm9uY29tcGxldGU9ZS5vbnN1Y2Nlc3M9KCk9PnQoZS5yZXN1bHQpLGUub25hYm9ydD1lLm9uZXJyb3I9KCk9Pm4oZS5lcnJvcil9KSl9ZnVuY3Rpb24gTShlLHQpe2NvbnN0IG49aW5kZXhlZERCLm9wZW4oZSk7bi5vbnVwZ3JhZGVuZWVkZWQ9KCk9Pm4ucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKHQpO2NvbnN0IHI9XyhuKTtyZXR1cm4oZSxuKT0+ci50aGVuKChyPT5uKHIudHJhbnNhY3Rpb24odCxlKS5vYmplY3RTdG9yZSh0KSkpKX1sZXQgajtmdW5jdGlvbiBFKCl7cmV0dXJuIGp8fChqPU0oXCJrZXl2YWwtc3RvcmVcIixcImtleXZhbFwiKSksan1mdW5jdGlvbiBTKGUsdCl7cmV0dXJuIGUub3BlbkN1cnNvcigpLm9uc3VjY2Vzcz1mdW5jdGlvbigpe3RoaXMucmVzdWx0JiYodCh0aGlzLnJlc3VsdCksdGhpcy5yZXN1bHQuY29udGludWUoKSl9LF8oZS50cmFuc2FjdGlvbil9Y29uc3QgUD1hc3luYyhlLHQsbik9Pntjb25zdCByPWgucihDLlouSGFzTW92ZWRTdG9yZSksbz1yP0pTT04ucGFyc2Uocik6e307aWYobyYmb1tuXSlyZXR1cm47b1tuXT0hMCxoLkwoQy5aLkhhc01vdmVkU3RvcmUsSlNPTi5zdHJpbmdpZnkobykpO2NvbnN0IGk9YXdhaXQgZnVuY3Rpb24oZT1FKCkpe3JldHVybiBlKFwicmVhZG9ubHlcIiwodD0+e2lmKHQuZ2V0QWxsJiZ0LmdldEFsbEtleXMpcmV0dXJuIFByb21pc2UuYWxsKFtfKHQuZ2V0QWxsS2V5cygpKSxfKHQuZ2V0QWxsKCkpXSkudGhlbigoKFtlLHRdKT0+ZS5tYXAoKChlLG4pPT5bZSx0W25dXSkpKSk7Y29uc3Qgbj1bXTtyZXR1cm4gZShcInJlYWRvbmx5XCIsKGU9PlMoZSwoZT0+bi5wdXNoKFtlLmtleSxlLnZhbHVlXSkpKS50aGVuKCgoKT0+bikpKSl9KSl9KGUpO2F3YWl0IGZ1bmN0aW9uKGUsdD1FKCkpe3JldHVybiB0KFwicmVhZHdyaXRlXCIsKHQ9PihlLmZvckVhY2goKGU9PnQucHV0KGVbMV0sZVswXSkpKSxfKHQudHJhbnNhY3Rpb24pKSkpfShpLHQpfSxIPShlLHQpPT5NKGUrXCItXCIrZmluLm1lLnV1aWQsdCksaz0oZSx0KT0+e2NvbnN0IG49SChlLHQpLHI9TShlLHQpO3JldHVybiBQKHIsbixlKSxufTtyLl9WJiZyLnNTJiZrKFwib3BlbmZpbi1ob21lLXBhZ2VzXCIsXCJwYWdlc1wiKTt2YXIgVjshZnVuY3Rpb24oZSl7ZS5MYWJlbD1cIm5vcm1hbFwiLGUuU2VwYXJhdG9yPVwic2VwYXJhdG9yXCIsZS5TdWJtZW51PVwic3VibWVudVwiLGUuQ2hlY2tib3g9XCJjaGVja2JveFwifShWfHwoVj17fSkpO1YuU2VwYXJhdG9yO24oNDIwKSxuKDMzNyk7Vi5MYWJlbCxpLndoLkNsb3NlV2luZG93LFYuTGFiZWwsaS53aC5PcGVuU3RvcmVmcm9udCxWLkxhYmVsLGkud2guUXVpdCxWLkxhYmVsLGkud2guTmV3V2luZG93LFYuTGFiZWwsaS53aC5TYXZlUGFnZSxWLkxhYmVsLGkud2guU2F2ZVBhZ2VBcyxWLkxhYmVsLGkud2guUmVzdG9yZUNoYW5nZXMsVi5MYWJlbCxpLndoLlNhdmVXb3Jrc3BhY2UsVi5MYWJlbCxpLndoLlNhdmVXb3Jrc3BhY2VBcyxWLkxhYmVsLGkud2guUmVuYW1lV29ya3NwYWNlO3IuX1YmJnIuc1MmJkgoXCJkb2NrLXByb3ZpZGVyLWNvbmZpZ3NcIixcImRvY2stcHJvdmlkZXItY29uZmlnc1wiKTtuKDcwNSk7ci5fViYmci5zUyYmayhcIm9wZW5maW4td29ya3NwYWNlLXBsYXRmb3JtLXdvcmtzcGFjZXNcIixcIndvcmtzcGFjZXNcIik7big1NjQpO24oNDk1KTtyLnJ4LGwuWlAuQnJvd3NlcixyLnJ4O3ZhciBSOyFmdW5jdGlvbihlKXtlLkJyb3dzZXI9XCJCcm93c2VyXCIsZS5Eb2NrPVwiRG9ja1wiLGUuSG9tZT1cIkhvbWVcIixlLk5vdGlmaWNhdGlvbj1cIk5vdGlmaWNhdGlvblwiLGUuU3RvcmVmcm9udD1cIlN0b3JlZnJvbnRcIixlLlBsYXRmb3JtPVwiUGxhdGZvcm1cIixlLlRoZW1pbmc9XCJUaGVtaW5nXCIsZS5NaWNyb2Zsb3c9XCJNaWNyb2Zsb3dcIn0oUnx8KFI9e30pKTtjb25zdCBJPWFzeW5jKGUsdCk9Pntjb25zdCBuPXthcGlWZXJzaW9uOnQuYXBpVmVyc2lvbnx8ci51MCxjb21wb25lbnROYW1lOmUsY29tcG9uZW50VmVyc2lvbjp0LmNvbXBvbmVudFZlcnNpb258fHIudTAsYWxsb3dlZDp0LmFsbG93ZWQscmVqZWN0aW9uQ29kZTp0LnJlamVjdGlvbkNvZGV9O2Zpbi5TeXN0ZW0ucmVnaXN0ZXJVc2FnZSh7dHlwZTpcIndvcmtzcGFjZS1saWNlbnNpbmdcIixkYXRhOm59KX07Y29uc3QgWj1lPT57SShSLk5vdGlmaWNhdGlvbixlKX07dmFyIFQ7IWZ1bmN0aW9uKGUpe2UuQnJvd3Nlcj1cIkJyb3dzZXJcIixlLkRvY2s9XCJEb2NrXCIsZS5Ib21lPVwiSG9tZVwiLGUuTm90aWZpY2F0aW9uPVwiTm90aWZpY2F0aW9uXCIsZS5TdG9yZWZyb250PVwiU3RvcmVmcm9udFwiLGUuUGxhdGZvcm09XCJQbGF0Zm9ybVwiLGUuVGhlbWluZz1cIlRoZW1pbmdcIixlLkludGVyb3A9XCJJbnRlcm9wXCJ9KFR8fChUPXt9KSk7bmV3IE1hcH0sMTIxOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLmQodCx7QjooKT0+dSxHUDooKT0+ZCxJQTooKT0+cixPSTooKT0+cyxsUTooKT0+Y30pO3ZhciByLG89big4MDYpLGk9big2NzgpOyFmdW5jdGlvbihlKXtlLkhvbWU9XCJvcGVuZmluLWhvbWVcIixlLkRvY2s9XCJvcGVuZmluLWRvY2tcIixlLlN0b3JlZnJvbnQ9XCJvcGVuZmluLXN0b3JlZnJvbnRcIixlLkhvbWVJbnRlcm5hbD1cIm9wZW5maW4taG9tZS1pbnRlcm5hbFwiLGUuQnJvd3Nlck1lbnU9XCJvcGVuZmluLWJyb3dzZXItbWVudVwiLGUuQnJvd3NlckluZGljYXRvcj1cIm9wZW5maW4tYnJvd3Nlci1pbmRpY2F0b3JcIixlLkJyb3dzZXJXaW5kb3c9XCJpbnRlcm5hbC1nZW5lcmF0ZWQtd2luZG93XCIsZS5DbGFzc2ljV2luZG93PVwiaW50ZXJuYWwtZ2VuZXJhdGVkLWNsYXNzaWMtd2luZG93XCJ9KHJ8fChyPXt9KSk7ZnVuY3Rpb24gYShlKXtpZighaS5zUyl0aHJvdyBuZXcgRXJyb3IoXCJnZXRPRldpbmRvdyBjYW4gb25seSBiZSB1c2VkIGluIGFuIE9wZW5GaW4gZW52LiBBdm9pZCBjYWxsaW5nIHRoaXMgbWV0aG9kIGR1cmluZyBwcmUtcmVuZGVyaW5nLlwiKTtyZXR1cm4gZmluLldpbmRvdy53cmFwU3luYyhlKX1jb25zdCBsPXtuYW1lOmkub0MsdXVpZDppLkFCfTtmdW5jdGlvbiBjKCl7cmV0dXJuIGEobCl9Y29uc3Qgcz17bmFtZTpyLkhvbWUsdXVpZDpvLnE5LldvcmtzcGFjZX07ci5Eb2NrLG8ucTkuV29ya3NwYWNlLHIuU3RvcmVmcm9udCxvLnE5LldvcmtzcGFjZSxvLnE5LldvcmtzcGFjZSxvLnE5LldvcmtzcGFjZTtjb25zdCB1PWFzeW5jIGU9PntpZighZS5uYW1lLnN0YXJ0c1dpdGgoci5Ccm93c2VyV2luZG93KSlyZXR1cm4hMTtjb25zdCB0PWF3YWl0IGZpbi5XaW5kb3cud3JhcFN5bmMoe25hbWU6ZS5uYW1lLHV1aWQ6ZS51dWlkPz9maW4ubWUudXVpZH0pLmdldE9wdGlvbnMoKTtyZXR1cm4hIXQud29ya3NwYWNlUGxhdGZvcm0/LnBhZ2VzfTthc3luYyBmdW5jdGlvbiBkKCl7Y29uc3QgZT1hd2FpdCBmaW4uQXBwbGljYXRpb24uZ2V0Q3VycmVudFN5bmMoKS5nZXRDaGlsZFdpbmRvd3MoKSx0PWF3YWl0IFByb21pc2UuYWxsKGUubWFwKChhc3luYyBlPT51KGUuaWRlbnRpdHkpKSkpO3JldHVybiBlLmZpbHRlcigoKGUsbik9PnRbbl0pKX19fSx0PXt9O2Z1bmN0aW9uIG4ocil7dmFyIG89dFtyXTtpZih2b2lkIDAhPT1vKXJldHVybiBvLmV4cG9ydHM7dmFyIGk9dFtyXT17ZXhwb3J0czp7fX07cmV0dXJuIGVbcl0oaSxpLmV4cG9ydHMsbiksaS5leHBvcnRzfW4ubj1lPT57dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlPygpPT5lLmRlZmF1bHQ6KCk9PmU7cmV0dXJuIG4uZCh0LHthOnR9KSx0fSxuLmQ9KGUsdCk9Pntmb3IodmFyIHIgaW4gdCluLm8odCxyKSYmIW4ubyhlLHIpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9LG4uZz1mdW5jdGlvbigpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBnbG9iYWxUaGlzKXJldHVybiBnbG9iYWxUaGlzO3RyeXtyZXR1cm4gdGhpc3x8bmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKX1jYXRjaChlKXtpZihcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93KXJldHVybiB3aW5kb3d9fSgpLG4ubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCksbi5yPWU9PntcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSxuLm5jPXZvaWQgMDt2YXIgcj17fTsoKCk9PntcInVzZSBzdHJpY3RcIjtuLnIociksbi5kKHIse2RlcmVnaXN0ZXI6KCk9PnMscmVnaXN0ZXI6KCk9PmN9KTt2YXIgZT1uKDM1MSksdD1uKDc3Miksbz1uKDY1KSxpPXt9O2Zvcihjb25zdCB0IGluIGUpW1wiZGVmYXVsdFwiLFwicmVnaXN0ZXJcIixcImRlcmVnaXN0ZXJcIl0uaW5kZXhPZih0KTwwJiYoaVt0XT0oKT0+ZVt0XSk7bi5kKHIsaSk7Y29uc3QgYT1hc3luYyB0PT57aWYodCBpbnN0YW5jZW9mIEVycm9yKXtsZXQgbj10Lm1lc3NhZ2U7aWYodC5tZXNzYWdlLmluY2x1ZGVzKFwicmVnaXN0ZXItbm90aWZpY2F0aW9ucy1wbGF0Zm9ybVwiKSl7aWYobj1cIk5vdGlmaWNhdGlvbnMgcGxhdGZvcm1zIGFyZSBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb25zIGJlbG93IDEuMTMuMCwgdHJ5IHVwZGF0aW5nIHlvdXIgbm90aWZpY2F0aW9ucy1zZXJ2aWNlLlwiLGU/LnByb3ZpZGVyPy5nZXRTdGF0dXMpe2NvbnN0e3ZlcnNpb246dH09YXdhaXQgZS5wcm92aWRlci5nZXRTdGF0dXMoKTtuKz1gIFlvdXIgdmVyc2lvbiBpczogJHt0fWB9cmV0dXJuIG59cmV0dXJuIHQubWVzc2FnZX1yZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD90OlwidW5rbm93biBlcnJvciByZWdpc3RlcmluZyBOb3RpZmljYXRpb25zXCJ9LGw9YXN5bmMgZT0+e2lmKGUgaW5zdGFuY2VvZiBFcnJvciYmZS5tZXNzYWdlLmluY2x1ZGVzKFwicmVnaXN0ZXItbm90aWZpY2F0aW9ucy1wbGF0Zm9ybVwiKSl0aHJvdyBuZXcgRXJyb3IoYXdhaXQgYShlKSk7dGhyb3cgZX0sYz1hc3luYyBuPT57Y29uc3Qgcj1hd2FpdCgwLG8uVmIpKGZpbi5tZS5pZGVudGl0eSk7dHJ5e2NvbnN0IG89YXdhaXQgZS5yZWdpc3RlclBsYXRmb3JtKHsuLi5uLHRoZW1lOnIudGhlbWUsc2NoZW1lOnIuZGVmYXVsdFNjaGVtZSx3b3Jrc3BhY2VQbGF0Zm9ybTp7aWRlbnRpdHk6ZmluLlBsYXRmb3JtLmdldEN1cnJlbnRTeW5jKCkuaWRlbnRpdHksYW5hbHl0aWNzOntpc1N1cHBvcnRlZDohMH19fSk7cmV0dXJuKDAsdC50aikoe2FsbG93ZWQ6ITAsYXBpVmVyc2lvbjplLlZFUlNJT04sY29tcG9uZW50VmVyc2lvbjpvLm5vdGlmaWNhdGlvbnNWZXJzaW9ufSksb31jYXRjaChuKXsoMCx0LnRqKSh7YWxsb3dlZDohMSxyZWplY3Rpb25Db2RlOmF3YWl0IGEobiksYXBpVmVyc2lvbjplLlZFUlNJT059KSxhd2FpdCBsKG4pfX0scz1hc3luYyB0PT57dHJ5e2F3YWl0IGUuZGVyZWdpc3RlclBsYXRmb3JtKHQpfWNhdGNoKGUpe2F3YWl0IGwoZSl9fX0pKCksbW9kdWxlLmV4cG9ydHM9cn0pKCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ub3RpZmljYXRpb25zLmpzLm1hcCIsImltcG9ydCB0eXBlIE9wZW5GaW4gZnJvbSBcIkBvcGVuZmluL2NvcmVcIjtcbmltcG9ydCB7XG5cdEN1c3RvbUFjdGlvbkNhbGxlclR5cGUsXG5cdGdldEN1cnJlbnRTeW5jLFxuXHR0eXBlIEJyb3dzZXJDcmVhdGVXaW5kb3dSZXF1ZXN0LFxuXHR0eXBlIEN1c3RvbUFjdGlvblBheWxvYWQsXG5cdHR5cGUgQ3VzdG9tQWN0aW9uc01hcFxufSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgeyB0b2dnbGVOb3RpZmljYXRpb25DZW50ZXIgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlL25vdGlmaWNhdGlvbnNcIjtcbmltcG9ydCB7IGdldEFwcCB9IGZyb20gXCIuL2FwcHNcIjtcbmltcG9ydCAqIGFzIGF1dGhQcm92aWRlciBmcm9tIFwiLi9hdXRoXCI7XG5pbXBvcnQgeyB1cGRhdGVUb29sYmFyQnV0dG9ucyB9IGZyb20gXCIuL2J1dHRvbnNcIjtcbmltcG9ydCAqIGFzIGZhdm9yaXRlUHJvdmlkZXIgZnJvbSBcIi4vZmF2b3JpdGVcIjtcbmltcG9ydCB7IGxhdW5jaCB9IGZyb20gXCIuL2xhdW5jaFwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBjbG9zZWRvd25Nb2R1bGVzLCBpbml0aWFsaXplTW9kdWxlcywgbG9hZE1vZHVsZXMgfSBmcm9tIFwiLi9tb2R1bGVzXCI7XG5pbXBvcnQgeyBsYXVuY2hWaWV3IH0gZnJvbSBcIi4vcGxhdGZvcm0vYnJvd3NlclwiO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25IZWxwZXJzLCBBY3Rpb25zLCBBY3Rpb25zUHJvdmlkZXJPcHRpb25zIH0gZnJvbSBcIi4vc2hhcGVzL2FjdGlvbnMtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IEZhdm9yaXRlRW50cnkgfSBmcm9tIFwiLi9zaGFwZXMvZmF2b3JpdGUtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IE1vZHVsZUVudHJ5LCBNb2R1bGVIZWxwZXJzIH0gZnJvbSBcIi4vc2hhcGVzL21vZHVsZS1zaGFwZXNcIjtcbmltcG9ydCB7IHNob3dTaGFyZU9wdGlvbnMgfSBmcm9tIFwiLi9zaGFyZVwiO1xuaW1wb3J0IHsgdG9nZ2xlU2NoZW1lIH0gZnJvbSBcIi4vdGhlbWVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5LCBpc1N0cmluZ1ZhbHVlIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IHNob3cgfSBmcm9tIFwiLi93b3Jrc3BhY2UvaG9tZVwiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJBY3Rpb25zXCIpO1xuXG5sZXQgbW9kdWxlczogTW9kdWxlRW50cnk8QWN0aW9ucz5bXSB8IHVuZGVmaW5lZDtcbmNvbnN0IGN1c3RvbUFjdGlvbk1hcDogQ3VzdG9tQWN0aW9uc01hcCA9IHt9O1xubGV0IHBsYXRmb3JtQWN0aW9uTWFwOiBDdXN0b21BY3Rpb25zTWFwIHwgdW5kZWZpbmVkO1xubGV0IGlzSW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGVzZSBJZHMgYXJlIGZvciBhY3Rpb25zIGJ1aWx0IGluIHRvIHRoZSBwbGF0Zm9ybS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX0FDVElPTl9JRFMgPSB7XG5cdG1vdmVWaWV3VG9OZXdXaW5kb3c6IFwibW92ZS12aWV3LXRvLW5ldy13aW5kb3dcIixcblx0bW92ZVBhZ2VUb05ld1dpbmRvdzogXCJtb3ZlLXBhZ2UtdG8tbmV3LXdpbmRvd1wiLFxuXHRwaW5XaW5kb3c6IFwicGluLXdpbmRvd1wiLFxuXHR1bnBpbldpbmRvdzogXCJ1bnBpbi13aW5kb3dcIixcblx0aG9tZVNob3c6IFwiaG9tZS1zaG93XCIsXG5cdG5vdGlmaWNhdGlvblRvZ2dsZTogXCJub3RpZmljYXRpb24tdG9nZ2xlXCIsXG5cdHNoYXJlOiBcInNoYXJlXCIsXG5cdHF1aXQ6IFwicXVpdFwiLFxuXHRsb2dvdXRBbmRRdWl0OiBcImxvZ291dC1hbmQtcXVpdFwiLFxuXHRsYXVuY2hBcHA6IFwibGF1bmNoLWFwcFwiLFxuXHRsYXVuY2hWaWV3OiBcImxhdW5jaC12aWV3XCIsXG5cdHRvZ2dsZVNjaGVtZTogXCJ0b2dnbGUtc2NoZW1lXCIsXG5cdGZhdm9yaXRlQWRkOiBcImZhdm9yaXRlLWFkZFwiLFxuXHRmYXZvcml0ZVJlbW92ZTogXCJmYXZvcml0ZS1yZW1vdmVcIlxufTtcblxuLyoqXG4gKiBJbml0aWFsaXplIHRoZSBhY3Rpb25zIHByb3ZpZGVyLlxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIGFjdGlvbnMgcHJvdmlkZXIuXG4gKiBAcGFyYW0gaGVscGVycyBNb2R1bGUgaGVscGVycyB0byBwYXNzIHRvIGFueSBsb2FkZWQgbW9kdWxlcy5cbiAqIEByZXR1cm5zIFRoZSBwbGF0Zm9ybSBhY3Rpb24gbWFwLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdChcblx0b3B0aW9uczogQWN0aW9uc1Byb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCxcblx0aGVscGVyczogTW9kdWxlSGVscGVyc1xuKTogUHJvbWlzZTxDdXN0b21BY3Rpb25zTWFwIHwgdW5kZWZpbmVkPiB7XG5cdGlmIChpc0luaXRpYWxpemVkKSB7XG5cdFx0bG9nZ2VyLmVycm9yKFwiVGhlIGFjdGlvbnMgY2FuIG9ubHkgYmUgdXNlZCBvbmNlIHdoZW4gY29uZmlndXJpbmcgdGhlIHBsYXRmb3JtXCIpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG5cdGlmIChvcHRpb25zKSB7XG5cdFx0bG9nZ2VyLmluZm8oXCJJbml0aWFsaXppbmcgd2l0aCBvcHRpb25zXCIsIG9wdGlvbnMpO1xuXG5cdFx0Ly8gTG9hZCBhbnkgbW9kdWxlcyB0aGF0IGhhdmUgYW4gYWN0aW9ucyBlbmRwb2ludFxuXHRcdG1vZHVsZXMgPSBhd2FpdCBsb2FkTW9kdWxlczxBY3Rpb25zLCBBY3Rpb25IZWxwZXJzPihvcHRpb25zLCBcImFjdGlvbnNcIik7XG5cblx0XHQvLyBJbml0aWFsaXplIHRoZSBtb2R1bGVzXG5cdFx0YXdhaXQgaW5pdGlhbGl6ZU1vZHVsZXM8QWN0aW9ucywgQWN0aW9uSGVscGVycz4obW9kdWxlcywge1xuXHRcdFx0Li4uaGVscGVycyxcblx0XHRcdHVwZGF0ZVRvb2xiYXJCdXR0b25zXG5cdFx0fSk7XG5cdH1cblxuXHRhd2FpdCBidWlsZEFjdGlvbnMoKTtcblxuXHRyZXR1cm4gcGxhdGZvcm1BY3Rpb25NYXA7XG59XG5cbi8qKlxuICogQ2xvc2UgZG93biB0aGUgYWN0aW9ucyBwcm92aWRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNsb3NlZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcblx0YXdhaXQgY2xvc2Vkb3duTW9kdWxlcyhcImFjdGlvbnNcIik7XG59XG5cbi8qKlxuICogQ2FsbCBhbiBhY3Rpb24uXG4gKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBhY3Rpb24gdG8gY2FsbC5cbiAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIGZvciB0aGUgYWN0aW9uLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYWN0aW9uIGV4aXN0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNhbGxBY3Rpb24oaWQ6IHN0cmluZywgcGF5bG9hZDogQ3VzdG9tQWN0aW9uUGF5bG9hZCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRpZiAoIWlzRW1wdHkocGxhdGZvcm1BY3Rpb25NYXApICYmIHBsYXRmb3JtQWN0aW9uTWFwW2lkXSkge1xuXHRcdGF3YWl0IHBsYXRmb3JtQWN0aW9uTWFwW2lkXShwYXlsb2FkKTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogR2V0IGFsbCB0aGUgYWN0aW9ucyB3ZSB3YW50IHRvIHJlZ2lzdGVyIHdpdGggdGhlIHBsYXRmb3JtLlxuICogQHJldHVybnMgVGhlIG1hcCBvZiBhbGwgdGhlIGN1c3RvbSBhY3Rpb25zLlxuICovXG5hc3luYyBmdW5jdGlvbiBidWlsZEFjdGlvbnMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdC8vIEdldCB0aGUgcGxhdGZvcm0gYWN0aW9uc1xuXHRwbGF0Zm9ybUFjdGlvbk1hcCA9IGF3YWl0IGdldFBsYXRmb3JtQWN0aW9ucygpO1xuXG5cdC8vIE1lcmdlIGluIGFueSBjdXN0b20gYWN0aW9ucyByZWdpc3RlcmVkIHdpdGggcmVnaXN0ZXJBY3Rpb25cblx0cGxhdGZvcm1BY3Rpb25NYXAgPSB7IC4uLnBsYXRmb3JtQWN0aW9uTWFwLCAuLi5jdXN0b21BY3Rpb25NYXAgfTtcblxuXHRpZiAoIWlzRW1wdHkobW9kdWxlcykpIHtcblx0XHQvLyBNZXJnZSB0aGUgbW9kdWxlIGFjdGlvbnNcblx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0Zm9yIChjb25zdCBhY3Rpb25Nb2R1bGUgb2YgbW9kdWxlcykge1xuXHRcdFx0Y29uc3QgbW9kQWN0aW9ucyA9IGF3YWl0IGFjdGlvbk1vZHVsZS5pbXBsZW1lbnRhdGlvbi5nZXQocGxhdGZvcm0pO1xuXHRcdFx0cGxhdGZvcm1BY3Rpb25NYXAgPSB7XG5cdFx0XHRcdC4uLnBsYXRmb3JtQWN0aW9uTWFwLFxuXHRcdFx0XHQuLi5tb2RBY3Rpb25zXG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXG5cdGxvZ2dlci5pbmZvKFwiQWN0aW9uIElkc1wiLCBPYmplY3Qua2V5cyhwbGF0Zm9ybUFjdGlvbk1hcCkpO1xufVxuXG4vKipcbiAqIE1hbnVhbGx5IHJlZ2lzdGVyIGFuIGFjdGlvbiB3aXRoIHRoZSBwbGF0Zm9ybSwgbXVzdCBiZSBkb25lIGJlZm9yZSBnZXRBY3Rpb25zIGlzIGNhbGxlZC5cbiAqIEBwYXJhbSBhY3Rpb25OYW1lIFRoZSBuYW1lIG9mIHRoZSBhY3Rpb25zLlxuICogQHBhcmFtIGFjdGlvbiBUaGUgYWN0aW9uIHRvIGJlIHBlcmZvcm1lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQWN0aW9uKGFjdGlvbk5hbWU6IHN0cmluZywgYWN0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG5cdGlmIChpc0luaXRpYWxpemVkKSB7XG5cdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0YHJlZ2lzdGVyQWN0aW9uIGhhcyBiZWVuIGNhbGxlZCBmb3IgYWN0aW9uICR7YWN0aW9uTmFtZX0gYnV0IGl0IGlzIHRvbyBsYXRlIGZvciB0aGUgYWN0aW9uIHRvIGJlIHVzZWQgYnkgdGhlIHBsYXRmb3JtYFxuXHRcdCk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0aWYgKCFpc1N0cmluZ1ZhbHVlKGFjdGlvbk5hbWUpKSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJVbmFibGUgdG8gcmVnaXN0ZXIgYWN0aW9uLiBUaGUgYWN0aW9uIG5hbWUgd2FzIG5vdCBzcGVjaWZpZWQuXCIpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGlmIChpc0VtcHR5KGFjdGlvbikpIHtcblx0XHRsb2dnZXIud2FybihcIlVuYWJsZSB0byByZWdpc3RlciBhY3Rpb24gYXMgbm8gYWN0aW9uIHdhcyBwYXNzZWQuXCIpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGlmICghaXNFbXB0eShjdXN0b21BY3Rpb25NYXBbYWN0aW9uTmFtZV0pKSB7XG5cdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRgVW5hYmxlIHRvIGFkZCBhY3Rpb24gdG8gY3VzdG9tIGFjdGlvbnMgYXMgYW4gYWN0aW9uIHdpdGggdGhlIG5hbWUgJHthY3Rpb25OYW1lfSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWRgXG5cdFx0KTtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjdXN0b21BY3Rpb25NYXBbYWN0aW9uTmFtZV0gPSBhY3Rpb247XG5cdGxvZ2dlci5pbmZvKGBSZWdpc3RlcmVkIGFjdGlvbjogJHthY3Rpb25OYW1lfWApO1xufVxuXG4vKipcbiAqIEdldCB0aGUgaW5idWlsdCBhY3Rpb25zIGZvciB0aGUgcGxhdGZvcm0uXG4gKiBAcmV0dXJucyBUaGUgbWFwIG9mIHBsYXRmb3JtIGFjdGlvbnMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldFBsYXRmb3JtQWN0aW9ucygpOiBQcm9taXNlPEN1c3RvbUFjdGlvbnNNYXA+IHtcblx0Y29uc3QgYWN0aW9uTWFwOiBDdXN0b21BY3Rpb25zTWFwID0ge307XG5cblx0YWN0aW9uTWFwW1BMQVRGT1JNX0FDVElPTl9JRFMubW92ZVZpZXdUb05ld1dpbmRvd10gPSBhc3luYyAoXG5cdFx0cGF5bG9hZDogQ3VzdG9tQWN0aW9uUGF5bG9hZFxuXHQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRpZiAocGF5bG9hZC5jYWxsZXJUeXBlID09PSBDdXN0b21BY3Rpb25DYWxsZXJUeXBlLlZpZXdUYWJDb250ZXh0TWVudSkge1xuXHRcdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdFx0Y29uc3QgaW5pdGlhbFZpZXcgPSBhd2FpdCBwbGF0Zm9ybS5jcmVhdGVWaWV3KHtcblx0XHRcdFx0bmFtZTogcGF5bG9hZC5zZWxlY3RlZFZpZXdzWzBdLm5hbWVcblx0XHRcdH0gYXMgT3BlbkZpbi5QbGF0Zm9ybVZpZXdDcmVhdGlvbk9wdGlvbnMpO1xuXHRcdFx0aWYgKHBheWxvYWQuc2VsZWN0ZWRWaWV3cy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdGNvbnN0IHdpbmRvd0lkZW50aXR5ID0gYXdhaXQgZ2V0Vmlld1dpbmRvd0lkZW50aXR5KGluaXRpYWxWaWV3KTtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBwYXlsb2FkLnNlbGVjdGVkVmlld3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRhd2FpdCBwbGF0Zm9ybS5jcmVhdGVWaWV3KFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiBwYXlsb2FkLnNlbGVjdGVkVmlld3NbaV0ubmFtZVxuXHRcdFx0XHRcdFx0fSBhcyBPcGVuRmluLlBsYXRmb3JtVmlld0NyZWF0aW9uT3B0aW9ucyxcblx0XHRcdFx0XHRcdHdpbmRvd0lkZW50aXR5LFxuXHRcdFx0XHRcdFx0aW5pdGlhbFZpZXcuaWRlbnRpdHlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdGFjdGlvbk1hcFtQTEFURk9STV9BQ1RJT05fSURTLm1vdmVQYWdlVG9OZXdXaW5kb3ddID0gYXN5bmMgKFxuXHRcdHBheWxvYWQ6IEN1c3RvbUFjdGlvblBheWxvYWRcblx0KTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0aWYgKHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5QYWdlVGFiQ29udGV4dE1lbnUpIHtcblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdGNvbnN0IHdpbiA9IHBsYXRmb3JtLkJyb3dzZXIud3JhcFN5bmMocGF5bG9hZC53aW5kb3dJZGVudGl0eSk7XG5cdFx0XHRjb25zdCBwYWdlID0gYXdhaXQgd2luLmdldFBhZ2UocGF5bG9hZC5wYWdlSWQpO1xuXHRcdFx0YXdhaXQgcGxhdGZvcm0uY3JlYXRlV2luZG93KHtcblx0XHRcdFx0d29ya3NwYWNlUGxhdGZvcm06IHtcblx0XHRcdFx0XHRwYWdlczogW3BhZ2VdXG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0YXdhaXQgd2luLnJlbW92ZVBhZ2UocGFnZS5wYWdlSWQpO1xuXHRcdH1cblx0fTtcblxuXHRhY3Rpb25NYXBbUExBVEZPUk1fQUNUSU9OX0lEUy5waW5XaW5kb3ddID0gYXN5bmMgKHBheWxvYWQ6IEN1c3RvbUFjdGlvblBheWxvYWQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRpZiAocGF5bG9hZC5jYWxsZXJUeXBlID09PSBDdXN0b21BY3Rpb25DYWxsZXJUeXBlLkN1c3RvbUJ1dHRvbikge1xuXHRcdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdFx0Y29uc3QgYnJvd3NlcldpbmRvdyA9IHBsYXRmb3JtLkJyb3dzZXIud3JhcFN5bmMocGF5bG9hZC53aW5kb3dJZGVudGl0eSk7XG5cdFx0XHRjb25zdCBvcHRpb25zID0gYXdhaXQgYnJvd3NlcldpbmRvdy5vcGVuZmluV2luZG93LmdldE9wdGlvbnMoKTtcblx0XHRcdGNvbnN0IGN1cnJlbnRUb29sYmFyT3B0aW9ucyA9IChvcHRpb25zIGFzIEJyb3dzZXJDcmVhdGVXaW5kb3dSZXF1ZXN0KS53b3Jrc3BhY2VQbGF0Zm9ybS50b29sYmFyT3B0aW9ucztcblx0XHRcdGF3YWl0IGJyb3dzZXJXaW5kb3cub3BlbmZpbldpbmRvdy51cGRhdGVPcHRpb25zKHsgYWx3YXlzT25Ub3A6IHRydWUgfSk7XG5cdFx0XHRpZiAoY3VycmVudFRvb2xiYXJPcHRpb25zKSB7XG5cdFx0XHRcdGNvbnN0IG5ld0J1dHRvbnMgPSBhd2FpdCB1cGRhdGVUb29sYmFyQnV0dG9ucyhcblx0XHRcdFx0XHRjdXJyZW50VG9vbGJhck9wdGlvbnMuYnV0dG9ucyxcblx0XHRcdFx0XHRwYXlsb2FkLmN1c3RvbURhdGEuc291cmNlSWQgYXMgc3RyaW5nLFxuXHRcdFx0XHRcdHBheWxvYWQuY3VzdG9tRGF0YS5yZXBsYWNlbWVudElkIGFzIHN0cmluZ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRhd2FpdCBicm93c2VyV2luZG93LnJlcGxhY2VUb29sYmFyT3B0aW9ucyh7IGJ1dHRvbnM6IG5ld0J1dHRvbnMgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5WaWV3VGFiQ29udGV4dE1lbnUpIHtcblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdGNvbnN0IGJyb3dzZXJXaW5kb3cgPSBwbGF0Zm9ybS5Ccm93c2VyLndyYXBTeW5jKHBheWxvYWQud2luZG93SWRlbnRpdHkpO1xuXHRcdFx0Y29uc3Qgb3B0aW9ucyA9IGF3YWl0IGJyb3dzZXJXaW5kb3cub3BlbmZpbldpbmRvdy5nZXRPcHRpb25zKCk7XG5cdFx0XHRjb25zdCBjdXJyZW50VG9vbGJhck9wdGlvbnMgPSAob3B0aW9ucyBhcyBCcm93c2VyQ3JlYXRlV2luZG93UmVxdWVzdCkud29ya3NwYWNlUGxhdGZvcm0udG9vbGJhck9wdGlvbnM7XG5cdFx0XHRhd2FpdCBicm93c2VyV2luZG93Lm9wZW5maW5XaW5kb3cudXBkYXRlT3B0aW9ucyh7IGFsd2F5c09uVG9wOiB0cnVlIH0pO1xuXHRcdFx0aWYgKCFpc0VtcHR5KGN1cnJlbnRUb29sYmFyT3B0aW9ucykpIHtcblx0XHRcdFx0Y29uc3QgbmV3QnV0dG9ucyA9IGF3YWl0IHVwZGF0ZVRvb2xiYXJCdXR0b25zKFxuXHRcdFx0XHRcdGN1cnJlbnRUb29sYmFyT3B0aW9ucy5idXR0b25zLFxuXHRcdFx0XHRcdHBheWxvYWQuY3VzdG9tRGF0YS5zb3VyY2VJZCBhcyBzdHJpbmcsXG5cdFx0XHRcdFx0cGF5bG9hZC5jdXN0b21EYXRhLnJlcGxhY2VtZW50SWQgYXMgc3RyaW5nXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGF3YWl0IGJyb3dzZXJXaW5kb3cucmVwbGFjZVRvb2xiYXJPcHRpb25zKHsgYnV0dG9uczogbmV3QnV0dG9ucyB9KTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0YWN0aW9uTWFwW1BMQVRGT1JNX0FDVElPTl9JRFMudW5waW5XaW5kb3ddID0gYXN5bmMgKHBheWxvYWQ6IEN1c3RvbUFjdGlvblBheWxvYWQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRpZiAocGF5bG9hZC5jYWxsZXJUeXBlID09PSBDdXN0b21BY3Rpb25DYWxsZXJUeXBlLkN1c3RvbUJ1dHRvbikge1xuXHRcdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdFx0Y29uc3QgYnJvd3NlcldpbmRvdyA9IHBsYXRmb3JtLkJyb3dzZXIud3JhcFN5bmMocGF5bG9hZC53aW5kb3dJZGVudGl0eSk7XG5cdFx0XHRjb25zdCBvcHRpb25zID0gYXdhaXQgYnJvd3NlcldpbmRvdy5vcGVuZmluV2luZG93LmdldE9wdGlvbnMoKTtcblx0XHRcdGNvbnN0IGN1cnJlbnRUb29sYmFyT3B0aW9ucyA9IChvcHRpb25zIGFzIEJyb3dzZXJDcmVhdGVXaW5kb3dSZXF1ZXN0KS53b3Jrc3BhY2VQbGF0Zm9ybS50b29sYmFyT3B0aW9ucztcblx0XHRcdGF3YWl0IGJyb3dzZXJXaW5kb3cub3BlbmZpbldpbmRvdy51cGRhdGVPcHRpb25zKHsgYWx3YXlzT25Ub3A6IGZhbHNlIH0pO1xuXHRcdFx0aWYgKCFpc0VtcHR5KGN1cnJlbnRUb29sYmFyT3B0aW9ucykpIHtcblx0XHRcdFx0Y29uc3QgbmV3QnV0dG9ucyA9IGF3YWl0IHVwZGF0ZVRvb2xiYXJCdXR0b25zKFxuXHRcdFx0XHRcdGN1cnJlbnRUb29sYmFyT3B0aW9ucy5idXR0b25zLFxuXHRcdFx0XHRcdHBheWxvYWQuY3VzdG9tRGF0YS5zb3VyY2VJZCBhcyBzdHJpbmcsXG5cdFx0XHRcdFx0cGF5bG9hZC5jdXN0b21EYXRhLnJlcGxhY2VtZW50SWQgYXMgc3RyaW5nXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGF3YWl0IGJyb3dzZXJXaW5kb3cucmVwbGFjZVRvb2xiYXJPcHRpb25zKHsgYnV0dG9uczogbmV3QnV0dG9ucyB9KTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0YWN0aW9uTWFwW1BMQVRGT1JNX0FDVElPTl9JRFMuaG9tZVNob3ddID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdGF3YWl0IHNob3coKTtcblx0fTtcblxuXHRhY3Rpb25NYXBbUExBVEZPUk1fQUNUSU9OX0lEUy5ub3RpZmljYXRpb25Ub2dnbGVdID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdGF3YWl0IHRvZ2dsZU5vdGlmaWNhdGlvbkNlbnRlcigpO1xuXHR9O1xuXG5cdGFjdGlvbk1hcFtQTEFURk9STV9BQ1RJT05fSURTLnNoYXJlXSA9IGFzeW5jIChwYXlsb2FkOiBDdXN0b21BY3Rpb25QYXlsb2FkKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0aWYgKHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5DdXN0b21CdXR0b24pIHtcblx0XHRcdGF3YWl0IHNob3dTaGFyZU9wdGlvbnMocGF5bG9hZCk7XG5cdFx0fVxuXHR9O1xuXG5cdGFjdGlvbk1hcFtQTEFURk9STV9BQ1RJT05fSURTLnF1aXRdID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdGF3YWl0IGZpbi5QbGF0Zm9ybS5nZXRDdXJyZW50U3luYygpLnF1aXQoKTtcblx0fTtcblxuXHRhY3Rpb25NYXBbUExBVEZPUk1fQUNUSU9OX0lEUy5sb2dvdXRBbmRRdWl0XSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRhd2FpdCBhdXRoUHJvdmlkZXIubG9nb3V0KCk7XG5cdH07XG5cblx0YWN0aW9uTWFwW1BMQVRGT1JNX0FDVElPTl9JRFMubGF1bmNoQXBwXSA9IGFzeW5jIChwYXlsb2FkOiBDdXN0b21BY3Rpb25QYXlsb2FkKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0aWYgKFxuXHRcdFx0cGF5bG9hZC5jYWxsZXJUeXBlID09PSBDdXN0b21BY3Rpb25DYWxsZXJUeXBlLkN1c3RvbUJ1dHRvbiB8fFxuXHRcdFx0cGF5bG9hZC5jYWxsZXJUeXBlID09PSBDdXN0b21BY3Rpb25DYWxsZXJUeXBlLkN1c3RvbURyb3Bkb3duSXRlbSB8fFxuXHRcdFx0cGF5bG9hZC5jYWxsZXJUeXBlID09PSBDdXN0b21BY3Rpb25DYWxsZXJUeXBlLlN0b3JlQ3VzdG9tQnV0dG9uXG5cdFx0KSB7XG5cdFx0XHRpZiAocGF5bG9hZC5jdXN0b21EYXRhPy5hcHBJZCkge1xuXHRcdFx0XHRjb25zdCBhcHAgPSBhd2FpdCBnZXRBcHAocGF5bG9hZC5jdXN0b21EYXRhLmFwcElkIGFzIHN0cmluZyk7XG5cdFx0XHRcdGlmIChhcHApIHtcblx0XHRcdFx0XHRhd2FpdCBsYXVuY2goYXBwKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRsb2dnZXIuZXJyb3IoXG5cdFx0XHRcdFx0XHRgVW5hYmxlIHRvIGZpbmQgYXBwIHdpdGggaWQgJyR7XG5cdFx0XHRcdFx0XHRcdHBheWxvYWQuY3VzdG9tRGF0YS5hcHBJZFxuXHRcdFx0XHRcdFx0fScgaW4gY2FsbCB0byBsYXVuY2hBcHAgYWN0aW9uIGZyb20gc291cmNlICcke3BheWxvYWQuY3VzdG9tRGF0YT8uc291cmNlID8/IFwidW5rbm93biBzb3VyY2VcIn0nYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci5lcnJvcihcIk5vIGFwcElkIHNwZWNpZmllZCBpbiBwYXlsb2FkLmN1c3RvbURhdGEgaW4gbGF1bmNoQXBwIGFjdGlvblwiKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0YWN0aW9uTWFwW1BMQVRGT1JNX0FDVElPTl9JRFMubGF1bmNoVmlld10gPSBhc3luYyAocGF5bG9hZDogQ3VzdG9tQWN0aW9uUGF5bG9hZCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdGlmIChcblx0XHRcdHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5DdXN0b21CdXR0b24gfHxcblx0XHRcdHBheWxvYWQuY2FsbGVyVHlwZSA9PT0gQ3VzdG9tQWN0aW9uQ2FsbGVyVHlwZS5DdXN0b21Ecm9wZG93bkl0ZW1cblx0XHQpIHtcblx0XHRcdGlmIChwYXlsb2FkLmN1c3RvbURhdGE/LnVybCkge1xuXHRcdFx0XHRhd2FpdCBsYXVuY2hWaWV3KHBheWxvYWQuY3VzdG9tRGF0YT8udXJsIGFzIHN0cmluZyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJObyB1cmwgc3BlY2lmaWVkIGluIHBheWxvYWQuY3VzdG9tRGF0YSBpbiBsYXVuY2hWaWV3IGFjdGlvblwiKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0YWN0aW9uTWFwW1BMQVRGT1JNX0FDVElPTl9JRFMudG9nZ2xlU2NoZW1lXSA9IGFzeW5jIChwYXlsb2FkOiBDdXN0b21BY3Rpb25QYXlsb2FkKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0aWYgKFxuXHRcdFx0cGF5bG9hZC5jYWxsZXJUeXBlID09PSBDdXN0b21BY3Rpb25DYWxsZXJUeXBlLkN1c3RvbUJ1dHRvbiB8fFxuXHRcdFx0cGF5bG9hZC5jYWxsZXJUeXBlID09PSBDdXN0b21BY3Rpb25DYWxsZXJUeXBlLkN1c3RvbURyb3Bkb3duSXRlbVxuXHRcdCkge1xuXHRcdFx0YXdhaXQgdG9nZ2xlU2NoZW1lKCk7XG5cdFx0fVxuXHR9O1xuXG5cdGFjdGlvbk1hcFtQTEFURk9STV9BQ1RJT05fSURTLmZhdm9yaXRlQWRkXSA9IGFzeW5jIChwYXlsb2FkOiBDdXN0b21BY3Rpb25QYXlsb2FkKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0aWYgKFxuXHRcdFx0cGF5bG9hZC5jYWxsZXJUeXBlID09PSBDdXN0b21BY3Rpb25DYWxsZXJUeXBlLkN1c3RvbUJ1dHRvbiB8fFxuXHRcdFx0cGF5bG9hZC5jYWxsZXJUeXBlID09PSBDdXN0b21BY3Rpb25DYWxsZXJUeXBlLlN0b3JlQ3VzdG9tQnV0dG9uXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBmYXZvcml0ZTogRmF2b3JpdGVFbnRyeSA9IHBheWxvYWQuY3VzdG9tRGF0YTtcblx0XHRcdGlmIChpc0VtcHR5KGZhdm9yaXRlKSkge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJDYW4gb25seSBhZGQgdG8gZmF2b3JpdGVzIGlmIGZhdm9yaXRlIGRhdGEgaXMgcHJvdmlkZWQgaW4gY3VzdG9tRGF0YVwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGF3YWl0IGZhdm9yaXRlUHJvdmlkZXIuc2V0U2F2ZWRGYXZvcml0ZShmYXZvcml0ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdGFjdGlvbk1hcFtQTEFURk9STV9BQ1RJT05fSURTLmZhdm9yaXRlUmVtb3ZlXSA9IGFzeW5jIChwYXlsb2FkOiBDdXN0b21BY3Rpb25QYXlsb2FkKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0aWYgKFxuXHRcdFx0cGF5bG9hZC5jYWxsZXJUeXBlID09PSBDdXN0b21BY3Rpb25DYWxsZXJUeXBlLkN1c3RvbUJ1dHRvbiB8fFxuXHRcdFx0cGF5bG9hZC5jYWxsZXJUeXBlID09PSBDdXN0b21BY3Rpb25DYWxsZXJUeXBlLlN0b3JlQ3VzdG9tQnV0dG9uXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBmYXZvcml0ZTogRmF2b3JpdGVFbnRyeSA9IHBheWxvYWQuY3VzdG9tRGF0YTtcblx0XHRcdGlmIChpc0VtcHR5KGZhdm9yaXRlKSkge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJDYW4gb25seSByZW1vdmUgZnJvbSBmYXZvcml0ZXMgaWYgZmF2b3JpdGUgZGF0YSBpcyBwcm92aWRlZCBpbiBjdXN0b21EYXRhXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YXdhaXQgZmF2b3JpdGVQcm92aWRlci5kZWxldGVTYXZlZEZhdm9yaXRlKGZhdm9yaXRlLmlkKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0cmV0dXJuIGFjdGlvbk1hcDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGlkZW50aXR5IG9mIHRoZSB3aW5kb3cgY29udGFpbmluZyBhIHZpZXcuXG4gKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0byBnZXQgdGhlIGNvbnRhaW5pbmcgd2luZG93IGlkZW50aXR5LlxuICogQHJldHVybnMgVGhlIGlkZW50aXR5IG9mIHRoZSBjb250YWluaW5nIHdpbmRvdy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0Vmlld1dpbmRvd0lkZW50aXR5KHZpZXc6IE9wZW5GaW4uVmlldyk6IFByb21pc2U8T3BlbkZpbi5JZGVudGl0eT4ge1xuXHRjb25zdCBjdXJyZW50V2luZG93ID0gYXdhaXQgdmlldy5nZXRDdXJyZW50V2luZG93KCk7XG5cblx0Ly8gSWYgdGhlIHZpZXcgZG9lcyBpcyBub3QgeWV0IGF0dGFjaGVkIHRvIGEgd2luZG93LCB3YWl0IGZvciB0aGVcblx0Ly8gdGFyZ2V0LWNoYW5nZWQgZXZlbiB3aGljaCBtZWFucyBpdCBoYXMgYmVlbiBhdHRhY2hlZFxuXHRpZiAoaXNFbXB0eShjdXJyZW50V2luZG93LmlkZW50aXR5Lm5hbWUpIHx8IGN1cnJlbnRXaW5kb3cuaWRlbnRpdHkubmFtZSA9PT0gZmluLm1lLmlkZW50aXR5LnV1aWQpIHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2U8T3BlbkZpbi5JZGVudGl0eT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0dmlld1xuXHRcdFx0XHQub25jZShcInRhcmdldC1jaGFuZ2VkXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHRjb25zdCBob3N0V2luZG93ID0gYXdhaXQgdmlldy5nZXRDdXJyZW50V2luZG93KCk7XG5cdFx0XHRcdFx0cmVzb2x2ZShob3N0V2luZG93LmlkZW50aXR5KTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKCgpID0+IHt9KTtcblx0XHR9KTtcblx0fVxuXG5cdHJldHVybiBjdXJyZW50V2luZG93LmlkZW50aXR5O1xufVxuIiwiaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBjbG9zZWRvd25Nb2R1bGVzLCBpbml0aWFsaXplTW9kdWxlcywgbG9hZE1vZHVsZXMgfSBmcm9tIFwiLi9tb2R1bGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFuYWx5dGljc01vZHVsZSxcblx0QW5hbHl0aWNzUHJvdmlkZXJPcHRpb25zLFxuXHRQbGF0Zm9ybUFuYWx5dGljc0V2ZW50XG59IGZyb20gXCIuL3NoYXBlcy9hbmFseXRpY3Mtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IE1vZHVsZUVudHJ5LCBNb2R1bGVIZWxwZXJzIH0gZnJvbSBcIi4vc2hhcGVzL21vZHVsZS1zaGFwZXNcIjtcblxubGV0IG1vZHVsZXM6IE1vZHVsZUVudHJ5PEFuYWx5dGljc01vZHVsZT5bXSA9IFtdO1xubGV0IGlzQW5hbHl0aWNzRW5hYmxlZCA9IGZhbHNlO1xuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiQW5hbHl0aWNzXCIpO1xuXG4vKipcbiAqIEluaXRpYWxpemUgdGhlIGFuYWx5dGljcyBwcm92aWRlci5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgYW5hbHl0aWNzIHByb3ZpZGVyLlxuICogQHBhcmFtIGhlbHBlcnMgTW9kdWxlIGhlbHBlcnMgdG8gcGFzcyB0byBhbnkgbG9hZGVkIG1vZHVsZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KFxuXHRvcHRpb25zOiBBbmFseXRpY3NQcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQsXG5cdGhlbHBlcnM6IE1vZHVsZUhlbHBlcnNcbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAob3B0aW9ucykge1xuXHRcdGxvZ2dlci5pbmZvKFwiSW5pdGlhbGl6aW5nIHdpdGggb3B0aW9uc1wiLCBvcHRpb25zKTtcblx0XHRtb2R1bGVzID0gYXdhaXQgbG9hZE1vZHVsZXM8QW5hbHl0aWNzTW9kdWxlPihvcHRpb25zLCBcImFuYWx5dGljc1wiKTtcblx0XHRhd2FpdCBpbml0aWFsaXplTW9kdWxlcyhtb2R1bGVzLCBoZWxwZXJzKTtcblx0XHRpc0FuYWx5dGljc0VuYWJsZWQgPSBtb2R1bGVzLmxlbmd0aCA+IDA7XG5cdH1cbn1cblxuLyoqXG4gKiBDbG9zZSBkb3duIHRoZSBhbmFseXRpY3MgcHJvdmlkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjbG9zZWRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG5cdGF3YWl0IGNsb3NlZG93bk1vZHVsZXMoXCJhbmFseXRpY3NcIik7XG59XG5cbi8qKlxuICogSXMgdGhlIGFuYWx5dGljcyBwcm92aWRlciBlbmFibGVkLlxuICogQHJldHVybnMgVHJ1ZSBpZiBhbmFseXRpY3MgaXMgZW5hYmxlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW5hYmxlZCgpOiBib29sZWFuIHtcblx0cmV0dXJuIGlzQW5hbHl0aWNzRW5hYmxlZDtcbn1cblxuLyoqXG4gKiBIYW5kbGUgYSBsaXN0IG9mIGFuYWx5dGljcyBldmVudHMuXG4gKiBAcGFyYW0gZXZlbnRzIFRoZSBldmVudHMgdG8gaGFuZGxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlQW5hbHl0aWNzKGV2ZW50czogUGxhdGZvcm1BbmFseXRpY3NFdmVudFtdKTogUHJvbWlzZTx2b2lkPiB7XG5cdGZvciAoY29uc3QgYW5hbHl0aWNzTW9kdWxlIG9mIG1vZHVsZXMpIHtcblx0XHRhd2FpdCBhbmFseXRpY3NNb2R1bGUuaW1wbGVtZW50YXRpb24uaGFuZGxlQW5hbHl0aWNzKGV2ZW50cyk7XG5cdH1cbn1cbiIsImltcG9ydCB7IGdldEN1cnJlbnRTeW5jIH0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZS1wbGF0Zm9ybVwiO1xuaW1wb3J0IHsgZ2V0Q29ubmVjdGVkQXBwcyB9IGZyb20gXCIuL2Nvbm5lY3Rpb25zXCI7XG5pbXBvcnQgeyBhZGREaXJlY3RvcnlFbmRwb2ludCwgZ2V0UGxhdGZvcm1BcHBzLCBpbml0IGFzIGRpcmVjdG9yeUluaXQgfSBmcm9tIFwiLi9kaXJlY3RvcnlcIjtcbmltcG9ydCB7IGZpcmVMaWZlY3ljbGVFdmVudCB9IGZyb20gXCIuL2xpZmVjeWNsZVwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBNQU5JRkVTVF9UWVBFUyB9IGZyb20gXCIuL21hbmlmZXN0LXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IEFwcEZpbHRlck9wdGlvbnMsIEFwcFByb3ZpZGVyT3B0aW9ucywgQXBwc0ZvckludGVudCwgUGxhdGZvcm1BcHAgfSBmcm9tIFwiLi9zaGFwZXMvYXBwLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBFbmRwb2ludFByb3ZpZGVyIH0gZnJvbSBcIi4vc2hhcGVzL2VuZHBvaW50LXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBBcHBJbnRlbnRzIH0gZnJvbSBcIi4vc2hhcGVzL2ZkYzMtMi0wLXNoYXBlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSwgaXNOdW1iZXIsIHJhbmRvbVVVSUQgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJBcHBzXCIpO1xuXG5sZXQgY2FjaGVkQXBwczogUGxhdGZvcm1BcHBbXSA9IFtdO1xubGV0IGNhY2hlRHVyYXRpb246IG51bWJlciA9IDA7XG5sZXQgY2FjaGVSZXRyaWV2YWxTdHJhdGVneTogXCJvbi1kZW1hbmRcIiB8IFwiaW50ZXJ2YWxcIiA9IFwib24tZGVtYW5kXCI7XG5sZXQgbGFzdENhY2hlVXBkYXRlOiBudW1iZXIgPSAwO1xubGV0IGlzSW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbmxldCBzdXBwb3J0ZWRNYW5pZmVzdFR5cGVzOiBzdHJpbmdbXTtcbmxldCBnZXRFbnRyaWVzUmVzb2x2ZXJzOiAoKGFwcHM6IFBsYXRmb3JtQXBwW10pID0+IHZvaWQpW10gfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgYXBwbGljYXRpb24gcHJvdmlkZXIuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgYWN0aW9ucyBwcm92aWRlci5cbiAqIEBwYXJhbSBlbmRwb2ludFByb3ZpZGVyIFRoZSBlbmRwb2ludCBwcm92aWRlciB0byBoZWxwIHJldHJpZXZlIGFwcHMgZnJvbSBlbmRwb2ludHMuXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdChcblx0b3B0aW9uczogQXBwUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkLFxuXHRlbmRwb2ludFByb3ZpZGVyOiBFbmRwb2ludFByb3ZpZGVyXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKGlzSW5pdGlhbGl6ZWQpIHtcblx0XHRsb2dnZXIud2FybihcIlRoZSBhcHAgc2VydmljZSBpcyBhbHJlYWR5IGluaXRpYWxpemVkXCIpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGlmIChvcHRpb25zKSB7XG5cdFx0aXNJbml0aWFsaXplZCA9IHRydWU7XG5cdFx0YXdhaXQgZGlyZWN0b3J5SW5pdChlbmRwb2ludFByb3ZpZGVyKTtcblxuXHRcdGlmICghaXNFbXB0eShvcHRpb25zPy5hcHBzU291cmNlVXJsKSkge1xuXHRcdFx0Ly8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSBzdXBwb3J0XG5cdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0XCJVc2luZyBhcHBzU291cmNlVXJsIGFzIGl0IHdhcyBzcGVjaWZpZWQuIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG1vZGUuIFRyeSB0byB1c2UgdGhlIGVuZHBvaW50SWRzIHNldHRpbmcgaW5zdGVhZCBhbmQgZGVmaW5lIHNvbWUgZW5kcG9pbnRzXCJcblx0XHRcdCk7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zPy5hcHBzU291cmNlVXJsKSkge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcImFwcHNTb3VyY2VVcmwgc3BlY2lmaWVkIGFzIGFuIGFycmF5IG9mIHVybHNcIik7XG5cdFx0XHRcdGNvbnN0IGFwcFVybHM6IHN0cmluZ1tdID0gb3B0aW9ucz8uYXBwc1NvdXJjZVVybCB8fCBbXTtcblx0XHRcdFx0Zm9yIChjb25zdCB1cmwgb2YgYXBwVXJscykge1xuXHRcdFx0XHRcdGFkZERpcmVjdG9yeUVuZHBvaW50KHtcblx0XHRcdFx0XHRcdGlkOiByYW5kb21VVUlEKCksXG5cdFx0XHRcdFx0XHR1cmw6IHsgcGF0aDogdXJsLCBjcmVkZW50aWFsczogb3B0aW9ucz8uaW5jbHVkZUNyZWRlbnRpYWxPblNvdXJjZVJlcXVlc3QgfVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcImFwcHNTb3VyY2VVcmwgc3BlY2lmaWVkIGFzIGEgc2luZ2xlIHVybFwiKTtcblx0XHRcdFx0YWRkRGlyZWN0b3J5RW5kcG9pbnQoe1xuXHRcdFx0XHRcdGlkOiByYW5kb21VVUlEKCksXG5cdFx0XHRcdFx0dXJsOiB7IHBhdGg6IG9wdGlvbnM/LmFwcHNTb3VyY2VVcmwsIGNyZWRlbnRpYWxzOiBvcHRpb25zPy5pbmNsdWRlQ3JlZGVudGlhbE9uU291cmNlUmVxdWVzdCB9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zPy5lbmRwb2ludElkcykpIHtcblx0XHRcdGxvZ2dlci5pbmZvKFwiVXNpbmcgdGhlIGZvbGxvd2luZyBwYXNzZWQgZW5kcG9pbnRzXCIsIG9wdGlvbnMuZW5kcG9pbnRJZHMpO1xuXHRcdFx0Zm9yIChjb25zdCBlbmRwb2ludElkIG9mIG9wdGlvbnMuZW5kcG9pbnRJZHMpIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBlbmRwb2ludElkID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0aWYgKGVuZHBvaW50SWQuc3RhcnRzV2l0aChcImh0dHBcIikpIHtcblx0XHRcdFx0XHRcdGFkZERpcmVjdG9yeUVuZHBvaW50KHtcblx0XHRcdFx0XHRcdFx0aWQ6IHJhbmRvbVVVSUQoKSxcblx0XHRcdFx0XHRcdFx0dXJsOiB7IHBhdGg6IGVuZHBvaW50SWQsIGNyZWRlbnRpYWxzOiBvcHRpb25zPy5pbmNsdWRlQ3JlZGVudGlhbE9uU291cmNlUmVxdWVzdCB9XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YWRkRGlyZWN0b3J5RW5kcG9pbnQoe1xuXHRcdFx0XHRcdFx0XHRpZDogcmFuZG9tVVVJRCgpLFxuXHRcdFx0XHRcdFx0XHRlbmRwb2ludElkXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YWRkRGlyZWN0b3J5RW5kcG9pbnQoe1xuXHRcdFx0XHRcdFx0aWQ6IHJhbmRvbVVVSUQoKSxcblx0XHRcdFx0XHRcdG1hcDogZW5kcG9pbnRJZFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGlzTnVtYmVyKG9wdGlvbnM/LmNhY2hlRHVyYXRpb25JblNlY29uZHMpKSB7XG5cdFx0XHRjYWNoZUR1cmF0aW9uICs9IG9wdGlvbnM/LmNhY2hlRHVyYXRpb25JblNlY29uZHMgKiAxMDAwO1xuXHRcdH1cblxuXHRcdGlmIChpc051bWJlcihvcHRpb25zPy5jYWNoZUR1cmF0aW9uSW5NaW51dGVzKSkge1xuXHRcdFx0Y2FjaGVEdXJhdGlvbiArPSBvcHRpb25zPy5jYWNoZUR1cmF0aW9uSW5NaW51dGVzICogNjAgKiAxMDAwO1xuXHRcdH1cblx0XHRzdXBwb3J0ZWRNYW5pZmVzdFR5cGVzID0gb3B0aW9ucz8ubWFuaWZlc3RUeXBlcyA/PyBbXTtcblxuXHRcdGNhY2hlUmV0cmlldmFsU3RyYXRlZ3kgPSBvcHRpb25zPy5jYWNoZVJldHJpZXZhbFN0cmF0ZWd5ID8/IGNhY2hlUmV0cmlldmFsU3RyYXRlZ3k7XG5cdFx0aWYgKGNhY2hlRHVyYXRpb24gPiAwICYmIGNhY2hlUmV0cmlldmFsU3RyYXRlZ3kgPT09IFwiaW50ZXJ2YWxcIikge1xuXHRcdFx0bGV0IHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcblx0XHRcdHdpbmRvdy5zZXRJbnRlcnZhbChhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGlmICghdXBkYXRlSW5Qcm9ncmVzcykge1xuXHRcdFx0XHRcdHVwZGF0ZUluUHJvZ3Jlc3MgPSB0cnVlO1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRhd2FpdCBnZXRFbnRyaWVzKCk7XG5cdFx0XHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0XHRcdHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0sIGNhY2hlRHVyYXRpb24pO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEdldCB0aGUgbGlzdCBvZiBhcHBsaWNhdGlvbnMgYW5kIGZpbHRlciBpZiByZXF1ZXN0ZWQuXG4gKiBAcGFyYW0gYXBwRmlsdGVyIFRoZSBvcHRpb25zIGZpbHRlcnMuXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBhcHBsaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEFwcHMoYXBwRmlsdGVyPzogQXBwRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8UGxhdGZvcm1BcHBbXT4ge1xuXHRpZiAoaXNJbml0aWFsaXplZCkge1xuXHRcdGxvZ2dlci5pbmZvKFwiUmVxdWVzdGluZyBhcHBzXCIpO1xuXG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGFwcHMgPSBhd2FpdCBnZXRFbnRyaWVzKCk7XG5cblx0XHRcdGlmIChhcHBGaWx0ZXIpIHtcblx0XHRcdFx0aWYgKCFpc0VtcHR5KGFwcEZpbHRlci5wcml2YXRlKSAmJiAhaXNFbXB0eShhcHBGaWx0ZXIuYXV0b3N0YXJ0KSkge1xuXHRcdFx0XHRcdHJldHVybiBhcHBzLmZpbHRlcigoYXBwVG9GaWx0ZXIpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IGlzUHJpdmF0ZSA9IGFwcFRvRmlsdGVyLnByaXZhdGUgPz8gZmFsc2U7XG5cdFx0XHRcdFx0XHRjb25zdCBhdXRvc3RhcnQgPSBhcHBUb0ZpbHRlci5hdXRvc3RhcnQgPz8gZmFsc2U7XG5cdFx0XHRcdFx0XHRyZXR1cm4gYXBwRmlsdGVyLnByaXZhdGUgPT09IGlzUHJpdmF0ZSAmJiBhcHBGaWx0ZXIuYXV0b3N0YXJ0ID09PSBhdXRvc3RhcnQ7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFpc0VtcHR5KGFwcEZpbHRlci5wcml2YXRlKSkge1xuXHRcdFx0XHRcdHJldHVybiBhcHBzLmZpbHRlcigoYXBwVG9GaWx0ZXIpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IGlzUHJpdmF0ZSA9IGFwcFRvRmlsdGVyLnByaXZhdGUgPz8gZmFsc2U7XG5cdFx0XHRcdFx0XHRyZXR1cm4gYXBwRmlsdGVyLnByaXZhdGUgPT09IGlzUHJpdmF0ZTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWlzRW1wdHkoYXBwRmlsdGVyLmF1dG9zdGFydCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gYXBwcy5maWx0ZXIoKGFwcFRvRmlsdGVyKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBhdXRvc3RhcnQgPSBhcHBUb0ZpbHRlci5hdXRvc3RhcnQgPz8gZmFsc2U7XG5cdFx0XHRcdFx0XHRyZXR1cm4gYXBwRmlsdGVyLmF1dG9zdGFydCA9PT0gYXV0b3N0YXJ0O1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYXBwcztcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdGxvZ2dlci5lcnJvcihcIkVycm9yIHJldHJpZXZpbmcgYXBwcy4gUmV0dXJuaW5nIGVtcHR5IGxpc3RcIiwgZXJyKTtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJDYWxsaW5nIGdldEFwcHMgYmVmb3JlIGFwcCBwcm92aWRlciBpcyBpbml0aWFsaXplZFwiKTtcblx0fVxuXG5cdHJldHVybiBbXTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGxpc3Qgb2YgYXBwcyBmcm9tIHRoZSBzcGVjaWZpZWQgZW50cmllcy5cbiAqIEByZXR1cm5zIFRoZSBhcHAgZW50cmllcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0RW50cmllcygpOiBQcm9taXNlPFBsYXRmb3JtQXBwW10+IHtcblx0aWYgKGlzRW1wdHkoZ2V0RW50cmllc1Jlc29sdmVycykpIHtcblx0XHRsZXQgcGVyZm9ybVJlcXVlc3QgPSB0cnVlO1xuXHRcdGlmIChjYWNoZVJldHJpZXZhbFN0cmF0ZWd5ID09PSBcIm9uLWRlbWFuZFwiKSB7XG5cdFx0XHRwZXJmb3JtUmVxdWVzdCA9IGZhbHNlO1xuXG5cdFx0XHRjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXHRcdFx0aWYgKG5vdyAtIGxhc3RDYWNoZVVwZGF0ZSA+IGNhY2hlRHVyYXRpb24pIHtcblx0XHRcdFx0bGFzdENhY2hlVXBkYXRlID0gbm93O1xuXHRcdFx0XHRwZXJmb3JtUmVxdWVzdCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHBlcmZvcm1SZXF1ZXN0KSB7XG5cdFx0XHRnZXRFbnRyaWVzUmVzb2x2ZXJzID0gW107XG5cblx0XHRcdGxvZ2dlci5pbmZvKFwiQXBwcyBjYWNoZSBleHBpcmVkIHJlZnJlc2hpbmdcIik7XG5cblx0XHRcdGNvbnN0IGFwcHM6IFBsYXRmb3JtQXBwW10gPSBbXTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiR2V0dGluZyBkaXJlY3RvcnkgYXBwcy5cIik7XG5cdFx0XHRcdGNvbnN0IGRpcmVjdG9yeUFwcHMgPSBhd2FpdCBnZXRQbGF0Zm9ybUFwcHMoKTtcblx0XHRcdFx0YXBwcy5wdXNoKC4uLmRpcmVjdG9yeUFwcHMpO1xuXG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiR2V0dGluZyBjb25uZWN0ZWQgYXBwcy5cIik7XG5cdFx0XHRcdGNvbnN0IGNvbm5lY3RlZEFwcHMgPSBhd2FpdCBnZXRDb25uZWN0ZWRBcHBzKCk7XG5cdFx0XHRcdGlmIChjb25uZWN0ZWRBcHBzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0XHRcdGBBZGRpbmcgJHtjb25uZWN0ZWRBcHBzLmxlbmd0aH0gYXBwcyBmcm9tIGNvbm5lY3RlZCBhcHBzIHRvIHRoZSBhcHBzIGxpc3QgdG8gYmUgdmFsaWRhdGVkYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YXBwcy5wdXNoKC4uLmNvbm5lY3RlZEFwcHMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJFcnJvciBmZXRjaGluZyBhcHBzLlwiLCBlcnJvcik7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGxhc3RDYWNoZWRBcHBzSnNvbiA9IEpTT04uc3RyaW5naWZ5KGNhY2hlZEFwcHMpO1xuXG5cdFx0XHRjYWNoZWRBcHBzID0gYXdhaXQgdmFsaWRhdGVFbnRyaWVzKGFwcHMpO1xuXG5cdFx0XHRpZiAoZ2V0RW50cmllc1Jlc29sdmVycy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiUmVzb2x2aW5nIGdldEVudHJ5IHByb21pc2VzXCIpO1xuXG5cdFx0XHRcdGZvciAoY29uc3QgZ2V0RW50cmllc1Jlc29sdmVyIG9mIGdldEVudHJpZXNSZXNvbHZlcnMpIHtcblx0XHRcdFx0XHRnZXRFbnRyaWVzUmVzb2x2ZXIoY2FjaGVkQXBwcyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Z2V0RW50cmllc1Jlc29sdmVycyA9IHVuZGVmaW5lZDtcblxuXHRcdFx0Y29uc3QgY2FjaGVkQXBwSnNvbiA9IEpTT04uc3RyaW5naWZ5KGNhY2hlZEFwcHMpO1xuXG5cdFx0XHRpZiAoY2FjaGVkQXBwSnNvbiAhPT0gbGFzdENhY2hlZEFwcHNKc29uKSB7XG5cdFx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdFx0YXdhaXQgZmlyZUxpZmVjeWNsZUV2ZW50KHBsYXRmb3JtLCBcImFwcHMtY2hhbmdlZFwiKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2FjaGVkQXBwcztcblx0fVxuXG5cdHJldHVybiBuZXcgUHJvbWlzZTxQbGF0Zm9ybUFwcFtdPigocmVzb2x2ZSkgPT4ge1xuXHRcdGlmIChnZXRFbnRyaWVzUmVzb2x2ZXJzKSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIlN0b3JpbmcgZ2V0RW50cnkgcmVzb2x2ZXJcIik7XG5cdFx0XHRnZXRFbnRyaWVzUmVzb2x2ZXJzLnB1c2gocmVzb2x2ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlc29sdmUoY2FjaGVkQXBwcyk7XG5cdFx0fVxuXHR9KTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSB0aGUgbGlzdCBvZiBhcHAgZW50cmllcyBhZ2FpbnN0IHN1cHBvcnRlZCBtYW5pZmVzdCB0eXBlcyBhbmQgcGVybWlzc2lvbnMuXG4gKiBAcGFyYW0gYXBwcyBUaGUgbGlzdCBvZiBhcHBzIHRvIHZhbGlkYXRpb24uXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiB2YWxpZGF0ZWQgYXBwcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVFbnRyaWVzKGFwcHM6IFBsYXRmb3JtQXBwW10pOiBQcm9taXNlPFBsYXRmb3JtQXBwW10+IHtcblx0Y29uc3QgaGFzTGF1bmNoRXh0ZXJuYWxQcm9jZXNzID0gYXdhaXQgZ2V0Q2FuTGF1bmNoRXh0ZXJuYWxQcm9jZXNzKCk7XG5cdGNvbnN0IGhhc0Rvd25sb2FkQXBwQXNzZXRzID0gYXdhaXQgZ2V0Q2FuRG93bmxvYWRBcHBBc3NldHMoKTtcblxuXHRjb25zdCB2YWxpZGF0ZWRBcHBzOiBQbGF0Zm9ybUFwcFtdID0gW107XG5cdGNvbnN0IHJlamVjdGVkQXBwSWRzID0gW107XG5cblx0Zm9yIChjb25zdCBhcHAgb2YgYXBwcykge1xuXHRcdGNvbnN0IG1hbmlmZXN0VHlwZSA9IGFwcC5tYW5pZmVzdFR5cGU7XG5cblx0XHRpZiAobWFuaWZlc3RUeXBlKSB7XG5cdFx0XHRsZXQgdmFsaWRBcHAgPSB0cnVlO1xuXHRcdFx0aWYgKCFpc0VtcHR5KHN1cHBvcnRlZE1hbmlmZXN0VHlwZXMpICYmIHN1cHBvcnRlZE1hbmlmZXN0VHlwZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR2YWxpZEFwcCA9IHN1cHBvcnRlZE1hbmlmZXN0VHlwZXMuaW5jbHVkZXMobWFuaWZlc3RUeXBlKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHZhbGlkQXBwKSB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRtYW5pZmVzdFR5cGUgIT09IE1BTklGRVNUX1RZUEVTLkV4dGVybmFsLmlkICYmXG5cdFx0XHRcdFx0bWFuaWZlc3RUeXBlICE9PSBNQU5JRkVTVF9UWVBFUy5JbmxpbmVFeHRlcm5hbC5pZCAmJlxuXHRcdFx0XHRcdG1hbmlmZXN0VHlwZSAhPT0gTUFOSUZFU1RfVFlQRVMuQXBwYXNzZXQuaWQgJiZcblx0XHRcdFx0XHRtYW5pZmVzdFR5cGUgIT09IE1BTklGRVNUX1RZUEVTLklubGluZUFwcEFzc2V0LmlkXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHZhbGlkYXRlZEFwcHMucHVzaChhcHApO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFoYXNMYXVuY2hFeHRlcm5hbFByb2Nlc3MpIHtcblx0XHRcdFx0XHRyZWplY3RlZEFwcElkcy5wdXNoKGFwcC5hcHBJZCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0KG1hbmlmZXN0VHlwZSA9PT0gTUFOSUZFU1RfVFlQRVMuQXBwYXNzZXQuaWQgfHxcblx0XHRcdFx0XHRcdG1hbmlmZXN0VHlwZSA9PT0gTUFOSUZFU1RfVFlQRVMuSW5saW5lQXBwQXNzZXQuaWQpICYmXG5cdFx0XHRcdFx0IWhhc0Rvd25sb2FkQXBwQXNzZXRzXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJlamVjdGVkQXBwSWRzLnB1c2goYXBwLmFwcElkKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR2YWxpZGF0ZWRBcHBzLnB1c2goYXBwKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXCJBcHBsaWNhdGlvbiBpcyBub3QgaW4gdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIG1hbmlmZXN0IHR5cGVzXCIsIGFwcC5hcHBJZCwgbWFuaWZlc3RUeXBlKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0bG9nZ2VyLndhcm4oXCJBcHBsaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGEgbWFuaWZlc3RUeXBlXCIsIGFwcC5hcHBJZCk7XG5cdFx0fVxuXHR9XG5cblx0aWYgKHJlamVjdGVkQXBwSWRzLmxlbmd0aCA+IDApIHtcblx0XHRsb2dnZXIud2Fybihcblx0XHRcdFwiTm90IHBhc3NpbmcgdGhlIGZvbGxvd2luZyBsaXN0IG9mIGFwcGxpY2F0aW9ucyBhcyB0aGV5IHdpbGwgbm90IGJlIGFibGUgdG8gcnVuIG9uIHRoaXMgbWFjaGluZSBkdWUgdG8gbWlzc2luZyBwZXJtaXNzaW9ucy4gQWx0ZXJuYXRpdmVseSB0aGlzIGxvZ2ljIGNvdWxkIGJlIG1vdmVkIHRvIHRoZSBsYXVuY2ggZnVuY3Rpb24gd2hlcmUgYSBzZWxlY3Rpb24gaXMgbm90IGxhdW5jaGVkIGJ1dCB0aGUgdXNlciBpcyBwcmVzZW50ZWQgd2l0aCBhIG1vZGFsIHNheWluZyB0aGV5IGNhbid0IGxhdW5jaCBpdCBkdWUgdG8gcGVybWlzc2lvbnNcIixcblx0XHRcdHJlamVjdGVkQXBwSWRzXG5cdFx0KTtcblx0fVxuXG5cdHJldHVybiB2YWxpZGF0ZWRBcHBzO1xufVxuXG4vKipcbiAqIEdldCBhIGxpc3Qgb2YgYXBwbGljYXRpb24gdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIHRhZ3MuXG4gKiBAcGFyYW0gdGFncyBUaGUgdGFncyB0byBtYXRjaC5cbiAqIEBwYXJhbSBtdXN0TWF0Y2hBbGwgVGhlIGFwcGxpY2F0aW9uIG11c3QgaGF2ZSBhbGwgdGhlIHRhZ3MsXG4gKiBAcGFyYW0gYXBwRmlsdGVyIEFkZGl0aW9uYWwgZmlsdGVycyB0byBhcHBseSB0byB0aGUgbGlzdCBvZiBhcHBsaWNhdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBhcHBsaWNhdGlvbiB0aGF0IG1hdGNoIHRoZSBzcGVjaWZpZWQgdGFncy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEFwcHNCeVRhZyhcblx0dGFnczogc3RyaW5nW10sXG5cdG11c3RNYXRjaEFsbCA9IGZhbHNlLFxuXHRhcHBGaWx0ZXI/OiBBcHBGaWx0ZXJPcHRpb25zXG4pOiBQcm9taXNlPFBsYXRmb3JtQXBwW10+IHtcblx0Y29uc3QgYXBwcyA9IGF3YWl0IGdldEFwcHMoYXBwRmlsdGVyKTtcblxuXHRyZXR1cm4gYXBwcy5maWx0ZXIoKHZhbHVlKSA9PiB7XG5cdFx0aWYgKGlzRW1wdHkodmFsdWUudGFncykpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0bGV0IG1hdGNoRm91bmQgPSBmYWxzZTtcblx0XHRmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKSB7XG5cdFx0XHRpZiAodmFsdWUudGFncy5pbmNsdWRlcyh0YWcpKSB7XG5cdFx0XHRcdGlmIChtdXN0TWF0Y2hBbGwpIHtcblx0XHRcdFx0XHRtYXRjaEZvdW5kID0gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChtdXN0TWF0Y2hBbGwpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gbWF0Y2hGb3VuZDtcblx0fSk7XG59XG5cbi8qKlxuICogVGhlIHRoZSBhcHAgYnkgaXRzIGlkLlxuICogQHBhcmFtIGFwcElkIFRoZSBpZCBvZiB0aGUgcmVxdWVzdGVkIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBhcHAgaWYgaXQgd2FzIGZvdW5kLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXBwKGFwcElkOiBzdHJpbmcpOiBQcm9taXNlPFBsYXRmb3JtQXBwIHwgdW5kZWZpbmVkPiB7XG5cdGlmICghYXBwSWQpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Y29uc3QgYXBwcyA9IGF3YWl0IGdldEFwcHMoKTtcblx0bGV0IGFwcCA9IGFwcHMuZmluZCgoZW50cnkpID0+IGVudHJ5LmFwcElkID09PSBhcHBJZCk7XG5cblx0aWYgKGlzRW1wdHkoYXBwKSkge1xuXHRcdGFwcCA9IGFwcHMuZmluZCgoZW50cnkpID0+IGVudHJ5Lm5hbWUgPT09IGFwcElkKTtcblx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdGBBcHAgbm90IGZvdW5kIHdoZW4gdXNpbmcgbG9va3VwIGlkOiAke2FwcElkfSBhZ2FpbnN0IGFwcElkLiBGZWxsIGJhY2sgdG8gbmFtZSB0byBzZWUgaWYgaXQgaXMgYSByZWZlcmVuY2UgYWdhaW5zdCBuYW1lLiBBcHAgZm91bmQ6ICR7IWlzRW1wdHkoXG5cdFx0XHRcdGFwcFxuXHRcdFx0KX1gXG5cdFx0KTtcblx0fVxuXG5cdHJldHVybiBhcHA7XG59XG5cbi8qKlxuICogR2V0IHRoZSBhcHBsaWNhdGlvbiB0aGF0IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBpbnRlbnQuXG4gKiBAcGFyYW0gaW50ZW50IFRoZSBpbnRlbnQgdGhlIGFwcGxpY2F0aW9uIG11c3Qgc3VwcG9ydC5cbiAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGFwcGxpY2F0aW9uIHRoYXQgc3VwcG9ydCB0aGUgaW50ZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXBwc0J5SW50ZW50KGludGVudDogc3RyaW5nKTogUHJvbWlzZTxQbGF0Zm9ybUFwcFtdPiB7XG5cdGNvbnN0IGFwcHMgPSBhd2FpdCBnZXRBcHBzKCk7XG5cdHJldHVybiBhcHBzLmZpbHRlcigoYXBwKSA9PiB7XG5cdFx0Y29uc3QgbGlzdGVuc0ZvciA9IGFwcC5pbnRlcm9wPy5pbnRlbnRzPy5saXN0ZW5zRm9yO1xuXG5cdFx0aWYgKGlzRW1wdHkobGlzdGVuc0ZvcikpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgaW50ZW50TmFtZXMgPSBPYmplY3Qua2V5cyhsaXN0ZW5zRm9yKTtcblx0XHRmb3IgKGNvbnN0IGludGVudE5hbWUgb2YgaW50ZW50TmFtZXMpIHtcblx0XHRcdGlmIChpbnRlbnROYW1lLnRvTG93ZXJDYXNlKCkgPT09IGludGVudC50b0xvd2VyQ2FzZSgpKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0pO1xufVxuXG4vKipcbiAqIEdldCBhbiBpbnRlbnQgYW5kIHRoZSBhcHBzIHRoYXQgc3VwcG9ydCBpdC5cbiAqIEBwYXJhbSBpbnRlbnQgVGhlIGludGVudCB0byBsb29rIGZvci5cbiAqIEBwYXJhbSBjb250ZXh0VHlwZSBPcHRpb25hbCBjb250ZXh0IHR5cGUgdG8gbG9vayBmb3IuXG4gKiBAcGFyYW0gcmVzdWx0VHlwZSBPcHRpb25hbCByZXN1bHQgdHlwZSB0byBsb29rIGZvci5cbiAqIEByZXR1cm5zIFRoZSBpbnRlbnQgYW5kIGl0cyBzdXBwb3J0aW5nIGFwcHMgaWYgZm91bmQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRJbnRlbnQoXG5cdGludGVudDogc3RyaW5nLFxuXHRjb250ZXh0VHlwZT86IHN0cmluZyxcblx0cmVzdWx0VHlwZT86IHN0cmluZ1xuKTogUHJvbWlzZTxBcHBzRm9ySW50ZW50IHwgdW5kZWZpbmVkPiB7XG5cdGNvbnN0IGFwcHMgPSBhd2FpdCBnZXRBcHBzKCk7XG5cblx0aWYgKGFwcHMubGVuZ3RoID09PSAwKSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJUaGVyZSB3YXMgbm8gYXBwcyByZXR1cm5lZCBzbyB3ZSBhcmUgdW5hYmxlIHRvIGZpbmQgYXBwcyB0aGF0IHN1cHBvcnQgYW4gaW50ZW50XCIpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IGludGVudHNNYXA6IHsgW2tleTogc3RyaW5nXTogQXBwc0ZvckludGVudCB9ID0ge307XG5cblx0Zm9yIChjb25zdCBhcHAgb2YgYXBwcykge1xuXHRcdGlmIChhcHAuaW50ZXJvcD8uaW50ZW50cz8ubGlzdGVuc0Zvcikge1xuXHRcdFx0Y29uc3Qgc3VwcG9ydGVkSW50ZW50cyA9IE9iamVjdC5rZXlzKGFwcC5pbnRlcm9wLmludGVudHMubGlzdGVuc0Zvcik7XG5cdFx0XHRmb3IgKGNvbnN0IHN1cHBvcnRlZEludGVudCBvZiBzdXBwb3J0ZWRJbnRlbnRzKSB7XG5cdFx0XHRcdGNvbnN0IGFwcEludGVudCA9IGFwcC5pbnRlcm9wLmludGVudHMubGlzdGVuc0ZvcltzdXBwb3J0ZWRJbnRlbnRdO1xuXHRcdFx0XHRjb25zdCBpbmNsdWRlID0gYXBwSW50ZW50Q29udGFpbnMoYXBwSW50ZW50LCBjb250ZXh0VHlwZSwgcmVzdWx0VHlwZSk7XG5cdFx0XHRcdGlmIChpbmNsdWRlKSB7XG5cdFx0XHRcdFx0dXBkYXRlQXBwSW50ZW50c01hcChpbnRlbnRzTWFwLCBzdXBwb3J0ZWRJbnRlbnQsIGFwcEludGVudC5kaXNwbGF5TmFtZSwgYXBwKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IHJlc3VsdHMgPSBPYmplY3QudmFsdWVzKGludGVudHNNYXApO1xuXHRpZiAocmVzdWx0cy5sZW5ndGggPT09IDApIHtcblx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdGBObyByZXN1bHRzIGZvdW5kIGZvciBmaW5kSW50ZW50IGZvciBpbnRlbnQgJHtpbnRlbnR9IGFuZCBjb250ZXh0ICR7Y29udGV4dFR5cGV9IGFuZCByZXN1bHRUeXBlICR7cmVzdWx0VHlwZX1gXG5cdFx0KTtcblx0XHRyZXR1cm47XG5cdH0gZWxzZSBpZiAocmVzdWx0cy5sZW5ndGggPT09IDEpIHtcblx0XHRyZXR1cm4gcmVzdWx0c1swXTtcblx0fVxuXG5cdGxvZ2dlci53YXJuKFxuXHRcdGBSZWNlaXZlZCBtb3JlIHRoYW4gb25lIHJlc3VsdCBmb3IgZmluZEludGVudCBmb3IgaW50ZW50ICR7aW50ZW50fSBhbmQgY29udGV4dCAke2NvbnRleHRUeXBlfSBhbmQgcmVzdWx0VHlwZSAke3Jlc3VsdFR5cGV9LiBSZXR1cm5pbmcgdGhlIGZpcnN0IGVudHJ5LmBcblx0KTtcblx0cmV0dXJuIHJlc3VsdHNbMF07XG59XG5cbi8qKlxuICogR2V0IHRoZSBhcHBzIHRoYXQgc3VwcG9ydCBpbnRlbnRzIGJ5IHRoZSBjb250ZXh0IHR5cGUuXG4gKiBAcGFyYW0gY29udGV4dFR5cGUgVGhlIGNvbnRleHQgdHlwZSB0aGUgYXBwIG11c3Qgc3VwcG9ydC5cbiAqIEBwYXJhbSByZXN1bHRUeXBlIFRoZSBvcHRpb25hbCByZXN1bHQgdHlwZSB0byBtYXRjaCBhcyB3ZWxsLlxuICogQHJldHVybnMgVGhlIGFwcHMgZm9yIHRoZSBzcGVjaWZpZWQgaW50ZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0SW50ZW50c0J5Q29udGV4dChcblx0Y29udGV4dFR5cGU6IHN0cmluZyxcblx0cmVzdWx0VHlwZT86IHN0cmluZ1xuKTogUHJvbWlzZTxBcHBzRm9ySW50ZW50W10+IHtcblx0Y29uc3QgYXBwcyA9IGF3YWl0IGdldEFwcHMoKTtcblxuXHRpZiAoYXBwcy5sZW5ndGggPT09IDApIHtcblx0XHRsb2dnZXIud2FybihcIlVuYWJsZSB0byBnZXQgYXBwcyBzbyB3ZSBjYW4gbm90IGdldCBhcHBzIGFuZCBpbnRlbnRzIHRoYXQgc3VwcG9ydCBhIHBhcnRpY3VsYXIgY29udGV4dFwiKTtcblx0XHRyZXR1cm4gW107XG5cdH1cblxuXHRjb25zdCBpbnRlbnRzOiB7IFtrZXk6IHN0cmluZ106IEFwcHNGb3JJbnRlbnQgfSA9IHt9O1xuXG5cdGZvciAoY29uc3QgYXBwIG9mIGFwcHMpIHtcblx0XHRjb25zdCBsaXN0ZW5zRm9yID0gYXBwLmludGVyb3A/LmludGVudHM/Lmxpc3RlbnNGb3I7XG5cblx0XHRpZiAoIWlzRW1wdHkobGlzdGVuc0ZvcikpIHtcblx0XHRcdGNvbnN0IHN1cHBvcnRlZEludGVudHMgPSBPYmplY3Qua2V5cyhsaXN0ZW5zRm9yKTtcblx0XHRcdGZvciAoY29uc3Qgc3VwcG9ydGVkSW50ZW50IG9mIHN1cHBvcnRlZEludGVudHMpIHtcblx0XHRcdFx0Y29uc3QgYXBwSW50ZW50ID0gbGlzdGVuc0ZvcltzdXBwb3J0ZWRJbnRlbnRdO1xuXHRcdFx0XHRjb25zdCBpbmNsdWRlID0gYXBwSW50ZW50Q29udGFpbnMoYXBwSW50ZW50LCBjb250ZXh0VHlwZSwgcmVzdWx0VHlwZSk7XG5cdFx0XHRcdGlmIChpbmNsdWRlKSB7XG5cdFx0XHRcdFx0dXBkYXRlQXBwSW50ZW50c01hcChpbnRlbnRzLCBzdXBwb3J0ZWRJbnRlbnQsIGFwcEludGVudC5kaXNwbGF5TmFtZSwgYXBwKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBPYmplY3QudmFsdWVzKGludGVudHMpO1xufVxuXG4vKipcbiAqIENoZWNrIHRvIHNlZSBpZiB0aGUgc3VwcGxpZWQgYXBwSW50ZW50IHN1cHBvcnRzIHRoZSBjb250ZXh0IGFuZCByZXN1bHQgdHlwZXMuXG4gKiBAcGFyYW0gYXBwSW50ZW50IFRoZSBhcHAgaW50ZW50IHRvIGNoZWNrLlxuICogQHBhcmFtIGNvbnRleHRUeXBlIFRoZSBvcHRpb25hbCBjb250ZXh0IHR5cGUgdG8gbG9vayBmb3IuXG4gKiBAcGFyYW0gcmVzdWx0VHlwZSBUaGUgb3B0aW9uYWwgcmVzdWx0IHR5cGUgdG8gbG9vayBmb3IuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBhcHAgaW50ZW50IG1hdGNoZXMuXG4gKi9cbmZ1bmN0aW9uIGFwcEludGVudENvbnRhaW5zKFxuXHRhcHBJbnRlbnQ6IEFwcEludGVudHMsXG5cdGNvbnRleHRUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdHJlc3VsdFR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiB7XG5cdGlmICghaXNFbXB0eShjb250ZXh0VHlwZSkgJiYgIWlzRW1wdHkocmVzdWx0VHlwZSkpIHtcblx0XHRpZiAoIWFwcEludGVudD8uY29udGV4dHM/LmluY2x1ZGVzKGNvbnRleHRUeXBlKSB8fCAhYXBwSW50ZW50LnJlc3VsdFR5cGU/LmluY2x1ZGVzKHJlc3VsdFR5cGUpKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCFpc0VtcHR5KGNvbnRleHRUeXBlKSAmJiAhYXBwSW50ZW50Py5jb250ZXh0cz8uaW5jbHVkZXMoY29udGV4dFR5cGUpKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9IGVsc2UgaWYgKCFpc0VtcHR5KHJlc3VsdFR5cGUpICYmICFhcHBJbnRlbnQ/LnJlc3VsdFR5cGU/LmluY2x1ZGVzKHJlc3VsdFR5cGUpKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIERvIHdlIGhhdmUgdGhlIHBlcm1pc3Npb25zIHRvIGxhdW5jaCBleHRlcm5hbCBwcm9jZXNzZXMuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHdlIGhhdmUgcGVybWlzc2lvbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0Q2FuTGF1bmNoRXh0ZXJuYWxQcm9jZXNzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRsZXQgY2FuTGF1bmNoRXh0ZXJuYWxQcm9jZXNzID0gZmFsc2U7XG5cblx0dHJ5IHtcblx0XHRjb25zdCBjYW5MYXVuY2hFeHRlcm5hbFByb2Nlc3NSZXNwb25zZSA9IGF3YWl0IGZpbi5TeXN0ZW0ucXVlcnlQZXJtaXNzaW9uRm9yQ3VycmVudENvbnRleHQoXG5cdFx0XHRcIlN5c3RlbS5sYXVuY2hFeHRlcm5hbFByb2Nlc3NcIlxuXHRcdCk7XG5cblx0XHRjYW5MYXVuY2hFeHRlcm5hbFByb2Nlc3MgPSBjYW5MYXVuY2hFeHRlcm5hbFByb2Nlc3NSZXNwb25zZT8uZ3JhbnRlZDtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRsb2dnZXIuZXJyb3IoXCJFcnJvciB3aGlsZSBxdWVyeWluZyBmb3IgU3lzdGVtLmxhdW5jaEV4dGVybmFsUHJvY2VzcyBwZXJtaXNzaW9uXCIsIGVycm9yKTtcblx0fVxuXG5cdHJldHVybiBjYW5MYXVuY2hFeHRlcm5hbFByb2Nlc3M7XG59XG5cbi8qKlxuICogRG8gd2UgaGF2ZSB0aGUgcGVybWlzc2lvbnMgdG8gZG93bmxvYWQgYXBwIGFzc2V0cy5cbiAqIEByZXR1cm5zIFRydWUgaWYgd2UgaGF2ZSBwZXJtaXNzaW9uLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRDYW5Eb3dubG9hZEFwcEFzc2V0cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0bGV0IGNhbkRvd25sb2FkQXBwQXNzZXRzID0gZmFsc2U7XG5cblx0dHJ5IHtcblx0XHRjb25zdCBjYW5Eb3dubG9hZEFwcEFzc2V0c1Jlc3BvbnNlID1cblx0XHRcdGF3YWl0IGZpbi5TeXN0ZW0ucXVlcnlQZXJtaXNzaW9uRm9yQ3VycmVudENvbnRleHQoXCJTeXN0ZW0uZG93bmxvYWRBc3NldFwiKTtcblx0XHRjYW5Eb3dubG9hZEFwcEFzc2V0cyA9IGNhbkRvd25sb2FkQXBwQXNzZXRzUmVzcG9uc2U/LmdyYW50ZWQ7XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0bG9nZ2VyLmVycm9yKFwiRXJyb3Igd2hpbGUgcXVlcnlpbmcgZm9yIFN5c3RlbS5kb3dubG9hZEFzc2V0IHBlcm1pc3Npb25cIiwgZXJyb3IpO1xuXHR9XG5cblx0cmV0dXJuIGNhbkRvd25sb2FkQXBwQXNzZXRzO1xufVxuXG4vKipcbiAqIFVwZGF0ZSB0aGUgbWFwIGNvbnRhaW5pbmcgdGhlIGludGVudCB0byBhcHBzLlxuICogQHBhcmFtIGludGVudHNNYXAgVGhlIG1hcCB0byB1cGRhdGUuXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgaW50ZW50LlxuICogQHBhcmFtIGRpc3BsYXlOYW1lIFRoZSBPcHRpb25zIGRpc3BsYXkgbmFtZSB0byB1cGRhdGUgd2l0aC5cbiAqIEBwYXJhbSBhcHAgVGhlIGFwcGxpY2F0aW9uIHRvIHVwZGF0ZS5cbiAqL1xuZnVuY3Rpb24gdXBkYXRlQXBwSW50ZW50c01hcChcblx0aW50ZW50c01hcDoge1xuXHRcdFtrZXk6IHN0cmluZ106IEFwcHNGb3JJbnRlbnQ7XG5cdH0sXG5cdG5hbWU6IHN0cmluZyxcblx0ZGlzcGxheU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0YXBwOiBQbGF0Zm9ybUFwcFxuKTogdm9pZCB7XG5cdGlmIChpc0VtcHR5KGludGVudHNNYXBbbmFtZV0pKSB7XG5cdFx0Ly8gaW4gYSBwcm9kdWN0aW9uIGFwcCB5b3Ugd291bGQgZWl0aGVyIG5lZWQgdG8gZW5zdXJlIHRoYXQgZXZlcnkgYXBwIHdhcyBwb3B1bGF0ZWQgd2l0aCB0aGUgc2FtZSBuYW1lICYgZGlzcGxheU5hbWUgZm9yIGFuIGludGVudCBmcm9tIGEgZ29sZGVuIHNvdXJjZSAoZS5nLiBpbnRlbnRzIHRhYmxlKSBzbyBwaWNraW5nIHRoZSBmaXJzdCBlbnRyeSB3b3VsZG4ndCBtYWtlIGEgZGlmZmVyZW5jZS5cblx0XHQvLyBvciB5b3UgY291bGQgcHVsbCBpbiBhIGdvbGRlbiBzb3VyY2Ugb2YgaW50ZW50cyBmcm9tIGEgc2VydmljZSBhbmQgdGhlbiBkbyBhIGxvb2t1cCB1c2luZyB0aGUgaW50ZW50IG5hbWUgdG8gZ2V0IGFuIG9iamVjdCB3aXRoIGludGVudCBuYW1lIGFuZCBvZmZpY2lhbCBkaXNwbGF5IG5hbWUuXG5cdFx0aW50ZW50c01hcFtuYW1lXSA9IHtcblx0XHRcdGludGVudDoge1xuXHRcdFx0XHRuYW1lLFxuXHRcdFx0XHRkaXNwbGF5TmFtZVxuXHRcdFx0fSxcblx0XHRcdGFwcHM6IFtdXG5cdFx0fTtcblx0fVxuXHRpbnRlbnRzTWFwW25hbWVdLmFwcHMucHVzaChhcHApO1xufVxuIiwiaW1wb3J0ICogYXMgYXV0aFByb3ZpZGVyIGZyb20gXCIuL2F1dGhcIjtcbmltcG9ydCB7IGdldERlZmF1bHRIZWxwZXJzIH0gZnJvbSBcIi4vbW9kdWxlc1wiO1xuaW1wb3J0ICogYXMgcGxhdGZvcm1TcGxhc2hQcm92aWRlciBmcm9tIFwiLi9wbGF0Zm9ybS9wbGF0Zm9ybS1zcGxhc2hcIjtcbmltcG9ydCB7IGlzVmFsaWRIb3N0Rm9yTWFuaWZlc3QgfSBmcm9tIFwiLi9zZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgeyBBdXRoUHJvdmlkZXJPcHRpb25zLCBMb2dnZXIsIE1vZHVsZUhlbHBlcnMgfSBmcm9tIFwiLi9zaGFwZXNcIjtcblxubGV0IHBsYXRmb3JtSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbmxldCBsb2dnZXI6IExvZ2dlciB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBJbml0aWFsaXplIHRoZSBhdXRoZW50aWNhdGlvbiBmbG93LlxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIGF1dGggcHJvdmlkZXIuXG4gKiBAcGFyYW0gbmV4dCBUaGUgbmV4dCBtZXRob2QgdG8gY2FsbCBpbiB0aGUgYXV0aCBjaGFpbi5cbiAqIEBwYXJhbSBpbml0TG9nZ2VyIExvZ2dlciBmb3Igb3V0cHV0dGluZyBhbnkgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0gbGlzdGVuRm9yQXV0aENoYW5nZXMgTGlzdGVuIGZvciB0aGUgZXZlbnRzIGZyb20gdGhlIGF1dGggcHJvdmlkZXIuXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBuZXh0IG1ldGhvZCBjYWxsLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdChcblx0b3B0aW9uczogQXV0aFByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCxcblx0bmV4dDogKCkgPT4gUHJvbWlzZTxib29sZWFuPixcblx0aW5pdExvZ2dlcjogTG9nZ2VyLFxuXHRsaXN0ZW5Gb3JBdXRoQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0bG9nZ2VyID0gaW5pdExvZ2dlcjtcblxuXHRpZiAoIShhd2FpdCBpc1ZhbGlkSG9zdEZvck1hbmlmZXN0KCkpKSB7XG5cdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XCJUaGUgYXBwbGljYXRpb24gY2Fubm90IHN0YXJ0dXAgYXMgdGhlIHNvdXJjZSBvZiB0aGUgc2V0dGluZyB1c2VkIHRvIGJvb3RzdHJhcCB0aGlzIGFwcGxpY2F0aW9uIGlzIG5vdCBmcm9tIGEgdmFsaWQgaG9zdC4gUGxlYXNlIHVwZGF0ZSB0aGUgdGhlIGxpc3Qgb3IgdGhpcyBsb2dpYyBpZiByZXF1aXJlZFwiXG5cdFx0KTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRsb2dnZXIuaW5mbyhcIkluaXRpYWxpemluZyBBdXRoIENoZWNrXCIpO1xuXHRjb25zdCBtb2R1bGVIZWxwZXJzOiBNb2R1bGVIZWxwZXJzID0gZ2V0RGVmYXVsdEhlbHBlcnMoKTtcblx0YXdhaXQgYXV0aFByb3ZpZGVyLmluaXQob3B0aW9ucywgbW9kdWxlSGVscGVycyk7XG5cblx0aWYgKGF1dGhQcm92aWRlci5pc0F1dGhlbnRpY2F0aW9uRW5hYmxlZCgpKSB7XG5cdFx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci51cGRhdGVQcm9ncmVzcyhcIkF1dGhlbnRpY2F0aW9uXCIpO1xuXG5cdFx0Y29uc3QgYXV0aGVudGljYXRpb25SZXF1aXJlZCA9IGF3YWl0IGF1dGhQcm92aWRlci5pc0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQoKTtcblx0XHRpZiAobGlzdGVuRm9yQXV0aENoYW5nZXMpIHtcblx0XHRcdC8vIGNoZWNrIGZvciBzZXNzaW9uIGV4cGlyeVxuXHRcdFx0YXV0aFByb3ZpZGVyLnN1YnNjcmliZShcInNlc3Npb24tZXhwaXJlZFwiLCBtYW5hZ2VBdXRoRmxvdyk7XG5cblx0XHRcdC8vIGNoZWNrIGZvciBsb2dvdXRcblx0XHRcdGF1dGhQcm92aWRlci5zdWJzY3JpYmUoXCJsb2dnZWQtb3V0XCIsIG9uTG9nT3V0T3JDYW5jZWwpO1xuXHRcdH1cblx0XHRpZiAoYXV0aGVudGljYXRpb25SZXF1aXJlZCkge1xuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0Y29uc3QgbG9nZ2VkSW5TdWJzY3JpcHRpb24gPSBhdXRoUHJvdmlkZXIuc3Vic2NyaWJlKFwibG9nZ2VkLWluXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHRpbml0TG9nZ2VyLmluZm8oXCJQbGF0Zm9ybSBsb2dnZWQgaW4uIFNldHRpbmcgdXAgcGxhdGZvcm1cIik7XG5cdFx0XHRcdFx0cGxhdGZvcm1Jbml0aWFsaXplZCA9IGF3YWl0IG5leHQoKTtcblx0XHRcdFx0XHRpbml0TG9nZ2VyLmluZm8oXCJVbnN1YnNjcmliaW5nIGZyb20gbG9nZ2VkIGluIGV2ZW50cyBhcyBwbGF0Zm9ybSBoYXMgYmVlbiBpbml0aWFsaXplZFwiKTtcblx0XHRcdFx0XHRpZiAobG9nZ2VkSW5TdWJzY3JpcHRpb24pIHtcblx0XHRcdFx0XHRcdGF1dGhQcm92aWRlci51bnN1YnNjcmliZShsb2dnZWRJblN1YnNjcmlwdGlvbik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJlc29sdmUocGxhdGZvcm1Jbml0aWFsaXplZCk7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdG1hbmFnZUF1dGhGbG93KClcblx0XHRcdFx0XHQudGhlbigoXykgPT4ge1xuXHRcdFx0XHRcdFx0aW5pdExvZ2dlci5pbmZvKFwiTWFuYWdlIEF1dGggRmxvdyBleGVjdXRlZC5cIik7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaCgocmVhc29uKSA9PiB7XG5cdFx0XHRcdFx0XHRyZWplY3QocmVhc29uKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbmV4dCgpO1xufVxuXG4vKipcbiAqIFByb2Nlc3MgdGhlIGF1dGhlbnRpY2F0aW9uIGZsb3cgYmVpbmcgY2FuY2VsbGVkIG9yIGxvZ2dlZCBvdXQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG9uTG9nT3V0T3JDYW5jZWwoKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChwbGF0Zm9ybUluaXRpYWxpemVkKSB7XG5cdFx0bG9nZ2VyPy5pbmZvKFwiQ2FsbGluZyBxdWl0IG9uIHBsYXRmb3JtXCIpO1xuXHRcdGNvbnN0IHBsYXQgPSBmaW4uUGxhdGZvcm0uZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRhd2FpdCBwbGF0LnF1aXQoKTtcblx0fSBlbHNlIHtcblx0XHRsb2dnZXI/LmluZm8oXCJQbGF0Zm9ybSBub3QgeWV0IGluaXRpYWxpemVkLiBDbG9zaW5nIHByb3ZpZGVyIHdpbmRvd1wiKTtcblx0XHRjb25zdCBwbGF0Zm9ybVdpbmRvdyA9IGZpbi5XaW5kb3cud3JhcFN5bmMoZmluLm1lLmlkZW50aXR5KTtcblx0XHRhd2FpdCBwbGF0Zm9ybVdpbmRvdy5jbG9zZSh0cnVlKTtcblx0fVxufVxuLyoqXG4gKiBMb2dpbiB0aGUgdXNlciBhbmQgaGFuZGxlIHJlc3VsdHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG1hbmFnZUF1dGhGbG93KCk6IFByb21pc2U8dm9pZD4ge1xuXHRsb2dnZXI/LmluZm8oXCJBdXRoZW50aWNhdGlvbiByZXF1aXJlZC4gUmVxdWVzdGluZyBsb2dpblwiKTtcblx0Y29uc3QgdXNlckxvZ2dlZEluID0gYXdhaXQgYXV0aFByb3ZpZGVyLmxvZ2luKCk7XG5cdGlmICh1c2VyTG9nZ2VkSW4pIHtcblx0XHRsb2dnZXI/LmluZm8oXCJMb2dnZWQgaW5cIik7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gdXNlciBjYW5jZWxsZWQgdGhlIGxvZ2luIHByb2Nlc3MuXG5cdFx0Ly8gb3IgZXhjZWVkZWQgdHJpZXMuXG5cdFx0Ly8gc3RvcCB0aGUgcGxhdGZvcm0gZnJvbSBzdGFydGluZy5cblx0XHRsb2dnZXI/Lndhcm4oXG5cdFx0XHRcIlVzZXIgcHJvY2VzcyB3YXMgY2FuY2VsbGVkLiBBdCB0aGlzIHBvaW50IHlvdSBzaG91bGQgY2xvc2UgdGhlIGFwcGxpY2F0aW9uIHNvIHRoYXQgdGhlIHVzZXIgY2FuIHJlbGF1bmNoIGFuZCB0cnkgYWdhaW4uIFdlIGFyZSBjbG9zaW5nIHRoZSBwbGF0Zm9ybVwiXG5cdFx0KTtcblx0XHRhd2FpdCBvbkxvZ091dE9yQ2FuY2VsKCk7XG5cdH1cbn1cbiIsImltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZU1vZHVsZSwgbG9hZE1vZHVsZXMgfSBmcm9tIFwiLi9tb2R1bGVzXCI7XG5pbXBvcnQgdHlwZSB7IE1vZHVsZUhlbHBlcnMgfSBmcm9tIFwiLi9zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgQXV0aFByb3ZpZGVyLCBBdXRoUHJvdmlkZXJPcHRpb25zIH0gZnJvbSBcIi4vc2hhcGVzL2F1dGgtc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiQXV0aFwiKTtcblxubGV0IGF1dGhPcHRpb25zOiBBdXRoUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xubGV0IGF1dGhQcm92aWRlcjogQXV0aFByb3ZpZGVyO1xubGV0IGlzSW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbmxldCBhdXRoRW5hYmxlZCA9IGZhbHNlO1xuXG4vKipcbiAqIEluaXRpYWxpemUgdGhlIGF1dGhlbnRpY2F0aW9uIHByb3ZpZGVyLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSBhdXRoZW50aWNhdGlvbiBwcm92aWRlci5cbiAqIEBwYXJhbSBoZWxwZXJzIE1vZHVsZSBoZWxwZXJzIHRvIHBhc3MgdG8gYW55IGxvYWRlZCBtb2R1bGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdChvcHRpb25zOiBBdXRoUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkLCBoZWxwZXJzOiBNb2R1bGVIZWxwZXJzKTogUHJvbWlzZTx2b2lkPiB7XG5cdGF1dGhPcHRpb25zID0gb3B0aW9ucztcblx0aWYgKGlzRW1wdHkoYXV0aE9wdGlvbnMpKSB7XG5cdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcIlVuYWJsZSB0byBpbml0aWFsaXplIGF1dGhlbnRpY2F0aW9uIHdpdGhvdXQgc2V0dGluZ3MuIElmIHRoaXMgcGxhdGZvcm0gcmVxdWlyZXMgYXV0aCBwbGVhc2UgZW5zdXJlIHlvdSBoYXZlIHNldCB0aGUgYXV0aFByb3ZpZGVyIHNldHRpbmdzXCJcblx0XHQpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGlmICghaXNJbml0aWFsaXplZCkge1xuXHRcdGlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG5cdFx0Y29uc3QgYXV0aE1vZHVsZXMgPSBhd2FpdCBsb2FkTW9kdWxlczxBdXRoUHJvdmlkZXI+KGF1dGhPcHRpb25zLCBcImF1dGhcIik7XG5cdFx0aWYgKGF1dGhNb2R1bGVzLmxlbmd0aCA+IDApIHtcblx0XHRcdGlmIChhdXRoTW9kdWxlcy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFwiWW91IGhhdmUgbW9yZSB0aGFuIG9uZSBhdXRoIG1vZHVsZSBlbmFibGVkLCBvbmx5IHRoZSBmaXJzdCB3aWxsIGJlIHVzZWRcIik7XG5cdFx0XHR9XG5cblx0XHRcdGF3YWl0IGluaXRpYWxpemVNb2R1bGU8QXV0aFByb3ZpZGVyPihhdXRoTW9kdWxlc1swXSwgaGVscGVycyk7XG5cdFx0XHRhdXRoUHJvdmlkZXIgPSBhdXRoTW9kdWxlc1swXS5pbXBsZW1lbnRhdGlvbjtcblx0XHRcdGF1dGhFbmFibGVkID0gdHJ1ZTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJUaGUgYXV0aCBwcm92aWRlciBoYXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkXCIpO1xuXHR9XG59XG5cbi8qKlxuICogSXMgdGhlIGF1dGhlbnRpY2F0aW9uIGVuYWJsZWQuXG4gKiBAcmV0dXJucyBUcnVlIGlmIGF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0F1dGhlbnRpY2F0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcblx0cmV0dXJuIGF1dGhFbmFibGVkO1xufVxuXG4vKipcbiAqIFN1YnNjcmliZSB0byB0aGUgYXV0aGVudGljYXRpb24gZXZlbnRzLlxuICogQHBhcmFtIHRvIFRoZSBldmVudCB0byBzdWJzY3JpYmUgdG8uXG4gKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgZXZlbnQgb2NjdXJzLlxuICogQHJldHVybnMgQSBzdWJzY3JpcHRpb24gaWQgdG8gdW5zdWJzY3JpYmUgd2l0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3Vic2NyaWJlKFxuXHR0bzogXCJsb2dnZWQtaW5cIiB8IFwiYmVmb3JlLWxvZ2dlZC1vdXRcIiB8IFwibG9nZ2VkLW91dFwiIHwgXCJzZXNzaW9uLWV4cGlyZWRcIixcblx0Y2FsbGJhY2s6IChwYXlsb2FkPzogdW5rbm93bikgPT4gUHJvbWlzZTx2b2lkPlxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKGlzRW1wdHkoYXV0aFByb3ZpZGVyKSkge1xuXHRcdGxvZ2dlci53YXJuKFwiUGxlYXNlIGluaXRpYWxpemUgYXV0aCBiZWZvcmUgdHJ5aW5nIHRvIHVzZSBzdWJzY3JpYmVcIik7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gSWYgdGhlIHN1YnNjcmlwdGlvbiBpcyBmb3IgbG9nZ2VkLWluIGV2ZW50IHRoZW4gd2Ugd3JhcCB0aGUgY2FsbGJhY2tcblx0Ly8gc28gdGhhdCB3ZSBjYW4gb3B0aW9uYWxseSBwYXNzIHRoZSB1c2VyIGluZm8gYmFjayB0byBzdWJzY3JpYmVyc1xuXHRsZXQgd3JhcHBlZENhbGxiYWNrOiAoKCkgPT4gUHJvbWlzZTx2b2lkPikgfCB1bmRlZmluZWQ7XG5cdGlmICh0byA9PT0gXCJsb2dnZWQtaW5cIikge1xuXHRcdHdyYXBwZWRDYWxsYmFjayA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRcdHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRhd2FpdCBjYWxsYmFjayhhdXRoT3B0aW9ucz8uaW5jbHVkZUxvZ2dlZEluVXNlckluZm8gPz8gdHJ1ZSA/IGF3YWl0IGdldFVzZXJJbmZvKCkgOiB1bmRlZmluZWQpO1xuXHRcdFx0fSwgMCk7XG5cdFx0fTtcblx0fVxuXG5cdGNvbnN0IHN1YnNjcmlwdGlvbklkID0gYXV0aFByb3ZpZGVyLnN1YnNjcmliZSh0bywgd3JhcHBlZENhbGxiYWNrID8/IGNhbGxiYWNrKTtcblxuXHQvLyBJZiB3ZSBhcmUgYWxyZWFkeSBsb2dnZWQgaW4gdGhlbiBjYWxsIHRoZSBtZXRob2QgaW1tZWRpYXRlbHkgb24gdGhlIG5leHQgcmVmcmVzaCBjeWNsZVxuXHRpZiAodG8gPT09IFwibG9nZ2VkLWluXCIpIHtcblx0XHRzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcblx0XHRcdGlmICh3cmFwcGVkQ2FsbGJhY2sgJiYgIShhd2FpdCBpc0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQoKSkpIHtcblx0XHRcdFx0YXdhaXQgd3JhcHBlZENhbGxiYWNrKCk7XG5cdFx0XHR9XG5cdFx0fSwgMCk7XG5cdH1cblxuXHRyZXR1cm4gc3Vic2NyaXB0aW9uSWQ7XG59XG5cbi8qKlxuICogVW5zdWJzY3JpYmUgdGhlIHN1cHBsaWVkIHN1YnNjcmlwdGlvbiBpZC5cbiAqIEBwYXJhbSBzdWJzY3JpcHRpb25JZCBTdWJzY3JpcHRpb24gaWQuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB1bnN1YnNjcmliZSB3YXMgc3VjY2Vzc2Z1bC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuc3Vic2NyaWJlKHN1YnNjcmlwdGlvbklkOiBzdHJpbmcpOiBib29sZWFuIHtcblx0aWYgKGlzRW1wdHkoYXV0aFByb3ZpZGVyKSkge1xuXHRcdGxvZ2dlci53YXJuKFwiUGxlYXNlIGluaXRpYWxpemUgYXV0aCBiZWZvcmUgdHJ5aW5nIHRvIHVzZSB1bnN1YnNjcmliZVwiKTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuIGF1dGhQcm92aWRlci51bnN1YnNjcmliZShzdWJzY3JpcHRpb25JZCk7XG59XG5cbi8qKlxuICogU3RhcnQgdGhlIGxvZ2luIHdvcmtmbG93IGZvciBhdXRoZW50aWNhdGlvbi5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGxvZ2luIHdhcyBzdWNjZXNzZnVsLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9naW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGlmIChpc0VtcHR5KGF1dGhQcm92aWRlcikpIHtcblx0XHRsb2dnZXIud2FybihcIlBsZWFzZSBpbml0aWFsaXplIGF1dGggYmVmb3JlIHRyeWluZyB0byB1c2UgbG9naW5cIik7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGxvZ2dlci5pbmZvKFwiTG9nIGluIHJlcXVlc3RlZFwiKTtcblx0cmV0dXJuIGF1dGhQcm92aWRlci5sb2dpbigpO1xufVxuXG4vKipcbiAqIFN0YXJ0IHRoZSBsb2dvdXQgd29ya2Zsb3cuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBsb2dvdXQgd2FzIHN1Y2Nlc3NmdWwuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2dvdXQoKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGlmIChpc0VtcHR5KGF1dGhQcm92aWRlcikpIHtcblx0XHRsb2dnZXIud2FybihcIlBsZWFzZSBpbml0aWFsaXplIGF1dGggYmVmb3JlIHRyeWluZyB0byB1c2UgbG9nb3V0XCIpO1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRsb2dnZXIuaW5mbyhcIkxvZyBvdXQgcmVxdWVzdGVkXCIpO1xuXHRyZXR1cm4gYXV0aFByb3ZpZGVyLmxvZ291dCgpO1xufVxuXG4vKipcbiAqIERvZXMgdGhlIHBsYXRmb3JtIHJlcXVpcmUgYXV0aGVudGljYXRpb24uXG4gKiBAcmV0dXJucyBUcnVlIGlmIGF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNBdXRoZW50aWNhdGlvblJlcXVpcmVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRpZiAoaXNFbXB0eShhdXRoUHJvdmlkZXIpKSB7XG5cdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcIkF1dGggbWF5IG5vdCBiZSByZXF1aXJlZCBmb3IgdGhpcyBhcHAuIElmIGl0IGlzIHBsZWFzZSBpbml0aWFsaXplIGF1dGggYmVmb3JlIHRyeWluZyB0byB1c2UgaXNBdXRoZW50aWNhdGlvblJlcXVpcmVkXCJcblx0XHQpO1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRsb2dnZXIuaW5mbyhcImlzQXV0aGVudGljYXRpb25SZXF1aXJlZCByZXF1ZXN0ZWRcIik7XG5cdHJldHVybiBhdXRoUHJvdmlkZXIuaXNBdXRoZW50aWNhdGlvblJlcXVpcmVkKCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSB1c2VyIGluZm9ybWF0aW9uIGZvciB0aGUgbG9nZ2VkIGluIHVzZXIuXG4gKiBAcmV0dXJucyBUaGUgdXNlciBpbmZvLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VXNlckluZm8oKTogUHJvbWlzZTx1bmtub3duPiB7XG5cdGlmIChpc0VtcHR5KGF1dGhQcm92aWRlcikpIHtcblx0XHRsb2dnZXIud2FybihcIlBsZWFzZSBpbml0aWFsaXplIGF1dGggYmVmb3JlIHRyeWluZyB0byB1c2UgZ2V0VXNlckluZm9cIik7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblx0bG9nZ2VyLmluZm8oXCJnZXRVc2VySW5mbyByZXF1ZXN0ZWRcIik7XG5cdHJldHVybiBhdXRoUHJvdmlkZXIuZ2V0VXNlckluZm8oKTtcbn1cbiIsImltcG9ydCB0eXBlIHsgSG9tZVJlZ2lzdHJhdGlvbiwgUmVnaXN0cmF0aW9uTWV0YUluZm8gfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlXCI7XG5pbXBvcnQgeyBnZXRDdXJyZW50U3luYyB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCAqIGFzIGFuYWx5dGljc1Byb3ZpZGVyIGZyb20gXCIuL2FuYWx5dGljc1wiO1xuaW1wb3J0IHsgZ2V0QXBwcyB9IGZyb20gXCIuL2FwcHNcIjtcbmltcG9ydCAqIGFzIGF1dGhQcm92aWRlciBmcm9tIFwiLi9hdXRoXCI7XG5pbXBvcnQgeyBpc0F1dGhlbnRpY2F0aW9uRW5hYmxlZCB9IGZyb20gXCIuL2F1dGhcIjtcbmltcG9ydCB7IHJlZ2lzdGVyQWN0aW9uIH0gZnJvbSBcIi4vY29ubmVjdGlvbnNcIjtcbmltcG9ydCB7IGluaXQgYXMgcmVnaXN0ZXJJbml0T3B0aW9uc0xpc3RlbmVyIH0gZnJvbSBcIi4vaW5pdC1vcHRpb25zXCI7XG5pbXBvcnQgeyBjbG9zZWRvd24gYXMgZGVyZWdpc3RlckludGVncmF0aW9uLCBpbml0IGFzIHJlZ2lzdGVySW50ZWdyYXRpb24gfSBmcm9tIFwiLi9pbnRlZ3JhdGlvbnNcIjtcbmltcG9ydCB7IGxhdW5jaCB9IGZyb20gXCIuL2xhdW5jaFwiO1xuaW1wb3J0IHsgZmlyZUxpZmVjeWNsZUV2ZW50IH0gZnJvbSBcIi4vbGlmZWN5Y2xlXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiLi9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB7IGdldERlZmF1bHRIZWxwZXJzIH0gZnJvbSBcIi4vbW9kdWxlc1wiO1xuaW1wb3J0ICogYXMgcGxhdGZvcm1TcGxhc2hQcm92aWRlciBmcm9tIFwiLi9wbGF0Zm9ybS9wbGF0Zm9ybS1zcGxhc2hcIjtcbmltcG9ydCB7IGdldFNldHRpbmdzIH0gZnJvbSBcIi4vc2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIHsgUGxhdGZvcm1BbmFseXRpY3NFdmVudCB9IGZyb20gXCIuL3NoYXBlcy9hbmFseXRpY3Mtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IEJvb3RzdHJhcENvbXBvbmVudHMsIEJvb3RzdHJhcE9wdGlvbnMgfSBmcm9tIFwiLi9zaGFwZXMvYm9vdHN0cmFwLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBMb2dnZWRJbkxpZmVjeWNsZVBheWxvYWQgfSBmcm9tIFwiLi9zaGFwZXMvbGlmZWN5Y2xlLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVIZWxwZXJzIH0gZnJvbSBcIi4vc2hhcGVzL21vZHVsZS1zaGFwZXNcIjtcbmltcG9ydCAqIGFzIHRyYXlQcm92aWRlciBmcm9tIFwiLi90cmF5XCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHZlcnNpb25Qcm92aWRlciBmcm9tIFwiLi92ZXJzaW9uXCI7XG5pbXBvcnQgKiBhcyBkb2NrQ29tcG9uZW50IGZyb20gXCIuL3dvcmtzcGFjZS9kb2NrXCI7XG5pbXBvcnQgKiBhcyBob21lQ29tcG9uZW50IGZyb20gXCIuL3dvcmtzcGFjZS9ob21lXCI7XG5pbXBvcnQgKiBhcyBsb3dDb2RlSW50ZWdyYXRpb25Qcm92aWRlciBmcm9tIFwiLi93b3Jrc3BhY2UvbG93LWNvZGUtaW50ZWdyYXRpb25zXCI7XG5pbXBvcnQgKiBhcyBub3RpZmljYXRpb25zQ29tcG9uZW50IGZyb20gXCIuL3dvcmtzcGFjZS9ub3RpZmljYXRpb25zXCI7XG5pbXBvcnQgKiBhcyBzdG9yZUNvbXBvbmVudCBmcm9tIFwiLi93b3Jrc3BhY2Uvc3RvcmVcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiQm9vdHN0cmFwcGVyXCIpO1xuXG5sZXQgYm9vdHN0cmFwT3B0aW9uczogQm9vdHN0cmFwT3B0aW9ucyB8IHVuZGVmaW5lZDtcbmxldCBkZXJlZ2lzdGVyZWQgPSBmYWxzZTtcblxuLyoqXG4gKiBCb290c3RyYXAgdGhlIHdvcmtzcGFjZSBjb21wb25lbnRzLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcGxhdGZvcm0gc3RhcnRlZCBzdWNjZXNzZnVsbHkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHQvLyB5b3UgY2FuIGtpY2sgb2ZmIHlvdXIgYm9vdHN0cmFwcGluZyBwcm9jZXNzIGhlcmUgd2hlcmUgeW91IG1heSBkZWNpZGUgdG8gcHJvbXB0IGZvciBhdXRoZW50aWNhdGlvbixcblx0Ly8gZ2F0aGVyIHJlZmVyZW5jZSBkYXRhIGV0YyBiZWZvcmUgc3RhcnRpbmcgd29ya3NwYWNlIGFuZCBpbnRlcmFjdGluZyB3aXRoIGl0LlxuXHRsb2dnZXIuaW5mbyhcIkluaXRpYWxpemluZyB0aGUgYm9vdHN0cmFwcGVyXCIpO1xuXHRjb25zdCBjdXN0b21TZXR0aW5ncyA9IGF3YWl0IGdldFNldHRpbmdzKCk7XG5cblx0Ym9vdHN0cmFwT3B0aW9ucyA9IHsgLi4uY3VzdG9tU2V0dGluZ3MuYm9vdHN0cmFwIH07XG5cdGJvb3RzdHJhcE9wdGlvbnMuaG9tZSA9IGJvb3RzdHJhcE9wdGlvbnMuaG9tZSA/PyB0cnVlO1xuXHRib290c3RyYXBPcHRpb25zLnN0b3JlID0gYm9vdHN0cmFwT3B0aW9ucy5zdG9yZSA/PyBmYWxzZTtcblx0Ym9vdHN0cmFwT3B0aW9ucy5kb2NrID0gYm9vdHN0cmFwT3B0aW9ucy5kb2NrID8/IGZhbHNlO1xuXHRib290c3RyYXBPcHRpb25zLm5vdGlmaWNhdGlvbnMgPSBib290c3RyYXBPcHRpb25zLm5vdGlmaWNhdGlvbnMgPz8gZmFsc2U7XG5cdGJvb3RzdHJhcE9wdGlvbnMuYXV0b1Nob3cgPSBib290c3RyYXBPcHRpb25zLmF1dG9TaG93ID8/IFtdO1xuXHRib290c3RyYXBPcHRpb25zLmF1dG9zdGFydEFwcHMgPSBib290c3RyYXBPcHRpb25zLmF1dG9zdGFydEFwcHMgPz8gdHJ1ZTtcblxuXHRjb25zdCBtb2R1bGVIZWxwZXJzOiBNb2R1bGVIZWxwZXJzID0gZ2V0RGVmYXVsdEhlbHBlcnMoKTtcblxuXHRjb25zdCByZWdpc3RlcmVkQ29tcG9uZW50czogQm9vdHN0cmFwQ29tcG9uZW50c1tdID0gW107XG5cdGxldCBob21lUmVnaXN0cmF0aW9uOiBIb21lUmVnaXN0cmF0aW9uIHwgdW5kZWZpbmVkO1xuXHRsZXQgd29ya3NwYWNlTWV0YUluZm86IFJlZ2lzdHJhdGlvbk1ldGFJbmZvIHwgdW5kZWZpbmVkO1xuXHRsZXQgbm90aWZpY2F0aW9uTWV0YUluZm86IFJlZ2lzdHJhdGlvbk1ldGFJbmZvIHwgdW5kZWZpbmVkO1xuXG5cdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJJbnRlZ3JhdGlvbnNcIik7XG5cdGxvZ2dlci5pbmZvKFwiUmVnaXN0ZXJpbmcgaW50ZWdyYXRpb25zXCIpO1xuXHRhd2FpdCByZWdpc3RlckludGVncmF0aW9uKGN1c3RvbVNldHRpbmdzLmludGVncmF0aW9uUHJvdmlkZXIsIG1vZHVsZUhlbHBlcnMsIGFzeW5jIChxdWVyeSkgPT4ge1xuXHRcdGlmIChob21lUmVnaXN0cmF0aW9uPy5zZXRTZWFyY2hRdWVyeSkge1xuXHRcdFx0YXdhaXQgaG9tZVJlZ2lzdHJhdGlvbj8uc2V0U2VhcmNoUXVlcnkocXVlcnkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsb2dnZXIud2FybihcIkhvbWUgcmVnaXN0cmF0aW9uIHNldFNlYXJjaFF1ZXJ5IGNhbGxlZCBieSBpbnRlZ3JhdGlvbiwgYnV0IGl0IGlzIG5vdCBhdmFpbGFibGVcIik7XG5cdFx0fVxuXHR9KTtcblxuXHRpZiAoYm9vdHN0cmFwT3B0aW9ucy5ob21lKSB7XG5cdFx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci51cGRhdGVQcm9ncmVzcyhcIkhvbWVcIik7XG5cblx0XHQvLyBvbmx5IHJlZ2lzdGVyIHNlYXJjaCBsb2dpYyBvbmNlIHdvcmtzcGFjZSBpcyBydW5uaW5nXG5cdFx0aG9tZVJlZ2lzdHJhdGlvbiA9IGF3YWl0IGhvbWVDb21wb25lbnQucmVnaXN0ZXIoY3VzdG9tU2V0dGluZ3MuaG9tZVByb3ZpZGVyKTtcblx0XHRpZiAoaG9tZVJlZ2lzdHJhdGlvbikge1xuXHRcdFx0d29ya3NwYWNlTWV0YUluZm8gPSB7XG5cdFx0XHRcdHdvcmtzcGFjZVZlcnNpb246IGhvbWVSZWdpc3RyYXRpb24ud29ya3NwYWNlVmVyc2lvbixcblx0XHRcdFx0Y2xpZW50QVBJVmVyc2lvbjogaG9tZVJlZ2lzdHJhdGlvbi5jbGllbnRBUElWZXJzaW9uXG5cdFx0XHR9O1xuXHRcdFx0cmVnaXN0ZXJlZENvbXBvbmVudHMucHVzaChcImhvbWVcIik7XG5cdFx0XHRyZWdpc3RlckhvbWVTdXBwb3J0ZWRBY3Rpb25zKCk7XG5cdFx0fVxuXHR9XG5cblx0aWYgKGJvb3RzdHJhcE9wdGlvbnMuc3RvcmUpIHtcblx0XHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiU3RvcmVcIik7XG5cblx0XHRjb25zdCBzdG9yZVJlZ2lzdHJhdGlvbiA9IGF3YWl0IHN0b3JlQ29tcG9uZW50LnJlZ2lzdGVyKGN1c3RvbVNldHRpbmdzLnN0b3JlZnJvbnRQcm92aWRlcik7XG5cdFx0aWYgKHN0b3JlUmVnaXN0cmF0aW9uKSB7XG5cdFx0XHRpZiAoIXdvcmtzcGFjZU1ldGFJbmZvKSB7XG5cdFx0XHRcdHdvcmtzcGFjZU1ldGFJbmZvID0gc3RvcmVSZWdpc3RyYXRpb247XG5cdFx0XHR9XG5cdFx0XHRyZWdpc3RlcmVkQ29tcG9uZW50cy5wdXNoKFwic3RvcmVcIik7XG5cdFx0XHRyZWdpc3RlclN0b3JlU3VwcG9ydGVkQWN0aW9ucygpO1xuXHRcdH1cblx0fVxuXG5cdGlmIChib290c3RyYXBPcHRpb25zLmRvY2spIHtcblx0XHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiRG9ja1wiKTtcblxuXHRcdGNvbnN0IGRvY2tSZWdpc3RyYXRpb24gPSBhd2FpdCBkb2NrQ29tcG9uZW50LnJlZ2lzdGVyKGN1c3RvbVNldHRpbmdzLmRvY2tQcm92aWRlciwgYm9vdHN0cmFwT3B0aW9ucyk7XG5cdFx0aWYgKGRvY2tSZWdpc3RyYXRpb24pIHtcblx0XHRcdGlmICghd29ya3NwYWNlTWV0YUluZm8pIHtcblx0XHRcdFx0d29ya3NwYWNlTWV0YUluZm8gPSBkb2NrUmVnaXN0cmF0aW9uO1xuXHRcdFx0fVxuXHRcdFx0cmVnaXN0ZXJlZENvbXBvbmVudHMucHVzaChcImRvY2tcIik7XG5cdFx0XHRyZWdpc3RlckRvY2tTdXBwb3J0ZWRBY3Rpb25zKCk7XG5cdFx0fVxuXHR9XG5cblx0aWYgKCFpc0VtcHR5KHdvcmtzcGFjZU1ldGFJbmZvKSkge1xuXHRcdC8vIHdlIG1hdGNoIHRoZSB2ZXJzaW9ucyBvZiB3b3Jrc3BhY2UgcmVsYXRlZCBwYWNrYWdlc1xuXHRcdHZlcnNpb25Qcm92aWRlci5zZXRWZXJzaW9uKFwid29ya3NwYWNlUGxhdGZvcm1DbGllbnRcIiwgd29ya3NwYWNlTWV0YUluZm8uY2xpZW50QVBJVmVyc2lvbik7XG5cdFx0dmVyc2lvblByb3ZpZGVyLnNldFZlcnNpb24oXCJ3b3Jrc3BhY2VDbGllbnRcIiwgd29ya3NwYWNlTWV0YUluZm8uY2xpZW50QVBJVmVyc2lvbik7XG5cdFx0dmVyc2lvblByb3ZpZGVyLnNldFZlcnNpb24oXCJ3b3Jrc3BhY2VcIiwgd29ya3NwYWNlTWV0YUluZm8ud29ya3NwYWNlVmVyc2lvbik7XG5cdH1cblxuXHRpZiAoYm9vdHN0cmFwT3B0aW9ucy5ub3RpZmljYXRpb25zKSB7XG5cdFx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci51cGRhdGVQcm9ncmVzcyhcIk5vdGlmaWNhdGlvbnNcIik7XG5cblx0XHRub3RpZmljYXRpb25NZXRhSW5mbyA9IGF3YWl0IG5vdGlmaWNhdGlvbnNDb21wb25lbnQucmVnaXN0ZXIoY3VzdG9tU2V0dGluZ3Mubm90aWZpY2F0aW9uUHJvdmlkZXIpO1xuXHRcdHJlZ2lzdGVyTm90aWZpY2F0aW9uU3VwcG9ydGVkQWN0aW9ucygpO1xuXHR9XG5cblx0aWYgKCFpc0VtcHR5KG5vdGlmaWNhdGlvbk1ldGFJbmZvKSkge1xuXHRcdHZlcnNpb25Qcm92aWRlci5zZXRWZXJzaW9uKFwibm90aWZpY2F0aW9uQ2VudGVyXCIsIG5vdGlmaWNhdGlvbk1ldGFJbmZvLndvcmtzcGFjZVZlcnNpb24pO1xuXHR9XG5cblx0Y29uc3QgdmVyc2lvblN0YXR1cyA9IGF3YWl0IHZlcnNpb25Qcm92aWRlci5nZXRWZXJzaW9uU3RhdHVzKCk7XG5cdGNvbnN0IHZlcnNpb25JbmZvID0gYXdhaXQgdmVyc2lvblByb3ZpZGVyLmdldFZlcnNpb25JbmZvKCk7XG5cblx0bG9nZ2VyLmluZm8oXCJMb2FkZWQgd2l0aCB0aGUgZm9sbG93aW5nIHZlcnNpb25zLlwiLCB2ZXJzaW9uSW5mbyk7XG5cdGlmIChhbmFseXRpY3NQcm92aWRlci5pc0VuYWJsZWQoKSkge1xuXHRcdGxvZ2dlci5pbmZvKFwiQW5hbHl0aWNzIFByb3ZpZGVyIGVuYWJsZWQuIENhcHR1cmluZyB2ZXJzaW9uaW5nIGluZm9ybWF0aW9uLlwiKTtcblx0XHRjb25zdCBhbmFseXRpY3NFdmVudDogUGxhdGZvcm1BbmFseXRpY3NFdmVudCA9IHtcblx0XHRcdHNvdXJjZTogXCJXb3Jrc3BhY2VQbGF0Zm9ybVwiLFxuXHRcdFx0dHlwZTogXCJ2ZXJzaW9uXCIsXG5cdFx0XHR0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG5cdFx0XHRkYXRhOiB2ZXJzaW9uSW5mbyxcblx0XHRcdGFjdGlvbjogXCJsb2FkXCJcblx0XHR9O1xuXHRcdGF3YWl0IGFuYWx5dGljc1Byb3ZpZGVyLmhhbmRsZUFuYWx5dGljcyhbYW5hbHl0aWNzRXZlbnRdKTtcblx0fVxuXG5cdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJWZXJzaW9uc1wiKTtcblxuXHRsb2dnZXIuaW5mbyhcIkNoZWNraW5nIHRvIHNlZSBpZiB2ZXJzaW9uIG1hbmFnZW1lbnQgaXMgcmVxdWlyZWQuXCIpO1xuXHRpZiAoYXdhaXQgdmVyc2lvblByb3ZpZGVyLm1hbmFnZVZlcnNpb25TdGF0dXModmVyc2lvblN0YXR1cykpIHtcblx0XHQvLyB2ZXJzaW9uIHN0YXR1cyBoYWQgdG8gYmUgbWFuYWdlZCBzbyBpdCBjb3VsZG4ndCBqdXN0IGNvbnRpbnVlLiBTdG9wIGluaXRpYWxpemF0aW9uLlxuXHRcdGF3YWl0IGRlcmVnaXN0ZXIoKTtcblx0XHRsb2dnZXIud2FybihcIlBsYXRmb3JtIGJvb3RzdHJhcHBpbmcgc3RvcHBlZCBhcyB0aGUgY3VycmVudCB2ZXJzaW9uaW5nIHJlcXVpcmVkIHN0b3BwaW5nLlwiKTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRsb2dnZXIuaW5mbyhcIkNoZWNraW5nIHRvIHNlZSBpZiB2ZXJzaW9uIG1vbml0b3JpbmcgaXMgcmVxdWlyZWQuXCIpO1xuXHRhd2FpdCB2ZXJzaW9uUHJvdmlkZXIuTW9uaXRvclZlcnNpb25TdGF0dXMoKTtcblxuXHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiTG93IENvZGUgSW50ZWdyYXRpb25zXCIpO1xuXG5cdC8vIHJlZ2lzdGVyIGFueSBpbnN0YW50aWF0ZWQgbG93IGNvZGUgaW50ZWdyYXRpb25zIHRoYXQgcmVxdWlyZSByZWdpc3RlcmluZ1xuXHRhd2FpdCBsb3dDb2RlSW50ZWdyYXRpb25Qcm92aWRlci5pbml0aWFsaXplV29ya2Zsb3dzKCk7XG5cdGlmIChsb3dDb2RlSW50ZWdyYXRpb25Qcm92aWRlci5oYXNSZWdpc3RlcmVkSW50ZWdyYXRpb25zKCkgJiYgIXJlZ2lzdGVyZWRDb21wb25lbnRzLmluY2x1ZGVzKFwiaG9tZVwiKSkge1xuXHRcdHJlZ2lzdGVyZWRDb21wb25lbnRzLnB1c2goXCJob21lXCIpO1xuXHRcdHJlZ2lzdGVySG9tZVN1cHBvcnRlZEFjdGlvbnMoKTtcblx0fVxuXG5cdGxvZ2dlci5pbmZvKFwiVmFsaWRhdGluZyBhdXRvIHNob3cgbGlzdDpcIiwgYm9vdHN0cmFwT3B0aW9ucy5hdXRvU2hvdyk7XG5cdC8vIFJlbW92ZSBhbnkgZW50cmllcyBmcm9tIGF1dG9TaG93IHRoYXQgaGF2ZSBub3QgYmVlbiByZWdpc3RlcmVkXG5cdGJvb3RzdHJhcE9wdGlvbnMuYXV0b1Nob3cgPSBib290c3RyYXBPcHRpb25zLmF1dG9TaG93LmZpbHRlcihcblx0XHQoY29tcG9uZW50KSA9PiByZWdpc3RlcmVkQ29tcG9uZW50cy5pbmNsdWRlcyhjb21wb25lbnQpIHx8IGNvbXBvbmVudCA9PT0gXCJub25lXCJcblx0KTtcblx0bG9nZ2VyLmluZm8oXCJWYWxpZGF0ZWQgYXV0byBzaG93IGxpc3Q6XCIsIGJvb3RzdHJhcE9wdGlvbnMuYXV0b1Nob3cpO1xuXG5cdC8vIElmIHRoZSBhdXRvU2hvdyBvcHRpb25zIGlzIG5vdCBlbXB0eSwgZGVmYXVsdCB0byB0aGUgZmlyc3QgcmVnaXN0ZXJlZCBjb21wb25lbnQuXG5cdGlmIChib290c3RyYXBPcHRpb25zLmF1dG9TaG93Lmxlbmd0aCA9PT0gMCAmJiByZWdpc3RlcmVkQ29tcG9uZW50cy5sZW5ndGggPiAwKSB7XG5cdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRgTm8gYXV0byBzaG93IG9wdGlvbnMgc3BlY2lmaWVkIGJ1dCBhdCBsZWFzdCBvbmUgV29ya3NwYWNlIENvbXBvbmVudCBpcyByZWdpc3RlcmVkLiBTaG93aW5nIHRoZSBmaXJzdCByZWdpc3RlcmVkIGNvbXBvbmVudDogJHtyZWdpc3RlcmVkQ29tcG9uZW50c1swXX1gXG5cdFx0KTtcblx0XHRib290c3RyYXBPcHRpb25zLmF1dG9TaG93ID0gW3JlZ2lzdGVyZWRDb21wb25lbnRzWzBdXTtcblx0fVxuXG5cdGZvciAoY29uc3QgYXV0b1Nob3cgb2YgYm9vdHN0cmFwT3B0aW9ucy5hdXRvU2hvdykge1xuXHRcdGlmIChhdXRvU2hvdyA9PT0gXCJob21lXCIpIHtcblx0XHRcdGF3YWl0IGhvbWVDb21wb25lbnQuc2hvdygpO1xuXHRcdH0gZWxzZSBpZiAoYXV0b1Nob3cgPT09IFwic3RvcmVcIikge1xuXHRcdFx0YXdhaXQgc3RvcmVDb21wb25lbnQuc2hvdygpO1xuXHRcdH0gZWxzZSBpZiAoYXV0b1Nob3cgPT09IFwiZG9ja1wiKSB7XG5cdFx0XHRhd2FpdCBkb2NrQ29tcG9uZW50LnNob3coKTtcblx0XHR9XG5cdH1cblxuXHRpZiAoIWlzRW1wdHkoY3VzdG9tU2V0dGluZ3M/LnRyYXlQcm92aWRlcikgJiYgY3VzdG9tU2V0dGluZ3MudHJheVByb3ZpZGVyLmVuYWJsZWQpIHtcblx0XHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiVHJheVwiKTtcblx0XHRhd2FpdCB0cmF5UHJvdmlkZXIuaW5pdChjdXN0b21TZXR0aW5ncz8udHJheVByb3ZpZGVyKTtcblx0fVxuXG5cdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblxuXHRpZiAoaXNBdXRoZW50aWNhdGlvbkVuYWJsZWQoKSkge1xuXHRcdGxvZ2dlci5pbmZvKFwiU2V0dGluZyB1cCBsaXN0ZW5lcnMgZm9yIGF1dGhlbnRpY2F0aW9uIGV2ZW50c1wiKTtcblx0XHQvLyBwbGF0Zm9ybSBpcyBpbnN0YW50aWF0ZWQgYW5kIGF1dGhlbnRpY2F0aW9uIGlmIHJlcXVpcmVkIGlzIGdpdmVuLiBXYXRjaCBmb3Igc2Vzc2lvblxuXHRcdC8vIGV4cGlyeVxuXHRcdGF1dGhQcm92aWRlci5zdWJzY3JpYmUoXCJsb2dnZWQtaW5cIiwgYXN5bmMgKHVzZXI/OiB1bmtub3duKSA9PiB7XG5cdFx0XHQvLyB3aGF0IGJlaGF2aW9yIGRvIHlvdSB3YW50IHRvIGRvIHdoZW4gc29tZW9uZSBsb2dzIGluXG5cdFx0XHQvLyBwb3RlbnRpYWxseSB0aGUgaW52ZXJzZSBpZiB5b3UgaGlkIHNvbWV0aGluZyBvbiBzZXNzaW9uIGV4cGlyYXRpb25cblx0XHRcdGF3YWl0IGZpcmVMaWZlY3ljbGVFdmVudChwbGF0Zm9ybSwgXCJhdXRoLWxvZ2dlZC1pblwiLCB7XG5cdFx0XHRcdHVzZXJcblx0XHRcdH0gYXMgTG9nZ2VkSW5MaWZlY3ljbGVQYXlsb2FkKTtcblx0XHR9KTtcblxuXHRcdGF1dGhQcm92aWRlci5zdWJzY3JpYmUoXCJzZXNzaW9uLWV4cGlyZWRcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Ly8gc2Vzc2lvbiBleHBpcmVkLiBXaGF0IGRvIHlvdSB3YW50IHRvIGRvIHdpdGggdGhlIHBsYXRmb3JtIHdoZW4gdGhlIHVzZXIgbmVlZHMgdG8gbG9nIGJhY2sgaW4uXG5cdFx0XHRhd2FpdCBmaXJlTGlmZWN5Y2xlRXZlbnQocGxhdGZvcm0sIFwiYXV0aC1zZXNzaW9uLWV4cGlyZWRcIik7XG5cdFx0fSk7XG5cblx0XHRhdXRoUHJvdmlkZXIuc3Vic2NyaWJlKFwiYmVmb3JlLWxvZ2dlZC1vdXRcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Ly8gd2hhdCBiZWhhdmlvciBkbyB5b3Ugd2FudCB0byBkbyB3aGVuIHNvbWVvbmUgbG9ncyBpblxuXHRcdFx0Ly8gZG8geW91IHdhbnQgdG8gc2F2ZSBhbnl0aGluZyBiZWZvcmUgdGhleSBsb2cgdGhlbXNlbHZlcyBvdXRcblx0XHRcdGF3YWl0IGZpcmVMaWZlY3ljbGVFdmVudChwbGF0Zm9ybSwgXCJhdXRoLWJlZm9yZS1sb2dnZWQtb3V0XCIpO1xuXHRcdH0pO1xuXHR9XG5cblx0bG9nZ2VyLmluZm8oXCJTZXR0aW5nIHVwIGRpc3Bvc2UgaGFuZGxlci5cIik7XG5cdGNvbnN0IHByb3ZpZGVyV2luZG93ID0gZmluLldpbmRvdy5nZXRDdXJyZW50U3luYygpO1xuXHRhd2FpdCBwcm92aWRlcldpbmRvdy5vbmNlKFwiY2xvc2UtcmVxdWVzdGVkXCIsIGFzeW5jIChldmVudCkgPT4ge1xuXHRcdGF3YWl0IGRlcmVnaXN0ZXIoKTtcblx0XHRhd2FpdCBmaW4uUGxhdGZvcm0uZ2V0Q3VycmVudFN5bmMoKS5xdWl0KCk7XG5cdH0pO1xuXG5cdC8vIE9uY2UgdGhlIHBsYXRmb3JtIGlzIHN0YXJ0ZWQgYW5kIGV2ZXJ5dGhpbmcgaXMgYm9vdHN0cmFwcGVkIGluaXRpYWxpemUgdGhlIGluaXQgb3B0aW9uc1xuXHQvLyBsaXN0ZW5lciBzbyB0aGF0IGl0IGlzIHJlYWR5IHRvIGhhbmRsZSBpbml0aWFsIHBhcmFtcyBvciBzdWJzZXF1ZW50IHJlcXVlc3RzLlxuXHRhd2FpdCByZWdpc3RlckluaXRPcHRpb25zTGlzdGVuZXIoY3VzdG9tU2V0dGluZ3M/LmluaXRPcHRpb25zUHJvdmlkZXIsIG1vZHVsZUhlbHBlcnMsIFwiYWZ0ZXItYm9vdHN0cmFwXCIpO1xuXG5cdC8vIExldCBhbnkgb3RoZXIgbW9kdWxlcyBwYXJ0aWNpcGF0ZSBpbiB0aGUgbGlmZWN5Y2xlXG5cdGF3YWl0IGZpcmVMaWZlY3ljbGVFdmVudChwbGF0Zm9ybSwgXCJhZnRlci1ib290c3RyYXBcIik7XG5cblx0Ly8gc3RhcnQgdXAgYW55IGFwcHMgdGhhdCBoYXZlIHJlcXVlc3RlZCB0byBiZSBzdGFydGVkIHVwIGF0IHRoZSBlbmQgb2YgdGhlIGJvb3RzdHJhcHBpbmcgcHJvY2Vzc1xuXHRpZiAoYm9vdHN0cmFwT3B0aW9ucy5hdXRvc3RhcnRBcHBzKSB7XG5cdFx0YXdhaXQgYXV0b1N0YXJ0QXBwcygpO1xuXHR9XG5cblx0bG9nZ2VyLmluZm8oXCJGaW5pc2hlZCB0aGUgYm9vdHN0cmFwcGluZyBwcm9jZXNzLlwiKTtcblx0cmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogU3RhcnQgYW55IGFwcHMgdGhhdCBhcmUgbGlzdGVkIGluIHRoZSBhdXRvIHN0YXJ0IG9wdGlvbnMgZm9yIHRoZSBib290c3RyYXAgcHJvY2Vzcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gYXV0b1N0YXJ0QXBwcygpOiBQcm9taXNlPHZvaWQ+IHtcblx0Y29uc3QgYXBwcyA9IGF3YWl0IGdldEFwcHMoeyBhdXRvc3RhcnQ6IHRydWUgfSk7XG5cdGlmIChBcnJheS5pc0FycmF5KGFwcHMpICYmIGFwcHMubGVuZ3RoID4gMCkge1xuXHRcdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJBdXRvIFN0YXJ0IEFwcHNcIik7XG5cdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRgQXBwcyBoYXZlIGJlZW4gbWFya2VkIHRoYXQgdGhleSBzaG91bGQgYXV0b3N0YXJ0IGFmdGVyIHRoZSBib290c3RyYXBwaW5nIHByb2Nlc3MgYW5kIHRoZSBwbGF0Zm9ybSBoYXMgbm90IHNldCBhdXRvc3RhcnRBcHBzIHRvIGZhbHNlIGluIHRoZSBib290c3RyYXBwaW5nIG9wdGlvbnMuICR7YXBwcy5sZW5ndGh9IGFwcChzKSB3aWxsIGJlIGxhdW5jaGVkLmBcblx0XHQpO1xuXHRcdGZvciAoY29uc3QgYXBwIG9mIGFwcHMpIHtcblx0XHRcdHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdC8vIHdlIHNob3VsZCBub3Qgd2FpdCBmb3IgZXZlcnkgc2luZ2xlIGFwcCB0byBsYXVuY2ggaW4gY2FzZSB0aGVyZSBhcmUgc2xvdyBsYXVuY2hpbmcgYXBwcyBvciBkZWxheXNcblx0XHRcdFx0XHQvLyB0aGUgZ29hbCBpcyB0byBsYXVuY2ggYWxsIG9mIHRoZSBhcHBzIHRoYXQgaGF2ZSByZXF1ZXN0ZWQgaXRcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhgTGF1bmNoaW5nIGFwcDogJHthcHAuYXBwSWR9YCk7XG5cdFx0XHRcdFx0Y29uc3QgYXBwSWRlbnRpZmllciA9IGF3YWl0IGxhdW5jaChhcHApO1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBBcHA6ICR7YXBwLmFwcElkfSBsYXVuY2hlZCB3aXRoIHRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcmAsIGFwcElkZW50aWZpZXIpO1xuXHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdGxvZ2dlci5lcnJvcihgRXJyb3IgbGF1bmNoaW5nIGFwcDogJHthcHAuYXBwSWR9LmAsIGVycm9yKTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgMTAwMCk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogRGVyZWdpc3RlciBhbnkgb2YgdGhlIGNvbXBvbmVudHMgcmVnaXN0ZXJlZCBvbiBzdGFydHVwLlxuICovXG5hc3luYyBmdW5jdGlvbiBkZXJlZ2lzdGVyKCk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoIWRlcmVnaXN0ZXJlZCkge1xuXHRcdGxvZ2dlci5pbmZvKFwiRGVyZWdpc3RlciBoYXMgYmVlbiBjYWxsZWQuXCIpO1xuXHRcdGF3YWl0IGRlcmVnaXN0ZXJJbnRlZ3JhdGlvbigpO1xuXHRcdGlmIChib290c3RyYXBPcHRpb25zPy5kb2NrKSB7XG5cdFx0XHRhd2FpdCBkb2NrQ29tcG9uZW50LmRlcmVnaXN0ZXIoKTtcblx0XHR9XG5cdFx0aWYgKGJvb3RzdHJhcE9wdGlvbnM/LnN0b3JlKSB7XG5cdFx0XHRhd2FpdCBzdG9yZUNvbXBvbmVudC5kZXJlZ2lzdGVyKCk7XG5cdFx0fVxuXHRcdGlmIChib290c3RyYXBPcHRpb25zPy5ob21lKSB7XG5cdFx0XHRhd2FpdCBob21lQ29tcG9uZW50LmRlcmVnaXN0ZXIoKTtcblx0XHR9XG5cdFx0aWYgKGJvb3RzdHJhcE9wdGlvbnM/Lm5vdGlmaWNhdGlvbnMpIHtcblx0XHRcdGF3YWl0IG5vdGlmaWNhdGlvbnNDb21wb25lbnQuZGVyZWdpc3RlcigpO1xuXHRcdH1cblx0XHRsb2dnZXIuaW5mbyhcIkZpbmlzaGVkIGRlcmVnaXN0ZXIuXCIpO1xuXHRcdGRlcmVnaXN0ZXJlZCA9IHRydWU7XG5cdH1cbn1cblxuLyoqXG4gKiBVc2VkIHRvIHJlZ2lzdGVyIGhvbWUgcmVsYXRlZCBhY3Rpb25zLlxuICovXG5mdW5jdGlvbiByZWdpc3RlckhvbWVTdXBwb3J0ZWRBY3Rpb25zKCk6IHZvaWQge1xuXHRyZWdpc3RlckFjdGlvbihcInNob3ctaG9tZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0YXdhaXQgaG9tZUNvbXBvbmVudC5zaG93KCk7XG5cdH0pO1xuXHRyZWdpc3RlckFjdGlvbihcImhpZGUtaG9tZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0YXdhaXQgaG9tZUNvbXBvbmVudC5oaWRlKCk7XG5cdH0pO1xufVxuXG4vKipcbiAqIFVzZWQgdG8gcmVnaXN0ZXIgc3RvcmUgcmVsYXRlZCBhY3Rpb25zLlxuICovXG5mdW5jdGlvbiByZWdpc3RlclN0b3JlU3VwcG9ydGVkQWN0aW9ucygpOiB2b2lkIHtcblx0cmVnaXN0ZXJBY3Rpb24oXCJzaG93LXN0b3JlXCIsIGFzeW5jICgpID0+IHtcblx0XHRhd2FpdCBzdG9yZUNvbXBvbmVudC5zaG93KCk7XG5cdH0pO1xuXHRyZWdpc3RlckFjdGlvbihcImhpZGUtc3RvcmVcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdGF3YWl0IHN0b3JlQ29tcG9uZW50LmhpZGUoKTtcblx0fSk7XG59XG5cbi8qKlxuICogVXNlZCB0byByZWdpc3RlciBkb2NrIHJlbGF0ZWQgYWN0aW9ucy5cbiAqL1xuZnVuY3Rpb24gcmVnaXN0ZXJEb2NrU3VwcG9ydGVkQWN0aW9ucygpOiB2b2lkIHtcblx0cmVnaXN0ZXJBY3Rpb24oXCJzaG93LWRvY2tcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdGF3YWl0IGRvY2tDb21wb25lbnQuc2hvdygpO1xuXHR9KTtcblx0cmVnaXN0ZXJBY3Rpb24oXCJtaW5pbWl6ZS1kb2NrXCIsIGFzeW5jICgpID0+IHtcblx0XHRhd2FpdCBkb2NrQ29tcG9uZW50Lm1pbmltaXplKCk7XG5cdH0pO1xufVxuXG4vKipcbiAqIFVzZWQgdG8gcmVnaXN0ZXIgbm90aWZpY2F0aW9uIHJlbGF0ZWQgYWN0aW9ucy5cbiAqL1xuZnVuY3Rpb24gcmVnaXN0ZXJOb3RpZmljYXRpb25TdXBwb3J0ZWRBY3Rpb25zKCk6IHZvaWQge1xuXHRyZWdpc3RlckFjdGlvbihcInNob3ctbm90aWZpY2F0aW9uc1wiLCBhc3luYyAoKSA9PiB7XG5cdFx0YXdhaXQgbm90aWZpY2F0aW9uc0NvbXBvbmVudC5zaG93KCk7XG5cdH0pO1xuXHRyZWdpc3RlckFjdGlvbihcImhpZGUtbm90aWZpY2F0aW9uc1wiLCBhc3luYyAoKSA9PiB7XG5cdFx0YXdhaXQgbm90aWZpY2F0aW9uc0NvbXBvbmVudC5oaWRlKCk7XG5cdH0pO1xufVxuIiwiaW1wb3J0IHR5cGUgT3BlbkZpbiBmcm9tIFwiQG9wZW5maW4vY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21CdXR0b25Db25maWcgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlXCI7XG5pbXBvcnQge1xuXHRCcm93c2VyQnV0dG9uVHlwZSxcblx0Z2V0Q3VycmVudFN5bmMsXG5cdHR5cGUgQnJvd3NlckNyZWF0ZVdpbmRvd1JlcXVlc3QsXG5cdHR5cGUgQnJvd3NlcldpbmRvd01vZHVsZSxcblx0dHlwZSBDdXN0b21Ccm93c2VyQnV0dG9uQ29uZmlnLFxuXHR0eXBlIFRvb2xiYXJCdXR0b25cbn0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZS1wbGF0Zm9ybVwiO1xuaW1wb3J0IHsgY2hlY2tDb25kaXRpb25zIH0gZnJvbSBcIi4vY29uZGl0aW9uc1wiO1xuaW1wb3J0IHsgc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQgfSBmcm9tIFwiLi9saWZlY3ljbGVcIjtcbmltcG9ydCB7IGdldFNldHRpbmdzIH0gZnJvbSBcIi4vc2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlUGxhdGZvcm1Ub29sYmFyQnV0dG9uIH0gZnJvbSBcIi4vc2hhcGVzL2Jyb3dzZXItc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yU2NoZW1lTW9kZSB9IGZyb20gXCIuL3NoYXBlcy90aGVtZS1zaGFwZXNcIjtcbmltcG9ydCB7IGdldEN1cnJlbnRDb2xvclNjaGVtZU1vZGUsIGdldEN1cnJlbnRJY29uRm9sZGVyIH0gZnJvbSBcIi4vdGhlbWVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5LCBvYmplY3RDbG9uZSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmxldCBjb25maWdUb29sYmFyQnV0dG9uczogV29ya3NwYWNlUGxhdGZvcm1Ub29sYmFyQnV0dG9uW10gfCB1bmRlZmluZWQ7XG5sZXQgY29uZmlnQnV0dG9uc1JldHJpZXZlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4vKipcbiAqIEdldCB0aGUgdG9vbGJhciBidXR0b25zIHRvIHNob3cgb24gYSBicm93c2VyIHdpbmRvdy5cbiAqIEBwYXJhbSB3aW5kb3dDcmVhdGVPcHRpb25zIFRoZSBvcHRpb25zIHRoZSB3aW5kb3cgd2lsbCBiZSBjcmVhdGVkIHdpdGguXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBidXR0b25zIHRvIHNob3cuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRUb29sYmFyQnV0dG9ucyhcblx0d2luZG93Q3JlYXRlT3B0aW9ucz86IE9wZW5GaW4uUGxhdGZvcm1XaW5kb3dDcmVhdGlvbk9wdGlvbnNcbik6IFByb21pc2U8VG9vbGJhckJ1dHRvbltdIHwgdW5kZWZpbmVkPiB7XG5cdGxldCB0b29sYmFyQnV0dG9uczogVG9vbGJhckJ1dHRvbltdIHwgdW5kZWZpbmVkO1xuXG5cdGNvbnN0IGFsbFRvb2xiYXJCdXR0b25zID0gYXdhaXQgZ2V0Q29uZmlnVG9vbGJhckJ1dHRvbnMoKTtcblxuXHRpZiAoIWlzRW1wdHkoYWxsVG9vbGJhckJ1dHRvbnMpKSB7XG5cdFx0Y29uc3QgaWNvbkZvbGRlciA9IGF3YWl0IGdldEN1cnJlbnRJY29uRm9sZGVyKCk7XG5cdFx0Y29uc3QgY29sb3JTY2hlbWVNb2RlID0gYXdhaXQgZ2V0Q3VycmVudENvbG9yU2NoZW1lTW9kZSgpO1xuXG5cdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXG5cdFx0dG9vbGJhckJ1dHRvbnMgPSBbXTtcblx0XHRmb3IgKGNvbnN0IGVudHJ5IG9mIGFsbFRvb2xiYXJCdXR0b25zKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGVudHJ5LmluY2x1ZGUgJiZcblx0XHRcdFx0KGF3YWl0IGNoZWNrQ29uZGl0aW9ucyhwbGF0Zm9ybSwgZW50cnkuY29uZGl0aW9ucywge1xuXHRcdFx0XHRcdGNhbGxlclR5cGU6IFwiYnJvd3NlclwiLFxuXHRcdFx0XHRcdGN1c3RvbURhdGE6IHdpbmRvd0NyZWF0ZU9wdGlvbnNcblx0XHRcdFx0fSkpXG5cdFx0XHQpIHtcblx0XHRcdFx0dG9vbGJhckJ1dHRvbnMucHVzaCh0aGVtZUJ1dHRvbihlbnRyeS5idXR0b24sIGljb25Gb2xkZXIsIGNvbG9yU2NoZW1lTW9kZSkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB0b29sYmFyQnV0dG9ucztcbn1cblxuLyoqXG4gKiBVcGRhdGUgdGhlIHRvb2xiYXIgYnV0dG9ucywgcmVwbGFjaW5nIG9uZSBvZiB0aGUgaXRlbXMuXG4gKiBAcGFyYW0gYnV0dG9ucyBUaGUgY3VycmVudCB0b29sYmFyIGJ1dHRvbnMuXG4gKiBAcGFyYW0gYnV0dG9uSWQgVGhlIGJ1dHRvbiBpZCB0byByZXBsYWNlLlxuICogQHBhcmFtIHJlcGxhY2VtZW50QnV0dG9uSWQgVGhlIGlkIG9mIHRoZSBidXR0b24gdG8gcmVwbGFjZSBpdCB3aXRoLlxuICogQHJldHVybnMgVGhlIHVwZGF0ZWQgYnV0dG9ucy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVRvb2xiYXJCdXR0b25zKFxuXHRidXR0b25zOiBUb29sYmFyQnV0dG9uW10sXG5cdGJ1dHRvbklkOiBzdHJpbmcsXG5cdHJlcGxhY2VtZW50QnV0dG9uSWQ6IHN0cmluZ1xuKTogUHJvbWlzZTxUb29sYmFyQnV0dG9uW10+IHtcblx0Y29uc3QgaW5kZXggPSBidXR0b25zLmZpbmRJbmRleCgoZW50cnkpID0+IHtcblx0XHRpZiAoXG5cdFx0XHRlbnRyeS50eXBlID09PSBCcm93c2VyQnV0dG9uVHlwZS5DdXN0b20gJiZcblx0XHRcdChlbnRyeSBhcyBDdXN0b21Ccm93c2VyQnV0dG9uQ29uZmlnKS5hY3Rpb24uY3VzdG9tRGF0YS5zb3VyY2VJZCA9PT0gYnV0dG9uSWRcblx0XHQpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0pO1xuXG5cdGlmIChpbmRleCAhPT0gLTEpIHtcblx0XHRjb25zdCBhdmFpbGFibGVUb29sYmFyQnV0dG9ucyA9IGF3YWl0IGdldENvbmZpZ1Rvb2xiYXJCdXR0b25zKCk7XG5cdFx0aWYgKCFpc0VtcHR5KGF2YWlsYWJsZVRvb2xiYXJCdXR0b25zKSkge1xuXHRcdFx0Y29uc3QgcmVwbGFjZW1lbnQgPSBhdmFpbGFibGVUb29sYmFyQnV0dG9ucy5maW5kKChlbnRyeSkgPT4ge1xuXHRcdFx0XHRpZiAoZW50cnkuYnV0dG9uLnR5cGUgPT09IEJyb3dzZXJCdXR0b25UeXBlLkN1c3RvbSkge1xuXHRcdFx0XHRcdGNvbnN0IGN1c3RvbUJ1dHRvbiA9IGVudHJ5LmJ1dHRvbiBhcyBDdXN0b21Ccm93c2VyQnV0dG9uQ29uZmlnO1xuXHRcdFx0XHRcdHJldHVybiBjdXN0b21CdXR0b24/LmFjdGlvbj8uY3VzdG9tRGF0YT8uc291cmNlSWQgPT09IHJlcGxhY2VtZW50QnV0dG9uSWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAocmVwbGFjZW1lbnQpIHtcblx0XHRcdFx0Y29uc3QgaWNvbkZvbGRlciA9IGF3YWl0IGdldEN1cnJlbnRJY29uRm9sZGVyKCk7XG5cdFx0XHRcdGNvbnN0IGNvbG9yU2NoZW1lTW9kZSA9IGF3YWl0IGdldEN1cnJlbnRDb2xvclNjaGVtZU1vZGUoKTtcblx0XHRcdFx0YnV0dG9uc1tpbmRleF0gPSB0aGVtZUJ1dHRvbihyZXBsYWNlbWVudC5idXR0b24sIGljb25Gb2xkZXIsIGNvbG9yU2NoZW1lTW9kZSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYnV0dG9ucztcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gYnV0dG9ucztcbn1cblxuLyoqXG4gKiBVcGRhdGUgYWxsIHRoZSB0b29sYmFyIGJ1dHRvbnMgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29sb3Igc2NoZW1lLlxuICogQHBhcmFtIGJyb3dzZXJXaW5kb3cgVGhlIGJyb3dzZXIgd2luZG93IHRvIHVwZGF0ZSB0aGUgYnV0dG9ucyBmb3IuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVCcm93c2VyV2luZG93QnV0dG9uc0NvbG9yU2NoZW1lKFxuXHRicm93c2VyV2luZG93OiBCcm93c2VyV2luZG93TW9kdWxlXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKGNvbmZpZ1Rvb2xiYXJCdXR0b25zKSB7XG5cdFx0Y29uc3Qgb3B0aW9ucyA9IGF3YWl0IGJyb3dzZXJXaW5kb3cub3BlbmZpbldpbmRvdy5nZXRPcHRpb25zKCk7XG5cdFx0Y29uc3QgY3VycmVudFRvb2xiYXJCdXR0b25zID0gKG9wdGlvbnMgYXMgQnJvd3NlckNyZWF0ZVdpbmRvd1JlcXVlc3QpLndvcmtzcGFjZVBsYXRmb3JtLnRvb2xiYXJPcHRpb25zXG5cdFx0XHQ/LmJ1dHRvbnM7XG5cblx0XHRpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50VG9vbGJhckJ1dHRvbnMpKSB7XG5cdFx0XHRjb25zdCB1cGRhdGVkQnV0dG9ucyA9IFtdO1xuXHRcdFx0Y29uc3QgaWNvbkZvbGRlciA9IGF3YWl0IGdldEN1cnJlbnRJY29uRm9sZGVyKCk7XG5cdFx0XHRjb25zdCBjb2xvclNjaGVtZU1vZGUgPSBhd2FpdCBnZXRDdXJyZW50Q29sb3JTY2hlbWVNb2RlKCk7XG5cblx0XHRcdGZvciAoY29uc3QgYnV0dG9uIG9mIGN1cnJlbnRUb29sYmFyQnV0dG9ucykge1xuXHRcdFx0XHRpZiAoYnV0dG9uLnR5cGUgPT09IEJyb3dzZXJCdXR0b25UeXBlLkN1c3RvbSkge1xuXHRcdFx0XHRcdGNvbnN0IGJ1dHRvbklkID0gKGJ1dHRvbiBhcyBDdXN0b21Ccm93c2VyQnV0dG9uQ29uZmlnKS5hY3Rpb24/LmlkO1xuXHRcdFx0XHRcdGlmIChidXR0b25JZCkge1xuXHRcdFx0XHRcdFx0Ly8gRmluZCB0aGUgb3JpZ2luYWwgYnV0dG9uIGZyb20gY29uZmlnIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgb3JpZ2luYWxcblx0XHRcdFx0XHRcdC8vIGljb25Vcmwgd2l0aCBhbnkgc2NoZW1hIHBsYWNlaG9sZGVyc1xuXHRcdFx0XHRcdFx0Y29uc3Qgb3JpZ2luYWxCdXR0b24gPSBjb25maWdUb29sYmFyQnV0dG9ucy5maW5kKFxuXHRcdFx0XHRcdFx0XHQoYikgPT4gKGIuYnV0dG9uIGFzIEN1c3RvbUJyb3dzZXJCdXR0b25Db25maWcpLmFjdGlvbj8uaWQgPT09IGJ1dHRvbklkXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0Y29uc3QgYnRuID0gb3JpZ2luYWxCdXR0b24/LmJ1dHRvbiBhcyBDdXN0b21CdXR0b25Db25maWc7XG5cdFx0XHRcdFx0XHRpZiAoYnRuPy5pY29uVXJsKSB7XG5cdFx0XHRcdFx0XHRcdGJ1dHRvbi5pY29uVXJsID0gdGhlbWVVcmwoYnRuLmljb25VcmwsIGljb25Gb2xkZXIsIGNvbG9yU2NoZW1lTW9kZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHVwZGF0ZWRCdXR0b25zLnB1c2goYnV0dG9uKTtcblx0XHRcdH1cblxuXHRcdFx0YXdhaXQgYnJvd3NlcldpbmRvdy5yZXBsYWNlVG9vbGJhck9wdGlvbnMoeyBidXR0b25zOiB1cGRhdGVkQnV0dG9ucyB9KTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIGxpc3Qgb2YgYnV0dG9ucyBhcyB0aGV5IGFyZSBkZWZpbmVkIGluIHRoZSBjb25maWd1cmF0aW9uLlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBidXR0b25zLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRDb25maWdUb29sYmFyQnV0dG9ucygpOiBQcm9taXNlPFdvcmtzcGFjZVBsYXRmb3JtVG9vbGJhckJ1dHRvbltdIHwgdW5kZWZpbmVkPiB7XG5cdGlmIChjb25maWdCdXR0b25zUmV0cmlldmVkKSB7XG5cdFx0cmV0dXJuIGNvbmZpZ1Rvb2xiYXJCdXR0b25zO1xuXHR9XG5cblx0Y29uc3Qgc2V0dGluZ3MgPSBhd2FpdCBnZXRTZXR0aW5ncygpO1xuXHRjb25maWdUb29sYmFyQnV0dG9ucyA9IHNldHRpbmdzPy5icm93c2VyUHJvdmlkZXI/LnRvb2xiYXJCdXR0b25zO1xuXHRjb25maWdCdXR0b25zUmV0cmlldmVkID0gdHJ1ZTtcblxuXHRzdWJzY3JpYmVMaWZlY3ljbGVFdmVudChcInRoZW1lLWNoYW5nZWRcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdC8vIFVwZGF0ZSBhbGwgdGhlIGJyb3dzZXIgd2luZG93cyB3aXRoIHRoZSBuZXcgYnV0dG9ucy5cblx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0Y29uc3QgYnJvd3NlcldpbmRvd3MgPSBhd2FpdCBwbGF0Zm9ybS5Ccm93c2VyLmdldEFsbFdpbmRvd3MoKTtcblx0XHRmb3IgKGNvbnN0IGJyb3dzZXJXaW5kb3cgb2YgYnJvd3NlcldpbmRvd3MpIHtcblx0XHRcdGF3YWl0IHVwZGF0ZUJyb3dzZXJXaW5kb3dCdXR0b25zQ29sb3JTY2hlbWUoYnJvd3NlcldpbmRvdyk7XG5cdFx0fVxuXHR9KTtcblxuXHRyZXR1cm4gY29uZmlnVG9vbGJhckJ1dHRvbnM7XG59XG5cbi8qKlxuICogQXBwbHkgYSB0aGVtZSB0byBhIGJ1dHRvbi5cbiAqIEBwYXJhbSBidXR0b24gVGhlIGJ1dHRvbiB0byBhcHBseSB0aGUgdGhlbWUgdG8uXG4gKiBAcGFyYW0gaWNvbkZvbGRlciBUaGUgZm9sZGVyIHdoZXJlIHRoZSBpY29ucyBhcmUgbG9jYXRlZC5cbiAqIEBwYXJhbSBjb2xvclNjaGVtZU1vZGUgVGhlIGNvbG9yIHNjaGVtZSBmb3IgdGhlIHRoZW1lLlxuICogQHJldHVybnMgVGhlIHRoZW1lZCBidXR0b24uXG4gKi9cbmZ1bmN0aW9uIHRoZW1lQnV0dG9uKFxuXHRidXR0b246IFRvb2xiYXJCdXR0b24gJiB7IGljb25Vcmw/OiBzdHJpbmcgfSxcblx0aWNvbkZvbGRlcjogc3RyaW5nLFxuXHRjb2xvclNjaGVtZU1vZGU6IENvbG9yU2NoZW1lTW9kZVxuKTogVG9vbGJhckJ1dHRvbiAmIHsgaWNvblVybD86IHN0cmluZyB9IHtcblx0Ly8gV2UgbmVlZCB0byBkdXBsaWNhdGUgdGhlIGJ1dHRvbiwgYXMgd2UgZG9uJ3Qgd2FudCB0byBsb3NlXG5cdC8vIGFueSBwbGFjZWhvbGRlcnMgaW4gdGhlIGljb25Vcmxcblx0Y29uc3QgYnV0dG9uQ29weTogVG9vbGJhckJ1dHRvbiAmIHsgaWNvblVybD86IHN0cmluZyB9ID0gb2JqZWN0Q2xvbmUoYnV0dG9uKTtcblxuXHRidXR0b25Db3B5Lmljb25VcmwgPSB0aGVtZVVybChidXR0b25Db3B5Lmljb25VcmwsIGljb25Gb2xkZXIsIGNvbG9yU2NoZW1lTW9kZSk7XG5cblx0cmV0dXJuIGJ1dHRvbkNvcHk7XG59XG5cbi8qKlxuICogQXBwbHkgYSB0aGVtZSB0byBhIHVybC5cbiAqIEBwYXJhbSB1cmwgVGhlIHVybCB0byBhcHBseSB0aGUgdGhlbWUgdG8uXG4gKiBAcGFyYW0gaWNvbkZvbGRlciBUaGUgZm9sZGVyIHdoZXJlIHRoZSBpY29ucyBhcmUgbG9jYXRlZC5cbiAqIEBwYXJhbSBjb2xvclNjaGVtZU1vZGUgVGhlIGNvbG9yIHNjaGVtZSBmb3IgdGhlIHRoZW1lLlxuICogQHJldHVybnMgVGhlIHRoZW1lZCB1cmwuXG4gKi9cbmZ1bmN0aW9uIHRoZW1lVXJsKFxuXHR1cmw6IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0aWNvbkZvbGRlcjogc3RyaW5nLFxuXHRjb2xvclNjaGVtZU1vZGU6IENvbG9yU2NoZW1lTW9kZVxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIHVybCA/IHVybC5yZXBsYWNlKC97dGhlbWV9L2csIGljb25Gb2xkZXIpLnJlcGxhY2UoL3tzY2hlbWV9L2csIGNvbG9yU2NoZW1lTW9kZSkgOiB1bmRlZmluZWQ7XG59XG4iLCJpbXBvcnQgdHlwZSB7IFdvcmtzcGFjZVBsYXRmb3JtTW9kdWxlIH0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZS1wbGF0Zm9ybVwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBpbml0aWFsaXplTW9kdWxlcywgbG9hZE1vZHVsZXMgfSBmcm9tIFwiLi9tb2R1bGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdENvbmRpdGlvbkNvbnRleHRUeXBlcyxcblx0Q29uZGl0aW9uTWFwLFxuXHRDb25kaXRpb25zLFxuXHRDb25kaXRpb25zUHJvdmlkZXJPcHRpb25zXG59IGZyb20gXCIuL3NoYXBlcy9jb25kaXRpb25zLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVEZWZpbml0aW9uLCBNb2R1bGVFbnRyeSwgTW9kdWxlSGVscGVycyB9IGZyb20gXCIuL3NoYXBlcy9tb2R1bGUtc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiQ29uZGl0aW9uUHJvdmlkZXJcIik7XG5jb25zdCBhbGxDb25kaXRpb25zOiBDb25kaXRpb25NYXAgPSB7fTtcbmxldCBtb2R1bGVzOiBNb2R1bGVFbnRyeTxDb25kaXRpb25zLCB1bmtub3duLCB1bmtub3duLCBNb2R1bGVEZWZpbml0aW9uPltdID0gW107XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgY29uZGl0aW9ucyBwcm92aWRlci5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSBjb25kaXRpb25zIHByb3ZpZGVyLlxuICogQHBhcmFtIGhlbHBlcnMgTW9kdWxlIGhlbHBlcnMgdG8gcGFzcyB0byBhbnkgbG9hZGVkIG1vZHVsZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KFxuXHRvcHRpb25zOiBDb25kaXRpb25zUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkLFxuXHRoZWxwZXJzOiBNb2R1bGVIZWxwZXJzXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKG9wdGlvbnMpIHtcblx0XHRtb2R1bGVzID0gYXdhaXQgbG9hZE1vZHVsZXM8Q29uZGl0aW9ucz4ob3B0aW9ucywgXCJjb25kaXRpb25zXCIpO1xuXHRcdGF3YWl0IGluaXRpYWxpemVNb2R1bGVzPENvbmRpdGlvbnM+KG1vZHVsZXMsIGhlbHBlcnMpO1xuXG5cdFx0bG9nZ2VyLmluZm8oXCJHZXR0aW5nIGNvbmRpdGlvbnMuLi5cIik7XG5cdFx0Zm9yIChjb25zdCBjb25kaXRpb25Nb2R1bGUgb2YgbW9kdWxlcykge1xuXHRcdFx0Y29uc3QgY29uZGl0aW9ucyA9IGF3YWl0IGNvbmRpdGlvbk1vZHVsZS5pbXBsZW1lbnRhdGlvbi5nZXQoKTtcblx0XHRcdGZvciAoY29uc3QgY29uZGl0aW9uIGluIGNvbmRpdGlvbnMpIHtcblx0XHRcdFx0YWxsQ29uZGl0aW9uc1tjb25kaXRpb25dID0gY29uZGl0aW9uc1tjb25kaXRpb25dO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgQWRkZWQgY29uZGl0aW9uOiAke2NvbmRpdGlvbn1gKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0bG9nZ2VyLmluZm8oXCJGaW5pc2hlZCBnZXR0aW5nIGNvbmRpdGlvbnMuXCIpO1xuXHR9XG59XG5cbi8qKlxuICogTWFudWFsbHkgcmVnaXN0ZXIgYSBjb25kaXRpb24uXG4gKiBAcGFyYW0gY29uZGl0aW9uTmFtZSBUaGUgbmFtZSBvZiB0aGUgY29uZGl0aW9uLlxuICogQHBhcmFtIGNvbmRpdGlvbkNoZWNrZXIgVGhlIG1ldGhvZCB0byBjYWxsIHRvIGNoZWNrIHRoZSBjb25kaXRpb24uXG4gKiBAcGFyYW0gb3ZlcnJpZGUgT3ZlcnJpZGUgYW4gZXhpc3RpbmcgY29uZGl0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJDb25kaXRpb24oXG5cdGNvbmRpdGlvbk5hbWU6IHN0cmluZyxcblx0Y29uZGl0aW9uQ2hlY2tlcjogKCkgPT4gUHJvbWlzZTxib29sZWFuPixcblx0b3ZlcnJpZGU6IGJvb2xlYW4gPSB0cnVlXG4pOiB2b2lkIHtcblx0aWYgKCFpc0VtcHR5KGFsbENvbmRpdGlvbnNbY29uZGl0aW9uTmFtZV0pKSB7XG5cdFx0aWYgKG92ZXJyaWRlKSB7XG5cdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XCJSZXBsYWNpbmcgZXhpc3RpbmcgY29uZGl0aW9uIGNoZWNrZXIgdGhhdCBoYXMgYmVlbiByZWdpc3RlcmVkIHdpdGggdGhpcyBuYW1lOlwiLFxuXHRcdFx0XHRjb25kaXRpb25OYW1lXG5cdFx0XHQpO1xuXHRcdFx0YWxsQ29uZGl0aW9uc1tjb25kaXRpb25OYW1lXSA9IGNvbmRpdGlvbkNoZWNrZXI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcIk5vdCByZXBsYWNpbmcgZXhpc3RpbmcgY29uZGl0aW9uIGNoZWNrZXIgdGhhdCBoYXMgYmVlbiByZWdpc3RlcmVkIHdpdGggdGhpcyBuYW1lOlwiLFxuXHRcdFx0XHRjb25kaXRpb25OYW1lXG5cdFx0XHQpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRsb2dnZXIuaW5mbyhcIlJlZ2lzdGVyaW5nIGNvbmRpdGlvblwiLCBjb25kaXRpb25OYW1lKTtcblx0XHRhbGxDb25kaXRpb25zW2NvbmRpdGlvbk5hbWVdID0gY29uZGl0aW9uQ2hlY2tlcjtcblx0fVxufVxuXG4vKipcbiAqIENoZWNrIHRoZSBjb25kaXRpb24gdG8gc2VlIGlmIGFsbCBvZiB0aGUgY29uZGl0aW9ucyBhcmUgdHJ1ZS5cbiAqIEBwYXJhbSBwbGF0Zm9ybSBUaGUgcGxhdGZvcm0uXG4gKiBAcGFyYW0gY29uZGl0aW9uSWRzIFRoZSBjb25kaXRpb25zIHRvIGNoZWNrLlxuICogQHBhcmFtIGNvbnRleHQgVGhlIGNvbnRleHQgb2YgdGhlIGNhbGxlci5cbiAqIEByZXR1cm5zIFRydWUgaWYgYWxsIG9mIHRoZSBjb25kaXRpb25zIGFyZSB0cnVlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tDb25kaXRpb25zKFxuXHRwbGF0Zm9ybTogV29ya3NwYWNlUGxhdGZvcm1Nb2R1bGUsXG5cdGNvbmRpdGlvbklkczogc3RyaW5nW10gfCB1bmRlZmluZWQsXG5cdGNvbnRleHQ/OiBDb25kaXRpb25Db250ZXh0VHlwZXNcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRpZiAoQXJyYXkuaXNBcnJheShjb25kaXRpb25JZHMpKSB7XG5cdFx0Zm9yIChjb25zdCBjb25kaXRpb25JZCBvZiBjb25kaXRpb25JZHMpIHtcblx0XHRcdGlmICghKGF3YWl0IGNoZWNrQ29uZGl0aW9uKHBsYXRmb3JtLCBjb25kaXRpb25JZCwgY29udGV4dCkpKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBDaGVjayB0byBzZWUgaWYgYSBzaW5nbGUgY29uZGl0aW9uIGlzIHRydWUuXG4gKiBAcGFyYW0gcGxhdGZvcm0gVGhlIHBsYXRmb3JtLlxuICogQHBhcmFtIGNvbmRpdGlvbklkIFRoZSBjb25kaXRpb24gdG8gY2hlY2suXG4gKiBAcGFyYW0gY29udGV4dCBUaGUgY29udGV4dCBvZiB0aGUgY2FsbGVyLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgY29uZGl0aW9uIGlzIHRydWUsIG9yIGl0IGRvZXMgbm90IGV4aXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tDb25kaXRpb24oXG5cdHBsYXRmb3JtOiBXb3Jrc3BhY2VQbGF0Zm9ybU1vZHVsZSxcblx0Y29uZGl0aW9uSWQ6IHN0cmluZyxcblx0Y29udGV4dD86IENvbmRpdGlvbkNvbnRleHRUeXBlc1xuKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGlmIChpc0VtcHR5KGFsbENvbmRpdGlvbnNbY29uZGl0aW9uSWRdKSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRyZXR1cm4gYWxsQ29uZGl0aW9uc1tjb25kaXRpb25JZF0ocGxhdGZvcm0sIGNvbnRleHQpO1xufVxuIiwiaW1wb3J0IHR5cGUgT3BlbkZpbiBmcm9tIFwiQG9wZW5maW4vY29yZVwiO1xuaW1wb3J0ICogYXMgZW5kcG9pbnRQcm92aWRlciBmcm9tIFwiLi9lbmRwb2ludFwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBNQU5JRkVTVF9UWVBFUyB9IGZyb20gXCIuL21hbmlmZXN0LXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFBsYXRmb3JtQXBwIH0gZnJvbSBcIi4vc2hhcGVzL2FwcC1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0QXBwU291cmNlQ29ubmVjdGlvbixcblx0Q29ubmVjdGlvbixcblx0Q29ubmVjdGlvblBheWxvYWRWZXJpZmljYXRpb25SZXF1ZXN0LFxuXHRDb25uZWN0aW9uUGF5bG9hZFZlcmlmaWNhdGlvblJlc3BvbnNlLFxuXHRDb25uZWN0aW9uUHJvdmlkZXJPcHRpb25zLFxuXHRDb25uZWN0aW9uVmFsaWRhdGlvbk9wdGlvbnMsXG5cdENvbm5lY3Rpb25WYWxpZGF0aW9uUmVzcG9uc2UsXG5cdFNuYXBzaG90U291cmNlQ29ubmVjdGlvblxufSBmcm9tIFwiLi9zaGFwZXMvY29ubmVjdGlvbi1zaGFwZXNcIjtcbmltcG9ydCB7IGlzRW1wdHksIGlzU3RyaW5nVmFsdWUsIG9iamVjdENsb25lIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQVBQX1NPVVJDRV9UWVBFX0lEID0gXCJhcHBTb3VyY2VcIjtcbmNvbnN0IFNOQVBTSE9UX1NPVVJDRV9UWVBFX0lEID0gXCJzbmFwc2hvdFNvdXJjZVwiO1xuY29uc3QgQUNUSU9OU19UWVBFX0lEID0gXCJhY3Rpb25zXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIkNvbm5lY3Rpb25zXCIpO1xuXG5jb25zdCBjb25uZWN0ZWRDbGllbnRzOiB7IFtrZXk6IHN0cmluZ106IENvbm5lY3Rpb24gfSA9IHt9O1xuY29uc3QgcmVnaXN0ZXJlZEFjdGlvbnM6IHsgW2tleTogc3RyaW5nXTogKCkgPT4gUHJvbWlzZTx2b2lkPiB9ID0ge307XG5sZXQgY29ubmVjdGlvbk9wdGlvbnM6IENvbm5lY3Rpb25Qcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQ7XG5sZXQgY29ubmVjdGlvblNlcnZpY2U6IE9wZW5GaW4uQ2hhbm5lbFByb3ZpZGVyO1xubGV0IGluaXRpYWxpemVkID0gZmFsc2U7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgY29ubmVjdGlvbnMuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0byBpbml0aWFsaXplIHRoZSBjb25uZWN0aW9ucy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQob3B0aW9uczogQ29ubmVjdGlvblByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoaW5pdGlhbGl6ZWQpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpbml0aWFsaXplZCA9IHRydWU7XG5cdGNvbm5lY3Rpb25PcHRpb25zID0gb3B0aW9ucztcblxuXHRjb25zdCBjb25uZWN0aW9uSWQgPSBjb25uZWN0aW9uT3B0aW9ucz8uY29ubmVjdGlvbklkO1xuXHRpZiAoIWlzRW1wdHkoY29ubmVjdGlvbklkKSkge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25uZWN0aW9uU2VydmljZSA9IGF3YWl0IGZpbi5JbnRlckFwcGxpY2F0aW9uQnVzLkNoYW5uZWwuY3JlYXRlKFxuXHRcdFx0XHRgJHtmaW4ubWUuaWRlbnRpdHkudXVpZH0tJHtjb25uZWN0aW9uSWR9YFxuXHRcdFx0KTtcblx0XHRcdGxvZ2dlci5pbmZvKFwiQ29uZmlndXJpbmcgY29ubmVjdGlvbiBwcm92aWRlclwiKTtcblx0XHRcdGNvbm5lY3Rpb25TZXJ2aWNlLm9uQ29ubmVjdGlvbihhc3luYyAoaWRlbnRpdHksIHBheWxvYWQpID0+IHtcblx0XHRcdFx0Ly8gY2FuIHJlamVjdCBhIGNvbm5lY3Rpb24gaGVyZSBieSB0aHJvd2luZyBhbiBlcnJvclxuXHRcdFx0XHRsb2dnZXIuaW5mbyhcIkNsaWVudCBjb25uZWN0aW9uIHJlcXVlc3QgaWRlbnRpdHlcIiwgSlNPTi5zdHJpbmdpZnkoaWRlbnRpdHkpKTtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJDbGllbnQgY29ubmVjdGlvbiBoYXMgcmVxdWVzdCBwYXlsb2FkXCIsICFpc0VtcHR5KHBheWxvYWQpKTtcblxuXHRcdFx0XHRjb25zdCB2YWxpZGF0ZWRDb25uZWN0aW9uID0gYXdhaXQgZ2V0Q29ubmVjdGlvbkxpc3RpbmcoaWRlbnRpdHkpO1xuXHRcdFx0XHRsZXQgaXNWYWxpZCA9IGZhbHNlO1xuXHRcdFx0XHRsZXQgZXJyb3JNZXNzYWdlID1cblx0XHRcdFx0XHRcIlRoaXMgY29ubmVjdGlvbiBoYXMgZmFpbGVkIHRoZSB2YWxpZGF0aW9uIGNoZWNrIGFuZCBjYW5ub3QgY29ubmVjdCB0byB0aGUgcmVxdWVzdGVkIGFwcGxpY2F0aW9uXCI7XG5cdFx0XHRcdGlmICghaXNFbXB0eSh2YWxpZGF0ZWRDb25uZWN0aW9uKSkge1xuXHRcdFx0XHRcdGlzVmFsaWQgPSB0cnVlO1xuXHRcdFx0XHRcdGlmICh2YWxpZGF0ZWRDb25uZWN0aW9uLnZhbGlkYXRlUGF5bG9hZCkge1xuXHRcdFx0XHRcdFx0Y29uc3QgcmVzcG9uc2UgPSBhd2FpdCBpc0Nvbm5lY3Rpb25WYWxpZChpZGVudGl0eSwgcGF5bG9hZCk7XG5cdFx0XHRcdFx0XHRpc1ZhbGlkID0gcmVzcG9uc2UuaXNWYWxpZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGlzVmFsaWQpIHtcblx0XHRcdFx0XHRcdGlmICghaXNFbXB0eShjb25uZWN0ZWRDbGllbnRzW2lkZW50aXR5LnV1aWRdKSkge1xuXHRcdFx0XHRcdFx0XHRpc1ZhbGlkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGVycm9yTWVzc2FnZSA9IGBUaGlzIHBsYXRmb3JtIGNhbiBvbmx5IGFjY2VwdCBvbmUgY29ubmVjdGlvbiBmcm9tIGFuIGV4dGVybmFsIGNvbm5lY3Rpb24uIFRoZSB1dWlkICgke2lkZW50aXR5LnV1aWR9KSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuYDtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdC8vIGFzc2lnbiB0aGUgcGFzc2VkIGlkZW50aXR5XG5cdFx0XHRcdFx0XHRcdHZhbGlkYXRlZENvbm5lY3Rpb24uaWRlbnRpdHkgPSBpZGVudGl0eTtcblx0XHRcdFx0XHRcdFx0Y29ubmVjdGVkQ2xpZW50c1tpZGVudGl0eS51dWlkXSA9IHZhbGlkYXRlZENvbm5lY3Rpb247XG5cdFx0XHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBUaGUgZm9sbG93aW5nIGNvbm5lY3Rpb24gaGFzIGJlZW4gYWRkZWQgdG8gdGhlIGNvbm5lY3RlZCBsaXN0OiAke2lkZW50aXR5LnV1aWR9YCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCFpc1ZhbGlkKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0XHRgVGhlIGZvbGxvd2luZyBjb25uZWN0aW9uIGhhcyBub3QgYmVlbiBhZGRlZCB0byB0aGUgY29ubmVjdGVkIGxpc3Q6ICR7aWRlbnRpdHkudXVpZH0gYXMgaXQgZmFpbGVkIHZhbGlkYXRpb25gXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdGNvbm5lY3Rpb25TZXJ2aWNlLm9uRGlzY29ubmVjdGlvbihhc3luYyAoaWRlbnRpdHkpID0+IHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYENsaWVudCBkaXNjb25uZWN0ZWQgdXVpZDogJHtpZGVudGl0eS51dWlkfSwgbmFtZTogJHtpZGVudGl0eS5uYW1lfWApO1xuXHRcdFx0XHRhd2FpdCBkaXNjb25uZWN0KGlkZW50aXR5KTtcblx0XHRcdH0pO1xuXG5cdFx0XHRjb25uZWN0aW9uU2VydmljZS5yZWdpc3RlcihcImFjdGlvblwiLCBhc3luYyAocGF5bG9hZCwgaWRlbnRpdHkpID0+IHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJBY3Rpb24gcmVjZWl2ZWQgZnJvbSBjbGllbnRcIiwgaWRlbnRpdHksIHBheWxvYWQpO1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBhd2FpdCBleGVjdXRlQWN0aW9uKGlkZW50aXR5LCBwYXlsb2FkIGFzIHsgYWN0aW9uOiBzdHJpbmcgfSk7XG5cdFx0XHRcdHJldHVybiB7IHJlc3VsdCB9O1xuXHRcdFx0fSk7XG5cblx0XHRcdGNvbm5lY3Rpb25TZXJ2aWNlLnJlZ2lzdGVyKFwiY2FuQWN0aW9uXCIsIGFzeW5jIChwYXlsb2FkLCBpZGVudGl0eSkgPT4ge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcIkNoZWNrIGZvciBhY3Rpb24gcGVybWlzc2lvbiByZWNlaXZlZCBmcm9tIGNsaWVudFwiLCBpZGVudGl0eSwgcGF5bG9hZCk7XG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IGlzQWN0aW9uU3VwcG9ydGVkKGlkZW50aXR5LCBwYXlsb2FkIGFzIHsgYWN0aW9uOiBzdHJpbmcgfSk7XG5cdFx0XHRcdHJldHVybiB7IHJlc3VsdCB9O1xuXHRcdFx0fSk7XG5cblx0XHRcdGNvbm5lY3Rpb25TZXJ2aWNlLnJlZ2lzdGVyKFwiZGlzY29ubmVjdFwiLCBhc3luYyAocGF5bG9hZCwgaWRlbnRpdHkpID0+IHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJSZXF1ZXN0IGZvciBkaXNjb25uZWN0aW9uIHJlY2VpdmVkIGZyb20gY2xpZW50XCIsIGlkZW50aXR5LCBwYXlsb2FkKTtcblx0XHRcdFx0YXdhaXQgZGlzY29ubmVjdChpZGVudGl0eSk7XG5cdFx0XHR9KTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XHRcIlRoZXJlIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gY3JlYXRlIHRoZSBjaGFubmVsIHRoYXQgd2lsbCBhY3QgYXMgY29ubmVjdGlvbiBwcm92aWRlci4gVGhpcyBmdW5jdGlvbmFsaXR5IHdpbGwgbm90IGJlIGF2YWlsYWJsZVwiLFxuXHRcdFx0XHRlcnJvclxuXHRcdFx0KTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyLmluZm8oXCJUaGlzIHBsYXRmb3JtIGlzIG5vdCBjb25maWd1cmVkIHRvIHN1cHBvcnQgYSBjb25uZWN0aW9uUHJvdmlkZXJcIik7XG5cdH1cbn1cblxuLyoqXG4gKiBNYW51YWxseSByZWdpc3RlciBhbiBhY3Rpb24uXG4gKiBAcGFyYW0gYWN0aW9uTmFtZSBUaGUgbmFtZSBvZiB0aGUgYWN0aW9ucy5cbiAqIEBwYXJhbSBhY3Rpb24gVGhlIGFjdGlvbnMgbWV0aG9kIHRvIGNhbGwuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBhY3Rpb24gd2FzIHJlZ2lzdGVyZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckFjdGlvbihhY3Rpb25OYW1lOiBzdHJpbmcsIGFjdGlvbjogKCkgPT4gUHJvbWlzZTx2b2lkPik6IGJvb2xlYW4ge1xuXHRpZiAoaXNFbXB0eShyZWdpc3RlcmVkQWN0aW9uc1thY3Rpb25OYW1lXSkpIHtcblx0XHRsb2dnZXIuaW5mbyhgQWRkaW5nIGFjdGlvbiAke2FjdGlvbk5hbWV9IHRvIGF2YWlsYWJsZSBhY3Rpb25zIGxpc3RgKTtcblx0XHRyZWdpc3RlcmVkQWN0aW9uc1thY3Rpb25OYW1lXSA9IGFjdGlvbjtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRsb2dnZXIud2FybihgTm90IGFkZGluZyBhY3Rpb24gJHthY3Rpb25OYW1lfSB0byBhdmFpbGFibGUgYWN0aW9ucyBsaXN0IGFzIGl0IGlzIGFscmVhZHkgcmVnaXN0ZXJlZGApO1xuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogUmVtb3ZlIGEgcmVnaXN0ZXJlZCBhY3Rpb25zLlxuICogQHBhcmFtIGFjdGlvbk5hbWUgVGhlIG5hbWUgb2YgdGhlIGFjdGlvbiB0byByZW1vdmUuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBhY3Rpb24gd2FzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckFjdGlvbihhY3Rpb25OYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0aWYgKGlzRW1wdHkocmVnaXN0ZXJlZEFjdGlvbnNbYWN0aW9uTmFtZV0pKSB7XG5cdFx0bG9nZ2VyLndhcm4oYENhbm5vdCByZW1vdmUgYWN0aW9uICR7YWN0aW9uTmFtZX0gZnJvbSBhdmFpbGFibGUgYWN0aW9ucyBsaXN0IGFzIGl0IGlzIG5vdCByZWdpc3RlcmVkYCk7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGRlbGV0ZSByZWdpc3RlcmVkQWN0aW9uc1thY3Rpb25OYW1lXTtcblx0bG9nZ2VyLmluZm8oYEFjdGlvbiAke2FjdGlvbk5hbWV9IGNsZWFyZWQgZnJvbSBhdmFpbGFibGUgYWN0aW9ucyBsaXN0YCk7XG5cdHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEdldCBhbnkgY29ubmVjdGlvbnMgdGhhdCBzdXBwb3J0IGFwcHMuXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBjb25uZWN0aW9ucyBzdXBwb3J0aW5nIGFwcHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDb25uZWN0ZWRBcHBTb3VyY2VDbGllbnRzKCk6IFByb21pc2U8XG5cdHtcblx0XHRpZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eTtcblx0XHRjb25uZWN0aW9uRGF0YTogQXBwU291cmNlQ29ubmVjdGlvbjtcblx0fVtdXG4+IHtcblx0Y29uc3QgY29ubmVjdGlvbnNUb1JldHVybjoge1xuXHRcdGlkZW50aXR5OiBPcGVuRmluLklkZW50aXR5O1xuXHRcdGNvbm5lY3Rpb25EYXRhOiBBcHBTb3VyY2VDb25uZWN0aW9uO1xuXHR9W10gPSBbXTtcblxuXHRjb25zdCBhdmFpbGFibGVDb25uZWN0aW9ucyA9IE9iamVjdC52YWx1ZXMoY29ubmVjdGVkQ2xpZW50cyk7XG5cdGZvciAoY29uc3QgY29ubmVjdGlvbiBvZiBhdmFpbGFibGVDb25uZWN0aW9ucykge1xuXHRcdGNvbnN0IG1hdGNoZWRDb25uZWN0aW9uID0gY29ubmVjdGlvbi5jb25uZWN0aW9uVHlwZXMuZmluZChcblx0XHRcdChzdXBwb3J0ZWRDb25uZWN0aW9uVHlwZSkgPT4gc3VwcG9ydGVkQ29ubmVjdGlvblR5cGUudHlwZSA9PT0gQVBQX1NPVVJDRV9UWVBFX0lEXG5cdFx0KTtcblxuXHRcdGlmIChtYXRjaGVkQ29ubmVjdGlvbj8udHlwZSA9PT0gQVBQX1NPVVJDRV9UWVBFX0lEKSB7XG5cdFx0XHRjb25uZWN0aW9uc1RvUmV0dXJuLnB1c2goeyBpZGVudGl0eTogY29ubmVjdGlvbi5pZGVudGl0eSwgY29ubmVjdGlvbkRhdGE6IG1hdGNoZWRDb25uZWN0aW9uIH0pO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjb25uZWN0aW9uc1RvUmV0dXJuO1xufVxuXG4vKipcbiAqIEdldCBhbnkgY29ubmVjdGVkIGFwcHMuXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBjb25uZWN0ZWQgYXBwcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENvbm5lY3RlZEFwcHMoKTogUHJvbWlzZTxQbGF0Zm9ybUFwcFtdPiB7XG5cdGNvbnN0IGNvbm5lY3RlZFNvdXJjZXMgPSBhd2FpdCBnZXRDb25uZWN0ZWRBcHBTb3VyY2VDbGllbnRzKCk7XG5cdGNvbnN0IGFwcHM6IFBsYXRmb3JtQXBwW10gPSBbXTtcblxuXHRmb3IgKGNvbnN0IGNvbm5lY3RlZFNvdXJjZSBvZiBjb25uZWN0ZWRTb3VyY2VzKSB7XG5cdFx0Y29uc3QgY29ubmVjdGlvbkFwcHM6IFBsYXRmb3JtQXBwW10gPSBhd2FpdCBjb25uZWN0aW9uU2VydmljZS5kaXNwYXRjaChcblx0XHRcdGNvbm5lY3RlZFNvdXJjZS5pZGVudGl0eSxcblx0XHRcdFwiZ2V0QXBwc1wiXG5cdFx0KTtcblx0XHRjb25zdCBzdXBwb3J0ZWRNYW5pZmVzdFR5cGVzOiBzdHJpbmdbXSA9IGNvbm5lY3RlZFNvdXJjZT8uY29ubmVjdGlvbkRhdGE/Lm1hbmlmZXN0VHlwZXMgPz8gW107XG5cdFx0bGV0IHZhbGlkYXRlZEFwcHM6IFBsYXRmb3JtQXBwW10gPSBbXTtcblx0XHRpZiAoc3VwcG9ydGVkTWFuaWZlc3RUeXBlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHR2YWxpZGF0ZWRBcHBzID0gY29ubmVjdGlvbkFwcHMuZmlsdGVyKFxuXHRcdFx0XHQoY29ubmVjdGlvbkFwcCkgPT5cblx0XHRcdFx0XHRjb25uZWN0aW9uQXBwLm1hbmlmZXN0VHlwZSAmJiBzdXBwb3J0ZWRNYW5pZmVzdFR5cGVzLmluY2x1ZGVzKGNvbm5lY3Rpb25BcHAubWFuaWZlc3RUeXBlKVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmFsaWRhdGVkQXBwcyA9IGNvbm5lY3Rpb25BcHBzO1xuXHRcdH1cblxuXHRcdGZvciAoY29uc3QgYXBwIG9mIHZhbGlkYXRlZEFwcHMpIHtcblx0XHRcdGlmIChhcHAubWFuaWZlc3RUeXBlID09PSBNQU5JRkVTVF9UWVBFUy5Db25uZWN0aW9uLmlkKSB7XG5cdFx0XHRcdC8vIGVuc3VyZSB0aGF0IGlmIGFuIGFwcCBmcm9tIGEgY29ubmVjdGlvbiBpcyBtYXJrZWQgYXMgY29ubmVjdGlvblxuXHRcdFx0XHQvLyB0aGVuIGl0IHNob3VsZCBvbmx5IGJlIHNlbnQgdG8gaXRzZWxmIGFuZCBub3QgYW5vdGhlciB1dWlkXG5cdFx0XHRcdGFwcC5tYW5pZmVzdCA9IGNvbm5lY3RlZFNvdXJjZS5pZGVudGl0eS51dWlkO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRhcHBzLnB1c2goLi4udmFsaWRhdGVkQXBwcyk7XG5cdH1cblxuXHRyZXR1cm4gYXBwcztcbn1cblxuLyoqXG4gKiBMYXVuY2ggYSBjb25uZWN0ZWQgYXBwLlxuICogQHBhcmFtIGFwcCBUaGUgYXBwIHRvIGxhdW5jaC5cbiAqIEByZXR1cm5zIFRoZSBpZGVudGl0eSBvZiB0aGUgY29ubmVjdGlvbiBhcHAuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsYXVuY2hDb25uZWN0ZWRBcHAoYXBwOiBQbGF0Zm9ybUFwcCk6IFByb21pc2U8T3BlbkZpbi5JZGVudGl0eSB8IHVuZGVmaW5lZD4ge1xuXHRjb25zdCBjb25uZWN0ZWRTb3VyY2VzID0gYXdhaXQgZ2V0Q29ubmVjdGVkQXBwU291cmNlQ2xpZW50cygpO1xuXHRjb25zdCBjb25uZWN0ZWRTb3VyY2UgPSBjb25uZWN0ZWRTb3VyY2VzLmZpbmQoKGVudHJ5KSA9PiBlbnRyeS5pZGVudGl0eS51dWlkID09PSBhcHAubWFuaWZlc3QpO1xuXHRpZiAoYXBwLm1hbmlmZXN0VHlwZSA9PT0gTUFOSUZFU1RfVFlQRVMuQ29ubmVjdGlvbi5pZCAmJiAhaXNFbXB0eShjb25uZWN0ZWRTb3VyY2UpKSB7XG5cdFx0bG9nZ2VyLmluZm8oYExhdW5jaGluZyBhcHA6ICR7YXBwLmFwcElkfSBhZ2FpbnN0IGNvbm5lY3Rpb246ICR7Y29ubmVjdGVkU291cmNlLmlkZW50aXR5LnV1aWR9YCk7XG5cdFx0YXdhaXQgY29ubmVjdGlvblNlcnZpY2UuZGlzcGF0Y2goY29ubmVjdGVkU291cmNlLmlkZW50aXR5LCBcImxhdW5jaEFwcFwiLCBhcHApO1xuXHRcdHJldHVybiBjb25uZWN0ZWRTb3VyY2UuaWRlbnRpdHk7XG5cdH1cblx0bG9nZ2VyLndhcm4oXG5cdFx0YEEgcmVxdWVzdCB0byBsYXVuY2ggYXBwICR7YXBwLmFwcElkfSB3YXMgbm90IHN1Y2Nlc3NmdWwuIEVpdGhlciB0aGUgbWFuaWZlc3RUeXBlIGlzIG5vdCAke01BTklGRVNUX1RZUEVTLkNvbm5lY3Rpb24uaWR9OiR7YXBwLm1hbmlmZXN0VHlwZX0gb3IgdGhlIGNvbm5lY3Rpb24gJHthcHAubWFuaWZlc3R9IGlzIGVpdGhlciBub3QgcmVnaXN0ZXJlZCBpbiB0aGUgY29ubmVjdGlvblByb3ZpZGVyIHdpdGggJHtBUFBfU09VUkNFX1RZUEVfSUR9IHN1cHBvcnQgb3IgaGFzbid0IGNvbm5lY3RlZCB0byB0aGlzIHBsYXRmb3JtLmBcblx0KTtcbn1cblxuLyoqXG4gKiBHZXQgY29ubmVjdGlvbiBzbmFwc2hvdCBzb3VyY2UgY2xpZW50cy5cbiAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGNvbm5lY3RlZCBzbmFwc2hvdCBzb3VyY2UgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENvbm5lY3RlZFNuYXBzaG90U291cmNlQ2xpZW50cygpOiBQcm9taXNlPFxuXHR7IGlkZW50aXR5OiBPcGVuRmluLklkZW50aXR5OyBjb25uZWN0aW9uRGF0YTogU25hcHNob3RTb3VyY2VDb25uZWN0aW9uIH1bXVxuPiB7XG5cdGNvbnN0IGNvbm5lY3Rpb25zVG9SZXR1cm46IHsgaWRlbnRpdHk6IE9wZW5GaW4uSWRlbnRpdHk7IGNvbm5lY3Rpb25EYXRhOiBTbmFwc2hvdFNvdXJjZUNvbm5lY3Rpb24gfVtdID0gW107XG5cblx0Y29uc3QgYXZhaWxhYmxlQ29ubmVjdGlvbnMgPSBPYmplY3QudmFsdWVzKGNvbm5lY3RlZENsaWVudHMpO1xuXHRmb3IgKGNvbnN0IGNvbm5lY3Rpb24gb2YgYXZhaWxhYmxlQ29ubmVjdGlvbnMpIHtcblx0XHRjb25zdCBtYXRjaGVkQ29ubmVjdGlvbiA9IGNvbm5lY3Rpb24uY29ubmVjdGlvblR5cGVzLmZpbmQoXG5cdFx0XHQoc3VwcG9ydGVkQ29ubmVjdGlvblR5cGUpID0+IHN1cHBvcnRlZENvbm5lY3Rpb25UeXBlLnR5cGUgPT09IFNOQVBTSE9UX1NPVVJDRV9UWVBFX0lEXG5cdFx0KTtcblxuXHRcdGlmIChtYXRjaGVkQ29ubmVjdGlvbj8udHlwZSA9PT0gU05BUFNIT1RfU09VUkNFX1RZUEVfSUQpIHtcblx0XHRcdGNvbm5lY3Rpb25zVG9SZXR1cm4ucHVzaCh7IGlkZW50aXR5OiBjb25uZWN0aW9uLmlkZW50aXR5LCBjb25uZWN0aW9uRGF0YTogbWF0Y2hlZENvbm5lY3Rpb24gfSk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGNvbm5lY3Rpb25zVG9SZXR1cm47XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBjb25uZWN0aW9uIGlzIHZhbGlkLlxuICogQHBhcmFtIGlkZW50aXR5IFRoZSBpZGVudGl0eSBvZiB0aGUgY29ubmVjdGlvbiB0byBjaGVjay5cbiAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIHRvIHBhc3Mgd2hlbiBjaGVja2luZyB0aGUgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBjaGVja2luZyB0aGUgY29ubmVjdGlvbi5cbiAqIEByZXR1cm5zIFJlc3BvbnNlIGRldGVybWluaW5nIGlmIHRoZSBjb25uZWN0aW9uIGlzIHZhbGlkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNDb25uZWN0aW9uVmFsaWQ8VD4oXG5cdGlkZW50aXR5OiBPcGVuRmluLklkZW50aXR5LFxuXHRwYXlsb2FkPzogdW5rbm93bixcblx0b3B0aW9ucz86IENvbm5lY3Rpb25WYWxpZGF0aW9uT3B0aW9uczxUPlxuKTogUHJvbWlzZTxDb25uZWN0aW9uVmFsaWRhdGlvblJlc3BvbnNlPiB7XG5cdGNvbnN0IHJlc3BvbnNlVG9SZXR1cm46IENvbm5lY3Rpb25WYWxpZGF0aW9uUmVzcG9uc2UgPSB7IGlzVmFsaWQ6IGZhbHNlIH07XG5cblx0dHJ5IHtcblx0XHRpZiAoaXNFbXB0eShpZGVudGl0eT8udXVpZCkpIHtcblx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcIkFuIGlkZW50aXR5IHdpdGhvdXQgYSBVVUlEIHdhcyBwYXNzZWQgdG8gdGhlIHZhbGlkYXRlIGNvbm5lY3Rpb24gZnVuY3Rpb24uIFZhbGlkYXRpb24gY2Fubm90IGhhcHBlbi5cIixcblx0XHRcdFx0aWRlbnRpdHksXG5cdFx0XHRcdG9wdGlvbnNcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm4gcmVzcG9uc2VUb1JldHVybjtcblx0XHR9XG5cblx0XHRpZiAoaXNFbXB0eShjb25uZWN0aW9uT3B0aW9ucz8uY29ubmVjdGlvbnMpKSB7XG5cdFx0XHRpZiAob3B0aW9ucz8udHlwZSA9PT0gXCJicm9rZXJcIikge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0XHRcIk5vIGNvbm5lY3Rpb24gcHJvdmlkZXIgb3B0aW9ucyBzcGVjaWZpZWQgYW5kIGJyb2tlciBjb25uZWN0aW9uIHJlcXVlc3RlZC4gSW1wbGVtZW50aW5nIGRlZmF1bHQgYnJva2VyIGJlaGF2aW9yIHdoaWNoIGlzIHRvIGFsbG93IGEgY29ubmVjdGlvbi5cIlxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXNwb25zZVRvUmV0dXJuLmlzVmFsaWQgPSB0cnVlO1xuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2VUb1JldHVybjtcblx0XHRcdH1cblx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcIkEgY29ubmVjdGlvbiB2ZXJpZmljYXRpb24gcmVxdWVzdCB3YXMgbWFkZSBidXQgY29ubmVjdGlvbiBwcm92aWRlciBvcHRpb25zIGhhdmUgbm90IGJlZW4gZGVmaW5lZCBzbyB3ZSBjYW5ub3QgdmFsaWRhdGUgdGhlIGNvbm5lY3Rpb24gcmVxdWVzdC5cIlxuXHRcdFx0KTtcblx0XHRcdHJldHVybiByZXNwb25zZVRvUmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IGxpc3RlZENvbm5lY3Rpb24gPSBhd2FpdCBnZXRDb25uZWN0aW9uTGlzdGluZyhpZGVudGl0eSk7XG5cblx0XHRpZiAoaXNFbXB0eShsaXN0ZWRDb25uZWN0aW9uKSkge1xuXHRcdFx0bG9nZ2VyLndhcm4oXCJDb25uZWN0aW9uIGlzIG5vdCBhbGxvd2VkIHNvIHVuYWJsZSB0byB2YWxpZGF0ZSByZXF1ZXN0XCIsIGlkZW50aXR5KTtcblx0XHRcdHJldHVybiByZXNwb25zZVRvUmV0dXJuO1xuXHRcdH1cblx0XHRpZiAobGlzdGVkQ29ubmVjdGlvbi52YWxpZGF0ZVBheWxvYWQpIHtcblx0XHRcdGNvbnN0IGNvbm5lY3Rpb25WYWxpZGF0aW9uRW5kcG9pbnQgPSBjb25uZWN0aW9uT3B0aW9ucz8uY29ubmVjdGlvblZhbGlkYXRpb25FbmRwb2ludDtcblx0XHRcdGlmICghaXNTdHJpbmdWYWx1ZShjb25uZWN0aW9uVmFsaWRhdGlvbkVuZHBvaW50KSkge1xuXHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRcIlRoaXMgY29ubmVjdGlvbiBoYXMgYmVlbiBkZWZpbmVkIGFzIHJlcXVpcmluZyBwYXlsb2FkIHZlcmlmaWNhdGlvbiBidXQgdGhlIHBsYXRmb3JtIGhhcyBub3QgcHJvdmlkZWQgYSBjb25uZWN0aW9uIHZhbGlkYXRpb24gZW5kcG9pbnQgdG8gdXNlIGZvciB0aGUgdmVyaWZpY2F0aW9uIHByb2Nlc3MuIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB0aGlzIGNvbm5lY3Rpb24gaXMgdmFsaWQgdW5sZXNzIHRoZSBicm9rZXIgc3BlY2lmaWVzIGl0IHdpc2hlcyB0byB2YWxpZGF0ZS5cIlxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXNwb25zZVRvUmV0dXJuLmlzVmFsaWQgPSB0cnVlO1xuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2VUb1JldHVybjtcblx0XHRcdH1cblx0XHRcdGlmIChlbmRwb2ludFByb3ZpZGVyLmhhc0VuZHBvaW50KGNvbm5lY3Rpb25WYWxpZGF0aW9uRW5kcG9pbnQpKSB7XG5cdFx0XHRcdGNvbnN0IHJlcXVlc3QgPSB7IGlkZW50aXR5LCBwYXlsb2FkLCBvcHRpb25zIH07XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBDb25uZWN0aW9uIHZhbGlkYXRpb24gYmVpbmcgaGFuZGxlZCBieSBlbmRwb2ludDogJHtjb25uZWN0aW9uVmFsaWRhdGlvbkVuZHBvaW50fWApO1xuXHRcdFx0XHRjb25zdCByZXNwb25zZSA9IGF3YWl0IGVuZHBvaW50UHJvdmlkZXIucmVxdWVzdFJlc3BvbnNlPFxuXHRcdFx0XHRcdENvbm5lY3Rpb25QYXlsb2FkVmVyaWZpY2F0aW9uUmVxdWVzdCxcblx0XHRcdFx0XHRDb25uZWN0aW9uUGF5bG9hZFZlcmlmaWNhdGlvblJlc3BvbnNlXG5cdFx0XHRcdD4oY29ubmVjdGlvblZhbGlkYXRpb25FbmRwb2ludCwgcmVxdWVzdCk7XG5cdFx0XHRcdGlmICghcmVzcG9uc2U/LmlzVmFsaWQpIHtcblx0XHRcdFx0XHRsb2dnZXIud2FybihgQ29ubmVjdGlvbiB2YWxpZGF0aW9uIHJlcXVlc3QgZm9yICR7SlNPTi5zdHJpbmdpZnkoaWRlbnRpdHkpfSBmYWlsZWQgdmFsaWRhdGlvbmApO1xuXHRcdFx0XHRcdHJldHVybiByZXNwb25zZVRvUmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiQ29ubmVjdGlvbiBoYXMgcGFzc2VkIHZhbGlkYXRpb24uXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0XCJUaGlzIGNvbm5lY3Rpb24gaGFzIGJlZW4gZGVmaW5lZCBhcyByZXF1aXJpbmcgcGF5bG9hZCB2ZXJpZmljYXRpb24gYnV0IHRoZSBzcGVjaWZpZWQgY29ubmVjdGlvblZhbGlkYXRpb25FbmRwb2ludCBpcyBub3QgYSB2YWxpZCBlbmRwb2ludC5cIlxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2VUb1JldHVybjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCBvcHRpb25zVHlwZSA9IG9wdGlvbnM/LnR5cGU7XG5cdFx0aWYgKCFpc0VtcHR5KG9wdGlvbnNUeXBlKSkge1xuXHRcdFx0Y29uc3Qgc3VwcG9ydGVkVHlwZSA9IGxpc3RlZENvbm5lY3Rpb24uY29ubmVjdGlvblR5cGVzLmZpbmQoKGVudHJ5KSA9PiBlbnRyeS50eXBlID09PSBvcHRpb25zVHlwZSk7XG5cdFx0XHRpZiAoaXNFbXB0eShzdXBwb3J0ZWRUeXBlKSkge1xuXHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRgVGhlIGNvbm5lY3Rpb24gdGhhdCBpcyBiZWluZyB2YWxpZGF0ZWQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgcmVxdWlyZWQgY29ubmVjdGlvbiB0eXBlOiAke29wdGlvbnNUeXBlfWBcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlVG9SZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRsb2dnZXIuaW5mbyhcIkNvbm5lY3Rpb24gdHlwZSByZXF1ZXN0ZWQgaXMgc3VwcG9ydGVkLlwiKTtcblx0XHR9XG5cdFx0cmVzcG9uc2VUb1JldHVybi5pc1ZhbGlkID0gdHJ1ZTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0bG9nZ2VyLmVycm9yKFwiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHZhbGlkIGEgY29ubmVjdGlvbiByZXF1ZXN0LlwiLCBlcnIpO1xuXHR9XG5cdGxvZ2dlci5pbmZvKFwiUmV0dXJuaW5nOiBcIiwgcmVzcG9uc2VUb1JldHVybik7XG5cblx0cmV0dXJuIHJlc3BvbnNlVG9SZXR1cm47XG59XG5cbi8qKlxuICogSXMgdGhlIHNwZWNpZmllZCBhY3Rpb24gc3VwcG9ydGVkIGJ5IHRoZSBjb25uZWN0aW9uLlxuICogQHBhcmFtIGlkZW50aXR5IFRoZSBpZGVudGl0eSBvZiB0aGUgY29ubmVjdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIHBheWxvYWQgVGhlIHBheWxvYWQgY29udGFpbmluZyB0aGUgYWN0aW9ucyB0byB0ZXN0LlxuICogQHBhcmFtIHBheWxvYWQuYWN0aW9uIFRoZSBhY3Rpb25zIHRvIHRlc3QuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBhY3Rpb24gaXMgc3VwcG9ydGVkLlxuICovXG5mdW5jdGlvbiBpc0FjdGlvblN1cHBvcnRlZChpZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eSwgcGF5bG9hZDogeyBhY3Rpb246IHN0cmluZyB9KTogYm9vbGVhbiB7XG5cdGNvbnN0IHJlcXVlc3RpbmdDbGllbnQgPSBjb25uZWN0ZWRDbGllbnRzW2lkZW50aXR5LnV1aWRdO1xuXHRjb25zdCBhY3Rpb25JZCA9IHBheWxvYWQ/LmFjdGlvbjtcblx0Y29uc3QgcmVxdWVzdGVkQWN0aW9uID0gcmVnaXN0ZXJlZEFjdGlvbnNbYWN0aW9uSWRdO1xuXHRjb25zdCBhY3Rpb25TZXR0aW5ncyA9IHJlcXVlc3RpbmdDbGllbnQuY29ubmVjdGlvblR5cGVzLmZpbmQoKGVudHJ5KSA9PiBlbnRyeS50eXBlID09PSBBQ1RJT05TX1RZUEVfSUQpO1xuXHRsZXQgc3VwcG9ydGVkQWN0aW9ucyA9IGNvbm5lY3Rpb25PcHRpb25zPy5zdXBwb3J0ZWRBY3Rpb25zID8/IFtdO1xuXG5cdGlmIChhY3Rpb25TZXR0aW5ncz8udHlwZSA9PT0gQUNUSU9OU19UWVBFX0lEKSB7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkoYWN0aW9uU2V0dGluZ3Muc3VwcG9ydGVkQWN0aW9ucykgJiYgYWN0aW9uU2V0dGluZ3Muc3VwcG9ydGVkQWN0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0XHRzdXBwb3J0ZWRBY3Rpb25zID0gYWN0aW9uU2V0dGluZ3Muc3VwcG9ydGVkQWN0aW9ucztcblx0XHR9XG5cdFx0aWYgKCFpc0VtcHR5KHJlcXVlc3RlZEFjdGlvbikgJiYgc3VwcG9ydGVkQWN0aW9ucy5pbmNsdWRlcyhhY3Rpb25JZCkpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogRXhlY3V0ZSBhbiBhY3Rpb24gb24gYSBjb25uZWN0aW9uLlxuICogQHBhcmFtIGlkZW50aXR5IFRoZSBpZGVudGl0eSBvZiB0aGUgY29ubmVjdGlvbiB0byBwZXJmb3JtIHRoZSBhY3Rpb24gb24uXG4gKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBhY3Rpb24uXG4gKiBAcGFyYW0gcGF5bG9hZC5hY3Rpb24gVGhlIGFjdGlvbiB0byBleGVjdXRlLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYWN0aW9uIHdhcyBleGVjdXRlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUFjdGlvbihpZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eSwgcGF5bG9hZDogeyBhY3Rpb246IHN0cmluZyB9KTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGNvbnN0IGFjdGlvbklkID0gcGF5bG9hZD8uYWN0aW9uO1xuXHRpZiAoaXNBY3Rpb25TdXBwb3J0ZWQoaWRlbnRpdHksIHBheWxvYWQpKSB7XG5cdFx0Y29uc3QgcmVxdWVzdGVkQWN0aW9uID0gcmVnaXN0ZXJlZEFjdGlvbnNbYWN0aW9uSWRdO1xuXHRcdGxvZ2dlci5pbmZvKGBFeGVjdXRpbmcgYWN0aW9uOiAke2FjdGlvbklkfSBvbiBiZWhhbGYgb2YgY29ubmVjdGlvbjogJHtpZGVudGl0eS51dWlkfWApO1xuXHRcdGF3YWl0IHJlcXVlc3RlZEFjdGlvbigpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0bG9nZ2VyLmluZm8oXG5cdFx0YE5vdCBFeGVjdXRpbmcgYWN0aW9uOiAke2FjdGlvbklkfSBvbiBiZWhhbGYgb2YgY29ubmVjdGlvbjogJHtpZGVudGl0eS51dWlkfSBhcyB0aGUgYWN0aW9uIHdhcyBlaXRoZXIgbm90IHByb3ZpZGVkIG9yIG5vdCBsaXN0ZWQgaW4gdGhlIHN1cHBvcnRlZCAke0FDVElPTlNfVFlQRV9JRH0gZGVmaW5pdGlvbi5gXG5cdCk7XG5cdHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBEaXNjb25uZWN0IHRoZSBjb25uZWN0aW9uLlxuICogQHBhcmFtIGlkZW50aXR5IFRoZSBpZGVudGl0eSBvZiB0aGUgY29ubmVjdGlvbiB0byBkaXNjb25uZWN0LlxuICovXG5hc3luYyBmdW5jdGlvbiBkaXNjb25uZWN0KGlkZW50aXR5OiBPcGVuRmluLklkZW50aXR5KTogUHJvbWlzZTx2b2lkPiB7XG5cdGRlbGV0ZSBjb25uZWN0ZWRDbGllbnRzW2lkZW50aXR5LnV1aWRdO1xuXHRjb25zdCBjb25uZWN0ZWRDbGllbnRJZHMgPSBPYmplY3Qua2V5cyhjb25uZWN0ZWRDbGllbnRzKTtcblx0Ly8gZGlzY29ubmVjdCBmcm9tIGNoYW5uZWw/XG5cdGlmIChjb25uZWN0ZWRDbGllbnRJZHMubGVuZ3RoID09PSAwKSB7XG5cdFx0Ly8gdGhpcyBsb2dpYyBjYW4gYmUgdXBkYXRlZCB0byBub3QgZGlzY29ubmVjdCBvciBkaXNjb25uZWN0IGFmdGVyIGEgd2luZG93IG9mIHRpbWVcblx0XHRsb2dnZXIuaW5mbyhcIk5vIGNvbm5lY3Rpb25zIGxlZnRcIik7XG5cdH1cbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBjb25uZWN0aW9uIGFzc29jaWF0ZWQgd2l0aCBhbiBpZGVudGl0eS5cbiAqIEBwYXJhbSBpZGVudGl0eSBUaGUgaWRlbnRpdHkgdG8gZ2V0IHRoZSBjb25uZWN0aW9uIGZvci5cbiAqIEByZXR1cm5zIFRoZSBjb25uZWN0aW9uIGlmIHRoZXJlIGlzIG9uZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0Q29ubmVjdGlvbkxpc3RpbmcoaWRlbnRpdHk6IE9wZW5GaW4uSWRlbnRpdHkpOiBQcm9taXNlPENvbm5lY3Rpb24gfCB1bmRlZmluZWQ+IHtcblx0Ly8gTG9vayBmb3IgYSBjb25uZWN0aW9uIHdpdGggYSBzcGVjaWZpZWQgdXVpZFxuXHRjb25zdCBsaXN0ZWRDb25uZWN0aW9uID0gY29ubmVjdGlvbk9wdGlvbnM/LmNvbm5lY3Rpb25zLmZpbmQoXG5cdFx0KGVudHJ5KSA9PiBlbnRyeS5pZGVudGl0eS51dWlkID09PSBpZGVudGl0eS51dWlkXG5cdCk7XG5cblx0aWYgKCFpc0VtcHR5KGxpc3RlZENvbm5lY3Rpb24pKSB7XG5cdFx0cmV0dXJuIGxpc3RlZENvbm5lY3Rpb247XG5cdH1cblxuXHQvLyBObyBjb25uZWN0aW9uIGZvdW5kIHNvIGxvb2sgZm9yIGEgd2lsZGNhcmQgdXVpZFxuXHRjb25zdCBkZWZhdWx0Q29ubmVjdGlvbiA9IGNvbm5lY3Rpb25PcHRpb25zPy5jb25uZWN0aW9ucy5maW5kKChlbnRyeSkgPT4gZW50cnkuaWRlbnRpdHkudXVpZCA9PT0gXCIqXCIpO1xuXHRpZiAoIWlzRW1wdHkoZGVmYXVsdENvbm5lY3Rpb24pKSB7XG5cdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRgQSBzcGVjaWZpYyBsaXN0aW5nIGZvciBjb25uZWN0aW9uICR7aWRlbnRpdHkudXVpZH0gaXNuJ3QgbGlzdGVkIGJ1dCB0aGVyZSBpcyBhIGRlZmF1bHQgKiBlbnRyeSBhbmQgaXQgd2lsbCBiZSB1c2VkIGZvciB0aGlzIGNvbm5lY3Rpb24uYFxuXHRcdCk7XG5cdFx0Y29uc3QgaWRlbnRpdHlXaXRoRGVmYXVsdHM6IENvbm5lY3Rpb24gPSBvYmplY3RDbG9uZShkZWZhdWx0Q29ubmVjdGlvbik7XG5cdFx0aWRlbnRpdHlXaXRoRGVmYXVsdHMuaWRlbnRpdHkgPSBpZGVudGl0eTtcblx0XHRyZXR1cm4gaWRlbnRpdHlXaXRoRGVmYXVsdHM7XG5cdH1cblxuXHRyZXR1cm4gZGVmYXVsdENvbm5lY3Rpb247XG59XG4iLCJpbXBvcnQgdHlwZSB7IEN1c3RvbVBhbGV0dGVTZXQgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgZGFyayBhbmQgbGlnaHQgcGFsZXR0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BBTEVUVEVTOiB7XG5cdGRhcms6IEN1c3RvbVBhbGV0dGVTZXQ7XG5cdGxpZ2h0OiBDdXN0b21QYWxldHRlU2V0O1xufSA9IHtcblx0bGlnaHQ6IHtcblx0XHRicmFuZFByaW1hcnk6IFwiIzBBNzZEM1wiLFxuXHRcdGJyYW5kU2Vjb25kYXJ5OiBcIiMxRTFGMjNcIixcblx0XHRiYWNrZ3JvdW5kUHJpbWFyeTogXCIjRkFGQkZFXCIsXG5cdFx0YmFja2dyb3VuZDE6IFwiI0ZGRkZGRlwiLFxuXHRcdGJhY2tncm91bmQyOiBcIiNGQUZCRkVcIixcblx0XHRiYWNrZ3JvdW5kMzogXCIjRjNGNUY4XCIsXG5cdFx0YmFja2dyb3VuZDQ6IFwiI0VDRUVGMVwiLFxuXHRcdGJhY2tncm91bmQ1OiBcIiNERERGRTRcIixcblx0XHRiYWNrZ3JvdW5kNjogXCIjQzlDQkQyXCIsXG5cdFx0c3RhdHVzU3VjY2VzczogXCIjMzVDNzU5XCIsXG5cdFx0c3RhdHVzV2FybmluZzogXCIjRjQ4RjAwXCIsXG5cdFx0c3RhdHVzQ3JpdGljYWw6IFwiI0JFMUQxRlwiLFxuXHRcdHN0YXR1c0FjdGl2ZTogXCIjMDQ5OEZCXCIsXG5cdFx0aW5wdXRCYWNrZ3JvdW5kOiBcIiNFQ0VFRjFcIixcblx0XHRpbnB1dENvbG9yOiBcIiMxRTFGMjNcIixcblx0XHRpbnB1dFBsYWNlaG9sZGVyOiBcIiMzODNBNDBcIixcblx0XHRpbnB1dERpc2FibGVkOiBcIiM3RDgwOEFcIixcblx0XHRpbnB1dEZvY3VzZWQ6IFwiI0M5Q0JEMlwiLFxuXHRcdHRleHREZWZhdWx0OiBcIiMxRTFGMjNcIixcblx0XHR0ZXh0SGVscDogXCIjMkYzMTM2XCIsXG5cdFx0dGV4dEluYWN0aXZlOiBcIiM3RDgwOEFcIixcblx0XHRjb250ZW50QmFja2dyb3VuZDE6IFwiIzBBNzZEM1wiLFxuXHRcdGNvbnRlbnRCYWNrZ3JvdW5kMjogXCIjMDAwMDAwXCIsXG5cdFx0Y29udGVudEJhY2tncm91bmQzOiBcIiMwMDAwMDBcIixcblx0XHRjb250ZW50QmFja2dyb3VuZDQ6IFwiIzAwMDAwMFwiLFxuXHRcdGNvbnRlbnRCYWNrZ3JvdW5kNTogXCIjMDAwMDAwXCIsXG5cdFx0bGlua0RlZmF1bHQ6IFwiIzZDQURFNVwiLFxuXHRcdGxpbmtIb3ZlcjogXCIjMEE3NkQzXCJcblx0fSxcblx0ZGFyazoge1xuXHRcdGJyYW5kUHJpbWFyeTogXCIjMEE3NkQzXCIsXG5cdFx0YnJhbmRTZWNvbmRhcnk6IFwiIzM4M0E0MFwiLFxuXHRcdGJhY2tncm91bmRQcmltYXJ5OiBcIiMxRTFGMjNcIixcblx0XHRiYWNrZ3JvdW5kMTogXCIjMTExMjE0XCIsXG5cdFx0YmFja2dyb3VuZDI6IFwiIzFFMUYyM1wiLFxuXHRcdGJhY2tncm91bmQzOiBcIiMyNDI2MkJcIixcblx0XHRiYWNrZ3JvdW5kNDogXCIjMkYzMTM2XCIsXG5cdFx0YmFja2dyb3VuZDU6IFwiIzM4M0E0MFwiLFxuXHRcdGJhY2tncm91bmQ2OiBcIiM1MzU2NUZcIixcblx0XHRzdGF0dXNTdWNjZXNzOiBcIiMzNUM3NTlcIixcblx0XHRzdGF0dXNXYXJuaW5nOiBcIiNGNDhGMDBcIixcblx0XHRzdGF0dXNDcml0aWNhbDogXCIjQkUxRDFGXCIsXG5cdFx0c3RhdHVzQWN0aXZlOiBcIiMwNDk4RkJcIixcblx0XHRpbnB1dEJhY2tncm91bmQ6IFwiIzUzNTY1RlwiLFxuXHRcdGlucHV0Q29sb3I6IFwiI0ZGRkZGRlwiLFxuXHRcdGlucHV0UGxhY2Vob2xkZXI6IFwiI0M5Q0JEMlwiLFxuXHRcdGlucHV0RGlzYWJsZWQ6IFwiIzdEODA4QVwiLFxuXHRcdGlucHV0Rm9jdXNlZDogXCIjQzlDQkQyXCIsXG5cdFx0dGV4dERlZmF1bHQ6IFwiI0ZGRkZGRlwiLFxuXHRcdHRleHRIZWxwOiBcIiNDOUNCRDJcIixcblx0XHR0ZXh0SW5hY3RpdmU6IFwiIzdEODA4QVwiLFxuXHRcdGNvbnRlbnRCYWNrZ3JvdW5kMTogXCIjMEE3NkQzXCIsXG5cdFx0Y29udGVudEJhY2tncm91bmQyOiBcIiMwMDAwMDBcIixcblx0XHRjb250ZW50QmFja2dyb3VuZDM6IFwiIzAwMDAwMFwiLFxuXHRcdGNvbnRlbnRCYWNrZ3JvdW5kNDogXCIjMDAwMDAwXCIsXG5cdFx0Y29udGVudEJhY2tncm91bmQ1OiBcIiMwMDAwMDBcIixcblx0XHRsaW5rRGVmYXVsdDogXCIjNkNBREU1XCIsXG5cdFx0bGlua0hvdmVyOiBcIiMwQTc2RDNcIlxuXHR9XG59O1xuIiwiaW1wb3J0IHsgbWFwSW50ZXJvcEZyb21GREMzLCBtYXBUb1BsYXRmb3JtQXBwIGFzIG1hcEZEQzNPbmVQb2ludFR3b1RvUGxhdGZvcm1BcHAgfSBmcm9tIFwiLi9mZGMzLzEuMi9tYXBwZXJcIjtcbmltcG9ydCB7IG1hcEludGVudHNGcm9tRkRDMywgbWFwVG9QbGF0Zm9ybUFwcCBhcyBtYXBGREMzVHdvUG9pbnRaZXJvVG9QbGF0Zm9ybUFwcCB9IGZyb20gXCIuL2ZkYzMvMi4wL21hcHBlclwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50UHJvdmlkZXIsIFBsYXRmb3JtQXBwIH0gZnJvbSBcIi4vc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IERpcmVjdG9yeUFwcHMsIERpcmVjdG9yeUVuZHBvaW50IH0gZnJvbSBcIi4vc2hhcGVzL2RpcmVjdG9yeS1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgRkRDM1ZPbmVQb2ludFR3b0FwcERpcmVjdG9yeVJlc3BvbnNlIH0gZnJvbSBcIi4vc2hhcGVzL2ZkYzMtMS0yLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBGREMzVlR3b1BvaW50WmVyb0FwcERpcmVjdG9yeVJlc3BvbnNlIH0gZnJvbSBcIi4vc2hhcGVzL2ZkYzMtMi0wLXNoYXBlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIkRpcmVjdG9yeVwiKTtcbmxldCBlbmRwb2ludHM6IEVuZHBvaW50UHJvdmlkZXIgfCB1bmRlZmluZWQ7XG5sZXQgZGlyZWN0b3JpZXM6IERpcmVjdG9yeUVuZHBvaW50W10gPSBbXTtcblxubGV0IGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuLyoqXG4gKiBJbml0aWFsaXplIHRoZSBlbmRwb2ludCBwcm92aWRlci5cbiAqIEBwYXJhbSBlbmRwb2ludFByb3ZpZGVyIFRoZSBlbmRwb2ludCBwcm92aWRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQoZW5kcG9pbnRQcm92aWRlcjogRW5kcG9pbnRQcm92aWRlcik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoaXNJbml0aWFsaXplZCkge1xuXHRcdGxvZ2dlci53YXJuKFwiVGhlIGFwcCBzZXJ2aWNlIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWRcIik7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXHRlbmRwb2ludHMgPSBlbmRwb2ludFByb3ZpZGVyO1xufVxuXG4vKipcbiAqIEFkZCBhbiBhbiBkaXJlY3RvcnkgZW5kcG9pbnQuXG4gKiBAcGFyYW0gZW5kcG9pbnQgVGhlIGVuZHBvaW50IHRvIGFkZCB0byB0aGUgZGlyZWN0b3J5LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZW5kcG9pbnQgd2FzIHN1Y2Nlc3NmdWxseSBhZGRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZERpcmVjdG9yeUVuZHBvaW50KGVuZHBvaW50OiBEaXJlY3RvcnlFbmRwb2ludCk6IGJvb2xlYW4ge1xuXHRpZiAoZW5kcG9pbnRzKSB7XG5cdFx0aWYgKGlzRW1wdHkoZW5kcG9pbnQ/LmlkKSkge1xuXHRcdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XHRcIkEgZGlyZWN0b3J5IGVudHJ5IGRpZG4ndCBzcGVjaWZ5IGFuIGlkIGFuZCBpdCBuZWVkcyBhbiBpZCB0byBiZSByZWdpc3RlcmVkLiBJdCBjYW5ub3QgYmUgYWRkZWQgYXMgYSBkaXJlY3RvcnkgZW5kcG9pbnQuXCIsXG5cdFx0XHRcdGVuZHBvaW50XG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmIChkaXJlY3Rvcmllcy5sZW5ndGggIT09IDAgJiYgZGlyZWN0b3JpZXMuZmluZEluZGV4KChlbnRyeSkgPT4gZW50cnkuaWQgPT09IGVuZHBvaW50LmlkKSAhPT0gLTEpIHtcblx0XHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFx0YEEgZGlyZWN0b3J5IGVudHJ5IHdpdGggdGhpcyBpZDogJHtlbmRwb2ludC5pZH0gYWxyZWFkeSBleGlzdHMgc28gdGhpcyBwYXNzZWQgZW5kcG9pbnQgY2Fubm90IGJlIGFkZGVkLmAsXG5cdFx0XHRcdGVuZHBvaW50XG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmIChpc0VtcHR5KGVuZHBvaW50LmVuZHBvaW50SWQpICYmIGlzRW1wdHkoZW5kcG9pbnQubWFwKSAmJiBpc0VtcHR5KGVuZHBvaW50LnVybCkpIHtcblx0XHRcdGxvZ2dlci5lcnJvcihcIkEgZGlyZWN0b3J5IGVuZHBvaW50IG11c3QgZWl0aGVyIHNwZWNpZnkgYSB1cmwsIGVuZHBvaW50IG9yIGEgbWFwLlwiKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRpZiAoIWlzRW1wdHkoZW5kcG9pbnQ/LmVuZHBvaW50SWQpICYmICFlbmRwb2ludHMuaGFzRW5kcG9pbnQoZW5kcG9pbnQuZW5kcG9pbnRJZCkpIHtcblx0XHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFx0YEEgZGlyZWN0b3J5IGVudHJ5IHNwZWNpZmllcyBhbiBlbmRwb2ludCB0aGF0IGRvZXMgbm90IGV4aXN0OiAke2VuZHBvaW50LmVuZHBvaW50SWR9IGFuZCBpdCBjYW4gdGhlcmVmb3JlIG5vdCBiZSBhZGRlZCBhcyBhIGRpcmVjdG9yeSBlbmRwb2ludC4gSWQ6ICR7ZW5kcG9pbnQuaWR9YCxcblx0XHRcdFx0ZW5kcG9pbnRcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIGlmICghaXNFbXB0eShlbmRwb2ludD8ubWFwKSkge1xuXHRcdFx0aWYgKCFlbmRwb2ludHMuaGFzRW5kcG9pbnQoZW5kcG9pbnQubWFwLmlucHV0SWQpKSB7XG5cdFx0XHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFx0XHRgQSBkaXJlY3RvcnkgZW50cnkgc3BlY2lmaWVzIGFuIGVuZHBvaW50IG1hcCBpbnB1dCBpZCB0aGF0IGRvZXMgbm90IGV4aXN0OiAke2VuZHBvaW50Lm1hcC5pbnB1dElkfSBhbmQgaXQgY2FuIHRoZXJlZm9yZSBub3QgYmUgYWRkZWQgYXMgYSBkaXJlY3RvcnkgZW5kcG9pbnQuIElkOiAke2VuZHBvaW50LmlkfWAsXG5cdFx0XHRcdFx0ZW5kcG9pbnRcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVuZHBvaW50Lm1hcC5vdXRwdXRJZCAmJiAhZW5kcG9pbnRzLmhhc0VuZHBvaW50KGVuZHBvaW50Lm1hcC5vdXRwdXRJZCkpIHtcblx0XHRcdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XHRcdGBBIGRpcmVjdG9yeSBlbnRyeSBzcGVjaWZpZXMgYW4gZW5kcG9pbnQgbWFwIG91dHB1dCBpZCB0aGF0IGRvZXMgbm90IGV4aXN0OiAke2VuZHBvaW50Lm1hcC5vdXRwdXRJZH0gYW5kIGl0IGNhbiB0aGVyZWZvcmUgbm90IGJlIGFkZGVkIGFzIGEgZGlyZWN0b3J5IGVuZHBvaW50LiBJZDogJHtlbmRwb2ludC5pZH1gLFxuXHRcdFx0XHRcdGVuZHBvaW50XG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0IWlzRW1wdHkoZW5kcG9pbnQ/LnVybCkgJiZcblx0XHRcdChlbmRwb2ludC51cmwucGF0aC50cmltKCkubGVuZ3RoID09PSAwIHx8ICFlbmRwb2ludC51cmwucGF0aC5zdGFydHNXaXRoKFwiaHR0cFwiKSlcblx0XHQpIHtcblx0XHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFx0YEEgZGlyZWN0b3J5IGVudHJ5IHNwZWNpZmllcyBhbiBlbmRwb2ludCB1cmwgcGF0aCB0aGF0IGlzIGVpdGhlciBub3Qgc3BlY2lmaWVkIG9yIGlzIGluIHRoZSB3cm9uZyBmb3JtYXQ6ICR7ZW5kcG9pbnQ/LnVybD8ucGF0aH0gYW5kIGl0IGNhbiB0aGVyZWZvcmUgbm90IGJlIGFkZGVkIGFzIGEgZGlyZWN0b3J5IGVuZHBvaW50LiBJZDogJHtlbmRwb2ludC5pZH1gLFxuXHRcdFx0XHRlbmRwb2ludFxuXHRcdFx0KTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0ZGlyZWN0b3JpZXMucHVzaChlbmRwb2ludCk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogUmVtb3ZlIGEgZGlyZWN0b3J5IGJ5IGlkLlxuICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgZGlyZWN0b3J5IHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGRpcmVjdG9yeSB3YXMgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZURpcmVjdG9yeShpZDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdGNvbnN0IHVwZGF0ZWREaXJlY3RvcnlMaXN0ID0gZGlyZWN0b3JpZXMuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkuaWQgIT09IGlkKTtcblx0aWYgKHVwZGF0ZWREaXJlY3RvcnlMaXN0Lmxlbmd0aCA9PT0gZGlyZWN0b3JpZXMubGVuZ3RoIC0gMSkge1xuXHRcdGxvZ2dlci5lcnJvcihgVW5hYmxlIHRvIHJlbW92ZSBkaXJlY3RvcnkgZW50cnkgd2l0aCBpZDogJHtpZH0gYXMgaXQgZG9lc24ndCBleGlzdGApO1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGRpcmVjdG9yaWVzID0gdXBkYXRlZERpcmVjdG9yeUxpc3Q7XG5cdHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgYXBwcyBmcm9tIHRoZSBkaXJlY3RvcnkuXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBhcHBsaWNhdGlvbnMgZnJvbSB0aGUgZGlyZWN0b3JpZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQbGF0Zm9ybUFwcHMoKTogUHJvbWlzZTxQbGF0Zm9ybUFwcFtdPiB7XG5cdGlmIChkaXJlY3Rvcmllcy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4gW107XG5cdH1cblx0Y29uc3QgZGlyZWN0b3JpZXNUb0NhbGwgPSBbLi4uZGlyZWN0b3JpZXNdO1xuXHRjb25zdCBhcHBzOiBQbGF0Zm9ybUFwcFtdID0gW107XG5cblx0Zm9yIChjb25zdCBkaXJlY3Rvcnkgb2YgZGlyZWN0b3JpZXNUb0NhbGwpIHtcblx0XHR0cnkge1xuXHRcdFx0bG9nZ2VyLmluZm8oYEZldGNoaW5nIGFwcHMgZnJvbSBkaXJlY3RvcnkgaWQ6ICR7ZGlyZWN0b3J5LmlkfS5gKTtcblx0XHRcdGNvbnN0IHJldHJpZXZlZEFwcHMgPSBhd2FpdCBnZXRSZXN1bHRzKGRpcmVjdG9yeSk7XG5cdFx0XHRsb2dnZXIuaW5mbyhgRmV0Y2hlZCAke3JldHJpZXZlZEFwcHMubGVuZ3RofSBhcHBzIGZyb20gZGlyZWN0b3J5IGlkOiAke2RpcmVjdG9yeS5pZH0uYCk7XG5cdFx0XHRhcHBzLnB1c2goLi4ucmV0cmlldmVkQXBwcyk7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGxvZ2dlci5lcnJvcihgRXJyb3IgZmV0Y2hpbmcgYXBwcyBmcm9tIGRpcmVjdG9yeSAke0pTT04uc3RyaW5naWZ5KGRpcmVjdG9yeSl9YCwgZXJyb3IpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBhcHBzO1xufVxuXG4vKipcbiAqIEdldCBhIGxpc3Qgb2YgcGxhdGZvcm0gYXBwcyBtYXBwZWQgZnJvbSBkaWZmZXJlbnQgZm9ybWF0cy5cbiAqIEBwYXJhbSByZXN1bHRzIFRoZSByZXN1bHQgdG8gbWFwIHRvIHBsYXRmb3JtIGFwcHMuXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBtYXBwZWQgYXBwcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0QXBwcyhyZXN1bHRzOiBEaXJlY3RvcnlBcHBzKTogUHJvbWlzZTxQbGF0Zm9ybUFwcFtdPiB7XG5cdGlmIChBcnJheS5pc0FycmF5KHJlc3VsdHMpKSB7XG5cdFx0Y29uc3Qgb3BlbmZpbkFwcHMgPSBtYXBPcGVuRmluUmVzdWx0cyhyZXN1bHRzKTtcblx0XHRyZXR1cm4gb3BlbmZpbkFwcHM7XG5cdH0gZWxzZSBpZiAocmVzdWx0cy5tZXRhZGF0YT8udHlwZSA9PT0gXCJmZGMzXCIgJiYgIWlzRW1wdHkocmVzdWx0cz8ubWV0YWRhdGE/LnZlcnNpb24pKSB7XG5cdFx0Y29uc3QgdmVyc2lvbiA9IHJlc3VsdHMubWV0YWRhdGEudmVyc2lvbjtcblx0XHRzd2l0Y2ggKHZlcnNpb24pIHtcblx0XHRcdGNhc2UgXCIxLjJcIjoge1xuXHRcdFx0XHRyZXR1cm4gKHJlc3VsdHMgYXMgRkRDM1ZPbmVQb2ludFR3b0FwcERpcmVjdG9yeVJlc3BvbnNlKS5hcHBsaWNhdGlvbnMubWFwKChhKSA9PlxuXHRcdFx0XHRcdG1hcEZEQzNPbmVQb2ludFR3b1RvUGxhdGZvcm1BcHAoYSlcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGNhc2UgXCIyLjBcIjoge1xuXHRcdFx0XHRyZXR1cm4gKHJlc3VsdHMgYXMgRkRDM1ZUd29Qb2ludFplcm9BcHBEaXJlY3RvcnlSZXNwb25zZSkuYXBwbGljYXRpb25zLm1hcCgoYSkgPT5cblx0XHRcdFx0XHRtYXBGREMzVHdvUG9pbnRaZXJvVG9QbGF0Zm9ybUFwcChhKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZGVmYXVsdDoge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYFVua25vd24vVW5zdXBwb3J0ZWQgRkRDMyB2ZXJzaW9uIHNwZWNpZmllZDogJHt2ZXJzaW9ufWApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdHMuYXBwbGljYXRpb25zKSAmJiByZXN1bHRzLmFwcGxpY2F0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0aWYgKFwidHlwZVwiIGluIHJlc3VsdHMuYXBwbGljYXRpb25zWzBdKSB7XG5cdFx0XHRyZXR1cm4gKHJlc3VsdHMgYXMgRkRDM1ZUd29Qb2ludFplcm9BcHBEaXJlY3RvcnlSZXNwb25zZSkuYXBwbGljYXRpb25zLm1hcCgoYSkgPT5cblx0XHRcdFx0bWFwRkRDM1R3b1BvaW50WmVyb1RvUGxhdGZvcm1BcHAoYSlcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiAocmVzdWx0cyBhcyBGREMzVk9uZVBvaW50VHdvQXBwRGlyZWN0b3J5UmVzcG9uc2UpLmFwcGxpY2F0aW9ucy5tYXAoKGEpID0+XG5cdFx0XHRtYXBGREMzT25lUG9pbnRUd29Ub1BsYXRmb3JtQXBwKGEpXG5cdFx0KTtcblx0fVxuXHRyZXR1cm4gW107XG59XG5cbi8qKlxuICogTWFwIHBsYXRmb3JtIGFwcHMgZnJvbSB0aGUgT3BlbkZpbiBmb3JtYXQgdG8gc3RhbmRhcmQgUGxhdGZvcm1BcHAuXG4gKiBAcGFyYW0gYXBwbGljYXRpb25zIFRoZSBhcHBsaWNhdGlvbnMgdG8gbWFwLlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgbWFwcGVkIGFwcGxpY2F0aW9ucy5cbiAqL1xuZnVuY3Rpb24gbWFwT3BlbkZpblJlc3VsdHMoYXBwbGljYXRpb25zOiBQbGF0Zm9ybUFwcFtdKTogUGxhdGZvcm1BcHBbXSB7XG5cdGNvbnN0IHBsYXRmb3JtQXBwczogUGxhdGZvcm1BcHBbXSA9IFtdO1xuXG5cdGZvciAoY29uc3QgYXBwIG9mIGFwcGxpY2F0aW9ucykge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGFwcC5pbnRlbnRzKSAmJiBpc0VtcHR5KGFwcC5pbnRlcm9wKSkge1xuXHRcdFx0YXBwLmludGVyb3AgPSBtYXBJbnRlcm9wRnJvbUZEQzMoYXBwLmludGVudHMpO1xuXHRcdH0gZWxzZSBpZiAoIWlzRW1wdHkoYXBwLmludGVyb3ApICYmICFBcnJheS5pc0FycmF5KGFwcC5pbnRlbnRzKSkge1xuXHRcdFx0YXBwLmludGVudHMgPSBtYXBJbnRlbnRzRnJvbUZEQzMoYXBwLmludGVyb3ApO1xuXHRcdH1cblx0XHRwbGF0Zm9ybUFwcHMucHVzaChhcHApO1xuXHR9XG5cblx0cmV0dXJuIHBsYXRmb3JtQXBwcztcbn1cblxuLyoqXG4gKiBHZXQgYSBsaXN0IGZvciB0aGUgcGxhdGZvcm0gYXBwcyBmcm9tIHRoZSBlbmRwb2ludHMuXG4gKiBAcGFyYW0gZGlyZWN0b3J5RW5kcG9pbnQgVGhlIGRpcmVjdG9yeSB0byB1c2UgZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGFwcGxpY2F0aW9uIGZyb20gdGhlIGVuZHBvaW50LlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRSZXN1bHRzKGRpcmVjdG9yeUVuZHBvaW50OiBEaXJlY3RvcnlFbmRwb2ludCk6IFByb21pc2U8UGxhdGZvcm1BcHBbXT4ge1xuXHRpZiAoZW5kcG9pbnRzKSB7XG5cdFx0aWYgKCFpc0VtcHR5KGRpcmVjdG9yeUVuZHBvaW50LmVuZHBvaW50SWQpKSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhgRmV0Y2hpbmcgYXBwcyBmcm9tIGVuZHBvaW50IGlkOiAke2RpcmVjdG9yeUVuZHBvaW50LmVuZHBvaW50SWR9LmApO1xuXHRcdFx0Y29uc3QgcmVzdWx0cyA9IGF3YWl0IGVuZHBvaW50cy5yZXF1ZXN0UmVzcG9uc2U8bmV2ZXIsIERpcmVjdG9yeUFwcHM+KGRpcmVjdG9yeUVuZHBvaW50LmVuZHBvaW50SWQpO1xuXHRcdFx0aWYgKHJlc3VsdHMpIHtcblx0XHRcdFx0cmV0dXJuIGdldEFwcHMocmVzdWx0cyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICghaXNFbXB0eShkaXJlY3RvcnlFbmRwb2ludC51cmwpKSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhgRmV0Y2hpbmcgYXBwcyBmcm9tIHVybDogJHtkaXJlY3RvcnlFbmRwb2ludC51cmwucGF0aH1gKTtcblx0XHRcdGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaChkaXJlY3RvcnlFbmRwb2ludC51cmwucGF0aCwge1xuXHRcdFx0XHRjcmVkZW50aWFsczogZGlyZWN0b3J5RW5kcG9pbnQudXJsLmNyZWRlbnRpYWxzXG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IHJlc3VsdHM6XG5cdFx0XHRcdHwgUGxhdGZvcm1BcHBbXVxuXHRcdFx0XHR8IEZEQzNWVHdvUG9pbnRaZXJvQXBwRGlyZWN0b3J5UmVzcG9uc2Vcblx0XHRcdFx0fCBGREMzVk9uZVBvaW50VHdvQXBwRGlyZWN0b3J5UmVzcG9uc2UgPSBhd2FpdCByZXNwLmpzb24oKTtcblx0XHRcdHJldHVybiBnZXRBcHBzKHJlc3VsdHMpO1xuXHRcdH0gZWxzZSBpZiAoIWlzRW1wdHkoZGlyZWN0b3J5RW5kcG9pbnQubWFwKSkge1xuXHRcdFx0aWYgKCFkaXJlY3RvcnlFbmRwb2ludC5tYXAub3V0cHV0SWQpIHtcblx0XHRcdFx0bG9nZ2VyLmVycm9yKGBNYXBwaW5nIGZyb20gQXBwIFNvdXJjZTogJHtkaXJlY3RvcnlFbmRwb2ludC5tYXAuaW5wdXRJZH0gaGFzIG5vIG91dHB1dElkYCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0XHRgTWFwcGluZyBmcm9tIEFwcCBTb3VyY2U6ICR7ZGlyZWN0b3J5RW5kcG9pbnQubWFwLmlucHV0SWR9IHRvIFBsYXRmb3JtIEFwcCB1c2luZzogJHtkaXJlY3RvcnlFbmRwb2ludC5tYXAub3V0cHV0SWR9YFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBpbnB1dFJlc3VsdHMgPSBhd2FpdCBlbmRwb2ludHMucmVxdWVzdFJlc3BvbnNlPG5ldmVyLCB1bmtub3duPihkaXJlY3RvcnlFbmRwb2ludC5tYXAuaW5wdXRJZCk7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBSZWNlaXZlZCByZXNwb25zZSBmcm9tICR7ZGlyZWN0b3J5RW5kcG9pbnQubWFwLmlucHV0SWR9YCk7XG5cdFx0XHRcdGNvbnN0IG91dHB1dFJlc3VsdHMgPSBhd2FpdCBlbmRwb2ludHMucmVxdWVzdFJlc3BvbnNlPHVua25vd24sIERpcmVjdG9yeUFwcHM+KFxuXHRcdFx0XHRcdGRpcmVjdG9yeUVuZHBvaW50Lm1hcC5vdXRwdXRJZCxcblx0XHRcdFx0XHRpbnB1dFJlc3VsdHNcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRpZiAob3V0cHV0UmVzdWx0cykge1xuXHRcdFx0XHRcdHJldHVybiBnZXRBcHBzKG91dHB1dFJlc3VsdHMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0bG9nZ2VyLmVycm9yKFxuXHRcdGBEaXJlY3RvcnkgZW50cnkgJHtkaXJlY3RvcnlFbmRwb2ludC5pZH0gZG9lcyBub3QgaGF2ZSBhbnkgc3VwcG9ydGVkIHdheSBvZiBmZXRjaGluZyBhcHBsaWNhdGlvbnMuYFxuXHQpO1xuXHRyZXR1cm4gW107XG59XG4iLCJpbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiLi9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB7IGluaXRpYWxpemVNb2R1bGVzLCBsb2FkTW9kdWxlcyB9IGZyb20gXCIuL21vZHVsZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0RW5kcG9pbnQsXG5cdEVuZHBvaW50RGVmaW5pdGlvbixcblx0RW5kcG9pbnRQcm92aWRlck9wdGlvbnMsXG5cdEZldGNoT3B0aW9uc1xufSBmcm9tIFwiLi9zaGFwZXMvZW5kcG9pbnQtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IE1vZHVsZUVudHJ5LCBNb2R1bGVIZWxwZXJzIH0gZnJvbSBcIi4vc2hhcGVzL21vZHVsZS1zaGFwZXNcIjtcbmltcG9ydCB7IGlzRW1wdHksIGlzU3RyaW5nVmFsdWUsIG9iamVjdENsb25lIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgU1VQUE9SVEVEX0hUVFBfTUVUSE9EUzogc3RyaW5nW10gPSBbXCJHRVRcIiwgXCJQT1NUXCIsIFwiREVMRVRFXCIsIFwiUFVUXCIsIFwiUEFUQ0hcIl07XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIkVuZHBvaW50XCIpO1xuY29uc3QgZW5kcG9pbnREZWZpbml0aW9uczogRW5kcG9pbnREZWZpbml0aW9uW10gPSBbXTtcbmxldCBtb2R1bGVzOiBNb2R1bGVFbnRyeTxFbmRwb2ludD5bXSA9IFtdO1xuXG4vKipcbiAqIEluaXRpYWxpemUgdGhlIGVuZHBvaW50IHByb3ZpZGVyLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSBlbmRwb2ludCBwcm92aWRlci5cbiAqIEBwYXJhbSBoZWxwZXJzIE1vZHVsZSBoZWxwZXJzIHRvIHBhc3MgdG8gYW55IGxvYWRlZCBtb2R1bGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdChcblx0b3B0aW9uczogRW5kcG9pbnRQcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQsXG5cdGhlbHBlcnM6IE1vZHVsZUhlbHBlcnNcbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAob3B0aW9ucykge1xuXHRcdGNvbnN0IG5ld0VuZHBvaW50cyA9IG9wdGlvbnMuZW5kcG9pbnRzID8/IFtdO1xuXG5cdFx0aWYgKG5ld0VuZHBvaW50cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIkFkZGluZyB0aGUgZm9sbG93aW5nIGVuZHBvaW50cyB0byB0aGUgZW5kcG9pbnQgcHJvdmlkZXJcIiwgbmV3RW5kcG9pbnRzKTtcblx0XHRcdGVuZHBvaW50RGVmaW5pdGlvbnMucHVzaCguLi5uZXdFbmRwb2ludHMpO1xuXHRcdH1cblxuXHRcdG1vZHVsZXMgPSBhd2FpdCBsb2FkTW9kdWxlczxuZXZlciwgRW5kcG9pbnQ+KG9wdGlvbnMsIFwiZW5kcG9pbnRcIik7XG5cdFx0YXdhaXQgaW5pdGlhbGl6ZU1vZHVsZXMobW9kdWxlcywgaGVscGVycyk7XG5cdH1cbn1cblxuLyoqXG4gKiBEb2VzIHRoZSBlbmRwb2ludCB3aXRoIHRoZSBzcGVjaWZpZWQgaWQgZXhpc3QuXG4gKiBAcGFyYW0gaWQgVGhlIGlkIHRvIGNoZWNrIGZvciBleGlzdGVuY2UuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBlbmRwb2ludCBleGlzdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNFbmRwb2ludChpZDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdHJldHVybiBlbmRwb2ludERlZmluaXRpb25zLnNvbWUoKGVudHJ5KSA9PiBlbnRyeS5pZCA9PT0gaWQpO1xufVxuXG4vKipcbiAqIFBlcmZvcm0gYW4gYWN0aW9uIG9uIGFuIGVuZHBvaW50LlxuICogQHBhcmFtIGVuZHBvaW50SWQgVGhlIGlkIG9mIHRoZSBlbmRwb2ludCB0byBwZXJmb3JtIHRoZSBhY3Rpb24gb24uXG4gKiBAcGFyYW0gcmVxdWVzdCBUaGUgcmVxdWVzdCB0byBzZW5kLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYWN0aW9uIHdhcyBwZXJmb3JtZWQgc3VjY2Vzc2Z1bGx5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWN0aW9uPFQ+KGVuZHBvaW50SWQ6IHN0cmluZywgcmVxdWVzdD86IFQpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0Y29uc3QgZW5kcG9pbnQgPSBnZXRFbmRwb2ludERlZmluaXRpb24oZW5kcG9pbnRJZCk7XG5cblx0aWYgKGlzRW1wdHkoZW5kcG9pbnQpKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Y29uc3QgZW5kcG9pbnRUeXBlID0gZW5kcG9pbnQudHlwZTtcblxuXHQvLyBjdXJyZW50bHkgb25seSBmZXRjaCBpcyBzdXBwb3J0ZWQgYnV0IHlvdSBjb3VsZCBsb2FkIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBpbnRlbnQgYmFzZWQgb24gdHlwZVxuXHRpZiAoZW5kcG9pbnRUeXBlID09PSBcImZldGNoXCIpIHtcblx0XHRjb25zdCB7IHVybCwgLi4ub3B0aW9ucyB9ID0gZW5kcG9pbnQub3B0aW9ucztcblx0XHRpZiAodXJsKSB7XG5cdFx0XHRjb25zdCByZXEgPSBnZXRSZXF1ZXN0T3B0aW9ucyh1cmwsIG9wdGlvbnMsIHJlcXVlc3QpO1xuXHRcdFx0aWYgKCFpc1N0cmluZ1ZhbHVlKHJlcS5vcHRpb25zLm1ldGhvZCkgfHwgIVNVUFBPUlRFRF9IVFRQX01FVEhPRFMuaW5jbHVkZXMocmVxLm9wdGlvbnMubWV0aG9kKSkge1xuXHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRgJHtlbmRwb2ludElkfSBzcGVjaWZpZXMgYSB0eXBlOiAke2VuZHBvaW50VHlwZX0gd2l0aCBhIG1ldGhvZCAke3JlcS5vcHRpb25zLm1ldGhvZH0gdGhhdCBpcyBub3Qgc3VwcG9ydGVkLmBcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZXEudXJsLCByZXEub3B0aW9ucyk7XG5cdFx0XHRcdHJldHVybiByZXNwb25zZS5vaztcblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoYCR7ZW5kcG9pbnRJZH0gYWN0aW9uIHJldHVybmVkIGFuIGVycm9yIGR1cmluZyBmZXRjaGAsIGVycik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2UgaWYgKGVuZHBvaW50VHlwZSA9PT0gXCJtb2R1bGVcIikge1xuXHRcdGNvbnN0IHJlc29sdmVkRW5kcG9pbnQgPSBhd2FpdCBnZXRNb2R1bGVFbmRwb2ludChlbmRwb2ludC50eXBlSWQpO1xuXG5cdFx0aWYgKCFyZXNvbHZlZEVuZHBvaW50Py5hY3Rpb24pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc29sdmVkRW5kcG9pbnQuYWN0aW9uKGVuZHBvaW50LCByZXF1ZXN0KTtcblx0fVxuXHRsb2dnZXIud2FybihgJHtlbmRwb2ludElkfSBzcGVjaWZpZXMgYSB0eXBlOiAke2VuZHBvaW50VHlwZX0gdGhhdCBpcyBub3Qgc3VwcG9ydGVkYCk7XG5cdHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBQZXJmb3JtIGEgcmVxdWVzdC9yZXNwb25zZSBvbiBhbiBlbmRwb2ludC5cbiAqIEBwYXJhbSBlbmRwb2ludElkIFRoZSBpZCBvZiB0aGUgZW5kcG9pbnQgdG8gcGVyZm9ybSB0aGUgcmVxdWVzdC9yZXNwb25zZSBvbi5cbiAqIEBwYXJhbSByZXF1ZXN0IFRoZSByZXF1ZXN0IHRvIHNlbmQuXG4gKiBAcmV0dXJucyBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgZW5kcG9pbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXF1ZXN0UmVzcG9uc2U8VCwgUj4oZW5kcG9pbnRJZDogc3RyaW5nLCByZXF1ZXN0PzogVCk6IFByb21pc2U8UiB8IHVuZGVmaW5lZD4ge1xuXHRjb25zdCBlbmRwb2ludCA9IGVuZHBvaW50RGVmaW5pdGlvbnMuZmluZCgoZW50cnkpID0+IGVudHJ5LmlkID09PSBlbmRwb2ludElkKTtcblxuXHRpZiAoaXNFbXB0eShlbmRwb2ludCkpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBlbmRwb2ludFR5cGUgPSBlbmRwb2ludC50eXBlO1xuXG5cdC8vIGN1cnJlbnRseSBvbmx5IGZldGNoIGlzIHN1cHBvcnRlZCBidXQgeW91IGNvdWxkIGxvYWQgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBvZiB0aGlzIGludGVudCBiYXNlZCBvbiB0eXBlXG5cdGlmIChlbmRwb2ludFR5cGUgPT09IFwiZmV0Y2hcIikge1xuXHRcdGNvbnN0IHsgdXJsLCAuLi5vcHRpb25zIH0gPSBlbmRwb2ludC5vcHRpb25zO1xuXHRcdGlmICh1cmwpIHtcblx0XHRcdGNvbnN0IHJlcSA9IGdldFJlcXVlc3RPcHRpb25zKHVybCwgb3B0aW9ucywgcmVxdWVzdCk7XG5cdFx0XHRpZiAoIWlzU3RyaW5nVmFsdWUocmVxLm9wdGlvbnMubWV0aG9kKSB8fCAhU1VQUE9SVEVEX0hUVFBfTUVUSE9EUy5pbmNsdWRlcyhyZXEub3B0aW9ucy5tZXRob2QpKSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdGAke2VuZHBvaW50SWR9IHNwZWNpZmllcyBhIHR5cGU6ICR7ZW5kcG9pbnRUeXBlfSB3aXRoIGEgbWV0aG9kICR7cmVxLm9wdGlvbnMubWV0aG9kfSB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQuYFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHJlcS51cmwsIHJlcS5vcHRpb25zKTtcblxuXHRcdFx0XHRpZiAocmVzcG9uc2Uub2spIHtcblx0XHRcdFx0XHRjb25zdCBqc29uID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXHRcdFx0XHRcdHJldHVybiBqc29uIGFzIFI7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoYCR7ZW5kcG9pbnRJZH0gcmVxdWVzdFJlc3BvbnNlIHJldHVybmVkIGFuIGVycm9yIGR1cmluZyBmZXRjaGAsIGVycik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybjtcblx0fSBlbHNlIGlmIChlbmRwb2ludFR5cGUgPT09IFwibW9kdWxlXCIpIHtcblx0XHRjb25zdCByZXNvbHZlZEVuZHBvaW50ID0gYXdhaXQgZ2V0TW9kdWxlRW5kcG9pbnQoZW5kcG9pbnQudHlwZUlkKTtcblxuXHRcdGlmICghcmVzb2x2ZWRFbmRwb2ludD8ucmVxdWVzdFJlc3BvbnNlKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHJldHVybiByZXNvbHZlZEVuZHBvaW50LnJlcXVlc3RSZXNwb25zZShlbmRwb2ludCwgcmVxdWVzdCkgYXMgUjtcblx0fVxuXHRsb2dnZXIud2FybihgJHtlbmRwb2ludElkfSBzcGVjaWZpZXMgYSB0eXBlOiAke2VuZHBvaW50VHlwZX0gdGhhdCBpcyBub3Qgc3VwcG9ydGVkYCk7XG59XG5cbi8qKlxuICogR2V0IGEgbW9kdWxlIGVuZHBvaW50IGJ5IGl0cyBpZC5cbiAqIEBwYXJhbSBtb2R1bGVJZCBUaGUgbW9kdWxlIGlkIHRvIGdldCB0aGUgZW5kcG9pbnQgZm9yLlxuICogQHJldHVybnMgVGhlIGVuZHBvaW50IGZvciB0aGUgbW9kdWxlLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRNb2R1bGVFbmRwb2ludChtb2R1bGVJZDogc3RyaW5nKTogUHJvbWlzZTxFbmRwb2ludCB8IHVuZGVmaW5lZD4ge1xuXHRjb25zdCBlbmRwb2ludHMgPSBtb2R1bGVzLmZpbmQoKGVudHJ5KSA9PiBlbnRyeS5kZWZpbml0aW9uLmlkID09PSBtb2R1bGVJZCk7XG5cblx0aWYgKGlzRW1wdHkoZW5kcG9pbnRzKSkge1xuXHRcdGxvZ2dlci53YXJuKGBTcGVjaWZpZWQgRW5kcG9pbnQgTW9kdWxlIElkOiAke21vZHVsZUlkfSBpcyBub3QgYXZhaWxhYmxlYCk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0cmV0dXJuIGVuZHBvaW50cy5pbXBsZW1lbnRhdGlvbjtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGVuZHBvaW50IGRlZmluaXRpb24uXG4gKiBAcGFyYW0gZW5kcG9pbnRJZCBUaGUgZW5kcG9pbnQgaWQgdG8gZ2V0IHRoZSBkZWZpbml0aW9uIGZvci5cbiAqIEByZXR1cm5zIFRoZSBlbmRwb2ludCBkZWZpbml0aW9uLlxuICovXG5mdW5jdGlvbiBnZXRFbmRwb2ludERlZmluaXRpb24oZW5kcG9pbnRJZDogc3RyaW5nKTogRW5kcG9pbnREZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgZW5kcG9pbnQgPSBlbmRwb2ludERlZmluaXRpb25zLmZpbmQoKGVudHJ5KSA9PiBlbnRyeS5pZCA9PT0gZW5kcG9pbnRJZCk7XG5cblx0aWYgKGlzRW1wdHkoZW5kcG9pbnQpKSB7XG5cdFx0bG9nZ2VyLndhcm4oYFNwZWNpZmllZCBFbmRwb2ludCBJZCAke2VuZHBvaW50SWR9IGlzIG5vdCBhdmFpbGFibGVgKTtcblx0fVxuXG5cdHJldHVybiBlbmRwb2ludDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHJlcXVlc3Qgb3B0aW9ucyBmcm9tIHRoZSBmZXRjaCBvcHRpb25zLlxuICogQHBhcmFtIHVybCBUaGUgdXJsLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGZldGNoIG9wdGlvbnMuXG4gKiBAcGFyYW0gcmVxdWVzdCBUaGUgcXVlc3Rpb24gdG8gZ2V0IHRoZSBvcHRpb25zIGZvcm0uXG4gKiBAcmV0dXJucyBUaGUgb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3QuXG4gKi9cbmZ1bmN0aW9uIGdldFJlcXVlc3RPcHRpb25zKFxuXHR1cmw6IHN0cmluZyxcblx0b3B0aW9uczogRmV0Y2hPcHRpb25zLFxuXHRyZXF1ZXN0OiB1bmtub3duXG4pOiB7IHVybDogc3RyaW5nOyBvcHRpb25zOiBGZXRjaE9wdGlvbnMgfSB7XG5cdGNvbnN0IHJlcXVlc3RDbG9uZSA9IG9iamVjdENsb25lKHJlcXVlc3QpIGFzIHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuXHRpZiAoIWlzRW1wdHkocmVxdWVzdENsb25lKSkge1xuXHRcdC8vIFJlcGxhY2UgYW55IHVybCBwYXJhbXMgd2l0aCByZXF1ZXN0IG9iamVjdCBwYXJhbWV0ZXJzXG5cdFx0Ly8gYW5kIHJlbW92ZSB0aGVtIGZyb20gdGhlIHJlcXVlc3RDbG9uZSBmb3IgYWxsIEhUVFAgbWV0aG9kc1xuXHRcdGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhyZXF1ZXN0Q2xvbmUpO1xuXHRcdGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcblx0XHRcdGNvbnN0IHN1YnN0aXR1dGVLZXkgPSBgWyR7a2V5fV1gO1xuXHRcdFx0aWYgKHVybC5pbmNsdWRlcyhzdWJzdGl0dXRlS2V5KSkge1xuXHRcdFx0XHR1cmwgPSB1cmwucmVwbGFjZShzdWJzdGl0dXRlS2V5LCBlbmNvZGVVUklDb21wb25lbnQocmVxdWVzdENsb25lW2tleV0pKTtcblx0XHRcdFx0ZGVsZXRlIHJlcXVlc3RDbG9uZVtrZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdG9wdGlvbnMuaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyA/PyB7fTtcblx0XHRvcHRpb25zLmhlYWRlcnMuQWNjZXB0ID0gXCJhcHBsaWNhdGlvbi9qc29uXCI7XG5cblx0XHQvLyBTZW5kIHRoZSBib2R5IGFzIEpTT04gb25seSBmb3IgcG9zdCwgcHV0IGFuZCBwYXRjaFxuXHRcdGlmIChvcHRpb25zLm1ldGhvZCA9PT0gXCJQT1NUXCIgfHwgb3B0aW9ucy5tZXRob2QgPT09IFwiUFVUXCIgfHwgb3B0aW9ucy5tZXRob2QgPT09IFwiUEFUQ0hcIikge1xuXHRcdFx0b3B0aW9ucy5ib2R5ID0gSlNPTi5zdHJpbmdpZnkocmVxdWVzdENsb25lKTtcblx0XHRcdG9wdGlvbnMuaGVhZGVyc1tcIkNvbnRlbnQtVHlwZVwiXSA9IFwiYXBwbGljYXRpb24vanNvblwiO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IHVybCwgb3B0aW9ucyB9O1xufVxuIiwiaW1wb3J0IHsgZ2V0Q3VycmVudFN5bmMgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgKiBhcyBjb25kaXRpb25zUHJvdmlkZXIgZnJvbSBcIi4vY29uZGl0aW9uc1wiO1xuaW1wb3J0IHsgZmlyZUxpZmVjeWNsZUV2ZW50IH0gZnJvbSBcIi4vbGlmZWN5Y2xlXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiLi9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIHsgRW5kcG9pbnRQcm92aWRlciB9IGZyb20gXCIuL3NoYXBlcy9lbmRwb2ludC1zaGFwZXNcIjtcbmltcG9ydCB7XG5cdEZBVk9SSVRFX1RZUEVfTkFNRV9BUFAsXG5cdEZBVk9SSVRFX1RZUEVfTkFNRV9QQUdFLFxuXHRGQVZPUklURV9UWVBFX05BTUVfUVVFUlksXG5cdEZBVk9SSVRFX1RZUEVfTkFNRV9XT1JLU1BBQ0UsXG5cdHR5cGUgRW5kcG9pbnRGYXZvcml0ZUdldFJlcXVlc3QsXG5cdHR5cGUgRW5kcG9pbnRGYXZvcml0ZUdldFJlc3BvbnNlLFxuXHR0eXBlIEVuZHBvaW50RmF2b3JpdGVMaXN0UmVxdWVzdCxcblx0dHlwZSBFbmRwb2ludEZhdm9yaXRlTGlzdFJlc3BvbnNlLFxuXHR0eXBlIEVuZHBvaW50RmF2b3JpdGVSZW1vdmVSZXF1ZXN0LFxuXHR0eXBlIEVuZHBvaW50RmF2b3JpdGVTZXRSZXF1ZXN0LFxuXHR0eXBlIEZhdm9yaXRlRW50cnksXG5cdHR5cGUgRmF2b3JpdGVJbmZvLFxuXHR0eXBlIEZhdm9yaXRlUHJvdmlkZXJPcHRpb25zLFxuXHR0eXBlIEZhdm9yaXRlVHlwZU5hbWVzXG59IGZyb20gXCIuL3NoYXBlcy9mYXZvcml0ZS1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgRmF2b3JpdGVDaGFuZ2VkTGlmZWN5Y2xlUGF5bG9hZCB9IGZyb20gXCIuL3NoYXBlcy9saWZlY3ljbGUtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IFZlcnNpb25JbmZvIH0gZnJvbSBcIi4vc2hhcGVzL3ZlcnNpb24tc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiRmF2b3JpdGVzXCIpO1xuXG5sZXQgaXNJbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuXG5sZXQgZmF2b3JpdGVPcHRpb25zOiBGYXZvcml0ZVByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZDtcblxubGV0IGVuZHBvaW50czogRW5kcG9pbnRQcm92aWRlcjtcblxubGV0IGN1cnJlbnRWZXJzaW9uSW5mbzogVmVyc2lvbkluZm87XG5cbmNvbnN0IEZBVk9SSVRFX0VORFBPSU5UX0lEX0xJU1QgPSBcImZhdm9yaXRlLWxpc3RcIjtcbmNvbnN0IEZBVk9SSVRFX0VORFBPSU5UX0lEX0dFVCA9IFwiZmF2b3JpdGUtZ2V0XCI7XG5jb25zdCBGQVZPUklURV9FTkRQT0lOVF9JRF9TRVQgPSBcImZhdm9yaXRlLXNldFwiO1xuY29uc3QgRkFWT1JJVEVfRU5EUE9JTlRfSURfUkVNT1ZFID0gXCJmYXZvcml0ZS1yZW1vdmVcIjtcblxuLyoqXG4gKiBJbml0aWFsaXplIHRoZSBmYXZvcml0ZSBwcm92aWRlci5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSBmYXZvcml0ZSBwcm92aWRlci5cbiAqIEBwYXJhbSB2ZXJzaW9uSW5mbyBUaGUgY3VycmVudCB2ZXJzaW9uIGluZm9ybWF0aW9uIGZvciB0aGlzIHBsYXRmb3JtLlxuICogQHBhcmFtIGVuZHBvaW50UHJvdmlkZXIgVGhlIGVuZHBvaW50IHByb3ZpZGVyIHRvIGhlbHAgcmV0cmlldmUgZmF2b3JpdGVzIGZyb20gZW5kcG9pbnRzLlxuICogQHJldHVybnMgTm90aGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQoXG5cdG9wdGlvbnM6IEZhdm9yaXRlUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkLFxuXHR2ZXJzaW9uSW5mbzogVmVyc2lvbkluZm8sXG5cdGVuZHBvaW50UHJvdmlkZXI6IEVuZHBvaW50UHJvdmlkZXJcbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoaXNJbml0aWFsaXplZCkge1xuXHRcdGxvZ2dlci53YXJuKFwiVGhlIGZhdm9yaXRlIHNlcnZpY2UgaXMgYWxyZWFkeSBpbml0aWFsaXplZFwiKTtcblx0XHRyZXR1cm47XG5cdH1cblx0Y3VycmVudFZlcnNpb25JbmZvID0gdmVyc2lvbkluZm87XG5cdGVuZHBvaW50cyA9IGVuZHBvaW50UHJvdmlkZXI7XG5cdGlmICghaXNFbXB0eShvcHRpb25zKSkge1xuXHRcdGlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXHRcdGZhdm9yaXRlT3B0aW9ucyA9IG9wdGlvbnM7XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJPcHRpb25zIHdlcmUgbm90IHBhc3NlZCB0byB0aGUgZmF2b3JpdGUgcHJvdmlkZXIgc28gaXQgY2Fubm90IGJlIGluaXRpYWxpemVkLlwiKTtcblx0fVxuXG5cdGNvbmRpdGlvbnNQcm92aWRlci5yZWdpc3RlckNvbmRpdGlvbihcImZhdm9yaXRlc1wiLCBhc3luYyAoKSA9PiBvcHRpb25zPy5lbmFibGVkID8/IGZhbHNlKTtcblxuXHRmb3IgKGNvbnN0IHR5cGUgb2YgW1xuXHRcdEZBVk9SSVRFX1RZUEVfTkFNRV9BUFAsXG5cdFx0RkFWT1JJVEVfVFlQRV9OQU1FX1dPUktTUEFDRSxcblx0XHRGQVZPUklURV9UWVBFX05BTUVfUEFHRSxcblx0XHRGQVZPUklURV9UWVBFX05BTUVfUVVFUllcblx0XSkge1xuXHRcdGNvbmRpdGlvbnNQcm92aWRlci5yZWdpc3RlckNvbmRpdGlvbihcblx0XHRcdGBmYXZvcml0ZXMtJHt0eXBlfWAsXG5cdFx0XHRhc3luYyAoKSA9PlxuXHRcdFx0XHQob3B0aW9ucz8uZW5hYmxlZCA/PyBmYWxzZSkgJiZcblx0XHRcdFx0KGlzRW1wdHkob3B0aW9ucz8uc3VwcG9ydGVkRmF2b3JpdGVUeXBlcykgfHxcblx0XHRcdFx0XHQob3B0aW9ucz8uc3VwcG9ydGVkRmF2b3JpdGVUeXBlcyA/PyBbXSkuaW5jbHVkZXModHlwZSBhcyBGYXZvcml0ZVR5cGVOYW1lcykpXG5cdFx0KTtcblx0fVxufVxuXG4vKipcbiAqIExldHMgeW91IGdldCBmYXZvcml0ZXMgdGhhdCBoYXZlIGJlZW4gc2F2ZWQuXG4gKiBAcGFyYW0gYnlUeXBlIGRvIHlvdSB3aXNoIHRvIGZpbHRlciBzbyBpdCBvbmx5IHJldHVybnMgYSBwYXJ0aWN1bGFyIHR5cGUgb2YgZmF2b3JpdGVcbiAqIEByZXR1cm5zIGFuIGFycmF5IG9mIGZhdm9yaXRlcyBvciB1bmRlZmluZWQgaWYgdGhlIGVuZHBvaW50IGlzIG5vdCBjb25maWd1cmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2F2ZWRGYXZvcml0ZXMoYnlUeXBlPzogRmF2b3JpdGVUeXBlTmFtZXMpOiBQcm9taXNlPEZhdm9yaXRlRW50cnlbXSB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoZW5kcG9pbnRzLmhhc0VuZHBvaW50KEZBVk9SSVRFX0VORFBPSU5UX0lEX0xJU1QpKSB7XG5cdFx0Y29uc3QgZmF2b3JpdGVzID0gYXdhaXQgZW5kcG9pbnRzLnJlcXVlc3RSZXNwb25zZTxcblx0XHRcdEVuZHBvaW50RmF2b3JpdGVMaXN0UmVxdWVzdCxcblx0XHRcdEVuZHBvaW50RmF2b3JpdGVMaXN0UmVzcG9uc2Vcblx0XHQ+KEZBVk9SSVRFX0VORFBPSU5UX0lEX0xJU1QsIHtcblx0XHRcdGZhdm9yaXRlVHlwZTogYnlUeXBlLFxuXHRcdFx0cGxhdGZvcm06IGZpbi5tZS5pZGVudGl0eS51dWlkXG5cdFx0fSk7XG5cdFx0aWYgKCFpc0VtcHR5KGZhdm9yaXRlcykgJiYgQXJyYXkuaXNBcnJheShmYXZvcml0ZXMuZW50cmllcykpIHtcblx0XHRcdGlmICghaXNFbXB0eShieVR5cGUpKSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBSZXR1cm5pbmcgc2F2ZWQgZmF2b3JpdGVzIGJ5IHR5cGUgJHtieVR5cGV9IGZyb20gY3VzdG9tIHN0b3JhZ2VgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiUmV0dXJuaW5nIHNhdmVkIGZhdm9yaXRlcyBmcm9tIGN1c3RvbSBzdG9yYWdlXCIpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhdm9yaXRlcy5lbnRyaWVzLm1hcCgoZmF2KSA9PiBmYXYucGF5bG9hZCk7XG5cdFx0fVxuXHRcdGxvZ2dlci53YXJuKFwiTm8gcmVzcG9uc2UgZ2V0dGluZyBzYXZlZCBmYXZvcml0ZXMgZnJvbSBjdXN0b20gc3RvcmFnZVwiKTtcblx0XHRyZXR1cm4gW107XG5cdH1cblx0bG9nZ2VyLndhcm4oYFRoZXJlIGhhcyBiZWVuIGEgcmVxdWVzdCBmb3IgYSBsaXN0IG9mIGZhdm9yaXRlcyBidXQgbm8gZW5kcG9pbnQgd2l0aCB0aGUgXG4gICAgaWQ6ICR7RkFWT1JJVEVfRU5EUE9JTlRfSURfTElTVH0gaXMgbGlzdGVkIGluIHlvdXIgZW5kcG9pbnQgY29uZmlndXJhdGlvbi5gKTtcblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBMZXRzIHlvdSBnZXQgYSBmYXZvcml0ZSBieSBpZC5cbiAqIEBwYXJhbSBpZCB0aGUgaWQgb2YgdGhlIGZhdm9yaXRlIGVudHJ5IHlvdSB3aXNoIHRvIGdldFxuICogQHJldHVybnMgRmF2b3JpdGVFbnRyeVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2F2ZWRGYXZvcml0ZShpZDogc3RyaW5nKTogUHJvbWlzZTxGYXZvcml0ZUVudHJ5IHwgdW5kZWZpbmVkPiB7XG5cdGlmIChlbmRwb2ludHMuaGFzRW5kcG9pbnQoRkFWT1JJVEVfRU5EUE9JTlRfSURfR0VUKSkge1xuXHRcdGNvbnN0IGZhdm9yaXRlID0gYXdhaXQgZW5kcG9pbnRzLnJlcXVlc3RSZXNwb25zZTxFbmRwb2ludEZhdm9yaXRlR2V0UmVxdWVzdCwgRW5kcG9pbnRGYXZvcml0ZUdldFJlc3BvbnNlPihcblx0XHRcdEZBVk9SSVRFX0VORFBPSU5UX0lEX0dFVCxcblx0XHRcdHtcblx0XHRcdFx0aWQsXG5cdFx0XHRcdHBsYXRmb3JtOiBmaW4ubWUuaWRlbnRpdHkudXVpZFxuXHRcdFx0fVxuXHRcdCk7XG5cdFx0aWYgKGZhdm9yaXRlKSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhgUmV0dXJuaW5nIHNhdmVkIGZhdm9yaXRlIHdpdGggaWQgJHtpZH0gZnJvbSBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0cmV0dXJuIGZhdm9yaXRlLnBheWxvYWQ7XG5cdFx0fVxuXHRcdGxvZ2dlci53YXJuKGBObyByZXNwb25zZSBnZXR0aW5nIHNhdmVkIGZhdm9yaXRlIHdpdGggaWQgJHtpZH0gZnJvbSBjdXN0b20gc3RvcmFnZWApO1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0bG9nZ2VyLndhcm4oYFRoZXJlIGhhcyBiZWVuIGEgcmVxdWVzdCBmb3IgYSBmYXZvcml0ZSBidXQgbm8gZW5kcG9pbnQgd2l0aCB0aGUgXG4gICAgaWQ6ICR7RkFWT1JJVEVfRU5EUE9JTlRfSURfR0VUfSBpcyBsaXN0ZWQgaW4geW91ciBlbmRwb2ludCBjb25maWd1cmF0aW9uLmApO1xuXHRyZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIExldHMgeW91IHNldCBhIGZhdm9yaXRlLlxuICogQHBhcmFtIGZhdm9yaXRlIHRoZSBmYXZvcml0ZSBlbnRyeSB5b3Ugd2lzaCB0byBzYXZlXG4gKiBAcmV0dXJucyBib29sZWFuIHdhcyBpdCBhIHN1Y2Nlc3NmdWwgc2F2ZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0U2F2ZWRGYXZvcml0ZShmYXZvcml0ZTogRmF2b3JpdGVFbnRyeSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRpZiAoaXNFbXB0eShmYXZvcml0ZS5pZCkpIHtcblx0XHRsb2dnZXIud2Fybihcblx0XHRcdFwiTm8gaWQgd2FzIHBhc3NlZCBmb3IgdGhlIGZhdm9yaXRlIHRvIHNhdmUgc28gd2UgYXJlIHVuYWJsZSB0byBzYXZlIGl0LiBJZiBpdCBpcyBhIG5ldyBlbnRyeSBwbGVhc2UgZ2VuZXJhdGUgYSBndWlkLlwiXG5cdFx0KTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0aWYgKGlzRW1wdHkoZmF2b3JpdGUudGltZXN0YW1wKSkge1xuXHRcdGxvZ2dlci5pbmZvKFwiU2V0dGluZyB0aW1lc3RhbXAuXCIpO1xuXHRcdGZhdm9yaXRlLnRpbWVzdGFtcCA9IG5ldyBEYXRlKCk7XG5cdH1cblx0aWYgKGVuZHBvaW50cy5oYXNFbmRwb2ludChGQVZPUklURV9FTkRQT0lOVF9JRF9TRVQpKSB7XG5cdFx0Y29uc3Qgc3VjY2VzcyA9IGF3YWl0IGVuZHBvaW50cy5hY3Rpb248RW5kcG9pbnRGYXZvcml0ZVNldFJlcXVlc3Q+KEZBVk9SSVRFX0VORFBPSU5UX0lEX1NFVCwge1xuXHRcdFx0aWQ6IGZhdm9yaXRlLmlkLFxuXHRcdFx0cGxhdGZvcm06IGZpbi5tZS5pZGVudGl0eS51dWlkLFxuXHRcdFx0bWV0YURhdGE6IHtcblx0XHRcdFx0dmVyc2lvbjoge1xuXHRcdFx0XHRcdHdvcmtzcGFjZVBsYXRmb3JtQ2xpZW50OiBjdXJyZW50VmVyc2lvbkluZm8ud29ya3NwYWNlUGxhdGZvcm1DbGllbnQsXG5cdFx0XHRcdFx0cGxhdGZvcm1DbGllbnQ6IGN1cnJlbnRWZXJzaW9uSW5mby5wbGF0Zm9ybUNsaWVudFxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0cGF5bG9hZDogZmF2b3JpdGVcblx0XHR9KTtcblx0XHRpZiAoc3VjY2Vzcykge1xuXHRcdFx0bG9nZ2VyLmluZm8oYFNhdmVkIGZhdm9yaXRlIHdpdGggaWQ6ICR7ZmF2b3JpdGUuaWR9IHRvIGN1c3RvbSBzdG9yYWdlYCk7XG5cdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHRhd2FpdCBmaXJlTGlmZWN5Y2xlRXZlbnQ8RmF2b3JpdGVDaGFuZ2VkTGlmZWN5Y2xlUGF5bG9hZD4ocGxhdGZvcm0sIFwiZmF2b3JpdGUtY2hhbmdlZFwiLCB7XG5cdFx0XHRcdGFjdGlvbjogXCJzZXRcIixcblx0XHRcdFx0ZmF2b3JpdGVcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhgVW5hYmxlIHRvIHNhdmUgZmF2b3JpdGUgd2l0aCBpZDogJHtmYXZvcml0ZS5pZH0gdG8gY3VzdG9tIHN0b3JhZ2VgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHN1Y2Nlc3M7XG5cdH1cblx0bG9nZ2VyLndhcm4oYFRoZXJlIGhhcyBiZWVuIGEgcmVxdWVzdCB0byBzYXZlIGEgZmF2b3JpdGUgYnV0IG5vIGVuZHBvaW50IHdpdGggdGhlIFxuICAgIGlkOiAke0ZBVk9SSVRFX0VORFBPSU5UX0lEX1NFVH0gaXMgbGlzdGVkIGluIHlvdXIgZW5kcG9pbnQgY29uZmlndXJhdGlvbi5gKTtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIExldHMgeW91IGRlbGV0ZSBhIGZhdm9yaXRlLlxuICogQHBhcmFtIGlkIHRoZSBpZCBvZiB0aGUgZmF2b3JpdGUgZW50cnkgeW91IHdpc2ggdG8gZGVsZXRlXG4gKiBAcmV0dXJucyBib29sZWFuIHdhcyBpdCBhIHN1Y2Nlc3NmdWwgZGVsZXRlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVTYXZlZEZhdm9yaXRlKGlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0aWYgKGlzRW1wdHkoaWQpKSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJObyBpZCB3YXMgcGFzc2VkIGZvciB0aGUgZmF2b3JpdGUgdG8gZGVsZXRlIHNvIHdlIGFyZSB1bmFibGUgdG8gZGVsZXRlIGl0LlwiKTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0aWYgKGVuZHBvaW50cy5oYXNFbmRwb2ludChGQVZPUklURV9FTkRQT0lOVF9JRF9SRU1PVkUpKSB7XG5cdFx0Y29uc3QgZmF2b3JpdGUgPSBhd2FpdCBnZXRTYXZlZEZhdm9yaXRlKGlkKTtcblxuXHRcdGxldCBzdWNjZXNzID0gZmFsc2U7XG5cdFx0aWYgKGlzRW1wdHkoZmF2b3JpdGUpKSB7XG5cdFx0XHRsb2dnZXIud2FybihgVW5hYmxlIHRvIGRlbGV0ZSBmYXZvcml0ZSB3aXRoIGlkOiAke2lkfSBmcm9tIGN1c3RvbSBzdG9yYWdlIGFzIGl0IGRvZXMgbm90IGV4aXN0YCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1Y2Nlc3MgPSBhd2FpdCBlbmRwb2ludHMuYWN0aW9uPEVuZHBvaW50RmF2b3JpdGVSZW1vdmVSZXF1ZXN0PihGQVZPUklURV9FTkRQT0lOVF9JRF9SRU1PVkUsIHtcblx0XHRcdFx0aWQsXG5cdFx0XHRcdHBsYXRmb3JtOiBmaW4ubWUuaWRlbnRpdHkudXVpZFxuXHRcdFx0fSk7XG5cdFx0XHRpZiAoc3VjY2Vzcykge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgU2F2ZWQgZmF2b3JpdGUgd2l0aCBpZDogJHtpZH0gd2FzIGRlbGV0ZWQgZnJvbSBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHRcdGF3YWl0IGZpcmVMaWZlY3ljbGVFdmVudDxGYXZvcml0ZUNoYW5nZWRMaWZlY3ljbGVQYXlsb2FkPihwbGF0Zm9ybSwgXCJmYXZvcml0ZS1jaGFuZ2VkXCIsIHtcblx0XHRcdFx0XHRhY3Rpb246IFwiZGVsZXRlXCIsXG5cdFx0XHRcdFx0ZmF2b3JpdGVcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIud2FybihgVW5hYmxlIHRvIGRlbGV0ZSBmYXZvcml0ZSB3aXRoIGlkOiAke2lkfSBmcm9tIGN1c3RvbSBzdG9yYWdlYCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzdWNjZXNzO1xuXHR9XG5cdGxvZ2dlci53YXJuKGBUaGVyZSBoYXMgYmVlbiBhIHJlcXVlc3QgdG8gZGVsZXRlIGEgZmF2b3JpdGUgYnV0IG5vIGVuZHBvaW50IHdpdGggdGhlIFxuICAgIGlkOiAke0ZBVk9SSVRFX0VORFBPSU5UX0lEX1JFTU9WRX0gaXMgbGlzdGVkIGluIHlvdXIgZW5kcG9pbnQgY29uZmlndXJhdGlvbi5gKTtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIEdldHMgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgZmF2b3JpdGVzIHN1Y2ggYXMgdGhlIHR5cGVzIGVuYWJsZWQgYW5kIHdoZXRoZXIgdGhlIHByb3ZpZGVyIGlzIGVuYWJsZWQuXG4gKiBAcmV0dXJucyBBbiBpbmZvIG9iamVjdCB3aXRoIHRoZSBkZXRhaWxzIHRoYXQgY2FuIGJlIHVzZWQgdG8gaGVscCBidWlsZCBzdXBwb3J0IGZvciBmYXZvcml0ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbmZvKCk6IEZhdm9yaXRlSW5mbyB7XG5cdGlmIChpc0VtcHR5KGZhdm9yaXRlT3B0aW9ucykpIHtcblx0XHRsb2dnZXIud2FybihcIlRoZSBvcHRpb25zIGZvciBmYXZvcml0ZXMgaGFzIG5vdCBiZWVuIHNldCB5ZXQuXCIpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRpc0VuYWJsZWQ6IGZhbHNlXG5cdFx0fTtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdGlzRW5hYmxlZDogZmF2b3JpdGVPcHRpb25zLmVuYWJsZWQgPz8gdHJ1ZSxcblx0XHRmYXZvcml0ZUljb246IGZhdm9yaXRlT3B0aW9ucy5mYXZvcml0ZUljb24sXG5cdFx0dW5mYXZvcml0ZUljb246IGZhdm9yaXRlT3B0aW9ucy51bmZhdm9yaXRlSWNvbixcblx0XHRjb21tYW5kOiBmYXZvcml0ZU9wdGlvbnMuZmF2b3JpdGVDb21tYW5kLFxuXHRcdGVuYWJsZWRUeXBlczogZmF2b3JpdGVPcHRpb25zLnN1cHBvcnRlZEZhdm9yaXRlVHlwZXNcblx0fTtcbn1cbiIsImltcG9ydCB0eXBlIHsgSW1hZ2UgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlXCI7XG5pbXBvcnQgdHlwZSB7IFBsYXRmb3JtQXBwIH0gZnJvbSBcIi4uLy4uL3NoYXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRBcHBEZWZpbml0aW9uLFxuXHRBcHBJY29uLFxuXHRBcHBJbWFnZSxcblx0QXBwSW50ZW50cyxcblx0QXBwTWV0YWRhdGEsXG5cdEN1c3RvbUNvbmZpZ1xufSBmcm9tIFwiLi4vLi4vc2hhcGVzL2ZkYzMtMS0yLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBBcHBJbnRlcm9wLCBBcHBJbnRlbnRzIGFzIEZEQzNUd29Qb2ludFplcm9BcHBJbnRlbnRzIH0gZnJvbSBcIi4uLy4uL3NoYXBlcy9mZGMzLTItMC1zaGFwZXNcIjtcbmltcG9ydCB7IGlzQm9vbGVhbiwgaXNFbXB0eSwgaXNTdHJpbmdWYWx1ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG4vKipcbiAqIE1hcCB0aGUgYXBwIGRlZmluaXRpb24gdG8gYSBwbGF0Zm9ybSBhcHAuXG4gKiBAcGFyYW0gYXBwIFRoZSBhcHAgZGVmaW5pdGlvbiB0byBtYXAuXG4gKiBAcmV0dXJucyBUaGUgcGxhdGZvcm0gYXBwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9QbGF0Zm9ybUFwcChhcHA6IEFwcERlZmluaXRpb24pOiBQbGF0Zm9ybUFwcCB7XG5cdGNvbnN0IHBsYXRmb3JtQXBwOiBQbGF0Zm9ybUFwcCA9IHtcblx0XHRhcHBJZDogYXBwLmFwcElkLFxuXHRcdG5hbWU6IGFwcC5uYW1lID8/IGFwcC5hcHBJZCxcblx0XHR0aXRsZTogYXBwLnRpdGxlID8/IGFwcC5uYW1lLFxuXHRcdG1hbmlmZXN0VHlwZTogYXBwLm1hbmlmZXN0VHlwZSxcblx0XHRtYW5pZmVzdDogZ2V0TWFuaWZlc3RGcm9tRkRDMyhhcHApIGFzIHN0cmluZyxcblx0XHRkZXNjcmlwdGlvbjogYXBwLmRlc2NyaXB0aW9uLFxuXHRcdGN1c3RvbUNvbmZpZzogYXBwLmN1c3RvbUNvbmZpZyxcblx0XHRpbnRlbnRzOiBhcHAuaW50ZW50cyxcblx0XHRpbnRlcm9wOiBtYXBJbnRlcm9wRnJvbUZEQzMoYXBwLmludGVudHMpLFxuXHRcdHRhZ3M6IG1hcFRhZ3NGcm9tRkRDMyhhcHApLFxuXHRcdHZlcnNpb246IGFwcC52ZXJzaW9uLFxuXHRcdHB1Ymxpc2hlcjogYXBwLnB1Ymxpc2hlciA/PyBcIlwiLFxuXHRcdGNvbnRhY3RFbWFpbDogYXBwLmNvbnRhY3RFbWFpbCxcblx0XHRzdXBwb3J0RW1haWw6IGFwcC5zdXBwb3J0RW1haWwsXG5cdFx0aWNvbnM6IG1hcEljb25zRnJvbUZEQzMoYXBwLmljb25zKSxcblx0XHRpbWFnZXM6IG1hcEltYWdlc0Zyb21GREMzKGFwcC5pbWFnZXMpLFxuXHRcdHByaXZhdGU6IG1hcFByaXZhdGVGcm9tRkRDMyhhcHApLFxuXHRcdGF1dG9zdGFydDogbWFwQXV0b3N0YXJ0RnJvbUZEQzMoYXBwKSxcblx0XHRpbnN0YW5jZU1vZGU6IGFwcC5jdXN0b21Db25maWc/Lmluc3RhbmNlTW9kZSxcblx0XHR0b29sdGlwOiBhcHAudG9vbHRpcFxuXHR9O1xuXHRyZXR1cm4gcGxhdGZvcm1BcHA7XG59XG5cbi8qKlxuICogTWFwIGEgcGxhdGZvcm0gYXBwIHRvIGFuIEZEQzMgMS4yIGFwcCBkZWZpbml0aW9uLlxuICogQHBhcmFtIGFwcCBUaGUgYXBwIGRlZmluaXRpb24gdG8gbWFwLlxuICogQHJldHVybnMgVGhlIGZkYzMgMS4yIGFwcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvRkRDM0FwcChhcHA6IFBsYXRmb3JtQXBwKTogQXBwRGVmaW5pdGlvbiB7XG5cdGNvbnN0IG1hbmlmZXN0VHlwZTogc3RyaW5nID0gYCR7YXBwLm1hbmlmZXN0VHlwZX1gO1xuXG5cdGNvbnN0IGZkYzNBcHA6IEFwcERlZmluaXRpb24gPSB7XG5cdFx0YXBwSWQ6IGFwcC5hcHBJZCxcblx0XHRuYW1lOiBhcHAubmFtZSA/PyBhcHAuYXBwSWQsXG5cdFx0dGl0bGU6IGFwcC50aXRsZSA/PyBhcHAubmFtZSxcblx0XHRtYW5pZmVzdFR5cGUsXG5cdFx0bWFuaWZlc3Q6IGFwcC5tYW5pZmVzdCBhcyBzdHJpbmcsXG5cdFx0ZGVzY3JpcHRpb246IGFwcC5kZXNjcmlwdGlvbixcblx0XHRjdXN0b21Db25maWc6IG1hcEN1c3RvbUNvbmZpZ0Zyb21QbGF0Zm9ybUFwcChhcHApLFxuXHRcdGludGVudHM6IG1hcEludGVudHNGcm9tUGxhdGZvcm1BcHAoYXBwKSxcblx0XHRjYXRlZ29yaWVzOiBhcHAudGFncyA/PyBbXSxcblx0XHR2ZXJzaW9uOiBhcHAudmVyc2lvbixcblx0XHRwdWJsaXNoZXI6IGFwcC5wdWJsaXNoZXIgPz8gXCJcIixcblx0XHRjb250YWN0RW1haWw6IGFwcC5jb250YWN0RW1haWwsXG5cdFx0c3VwcG9ydEVtYWlsOiBhcHAuc3VwcG9ydEVtYWlsLFxuXHRcdGljb25zOiBtYXBJY29uc0Zyb21QbGF0Zm9ybUFwcChhcHApLFxuXHRcdGltYWdlczogbWFwSW1hZ2VzRnJvbVBsYXRmb3JtQXBwKGFwcCksXG5cdFx0dG9vbHRpcDogYXBwLnRvb2x0aXBcblx0fTtcblx0cmV0dXJuIGZkYzNBcHA7XG59XG5cbi8qKlxuICogTWFwIHRoZSBwbGF0Zm9ybSBhcHAgdG8gYXBwIG1ldGFkYXRhLlxuICogQHBhcmFtIGFwcCBUaGUgYXBwbGljYXRpb24gdG8gbWFwLlxuICogQHJldHVybnMgVGhlIGFwcCBtZXRhZGF0YS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvQXBwTWV0YURhdGEoYXBwOiBQbGF0Zm9ybUFwcCk6IEFwcE1ldGFkYXRhIHtcblx0Y29uc3QgaWNvbnM6IHN0cmluZ1tdID0gW107XG5cdGNvbnN0IGltYWdlczogc3RyaW5nW10gPSBbXTtcblx0aWYgKEFycmF5LmlzQXJyYXkoYXBwLmljb25zKSkge1xuXHRcdGZvciAoY29uc3QgaWNvbiBvZiBhcHAuaWNvbnMpIHtcblx0XHRcdGlmICghaXNFbXB0eShpY29uLnNyYykpIHtcblx0XHRcdFx0aWNvbnMucHVzaChpY29uLnNyYyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGlmIChBcnJheS5pc0FycmF5KGFwcC5pbWFnZXMpKSB7XG5cdFx0Zm9yIChjb25zdCBpbWFnZSBvZiBhcHAuaW1hZ2VzKSB7XG5cdFx0XHRpZiAoIWlzRW1wdHkoaW1hZ2Uuc3JjKSkge1xuXHRcdFx0XHRpbWFnZXMucHVzaChpbWFnZS5zcmMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRjb25zdCBhcHBNZXRhRGF0YTogQXBwTWV0YWRhdGEgPSB7XG5cdFx0YXBwSWQ6IGFwcC5hcHBJZCxcblx0XHRkZXNjcmlwdGlvbjogYXBwLmRlc2NyaXB0aW9uLFxuXHRcdGljb25zLFxuXHRcdGltYWdlcyxcblx0XHRuYW1lOiBhcHAuYXBwSWQsXG5cdFx0dGl0bGU6IGFwcC50aXRsZSxcblx0XHR0b29sdGlwOiBhcHAudG9vbHRpcCxcblx0XHR2ZXJzaW9uOiBhcHAudmVyc2lvblxuXHR9O1xuXHRyZXR1cm4gYXBwTWV0YURhdGE7XG59XG5cbi8qKlxuICogTWFwIHRoZSBhcHAgZGVmaW5pdGlvbiBpbnRlcm9wIGRhdGEgdG8gYXBwIGludGVyb3AgZm9ybWF0LlxuICogQHBhcmFtIGludGVudHMgVGhlIGludGVudHMgdG8gbWFwLlxuICogQHJldHVybnMgVGhlIGFwcCBpbnRlcm9wLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwSW50ZXJvcEZyb21GREMzKGludGVudHM6IEFwcEludGVudHNbXSB8IHVuZGVmaW5lZCk6IEFwcEludGVyb3AgfCB1bmRlZmluZWQge1xuXHRpZiAoaXNFbXB0eShpbnRlbnRzKSkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IGxpc3RlbnNGb3I6IHsgW2tleTogc3RyaW5nXTogRkRDM1R3b1BvaW50WmVyb0FwcEludGVudHMgfSA9IHt9O1xuXG5cdGZvciAoY29uc3QgaW50ZW50IG9mIGludGVudHMpIHtcblx0XHRsaXN0ZW5zRm9yW2ludGVudC5uYW1lXSA9IHtcblx0XHRcdGNvbnRleHRzOiBpbnRlbnQuY29udGV4dHMsXG5cdFx0XHRjdXN0b21Db25maWc6IGludGVudC5jdXN0b21Db25maWcsXG5cdFx0XHRkaXNwbGF5TmFtZTogaW50ZW50LmRpc3BsYXlOYW1lXG5cdFx0fTtcblx0fVxuXG5cdGNvbnN0IGludGVyb3A6IEFwcEludGVyb3AgPSB7XG5cdFx0aW50ZW50czogeyBsaXN0ZW5zRm9yIH1cblx0fTtcblxuXHRyZXR1cm4gaW50ZXJvcDtcbn1cblxuLyoqXG4gKiBNYXBzIHRoZSBpbnRlbnRzIGZyb20gYSBwbGF0Zm9ybSBhcHAgdG8gYW4gRkRDMyAxLjIgaW50ZW50cyBhcnJheS5cbiAqIEBwYXJhbSBhcHAgVGhlIHBsYXRmb3JtIGFwcCB0byB1c2UgYXMgYSBzb3VyY2VcbiAqIEByZXR1cm5zIGFuIEFycmF5IG9mIEludGVudHMgaW4gRkRDMyAxLjIgZm9ybWF0XG4gKi9cbmZ1bmN0aW9uIG1hcEludGVudHNGcm9tUGxhdGZvcm1BcHAoYXBwOiBQbGF0Zm9ybUFwcCk6IEFwcEludGVudHNbXSB7XG5cdGNvbnN0IGludGVudHM6IEFwcEludGVudHNbXSA9IFtdO1xuXHRjb25zdCBwYXNzZWRJbnRlbnRzID0gYXBwLmludGVyb3A/LmludGVudHM/Lmxpc3RlbnNGb3I7XG5cdGlmICghaXNFbXB0eShwYXNzZWRJbnRlbnRzKSkge1xuXHRcdGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwYXNzZWRJbnRlbnRzKTtcblx0XHRmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG5cdFx0XHRjb25zdCBkaXNwbGF5TmFtZTogc3RyaW5nID0gcGFzc2VkSW50ZW50c1trZXldLmRpc3BsYXlOYW1lID8/IGtleTtcblx0XHRcdGludGVudHMucHVzaCh7XG5cdFx0XHRcdG5hbWU6IGtleSxcblx0XHRcdFx0ZGlzcGxheU5hbWUsXG5cdFx0XHRcdGNvbnRleHRzOiBwYXNzZWRJbnRlbnRzW2tleV0uY29udGV4dHMsXG5cdFx0XHRcdGN1c3RvbUNvbmZpZzogcGFzc2VkSW50ZW50c1trZXldLmN1c3RvbUNvbmZpZ1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cdGlmIChpbnRlbnRzLmxlbmd0aCA9PT0gMCAmJiAhaXNFbXB0eShhcHAuaW50ZW50cykpIHtcblx0XHRyZXR1cm4gYXBwLmludGVudHM7XG5cdH1cblx0cmV0dXJuIGludGVudHM7XG59XG5cbi8qKlxuICogVGFrZXMgYSBwbGF0Zm9ybSBhcHAgYW5kIHJldHVybnMgYW4gRkRDMyBjdXN0b20gY29uZmlnIG9iamVjdC5cbiAqIEBwYXJhbSBhcHAgVGhlIHBsYXRmb3JtIGFwcCB0byBtYXAgaW50byBhIGN1c3RvbUNvbmZpZyBvYmplY3QuXG4gKiBAcmV0dXJucyBhbiBGREMzIDEuMiBjdXN0b21Db25maWcgb2JqZWN0IGJhc2VkIG9uIHRoZSBwbGF0Zm9ybSBhcHAgc2V0dGluZ3MuXG4gKi9cbmZ1bmN0aW9uIG1hcEN1c3RvbUNvbmZpZ0Zyb21QbGF0Zm9ybUFwcChhcHA6IFBsYXRmb3JtQXBwKTogQ3VzdG9tQ29uZmlnIHtcblx0Y29uc3QgY29uZmlnOiBDdXN0b21Db25maWcgPSB7XG5cdFx0YXV0b3N0YXJ0OiBtYXBCb29sZWFuVmFsdWUoYXBwPy5hdXRvc3RhcnQsIGZhbHNlKS50b1N0cmluZygpLFxuXHRcdGluc3RhbmNlTW9kZTogYXBwLmluc3RhbmNlTW9kZSxcblx0XHRwcml2YXRlOiBtYXBCb29sZWFuVmFsdWUoYXBwLnByaXZhdGUsIGZhbHNlKS50b1N0cmluZygpXG5cdH07XG5cdHJldHVybiBjb25maWc7XG59XG5cbi8qKlxuICogTWFwIHRoZSBpY29uIGZvcm1hdC5cbiAqIEBwYXJhbSBpY29ucyBUaGUgaWNvbnMgdG8gbWFwLlxuICogQHJldHVybnMgVGhlIG1hcHBlZCBpY29ucy5cbiAqL1xuZnVuY3Rpb24gbWFwSWNvbnNGcm9tRkRDMyhpY29uczogQXBwSWNvbltdIHwgdW5kZWZpbmVkKTogSW1hZ2VbXSB7XG5cdGlmICghQXJyYXkuaXNBcnJheShpY29ucykpIHtcblx0XHRyZXR1cm4gW107XG5cdH1cblx0Y29uc3QgYXBwSWNvbnM6IEltYWdlW10gPSBbXTtcblx0Zm9yIChjb25zdCBhcHBJY29uIG9mIGljb25zKSB7XG5cdFx0YXBwSWNvbnMucHVzaCh7IHNyYzogYXBwSWNvbi5pY29uIH0pO1xuXHR9XG5cdHJldHVybiBhcHBJY29ucztcbn1cblxuLyoqXG4gKiBUYWtlcyBhIFBsYXRmb3JtIEFwcCBhbmQgY29udmVydHMgaWNvbnMgc28gdGhleSBhcmUgaW4gRkRDMyAxLjIgZm9ybWF0LlxuICogQHBhcmFtIGFwcCBUaGUgcGxhdGZvcm0gYXBwIHRvIHVzZSBhcyBhIHNvdXJjZS5cbiAqIEByZXR1cm5zIFRoZSBhcnJheSBvZiBhcHAgaWNvbnMgaW4gRkRDMyAxLjIgZm9ybWF0LlxuICovXG5mdW5jdGlvbiBtYXBJY29uc0Zyb21QbGF0Zm9ybUFwcChhcHA6IFBsYXRmb3JtQXBwKTogQXBwSWNvbltdIHtcblx0aWYgKCFBcnJheS5pc0FycmF5KGFwcC5pY29ucykpIHtcblx0XHRyZXR1cm4gW107XG5cdH1cblx0Y29uc3QgYXBwSWNvbnM6IEFwcEljb25bXSA9IFtdO1xuXHRmb3IgKGNvbnN0IGFwcEljb24gb2YgYXBwLmljb25zKSB7XG5cdFx0YXBwSWNvbnMucHVzaCh7IGljb246IGFwcEljb24uc3JjIH0pO1xuXHR9XG5cdHJldHVybiBhcHBJY29ucztcbn1cblxuLyoqXG4gKiBNYXAgdGhlIGltYWdlIGZvcm1hdC5cbiAqIEBwYXJhbSBpbWFnZXMgVGhlIGltYWdlcyB0byBtYXAuXG4gKiBAcmV0dXJucyBUaGUgbWFwcGVkIGltYWdlcy5cbiAqL1xuZnVuY3Rpb24gbWFwSW1hZ2VzRnJvbUZEQzMoaW1hZ2VzOiBBcHBJbWFnZVtdIHwgdW5kZWZpbmVkKTogSW1hZ2VbXSB7XG5cdGlmICghQXJyYXkuaXNBcnJheShpbWFnZXMpKSB7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG5cdGNvbnN0IGFwcEltYWdlczogSW1hZ2VbXSA9IFtdO1xuXHRmb3IgKGNvbnN0IGFwcEltYWdlIG9mIGltYWdlcykge1xuXHRcdGFwcEltYWdlcy5wdXNoKHsgc3JjOiBhcHBJbWFnZS51cmwgfSk7XG5cdH1cblx0cmV0dXJuIGFwcEltYWdlcztcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGFycmF5IG9mIGltYWdlcyBpbiBGREMzIDEuMiBmb3JtYXQgZnJvbSBhIFBsYXRmb3JtIEFwcC5cbiAqIEBwYXJhbSBhcHAgVGhlIHBsYXRmb3JtIGFwcCB0byB1c2UgYXMgYSBzb3VyY2UuXG4gKiBAcmV0dXJucyBUaGUgbWFwcGVkIGltYWdlcy5cbiAqL1xuZnVuY3Rpb24gbWFwSW1hZ2VzRnJvbVBsYXRmb3JtQXBwKGFwcDogUGxhdGZvcm1BcHApOiBBcHBJbWFnZVtdIHtcblx0aWYgKCFBcnJheS5pc0FycmF5KGFwcC5pbWFnZXMpKSB7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG5cdGNvbnN0IGFwcEltYWdlczogQXBwSW1hZ2VbXSA9IFtdO1xuXHRmb3IgKGNvbnN0IGFwcEltYWdlIG9mIGFwcC5pbWFnZXMpIHtcblx0XHRhcHBJbWFnZXMucHVzaCh7IHVybDogYXBwSW1hZ2Uuc3JjIH0pO1xuXHR9XG5cdHJldHVybiBhcHBJbWFnZXM7XG59XG5cbi8qKlxuICogR2V0IHRoZSBtYW5pZmVzdCB3aGljaCBjYW4gYmUgcGxhaW4gc3RyaW5nIG9yIEpTT04uXG4gKiBAcGFyYW0gYXBwIFRoZSBhcHAgdG8gZ2V0IHRoZSBtYW5pZmVzdCBmcm9tLlxuICogQHJldHVybnMgVGhlIG1hbmlmZXN0LlxuICovXG5mdW5jdGlvbiBnZXRNYW5pZmVzdEZyb21GREMzKGFwcDogQXBwRGVmaW5pdGlvbik6IHVua25vd24ge1xuXHRpZiAodHlwZW9mIGFwcC5tYW5pZmVzdCA9PT0gXCJzdHJpbmdcIiAmJiBhcHAubWFuaWZlc3Quc3RhcnRzV2l0aChcIntcIikpIHtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShhcHAubWFuaWZlc3QpO1xuXHR9XG5cblx0cmV0dXJuIGFwcC5tYW5pZmVzdDtcbn1cblxuLyoqXG4gKiBNYXAgdGhlIHRhZ3MuXG4gKiBAcGFyYW0gYXBwIFRoZSBhcHAgZGVmaW5pdGlvbiB0byBtYXAgdGhlIHRhZ3MgZm9yLlxuICogQHJldHVybnMgVGhlIG1hcHBlZCB0YWdzLFxuICovXG5mdW5jdGlvbiBtYXBUYWdzRnJvbUZEQzMoYXBwOiBBcHBEZWZpbml0aW9uICYgeyB0YWdzPzogc3RyaW5nW10gfSk6IHN0cmluZ1tdIHtcblx0Y29uc3QgdGFnczogc3RyaW5nW10gPSBhcHAudGFncyA/PyBhcHAuY2F0ZWdvcmllcyA/PyBbXTtcblx0aWYgKHRhZ3MubGVuZ3RoID09PSAwKSB7XG5cdFx0dGFncy5wdXNoKGFwcC5tYW5pZmVzdFR5cGUpO1xuXHR9XG5cblx0cmV0dXJuIHRhZ3M7XG59XG5cbi8qKlxuICogTWFwIHRoZSBwcml2YXRlIGZsYWcuXG4gKiBAcGFyYW0gYXBwIFRoZSBhcHAgY29udGFpbmluZyB0aGUgYXBwLlxuICogQHJldHVybnMgVGhlIGZsYWcgb3IgZmFsc2UgaWYgbm90IGZvdW5kLlxuICovXG5mdW5jdGlvbiBtYXBQcml2YXRlRnJvbUZEQzMoYXBwOiBBcHBEZWZpbml0aW9uKTogYm9vbGVhbiB7XG5cdHJldHVybiBtYXBCb29sZWFuVmFsdWUoYXBwPy5jdXN0b21Db25maWc/LnByaXZhdGUsIGZhbHNlKTtcbn1cblxuLyoqXG4gKiBNYXAgdGhlIGF1dG9zdGFydCBmbGFnLlxuICogQHBhcmFtIGFwcCBUaGUgYXBwIGNvbnRhaW5pbmcgdGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBmbGFnIG9yIGZhbHNlIGlmIG5vdCBmb3VuZC5cbiAqL1xuZnVuY3Rpb24gbWFwQXV0b3N0YXJ0RnJvbUZEQzMoYXBwOiBBcHBEZWZpbml0aW9uKTogYm9vbGVhbiB7XG5cdHJldHVybiBtYXBCb29sZWFuVmFsdWUoYXBwPy5jdXN0b21Db25maWc/LmF1dG9zdGFydCwgZmFsc2UpO1xufVxuXG4vKipcbiAqIE1hcCBhIGJvb2xlYW4gb3Igc3RyaW5nIHRvIGEgcmVhbCBib29sZWFuIHZhbHVlLlxuICogQHBhcmFtIGZsYWcgVGhlIGZsYWcgdG8gY29udmVydC5cbiAqIEBwYXJhbSBkZWZhdWx0RmxhZyBUaGUgZGVmYXVsdCB2YWx1ZSBpZiBtaXNzaW5nLlxuICogQHJldHVybnMgVGhlIG1hcHBlZCBmbGFnLlxuICovXG5mdW5jdGlvbiBtYXBCb29sZWFuVmFsdWUoZmxhZzogc3RyaW5nIHwgYm9vbGVhbiB8IHVuZGVmaW5lZCwgZGVmYXVsdEZsYWc6IGJvb2xlYW4pOiBib29sZWFuIHtcblx0aWYgKGlzU3RyaW5nVmFsdWUoZmxhZykgfHwgaXNCb29sZWFuKGZsYWcpKSB7XG5cdFx0c3dpdGNoIChmbGFnKSB7XG5cdFx0XHRjYXNlIFwiRmFsc2VcIjpcblx0XHRcdGNhc2UgXCJmYWxzZVwiOlxuXHRcdFx0Y2FzZSBmYWxzZTpcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0Y2FzZSBcIlRydWVcIjpcblx0XHRcdGNhc2UgXCJ0cnVlXCI6XG5cdFx0XHRjYXNlIHRydWU6XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0Ly8gaWYgc29tZW9uZSBoYXMgZGVmaW5lZCBhIGZsYWcgdGhlbiB0aGUgbGlrZWx5IGhvb2Qgd2FzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHZhbHVlXG5cdFx0XHRcdHJldHVybiAhZGVmYXVsdEZsYWc7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBkZWZhdWx0RmxhZztcbn1cbiIsImltcG9ydCB0eXBlIHsgQXBwTWV0YWRhdGEgfSBmcm9tIFwiQGZpbm9zL2ZkYzNcIjtcbmltcG9ydCB0eXBlIHsgQXBwSW50ZW50IH0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZVwiO1xuaW1wb3J0IHR5cGUgeyBQbGF0Zm9ybUFwcCB9IGZyb20gXCIuLi8uLi9zaGFwZXMvYXBwLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRBcHBEZWZpbml0aW9uLFxuXHRXZWJBcHBEZXRhaWxzLFxuXHROYXRpdmVBcHBEZXRhaWxzLFxuXHRPbmxpbmVOYXRpdmVBcHBEZXRhaWxzLFxuXHRBcHBJbnRlcm9wLFxuXHRBcHBEZWZpbml0aW9uVHlwZSxcblx0QXBwSW50ZW50cyxcblx0SG9zdE1hbmlmZXN0c1xufSBmcm9tIFwiLi4vLi4vc2hhcGVzL2ZkYzMtMi0wLXNoYXBlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSwgaXNPYmplY3QgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuLyoqXG4gKiBNYXAgdGhlIGFwcCBkZWZpbml0aW9uIHRvIGEgcGxhdGZvcm0gYXBwLlxuICogQHBhcmFtIGFwcCBUaGUgYXBwIGRlZmluaXRpb24gdG8gbWFwLlxuICogQHJldHVybnMgVGhlIHBsYXRmb3JtIGFwcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvUGxhdGZvcm1BcHAoYXBwOiBBcHBEZWZpbml0aW9uKTogUGxhdGZvcm1BcHAge1xuXHRjb25zdCBwbGF0Zm9ybUFwcDogUGxhdGZvcm1BcHAgPSB7XG5cdFx0YXBwSWQ6IGFwcC5hcHBJZCxcblx0XHRuYW1lOiBhcHAubmFtZSA/PyBhcHAuYXBwSWQsXG5cdFx0dGl0bGU6IGFwcC50aXRsZSA/PyBhcHAubmFtZSxcblx0XHRtYW5pZmVzdFR5cGU6IG1hcE1hbmlmZXN0VHlwZUZyb21GREMzKGFwcCksXG5cdFx0bWFuaWZlc3Q6IGdldE1hbmlmZXN0RnJvbUZEQzMoYXBwKSBhcyBzdHJpbmcsXG5cdFx0ZGVzY3JpcHRpb246IGFwcC5kZXNjcmlwdGlvbixcblx0XHRpbnN0YW5jZU1vZGU6IGFwcD8uaG9zdE1hbmlmZXN0cz8uT3BlbkZpbj8uY29uZmlnPy5pbnN0YW5jZU1vZGUsXG5cdFx0aW50ZW50czogbWFwSW50ZW50c0Zyb21GREMzKGFwcC5pbnRlcm9wKSxcblx0XHRpbnRlcm9wOiBhcHAuaW50ZXJvcCxcblx0XHRjdXN0b21Db25maWc6IGFwcC5jdXN0b21Db25maWcsXG5cdFx0dGFnczogYXBwLmNhdGVnb3JpZXMsXG5cdFx0dmVyc2lvbjogYXBwLnZlcnNpb24sXG5cdFx0cHVibGlzaGVyOiBhcHAucHVibGlzaGVyID8/IFwiXCIsXG5cdFx0Y29udGFjdEVtYWlsOiBhcHAuY29udGFjdEVtYWlsLFxuXHRcdHN1cHBvcnRFbWFpbDogYXBwLnN1cHBvcnRFbWFpbCxcblx0XHRpY29uczogYXBwLmljb25zID8/IFtdLFxuXHRcdGltYWdlczogYXBwLnNjcmVlbnNob3RzLFxuXHRcdHByaXZhdGU6IGFwcD8uaG9zdE1hbmlmZXN0cz8uT3BlbkZpbj8uY29uZmlnPy5wcml2YXRlLFxuXHRcdGF1dG9zdGFydDogYXBwPy5ob3N0TWFuaWZlc3RzPy5PcGVuRmluPy5jb25maWc/LmF1dG9zdGFydFxuXHR9O1xuXHRyZXR1cm4gcGxhdGZvcm1BcHA7XG59XG5cbi8qKlxuICogTWFwIGEgcGxhdGZvcm0gYXBwIHRvIGFuIEZEQzMgMi4wIGFwcCBkZWZpbml0aW9uLlxuICogQHBhcmFtIGFwcCBUaGUgYXBwIGRlZmluaXRpb24gdG8gbWFwLlxuICogQHJldHVybnMgVGhlIGZkYzMgMi4wIGFwcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvRkRDM0FwcChhcHA6IFBsYXRmb3JtQXBwKTogQXBwRGVmaW5pdGlvbiB7XG5cdGNvbnN0IGZkYzNBcHA6IEFwcERlZmluaXRpb24gPSB7XG5cdFx0YXBwSWQ6IGFwcC5hcHBJZCxcblx0XHRuYW1lOiBhcHAubmFtZSA/PyBhcHAuYXBwSWQsXG5cdFx0dGl0bGU6IGFwcC50aXRsZSA/PyBhcHAubmFtZSxcblx0XHR0eXBlOiBtYXBUeXBlRnJvbVBsYXRmb3JtQXBwKGFwcCksXG5cdFx0ZGV0YWlsczoge30sXG5cdFx0ZGVzY3JpcHRpb246IGFwcC5kZXNjcmlwdGlvbixcblx0XHRjYXRlZ29yaWVzOiBhcHAudGFncyA/PyBbXSxcblx0XHR2ZXJzaW9uOiBhcHAudmVyc2lvbixcblx0XHRwdWJsaXNoZXI6IGFwcC5wdWJsaXNoZXIgPz8gXCJcIixcblx0XHRjb250YWN0RW1haWw6IGFwcC5jb250YWN0RW1haWwsXG5cdFx0c3VwcG9ydEVtYWlsOiBhcHAuc3VwcG9ydEVtYWlsLFxuXHRcdGljb25zOiBhcHAuaWNvbnMsXG5cdFx0c2NyZWVuc2hvdHM6IGFwcC5pbWFnZXMsXG5cdFx0dG9vbHRpcDogYXBwLnRvb2x0aXAsXG5cdFx0aW50ZXJvcDogZ2V0SW50ZXJvcEZyb21QbGF0Zm9ybUFwcChhcHApLFxuXHRcdGhvc3RNYW5pZmVzdHM6IGdldEhvc3RNYW5pZmVzdHNGcm9tUGxhdGZvcm1BcHAoYXBwKVxuXHR9O1xuXHRyZXR1cm4gZmRjM0FwcDtcbn1cblxuLyoqXG4gKiBNYXAgdGhlIHBsYXRmb3JtIGFwcCB0byBhcHAgbWV0YWRhdGEuXG4gKiBAcGFyYW0gYXBwIFRoZSBhcHBsaWNhdGlvbiB0byBtYXAuXG4gKiBAcGFyYW0gcmVzdWx0VHlwZSBUaGUgcmVzdWx0IHR5cGUgdG8gaW5jbHVkZSBpbiB0aGUgZGF0YS5cbiAqIEByZXR1cm5zIFRoZSBhcHAgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb0FwcE1ldGFEYXRhKGFwcDogUGxhdGZvcm1BcHAsIHJlc3VsdFR5cGU/OiBzdHJpbmcpOiBBcHBNZXRhZGF0YSB7XG5cdGNvbnN0IGFwcE1ldGFEYXRhOiBBcHBNZXRhZGF0YSA9IHtcblx0XHRhcHBJZDogYXBwLmFwcElkLFxuXHRcdGRlc2NyaXB0aW9uOiBhcHAuZGVzY3JpcHRpb24sXG5cdFx0aWNvbnM6IGFwcC5pY29ucyxcblx0XHRuYW1lOiBhcHAubmFtZSxcblx0XHRzY3JlZW5zaG90czogYXBwLmltYWdlcyxcblx0XHR0aXRsZTogYXBwLnRpdGxlLFxuXHRcdHRvb2x0aXA6IGFwcC50b29sdGlwLFxuXHRcdHZlcnNpb246IGFwcC52ZXJzaW9uLFxuXHRcdHJlc3VsdFR5cGVcblx0fTtcblx0cmV0dXJuIGFwcE1ldGFEYXRhO1xufVxuXG4vKipcbiAqIE1hcCB0aGUgYXBwIGRlZmluaXRpb24gaW50ZXJvcCBkYXRhIHRvIGFwcCBpbnRlcm9wIGZvcm1hdC5cbiAqIEBwYXJhbSBpbnRlcm9wIFRoZSBpbnRlcm9wIHRvIG1hcC5cbiAqIEByZXR1cm5zIFRoZSBhcHAgaW50ZXJvcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcEludGVudHNGcm9tRkRDMyhpbnRlcm9wOiBBcHBJbnRlcm9wIHwgdW5kZWZpbmVkKTogQXBwSW50ZW50W10ge1xuXHRjb25zdCBpbnRlbnRzOiBBcHBJbnRlbnRbXSA9IFtdO1xuXG5cdGNvbnN0IGxpc3RlbnNGb3IgPSBpbnRlcm9wPy5pbnRlbnRzPy5saXN0ZW5zRm9yO1xuXHRpZiAoaXNFbXB0eShsaXN0ZW5zRm9yKSkge1xuXHRcdHJldHVybiBpbnRlbnRzO1xuXHR9XG5cblx0Y29uc3QgaW50ZW50SWRzID0gT2JqZWN0LmtleXMobGlzdGVuc0Zvcik7XG5cdGZvciAoY29uc3QgaW50ZW50TmFtZSBvZiBpbnRlbnRJZHMpIHtcblx0XHRpbnRlbnRzLnB1c2goe1xuXHRcdFx0bmFtZTogaW50ZW50TmFtZSxcblx0XHRcdGRpc3BsYXlOYW1lOiBsaXN0ZW5zRm9yW2ludGVudE5hbWVdLmRpc3BsYXlOYW1lID8/IFwiXCIsXG5cdFx0XHRjb250ZXh0czogbGlzdGVuc0ZvcltpbnRlbnROYW1lXS5jb250ZXh0c1xuXHRcdH0pO1xuXHR9XG5cblx0cmV0dXJuIGludGVudHM7XG59XG5cbi8qKlxuICogR2V0IHRoZSBpbnRlcm9wIGRhdGEgZnJvbSBhIFBsYXRmb3JtIEFwcCBpbiBGREMzIDIuMCBmb3JtYXQuXG4gKiBAcGFyYW0gYXBwIFRoZSBwbGF0Zm9ybSBhcHAgdG8gdXNlIGFzIGEgc291cmNlLlxuICogQHJldHVybnMgVGhlIGFwcCBpbnRlcm9wIGRlZmluaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGdldEludGVyb3BGcm9tUGxhdGZvcm1BcHAoYXBwOiBQbGF0Zm9ybUFwcCk6IEFwcEludGVyb3Age1xuXHRpZiAoIWlzRW1wdHkoYXBwLmludGVyb3ApKSB7XG5cdFx0cmV0dXJuIGFwcC5pbnRlcm9wO1xuXHR9XG5cdGNvbnN0IGludGVyb3A6IEFwcEludGVyb3AgPSB7XG5cdFx0aW50ZW50czoge1xuXHRcdFx0bGlzdGVuc0Zvcjoge31cblx0XHR9XG5cdH07XG5cblx0aWYgKEFycmF5LmlzQXJyYXkoYXBwLmludGVudHMpICYmIGFwcC5pbnRlbnRzLmxlbmd0aCA+IDApIHtcblx0XHRjb25zdCBsaXN0ZW5zRm9yOiB7IFtrZXk6IHN0cmluZ106IEFwcEludGVudHMgfSA9IHt9O1xuXHRcdGZvciAoY29uc3QgaW50ZW50IG9mIGFwcC5pbnRlbnRzKSB7XG5cdFx0XHRsaXN0ZW5zRm9yW2ludGVudC5uYW1lXSA9IHsgZGlzcGxheU5hbWU6IGludGVudC5kaXNwbGF5TmFtZSwgY29udGV4dHM6IGludGVudC5jb250ZXh0cyB9O1xuXHRcdH1cblx0XHRpZiAoIWlzRW1wdHkoaW50ZXJvcC5pbnRlbnRzKSkge1xuXHRcdFx0aW50ZXJvcC5pbnRlbnRzLmxpc3RlbnNGb3IgPSBsaXN0ZW5zRm9yO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBpbnRlcm9wO1xufVxuXG4vKipcbiAqIE1hcCB0aGUgbWFuaWZlc3QgdHlwZS5cbiAqIEBwYXJhbSBhcHAgVGhlIGFwcCBkZWZpbml0aW9uIHRvIG1hcCB0aGUgbWFuaWZlc3QgdHlwZSBmb3IuXG4gKiBAcmV0dXJucyBUaGUgbWFwcGVkIG1hbmlmZXN0IHR5cGUuXG4gKi9cbmZ1bmN0aW9uIG1hcE1hbmlmZXN0VHlwZUZyb21GREMzKGFwcDogQXBwRGVmaW5pdGlvbik6IHN0cmluZyB7XG5cdGxldCBtYW5pZmVzdFR5cGU6IHN0cmluZztcblxuXHRzd2l0Y2ggKGFwcC50eXBlKSB7XG5cdFx0Y2FzZSBcIndlYlwiOiB7XG5cdFx0XHRtYW5pZmVzdFR5cGUgPSBcImlubGluZS12aWV3XCI7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBcIm5hdGl2ZVwiOiB7XG5cdFx0XHRtYW5pZmVzdFR5cGUgPSBcImlubGluZS1leHRlcm5hbFwiO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNhc2UgXCJvbmxpbmVOYXRpdmVcIjoge1xuXHRcdFx0bWFuaWZlc3RUeXBlID0gXCJkZXNrdG9wLWJyb3dzZXJcIjtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRjYXNlIFwib3RoZXJcIjoge1xuXHRcdFx0bWFuaWZlc3RUeXBlID0gYXBwLmhvc3RNYW5pZmVzdHM/Lk9wZW5GaW4/LnR5cGUgPz8gXCJcIjtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRkZWZhdWx0OiB7XG5cdFx0XHRtYW5pZmVzdFR5cGUgPSBhcHAudHlwZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG1hbmlmZXN0VHlwZTtcbn1cblxuLyoqXG4gKiBNYXBzIHRvIGFuIEZEQzMgMi4wIHR5cGUgZnJvbSB0aGUgbWFuaWZlc3QgdHlwZSBzcGVjaWZpZWQgYnkgYSBwbGF0Zm9ybSBhcHAuXG4gKiBAcGFyYW0gYXBwIHRoZSBwbGF0Zm9ybSBhcHAgdG8gdXNlIGFzIGEgc291cmNlXG4gKiBAcmV0dXJucyB0aGUgRkRDMyAyLjAgYXBwIGRlZmluaXRpb24gdHlwZVxuICovXG5mdW5jdGlvbiBtYXBUeXBlRnJvbVBsYXRmb3JtQXBwKGFwcDogUGxhdGZvcm1BcHApOiBBcHBEZWZpbml0aW9uVHlwZSB7XG5cdGxldCB0eXBlOiBBcHBEZWZpbml0aW9uVHlwZSA9IFwib3RoZXJcIjtcblx0aWYgKGlzRW1wdHkoYXBwLm1hbmlmZXN0VHlwZSkpIHtcblx0XHRyZXR1cm4gdHlwZTtcblx0fVxuXHRzd2l0Y2ggKGFwcC5tYW5pZmVzdFR5cGUpIHtcblx0XHRjYXNlIFwiaW5saW5lLXZpZXdcIjoge1xuXHRcdFx0dHlwZSA9IFwid2ViXCI7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBcImlubGluZS1leHRlcm5hbFwiOiB7XG5cdFx0XHR0eXBlID0gXCJuYXRpdmVcIjtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRjYXNlIFwiZGVza3RvcC1icm93c2VyXCI6IHtcblx0XHRcdHR5cGUgPSBcIm9ubGluZU5hdGl2ZVwiO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB0eXBlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbWFuaWZlc3Qgd2hpY2ggY2FuIGJlIHBsYWluIHN0cmluZyBvciBKU09OLlxuICogQHBhcmFtIGFwcCBUaGUgYXBwIHRvIGdldCB0aGUgbWFuaWZlc3QgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdC5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFuaWZlc3RGcm9tRkRDMyhhcHA6IEFwcERlZmluaXRpb24pOiBzdHJpbmcgfCB1bmtub3duIHtcblx0bGV0IG1hbmlmZXN0OiBzdHJpbmcgfCB1bmtub3duO1xuXG5cdHN3aXRjaCAoYXBwLnR5cGUpIHtcblx0XHRjYXNlIFwid2ViXCI6IHtcblx0XHRcdGlmICghaXNFbXB0eShhcHA/LmRldGFpbHMpKSB7XG5cdFx0XHRcdGNvbnN0IGhvc3REZXRhaWxzID0gYXBwLmhvc3RNYW5pZmVzdHM/Lk9wZW5GaW4/LmRldGFpbHM7XG5cdFx0XHRcdGlmIChpc09iamVjdChob3N0RGV0YWlscykpIHtcblx0XHRcdFx0XHRtYW5pZmVzdCA9IHtcblx0XHRcdFx0XHRcdHVybDogKGFwcD8uZGV0YWlscyBhcyBXZWJBcHBEZXRhaWxzKS51cmwsXG5cdFx0XHRcdFx0XHRmZGMzSW50ZXJvcEFwaTogXCIyLjBcIixcblx0XHRcdFx0XHRcdC4uLmhvc3REZXRhaWxzXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRtYW5pZmVzdCA9IHtcblx0XHRcdFx0XHRcdHVybDogKGFwcD8uZGV0YWlscyBhcyBXZWJBcHBEZXRhaWxzKS51cmwsXG5cdFx0XHRcdFx0XHRmZGMzSW50ZXJvcEFwaTogXCIyLjBcIlxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRjYXNlIFwibmF0aXZlXCI6IHtcblx0XHRcdGlmICghaXNFbXB0eShhcHA/LmRldGFpbHMpKSB7XG5cdFx0XHRcdC8vIG91ciBuYXRpdmUgYXBpIHN1cHBvcnRzIHBhdGggYW5kIGFyZ3VtZW50cy5cblx0XHRcdFx0bWFuaWZlc3QgPSBhcHAuZGV0YWlscyBhcyBOYXRpdmVBcHBEZXRhaWxzO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNhc2UgXCJvbmxpbmVOYXRpdmVcIjoge1xuXHRcdFx0aWYgKCFpc0VtcHR5KGFwcD8uZGV0YWlscykpIHtcblx0XHRcdFx0bWFuaWZlc3QgPSAoYXBwPy5kZXRhaWxzIGFzIE9ubGluZU5hdGl2ZUFwcERldGFpbHMpLnVybDtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRjYXNlIFwib3RoZXJcIjoge1xuXHRcdFx0bWFuaWZlc3QgPSBhcHAuaG9zdE1hbmlmZXN0cz8uT3BlbkZpbj8uZGV0YWlscztcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRkZWZhdWx0OiB7XG5cdFx0XHRtYW5pZmVzdCA9IGFwcC5kZXRhaWxzO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbWFuaWZlc3Q7XG59XG5cbi8qKlxuICogR2V0IHRoZSBIb3N0IERldGFpbHMgZnJvbSB0aGUgcGxhdGZvcm0gYXBwIGZvciB0aGlzIEZEQzMgMi4wIEFwcCBEZWZpbml0aW9uLlxuICogQHBhcmFtIGFwcCBUaGUgcGxhdGZvcm0gYXBwIHRvIGdldCB0aGUgaW5mb3JtYXRpb24gZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBob3N0IHNwZWNpZmljIGRldGFpbHMuXG4gKi9cbmZ1bmN0aW9uIGdldEhvc3RNYW5pZmVzdHNGcm9tUGxhdGZvcm1BcHAoYXBwOiBQbGF0Zm9ybUFwcCk6IEhvc3RNYW5pZmVzdHMge1xuXHRjb25zdCBob3N0TWFuaWZlc3RzOiBIb3N0TWFuaWZlc3RzID0ge1xuXHRcdE9wZW5GaW46IHtcblx0XHRcdHR5cGU6IGFwcC5tYW5pZmVzdFR5cGUsXG5cdFx0XHRkZXRhaWxzOiBhcHAubWFuaWZlc3QsXG5cdFx0XHRjb25maWc6IHtcblx0XHRcdFx0YXV0b3N0YXJ0OiBhcHAuYXV0b3N0YXJ0LFxuXHRcdFx0XHRwcml2YXRlOiBhcHAucHJpdmF0ZSxcblx0XHRcdFx0aW5zdGFuY2VNb2RlOiBhcHAuaW5zdGFuY2VNb2RlXG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRyZXR1cm4gaG9zdE1hbmlmZXN0cztcbn1cbiIsImltcG9ydCB0eXBlIE9wZW5GaW4gZnJvbSBcIkBvcGVuZmluL2NvcmVcIjtcbmltcG9ydCB7IGdldEN1cnJlbnRTeW5jIH0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZS1wbGF0Zm9ybVwiO1xuaW1wb3J0IHsgY2hlY2tDb25kaXRpb25zIH0gZnJvbSBcIi4vY29uZGl0aW9uc1wiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBpbml0aWFsaXplTW9kdWxlcywgbG9hZE1vZHVsZXMgfSBmcm9tIFwiLi9tb2R1bGVzXCI7XG5pbXBvcnQgdHlwZSB7IE1vZHVsZUhlbHBlcnMgfSBmcm9tIFwiLi9zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0SW5pdE9wdGlvbnNIYW5kbGVyLFxuXHRJbml0T3B0aW9uc0hhbmRsZXJPcHRpb25zLFxuXHRJbml0T3B0aW9uc0xpZmVjeWNsZSxcblx0SW5pdE9wdGlvbnNQcm92aWRlck9wdGlvbnMsXG5cdFVzZXJBcHBDb25maWdBcmdzXG59IGZyb20gXCIuL3NoYXBlcy9pbml0LW9wdGlvbnMtc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5LCByYW5kb21VVUlEIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQUNUSU9OX1BBUkFNX05BTUUgPSBcImFjdGlvblwiO1xuY29uc3QgQUNUSU9OX1BBWUxPQURfUEFSQU1fTkFNRSA9IFwicGF5bG9hZFwiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJJbml0T3B0aW9uc1wiKTtcblxubGV0IGFjdGlvbkxpc3RlbmVyczoge1xuXHRbYWN0aW9uOiBzdHJpbmddOiB7XG5cdFx0W3N1YnNjcmlwdGlvbklkOiBzdHJpbmddOiB7XG5cdFx0XHRsaWZlY3ljbGU6IEluaXRPcHRpb25zTGlmZWN5Y2xlO1xuXHRcdFx0YWN0aW9uSGFuZGxlcjogPFQ+KHJlcXVlc3RlZEFjdGlvbjogc3RyaW5nLCBwYXlsb2FkPzogVCkgPT4gUHJvbWlzZTx2b2lkPjtcblx0XHR9O1xuXHR9O1xufSA9IHt9O1xubGV0IGFjdGlvbkxpc3RlbmVyTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5jb25zdCBsaXN0ZW5lcnM6IHtcblx0W3BhcmFtTmFtZTogc3RyaW5nXToge1xuXHRcdFtzdWJzY3JpcHRpb25JZDogc3RyaW5nXTogKGluaXRPcHRpb25zOiBVc2VyQXBwQ29uZmlnQXJncykgPT4gUHJvbWlzZTx2b2lkPjtcblx0fTtcbn0gPSB7fTtcbmNvbnN0IGxpc3RlbmVyTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgaW5pdCBvcHRpb25zIHByb3ZpZGVyLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSBpbml0IG9wdGlvbnMgcHJvdmlkZXIuXG4gKiBAcGFyYW0gaGVscGVycyBNb2R1bGUgaGVscGVycyB0byBwYXNzIHRvIGFueSBsb2FkZWQgbW9kdWxlcy5cbiAqIEBwYXJhbSBsaWZlY3ljbGUgV2hlbiBpcyB0aGUgaW5pdCBiZWluZyBjYWxsZWQgZHVyaW5nIHRoZSBib290c3RyYXAgbGlmZWN5Y2xlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdChcblx0b3B0aW9uczogSW5pdE9wdGlvbnNQcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQsXG5cdGhlbHBlcnM6IE1vZHVsZUhlbHBlcnMsXG5cdGxpZmVjeWNsZTogSW5pdE9wdGlvbnNMaWZlY3ljbGVcbik6IFByb21pc2U8dm9pZD4ge1xuXHQvLyBJbml0IGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIHNvIHJlc2V0IGFueSBhY3Rpb24gbGlzdGVuZXJzIGZyb20gbW9kdWxlc1xuXHRhY3Rpb25MaXN0ZW5lcnMgPSB7fTtcblx0YWN0aW9uTGlzdGVuZXJNYXAgPSB7fTtcblxuXHRsb2dnZXIuaW5mbyhcIkluaXRpYWxpemluZyBpbml0IG9wdGlvbnMgcHJvdmlkZXIuXCIpO1xuXHRjb25zdCBpbml0T3B0aW9uc01vZHVsZXMgPSBhd2FpdCBsb2FkTW9kdWxlczxJbml0T3B0aW9uc0hhbmRsZXIsIHVua25vd24sIEluaXRPcHRpb25zSGFuZGxlck9wdGlvbnM+KFxuXHRcdG9wdGlvbnMsXG5cdFx0XCJpbml0T3B0aW9uc1wiXG5cdCk7XG5cblx0YXdhaXQgaW5pdGlhbGl6ZU1vZHVsZXM8SW5pdE9wdGlvbnNIYW5kbGVyLCBNb2R1bGVIZWxwZXJzLCBJbml0T3B0aW9uc0hhbmRsZXJPcHRpb25zPihcblx0XHRpbml0T3B0aW9uc01vZHVsZXMsXG5cdFx0aGVscGVyc1xuXHQpO1xuXG5cdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblxuXHRmb3IgKGNvbnN0IGluaXRPcHRpb25zTW9kdWxlIG9mIGluaXRPcHRpb25zTW9kdWxlcykge1xuXHRcdGNvbnN0IHN1cHBvcnRlZEFjdGlvbnMgPSBpbml0T3B0aW9uc01vZHVsZS5kZWZpbml0aW9uLmRhdGE/LnN1cHBvcnRlZEFjdGlvbnMgPz8gW107XG5cdFx0Zm9yIChjb25zdCBzdXBwb3J0ZWRBY3Rpb24gb2Ygc3VwcG9ydGVkQWN0aW9ucykge1xuXHRcdFx0cmVnaXN0ZXJBY3Rpb25MaXN0ZW5lcihcblx0XHRcdFx0c3VwcG9ydGVkQWN0aW9uLFxuXHRcdFx0XHRpbml0T3B0aW9uc01vZHVsZS5kZWZpbml0aW9uLmRhdGE/LmxpZmVjeWNsZSA/PyBcImFmdGVyLWJvb3RzdHJhcFwiLFxuXHRcdFx0XHRhc3luYyAocmVxdWVzdGVkQWN0aW9uOiBzdHJpbmcsIHBheWxvYWQ/OiB1bmtub3duKSA9PiB7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0YXdhaXQgY2hlY2tDb25kaXRpb25zKHBsYXRmb3JtLCBpbml0T3B0aW9uc01vZHVsZS5kZWZpbml0aW9uLmRhdGE/LmNvbmRpdGlvbnMsIHtcblx0XHRcdFx0XHRcdFx0Y2FsbGVyVHlwZTogXCJpbml0LW9wdGlvbnNcIixcblx0XHRcdFx0XHRcdFx0Y3VzdG9tRGF0YToge1xuXHRcdFx0XHRcdFx0XHRcdG1vZHVsZTogaW5pdE9wdGlvbnNNb2R1bGUsXG5cdFx0XHRcdFx0XHRcdFx0c3VwcG9ydGVkQWN0aW9uXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0XHRcdFx0YEFjdGlvbjogJHtyZXF1ZXN0ZWRBY3Rpb259IGJlaW5nIGhhbmRsZWQgYnkgbW9kdWxlICR7aW5pdE9wdGlvbnNNb2R1bGUuZGVmaW5pdGlvbi5pZH1gXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0YXdhaXQgaW5pdE9wdGlvbnNNb2R1bGUuaW1wbGVtZW50YXRpb24uYWN0aW9uKHJlcXVlc3RlZEFjdGlvbiwgcGF5bG9hZCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGFwcCA9IGZpbi5BcHBsaWNhdGlvbi5nZXRDdXJyZW50U3luYygpO1xuXHRjb25zdCBhcHBJbmZvID0gYXdhaXQgYXBwLmdldEluZm8oKTtcblx0Y29uc3QgY3VzdG9tSW5pdE9wdGlvbnMgPSBhcHBJbmZvLmluaXRpYWxPcHRpb25zIGFzIE9wZW5GaW4uQXBwbGljYXRpb25DcmVhdGlvbk9wdGlvbnMgJiB7XG5cdFx0dXNlckFwcENvbmZpZ0FyZ3M/OiBVc2VyQXBwQ29uZmlnQXJncztcblx0fTtcblxuXHRpZiAoIWlzRW1wdHkoY3VzdG9tSW5pdE9wdGlvbnM/LnVzZXJBcHBDb25maWdBcmdzKSkge1xuXHRcdGxvZ2dlci5pbmZvKFwiUmVjZWl2ZWQgZHVyaW5nIHN0YXJ0dXBcIiwgY3VzdG9tSW5pdE9wdGlvbnM/LnVzZXJBcHBDb25maWdBcmdzKTtcblx0XHRpZiAoIWlzRW1wdHkoY3VzdG9tSW5pdE9wdGlvbnM/LnVzZXJBcHBDb25maWdBcmdzW0FDVElPTl9QQVJBTV9OQU1FXSkpIHtcblx0XHRcdGF3YWl0IG5vdGlmeUFjdGlvbkxpc3RlbmVycyhjdXN0b21Jbml0T3B0aW9ucz8udXNlckFwcENvbmZpZ0FyZ3MsIGxpZmVjeWNsZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGF3YWl0IG5vdGlmeUxpc3RlbmVycyhjdXN0b21Jbml0T3B0aW9ucz8udXNlckFwcENvbmZpZ0FyZ3MpO1xuXHRcdH1cblx0fVxuXG5cdGlmIChsaWZlY3ljbGUgPT09IFwiYWZ0ZXItYm9vdHN0cmFwXCIpIHtcblx0XHRhd2FpdCBwbGF0Zm9ybS5BcHBsaWNhdGlvbi5hZGRMaXN0ZW5lcihcInJ1bi1yZXF1ZXN0ZWRcIiwgcXVlcnlXaGlsZVJ1bm5pbmcpO1xuXHR9XG5cdGxvZ2dlci5pbmZvKFwiSW5pdCBvcHRpb25zIHByb3ZpZGVyIGluaXRpYWxpemVkLlwiKTtcbn1cblxuLyoqXG4gKiBNYW51YWxseSByZWdpc3RlciBhbiBhY3Rpb24gbGlzdGVuZXIuXG4gKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gdG8gcmVnaXN0ZXIuXG4gKiBAcGFyYW0gbGlmZWN5Y2xlIFRoZSBsaWZlY3ljbGUgZXZlbnQgaXQgaXMgdXNlZCBieS5cbiAqIEBwYXJhbSBhY3Rpb25IYW5kbGVyIFRoZSBoYW5kbGUgdG8gY2FsbCB3aGVuIGl0IGlzIHRyaWdnZXJlZC5cbiAqIEByZXR1cm5zIEEgc3Vic2NyaXB0aW9uIGlkIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVtb3ZlIHRoZSBsaXN0ZW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQWN0aW9uTGlzdGVuZXIoXG5cdGFjdGlvbjogc3RyaW5nLFxuXHRsaWZlY3ljbGU6IEluaXRPcHRpb25zTGlmZWN5Y2xlLFxuXHRhY3Rpb25IYW5kbGVyOiA8VD4ocmVxdWVzdGVkQWN0aW9uOiBzdHJpbmcsIHBheWxvYWQ/OiBUKSA9PiBQcm9taXNlPHZvaWQ+XG4pOiBzdHJpbmcge1xuXHRjb25zdCBzdWJzY3JpcHRpb25JZCA9IHJhbmRvbVVVSUQoKTtcblx0aWYgKCFhY3Rpb25MaXN0ZW5lcnNbYWN0aW9uXSkge1xuXHRcdGFjdGlvbkxpc3RlbmVyc1thY3Rpb25dID0ge307XG5cdH1cblx0YWN0aW9uTGlzdGVuZXJzW2FjdGlvbl1bc3Vic2NyaXB0aW9uSWRdID0ge1xuXHRcdGxpZmVjeWNsZSxcblx0XHRhY3Rpb25IYW5kbGVyXG5cdH07XG5cdGFjdGlvbkxpc3RlbmVyTWFwW3N1YnNjcmlwdGlvbklkXSA9IGFjdGlvbjtcblx0cmV0dXJuIHN1YnNjcmlwdGlvbklkO1xufVxuXG4vKipcbiAqIE1hbnVhbGx5IHJlZ2lzdGVyIGEgbGlzdGVuZXIuXG4gKiBAcGFyYW0gcGFyYW1OYW1lIFRoZSBwYXJhbSBuYW1lIHRvIGxvb2sgZm9yIGluIHRoZSBpbml0IG9wdGlvbi5cbiAqIEBwYXJhbSBoYW5kbGVyIFRoZSBoYW5kbGVyIHRvIGNhbGwgd2hlbiBhIG1hdGNoIG9uIHRoZSBwYXJhbSBuYW1lIG9jY3Vycy5cbiAqIEByZXR1cm5zIFRoZSBzdWJzY3JpcHRpb24gaWQgdGhhdCBjYW4gYmUgdXNlZCB0byByZW1vdmUgdGhlIGxpc3RlbmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJMaXN0ZW5lcihcblx0cGFyYW1OYW1lOiBzdHJpbmcsXG5cdGhhbmRsZXI6IChpbml0T3B0aW9uczogVXNlckFwcENvbmZpZ0FyZ3MpID0+IFByb21pc2U8dm9pZD5cbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmIChwYXJhbU5hbWUgPT09IEFDVElPTl9QQVJBTV9OQU1FKSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJQbGVhc2UgdXNlIHJlZ2lzdGVyQWN0aW9uTGlzdGVuZXIgaWYgeW91IHdpc2ggdG8gbGlzdGVuIGZvciBhbiBhY3Rpb25cIik7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGNvbnN0IHN1YnNjcmlwdGlvbklkID0gcmFuZG9tVVVJRCgpO1xuXHRpZiAoIWxpc3RlbmVyc1twYXJhbU5hbWVdKSB7XG5cdFx0bGlzdGVuZXJzW3BhcmFtTmFtZV0gPSB7fTtcblx0fVxuXHRsaXN0ZW5lcnNbcGFyYW1OYW1lXVtzdWJzY3JpcHRpb25JZF0gPSBoYW5kbGVyO1xuXHRsaXN0ZW5lck1hcFtzdWJzY3JpcHRpb25JZF0gPSBwYXJhbU5hbWU7XG5cdHJldHVybiBzdWJzY3JpcHRpb25JZDtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYSBsaXN0ZW5lciBieSBzdWJzY3JpcHRpb24gaWQuXG4gKiBAcGFyYW0gc3Vic2NyaXB0aW9uSWQgVGhlIGlkIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGl0ZW0gd2FzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcihzdWJzY3JpcHRpb25JZDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdGxldCByZW1vdmVkID0gZmFsc2U7XG5cdGlmICghaXNFbXB0eShsaXN0ZW5lck1hcFtzdWJzY3JpcHRpb25JZF0pKSB7XG5cdFx0Y29uc3QgcGFyYW1OYW1lID0gbGlzdGVuZXJNYXBbc3Vic2NyaXB0aW9uSWRdO1xuXHRcdGNvbnN0IGxpc3RlbmVyID0gbGlzdGVuZXJzW3BhcmFtTmFtZV07XG5cdFx0ZGVsZXRlIGxpc3RlbmVyTWFwW3N1YnNjcmlwdGlvbklkXTtcblx0XHRpZiAobGlzdGVuZXJbc3Vic2NyaXB0aW9uSWRdKSB7XG5cdFx0XHRkZWxldGUgbGlzdGVuZXJbc3Vic2NyaXB0aW9uSWRdO1xuXHRcdFx0cmVtb3ZlZCA9IHRydWU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiByZW1vdmVkO1xufVxuXG4vKipcbiAqIFJlbW92ZSBhbiBhY3Rpb24gbGlzdGVuZXIgYnkgc3Vic2NyaXB0aW9uIGlkLlxuICogQHBhcmFtIGlkIFRoZSBpZCB0byByZW1vdmUuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBpdGVtIHdhcyByZW1vdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQWN0aW9uTGlzdGVuZXIoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRsZXQgcmVtb3ZlZCA9IGZhbHNlO1xuXHRpZiAoIWlzRW1wdHkoYWN0aW9uTGlzdGVuZXJNYXBbaWRdKSkge1xuXHRcdGNvbnN0IGFjdGlvbiA9IGFjdGlvbkxpc3RlbmVyTWFwW2lkXTtcblx0XHRjb25zdCBhY3Rpb25MaXN0ZW5lciA9IGFjdGlvbkxpc3RlbmVyc1thY3Rpb25dO1xuXHRcdGRlbGV0ZSBhY3Rpb25MaXN0ZW5lck1hcFtpZF07XG5cdFx0aWYgKGFjdGlvbkxpc3RlbmVyW2lkXSkge1xuXHRcdFx0ZGVsZXRlIGFjdGlvbkxpc3RlbmVyW2lkXTtcblx0XHRcdHJlbW92ZWQgPSB0cnVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVtb3ZlZDtcbn1cblxuLyoqXG4gKiBUcnkgYW5kIGV4dHJhY3QgcGFyYW1zIGZyb20gdGhlIGluaXQgb3B0aW9ucyBwYXJhbXMuXG4gKiBAcGFyYW0gaW5pdE9wdGlvbnMgVGhlIGluaXQgcGFyYW0gdG8gZXh0cmFjdCBmcm9tLlxuICogQHJldHVybnMgVGhlIGV4dHJhY3QgcGF5bG9hZC5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdFBheWxvYWRGcm9tUGFyYW1zPFQ+KGluaXRPcHRpb25zPzogVXNlckFwcENvbmZpZ0FyZ3MpOiBUIHwgdW5kZWZpbmVkIHtcblx0dHJ5IHtcblx0XHRpZiAodHlwZW9mIGluaXRPcHRpb25zPy5wYXlsb2FkID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRjb25zdCBwbGFpbkpzb24gPSBhdG9iKGluaXRPcHRpb25zPy5wYXlsb2FkKTtcblx0XHRcdGNvbnN0IHBheWxvYWQgPSBKU09OLnBhcnNlKHBsYWluSnNvbikgYXMgVDtcblx0XHRcdGxvZ2dlci5pbmZvKFwiRXh0cmFjdGVkIHBheWxvYWRcIiwgcGF5bG9hZCk7XG5cdFx0XHRyZXR1cm4gcGF5bG9hZDtcblx0XHR9XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdGxvZ2dlci5lcnJvcihcIkVycm9yIGRlY29kaW5nIHBheWxvYWQsIGl0IHNob3VsZCBiZSBCYXNlNjQgZW5jb2RlZFwiLCBpbml0T3B0aW9ucywgZXJyKTtcblx0fVxufVxuXG4vKipcbiAqIE5vdGlmeSBhbnlib2R5IHN1YnNjcmliZWQgdG8gdGhlIGFjdGlvbiBsaXN0ZW5lcnMuXG4gKiBAcGFyYW0gaW5pdE9wdGlvbnMgVGhlIGluaXQgb3B0aW9ucyB0byBleHRyYWN0IGZyb20uXG4gKiBAcGFyYW0gbGlmZWN5Y2xlIFRoZSBsaWZlY3ljbGUgZXZlbnQgdG8gdXNlLlxuICovXG5hc3luYyBmdW5jdGlvbiBub3RpZnlBY3Rpb25MaXN0ZW5lcnMoXG5cdGluaXRPcHRpb25zOiBVc2VyQXBwQ29uZmlnQXJncyxcblx0bGlmZWN5Y2xlOiBJbml0T3B0aW9uc0xpZmVjeWNsZVxuKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IGFjdGlvbiA9IGluaXRPcHRpb25zW0FDVElPTl9QQVJBTV9OQU1FXTtcblx0Y29uc3QgcGF5bG9hZCA9ICFpc0VtcHR5KGluaXRPcHRpb25zW0FDVElPTl9QQVlMT0FEX1BBUkFNX05BTUVdKVxuXHRcdD8gZXh0cmFjdFBheWxvYWRGcm9tUGFyYW1zKGluaXRPcHRpb25zKVxuXHRcdDogdW5kZWZpbmVkO1xuXHRjb25zdCBhdmFpbGFibGVMaXN0ZW5lcnMgPSBhY3Rpb25MaXN0ZW5lcnNbYWN0aW9uXTtcblx0aWYgKCFpc0VtcHR5KGF2YWlsYWJsZUxpc3RlbmVycykpIHtcblx0XHRjb25zdCBzdWJzY3JpYmVySWRzID0gT2JqZWN0LmtleXMoYXZhaWxhYmxlTGlzdGVuZXJzKTtcblxuXHRcdGZvciAoY29uc3Qgc3Vic2NyaWJlcklkIG9mIHN1YnNjcmliZXJJZHMpIHtcblx0XHRcdGxvZ2dlci5pbmZvKGBOb3RpZnlpbmcgc3Vic2NyaWJlciB3aXRoIHN1YnNjcmlwdGlvbiBJZDogJHtzdWJzY3JpYmVySWR9IG9mIGFjdGlvbjogJHthY3Rpb259YCk7XG5cdFx0XHRjb25zdCBsaXN0ZW5lciA9IGF2YWlsYWJsZUxpc3RlbmVyc1tzdWJzY3JpYmVySWRdO1xuXG5cdFx0XHRpZiAobGlzdGVuZXI/LmxpZmVjeWNsZSA9PT0gbGlmZWN5Y2xlKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Y29uc3QgbGlzdGVuID0gYXZhaWxhYmxlTGlzdGVuZXJzW3N1YnNjcmliZXJJZF07XG5cdFx0XHRcdFx0aWYgKGxpc3Rlbikge1xuXHRcdFx0XHRcdFx0YXdhaXQgbGlzdGVuLmFjdGlvbkhhbmRsZXIoYWN0aW9uLCBwYXlsb2FkKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XHRcdFx0YEVycm9yIGV4ZWN1dGluZyBhY3Rpb246ICR7YWN0aW9ufSBhZ2FpbnN0IHJlZ2lzdGVyZWQgbGlzdGVuZXI6ICR7c3Vic2NyaWJlcklkfS5gLFxuXHRcdFx0XHRcdFx0ZXJyb3Jcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogTm90aWZ5IGFueWJvZHkgc3Vic2NyaWJlZCB0byB0aGUgbGlzdGVuZXJzLlxuICogQHBhcmFtIGluaXRPcHRpb25zIFRoZSBpbml0IG9wdGlvbnMgdG8gZXh0cmFjdCBmcm9tLlxuICovXG5hc3luYyBmdW5jdGlvbiBub3RpZnlMaXN0ZW5lcnMoaW5pdE9wdGlvbnM6IFVzZXJBcHBDb25maWdBcmdzKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IGN1c3RvbVBhcmFtSWRzID0gT2JqZWN0LmtleXMobGlzdGVuZXJzKTtcblx0bGV0IGxpc3RlbmVySWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRmb3IgKGNvbnN0IGlkIG9mIGN1c3RvbVBhcmFtSWRzKSB7XG5cdFx0aWYgKCFpc0VtcHR5KGluaXRPcHRpb25zW2lkXSkpIHtcblx0XHRcdGxpc3RlbmVySWQgPSBpZDtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdGlmICghaXNFbXB0eShsaXN0ZW5lcklkKSkge1xuXHRcdGxvZ2dlci5pbmZvKFxuXHRcdFx0YEluaXQgcGFyYW0gaGFzIGJlZW4gcGFzc2VkIGFuZCBpdCBoYXMgYSBtYXRjaGluZyBsaXN0ZW5lciAoJHtsaXN0ZW5lcklkfSkuIFBhc3Npbmcgb24gaW5pdCBvcHRpb25zIHRvIGxpc3RlbmVyc2Bcblx0XHQpO1xuXHRcdGNvbnN0IGF2YWlsYWJsZUxpc3RlbmVycyA9IGxpc3RlbmVyc1tsaXN0ZW5lcklkXTtcblx0XHRpZiAoIWlzRW1wdHkoYXZhaWxhYmxlTGlzdGVuZXJzKSkge1xuXHRcdFx0Y29uc3Qgc3Vic2NyaWJlcklkcyA9IE9iamVjdC5rZXlzKGF2YWlsYWJsZUxpc3RlbmVycyk7XG5cblx0XHRcdGZvciAoY29uc3Qgc3Vic2NyaWJlcklkIG9mIHN1YnNjcmliZXJJZHMpIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYE5vdGlmeWluZyBzdWJzY3JpYmVyIHdpdGggc3Vic2NyaXB0aW9uIElkOiAke3N1YnNjcmliZXJJZH0gb2YgcmVxdWVzdDogJHtsaXN0ZW5lcklkfWApO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Y29uc3QgbGlzdGVuID0gYXZhaWxhYmxlTGlzdGVuZXJzW3N1YnNjcmliZXJJZF07XG5cdFx0XHRcdFx0aWYgKGxpc3Rlbikge1xuXHRcdFx0XHRcdFx0YXdhaXQgbGlzdGVuKGluaXRPcHRpb25zKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XHRcdFx0YEVycm9yIGV4ZWN1dGluZyBoYW5kbGVyIGZvciBwYXJhbWV0ZXI6ICR7bGlzdGVuZXJJZH0gYWdhaW5zdCByZWdpc3RlcmVkIGxpc3RlbmVyOiAke3N1YnNjcmliZXJJZH0uYCxcblx0XHRcdFx0XHRcdGVycm9yXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEhhbmRsZSBhbiBpbml0IG9wdGlvbnMgZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIGFwcCB3YXMgYWxyZWFkeSBzdGFydGVkLlxuICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBjb250YWluZXIgdGhlIG5ldyBpbml0IG9wdGlvbnMuXG4gKiBAcGFyYW0gZXZlbnQudXNlckFwcENvbmZpZ0FyZ3MgVGhlIGNvbmZpZyBhcmdzIGNvbnRhaW5pbmcgdGhlIGluaXQgb3B0aW9ucy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcXVlcnlXaGlsZVJ1bm5pbmcoZXZlbnQ6IHsgdXNlckFwcENvbmZpZ0FyZ3M/OiBVc2VyQXBwQ29uZmlnQXJncyB9KTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmICghaXNFbXB0eShldmVudD8udXNlckFwcENvbmZpZ0FyZ3MpKSB7XG5cdFx0bG9nZ2VyLmluZm8oXCJSZWNlaXZlZCB3aGlsZSBwbGF0Zm9ybSBpcyBydW5uaW5nXCIsIGV2ZW50LnVzZXJBcHBDb25maWdBcmdzKTtcblx0XHRpZiAoIWlzRW1wdHkoZXZlbnQudXNlckFwcENvbmZpZ0FyZ3NbQUNUSU9OX1BBUkFNX05BTUVdKSkge1xuXHRcdFx0YXdhaXQgbm90aWZ5QWN0aW9uTGlzdGVuZXJzKGV2ZW50LnVzZXJBcHBDb25maWdBcmdzLCBcImFmdGVyLWJvb3RzdHJhcFwiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YXdhaXQgbm90aWZ5TGlzdGVuZXJzKGV2ZW50LnVzZXJBcHBDb25maWdBcmdzKTtcblx0XHR9XG5cdH1cbn1cbiIsImltcG9ydCB0eXBlIE9wZW5GaW4gZnJvbSBcIkBvcGVuZmluL2NvcmVcIjtcbmltcG9ydCB7XG5cdEJ1dHRvblN0eWxlLFxuXHRDTElUZW1wbGF0ZSxcblx0dHlwZSBDTElGaWx0ZXIsXG5cdHR5cGUgSG9tZURpc3BhdGNoZWRTZWFyY2hSZXN1bHQsXG5cdHR5cGUgSG9tZVNlYXJjaExpc3RlbmVyUmVzcG9uc2UsXG5cdHR5cGUgSG9tZVNlYXJjaFJlc3BvbnNlLFxuXHR0eXBlIEhvbWVTZWFyY2hSZXN1bHRcbn0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZVwiO1xuaW1wb3J0IHsgZ2V0Q3VycmVudFN5bmMgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgeyBjaGVja0NvbmRpdGlvbiB9IGZyb20gXCIuL2NvbmRpdGlvbnNcIjtcbmltcG9ydCAqIGFzIGVuZHBvaW50UHJvdmlkZXIgZnJvbSBcIi4vZW5kcG9pbnRcIjtcbmltcG9ydCB7IGxhdW5jaCB9IGZyb20gXCIuL2xhdW5jaFwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBNQU5JRkVTVF9UWVBFUyB9IGZyb20gXCIuL21hbmlmZXN0LXR5cGVzXCI7XG5pbXBvcnQge1xuXHRjbG9zZWRvd25Nb2R1bGUsXG5cdGNsb3NlZG93bk1vZHVsZXMsXG5cdGluaXRpYWxpemVNb2R1bGUsXG5cdGluaXRpYWxpemVNb2R1bGVzLFxuXHRsb2FkTW9kdWxlc1xufSBmcm9tIFwiLi9tb2R1bGVzXCI7XG5pbXBvcnQgeyBsYXVuY2hQYWdlLCBsYXVuY2hWaWV3IH0gZnJvbSBcIi4vcGxhdGZvcm0vYnJvd3NlclwiO1xuaW1wb3J0ICogYXMgcGxhdGZvcm1TcGxhc2hQcm92aWRlciBmcm9tIFwiLi9wbGF0Zm9ybS9wbGF0Zm9ybS1zcGxhc2hcIjtcbmltcG9ydCB0eXBlIHtcblx0RW5kcG9pbnRJbnRlZ3JhdGlvbnNQcmVmZXJlbmNlc0dldFJlcXVlc3QsXG5cdEVuZHBvaW50SW50ZWdyYXRpb25zUHJlZmVyZW5jZXNHZXRSZXNwb25zZSxcblx0RW5kcG9pbnRJbnRlZ3JhdGlvbnNQcmVmZXJlbmNlc1NldFJlcXVlc3QsXG5cdEludGVncmF0aW9uSGVscGVycyxcblx0SW50ZWdyYXRpb25Nb2R1bGUsXG5cdEludGVncmF0aW9uTW9kdWxlRGVmaW5pdGlvbixcblx0SW50ZWdyYXRpb25Qcm92aWRlck9wdGlvbnNcbn0gZnJvbSBcIi4vc2hhcGVzL2ludGVncmF0aW9ucy1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgTW9kdWxlRW50cnksIE1vZHVsZUhlbHBlcnMgfSBmcm9tIFwiLi9zaGFwZXMvbW9kdWxlLXNoYXBlc1wiO1xuaW1wb3J0IHsgc2hhcmUgfSBmcm9tIFwiLi9zaGFyZVwiO1xuaW1wb3J0ICogYXMgdGVtcGxhdGVIZWxwZXJzIGZyb20gXCIuL3RlbXBsYXRlc1wiO1xuaW1wb3J0IHsgY3JlYXRlQnV0dG9uLCBjcmVhdGVDb250YWluZXIsIGNyZWF0ZUhlbHAsIGNyZWF0ZUltYWdlLCBjcmVhdGVUZXh0LCBjcmVhdGVUaXRsZSB9IGZyb20gXCIuL3RlbXBsYXRlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIkludGVncmF0aW9uc1wiKTtcblxubGV0IGludGVncmF0aW9uUHJvdmlkZXJPcHRpb25zOiBJbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9ucztcbmxldCBpbnRlZ3JhdGlvbk1vZHVsZXM6IE1vZHVsZUVudHJ5PFxuXHRJbnRlZ3JhdGlvbk1vZHVsZSxcblx0SW50ZWdyYXRpb25IZWxwZXJzLFxuXHR1bmtub3duLFxuXHRJbnRlZ3JhdGlvbk1vZHVsZURlZmluaXRpb25cbj5bXSA9IFtdO1xubGV0IGludGVncmF0aW9uSGVscGVyczogSW50ZWdyYXRpb25IZWxwZXJzO1xuXG5jb25zdCBQT1BVTEFURV9RVUVSWSA9IFwiUG9wdWxhdGUgUXVlcnlcIjtcblxuY29uc3QgSU5URUdSQVRJT05TX1BSRUZFUkVOQ0VfRU5EUE9JTlRfU0VUID0gXCJpbnRlZ3JhdGlvbi1wcmVmZXJlbmNlcy1zZXRcIjtcbmNvbnN0IElOVEVHUkFUSU9OU19QUkVGRVJFTkNFX0VORFBPSU5UX0dFVCA9IFwiaW50ZWdyYXRpb24tcHJlZmVyZW5jZXMtZ2V0XCI7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhbGwgdGhlIGludGVncmF0aW9ucy5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBpbnRlZ3JhdGlvbiBwcm92aWRlciBzZXR0aW5ncy5cbiAqIEBwYXJhbSBoZWxwZXJzIE1vZHVsZSBoZWxwZXJzIHRvIHBhc3MgdG8gYW55IGxvYWRlZCBtb2R1bGVzLlxuICogQHBhcmFtIHNldFNlYXJjaFF1ZXJ5IFRoZSBzZXQgc2VhcmNoIHF1ZXJ5IGZvciB0aGUgaG9tZSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KFxuXHRvcHRpb25zOiBJbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCxcblx0aGVscGVyczogTW9kdWxlSGVscGVycyxcblx0c2V0U2VhcmNoUXVlcnk6IChxdWVyeTogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKG9wdGlvbnMpIHtcblx0XHRvcHRpb25zLm1vZHVsZXMgPSBvcHRpb25zLm1vZHVsZXMgPz8gb3B0aW9ucy5pbnRlZ3JhdGlvbnM7XG5cdFx0bG9nZ2VyLmluZm8oXCJJbml0aWFsaXppbmcgaW50ZWdyYXRpb25zLlwiKTtcblx0XHRpbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9ucyA9IG9wdGlvbnM7XG5cdFx0aW50ZWdyYXRpb25IZWxwZXJzID0ge1xuXHRcdFx0Li4uaGVscGVycyxcblx0XHRcdHRlbXBsYXRlSGVscGVycyxcblx0XHRcdGxhdW5jaFZpZXcsXG5cdFx0XHRsYXVuY2hQYWdlLFxuXHRcdFx0bGF1bmNoU25hcHNob3Q6IGFzeW5jIChtYW5pZmVzdFVybCk6IFByb21pc2U8T3BlbkZpbi5JZGVudGl0eVtdPiA9PiB7XG5cdFx0XHRcdGNvbnN0IGlkZW50aXRpZXMgPSBhd2FpdCBsYXVuY2goe1xuXHRcdFx0XHRcdG1hbmlmZXN0VHlwZTogTUFOSUZFU1RfVFlQRVMuU25hcHNob3QuaWQsXG5cdFx0XHRcdFx0bWFuaWZlc3Q6IG1hbmlmZXN0VXJsLFxuXHRcdFx0XHRcdGFwcElkOiBcIlwiLFxuXHRcdFx0XHRcdHRpdGxlOiBcIlwiLFxuXHRcdFx0XHRcdGljb25zOiBbXSxcblx0XHRcdFx0XHRwdWJsaXNoZXI6IFwiXCJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiBpZGVudGl0aWVzID8gaWRlbnRpdGllcy5tYXAoKGlkZW50aXR5KSA9PiAoeyB1dWlkOiBpZGVudGl0eS51dWlkLCBuYW1lOiBpZGVudGl0eS5uYW1lIH0pKSA6IFtdO1xuXHRcdFx0fSxcblx0XHRcdG9wZW5Vcmw6IGFzeW5jICh1cmwpID0+IGZpbi5TeXN0ZW0ub3BlblVybFdpdGhCcm93c2VyKHVybCksXG5cdFx0XHRzZXRTZWFyY2hRdWVyeSxcblx0XHRcdGNvbmRpdGlvbjogYXN5bmMgKGNvbmRpdGlvbklkKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG5cdFx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdFx0cmV0dXJuIGNoZWNrQ29uZGl0aW9uKHBsYXRmb3JtLCBjb25kaXRpb25JZCk7XG5cdFx0XHR9LFxuXHRcdFx0c2hhcmUsXG5cdFx0XHRnZXRQbGF0Zm9ybTogZ2V0Q3VycmVudFN5bmNcblx0XHR9O1xuXG5cdFx0Ly8gTWFwIHRoZSBvbGQgbW9kdWxlVXJsIHByb3BlcnRpZXMgdG8gdXJsXG5cdFx0aWYgKG9wdGlvbnMubW9kdWxlcykge1xuXHRcdFx0Zm9yIChjb25zdCBpbnRlZ3JhdGlvbiBvZiBvcHRpb25zLm1vZHVsZXMpIHtcblx0XHRcdFx0aW50ZWdyYXRpb24udXJsID0gaW50ZWdyYXRpb24udXJsID8/IGludGVncmF0aW9uLm1vZHVsZVVybDtcblx0XHRcdFx0ZGVsZXRlIGludGVncmF0aW9uLm1vZHVsZVVybDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBMb2FkIHRoZSBtb2R1bGVzXG5cdFx0aW50ZWdyYXRpb25Nb2R1bGVzID0gYXdhaXQgbG9hZE1vZHVsZXM8XG5cdFx0XHRJbnRlZ3JhdGlvbk1vZHVsZSxcblx0XHRcdEludGVncmF0aW9uSGVscGVycyxcblx0XHRcdHVua25vd24sXG5cdFx0XHRJbnRlZ3JhdGlvbk1vZHVsZURlZmluaXRpb25cblx0XHQ+KG9wdGlvbnMsIFwiaW50ZWdyYXRpb25zXCIpO1xuXG5cdFx0Ly8gTm93IGZpbHRlciB0aGUgbGlzdCB0byB0aG9zZSB3aXRoIGF1dG9TdGFydCBzZXQsIG9yIG5vdGhpbmcgc2V0XG5cdFx0Y29uc3QgaW5pdE1vZHVsZXM6IE1vZHVsZUVudHJ5PEludGVncmF0aW9uTW9kdWxlLCBJbnRlZ3JhdGlvbkhlbHBlcnM+W10gPSBbXTtcblx0XHRmb3IgKGNvbnN0IGludGVncmF0aW9uIG9mIGludGVncmF0aW9uTW9kdWxlcykge1xuXHRcdFx0Y29uc3QgaW50ZWdyYXRpb25QcmVmZXJlbmNlID0gYXdhaXQgZ2V0UHJlZmVyZW5jZXMoaW50ZWdyYXRpb24uZGVmaW5pdGlvbi5pZCk7XG5cdFx0XHRpbnRlZ3JhdGlvbi5kZWZpbml0aW9uLmF1dG9TdGFydCA9XG5cdFx0XHRcdGludGVncmF0aW9uUHJlZmVyZW5jZT8uYXV0b1N0YXJ0ID8/IGludGVncmF0aW9uLmRlZmluaXRpb24uYXV0b1N0YXJ0ID8/IHRydWU7XG5cdFx0XHRpZiAoaW50ZWdyYXRpb24uZGVmaW5pdGlvbi5hdXRvU3RhcnQpIHtcblx0XHRcdFx0aW5pdE1vZHVsZXMucHVzaChpbnRlZ3JhdGlvbik7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gSW5pdGlhbGl6ZSBqdXN0IHRoZSBhdXRvIHN0YXJ0IG1vZHVsZXNcblx0XHRhd2FpdCBpbml0aWFsaXplTW9kdWxlcyhpbml0TW9kdWxlcywgaW50ZWdyYXRpb25IZWxwZXJzLCBhc3luYyAoZGVmKSA9PiB7XG5cdFx0XHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKGAke2RlZi50aXRsZX0gSW50ZWdyYXRpb25gKTtcblx0XHR9KTtcblx0XHRsb2dnZXIuaW5mbyhcIkludGVncmF0aW9ucyBoYXMgYmVlbiBpbml0aWFsaXplZC5cIik7XG5cdH1cbn1cblxuLyoqXG4gKiBDbG9zZSBkb3duIGFsbCB0aGUgaW50ZWdyYXRpb25zLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xvc2Vkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuXHRhd2FpdCBjbG9zZWRvd25Nb2R1bGVzKFwiaW50ZWdyYXRpb25zXCIpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgc2VhcmNoIHJlc3VsdHMgZnJvbSBhbGwgdGhlIGludGVncmF0aW9uIHByb3ZpZGVycy5cbiAqIEBwYXJhbSBxdWVyeSBUaGUgcXVlcnkgdG8gZ2V0IHRoZSBzZWFyY2ggcmVzdWx0cyBmb3IuXG4gKiBAcGFyYW0gZmlsdGVycyBUaGUgZmlsdGVycyB0byBhcHBseSB0byB0aGUgc2VhcmNoIHJlc3VsdHMuXG4gKiBAcGFyYW0gbGFzdFJlc3BvbnNlIFRoZSBsYXN0IHNlYXJjaCByZXNwb25zZSB1c2VkIGZvciB1cGRhdGluZyBleGlzdGluZyByZXN1bHRzLlxuICogQHBhcmFtIHNlbGVjdGVkU291cmNlcyBTZWxlY3RlZCBzb3VyY2VzIGZpbHRlcnMgbGlzdC5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSBzZWFyY2ggcXVlcnkuXG4gKiBAcGFyYW0gb3B0aW9ucy5xdWVyeU1pbkxlbmd0aCBUaGUgbWluaW11bSBsZW5ndGggYmVmb3JlIGEgcXVlcnkgaXMgYWN0aW9uZWQuXG4gKiBAcGFyYW0gb3B0aW9ucy5xdWVyeUFnYWluc3QgVGhlIGZpZWxkcyBpbiB0aGUgZGF0YSB0byBxdWVyeSBhZ2FpbnN0LlxuICogQHBhcmFtIG9wdGlvbnMuaXNTdWdnZXN0aW9uIElzIHRoZSBxdWVyeSBmcm9tIGEgc3VnZ2VzdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBzZWFyY2ggcmVzdWx0cyBhbmQgbmV3IGZpbHRlcnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRTZWFyY2hSZXN1bHRzKFxuXHRxdWVyeTogc3RyaW5nLFxuXHRmaWx0ZXJzOiBDTElGaWx0ZXJbXSxcblx0bGFzdFJlc3BvbnNlOiBIb21lU2VhcmNoTGlzdGVuZXJSZXNwb25zZSxcblx0c2VsZWN0ZWRTb3VyY2VzOiBzdHJpbmdbXSxcblx0b3B0aW9uczoge1xuXHRcdHF1ZXJ5TWluTGVuZ3RoOiBudW1iZXI7XG5cdFx0cXVlcnlBZ2FpbnN0OiBzdHJpbmdbXTtcblx0XHRpc1N1Z2dlc3Rpb24/OiBib29sZWFuO1xuXHR9XG4pOiBQcm9taXNlPEhvbWVTZWFyY2hSZXNwb25zZSAmIHsgc291cmNlRmlsdGVycz86IHN0cmluZ1tdIH0+IHtcblx0Y29uc3QgaG9tZVJlc3BvbnNlOiBIb21lU2VhcmNoUmVzcG9uc2UgJiB7IHNvdXJjZUZpbHRlcnM/OiBzdHJpbmdbXSB9ID0ge1xuXHRcdHJlc3VsdHM6IFtdLFxuXHRcdGNvbnRleHQ6IHtcblx0XHRcdGZpbHRlcnM6IFtdXG5cdFx0fSxcblx0XHRzb3VyY2VGaWx0ZXJzOiBbXVxuXHR9O1xuXG5cdGlmIChcblx0XHRpbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9ucy5pc01hbmFnZW1lbnRFbmFibGVkICYmXG5cdFx0cXVlcnkuc3RhcnRzV2l0aChgLyR7aW50ZWdyYXRpb25Qcm92aWRlck9wdGlvbnMuY29tbWFuZCA/PyBcImludGVncmF0aW9uc1wifWApXG5cdCkge1xuXHRcdHJldHVybiBnZXRNYW5hZ2VtZW50UmVzdWx0cygpO1xuXHR9XG5cblx0Y29uc3QgcHJvbWlzZXM6IFByb21pc2U8SG9tZVNlYXJjaFJlc3BvbnNlPltdID0gW107XG5cdGNvbnN0IHNvdXJjZUZpbHRlcnM6IHN0cmluZ1tdID0gW107XG5cdGZvciAoY29uc3QgaW50ZWdyYXRpb25Nb2R1bGUgb2YgaW50ZWdyYXRpb25Nb2R1bGVzKSB7XG5cdFx0aWYgKFxuXHRcdFx0aW50ZWdyYXRpb25Nb2R1bGUuaXNJbml0aWFsaXplZCAmJlxuXHRcdFx0aW50ZWdyYXRpb25Nb2R1bGUuaW1wbGVtZW50YXRpb24uZ2V0U2VhcmNoUmVzdWx0cyAmJlxuXHRcdFx0KChpbnRlZ3JhdGlvbk1vZHVsZS5kZWZpbml0aW9uLmV4Y2x1ZGVGcm9tU291cmNlRmlsdGVyID8/IHNlbGVjdGVkU291cmNlcy5sZW5ndGggPT09IDApIHx8XG5cdFx0XHRcdHNlbGVjdGVkU291cmNlcy5pbmNsdWRlcyhpbnRlZ3JhdGlvbk1vZHVsZS5kZWZpbml0aW9uLnRpdGxlKSlcblx0XHQpIHtcblx0XHRcdHByb21pc2VzLnB1c2goaW50ZWdyYXRpb25Nb2R1bGUuaW1wbGVtZW50YXRpb24uZ2V0U2VhcmNoUmVzdWx0cyhxdWVyeSwgZmlsdGVycywgbGFzdFJlc3BvbnNlLCBvcHRpb25zKSk7XG5cdFx0fVxuXHRcdGlmICghaW50ZWdyYXRpb25Nb2R1bGUuZGVmaW5pdGlvbi5leGNsdWRlRnJvbVNvdXJjZUZpbHRlcikge1xuXHRcdFx0c291cmNlRmlsdGVycy5wdXNoKGludGVncmF0aW9uTW9kdWxlLmRlZmluaXRpb24udGl0bGUpO1xuXHRcdH1cblx0fVxuXG5cdGNvbnN0IHByb21pc2VSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHByb21pc2VzKTtcblx0Zm9yIChjb25zdCBwcm9taXNlUmVzdWx0IG9mIHByb21pc2VSZXN1bHRzKSB7XG5cdFx0aWYgKHByb21pc2VSZXN1bHQuc3RhdHVzID09PSBcImZ1bGZpbGxlZFwiKSB7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShwcm9taXNlUmVzdWx0LnZhbHVlLnJlc3VsdHMpKSB7XG5cdFx0XHRcdGhvbWVSZXNwb25zZS5yZXN1bHRzID0gaG9tZVJlc3BvbnNlLnJlc3VsdHMuY29uY2F0KHByb21pc2VSZXN1bHQudmFsdWUucmVzdWx0cyk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBuZXdGaWx0ZXJzID0gcHJvbWlzZVJlc3VsdC52YWx1ZS5jb250ZXh0Py5maWx0ZXJzO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkobmV3RmlsdGVycykgJiYgaG9tZVJlc3BvbnNlLmNvbnRleHQ/LmZpbHRlcnMpIHtcblx0XHRcdFx0aG9tZVJlc3BvbnNlLmNvbnRleHQuZmlsdGVycyA9IGhvbWVSZXNwb25zZS5jb250ZXh0LmZpbHRlcnMuY29uY2F0KG5ld0ZpbHRlcnMpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRsb2dnZXIuZXJyb3IocHJvbWlzZVJlc3VsdC5yZWFzb24pO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7XG5cdFx0Li4uaG9tZVJlc3BvbnNlLFxuXHRcdHNvdXJjZUZpbHRlcnNcblx0fTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGhlbHAgc2VhcmNoIGVudHJpZXMgZm9yIGFsbCB0aGUgaW50ZWdyYXRpb24gcHJvdmlkZXJzLlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgaGVscCBlbnRyaWVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0SGVscFNlYXJjaEVudHJpZXMoKTogUHJvbWlzZTxIb21lU2VhcmNoUmVzdWx0W10+IHtcblx0aWYgKCFpbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9ucykge1xuXHRcdGxvZ2dlci5lcnJvcihcIkludGVncmF0aW9uUHJvdmlkZXIgaXMgbm90IGF2YWlsYWJsZSwgbWFrZSBzdXJlIHlvdXIgaGF2ZSBjYWxsZWQgaW5pdFwiKTtcblx0fVxuXG5cdGxldCByZXN1bHRzOiBIb21lU2VhcmNoUmVzdWx0W10gPSBbXTtcblxuXHRpZiAoaW50ZWdyYXRpb25Qcm92aWRlck9wdGlvbnMuaXNNYW5hZ2VtZW50RW5hYmxlZCkge1xuXHRcdGNvbnN0IGNvbW1hbmRLZXl3b3JkID0gaW50ZWdyYXRpb25Qcm92aWRlck9wdGlvbnMuY29tbWFuZCA/PyBcImludGVncmF0aW9uc1wiO1xuXHRcdGNvbnN0IGNvbW1hbmQgPSBgLyR7Y29tbWFuZEtleXdvcmR9YDtcblxuXHRcdGNvbnN0IGhlbHBFbnRyeTogSG9tZVNlYXJjaFJlc3VsdCA9IHtcblx0XHRcdGtleTogXCJpbnRlZ3JhdGlvbi1wcm92aWRlci1oZWxwXCIsXG5cdFx0XHR0aXRsZTogY29tbWFuZCxcblx0XHRcdGxhYmVsOiBcIkhlbHBcIixcblx0XHRcdGljb246IGludGVncmF0aW9uUHJvdmlkZXJPcHRpb25zLmljb24sXG5cdFx0XHRhY3Rpb25zOiBbXSxcblx0XHRcdGRhdGE6IHtcblx0XHRcdFx0cHJvdmlkZXJJZDogXCJpbnRlZ3JhdGlvbi1wcm92aWRlclwiXG5cdFx0XHR9LFxuXHRcdFx0dGVtcGxhdGU6IENMSVRlbXBsYXRlLkN1c3RvbSxcblx0XHRcdHRlbXBsYXRlQ29udGVudDogYXdhaXQgY3JlYXRlSGVscChcblx0XHRcdFx0Y29tbWFuZCxcblx0XHRcdFx0W1xuXHRcdFx0XHRcdGludGVncmF0aW9uUHJvdmlkZXJPcHRpb25zLmNvbW1hbmREZXNjcmlwdGlvbiA/P1xuXHRcdFx0XHRcdFx0YEFsbG93cyB0aGUgbWFuYWdlbWVudCBvZiAke2NvbW1hbmRLZXl3b3JkfSBmb3IgdGhpcyBwbGF0Zm9ybS4gWW91IGNhbiBkZWNpZGUgd2hldGhlciBlbmFibGVkIGludGVncmF0aW9ucyBzaG91bGQgYmUgaW5jbHVkZWQgd2hlbiBhIHF1ZXJ5IGlzIGVudGVyZWQuYFxuXHRcdFx0XHRdLFxuXHRcdFx0XHRbY29tbWFuZF1cblx0XHRcdClcblx0XHR9O1xuXG5cdFx0cmVzdWx0cy5wdXNoKGhlbHBFbnRyeSk7XG5cdH1cblxuXHRmb3IgKGNvbnN0IGludGVncmF0aW9uTW9kdWxlIG9mIGludGVncmF0aW9uTW9kdWxlcykge1xuXHRcdGlmIChpbnRlZ3JhdGlvbk1vZHVsZS5pc0luaXRpYWxpemVkICYmIGludGVncmF0aW9uTW9kdWxlLmltcGxlbWVudGF0aW9uLmdldEhlbHBTZWFyY2hFbnRyaWVzKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBoZWxwU2VhcmNoRW50cmllcyA9IGF3YWl0IGludGVncmF0aW9uTW9kdWxlLmltcGxlbWVudGF0aW9uLmdldEhlbHBTZWFyY2hFbnRyaWVzKCk7XG5cblx0XHRcdFx0aWYgKGludGVncmF0aW9uSGVscGVycz8uc2V0U2VhcmNoUXVlcnkpIHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGhlbHBFbnRyeSBvZiBoZWxwU2VhcmNoRW50cmllcykge1xuXHRcdFx0XHRcdFx0aWYgKGhlbHBFbnRyeS5kYXRhPy5wb3B1bGF0ZVF1ZXJ5KSB7XG5cdFx0XHRcdFx0XHRcdGhlbHBFbnRyeS5hY3Rpb25zID0gaGVscEVudHJ5LmFjdGlvbnMgPz8gW107XG5cdFx0XHRcdFx0XHRcdGhlbHBFbnRyeS5hY3Rpb25zLnB1c2goeyBuYW1lOiBQT1BVTEFURV9RVUVSWSwgaG90a2V5OiBcImVudGVyXCIgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmVzdWx0cyA9IHJlc3VsdHMuY29uY2F0KGhlbHBTZWFyY2hFbnRyaWVzKTtcblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoYEZhaWxlZCBjcmVhdGluZyBzZWFyY2ggZW50cmllcyBmb3IgbW9kdWxlICR7aW50ZWdyYXRpb25Nb2R1bGUuZGVmaW5pdGlvbi5pZH1gLCBlcnIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXN1bHRzO1xufVxuXG4vKipcbiAqIFRoZSBpdGVtIGZvciBvbmUgb2YgdGhlIHByb3ZpZGVycyB3YXMgc2VsZWN0ZWQuXG4gKiBAcGFyYW0gcmVzdWx0IFRoZSByZXN1bHQgb2YgdGhlIHNlbGVjdGlvbi5cbiAqIEBwYXJhbSBsYXN0UmVzcG9uc2UgVGhlIGxhc3QgcmVzcG9uc2UuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBzZWxlY3Rpb24gd2FzIGhhbmRsZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpdGVtU2VsZWN0aW9uKFxuXHRyZXN1bHQ6IEhvbWVEaXNwYXRjaGVkU2VhcmNoUmVzdWx0LFxuXHRsYXN0UmVzcG9uc2U6IEhvbWVTZWFyY2hMaXN0ZW5lclJlc3BvbnNlXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0aWYgKHJlc3VsdC5kYXRhKSB7XG5cdFx0aWYgKFxuXHRcdFx0aW50ZWdyYXRpb25IZWxwZXJzPy5zZXRTZWFyY2hRdWVyeSAmJlxuXHRcdFx0cmVzdWx0LmFjdGlvbi50cmlnZ2VyID09PSBcInVzZXItYWN0aW9uXCIgJiZcblx0XHRcdHJlc3VsdC5hY3Rpb24ubmFtZSA9PT0gUE9QVUxBVEVfUVVFUlkgJiZcblx0XHRcdHR5cGVvZiByZXN1bHQuZGF0YT8ucG9wdWxhdGVRdWVyeSA9PT0gXCJzdHJpbmdcIlxuXHRcdCkge1xuXHRcdFx0YXdhaXQgaW50ZWdyYXRpb25IZWxwZXJzLnNldFNlYXJjaFF1ZXJ5KHJlc3VsdC5kYXRhLnBvcHVsYXRlUXVlcnkgYXMgc3RyaW5nKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdGlmIChyZXN1bHQuZGF0YT8ucHJvdmlkZXJJZCA9PT0gXCJpbnRlZ3JhdGlvbi1wcm92aWRlclwiKSB7XG5cdFx0XHRpZiAocmVzdWx0LmFjdGlvbi50cmlnZ2VyID09PSBcInVzZXItYWN0aW9uXCIpIHtcblx0XHRcdFx0Y29uc3QgaW50ZWdyYXRpb25JZDogc3RyaW5nID0gcmVzdWx0LmRhdGEuaW50ZWdyYXRpb25JZDtcblx0XHRcdFx0Y29uc3QgYXV0b1N0YXJ0OiBib29sZWFuID0gcmVzdWx0LmRhdGEuYXV0b1N0YXJ0O1xuXHRcdFx0XHRyZXR1cm4gdXBkYXRlSW50ZWdyYXRpb25TdGF0dXMobGFzdFJlc3BvbnNlLCBpbnRlZ3JhdGlvbklkLCAhYXV0b1N0YXJ0KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRjb25zdCBmb3VuZEludGVncmF0aW9uID0gaW50ZWdyYXRpb25Nb2R1bGVzLmZpbmQoKGhpKSA9PiBoaS5kZWZpbml0aW9uLmlkID09PSByZXN1bHQuZGF0YT8ucHJvdmlkZXJJZCk7XG5cdFx0aWYgKGZvdW5kSW50ZWdyYXRpb24/LmltcGxlbWVudGF0aW9uPy5pdGVtU2VsZWN0aW9uKSB7XG5cdFx0XHRyZXR1cm4gZm91bmRJbnRlZ3JhdGlvbi5pbXBsZW1lbnRhdGlvbi5pdGVtU2VsZWN0aW9uKHJlc3VsdCwgbGFzdFJlc3BvbnNlKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogR2V0IHRoZSBob21lIHJlc3VsdHMgZm9yIGludGVncmF0aW9uIG1hbmFnZW1lbnQuXG4gKiBAcmV0dXJucyBUaGUgaG9tZSByZXN1bHRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TWFuYWdlbWVudFJlc3VsdHMoKTogUHJvbWlzZTxIb21lU2VhcmNoUmVzcG9uc2U+IHtcblx0aWYgKCFpbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9ucykge1xuXHRcdGxvZ2dlci5lcnJvcihcIkludGVncmF0aW9uUHJvdmlkZXIgaXMgbm90IGF2YWlsYWJsZSwgbWFrZSBzdXJlIHlvdXIgaGF2ZSBjYWxsZWQgaW5pdFwiKTtcblx0fVxuXG5cdGNvbnN0IGhvbWVSZXNwb25zZTogSG9tZVNlYXJjaFJlc3BvbnNlID0ge1xuXHRcdHJlc3VsdHM6IFtdLFxuXHRcdGNvbnRleHQ6IHtcblx0XHRcdGZpbHRlcnM6IFtdXG5cdFx0fVxuXHR9O1xuXG5cdGZvciAoY29uc3QgaW50ZWdyYXRpb25Nb2R1bGUgb2YgaW50ZWdyYXRpb25Nb2R1bGVzKSB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgY3JlYXRlUmVzdWx0KFxuXHRcdFx0aW50ZWdyYXRpb25Nb2R1bGUuZGVmaW5pdGlvbi5pZCxcblx0XHRcdGludGVncmF0aW9uTW9kdWxlLmRlZmluaXRpb24udGl0bGUsXG5cdFx0XHRpbnRlZ3JhdGlvbk1vZHVsZS5kZWZpbml0aW9uLmRlc2NyaXB0aW9uLFxuXHRcdFx0aW50ZWdyYXRpb25Nb2R1bGUuZGVmaW5pdGlvbi5pY29uLFxuXHRcdFx0aW50ZWdyYXRpb25Nb2R1bGU/LmlzSW5pdGlhbGl6ZWQgPz8gZmFsc2Vcblx0XHQpO1xuXHRcdGhvbWVSZXNwb25zZS5yZXN1bHRzLnB1c2gocmVzdWx0KTtcblx0fVxuXG5cdGlmIChob21lUmVzcG9uc2UucmVzdWx0cy5sZW5ndGggPT09IDApIHtcblx0XHRjb25zdCBkZXNjcmlwdGlvbiA9XG5cdFx0XHRcIllvdSBlaXRoZXIgaGF2ZSBubyBpbnRlZ3JhdGlvbnMgbGlzdGVkIG9yIG5vbmUgb2YgdGhlbSBhcmUgZW5hYmxlZC4gUGxlYXNlIGNoZWNrIHdpdGggc3VwcG9ydCBpZiB5b3UgYmVsaWV2ZSB5b3Ugc2hvdWxkIGhhdmUgYWNjZXNzIHRvIGludGVncmF0aW9uc1wiO1xuXHRcdGNvbnN0IG5vRW50cmllczogSG9tZVNlYXJjaFJlc3VsdCA9IHtcblx0XHRcdGtleTogXCJpbnRlZ3JhdGlvbi1wcm92aWRlci1uby1yZXN1bHRzXCIsXG5cdFx0XHR0aXRsZTogXCJObyBpbnRlZ3JhdGlvbnMgYXZhaWxhYmxlXCIsXG5cdFx0XHRkYXRhOiB7fSxcblx0XHRcdGFjdGlvbnM6IFtdLFxuXHRcdFx0aWNvbjogaW50ZWdyYXRpb25Qcm92aWRlck9wdGlvbnMuaWNvbixcblx0XHRcdGRlc2NyaXB0aW9uLFxuXHRcdFx0c2hvcnREZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG5cdFx0XHR0ZW1wbGF0ZTogQ0xJVGVtcGxhdGUuU2ltcGxlVGV4dCxcblx0XHRcdHRlbXBsYXRlQ29udGVudDogZGVzY3JpcHRpb25cblx0XHR9O1xuXHRcdGhvbWVSZXNwb25zZS5yZXN1bHRzLnB1c2gobm9FbnRyaWVzKTtcblx0XHRsb2dnZXIuZXJyb3IoXG5cdFx0XHRcIkludGVncmF0aW9uIG1hbmFnZW1lbnQgaXMgZW5hYmxlZCBidXQgeW91IGhhdmUgbm8gaW50ZWdyYXRpb25zIGxpc3RlZCBpbiB5b3VyIHNldHRpbmdzIG9yIG5vbmUgb2YgdGhlbSBhcmUgZW5hYmxlZFwiXG5cdFx0KTtcblx0fVxuXG5cdHJldHVybiBob21lUmVzcG9uc2U7XG59XG5cbi8qKlxuICogU2V0IGEgcHJlZmVyZW5jZXMgdXNpbmcgYW4gZW5kcG9pbnQuXG4gKiBAcGFyYW0gaW50ZWdyYXRpb25JZCBUaGUgaW50ZWdyYXRpb24gaWQgdG8gc2V0IHRoZSBwcmVmZXJlbmNlIGZvci5cbiAqIEBwYXJhbSBwcmVmZXJlbmNlcyBUaGUgcHJlZmVyZW5jZXMgZm9yIHRoZSBpbnRlZ3JhdGlvbi5cbiAqIEBwYXJhbSBwcmVmZXJlbmNlcy5hdXRvU3RhcnQgVGhlIGF1dG9TdGFydCBwcmVmZXJlbmNlLlxuICovXG5hc3luYyBmdW5jdGlvbiBzZXRQcmVmZXJlbmNlcyhpbnRlZ3JhdGlvbklkOiBzdHJpbmcsIHByZWZlcmVuY2VzOiB7IGF1dG9TdGFydDogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChlbmRwb2ludFByb3ZpZGVyLmhhc0VuZHBvaW50KElOVEVHUkFUSU9OU19QUkVGRVJFTkNFX0VORFBPSU5UX1NFVCkpIHtcblx0XHRjb25zdCBzdWNjZXNzID0gYXdhaXQgZW5kcG9pbnRQcm92aWRlci5hY3Rpb248RW5kcG9pbnRJbnRlZ3JhdGlvbnNQcmVmZXJlbmNlc1NldFJlcXVlc3Q+KFxuXHRcdFx0SU5URUdSQVRJT05TX1BSRUZFUkVOQ0VfRU5EUE9JTlRfU0VULFxuXHRcdFx0eyBpZDogaW50ZWdyYXRpb25JZCwgcGF5bG9hZDogcHJlZmVyZW5jZXMgfVxuXHRcdCk7XG5cdFx0aWYgKHN1Y2Nlc3MpIHtcblx0XHRcdGxvZ2dlci5pbmZvKGBTYXZlZCBpbnRlZ3JhdGlvbjogJHtpbnRlZ3JhdGlvbklkfSBwcmVmZXJlbmNlLiBBdXRvU3RhcnQ6ICR7cHJlZmVyZW5jZXMuYXV0b1N0YXJ0fWApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0YFVuYWJsZSB0byBzYXZlIGludGVncmF0aW9uOiAke2ludGVncmF0aW9uSWR9IHByZWZlcmVuY2UuIEF1dG9TdGFydDogJHtwcmVmZXJlbmNlcy5hdXRvU3RhcnR9YFxuXHRcdFx0KTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIHByZWZlcmVuY2VzIGZvciB0aGUgaW50ZWdyYXRpb24uXG4gKiBAcGFyYW0gaW50ZWdyYXRpb25JZCBUaGUgaW50ZWdyYXRpb24gdG8gZ2V0IHRoZSBwcmVmZXJlbmNlcyBmb3IuXG4gKiBAcmV0dXJucyBUaGUgcHJlZmVyZW5jZXMgaWYgdGhleSBleGlzdC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0UHJlZmVyZW5jZXMoaW50ZWdyYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx7IGF1dG9TdGFydDogYm9vbGVhbiB9IHwgdW5kZWZpbmVkPiB7XG5cdGlmIChlbmRwb2ludFByb3ZpZGVyLmhhc0VuZHBvaW50KElOVEVHUkFUSU9OU19QUkVGRVJFTkNFX0VORFBPSU5UX0dFVCkpIHtcblx0XHRjb25zdCBwcmVmZXJlbmNlcyA9IGF3YWl0IGVuZHBvaW50UHJvdmlkZXIucmVxdWVzdFJlc3BvbnNlPFxuXHRcdFx0RW5kcG9pbnRJbnRlZ3JhdGlvbnNQcmVmZXJlbmNlc0dldFJlcXVlc3QsXG5cdFx0XHRFbmRwb2ludEludGVncmF0aW9uc1ByZWZlcmVuY2VzR2V0UmVzcG9uc2Vcblx0XHQ+KElOVEVHUkFUSU9OU19QUkVGRVJFTkNFX0VORFBPSU5UX0dFVCwgeyBpZDogaW50ZWdyYXRpb25JZCB9KTtcblx0XHRpZiAoIWlzRW1wdHkocHJlZmVyZW5jZXMpKSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhgUmV0cmlldmVkIHByZWZlcmVuY2UgZm9yIGludGVncmF0aW9uOiAke2ludGVncmF0aW9uSWR9YCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZ2dlci5pbmZvKGBVbmFibGUgdG8gZ2V0IHByZWZlcmVuY2UgZm9yIGludGVncmF0aW9uOiAke2ludGVncmF0aW9uSWR9YCk7XG5cdFx0fVxuXHRcdHJldHVybiBwcmVmZXJlbmNlcztcblx0fVxufVxuXG4vKipcbiAqIFVwZGF0ZSB0aGUgc3RhdHVzIG9mIGFuIGludGVncmF0aW9uIHJlc3VsdC5cbiAqIEBwYXJhbSBsYXN0UmVzcG9uc2UgVGhlIGxhc3QgcmVzcG9uc2UgdG8gdXNlIGZvciB0aGUgdXBkYXRlLlxuICogQHBhcmFtIGludGVncmF0aW9uSWQgVGhlIGludGVncmF0aW9uIHRvIHVwZGF0ZS5cbiAqIEBwYXJhbSBzaG91bGRBdXRvU3RhcnQgVGhlIGF1dG9TdGFydCBmbGFnLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgaW50ZWdyYXRpb24gc3RhdHVzIHdhcyB1cGRhdGVkLlxuICovXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVJbnRlZ3JhdGlvblN0YXR1cyhcblx0bGFzdFJlc3BvbnNlOiBIb21lU2VhcmNoTGlzdGVuZXJSZXNwb25zZSxcblx0aW50ZWdyYXRpb25JZDogc3RyaW5nLFxuXHRzaG91bGRBdXRvU3RhcnQ6IGJvb2xlYW5cbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRpZiAoIWludGVncmF0aW9uUHJvdmlkZXJPcHRpb25zKSB7XG5cdFx0bG9nZ2VyLmVycm9yKFwiSW50ZWdyYXRpb25Qcm92aWRlciBpcyBub3QgYXZhaWxhYmxlLCBtYWtlIHN1cmUgeW91ciBoYXZlIGNhbGxlZCBpbml0XCIpO1xuXHR9XG5cblx0Y29uc3QgaW50ZWdyYXRpb24gPSBpbnRlZ3JhdGlvbk1vZHVsZXMuZmluZCgoZW50cnkpID0+IGVudHJ5LmRlZmluaXRpb24uaWQgPT09IGludGVncmF0aW9uSWQpO1xuXHRpZiAoaXNFbXB0eShpbnRlZ3JhdGlvbikpIHtcblx0XHRsb2dnZXIud2FybihgVW5hYmxlIHRvIGZpbmQgc3BlY2lmaWVkIGludGVncmF0aW9uOiAke2ludGVncmF0aW9uSWR9IGluIGVuYWJsZWQgbW9kdWxlc2ApO1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGlmIChzaG91bGRBdXRvU3RhcnQgJiYgIWludGVncmF0aW9uLmlzSW5pdGlhbGl6ZWQpIHtcblx0XHRhd2FpdCBpbml0aWFsaXplTW9kdWxlKGludGVncmF0aW9uLCBpbnRlZ3JhdGlvbkhlbHBlcnMpO1xuXHR9IGVsc2UgaWYgKCFzaG91bGRBdXRvU3RhcnQgJiYgaW50ZWdyYXRpb24uaXNJbml0aWFsaXplZCkge1xuXHRcdGF3YWl0IGNsb3NlZG93bk1vZHVsZShpbnRlZ3JhdGlvbik7XG5cdH1cblxuXHRjb25zdCByZXN1bHQgPSBhd2FpdCBjcmVhdGVSZXN1bHQoXG5cdFx0aW50ZWdyYXRpb24uZGVmaW5pdGlvbi5pZCxcblx0XHRpbnRlZ3JhdGlvbi5kZWZpbml0aW9uLnRpdGxlLFxuXHRcdGludGVncmF0aW9uLmRlZmluaXRpb24uZGVzY3JpcHRpb24sXG5cdFx0aW50ZWdyYXRpb24uZGVmaW5pdGlvbi5pY29uLFxuXHRcdHNob3VsZEF1dG9TdGFydFxuXHQpO1xuXHRsYXN0UmVzcG9uc2UucmVzcG9uZChbcmVzdWx0XSk7XG5cblx0YXdhaXQgc2V0UHJlZmVyZW5jZXMoaW50ZWdyYXRpb24uZGVmaW5pdGlvbi5pZCwgeyBhdXRvU3RhcnQ6IHNob3VsZEF1dG9TdGFydCB9KTtcblxuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gaW50ZWdyYXRpb24gcmVzdWx0LlxuICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgaW50ZWdyYXRpb24uXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgaW50ZWdyYXRpb24uXG4gKiBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBpbnRlZ3JhdGlvbi5cbiAqIEBwYXJhbSBpY29uIFRoZSBpY29uIG9mIHRoZSBpbnRlZ3JhdGlvbi5cbiAqIEBwYXJhbSBhdXRvU3RhcnQgRG9lcyB0aGUgaW50ZWdyYXRpb24gYXV0byBzdGFydC5cbiAqIEByZXR1cm5zIFRoZSBzZWFyY2ggcmVzdWx0LlxuICovXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVSZXN1bHQoXG5cdGlkOiBzdHJpbmcsXG5cdG5hbWU6IHN0cmluZyxcblx0ZGVzY3JpcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0aWNvbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRhdXRvU3RhcnQ6IGJvb2xlYW5cbik6IFByb21pc2U8SG9tZVNlYXJjaFJlc3VsdD4ge1xuXHRjb25zdCBidXR0b25BY3Rpb24gPSBhdXRvU3RhcnQgPyBcIlR1cm4gT2ZmIEludGVncmF0aW9uXCIgOiBcIlR1cm4gT24gSW50ZWdyYXRpb25cIjtcblxuXHRyZXR1cm4ge1xuXHRcdGtleTogYGludGVncmF0aW9uLSR7aWR9YCxcblx0XHR0aXRsZTogYCR7bmFtZX1gLFxuXHRcdGljb24sXG5cdFx0YWN0aW9uczogW10sXG5cdFx0ZGF0YToge1xuXHRcdFx0cHJvdmlkZXJJZDogXCJpbnRlZ3JhdGlvbi1wcm92aWRlclwiLFxuXHRcdFx0aW50ZWdyYXRpb25JZDogaWQsXG5cdFx0XHRhdXRvU3RhcnRcblx0XHR9LFxuXHRcdHRlbXBsYXRlOiBDTElUZW1wbGF0ZS5DdXN0b20sXG5cdFx0dGVtcGxhdGVDb250ZW50OiB7XG5cdFx0XHRsYXlvdXQ6IGF3YWl0IGNyZWF0ZUNvbnRhaW5lcihcblx0XHRcdFx0XCJjb2x1bW5cIixcblx0XHRcdFx0W1xuXHRcdFx0XHRcdGF3YWl0IGNyZWF0ZUNvbnRhaW5lcihcblx0XHRcdFx0XHRcdFwiY29sdW1uXCIsXG5cdFx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRcdGF3YWl0IGNyZWF0ZUNvbnRhaW5lcihcblx0XHRcdFx0XHRcdFx0XHRcInJvd1wiLFxuXHRcdFx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0XHRcdGF3YWl0IGNyZWF0ZUltYWdlKFwiaWNvblwiLCBuYW1lLCB7IHdpZHRoOiBcIjMycHhcIiwgaGVpZ2h0OiBcIjMycHhcIiB9KSxcblx0XHRcdFx0XHRcdFx0XHRcdGF3YWl0IGNyZWF0ZVRpdGxlKFwidGl0bGVcIilcblx0XHRcdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRnYXA6IFwiMTBweFwiXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRhd2FpdCBjcmVhdGVUZXh0KFwiZGVzY3JpcHRpb25cIiwgMTIpXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRnYXA6IFwiMjBweFwiXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRhd2FpdCBjcmVhdGVDb250YWluZXIoXCJjb2x1bW5cIiwgW1xuXHRcdFx0XHRcdFx0YXdhaXQgY3JlYXRlVGV4dChcInN0YXR1c1wiLCAxMiwgeyBwYWRkaW5nQm90dG9tOiBcIjEwcHhcIiwgZm9udEZhbWlseTogXCJtb25vc3BhY2VcIiB9KSxcblx0XHRcdFx0XHRcdGF3YWl0IGNyZWF0ZUJ1dHRvbihcblx0XHRcdFx0XHRcdFx0YXV0b1N0YXJ0ID8gQnV0dG9uU3R5bGUuUHJpbWFyeSA6IEJ1dHRvblN0eWxlLlNlY29uZGFyeSxcblx0XHRcdFx0XHRcdFx0XCJidG5UZXh0XCIsXG5cdFx0XHRcdFx0XHRcdGJ1dHRvbkFjdGlvblxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdF0pXG5cdFx0XHRcdF0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRwYWRkaW5nOiBcIjEwcHhcIixcblx0XHRcdFx0XHRmbGV4OiAxLFxuXHRcdFx0XHRcdGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIlxuXHRcdFx0XHR9XG5cdFx0XHQpLFxuXHRcdFx0ZGF0YToge1xuXHRcdFx0XHR0aXRsZTogbmFtZSxcblx0XHRcdFx0ZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uID8/IFwiWW91IGNhbiBlbmFibGUvZGlzYWJsZSBhbiBpbnRlZ3JhdGlvbnMgZmVhdHVyZXNcIixcblx0XHRcdFx0aWNvbjogaWNvbiA/PyBcIlwiLFxuXHRcdFx0XHRzdGF0dXM6IGBJbnRlZ3JhdGlvbiBTdGF0ZTogJHthdXRvU3RhcnQgPyBcIk9uXCIgOiBcIk9mZlwifWAsXG5cdFx0XHRcdGJ0blRleHQ6IGJ1dHRvbkFjdGlvblxuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cbiIsImltcG9ydCB0eXBlIE9wZW5GaW4gZnJvbSBcIkBvcGVuZmluL2NvcmVcIjtcbmltcG9ydCB7IGdldEN1cnJlbnRTeW5jLCB0eXBlIEJyb3dzZXJTbmFwc2hvdCB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB7IGxhdW5jaENvbm5lY3RlZEFwcCB9IGZyb20gXCIuL2Nvbm5lY3Rpb25zXCI7XG5pbXBvcnQgKiBhcyBlbmRwb2ludFByb3ZpZGVyIGZyb20gXCIuL2VuZHBvaW50XCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiLi9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB7IE1BTklGRVNUX1RZUEVTIH0gZnJvbSBcIi4vbWFuaWZlc3QtdHlwZXNcIjtcbmltcG9ydCB7XG5cdGJyaW5nVmlld1RvRnJvbnQsXG5cdGJyaW5nV2luZG93VG9Gcm9udCxcblx0ZG9lc1ZpZXdFeGlzdCxcblx0ZG9lc1dpbmRvd0V4aXN0LFxuXHRmaW5kVmlld05hbWVzXG59IGZyb20gXCIuL3BsYXRmb3JtL2Jyb3dzZXJcIjtcbmltcG9ydCB0eXBlIHsgUGxhdGZvcm1BcHAsIFBsYXRmb3JtQXBwSWRlbnRpZmllciB9IGZyb20gXCIuL3NoYXBlcy9hcHAtc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5LCBvYmplY3RDbG9uZSwgcmFuZG9tVVVJRCB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIkxhdW5jaFwiKTtcblxuLyoqXG4gKiBMYXVuY2ggYW4gYXBwbGljYXRpb24gaW4gdGhlIHdheSBzcGVjaWZpZWQgYnkgaXRzIG1hbmlmZXN0IHR5cGUuXG4gKiBAcGFyYW0gcGxhdGZvcm1BcHAgVGhlIGFwcGxpY2F0aW9uIHRvIGxhdW5jaC5cbiAqIEByZXR1cm5zIElkZW50aWZpZXJzIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFwcGxpY2F0aW9uIGxhdW5jaGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGF1bmNoKHBsYXRmb3JtQXBwOiBQbGF0Zm9ybUFwcCk6IFByb21pc2U8UGxhdGZvcm1BcHBJZGVudGlmaWVyW10gfCB1bmRlZmluZWQ+IHtcblx0dHJ5IHtcblx0XHRsb2dnZXIuaW5mbyhcIkFwcGxpY2F0aW9uIGxhdW5jaCByZXF1ZXN0ZWRcIiwgcGxhdGZvcm1BcHApO1xuXG5cdFx0aWYgKGlzRW1wdHkocGxhdGZvcm1BcHApKSB7XG5cdFx0XHRsb2dnZXIud2FybihcIkFuIGVtcHR5IGFwcCBkZWZpbml0aW9uIHdhcyBwYXNzZWQgdG8gbGF1bmNoXCIpO1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblx0XHRjb25zdCBhcHAgPSBvYmplY3RDbG9uZShwbGF0Zm9ybUFwcCk7XG5cblx0XHRjb25zdCBwbGF0Zm9ybUFwcElkZW50aXRpZXM6IFBsYXRmb3JtQXBwSWRlbnRpZmllcltdID0gW107XG5cdFx0c3dpdGNoIChhcHAubWFuaWZlc3RUeXBlKSB7XG5cdFx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLkV4dGVybmFsLmlkOlxuXHRcdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5JbmxpbmVFeHRlcm5hbC5pZDoge1xuXHRcdFx0XHRjb25zdCBwbGF0Zm9ybUlkZW50aXR5ID0gYXdhaXQgbGF1bmNoRXh0ZXJuYWwoYXBwKTtcblx0XHRcdFx0aWYgKHBsYXRmb3JtSWRlbnRpdHkpIHtcblx0XHRcdFx0XHRwbGF0Zm9ybUFwcElkZW50aXRpZXMucHVzaChwbGF0Zm9ybUlkZW50aXR5KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgTUFOSUZFU1RfVFlQRVMuQXBwYXNzZXQuaWQ6XG5cdFx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLklubGluZUFwcEFzc2V0LmlkOiB7XG5cdFx0XHRcdGNvbnN0IHBsYXRmb3JtSWRlbnRpdHkgPSBhd2FpdCBsYXVuY2hBcHBBc3NldChhcHApO1xuXHRcdFx0XHRpZiAocGxhdGZvcm1JZGVudGl0eSkge1xuXHRcdFx0XHRcdHBsYXRmb3JtQXBwSWRlbnRpdGllcy5wdXNoKHBsYXRmb3JtSWRlbnRpdHkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5JbmxpbmVWaWV3LmlkOlxuXHRcdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5WaWV3LmlkOiB7XG5cdFx0XHRcdGNvbnN0IHBsYXRmb3JtSWRlbnRpdHkgPSBhd2FpdCBsYXVuY2hWaWV3KGFwcCk7XG5cdFx0XHRcdGlmIChwbGF0Zm9ybUlkZW50aXR5KSB7XG5cdFx0XHRcdFx0cGxhdGZvcm1BcHBJZGVudGl0aWVzLnB1c2gocGxhdGZvcm1JZGVudGl0eSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLldpbmRvdy5pZDpcblx0XHRcdGNhc2UgTUFOSUZFU1RfVFlQRVMuSW5saW5lV2luZG93LmlkOiB7XG5cdFx0XHRcdGNvbnN0IHBsYXRmb3JtSWRlbnRpdHkgPSBhd2FpdCBsYXVuY2hXaW5kb3coYXBwKTtcblx0XHRcdFx0aWYgKHBsYXRmb3JtSWRlbnRpdHkpIHtcblx0XHRcdFx0XHRwbGF0Zm9ybUFwcElkZW50aXRpZXMucHVzaChwbGF0Zm9ybUlkZW50aXR5KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgTUFOSUZFU1RfVFlQRVMuU25hcHNob3QuaWQ6XG5cdFx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLklubGluZVNuYXBzaG90LmlkOiB7XG5cdFx0XHRcdGNvbnN0IGlkZW50aXRpZXMgPSBhd2FpdCBsYXVuY2hTbmFwc2hvdChhcHApO1xuXHRcdFx0XHRpZiAoaWRlbnRpdGllcykge1xuXHRcdFx0XHRcdHBsYXRmb3JtQXBwSWRlbnRpdGllcy5wdXNoKC4uLmlkZW50aXRpZXMpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5NYW5pZmVzdC5pZDoge1xuXHRcdFx0XHRjb25zdCBtYW5pZmVzdEFwcCA9IGF3YWl0IGZpbi5BcHBsaWNhdGlvbi5zdGFydEZyb21NYW5pZmVzdChhcHAubWFuaWZlc3QpO1xuXHRcdFx0XHRjb25zdCBtYW5pZmVzdFVVSUQgPSBtYW5pZmVzdEFwcD8uaWRlbnRpdHk/LnV1aWQ7XG5cdFx0XHRcdGlmICghaXNFbXB0eShtYW5pZmVzdFVVSUQpKSB7XG5cdFx0XHRcdFx0cGxhdGZvcm1BcHBJZGVudGl0aWVzLnB1c2goe1xuXHRcdFx0XHRcdFx0dXVpZDogbWFuaWZlc3RVVUlELFxuXHRcdFx0XHRcdFx0bmFtZTogbWFuaWZlc3RVVUlELFxuXHRcdFx0XHRcdFx0YXBwSWQ6IGFwcC5hcHBJZFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5EZXNrdG9wQnJvd3Nlci5pZDoge1xuXHRcdFx0XHRhd2FpdCBmaW4uU3lzdGVtLm9wZW5VcmxXaXRoQnJvd3NlcihhcHAubWFuaWZlc3QpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgTUFOSUZFU1RfVFlQRVMuRW5kcG9pbnQuaWQ6IHtcblx0XHRcdFx0aWYgKGVuZHBvaW50UHJvdmlkZXIuaGFzRW5kcG9pbnQoYXBwLm1hbmlmZXN0KSkge1xuXHRcdFx0XHRcdGNvbnN0IGlkZW50aXR5ID0gYXdhaXQgZW5kcG9pbnRQcm92aWRlci5yZXF1ZXN0UmVzcG9uc2U8eyBwYXlsb2FkOiBQbGF0Zm9ybUFwcCB9LCBPcGVuRmluLklkZW50aXR5Pihcblx0XHRcdFx0XHRcdGFwcC5tYW5pZmVzdCxcblx0XHRcdFx0XHRcdHsgcGF5bG9hZDogYXBwIH1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGlmIChpc0VtcHR5KGlkZW50aXR5KSkge1xuXHRcdFx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0XHRcdGBBcHAgd2l0aCBpZDogJHthcHAuYXBwSWR9IGVuY291bnRlcmVkIHdoZW4gbGF1bmNoZWQgdXNpbmcgZW5kcG9pbnQ6ICR7YXBwLm1hbmlmZXN0fS5gXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRwbGF0Zm9ybUFwcElkZW50aXRpZXMucHVzaCh7IC4uLmlkZW50aXR5LCBhcHBJZDogYXBwLmFwcElkIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRcdGBBcHAgd2l0aCBpZDogJHthcHAuYXBwSWR9IGNvdWxkIG5vdCBiZSBsYXVuY2hlZCBhcyBpdCBpcyBvZiBtYW5pZmVzdFR5cGU6ICR7YXBwLm1hbmlmZXN0VHlwZX0gYW5kIHRoZSBlbmRwb2ludDogJHthcHAubWFuaWZlc3R9IGlzIG5vdCBhdmFpbGFibGUuYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLkNvbm5lY3Rpb24uaWQ6IHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFx0XCJBbiBhcHAgZGVmaW5lZCBieSBhIGNvbm5lY3Rpb24gKGNvbm5lY3RlZCBhcHApIGhhcyBiZWVuIHNlbGVjdGVkLiBQYXNzaW5nIHNlbGVjdGlvbiB0byBjb25uZWN0aW9uXCJcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3QgaWRlbnRpdHkgPSBhd2FpdCBsYXVuY2hDb25uZWN0ZWRBcHAoYXBwKTtcblx0XHRcdFx0aWYgKCFpc0VtcHR5KGlkZW50aXR5KSkge1xuXHRcdFx0XHRcdHBsYXRmb3JtQXBwSWRlbnRpdGllcy5wdXNoKHsgLi4uaWRlbnRpdHksIGFwcElkOiBhcHAuYXBwSWQgfSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdGxvZ2dlci5lcnJvcihcIldlIGRvIG5vdCBzdXBwb3J0IHRoZSBtYW5pZmVzdCB0eXBlIHNvIHRoaXMgYXBwIGNhbm5vdCBiZSBsYXVuY2hlZC5cIiwgYXBwKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRsb2dnZXIuaW5mbyhcIkZpbmlzaGVkIGFwcGxpY2F0aW9uIGxhdW5jaCByZXF1ZXN0XCIpO1xuXHRcdHJldHVybiBwbGF0Zm9ybUFwcElkZW50aXRpZXM7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdGxvZ2dlci5lcnJvcihcIkZhaWxlZCBkdXJpbmcgYXBwbGljYXRpb24gbGF1bmNoIHJlcXVlc3RcIiwgZXJyKTtcblx0fVxufVxuXG4vKipcbiAqIEJyaW5nIHRoZSBhcHBsaWNhdGlvbnMgdmlld3MgdG8gdGhlIGZyb250LlxuICogQHBhcmFtIHBsYXRmb3JtQXBwIFRoZSBhcHBsaWNhdGlvbiB0byBicmluZyB0byB0aGUgZnJvbnQuXG4gKiBAcGFyYW0gcGxhdGZvcm1BcHBJZGVudGlmaWVycyBBZGRpdGlvbmFsIGFwcCBpZGVudGlmaWVycyB0byBicmluZyB0byB0aGUgZnJvbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBicmluZ1RvRnJvbnQoXG5cdHBsYXRmb3JtQXBwOiBQbGF0Zm9ybUFwcCxcblx0cGxhdGZvcm1BcHBJZGVudGlmaWVyczogUGxhdGZvcm1BcHBJZGVudGlmaWVyW11cbik6IFByb21pc2U8dm9pZD4ge1xuXHRzd2l0Y2ggKHBsYXRmb3JtQXBwLm1hbmlmZXN0VHlwZSkge1xuXHRcdGNhc2UgTUFOSUZFU1RfVFlQRVMuRXh0ZXJuYWwuaWQ6XG5cdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5JbmxpbmVFeHRlcm5hbC5pZDpcblx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLk1hbmlmZXN0LmlkOlxuXHRcdGNhc2UgTUFOSUZFU1RfVFlQRVMuRGVza3RvcEJyb3dzZXIuaWQ6XG5cdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5FbmRwb2ludC5pZDpcblx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLkNvbm5lY3Rpb24uaWQ6IHtcblx0XHRcdGxvZ2dlci5pbmZvKGBCcmluZ2luZyBhcHBzIG9mIHR5cGU6ICR7cGxhdGZvcm1BcHAubWFuaWZlc3RUeXBlfSB0byBmcm9udCBpcyBub3Qgc3VwcG9ydGVkLmApO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNhc2UgTUFOSUZFU1RfVFlQRVMuSW5saW5lVmlldy5pZDpcblx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLlZpZXcuaWQ6IHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHBsYXRmb3JtQXBwSWRlbnRpZmllcnMpICYmIHBsYXRmb3JtQXBwSWRlbnRpZmllcnMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdGF3YWl0IGJyaW5nVmlld1RvRnJvbnQoeyBpZGVudGl0eTogcGxhdGZvcm1BcHBJZGVudGlmaWVyc1swXSB9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdGBBIHJlcXVlc3QgdG8gYnJpbmcgYSB2aWV3IGFwcCB0byBmcm9udCB3YXMgcmVjZWl2ZWQgYnV0IHdlIGRpZG4ndCByZWNlaXZlIGV4YWN0bHkgb25lIGlkZW50aXR5IGZvciBhcHA6ICR7cGxhdGZvcm1BcHAuYXBwSWR9LmBcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLldpbmRvdy5pZDpcblx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLklubGluZVdpbmRvdy5pZDoge1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkocGxhdGZvcm1BcHBJZGVudGlmaWVycykgJiYgcGxhdGZvcm1BcHBJZGVudGlmaWVycy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0YXdhaXQgYnJpbmdXaW5kb3dUb0Zyb250KHsgaWRlbnRpdHk6IHBsYXRmb3JtQXBwSWRlbnRpZmllcnNbMF0gfSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRgQSByZXF1ZXN0IHRvIGJyaW5nIGEgd2luZG93IGFwcCB0byBmcm9udCB3YXMgcmVjZWl2ZWQgYnV0IHdlIGRpZG4ndCByZWNlaXZlIGV4YWN0bHkgb25lIGlkZW50aXR5IGZvciBhcHA6ICR7cGxhdGZvcm1BcHAuYXBwSWR9LmBcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRjYXNlIE1BTklGRVNUX1RZUEVTLlVucmVnaXN0ZXJlZEFwcC5pZDoge1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkocGxhdGZvcm1BcHBJZGVudGlmaWVycykgJiYgcGxhdGZvcm1BcHBJZGVudGlmaWVycy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0Ly8gaXNWaWV3IC0gdGhpcyBzaG91bGQgYmUgdGhlIG1ham9yaXR5IG9mIGNhc2VzIGZvciBhbiB1bnJlZ2lzdGVyZWQgYXBwXG5cdFx0XHRcdGxldCBpc1ZpZXcgPSB0cnVlO1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGNvbnN0IHZpZXcgPSBmaW4uVmlldy53cmFwU3luYyhwbGF0Zm9ybUFwcElkZW50aWZpZXJzWzBdKTtcblx0XHRcdFx0XHRjb25zdCB2aWV3SW5mbyA9IGF3YWl0IHZpZXcuZ2V0SW5mbygpO1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKFwiVmlldyBJbmZvXCIsIHZpZXdJbmZvKTtcblx0XHRcdFx0fSBjYXRjaCB7XG5cdFx0XHRcdFx0aXNWaWV3ID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGlzVmlldykge1xuXHRcdFx0XHRcdGF3YWl0IGJyaW5nVmlld1RvRnJvbnQoeyBpZGVudGl0eTogcGxhdGZvcm1BcHBJZGVudGlmaWVyc1swXSB9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhd2FpdCBicmluZ1dpbmRvd1RvRnJvbnQoeyBpZGVudGl0eTogcGxhdGZvcm1BcHBJZGVudGlmaWVyc1swXSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0YEEgcmVxdWVzdCB0byBicmluZyBhIHdpbmRvdyBhcHAgdG8gZnJvbnQgd2FzIHJlY2VpdmVkIGJ1dCB3ZSBkaWRuJ3QgcmVjZWl2ZSBleGFjdGx5IG9uZSBpZGVudGl0eSBmb3IgYXBwOiAke3BsYXRmb3JtQXBwLmFwcElkfS5gXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBNQU5JRkVTVF9UWVBFUy5TbmFwc2hvdC5pZDoge1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkocGxhdGZvcm1BcHBJZGVudGlmaWVycykgJiYgcGxhdGZvcm1BcHBJZGVudGlmaWVycy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGZvciAoY29uc3QgaWRlbnRpdHkgb2YgcGxhdGZvcm1BcHBJZGVudGlmaWVycykge1xuXHRcdFx0XHRcdGF3YWl0IGJyaW5nVmlld1RvRnJvbnQoeyBpZGVudGl0eSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0YEEgcmVxdWVzdCB0byBicmluZyBhIHNuYXBzaG90IGFwcCB0byBmcm9udCB3YXMgcmVjZWl2ZWQgYnV0IHdlIGRpZG4ndCByZWNlaXZlIGF0IGxlYXN0IG9uZSB2aWV3IGZvciBhcHA6ICR7cGxhdGZvcm1BcHAuYXBwSWR9LmBcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRkZWZhdWx0OiB7XG5cdFx0XHRsb2dnZXIuZXJyb3IoXG5cdFx0XHRcdFwiV2UgZG8gbm90IHN1cHBvcnQgdGhlIG1hbmlmZXN0IHR5cGUgc28gdGhpcyBhcHAgY2Fubm90IGJlIGJyb3VnaHQgdG8gZnJvbnQuXCIsXG5cdFx0XHRcdHBsYXRmb3JtQXBwXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEdldCB0aGUgcGxhdGZvcm0gYXBwIGlkZW50aWZpZXJzIG9mIGFsbCB0aGUgdmlld3MgaW4gYSB3aW5kb3cuXG4gKiBAcGFyYW0gbmFtZSBUaGUgaWRlbnRpdHkgbmFtZSBvZiB0aGUgd2luZG93LlxuICogQHBhcmFtIHV1aWQgVGhlIGlkZW50aXR5IHV1aWQgb2YgdGhlIHdpbmRvdy5cbiAqIEBwYXJhbSBhcHBJZCBUaGUgYXBwbGljYXRpb24gdG8gbWFwIHRoZSB2aWV3IGlkZW50aXRpZXMgd2l0aC5cbiAqIEByZXR1cm5zIExpc3Qgb2YgcGxhdGZvcm0gYXBwIGlkZW50aWZpZXJzLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRWaWV3SWRlbnRpdGllcyhcblx0bmFtZTogc3RyaW5nLFxuXHR1dWlkOiBzdHJpbmcsXG5cdGFwcElkOiBzdHJpbmdcbik6IFByb21pc2U8UGxhdGZvcm1BcHBJZGVudGlmaWVyW10+IHtcblx0Y29uc3QgaWRlbnRpdHkgPSB7IHV1aWQsIG5hbWUgfTtcblx0Y29uc3Qgd2luID0gZmluLldpbmRvdy53cmFwU3luYyhpZGVudGl0eSk7XG5cdGNvbnN0IHZpZXdzID0gYXdhaXQgd2luLmdldEN1cnJlbnRWaWV3cygpO1xuXHRjb25zdCB2aWV3SWRlbnRpdGllcyA9IHZpZXdzLm1hcCgodmlldykgPT4gKHsgLi4udmlldy5pZGVudGl0eSwgYXBwSWQgfSkpO1xuXHRhd2FpdCB3aW4uc2V0QXNGb3JlZ3JvdW5kKCk7XG5cdHJldHVybiB2aWV3SWRlbnRpdGllcztcbn1cblxuLyoqXG4gKiBHZXQgYSBtYW5pZmVzdCBhcyBlaXRoZXIgYSBzdHJpbmcgb3IgYSBzcGVjaWZpYyBvYmplY3QgdHlwZS5cbiAqIEBwYXJhbSBwbGF0Zm9ybUFwcCBUaGUgYXBwbGljYXRpb24gdG8gZ2V0IHRoZSBtYW5pZmVzdCBmcm9tLlxuICogQHJldHVybnMgVGhlIG1hbmlmZXN0IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFuaWZlc3Q8VD4ocGxhdGZvcm1BcHA6IFBsYXRmb3JtQXBwKTogVCB7XG5cdGlmICh0eXBlb2YgcGxhdGZvcm1BcHAubWFuaWZlc3QgPT09IFwic3RyaW5nXCIgJiYgcGxhdGZvcm1BcHAubWFuaWZlc3Quc3RhcnRzV2l0aChcIntcIikpIHtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShwbGF0Zm9ybUFwcC5tYW5pZmVzdCkgYXMgVDtcblx0fVxuXG5cdHJldHVybiBwbGF0Zm9ybUFwcC5tYW5pZmVzdCBhcyBUO1xufVxuXG4vKipcbiAqIExhdW5jaCBhIHdpbmRvdyBmb3IgdGhlIHBsYXRmb3JtIGFwcC5cbiAqIEBwYXJhbSB3aW5kb3dBcHAgVGhlIGFwcCB0byBsYXVuY2ggdGhlIHdpbmRvdyBmb3IuXG4gKiBAcmV0dXJucyBUaGUgaWRlbnRpdHkgb2YgdGhlIHdpbmRvdyBsYXVuY2hlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbGF1bmNoV2luZG93KHdpbmRvd0FwcDogUGxhdGZvcm1BcHApOiBQcm9taXNlPFBsYXRmb3JtQXBwSWRlbnRpZmllciB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoaXNFbXB0eSh3aW5kb3dBcHApKSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJObyBhcHAgd2FzIHBhc3NlZCB0byBsYXVuY2hXaW5kb3dcIik7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0aWYgKFxuXHRcdHdpbmRvd0FwcC5tYW5pZmVzdFR5cGUgIT09IE1BTklGRVNUX1RZUEVTLldpbmRvdy5pZCAmJlxuXHRcdHdpbmRvd0FwcC5tYW5pZmVzdFR5cGUgIT09IE1BTklGRVNUX1RZUEVTLklubGluZVdpbmRvdy5pZFxuXHQpIHtcblx0XHRsb2dnZXIud2Fybihcblx0XHRcdGBUaGUgYXBwIHBhc3NlZCB3YXMgbm90IG9mIG1hbmlmZXN0VHlwZSAke01BTklGRVNUX1RZUEVTLldpbmRvdy5pZH0gb3IgJHtNQU5JRkVTVF9UWVBFUy5JbmxpbmVXaW5kb3cuaWR9LmBcblx0XHQpO1xuXHRcdHJldHVybjtcblx0fVxuXHRsZXQgbWFuaWZlc3Q6IE9wZW5GaW4uV2luZG93T3B0aW9ucztcblxuXHRpZiAod2luZG93QXBwLm1hbmlmZXN0VHlwZSA9PT0gTUFOSUZFU1RfVFlQRVMuV2luZG93LmlkKSB7XG5cdFx0Y29uc3QgbWFuaWZlc3RSZXNwb25zZSA9IGF3YWl0IGZldGNoKHdpbmRvd0FwcC5tYW5pZmVzdCk7XG5cdFx0bWFuaWZlc3QgPSBhd2FpdCBtYW5pZmVzdFJlc3BvbnNlLmpzb24oKTtcblx0fSBlbHNlIHtcblx0XHQvLyBjb252ZXJzaW9uIGJlY2F1c2Ugb2YgbWFuaWZlc3RUeXBlLiBJbiBtb3N0IHVzZSBjYXNlcyBtYW5pZmVzdCBpcyBhbHdheXMgYSBwYXRoIHRvIGFuIGV4ZWN1dGFibGUgb3IgdG8gYSBtYW5pZmVzdCBmaWxlLiBGb3IgY2xhc3NpYyB3aW5kb3dzIHdlIGFyZSBkZW1vbnN0cmF0aW5nIGhvdyBpdCBjb3VsZCBiZSB1c2VkXG5cdFx0Ly8gZm9yIHBhc3NpbmcgdGhlIG1hbmlmZXN0IGlubGluZVxuXHRcdG1hbmlmZXN0ID0gZ2V0TWFuaWZlc3Qod2luZG93QXBwKTtcblx0fVxuXG5cdGxldCBuYW1lID0gbWFuaWZlc3QubmFtZTtcblx0bGV0IHdhc05hbWVTcGVjaWZpZWQgPSAhaXNFbXB0eShuYW1lKTtcblxuXHRpZiAoIXdhc05hbWVTcGVjaWZpZWQgJiYgd2luZG93QXBwPy5pbnN0YW5jZU1vZGUgPT09IFwic2luZ2xlXCIpIHtcblx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdGBBIHVuaXF1ZSBuYW1lIHdhcyBub3QgcHJvdmlkZWQgaW4gdGhlIG1hbmlmZXN0IG9mIHRoaXMgd2luZG93IGJ1dCB0aGUgY3VzdG9tIGNvbmZpZyBpbmRpY2F0ZXMgdGhhdCB0aGlzIGFwcCBpcyBzdXBwb3NlZCB0byBoYXZlIGEgc2luZ2xlIGluc3RhbmNlIHNvIHdlIGFyZSB1c2luZyB0aGUgYXBwSWQ6ICR7d2luZG93QXBwLmFwcElkfSBhcyB0aGUgdW5pcXVlIG5hbWUuYFxuXHRcdCk7XG5cdFx0bmFtZSA9IHdpbmRvd0FwcC5hcHBJZDtcblx0XHQvLyBhc3NpZ24gdGhlIG5ldyBuYW1lIHRvIHRoZSBtYW5pZmVzdCBpbiBjYXNlIHRoZSB2aWV3IGRvZXNuJ3QgZXhpc3QgeWV0IChhcyBpdCBpcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYW5kIG5vdCBwYXJ0IG9mIHRoZSBhcHAncyBtYW5pZmVzdClcblx0XHRtYW5pZmVzdC5uYW1lID0gbmFtZTtcblx0XHR3YXNOYW1lU3BlY2lmaWVkID0gdHJ1ZTtcblx0fSBlbHNlIGlmICghd2FzTmFtZVNwZWNpZmllZCkge1xuXHRcdG5hbWUgPSBgJHt3aW5kb3dBcHAuYXBwSWR9LyR7cmFuZG9tVVVJRCgpfWA7XG5cdFx0bWFuaWZlc3QubmFtZSA9IG5hbWU7XG5cdH1cblxuXHRsZXQgaWRlbnRpdHkgPSB7IHV1aWQ6IGZpbi5tZS5pZGVudGl0eS51dWlkLCBuYW1lIH07XG5cblx0bGV0IHdpbmRvd0V4aXN0cyA9IGZhbHNlO1xuXG5cdGlmICh3YXNOYW1lU3BlY2lmaWVkKSB7XG5cdFx0d2luZG93RXhpc3RzID0gYXdhaXQgZG9lc1dpbmRvd0V4aXN0KGlkZW50aXR5LCB0cnVlKTtcblx0fVxuXG5cdGlmICghd2luZG93RXhpc3RzKSB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdGNvbnN0IGNyZWF0ZWRXaW5kb3cgPSBhd2FpdCBwbGF0Zm9ybS5jcmVhdGVXaW5kb3cobWFuaWZlc3QpO1xuXHRcdFx0aWRlbnRpdHkgPSBjcmVhdGVkV2luZG93LmlkZW50aXR5O1xuXHRcdFx0YXdhaXQgYnJpbmdXaW5kb3dUb0Zyb250KHsgd2luZG93OiBjcmVhdGVkV2luZG93IH0pO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0bG9nZ2VyLmVycm9yKFwiRXJyb3IgbGF1bmNoaW5nIHdpbmRvd1wiLCBlcnIpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4geyAuLi5pZGVudGl0eSwgYXBwSWQ6IHdpbmRvd0FwcC5hcHBJZCB9O1xufVxuXG4vKipcbiAqIExhdW5jaCBhIHZpZXcgZm9yIHRoZSBwbGF0Zm9ybSBhcHAuXG4gKiBAcGFyYW0gdmlld0FwcCBUaGUgYXBwIHRvIGxhdW5jaCB0aGUgdmlldyBmb3IuXG4gKiBAcmV0dXJucyBUaGUgaWRlbnRpdHkgb2YgdGhlIHZpZXcgbGF1bmNoZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxhdW5jaFZpZXcodmlld0FwcDogUGxhdGZvcm1BcHApOiBQcm9taXNlPFBsYXRmb3JtQXBwSWRlbnRpZmllciB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoaXNFbXB0eSh2aWV3QXBwKSkge1xuXHRcdGxvZ2dlci53YXJuKFwiTm8gYXBwIHdhcyBwYXNzZWQgdG8gbGF1bmNoVmlld1wiKTtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpZiAoXG5cdFx0dmlld0FwcC5tYW5pZmVzdFR5cGUgIT09IE1BTklGRVNUX1RZUEVTLlZpZXcuaWQgJiZcblx0XHR2aWV3QXBwLm1hbmlmZXN0VHlwZSAhPT0gTUFOSUZFU1RfVFlQRVMuSW5saW5lVmlldy5pZFxuXHQpIHtcblx0XHRsb2dnZXIud2Fybihcblx0XHRcdGBUaGUgYXBwIHBhc3NlZCB3YXMgbm90IG9mIG1hbmlmZXN0VHlwZSAke01BTklGRVNUX1RZUEVTLlZpZXcuaWR9IG9yICR7TUFOSUZFU1RfVFlQRVMuSW5saW5lVmlldy5pZH0uYFxuXHRcdCk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGxldCBtYW5pZmVzdDogT3BlbkZpbi5WaWV3T3B0aW9ucztcblxuXHRpZiAodmlld0FwcC5tYW5pZmVzdFR5cGUgPT09IE1BTklGRVNUX1RZUEVTLlZpZXcuaWQpIHtcblx0XHRjb25zdCBtYW5pZmVzdFJlc3BvbnNlID0gYXdhaXQgZmV0Y2godmlld0FwcC5tYW5pZmVzdCk7XG5cdFx0bWFuaWZlc3QgPSBhd2FpdCBtYW5pZmVzdFJlc3BvbnNlLmpzb24oKTtcblx0fSBlbHNlIHtcblx0XHQvLyBjb252ZXJzaW9uIGJlY2F1c2Ugb2YgbWFuaWZlc3RUeXBlLiBJbiBtb3N0IHVzZSBjYXNlcyBtYW5pZmVzdCBpcyBhbHdheXMgYSBwYXRoIHRvIGFuIGV4ZWN1dGFibGUgb3IgdG8gYSBtYW5pZmVzdCBmaWxlLiBGb3Igdmlld3Mgd2UgYXJlIGRlbW9uc3RyYXRpbmcgaG93IGl0IGNvdWxkIGJlIHVzZWRcblx0XHQvLyBmb3IgcGFzc2luZyB0aGUgbWFuaWZlc3QgaW5saW5lXG5cdFx0bWFuaWZlc3QgPSBnZXRNYW5pZmVzdCh2aWV3QXBwKTtcblx0fVxuXG5cdGxldCBuYW1lID0gbWFuaWZlc3QubmFtZTtcblxuXHRsZXQgd2FzTmFtZVNwZWNpZmllZCA9ICFpc0VtcHR5KG5hbWUpO1xuXG5cdGlmICghd2FzTmFtZVNwZWNpZmllZCAmJiB2aWV3QXBwPy5pbnN0YW5jZU1vZGUgPT09IFwic2luZ2xlXCIpIHtcblx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdGBBIHVuaXF1ZSBuYW1lIHdhcyBub3QgcHJvdmlkZWQgaW4gdGhlIG1hbmlmZXN0IG9mIHRoaXMgdmlldyBidXQgdGhlIGN1c3RvbSBjb25maWcgaW5kaWNhdGVzIHRoYXQgdGhpcyBhcHAgaXMgc3VwcG9zZWQgdG8gaGF2ZSBhIHNpbmdsZSBpbnN0YW5jZSBzbyB3ZSBhcmUgdXNpbmcgdGhlIGFwcElkOiAke3ZpZXdBcHAuYXBwSWR9IGFzIHRoZSB1bmlxdWUgbmFtZS5gXG5cdFx0KTtcblx0XHRuYW1lID0gdmlld0FwcC5hcHBJZDtcblx0XHQvLyBhc3NpZ24gdGhlIG5ldyBuYW1lIHRvIHRoZSBtYW5pZmVzdCBpbiBjYXNlIHRoZSB2aWV3IGRvZXNuJ3QgZXhpc3QgeWV0IChhcyBpdCBpcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYW5kIG5vdCBwYXJ0IG9mIHRoZSBhcHAncyBtYW5pZmVzdClcblx0XHRtYW5pZmVzdC5uYW1lID0gbmFtZTtcblx0XHR3YXNOYW1lU3BlY2lmaWVkID0gdHJ1ZTtcblx0fSBlbHNlIGlmICghd2FzTmFtZVNwZWNpZmllZCkge1xuXHRcdG5hbWUgPSBgJHt2aWV3QXBwLmFwcElkfS8ke3JhbmRvbVVVSUQoKX1gO1xuXHRcdG1hbmlmZXN0Lm5hbWUgPSBuYW1lO1xuXHR9XG5cblx0bGV0IGlkZW50aXR5ID0geyB1dWlkOiBmaW4ubWUuaWRlbnRpdHkudXVpZCwgbmFtZSB9O1xuXG5cdGxldCB2aWV3RXhpc3RzID0gZmFsc2U7XG5cblx0aWYgKHdhc05hbWVTcGVjaWZpZWQpIHtcblx0XHR2aWV3RXhpc3RzID0gYXdhaXQgZG9lc1ZpZXdFeGlzdChpZGVudGl0eSwgdHJ1ZSk7XG5cdH1cblxuXHRpZiAoIXZpZXdFeGlzdHMpIHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdFx0Y29uc3QgY3JlYXRlZFZpZXcgPSBhd2FpdCBwbGF0Zm9ybS5jcmVhdGVWaWV3KG1hbmlmZXN0KTtcblx0XHRcdGlkZW50aXR5ID0gY3JlYXRlZFZpZXcuaWRlbnRpdHk7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRsb2dnZXIuZXJyb3IoXCJFcnJvciBsYXVuY2hpbmcgdmlld1wiLCBlcnIpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4geyAuLi5pZGVudGl0eSwgYXBwSWQ6IHZpZXdBcHAuYXBwSWQgfTtcbn1cblxuLyoqXG4gKiBMYXVuY2ggYSBzbmFwc2hvdCBmb3IgdGhlIHBsYXRmb3JtIGFwcC5cbiAqIEBwYXJhbSBzbmFwc2hvdEFwcCBUaGUgYXBwIHRvIGxhdW5jaCBzbmFwc2hvdCB2aWV3IGZvci5cbiAqIEByZXR1cm5zIFRoZSBpZGVudGl0aWVzIG9mIHRoZSBzbmFwc2hvdCBwYXJ0cyBsYXVuY2hlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbGF1bmNoU25hcHNob3Qoc25hcHNob3RBcHA6IFBsYXRmb3JtQXBwKTogUHJvbWlzZTxQbGF0Zm9ybUFwcElkZW50aWZpZXJbXSB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoaXNFbXB0eShzbmFwc2hvdEFwcCkpIHtcblx0XHRsb2dnZXIud2FybihcIk5vIGFwcCB3YXMgcGFzc2VkIHRvIGxhdW5jaFNuYXBzaG90XCIpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGlmIChcblx0XHRzbmFwc2hvdEFwcC5tYW5pZmVzdFR5cGUgIT09IE1BTklGRVNUX1RZUEVTLlNuYXBzaG90LmlkICYmXG5cdFx0c25hcHNob3RBcHAubWFuaWZlc3RUeXBlICE9PSBNQU5JRkVTVF9UWVBFUy5JbmxpbmVTbmFwc2hvdC5pZFxuXHQpIHtcblx0XHRsb2dnZXIud2Fybihcblx0XHRcdGBUaGUgYXBwIHBhc3NlZCB3YXMgbm90IG9mIG1hbmlmZXN0VHlwZSAke01BTklGRVNUX1RZUEVTLlNuYXBzaG90LmlkfSBvciAke01BTklGRVNUX1RZUEVTLklubGluZVNuYXBzaG90LmlkfWBcblx0XHQpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGxldCBtYW5pZmVzdDogQnJvd3NlclNuYXBzaG90O1xuXG5cdGlmIChzbmFwc2hvdEFwcC5tYW5pZmVzdFR5cGUgPT09IE1BTklGRVNUX1RZUEVTLlNuYXBzaG90LmlkKSB7XG5cdFx0bG9nZ2VyLmluZm8oYEZldGNoaW5nIHNuYXBzaG90IGZvciBhcHAgJHtzbmFwc2hvdEFwcC5hcHBJZH0gZnJvbSB1cmw6ICR7c25hcHNob3RBcHAubWFuaWZlc3R9YCk7XG5cdFx0Y29uc3QgbWFuaWZlc3RSZXNwb25zZSA9IGF3YWl0IGZldGNoKHNuYXBzaG90QXBwLm1hbmlmZXN0KTtcblx0XHRtYW5pZmVzdCA9IGF3YWl0IG1hbmlmZXN0UmVzcG9uc2UuanNvbigpO1xuXHR9IGVsc2Uge1xuXHRcdGxvZ2dlci5pbmZvKGBVc2luZyBzbmFwc2hvdCBkZWZpbmVkIGluIG1hbmlmZXN0IHNldHRpbmcgb2YgYXBwICR7c25hcHNob3RBcHAuYXBwSWR9YCk7XG5cdFx0bWFuaWZlc3QgPSBnZXRNYW5pZmVzdChzbmFwc2hvdEFwcCk7XG5cdH1cblxuXHRjb25zdCB3aW5kb3dzID0gbWFuaWZlc3Qud2luZG93cztcblx0Y29uc3Qgd2luZG93c1RvQ3JlYXRlID0gW107XG5cblx0aWYgKEFycmF5LmlzQXJyYXkod2luZG93cykpIHtcblx0XHRjb25zdCB3aW5kb3dzVG9HYXRoZXI6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3Qgdmlld0lkczogUGxhdGZvcm1BcHBJZGVudGlmaWVyW10gPSBbXTtcblxuXHRcdGZvciAoY29uc3QgY3VycmVudFdpbmRvdyBvZiB3aW5kb3dzKSB7XG5cdFx0XHRsZXQgZ2V0Vmlld0lkc0ZvckxheW91dCA9IGZpbmRWaWV3TmFtZXMoY3VycmVudFdpbmRvdy5sYXlvdXQpO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoY3VycmVudFdpbmRvdy53b3Jrc3BhY2VQbGF0Zm9ybT8ucGFnZXMpKSB7XG5cdFx0XHRcdGZvciAoY29uc3QgcGFnZSBvZiBjdXJyZW50V2luZG93LndvcmtzcGFjZVBsYXRmb3JtLnBhZ2VzKSB7XG5cdFx0XHRcdFx0Z2V0Vmlld0lkc0ZvckxheW91dCA9IGdldFZpZXdJZHNGb3JMYXlvdXQuY29uY2F0KGZpbmRWaWV3TmFtZXMocGFnZS5sYXlvdXQpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Z2V0Vmlld0lkc0ZvckxheW91dCA9IFsuLi5uZXcgU2V0KGdldFZpZXdJZHNGb3JMYXlvdXQpXTtcblxuXHRcdFx0aWYgKGdldFZpZXdJZHNGb3JMYXlvdXQubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSByYW5kb21VVUlEKCk7XG5cdFx0XHRcdGNvbnN0IG5hbWUgPSBgJHtzbmFwc2hvdEFwcC5hcHBJZH0vJHt1dWlkfWA7XG5cdFx0XHRcdGN1cnJlbnRXaW5kb3cubmFtZSA9IG5hbWU7XG5cdFx0XHRcdHdpbmRvd3NUb0NyZWF0ZS5wdXNoKGN1cnJlbnRXaW5kb3cpO1xuXHRcdFx0XHR3aW5kb3dzVG9HYXRoZXIucHVzaChuYW1lKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHdlIGhhdmUgdmlld3MuIEdyYWIgdGhlIGZpcnN0IG9uZSB0byB2YWxpZGF0ZSBleGlzdGVuY2UuXG5cdFx0XHRcdGNvbnN0IHZpZXdJZCA9IGdldFZpZXdJZHNGb3JMYXlvdXRbMF07XG5cblx0XHRcdFx0Zm9yIChjb25zdCBlbnRyeSBvZiBnZXRWaWV3SWRzRm9yTGF5b3V0KSB7XG5cdFx0XHRcdFx0dmlld0lkcy5wdXNoKHsgbmFtZTogZW50cnksIHV1aWQ6IGZpbi5tZS5pZGVudGl0eS51dWlkLCBhcHBJZDogc25hcHNob3RBcHAuYXBwSWQgfSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyB0aGVzZSB2aWV3cyBzaG91bGQgYmUgcmVhZG9ubHkgYW5kIGNhbm5vdCBiZSBwdWxsZWQgb3V0IG9mIHRoZSBwYWdlIG9yIGNsb3NlZFxuXHRcdFx0XHRpZiAoIShhd2FpdCBkb2VzVmlld0V4aXN0KHsgbmFtZTogdmlld0lkLCB1dWlkOiBmaW4ubWUuaWRlbnRpdHkudXVpZCB9KSkpIHtcblx0XHRcdFx0XHR3aW5kb3dzVG9DcmVhdGUucHVzaChjdXJyZW50V2luZG93KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdG1hbmlmZXN0LndpbmRvd3MgPSB3aW5kb3dzVG9DcmVhdGU7XG5cblx0XHRpZiAod2luZG93c1RvQ3JlYXRlLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGF3YWl0IHBsYXRmb3JtLmFwcGx5U25hcHNob3QobWFuaWZlc3QpO1xuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdGxvZ2dlci5lcnJvcihcIkVycm9yIHRyeWluZyB0byBhcHBseSBzbmFwc2hvdCB0byBwbGF0Zm9ybVwiLCBlcnIsIG1hbmlmZXN0KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGNvbnN0IHRhcmdldFdpbmRvdyBvZiB3aW5kb3dzVG9HYXRoZXIpIHtcblx0XHRcdGNvbnN0IHdpbmRvd1ZpZXdJZHMgPSBhd2FpdCBnZXRWaWV3SWRlbnRpdGllcyh0YXJnZXRXaW5kb3csIGZpbi5tZS5pZGVudGl0eS51dWlkLCBzbmFwc2hvdEFwcC5hcHBJZCk7XG5cdFx0XHR2aWV3SWRzLnB1c2goLi4ud2luZG93Vmlld0lkcyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZpZXdJZHM7XG5cdH1cbn1cblxuLyoqXG4gKiBMYXVuY2ggYW4gYXBwIGFzc2V0IGZvciB0aGUgcGxhdGZvcm0gYXBwLlxuICogQHBhcmFtIGFwcEFzc2V0QXBwIFRoZSBhcHAgdG8gbGF1bmNoIGFwcCBhc3NldCB2aWV3IGZvci5cbiAqIEByZXR1cm5zIFRoZSBpZGVudGl0aWVzIG9mIHRoZSBzbmFwc2hvdCBwYXJ0cyBsYXVuY2hlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbGF1bmNoQXBwQXNzZXQoYXBwQXNzZXRBcHA6IFBsYXRmb3JtQXBwKTogUHJvbWlzZTxQbGF0Zm9ybUFwcElkZW50aWZpZXIgfCB1bmRlZmluZWQ+IHtcblx0Y29uc3Qgb3B0aW9uczogT3BlbkZpbi5FeHRlcm5hbFByb2Nlc3NSZXF1ZXN0VHlwZSA9IHt9O1xuXHRsb2dnZXIuaW5mbyhgUmVxdWVzdCB0byBsYXVuY2ggYXBwIGFzc2V0IGFwcCBvZiB0eXBlICR7YXBwQXNzZXRBcHAubWFuaWZlc3RUeXBlfWApO1xuXHRpZiAoYXBwQXNzZXRBcHAubWFuaWZlc3RUeXBlID09PSBNQU5JRkVTVF9UWVBFUy5BcHBhc3NldC5pZCkge1xuXHRcdG9wdGlvbnMuYWxpYXMgPSBhcHBBc3NldEFwcC5tYW5pZmVzdDtcblx0fSBlbHNlIGlmIChhcHBBc3NldEFwcC5tYW5pZmVzdFR5cGUgPT09IE1BTklGRVNUX1RZUEVTLklubGluZUFwcEFzc2V0LmlkKSB7XG5cdFx0Y29uc3QgYXBwQXNzZXRJbmZvOiBPcGVuRmluLkFwcEFzc2V0SW5mbyA9IGdldE1hbmlmZXN0KGFwcEFzc2V0QXBwKTtcblx0XHR0cnkge1xuXHRcdFx0YXdhaXQgZmluLlN5c3RlbS5kb3dubG9hZEFzc2V0KGFwcEFzc2V0SW5mbywgKHByb2dyZXNzKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGRvd25sb2FkZWRQZXJjZW50ID0gTWF0aC5mbG9vcigocHJvZ3Jlc3MuZG93bmxvYWRlZEJ5dGVzIC8gcHJvZ3Jlc3MudG90YWxCeXRlcykgKiAxMDApO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgRG93bmxvYWRlZCAke2Rvd25sb2FkZWRQZXJjZW50fSUgb2YgYXBwIGFzc2V0IHdpdGggYXBwSWQgb2YgJHthcHBBc3NldEFwcC5hcHBJZH1gKTtcblx0XHRcdH0pO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRsb2dnZXIuZXJyb3IoYEVycm9yIHRyeWluZyB0byBkb3dubG9hZCBhcHAgYXNzZXQgd2l0aCBhcHAgaWQ6ICR7YXBwQXNzZXRBcHAuYXBwSWR9YCwgZXJyb3IpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRvcHRpb25zLmFsaWFzID0gYXBwQXNzZXRJbmZvLmFsaWFzO1xuXHRcdG9wdGlvbnMuYXJndW1lbnRzID0gYXBwQXNzZXRJbmZvLmFyZ3M7XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcIkFuIGFwcCBhc3NldCBhcHAgd2FzIHBhc3NlZCB0byBsYXVuY2ggYXBwIGFzc2V0IGJ1dCBpdCBkaWRuJ3QgbWF0Y2ggdGhlIHN1cHBvcnRlZCBtYW5pZmVzdCB0eXBlcy5cIlxuXHRcdCk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGlmIChhcHBBc3NldEFwcC5pbnN0YW5jZU1vZGUgPT09IFwic2luZ2xlXCIpIHtcblx0XHQvLyB1c2UgdGhlIGFwcElkIGFzIHRoZSBVVUlEIGFuZCBPcGVuRmluIHdpbGwgb25seSBiZSBhYmxlIHRvIGxhdW5jaCBhIHNpbmdsZSBpbnN0YW5jZVxuXHRcdG9wdGlvbnMudXVpZCA9IGFwcEFzc2V0QXBwLmFwcElkO1xuXHR9XG5cdGxvZ2dlci5pbmZvKGBMYXVuY2hpbmcgYXBwIGFzc2V0IHdpdGggYXBwSWQ6ICR7YXBwQXNzZXRBcHAuYXBwSWR9IHdpdGggdGhlIGZvbGxvd2luZyBvcHRpb25zOmAsIG9wdGlvbnMpO1xuXHR0cnkge1xuXHRcdGNvbnN0IGlkZW50aXR5ID0gYXdhaXQgZmluLlN5c3RlbS5sYXVuY2hFeHRlcm5hbFByb2Nlc3Mob3B0aW9ucyk7XG5cdFx0bG9nZ2VyLmluZm8oYEFwcCBhc3NldCB3aXRoIGFwcElkOiAke2FwcEFzc2V0QXBwLmFwcElkfSBsYXVuY2hlZCB3aXRoIHRoZSBmb2xsb3dpbmcgaWRlbnRpdHlgLCBpZGVudGl0eSk7XG5cdFx0cmV0dXJuIHsgLi4uaWRlbnRpdHksIGFwcElkOiBhcHBBc3NldEFwcC5hcHBJZCB9O1xuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdGxvZ2dlci5lcnJvcihgRXJyb3IgdHJ5aW5nIHRvIGxhdW5jaCBhcHAgYXNzZXQgd2l0aCBhcHBJZDogJHthcHBBc3NldEFwcC5hcHBJZH19YCwgZXJyb3IpO1xuXHR9XG59XG5cbi8qKlxuICogTGF1bmNoIGFuIGV4dGVybmFsIGZvciB0aGUgcGxhdGZvcm0gYXBwLlxuICogQHBhcmFtIGV4dGVybmFsQXBwIFRoZSBhcHAgdG8gbGF1bmNoIGV4dGVybmFsIHZpZXcgZm9yLlxuICogQHJldHVybnMgVGhlIGlkZW50aXRpZXMgb2YgdGhlIHNuYXBzaG90IHBhcnRzIGxhdW5jaGVkLlxuICovXG5hc3luYyBmdW5jdGlvbiBsYXVuY2hFeHRlcm5hbChleHRlcm5hbEFwcDogUGxhdGZvcm1BcHApOiBQcm9taXNlPFBsYXRmb3JtQXBwSWRlbnRpZmllciB8IHVuZGVmaW5lZD4ge1xuXHRsZXQgb3B0aW9uczogT3BlbkZpbi5FeHRlcm5hbFByb2Nlc3NSZXF1ZXN0VHlwZSA9IHt9O1xuXHRsb2dnZXIuaW5mbyhgUmVxdWVzdCB0byBleHRlcm5hbCBhcHAgb2YgdHlwZSAke2V4dGVybmFsQXBwLm1hbmlmZXN0VHlwZX1gKTtcblx0aWYgKGV4dGVybmFsQXBwLm1hbmlmZXN0VHlwZSA9PT0gTUFOSUZFU1RfVFlQRVMuRXh0ZXJuYWwuaWQpIHtcblx0XHRvcHRpb25zLnBhdGggPSBleHRlcm5hbEFwcC5tYW5pZmVzdDtcblx0fSBlbHNlIGlmIChleHRlcm5hbEFwcC5tYW5pZmVzdFR5cGUgPT09IE1BTklGRVNUX1RZUEVTLklubGluZUV4dGVybmFsLmlkKSB7XG5cdFx0b3B0aW9ucyA9IGdldE1hbmlmZXN0KGV4dGVybmFsQXBwKTtcblx0fSBlbHNlIHtcblx0XHRsb2dnZXIud2FybihcIkFuIGV4dGVybmFsIGFwcCB3YXMgcGFzc2VkIHRvIGxhdW5jaCBidXQgaXQgZGlkbid0IG1hdGNoIHRoZSBzdXBwb3J0ZWQgbWFuaWZlc3QgdHlwZXMuXCIpO1xuXHRcdHJldHVybjtcblx0fVxuXHRpZiAoZXh0ZXJuYWxBcHAuaW5zdGFuY2VNb2RlID09PSBcInNpbmdsZVwiKSB7XG5cdFx0Ly8gdXNlIHRoZSBhcHBJZCBhcyB0aGUgVVVJRCBhbmQgT3BlbkZpbiB3aWxsIG9ubHkgYmUgYWJsZSB0byBsYXVuY2ggYSBzaW5nbGUgaW5zdGFuY2Vcblx0XHRvcHRpb25zLnV1aWQgPSBleHRlcm5hbEFwcC5hcHBJZDtcblx0fVxuXHR0cnkge1xuXHRcdGNvbnN0IGlkZW50aXR5ID0gYXdhaXQgZmluLlN5c3RlbS5sYXVuY2hFeHRlcm5hbFByb2Nlc3Mob3B0aW9ucyk7XG5cdFx0cmV0dXJuIHsgLi4uaWRlbnRpdHksIGFwcElkOiBleHRlcm5hbEFwcC5hcHBJZCB9O1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRsb2dnZXIuZXJyb3IoYEVycm9yIHRyeWluZyB0byBsYXVuY2ggZXh0ZXJuYWwgd2l0aCBhcHBJZDogJHtleHRlcm5hbEFwcC5hcHBJZH1gLCBlcnIpO1xuXHR9XG59XG4iLCJpbXBvcnQgdHlwZSB7IFdvcmtzcGFjZVBsYXRmb3JtTW9kdWxlIH0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZS1wbGF0Zm9ybVwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBpbml0aWFsaXplTW9kdWxlcywgbG9hZE1vZHVsZXMgfSBmcm9tIFwiLi9tb2R1bGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdExpZmVjeWNsZSxcblx0TGlmZWN5Y2xlRXZlbnRzLFxuXHRMaWZlY3ljbGVIYW5kbGVyLFxuXHRMaWZlY3ljbGVQcm92aWRlck9wdGlvbnNcbn0gZnJvbSBcIi4vc2hhcGVzL2xpZmVjeWNsZS1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgTW9kdWxlRGVmaW5pdGlvbiwgTW9kdWxlRW50cnksIE1vZHVsZUhlbHBlcnMgfSBmcm9tIFwiLi9zaGFwZXMvbW9kdWxlLXNoYXBlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSwgcmFuZG9tVVVJRCB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmxldCBtb2R1bGVzOiBNb2R1bGVFbnRyeTxMaWZlY3ljbGUsIHVua25vd24sIHVua25vd24sIE1vZHVsZURlZmluaXRpb24+W10gPSBbXTtcbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIkxpZmVjeWNsZVwiKTtcbmNvbnN0IGFsbExpZmVjeWNsZUV2ZW50czoge1xuXHRba2V5IGluIExpZmVjeWNsZUV2ZW50c10/OiB7XG5cdFx0c3Vic2NyaWJlcnM6IHtcblx0XHRcdGlkOiBzdHJpbmc7XG5cdFx0XHRoYW5kbGVyOiBMaWZlY3ljbGVIYW5kbGVyO1xuXHRcdH1bXTtcblx0XHRwbGF0Zm9ybT86IFdvcmtzcGFjZVBsYXRmb3JtTW9kdWxlO1xuXHRcdGxhc3RQYXlsb2FkPzogdW5rbm93bjtcblx0fTtcbn0gPSB7fTtcblxuLyoqXG4gKiBJbml0aWFsaXplIHRoZSBsaWZlY3ljbGUgcHJvdmlkZXIuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgbGlmZWN5Y2xlIHByb3ZpZGVyLlxuICogQHBhcmFtIGhlbHBlcnMgTW9kdWxlIGhlbHBlcnMgdG8gcGFzcyB0byBhbnkgbG9hZGVkIG1vZHVsZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KFxuXHRvcHRpb25zOiBMaWZlY3ljbGVQcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQsXG5cdGhlbHBlcnM6IE1vZHVsZUhlbHBlcnNcbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAob3B0aW9ucykge1xuXHRcdGxvZ2dlci5pbmZvKFwiSW5pdGlhbGl6aW5nIGxpZmVjeWNsZSBwcm92aWRlclwiKTtcblx0XHRtb2R1bGVzID0gYXdhaXQgbG9hZE1vZHVsZXM8TGlmZWN5Y2xlPihvcHRpb25zLCBcImxpZmVjeWNsZVwiKTtcblx0XHRhd2FpdCBpbml0aWFsaXplTW9kdWxlczxMaWZlY3ljbGU+KG1vZHVsZXMsIGhlbHBlcnMpO1xuXG5cdFx0Zm9yIChjb25zdCBsaWZlY3ljbGVNb2R1bGUgb2YgbW9kdWxlcykge1xuXHRcdFx0Y29uc3QgbGlmZWN5Y2xlRXZlbnRzID0gYXdhaXQgbGlmZWN5Y2xlTW9kdWxlLmltcGxlbWVudGF0aW9uLmdldCgpO1xuXHRcdFx0Zm9yIChjb25zdCBrZXkgaW4gbGlmZWN5Y2xlRXZlbnRzKSB7XG5cdFx0XHRcdGNvbnN0IGxpZmVjeWNsZUV2ZW50OiBMaWZlY3ljbGVFdmVudHMgPSBrZXkgYXMgTGlmZWN5Y2xlRXZlbnRzO1xuXHRcdFx0XHRjb25zdCBldnQgPSBsaWZlY3ljbGVFdmVudHNbbGlmZWN5Y2xlRXZlbnRdO1xuXHRcdFx0XHRpZiAoZXZ0KSB7XG5cdFx0XHRcdFx0c3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQobGlmZWN5Y2xlRXZlbnQsIGV2dCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBGaXJlIGEgbGlmZWN5Y2xlIGV2ZW50LlxuICogQHBhcmFtIHBsYXRmb3JtIFRoZSBwbGF0Zm9ybS5cbiAqIEBwYXJhbSBsaWZlY3ljbGVFdmVudCBUaGUgZXZlbnQgdG8gZmlyZS5cbiAqIEBwYXJhbSBwYXlsb2FkIEFueSBjdXN0b20gZGF0YSB0byBwYXNzIHRvIHRoZSBoYW5kbGVycy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpcmVMaWZlY3ljbGVFdmVudDxUID0gdW5rbm93bj4oXG5cdHBsYXRmb3JtOiBXb3Jrc3BhY2VQbGF0Zm9ybU1vZHVsZSxcblx0bGlmZWN5Y2xlRXZlbnQ6IExpZmVjeWNsZUV2ZW50cyxcblx0cGF5bG9hZD86IFRcbik6IFByb21pc2U8dm9pZD4ge1xuXHRsb2dnZXIuaW5mbyhgUmVxdWVzdCB0byBmaXJlIGxpZmVjeWNsZSBldmVudCAke2xpZmVjeWNsZUV2ZW50fSByZWNlaXZlZGApO1xuXHRjb25zdCBldmVudEhhbmRsZXJzID0gYWxsTGlmZWN5Y2xlRXZlbnRzW2xpZmVjeWNsZUV2ZW50XTtcblx0aWYgKCFpc0VtcHR5KGV2ZW50SGFuZGxlcnMpKSB7XG5cdFx0ZXZlbnRIYW5kbGVycy5wbGF0Zm9ybSA9IHBsYXRmb3JtO1xuXHRcdGV2ZW50SGFuZGxlcnMubGFzdFBheWxvYWQgPSBwYXlsb2FkO1xuXHRcdGxvZ2dlci5pbmZvKFxuXHRcdFx0YE5vdGlmeWluZyAke2V2ZW50SGFuZGxlcnMuc3Vic2NyaWJlcnMubGVuZ3RofSBzdWJzY3JpYmVycyBvZiBsaWZlY3ljbGUgZXZlbnQgJHtsaWZlY3ljbGVFdmVudH1gXG5cdFx0KTtcblx0XHQvLyBDbG9uZSB0aGUgc3Vic2NyaWJlcnMsIG90aGVyd2lzZSBpZiBjYWxsaW5nIHRoZSBoYW5kbGVyIHBlcmZvcm1zIGFuIHVuc3Vic2NyaWJlXG5cdFx0Ly8gdGhlIGxvb3AgZ2V0cyBvdXQgb2Ygc3luYyBhbmQgaXRlbXMgY2FuIGJlIG1pc3NlZFxuXHRcdGNvbnN0IHN1YnNjcmliZXJzID0gWy4uLmV2ZW50SGFuZGxlcnMuc3Vic2NyaWJlcnNdO1xuXHRcdGZvciAoY29uc3QgaWRIYW5kbGVyIG9mIHN1YnNjcmliZXJzKSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhgTm90aWZ5aW5nIHN1YnNjcmliZXIgJHtpZEhhbmRsZXIuaWR9IG9mIGV2ZW50ICR7bGlmZWN5Y2xlRXZlbnR9YCk7XG5cdFx0XHRhd2FpdCBpZEhhbmRsZXIuaGFuZGxlcihwbGF0Zm9ybSwgcGF5bG9hZCk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogU3Vic2NyaWJlIHRvIGEgbGlmZWN5Y2xlIGV2ZW50LlxuICogQHBhcmFtIGxpZmVjeWNsZUV2ZW50IFRoZSBldmVudCB0byBzdWJzY3JpYmUgdG8uXG4gKiBAcGFyYW0gbGlmZWN5Y2xlSGFuZGxlciBUaGUgaGFuZGxlciB0byBjYWxsIGZvciB0aGUgZXZlbnQuXG4gKiBAcmV0dXJucyBUaGUgc3Vic2NyaXB0aW9uIGlkIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHVuc3Vic2NyaWJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQ8VCA9IHVua25vd24+KFxuXHRsaWZlY3ljbGVFdmVudDogTGlmZWN5Y2xlRXZlbnRzLFxuXHRsaWZlY3ljbGVIYW5kbGVyOiBMaWZlY3ljbGVIYW5kbGVyPFQ+XG4pOiBzdHJpbmcge1xuXHRjb25zdCBzdWJzY3JpcHRpb25JZCA9IHJhbmRvbVVVSUQoKTtcblx0Y29uc3QgaGFuZGxlcnM6IHtcblx0XHRzdWJzY3JpYmVyczoge1xuXHRcdFx0aWQ6IHN0cmluZztcblx0XHRcdGhhbmRsZXI6IExpZmVjeWNsZUhhbmRsZXI7XG5cdFx0fVtdO1xuXHRcdGxhc3RQYXlsb2FkPzogdW5rbm93bjtcblx0XHRwbGF0Zm9ybT86IFdvcmtzcGFjZVBsYXRmb3JtTW9kdWxlO1xuXHR9ID0gYWxsTGlmZWN5Y2xlRXZlbnRzW2xpZmVjeWNsZUV2ZW50XSA/PyB7IHN1YnNjcmliZXJzOiBbXSB9O1xuXHRoYW5kbGVycy5zdWJzY3JpYmVycy5wdXNoKHtcblx0XHRpZDogc3Vic2NyaXB0aW9uSWQsXG5cdFx0aGFuZGxlcjogbGlmZWN5Y2xlSGFuZGxlciBhcyBMaWZlY3ljbGVIYW5kbGVyXG5cdH0pO1xuXHRhbGxMaWZlY3ljbGVFdmVudHNbbGlmZWN5Y2xlRXZlbnRdID0gaGFuZGxlcnM7XG5cdGxvZ2dlci5pbmZvKFxuXHRcdGBTdWJzY3JpcHRpb24gZm9yIGxpZmVjeWNsZSBldmVudCAke2xpZmVjeWNsZUV2ZW50fSByZWNlaXZlZC4gU3Vic2NyaXB0aW9uIGlkOiAke3N1YnNjcmlwdGlvbklkfSByZXR1cm5lZGBcblx0KTtcblxuXHQvLyBDYWxsIHRoZSBsaWZlY3ljbGUgaGFuZGxlciBpbW1lZGlhdGVseSBvbiB0aGUgbmV4dCBjeWNsZSB3aXRoIHRoZSBsYXN0IHBheWxvYWRcblx0Ly8gSWYgdGhlIHBsYXRmb3JtIGlzIHNldCB0aGVuIGZpcmVMaWZlY3ljbGVFdmVudCBoYXMgYmVlbiBjYWxsZWQgYXQgbGVhc3Qgb25jZVxuXHRpZiAoIWlzRW1wdHkoaGFuZGxlcnMucGxhdGZvcm0pKSB7XG5cdFx0c2V0VGltZW91dChhc3luYyAoKSA9PiB7XG5cdFx0XHRpZiAoIWlzRW1wdHkoaGFuZGxlcnMucGxhdGZvcm0pKSB7XG5cdFx0XHRcdGF3YWl0IGxpZmVjeWNsZUhhbmRsZXIoaGFuZGxlcnMucGxhdGZvcm0sIGhhbmRsZXJzLmxhc3RQYXlsb2FkIGFzIFQpO1xuXHRcdFx0fVxuXHRcdH0sIDApO1xuXHR9XG5cblx0cmV0dXJuIHN1YnNjcmlwdGlvbklkO1xufVxuXG4vKipcbiAqIFVuc3Vic2NyaWJlIGZyb20gYSBsaWZlY3ljbGUgZXZlbnQuXG4gKiBAcGFyYW0gc3Vic2NyaXB0aW9uSWQgVGhlIHN1YnNjcmlwdGlvbiBpZCB0byB1bnN1YnNjcmliZS5cbiAqIEBwYXJhbSBsaWZlY3ljbGVFdmVudCBUaGUgZXZlbnQgdG8gdW5zdWJzY3JpYmUgZnJvbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQoc3Vic2NyaXB0aW9uSWQ6IHN0cmluZywgbGlmZWN5Y2xlRXZlbnQ6IExpZmVjeWNsZUV2ZW50cyk6IHZvaWQge1xuXHRsb2dnZXIuaW5mbyhgUmVxdWVzdCB0byB1bnN1YnNjcmliZSBmcm9tIGxpZmVjeWNsZSBldmVudCAke2xpZmVjeWNsZUV2ZW50fSB3aXRoIGlkOiAke3N1YnNjcmlwdGlvbklkfWApO1xuXHRjb25zdCBldmVudEhhbmRsZXJzID0gYWxsTGlmZWN5Y2xlRXZlbnRzW2xpZmVjeWNsZUV2ZW50XTtcblx0aWYgKCFpc0VtcHR5KGV2ZW50SGFuZGxlcnMpKSB7XG5cdFx0Y29uc3Qgc3Vic2NyaWJlcnMgPSBldmVudEhhbmRsZXJzLnN1YnNjcmliZXJzO1xuXHRcdGNvbnN0IGlkeCA9IHN1YnNjcmliZXJzLmZpbmRJbmRleCgobCkgPT4gbC5pZCA9PT0gc3Vic2NyaXB0aW9uSWQpO1xuXHRcdGlmIChpZHggPj0gMCkge1xuXHRcdFx0c3Vic2NyaWJlcnMuc3BsaWNlKGlkeCwgMSk7XG5cdFx0fVxuXHR9XG59XG4iLCJpbXBvcnQgeyBjbG9zZWRvd25Nb2R1bGVzLCBpbml0aWFsaXplTW9kdWxlcywgbG9hZE1vZHVsZXMgfSBmcm9tIFwiLi9tb2R1bGVzXCI7XG5pbXBvcnQgdHlwZSB7IExvZ2dlciwgTG9nZ2VyUHJvdmlkZXJPcHRpb25zLCBMb2dMZXZlbCwgTG9nUHJvdmlkZXIgfSBmcm9tIFwiLi9zaGFwZXMvbG9nZ2VyLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVFbnRyeSwgTW9kdWxlSGVscGVycyB9IGZyb20gXCIuL3NoYXBlcy9tb2R1bGUtc2hhcGVzXCI7XG5cbmxldCBtb2R1bGVzOiBNb2R1bGVFbnRyeTxMb2dQcm92aWRlcj5bXSA9IFtdO1xuXG4vKipcbiAqIEluaXRpYWxpemUgdGhlIGxvZ2dlciBwcm92aWRlci5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSBsb2dnZXIgcHJvdmlkZXIuXG4gKiBAcGFyYW0gaGVscGVycyBNb2R1bGUgaGVscGVycyB0byBwYXNzIHRvIGFueSBsb2FkZWQgbW9kdWxlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQoXG5cdG9wdGlvbnM6IExvZ2dlclByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCxcblx0aGVscGVyczogTW9kdWxlSGVscGVyc1xuKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChvcHRpb25zKSB7XG5cdFx0bW9kdWxlcyA9IGF3YWl0IGxvYWRNb2R1bGVzPExvZ1Byb3ZpZGVyPihvcHRpb25zLCBcImxvZ1wiKTtcblx0XHRhd2FpdCBpbml0aWFsaXplTW9kdWxlcyhtb2R1bGVzLCBoZWxwZXJzKTtcblx0fVxufVxuXG4vKipcbiAqIENsb3NlIGRvd24gdGhlIGxvZ2dlciBwcm92aWRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNsb3NlZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcblx0YXdhaXQgY2xvc2Vkb3duTW9kdWxlcyhcImxvZ1wiKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBsb2dnZXIuXG4gKiBAcGFyYW0gZ3JvdXAgVGhlIGdyb3VwIHRvIGVuY2Fwc3VsYXRlIHRoZSBsb2dlIGVudHJpZXMgd2l0aC5cbiAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIGxvZ2dlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvZ2dlcihncm91cDogc3RyaW5nKTogTG9nZ2VyIHtcblx0cmV0dXJuIHtcblx0XHRpbmZvOiAobWVzc2FnZTogdW5rbm93biwgLi4ub3B0aW9uYWxQYXJhbXM6IHVua25vd25bXSkgPT4gbG9nKGdyb3VwLCBcImluZm9cIiwgbWVzc2FnZSwgLi4ub3B0aW9uYWxQYXJhbXMpLFxuXHRcdHdhcm46IChtZXNzYWdlOiB1bmtub3duLCAuLi5vcHRpb25hbFBhcmFtczogdW5rbm93bltdKSA9PiBsb2coZ3JvdXAsIFwid2FyblwiLCBtZXNzYWdlLCAuLi5vcHRpb25hbFBhcmFtcyksXG5cdFx0ZXJyb3I6IChtZXNzYWdlOiB1bmtub3duLCAuLi5vcHRpb25hbFBhcmFtczogdW5rbm93bltdKSA9PlxuXHRcdFx0bG9nKGdyb3VwLCBcImVycm9yXCIsIG1lc3NhZ2UsIC4uLm9wdGlvbmFsUGFyYW1zKSxcblx0XHR0cmFjZTogKG1lc3NhZ2U6IHVua25vd24sIC4uLm9wdGlvbmFsUGFyYW1zOiB1bmtub3duW10pID0+XG5cdFx0XHRsb2coZ3JvdXAsIFwidHJhY2VcIiwgbWVzc2FnZSwgLi4ub3B0aW9uYWxQYXJhbXMpLFxuXHRcdGRlYnVnOiAobWVzc2FnZTogdW5rbm93biwgLi4ub3B0aW9uYWxQYXJhbXM6IHVua25vd25bXSkgPT4gbG9nKGdyb3VwLCBcImRlYnVnXCIsIG1lc3NhZ2UsIC4uLm9wdGlvbmFsUGFyYW1zKVxuXHR9O1xufVxuXG4vKipcbiAqIExvZyBkYXRhIGFzIGluZm9ybWF0aW9uLlxuICogQHBhcmFtIGdyb3VwIFRoZSBncm91cCBzZW5kaW5nIHRoZSBsb2cgbWVzc2FnZS5cbiAqIEBwYXJhbSBsZXZlbCBUaGUgbGV2ZWwgb2YgdGhlIG1lc3NhZ2UgdG8gbG9nLlxuICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gbG9nLlxuICogQHBhcmFtIG9wdGlvbmFsUGFyYW1zIE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIGRldGFpbHMuXG4gKi9cbmZ1bmN0aW9uIGxvZyhncm91cDogc3RyaW5nLCBsZXZlbDogTG9nTGV2ZWwsIG1lc3NhZ2U6IHVua25vd24sIC4uLm9wdGlvbmFsUGFyYW1zOiB1bmtub3duW10pOiB2b2lkIHtcblx0bGV0IGhhc0xvZ2dlZCA9IGZhbHNlO1xuXHRmb3IgKGNvbnN0IGxvZ1Byb3ZpZGVyRW50cnkgb2YgbW9kdWxlcykge1xuXHRcdGhhc0xvZ2dlZCA9IHRydWU7XG5cdFx0bG9nUHJvdmlkZXJFbnRyeS5pbXBsZW1lbnRhdGlvbi5sb2coZmluLm1lLmlkZW50aXR5Lm5hbWUsIGdyb3VwLCBsZXZlbCwgbWVzc2FnZSwgLi4ub3B0aW9uYWxQYXJhbXMpO1xuXHR9XG5cblx0aWYgKCFoYXNMb2dnZWQpIHtcblx0XHRjb25zb2xlW2xldmVsXShgWyR7Z3JvdXB9XWAsIGBbJHtmaW4ubWUuaWRlbnRpdHkubmFtZX1dYCwgbWVzc2FnZSwgLi4ub3B0aW9uYWxQYXJhbXMpO1xuXHR9XG59XG4iLCJpbXBvcnQgdHlwZSB7IE1hbmlmZXN0VHlwZXMgfSBmcm9tIFwiLi9zaGFwZXNcIjtcblxuZXhwb3J0IGNvbnN0IE1BTklGRVNUX1RZUEVTOiBNYW5pZmVzdFR5cGVzID0ge1xuXHRWaWV3OiB7XG5cdFx0aWQ6IFwidmlld1wiLFxuXHRcdGxhYmVsOiBcIlZpZXdcIixcblx0XHRkZXNjcmlwdGlvbjpcblx0XHRcdFwiVGhpcyBtYW5pZmVzdCB0eXBlIGV4cGVjdHMgdGhlIG1hbmlmZXN0IHNldHRpbmcgdG8gYmUgcG9pbnRlZCB0byBhIGpzb24gZmlsZSB0aGF0IGNvbnRhaW5zIHZpZXcgb3B0aW9ucy5cIlxuXHR9LFxuXHRJbmxpbmVWaWV3OiB7XG5cdFx0aWQ6IFwiaW5saW5lLXZpZXdcIixcblx0XHRsYWJlbDogXCJWaWV3XCIsXG5cdFx0ZGVzY3JpcHRpb246XG5cdFx0XHRcIlRoaXMgbWFuaWZlc3QgdHlwZSBleHBlY3RzIHRoZSBtYW5pZmVzdCBzZXR0aW5nIHRvIGhhdmUgdGhlIG9wdGlvbnMgaW5saW5lIHJhdGhlciB0aGFuIGEgdXJsIHRvIGEganNvbiBmaWxlLlwiXG5cdH0sXG5cdFdpbmRvdzoge1xuXHRcdGlkOiBcIndpbmRvd1wiLFxuXHRcdGxhYmVsOiBcIldpbmRvd1wiLFxuXHRcdGRlc2NyaXB0aW9uOlxuXHRcdFx0XCJUaGlzIG1hbmlmZXN0IHR5cGUgZXhwZWN0cyB0aGUgbWFuaWZlc3Qgc2V0dGluZyB0byBwb2ludCB0byBhIGpzb24gZmlsZSB0aGF0IGNvbnRhaW5zIGNsYXNzaWMgd2luZG93IG9wdGlvbnMuXCJcblx0fSxcblx0SW5saW5lV2luZG93OiB7XG5cdFx0aWQ6IFwiaW5saW5lLXdpbmRvd1wiLFxuXHRcdGxhYmVsOiBcIldpbmRvd1wiLFxuXHRcdGRlc2NyaXB0aW9uOlxuXHRcdFx0XCJUaGlzIG1hbmlmZXN0IHR5cGUgZXhwZWN0cyB0aGUgbWFuaWZlc3Qgc2V0dGluZyB0byBoYXZlIHRoZSBjbGFzc2ljIHdpbmRvdyBvcHRpb25zIGlubGluZSByYXRoZXIgdGhhbiBhIHVybCB0byBhIGpzb24gZmlsZS5cIlxuXHR9LFxuXHRTbmFwc2hvdDoge1xuXHRcdGlkOiBcInNuYXBzaG90XCIsXG5cdFx0bGFiZWw6IFwiU25hcHNob3RcIixcblx0XHRkZXNjcmlwdGlvbjpcblx0XHRcdFwiVGhpcyBtYW5pZmVzdCB0eXBlIGV4cGVjdHMgdGhlIG1hbmlmZXN0IHNldHRpbmcgdG8gcG9pbnQgdG8gYSBqc29uIGZpbGUgdGhhdCBjb250YWlucyBhIHNuYXBzaG90IChvbmUgb3IgbW9yZSB3aW5kb3dzKVwiXG5cdH0sXG5cdElubGluZVNuYXBzaG90OiB7XG5cdFx0aWQ6IFwiaW5saW5lLXNuYXBzaG90XCIsXG5cdFx0bGFiZWw6IFwiU25hcHNob3RcIixcblx0XHRkZXNjcmlwdGlvbjpcblx0XHRcdFwiVGhpcyBtYW5pZmVzdCB0eXBlIGV4cGVjdHMgdGhlIG1hbmlmZXN0IHNldHRpbmcgdG8gaGF2ZSBhIHNuYXBzaG90IGlubGluZSByYXRoZXIgdGhhbiBhIHVybCB0byBhIGpzb24gZmlsZSB0aGF0IGNvbnRhaW5zIGEgc25hcHNob3QgKG9uZSBvciBtb3JlIHdpbmRvd3MpXCJcblx0fSxcblx0TWFuaWZlc3Q6IHtcblx0XHRpZDogXCJtYW5pZmVzdFwiLFxuXHRcdGxhYmVsOiBcIkFwcFwiLFxuXHRcdGRlc2NyaXB0aW9uOlxuXHRcdFx0XCJUaGlzIG1hbmlmZXN0IHR5cGUgZXhwZWN0cyB0aGUgbWFuaWZlc3Qgc2V0dGluZyB0byBwb2ludCB0byBhIGpzb24gZmlsZSB0aGF0IGlzIGFuIG9wZW5maW4gbWFuaWZlc3QuIEFuIG9wZW5maW4gYXBwLlwiXG5cdH0sXG5cdEV4dGVybmFsOiB7XG5cdFx0aWQ6IFwiZXh0ZXJuYWxcIixcblx0XHRsYWJlbDogXCJOYXRpdmUgQXBwXCIsXG5cdFx0ZGVzY3JpcHRpb246IFwiVGhpcyBtYW5pZmVzdCB0eXBlIGV4cGVjdHMgdGhlIG1hbmlmZXN0IHNldHRpbmcgdG8gcG9pbnQgdG8gYW4gZXhlLlwiXG5cdH0sXG5cdElubGluZUV4dGVybmFsOiB7XG5cdFx0aWQ6IFwiaW5saW5lLWV4dGVybmFsXCIsXG5cdFx0bGFiZWw6IFwiTmF0aXZlIEFwcFwiLFxuXHRcdGRlc2NyaXB0aW9uOlxuXHRcdFx0XCJUaGlzIG1hbmlmZXN0IHR5cGUgZXhwZWN0cyB0aGUgbWFuaWZlc3Qgc2V0dGluZyB0byBwb2ludCB0byBhbiBleGUgdXNpbmcgYW4gaW5saW5lIGxhdW5jaCBleHRlcm5hbCBwcm9jZXNzIHJlcXVlc3QuXCJcblx0fSxcblx0QXBwYXNzZXQ6IHtcblx0XHRpZDogXCJhcHBhc3NldFwiLFxuXHRcdGxhYmVsOiBcIk5hdGl2ZSBBcHBcIixcblx0XHRkZXNjcmlwdGlvbjogXCJUaGlzIG1hbmlmZXN0IHR5cGUgZXhwZWN0cyB0aGUgbWFuaWZlc3Qgc2V0dGluZyB0byBwb2ludCB0byBhbiBhcHAgYXNzZXQgbmFtZS5cIlxuXHR9LFxuXHRJbmxpbmVBcHBBc3NldDoge1xuXHRcdGlkOiBcImlubGluZS1hcHBhc3NldFwiLFxuXHRcdGxhYmVsOiBcIk5hdGl2ZSBBcHBcIixcblx0XHRkZXNjcmlwdGlvbjpcblx0XHRcdFwiVGhpcyBtYW5pZmVzdCB0eXBlIGV4cGVjdHMgdGhlIG1hbmlmZXN0IHNldHRpbmcgdG8gcG9pbnQgdG8gYW4gYXBwIGFzc2V0IGNvbmZpZyB1c2luZyBhbiBpbmxpbmUgbGF1bmNoIGV4dGVybmFsIHByb2Nlc3MgcmVxdWVzdC5cIlxuXHR9LFxuXHREZXNrdG9wQnJvd3Nlcjoge1xuXHRcdGlkOiBcImRlc2t0b3AtYnJvd3NlclwiLFxuXHRcdGxhYmVsOiBcIkRlc2t0b3AgQnJvd3NlclwiLFxuXHRcdGRlc2NyaXB0aW9uOlxuXHRcdFx0XCJUaGlzIG1hbmlmZXN0IHR5cGUgZXhwZWN0cyB0aGUgbWFuaWZlc3Qgc2V0dGluZyB0byBwb2ludCB0byBhIHVybCB3aGljaCB3aWxsIGJlIGxhdW5jaGVkIGluIHRoZSBkZWZhdWx0IGRlc2t0b3AgYnJvd3Nlci5cIlxuXHR9LFxuXHRFbmRwb2ludDoge1xuXHRcdGlkOiBcImVuZHBvaW50XCIsXG5cdFx0bGFiZWw6IFwiRW5kcG9pbnRcIixcblx0XHRkZXNjcmlwdGlvbjpcblx0XHRcdFwiVGhpcyBtYW5pZmVzdCB0eXBlIGV4cGVjdHMgdGhlIG1hbmlmZXN0IHNldHRpbmcgdG8gcG9pbnQgdG8gYW4gZW5kcG9pbnQgKHdoaWNoIHNob3VsZCBiZSBkZWZpbmVkIGluIHRoZSBlbmRwb2ludFByb3ZpZGVyKS4gQWN0aW9uIHdpbGwgYmUgY2FsbGVkIG9uIHRoYXQgZW5kcG9pbnQgYW5kIHBhc3NlZCB0aGUgc3BlY2lmaWVkIGFwcC5cIlxuXHR9LFxuXHRDb25uZWN0aW9uOiB7XG5cdFx0aWQ6IFwiY29ubmVjdGlvblwiLFxuXHRcdGxhYmVsOiBcIkNvbm5lY3RlZCBBcHBcIixcblx0XHRkZXNjcmlwdGlvbjpcblx0XHRcdFwiVGhpcyBtYW5pZmVzdCB0eXBlIGV4cGVjdHMgdGhlIG1hbmlmZXN0IHNldHRpbmcgdG8gaGF2ZSBhIHV1aWQuIFRoaXMgbXVzdCBtYXRjaCB0byBhIGNvbm5lY3Rpb24gcmVnaXN0ZXJlZCBpbiB0aGUgY29ubmVjdGlvblByb3ZpZGVyIHdpdGggYXBwIHN1cHBvcnQuXCJcblx0fSxcblx0VW5yZWdpc3RlcmVkQXBwOiB7XG5cdFx0aWQ6IFwidW5yZWdpc3RlcmVkLWFwcFwiLFxuXHRcdGxhYmVsOiBcIlVucmVnaXN0ZXJlZCBBcHBcIixcblx0XHRkZXNjcmlwdGlvbjpcblx0XHRcdFwiVGhpcyBtYW5pZmVzdCB0eXBlIHJlcHJlc2VudHMgd2ViIHBhZ2UgaW5zdGFuY2VzIHRoYXQgaGF2ZSBiZWVuIGxhdW5jaGVkIHRoYXQgYXJlIG5vdCBsaW5rZWQgdG8gYW4gYXBwLiBUaGlzIG1hbmlmZXN0IHR5cGUgc2hvdWxkIG5vdCBiZSBpbiB0aGUgcGVybWl0dGVkIG1hbmlmZXN0IHR5cGUgbGlzdCBmb3IgYXBwIGZlZWRzIGFzIGl0IGlzIGZvciBkeW5hbWljIHVybHMuXCJcblx0fVxufTtcbiIsImltcG9ydCB0eXBlIE9wZW5GaW4gZnJvbSBcIkBvcGVuZmluL2NvcmVcIjtcbmltcG9ydCB7XG5cdGdldEN1cnJlbnRTeW5jLFxuXHR0eXBlIEdsb2JhbENvbnRleHRNZW51SXRlbVRlbXBsYXRlLFxuXHR0eXBlIEdsb2JhbENvbnRleHRNZW51T3B0aW9uVHlwZSxcblx0dHlwZSBQYWdlVGFiQ29udGV4dE1lbnVJdGVtVGVtcGxhdGUsXG5cdHR5cGUgUGFnZVRhYkNvbnRleHRNZW51T3B0aW9uVHlwZSxcblx0dHlwZSBWaWV3VGFiQ29udGV4dE1lbnVUZW1wbGF0ZSxcblx0dHlwZSBWaWV3VGFiTWVudU9wdGlvblR5cGVcbn0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZS1wbGF0Zm9ybVwiO1xuaW1wb3J0IHsgY2hlY2tDb25kaXRpb25zIH0gZnJvbSBcIi4vY29uZGl0aW9uc1wiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBpbml0aWFsaXplTW9kdWxlcywgbG9hZE1vZHVsZXMgfSBmcm9tIFwiLi9tb2R1bGVzXCI7XG5pbXBvcnQgeyBnZXRTZXR0aW5ncyB9IGZyb20gXCIuL3NldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IE1vZHVsZUVudHJ5LCBNb2R1bGVIZWxwZXJzIH0gZnJvbSBcIi4vc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdE1lbnVFbnRyeSxcblx0TWVudU9wdGlvblR5cGUsXG5cdE1lbnVQb3NpdGlvbk9wZXJhdGlvbixcblx0TWVudXMsXG5cdE1lbnVzUHJvdmlkZXJPcHRpb25zLFxuXHRNZW51VGVtcGxhdGVUeXBlLFxuXHRNZW51VHlwZSxcblx0UmVsYXRlZE1lbnVJZFxufSBmcm9tIFwiLi9zaGFwZXMvbWVudS1zaGFwZXNcIjtcbmltcG9ydCB7IGdldEN1cnJlbnRQYWxldHRlIH0gZnJvbSBcIi4vdGhlbWVzXCI7XG5pbXBvcnQgeyBpc0Jvb2xlYW4sIGlzRW1wdHksIHJhbmRvbVVVSUQgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJNZW51XCIpO1xubGV0IG1vZHVsZXM6IE1vZHVsZUVudHJ5PE1lbnVzPltdID0gW107XG5sZXQgbWVudVByb3ZpZGVyT3B0aW9uczogTWVudXNQcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQ7XG5sZXQgcGxhdGZvcm1Sb290VXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgbWVudSBwcm92aWRlci5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSBtZW51IHByb3ZpZGVyLlxuICogQHBhcmFtIGhlbHBlcnMgTW9kdWxlIGhlbHBlcnMgdG8gcGFzcyB0byBhbnkgbG9hZGVkIG1vZHVsZXMuXG4gKiBAcGFyYW0gcm9vdFVybCBUaGUgcm9vdCB1cmwgZm9yIGxvYWRpbmcgY29udGVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQoXG5cdG9wdGlvbnM6IE1lbnVzUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkLFxuXHRoZWxwZXJzOiBNb2R1bGVIZWxwZXJzLFxuXHRyb290VXJsOiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoIWlzRW1wdHkob3B0aW9ucykpIHtcblx0XHRwbGF0Zm9ybVJvb3RVcmwgPSByb290VXJsO1xuXHRcdG1lbnVQcm92aWRlck9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdG1vZHVsZXMgPSBhd2FpdCBsb2FkTW9kdWxlczxNZW51cz4ob3B0aW9ucywgXCJtZW51c1wiKTtcblx0XHRhd2FpdCBpbml0aWFsaXplTW9kdWxlczxNZW51cz4obW9kdWxlcywgaGVscGVycyk7XG5cdH1cbn1cblxuLyoqXG4gKiBCdWlsZCBhIG1lbnUgZnJvbSB0aGUgZGVmYXVsdCBlbnRyaWVzIGFuZCB0aGUgZW50cmllcyBmcm9tIGNvbmZpZy5cbiAqIEBwYXJhbSBkZWZhdWx0RW50cmllcyBUaGUgZGVmYXVsdCBtZW51IGVudHJpZXMuXG4gKiBAcGFyYW0gY29uZmlnRW50cmllcyBUaGUgY29uZmlnIG1lbnUgZW50cmllcy5cbiAqIEByZXR1cm5zIFRoZSBjb21iaW5lZCBtZW51IGVudHJpZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZE1lbnU8VCBleHRlbmRzIE1lbnVUZW1wbGF0ZVR5cGUsIFUgZXh0ZW5kcyBNZW51T3B0aW9uVHlwZTxUPj4oXG5cdGRlZmF1bHRFbnRyaWVzPzogVFtdLFxuXHRjb25maWdFbnRyaWVzPzogTWVudUVudHJ5PFU+W11cbik6IFByb21pc2U8VFtdPiB7XG5cdGNvbnN0IG1lbnVJdGVtcyA9IGRlZmF1bHRFbnRyaWVzID8/IFtdO1xuXG5cdGlmIChBcnJheS5pc0FycmF5KGNvbmZpZ0VudHJpZXMpKSB7XG5cdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXG5cdFx0Zm9yIChjb25zdCBtZW51SXRlbSBvZiBjb25maWdFbnRyaWVzKSB7XG5cdFx0XHRjb25zdCB7IHBvc2l0aW9uLCBpbmNsdWRlLCBjb25kaXRpb25zLCBzZXBhcmF0b3IsIC4uLm1lbnVJdGVtVGVtcGxhdGUgfSA9IG1lbnVJdGVtO1xuXG5cdFx0XHRpZiAoaW5jbHVkZSA/PyBpc0VtcHR5KGluY2x1ZGUpKSB7XG5cdFx0XHRcdGNvbnN0IGNhblNob3cgPSBhd2FpdCBjaGVja0NvbmRpdGlvbnMocGxhdGZvcm0sIGNvbmRpdGlvbnMsIHtcblx0XHRcdFx0XHRjYWxsZXJUeXBlOiBcIm1lbnVcIixcblx0XHRcdFx0XHRjdXN0b21EYXRhOiBtZW51SXRlbVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRpZiAoY2FuU2hvdykge1xuXHRcdFx0XHRcdGNvbnN0IGluc2VydGVkSW5kZXggPSB1cGRhdGVNZW51RW50cmllcyhcblx0XHRcdFx0XHRcdG1lbnVJdGVtcyxcblx0XHRcdFx0XHRcdHBvc2l0aW9uPy50eXBlLFxuXHRcdFx0XHRcdFx0cG9zaXRpb24/Lm9wZXJhdGlvbixcblx0XHRcdFx0XHRcdHBvc2l0aW9uPy5jdXN0b21JZCxcblx0XHRcdFx0XHRcdG1lbnVJdGVtVGVtcGxhdGUgYXMgdW5rbm93biBhcyBUXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdGlmIChpbnNlcnRlZEluZGV4ID49IDApIHtcblx0XHRcdFx0XHRcdGNvbnN0IHNlcCA9IHsgdHlwZTogXCJzZXBhcmF0b3JcIiB9IGFzIFQ7XG5cdFx0XHRcdFx0XHRpZiAoc2VwYXJhdG9yID09PSBcImJlZm9yZVwiKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChpbnNlcnRlZEluZGV4ID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0bWVudUl0ZW1zLnVuc2hpZnQoc2VwKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRtZW51SXRlbXMuc3BsaWNlKGluc2VydGVkSW5kZXgsIDAsIHNlcCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoc2VwYXJhdG9yID09PSBcImFmdGVyXCIpIHtcblx0XHRcdFx0XHRcdFx0aWYgKGluc2VydGVkSW5kZXggPT09IG1lbnVJdGVtcy5sZW5ndGggLSAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0bWVudUl0ZW1zLnB1c2goc2VwKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRtZW51SXRlbXMuc3BsaWNlKGluc2VydGVkSW5kZXggKyAxLCAwLCBzZXApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG1lbnVJdGVtcztcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGVudHJpZXMgZm9yIHRoZSBnbG9iYWwgbWVudS5cbiAqIEBwYXJhbSBkZWZhdWx0R2xvYmFsQ29udGV4dE1lbnUgVGhlIGRlZmF1bHQgZW50cmllcyBmb3IgdGhlIGdsb2JhbCBjb250ZXh0IG1lbnUuXG4gKiBAcGFyYW0gcmVsYXRlZE1lbnVJZCBUaGUgaWRlbnRpdHkgdG8gYXNzb2NpYXRlIHRoZSBtZW51LlxuICogQHJldHVybnMgVGhlIG1lbnUgZW50cmllcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEdsb2JhbE1lbnUoXG5cdGRlZmF1bHRHbG9iYWxDb250ZXh0TWVudT86IEdsb2JhbENvbnRleHRNZW51SXRlbVRlbXBsYXRlW10sXG5cdHJlbGF0ZWRNZW51SWQ/OiBSZWxhdGVkTWVudUlkXG4pOiBQcm9taXNlPEdsb2JhbENvbnRleHRNZW51SXRlbVRlbXBsYXRlW10+IHtcblx0Y29uc3Qgc2V0dGluZ3MgPSBhd2FpdCBnZXRTZXR0aW5ncygpO1xuXHRjb25zdCBtZW51RW50cmllcyA9IChzZXR0aW5ncz8uYnJvd3NlclByb3ZpZGVyPy5nbG9iYWxNZW51ID8/IFtdKS5jb25jYXQoXG5cdFx0YXdhaXQgZ2V0TW9kdWxlTWVudUVudHJpZXM8R2xvYmFsQ29udGV4dE1lbnVPcHRpb25UeXBlPihcImdsb2JhbFwiLCByZWxhdGVkTWVudUlkKVxuXHQpO1xuXHRjb25zdCBnbG9iYWxNZW51ID0gc2V0dGluZ3M/LmJyb3dzZXJQcm92aWRlcj8ubWVudU9wdGlvbnM/LmluY2x1ZGVEZWZhdWx0cz8uZ2xvYmFsTWVudTtcblx0aWYgKGlzQm9vbGVhbihnbG9iYWxNZW51KSAmJiAhZ2xvYmFsTWVudSkge1xuXHRcdHJldHVybiBidWlsZE1lbnUodW5kZWZpbmVkLCBtZW51RW50cmllcyk7XG5cdH1cblx0cmV0dXJuIGJ1aWxkTWVudShkZWZhdWx0R2xvYmFsQ29udGV4dE1lbnUsIG1lbnVFbnRyaWVzKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGVudHJpZXMgZm9yIHRoZSBwYWdlIG1lbnUuXG4gKiBAcGFyYW0gZGVmYXVsdFBhZ2VDb250ZXh0TWVudSBUaGUgZGVmYXVsdCBlbnRyaWVzIGZvciB0aGUgcGFnZSBjb250ZXh0IG1lbnUuXG4gKiBAcGFyYW0gcmVsYXRlZE1lbnVJZCBUaGUgaWRlbnRpdHkgdG8gYXNzb2NpYXRlIHRoZSBtZW51LlxuICogQHJldHVybnMgVGhlIG1lbnUgZW50cmllcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFBhZ2VNZW51KFxuXHRkZWZhdWx0UGFnZUNvbnRleHRNZW51OiBQYWdlVGFiQ29udGV4dE1lbnVJdGVtVGVtcGxhdGVbXSxcblx0cmVsYXRlZE1lbnVJZD86IFJlbGF0ZWRNZW51SWRcbik6IFByb21pc2U8UGFnZVRhYkNvbnRleHRNZW51SXRlbVRlbXBsYXRlW10+IHtcblx0Y29uc3Qgc2V0dGluZ3MgPSBhd2FpdCBnZXRTZXR0aW5ncygpO1xuXHRjb25zdCBtZW51RW50cmllcyA9IChzZXR0aW5ncz8uYnJvd3NlclByb3ZpZGVyPy5wYWdlTWVudSA/PyBbXSkuY29uY2F0KFxuXHRcdGF3YWl0IGdldE1vZHVsZU1lbnVFbnRyaWVzPFBhZ2VUYWJDb250ZXh0TWVudU9wdGlvblR5cGU+KFwicGFnZVwiLCByZWxhdGVkTWVudUlkKVxuXHQpO1xuXHRjb25zdCBwYWdlTWVudSA9IHNldHRpbmdzPy5icm93c2VyUHJvdmlkZXI/Lm1lbnVPcHRpb25zPy5pbmNsdWRlRGVmYXVsdHM/LnBhZ2VNZW51O1xuXHRpZiAoaXNCb29sZWFuKHBhZ2VNZW51KSAmJiAhcGFnZU1lbnUpIHtcblx0XHRyZXR1cm4gYnVpbGRNZW51KHVuZGVmaW5lZCwgbWVudUVudHJpZXMpO1xuXHR9XG5cdHJldHVybiBidWlsZE1lbnUoZGVmYXVsdFBhZ2VDb250ZXh0TWVudSwgbWVudUVudHJpZXMpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgZW50cmllcyBmb3IgdGhlIHZpZXcgbWVudS5cbiAqIEBwYXJhbSBkZWZhdWx0Vmlld0NvbnRleHRNZW51IFRoZSBkZWZhdWx0IGVudHJpZXMgZm9yIHRoZSB2aWV3IGNvbnRleHQgbWVudS5cbiAqIEBwYXJhbSByZWxhdGVkTWVudUlkIFRoZSBpZGVudGl0eSB0byBhc3NvY2lhdGUgdGhlIG1lbnUuXG4gKiBAcmV0dXJucyBUaGUgbWVudSBlbnRyaWVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Vmlld01lbnUoXG5cdGRlZmF1bHRWaWV3Q29udGV4dE1lbnU6IFZpZXdUYWJDb250ZXh0TWVudVRlbXBsYXRlW10sXG5cdHJlbGF0ZWRNZW51SWQ/OiBSZWxhdGVkTWVudUlkXG4pOiBQcm9taXNlPFZpZXdUYWJDb250ZXh0TWVudVRlbXBsYXRlW10+IHtcblx0Y29uc3Qgc2V0dGluZ3MgPSBhd2FpdCBnZXRTZXR0aW5ncygpO1xuXHRjb25zdCBtZW51RW50cmllcyA9IChzZXR0aW5ncz8uYnJvd3NlclByb3ZpZGVyPy52aWV3TWVudSA/PyBbXSkuY29uY2F0KFxuXHRcdGF3YWl0IGdldE1vZHVsZU1lbnVFbnRyaWVzPFZpZXdUYWJNZW51T3B0aW9uVHlwZT4oXCJ2aWV3XCIsIHJlbGF0ZWRNZW51SWQpXG5cdCk7XG5cdGNvbnN0IHZpZXdNZW51ID0gc2V0dGluZ3M/LmJyb3dzZXJQcm92aWRlcj8ubWVudU9wdGlvbnM/LmluY2x1ZGVEZWZhdWx0cz8udmlld01lbnU7XG5cdGlmIChpc0Jvb2xlYW4odmlld01lbnUpICYmICF2aWV3TWVudSkge1xuXHRcdHJldHVybiBidWlsZE1lbnUodW5kZWZpbmVkLCBtZW51RW50cmllcyk7XG5cdH1cblx0cmV0dXJuIGJ1aWxkTWVudShkZWZhdWx0Vmlld0NvbnRleHRNZW51LCBtZW51RW50cmllcyk7XG59XG5cbi8qKlxuICogVXBkYXRlIGEgbGlzdCBvZiBtZW51IGVudHJpZXMgYmFzZWQgb24gYSBzcGVjaWZpYyBvcGVyYXRpb24uXG4gKiBAcGFyYW0gbWVudUVudHJpZXMgVGhlIG1lbnUgZW50cmllcyB0byB1cGRhdGUuXG4gKiBAcGFyYW0gcG9zaXRpb25UeXBlIFRoZSB0eXBlIG9mIHBvc2l0aW9uaW5nLlxuICogQHBhcmFtIHBvc2l0aW9uT3BlcmF0aW9uIFRoZSBvcGVyYXRpb24gdG8gcGVyZm9ybS5cbiAqIEBwYXJhbSBwb3NpdGlvbkN1c3RvbUlkIEEgY3VzdG9tIGlkIGZvciBsb29rdXAuXG4gKiBAcGFyYW0gZW50cnkgVGhlIGVudHJ5IHRvIG9wZXJhdGUgd2l0aC5cbiAqIEByZXR1cm5zIFRoZSBpbmRleCBvZiB0aGUgbmV3IGl0ZW0uXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZU1lbnVFbnRyaWVzPFQgZXh0ZW5kcyBNZW51VGVtcGxhdGVUeXBlLCBVIGV4dGVuZHMgTWVudU9wdGlvblR5cGU8VD4+KFxuXHRtZW51RW50cmllczogVFtdLFxuXHRwb3NpdGlvblR5cGU/OiBVLFxuXHRwb3NpdGlvbk9wZXJhdGlvbj86IE1lbnVQb3NpdGlvbk9wZXJhdGlvbixcblx0cG9zaXRpb25DdXN0b21JZD86IHN0cmluZyxcblx0ZW50cnk/OiBUXG4pOiBudW1iZXIge1xuXHRpZiAocG9zaXRpb25PcGVyYXRpb24gPT09IFwic3RhcnRcIikge1xuXHRcdGlmIChlbnRyeSkge1xuXHRcdFx0bWVudUVudHJpZXMudW5zaGlmdChlbnRyeSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZ2dlci53YXJuKFwiRW50cnkgdHlwZSBpcyBzcGVjaWZpZWQgYXMgc3RhcnQgYnV0IG5vIGVudHJ5IHByb3ZpZGVkXCIpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChwb3NpdGlvbk9wZXJhdGlvbiA9PT0gXCJlbmRcIikge1xuXHRcdGlmIChlbnRyeSkge1xuXHRcdFx0bWVudUVudHJpZXMucHVzaChlbnRyeSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZ2dlci53YXJuKFwiRW50cnkgdHlwZSBpcyBzcGVjaWZpZWQgYXMgZW5kIGJ1dCBubyBlbnRyeSBwcm92aWRlZFwiKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0bGV0IGVudHJ5SW5kZXg6IG51bWJlcjtcblxuXHRcdGlmIChwb3NpdGlvblR5cGUgPT09IFwiQ3VzdG9tXCIpIHtcblx0XHRcdGlmIChpc0VtcHR5KHBvc2l0aW9uQ3VzdG9tSWQpKSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFwiRW50cnkgdHlwZSBpcyBzcGVjaWZpZWQgYXMgY3VzdG9tIGJ1dCBubyBjdXN0b21JZCB3YXMgcHJvdmlkZWRcIik7XG5cdFx0XHR9XG5cblx0XHRcdGVudHJ5SW5kZXggPSBtZW51RW50cmllcy5maW5kSW5kZXgoXG5cdFx0XHRcdChtZW51RW50cnkpID0+XG5cdFx0XHRcdFx0bWVudUVudHJ5LmRhdGE/LnR5cGUgPT09IHBvc2l0aW9uVHlwZSAmJiBtZW51RW50cnkuZGF0YT8uYWN0aW9uPy5pZCA9PT0gcG9zaXRpb25DdXN0b21JZFxuXHRcdFx0KTtcblxuXHRcdFx0aWYgKGVudHJ5SW5kZXggPT09IC0xKSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdGBVbmFibGUgdG8gZmluZCBtZW51IHdpdGggZW50cnkgdHlwZTogJHtKU09OLnN0cmluZ2lmeShcblx0XHRcdFx0XHRcdHBvc2l0aW9uVHlwZVxuXHRcdFx0XHRcdCl9IGFuZCBjdXN0b21JZDogJHtwb3NpdGlvbkN1c3RvbUlkfWBcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0ZW50cnlJbmRleCA9IG1lbnVFbnRyaWVzLmZpbmRJbmRleCgobWVudUVudHJ5KSA9PiBtZW51RW50cnkuZGF0YT8udHlwZSA9PT0gcG9zaXRpb25UeXBlKTtcblxuXHRcdFx0aWYgKGVudHJ5SW5kZXggPT09IC0xKSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKGBVbmFibGUgdG8gZmluZCBtZW51IHdpdGggZW50cnkgdHlwZTogJHtwb3NpdGlvblR5cGV9YCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGVudHJ5SW5kZXggIT09IC0xICYmIHBvc2l0aW9uT3BlcmF0aW9uKSB7XG5cdFx0XHRzd2l0Y2ggKHBvc2l0aW9uT3BlcmF0aW9uKSB7XG5cdFx0XHRcdGNhc2UgXCJkZWxldGVcIjoge1xuXHRcdFx0XHRcdG1lbnVFbnRyaWVzLnNwbGljZShlbnRyeUluZGV4KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRjYXNlIFwicmVwbGFjZUxhYmVsXCI6IHtcblx0XHRcdFx0XHRjb25zdCBsYWJlbCA9IGVudHJ5Py5sYWJlbDtcblx0XHRcdFx0XHRpZiAoaXNFbXB0eShsYWJlbCkpIHtcblx0XHRcdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdFx0XHRgQXNrZWQgdG8gcmVwbGFjZSBsYWJlbCBvZiBtZW51IGVudHJ5IGJ1dCBub3QgcHJvdmlkZWQgYW4gZW50cnkgdG8gZ3JhYiBhIGxhYmVsIGZyb20gb3IgZ2l2ZW4gYW4gZW1wdHkgbGFiZWwuIFRhcmdldCBtZW51IGRhdGEgdHlwZTogJHtwb3NpdGlvblR5cGV9YFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bWVudUVudHJpZXNbZW50cnlJbmRleF0ubGFiZWwgPSBsYWJlbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2FzZSBcImFmdGVyXCI6IHtcblx0XHRcdFx0XHRpZiAoaXNFbXB0eShlbnRyeSkpIHtcblx0XHRcdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdFx0XHRgWW91IGNhbm5vdCBpbnNlcnQgYSBtZW51IGVudHJ5IGFmdGVyIHRoZSBtZW51IGVudHJ5IHdpdGggZGF0YSB0eXBlOiAke3Bvc2l0aW9uVHlwZX0gaWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEgbWVudSBlbnRyeWBcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG1lbnVFbnRyaWVzLnNwbGljZShlbnRyeUluZGV4ICsgMSwgMCwgZW50cnkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRjYXNlIFwiYmVmb3JlXCI6IHtcblx0XHRcdFx0XHRpZiAoaXNFbXB0eShlbnRyeSkpIHtcblx0XHRcdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdFx0XHRgWW91IGNhbm5vdCBpbnNlcnQgYSBtZW51IGVudHJ5IGJlZm9yZSB0aGUgbWVudSBlbnRyeSB3aXRoIGRhdGEgdHlwZTogJHtwb3NpdGlvblR5cGV9IGlmIHlvdSBkbyBub3Qgc3BlY2lmeSBhIG1lbnUgZW50cnlgXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoZW50cnlJbmRleCA9PT0gMCkge1xuXHRcdFx0XHRcdFx0bWVudUVudHJpZXMudW5zaGlmdChlbnRyeSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG1lbnVFbnRyaWVzLnNwbGljZShlbnRyeUluZGV4LCAwLCBlbnRyeSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBlbnRyeSA/IG1lbnVFbnRyaWVzLmluZGV4T2YoZW50cnkpIDogLTE7XG59XG5cbi8qKlxuICogR2V0IHRoZSBlbnRyaWVzIGZvciB0aGUgc3BlY2lmaWVkIG1lbnUgdHlwZSBmcm9tIHRoZSBtb2R1bGVzLlxuICogQHBhcmFtIG1lbnVUeXBlIFRoZSBtZW51IHR5cGUgdG8gbG9vayBmb3IuXG4gKiBAcGFyYW0gcmVsYXRlZE1lbnVJZCBUaGUgaWRlbnRpdHkgdG8gYXNzb2NpYXRlIHRoZSBtZW51LlxuICogQHJldHVybnMgVGhlIG1lbnUgZW50cmllcyBmcm9tIHRoZSBtb2R1bGUgZm9yIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TW9kdWxlTWVudUVudHJpZXM8VCBleHRlbmRzIE1lbnVPcHRpb25UeXBlPE1lbnVUZW1wbGF0ZVR5cGU+Pihcblx0bWVudVR5cGU6IE1lbnVUeXBlLFxuXHRyZWxhdGVkTWVudUlkPzogUmVsYXRlZE1lbnVJZFxuKTogUHJvbWlzZTxNZW51RW50cnk8VD5bXT4ge1xuXHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdGxldCBtZW51RW50cmllczogTWVudUVudHJ5PFQ+W10gPSBbXTtcblx0Zm9yIChjb25zdCBtZW51TW9kdWxlIG9mIG1vZHVsZXMpIHtcblx0XHRjb25zdCBlbnRyaWVzID0gYXdhaXQgbWVudU1vZHVsZS5pbXBsZW1lbnRhdGlvbi5nZXQobWVudVR5cGUsIHBsYXRmb3JtLCByZWxhdGVkTWVudUlkKTtcblx0XHRpZiAoZW50cmllcykge1xuXHRcdFx0bWVudUVudHJpZXMgPSBtZW51RW50cmllcy5jb25jYXQoZW50cmllcyBhcyBNZW51RW50cnk8VD5bXSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtZW51RW50cmllcztcbn1cblxuLyoqXG4gKiBTaG93IGEgY3VzdG9tIG1lbnUuXG4gKiBAcGFyYW0gcG9zaXRpb24gVGhlIHBvc2l0aW9uIHRvIHNob3cgdGhlIG1lbnUuXG4gKiBAcGFyYW0gcG9zaXRpb24ueCBUaGUgeCBwb3NpdGlvbiB0byBzaG93IHRoZSBtZW51LlxuICogQHBhcmFtIHBvc2l0aW9uLnkgVGhlIHkgcG9zaXRpb24gdG8gc2hvdyB0aGUgbWVudS5cbiAqIEBwYXJhbSBwYXJlbnRJZGVudGl0eSBUaGUgaWRlbnRpdHkgb2YgdGhlIHBhcmVudCB3aW5kb3cuXG4gKiBAcGFyYW0gbm9FbnRyeVRleHQgVGhlIHRleHQgdG8gZGlzcGxheSBpZiB0aGVyZSBhcmUgbm8gZW50cmllcy5cbiAqIEBwYXJhbSBtZW51RW50cmllcyBUaGUgbWVudSBlbnRyaWVzIHRvIGRpc3BsYXkuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgZGlzcGxheWluZyB0aGUgbWVudS5cbiAqIEBwYXJhbSBvcHRpb25zLm1vZGUgRGlzcGxheSBhcyBuYXRpdmUgbWVudSBvciBjdXN0b20gcG9wdXAuXG4gKiBAcmV0dXJucyBUaGUgbWVudSBlbnRyeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNob3dQb3B1cE1lbnU8VCA9IHVua25vd24+KFxuXHRwb3NpdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9LFxuXHRwYXJlbnRJZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eSxcblx0bm9FbnRyeVRleHQ6IHN0cmluZyxcblx0bWVudUVudHJpZXM6IHsgbGFiZWw6IHN0cmluZzsgY3VzdG9tRGF0YTogVDsgaWNvbj86IHN0cmluZyB9W10sXG5cdG9wdGlvbnM/OiB7XG5cdFx0bW9kZT86IFwibmF0aXZlXCIgfCBcImN1c3RvbVwiO1xuXHR9XG4pOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcblx0aWYgKChvcHRpb25zPy5tb2RlID8/IFwibmF0aXZlXCIpID09PSBcIm5hdGl2ZVwiKSB7XG5cdFx0cmV0dXJuIHNob3dOYXRpdmVQb3B1cE1lbnUocG9zaXRpb24sIHBhcmVudElkZW50aXR5LCBub0VudHJ5VGV4dCwgbWVudUVudHJpZXMpO1xuXHR9XG5cblx0cmV0dXJuIHNob3dIdG1sUG9wdXBNZW51KHBvc2l0aW9uLCBwYXJlbnRJZGVudGl0eSwgbm9FbnRyeVRleHQsIG1lbnVFbnRyaWVzKTtcbn1cblxuLyoqXG4gKiBTaG93IGEgY3VzdG9tIG1lbnUgdXNpbmcgcG9wdXAgd2luZG93LlxuICogQHBhcmFtIHBvc2l0aW9uIFRoZSBwb3NpdGlvbiB0byBzaG93IHRoZSBtZW51LlxuICogQHBhcmFtIHBvc2l0aW9uLnggVGhlIHggcG9zaXRpb24gdG8gc2hvdyB0aGUgbWVudS5cbiAqIEBwYXJhbSBwb3NpdGlvbi55IFRoZSB5IHBvc2l0aW9uIHRvIHNob3cgdGhlIG1lbnUuXG4gKiBAcGFyYW0gcGFyZW50SWRlbnRpdHkgVGhlIGlkZW50aXR5IG9mIHRoZSBwYXJlbnQgd2luZG93LlxuICogQHBhcmFtIG5vRW50cnlUZXh0IFRoZSB0ZXh0IHRvIGRpc3BsYXkgaWYgdGhlcmUgYXJlIG5vIGVudHJpZXMuXG4gKiBAcGFyYW0gbWVudUVudHJpZXMgVGhlIG1lbnUgZW50cmllcyB0byBkaXNwbGF5LlxuICogQHJldHVybnMgVGhlIG1lbnUgZW50cnkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaG93SHRtbFBvcHVwTWVudTxUID0gdW5rbm93bj4oXG5cdHBvc2l0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0sXG5cdHBhcmVudElkZW50aXR5OiBPcGVuRmluLklkZW50aXR5LFxuXHRub0VudHJ5VGV4dDogc3RyaW5nLFxuXHRtZW51RW50cmllczogeyBsYWJlbDogc3RyaW5nOyBjdXN0b21EYXRhOiBUOyBpY29uPzogc3RyaW5nIH1bXVxuKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG5cdGNvbnN0IHBhcmVudFdpbmRvdyA9IGZpbi5XaW5kb3cud3JhcFN5bmMocGFyZW50SWRlbnRpdHkpO1xuXHRjb25zdCBwYXJlbnRCb3VuZHMgPSBhd2FpdCBwYXJlbnRXaW5kb3cuZ2V0Qm91bmRzKCk7XG5cblx0Y29uc3QgcGxhdGZvcm1XaW5kb3cgPSBmaW4uV2luZG93LndyYXBTeW5jKGZpbi5tZS5pZGVudGl0eSk7XG5cblx0Y29uc3QgY3VycmVudFBhbGV0dGUgPSBhd2FpdCBnZXRDdXJyZW50UGFsZXR0ZSgpO1xuXG5cdGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBsYXRmb3JtV2luZG93LnNob3dQb3B1cFdpbmRvdyh7XG5cdFx0bmFtZTogcmFuZG9tVVVJRCgpLFxuXHRcdGluaXRpYWxPcHRpb25zOiB7XG5cdFx0XHRzaG93VGFza2Jhckljb246IGZhbHNlLFxuXHRcdFx0YmFja2dyb3VuZENvbG9yOiBjdXJyZW50UGFsZXR0ZT8uYmFja2dyb3VuZFByaW1hcnksXG5cdFx0XHRjdXN0b21EYXRhOiB7XG5cdFx0XHRcdG5vRW50cnlUZXh0LFxuXHRcdFx0XHRtZW51RW50cmllcyxcblx0XHRcdFx0cGFsZXR0ZToge1xuXHRcdFx0XHRcdGJhY2tncm91bmRQcmltYXJ5OiBjdXJyZW50UGFsZXR0ZT8uYmFja2dyb3VuZFByaW1hcnksXG5cdFx0XHRcdFx0dGV4dERlZmF1bHQ6IGN1cnJlbnRQYWxldHRlPy50ZXh0RGVmYXVsdCxcblx0XHRcdFx0XHRpbnB1dEJhY2tncm91bmQ6IGN1cnJlbnRQYWxldHRlPy5pbnB1dEJhY2tncm91bmRcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0dXJsOiBtZW51UHJvdmlkZXJPcHRpb25zPy5wb3B1cEh0bWwgPz8gYCR7cGxhdGZvcm1Sb290VXJsfS9jb21tb24vcG9wdXBzL21lbnUvaW5kZXguaHRtbGAsXG5cdFx0eDogcGFyZW50Qm91bmRzLmxlZnQgKyBwb3NpdGlvbi54LFxuXHRcdHk6IHBhcmVudEJvdW5kcy50b3AgKyBwb3NpdGlvbi55LFxuXHRcdHdpZHRoOiBtZW51UHJvdmlkZXJPcHRpb25zPy5tZW51V2lkdGggPz8gMjAwLFxuXHRcdGhlaWdodDogbWVudUVudHJpZXMubGVuZ3RoICogKG1lbnVQcm92aWRlck9wdGlvbnM/Lm1lbnVJdGVtSGVpZ2h0ID8/IDMyKVxuXHR9KTtcblxuXHRpZiAocmVzdWx0LnJlc3VsdCA9PT0gXCJjbGlja2VkXCIpIHtcblx0XHRyZXR1cm4gcmVzdWx0LmRhdGEgYXMgVDtcblx0fVxufVxuXG4vKipcbiAqIFNob3cgdGhlIHBvcHVwIG1lbnUuXG4gKiBAcGFyYW0gcG9zaXRpb24gVGhlIHBvc2l0aW9uIHRvIGRpc3BsYXkgdGhlIG1lbnUuXG4gKiBAcGFyYW0gcG9zaXRpb24ueCBUaGUgeCBwb3NpdGlvbiB0byBkaXNwbGF5IHRoZSBtZW51LlxuICogQHBhcmFtIHBvc2l0aW9uLnkgVGhlIHkgcG9zaXRpb24gdG8gZGlzcGxheSB0aGUgbWVudS5cbiAqIEBwYXJhbSBwYXJlbnRJZGVudGl0eSBUaGUgaWRlbnRpdHkgb2YgdGhlIHdpbmRvdyB0byB1c2UgZm9yIHNob3dpbmcgdGhlIHBvcHVwLlxuICogQHBhcmFtIG5vRW50cnlUZXh0IFRoZSB0ZXh0IHRvIGRpc3BsYXkgaWYgdGhlcmUgYXJlIG5vIGVudHJpZXMuXG4gKiBAcGFyYW0gbWVudUVudHJpZXMgVGhlIG1lbnUgZW50cmllcyB0byBkaXNwbGF5LlxuICogQHJldHVybnMgVGhlIHNlbGVjdGVkIGVudHJ5IG9yIHVuZGVmaW5lZCBpZiBtZW51IHdhcyBkaXNtaXNzZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaG93TmF0aXZlUG9wdXBNZW51PFQgPSB1bmtub3duPihcblx0cG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSxcblx0cGFyZW50SWRlbnRpdHk6IE9wZW5GaW4uSWRlbnRpdHksXG5cdG5vRW50cnlUZXh0OiBzdHJpbmcsXG5cdG1lbnVFbnRyaWVzOiB7IGxhYmVsOiBzdHJpbmc7IGN1c3RvbURhdGE6IFQ7IGljb24/OiBzdHJpbmcgfVtdXG4pOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcblx0Y29uc3QgcGFyZW50V2luZG93ID0gZmluLldpbmRvdy53cmFwU3luYyhwYXJlbnRJZGVudGl0eSk7XG5cblx0Y29uc3QgdGVtcGxhdGU6IE9wZW5GaW4uTWVudUl0ZW1UZW1wbGF0ZVtdID0gbWVudUVudHJpZXMubWFwKChtKSA9PiAoe1xuXHRcdGxhYmVsOiBtLmxhYmVsLFxuXHRcdGljb246IG0uaWNvbixcblx0XHRkYXRhOiBtLmN1c3RvbURhdGFcblx0fSkpO1xuXG5cdGlmIChpc0VtcHR5KHRlbXBsYXRlKSB8fCB0ZW1wbGF0ZS5sZW5ndGggPT09IDApIHtcblx0XHR0ZW1wbGF0ZS5wdXNoKHtcblx0XHRcdGxhYmVsOiBub0VudHJ5VGV4dCxcblx0XHRcdGVuYWJsZWQ6IGZhbHNlXG5cdFx0fSk7XG5cdH1cblxuXHRjb25zdCByID0gYXdhaXQgcGFyZW50V2luZG93LnNob3dQb3B1cE1lbnUoe1xuXHRcdHRlbXBsYXRlLFxuXHRcdHg6IHBvc2l0aW9uLngsXG5cdFx0eTogcG9zaXRpb24ueVxuXHR9KTtcblxuXHRpZiAoci5yZXN1bHQgPT09IFwiY2xpY2tlZFwiKSB7XG5cdFx0cmV0dXJuIHIuZGF0YSBhcyBUO1xuXHR9XG59XG4iLCJpbXBvcnQgdHlwZSBPcGVuRmluIGZyb20gXCJAb3BlbmZpbi9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IFdvcmtzcGFjZVBsYXRmb3JtTW9kdWxlIH0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZS1wbGF0Zm9ybVwiO1xuaW1wb3J0IHsgZ2V0QXBwLCBnZXRBcHBzIH0gZnJvbSBcIi4vYXBwc1wiO1xuaW1wb3J0ICogYXMgZmF2b3JpdGVQcm92aWRlciBmcm9tIFwiLi9mYXZvcml0ZVwiO1xuaW1wb3J0IHsgbGF1bmNoIH0gZnJvbSBcIi4vbGF1bmNoXCI7XG5pbXBvcnQgeyBzdWJzY3JpYmVMaWZlY3ljbGVFdmVudCwgdW5zdWJzY3JpYmVMaWZlY3ljbGVFdmVudCB9IGZyb20gXCIuL2xpZmVjeWNsZVwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBzaG93UG9wdXBNZW51IH0gZnJvbSBcIi4vbWVudVwiO1xuaW1wb3J0IHsgbGF1bmNoUGFnZSB9IGZyb20gXCIuL3BsYXRmb3JtL2Jyb3dzZXJcIjtcbmltcG9ydCB0eXBlIHsgUGxhdGZvcm1BcHAgfSBmcm9tIFwiLi9zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHsgRmF2b3JpdGVDbGllbnQgfSBmcm9tIFwiLi9zaGFwZXMvZmF2b3JpdGUtc2hhcGVzXCI7XG5cbmltcG9ydCB0eXBlIHtcblx0TW9kdWxlLFxuXHRNb2R1bGVEZWZpbml0aW9uLFxuXHRNb2R1bGVFbnRyeSxcblx0TW9kdWxlRW50cnlUeXBlcyxcblx0TW9kdWxlSGVscGVycyxcblx0TW9kdWxlSW1wbGVtZW50YXRpb24sXG5cdE1vZHVsZUxpc3QsXG5cdE1vZHVsZVR5cGVzXG59IGZyb20gXCIuL3NoYXBlcy9tb2R1bGUtc2hhcGVzXCI7XG5pbXBvcnQge1xuXHRnZXRDdXJyZW50Q29sb3JTY2hlbWVNb2RlLFxuXHRnZXRDdXJyZW50SWNvbkZvbGRlcixcblx0Z2V0Q3VycmVudFBhbGV0dGUsXG5cdGdldEN1cnJlbnRUaGVtZUlkXG59IGZyb20gXCIuL3RoZW1lc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyBnZXRWZXJzaW9uSW5mbyB9IGZyb20gXCIuL3ZlcnNpb25cIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiTW9kdWxlc1wiKTtcbmxldCBwYXNzZWRTZXNzaW9uSWQ6IHN0cmluZztcbmxldCBib290c3RyYXBwZWQgPSBmYWxzZTtcblxuLyoqXG4gKiBBbGwgdGhlIGxvYWRlZCBtb2R1bGVzLlxuICovXG5jb25zdCBsb2FkZWRNb2R1bGVzOiB7XG5cdFt1cmw6IHN0cmluZ106IE1vZHVsZUVudHJ5VHlwZXM7XG59ID0ge307XG5cbi8qKlxuICogU2V0dXAgYW55IHJlcXVpcmVkIGxpc3RlbmVycyBuZWVkZWQgYnkgdGhpcyBtb2R1bGUgYW5kIHNwZWNpZnkgdGhlIHNlc3Npb24gaWQgZm9yIHRoaXMgaW5zdGFuY2Ugb2YgdGhlIHBsYXRmb3JtLlxuICogQHBhcmFtIHNlc3Npb25JZCBTZXNzaW9uIGlkIHRvIG1ha2UgYXZhaWxhYmxlIHRvIG1vZHVsZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KHNlc3Npb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG5cdGxvZ2dlci5pbmZvKFxuXHRcdGBJbml0aWFsaXppbmcgYW5kIGxpc3RlbmluZyBmb3IgdGhlIGFmdGVyIGJvb3RzdHJhcCBsaWZlY3ljbGUgZXZlbnQgYW5kIHNldHRpbmcgdGhlIHBhc3NlZCBzZXNzaW9uSWQ6ICR7c2Vzc2lvbklkfWBcblx0KTtcblx0cGFzc2VkU2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuXHRjb25zdCBib290c3RyYXBwZWRMaWZlQ3ljbGVJZDogc3RyaW5nID0gc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQoXG5cdFx0XCJhZnRlci1ib290c3RyYXBcIixcblx0XHRhc3luYyAoX3BsYXRmb3JtOiBXb3Jrc3BhY2VQbGF0Zm9ybU1vZHVsZSkgPT4ge1xuXHRcdFx0Ym9vdHN0cmFwcGVkID0gdHJ1ZTtcblx0XHRcdHVuc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQoYm9vdHN0cmFwcGVkTGlmZUN5Y2xlSWQsIFwiYWZ0ZXItYm9vdHN0cmFwXCIpO1xuXHRcdH1cblx0KTtcbn1cblxuLyoqXG4gKiBMb2FkIHRoZSBtb2R1bGVzIGZyb20gdGhlIGxpc3QuXG4gKiBAcGFyYW0gbW9kdWxlTGlzdCBUaGUgbGlzdCBvZiBtb2R1bGVzIHRvIGxvYWQuXG4gKiBAcGFyYW0gbW9kdWxlVHlwZSBUaGUgdHlwZSBvZiBtb2R1bGVzIHRvIGxvYWQuXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZE1vZHVsZXM8XG5cdE0gZXh0ZW5kcyBNb2R1bGVJbXBsZW1lbnRhdGlvbjxPLCBIPixcblx0SCA9IE1vZHVsZUhlbHBlcnMsXG5cdE8gPSB1bmtub3duLFxuXHREIGV4dGVuZHMgTW9kdWxlRGVmaW5pdGlvbjxPPiA9IE1vZHVsZURlZmluaXRpb248Tz5cbj4obW9kdWxlTGlzdDogTW9kdWxlTGlzdCB8IHVuZGVmaW5lZCwgbW9kdWxlVHlwZTogTW9kdWxlVHlwZXMpOiBQcm9taXNlPE1vZHVsZUVudHJ5PE0sIEgsIE8sIEQ+W10+IHtcblx0Y29uc3QgbG9hZGVkOiBNb2R1bGVFbnRyeTxNLCBILCBPLCBEPltdID0gW107XG5cblx0Y29uc3QgbW9kdWxlcyA9IG1vZHVsZUxpc3Q/Lm1vZHVsZXM7XG5cdGlmIChBcnJheS5pc0FycmF5KG1vZHVsZXMpKSB7XG5cdFx0Zm9yIChjb25zdCBtb2R1bGVEZWZpbml0aW9uIG9mIG1vZHVsZXMpIHtcblx0XHRcdGNvbnN0IG1vZHVsZSA9IGF3YWl0IGxvYWRNb2R1bGU8TSwgSCwgTywgRD4obW9kdWxlRGVmaW5pdGlvbiwgbW9kdWxlVHlwZSk7XG5cdFx0XHRpZiAobW9kdWxlKSB7XG5cdFx0XHRcdGxvYWRlZC5wdXNoKG1vZHVsZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGxvYWRlZDtcbn1cblxuLyoqXG4gKiBMb2FkIGEgbW9kdWxlIGlmIGl0IGlzIGVuYWJsZWQgYW5kIGFkZCBpdCB0byB0aGUgbG9hZGVkIGxpc3QuXG4gKiBAcGFyYW0gbW9kdWxlRGVmaW5pdGlvbiBUaGUgbW9kdWxlIGRlZmluaXRpb24gdG8gbG9hZC5cbiAqIEBwYXJhbSBtb2R1bGVUeXBlIFRoZSB0eXBlIG9mIG1vZHVsZSB0byBsb2FkLlxuICogQHJldHVybnMgTm90aGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRNb2R1bGU8XG5cdE0gZXh0ZW5kcyBNb2R1bGVJbXBsZW1lbnRhdGlvbjxPLCBIPixcblx0SCA9IE1vZHVsZUhlbHBlcnMsXG5cdE8gPSB1bmtub3duLFxuXHREIGV4dGVuZHMgTW9kdWxlRGVmaW5pdGlvbjxPPiA9IE1vZHVsZURlZmluaXRpb248Tz5cbj4obW9kdWxlRGVmaW5pdGlvbjogTW9kdWxlRGVmaW5pdGlvbiwgbW9kdWxlVHlwZTogTW9kdWxlVHlwZXMpOiBQcm9taXNlPE1vZHVsZUVudHJ5PE0sIEgsIE8sIEQ+IHwgdW5kZWZpbmVkPiB7XG5cdGlmICghbW9kdWxlRGVmaW5pdGlvbi5pZCkge1xuXHRcdGxvZ2dlci53YXJuKFwiTW9kdWxlIGRvZXMgbm90IGhhdmUgYW4gaWQgZGVmaW5lZFwiKTtcblx0XHRyZXR1cm47XG5cdH1cblx0aWYgKG1vZHVsZURlZmluaXRpb24uZW5hYmxlZCA/PyB0cnVlKSB7XG5cdFx0aWYgKCFtb2R1bGVEZWZpbml0aW9uLnVybCkge1xuXHRcdFx0bG9nZ2VyLmVycm9yKGBNb2R1bGUgJyR7bW9kdWxlRGVmaW5pdGlvbi5pZH0nIGNhbiBub3QgYmUgbG9hZGVkIHdpdGhvdXQgYSB1cmxgKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCFsb2FkZWRNb2R1bGVzW21vZHVsZURlZmluaXRpb24udXJsXSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYExvYWRpbmcgbW9kdWxlICcke21vZHVsZURlZmluaXRpb24udXJsfScgZm9yIHR5cGUgJHttb2R1bGVUeXBlfWApO1xuXHRcdFx0XHRjb25zdCBtb2Q6IE1vZHVsZSA9IGF3YWl0IGltcG9ydCgvKiB3ZWJwYWNrSWdub3JlOiB0cnVlICovIG1vZHVsZURlZmluaXRpb24udXJsKTtcblx0XHRcdFx0aWYgKCFtb2QuZW50cnlQb2ludHMpIHtcblx0XHRcdFx0XHRsb2dnZXIuZXJyb3IoYE1vZHVsZSAnJHttb2R1bGVEZWZpbml0aW9uLmlkfScgaGFzIG5vIGV4cG9ydGVkIGVudHJ5UG9pbnRzYCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGVudHJ5UG9pbnRzID0gT2JqZWN0LmtleXMobW9kLmVudHJ5UG9pbnRzKTtcblx0XHRcdFx0aWYgKCFlbnRyeVBvaW50cy5pbmNsdWRlcyhtb2R1bGVUeXBlKSkge1xuXHRcdFx0XHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFx0XHRcdGBNb2R1bGUgd2FzIGxvYWRlZCwgYnV0IGlzIGRvZXMgbm90IGNvbnRhaW4gYW4gZW50cnkgcG9pbnQgZm9yIHR5cGUgJHttb2R1bGVUeXBlfSwgaXQgb25seSBjb250YWlucyAke2VudHJ5UG9pbnRzLmpvaW4oXG5cdFx0XHRcdFx0XHRcdFwiLCBcIlxuXHRcdFx0XHRcdFx0KX1gXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0bG9nZ2VyLmluZm8oYE1vZHVsZSBjb250YWlucyBpbXBsZW1lbnRhdGlvbnMgZm9yICR7ZW50cnlQb2ludHMuam9pbihcIiwgXCIpfWApO1xuXHRcdFx0XHRsb2FkZWRNb2R1bGVzW21vZHVsZURlZmluaXRpb24udXJsXSA9IHt9O1xuXG5cdFx0XHRcdC8vIFN0b3JlIGFsbCB0aGUgZW50cnkgcG9pbnRzIGZvciB0aGUgbW9kdWxlc1xuXHRcdFx0XHRmb3IgKGNvbnN0IGVudHJ5UG9pbnQgb2YgZW50cnlQb2ludHMpIHtcblx0XHRcdFx0XHRsb2FkZWRNb2R1bGVzW21vZHVsZURlZmluaXRpb24udXJsXVtlbnRyeVBvaW50IGFzIE1vZHVsZVR5cGVzXSA9IHtcblx0XHRcdFx0XHRcdC8vIElmIHRoZSBtb2R1bGVUeXBlIGlzIHRoZSB0eXBlIGJlaW5nIGxvYWRlZCB0aGVuIHdlIGNhbiBzdG9yZSB0aGVcblx0XHRcdFx0XHRcdC8vIGRlZmluaXRpb24gYXMgd2VsbCwgb3RoZXJ3aXNlIGNyZWF0ZSBhIGR1bW15IGVudHJ5XG5cdFx0XHRcdFx0XHRkZWZpbml0aW9uOiBlbnRyeVBvaW50ID09PSBtb2R1bGVUeXBlID8gbW9kdWxlRGVmaW5pdGlvbiA6ICh7fSBhcyBNb2R1bGVEZWZpbml0aW9uKSxcblx0XHRcdFx0XHRcdGlzSW5pdGlhbGl6ZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0Ly8gU3RvcmUgdGhlIGVudHJ5IHBvaW50IG9yIGEgZHVtbXkgaW1wbGVtZW50YXRpb24gZm9yIG90aGVyIHR5cGVzXG5cdFx0XHRcdFx0XHRpbXBsZW1lbnRhdGlvbjogbW9kLmVudHJ5UG9pbnRzW2VudHJ5UG9pbnQgYXMgTW9kdWxlVHlwZXNdID8/ICh7fSBhcyBNb2R1bGVJbXBsZW1lbnRhdGlvbilcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0bG9nZ2VyLmVycm9yKGBFcnJvciBsb2FkaW5nIG1vZHVsZSAke21vZHVsZURlZmluaXRpb24udXJsfWAsIGVycik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0bG9nZ2VyLmluZm8oYE1vZHVsZSBhbHJlYWR5IGxvYWRlZCAnJHttb2R1bGVEZWZpbml0aW9uLnVybH0nIHVzaW5nIGNhY2hlZCB2ZXJzaW9uYCk7XG5cdFx0XHRjb25zdCBsb2FkZWQgPSBsb2FkZWRNb2R1bGVzW21vZHVsZURlZmluaXRpb24udXJsXVttb2R1bGVUeXBlXTtcblx0XHRcdGlmICghbG9hZGVkKSB7XG5cdFx0XHRcdGxvZ2dlci5lcnJvcihgTW9kdWxlIGZyb20gY2FjaGUgZG9lcyBub3QgY29udGFpbiBhbiBlbnRyeSBwb2ludCBmb3IgdHlwZSAke21vZHVsZVR5cGV9YCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGxvYWRlZC5kZWZpbml0aW9uID0gbW9kdWxlRGVmaW5pdGlvbjtcblx0XHR9XG5cblx0XHRyZXR1cm4gbG9hZGVkTW9kdWxlc1ttb2R1bGVEZWZpbml0aW9uLnVybF1bbW9kdWxlVHlwZV0gYXMgTW9kdWxlRW50cnk8TSwgSCwgTywgRD47XG5cdH1cbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIG1vZHVsZXMgb2YgdGhlIGdpdmVuIHR5cGUuXG4gKiBAcGFyYW0gbW9kdWxlRW50cmllcyBUaGUgdHlwZSBvZiBtb2R1bGVzIHRvIGluaXRpYWxpemUuXG4gKiBAcGFyYW0gaGVscGVycyBIZWxwZXIgbWV0aG9kcyB0byBwYXNzIHRvIGFsbCB0aGUgbW9kdWxlcy5cbiAqIEBwYXJhbSBwcm9ncmVzcyBQcm9ncmVzcyBjYWxsYmFjayBmb3IgbW9uaXRvciBtb2R1bGUgaW5pdGlhbGl6YXRpb24uXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBpbml0aWFsaXplZCBtb2R1bGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdGlhbGl6ZU1vZHVsZXM8XG5cdE0gZXh0ZW5kcyBNb2R1bGVJbXBsZW1lbnRhdGlvbjxPLCBIPixcblx0SCA9IE1vZHVsZUhlbHBlcnMsXG5cdE8gPSB1bmtub3duLFxuXHREIGV4dGVuZHMgTW9kdWxlRGVmaW5pdGlvbjxPPiA9IE1vZHVsZURlZmluaXRpb248Tz5cbj4oXG5cdG1vZHVsZUVudHJpZXM6IE1vZHVsZUVudHJ5PE0sIEgsIE8sIEQ+W10sXG5cdGhlbHBlcnM6IEgsXG5cdHByb2dyZXNzPzogKGRlZmluaXRpb246IE1vZHVsZURlZmluaXRpb24pID0+IFByb21pc2U8dm9pZD5cbik6IFByb21pc2U8dm9pZD4ge1xuXHRmb3IgKGNvbnN0IG1vZHVsZUVudHJ5IG9mIG1vZHVsZUVudHJpZXMpIHtcblx0XHRpZiAocHJvZ3Jlc3MpIHtcblx0XHRcdGF3YWl0IHByb2dyZXNzKG1vZHVsZUVudHJ5LmRlZmluaXRpb24pO1xuXHRcdH1cblx0XHRhd2FpdCBpbml0aWFsaXplTW9kdWxlPE0sIEgsIE8sIEQ+KG1vZHVsZUVudHJ5LCBoZWxwZXJzKTtcblx0fVxufVxuXG4vKipcbiAqIEluaXRpYWxpemUgYSBzaW5nbGUgbW9kdWxlIGVudHJ5LlxuICogQHBhcmFtIG1vZHVsZUVudHJ5IFRoZSBlbnRyeSB0byBpbml0aWFsaXplLlxuICogQHBhcmFtIGhlbHBlcnMgSGVscGVyIG1ldGhvZHMgdG8gcGFzcyB0byB0aGUgbW9kdWxlLlxuICogQHJldHVybnMgVGhlIGluaXRpYWxpemVkIG1vZHVsZSBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRpYWxpemVNb2R1bGU8XG5cdE0gZXh0ZW5kcyBNb2R1bGVJbXBsZW1lbnRhdGlvbjxPLCBIPixcblx0SCA9IE1vZHVsZUhlbHBlcnMsXG5cdE8gPSB1bmtub3duLFxuXHREIGV4dGVuZHMgTW9kdWxlRGVmaW5pdGlvbjxPPiA9IE1vZHVsZURlZmluaXRpb248Tz5cbj4obW9kdWxlRW50cnk6IE1vZHVsZUVudHJ5PE0sIEgsIE8sIEQ+LCBoZWxwZXJzOiBIKTogUHJvbWlzZTxNIHwgdW5kZWZpbmVkPiB7XG5cdGlmICghbW9kdWxlRW50cnkuaXNJbml0aWFsaXplZCkge1xuXHRcdGlmIChtb2R1bGVFbnRyeS5pbXBsZW1lbnRhdGlvbj8uaW5pdGlhbGl6ZSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYEluaXRpYWxpemluZyBtb2R1bGUgJyR7bW9kdWxlRW50cnkuZGVmaW5pdGlvbi5pZH0nYCk7XG5cdFx0XHRcdGF3YWl0IG1vZHVsZUVudHJ5LmltcGxlbWVudGF0aW9uLmluaXRpYWxpemUobW9kdWxlRW50cnkuZGVmaW5pdGlvbiwgY3JlYXRlTG9nZ2VyLCBoZWxwZXJzKTtcblx0XHRcdFx0bW9kdWxlRW50cnkuaXNJbml0aWFsaXplZCA9IHRydWU7XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0bG9nZ2VyLmVycm9yKGBFcnJvciBpbml0aWFsaXppbmcgbW9kdWxlICR7bW9kdWxlRW50cnkuZGVmaW5pdGlvbi5pZH1gLCBlcnIpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRtb2R1bGVFbnRyeS5pc0luaXRpYWxpemVkID0gdHJ1ZTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbW9kdWxlRW50cnkuaXNJbml0aWFsaXplZCA/IG1vZHVsZUVudHJ5LmltcGxlbWVudGF0aW9uIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENsb3NlIGRvd24gbW9kdWxlcyBvZiB0aGUgZ2l2ZW4gdHlwZS5cbiAqIEBwYXJhbSBtb2R1bGVUeXBlIFRoZSB0eXBlIG9mIG1vZHVsZXMgdG8gY2xvc2UgZG93bi5cbiAqIEByZXR1cm5zIE5vdGhpbmcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjbG9zZWRvd25Nb2R1bGVzKG1vZHVsZVR5cGU6IE1vZHVsZVR5cGVzKTogUHJvbWlzZTx2b2lkPiB7XG5cdGZvciAoY29uc3QgdXJsIGluIGxvYWRlZE1vZHVsZXMpIHtcblx0XHRjb25zdCBtb2R1bGVFbnRyeSA9IGxvYWRlZE1vZHVsZXNbdXJsXVttb2R1bGVUeXBlXTtcblx0XHRpZiAobW9kdWxlRW50cnkpIHtcblx0XHRcdGF3YWl0IGNsb3NlZG93bk1vZHVsZShtb2R1bGVFbnRyeSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQ2xvc2UgZG93biBhIHNpbmdsZSBtb2R1bGUgZW50cnkuXG4gKiBAcGFyYW0gbW9kdWxlRW50cnkgVGhlIGVudHJ5IHRvIGNsb3NlIGRvd24uXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xvc2Vkb3duTW9kdWxlPFxuXHRNIGV4dGVuZHMgTW9kdWxlSW1wbGVtZW50YXRpb248TywgSD4sXG5cdEggPSBNb2R1bGVIZWxwZXJzLFxuXHRPID0gdW5rbm93bixcblx0RCBleHRlbmRzIE1vZHVsZURlZmluaXRpb248Tz4gPSBNb2R1bGVEZWZpbml0aW9uPE8+XG4+KG1vZHVsZUVudHJ5OiBNb2R1bGVFbnRyeTxNLCBILCBPLCBEPik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAobW9kdWxlRW50cnkuaXNJbml0aWFsaXplZCkge1xuXHRcdGlmIChtb2R1bGVFbnRyeS5pbXBsZW1lbnRhdGlvbj8uY2xvc2Vkb3duKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgQ2xvc2luZyBkb3duIG1vZHVsZSAnJHttb2R1bGVFbnRyeS5kZWZpbml0aW9uLmlkfSdgKTtcblx0XHRcdFx0YXdhaXQgbW9kdWxlRW50cnkuaW1wbGVtZW50YXRpb24uY2xvc2Vkb3duKCk7XG5cdFx0XHRcdG1vZHVsZUVudHJ5LmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoYEVycm9yIGNsb3NpbmcgZG93biBtb2R1bGUgJHttb2R1bGVFbnRyeS5kZWZpbml0aW9uLmlkfWAsIGVycik7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1vZHVsZUVudHJ5LmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgaGVscGVycyBmb3IgbW9kdWxlcy5cbiAqIEByZXR1cm5zIFRoZSBtb2R1bGUgaGVscGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRIZWxwZXJzKCk6IE1vZHVsZUhlbHBlcnMge1xuXHRyZXR1cm4ge1xuXHRcdHNlc3Npb25JZDogcGFzc2VkU2Vzc2lvbklkLFxuXHRcdGdldEFwcHM6IGFzeW5jICgpOiBQcm9taXNlPFBsYXRmb3JtQXBwW10+ID0+IHtcblx0XHRcdGxvZ2dlci5pbmZvKFwiZ2V0QXBwczogZ2V0dGluZyBwdWJsaWMgYXBwcyBmb3IgbW9kdWxlLlwiKTtcblx0XHRcdHJldHVybiBnZXRBcHBzKHsgcHJpdmF0ZTogZmFsc2UgfSk7XG5cdFx0fSxcblx0XHRnZXRBcHAsXG5cdFx0Z2V0Q3VycmVudFRoZW1lSWQsXG5cdFx0Z2V0Q3VycmVudEljb25Gb2xkZXIsXG5cdFx0Z2V0Q3VycmVudFBhbGV0dGUsXG5cdFx0Z2V0Q3VycmVudENvbG9yU2NoZW1lTW9kZSxcblx0XHRnZXRWZXJzaW9uSW5mbyxcblx0XHRnZXRJbnRlcm9wQ2xpZW50LFxuXHRcdGdldEZhdm9yaXRlQ2xpZW50LFxuXHRcdGxhdW5jaEFwcDogYXN5bmMgKGFwcElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRcdGxvZ2dlci5pbmZvKGBsYXVuY2hBcHA6IExvb2tpbmcgdXAgYXBwSWQ6ICR7YXBwSWR9YCk7XG5cdFx0XHRjb25zdCBhcHAgPSBhd2FpdCBnZXRBcHAoYXBwSWQpO1xuXHRcdFx0aWYgKGlzRW1wdHkoYXBwKSkge1xuXHRcdFx0XHRsb2dnZXIud2FybihgbGF1bmNoQXBwOiBUaGUgc3BlY2lmaWVkIGFwcElkOiAke2FwcElkfSBpcyBub3QgbGlzdGVkIGluIHRoaXMgcGxhdGZvcm0uYCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgbGF1bmNoQXBwOiBMYXVuY2hpbmcgYXBwIHdpdGggYXBwSWQ6ICR7YXBwSWR9YCk7XG5cdFx0XHRcdGF3YWl0IGxhdW5jaChhcHApO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgbGF1bmNoQXBwOiBBcHAgd2l0aCBhcHBJZDogJHthcHBJZH0gbGF1bmNoZWQuYCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRsYXVuY2hQYWdlLFxuXHRcdHN1YnNjcmliZUxpZmVjeWNsZUV2ZW50LFxuXHRcdHVuc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQsXG5cdFx0c2hvd1BvcHVwTWVudVxuXHR9O1xufVxuXG4vKipcbiAqIEdldCB0aGUgaW50ZXJvcCBjbGllbnQgdG8gdXNlIHdpdGggdGhlIG1vZHVsZXMuXG4gKiBAcmV0dXJucyBUaGUgaW50ZXJvcCBjbGllbnQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEludGVyb3BDbGllbnQoKTogUHJvbWlzZTxPcGVuRmluLkludGVyb3BDbGllbnQgfCB1bmRlZmluZWQ+IHtcblx0aWYgKGJvb3RzdHJhcHBlZCkge1xuXHRcdC8vIGlmIGFuIGludGVyb3AgYnJva2VyIGhhcyBiZWVuIGFzc2lnbmVkIGZvciB0aGUgcGxhdGZvcm1cblx0XHQvLyBwcm92aWRlIGEgcHJveHkgdG8gdGhlIHJlcXVlc3RpbmcgaW50ZWdyYXRpb25cblx0XHRyZXR1cm4gZmluLkludGVyb3AuY29ubmVjdFN5bmMoZmluLm1lLnV1aWQsIHt9KTtcblx0fVxuXHQvLyBvdGhlcndpc2UgcmV0dXJuZWQgdW5kZWZpbmVkIGFzIHRoZXkgc2hvdWxkIGJlIGNhbGxpbmcgYWZ0ZXIgdGhlIGJvb3RzdHJhcHBlZCBsaWZlY3ljbGUgZXZlbnRcblx0bG9nZ2VyLndhcm4oXG5cdFx0XCJBIHJlcXVlc3Qgd2FzIG1hZGUgZm9yIHRoZSBpbnRlcm9wIGNsaWVudCBiZWZvcmUgYm9vdHN0cmFwcGluZyBoYWQgY29tcGxldGVkLiBQbGVhc2UgbGlzdGVuIGZvciB0aGUgbGlmZUN5Y2xlIGV2ZW50ICdhZnRlci1ib290c3RyYXAnIGJlZm9yZSB1c2UuXCJcblx0KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGZhdm9yaXRlIGNsaWVudCB0byB1c2Ugd2l0aCB0aGUgbW9kdWxlcy5cbiAqIEByZXR1cm5zIFRoZSBmYXZvcml0ZSBjbGllbnQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEZhdm9yaXRlQ2xpZW50KCk6IFByb21pc2U8RmF2b3JpdGVDbGllbnQgfCB1bmRlZmluZWQ+IHtcblx0aWYgKCFmYXZvcml0ZVByb3ZpZGVyLmdldEluZm8oKS5pc0VuYWJsZWQpIHtcblx0XHRsb2dnZXIud2Fybihcblx0XHRcdFwiQSByZXF1ZXN0IHdhcyBtYWRlIGZvciB0aGUgZmF2b3JpdGUgY2xpZW50IGJ1dCBmYXZvcml0ZXMgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIHRoaXMgcGxhdGZvcm0uXCJcblx0XHQpO1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0Ly8gcmlnaHQgbm93IHdlIHJldHVybiBhbGwgZnVuY3Rpb25zIGJ1dCB0aGUgb3B0aW9uYWwgYWRkcyBzY29wZSBmb3IgZGVjaWRpbmcgd2hvIGdldHMgdGhlIGFiaWxpdHkgdG8gc2V0L3JlbW92ZSBmYXZvcml0ZXNcblx0cmV0dXJuIGZhdm9yaXRlUHJvdmlkZXI7XG59XG4iLCJpbXBvcnQgdHlwZSBPcGVuRmluIGZyb20gXCJAb3BlbmZpbi9jb3JlXCI7XG5pbXBvcnQge1xuXHRnZXRDdXJyZW50U3luYyxcblx0dHlwZSBBdHRhY2hlZFBhZ2UsXG5cdHR5cGUgQnJvd3NlckNyZWF0ZVdpbmRvd1JlcXVlc3QsXG5cdHR5cGUgQnJvd3NlcldpbmRvd01vZHVsZSxcblx0dHlwZSBQYWdlLFxuXHR0eXBlIFBhZ2VMYXlvdXRcbn0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZS1wbGF0Zm9ybVwiO1xuaW1wb3J0IHR5cGUgeyBCcm93c2VyUHJvdmlkZXJPcHRpb25zLCBMb2dnZXIgfSBmcm9tIFwid29ya3NwYWNlLXBsYXRmb3JtLXN0YXJ0ZXIvc2hhcGVzXCI7XG5pbXBvcnQgeyBnZXRUb29sYmFyQnV0dG9ucyB9IGZyb20gXCIuLi9idXR0b25zXCI7XG5pbXBvcnQgeyBpc0VtcHR5LCBpc1N0cmluZ1ZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbi8qKlxuICogR2V0IHRoZSBkZWZhdWx0IHdpbmRvdyBvcHRpb25zIGZvciB0aGUgYnJvd3Nlci5cbiAqIEBwYXJhbSBicm93c2VyUHJvdmlkZXIgVGhlIGJyb3dzZXIgcHJvdmlkZXIgc2V0dGluZ3NcbiAqIEByZXR1cm5zIFRoZSBkZWZhdWx0IHdpbmRvdyBvcHRpb25zIGZvciB0aGUgYnJvd3Nlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldERlZmF1bHRXaW5kb3dPcHRpb25zKFxuXHRicm93c2VyUHJvdmlkZXI6IEJyb3dzZXJQcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWRcbik6IFByb21pc2U8UGFydGlhbDxCcm93c2VyQ3JlYXRlV2luZG93UmVxdWVzdD4+IHtcblx0Y29uc3QgbGVnYWN5V2luZG93T3B0aW9ucyA9IGJyb3dzZXJQcm92aWRlcj8ud2luZG93T3B0aW9ucyA/PyB7fTtcblx0Y29uc3QgZGVmYXVsdFdpbmRvd09wdGlvbnMgPSBicm93c2VyUHJvdmlkZXI/LmRlZmF1bHRXaW5kb3dPcHRpb25zID8/IHt9O1xuXG5cdGxldCB3c1BsYXRmb3JtID0gZGVmYXVsdFdpbmRvd09wdGlvbnMud29ya3NwYWNlUGxhdGZvcm07XG5cblx0aWYgKGlzRW1wdHkod3NQbGF0Zm9ybSkpIHtcblx0XHQvLyBQYWdlcyBoYXMgdG8gYmUgbnVsbFxuXHRcdHdzUGxhdGZvcm0gPSB7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXHRcdFx0cGFnZXM6IG51bGwgYXMgdW5rbm93biBhcyBhbnlcblx0XHR9O1xuXHR9XG5cblx0aWYgKHdzUGxhdGZvcm0pIHtcblx0XHQvLyBzdGFydCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXHRcdGlmIChpc1N0cmluZ1ZhbHVlKGxlZ2FjeVdpbmRvd09wdGlvbnMudGl0bGUpICYmICFpc1N0cmluZ1ZhbHVlKHdzUGxhdGZvcm0udGl0bGUpKSB7XG5cdFx0XHR3c1BsYXRmb3JtLnRpdGxlID0gbGVnYWN5V2luZG93T3B0aW9ucy50aXRsZTtcblx0XHR9XG5cblx0XHRpZiAoaXNTdHJpbmdWYWx1ZShsZWdhY3lXaW5kb3dPcHRpb25zLm5ld1BhZ2VVcmwpICYmICFpc1N0cmluZ1ZhbHVlKHdzUGxhdGZvcm0/Lm5ld1BhZ2VVcmwpKSB7XG5cdFx0XHR3c1BsYXRmb3JtLm5ld1BhZ2VVcmwgPSBsZWdhY3lXaW5kb3dPcHRpb25zLm5ld1BhZ2VVcmw7XG5cdFx0fVxuXG5cdFx0aWYgKGlzU3RyaW5nVmFsdWUobGVnYWN5V2luZG93T3B0aW9ucy5uZXdUYWJVcmwpICYmICFpc1N0cmluZ1ZhbHVlKHdzUGxhdGZvcm0/Lm5ld1RhYlVybCkpIHtcblx0XHRcdHdzUGxhdGZvcm0ubmV3VGFiVXJsID0gbGVnYWN5V2luZG93T3B0aW9ucy5uZXdUYWJVcmw7XG5cdFx0fVxuXG5cdFx0aWYgKGlzU3RyaW5nVmFsdWUobGVnYWN5V2luZG93T3B0aW9ucz8uaWNvbikgJiYgIWlzU3RyaW5nVmFsdWUoZGVmYXVsdFdpbmRvd09wdGlvbnM/Lmljb24pKSB7XG5cdFx0XHRkZWZhdWx0V2luZG93T3B0aW9ucy5pY29uID0gbGVnYWN5V2luZG93T3B0aW9ucy5pY29uO1xuXHRcdH1cblxuXHRcdGlmIChcblx0XHRcdGlzU3RyaW5nVmFsdWUoZGVmYXVsdFdpbmRvd09wdGlvbnM/Lmljb24pICYmXG5cdFx0XHQhaXNTdHJpbmdWYWx1ZShkZWZhdWx0V2luZG93T3B0aW9ucz8ud29ya3NwYWNlUGxhdGZvcm0/LmZhdmljb24pXG5cdFx0KSB7XG5cdFx0XHR3c1BsYXRmb3JtLmZhdmljb24gPSBkZWZhdWx0V2luZG93T3B0aW9ucy5pY29uO1xuXHRcdH1cblx0XHQvLyBlbmQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuXHRcdC8vIHdlIGFyZSBnb2luZyB0byBvdmVycmlkZSB0aGUgb25lcyBzcGVjaWZpZWQgYXQgdGhlIHdvcmtzcGFjZSBwbGF0Zm9ybSBsZXZlbFxuXHRcdC8vIGFzIHRoaXMgaXMgb3VyIG1vcmUgZmxleGlibGUgZXh0ZW5zaW9uIHdpdGggY29uZGl0aW9uc1xuXHRcdGNvbnN0IGJ1dHRvbnMgPSBhd2FpdCBnZXRUb29sYmFyQnV0dG9ucygpO1xuXHRcdGlmICghaXNFbXB0eShidXR0b25zKSkge1xuXHRcdFx0d3NQbGF0Zm9ybS50b29sYmFyT3B0aW9ucyA9IHtcblx0XHRcdFx0YnV0dG9uc1xuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRkZWZhdWx0V2luZG93T3B0aW9ucy53b3Jrc3BhY2VQbGF0Zm9ybSA9IHdzUGxhdGZvcm07XG5cdH1cblxuXHRyZXR1cm4gZGVmYXVsdFdpbmRvd09wdGlvbnM7XG59XG5cbi8qKlxuICogRmluZCB0aGUgbmFtZWQgb2YgYWxsIHRoZSB2aWV3cyBpbiBhIGxheW91dC5cbiAqIEBwYXJhbSBsYXlvdXQgVGhlIGxheW91dCB0byBmaW5kIHRoZSB2aWV3IG5hbWVzIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiB2aWV3IG5hbWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFZpZXdOYW1lcyhsYXlvdXQ6IFBhZ2VMYXlvdXQpOiBzdHJpbmdbXSB7XG5cdGNvbnN0IGNvbGxlY3RlZE5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdEpTT04uc3RyaW5naWZ5KGxheW91dCwgKF8sIG5lc3RlZFZhbHVlKSA9PiB7XG5cdFx0Ly8gY2hlY2sgdG8gZW5zdXJlIHRoYXQgd2UgaGF2ZSBhIG5hbWUgZmllbGQgYW5kIHRoYXQgd2UgYWxzbyBoYXZlIGEgdXJsIGZpZWxkIGluIHRoaXMgb2JqZWN0IChpbiBjYXNlIG5hbWUgd2FzIGFkZGVkIHRvIGEgcmFuZG9tIHBhcnQgb2YgdGhlIGxheW91dClcblx0XHRpZiAobmVzdGVkVmFsdWU/Lm5hbWU/Lmxlbmd0aCAmJiAhaXNFbXB0eShuZXN0ZWRWYWx1ZS51cmwpKSB7XG5cdFx0XHRjb2xsZWN0ZWROYW1lcy5wdXNoKG5lc3RlZFZhbHVlLm5hbWUgYXMgc3RyaW5nKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5lc3RlZFZhbHVlIGFzIHVua25vd247XG5cdH0pO1xuXG5cdHJldHVybiBjb2xsZWN0ZWROYW1lcztcbn1cblxuLyoqXG4gKiBEb2VzIHRoZSBzcGVjaWZpZWQgdmlldyBleGlzdC5cbiAqIEBwYXJhbSBpZGVudGl0eSBUaGUgaWRlbnRpdHkgb2YgdGhlIHZpZXcuXG4gKiBAcGFyYW0gYnJpbmdUb0Zyb250SWZFeGlzdHMgSWYgdGhlIHZpZXcgZXhpc3RzIHRoZW4gYnJpbmcgaXQgdG8gZnJvbnQuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2aWV3IGV4aXN0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvZXNWaWV3RXhpc3QoXG5cdGlkZW50aXR5OiBPcGVuRmluLklkZW50aXR5LFxuXHRicmluZ1RvRnJvbnRJZkV4aXN0czogYm9vbGVhbiA9IGZhbHNlXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0Y29uc3QgdmlldyA9IGZpbi5WaWV3LndyYXBTeW5jKGlkZW50aXR5KTtcblx0bGV0IGV4aXN0cyA9IGZhbHNlO1xuXHR0cnkge1xuXHRcdC8vIFdlIGNhbGwgZ2V0SW5mbyBiZWNhdXNlIHVzaW5nIHdyYXBTeW5jIGRvZXNuJ3QgZmFpbCBmb3IgYSBtaXNzaW5nIHZpZXdcblx0XHQvLyBpdCB3aWxsIG9ubHkgZmFpbCB3aXRoIGFuIGV4Y2VwdGlvbiBpZiB3ZSBjYWxsIGEgbWV0aG9kIG9uIHRoZSBjaGFubmVsXG5cdFx0YXdhaXQgdmlldy5nZXRJbmZvKCk7XG5cblx0XHRpZiAoYnJpbmdUb0Zyb250SWZFeGlzdHMpIHtcblx0XHRcdGF3YWl0IGJyaW5nVmlld1RvRnJvbnQoeyB2aWV3IH0pO1xuXHRcdH1cblx0XHRleGlzdHMgPSB0cnVlO1xuXHR9IGNhdGNoIHtcblx0XHRleGlzdHMgPSBmYWxzZTtcblx0fVxuXHRyZXR1cm4gZXhpc3RzO1xufVxuXG4vKipcbiAqIEJyaW5nIGEgdmlldyB0byB0aGUgZnJvbnQuXG4gKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgaWRlbnRpdHkgb2YgdGhlIHZpZXcuXG4gKiBAcGFyYW0gdGFyZ2V0LmlkZW50aXR5IFRoZSBpZGVudGl0eS5cbiAqIEBwYXJhbSB0YXJnZXQudmlldyBUaGUgdmlldyBkZXRhaWxzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnJpbmdWaWV3VG9Gcm9udCh0YXJnZXQ6IHtcblx0aWRlbnRpdHk/OiBPcGVuRmluLklkZW50aXR5O1xuXHR2aWV3PzogT3BlbkZpbi5WaWV3O1xufSk6IFByb21pc2U8dm9pZD4ge1xuXHRsZXQgdGFyZ2V0VmlldzogT3BlbkZpbi5WaWV3IHwgdW5kZWZpbmVkO1xuXG5cdGlmICghaXNFbXB0eSh0YXJnZXQuaWRlbnRpdHkpKSB7XG5cdFx0dGFyZ2V0VmlldyA9IGZpbi5WaWV3LndyYXBTeW5jKHRhcmdldC5pZGVudGl0eSk7XG5cdH0gZWxzZSBpZiAoIWlzRW1wdHkodGFyZ2V0LnZpZXcpKSB7XG5cdFx0dGFyZ2V0VmlldyA9IHRhcmdldC52aWV3O1xuXHR9XG5cblx0aWYgKCFpc0VtcHR5KHRhcmdldFZpZXcpKSB7XG5cdFx0Y29uc3QgaG9zdFBhZ2UgPSBhd2FpdCBnZXRQYWdlRm9yVmlldyh0YXJnZXRWaWV3KTtcblx0XHRpZiAoIWlzRW1wdHkoaG9zdFBhZ2UpKSB7XG5cdFx0XHRhd2FpdCBicmluZ1BhZ2VUb0Zyb250KHsgcGFnZTogaG9zdFBhZ2UgfSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHdpbmRvd0hvc3QgPSBhd2FpdCB0YXJnZXRWaWV3LmdldEN1cnJlbnRXaW5kb3coKTtcblx0XHRcdGF3YWl0IGJyaW5nV2luZG93VG9Gcm9udCh7IHdpbmRvdzogd2luZG93SG9zdCB9KTtcblx0XHR9XG5cdFx0YXdhaXQgdGFyZ2V0Vmlldy5mb2N1cygpO1xuXHR9XG59XG5cbi8qKlxuICogRG9lcyBhIHdpbmRvdyBleGlzdC5cbiAqIEBwYXJhbSBpZGVudGl0eSBUaGUgaWRlbnRpdHkgb2YgdGhlIHdpbmRvdyB0byBsb29rIGZvci5cbiAqIEBwYXJhbSBicmluZ1RvRnJvbnRJZkV4aXN0cyBCcmluZyB0aGUgd2luZG93IHRvIHRoZSBmcm9udCBpZiBpdCBleGlzdHMuXG4gKiBAcmV0dXJucyBUcnVlIGlmIGl0IGV4aXN0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvZXNXaW5kb3dFeGlzdChcblx0aWRlbnRpdHk6IE9wZW5GaW4uSWRlbnRpdHksXG5cdGJyaW5nVG9Gcm9udElmRXhpc3RzOiBib29sZWFuID0gZmFsc2Vcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRjb25zdCB3aW4gPSBmaW4uV2luZG93LndyYXBTeW5jKGlkZW50aXR5KTtcblx0bGV0IGV4aXN0cyA9IGZhbHNlO1xuXHR0cnkge1xuXHRcdC8vIFdlIGNhbGwgZ2V0SW5mbyBiZWNhdXNlIHVzaW5nIHdyYXBTeW5jIGRvZXNuJ3QgZmFpbCBmb3IgYSBtaXNzaW5nIHdpbmRvd1xuXHRcdC8vIGl0IHdpbGwgb25seSBmYWlsIHdpdGggYW4gZXhjZXB0aW9uIGlmIHdlIGNhbGwgYSBtZXRob2Qgb24gdGhlIGNoYW5uZWxcblx0XHRhd2FpdCB3aW4uZ2V0SW5mbygpO1xuXG5cdFx0ZXhpc3RzID0gdHJ1ZTtcblx0XHRpZiAoYnJpbmdUb0Zyb250SWZFeGlzdHMpIHtcblx0XHRcdGF3YWl0IGJyaW5nV2luZG93VG9Gcm9udCh7IHdpbmRvdzogd2luIH0pO1xuXHRcdH1cblx0fSBjYXRjaCB7XG5cdFx0ZXhpc3RzID0gZmFsc2U7XG5cdH1cblxuXHRyZXR1cm4gZXhpc3RzO1xufVxuXG4vKipcbiAqIEJyaW5nIGEgd2luZG93IHRvIHRoZSBmcm9udCBvZiB0aGUgdmlldyBzdGFjay5cbiAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCB3aW5kb3cuXG4gKiBAcGFyYW0gdGFyZ2V0LmlkZW50aXR5IFRoZSBpZGVudGl0eSBvZiB0aGUgd2luZG93LlxuICogQHBhcmFtIHRhcmdldC53aW5kb3cgVGhlIHdpbmRvdyBvYmplY3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBicmluZ1dpbmRvd1RvRnJvbnQodGFyZ2V0OiB7XG5cdGlkZW50aXR5PzogT3BlbkZpbi5JZGVudGl0eTtcblx0d2luZG93PzogT3BlbkZpbi5XaW5kb3c7XG59KTogUHJvbWlzZTx2b2lkPiB7XG5cdGxldCB0YXJnZXRXaW5kb3c6IE9wZW5GaW4uV2luZG93IHwgdW5kZWZpbmVkO1xuXG5cdGlmICghaXNFbXB0eSh0YXJnZXQuaWRlbnRpdHkpKSB7XG5cdFx0dGFyZ2V0V2luZG93ID0gZmluLldpbmRvdy53cmFwU3luYyh0YXJnZXQuaWRlbnRpdHkpO1xuXHR9IGVsc2UgaWYgKCFpc0VtcHR5KHRhcmdldC53aW5kb3cpKSB7XG5cdFx0dGFyZ2V0V2luZG93ID0gdGFyZ2V0LndpbmRvdztcblx0fVxuXG5cdGlmICh0YXJnZXRXaW5kb3cpIHtcblx0XHRjb25zdCB3aW5kb3dTdGF0ZSA9IGF3YWl0IHRhcmdldFdpbmRvdy5nZXRTdGF0ZSgpO1xuXHRcdGlmICh3aW5kb3dTdGF0ZSA9PT0gXCJtaW5pbWl6ZWRcIikge1xuXHRcdFx0YXdhaXQgdGFyZ2V0V2luZG93LnJlc3RvcmUoKTtcblx0XHR9XG5cdFx0aWYgKGF3YWl0IHRhcmdldFdpbmRvdy5pc1Nob3dpbmcoKSkge1xuXHRcdFx0YXdhaXQgdGFyZ2V0V2luZG93LnNldEFzRm9yZWdyb3VuZCgpO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEJyaW5nIGEgcGFnZSB0byB0aGUgZnJvbnQuXG4gKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgcGFnZSB0byBicmluZyB0byB0aGUgZm9udC5cbiAqIEBwYXJhbSB0YXJnZXQuaWRlbnRpdHkgVGhlIGlkZW50aXR5IG9mIHRoZSBwYWdlLlxuICogQHBhcmFtIHRhcmdldC5pZGVudGl0eS53aW5kb3cgVGhlIHdpbmRvdyB3aGljaCBjb250YWlucyB0aGUgcGFnZS5cbiAqIEBwYXJhbSB0YXJnZXQuaWRlbnRpdHkucGFnZUlkIFRoZSBpZCBvZiB0aGUgcGFnZS5cbiAqIEBwYXJhbSB0YXJnZXQucGFnZSBUaGUgcGFnZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBicmluZ1BhZ2VUb0Zyb250KHRhcmdldDoge1xuXHRpZGVudGl0eT86IHsgd2luZG93OiBPcGVuRmluLklkZW50aXR5OyBwYWdlSWQ6IHN0cmluZyB9O1xuXHRwYWdlPzogQXR0YWNoZWRQYWdlO1xufSk6IFByb21pc2U8dm9pZD4ge1xuXHRsZXQgdGFyZ2V0UGFnZTogQXR0YWNoZWRQYWdlIHwgdW5kZWZpbmVkO1xuXHRsZXQgcGFyZW50V2luZG93OiBCcm93c2VyV2luZG93TW9kdWxlIHwgdW5kZWZpbmVkO1xuXHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cblx0Y29uc3QgcGFnZUlkID0gdGFyZ2V0LmlkZW50aXR5Py5wYWdlSWQ7XG5cdGNvbnN0IHdpbmRvdyA9IHRhcmdldD8uaWRlbnRpdHk/LndpbmRvdztcblx0Y29uc3QgcGFnZSA9IHRhcmdldC5wYWdlO1xuXHRpZiAoIWlzRW1wdHkocGFnZUlkKSAmJiAhaXNFbXB0eSh3aW5kb3cpKSB7XG5cdFx0cGFyZW50V2luZG93ID0gcGxhdGZvcm0uQnJvd3Nlci53cmFwU3luYyh3aW5kb3cpO1xuXHRcdHRhcmdldFBhZ2UgPSBhd2FpdCBwYXJlbnRXaW5kb3cuZ2V0UGFnZShwYWdlSWQpO1xuXHR9IGVsc2UgaWYgKCFpc0VtcHR5KHBhZ2UpICYmICFpc0VtcHR5KHBhZ2UucGFyZW50SWRlbnRpdHkpKSB7XG5cdFx0dGFyZ2V0UGFnZSA9IHBhZ2U7XG5cdFx0cGFyZW50V2luZG93ID0gcGxhdGZvcm0uQnJvd3Nlci53cmFwU3luYyhwYWdlLnBhcmVudElkZW50aXR5KTtcblx0fVxuXG5cdGlmICghaXNFbXB0eShwYXJlbnRXaW5kb3cpKSB7XG5cdFx0aWYgKCFpc0VtcHR5KHRhcmdldFBhZ2UpKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBwYWdlcyA9IGF3YWl0IHBhcmVudFdpbmRvdy5nZXRQYWdlcygpO1xuXHRcdFx0XHRpZiAocGFnZXMubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRcdGF3YWl0IHBhcmVudFdpbmRvdy5zZXRBY3RpdmVQYWdlKHRhcmdldFBhZ2UucGFnZUlkKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCB7XG5cdFx0XHRcdC8vIHRoaXMgd2luZG93IG1heSBvbmx5IHN1cHBvcnQgYSBzaW5nbGUgcGFnZS5cblx0XHRcdH1cblx0XHR9XG5cdFx0YXdhaXQgYnJpbmdXaW5kb3dUb0Zyb250KHsgaWRlbnRpdHk6IHBhcmVudFdpbmRvdy5pZGVudGl0eSB9KTtcblx0fVxufVxuXG4vKipcbiAqIEdldCB0aGUgcGFnZSB3aW5kb3cgY29udGFpbnMgdGhlIHNwZWNpZmllZCB2aWV3LlxuICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdG8gZmluZCB0aGUgY29udGFpbmluZyBwYWdlLlxuICogQHJldHVybnMgVGhlIHBhZ2UgY29udGFpbmluZyB0aGUgdmlldy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFBhZ2VGb3JWaWV3KHZpZXc6IE9wZW5GaW4uVmlldyk6IFByb21pc2U8QXR0YWNoZWRQYWdlIHwgdW5kZWZpbmVkPiB7XG5cdGNvbnN0IHBhcmVudFdpbmRvdzogT3BlbkZpbi5XaW5kb3cgPSBhd2FpdCB2aWV3LmdldEN1cnJlbnRXaW5kb3coKTtcblx0bGV0IHBhZ2VzVG9JbnNwZWN0OiBBdHRhY2hlZFBhZ2VbXSA9IFtdO1xuXHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cblx0aWYgKHBhcmVudFdpbmRvdy5pZGVudGl0eS5uYW1lID09PSBmaW4ubWUuaWRlbnRpdHkudXVpZCkge1xuXHRcdC8vIHRoaXMgdmlldyBpcyBub3QgY3VycmVudGx5IGhvb2tlZCBpbnRvIHRoZSB3aW5kb3cgYXMgdGhlIHBhZ2UgZG9lc24ndCBoYXZlIGZvY3VzXG5cdFx0cGFnZXNUb0luc3BlY3QgPSBhd2FpdCBwbGF0Zm9ybS5Ccm93c2VyLmdldEFsbEF0dGFjaGVkUGFnZXMoKTtcblx0fSBlbHNlIHtcblx0XHRjb25zdCBicm93c2VyV2luZG93ID0gcGxhdGZvcm0uQnJvd3Nlci53cmFwU3luYyhwYXJlbnRXaW5kb3cuaWRlbnRpdHkpO1xuXHRcdHBhZ2VzVG9JbnNwZWN0ID0gYXdhaXQgYnJvd3NlcldpbmRvdy5nZXRQYWdlcygpO1xuXHR9XG5cblx0bGV0IG1hdGNoaW5nUGFnZTogQXR0YWNoZWRQYWdlIHwgdW5kZWZpbmVkO1xuXG5cdGZvciAoY29uc3QgcGFnZSBvZiBwYWdlc1RvSW5zcGVjdCkge1xuXHRcdGNvbnN0IHZpZXdJZHMgPSBmaW5kVmlld05hbWVzKHBhZ2UubGF5b3V0KTtcblx0XHRpZiAodmlld0lkcy5pbmNsdWRlcyh2aWV3LmlkZW50aXR5Lm5hbWUpKSB7XG5cdFx0XHRtYXRjaGluZ1BhZ2UgPSBwYWdlO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG1hdGNoaW5nUGFnZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGJvdW5kcyBvZiB0aGUgc3BlY2lmaWVkIHBhZ2UuXG4gKiBAcGFyYW0gcGFnZUlkIFRoZSBpZiBvZiB0aGUgcGFnZSB0byBnZXQgdGhlIGJvdW5kcyBmb3IuXG4gKiBAcGFyYW0gZnJvbVN0b3JhZ2UgR2V0IHRoZSBib3VuZHMgZnJvbSBzdG9yYWdlIGluc3RlYWQgb2YgdGhlIGFjdHVhbCBwYWdlIGlmIGF2YWlsYWJsZS5cbiAqIEByZXR1cm5zIFRoZSBib3VuZHMgZm9yIHRoZSBwYWdlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UGFnZUJvdW5kcyhcblx0cGFnZUlkOiBzdHJpbmcsXG5cdGZyb21TdG9yYWdlID0gZmFsc2Vcbik6IFByb21pc2U8T3BlbkZpbi5Cb3VuZHMgfCB1bmRlZmluZWQ+IHtcblx0bGV0IGJvdW5kczogT3BlbkZpbi5Cb3VuZHMgfCB1bmRlZmluZWQ7XG5cdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0aWYgKGZyb21TdG9yYWdlKSB7XG5cdFx0Y29uc3QgcGFnZSA9IGF3YWl0IHBsYXRmb3JtLlN0b3JhZ2UuZ2V0UGFnZShwYWdlSWQpO1xuXHRcdGlmICghaXNFbXB0eShwYWdlPy5jdXN0b21EYXRhPy53aW5kb3dCb3VuZHMpKSB7XG5cdFx0XHRyZXR1cm4gcGFnZT8uY3VzdG9tRGF0YT8ud2luZG93Qm91bmRzO1xuXHRcdH1cblx0fVxuXG5cdGNvbnN0IHBhZ2VzID0gYXdhaXQgcGxhdGZvcm0uQnJvd3Nlci5nZXRBbGxBdHRhY2hlZFBhZ2VzKCk7XG5cdGxldCB3aW5kb3dJZDogT3BlbkZpbi5JZGVudGl0eSB8IHVuZGVmaW5lZDtcblxuXHRmb3IgKGNvbnN0IHBhZ2Ugb2YgcGFnZXMpIHtcblx0XHRpZiAocGFnZS5wYWdlSWQgPT09IHBhZ2VJZCkge1xuXHRcdFx0d2luZG93SWQgPSBwYWdlLnBhcmVudElkZW50aXR5O1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0aWYgKGlzRW1wdHkod2luZG93SWQpKSB7XG5cdFx0Ly8gY2hlY2sgdG8gc2VlIGlmIHdlIGFyZSB0YWxraW5nIGFib3V0IGEgc2F2ZWQgcGFnZSB0aGF0IGlzbid0IGN1cnJlbnRseSBvcGVuXG5cdFx0Y29uc3Qgc2F2ZWRQYWdlID0gYXdhaXQgcGxhdGZvcm0uU3RvcmFnZS5nZXRQYWdlKHBhZ2VJZCk7XG5cdFx0aWYgKCFpc0VtcHR5KHNhdmVkUGFnZSkpIHtcblx0XHRcdC8vIHRoZSByZXF1ZXN0ZWQgcGFnZSBpcyBub3QgY3VycmVudGx5IG9wZW4gYnV0IGlzIGEgc2F2ZWQgcGFnZSBzbyB0cnkgYW5kIGZldGNoIGl0IGZyb20gc3RvcmFnZSBhcyBhIGZhbGxiYWNrXG5cdFx0XHRyZXR1cm4gc2F2ZWRQYWdlPy5jdXN0b21EYXRhPy53aW5kb3dCb3VuZHM7XG5cdFx0fVxuXHRcdC8vIGl0IGlzIG5vdCBhbiBhY3RpdmUgcGFnZSBhbmQgaXQgaXNuJ3Qgc2F2ZWQgc28gaXQgaXMgbGlrZWx5IGEgbmV3IGluc3RhbmNlIG9mIGFuIGV4aXN0aW5nIHBhZ2UgKHNhdmUgYXMpXG5cdFx0Ly8gdXNlIHRoZSBjdXJyZW50IHdpbmRvd0lkXG5cdFx0d2luZG93SWQgPSBhd2FpdCBwbGF0Zm9ybS5Ccm93c2VyLmdldExhc3RGb2N1c2VkV2luZG93KCk7XG5cdH1cblxuXHRpZiAoIWlzRW1wdHkod2luZG93SWQpKSB7XG5cdFx0Y29uc3QgaG9zdFdpbmRvdyA9IHBsYXRmb3JtLkJyb3dzZXIud3JhcFN5bmMod2luZG93SWQpO1xuXHRcdGJvdW5kcyA9IGF3YWl0IGhvc3RXaW5kb3cub3BlbmZpbldpbmRvdy5nZXRCb3VuZHMoKTtcblx0fVxuXG5cdHJldHVybiBib3VuZHM7XG59XG5cbi8qKlxuICogTGF1bmNoIGEgcGFnZSBpbiB0aGUgd29ya3NwYWNlLlxuICogQHBhcmFtIHBhZ2UgVGhlIHBhZ2UgdG8gbGF1bmNoLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSBsYXVuY2guXG4gKiBAcGFyYW0gb3B0aW9ucy5ib3VuZHMgVGhlIG9wdGlvbmFsIGJvdW5kcyBmb3IgdGhlIHBhZ2UuXG4gKiBAcGFyYW0gb3B0aW9ucy50YXJnZXRXaW5kb3dJZGVudGl0eSBUaGUgb3B0aW9uYWwgdGFyZ2V0IHdpbmRvdyBmb3IgdGhlIHBhZ2UuXG4gKiBAcGFyYW0gb3B0aW9ucy5jcmVhdGVDb3B5SWZFeGlzdHMgQ3JlYXRlIGEgY29weSBvZiB0aGUgcGFnZSBpZiBpdCBleGlzdHMuXG4gKiBAcGFyYW0gbG9nZ2VyIExvZyBvdXRwdXQgZnJvbSB0aGUgb3BlcmF0aW9uLlxuICogQHJldHVybnMgVGhlIHdpbmRvdyBjcmVhdGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGF1bmNoUGFnZShcblx0cGFnZTogUGFnZSxcblx0b3B0aW9ucz86IHtcblx0XHRib3VuZHM/OiBPcGVuRmluLkJvdW5kcztcblx0XHR0YXJnZXRXaW5kb3dJZGVudGl0eT86IE9wZW5GaW4uSWRlbnRpdHk7XG5cdFx0Y3JlYXRlQ29weUlmRXhpc3RzPzogYm9vbGVhbjtcblx0fSxcblx0bG9nZ2VyPzogTG9nZ2VyXG4pOiBQcm9taXNlPEJyb3dzZXJXaW5kb3dNb2R1bGU+IHtcblx0aWYgKGlzRW1wdHkocGFnZSkpIHtcblx0XHRsb2dnZXI/LmVycm9yKFwiUGFnZSBpcyBlbXB0eSBhbmQgY2Fubm90IGJlIGF0dGFjaGVkIHRvIGEgd2luZG93LlwiKTtcblx0fVxuXG5cdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblxuXHQvLyBGaXJzdCBmaW5kIG91dCBpZiB0aGUgcGFnZSBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIGEgYnJvd3NlciB3aW5kb3dcblx0Y29uc3QgYXR0YWNoZWRQYWdlcyA9IGF3YWl0IHBsYXRmb3JtLkJyb3dzZXIuZ2V0QWxsQXR0YWNoZWRQYWdlcygpO1xuXHRjb25zdCBhdHRhY2hlZFdpbmRvd0lkOiBPcGVuRmluLklkZW50aXR5IHwgdW5kZWZpbmVkID0gYXR0YWNoZWRQYWdlcy5maW5kKChwZykgPT4gcGcucGFnZUlkID09PSBwYWdlLnBhZ2VJZClcblx0XHQ/LnBhcmVudElkZW50aXR5O1xuXG5cdGNvbnN0IHRhcmdldFdpbmRvd0lkZW50aXR5ID0gb3B0aW9ucz8udGFyZ2V0V2luZG93SWRlbnRpdHk7XG5cdGlmICghaXNFbXB0eSh0YXJnZXRXaW5kb3dJZGVudGl0eSkpIHtcblx0XHQvLyBJZiB3ZSBoYXZlIGEgdGFyZ2V0IHdpbmRvdyBpZGVudGl0eSBhbmQgaXRzIG5vdCB0aGUgc2FtZSBhcyBhdHRhY2hlZCB3aW5kb3cgaWRcblx0XHQvLyB0aGVuIGFjdGl2YXRlIHRoZSBleGlzdGluZyB3aW5kb3csIHVubGVzcyB0aGUgY3JlYXRlQ29weSBmbGFnIGlzIHNldFxuXHRcdGlmIChcblx0XHRcdCFpc0VtcHR5KGF0dGFjaGVkV2luZG93SWQpICYmXG5cdFx0XHRhdHRhY2hlZFdpbmRvd0lkLm5hbWUgIT09IHRhcmdldFdpbmRvd0lkZW50aXR5Lm5hbWUgJiZcblx0XHRcdCFvcHRpb25zPy5jcmVhdGVDb3B5SWZFeGlzdHNcblx0XHQpIHtcblx0XHRcdGNvbnN0IGF0dGFjaGVkV2luZG93ID0gcGxhdGZvcm0uQnJvd3Nlci53cmFwU3luYyhhdHRhY2hlZFdpbmRvd0lkKTtcblx0XHRcdGF3YWl0IGF0dGFjaGVkV2luZG93LnNldEFjdGl2ZVBhZ2UocGFnZS5wYWdlSWQpO1xuXHRcdFx0bG9nZ2VyPy53YXJuKFwiQWN0aXZhdGluZyBwYWdlIGluIHdpbmRvdyB3aGljaCBpcyBub3QgdGhlIHNwZWNpZmllZCB0YXJnZXQgd2luZG93XCIsIHtcblx0XHRcdFx0cGFnZUlkOiBwYWdlLnBhZ2VJZCxcblx0XHRcdFx0YXR0YWNoZWRXaW5kb3dJZDogYXR0YWNoZWRXaW5kb3dJZC5uYW1lLFxuXHRcdFx0XHR0YXJnZXRXaW5kb3dJZGVudGl0eTogdGFyZ2V0V2luZG93SWRlbnRpdHkubmFtZVxuXHRcdFx0fSk7XG5cdFx0XHRhd2FpdCBicmluZ1dpbmRvd1RvRnJvbnQoeyBpZGVudGl0eTogYXR0YWNoZWRXaW5kb3cuaWRlbnRpdHkgfSk7XG5cdFx0XHRyZXR1cm4gYXR0YWNoZWRXaW5kb3c7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGFyZ2V0V2luZG93ID0gcGxhdGZvcm0uQnJvd3Nlci53cmFwU3luYyh0YXJnZXRXaW5kb3dJZGVudGl0eSk7XG5cblx0XHRjb25zdCBwYWdlcyA9IGF3YWl0IHRhcmdldFdpbmRvdy5nZXRQYWdlcygpO1xuXHRcdGNvbnN0IGhhc1BhZ2UgPSBwYWdlcy5maW5kKChwZykgPT4gcGcucGFnZUlkID09PSBwYWdlLnBhZ2VJZCk7XG5cblx0XHQvLyBUaGUgdGFyZ2V0IHdpbmRvdyBlaXRoZXIgZG9lcyBub3QgYWxyZWFkeSBoYXZlIHRoZSBwYWdlLCBvciB3ZSBhcmUgY3JlYXRpbmdcblx0XHQvLyBhIGNvcHkgZXZlbiBpdCBpdCBkb2VzIGV4aXN0XG5cdFx0aWYgKCFoYXNQYWdlIHx8IG9wdGlvbnM/LmNyZWF0ZUNvcHlJZkV4aXN0cykge1xuXHRcdFx0aWYgKCFoYXNQYWdlKSB7XG5cdFx0XHRcdGxvZ2dlcj8uaW5mbyhcIlBhZ2UgZG9lcyBub3QgZXhpc3QgaW4gdGFyZ2V0IHdpbmRvdywgYWRkaW5nXCIsIHtcblx0XHRcdFx0XHRwYWdlSWQ6IHBhZ2UucGFnZUlkLFxuXHRcdFx0XHRcdHRhcmdldFdpbmRvd0lkZW50aXR5OiB0YXJnZXRXaW5kb3dJZGVudGl0eS5uYW1lXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyPy5pbmZvKFwiUGFnZSBleGlzdHMgaW4gdGFyZ2V0IHdpbmRvdywgYnV0IGNyZWF0ZUNvcHlJZkV4aXN0cyBmbGFnIGlzIHNldCwgYWRkaW5nXCIsIHtcblx0XHRcdFx0XHRwYWdlSWQ6IHBhZ2UucGFnZUlkLFxuXHRcdFx0XHRcdHRhcmdldFdpbmRvd0lkZW50aXR5OiB0YXJnZXRXaW5kb3dJZGVudGl0eS5uYW1lXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0YXdhaXQgdGFyZ2V0V2luZG93LmFkZFBhZ2UocGFnZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZ2dlcj8uaW5mbyhcIlBhZ2UgZXhpc3RzIGluIHRhcmdldCB3aW5kb3csIGFjdGl2YXRpbmdcIiwge1xuXHRcdFx0XHRwYWdlSWQ6IHBhZ2UucGFnZUlkLFxuXHRcdFx0XHR0YXJnZXRXaW5kb3dJZGVudGl0eTogdGFyZ2V0V2luZG93SWRlbnRpdHkubmFtZVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGF3YWl0IHRhcmdldFdpbmRvdy5zZXRBY3RpdmVQYWdlKHBhZ2UucGFnZUlkKTtcblx0XHRhd2FpdCBicmluZ1dpbmRvd1RvRnJvbnQoeyBpZGVudGl0eTogdGFyZ2V0V2luZG93LmlkZW50aXR5IH0pO1xuXHRcdHJldHVybiB0YXJnZXRXaW5kb3c7XG5cdH1cblxuXHQvLyBUaGVyZSB3YXMgbm8gdGFyZ2V0IHNwZWNpZmllZCBzbyBpZiBpdHMgYWxyZWFkeSBhdHRhY2hlZCB0byBhIHdpbmRvd1xuXHQvLyB3ZSBqdXN0IGFjdGl2YXRlIGl0LCB1bmxlc3MgdGhlIGNyZWF0ZSBjb3B5IGZsYWcgaXMgc2V0XG5cdGlmICghaXNFbXB0eShhdHRhY2hlZFdpbmRvd0lkKSAmJiAhb3B0aW9ucz8uY3JlYXRlQ29weUlmRXhpc3RzKSB7XG5cdFx0Y29uc3QgYXR0YWNoZWRXaW5kb3cgPSBwbGF0Zm9ybS5Ccm93c2VyLndyYXBTeW5jKGF0dGFjaGVkV2luZG93SWQpO1xuXHRcdGxvZ2dlcj8uaW5mbyhcIlBhZ2UgZXhpc3RzIGluIHRhcmdldCB3aW5kb3csIGFjdGl2YXRpbmdcIiwge1xuXHRcdFx0cGFnZUlkOiBwYWdlLnBhZ2VJZCxcblx0XHRcdGF0dGFjaGVkV2luZG93SWQ6IGF0dGFjaGVkV2luZG93SWQubmFtZVxuXHRcdH0pO1xuXHRcdGF3YWl0IGF0dGFjaGVkV2luZG93LnNldEFjdGl2ZVBhZ2UocGFnZS5wYWdlSWQpO1xuXHRcdGF3YWl0IGJyaW5nV2luZG93VG9Gcm9udCh7IGlkZW50aXR5OiBhdHRhY2hlZFdpbmRvdy5pZGVudGl0eSB9KTtcblx0XHRyZXR1cm4gYXR0YWNoZWRXaW5kb3c7XG5cdH1cblxuXHRsZXQgY3VzdG9tQm91bmRzID0gb3B0aW9ucz8uYm91bmRzO1xuXHRpZiAoaXNFbXB0eShjdXN0b21Cb3VuZHMpICYmICFpc0VtcHR5KHBhZ2UuY3VzdG9tRGF0YT8ud2luZG93Qm91bmRzKSkge1xuXHRcdGN1c3RvbUJvdW5kcyA9IHBhZ2UuY3VzdG9tRGF0YS53aW5kb3dCb3VuZHM7XG5cdH1cblxuXHRjb25zdCBuZXdXaW5kb3dSZXF1ZXN0OiBCcm93c2VyQ3JlYXRlV2luZG93UmVxdWVzdCA9IHtcblx0XHR3b3Jrc3BhY2VQbGF0Zm9ybToge1xuXHRcdFx0cGFnZXM6IFtwYWdlXVxuXHRcdH1cblx0fTtcblxuXHRpZiAoIWlzRW1wdHkoY3VzdG9tQm91bmRzKSkge1xuXHRcdGNvbnN0IG1vbml0b3JzID0gYXdhaXQgZmluLlN5c3RlbS5nZXRNb25pdG9ySW5mbygpO1xuXG5cdFx0bmV3V2luZG93UmVxdWVzdC5oZWlnaHQgPSBjdXN0b21Cb3VuZHMuaGVpZ2h0O1xuXHRcdG5ld1dpbmRvd1JlcXVlc3Qud2lkdGggPSBjdXN0b21Cb3VuZHMud2lkdGg7XG5cdFx0bmV3V2luZG93UmVxdWVzdC5kZWZhdWx0SGVpZ2h0ID0gY3VzdG9tQm91bmRzLmhlaWdodDtcblx0XHRuZXdXaW5kb3dSZXF1ZXN0LmRlZmF1bHRXaWR0aCA9IGN1c3RvbUJvdW5kcy53aWR0aDtcblxuXHRcdGlmICghaXNFbXB0eShtb25pdG9ycy52aXJ0dWFsU2NyZWVuKSkge1xuXHRcdFx0aWYgKCFpc0VtcHR5KG1vbml0b3JzLnZpcnR1YWxTY3JlZW4ubGVmdCkgJiYgY3VzdG9tQm91bmRzLmxlZnQgPj0gbW9uaXRvcnMudmlydHVhbFNjcmVlbi5sZWZ0KSB7XG5cdFx0XHRcdG5ld1dpbmRvd1JlcXVlc3QueCA9IGN1c3RvbUJvdW5kcy5sZWZ0O1xuXHRcdFx0XHRuZXdXaW5kb3dSZXF1ZXN0LmRlZmF1bHRMZWZ0ID0gY3VzdG9tQm91bmRzLmxlZnQ7XG5cdFx0XHR9XG5cblx0XHRcdGlmICghaXNFbXB0eShtb25pdG9ycy52aXJ0dWFsU2NyZWVuLnRvcCkgJiYgY3VzdG9tQm91bmRzLnRvcCA+PSBtb25pdG9ycy52aXJ0dWFsU2NyZWVuLnRvcCkge1xuXHRcdFx0XHRuZXdXaW5kb3dSZXF1ZXN0LnkgPSBjdXN0b21Cb3VuZHMudG9wO1xuXHRcdFx0XHRuZXdXaW5kb3dSZXF1ZXN0LmRlZmF1bHRUb3AgPSBjdXN0b21Cb3VuZHMudG9wO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IG5ld1dpbmRvdyA9IGF3YWl0IHBsYXRmb3JtLkJyb3dzZXIuY3JlYXRlV2luZG93KG5ld1dpbmRvd1JlcXVlc3QpO1xuXG5cdGxvZ2dlcj8uaW5mbyhcIlBhZ2UgZG9lcyBub3QgZXhpc3QsIGNyZWF0aW5nIG5ldyB3aW5kb3cgYW5kIGFkZGluZyBwYWdlXCIsIHtcblx0XHRwYWdlSWQ6IHBhZ2UucGFnZUlkLFxuXHRcdG5ld1dpbmRvd0lkOiBuZXdXaW5kb3cuaWRlbnRpdHkubmFtZVxuXHR9KTtcblxuXHRyZXR1cm4gbmV3V2luZG93O1xufVxuXG4vKipcbiAqIExhdW5jaCBhIHZpZXcuXG4gKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0byBsYXVuY2guXG4gKiBAcGFyYW0gdGFyZ2V0SWRlbnRpdHkgVGhlIHRhcmdldCBpZGVudGl0eSBvZiB0aGUgd2luZG93IHRvIGF0dGFjaCB0aGUgdmlldyB0by5cbiAqIEByZXR1cm5zIFRoZSBsYXVuY2hlZCB2aWV3LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGF1bmNoVmlldyhcblx0dmlldzogT3BlbkZpbi5QbGF0Zm9ybVZpZXdDcmVhdGlvbk9wdGlvbnMgfCBzdHJpbmcsXG5cdHRhcmdldElkZW50aXR5PzogT3BlbkZpbi5JZGVudGl0eVxuKTogUHJvbWlzZTxPcGVuRmluLlZpZXc+IHtcblx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRsZXQgdmlld09wdGlvbnM6IE9wZW5GaW4uUGxhdGZvcm1WaWV3Q3JlYXRpb25PcHRpb25zO1xuXHRpZiAodHlwZW9mIHZpZXcgPT09IFwic3RyaW5nXCIpIHtcblx0XHR2aWV3T3B0aW9ucyA9IHsgdXJsOiB2aWV3LCB0YXJnZXQ6IHVuZGVmaW5lZCB9O1xuXHR9IGVsc2Uge1xuXHRcdHZpZXdPcHRpb25zID0gdmlldztcblx0fVxuXHRyZXR1cm4gcGxhdGZvcm0uY3JlYXRlVmlldyh2aWV3T3B0aW9ucywgdGFyZ2V0SWRlbnRpdHkpO1xufVxuXG4vKipcbiAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSB2aXNpYmxlIHdpbmRvd3MgaW4gdGhlIHBsYXRmb3JtLlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgdmlzaWJsZSB3aW5kb3dzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QWxsVmlzaWJsZVdpbmRvd3MoKTogUHJvbWlzZTxPcGVuRmluLldpbmRvd1tdPiB7XG5cdGNvbnN0IHBsYXRmb3JtID0gZmluLlBsYXRmb3JtLmdldEN1cnJlbnRTeW5jKCk7XG5cdGNvbnN0IHdpbmRvd3MgPSBhd2FpdCBwbGF0Zm9ybS5BcHBsaWNhdGlvbi5nZXRDaGlsZFdpbmRvd3MoKTtcblx0Y29uc3QgYXZhaWxhYmxlV2luZG93czogT3BlbkZpbi5XaW5kb3dbXSA9IFtdO1xuXHRmb3IgKGNvbnN0IGN1cnJlbnRXaW5kb3cgb2Ygd2luZG93cykge1xuXHRcdGNvbnN0IGlzU2hvd2luZyA9IGF3YWl0IGN1cnJlbnRXaW5kb3cuaXNTaG93aW5nKCk7XG5cdFx0aWYgKGlzU2hvd2luZykge1xuXHRcdFx0YXZhaWxhYmxlV2luZG93cy5wdXNoKGN1cnJlbnRXaW5kb3cpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gYXZhaWxhYmxlV2luZG93cztcbn1cbiIsImltcG9ydCB7XG5cdE9wZW5FcnJvcixcblx0UmVzb2x2ZUVycm9yLFxuXHR0eXBlIEFwcElkZW50aWZpZXIsXG5cdHR5cGUgQXBwTWV0YWRhdGEsXG5cdHR5cGUgSW1wbGVtZW50YXRpb25NZXRhZGF0YSxcblx0dHlwZSBJbnRlbnRSZXNvbHV0aW9uXG59IGZyb20gXCJAZmlub3MvZmRjM1wiO1xuaW1wb3J0IHR5cGUgT3BlbkZpbiBmcm9tIFwiQG9wZW5maW4vY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBBcHBJbnRlbnQgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgeyBnZXRBcHAsIGdldEFwcHNCeUludGVudCwgZ2V0SW50ZW50LCBnZXRJbnRlbnRzQnlDb250ZXh0IH0gZnJvbSBcIi4uL2FwcHNcIjtcbmltcG9ydCAqIGFzIGNvbm5lY3Rpb25Qcm92aWRlciBmcm9tIFwiLi4vY29ubmVjdGlvbnNcIjtcbmltcG9ydCB7IGhhc0VuZHBvaW50LCByZXF1ZXN0UmVzcG9uc2UgfSBmcm9tIFwiLi4vZW5kcG9pbnRcIjtcbmltcG9ydCB7IG1hcFRvQXBwTWV0YURhdGEgYXMgbWFwVG8xMkFwcE1ldGFEYXRhIH0gZnJvbSBcIi4uL2ZkYzMvMS4yL21hcHBlclwiO1xuaW1wb3J0IHsgbWFwVG9BcHBNZXRhRGF0YSBhcyBtYXBUbzIwQXBwTWV0YURhdGEgfSBmcm9tIFwiLi4vZmRjMy8yLjAvbWFwcGVyXCI7XG5pbXBvcnQgeyBicmluZ1RvRnJvbnQsIGxhdW5jaCB9IGZyb20gXCIuLi9sYXVuY2hcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuLi9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB7IE1BTklGRVNUX1RZUEVTIH0gZnJvbSBcIi4uL21hbmlmZXN0LXR5cGVzXCI7XG5pbXBvcnQgeyBnZXRTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgeyBBcHBzRm9ySW50ZW50LCBQbGF0Zm9ybUFwcCwgUGxhdGZvcm1BcHBJZGVudGlmaWVyIH0gZnJvbSBcIi4uL3NoYXBlcy9hcHAtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IEFwcE1ldGFkYXRhIGFzIEFwcE1ldGFkYXRhVjFQb2ludDIgfSBmcm9tIFwiLi4vc2hhcGVzL2ZkYzMtMS0yLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRBcGlNZXRhZGF0YSxcblx0Q2FwdHVyZUFwaVBheWxvYWQsXG5cdENvbnRleHRUb1Byb2Nlc3MsXG5cdEludGVudE9wdGlvbnMsXG5cdEludGVudFBpY2tlclJlc3BvbnNlLFxuXHRJbnRlbnRSZWdpc3RyYXRpb25FbnRyeSxcblx0SW50ZW50UmVnaXN0cmF0aW9uUGF5bG9hZCxcblx0SW50ZW50UmVzb2x2ZXJPcHRpb25zLFxuXHRJbnRlbnRUYXJnZXRNZXRhRGF0YSxcblx0UHJvY2Vzc2VkQ29udGV4dFxufSBmcm9tIFwiLi4vc2hhcGVzL2ludGVyb3Bicm9rZXItc2hhcGVzXCI7XG5pbXBvcnQgeyBmb3JtYXRFcnJvciwgaXNFbXB0eSwgaXNTdHJpbmcsIGlzU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiSW50ZXJvcEJyb2tlclwiKTtcblxuLyoqXG4gKiBPdmVycmlkZSB0aGUgcGxhdGZvcm0gaW50ZXJvcC5cbiAqIEBwYXJhbSBJbnRlcm9wQnJva2VyIFRoZSBiYXNlIGludGVyb3AgYnJva2VyIGNsYXNzLlxuICogQHJldHVybnMgVGhlIG92ZXJsb2FkZWQgYnJva2VyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJvcE92ZXJyaWRlKFxuXHRJbnRlcm9wQnJva2VyOiBPcGVuRmluLkNvbnN0cnVjdG9yPE9wZW5GaW4uSW50ZXJvcEJyb2tlcj5cbik6IE9wZW5GaW4uSW50ZXJvcEJyb2tlciB7XG5cdC8qKlxuXHQgKiBFeHRlbmQgdGhlIEludGVyb3BCcm9rZXIgdG8gaGFuZGxlIGludGVudHMuXG5cdCAqL1xuXHRjbGFzcyBJbnRlcm9wT3ZlcnJpZGUgZXh0ZW5kcyBJbnRlcm9wQnJva2VyIHtcblx0XHRwcml2YXRlIHJlYWRvbmx5IF90cmFja2VkSW50ZW50SGFuZGxlcnM6IHsgW2tleTogc3RyaW5nXTogSW50ZW50UmVnaXN0cmF0aW9uRW50cnlbXSB9ID0ge307XG5cblx0XHRwcml2YXRlIHJlYWRvbmx5IF9jbGllbnRSZWFkeVJlcXVlc3RzOiB7IFtrZXk6IHN0cmluZ106IChpbnN0YW5jZUlkOiBzdHJpbmcpID0+IHZvaWQgfSA9IHt9O1xuXG5cdFx0cHJpdmF0ZSByZWFkb25seSBfdHJhY2tlZENsaWVudENvbm5lY3Rpb25zOiB7IFtrZXk6IHN0cmluZ106IEFwaU1ldGFkYXRhIH0gPSB7fTtcblxuXHRcdHByaXZhdGUgX2ludGVudFJlc29sdmVyT3B0aW9ucz86IEludGVudFJlc29sdmVyT3B0aW9ucztcblxuXHRcdHByaXZhdGUgX2ludGVudE9wdGlvbnM/OiBJbnRlbnRPcHRpb25zO1xuXG5cdFx0cHJpdmF0ZSBfdW5yZWdpc3RlcmVkQXBwOiBQbGF0Zm9ybUFwcCB8IHVuZGVmaW5lZDtcblxuXHRcdC8qKlxuXHRcdCAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBJbnRlcm9wQnJva2VyLlxuXHRcdCAqL1xuXHRcdGNvbnN0cnVjdG9yKCkge1xuXHRcdFx0c3VwZXIoKTtcblx0XHRcdGxvZ2dlci5pbmZvKFwiSW50ZXJvcCBCcm9rZXIgQ29uc3RydWN0b3IgZmV0Y2hpbmcgc2V0dGluZ3MuXCIpO1xuXHRcdFx0Z2V0U2V0dGluZ3MoKVxuXHRcdFx0XHQudGhlbigoY3VzdG9tU2V0dGluZ3MpID0+IHtcblx0XHRcdFx0XHRpZiAoIWlzRW1wdHkoY3VzdG9tU2V0dGluZ3M/LnBsYXRmb3JtUHJvdmlkZXIpKSB7XG5cdFx0XHRcdFx0XHRsZXQgaW50ZW50UmVzb2x2ZXJPcHRpb25zOiBJbnRlbnRSZXNvbHZlck9wdGlvbnMgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdGlzRW1wdHkoY3VzdG9tU2V0dGluZ3M/LnBsYXRmb3JtUHJvdmlkZXI/LmludGVyb3A/LmludGVudFJlc29sdmVyKSAmJlxuXHRcdFx0XHRcdFx0XHQhaXNFbXB0eShjdXN0b21TZXR0aW5ncz8ucGxhdGZvcm1Qcm92aWRlcj8uaW50ZW50UGlja2VyKVxuXHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdFx0XHRcdFwiUGxlYXNlIHVzZSBwbGF0Zm9ybVByb3ZpZGVyLmludGVyb3AuaW50ZW50UmVzb2x2ZXIgaW5zdGVhZCBvZiBwbGF0Zm9ybVByb3ZpZGVyLmludGVudFBpY2tlciBmb3IgeW91ciBzZXR0aW5ncy5cIlxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRpbnRlbnRSZXNvbHZlck9wdGlvbnMgPSBjdXN0b21TZXR0aW5ncy5wbGF0Zm9ybVByb3ZpZGVyLmludGVudFBpY2tlcjtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGludGVudFJlc29sdmVyT3B0aW9ucyA9IGN1c3RvbVNldHRpbmdzPy5wbGF0Zm9ybVByb3ZpZGVyPy5pbnRlcm9wPy5pbnRlbnRSZXNvbHZlcjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuX2ludGVudFJlc29sdmVyT3B0aW9ucyA9IHtcblx0XHRcdFx0XHRcdFx0aGVpZ2h0OiA3MTUsXG5cdFx0XHRcdFx0XHRcdHdpZHRoOiA2NjUsXG5cdFx0XHRcdFx0XHRcdGZkYzNJbnRlcm9wQXBpOiBcIjIuMFwiLFxuXHRcdFx0XHRcdFx0XHR1cmw6IGAke2N1c3RvbVNldHRpbmdzPy5wbGF0Zm9ybVByb3ZpZGVyPy5yb290VXJsfS9jb21tb24vd2luZG93cy9pbnRlbnRzL2luc3RhbmNlLXBpY2tlci5odG1sYCxcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwiSW50ZW50IFJlc29sdmVyXCIsXG5cdFx0XHRcdFx0XHRcdC4uLmludGVudFJlc29sdmVyT3B0aW9uc1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdHRoaXMuX2ludGVudE9wdGlvbnMgPSB7XG5cdFx0XHRcdFx0XHRcdGludGVudFRpbWVvdXQ6IDUwMDAsXG5cdFx0XHRcdFx0XHRcdC4uLmN1c3RvbVNldHRpbmdzPy5wbGF0Zm9ybVByb3ZpZGVyPy5pbnRlcm9wPy5pbnRlbnRPcHRpb25zXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0dGhpcy5fdW5yZWdpc3RlcmVkQXBwID0gY3VzdG9tU2V0dGluZ3M/LnBsYXRmb3JtUHJvdmlkZXI/LmludGVyb3A/LnVucmVnaXN0ZXJlZEFwcDtcblx0XHRcdFx0XHRcdGlmICghaXNFbXB0eSh0aGlzLl91bnJlZ2lzdGVyZWRBcHApKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX3VucmVnaXN0ZXJlZEFwcC5tYW5pZmVzdFR5cGUgPSBNQU5JRkVTVF9UWVBFUy5VbnJlZ2lzdGVyZWRBcHAuaWQ7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goKGVycm9yKSA9PiB7XG5cdFx0XHRcdFx0bG9nZ2VyLmVycm9yKFwiU2V0dGluZ3MgdW5hdmFpbGFibGUgYXQgYnJva2VyIGNvbnN0cnVjdGlvbi5cIiwgZXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBJcyB0aGUgY29ubmVjdGlvbiBhdXRob3JpemVkLlxuXHRcdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGNsaWVudCBpZGVudGl0eSB0byBjaGVjay5cblx0XHQgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCB0byBzZW5kIHdpdGggdGhlIGF1dGhvcml6YXRpb24gY2hlY2suXG5cdFx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyBhdXRob3JpemVkLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBpc0Nvbm5lY3Rpb25BdXRob3JpemVkKGlkOiBPcGVuRmluLkNsaWVudElkZW50aXR5LCBwYXlsb2FkPzogdW5rbm93bik6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJJbnRlcm9wIGNvbm5lY3Rpb24gYmVpbmcgbWFkZSBieSB0aGUgZm9sbG93aW5nIGlkZW50aXR5LiBBYm91dCB0byB2ZXJpZnkgY29ubmVjdGlvblwiLCBpZCk7XG5cdFx0XHRjb25zdCByZXNwb25zZSA9IGF3YWl0IGNvbm5lY3Rpb25Qcm92aWRlci5pc0Nvbm5lY3Rpb25WYWxpZChpZCwgcGF5bG9hZCwgeyB0eXBlOiBcImJyb2tlclwiIH0pO1xuXHRcdFx0aWYgKCFyZXNwb25zZS5pc1ZhbGlkKSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKGBDb25uZWN0aW9uIHJlcXVlc3QgZnJvbSAke0pTT04uc3RyaW5naWZ5KGlkKX0gd2FzIHZhbGlkYXRlZCBhbmQgcmVqZWN0ZWQuYCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcIkNvbm5lY3Rpb24gdmFsaWRhdGlvbiByZXF1ZXN0IHdhcyB2YWxpZGF0ZWQgYW5kIGlzIHZhbGlkLlwiKTtcblx0XHRcdFx0aWYgKGlkLnV1aWQgPT09IGZpbi5tZS5pZGVudGl0eS51dWlkKSB7XG5cdFx0XHRcdFx0Ly8gZGV0ZXJtaW5lIHdoYXQgYXBpIHRoZXkgYXJlIHVzaW5nLlxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAocmVzcG9uc2UuaXNWYWxpZCkge1xuXHRcdFx0XHRhd2FpdCB0aGlzLmNhcHR1cmVBcGlWZXJzaW9uKGlkLCBwYXlsb2FkIGFzIENhcHR1cmVBcGlQYXlsb2FkKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXNwb25zZS5pc1ZhbGlkO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIElzIHRoZSBhY3Rpb24gYXV0aG9yaXplZC5cblx0XHQgKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gdG8gY2hlY2sgZm9yIGF1dGhvcml6YXRpb24uXG5cdFx0ICogQHBhcmFtIHBheWxvYWQgVGhlIHBheWxvYWQgdG8gc2VuZCB3aGlsZSBjaGVja2luZyB0aGUgYXV0aG9yaXphdGlvbi5cblx0XHQgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIGlkZW50aXR5IG9mIHRoZSBjbGllbnQuXG5cdFx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYWN0aW9uIGlzIGF1dGhvcml6ZWQuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGlzQWN0aW9uQXV0aG9yaXplZChcblx0XHRcdGFjdGlvbjogc3RyaW5nLFxuXHRcdFx0cGF5bG9hZDogdW5rbm93bixcblx0XHRcdGlkZW50aXR5OiBPcGVuRmluLkNsaWVudElkZW50aXR5XG5cdFx0KTogUHJvbWlzZTxib29sZWFuPiB7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIklzIGFjdGlvbiBhdXRob3JpemVkXCIsIGFjdGlvbiwgcGF5bG9hZCwgaWRlbnRpdHkpO1xuXHRcdFx0Ly8gcGVyZm9ybSBjaGVjayBoZXJlIGlmIHlvdSB3aXNoIGFuZCByZXR1cm4gdHJ1ZS9mYWxzZSBhY2NvcmRpbmdseVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogU2V0cyBhIGNvbnRleHQgZm9yIHRoZSBjb250ZXh0IGdyb3VwIG9mIHRoZSBpbmNvbWluZyBjdXJyZW50IGVudGl0eS5cblx0XHQgKiBAcGFyYW0gc2VudENvbnRleHQgTmV3IGNvbnRleHQgdG8gc2V0LlxuXHRcdCAqIEBwYXJhbSBzZW50Q29udGV4dC5jb250ZXh0IFRoZSBjb250ZXh0IHRvIHNlbmQuXG5cdFx0ICogQHBhcmFtIGNsaWVudElkZW50aXR5IElkZW50aXR5IG9mIHRoZSBjbGllbnQgc2VuZGVyLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBzZXRDb250ZXh0KFxuXHRcdFx0c2VudENvbnRleHQ6IHsgY29udGV4dDogT3BlbkZpbi5Db250ZXh0IH0sXG5cdFx0XHRjbGllbnRJZGVudGl0eTogT3BlbkZpbi5DbGllbnRJZGVudGl0eVxuXHRcdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0c2VudENvbnRleHQuY29udGV4dCA9IGF3YWl0IHRoaXMucHJvY2Vzc0NvbnRleHQoc2VudENvbnRleHQuY29udGV4dCk7XG5cdFx0XHRzdXBlci5zZXRDb250ZXh0KHNlbnRDb250ZXh0LCBjbGllbnRJZGVudGl0eSk7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSGFuZGxlIHRoZSBpbmZvcm1hdGlvbiBmb3IgaW50ZW50cyBieSBjb250ZXh0LlxuXHRcdCAqIEBwYXJhbSBjb250ZXh0T3B0aW9ucyBUaGUgY29udGV4dCBvcHRpb25zLlxuXHRcdCAqIEBwYXJhbSBjbGllbnRJZGVudGl0eSBUaGUgY2xpZW50LlxuXHRcdCAqIEByZXR1cm5zIFRoZSBpbnRlbnRzIG1hcHBlZCB0byBhcHAgbWV0YWRhdGEuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGhhbmRsZUluZm9Gb3JJbnRlbnRzQnlDb250ZXh0KFxuXHRcdFx0Y29udGV4dE9wdGlvbnM6IE9wZW5GaW4uQ29udGV4dCB8IE9wZW5GaW4uRmluZEludGVudHNCeUNvbnRleHRPcHRpb25zLFxuXHRcdFx0Y2xpZW50SWRlbnRpdHk6IE9wZW5GaW4uQ2xpZW50SWRlbnRpdHlcblx0XHQpOiBQcm9taXNlPFxuXHRcdFx0e1xuXHRcdFx0XHRpbnRlbnQ6IHsgbmFtZTogc3RyaW5nOyBkaXNwbGF5TmFtZT86IHN0cmluZyB9O1xuXHRcdFx0XHRhcHBzOiAoQXBwTWV0YWRhdGFWMVBvaW50MiB8IEFwcE1ldGFkYXRhKVtdO1xuXHRcdFx0fVtdXG5cdFx0PiB7XG5cdFx0XHRsZXQgcmVxdWVzdGVkQ29udGV4dFR5cGU6IHN0cmluZztcblx0XHRcdGxldCByZXF1ZXN0ZWRSZXN1bHRUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRsZXQgcmVxdWVzdDogeyBjb250ZXh0OiB7IHR5cGU6IHN0cmluZyB9OyBtZXRhZGF0YTogeyByZXN1bHRUeXBlOiBzdHJpbmcgfSB9O1xuXHRcdFx0Y29uc3QgYXBpVmVyc2lvbjogQXBpTWV0YWRhdGEgPSB0aGlzLmdldEFwaVZlcnNpb24oY2xpZW50SWRlbnRpdHkpO1xuXG5cdFx0XHRpZiAoXCJ0eXBlXCIgaW4gY29udGV4dE9wdGlvbnMpIHtcblx0XHRcdFx0cmVxdWVzdGVkQ29udGV4dFR5cGUgPSBjb250ZXh0T3B0aW9ucy50eXBlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmVxdWVzdCA9IGNvbnRleHRPcHRpb25zIGFzIHsgY29udGV4dDogeyB0eXBlOiBzdHJpbmcgfTsgbWV0YWRhdGE6IHsgcmVzdWx0VHlwZTogc3RyaW5nIH0gfTtcblx0XHRcdFx0cmVxdWVzdGVkQ29udGV4dFR5cGUgPSByZXF1ZXN0LmNvbnRleHQudHlwZTtcblx0XHRcdFx0cmVxdWVzdGVkUmVzdWx0VHlwZSA9IHJlcXVlc3QubWV0YWRhdGEucmVzdWx0VHlwZTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGludGVudHMgPSBhd2FpdCBnZXRJbnRlbnRzQnlDb250ZXh0KHJlcXVlc3RlZENvbnRleHRUeXBlLCByZXF1ZXN0ZWRSZXN1bHRUeXBlKTtcblxuXHRcdFx0aWYgKGludGVudHMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihSZXNvbHZlRXJyb3IuTm9BcHBzRm91bmQpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBpc0ZEQzMyID0gYXBpVmVyc2lvbj8udHlwZSA9PT0gXCJmZGMzXCIgJiYgYXBpVmVyc2lvbi52ZXJzaW9uID09PSBcIjIuMFwiO1xuXHRcdFx0Y29uc3QgbWFwcGVkSW50ZW50cyA9IGludGVudHMubWFwKChlbnRyeSkgPT4gKHtcblx0XHRcdFx0aW50ZW50OiBlbnRyeS5pbnRlbnQsXG5cdFx0XHRcdGFwcHM6IGVudHJ5LmFwcHMubWFwKChhcHApID0+IHtcblx0XHRcdFx0XHRsZXQgcmVzdWx0VHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRcdGNvbnN0IGxpc3RlbnNGb3IgPSBhcHA/LmludGVyb3A/LmludGVudHM/Lmxpc3RlbnNGb3I7XG5cdFx0XHRcdFx0aWYgKCFpc0VtcHR5KGxpc3RlbnNGb3IpICYmICFpc0VtcHR5KGxpc3RlbnNGb3JbZW50cnkuaW50ZW50Lm5hbWVdKSkge1xuXHRcdFx0XHRcdFx0cmVzdWx0VHlwZSA9IGxpc3RlbnNGb3JbZW50cnkuaW50ZW50Lm5hbWVdLnJlc3VsdFR5cGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IGFwcEVudHJ5ID0gaXNGREMzMiA/IG1hcFRvMjBBcHBNZXRhRGF0YShhcHAsIHJlc3VsdFR5cGUpIDogbWFwVG8xMkFwcE1ldGFEYXRhKGFwcCk7XG5cblx0XHRcdFx0XHRyZXR1cm4gYXBwRW50cnk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KSk7XG5cblx0XHRcdHJldHVybiBtYXBwZWRJbnRlbnRzO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEhhbmRsZSB0aGUgaW5mb3JtYXRpb24gZm9yIGFuZCBpbnRlbnQuXG5cdFx0ICogQHBhcmFtIGludGVudE9wdGlvbnMgVGhlIGludGVudCBvcHRpb25zLlxuXHRcdCAqIEBwYXJhbSBjbGllbnRJZGVudGl0eSBUaGUgY2xpZW50LlxuXHRcdCAqIEByZXR1cm5zIFRoZSBpbnRlbnRzIG1hcHBlZCB0byBhcHAgbWV0YWRhdGEuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGhhbmRsZUluZm9Gb3JJbnRlbnQoXG5cdFx0XHRpbnRlbnRPcHRpb25zOiBPcGVuRmluLkluZm9Gb3JJbnRlbnRPcHRpb25zLFxuXHRcdFx0Y2xpZW50SWRlbnRpdHk6IE9wZW5GaW4uQ2xpZW50SWRlbnRpdHlcblx0XHQpOiBQcm9taXNlPHtcblx0XHRcdGludGVudDogeyBuYW1lOiBzdHJpbmc7IGRpc3BsYXlOYW1lPzogc3RyaW5nIH07XG5cdFx0XHRhcHBzOiAoQXBwTWV0YWRhdGFWMVBvaW50MiB8IEFwcE1ldGFkYXRhKVtdO1xuXHRcdH0+IHtcblx0XHRcdGNvbnN0IGFwaVZlcnNpb246IEFwaU1ldGFkYXRhID0gdGhpcy5nZXRBcGlWZXJzaW9uKGNsaWVudElkZW50aXR5KTtcblx0XHRcdGxldCBjb250ZXh0VHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdFx0XHRjb25zdCBvcHRDb250ZXh0VHlwZSA9IGludGVudE9wdGlvbnM/LmNvbnRleHQ/LnR5cGU7XG5cdFx0XHRpZiAoIWlzRW1wdHkob3B0Q29udGV4dFR5cGUpICYmIG9wdENvbnRleHRUeXBlICE9PSBcImZkYzMubm90aGluZ1wiKSB7XG5cdFx0XHRcdGNvbnRleHRUeXBlID0gb3B0Q29udGV4dFR5cGU7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldEludGVudChpbnRlbnRPcHRpb25zLm5hbWUsIGNvbnRleHRUeXBlLCBpbnRlbnRPcHRpb25zPy5tZXRhZGF0YT8ucmVzdWx0VHlwZSk7XG5cdFx0XHRpZiAoaXNFbXB0eShyZXN1bHQpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihSZXNvbHZlRXJyb3IuTm9BcHBzRm91bmQpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBpc0ZEQzMyID0gYXBpVmVyc2lvbj8udHlwZSA9PT0gXCJmZGMzXCIgJiYgYXBpVmVyc2lvbi52ZXJzaW9uID09PSBcIjIuMFwiO1xuXHRcdFx0Y29uc3QgcmVzcG9uc2UgPSB7XG5cdFx0XHRcdGludGVudDogcmVzdWx0LmludGVudCxcblx0XHRcdFx0YXBwczogcmVzdWx0LmFwcHMubWFwKChhcHApID0+IHtcblx0XHRcdFx0XHRsZXQgcmVzdWx0VHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRcdGNvbnN0IGxpc3RlbnNGb3IgPSBhcHA/LmludGVyb3A/LmludGVudHM/Lmxpc3RlbnNGb3I7XG5cdFx0XHRcdFx0aWYgKCFpc0VtcHR5KGxpc3RlbnNGb3IpICYmICFpc0VtcHR5KGxpc3RlbnNGb3JbcmVzdWx0LmludGVudC5uYW1lXSkpIHtcblx0XHRcdFx0XHRcdHJlc3VsdFR5cGUgPSBsaXN0ZW5zRm9yW3Jlc3VsdC5pbnRlbnQubmFtZV0ucmVzdWx0VHlwZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgYXBwRW50cnkgPSBpc0ZEQzMyID8gbWFwVG8yMEFwcE1ldGFEYXRhKGFwcCwgcmVzdWx0VHlwZSkgOiBtYXBUbzEyQXBwTWV0YURhdGEoYXBwKTtcblxuXHRcdFx0XHRcdHJldHVybiBhcHBFbnRyeTtcblx0XHRcdFx0fSlcblx0XHRcdH07XG5cblx0XHRcdHJldHVybiByZXNwb25zZTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBIYW5kbGUgdGhlIGZpcmVkIGludGVudCBmb3IgY29udGV4dC5cblx0XHQgKiBAcGFyYW0gY29udGV4dEZvckludGVudCBUaGUgY29udGV4dCBmb3IgdGhlIGludGVudC5cblx0XHQgKiBAcGFyYW0gY29udGV4dEZvckludGVudC50eXBlIFRoZSB0eXBlIG9mIHRoZSBpbnRlbnQuXG5cdFx0ICogQHBhcmFtIGNvbnRleHRGb3JJbnRlbnQubWV0YWRhdGEgVGhlIG1ldGFkYXRhIGZvciB0aGUgaW50ZW50LlxuXHRcdCAqIEBwYXJhbSBjbGllbnRJZGVudGl0eSBUaGUgY2xpZW50IGlkZW50aXR5LlxuXHRcdCAqIEByZXR1cm5zIFRoZSBpbnRlbnQgcmVzb2x1dGlvbi5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgaGFuZGxlRmlyZWRJbnRlbnRGb3JDb250ZXh0KFxuXHRcdFx0Y29udGV4dEZvckludGVudDogeyB0eXBlOiBzdHJpbmc7IG1ldGFkYXRhPzogT3BlbkZpbi5JbnRlbnRNZXRhZGF0YTxJbnRlbnRUYXJnZXRNZXRhRGF0YT4gfSxcblx0XHRcdGNsaWVudElkZW50aXR5OiBPcGVuRmluLkNsaWVudElkZW50aXR5XG5cdFx0KTogUHJvbWlzZTxPbWl0PEludGVudFJlc29sdXRpb24sIFwiZ2V0UmVzdWx0XCI+IHwgeyBzb3VyY2U6IHN0cmluZzsgdmVyc2lvbj86IHN0cmluZyB9PiB7XG5cdFx0XHRjb25zdCB0YXJnZXRBcHBJZGVudGlmaWVyID0gdGhpcy5nZXRBcHBsaWNhdGlvbklkZW50aXR5KGNvbnRleHRGb3JJbnRlbnQubWV0YWRhdGEpO1xuXHRcdFx0Y29uc3QgdXNlc0FwcElkZW50aXR5ID0gdGhpcy51c2VzQXBwbGljYXRpb25JZGVudGl0eShjbGllbnRJZGVudGl0eSk7XG5cdFx0XHRjb25zdCBpbnRlbnQ6IFBhcnRpYWw8T3BlbkZpbi5JbnRlbnQgJiB7IGRpc3BsYXlOYW1lPzogc3RyaW5nIH0+ID0ge1xuXHRcdFx0XHRjb250ZXh0OiBjb250ZXh0Rm9ySW50ZW50XG5cdFx0XHR9O1xuXG5cdFx0XHQvLyBhcHAgc3BlY2lmaWVkIGZsb3dcblx0XHRcdGlmICghaXNFbXB0eSh0YXJnZXRBcHBJZGVudGlmaWVyKSkge1xuXHRcdFx0XHRjb25zdCBpbnRlbnRSZXNvbHZlciA9IGF3YWl0IHRoaXMuaGFuZGxlVGFyZ2V0ZWRJbnRlbnQoXG5cdFx0XHRcdFx0dGFyZ2V0QXBwSWRlbnRpZmllcixcblx0XHRcdFx0XHRpbnRlbnQgYXMgT3BlbkZpbi5JbnRlbnQsXG5cdFx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0XHRjbGllbnRJZGVudGl0eVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5zaGFwZUludGVudFJlc29sdmVyKGludGVudFJlc29sdmVyLCB1c2VzQXBwSWRlbnRpdHkpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBpbnRlbnRzRm9yU2VsZWN0aW9uOiBBcHBzRm9ySW50ZW50W10gPSBhd2FpdCBnZXRJbnRlbnRzQnlDb250ZXh0KGNvbnRleHRGb3JJbnRlbnQudHlwZSk7XG5cblx0XHRcdC8vIGNoZWNrIGZvciB1bnJlZ2lzdGVyZWQgYXBwIGludGVudCBoYW5kbGVycyAoaWYgZW5hYmxlZClcblx0XHRcdGNvbnN0IHVucmVnaXN0ZXJlZEFwcEludGVudHMgPSBhd2FpdCB0aGlzLmdldFVucmVnaXN0ZXJlZEFwcEludGVudEJ5Q29udGV4dChcblx0XHRcdFx0Y29udGV4dEZvckludGVudC50eXBlLFxuXHRcdFx0XHRjbGllbnRJZGVudGl0eVxuXHRcdFx0KTtcblxuXHRcdFx0aWYgKHVucmVnaXN0ZXJlZEFwcEludGVudHMubGVuZ3RoID4gMCAmJiAhaXNFbXB0eSh0aGlzLl91bnJlZ2lzdGVyZWRBcHApKSB7XG5cdFx0XHRcdGNvbnN0IG1hdGNoZWRJbnRlbnRzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGludGVudEZvclNlbGVjdGlvbiBvZiBpbnRlbnRzRm9yU2VsZWN0aW9uKSB7XG5cdFx0XHRcdFx0aWYgKHVucmVnaXN0ZXJlZEFwcEludGVudHMuaW5jbHVkZXMoaW50ZW50Rm9yU2VsZWN0aW9uLmludGVudC5uYW1lKSkge1xuXHRcdFx0XHRcdFx0aW50ZW50Rm9yU2VsZWN0aW9uLmFwcHMucHVzaCh0aGlzLl91bnJlZ2lzdGVyZWRBcHApO1xuXHRcdFx0XHRcdFx0bWF0Y2hlZEludGVudHMucHVzaChpbnRlbnRGb3JTZWxlY3Rpb24uaW50ZW50Lm5hbWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBtaXNzaW5nSW50ZW50TWF0Y2hlcyA9IHVucmVnaXN0ZXJlZEFwcEludGVudHMuZmlsdGVyKFxuXHRcdFx0XHRcdChpbnRlbnROYW1lKSA9PiAhbWF0Y2hlZEludGVudHMuaW5jbHVkZXMoaW50ZW50TmFtZSlcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRmb3IgKGNvbnN0IG1pc3NpbmdJbnRlbnRNYXRjaCBvZiBtaXNzaW5nSW50ZW50TWF0Y2hlcykge1xuXHRcdFx0XHRcdGNvbnN0IG1pc3NpbmdJbnRlbnQgPSB0aGlzLl91bnJlZ2lzdGVyZWRBcHAuaW50ZW50cz8uZmluZChcblx0XHRcdFx0XHRcdChlbnRyeSkgPT4gZW50cnkubmFtZSA9PT0gbWlzc2luZ0ludGVudE1hdGNoXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpZiAobWlzc2luZ0ludGVudCkge1xuXHRcdFx0XHRcdFx0aW50ZW50c0ZvclNlbGVjdGlvbi5wdXNoKHtcblx0XHRcdFx0XHRcdFx0aW50ZW50OiB7IG5hbWU6IG1pc3NpbmdJbnRlbnQubmFtZSwgZGlzcGxheU5hbWU6IG1pc3NpbmdJbnRlbnQuZGlzcGxheU5hbWUgfSxcblx0XHRcdFx0XHRcdFx0YXBwczogW3RoaXMuX3VucmVnaXN0ZXJlZEFwcF1cblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaW50ZW50c0ZvclNlbGVjdGlvbi5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0Ly8gbm8gYXZhaWxhYmxlIGludGVudHMgZm9yIHRoZSBjb250ZXh0XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihSZXNvbHZlRXJyb3IuTm9BcHBzRm91bmQpO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgdXNlclNlbGVjdGlvbjogSW50ZW50UGlja2VyUmVzcG9uc2U7XG5cblx0XHRcdGlmIChpbnRlbnRzRm9yU2VsZWN0aW9uLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRjb25zdCBpbnRlbnRGb3JTZWxlY3Rpb24gPSBpbnRlbnRzRm9yU2VsZWN0aW9uWzBdO1xuXHRcdFx0XHQvLyBvbmx5IG9uZSBpbnRlbnQgbWF0Y2hlcyB0aGUgcGFzc2VkIGNvbnRleHRcblx0XHRcdFx0aW50ZW50Lm5hbWUgPSBpbnRlbnRGb3JTZWxlY3Rpb24uaW50ZW50Lm5hbWU7XG5cdFx0XHRcdGludGVudC5kaXNwbGF5TmFtZSA9IGludGVudEZvclNlbGVjdGlvbi5pbnRlbnQuZGlzcGxheU5hbWU7XG5cblx0XHRcdFx0aWYgKGludGVudEZvclNlbGVjdGlvbi5hcHBzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRcdGNvbnN0IGFwcEluc3RhbmNlcyA9IGF3YWl0IHRoaXMuZmRjM0hhbmRsZUZpbmRJbnN0YW5jZXMoaW50ZW50Rm9yU2VsZWN0aW9uLmFwcHNbMF0sIGNsaWVudElkZW50aXR5KTtcblx0XHRcdFx0XHQvLyBpZiB0aGVyZSBhcmUgbm8gaW5zdGFuY2VzIGxhdW5jaCBhIG5ldyBvbmUgb3RoZXJ3aXNlIHByZXNlbnQgdGhlIGNob2ljZSB0byB0aGUgdXNlclxuXHRcdFx0XHRcdC8vIGJ5IGZhbGxpbmcgdGhyb3VnaCB0byB0aGUgbmV4dCBjb2RlIGJsb2NrXG5cdFx0XHRcdFx0aWYgKGFwcEluc3RhbmNlcy5sZW5ndGggPT09IDAgfHwgdGhpcy5jcmVhdGVOZXdJbnN0YW5jZShpbnRlbnRGb3JTZWxlY3Rpb24uYXBwc1swXSkpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGludGVudFJlc29sdmVyID0gYXdhaXQgdGhpcy5sYXVuY2hBcHBXaXRoSW50ZW50KFxuXHRcdFx0XHRcdFx0XHRpbnRlbnRGb3JTZWxlY3Rpb24uYXBwc1swXSxcblx0XHRcdFx0XHRcdFx0aW50ZW50IGFzIE9wZW5GaW4uSW50ZW50XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0aWYgKGlzRW1wdHkoaW50ZW50UmVzb2x2ZXIpKSB7XG5cdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihSZXNvbHZlRXJyb3IuTm9BcHBzRm91bmQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuc2hhcGVJbnRlbnRSZXNvbHZlcihpbnRlbnRSZXNvbHZlciwgdXNlc0FwcElkZW50aXR5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0dXNlclNlbGVjdGlvbiA9IGF3YWl0IHRoaXMubGF1bmNoSW50ZW50UGlja2VyKHtcblx0XHRcdFx0XHRhcHBzOiBpbnRlbnRzRm9yU2VsZWN0aW9uWzBdLmFwcHMsXG5cdFx0XHRcdFx0aW50ZW50XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dXNlclNlbGVjdGlvbiA9IGF3YWl0IHRoaXMubGF1bmNoSW50ZW50UGlja2VyKHtcblx0XHRcdFx0XHRpbnRlbnQsXG5cdFx0XHRcdFx0aW50ZW50czogaW50ZW50c0ZvclNlbGVjdGlvblxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdC8vIHVwZGF0ZSBpbnRlbnQgd2l0aCB1c2VyIHNlbGVjdGlvblxuXHRcdFx0aW50ZW50LmRpc3BsYXlOYW1lID0gdXNlclNlbGVjdGlvbi5pbnRlbnQuZGlzcGxheU5hbWU7XG5cdFx0XHRpbnRlbnQubmFtZSA9IHVzZXJTZWxlY3Rpb24uaW50ZW50Lm5hbWU7XG5cdFx0XHRjb25zdCBpbnRlbnRSZXNvbHZlciA9IGF3YWl0IHRoaXMuaGFuZGxlSW50ZW50UGlja2VyU2VsZWN0aW9uKHVzZXJTZWxlY3Rpb24sIGludGVudCBhcyBPcGVuRmluLkludGVudCk7XG5cdFx0XHRyZXR1cm4gdGhpcy5zaGFwZUludGVudFJlc29sdmVyKGludGVudFJlc29sdmVyLCB1c2VzQXBwSWRlbnRpdHkpO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEhhbmRsZSBhIGZpcmVkIGludGVudC5cblx0XHQgKiBAcGFyYW0gaW50ZW50IFRoZSBpbnRlbnQgdG8gaGFuZGxlLlxuXHRcdCAqIEBwYXJhbSBjbGllbnRJZGVudGl0eSBUaGUgY2xpZW50IGlkZW50aXR5LlxuXHRcdCAqIEByZXR1cm5zIFRoZSBpbnRlbnQgcmVzb2x1dGlvbi5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgaGFuZGxlRmlyZWRJbnRlbnQoXG5cdFx0XHRpbnRlbnQ6IE9wZW5GaW4uSW50ZW50PE9wZW5GaW4uSW50ZW50TWV0YWRhdGE8SW50ZW50VGFyZ2V0TWV0YURhdGE+Pixcblx0XHRcdGNsaWVudElkZW50aXR5OiBPcGVuRmluLkNsaWVudElkZW50aXR5XG5cdFx0KTogUHJvbWlzZTxPbWl0PEludGVudFJlc29sdXRpb24sIFwiZ2V0UmVzdWx0XCI+IHwgeyBzb3VyY2U6IHN0cmluZzsgdmVyc2lvbj86IHN0cmluZyB9PiB7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIlJlY2VpdmVkIHJlcXVlc3QgZm9yIGEgcmFpc2VkIGludGVudFwiLCBpbnRlbnQpO1xuXHRcdFx0Y29uc3QgdGFyZ2V0QXBwSWRlbnRpZmllciA9IHRoaXMuZ2V0QXBwbGljYXRpb25JZGVudGl0eShpbnRlbnQubWV0YWRhdGEpO1xuXHRcdFx0Y29uc3QgdXNlc0FwcElkZW50aWZpZXIgPSB0aGlzLnVzZXNBcHBsaWNhdGlvbklkZW50aXR5KGNsaWVudElkZW50aXR5KTtcblxuXHRcdFx0aWYgKCFpc0VtcHR5KHRhcmdldEFwcElkZW50aWZpZXIpKSB7XG5cdFx0XHRcdGNvbnN0IGludGVudFJlc29sdmVyID0gYXdhaXQgdGhpcy5oYW5kbGVUYXJnZXRlZEludGVudChcblx0XHRcdFx0XHR0YXJnZXRBcHBJZGVudGlmaWVyLFxuXHRcdFx0XHRcdGludGVudCxcblx0XHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0XHRjbGllbnRJZGVudGl0eVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5zaGFwZUludGVudFJlc29sdmVyKGludGVudFJlc29sdmVyLCB1c2VzQXBwSWRlbnRpZmllcik7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGludGVudEFwcHMgPSBhd2FpdCBnZXRBcHBzQnlJbnRlbnQoaW50ZW50Lm5hbWUpO1xuXG5cdFx0XHRpZiAodGhpcy5fdW5yZWdpc3RlcmVkQXBwICYmIChhd2FpdCB0aGlzLmNhbkFkZFVucmVnaXN0ZXJlZEFwcChjbGllbnRJZGVudGl0eSwgaW50ZW50Lm5hbWUpKSkge1xuXHRcdFx0XHQvLyBXZSBoYXZlIHVucmVnaXN0ZXJlZCBhcHAgaW5zdGFuY2VzIHRoYXQgc3VwcG9ydCB0aGlzIGludGVudCBhbmQgc3VwcG9ydCBmb3IgdW5yZWdpc3RlcmVkIGluc3RhbmNlcyBpcyBlbmFibGVkXG5cdFx0XHRcdGludGVudEFwcHMucHVzaCh0aGlzLl91bnJlZ2lzdGVyZWRBcHApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaW50ZW50QXBwcy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJObyBhcHBzIHN1cHBvcnQgdGhpcyBpbnRlbnRcIik7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihSZXNvbHZlRXJyb3IuTm9BcHBzRm91bmQpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaW50ZW50QXBwcy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0Ly8gaGFuZGxlIHNpbmdsZSBlbnRyeVxuXHRcdFx0XHRjb25zdCBhcHBJbnN0YW5jZXMgPSBhd2FpdCB0aGlzLmZkYzNIYW5kbGVGaW5kSW5zdGFuY2VzKGludGVudEFwcHNbMF0sIGNsaWVudElkZW50aXR5KTtcblx0XHRcdFx0Ly8gaWYgdGhlcmUgYXJlIG5vIGluc3RhbmNlcyBsYXVuY2ggYSBuZXcgb25lIG90aGVyd2lzZSBwcmVzZW50IHRoZSBjaG9pY2UgdG8gdGhlIHVzZXJcblx0XHRcdFx0Ly8gYnkgZmFsbGluZyB0aHJvdWdoIHRvIHRoZSBuZXh0IGNvZGUgYmxvY2tcblx0XHRcdFx0bGV0IGFwcEluc3RhbmNlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRcdFx0aWYgKGFwcEluc3RhbmNlcy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0XHRhcHBJbnN0YW5jZUlkID0gYXBwSW5zdGFuY2VzWzBdLmluc3RhbmNlSWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGFwcEluc3RhbmNlcy5sZW5ndGggPT09IDAgfHxcblx0XHRcdFx0XHR0aGlzLnVzZVNpbmdsZUluc3RhbmNlKGludGVudEFwcHNbMF0pIHx8XG5cdFx0XHRcdFx0dGhpcy5jcmVhdGVOZXdJbnN0YW5jZShpbnRlbnRBcHBzWzBdKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjb25zdCBpbnRlbnRSZXNvbHZlciA9IGF3YWl0IHRoaXMubGF1bmNoQXBwV2l0aEludGVudChpbnRlbnRBcHBzWzBdLCBpbnRlbnQsIGFwcEluc3RhbmNlSWQpO1xuXHRcdFx0XHRcdGlmIChpc0VtcHR5KGludGVudFJlc29sdmVyKSkge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFJlc29sdmVFcnJvci5Ob0FwcHNGb3VuZCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzLnNoYXBlSW50ZW50UmVzb2x2ZXIoaW50ZW50UmVzb2x2ZXIsIHVzZXNBcHBJZGVudGlmaWVyKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCB1c2VyU2VsZWN0aW9uID0gYXdhaXQgdGhpcy5sYXVuY2hJbnRlbnRQaWNrZXIoe1xuXHRcdFx0XHRhcHBzOiBpbnRlbnRBcHBzLFxuXHRcdFx0XHRpbnRlbnRcblx0XHRcdH0pO1xuXG5cdFx0XHRjb25zdCBpbnRlbnRSZXNvbHZlciA9IGF3YWl0IHRoaXMuaGFuZGxlSW50ZW50UGlja2VyU2VsZWN0aW9uKHVzZXJTZWxlY3Rpb24sIGludGVudCk7XG5cdFx0XHRyZXR1cm4gdGhpcy5zaGFwZUludGVudFJlc29sdmVyKGludGVudFJlc29sdmVyLCB1c2VzQXBwSWRlbnRpZmllcik7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSGFuZGxlIHRoZSBGREMzIG9wZW4uXG5cdFx0ICogQHBhcmFtIGZkYzNPcGVuT3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgdGhlIG9wZW4uXG5cdFx0ICogQHBhcmFtIGZkYzNPcGVuT3B0aW9ucy5hcHAgVGhlIHBsYXRmb3JtIGFwcCBvciBpdHMgaWQuXG5cdFx0ICogQHBhcmFtIGZkYzNPcGVuT3B0aW9ucy5jb250ZXh0IFRoZSBjb250ZXh0IGJlaW5nIG9wZW5lZC5cblx0XHQgKiBAcGFyYW0gY2xpZW50SWRlbnRpdHkgVGhlIGNsaWVudCBpZGVudGl0eS5cblx0XHQgKiBAcmV0dXJucyBUaGUgYXBwbGljYXRpb24gaWRlbnRpZmllci5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgZmRjM0hhbmRsZU9wZW4oXG5cdFx0XHRmZGMzT3Blbk9wdGlvbnM6IHsgYXBwOiBQbGF0Zm9ybUFwcCB8IHN0cmluZzsgY29udGV4dDogT3BlbkZpbi5Db250ZXh0IH0sXG5cdFx0XHRjbGllbnRJZGVudGl0eTogT3BlbkZpbi5DbGllbnRJZGVudGl0eVxuXHRcdCk6IFByb21pc2U8QXBwSWRlbnRpZmllcj4ge1xuXHRcdFx0aWYgKGlzRW1wdHkoZmRjM09wZW5PcHRpb25zPy5hcHApKSB7XG5cdFx0XHRcdGxvZ2dlci5lcnJvcihcIkEgcmVxdWVzdCB0byBmZGMzLm9wZW4gZGlkIG5vdCBwYXNzIGFuIGZkYzNPcGVuT3B0aW9ucyBvYmplY3RcIik7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihSZXNvbHZlRXJyb3IuTm9BcHBzRm91bmQpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCByZXF1ZXN0ZWRJZCA9XG5cdFx0XHRcdHR5cGVvZiBmZGMzT3Blbk9wdGlvbnMuYXBwID09PSBcInN0cmluZ1wiXG5cdFx0XHRcdFx0PyBmZGMzT3Blbk9wdGlvbnMuYXBwXG5cdFx0XHRcdFx0OiBmZGMzT3Blbk9wdGlvbnMuYXBwLmFwcElkID8/IGZkYzNPcGVuT3B0aW9ucy5hcHAubmFtZTtcblx0XHRcdGNvbnN0IG9wZW5BcHBJbnRlbnQ6IE9wZW5GaW4uSW50ZW50ID0ge1xuXHRcdFx0XHRjb250ZXh0OiBmZGMzT3Blbk9wdGlvbnMuY29udGV4dCxcblx0XHRcdFx0bmFtZTogXCJPcGVuQXBwXCIsXG5cdFx0XHRcdG1ldGFkYXRhOiB7XG5cdFx0XHRcdFx0dGFyZ2V0OiB7IGFwcElkOiByZXF1ZXN0ZWRJZCB9XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0YEEgcmVxdWVzdCB0byBPcGVuIGhhcyBiZWVuIHNlbnQgdG8gdGhlIHBsYXRmb3JtIGJ5IHV1aWQ6ICR7Y2xpZW50SWRlbnRpdHk/LnV1aWR9LCBuYW1lOiAke2NsaWVudElkZW50aXR5Py5uYW1lfSwgZW5kcG9pbnRJZDogJHtjbGllbnRJZGVudGl0eS5lbmRwb2ludElkfSB3aXRoIHBhc3NlZCBjb250ZXh0OmAsXG5cdFx0XHRcdGZkYzNPcGVuT3B0aW9ucy5jb250ZXh0XG5cdFx0XHQpO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgcmVxdWVzdGVkQXBwID0gYXdhaXQgZ2V0QXBwKHJlcXVlc3RlZElkKTtcblx0XHRcdFx0aWYgKGlzRW1wdHkocmVxdWVzdGVkQXBwKSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihPcGVuRXJyb3IuQXBwTm90Rm91bmQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMubGF1bmNoQXBwV2l0aEludGVudChyZXF1ZXN0ZWRBcHAsIG9wZW5BcHBJbnRlbnQpO1xuXHRcdFx0XHRsZXQgYXBwSWQ6IHN0cmluZztcblx0XHRcdFx0bGV0IGluc3RhbmNlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRcdFx0aWYgKHR5cGVvZiByZXN1bHQuc291cmNlID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0YXBwSWQgPSByZXN1bHQuc291cmNlO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGFwcElkID0gcmVzdWx0LnNvdXJjZS5hcHBJZDtcblx0XHRcdFx0XHRpbnN0YW5jZUlkID0gcmVzdWx0LnNvdXJjZS5pbnN0YW5jZUlkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB7IGFwcElkLCBpbnN0YW5jZUlkIH07XG5cdFx0XHR9IGNhdGNoIChpbnRlbnRFcnJvcikge1xuXHRcdFx0XHRjb25zdCBlcnJvciA9IGZvcm1hdEVycm9yKGludGVudEVycm9yKTtcblx0XHRcdFx0aWYgKGVycm9yID09PSBSZXNvbHZlRXJyb3IuVGFyZ2V0SW5zdGFuY2VVbmF2YWlsYWJsZSB8fCBlcnJvciA9PT0gUmVzb2x2ZUVycm9yLkludGVudERlbGl2ZXJ5RmFpbGVkKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKE9wZW5FcnJvci5BcHBUaW1lb3V0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aHJvdyBpbnRlbnRFcnJvcjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBUaGUgY2xpZW50IGhhcyBkaXNjb25uZWN0ZWQgZm9ybSB0aGUgYnJva2VyLlxuXHRcdCAqIEBwYXJhbSBjbGllbnRJZGVudGl0eSBUaGUgaWRlbnRpdHkgb2YgdGhlIGNsaWVudCB0aGF0IGRpc2Nvbm5lY3RlZC5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgY2xpZW50RGlzY29ubmVjdGVkKGNsaWVudElkZW50aXR5OiBPcGVuRmluLkNsaWVudElkZW50aXR5KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIkNsaWVudCBEaXNjb25uZWN0ZWQuXCIsIGNsaWVudElkZW50aXR5KTtcblxuXHRcdFx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fdHJhY2tlZEludGVudEhhbmRsZXJzKSkge1xuXHRcdFx0XHR0aGlzLl90cmFja2VkSW50ZW50SGFuZGxlcnNba2V5XSA9IHZhbHVlLmZpbHRlcihcblx0XHRcdFx0XHQoZW50cnkpID0+IGVudHJ5LmNsaWVudElkZW50aXR5LmVuZHBvaW50SWQgIT09IGNsaWVudElkZW50aXR5LmVuZHBvaW50SWRcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdHRoaXMucmVtb3ZlQXBpVmVyc2lvbihjbGllbnRJZGVudGl0eSk7XG5cdFx0XHRhd2FpdCBzdXBlci5jbGllbnREaXNjb25uZWN0ZWQoY2xpZW50SWRlbnRpdHkpO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEhhbmRsZSBGREMzIGZpbmQgaW5zdGFuY2VzLlxuXHRcdCAqIEBwYXJhbSBhcHAgVGhlIGFwcCBpZGVudGlmaWVyIHRvIGZpbmQuXG5cdFx0ICogQHBhcmFtIGNsaWVudElkZW50aXR5IFRoZSBjbGllbnQgaWRlbnRpdHkuXG5cdFx0ICogQHJldHVybnMgVGhlIGluc3RhbmNlIG9mIHRoZSBhcHAuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGZkYzNIYW5kbGVGaW5kSW5zdGFuY2VzKFxuXHRcdFx0YXBwOiBBcHBJZGVudGlmaWVyLFxuXHRcdFx0Y2xpZW50SWRlbnRpdHk6IE9wZW5GaW4uQ2xpZW50SWRlbnRpdHlcblx0XHQpOiBQcm9taXNlPEFwcElkZW50aWZpZXJbXT4ge1xuXHRcdFx0Y29uc3QgZW5kcG9pbnRBcHBzOiB7IFtrZXk6IHN0cmluZ106IEFwcElkZW50aWZpZXIgfSA9IHt9O1xuXG5cdFx0XHRmb3IgKGNvbnN0IFssIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl90cmFja2VkSW50ZW50SGFuZGxlcnMpKSB7XG5cdFx0XHRcdGNvbnN0IGVudHJpZXMgPSB2YWx1ZS5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5hcHBJZCA9PT0gYXBwLmFwcElkKTtcblx0XHRcdFx0Zm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG5cdFx0XHRcdFx0ZW5kcG9pbnRBcHBzW2VudHJ5LmNsaWVudElkZW50aXR5LmVuZHBvaW50SWRdID0ge1xuXHRcdFx0XHRcdFx0YXBwSWQ6IGVudHJ5LmFwcElkID8/IFwiXCIsXG5cdFx0XHRcdFx0XHRpbnN0YW5jZUlkOiBlbnRyeS5jbGllbnRJZGVudGl0eS5lbmRwb2ludElkXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gT2JqZWN0LnZhbHVlcyhlbmRwb2ludEFwcHMpO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEhhbmRsZSByZXF1ZXN0IHRvIGdldCBGREMzIGFwcCBtZXRhZGF0YS5cblx0XHQgKiBAcGFyYW0gYXBwIFRoZSBhcHAgdG8gZ2V0IHRoZSBtZXRhZGF0YSBmb3IuXG5cdFx0ICogQHBhcmFtIGNsaWVudElkZW50aXR5IFRoZSBjbGllbnQgaWRlbnRpdHkuXG5cdFx0ICogQHJldHVybnMgVGhlIGFwcCBtZXRhZGF0YS5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgZmRjM0hhbmRsZUdldEFwcE1ldGFkYXRhKFxuXHRcdFx0YXBwOiBBcHBJZGVudGlmaWVyLFxuXHRcdFx0Y2xpZW50SWRlbnRpdHk6IE9wZW5GaW4uQ2xpZW50SWRlbnRpdHlcblx0XHQpOiBQcm9taXNlPEFwcE1ldGFkYXRhPiB7XG5cdFx0XHRsb2dnZXIuaW5mbyhcImZkYzNIYW5kbGVHZXRBcHBNZXRhZGF0YSBjYWxsIHJlY2VpdmVkLlwiLCBhcHAsIGNsaWVudElkZW50aXR5KTtcblx0XHRcdC8vIHRoaXMgd2lsbCBvbmx5IGJlIGNhbGxlZCBieSBGREMzIDIuMCtcblx0XHRcdGxldCBwbGF0Zm9ybUFwcCA9IGF3YWl0IGdldEFwcChhcHAuYXBwSWQpO1xuXHRcdFx0aWYgKGlzRW1wdHkocGxhdGZvcm1BcHApICYmIGFwcC5hcHBJZCA9PT0gdGhpcy5fdW5yZWdpc3RlcmVkQXBwPy5hcHBJZCkge1xuXHRcdFx0XHRwbGF0Zm9ybUFwcCA9IHRoaXMuX3VucmVnaXN0ZXJlZEFwcDtcblx0XHRcdH1cblx0XHRcdGlmICghaXNFbXB0eShwbGF0Zm9ybUFwcCkpIHtcblx0XHRcdFx0Y29uc3QgYXBwTWV0YURhdGE6IEFwcE1ldGFkYXRhID0gbWFwVG8yMEFwcE1ldGFEYXRhKHBsYXRmb3JtQXBwKTtcblx0XHRcdFx0aWYgKCFpc0VtcHR5KGFwcC5pbnN0YW5jZUlkKSkge1xuXHRcdFx0XHRcdGNvbnN0IGFsbENvbm5lY3RlZENsaWVudHMgPSBhd2FpdCB0aGlzLmdldEFsbENsaWVudEluZm8oKTtcblx0XHRcdFx0XHRjb25zdCBjb25uZWN0ZWRDbGllbnQgPSBhbGxDb25uZWN0ZWRDbGllbnRzLmZpbmQoKGNsaWVudCkgPT4gY2xpZW50LmVuZHBvaW50SWQgPT09IGFwcC5pbnN0YW5jZUlkKTtcblx0XHRcdFx0XHRpZiAoIWlzRW1wdHkoY29ubmVjdGVkQ2xpZW50KSAmJiBjb25uZWN0ZWRDbGllbnQudXVpZCA9PT0gZmluLm1lLmlkZW50aXR5LnV1aWQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGlkZW50aXR5ID0geyB1dWlkOiBjb25uZWN0ZWRDbGllbnQudXVpZCwgbmFtZTogY29ubmVjdGVkQ2xpZW50Lm5hbWUgfTtcblx0XHRcdFx0XHRcdGxldCB0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0bGV0IHByZXZpZXc6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdGlmIChjb25uZWN0ZWRDbGllbnQuZW50aXR5VHlwZSA9PT0gXCJ3aW5kb3dcIikge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGluc3RhbmNlV2luZG93ID0gZmluLldpbmRvdy53cmFwU3luYyhpZGVudGl0eSk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgaXNWaXNpYmxlVXNlcldpbmRvdyA9IGF3YWl0IGluc3RhbmNlV2luZG93LmlzU2hvd2luZygpO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChpc1Zpc2libGVVc2VyV2luZG93KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB3aW5kb3dJbmZvID0gYXdhaXQgaW5zdGFuY2VXaW5kb3cuZ2V0SW5mbygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGUgPSB3aW5kb3dJbmZvLnRpdGxlO1xuXHRcdFx0XHRcdFx0XHRcdFx0cHJldmlldyA9IGF3YWl0IHRoaXMuZ2V0UHJldmlld0ltYWdlKGluc3RhbmNlV2luZG93KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgaW5zdGFuY2VWaWV3ID0gZmluLlZpZXcud3JhcFN5bmMoaWRlbnRpdHkpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHZpZXdJbmZvID0gYXdhaXQgaW5zdGFuY2VWaWV3LmdldEluZm8oKTtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZSA9IHZpZXdJbmZvLnRpdGxlO1xuXHRcdFx0XHRcdFx0XHRcdHByZXZpZXcgPSBhd2FpdCB0aGlzLmdldFByZXZpZXdJbWFnZShpbnN0YW5jZVZpZXcpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRcdFx0XHRgQSBjb25uZWN0ZWQgY2xpZW50IGNvdWxkIG5vdCBiZSBxdWVyaWVkIGZvciBkYXRhLiBJdCBjb3VsZCBiZSBpdCBoYXNuJ3QgdW5yZWdpc3RlcmVkIGl0c2VsZiBmcm9tIHRoZSBicm9rZXIuIEFwcElkOiAke2FwcC5hcHBJZH0sIGluc3RhbmNlSWQ6ICR7YXBwLmluc3RhbmNlSWR9LCBuYW1lOiAke2lkZW50aXR5Lm5hbWV9YCxcblx0XHRcdFx0XHRcdFx0XHRlcnJvclxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKCFpc0VtcHR5KHRpdGxlKSkge1xuXHRcdFx0XHRcdFx0XHQvLyBlbnN1cmUgbm8gZWxlbWVudCB0YWdzIGFyZSBwcm92aWRlZCBpbiB0aGUgdGl0bGVcblx0XHRcdFx0XHRcdFx0Ly8gd2UgZG9uJ3Qga25vdyBob3cgdGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJlIHVzZWRcblx0XHRcdFx0XHRcdFx0Ly8gYW5kIHRpdGxlIGhhc24ndCBjb21lIGZyb20gdGhlIGFwcCBkaXJlY3Rvcnlcblx0XHRcdFx0XHRcdFx0dGl0bGUgPSB0aXRsZS5yZXBsYWNlKC88W14+XSo+Py9nbSwgXCJcIik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjb25zdCBpbnN0YW5jZUFwcE1ldGE6IEFwcE1ldGFkYXRhID0ge1xuXHRcdFx0XHRcdFx0XHQuLi5hcHBNZXRhRGF0YSxcblx0XHRcdFx0XHRcdFx0aW5zdGFuY2VJZDogYXBwLmluc3RhbmNlSWQsXG5cdFx0XHRcdFx0XHRcdGluc3RhbmNlTWV0YWRhdGE6IHsgdGl0bGUsIHByZXZpZXcgfVxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdHJldHVybiBpbnN0YW5jZUFwcE1ldGE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhcHBNZXRhRGF0YTtcblx0XHRcdH1cblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlRhcmdldEFwcFVuYXZhaWxhYmxlXCIpO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEhhbmRsZSB0aGUgcmVxdWVzdCB0byBnZXQgRkRDMyBpbmZvLlxuXHRcdCAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkLlxuXHRcdCAqIEBwYXJhbSBwYXlsb2FkLmZkYzNWZXJzaW9uIFRoZSB2ZXJzaW9uIGluZm8gdG8gZ2V0LlxuXHRcdCAqIEBwYXJhbSBjbGllbnRJZGVudGl0eSBUaGUgY2xpZW50IGlkZW50aXR5LlxuXHRcdCAqIEByZXR1cm5zIFRoZSBpbmZvLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBmZGMzSGFuZGxlR2V0SW5mbyhcblx0XHRcdHBheWxvYWQ6IHtcblx0XHRcdFx0ZmRjM1ZlcnNpb246IHN0cmluZztcblx0XHRcdH0sXG5cdFx0XHRjbGllbnRJZGVudGl0eTogT3BlbkZpbi5DbGllbnRJZGVudGl0eVxuXHRcdCk6IFByb21pc2U8dW5rbm93bj4ge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJmZGMzSGFuZGxlR2V0SW5mb1wiLCBwYXlsb2FkLCBjbGllbnRJZGVudGl0eSk7XG5cdFx0XHRpZiAocGF5bG9hZD8uZmRjM1ZlcnNpb24gPT09IFwiMi4wXCIpIHtcblx0XHRcdFx0Y29uc3QgcmVzcG9uc2U6IEltcGxlbWVudGF0aW9uTWV0YWRhdGEgPSAoYXdhaXQgc3VwZXIuZmRjM0hhbmRsZUdldEluZm8oXG5cdFx0XHRcdFx0cGF5bG9hZCxcblx0XHRcdFx0XHRjbGllbnRJZGVudGl0eVxuXHRcdFx0XHQpKSBhcyBJbXBsZW1lbnRhdGlvbk1ldGFkYXRhO1xuXHRcdFx0XHRjb25zdCBhcHBJZCA9IGF3YWl0IHRoaXMubG9va3VwQXBwSWQoY2xpZW50SWRlbnRpdHkpO1xuXHRcdFx0XHRpZiAoIWlzRW1wdHkoYXBwSWQpKSB7XG5cdFx0XHRcdFx0Y29uc3QgdXBkYXRlZFJlc3BvbnNlID0ge1xuXHRcdFx0XHRcdFx0Li4ucmVzcG9uc2UsXG5cdFx0XHRcdFx0XHRhcHBNZXRhZGF0YTogeyBhcHBJZCwgaW5zdGFuY2VJZDogY2xpZW50SWRlbnRpdHkuZW5kcG9pbnRJZCB9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRyZXR1cm4gdXBkYXRlZFJlc3BvbnNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBzdXBlci5mZGMzSGFuZGxlR2V0SW5mbyhwYXlsb2FkLCBjbGllbnRJZGVudGl0eSk7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSGFuZGxlIGFuIGludGVudCBoYW5kbGVyIGJlaW5nIHJlZ2lzdGVyZWQuXG5cdFx0ICogQHBhcmFtIHBheWxvYWQgVGhlIHBheWxvYWQuXG5cdFx0ICogQHBhcmFtIGNsaWVudElkZW50aXR5IFRoZSBjbGllbnQgaWRlbnRpdHkuXG5cdFx0ICogQHJldHVybnMgTm90aGluZy5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgaW50ZW50SGFuZGxlclJlZ2lzdGVyZWQoXG5cdFx0XHRwYXlsb2FkOiBJbnRlbnRSZWdpc3RyYXRpb25QYXlsb2FkLFxuXHRcdFx0Y2xpZW50SWRlbnRpdHk6IE9wZW5GaW4uQ2xpZW50SWRlbnRpdHlcblx0XHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdGxvZ2dlci5pbmZvKFwiaW50ZW50SGFuZGxlclJlZ2lzdGVyZWQ6XCIsIHBheWxvYWQsIGNsaWVudElkZW50aXR5KTtcblx0XHRcdGlmICghaXNFbXB0eShwYXlsb2FkKSkge1xuXHRcdFx0XHRjb25zdCBpbnRlbnROYW1lOiBzdHJpbmcgPSBwYXlsb2FkLmhhbmRsZXJJZC5yZXBsYWNlKFwiaW50ZW50LWhhbmRsZXItXCIsIFwiXCIpO1xuXG5cdFx0XHRcdGxldCB0cmFja2VkSW50ZW50SGFuZGxlciA9IHRoaXMuX3RyYWNrZWRJbnRlbnRIYW5kbGVyc1tpbnRlbnROYW1lXTtcblxuXHRcdFx0XHRpZiAoaXNFbXB0eSh0cmFja2VkSW50ZW50SGFuZGxlcikpIHtcblx0XHRcdFx0XHR0cmFja2VkSW50ZW50SGFuZGxlciA9IFtdO1xuXHRcdFx0XHRcdHRoaXMuX3RyYWNrZWRJbnRlbnRIYW5kbGVyc1tpbnRlbnROYW1lXSA9IHRyYWNrZWRJbnRlbnRIYW5kbGVyO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgdHJhY2tlZEhhbmRsZXIgPSB0aGlzLl90cmFja2VkSW50ZW50SGFuZGxlcnNbaW50ZW50TmFtZV0uZmluZChcblx0XHRcdFx0XHQoZW50cnkpID0+IGVudHJ5LmNsaWVudElkZW50aXR5LmVuZHBvaW50SWQgPT09IGNsaWVudElkZW50aXR5LmVuZHBvaW50SWRcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRpZiAoaXNFbXB0eSh0cmFja2VkSGFuZGxlcikpIHtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0XHRcdGBpbnRlbnRIYW5kbGVyIGVuZHBvaW50IG5vdCByZWdpc3RlcmVkLiBSZWdpc3RlcmluZyAke2NsaWVudElkZW50aXR5LmVuZHBvaW50SWR9IGFnYWluc3QgaW50ZW50ICR7aW50ZW50TmFtZX0gYW5kIGxvb2tpbmcgdXAgYXBwIG5hbWUuYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0Y29uc3QgYXBwSWQgPSBhd2FpdCB0aGlzLmxvb2t1cEFwcElkKGNsaWVudElkZW50aXR5KTtcblxuXHRcdFx0XHRcdGlmIChpc0VtcHR5KGFwcElkKSkge1xuXHRcdFx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0XHRcdFwiVW5hYmxlIHRvIGRldGVybWluZSBhcHAgaWQgYmFzZWQgb24gbmFtZS4gVGhpcyBhcHAgd2lsbCBub3QgYmUgdHJhY2tlZCB2aWEgaW50ZW50IGhhbmRsZXIgcmVnaXN0cmF0aW9uLlwiXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLl90cmFja2VkSW50ZW50SGFuZGxlcnNbaW50ZW50TmFtZV0ucHVzaCh7XG5cdFx0XHRcdFx0XHRmZGMzVmVyc2lvbjogcGF5bG9hZC5mZGMzVmVyc2lvbixcblx0XHRcdFx0XHRcdGNsaWVudElkZW50aXR5LFxuXHRcdFx0XHRcdFx0YXBwSWRcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0XHRcdGBpbnRlbnRIYW5kbGVyIGVuZHBvaW50OiAke2NsaWVudElkZW50aXR5LmVuZHBvaW50SWR9IHJlZ2lzdGVyZWQgYWdhaW5zdCBpbnRlbnQ6ICR7aW50ZW50TmFtZX0gYW5kIGFwcCBJZDogJHthcHBJZH0uYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBjbGllbnRSZWFkeUtleSA9IHRoaXMuZ2V0Q2xpZW50UmVhZHlLZXkoY2xpZW50SWRlbnRpdHksIGludGVudE5hbWUpO1xuXHRcdFx0XHRpZiAoIWlzRW1wdHkodGhpcy5fY2xpZW50UmVhZHlSZXF1ZXN0c1tjbGllbnRSZWFkeUtleV0pKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oXCJSZXNvbHZpbmcgY2xpZW50IHJlYWR5IHJlcXVlc3QuXCIpO1xuXHRcdFx0XHRcdHRoaXMuX2NsaWVudFJlYWR5UmVxdWVzdHNbY2xpZW50UmVhZHlLZXldKGNsaWVudElkZW50aXR5LmVuZHBvaW50SWQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRhd2FpdCBzdXBlci5pbnRlbnRIYW5kbGVyUmVnaXN0ZXJlZChwYXlsb2FkLCBjbGllbnRJZGVudGl0eSk7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogTGF1bmNoIGFuIGFwcCB3aXRoIGludGVudC5cblx0XHQgKiBAcGFyYW0gYXBwIFRoZSBhcHBsaWNhdGlvbiB0byBsYXVuY2guXG5cdFx0ICogQHBhcmFtIGludGVudCBUaGUgaW50ZW50IHRvIG9wZW4gaXQgd2l0aC5cblx0XHQgKiBAcGFyYW0gaW5zdGFuY2VJZCBUaGUgaW5zdGFuY2Ugb2YgdGhlIGFwcC5cblx0XHQgKiBAcmV0dXJucyBUaGUgaW50ZW50IHJlc29sdXRpb24uXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSBhc3luYyBsYXVuY2hBcHBXaXRoSW50ZW50KFxuXHRcdFx0YXBwOiBQbGF0Zm9ybUFwcCxcblx0XHRcdGludGVudDogT3BlbkZpbi5JbnRlbnQsXG5cdFx0XHRpbnN0YW5jZUlkPzogc3RyaW5nXG5cdFx0KTogUHJvbWlzZTxPbWl0PEludGVudFJlc29sdXRpb24sIFwiZ2V0UmVzdWx0XCI+PiB7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIkxhdW5jaGluZyBhcHAgd2l0aCBpbnRlbnRcIik7XG5cdFx0XHRsZXQgcGxhdGZvcm1JZGVudGl0aWVzOiBQbGF0Zm9ybUFwcElkZW50aWZpZXJbXSB8IHVuZGVmaW5lZCA9IFtdO1xuXHRcdFx0bGV0IGV4aXN0aW5nSW5zdGFuY2UgPSB0cnVlO1xuXG5cdFx0XHRpZiAoIWlzRW1wdHkoaW50ZW50Py5jb250ZXh0KSkge1xuXHRcdFx0XHRpbnRlbnQuY29udGV4dCA9IGF3YWl0IHRoaXMucHJvY2Vzc0NvbnRleHQoaW50ZW50LmNvbnRleHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIWlzRW1wdHkoaW5zdGFuY2VJZCkpIHtcblx0XHRcdFx0Ly8gYW4gaW5zdGFuY2Ugb2YgYW4gYXBwbGljYXRpb24gd2FzIHNlbGVjdGVkXG5cdFx0XHRcdGNvbnN0IGFsbENvbm5lY3RlZENsaWVudHMgPSBhd2FpdCB0aGlzLmdldEFsbENsaWVudEluZm8oKTtcblx0XHRcdFx0Y29uc3QgY2xpZW50SW5mbyA9IGFsbENvbm5lY3RlZENsaWVudHMuZmluZChcblx0XHRcdFx0XHQoY29ubmVjdGVkQ2xpZW50KSA9PiBjb25uZWN0ZWRDbGllbnQuZW5kcG9pbnRJZCA9PT0gaW5zdGFuY2VJZFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoIWlzRW1wdHkoY2xpZW50SW5mbykpIHtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhgQXBwIElkOiAke2FwcC5hcHBJZH0gYW5kIGluc3RhbmNlIElkOiAke2luc3RhbmNlSWR9IHdhcyBwcm92aWRlZCBhbmQgZm91bmQuYCk7XG5cdFx0XHRcdFx0Ly8gdGhlIGNvbm5lY3RlZCBpbnN0YW5jZSBpcyBhdmFpbGFibGVcblx0XHRcdFx0XHRwbGF0Zm9ybUlkZW50aXRpZXMucHVzaCh7XG5cdFx0XHRcdFx0XHR1dWlkOiBjbGllbnRJbmZvLnV1aWQsXG5cdFx0XHRcdFx0XHRuYW1lOiBjbGllbnRJbmZvLm5hbWUsXG5cdFx0XHRcdFx0XHRhcHBJZDogYXBwLmFwcElkLFxuXHRcdFx0XHRcdFx0aW5zdGFuY2VJZDogY2xpZW50SW5mby5lbmRwb2ludElkXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFJlc29sdmVFcnJvci5UYXJnZXRJbnN0YW5jZVVuYXZhaWxhYmxlKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAocGxhdGZvcm1JZGVudGl0aWVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRwbGF0Zm9ybUlkZW50aXRpZXMgPSBhd2FpdCBsYXVuY2goYXBwKTtcblx0XHRcdFx0aWYgKCFwbGF0Zm9ybUlkZW50aXRpZXM/Lmxlbmd0aCkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihSZXNvbHZlRXJyb3IuSW50ZW50RGVsaXZlcnlGYWlsZWQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGV4aXN0aW5nSW5zdGFuY2UgPSBmYWxzZTtcblx0XHRcdFx0aWYgKHBsYXRmb3JtSWRlbnRpdGllcy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0XHRjb25zdCBpbnRlbnRUaW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB0aGlzLl9pbnRlbnRPcHRpb25zPy5pbnRlbnRUaW1lb3V0O1xuXHRcdFx0XHRcdC8vIGlmIHdlIGhhdmUgYSBzbmFwc2hvdCBhbmQgbXVsdGlwbGUgaWRlbnRpdGllcyB3ZSB3aWxsIG5vdCB3YWl0IGFzIG5vdCBhbGwgb2YgdGhlbSBtaWdodCBub3Qgc3VwcG9ydCBpbnRlbnRzLlxuXHRcdFx0XHRcdGluc3RhbmNlSWQgPSBhd2FpdCB0aGlzLm9uQ2xpZW50UmVhZHkocGxhdGZvcm1JZGVudGl0aWVzWzBdLCBpbnRlbnQubmFtZSwgaW50ZW50VGltZW91dCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Zm9yIChjb25zdCB0YXJnZXQgb2YgcGxhdGZvcm1JZGVudGl0aWVzKSB7XG5cdFx0XHRcdGF3YWl0IHN1cGVyLnNldEludGVudFRhcmdldChpbnRlbnQsIHRhcmdldCk7XG5cdFx0XHRcdGlmIChleGlzdGluZ0luc3RhbmNlKSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdGF3YWl0IGJyaW5nVG9Gcm9udChhcHAsIFt0YXJnZXRdKTtcblx0XHRcdFx0XHR9IGNhdGNoIChicmluZ1RvRnJvbnRFcnJvcikge1xuXHRcdFx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0XHRcdGBUaGVyZSB3YXMgYW4gZXJyb3IgYnJpbmdpbmcgYXBwOiAke3RhcmdldC5hcHBJZH0sIGFuZCBpbnN0YW5jZSAke3RhcmdldC5pbnN0YW5jZUlkfSB3aXRoIG5hbWU6ICR7dGFyZ2V0Lm5hbWV9IHRvIGZyb250LmAsXG5cdFx0XHRcdFx0XHRcdGJyaW5nVG9Gcm9udEVycm9yXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRzb3VyY2U6IHsgYXBwSWQ6IGFwcC5hcHBJZCwgaW5zdGFuY2VJZCB9LFxuXHRcdFx0XHR2ZXJzaW9uOiBhcHAudmVyc2lvbixcblx0XHRcdFx0aW50ZW50OiBpbnRlbnQubmFtZVxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBMYXVuY2ggdGhlIGludGVudCBwaWNrZXIuXG5cdFx0ICogQHBhcmFtIGxhdW5jaE9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIGxhdW5jaGluZyB0aGUgcGlja2VyLlxuXHRcdCAqIEBwYXJhbSBsYXVuY2hPcHRpb25zLmFwcHMgVGhlIGFwcHMgdG8gcGljayBmcm9tLlxuXHRcdCAqIEBwYXJhbSBsYXVuY2hPcHRpb25zLmludGVudCBUaGUgaW50ZW50IHRvIHBpY2suXG5cdFx0ICogQHBhcmFtIGxhdW5jaE9wdGlvbnMuaW50ZW50cyBUaGUgaW50ZW50cyB0byBwaWNrIGZyb20uXG5cdFx0ICogQHJldHVybnMgVGhlIHJlc3BvbnNlIGZyb20gdGhlIGludGVudCBwaWNrZXIuXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSBhc3luYyBsYXVuY2hJbnRlbnRQaWNrZXIobGF1bmNoT3B0aW9uczoge1xuXHRcdFx0YXBwcz86IFBsYXRmb3JtQXBwW107XG5cdFx0XHRpbnRlbnQ/OiBQYXJ0aWFsPEFwcEludGVudD47XG5cdFx0XHRpbnRlbnRzPzogeyBpbnRlbnQ6IFBhcnRpYWw8QXBwSW50ZW50PjsgYXBwczogUGxhdGZvcm1BcHBbXSB9W107XG5cdFx0fSk6IFByb21pc2U8SW50ZW50UGlja2VyUmVzcG9uc2U+IHtcblx0XHRcdC8vIGxhdW5jaCBhIG5ldyB3aW5kb3cgYW5kIG9wdGlvbmFsbHkgcGFzcyB0aGUgYXZhaWxhYmxlIGludGVudHMgYXMgY3VzdG9tRGF0YS5hcHBzIGFzIHBhcnQgb2YgdGhlIHdpbmRvd1xuXHRcdFx0Ly8gb3B0aW9ucyB0aGUgd2luZG93IGNhbiB0aGVuIHVzZSByYWlzZUludGVudCBhZ2FpbnN0IGEgc3BlY2lmaWMgYXBwICh0aGUgc2VsZWN0ZWQgb25lKS4gdGhpcyBsb2dpYyBydW5zIGluXG5cdFx0XHQvLyB0aGUgcHJvdmlkZXIgc28gd2UgYXJlIHVzaW5nIGl0IGFzIGEgd2F5IG9mIGRldGVybWluaW5nIHRoZSByb290IChzbyBpdCB3b3JrcyB3aXRoIHJvb3QgaG9zdGluZyBhbmRcblx0XHRcdC8vIHN1YmRpcmVjdG9yeSBiYXNlZCBob3N0aW5nIGlmIGEgdXJsIGlzIG5vdCBwcm92aWRlZClcblx0XHRcdGNvbnN0IHdpbk9wdGlvbiA9IHtcblx0XHRcdFx0bmFtZTogXCJpbnRlbnQtcGlja2VyXCIsXG5cdFx0XHRcdGluY2x1ZGVJblNuYXBzaG90OiBmYWxzZSxcblx0XHRcdFx0ZmRjM0ludGVyb3BBcGk6IHRoaXMuX2ludGVudFJlc29sdmVyT3B0aW9ucz8uZmRjM0ludGVyb3BBcGksXG5cdFx0XHRcdGRlZmF1bHRXaWR0aDogdGhpcy5faW50ZW50UmVzb2x2ZXJPcHRpb25zPy53aWR0aCxcblx0XHRcdFx0ZGVmYXVsdEhlaWdodDogdGhpcy5faW50ZW50UmVzb2x2ZXJPcHRpb25zPy5oZWlnaHQsXG5cdFx0XHRcdHNob3dUYXNrYmFySWNvbjogZmFsc2UsXG5cdFx0XHRcdHNhdmVXaW5kb3dTdGF0ZTogZmFsc2UsXG5cdFx0XHRcdGRlZmF1bHRDZW50ZXJlZDogdHJ1ZSxcblx0XHRcdFx0Y3VzdG9tRGF0YToge1xuXHRcdFx0XHRcdHRpdGxlOiB0aGlzLl9pbnRlbnRSZXNvbHZlck9wdGlvbnM/LnRpdGxlLFxuXHRcdFx0XHRcdGFwcHM6IGxhdW5jaE9wdGlvbnMuYXBwcyxcblx0XHRcdFx0XHRpbnRlbnQ6IGxhdW5jaE9wdGlvbnMuaW50ZW50LFxuXHRcdFx0XHRcdGludGVudHM6IGxhdW5jaE9wdGlvbnMuaW50ZW50cyxcblx0XHRcdFx0XHR1bnJlZ2lzdGVyZWRBcHBJZDogdGhpcy5fdW5yZWdpc3RlcmVkQXBwPy5hcHBJZFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR1cmw6IHRoaXMuX2ludGVudFJlc29sdmVyT3B0aW9ucz8udXJsLFxuXHRcdFx0XHRmcmFtZTogZmFsc2UsXG5cdFx0XHRcdGF1dG9TaG93OiB0cnVlLFxuXHRcdFx0XHRhbHdheXNPblRvcDogdHJ1ZVxuXHRcdFx0fTtcblxuXHRcdFx0Y29uc3Qgd2luID0gYXdhaXQgZmluLldpbmRvdy5jcmVhdGUod2luT3B0aW9uKTtcblx0XHRcdGNvbnN0IHdlYldpbmRvdyA9IHdpbi5nZXRXZWJXaW5kb3coKTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZG90LW5vdGF0aW9uLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5cdFx0XHRcdGNvbnN0IHNlbGVjdGVkQXBwSWQgPSBhd2FpdCAod2ViV2luZG93IGFzIHVua25vd24gYXMgYW55KVtcImdldEludGVudFNlbGVjdGlvblwiXSgpO1xuXHRcdFx0XHRyZXR1cm4gc2VsZWN0ZWRBcHBJZCBhcyB7XG5cdFx0XHRcdFx0YXBwSWQ6IHN0cmluZztcblx0XHRcdFx0XHRpbnN0YW5jZUlkPzogc3RyaW5nO1xuXHRcdFx0XHRcdGludGVudDogQXBwSW50ZW50O1xuXHRcdFx0XHR9O1xuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IGZvcm1hdEVycm9yKGVycm9yKTtcblxuXHRcdFx0XHRpZiAobWVzc2FnZT8uaW5jbHVkZXMoUmVzb2x2ZUVycm9yLlVzZXJDYW5jZWxsZWQpKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oXCJBcHAgZm9yIGludGVudCBub3Qgc2VsZWN0ZWQvbGF1bmNoZWQgYnkgdXNlclwiLCBsYXVuY2hPcHRpb25zLmludGVudCk7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxvZ2dlci5lcnJvcihcIlVuZXhwZWN0ZWQgZXJyb3IgZnJvbSBpbnRlbnQgcGlja2VyL3Jlc29sdmVyIGZvciBpbnRlbnRcIiwgbGF1bmNoT3B0aW9ucy5pbnRlbnQpO1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoUmVzb2x2ZUVycm9yLlJlc29sdmVyVW5hdmFpbGFibGUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEhhbmRsZSB0aGUgaW50ZW50IHBpY2tlciBzZWxlY3Rpb24uXG5cdFx0ICogQHBhcmFtIHVzZXJTZWxlY3Rpb24gVGhlIHVzZXIgc2VsZWN0aW9uIGZyb20gdGhlIGludGVudCBwaWNrZXIuXG5cdFx0ICogQHBhcmFtIGludGVudCBUaGUgaW50ZW50LlxuXHRcdCAqIEByZXR1cm5zIFRoZSBpbnRlbnQgcmVzb2x1dGlvbi5cblx0XHQgKi9cblx0XHRwcml2YXRlIGFzeW5jIGhhbmRsZUludGVudFBpY2tlclNlbGVjdGlvbihcblx0XHRcdHVzZXJTZWxlY3Rpb246IEludGVudFBpY2tlclJlc3BvbnNlLFxuXHRcdFx0aW50ZW50OiBPcGVuRmluLkludGVudDxPcGVuRmluLkludGVudE1ldGFkYXRhPEludGVudFRhcmdldE1ldGFEYXRhPj5cblx0XHQpOiBQcm9taXNlPE9taXQ8SW50ZW50UmVzb2x1dGlvbiwgXCJnZXRSZXN1bHRcIj4+IHtcblx0XHRcdGxldCBzZWxlY3RlZEFwcCA9IGF3YWl0IGdldEFwcCh1c2VyU2VsZWN0aW9uLmFwcElkKTtcblx0XHRcdGlmIChpc0VtcHR5KHNlbGVjdGVkQXBwKSAmJiAhaXNFbXB0eSh0aGlzLl91bnJlZ2lzdGVyZWRBcHApKSB7XG5cdFx0XHRcdHNlbGVjdGVkQXBwID0gdGhpcy5fdW5yZWdpc3RlcmVkQXBwO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGlzRW1wdHkoc2VsZWN0ZWRBcHApKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihSZXNvbHZlRXJyb3IuTm9BcHBzRm91bmQpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaW5zdGFuY2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdXNlclNlbGVjdGlvbi5pbnN0YW5jZUlkO1xuXHRcdFx0Y29uc3QgaW50ZW50UmVzb2x2ZXIgPSBhd2FpdCB0aGlzLmxhdW5jaEFwcFdpdGhJbnRlbnQoc2VsZWN0ZWRBcHAsIGludGVudCwgaW5zdGFuY2VJZCk7XG5cdFx0XHRpZiAoaXNFbXB0eShpbnRlbnRSZXNvbHZlcikpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFJlc29sdmVFcnJvci5Ob0FwcHNGb3VuZCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gaW50ZW50UmVzb2x2ZXI7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSGFuZGxlIGEgdGFyZ2V0ZWQgaW50ZW50LlxuXHRcdCAqIEBwYXJhbSB0YXJnZXRBcHBJZGVudGlmaWVyIFRoZSBpZGVudGlmaWVyIGZvciB0aGUgdGFyZ2V0IGFwcC5cblx0XHQgKiBAcGFyYW0gaW50ZW50IFRoZSBpbnRlbnQuXG5cdFx0ICogQHBhcmFtIHRhcmdldEJ5Q29udGV4dCBQZXJmb3JtIHRoZSB0YXJnZXQgYnkgY29udGV4dC5cblx0XHQgKiBAcGFyYW0gY2xpZW50SWRlbnRpdHkgVGhlIGNsaWVudCBpZGVudGl0eS5cblx0XHQgKiBAcmV0dXJucyBUaGUgaW50ZW50IHJlc29sdXRpb24uXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSBhc3luYyBoYW5kbGVUYXJnZXRlZEludGVudChcblx0XHRcdHRhcmdldEFwcElkZW50aWZpZXI6IEFwcElkZW50aWZpZXIsXG5cdFx0XHRpbnRlbnQ6IE9wZW5GaW4uSW50ZW50LFxuXHRcdFx0dGFyZ2V0QnlDb250ZXh0OiBib29sZWFuLFxuXHRcdFx0Y2xpZW50SWRlbnRpdHk6IE9wZW5GaW4uQ2xpZW50SWRlbnRpdHlcblx0XHQpOiBQcm9taXNlPE9taXQ8SW50ZW50UmVzb2x1dGlvbiwgXCJnZXRSZXN1bHRcIj4+IHtcblx0XHRcdC8vIGFwcCBzcGVjaWZpZWQgZmxvd1xuXHRcdFx0Y29uc3QgaW50ZW50c0ZvclNlbGVjdGlvbjogQXBwc0ZvckludGVudFtdID0gW107XG5cdFx0XHRsZXQgdGFyZ2V0QXBwID0gYXdhaXQgZ2V0QXBwKHRhcmdldEFwcElkZW50aWZpZXIuYXBwSWQpO1xuXG5cdFx0XHQvLyBpZiB0aGUgc3BlY2lmaWVkIGFwcCBpc24ndCBhdmFpbGFibGUgdGhlbiBsZXQgdGhlIGNhbGxlciBrbm93XG5cdFx0XHRpZiAoaXNFbXB0eSh0YXJnZXRBcHApKSB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHQhaXNFbXB0eSh0YXJnZXRBcHBJZGVudGlmaWVyLmluc3RhbmNlSWQpICYmXG5cdFx0XHRcdFx0dGFyZ2V0QXBwSWRlbnRpZmllci5hcHBJZCA9PT0gdGhpcy5fdW5yZWdpc3RlcmVkQXBwPy5hcHBJZFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHR0YXJnZXRBcHAgPSB0aGlzLl91bnJlZ2lzdGVyZWRBcHA7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFJlc29sdmVFcnJvci5UYXJnZXRBcHBVbmF2YWlsYWJsZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIGlmIGFuIGluc3RhbmNlSWQgaXMgc3BlY2lmaWVkIHRoZW4gY2hlY2sgdG8gc2VlIGlmIGl0IGlzIHZhbGlkIGFuZCBpZiBpdCBpc24ndCBpbmZvcm0gdGhlIGNhbGxlclxuXHRcdFx0aWYgKCFpc0VtcHR5KHRhcmdldEFwcElkZW50aWZpZXIuaW5zdGFuY2VJZCkpIHtcblx0XHRcdFx0Y29uc3QgYXZhaWxhYmxlQXBwSW5zdGFuY2VzID0gYXdhaXQgdGhpcy5mZGMzSGFuZGxlRmluZEluc3RhbmNlcyh0YXJnZXRBcHBJZGVudGlmaWVyLCBjbGllbnRJZGVudGl0eSk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRhdmFpbGFibGVBcHBJbnN0YW5jZXMubGVuZ3RoID09PSAwIHx8XG5cdFx0XHRcdFx0IWF2YWlsYWJsZUFwcEluc3RhbmNlcy5zb21lKFxuXHRcdFx0XHRcdFx0KGVudHJ5KSA9PlxuXHRcdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuXHRcdFx0XHRcdFx0XHRlbnRyeS5hcHBJZCA9PT0gdGFyZ2V0QXBwSWRlbnRpZmllci5hcHBJZCAmJiBlbnRyeS5pbnN0YW5jZUlkID09PSB0YXJnZXRBcHBJZGVudGlmaWVyLmluc3RhbmNlSWRcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihSZXNvbHZlRXJyb3IuVGFyZ2V0SW5zdGFuY2VVbmF2YWlsYWJsZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHRhcmdldEFwcC5pbnRlbnRzKSB8fCB0YXJnZXRBcHAuaW50ZW50cy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0Ly8gYW4gYXBwIHdhcyBzcGVjaWZpZWQgYnV0IGl0IGRvZXNuJ3QgaGF2ZSBhbnkgaW50ZW50cy4gSW5kaWNhdGUgdGhhdCBzb21ldGhpbmcgaXMgd3Jvbmdcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFJlc29sdmVFcnJvci5UYXJnZXRBcHBVbmF2YWlsYWJsZSk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHN1cHBvcnRlZEludGVudHMgPSB0YXJnZXRBcHAuaW50ZW50cy5maWx0ZXIoKGludGVudEVudHJ5KSA9PiB7XG5cdFx0XHRcdGxldCBjb250ZXh0TWF0Y2g6IGJvb2xlYW4gPSB0cnVlO1xuXHRcdFx0XHRjb25zdCBjb250ZXh0VHlwZSA9IGludGVudC5jb250ZXh0Py50eXBlO1xuXHRcdFx0XHRpZiAoIWlzRW1wdHkoY29udGV4dFR5cGUpKSB7XG5cdFx0XHRcdFx0Y29udGV4dE1hdGNoID0gaW50ZW50RW50cnkuY29udGV4dHM/LmluY2x1ZGVzKGNvbnRleHRUeXBlKTtcblx0XHRcdFx0XHRpZiAodGFyZ2V0QnlDb250ZXh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gY29udGV4dE1hdGNoO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gaW50ZW50RW50cnkubmFtZSA9PT0gaW50ZW50Lm5hbWUgJiYgY29udGV4dE1hdGNoO1xuXHRcdFx0fSk7XG5cblx0XHRcdGlmIChzdXBwb3J0ZWRJbnRlbnRzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHQvLyB0aGUgc3BlY2lmaWVkIGFwcCBkb2VzIGhhdmUgaW50ZW50IHN1cHBvcnQgYnV0IGp1c3Qgbm9uZSB0aGF0IHN1cHBvcnQgdGhpcyBjb250ZXh0IHR5cGVcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFJlc29sdmVFcnJvci5UYXJnZXRBcHBVbmF2YWlsYWJsZSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzdXBwb3J0ZWRJbnRlbnRzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHQvLyBhIHByZWZlcnJlZCBuYW1lIGZvciBhbiBhcHAgd2FzIGdpdmVuIHdpdGggdGhlIGNvbnRleHQgb2JqZWN0XG5cdFx0XHRcdC8vIHRoZSBhcHAgZXhpc3RlZCBhbmQgaXQgc3VwcG9ydGVkIHRoZSBjb250ZXh0IHR5cGUgYW5kIHRoZXJlIHdhcyBvbmx5IG9uZSBpbnRlbnQgdGhhdCBzdXBwb3J0ZWRcblx0XHRcdFx0Ly8gdGhhdCBjb250ZXh0IHR5cGUuIExhdW5jaCB0aGUgYXBwIHdpdGggdGhhdCBpbnRlbnQgb3RoZXJ3aXNlIHByZXNlbnQgdGhlIHVzZXIgd2l0aCBhIGxpc3Qgb2Zcblx0XHRcdFx0Ly8gZXZlcnl0aGluZyB0aGF0IHN1cHBvcnRzIHRoYXQgY29udGV4dCB0eXBlXG5cdFx0XHRcdGludGVudC5uYW1lID0gc3VwcG9ydGVkSW50ZW50c1swXS5uYW1lO1xuXHRcdFx0XHQvLyBjaGVjayBmb3IgaW5zdGFuY2VzXG5cdFx0XHRcdGlmICghaXNFbXB0eSh0YXJnZXRBcHBJZGVudGlmaWVyLmluc3RhbmNlSWQpKSB7XG5cdFx0XHRcdFx0Y29uc3QgaW50ZW50UmVzb2x2ZXIgPSBhd2FpdCB0aGlzLmxhdW5jaEFwcFdpdGhJbnRlbnQoXG5cdFx0XHRcdFx0XHR0YXJnZXRBcHAsXG5cdFx0XHRcdFx0XHRpbnRlbnQsXG5cdFx0XHRcdFx0XHR0YXJnZXRBcHBJZGVudGlmaWVyLmluc3RhbmNlSWRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHJldHVybiBpbnRlbnRSZXNvbHZlcjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBzcGVjaWZpZWRBcHBJbnN0YW5jZXMgPSBhd2FpdCB0aGlzLmZkYzNIYW5kbGVGaW5kSW5zdGFuY2VzKHRhcmdldEFwcCwgY2xpZW50SWRlbnRpdHkpO1xuXHRcdFx0XHRpZiAoc3BlY2lmaWVkQXBwSW5zdGFuY2VzLmxlbmd0aCA9PT0gMCB8fCB0aGlzLmNyZWF0ZU5ld0luc3RhbmNlKHRhcmdldEFwcCkpIHtcblx0XHRcdFx0XHRjb25zdCBpbnRlbnRSZXNvbHZlciA9IGF3YWl0IHRoaXMubGF1bmNoQXBwV2l0aEludGVudCh0YXJnZXRBcHAsIGludGVudCk7XG5cdFx0XHRcdFx0aWYgKGlzRW1wdHkoaW50ZW50UmVzb2x2ZXIpKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoUmVzb2x2ZUVycm9yLkludGVudERlbGl2ZXJ5RmFpbGVkKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIGludGVudFJlc29sdmVyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoY29uc3Qgc3VwcG9ydGVkSW50ZW50IG9mIHN1cHBvcnRlZEludGVudHMpIHtcblx0XHRcdFx0Y29uc3QgYXBwRm9ySW50ZW50OiBBcHBzRm9ySW50ZW50ID0ge1xuXHRcdFx0XHRcdGFwcHM6IFt0YXJnZXRBcHBdLFxuXHRcdFx0XHRcdGludGVudDogeyBuYW1lOiBzdXBwb3J0ZWRJbnRlbnQubmFtZSwgZGlzcGxheU5hbWU6IHN1cHBvcnRlZEludGVudC5kaXNwbGF5TmFtZSB9XG5cdFx0XHRcdH07XG5cdFx0XHRcdGludGVudHNGb3JTZWxlY3Rpb24ucHVzaChhcHBGb3JJbnRlbnQpO1xuXHRcdFx0fVxuXHRcdFx0bGV0IHVzZXJTZWxlY3Rpb246IEludGVudFBpY2tlclJlc3BvbnNlO1xuXHRcdFx0aWYgKGludGVudHNGb3JTZWxlY3Rpb24ubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHQhaXNTdHJpbmdWYWx1ZShpbnRlbnQubmFtZSkgJiZcblx0XHRcdFx0XHQhaXNFbXB0eShpbnRlbnRzRm9yU2VsZWN0aW9uWzBdPy5pbnRlbnQ/Lm5hbWUpICYmXG5cdFx0XHRcdFx0IWlzRW1wdHkoaW50ZW50Py5jb250ZXh0KSAmJlxuXHRcdFx0XHRcdCFpc0VtcHR5KGludGVudD8uY29udGV4dD8udHlwZSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFx0XHRgQSByZXF1ZXN0IHRvIHJhaXNlIGFuIGludGVudCB3YXMgcGFzc2VkIGFuZCB0aGUgaW50ZW50IG5hbWUgd2FzIG5vdCBwYXNzZWQgYnV0IGEgY29udGV4dCB3YXMgJHtpbnRlbnQ/LmNvbnRleHQ/LnR5cGV9IHdpdGggMSBtYXRjaGluZyBpbnRlbnQuIE5hbWU6ICR7aW50ZW50c0ZvclNlbGVjdGlvblswXT8uaW50ZW50Py5uYW1lfSwgIERpc3BsYXkgTmFtZTogJHtpbnRlbnRzRm9yU2VsZWN0aW9uWzBdPy5pbnRlbnQ/LmRpc3BsYXlOYW1lfS4gVXBkYXRpbmcgaW50ZW50IG9iamVjdC5gXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpbnRlbnQubmFtZSA9IGludGVudHNGb3JTZWxlY3Rpb25bMF0/LmludGVudD8ubmFtZTtcblx0XHRcdFx0fVxuXHRcdFx0XHR1c2VyU2VsZWN0aW9uID0gYXdhaXQgdGhpcy5sYXVuY2hJbnRlbnRQaWNrZXIoe1xuXHRcdFx0XHRcdGFwcHM6IGludGVudHNGb3JTZWxlY3Rpb25bMF0uYXBwcyxcblx0XHRcdFx0XHRpbnRlbnRcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR1c2VyU2VsZWN0aW9uID0gYXdhaXQgdGhpcy5sYXVuY2hJbnRlbnRQaWNrZXIoe1xuXHRcdFx0XHRcdGludGVudCxcblx0XHRcdFx0XHRpbnRlbnRzOiBpbnRlbnRzRm9yU2VsZWN0aW9uXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoIWlzU3RyaW5nVmFsdWUoaW50ZW50Lm5hbWUpICYmICFpc0VtcHR5KHVzZXJTZWxlY3Rpb24/LmludGVudD8ubmFtZSkpIHtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0XHRcdGBBIHJlcXVlc3QgdG8gcmFpc2UgYW4gaW50ZW50IHdhcyBwYXNzZWQgYW5kIHRoZSBmb2xsb3dpbmcgaW50ZW50IHdhcyBzZWxlY3RlZCAoZnJvbSBhIHNlbGVjdGlvbiBvZiAke2ludGVudHNGb3JTZWxlY3Rpb24ubGVuZ3RofSkuIE5hbWU6ICR7dXNlclNlbGVjdGlvbj8uaW50ZW50Py5uYW1lfSwgIERpc3BsYXkgTmFtZTogJHt1c2VyU2VsZWN0aW9uPy5pbnRlbnQ/LmRpc3BsYXlOYW1lfS4gVXBkYXRpbmcgaW50ZW50IG9iamVjdC5gXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpbnRlbnQubmFtZSA9IHVzZXJTZWxlY3Rpb24/LmludGVudD8ubmFtZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdGhpcy5oYW5kbGVJbnRlbnRQaWNrZXJTZWxlY3Rpb24odXNlclNlbGVjdGlvbiwgaW50ZW50KTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBTaGFwZSB0aGUgaW50ZW50IHJlc29sdmVyLlxuXHRcdCAqIEBwYXJhbSBpbnRlbnRSZXNvbHZlciBUaGUgaW50ZW50IHJlc29sdmVyIHRvIHNoYXBlLlxuXHRcdCAqIEBwYXJhbSB1c2VzQXBwSWRlbnRpZmllciBTaG91bGQgaXQgdXNlIHRoZSBhcHAgaWRlbnRpZmllci5cblx0XHQgKiBAcmV0dXJucyBUaGUgc2hhcGVkIGludGVudCByZXNvbHZlci5cblx0XHQgKi9cblx0XHRwcml2YXRlIHNoYXBlSW50ZW50UmVzb2x2ZXIoXG5cdFx0XHRpbnRlbnRSZXNvbHZlcjogT21pdDxJbnRlbnRSZXNvbHV0aW9uLCBcImdldFJlc3VsdFwiPixcblx0XHRcdHVzZXNBcHBJZGVudGlmaWVyOiBib29sZWFuXG5cdFx0KTogT21pdDxJbnRlbnRSZXNvbHV0aW9uLCBcImdldFJlc3VsdFwiPiB8IHsgc291cmNlOiBzdHJpbmc7IHZlcnNpb24/OiBzdHJpbmcgfSB7XG5cdFx0XHRpZiAodXNlc0FwcElkZW50aWZpZXIpIHtcblx0XHRcdFx0cmV0dXJuIGludGVudFJlc29sdmVyO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHsgc291cmNlOiBpbnRlbnRSZXNvbHZlci5zb3VyY2UuYXBwSWQsIHZlcnNpb246IGludGVudFJlc29sdmVyLnZlcnNpb24gfTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBTaG91bGQgd2UgdXNlIGEgc2luZ2xlIGluc3RhbmNlIG9mIHRoZSBhcHAuXG5cdFx0ICogQHBhcmFtIGFwcCBUaGUgYXBwIHRvIGNoZWNrLlxuXHRcdCAqIEByZXR1cm5zIFRydWUgaWYgd2Ugc2hvdWxkIHVzZSBhIHNpbmdsZSBpbnN0YW5jZS5cblx0XHQgKi9cblx0XHRwcml2YXRlIHVzZVNpbmdsZUluc3RhbmNlKGFwcDogUGxhdGZvcm1BcHApOiBib29sZWFuIHtcblx0XHRcdHJldHVybiBhcHA/Lmluc3RhbmNlTW9kZSA9PT0gXCJzaW5nbGVcIjtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBTaG91bGQgd2UgYWx3YXlzIHVzZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYXBwLlxuXHRcdCAqIEBwYXJhbSBhcHAgVGhlIGFwcCB0byBjaGVjay5cblx0XHQgKiBAcmV0dXJucyBUcnVlIGlmIHdlIHNob3VsZCBhbHdheXMgdXNlIGEgbmV3IGluc3RhbmNlLlxuXHRcdCAqL1xuXHRcdHByaXZhdGUgY3JlYXRlTmV3SW5zdGFuY2UoYXBwOiBQbGF0Zm9ybUFwcCk6IGJvb2xlYW4ge1xuXHRcdFx0cmV0dXJuIGFwcD8uaW5zdGFuY2VNb2RlID09PSBcIm5ld1wiO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEdldCB0aGUgZmRjMyB1c2FnZSBmcm9tIGEgd2luZG93LlxuXHRcdCAqIEBwYXJhbSBpZCBUaGUgaWYgb2YgdGhlIHZpZXcgdG8gZ2V0IHRoZSBpbmZvIGZyb20uXG5cdFx0ICogQHJldHVybnMgVGhlIGFwaSBtZXRhZGF0YS5cblx0XHQgKi9cblx0XHRwcml2YXRlIGFzeW5jIGNhcHR1cmVXaW5kb3dBcGlVc2FnZShpZDogT3BlbkZpbi5DbGllbnRJZGVudGl0eSk6IFByb21pc2U8QXBpTWV0YWRhdGEgfCB1bmRlZmluZWQ+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHRhcmdldCA9IGZpbi5XaW5kb3cud3JhcFN5bmMoaWQpO1xuXHRcdFx0XHRjb25zdCBvcHRpb25zID0gYXdhaXQgdGFyZ2V0LmdldE9wdGlvbnMoKTtcblx0XHRcdFx0aWYgKCFpc0VtcHR5KG9wdGlvbnMuZmRjM0ludGVyb3BBcGkpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdHR5cGU6IFwiZmRjM1wiLFxuXHRcdFx0XHRcdFx0dmVyc2lvbjogb3B0aW9ucy5mZGMzSW50ZXJvcEFwaVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2gge31cblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBHZXQgdGhlIGRjMyB1c2FnZSBmcm9tIGEgdmlldy5cblx0XHQgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSB3aW5kb3cgdG8gZ2V0IHRoZSBpbmZvIGZyb20uXG5cdFx0ICogQHJldHVybnMgVGhlIGFwaSBtZXRhZGF0YS5cblx0XHQgKi9cblx0XHRwcml2YXRlIGFzeW5jIGNhcHR1cmVWaWV3QXBpVXNhZ2UoaWQ6IE9wZW5GaW4uQ2xpZW50SWRlbnRpdHkpOiBQcm9taXNlPEFwaU1ldGFkYXRhIHwgdW5kZWZpbmVkPiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB0YXJnZXQgPSBmaW4uVmlldy53cmFwU3luYyhpZCk7XG5cdFx0XHRcdGNvbnN0IG9wdGlvbnMgPSBhd2FpdCB0YXJnZXQuZ2V0T3B0aW9ucygpO1xuXHRcdFx0XHRpZiAoIWlzRW1wdHkob3B0aW9ucy5mZGMzSW50ZXJvcEFwaSkpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0dHlwZTogXCJmZGMzXCIsXG5cdFx0XHRcdFx0XHR2ZXJzaW9uOiBvcHRpb25zLmZkYzNJbnRlcm9wQXBpXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCB7fVxuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIENhcHR1cmUgdGhlIEFQSSB2ZXJzaW9uLlxuXHRcdCAqIEBwYXJhbSBpZCBUaGUgY2xpZW50IGlkZW50aXR5IHRvIGNhcHR1cmUgZnJvbS5cblx0XHQgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZC5cblx0XHQgKi9cblx0XHRwcml2YXRlIGFzeW5jIGNhcHR1cmVBcGlWZXJzaW9uKFxuXHRcdFx0aWQ6IE9wZW5GaW4uQ2xpZW50SWRlbnRpdHkgJiB7IGNvbm5lY3Rpb25Vcmw/OiBzdHJpbmc7IGVudGl0eVR5cGU/OiBzdHJpbmcgfSxcblx0XHRcdHBheWxvYWQ/OiBDYXB0dXJlQXBpUGF5bG9hZFxuXHRcdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0Y29uc3Qga2V5ID0gYCR7aWQudXVpZH0tJHtpZC5uYW1lfWA7XG5cdFx0XHRsZXQgYXBpVmVyc2lvbjogQXBpTWV0YWRhdGEgfCB1bmRlZmluZWQ7XG5cdFx0XHRpZiAoaXNFbXB0eSh0aGlzLl90cmFja2VkQ2xpZW50Q29ubmVjdGlvbnNba2V5XSkpIHtcblx0XHRcdFx0aWYgKGlkLnV1aWQgIT09IGZpbi5tZS5pZGVudGl0eS51dWlkKSB7XG5cdFx0XHRcdFx0Y29uc3QgcGF5bG9hZEFwaVZlcnNpb24gPSBwYXlsb2FkPy5hcGlWZXJzaW9uO1xuXHRcdFx0XHRcdGlmICghaXNFbXB0eShwYXlsb2FkQXBpVmVyc2lvbikgJiYgIWlzRW1wdHkocGF5bG9hZEFwaVZlcnNpb24/LnR5cGUpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl90cmFja2VkQ2xpZW50Q29ubmVjdGlvbnNba2V5XSA9IHBheWxvYWRBcGlWZXJzaW9uO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoIWlzRW1wdHkoaWQuY29ubmVjdGlvblVybCkpIHtcblx0XHRcdFx0XHRcdC8vIGlmIHRoZXkgaGF2ZW4ndCBzcGVjaWZpZWQgYXBpVmVyc2lvbiBtZXRhIGRhdGEgYW5kIGl0IGlzIGV4dGVybmFsIGFuZCBoYXMgYSB1cmwgdGhlbiB3ZSB3aWxsIGFzc3VtZSBmZGMzIDIuMFxuXHRcdFx0XHRcdFx0dGhpcy5fdHJhY2tlZENsaWVudENvbm5lY3Rpb25zW2tleV0gPSB7IHR5cGU6IFwiZmRjM1wiLCB2ZXJzaW9uOiBcIjIuMFwiIH07XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIGlmIGEgbmF0aXZlIGFwcCBoYXMgc3BlY2lmaWVkIGEgcHJlZmVyZW5jZSB0aHJvdWdoIGFwaVZlcnNpb24gdGhlbiB3ZSBhc3N1bWUgaW50ZXJvcFxuXHRcdFx0XHRcdFx0dGhpcy5fdHJhY2tlZENsaWVudENvbm5lY3Rpb25zW2tleV0gPSB7IHR5cGU6IFwiaW50ZXJvcFwiIH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IGVudGl0eVR5cGUgPSBpZC5lbnRpdHlUeXBlO1xuXHRcdFx0XHRcdGlmICghaXNFbXB0eShlbnRpdHlUeXBlKSkge1xuXHRcdFx0XHRcdFx0c3dpdGNoIChlbnRpdHlUeXBlKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgXCJ3aW5kb3dcIjoge1xuXHRcdFx0XHRcdFx0XHRcdGFwaVZlcnNpb24gPSBhd2FpdCB0aGlzLmNhcHR1cmVXaW5kb3dBcGlVc2FnZShpZCk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Y2FzZSBcInZpZXdcIjoge1xuXHRcdFx0XHRcdFx0XHRcdGFwaVZlcnNpb24gPSBhd2FpdCB0aGlzLmNhcHR1cmVWaWV3QXBpVXNhZ2UoaWQpO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGRlZmF1bHQ6IHtcblx0XHRcdFx0XHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRcdFx0XHRcdGBXZSBjdXJyZW50bHkgZG8gbm90IGNoZWNrIGZvciBlbnRpdHkgdHlwZXMgdGhhdCBhcmUgbm90IHZpZXdzIG9yIHdpbmRvd3MuIEVudGl0eSB0eXBlOiAke2VudGl0eVR5cGV9YFxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YXBpVmVyc2lvbiA9IGF3YWl0IHRoaXMuY2FwdHVyZVZpZXdBcGlVc2FnZShpZCk7XG5cdFx0XHRcdFx0XHRpZiAoaXNFbXB0eShhcGlWZXJzaW9uKSkge1xuXHRcdFx0XHRcdFx0XHQvLyBwZXJoYXBzIGl0IGlzIGEgd2luZG93XG5cdFx0XHRcdFx0XHRcdGFwaVZlcnNpb24gPSBhd2FpdCB0aGlzLmNhcHR1cmVXaW5kb3dBcGlVc2FnZShpZCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWlzRW1wdHkoYXBpVmVyc2lvbikpIHtcblx0XHRcdFx0dGhpcy5fdHJhY2tlZENsaWVudENvbm5lY3Rpb25zW2tleV0gPSBhcGlWZXJzaW9uO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEdldCB0aGUgYXBpIHZlcnNpb24gZm9yIHRoZSBpZGVudGl0eS5cblx0XHQgKiBAcGFyYW0gaWQgVGhlIGlkZW50aXR5IHRvIGdldCB0aGUgYXBpIHZlcnNpb24gZm9yLlxuXHRcdCAqIEByZXR1cm5zIFRoZSBhcGkgbWV0YWRhdGEuXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSBnZXRBcGlWZXJzaW9uKGlkOiBPcGVuRmluLklkZW50aXR5KTogQXBpTWV0YWRhdGEge1xuXHRcdFx0Y29uc3Qga2V5ID0gYCR7aWQudXVpZH0tJHtpZC5uYW1lfWA7XG5cdFx0XHRjb25zdCBhcGlWZXJzaW9uOiBBcGlNZXRhZGF0YSA9IHRoaXMuX3RyYWNrZWRDbGllbnRDb25uZWN0aW9uc1trZXldO1xuXHRcdFx0cmV0dXJuIGFwaVZlcnNpb247XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogUmVtb3ZlIHRoZSBhcGkgdmVyc2lvbiBmb3IgdGhlIGlkZW50aXR5LlxuXHRcdCAqIEBwYXJhbSBpZCBUaGUgaWRlbnRpdHkgdG8gcmVtb3ZlIHRoZSBhcGkgdmVyc2lvbiBmb3IuXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSByZW1vdmVBcGlWZXJzaW9uKGlkOiBPcGVuRmluLklkZW50aXR5KTogdm9pZCB7XG5cdFx0XHRjb25zdCBrZXkgPSBgJHtpZC51dWlkfS0ke2lkLm5hbWV9YDtcblx0XHRcdGRlbGV0ZSB0aGlzLl90cmFja2VkQ2xpZW50Q29ubmVjdGlvbnNba2V5XTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBHZXQgYSBrZXkgdGhhdCBjYW4gYmUgdXNlZCBmb3IgYW4gaWRlbnRpdHkgYW5kIGNsaWVudC5cblx0XHQgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIGlkZW50aXR5IHRvIHVzZSBpbiB0aGUga2V5LlxuXHRcdCAqIEBwYXJhbSBpbnRlbnROYW1lIFRoZSBpbnRlbnQgdG8gdXNlIGluIHRoZSBrZXlcblx0XHQgKiBAcmV0dXJucyBUaGUga2V5LlxuXHRcdCAqL1xuXHRcdHByaXZhdGUgZ2V0Q2xpZW50UmVhZHlLZXkoaWRlbnRpdHk6IE9wZW5GaW4uSWRlbnRpdHksIGludGVudE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0XHRyZXR1cm4gYCR7aWRlbnRpdHkudXVpZH0vJHtpZGVudGl0eS5uYW1lfS8ke2ludGVudE5hbWV9YDtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBIYW5kbGUgY2xpZW50IHJlYWR5IGV2ZW50LlxuXHRcdCAqIEBwYXJhbSBpZGVudGl0eSBUaGUgaWRlbnRpdHkgb2YgdGhlIGNsaWVudC5cblx0XHQgKiBAcGFyYW0gaW50ZW50TmFtZSBUaGUgaW50ZW50IG5hbWUuXG5cdFx0ICogQHBhcmFtIHRpbWVvdXQgVGhlIHRpbWVvdXQgdG8gd2FpdCBmb3IgdGhlIGNsaWVudC5cblx0XHQgKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaWQuXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSBhc3luYyBvbkNsaWVudFJlYWR5KFxuXHRcdFx0aWRlbnRpdHk6IE9wZW5GaW4uSWRlbnRpdHksXG5cdFx0XHRpbnRlbnROYW1lOiBzdHJpbmcsXG5cdFx0XHR0aW1lb3V0OiBudW1iZXIgPSA1MDAwXG5cdFx0KTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0Y29uc3QgcmVnaXN0ZXJlZEhhbmRsZXJzID0gdGhpcy5fdHJhY2tlZEludGVudEhhbmRsZXJzW2ludGVudE5hbWVdO1xuXHRcdFx0XHRsZXQgZXhpc3RpbmdJbnN0YW5jZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGlmICghaXNFbXB0eShyZWdpc3RlcmVkSGFuZGxlcnMpKSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBoYW5kbGVyIG9mIHJlZ2lzdGVyZWRIYW5kbGVycykge1xuXHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRoYW5kbGVyLmNsaWVudElkZW50aXR5LnV1aWQgPT09IGlkZW50aXR5LnV1aWQgJiZcblx0XHRcdFx0XHRcdFx0aGFuZGxlci5jbGllbnRJZGVudGl0eS5uYW1lID09PSBpZGVudGl0eS5uYW1lXG5cdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0ZXhpc3RpbmdJbnN0YW5jZUlkID0gaGFuZGxlci5jbGllbnRJZGVudGl0eS5lbmRwb2ludElkO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFpc0VtcHR5KGV4aXN0aW5nSW5zdGFuY2VJZCkpIHtcblx0XHRcdFx0XHRyZXNvbHZlKGV4aXN0aW5nSW5zdGFuY2VJZCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3Qga2V5ID0gdGhpcy5nZXRDbGllbnRSZWFkeUtleShpZGVudGl0eSwgaW50ZW50TmFtZSk7XG5cdFx0XHRcdGNvbnN0IHRpbWVySWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRpZiAoIWlzRW1wdHkodGhpcy5fY2xpZW50UmVhZHlSZXF1ZXN0c1trZXldKSkge1xuXHRcdFx0XHRcdFx0ZGVsZXRlIHRoaXMuX2NsaWVudFJlYWR5UmVxdWVzdHNba2V5XTtcblx0XHRcdFx0XHRcdHJlamVjdChSZXNvbHZlRXJyb3IuSW50ZW50RGVsaXZlcnlGYWlsZWQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSwgdGltZW91dCk7XG5cdFx0XHRcdHRoaXMuX2NsaWVudFJlYWR5UmVxdWVzdHNba2V5XSA9IChpbnN0YW5jZUlkOiBzdHJpbmcpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRjbGVhclRpbWVvdXQodGltZXJJZCk7XG5cdFx0XHRcdFx0Ly8gY2xlYXIgdGhlIGNhbGxiYWNrIGFzeW5jaHJvbm91c2x5XG5cdFx0XHRcdFx0ZGVsZXRlIHRoaXMuX2NsaWVudFJlYWR5UmVxdWVzdHNba2V5XTtcblx0XHRcdFx0XHRyZXNvbHZlKGluc3RhbmNlSWQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogR2V0IGEgcHJldmlldyBpbWFnZSBmb3IgYSB3aW5kb3cvdmlldy5cblx0XHQgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgaWRlbnRpdHkgdG8gY2FwdHVyZS5cblx0XHQgKiBAcGFyYW0gdGFyZ2V0LmNhcHR1cmVQYWdlIFRoZSBjYXB0dXJlIHBhZ2UgbWV0aG9kIG9mIHRoZSBlbnRpdHkuXG5cdFx0ICogQHBhcmFtIHRhcmdldC5pZGVudGl0eSBUaGUgaWRlbnRpdHkgb2YgdGhlIGVudGl0eSBiZWluZyBjYXB0dXJlZC5cblx0XHQgKiBAcmV0dXJucyBUaGUgY2FwdHVyZWQgcHJldmlldyBpbWFnZS5cblx0XHQgKi9cblx0XHRwcml2YXRlIGFzeW5jIGdldFByZXZpZXdJbWFnZSh0YXJnZXQ6IHtcblx0XHRcdGNhcHR1cmVQYWdlOiAob3B0aW9ucz86IE9wZW5GaW4uQ2FwdHVyZVBhZ2VPcHRpb25zKSA9PiBQcm9taXNlPHN0cmluZz47XG5cdFx0XHRpZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eTtcblx0XHR9KTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHByZXZpZXcgPSBhd2FpdCB0YXJnZXQuY2FwdHVyZVBhZ2UoeyBmb3JtYXQ6IFwianBnXCIsIHF1YWxpdHk6IDg1IH0pO1xuXHRcdFx0XHRpZiAoaXNTdHJpbmdWYWx1ZShwcmV2aWV3KSkge1xuXHRcdFx0XHRcdHJldHVybiBwcmV2aWV3O1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXG5cdFx0XHRcdFx0YEVycm9yIHdoaWxlIHRyeWluZyB0byBjYXB0dXJlIGEgcHJldmlldyBpbWFnZSBvZiB0aGUgdmlldy93aW5kb3c6ICR7dGFyZ2V0LmlkZW50aXR5Lm5hbWV9YCxcblx0XHRcdFx0XHRlcnJvclxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEdldCB0aGUgdW5yZWdpc3RlcmVkIGFwcCBpbnRlbnQgYnkgY29udGV4dC5cblx0XHQgKiBAcGFyYW0gdHlwZSBUaGUgY29udGV4dCB0eXBlIHRvIGdldC5cblx0XHQgKiBAcGFyYW0gY2xpZW50SWRlbnRpdHkgVGhlIGNsaWVudCBpZGVudGl0eS5cblx0XHQgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBzdXBwb3J0ZWQgaW50ZW50cy5cblx0XHQgKi9cblx0XHRwcml2YXRlIGFzeW5jIGdldFVucmVnaXN0ZXJlZEFwcEludGVudEJ5Q29udGV4dChcblx0XHRcdHR5cGU6IHN0cmluZyxcblx0XHRcdGNsaWVudElkZW50aXR5OiBPcGVuRmluLkNsaWVudElkZW50aXR5XG5cdFx0KTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuXHRcdFx0Y29uc3QgaW50ZW50TmFtZXM6IHN0cmluZ1tdID0gW107XG5cdFx0XHRjb25zdCBzdXBwb3J0ZWRJbnRlbnROYW1lczogc3RyaW5nW10gPSBbXTtcblx0XHRcdGlmIChpc0VtcHR5KHRoaXM/Ll91bnJlZ2lzdGVyZWRBcHApKSB7XG5cdFx0XHRcdHJldHVybiBpbnRlbnROYW1lcztcblx0XHRcdH1cblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXM/Ll91bnJlZ2lzdGVyZWRBcHA/LmludGVudHMpKSB7XG5cdFx0XHRcdGZvciAoY29uc3QgaW50ZW50IG9mIHRoaXMuX3VucmVnaXN0ZXJlZEFwcC5pbnRlbnRzKSB7XG5cdFx0XHRcdFx0aWYgKGludGVudC5jb250ZXh0cy5pbmNsdWRlcyh0eXBlKSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgaW50ZW50TmFtZTogc3RyaW5nID0gaW50ZW50Lm5hbWU7XG5cdFx0XHRcdFx0XHRpbnRlbnROYW1lcy5wdXNoKGludGVudE5hbWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaW50ZW50TmFtZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQvLyBub3cgd2UgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGluc3RhbmNlcyBhcyB0aGlzIGFwcCBjYW4gbm90IGJlIGxhdW5jaGVkIGFzIGl0IGlzIGEgcGxhY2Vob2xkZXIgZm9yIHVucmVnaXN0ZXJlZCBpbnN0YW5jZXNcblx0XHRcdFx0Zm9yIChjb25zdCBpbnRlbnROYW1lIG9mIGludGVudE5hbWVzKSB7XG5cdFx0XHRcdFx0aWYgKGF3YWl0IHRoaXMuY2FuQWRkVW5yZWdpc3RlcmVkQXBwKGNsaWVudElkZW50aXR5LCBpbnRlbnROYW1lKSkge1xuXHRcdFx0XHRcdFx0c3VwcG9ydGVkSW50ZW50TmFtZXMucHVzaChpbnRlbnROYW1lKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIHRoZSB1bnJlZ2lzdGVyZWRBcHBNZXRhIGRhdGEgbGlzdHMgdGhlIHN1cHBvcnRlZCBpbnRlbnRzIGJ1dCB3ZSBvbmx5IHdhbnQgdG8gcmV0dXJuIGludGVudHMgdGhhdCBoYXZlIGFjdGl2ZSBpbnN0YW5jZXMgcmVhZHlcblx0XHRcdHJldHVybiBzdXBwb3J0ZWRJbnRlbnROYW1lcztcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBDYW4gd2UgYWRkIGFuIHVucmVnaXN0ZXJlZCBhcHAuXG5cdFx0ICogQHBhcmFtIGNsaWVudElkZW50aXR5IFRoZSBjbGllbnQgaWRlbnRpdHkuXG5cdFx0ICogQHBhcmFtIGludGVudE5hbWUgVGhlIGludGVudCBuYW1lLlxuXHRcdCAqIEByZXR1cm5zIFRydWUgaWYgd2UgY2FuIGFkZCB0aGUgYXBwLlxuXHRcdCAqL1xuXHRcdHByaXZhdGUgYXN5bmMgY2FuQWRkVW5yZWdpc3RlcmVkQXBwKFxuXHRcdFx0Y2xpZW50SWRlbnRpdHk6IE9wZW5GaW4uQ2xpZW50SWRlbnRpdHksXG5cdFx0XHRpbnRlbnROYW1lPzogc3RyaW5nXG5cdFx0KTogUHJvbWlzZTxib29sZWFuPiB7XG5cdFx0XHRpZiAoaXNFbXB0eSh0aGlzPy5fdW5yZWdpc3RlcmVkQXBwKSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRpZiAoXG5cdFx0XHRcdCFpc0VtcHR5KGludGVudE5hbWUpICYmXG5cdFx0XHRcdHRoaXMuX3VucmVnaXN0ZXJlZEFwcC5pbnRlbnRzPy5maW5kSW5kZXgoKGludGVudCkgPT4gaW50ZW50Lm5hbWUgPT09IGludGVudE5hbWUpID09PSAtMVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGluc3RhbmNlcyA9IGF3YWl0IHRoaXMuZmRjM0hhbmRsZUZpbmRJbnN0YW5jZXMoXG5cdFx0XHRcdHsgYXBwSWQ6IHRoaXMuX3VucmVnaXN0ZXJlZEFwcC5hcHBJZCB9LFxuXHRcdFx0XHRjbGllbnRJZGVudGl0eVxuXHRcdFx0KTtcblx0XHRcdHJldHVybiBpbnN0YW5jZXMubGVuZ3RoID4gMDtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBHZXQgYW4gYXBwbGljYXRpb24gaWRlbnRpdHkuXG5cdFx0ICogQHBhcmFtIG1ldGFkYXRhIFRoZSBtZXRhZGF0YSBmb3IgdGhlIGFwcC5cblx0XHQgKiBAcmV0dXJucyBUaGUgYXBwIGlkZW50aWZpZXIuXG5cdFx0ICovXG5cdFx0cHJpdmF0ZSBnZXRBcHBsaWNhdGlvbklkZW50aXR5KFxuXHRcdFx0bWV0YWRhdGE6IE9wZW5GaW4uSW50ZW50TWV0YWRhdGE8SW50ZW50VGFyZ2V0TWV0YURhdGE+IHwgdW5kZWZpbmVkXG5cdFx0KTogQXBwSWRlbnRpZmllciB8IHVuZGVmaW5lZCB7XG5cdFx0XHRjb25zdCB0YXJnZXQgPSBtZXRhZGF0YT8udGFyZ2V0O1xuXHRcdFx0aWYgKGlzRW1wdHkodGFyZ2V0KSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoaXNTdHJpbmcodGFyZ2V0KSkge1xuXHRcdFx0XHRpZiAodGFyZ2V0LnRyaW0oKS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB7IGFwcElkOiB0YXJnZXQgfTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGlzRW1wdHkodGFyZ2V0LmFwcElkKSkge1xuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4geyBhcHBJZDogdGFyZ2V0LmFwcElkLCBpbnN0YW5jZUlkOiB0YXJnZXQuaW5zdGFuY2VJZCB9O1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIERvZXMgdGhlIGFwcCB1c2UgYXBwbGljYXRpb24gaWRlbnRpdHkuXG5cdFx0ICogQHBhcmFtIGNsaWVudElkZW50aXR5IFRoZSBjbGllbnQgYXBwIHRvIGNoZWNrLlxuXHRcdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGFwcCB1c2VzIGFwcGxpY2F0aW9uIGlkZW50aXR5LlxuXHRcdCAqL1xuXHRcdHByaXZhdGUgdXNlc0FwcGxpY2F0aW9uSWRlbnRpdHkoY2xpZW50SWRlbnRpdHk6IE9wZW5GaW4uQ2xpZW50SWRlbnRpdHkpOiBib29sZWFuIHtcblx0XHRcdGNvbnN0IGFwaU1ldGFkYXRhID0gdGhpcy5nZXRBcGlWZXJzaW9uKGNsaWVudElkZW50aXR5KTtcblx0XHRcdGlmIChpc0VtcHR5KGFwaU1ldGFkYXRhKSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYXBpTWV0YWRhdGEudHlwZSA9PT0gXCJmZGMzXCIgJiYgYXBpTWV0YWRhdGEudmVyc2lvbiA9PT0gXCIyLjBcIjtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBMb29rdXAgYW4gYXBwbGljYXRpb24gaWRlbnRpdHkuXG5cdFx0ICogQHBhcmFtIGNsaWVudElkZW50aXR5IFRoZSBjbGllbnQgaWRlbnRpdHkgdG8gdXNlLlxuXHRcdCAqIEByZXR1cm5zIFRoZSBhcHBsaWNhdGlvbiBpZGVudGl0eS5cblx0XHQgKi9cblx0XHRwcml2YXRlIGFzeW5jIGxvb2t1cEFwcElkKGNsaWVudElkZW50aXR5OiBPcGVuRmluLkNsaWVudElkZW50aXR5KTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcblx0XHRcdGNvbnN0IG5hbWVQYXJ0cyA9IGNsaWVudElkZW50aXR5Lm5hbWUuc3BsaXQoXCIvXCIpO1xuXHRcdFx0bGV0IGFwcDogUGxhdGZvcm1BcHAgfCB1bmRlZmluZWQ7XG5cblx0XHRcdGlmIChuYW1lUGFydHMubGVuZ3RoID09PSAxIHx8IG5hbWVQYXJ0cy5sZW5ndGggPT09IDIpIHtcblx0XHRcdFx0YXBwID0gYXdhaXQgZ2V0QXBwKG5hbWVQYXJ0c1swXSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAobmFtZVBhcnRzLmxlbmd0aCA+IDIpIHtcblx0XHRcdFx0YXBwID0gYXdhaXQgZ2V0QXBwKGAke25hbWVQYXJ0c1swXX0vJHtuYW1lUGFydHNbMV19YCk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGFwcE5vdEZvdW5kID0gaXNFbXB0eShhcHApO1xuXG5cdFx0XHRpZiAoYXBwTm90Rm91bmQgJiYgY2xpZW50SWRlbnRpdHkudXVpZCAhPT0gZmluLm1lLmlkZW50aXR5LnV1aWQpIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXCJMb29rdXAgbWFkZSBieSBhIG5vbi1yZWdpc3RlcmVkIGFwcCB0aGF0IGlzIG91dHNpZGUgb2YgdGhpcyBwbGF0Zm9ybS5cIiwgY2xpZW50SWRlbnRpdHkpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmIChhcHBOb3RGb3VuZCAmJiBpc0VtcHR5KHRoaXMuX3VucmVnaXN0ZXJlZEFwcCkpIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0XCJMb29rdXAgbWFkZSBieSBhIG5vbi1yZWdpc3RlcmVkIGFwcCB0aGF0IGZhbGxzIHVuZGVyIHRoaXMgcGxhdGZvcm0uIE5vIHVucmVnaXN0ZXJlZCBwbGFjZWhvbGRlciBhcHAgaXMgc3BlY2lmaWVkLlwiLFxuXHRcdFx0XHRcdGNsaWVudElkZW50aXR5XG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGFwcE5vdEZvdW5kKSB7XG5cdFx0XHRcdGFwcCA9IHRoaXMuX3VucmVnaXN0ZXJlZEFwcDtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJBc3NpZ25lZCB0aGUgZm9sbG93aW5nIHVucmVnaXN0ZXJlZCBhcHAgdG8gcmVwcmVzZW50IHRoZSBhcHAuXCIsIGFwcCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYXBwPy5hcHBJZDtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBQcm9jZXNzIGEgY29udGV4dC5cblx0XHQgKiBAcGFyYW0gY29udGV4dCBUaGUgY29udGV4dCB0byBwcm9jZXNzLlxuXHRcdCAqIEByZXR1cm5zIFRoZSBwcm9jZXNzZWQgY29udGV4dC5cblx0XHQgKi9cblx0XHRwcml2YXRlIGFzeW5jIHByb2Nlc3NDb250ZXh0KGNvbnRleHQ6IE9wZW5GaW4uQ29udGV4dCk6IFByb21pc2U8T3BlbkZpbi5Db250ZXh0PiB7XG5cdFx0XHRjb25zdCBlbmRwb2ludElkID0gYGludGVyb3Bicm9rZXIucHJvY2Vzcy4ke2NvbnRleHQudHlwZX1gO1xuXHRcdFx0aWYgKGhhc0VuZHBvaW50KGVuZHBvaW50SWQpKSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBQcm9jZXNzaW5nIGNvbnRleHQgJHtjb250ZXh0LnR5cGV9IHdpdGggZW5kcG9pbnQgJHtlbmRwb2ludElkfWApO1xuXHRcdFx0XHRjb25zdCBwcm9jZXNzZWRDb250ZXh0ID0gYXdhaXQgcmVxdWVzdFJlc3BvbnNlPENvbnRleHRUb1Byb2Nlc3MsIFByb2Nlc3NlZENvbnRleHQ+KGVuZHBvaW50SWQsIHtcblx0XHRcdFx0XHRjb250ZXh0XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAocHJvY2Vzc2VkQ29udGV4dD8uY29udGV4dCkge1xuXHRcdFx0XHRcdHJldHVybiBwcm9jZXNzZWRDb250ZXh0Py5jb250ZXh0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY29udGV4dDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbmV3IEludGVyb3BPdmVycmlkZSgpO1xufVxuIiwiaW1wb3J0IHR5cGUgT3BlbkZpbiBmcm9tIFwiQG9wZW5maW4vY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBCcm93c2VyU25hcHNob3RXaW5kb3csIFBhZ2UsIFBhZ2VMYXlvdXQsIFdvcmtzcGFjZSB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB7IGlzRW1wdHksIG9iamVjdENsb25lIH0gZnJvbSBcIndvcmtzcGFjZS1wbGF0Zm9ybS1zdGFydGVyL3V0aWxzXCI7XG5cbi8qKlxuICogQWxsIHRoZSB3b3Jrc3BhY2Uga2V5cy5cbiAqL1xudHlwZSBXb3Jrc3BhY2VLZXlzID0ga2V5b2YgV29ya3NwYWNlO1xuXG4vKipcbiAqIEFsbCB0aGUgd29ya3NwYWNlIHNuYXBzaG90IGtleXMuXG4gKi9cbnR5cGUgV29ya3NwYWNlU25hcHNob3RLZXlzID0gXCJ3aW5kb3dzXCIgfCBcInNuYXBzaG90RGV0YWlsc1wiIHwgXCJpbnRlcm9wU25hcHNob3REZXRhaWxzXCI7XG5cbi8qKlxuICogQWxsIHRoZSBicm93c2VyIHdpbmRvdyBrZXlzLlxuICovXG50eXBlIEJyb3dzZXJXaW5kb3dLZXlzID1cblx0fCBrZXlvZiBCcm93c2VyU25hcHNob3RXaW5kb3dcblx0fCBcInRpdGxlXCJcblx0fCBcImNlbnRlclwiXG5cdHwgXCJ0cmFuc3BhcmVudFwiXG5cdHwgXCJhbHdheXNPbkJvdHRvbVwiXG5cdHwgXCJiYWNrZ3JvdW5kVGhyb3R0bGluZ1wiXG5cdHwgXCJkcmFnZ2FibGVcIlxuXHR8IFwicmVzaXplXCJcblx0fCBcInNwZWxsQ2hlY2tcIlxuXHR8IFwiZW5hYmxlQmVmb3JlVW5sb2FkXCI7XG5cbi8qKlxuICogQWxsIHRoZSB3b3Jrc3BhY2UgcGxhdGZvcm0ga2V5cy5cbiAqL1xudHlwZSBXb3Jrc3BhY2VQbGF0Zm9ybUtleXMgPVxuXHR8IFwicGFnZXNcIlxuXHR8IFwiZmF2aWNvblwiXG5cdHwgXCJ0aXRsZVwiXG5cdHwgXCJuZXdUYWJVcmxcIlxuXHR8IFwibmV3UGFnZVVybFwiXG5cdHwgXCJ0b29sYmFyT3B0aW9uc1wiXG5cdHwgXCJ3aW5kb3dTdGF0ZUJ1dHRvbk9wdGlvbnNcIlxuXHR8IFwiZGlzYWJsZU11bHRpcGxlUGFnZXNcIlxuXHR8IFwiaXNMb2NrZWRcIlxuXHR8IFwicHJldmVudFBhZ2VEcmFnSW5cIlxuXHR8IFwicHJldmVudFBhZ2VEcmFnT3V0XCJcblx0fCBcInByZXZlbnRQYWdlRHJhZ1wiXG5cdHwgXCJwcmV2ZW50UGFnZUNsb3NlXCJcblx0fCBcIl9pbnRlcm5hbERlZmVyU2hvd09wdGlvbnNcIjtcblxuLyoqXG4gKiBBbGwgdGhlIGtleXMgZm9yIHBhZ2UuXG4gKi9cbnR5cGUgUGFnZUtleXMgPVxuXHR8IFwicGFnZUlkXCJcblx0fCBcInRpdGxlXCJcblx0fCBcImxheW91dFwiXG5cdHwgXCJpc1JlYWRPbmx5XCJcblx0fCBcImlzQWN0aXZlXCJcblx0fCBcInBhbmVsc1wiXG5cdHwgXCJjdXN0b21EYXRhXCJcblx0fCBcImhhc1Vuc2F2ZWRDaGFuZ2VzXCI7XG5cbi8qKlxuICogQWxsIHRoZSBrZXlzIGZvciBwYWdlIGxheW91dC5cbiAqL1xudHlwZSBQYWdlTGF5b3V0S2V5cyA9XG5cdHwgXCJzZXR0aW5nc1wiXG5cdHwgXCJkaW1lbnNpb25zXCJcblx0fCBcImxhYmVsc1wiXG5cdHwgXCJjb250ZW50XCJcblx0fCBcImlzQ2xvc2FibGVcIlxuXHR8IFwicmVvcmRlckVuYWJsZWRcIlxuXHR8IFwidGl0bGVcIlxuXHR8IFwib3BlblBvcG91dHNcIlxuXHR8IFwibGF5b3V0RGV0YWlsc1wiXG5cdHwgXCJtYXhpbWlzZWRJdGVtSWRcIjtcblxuLyoqXG4gKiBBbGwgdGhlIGtleXMgZm9yIHBhZ2UgbGF5b3V0IHNldHRpbmdzLlxuICovXG50eXBlIFBhZ2VMYXlvdXRTZXR0aW5nc0tleXMgPVxuXHR8IFwiY29uc3RyYWluRHJhZ1RvQ29udGFpbmVyXCJcblx0fCBcImNvbnN0cmFpbkRyYWdUb0hlYWRlcnNcIlxuXHR8IFwic2hvd1BvcG91dEljb25cIlxuXHR8IFwic2hvd01heGltaXNlSWNvblwiXG5cdHwgXCJzaG93Q2xvc2VJY29uXCJcblx0fCBcImhhc0hlYWRlcnNcIlxuXHR8IFwicmVvcmRlckVuYWJsZWRcIlxuXHR8IFwicHJldmVudERyYWdPdXRcIlxuXHR8IFwicHJldmVudERyYWdJblwiXG5cdHwgXCJwb3BvdXRXaG9sZVN0YWNrXCJcblx0fCBcInNlbGVjdGlvbkVuYWJsZWRcIlxuXHR8IFwiYmxvY2tlZFBvcG91dHNUaHJvd0Vycm9yXCJcblx0fCBcImNsb3NlUG9wb3V0c09uVW5sb2FkXCJcblx0fCBcInJlc3BvbnNpdmVNb2RlXCJcblx0fCBcInRhYk92ZXJsYXBBbGxvd2FuY2VcIlxuXHR8IFwicmVvcmRlck9uVGFiTWVudUNsaWNrXCJcblx0fCBcInRhYkNvbnRyb2xPZmZzZXRcIlxuXHR8IFwibmV3VGFiQnV0dG9uXCI7XG5cbi8qKlxuICogQWxsIHRoZSBjb21wb25lbnQgdHlwZXMuXG4gKi9cbnR5cGUgQ29tcG9uZW50VHlwZSA9XG5cdHwgT3BlbkZpbi5MYXlvdXRJdGVtQ29uZmlnXG5cdHwgT3BlbkZpbi5MYXlvdXRSb3dcblx0fCBPcGVuRmluLkxheW91dENvbHVtblxuXHR8IE9wZW5GaW4uTGF5b3V0Q29tcG9uZW50O1xuXG4vKipcbiAqIEFsbCB0aGUgY29tcG9uZW50IGtleXNcbiAqL1xudHlwZSBDb21wb25lbnRLZXkgPVxuXHR8IGtleW9mIE9wZW5GaW4uTGF5b3V0SXRlbUNvbmZpZ1xuXHR8IGtleW9mIE9wZW5GaW4uTGF5b3V0Um93XG5cdHwga2V5b2YgT3BlbkZpbi5MYXlvdXRDb2x1bW5cblx0fCBrZXlvZiBPcGVuRmluLkxheW91dENvbXBvbmVudFxuXHR8IFwicmVvcmRlckVuYWJsZWRcIlxuXHR8IFwiYWN0aXZlSXRlbUluZGV4XCI7XG5cbi8qKlxuICogQWxsIHRoZSBrZXlzIGZvciB0aGUgY29tcG9uZW50IHN0YXRlLlxuICovXG50eXBlIENvbXBvbmVudFN0YXRlS2V5cyA9XG5cdHwga2V5b2YgT3BlbkZpbi5WaWV3Q3JlYXRpb25PcHRpb25zXG5cdHwgXCJiYWNrZ3JvdW5kVGhyb3R0bGluZ1wiXG5cdHwgXCJ1dWlkXCJcblx0fCBcImluaXRpYWxVcmxcIlxuXHR8IFwiY29tcG9uZW50TmFtZVwiO1xuXG4vKipcbiAqIE1hcCB0aGUgcGxhdGZvcm0gd29ya3NwYWNlIGRhdGEgdG8gc3RvcmFnZSB2ZXJzaW9uLlxuICogQHBhcmFtIHdvcmtzcGFjZSBUaGUgd29ya3NwYWNlIHRvIG1hcC5cbiAqIEByZXR1cm5zIFRoZSBzdG9yYWdlIHdvcmtzcGFjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFBsYXRmb3JtV29ya3NwYWNlVG9TdG9yYWdlKHdvcmtzcGFjZTogV29ya3NwYWNlIHwgdW5kZWZpbmVkKTogV29ya3NwYWNlIHtcblx0aWYgKGlzRW1wdHkod29ya3NwYWNlKSkge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5cdFx0cmV0dXJuIHVuZGVmaW5lZCBhcyBhbnkgYXMgV29ya3NwYWNlO1xuXHR9XG5cblx0Y29uc3QgY2xvbmU6IFdvcmtzcGFjZSA9IG9iamVjdENsb25lKHdvcmtzcGFjZSk7XG5cblx0Zm9yIChjb25zdCB3aW4gb2YgY2xvbmUuc25hcHNob3Qud2luZG93cykge1xuXHRcdHBsYXRmb3JtV29ya3NwYWNlV2luZG93VG9TdG9yYWdlKHdpbik7XG5cdH1cblxuXHQvLyBSZW1vdmUgcGxhdGZvcm0gZGVwZW5kZW50IGluZm9ybWF0aW9uXG5cdHJlbW92ZVByb3A8V29ya3NwYWNlLCBXb3Jrc3BhY2VLZXlzPihjbG9uZSwgXCJtZXRhZGF0YVwiKTtcblxuXHRjb25zdCB3b3Jrc3BhY2VTbmFwc2hvdERlZmF1bHRzOiB7XG5cdFx0cHJvcE5hbWU6IFdvcmtzcGFjZVNuYXBzaG90S2V5cztcblx0XHRkZWZhdWx0VmFsdWU6IHVua25vd247XG5cdH1bXSA9IFtcblx0XHR7XG5cdFx0XHRwcm9wTmFtZTogXCJpbnRlcm9wU25hcHNob3REZXRhaWxzXCIsXG5cdFx0XHRkZWZhdWx0VmFsdWU6IHtcblx0XHRcdFx0Y29udGV4dEdyb3VwU3RhdGVzOiB7XG5cdFx0XHRcdFx0Z3JlZW46IHt9LFxuXHRcdFx0XHRcdHB1cnBsZToge30sXG5cdFx0XHRcdFx0b3JhbmdlOiB7fSxcblx0XHRcdFx0XHRyZWQ6IHt9LFxuXHRcdFx0XHRcdHBpbms6IHt9LFxuXHRcdFx0XHRcdHllbGxvdzoge31cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBTa2lwIHRvIG1ha2UgcGxhdGZvcm0gZGVwZW5kZW50IGFuZCByZW1vdmUgYmVsb3dcblx0XHQvLyB7IHByb3BOYW1lOiBcInNuYXBzaG90RGV0YWlsc1wiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSxcblx0XTtcblxuXHRmb3IgKGNvbnN0IHdvcmtzcGFjZVNuYXBzaG90RGVmYXVsdCBvZiB3b3Jrc3BhY2VTbmFwc2hvdERlZmF1bHRzKSB7XG5cdFx0cmVtb3ZlUHJvcElmTm9uRGVmYXVsdDx1bmtub3duLCBXb3Jrc3BhY2VTbmFwc2hvdEtleXM+KFxuXHRcdFx0Y2xvbmUuc25hcHNob3QsXG5cdFx0XHR3b3Jrc3BhY2VTbmFwc2hvdERlZmF1bHQucHJvcE5hbWUsXG5cdFx0XHR3b3Jrc3BhY2VTbmFwc2hvdERlZmF1bHQuZGVmYXVsdFZhbHVlXG5cdFx0KTtcblx0fVxuXG5cdC8vIHJlbW92ZSBwbGF0Zm9ybSBkZXBlbmRlbnQgcHJvcHNcblx0cmVtb3ZlUHJvcDx1bmtub3duLCBXb3Jrc3BhY2VTbmFwc2hvdEtleXM+KGNsb25lLnNuYXBzaG90LCBcInNuYXBzaG90RGV0YWlsc1wiKTtcblxuXHRyZXR1cm4gY2xvbmU7XG59XG5cbi8qKlxuICogTWFwIHRoZSBwbGF0Zm9ybSBwYWdlIGRhdGEgdG8gc3RvcmFnZSB2ZXJzaW9uLlxuICogQHBhcmFtIHBhZ2UgVGhlIHBhZ2UgdG8gbWFwLlxuICogQHJldHVybnMgVGhlIG1hcHBlZCBwYWdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwUGxhdGZvcm1QYWdlVG9TdG9yYWdlKHBhZ2U6IFBhZ2UgfCB1bmRlZmluZWQpOiBQYWdlIHtcblx0aWYgKGlzRW1wdHkocGFnZSkpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXHRcdHJldHVybiB1bmRlZmluZWQgYXMgYW55IGFzIFBhZ2U7XG5cdH1cblxuXHRjb25zdCBjbG9uZSA9IG9iamVjdENsb25lKHBhZ2UpO1xuXHRwbGF0Zm9ybVBhZ2VUb1N0b3JhZ2UoY2xvbmUpO1xuXHRyZXR1cm4gY2xvbmU7XG59XG5cbi8qKlxuICogTWFwIHRoZSBwbGF0Zm9ybSB3aW5kb3cgZGF0YSB0byBzdG9yYWdlLlxuICogQHBhcmFtIHdpbmRvdyBUaGUgd2luZG93IHRvIG1hcC5cbiAqL1xuZnVuY3Rpb24gcGxhdGZvcm1Xb3Jrc3BhY2VXaW5kb3dUb1N0b3JhZ2Uod2luZG93OiBCcm93c2VyU25hcHNob3RXaW5kb3cpOiB2b2lkIHtcblx0Y29uc3Qgd2luZG93RGVmYXVsdHM6IHtcblx0XHRwcm9wTmFtZTogQnJvd3NlcldpbmRvd0tleXM7XG5cdFx0ZGVmYXVsdFZhbHVlOiB1bmtub3duO1xuXHR9W10gPSBbXG5cdFx0eyBwcm9wTmFtZTogXCJ1dWlkXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdHsgcHJvcE5hbWU6IFwidXJsXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdHsgcHJvcE5hbWU6IFwidGl0bGVcIiwgZGVmYXVsdFZhbHVlOiBcIlwiIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJhbHdheXNPblRvcFwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJmcmFtZVwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJpY29uXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdHsgcHJvcE5hbWU6IFwieFwiLCBkZWZhdWx0VmFsdWU6IC0xIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJ5XCIsIGRlZmF1bHRWYWx1ZTogLTEgfSxcblx0XHR7IHByb3BOYW1lOiBcIndpZHRoXCIsIGRlZmF1bHRWYWx1ZTogLTEgfSxcblx0XHR7IHByb3BOYW1lOiBcImhlaWdodFwiLCBkZWZhdWx0VmFsdWU6IC0xIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJjZW50ZXJcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiZGVmYXVsdExlZnRcIiwgZGVmYXVsdFZhbHVlOiAwIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJkZWZhdWx0VG9wXCIsIGRlZmF1bHRWYWx1ZTogMCB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiZGVmYXVsdFdpZHRoXCIsIGRlZmF1bHRWYWx1ZTogLTEgfSxcblx0XHR7IHByb3BOYW1lOiBcImRlZmF1bHRIZWlnaHRcIiwgZGVmYXVsdFZhbHVlOiAtMSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwibWluV2lkdGhcIiwgZGVmYXVsdFZhbHVlOiAyMDAgfSxcblx0XHR7IHByb3BOYW1lOiBcIm1pbkhlaWdodFwiLCBkZWZhdWx0VmFsdWU6IDIwMCB9LFxuXHRcdHsgcHJvcE5hbWU6IFwibWF4V2lkdGhcIiwgZGVmYXVsdFZhbHVlOiAtMSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwibWF4SGVpZ2h0XCIsIGRlZmF1bHRWYWx1ZTogLTEgfSxcblx0XHR7IHByb3BOYW1lOiBcIm1pbmltaXphYmxlXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwibWF4aW1pemFibGVcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJzdGF0ZVwiLCBkZWZhdWx0VmFsdWU6IFwibm9ybWFsXCIgfSxcblx0XHR7IHByb3BOYW1lOiBcIm9wYWNpdHlcIiwgZGVmYXVsdFZhbHVlOiAxIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJ0cmFuc3BhcmVudFwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0e1xuXHRcdFx0cHJvcE5hbWU6IFwicmVzaXplUmVnaW9uXCIsXG5cdFx0XHRkZWZhdWx0VmFsdWU6IHtcblx0XHRcdFx0Ym90dG9tUmlnaHRDb3JuZXI6IDIwLFxuXHRcdFx0XHRzaXplOiA3LFxuXHRcdFx0XHRzaWRlczoge1xuXHRcdFx0XHRcdHRvcDogdHJ1ZSxcblx0XHRcdFx0XHRyaWdodDogdHJ1ZSxcblx0XHRcdFx0XHRib3R0b206IHRydWUsXG5cdFx0XHRcdFx0bGVmdDogdHJ1ZVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRwcm9wTmFtZTogXCJhY2NlbGVyYXRvclwiLFxuXHRcdFx0ZGVmYXVsdFZhbHVlOiB7XG5cdFx0XHRcdGRldnRvb2xzOiBmYWxzZSxcblx0XHRcdFx0em9vbTogZmFsc2UsXG5cdFx0XHRcdHJlbG9hZDogZmFsc2UsXG5cdFx0XHRcdHJlbG9hZElnbm9yaW5nQ2FjaGU6IGZhbHNlXG5cdFx0XHR9XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRwcm9wTmFtZTogXCJhbHBoYU1hc2tcIixcblx0XHRcdGRlZmF1bHRWYWx1ZToge1xuXHRcdFx0XHRibHVlOiAtMSxcblx0XHRcdFx0Z3JlZW46IC0xLFxuXHRcdFx0XHRyZWQ6IC0xXG5cdFx0XHR9XG5cdFx0fSxcblx0XHR7IHByb3BOYW1lOiBcImFsd2F5c09uQm90dG9tXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHR7XG5cdFx0XHRwcm9wTmFtZTogXCJhcGlcIixcblx0XHRcdGRlZmF1bHRWYWx1ZToge1xuXHRcdFx0XHRpZnJhbWU6IHtcblx0XHRcdFx0XHRjcm9zc09yaWdpbkluamVjdGlvbjogZmFsc2UsXG5cdFx0XHRcdFx0c2FtZU9yaWdpbkluamVjdGlvbjogdHJ1ZSxcblx0XHRcdFx0XHRlbmFibGVEZXByZWNhdGVkU2hhcmVkTmFtZTogZmFsc2Vcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0eyBwcm9wTmFtZTogXCJhcHBsaWNhdGlvbkljb25cIiwgZGVmYXVsdFZhbHVlOiBcIlwiIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJhc3BlY3RSYXRpb1wiLCBkZWZhdWx0VmFsdWU6IDAgfSxcblx0XHR7IHByb3BOYW1lOiBcImF1dG9TaG93XCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHR7IHByb3BOYW1lOiBcImJhY2tncm91bmRUaHJvdHRsaW5nXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9LFxuXHRcdHtcblx0XHRcdHByb3BOYW1lOiBcImNvbnRlbnROYXZpZ2F0aW9uXCIsXG5cdFx0XHRkZWZhdWx0VmFsdWU6IHtcblx0XHRcdFx0d2hpdGVsaXN0OiBbXCI8YWxsX3VybHM+XCJdLFxuXHRcdFx0XHRibGFja2xpc3Q6IFtdXG5cdFx0XHR9XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRwcm9wTmFtZTogXCJjb250ZW50UmVkaXJlY3RcIixcblx0XHRcdGRlZmF1bHRWYWx1ZToge1xuXHRcdFx0XHR3aGl0ZWxpc3Q6IFtcIjxhbGxfdXJscz5cIl0sXG5cdFx0XHRcdGJsYWNrbGlzdDogW11cblx0XHRcdH1cblx0XHR9LFxuXHRcdHtcblx0XHRcdHByb3BOYW1lOiBcImNvbnRlbnRDcmVhdGlvblwiLFxuXHRcdFx0ZGVmYXVsdFZhbHVlOiB7XG5cdFx0XHRcdHJ1bGVzOiBbXVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0cHJvcE5hbWU6IFwiY29udGV4dE1lbnVTZXR0aW5nc1wiLFxuXHRcdFx0ZGVmYXVsdFZhbHVlOiB7XG5cdFx0XHRcdGVuYWJsZTogdHJ1ZSxcblx0XHRcdFx0ZGV2dG9vbHM6IHRydWUsXG5cdFx0XHRcdHJlbG9hZDogZmFsc2Vcblx0XHRcdH1cblx0XHR9LFxuXHRcdHtcblx0XHRcdHByb3BOYW1lOiBcImNvcm5lclJvdW5kaW5nXCIsXG5cdFx0XHRkZWZhdWx0VmFsdWU6IHtcblx0XHRcdFx0aGVpZ2h0OiAwLFxuXHRcdFx0XHR3aWR0aDogMFxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0eyBwcm9wTmFtZTogXCJjbG9zZU9uTGFzdFZpZXdSZW1vdmVkXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHR7IHByb3BOYW1lOiBcImRyYWdnYWJsZVwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJpbmNsdWRlSW5TbmFwc2hvdHNcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJyZXNpemFibGVcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJyZXNpemVcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJzYXZlV2luZG93U3RhdGVcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwic2hhZG93XCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHR7IHByb3BOYW1lOiBcInNob3dUYXNrYmFySWNvblwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSxcblx0XHR7IHByb3BOYW1lOiBcInNob3dCYWNrZ3JvdW5kSW1hZ2VzXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHR7IHByb3BOYW1lOiBcInNtYWxsV2luZG93XCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHR7IHByb3BOYW1lOiBcInNwZWxsQ2hlY2tcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwidGFza2Jhckljb25cIiwgZGVmYXVsdFZhbHVlOiBcIlwiIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJ3YWl0Rm9yUGFnZUxvYWRcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiYmFja2dyb3VuZENvbG9yXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiZmRjM0ludGVyb3BBcGlcIiwgZGVmYXVsdFZhbHVlOiBcIlwiIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJlbmFibGVCZWZvcmVVbmxvYWRcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdC8vIFNraXAgdG8gbWFrZSBwbGF0Zm9ybSBkZXBlbmRlbnQgYW5kIHJlbW92ZSBiZWxvd1xuXHRcdC8vIHsgcHJvcE5hbWU6IFwiaG90a2V5c1wiLCBkZWZhdWx0VmFsdWU6IFtdIH0sXG5cdFx0Ly8geyBwcm9wTmFtZTogXCJ0YXNrYmFySWNvbkdyb3VwXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdHtcblx0XHRcdHByb3BOYW1lOiBcInZpZXdWaXNpYmlsaXR5XCIsXG5cdFx0XHRkZWZhdWx0VmFsdWU6IHtcblx0XHRcdFx0c2hvd1ZpZXdzT25TcGxpdHRlckRyYWc6IHtcblx0XHRcdFx0XHRlbmFibGVkOiB0cnVlXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNob3dWaWV3c09uV2luZG93UmVzaXplOiB7XG5cdFx0XHRcdFx0ZW5hYmxlZDogdHJ1ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzaG93Vmlld3NPblRhYkRyYWc6IHtcblx0XHRcdFx0XHRlbmFibGVkOiB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXHRcdHsgcHJvcE5hbWU6IFwiYXV0b3BsYXlQb2xpY3lcIiwgZGVmYXVsdFZhbHVlOiBcIm5vLXVzZXItZ2VzdHVyZS1yZXF1aXJlZFwiIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJwZXJtaXNzaW9uc1wiLCBkZWZhdWx0VmFsdWU6IHt9IH0sXG5cdFx0eyBwcm9wTmFtZTogXCJjb250ZXh0TWVudVwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSxcblx0XHR7XG5cdFx0XHRwcm9wTmFtZTogXCJjb250ZXh0TWVudU9wdGlvbnNcIixcblx0XHRcdGRlZmF1bHRWYWx1ZToge1xuXHRcdFx0XHR0ZW1wbGF0ZTogW10sXG5cdFx0XHRcdGVuYWJsZWQ6IGZhbHNlXG5cdFx0XHR9XG5cdFx0fSxcblx0XHR7IHByb3BOYW1lOiBcImlnbm9yZVNhdmVkV2luZG93U3RhdGVcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJwcmVsb2FkU2NyaXB0c1wiLCBkZWZhdWx0VmFsdWU6IFtdIH1cblx0XTtcblxuXHRmb3IgKGNvbnN0IHdpbmRvd0RlZmF1bHQgb2Ygd2luZG93RGVmYXVsdHMpIHtcblx0XHRyZW1vdmVQcm9wSWZOb25EZWZhdWx0PEJyb3dzZXJTbmFwc2hvdFdpbmRvdywgQnJvd3NlcldpbmRvd0tleXM+KFxuXHRcdFx0d2luZG93LFxuXHRcdFx0d2luZG93RGVmYXVsdC5wcm9wTmFtZSxcblx0XHRcdHdpbmRvd0RlZmF1bHQuZGVmYXVsdFZhbHVlXG5cdFx0KTtcblx0fVxuXG5cdC8vIHJlbW92ZSBwbGF0Zm9ybSBkZXBlbmRlbnQgcHJvcHNcblx0cmVtb3ZlUHJvcDxCcm93c2VyU25hcHNob3RXaW5kb3csIEJyb3dzZXJXaW5kb3dLZXlzPih3aW5kb3csIFwiaG90a2V5c1wiKTtcblx0cmVtb3ZlUHJvcDxCcm93c2VyU25hcHNob3RXaW5kb3csIEJyb3dzZXJXaW5kb3dLZXlzPih3aW5kb3csIFwidGFza2Jhckljb25Hcm91cFwiKTtcblx0cmVtb3ZlUHJvcDxCcm93c2VyU25hcHNob3RXaW5kb3csIEJyb3dzZXJXaW5kb3dLZXlzPih3aW5kb3csIFwiZXhwZXJpbWVudGFsXCIpO1xuXG5cdGlmICh3aW5kb3cud29ya3NwYWNlUGxhdGZvcm0pIHtcblx0XHQvLyBJZiB0aGlzIGlzIGEgd29ya3NwYWNlIHBsYXRmb3JtIHRoZW4gcmVtb3ZlIHRoZSBsYXlvdXQgcHJvcCBmcm9tIHRoZSB3aW5kb3dcblx0XHQvLyB0byBhdm9pZCBkdXBsaWNhdGlvblxuXHRcdHJlbW92ZVByb3A8QnJvd3NlclNuYXBzaG90V2luZG93LCBCcm93c2VyV2luZG93S2V5cz4od2luZG93LCBcImxheW91dFwiKTtcblxuXHRcdGNvbnN0IHdvcmtzcGFjZVBsYXRmb3JtRGVmYXVsdHM6IHtcblx0XHRcdHByb3BOYW1lOiBXb3Jrc3BhY2VQbGF0Zm9ybUtleXM7XG5cdFx0XHRkZWZhdWx0VmFsdWU6IHVua25vd247XG5cdFx0fVtdID0gW1xuXHRcdFx0eyBwcm9wTmFtZTogXCJmYXZpY29uXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJ0aXRsZVwiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSxcblx0XHRcdC8vIFNraXAgdG8gbWFrZSBwbGF0Zm9ybSBkZXBlbmRlbnQgYW5kIHJlbW92ZSBiZWxvd1xuXHRcdFx0Ly8geyBwcm9wTmFtZTogXCJuZXdUYWJVcmxcIiwgZGVmYXVsdFZhbHVlOiBcIlwiIH0sXG5cdFx0XHQvLyB7IHByb3BOYW1lOiBcIm5ld1BhZ2VVcmxcIiwgZGVmYXVsdFZhbHVlOiBcIlwiIH0sXG5cdFx0XHQvLyB7IHByb3BOYW1lOiBcInRvb2xiYXJPcHRpb25zXCIsIGRlZmF1bHRWYWx1ZTogeyB9IH0sXG5cdFx0XHR7IHByb3BOYW1lOiBcIndpbmRvd1N0YXRlQnV0dG9uT3B0aW9uc1wiLCBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJkaXNhYmxlTXVsdGlwbGVQYWdlc1wiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0XHR7IHByb3BOYW1lOiBcImlzTG9ja2VkXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwicHJldmVudFBhZ2VEcmFnSW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJwcmV2ZW50UGFnZURyYWdPdXRcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJwcmV2ZW50UGFnZURyYWdcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJwcmV2ZW50UGFnZUNsb3NlXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfVxuXHRcdF07XG5cblx0XHRmb3IgKGNvbnN0IHdvcmtzcGFjZVBsYXRmb3JtRGVmYXVsdCBvZiB3b3Jrc3BhY2VQbGF0Zm9ybURlZmF1bHRzKSB7XG5cdFx0XHRyZW1vdmVQcm9wSWZOb25EZWZhdWx0PHVua25vd24sIFdvcmtzcGFjZVBsYXRmb3JtS2V5cz4oXG5cdFx0XHRcdHdpbmRvdy53b3Jrc3BhY2VQbGF0Zm9ybSxcblx0XHRcdFx0d29ya3NwYWNlUGxhdGZvcm1EZWZhdWx0LnByb3BOYW1lLFxuXHRcdFx0XHR3b3Jrc3BhY2VQbGF0Zm9ybURlZmF1bHQuZGVmYXVsdFZhbHVlXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdC8vIHJlbW92ZSBwbGF0Zm9ybSBkZXBlbmRlbnQgcHJvcHNcblx0XHRyZW1vdmVQcm9wPHVua25vd24sIFdvcmtzcGFjZVBsYXRmb3JtS2V5cz4od2luZG93LndvcmtzcGFjZVBsYXRmb3JtLCBcIm5ld1RhYlVybFwiKTtcblx0XHRyZW1vdmVQcm9wPHVua25vd24sIFdvcmtzcGFjZVBsYXRmb3JtS2V5cz4od2luZG93LndvcmtzcGFjZVBsYXRmb3JtLCBcIm5ld1BhZ2VVcmxcIik7XG5cdFx0cmVtb3ZlUHJvcDx1bmtub3duLCBXb3Jrc3BhY2VQbGF0Zm9ybUtleXM+KHdpbmRvdy53b3Jrc3BhY2VQbGF0Zm9ybSwgXCJ0b29sYmFyT3B0aW9uc1wiKTtcblx0XHRyZW1vdmVQcm9wPHVua25vd24sIFdvcmtzcGFjZVBsYXRmb3JtS2V5cz4od2luZG93LndvcmtzcGFjZVBsYXRmb3JtLCBcIl9pbnRlcm5hbERlZmVyU2hvd09wdGlvbnNcIik7XG5cblx0XHRmb3IgKGNvbnN0IHBhZ2Ugb2Ygd2luZG93LndvcmtzcGFjZVBsYXRmb3JtLnBhZ2VzKSB7XG5cdFx0XHRwbGF0Zm9ybVBhZ2VUb1N0b3JhZ2UocGFnZSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogTWFwIHRoZSBwbGF0Zm9ybSBwYWdlIGRhdGEgdG8gc3RvcmFnZS5cbiAqIEBwYXJhbSBwYWdlIFRoZSBwYWdlIHRvIG1hcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBsYXRmb3JtUGFnZVRvU3RvcmFnZShwYWdlOiBQYWdlKTogdm9pZCB7XG5cdGNvbnN0IHBhZ2VEZWZhdWx0czoge1xuXHRcdHByb3BOYW1lOiBQYWdlS2V5cztcblx0XHRkZWZhdWx0VmFsdWU6IHVua25vd247XG5cdH1bXSA9IFtcblx0XHR7IHByb3BOYW1lOiBcImlzQWN0aXZlXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHR7IHByb3BOYW1lOiBcImlzUmVhZE9ubHlcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiaGFzVW5zYXZlZENoYW5nZXNcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwicGFuZWxzXCIsIGRlZmF1bHRWYWx1ZTogW10gfVxuXHRdO1xuXG5cdGZvciAoY29uc3QgcGFnZURlZmF1bHQgb2YgcGFnZURlZmF1bHRzKSB7XG5cdFx0cmVtb3ZlUHJvcElmTm9uRGVmYXVsdDx1bmtub3duLCBQYWdlS2V5cz4ocGFnZSwgcGFnZURlZmF1bHQucHJvcE5hbWUsIHBhZ2VEZWZhdWx0LmRlZmF1bHRWYWx1ZSk7XG5cdH1cblxuXHRwbGF0Zm9ybVBhZ2VMYXlvdXRUb1N0b3JhZ2UocGFnZS5sYXlvdXQpO1xufVxuXG4vKipcbiAqIE1hcCB0aGUgcGFnZSBsYXlvdXQgdG8gc3RvcmFnZS5cbiAqIEBwYXJhbSBwYWdlTGF5b3V0IFRoZSBwYWdlIGxheW91dCB0byBtYXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwbGF0Zm9ybVBhZ2VMYXlvdXRUb1N0b3JhZ2UocGFnZUxheW91dDogUGFnZUxheW91dCk6IHZvaWQge1xuXHRjb25zdCBwYWdlTGF5b3V0RGVmYXVsdHM6IHtcblx0XHRwcm9wTmFtZTogUGFnZUxheW91dEtleXM7XG5cdFx0ZGVmYXVsdFZhbHVlOiB1bmtub3duO1xuXHR9W10gPSBbXG5cdFx0e1xuXHRcdFx0cHJvcE5hbWU6IFwiZGltZW5zaW9uc1wiLFxuXHRcdFx0ZGVmYXVsdFZhbHVlOiB7XG5cdFx0XHRcdGJvcmRlcldpZHRoOiAzLFxuXHRcdFx0XHRib3JkZXJHcmFiV2lkdGg6IDE1LFxuXHRcdFx0XHRtaW5JdGVtSGVpZ2h0OiAxMCxcblx0XHRcdFx0bWluSXRlbVdpZHRoOiAxMCxcblx0XHRcdFx0aGVhZGVySGVpZ2h0OiAzMCxcblx0XHRcdFx0ZHJhZ1Byb3h5V2lkdGg6IDMwMCxcblx0XHRcdFx0ZHJhZ1Byb3h5SGVpZ2h0OiAyMDBcblx0XHRcdH1cblx0XHR9LFxuXHRcdHtcblx0XHRcdHByb3BOYW1lOiBcImxhYmVsc1wiLFxuXHRcdFx0ZGVmYXVsdFZhbHVlOiB7XG5cdFx0XHRcdGNsb3NlOiBcImNsb3NlXCIsXG5cdFx0XHRcdG1heGltaXNlOiBcIm1heGltaXNlXCIsXG5cdFx0XHRcdG1pbmltaXNlOiBcIm1pbmltaXNlXCIsXG5cdFx0XHRcdHBvcG91dDogXCJvcGVuIGluIG5ldyB3aW5kb3dcIixcblx0XHRcdFx0cG9waW46IFwicG9wIGluXCIsXG5cdFx0XHRcdHRhYkRyb3Bkb3duOiBcImFkZGl0aW9uYWwgdGFic1wiXG5cdFx0XHR9XG5cdFx0fSxcblx0XHR7IHByb3BOYW1lOiBcImlzQ2xvc2FibGVcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJyZW9yZGVyRW5hYmxlZFwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSxcblx0XHR7IHByb3BOYW1lOiBcInRpdGxlXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdHsgcHJvcE5hbWU6IFwib3BlblBvcG91dHNcIiwgZGVmYXVsdFZhbHVlOiBbXSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwibWF4aW1pc2VkSXRlbUlkXCIsIGRlZmF1bHRWYWx1ZTogbnVsbCB9XG5cdFx0Ly8gU2tpcCB0byBtYWtlIHBsYXRmb3JtIGRlcGVuZGVudCBhbmQgcmVtb3ZlIGJlbG93XG5cdFx0Ly8geyBwcm9wTmFtZTogXCJsYXlvdXREZXRhaWxzXCIsIGRlZmF1bHRWYWx1ZTogeyB9IH1cblx0XTtcblxuXHRmb3IgKGNvbnN0IHBhZ2VMYXlvdXREZWZhdWx0IG9mIHBhZ2VMYXlvdXREZWZhdWx0cykge1xuXHRcdHJlbW92ZVByb3BJZk5vbkRlZmF1bHQ8dW5rbm93biwgUGFnZUxheW91dEtleXM+KFxuXHRcdFx0cGFnZUxheW91dCxcblx0XHRcdHBhZ2VMYXlvdXREZWZhdWx0LnByb3BOYW1lLFxuXHRcdFx0cGFnZUxheW91dERlZmF1bHQuZGVmYXVsdFZhbHVlXG5cdFx0KTtcblx0fVxuXG5cdC8vIFJlbW92ZSBQbGF0Zm9ybSBkZXBlbmRlbnQgcHJvcHNcblx0cmVtb3ZlUHJvcDx1bmtub3duLCBQYWdlTGF5b3V0S2V5cz4ocGFnZUxheW91dCwgXCJsYXlvdXREZXRhaWxzXCIpO1xuXG5cdGlmIChwYWdlTGF5b3V0LnNldHRpbmdzKSB7XG5cdFx0Y29uc3QgcGFnZVNldHRpbmdzRGVmYXVsdHM6IHtcblx0XHRcdHByb3BOYW1lOiBQYWdlTGF5b3V0U2V0dGluZ3NLZXlzO1xuXHRcdFx0ZGVmYXVsdFZhbHVlOiB1bmtub3duO1xuXHRcdH1bXSA9IFtcblx0XHRcdHsgcHJvcE5hbWU6IFwiaGFzSGVhZGVyc1wiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwicmVvcmRlckVuYWJsZWRcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0XHR7IHByb3BOYW1lOiBcInNlbGVjdGlvbkVuYWJsZWRcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJwb3BvdXRXaG9sZVN0YWNrXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwiYmxvY2tlZFBvcG91dHNUaHJvd0Vycm9yXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJjbG9zZVBvcG91dHNPblVubG9hZFwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwic2hvd1BvcG91dEljb25cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJzaG93TWF4aW1pc2VJY29uXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHRcdHsgcHJvcE5hbWU6IFwic2hvd0Nsb3NlSWNvblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0XHR7IHByb3BOYW1lOiBcInJlc3BvbnNpdmVNb2RlXCIsIGRlZmF1bHRWYWx1ZTogXCJvbmxvYWRcIiB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJ0YWJPdmVybGFwQWxsb3dhbmNlXCIsIGRlZmF1bHRWYWx1ZTogMCB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJyZW9yZGVyT25UYWJNZW51Q2xpY2tcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0XHR7IHByb3BOYW1lOiBcInRhYkNvbnRyb2xPZmZzZXRcIiwgZGVmYXVsdFZhbHVlOiAxMCB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJwcmV2ZW50RHJhZ091dFwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0XHR7IHByb3BOYW1lOiBcInByZXZlbnREcmFnSW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuXHRcdFx0eyBwcm9wTmFtZTogXCJjb25zdHJhaW5EcmFnVG9Db250YWluZXJcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0XHR7IHByb3BOYW1lOiBcImNvbnN0cmFpbkRyYWdUb0hlYWRlcnNcIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9XG5cdFx0XHQvLyBTa2lwIHRvIG1ha2UgcGxhdGZvcm0gZGVwZW5kZW50IGFuZCByZW1vdmUgYmVsb3dcblx0XHRcdC8vIHsgcHJvcE5hbWU6IFwibmV3VGFiQnV0dG9uXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfVxuXHRcdF07XG5cblx0XHRmb3IgKGNvbnN0IHBhZ2VTZXR0aW5nc0RlZmF1bHQgb2YgcGFnZVNldHRpbmdzRGVmYXVsdHMpIHtcblx0XHRcdHJlbW92ZVByb3BJZk5vbkRlZmF1bHQ8dW5rbm93biwgUGFnZUxheW91dFNldHRpbmdzS2V5cz4oXG5cdFx0XHRcdHBhZ2VMYXlvdXQuc2V0dGluZ3MsXG5cdFx0XHRcdHBhZ2VTZXR0aW5nc0RlZmF1bHQucHJvcE5hbWUsXG5cdFx0XHRcdHBhZ2VTZXR0aW5nc0RlZmF1bHQuZGVmYXVsdFZhbHVlXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdC8vIFJlbW92ZSBQbGF0Zm9ybSBkZXBlbmRlbnQgcHJvcHNcblx0XHRyZW1vdmVQcm9wPHVua25vd24sIFBhZ2VMYXlvdXRTZXR0aW5nc0tleXM+KHBhZ2VMYXlvdXQuc2V0dGluZ3MsIFwibmV3VGFiQnV0dG9uXCIpO1xuXG5cdFx0aWYgKE9iamVjdC5rZXlzKHBhZ2VMYXlvdXQuc2V0dGluZ3MpLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0ZGVsZXRlIHBhZ2VMYXlvdXQuc2V0dGluZ3M7XG5cdFx0fVxuXHR9XG5cblx0aWYgKHBhZ2VMYXlvdXQuY29udGVudCkge1xuXHRcdGZvciAoY29uc3QgY29tcG9uZW50IG9mIHBhZ2VMYXlvdXQuY29udGVudCkge1xuXHRcdFx0cGxhdGZvcm1MYXlvdXRDb21wb25lbnRUb1N0b3JhZ2UoY29tcG9uZW50KTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBNYXAgdGhlIHBsYXRmb3JtIGxheW91dCBjb250ZW50IGRhdGEgdG8gc3RvcmFnZS5cbiAqIEBwYXJhbSBjb21wb25lbnQgVGhlIGxheW91dCBjb250ZW50IHRvIG1hcC5cbiAqL1xuZnVuY3Rpb24gcGxhdGZvcm1MYXlvdXRDb21wb25lbnRUb1N0b3JhZ2UoY29tcG9uZW50OiBDb21wb25lbnRUeXBlKTogdm9pZCB7XG5cdGNvbnN0IGNvbXBvbmVudERlZmF1bHRzOiB7XG5cdFx0cHJvcE5hbWU6IENvbXBvbmVudEtleTtcblx0XHRkZWZhdWx0VmFsdWU6IHVua25vd247XG5cdH1bXSA9IFtcblx0XHR7IHByb3BOYW1lOiBcInRpdGxlXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdHsgcHJvcE5hbWU6IFwid2lkdGhcIiwgZGVmYXVsdFZhbHVlOiAwIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJoZWlnaHRcIiwgZGVmYXVsdFZhbHVlOiAwIH0sXG5cdFx0eyBwcm9wTmFtZTogXCJjb21wb25lbnROYW1lXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiaXNDbG9zYWJsZVwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSxcblx0XHR7IHByb3BOYW1lOiBcInJlb3JkZXJFbmFibGVkXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9LFxuXHRcdHsgcHJvcE5hbWU6IFwiYWN0aXZlSXRlbUluZGV4XCIsIGRlZmF1bHRWYWx1ZTogMCB9XG5cdF07XG5cblx0Zm9yIChjb25zdCBjb21wb25lbnREZWZhdWx0IG9mIGNvbXBvbmVudERlZmF1bHRzKSB7XG5cdFx0cmVtb3ZlUHJvcElmTm9uRGVmYXVsdDxDb21wb25lbnRUeXBlLCBDb21wb25lbnRLZXk+KFxuXHRcdFx0Y29tcG9uZW50LFxuXHRcdFx0Y29tcG9uZW50RGVmYXVsdC5wcm9wTmFtZSxcblx0XHRcdGNvbXBvbmVudERlZmF1bHQuZGVmYXVsdFZhbHVlXG5cdFx0KTtcblx0fVxuXG5cdGlmIChcImNvbXBvbmVudFN0YXRlXCIgaW4gY29tcG9uZW50KSB7XG5cdFx0Y29uc3QgY29tcG9uZW50U3RhdGU6IFBhcnRpYWw8T3BlbkZpbi5WaWV3Q3JlYXRpb25PcHRpb25zPiB8IHVuZGVmaW5lZCA9IGNvbXBvbmVudC5jb21wb25lbnRTdGF0ZTtcblxuXHRcdGlmIChjb21wb25lbnRTdGF0ZSkge1xuXHRcdFx0Y29uc3QgY29tcG9uZW50U3RhdGVEZWZhdWx0czogeyBwcm9wTmFtZTogQ29tcG9uZW50U3RhdGVLZXlzOyBkZWZhdWx0VmFsdWU6IHVua25vd24gfVtdID0gW1xuXHRcdFx0XHR7IHByb3BOYW1lOiBcIm5hbWVcIiwgZGVmYXVsdFZhbHVlOiBcIlwiIH0sXG5cdFx0XHRcdHsgcHJvcE5hbWU6IFwidXJsXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcInV1aWRcIiwgZGVmYXVsdFZhbHVlOiBcIlwiIH0sXG5cdFx0XHRcdHsgcHJvcE5hbWU6IFwiY29tcG9uZW50TmFtZVwiLCBkZWZhdWx0VmFsdWU6IFwidmlld1wiIH0sXG5cdFx0XHRcdHsgcHJvcE5hbWU6IFwiaW5pdGlhbFVybFwiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSxcblx0XHRcdFx0eyBwcm9wTmFtZTogXCJwcm9jZXNzQWZmaW5pdHlcIiwgZGVmYXVsdFZhbHVlOiBcIlwiIH0sXG5cdFx0XHRcdHsgcHJvcE5hbWU6IFwiaXNDbG9zYWJsZVwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSxcblx0XHRcdFx0eyBwcm9wTmFtZTogXCJib3VuZHNcIiwgZGVmYXVsdFZhbHVlOiB7IHg6IDEsIHk6IDEsIHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSB9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcImRldGFjaE9uQ2xvc2VcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0XHRcdHsgcHJvcE5hbWU6IFwiaXNDbG9zYWJsZVwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSxcblx0XHRcdFx0eyBwcm9wTmFtZTogXCJwcmV2ZW50RHJhZ091dFwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG5cdFx0XHRcdHsgcHJvcE5hbWU6IFwiYWNjZWxlcmF0b3JcIiwgZGVmYXVsdFZhbHVlOiB7IHpvb206IHRydWUgfSB9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcInpvb21MZXZlbFwiLCBkZWZhdWx0VmFsdWU6IDAgfSxcblx0XHRcdFx0eyBwcm9wTmFtZTogXCJwZXJtaXNzaW9uc1wiLCBkZWZhdWx0VmFsdWU6IHt9IH0sXG5cdFx0XHRcdHsgcHJvcE5hbWU6IFwiY29udGV4dE1lbnVcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRwcm9wTmFtZTogXCJjb250ZXh0TWVudU9wdGlvbnNcIixcblx0XHRcdFx0XHRkZWZhdWx0VmFsdWU6IHtcblx0XHRcdFx0XHRcdGVuYWJsZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHR0ZW1wbGF0ZTogW1xuXHRcdFx0XHRcdFx0XHRcInNwZWxsQ2hlY2tcIixcblx0XHRcdFx0XHRcdFx0XCJzZXBhcmF0b3JcIixcblx0XHRcdFx0XHRcdFx0XCJwcmludFwiLFxuXHRcdFx0XHRcdFx0XHRcInNlcGFyYXRvclwiLFxuXHRcdFx0XHRcdFx0XHRcImN1dFwiLFxuXHRcdFx0XHRcdFx0XHRcImNvcHlcIixcblx0XHRcdFx0XHRcdFx0XCJwYXN0ZVwiLFxuXHRcdFx0XHRcdFx0XHRcInVuZG9cIixcblx0XHRcdFx0XHRcdFx0XCJyZWRvXCIsXG5cdFx0XHRcdFx0XHRcdFwic2VsZWN0QWxsXCIsXG5cdFx0XHRcdFx0XHRcdFwiaW5zcGVjdFwiLFxuXHRcdFx0XHRcdFx0XHRcInJlbG9hZFwiXG5cdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcInByZWxvYWRTY3JpcHRzXCIsIGRlZmF1bHRWYWx1ZTogW10gfSxcblx0XHRcdFx0Ly8gU2tpcCB0byBtYWtlIHBsYXRmb3JtIGRlcGVuZGVudCBhbmQgcmVtb3ZlIGJlbG93XG5cdFx0XHRcdC8vIHsgcHJvcE5hbWU6IFwiaG90a2V5c1wiLCBkZWZhdWx0VmFsdWU6IFtdIH0sXG5cdFx0XHRcdHsgcHJvcE5hbWU6IFwiZW5hYmxlQmVmb3JlVW5sb2FkXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcblx0XHRcdFx0eyBwcm9wTmFtZTogXCJiYWNrZ3JvdW5kVGhyb3R0bGluZ1wiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHByb3BOYW1lOiBcImF1dG9SZXNpemVcIixcblx0XHRcdFx0XHRkZWZhdWx0VmFsdWU6IHtcblx0XHRcdFx0XHRcdHdpZHRoOiBmYWxzZSxcblx0XHRcdFx0XHRcdGhlaWdodDogZmFsc2Vcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHsgcHJvcE5hbWU6IFwiem9vbUxldmVsXCIsIGRlZmF1bHRWYWx1ZTogMCB9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcImZkYzNJbnRlcm9wQXBpXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcImludGVyb3BcIiwgZGVmYXVsdFZhbHVlOiB7fSB9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcImN1c3RvbURhdGFcIiwgZGVmYXVsdFZhbHVlOiB7fSB9LFxuXHRcdFx0XHR7IHByb3BOYW1lOiBcImNvbnRlbnROYXZpZ2F0aW9uXCIsIGRlZmF1bHRWYWx1ZToge30gfVxuXHRcdFx0XTtcblxuXHRcdFx0Zm9yIChjb25zdCBjb21wb25lbnRTdGF0ZURlZmF1bHQgb2YgY29tcG9uZW50U3RhdGVEZWZhdWx0cykge1xuXHRcdFx0XHRyZW1vdmVQcm9wSWZOb25EZWZhdWx0PE9wZW5GaW4uVmlld0NyZWF0aW9uT3B0aW9ucywgQ29tcG9uZW50U3RhdGVLZXlzPihcblx0XHRcdFx0XHRjb21wb25lbnRTdGF0ZSxcblx0XHRcdFx0XHRjb21wb25lbnRTdGF0ZURlZmF1bHQucHJvcE5hbWUsXG5cdFx0XHRcdFx0Y29tcG9uZW50U3RhdGVEZWZhdWx0LmRlZmF1bHRWYWx1ZVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyByZW1vdmUgcGxhdGZvcm0gZGVwZW5kZW50IHByb3BzXG5cdFx0XHRyZW1vdmVQcm9wPE9wZW5GaW4uVmlld0NyZWF0aW9uT3B0aW9ucywgQ29tcG9uZW50U3RhdGVLZXlzPihjb21wb25lbnRTdGF0ZSwgXCJob3RrZXlzXCIpO1xuXHRcdH1cblx0fVxuXG5cdGlmIChjb21wb25lbnQuY29udGVudCkge1xuXHRcdGZvciAoY29uc3QgY29tcCBvZiBjb21wb25lbnQuY29udGVudCkge1xuXHRcdFx0cGxhdGZvcm1MYXlvdXRDb21wb25lbnRUb1N0b3JhZ2UoY29tcCk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogUmVtb3ZlIGEgcHJvcGVydHkgZm9yIGFuIG9iamVjdCBidXQgaWYgaXMgZGlmZmVyZW50IGZyb20gZGVmYXVsdC5cbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byB1cGRhdGUuXG4gKiBAcGFyYW0gcHJvcE5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGNoZWNrLlxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiByZW1vdmVQcm9wSWZOb25EZWZhdWx0PFQsIEsgZXh0ZW5kcyBrZXlvZiBUIHwgc3RyaW5nPihcblx0b2JqOiBQYXJ0aWFsPFQ+LFxuXHRwcm9wTmFtZTogSyxcblx0ZGVmYXVsdFZhbHVlOiB1bmtub3duXG4pOiB2b2lkIHtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcblx0aWYgKHByb3BOYW1lIGluIG9iaiAmJiBKU09OLnN0cmluZ2lmeSgob2JqIGFzIGFueSlbcHJvcE5hbWVdKSA9PT0gSlNPTi5zdHJpbmdpZnkoZGVmYXVsdFZhbHVlKSkge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5cdFx0ZGVsZXRlIChvYmogYXMgYW55KVtwcm9wTmFtZV07XG5cdH1cbn1cblxuLyoqXG4gKiBSZW1vdmUgYSBwcm9wZXJ0eSBmb3IgYW4gb2JqZWN0LlxuICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIHJlbW92ZSBmcm9tLlxuICogQHBhcmFtIHByb3BOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBjb3B5LlxuICovXG5mdW5jdGlvbiByZW1vdmVQcm9wPFQsIEsgZXh0ZW5kcyBrZXlvZiBUIHwgc3RyaW5nPihvYmo6IFBhcnRpYWw8VD4sIHByb3BOYW1lOiBLKTogdm9pZCB7XG5cdGlmIChwcm9wTmFtZSBpbiBvYmopIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXHRcdGRlbGV0ZSAob2JqIGFzIGFueSlbcHJvcE5hbWVdO1xuXHR9XG59XG4iLCJpbXBvcnQgdHlwZSBPcGVuRmluIGZyb20gXCJAb3BlbmZpbi9jb3JlXCI7XG5pbXBvcnQge1xuXHRnZXRDdXJyZW50U3luYyxcblx0dHlwZSBBbmFseXRpY3NFdmVudCxcblx0dHlwZSBDb2xvclNjaGVtZU9wdGlvblR5cGUsXG5cdHR5cGUgQ3JlYXRlU2F2ZWRQYWdlUmVxdWVzdCxcblx0dHlwZSBDcmVhdGVTYXZlZFdvcmtzcGFjZVJlcXVlc3QsXG5cdHR5cGUgT3Blbkdsb2JhbENvbnRleHRNZW51UGF5bG9hZCxcblx0dHlwZSBPcGVuUGFnZVRhYkNvbnRleHRNZW51UGF5bG9hZCxcblx0dHlwZSBPcGVuVmlld1RhYkNvbnRleHRNZW51UGF5bG9hZCxcblx0dHlwZSBQYWdlLFxuXHR0eXBlIFVwZGF0ZVNhdmVkUGFnZVJlcXVlc3QsXG5cdHR5cGUgVXBkYXRlU2F2ZWRXb3Jrc3BhY2VSZXF1ZXN0LFxuXHR0eXBlIFdvcmtzcGFjZSxcblx0dHlwZSBXb3Jrc3BhY2VQbGF0Zm9ybVByb3ZpZGVyXG59IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCAqIGFzIGFuYWx5dGljc1Byb3ZpZGVyIGZyb20gXCIuLi9hbmFseXRpY3NcIjtcbmltcG9ydCB7IGdldFRvb2xiYXJCdXR0b25zLCB1cGRhdGVCcm93c2VyV2luZG93QnV0dG9uc0NvbG9yU2NoZW1lIH0gZnJvbSBcIi4uL2J1dHRvbnNcIjtcbmltcG9ydCAqIGFzIGVuZHBvaW50UHJvdmlkZXIgZnJvbSBcIi4uL2VuZHBvaW50XCI7XG5pbXBvcnQgeyBmaXJlTGlmZWN5Y2xlRXZlbnQgfSBmcm9tIFwiLi4vbGlmZWN5Y2xlXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiLi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBnZXRHbG9iYWxNZW51LCBnZXRQYWdlTWVudSwgZ2V0Vmlld01lbnUgfSBmcm9tIFwiLi4vbWVudVwiO1xuaW1wb3J0IHsgZ2V0U2V0dGluZ3MgfSBmcm9tIFwiLi4vc2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIHsgUGxhdGZvcm1BbmFseXRpY3NFdmVudCB9IGZyb20gXCIuLi9zaGFwZXMvYW5hbHl0aWNzLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDYXNjYWRpbmdXaW5kb3dPZmZzZXRTdHJhdGVneSB9IGZyb20gXCIuLi9zaGFwZXMvYnJvd3Nlci1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0UGFnZUNoYW5nZWRMaWZlY3ljbGVQYXlsb2FkLFxuXHRXb3Jrc3BhY2VDaGFuZ2VkTGlmZWN5Y2xlUGF5bG9hZFxufSBmcm9tIFwiLi4vc2hhcGVzL2xpZmVjeWNsZS1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0RW5kcG9pbnRQYWdlR2V0UmVxdWVzdCxcblx0RW5kcG9pbnRQYWdlR2V0UmVzcG9uc2UsXG5cdEVuZHBvaW50UGFnZUxpc3RSZXF1ZXN0LFxuXHRFbmRwb2ludFBhZ2VMaXN0UmVzcG9uc2UsXG5cdEVuZHBvaW50UGFnZVJlbW92ZVJlcXVlc3QsXG5cdEVuZHBvaW50UGFnZVNldFJlcXVlc3QsXG5cdEVuZHBvaW50V29ya3NwYWNlR2V0UmVxdWVzdCxcblx0RW5kcG9pbnRXb3Jrc3BhY2VHZXRSZXNwb25zZSxcblx0RW5kcG9pbnRXb3Jrc3BhY2VMaXN0UmVxdWVzdCxcblx0RW5kcG9pbnRXb3Jrc3BhY2VMaXN0UmVzcG9uc2UsXG5cdEVuZHBvaW50V29ya3NwYWNlUmVtb3ZlUmVxdWVzdCxcblx0RW5kcG9pbnRXb3Jrc3BhY2VTZXRSZXF1ZXN0LFxuXHRQbGF0Zm9ybVByb3ZpZGVyT3B0aW9uc1xufSBmcm9tIFwiLi4vc2hhcGVzL3BsYXRmb3JtLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBWZXJzaW9uSW5mbyB9IGZyb20gXCIuLi9zaGFwZXMvdmVyc2lvbi1zaGFwZXNcIjtcbmltcG9ydCB7IGFwcGx5Q2xpZW50U25hcHNob3QsIGRlY29yYXRlU25hcHNob3QgfSBmcm9tIFwiLi4vc25hcHNob3Qtc291cmNlXCI7XG5pbXBvcnQgeyBzZXRDdXJyZW50Q29sb3JTY2hlbWVNb2RlIH0gZnJvbSBcIi4uL3RoZW1lc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgZ2V0QWxsVmlzaWJsZVdpbmRvd3MsIGdldFBhZ2VCb3VuZHMgfSBmcm9tIFwiLi9icm93c2VyXCI7XG5pbXBvcnQgeyBjbG9zZWRvd24gYXMgY2xvc2Vkb3duUGxhdGZvcm0gfSBmcm9tIFwiLi9wbGF0Zm9ybVwiO1xuaW1wb3J0IHsgbWFwUGxhdGZvcm1QYWdlVG9TdG9yYWdlLCBtYXBQbGF0Zm9ybVdvcmtzcGFjZVRvU3RvcmFnZSB9IGZyb20gXCIuL3BsYXRmb3JtLW1hcHBlclwiO1xuXG5jb25zdCBXT1JLU1BBQ0VfRU5EUE9JTlRfSURfTElTVCA9IFwid29ya3NwYWNlLWxpc3RcIjtcbmNvbnN0IFdPUktTUEFDRV9FTkRQT0lOVF9JRF9HRVQgPSBcIndvcmtzcGFjZS1nZXRcIjtcbmNvbnN0IFdPUktTUEFDRV9FTkRQT0lOVF9JRF9TRVQgPSBcIndvcmtzcGFjZS1zZXRcIjtcbmNvbnN0IFdPUktTUEFDRV9FTkRQT0lOVF9JRF9SRU1PVkUgPSBcIndvcmtzcGFjZS1yZW1vdmVcIjtcblxuY29uc3QgUEFHRV9FTkRQT0lOVF9JRF9MSVNUID0gXCJwYWdlLWxpc3RcIjtcbmNvbnN0IFBBR0VfRU5EUE9JTlRfSURfR0VUID0gXCJwYWdlLWdldFwiO1xuY29uc3QgUEFHRV9FTkRQT0lOVF9JRF9SRU1PVkUgPSBcInBhZ2UtcmVtb3ZlXCI7XG5jb25zdCBQQUdFX0VORFBPSU5UX0lEX1NFVCA9IFwicGFnZS1zZXRcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiUGxhdGZvcm1PdmVycmlkZVwiKTtcblxubGV0IHdpbmRvd0RlZmF1bHRMZWZ0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5sZXQgd2luZG93RGVmYXVsdFRvcDogbnVtYmVyIHwgdW5kZWZpbmVkO1xubGV0IHdpbmRvd1Bvc2l0aW9uaW5nU3RyYXRlZ3k6IENhc2NhZGluZ1dpbmRvd09mZnNldFN0cmF0ZWd5IHwgdW5kZWZpbmVkO1xubGV0IGRpc2FibGVTdG9yYWdlTWFwcGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBPdmVycmlkZSBtZXRob2RzIGluIHRoZSBwbGF0Zm9ybS5cbiAqIEBwYXJhbSBXb3Jrc3BhY2VQbGF0Zm9ybVByb3ZpZGVyIFRoZSB3b3Jrc3BhY2UgcGxhdGZvcm0gY2xhc3MgdG8gZXh0ZW5kLlxuICogQHBhcmFtIHBsYXRmb3JtUHJvdmlkZXJTZXR0aW5ncyBUaGUgc2V0dGluZ3MgZm9yIHRoZSBwbGF0Zm9ybSBwcm92aWRlci5cbiAqIEBwYXJhbSB2ZXJzaW9uSW5mbyBUaGUgYXBwIHZlcnNpb24gaW5mby5cbiAqIEByZXR1cm5zIFRoZSBvdmVycmlkZGVuIGNsYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb3ZlcnJpZGVDYWxsYmFjayhcblx0V29ya3NwYWNlUGxhdGZvcm1Qcm92aWRlcjogT3BlbkZpbi5Db25zdHJ1Y3RvcjxXb3Jrc3BhY2VQbGF0Zm9ybVByb3ZpZGVyPixcblx0cGxhdGZvcm1Qcm92aWRlclNldHRpbmdzOiBQbGF0Zm9ybVByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCxcblx0dmVyc2lvbkluZm86IFZlcnNpb25JbmZvXG4pOiBXb3Jrc3BhY2VQbGF0Zm9ybVByb3ZpZGVyIHtcblx0ZGlzYWJsZVN0b3JhZ2VNYXBwaW5nID0gcGxhdGZvcm1Qcm92aWRlclNldHRpbmdzPy5kaXNhYmxlU3RvcmFnZU1hcHBpbmcgPz8gZmFsc2U7XG5cblx0LyoqXG5cdCAqIENyZWF0ZSBhIGNsYXNzIHdoaWNoIG92ZXJyaWRlcyB0aGUgcGxhdGZvcm0gcHJvdmlkZXIuXG5cdCAqL1xuXHRjbGFzcyBPdmVycmlkZSBleHRlbmRzIFdvcmtzcGFjZVBsYXRmb3JtUHJvdmlkZXIge1xuXHRcdC8qKlxuXHRcdCAqIFN1cHBvcnRzIGxhdW5jaGluZyBhIG1hbmlmZXN0IGludG8gYSBwbGF0Zm9ybS5cblx0XHQgKiBAcGFyYW0gcGF5bG9hZCBUaGUgbWFuaWZlc3QgdG8gbG9hZCBpbnRvIHRoZSBwbGF0Zm9ybVxuXHRcdCAqIEByZXR1cm5zIG5vdGhpbmcuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGxhdW5jaEludG9QbGF0Zm9ybShwYXlsb2FkOiBPcGVuRmluLkxhdW5jaEludG9QbGF0Zm9ybVBheWxvYWQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcImxhdW5jaEludG9QbGF0Zm9ybSBjYWxsZWQuIFBsZWFzZSB1c2UgdGhlIGluaXRPcHRpb25zUHJvdmlkZXIgZm9yIGxvYWRpbmcgY29udGVudCBpbnRvIHRoZSBwbGF0Zm9ybS5cIixcblx0XHRcdFx0cGF5bG9hZFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBHZXRzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHdpbmRvd3MgYW5kIHRoZWlyIHZpZXdzIGFuZCByZXR1cm5zIGEgc25hcHNob3Qgb2JqZWN0IGNvbnRhaW5pbmcgdGhhdCBpbmZvLlxuXHRcdCAqIEBwYXJhbSBwYXlsb2FkIFVuZGVmaW5lZCB1bmxlc3MgeW91J3ZlIGRlZmluZWQgYSBjdXN0b20gYGdldFNuYXBzaG90YCBwcm90b2NvbC5cblx0XHQgKiBAcGFyYW0gaWRlbnRpdHkgSWRlbnRpdHkgb2YgdGhlIGVudGl0eSB0aGF0IGNhbGxlZCBnZXRTbmFwc2hvdC5cblx0XHQgKiBAcmV0dXJucyBTbmFwc2hvdCBvZiBjdXJyZW50IHBsYXRmb3JtIHN0YXRlLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBnZXRTbmFwc2hvdChwYXlsb2FkOiB1bmRlZmluZWQsIGlkZW50aXR5OiBPcGVuRmluLklkZW50aXR5KTogUHJvbWlzZTxPcGVuRmluLlNuYXBzaG90PiB7XG5cdFx0XHRjb25zdCBzbmFwc2hvdCA9IGF3YWl0IHN1cGVyLmdldFNuYXBzaG90KHBheWxvYWQsIGlkZW50aXR5KTtcblxuXHRcdFx0Ly8gRGVjb3JhdGUgdGhlIGRlZmF1bHQgc25hcHNob3Qgd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBjb25uZWN0aW9uIGNsaWVudHMuXG5cdFx0XHRyZXR1cm4gZGVjb3JhdGVTbmFwc2hvdChzbmFwc2hvdCk7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSGFuZGxlcyByZXF1ZXN0cyB0byBhcHBseSBhIHNuYXBzaG90IHRvIHRoZSBjdXJyZW50IFBsYXRmb3JtLlxuXHRcdCAqIEBwYXJhbSBwYXlsb2FkIFBheWxvYWQgY29udGFpbmluZyB0aGUgc25hcHNob3QgdG8gYmUgYXBwbGllZCwgYXMgd2VsbCBhcyBhbnkgb3B0aW9ucy5cblx0XHQgKiBAcGFyYW0gaWRlbnRpdHkgSWRlbnRpdHkgb2YgdGhlIGVudGl0eSB0aGF0IGNhbGxlZCBhcHBseVNuYXBzaG90LlxuXHRcdCAqIFVuZGVmaW5lZCBpZiBjYWxsZWQgaW50ZXJuYWxseSAoZS5nLiB3aGVuIG9wZW5pbmcgdGhlIGluaXRpYWwgc25hcHNob3QpLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBhcHBseVNuYXBzaG90KFxuXHRcdFx0cGF5bG9hZDogT3BlbkZpbi5BcHBseVNuYXBzaG90UGF5bG9hZCxcblx0XHRcdGlkZW50aXR5PzogT3BlbkZpbi5JZGVudGl0eVxuXHRcdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0Ly8gVXNlIHRoZSBkZWNvcmF0ZWQgc25hcHNob3QgdG8gb3BlbiBhbnkgY29ubmVjdGVkIGNsaWVudHNcblx0XHRcdGF3YWl0IFByb21pc2UuYWxsKFtzdXBlci5hcHBseVNuYXBzaG90KHBheWxvYWQsIGlkZW50aXR5KSwgYXBwbHlDbGllbnRTbmFwc2hvdChwYXlsb2FkLnNuYXBzaG90KV0pO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciBnZXR0aW5nIGEgbGlzdCBvZiBzYXZlZCB3b3Jrc3BhY2VzIGZyb20gcGVyc2lzdGVudCBzdG9yYWdlLlxuXHRcdCAqIEBwYXJhbSBxdWVyeSBhbiBvcHRpb25hbCBxdWVyeS5cblx0XHQgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBzYXZlZCB3b3Jrc3BhY2VzLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBnZXRTYXZlZFdvcmtzcGFjZXMocXVlcnk/OiBzdHJpbmcpOiBQcm9taXNlPFdvcmtzcGFjZVtdPiB7XG5cdFx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gaW1wbGVtZW50YXRpb24gaGVyZSBpZiB5b3UgYXJlIHN0b3JpbmcgeW91ciB3b3Jrc3BhY2VzXG5cdFx0XHQvLyBpbiBub24tZGVmYXVsdCBsb2NhdGlvbiAoZS5nLiBvbiB0aGUgc2VydmVyIGluc3RlYWQgb2YgbG9jYWxseSlcblx0XHRcdGlmICghaXNFbXB0eShxdWVyeSkpIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYFNhdmVkIHdvcmtzcGFjZXMgcmVxdWVzdGVkIHdpdGggcXVlcnk6ICR7cXVlcnl9YCk7XG5cdFx0XHR9XG5cdFx0XHRsb2dnZXIuaW5mbyhgQ2hlY2tpbmcgZm9yIGN1c3RvbSB3b3Jrc3BhY2Ugc3RvcmFnZSB3aXRoIGVuZHBvaW50IGlkOiAke1dPUktTUEFDRV9FTkRQT0lOVF9JRF9MSVNUfWApO1xuXHRcdFx0aWYgKGVuZHBvaW50UHJvdmlkZXIuaGFzRW5kcG9pbnQoV09SS1NQQUNFX0VORFBPSU5UX0lEX0xJU1QpKSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiUmVxdWVzdGluZyBzYXZlZCB3b3Jrc3BhY2VzIGZyb20gY3VzdG9tIHN0b3JhZ2VcIik7XG5cdFx0XHRcdGNvbnN0IHdvcmtzcGFjZXNSZXNwb25zZSA9IGF3YWl0IGVuZHBvaW50UHJvdmlkZXIucmVxdWVzdFJlc3BvbnNlPFxuXHRcdFx0XHRcdEVuZHBvaW50V29ya3NwYWNlTGlzdFJlcXVlc3QsXG5cdFx0XHRcdFx0RW5kcG9pbnRXb3Jrc3BhY2VMaXN0UmVzcG9uc2Vcblx0XHRcdFx0PihXT1JLU1BBQ0VfRU5EUE9JTlRfSURfTElTVCwgeyBwbGF0Zm9ybTogZmluLm1lLmlkZW50aXR5LnV1aWQsIHF1ZXJ5IH0pO1xuXG5cdFx0XHRcdGlmICh3b3Jrc3BhY2VzUmVzcG9uc2UpIHtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcIlJldHVybmluZyBzYXZlZCB3b3Jrc3BhY2VzIGZyb20gY3VzdG9tIHN0b3JhZ2VcIik7XG5cdFx0XHRcdFx0cmV0dXJuIE9iamVjdC52YWx1ZXMod29ya3NwYWNlc1Jlc3BvbnNlKS5tYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZS5wYXlsb2FkKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRsb2dnZXIud2FybihcIk5vIHJlc3BvbnNlIGdldHRpbmcgc2F2ZWQgd29ya3NwYWNlcyBmcm9tIGN1c3RvbSBzdG9yYWdlXCIpO1xuXHRcdFx0XHRyZXR1cm4gW107XG5cdFx0XHR9XG5cdFx0XHRsb2dnZXIuaW5mbyhcIlJlcXVlc3Rpbmcgc2F2ZWQgd29ya3NwYWNlcyBmcm9tIGRlZmF1bHQgc3RvcmFnZVwiKTtcblx0XHRcdGNvbnN0IHNhdmVkV29ya3NwYWNlcyA9IGF3YWl0IHN1cGVyLmdldFNhdmVkV29ya3NwYWNlcyhxdWVyeSk7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIlJldHVybmluZyBzYXZlZCB3b3Jrc3BhY2VzIGZyb20gZGVmYXVsdCBzdG9yYWdlXCIpO1xuXHRcdFx0cmV0dXJuIHNhdmVkV29ya3NwYWNlcztcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBJbXBsZW1lbnRhdGlvbiBmb3IgZ2V0dGluZyBhIHNpbmdsZSB3b3Jrc3BhY2UgaW4gcGVyc2lzdGVudCBzdG9yYWdlLlxuXHRcdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIHdvcmtzcGFjZSB0byBnZXQuXG5cdFx0ICogQHJldHVybnMgVGhlIHdvcmtzcGFjZS5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgZ2V0U2F2ZWRXb3Jrc3BhY2UoaWQ6IHN0cmluZyk6IFByb21pc2U8V29ya3NwYWNlPiB7XG5cdFx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gaW1wbGVtZW50YXRpb24gaGVyZSBpZiB5b3UgYXJlIHN0b3JpbmcgeW91ciB3b3Jrc3BhY2VzXG5cdFx0XHQvLyBpbiBub24tZGVmYXVsdCBsb2NhdGlvbiAoZS5nLiBvbiB0aGUgc2VydmVyIGluc3RlYWQgb2YgbG9jYWxseSlcblx0XHRcdGxvZ2dlci5pbmZvKGBDaGVja2luZyBmb3IgY3VzdG9tIHdvcmtzcGFjZSBzdG9yYWdlIHdpdGggZW5kcG9pbnQgaWQ6ICR7V09SS1NQQUNFX0VORFBPSU5UX0lEX0dFVH1gKTtcblx0XHRcdGlmIChlbmRwb2ludFByb3ZpZGVyLmhhc0VuZHBvaW50KFdPUktTUEFDRV9FTkRQT0lOVF9JRF9HRVQpKSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBSZXF1ZXN0aW5nIHNhdmVkIHdvcmtzcGFjZSBmcm9tIGN1c3RvbSBzdG9yYWdlIGZvciB3b3Jrc3BhY2UgaWQ6ICR7aWR9YCk7XG5cdFx0XHRcdGNvbnN0IHdvcmtzcGFjZVJlc3BvbnNlID0gYXdhaXQgZW5kcG9pbnRQcm92aWRlci5yZXF1ZXN0UmVzcG9uc2U8XG5cdFx0XHRcdFx0RW5kcG9pbnRXb3Jrc3BhY2VHZXRSZXF1ZXN0LFxuXHRcdFx0XHRcdEVuZHBvaW50V29ya3NwYWNlR2V0UmVzcG9uc2Vcblx0XHRcdFx0PihXT1JLU1BBQ0VfRU5EUE9JTlRfSURfR0VULCB7IHBsYXRmb3JtOiBmaW4ubWUuaWRlbnRpdHkudXVpZCwgaWQgfSk7XG5cdFx0XHRcdGlmICh3b3Jrc3BhY2VSZXNwb25zZSkge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBSZXR1cm5pbmcgc2F2ZWQgd29ya3NwYWNlIGZyb20gY3VzdG9tIHN0b3JhZ2UgZm9yIHdvcmtzcGFjZSBpZDogJHtpZH1gKTtcblx0XHRcdFx0XHRyZXR1cm4gd29ya3NwYWNlUmVzcG9uc2UucGF5bG9hZDtcblx0XHRcdFx0fVxuXHRcdFx0XHRsb2dnZXIud2FybihgTm8gcmVzcG9uc2UgZ2V0dGluZyBzYXZlZCB3b3Jrc3BhY2UgZnJvbSBjdXN0b20gc3RvcmFnZSBmb3Igd29ya3NwYWNlIGlkOiAke2lkfWApO1xuXHRcdFx0XHRyZXR1cm4ge30gYXMgV29ya3NwYWNlO1xuXHRcdFx0fVxuXHRcdFx0bG9nZ2VyLmluZm8oYFJlcXVlc3Rpbmcgc2F2ZWQgd29ya3NwYWNlIGZyb20gZGVmYXVsdCBzdG9yYWdlIGZvciB3b3Jrc3BhY2UgaWQ6ICR7aWR9YCk7XG5cdFx0XHRjb25zdCBzYXZlZFdvcmtzcGFjZSA9IGF3YWl0IHN1cGVyLmdldFNhdmVkV29ya3NwYWNlKGlkKTtcblx0XHRcdGxvZ2dlci5pbmZvKGBSZXR1cm5pbmcgc2F2ZWQgd29ya3NwYWNlIGZyb20gZGVmYXVsdCBzdG9yYWdlIGZvciB3b3Jrc3BhY2UgaWQ6ICR7aWR9YCk7XG5cdFx0XHRyZXR1cm4gc2F2ZWRXb3Jrc3BhY2U7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSW1wbGVtZW50YXRpb24gZm9yIGNyZWF0aW5nIGEgc2F2ZWQgd29ya3NwYWNlIGluIHBlcnNpc3RlbnQgc3RvcmFnZS5cblx0XHQgKiBAcGFyYW0gcmVxIHRoZSBjcmVhdGUgc2F2ZWQgd29ya3NwYWNlIHJlcXVlc3QuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGNyZWF0ZVNhdmVkV29ya3NwYWNlKHJlcTogQ3JlYXRlU2F2ZWRXb3Jrc3BhY2VSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gaW1wbGVtZW50YXRpb24gaGVyZSBpZiB5b3UgYXJlIHN0b3JpbmcgeW91ciB3b3Jrc3BhY2VzXG5cdFx0XHQvLyBpbiBub24tZGVmYXVsdCBsb2NhdGlvbiAoZS5nLiBvbiB0aGUgc2VydmVyIGluc3RlYWQgb2YgbG9jYWxseSlcblx0XHRcdGxvZ2dlci5pbmZvKGBDaGVja2luZyBmb3IgY3VzdG9tIHdvcmtzcGFjZSBzdG9yYWdlIHdpdGggZW5kcG9pbnQgaWQ6ICR7V09SS1NQQUNFX0VORFBPSU5UX0lEX1NFVH1gKTtcblx0XHRcdGlmIChlbmRwb2ludFByb3ZpZGVyLmhhc0VuZHBvaW50KFdPUktTUEFDRV9FTkRQT0lOVF9JRF9TRVQpKSB7XG5cdFx0XHRcdGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBlbmRwb2ludFByb3ZpZGVyLmFjdGlvbjxFbmRwb2ludFdvcmtzcGFjZVNldFJlcXVlc3Q+KFxuXHRcdFx0XHRcdFdPUktTUEFDRV9FTkRQT0lOVF9JRF9TRVQsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0cGxhdGZvcm06IGZpbi5tZS5pZGVudGl0eS51dWlkLFxuXHRcdFx0XHRcdFx0aWQ6IHJlcS53b3Jrc3BhY2Uud29ya3NwYWNlSWQsXG5cdFx0XHRcdFx0XHRtZXRhRGF0YToge1xuXHRcdFx0XHRcdFx0XHR2ZXJzaW9uOiB7XG5cdFx0XHRcdFx0XHRcdFx0d29ya3NwYWNlUGxhdGZvcm1DbGllbnQ6IHZlcnNpb25JbmZvLndvcmtzcGFjZVBsYXRmb3JtQ2xpZW50LFxuXHRcdFx0XHRcdFx0XHRcdHBsYXRmb3JtQ2xpZW50OiB2ZXJzaW9uSW5mby5wbGF0Zm9ybUNsaWVudFxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0cGF5bG9hZDogZGlzYWJsZVN0b3JhZ2VNYXBwaW5nID8gcmVxLndvcmtzcGFjZSA6IG1hcFBsYXRmb3JtV29ya3NwYWNlVG9TdG9yYWdlKHJlcS53b3Jrc3BhY2UpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcykge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBTYXZlZCB3b3Jrc3BhY2Ugd2l0aCBpZDogJHtyZXEud29ya3NwYWNlLndvcmtzcGFjZUlkfSB0byBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBVbmFibGUgdG8gc2F2ZSB3b3Jrc3BhY2Ugd2l0aCBpZDogJHtyZXEud29ya3NwYWNlLndvcmtzcGFjZUlkfSB0byBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgU2F2aW5nIHdvcmtzcGFjZSB0byBkZWZhdWx0IHN0b3JhZ2UgZm9yIHdvcmtzcGFjZSBpZDogJHtyZXEud29ya3NwYWNlLndvcmtzcGFjZUlkfWApO1xuXHRcdFx0XHRhd2FpdCBzdXBlci5jcmVhdGVTYXZlZFdvcmtzcGFjZShyZXEpO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgU2F2ZWQgd29ya3NwYWNlIHRvIGRlZmF1bHQgc3RvcmFnZSBmb3Igd29ya3NwYWNlIGlkOiAke3JlcS53b3Jrc3BhY2Uud29ya3NwYWNlSWR9YCk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdGF3YWl0IGZpcmVMaWZlY3ljbGVFdmVudDxXb3Jrc3BhY2VDaGFuZ2VkTGlmZWN5Y2xlUGF5bG9hZD4ocGxhdGZvcm0sIFwid29ya3NwYWNlLWNoYW5nZWRcIiwge1xuXHRcdFx0XHRhY3Rpb246IFwiY3JlYXRlXCIsXG5cdFx0XHRcdGlkOiByZXEud29ya3NwYWNlLndvcmtzcGFjZUlkLFxuXHRcdFx0XHR3b3Jrc3BhY2U6IHJlcS53b3Jrc3BhY2Vcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciB1cGRhdGluZyBhIHNhdmVkIHdvcmtzcGFjZSBpbiBwZXJzaXN0ZW50IHN0b3JhZ2UuXG5cdFx0ICogQHBhcmFtIHJlcSB0aGUgdXBkYXRlIHNhdmVkIHdvcmtzcGFjZSByZXF1ZXN0LlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyB1cGRhdGVTYXZlZFdvcmtzcGFjZShyZXE6IFVwZGF0ZVNhdmVkV29ya3NwYWNlUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0Ly8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIGltcGxlbWVudGF0aW9uIGhlcmUgaWYgeW91IGFyZSBzdG9yaW5nIHlvdXIgd29ya3NwYWNlc1xuXHRcdFx0Ly8gaW4gbm9uLWRlZmF1bHQgbG9jYXRpb24gKGUuZy4gb24gdGhlIHNlcnZlciBpbnN0ZWFkIG9mIGxvY2FsbHkpXG5cdFx0XHRsb2dnZXIuaW5mbyhgQ2hlY2tpbmcgZm9yIGN1c3RvbSB3b3Jrc3BhY2Ugc3RvcmFnZSB3aXRoIGVuZHBvaW50IGlkOiAke1dPUktTUEFDRV9FTkRQT0lOVF9JRF9TRVR9YCk7XG5cdFx0XHRpZiAoZW5kcG9pbnRQcm92aWRlci5oYXNFbmRwb2ludChXT1JLU1BBQ0VfRU5EUE9JTlRfSURfU0VUKSkge1xuXHRcdFx0XHRjb25zdCBzdWNjZXNzID0gYXdhaXQgZW5kcG9pbnRQcm92aWRlci5hY3Rpb248RW5kcG9pbnRXb3Jrc3BhY2VTZXRSZXF1ZXN0Pihcblx0XHRcdFx0XHRXT1JLU1BBQ0VfRU5EUE9JTlRfSURfU0VULFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHBsYXRmb3JtOiBmaW4ubWUuaWRlbnRpdHkudXVpZCxcblx0XHRcdFx0XHRcdGlkOiByZXEud29ya3NwYWNlLndvcmtzcGFjZUlkLFxuXHRcdFx0XHRcdFx0bWV0YURhdGE6IHtcblx0XHRcdFx0XHRcdFx0dmVyc2lvbjoge1xuXHRcdFx0XHRcdFx0XHRcdHdvcmtzcGFjZVBsYXRmb3JtQ2xpZW50OiB2ZXJzaW9uSW5mby53b3Jrc3BhY2VQbGF0Zm9ybUNsaWVudCxcblx0XHRcdFx0XHRcdFx0XHRwbGF0Zm9ybUNsaWVudDogdmVyc2lvbkluZm8ucGxhdGZvcm1DbGllbnRcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHBheWxvYWQ6IGRpc2FibGVTdG9yYWdlTWFwcGluZyA/IHJlcS53b3Jrc3BhY2UgOiBtYXBQbGF0Zm9ybVdvcmtzcGFjZVRvU3RvcmFnZShyZXEud29ya3NwYWNlKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MpIHtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhgVXBkYXRlZCB3b3Jrc3BhY2Ugd2l0aCBpZDogJHtyZXEud29ya3NwYWNlLndvcmtzcGFjZUlkfSBhZ2FpbnN0IGN1c3RvbSBzdG9yYWdlYCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFx0XHRgVW5hYmxlIHRvIHVwZGF0ZSB3b3Jrc3BhY2Ugd2l0aCBpZDogJHtyZXEud29ya3NwYWNlLndvcmtzcGFjZUlkfSBhZ2FpbnN0IGN1c3RvbSBzdG9yYWdlYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFxuXHRcdFx0XHRcdGBTYXZpbmcgdXBkYXRlZCB3b3Jrc3BhY2UgdG8gZGVmYXVsdCBzdG9yYWdlIGZvciB3b3Jrc3BhY2UgaWQ6ICR7cmVxLndvcmtzcGFjZS53b3Jrc3BhY2VJZH0uYFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRhd2FpdCBzdXBlci51cGRhdGVTYXZlZFdvcmtzcGFjZShyZXEpO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0XHRgU2F2ZWQgdXBkYXRlZCB3b3Jrc3BhY2UgdG8gZGVmYXVsdCBzdG9yYWdlIGZvciB3b3Jrc3BhY2UgaWQ6ICR7cmVxLndvcmtzcGFjZS53b3Jrc3BhY2VJZH0uYFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHRhd2FpdCBmaXJlTGlmZWN5Y2xlRXZlbnQ8V29ya3NwYWNlQ2hhbmdlZExpZmVjeWNsZVBheWxvYWQ+KHBsYXRmb3JtLCBcIndvcmtzcGFjZS1jaGFuZ2VkXCIsIHtcblx0XHRcdFx0YWN0aW9uOiBcInVwZGF0ZVwiLFxuXHRcdFx0XHRpZDogcmVxLndvcmtzcGFjZS53b3Jrc3BhY2VJZCxcblx0XHRcdFx0d29ya3NwYWNlOiByZXEud29ya3NwYWNlXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBJbXBsZW1lbnRhdGlvbiBmb3IgZGVsZXRpbmcgYSBzYXZlZCB3b3Jrc3BhY2UgaW4gcGVyc2lzdGVudCBzdG9yYWdlLlxuXHRcdCAqIEBwYXJhbSBpZCBvZiB0aGUgaWQgb2YgdGhlIHdvcmtzcGFjZSB0byBkZWxldGUuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGRlbGV0ZVNhdmVkV29ya3NwYWNlKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdC8vIHlvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBoZXJlIGlmIHlvdSBhcmUgc3RvcmluZyB5b3VyIHdvcmtzcGFjZXNcblx0XHRcdC8vIGluIG5vbi1kZWZhdWx0IGxvY2F0aW9uIChlLmcuIG9uIHRoZSBzZXJ2ZXIgaW5zdGVhZCBvZiBsb2NhbGx5KVxuXHRcdFx0bG9nZ2VyLmluZm8oYENoZWNraW5nIGZvciBjdXN0b20gd29ya3NwYWNlIHN0b3JhZ2Ugd2l0aCBlbmRwb2ludCBpZDogJHtXT1JLU1BBQ0VfRU5EUE9JTlRfSURfUkVNT1ZFfWApO1xuXHRcdFx0aWYgKGVuZHBvaW50UHJvdmlkZXIuaGFzRW5kcG9pbnQoV09SS1NQQUNFX0VORFBPSU5UX0lEX1JFTU9WRSkpIHtcblx0XHRcdFx0Y29uc3Qgc3VjY2VzcyA9IGF3YWl0IGVuZHBvaW50UHJvdmlkZXIuYWN0aW9uPEVuZHBvaW50V29ya3NwYWNlUmVtb3ZlUmVxdWVzdD4oXG5cdFx0XHRcdFx0V09SS1NQQUNFX0VORFBPSU5UX0lEX1JFTU9WRSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRwbGF0Zm9ybTogZmluLm1lLmlkZW50aXR5LnV1aWQsXG5cdFx0XHRcdFx0XHRpZFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MpIHtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhgUmVtb3ZlZCB3b3Jrc3BhY2Ugd2l0aCBpZDogJHtpZH0gZnJvbSBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBVbmFibGUgdG8gcmVtb3ZlIHdvcmtzcGFjZSB3aXRoIGlkOiAke2lkfSBmcm9tIGN1c3RvbSBzdG9yYWdlYCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBEZWxldGluZyB3b3Jrc3BhY2UgZnJvbSBkZWZhdWx0IHN0b3JhZ2UgZm9yIHdvcmtzcGFjZSBpZDogJHtpZH1gKTtcblx0XHRcdFx0YXdhaXQgc3VwZXIuZGVsZXRlU2F2ZWRXb3Jrc3BhY2UoaWQpO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgRGVsZXRlZCB3b3Jrc3BhY2UgZnJvbSBkZWZhdWx0IHN0b3JhZ2UgZm9yIHdvcmtzcGFjZSBpZDogJHtpZH1gKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdFx0YXdhaXQgZmlyZUxpZmVjeWNsZUV2ZW50PFdvcmtzcGFjZUNoYW5nZWRMaWZlY3ljbGVQYXlsb2FkPihwbGF0Zm9ybSwgXCJ3b3Jrc3BhY2UtY2hhbmdlZFwiLCB7XG5cdFx0XHRcdGFjdGlvbjogXCJkZWxldGVcIixcblx0XHRcdFx0aWRcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciBnZXR0aW5nIGEgbGlzdCBvZiBzYXZlZCBwYWdlcyBmcm9tIHBlcnNpc3RlbnQgc3RvcmFnZS5cblx0XHQgKiBAcGFyYW0gcXVlcnkgYW4gb3B0aW9uYWwgcXVlcnkuXG5cdFx0ICogQHJldHVybnMgVGhlIGxpc3Qgb2YgcGFnZXMuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGdldFNhdmVkUGFnZXMocXVlcnk/OiBzdHJpbmcpOiBQcm9taXNlPFBhZ2VbXT4ge1xuXHRcdFx0Ly8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIGltcGxlbWVudGF0aW9uIGhlcmUgaWYgeW91IGFyZSBzdG9yaW5nIHlvdXIgcGFnZXNcblx0XHRcdC8vIGluIG5vbi1kZWZhdWx0IGxvY2F0aW9uIChlLmcuIG9uIHRoZSBzZXJ2ZXIgaW5zdGVhZCBvZiBsb2NhbGx5KVxuXHRcdFx0aWYgKCFpc0VtcHR5KHF1ZXJ5KSkge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgU2F2ZWQgcGFnZXMgcmVxdWVzdGVkIHdpdGggcXVlcnk6ICR7cXVlcnl9YCk7XG5cdFx0XHR9XG5cdFx0XHRsb2dnZXIuaW5mbyhgQ2hlY2tpbmcgZm9yIGN1c3RvbSBwYWdlIHN0b3JhZ2Ugd2l0aCBlbmRwb2ludCBpZDogJHtQQUdFX0VORFBPSU5UX0lEX0xJU1R9YCk7XG5cdFx0XHRpZiAoZW5kcG9pbnRQcm92aWRlci5oYXNFbmRwb2ludChQQUdFX0VORFBPSU5UX0lEX0xJU1QpKSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiR2V0dGluZyBzYXZlZCBwYWdlcyBmcm9tIGN1c3RvbSBzdG9yYWdlXCIpO1xuXHRcdFx0XHRjb25zdCBwYWdlc1Jlc3BvbnNlID0gYXdhaXQgZW5kcG9pbnRQcm92aWRlci5yZXF1ZXN0UmVzcG9uc2U8XG5cdFx0XHRcdFx0RW5kcG9pbnRQYWdlTGlzdFJlcXVlc3QsXG5cdFx0XHRcdFx0RW5kcG9pbnRQYWdlTGlzdFJlc3BvbnNlXG5cdFx0XHRcdD4oUEFHRV9FTkRQT0lOVF9JRF9MSVNULCB7IHBsYXRmb3JtOiBmaW4ubWUuaWRlbnRpdHkudXVpZCwgcXVlcnkgfSk7XG5cdFx0XHRcdGlmIChwYWdlc1Jlc3BvbnNlKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oXCJSZXR1cm5pbmcgc2F2ZWQgcGFnZXMgZnJvbSBjdXN0b20gc3RvcmFnZVwiKTtcblx0XHRcdFx0XHRyZXR1cm4gT2JqZWN0LnZhbHVlcyhwYWdlc1Jlc3BvbnNlKS5tYXAoKHdzKSA9PiB3cy5wYXlsb2FkKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRsb2dnZXIud2FybihcIk5vIHJlc3BvbnNlIGdldHRpbmcgc2F2ZWQgcGFnZXMgZnJvbSBjdXN0b20gc3RvcmFnZVwiKTtcblx0XHRcdFx0cmV0dXJuIFtdO1xuXHRcdFx0fVxuXHRcdFx0bG9nZ2VyLmluZm8oXCJHZXR0aW5nIHNhdmVkIHBhZ2VzIGZyb20gZGVmYXVsdCBzdG9yYWdlXCIpO1xuXHRcdFx0Y29uc3QgcGFnZXNSZXNwb25zZSA9IGF3YWl0IHN1cGVyLmdldFNhdmVkUGFnZXMocXVlcnkpO1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJSZXR1cm5pbmcgc2F2ZWQgcGFnZXMgZnJvbSBkZWZhdWx0IHN0b3JhZ2VcIik7XG5cdFx0XHRyZXR1cm4gcGFnZXNSZXNwb25zZTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBJbXBsZW1lbnRhdGlvbiBmb3IgZ2V0dGluZyBhIHNpbmdsZSBwYWdlIGluIHBlcnNpc3RlbnQgc3RvcmFnZS5cblx0XHQgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBwYWdlIHRvIGdldC5cblx0XHQgKiBAcmV0dXJucyBUaGUgcGFnZS5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgZ2V0U2F2ZWRQYWdlKGlkOiBzdHJpbmcpOiBQcm9taXNlPFBhZ2U+IHtcblx0XHRcdC8vIHlvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBoZXJlIGlmIHlvdSBhcmUgc3RvcmluZyB5b3VyIHBhZ2VzXG5cdFx0XHQvLyBpbiBub24tZGVmYXVsdCBsb2NhdGlvbiAoZS5nLiBvbiB0aGUgc2VydmVyIGluc3RlYWQgb2YgbG9jYWxseSlcblx0XHRcdGxvZ2dlci5pbmZvKGBDaGVja2luZyBmb3IgY3VzdG9tIHBhZ2Ugc3RvcmFnZSB3aXRoIGVuZHBvaW50IGlkOiAke1BBR0VfRU5EUE9JTlRfSURfR0VUfWApO1xuXHRcdFx0aWYgKGVuZHBvaW50UHJvdmlkZXIuaGFzRW5kcG9pbnQoUEFHRV9FTkRQT0lOVF9JRF9HRVQpKSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBHZXR0aW5nIHNhdmVkIHBhZ2UgZnJvbSBjdXN0b20gc3RvcmFnZSBmb3IgcGFnZSBpZDogJHtpZH1gKTtcblx0XHRcdFx0Y29uc3QgcGFnZVJlc3BvbnNlID0gYXdhaXQgZW5kcG9pbnRQcm92aWRlci5yZXF1ZXN0UmVzcG9uc2U8XG5cdFx0XHRcdFx0RW5kcG9pbnRQYWdlR2V0UmVxdWVzdCxcblx0XHRcdFx0XHRFbmRwb2ludFBhZ2VHZXRSZXNwb25zZVxuXHRcdFx0XHQ+KFBBR0VfRU5EUE9JTlRfSURfR0VULCB7XG5cdFx0XHRcdFx0cGxhdGZvcm06IGZpbi5tZS5pZGVudGl0eS51dWlkLFxuXHRcdFx0XHRcdGlkXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAocGFnZVJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oYFJldHVybmluZyBzYXZlZCBwYWdlIGZyb20gY3VzdG9tIHN0b3JhZ2UgZm9yIHBhZ2UgaWQ6ICR7aWR9YCk7XG5cdFx0XHRcdFx0cmV0dXJuIHBhZ2VSZXNwb25zZS5wYXlsb2FkO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bG9nZ2VyLndhcm4oYE5vIHJlc3BvbnNlIGdldHRpbmcgc2F2ZWQgcGFnZSBmcm9tIGN1c3RvbSBzdG9yYWdlIGZvciBwYWdlIGlkOiAke2lkfWApO1xuXHRcdFx0XHRyZXR1cm4ge30gYXMgUGFnZTtcblx0XHRcdH1cblx0XHRcdGxvZ2dlci5pbmZvKGBHZXR0aW5nIHNhdmVkIHBhZ2Ugd2l0aCBpZCAke2lkfSBmcm9tIGRlZmF1bHQgc3RvcmFnZWApO1xuXHRcdFx0Y29uc3QgcGFnZVJlc3BvbnNlID0gYXdhaXQgc3VwZXIuZ2V0U2F2ZWRQYWdlKGlkKTtcblx0XHRcdGxvZ2dlci5pbmZvKGBSZXR1cm5pbmcgc2F2ZWQgcGFnZSB3aXRoIGlkICR7aWR9IGZyb20gZGVmYXVsdCBzdG9yYWdlYCk7XG5cdFx0XHRyZXR1cm4gcGFnZVJlc3BvbnNlO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciBjcmVhdGluZyBhIHNhdmVkIHBhZ2UgaW4gcGVyc2lzdGVudCBzdG9yYWdlLlxuXHRcdCAqIEBwYXJhbSByZXEgdGhlIGNyZWF0ZSBzYXZlZCBwYWdlIHJlcXVlc3QuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGNyZWF0ZVNhdmVkUGFnZShyZXE6IENyZWF0ZVNhdmVkUGFnZVJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblxuXHRcdFx0aWYgKGlzRW1wdHkocmVxLnBhZ2UuY3VzdG9tRGF0YSkpIHtcblx0XHRcdFx0cmVxLnBhZ2UuY3VzdG9tRGF0YSA9IHt9O1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgd2luZG93Qm91bmRzID0gYXdhaXQgZ2V0UGFnZUJvdW5kcyhyZXEucGFnZS5wYWdlSWQpO1xuXG5cdFx0XHRpZiAoaXNFbXB0eSh3aW5kb3dCb3VuZHMpKSB7XG5cdFx0XHRcdC8vIGxpa2VseSB0aGlzIGlzIGEgbmV3IHNhdmUgcGFnZSBhcyBpbXBsZW1lbnRhdGlvbiBhcyB3ZSB3ZXJlIHVuYWJsZSB0byBmaW5kIHRoaXMgcGFnZSBpZCBpbiB0aGUgYXZhaWxhYmxlIHBhZ2VzXG5cdFx0XHRcdGNvbnN0IHBhcmVudElkZW50aXR5ID0gYXdhaXQgcGxhdGZvcm0uQnJvd3Nlci5nZXRMYXN0Rm9jdXNlZFdpbmRvdygpO1xuXHRcdFx0XHRjb25zdCBwYXJlbnRXaW5kb3cgPSBmaW4uV2luZG93LndyYXBTeW5jKHBhcmVudElkZW50aXR5KTtcblx0XHRcdFx0d2luZG93Qm91bmRzID0gYXdhaXQgcGFyZW50V2luZG93LmdldEJvdW5kcygpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIWlzRW1wdHkod2luZG93Qm91bmRzKSkge1xuXHRcdFx0XHRyZXEucGFnZS5jdXN0b21EYXRhLndpbmRvd0JvdW5kcyA9IHdpbmRvd0JvdW5kcztcblx0XHRcdH1cblxuXHRcdFx0Ly8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIGltcGxlbWVudGF0aW9uIGhlcmUgaWYgeW91IGFyZSBzdG9yaW5nIHlvdXIgcGFnZXNcblx0XHRcdC8vIGluIG5vbi1kZWZhdWx0IGxvY2F0aW9uIChlLmcuIG9uIHRoZSBzZXJ2ZXIgaW5zdGVhZCBvZiBsb2NhbGx5KVxuXHRcdFx0bG9nZ2VyLmluZm8oYENoZWNraW5nIGZvciBjdXN0b20gcGFnZSBzdG9yYWdlIHdpdGggZW5kcG9pbnQgaWQ6ICR7UEFHRV9FTkRQT0lOVF9JRF9TRVR9YCk7XG5cdFx0XHRpZiAoZW5kcG9pbnRQcm92aWRlci5oYXNFbmRwb2ludChQQUdFX0VORFBPSU5UX0lEX1NFVCkpIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYFNhdmluZyBwYWdlIHdpdGggaWQ6ICR7cmVxLnBhZ2UucGFnZUlkfSB0byBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHRjb25zdCBzdWNjZXNzID0gYXdhaXQgZW5kcG9pbnRQcm92aWRlci5hY3Rpb248RW5kcG9pbnRQYWdlU2V0UmVxdWVzdD4oUEFHRV9FTkRQT0lOVF9JRF9TRVQsIHtcblx0XHRcdFx0XHRwbGF0Zm9ybTogZmluLm1lLmlkZW50aXR5LnV1aWQsXG5cdFx0XHRcdFx0aWQ6IHJlcS5wYWdlLnBhZ2VJZCxcblx0XHRcdFx0XHRtZXRhRGF0YToge1xuXHRcdFx0XHRcdFx0dmVyc2lvbjoge1xuXHRcdFx0XHRcdFx0XHR3b3Jrc3BhY2VQbGF0Zm9ybUNsaWVudDogdmVyc2lvbkluZm8ud29ya3NwYWNlUGxhdGZvcm1DbGllbnQsXG5cdFx0XHRcdFx0XHRcdHBsYXRmb3JtQ2xpZW50OiB2ZXJzaW9uSW5mby5wbGF0Zm9ybUNsaWVudFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0cGF5bG9hZDogZGlzYWJsZVN0b3JhZ2VNYXBwaW5nID8gcmVxLnBhZ2UgOiBtYXBQbGF0Zm9ybVBhZ2VUb1N0b3JhZ2UocmVxLnBhZ2UpXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcykge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBTYXZlZCBwYWdlIHdpdGggaWQ6ICR7cmVxLnBhZ2UucGFnZUlkfSB0byBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBVbmFibGUgdG8gc2F2ZSBwYWdlIHdpdGggaWQ6ICR7cmVxLnBhZ2UucGFnZUlkfSB0byBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgY3JlYXRpbmcgc2F2ZWQgcGFnZSBhbmQgc2F2aW5nIHRvIGRlZmF1bHQgc3RvcmFnZS4gUGFnZUlkOiAke3JlcS5wYWdlLnBhZ2VJZH1gKTtcblx0XHRcdFx0YXdhaXQgc3VwZXIuY3JlYXRlU2F2ZWRQYWdlKHJlcSk7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBTYXZlZCBwYWdlIHdpdGggaWQ6ICR7cmVxLnBhZ2UucGFnZUlkfSB0byBkZWZhdWx0IHN0b3JhZ2VgKTtcblx0XHRcdH1cblxuXHRcdFx0YXdhaXQgZmlyZUxpZmVjeWNsZUV2ZW50PFBhZ2VDaGFuZ2VkTGlmZWN5Y2xlUGF5bG9hZD4ocGxhdGZvcm0sIFwicGFnZS1jaGFuZ2VkXCIsIHtcblx0XHRcdFx0YWN0aW9uOiBcImNyZWF0ZVwiLFxuXHRcdFx0XHRpZDogcmVxLnBhZ2UucGFnZUlkLFxuXHRcdFx0XHRwYWdlOiByZXEucGFnZVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSW1wbGVtZW50YXRpb24gZm9yIHVwZGF0aW5nIGEgc2F2ZWQgcGFnZSBpbiBwZXJzaXN0ZW50IHN0b3JhZ2UuXG5cdFx0ICogQHBhcmFtIHJlcSB0aGUgdXBkYXRlIHNhdmVkIHBhZ2UgcmVxdWVzdC5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgdXBkYXRlU2F2ZWRQYWdlKHJlcTogVXBkYXRlU2F2ZWRQYWdlUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0Y29uc3Qgd2luZG93Qm91bmRzID0gYXdhaXQgZ2V0UGFnZUJvdW5kcyhyZXEucGFnZS5wYWdlSWQpO1xuXHRcdFx0aWYgKCFpc0VtcHR5KHdpbmRvd0JvdW5kcykpIHtcblx0XHRcdFx0aWYgKGlzRW1wdHkocmVxLnBhZ2UuY3VzdG9tRGF0YSkpIHtcblx0XHRcdFx0XHRyZXEucGFnZS5jdXN0b21EYXRhID0ge307XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVxLnBhZ2UuY3VzdG9tRGF0YS53aW5kb3dCb3VuZHMgPSB3aW5kb3dCb3VuZHM7XG5cdFx0XHR9XG5cdFx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gaW1wbGVtZW50YXRpb24gaGVyZSBpZiB5b3UgYXJlIHN0b3JpbmcgeW91ciBwYWdlc1xuXHRcdFx0Ly8gaW4gbm9uLWRlZmF1bHQgbG9jYXRpb24gKGUuZy4gb24gdGhlIHNlcnZlciBpbnN0ZWFkIG9mIGxvY2FsbHkpXG5cdFx0XHRsb2dnZXIuaW5mbyhgQ2hlY2tpbmcgZm9yIGN1c3RvbSBwYWdlIHN0b3JhZ2Ugd2l0aCBlbmRwb2ludCBpZDogJHtQQUdFX0VORFBPSU5UX0lEX1NFVH1gKTtcblx0XHRcdGlmIChlbmRwb2ludFByb3ZpZGVyLmhhc0VuZHBvaW50KFBBR0VfRU5EUE9JTlRfSURfU0VUKSkge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgVXBkYXRpbmcgc2F2ZWQgcGFnZSBhbmQgc2F2aW5nIHRvIGN1c3RvbSBzdG9yYWdlIHdpdGggcGFnZSBpZDogJHtyZXEucGFnZS5wYWdlSWR9YCk7XG5cdFx0XHRcdGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBlbmRwb2ludFByb3ZpZGVyLmFjdGlvbjxFbmRwb2ludFBhZ2VTZXRSZXF1ZXN0PihQQUdFX0VORFBPSU5UX0lEX1NFVCwge1xuXHRcdFx0XHRcdHBsYXRmb3JtOiBmaW4ubWUuaWRlbnRpdHkudXVpZCxcblx0XHRcdFx0XHRpZDogcmVxLnBhZ2UucGFnZUlkLFxuXHRcdFx0XHRcdG1ldGFEYXRhOiB7XG5cdFx0XHRcdFx0XHR2ZXJzaW9uOiB7XG5cdFx0XHRcdFx0XHRcdHdvcmtzcGFjZVBsYXRmb3JtQ2xpZW50OiB2ZXJzaW9uSW5mby53b3Jrc3BhY2VQbGF0Zm9ybUNsaWVudCxcblx0XHRcdFx0XHRcdFx0cGxhdGZvcm1DbGllbnQ6IHZlcnNpb25JbmZvLnBsYXRmb3JtQ2xpZW50XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRwYXlsb2FkOiBkaXNhYmxlU3RvcmFnZU1hcHBpbmcgPyByZXEucGFnZSA6IG1hcFBsYXRmb3JtUGFnZVRvU3RvcmFnZShyZXEucGFnZSlcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmIChzdWNjZXNzKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oYFVwZGF0ZWQgcGFnZSB3aXRoIGlkOiAke3JlcS5wYWdlLnBhZ2VJZH0gYWdhaW5zdCBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBVbmFibGUgdG8gc2F2ZSBwYWdlIHdpdGggaWQ6ICR7cmVxLnBhZ2UucGFnZUlkfSBhZ2FpbnN0IGN1c3RvbSBzdG9yYWdlYCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGB1cGRhdGluZyBzYXZlZCBwYWdlIGFuZCBzYXZpbmcgdG8gZGVmYXVsdCBzdG9yYWdlIHdpdGggcGFnZSBpZDogJHtyZXEucGFnZS5wYWdlSWR9YCk7XG5cdFx0XHRcdGF3YWl0IHN1cGVyLnVwZGF0ZVNhdmVkUGFnZShyZXEpO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgVXBkYXRlZCBwYWdlIHdpdGggaWQ6ICR7cmVxLnBhZ2UucGFnZUlkfSBhZ2FpbnN0IGRlZmF1bHQgc3RvcmFnZWApO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHRhd2FpdCBmaXJlTGlmZWN5Y2xlRXZlbnQ8UGFnZUNoYW5nZWRMaWZlY3ljbGVQYXlsb2FkPihwbGF0Zm9ybSwgXCJwYWdlLWNoYW5nZWRcIiwge1xuXHRcdFx0XHRhY3Rpb246IFwidXBkYXRlXCIsXG5cdFx0XHRcdGlkOiByZXEucGFnZS5wYWdlSWQsXG5cdFx0XHRcdHBhZ2U6IHJlcS5wYWdlXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBJbXBsZW1lbnRhdGlvbiBmb3IgZGVsZXRpbmcgYSBzYXZlZCBwYWdlIGluIHBlcnNpc3RlbnQgc3RvcmFnZS5cblx0XHQgKiBAcGFyYW0gaWQgb2YgdGhlIGlkIG9mIHRoZSBwYWdlIHRvIGRlbGV0ZS5cblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgZGVsZXRlU2F2ZWRQYWdlKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdC8vIHlvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBoZXJlIGlmIHlvdSBhcmUgc3RvcmluZyB5b3VyIHBhZ2VzXG5cdFx0XHQvLyBpbiBub24tZGVmYXVsdCBsb2NhdGlvbiAoZS5nLiBvbiB0aGUgc2VydmVyIGluc3RlYWQgb2YgbG9jYWxseSlcblx0XHRcdGxvZ2dlci5pbmZvKGBDaGVja2luZyBmb3IgY3VzdG9tIHBhZ2Ugc3RvcmFnZSB3aXRoIGVuZHBvaW50IGlkOiAke1BBR0VfRU5EUE9JTlRfSURfUkVNT1ZFfWApO1xuXHRcdFx0aWYgKGVuZHBvaW50UHJvdmlkZXIuaGFzRW5kcG9pbnQoUEFHRV9FTkRQT0lOVF9JRF9SRU1PVkUpKSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBkZWxldGluZyBzYXZlZCBwYWdlIGZyb20gY3VzdG9tIHN0b3JhZ2UuIFBhZ2VJZDogJHtpZH1gKTtcblx0XHRcdFx0Y29uc3Qgc3VjY2VzcyA9IGF3YWl0IGVuZHBvaW50UHJvdmlkZXIuYWN0aW9uPEVuZHBvaW50UGFnZVJlbW92ZVJlcXVlc3Q+KFBBR0VfRU5EUE9JTlRfSURfUkVNT1ZFLCB7XG5cdFx0XHRcdFx0cGxhdGZvcm06IGZpbi5tZS5pZGVudGl0eS51dWlkLFxuXHRcdFx0XHRcdGlkXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcykge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBSZW1vdmVkIHBhZ2Ugd2l0aCBpZDogJHtpZH0gZnJvbSBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxvZ2dlci5pbmZvKGBVbmFibGUgdG8gcmVtb3ZlIHBhZ2Ugd2l0aCBpZDogJHtpZH0gZnJvbSBjdXN0b20gc3RvcmFnZWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgZGVsZXRpbmcgc2F2ZWQgcGFnZSBmcm9tIGRlZmF1bHQgc3RvcmFnZS4gUGFnZUlkOiAke2lkfWApO1xuXHRcdFx0XHRhd2FpdCBzdXBlci5kZWxldGVTYXZlZFBhZ2UoaWQpO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgUmVtb3ZlZCBwYWdlIHdpdGggaWQ6ICR7aWR9IGZyb20gY3VzdG9tIHN0b3JhZ2VgKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdGF3YWl0IGZpcmVMaWZlY3ljbGVFdmVudDxQYWdlQ2hhbmdlZExpZmVjeWNsZVBheWxvYWQ+KHBsYXRmb3JtLCBcInBhZ2UtY2hhbmdlZFwiLCB7XG5cdFx0XHRcdGFjdGlvbjogXCJkZWxldGVcIixcblx0XHRcdFx0aWRcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciBzaG93aW5nIGEgZ2xvYmFsIGNvbnRleHQgbWVudSBnaXZlbiBhIG1lbnUgdGVtcGxhdGUsXG5cdFx0ICogaGFuZGxlciBjYWxsYmFjaywgYW5kIHNjcmVlbiBjb29yZGluYXRlcy5cblx0XHQgKiBAcGFyYW0gcmVxIHRoZSBwYXlsb2FkIHJlY2VpdmVkIGJ5IHRoZSBwcm92aWRlciBjYWxsXG5cdFx0ICogQHBhcmFtIGNhbGxlcklkZW50aXR5IE9GIGlkZW50aXR5IG9mIHRoZSBlbnRpdHkgZnJvbSB3aGljaCB0aGUgcmVxdWVzdCBvcmlnaW5hdGVkXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIG9wZW5HbG9iYWxDb250ZXh0TWVudShcblx0XHRcdHJlcTogT3Blbkdsb2JhbENvbnRleHRNZW51UGF5bG9hZCxcblx0XHRcdGNhbGxlcklkZW50aXR5OiBPcGVuRmluLklkZW50aXR5XG5cdFx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZSA9IGF3YWl0IGdldEdsb2JhbE1lbnUocmVxLnRlbXBsYXRlLCB7IHdpbmRvd0lkZW50aXR5OiByZXEuaWRlbnRpdHkgfSk7XG5cdFx0XHRpZiAodGVtcGxhdGU/Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0YXdhaXQgc3VwZXIub3Blbkdsb2JhbENvbnRleHRNZW51KFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdC4uLnJlcSxcblx0XHRcdFx0XHRcdHRlbXBsYXRlXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRjYWxsZXJJZGVudGl0eVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciBzaG93aW5nIGEgdmlldyB0YWIgY29udGV4dCBtZW51IGdpdmVuIGEgbWVudSB0ZW1wbGF0ZSxcblx0XHQgKiBoYW5kbGVyIGNhbGxiYWNrLCBhbmQgc2NyZWVuIGNvb3JkaW5hdGVzLlxuXHRcdCAqIEBwYXJhbSByZXEgdGhlIHBheWxvYWQgcmVjZWl2ZWQgYnkgdGhlIHByb3ZpZGVyIGNhbGxcblx0XHQgKiBAcGFyYW0gY2FsbGVySWRlbnRpdHkgT0YgaWRlbnRpdHkgb2YgdGhlIGVudGl0eSBmcm9tIHdoaWNoIHRoZSByZXF1ZXN0IG9yaWdpbmF0ZWRcblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgb3BlblZpZXdUYWJDb250ZXh0TWVudShcblx0XHRcdHJlcTogT3BlblZpZXdUYWJDb250ZXh0TWVudVBheWxvYWQsXG5cdFx0XHRjYWxsZXJJZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eVxuXHRcdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0Y29uc3QgdGVtcGxhdGUgPSBhd2FpdCBnZXRWaWV3TWVudShyZXEudGVtcGxhdGUsIHtcblx0XHRcdFx0d2luZG93SWRlbnRpdHk6IHJlcS5pZGVudGl0eSxcblx0XHRcdFx0dmlld3M6IHJlcS5zZWxlY3RlZFZpZXdzXG5cdFx0XHR9KTtcblx0XHRcdGlmICh0ZW1wbGF0ZT8ubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRhd2FpdCBzdXBlci5vcGVuVmlld1RhYkNvbnRleHRNZW51KFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdC4uLnJlcSxcblx0XHRcdFx0XHRcdHRlbXBsYXRlXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRjYWxsZXJJZGVudGl0eVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciBzaG93aW5nIGEgcGFnZSB0YWIgY29udGV4dCBtZW51IGdpdmVuIGEgbWVudSB0ZW1wbGF0ZSxcblx0XHQgKiBoYW5kbGVyIGNhbGxiYWNrLCBhbmQgc2NyZWVuIGNvb3JkaW5hdGVzLlxuXHRcdCAqIEBwYXJhbSByZXEgdGhlIHBheWxvYWQgcmVjZWl2ZWQgYnkgdGhlIHByb3ZpZGVyIGNhbGxcblx0XHQgKiBAcGFyYW0gY2FsbGVySWRlbnRpdHkgT0YgaWRlbnRpdHkgb2YgdGhlIGVudGl0eSBmcm9tIHdoaWNoIHRoZSByZXF1ZXN0IG9yaWdpbmF0ZWRcblx0XHQgKi9cblx0XHRwdWJsaWMgYXN5bmMgb3BlblBhZ2VUYWJDb250ZXh0TWVudShcblx0XHRcdHJlcTogT3BlblBhZ2VUYWJDb250ZXh0TWVudVBheWxvYWQsXG5cdFx0XHRjYWxsZXJJZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eVxuXHRcdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0Y29uc3QgdGVtcGxhdGUgPSBhd2FpdCBnZXRQYWdlTWVudShyZXEudGVtcGxhdGUsIHsgd2luZG93SWRlbnRpdHk6IHJlcS5pZGVudGl0eSwgcGFnZUlkOiByZXEucGFnZUlkIH0pO1xuXHRcdFx0aWYgKHRlbXBsYXRlPy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGF3YWl0IHN1cGVyLm9wZW5QYWdlVGFiQ29udGV4dE1lbnUoXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Li4ucmVxLFxuXHRcdFx0XHRcdFx0dGVtcGxhdGVcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGNhbGxlcklkZW50aXR5XG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogQ2xvc2VzIHRoZSBjdXJyZW50IFBsYXRmb3JtIGFuZCBhbGwgY2hpbGQgd2luZG93cyBhbmQgdmlld3MuXG5cdFx0ICogQHBhcmFtIHBheWxvYWQgVW5kZWZpbmVkIHVubGVzcyB5b3UgaGF2ZSBpbXBsZW1lbnRlZCBhIGN1c3RvbSBxdWl0ZSBwcm90b2NvbC5cblx0XHQgKiBAcGFyYW0gY2FsbGVySWRlbnRpdHkgSWRlbnRpdHkgb2YgdGhlIGVudGl0eSB0aGF0IGNhbGxlZCBxdWl0LlxuXHRcdCAqIEByZXR1cm5zIE5vdGhpbmcuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIHF1aXQocGF5bG9hZDogdW5kZWZpbmVkLCBjYWxsZXJJZGVudGl0eTogT3BlbkZpbi5JZGVudGl0eSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdFx0YXdhaXQgZmlyZUxpZmVjeWNsZUV2ZW50KHBsYXRmb3JtLCBcImJlZm9yZS1xdWl0XCIpO1xuXG5cdFx0XHRhd2FpdCBjbG9zZWRvd25QbGF0Zm9ybSgpO1xuXG5cdFx0XHRyZXR1cm4gc3VwZXIucXVpdChwYXlsb2FkLCBjYWxsZXJJZGVudGl0eSk7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSGFuZGxlcyByZXF1ZXN0cyB0byBjcmVhdGUgYSB3aW5kb3cgaW4gdGhlIGN1cnJlbnQgcGxhdGZvcm0uXG5cdFx0ICogQHBhcmFtIG9wdGlvbnMgV2luZG93IG9wdGlvbnMgZm9yIHRoZSB3aW5kb3cgdG8gYmUgY3JlYXRlZC5cblx0XHQgKiBAcGFyYW0gaWRlbnRpdHkgSWYgY3JlYXRlV2luZG93IHdhcyBjYWxsZWQsIHRoZSBpZGVudGl0eSBvZiB0aGUgY2FsbGVyIHdpbGwgYmUgaGVyZS4gSWYgYGNyZWF0ZVdpbmRvd2Agd2FzXG5cdFx0ICogY2FsbGVkIGFzIHBhcnQgb2YgYXBwbHlpbmcgYSBzbmFwc2hvdCBvciBjcmVhdGluZyBhIHZpZXcgd2l0aG91dCBhIHRhcmdldCB3aW5kb3csIGBpZGVudGl0eWAgd2lsbCBiZVxuXHRcdCAqIHVuZGVmaW5lZC5cblx0XHQgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCB3aW5kb3cuXG5cdFx0ICovXG5cdFx0cHVibGljIGFzeW5jIGNyZWF0ZVdpbmRvdyhcblx0XHRcdG9wdGlvbnM6IE9wZW5GaW4uUGxhdGZvcm1XaW5kb3dDcmVhdGlvbk9wdGlvbnMsXG5cdFx0XHRpZGVudGl0eT86IE9wZW5GaW4uSWRlbnRpdHlcblx0XHQpOiBQcm9taXNlPE9wZW5GaW4uV2luZG93PiB7XG5cdFx0XHQvLyBBdXRvU2hvdyBpcyBub3QgZGVmaW5lZCBhcyBvcHRpb25hbCwgYnV0IGl0IGNhbiBiZSB1bmRlZmluZWRcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktYm9vbGVhbi1saXRlcmFsLWNvbXBhcmVcblx0XHRcdGlmIChvcHRpb25zLmF1dG9TaG93ID09PSBmYWxzZSkge1xuXHRcdFx0XHQvLyBXZSB1c2UgdGhpcyBjYXNlIHRvIG1hdGNoIG1vZGFsIHdpbmRvd3Ncblx0XHRcdFx0Ly8gc28gd2UgZG9uJ3QgdGhlbWUgb3IgcG9zaXRpb24gdGhlbVxuXHRcdFx0XHRyZXR1cm4gc3VwZXIuY3JlYXRlV2luZG93KG9wdGlvbnMsIGlkZW50aXR5KTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCF3aW5kb3dQb3NpdGlvbmluZ1N0cmF0ZWd5IHx8IGlzRW1wdHkod2luZG93RGVmYXVsdExlZnQpIHx8IGlzRW1wdHkod2luZG93RGVmYXVsdFRvcCkpIHtcblx0XHRcdFx0Y29uc3QgYXBwID0gYXdhaXQgZmluLkFwcGxpY2F0aW9uLmdldEN1cnJlbnQoKTtcblx0XHRcdFx0Y29uc3QgcGxhdGZvcm1NYW5pZmVzdDogT3BlbkZpbi5NYW5pZmVzdCA9IGF3YWl0IGFwcC5nZXRNYW5pZmVzdCgpO1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcIlBsYXRmb3JtIERlZmF1bHQgV2luZG93IE9wdGlvbnNcIiwgcGxhdGZvcm1NYW5pZmVzdD8ucGxhdGZvcm0/LmRlZmF1bHRXaW5kb3dPcHRpb25zKTtcblxuXHRcdFx0XHRjb25zdCBzZXR0aW5ncyA9IGF3YWl0IGdldFNldHRpbmdzKCk7XG5cblx0XHRcdFx0d2luZG93RGVmYXVsdExlZnQgPVxuXHRcdFx0XHRcdHNldHRpbmdzLmJyb3dzZXJQcm92aWRlcj8uZGVmYXVsdFdpbmRvd09wdGlvbnM/LmRlZmF1bHRMZWZ0ID8/XG5cdFx0XHRcdFx0cGxhdGZvcm1NYW5pZmVzdD8ucGxhdGZvcm0/LmRlZmF1bHRXaW5kb3dPcHRpb25zPy5kZWZhdWx0TGVmdCA/P1xuXHRcdFx0XHRcdDA7XG5cdFx0XHRcdHdpbmRvd0RlZmF1bHRUb3AgPVxuXHRcdFx0XHRcdHNldHRpbmdzLmJyb3dzZXJQcm92aWRlcj8uZGVmYXVsdFdpbmRvd09wdGlvbnM/LmRlZmF1bHRUb3AgPz9cblx0XHRcdFx0XHRwbGF0Zm9ybU1hbmlmZXN0Py5wbGF0Zm9ybT8uZGVmYXVsdFdpbmRvd09wdGlvbnM/LmRlZmF1bHRUb3AgPz9cblx0XHRcdFx0XHQwO1xuXG5cdFx0XHRcdHdpbmRvd1Bvc2l0aW9uaW5nU3RyYXRlZ3kgPSBzZXR0aW5ncy5icm93c2VyUHJvdmlkZXI/LndpbmRvd1Bvc2l0aW9uaW5nU3RyYXRlZ3k7XG5cdFx0XHR9XG5cblx0XHRcdGxvZ2dlci5pbmZvKFwiQ3JlYXRlIFdpbmRvd1wiLCBvcHRpb25zKTtcblxuXHRcdFx0Y29uc3QgaGFzTGVmdCA9ICFpc0VtcHR5KG9wdGlvbnM/LmRlZmF1bHRMZWZ0KTtcblx0XHRcdGNvbnN0IGhhc1RvcCA9ICFpc0VtcHR5KG9wdGlvbnM/LmRlZmF1bHRUb3ApO1xuXG5cdFx0XHRpZiAoIWhhc0xlZnQgfHwgIWhhc1RvcCkge1xuXHRcdFx0XHQvLyBHZXQgdGhlIGF2YWlsYWJsZSByZWN0IGZvciB0aGUgZGlzcGxheSBzbyB3ZSBjYW4gdGFrZSBpbiB0byBhY2NvdW50XG5cdFx0XHRcdC8vIE9TIG1lbnVzLCB0YXNrIGJhciBldGNcblx0XHRcdFx0Y29uc3QgbW9uaXRvckluZm8gPSBhd2FpdCBmaW4uU3lzdGVtLmdldE1vbml0b3JJbmZvKCk7XG5cdFx0XHRcdGNvbnN0IGF2YWlsYWJsZUxlZnQgPSBtb25pdG9ySW5mby5wcmltYXJ5TW9uaXRvci5hdmFpbGFibGVSZWN0LmxlZnQ7XG5cdFx0XHRcdGNvbnN0IGF2YWlsYWJsZVRvcCA9IG1vbml0b3JJbmZvLnByaW1hcnlNb25pdG9yLmF2YWlsYWJsZVJlY3QudG9wO1xuXG5cdFx0XHRcdGNvbnN0IHdpbmRvd09mZnNldHNYOiBudW1iZXIgPSB3aW5kb3dQb3NpdGlvbmluZ1N0cmF0ZWd5Py54ID8/IDMwO1xuXHRcdFx0XHRjb25zdCB3aW5kb3dPZmZzZXRzWTogbnVtYmVyID0gd2luZG93UG9zaXRpb25pbmdTdHJhdGVneT8ueSA/PyAzMDtcblx0XHRcdFx0Y29uc3Qgd2luZG93T2Zmc2V0c01heEluY3JlbWVudHM6IG51bWJlciA9IHdpbmRvd1Bvc2l0aW9uaW5nU3RyYXRlZ3k/Lm1heEluY3JlbWVudHMgPz8gODtcblxuXHRcdFx0XHRjb25zdCB2aXNpYmxlV2luZG93cyA9IGF3YWl0IGdldEFsbFZpc2libGVXaW5kb3dzKCk7XG5cblx0XHRcdFx0Ly8gR2V0IHRoZSB0b3AgbGVmdCBib3VuZHMgZm9yIGFsbCB0aGUgdmlzaWJsZSB3aW5kb3dzXG5cdFx0XHRcdGNvbnN0IHRvcExlZnRCb3VuZHMgPSBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdFx0XHR2aXNpYmxlV2luZG93cy5tYXAoYXN5bmMgKHdpbikgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgYm91bmRzID0gYXdhaXQgd2luLmdldEJvdW5kcygpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0bGVmdDogYm91bmRzLmxlZnQsXG5cdFx0XHRcdFx0XHRcdHRvcDogYm91bmRzLnRvcCxcblx0XHRcdFx0XHRcdFx0cmlnaHQ6IGJvdW5kcy5sZWZ0ICsgd2luZG93T2Zmc2V0c1gsXG5cdFx0XHRcdFx0XHRcdGJvdHRvbTogYm91bmRzLnRvcCArIHdpbmRvd09mZnNldHNZXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0bGV0IG1pbkNvdW50VmFsOiBudW1iZXIgPSAxMDAwO1xuXHRcdFx0XHRsZXQgbWluQ291bnRJbmRleCA9IHdpbmRvd09mZnNldHNNYXhJbmNyZW1lbnRzO1xuXG5cdFx0XHRcdC8vIE5vdyBzZWUgaG93IG1hbnkgd2luZG93cyBhcHBlYXIgaW4gZWFjaCBpbmNyZW1lbnQgc2xvdFxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHdpbmRvd09mZnNldHNNYXhJbmNyZW1lbnRzOyBpKyspIHtcblx0XHRcdFx0XHRjb25zdCB4UG9zID0gaSAqIHdpbmRvd09mZnNldHNYO1xuXHRcdFx0XHRcdGNvbnN0IHlQb3MgPSBpICogd2luZG93T2Zmc2V0c1k7XG5cdFx0XHRcdFx0Y29uc3QgbGVmdFBvcyA9IHdpbmRvd0RlZmF1bHRMZWZ0ICsgeFBvcztcblx0XHRcdFx0XHRjb25zdCB0b3BQb3MgPSB3aW5kb3dEZWZhdWx0VG9wICsgeVBvcztcblx0XHRcdFx0XHRjb25zdCBmb3VuZFdpbnMgPSB0b3BMZWZ0Qm91bmRzLmZpbHRlcihcblx0XHRcdFx0XHRcdCh0b3BMZWZ0V2luQm91bmRzKSA9PlxuXHRcdFx0XHRcdFx0XHR0b3BMZWZ0V2luQm91bmRzLmxlZnQgPj0gbGVmdFBvcyAmJlxuXHRcdFx0XHRcdFx0XHR0b3BMZWZ0V2luQm91bmRzLnJpZ2h0IDw9IGxlZnRQb3MgKyB3aW5kb3dPZmZzZXRzWCArIGF2YWlsYWJsZUxlZnQgJiZcblx0XHRcdFx0XHRcdFx0dG9wTGVmdFdpbkJvdW5kcy50b3AgPj0gdG9wUG9zICYmXG5cdFx0XHRcdFx0XHRcdHRvcExlZnRXaW5Cb3VuZHMuYm90dG9tIDw9IHRvcFBvcyArIHdpbmRvd09mZnNldHNZICsgYXZhaWxhYmxlVG9wXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdC8vIElmIHRoaXMgc2xvdCBoYXMgbGVzcyB0aGFuIHRoZSBjdXJyZW50IG1pbmltdW0gdXNlIHRoaXMgc2xvdFxuXHRcdFx0XHRcdGlmIChmb3VuZFdpbnMubGVuZ3RoIDwgbWluQ291bnRWYWwpIHtcblx0XHRcdFx0XHRcdG1pbkNvdW50VmFsID0gZm91bmRXaW5zLmxlbmd0aDtcblx0XHRcdFx0XHRcdG1pbkNvdW50SW5kZXggPSBpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghaGFzTGVmdCkge1xuXHRcdFx0XHRcdGNvbnN0IHhPZmZzZXQgPSBtaW5Db3VudEluZGV4ICogd2luZG93T2Zmc2V0c1g7XG5cdFx0XHRcdFx0b3B0aW9ucy5kZWZhdWx0TGVmdCA9IHdpbmRvd0RlZmF1bHRMZWZ0ICsgeE9mZnNldCArIGF2YWlsYWJsZUxlZnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFoYXNUb3ApIHtcblx0XHRcdFx0XHRjb25zdCB5T2Zmc2V0ID0gbWluQ291bnRJbmRleCAqIHdpbmRvd09mZnNldHNZO1xuXHRcdFx0XHRcdG9wdGlvbnMuZGVmYXVsdFRvcCA9IHdpbmRvd0RlZmF1bHRUb3AgKyB5T2Zmc2V0ICsgYXZhaWxhYmxlVG9wO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IG92ZXJyaWRlRGVmYXVsdEJ1dHRvbnMgPSBBcnJheS5pc0FycmF5KG9wdGlvbnM/LndvcmtzcGFjZVBsYXRmb3JtPy50b29sYmFyT3B0aW9ucz8uYnV0dG9ucyk7XG5cblx0XHRcdGlmICghb3ZlcnJpZGVEZWZhdWx0QnV0dG9ucykge1xuXHRcdFx0XHQvLyBUaGUgd2luZG93IG9wdGlvbnMgZG9uJ3Qgb3ZlcnJpZGUgdGhlIHRvb2xiYXIgYnV0dG9uc1xuXHRcdFx0XHQvLyBzbyB3ZSBhc3N1bWUgd2UgYXJlIHVzaW5nIHRoZSB3b3Jrc3BhY2UgZGVmYXVsdHNcblx0XHRcdFx0Ly8gU2luY2UgdGhlIGRlZmF1bHRzIHdlcmUgY3JlYXRlZCB1c2luZyB0aGUgdGhlbWUgYXQgc3RhcnR1cFxuXHRcdFx0XHQvLyB3ZSBuZWVkIHRvIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBjdXJyZW50IHNldCBvZiBkZWZhdWx0XG5cdFx0XHRcdC8vIGJ1dHRvbnMgd2hpY2ggYXJlIHRoZW1lIGFuZCBjb25kaXRpb24gYXdhcmVcblx0XHRcdFx0b3B0aW9ucy53b3Jrc3BhY2VQbGF0Zm9ybSA9IG9wdGlvbnMud29ya3NwYWNlUGxhdGZvcm0gPz8ge307XG5cdFx0XHRcdG9wdGlvbnMud29ya3NwYWNlUGxhdGZvcm0udG9vbGJhck9wdGlvbnMgPSBvcHRpb25zLndvcmtzcGFjZVBsYXRmb3JtLnRvb2xiYXJPcHRpb25zID8/IHt9O1xuXHRcdFx0XHRjb25zdCBidXR0b25zID0gYXdhaXQgZ2V0VG9vbGJhckJ1dHRvbnMob3B0aW9ucyk7XG5cdFx0XHRcdGlmICghaXNFbXB0eShidXR0b25zKSkge1xuXHRcdFx0XHRcdG9wdGlvbnMud29ya3NwYWNlUGxhdGZvcm0udG9vbGJhck9wdGlvbnMuYnV0dG9ucyA9IGJ1dHRvbnM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Y29uc3Qgd2luZG93ID0gYXdhaXQgc3VwZXIuY3JlYXRlV2luZG93KG9wdGlvbnMsIGlkZW50aXR5KTtcblxuXHRcdFx0bG9nZ2VyLmluZm8oXCJBZnRlciBDcmVhdGUgV2luZG93XCIsIGF3YWl0IHdpbmRvdy5nZXRPcHRpb25zKCkpO1xuXG5cdFx0XHQvLyBJZiB0aGUgZGVmYXVsdCBidXR0b25zIHdlcmUgb3ZlcndyaXR0ZW4gdGhlbiBob3BlZnVsbHkgdGhlIGNyZWF0b3Jcblx0XHRcdC8vIHVzZWQgY29ycmVjdGx5IHRoZW1lZCB2ZXJzaW9ucywgYnV0IGluIGNhc2UgdGhleSBkaWRuJ3Qgd2Ugc2VuZFxuXHRcdFx0Ly8gYW4gdXBkYXRlIGZvciB0aGUgY29sb3JzLlxuXHRcdFx0aWYgKG92ZXJyaWRlRGVmYXVsdEJ1dHRvbnMpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHRcdFx0Y29uc3QgYnJvd3NlcldpbmRvdyA9IHBsYXRmb3JtLkJyb3dzZXIud3JhcFN5bmMod2luZG93LmlkZW50aXR5KTtcblx0XHRcdFx0XHRhd2FpdCB1cGRhdGVCcm93c2VyV2luZG93QnV0dG9uc0NvbG9yU2NoZW1lKGJyb3dzZXJXaW5kb3cpO1xuXHRcdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0XHQvLyBQcm9iYWJseSBub3QgYSBicm93c2VyIHdpbmRvd1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB3aW5kb3c7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogSW1wbGVtZW50YXRpb24gZm9yIHNldHRpbmcgc2VsZWN0ZWQgc2NoZW1lLlxuXHRcdCAqIEBwYXJhbSBzY2hlbWVUeXBlIFNjaGVtZSB0byBiZSBzZXRcblx0XHQgKiBAcmV0dXJucyBOb3RoaW5nLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBzZXRTZWxlY3RlZFNjaGVtZShzY2hlbWVUeXBlOiBDb2xvclNjaGVtZU9wdGlvblR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdC8vIFRoZSBjb2xvciBzY2hlbWUgaGFzIGJlZW4gdXBkYXRlZCwgc28gdXBkYXRlIHRoZSB0aGVtZVxuXHRcdFx0YXdhaXQgc2V0Q3VycmVudENvbG9yU2NoZW1lTW9kZShzY2hlbWVUeXBlKTtcblxuXHRcdFx0cmV0dXJuIHN1cGVyLnNldFNlbGVjdGVkU2NoZW1lKHNjaGVtZVR5cGUpO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIEltcGxlbWVudGF0aW9uIGZvciBoYW5kbGluZyBXb3Jrc3BhY2UgYW5hbHl0aWNzIGV2ZW50cy5cblx0XHQgKiBAcGFyYW0gZXZlbnRzIFRoZSBsaXN0IG9mIGFuYWx5dGljcyBldmVudHMgdG8gcHJvY2Vzcy5cblx0XHQgKiBAcmV0dXJucyBOb3RoaW5nLlxuXHRcdCAqL1xuXHRcdHB1YmxpYyBhc3luYyBoYW5kbGVBbmFseXRpY3MoZXZlbnRzOiBBbmFseXRpY3NFdmVudFtdKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0XHRpZiAoYW5hbHl0aWNzUHJvdmlkZXIuaXNFbmFibGVkKCkpIHtcblx0XHRcdFx0Y29uc3QgcGxhdGZvcm1FdmVudHM6IFBsYXRmb3JtQW5hbHl0aWNzRXZlbnRbXSA9IFtdO1xuXHRcdFx0XHRjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGFuYWx5dGljRXZlbnQgb2YgZXZlbnRzKSB7XG5cdFx0XHRcdFx0cGxhdGZvcm1FdmVudHMucHVzaCh7IHRpbWVzdGFtcCwgLi4uYW5hbHl0aWNFdmVudCB9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhd2FpdCBhbmFseXRpY3NQcm92aWRlci5oYW5kbGVBbmFseXRpY3MocGxhdGZvcm1FdmVudHMpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gc3VwZXIuaGFuZGxlQW5hbHl0aWNzKGV2ZW50cyk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBuZXcgT3ZlcnJpZGUoKTtcbn1cbiIsImltcG9ydCB0eXBlIE9wZW5GaW4gZnJvbSBcIkBvcGVuZmluL2NvcmVcIjtcbmltcG9ydCB7IGdldE1hbmlmZXN0Q3VzdG9tU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2V0dGluZ3NcIjtcbmltcG9ydCB7IGZvcm1hdEVycm9yLCBpc1N0cmluZ1ZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmxldCB3aW46IE9wZW5GaW4uV2luZG93IHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIE9wZW4gYSBzcGxhc2ggc2NyZWVuLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlbigpOiBQcm9taXNlPHZvaWQ+IHtcblx0Y29uc3QgYXBwID0gYXdhaXQgZmluLkFwcGxpY2F0aW9uLmdldEN1cnJlbnQoKTtcblx0Y29uc3QgbWFuaWZlc3QgPSBhd2FpdCBhcHAuZ2V0TWFuaWZlc3QoKTtcblxuXHRpZiAobWFuaWZlc3Q/LnBsYXRmb3JtPy5wcmV2ZW50UXVpdE9uTGFzdFdpbmRvd0Nsb3NlZCAhPT0gdHJ1ZSkge1xuXHRcdGNvbnNvbGUud2Fybihcblx0XHRcdFwiVGhlIG1hbmlmZXN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIHBsYXRmb3JtLnByZXZlbnRRdWl0T25MYXN0V2luZG93Q2xvc2VkIGZsYWcgc2V0IHRvIHRydWUsIHRoZSBzcGxhc2ggc2NyZWVuIGNhbiBub3QgYmUgc2hvd24gd2l0aG91dCB0aGlzIGZsYWcgc2V0XCJcblx0XHQpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IGN1c3RvbVNldHRpbmdzID0gYXdhaXQgZ2V0TWFuaWZlc3RDdXN0b21TZXR0aW5ncygpO1xuXG5cdGNvbnN0IGRpc2FibGVkID0gY3VzdG9tU2V0dGluZ3M/LnNwbGFzaFNjcmVlblByb3ZpZGVyPy5kaXNhYmxlZCA/PyBmYWxzZTtcblxuXHRpZiAoIWRpc2FibGVkKSB7XG5cdFx0dHJ5IHtcblx0XHRcdHdpbiA9IGF3YWl0IGZpbi5XaW5kb3cuY3JlYXRlKHtcblx0XHRcdFx0bmFtZTogXCJwbGF0Zm9ybS1zcGxhc2hcIixcblx0XHRcdFx0dXJsOiBgJHt3aW5kb3cubG9jYXRpb24uaHJlZi5yZXBsYWNlKFwicHJvdmlkZXIuaHRtbFwiLCBcInNwbGFzaC5odG1sXCIpfWAsXG5cdFx0XHRcdGFsd2F5c09uVG9wOiB0cnVlLFxuXHRcdFx0XHRtYXhpbWl6YWJsZTogZmFsc2UsXG5cdFx0XHRcdG1pbmltaXphYmxlOiBmYWxzZSxcblx0XHRcdFx0ZnJhbWU6IGZhbHNlLFxuXHRcdFx0XHRhdXRvU2hvdzogZmFsc2UsXG5cdFx0XHRcdGRlZmF1bHRDZW50ZXJlZDogdHJ1ZSxcblx0XHRcdFx0ZGVmYXVsdFdpZHRoOiBjdXN0b21TZXR0aW5ncz8uc3BsYXNoU2NyZWVuUHJvdmlkZXI/LndpZHRoID8/IDQwMCxcblx0XHRcdFx0ZGVmYXVsdEhlaWdodDogY3VzdG9tU2V0dGluZ3M/LnNwbGFzaFNjcmVlblByb3ZpZGVyPy5oZWlnaHQgPz8gMTMwLFxuXHRcdFx0XHRpbmNsdWRlSW5TbmFwc2hvdHM6IGZhbHNlLFxuXHRcdFx0XHRyZXNpemFibGU6IGZhbHNlLFxuXHRcdFx0XHRzYXZlV2luZG93U3RhdGU6IGZhbHNlLFxuXHRcdFx0XHRzaG93VGFza2Jhckljb246IHRydWVcblx0XHRcdH0pO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0Y29uc29sZS5lcnJvcihcIlVuYWJsZSB0byBkaXNwbGF5IHNwbGFzaCBzY3JlZW5cIiwgZm9ybWF0RXJyb3IoZXJyKSk7XG5cdFx0fVxuXG5cdFx0aWYgKHdpbikge1xuXHRcdFx0YXdhaXQgd2luLnVwZGF0ZU9wdGlvbnMoeyBhbHdheXNPblRvcDogZmFsc2UgfSk7XG5cblx0XHRcdGNvbnN0IHdlYldpbiA9IHdpbi5nZXRXZWJXaW5kb3coKTtcblx0XHRcdGlmICh3ZWJXaW4pIHtcblx0XHRcdFx0Y29uc3QgdGl0bGUgPSBjdXN0b21TZXR0aW5ncy5zcGxhc2hTY3JlZW5Qcm92aWRlcj8udGl0bGUgPz8gbWFuaWZlc3Quc2hvcnRjdXQ/Lm5hbWUgPz8gXCJPcGVuRmluXCI7XG5cdFx0XHRcdGNvbnN0IGljb24gPVxuXHRcdFx0XHRcdGN1c3RvbVNldHRpbmdzLnNwbGFzaFNjcmVlblByb3ZpZGVyPy5pY29uID8/XG5cdFx0XHRcdFx0bWFuaWZlc3QucGxhdGZvcm0/Lmljb24gPz9cblx0XHRcdFx0XHRcIi4uL2NvbW1vbi9pbWFnZXMvaWNvbi1ibHVlLnBuZ1wiO1xuXHRcdFx0XHRsZXQgYmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBjdXN0b21TZXR0aW5ncy5zcGxhc2hTY3JlZW5Qcm92aWRlcj8uYmFja2dyb3VuZENvbG9yO1xuXHRcdFx0XHRsZXQgdGV4dENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBjdXN0b21TZXR0aW5ncy5zcGxhc2hTY3JlZW5Qcm92aWRlcj8udGV4dENvbG9yO1xuXHRcdFx0XHRsZXQgYm9yZGVyQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGN1c3RvbVNldHRpbmdzLnNwbGFzaFNjcmVlblByb3ZpZGVyPy5ib3JkZXJDb2xvcjtcblxuXHRcdFx0XHR3ZWJXaW4uZG9jdW1lbnQudGl0bGUgPSB0aXRsZTtcblxuXHRcdFx0XHRjb25zdCBpY29uRWxlbSA9IHdlYldpbi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxJbWFnZUVsZW1lbnQ+KFwiI2ljb25cIik7XG5cdFx0XHRcdGlmIChpY29uRWxlbSkge1xuXHRcdFx0XHRcdGljb25FbGVtLnNyYyA9IGljb247XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBoZWFkaW5nRWxlbSA9IHdlYldpbi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihcIiNoZWFkaW5nXCIpO1xuXHRcdFx0XHRpZiAoaGVhZGluZ0VsZW0pIHtcblx0XHRcdFx0XHRoZWFkaW5nRWxlbS50ZXh0Q29udGVudCA9IHRpdGxlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgaGFzQmFja2dyb3VuZCA9IGlzU3RyaW5nVmFsdWUoYmFja2dyb3VuZENvbG9yKTtcblx0XHRcdFx0Y29uc3QgaGFzVGV4dCA9IGlzU3RyaW5nVmFsdWUodGV4dENvbG9yKTtcblx0XHRcdFx0Y29uc3QgaGFzQm9yZGVyID0gaXNTdHJpbmdWYWx1ZShib3JkZXJDb2xvcik7XG5cdFx0XHRcdGlmICgoIWhhc0JhY2tncm91bmQgfHwgIWhhc1RleHQgfHwgIWhhc0JvcmRlcikgJiYgY3VzdG9tU2V0dGluZ3M/LnRoZW1lUHJvdmlkZXI/LnRoZW1lcz8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Y29uc3QgdGhlbWUgPSBjdXN0b21TZXR0aW5ncy50aGVtZVByb3ZpZGVyLnRoZW1lc1swXTtcblx0XHRcdFx0XHRpZiAoXCJwYWxldHRlc1wiIGluIHRoZW1lKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBwYWxldHRlID1cblx0XHRcdFx0XHRcdFx0dGhlbWUucGFsZXR0ZXNbdGhlbWUuZGVmYXVsdCA/PyAoT2JqZWN0LmtleXModGhlbWUucGFsZXR0ZXMpWzBdIGFzIFwiZGFya1wiIHwgXCJsaWdodFwiKV07XG5cblx0XHRcdFx0XHRcdGlmICghaGFzQmFja2dyb3VuZCkge1xuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3IgPSBwYWxldHRlPy5iYWNrZ3JvdW5kUHJpbWFyeTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0aWYgKCFoYXNUZXh0KSB7XG5cdFx0XHRcdFx0XHRcdHRleHRDb2xvciA9IHBhbGV0dGU/LnRleHREZWZhdWx0O1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRpZiAoIWhhc0JvcmRlcikge1xuXHRcdFx0XHRcdFx0XHRib3JkZXJDb2xvciA9IHBhbGV0dGU/LmJhY2tncm91bmQ0O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChiYWNrZ3JvdW5kQ29sb3IpIHtcblx0XHRcdFx0XHR3ZWJXaW4uZG9jdW1lbnQuYm9keS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3I7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodGV4dENvbG9yKSB7XG5cdFx0XHRcdFx0aWYgKGhlYWRpbmdFbGVtKSB7XG5cdFx0XHRcdFx0XHRoZWFkaW5nRWxlbS5zdHlsZS5jb2xvciA9IHRleHRDb2xvcjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgcHJvZ3Jlc3NFbGVtID0gd2ViV2luLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KFwiI3Byb2dyZXNzXCIpO1xuXHRcdFx0XHRcdGlmIChwcm9ncmVzc0VsZW0pIHtcblx0XHRcdFx0XHRcdHByb2dyZXNzRWxlbS5zdHlsZS5jb2xvciA9IHRleHRDb2xvcjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgbG9hZGVyRWxlbSA9IHdlYldpbi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihcIiNsb2FkZXJcIik7XG5cdFx0XHRcdFx0aWYgKGxvYWRlckVsZW0pIHtcblx0XHRcdFx0XHRcdGxvYWRlckVsZW0uc3R5bGUuY29sb3IgPSB0ZXh0Q29sb3I7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGJvcmRlckNvbG9yKSB7XG5cdFx0XHRcdFx0Y29uc3QgaGVhZGVyRWxlbSA9IHdlYldpbi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihcImhlYWRlclwiKTtcblx0XHRcdFx0XHRpZiAoaGVhZGVyRWxlbSkge1xuXHRcdFx0XHRcdFx0aGVhZGVyRWxlbS5zdHlsZS5ib3JkZXJCb3R0b21Db2xvciA9IGJvcmRlckNvbG9yO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0YXdhaXQgd2luLnNob3coKTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBDbG9zZSBhIHNwbGFzaCBzY3JlZW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKHdpbikge1xuXHRcdGF3YWl0IHdpbi5jbG9zZSgpO1xuXHRcdHdpbiA9IHVuZGVmaW5lZDtcblx0fVxufVxuXG4vKipcbiAqIFVwZGF0ZSB0aGUgcHJvZ3Jlc3Mgb24gdGhlIHNwbGFzaCB3aW5kb3cuXG4gKiBAcGFyYW0gcHJvZ3Jlc3MgVGhlIHByb2dyZXNzIHRleHQgdG8gZGlzcGxheS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVByb2dyZXNzKHByb2dyZXNzOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKHdpbikge1xuXHRcdGNvbnN0IHdlYldpbiA9IHdpbi5nZXRXZWJXaW5kb3coKTtcblx0XHRpZiAod2ViV2luKSB7XG5cdFx0XHRjb25zdCBlbGVtID0gd2ViV2luLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjcHJvZ3Jlc3NcIik7XG5cdFx0XHRpZiAoZWxlbSkge1xuXHRcdFx0XHRlbGVtLnRleHRDb250ZW50ID0gYEluaXRpYWxpemluZyAke3Byb2dyZXNzfS4uLmA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG4iLCIvLyBHZW5lcmF0ZWQgZnJvbSBwYWNrYWdlLmpzb24gdmVyc2lvbiBhdCBidWlsZCB0aW1lLiBEbyBub3QgbW9kaWZ5IGRpcmVjdGx5LlxuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX1ZFUlNJT04gPSBcIjE0LjAuMjJcIjtcbiIsImltcG9ydCB7XG5cdGdldEN1cnJlbnRTeW5jLFxuXHRpbml0IGFzIHdvcmtzcGFjZVBsYXRmb3JtSW5pdCxcblx0dHlwZSBCcm93c2VySW5pdENvbmZpZ1xufSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgKiBhcyBhY3Rpb25zUHJvdmlkZXIgZnJvbSBcIi4uL2FjdGlvbnNcIjtcbmltcG9ydCAqIGFzIGFuYWx5dGljc1Byb3ZpZGVyIGZyb20gXCIuLi9hbmFseXRpY3NcIjtcbmltcG9ydCAqIGFzIGFwcFByb3ZpZGVyIGZyb20gXCIuLi9hcHBzXCI7XG5pbXBvcnQgKiBhcyBhdXRoIGZyb20gXCIuLi9hdXRoXCI7XG5pbXBvcnQgKiBhcyBhdXRoRmxvdyBmcm9tIFwiLi4vYXV0aC1mbG93XCI7XG5pbXBvcnQgKiBhcyBjb25kaXRpb25zUHJvdmlkZXIgZnJvbSBcIi4uL2NvbmRpdGlvbnNcIjtcbmltcG9ydCAqIGFzIGNvbm5lY3Rpb25Qcm92aWRlciBmcm9tIFwiLi4vY29ubmVjdGlvbnNcIjtcbmltcG9ydCAqIGFzIGVuZHBvaW50UHJvdmlkZXIgZnJvbSBcIi4uL2VuZHBvaW50XCI7XG5pbXBvcnQgKiBhcyBmYXZvcml0ZVByb3ZpZGVyIGZyb20gXCIuLi9mYXZvcml0ZVwiO1xuaW1wb3J0ICogYXMgaW5pdE9wdGlvbnNQcm92aWRlciBmcm9tIFwiLi4vaW5pdC1vcHRpb25zXCI7XG5pbXBvcnQgKiBhcyBsaWZlY3ljbGVQcm92aWRlciBmcm9tIFwiLi4vbGlmZWN5Y2xlXCI7XG5pbXBvcnQgKiBhcyBsb2dnZXJQcm92aWRlciBmcm9tIFwiLi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgKiBhcyBtZW51c1Byb3ZpZGVyIGZyb20gXCIuLi9tZW51XCI7XG5pbXBvcnQgKiBhcyBtb2R1bGVzIGZyb20gXCIuLi9tb2R1bGVzXCI7XG5pbXBvcnQgeyBnZXRNYW5pZmVzdEN1c3RvbVNldHRpbmdzLCBnZXRTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21TZXR0aW5ncywgTW9kdWxlSGVscGVycyB9IGZyb20gXCIuLi9zaGFwZXNcIjtcbmltcG9ydCAqIGFzIHNoYXJlUHJvdmlkZXIgZnJvbSBcIi4uL3NoYXJlXCI7XG5pbXBvcnQgeyBnZXRUaGVtZXMsIG5vdGlmeUNvbG9yU2NoZW1lLCBzdXBwb3J0c0NvbG9yU2NoZW1lcyB9IGZyb20gXCIuLi90aGVtZXNcIjtcbmltcG9ydCB7IGlzRW1wdHksIHJhbmRvbVVVSUQgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHZlcnNpb25Qcm92aWRlciBmcm9tIFwiLi4vdmVyc2lvblwiO1xuaW1wb3J0ICogYXMgbG93Q29kZUludGVncmF0aW9uUHJvdmlkZXIgZnJvbSBcIi4uL3dvcmtzcGFjZS9sb3ctY29kZS1pbnRlZ3JhdGlvbnNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRXaW5kb3dPcHRpb25zIH0gZnJvbSBcIi4vYnJvd3NlclwiO1xuaW1wb3J0IHsgaW50ZXJvcE92ZXJyaWRlIH0gZnJvbSBcIi4vaW50ZXJvcGJyb2tlclwiO1xuaW1wb3J0IHsgb3ZlcnJpZGVDYWxsYmFjayB9IGZyb20gXCIuL3BsYXRmb3JtLW92ZXJyaWRlXCI7XG5pbXBvcnQgKiBhcyBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyIGZyb20gXCIuL3BsYXRmb3JtLXNwbGFzaFwiO1xuaW1wb3J0IHsgUExBVEZPUk1fVkVSU0lPTiB9IGZyb20gXCIuL3BsYXRmb3JtLXZlcnNpb25cIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nZ2VyUHJvdmlkZXIuY3JlYXRlTG9nZ2VyKFwiUGxhdGZvcm1cIik7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgcGxhdGZvcm0uXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBwbGF0Zm9ybSB3YXMgaW5pdGlhbGl6ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiUGxhdGZvcm1cIik7XG5cblx0Y29uc3QgY3VzdG9tU2V0dGluZ3MgPSBhd2FpdCBnZXRNYW5pZmVzdEN1c3RvbVNldHRpbmdzKCk7XG5cblx0Y29uc3QgaXNWYWxpZCA9IGF3YWl0IGF1dGhGbG93LmluaXQoXG5cdFx0Y3VzdG9tU2V0dGluZ3MuYXV0aFByb3ZpZGVyLFxuXHRcdGFzeW5jICgpID0+IHNldHVwUGxhdGZvcm0oY3VzdG9tU2V0dGluZ3MpLFxuXHRcdGxvZ2dlcixcblx0XHR0cnVlXG5cdCk7XG5cblx0aWYgKCFpc1ZhbGlkKSB7XG5cdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XCJUaGUgcGxhdGZvcm0gY2Fubm90IHN0YXJ0dXAgYXMgdGhlcmUgd2FzIGEgcHJvYmxlbSB3aXRoIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgYXV0aCBmbG93LlwiXG5cdFx0KTtcblx0fVxuXG5cdHJldHVybiBpc1ZhbGlkO1xufVxuXG4vKipcbiAqIFNldHVwIHRoZSBwbGF0Zm9ybS5cbiAqIEBwYXJhbSBtYW5pZmVzdFNldHRpbmdzIFRoZSBjdXN0b20gc2V0dGluZyB0byB1c2UgZm9yIHNldHRpbmcgdXAgdGhlIHBsYXRmb3JtLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcGxhdGZvcm0gc2V0dXAgd2FzIHN1Y2Nlc3NmdWwuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNldHVwUGxhdGZvcm0obWFuaWZlc3RTZXR0aW5nczogQ3VzdG9tU2V0dGluZ3MpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0Ly8gTG9hZCB0aGUgaW5pdCBvcHRpb25zIGZyb20gdGhlIGluaXRpYWwgbWFuaWZlc3Rcblx0Ly8gYW5kIG5vdGlmeSBhbnkgYWN0aW9ucyB3aXRoIHRoZSBhZnRlciBhdXRoIGxpZmVjeWNsZVxuXHRhd2FpdCBtb2R1bGVzLmluaXQocmFuZG9tVVVJRCgpKTtcblxuXHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiSW5pdCBPcHRpb25zXCIpO1xuXG5cdGNvbnN0IGhlbHBlcnM6IE1vZHVsZUhlbHBlcnMgPSBtb2R1bGVzLmdldERlZmF1bHRIZWxwZXJzKCk7XG5cblx0YXdhaXQgaW5pdE9wdGlvbnNQcm92aWRlci5pbml0KG1hbmlmZXN0U2V0dGluZ3M/LmluaXRPcHRpb25zUHJvdmlkZXIsIGhlbHBlcnMsIFwiYWZ0ZXItYXV0aFwiKTtcblxuXHQvLyBXZSByZWxvYWQgdGhlIHNldHRpbmdzIG5vdyB0aGF0IGVuZHBvaW50cyBoYXZlIGJlZW4gY29uZmlndXJlZC5cblx0Y29uc3QgY3VzdG9tU2V0dGluZ3M6IEN1c3RvbVNldHRpbmdzID0gYXdhaXQgZ2V0U2V0dGluZ3MoKTtcblxuXHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiTG9nZ2VyXCIpO1xuXG5cdGF3YWl0IGxvZ2dlclByb3ZpZGVyLmluaXQoY3VzdG9tU2V0dGluZ3M/LmxvZ2dlclByb3ZpZGVyLCBoZWxwZXJzKTtcblxuXHRsb2dnZXIuaW5mbyhcIkluaXRpYWxpemluZyBDb3JlIFNlcnZpY2VzXCIpO1xuXG5cdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJFbmRwb2ludHNcIik7XG5cblx0YXdhaXQgZW5kcG9pbnRQcm92aWRlci5pbml0KGN1c3RvbVNldHRpbmdzPy5lbmRwb2ludFByb3ZpZGVyLCBoZWxwZXJzKTtcblxuXHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiVmVyc2lvbmluZ1wiKTtcblxuXHRjb25zdCBydW50aW1lVmVyc2lvbiA9IGF3YWl0IGZpbi5TeXN0ZW0uZ2V0VmVyc2lvbigpO1xuXG5cdGF3YWl0IHZlcnNpb25Qcm92aWRlci5pbml0KGN1c3RvbVNldHRpbmdzPy52ZXJzaW9uUHJvdmlkZXIsIGVuZHBvaW50UHJvdmlkZXIpO1xuXHR2ZXJzaW9uUHJvdmlkZXIuc2V0VmVyc2lvbihcInJ1bnRpbWVcIiwgcnVudGltZVZlcnNpb24pO1xuXHR0cnkge1xuXHRcdGNvbnN0IHJ2bUluZm8gPSBhd2FpdCBmaW4uU3lzdGVtLmdldFJ2bUluZm8oKTtcblx0XHR2ZXJzaW9uUHJvdmlkZXIuc2V0VmVyc2lvbihcInJ2bVwiLCBydm1JbmZvLnZlcnNpb24pO1xuXHR9IGNhdGNoIHtcblx0XHRsb2dnZXIud2FybihcIlJWTSB2ZXJzaW9uIGluZm9ybWF0aW9uIHVuYXZhaWxhYmxlLlwiKTtcblx0fVxuXHR2ZXJzaW9uUHJvdmlkZXIuc2V0VmVyc2lvbihcInBsYXRmb3JtQ2xpZW50XCIsIFBMQVRGT1JNX1ZFUlNJT04pO1xuXG5cdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJDb25uZWN0aW9uc1wiKTtcblx0YXdhaXQgY29ubmVjdGlvblByb3ZpZGVyLmluaXQoY3VzdG9tU2V0dGluZ3M/LmNvbm5lY3Rpb25Qcm92aWRlcik7XG5cblx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci51cGRhdGVQcm9ncmVzcyhcIk1lbnVzXCIpO1xuXHRhd2FpdCBtZW51c1Byb3ZpZGVyLmluaXQoY3VzdG9tU2V0dGluZ3M/Lm1lbnVzUHJvdmlkZXIsIGhlbHBlcnMsIGN1c3RvbVNldHRpbmdzPy5wbGF0Zm9ybVByb3ZpZGVyPy5yb290VXJsKTtcblxuXHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiQW5hbHl0aWNzXCIpO1xuXHRhd2FpdCBhbmFseXRpY3NQcm92aWRlci5pbml0KGN1c3RvbVNldHRpbmdzPy5hbmFseXRpY3NQcm92aWRlciwgaGVscGVycyk7XG5cblx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci51cGRhdGVQcm9ncmVzcyhcIkFwcHNcIik7XG5cdGF3YWl0IGFwcFByb3ZpZGVyLmluaXQoY3VzdG9tU2V0dGluZ3M/LmFwcFByb3ZpZGVyLCBlbmRwb2ludFByb3ZpZGVyKTtcblxuXHRhd2FpdCBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyLnVwZGF0ZVByb2dyZXNzKFwiQ29uZGl0aW9uc1wiKTtcblx0YXdhaXQgY29uZGl0aW9uc1Byb3ZpZGVyLmluaXQoY3VzdG9tU2V0dGluZ3M/LmNvbmRpdGlvbnNQcm92aWRlciwgaGVscGVycyk7XG5cdGNvbmRpdGlvbnNQcm92aWRlci5yZWdpc3RlckNvbmRpdGlvbihcblx0XHRcImF1dGhlbnRpY2F0ZWRcIixcblx0XHRhc3luYyAoKSA9PiBhdXRoLmlzQXV0aGVudGljYXRpb25FbmFibGVkKCkgJiYgIShhd2FpdCBhdXRoLmlzQXV0aGVudGljYXRpb25SZXF1aXJlZCgpKSxcblx0XHRmYWxzZVxuXHQpO1xuXHRjb25kaXRpb25zUHJvdmlkZXIucmVnaXN0ZXJDb25kaXRpb24oXCJzaGFyaW5nXCIsIGFzeW5jICgpID0+IHNoYXJlUHJvdmlkZXIuaXNTaGFyZUVuYWJsZWQoKSwgZmFsc2UpO1xuXHRjb25kaXRpb25zUHJvdmlkZXIucmVnaXN0ZXJDb25kaXRpb24oXCJ0aGVtZWRcIiwgYXN5bmMgKCkgPT4gc3VwcG9ydHNDb2xvclNjaGVtZXMoKSwgZmFsc2UpO1xuXG5cdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJMaWZlY3ljbGVzXCIpO1xuXHRhd2FpdCBsaWZlY3ljbGVQcm92aWRlci5pbml0KGN1c3RvbVNldHRpbmdzPy5saWZlY3ljbGVQcm92aWRlciwgaGVscGVycyk7XG5cblx0Y29uc3Qgc2hhcmluZ0VuYWJsZWQgPSBjdXN0b21TZXR0aW5ncy5wbGF0Zm9ybVByb3ZpZGVyPy5zaGFyaW5nID8/IHRydWU7XG5cdGlmIChzaGFyaW5nRW5hYmxlZCkge1xuXHRcdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJTaGFyaW5nXCIpO1xuXHRcdGF3YWl0IHNoYXJlUHJvdmlkZXIuaW5pdCh7IGVuYWJsZWQ6IHNoYXJpbmdFbmFibGVkIH0pO1xuXHR9XG5cblx0aWYgKCFpc0VtcHR5KGN1c3RvbVNldHRpbmdzPy5mYXZvcml0ZVByb3ZpZGVyKSAmJiAoY3VzdG9tU2V0dGluZ3M/LmZhdm9yaXRlUHJvdmlkZXIuZW5hYmxlZCA/PyB0cnVlKSkge1xuXHRcdGF3YWl0IHBsYXRmb3JtU3BsYXNoUHJvdmlkZXIudXBkYXRlUHJvZ3Jlc3MoXCJGYXZvcml0ZXNcIik7XG5cdFx0YXdhaXQgZmF2b3JpdGVQcm92aWRlci5pbml0KFxuXHRcdFx0Y3VzdG9tU2V0dGluZ3M/LmZhdm9yaXRlUHJvdmlkZXIsXG5cdFx0XHRhd2FpdCB2ZXJzaW9uUHJvdmlkZXIuZ2V0VmVyc2lvbkluZm8oKSxcblx0XHRcdGVuZHBvaW50UHJvdmlkZXJcblx0XHQpO1xuXHR9XG5cblx0bG9nZ2VyLmluZm8oXCJJbml0aWFsaXppbmcgcGxhdGZvcm1cIik7XG5cdGNvbnN0IGJyb3dzZXI6IEJyb3dzZXJJbml0Q29uZmlnID0ge307XG5cblx0aWYgKCFpc0VtcHR5KGN1c3RvbVNldHRpbmdzPy5icm93c2VyUHJvdmlkZXIpKSB7XG5cdFx0YnJvd3Nlci5kZWZhdWx0V2luZG93T3B0aW9ucyA9IGF3YWl0IGdldERlZmF1bHRXaW5kb3dPcHRpb25zKGN1c3RvbVNldHRpbmdzLmJyb3dzZXJQcm92aWRlcik7XG5cdH1cblx0aWYgKCFpc0VtcHR5KGN1c3RvbVNldHRpbmdzPy5icm93c2VyUHJvdmlkZXI/LmRlZmF1bHRQYWdlT3B0aW9ucykpIHtcblx0XHRicm93c2VyLmRlZmF1bHRQYWdlT3B0aW9ucyA9IGN1c3RvbVNldHRpbmdzLmJyb3dzZXJQcm92aWRlcj8uZGVmYXVsdFBhZ2VPcHRpb25zO1xuXHR9XG5cdGlmICghaXNFbXB0eShjdXN0b21TZXR0aW5ncz8uYnJvd3NlclByb3ZpZGVyPy5kZWZhdWx0Vmlld09wdGlvbnMpKSB7XG5cdFx0YnJvd3Nlci5kZWZhdWx0Vmlld09wdGlvbnMgPSBjdXN0b21TZXR0aW5ncy5icm93c2VyUHJvdmlkZXI/LmRlZmF1bHRWaWV3T3B0aW9ucztcblx0fVxuXG5cdGxvZ2dlci5pbmZvKFwiU3BlY2lmeWluZyBmb2xsb3dpbmcgYnJvd3NlciBvcHRpb25zXCIsIGJyb3dzZXIpO1xuXG5cdGNvbnN0IGN1c3RvbUFjdGlvbnMgPSBhd2FpdCBhY3Rpb25zUHJvdmlkZXIuaW5pdChjdXN0b21TZXR0aW5ncz8uYWN0aW9uc1Byb3ZpZGVyLCBoZWxwZXJzKTtcblx0Y29uc3QgdGhlbWUgPSBhd2FpdCBnZXRUaGVtZXMoKTtcblxuXHRhd2FpdCBsb3dDb2RlSW50ZWdyYXRpb25Qcm92aWRlci5pbml0KGN1c3RvbVNldHRpbmdzPy5sb3dDb2RlSW50ZWdyYXRpb25Qcm92aWRlcik7XG5cdGNvbnN0IGludGVncmF0aW9ucyA9IGF3YWl0IGxvd0NvZGVJbnRlZ3JhdGlvblByb3ZpZGVyLnJlZ2lzdGVyKCk7XG5cblx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRhd2FpdCBwbGF0Zm9ybS5vbmNlKFwicGxhdGZvcm0tYXBpLXJlYWR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRsb2dnZXIuaW5mbyhcIlBsYXRmb3JtIEFQSSBSZWFkeVwiKTtcblx0XHRmaW4ubWUuaW50ZXJvcCA9IGZpbi5JbnRlcm9wLmNvbm5lY3RTeW5jKGZpbi5tZS51dWlkLCB7fSk7XG5cdFx0YXdhaXQgbm90aWZ5Q29sb3JTY2hlbWUoKTtcblx0fSk7XG5cblx0YXdhaXQgd29ya3NwYWNlUGxhdGZvcm1Jbml0KHtcblx0XHRicm93c2VyLFxuXHRcdHRoZW1lLFxuXHRcdGN1c3RvbUFjdGlvbnMsXG5cdFx0aW50ZXJvcE92ZXJyaWRlLFxuXHRcdG92ZXJyaWRlQ2FsbGJhY2s6IGFzeW5jIChwbGF0Zm9ybUNvbnN0cnVjdG9yKSA9PlxuXHRcdFx0b3ZlcnJpZGVDYWxsYmFjayhcblx0XHRcdFx0cGxhdGZvcm1Db25zdHJ1Y3Rvcixcblx0XHRcdFx0Y3VzdG9tU2V0dGluZ3M/LnBsYXRmb3JtUHJvdmlkZXIsXG5cdFx0XHRcdGF3YWl0IHZlcnNpb25Qcm92aWRlci5nZXRWZXJzaW9uSW5mbygpXG5cdFx0XHQpLFxuXHRcdGludGVncmF0aW9ucyxcblx0XHRhbmFseXRpY3M6IGN1c3RvbVNldHRpbmdzPy5hbmFseXRpY3NQcm92aWRlcj8uc2VuZFRvT3BlbkZpbiA/IHsgc2VuZFRvT3BlbkZpbjogdHJ1ZSB9IDogdW5kZWZpbmVkXG5cdH0pO1xuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBDbG9zZWRvd24gdGhlIHBsYXRmb3JtLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xvc2Vkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuXHRhd2FpdCBzaGFyZVByb3ZpZGVyLmNsb3NlZG93bigpO1xufVxuIiwiaW1wb3J0IHR5cGUgT3BlbkZpbiBmcm9tIFwiQG9wZW5maW4vY29yZVwiO1xuaW1wb3J0ICogYXMgZW5kcG9pbnRQcm92aWRlciBmcm9tIFwiLi9lbmRwb2ludFwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0SGVscGVycyB9IGZyb20gXCIuL21vZHVsZXNcIjtcbmltcG9ydCB0eXBlIHsgTW9kdWxlSGVscGVycyB9IGZyb20gXCIuL3NoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21TZXR0aW5ncyB9IGZyb20gXCIuL3NoYXBlcy9zZXR0aW5nLXNoYXBlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmxldCBjdXN0b21TZXR0aW5nczogQ3VzdG9tU2V0dGluZ3MgfCB1bmRlZmluZWQ7XG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJTZXR0aW5nc1wiKTtcblxuY29uc3QgUExBVEZPUk1fU0VUVElOR1NfRU5EUE9JTlRfR0VUID0gXCJwbGF0Zm9ybS1zZXR0aW5nc1wiO1xuXG4vKipcbiAqIExvYWQgdGhlIGN1c3RvbVNldHRpbmdzIHNlY3Rpb24gZnJvbSB0aGUgYXBwbGljYXRpb24gbWFuaWZlc3QuXG4gKiBAcmV0dXJucyBUaGUgY3VzdG9tIHNldHRpbmdzIGZyb20gdGhlIG1hbmlmZXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TWFuaWZlc3RDdXN0b21TZXR0aW5ncygpOiBQcm9taXNlPEN1c3RvbVNldHRpbmdzPiB7XG5cdGNvbnN0IGFwcCA9IGF3YWl0IGZpbi5BcHBsaWNhdGlvbi5nZXRDdXJyZW50KCk7XG5cdGNvbnN0IG1hbmlmZXN0OiBPcGVuRmluLk1hbmlmZXN0ICYgeyBjdXN0b21TZXR0aW5ncz86IEN1c3RvbVNldHRpbmdzIH0gPSBhd2FpdCBhcHAuZ2V0TWFuaWZlc3QoKTtcblx0cmV0dXJuIG1hbmlmZXN0LmN1c3RvbVNldHRpbmdzID8/IHt9O1xufVxuXG4vKipcbiAqIEdldCB0aGUgc2V0dGluZ3MgZm9yIHRoZSBhcHBsaWNhdGlvbiwgZWl0aGVyIGZyb20gbWFuaWZlc3Qgb3Igc2V0dGluZ3MgZW5kcG9pbnQuXG4gKiBAcmV0dXJucyBUaGUgY3VzdG9tIHNldHRpbmdzIGZvciB0aGUgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRTZXR0aW5ncygpOiBQcm9taXNlPEN1c3RvbVNldHRpbmdzPiB7XG5cdGlmIChpc0VtcHR5KGN1c3RvbVNldHRpbmdzKSkge1xuXHRcdC8vIEdldCB0aGUgc2V0dGluZ3MgZnJvbSB0aGUgbWFuaWZlc3Rcblx0XHRjdXN0b21TZXR0aW5ncyA9IGF3YWl0IGdldE1hbmlmZXN0Q3VzdG9tU2V0dGluZ3MoKTtcblxuXHRcdC8vIElmIHRoZSBtYW5pZmVzdCBoYXMgZW5kcG9pbnQgc3VwcG9ydCB0aGVuIHNlZSBpZiB0aGVyZSBpcyBhIHNldHRpbmdzIGVuZHBvaW50XG5cdFx0Ly8gdGhhdCB3ZSBjYW4gbG9hZCBhZGRpdGlvbmFsIHNldHRpbmdzIGZyb21cblx0XHRpZiAoY3VzdG9tU2V0dGluZ3MuZW5kcG9pbnRQcm92aWRlcikge1xuXHRcdFx0Y29uc3QgbW9kdWxlSGVscGVyczogTW9kdWxlSGVscGVycyA9IGdldERlZmF1bHRIZWxwZXJzKCk7XG5cdFx0XHRhd2FpdCBlbmRwb2ludFByb3ZpZGVyLmluaXQoY3VzdG9tU2V0dGluZ3MuZW5kcG9pbnRQcm92aWRlciwgbW9kdWxlSGVscGVycyk7XG5cblx0XHRcdGlmIChlbmRwb2ludFByb3ZpZGVyLmhhc0VuZHBvaW50KFBMQVRGT1JNX1NFVFRJTkdTX0VORFBPSU5UX0dFVCkpIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYCR7UExBVEZPUk1fU0VUVElOR1NfRU5EUE9JTlRfR0VUfSBlbmRwb2ludCBzcGVjaWZpZWQuIEZldGNoaW5nIHBsYXRmb3JtIHNldHRpbmdzLmApO1xuXHRcdFx0XHRjb25zdCBzZXJ2ZXJTZXR0aW5ncyA9IGF3YWl0IGVuZHBvaW50UHJvdmlkZXIucmVxdWVzdFJlc3BvbnNlPHVua25vd24sIEN1c3RvbVNldHRpbmdzPihcblx0XHRcdFx0XHRQTEFURk9STV9TRVRUSU5HU19FTkRQT0lOVF9HRVRcblx0XHRcdFx0KTtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJNZXJnaW5nIHBsYXRmb3JtLXNldHRpbmdzIG92ZXIgbWFuaWZlc3Qgc2V0dGluZ3MuXCIpO1xuXHRcdFx0XHRjdXN0b21TZXR0aW5ncyA9IHsgLi4uY3VzdG9tU2V0dGluZ3MsIC4uLnNlcnZlclNldHRpbmdzIH07XG5cdFx0XHRcdHJldHVybiBjdXN0b21TZXR0aW5ncztcblx0XHRcdH1cblx0XHR9XG5cblx0XHRsb2dnZXIuaW5mbyhcIlNldHRpbmdzIGJhc2VkIG9uIG1hbmlmZXN0IHNldHRpbmdzLlwiKTtcblx0fVxuXG5cdHJldHVybiBjdXN0b21TZXR0aW5ncztcbn1cblxuLyoqXG4gKiBDaGVjayB0aGF0IHRoZSBtYW5pZmVzdCBoYXMgYmVlbiBsb2FkZWQgZnJvbSBvbmUgb2YgdGhlIHZhbGlkIGhvc3RzLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgaG9zdCBpcyB2YWxpZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzVmFsaWRIb3N0Rm9yTWFuaWZlc3QoKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGxvZ2dlci5pbmZvKFwiVmFsaWRhdGluZyBzb3VyY2Ugb2YgaW5pdGlhbCBzZXR0aW5nc1wiKTtcblx0Y29uc3QgaG9zdCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnRvTG93ZXJDYXNlKCk7XG5cdGNvbnN0IHBvc3NpYmxlSG9zdHMgPSBbXCJwbGF0Zm9ybS9wcm92aWRlci5odG1sXCIsIFwicHJvdmlkZXIuaHRtbFwiLCBcInNoZWxsL3NoZWxsLmh0bWxcIiwgXCJzaGVsbC5odG1sXCJdO1xuXHRjb25zdCBob3N0UGFnZSA9IHBvc3NpYmxlSG9zdHMuZmluZCgoaCkgPT4gaG9zdC5lbmRzV2l0aChoKSk7XG5cblx0bGV0IHZhbGlkYXRpb25Vcmw6IHN0cmluZztcblx0bGV0IHZhbGlkSG9zdHM6IHN0cmluZ1tdID0gW107XG5cblx0aWYgKCFpc0VtcHR5KGhvc3RQYWdlKSkge1xuXHRcdHZhbGlkYXRpb25VcmwgPSBob3N0LnJlcGxhY2UoaG9zdFBhZ2UsIFwibWFuaWZlc3QtaG9zdHMuanNvblwiKTtcblx0XHRsb2dnZXIuaW5mbyhcIlVzaW5nIGhvc3RzIHZhbGlkYXRpb24gdXJsOlwiLCB2YWxpZGF0aW9uVXJsKTtcblx0XHR2YWxpZEhvc3RzID0gYXdhaXQgZ2V0VmFsaWRIb3N0cyh2YWxpZGF0aW9uVXJsKTtcblx0fVxuXG5cdGNvbnN0IGFwcCA9IGF3YWl0IGZpbi5BcHBsaWNhdGlvbi5nZXRDdXJyZW50KCk7XG5cdGNvbnN0IGluZm8gPSBhd2FpdCBhcHAuZ2V0SW5mbygpO1xuXHRjb25zdCBtYW5pZmVzdFVybCA9IGluZm8ubWFuaWZlc3RVcmw7XG5cdGxvZ2dlci5pbmZvKGBTb3VyY2Ugb2YgaW5pdGlhbCBzZXR0aW5nczogJHttYW5pZmVzdFVybH1gKTtcblxuXHRsZXQgc291cmNlVXJsSG9zdE5hbWUgPSBtYXRjaFVybChsb2NhdGlvbi5ocmVmLCB2YWxpZEhvc3RzKTtcblx0aWYgKGlzRW1wdHkoc291cmNlVXJsSG9zdE5hbWUpKSB7XG5cdFx0c291cmNlVXJsSG9zdE5hbWUgPSBsb2NhdGlvbi5ob3N0bmFtZTtcblx0XHRsb2dnZXIuaW5mbyhcIkFkZGluZyBjdXJyZW50IGhvc3QgdG8gdGhlIGxpc3Qgb2YgdmFsaWQgaG9zdHM6XCIsIHNvdXJjZVVybEhvc3ROYW1lKTtcblx0XHR2YWxpZEhvc3RzLnB1c2goc291cmNlVXJsSG9zdE5hbWUpO1xuXHR9XG5cblx0Y29uc3QgdXJsSG9zdE5hbWUgPSBtYXRjaFVybChtYW5pZmVzdFVybCwgdmFsaWRIb3N0cyk7XG5cdGxvZ2dlci5pbmZvKGBDaGVja2luZyBtYW5pZmVzdCBob3N0OiAke3VybEhvc3ROYW1lfSB2cyB2YWxpZCBsaXN0OiAke0pTT04uc3RyaW5naWZ5KHZhbGlkSG9zdHMpfWApO1xuXHRpZiAodXJsSG9zdE5hbWUpIHtcblx0XHRsb2dnZXIuaW5mbyhcIlRoZSBzb3VyY2Ugb2YgdGhlIGluaXRpYWwgc2V0dGluZ3MgaXMgdmFsaWRcIik7XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRgVGhlIHNvdXJjZSBvZiB0aGUgaW5pdGlhbCBzZXR0aW5ncyAke21hbmlmZXN0VXJsfSBkb2VzIG5vdCBtYXRjaCBhbnkgb2YgdGhlIHZhbGlkIGhvc3QgbmFtZXMuIFBsZWFzZSB1cGRhdGUgdGhlIGxpc3QgaWYgcmVxdWlyZWQuYFxuXHRcdCk7XG5cdH1cblx0cmV0dXJuICFpc0VtcHR5KHVybEhvc3ROYW1lKTtcbn1cblxuLyoqXG4gKiBNYXRjaCBhIHVybCB0byB0aGUgdmFsaWQgaG9zdHMuXG4gKiBAcGFyYW0gdXJsIFRoZSB1cmwgdG8gdHJ5IGFuZCBtYXRjaC5cbiAqIEBwYXJhbSB2YWxpZEhvc3RzIFRoZSBsaXN0IG9mIHZhbGlkIGhvc3RzLlxuICogQHJldHVybnMgVGhlIHZhbGlkIHBhcnQgb2YgdGhlIG5hbWUgaWYgaXQgbWF0Y2hlcy5cbiAqL1xuZnVuY3Rpb24gbWF0Y2hVcmwodXJsOiBzdHJpbmcsIHZhbGlkSG9zdHM6IHN0cmluZ1tdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKHVybC5zdGFydHNXaXRoKFwiZmlsZTovLy9cIikpIHtcblx0XHRjb25zdCBwYXRoID0gdXJsLnJlcGxhY2UoXCJmaWxlOi8vL1wiLCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xuXHRcdHJldHVybiB2YWxpZEhvc3RzLnNvbWUoKHZoKSA9PiBwYXRoLnN0YXJ0c1dpdGgodmgudG9Mb3dlckNhc2UoKSkpID8gcGF0aCA6IHVuZGVmaW5lZDtcblx0fVxuXHRjb25zdCB1ID0gbmV3IFVSTCh1cmwpO1xuXHRyZXR1cm4gdmFsaWRIb3N0cy5pbmNsdWRlcyh1Lmhvc3RuYW1lKSA/IHUuaG9zdG5hbWUgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0IGEgbGlzdCBvZiB0aGUgdmFsaWQgaG9zdHMgZnJvbSB0aGUgZW5kcG9pbnQuXG4gKiBAcGFyYW0gdmFsaWRhdGlvblVybCBUaGUgdXJsIHRvIGxvYWQgdGhlIGhvc3QgbGlzdHMgZnJvbS5cbiAqIEByZXR1cm5zIEEgbGlzdCBvZiB0aGUgdmFsaWQgaG9zdHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldFZhbGlkSG9zdHModmFsaWRhdGlvblVybDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuXHRjb25zdCBtYW5pZmVzdEhvc3RzUGF0aCA9IHZhbGlkYXRpb25Vcmw7XG5cdHRyeSB7XG5cdFx0bG9nZ2VyLmluZm8oYEdldHRpbmcgdmFsaWQgaG9zdHMgZm9yIGluaXRpYWwgc2V0dGluZ3MgZnJvbSAke21hbmlmZXN0SG9zdHNQYXRofWApO1xuXHRcdGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaChtYW5pZmVzdEhvc3RzUGF0aCk7XG5cdFx0Y29uc3QganNvblJlc3VsdHM6IHN0cmluZ1tdID0gYXdhaXQgcmVzcC5qc29uKCk7XG5cdFx0cmV0dXJuIGpzb25SZXN1bHRzO1xuXHR9IGNhdGNoIHtcblx0XHRsb2dnZXIuaW5mbyhgVmFsaWQgaG9zdHMgZW5kcG9pbnQgKCR7bWFuaWZlc3RIb3N0c1BhdGh9KSBub3QgcHJvdmlkZWQuYCk7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG59XG4iLCJpbXBvcnQgdHlwZSB7IFBsYXRmb3JtU3RvcmFnZU1ldGFkYXRhIH0gZnJvbSBcIi4vcGxhdGZvcm0tc2hhcGVzXCI7XG5cbi8qKlxuICogRmF2b3JpdGUgdHlwZSBmb3IgQXBwLlxuICovXG5leHBvcnQgY29uc3QgRkFWT1JJVEVfVFlQRV9OQU1FX0FQUCA9IFwiYXBwXCI7XG5cbi8qKlxuICogRmF2b3JpdGUgdHlwZSBmb3IgV29ya3NwYWNlLlxuICovXG5leHBvcnQgY29uc3QgRkFWT1JJVEVfVFlQRV9OQU1FX1dPUktTUEFDRSA9IFwid29ya3NwYWNlXCI7XG5cbi8qKlxuICogRmF2b3JpdGUgdHlwZSBmb3IgUGFnZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEZBVk9SSVRFX1RZUEVfTkFNRV9QQUdFID0gXCJwYWdlXCI7XG5cbi8qKlxuICogRmF2b3JpdGUgdHlwZSBmb3IgUXVlcnkuXG4gKi9cbmV4cG9ydCBjb25zdCBGQVZPUklURV9UWVBFX05BTUVfUVVFUlkgPSBcInF1ZXJ5XCI7XG5cbi8qKlxuICogTmFtZXMgZm9yIGFsbCB0aGUgZmF2b3JpdGUgdHlwZXMuXG4gKi9cbmV4cG9ydCB0eXBlIEZhdm9yaXRlVHlwZU5hbWVzID1cblx0fCB0eXBlb2YgRkFWT1JJVEVfVFlQRV9OQU1FX0FQUFxuXHR8IHR5cGVvZiBGQVZPUklURV9UWVBFX05BTUVfV09SS1NQQUNFXG5cdHwgdHlwZW9mIEZBVk9SSVRFX1RZUEVfTkFNRV9QQUdFXG5cdHwgdHlwZW9mIEZBVk9SSVRFX1RZUEVfTkFNRV9RVUVSWTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZmF2b3JpdGUgcHJvdmlkZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmF2b3JpdGVQcm92aWRlck9wdGlvbnMge1xuXHQvKipcblx0ICogSXMgdGhlIHByb3ZpZGVyIGVuYWJsZWQsIGRlZmF1bHRzIHRvIHRydWUuXG5cdCAqL1xuXHRlbmFibGVkPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogVGhlIGljb24gdGhhdCBzaG91bGQgYmUgdXNlZCBpZiB5b3Ugd2FudCB0byBpbmRpY2F0ZSB0aGlzIGlzIGEgZmF2b3JpdGUgYWN0aW9uXG5cdCAqL1xuXHRmYXZvcml0ZUljb246IHN0cmluZztcblxuXHQvKipcblx0ICogVGhlIGljb24gdG8gdXNlIHRvIGluZGljYXRlIHRoYXQgdGhpcyBmYXZvcml0ZSBjYW4gYmUgdW5zZXRcblx0ICovXG5cdHVuZmF2b3JpdGVJY29uOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFdoYXQgY29tbWFuZHMgc2hvdWxkIGludGVncmF0aW9ucyBjaGVjayBmb3IgaWYgdGhleSBpbnRlbnQgdG8gc3VwcG9ydCB0aGUgZGlzcGxheSBvZiBmYXZvcml0ZXNcblx0ICovXG5cdGZhdm9yaXRlQ29tbWFuZD86IHN0cmluZztcblxuXHQvKipcblx0ICogVGhlIGNvbm5lY3Rpb24gcHJvdmlkZXIgY2FuIGhhdmUgYWN0aW9ucyByZWdpc3RlcmVkIGFnYWluc3QgaXQgZnJvbSB0aGUgcGxhdGZvcm0uIFRoaXMgcHJvdmlkZXMgYSBkZWZhdWx0IGxpc3Qgb2Zcblx0ICogYWN0aW9ucyB0aGF0IGNvbm5lY3Rpb25zIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBpZiBhY3Rpb25zIGFyZSBlbmFibGVkIGZvciB0aGF0IGNvbm5lY3Rpb24uXG5cdCAqL1xuXHRzdXBwb3J0ZWRGYXZvcml0ZVR5cGVzPzogRmF2b3JpdGVUeXBlTmFtZXNbXTtcbn1cblxuLyoqXG4gKiBXaGVuIGFuIGVudHJ5IGlzIG1hZGUgaXQgcmVwcmVzZW50cyBhIHR5cGUgc3VwcG9ydGVkIGJ5IHRoaXMgcGxhdGZvcm0uIFRoaXMgY2FuIGJlIHVzZWQgdG8gbG9va3VwIGFuZCBsYXVuY2ggdGhlIHRoaW5nIHRoaXMgZW50cnkgcmVmZXJzIHRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZhdm9yaXRlRW50cnkge1xuXHQvKipcblx0ICogQSB1bmlxdWUgZ3VpZCB0byByZXByZXNlbnQgdGhpcyBmYXZvcml0ZSBlbnRyeSBzbyB0aGF0IGl0IGNhbiBiZSB1cGRhdGVkIG9yIHJlbW92ZWRcblx0ICovXG5cdGlkOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFRoZSBpZCBmb3IgdGhlIGZhdm9yaXRlIHR5cGUgdGhpcyBlbnRyeSByZXByZXNlbnRzXG5cdCAqL1xuXHR0eXBlSWQ6IHN0cmluZztcblxuXHQvKipcblx0ICogV2hhdCB0eXBlIG9mIGZhdm9yaXRlIGVudHJ5IGRvZXMgdGhpcyBlbnRyeSByZXByZXNlbnRcblx0ICovXG5cdHR5cGU6IEZhdm9yaXRlVHlwZU5hbWVzO1xuXG5cdC8qKlxuXHQgKiBUaGUgdGltZXN0YW1wIGZvciB0aGUgZW50cnkuXG5cdCAqL1xuXHR0aW1lc3RhbXA/OiBEYXRlO1xuXG5cdC8qKlxuXHQgKiBEb2VzIHRoaXMgZmF2b3JpdGUgaGF2ZSBhIHN1Z2dlc3RlZCBsYWJlbCB0aGF0IGNhbiBiZSB1c2VkIHRvIGF2b2lkIGEgbG9va3VwXG5cdCAqL1xuXHRsYWJlbD86IHN0cmluZztcblxuXHQvKipcblx0ICogRG9lcyB0aGlzIGZhdm9yaXRlIGhhdmUgYSBzdWdnZXN0ZWQgaWNvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGF2b2lkIGEgbG9va3VwXG5cdCAqL1xuXHRpY29uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEluZm8gdG8gcmV0dXJuIHRvIGludGVyZXN0ZWQgcGFydGllcyB0byBoZWxwIHRoZW0gc3VwcG9ydCBmYXZvcml0ZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGYXZvcml0ZUluZm8ge1xuXHQvKipcblx0ICogVGhlIHBhdGggdG8gYW4gaWNvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIHRoZSBhYmlsaXR5IHRvIGZhdm9yaXRlXG5cdCAqL1xuXHRmYXZvcml0ZUljb24/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgcGF0aCB0byBhbiBpY29uIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhlIGFiaWxpdHkgdG8gcmVtb3ZlIHRoaXMgZmF2b3JpdGVcblx0ICovXG5cdHVuZmF2b3JpdGVJY29uPzogc3RyaW5nO1xuXHQvKipcblx0ICogQSBjb21tYW5kIHRoYXQgc3VwcG9ydGluZyBtb2R1bGVzIHNob3VsZCBsaXN0ZW4gZm9yIGlmIHRoZXkgYXJlIHRvIGRpc3BsYXkgZmF2b3JpdGVzIHRoYXQgZmFsbCB1bmRlciB0aGVtXG5cdCAqL1xuXHRjb21tYW5kPzogc3RyaW5nO1xuXHQvKipcblx0ICogV2hhdCB0eXBlcyBvZiBmYXZvcml0ZSBpdGVtIGFyZSBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybVxuXHQgKi9cblx0ZW5hYmxlZFR5cGVzPzogRmF2b3JpdGVUeXBlTmFtZXNbXTtcblx0LyoqXG5cdCAqIElzIGZhdm9yaXRlIHN1cHBvcnQgZW5hYmxlZCBvbiB0aGlzIHBsYXRmb3JtLlxuXHQgKi9cblx0aXNFbmFibGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgY2xpZW50IHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJvdmlkZSBhY2Nlc3MgdG8gc29tZSBvciBhbGwgb2YgdGhlIGZhdm9yaXRlIGZ1bmN0aW9uYWxpdHlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGYXZvcml0ZUNsaWVudCB7XG5cdC8qKlxuXHQgKiBUaGUgYWJpbGl0eSB0byByZXF1ZXN0IHN1cHBvcnRpbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hldGhlciBmYXZvcml0ZXMgYXJlIGluaXRpYWxpemVkIGZvciB0aGUgcGxhdGZvcm0gYW5kIHN1cHBvcnRpbmcgaW5mb3JtYXRpb24uXG5cdCAqIEByZXR1cm5zIFN1cHBvcnRpbmcgaW5mb3JtYXRpb24uXG5cdCAqL1xuXHRnZXRJbmZvKCk6IEZhdm9yaXRlSW5mbztcblx0LyoqXG5cdCAqIFRoZSBhYmlsaXR5IHRvIHJlcXVlc3QgYWxsIChvciBzb21lIGlmIGJ5IHR5cGUpIG9mIHRoZSBzYXZlZCBmYXZvcml0ZXNcblx0ICogQHBhcmFtIGJ5VHlwZSB0aGUgdHlwZSBvZiBzYXZlZCBmYXZvcml0ZSB5b3UgYXJlIGxvb2tpbmcgZm9yXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHNhdmVkIGZhdm9yaXRlcyBvciBhbiBlbXB0eSBhcnJheSBpZiBpdCB3YXMgdW5hYmxlIHRvIGdldCBhbnkgYmFja1xuXHQgKi9cblx0Z2V0U2F2ZWRGYXZvcml0ZXMoYnlUeXBlPzogRmF2b3JpdGVUeXBlTmFtZXMpOiBQcm9taXNlPEZhdm9yaXRlRW50cnlbXSB8IHVuZGVmaW5lZD47XG5cdC8qKlxuXHQgKiBUaGUgYWJpbGl0eSB0byByZXF1ZXN0IGEgcGFydGljdWxhciBzYXZlZCBmYXZvcml0ZS5cblx0ICogQHBhcmFtIGlkIHRoZSBpZCBvZiB0aGUgZmF2b3JpdGUgeW91IGFyZSBsb29raW5nIGZvclxuXHQgKiBAcmV0dXJucyB0aGUgc2F2ZWQgZmF2b3JpdGUgaWYgYXZhaWxhYmxlIG9yIGZhbHNlIGlmIGl0IGRpZG4ndCBleGlzdFxuXHQgKi9cblx0Z2V0U2F2ZWRGYXZvcml0ZShpZDogc3RyaW5nKTogUHJvbWlzZTxGYXZvcml0ZUVudHJ5IHwgdW5kZWZpbmVkPjtcblx0LyoqXG5cdCAqIFRoZSBhYmlsaXR5IHRvIHNhdmUgYSBmYXZvcml0ZS5cblx0ICogQHBhcmFtIGZhdm9yaXRlIHRoZSBGYXZvcml0ZSB5b3Ugd2lzaCB0byBzYXZlXG5cdCAqIEByZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBmYXZvcml0ZSB3YXMgc2F2ZWRcblx0ICovXG5cdHNldFNhdmVkRmF2b3JpdGU/KGZhdm9yaXRlOiBGYXZvcml0ZUVudHJ5KTogUHJvbWlzZTxib29sZWFuPjtcblx0LyoqXG5cdCAqIFRoZSBhYmlsaXR5IHRvIHJlbW92ZS9kZWxldGUgYSBzYXZlZCBmYXZvcml0ZS5cblx0ICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgZmF2b3JpdGUgdG8gZGVsZXRlXG5cdCAqIEByZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBmYXZvcml0ZSB3YXMgZGVsZXRlZC5cblx0ICovXG5cdGRlbGV0ZVNhdmVkRmF2b3JpdGU/KGlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+O1xufVxuXG4vKipcbiAqIEFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgYSBmYXZvcml0ZSBhbmQgbWV0YSBkYXRhIHJlbGF0ZWQgdG8gaXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludEZhdm9yaXRlRW50cnkge1xuXHQvKipcblx0ICogSW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgcGxhdGZvcm0gcHJvdmlkaW5nIHRoZSBwYXlsb2FkLlxuXHQgKi9cblx0bWV0YURhdGE6IFBsYXRmb3JtU3RvcmFnZU1ldGFkYXRhO1xuXHQvKipcblx0ICogVGhlIGZhdm9yaXRlIGVudHJ5XG5cdCAqL1xuXHRwYXlsb2FkOiBGYXZvcml0ZUVudHJ5O1xufVxuXG4vKipcbiAqIEEgcmVxdWVzdCB0eXBlIGZvciB0aGUgRmF2b3JpdGVFbmRwb2ludCB0aGF0IGdldHMgYWxsIHNhdmVkIGZhdm9yaXRlIGVudHJpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludEZhdm9yaXRlTGlzdFJlcXVlc3Qge1xuXHQvKipcblx0ICogVGhlIGlkIG9mIHRoZSBwbGF0Zm9ybSBtYWtpbmcgdGhlIHJlcXVlc3Rcblx0ICovXG5cdHBsYXRmb3JtOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgdHlwZSBpZiBzcGVjaWZpZWQgc2hvdWxkIGJlIHVzZWQgdG8gZmlsdGVyIHRoZSByZXNwb25zZSB0byBvbmx5IHNlbmQgdGhlIGVudHJpZXMgdGhhdCBhcmUgcmVsZXZhbnRcblx0ICovXG5cdGZhdm9yaXRlVHlwZT86IEZhdm9yaXRlVHlwZU5hbWVzO1xufVxuXG4vKipcbiAqIFRoZSByZXNwb25zZSBhZnRlciB0aGUgcmVxdWVzdCBmb3IgZmF2b3JpdGVzIHdhcyBmdWxmaWxsZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludEZhdm9yaXRlTGlzdFJlc3BvbnNlIHtcblx0LyoqXG5cdCAqIFRoZSBsaXN0IG9mIGZhdm9yaXRlIGVudHJpZXMgd2l0aCBpbmZvcm1hdGlvbiBvZiB3aGF0IHBsYXRmb3JtIHZlcnNpb25zIHRoZXkgd2VyZSBvcmlnaW5hbGx5IHNhdmVkIGFnYWluc3Rcblx0ICovXG5cdGVudHJpZXM6IEVuZHBvaW50RmF2b3JpdGVFbnRyeVtdO1xufVxuXG4vKipcbiAqIFRoZSByZXF1ZXN0IGZvciBnZXR0aW5nIGEgc3BlY2lmaWMgZmF2b3JpdGUgZW50cnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludEZhdm9yaXRlR2V0UmVxdWVzdCB7XG5cdC8qKlxuXHQgKiBUaGUgaWQgb2YgdGhlIHBsYXRmb3JtIG1ha2luZyB0aGUgcmVxdWVzdFxuXHQgKi9cblx0cGxhdGZvcm06IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSBpZCBvZiB0aGUgc3BlY2lmaWMgZW50cnkgdGhhdCBoYXMgYmVlbiBzYXZlZFxuXHQgKi9cblx0aWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcmVzcG9uc2UgYWZ0ZXIgdGhlIHJlcXVlc3QgZm9yIGEgc3BlY2lmaWMgZmF2b3JpdGUgd2FzIGZ1bGZpbGxlZFxuICovXG5leHBvcnQgdHlwZSBFbmRwb2ludEZhdm9yaXRlR2V0UmVzcG9uc2UgPSBFbmRwb2ludEZhdm9yaXRlRW50cnk7XG5cbi8qKlxuICogVGhlIHJlcXVlc3QgZm9yIGdldHRpbmcgYSBzcGVjaWZpYyBmYXZvcml0ZSBlbnRyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50RmF2b3JpdGVTZXRSZXF1ZXN0IGV4dGVuZHMgRW5kcG9pbnRGYXZvcml0ZUVudHJ5IHtcblx0LyoqXG5cdCAqIFRoZSBpZCBvZiB0aGUgcGxhdGZvcm0gbWFraW5nIHRoZSByZXF1ZXN0XG5cdCAqL1xuXHRwbGF0Zm9ybTogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIGlkIG9mIHRoZSBzcGVjaWZpYyBlbnRyeSB0aGF0IGlzIHRvIGJlIHNldFxuXHQgKi9cblx0aWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcmVxdWVzdCBmb3IgcmVtb3ZpbmcgYSBzcGVjaWZpYyBmYXZvcml0ZSBlbnRyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50RmF2b3JpdGVSZW1vdmVSZXF1ZXN0IHtcblx0LyoqXG5cdCAqIFRoZSBpZCBvZiB0aGUgcGxhdGZvcm0gbWFraW5nIHRoZSByZXF1ZXN0XG5cdCAqL1xuXHRwbGF0Zm9ybTogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIGlkIG9mIHRoZSBzcGVjaWZpYyBlbnRyeSB0aGF0IGlzIHRvIGJlIHJlbW92ZWRcblx0ICovXG5cdGlkOiBzdHJpbmc7XG59XG4iLCJpbXBvcnQgdHlwZSB7IEN1c3RvbVRoZW1lT3B0aW9ucywgQ3VzdG9tVGhlbWVPcHRpb25zV2l0aFNjaGVtZSB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcblxuLyoqXG4gKiBQbGF0Zm9ybSB0aGVtZSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGhlbWVQcm92aWRlck9wdGlvbnMge1xuXHQvKipcblx0ICogVGhlIFRoZW1lcyB5b3Ugd2lzaCB5b3VyIHBsYXRmb3JtIHRvIHN1cHBvcnRcblx0ICovXG5cdHRoZW1lczogUGxhdGZvcm1DdXN0b21UaGVtZXM7XG5cblx0LyoqXG5cdCAqIElmIHByb3ZpZGluZyB0aGUgcGFsZXR0ZSB0aHJvdWdoIGNzcyB2YXJpYWJsZXMgd291bGQgeW91IGxpa2UgYSBzcGVjaWZpYyBjdXN0b20gcHJlZml4P1xuXHQgKi9cblx0Y3NzVmFyUHJlZml4Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBJZiBwcm92aWRpbmcgYSBjbGFzcyBhdCB0aGUgcm9vdCBkb2N1bWVudCBmb3IgY29udGVudCBwcm92aWRlcnMgdG8gaW5kaWNhdGUgbGlnaHQvZGFyayB3b3VsZCB5b3UgbGlrZSB0byBwcm92aWRlXG5cdCAqIHNvbWV0aGluZyBvdGhlciB0aGFuIHRoZSBkZWZhdWx0LlxuXHQgKi9cblx0c2NoZW1hTmFtZXM/OiB7XG5cdFx0ZGFyaz86IHN0cmluZztcblx0XHRsaWdodD86IHN0cmluZztcblx0fTtcbn1cblxuLyoqXG4gKiBDb2xvciBzY2hlbWVzLCBsaWdodCBvciBkYXJrLlxuICovXG5leHBvcnQgZW51bSBDb2xvclNjaGVtZU1vZGUge1xuXHRMaWdodCA9IFwibGlnaHRcIixcblx0RGFyayA9IFwiZGFya1wiXG59XG5cbi8qKlxuICogRXh0ZW5kZWQgcHJvcGVydGllcyBmb3IgYSBjdXN0b20gdGhlbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxhdGZvcm1DdXN0b21UaGVtZUV4dGVuZGVkIHtcblx0LyoqXG5cdCAqIEFuIGlkIHRvIGhlbHAgaWRlbnRpZnkgdGhpcyB0aGVtZSBhcyBsYWJlbHMgY2FuIGNoYW5nZSBvdmVyIHRpbWUgYW5kIGFyZSB1c2VkIGZvciBkaXNwbGF5XG5cdCAqL1xuXHRpZDogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBJZiB0aGVyZSBpcyBhIHNoYXJlZCBmb2xkZXIgYWNyb3NzIHRoZW1lcyB0aGF0IGhhdmUgbGlnaHQgYW5kIGRhcmsgaWNvbnMgeW91IGNhbiBzcGVjaWZ5IGEgZm9sZGVyIG5hbWUgdG8gdXNlXG5cdCAqIGluc3RlYWQgb2YgdGhlIHRoZW1lIGlkIChvciBsYWJlbCBpZiB0aGVyZSBpcyBubyBpZClcblx0ICovXG5cdGljb25Gb2xkZXI/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIElmIHlvdSBhcmUgc3BlY2lmeWluZyBhIHNpbmdsZSBwYWxldHRlIGluIHlvdXIgdGhlbWUgYW5kIGl0IGlzIGEgbGlnaHQgcGFsZXR0ZSB0aGVuIHlvdSBjYW4gaW5kaWNhdGUgdGhhdCBieVxuXHQgKiBzcGVjaWZ5aW5nIHRoZSBkZWZhdWx0IG9mIGxpZ2h0IChvdGhlcndpc2Ugd2Ugd2lsbCBhc3N1bWUgaXQgaXMgZGFyaykgSWYgeW91IHNwZWNpZnkgcGFsZXR0ZXMgYW5kIGhhdmUgYSBsaWdodFxuXHQgKiBhbmQgYSBkYXJrIHBhbGV0dGUgdGhlbiB0aGlzIHNldHRpbmcgc3BlY2lmaWVzIGEgZGVmYXVsdCBwcmVmZXJlbmNlIChpdCBkZWZhdWx0cyB0byBwaWNraW5nIHRoZSBkYXJrIHBhbGV0dGUgaWYgYVxuXHQgKiBkZWZhdWx0IGlzIG5vdCBzcGVjaWZpZWQpXG5cdCAqL1xuXHRkZWZhdWx0PzogXCJsaWdodFwiIHwgXCJkYXJrXCI7XG59XG5cbi8qKlxuICogUGxhdGZvcm0gY3VzdG9tIHRoZW1lIHdpdGggb3B0aW9ucyB1c2luZyBleHRlbmRlZCB0eXBlcy5cbiAqL1xuZXhwb3J0IHR5cGUgUGxhdGZvcm1DdXN0b21UaGVtZU9wdGlvbnMgPSBDdXN0b21UaGVtZU9wdGlvbnMgJiBQbGF0Zm9ybUN1c3RvbVRoZW1lRXh0ZW5kZWQ7XG5cbi8qKlxuICogUGxhdGZvcm0gY3VzdG9tIHRoZW1lIHdpdGggb3B0aW9ucyBhbmQgc2NoZW1lIHVzaW5nIGV4dGVuZGVkIHR5cGVzLlxuICovXG5leHBvcnQgdHlwZSBQbGF0Zm9ybUN1c3RvbVRoZW1lT3B0aW9uc1dpdGhTY2hlbWUgPSBDdXN0b21UaGVtZU9wdGlvbnNXaXRoU2NoZW1lICYgUGxhdGZvcm1DdXN0b21UaGVtZUV4dGVuZGVkO1xuXG4vKipcbiAqIFBsYXRmb3JtIGN1c3RvbSB0aGVtZSBlaXRoZXIgd2l0aCBvciB3aXRob3V0IG9wdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFBsYXRmb3JtQ3VzdG9tVGhlbWUgPSBQbGF0Zm9ybUN1c3RvbVRoZW1lT3B0aW9ucyB8IFBsYXRmb3JtQ3VzdG9tVGhlbWVPcHRpb25zV2l0aFNjaGVtZTtcblxuLyoqXG4gKiBMaXN0IG9mIGV4dGVuZGVkIGN1c3RvbSB0aGVtZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFBsYXRmb3JtQ3VzdG9tVGhlbWVzID0gUGxhdGZvcm1DdXN0b21UaGVtZVtdO1xuIiwiaW1wb3J0IHR5cGUgT3BlbkZpbiBmcm9tIFwiQG9wZW5maW4vY29yZVwiO1xuaW1wb3J0IHsgZ2V0Q3VycmVudFN5bmMsIHR5cGUgUGFnZSB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB7IGNyZWF0ZSwgSW5kaWNhdG9yQ29sb3IsIHR5cGUgTm90aWZpY2F0aW9uT3B0aW9ucyB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2Uvbm90aWZpY2F0aW9uc1wiO1xuaW1wb3J0IHsgcmVxdWVzdFJlc3BvbnNlIH0gZnJvbSBcIi4vZW5kcG9pbnRcIjtcbmltcG9ydCB7IHJlZ2lzdGVyTGlzdGVuZXIsIHJlbW92ZUxpc3RlbmVyIH0gZnJvbSBcIi4vaW5pdC1vcHRpb25zXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiLi9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB7IGdldFBhZ2VCb3VuZHMsIGxhdW5jaFBhZ2UgfSBmcm9tIFwiLi9wbGF0Zm9ybS9icm93c2VyXCI7XG5pbXBvcnQgeyBnZXRTZXR0aW5ncyB9IGZyb20gXCIuL3NldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IFNoYXJlU3RvcmVFbnRyeSwgU2hhcmVQYWdlRGF0YSwgU2hhcmVXb3Jrc3BhY2VEYXRhIH0gZnJvbSBcIi4vc2hhcGVzL3NoYXJlLXNoYXBlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIlNoYXJlXCIpO1xuXG5sZXQgc2hhcmVFbmFibGVkID0gZmFsc2U7XG5sZXQgc2hhcmVSZWdpc3RlcmVkID0gZmFsc2U7XG5sZXQgaW5pdE9wdGlvbnNMaXN0ZW5lcklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgc2hhcmluZy5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBzaGFyaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdChvcHRpb25zOiB7IGVuYWJsZWQ6IGJvb2xlYW4gfSB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAob3B0aW9ucykge1xuXHRcdHNoYXJlRW5hYmxlZCA9IG9wdGlvbnM/LmVuYWJsZWQ7XG5cblx0XHRpZiAoc2hhcmVFbmFibGVkKSB7XG5cdFx0XHRpZiAoIXNoYXJlUmVnaXN0ZXJlZCkge1xuXHRcdFx0XHRzaGFyZVJlZ2lzdGVyZWQgPSB0cnVlO1xuXHRcdFx0XHRpbml0T3B0aW9uc0xpc3RlbmVySWQgPSByZWdpc3Rlckxpc3RlbmVyKFwic2hhcmVJZFwiLCBhc3luYyAoaW5pdE9wdGlvbnMpID0+IHtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcIlJlY2VpdmVkIHNoYXJlIHJlcXVlc3QuXCIpO1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgaW5pdE9wdGlvbnMuc2hhcmVJZCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdFx0YXdhaXQgbG9hZFNoYXJlZEVudHJ5KGluaXRPcHRpb25zLnNoYXJlSWQpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRsb2dnZXIud2FybihcInNoYXJlSWQgcGFzc2VkIGJ1dCBpdCB3YXNuJ3QgYSBzdHJpbmdcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFwiU2hhcmUgY2Fubm90IGJlIHJlZ2lzdGVyZWQgbW9yZSB0aGFuIG9uY2UuXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIENsb3NlZG93biB0aGUgc2hhcmUgcHJvdmlkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjbG9zZWRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChzaGFyZUVuYWJsZWQpIHtcblx0XHRpZiAoc2hhcmVSZWdpc3RlcmVkKSB7XG5cdFx0XHRpZiAoaW5pdE9wdGlvbnNMaXN0ZW5lcklkKSB7XG5cdFx0XHRcdHJlbW92ZUxpc3RlbmVyKGluaXRPcHRpb25zTGlzdGVuZXJJZCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZ2dlci53YXJuKFwiU2hhcmUgaXNuJ3QgcmVnaXN0ZXJlZCB5ZXQgc28gY2Fubm90IGJlIGRlcmVnaXN0ZXJlZC5cIik7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogSXMgc2hhcmluZyBlbmFibGVkLlxuICogQHJldHVybnMgVHJ1ZSBpZiBzaGFyaW5nIGlzIGVuYWJsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NoYXJlRW5hYmxlZCgpOiBib29sZWFuIHtcblx0cmV0dXJuIHNoYXJlRW5hYmxlZDtcbn1cblxuLyoqXG4gKiBTaG93IHRoZSBzaGFyZSBvcHRpb25zIG1lbnUuXG4gKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIGluZm9ybWF0aW9uIHRvIHVzZSBmb3IgcG9zaXRpb25pbmcuXG4gKiBAcGFyYW0gcGF5bG9hZC53aW5kb3dJZGVudGl0eSBUaGUgd2luZG93IHRoYXQgaW5pdGlhdGVkIHRoZSBtZW51IHJlcXVlc3QuXG4gKiBAcGFyYW0gcGF5bG9hZC54IFRoZSB4IHBvc2l0aW9uIG9mIHRoZSBtb3VzZSBjbGljay5cbiAqIEBwYXJhbSBwYXlsb2FkLnkgVGhlIHkgcG9zaXRpb24gb2YgdGhlIG1vdXNlIGNsaWNrLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hvd1NoYXJlT3B0aW9ucyhwYXlsb2FkOiB7XG5cdHdpbmRvd0lkZW50aXR5OiBPcGVuRmluLklkZW50aXR5O1xuXHR4OiBudW1iZXI7XG5cdHk6IG51bWJlcjtcbn0pOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKHNoYXJlUmVnaXN0ZXJlZCkge1xuXHRcdGxvZ2dlci5pbmZvKFwiU2hhcmUgY2FsbGVkIHdpdGggcGF5bG9hZDpcIiwgcGF5bG9hZCk7XG5cblx0XHRjb25zdCB3aW5kb3dJZGVudGl0eSA9IHBheWxvYWQud2luZG93SWRlbnRpdHk7XG5cdFx0bGV0IHBhZ2VJZDtcblxuXHRcdGNvbnN0IHBsYXRmb3JtV29ya3NwYWNlID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRjb25zdCBjdXJyZW50V2luZG93ID0gcGxhdGZvcm1Xb3Jrc3BhY2UuQnJvd3Nlci53cmFwU3luYyh3aW5kb3dJZGVudGl0eSk7XG5cdFx0Y29uc3QgY3VycmVudFBhZ2VzID0gYXdhaXQgY3VycmVudFdpbmRvdy5nZXRQYWdlcygpO1xuXG5cdFx0Zm9yIChjb25zdCBwYWdlIG9mIGN1cnJlbnRQYWdlcykge1xuXHRcdFx0aWYgKHBhZ2UuaXNBY3RpdmUpIHtcblx0XHRcdFx0cGFnZUlkID0gcGFnZS5wYWdlSWQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGVtcGxhdGU6IE9wZW5GaW4uTWVudUl0ZW1UZW1wbGF0ZVtdID0gW1xuXHRcdFx0e1xuXHRcdFx0XHRsYWJlbDogXCJTaGFyZSBQYWdlXCIsXG5cdFx0XHRcdGRhdGE6IHsgaWRlbnRpdHk6IHsgd2luZG93SWRlbnRpdHksIHBhZ2VJZCB9LCB0eXBlOiBcInBhZ2VcIiB9XG5cdFx0XHR9LFxuXHRcdFx0eyB0eXBlOiBcInNlcGFyYXRvclwiLCBkYXRhOiB7fSB9LFxuXHRcdFx0e1xuXHRcdFx0XHRsYWJlbDogXCJTaGFyZSBXb3Jrc3BhY2VcIixcblx0XHRcdFx0ZGF0YTogeyBpZGVudGl0eToge30sIHR5cGU6IFwid29ya3NwYWNlXCIgfVxuXHRcdFx0fVxuXHRcdF07XG5cblx0XHRjb25zdCByID0gYXdhaXQgY3VycmVudFdpbmRvdy5vcGVuZmluV2luZG93LnNob3dQb3B1cE1lbnUoe1xuXHRcdFx0dGVtcGxhdGUsXG5cdFx0XHR4OiBwYXlsb2FkLngsXG5cdFx0XHR5OiBwYXlsb2FkLnlcblx0XHR9KTtcblxuXHRcdGlmIChyLnJlc3VsdCA9PT0gXCJjbG9zZWRcIikge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJzaGFyZSBtZW51IGRpc21pc3NlZC5cIik7XG5cdFx0fSBlbHNlIGlmIChyLmRhdGEudHlwZSA9PT0gXCJwYWdlXCIpIHtcblx0XHRcdGF3YWl0IHNhdmVTaGFyZWRQYWdlKHIuZGF0YS5pZGVudGl0eSk7XG5cdFx0fSBlbHNlIGlmIChyLmRhdGEudHlwZSA9PT0gXCJ3b3Jrc3BhY2VcIikge1xuXHRcdFx0YXdhaXQgc2F2ZVNoYXJlZFdvcmtzcGFjZSgpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRsb2dnZXIud2FybihcIlNoYXJlIGNhbm5vdCBiZSB0cmlnZ2VyZWQgYXMgaXQgaGFzbid0IGJlZW4gcmVnaXN0ZXJlZCB5ZXQuXCIpO1xuXHR9XG59XG5cbi8qKlxuICogU2hhcmUgdGhlIHNwZWNpZmllZCBkYXRhLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGRhdGEgdG8gc2hhcmUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaGFyZShvcHRpb25zOiBTaGFyZVBhZ2VEYXRhIHwgU2hhcmVXb3Jrc3BhY2VEYXRhKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChzaGFyZVJlZ2lzdGVyZWQpIHtcblx0XHRpZiAob3B0aW9ucykge1xuXHRcdFx0aWYgKG9wdGlvbnMudHlwZSA9PT0gXCJ3b3Jrc3BhY2VcIikge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcIkEgcmVxdWVzdCB0byBzaGFyZSB0aGUgd29ya3NwYWNlIGhhcyBiZWVuIHJhaXNlZC5cIik7XG5cdFx0XHRcdGF3YWl0IHNhdmVTaGFyZWRXb3Jrc3BhY2Uob3B0aW9ucyk7XG5cdFx0XHR9IGVsc2UgaWYgKG9wdGlvbnMudHlwZSA9PT0gXCJwYWdlXCIpIHtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJTaGFyZSBjYWxsZWQgd2l0aCBwYXlsb2FkOiA9XCIsIG9wdGlvbnMpO1xuXHRcdFx0XHRhd2FpdCBzYXZlU2hhcmVkUGFnZShvcHRpb25zKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0bG9nZ2VyLndhcm4oXCJObyBvcHRpb25zIHByb3ZpZGVkIHRvIHNoYXJlLlwiKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyLndhcm4oXCJTaGFyZSBjYW5ub3QgYmUgdHJpZ2dlcmVkIGFzIGl0IGhhc24ndCBiZWVuIHJlZ2lzdGVyZWQgeWV0LlwiKTtcblx0fVxufVxuXG4vKipcbiAqIFNob3cgYSBzdWNjZXNzZnVsIGxvYWQgbm90aWZpY2F0aW9uLlxuICovXG5hc3luYyBmdW5jdGlvbiBub3RpZnlPZlN1Y2Nlc3NmdWxMb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBzZXR0aW5ncyA9IGF3YWl0IGdldFNldHRpbmdzKCk7XG5cblx0Y29uc3Qgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25PcHRpb25zID0ge1xuXHRcdGV4cGlyZXM6IG5ldyBEYXRlKERhdGUubm93KCkgKyAzMDAwMCksXG5cdFx0Ym9keTogXCJUaGUgc2hhcmUgcmVxdWVzdCBoYXMgYmVlbiBmZXRjaGVkIGFuZCBhcHBsaWVkLlwiLFxuXHRcdGJ1dHRvbnM6IFtcblx0XHRcdHtcblx0XHRcdFx0c3VibWl0OiBmYWxzZSxcblx0XHRcdFx0b25DbGljazogbnVsbCxcblx0XHRcdFx0aW5kZXg6IDMsXG5cdFx0XHRcdGljb25Vcmw6IFwiXCIsXG5cdFx0XHRcdGN0YTogZmFsc2UsXG5cdFx0XHRcdHRpdGxlOiBcIkRpc21pc3NcIixcblx0XHRcdFx0dHlwZTogXCJidXR0b25cIlxuXHRcdFx0fVxuXHRcdF0sXG5cdFx0c3RyZWFtOiB7XG5cdFx0XHRpZDogXCJzaGFyZS1yZXF1ZXN0c1wiLFxuXHRcdFx0ZGlzcGxheU5hbWU6IFwiU2hhcmUgUmVxdWVzdFwiLFxuXHRcdFx0YXBwSWQ6IGZpbi5tZS5pZGVudGl0eS51dWlkXG5cdFx0fSxcblx0XHRwcmlvcml0eTogMSxcblx0XHRpY29uOlxuXHRcdFx0c2V0dGluZ3MuYnJvd3NlclByb3ZpZGVyPy5kZWZhdWx0V2luZG93T3B0aW9ucz8uaWNvbiA/PyBzZXR0aW5ncy5icm93c2VyUHJvdmlkZXI/LndpbmRvd09wdGlvbnM/Lmljb24sXG5cdFx0aW5kaWNhdG9yOiB7XG5cdFx0XHRjb2xvcjogSW5kaWNhdG9yQ29sb3IuR1JFRU4sXG5cdFx0XHR0ZXh0OiBcIlNoYXJlIFJlcXVlc3QgQXBwbGllZFwiXG5cdFx0fSxcblx0XHRjYXRlZ29yeTogXCJzaGFyZVwiLFxuXHRcdHRpdGxlOiBcIlNoYXJlIFJlcXVlc3QgQXBwbGllZFwiLFxuXHRcdHRlbXBsYXRlOiBcIm1hcmtkb3duXCJcblx0fTtcblx0YXdhaXQgY3JlYXRlKG5vdGlmaWNhdGlvbik7XG59XG5cbi8qKlxuICogU2hvdyBhIHN1Y2Nlc3Mgbm90aWZpY2F0aW9uLlxuICogQHBhcmFtIHVybCBUaGUgdXJsIHRvIHNob3cgaW4gdGhlIG5vdGlmaWNhdGlvbiBib2R5LlxuICogQHBhcmFtIGV4cGlyeUluSG91cnMgVGhlIGV4cGlyeSB0aW1lIGZvciB0aGUgbm90aWZpY2F0aW9uLlxuICovXG5hc3luYyBmdW5jdGlvbiBub3RpZnlPZlN1Y2Nlc3ModXJsOiBzdHJpbmcsIGV4cGlyeUluSG91cnM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBzZXR0aW5ncyA9IGF3YWl0IGdldFNldHRpbmdzKCk7XG5cblx0Y29uc3Qgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25PcHRpb25zID0ge1xuXHRcdGV4cGlyZXM6IG5ldyBEYXRlKERhdGUubm93KCkgKyAzMDAwMCksXG5cdFx0Ym9keTogYFRoZSBzaGFyZSByZXF1ZXN0IHlvdSByYWlzZWQgaGFzIGJlZW4gY29waWVkIHRvIHRoZSAqKmNsaXBib2FyZCoqIGFuZCB3aWxsIGJlIHZhbGlkIGZvciAke2V4cGlyeUluSG91cnN9IGhvdXJzLiBcXG4gU2hhcmUgVXJsOiBcXG4gKiAqKiR7dXJsfSoqYCxcblx0XHRidXR0b25zOiBbXG5cdFx0XHR7XG5cdFx0XHRcdHN1Ym1pdDogZmFsc2UsXG5cdFx0XHRcdG9uQ2xpY2s6IG51bGwsXG5cdFx0XHRcdGluZGV4OiAzLFxuXHRcdFx0XHRpY29uVXJsOiBcIlwiLFxuXHRcdFx0XHRjdGE6IGZhbHNlLFxuXHRcdFx0XHR0aXRsZTogXCJEaXNtaXNzXCIsXG5cdFx0XHRcdHR5cGU6IFwiYnV0dG9uXCJcblx0XHRcdH1cblx0XHRdLFxuXHRcdHN0cmVhbToge1xuXHRcdFx0aWQ6IFwic2hhcmUtcmVxdWVzdHNcIixcblx0XHRcdGRpc3BsYXlOYW1lOiBcIlNoYXJlIFJlcXVlc3RcIixcblx0XHRcdGFwcElkOiBmaW4ubWUuaWRlbnRpdHkudXVpZFxuXHRcdH0sXG5cdFx0cHJpb3JpdHk6IDEsXG5cdFx0aWNvbjpcblx0XHRcdHNldHRpbmdzLmJyb3dzZXJQcm92aWRlcj8uZGVmYXVsdFdpbmRvd09wdGlvbnM/Lmljb24gPz8gc2V0dGluZ3MuYnJvd3NlclByb3ZpZGVyPy53aW5kb3dPcHRpb25zPy5pY29uLFxuXHRcdGluZGljYXRvcjoge1xuXHRcdFx0Y29sb3I6IEluZGljYXRvckNvbG9yLkJMVUUsXG5cdFx0XHR0ZXh0OiBcIlNoYXJlIFJlcXVlc3QgUmFpc2VkXCJcblx0XHR9LFxuXHRcdGNhdGVnb3J5OiBcInNoYXJlXCIsXG5cdFx0dGl0bGU6IFwiU2hhcmUgUmVxdWVzdCBSYWlzZWRcIixcblx0XHR0ZW1wbGF0ZTogXCJtYXJrZG93blwiXG5cdH07XG5cdGF3YWl0IGNyZWF0ZShub3RpZmljYXRpb24pO1xufVxuXG4vKipcbiAqIE5vdGlmeSBvZiBmYWlsdXJlLlxuICogQHBhcmFtIGJvZHkgVGhlIG1lc3NhZ2UgZm9yIHRoZSBmYWlsdXJlLlxuICovXG5hc3luYyBmdW5jdGlvbiBub3RpZnlPZkZhaWx1cmUoYm9keTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IHNldHRpbmdzID0gYXdhaXQgZ2V0U2V0dGluZ3MoKTtcblxuXHRjb25zdCBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbk9wdGlvbnMgPSB7XG5cdFx0ZXhwaXJlczogbmV3IERhdGUoRGF0ZS5ub3coKSArIDMwMDAwKSxcblx0XHRib2R5LFxuXHRcdGJ1dHRvbnM6IFtcblx0XHRcdHtcblx0XHRcdFx0c3VibWl0OiBmYWxzZSxcblx0XHRcdFx0b25DbGljazogbnVsbCxcblx0XHRcdFx0aW5kZXg6IDMsXG5cdFx0XHRcdGljb25Vcmw6IFwiXCIsXG5cdFx0XHRcdGN0YTogZmFsc2UsXG5cdFx0XHRcdHRpdGxlOiBcIkRpc21pc3NcIixcblx0XHRcdFx0dHlwZTogXCJidXR0b25cIlxuXHRcdFx0fVxuXHRcdF0sXG5cdFx0c3RyZWFtOiB7XG5cdFx0XHRpZDogXCJzaGFyZS1yZXF1ZXN0c1wiLFxuXHRcdFx0ZGlzcGxheU5hbWU6IFwiU2hhcmUgUmVxdWVzdFwiLFxuXHRcdFx0YXBwSWQ6IGZpbi5tZS5pZGVudGl0eS51dWlkXG5cdFx0fSxcblx0XHRwcmlvcml0eTogMSxcblx0XHRpY29uOlxuXHRcdFx0c2V0dGluZ3MuYnJvd3NlclByb3ZpZGVyPy5kZWZhdWx0V2luZG93T3B0aW9ucz8uaWNvbiA/PyBzZXR0aW5ncy5icm93c2VyUHJvdmlkZXI/LndpbmRvd09wdGlvbnM/Lmljb24sXG5cdFx0aW5kaWNhdG9yOiB7XG5cdFx0XHRjb2xvcjogSW5kaWNhdG9yQ29sb3IuUkVELFxuXHRcdFx0dGV4dDogXCJTaGFyZSBSZXF1ZXN0IEZhaWxlZFwiXG5cdFx0fSxcblx0XHRjYXRlZ29yeTogXCJzaGFyZVwiLFxuXHRcdHRpdGxlOiBcIlNoYXJlIFJlcXVlc3QgRmFpbGVkXCIsXG5cdFx0dGVtcGxhdGU6IFwibWFya2Rvd25cIlxuXHR9O1xuXHRhd2FpdCBjcmVhdGUobm90aWZpY2F0aW9uKTtcbn1cblxuLyoqXG4gKiBOb3RpZnkgdGhhdCBhIHNoYXJlIHJlcXVlc3QgaGFzIGV4cGlyZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG5vdGlmeU9mRXhwaXJ5KCk6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBzZXR0aW5ncyA9IGF3YWl0IGdldFNldHRpbmdzKCk7XG5cblx0Y29uc3Qgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25PcHRpb25zID0ge1xuXHRcdGV4cGlyZXM6IG5ldyBEYXRlKERhdGUubm93KCkgKyAzMDAwMCksXG5cdFx0Ym9keTogXCJUaGUgc2hhcmUgcmVxdWVzdCBoYXMgZXhwaXJlZCBhbmQgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS5cIixcblx0XHRidXR0b25zOiBbXG5cdFx0XHR7XG5cdFx0XHRcdHN1Ym1pdDogZmFsc2UsXG5cdFx0XHRcdG9uQ2xpY2s6IG51bGwsXG5cdFx0XHRcdGluZGV4OiAzLFxuXHRcdFx0XHRpY29uVXJsOiBcIlwiLFxuXHRcdFx0XHRjdGE6IGZhbHNlLFxuXHRcdFx0XHR0aXRsZTogXCJEaXNtaXNzXCIsXG5cdFx0XHRcdHR5cGU6IFwiYnV0dG9uXCJcblx0XHRcdH1cblx0XHRdLFxuXHRcdHN0cmVhbToge1xuXHRcdFx0aWQ6IFwic2hhcmUtcmVxdWVzdHNcIixcblx0XHRcdGRpc3BsYXlOYW1lOiBcIlNoYXJlIFJlcXVlc3RcIixcblx0XHRcdGFwcElkOiBmaW4ubWUuaWRlbnRpdHkudXVpZFxuXHRcdH0sXG5cdFx0cHJpb3JpdHk6IDEsXG5cdFx0aWNvbjpcblx0XHRcdHNldHRpbmdzLmJyb3dzZXJQcm92aWRlcj8uZGVmYXVsdFdpbmRvd09wdGlvbnM/Lmljb24gPz8gc2V0dGluZ3MuYnJvd3NlclByb3ZpZGVyPy53aW5kb3dPcHRpb25zPy5pY29uLFxuXHRcdGluZGljYXRvcjoge1xuXHRcdFx0Y29sb3I6IEluZGljYXRvckNvbG9yLlJFRCxcblx0XHRcdHRleHQ6IFwiU2hhcmUgUmVxdWVzdCBFeHBpcmVkXCJcblx0XHR9LFxuXHRcdGNhdGVnb3J5OiBcInNoYXJlXCIsXG5cdFx0dGl0bGU6IFwiU2hhcmUgUmVxdWVzdCBFeHBpcmVkXCIsXG5cdFx0dGVtcGxhdGU6IFwibWFya2Rvd25cIlxuXHR9O1xuXHRhd2FpdCBjcmVhdGUobm90aWZpY2F0aW9uKTtcbn1cblxuLyoqXG4gKiBTYXZlIGEgc2hhcmVkIHBhZ2UuXG4gKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBmb3IgdGhlIHNoYXJlLlxuICovXG5hc3luYyBmdW5jdGlvbiBzYXZlU2hhcmVkUGFnZShkYXRhOiBTaGFyZVBhZ2VEYXRhKTogUHJvbWlzZTx2b2lkPiB7XG5cdGxldCBwYWdlOiBQYWdlIHwgdW5kZWZpbmVkO1xuXHRpZiAoIWlzRW1wdHkoZGF0YS5wYWdlKSkge1xuXHRcdHBhZ2UgPSBkYXRhLnBhZ2U7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdGxldCB1c2VTdG9yYWdlID0gdHJ1ZTtcblx0XHR0cnkge1xuXHRcdFx0aWYgKGRhdGEud2luZG93SWRlbnRpdHkpIHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0V2luZG93ID0gcGxhdGZvcm0uQnJvd3Nlci53cmFwU3luYyhkYXRhLndpbmRvd0lkZW50aXR5KTtcblx0XHRcdFx0cGFnZSA9IGF3YWl0IHRhcmdldFdpbmRvdy5nZXRQYWdlKGRhdGEucGFnZUlkKTtcblx0XHRcdFx0aWYgKGlzRW1wdHkocGFnZT8uY3VzdG9tRGF0YSkpIHtcblx0XHRcdFx0XHRwYWdlLmN1c3RvbURhdGEgPSB7fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRwYWdlLmN1c3RvbURhdGEud2luZG93Qm91bmRzID0gYXdhaXQgdGFyZ2V0V2luZG93Lm9wZW5maW5XaW5kb3cuZ2V0Qm91bmRzKCk7XG5cdFx0XHRcdHVzZVN0b3JhZ2UgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIHt9XG5cdFx0aWYgKGlzRW1wdHkocGFnZSkgJiYgIWlzRW1wdHkoZGF0YS5wYWdlSWQpKSB7XG5cdFx0XHQvLyB3ZSBoYXZlbid0IGdvdCBhIHBhc3NlZCBwYWdlIGFuZCB3ZSB3ZXJlIG5vdCBnaXZlbiBhIHdpbmRvdyBpZGVudGl0eSBidXQgd2UgZG8gaGF2ZSBhIHBhZ2VJZFxuXHRcdFx0Ly8gY2hlY2sgdG8gc2VlIGlmIGl0IGlzIGFuIGFjdGl2ZSBwYWdlIHRvIGdldCB0aGUgbGF0ZXN0IGluZm9ybWF0aW9uXG5cdFx0XHRjb25zdCBhdHRhY2hlZFBhZ2VzID0gYXdhaXQgcGxhdGZvcm0uQnJvd3Nlci5nZXRBbGxBdHRhY2hlZFBhZ2VzKCk7XG5cdFx0XHRmb3IgKGNvbnN0IGF0dGFjaGVkUGFnZSBvZiBhdHRhY2hlZFBhZ2VzKSB7XG5cdFx0XHRcdGlmIChhdHRhY2hlZFBhZ2UucGFnZUlkID09PSBkYXRhLnBhZ2VJZCkge1xuXHRcdFx0XHRcdHBhZ2UgPSB7IC4uLmF0dGFjaGVkUGFnZSB9O1xuXHRcdFx0XHRcdGlmIChpc0VtcHR5KHBhZ2UuY3VzdG9tRGF0YSkpIHtcblx0XHRcdFx0XHRcdHBhZ2UuY3VzdG9tRGF0YSA9IHt9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRwYWdlLmN1c3RvbURhdGEud2luZG93Qm91bmRzID0gZ2V0UGFnZUJvdW5kcyhkYXRhLnBhZ2VJZCk7XG5cdFx0XHRcdFx0dXNlU3RvcmFnZSA9IGZhbHNlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICh1c2VTdG9yYWdlKSB7XG5cdFx0XHRwYWdlID0gYXdhaXQgcGxhdGZvcm0uU3RvcmFnZS5nZXRQYWdlKGRhdGEucGFnZUlkKTtcblx0XHR9XG5cdH1cblx0Y29uc3QgcGF5bG9hZCA9IHtcblx0XHR0eXBlOiBcInBhZ2VcIixcblx0XHRkYXRhOiB7XG5cdFx0XHRwYWdlXG5cdFx0fVxuXHR9O1xuXHRhd2FpdCBzYXZlU2hhcmVSZXF1ZXN0KHBheWxvYWQpO1xufVxuXG4vKipcbiAqIFNhdmUgYSB3b3Jrc3BhY2UuXG4gKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBmb3IgdGhlIHNoYXJlLlxuICovXG5hc3luYyBmdW5jdGlvbiBzYXZlU2hhcmVkV29ya3NwYWNlKGRhdGE/OiBTaGFyZVdvcmtzcGFjZURhdGEpOiBQcm9taXNlPHZvaWQ+IHtcblx0bGV0IHNuYXBzaG90ID0gbnVsbDtcblxuXHRjb25zdCB3b3Jrc3BhY2VJZCA9IGRhdGE/LndvcmtzcGFjZUlkO1xuXHRpZiAoaXNFbXB0eSh3b3Jrc3BhY2VJZCkpIHtcblx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0c25hcHNob3QgPSBhd2FpdCBwbGF0Zm9ybS5nZXRTbmFwc2hvdCgpO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRjb25zdCBzYXZlZFdvcmtzcGFjZSA9IGF3YWl0IHBsYXRmb3JtLlN0b3JhZ2UuZ2V0V29ya3NwYWNlKHdvcmtzcGFjZUlkKTtcblx0XHRpZiAoIWlzRW1wdHkoc2F2ZWRXb3Jrc3BhY2UpKSB7XG5cdFx0XHRzbmFwc2hvdCA9IHNhdmVkV29ya3NwYWNlLnNuYXBzaG90O1xuXHRcdH1cblx0fVxuXG5cdGlmIChpc0VtcHR5KHNuYXBzaG90KSkge1xuXHRcdGF3YWl0IG5vdGlmeU9mRmFpbHVyZShcIlVuYWJsZSB0byBhY3Rpb24geW91ciB3b3Jrc3BhY2Ugc2hhcmUgcmVxdWVzdC5cIik7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgcGF5bG9hZCA9IHtcblx0XHRcdHR5cGU6IFwid29ya3NwYWNlXCIsXG5cdFx0XHRkYXRhOiB7XG5cdFx0XHRcdHNuYXBzaG90XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRhd2FpdCBzYXZlU2hhcmVSZXF1ZXN0KHBheWxvYWQpO1xuXHR9XG59XG5cbi8qKlxuICogU2F2ZSB0aGUgcmVxdWVzdC5cbiAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIHRvIHNhdmUuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNhdmVTaGFyZVJlcXVlc3QocGF5bG9hZDogdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuXHR0cnkge1xuXHRcdGNvbnN0IGV4cGlyeUluSG91cnMgPSAyNDtcblx0XHRjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RSZXNwb25zZTx1bmtub3duLCB7IHVybDogc3RyaW5nOyBpZD86IHN0cmluZyB9PihcInNoYXJlLXNhdmVcIiwgcGF5bG9hZCk7XG5cblx0XHRpZiAocmVzcG9uc2UpIHtcblx0XHRcdGxldCBpZCA9IHJlc3BvbnNlLmlkO1xuXHRcdFx0aWYgKGlzRW1wdHkoaWQpKSB7XG5cdFx0XHRcdGNvbnN0IGluZGV4T2ZJZCA9IHJlc3BvbnNlLnVybC5sYXN0SW5kZXhPZihcIi9cIik7XG5cdFx0XHRcdGlmIChpbmRleE9mSWQgIT09IC0xKSB7XG5cdFx0XHRcdFx0aWQgPSByZXNwb25zZS51cmwuc2xpY2UoaW5kZXhPZklkICsgMSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKGlzRW1wdHkoaWQpKSB7XG5cdFx0XHRcdGF3YWl0IG5vdGlmeU9mRmFpbHVyZShcIlRoZSBzaGFyZSByZXF1ZXN0IHlvdSByYWlzZWQgY291bGQgbm90IGJlIGdlbmVyYXRlZC5cIik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRcdFx0Y29uc3QgcGxhdGZvcm1JbmZvID0gYXdhaXQgcGxhdGZvcm0uQXBwbGljYXRpb24uZ2V0SW5mbygpO1xuXHRcdFx0bGV0IGZpbnNMaW5rOiBzdHJpbmc7XG5cblx0XHRcdGlmIChwbGF0Zm9ybUluZm8ubWFuaWZlc3RVcmwuc3RhcnRzV2l0aChcImh0dHBcIikpIHtcblx0XHRcdFx0Zmluc0xpbmsgPSBgJHtwbGF0Zm9ybUluZm8ubWFuaWZlc3RVcmwucmVwbGFjZShcImh0dHBcIiwgXCJmaW5cIil9PyQkc2hhcmVJZD0ke2lkfWA7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXG5cdFx0XHRcdFx0XCJXZSBkbyBub3Qgc3VwcG9ydCBmaWxlIGJhc2VkIG1hbmlmZXN0IGxhdW5jaGVzLiBUaGUgbWFuaWZlc3QgaGFzIHRvIGJlIHNlcnZlZCBvdmVyIGh0dHAvaHR0cHM6XCIsXG5cdFx0XHRcdFx0cGxhdGZvcm1JbmZvLm1hbmlmZXN0VXJsXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGF3YWl0IG5vdGlmeU9mRmFpbHVyZShcIlRoZSBzaGFyZSByZXF1ZXN0IHlvdSByYWlzZWQgY291bGQgbm90IGJlIGdlbmVyYXRlZC5cIik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0YXdhaXQgZmluLkNsaXBib2FyZC53cml0ZVRleHQoe1xuXHRcdFx0XHRkYXRhOiBmaW5zTGlua1xuXHRcdFx0fSk7XG5cdFx0XHRhd2FpdCBub3RpZnlPZlN1Y2Nlc3MoZmluc0xpbmssIGV4cGlyeUluSG91cnMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhd2FpdCBub3RpZnlPZkZhaWx1cmUoXCJUaGUgc2hhcmUgcmVxdWVzdCB5b3UgcmFpc2VkIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQuXCIpO1xuXHRcdH1cblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRsb2dnZXIuZXJyb3IoXCJFcnJvciBzYXZpbmcgc2hhcmUgcmVxdWVzdDpcIiwgZXJyb3IpO1xuXHRcdGF3YWl0IG5vdGlmeU9mRmFpbHVyZShcIlRoZSBzaGFyZSByZXF1ZXN0IHlvdSByYWlzZWQgY291bGQgbm90IGJlIGdlbmVyYXRlZC5cIik7XG5cdH1cbn1cblxuLyoqXG4gKiBMb2FkIGEgc2hhcmVkIGVudHJ5LlxuICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgZW50cnkgdG8gbG9hZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZFNoYXJlZEVudHJ5KGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0dHJ5IHtcblx0XHRjb25zdCBzaGFyZUVudHJ5ID0gYXdhaXQgcmVxdWVzdFJlc3BvbnNlPHsgaWQ6IHN0cmluZyB9LCBTaGFyZVN0b3JlRW50cnk+KFwic2hhcmUtZ2V0XCIsIHsgaWQgfSk7XG5cdFx0aWYgKCFpc0VtcHR5KHNoYXJlRW50cnkpKSB7XG5cdFx0XHRpZiAoc2hhcmVFbnRyeS50eXBlID09PSBcInBhZ2VcIikge1xuXHRcdFx0XHRhd2FpdCBsYXVuY2hQYWdlKHNoYXJlRW50cnkuZGF0YS5wYWdlLCB1bmRlZmluZWQsIGxvZ2dlcik7XG5cdFx0XHR9IGVsc2UgaWYgKHNoYXJlRW50cnkudHlwZSA9PT0gXCJ3b3Jrc3BhY2VcIikge1xuXHRcdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdFx0XHRcdGF3YWl0IHBsYXRmb3JtLmFwcGx5U25hcHNob3Qoc2hhcmVFbnRyeS5kYXRhLnNuYXBzaG90KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKGBTaGFyZSBlbnRyeSBvZiB1bmtub3duIHR5cGUgc3BlY2lmaWVkOiAke3NoYXJlRW50cnkudHlwZX1gKTtcblx0XHRcdFx0YXdhaXQgbm90aWZ5T2ZGYWlsdXJlKFwiVGhlIHNwZWNpZmllZCBzaGFyZSBsaW5rIGlzIG5vdCBzdXBwb3J0ZWQgYW5kIGNhbm5vdCBiZSBsb2FkZWQuXCIpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRhd2FpdCBub3RpZnlPZlN1Y2Nlc3NmdWxMb2FkKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGF3YWl0IG5vdGlmeU9mRXhwaXJ5KCk7XG5cdFx0fVxuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdGxvZ2dlci5lcnJvcihcIlRoZXJlIGhhcyBiZWVuIGFuIGVycm9yIHRyeWluZyB0byBsb2FkIGFuZCBhcHBseSB0aGUgc2hhcmUgbGluay5cIiwgZXJyb3IpO1xuXHRcdGF3YWl0IG5vdGlmeU9mRmFpbHVyZShcIlRoZSBzcGVjaWZpZWQgc2hhcmUgbGluayBjYW5ub3QgYmUgbG9hZGVkLlwiKTtcblx0fVxufVxuIiwiaW1wb3J0IHR5cGUgT3BlbkZpbiBmcm9tIFwiQG9wZW5maW4vY29yZVwiO1xuaW1wb3J0IHsgZ2V0Q29ubmVjdGVkU25hcHNob3RTb3VyY2VDbGllbnRzIH0gZnJvbSBcIi4vY29ubmVjdGlvbnNcIjtcbmltcG9ydCB7IGxhdW5jaCB9IGZyb20gXCIuL2xhdW5jaFwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSB7IENsaWVudFNuYXBzaG90LCBQbGF0Zm9ybUFwcCB9IGZyb20gXCIuL3NoYXBlcy9hcHAtc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiU25hcHNob3RTb3VyY2VcIik7XG5cbi8qKlxuICogRGVjb3JhdGUgYSBzbmFwc2hvdCB3aXRoIHRoZSBuYXRpdmUgd2luZG93IGluZm9ybWF0aW9uLlxuICogQHBhcmFtIHNuYXBzaG90IFRoZSBzbmFwc2hvdCB0byBkZWNvcmF0ZS5cbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgc25hcHNob3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWNvcmF0ZVNuYXBzaG90KHNuYXBzaG90OiBPcGVuRmluLlNuYXBzaG90KTogUHJvbWlzZTxPcGVuRmluLlNuYXBzaG90PiB7XG5cdGNvbnN0IHNvdXJjZXMgPSBhd2FpdCBnZXRDb25uZWN0ZWRTbmFwc2hvdFNvdXJjZUNsaWVudHMoKTtcblxuXHRpZiAoc291cmNlcy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4gc25hcHNob3Q7XG5cdH1cblxuXHRjb25zdCBjbGllbnRTbmFwc2hvdHM6IChDbGllbnRTbmFwc2hvdCB8IHVuZGVmaW5lZClbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuXHRcdHNvdXJjZXMubWFwKGFzeW5jIChlbnRyeSkgPT4ge1xuXHRcdFx0Y29uc3Qgc25hcFNob3RTb3VyY2UgPSBhd2FpdCBmaW4uU25hcHNob3RTb3VyY2Uud3JhcCh7IHV1aWQ6IGVudHJ5LmlkZW50aXR5LnV1aWQgfSk7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgU25hcHNob3Qgc291cmNlOiAke2VudHJ5LmlkZW50aXR5LnV1aWR9LiBSZXF1ZXN0aW5nIGEgc25hcHNob3QuYCk7XG5cdFx0XHRcdGNvbnN0IHNvdXJjZVNuYXBzaG90ID0gYXdhaXQgc25hcFNob3RTb3VyY2UuZ2V0U25hcHNob3QoKTtcblx0XHRcdFx0cmV0dXJuIHsgaWRlbnRpdHk6IGVudHJ5LmlkZW50aXR5LCBzbmFwc2hvdDogc291cmNlU25hcHNob3QgfTtcblx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhgU25hcHNob3Qgc291cmNlOiAke2VudHJ5LmlkZW50aXR5LnV1aWR9IHdhcyBub3QgYXZhaWxhYmxlLmApO1xuXHRcdFx0fVxuXHRcdH0pXG5cdCk7XG5cblx0Y29uc3QgZGVjb3JhdGVkU25hcHNob3Q6IE9wZW5GaW4uU25hcHNob3QgPSBPYmplY3QuYXNzaWduKHNuYXBzaG90LCB7XG5cdFx0Y2xpZW50U25hcHNob3RzOiBjbGllbnRTbmFwc2hvdHMuZmlsdGVyKChzbmFwc2hvdFNvdXJjZSkgPT4gIWlzRW1wdHkoc25hcHNob3RTb3VyY2UpKVxuXHR9KTtcblxuXHRyZXR1cm4gZGVjb3JhdGVkU25hcHNob3Q7XG59XG5cbi8qKlxuICogQXBwbHkgY29ubmVjdGVkIGNsaWVudCB0byBhIHNuYXBzaG90LlxuICogQHBhcmFtIHNuYXBzaG90IFRoZSBzbmFwc2hvdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5Q2xpZW50U25hcHNob3QoXG5cdHNuYXBzaG90OiBPcGVuRmluLlNuYXBzaG90ICYgeyBjbGllbnRTbmFwc2hvdHM/OiBDbGllbnRTbmFwc2hvdFtdIH1cbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoQXJyYXkuaXNBcnJheShzbmFwc2hvdD8uY2xpZW50U25hcHNob3RzKSkge1xuXHRcdGNvbnN0IHNvdXJjZXMgPSBhd2FpdCBnZXRDb25uZWN0ZWRTbmFwc2hvdFNvdXJjZUNsaWVudHMoKTtcblx0XHRhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdHNuYXBzaG90LmNsaWVudFNuYXBzaG90cy5tYXAoYXN5bmMgKGNsaWVudFNuYXBzaG90OiBDbGllbnRTbmFwc2hvdCkgPT4ge1xuXHRcdFx0XHRpZiAoY2xpZW50U25hcHNob3QpIHtcblx0XHRcdFx0XHRpZiAoc291cmNlcy5zb21lKChzb3VyY2UpID0+IHNvdXJjZS5pZGVudGl0eS51dWlkID09PSBjbGllbnRTbmFwc2hvdC5pZGVudGl0eS51dWlkKSkge1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc25hcFNob3RTb3VyY2UgPSBhd2FpdCBmaW4uU25hcHNob3RTb3VyY2Uud3JhcChjbGllbnRTbmFwc2hvdC5pZGVudGl0eSk7XG5cdFx0XHRcdFx0XHRcdGxvZ2dlci5pbmZvKFxuXHRcdFx0XHRcdFx0XHRcdGBTbmFwc2hvdCBzb3VyY2U6ICR7Y2xpZW50U25hcHNob3QuaWRlbnRpdHkudXVpZH0gaXMgcnVubmluZyBhbmQgaGFzIGEgc25hcHNob3QgZW50cnkuIEFwcGx5aW5nIHNuYXBzaG90LmBcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0YXdhaXQgc25hcFNob3RTb3VyY2UuYXBwbHlTbmFwc2hvdChjbGllbnRTbmFwc2hvdC5zbmFwc2hvdCk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0XHRcdFx0YFNuYXBzaG90IHNvdXJjZTogJHtjbGllbnRTbmFwc2hvdC5pZGVudGl0eS51dWlkfSBpcyBub3QgYWJsZSB0byBhcHBseSB0aGUgc25hcHNob3QuYFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoIWlzRW1wdHkoY2xpZW50U25hcHNob3Q/LnNuYXBzaG90KSkge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc24gPSBjbGllbnRTbmFwc2hvdD8uc25hcHNob3Q7XG5cdFx0XHRcdFx0XHRjb25zdCBhcHA6IFBsYXRmb3JtQXBwIHwgdW5kZWZpbmVkID0gc24/LkFwcCA/PyBzbj8uYXBwO1xuXHRcdFx0XHRcdFx0aWYgKCFpc0VtcHR5KGFwcCkpIHtcblx0XHRcdFx0XHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFx0XHRcdFx0YENsaWVudCBub3QgY29ubmVjdGVkIGJ1dCBzbmFwc2hvdCBjb250YWlucyBhbiBhcHAgZGVmaW5pdGlvbi4gTGF1bmNoaW5nIGFwcCBkZWZpbml0aW9uIGZvciAke2NsaWVudFNuYXBzaG90LmlkZW50aXR5LnV1aWR9YFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRsb2dnZXIuZGVidWcoXCJDbGllbnQgYXBwIGRlZmluaXRpb246XCIsIGFwcCk7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IGxhdW5jaChhcHApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRcdFx0YENsaWVudCBzbmFwc2hvdCB3YXMgYXZhaWxhYmxlIGJ1dCB0aGUgc291cmNlICR7Y2xpZW50U25hcHNob3QuaWRlbnRpdHkudXVpZH0gd2FzIG5vdCBjb25uZWN0ZWQgYW5kIGl0IGRpZG4ndCBwcm92aWRlIGFuIGFwcC9BcHAgZW50cnkgYXMgcGFydCBvZiB0aGUgc25hcHNob3QgdG8gdHJpZ2dlciBhIGxhdW5jaC5gXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG59XG4iLCJpbXBvcnQge1xuXHRCdXR0b25TdHlsZSxcblx0VGVtcGxhdGVGcmFnbWVudFR5cGVzLFxuXHR0eXBlIEJ1dHRvblRlbXBsYXRlRnJhZ21lbnQsXG5cdHR5cGUgSW1hZ2VUZW1wbGF0ZUZyYWdtZW50LFxuXHR0eXBlIFBsYWluQ29udGFpbmVyVGVtcGxhdGVGcmFnbWVudCxcblx0dHlwZSBUZW1wbGF0ZUZyYWdtZW50LFxuXHR0eXBlIFRleHRUZW1wbGF0ZUZyYWdtZW50XG59IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2VcIjtcbmltcG9ydCB0eXBlICogYXMgQ1NTIGZyb20gXCJjc3N0eXBlXCI7XG5pbXBvcnQgdHlwZSB7IFBsYXRmb3JtQXBwIH0gZnJvbSBcIi4vc2hhcGVzL2FwcC1zaGFwZXNcIjtcbmltcG9ydCB7IENvbG9yU2NoZW1lTW9kZSB9IGZyb20gXCIuL3NoYXBlcy90aGVtZS1zaGFwZXNcIjtcbmltcG9ydCB7IGdldEN1cnJlbnRDb2xvclNjaGVtZU1vZGUsIGdldEN1cnJlbnRQYWxldHRlIH0gZnJvbSBcIi4vdGhlbWVzXCI7XG5cbi8qKlxuICogQ3JlYXRlIGEgdGVtcGxhdGUgZm9yIGRpc3BsYXlpbmcgaGVscC5cbiAqIEBwYXJhbSB0aXRsZSBUaGUgdGl0bGUgYXQgdGhlIHRvcCBvZiB0aGUgdGVtcGxhdGUuXG4gKiBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSB0ZW1wbGF0ZS5cbiAqIEBwYXJhbSBleGFtcGxlcyBFeGFtcGxlIHRvIGRpc3BsYXkuXG4gKiBAcmV0dXJucyBUaGUgbGF5b3V0IGFuZCBkYXRhIGZvciB0aGUgdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVIZWxwKFxuXHR0aXRsZTogc3RyaW5nLFxuXHRkZXNjcmlwdGlvbjogc3RyaW5nW10sXG5cdGV4YW1wbGVzOiBzdHJpbmdbXVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKTogUHJvbWlzZTx7IGxheW91dDogUGxhaW5Db250YWluZXJUZW1wbGF0ZUZyYWdtZW50OyBkYXRhOiBhbnkgfT4ge1xuXHRjb25zdCBwYWxldHRlID0gYXdhaXQgZ2V0Q3VycmVudFBhbGV0dGUoKTtcblx0Y29uc3QgYWRkaXRpb25hbERhdGE6IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXHRjb25zdCBmcmFnbWVudHM6IFRlbXBsYXRlRnJhZ21lbnRbXSA9IFtdO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGRlc2NyaXB0aW9uLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgZGVzY3JpcHRpb25LZXkgPSBgZGVzYy0ke2l9YDtcblx0XHRhZGRpdGlvbmFsRGF0YVtkZXNjcmlwdGlvbktleV0gPSBkZXNjcmlwdGlvbltpXTtcblx0XHRmcmFnbWVudHMucHVzaChcblx0XHRcdGF3YWl0IGNyZWF0ZVRleHQoZGVzY3JpcHRpb25LZXksIDEyLCB7XG5cdFx0XHRcdHBhZGRpbmc6IFwiNnB4IDBweFwiXG5cdFx0XHR9KVxuXHRcdCk7XG5cdH1cblx0Y29uc3QgZXhhbXBsZUZyYWdtZW50czogVGVtcGxhdGVGcmFnbWVudFtdID0gW107XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgZXhhbXBsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRjb25zdCBleGFtcGxlS2V5ID0gYGxpbmUtJHtpfWA7XG5cdFx0YWRkaXRpb25hbERhdGFbZXhhbXBsZUtleV0gPSBleGFtcGxlc1tpXTtcblx0XHRleGFtcGxlRnJhZ21lbnRzLnB1c2goXG5cdFx0XHRhd2FpdCBjcmVhdGVUZXh0KGV4YW1wbGVLZXksIDEyLCB7XG5cdFx0XHRcdGZvbnRGYW1pbHk6IFwibW9ub3NwYWNlXCIsXG5cdFx0XHRcdHdoaXRlU3BhY2U6IFwibm93cmFwXCJcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXHRpZiAoZXhhbXBsZUZyYWdtZW50cy5sZW5ndGggPiAwKSB7XG5cdFx0ZnJhZ21lbnRzLnB1c2goXG5cdFx0XHRhd2FpdCBjcmVhdGVDb250YWluZXIoXCJjb2x1bW5cIiwgZXhhbXBsZUZyYWdtZW50cywge1xuXHRcdFx0XHRwYWRkaW5nOiBcIjEwcHhcIixcblx0XHRcdFx0bWFyZ2luVG9wOiBcIjZweFwiLFxuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I6IHBhbGV0dGUuaW5wdXRCYWNrZ3JvdW5kLFxuXHRcdFx0XHRjb2xvcjogcGFsZXR0ZS5pbnB1dENvbG9yLFxuXHRcdFx0XHRib3JkZXJSYWRpdXM6IFwiNXB4XCIsXG5cdFx0XHRcdG92ZXJmbG93OiBcImF1dG9cIlxuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG5cblx0Y29uc3QgbGF5b3V0RGF0YSA9IGF3YWl0IGNyZWF0ZUxheW91dCh0aXRsZSwgdW5kZWZpbmVkLCBmcmFnbWVudHMpO1xuXG5cdHJldHVybiB7XG5cdFx0bGF5b3V0OiBsYXlvdXREYXRhLmxheW91dCxcblx0XHRkYXRhOiB7XG5cdFx0XHQuLi5sYXlvdXREYXRhLmRhdGEsXG5cdFx0XHQuLi5hZGRpdGlvbmFsRGF0YVxuXHRcdH1cblx0fTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBjb250YWluZXIgZWxlbWVudCBmb3IgdGhlIGhvbWUgdGVtcGxhdGUuXG4gKiBAcGFyYW0gY29udGFpbmVyVHlwZSBUaGUgdHlwZSBvZiBjb250YWluZXIuXG4gKiBAcGFyYW0gY2hpbGRyZW4gVGhlIGNoaWxkcmVuIHRvIGluY2x1ZGUgaW4gdGhlIGNvbnRhaW5lci5cbiAqIEBwYXJhbSBzdHlsZSBBZGRpdGlvbmFsIENTUyBwcm9wZXJ0aWVzIHRvIHVzZS5cbiAqIEByZXR1cm5zIFRoZSBjb250YWluZXIgZnJhZ21lbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb250YWluZXIoXG5cdGNvbnRhaW5lclR5cGU6IFwiY29sdW1uXCIgfCBcInJvd1wiLFxuXHRjaGlsZHJlbjogVGVtcGxhdGVGcmFnbWVudFtdLFxuXHRzdHlsZT86IENTUy5Qcm9wZXJ0aWVzXG4pOiBQcm9taXNlPFBsYWluQ29udGFpbmVyVGVtcGxhdGVGcmFnbWVudD4ge1xuXHRyZXR1cm4ge1xuXHRcdHR5cGU6IFRlbXBsYXRlRnJhZ21lbnRUeXBlcy5Db250YWluZXIsXG5cdFx0c3R5bGU6IHtcblx0XHRcdGRpc3BsYXk6IFwiZmxleFwiLFxuXHRcdFx0ZmxleERpcmVjdGlvbjogY29udGFpbmVyVHlwZSxcblx0XHRcdC4uLnN0eWxlXG5cdFx0fSxcblx0XHRjaGlsZHJlblxuXHR9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHRpdGxlIGVsZW1lbnQuXG4gKiBAcGFyYW0gZGF0YUtleSBUaGUgZGF0YSBrZXkgZm9yIHRoZSB0aXRsZSB0ZXh0LlxuICogQHBhcmFtIGZvbnRTaXplIFRoZSBmb250IHNpemUuXG4gKiBAcGFyYW0gZm9udFdlaWdodCBUaGUgZm9udCB3ZWlnaHQuXG4gKiBAcGFyYW0gc3R5bGUgQWRkaXRpb25hbCBDU1MgcHJvcGVydGllcyB0byB1c2UuXG4gKiBAcmV0dXJucyBUaGUgdGl0bGUgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRpdGxlKFxuXHRkYXRhS2V5OiBzdHJpbmcsXG5cdGZvbnRTaXplOiBudW1iZXIgPSAxMixcblx0Zm9udFdlaWdodDogc3RyaW5nID0gXCJib2xkXCIsXG5cdHN0eWxlPzogQ1NTLlByb3BlcnRpZXNcbik6IFByb21pc2U8VGV4dFRlbXBsYXRlRnJhZ21lbnQ+IHtcblx0Y29uc3QgcGFsZXR0ZSA9IGF3YWl0IGdldEN1cnJlbnRQYWxldHRlKCk7XG5cdHJldHVybiB7XG5cdFx0dHlwZTogVGVtcGxhdGVGcmFnbWVudFR5cGVzLlRleHQsXG5cdFx0ZGF0YUtleSxcblx0XHRzdHlsZToge1xuXHRcdFx0Y29sb3I6IHBhbGV0dGUudGV4dERlZmF1bHQgPz8gXCIjZmZmZmZmXCIsXG5cdFx0XHRmb250U2l6ZTogYCR7Zm9udFNpemUgPz8gMTJ9cHhgLFxuXHRcdFx0Zm9udFdlaWdodCxcblx0XHRcdG92ZXJmbG93OiBcImhpZGRlblwiLFxuXHRcdFx0d2hpdGVTcGFjZTogXCJub3dyYXBcIixcblx0XHRcdHRleHRPdmVyZmxvdzogXCJlbGxpcHNpc1wiLFxuXHRcdFx0Li4uc3R5bGVcblx0XHR9XG5cdH07XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgdGV4dCBlbGVtZW50LlxuICogQHBhcmFtIGRhdGFLZXkgVGhlIGRhdGEga2V5IHRvIGxvb2t1cCBpbiB0aGUgZGF0YSBvYmplY3QuXG4gKiBAcGFyYW0gZm9udFNpemUgVGhlIHNpemUgb2YgdGhlIGZvbnQuXG4gKiBAcGFyYW0gc3R5bGUgQWRkaXRpb25hbCBDU1MgcHJvcGVydGllcyB0byB1c2UuXG4gKiBAcmV0dXJucyBUaGUgdGV4dCBmcmFnbWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRleHQoXG5cdGRhdGFLZXk6IHN0cmluZyxcblx0Zm9udFNpemU6IG51bWJlciA9IDEyLFxuXHRzdHlsZT86IENTUy5Qcm9wZXJ0aWVzXG4pOiBQcm9taXNlPFRleHRUZW1wbGF0ZUZyYWdtZW50PiB7XG5cdHJldHVybiB7XG5cdFx0dHlwZTogVGVtcGxhdGVGcmFnbWVudFR5cGVzLlRleHQsXG5cdFx0ZGF0YUtleSxcblx0XHRzdHlsZToge1xuXHRcdFx0Zm9udFNpemU6IGAke2ZvbnRTaXplID8/IDEyfXB4YCxcblx0XHRcdC4uLnN0eWxlXG5cdFx0fVxuXHR9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBpbWFnZSBlbGVtZW50LlxuICogQHBhcmFtIGRhdGFLZXkgVGhlIGRhdGEga2V5IGZvciB0aGUgaW1hZ2UgdXJsLlxuICogQHBhcmFtIGFsdGVybmF0aXZlVGV4dCBBbHRlcm5hdGl2ZSB0ZXh0IGZvciB0aGUgaW1hZ2UuXG4gKiBAcGFyYW0gc3R5bGUgQWRkaXRpb25hbCBDU1MgcHJvcGVydGllcyB0byB1c2UuXG4gKiBAcmV0dXJucyBUaGUgaW1hZ2UgZnJhZ21lbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVJbWFnZShcblx0ZGF0YUtleTogc3RyaW5nLFxuXHRhbHRlcm5hdGl2ZVRleHQ6IHN0cmluZyxcblx0c3R5bGU/OiBDU1MuUHJvcGVydGllc1xuKTogUHJvbWlzZTxJbWFnZVRlbXBsYXRlRnJhZ21lbnQ+IHtcblx0cmV0dXJuIHtcblx0XHR0eXBlOiBUZW1wbGF0ZUZyYWdtZW50VHlwZXMuSW1hZ2UsXG5cdFx0ZGF0YUtleSxcblx0XHRhbHRlcm5hdGl2ZVRleHQsXG5cdFx0c3R5bGU6IHtcblx0XHRcdC4uLnN0eWxlXG5cdFx0fVxuXHR9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGJ1dHRvbiBlbGVtZW50LlxuICogQHBhcmFtIGJ1dHRvblN0eWxlIFRoZSBzdHlsZSBvZiB0aGUgYnV0dG9uLlxuICogQHBhcmFtIHRpdGxlS2V5IFRoZSBkYXRhIGtleSB0byBsb29rdXAgaW4gdGhlIGRhdGEgb2JqZWN0IGZvciB0aGUgdGl0bGUuXG4gKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gdG8gc2VuZCBvbiB0aGUgYnV0dG9uIGNsaWNrLlxuICogQHBhcmFtIHN0eWxlIEFkZGl0aW9uYWwgQ1NTIHByb3BlcnRpZXMgdG8gdXNlLlxuICogQHBhcmFtIGNoaWxkcmVuIEFueSBjaGlsZCBlbGVtZW50cyBmb3IgdGhlIGJ1dHRvbi5cbiAqIEByZXR1cm5zIFRoZSBidXR0b24gZnJhZ21lbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVCdXR0b24oXG5cdGJ1dHRvblN0eWxlOiBCdXR0b25TdHlsZSxcblx0dGl0bGVLZXk6IHN0cmluZyxcblx0YWN0aW9uOiBzdHJpbmcsXG5cdHN0eWxlPzogQ1NTLlByb3BlcnRpZXMsXG5cdGNoaWxkcmVuPzogVGVtcGxhdGVGcmFnbWVudFtdXG4pOiBQcm9taXNlPEJ1dHRvblRlbXBsYXRlRnJhZ21lbnQ+IHtcblx0Y29uc3QgcGFsZXR0ZSA9IGF3YWl0IGdldEN1cnJlbnRQYWxldHRlKCk7XG5cdGNvbnN0IGJ1dHRvbk9wdGlvbnMgPVxuXHRcdGJ1dHRvblN0eWxlID09PSBCdXR0b25TdHlsZS5TZWNvbmRhcnlcblx0XHRcdD8ge1xuXHRcdFx0XHRcdGJvcmRlcjogYDFweCBzb2xpZCAke3BhbGV0dGUuaW5wdXRDb2xvcn1gXG5cdFx0XHQgIH1cblx0XHRcdDoge307XG5cdHJldHVybiB7XG5cdFx0dHlwZTogVGVtcGxhdGVGcmFnbWVudFR5cGVzLkJ1dHRvbixcblx0XHRidXR0b25TdHlsZSxcblx0XHRjaGlsZHJlbjogY2hpbGRyZW4gPz8gW2F3YWl0IGNyZWF0ZVRleHQodGl0bGVLZXksIDEyKV0sXG5cdFx0YWN0aW9uLFxuXHRcdHN0eWxlOiB7XG5cdFx0XHQuLi5idXR0b25PcHRpb25zLFxuXHRcdFx0Li4uc3R5bGVcblx0XHR9XG5cdH07XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbGFiZWxsZWQgdmFsdWUuXG4gKiBAcGFyYW0gbGFiZWxLZXkgVGhlIGRhdGEga2V5IHRvIGxvb2t1cCBpbiB0aGUgZGF0YSBvYmplY3QgZm9yIHRoZSBsYWJlbC5cbiAqIEBwYXJhbSB2YWx1ZUtleSBUaGUgZGF0YSBrZXkgdG8gbG9va3VwIGluIHRoZSBkYXRhIG9iamVjdCBmb3IgdGhlIHZhbHVlLlxuICogQHBhcmFtIHN0eWxlIEFkZGl0aW9uYWwgQ1NTIHByb3BlcnRpZXMgdG8gdXNlLlxuICogQHJldHVybnMgVGhlIGxhYmVsIGFuZCB2YWx1ZSBmcmFnbWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUxhYmVsbGVkVmFsdWUoXG5cdGxhYmVsS2V5OiBzdHJpbmcsXG5cdHZhbHVlS2V5OiBzdHJpbmcsXG5cdHN0eWxlPzogQ1NTLlByb3BlcnRpZXNcbik6IFByb21pc2U8UGxhaW5Db250YWluZXJUZW1wbGF0ZUZyYWdtZW50PiB7XG5cdGNvbnN0IHBhbGV0dGUgPSBhd2FpdCBnZXRDdXJyZW50UGFsZXR0ZSgpO1xuXHRyZXR1cm4ge1xuXHRcdHR5cGU6IFRlbXBsYXRlRnJhZ21lbnRUeXBlcy5Db250YWluZXIsXG5cdFx0c3R5bGU6IHtcblx0XHRcdGRpc3BsYXk6IFwiZmxleFwiLFxuXHRcdFx0ZmxleERpcmVjdGlvbjogXCJjb2x1bW5cIixcblx0XHRcdG1hcmdpbkJvdHRvbTogXCI5cHhcIixcblx0XHRcdC4uLnN0eWxlXG5cdFx0fSxcblx0XHRjaGlsZHJlbjogW1xuXHRcdFx0YXdhaXQgY3JlYXRlVGV4dChsYWJlbEtleSwgMTEsIHsgZm9udFdlaWdodDogXCJib2xkXCIsIGNvbG9yOiBwYWxldHRlLmJyYW5kUHJpbWFyeSB9KSxcblx0XHRcdGF3YWl0IGNyZWF0ZVRleHQodmFsdWVLZXksIDE0KVxuXHRcdF1cblx0fTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSB0YWJsZS5cbiAqIEBwYXJhbSB0YWJsZURhdGEgYXMgYW4gdGFibGUgdHdvIGRpbWVuc2lvbmFsIGFycmF5LlxuICogQHBhcmFtIGNvbFNwYW5zIFNwYW5zIGZvciB0aGUgY29sdW1ucy5cbiAqIEBwYXJhbSB0YWJsZUluZGV4IFRoZSBpbmRleCBmb3IgdGhlIHRhYmxlIHNvIHRoYXQga2V5cyBkb24ndCBjbGFzaC5cbiAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIG9iamVjdCB0byBwb3B1bGF0ZS5cbiAqIEByZXR1cm5zIFRoZSB0YWJsZSBmcmFnbWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRhYmxlKFxuXHR0YWJsZURhdGE6IHN0cmluZ1tdW10sXG5cdGNvbFNwYW5zOiBudW1iZXJbXSxcblx0dGFibGVJbmRleDogbnVtYmVyLFxuXHRkYXRhOiB7IFtpZDogc3RyaW5nXTogc3RyaW5nIH1cbik6IFByb21pc2U8VGVtcGxhdGVGcmFnbWVudD4ge1xuXHRjb25zdCBwYWxldHRlID0gYXdhaXQgZ2V0Q3VycmVudFBhbGV0dGUoKTtcblx0Y29uc3Qgc2NoZW1lID0gYXdhaXQgZ2V0Q3VycmVudENvbG9yU2NoZW1lTW9kZSgpO1xuXG5cdGNvbnN0IGhlYWRlckNvbG9yID0gc2NoZW1lID09PSBDb2xvclNjaGVtZU1vZGUuRGFyayA/IHBhbGV0dGUuYmFja2dyb3VuZDIgOiBwYWxldHRlLmJhY2tncm91bmQ1O1xuXHRjb25zdCBjZWxsQ29sb3IgPSBzY2hlbWUgPT09IENvbG9yU2NoZW1lTW9kZS5EYXJrID8gcGFsZXR0ZS5iYWNrZ3JvdW5kNSA6IHBhbGV0dGUuYmFja2dyb3VuZDI7XG5cblx0Y29uc3QgY2VsbHM6IFRlbXBsYXRlRnJhZ21lbnRbXSA9IFtdO1xuXHRjb25zdCBmaW5hbENvbFNwYW5zID0gY29sU3BhbnMuc2xpY2UoKTtcblx0Zm9yIChsZXQgY29sID0gMDsgY29sIDwgdGFibGVEYXRhWzBdLmxlbmd0aDsgY29sKyspIHtcblx0XHRjb25zdCBoZWFkZXJLZXkgPSBgdGFibGUke3RhYmxlSW5kZXh9X2hlYWRlciR7Y29sfWA7XG5cdFx0ZGF0YVtoZWFkZXJLZXldID0gdGFibGVEYXRhWzBdW2NvbF0gPz8gXCJcIjtcblx0XHRjZWxscy5wdXNoKFxuXHRcdFx0YXdhaXQgY3JlYXRlVGV4dChoZWFkZXJLZXksIDEwLCB7XG5cdFx0XHRcdHBhZGRpbmc6IFwiM3B4XCIsXG5cdFx0XHRcdHdoaXRlU3BhY2U6IFwibm93cmFwXCIsXG5cdFx0XHRcdGZvbnRXZWlnaHQ6IFwiYm9sZFwiLFxuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I6IGhlYWRlckNvbG9yXG5cdFx0XHR9KVxuXHRcdCk7XG5cblx0XHRpZiAoY29sU3BhbnMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRmaW5hbENvbFNwYW5zLnB1c2goMSk7XG5cdFx0fVxuXHR9XG5cblx0Zm9yIChsZXQgcm93ID0gMTsgcm93IDwgdGFibGVEYXRhLmxlbmd0aDsgcm93KyspIHtcblx0XHRmb3IgKGxldCBjb2wgPSAwOyBjb2wgPCB0YWJsZURhdGFbMF0ubGVuZ3RoOyBjb2wrKykge1xuXHRcdFx0Y29uc3Qgcm93Q29sS2V5ID0gYHRhYmxlJHt0YWJsZUluZGV4fV9jb2wke2NvbH1fcm93JHtyb3d9YDtcblx0XHRcdGRhdGFbcm93Q29sS2V5XSA9IHRhYmxlRGF0YVtyb3ddW2NvbF0gPz8gXCJcIjtcblx0XHRcdGNlbGxzLnB1c2goYXdhaXQgY3JlYXRlVGV4dChyb3dDb2xLZXksIDEwLCB7IHBhZGRpbmc6IFwiM3B4XCIsIHdoaXRlU3BhY2U6IFwibm93cmFwXCIgfSkpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjcmVhdGVDb250YWluZXIoXCJyb3dcIiwgY2VsbHMsIHtcblx0XHRkaXNwbGF5OiBcImdyaWRcIixcblx0XHRncmlkVGVtcGxhdGVDb2x1bW5zOiBmaW5hbENvbFNwYW5zLm1hcCgocykgPT4gYCR7c31mcmApLmpvaW4oXCIgXCIpLFxuXHRcdG1hcmdpbkJvdHRvbTogXCIxMHB4XCIsXG5cdFx0b3ZlcmZsb3c6IFwiYXV0b1wiLFxuXHRcdGJhY2tncm91bmQ6IGNlbGxDb2xvcixcblx0XHRib3JkZXI6IGAxcHggc29saWQgJHtoZWFkZXJDb2xvcn1gXG5cdH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGxpbmsgZWxlbWVudC5cbiAqIEBwYXJhbSBsYWJlbEtleSBUaGUgZGF0YSBrZXkgZm9yIHRoZSBsYWJlbCB0ZXh0LlxuICogQHBhcmFtIGFjdGlvbiBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gb24gY2xpY2tpbmcgdGhlIGxpbmsuXG4gKiBAcGFyYW0gZm9udFNpemUgVGhlIGZvbnQgc2l6ZSBmb3IgdGhlIGxpbmsuXG4gKiBAcGFyYW0gc3R5bGUgQWRkaXRpb25hbCBDU1MgcHJvcGVydGllcyB0byB1c2UuXG4gKiBAcmV0dXJucyBUaGUgbGluayBmcmFnbWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUxpbmsoXG5cdGxhYmVsS2V5OiBzdHJpbmcsXG5cdGFjdGlvbjogc3RyaW5nLFxuXHRmb250U2l6ZTogbnVtYmVyID0gMTAsXG5cdHN0eWxlPzogQ1NTLlByb3BlcnRpZXNcbik6IFByb21pc2U8VGVtcGxhdGVGcmFnbWVudD4ge1xuXHRyZXR1cm4ge1xuXHRcdHR5cGU6IFRlbXBsYXRlRnJhZ21lbnRUeXBlcy5CdXR0b24sXG5cdFx0YnV0dG9uU3R5bGU6IEJ1dHRvblN0eWxlLlRleHRPbmx5LFxuXHRcdGNoaWxkcmVuOiBbYXdhaXQgY3JlYXRlVGV4dChsYWJlbEtleSwgZm9udFNpemUpXSxcblx0XHRhY3Rpb24sXG5cdFx0c3R5bGU6IHtcblx0XHRcdHBhZGRpbmc6IDAsXG5cdFx0XHRib3JkZXI6IDAsXG5cdFx0XHRmb250V2VpZ2h0OiBcIm5vcm1hbFwiLFxuXHRcdFx0dGV4dERlY29yYXRpb246IFwidW5kZXJsaW5lXCIsXG5cdFx0XHQuLi5zdHlsZVxuXHRcdH1cblx0fTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSB0ZW1wbGF0ZSBsYXlvdXQuXG4gKiBAcGFyYW0gdGl0bGUgVGhlIHRpdGxlIGZvciB0aGUgdGVtcGxhdGUuXG4gKiBAcGFyYW0gaWNvbiBUaGUgaWNvbiBmb3IgdGhlIHRlbXBsYXRlLlxuICogQHBhcmFtIGJvZHlGcmFnbWVudHMgVGhlIGZyYWdtZW50cyB0byBnbyBpbiB0aGUgYm9keS5cbiAqIEBwYXJhbSBidXR0b25zIFRoZSBidXR0b25zIGZvciB0aGUgZm9vdGVyLlxuICogQHBhcmFtIGhlYWRlckJ1dHRvbnMgSWNvbnMgYnV0dG9ucyB3aGljaCBjYW4gYmUgZGlzcGxheSBpbiB0aGUgdGl0bGUuXG4gKiBAcmV0dXJucyBUaGUgbGF5b3V0IGZyYWdtZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlTGF5b3V0KFxuXHR0aXRsZTogc3RyaW5nLFxuXHRpY29uOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdGJvZHlGcmFnbWVudHM6IFRlbXBsYXRlRnJhZ21lbnRbXSxcblx0YnV0dG9ucz86IHsgdGl0bGU6IHN0cmluZzsgYWN0aW9uOiBzdHJpbmcgfVtdLFxuXHRoZWFkZXJCdXR0b25zPzogeyBpY29uOiBzdHJpbmc7IGFjdGlvbjogc3RyaW5nIH1bXVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKTogUHJvbWlzZTx7IGxheW91dDogUGxhaW5Db250YWluZXJUZW1wbGF0ZUZyYWdtZW50OyBkYXRhOiBhbnkgfT4ge1xuXHRjb25zdCBwYWxldHRlID0gYXdhaXQgZ2V0Q3VycmVudFBhbGV0dGUoKTtcblx0Y29uc3QgYWRkaXRpb25hbERhdGE6IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcblx0XHR0aXRsZVxuXHR9O1xuXG5cdGNvbnN0IGhlYWRlcjogVGVtcGxhdGVGcmFnbWVudFtdID0gW107XG5cdGlmIChpY29uKSB7XG5cdFx0aGVhZGVyLnB1c2goXG5cdFx0XHRhd2FpdCBjcmVhdGVJbWFnZShcImljb25cIiwgXCJcIiwge1xuXHRcdFx0XHR3aWR0aDogXCIxNnB4XCIsXG5cdFx0XHRcdGhlaWdodDogXCIxNnB4XCJcblx0XHRcdH0pXG5cdFx0KTtcblx0XHRhZGRpdGlvbmFsRGF0YS5pY29uID0gaWNvbjtcblx0fVxuXHRoZWFkZXIucHVzaChhd2FpdCBjcmVhdGVUaXRsZShcInRpdGxlXCIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB7IGZsZXg6IFwiMVwiIH0pKTtcblxuXHRpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJCdXR0b25zKSkge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVyQnV0dG9ucy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aGVhZGVyLnB1c2goXG5cdFx0XHRcdGF3YWl0IGNyZWF0ZUJ1dHRvbihcblx0XHRcdFx0XHRCdXR0b25TdHlsZS5QcmltYXJ5LFxuXHRcdFx0XHRcdFwiXCIsXG5cdFx0XHRcdFx0aGVhZGVyQnV0dG9uc1tpXS5hY3Rpb24sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZDogXCJub25lXCIsXG5cdFx0XHRcdFx0XHRib3JkZXI6IDAsXG5cdFx0XHRcdFx0XHRwYWRkaW5nOiAwXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRhd2FpdCBjcmVhdGVJbWFnZShgaGVhZGVyQnV0dG9uSWNvbiR7aX1gLCBcIlwiLCB7XG5cdFx0XHRcdFx0XHRcdHdpZHRoOiBcIjE2cHhcIixcblx0XHRcdFx0XHRcdFx0aGVpZ2h0OiBcIjE2cHhcIlxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRdXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0XHRhZGRpdGlvbmFsRGF0YVtgaGVhZGVyQnV0dG9uSWNvbiR7aX1gXSA9IGhlYWRlckJ1dHRvbnNbaV0uaWNvbjtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBidXR0b25zRnJhZ21lbnRzOiBUZW1wbGF0ZUZyYWdtZW50W10gPSBbXTtcblx0aWYgKEFycmF5LmlzQXJyYXkoYnV0dG9ucykpIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJ1dHRvbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGJ1dHRvbnNGcmFnbWVudHMucHVzaChhd2FpdCBjcmVhdGVCdXR0b24oQnV0dG9uU3R5bGUuUHJpbWFyeSwgYGJ1dHRvblRpdGxlJHtpfWAsIGJ1dHRvbnNbaV0uYWN0aW9uKSk7XG5cdFx0XHRhZGRpdGlvbmFsRGF0YVtgYnV0dG9uVGl0bGUke2l9YF0gPSBidXR0b25zW2ldLnRpdGxlO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7XG5cdFx0bGF5b3V0OiBhd2FpdCBjcmVhdGVDb250YWluZXIoXG5cdFx0XHRcImNvbHVtblwiLFxuXHRcdFx0W1xuXHRcdFx0XHRhd2FpdCBjcmVhdGVDb250YWluZXIoXCJyb3dcIiwgaGVhZGVyLCB7XG5cdFx0XHRcdFx0Ym9yZGVyQm90dG9tOiBgMXB4IHNvbGlkICR7cGFsZXR0ZS5iYWNrZ3JvdW5kNn1gLFxuXHRcdFx0XHRcdHBhZGRpbmdCb3R0b206IFwiNXB4XCIsXG5cdFx0XHRcdFx0Z2FwOiBcIjVweFwiLFxuXHRcdFx0XHRcdGFsaWduSXRlbXM6IFwiY2VudGVyXCJcblx0XHRcdFx0fSksXG5cdFx0XHRcdGF3YWl0IGNyZWF0ZUNvbnRhaW5lcihcImNvbHVtblwiLCBib2R5RnJhZ21lbnRzLCB7XG5cdFx0XHRcdFx0ZmxleDogXCIxXCIsXG5cdFx0XHRcdFx0Z2FwOiBcIjEwcHhcIlxuXHRcdFx0XHR9KSxcblx0XHRcdFx0YXdhaXQgY3JlYXRlQ29udGFpbmVyKFwicm93XCIsIGJ1dHRvbnNGcmFnbWVudHMsIHtcblx0XHRcdFx0XHRqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcblx0XHRcdFx0XHRnYXA6IFwiMTBweFwiXG5cdFx0XHRcdH0pXG5cdFx0XHRdLFxuXHRcdFx0e1xuXHRcdFx0XHRwYWRkaW5nOiBcIjEwcHhcIixcblx0XHRcdFx0Z2FwOiBcIjEwcHhcIixcblx0XHRcdFx0ZmxleDogXCIxXCJcblx0XHRcdH1cblx0XHQpLFxuXHRcdGRhdGE6IGFkZGl0aW9uYWxEYXRhXG5cdH07XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgdGVtcGxhdGUgZm9yIGFuIGFwcC5cbiAqIEBwYXJhbSBhcHAgVGhlIGFwcCB0byBjcmVhdGUgdGhlIHRlbXBsYXRlIGZvci5cbiAqIEBwYXJhbSBhcHBJY29uIFRoZSBpY29uIGZvciB0aGUgYXBwLlxuICogQHBhcmFtIGFjdGlvbiBUaGUgYWN0aW9uIHRvIGxhdW5jaCB0aGUgYXBwLlxuICogQHBhcmFtIGhlYWRlckJ1dHRvbnMgSWNvbnMgYnV0dG9ucyB3aGljaCBjYW4gYmUgZGlzcGxheSBpbiB0aGUgdGl0bGUuXG4gKiBAcmV0dXJucyBUaGUgYXBwIGZyYWdtZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQXBwKFxuXHRhcHA6IFBsYXRmb3JtQXBwLFxuXHRhcHBJY29uOiBzdHJpbmcsXG5cdGFjdGlvbjogc3RyaW5nLFxuXHRoZWFkZXJCdXR0b25zPzogeyBpY29uOiBzdHJpbmc7IGFjdGlvbjogc3RyaW5nIH1bXVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKTogUHJvbWlzZTx7IGxheW91dDogUGxhaW5Db250YWluZXJUZW1wbGF0ZUZyYWdtZW50OyBkYXRhOiBhbnkgfT4ge1xuXHRjb25zdCBwYWxldHRlID0gYXdhaXQgZ2V0Q3VycmVudFBhbGV0dGUoKTtcblx0Y29uc3QgYWRkaXRpb25hbERhdGE6IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG5cdGNvbnN0IGJvZHk6IFRlbXBsYXRlRnJhZ21lbnRbXSA9IFtdO1xuXHRpZiAoYXBwLmRlc2NyaXB0aW9uKSB7XG5cdFx0Ym9keS5wdXNoKGF3YWl0IGNyZWF0ZVRleHQoXCJkZXNjcmlwdGlvblwiLCAxMikpO1xuXHRcdGFkZGl0aW9uYWxEYXRhLmRlc2NyaXB0aW9uID0gYXBwLmRlc2NyaXB0aW9uO1xuXHR9XG5cblx0aWYgKEFycmF5LmlzQXJyYXkoYXBwLmltYWdlcykgJiYgYXBwLmltYWdlcy5sZW5ndGggPiAwICYmIGFwcC5pbWFnZXNbMF0uc3JjKSB7XG5cdFx0Ym9keS5wdXNoKFxuXHRcdFx0YXdhaXQgY3JlYXRlSW1hZ2UoXCJzY3JlZW5zaG90XCIsIFwiU2NyZWVuc2hvdFwiLCB7XG5cdFx0XHRcdGJvcmRlcjogYDFweCBzb2xpZCAke3BhbGV0dGUuYmFja2dyb3VuZDZ9YFxuXHRcdFx0fSlcblx0XHQpO1xuXHRcdGFkZGl0aW9uYWxEYXRhLnNjcmVlbnNob3QgPSBhcHAuaW1hZ2VzWzBdLnNyYztcblx0fVxuXG5cdGNvbnN0IGxheW91dERhdGEgPSBhd2FpdCBjcmVhdGVMYXlvdXQoYXBwLnRpdGxlLCBhcHBJY29uLCBib2R5LCBbeyB0aXRsZTogYWN0aW9uLCBhY3Rpb24gfV0sIGhlYWRlckJ1dHRvbnMpO1xuXG5cdHJldHVybiB7XG5cdFx0bGF5b3V0OiBsYXlvdXREYXRhLmxheW91dCxcblx0XHRkYXRhOiB7XG5cdFx0XHQuLi5sYXlvdXREYXRhLmRhdGEsXG5cdFx0XHQuLi5hZGRpdGlvbmFsRGF0YVxuXHRcdH1cblx0fTtcbn1cbiIsImltcG9ydCB0eXBlIE9wZW5GaW4gZnJvbSBcIkBvcGVuZmluL2NvcmVcIjtcbmltcG9ydCB0eXBlIHsgQ3VzdG9tUGFsZXR0ZVNldCB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB7IENvbG9yU2NoZW1lT3B0aW9uVHlwZSwgZ2V0Q3VycmVudFN5bmMgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgeyBERUZBVUxUX1BBTEVUVEVTIH0gZnJvbSBcIi4vZGVmYXVsdC1wYWxldHRlc1wiO1xuaW1wb3J0IHsgZmlyZUxpZmVjeWNsZUV2ZW50IH0gZnJvbSBcIi4vbGlmZWN5Y2xlXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiLi9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB7IGdldFNldHRpbmdzIH0gZnJvbSBcIi4vc2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIHsgVGhlbWVDaGFuZ2VkTGlmZWN5Y2xlUGF5bG9hZCB9IGZyb20gXCIuL3NoYXBlcy9saWZlY3ljbGUtc2hhcGVzXCI7XG5pbXBvcnQgeyBDb2xvclNjaGVtZU1vZGUsIHR5cGUgUGxhdGZvcm1DdXN0b21UaGVtZSwgdHlwZSBQbGF0Zm9ybUN1c3RvbVRoZW1lcyB9IGZyb20gXCIuL3NoYXBlcy90aGVtZS1zaGFwZXNcIjtcbmltcG9ydCB7IGlzRW1wdHksIGlzU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJUaGVtZXNcIik7XG5cbmxldCB2YWxpZGF0ZWRUaGVtZXM6IFBsYXRmb3JtQ3VzdG9tVGhlbWVzO1xubGV0IGNvbG9yU2NoZW1lTW9kZTogQ29sb3JTY2hlbWVNb2RlO1xuXG4vKipcbiAqIERvZXMgdGhlIHBsYXRmb3JtIHN1cHBvcnQgY29sb3Igc2NoZW1lcy5cbiAqIEByZXR1cm5zIFRydWUgaWYgY29sb3Igc2NoZW1lcyBhcmUgc3VwcG9ydGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3VwcG9ydHNDb2xvclNjaGVtZXMoKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGNvbnN0IHRoZW1lcyA9IGF3YWl0IGdldFRoZW1lcygpO1xuXHRpZiAodGhlbWVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdC8vIG91dCBvZiB0aGUgYm94IHdlIHN1cHBvcnQgYSBsaWdodCBhbmQgZGFyayBjb2xvciBzY2hlbWVcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGlmIChcInBhbGV0dGVcIiBpbiB0aGVtZXNbMF0pIHtcblx0XHQvLyB0aGUgb2xkIHBhbGV0dGUgc3RydWN0dXJlIGRvZXNuJ3Qgc3VwcG9ydCBsaWdodCBhbmQgZGFyayBjb2xvciBzY2hlbWVzXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogR2V0IHRoZSBjdXJyZW50IHBhbGV0dGUuXG4gKiBAcmV0dXJucyBUaGUgY3VycmVudCBwYWxldHRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudFBhbGV0dGUoKTogUHJvbWlzZTxDdXN0b21QYWxldHRlU2V0PiB7XG5cdGNvbnN0IHRoZW1lcyA9IGF3YWl0IGdldFRoZW1lcygpO1xuXHRjb25zdCBjb2xvclNjaGVtZSA9IGF3YWl0IGdldEN1cnJlbnRDb2xvclNjaGVtZU1vZGUoKTtcblxuXHRpZiAodGhlbWVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiBERUZBVUxUX1BBTEVUVEVTW2NvbG9yU2NoZW1lXTtcblx0fVxuXG5cdGlmIChcInBhbGV0dGVcIiBpbiB0aGVtZXNbMF0pIHtcblx0XHRyZXR1cm4gdGhlbWVzWzBdLnBhbGV0dGU7XG5cdH1cblxuXHRyZXR1cm4gdGhlbWVzWzBdLnBhbGV0dGVzW2NvbG9yU2NoZW1lXTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGN1cnJlbnQgY29sb3Igc2NoZW1lIG1vZGUuXG4gKiBAcmV0dXJucyBUaGUgY29sb3Igc2NoZW1lIG1vZGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDdXJyZW50Q29sb3JTY2hlbWVNb2RlKCk6IFByb21pc2U8Q29sb3JTY2hlbWVNb2RlPiB7XG5cdGlmICghY29sb3JTY2hlbWVNb2RlKSB7XG5cdFx0Ly8gTm8gdGhlbWUgY3VycmVudGx5IHNldCBzbyB0cnkgYW5kIHdvcmsgaXQgb3V0XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblx0XHRcdC8vIEdldCB0aGUgc2VsZWN0ZWQgdGhlbWUgZnJvbSB0aGUgcGxhdGZvcm1cblx0XHRcdGNvbnN0IHNlbGVjdGVkVGhlbWUgPSBhd2FpdCBwbGF0Zm9ybS5UaGVtZS5nZXRTZWxlY3RlZFNjaGVtZSgpO1xuXG5cdFx0XHRpZiAoc2VsZWN0ZWRUaGVtZSA9PT0gQ29sb3JTY2hlbWVPcHRpb25UeXBlLlN5c3RlbSkge1xuXHRcdFx0XHQvLyBJZiBzZXQgdG8gc3lzdGVtIHRoZW4gZmluZCBvdXQgd2hhdCB0aGF0IHJlYWxseSBtZWFuc1xuXHRcdFx0XHRjb2xvclNjaGVtZU1vZGUgPSBnZXRTeXN0ZW1QcmVmZXJyZWRDb2xvclNjaGVtZSgpO1xuXHRcdFx0fSBlbHNlIGlmIChzZWxlY3RlZFRoZW1lID09PSBDb2xvclNjaGVtZU9wdGlvblR5cGUuRGFyaykge1xuXHRcdFx0XHRjb2xvclNjaGVtZU1vZGUgPSBDb2xvclNjaGVtZU1vZGUuRGFyaztcblx0XHRcdH0gZWxzZSBpZiAoc2VsZWN0ZWRUaGVtZSA9PT0gQ29sb3JTY2hlbWVPcHRpb25UeXBlLkxpZ2h0KSB7XG5cdFx0XHRcdGNvbG9yU2NoZW1lTW9kZSA9IENvbG9yU2NoZW1lTW9kZS5MaWdodDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVGhlIHRoZW1lIGZyb20gdGhlIHBsYXRmb3JtIGNvdWxkIGJlIG51bGwgaWYgbm9uZSBzZWxlY3RlZFxuXHRcdFx0Ly8gc28gdXNlIHRoZSB0aGVtZXMgY29uZmlnIHRvIHdvcmsgaXQgb3V0XG5cdFx0XHRpZiAoIWNvbG9yU2NoZW1lTW9kZSkge1xuXHRcdFx0XHRjb2xvclNjaGVtZU1vZGUgPSBDb2xvclNjaGVtZU1vZGUuRGFyaztcblxuXHRcdFx0XHRjb25zdCB0aGVtZXMgPSBhd2FpdCBnZXRUaGVtZXMoKTtcblx0XHRcdFx0aWYgKHRoZW1lcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0Ly8gd2Ugd2FudCB0byBjaGVjayBmb3IgZGVmYXVsdCByZWdhcmRsZXNzIG9mIHBhbGV0dGUgb3IgcGFsZXR0ZXMgYXMgYSB3YXkgb2YgaW5kaWNhdGluZ1xuXHRcdFx0XHRcdC8vIHdoYXQgc2NoZW1lIHRoZSBwYWxldHRlIGZvbGxvd3MgaWYgaXQgaXMgYSBzaW5nbGUgcGFsZXR0ZSBvciB0aGUgb25lIHRvIHBpY2sgaWYgdGhlcmVcblx0XHRcdFx0XHQvLyBpcyBhIGxpZ2h0IGFuZCBkYXJrIHBhbGV0dGUgcmF0aGVyIHRoYW4ganVzdCBkZWZhdWx0aW5nIHRvIGRhcmsgaWYgdGhlIGxhYmVsIG1hdGNoIGlzXG5cdFx0XHRcdFx0Ly8gdW5zdWNjZXNzZnVsXG5cdFx0XHRcdFx0Y29sb3JTY2hlbWVNb2RlID0gKHRoZW1lc1swXS5kZWZhdWx0IGFzIENvbG9yU2NoZW1lTW9kZSkgPz8gQ29sb3JTY2hlbWVNb2RlLkRhcms7XG5cblx0XHRcdFx0XHQvLyBJZiB0aGlzIGlzIGFuIG9sZCBmb3JtYXQgdGhlbWUganVzdCBzZWUgaWYgdGhlIGxhYmVsIG1hdGNoZXMgbGlnaHRcblx0XHRcdFx0XHRpZiAoXCJwYWxldHRlXCIgaW4gdGhlbWVzWzBdICYmIHRoZW1lc1swXS5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwibGlnaHRcIikpIHtcblx0XHRcdFx0XHRcdGNvbG9yU2NoZW1lTW9kZSA9IENvbG9yU2NoZW1lTW9kZS5MaWdodDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGNhdGNoIHtcblx0XHRcdC8vIFBsYXRmb3JtIHByb2JhYmx5IG5vdCBydW5uaW5nIHlldCwgZG9uJ3Qgc2V0IGEgZGVmYXVsdCBhcyB3ZSB3YW50XG5cdFx0XHQvLyBzdWJzZXF1ZW50IHN1Y2Nlc3NmdWwgY2FsbHMgdG8gcG9wdWxhdGUgaXQgd2hlbiB0aGUgcGxhdGZvcm0gaXMgcnVubmluZ1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjb2xvclNjaGVtZU1vZGUgPz8gQ29sb3JTY2hlbWVNb2RlLkRhcms7XG59XG5cbi8qKlxuICogU2V0IHRoZSBjb2xvciBzY2hlbWUgbW9kZSBhbmQgbm90aWZ5IGFueWJvZHkgbGlzdGVuaW5nIHRvIHRoZSBjaGFuZ2UuXG4gKiBAcGFyYW0gY29sb3JTY2hlbWUgVGhlIGNvbG9yIHNjaGVtZSB0byBzZXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRDdXJyZW50Q29sb3JTY2hlbWVNb2RlKGNvbG9yU2NoZW1lOiBDb2xvclNjaGVtZU9wdGlvblR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKGNvbG9yU2NoZW1lID09PSBDb2xvclNjaGVtZU9wdGlvblR5cGUuU3lzdGVtKSB7XG5cdFx0Y29sb3JTY2hlbWVNb2RlID0gZ2V0U3lzdGVtUHJlZmVycmVkQ29sb3JTY2hlbWUoKTtcblx0fSBlbHNlIGlmIChjb2xvclNjaGVtZSA9PT0gQ29sb3JTY2hlbWVPcHRpb25UeXBlLkxpZ2h0KSB7XG5cdFx0Y29sb3JTY2hlbWVNb2RlID0gQ29sb3JTY2hlbWVNb2RlLkxpZ2h0O1xuXHR9IGVsc2Uge1xuXHRcdGNvbG9yU2NoZW1lTW9kZSA9IENvbG9yU2NoZW1lTW9kZS5EYXJrO1xuXHR9XG5cblx0YXdhaXQgbm90aWZ5Q29sb3JTY2hlbWUoKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGlkIG9mIHRoZSBjdXJyZW50IHRoZW1lLlxuICogQHJldHVybnMgVGhlIGN1cnJlbnQgdGhlbWUgaWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDdXJyZW50VGhlbWVJZCgpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRjb25zdCB0aGVtZXMgPSBhd2FpdCBnZXRUaGVtZXMoKTtcblx0aWYgKHRoZW1lcy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4gXCJkZWZhdWx0XCI7XG5cdH1cblxuXHRyZXR1cm4gdGhlbWVzWzBdLmlkID8/IHRoZW1lc1swXS5sYWJlbDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGN1cnJlbnQgaWNvbiBmb2xkZXIuXG4gKiBAcmV0dXJucyBUaGUgY3VycmVudCBpY29uIGZvbGRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRJY29uRm9sZGVyKCk6IFByb21pc2U8c3RyaW5nPiB7XG5cdGNvbnN0IHRoZW1lcyA9IGF3YWl0IGdldFRoZW1lcygpO1xuXHRpZiAodGhlbWVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiBcImRlZmF1bHRcIjtcblx0fVxuXG5cdHJldHVybiB0aGVtZXNbMF0uaWNvbkZvbGRlciA/PyB0aGVtZXNbMF0uaWQgPz8gdGhlbWVzWzBdLmxhYmVsO1xufVxuXG4vKipcbiAqIE5vdGlmeSB0aGF0IHRoZSBjb2xvciBzY2hlbWUgaGFzIGNoYW5nZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBub3RpZnlDb2xvclNjaGVtZSgpOiBQcm9taXNlPHZvaWQ+IHtcblx0Y29uc3QgcGxhdGZvcm0gPSBnZXRDdXJyZW50U3luYygpO1xuXHRjb25zdCBzZXR0aW5ncyA9IGF3YWl0IGdldFNldHRpbmdzKCk7XG5cblx0Y29uc3Qgc2NoZW1lVHlwZSA9IGF3YWl0IGdldEN1cnJlbnRDb2xvclNjaGVtZU1vZGUoKTtcblx0Y29uc3QgcGFsZXR0ZSA9IGF3YWl0IGdldEN1cnJlbnRQYWxldHRlKCk7XG5cblx0YXdhaXQgZmlyZUxpZmVjeWNsZUV2ZW50KHBsYXRmb3JtLCBcInRoZW1lLWNoYW5nZWRcIiwge1xuXHRcdHNjaGVtZVR5cGUsXG5cdFx0cGFsZXR0ZVxuXHR9IGFzIFRoZW1lQ2hhbmdlZExpZmVjeWNsZVBheWxvYWQpO1xuXG5cdGNvbnN0IGFwcFNlc3Npb25Db250ZXh0R3JvdXAgPSBhd2FpdCBmaW4ubWUuaW50ZXJvcC5qb2luU2Vzc2lvbkNvbnRleHRHcm91cChcInBsYXRmb3JtL2V2ZW50c1wiKTtcblxuXHRhd2FpdCBhcHBTZXNzaW9uQ29udGV4dEdyb3VwLnNldENvbnRleHQoe1xuXHRcdHR5cGU6IFwicGxhdGZvcm0udGhlbWVcIixcblx0XHRwcmVmaXg6IHNldHRpbmdzPy50aGVtZVByb3ZpZGVyPy5jc3NWYXJQcmVmaXgsXG5cdFx0c2NoZW1lTmFtZXM6IHNldHRpbmdzPy50aGVtZVByb3ZpZGVyPy5zY2hlbWFOYW1lcyxcblx0XHRzY2hlbWVUeXBlLFxuXHRcdHBhbGV0dGVcblx0fSBhcyBPcGVuRmluLkNvbnRleHQpO1xufVxuXG4vKipcbiAqIEdldCBhbGwgdGhlIHRoZW1lcy5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZGF0ZSB0aGVtZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRUaGVtZXMoKTogUHJvbWlzZTxQbGF0Zm9ybUN1c3RvbVRoZW1lcz4ge1xuXHRpZiAoIXZhbGlkYXRlZFRoZW1lcykge1xuXHRcdGNvbnN0IHNldHRpbmdzID0gYXdhaXQgZ2V0U2V0dGluZ3MoKTtcblx0XHR2YWxpZGF0ZWRUaGVtZXMgPSB2YWxpZGF0ZVRoZW1lcyhzZXR0aW5ncz8udGhlbWVQcm92aWRlcj8udGhlbWVzKTtcblx0fVxuXHRyZXR1cm4gdmFsaWRhdGVkVGhlbWVzLnNsaWNlKCk7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYW55IGN1c3RvbSB0aGVtZXMuXG4gKiBAcGFyYW0gdGhlbWVzIFRoZSB0aGVtZXMgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIHRoZW1lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGhlbWVzKHRoZW1lcz86IFBsYXRmb3JtQ3VzdG9tVGhlbWVzKTogUGxhdGZvcm1DdXN0b21UaGVtZXMge1xuXHRjb25zdCBwbGF0Zm9ybVRoZW1lczogUGxhdGZvcm1DdXN0b21UaGVtZXMgPSBbXTtcblxuXHRpZiAoQXJyYXkuaXNBcnJheSh0aGVtZXMpKSB7XG5cdFx0Y29uc3QgcHJlZmVycmVkQ29sb3JTY2hlbWUgPSBnZXRTeXN0ZW1QcmVmZXJyZWRDb2xvclNjaGVtZSgpO1xuXG5cdFx0Zm9yIChjb25zdCB0aGVtZSBvZiB0aGVtZXMpIHtcblx0XHRcdGNvbnN0IHRoZW1lVG9WYWxpZGF0ZTogUGFydGlhbDxQbGF0Zm9ybUN1c3RvbVRoZW1lPiA9IHRoZW1lO1xuXG5cdFx0XHQvLyBwZXJmb3JtIGRlZmVuc2l2ZSBjaGVjayBpbiBjYXNlIG51bGwgb3IgdW5kZWZpbmVkIGlzIHNwZWNpZmllZC5cblx0XHRcdGlmIChcInBhbGV0dGVcIiBpbiB0aGVtZVRvVmFsaWRhdGUgJiYgaXNFbXB0eSh0aGVtZVRvVmFsaWRhdGUucGFsZXR0ZSkpIHtcblx0XHRcdFx0ZGVsZXRlIHRoZW1lVG9WYWxpZGF0ZS5wYWxldHRlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoXCJwYWxldHRlc1wiIGluIHRoZW1lVG9WYWxpZGF0ZSAmJiBpc0VtcHR5KHRoZW1lVG9WYWxpZGF0ZS5wYWxldHRlcykpIHtcblx0XHRcdFx0ZGVsZXRlIHRoZW1lVG9WYWxpZGF0ZS5wYWxldHRlcztcblx0XHRcdH1cblxuXHRcdFx0aWYgKFwicGFsZXR0ZVwiIGluIHRoZW1lVG9WYWxpZGF0ZSB8fCBcInBhbGV0dGVzXCIgaW4gdGhlbWVUb1ZhbGlkYXRlKSB7XG5cdFx0XHRcdGxldCBpc1ZhbGlkID0gZmFsc2U7XG5cdFx0XHRcdGlmIChcInBhbGV0dGVcIiBpbiB0aGVtZVRvVmFsaWRhdGUpIHtcblx0XHRcdFx0XHR0aGVtZVRvVmFsaWRhdGUucGFsZXR0ZSA9IHZhbGlkYXRlUGFsZXR0ZShcblx0XHRcdFx0XHRcdHRoZW1lVG9WYWxpZGF0ZS5wYWxldHRlLFxuXHRcdFx0XHRcdFx0dGhlbWVUb1ZhbGlkYXRlLmxhYmVsID8/IFwiXCIsXG5cdFx0XHRcdFx0XHRERUZBVUxUX1BBTEVUVEVTW0NvbG9yU2NoZW1lTW9kZS5EYXJrXVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aXNWYWxpZCA9ICFpc0VtcHR5KHRoZW1lVG9WYWxpZGF0ZS5wYWxldHRlKTtcblx0XHRcdFx0fSBlbHNlIGlmIChcInBhbGV0dGVzXCIgaW4gdGhlbWVUb1ZhbGlkYXRlKSB7XG5cdFx0XHRcdFx0Y29uc3QgcGFsZXR0ZXMgPSB7XG5cdFx0XHRcdFx0XHRkYXJrOiB2YWxpZGF0ZVBhbGV0dGUoXG5cdFx0XHRcdFx0XHRcdHRoZW1lVG9WYWxpZGF0ZS5wYWxldHRlcz8uW0NvbG9yU2NoZW1lTW9kZS5EYXJrXSxcblx0XHRcdFx0XHRcdFx0dGhlbWVUb1ZhbGlkYXRlLmxhYmVsID8/IFwiXCIsXG5cdFx0XHRcdFx0XHRcdERFRkFVTFRfUEFMRVRURVNbQ29sb3JTY2hlbWVNb2RlLkRhcmtdXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0bGlnaHQ6IHZhbGlkYXRlUGFsZXR0ZShcblx0XHRcdFx0XHRcdFx0dGhlbWVUb1ZhbGlkYXRlLnBhbGV0dGVzPy5bQ29sb3JTY2hlbWVNb2RlLkxpZ2h0XSxcblx0XHRcdFx0XHRcdFx0dGhlbWVUb1ZhbGlkYXRlLmxhYmVsID8/IFwiXCIsXG5cdFx0XHRcdFx0XHRcdERFRkFVTFRfUEFMRVRURVNbQ29sb3JTY2hlbWVNb2RlLkxpZ2h0XVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0aXNWYWxpZCA9ICFpc0VtcHR5KHBhbGV0dGVzW0NvbG9yU2NoZW1lTW9kZS5EYXJrXSkgJiYgIWlzRW1wdHkocGFsZXR0ZXNbQ29sb3JTY2hlbWVNb2RlLkxpZ2h0XSk7XG5cblx0XHRcdFx0XHR0aGVtZVRvVmFsaWRhdGUucGFsZXR0ZXMgPSBwYWxldHRlcyBhcyB7IGRhcms6IEN1c3RvbVBhbGV0dGVTZXQ7IGxpZ2h0OiBDdXN0b21QYWxldHRlU2V0IH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoaXNWYWxpZCkge1xuXHRcdFx0XHRcdGlmIChoYXNTY2hlbWUodGhlbWVUb1ZhbGlkYXRlIGFzIFBsYXRmb3JtQ3VzdG9tVGhlbWUsIHByZWZlcnJlZENvbG9yU2NoZW1lKSkge1xuXHRcdFx0XHRcdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRcdFx0XHRcdGBGb3VuZCBhIHRoZW1lIHRoYXQgbWF0Y2hlcyBzeXN0ZW0gY29sb3Igc2NoZW1lIHByZWZlcmVuY2VzIGFuZCBtYWtpbmcgaXQgdGhlIGRlZmF1bHQgdGhlbWU6ICR7cHJlZmVycmVkQ29sb3JTY2hlbWV9YFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHBsYXRmb3JtVGhlbWVzLnVuc2hpZnQodGhlbWVUb1ZhbGlkYXRlIGFzIFBsYXRmb3JtQ3VzdG9tVGhlbWUpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRwbGF0Zm9ybVRoZW1lcy5wdXNoKHRoZW1lVG9WYWxpZGF0ZSBhcyBQbGF0Zm9ybUN1c3RvbVRoZW1lKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0XHRgRm91bmQgYSB0aGVtZSB0aGF0IGRvZXMgbm90IGNvbnRhaW4gYW55IGNvbG9yczogJHt0aGVtZVRvVmFsaWRhdGUuaWQgPz8gdGhlbWVUb1ZhbGlkYXRlLmxhYmVsfWBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHBsYXRmb3JtVGhlbWVzO1xufVxuXG4vKipcbiAqIFRvZ2dsZSB0aGUgY29sb3Igc2NoZW1lLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdG9nZ2xlU2NoZW1lKCk6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBwbGF0Zm9ybSA9IGdldEN1cnJlbnRTeW5jKCk7XG5cdGlmIChjb2xvclNjaGVtZU1vZGUgPT09IENvbG9yU2NoZW1lTW9kZS5MaWdodCkge1xuXHRcdGF3YWl0IHBsYXRmb3JtLlRoZW1lLnNldFNlbGVjdGVkU2NoZW1lKENvbG9yU2NoZW1lT3B0aW9uVHlwZS5EYXJrKTtcblx0fSBlbHNlIHtcblx0XHRhd2FpdCBwbGF0Zm9ybS5UaGVtZS5zZXRTZWxlY3RlZFNjaGVtZShDb2xvclNjaGVtZU9wdGlvblR5cGUuTGlnaHQpO1xuXHR9XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYSBwYWxldHRlLlxuICogQHBhcmFtIHRoZW1lUGFsZXR0ZSBUaGUgcGFsZXR0ZSB0byB2YWxpZGF0ZS5cbiAqIEBwYXJhbSB0aGVtZUxhYmVsIFRoZSBsYWJlbCBmb3IgdGhlIHRoZW1lLlxuICogQHBhcmFtIGRlZmF1bHRQYWxldHRlIFRoZSBkZWZhdWx0IHBhbGV0dGUgdG8gYmFja2ZpbGwgbWlzc2luZyBjb2xvcnMuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIHBhbGV0dGUuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlUGFsZXR0ZShcblx0dGhlbWVQYWxldHRlOiBDdXN0b21QYWxldHRlU2V0IHwgdW5kZWZpbmVkLFxuXHR0aGVtZUxhYmVsOiBzdHJpbmcsXG5cdGRlZmF1bHRQYWxldHRlOiBDdXN0b21QYWxldHRlU2V0XG4pOiBDdXN0b21QYWxldHRlU2V0IHwgdW5kZWZpbmVkIHtcblx0aWYgKCF0aGVtZVBhbGV0dGUpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Y29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoZW1lUGFsZXR0ZSkgYXMgKGtleW9mIEN1c3RvbVBhbGV0dGVTZXQpW107XG5cdGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvLyBGaWxsIGFsbCB0aGUgcGFsZXR0ZSBwcm9wZXJ0aWVzIGZyb20gdGhlIGRlZmF1bHQgcGFsZXR0ZSBhcyBhIGRlZmF1bHRcblx0Y29uc3QgY29tYmluZWRQYWxldHRlID0ge1xuXHRcdC4uLmRlZmF1bHRQYWxldHRlXG5cdH07XG5cblx0Ly8gVGhlbiBvdmVycmlkZSB3aXRoIGFueSBmcm9tIHRoZSB0aGVtZSBwYWxldHRlXG5cdGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcblx0XHRjb25zdCB2YWwgPSB0aGVtZVBhbGV0dGVba2V5XTtcblx0XHRpZiAoaXNTdHJpbmdWYWx1ZSh2YWwpKSB7XG5cdFx0XHRjb21iaW5lZFBhbGV0dGVba2V5XSA9IHZhbDtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBicmFuZFByaW1hcnlLZXkgPSBcImJyYW5kUHJpbWFyeVwiO1xuXHRjb25zdCBicmFuZFNlY29uZGFyeUtleSA9IFwiYnJhbmRTZWNvbmRhcnlcIjtcblx0Y29uc3QgYmFja2dyb3VuZFByaW1hcnlLZXkgPSBcImJhY2tncm91bmRQcmltYXJ5XCI7XG5cblx0aWYgKCF0aGVtZVBhbGV0dGVbYnJhbmRQcmltYXJ5S2V5XSkge1xuXHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0YFRoZW1lOiAke3RoZW1lTGFiZWx9IDogJHticmFuZFByaW1hcnlLZXl9IG5vdCBzcGVjaWZpZWQgKGl0IGlzIHJlcXVpcmVkIGlmIHNwZWNpZnlpbmcgb3RoZXIgdGhlbWUgcGFsZXR0ZSBzZXR0aW5ncykuIFByb3ZpZGluZyBkZWZhdWx0IG9mOiAke2RlZmF1bHRQYWxldHRlW2JyYW5kUHJpbWFyeUtleV19YFxuXHRcdCk7XG5cdH1cblxuXHRpZiAoIXRoZW1lUGFsZXR0ZVticmFuZFNlY29uZGFyeUtleV0pIHtcblx0XHRsb2dnZXIud2Fybihcblx0XHRcdGBUaGVtZTogJHt0aGVtZUxhYmVsfSA6ICR7YnJhbmRTZWNvbmRhcnlLZXl9IG5vdCBzcGVjaWZpZWQgKGl0IGlzIHJlcXVpcmVkIGlmIHNwZWNpZnlpbmcgb3RoZXIgdGhlbWUgcGFsZXR0ZSBzZXR0aW5ncykuIFByb3ZpZGluZyBkZWZhdWx0IG9mOiAke2RlZmF1bHRQYWxldHRlW2JyYW5kU2Vjb25kYXJ5S2V5XX1gXG5cdFx0KTtcblx0fVxuXG5cdGlmICghdGhlbWVQYWxldHRlW2JhY2tncm91bmRQcmltYXJ5S2V5XSkge1xuXHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0YFRoZW1lOiAke3RoZW1lTGFiZWx9IDogJHtiYWNrZ3JvdW5kUHJpbWFyeUtleX0gbm90IHNwZWNpZmllZCAoaXQgaXMgcmVxdWlyZWQgaWYgc3BlY2lmeWluZyBvdGhlciB0aGVtZSBwYWxldHRlIHNldHRpbmdzKS4gUHJvdmlkaW5nIGRlZmF1bHQgb2Y6ICR7ZGVmYXVsdFBhbGV0dGVbYmFja2dyb3VuZFByaW1hcnlLZXldfWBcblx0XHQpO1xuXHR9XG5cblx0cmV0dXJuIGNvbWJpbmVkUGFsZXR0ZTtcbn1cblxuLyoqXG4gKiBEbyB3ZSBoYXZlIHRoZSByZXF1ZXN0ZWQgY29sb3Igc2NoZW1lLlxuICogQHBhcmFtIHRoZW1lIFRoZSB0aGVtZSB0byB0ZXN0LlxuICogQHBhcmFtIHNjaGVtZSBUaGUgc2NoZW1lIHRvIGxvb2sgZm9yLlxuICogQHJldHVybnMgVHJ1ZSBpZiB3ZSBoYXZlIHRoZSBjb2xvciBzY2hlbWUgaW4gb3VyIHRoZW1lLlxuICovXG5mdW5jdGlvbiBoYXNTY2hlbWUodGhlbWU6IFBsYXRmb3JtQ3VzdG9tVGhlbWUsIHNjaGVtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdGlmIChcInBhbGV0dGVcIiBpbiB0aGVtZSkge1xuXHRcdHJldHVybiB0aGVtZS5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNjaGVtZSk7XG5cdH1cblxuXHRpZiAoXCJwYWxldHRlc1wiIGluIHRoZW1lKSB7XG5cdFx0cmV0dXJuICFpc0VtcHR5KHRoZW1lLnBhbGV0dGVzW3NjaGVtZSBhcyBDb2xvclNjaGVtZU1vZGVdKTtcblx0fVxuXG5cdHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHN5c3RlbSBwcmVmZXJyZWQgY29sb3Igc2NoZW1lLlxuICogQHJldHVybnMgVGhlIHN5c3RlbSBjb2xvciBzY2hlbWUuXG4gKi9cbmZ1bmN0aW9uIGdldFN5c3RlbVByZWZlcnJlZENvbG9yU2NoZW1lKCk6IENvbG9yU2NoZW1lTW9kZSB7XG5cdGlmICh3aW5kb3cubWF0Y2hNZWRpYT8uKFwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKVwiKS5tYXRjaGVzKSB7XG5cdFx0cmV0dXJuIENvbG9yU2NoZW1lTW9kZS5EYXJrO1xuXHR9XG5cdHJldHVybiBDb2xvclNjaGVtZU1vZGUuTGlnaHQ7XG59XG4iLCJpbXBvcnQgdHlwZSB7IEN1c3RvbUFjdGlvblNwZWNpZmllciB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2VcIjtcbmltcG9ydCB7IEN1c3RvbUFjdGlvbkNhbGxlclR5cGUgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgeyBjYWxsQWN0aW9uIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBidWlsZE1lbnUgfSBmcm9tIFwiLi9tZW51XCI7XG5pbXBvcnQgdHlwZSB7IFRyYXlQcm92aWRlck9wdGlvbnMgfSBmcm9tIFwiLi9zaGFwZXNcIjtcbmltcG9ydCB7IGlzRW1wdHksIGlzU3RyaW5nVmFsdWUsIHJhbmRvbVVVSUQgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJUcmF5XCIpO1xuXG4vKipcbiAqIEluaXRpYWxpemUgdGhlIHRyYXkgcHJvdmlkZXIuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgdHJheSBwcm92aWRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQob3B0aW9uczogVHJheVByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAob3B0aW9ucz8uZW5hYmxlZCkge1xuXHRcdGxvZ2dlci5pbmZvKFwiSW5pdGlhbGl6aW5nIFRyYXlcIik7XG5cblx0XHRjb25zdCBhcHAgPSBhd2FpdCBmaW4uQXBwbGljYXRpb24uZ2V0Q3VycmVudCgpO1xuXG5cdFx0bGV0IGljb24gPSBvcHRpb25zPy5pY29uO1xuXG5cdFx0aWYgKCFpc1N0cmluZ1ZhbHVlKGljb24pKSB7XG5cdFx0XHRjb25zdCBtYW5pZmVzdCA9IGF3YWl0IGFwcC5nZXRNYW5pZmVzdCgpO1xuXHRcdFx0aWNvbiA9IG1hbmlmZXN0LnBsYXRmb3JtPy5pY29uID8/IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2NvbW1vbi9pbWFnZXMvaWNvbi1ibHVlLnBuZ1wiO1xuXHRcdH1cblxuXHRcdGF3YWl0IGFwcC5zZXRUcmF5SWNvbihpY29uKTtcblxuXHRcdGNvbnN0IG1lbnVFbnRyaWVzID0gb3B0aW9ucz8ubWVudUVudHJpZXM7XG5cdFx0Y29uc3QgZGVmYXVsdEFjdGlvbiA9IG9wdGlvbnM/LmRlZmF1bHRBY3Rpb247XG5cdFx0aWYgKGlzRW1wdHkoZGVmYXVsdEFjdGlvbikgJiYgaXNFbXB0eShtZW51RW50cmllcykpIHtcblx0XHRcdGxvZ2dlci53YXJuKFwiWW91IGhhdmUgbm8gZGVmYXVsdCBhY3Rpb24gb3IgbWVudSBlbnRyaWVzIGRlZmluZWQgZm9yIHRoZSB0cmF5XCIpO1xuXHRcdH0gZWxzZSBpZiAoIWlzRW1wdHkoZGVmYXVsdEFjdGlvbikgJiYgIWlzRW1wdHkobWVudUVudHJpZXMpKSB7XG5cdFx0XHRsb2dnZXIud2FybihcIllvdSBjYW5ub3QgZGVmaW5lIGEgZGVmYXVsdCBhY3Rpb24gYW5kIG1lbnUgZW50cmllcyBmb3IgdGhlIHRyYXlcIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGF3YWl0IGFwcC5hZGRMaXN0ZW5lcihcInRyYXktaWNvbi1jbGlja2VkXCIsIGFzeW5jICh0cmF5SW5mbykgPT4ge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcIlRyYXkgQ2xpY2tlZFwiLCB0cmF5SW5mbyk7XG5cblx0XHRcdFx0Y29uc3QgYWN0aXZhdGVCdXR0b24gPSBvcHRpb25zPy5hY3RpdmF0ZUJ1dHRvbiA/PyBcImFueVwiO1xuXHRcdFx0XHRjb25zdCBjbGlja2VkQnV0dG9uID0gdHJheUluZm8uYnV0dG9uID8/IDA7XG5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGFjdGl2YXRlQnV0dG9uID09PSBcImFueVwiIHx8XG5cdFx0XHRcdFx0KGNsaWNrZWRCdXR0b24gPT09IDAgJiYgYWN0aXZhdGVCdXR0b24gPT09IFwibGVmdFwiKSB8fFxuXHRcdFx0XHRcdChjbGlja2VkQnV0dG9uID09PSAyICYmIGFjdGl2YXRlQnV0dG9uID09PSBcInJpZ2h0XCIpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGxldCBhY3Rpb25Ub1RyaWdnZXI6IEN1c3RvbUFjdGlvblNwZWNpZmllciB8IHVuZGVmaW5lZDtcblxuXHRcdFx0XHRcdGlmICghaXNFbXB0eShkZWZhdWx0QWN0aW9uKSkge1xuXHRcdFx0XHRcdFx0YWN0aW9uVG9UcmlnZ2VyID0gZGVmYXVsdEFjdGlvbjtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKCFpc0VtcHR5KG1lbnVFbnRyaWVzKSkge1xuXHRcdFx0XHRcdFx0bGV0IHdpbjtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdC8vIENyZWF0ZSBhIGR1bW15IGludmlzaWJsZSBhbHdheXMgb24gdG9wIHdpbmRvdyB0aGF0IHdlIGNhbiB1c2Vcblx0XHRcdFx0XHRcdFx0Ly8gdG8gc2hvdyB0aGUgcG9wdXAgbWVudSwgdGhpcyB3YXkgdGhlIG1lbnUgd2lsbCBhbHdheXMgYXBwZWFyXG5cdFx0XHRcdFx0XHRcdC8vIG9uIHRvcCBvZiBvdGhlciB3aW5kb3dzXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHdpbk9wdGlvbiA9IHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiByYW5kb21VVUlEKCksXG5cdFx0XHRcdFx0XHRcdFx0aW5jbHVkZUluU25hcHNob3Q6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdHNob3dUYXNrYmFySWNvbjogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0c2F2ZVdpbmRvd1N0YXRlOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0V2lkdGg6IDAsXG5cdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdEhlaWdodDogMCxcblx0XHRcdFx0XHRcdFx0XHR1cmw6IFwiYWJvdXQ6YmxhbmtcIixcblx0XHRcdFx0XHRcdFx0XHRmcmFtZTogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0YWx3YXlzT25Ub3A6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0c21hbGxXaW5kb3c6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0b3BhY2l0eTogMFxuXHRcdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRcdHdpbiA9IGF3YWl0IGZpbi5XaW5kb3cuY3JlYXRlKHdpbk9wdGlvbik7XG5cdFx0XHRcdFx0XHRcdC8vIFNldHRpbmcgdGhlIGZvY3VzIHRvIHRoZSBpbnZpc2libGUgd2luZG93IG1ha2VzIHN1cmUgdGhhdFxuXHRcdFx0XHRcdFx0XHQvLyB0aGUgY29udGV4dCBtZW51IGlzIGRpc21pc3NlZCB3aGVuIGNsaWNrZWQgYXdheSBmcm9tXG5cdFx0XHRcdFx0XHRcdGF3YWl0IHdpbi5mb2N1cygpO1xuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRlbXBsYXRlID0gYXdhaXQgYnVpbGRNZW51KHVuZGVmaW5lZCwgbWVudUVudHJpZXMpO1xuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHIgPSBhd2FpdCB3aW4uc2hvd1BvcHVwTWVudSh7XG5cdFx0XHRcdFx0XHRcdFx0dGVtcGxhdGUsXG5cdFx0XHRcdFx0XHRcdFx0eDogdHJheUluZm8ueCAtIDIwLFxuXHRcdFx0XHRcdFx0XHRcdHk6IHRyYXlJbmZvLnkgLSAyMFxuXHRcdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoci5yZXN1bHQgPT09IFwiY2xpY2tlZFwiKSB7XG5cdFx0XHRcdFx0XHRcdFx0bG9nZ2VyLmluZm8oXCJUcmF5IEl0ZW0gU2VsZWN0ZWRcIiwgci5kYXRhKTtcblx0XHRcdFx0XHRcdFx0XHRhY3Rpb25Ub1RyaWdnZXIgPSByLmRhdGEuYWN0aW9uO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGZpbmFsbHkge1xuXHRcdFx0XHRcdFx0XHRpZiAod2luKSB7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgd2luLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoIWlzRW1wdHkoYWN0aW9uVG9UcmlnZ2VyKSAmJiBpc1N0cmluZ1ZhbHVlKGFjdGlvblRvVHJpZ2dlci5pZCkpIHtcblx0XHRcdFx0XHRcdGF3YWl0IGNhbGxBY3Rpb24oYWN0aW9uVG9UcmlnZ2VyLmlkLCB7XG5cdFx0XHRcdFx0XHRcdGNhbGxlclR5cGU6IEN1c3RvbUFjdGlvbkNhbGxlclR5cGUuQ3VzdG9tQnV0dG9uLFxuXHRcdFx0XHRcdFx0XHR4OiB0cmF5SW5mby54LFxuXHRcdFx0XHRcdFx0XHR5OiB0cmF5SW5mby55LFxuXHRcdFx0XHRcdFx0XHR3aW5kb3dJZGVudGl0eTogZmluLm1lLmlkZW50aXR5LFxuXHRcdFx0XHRcdFx0XHRjdXN0b21EYXRhOiBhY3Rpb25Ub1RyaWdnZXIuY3VzdG9tRGF0YVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cbiIsIi8qKlxuICogVGVzdCBpZiBhIHZhbHVlIGlzIGEgdW5kZWZpbmVkIG9yIG51bGwuXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHRlc3QuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2YWx1ZSBpcyBudWxsIG9yIHVuZGVmaW5lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkIHtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG5cdHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsO1xufVxuXG4vKipcbiAqIFRlc3QgaWYgYSB2YWx1ZSBpcyBhbiBvYmplY3QuXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHRlc3QuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2YWx1ZSBpcyBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG9iamVjdCB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuXHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCI7XG59XG5cbi8qKlxuICogVGVzdCBpZiBhIHZhbHVlIGlzIGEgc3RyaW5nLlxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB0ZXN0LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYSBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZyB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuXHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XG59XG5cbi8qKlxuICogVGVzdCBpZiBhIHZhbHVlIGlzIGEgc3RyaW5nIHRoYXQgaXMgbm90IGVtcHR5LlxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB0ZXN0LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYSBzdHJpbmcgdGhhdCBpcyBub3QgZW1wdHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZ1ZhbHVlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgc3RyaW5nIHtcblx0cmV0dXJuIGlzU3RyaW5nKHZhbHVlKSAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMDtcbn1cblxuLyoqXG4gKiBUZXN0IGlmIGEgdmFsdWUgaXMgYSBudW1iZXIuXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHRlc3QuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2YWx1ZSBpcyBhIG51bWJlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgbnVtYmVyIHtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG5cdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIjtcbn1cblxuLyoqXG4gKiBUZXN0IGlmIGEgdmFsdWUgaXMgYSBib29sZWFuLlxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB0ZXN0LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYSBib29sZWFuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgYm9vbGVhbiB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuXHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiO1xufVxuXG4vKipcbiAqIFRlc3QgaWYgYSB2YWx1ZSBpcyBhbiBpbnRlZ2VyLlxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB0ZXN0LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYW4gaW50ZWdlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW50ZWdlcih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG51bWJlciB7XG5cdHJldHVybiBpc051bWJlcih2YWx1ZSkgJiYgTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSk7XG59XG5cbi8qKlxuICogRGVlcCBjbG9uZSBhbiBvYmplY3QuXG4gKiBAcGFyYW0gb2JqIFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyBUaGUgY2xvbmUgb2YgdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdENsb25lPFQ+KG9iajogVCk6IFQge1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcblx0cmV0dXJuIG9iaiA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKTtcbn1cblxuLyoqXG4gKiBQb2x5ZmlsbHMgcmFuZG9tVVVJRCBpZiBydW5uaW5nIGluIGEgbm9uLXNlY3VyZSBjb250ZXh0LlxuICogQHJldHVybnMgVGhlIHJhbmRvbSBVVUlELlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tVVVJRCgpOiBzdHJpbmcge1xuXHRpZiAoXCJyYW5kb21VVUlEXCIgaW4gd2luZG93LmNyeXB0bykge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuXHRcdHJldHVybiB3aW5kb3cuY3J5cHRvLnJhbmRvbVVVSUQoKTtcblx0fVxuXHQvLyBQb2x5ZmlsbCB0aGUgd2luZG93LmNyeXB0by5yYW5kb21VVUlEIGlmIHdlIGFyZSBydW5uaW5nIGluIGEgbm9uIHNlY3VyZSBjb250ZXh0IHRoYXQgZG9lc24ndCBoYXZlIGl0XG5cdC8vIHdlIGFyZSBzdGlsbCB1c2luZyB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyB3aGljaCBpcyBhbHdheXMgYXZhaWxhYmxlXG5cdC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMTE3NTIzLzI4MDAyMThcblx0LyoqXG5cdCAqIEdldCByYW5kb20gaGV4IHZhbHVlLlxuXHQgKiBAcGFyYW0gYyBUaGUgbnVtYmVyIHRvIGJhc2UgdGhlIHJhbmRvbSB2YWx1ZSBvbi5cblx0ICogQHJldHVybnMgVGhlIHJhbmRvbSB2YWx1ZS5cblx0ICovXG5cdGZ1bmN0aW9uIGdldFJhbmRvbUhleChjOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG5cdFx0Y29uc3Qgcm5kID0gd2luZG93LmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMSkpWzBdICYgKDE1ID4+IChOdW1iZXIoYykgLyA0KSk7XG5cdFx0cmV0dXJuIChcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG5cdFx0XHQoTnVtYmVyKGMpIF4gcm5kKS50b1N0cmluZygxNilcblx0XHQpO1xuXHR9XG5cdHJldHVybiBcIjEwMDAwMDAwLTEwMDAtNDAwMC04MDAwLTEwMDAwMDAwMDAwMFwiLnJlcGxhY2UoL1swMThdL2csIGdldFJhbmRvbUhleCk7XG59XG5cbi8qKlxuICogRm9ybWF0IGFuIGVycm9yIHRvIGEgcmVhZGFibGUgc3RyaW5nLlxuICogQHBhcmFtIGVyciBUaGUgZXJyb3IgdG8gZm9ybWF0LlxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBlcnJvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEVycm9yKGVycjogdW5rbm93bik6IHN0cmluZyB7XG5cdGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuXHRcdHJldHVybiBlcnIubWVzc2FnZTtcblx0fSBlbHNlIGlmICh0eXBlb2YgZXJyID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIGVycjtcblx0fVxuXHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZXJyKTtcbn1cbiIsImltcG9ydCB0eXBlIE9wZW5GaW4gZnJvbSBcIkBvcGVuZmluL2NvcmVcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgeyBFbmRwb2ludFByb3ZpZGVyIH0gZnJvbSBcIi4vc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdE1heGltdW1WZXJzaW9uLFxuXHRNaW5pbXVtVmVyc2lvbixcblx0VmVyc2lvbkluZm8sXG5cdFZlcnNpb25Qcm92aWRlck9wdGlvbnMsXG5cdFZlcnNpb25SZXF1ZXN0LFxuXHRWZXJzaW9uUmVzcG9uc2UsXG5cdFZlcnNpb25TdGF0dXMsXG5cdFZlcnNpb25TdGF0dXNEYXRhLFxuXHRWZXJzaW9uVHlwZVxufSBmcm9tIFwiLi9zaGFwZXMvdmVyc2lvbi1zaGFwZXNcIjtcbmltcG9ydCB7IGlzRW1wdHksIGlzSW50ZWdlciB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IHZlcnNpb25JbmZvOiBWZXJzaW9uSW5mbyA9IHt9O1xubGV0IHZlcnNpb25PcHRpb25zOiBWZXJzaW9uUHJvdmlkZXJPcHRpb25zO1xubGV0IG1pblZlcnNpb246IE1pbmltdW1WZXJzaW9uIHwgdW5kZWZpbmVkO1xubGV0IG1heFZlcnNpb246IE1heGltdW1WZXJzaW9uIHwgdW5kZWZpbmVkO1xubGV0IHZlcnNpb25XaW5kb3dDb25maWd1cmF0aW9uOiBPcGVuRmluLldpbmRvd09wdGlvbnMgfCB1bmRlZmluZWQ7XG5sZXQgZW5kcG9pbnRQcm92aWRlcjogRW5kcG9pbnRQcm92aWRlciB8IHVuZGVmaW5lZDtcbmxldCBlbmRwb2ludElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5sZXQgbWluRmFpbDogVmVyc2lvblR5cGVbXSA9IFtdO1xubGV0IG1heEZhaWw6IFZlcnNpb25UeXBlW10gPSBbXTtcbmxldCBzZXR0aW5nc0Jhc2VkV2luZG93Q29uZmlndXJhdGlvbiA9IGZhbHNlO1xubGV0IGlzTW9uaXRvcmluZ0VuYWJsZWQgPSBmYWxzZTtcbmxldCBtb25pdG9yaW5nSWQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbmxldCB2ZXJzaW9uQ2hlY2tJbnRlcnZhbEluU2Vjb25kczogbnVtYmVyO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJWZXJzaW9uUHJvdmlkZXJcIik7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgVmVyc2lvbiBQcm92aWRlci5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIHRoYXQgZ3VpZGUgaG93IHRoaXMgdmVyc2lvbiBwcm92aWRlciBiZWhhdmVzXG4gKiBAcGFyYW0gaW5pdEVuZHBvaW50UHJvdmlkZXIgVGhlIHByb3ZpZGVyIHRoYXQgYWxsb3dzIHRoZSBzZXR0aW5nIGFuZCByZXRyaWV2YWwgb2YgZGF0YSB3aXRob3V0IG5lZWRpbmcgdG8ga25vdyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQoXG5cdG9wdGlvbnM/OiBWZXJzaW9uUHJvdmlkZXJPcHRpb25zLFxuXHRpbml0RW5kcG9pbnRQcm92aWRlcj86IEVuZHBvaW50UHJvdmlkZXJcbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoaXNFbXB0eShvcHRpb25zKSkge1xuXHRcdGxvZ2dlci5pbmZvKFwiVmVyc2lvbiBwcm92aWRlciBvcHRpb25zIG5vdCBwYXNzZWRcIik7XG5cdH0gZWxzZSB7XG5cdFx0dmVyc2lvbk9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdHZlcnNpb25JbmZvLmFwcCA9IG9wdGlvbnMuYXBwVmVyc2lvbjtcblx0XHRtaW5WZXJzaW9uID0gb3B0aW9ucy5taW5WZXJzaW9uO1xuXHRcdG1heFZlcnNpb24gPSBvcHRpb25zLm1heFZlcnNpb247XG5cdFx0dmVyc2lvbldpbmRvd0NvbmZpZ3VyYXRpb24gPSBvcHRpb25zLnZlcnNpb25XaW5kb3cgYXMgT3BlbkZpbi5XaW5kb3dPcHRpb25zO1xuXHRcdGVuZHBvaW50SWQgPSBvcHRpb25zLmVuZHBvaW50SWQ7XG5cdFx0c2V0dGluZ3NCYXNlZFdpbmRvd0NvbmZpZ3VyYXRpb24gPSAhaXNFbXB0eSh2ZXJzaW9uV2luZG93Q29uZmlndXJhdGlvbik7XG5cblx0XHRpZiAoaXNJbnRlZ2VyKG9wdGlvbnMudmVyc2lvbkNoZWNrSW50ZXJ2YWxJblNlY29uZHMpKSB7XG5cdFx0XHR2ZXJzaW9uQ2hlY2tJbnRlcnZhbEluU2Vjb25kcyA9IG9wdGlvbnMudmVyc2lvbkNoZWNrSW50ZXJ2YWxJblNlY29uZHM7XG5cdFx0fVxuXG5cdFx0aWYgKGluaXRFbmRwb2ludFByb3ZpZGVyKSB7XG5cdFx0XHRpc01vbml0b3JpbmdFbmFibGVkID1cblx0XHRcdFx0IWlzRW1wdHkodmVyc2lvbkNoZWNrSW50ZXJ2YWxJblNlY29uZHMpICYmXG5cdFx0XHRcdCFpc0VtcHR5KG9wdGlvbnMuZW5kcG9pbnRJZCkgJiZcblx0XHRcdFx0aW5pdEVuZHBvaW50UHJvdmlkZXIuaGFzRW5kcG9pbnQob3B0aW9ucy5lbmRwb2ludElkKTtcblx0XHR9XG5cdFx0bG9nZ2VyLmluZm8oXCJJbml0aWFsaXplZCB3aXRoIHRoZSBmb2xsb3dpbmcgc2V0dGluZ3NcIiwgb3B0aW9ucyk7XG5cdH1cblx0ZW5kcG9pbnRQcm92aWRlciA9IGluaXRFbmRwb2ludFByb3ZpZGVyO1xufVxuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIHByb3ZpZGVyIGRvZXMgbm90IGxvb2sgdXAgYWxsIHRoZSB2ZXJzaW9uaW5nIGluZm9ybWF0aW9uIGFzIHRoaXMgY2FuXG4gKiBjb21lIGZyb20gbXVsdGlwbGUgc291cmNlcy4gSXQgZG9lcyBrbm93IHdoYXQgc291cmNlcyBpdCBzdXBwb3J0cyBhbmQgYWxsb3dzIHRoZSBwbGF0Zm9ybVxuICogdG8gZmVlZCB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZSBwcm92aWRlci5cbiAqIEBwYXJhbSB2ZXJzaW9uVHlwZSBUaGUgdHlwZSBvZiB2ZXJzaW9uIG51bWJlciB5b3Ugd2FudCB0byBzZXQgKGUuZy4gd29ya3NwYWNlKVxuICogQHBhcmFtIHZlcnNpb25OdW1iZXIgVGhlIG51bWJlciB5b3Ugd2lzaCB0byBhc3NpZ24gYWdhaW5zdCB0aGlzIHZlcnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFZlcnNpb24odmVyc2lvblR5cGU6IFZlcnNpb25UeXBlLCB2ZXJzaW9uTnVtYmVyOiBzdHJpbmcpOiB2b2lkIHtcblx0bGV0IHZlcnNpb25MYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRsZXQgc2V0VmVyc2lvbk51bWJlciA9IGZhbHNlO1xuXG5cdHN3aXRjaCAodmVyc2lvblR5cGUpIHtcblx0XHRjYXNlIFwiYXBwXCI6IHtcblx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcIllvdSBjYW5ub3Qgc2V0IHRoZSB2ZXJzaW9uIGZvciBhcHAgYXMgdGhpcyBjYW4gb25seSBiZSBzcGVjaWZpZWQgdmlhIHRoZSBzZXR0aW5ncyBwcm92aWRlZCBvbiBhcHBsaWNhdGlvbiBsYXVuY2ggaW5zaWRlIG9mIHRoZSB2ZXJzaW9uIHByb3ZpZGVyIHNldHRpbmdzLlwiXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNhc2UgXCJub3RpZmljYXRpb25DZW50ZXJcIjoge1xuXHRcdFx0dmVyc2lvbkxhYmVsID0gXCJOb3RpZmljYXRpb24gQ2VudGVyIFZlcnNpb25cIjtcblx0XHRcdHNldFZlcnNpb25OdW1iZXIgPSBpc0VtcHR5KHZlcnNpb25JbmZvLm5vdGlmaWNhdGlvbkNlbnRlcik7XG5cdFx0XHRpZiAoc2V0VmVyc2lvbk51bWJlcikge1xuXHRcdFx0XHR2ZXJzaW9uSW5mby5ub3RpZmljYXRpb25DZW50ZXIgPSB2ZXJzaW9uTnVtYmVyO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0YCR7dmVyc2lvbkxhYmVsfSBhbHJlYWR5IHNldCB0bzogJHt2ZXJzaW9uSW5mby5ub3RpZmljYXRpb25DZW50ZXJ9IHNvIHdlIGFyZSB1bmFibGUgdG8gc2V0IGl0IHRvICR7dmVyc2lvbk51bWJlcn1gXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBcInBsYXRmb3JtQ2xpZW50XCI6IHtcblx0XHRcdHZlcnNpb25MYWJlbCA9IFwiUGxhdGZvcm0gQ2xpZW50IFZlcnNpb25cIjtcblx0XHRcdHNldFZlcnNpb25OdW1iZXIgPSBpc0VtcHR5KHZlcnNpb25JbmZvLnBsYXRmb3JtQ2xpZW50KTtcblx0XHRcdGlmIChzZXRWZXJzaW9uTnVtYmVyKSB7XG5cdFx0XHRcdHZlcnNpb25JbmZvLnBsYXRmb3JtQ2xpZW50ID0gdmVyc2lvbk51bWJlcjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdGAke3ZlcnNpb25MYWJlbH0gYWxyZWFkeSBzZXQgdG86ICR7dmVyc2lvbkluZm8ucGxhdGZvcm1DbGllbnR9IHNvIHdlIGFyZSB1bmFibGUgdG8gc2V0IGl0IHRvICR7dmVyc2lvbk51bWJlcn1gXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBcInJ2bVwiOiB7XG5cdFx0XHR2ZXJzaW9uTGFiZWwgPSBcIlJWTSBWZXJzaW9uXCI7XG5cdFx0XHRzZXRWZXJzaW9uTnVtYmVyID0gaXNFbXB0eSh2ZXJzaW9uSW5mby5ydm0pO1xuXHRcdFx0aWYgKHNldFZlcnNpb25OdW1iZXIpIHtcblx0XHRcdFx0dmVyc2lvbkluZm8ucnZtID0gdmVyc2lvbk51bWJlcjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdGAke3ZlcnNpb25MYWJlbH0gYWxyZWFkeSBzZXQgdG86ICR7dmVyc2lvbkluZm8ucnZtfSBzbyB3ZSBhcmUgdW5hYmxlIHRvIHNldCBpdCB0byAke3ZlcnNpb25OdW1iZXJ9YFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNhc2UgXCJydW50aW1lXCI6IHtcblx0XHRcdHZlcnNpb25MYWJlbCA9IFwiUnVudGltZSBWZXJzaW9uXCI7XG5cdFx0XHRzZXRWZXJzaW9uTnVtYmVyID0gaXNFbXB0eSh2ZXJzaW9uSW5mby5ydW50aW1lKTtcblx0XHRcdGlmIChzZXRWZXJzaW9uTnVtYmVyKSB7XG5cdFx0XHRcdHZlcnNpb25JbmZvLnJ1bnRpbWUgPSB2ZXJzaW9uTnVtYmVyO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0YCR7dmVyc2lvbkxhYmVsfSBhbHJlYWR5IHNldCB0bzogJHt2ZXJzaW9uSW5mby5ydW50aW1lfSBzbyB3ZSBhcmUgdW5hYmxlIHRvIHNldCBpdCB0byAke3ZlcnNpb25OdW1iZXJ9YFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNhc2UgXCJ3b3Jrc3BhY2VQbGF0Zm9ybUNsaWVudFwiOiB7XG5cdFx0XHR2ZXJzaW9uTGFiZWwgPSBcIldvcmtzcGFjZSBQbGF0Zm9ybSBDbGllbnQgVmVyc2lvblwiO1xuXHRcdFx0c2V0VmVyc2lvbk51bWJlciA9IGlzRW1wdHkodmVyc2lvbkluZm8ud29ya3NwYWNlUGxhdGZvcm1DbGllbnQpO1xuXHRcdFx0aWYgKHNldFZlcnNpb25OdW1iZXIpIHtcblx0XHRcdFx0dmVyc2lvbkluZm8ud29ya3NwYWNlUGxhdGZvcm1DbGllbnQgPSB2ZXJzaW9uTnVtYmVyO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0YCR7dmVyc2lvbkxhYmVsfSBhbHJlYWR5IHNldCB0bzogJHt2ZXJzaW9uSW5mby53b3Jrc3BhY2VQbGF0Zm9ybUNsaWVudH0gc28gd2UgYXJlIHVuYWJsZSB0byBzZXQgaXQgdG8gJHt2ZXJzaW9uTnVtYmVyfWBcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRjYXNlIFwid29ya3NwYWNlXCI6IHtcblx0XHRcdHZlcnNpb25MYWJlbCA9IFwiV29ya3NwYWNlIFZlcnNpb25cIjtcblx0XHRcdHNldFZlcnNpb25OdW1iZXIgPSBpc0VtcHR5KHZlcnNpb25JbmZvLndvcmtzcGFjZSk7XG5cdFx0XHRpZiAoc2V0VmVyc2lvbk51bWJlcikge1xuXHRcdFx0XHR2ZXJzaW9uSW5mby53b3Jrc3BhY2UgPSB2ZXJzaW9uTnVtYmVyO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFx0YCR7dmVyc2lvbkxhYmVsfSBhbHJlYWR5IHNldCB0bzogJHt2ZXJzaW9uSW5mby53b3Jrc3BhY2V9IHNvIHdlIGFyZSB1bmFibGUgdG8gc2V0IGl0IHRvICR7dmVyc2lvbk51bWJlcn1gXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBcIndvcmtzcGFjZUNsaWVudFwiOiB7XG5cdFx0XHR2ZXJzaW9uTGFiZWwgPSBcIldvcmtzcGFjZSBDbGllbnQgVmVyc2lvblwiO1xuXHRcdFx0c2V0VmVyc2lvbk51bWJlciA9IGlzRW1wdHkodmVyc2lvbkluZm8ud29ya3NwYWNlQ2xpZW50KTtcblx0XHRcdGlmIChzZXRWZXJzaW9uTnVtYmVyKSB7XG5cdFx0XHRcdHZlcnNpb25JbmZvLndvcmtzcGFjZUNsaWVudCA9IHZlcnNpb25OdW1iZXI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XHRgJHt2ZXJzaW9uTGFiZWx9IGFscmVhZHkgc2V0IHRvOiAke3ZlcnNpb25JbmZvLndvcmtzcGFjZUNsaWVudH0gc28gd2UgYXJlIHVuYWJsZSB0byBzZXQgaXQgdG8gJHt2ZXJzaW9uTnVtYmVyfWBcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdGlmIChzZXRWZXJzaW9uTnVtYmVyKSB7XG5cdFx0bG9nZ2VyLmluZm8oYCR7dmVyc2lvbkxhYmVsfSBoYXMgYmVlbiBzZXQgdG8gJHt2ZXJzaW9uTnVtYmVyfWApO1xuXHR9XG59XG5cbi8qKlxuICogVmVyc2lvbiBpbmZvcm1hdGlvbiBjYW4gYmUgc2V0IGFnYWluc3QgdGhlIHZlcnNpb24gcHJvdmlkZXIgYW5kIGVhc2lseSByZXRyaWV2ZWQgdXNpbmcgdGhpcyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFZlcnNpb25JbmZvIC0gYW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGlzIHBsYXRmb3JtIGFuZCBpdCdzIGRlcGVuZGVuY2llc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VmVyc2lvbkluZm8oKTogUHJvbWlzZTxWZXJzaW9uSW5mbz4ge1xuXHRyZXR1cm4gdmVyc2lvbkluZm87XG59XG5cbi8qKlxuICogSW5zcGVjdCB0aGUgcGxhdGZvcm0gYW5kIHBsYXRmb3JtIHJlcXVpcmVtZW50cyBhbmQgcmV0dXJuIGEgc3RhdHVzIHRvIGluZGljYXRlIHZlcnNpb24gc3RhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmVyc2lvbiBzdGF0dXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRWZXJzaW9uU3RhdHVzKCk6IFByb21pc2U8VmVyc2lvblN0YXR1cz4ge1xuXHRpZiAoaXNFbXB0eShtaW5WZXJzaW9uKSkge1xuXHRcdGxvZ2dlci5pbmZvKFwiTm8gbWluaW11bSB2ZXJzaW9ucyBoYXZlIGJlZW4gc3BlY2lmaWVkLlwiKTtcblx0fSBlbHNlIHtcblx0XHRjb25zdCBjaGVja3MgPSBPYmplY3Qua2V5cyhtaW5WZXJzaW9uKSBhcyBWZXJzaW9uVHlwZVtdO1xuXG5cdFx0Zm9yIChjb25zdCBjaGVjayBvZiBjaGVja3MpIHtcblx0XHRcdGNvbnN0IHZlcnNpb25Ub0NoZWNrID0gY2hlY2s7XG5cdFx0XHRpZiAoIWlzRW1wdHkodmVyc2lvbkluZm9bdmVyc2lvblRvQ2hlY2tdKSkge1xuXHRcdFx0XHRjb25zdCBjdXJyZW50VmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdmVyc2lvbkluZm9bdmVyc2lvblRvQ2hlY2tdO1xuXHRcdFx0XHRjb25zdCBsaW1pdFZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9IG1pblZlcnNpb25bdmVyc2lvblRvQ2hlY2tdO1xuXHRcdFx0XHRjb21wYXJlVmVyc2lvbih2ZXJzaW9uVG9DaGVjaywgdHJ1ZSwgY3VycmVudFZlcnNpb24sIGxpbWl0VmVyc2lvbik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKGlzRW1wdHkobWF4VmVyc2lvbikpIHtcblx0XHRsb2dnZXIuaW5mbyhcIk5vIG1heGltdW0gdmVyc2lvbnMgaGF2ZSBiZWVuIHNwZWNpZmllZC5cIik7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgY2hlY2tzID0gT2JqZWN0LmtleXMobWF4VmVyc2lvbikgYXMgVmVyc2lvblR5cGVbXTtcblxuXHRcdGZvciAoY29uc3QgY2hlY2sgb2YgY2hlY2tzKSB7XG5cdFx0XHRjb25zdCB2ZXJzaW9uVG9DaGVjayA9IGNoZWNrO1xuXHRcdFx0aWYgKCFpc0VtcHR5KHZlcnNpb25JbmZvW3ZlcnNpb25Ub0NoZWNrXSkpIHtcblx0XHRcdFx0Y29uc3QgY3VycmVudFZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9IHZlcnNpb25JbmZvW3ZlcnNpb25Ub0NoZWNrXTtcblx0XHRcdFx0Y29uc3QgbGltaXRWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBtYXhWZXJzaW9uW3ZlcnNpb25Ub0NoZWNrXTtcblx0XHRcdFx0Y29tcGFyZVZlcnNpb24odmVyc2lvblRvQ2hlY2ssIGZhbHNlLCBjdXJyZW50VmVyc2lvbiwgbGltaXRWZXJzaW9uKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoIWlzRW1wdHkoZW5kcG9pbnRJZCkgJiYgIWlzRW1wdHkoZW5kcG9pbnRQcm92aWRlcikgJiYgZW5kcG9pbnRQcm92aWRlci5oYXNFbmRwb2ludChlbmRwb2ludElkKSkge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCByZXNwb25zZSA9IGF3YWl0IGVuZHBvaW50UHJvdmlkZXIucmVxdWVzdFJlc3BvbnNlPFZlcnNpb25SZXF1ZXN0LCBWZXJzaW9uUmVzcG9uc2U+KFxuXHRcdFx0XHRlbmRwb2ludElkLFxuXHRcdFx0XHRnZXRWZXJzaW9uU3RhdHVzRGF0YSgpXG5cdFx0XHQpO1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJSZXNwb25zZSByZWNlaXZlZCBmcm9tIHZlcnNpb24gZW5kcG9pbnQ6IFwiLCByZXNwb25zZSk7XG5cdFx0XHRjb25zdCBzdGF0dXMgPSByZXNwb25zZT8uc3RhdHVzO1xuXHRcdFx0aWYgKCFpc0VtcHR5KHN0YXR1cykpIHtcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoc3RhdHVzLm1pbkZhaWwpKSB7XG5cdFx0XHRcdFx0bWluRmFpbCA9IHN0YXR1cz8ubWluRmFpbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShzdGF0dXMubWF4RmFpbCkpIHtcblx0XHRcdFx0XHRtYXhGYWlsID0gc3RhdHVzLm1heEZhaWw7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChzdGF0dXM/Lm1pblZlcnNpb24pIHtcblx0XHRcdFx0bWluVmVyc2lvbiA9IHN0YXR1cy5taW5WZXJzaW9uO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHN0YXR1cz8ubWF4VmVyc2lvbikge1xuXHRcdFx0XHRtYXhWZXJzaW9uID0gc3RhdHVzLm1heFZlcnNpb247XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB3aW5kb3dPcHRpb25zID0gcmVzcG9uc2U/LndpbmRvd09wdGlvbnM7XG5cdFx0XHRpZiAoIWlzRW1wdHkod2luZG93T3B0aW9ucykpIHtcblx0XHRcdFx0c2V0dGluZ3NCYXNlZFdpbmRvd0NvbmZpZ3VyYXRpb24gPSBmYWxzZTtcblx0XHRcdFx0dmVyc2lvbldpbmRvd0NvbmZpZ3VyYXRpb24gPSB2YWxpZGF0ZVZlcnNpb25XaW5kb3cod2luZG93T3B0aW9ucyk7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKFwiRmV0Y2hlZCB2ZXJzaW9uIHdpbmRvdyBjb25maWd1cmF0aW9uIGZyb20gZW5kcG9pbnQ6XCIsIGVuZHBvaW50SWQpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRsb2dnZXIuZXJyb3IoXCJFcnJvciB3aGlsZSBjaGVja2luZyBmb3IgdmVyc2lvbiBzdGF0dXMuXCIsIGVycm9yKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAodmVyc2lvbk9wdGlvbnMpIHtcblx0XHRzZXR0aW5nc0Jhc2VkV2luZG93Q29uZmlndXJhdGlvbiA9IHRydWU7XG5cdFx0dmVyc2lvbldpbmRvd0NvbmZpZ3VyYXRpb24gPSB2YWxpZGF0ZVZlcnNpb25XaW5kb3codmVyc2lvbk9wdGlvbnMudmVyc2lvbldpbmRvdyBhcyBPcGVuRmluLldpbmRvd09wdGlvbnMpO1xuXHR9XG5cblx0bGV0IHN0YXR1czogVmVyc2lvblN0YXR1cztcblx0aWYgKG1pbkZhaWwuaW5jbHVkZXMoXCJhcHBcIikpIHtcblx0XHRzdGF0dXMgPSBcInVwZ3JhZGVhYmxlXCI7XG5cdH0gZWxzZSB7XG5cdFx0c3RhdHVzID0gbWluRmFpbC5sZW5ndGggPT09IDAgJiYgbWF4RmFpbC5sZW5ndGggPT09IDAgPyBcImNvbXBhdGlibGVcIiA6IFwiaW5jb21wYXRpYmxlXCI7XG5cdH1cblxuXHRsb2dnZXIuaW5mbyhcIkN1cnJlbnQgdmVyc2lvbiBzdGF0dXM6IFwiLCBzdGF0dXMpO1xuXHRyZXR1cm4gc3RhdHVzO1xufVxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGNoZWNrcyBhIHBhc3NlZCBzdGF0dXMgYW5kIHJlYWN0cyBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIG9mIHRoZSB2ZXJzaW9uIHByb3ZpZGVyXG4gKiBJZiB0aGUgc3RhdHVzIGlzIG5vdCB2YWxpZCB0aGVuIGl0IHdpbGwgbmVlZCB0byBiZSBtYW5hZ2VkIGFuZCB0cnVlIHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBPdGhlcndpc2UgdGhlIHBsYXRmb3JtIGlzIGluIGEgdmFsaWQgc3RhdGUgdmVyc2lvbiB3aXNlIGFuZCBmYWxzZSB3aWxsIGJlIHJldHVybmVkIGFzIG5vdGhpbmdcbiAqIG5lZWRlZCB0byBiZSBtYW5hZ2VkLlxuICogQHBhcmFtIHN0YXR1cyBUaGUgc3RhdHVzIHRoYXQgY2FtZSBmcm9tIHRoZSBnZXRWZXJzaW9uU3RhdHVzIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBzdGF0dXMgaW5kaWNhdGVzIHRoYXQgaXQgaXMgbm90IGNvbXBhdGlibGUgYW5kIHRoYXQgYW4gYWN0aW9uIHdhcyBuZWVkZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYW5hZ2VWZXJzaW9uU3RhdHVzKHN0YXR1czogVmVyc2lvblN0YXR1cyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRpZiAoc3RhdHVzICE9PSBcImNvbXBhdGlibGVcIikge1xuXHRcdGNvbnN0IHdpbmRvd09wdGlvbnMgPSB2YWxpZGF0ZVZlcnNpb25XaW5kb3codmVyc2lvbldpbmRvd0NvbmZpZ3VyYXRpb24pO1xuXHRcdGlmIChpc0VtcHR5KHdpbmRvd09wdGlvbnMpKSB7XG5cdFx0XHRsb2dnZXIud2Fybihcblx0XHRcdFx0XCJUaGUgc3RhdHVzIG9mIHRoZSBwbGF0Zm9ybSB2ZXJzaW9uIGlzIGluIGEgbm9uIGNvbXBhdGlibGUgc3RhdGUgYnV0IHdlIGRvIG5vdCBoYXZlIGEgd2luZG93IHRvIGxhdW5jaCB0byByZWFjdCB0byB0aGlzIHN0YXRlLlwiXG5cdFx0XHQpO1xuXHRcdFx0Ly8gd2Ugc3RpbGwgcmV0dXJuIHRoYXQgdGhlIHN0YXRlIGhhZCB0byBiZSBtYW5hZ2VkIGV2ZW4gdGhvdWdoIHdlIHdlcmUgdW5hYmxlIHRvIGRvIHNvIGFzIHdlIGRvIG5vdCB3YW50IHRoZSBwbGF0Zm9ybSB0byBjb250aW51ZSBydW5uaW5nXG5cdFx0XHQvLyBvciBwb2xsaW5nIG9mIHRoZSBlbmRwb2ludCB0byBjb250aW51ZSBpZiBhbiBhY3Rpb24gdG8gZXhlY3V0ZSBpcyBub3QgYmVpbmcgcmV0dXJuZWQuXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0Y29uc3Qgb3Blbldhcm5pbmdXaW5kb3cgPSBhd2FpdCBmaW4uV2luZG93LmNyZWF0ZSh3aW5kb3dPcHRpb25zKTtcblx0XHRpZiAod2luZG93T3B0aW9ucy5hdXRvU2hvdykge1xuXHRcdFx0YXdhaXQgb3Blbldhcm5pbmdXaW5kb3cuc2V0QXNGb3JlZ3JvdW5kKCk7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBJZiBjb25maWd1cmVkIHZpYSBWZXJzaW9uIFByb3ZpZGVyIFNldHRpbmdzLCB0aGlzIG1ldGhvZCB3aWxsIHN0YXJ0IG1vbml0b3JpbmcgdG8gc2VlIGlmIGFuIHVwZ3JhZGUgaXMgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gTW9uaXRvclZlcnNpb25TdGF0dXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChpc01vbml0b3JpbmdFbmFibGVkKSB7XG5cdFx0aWYgKGlzRW1wdHkobW9uaXRvcmluZ0lkKSkge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJNb25pdG9yaW5nIGlzIGVuYWJsZWQgYW5kIG5vdCBydW5uaW5nLiBTdGFydGluZyB0aGUgbW9uaXRvcmluZyBwcm9jZXNzLlwiKTtcblx0XHRcdGF3YWl0IHN0YXJ0TW9uaXRvcmluZygpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIk1vbml0b3JpbmcgaGFzIGJlZW4gcmVxdWVzdGVkIGJ1dCBpcyBhbHJlYWR5IHJ1bm5pbmcuXCIpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRsb2dnZXIud2FybihcIk1vbml0b3JpbmcgaXMgbm90IHNldHVwIHZpYSB0aGUgdmVyc2lvbiBwcm92aWRlciBzZXR0aW5ncy5cIik7XG5cdH1cbn1cblxuLyoqXG4gKiBTdGFydCBtb25pdG9yaW5nIHRoZSB2ZXJzaW9ucy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc3RhcnRNb25pdG9yaW5nKCk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoIWlzRW1wdHkobW9uaXRvcmluZ0lkKSkge1xuXHRcdGNsZWFyVGltZW91dChtb25pdG9yaW5nSWQpO1xuXHRcdG1vbml0b3JpbmdJZCA9IHVuZGVmaW5lZDtcblx0fVxuXHRtb25pdG9yaW5nSWQgPSB3aW5kb3cuc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG5cdFx0Y29uc3Qgc3RhdHVzID0gYXdhaXQgZ2V0VmVyc2lvblN0YXR1cygpO1xuXHRcdGNvbnN0IG5lZWRlZE1hbmFnZW1lbnQgPSBhd2FpdCBtYW5hZ2VWZXJzaW9uU3RhdHVzKHN0YXR1cyk7XG5cdFx0aWYgKCFuZWVkZWRNYW5hZ2VtZW50KSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhgVmVyc2lvbiBzdGF0dXMgaXMgZ29vZDogJHtzdGF0dXN9LiBDb250aW51aW5nIG1vbml0b3JpbmcuYCk7XG5cdFx0XHRhd2FpdCBzdGFydE1vbml0b3JpbmcoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bG9nZ2VyLmluZm8oYFZlcnNpb24gc3RhdHVzIG5lZWRlZCBtYW5hZ2VtZW50OiAke3N0YXR1c30uIFN0b3BwaW5nIG1vbml0b3JpbmcuYCk7XG5cdFx0fVxuXHR9LCB2ZXJzaW9uQ2hlY2tJbnRlcnZhbEluU2Vjb25kcyAqIDEwMDApO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoZSB2ZXJzaW9uIHdpbmRvdyBvcHRpb25zLlxuICogQHBhcmFtIHdpbmRvd09wdGlvbnNUb1ZhbGlkYXRlIFRoZSB3aW5kb3cgb3B0aW9ucyB0byB2YWxpZGF0ZS5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZGF0ZSB3aW5kb3cgb3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVWZXJzaW9uV2luZG93KFxuXHR3aW5kb3dPcHRpb25zVG9WYWxpZGF0ZTogT3BlbkZpbi5XaW5kb3dPcHRpb25zIHwgdW5kZWZpbmVkXG4pOiBPcGVuRmluLldpbmRvd09wdGlvbnMgfCB1bmRlZmluZWQge1xuXHRpZiAoaXNFbXB0eSh3aW5kb3dPcHRpb25zVG9WYWxpZGF0ZSkpIHtcblx0XHRsb2dnZXIuaW5mbyhcIk5vIHZlcnNpb24gd2luZG93IGNvbmZpZ3VyYXRpb24gcHJvdmlkZWQuXCIpO1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRjb25zdCB2YWxpZGF0ZWRXaW5kb3dPcHRpb25zID0geyAuLi53aW5kb3dPcHRpb25zVG9WYWxpZGF0ZSB9O1xuXG5cdGlmIChpc0VtcHR5KHZhbGlkYXRlZFdpbmRvd09wdGlvbnMudXJsKSkge1xuXHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFwiQSB2ZXJzaW9uIHdpbmRvdyBjb25maWd1cmF0aW9uIHdhcyBzZXQgYnV0IGEgdXJsIHdhcyBub3QgcHJvdmlkZWQuIEEgd2luZG93IGNhbm5vdCBiZSBsYXVuY2hlZC5cIlxuXHRcdCk7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHRpZiAoaXNFbXB0eSh2YWxpZGF0ZWRXaW5kb3dPcHRpb25zLm5hbWUpKSB7XG5cdFx0dmFsaWRhdGVkV2luZG93T3B0aW9ucy5uYW1lID0gYCR7ZmluLm1lLmlkZW50aXR5LnV1aWR9LXZlcnNpb25pbmdgO1xuXHR9XG5cblx0aWYgKHNldHRpbmdzQmFzZWRXaW5kb3dDb25maWd1cmF0aW9uKSB7XG5cdFx0aWYgKCFpc0VtcHR5KHZhbGlkYXRlZFdpbmRvd09wdGlvbnMuY3VzdG9tRGF0YSkpIHtcblx0XHRcdGxvZ2dlci5pbmZvKFwiRW5yaWNoaW5nIGN1c3RvbURhdGEgcHJvdmlkZWQgYnkgdmVyc2lvbiB3aW5kb3cgY29uZmlndXJhdGlvbi5cIik7XG5cdFx0XHR2YWxpZGF0ZWRXaW5kb3dPcHRpb25zLmN1c3RvbURhdGEgPSB7XG5cdFx0XHRcdC4uLnZhbGlkYXRlZFdpbmRvd09wdGlvbnMuY3VzdG9tRGF0YSxcblx0XHRcdFx0Li4uZ2V0VmVyc2lvblN0YXR1c0RhdGEoKVxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJTZXR0aW5nIGN1c3RvbURhdGEgZm9yIHZlcnNpb24gd2luZG93IGNvbmZpZ3VyYXRpb24uXCIpO1xuXHRcdFx0dmFsaWRhdGVkV2luZG93T3B0aW9ucy5jdXN0b21EYXRhID0gZ2V0VmVyc2lvblN0YXR1c0RhdGEoKTtcblx0XHR9XG5cdH1cblxuXHRsb2dnZXIuaW5mbyhcIlJldHVybmluZyB2ZXJzaW9uIHdpbmRvdyBjb25maWd1cmF0aW9uLlwiKTtcblx0cmV0dXJuIHZhbGlkYXRlZFdpbmRvd09wdGlvbnM7XG59XG5cbi8qKlxuICogR2V0IHRoZSB2ZXJzaW9uIGRhdGEgYXMgYW4gb2JqZWN0LlxuICogQHJldHVybnMgVGhlIGNvbWJpbmVkIHZlcnNpb24gZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0VmVyc2lvblN0YXR1c0RhdGEoKTogVmVyc2lvblN0YXR1c0RhdGEge1xuXHRyZXR1cm4geyBtaW5WZXJzaW9uLCBtYXhWZXJzaW9uLCB2ZXJzaW9uSW5mbywgbWluRmFpbCwgbWF4RmFpbCB9O1xufVxuXG4vKipcbiAqIENoZWNrIHRoZSB2ZXJzaW9uIHRvIHNlZSBpZiBpdCBpcyBpbiByYW5nZS5cbiAqIEBwYXJhbSB2ZXJzaW9uVG9DaGVjayBUaGUgdmVyc2lvbiB0byBjb21wYXJlLlxuICogQHBhcmFtIGlzTWluTGltaXQgSXMgdGhpcyBhIG1pbmltdW0gbGltaXQgdmVyc2lvbiBjaGVjay5cbiAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIHZlcnNpb24gYmVpbmcgY2hlY2tlZC5cbiAqIEBwYXJhbSBiYXNlVmVyc2lvbiBUaGUgYmFzZSB2ZXJzaW9uIHRvIGNvbXBhcmUgdG8uXG4gKiBAcGFyYW0gbGltaXRWZXJzaW9uIFRoZSBsaW1pdCBvZiB0aGUgdmVyc2lvbiBiZWluZyBjaGVja2VkLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmVyc2lvbiBpcyBvdXQgb2YgcmFuZ2UuXG4gKi9cbmZ1bmN0aW9uIGlzR3JlYXRlclRoYW5Pckxlc3NUaGFuKFxuXHR2ZXJzaW9uVG9DaGVjazogc3RyaW5nLFxuXHRpc01pbkxpbWl0OiBib29sZWFuLFxuXHR0eXBlOiBzdHJpbmcsXG5cdGJhc2VWZXJzaW9uOiBzdHJpbmcsXG5cdGxpbWl0VmVyc2lvbjogc3RyaW5nXG4pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgbWF4T3JNaW5MYWJlbCA9IGlzTWluTGltaXQgPyBcIm1pbmltdW1cIiA6IFwibWF4aW11bVwiO1xuXHRpZiAoTnVtYmVyLnBhcnNlSW50KGJhc2VWZXJzaW9uLCAxMCkgPiBOdW1iZXIucGFyc2VJbnQobGltaXRWZXJzaW9uLCAxMCkpIHtcblx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdGBGaW5pc2hlZCBjaGVjayBmb3IgJHt2ZXJzaW9uVG9DaGVja30uIEN1cnJlbnQgJHt0eXBlfSB2ZXJzaW9uOiAke2Jhc2VWZXJzaW9ufSBpcyBncmVhdGVyIHRoYW4gJHttYXhPck1pbkxhYmVsfSAke3R5cGV9IHZlcnNpb246ICR7bGltaXRWZXJzaW9ufWBcblx0XHQpO1xuXHRcdGlmIChpc01pbkxpbWl0KSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9IGVsc2UgaWYgKE51bWJlci5wYXJzZUludChiYXNlVmVyc2lvbiwgMTApIDwgTnVtYmVyLnBhcnNlSW50KGxpbWl0VmVyc2lvbiwgMTApKSB7XG5cdFx0bG9nZ2VyLmluZm8oXG5cdFx0XHRgRmluaXNoZWQgY2hlY2sgZm9yICR7dmVyc2lvblRvQ2hlY2t9LiBDdXJyZW50ICR7dHlwZX0gdmVyc2lvbjogJHtiYXNlVmVyc2lvbn0gaXMgbGVzcyB0aGFuICR7bWF4T3JNaW5MYWJlbH0gJHt0eXBlfSB2ZXJzaW9uOiAke2xpbWl0VmVyc2lvbn1gXG5cdFx0KTtcblx0XHRpZiAoaXNNaW5MaW1pdCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxufVxuXG4vKipcbiAqIENvbXBhcmUgdGhlIHZlcnNpb25zLlxuICogQHBhcmFtIHZlcnNpb25Ub0NoZWNrIFRoZSB2ZXJzaW9uIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0gaXNNaW5MaW1pdCBJcyB0aGlzIGEgbWluaW11bSBsaW1pdCB2ZXJzaW9uIGNoZWNrLlxuICogQHBhcmFtIGN1cnJlbnRWZXJzaW9uIFRoZSBjdXJyZW50IHZlcnNpb24gdG8gY29tcGFyZSB0by5cbiAqIEBwYXJhbSBsaW1pdFZlcnNpb24gVGhlIGxpbWl0IG9mIHRoZSB2ZXJzaW9uIGJlaW5nIGNoZWNrZWQuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2ZXJzaW9uIGlzIG91dCBvZiByYW5nZS5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZVZlcnNpb24oXG5cdHZlcnNpb25Ub0NoZWNrOiBWZXJzaW9uVHlwZSxcblx0aXNNaW5MaW1pdDogYm9vbGVhbixcblx0Y3VycmVudFZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0bGltaXRWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRpZiAoaXNFbXB0eShjdXJyZW50VmVyc2lvbikgfHwgaXNFbXB0eShsaW1pdFZlcnNpb24pKSB7XG5cdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRgQSBjaGVjayB3YXMgcmVxdWVzdGVkIGZvciAke3ZlcnNpb25Ub0NoZWNrfSBidXQgZWl0aGVyIHRoZSBiYXNlIHZlcnNpb24gb3IgbGltaXQgdmVyc2lvbiB3YXMgbm90IHNwZWNpZmllZC5gXG5cdFx0KTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRjb25zdCBjdXJyZW50VmVyc2lvbkxpc3QgPSBjdXJyZW50VmVyc2lvbi5zcGxpdChcIi5cIik7XG5cdGNvbnN0IGxpbWl0VmVyc2lvbkxpc3QgPSBsaW1pdFZlcnNpb24uc3BsaXQoXCIuXCIpO1xuXG5cdGNvbnN0IG1heE9yTWluTGltaXQgPSBpc01pbkxpbWl0ID8gXCJtaW5pbXVtXCIgOiBcIm1heGltdW1cIjtcblxuXHRpZiAobGltaXRWZXJzaW9uTGlzdC5sZW5ndGggIT09IGN1cnJlbnRWZXJzaW9uTGlzdC5sZW5ndGgpIHtcblx0XHRsb2dnZXIud2Fybihcblx0XHRcdGBBIGN1cnJlbnQgdmVyc2lvbiAke2N1cnJlbnRWZXJzaW9ufSBhbmQgJHttYXhPck1pbkxpbWl0fSB2ZXJzaW9uICR7bGltaXRWZXJzaW9ufSBmb3IgJHt2ZXJzaW9uVG9DaGVja30gd2FzIHNwZWNpZmllZCBidXQgYm90aCBuZWVkIHRvIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGRpZ2l0cy5gXG5cdFx0KTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGNvbnN0IHZlcnNpb25QYXJ0cyA9IFtcIk1ham9yXCIsIFwiTWlub3JcIiwgXCJQYXRjaFwiLCBcIkJ1aWxkXCJdO1xuXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgY3VycmVudFZlcnNpb24ubGVuZ3RoOyBpKyspIHtcblx0XHRjb25zdCBpc1ZhbGlkID0gaXNHcmVhdGVyVGhhbk9yTGVzc1RoYW4oXG5cdFx0XHR2ZXJzaW9uVG9DaGVjayxcblx0XHRcdGlzTWluTGltaXQsXG5cdFx0XHR2ZXJzaW9uUGFydHNbaV0sXG5cdFx0XHRjdXJyZW50VmVyc2lvbkxpc3RbaV0sXG5cdFx0XHRsaW1pdFZlcnNpb25MaXN0W2ldXG5cdFx0KTtcblxuXHRcdGlmICghaXNFbXB0eShpc1ZhbGlkKSkge1xuXHRcdFx0aWYgKCFpc1ZhbGlkKSB7XG5cdFx0XHRcdGlmIChpc01pbkxpbWl0KSB7XG5cdFx0XHRcdFx0bWluRmFpbC5wdXNoKHZlcnNpb25Ub0NoZWNrKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRtYXhGYWlsLnB1c2godmVyc2lvblRvQ2hlY2spO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gaXNWYWxpZDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdHJ1ZTtcbn1cbiIsImltcG9ydCB7XG5cdERvY2ssXG5cdERvY2tCdXR0b25OYW1lcyxcblx0dHlwZSBDdXN0b21BY3Rpb25TcGVjaWZpZXIsXG5cdHR5cGUgQ3VzdG9tQnV0dG9uQ29uZmlnLFxuXHR0eXBlIERvY2tCdXR0b24sXG5cdHR5cGUgRG9ja1Byb3ZpZGVyLFxuXHR0eXBlIERvY2tQcm92aWRlclJlZ2lzdHJhdGlvblxufSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlXCI7XG5pbXBvcnQgeyBnZXRDdXJyZW50U3luYywgdHlwZSBXb3Jrc3BhY2VQbGF0Zm9ybU1vZHVsZSB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2UtcGxhdGZvcm1cIjtcbmltcG9ydCB7IGNoZWNrQ29uZGl0aW9ucyB9IGZyb20gXCJ3b3Jrc3BhY2UtcGxhdGZvcm0tc3RhcnRlci9jb25kaXRpb25zXCI7XG5pbXBvcnQgeyBQTEFURk9STV9BQ1RJT05fSURTIH0gZnJvbSBcIi4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEFwcCwgZ2V0QXBwc0J5VGFnIH0gZnJvbSBcIi4uL2FwcHNcIjtcbmltcG9ydCB7IHN1YnNjcmliZUxpZmVjeWNsZUV2ZW50LCB1bnN1YnNjcmliZUxpZmVjeWNsZUV2ZW50IH0gZnJvbSBcIi4uL2xpZmVjeWNsZVwiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIi4uL2xvZ2dlci1wcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgeyBQbGF0Zm9ybUFwcCB9IGZyb20gXCIuLi9zaGFwZXMvYXBwLXNoYXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBCb290c3RyYXBPcHRpb25zIH0gZnJvbSBcIi4uL3NoYXBlcy9ib290c3RyYXAtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdERvY2tCdXR0b25BY3Rpb24sXG5cdERvY2tCdXR0b25BcHAsXG5cdERvY2tCdXR0b25BcHBzQnlUYWcsXG5cdERvY2tCdXR0b25Ecm9wZG93bixcblx0RG9ja1Byb3ZpZGVyT3B0aW9uc1xufSBmcm9tIFwiLi4vc2hhcGVzL2RvY2stc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yU2NoZW1lTW9kZSB9IGZyb20gXCIuLi9zaGFwZXMvdGhlbWUtc2hhcGVzXCI7XG5pbXBvcnQgeyBnZXRDdXJyZW50Q29sb3JTY2hlbWVNb2RlLCBnZXRDdXJyZW50SWNvbkZvbGRlciB9IGZyb20gXCIuLi90aGVtZXNcIjtcbmltcG9ydCB7IGlzRW1wdHksIGlzU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiRG9ja1wiKTtcblxubGV0IHJlZ2lzdHJhdGlvbkluZm86IERvY2tQcm92aWRlclJlZ2lzdHJhdGlvbiB8IHVuZGVmaW5lZDtcbmxldCBkb2NrUHJvdmlkZXJPcHRpb25zOiBEb2NrUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xubGV0IHJlZ2lzdGVyZWRCb290c3RyYXBPcHRpb25zOiBCb290c3RyYXBPcHRpb25zIHwgdW5kZWZpbmVkO1xubGV0IHRoZW1lQ2hhbmdlZFN1YnNjcmlwdGlvbklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5sZXQgYXBwc0NoYW5nZWRTdWJzY3JpcHRpb25JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xubGV0IHJlZ2lzdGVyZWRCdXR0b25zOiBEb2NrQnV0dG9uW107XG5cbi8qKlxuICogUmVnaXN0ZXIgdGhlIGRvY2sgY29tcG9uZW50LlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGRvY2sgcHJvdmlkZXIgb3B0aW9ucy5cbiAqIEBwYXJhbSBib290c3RyYXBPcHRpb25zIFRoZSBib290c3RyYXAgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBtZXRhIGluZm8gZnJvbSB0aGUgcmVnaXN0cmF0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXIoXG5cdG9wdGlvbnM6IERvY2tQcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQsXG5cdGJvb3RzdHJhcE9wdGlvbnM/OiBCb290c3RyYXBPcHRpb25zXG4pOiBQcm9taXNlPERvY2tQcm92aWRlclJlZ2lzdHJhdGlvbiB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoIXJlZ2lzdHJhdGlvbkluZm8gJiYgb3B0aW9ucykge1xuXHRcdGRvY2tQcm92aWRlck9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdHJlZ2lzdGVyZWRCb290c3RyYXBPcHRpb25zID0gYm9vdHN0cmFwT3B0aW9ucztcblxuXHRcdGNvbnN0IGJ1dHRvbnMgPSBhd2FpdCBidWlsZEJ1dHRvbnMoKTtcblx0XHRsb2dnZXIuaW5mbyhcIkRvY2sgcmVnaXN0ZXIgYWJvdXQgdG8gYmUgY2FsbGVkLlwiKTtcblxuXHRcdGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IGJ1aWxkRG9ja1Byb3ZpZGVyKGJ1dHRvbnMpO1xuXG5cdFx0aWYgKHJlZ2lzdHJhdGlvbikge1xuXHRcdFx0cmVnaXN0cmF0aW9uSW5mbyA9IGF3YWl0IERvY2sucmVnaXN0ZXIocmVnaXN0cmF0aW9uKTtcblxuXHRcdFx0bG9nZ2VyLmluZm8oXCJWZXJzaW9uOlwiLCByZWdpc3RyYXRpb25JbmZvKTtcblx0XHRcdGxvZ2dlci5pbmZvKFwiRG9jayBwcm92aWRlciBpbml0aWFsaXplZFwiKTtcblxuXHRcdFx0dGhlbWVDaGFuZ2VkU3Vic2NyaXB0aW9uSWQgPSBzdWJzY3JpYmVMaWZlY3ljbGVFdmVudChcInRoZW1lLWNoYW5nZWRcIiwgYXN5bmMgKCkgPT4gcmVmcmVzaERvY2soKSk7XG5cdFx0XHRhcHBzQ2hhbmdlZFN1YnNjcmlwdGlvbklkID0gc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQoXCJhcHBzLWNoYW5nZWRcIiwgYXN5bmMgKCkgPT4gcmVmcmVzaERvY2soKSk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHJlZ2lzdHJhdGlvbkluZm87XG59XG5cbi8qKlxuICogRGVyZWdpc3RlciB0aGUgZG9jayBjb21wb25lbnQuXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVyZWdpc3RlcigpOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKHJlZ2lzdHJhdGlvbkluZm8pIHtcblx0XHRpZiAodGhlbWVDaGFuZ2VkU3Vic2NyaXB0aW9uSWQpIHtcblx0XHRcdHVuc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQodGhlbWVDaGFuZ2VkU3Vic2NyaXB0aW9uSWQsIFwidGhlbWUtY2hhbmdlZFwiKTtcblx0XHR9XG5cdFx0dGhlbWVDaGFuZ2VkU3Vic2NyaXB0aW9uSWQgPSB1bmRlZmluZWQ7XG5cdFx0aWYgKGFwcHNDaGFuZ2VkU3Vic2NyaXB0aW9uSWQpIHtcblx0XHRcdHVuc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQoYXBwc0NoYW5nZWRTdWJzY3JpcHRpb25JZCwgXCJhcHBzLWNoYW5nZWRcIik7XG5cdFx0fVxuXHRcdGFwcHNDaGFuZ2VkU3Vic2NyaXB0aW9uSWQgPSB1bmRlZmluZWQ7XG5cdFx0cmVnaXN0cmF0aW9uSW5mbyA9IHVuZGVmaW5lZDtcblx0XHRkb2NrUHJvdmlkZXJPcHRpb25zID0gdW5kZWZpbmVkO1xuXHRcdGxvZ2dlci5pbmZvKFwiRG9jayBkZXJlZ2lzdGVyIGFib3V0IHRvIGJlIGNhbGxlZC5cIik7XG5cdFx0cmV0dXJuIERvY2suZGVyZWdpc3RlcigpO1xuXHR9XG5cdGxvZ2dlci53YXJuKFwiVW5hYmxlIHRvIGRlcmVnaXN0ZXIgZG9jayBhcyB0aGVyZSBpcyBhbiBpbmRpY2F0aW9uIGl0IHdhcyBuZXZlciByZWdpc3RlcmVkXCIpO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBkb2NrIHJlZ2lzdHJhdGlvbi5cbiAqIEBwYXJhbSBidXR0b25zIFRoZSBidXR0b25zIHRvIGRpc3BsYXkgb24gdGhlIGRvY2suXG4gKiBAcmV0dXJucyBUaGUgZG9jayBwcm92aWRlciBvcHRpb25zLlxuICovXG5hc3luYyBmdW5jdGlvbiBidWlsZERvY2tQcm92aWRlcihidXR0b25zOiBEb2NrQnV0dG9uW10pOiBQcm9taXNlPERvY2tQcm92aWRlciB8IHVuZGVmaW5lZD4ge1xuXHRpZiAoZG9ja1Byb3ZpZGVyT3B0aW9ucykge1xuXHRcdHJlZ2lzdGVyZWRCdXR0b25zID0gYnV0dG9ucztcblxuXHRcdHJldHVybiB7XG5cdFx0XHRpZDogZG9ja1Byb3ZpZGVyT3B0aW9ucy5pZCxcblx0XHRcdHRpdGxlOiBkb2NrUHJvdmlkZXJPcHRpb25zLnRpdGxlLFxuXHRcdFx0aWNvbjogZG9ja1Byb3ZpZGVyT3B0aW9ucy5pY29uLFxuXHRcdFx0d29ya3NwYWNlQ29tcG9uZW50czoge1xuXHRcdFx0XHRoaWRlV29ya3NwYWNlc0J1dHRvbjogZG9ja1Byb3ZpZGVyT3B0aW9ucy53b3Jrc3BhY2VDb21wb25lbnRzPy5oaWRlV29ya3NwYWNlc0J1dHRvbixcblx0XHRcdFx0aGlkZUhvbWVCdXR0b246XG5cdFx0XHRcdFx0IXJlZ2lzdGVyZWRCb290c3RyYXBPcHRpb25zPy5ob21lIHx8IGRvY2tQcm92aWRlck9wdGlvbnMud29ya3NwYWNlQ29tcG9uZW50cz8uaGlkZUhvbWVCdXR0b24sXG5cdFx0XHRcdGhpZGVTdG9yZWZyb250QnV0dG9uOlxuXHRcdFx0XHRcdCFyZWdpc3RlcmVkQm9vdHN0cmFwT3B0aW9ucz8uc3RvcmUgfHwgZG9ja1Byb3ZpZGVyT3B0aW9ucy53b3Jrc3BhY2VDb21wb25lbnRzPy5oaWRlU3RvcmVmcm9udEJ1dHRvbixcblx0XHRcdFx0aGlkZU5vdGlmaWNhdGlvbnNCdXR0b246XG5cdFx0XHRcdFx0IXJlZ2lzdGVyZWRCb290c3RyYXBPcHRpb25zPy5ub3RpZmljYXRpb25zIHx8XG5cdFx0XHRcdFx0ZG9ja1Byb3ZpZGVyT3B0aW9ucy53b3Jrc3BhY2VDb21wb25lbnRzPy5oaWRlTm90aWZpY2F0aW9uc0J1dHRvblxuXHRcdFx0fSxcblx0XHRcdGJ1dHRvbnMsXG5cdFx0XHRza2lwU2F2ZWREb2NrUHJvdmlkZXJDb25maWc6IHRydWUsXG5cdFx0XHRkaXNhYmxlVXNlclJlYXJyYW5nZW1lbnQ6IHRydWVcblx0XHR9O1xuXHR9XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIGJ1dHRvbnMgdG8gZGlzcGxheSBvbiB0aGUgZG9jayBmcm9tIGNvbmZpZy5cbiAqIEByZXR1cm5zIFRoZSBkb2NrIGJ1dHRvbnMgdG8gZGlzcGxheS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gYnVpbGRCdXR0b25zKCk6IFByb21pc2U8RG9ja0J1dHRvbltdPiB7XG5cdGNvbnN0IGJ1dHRvbnM6IERvY2tCdXR0b25bXSA9IFtdO1xuXG5cdGlmIChkb2NrUHJvdmlkZXJPcHRpb25zKSB7XG5cdFx0Y29uc3QgaWNvbkZvbGRlciA9IGF3YWl0IGdldEN1cnJlbnRJY29uRm9sZGVyKCk7XG5cdFx0Y29uc3QgY29sb3JTY2hlbWVNb2RlID0gYXdhaXQgZ2V0Q3VycmVudENvbG9yU2NoZW1lTW9kZSgpO1xuXHRcdGNvbnN0IHBsYXRmb3JtID0gZ2V0Q3VycmVudFN5bmMoKTtcblxuXHRcdGNvbnN0IGVudHJpZXMgPSBBcnJheS5pc0FycmF5KGRvY2tQcm92aWRlck9wdGlvbnMuZW50cmllcykgPyBbLi4uZG9ja1Byb3ZpZGVyT3B0aW9ucy5lbnRyaWVzXSA6IFtdO1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGRvY2tQcm92aWRlck9wdGlvbnMuYXBwcykpIHtcblx0XHRcdGVudHJpZXMucHVzaCguLi5kb2NrUHJvdmlkZXJPcHRpb25zLmFwcHMpO1xuXHRcdH1cblx0XHRpZiAoQXJyYXkuaXNBcnJheShkb2NrUHJvdmlkZXJPcHRpb25zLmJ1dHRvbnMpKSB7XG5cdFx0XHRlbnRyaWVzLnB1c2goLi4uZG9ja1Byb3ZpZGVyT3B0aW9ucy5idXR0b25zKTtcblx0XHR9XG5cblx0XHRmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcblx0XHRcdGlmIChhd2FpdCBjaGVja0NvbmRpdGlvbnMocGxhdGZvcm0sIGVudHJ5LmNvbmRpdGlvbnMsIHsgY2FsbGVyVHlwZTogXCJkb2NrXCIsIGN1c3RvbURhdGE6IGVudHJ5IH0pKSB7XG5cdFx0XHRcdGlmIChcImFwcElkXCIgaW4gZW50cnkpIHtcblx0XHRcdFx0XHRhd2FpdCBhZGRFbnRyeUFzQXBwKGJ1dHRvbnMsIGVudHJ5LCBpY29uRm9sZGVyLCBjb2xvclNjaGVtZU1vZGUpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKFwiYWN0aW9uXCIgaW4gZW50cnkpIHtcblx0XHRcdFx0XHRhd2FpdCBhZGRFbnRyeUFzQWN0aW9uKGJ1dHRvbnMsIGVudHJ5LCBpY29uRm9sZGVyLCBjb2xvclNjaGVtZU1vZGUpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKFwib3B0aW9uc1wiIGluIGVudHJ5KSB7XG5cdFx0XHRcdFx0YXdhaXQgYWRkRW50cmllc0FzRHJvcGRvd24oYnV0dG9ucywgZW50cnksIGljb25Gb2xkZXIsIGNvbG9yU2NoZW1lTW9kZSwgcGxhdGZvcm0pO1xuXHRcdFx0XHR9IGVsc2UgaWYgKFwidGFnc1wiIGluIGVudHJ5KSB7XG5cdFx0XHRcdFx0YXdhaXQgYWRkRW50cmllc0J5QXBwVGFnKGJ1dHRvbnMsIGVudHJ5LCBpY29uRm9sZGVyLCBjb2xvclNjaGVtZU1vZGUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGJ1dHRvbnM7XG59XG5cbi8qKlxuICogQWRkIGFuIGVudHJ5IHRvIHRoZSBkb2NrIGFzIGFuIGFwcC5cbiAqIEBwYXJhbSBidXR0b25zIFRoZSBsaXN0IG9mIGJ1dHRvbnMgdG8gYWRkIHRvLlxuICogQHBhcmFtIGVudHJ5IFRoZSBlbnRyeSBkZXRhaWxzLlxuICogQHBhcmFtIGljb25Gb2xkZXIgVGhlIGZvbGRlciBmb3IgaWNvbnMuXG4gKiBAcGFyYW0gY29sb3JTY2hlbWVNb2RlIFRoZSBjb2xvciBzY2hlbWVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gYWRkRW50cnlBc0FwcChcblx0YnV0dG9uczogRG9ja0J1dHRvbltdLFxuXHRlbnRyeTogRG9ja0J1dHRvbkFwcCxcblx0aWNvbkZvbGRlcjogc3RyaW5nLFxuXHRjb2xvclNjaGVtZU1vZGU6IENvbG9yU2NoZW1lTW9kZVxuKTogUHJvbWlzZTx2b2lkPiB7XG5cdC8vIElmIHRoZSBidXR0b24gaGFzIGFuIGFwcElkIHdlIGFyZSBnb2luZyB0byBsYXVuY2ggdGhhdFxuXHQvLyBidXQgdGhlIGNvbmZpZyBjYW4gb3ZlcnJpZGUgdGhlIHRvb2x0aXAgb3IgaWNvblxuXHRsZXQgdG9vbHRpcCA9IGVudHJ5LnRvb2x0aXA7XG5cdGxldCBpY29uVXJsID0gZW50cnkuaWNvblVybDtcblxuXHRpZiAoIWlzU3RyaW5nVmFsdWUodG9vbHRpcCkgfHwgIWlzU3RyaW5nVmFsdWUoaWNvblVybCkpIHtcblx0XHQvLyBObyB0b29sdGlwIG9yIGljb24gc2V0LCBzbyB1c2UgdGhlIHZhbHVlcyBmcm9tIHRoZSBhcHBcblx0XHRjb25zdCBhcHAgPSBhd2FpdCBnZXRBcHAoZW50cnkuYXBwSWQpO1xuXHRcdGlmIChhcHApIHtcblx0XHRcdGlmICghaXNTdHJpbmdWYWx1ZSh0b29sdGlwKSkge1xuXHRcdFx0XHR0b29sdGlwID0gYXBwLnRpdGxlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFpc1N0cmluZ1ZhbHVlKGljb25VcmwpKSB7XG5cdFx0XHRcdGljb25VcmwgPSBnZXRBcHBJY29uKGFwcCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0YnV0dG9ucy5wdXNoKHtcblx0XHR0eXBlOiBEb2NrQnV0dG9uTmFtZXMuQWN0aW9uQnV0dG9uLFxuXHRcdHRvb2x0aXA6IHRvb2x0aXAgPz8gXCJcIixcblx0XHRpY29uVXJsOiB0aGVtZVVybChpY29uVXJsLCBpY29uRm9sZGVyLCBjb2xvclNjaGVtZU1vZGUpLFxuXHRcdGFjdGlvbjoge1xuXHRcdFx0aWQ6IFBMQVRGT1JNX0FDVElPTl9JRFMubGF1bmNoQXBwLFxuXHRcdFx0Y3VzdG9tRGF0YToge1xuXHRcdFx0XHRzb3VyY2U6IFwiZG9ja1wiLFxuXHRcdFx0XHRhcHBJZDogZW50cnkuYXBwSWRcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEFkZCBhbiBlbnRyeSB0byB0aGUgZG9jayBhcyBhbiBhY3Rpb24uXG4gKiBAcGFyYW0gYnV0dG9ucyBUaGUgbGlzdCBvZiBidXR0b25zIHRvIGFkZCB0by5cbiAqIEBwYXJhbSBlbnRyeSBUaGUgZW50cnkgZGV0YWlscy5cbiAqIEBwYXJhbSBpY29uRm9sZGVyIFRoZSBmb2xkZXIgZm9yIGljb25zLlxuICogQHBhcmFtIGNvbG9yU2NoZW1lTW9kZSBUaGUgY29sb3Igc2NoZW1lXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFkZEVudHJ5QXNBY3Rpb24oXG5cdGJ1dHRvbnM6IERvY2tCdXR0b25bXSxcblx0ZW50cnk6IERvY2tCdXR0b25BY3Rpb24sXG5cdGljb25Gb2xkZXI6IHN0cmluZyxcblx0Y29sb3JTY2hlbWVNb2RlOiBDb2xvclNjaGVtZU1vZGVcbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoIWlzU3RyaW5nVmFsdWUoZW50cnkudG9vbHRpcCkgfHwgIWlzU3RyaW5nVmFsdWUoZW50cnkuaWNvblVybCkpIHtcblx0XHRsb2dnZXIuZXJyb3IoXCJZb3UgbXVzdCBzcGVjaWZ5IHRoZSB0b29sdGlwIGFuZCBpY29uVXJsIGZvciBhIERvY2tCdXR0b25BY3Rpb25cIik7XG5cdH0gZWxzZSB7XG5cdFx0YnV0dG9ucy5wdXNoKHtcblx0XHRcdHR5cGU6IERvY2tCdXR0b25OYW1lcy5BY3Rpb25CdXR0b24sXG5cdFx0XHR0b29sdGlwOiBlbnRyeS50b29sdGlwLFxuXHRcdFx0aWNvblVybDogdGhlbWVVcmwoZW50cnkuaWNvblVybCwgaWNvbkZvbGRlciwgY29sb3JTY2hlbWVNb2RlKSxcblx0XHRcdGFjdGlvbjogZW50cnkuYWN0aW9uXG5cdFx0fSk7XG5cdH1cbn1cblxuLyoqXG4gKiBBZGQgYW4gZW50cnkgdG8gdGhlIGRvY2sgYXMgYW4gZHJvcCBkb3duLlxuICogQHBhcmFtIGJ1dHRvbnMgVGhlIGxpc3Qgb2YgYnV0dG9ucyB0byBhZGQgdG8uXG4gKiBAcGFyYW0gZW50cnkgVGhlIGVudHJ5IGRldGFpbHMuXG4gKiBAcGFyYW0gaWNvbkZvbGRlciBUaGUgZm9sZGVyIGZvciBpY29ucy5cbiAqIEBwYXJhbSBjb2xvclNjaGVtZU1vZGUgVGhlIGNvbG9yIHNjaGVtZVxuICogQHBhcmFtIHBsYXRmb3JtIFRoZSB3b3Jrc3BhY2UgcGxhdGZvcm0gZm9yIGNoZWNraW5nIGNvbmRpdGlvbnMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFkZEVudHJpZXNBc0Ryb3Bkb3duKFxuXHRidXR0b25zOiBEb2NrQnV0dG9uW10sXG5cdGVudHJ5OiBEb2NrQnV0dG9uRHJvcGRvd24sXG5cdGljb25Gb2xkZXI6IHN0cmluZyxcblx0Y29sb3JTY2hlbWVNb2RlOiBDb2xvclNjaGVtZU1vZGUsXG5cdHBsYXRmb3JtOiBXb3Jrc3BhY2VQbGF0Zm9ybU1vZHVsZVxuKTogUHJvbWlzZTx2b2lkPiB7XG5cdC8vIE9wdGlvbnMgYXJlIHByZXNlbnQgc28gdGhpcyBpcyBhIGRyb3AgZG93blxuXHQvLyBUaGUgaXRlbXMgaW4gdGhlIGRyb3AgZG93biBjYW4gYmUgYW4gYXBwSWQgb3IgYSBjdXN0b20gYWN0aW9uXG5cdGlmICghaXNTdHJpbmdWYWx1ZShlbnRyeS50b29sdGlwKSB8fCAhaXNTdHJpbmdWYWx1ZShlbnRyeS5pY29uVXJsKSkge1xuXHRcdGxvZ2dlci5lcnJvcihcIllvdSBtdXN0IHNwZWNpZnkgdGhlIHRvb2x0aXAgYW5kIGljb25VcmwgZm9yIGEgRG9ja0J1dHRvbkRyb3Bkb3duXCIpO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IG9wdHM6IEN1c3RvbUJ1dHRvbkNvbmZpZ1tdID0gW107XG5cblx0XHRmb3IgKGNvbnN0IG9wdGlvbiBvZiBlbnRyeS5vcHRpb25zKSB7XG5cdFx0XHRpZiAoYXdhaXQgY2hlY2tDb25kaXRpb25zKHBsYXRmb3JtLCBvcHRpb24uY29uZGl0aW9ucywgeyBjYWxsZXJUeXBlOiBcImRvY2tcIiwgY3VzdG9tRGF0YTogb3B0aW9uIH0pKSB7XG5cdFx0XHRcdGxldCBvcHRpb25Ub29sdGlwID0gb3B0aW9uLnRvb2x0aXA7XG5cdFx0XHRcdGxldCBhY3Rpb246IEN1c3RvbUFjdGlvblNwZWNpZmllciB8IHVuZGVmaW5lZDtcblxuXHRcdFx0XHQvLyBJZiB0aGUgb3B0aW9ucyBoYXMgYW4gYXBwSWQgd2UgYXJlIGdvaW5nIHRvIGxhdW5jaCB0aGF0XG5cdFx0XHRcdC8vIG90aGVyd2lzZSB3ZSB1c2UgdGhlIGN1c3RvbSBhY3Rpb24uXG5cdFx0XHRcdGlmIChcImFwcElkXCIgaW4gb3B0aW9uKSB7XG5cdFx0XHRcdFx0aWYgKCFpc1N0cmluZ1ZhbHVlKG9wdGlvblRvb2x0aXApKSB7XG5cdFx0XHRcdFx0XHQvLyBJZiB0aGUgdG9vbHRpcCBpcyBub3Qgc2V0IHdlIGNhbiB1c2UgdGhlIGFwcCB0aXRsZVxuXHRcdFx0XHRcdFx0Y29uc3QgYXBwID0gYXdhaXQgZ2V0QXBwKG9wdGlvbi5hcHBJZCk7XG5cdFx0XHRcdFx0XHRvcHRpb25Ub29sdGlwID0gYXBwPy50aXRsZSA/PyBcIlwiO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRhY3Rpb24gPSB7XG5cdFx0XHRcdFx0XHRpZDogUExBVEZPUk1fQUNUSU9OX0lEUy5sYXVuY2hBcHAsXG5cdFx0XHRcdFx0XHRjdXN0b21EYXRhOiB7XG5cdFx0XHRcdFx0XHRcdHNvdXJjZTogXCJkb2NrXCIsXG5cdFx0XHRcdFx0XHRcdGFwcElkOiBvcHRpb24uYXBwSWRcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFpc1N0cmluZ1ZhbHVlKG9wdGlvblRvb2x0aXApKSB7XG5cdFx0XHRcdFx0bG9nZ2VyLmVycm9yKFwiWW91IG11c3Qgc3BlY2lmeSB0aGUgdG9vbHRpcCBmb3IgYSBEb2NrQnV0dG9uQWN0aW9uIGluIGEgRG9ja0J1dHRvbkRyb3Bkb3duXCIpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGFjdGlvbiA9IG9wdGlvbi5hY3Rpb247XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIWlzRW1wdHkoYWN0aW9uKSkge1xuXHRcdFx0XHRcdG9wdHMucHVzaCh7XG5cdFx0XHRcdFx0XHR0b29sdGlwOiBvcHRpb25Ub29sdGlwID8/IFwiXCIsXG5cdFx0XHRcdFx0XHRhY3Rpb25cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChvcHRzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0b3B0cy5wdXNoKHtcblx0XHRcdFx0dG9vbHRpcDogZW50cnkubm9FbnRyaWVzID8/IFwiVGhlcmUgYXJlIG5vIGVudHJpZXNcIixcblx0XHRcdFx0ZGlzYWJsZWQ6IHRydWUsXG5cdFx0XHRcdGFjdGlvbjoge1xuXHRcdFx0XHRcdGlkOiBcIm5vb3BcIlxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRidXR0b25zLnB1c2goe1xuXHRcdFx0dHlwZTogRG9ja0J1dHRvbk5hbWVzLkRyb3Bkb3duQnV0dG9uLFxuXHRcdFx0dG9vbHRpcDogZW50cnkudG9vbHRpcCxcblx0XHRcdGljb25Vcmw6IHRoZW1lVXJsKGVudHJ5Lmljb25VcmwsIGljb25Gb2xkZXIsIGNvbG9yU2NoZW1lTW9kZSksXG5cdFx0XHRvcHRpb25zOiBvcHRzXG5cdFx0fSk7XG5cdH1cbn1cblxuLyoqXG4gKiBBZGQgZW50cmllcyB0byB0aGUgZG9jayBiYXNlZCBvbiB0aGVpciBhcHAgdGFncyBhcyBlaXRoZXIgbXVsdGlwbGUgYnV0dG9ucyBvciBhIGRyb3AgZG93bi5cbiAqIEBwYXJhbSBidXR0b25zIFRoZSBsaXN0IG9mIGJ1dHRvbnMgdG8gYWRkIHRvLlxuICogQHBhcmFtIGVudHJ5IFRoZSBlbnRyeSBkZXRhaWxzLlxuICogQHBhcmFtIGljb25Gb2xkZXIgVGhlIGZvbGRlciBmb3IgaWNvbnMuXG4gKiBAcGFyYW0gY29sb3JTY2hlbWVNb2RlIFRoZSBjb2xvciBzY2hlbWVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gYWRkRW50cmllc0J5QXBwVGFnKFxuXHRidXR0b25zOiBEb2NrQnV0dG9uW10sXG5cdGVudHJ5OiBEb2NrQnV0dG9uQXBwc0J5VGFnLFxuXHRpY29uRm9sZGVyOiBzdHJpbmcsXG5cdGNvbG9yU2NoZW1lTW9kZTogQ29sb3JTY2hlbWVNb2RlXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKCFBcnJheS5pc0FycmF5KGVudHJ5LnRhZ3MpKSB7XG5cdFx0bG9nZ2VyLmVycm9yKFwiWW91IG11c3Qgc3BlY2lmeSBhbiBhcnJheSBmb3IgdGhlIHRhZ3MgcGFyYW1ldGVyIGZvciBhbiBEb2NrQnV0dG9uQXBwc0J5VGFnXCIpO1xuXHR9IGVsc2Uge1xuXHRcdC8vIElmIHRoZXJlIGFyZSB0YWdzIHRoZW4gdGhpcyBjb3VsZCBiZSBhIGdyb3VwIG9mIGFwcHMgd2UgdGhlbiBkaXNwbGF5IHNlcGFyYXRlXG5cdFx0Ly8gYnV0dG9ucyBvciBhIGRyb3AgZG93biBiYXNlZCBvbiB0aGUgZGlzcGxheSBwcm9wZXJ0eVxuXHRcdGNvbnN0IGRvY2tBcHBzID0gYXdhaXQgZ2V0QXBwc0J5VGFnKGVudHJ5LnRhZ3MsIGZhbHNlLCB7IHByaXZhdGU6IGZhbHNlIH0pO1xuXG5cdFx0aWYgKGVudHJ5LmRpc3BsYXkgPT09IFwiaW5kaXZpZHVhbFwiKSB7XG5cdFx0XHQvLyBJbmRpdmlkdWFsIHNvIHNob3cgYSBidXR0b24gZm9yIGVhY2ggYXBwXG5cdFx0XHRmb3IgKGNvbnN0IGRvY2tBcHAgb2YgZG9ja0FwcHMpIHtcblx0XHRcdFx0Y29uc3QgaWNvbiA9IGVudHJ5Lmljb25VcmwgPz8gZ2V0QXBwSWNvbihkb2NrQXBwKTtcblx0XHRcdFx0YnV0dG9ucy5wdXNoKHtcblx0XHRcdFx0XHR0b29sdGlwOiBlbnRyeS50b29sdGlwID8/IGRvY2tBcHAudGl0bGUsXG5cdFx0XHRcdFx0aWNvblVybDogdGhlbWVVcmwoaWNvbiwgaWNvbkZvbGRlciwgY29sb3JTY2hlbWVNb2RlKSxcblx0XHRcdFx0XHRhY3Rpb246IHtcblx0XHRcdFx0XHRcdGlkOiBQTEFURk9STV9BQ1RJT05fSURTLmxhdW5jaEFwcCxcblx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IHtcblx0XHRcdFx0XHRcdFx0c291cmNlOiBcImRvY2tcIixcblx0XHRcdFx0XHRcdFx0YXBwSWQ6IGRvY2tBcHAuYXBwSWRcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoZW50cnkuZGlzcGxheSA9PT0gXCJncm91cFwiKSB7XG5cdFx0XHQvLyBHcm91cCBkaXNwbGF5IHNvIHNob3cgYSBkcm9wIGRvd24gd2l0aCBhbGwgdGhlIGVudHJpZXMgaW4gaXRcblx0XHRcdGlmICghaXNTdHJpbmdWYWx1ZShlbnRyeS50b29sdGlwKSkge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJZb3UgbXVzdCBzcGVjaWZ5IHRoZSB0b29sdGlwIGZvciBhIGdyb3VwZWQgRG9ja0J1dHRvbkFwcHNCeVRhZ1wiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxldCBpY29uVXJsID0gZW50cnkuaWNvblVybDtcblx0XHRcdFx0Y29uc3Qgb3B0cyA9IFtdO1xuXG5cdFx0XHRcdGZvciAoY29uc3QgZG9ja0FwcCBvZiBkb2NrQXBwcykge1xuXHRcdFx0XHRcdC8vIElmIHRoZSBjb25maWcgZG9lc24ndCBzcGVjaWZ5IGFuIGljb24sIGp1c3QgdXNlIHRoZSBpY29uIGZyb20gdGhlIGZpcnN0IGVudHJ5XG5cdFx0XHRcdFx0aWYgKCFpc1N0cmluZ1ZhbHVlKGljb25VcmwpKSB7XG5cdFx0XHRcdFx0XHRpY29uVXJsID0gZ2V0QXBwSWNvbihkb2NrQXBwKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRvcHRzLnB1c2goe1xuXHRcdFx0XHRcdFx0dG9vbHRpcDogZG9ja0FwcC50aXRsZSxcblx0XHRcdFx0XHRcdGFjdGlvbjoge1xuXHRcdFx0XHRcdFx0XHRpZDogUExBVEZPUk1fQUNUSU9OX0lEUy5sYXVuY2hBcHAsXG5cdFx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IHtcblx0XHRcdFx0XHRcdFx0XHRzb3VyY2U6IFwiZG9ja1wiLFxuXHRcdFx0XHRcdFx0XHRcdGFwcElkOiBkb2NrQXBwLmFwcElkXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChvcHRzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdG9wdHMucHVzaCh7XG5cdFx0XHRcdFx0XHR0b29sdGlwOiBlbnRyeS5ub0VudHJpZXMgPz8gXCJUaGVyZSBhcmUgbm8gZW50cmllc1wiLFxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRhY3Rpb246IHtcblx0XHRcdFx0XHRcdFx0aWQ6IFwibm9vcFwiXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRidXR0b25zLnB1c2goe1xuXHRcdFx0XHRcdHR5cGU6IERvY2tCdXR0b25OYW1lcy5Ecm9wZG93bkJ1dHRvbixcblx0XHRcdFx0XHR0b29sdGlwOiBlbnRyeS50b29sdGlwID8/IFwiXCIsXG5cdFx0XHRcdFx0aWNvblVybDogdGhlbWVVcmwoaWNvblVybCwgaWNvbkZvbGRlciwgY29sb3JTY2hlbWVNb2RlKSxcblx0XHRcdFx0XHRvcHRpb25zOiBvcHRzXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIFNob3cgdGhlIGRvY2sgY29tcG9uZW50LlxuICogQHJldHVybnMgTm90aGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNob3coKTogUHJvbWlzZTx2b2lkPiB7XG5cdGxvZ2dlci5pbmZvKFwiRG9jayBzaG93IGNhbGxlZC5cIik7XG5cdHJldHVybiBEb2NrLnNob3coKTtcbn1cblxuLyoqXG4gKiBNaW5pbWl6ZSB0aGUgZG9jayBjb21wb25lbnQuXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWluaW1pemUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdGxvZ2dlci5pbmZvKFwiRG9jayBtaW5pbWl6ZSBjYWxsZWQuXCIpO1xuXHRyZXR1cm4gRG9jay5taW5pbWl6ZSgpO1xufVxuXG4vKipcbiAqIFJlZnJlc2ggdGhlIGRvY2sgYmVjYXVzZSB0aGUgY29sb3Igc2NoZW1lIG9yIGFwcHMgaGF2ZSBjaGFuZ2VkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZWZyZXNoRG9jaygpOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKCFpc0VtcHR5KHJlZ2lzdHJhdGlvbkluZm8pKSB7XG5cdFx0Y29uc3QgbmV3QnV0dG9ucyA9IGF3YWl0IGJ1aWxkQnV0dG9ucygpO1xuXG5cdFx0aWYgKEpTT04uc3RyaW5naWZ5KG5ld0J1dHRvbnMpICE9PSBKU09OLnN0cmluZ2lmeShyZWdpc3RlcmVkQnV0dG9ucykpIHtcblx0XHRcdGNvbnN0IGRvY2tQcm92aWRlciA9IGF3YWl0IGJ1aWxkRG9ja1Byb3ZpZGVyKG5ld0J1dHRvbnMpO1xuXHRcdFx0aWYgKGRvY2tQcm92aWRlcikge1xuXHRcdFx0XHQvLyB1cGRhdGVEb2NrUHJvdmlkZXJDb25maWcgd2FzIGFkZGVkIGluIHYxMywgZmFsbGJhY2sgaWYgaXQgZG9lc24ndCBleGlzdFxuXHRcdFx0XHRpZiAocmVnaXN0cmF0aW9uSW5mbz8udXBkYXRlRG9ja1Byb3ZpZGVyQ29uZmlnKSB7XG5cdFx0XHRcdFx0YXdhaXQgcmVnaXN0cmF0aW9uSW5mby51cGRhdGVEb2NrUHJvdmlkZXJDb25maWcoZG9ja1Byb3ZpZGVyKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhd2FpdCBkZXJlZ2lzdGVyKCk7XG5cdFx0XHRcdFx0YXdhaXQgRG9jay5yZWdpc3Rlcihkb2NrUHJvdmlkZXIpO1xuXHRcdFx0XHRcdGlmIChyZWdpc3RlcmVkQm9vdHN0cmFwT3B0aW9ucz8uYXV0b1Nob3c/LmluY2x1ZGVzKFwiZG9ja1wiKSkge1xuXHRcdFx0XHRcdFx0YXdhaXQgc2hvdygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEFwcGx5IHRoZW1pbmcgdG8gYW4gaWNvbiB1cmwuXG4gKiBAcGFyYW0gdXJsIFRoZSB1cmwgdG8gdGhlbWUuXG4gKiBAcGFyYW0gaWNvbkZvbGRlciBUaGUgaWNvbiBmb2xkZXIuXG4gKiBAcGFyYW0gY29sb3JTY2hlbWVNb2RlIFRoZSBjb2xvciBzY2hlbWUuXG4gKiBAcmV0dXJucyBUaGUgdGhlbWVkIHVybC5cbiAqL1xuZnVuY3Rpb24gdGhlbWVVcmwoXG5cdHVybDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRpY29uRm9sZGVyOiBzdHJpbmcsXG5cdGNvbG9yU2NoZW1lTW9kZTogQ29sb3JTY2hlbWVNb2RlXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gdXJsXG5cdFx0PyB1cmwucmVwbGFjZSgve3RoZW1lfS9nLCBpY29uRm9sZGVyKS5yZXBsYWNlKC97c2NoZW1lfS9nLCBjb2xvclNjaGVtZU1vZGUgYXMgc3RyaW5nKVxuXHRcdDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEdldCBhbiBhcHAgaWNvbiBmcm9tIGEgcGxhdGZvcm0gYXBwIGRlZmluaXRpb24uXG4gKiBAcGFyYW0gYXBwIFRoZSBhcHAgdG8gZ2V0IHRoZSBpY29uIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgYXBwIGljb24uXG4gKi9cbmZ1bmN0aW9uIGdldEFwcEljb24oYXBwOiBQbGF0Zm9ybUFwcCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmIChBcnJheS5pc0FycmF5KGFwcC5pY29ucykgJiYgYXBwLmljb25zLmxlbmd0aCA+IDApIHtcblx0XHRyZXR1cm4gYXBwLmljb25zWzBdLnNyYztcblx0fVxufVxuIiwiaW1wb3J0IHtcblx0SG9tZSxcblx0dHlwZSBIb21lUHJvdmlkZXIsXG5cdHR5cGUgQ0xJRmlsdGVyLFxuXHR0eXBlIEhvbWVEaXNwYXRjaGVkU2VhcmNoUmVzdWx0LFxuXHR0eXBlIEhvbWVSZWdpc3RyYXRpb24sXG5cdHR5cGUgSG9tZVNlYXJjaExpc3RlbmVyUmVxdWVzdCxcblx0dHlwZSBIb21lU2VhcmNoTGlzdGVuZXJSZXNwb25zZSxcblx0dHlwZSBIb21lU2VhcmNoUmVzcG9uc2Vcbn0gZnJvbSBcIkBvcGVuZmluL3dvcmtzcGFjZVwiO1xuaW1wb3J0IHsgZ2V0SGVscFNlYXJjaEVudHJpZXMsIGdldFNlYXJjaFJlc3VsdHMsIGl0ZW1TZWxlY3Rpb24gfSBmcm9tIFwiLi4vaW50ZWdyYXRpb25zXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiLi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSB7IEhvbWVQcm92aWRlck9wdGlvbnMgfSBmcm9tIFwiLi4vc2hhcGVzL2hvbWUtc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmNvbnN0IEhPTUVfU09VUkNFX0ZJTFRFUlMgPSBcInNvdXJjZXNcIjtcbmNvbnN0IEhPTUVfU09VUkNFX0RFRkFVTFRfRklMVEVSX0xBQkVMID0gXCJTb3VyY2VcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiSG9tZVwiKTtcblxubGV0IGhvbWVQcm92aWRlck9wdGlvbnM6IEhvbWVQcm92aWRlck9wdGlvbnMgfCB1bmRlZmluZWQ7XG5sZXQgcmVnaXN0cmF0aW9uSW5mbzogSG9tZVJlZ2lzdHJhdGlvbiB8IHVuZGVmaW5lZDtcbmxldCBsYXN0UmVzcG9uc2U6IEhvbWVTZWFyY2hMaXN0ZW5lclJlc3BvbnNlO1xuXG4vKipcbiAqIFJlZ2lzdGVyIHRoZSBob21lIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgaG9tZSBwcm92aWRlci5cbiAqIEByZXR1cm5zIFRoZSByZWdpc3RyYXRpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWdpc3Rlcihcblx0b3B0aW9uczogSG9tZVByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZFxuKTogUHJvbWlzZTxIb21lUmVnaXN0cmF0aW9uIHwgdW5kZWZpbmVkPiB7XG5cdGlmICghcmVnaXN0cmF0aW9uSW5mbykge1xuXHRcdGhvbWVQcm92aWRlck9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdGxvZ2dlci5pbmZvKFwiSW5pdGlhbGl6aW5nIGhvbWVcIik7XG5cdFx0aWYgKFxuXHRcdFx0aXNFbXB0eShob21lUHJvdmlkZXJPcHRpb25zKSB8fFxuXHRcdFx0aXNFbXB0eShob21lUHJvdmlkZXJPcHRpb25zLmlkKSB8fFxuXHRcdFx0aXNFbXB0eShob21lUHJvdmlkZXJPcHRpb25zLnRpdGxlKVxuXHRcdCkge1xuXHRcdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRcdFwiUHJvdmlkZXIgbm90IGNvbmZpZ3VyZWQgaW4gdGhlIGN1c3RvbVNldHRpbmdzIG9mIHlvdXIgbWFuaWZlc3QgY29ycmVjdGx5LiBFbnN1cmUgeW91IGhhdmUgdGhlIGhvbWVQcm92aWRlciBvYmplY3QgZGVmaW5lZCBpbiBjdXN0b21TZXR0aW5ncyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVmaW5lZDogaWQsIHRpdGxlXCJcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgaG9tZVByb3ZpZGVyOiBIb21lUHJvdmlkZXIgPSB7XG5cdFx0XHQuLi5ob21lUHJvdmlkZXJPcHRpb25zLFxuXHRcdFx0b25Vc2VySW5wdXQsXG5cdFx0XHRvblJlc3VsdERpc3BhdGNoOiBvblNlbGVjdGlvbixcblx0XHRcdGRpc3BhdGNoRm9jdXNFdmVudHM6IHRydWVcblx0XHR9O1xuXG5cdFx0cmVnaXN0cmF0aW9uSW5mbyA9IGF3YWl0IEhvbWUucmVnaXN0ZXIoaG9tZVByb3ZpZGVyKTtcblx0XHRsb2dnZXIuaW5mbyhcIlZlcnNpb246XCIsIHJlZ2lzdHJhdGlvbkluZm8pO1xuXHRcdGxvZ2dlci5pbmZvKFwiSG9tZSBwcm92aWRlciBpbml0aWFsaXplZFwiKTtcblx0fVxuXG5cdHJldHVybiByZWdpc3RyYXRpb25JbmZvO1xufVxuXG4vKipcbiAqIERlcmVnaXN0ZXIgdGhlIGhvbWUgY29tcG9uZW50LlxuICogQHJldHVybnMgTm90aGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlcmVnaXN0ZXIoKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChyZWdpc3RyYXRpb25JbmZvKSB7XG5cdFx0cmVnaXN0cmF0aW9uSW5mbyA9IHVuZGVmaW5lZDtcblx0XHRsb2dnZXIuaW5mbyhcIkFib3V0IHRvIGNhbGwgSG9tZSBkZXJlZ2lzdGVyLlwiKTtcblx0XHRpZiAoaG9tZVByb3ZpZGVyT3B0aW9ucykge1xuXHRcdFx0YXdhaXQgSG9tZS5kZXJlZ2lzdGVyKGhvbWVQcm92aWRlck9wdGlvbnMuaWQpO1xuXHRcdFx0aG9tZVByb3ZpZGVyT3B0aW9ucyA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0bG9nZ2VyLndhcm4oXCJVbmFibGUgdG8gZGVyZWdpc3RlciBob21lIGFzIHRoZXJlIGlzIGFuIGluZGljYXRpb24gaXQgd2FzIG5ldmVyIHJlZ2lzdGVyZWRcIik7XG59XG5cbi8qKlxuICogU2hvdyB0aGUgaG9tZSBjb21wb25lbnQuXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hvdygpOiBQcm9taXNlPHZvaWQ+IHtcblx0bG9nZ2VyLmluZm8oXCJTaG93IEhvbWUgY2FsbGVkLlwiKTtcblx0cmV0dXJuIEhvbWUuc2hvdygpO1xufVxuXG4vKipcbiAqIEhpZGUgdGhlIGhvbWUgY29tcG9uZW50LlxuICogQHJldHVybnMgTm90aGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhpZGUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdGxvZ2dlci5pbmZvKFwiSGlkZSBIb21lIGNhbGxlZC5cIik7XG5cdHJldHVybiBIb21lLmhpZGUoKTtcbn1cblxuLyoqXG4gKiBIYW5kbGUgdXNlciBpbnB1dCBmcm9tIHRoZSBob21lIGNvbXBvbmVudC5cbiAqIEBwYXJhbSByZXF1ZXN0IFRoZSByZXF1ZXN0IGZyb20gdGhlIGhvbWUgY29tcG9uZW50LlxuICogQHBhcmFtIHJlc3BvbnNlIFRoZSByZXNwb25zZSB0byB0aGUgaG9tZSBjb21wb25lbnQuXG4gKiBAcmV0dXJucyBUaGUgc2VhcmNoIHJlc3BvbnNlLlxuICovXG5hc3luYyBmdW5jdGlvbiBvblVzZXJJbnB1dChcblx0cmVxdWVzdDogSG9tZVNlYXJjaExpc3RlbmVyUmVxdWVzdCxcblx0cmVzcG9uc2U6IEhvbWVTZWFyY2hMaXN0ZW5lclJlc3BvbnNlXG4pOiBQcm9taXNlPEhvbWVTZWFyY2hSZXNwb25zZT4ge1xuXHR0cnkge1xuXHRcdGNvbnN0IGZpbHRlcnM6IENMSUZpbHRlcltdID0gcmVxdWVzdD8uY29udGV4dD8uc2VsZWN0ZWRGaWx0ZXJzID8/IFtdO1xuXG5cdFx0aWYgKCFpc0VtcHR5KGxhc3RSZXNwb25zZSkpIHtcblx0XHRcdGxhc3RSZXNwb25zZS5jbG9zZSgpO1xuXHRcdH1cblx0XHRsYXN0UmVzcG9uc2UgPSByZXNwb25zZTtcblx0XHRsYXN0UmVzcG9uc2Uub3BlbigpO1xuXG5cdFx0Y29uc3QgcXVlcnlMb3dlciA9IHJlcXVlc3QucXVlcnkudG9Mb3dlckNhc2UoKTtcblxuXHRcdGlmIChxdWVyeUxvd2VyID09PSBcIj9cIikge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJJbnRlZ3JhdGlvbiBIZWxwIHJlcXVlc3RlZC5cIik7XG5cdFx0XHRjb25zdCBpbnRlZ3JhdGlvbkhlbHBTZWFyY2hFbnRyaWVzID0gYXdhaXQgZ2V0SGVscFNlYXJjaEVudHJpZXMoKTtcblx0XHRcdGNvbnN0IHNlYXJjaFJlc3VsdHMgPSB7XG5cdFx0XHRcdHJlc3VsdHM6IGludGVncmF0aW9uSGVscFNlYXJjaEVudHJpZXMsXG5cdFx0XHRcdGNvbnRleHQ6IHtcblx0XHRcdFx0XHRmaWx0ZXJzOiBbXVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIHNlYXJjaFJlc3VsdHM7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZW5hYmxlU291cmNlRmlsdGVyID0gIShob21lUHJvdmlkZXJPcHRpb25zPy5zb3VyY2VGaWx0ZXI/LmRpc2FibGVkID8/IGZhbHNlKTtcblxuXHRcdGxldCBzZWxlY3RlZFNvdXJjZUZpbHRlck9wdGlvbnM6IHN0cmluZ1tdID0gW107XG5cdFx0aWYgKGVuYWJsZVNvdXJjZUZpbHRlciAmJiBmaWx0ZXJzKSB7XG5cdFx0XHRjb25zdCBzb3VyY2VGaWx0ZXIgPSBmaWx0ZXJzLmZpbmQoKGYpID0+IGYuaWQgPT09IEhPTUVfU09VUkNFX0ZJTFRFUlMpO1xuXHRcdFx0aWYgKHNvdXJjZUZpbHRlcikge1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShzb3VyY2VGaWx0ZXIub3B0aW9ucykpIHtcblx0XHRcdFx0XHRzZWxlY3RlZFNvdXJjZUZpbHRlck9wdGlvbnMgPSBzb3VyY2VGaWx0ZXIub3B0aW9ucy5maWx0ZXIoKG8pID0+IG8uaXNTZWxlY3RlZCkubWFwKChvKSA9PiBvLnZhbHVlKTtcblx0XHRcdFx0fSBlbHNlIGlmIChzb3VyY2VGaWx0ZXIub3B0aW9ucy5pc1NlbGVjdGVkKSB7XG5cdFx0XHRcdFx0c2VsZWN0ZWRTb3VyY2VGaWx0ZXJPcHRpb25zLnB1c2goc291cmNlRmlsdGVyLm9wdGlvbnMudmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bGV0IHNvdXJjZUZpbHRlck9wdGlvbnM6IHN0cmluZ1tdID0gW107XG5cblx0XHRsb2dnZXIuaW5mbyhcIlNlYXJjaCByZXN1bHRzIHJlcXVlc3RlZC5cIik7XG5cdFx0Y29uc3Qgc2VhcmNoUmVzdWx0cyA9IGF3YWl0IGdldFNlYXJjaFJlc3VsdHMoXG5cdFx0XHRyZXF1ZXN0LnF1ZXJ5LFxuXHRcdFx0ZmlsdGVycyxcblx0XHRcdGxhc3RSZXNwb25zZSxcblx0XHRcdHNlbGVjdGVkU291cmNlRmlsdGVyT3B0aW9ucyxcblx0XHRcdHtcblx0XHRcdFx0cXVlcnlNaW5MZW5ndGg6IGhvbWVQcm92aWRlck9wdGlvbnM/LnF1ZXJ5TWluTGVuZ3RoID8/IDMsXG5cdFx0XHRcdHF1ZXJ5QWdhaW5zdDogaG9tZVByb3ZpZGVyT3B0aW9ucz8ucXVlcnlBZ2FpbnN0ID8/IFtcInRpdGxlXCJdLFxuXHRcdFx0XHRpc1N1Z2dlc3Rpb246IHJlcXVlc3QuY29udGV4dD8uaXNTdWdnZXN0aW9uID8/IGZhbHNlXG5cdFx0XHR9XG5cdFx0KTtcblxuXHRcdGlmIChBcnJheS5pc0FycmF5KHNlYXJjaFJlc3VsdHMuc291cmNlRmlsdGVycykgJiYgc2VhcmNoUmVzdWx0cy5zb3VyY2VGaWx0ZXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdHNvdXJjZUZpbHRlck9wdGlvbnMgPSBzb3VyY2VGaWx0ZXJPcHRpb25zLmNvbmNhdChzZWFyY2hSZXN1bHRzLnNvdXJjZUZpbHRlcnMpO1xuXHRcdH1cblxuXHRcdGlmIChlbmFibGVTb3VyY2VGaWx0ZXIgJiYgc291cmNlRmlsdGVyT3B0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0XHRzZWFyY2hSZXN1bHRzLmNvbnRleHQgPSBzZWFyY2hSZXN1bHRzLmNvbnRleHQgPz8ge307XG5cdFx0XHRzZWFyY2hSZXN1bHRzLmNvbnRleHQuZmlsdGVycyA9IHNlYXJjaFJlc3VsdHMuY29udGV4dC5maWx0ZXJzID8/IFtdO1xuXHRcdFx0c2VhcmNoUmVzdWx0cy5jb250ZXh0LmZpbHRlcnMucHVzaCh7XG5cdFx0XHRcdGlkOiBIT01FX1NPVVJDRV9GSUxURVJTLFxuXHRcdFx0XHR0aXRsZTogaG9tZVByb3ZpZGVyT3B0aW9ucz8uc291cmNlRmlsdGVyPy5sYWJlbCA/PyBIT01FX1NPVVJDRV9ERUZBVUxUX0ZJTFRFUl9MQUJFTCxcblx0XHRcdFx0b3B0aW9uczogc291cmNlRmlsdGVyT3B0aW9ucy5tYXAoKGMpID0+ICh7IHZhbHVlOiBjLCBpc1NlbGVjdGVkOiB0cnVlIH0pKVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIGFueSBlbXB0eSBmaWx0ZXIgbGlzdHMgYXMgdGhlc2UgY2FuIGNhdXNlIHRoZSBVSSB0byBjb250aW51YWxseVxuXHRcdC8vIGV4cGFuZCBhbmQgY29sbGFwc2UgYXMgeW91IHR5cGVcblx0XHRjb25zdCBmaW5hbEZpbHRlcnMgPSBbXTtcblx0XHRjb25zdCBjb250ZXh0RmlsdGVycyA9IHNlYXJjaFJlc3VsdHMuY29udGV4dD8uZmlsdGVycztcblx0XHRpZiAoQXJyYXkuaXNBcnJheShjb250ZXh0RmlsdGVycykpIHtcblx0XHRcdGZvciAoY29uc3QgZmlsdGVyIG9mIGNvbnRleHRGaWx0ZXJzKSB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGZpbHRlci5vcHRpb25zKSAmJiBmaWx0ZXIub3B0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0ZmluYWxGaWx0ZXJzLnB1c2goZmlsdGVyKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoZmluYWxGaWx0ZXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdHNlYXJjaFJlc3VsdHMuY29udGV4dCA9IHNlYXJjaFJlc3VsdHMuY29udGV4dCA/PyB7fTtcblx0XHRcdHNlYXJjaFJlc3VsdHMuY29udGV4dC5maWx0ZXJzID0gZmluYWxGaWx0ZXJzO1xuXHRcdH1cblx0XHRpZiAoIUFycmF5LmlzQXJyYXkoc2VhcmNoUmVzdWx0cz8ucmVzdWx0cykpIHtcblx0XHRcdGxvZ2dlci5pbmZvKFwiTm8gcmVzdWx0cyBhcnJheSByZXR1cm5lZC5cIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZ2dlci5pbmZvKGAke3NlYXJjaFJlc3VsdHMucmVzdWx0cy5sZW5ndGh9IHJlc3VsdHMgcmV0dXJuZWQuYCk7XG5cdFx0fVxuXHRcdHJldHVybiBzZWFyY2hSZXN1bHRzO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRsb2dnZXIuZXJyb3IoXCJFeGNlcHRpb24gd2hpbGUgZ2V0dGluZyBzZWFyY2ggbGlzdCByZXN1bHRzXCIsIGVycik7XG5cdH1cblxuXHRyZXR1cm4geyByZXN1bHRzOiBbXSB9O1xufVxuXG4vKipcbiAqIEhhbmRsZSB0aGUgc2VsZWN0aW9uIG9mIGEgc2VhcmNoIHJlc3VsdC5cbiAqIEBwYXJhbSByZXN1bHQgVGhlIHJlc3VsdCB0aGF0IHdhcyBzZWxlY3RlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gb25TZWxlY3Rpb24ocmVzdWx0OiBIb21lRGlzcGF0Y2hlZFNlYXJjaFJlc3VsdCk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoIWlzRW1wdHkocmVzdWx0LmRhdGEpKSB7XG5cdFx0Y29uc3QgaGFuZGxlZCA9IGF3YWl0IGl0ZW1TZWxlY3Rpb24ocmVzdWx0LCBsYXN0UmVzcG9uc2UpO1xuXG5cdFx0aWYgKHJlc3VsdC5hY3Rpb24udHJpZ2dlciA9PT0gXCJ1c2VyLWFjdGlvblwiKSB7XG5cdFx0XHRpZiAoaGFuZGxlZCkge1xuXHRcdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0XHRgVGhlIGFjdGlvbiBmb3IgcmVzdWx0IHdpdGggdGl0bGU6ICcke3Jlc3VsdC50aXRsZX0nIGZvciBwcm92aWRlcjogJyR7XG5cdFx0XHRcdFx0XHRyZXN1bHQuZGF0YT8ucHJvdmlkZXJJZCA/PyBcInVua25vd25cIlxuXHRcdFx0XHRcdH0nIHdhcyBoYW5kbGVkYFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XHRcdGBUaGUgYWN0aW9uIGZvciByZXN1bHQgd2l0aCB0aXRsZTogJyR7cmVzdWx0LnRpdGxlfScgZm9yIHByb3ZpZGVyOiAnJHtcblx0XHRcdFx0XHRcdHJlc3VsdC5kYXRhPy5wcm92aWRlcklkID8/IFwidW5rbm93blwiXG5cdFx0XHRcdFx0fScgd2FzIG5vdCBoYW5kbGVkYFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRsb2dnZXIud2FybihcIlVuYWJsZSB0byBleGVjdXRlIHJlc3VsdCB3aXRob3V0IGRhdGEgYmVpbmcgcGFzc2VkXCIpO1xuXHR9XG59XG4iLCJpbXBvcnQgeyBJbnRlZ3JhdGlvbnMgfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlXCI7XG5pbXBvcnQgdHlwZSB7IFdvcmtmbG93SW50ZWdyYXRpb24gfSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlLXBsYXRmb3JtXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiLi4vbG9nZ2VyLXByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSB7IExvd0NvZGVJbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9ucyB9IGZyb20gXCIuLi9zaGFwZXMvbG93LWNvZGUtaW50ZWdyYXRpb24tc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihcIkxvdyBDb2RlIEludGVncmF0aW9uc1wiKTtcblxubGV0IGxvd0NvZGVJbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9uczogTG93Q29kZUludGVncmF0aW9uUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xubGV0IGxvd0NvZGVJbnRlZ3JhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogV29ya2Zsb3dJbnRlZ3JhdGlvbiB9O1xuY29uc3QgcmVxdWlyZXNTZWFyY2hJbml0aWFsaXphdGlvbjogc3RyaW5nW10gPSBbXTtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIHBhc3NlZCBjb25maWd1cmF0aW9uIHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBlYWNoIHJlcXVpcmVkIGxvdyBjb2RlIGludGVncmF0aW9uIGFuZFxuICogY3JlYXRlcyBhIGxpc3Qgb2YgbG93IGNvZGUgaW50ZWdyYXRpb25zIHRoYXQgc3RpbGwgbmVlZCB0aGVpciBzZWFyY2ggaW50ZWdyYXRpb24gaW5pdGlhbGl6ZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGluaXRpYWxpemVMb3dDb2RlSW50ZWdyYXRpb25zKCk6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBsb3dDb2RlRGVmaW5pdGlvbnMgPSBsb3dDb2RlSW50ZWdyYXRpb25Qcm92aWRlck9wdGlvbnM/Lm1vZHVsZXMgPz8gW107XG5cdGlmIChsb3dDb2RlRGVmaW5pdGlvbnMubGVuZ3RoID4gMCkge1xuXHRcdGxvZ2dlci5pbmZvKFwiSW5pdGlhbGl6aW5nIGRlZmluZWQgYW5kIGVuYWJsZWQgTG93IENvZGUgSW50ZWdyYXRpb25zLlwiKTtcblx0fVxuXHRmb3IgKGNvbnN0IGxvd0NvZGVEZWZpbml0aW9uIG9mIGxvd0NvZGVEZWZpbml0aW9ucykge1xuXHRcdGlmIChpc0VtcHR5KGxvd0NvZGVEZWZpbml0aW9uLmVuYWJsZWQpIHx8IGxvd0NvZGVEZWZpbml0aW9uLmVuYWJsZWQpIHtcblx0XHRcdGlmIChpc0VtcHR5KGxvd0NvZGVJbnRlZ3JhdGlvbnMpKSB7XG5cdFx0XHRcdGxvd0NvZGVJbnRlZ3JhdGlvbnMgPSB7fTtcblx0XHRcdH1cblx0XHRcdHN3aXRjaCAobG93Q29kZURlZmluaXRpb24udHlwZSkge1xuXHRcdFx0XHRjYXNlIFwibXMzNjVcIjoge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRpZiAoIWlzRW1wdHkobG93Q29kZURlZmluaXRpb24uZGF0YSkpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbXMzNjVJbnRlZ3JhdGlvbiA9IG5ldyBJbnRlZ3JhdGlvbnMuTWljcm9zb2Z0MzY1V29ya2Zsb3dJbnRlZ3JhdGlvbihcblx0XHRcdFx0XHRcdFx0XHRsb3dDb2RlRGVmaW5pdGlvbi5kYXRhXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdGxvd0NvZGVJbnRlZ3JhdGlvbnNbbG93Q29kZURlZmluaXRpb24uaWRdID0gbXMzNjVJbnRlZ3JhdGlvbjtcblx0XHRcdFx0XHRcdFx0bG9nZ2VyLmluZm8oYEluaXRpYWxpemVkIGxvdyBjb2RlIGludGVncmF0aW9uIHdpdGggaWQ6ICR7bG93Q29kZURlZmluaXRpb24uaWR9YCk7XG5cdFx0XHRcdFx0XHRcdGlmIChsb3dDb2RlRGVmaW5pdGlvbi5kYXRhPy53b3JrZmxvd3M/LnNlYXJjaD8uZGlzYWJsZUF1dG9Jbml0aWFsaXplKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVxdWlyZXNTZWFyY2hJbml0aWFsaXphdGlvbi5wdXNoKGxvd0NvZGVEZWZpbml0aW9uLmlkKTtcblx0XHRcdFx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcblx0XHRcdFx0XHRcdFx0XHRcdGBMb3cgQ29kZSBJbnRlZ3JhdGlvbiB3aXRoIGlkOiAke2xvd0NvZGVEZWZpbml0aW9uLmlkfSBpcyBub3QgYXV0byByZWdpc3RlcmVkIGFnYWluc3QgaG9tZS4gQWRkaW5nIHRvIHRoZSBxdWV1ZSBmb3IgbGF0ZXIgaW5pdGlhbGl6YXRpb24uYFxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdFx0XHRcdGBVbmFibGUgdG8gaW5pdGlhbGl6ZSBMb3cgQ29kZSBJbnRlZ3JhdGlvbiB3aXRoIGlkOiAke2xvd0NvZGVEZWZpbml0aW9uLmlkfSBhcyBpdCBkaWQgbm90IGhhdmUgYSBjb25maWd1cmF0aW9uIHNwZWNpZmllZCB2aWEgaXQncyBkYXRhIHNldHRpbmcuYFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0XHRsb2dnZXIuZXJyb3IoXG5cdFx0XHRcdFx0XHRcdGBFcnJvciBpbml0aWFsaXppbmcgTG93IENvZGUgSW50ZWdyYXRpb24gd2l0aCBpZDogJHtsb3dDb2RlRGVmaW5pdGlvbi5pZH0gYW5kIHR5cGU6ICR7bG93Q29kZURlZmluaXRpb24udHlwZX1gLFxuXHRcdFx0XHRcdFx0XHRlcnJvclxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGVmYXVsdDoge1xuXHRcdFx0XHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFx0XHRcdGBVbmFibGUgdG8gYWRkIExvdyBDb2RlIEludGVncmF0aW9uIGRlZmluaXRpb24gd2l0aCBpZDogJHtsb3dDb2RlRGVmaW5pdGlvbi5pZH0gYXMgdGhlIHR5cGU6ICR7bG93Q29kZURlZmluaXRpb24udHlwZX0gaXMgdW5zdXBwb3J0ZWQuYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIHRoZSBMb3cgQ29kZSBJbnRlZ3JhdGlvbiBwcm92aWRlci5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSBMb3cgQ29kZSBJbnRlZ3JhdGlvbiBQcm92aWRlci5cbiAqIEByZXR1cm5zIE5vdGhpbmcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KG9wdGlvbnM6IExvd0NvZGVJbnRlZ3JhdGlvblByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAoIWlzRW1wdHkob3B0aW9ucykpIHtcblx0XHRsb2dnZXIuaW5mbyhcIkxvd0NvZGVJbnRlZ3JhdGlvblByb3ZpZGVyIGluaXRpYWxpemVkIHdpdGggb3B0aW9ucy5cIik7XG5cdFx0bG93Q29kZUludGVncmF0aW9uUHJvdmlkZXJPcHRpb25zID0gb3B0aW9ucztcblx0fVxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIGxvdyBjb2RlIGludGVncmF0aW9uIGluc3RhbmNlcyBpZiBub3QgYWxyZWFkeSBpbml0aWFsaXplZCBhbmRcbiAqIHJldHVybnMgdGhlbSBhcyBhbiBhcnJheSBvZiBpbnN0YW5jZXMuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBXb3JrZmxvd0ludGVncmF0aW9ucy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyKCk6IFByb21pc2U8V29ya2Zsb3dJbnRlZ3JhdGlvbltdPiB7XG5cdGlmIChpc0VtcHR5KGxvd0NvZGVJbnRlZ3JhdGlvbnMpKSB7XG5cdFx0YXdhaXQgaW5pdGlhbGl6ZUxvd0NvZGVJbnRlZ3JhdGlvbnMoKTtcblx0fVxuXHRpZiAoaXNFbXB0eShsb3dDb2RlSW50ZWdyYXRpb25zKSkge1xuXHRcdHJldHVybiBbXTtcblx0fVxuXHRyZXR1cm4gT2JqZWN0LnZhbHVlcyhsb3dDb2RlSW50ZWdyYXRpb25zKTtcbn1cblxuLyoqXG4gKiBDYWxsZWQgaW4gb3JkZXIgdG8gaW5pdGlhbGl6ZSBhbnkgbG93IGNvZGUgaW50ZWdyYXRpb25zIHRoYXQgd2VyZSBpbnN0YW50aWF0ZWQgYnV0IG5vdCBub3QgYXV0b21hdGljYWxseSBpbml0aWFsaXplZC5cbiAqIEByZXR1cm5zIE5vdGhpbmcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0aWFsaXplV29ya2Zsb3dzKCk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAocmVxdWlyZXNTZWFyY2hJbml0aWFsaXphdGlvbi5sZW5ndGggPiAwKSB7XG5cdFx0bG9nZ2VyLmluZm8oYFJlZ2lzdGVyaW5nICR7cmVxdWlyZXNTZWFyY2hJbml0aWFsaXphdGlvbi5sZW5ndGh9IGxvdyBjb2RlIGludGVncmF0aW9ucyBhZ2FpbnN0IEhvbWVgKTtcblx0XHRmb3IgKGNvbnN0IGlkIG9mIHJlcXVpcmVzU2VhcmNoSW5pdGlhbGl6YXRpb24pIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGxvZ2dlci5pbmZvKGBJbml0aWFsaXppbmcgd29ya2Zsb3cgc2VhcmNoIGZvciBsb3cgY29kZSBpbnRlZ3JhdGlvbiAke2lkfS5gKTtcblx0XHRcdFx0YXdhaXQgbG93Q29kZUludGVncmF0aW9uc1tpZF0/LmluaXRpYWxpemVXb3JrZmxvdyhcInNlYXJjaFwiKTtcblx0XHRcdFx0bG9nZ2VyLmluZm8oYFdvcmtmbG93IHNlYXJjaCBmb3IgbG93IGNvZGUgaW50ZWdyYXRpb24gJHtpZH0gaW5pdGlhbGl6ZWQuYCk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXG5cdFx0XHRcdFx0YEVycm9yIGluaXRpYWxpemluZyBsb3cgY29kZSBpbnRlZ3JhdGlvbiB3aXRoIGlkOiAke2lkfS4gSXQgaGFkIHRoZSBmb2xsb3dpbmcgZXJyb3JgLFxuXHRcdFx0XHRcdGVycm9yXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJlcXVpcmVzU2VhcmNoSW5pdGlhbGl6YXRpb24ubGVuZ3RoID0gMDtcblx0fVxufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBvciBub3Qgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgcmVnaXN0ZXJlZCBsb3cgY29kZSBpbnRlZ3JhdGlvbiB0aGF0IGhhcyBiZWVuIGluaXRpYWxpemVkLlxuICogQHJldHVybnMgTm90aGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzUmVnaXN0ZXJlZEludGVncmF0aW9ucygpOiBib29sZWFuIHtcblx0cmV0dXJuIChcblx0XHQhaXNFbXB0eShsb3dDb2RlSW50ZWdyYXRpb25zKSAmJlxuXHRcdE9iamVjdC52YWx1ZXMobG93Q29kZUludGVncmF0aW9ucyk/Lmxlbmd0aCA+IDAgJiZcblx0XHRyZXF1aXJlc1NlYXJjaEluaXRpYWxpemF0aW9uLmxlbmd0aCA9PT0gMFxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBSZWdpc3RyYXRpb25NZXRhSW5mbyB9IGZyb20gXCJAb3BlbmZpbi93b3Jrc3BhY2VcIjtcbmltcG9ydCB7XG5cdFZFUlNJT04sXG5cdGRlcmVnaXN0ZXIgYXMgZGVyZWdpc3RlclBsYXRmb3JtLFxuXHRoaWRlIGFzIGhpZGVOb3RpZmljYXRpb25zLFxuXHRwcm92aWRlcixcblx0cmVnaXN0ZXIgYXMgcmVnaXN0ZXJQbGF0Zm9ybSxcblx0c2hvdyBhcyBzaG93Tm90aWZpY2F0aW9ucyxcblx0dHlwZSBTaG93T3B0aW9uc1xufSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlL25vdGlmaWNhdGlvbnNcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuLi9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB7IGdldFNldHRpbmdzIH0gZnJvbSBcIi4uL3NldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IE5vdGlmaWNhdGlvblByb3ZpZGVyT3B0aW9ucyB9IGZyb20gXCIuLi9zaGFwZXMvbm90aWZpY2F0aW9uLXNoYXBlc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoXCJOb3RpZmljYXRpb25zXCIpO1xuXG5sZXQgbm90aWZpY2F0aW9uc1Byb3ZpZGVyT3B0aW9uczogTm90aWZpY2F0aW9uUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xubGV0IG5vdGlmaWNhdGlvbnNSZWdpc3RlcmVkID0gZmFsc2U7XG5sZXQgbWV0YUluZm86IFJlZ2lzdHJhdGlvbk1ldGFJbmZvO1xuXG4vKipcbiAqIFJlZ2lzdGVyIHRoZSBob21lIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgaG9tZSBwcm92aWRlci5cbiAqIEByZXR1cm5zIFRoZSByZWdpc3RyYXRpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWdpc3Rlcihcblx0b3B0aW9uczogTm90aWZpY2F0aW9uUHJvdmlkZXJPcHRpb25zIHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPFJlZ2lzdHJhdGlvbk1ldGFJbmZvPiB7XG5cdGlmICghbm90aWZpY2F0aW9uc1JlZ2lzdGVyZWQpIHtcblx0XHRub3RpZmljYXRpb25zUHJvdmlkZXJPcHRpb25zID0gb3B0aW9ucztcblx0XHRsb2dnZXIuaW5mbyhcIkdhdGhlcmluZyBub3RpZmljYXRpb24gY2VudGVyIHN0YXR1cyBhbmQgdmVyc2lvbi5cIik7XG5cblx0XHRjb25zdCBwcm92aWRlclN0YXR1cyA9IGF3YWl0IHByb3ZpZGVyLmdldFN0YXR1cygpO1xuXHRcdG1ldGFJbmZvID0ge1xuXHRcdFx0d29ya3NwYWNlVmVyc2lvbjogcHJvdmlkZXJTdGF0dXMudmVyc2lvbiA/PyBcIlwiLFxuXHRcdFx0Y2xpZW50QVBJVmVyc2lvbjogVkVSU0lPTlxuXHRcdH07XG5cblx0XHRsb2dnZXIuaW5mbyhcIlZlcnNpb25pbmcgaW5mb3JtYXRpb24gY29sbGVjdGVkLlwiLCBtZXRhSW5mbyk7XG5cblx0XHRpZiAocHJvdmlkZXJTdGF0dXMuY29ubmVjdGVkKSB7XG5cdFx0XHRsb2dnZXIuaW5mbyhcIkNvbm5lY3RlZCB0byB0aGUgTm90aWZpY2F0aW9uIENlbnRlci4gUmVnaXN0ZXJpbmcgcGxhdGZvcm0gd2l0aCBOb3RpZmljYXRpb24gQ2VudGVyLlwiKTtcblx0XHRcdGNvbnN0IHNldHRpbmdzID0gYXdhaXQgZ2V0U2V0dGluZ3MoKTtcblx0XHRcdGNvbnN0IG5vdGlmaWNhdGlvblBsYXRmb3JtU2V0dGluZ3MgPSBzZXR0aW5ncz8ubm90aWZpY2F0aW9uUHJvdmlkZXI7XG5cdFx0XHRpZiAoIWlzRW1wdHkobm90aWZpY2F0aW9uUGxhdGZvcm1TZXR0aW5ncykpIHtcblx0XHRcdFx0Ly8gdXNlIGEgcHJvbWlzZS50aGVuIGluc3RlYWQgb2YgYXdhaXQgYXMgd2UgZG8gbm90IHdhbnQgdG8gZGVsYXkgdGhlIHN0YXJ0IHVwIG9mIHRoZSBwbGF0Zm9ybVxuXHRcdFx0XHRyZWdpc3RlclBsYXRmb3JtKG5vdGlmaWNhdGlvblBsYXRmb3JtU2V0dGluZ3MpXG5cdFx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdFx0bm90aWZpY2F0aW9uc1JlZ2lzdGVyZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0bG9nZ2VyLmluZm8oXCJSZWdpc3RlcmVkIG5vdGlmaWNhdGlvbnNcIik7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaCgocmVhc29uKSA9PiB7XG5cdFx0XHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJXZSB3ZXJlIHVuYWJsZSB0byByZWdpc3RlciB3aXRoIE5vdGlmaWNhdGlvbiBDZW50ZXJcIiwgcmVhc29uKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcdFwiVW5hYmxlIHRvIHJlZ2lzdGVyIG5vdGlmaWNhdGlvbnMgcGxhdGZvcm0gYXMgd2UgZG8gbm90IGhhdmUgaXQgZGVmaW5lZCBhcyBwYXJ0IG9mIHNldHRpbmdzXCJcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0bG9nZ2VyLmluZm8oXCJVbmFibGUgdG8gcmVnaXN0ZXIgYWdhaW5zdCBub3RpZmljYXRpb24gY2VudGVyIGFzIHRoZSBjZW50ZXIgd2Fzbid0IGNvbm5lY3RlZC5cIik7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtZXRhSW5mbztcbn1cblxuLyoqXG4gKiBEZXJlZ2lzdGVyIHRoZSBub3RpZmljYXRpb25zIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlcmVnaXN0ZXIoKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChub3RpZmljYXRpb25zUmVnaXN0ZXJlZCkge1xuXHRcdG5vdGlmaWNhdGlvbnNSZWdpc3RlcmVkID0gZmFsc2U7XG5cblx0XHRpZiAoIWlzRW1wdHkobm90aWZpY2F0aW9uc1Byb3ZpZGVyT3B0aW9ucykpIHtcblx0XHRcdGxvZ2dlci5pbmZvKFwiRGVyZWdpc3RlciBwbGF0Zm9ybSBmcm9tIG5vdGlmaWNhdGlvbnNcIik7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRhd2FpdCBkZXJlZ2lzdGVyUGxhdGZvcm0obm90aWZpY2F0aW9uc1Byb3ZpZGVyT3B0aW9ucy5pZCk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJVbmFibGUgdG8gZGVyZWdpc3RlciBwbGF0Zm9ybSBmcm9tIG5vdGlmaWNhdGlvbnMuXCIsIGVycm9yKTtcblx0XHRcdH1cblx0XHRcdG5vdGlmaWNhdGlvbnNQcm92aWRlck9wdGlvbnMgPSB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRcIlVuYWJsZSB0byBkZXJlZ2lzdGVyIHBsYXRmb3JtIG5vdGlmaWNhdGlvbnMgYXMgd2UgZG8gbm90IGhhdmUgbm90aWZpY2F0aW9ucyBkZWZpbmVkIGFzIHBhcnQgb2Ygc2V0dGluZ3NcIlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBTaG93IHRoZSBub3RpZmljYXRpb24gY2VudGVyLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHNob3dpbmcuXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hvdyhvcHRpb25zPzogU2hvd09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcblx0bG9nZ2VyLmluZm8oXCJTaG93IE5vdGlmaWNhdGlvbnMgY2FsbGVkLlwiKTtcblx0cmV0dXJuIHNob3dOb3RpZmljYXRpb25zKG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIEhpZGUgdGhlIG5vdGlmaWNhdGlvbiBjZW50ZXIuXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGlkZSgpOiBQcm9taXNlPHZvaWQ+IHtcblx0bG9nZ2VyLmluZm8oXCJIaWRlIE5vdGlmaWNhdGlvbnMgY2FsbGVkLlwiKTtcblx0cmV0dXJuIGhpZGVOb3RpZmljYXRpb25zKCk7XG59XG4iLCJpbXBvcnQge1xuXHRTdG9yZWZyb250LFxuXHRTdG9yZWZyb250VGVtcGxhdGUsXG5cdHR5cGUgUmVnaXN0cmF0aW9uTWV0YUluZm8sXG5cdHR5cGUgU3RvcmVCdXR0b25Db25maWcsXG5cdHR5cGUgU3RvcmVSZWdpc3RyYXRpb24sXG5cdHR5cGUgU3RvcmVmcm9udERldGFpbGVkTmF2aWdhdGlvbkl0ZW0sXG5cdHR5cGUgU3RvcmVmcm9udEZvb3Rlcixcblx0dHlwZSBTdG9yZWZyb250TGFuZGluZ1BhZ2UsXG5cdHR5cGUgU3RvcmVmcm9udE5hdmlnYXRpb25JdGVtLFxuXHR0eXBlIFN0b3JlZnJvbnROYXZpZ2F0aW9uU2VjdGlvblxufSBmcm9tIFwiQG9wZW5maW4vd29ya3NwYWNlXCI7XG5pbXBvcnQgeyBQTEFURk9STV9BQ1RJT05fSURTIH0gZnJvbSBcIi4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEFwcCwgZ2V0QXBwcywgZ2V0QXBwc0J5VGFnIH0gZnJvbSBcIi4uL2FwcHNcIjtcbmltcG9ydCAqIGFzIGZhdm9yaXRlUHJvdmlkZXIgZnJvbSBcIi4uL2Zhdm9yaXRlXCI7XG5pbXBvcnQgeyBsYXVuY2ggfSBmcm9tIFwiLi4vbGF1bmNoXCI7XG5pbXBvcnQgeyBzdWJzY3JpYmVMaWZlY3ljbGVFdmVudCwgdW5zdWJzY3JpYmVMaWZlY3ljbGVFdmVudCB9IGZyb20gXCIuLi9saWZlY3ljbGVcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuLi9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIHsgUGxhdGZvcm1BcHAgfSBmcm9tIFwiLi4vc2hhcGVzL2FwcC1zaGFwZXNcIjtcbmltcG9ydCB7IEZBVk9SSVRFX1RZUEVfTkFNRV9BUFAsIHR5cGUgRmF2b3JpdGVFbnRyeSB9IGZyb20gXCIuLi9zaGFwZXMvZmF2b3JpdGUtc2hhcGVzXCI7XG5pbXBvcnQgdHlwZSB7IEZhdm9yaXRlQ2hhbmdlZExpZmVjeWNsZVBheWxvYWQgfSBmcm9tIFwiLi4vc2hhcGVzL2xpZmVjeWNsZS1zaGFwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0U3RvcmVmcm9udFByb3ZpZGVyT3B0aW9ucyxcblx0U3RvcmVmcm9udFNldHRpbmdzTGFuZGluZ1BhZ2VSb3csXG5cdFN0b3JlZnJvbnRTZXR0aW5nc05hdmlnYXRpb25JdGVtXG59IGZyb20gXCIuLi9zaGFwZXMvc3RvcmUtc2hhcGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5LCBpc1N0cmluZ1ZhbHVlLCByYW5kb21VVUlEIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmNvbnN0IFRPUF9ST1dfTElNSVQgPSA0O1xuY29uc3QgTUlERExFX1JPV19MSU1JVCA9IDY7XG5jb25zdCBCT1RUT01fUk9XX0xJTUlUID0gMztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiU3RvcmVcIik7XG5cbmxldCBzdG9yZVByb3ZpZGVyT3B0aW9uczogU3RvcmVmcm9udFByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZDtcbmxldCByZWdpc3RyYXRpb25JbmZvOiBTdG9yZVJlZ2lzdHJhdGlvbiB8IHVuZGVmaW5lZDtcbmxldCBmYXZDaGFuZ2VkU3Vic2NyaXB0aW9uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBSZWdpc3RlciB0aGUgc3RvcmUgY29tcG9uZW50LlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSBzdG9yZSBwcm92aWRlci5cbiAqIEByZXR1cm5zIFRoZSByZWdpc3RyYXRpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWdpc3Rlcihcblx0b3B0aW9uczogU3RvcmVmcm9udFByb3ZpZGVyT3B0aW9ucyB8IHVuZGVmaW5lZFxuKTogUHJvbWlzZTxSZWdpc3RyYXRpb25NZXRhSW5mbyB8IHVuZGVmaW5lZD4ge1xuXHRpZiAob3B0aW9ucykge1xuXHRcdHN0b3JlUHJvdmlkZXJPcHRpb25zID0gb3B0aW9ucztcblx0XHRsb2dnZXIuaW5mbyhcIkluaXRpYWxpemluZyB0aGUgc3RvcmVmcm9udCBwcm92aWRlclwiKTtcblxuXHRcdGlmIChpc1N0b3JlZnJvbnRDb25maWd1cmF0aW9uVmFsaWQoKSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmVnaXN0cmF0aW9uSW5mbyA9IGF3YWl0IFN0b3JlZnJvbnQucmVnaXN0ZXIoe1xuXHRcdFx0XHRcdGlkOiBzdG9yZVByb3ZpZGVyT3B0aW9ucy5pZCxcblx0XHRcdFx0XHR0aXRsZTogc3RvcmVQcm92aWRlck9wdGlvbnMudGl0bGUsXG5cdFx0XHRcdFx0aWNvbjogc3RvcmVQcm92aWRlck9wdGlvbnMuaWNvbixcblx0XHRcdFx0XHRnZXROYXZpZ2F0aW9uOiBhc3luYyAoKSA9PiBnZXROYXZpZ2F0aW9uKCksXG5cdFx0XHRcdFx0Z2V0TGFuZGluZ1BhZ2U6IGFzeW5jICgpID0+IGdldExhbmRpbmdQYWdlKCksXG5cdFx0XHRcdFx0Z2V0Rm9vdGVyOiBhc3luYyAoKSA9PiBnZXRGb290ZXIoKSxcblx0XHRcdFx0XHRnZXRBcHBzOiBhc3luYyAoKSA9PiBhZGRCdXR0b25zKGF3YWl0IGdldEFwcHMoeyBwcml2YXRlOiBmYWxzZSB9KSksXG5cdFx0XHRcdFx0bGF1bmNoQXBwOiBhc3luYyAoYXBwKSA9PiB7XG5cdFx0XHRcdFx0XHRhd2FpdCBsYXVuY2goYXBwIGFzIFBsYXRmb3JtQXBwKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGZhdkNoYW5nZWRTdWJzY3JpcHRpb25JZCA9IHN1YnNjcmliZUxpZmVjeWNsZUV2ZW50PEZhdm9yaXRlQ2hhbmdlZExpZmVjeWNsZVBheWxvYWQ+KFxuXHRcdFx0XHRcdFwiZmF2b3JpdGUtY2hhbmdlZFwiLFxuXHRcdFx0XHRcdGFzeW5jIChfOiB1bmtub3duLCBwYXlsb2FkPzogRmF2b3JpdGVDaGFuZ2VkTGlmZWN5Y2xlUGF5bG9hZCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKCFpc0VtcHR5KHBheWxvYWQpKSB7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IHVwZGF0ZUFwcEZhdm9yaXRlQnV0dG9ucyhwYXlsb2FkKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJWZXJzaW9uOlwiLCByZWdpc3RyYXRpb25JbmZvKTtcblx0XHRcdFx0bG9nZ2VyLmluZm8oXCJTdG9yZWZyb250IHByb3ZpZGVyIGluaXRpYWxpemVkXCIpO1xuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdGxvZ2dlci5lcnJvcihcIkFuIGVycm9yIHdhcyBlbmNvdW50ZXJlZCB3aGlsZSB0cnlpbmcgdG8gcmVnaXN0ZXIgdGhlIGNvbnRlbnQgc3RvcmUgcHJvdmlkZXJcIiwgZXJyKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmVnaXN0cmF0aW9uSW5mbztcbn1cblxuLyoqXG4gKiBEZXJlZ2lzdGVyIHRoZSBzdG9yZSBjb21wb25lbnQuXG4gKiBAcmV0dXJucyBOb3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVyZWdpc3RlcigpOiBQcm9taXNlPHZvaWQ+IHtcblx0aWYgKHJlZ2lzdHJhdGlvbkluZm8pIHtcblx0XHRsb2dnZXIuaW5mbyhcIkFib3V0IHRvIGRlcmVnaXN0ZXIgU3RvcmUuXCIpO1xuXHRcdGlmIChpc1N0cmluZ1ZhbHVlKGZhdkNoYW5nZWRTdWJzY3JpcHRpb25JZCkpIHtcblx0XHRcdHVuc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnQoZmF2Q2hhbmdlZFN1YnNjcmlwdGlvbklkLCBcImZhdm9yaXRlLWNoYW5nZWRcIik7XG5cdFx0XHRmYXZDaGFuZ2VkU3Vic2NyaXB0aW9uSWQgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmIChzdG9yZVByb3ZpZGVyT3B0aW9ucykge1xuXHRcdFx0YXdhaXQgU3RvcmVmcm9udC5kZXJlZ2lzdGVyKHN0b3JlUHJvdmlkZXJPcHRpb25zLmlkKTtcblx0XHRcdHJlZ2lzdHJhdGlvbkluZm8gPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XCJVbmFibGUgdG8gY2FsbCBzdG9yZSBkZXJlZ2lzdGVyIGFzIHRoZXJlIGlzIGFuIGluZGljYXRpb24gaXQgd2FzIG5ldmVyIHJlZ2lzdGVyZWQgc3VjY2Vzc2Z1bGx5LlwiXG5cdFx0KTtcblx0fVxufVxuXG4vKipcbiAqIFNob3cgdGhlIHN0b3JlIGNvbXBvbmVudC5cbiAqIEByZXR1cm5zIE5vdGhpbmcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaG93KCk6IFByb21pc2U8dm9pZD4ge1xuXHRsb2dnZXIuaW5mbyhcIlNob3dpbmcgdGhlIHN0b3JlLlwiKTtcblx0cmV0dXJuIFN0b3JlZnJvbnQuc2hvdygpO1xufVxuXG4vKipcbiAqIEhpZGUgdGhlIGhvbWUgY29tcG9uZW50LlxuICogQHJldHVybnMgTm90aGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhpZGUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdGxvZ2dlci5pbmZvKFwiSGlkaW5nIHRoZSBzdG9yZS5cIik7XG5cdHJldHVybiBTdG9yZWZyb250LmhpZGUoKTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgd2hlbiBhIG5hdmlnYXRpb24gaXRlbSBvciBzZWN0aW9uIGhhc24ndCBiZWVuIGNvbmZpZ3VyZWQgd2l0aCBhbiBJRC4gVGhpcyBpcyB0byBzaW1wbGlmeVxuICogY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkZW1vLiBJbiBhIHJlYWwgYXBwbGljYXRpb24geW91IHdvdWxkIG5lZWQgYW4gaWRlbXBvdGVudCBhbmQgdW5pcXVlIElEICh0aGluayBHVUlEKSB0aGF0XG4gKiBkb2Vzbid0IGNoYW5nZSBmb3IgdGhhdCBuYXZpZ2F0aW9uIGl0ZW0vc2VjdGlvbiByZWdhcmRsZXNzIG9mIGhvdyBtYW55IHRpbWVzIGl0IGlzIHJlZ2VuZXJhdGVkIChlLmcuIG1vcmUgaXRlbXMgY2FuXG4gKiBiZSBhZGRlZCB0byB0aGUgaXRlbS9zZWN0aW9uIGJ1dCB0aGUgSUQgc3RheXMgdGhlIHNhbWUpLiBBcyB5b3UgbmF2aWdhdGUgYXJvdW5kIHRoZSBzdG9yZSB0aGlzIElEIGlzIHVzZWQgYXMgYSByb3V0ZS5cbiAqIFNvIGlmIGEgdXNlciBjbGlja3Mgb24gYSBsaW5rLCBuYXZpZ2F0ZXMgdG8gYSBuZXcgcGFnZSBhbmQgdGhlIHJlLXJlcXVlc3RlZCBuYXZpZ2F0aW9uIGl0ZW0gaGFzIGEgZGlmZmVyZW50IElEIHRoZW5cbiAqIHRoZSBzdG9yZSB3aWxsIG5vdCBiZSBhYmxlIHRvIGZpbmQgYSBtYXRjaCBhbmQgaXQgd29uJ3QgYmUgYWJsZSB0byByZW5kZXIgdGhlIG5hdmlnYXRpb24gaXRlbS4gQSByZWFsIGFwcGxpY2F0aW9uXG4gKiB3b3VsZCBub3QgdXNlIHRoaXMgYXBwcm9hY2ggKGFzIGFuIHVwZGF0ZSB0byB0aGUgdGFnIGxpc3Qgd291bGQgcmVzdWx0IGluIGEgbmV3IElEIHdoaWNoIHdvdWxkIGZhaWwgaWYgdGhlIGNvbmZpZyB3YXNcbiAqIGZldGNoZWQgZnJvbSBhIHNlcnZlciBhbmQgbm90IGEgbWFuaWZlc3QpLlxuICogQHBhcmFtIHRpdGxlIFRoZSB0aXRsZSBvZiB0aGUgaXRlbS5cbiAqIEBwYXJhbSB0YWdzIFRoZSB0YWdzIGZvciB0aGUgaXRlbS5cbiAqIEByZXR1cm5zIEEgY2FsY3VsYXRlZCBpZC5cbiAqL1xuZnVuY3Rpb24gZ2V0SWQodGl0bGU6IHN0cmluZywgdGFnczogc3RyaW5nW10gPSBbXSk6IHN0cmluZyB7XG5cdGNvbnN0IHNlYXJjaCA9IFwiIFwiO1xuXHRjb25zdCByZXBsYWNlV2l0aCA9IFwiLVwiO1xuXHRsZXQgcmVzdWx0ID0gdGl0bGUucmVwbGFjZUFsbChzZWFyY2gsIHJlcGxhY2VXaXRoKTtcblx0cmVzdWx0ICs9IGAtJHt0YWdzLmpvaW4oXCItXCIpfWA7XG5cdHJldHVybiByZXN1bHQudG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSB0aGUgc3RvcmUgY29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgdmFsaWQuXG4gKi9cbmZ1bmN0aW9uIGlzU3RvcmVmcm9udENvbmZpZ3VyYXRpb25WYWxpZCgpOiBib29sZWFuIHtcblx0Y29uc3QgaWRMaXN0OiBzdHJpbmdbXSA9IFtdO1xuXHRsZXQgaGFzRHVwbGljYXRlSWRzID0gZmFsc2U7XG5cblx0aWYgKFxuXHRcdGlzRW1wdHkoc3RvcmVQcm92aWRlck9wdGlvbnMpIHx8XG5cdFx0aXNFbXB0eShzdG9yZVByb3ZpZGVyT3B0aW9ucy5pZCkgfHxcblx0XHRpc0VtcHR5KHN0b3JlUHJvdmlkZXJPcHRpb25zLnRpdGxlKSB8fFxuXHRcdChpc0VtcHR5KHN0b3JlUHJvdmlkZXJPcHRpb25zLmZvb3RlcikgJiZcblx0XHRcdCFpc0VtcHR5KHN0b3JlUHJvdmlkZXJPcHRpb25zLmxhbmRpbmdQYWdlKSAmJlxuXHRcdFx0IWlzRW1wdHkoc3RvcmVQcm92aWRlck9wdGlvbnMubGFuZGluZ1BhZ2UudG9wUm93KSAmJlxuXHRcdFx0IWlzRW1wdHkoc3RvcmVQcm92aWRlck9wdGlvbnMubGFuZGluZ1BhZ2UubWlkZGxlUm93KSAmJlxuXHRcdFx0IWlzRW1wdHkoc3RvcmVQcm92aWRlck9wdGlvbnMubGFuZGluZ1BhZ2UuYm90dG9tUm93KSAmJlxuXHRcdFx0IWlzRW1wdHkoc3RvcmVQcm92aWRlck9wdGlvbnMubmF2aWdhdGlvbikpXG5cdCkge1xuXHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdFwiU3RvcmVmcm9udFByb3ZpZGVyIGlzIG5vdCBjb3JyZWN0bHkgY29uZmlndXJlZCBpbiB0aGUgY3VzdG9tU2V0dGluZ3Mgb2YgdGhpcyBtYW5pZmVzdC4gWW91IG11c3QgZW5zdXJlIHRoYXQgc3RvcmVmcm9udFByb3ZpZGVyIGlzIGRlZmluZWQsIHRoYXQgaXQgaGFzIGFuIGlkIGFuZCB0aXRsZSBhbmQgdGhhdCB0aGUgZm9vdGVyLCBsYW5kaW5nUGFnZSAodG9wIHJvdywgbWlkZGxlIHJvdyBhbmQgYm90dG9tIHJvdykgYW5kIG5hdmlnYXRpb24gc2VjdGlvbnMgaGF2ZSBiZWVuIGRlZmluZWRcIlxuXHRcdCk7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Y29uc3Qgd2FybmluZ01lc3NhZ2UgPVxuXHRcdFwiVGhlIGlkIGlzIG5vdCBkZWZpbmVkLiBUaGlzIGRlbW8gd2lsbCBnZW5lcmF0ZSBhbiBpZCBiYXNlZCBvbiB0aXRsZSBidXQgeW91IHNob3VsZCBoYXZlIGEgdW5pcXVlIGFuZCBpZGVtcG90ZW50IGlkIHdoZW4gYnVpbGRpbmcgeW91ciBvd24gc3RvcmVcIjtcblxuXHRsb2dnZXIuaW5mbyhcIlZhbGlkYXRpbmcgc2V0dGluZ3Mgc3RvcmVmcm9udFByb3ZpZGVyIG5hdmlnYXRpb24gY29uZmlnXCIpO1xuXHRjb25zdCBuYXZpZ2F0aW9uID0gc3RvcmVQcm92aWRlck9wdGlvbnMubmF2aWdhdGlvbjtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuYXZpZ2F0aW9uLmxlbmd0aDsgaSsrKSB7XG5cdFx0aGFzRHVwbGljYXRlSWRzID0gdmFsaWRhdGVJZChcblx0XHRcdG5hdmlnYXRpb25baV0uaWQsXG5cdFx0XHRgc3RvcmVmcm9udFByb3ZpZGVyLm5hdmlnYXRpb25bJHtpfV0uaWRgLFxuXHRcdFx0d2FybmluZ01lc3NhZ2UsXG5cdFx0XHRpZExpc3QsXG5cdFx0XHRoYXNEdXBsaWNhdGVJZHNcblx0XHQpO1xuXHRcdGNvbnN0IGl0ZW1zID0gbmF2aWdhdGlvbltpXS5pdGVtcztcblx0XHRmb3IgKGxldCBuID0gMDsgbiA8IGl0ZW1zLmxlbmd0aDsgbisrKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGVJZHMgPSB2YWxpZGF0ZUlkKFxuXHRcdFx0XHRpdGVtc1tuXS5pZCxcblx0XHRcdFx0YHN0b3JlZnJvbnRQcm92aWRlci5uYXZpZ2F0aW9uWyR7aX1dLml0ZW1zWyR7bn1dLmlkYCxcblx0XHRcdFx0d2FybmluZ01lc3NhZ2UsXG5cdFx0XHRcdGlkTGlzdCxcblx0XHRcdFx0aGFzRHVwbGljYXRlSWRzXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdGxvZ2dlci5pbmZvKFwiVmFsaWRhdGluZyBzZXR0aW5ncyBzdG9yZWZyb250UHJvdmlkZXIgbGFuZGluZyBwYWdlIGhlcm8gY29uZmlnXCIpO1xuXHRjb25zdCBsYW5kaW5nUGFnZSA9IHN0b3JlUHJvdmlkZXJPcHRpb25zLmxhbmRpbmdQYWdlO1xuXG5cdGlmICghaXNFbXB0eShsYW5kaW5nUGFnZT8uaGVybz8uY3RhKSkge1xuXHRcdGhhc0R1cGxpY2F0ZUlkcyA9IHZhbGlkYXRlSWQoXG5cdFx0XHRsYW5kaW5nUGFnZT8uaGVybz8uY3RhLmlkLFxuXHRcdFx0XCJzdG9yZWZyb250UHJvdmlkZXIubGFuZGluZ1BhZ2UuaGVyby5jdGEuaWRcIixcblx0XHRcdHdhcm5pbmdNZXNzYWdlLFxuXHRcdFx0aWRMaXN0LFxuXHRcdFx0aGFzRHVwbGljYXRlSWRzXG5cdFx0KTtcblx0fVxuXG5cdGxvZ2dlci5pbmZvKFwiVmFsaWRhdGluZyBzZXR0aW5ncyBzdG9yZWZyb250UHJvdmlkZXIgbGFuZGluZyBwYWdlIHRvcCByb3cgY29uZmlnXCIpO1xuXHRjb25zdCB0b3BSb3cgPSBsYW5kaW5nUGFnZS50b3BSb3c7XG5cblx0aWYgKCFpc0VtcHR5KHRvcFJvdy5pdGVtcykpIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRvcFJvdy5pdGVtcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aGFzRHVwbGljYXRlSWRzID0gdmFsaWRhdGVJZChcblx0XHRcdFx0dG9wUm93Lml0ZW1zW2ldLmlkLFxuXHRcdFx0XHRgc3RvcmVmcm9udFByb3ZpZGVyLmxhbmRpbmdQYWdlLnRvcFJvdy5pdGVtc1ske2l9XS5pZGAsXG5cdFx0XHRcdHdhcm5pbmdNZXNzYWdlLFxuXHRcdFx0XHRpZExpc3QsXG5cdFx0XHRcdGhhc0R1cGxpY2F0ZUlkc1xuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRsb2dnZXIuaW5mbyhcIlZhbGlkYXRpbmcgc2V0dGluZ3Mgc3RvcmVmcm9udFByb3ZpZGVyIGxhbmRpbmcgcGFnZSBib3R0b20gcm93IGNvbmZpZ1wiKTtcblx0Y29uc3QgYm90dG9tUm93ID0gbGFuZGluZ1BhZ2UuYm90dG9tUm93O1xuXHRpZiAoIWlzRW1wdHkoYm90dG9tUm93Lml0ZW1zKSkge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYm90dG9tUm93Lml0ZW1zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGVJZHMgPSB2YWxpZGF0ZUlkKFxuXHRcdFx0XHRib3R0b21Sb3cuaXRlbXNbaV0uaWQsXG5cdFx0XHRcdGBzdG9yZWZyb250UHJvdmlkZXIubGFuZGluZ1BhZ2UuYm90dG9tUm93Lml0ZW1zWyR7aX1dLmlkYCxcblx0XHRcdFx0d2FybmluZ01lc3NhZ2UsXG5cdFx0XHRcdGlkTGlzdCxcblx0XHRcdFx0aGFzRHVwbGljYXRlSWRzXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdGxvZ2dlci5pbmZvKFwiVmFsaWRhdGluZyBpZHMsIGNoZWNraW5nIGZvciBkdXBsaWNhdGUgaWRzXCIpO1xuXHRpZiAoaGFzRHVwbGljYXRlSWRzKSB7XG5cdFx0bG9nZ2VyLmVycm9yKFxuXHRcdFx0XCJZb3UgaGF2ZSBkZWZpbmVkIGR1cGxpY2F0ZSBpZHMgKHBsZWFzZSBzZWUgdGhlIG90aGVyIGVycm9yIG1lc3NhZ2VzKSB3aGljaCBjb3VsZCByZXN1bHQgaW4gc3RyYW5nZSBiZWhhdmlvciAoaWYgd2UgYXJlIHJvdXRpbmcgYnkgaWQgYW5kIHlvdSBoYXZlIHR3byBvciBtb3JlIGl0ZW1zIHRoYXQgcmVzb2x2ZSB0byB0aGUgc2FtZSBpZCB0aGVuIGl0IGNvdWxkIG5hdmlnYXRlIHRvIHNvbWV0aGluZyB1bmV4cGVjdGVkLiBQbGVhc2UgZW5zdXJlIGlkcyBhcmUgdW5pcXVlIGFuZCBpZGVtcG90ZW50XCJcblx0XHQpO1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoZSBpZC5cbiAqIEBwYXJhbSBpZCBUaGUgaWQgdG8gdmFsaWRhdGUuXG4gKiBAcGFyYW0gbmFtZXNwYWNlIFRoZSBuYW1lIHRvIHVzZSBmb3IgbWVzc2FnZSBjb250ZXh0LlxuICogQHBhcmFtIHdhcm5pbmcgVGhlIHdhcm5pbmcgdG8gZGlzcGxheS5cbiAqIEBwYXJhbSBpZExpc3QgVGhlIGxpc3QgdG8gYWRkIHRvIGlmIG5vdCBhIGR1cGxpY2F0ZS5cbiAqIEBwYXJhbSBoYXNEdXBsaWNhdGVJZHMgRG8gd2UgYWxyZWFkeSBoYXZlIGR1cGxpY2F0ZSBpZHMuXG4gKiBAcmV0dXJucyBUcnVlIGlmIGEgZHVwbGljYXRlLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUlkKFxuXHRpZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRuYW1lc3BhY2U6IHN0cmluZyxcblx0d2FybmluZzogc3RyaW5nLFxuXHRpZExpc3Q6IHN0cmluZ1tdLFxuXHRoYXNEdXBsaWNhdGVJZHM6IGJvb2xlYW5cbik6IGJvb2xlYW4ge1xuXHRpZiAoaXNFbXB0eShpZCkpIHtcblx0XHRsb2dnZXIud2FybihgJHtuYW1lc3BhY2V9OiAke3dhcm5pbmd9YCk7XG5cdH0gZWxzZSBpZiAoaWRMaXN0LmluY2x1ZGVzKGlkKSkge1xuXHRcdGxvZ2dlci5lcnJvcihcblx0XHRcdGAke25hbWVzcGFjZX06IFRoZSBpZCBpcyB1c2VkIGluIG1vcmUgdGhhbiBvbmUgcGxhY2UuIFBsZWFzZSBoYXZlIGEgdW5pcXVlIGFuZCBpZGVtcG90ZW50IGlkOiAke2lkfWBcblx0XHQpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9IGVsc2Uge1xuXHRcdGlkTGlzdC5wdXNoKGlkKTtcblx0fVxuXHRyZXR1cm4gaGFzRHVwbGljYXRlSWRzO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbmF2aWdhdGlvbiBzZWN0aW9ucyBmb3IgdGhlIHN0b3JlLlxuICogQHJldHVybnMgVGhlIG5hdmlnYXRpb24gc2VjdGlvbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TmF2aWdhdGlvbigpOiBQcm9taXNlPFtTdG9yZWZyb250TmF2aWdhdGlvblNlY3Rpb24/LCBTdG9yZWZyb250TmF2aWdhdGlvblNlY3Rpb24/XT4ge1xuXHRjb25zdCBuYXYgPSBzdG9yZVByb3ZpZGVyT3B0aW9ucz8ubmF2aWdhdGlvbjtcblx0aWYgKGlzRW1wdHkobmF2KSkge1xuXHRcdHJldHVybiBbXTtcblx0fVxuXG5cdGxvZ2dlci5pbmZvKFwiU2hvd2luZyB0aGUgc3RvcmUgbmF2aWdhdGlvblwiKTtcblx0Y29uc3QgbmF2aWdhdGlvblNlY3Rpb25JdGVtTGltaXQgPSA1O1xuXHRjb25zdCBuYXZpZ2F0aW9uU2VjdGlvbkxpbWl0ID0gMjtcblx0Y29uc3QgbmF2aWdhdGlvblNlY3Rpb25zOiBbU3RvcmVmcm9udE5hdmlnYXRpb25TZWN0aW9uPywgU3RvcmVmcm9udE5hdmlnYXRpb25TZWN0aW9uP10gPSBbXTtcblxuXHRmb3IgKGNvbnN0IG5hdkl0ZW0gb2YgbmF2KSB7XG5cdFx0aWYgKG5hdmlnYXRpb25TZWN0aW9ucy5sZW5ndGggPT09IG5hdmlnYXRpb25TZWN0aW9uTGltaXQpIHtcblx0XHRcdGxvZ2dlci5pbmZvKFxuXHRcdFx0XHRcIk1vcmUgdGhhbiAyIG5hdmlnYXRpb24gc2VjdGlvbnMgZGVmaW5lZCBpbiBTdG9yZWZyb250UHJvdmlkZXIgc2V0dGluZ3MuIE9ubHkgdHdvIGFyZSB0YWtlblwiXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNvbnN0IG5hdmlnYXRpb25TZWN0aW9uOiBTdG9yZWZyb250TmF2aWdhdGlvblNlY3Rpb24gPSB7XG5cdFx0XHRpZDogbmF2SXRlbS5pZCA/PyBnZXRJZChuYXZJdGVtLnRpdGxlKSxcblx0XHRcdHRpdGxlOiBuYXZJdGVtLnRpdGxlLFxuXHRcdFx0aXRlbXM6IChhd2FpdCBnZXROYXZpZ2F0aW9uSXRlbXMobmF2SXRlbS5pdGVtcywgbmF2aWdhdGlvblNlY3Rpb25JdGVtTGltaXQpKSBhcyBbXG5cdFx0XHRcdFN0b3JlZnJvbnROYXZpZ2F0aW9uSXRlbSxcblx0XHRcdFx0U3RvcmVmcm9udE5hdmlnYXRpb25JdGVtPyxcblx0XHRcdFx0U3RvcmVmcm9udE5hdmlnYXRpb25JdGVtPyxcblx0XHRcdFx0U3RvcmVmcm9udE5hdmlnYXRpb25JdGVtPyxcblx0XHRcdFx0U3RvcmVmcm9udE5hdmlnYXRpb25JdGVtP1xuXHRcdFx0XVxuXHRcdH07XG5cdFx0bmF2aWdhdGlvblNlY3Rpb25zLnB1c2gobmF2aWdhdGlvblNlY3Rpb24pO1xuXHR9XG5cblx0cmV0dXJuIG5hdmlnYXRpb25TZWN0aW9ucztcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGxhbmRpbmcgcGFnZSBjb250ZW50LlxuICogQHJldHVybnMgVGhlIHN0b3JlIGxhbmRpbmcgcGFnZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TGFuZGluZ1BhZ2UoKTogUHJvbWlzZTxTdG9yZWZyb250TGFuZGluZ1BhZ2U+IHtcblx0bG9nZ2VyLmluZm8oXCJHZXR0aW5nIHRoZSBzdG9yZSBsYW5kaW5nIHBhZ2VcIik7XG5cblx0Y29uc3QgbGFuZGluZ1BhZ2U6IFBhcnRpYWw8U3RvcmVmcm9udExhbmRpbmdQYWdlPiA9IHt9O1xuXG5cdGNvbnN0IGxhbmRpbmdQYWdlU2V0dGluZ3MgPSBzdG9yZVByb3ZpZGVyT3B0aW9ucz8ubGFuZGluZ1BhZ2U7XG5cblx0Y29uc3QgaGVybyA9IGxhbmRpbmdQYWdlU2V0dGluZ3M/Lmhlcm87XG5cdGlmICghaXNFbXB0eShoZXJvKSkge1xuXHRcdGNvbnN0IGN0YSA9IGF3YWl0IGdldE5hdmlnYXRpb25JdGVtKGhlcm8uY3RhLmlkLCBoZXJvLmN0YS50aXRsZSwgaGVyby5jdGEudGFncyk7XG5cdFx0bGFuZGluZ1BhZ2UuaGVybyA9IHtcblx0XHRcdHRpdGxlOiBoZXJvLnRpdGxlLFxuXHRcdFx0aW1hZ2U6IGhlcm8uaW1hZ2UsXG5cdFx0XHRkZXNjcmlwdGlvbjogaGVyby5kZXNjcmlwdGlvbixcblx0XHRcdGN0YVxuXHRcdH07XG5cdH1cblxuXHRjb25zdCB0b3BSb3cgPSBsYW5kaW5nUGFnZVNldHRpbmdzPy50b3BSb3c7XG5cdGlmICghaXNFbXB0eSh0b3BSb3cpKSB7XG5cdFx0Y29uc3Qgcm93ID0gYXdhaXQgZ2V0TGFuZGluZ1BhZ2VSb3codG9wUm93LCBUT1BfUk9XX0xJTUlUKTtcblx0XHRsYW5kaW5nUGFnZS50b3BSb3cgPSB7XG5cdFx0XHR0aXRsZTogcm93LnRpdGxlLFxuXHRcdFx0aXRlbXM6IHJvdy5pdGVtcyBhcyBbXG5cdFx0XHRcdFN0b3JlZnJvbnREZXRhaWxlZE5hdmlnYXRpb25JdGVtPyxcblx0XHRcdFx0U3RvcmVmcm9udERldGFpbGVkTmF2aWdhdGlvbkl0ZW0/LFxuXHRcdFx0XHRTdG9yZWZyb250RGV0YWlsZWROYXZpZ2F0aW9uSXRlbT8sXG5cdFx0XHRcdFN0b3JlZnJvbnREZXRhaWxlZE5hdmlnYXRpb25JdGVtP1xuXHRcdFx0XVxuXHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyLmVycm9yKFwiWW91IG5lZWQgdG8gaGF2ZSBhIHRvcFJvdyBkZWZpbmVkIGluIHlvdXIgbGFuZGluZyBwYWdlXCIpO1xuXHR9XG5cblx0Y29uc3QgbWlkZGxlUm93ID0gbGFuZGluZ1BhZ2VTZXR0aW5ncz8ubWlkZGxlUm93O1xuXHRpZiAoIWlzRW1wdHkobWlkZGxlUm93KSkge1xuXHRcdGNvbnN0IG1pZGRsZVJvd0FwcHMgPSBhd2FpdCBnZXRBcHBzQnlUYWcobWlkZGxlUm93LnRhZ3MsIGZhbHNlLCB7IHByaXZhdGU6IGZhbHNlIH0pO1xuXHRcdGlmIChtaWRkbGVSb3dBcHBzLmxlbmd0aCA+IE1JRERMRV9ST1dfTElNSVQpIHtcblx0XHRcdGxvZ2dlci53YXJuKFxuXHRcdFx0XHRgVG9vIG1hbnkgYXBwcyAoJHtcblx0XHRcdFx0XHRtaWRkbGVSb3dBcHBzLmxlbmd0aFxuXHRcdFx0XHR9KSBoYXZlIGJlZW4gcmV0dXJuZWQgYnkgdGhlIG1pZGRsZSByb3cgdGFnIGRlZmluaXRpb24gJHttaWRkbGVSb3cudGFncy5qb2luKFxuXHRcdFx0XHRcdFwiIFwiXG5cdFx0XHRcdCl9LiBPbmx5ICR7TUlERExFX1JPV19MSU1JVH0gd2lsbCBiZSBzaG93bi5gXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRjb25zdCB2YWxpZGF0ZWRNaWRkbGVSb3dBcHBzID0gKGF3YWl0IGFkZEJ1dHRvbnMobWlkZGxlUm93QXBwcy5zbGljZSgwLCBNSURETEVfUk9XX0xJTUlUKSkpIGFzIFtcblx0XHRcdFBsYXRmb3JtQXBwPyxcblx0XHRcdFBsYXRmb3JtQXBwPyxcblx0XHRcdFBsYXRmb3JtQXBwPyxcblx0XHRcdFBsYXRmb3JtQXBwPyxcblx0XHRcdFBsYXRmb3JtQXBwPyxcblx0XHRcdFBsYXRmb3JtQXBwP1xuXHRcdF07XG5cdFx0bGFuZGluZ1BhZ2UubWlkZGxlUm93ID0ge1xuXHRcdFx0dGl0bGU6IG1pZGRsZVJvdy50aXRsZSxcblx0XHRcdGFwcHM6IHZhbGlkYXRlZE1pZGRsZVJvd0FwcHNcblx0XHR9O1xuXHR9IGVsc2Uge1xuXHRcdGxvZ2dlci5lcnJvcihcIllvdSBuZWVkIHRvIGhhdmUgYSBtaWRkbGVSb3cgZGVmaW5lZCBpbiB5b3VyIGxhbmRpbmcgcGFnZVwiKTtcblx0fVxuXG5cdGNvbnN0IGJvdHRvbVJvdyA9IGxhbmRpbmdQYWdlU2V0dGluZ3M/LmJvdHRvbVJvdztcblx0aWYgKCFpc0VtcHR5KGJvdHRvbVJvdykpIHtcblx0XHRjb25zdCByb3cgPSBhd2FpdCBnZXRMYW5kaW5nUGFnZVJvdyhib3R0b21Sb3csIEJPVFRPTV9ST1dfTElNSVQpO1xuXHRcdGxhbmRpbmdQYWdlLmJvdHRvbVJvdyA9IHtcblx0XHRcdHRpdGxlOiByb3cudGl0bGUsXG5cdFx0XHRpdGVtczogcm93Lml0ZW1zIGFzIFtcblx0XHRcdFx0U3RvcmVmcm9udERldGFpbGVkTmF2aWdhdGlvbkl0ZW0/LFxuXHRcdFx0XHRTdG9yZWZyb250RGV0YWlsZWROYXZpZ2F0aW9uSXRlbT8sXG5cdFx0XHRcdFN0b3JlZnJvbnREZXRhaWxlZE5hdmlnYXRpb25JdGVtP1xuXHRcdFx0XVxuXHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0bG9nZ2VyLmVycm9yKFwiWW91IG5lZWQgdG8gaGF2ZSBhIGJvdHRvbVJvdyBkZWZpbmVkIGluIHlvdXIgbGFuZGluZyBwYWdlXCIpO1xuXHR9XG5cblx0cmV0dXJuIGxhbmRpbmdQYWdlIGFzIFN0b3JlZnJvbnRMYW5kaW5nUGFnZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGZvb3RlciBjb250ZW50LlxuICogQHJldHVybnMgVGhlIHN0b3JlIGZvb3Rlci5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0Rm9vdGVyKCk6IFByb21pc2U8U3RvcmVmcm9udEZvb3Rlcj4ge1xuXHRsb2dnZXIuaW5mbyhcIkdldHRpbmcgdGhlIHN0b3JlIGZvb3RlclwiKTtcblx0Y29uc3QgZm9vdGVyID0gc3RvcmVQcm92aWRlck9wdGlvbnM/LmZvb3Rlcjtcblx0aWYgKCFpc0VtcHR5KGZvb3RlcikpIHtcblx0XHRyZXR1cm4gZm9vdGVyO1xuXHR9XG5cdGxvZ2dlci5lcnJvcihcIlN0b3JlZnJvbnQgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgd2l0aG91dCBhIGZvb3RlciBjb25maWd1cmVkXCIpO1xuXHRyZXR1cm4ge30gYXMgU3RvcmVmcm9udEZvb3Rlcjtcbn1cblxuLyoqXG4gKiBUaGlzIHNlY3Rpb24gZ2VuZXJhdGVzIGEgbmF2aWdhdGlvbiBpdGVtIGZvciBTdG9yZWZyb250IGJhc2VkIG9uIHNvbWUgY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSBpZCBUaGlzIGlkIHNob3VsZCBiZSB1bmlxdWUgYW5kIGlkZW1wb3RlbnQgYW5kIGlzbid0IGNoYW5nZWQgcmVnYXJkbGVzcyBvZiBob3cgb2Z0ZW4gdGhlIHNhbWUgbmF2aWdhdGlvbiBpdGVtXG4gKiBpcyByZWdlbmVyYXRlZC4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyBiZWNhdXNlIGl0IGlzIHVzZWQgZm9yIHJvdXRpbmcgaW4gU3RvcmVmcm9udC4gSWYgYSB1c2VyIG5hdmlnYXRlZCBmcm9tIGEgbGlua1xuICogYW5kIHRoZSBpZCBjaGFuZ2VzIHdoZW4gdGhlIGl0ZW0gaXMgcmUtcmVxdWVzdGVkIGJ5IHN0b3JlZnJvbnQgdGhlbiBpdCB3aWxsIG5vdCBiZSBhYmxlIHRvIHJlbmRlciB0aGUgY29udGVudHMuXG4gKiBAcGFyYW0gdGl0bGUgVGhlIHRpdGxlIG9mIHRoZSBzZWN0aW9uLlxuICogQHBhcmFtIHRhZ3MgVGFncyBhcmUgdXNlZCBhcyBhIHdheSBvZiBmaWx0ZXJpbmcgb3V0IHdoaWNoIGFwcHMgc2hvdWxkIGJlIGFzc2lnbmVkIHRvIGEgU3RvcmVmcm9udE5hdmlnYXRpb25JdGVtLiBUaGlzXG4gKiBhbGxvd3MgYXBwcyB0byBiZSB0YWdnZWQgb24gdGhlIHNlcnZlciBhbmQgdGhlIHN0b3JlIHdvdWxkIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSBhcHBzIGFzc2lnbmVkIHRvIGEgcGFydGljdWxhclxuICogc2VjdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBuYXZpZ2F0aW9uIGl0ZW0uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldE5hdmlnYXRpb25JdGVtKFxuXHRpZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHR0aXRsZTogc3RyaW5nLFxuXHR0YWdzOiBzdHJpbmdbXVxuKTogUHJvbWlzZTxTdG9yZWZyb250TmF2aWdhdGlvbkl0ZW0+IHtcblx0Y29uc3QgbmF2aWdhdGlvbkl0ZW06IFN0b3JlZnJvbnROYXZpZ2F0aW9uSXRlbSA9IHtcblx0XHRpZDogaWQgPz8gZ2V0SWQodGl0bGUsIHRhZ3MpLFxuXHRcdHRpdGxlLFxuXHRcdHRlbXBsYXRlSWQ6IFN0b3JlZnJvbnRUZW1wbGF0ZS5BcHBHcmlkLFxuXHRcdHRlbXBsYXRlRGF0YToge1xuXHRcdFx0YXBwczogW11cblx0XHR9XG5cdH07XG5cblx0Y29uc3QgYXBwcyA9IGF3YWl0IGdldEFwcHNCeVRhZyh0YWdzLCBmYWxzZSwgeyBwcml2YXRlOiBmYWxzZSB9KTtcblxuXHRpZiAoIWlzRW1wdHkoYXBwcykgJiYgYXBwcy5sZW5ndGggPiAwKSB7XG5cdFx0bmF2aWdhdGlvbkl0ZW0udGVtcGxhdGVEYXRhLmFwcHMgPSBhcHBzO1xuXHR9XG5cblx0cmV0dXJuIG5hdmlnYXRpb25JdGVtO1xufVxuXG4vKipcbiAqIENvbnZlcnQgdGhlIHNldHRpbmdzIG5hdmlnYXRpb24gaXRlbXMgdG8gc3RvcmUgaXRlbXMuXG4gKiBAcGFyYW0gaXRlbXMgVGhlIGl0ZW1zIHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0gbGltaXQgVGhlIG1heCBudW1iZXIgb2YgaXRlbXMuXG4gKiBAcmV0dXJucyBUaGUgY29udmVydGVkIGl0ZW1zLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXROYXZpZ2F0aW9uSXRlbXMoXG5cdGl0ZW1zOiBTdG9yZWZyb250U2V0dGluZ3NOYXZpZ2F0aW9uSXRlbVtdLFxuXHRsaW1pdDogbnVtYmVyXG4pOiBQcm9taXNlPFN0b3JlZnJvbnROYXZpZ2F0aW9uSXRlbVtdPiB7XG5cdGNvbnN0IG5hdmlnYXRpb25JdGVtczogU3RvcmVmcm9udE5hdmlnYXRpb25JdGVtW10gPSBbXTtcblxuXHRpZiAoaXRlbXMubGVuZ3RoID4gbGltaXQpIHtcblx0XHRsb2dnZXIud2Fybihcblx0XHRcdGBZb3UgaGF2ZSBkZWZpbmVkIHRvbyBtYW55IG5hdmlnYXRpb24gaXRlbXMgKCR7aXRlbXMubGVuZ3RofSkuIFBsZWFzZSBsaW1pdCBpdCB0byAke2xpbWl0fSBhcyB3ZSB3aWxsIG9ubHkgdGFrZSB0aGUgZmlyc3QgJHtsaW1pdH1gXG5cdFx0KTtcblx0fVxuXG5cdGZvciAoY29uc3QgbmF2SXRlbSBvZiBpdGVtcy5zbGljZSgwLCBsaW1pdCkpIHtcblx0XHRjb25zdCBuYXZpZ2F0aW9uSXRlbSA9IGF3YWl0IGdldE5hdmlnYXRpb25JdGVtKG5hdkl0ZW0uaWQsIG5hdkl0ZW0udGl0bGUsIG5hdkl0ZW0udGFncyk7XG5cdFx0bmF2aWdhdGlvbkl0ZW1zLnB1c2gobmF2aWdhdGlvbkl0ZW0pO1xuXHR9XG5cblx0cmV0dXJuIG5hdmlnYXRpb25JdGVtcztcbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIGxhbmRpbmcgcGFnZSByb3cuXG4gKiBAcGFyYW0gcm93IFRoZSBsYW5kaW5nIHBhZ2Ugcm93IGRlZmluaXRpb24uXG4gKiBAcGFyYW0gbGltaXQgVGhlIGxpbWl0IG9mIGl0ZW1zIGZvciB0aGUgbGFuZGluZyBwYWdlIHJvdy5cbiAqIEByZXR1cm5zIFRoZSBsYW5kaW5nIHBhZ2Ugcm93LlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRMYW5kaW5nUGFnZVJvdyhcblx0cm93OiBTdG9yZWZyb250U2V0dGluZ3NMYW5kaW5nUGFnZVJvdyxcblx0bGltaXQ6IG51bWJlclxuKTogUHJvbWlzZTx7XG5cdHRpdGxlOiBzdHJpbmc7XG5cdGl0ZW1zOiBTdG9yZWZyb250RGV0YWlsZWROYXZpZ2F0aW9uSXRlbVtdO1xufT4ge1xuXHRpZiAocm93Lml0ZW1zLmxlbmd0aCA+IGxpbWl0KSB7XG5cdFx0bG9nZ2VyLndhcm4oXG5cdFx0XHRgWW91IGhhdmUgZGVmaW5lZCB0b28gbWFueSBzdG9yZWZyb250IGRldGFpbGVkIG5hdmlnYXRpb24gaXRlbXMgKCR7cm93Lml0ZW1zLmxlbmd0aH0pLiBQbGVhc2Uga2VlcCBpdCB0byB0aGUgbGltaXQgb2YgJHtsaW1pdH0gYXMgb25seSB0aGUgZmlyc3QgJHtsaW1pdH0gd2lsbCBiZSByZXR1cm5lZC5gXG5cdFx0KTtcblx0fVxuXG5cdGNvbnN0IGl0ZW1zOiBTdG9yZWZyb250RGV0YWlsZWROYXZpZ2F0aW9uSXRlbVtdID0gW107XG5cblx0Zm9yIChjb25zdCBpdGVtIG9mIHJvdy5pdGVtcy5zbGljZSgwLCBsaW1pdCkpIHtcblx0XHRjb25zdCBuYXZpZ2F0aW9uSXRlbSA9IGF3YWl0IGdldE5hdmlnYXRpb25JdGVtKGl0ZW0uaWQsIGl0ZW0udGl0bGUsIGl0ZW0udGFncyk7XG5cdFx0Y29uc3QgbmF2SXRlbTogU3RvcmVmcm9udERldGFpbGVkTmF2aWdhdGlvbkl0ZW0gPSB7XG5cdFx0XHRkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcblx0XHRcdGltYWdlOiBpdGVtLmltYWdlLFxuXHRcdFx0YnV0dG9uVGl0bGU6IGl0ZW0uYnV0dG9uVGl0bGUsXG5cdFx0XHQuLi5uYXZpZ2F0aW9uSXRlbVxuXHRcdH07XG5cdFx0aXRlbXMucHVzaChuYXZJdGVtKTtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0dGl0bGU6IHJvdy50aXRsZSxcblx0XHRpdGVtc1xuXHR9O1xufVxuXG4vKipcbiAqIEFkZCBjdXN0b20gYnV0dG9ucyB0byB0aGUgc3RvcmUgZW50cmllcy5cbiAqIEBwYXJhbSBhcHBzIFRoZSBsaXN0IG9mIGFwcHMgdG8gYWRkIHRoZSBidXR0b25zIHRvLlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgYXVnbWVudGVkIGFwcHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFkZEJ1dHRvbnMoYXBwczogUGxhdGZvcm1BcHBbXSk6IFByb21pc2U8UGxhdGZvcm1BcHBbXT4ge1xuXHRjb25zdCBwcmltYXJ5QnV0dG9uID0gc3RvcmVQcm92aWRlck9wdGlvbnM/LnByaW1hcnlCdXR0b247XG5cdGNvbnN0IHNlY29uZGFyeUJ1dHRvbnMgPSBzdG9yZVByb3ZpZGVyT3B0aW9ucz8uc2Vjb25kYXJ5QnV0dG9ucztcblxuXHRjb25zdCBmYXZJbmZvID0gZmF2b3JpdGVQcm92aWRlci5nZXRJbmZvKCk7XG5cdGNvbnN0IGZhdm9yaXRlQXBwczogeyBbdHlwZUlkOiBzdHJpbmddOiBGYXZvcml0ZUVudHJ5IH0gPSB7fTtcblx0bGV0IHNob3dGYXZvcml0ZXMgPSBmYWxzZTtcblxuXHRpZiAoXG5cdFx0KHN0b3JlUHJvdmlkZXJPcHRpb25zPy5mYXZvcml0ZXNFbmFibGVkID8/IHRydWUpICYmXG5cdFx0ZmF2SW5mby5pc0VuYWJsZWQgJiZcblx0XHQoaXNFbXB0eShmYXZJbmZvLmVuYWJsZWRUeXBlcykgfHwgZmF2SW5mby5lbmFibGVkVHlwZXMuaW5jbHVkZXMoRkFWT1JJVEVfVFlQRV9OQU1FX0FQUCkpXG5cdCkge1xuXHRcdHNob3dGYXZvcml0ZXMgPSB0cnVlO1xuXHRcdGNvbnN0IGZhdm9yaXRlcyA9IGF3YWl0IGZhdm9yaXRlUHJvdmlkZXIuZ2V0U2F2ZWRGYXZvcml0ZXMoRkFWT1JJVEVfVFlQRV9OQU1FX0FQUCk7XG5cdFx0aWYgKGZhdm9yaXRlcykge1xuXHRcdFx0Zm9yIChjb25zdCBmYXYgb2YgZmF2b3JpdGVzKSB7XG5cdFx0XHRcdGZhdm9yaXRlQXBwc1tmYXYudHlwZUlkXSA9IGZhdjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRjb25zdCBpc0FycmF5ID0gIWlzRW1wdHkoc2Vjb25kYXJ5QnV0dG9ucykgJiYgQXJyYXkuaXNBcnJheShzZWNvbmRhcnlCdXR0b25zKTtcblx0aWYgKCFpc0VtcHR5KHByaW1hcnlCdXR0b24pIHx8IGlzQXJyYXkgfHwgc2hvd0Zhdm9yaXRlcykge1xuXHRcdHJldHVybiBhcHBzLm1hcCgoYXBwKSA9PiAoe1xuXHRcdFx0Li4uYXBwLFxuXHRcdFx0Li4uY2FsY3VsYXRlQnV0dG9ucyhhcHAsIHByaW1hcnlCdXR0b24sIHNlY29uZGFyeUJ1dHRvbnMsIHNob3dGYXZvcml0ZXMsIGZhdm9yaXRlQXBwc1thcHAuYXBwSWRdKVxuXHRcdH0pKTtcblx0fVxuXG5cdHJldHVybiBhcHBzO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgYnV0dG9ucyB0byB0aGUgYXBwbGljYXRpb24uXG4gKiBAcGFyYW0gYXBwIFRoZSBhcHAgdG8gYWRkIHRoZSBidXR0b25zIHRvLlxuICogQHBhcmFtIGNvbmZpZ1ByaW1hcnlCdXR0b24gVGhlIHByaW1hcnkgYnV0dG9uIGNvbmZpZy5cbiAqIEBwYXJhbSBjb25maWdTZWNvbmRhcnlCdXR0b25zIFRoZSBzZWNvbmRhcnkgYnV0dG9uIGNvbmZpZy5cbiAqIEBwYXJhbSBzaG93RmF2b3JpdGVzIFNob3cgZmF2b3JpdGVzIGJ1dHRvbnMuXG4gKiBAcGFyYW0gZmF2b3JpdGVFbnRyeSBUaGUgZmF2b3JpdGUgZGV0YWlscy5cbiAqIEByZXR1cm5zIFRoZSB1cGRhdGUgYXBwIHdpdGggYnV0dG9ucy5cbiAqL1xuZnVuY3Rpb24gY2FsY3VsYXRlQnV0dG9ucyhcblx0YXBwOiBQbGF0Zm9ybUFwcCxcblx0Y29uZmlnUHJpbWFyeUJ1dHRvbjogU3RvcmVCdXR0b25Db25maWcgfCB1bmRlZmluZWQsXG5cdGNvbmZpZ1NlY29uZGFyeUJ1dHRvbnM6IFN0b3JlQnV0dG9uQ29uZmlnW10gfCB1bmRlZmluZWQsXG5cdHNob3dGYXZvcml0ZXM6IGJvb2xlYW4sXG5cdGZhdm9yaXRlRW50cnk/OiBGYXZvcml0ZUVudHJ5XG4pOiB7XG5cdHByaW1hcnlCdXR0b246IFN0b3JlQnV0dG9uQ29uZmlnO1xuXHRzZWNvbmRhcnlCdXR0b25zOiBTdG9yZUJ1dHRvbkNvbmZpZ1tdO1xufSB7XG5cdGNvbnN0IGFwcFNlY29uZGFyeUJ1dHRvbnMgPVxuXHRcdGNvbmZpZ1NlY29uZGFyeUJ1dHRvbnM/Lm1hcCgoc2Vjb25kYXJ5KSA9PiAoe1xuXHRcdFx0dGl0bGU6IHNlY29uZGFyeS50aXRsZSxcblx0XHRcdGFjdGlvbjoge1xuXHRcdFx0XHRpZDogc2Vjb25kYXJ5LmFjdGlvbi5pZCxcblx0XHRcdFx0Y3VzdG9tRGF0YTogc2Vjb25kYXJ5LmFjdGlvbi5jdXN0b21EYXRhID8/IGFwcFxuXHRcdFx0fVxuXHRcdH0pKSA/PyBbXTtcblxuXHRpZiAoc2hvd0Zhdm9yaXRlcykge1xuXHRcdGFwcFNlY29uZGFyeUJ1dHRvbnMucHVzaCh7XG5cdFx0XHR0aXRsZTogZmF2b3JpdGVFbnRyeSA/IFwiUmVtb3ZlIEZhdm9yaXRlXCIgOiBcIkFkZCBGYXZvcml0ZVwiLFxuXHRcdFx0YWN0aW9uOiB7XG5cdFx0XHRcdGlkOiBmYXZvcml0ZUVudHJ5ID8gUExBVEZPUk1fQUNUSU9OX0lEUy5mYXZvcml0ZVJlbW92ZSA6IFBMQVRGT1JNX0FDVElPTl9JRFMuZmF2b3JpdGVBZGQsXG5cdFx0XHRcdGN1c3RvbURhdGE6IGZhdm9yaXRlRW50cnkgPz8ge1xuXHRcdFx0XHRcdGlkOiByYW5kb21VVUlEKCksXG5cdFx0XHRcdFx0dHlwZTogRkFWT1JJVEVfVFlQRV9OQU1FX0FQUCxcblx0XHRcdFx0XHR0eXBlSWQ6IGFwcC5hcHBJZCxcblx0XHRcdFx0XHRsYWJlbDogYXBwLnRpdGxlLFxuXHRcdFx0XHRcdGljb246IGdldEFwcEljb24oYXBwKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdHByaW1hcnlCdXR0b246IGFwcC5wcmltYXJ5QnV0dG9uID8/XG5cdFx0XHRjb25maWdQcmltYXJ5QnV0dG9uID8/IHtcblx0XHRcdFx0dGl0bGU6IFwiTGF1bmNoXCIsXG5cdFx0XHRcdGFjdGlvbjoge1xuXHRcdFx0XHRcdGlkOiBQTEFURk9STV9BQ1RJT05fSURTLmxhdW5jaEFwcCxcblx0XHRcdFx0XHRjdXN0b21EYXRhOiBhcHBcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRzZWNvbmRhcnlCdXR0b25zOiBhcHBTZWNvbmRhcnlCdXR0b25zXG5cdH07XG59XG5cbi8qKlxuICogR2V0IHRoZSBpY29uIGZvciBhbiBhcHBsaWNhdGlvbi5cbiAqIEBwYXJhbSBhcHAgVGhlIGFwcGxpY2F0aW9uIHRvIGdldCB0aGUgaWNvbiBmb3IuXG4gKiBAcmV0dXJucyBUaGUgaWNvbi5cbiAqL1xuZnVuY3Rpb24gZ2V0QXBwSWNvbihhcHA6IFBsYXRmb3JtQXBwKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKEFycmF5LmlzQXJyYXkoYXBwLmljb25zKSAmJiBhcHAuaWNvbnMubGVuZ3RoID4gMCkge1xuXHRcdHJldHVybiBhcHAuaWNvbnNbMF0uc3JjO1xuXHR9XG59XG5cbi8qKlxuICogVXBkYXRlIHRoZSBhcHAgYnV0dG9ucyBpZiB0aGUgZmF2b3JpdGVzIGhhdmUgY2hhbmdlZC5cbiAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIG9mIHRoZSBmYXZvcml0ZSBjaGFuZ2UuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUFwcEZhdm9yaXRlQnV0dG9ucyhwYXlsb2FkOiBGYXZvcml0ZUNoYW5nZWRMaWZlY3ljbGVQYXlsb2FkKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IGZhdm9yaXRlOiBGYXZvcml0ZUVudHJ5ID0gcGF5bG9hZC5mYXZvcml0ZTtcblxuXHRpZiAoXG5cdFx0KHN0b3JlUHJvdmlkZXJPcHRpb25zPy5mYXZvcml0ZXNFbmFibGVkID8/IHRydWUpICYmXG5cdFx0IWlzRW1wdHkocmVnaXN0cmF0aW9uSW5mbykgJiZcblx0XHQhaXNFbXB0eShmYXZvcml0ZSkgJiZcblx0XHQocGF5bG9hZC5hY3Rpb24gPT09IFwic2V0XCIgfHwgcGF5bG9hZC5hY3Rpb24gPT09IFwiZGVsZXRlXCIpICYmXG5cdFx0ZmF2b3JpdGUudHlwZSA9PT0gRkFWT1JJVEVfVFlQRV9OQU1FX0FQUFxuXHQpIHtcblx0XHRjb25zdCBhcHAgPSBhd2FpdCBnZXRBcHAoZmF2b3JpdGUudHlwZUlkKTtcblxuXHRcdGlmICghaXNFbXB0eShhcHApKSB7XG5cdFx0XHRhd2FpdCByZWdpc3RyYXRpb25JbmZvLnVwZGF0ZUFwcENhcmRCdXR0b25zKHtcblx0XHRcdFx0YXBwSWQ6IGZhdm9yaXRlLnR5cGVJZCxcblx0XHRcdFx0Li4uY2FsY3VsYXRlQnV0dG9ucyhcblx0XHRcdFx0XHRhcHAsXG5cdFx0XHRcdFx0c3RvcmVQcm92aWRlck9wdGlvbnM/LnByaW1hcnlCdXR0b24sXG5cdFx0XHRcdFx0c3RvcmVQcm92aWRlck9wdGlvbnM/LnNlY29uZGFyeUJ1dHRvbnMsXG5cdFx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0XHRwYXlsb2FkLmFjdGlvbiA9PT0gXCJzZXRcIiA/IGZhdm9yaXRlIDogdW5kZWZpbmVkXG5cdFx0XHRcdClcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsb2dnZXIud2FybihgRmF2b3JpdGUgdXBkYXRlIGZvciBhcHBJZCAke2Zhdm9yaXRlLnR5cGVJZH0gd2hpY2ggZG9lcyBub3QgZXhpc3RgKTtcblx0XHR9XG5cdH1cbn1cbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgeyBpbml0IGFzIGJvb3RzdHJhcCB9IGZyb20gXCIuL2ZyYW1ld29yay9ib290c3RyYXBwZXJcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCIuL2ZyYW1ld29yay9sb2dnZXItcHJvdmlkZXJcIjtcbmltcG9ydCB7IGluaXQgYXMgaW5pdGlhbGl6ZVBsYXRmb3JtIH0gZnJvbSBcIi4vZnJhbWV3b3JrL3BsYXRmb3JtL3BsYXRmb3JtXCI7XG5pbXBvcnQgKiBhcyBwbGF0Zm9ybVNwbGFzaFByb3ZpZGVyIGZyb20gXCIuL2ZyYW1ld29yay9wbGF0Zm9ybS9wbGF0Zm9ybS1zcGxhc2hcIjtcblxuLyoqXG4gKiBJbml0aWFsaXplIHRoZSBwcm92aWRlci5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHByb3ZpZGVyIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci5vcGVuKCk7XG5cblx0dHJ5IHtcblx0XHRyZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8Ym9vbGVhbj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0Y29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKFwiUHJvdmlkZXJcIik7XG5cdFx0XHQvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHBsYXRmb3JtIHByb3h5IGFuZCBhZGQgYW4gZXZlbnQgbGlzdGVuZXJcblx0XHRcdC8vIHRvIGJvb3RzdHJhcCB0aGUgYXBwbGljYXRpb24gb25jZSB0aGUgcGxhdGZvcm0gaXMgcmVhZHkuXG5cdFx0XHRjb25zdCBwbGF0Zm9ybSA9IGZpbi5QbGF0Zm9ybS5nZXRDdXJyZW50U3luYygpO1xuXG5cdFx0XHRwbGF0Zm9ybVxuXHRcdFx0XHQub25jZShcInBsYXRmb3JtLWFwaS1yZWFkeVwiLCAoKSA9PiB7XG5cdFx0XHRcdFx0bG9nZ2VyLmluZm8oXCJQbGF0Zm9ybSBBUEkgUmVhZHkgZXZlbnQgcmVjZWl2ZWQuXCIpO1xuXHRcdFx0XHRcdGJvb3RzdHJhcCgpXG5cdFx0XHRcdFx0XHQudGhlbigoc3VjY2VzcykgPT4ge1xuXHRcdFx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcIkJvb3RzdHJhcCByZXR1cm4gc3VjY2VzczpcIiwgc3VjY2Vzcyk7XG5cdFx0XHRcdFx0XHRcdGxvZ2dlci5pbmZvKFwiTGlzdGVuZXIgZm9yIFBsYXRmb3JtIEFQSSBSZWFkeSBldmVudCBzZXR1cC5cIik7XG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoc3VjY2Vzcyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzdWNjZXNzO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC5jYXRjaCgoZmFpbHVyZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRsb2dnZXIuZXJyb3IoXCJGYWlsZWQgYm9vdHN0cmFwIGV4ZWN1dGlvbiBmb3IgdGhlIGZvbGxvd2luZyByZWFzb246XCIsIGZhaWx1cmUpO1xuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKGZhbHNlKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goYXN5bmMgKHJlYXNvbikgPT4ge1xuXHRcdFx0XHRcdGxvZ2dlci5lcnJvcihcIkxpc3RlbmVyIGZvciBQbGF0Zm9ybSBBUEkgUmVhZHkgZXZlbnQgaGFkIGEgcHJvYmxlbSBiZWluZyBzZXR1cDpcIiwgcmVhc29uKTtcblx0XHRcdFx0XHRyZXNvbHZlKGZhbHNlKTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdC8vIGluaXRpYWxpemUgdGhlIHBsYXRmb3JtIHRvIHByZXBhcmUgdGhlIGFwcGxpY2F0aW9uIGFuZCB0cmlnZ2VyIHRoZSBib290c3RyYXBwaW5nXG5cdFx0XHQvLyBwcm9jZXNzIG9uY2UgdGhlIHBsYXRmb3JtIGlzIHJlYWR5LlxuXHRcdFx0aW5pdGlhbGl6ZVBsYXRmb3JtKClcblx0XHRcdFx0LnRoZW4oKHN1Y2Nlc3MpID0+IHtcblx0XHRcdFx0XHRsb2dnZXIuaW5mbyhcIlBsYXRmb3JtIEluaXRpYWxpemVkIHdpdGggc3VjY2VzczpcIiwgc3VjY2Vzcyk7XG5cdFx0XHRcdFx0aWYgKCFzdWNjZXNzKSB7XG5cdFx0XHRcdFx0XHRyZXNvbHZlKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gc3VjY2Vzcztcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKChmYWlsdXJlKSA9PiB7XG5cdFx0XHRcdFx0bG9nZ2VyLmVycm9yKFwiRXJyb3IgZW5jb3VudGVyZWQgd2hlbiB0cnlpbmcgdG8gaW5pdGlhdGUgcGxhdGZvcm06XCIsIGZhaWx1cmUpO1xuXHRcdFx0XHRcdHJlamVjdChmYWlsdXJlKTtcblx0XHRcdFx0fSk7XG5cdFx0fSk7XG5cdH0gZmluYWxseSB7XG5cdFx0YXdhaXQgcGxhdGZvcm1TcGxhc2hQcm92aWRlci5jbG9zZSgpO1xuXHR9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file